diff --git a/CtsCoverage.mk b/CtsCoverage.mk
index 8d67a99..21d46d1 100644
--- a/CtsCoverage.mk
+++ b/CtsCoverage.mk
@@ -28,26 +28,41 @@
 api_xml_description := $(coverage_out)/api.xml
 $(api_xml_description) : $(api_text_description) $(APICHECK)
 	$(hide) echo "Converting API file to XML: $@"
-	$(hide) mkdir -p $(coverage_out)
-	$(hide) $(APICHECK_COMMAND) -convert2xml $(api_text_description) $(api_xml_description)
+	$(hide) mkdir -p $(dir $@)
+	$(hide) $(APICHECK_COMMAND) -convert2xml $< $@
 
 cts-test-coverage-report := $(coverage_out)/test-coverage.html
 cts-verifier-coverage-report := $(coverage_out)/verifier-coverage.html
 cts-combined-coverage-report := $(coverage_out)/combined-coverage.html
 
-cts_api_coverage_dependencies := $(cts_api_coverage_exe) $(dexdeps_exe) $(api_xml_description) $(ACP)
+cts_api_coverage_dependencies := $(cts_api_coverage_exe) $(dexdeps_exe) $(api_xml_description)
 
-$(cts-test-coverage-report) : $(CTS_COVERAGE_TEST_CASE_LIST) $(cts_api_coverage_dependencies)
+cts_coverage_test_cases_dependencies := $(foreach c, $(CTS_COVERAGE_TEST_CASE_LIST), $(call intermediates-dir-for,APPS,$(c))/package.apk)
+$(cts-test-coverage-report): PRIVATE_TEST_CASES_APKS := $(cts_coverage_test_cases_dependencies)
+$(cts-test-coverage-report): PRIVATE_CTS_API_COVERAGE_EXE := $(cts_api_coverage_exe)
+$(cts-test-coverage-report): PRIVATE_DEXDEPS_EXE := $(dexdeps_exe)
+$(cts-test-coverage-report): PRIVATE_API_XML_DESC := $(api_xml_description)
+$(cts-test-coverage-report) : $(cts_coverage_test_cases_dependencies) $(cts_api_coverage_dependencies) | $(ACP)
 	$(call generate-coverage-report,"CTS Tests API Coverage Report",\
-			$(CTS_COVERAGE_TEST_CASE_LIST),cts-test-apks,html,test-coverage.html)
+			$(PRIVATE_TEST_CASES_APKS),html)
 
-$(cts-verifier-coverage-report) : CtsVerifier $(cts_api_coverage_dependencies)
+cts_coverage_test_cases_dependencies := $(call intermediates-dir-for,APPS,CtsVerifier)/package.apk
+$(cts-verifier-coverage-report): PRIVATE_TEST_CASES_APKS := $(cts_coverage_test_cases_dependencies)
+$(cts-verifier-coverage-report): PRIVATE_CTS_API_COVERAGE_EXE := $(cts_api_coverage_exe)
+$(cts-verifier-coverage-report): PRIVATE_DEXDEPS_EXE := $(dexdeps_exe)
+$(cts-verifier-coverage-report): PRIVATE_API_XML_DESC := $(api_xml_description)
+$(cts-verifier-coverage-report) : $(cts_coverage_test_cases_dependencies) $(cts_api_coverage_dependencies) | $(ACP)
 	$(call generate-coverage-report,"CTS Verifier API Coverage Report",\
-			CtsVerifier,cts-verifier-apks,html,verifier-coverage.html)
+			$(PRIVATE_TEST_CASES_APKS),html)
 
-$(cts-combined-coverage-report) : CtsVerifier $(cts_api_coverage_dependencies) $(CTS_COVERAGE_TEST_CASE_LIST) $(cts_api_coverage_dependencies)
+cts_coverage_test_cases_dependencies := $(foreach c, $(CTS_COVERAGE_TEST_CASE_LIST) CtsVerifier, $(call intermediates-dir-for,APPS,$(c))/package.apk)
+$(cts-combined-coverage-report): PRIVATE_TEST_CASES_APKS := $(cts_coverage_test_cases_dependencies)
+$(cts-combined-coverage-report): PRIVATE_CTS_API_COVERAGE_EXE := $(cts_api_coverage_exe)
+$(cts-combined-coverage-report): PRIVATE_DEXDEPS_EXE := $(dexdeps_exe)
+$(cts-combined-coverage-report): PRIVATE_API_XML_DESC := $(api_xml_description)
+$(cts-combined-coverage-report) : $(cts_coverage_test_cases_dependencies) $(cts_api_coverage_dependencies) | $(ACP)
 	$(call generate-coverage-report,"CTS Combined API Coverage Report",\
-			$(CTS_COVERAGE_TEST_CASE_LIST) CtsVerifier,cts-combined-apks,html,combined-coverage.html)
+			$(PRIVATE_TEST_CASES_APKS),html)
 
 .PHONY: cts-test-coverage
 cts-test-coverage : $(cts-test-coverage-report)
@@ -67,19 +82,22 @@
 
 # Arguments;
 #  1 - Name of the report printed out on the screen
-#  2 - Name of APK packages that will be scanned to generate the report
-#  3 - Name of variable to hold the calculated paths of the APKs
-#  4 - Format of the report
-#  5 - Output file name of the report
+#  2 - List of apk files that will be scanned to generate the report
+#  3 - Format of the report
 define generate-coverage-report
-	$(foreach testcase,$(2),$(eval $(call add-testcase-apk,$(3),$(testcase))))
-	$(hide) mkdir -p $(coverage_out)
-	$(hide) $(cts_api_coverage_exe) -d $(dexdeps_exe) -a $(api_xml_description) -f $(4) -o $(coverage_out)/$(5) $($(3))
-	$(hide) echo $(1): file://$(ANDROID_BUILD_TOP)/$(coverage_out)/$(5)
+	$(hide) mkdir -p $(dir $@)
+	$(hide) $(PRIVATE_CTS_API_COVERAGE_EXE) -d $(PRIVATE_DEXDEPS_EXE) -a $(PRIVATE_API_XML_DESC) -f $(3) -o $@ $(2)
+	@ echo $(1): file://$(ANDROID_BUILD_TOP)/$@
 endef
 
-# classes.dex is stripped from package.apk if dex-preopt is enabled,
-# so we use the copy that definitely includes classes.dex.
-define add-testcase-apk
-	$(1) += $(call intermediates-dir-for,APPS,$(2))/package.apk.unaligned
-endef
+# Reset temp vars
+cts_api_coverage_dependencies :=
+cts_coverage_test_cases_dependencies :=
+cts-combined-coverage-report :=
+cts-verifier-coverage-report :=
+cts-test-coverage-report :=
+api_xml_description :=
+api_text_description :=
+coverage_out :=
+dexdeps_exe :=
+cts_api_coverage_exe :=
diff --git a/CtsTestCaseList.mk b/CtsTestCaseList.mk
index 45150c1..76b91a7 100644
--- a/CtsTestCaseList.mk
+++ b/CtsTestCaseList.mk
@@ -19,6 +19,7 @@
 	CtsInstrumentationAppDiffCert \
 	CtsPermissionDeclareApp \
 	CtsPermissionDeclareAppCompat \
+	CtsReadExternalStorageApp \
 	CtsSharedUidInstall \
 	CtsSharedUidInstallDiffCert \
 	CtsSimpleAppInstall \
@@ -29,17 +30,24 @@
 	CtsMultiUserStorageApp
 
 cts_support_packages := \
-	CtsAccelerationTestStubs \
-	CtsDeviceAdmin \
-	CtsThemeDeviceApp \
-	CtsMonkeyApp \
-	CtsMonkeyApp2 \
-	CtsSomeAccessibilityServices \
-	CtsTestStubs \
-	SignatureTest \
-	TestDeviceSetup \
-	CtsUiAutomatorApp \
-	$(cts_security_apps_list)
+    CtsAccelerationTestStubs \
+    CtsDeviceAdmin \
+    CtsDeviceOpenGl \
+    CtsDeviceTaskswitchingAppA \
+    CtsDeviceTaskswitchingAppB \
+    CtsDeviceTaskswitchingControl \
+    CtsDeviceUi \
+    CtsMonkeyApp \
+    CtsMonkeyApp2 \
+    CtsSampleDeviceApp \
+    CtsSomeAccessibilityServices \
+    CtsTestStubs \
+    CtsThemeDeviceApp \
+    SignatureTest \
+    TestDeviceSetup \
+    CtsUiAutomatorApp \
+    CtsUsbSerialTestApp \
+    $(cts_security_apps_list)
 
 cts_external_packages := \
 	com.replica.replicaisland
@@ -52,92 +60,108 @@
 
 # Test packages that require an associated test package XML.
 cts_test_packages := \
-	CtsAccelerationTestCases \
-	CtsAccountManagerTestCases \
-	CtsAccessibilityServiceTestCases \
-	CtsAccessibilityTestCases \
-	CtsAdminTestCases \
-	CtsAnimationTestCases \
-	CtsAppTestCases \
-	CtsBluetoothTestCases \
-	CtsCalendarcommon2TestCases \
-	CtsContentTestCases \
-	CtsDatabaseTestCases \
-	CtsDisplayTestCases \
-	CtsDpiTestCases \
-	CtsDpiTestCases2 \
-	CtsDreamsTestCases \
-	CtsDrmTestCases \
-	CtsEffectTestCases \
-	CtsExampleTestCases \
-	CtsGestureTestCases \
-	CtsGraphicsTestCases \
-	CtsGraphics2TestCases \
-	CtsHardwareTestCases \
-	CtsJniTestCases \
-	CtsKeystoreTestCases \
-	CtsLocationTestCases \
-	CtsMediaStressTestCases \
-	CtsMediaTestCases \
-	CtsNativeOpenGLTestCases \
-	CtsNdefTestCases \
-	CtsNetTestCases \
-	CtsOpenGLTestCases \
-	CtsOpenGlPerfTestCases \
-	CtsOsTestCases \
-	CtsPermissionTestCases \
-	CtsPermission2TestCases \
-	CtsPreferenceTestCases \
-	CtsPreference2TestCases \
-	CtsProviderTestCases \
-	CtsRenderscriptTestCases \
-	CtsSaxTestCases \
-	CtsSecurityTestCases \
-	CtsSpeechTestCases \
-	CtsTelephonyTestCases \
-	CtsTextTestCases \
-	CtsTextureViewTestCases \
-	CtsThemeTestCases \
-	CtsUtilTestCases \
-	CtsViewTestCases \
-	CtsWebkitTestCases \
-	CtsWidgetTestCases
+    CtsDeviceFilePerf \
+    CtsDeviceUi \
+    CtsDeviceDram \
+    CtsDeviceSimpleCpu \
+    CtsDeviceBrowserBench \
+    CtsDeviceVideoPerf \
+    CtsDeviceOpenGl \
+    CtsAccelerationTestCases \
+    CtsAccountManagerTestCases \
+    CtsAccessibilityServiceTestCases \
+    CtsAccessibilityTestCases \
+    CtsAdminTestCases \
+    CtsAnimationTestCases \
+    CtsAppTestCases \
+    CtsBluetoothTestCases \
+    CtsCalendarcommon2TestCases \
+    CtsContentTestCases \
+    CtsDatabaseTestCases \
+    CtsDisplayTestCases \
+    CtsDpiTestCases \
+    CtsDpiTestCases2 \
+    CtsDreamsTestCases \
+    CtsDrmTestCases \
+    CtsEffectTestCases \
+    CtsGestureTestCases \
+    CtsGraphicsTestCases \
+    CtsGraphics2TestCases \
+    CtsHardwareTestCases \
+    CtsJniTestCases \
+    CtsKeystoreTestCases \
+    CtsLocationTestCases \
+    CtsMediaStressTestCases \
+    CtsMediaTestCases \
+    CtsNativeOpenGLTestCases \
+    CtsNdefTestCases \
+    CtsNetTestCases \
+    CtsOpenGLTestCases \
+    CtsOpenGlPerfTestCases \
+    CtsOsTestCases \
+    CtsPermissionTestCases \
+    CtsPermission2TestCases \
+    CtsPreferenceTestCases \
+    CtsPreference2TestCases \
+    CtsProviderTestCases \
+    CtsRenderscriptTestCases \
+    CtsRenderscriptGraphicsTestCases \
+    CtsRsCppTestCases \
+    CtsSampleDeviceTestCases \
+    CtsSaxTestCases \
+    CtsSecurityTestCases \
+    CtsSpeechTestCases \
+    CtsTelephonyTestCases \
+    CtsTextTestCases \
+    CtsTextureViewTestCases \
+    CtsThemeTestCases \
+    CtsUtilTestCases \
+    CtsViewTestCases \
+    CtsWebkitTestCases \
+    CtsWidgetTestCases
 
 # All APKs that need to be scanned by the coverage utilities.
 CTS_COVERAGE_TEST_CASE_LIST := \
 	$(cts_support_packages) \
 	$(cts_test_packages)
 
-
 # Host side only tests
 cts_host_libraries := \
-	CtsAdbTests \
-	CtsAppSecurityTests \
-	CtsThemeHostTestCases \
-	CtsMonkeyTestCases
-
+    CtsAdbTests \
+    CtsAppSecurityTests \
+    CtsHostJank \
+    CtsHostUi \
+    CtsMonkeyTestCases \
+    CtsSampleHostTestCases \
+    CtsThemeHostTestCases \
+    CtsUsbTests
 
 # Native test executables that need to have associated test XMLs.
 cts_native_exes := \
 	NativeMediaTest_SL \
-	NativeMediaTest_XA
+	NativeMediaTest_XA \
+	bionic-unit-tests-cts \
 
 cts_ui_tests := \
-        CtsUiAutomatorTests
+    CtsUiAutomatorTests
+
+cts_device_jars := \
+    CtsDeviceJank
 
 # All the files that will end up under the repository/testcases
 # directory of the final CTS distribution.
 CTS_TEST_CASES := $(call cts-get-lib-paths,$(cts_host_libraries)) \
-		$(call cts-get-package-paths,$(cts_test_packages)) \
-		$(call cts-get-native-paths,$(cts_native_exes)) \
-		$(call cts-get-ui-lib-paths,$(cts_ui_tests))
+    $(call cts-get-package-paths,$(cts_test_packages)) \
+    $(call cts-get-native-paths,$(cts_native_exes)) \
+    $(call cts-get-ui-lib-paths,$(cts_ui_tests)) \
+    $(call cts-get-ui-lib-paths,$(cts_device_jars))
 
 # All the XMLs that will end up under the repository/testcases
 # and that need to be created before making the final CTS distribution.
 CTS_TEST_XMLS := $(call cts-get-test-xmls,$(cts_host_libraries)) \
-		$(call cts-get-test-xmls,$(cts_test_packages)) \
-		$(call cts-get-test-xmls,$(cts_native_exes)) \
-		$(call cts-get-test-xmls,$(cts_ui_tests))
+    $(call cts-get-test-xmls,$(cts_test_packages)) \
+    $(call cts-get-test-xmls,$(cts_native_exes)) \
+    $(call cts-get-test-xmls,$(cts_ui_tests))
 
 
 # The following files will be placed in the tools directory of the CTS distribution
diff --git a/apps/CtsVerifier/Android.mk b/apps/CtsVerifier/Android.mk
index 3b1674e..397b39a 100644
--- a/apps/CtsVerifier/Android.mk
+++ b/apps/CtsVerifier/Android.mk
@@ -23,6 +23,8 @@
 
 LOCAL_SRC_FILES := $(call all-java-files-under, src)
 
+LOCAL_STATIC_JAVA_LIBRARIES := cts-sensors-tests
+
 LOCAL_PACKAGE_NAME := CtsVerifier
 
 LOCAL_JNI_SHARED_LIBRARIES := libctsverifier_jni \
@@ -32,6 +34,8 @@
 
 LOCAL_SDK_VERSION := current
 
+LOCAL_DEX_PREOPT := false
+
 include $(BUILD_PACKAGE)
 
 # Builds and launches CTS Verifier on a device.
diff --git a/apps/CtsVerifier/AndroidManifest.xml b/apps/CtsVerifier/AndroidManifest.xml
index c3232bf..f0e6c56 100644
--- a/apps/CtsVerifier/AndroidManifest.xml
+++ b/apps/CtsVerifier/AndroidManifest.xml
@@ -17,8 +17,8 @@
 
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
       package="com.android.cts.verifier"
-      android:versionCode="1"
-      android:versionName="4.3_r1">
+      android:versionCode="3"
+      android:versionName="4.4_r3">
 
     <!-- Using 10+ for more complete NFC support... -->
     <uses-sdk android:minSdkVersion="12"></uses-sdk>
@@ -41,6 +41,8 @@
     <uses-permission android:name="android.permission.RECORD_AUDIO" />
     <uses-permission android:name="android.permission.WAKE_LOCK" />
     <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
+    <uses-permission android:name="com.android.alarm.permission.SET_ALARM" />
+
     <uses-feature android:name="android.hardware.usb.accessory" />
 
     <!-- Needed by the Audio Quality Verifier to store the sound samples that will be mailed. -->
@@ -74,7 +76,7 @@
                 android:configChanges="keyboardHidden|orientation|screenSize"
                 android:label="@string/report_viewer" />
 
-        <provider android:name=".TestResultsProvider" 
+        <provider android:name=".TestResultsProvider"
                 android:authorities="com.android.cts.verifier.testresultsprovider" />
 
         <activity android:name=".admin.PolicySerializationTestActivity"
@@ -87,6 +89,9 @@
             <meta-data android:name="test_category" android:value="@string/test_category_device_admin" />
         </activity>
 
+        <!-- A generic activity for intent based tests -->
+        <activity android:name=".IntentDrivenTestActivity"/>
+
         <activity android:name=".admin.ScreenLockTestActivity"
                 android:label="@string/da_screen_lock_test"
                 android:configChanges="keyboardHidden|orientation|screenSize">
@@ -203,6 +208,122 @@
                 android:label="@string/bt_device_picker"
                 android:configChanges="keyboardHidden|orientation|screenSize" />
 
+        <service android:name=".bluetooth.BleClientService"
+                android:label="@string/ble_client_service_name" />
+
+        <service android:name=".bluetooth.BleServerService"
+                android:label="ble_server_service_name" />
+
+        <activity android:name=".bluetooth.BleClientTestActivity"
+                android:label="@string/ble_client_test_name"
+                android:configChanges="keyboardHidden|orientation|screenSize">
+            <intent-filter>
+                <action android:name="android.intent.action.MAIN" />
+                <category android:name="android.cts.intent.category.MANUAL_TEST" />
+            </intent-filter>
+            <meta-data android:name="test_category" android:value="@string/bt_le" />
+            <meta-data android:name="test_parent" android:value="com.android.cts.verifier.bluetooth.BluetoothTestActivity" />
+        </activity>
+
+        <activity android:name=".bluetooth.BleClientConnectActivity"
+                android:label="@string/ble_client_connect_name"
+                android:configChanges="keyboardHidden|orientation|screenSize">
+            <intent-filter>
+                <action android:name="android.intent.action.MAIN" />
+                <category android:name="android.cts.intent.category.MANUAL_TEST" />
+            </intent-filter>
+            <meta-data android:name="test_category" android:value="@string/bt_le" />
+            <meta-data android:name="test_parent" android:value="com.android.cts.verifier.bluetooth.BleClientTestActivity" />
+        </activity>
+
+        <activity android:name=".bluetooth.BleDiscoverServiceActivity"
+                android:label="@string/ble_discover_service_name"
+                android:configChanges="keyboardHidden|orientation|screenSize">
+            <intent-filter>
+                <action android:name="android.intent.action.MAIN" />
+                <category android:name="android.cts.intent.category.MANUAL_TEST" />
+            </intent-filter>
+            <meta-data android:name="test_category" android:value="@string/bt_le" />
+            <meta-data android:name="test_parent" android:value="com.android.cts.verifier.bluetooth.BleClientTestActivity" />
+        </activity>
+
+        <activity android:name=".bluetooth.BleClientCharacteristicActivity"
+                android:label="@string/ble_client_characteristic_name"
+                android:configChanges="keyboardHidden|orientation|screenSize">
+            <intent-filter>
+                <action android:name="android.intent.action.MAIN" />
+                <category android:name="android.cts.intent.category.MANUAL_TEST" />
+            </intent-filter>
+            <meta-data android:name="test_category" android:value="@string/bt_le" />
+            <meta-data android:name="test_parent" android:value="com.android.cts.verifier.bluetooth.BleClientTestActivity" />
+        </activity>
+
+        <activity android:name=".bluetooth.BleNotifyCharacteristicActivity"
+                android:label="@string/ble_notify_characteristic_name"
+                android:configChanges="keyboardHidden|orientation|screenSize">
+            <intent-filter>
+                <action android:name="android.intent.action.MAIN" />
+                <category android:name="android.cts.intent.category.MANUAL_TEST" />
+            </intent-filter>
+            <meta-data android:name="test_category" android:value="@string/bt_le" />
+            <meta-data android:name="test_parent" android:value="com.android.cts.verifier.bluetooth.BleClientTestActivity" />
+        </activity>
+
+        <activity android:name=".bluetooth.BleClientDescriptorActivity"
+                android:label="@string/ble_client_descriptor_name"
+                android:configChanges="keyboardHidden|orientation|screenSize">
+            <intent-filter>
+                <action android:name="android.intent.action.MAIN" />
+                <category android:name="android.cts.intent.category.MANUAL_TEST" />
+            </intent-filter>
+            <meta-data android:name="test_category" android:value="@string/bt_le" />
+            <meta-data android:name="test_parent" android:value="com.android.cts.verifier.bluetooth.BleClientTestActivity" />
+        </activity>
+
+        <activity android:name=".bluetooth.BleReliableWriteActivity"
+                android:label="@string/ble_reliable_write_name"
+                android:configChanges="keyboardHidden|orientation|screenSize">
+            <intent-filter>
+                <action android:name="android.intent.action.MAIN" />
+                <category android:name="android.cts.intent.category.MANUAL_TEST" />
+            </intent-filter>
+            <meta-data android:name="test_category" android:value="@string/bt_le" />
+            <meta-data android:name="test_parent" android:value="com.android.cts.verifier.bluetooth.BleClientTestActivity" />
+        </activity>
+
+        <activity android:name=".bluetooth.BleReadRssiActivity"
+                android:label="@string/ble_read_rssi_name"
+                android:configChanges="keyboardHidden|orientation|screenSize">
+            <intent-filter>
+                <action android:name="android.intent.action.MAIN" />
+                <category android:name="android.cts.intent.category.MANUAL_TEST" />
+            </intent-filter>
+            <meta-data android:name="test_category" android:value="@string/bt_le" />
+            <meta-data android:name="test_parent" android:value="com.android.cts.verifier.bluetooth.BleClientTestActivity" />
+        </activity>
+
+        <activity android:name=".bluetooth.BleClientDisconnectActivity"
+                android:label="@string/ble_client_disconnect_name"
+                android:configChanges="keyboardHidden|orientation|screenSize">
+            <intent-filter>
+                <action android:name="android.intent.action.MAIN" />
+                <category android:name="android.cts.intent.category.MANUAL_TEST" />
+            </intent-filter>
+            <meta-data android:name="test_category" android:value="@string/bt_le" />
+            <meta-data android:name="test_parent" android:value="com.android.cts.verifier.bluetooth.BleClientTestActivity" />
+        </activity>
+
+        <activity android:name=".bluetooth.BleServerStartActivity"
+                android:label="@string/ble_server_start_name"
+                android:configChanges="keyboardHidden|orientation|screenSize">
+            <intent-filter>
+                <action android:name="android.intent.action.MAIN" />
+                <category android:name="android.cts.intent.category.MANUAL_TEST" />
+            </intent-filter>
+            <meta-data android:name="test_category" android:value="@string/bt_le" />
+            <meta-data android:name="test_parent" android:value="com.android.cts.verifier.bluetooth.BluetoothTestActivity" />
+        </activity>
+
         <activity android:name=".suid.SuidFilesActivity"
                 android:label="@string/suid_files"
                 android:configChanges="keyboardHidden|orientation|screenSize">
@@ -268,6 +389,16 @@
             <meta-data android:name="test_required_features" android:value="android.hardware.nfc" />
         </activity>
 
+        <activity android:name="com.android.cts.verifier.nfc.hce.HceReaderTestActivity"
+                android:label="@string/nfc_hce_reader_tests"
+                android:configChanges="keyboardHidden|orientation|screenSize">
+        </activity>
+
+        <activity android:name="com.android.cts.verifier.nfc.hce.HceEmulatorTestActivity"
+                android:label="@string/nfc_hce_emulator_tests"
+                android:configChanges="keyboardHidden|orientation|screenSize">
+        </activity>
+
         <activity android:name=".nfc.NdefPushSenderActivity"
                 android:label="@string/nfc_ndef_push_sender"
                 android:configChanges="keyboardHidden|orientation|screenSize" />
@@ -280,6 +411,128 @@
                 android:label="@string/nfc_tag_verifier"
                 android:configChanges="keyboardHidden|orientation|screenSize" />
 
+        <activity android:name=".nfc.hce.DefaultRouteEmulatorActivity"
+                android:label="@string/nfc_hce_default_route_emulator"
+                android:configChanges="keyboardHidden|orientation|screenSize" />
+
+        <activity android:name=".nfc.hce.ProtocolParamsEmulatorActivity"
+                android:label="@string/nfc_hce_protocol_params_emulator"
+                android:configChanges="keyboardHidden|orientation|screenSize" />
+
+        <activity android:name=".nfc.hce.SinglePaymentEmulatorActivity"
+                android:label="@string/nfc_hce_single_payment_emulator"
+                android:configChanges="keyboardHidden|orientation|screenSize" />
+
+        <activity android:name=".nfc.hce.SimpleReaderActivity"
+                android:label="@string/nfc_hce_single_payment_reader"
+                android:configChanges="keyboardHidden|orientation|screenSize" />
+
+        <activity android:name=".nfc.hce.ProtocolParamsReaderActivity"
+                android:label="@string/nfc_hce_protocol_params_reader"
+                android:configChanges="keyboardHidden|orientation|screenSize" />
+
+        <activity android:name=".nfc.hce.DualPaymentEmulatorActivity"
+                android:label="@string/nfc_hce_dual_payment_emulator"
+                android:configChanges="keyboardHidden|orientation|screenSize" />
+
+        <activity android:name=".nfc.hce.ChangeDefaultEmulatorActivity"
+                android:label="@string/nfc_hce_change_default_emulator"
+                android:configChanges="keyboardHidden|orientation|screenSize" />
+
+        <activity android:name=".nfc.hce.SingleNonPaymentEmulatorActivity"
+                android:label="@string/nfc_hce_single_non_payment_emulator"
+                android:configChanges="keyboardHidden|orientation|screenSize" />
+
+        <activity android:name=".nfc.hce.DualNonPaymentEmulatorActivity"
+                android:label="@string/nfc_hce_dual_non_payment_emulator"
+                android:configChanges="keyboardHidden|orientation|screenSize" />
+
+        <activity android:name=".nfc.hce.ConflictingNonPaymentEmulatorActivity"
+                android:label="@string/nfc_hce_conflicting_non_payment_emulator"
+                android:configChanges="keyboardHidden|orientation|screenSize" />
+
+        <activity android:name=".nfc.hce.OffHostEmulatorActivity"
+                android:label="@string/nfc_hce_offhost_service_emulator"
+                android:configChanges="keyboardHidden|orientation|screenSize" />
+
+        <activity android:name=".nfc.hce.OnAndOffHostEmulatorActivity"
+                android:label="@string/nfc_hce_on_and_offhost_service_emulator"
+                android:configChanges="keyboardHidden|orientation|screenSize" />
+
+        <activity android:name=".nfc.hce.ThroughputEmulatorActivity"
+                android:label="@string/nfc_hce_throughput_emulator"
+                android:configChanges="keyboardHidden|orientation|screenSize" />
+
+        <activity android:name=".nfc.hce.TapTestEmulatorActivity"
+                android:label="@string/nfc_hce_tap_test_emulator"
+                android:configChanges="keyboardHidden|orientation|screenSize" />
+
+        <!-- services used for testing NFC host-based card emulation -->
+        <service android:name=".nfc.hce.PaymentService1" android:exported="true"
+                 android:permission="android.permission.BIND_NFC_SERVICE"
+                 android:enabled="false">
+            <intent-filter>
+                <action android:name="android.nfc.cardemulation.action.HOST_APDU_SERVICE"/>
+                <category android:name="android.intent.category.DEFAULT"/>
+            </intent-filter>
+            <meta-data android:name="android.nfc.cardemulation.host_apdu_service" android:resource="@xml/payment_aid_list_1"/>
+        </service>
+        <service android:name=".nfc.hce.PaymentService2" android:exported="true"
+                 android:permission="android.permission.BIND_NFC_SERVICE"
+                 android:enabled="false">
+            <intent-filter>
+                <action android:name="android.nfc.cardemulation.action.HOST_APDU_SERVICE"/>
+                <category android:name="android.intent.category.DEFAULT"/>
+            </intent-filter>
+            <meta-data android:name="android.nfc.cardemulation.host_apdu_service" android:resource="@xml/payment_aid_list_2"/>
+        </service>
+        <service android:name=".nfc.hce.TransportService1" android:exported="true"
+                 android:permission="android.permission.BIND_NFC_SERVICE"
+                 android:enabled="false">
+            <intent-filter>
+                <action android:name="android.nfc.cardemulation.action.HOST_APDU_SERVICE"/>
+                <category android:name="android.intent.category.DEFAULT"/>
+            </intent-filter>
+            <meta-data android:name="android.nfc.cardemulation.host_apdu_service" android:resource="@xml/transport_aid_list_1"/>
+        </service>
+        <service android:name=".nfc.hce.TransportService2" android:exported="true"
+                 android:permission="android.permission.BIND_NFC_SERVICE"
+                 android:enabled="false">
+            <intent-filter>
+                <action android:name="android.nfc.cardemulation.action.HOST_APDU_SERVICE"/>
+                <category android:name="android.intent.category.DEFAULT"/>
+            </intent-filter>
+            <meta-data android:name="android.nfc.cardemulation.host_apdu_service" android:resource="@xml/transport_aid_list_2"/>
+        </service>
+        <service android:name=".nfc.hce.AccessService" android:exported="true"
+                 android:permission="android.permission.BIND_NFC_SERVICE"
+                 android:enabled="false">
+            <intent-filter>
+                <action android:name="android.nfc.cardemulation.action.HOST_APDU_SERVICE"/>
+                <category android:name="android.intent.category.DEFAULT"/>
+            </intent-filter>
+            <meta-data android:name="android.nfc.cardemulation.host_apdu_service" android:resource="@xml/access_aid_list"/>
+        </service>
+        <service android:name=".nfc.hce.ThroughputService" android:exported="true"
+                 android:permission="android.permission.BIND_NFC_SERVICE"
+                 android:enabled="false">
+            <intent-filter>
+                <action android:name="android.nfc.cardemulation.action.HOST_APDU_SERVICE"/>
+                <category android:name="android.intent.category.DEFAULT"/>
+            </intent-filter>
+            <meta-data android:name="android.nfc.cardemulation.host_apdu_service" android:resource="@xml/throughput_aid_list"/>
+        </service>
+
+        <service android:name=".nfc.hce.OffHostService" android:exported="true"
+                 android:permission="android.permission.BIND_NFC_SERVICE"
+                 android:enabled="false">
+            <intent-filter>
+                <action android:name="android.nfc.cardemulation.action.OFF_HOST_APDU_SERVICE"/>
+                <category android:name="android.intent.category.DEFAULT"/>
+            </intent-filter>
+            <meta-data android:name="android.nfc.cardemulation.off_host_apdu_service" android:resource="@xml/offhost_aid_list"/>
+        </service>
+
         <activity android:name=".sensors.AccelerometerTestActivity" android:label="@string/snsr_accel_test"
                 android:screenOrientation="nosensor">
             <intent-filter>
@@ -290,6 +543,18 @@
             <meta-data android:name="test_required_features" android:value="android.hardware.sensor.accelerometer" />
         </activity>
 
+        <activity android:name=".sensors.AccelerometerMeasurementTestActivity"
+                  android:label="@string/snsr_accel_m_test"
+                  android:screenOrientation="nosensor">
+            <intent-filter>
+                <action android:name="android.intent.action.MAIN"/>
+                <category android:name="android.cts.intent.category.MANUAL_TEST"/>
+            </intent-filter>
+            <meta-data android:name="test_category" android:value="@string/test_category_sensors"/>
+            <meta-data android:name="test_required_features"
+                       android:value="android.hardware.sensor.accelerometer"/>
+        </activity>
+
         <activity android:name=".sensors.GyroscopeTestActivity" android:label="@string/snsr_gyro_test"
                 android:screenOrientation="nosensor">
             <intent-filter>
@@ -300,6 +565,64 @@
             <meta-data android:name="test_required_features" android:value="android.hardware.sensor.gyroscope" />
         </activity>
 
+        <activity android:name=".sensors.GyroscopeMeasurementTestActivity"
+                  android:label="@string/snsr_gyro_m_test"
+                  android:screenOrientation="nosensor">
+            <intent-filter>
+                <action android:name="android.intent.action.MAIN"/>
+                <category android:name="android.cts.intent.category.MANUAL_TEST"/>
+            </intent-filter>
+            <meta-data android:name="test_category" android:value="@string/test_category_sensors"/>
+            <meta-data android:name="test_required_features"
+                       android:value="android.hardware.sensor.gyroscope"/>
+        </activity>
+
+        <!-- Disable the test until calibration routine is verified -->
+        <!--activity android:name=".sensors.MagneticFieldMeasurementTestActivity"
+                  android:label="@string/snsr_mag_m_test"
+                  android:screenOrientation="nosensor">
+            <intent-filter>
+                <action android:name="android.intent.action.MAIN" />
+                <category android:name="android.cts.intent.category.MANUAL_TEST" />
+            </intent-filter>
+            <meta-data android:name="test_category" android:value="@string/test_category_sensors" />
+            <meta-data android:name="test_required_features"
+                       android:value="android.hardware.sensor.compass" />
+        </activity-->
+
+        <activity android:name=".location.LocationModeOffTestActivity"
+                android:label="@string/location_mode_off_test">
+            <intent-filter>
+                <action android:name="android.intent.action.MAIN" />
+                <category android:name="android.cts.intent.category.MANUAL_TEST" />
+            </intent-filter>
+            <meta-data android:name="test_category" android:value="@string/test_category_location" />
+        </activity>
+        <activity android:name=".location.LocationModeHighAccuracyTestActivity"
+                android:label="@string/location_mode_high_accuracy_test">
+            <intent-filter>
+                <action android:name="android.intent.action.MAIN" />
+                <category android:name="android.cts.intent.category.MANUAL_TEST" />
+            </intent-filter>
+            <meta-data android:name="test_category" android:value="@string/test_category_location" />
+        </activity>
+        <activity android:name=".location.LocationModeBatterySavingTestActivity"
+                android:label="@string/location_mode_battery_saving_test">
+            <intent-filter>
+                <action android:name="android.intent.action.MAIN" />
+                <category android:name="android.cts.intent.category.MANUAL_TEST" />
+            </intent-filter>
+            <meta-data android:name="test_category" android:value="@string/test_category_location" />
+        </activity>
+        <activity android:name=".location.LocationModeDeviceOnlyTestActivity"
+                android:label="@string/location_mode_device_only_test">
+            <intent-filter>
+                <action android:name="android.intent.action.MAIN" />
+                <category android:name="android.cts.intent.category.MANUAL_TEST" />
+            </intent-filter>
+            <meta-data android:name="test_category" android:value="@string/test_category_location" />
+        </activity>
+
         <activity android:name=".camera.formats.CameraFormatsActivity"
                  android:label="@string/camera_format"
                  android:screenOrientation="landscape">
@@ -340,6 +663,7 @@
             <meta-data android:name="test_required_features" android:value="android.hardware.camera.any"/>
         </activity>
 
+
         <activity android:name=".camera.orientation.CameraOrientationActivity"
                  android:label="@string/camera_orientation"
                  android:screenOrientation="landscape">
@@ -376,6 +700,19 @@
             android:label="@string/camera_fov_label_options" >
         </activity>
 
+
+        <activity android:name=".camera.video.CameraVideoActivity"
+                 android:label="@string/camera_video"
+                 android:screenOrientation="landscape">
+            <intent-filter>
+                <action android:name="android.intent.action.MAIN" />
+                <category android:name="android.cts.intent.category.MANUAL_TEST" />
+            </intent-filter>
+            <meta-data android:name="test_category" android:value="@string/test_category_camera" />
+            <meta-data android:name="test_required_features"
+                    android:value="android.hardware.camera.any"/>
+        </activity>
+
         <activity android:name=".usb.UsbAccessoryTestActivity"
                 android:label="@string/usb_accessory_test"
                 android:configChanges="keyboardHidden|orientation|screenSize">
@@ -397,7 +734,7 @@
             <meta-data android:name="test_category" android:value="@string/test_category_networking" />
             <meta-data android:name="test_required_features" android:value="android.hardware.wifi.direct" />
         </activity>
-        
+
         <activity android:name=".nls.NotificationListenerVerifierActivity"
                 android:label="@string/nls_test">
             <intent-filter>
@@ -415,9 +752,25 @@
                 <action android:name="android.service.notification.NotificationListenerService" />
             </intent-filter>
         </service>
-        
-        <service  android:name="nls.NotificationListenerVerifierActivity$DismissService"/>
-        
+
+        <service  android:name=".nls.NotificationListenerVerifierActivity$DismissService"/>
+        <activity android:name=".security.CAInstallNotificationVerifierActivity"
+                android:label="@string/cacert_test">
+            <intent-filter>
+                <action android:name="android.intent.action.MAIN" />
+                <category android:name="android.cts.intent.category.MANUAL_TEST" />
+            </intent-filter>
+            <meta-data android:name="test_category" android:value="@string/test_category_notifications" />
+        </activity>
+        <activity android:name=".security.CANotifyOnBootActivity"
+                android:label="@string/caboot_test">
+            <intent-filter>
+                <action android:name="android.intent.action.MAIN" />
+                <category android:name="android.cts.intent.category.MANUAL_TEST" />
+            </intent-filter>
+            <meta-data android:name="test_category" android:value="@string/test_category_notifications" />
+        </activity>
+
         <activity android:name=".p2p.GoNegRequesterTestListActivity"
                 android:label="@string/p2p_go_neg_requester"
                 android:configChanges="keyboardHidden|orientation|screenSize" />
@@ -462,6 +815,15 @@
             </intent-filter>
         </activity-alias>
 
+        <activity android:name=".sample.SampleTestActivity"
+                  android:label="@string/sample_framework_test">
+            <intent-filter>
+                <action android:name="android.intent.action.MAIN" />
+                <category android:name="android.cts.intent.category.MANUAL_TEST" />
+            </intent-filter>
+            <meta-data android:name="test_category" android:value="@string/test_category_other" />
+        </activity>
+
         <activity android:name=".widget.WidgetTestActivity"
                 android:label="@string/widget_framework_test">
             <intent-filter>
@@ -471,6 +833,15 @@
             <meta-data android:name="test_category" android:value="@string/test_category_other" />
         </activity>
 
+        <activity android:name=".deskclock.DeskClockTestsActivity"
+                  android:label="@string/deskclock_tests">
+            <intent-filter>
+                <action android:name="android.intent.action.MAIN" />
+                <category android:name="android.cts.intent.category.MANUAL_TEST" />
+            </intent-filter>
+            <meta-data android:name="test_category" android:value="@string/test_category_deskclock" />
+        </activity>
+
         <receiver android:name=".widget.WidgetCtsProvider">
             <intent-filter>
                 <action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
diff --git a/apps/CtsVerifier/assets/myCA.cer b/apps/CtsVerifier/assets/myCA.cer
new file mode 100644
index 0000000..3b98d3e
--- /dev/null
+++ b/apps/CtsVerifier/assets/myCA.cer
Binary files differ
diff --git a/apps/CtsVerifier/proguard.flags b/apps/CtsVerifier/proguard.flags
index ddaf962..7e6587a 100644
--- a/apps/CtsVerifier/proguard.flags
+++ b/apps/CtsVerifier/proguard.flags
@@ -6,3 +6,7 @@
     private <fields>;
 }
 
+-keepclasseswithmembers class * extends com.android.cts.verifier.location.LocationModeTestActivity
+
+-dontwarn android.hardware.Sensor
+-dontwarn java.util.concurrent.ConcurrentLinkedDeque
diff --git a/apps/CtsVerifier/res/layout/ble_button.xml b/apps/CtsVerifier/res/layout/ble_button.xml
new file mode 100644
index 0000000..6428fe2
--- /dev/null
+++ b/apps/CtsVerifier/res/layout/ble_button.xml
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2013 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.
+-->
+<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:orientation="vertical"
+        android:padding="10dip"
+        >
+    <Button android:id="@+id/ble_button"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_centerInParent="true"
+            />
+
+    <include android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:layout_alignParentBottom="true"
+            layout="@layout/pass_fail_buttons"
+            />
+</RelativeLayout>
\ No newline at end of file
diff --git a/apps/CtsVerifier/res/layout/ble_client_connect.xml b/apps/CtsVerifier/res/layout/ble_client_connect.xml
new file mode 100644
index 0000000..54a0a99
--- /dev/null
+++ b/apps/CtsVerifier/res/layout/ble_client_connect.xml
@@ -0,0 +1,46 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2013 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.
+-->
+<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:orientation="vertical"
+        android:padding="10dip"
+        >
+
+    <LinearLayout android:orientation="horizontal"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:layout_centerInParent="true"
+            >
+        <EditText android:id="@+id/ble_address"
+                android:layout_weight="1"
+                android:layout_width="0dp"
+                android:layout_height="wrap_content"
+                android:hint="@string/ble_address"
+                />
+        <Button android:id="@+id/ble_connect"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:text="@string/ble_connect"
+                />
+    </LinearLayout>
+
+    <include android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:layout_alignParentBottom="true"
+            layout="@layout/pass_fail_buttons"
+            />
+</RelativeLayout>
\ No newline at end of file
diff --git a/apps/CtsVerifier/res/layout/ble_client_read_write.xml b/apps/CtsVerifier/res/layout/ble_client_read_write.xml
new file mode 100644
index 0000000..7edba62
--- /dev/null
+++ b/apps/CtsVerifier/res/layout/ble_client_read_write.xml
@@ -0,0 +1,70 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2013 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.
+-->
+<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:orientation="vertical"
+        android:padding="10dip"
+        >
+    <LinearLayout android:orientation="vertical"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:layout_centerInParent="true"
+            >
+        <LinearLayout android:orientation="horizontal"
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                >
+            <EditText android:id="@+id/write_text"
+                    android:layout_width="0dp"
+                    android:layout_weight="1"
+                    android:layout_height="wrap_content"
+                    android:hint="@string/ble_write_hint"
+                    android:padding="10dip"
+                    />
+            <Button android:id="@+id/ble_write"
+                    android:layout_height="wrap_content"
+                    android:layout_width="wrap_content"
+                    android:text="@string/ble_write"
+                    />
+        </LinearLayout>
+
+        <LinearLayout android:orientation="horizontal"
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                >
+            <TextView android:id="@+id/read_text"
+                    android:layout_width="0dp"
+                    android:layout_weight="1"
+                    android:layout_height="wrap_content"
+                    android:hint="@string/ble_read_hint"
+                    android:padding="10dip"
+                    android:textSize="18sp"
+                    />
+            <Button android:id="@+id/ble_read"
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:text="@string/ble_read"
+                    />
+        </LinearLayout>
+    </LinearLayout>
+
+    <include android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:layout_alignParentBottom="true"
+            layout="@layout/pass_fail_buttons"
+            />
+</RelativeLayout>
\ No newline at end of file
diff --git a/apps/CtsVerifier/res/layout/ble_client_test.xml b/apps/CtsVerifier/res/layout/ble_client_test.xml
new file mode 100644
index 0000000..660abd5
--- /dev/null
+++ b/apps/CtsVerifier/res/layout/ble_client_test.xml
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2013 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.
+-->
+<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:orientation="vertical"
+        android:padding="10dip"
+        >
+    <ListView android:id="@+id/ble_client_tests"
+            android:layout_height="fill_parent"
+            android:layout_width="match_parent"
+            android:padding="10dip"
+            />
+
+    <include android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:layout_alignParentBottom="true"
+            layout="@layout/pass_fail_buttons"
+            />
+</RelativeLayout>
\ No newline at end of file
diff --git a/apps/CtsVerifier/res/layout/ble_notify_characteristic.xml b/apps/CtsVerifier/res/layout/ble_notify_characteristic.xml
new file mode 100644
index 0000000..786918a
--- /dev/null
+++ b/apps/CtsVerifier/res/layout/ble_notify_characteristic.xml
@@ -0,0 +1,49 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2013 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.
+-->
+<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:orientation="vertical"
+        android:padding="10dip"
+        >
+    <RelativeLayout android:orientation="vertical"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:layout_centerInParent="true"
+            >
+        <Button android:id="@+id/ble_notify"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_centerHorizontal="true"
+                android:text="@string/ble_begin_notification"
+                android:padding="10dip"
+                />
+        <TextView android:id="@+id/ble_notify_text"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_centerHorizontal="true"
+                android:layout_below="@id/ble_notify"
+                android:textSize="20sp"
+                android:padding="10dip"
+                />
+    </RelativeLayout>
+
+    <include android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:layout_alignParentBottom="true"
+            layout="@layout/pass_fail_buttons"
+            />
+</RelativeLayout>
\ No newline at end of file
diff --git a/apps/CtsVerifier/res/layout/ble_read_rssi.xml b/apps/CtsVerifier/res/layout/ble_read_rssi.xml
new file mode 100644
index 0000000..8aa3193
--- /dev/null
+++ b/apps/CtsVerifier/res/layout/ble_read_rssi.xml
@@ -0,0 +1,49 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2013 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.
+-->
+<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:orientation="vertical"
+        android:padding="10dip"
+        >
+    <RelativeLayout android:orientation="vertical"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:layout_centerInParent="true"
+            >
+        <Button android:id="@+id/ble_read_rssi"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_centerHorizontal="true"
+                android:text="@string/ble_read_rssi"
+                android:padding="10dip"
+                />
+        <TextView android:id="@+id/ble_rssi_text"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_centerHorizontal="true"
+                android:layout_below="@id/ble_read_rssi"
+                android:textSize="20sp"
+                android:padding="10dip"
+                />
+    </RelativeLayout>
+
+    <include android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:layout_alignParentBottom="true"
+            layout="@layout/pass_fail_buttons"
+            />
+</RelativeLayout>
\ No newline at end of file
diff --git a/apps/CtsVerifier/res/layout/ble_reliable_write.xml b/apps/CtsVerifier/res/layout/ble_reliable_write.xml
new file mode 100644
index 0000000..7db78ff
--- /dev/null
+++ b/apps/CtsVerifier/res/layout/ble_reliable_write.xml
@@ -0,0 +1,63 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2013 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.
+-->
+<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:orientation="vertical"
+        android:padding="10dip"
+        >
+    <LinearLayout android:orientation="vertical"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:layout_centerInParent="true"
+            >
+        <EditText android:id="@+id/write_text"
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:hint="@string/ble_write_hint"
+                android:padding="5dip"
+                />
+        <LinearLayout android:orientation="horizontal"
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                >
+            <Button android:id="@+id/ble_begin"
+                    android:layout_width="0dp"
+                    android:layout_height="wrap_content"
+                    android:layout_weight="1"
+                    android:text="@string/ble_begin_write"
+                    />
+            <Button android:id="@+id/ble_write"
+                    android:layout_width="0dp"
+                    android:layout_height="wrap_content"
+                    android:layout_weight="1"
+                    android:text="@string/ble_write"
+                    />
+            <Button android:id="@+id/ble_execute"
+                    android:layout_width="0dp"
+                    android:layout_height="wrap_content"
+                    android:layout_weight="1"
+                    android:text="@string/ble_execute_write"
+                    />
+        </LinearLayout>
+    </LinearLayout>
+
+    <include android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:layout_alignParentBottom="true"
+            layout="@layout/pass_fail_buttons"
+            />
+</RelativeLayout>
\ No newline at end of file
diff --git a/apps/CtsVerifier/res/layout/ble_server_start.xml b/apps/CtsVerifier/res/layout/ble_server_start.xml
new file mode 100644
index 0000000..9ce714d
--- /dev/null
+++ b/apps/CtsVerifier/res/layout/ble_server_start.xml
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2013 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.
+-->
+<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:orientation="vertical"
+        android:padding="10dip"
+        >
+    <include android:id="@+id/pass_fail_buttons" 
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:layout_alignParentBottom="true"
+            layout="@layout/pass_fail_buttons"
+            />
+    <ListView android:id="@+id/ble_server_tests"
+            android:layout_height="wrap_content"
+            android:layout_width="match_parent"
+            android:layout_above="@id/pass_fail_buttons"
+            android:layout_alignParentTop="true"
+            android:padding="10dip"
+            />
+</RelativeLayout>
\ No newline at end of file
diff --git a/apps/CtsVerifier/res/layout/ble_server_start_item.xml b/apps/CtsVerifier/res/layout/ble_server_start_item.xml
new file mode 100644
index 0000000..136192f
--- /dev/null
+++ b/apps/CtsVerifier/res/layout/ble_server_start_item.xml
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2013 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.
+-->
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:padding="10dip"
+        android:orientation="horizontal"
+        >
+    <ImageView android:id="@+id/status"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:padding="10dip"
+            android:src="@drawable/fs_indeterminate"
+            />
+    <TextView android:id="@+id/instructions"
+            style="@style/InstructionsSmallFont"
+            android:layout_width="0dp"
+            android:layout_weight="1"
+            android:layout_height="wrap_content"
+            />
+</LinearLayout>
\ No newline at end of file
diff --git a/apps/CtsVerifier/res/layout/ca_boot_notify.xml b/apps/CtsVerifier/res/layout/ca_boot_notify.xml
new file mode 100644
index 0000000..e9309d4
--- /dev/null
+++ b/apps/CtsVerifier/res/layout/ca_boot_notify.xml
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="utf-8"?>
+
+<!-- Copyright (C) 2013 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.
+-->
+
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+  android:orientation="vertical" android:layout_width="fill_parent"
+  android:layout_height="fill_parent">
+
+  <ScrollView
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:layout_alignParentTop="true" >
+
+    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+      android:orientation="vertical"
+      android:layout_width="fill_parent"
+      android:layout_height="wrap_content">
+
+      <TextView
+          android:id="@+id/check_cert_desc"
+          android:layout_width="wrap_content"
+          android:layout_height="wrap_content"
+          android:text="@string/caboot_check_cert_installed"/>
+
+      <Button android:id="@+id/check_creds"
+          android:layout_width="wrap_content"
+          android:layout_height="wrap_content"
+          android:text="@string/caboot_check_creds" />
+
+      <TextView
+          android:id="@+id/need_to_install_cert"
+          android:layout_width="wrap_content"
+          android:layout_height="wrap_content"
+          android:text="@string/caboot_if_not_installed"/>
+
+      <Button android:id="@+id/install"
+          android:layout_width="wrap_content"
+          android:layout_height="wrap_content"
+          android:text="@string/caboot_install_cert" />
+
+      <TextView
+          android:id="@+id/reboot"
+          android:layout_width="wrap_content"
+          android:layout_height="wrap_content"
+          android:text="@string/caboot_reboot_desc"/>
+
+      <TextView
+          android:id="@+id/after_reboot"
+          android:layout_width="wrap_content"
+          android:layout_height="wrap_content"
+          android:text="@string/caboot_after_boot"/>
+
+      <include layout="@layout/pass_fail_buttons" />
+    </LinearLayout>
+  </ScrollView>
+</LinearLayout>
diff --git a/apps/CtsVerifier/res/layout/cainstallnotify_item.xml b/apps/CtsVerifier/res/layout/cainstallnotify_item.xml
new file mode 100644
index 0000000..1359cb4
--- /dev/null
+++ b/apps/CtsVerifier/res/layout/cainstallnotify_item.xml
@@ -0,0 +1,52 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013 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.
+-->
+<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="wrap_content" >
+
+    <ImageView
+        android:id="@+id/ca_notify_status"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_alignParentLeft="true"
+        android:layout_alignParentTop="true"
+        android:layout_marginTop="10dip"
+        android:contentDescription="@string/pass_button_text"
+        android:padding="10dip"
+        android:src="@drawable/fs_indeterminate" />
+
+    <TextView
+        android:id="@+id/ca_notify_instructions"
+        style="@style/InstructionsSmallFont"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:layout_alignParentRight="true"
+        android:layout_alignParentTop="true"
+        android:layout_toRightOf="@id/ca_notify_status" />
+
+    <Button
+        android:id="@+id/ca_notify_do_something"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:layout_alignParentRight="true"
+        android:layout_below="@id/ca_notify_instructions"
+        android:layout_marginLeft="20dip"
+        android:layout_marginRight="20dip"
+        android:layout_toRightOf="@id/ca_notify_status"
+        android:text="@string/cacert_do_something" />
+
+</RelativeLayout>
\ No newline at end of file
diff --git a/apps/CtsVerifier/res/layout/cainstallnotify_main.xml b/apps/CtsVerifier/res/layout/cainstallnotify_main.xml
new file mode 100644
index 0000000..16882bd
--- /dev/null
+++ b/apps/CtsVerifier/res/layout/cainstallnotify_main.xml
@@ -0,0 +1,45 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013 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.
+-->
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:orientation="vertical"
+    android:padding="10dip" >
+
+    <ScrollView
+        android:id="@+id/ca_notify_test_scroller"
+        android:layout_width="match_parent"
+        android:layout_height="0dp"
+        android:layout_weight="1"
+        android:orientation="vertical"
+        android:padding="10dip" >
+
+        <LinearLayout
+            android:id="@+id/ca_notify_test_items"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:orientation="vertical" >
+        </LinearLayout>
+    </ScrollView>
+
+    <include
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:layout_weight="0"
+        layout="@layout/pass_fail_buttons" />
+
+</LinearLayout>
\ No newline at end of file
diff --git a/apps/CtsVerifier/res/layout/camera_video.xml b/apps/CtsVerifier/res/layout/camera_video.xml
new file mode 100644
index 0000000..b81721b
--- /dev/null
+++ b/apps/CtsVerifier/res/layout/camera_video.xml
@@ -0,0 +1,108 @@
+<?xml version="1.0" encoding="utf-8"?>
+
+<!-- Copyright (C) 2013 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.
+-->
+
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:orientation="vertical"
+    android:layout_width="fill_parent"
+    android:layout_height="fill_parent">
+
+    <LinearLayout
+        android:orientation="horizontal"
+        android:layout_width="fill_parent"
+        android:layout_height="0dp"
+        android:layout_weight="1" >
+
+        <LinearLayout
+            android:orientation="vertical"
+            android:layout_width="0dp"
+            android:layout_height="fill_parent"
+            android:layout_weight="3"
+            android:gravity="center" >
+
+            <TextureView
+                android:id="@+id/video_capture"
+                android:layout_height="0dp"
+                android:layout_width="fill_parent"
+                android:layout_weight="3" />
+            <TextView
+                android:id="@+id/camera_video_capture_label"
+                android:layout_height="wrap_content"
+                android:layout_width="fill_parent"
+                android:text="@string/video_capture_label"
+                android:padding="2dp"
+                android:textSize="16sp"
+                android:gravity="center" />
+
+        </LinearLayout>
+        <LinearLayout
+            android:orientation="vertical"
+            android:layout_width="0dp"
+            android:layout_height="fill_parent"
+            android:layout_weight="3"
+            android:gravity="center" >
+
+            <VideoView
+                android:id="@+id/video_playback"
+                android:layout_height="0dp"
+                android:layout_width="fill_parent"
+                android:layout_weight="3" />
+            <TextView
+                android:id="@+id/camera_video_playback_label"
+                android:layout_height="wrap_content"
+                android:layout_width="fill_parent"
+                android:text="@string/video_playback_label"
+                android:padding="2dp"
+                android:textSize="16sp"
+                android:gravity="center" />
+
+        </LinearLayout>
+
+        <LinearLayout
+            android:orientation="vertical"
+            android:layout_width="0dp"
+            android:layout_height="fill_parent"
+            android:layout_weight="2" >
+
+            <Spinner
+                android:id="@+id/cameras_selection"
+                android:layout_width="fill_parent"
+                android:layout_height="wrap_content"/>
+            <Spinner
+                android:id="@+id/resolution_selection"
+                android:layout_width="fill_parent"
+                android:layout_height="wrap_content"/>
+            <Button
+                android:id="@+id/record_button"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:text="@string/record_button_text"/>
+            <TextView
+                android:id="@+id/status_label"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:text="@string/status_ready"
+                android:padding="2dp"
+                android:textSize="16sp"
+                android:gravity="center" />
+
+        </LinearLayout>
+
+    </LinearLayout>
+
+    <include layout="@layout/pass_fail_buttons" />
+
+</LinearLayout>
diff --git a/apps/CtsVerifier/res/layout/intent_driven_test.xml b/apps/CtsVerifier/res/layout/intent_driven_test.xml
new file mode 100644
index 0000000..e23f441
--- /dev/null
+++ b/apps/CtsVerifier/res/layout/intent_driven_test.xml
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="utf-8"?>
+
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+                android:layout_width="match_parent"
+                android:layout_height="match_parent"
+                android:orientation="vertical"
+    >
+
+  <ScrollView
+      android:layout_width="match_parent"
+      android:layout_height="0dp"
+      android:layout_weight="1">
+    <TextView android:id="@+id/info"
+              android:layout_width="match_parent"
+              android:layout_height="wrap_content"
+              android:textSize="18sp"
+              android:padding="5dp"
+              android:text="@string/dc_start_alarm_test_info"
+        />
+  </ScrollView>
+
+  <LinearLayout android:id="@+id/buttons"
+                android:orientation="horizontal"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"/>
+
+    <LinearLayout
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content">
+        <include layout="@layout/pass_fail_buttons"/>
+    </LinearLayout>
+</LinearLayout>
diff --git a/apps/CtsVerifier/res/layout/location_mode_item.xml b/apps/CtsVerifier/res/layout/location_mode_item.xml
new file mode 100644
index 0000000..5e8dedb
--- /dev/null
+++ b/apps/CtsVerifier/res/layout/location_mode_item.xml
@@ -0,0 +1,54 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013 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.
+-->
+<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="wrap_content" >
+
+    <ImageView
+        android:id="@+id/status"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_alignParentLeft="true"
+        android:layout_alignParentTop="true"
+        android:layout_marginTop="10dip"
+        android:contentDescription="@string/pass_button_text"
+        android:padding="10dip"
+        android:src="@drawable/fs_indeterminate" />
+
+    <TextView
+        android:id="@+id/instructions"
+        style="@style/InstructionsSmallFont"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:layout_alignParentRight="true"
+        android:layout_alignParentTop="true"
+        android:layout_toRightOf="@id/status"
+        android:text="@string/location_mode_select_high_accuracy" />
+
+    <Button
+        android:id="@+id/launch_settings"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:layout_alignParentRight="true"
+        android:layout_below="@id/instructions"
+        android:layout_marginLeft="20dip"
+        android:layout_marginRight="20dip"
+        android:layout_toRightOf="@id/status"
+        android:onClick="launchSettings"
+        android:text="@string/location_mode_start_settings" />
+
+</RelativeLayout>
diff --git a/apps/CtsVerifier/res/layout/location_mode_main.xml b/apps/CtsVerifier/res/layout/location_mode_main.xml
new file mode 100644
index 0000000..fde6aba
--- /dev/null
+++ b/apps/CtsVerifier/res/layout/location_mode_main.xml
@@ -0,0 +1,45 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013 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.
+-->
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:orientation="vertical"
+    android:padding="10dip" >
+
+    <ScrollView
+        android:id="@+id/test_scroller"
+        android:layout_width="match_parent"
+        android:layout_height="0dp"
+        android:layout_weight="1"
+        android:orientation="vertical"
+        android:padding="10dip" >
+
+        <LinearLayout
+            android:id="@+id/test_items"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:orientation="vertical" >
+        </LinearLayout>
+    </ScrollView>
+
+    <include
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:layout_weight="0"
+        layout="@layout/pass_fail_buttons" />
+
+</LinearLayout>
diff --git a/apps/CtsVerifier/res/layout/nfc_hce_reader.xml b/apps/CtsVerifier/res/layout/nfc_hce_reader.xml
new file mode 100644
index 0000000..be6617e
--- /dev/null
+++ b/apps/CtsVerifier/res/layout/nfc_hce_reader.xml
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="utf-8"?>
+
+<!-- Copyright (C) 2012 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.
+-->
+
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:orientation="vertical"
+    android:layout_width="fill_parent"
+    android:layout_height="fill_parent">
+
+
+    <Spinner
+        android:id="@+id/type_ab_selection"
+        android:layout_width="fill_parent"
+        android:layout_height="wrap_content"/>
+
+    <include layout="@layout/pass_fail_text" />
+
+</LinearLayout>
diff --git a/apps/CtsVerifier/res/layout/pass_fail_sample.xml b/apps/CtsVerifier/res/layout/pass_fail_sample.xml
new file mode 100644
index 0000000..84d79ee
--- /dev/null
+++ b/apps/CtsVerifier/res/layout/pass_fail_sample.xml
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2014 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.
+-->
+<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent">
+
+    <Button android:id="@+id/sample_share_btn"
+            android:text="@string/share_button_text"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content" />
+
+    <include android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:layout_alignParentBottom="true"
+            layout="@layout/pass_fail_buttons" />
+</RelativeLayout>
diff --git a/apps/CtsVerifier/res/layout/snsr_semi_auto_test.xml b/apps/CtsVerifier/res/layout/snsr_semi_auto_test.xml
new file mode 100644
index 0000000..92039f0
--- /dev/null
+++ b/apps/CtsVerifier/res/layout/snsr_semi_auto_test.xml
@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2013 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.
+-->
+<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent">
+
+    <TextView android:id="@+id/log_text"
+              android:gravity="bottom"
+              android:layout_height="wrap_content"
+              android:layout_width="wrap_content"
+              android:maxLines="27"
+              android:paddingBottom="5dip"
+              android:paddingLeft="10dip"
+              android:paddingRight="10dip"
+              android:paddingTop="5dip"
+              android:scrollbars="vertical"
+            />
+
+    <Button android:id="@+id/next_button"
+            android:layout_alignParentBottom="true"
+            android:layout_centerInParent="true"
+            android:layout_height="wrap_content"
+            android:layout_marginBottom="20dip"
+            android:layout_width="120dip"
+            android:text="@string/next_button_text"
+            android:textSize="24dip"
+            />
+
+</RelativeLayout>
diff --git a/apps/CtsVerifier/res/values/nfc_reader_types.xml b/apps/CtsVerifier/res/values/nfc_reader_types.xml
new file mode 100644
index 0000000..9a073a4
--- /dev/null
+++ b/apps/CtsVerifier/res/values/nfc_reader_types.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources>
+    <string-array name="nfc_types_array">
+    <item>Type A</item>
+    <item>Type B</item>
+    </string-array>
+</resources>
diff --git a/apps/CtsVerifier/res/values/strings.xml b/apps/CtsVerifier/res/values/strings.xml
index 57ad890..00ff965 100644
--- a/apps/CtsVerifier/res/values/strings.xml
+++ b/apps/CtsVerifier/res/values/strings.xml
@@ -15,12 +15,13 @@
 -->
 <resources>
     <string name="app_name">CTS Verifier</string>
-    
+
     <string name="title_version">CTS Verifier %1$s</string>
 
     <string name="pass_button_text">Pass</string>
     <string name="info_button_text">Info</string>
     <string name="fail_button_text">Fail</string>
+    <string name="next_button_text">Next</string>
 
     <!-- Strings for TestListActivity -->
     <string name="test_category_audio">Audio</string>
@@ -29,9 +30,11 @@
     <string name="test_category_hardware">Hardware</string>
     <string name="test_category_networking">Networking</string>
     <string name="test_category_sensors">Sensors</string>
+    <string name="test_category_location">Location</string>
     <string name="test_category_security">Security</string>
     <string name="test_category_streaming">Streaming</string>
     <string name="test_category_features">Features</string>
+    <string name="test_category_deskclock">Clock</string>
     <string name="test_category_other">Other</string>
     <string name="clear">Clear</string>
     <string name="test_results_cleared">Test results cleared.</string>
@@ -116,6 +119,7 @@
 
     <string name="bt_control">Bluetooth Control</string>
     <string name="bt_device_communication">Device Communication</string>
+    <string name="bt_le">Bluetooth Low Energy</string>
 
     <string name="bt_toggle_bluetooth">Toggle Bluetooth</string>
     <string name="bt_toggle_instructions">Disable and enable Bluetooth to successfully complete this test.</string>
@@ -128,16 +132,16 @@
     <string name="bt_connection_access_client">Connection Access Client</string>
     <string name="bt_connection_access_server_info">
         Start the CTS Verifier on another device, start the Bluetooth test, and choose
-        \"Connection Access Client\" to setup the test. 
-        \n\nFirst, unpair the devices via Bluetooth settings. Then connect the devices together 
+        \"Connection Access Client\" to setup the test.
+        \n\nFirst, unpair the devices via Bluetooth settings. Then connect the devices together
         using the \"Make Discoverable\" and \"Pick Server\" buttons.
         \n\nA connection access request should appear on the server and enable the pass button.
     </string>
     <string name="bt_connection_access_client_info">
         Start the CTS Verifier on another device, start the Bluetooth test, and choose
-        \"Connection Access Server\" to complete the test. 
-        \n\nMake the device acting as the server discoverable and connect to it via the 
-        \"Pick Server\" button. Check that the server displays the connection access request 
+        \"Connection Access Server\" to complete the test.
+        \n\nMake the device acting as the server discoverable and connect to it via the
+        \"Pick Server\" button. Check that the server displays the connection access request
         dialog. The client device does not need to do anything else.
     </string>
     <string name="bt_ca_dialog">Was the connection access request dialog shown?</string>
@@ -176,6 +180,53 @@
     <string name="bt_unpair">Device must be unpaired via Bluetooth settings before completing the test.\n\nUnpair the device in settings, make the server discoverable, and rescan to pick this device.</string>
     <string name="bt_settings">Bluetooth Settings</string>
 
+    <!-- BLE client side strings -->
+    <string name="ble_client_service_name">Bluetooth LE GATT Client Handler Service</string>
+    <string name="ble_client_test_name">BLE Client Test</string>
+    <string name="ble_client_connect_name">1. BLE Client Connect</string>
+    <string name="ble_discover_service_name">2. BLE Discover Service</string>
+    <string name="ble_client_characteristic_name">3. BLE Read/Write Characteristic</string>
+    <string name="ble_reliable_write_name">4. BLE Reliable Write</string>
+    <string name="ble_notify_characteristic_name">5. BLE Notify Characteristic</string>
+    <string name="ble_client_descriptor_name">6. BLE Read/Write Descriptor</string>
+    <string name="ble_read_rssi_name">7. BLE Read RSSI</string>
+    <string name="ble_client_disconnect_name">8. BLE Client Disconnect</string>
+    <string name="ble_client_test_info">The BLE test must be done simultaneously on two devices. This device is the client. All tests listed here must be done in order.</string>
+    <string name="ble_client_send_connect_info">Type in the Bluetooth address of the remote device to connect to, and verify that the devices are connected.</string>
+    <string name="ble_discover_service_info">Verify that the service is discovered when you press the "Discover Service" button.</string>
+    <string name="ble_read_write_info">Write values to and read values from the server to verify that the write and read functionalities are working correctly.</string>
+    <string name="ble_reliable_write_info">A Reliable Write has two steps.\n\n1) Write to the device. This will trigger a callback from the server to verify that the value written was correct.\n2) Execute the write, if the value written is valid.</string>
+    <string name="ble_notify_characteristic_info">Start accepting notifications, and verify that notifications are being reported correctly. The server should be notifying this device with the time every second.</string>
+    <string name="ble_read_rssi_info">Press button to read the RSSI value. Verify that the RSSI changes as you move the two devices further apart or closer together.</string>
+    <string name="ble_client_disconnect_info">Verify that the device is disconnected when you press the "Disconnect" button</string>
+    <string name="ble_address">Bluetooth address</string>
+    <string name="ble_connect">Connect</string>
+    <string name="ble_discover_service">Discover service</string>
+    <string name="ble_write_hint">Nothing to write yet</string>
+    <string name="ble_read_hint">Nothing read yet</string>
+    <string name="ble_write">Write</string>
+    <string name="ble_read">Read</string>
+    <string name="ble_begin_write">Begin write</string>
+    <string name="ble_execute_write">Execute write</string>
+    <string name="ble_begin_notification">Begin notification</string>
+    <string name="ble_stop_notification">Stop notification</string>
+    <string name="ble_waiting_notification">Waiting on notification</string>
+    <string name="ble_read_rssi">Read RSSI</string>
+    <string name="ble_disconnect">Disconnect</string>
+
+    <!-- BLE server side strings -->
+    <string name="ble_server_service_name">Bluetooth LE GATT Server Handler Service</string>
+    <string name="ble_server_start_name">BLE Server Test</string>
+    <string name="ble_server_start_info">The BLE test must be done simultaneously on two devices, a server device and a client device. This device is the server.</string>
+    <string name="ble_server_receiving_connect">Waiting on connection from BLE client.</string>
+    <string name="ble_server_add_service">Adding service to BLE server.</string>
+    <string name="ble_server_write_characteristic">Waiting on write characteristic request</string>
+    <string name="ble_server_read_characteristic">Waiting on read characteristic request</string>
+    <string name="ble_server_write_descriptor">Waiting on write descriptor request</string>
+    <string name="ble_server_read_descriptor">Waiting on read descriptor request</string>
+    <string name="ble_server_reliable_write">Waiting on reliable write from client</string>
+    <string name="ble_server_receiving_disconnect">Waiting on disconnection from BLE client</string>
+
     <!-- Strings for FeatureSummaryActivity -->
     <string name="feature_summary">Hardware/Software Feature Summary</string>
     <string name="feature_summary_info">This is a test for...</string>
@@ -205,10 +256,12 @@
         known to be compatible.\n\nThe Tag Verification tests check that your
         device can properly read and write to tags of different technologies. The MIFARE
         Ultralight test is only applicable for devices that support it.
+        \n\nThe Host-based card emulation tests check that your device has properly implemented
+             host-based card emulation.
     </string>
 
     <string name="nfc_not_enabled">NFC is not enabled!</string>
-    <string name="nfc_not_enabled_message">These tests require NFC to be enabled. Click the 
+    <string name="nfc_not_enabled_message">These tests require NFC to be enabled. Click the
         button below to goto Settings and enable it.</string>
     <string name="nfc_settings">NFC Settings</string>
 
@@ -238,7 +291,7 @@
         device running the \"CTS Verifier NDEF Sender\"...</string>
     <string name="nfc_ndef_push_receive_success">Successfully received the correct NDEF push
         message.</string>
-    <string name="nfc_ndef_push_receive_failure">Failed to receive the correct NDEF push 
+    <string name="nfc_ndef_push_receive_failure">Failed to receive the correct NDEF push
         message.</string>
 
     <string name="nfc_tag_verifier">NFC Tag Verifier</string>
@@ -263,10 +316,91 @@
     <string name="nfc_result_message">Written data:\n%1$s\n\nRead data:\n%2$s</string>
     <string name="nfc_ndef_content">Id: %1$s\nMime: %2$s\nPayload: %3$s</string>
 
-    <!-- Strings for AccelerometerTestActivity and GyroscopeTestActivity -->
+    <string name="nfc_hce">Host-based card emulation</string>
+    <string name="nfc_hce_reader_tests">HCE reader tests</string>
+    <string name="nfc_hce_emulator_tests">HCE emulator tests</string>
+    <string name="nfc_hce_emulator_test_info">The host-based card emulation
+        tests require two devices to be completed. The HCE emulator tests are used
+        to actually test the host-based card emulation feature of the device-under-test. So the
+        device running the emulator tests must be the candidate device running the software
+        to be tested. \n\nFor each emulator test, there is a corresponding "reader test"
+        in the "HCE reader tests" section. The "reader test" acts as a NFC terminal/POS
+        and makes sure the device-under-test implements card emulation correctly.</string>
+    <string name="nfc_hce_reader_test_info">The host-based card emulation
+        tests require two devices to be completed. The HCE emulator tests are used
+        to actually test the host-based card emulation feature of the device-under-test. So the
+        device running the emulator tests must be the candidate device running the software
+        to be tested. \n\nFor each emulator test, there is a corresponding "reader test"
+        in the "HCE reader tests" section. The "reader test" acts as a NFC terminal/POS
+        and makes sure the device-under-test implements card emulation correctly.
+    </string>
+    <string name="nfc_hce_type_selection">By default HCE applications must run on type A. If your device is restricted to type B (for example, because of a type B only UICC), select "Type B" from the drop-down box above. Note that all tests must be completed in the same mode (either "Type A" or "Type B").</string>
+    <string name="nfc_hce_please_wait">Please wait</string>
+    <string name="nfc_hce_setting_up">Setting up card emulation services...</string>
+
+    <string name="nfc_hce_default_route_emulator">Default route (Emulator)</string>
+    <string name="nfc_hce_default_route_reader">Default route (Reader)</string>
+    <string name="nfc_hce_default_route_emulator_help">This test verifies that the default route for ISO-DEP (ISO14443-4) frames is the host CPU. It does this by selecting an AID that any Android HCE phone will respond to if the select command is routed to the host. Please verify that there is no rule in the routing table that points this AID to the host. This test may be passed if the "PASS" button on the reader side lights up after tapping the devices together.</string>
+
+    <string name="nfc_hce_protocol_params_emulator">Protocol parameters (Emulator)</string>
+    <string name="nfc_hce_protocol_params_reader">Protocol parameters (Reader)</string>
+    <string name="nfc_hce_protocol_params_emulator_help">This test verifies that the Nfc-A and ISO-DEP protocol parameters are being set correctly. The test may be passed when no FAIL entries show up in the results below. Note that the reader device may be different from the device under test - the DUT itself does not need to be able to act as the reader for this test. \n\n Note that for each test there are 3 possible outcomes:\n1) OK -> test has passed;\n2) FAIL -> test has failed and this must be fixed;\n3) FAIL EMVCO -> this protocol parameter is deviating from the requirements in the EMV Contactless Communication Protocol specification.\n\nWhile it is allowed to ship a HCE implementation with EMVCo failures, it may not perform optimal when EMVco based payment HCE apps are run on the device.</string>
+
+    <string name="nfc_hce_single_payment_emulator">Single payment (Emulator)</string>
+    <string name="nfc_hce_single_payment_reader">Single payment (Reader)</string>
+
+    <string name="nfc_hce_dual_payment_emulator">Two payment services (Emulator)</string>
+    <string name="nfc_hce_dual_payment_reader">Two payment services (Reader)</string>
+
+    <string name="nfc_hce_change_default_emulator">Change default payment service (Emulator)</string>
+    <string name="nfc_hce_change_default_reader">Change default payment service (Reader)</string>
+
+    <string name="nfc_hce_tap_reader_title">Tap reader</string>
+    <string name="nfc_hce_tap_reader_message">Select the corresponding reader test on the remote device, click OK on this dialog, and tap devices together. The pass button will be enabled if the test passes.</string>
+
+    <string name="nfc_hce_single_non_payment_emulator">Single non-payment (Emulator)</string>
+    <string name="nfc_hce_single_non_payment_reader">Single non-payment (Reader)</string>
+
+    <string name="nfc_hce_dual_non_payment_emulator">Two non-payment services (Emulator)</string>
+    <string name="nfc_hce_dual_non_payment_reader">Two non-payment services (Reader)</string>
+
+    <string name="nfc_hce_conflicting_non_payment_emulator">Two conflicting non-payment services (Emulator)</string>
+    <string name="nfc_hce_conflicting_non_payment_reader">Two conflicting non-payment services (Reader)</string>
+
+    <string name="nfc_hce_offhost_service_emulator">Off-host service (Emulator)</string>
+    <string name="nfc_hce_offhost_service_reader">Off-host service (Reader)</string>
+    <string name="nfc_hce_offhost_emulator_help">This tests enables a service that declares some AIDs to reside off-host. This test only needs to be passed if your device has a secure element (either embedded or UICC.). The responses from the secure element are not verified by the test - it is up to the tester to verify the responses are as expected.</string>
+
+    <string name="nfc_hce_on_and_offhost_service_emulator">On and off-host services (Emulator)</string>
+    <string name="nfc_hce_on_and_offhost_service_reader">On and off-host services (Reader)</string>
+    <string name="nfc_hce_on_and_offhost_emulator_help">This tests enables a service that declares some AIDs to reside off-host, and another service that runs on host. It then first sends an APDU sequence that goes off-host, and subsequently some APDUs that should go to the on-host service. This test only needs to be passed if your device has a secure element (either embedded or UICC.). The pass button will be enabled if the on-host sequence is performed as expected. The responses from the secure element are not verified by the test - it is up to the tester to verify the responses are as expected. </string>
+
+    <string name="nfc_hce_tap_test_emulator">50 successful taps test (Emulator)</string>
+    <string name="nfc_hce_tap_test_reader">50 successful taps test (Reader)</string>
+    <string name="nfc_hce_tap_test_emulator_help">This test requires you to complete at least 50 HCE taps, to ensure stability of the HCE feature. The NFC service and controller should not crash or hang during any of the 50 taps.</string>
+    <string name="nfc_hce_throughput_emulator">HCE throughput test (Emulator)</string>
+    <string name="nfc_hce_throughput_reader">HCE throughput test (Reader)</string>
+    <string name="nfc_hce_throughput_emulator_help">This tests verifies that your HCE implementation can reach a decent throughput. While Android does not have any requirements on HCE performance, many HCE applications such as transport and payment apps do. If the average APDU roundtrip time is more than 50ms, please take a look at your implementation to see where the delay is coming from.</string>
+    <string name="nfc_hce_change_preinstalled_wallet">The device has an installed payment application that is currently set as default. To complete the test, you will be asked whether you want to make Payment Service #1 or #2 the default app. Select yes.</string>
+    <string name="nfc_hce_change_default_help">You will now be asked whether you want to make Payment Service #1 the default app. Select yes.</string>
+    <string name="nfc_hce_conflicting_non_payment_help">When tapping the first time, you will be shown a dialog that asks you to choose between TransportService #1 and TransportService #2. Select TransportService #2. Verify a dialog is shown that asks you to tap again to complete. Now tap again, and if communication with TransportService #2 is successfull the pass button will be enabled."</string>
+    <string name="nfc_payment_service_desc">NFC Payment service</string>
+    <string name="ppse">PPSE</string>
+    <string name="mastercard">MasterCard</string>
+    <string name="paymentService1">Payment Service #1</string>
+    <string name="paymentService2">Payment Service #2</string>
+    <string name="transportService1">TransportService #1</string>
+    <string name="transportService2">TransportService #2</string>
+    <string name="accessService">AccessService</string>
+    <string name="offhostService">OffhostService</string>
+
+    <!-- Strings for Sensor Test Activities -->
+    <!-- Accelerometer -->
     <string name="snsr_accel_test">Accelerometer Test</string>
     <string name="snsr_accel_test_info">This test verifies that the accelerometer is working properly. As you move the device around through space, the triangle should always point down (i.e. in the direction of gravity.) If it does not, the accelerometer is improperly configured.</string>
+    <string name="snsr_accel_m_test">Accelerometer Measurement Tests</string>
 
+    <!-- Gyroscope -->
     <string name="snsr_gyro_test">Gyroscope Test</string>
     <string name="snsr_gyro_test_info">This test verifies that the gyroscope is working properly.\n\nRotate your device as shown by the 3D block. A green background or a check mark indicates that the gyroscope\'s value is correct. A red background or a X mark indicates that the gyroscope\'s value is not right.\n\nThere are 6 parts of the test corresponding to each rotation. Press Pass for all the stages to complete this test.</string>
     <string name="snsr_gyro_test_progress">Test %1$d of %2$d</string>
@@ -274,6 +408,16 @@
     <string name="snsr_gyro_test_no_gyro_message">It doesn\'t seem like you have a gyroscope, so you don\'t need to run this test.</string>
     <string name="snsr_gyro_test_degrees_title">Wrong units?</string>
     <string name="snsr_gyro_test_degrees_message">These values looks like degrees per second. These should be radians per second!</string>
+    <string name="snsr_gyro_m_test">Gyroscope Measurement Test</string>
+
+    <!-- Magnetic Field -->
+    <string name="snsr_mag_m_test">Magnetic Field Measurement Tests</string>
+
+    <!-- Strings for Sample Test Activities -->
+    <string name="share_button_text">Share</string>
+    <string name="sample_framework_test">Sample Framework Test</string>
+    <string name="sample_test">Sample Test</string>
+    <string name="sample_test_info">This test verifies that bluetooth sharing is working properly.\nThe test assumes the Device Under Test has bluetooth enabled and is already paired with a second device, also with bluetooth enabled.\nStart this test by clicking share, choose bluetooth from the options, and then select a device to share with.\nNote: This is a sample test, used to demonstrate how to write CTS Verifier tests, so just click pass.</string>
 
     <!-- Strings for SuidFilesActivity -->
     <string name="suid_files">SUID File Scanner</string>
@@ -392,10 +536,33 @@
     <string name="cf_preview_label">Normal preview</string>
     <string name="cf_format_label">Processed callback data</string>
 
+    <!-- Strings for Camera Video -->
+    <string name="record_button_text">Test</string>
+    <string name="camera_video">Camera Video</string>
+    <string name="video_info"> This test checks video capture
+    at different resolutions. \n - The left view window shows the preview.
+    \n - Pressing the test button will trigger three
+    seconds of video recording. Playback will show up in the right view
+    window after recording is complete. \n - Use the spinners to choose
+    camera and resolution combinations. The playback should be similar
+    to what you saw in preview. \n - After all possible combinations
+    are tested, the pass button will be enabled. You may press the pass
+    button to indicate a pass. \n - You may press fail button any time during
+    the test to indicate failure.
+    </string>
+    <string name="video_capture_label">Video capture</string>
+    <string name="video_playback_label">Video playback</string>
+    <string name="dialog_fail_test">Test failed</string>
+    <string name="fail_quit">Fail and quit</string>
+    <string name="cancel">Cancel</string>
+    <string name="status_ready">Ready</string>
+    <string name="status_recording">Recording</string>
+    <string name="status_playback">Playing back</string>
+
     <!-- Strings for USB accessory test activity -->
     <string name="usb_accessory_test">USB Accessory Test</string>
     <string name="usb_accessory_test_info">
-        1. Connect your Android device to a computer and run the \'cts-usb-accessory\' program 
+        1. Connect your Android device to a computer and run the \'cts-usb-accessory\' program
         included with the CTS Verifier bundle.
         \n\n2. If you have not started the CTS Verifier, press \'OK\' when asked to open the CTS
         Verifier when the accessory is connected. \n\nIf you are already in this test,
@@ -593,9 +760,9 @@
         and disabled, and that once enabled the service is able to receive notificaitons and
         dismiss them.
     </string>
-    <string name="nls_enable_service">Please enable \"Notification Listener for CTS Verifier\" 
+    <string name="nls_enable_service">Please enable \"Notification Listener for CTS Verifier\"
         under Security > Notification Access and return here.</string>
-    <string name="nls_disable_service">Please disable \"Notification Listener for CTS Verifier\" 
+    <string name="nls_disable_service">Please disable \"Notification Listener for CTS Verifier\"
         under Security > Notification Access and return here.</string>
     <string name="nls_start_settings">Launch Settings</string>
     <string name="nls_service_started">Service should start once enabled.</string>
@@ -605,7 +772,74 @@
     <string name="nls_clear_all">Check that service can clear all notifications.</string>
     <string name="nls_service_stopped">Service should stop once disabled.</string>
     <string name="nls_note_missed">Check that notification was not received.</string>
-    
+
+    <string name="location_mode_high_accuracy_test">High Accuracy Mode Test</string>
+    <string name="location_mode_high_accuracy_info">
+        This test checks that the Location Mode API is consistent with the
+        Location Provider API when the device is in High Accuracy location mode.
+    </string>
+    <string name="location_mode_select_high_accuracy">
+        Please select the \"High accuracy\" mode at Settings > Location and return here.
+    </string>
+    <string name="location_mode_battery_saving_test">Battery Saving Mode Test</string>
+    <string name="location_mode_battery_saving_info">
+        This test checks that the Location Mode API is consistent with the
+        Location Provider API when the device is in Battery Saving location mode.
+    </string>
+    <string name="location_mode_select_battery_saving">
+        Please select the \"Battery Saving\" mode at Settings > Location and return here.
+    </string>
+    <string name="location_mode_device_only_test">Device Only Mode Test</string>
+    <string name="location_mode_device_only_info">
+        This test checks that the Location Mode API is consistent with the
+        Location Provider API when the device is in Device Only location mode.
+    </string>
+    <string name="location_mode_select_device_only">
+        Please select the \"Device Only\" mode at
+        Settings > Location and return here.
+    </string>
+    <string name="location_mode_off_test">Location Mode Off Test</string>
+    <string name="location_mode_off_info">
+        This test checks that the Location Mode API is consistent with the
+        Location Provider API when the device is in the Off location mode.
+    </string>
+
+    <string name="location_mode_start_settings">Launch Settings</string>
+    <string name="location_mode_turn_on">
+        Please turn ON location access (the switch at the top of Settings > Location)
+        and return here.
+    </string>
+    <string name="location_mode_turn_off">
+        Please turn OFF location access (the switch at the top of Settings > Location)
+        and return here.
+    </string>
+    <string name="location_mode_secure_gps_on">GPS provider should be ON in secure settings.</string>
+    <string name="location_mode_secure_gps_off">GPS provider should be OFF in secure settings.</string>
+    <string name="location_mode_secure_nlp_on">Network location provider should be ON in secure settings.</string>
+    <string name="location_mode_secure_nlp_off">Network location provider should be OFF in secure settings.</string>
+    <string name="location_mode_manager_gps_on">GPS provider should be ON in LocationManager.</string>
+    <string name="location_mode_manager_gps_off">GPS provider should be OFF in LocationManager.</string>
+    <string name="location_mode_manager_nlp_on">Network location provider should be ON in LocationManager.</string>
+    <string name="location_mode_manager_nlp_off">Network location provider should be OFF in LocationManager.</string>
+
+    <string name="cacert_test">CA Cert Notification Test</string>
+    <string name="cacert_info">This test checks that when a CA Certificate is installed, the user is notified.</string>
+    <string name="cacert_do_something">Do it</string>
+    <string name="cacert_done">Done</string>
+    <string name="cacert_install_cert">Use the CertInstaller to install the certificate. When it opens, just tap "Okay". If this button does nothing, pass the test and move on.</string>
+    <string name="cacert_check_cert_in_settings">Visit the user-installed trusted credentials page and confirm that the "Internet Widgits Pty Ltd" cert appears in the list.</string>
+    <string name="cacert_check_notification">Please look at the new notification and confirm: It say the network may be monitored. Tapping it brings up a more detailed explanation and a button to check trusted credentials. Tapping that button brings up the Trusted Credentials page you just visited.</string>
+    <string name="cacert_dismiss_notification">Dismiss the notification. If it cannot be dismissed, fail the test.</string>
+
+    <string name="caboot_test">CA Cert Notification on Boot test</string>
+    <string name="caboot_info">This test is to confirm that when the user has installed a trusted credential, the system notifies the user when it boots.</string>
+    <string name="caboot_check_cert_installed">Please check here to see whether a certificate is already installed. (If this button does nothing, pass the test and move on.)</string>
+    <string name="caboot_check_creds">Check Credentials</string>
+    <string name="caboot_if_not_installed">Only if there is no credential currently installed, install one. (If this button does nothing, pass the test and move on.)</string>
+    <string name="caboot_install_cert">Install credential</string>
+    <string name="caboot_reboot_desc">Please reboot the device and return to this test.</string>
+    <string name="caboot_after_boot">AFTER REBOOTING: Check that there is a notification that the network may be monitored. Opening that notification should show a dialog box giving more information, with a button to check trusted credentials. This should open up the same view of trusted credentials that you get via the "Check credentials" button.</string>
+
     <!-- Strings for Widget -->
     <string name="widget_framework_test">Widget Framework Test</string>
     <string name="widget_framework_test_info">This test checks some basic features of the widget
@@ -614,6 +848,84 @@
     <string name="widget_name">Widget Framework Test</string>
     <string name="widget_pass">Pass</string>
     <string name="widget_fail">Fail</string>
+
+    <!-- Strings for DeskClock -->
+    <string name="deskclock_tests">Alarms and Timers Tests</string>
+    <string name="deskclock_tests_info">
+        The Alarms and Timers tests verify that the Clock app implements the AlarmClock API properly.
+    </string>
+    <string name="deskclock_group_alarms">Alarms</string>
+    <string name="deskclock_group_timers">Timers</string>
+
+    <string name="dc_show_alarms_test">Show Alarms Test</string>
+    <string name="dc_show_alarms_test_info">
+        This test verifies that the SHOW_ALARMS API works.\n
+        1. Press the "Show Alarms" button.\n
+        2. Verify that a UI of the clock app is launched and displays the list of alarms\n
+    </string>
+    <string name="dc_show_alarms_button">Show Alarms</string>
+
+    <string name="dc_set_alarm_with_ui_test">Set Alarm Test</string>
+    <string name="dc_set_alarm_with_ui_test_info">
+        This test verifies that the ACTION_SET_ALARM with no parameters API works.\n
+        1. Press the "Set Alarm" button.\n
+        2. Verify that the clock app is launched and displays a UI to manage alarms.\n
+    </string>
+    <string name="dc_set_alarm_button">Set Alarm</string>
+    <string name="dc_set_alarm_verify_button">Verify</string>
+
+    <string name="dc_start_alarm_test">Start Alarm Test</string>
+    <string name="dc_start_alarm_test_info">
+        This test verifies that the ACTION_SET_ALARM API actually starts an alarm.\n
+        1. Press the "Start Alarm" button.\n
+        2. Make sure the alarms UI is NOT shown\n
+        3. Wait for the alarm to fire (may take up to 2 minutes)\n
+        4. Verify that the alarm title is: "Start Alarm Test",\n
+           the alarm is silent and vibrating (if the device supports vibrate).\n
+        5. Dismiss the alarm.\n
+        6. Verify that the alarm is not in the Clock\'s alarms list. The Verify button opens
+           the alarm view.\n
+    </string>
+    <string name="dc_start_alarm_button">Start Alarm</string>
+
+    <string name="dc_full_alarm_test">Full Alarm Test</string>
+    <string name="dc_full_alarm_test_info">
+        This test verifies that the ACTION_SET_ALARM API supports all extras.\n
+        1. Press the "Create Alarm" button.\n
+        2. Verify that you see one alarm with the following information:\n
+           Name of alarm: Create Alarm Test. \n
+           Vibrate: on.\n
+           Ringtone: silent.\n
+           Time:  01:23. \n
+           Repeating on: Monday and Wednesday. \n
+    </string>
+    <string name="dc_full_alarm_button">Create Alarm</string>
+
+    <string name="dc_set_timer_with_ui_test">Set Timer Test</string>
+    <string name="dc_set_timer_with_ui_test_info">
+        This test verifies that the ACTION_SET_TIMER API with no paramters open the UI\n
+        1. Press the "Set Timer" button.\n
+        2. Verify that the an app is launched and displays a UI to manage timers.\n
+    </string>
+    <string name="dc_set_timer_with_ui_button">Set Timer</string>
+
+    <string name="dc_start_timer_test">Start Timer Test</string>
+    <string name="dc_start_timer_test_info">
+        This test verifies that the ACTION_SET_TIMER API actually starts a timer\n
+        1. Press the "Start Timer" button.\n
+        2. Verify that a timer is started  and NO timers UI is shown.\n
+        3. Verify that the timer named "Start Timer Test" rings after 30 seconds. Dismiss it.\n
+        4. Verify that the timer is deleted after the dismissal.\n
+    </string>
+    <string name="dc_start_timer_button">Start Timer</string>
+
+    <string name="dc_start_timer_with_ui_test">Start Timer With UI Test</string>
+    <string name="dc_start_timer_with_ui_test_info">
+        This test verifies that the ACTION_SET_TIMER API actually starts a timer with UI\n
+        1. Press the "Start Timer" button.\n
+        2. Verify that a timer is started  and the timers UI is shown with a timer named "Start Timer Test".\n
+        3. Verify that the timer rings after 30 seconds.\n
+    </string>
     
     <!-- Strings for LockConfirmBypassTest -->
     <string name="lock_confirm_test_title">Keyguard Password Verification</string>
diff --git a/apps/CtsVerifier/res/xml/access_aid_list.xml b/apps/CtsVerifier/res/xml/access_aid_list.xml
new file mode 100644
index 0000000..1303f13
--- /dev/null
+++ b/apps/CtsVerifier/res/xml/access_aid_list.xml
@@ -0,0 +1,6 @@
+<host-apdu-service xmlns:android="http://schemas.android.com/apk/res/android"
+    android:description="@string/transportService1">
+        <aid-group>
+            <aid-filter android:name="F005060708"/>
+        </aid-group>
+</host-apdu-service>
diff --git a/apps/CtsVerifier/res/xml/offhost_aid_list.xml b/apps/CtsVerifier/res/xml/offhost_aid_list.xml
new file mode 100644
index 0000000..524e54d
--- /dev/null
+++ b/apps/CtsVerifier/res/xml/offhost_aid_list.xml
@@ -0,0 +1,9 @@
+<offhost-apdu-service xmlns:android="http://schemas.android.com/apk/res/android"
+    android:description="@string/offhostService">
+    <aid-group>
+        <!-- OBTH card manager AID -->
+        <aid-filter android:name="A000000151000000"/>
+        <!-- NXP card manager AID -->
+        <aid-filter android:name="A000000003000000"/>
+    </aid-group>
+</offhost-apdu-service>
diff --git a/apps/CtsVerifier/res/xml/payment_aid_list_1.xml b/apps/CtsVerifier/res/xml/payment_aid_list_1.xml
new file mode 100644
index 0000000..2036402
--- /dev/null
+++ b/apps/CtsVerifier/res/xml/payment_aid_list_1.xml
@@ -0,0 +1,9 @@
+<host-apdu-service xmlns:android="http://schemas.android.com/apk/res/android"
+    android:description="@string/paymentService1">
+        <aid-group android:description="@string/paymentService1" android:category="payment">
+            <aid-filter android:name="325041592E5359532E4444463031"
+                        android:description="@string/ppse"/>
+            <aid-filter android:name="A0000000041010"
+                        android:description="@string/mastercard"/>
+        </aid-group>
+</host-apdu-service>
diff --git a/apps/CtsVerifier/res/xml/payment_aid_list_2.xml b/apps/CtsVerifier/res/xml/payment_aid_list_2.xml
new file mode 100644
index 0000000..36a5af0
--- /dev/null
+++ b/apps/CtsVerifier/res/xml/payment_aid_list_2.xml
@@ -0,0 +1,9 @@
+<host-apdu-service xmlns:android="http://schemas.android.com/apk/res/android"
+    android:description="@string/paymentService2">
+        <aid-group android:description="@string/paymentService2" android:category="payment">
+            <aid-filter android:name="325041592E5359532E4444463031"
+                        android:description="@string/ppse"/>
+            <aid-filter android:name="A0000000041010"
+                        android:description="@string/mastercard"/>
+        </aid-group>
+</host-apdu-service>
diff --git a/apps/CtsVerifier/res/xml/throughput_aid_list.xml b/apps/CtsVerifier/res/xml/throughput_aid_list.xml
new file mode 100644
index 0000000..7f49eb3
--- /dev/null
+++ b/apps/CtsVerifier/res/xml/throughput_aid_list.xml
@@ -0,0 +1,6 @@
+<host-apdu-service xmlns:android="http://schemas.android.com/apk/res/android"
+    android:description="@string/transportService1">
+        <aid-group>
+            <aid-filter android:name="F0010203040607FF"/>
+        </aid-group>
+</host-apdu-service>
diff --git a/apps/CtsVerifier/res/xml/transport_aid_list_1.xml b/apps/CtsVerifier/res/xml/transport_aid_list_1.xml
new file mode 100644
index 0000000..9396391
--- /dev/null
+++ b/apps/CtsVerifier/res/xml/transport_aid_list_1.xml
@@ -0,0 +1,6 @@
+<host-apdu-service xmlns:android="http://schemas.android.com/apk/res/android"
+    android:description="@string/transportService1">
+        <aid-group>
+            <aid-filter android:name="F001020304"/>
+        </aid-group>
+</host-apdu-service>
diff --git a/apps/CtsVerifier/res/xml/transport_aid_list_2.xml b/apps/CtsVerifier/res/xml/transport_aid_list_2.xml
new file mode 100644
index 0000000..9e20ff3
--- /dev/null
+++ b/apps/CtsVerifier/res/xml/transport_aid_list_2.xml
@@ -0,0 +1,6 @@
+<host-apdu-service xmlns:android="http://schemas.android.com/apk/res/android"
+    android:description="@string/transportService2">
+        <aid-group>
+            <aid-filter android:name="F001020304"/>
+        </aid-group>
+</host-apdu-service>
diff --git a/apps/CtsVerifier/src/com/android/cts/verifier/IntentDrivenTestActivity.java b/apps/CtsVerifier/src/com/android/cts/verifier/IntentDrivenTestActivity.java
new file mode 100644
index 0000000..678a338
--- /dev/null
+++ b/apps/CtsVerifier/src/com/android/cts/verifier/IntentDrivenTestActivity.java
@@ -0,0 +1,223 @@
+// Copyright 2013 Google Inc. All Rights Reserved.
+
+package com.android.cts.verifier;
+
+import android.content.Intent;
+import android.os.Bundle;
+import android.os.Parcel;
+import android.os.Parcelable;
+import android.view.View;
+import android.view.View.OnClickListener;
+import android.view.ViewGroup;
+import android.widget.Button;
+import android.widget.TextView;
+
+/**
+ *  A generic activity for intent based tests.
+ *
+ *  This activity can be reused for various tests that are intent based. The activity consists of a
+ *  text view containing instructions and one or more buttons that trigger intents.
+ *  Each button can send one or more intenrs as startActivity() calls.
+ *
+ *  The intents can either be generated statically and passed as an extra to the intent that started
+ *  this activity or in some cases where the intent needs to be based on dynamic data (for example
+ *  time of day), an {@link IntentFactory} class name can be passed instead. This intent factory
+ *  will dynamically create the intent when the button is clicked based on the test id and the
+ *  button that was clicked.
+ */
+public class IntentDrivenTestActivity extends PassFailButtons.Activity implements OnClickListener {
+    public static final String EXTRA_ID = "id";
+    public static final String EXTRA_TITLE = "title";
+    public static final String EXTRA_INFO = "info";
+    public static final String EXTRA_BUTTONS = "buttons";
+
+    private String mTestId;
+    private ButtonInfo[] mButtonInfos;
+
+
+    @Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        setContentView(R.layout.intent_driven_test);
+        setPassFailButtonClickListeners();
+
+        final Intent intent = getIntent();
+        if (!intent.hasExtra(EXTRA_ID)
+                || !intent.hasExtra(EXTRA_TITLE)
+                || !intent.hasExtra(EXTRA_INFO)
+                || !intent.hasExtra(EXTRA_BUTTONS)) {
+            throw new IllegalArgumentException(
+                    "Intent must have EXTRA_ID, EXTRA_TITLE, EXTRA_INFO & EXTRA_BUTTONS");
+        }
+
+        mTestId = intent.getStringExtra(EXTRA_ID);
+        setTitle(intent.getIntExtra(EXTRA_TITLE, -1));
+
+        final TextView info = (TextView) findViewById(R.id.info);
+        info.setText(intent.getIntExtra(EXTRA_INFO, -1));
+
+        final ViewGroup buttons = (ViewGroup) findViewById(R.id.buttons);
+        final Parcelable[] parcelables = intent.getParcelableArrayExtra(EXTRA_BUTTONS);
+        mButtonInfos = new ButtonInfo[parcelables.length];
+        for (int i = 0; i < parcelables.length; i++) {
+            final ButtonInfo buttonInfo = (ButtonInfo) parcelables[i];
+            mButtonInfos[i] = buttonInfo;
+            final Button button = new Button(this);
+            buttons.addView(button);
+            button.setText(buttonInfo.mButtonText);
+            button.setTag(i);
+            button.setOnClickListener(this);
+        }
+    }
+
+    @Override
+    protected void onResume() {
+        super.onResume();
+        setResult(RESULT_CANCELED);
+    }
+
+    @Override
+    public void onClick(View v) {
+        final ButtonInfo buttonInfo = mButtonInfos[(Integer) v.getTag()];
+        final Intent[] intents = buttonInfo.getIntents();
+        if (intents != null) {
+            for (Parcelable intent : intents) {
+                startActivity((Intent) intent);
+            }
+        } else {
+            final Class<?> factoryClass;
+            final String className = buttonInfo.getIntentFactoryClassName();
+            try {
+                factoryClass = Thread.currentThread().getContextClassLoader().loadClass(className);
+            } catch (ClassNotFoundException e) {
+                throw new IllegalArgumentException("Factory not found: " + className, e);
+            }
+            final IntentFactory factory;
+            try {
+                factory = (IntentFactory) factoryClass.newInstance();
+            } catch (InstantiationException e) {
+                throw new IllegalArgumentException("Can't create factory: " + className, e);
+            } catch (IllegalAccessException e) {
+                throw new IllegalArgumentException("Can't create factory: " + className, e);
+            }
+
+            for (Intent intent : factory.createIntents(mTestId, buttonInfo.getButtonText())) {
+                startActivity(intent);
+            }
+        }
+    }
+
+    @Override
+    public String getTestId() {
+        return mTestId;
+    }
+
+    public static class TestInfo {
+        private final String mTestId;
+        private final int mTitle;
+        private final int mInfoText;
+        private final ButtonInfo[] mButtons;
+
+        public TestInfo(String testId,  int title, int infoText, ButtonInfo... buttons) {
+            /** The Intent Driven Test layout {@link R.layout.intent_driven_test} is designed for
+             *  up to 2 buttons and won't render well with more buttons on small screen devices.
+             *  If you need more than 2 buttons, please change the layout so it can properly render
+             *  them even on the smallest devices.
+             */
+            if (buttons.length > 2) {
+                throw new RuntimeException("Too many buttons");
+            }
+            mTestId = testId;
+            mTitle = title;
+            mInfoText = infoText;
+            mButtons = buttons;
+        }
+
+        public String getTestId() {
+            return mTestId;
+        }
+
+        public int getTitle() {
+            return mTitle;
+        }
+
+        public int getInfoText() {
+            return mInfoText;
+        }
+
+        public ButtonInfo[] getButtons() {
+            return mButtons;
+        }
+    }
+
+    public static class ButtonInfo implements Parcelable {
+        private final int mButtonText;
+        private final Intent[] mIntents;
+        private final String mIntentFactoryClassName;
+
+        public ButtonInfo(int buttonText, Intent... intents) {
+            mButtonText = buttonText;
+            mIntents = intents;
+            mIntentFactoryClassName = null;
+        }
+
+        public ButtonInfo(int buttonText, String intentFactoryClassName) {
+            mButtonText = buttonText;
+            mIntents = null;
+            mIntentFactoryClassName = intentFactoryClassName;
+        }
+
+        public ButtonInfo(Parcel source) {
+            mButtonText = source.readInt();
+            final Parcelable[] parcelables = source.readParcelableArray(null);
+            if (parcelables != null) {
+                mIntents = new Intent[parcelables.length];
+                for (int i = 0, parcelablesLength = parcelables.length; i < parcelablesLength; i++) {
+                    mIntents[i] = (Intent) parcelables[i];
+                }
+            } else {
+                mIntents = null;
+            }
+            mIntentFactoryClassName = source.readString();
+        }
+
+        public int getButtonText() {
+            return mButtonText;
+        }
+
+        public Intent[] getIntents() {
+            return mIntents;
+        }
+
+        public String getIntentFactoryClassName() {
+            return mIntentFactoryClassName;
+        }
+
+        @Override
+        public int describeContents() {
+            return 0;
+        }
+
+        @Override
+        public void writeToParcel(Parcel dest, int flags) {
+            dest.writeInt(mButtonText);
+            dest.writeParcelableArray(mIntents, 0);
+            dest.writeString(mIntentFactoryClassName);
+        }
+
+        public static final Creator<ButtonInfo> CREATOR = new Creator<ButtonInfo>() {
+            public ButtonInfo createFromParcel(Parcel source) {
+                return new ButtonInfo(source);
+            }
+
+            public ButtonInfo[] newArray(int size) {
+                return new ButtonInfo[size];
+            }
+        };
+
+    }
+
+    public interface IntentFactory {
+        Intent[] createIntents(String testId, int buttonText);
+    }
+}
diff --git a/apps/CtsVerifier/src/com/android/cts/verifier/bluetooth/BleButtonActivity.java b/apps/CtsVerifier/src/com/android/cts/verifier/bluetooth/BleButtonActivity.java
new file mode 100644
index 0000000..19900af
--- /dev/null
+++ b/apps/CtsVerifier/src/com/android/cts/verifier/bluetooth/BleButtonActivity.java
@@ -0,0 +1,106 @@
+/*
+ * Copyright (C) 2013 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.android.cts.verifier.bluetooth;
+
+import com.android.cts.verifier.PassFailButtons;
+import com.android.cts.verifier.R;
+
+import android.content.BroadcastReceiver;
+import android.content.Context;
+import android.content.Intent;
+import android.content.IntentFilter;
+import android.os.Bundle;
+import android.view.View;
+import android.view.View.OnClickListener;
+import android.widget.Button;
+import android.widget.Toast;
+
+public class BleButtonActivity extends PassFailButtons.Activity {
+
+    static final int DISCOVER_SERVICE = 0;
+    static final int DISCONNECT = 1;
+
+    private int mName;
+    private int mInfo;
+    private int mButtonText;
+    private int mCommand;
+    private String mFilter;
+    private String mMessage;
+
+    BleButtonActivity(int target) {
+        if (target == DISCOVER_SERVICE) {
+            mName = R.string.ble_discover_service_name;
+            mInfo = R.string.ble_discover_service_info;
+            mButtonText = R.string.ble_discover_service;
+            mCommand = BleClientService.COMMAND_DISCOVER_SERVICE;
+            mFilter = BleClientService.BLE_SERVICES_DISCOVERED;
+            mMessage = "Service discovered.";
+        } else if (target == DISCONNECT) {
+            mName = R.string.ble_client_disconnect_name;
+            mInfo = R.string.ble_client_disconnect_name;
+            mButtonText = R.string.ble_disconnect;
+            mCommand = BleClientService.COMMAND_DISCONNECT;
+            mFilter = BleClientService.BLE_BLUETOOTH_DISCONNECTED;
+            mMessage = "Bluetooth LE disconnected.";
+        }
+    }
+
+    @Override
+    public void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        setContentView(R.layout.ble_button);
+        setPassFailButtonClickListeners();
+        setInfoResources(mName, mInfo, -1);
+        getPassButton().setEnabled(false);
+
+        ((Button) findViewById(R.id.ble_button)).setText(mButtonText);
+        ((Button) findViewById(R.id.ble_button)).setOnClickListener(new OnClickListener() {
+            @Override
+            public void onClick(View v) {
+                Intent intent = new Intent(BleButtonActivity.this, BleClientService.class);
+                intent.putExtra(BleClientService.EXTRA_COMMAND, mCommand);
+                startService(intent);
+            }
+        });
+    }
+
+    @Override
+    public void onResume() {
+        super.onResume();
+        IntentFilter filter = new IntentFilter();
+        filter.addAction(mFilter);
+        registerReceiver(onBroadcast, filter);
+    }
+
+    @Override
+    public void onPause() {
+        super.onPause();
+        unregisterReceiver(onBroadcast);
+    }
+
+    private void showMessage(String msg) {
+        Toast.makeText(this, msg, Toast.LENGTH_SHORT).show();
+    }
+
+    private BroadcastReceiver onBroadcast = new BroadcastReceiver() {
+        @Override
+        public void onReceive(Context context, Intent intent) {
+            showMessage(mMessage);
+            getPassButton().setEnabled(true);
+        }
+    };
+}
\ No newline at end of file
diff --git a/apps/CtsVerifier/src/com/android/cts/verifier/bluetooth/BleClientCharacteristicActivity.java b/apps/CtsVerifier/src/com/android/cts/verifier/bluetooth/BleClientCharacteristicActivity.java
new file mode 100644
index 0000000..1e1941f
--- /dev/null
+++ b/apps/CtsVerifier/src/com/android/cts/verifier/bluetooth/BleClientCharacteristicActivity.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2013 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.android.cts.verifier.bluetooth;
+
+public class BleClientCharacteristicActivity extends BleReadWriteActivity {
+    public BleClientCharacteristicActivity() {
+        super(BleReadWriteActivity.CHARACTERISTIC);
+    }
+}
\ No newline at end of file
diff --git a/apps/CtsVerifier/src/com/android/cts/verifier/bluetooth/BleClientConnectActivity.java b/apps/CtsVerifier/src/com/android/cts/verifier/bluetooth/BleClientConnectActivity.java
new file mode 100755
index 0000000..fb351b1
--- /dev/null
+++ b/apps/CtsVerifier/src/com/android/cts/verifier/bluetooth/BleClientConnectActivity.java
@@ -0,0 +1,89 @@
+/*
+ * Copyright (C) 2013 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.android.cts.verifier.bluetooth;
+
+import com.android.cts.verifier.PassFailButtons;
+import com.android.cts.verifier.R;
+
+import android.bluetooth.BluetoothAdapter;
+import android.bluetooth.BluetoothDevice;
+import android.content.BroadcastReceiver;
+import android.content.Context;
+import android.content.Intent;
+import android.content.IntentFilter;
+import android.os.Bundle;
+import android.view.View;
+import android.view.View.OnClickListener;
+import android.widget.Button;
+import android.widget.EditText;
+import android.widget.Toast;
+
+public class BleClientConnectActivity extends PassFailButtons.Activity {
+
+    private EditText mEditText;
+
+    @Override
+    public void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        setContentView(R.layout.ble_client_connect);
+        setPassFailButtonClickListeners();
+        setInfoResources(R.string.ble_client_connect_name,
+                         R.string.ble_client_send_connect_info, -1);
+        getPassButton().setEnabled(false);
+
+        mEditText = (EditText) findViewById(R.id.ble_address);
+
+        ((Button) findViewById(R.id.ble_connect)).setOnClickListener(new OnClickListener() {
+            @Override
+            public void onClick(View v) {
+                String address = mEditText.getText().toString();
+                if (!BluetoothAdapter.checkBluetoothAddress(address)) {
+                    showMessage("Invalid bluetooth address.");
+                } else {
+                    Intent intent = new Intent(BleClientConnectActivity.this,
+                                               BleClientService.class);
+                    intent.putExtra(BleClientService.EXTRA_COMMAND,
+                                    BleClientService.COMMAND_CONNECT);
+                    intent.putExtra(BluetoothDevice.EXTRA_DEVICE, address);
+                    startService(intent);
+                }
+            }
+        });
+
+        IntentFilter filter = new IntentFilter();
+        filter.addAction(BleClientService.BLE_BLUETOOTH_CONNECTED);
+        registerReceiver(onBroadcast, filter);
+    }
+
+    @Override
+    protected void onDestroy(){
+        super.onDestroy();
+        unregisterReceiver(onBroadcast);
+    }
+
+    private void showMessage(String msg) {
+        Toast.makeText(this, msg, Toast.LENGTH_SHORT).show();
+    }
+
+    private BroadcastReceiver onBroadcast = new BroadcastReceiver() {
+        @Override
+        public void onReceive(Context context, Intent intent) {
+            showMessage("Bluetooth LE connected");
+            getPassButton().setEnabled(true);
+        }
+    };
+}
diff --git a/apps/CtsVerifier/src/com/android/cts/verifier/bluetooth/BleClientDescriptorActivity.java b/apps/CtsVerifier/src/com/android/cts/verifier/bluetooth/BleClientDescriptorActivity.java
new file mode 100644
index 0000000..ab2229a
--- /dev/null
+++ b/apps/CtsVerifier/src/com/android/cts/verifier/bluetooth/BleClientDescriptorActivity.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2013 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.android.cts.verifier.bluetooth;
+
+public class BleClientDescriptorActivity extends BleReadWriteActivity {
+    public BleClientDescriptorActivity() {
+        super(BleReadWriteActivity.DESCRIPTOR);
+    }
+}
\ No newline at end of file
diff --git a/apps/CtsVerifier/src/com/android/cts/verifier/bluetooth/BleClientDisconnectActivity.java b/apps/CtsVerifier/src/com/android/cts/verifier/bluetooth/BleClientDisconnectActivity.java
new file mode 100644
index 0000000..083d327
--- /dev/null
+++ b/apps/CtsVerifier/src/com/android/cts/verifier/bluetooth/BleClientDisconnectActivity.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2013 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.android.cts.verifier.bluetooth;
+
+public class BleClientDisconnectActivity extends BleButtonActivity {
+    public BleClientDisconnectActivity() {
+        super(BleButtonActivity.DISCONNECT);
+    }
+}
\ No newline at end of file
diff --git a/apps/CtsVerifier/src/com/android/cts/verifier/bluetooth/BleClientService.java b/apps/CtsVerifier/src/com/android/cts/verifier/bluetooth/BleClientService.java
new file mode 100644
index 0000000..556ad06
--- /dev/null
+++ b/apps/CtsVerifier/src/com/android/cts/verifier/bluetooth/BleClientService.java
@@ -0,0 +1,390 @@
+/*
+ * Copyright (C) 2013 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.android.cts.verifier.bluetooth;
+
+import java.util.UUID;
+import java.util.List;
+
+import android.app.Service;
+import android.bluetooth.BluetoothAdapter;
+import android.bluetooth.BluetoothDevice;
+import android.bluetooth.BluetoothGatt;
+import android.bluetooth.BluetoothGattCallback;
+import android.bluetooth.BluetoothGattCharacteristic;
+import android.bluetooth.BluetoothGattDescriptor;
+import android.bluetooth.BluetoothGattService;
+import android.bluetooth.BluetoothManager;
+import android.bluetooth.BluetoothProfile;
+import android.content.Context;
+import android.content.Intent;
+import android.os.Handler;
+import android.os.IBinder;
+import android.util.Log;
+import android.widget.Toast;
+
+public class BleClientService extends Service {
+
+    public static final boolean DEBUG = true;
+    public static final String TAG = "BleClientService";
+
+    public static final int COMMAND_CONNECT = 0;
+    public static final int COMMAND_DISCONNECT = 1;
+    public static final int COMMAND_DISCOVER_SERVICE = 2;
+    public static final int COMMAND_READ_RSSI = 3;
+    public static final int COMMAND_WRITE_CHARACTERISTIC = 4;
+    public static final int COMMAND_READ_CHARACTERISTIC = 5;
+    public static final int COMMAND_WRITE_DESCRIPTOR = 6;
+    public static final int COMMAND_READ_DESCRIPTOR = 7;
+    public static final int COMMAND_SET_NOTIFICATION = 8;
+    public static final int COMMAND_BEGIN_WRITE = 9;
+    public static final int COMMAND_EXECUTE_WRITE = 10;
+    public static final int COMMAND_ABORT_RELIABLE = 11;
+
+    public static final String BLE_BLUETOOTH_CONNECTED =
+            "com.android.cts.verifier.bluetooth.BLE_BLUETOOTH_CONNECTED";
+    public static final String BLE_BLUETOOTH_DISCONNECTED =
+            "com.android.cts.verifier.bluetooth.BLE_BLUETOOTH_DISCONNECTED";
+    public static final String BLE_SERVICES_DISCOVERED =
+            "com.android.cts.verifier.bluetooth.BLE_SERVICES_DISCOVERED";
+    public static final String BLE_CHARACTERISTIC_READ =
+            "com.android.cts.verifier.bluetooth.BLE_CHARACTERISTIC_READ";
+    public static final String BLE_CHARACTERISTIC_WRITE =
+            "com.android.cts.verifier.bluetooth.BLE_CHARACTERISTIC_WRITE";
+    public static final String BLE_CHARACTERISTIC_CHANGED =
+            "com.android.cts.verifier.bluetooth.BLE_CHARACTERISTIC_CHANGED";
+    public static final String BLE_DESCRIPTOR_READ =
+            "com.android.cts.verifier.bluetooth.BLE_DESCRIPTOR_READ";
+    public static final String BLE_DESCRIPTOR_WRITE =
+            "com.android.cts.verifier.bluetooth.BLE_DESCRIPTOR_WRITE";
+    public static final String BLE_RELIABLE_WRITE_COMPLETED =
+            "com.android.cts.verifier.bluetooth.BLE_RELIABLE_WRITE_COMPLETED";
+    public static final String BLE_READ_REMOTE_RSSI =
+            "com.android.cts.verifier.bluetooth.BLE_READ_REMOTE_RSSI";
+
+    public static final String EXTRA_COMMAND =
+            "com.android.cts.verifier.bluetooth.EXTRA_COMMAND";
+    public static final String EXTRA_WRITE_VALUE =
+            "com.android.cts.verifier.bluetooth.EXTRA_WRITE_VALUE";
+    public static final String EXTRA_BOOL =
+            "com.android.cts.verifier.bluetooth.EXTRA_BOOL";
+    public static final String EXTRA_CHARACTERISTIC_VALUE =
+            "com.android.cts.verifier.bluetooth.EXTRA_CHARACTERISTIC_VALUE";
+    public static final String EXTRA_DESCRIPTOR_VALUE =
+            "com.android.cts.verifier.bluetooth.EXTRA_DESCRIPTOR_VALUE";
+    public static final String EXTRA_RSSI_VALUE =
+            "com.android.cts.verifier.bluetooth.EXTRA_RSSI_VALUE";
+
+    private static final UUID SERVICE_UUID =
+            UUID.fromString("00009999-0000-1000-8000-00805f9b34fb");
+    private static final UUID CHARACTERISTIC_UUID =
+            UUID.fromString("00009998-0000-1000-8000-00805f9b34fb");
+    private static final UUID UPDATE_CHARACTERISTIC_UUID =
+            UUID.fromString("00009997-0000-1000-8000-00805f9b34fb");
+    private static final UUID DESCRIPTOR_UUID =
+            UUID.fromString("00009996-0000-1000-8000-00805f9b34fb");
+
+    private BluetoothManager mBluetoothManager;
+    private BluetoothAdapter mBluetoothAdapter;
+    private BluetoothDevice mDevice;
+    private BluetoothGatt mBluetoothGatt;
+    private Handler mHandler;
+
+    @Override
+    public void onCreate() {
+        super.onCreate();
+
+        mBluetoothManager = (BluetoothManager) getSystemService(Context.BLUETOOTH_SERVICE);
+        mBluetoothAdapter = mBluetoothManager.getAdapter();
+        mHandler = new Handler();
+    }
+
+    @Override
+    public int onStartCommand(Intent intent, int flags, int startId) {
+        if (intent != null) handleIntent(intent);
+        return START_NOT_STICKY;
+    }
+
+    @Override
+    public IBinder onBind(Intent intent) {
+        return null;
+    }
+
+    @Override
+    public void onDestroy() {
+        super.onDestroy();
+        mBluetoothGatt.disconnect();
+        mBluetoothGatt.close();
+    }
+
+    private void handleIntent(Intent intent) {
+        int command = intent.getIntExtra(EXTRA_COMMAND, -1);
+        String address = intent.getStringExtra(BluetoothDevice.EXTRA_DEVICE); // sometimes null
+        String writeValue = intent.getStringExtra(EXTRA_WRITE_VALUE); // sometimes null
+        boolean enable = intent.getBooleanExtra(EXTRA_BOOL, false);
+        BluetoothGattService service;
+        BluetoothGattCharacteristic characteristic;
+        BluetoothGattDescriptor descriptor;
+
+        switch (command) {
+            case COMMAND_CONNECT:
+                mDevice = mBluetoothAdapter.getRemoteDevice(address);
+                mBluetoothGatt = mDevice.connectGatt(this, false, mGattCallbacks);
+                break;
+            case COMMAND_DISCONNECT:
+                if (mBluetoothGatt != null) mBluetoothGatt.disconnect();
+                break;
+            case COMMAND_DISCOVER_SERVICE:
+                if (mBluetoothGatt != null) mBluetoothGatt.discoverServices();
+                break;
+            case COMMAND_READ_RSSI:
+                if (mBluetoothGatt != null) mBluetoothGatt.readRemoteRssi();
+                break;
+            case COMMAND_WRITE_CHARACTERISTIC:
+                writeCharacteristic(writeValue);
+                break;
+            case COMMAND_READ_CHARACTERISTIC:
+                readCharacteristic();
+                break;
+            case COMMAND_WRITE_DESCRIPTOR:
+                writeDescriptor(writeValue);
+                break;
+            case COMMAND_READ_DESCRIPTOR:
+                readDescriptor();
+                break;
+            case COMMAND_SET_NOTIFICATION:
+                setNotification(enable);
+                break;
+            case COMMAND_BEGIN_WRITE:
+                if (mBluetoothGatt != null) mBluetoothGatt.beginReliableWrite();
+                break;
+            case COMMAND_EXECUTE_WRITE:
+                if (mBluetoothGatt != null) mBluetoothGatt.executeReliableWrite();
+                break;
+            case COMMAND_ABORT_RELIABLE:
+                if (mBluetoothGatt != null) mBluetoothGatt.abortReliableWrite(mDevice);
+                break;
+            default:
+                showMessage("Unrecognized command: " + command);
+                break;
+        }
+    }
+
+    private void writeCharacteristic(String writeValue) {
+        BluetoothGattCharacteristic characteristic = getCharacteristic(CHARACTERISTIC_UUID);
+        if (characteristic == null) return;
+        characteristic.setValue(writeValue);
+        mBluetoothGatt.writeCharacteristic(characteristic);
+    }
+
+    private void readCharacteristic() {
+        BluetoothGattCharacteristic characteristic = getCharacteristic(CHARACTERISTIC_UUID);
+        if (characteristic != null) mBluetoothGatt.readCharacteristic(characteristic);
+    }
+
+    private void writeDescriptor(String writeValue) {
+        BluetoothGattDescriptor descriptor = getDescriptor();
+        if (descriptor == null) return;
+        descriptor.setValue(writeValue.getBytes());
+        mBluetoothGatt.writeDescriptor(descriptor);
+    }
+
+    private void readDescriptor() {
+        BluetoothGattDescriptor descriptor = getDescriptor();
+        if (descriptor != null) mBluetoothGatt.readDescriptor(descriptor);
+    }
+
+    private void setNotification(boolean enable) {
+        BluetoothGattCharacteristic characteristic = getCharacteristic(UPDATE_CHARACTERISTIC_UUID);
+        if (characteristic != null)
+            mBluetoothGatt.setCharacteristicNotification(characteristic, enable);
+    }
+
+    private void notifyConnected() {
+        Intent intent = new Intent(BLE_BLUETOOTH_CONNECTED);
+        sendBroadcast(intent);
+    }
+
+    private void notifyDisconnected() {
+        Intent intent = new Intent(BLE_BLUETOOTH_DISCONNECTED);
+        sendBroadcast(intent);
+    }
+
+    private void notifyServicesDiscovered() {
+        Intent intent = new Intent(BLE_SERVICES_DISCOVERED);
+        sendBroadcast(intent);
+    }
+
+    private void notifyCharacteristicRead(String value) {
+        Intent intent = new Intent(BLE_CHARACTERISTIC_READ);
+        intent.putExtra(EXTRA_CHARACTERISTIC_VALUE, value);
+        sendBroadcast(intent);
+    }
+
+    private void notifyCharacteristicWrite() {
+        Intent intent = new Intent(BLE_CHARACTERISTIC_WRITE);
+        sendBroadcast(intent);
+    }
+
+    private void notifyCharacteristicChanged(String value) {
+        Intent intent = new Intent(BLE_CHARACTERISTIC_CHANGED);
+        intent.putExtra(EXTRA_CHARACTERISTIC_VALUE, value);
+        sendBroadcast(intent);
+    }
+
+    private void notifyDescriptorRead(String value) {
+        Intent intent = new Intent(BLE_DESCRIPTOR_READ);
+        intent.putExtra(EXTRA_DESCRIPTOR_VALUE, value);
+        sendBroadcast(intent);
+    }
+
+    private void notifyDescriptorWrite() {
+        Intent intent = new Intent(BLE_DESCRIPTOR_WRITE);
+        sendBroadcast(intent);
+    }
+
+    private void notifyReliableWriteCompleted() {
+        Intent intent = new Intent(BLE_RELIABLE_WRITE_COMPLETED);
+        sendBroadcast(intent);
+    }
+
+    private void notifyReadRemoteRssi(int rssi) {
+        Intent intent = new Intent(BLE_READ_REMOTE_RSSI);
+        intent.putExtra(EXTRA_RSSI_VALUE, rssi);
+        sendBroadcast(intent);
+    }
+
+    private BluetoothGattService getService() {
+        if (mBluetoothGatt == null) return null;
+
+        BluetoothGattService service = mBluetoothGatt.getService(SERVICE_UUID);
+        if (service == null) {
+            showMessage("Service not found");
+            return null;
+        }
+        return service;
+    }
+
+    private BluetoothGattCharacteristic getCharacteristic(UUID uuid) {
+        BluetoothGattService service = getService();
+        if (service == null) return null;
+
+        BluetoothGattCharacteristic characteristic = service.getCharacteristic(uuid);
+        if (characteristic == null) {
+            showMessage("Characteristic not found");
+            return null;
+        }
+        return characteristic;
+    }
+
+    private BluetoothGattDescriptor getDescriptor() {
+        BluetoothGattCharacteristic characteristic = getCharacteristic(CHARACTERISTIC_UUID);
+        if (characteristic == null) return null;
+
+        BluetoothGattDescriptor descriptor = characteristic.getDescriptor(DESCRIPTOR_UUID);
+        if (descriptor == null) {
+            showMessage("Descriptor not found");
+            return null;
+        }
+        return descriptor;
+    }
+
+    private void showMessage(final String msg) {
+        mHandler.post(new Runnable() {
+            public void run() {
+                Toast.makeText(BleClientService.this, msg, Toast.LENGTH_SHORT).show();
+            }
+        });
+    }
+
+    private final BluetoothGattCallback mGattCallbacks = new BluetoothGattCallback() {
+        @Override
+        public void onConnectionStateChange(BluetoothGatt gatt, int status, int newState) {
+            if (DEBUG) Log.d(TAG, "onConnectionStateChange");
+            if (status == BluetoothGatt.GATT_SUCCESS) {
+                if (newState == BluetoothProfile.STATE_CONNECTED) notifyConnected();
+                else if (status == BluetoothProfile.STATE_DISCONNECTED) {
+                    notifyDisconnected();
+                    showMessage("Bluetooth LE disconnected");
+                }
+            }
+        }
+
+        @Override
+        public void onServicesDiscovered(BluetoothGatt gatt, int status) {
+            if ((status == BluetoothGatt.GATT_SUCCESS) &&
+                (mBluetoothGatt.getService(SERVICE_UUID) != null)) {
+                notifyServicesDiscovered();
+            }
+        }
+
+        @Override
+        public void onCharacteristicRead(BluetoothGatt gatt,
+                                         BluetoothGattCharacteristic characteristic, int status) {
+            if ((status == BluetoothGatt.GATT_SUCCESS) &&
+                (characteristic.getUuid().equals(CHARACTERISTIC_UUID))) {
+                notifyCharacteristicRead(characteristic.getStringValue(0));
+            }
+        }
+
+        @Override
+        public void onCharacteristicWrite(BluetoothGatt gatt,
+                                          BluetoothGattCharacteristic characteristic, int status) {
+            if (DEBUG) Log.d(TAG, "onCharacteristicWrite: characteristic.val=" + characteristic.getStringValue(0)
+                                  + " status=" + status);
+            BluetoothGattCharacteristic mCharacteristic = getCharacteristic(CHARACTERISTIC_UUID);
+            if ((status == BluetoothGatt.GATT_SUCCESS) &&
+                (characteristic.getStringValue(0).equals(mCharacteristic.getStringValue(0)))) {
+                notifyCharacteristicWrite();
+            }
+        }
+
+        @Override
+        public void onCharacteristicChanged(BluetoothGatt gatt,
+                                            BluetoothGattCharacteristic characteristic) {
+            if (characteristic.getUuid().equals(UPDATE_CHARACTERISTIC_UUID))
+                notifyCharacteristicChanged(characteristic.getStringValue(0));
+        }
+
+        @Override
+        public void onDescriptorRead(BluetoothGatt gatt, BluetoothGattDescriptor descriptor,
+                                     int status) {
+            if ((status == BluetoothGatt.GATT_SUCCESS) &&
+                (descriptor.getUuid().equals(DESCRIPTOR_UUID))) {
+                notifyDescriptorRead(new String(descriptor.getValue()));
+            }
+        }
+
+        @Override
+        public void onDescriptorWrite(BluetoothGatt gatt, BluetoothGattDescriptor descriptor,
+                                      int status) {
+            if ((status == BluetoothGatt.GATT_SUCCESS) &&
+                (descriptor.getUuid().equals(DESCRIPTOR_UUID))) {
+                notifyDescriptorWrite();
+            }
+        }
+
+        @Override
+        public void onReliableWriteCompleted(BluetoothGatt gatt, int status) {
+            if (status == BluetoothGatt.GATT_SUCCESS) notifyReliableWriteCompleted();
+        }
+
+        @Override
+        public void onReadRemoteRssi(BluetoothGatt gatt, int rssi, int status) {
+            if (status == BluetoothGatt.GATT_SUCCESS) notifyReadRemoteRssi(rssi);
+        }
+    };
+}
\ No newline at end of file
diff --git a/apps/CtsVerifier/src/com/android/cts/verifier/bluetooth/BleClientTestActivity.java b/apps/CtsVerifier/src/com/android/cts/verifier/bluetooth/BleClientTestActivity.java
new file mode 100644
index 0000000..a13d934
--- /dev/null
+++ b/apps/CtsVerifier/src/com/android/cts/verifier/bluetooth/BleClientTestActivity.java
@@ -0,0 +1,36 @@
+/*
+ * Copyright (C) 2011 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.android.cts.verifier.bluetooth;
+
+import com.android.cts.verifier.ManifestTestListAdapter;
+import com.android.cts.verifier.PassFailButtons;
+import com.android.cts.verifier.R;
+
+import android.os.Bundle;
+
+public class BleClientTestActivity extends PassFailButtons.TestListActivity {
+
+    @Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        setContentView(R.layout.pass_fail_list);
+        setPassFailButtonClickListeners();
+        setInfoResources(R.string.ble_client_test_name, R.string.ble_client_test_info, -1);
+
+        setTestListAdapter(new ManifestTestListAdapter(this, getClass().getName()));
+    }
+}
diff --git a/apps/CtsVerifier/src/com/android/cts/verifier/bluetooth/BleDiscoverServiceActivity.java b/apps/CtsVerifier/src/com/android/cts/verifier/bluetooth/BleDiscoverServiceActivity.java
new file mode 100644
index 0000000..6896b04
--- /dev/null
+++ b/apps/CtsVerifier/src/com/android/cts/verifier/bluetooth/BleDiscoverServiceActivity.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2013 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.android.cts.verifier.bluetooth;
+
+public class BleDiscoverServiceActivity extends BleButtonActivity {
+    public BleDiscoverServiceActivity() {
+        super(BleButtonActivity.DISCOVER_SERVICE);
+    }
+}
\ No newline at end of file
diff --git a/apps/CtsVerifier/src/com/android/cts/verifier/bluetooth/BleNotifyCharacteristicActivity.java b/apps/CtsVerifier/src/com/android/cts/verifier/bluetooth/BleNotifyCharacteristicActivity.java
new file mode 100644
index 0000000..e0c79bf
--- /dev/null
+++ b/apps/CtsVerifier/src/com/android/cts/verifier/bluetooth/BleNotifyCharacteristicActivity.java
@@ -0,0 +1,92 @@
+/*
+ * Copyright (C) 2013 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.android.cts.verifier.bluetooth;
+
+import com.android.cts.verifier.PassFailButtons;
+import com.android.cts.verifier.R;
+
+import android.content.BroadcastReceiver;
+import android.content.Context;
+import android.content.Intent;
+import android.content.IntentFilter;
+import android.os.Bundle;
+import android.view.View;
+import android.view.View.OnClickListener;
+import android.widget.Button;
+import android.widget.TextView;
+import android.widget.Toast;
+
+public class BleNotifyCharacteristicActivity extends PassFailButtons.Activity {
+
+    private boolean mEnable;
+
+    @Override
+    public void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        setContentView(R.layout.ble_notify_characteristic);
+        setPassFailButtonClickListeners();
+        setInfoResources(R.string.ble_notify_characteristic_name,
+                         R.string.ble_notify_characteristic_info, -1);
+
+        mEnable = false;
+
+        ((Button) findViewById(R.id.ble_notify)).setOnClickListener(new OnClickListener() {
+            @Override
+            public void onClick(View v) {
+                mEnable = !mEnable;
+                if (mEnable) ((Button) v).setText(getString(R.string.ble_stop_notification));
+                else ((Button) v).setText(getString(R.string.ble_begin_notification));
+
+                Intent intent = new Intent(BleNotifyCharacteristicActivity.this,
+                                           BleClientService.class);
+                intent.putExtra(BleClientService.EXTRA_COMMAND,
+                                BleClientService.COMMAND_SET_NOTIFICATION);
+                intent.putExtra(BleClientService.EXTRA_BOOL, mEnable);
+                startService(intent);
+            }
+        });
+    }
+
+    @Override
+    public void onResume() {
+        super.onResume();
+        IntentFilter filter = new IntentFilter();
+        filter.addAction(BleClientService.BLE_CHARACTERISTIC_CHANGED);
+        registerReceiver(onBroadcast, filter);
+    }
+
+    @Override
+    public void onPause() {
+        super.onPause();
+        unregisterReceiver(onBroadcast);
+        mEnable = false;
+        Intent intent = new Intent(BleNotifyCharacteristicActivity.this,
+                                   BleClientService.class);
+        intent.putExtra(BleClientService.EXTRA_COMMAND,
+                        BleClientService.COMMAND_SET_NOTIFICATION);
+        intent.putExtra(BleClientService.EXTRA_BOOL, mEnable);
+        startService(intent);
+    }
+
+    private BroadcastReceiver onBroadcast = new BroadcastReceiver() {
+        @Override
+        public void onReceive(Context context, Intent intent) {
+            String value = intent.getStringExtra(BleClientService.EXTRA_CHARACTERISTIC_VALUE);
+            ((TextView) findViewById(R.id.ble_notify_text)).setText(value);
+        }
+    };
+}
\ No newline at end of file
diff --git a/apps/CtsVerifier/src/com/android/cts/verifier/bluetooth/BleReadRssiActivity.java b/apps/CtsVerifier/src/com/android/cts/verifier/bluetooth/BleReadRssiActivity.java
new file mode 100644
index 0000000..800499c
--- /dev/null
+++ b/apps/CtsVerifier/src/com/android/cts/verifier/bluetooth/BleReadRssiActivity.java
@@ -0,0 +1,76 @@
+/*
+ * Copyright (C) 2013 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.android.cts.verifier.bluetooth;
+
+import com.android.cts.verifier.PassFailButtons;
+import com.android.cts.verifier.R;
+
+import android.content.BroadcastReceiver;
+import android.content.Context;
+import android.content.Intent;
+import android.content.IntentFilter;
+import android.os.Bundle;
+import android.view.View;
+import android.view.View.OnClickListener;
+import android.widget.Button;
+import android.widget.EditText;
+import android.widget.TextView;
+import android.widget.Toast;
+
+public class BleReadRssiActivity extends PassFailButtons.Activity {
+
+    @Override
+    public void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        setContentView(R.layout.ble_read_rssi);
+        setPassFailButtonClickListeners();
+        setInfoResources(R.string.ble_read_rssi_name,
+                         R.string.ble_read_rssi_info, -1);
+
+        ((Button) findViewById(R.id.ble_read_rssi)).setOnClickListener(new OnClickListener() {
+            @Override
+            public void onClick(View v) {
+                Intent intent = new Intent(BleReadRssiActivity.this, BleClientService.class);
+                intent.putExtra(BleClientService.EXTRA_COMMAND,
+                                BleClientService.COMMAND_READ_RSSI);
+                startService(intent);
+            }
+        });
+    }
+
+    @Override
+    public void onResume() {
+        super.onResume();
+        IntentFilter filter = new IntentFilter();
+        filter.addAction(BleClientService.BLE_READ_REMOTE_RSSI);
+        registerReceiver(onBroadcast, filter);
+    }
+
+    @Override
+    public void onPause() {
+        super.onPause();
+        unregisterReceiver(onBroadcast);
+    }
+
+    private BroadcastReceiver onBroadcast = new BroadcastReceiver() {
+        @Override
+        public void onReceive(Context context, Intent intent) {
+            int rssi = intent.getIntExtra(BleClientService.EXTRA_RSSI_VALUE, 128);
+            ((TextView) findViewById(R.id.ble_rssi_text)).setText(Integer.toString(rssi));
+        }
+    };
+}
\ No newline at end of file
diff --git a/apps/CtsVerifier/src/com/android/cts/verifier/bluetooth/BleReadWriteActivity.java b/apps/CtsVerifier/src/com/android/cts/verifier/bluetooth/BleReadWriteActivity.java
new file mode 100644
index 0000000..22233ef
--- /dev/null
+++ b/apps/CtsVerifier/src/com/android/cts/verifier/bluetooth/BleReadWriteActivity.java
@@ -0,0 +1,127 @@
+/*
+ * Copyright (C) 2013 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.android.cts.verifier.bluetooth;
+
+import com.android.cts.verifier.PassFailButtons;
+import com.android.cts.verifier.R;
+
+import android.content.BroadcastReceiver;
+import android.content.Context;
+import android.content.Intent;
+import android.content.IntentFilter;
+import android.os.Bundle;
+import android.view.View;
+import android.view.View.OnClickListener;
+import android.widget.Button;
+import android.widget.EditText;
+import android.widget.TextView;
+import android.widget.Toast;
+
+class BleReadWriteActivity extends PassFailButtons.Activity {
+
+    static final int CHARACTERISTIC = 0;
+    static final int DESCRIPTOR = 1;
+
+    private int mWriteCommand;
+    private int mReadCommand;
+    private String mWriteFilter;
+    private String mReadFilter;
+    private String mExtraValue;
+    private int mName;
+    private EditText mEditText;
+
+    BleReadWriteActivity(int target) {
+        if (target == CHARACTERISTIC) {
+            mWriteCommand = BleClientService.COMMAND_WRITE_CHARACTERISTIC;
+            mReadCommand = BleClientService.COMMAND_READ_CHARACTERISTIC;
+            mWriteFilter = BleClientService.BLE_CHARACTERISTIC_WRITE;
+            mReadFilter = BleClientService.BLE_CHARACTERISTIC_READ;
+            mExtraValue = BleClientService.EXTRA_CHARACTERISTIC_VALUE;
+            mName = R.string.ble_client_characteristic_name;
+        } else if (target == DESCRIPTOR) {
+            mWriteCommand = BleClientService.COMMAND_WRITE_DESCRIPTOR;
+            mReadCommand = BleClientService.COMMAND_READ_DESCRIPTOR;
+            mWriteFilter = BleClientService.BLE_DESCRIPTOR_WRITE;
+            mReadFilter = BleClientService.BLE_DESCRIPTOR_READ;
+            mExtraValue = BleClientService.EXTRA_DESCRIPTOR_VALUE;
+            mName = R.string.ble_client_descriptor_name;
+        }
+    }
+
+    @Override
+    public void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        setContentView(R.layout.ble_client_read_write);
+        setPassFailButtonClickListeners();
+        setInfoResources(mName, R.string.ble_read_write_info, -1);
+
+        mEditText = (EditText) findViewById(R.id.write_text);
+
+        ((Button) findViewById(R.id.ble_write)).setOnClickListener(new OnClickListener() {
+            @Override
+            public void onClick(View v) {
+                String writeValue = mEditText.getText().toString();
+                Intent intent = new Intent(BleReadWriteActivity.this, BleClientService.class);
+                intent.putExtra(BleClientService.EXTRA_COMMAND, mWriteCommand);
+                intent.putExtra(BleClientService.EXTRA_WRITE_VALUE, writeValue);
+                startService(intent);
+                mEditText.setText("");
+            }
+        });
+
+        ((Button) findViewById(R.id.ble_read)).setOnClickListener(new OnClickListener() {
+            @Override
+            public void onClick(View v) {
+                Intent intent = new Intent(BleReadWriteActivity.this, BleClientService.class);
+                intent.putExtra(BleClientService.EXTRA_COMMAND, mReadCommand);
+                startService(intent);
+            }
+        });
+    }
+
+    @Override
+    public void onResume() {
+        super.onResume();
+        IntentFilter filter = new IntentFilter();
+        filter.addAction(mReadFilter);
+        filter.addAction(mWriteFilter);
+        registerReceiver(onBroadcast, filter);
+    }
+
+    @Override
+    public void onPause() {
+        super.onPause();
+        unregisterReceiver(onBroadcast);
+    }
+
+    private void showMessage(String msg) {
+        Toast.makeText(this, msg, Toast.LENGTH_SHORT).show();
+    }
+
+    private BroadcastReceiver onBroadcast = new BroadcastReceiver() {
+        @Override
+        public void onReceive(Context context, Intent intent) {
+            String action = intent.getAction();
+            if (action == mWriteFilter)
+                showMessage("Write successful callback");
+            else if (action == mReadFilter) {
+                String value = intent.getStringExtra(mExtraValue);
+                ((TextView) findViewById(R.id.read_text)).setText(value);
+            }
+        }
+    };
+}
\ No newline at end of file
diff --git a/apps/CtsVerifier/src/com/android/cts/verifier/bluetooth/BleReliableWriteActivity.java b/apps/CtsVerifier/src/com/android/cts/verifier/bluetooth/BleReliableWriteActivity.java
new file mode 100644
index 0000000..c7460b5
--- /dev/null
+++ b/apps/CtsVerifier/src/com/android/cts/verifier/bluetooth/BleReliableWriteActivity.java
@@ -0,0 +1,117 @@
+/*
+ * Copyright (C) 2013 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.android.cts.verifier.bluetooth;
+
+import com.android.cts.verifier.PassFailButtons;
+import com.android.cts.verifier.R;
+
+import android.content.BroadcastReceiver;
+import android.content.Context;
+import android.content.Intent;
+import android.content.IntentFilter;
+import android.os.Bundle;
+import android.view.View;
+import android.view.View.OnClickListener;
+import android.widget.Button;
+import android.widget.EditText;
+import android.widget.Toast;
+
+public class BleReliableWriteActivity extends PassFailButtons.Activity {
+
+    EditText mEditText;
+
+    @Override
+    public void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        setContentView(R.layout.ble_reliable_write);
+        setPassFailButtonClickListeners();
+        setInfoResources(R.string.ble_reliable_write_name, R.string.ble_reliable_write_info, -1);
+        getPassButton().setEnabled(false);
+        ((Button) findViewById(R.id.ble_execute)).setEnabled(false);
+
+        mEditText = (EditText) findViewById(R.id.write_text);
+
+        ((Button) findViewById(R.id.ble_begin)).setOnClickListener(new OnClickListener() {
+            @Override
+            public void onClick(View v) {
+                Intent intent = new Intent(BleReliableWriteActivity.this, BleClientService.class);
+                intent.putExtra(BleClientService.EXTRA_COMMAND,
+                                BleClientService.COMMAND_BEGIN_WRITE);
+                startService(intent);
+            }
+        });
+
+        ((Button) findViewById(R.id.ble_write)).setOnClickListener(new OnClickListener() {
+            @Override
+            public void onClick(View v) {
+                String writeValue = mEditText.getText().toString();
+                Intent intent = new Intent(BleReliableWriteActivity.this, BleClientService.class);
+                intent.putExtra(BleClientService.EXTRA_COMMAND,
+                                BleClientService.COMMAND_WRITE_CHARACTERISTIC);
+                intent.putExtra(BleClientService.EXTRA_WRITE_VALUE, writeValue);
+                startService(intent);
+                mEditText.setText("");
+            }
+        });
+
+        ((Button) findViewById(R.id.ble_execute)).setOnClickListener(new OnClickListener() {
+            @Override
+            public void onClick(View v) {
+                Intent intent = new Intent(BleReliableWriteActivity.this, BleClientService.class);
+                intent.putExtra(BleClientService.EXTRA_COMMAND,
+                                BleClientService.COMMAND_EXECUTE_WRITE);
+                startService(intent);
+            }
+        });
+    }
+
+    @Override
+    public void onResume() {
+        super.onResume();
+        IntentFilter filter = new IntentFilter();
+        filter.addAction(BleClientService.BLE_CHARACTERISTIC_WRITE);
+        filter.addAction(BleClientService.BLE_RELIABLE_WRITE_COMPLETED);
+        registerReceiver(onBroadcast, filter);
+    }
+
+    @Override
+    public void onPause() {
+        super.onPause();
+        unregisterReceiver(onBroadcast);
+        Intent intent = new Intent(this, BleClientService.class);
+        intent.putExtra(BleClientService.EXTRA_COMMAND, BleClientService.COMMAND_ABORT_RELIABLE);
+        startService(intent);
+    }
+
+    private void showMessage(String msg) {
+        Toast.makeText(this, msg, Toast.LENGTH_SHORT).show();
+    }
+
+    private BroadcastReceiver onBroadcast = new BroadcastReceiver() {
+        @Override
+        public void onReceive(Context context, Intent intent) {
+            String action = intent.getAction();
+            if (action == BleClientService.BLE_CHARACTERISTIC_WRITE) {
+                showMessage("Write value verified.");
+                ((Button) findViewById(R.id.ble_execute)).setEnabled(true);
+            } else if (action == BleClientService.BLE_RELIABLE_WRITE_COMPLETED) {
+                showMessage("Reliable write completed.");
+                getPassButton().setEnabled(true);
+            }
+        }
+    };
+}
\ No newline at end of file
diff --git a/apps/CtsVerifier/src/com/android/cts/verifier/bluetooth/BleServerService.java b/apps/CtsVerifier/src/com/android/cts/verifier/bluetooth/BleServerService.java
new file mode 100644
index 0000000..5606041
--- /dev/null
+++ b/apps/CtsVerifier/src/com/android/cts/verifier/bluetooth/BleServerService.java
@@ -0,0 +1,329 @@
+/*
+ * Copyright (C) 2013 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.android.cts.verifier.bluetooth;
+
+import java.util.Date;
+import java.util.List;
+import java.util.Timer;
+import java.util.TimerTask;
+import java.util.UUID;
+
+import android.app.Service;
+import android.bluetooth.BluetoothAdapter;
+import android.bluetooth.BluetoothDevice;
+import android.bluetooth.BluetoothGatt;
+import android.bluetooth.BluetoothGattCharacteristic;
+import android.bluetooth.BluetoothGattDescriptor;
+import android.bluetooth.BluetoothGattServer;
+import android.bluetooth.BluetoothGattServerCallback;
+import android.bluetooth.BluetoothGattService;
+import android.bluetooth.BluetoothManager;
+import android.bluetooth.BluetoothProfile;
+import android.content.Context;
+import android.content.Intent;
+import android.os.Handler;
+import android.os.IBinder;
+import android.util.Log;
+import android.widget.Toast;
+
+public class BleServerService extends Service {
+
+    public static final boolean DEBUG = true;
+    public static final String TAG = "BleServerService";
+
+    public static final int COMMAND_ADD_SERVICE = 0;
+    public static final int COMMAND_WRITE_CHARACTERISTIC = 1;
+    public static final int COMMAND_WRITE_DESCRIPTOR = 2;
+
+    public static final String BLE_SERVER_CONNECTED =
+            "com.android.cts.verifier.bluetooth.BLE_SERVER_CONNECTED";
+    public static final String BLE_SERVER_DISCONNECTED =
+            "com.android.cts.verifier.bluetooth.BLE_SERVER_DISCONNECTED";
+    public static final String BLE_SERVICE_ADDED =
+            "com.android.cts.verifier.bluetooth.BLE_SERVICE_ADDED";
+    public static final String BLE_CHARACTERISTIC_READ_REQUEST =
+            "com.android.cts.verifier.bluetooth.BLE_CHARACTERISTIC_READ_REQUEST";
+    public static final String BLE_CHARACTERISTIC_WRITE_REQUEST =
+            "com.android.cts.verifier.bluetooth.BLE_CHARACTERISTIC_WRITE_REQUEST";
+    public static final String BLE_DESCRIPTOR_READ_REQUEST =
+            "com.android.cts.verifier.bluetooth.BLE_DESCRIPTOR_READ_REQUEST";
+    public static final String BLE_DESCRIPTOR_WRITE_REQUEST =
+            "com.android.cts.verifier.bluetooth.BLE_DESCRIPTOR_WRITE_REQUEST";
+    public static final String BLE_EXECUTE_WRITE =
+            "com.android.cts.verifier.bluetooth.BLE_EXECUTE_WRITE";
+
+    private static final UUID SERVICE_UUID =
+            UUID.fromString("00009999-0000-1000-8000-00805f9b34fb");
+    private static final UUID CHARACTERISTIC_UUID =
+            UUID.fromString("00009998-0000-1000-8000-00805f9b34fb");
+    private static final UUID UPDATE_CHARACTERISTIC_UUID =
+            UUID.fromString("00009997-0000-1000-8000-00805f9b34fb");
+    private static final UUID DESCRIPTOR_UUID =
+            UUID.fromString("00009996-0000-1000-8000-00805f9b34fb");
+
+    private BluetoothManager mBluetoothManager;
+    private BluetoothGattServer mGattServer;
+    private BluetoothGattService mService;
+    private BluetoothDevice mDevice;
+    private Timer mNotificationTimer;
+    private Handler mHandler;
+    private String mReliableWriteValue;
+
+    @Override
+    public void onCreate() {
+        super.onCreate();
+
+        mBluetoothManager = (BluetoothManager) getSystemService(Context.BLUETOOTH_SERVICE);
+        mGattServer = mBluetoothManager.openGattServer(this, mCallbacks);
+        mService = createService();
+        mGattServer.addService(mService);
+        mDevice = null;
+        mReliableWriteValue = null;
+
+        mHandler = new Handler();
+    }
+
+    @Override
+    public int onStartCommand(Intent intent, int flags, int startId) {
+        return START_NOT_STICKY;
+    }
+
+    @Override
+    public IBinder onBind(Intent intent) {
+        return null;
+    }
+
+    @Override
+    public void onDestroy() {
+        super.onDestroy();
+        if (mDevice != null) mGattServer.cancelConnection(mDevice);
+        mGattServer.close();
+    }
+
+    private void writeCharacteristic(String writeValue) {
+        BluetoothGattCharacteristic characteristic = getCharacteristic(CHARACTERISTIC_UUID);
+        if (characteristic != null) return;
+        characteristic.setValue(writeValue);
+    }
+
+    private void writeDescriptor(String writeValue) {
+        BluetoothGattDescriptor descriptor = getDescriptor();
+        if (descriptor == null) return;
+        descriptor.setValue(writeValue.getBytes());
+    }
+
+    private void notifyConnected() {
+        if (DEBUG) Log.d(TAG, "notifyConnected");
+        Intent intent = new Intent(BLE_SERVER_CONNECTED);
+        sendBroadcast(intent);
+    }
+
+    private void notifyDisconnected() {
+        if (DEBUG) Log.d(TAG, "notifyDisconnected");
+        Intent intent = new Intent(BLE_SERVER_DISCONNECTED);
+        sendBroadcast(intent);
+    }
+
+    private void notifyServiceAdded() {
+        if (DEBUG) Log.d(TAG, "notifyServiceAdded");
+        Intent intent = new Intent(BLE_SERVICE_ADDED);
+        sendBroadcast(intent);
+    }
+
+    private void notifyCharacteristicReadRequest() {
+        if (DEBUG) Log.d(TAG, "notifyCharacteristicReadRequest");
+        Intent intent = new Intent(BLE_CHARACTERISTIC_READ_REQUEST);
+        sendBroadcast(intent);
+    }
+
+    private void notifyCharacteristicWriteRequest() {
+        if (DEBUG) Log.d(TAG, "notifyCharacteristicWriteRequest");
+        Intent intent = new Intent(BLE_CHARACTERISTIC_WRITE_REQUEST);
+        sendBroadcast(intent);
+    }
+
+    private void notifyDescriptorReadRequest() {
+        if (DEBUG) Log.d(TAG, "notifyDescriptorReadRequest");
+        Intent intent = new Intent(BLE_DESCRIPTOR_READ_REQUEST);
+        sendBroadcast(intent);
+    }
+
+    private void notifyDescriptorWriteRequest() {
+        if (DEBUG) Log.d(TAG, "notifyDescriptorWriteRequest");
+        Intent intent = new Intent(BLE_DESCRIPTOR_WRITE_REQUEST);
+        sendBroadcast(intent);
+    }
+
+    private void notifyExecuteWrite() {
+        if (DEBUG) Log.d(TAG, "notifyExecuteWrite");
+        Intent intent = new Intent(BLE_EXECUTE_WRITE);
+        sendBroadcast(intent);
+    }
+
+    private BluetoothGattCharacteristic getCharacteristic(UUID uuid) {
+        BluetoothGattCharacteristic characteristic =
+                mService.getCharacteristic(uuid);
+        if (characteristic == null) {
+            showMessage("Characteristic not found");
+            return null;
+        }
+        return characteristic;
+    }
+
+    private BluetoothGattDescriptor getDescriptor() {
+        BluetoothGattCharacteristic characteristic = getCharacteristic(CHARACTERISTIC_UUID);
+        if (characteristic == null) return null;
+
+        BluetoothGattDescriptor descriptor = characteristic.getDescriptor(DESCRIPTOR_UUID);
+        if (descriptor == null) {
+            showMessage("Descriptor not found");
+            return null;
+        }
+        return descriptor;
+    }
+
+    private BluetoothGattService createService() {
+        BluetoothGattService service =
+                new BluetoothGattService(SERVICE_UUID, BluetoothGattService.SERVICE_TYPE_PRIMARY);
+        BluetoothGattCharacteristic characteristic =
+                new BluetoothGattCharacteristic(CHARACTERISTIC_UUID, 0x0A, 0x11);
+        BluetoothGattDescriptor descriptor = new BluetoothGattDescriptor(DESCRIPTOR_UUID, 0x11);
+        characteristic.addDescriptor(descriptor);
+        service.addCharacteristic(characteristic);
+
+        BluetoothGattCharacteristic notiCharacteristic =
+                new BluetoothGattCharacteristic(UPDATE_CHARACTERISTIC_UUID, 0x10, 0x00);
+        service.addCharacteristic(notiCharacteristic);
+
+        return service;
+    }
+
+    private void beginNotification() {
+        TimerTask task = new TimerTask() {
+            @Override
+            public void run() {
+                BluetoothGattCharacteristic characteristic =
+                        mService.getCharacteristic(UPDATE_CHARACTERISTIC_UUID);
+                if (characteristic == null) return;
+
+                String date = (new Date()).toString();
+                characteristic.setValue(date);
+                mGattServer.notifyCharacteristicChanged(mDevice, characteristic, false);
+            }
+        };
+        mNotificationTimer = new Timer();
+        mNotificationTimer.schedule(task, 0, 1000);
+    }
+
+    private void stopNotification() {
+        if (mNotificationTimer == null) return;
+        mNotificationTimer.cancel();
+        mNotificationTimer = null;
+    }
+
+    private void showMessage(final String msg) {
+        mHandler.post(new Runnable() {
+            public void run() {
+                Toast.makeText(BleServerService.this, msg, Toast.LENGTH_SHORT).show();
+            }
+        });
+    }
+
+    private final BluetoothGattServerCallback mCallbacks = new BluetoothGattServerCallback() {
+        @Override
+        public void onConnectionStateChange(BluetoothDevice device, int status, int newState) {
+            if (DEBUG) Log.d(TAG, "onConnectionStateChange: newState=" + newState);
+            if (status == BluetoothGatt.GATT_SUCCESS) {
+                if (newState == BluetoothProfile.STATE_CONNECTED) {
+                    mDevice = device;
+                    notifyConnected();
+                    beginNotification();
+                } else if (status == BluetoothProfile.STATE_DISCONNECTED) {
+                    stopNotification();
+                    notifyDisconnected();
+                    mDevice = null;
+                }
+            }
+        }
+
+        @Override
+        public void onServiceAdded(int status, BluetoothGattService service) {
+            if (DEBUG) Log.d(TAG, "onServiceAdded()");
+            if (status == BluetoothGatt.GATT_SUCCESS) notifyServiceAdded();
+        }
+
+        @Override
+        public void onCharacteristicReadRequest(BluetoothDevice device, int requestId,
+                            int offset, BluetoothGattCharacteristic characteristic) {
+            if (DEBUG) Log.d(TAG, "onCharacteristicReadRequest()");
+
+            notifyCharacteristicReadRequest();
+            mGattServer.sendResponse(device, requestId, BluetoothGatt.GATT_SUCCESS, 0,
+                                     characteristic.getValue());
+        }
+
+        @Override
+        public void onCharacteristicWriteRequest(BluetoothDevice device, int requestId,
+                                                 BluetoothGattCharacteristic characteristic,
+                                                 boolean preparedWrite, boolean responseNeeded,
+                                                 int offset, byte[] value) {
+            if (DEBUG) Log.d(TAG, "onCharacteristicWriteRequest: preparedWrite=" + preparedWrite);
+
+            notifyCharacteristicWriteRequest();
+            if (preparedWrite) mReliableWriteValue = new String(value);
+            else characteristic.setValue(value);
+
+            if (responseNeeded)
+                mGattServer.sendResponse(device, requestId, BluetoothGatt.GATT_SUCCESS, 0, null);
+        }
+
+        @Override
+        public void onDescriptorReadRequest(BluetoothDevice device, int requestId,
+                                            int offset, BluetoothGattDescriptor descriptor) {
+            if (DEBUG) Log.d(TAG, "onDescriptorReadRequest(): (descriptor == getDescriptor())="
+                                  + (descriptor == getDescriptor()));
+
+            notifyDescriptorReadRequest();
+            mGattServer.sendResponse(device, requestId, BluetoothGatt.GATT_SUCCESS, 0,
+                                     descriptor.getValue());
+        }
+
+        @Override
+        public void onDescriptorWriteRequest(BluetoothDevice device, int requestId,
+                                             BluetoothGattDescriptor descriptor,
+                                             boolean preparedWrite, boolean responseNeeded,
+                                             int offset,  byte[] value) {
+            if (DEBUG) Log.d(TAG, "onDescriptorWriteRequest(): (descriptor == getDescriptor())="
+                                  + (descriptor == getDescriptor()));
+
+            notifyDescriptorWriteRequest();
+            descriptor.setValue(value);
+            if (responseNeeded)
+                mGattServer.sendResponse(device, requestId, BluetoothGatt.GATT_SUCCESS, 0, null);
+        }
+
+        @Override
+        public void onExecuteWrite(BluetoothDevice device, int requestId, boolean execute) {
+            if (DEBUG) Log.d(TAG, "onExecuteWrite");
+            if (execute) {
+                notifyExecuteWrite();
+                getCharacteristic(CHARACTERISTIC_UUID).setValue(mReliableWriteValue);
+                mGattServer.sendResponse(device, requestId, BluetoothGatt.GATT_SUCCESS, 0, null);
+            }
+        }
+    };
+}
\ No newline at end of file
diff --git a/apps/CtsVerifier/src/com/android/cts/verifier/bluetooth/BleServerStartActivity.java b/apps/CtsVerifier/src/com/android/cts/verifier/bluetooth/BleServerStartActivity.java
new file mode 100644
index 0000000..ec31fde
--- /dev/null
+++ b/apps/CtsVerifier/src/com/android/cts/verifier/bluetooth/BleServerStartActivity.java
@@ -0,0 +1,196 @@
+/*
+ * Copyright (C) 2013 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.android.cts.verifier.bluetooth;
+
+import com.android.cts.verifier.PassFailButtons;
+import com.android.cts.verifier.R;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import android.content.BroadcastReceiver;
+import android.content.Context;
+import android.content.Intent;
+import android.content.IntentFilter;
+import android.os.Bundle;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.BaseAdapter;
+import android.widget.ImageView;
+import android.widget.ListView;
+import android.widget.TextView;
+
+public class BleServerStartActivity extends PassFailButtons.Activity {
+
+    private List<Test> mTestList;
+    private TestAdapter mTestAdapter;
+    private int mAllPassed;
+
+    @Override
+    public void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        setContentView(R.layout.ble_server_start);
+        setPassFailButtonClickListeners();
+        setInfoResources(R.string.ble_server_start_name,
+                         R.string.ble_server_start_info, -1);
+        getPassButton().setEnabled(false);
+
+        mTestList = setupTestList();
+        mTestAdapter = new TestAdapter(this, mTestList);
+
+        ListView listView = (ListView) findViewById(R.id.ble_server_tests);
+        listView.setAdapter(mTestAdapter);
+
+        mAllPassed = 0;
+        startService(new Intent(this, BleServerService.class));
+    }
+
+    @Override
+    public void onResume() {
+        super.onResume();
+
+        IntentFilter filter = new IntentFilter();
+        filter.addAction(BleServerService.BLE_SERVICE_ADDED);
+        filter.addAction(BleServerService.BLE_SERVER_CONNECTED);
+        filter.addAction(BleServerService.BLE_CHARACTERISTIC_READ_REQUEST);
+        filter.addAction(BleServerService.BLE_CHARACTERISTIC_WRITE_REQUEST);
+        filter.addAction(BleServerService.BLE_DESCRIPTOR_READ_REQUEST);
+        filter.addAction(BleServerService.BLE_DESCRIPTOR_WRITE_REQUEST);
+        filter.addAction(BleServerService.BLE_EXECUTE_WRITE);
+        filter.addAction(BleServerService.BLE_SERVER_DISCONNECTED);
+        registerReceiver(onBroadcast, filter);
+    }
+
+    @Override
+    public void onPause() {
+        super.onPause();
+        unregisterReceiver(onBroadcast);
+    }
+
+    @Override
+    public void onDestroy() {
+        super.onDestroy();
+        stopService(new Intent(this, BleServerService.class));
+    }
+
+    private List<Test> setupTestList() {
+        ArrayList<Test> testList = new ArrayList<Test>();
+        testList.add(new Test(R.string.ble_server_add_service));
+        testList.add(new Test(R.string.ble_server_receiving_connect));
+        testList.add(new Test(R.string.ble_server_read_characteristic));
+        testList.add(new Test(R.string.ble_server_write_characteristic));
+        testList.add(new Test(R.string.ble_server_read_descriptor));
+        testList.add(new Test(R.string.ble_server_write_descriptor));
+        testList.add(new Test(R.string.ble_server_reliable_write));
+        testList.add(new Test(R.string.ble_server_receiving_disconnect));
+        return testList;
+    }
+
+    class Test {
+        private boolean passed;
+        private int instructions;
+
+        private Test(int instructions) {
+            passed = false;
+            this.instructions = instructions;
+        }
+    }
+
+    private BroadcastReceiver onBroadcast = new BroadcastReceiver() {
+        @Override
+        public void onReceive(Context context, Intent intent) {
+            String action = intent.getAction();
+            if (action == BleServerService.BLE_SERVICE_ADDED) {
+                mTestList.get(0).passed = true;
+                mAllPassed |= 0x01;
+            } else if (action == BleServerService.BLE_SERVER_CONNECTED) {
+                mTestList.get(1).passed = true;
+                mAllPassed |= 0x02;
+            } else if (action == BleServerService.BLE_CHARACTERISTIC_READ_REQUEST) {
+                mTestList.get(2).passed = true;
+                mAllPassed |= 0x04;
+            } else if (action == BleServerService.BLE_CHARACTERISTIC_WRITE_REQUEST) {
+                mTestList.get(3).passed = true;
+                mAllPassed |= 0x08;
+            } else if (action == BleServerService.BLE_DESCRIPTOR_READ_REQUEST) {
+                mTestList.get(4).passed = true;
+                mAllPassed |= 0x10;
+            } else if (action == BleServerService.BLE_DESCRIPTOR_WRITE_REQUEST) {
+                mTestList.get(5).passed = true;
+                mAllPassed |= 0x20;
+            } else if (action == BleServerService.BLE_EXECUTE_WRITE) {
+                mTestList.get(6).passed = true;
+                mAllPassed |= 0x40;
+            } else if (action == BleServerService.BLE_SERVER_DISCONNECTED) {
+                mTestList.get(7).passed = true;
+                mAllPassed |= 0x80;
+            }
+            mTestAdapter.notifyDataSetChanged();
+            if (mAllPassed == 0xFF) getPassButton().setEnabled(true);
+        }
+    };
+
+    class TestAdapter extends BaseAdapter {
+        Context context;
+        List<Test> tests;
+        LayoutInflater inflater;
+
+        public TestAdapter(Context context, List<Test> tests) {
+            this.context = context;
+            inflater = LayoutInflater.from(context);
+            this.tests = tests;
+        }
+
+        @Override
+        public int getCount() {
+            return tests.size();
+        }
+
+        @Override
+        public Object getItem(int position) {
+            return tests.get(position);
+        }
+
+        @Override
+        public long getItemId(int position) {
+            return position;
+        }
+
+        @Override
+        public View getView(int position, View convertView, ViewGroup parent) {
+            ViewGroup vg;
+
+            if (convertView != null) {
+                vg = (ViewGroup) convertView;
+            } else {
+                vg = (ViewGroup) inflater.inflate(R.layout.ble_server_start_item, null);
+            }
+
+            Test test = tests.get(position);
+            if (test.passed) {
+                ((ImageView) vg.findViewById(R.id.status)).setImageResource(R.drawable.fs_good);
+            } else {
+                ((ImageView) vg.findViewById(R.id.status)).
+                                setImageResource(R.drawable.fs_indeterminate);
+            }
+            ((TextView) vg.findViewById(R.id.instructions)).setText(test.instructions);
+
+            return vg;
+        }
+    }
+}
\ No newline at end of file
diff --git a/apps/CtsVerifier/src/com/android/cts/verifier/camera/formats/CameraFormatsActivity.java b/apps/CtsVerifier/src/com/android/cts/verifier/camera/formats/CameraFormatsActivity.java
old mode 100644
new mode 100755
index bc4e5f0..3e52ed8
--- a/apps/CtsVerifier/src/com/android/cts/verifier/camera/formats/CameraFormatsActivity.java
+++ b/apps/CtsVerifier/src/com/android/cts/verifier/camera/formats/CameraFormatsActivity.java
@@ -34,13 +34,17 @@
 import android.os.Handler;
 import android.util.Log;
 import android.util.SparseArray;
+import android.view.Menu;
+import android.view.MenuItem;
 import android.view.View;
 import android.view.Surface;
 import android.view.TextureView;
 import android.widget.AdapterView;
 import android.widget.ArrayAdapter;
+import android.widget.Button;
 import android.widget.ImageView;
 import android.widget.Spinner;
+import android.widget.Toast;
 
 import java.io.IOException;
 import java.lang.InterruptedException;
@@ -100,11 +104,22 @@
     private TreeSet<String> mTestedCombinations = new TreeSet<String>();
     private TreeSet<String> mUntestedCombinations = new TreeSet<String>();
 
+    private int mAllCombinationsSize = 0;
+
+    // Menu to show the test progress
+    private static final int MENU_ID_PROGRESS = Menu.FIRST + 1;
+
     @Override
     public void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
 
         setContentView(R.layout.cf_main);
+
+        mAllCombinationsSize = calcAllCombinationsSize();
+
+        // disable "Pass" button until all combinations are tested
+        setPassButtonEnabled(false);
+
         setPassFailButtonClickListeners();
         setInfoResources(R.string.camera_format, R.string.cf_info, -1);
 
@@ -161,6 +176,36 @@
     }
 
     @Override
+    public boolean onCreateOptionsMenu(Menu menu) {
+        menu.add(Menu.NONE, MENU_ID_PROGRESS, Menu.NONE, "Current Progress");
+        return super.onCreateOptionsMenu(menu);
+    }
+
+    @Override
+    public boolean onOptionsItemSelected(MenuItem item) {
+        boolean ret = true;
+        switch (item.getItemId()) {
+        case MENU_ID_PROGRESS:
+            showCombinationsDialog();
+            ret = true;
+            break;
+        default:
+            ret = super.onOptionsItemSelected(item);
+            break;
+        }
+        return ret;
+    }
+
+    private void showCombinationsDialog() {
+        AlertDialog.Builder builder =
+                new AlertDialog.Builder(CameraFormatsActivity.this);
+        builder.setMessage(getTestDetails())
+                .setTitle("Current Progress")
+                .setPositiveButton("OK", null);
+        builder.show();
+    }
+
+    @Override
     public void onResume() {
         super.onResume();
 
@@ -172,6 +217,7 @@
         super.onPause();
 
         shutdownCamera();
+        mPreviewTexture = null;
     }
 
     @Override
@@ -525,6 +571,12 @@
                             + "\n";
                     mUntestedCombinations.remove(combination);
                     mTestedCombinations.add(combination);
+
+                    displayToast(combination.replace("\n", ""));
+
+                    if (mTestedCombinations.size() == mAllCombinationsSize) {
+                        setPassButtonEnabled(true);
+                    }
                 }
             }
             mProcessInProgress = false;
@@ -532,6 +584,34 @@
 
     }
 
+    private void setPassButtonEnabled(boolean enabled) {
+        Button pass_button = (Button) findViewById(R.id.pass_button);
+        pass_button.setEnabled(enabled);
+    }
+
+    private int calcAllCombinationsSize() {
+        int allCombinationsSize = 0;
+        int numCameras = Camera.getNumberOfCameras();
+
+        for (int i = 0; i<numCameras; i++) {
+            // must release a Camera object before a new Camera object is created
+            shutdownCamera();
+
+            mCamera = Camera.open(i);
+            Camera.Parameters p = mCamera.getParameters();
+
+            allCombinationsSize +=
+                    p.getSupportedPreviewSizes().size() *   // resolutions
+                    p.getSupportedPreviewFormats().size();  // formats
+        }
+
+        return allCombinationsSize;
+    }
+
+    private void displayToast(String combination) {
+        Toast.makeText(this, "\"" + combination + "\"\n" + " has been tested.", Toast.LENGTH_LONG).show();
+    }
+
     public void onPreviewFrame(byte[] data, Camera camera) {
         if (mProcessInProgress || mState != STATE_PREVIEW) return;
 
diff --git a/apps/CtsVerifier/src/com/android/cts/verifier/camera/video/CameraVideoActivity.java b/apps/CtsVerifier/src/com/android/cts/verifier/camera/video/CameraVideoActivity.java
new file mode 100644
index 0000000..1be32b4
--- /dev/null
+++ b/apps/CtsVerifier/src/com/android/cts/verifier/camera/video/CameraVideoActivity.java
@@ -0,0 +1,764 @@
+/*
+ * Copyright (C) 2013 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.android.cts.verifier.camera.video;
+
+import android.app.AlertDialog;
+import android.content.DialogInterface;
+import android.graphics.Matrix;
+import android.graphics.SurfaceTexture;
+import android.hardware.Camera;
+import android.hardware.Camera.CameraInfo;
+import android.hardware.Camera.Size;
+import android.media.CamcorderProfile;
+import android.media.MediaPlayer;
+import android.media.MediaRecorder;
+import android.os.Bundle;
+import android.os.Environment;
+import android.os.Handler;
+import android.util.Log;
+import android.view.Surface;
+import android.view.TextureView;
+import android.view.View;
+import android.widget.AdapterView;
+import android.widget.ArrayAdapter;
+import android.widget.Button;
+import android.widget.Spinner;
+import android.widget.TextView;
+import android.widget.VideoView;
+
+import com.android.cts.verifier.PassFailButtons;
+import com.android.cts.verifier.R;
+
+import java.io.File;
+import java.io.IOException;
+import java.text.SimpleDateFormat;
+import java.util.ArrayList;
+import java.util.Comparator;
+import java.util.Date;
+import java.util.List;
+import java.util.TreeSet;
+
+
+/**
+ * Tests for manual verification of camera video capture
+ */
+public class CameraVideoActivity extends PassFailButtons.Activity
+        implements TextureView.SurfaceTextureListener {
+
+    private static final String TAG = "CtsCameraVideo";
+    private static final boolean VERBOSE = Log.isLoggable(TAG, Log.VERBOSE);
+    private static final int MEDIA_TYPE_IMAGE = 1;
+    private static final int MEDIA_TYPE_VIDEO = 2;
+    private static final int VIDEO_LENGTH = 3000; // in ms
+
+    private TextureView mPreviewView;
+    private SurfaceTexture mPreviewTexture;
+    private int mPreviewTexWidth;
+    private int mPreviewTexHeight;
+    private int mPreviewRotation;
+
+    private VideoView mPlaybackView;
+
+    private Spinner mCameraSpinner;
+    private Spinner mResolutionSpinner;
+
+    private int mCurrentCameraId = -1;
+    private Camera mCamera;
+
+    private MediaRecorder mMediaRecorder;
+
+    private List<Size> mPreviewSizes;
+    private Size mNextPreviewSize;
+    private Size mPreviewSize;
+    private List<Integer> mVideoSizeIds;
+    private int mCurrentVideoSizeId;
+
+    private boolean isRecording = false;
+    private boolean isPlayingBack = false;
+    private Button captureButton;
+    private Button mPassButton;
+    private Button mFailButton;
+
+    private TextView mStatusLabel;
+
+    private TreeSet<String> mTestedCombinations = new TreeSet<String>();
+    private TreeSet<String> mUntestedCombinations = new TreeSet<String>();
+
+    private File outputVideoFile;
+
+    /**
+     * @see #MEDIA_TYPE_IMAGE
+     * @see #MEDIA_TYPE_VIDEO
+     */
+    private static File getOutputMediaFile(int type) {
+        // Question: why do I need to comment this to get it working?
+        // Logcat says "external storage not ready"
+        // if (Environment.getExternalStorageState() != Environment.MEDIA_MOUNTED) {
+        //     Log.e(TAG, "external storage not ready");
+        //     return null;
+        // }
+
+        File mediaStorageDir = new File(Environment.getExternalStoragePublicDirectory(
+                Environment.DIRECTORY_MOVIES), TAG);
+
+        if (!mediaStorageDir.exists()) {
+            if (!mediaStorageDir.mkdirs()) {
+                Log.d(TAG, "failed to create directory");
+                return null;
+            }
+        }
+
+        String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss").format(new Date());
+        File mediaFile;
+        if (type == MEDIA_TYPE_IMAGE) {
+            mediaFile = new File(mediaStorageDir.getPath() + File.separator +
+                    "IMG_" + timeStamp + ".jpg");
+        } else if (type == MEDIA_TYPE_VIDEO) {
+            mediaFile = new File(mediaStorageDir.getPath() + File.separator +
+                    "VID_" + timeStamp + ".mp4");
+            if (VERBOSE) {
+                Log.v(TAG, "getOutputMediaFile: output file " + mediaFile.getPath());
+            }
+        } else {
+            return null;
+        }
+
+        return mediaFile;
+    }
+
+    private boolean prepareVideoRecorder() {
+
+        mMediaRecorder = new MediaRecorder();
+
+        // Step 1: unlock and set camera to MediaRecorder
+        mCamera.unlock();
+        mMediaRecorder.setCamera(mCamera);
+
+        // Step 2: set sources
+        mMediaRecorder.setAudioSource(MediaRecorder.AudioSource.CAMCORDER);
+        mMediaRecorder.setVideoSource(MediaRecorder.VideoSource.CAMERA);
+
+        // Step 3: set a CamcorderProfile
+        mMediaRecorder.setProfile(CamcorderProfile.get(mCurrentCameraId, mCurrentVideoSizeId));
+
+        // Step 4: set output file
+        outputVideoFile = getOutputMediaFile(MEDIA_TYPE_VIDEO);
+        mMediaRecorder.setOutputFile(outputVideoFile.toString());
+
+        // Step 5: set preview output
+        // This is not necessary since preview has been taken care of
+
+        // Step 6: prepare configured MediaRecorder
+        try {
+            mMediaRecorder.prepare();
+        } catch (IOException e) {
+            Log.e(TAG, "IOException preparing MediaRecorder: ", e);
+            releaseMediaRecorder();
+            throw new AssertionError(e);
+        }
+
+        mMediaRecorder.setOnErrorListener(
+                new MediaRecorder.OnErrorListener() {
+                    @Override
+                    public void onError(MediaRecorder mr, int what, int extra) {
+                        if (what == MediaRecorder.MEDIA_RECORDER_ERROR_UNKNOWN) {
+                            Log.e(TAG, "unknown error in media recorder, error: " + extra);
+                        } else {
+                            Log.e(TAG, "media recorder server died, error: " + extra);
+                        }
+
+                        failTest("Media recorder error.");
+                    }
+                });
+
+        if (VERBOSE) {
+            Log.v(TAG, "prepareVideoRecorder: prepared configured MediaRecorder");
+        }
+
+        return true;
+    }
+
+    @Override
+    public void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+
+        setContentView(R.layout.camera_video);
+        setPassFailButtonClickListeners();
+        setInfoResources(R.string.camera_video, R.string.video_info, /*viewId*/-1);
+
+        mPreviewView = (TextureView) findViewById(R.id.video_capture);
+        mPlaybackView = (VideoView) findViewById(R.id.video_playback);
+        mPlaybackView.setOnCompletionListener(mPlaybackViewListener);
+
+        captureButton = (Button) findViewById(R.id.record_button);
+        mPassButton = (Button) findViewById(R.id.pass_button);
+        mFailButton = (Button) findViewById(R.id.fail_button);
+        mPassButton.setEnabled(false);
+        mFailButton.setEnabled(true);
+
+        mPreviewView.setSurfaceTextureListener(this);
+
+        int numCameras = Camera.getNumberOfCameras();
+        String[] cameraNames = new String[numCameras];
+        for (int i = 0; i < numCameras; i++) {
+            cameraNames[i] = "Camera " + i;
+            mUntestedCombinations.add("All combinations for Camera " + i + "\n");
+        }
+        if (VERBOSE) {
+            Log.v(TAG, "onCreate: number of cameras=" + numCameras);
+        }
+        mCameraSpinner = (Spinner) findViewById(R.id.cameras_selection);
+        mCameraSpinner.setAdapter(
+            new ArrayAdapter<String>(
+                this, R.layout.cf_format_list_item, cameraNames));
+        mCameraSpinner.setOnItemSelectedListener(mCameraSpinnerListener);
+
+        mResolutionSpinner = (Spinner) findViewById(R.id.resolution_selection);
+        mResolutionSpinner.setOnItemSelectedListener(mResolutionSelectedListener);
+
+        mStatusLabel = (TextView) findViewById(R.id.status_label);
+    }
+
+    @Override
+    public void onResume() {
+        super.onResume();
+
+        setUpCamera(mCameraSpinner.getSelectedItemPosition());
+        if (VERBOSE) {
+            Log.v(TAG, "onResume: camera has been setup");
+        }
+
+        setUpCaptureButton();
+        if (VERBOSE) {
+            Log.v(TAG, "onResume: captureButton has been setup");
+        }
+
+    }
+
+    @Override
+    public void onPause() {
+        super.onPause();
+
+        releaseMediaRecorder();
+        shutdownCamera();
+        mPreviewTexture = null;
+    }
+
+    private MediaPlayer.OnCompletionListener mPlaybackViewListener =
+            new MediaPlayer.OnCompletionListener() {
+
+                @Override
+                public void onCompletion(MediaPlayer mp) {
+                    isPlayingBack = false;
+                    mPlaybackView.stopPlayback();
+                    captureButton.setEnabled(true);
+                    mStatusLabel.setText(getResources().getString(R.string.status_ready));
+                }
+
+    };
+
+    private void releaseMediaRecorder() {
+        if (mMediaRecorder != null) {
+            mMediaRecorder.reset();
+            mMediaRecorder.release();
+            mMediaRecorder = null;
+            mCamera.lock(); // check here, lock camera for later use
+        }
+    }
+
+    @Override
+    public String getTestDetails() {
+        StringBuilder reportBuilder = new StringBuilder();
+        reportBuilder.append("Tested combinations:\n");
+        for (String combination : mTestedCombinations) {
+            reportBuilder.append(combination);
+        }
+        reportBuilder.append("Untested combinations:\n");
+        for (String combination : mUntestedCombinations) {
+            reportBuilder.append(combination);
+        }
+        return reportBuilder.toString();
+    }
+
+    @Override
+    public void onSurfaceTextureAvailable(SurfaceTexture surface,
+            int width, int height) {
+        mPreviewTexture = surface;
+        mPreviewTexWidth = width;
+        mPreviewTexHeight = height;
+        if (mCamera != null) {
+            startPreview();
+        }
+    }
+
+    @Override
+    public void onSurfaceTextureSizeChanged(SurfaceTexture surface, int width, int height) {
+        // Ignored, Camera does all the work for us
+    }
+
+    @Override
+    public boolean onSurfaceTextureDestroyed(SurfaceTexture surface) {
+        return true;
+    }
+
+
+    @Override
+    public void onSurfaceTextureUpdated(SurfaceTexture surface) {
+        // Invoked every time there's a new Camera preview frame
+    }
+
+    private AdapterView.OnItemSelectedListener mCameraSpinnerListener =
+            new AdapterView.OnItemSelectedListener() {
+                @Override
+                public void onItemSelected(AdapterView<?> parent,
+                        View view, int pos, long id) {
+                    if (mCurrentCameraId != pos) {
+                        setUpCamera(pos);
+                    }
+                }
+
+                @Override
+                public void onNothingSelected(AdapterView<?> parent) {
+                    // Intentionally left blank
+                }
+
+            };
+
+    private AdapterView.OnItemSelectedListener mResolutionSelectedListener =
+            new AdapterView.OnItemSelectedListener() {
+                @Override
+                public void onItemSelected(AdapterView<?> parent,
+                        View view, int position, long id) {
+                    if (mVideoSizeIds.get(position) != mCurrentVideoSizeId) {
+                        mCurrentVideoSizeId = mVideoSizeIds.get(position);
+                        if (VERBOSE) {
+                            Log.v(TAG, "onItemSelected: mCurrentVideoSizeId = " +
+                                    mCurrentVideoSizeId);
+                        }
+                        mNextPreviewSize = matchPreviewRecordSize();
+                        if (VERBOSE) {
+                            Log.v(TAG, "onItemSelected: setting preview size "
+                                    + mNextPreviewSize.width + "x" + mNextPreviewSize.height);
+                        }
+
+                        startPreview();
+                        if (VERBOSE) {
+                            Log.v(TAG, "onItemSelected: started new preview");
+                        }
+                    }
+                }
+
+                @Override
+                public void onNothingSelected(AdapterView<?> parent) {
+                    // Intentionally left blank
+                }
+
+            };
+
+
+    private void setUpCaptureButton() {
+        captureButton.setOnClickListener (
+                new View.OnClickListener() {
+                    @Override
+                    public void onClick(View V) {
+                        if ((!isRecording) && (!isPlayingBack)) {
+                            if (prepareVideoRecorder()) {
+                                mMediaRecorder.start();
+                                if (VERBOSE) {
+                                    Log.v(TAG, "onClick: started mMediaRecorder");
+                                }
+                                isRecording = true;
+                                captureButton.setEnabled(false);
+                                mStatusLabel.setText(getResources()
+                                        .getString(R.string.status_recording));
+                            } else {
+                                releaseMediaRecorder();
+                                Log.e(TAG, "media recorder cannot be set up");
+                                failTest("Unable to set up media recorder.");
+                            }
+                            Handler h = new Handler();
+                            Runnable mDelayedPreview = new Runnable() {
+                                @Override
+                                public void run() {
+                                    mMediaRecorder.stop();
+                                    releaseMediaRecorder();
+
+                                    mPlaybackView.setVideoPath(outputVideoFile.getPath());
+                                    mPlaybackView.start();
+                                    isRecording = false;
+                                    isPlayingBack = true;
+                                    mStatusLabel.setText(getResources()
+                                            .getString(R.string.status_playback));
+                                    String combination = "Camera " + mCurrentCameraId + ", " +
+                                            mCurrentVideoSizeId + "\n";
+                                    mUntestedCombinations.remove(combination);
+                                    mTestedCombinations.add(combination);
+
+                                    if (mUntestedCombinations.isEmpty()) {
+                                        mPassButton.setEnabled(true);
+                                        if (VERBOSE) {
+                                            Log.v(TAG, "run: test success");
+                                        }
+                                    }
+                                }
+                            };
+                            h.postDelayed(mDelayedPreview, VIDEO_LENGTH);
+                        }
+
+                    }
+                }
+        );
+    }
+
+    private class VideoSizeNamePair {
+        private int sizeId;
+        private String sizeName;
+
+        public VideoSizeNamePair(int id, String name) {
+            sizeId = id;
+            sizeName = name;
+        }
+
+        public int getSizeId() {
+            return sizeId;
+        }
+
+        public String getSizeName() {
+            return sizeName;
+        }
+    }
+
+    private ArrayList<VideoSizeNamePair> getVideoSizeNamePairs(int cameraId) {
+        int[] qualityArray = {
+                CamcorderProfile.QUALITY_LOW,
+                CamcorderProfile.QUALITY_HIGH,
+                CamcorderProfile.QUALITY_QCIF,
+                CamcorderProfile.QUALITY_QVGA,
+                CamcorderProfile.QUALITY_CIF,
+                CamcorderProfile.QUALITY_480P,
+                CamcorderProfile.QUALITY_720P,
+                CamcorderProfile.QUALITY_1080P
+        };
+
+        String[] nameArray = {
+                "LOW",
+                "HIGH",
+                "QCIF",
+                "QVGA",
+                "CIF",
+                "480P",
+                "720P",
+                "1080P"
+        };
+
+        ArrayList<VideoSizeNamePair> availableSizes =
+                new ArrayList<VideoSizeNamePair> ();
+
+        for (int i = 0; i < qualityArray.length; i++) {
+            if (CamcorderProfile.hasProfile(cameraId, qualityArray[i])) {
+                VideoSizeNamePair pair = new VideoSizeNamePair(qualityArray[i], nameArray[i]);
+                availableSizes.add(pair);
+            }
+        }
+        return availableSizes;
+    }
+
+    static class ResolutionQuality {
+        private int videoSizeId;
+        private int width;
+        private int height;
+
+        public ResolutionQuality() {
+            // intentionally left blank
+        }
+        public ResolutionQuality(int newSizeId, int newWidth, int newHeight) {
+            videoSizeId = newSizeId;
+            width = newWidth;
+            height = newHeight;
+        }
+    }
+
+    private Size findRecordSize(int cameraId) {
+        int[] possibleQuality = {
+                CamcorderProfile.QUALITY_LOW,
+                CamcorderProfile.QUALITY_HIGH,
+                CamcorderProfile.QUALITY_QCIF,
+                CamcorderProfile.QUALITY_QVGA,
+                CamcorderProfile.QUALITY_CIF,
+                CamcorderProfile.QUALITY_480P,
+                CamcorderProfile.QUALITY_720P,
+                CamcorderProfile.QUALITY_1080P
+        };
+
+        ArrayList<ResolutionQuality> qualityList = new ArrayList<ResolutionQuality>();
+        for (int i = 0; i < possibleQuality.length; i++) {
+            if (CamcorderProfile.hasProfile(cameraId, possibleQuality[i])) {
+                CamcorderProfile profile = CamcorderProfile.get(cameraId, possibleQuality[i]);
+                qualityList.add(new ResolutionQuality(possibleQuality[i],
+                        profile.videoFrameWidth, profile.videoFrameHeight));
+            }
+        }
+
+        Size recordSize = null;
+        for (int i = 0; i < qualityList.size(); i++) {
+            if (mCurrentVideoSizeId == qualityList.get(i).videoSizeId) {
+                recordSize = mCamera.new Size(qualityList.get(i).width,
+                        qualityList.get(i).height);
+                break;
+            }
+        }
+
+        if (recordSize == null) {
+            Log.e(TAG, "findRecordSize: did not find a match");
+            failTest("Cannot find video size");
+        }
+        return recordSize;
+    }
+
+    // Match preview size with current recording size mCurrentVideoSizeId
+    private Size matchPreviewRecordSize() {
+        Size recordSize = findRecordSize(mCurrentCameraId);
+
+        Size matchedSize = null;
+        // First try to find exact match in size
+        for (int i = 0; i < mPreviewSizes.size(); i++) {
+            if (mPreviewSizes.get(i).equals(recordSize)) {
+                matchedSize = mCamera.new Size(recordSize.width, recordSize.height);
+                break;
+            }
+        }
+        // Second try to find same ratio in size
+        if (matchedSize == null) {
+            for (int i = mPreviewSizes.size() - 1; i >= 0; i--) {
+                if (mPreviewSizes.get(i).width * recordSize.height ==
+                        mPreviewSizes.get(i).height * recordSize.width) {
+                    matchedSize = mCamera.new Size(mPreviewSizes.get(i).width,
+                            mPreviewSizes.get(i).height);
+                    break;
+                }
+            }
+        }
+        //Third try to find one with similar if not the same apect ratio
+        if (matchedSize == null) {
+            for (int i = mPreviewSizes.size() - 1; i >= 0; i--) {
+                if (Math.abs((float)mPreviewSizes.get(i).width * recordSize.height /
+                        mPreviewSizes.get(i).height / recordSize.width - 1) < 0.12) {
+                    matchedSize = mCamera.new Size(mPreviewSizes.get(i).width,
+                            mPreviewSizes.get(i).height);
+                    break;
+                }
+            }
+        }
+        // Last resort, just use the first preview size
+        if (matchedSize == null) {
+            matchedSize = mCamera.new Size(mPreviewSizes.get(0).width,
+                    mPreviewSizes.get(0).height);
+        }
+
+        if (VERBOSE) {
+            Log.v(TAG, "matchPreviewRecordSize " + matchedSize.width + "x" + matchedSize.height);
+        }
+
+        return matchedSize;
+    }
+
+    private void setUpCamera(int id) {
+        shutdownCamera();
+
+        mCurrentCameraId = id;
+        try {
+            mCamera = Camera.open(id);
+        }
+        catch (Exception e) {
+            Log.e(TAG, "camera is not available", e);
+            failTest("camera not available" + e.getMessage());
+            return;
+        }
+
+        Camera.Parameters p = mCamera.getParameters();
+        if (VERBOSE) {
+            Log.v(TAG, "setUpCamera: setUpCamera got camera parameters");
+        }
+
+        // Get preview resolutions
+        List<Size> unsortedSizes = p.getSupportedPreviewSizes();
+
+        class SizeCompare implements Comparator<Size> {
+            @Override
+            public int compare(Size lhs, Size rhs) {
+                if (lhs.width < rhs.width) return -1;
+                if (lhs.width > rhs.width) return 1;
+                if (lhs.height < rhs.height) return -1;
+                if (lhs.height > rhs.height) return 1;
+                return 0;
+            }
+        };
+
+        SizeCompare s = new SizeCompare();
+        TreeSet<Size> sortedResolutions = new TreeSet<Size>(s);
+        sortedResolutions.addAll(unsortedSizes);
+
+        mPreviewSizes = new ArrayList<Size>(sortedResolutions);
+
+        ArrayList<VideoSizeNamePair> availableVideoSizes = getVideoSizeNamePairs(id);
+        String[] availableVideoSizeNames = new String[availableVideoSizes.size()];
+        mVideoSizeIds = new ArrayList<Integer>();
+        for (int i = 0; i < availableVideoSizes.size(); i++) {
+            availableVideoSizeNames[i] = availableVideoSizes.get(i).getSizeName();
+            mVideoSizeIds.add(availableVideoSizes.get(i).getSizeId());
+        }
+
+        mResolutionSpinner.setAdapter(
+            new ArrayAdapter<String>(
+                this, R.layout.cf_format_list_item, availableVideoSizeNames));
+
+        // Update untested
+        mUntestedCombinations.remove("All combinations for Camera " + id + "\n");
+        for (int videoSizeId: mVideoSizeIds) {
+            String combination = "Camera " + id + ", " + videoSizeId + "\n";
+            if (!mTestedCombinations.contains(combination)) {
+                mUntestedCombinations.add(combination);
+            }
+        }
+
+        // Set initial values
+        mCurrentVideoSizeId = mVideoSizeIds.get(0);
+        mNextPreviewSize = matchPreviewRecordSize();
+        mResolutionSpinner.setSelection(0);
+
+        // Set up correct display orientation
+        CameraInfo info = new CameraInfo();
+        Camera.getCameraInfo(id, info);
+        int rotation = getWindowManager().getDefaultDisplay().getRotation();
+        int degrees = 0;
+        switch (rotation) {
+            case Surface.ROTATION_0: degrees = 0; break;
+            case Surface.ROTATION_90: degrees = 90; break;
+            case Surface.ROTATION_180: degrees = 180; break;
+            case Surface.ROTATION_270: degrees = 270; break;
+        }
+
+        if (info.facing == Camera.CameraInfo.CAMERA_FACING_FRONT) {
+            mPreviewRotation = (info.orientation + degrees) % 360;
+            mPreviewRotation = (360 - mPreviewRotation) % 360;  // compensate the mirror
+        } else {  // back-facing
+            mPreviewRotation = (info.orientation - degrees + 360) % 360;
+        }
+        if (mPreviewRotation != 0 && mPreviewRotation != 180) {
+            Log.w(TAG,
+                "Display orientation correction is not 0 or 180, as expected!");
+        }
+
+        mCamera.setDisplayOrientation(mPreviewRotation);
+
+        // Start up preview if display is ready
+        if (mPreviewTexture != null) {
+            startPreview();
+        }
+    }
+
+    private void shutdownCamera() {
+        if (mCamera != null) {
+            mCamera.setPreviewCallback(null);
+            mCamera.stopPreview();
+            mCamera.release();
+            mCamera = null;
+        }
+    }
+
+    /**
+     * starts capturing and drawing frames on screen
+     */
+    private void startPreview() {
+
+        mCamera.stopPreview();
+
+        Matrix transform = new Matrix();
+        float widthRatio = mNextPreviewSize.width / (float)mPreviewTexWidth;
+        float heightRatio = mNextPreviewSize.height / (float)mPreviewTexHeight;
+        if (VERBOSE) {
+            Log.v(TAG, "startPreview: widthRatio=" + widthRatio + " " + "heightRatio=" +
+                    heightRatio);
+        }
+
+        if (heightRatio < widthRatio) {
+            transform.setScale(1, heightRatio / widthRatio);
+            transform.postTranslate(0,
+                    mPreviewTexHeight * (1 - heightRatio / widthRatio) / 2);
+            if (VERBOSE) {
+                Log.v(TAG, "startPreview: shrink vertical by " + heightRatio / widthRatio);
+            }
+        } else {
+            transform.setScale(widthRatio / heightRatio, 1);
+            transform.postTranslate(mPreviewTexWidth * (1 - widthRatio / heightRatio) / 2, 0);
+            if (VERBOSE) {
+                Log.v(TAG, "startPreview: shrink horizontal by " + widthRatio / heightRatio);
+            }
+        }
+
+        mPreviewView.setTransform(transform);
+
+        mPreviewSize = mNextPreviewSize;
+
+        Camera.Parameters p = mCamera.getParameters();
+        p.setPreviewSize(mPreviewSize.width, mPreviewSize.height);
+        mCamera.setParameters(p);
+
+        try {
+            mCamera.setPreviewTexture(mPreviewTexture);
+            if (mPreviewTexture == null) {
+                Log.e(TAG, "preview texture is null.");
+            }
+            if (VERBOSE) {
+                Log.v(TAG, "startPreview: set preview texture in startPreview");
+            }
+            mCamera.startPreview();
+            if (VERBOSE) {
+                Log.v(TAG, "startPreview: started preview in startPreview");
+            }
+        } catch (IOException ioe) {
+            Log.e(TAG, "Unable to start up preview", ioe);
+            // Show a dialog box to tell user test failed
+            failTest("Unable to start preview.");
+        }
+    }
+
+    private void failTest(String failMessage) {
+        DialogInterface.OnClickListener dialogClickListener =
+                new DialogInterface.OnClickListener() {
+                    @Override
+                    public void onClick(DialogInterface dialog, int which) {
+                        switch (which) {
+                            case DialogInterface.BUTTON_POSITIVE:
+                                PassFailButtons.setTestResultAndFinish(CameraVideoActivity.this,
+                                        CameraVideoActivity.this.getTestId(),
+                                        CameraVideoActivity.this.getTestDetails(),
+                                        /* passed */false);
+                                break;
+                            case DialogInterface.BUTTON_NEGATIVE:
+                                break;
+                        }
+                    }
+                };
+
+        AlertDialog.Builder builder = new AlertDialog.Builder(CameraVideoActivity.this);
+        builder.setMessage(getString(R.string.dialog_fail_test) + ". " + failMessage)
+                .setPositiveButton(R.string.fail_quit, dialogClickListener)
+                .setNegativeButton(R.string.cancel, dialogClickListener)
+                .show();
+    }
+
+}
diff --git a/apps/CtsVerifier/src/com/android/cts/verifier/deskclock/DeskClockTestsActivity.java b/apps/CtsVerifier/src/com/android/cts/verifier/deskclock/DeskClockTestsActivity.java
new file mode 100644
index 0000000..fcd88d1
--- /dev/null
+++ b/apps/CtsVerifier/src/com/android/cts/verifier/deskclock/DeskClockTestsActivity.java
@@ -0,0 +1,196 @@
+// Copyright 2013 Google Inc. All Rights Reserved.
+
+package com.android.cts.verifier.deskclock;
+
+import android.content.Intent;
+import android.database.DataSetObserver;
+import android.os.Bundle;
+import android.provider.AlarmClock;
+
+import com.android.cts.verifier.ArrayTestListAdapter;
+import com.android.cts.verifier.IntentDrivenTestActivity;
+import com.android.cts.verifier.PassFailButtons;
+import com.android.cts.verifier.R;
+import com.android.cts.verifier.TestListAdapter.TestListItem;
+import com.android.cts.verifier.IntentDrivenTestActivity.ButtonInfo;
+import com.android.cts.verifier.IntentDrivenTestActivity.IntentFactory;
+import com.android.cts.verifier.IntentDrivenTestActivity.TestInfo;
+
+import java.util.ArrayList;
+import java.util.Calendar;
+
+/**
+ * Activity that lists all the DeskClock tests.
+ */
+public class DeskClockTestsActivity extends PassFailButtons.TestListActivity {
+
+    private static final String SHOW_ALARMS_TEST = "SHOW_ALARMS";
+    public static final String SET_ALARM_WITH_UI_TEST = "SET_ALARM_WITH_UI";
+    public static final String START_ALARM_TEST = "START_ALARM";
+    public static final String CREATE_ALARM_TEST = "CREATE_ALARM";
+    public static final String SET_TIMER_WITH_UI_TEST = "SET_TIMER_WITH_UI";
+    public static final String START_TIMER = "START_TIMER";
+    public static final String START_TIMER_WITH_UI = "START_TIMER_WITH_UI";
+
+    private static final ArrayList<Integer> DAYS = new ArrayList<Integer>();
+
+    private static final Intent CREATE_ALARM_INTENT = new Intent(AlarmClock.ACTION_SET_ALARM)
+            .putExtra(AlarmClock.EXTRA_MESSAGE, "Create Alarm Test")
+            .putExtra(AlarmClock.EXTRA_SKIP_UI, false)
+            .putExtra(AlarmClock.EXTRA_VIBRATE, true)
+            .putExtra(AlarmClock.EXTRA_RINGTONE, AlarmClock.VALUE_RINGTONE_SILENT)
+            .putExtra(AlarmClock.EXTRA_HOUR, 1)
+            .putExtra(AlarmClock.EXTRA_MINUTES, 23)
+            .putExtra(AlarmClock.EXTRA_DAYS, DAYS);
+
+    static {
+        DAYS.add(Calendar.MONDAY);
+        DAYS.add(Calendar.WEDNESDAY);
+    }
+
+    private static final Intent SHOW__ALARMS_INTENT = new Intent(AlarmClock.ACTION_SHOW_ALARMS);
+
+    private static final Intent SET_ALARM_WITH_UI_INTENT = new Intent(AlarmClock.ACTION_SET_ALARM)
+            .putExtra(AlarmClock.EXTRA_SKIP_UI, false);
+
+    private static final Intent SET_TIMER_WITH_UI_INTENT = new Intent(AlarmClock.ACTION_SET_TIMER)
+             .putExtra(AlarmClock.EXTRA_SKIP_UI, false);
+
+    private static final Intent START_TIMER_INTENT = new Intent(AlarmClock.ACTION_SET_TIMER)
+    .putExtra(AlarmClock.EXTRA_SKIP_UI, true)
+    .putExtra(AlarmClock.EXTRA_MESSAGE, "Start Timer Test")
+    .putExtra(AlarmClock.EXTRA_LENGTH, 30);
+
+    private static final Intent START_TIMER_WITH_UI_INTENT = new Intent(AlarmClock.ACTION_SET_TIMER)
+    .putExtra(AlarmClock.EXTRA_SKIP_UI, false)
+    .putExtra(AlarmClock.EXTRA_MESSAGE, "Start Timer Test")
+    .putExtra(AlarmClock.EXTRA_LENGTH, 30);
+
+    private static final TestInfo[] ALARM_TESTS = new TestInfo[] {
+            new TestInfo(
+                    SHOW_ALARMS_TEST,
+                    R.string.dc_show_alarms_test,
+                    R.string.dc_show_alarms_test_info,
+                    new ButtonInfo(
+                            R.string.dc_show_alarms_button,
+                            SHOW__ALARMS_INTENT)),
+            new TestInfo(
+                    SET_ALARM_WITH_UI_TEST,
+                    R.string.dc_set_alarm_with_ui_test,
+                    R.string.dc_set_alarm_with_ui_test_info,
+                    new ButtonInfo(
+                            R.string.dc_set_alarm_button,
+                            SET_ALARM_WITH_UI_INTENT)),
+            new TestInfo(
+                    START_ALARM_TEST,
+                    R.string.dc_start_alarm_test,
+                    R.string.dc_start_alarm_test_info,
+                    new ButtonInfo(
+                            R.string.dc_set_alarm_button,
+                            DeskClockIntentFactory.class.getName()),
+                    new ButtonInfo(
+                            R.string.dc_set_alarm_verify_button,
+                            SHOW__ALARMS_INTENT)),
+            new TestInfo(
+                    CREATE_ALARM_TEST,
+                    R.string.dc_full_alarm_test,
+                    R.string.dc_full_alarm_test_info,
+                    new ButtonInfo(
+                            R.string.dc_full_alarm_button,
+                            CREATE_ALARM_INTENT)),
+    };
+
+    private static final TestInfo[] TIMER_TESTS = new TestInfo[] {
+            new TestInfo(
+                    SET_TIMER_WITH_UI_TEST,
+                    R.string.dc_set_timer_with_ui_test,
+                    R.string.dc_set_timer_with_ui_test_info,
+                    new ButtonInfo(
+                            R.string.dc_set_timer_with_ui_button,
+                            SET_TIMER_WITH_UI_INTENT)),
+            new TestInfo(
+                    START_TIMER,
+                    R.string.dc_start_timer_test,
+                    R.string.dc_start_timer_test_info,
+                    new ButtonInfo(
+                            R.string.dc_start_timer_button,
+                            START_TIMER_INTENT)),
+            new TestInfo(
+                    START_TIMER_WITH_UI,
+                    R.string.dc_start_timer_with_ui_test,
+                    R.string.dc_start_timer_with_ui_test_info,
+                    new ButtonInfo(
+                            R.string.dc_start_timer_button,
+                            START_TIMER_WITH_UI_INTENT)),
+  };
+
+    @Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        setContentView(R.layout.pass_fail_list);
+        setInfoResources(R.string.deskclock_tests, R.string.deskclock_tests_info, 0);
+        setPassFailButtonClickListeners();
+
+        getPassButton().setEnabled(false);
+
+        final ArrayTestListAdapter adapter = new ArrayTestListAdapter(this);
+
+        adapter.add(TestListItem.newCategory(this, R.string.deskclock_group_alarms));
+        addTests(adapter, ALARM_TESTS);
+
+        adapter.add(TestListItem.newCategory(this, R.string.deskclock_group_timers));
+        addTests(adapter, TIMER_TESTS);
+
+        adapter.registerDataSetObserver(new DataSetObserver() {
+            @Override
+            public void onChanged() {
+                updatePassButton();
+            }
+        });
+
+        setTestListAdapter(adapter);
+    }
+
+    private void addTests(ArrayTestListAdapter adapter, TestInfo[] tests) {
+        for (TestInfo info : tests) {
+
+            final int title = info.getTitle();
+            adapter.add(TestListItem.newTest(this, title, info.getTestId(),
+            new Intent(this, IntentDrivenTestActivity.class)
+                    .putExtra(IntentDrivenTestActivity.EXTRA_ID, info.getTestId())
+                    .putExtra(IntentDrivenTestActivity.EXTRA_TITLE, title)
+                    .putExtra(IntentDrivenTestActivity.EXTRA_INFO, info.getInfoText())
+                    .putExtra(IntentDrivenTestActivity.EXTRA_BUTTONS, info.getButtons()),
+                    null));
+        }
+    }
+
+    /**
+     * Enable Pass Button when the all tests passed.
+     */
+    private void updatePassButton() {
+        getPassButton().setEnabled(mAdapter.allTestsPassed());
+    }
+
+    public static class DeskClockIntentFactory implements IntentFactory {
+        @Override
+        public Intent[] createIntents(String testId, int buttonText) {
+            if (testId.equals(START_ALARM_TEST)) {
+                // Alarm should go off 2 minutes from now
+                final Calendar cal = Calendar.getInstance();
+                cal.setTimeInMillis(cal.getTimeInMillis() + 120000);
+                return new Intent[] {
+                        new Intent(AlarmClock.ACTION_SET_ALARM)
+                                .putExtra(AlarmClock.EXTRA_MESSAGE, "Start Alarm Test")
+                        .putExtra(AlarmClock.EXTRA_SKIP_UI, true)
+                        .putExtra(AlarmClock.EXTRA_VIBRATE, true)
+                        .putExtra(AlarmClock.EXTRA_RINGTONE, AlarmClock.VALUE_RINGTONE_SILENT)
+                        .putExtra(AlarmClock.EXTRA_HOUR, cal.get(Calendar.HOUR_OF_DAY))
+                        .putExtra(AlarmClock.EXTRA_MINUTES, cal.get(Calendar.MINUTE)),
+                };
+            } else {
+                throw new IllegalArgumentException("Unknown test: " + testId);
+            }
+        }
+    }
+}
diff --git a/apps/CtsVerifier/src/com/android/cts/verifier/features/FeatureSummaryActivity.java b/apps/CtsVerifier/src/com/android/cts/verifier/features/FeatureSummaryActivity.java
index 1a68b48..6b87261 100644
--- a/apps/CtsVerifier/src/com/android/cts/verifier/features/FeatureSummaryActivity.java
+++ b/apps/CtsVerifier/src/com/android/cts/verifier/features/FeatureSummaryActivity.java
@@ -180,6 +180,14 @@
             new Feature("android.hardware.camera.any", false),
     };
 
+    public static final Feature[] ALL_KITKAT_FEATURES = {
+            new Feature(PackageManager.FEATURE_NFC_HOST_CARD_EMULATION, false),
+            new Feature(PackageManager.FEATURE_CONSUMER_IR, false),
+            new Feature(PackageManager.FEATURE_DEVICE_ADMIN, false),
+            new Feature(PackageManager.FEATURE_SENSOR_STEP_COUNTER, false),
+            new Feature(PackageManager.FEATURE_SENSOR_STEP_DETECTOR, false),
+    };
+
     @Override
     public void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
@@ -210,6 +218,9 @@
 
         // add features from latest to last so that the latest requirements are put in the set first
         int apiVersion = Build.VERSION.SDK_INT;
+        if (apiVersion >= Build.VERSION_CODES.KITKAT) {
+            Collections.addAll(features, ALL_KITKAT_FEATURES);
+        }
         if (apiVersion >= Build.VERSION_CODES.JELLY_BEAN_MR2) {
             Collections.addAll(features, ALL_JELLY_BEAN_MR2_FEATURES);
         }
diff --git a/apps/CtsVerifier/src/com/android/cts/verifier/location/GpsTestActivity.java b/apps/CtsVerifier/src/com/android/cts/verifier/location/GpsTestActivity.java
index da1ee88..4909497 100644
--- a/apps/CtsVerifier/src/com/android/cts/verifier/location/GpsTestActivity.java
+++ b/apps/CtsVerifier/src/com/android/cts/verifier/location/GpsTestActivity.java
@@ -155,6 +155,12 @@
     @Override
     public void pass() {
         log("OK!\n", Color.GREEN);
+        try {
+            Thread.sleep(2000);
+            log("(Sleep 2 second) \n", Color.GREEN);
+        } catch (InterruptedException e) {
+            fail("unexpected InterruptedException when sleep");
+        }
         mLocationVerifier = null;
         nextTest();
     }
diff --git a/apps/CtsVerifier/src/com/android/cts/verifier/location/LocationModeBatterySavingTestActivity.java b/apps/CtsVerifier/src/com/android/cts/verifier/location/LocationModeBatterySavingTestActivity.java
new file mode 100644
index 0000000..08fb34d
--- /dev/null
+++ b/apps/CtsVerifier/src/com/android/cts/verifier/location/LocationModeBatterySavingTestActivity.java
@@ -0,0 +1,64 @@
+/*
+ * Copyright (C) 2013 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.android.cts.verifier.location;
+
+import android.location.LocationManager;
+import android.provider.Settings.Secure;
+import com.android.cts.verifier.R;
+
+public class LocationModeBatterySavingTestActivity extends LocationModeTestActivity {
+
+    @Override
+    protected void createTestItems() {
+        createUserItem(R.string.location_mode_turn_on);
+        createUserItem(R.string.location_mode_select_battery_saving);
+        createAutoItem(R.string.location_mode_secure_gps_off);
+        createAutoItem(R.string.location_mode_secure_nlp_on);
+        createAutoItem(R.string.location_mode_manager_gps_off);
+        createAutoItem(R.string.location_mode_manager_nlp_on);
+    }
+
+    @Override
+    protected void setInfoResources() {
+        setInfoResources(R.string.location_mode_battery_saving_test,
+                R.string.location_mode_battery_saving_info, -1);
+    }
+
+    @Override
+    protected void testAdvance(int state) {
+        switch (state) {
+            case 0:
+                testIsOn(0);
+                break;
+            case 1:
+                testIsExpectedMode(1, Secure.LOCATION_MODE_BATTERY_SAVING);
+                break;
+            case 2:
+                testSecureProviderIsDisabled(2, LocationManager.GPS_PROVIDER);
+                break;
+            case 3:
+                testSecureProviderIsEnabled(3, LocationManager.NETWORK_PROVIDER);
+                break;
+            case 4:
+                testManagerProviderIsDisabled(4, LocationManager.GPS_PROVIDER);
+                break;
+            case 5:
+                testManagerProviderIsEnabled(5, LocationManager.NETWORK_PROVIDER);
+                break;
+        }
+    }
+}
diff --git a/apps/CtsVerifier/src/com/android/cts/verifier/location/LocationModeDeviceOnlyTestActivity.java b/apps/CtsVerifier/src/com/android/cts/verifier/location/LocationModeDeviceOnlyTestActivity.java
new file mode 100644
index 0000000..0ba9f76
--- /dev/null
+++ b/apps/CtsVerifier/src/com/android/cts/verifier/location/LocationModeDeviceOnlyTestActivity.java
@@ -0,0 +1,64 @@
+/*
+ * Copyright (C) 2013 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.android.cts.verifier.location;
+
+import android.location.LocationManager;
+import android.provider.Settings.Secure;
+import com.android.cts.verifier.R;
+
+public class LocationModeDeviceOnlyTestActivity extends LocationModeTestActivity {
+
+    @Override
+    protected void createTestItems() {
+        createUserItem(R.string.location_mode_turn_on);
+        createUserItem(R.string.location_mode_select_device_only);
+        createAutoItem(R.string.location_mode_secure_gps_on);
+        createAutoItem(R.string.location_mode_secure_nlp_off);
+        createAutoItem(R.string.location_mode_manager_gps_on);
+        createAutoItem(R.string.location_mode_manager_nlp_off);
+    }
+
+    @Override
+    protected void setInfoResources() {
+        setInfoResources(R.string.location_mode_device_only_test,
+                R.string.location_mode_device_only_info, -1);
+    }
+
+    @Override
+    protected void testAdvance(int state) {
+        switch (state) {
+            case 0:
+                testIsOn(0);
+                break;
+            case 1:
+                testIsExpectedMode(1, Secure.LOCATION_MODE_SENSORS_ONLY);
+                break;
+            case 2:
+                testSecureProviderIsEnabled(2, LocationManager.GPS_PROVIDER);
+                break;
+            case 3:
+                testSecureProviderIsDisabled(3, LocationManager.NETWORK_PROVIDER);
+                break;
+            case 4:
+                testManagerProviderIsEnabled(4, LocationManager.GPS_PROVIDER);
+                break;
+            case 5:
+                testManagerProviderIsDisabled(5, LocationManager.NETWORK_PROVIDER);
+                break;
+        }
+    }
+}
diff --git a/apps/CtsVerifier/src/com/android/cts/verifier/location/LocationModeHighAccuracyTestActivity.java b/apps/CtsVerifier/src/com/android/cts/verifier/location/LocationModeHighAccuracyTestActivity.java
new file mode 100644
index 0000000..9c10705
--- /dev/null
+++ b/apps/CtsVerifier/src/com/android/cts/verifier/location/LocationModeHighAccuracyTestActivity.java
@@ -0,0 +1,64 @@
+/*
+ * Copyright (C) 2013 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.android.cts.verifier.location;
+
+import android.location.LocationManager;
+import android.provider.Settings.Secure;
+import com.android.cts.verifier.R;
+
+public class LocationModeHighAccuracyTestActivity extends LocationModeTestActivity {
+
+    @Override
+    protected void createTestItems() {
+        createUserItem(R.string.location_mode_turn_on);
+        createUserItem(R.string.location_mode_select_high_accuracy);
+        createAutoItem(R.string.location_mode_secure_gps_on);
+        createAutoItem(R.string.location_mode_secure_nlp_on);
+        createAutoItem(R.string.location_mode_manager_gps_on);
+        createAutoItem(R.string.location_mode_manager_nlp_on);
+    }
+
+    @Override
+    protected void setInfoResources() {
+        setInfoResources(R.string.location_mode_high_accuracy_test,
+                R.string.location_mode_high_accuracy_info, -1);
+    }
+
+    @Override
+    protected void testAdvance(int state) {
+        switch (state) {
+            case 0:
+                testIsOn(0);
+                break;
+            case 1:
+                testIsExpectedMode(1, Secure.LOCATION_MODE_HIGH_ACCURACY);
+                break;
+            case 2:
+                testSecureProviderIsEnabled(2, LocationManager.GPS_PROVIDER);
+                break;
+            case 3:
+                testSecureProviderIsEnabled(3, LocationManager.NETWORK_PROVIDER);
+                break;
+            case 4:
+                testManagerProviderIsEnabled(4, LocationManager.GPS_PROVIDER);
+                break;
+            case 5:
+                testManagerProviderIsEnabled(5, LocationManager.NETWORK_PROVIDER);
+                break;
+        }
+    }
+}
diff --git a/apps/CtsVerifier/src/com/android/cts/verifier/location/LocationModeOffTestActivity.java b/apps/CtsVerifier/src/com/android/cts/verifier/location/LocationModeOffTestActivity.java
new file mode 100644
index 0000000..92b0742
--- /dev/null
+++ b/apps/CtsVerifier/src/com/android/cts/verifier/location/LocationModeOffTestActivity.java
@@ -0,0 +1,60 @@
+/*
+ * Copyright (C) 2013 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.android.cts.verifier.location;
+
+import android.location.LocationManager;
+import android.provider.Settings.Secure;
+import com.android.cts.verifier.R;
+
+public class LocationModeOffTestActivity extends LocationModeTestActivity {
+
+    @Override
+    protected void createTestItems() {
+        createUserItem(R.string.location_mode_turn_off);
+        createAutoItem(R.string.location_mode_secure_gps_off);
+        createAutoItem(R.string.location_mode_secure_nlp_off);
+        createAutoItem(R.string.location_mode_manager_gps_off);
+        createAutoItem(R.string.location_mode_manager_nlp_off);
+    }
+
+    @Override
+    protected void setInfoResources() {
+        setInfoResources(R.string.location_mode_off_test,
+                R.string.location_mode_off_info, -1);
+    }
+
+    @Override
+    protected void testAdvance(int state) {
+        switch (state) {
+            case 0:
+                testIsExpectedMode(0, Secure.LOCATION_MODE_OFF);
+                break;
+            case 1:
+                testSecureProviderIsDisabled(1, LocationManager.GPS_PROVIDER);
+                break;
+            case 2:
+                testSecureProviderIsDisabled(2, LocationManager.NETWORK_PROVIDER);
+                break;
+            case 3:
+                testManagerProviderIsDisabled(3, LocationManager.GPS_PROVIDER);
+                break;
+            case 4:
+                testManagerProviderIsDisabled(4, LocationManager.NETWORK_PROVIDER);
+                break;
+        }
+    }
+}
diff --git a/apps/CtsVerifier/src/com/android/cts/verifier/location/LocationModeTestActivity.java b/apps/CtsVerifier/src/com/android/cts/verifier/location/LocationModeTestActivity.java
new file mode 100644
index 0000000..92d41f4
--- /dev/null
+++ b/apps/CtsVerifier/src/com/android/cts/verifier/location/LocationModeTestActivity.java
@@ -0,0 +1,267 @@
+/*
+ * Copyright (C) 2013 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.android.cts.verifier.location;
+
+import android.content.ContentResolver;
+import android.content.Context;
+import android.content.Intent;
+import android.location.LocationManager;
+import android.os.Bundle;
+import android.provider.Settings;
+import android.provider.Settings.Secure;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.ImageView;
+import android.widget.TextView;
+import com.android.cts.verifier.PassFailButtons;
+import com.android.cts.verifier.R;
+
+/**
+ * Asks the user to put the device in one of the four location modes and then checks to see if
+ * {@link Secure#isLocationProviderEnabled(ContentResolver, String)} and {@link
+ * LocationManager#isProviderEnabled(String)} have the expected values for GPS and Wi-Fi. For
+ * example in battery saving mode, Wi-Fi should be on but GPS should be off.
+ *
+ * It would be hard to automate these tests because the {@link Secure#LOCATION_MODE} API is only
+ * accessible to apps in the system image. Furthermore, selecting two of the modes requires the user
+ * to accept the NLP confirmation dialog.
+ */
+public abstract class LocationModeTestActivity
+        extends PassFailButtons.Activity implements Runnable {
+
+    private static final String STATE = "state";
+    protected static final int PASS = 1;
+    protected static final int FAIL = 2;
+    protected static final int WAIT_FOR_USER = 3;
+
+    protected int mState;
+    protected int[] mStatus;
+    private LayoutInflater mInflater;
+    private ViewGroup mItemList;
+    private Runnable mRunner;
+    private View mHandler;
+
+    @Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+
+        if (savedInstanceState != null) {
+            mState = savedInstanceState.getInt(STATE, 0);
+        }
+
+        mRunner = this;
+        mInflater = getLayoutInflater();
+        View view = mInflater.inflate(R.layout.location_mode_main, null);
+        mItemList = (ViewGroup) view.findViewById(R.id.test_items);
+        mHandler = mItemList;
+
+        createTestItems();
+        mStatus = new int[mItemList.getChildCount()];
+        setContentView(view);
+
+        setPassFailButtonClickListeners();
+
+        setInfoResources();
+
+        getPassButton().setEnabled(false);
+    }
+
+    @Override
+    protected void onSaveInstanceState(Bundle outState) {
+        outState.putInt(STATE, mState);
+    }
+
+    @Override
+    protected void onResume() {
+        super.onResume();
+        next();
+    }
+
+    /**
+     * Template method used by the subclass to create the checks corresponding to each value of
+     * {@link #mState}. Subclass should call {@link #createUserItem(int)} and {@link
+     * #createAutoItem(int)} as appropriate to generate each item.
+     */
+    protected abstract void createTestItems();
+
+    /**
+     * Template method used by the subclass to call {@link #setInfoResources(int, int, int)} with
+     * the appropriate resources.
+     */
+    protected abstract void setInfoResources();
+
+    /**
+     * Subclass can call this to create a test step where the user must perform some action such
+     * as setting the location mode.
+     */
+    protected View createUserItem(int stringId) {
+        View item = mInflater.inflate(R.layout.location_mode_item, mItemList, false);
+        TextView instructions = (TextView) item.findViewById(R.id.instructions);
+        instructions.setText(stringId);
+        mItemList.addView(item);
+        return item;
+    }
+
+    /**
+     * Subclass can call this to create a test step where the test automatically evaluates whether
+     * an expected condition is satisfied, such as GPS is off.
+     */
+    protected View createAutoItem(int stringId) {
+        View item = mInflater.inflate(R.layout.location_mode_item, mItemList, false);
+        TextView instructions = (TextView) item.findViewById(R.id.instructions);
+        instructions.setText(stringId);
+        View button = item.findViewById(R.id.launch_settings);
+        button.setVisibility(View.GONE);
+        mItemList.addView(item);
+        return item;
+    }
+
+    /**
+     * Set the visible state of a test item to passed or failed.
+     */
+    private void setItemState(int index, boolean passed) {
+        ViewGroup item = (ViewGroup) mItemList.getChildAt(index);
+        ImageView status = (ImageView) item.findViewById(R.id.status);
+        status.setImageResource(passed ? R.drawable.fs_good : R.drawable.fs_error);
+        View button = item.findViewById(R.id.launch_settings);
+        button.setClickable(false);
+        button.setEnabled(false);
+        status.invalidate();
+    }
+
+    /**
+     * Set the visible state of a test item to waiting.
+     */
+    protected void markItemWaiting(int index) {
+        ViewGroup item = (ViewGroup) mItemList.getChildAt(index);
+        ImageView status = (ImageView) item.findViewById(R.id.status);
+        status.setImageResource(R.drawable.fs_warning);
+        status.invalidate();
+    }
+
+    /**
+     * Advances the state machine.
+     */
+    public void run() {
+        // Advance test state until we find case where it hasn't passed (yet)
+        while (mState < mStatus.length && mStatus[mState] != WAIT_FOR_USER) {
+            if (mStatus[mState] == PASS) {
+                setItemState(mState, true);
+                mState++;
+            } else if (mStatus[mState] == FAIL) {
+                setItemState(mState, false);
+                return;
+            } else {
+                break;
+            }
+        }
+
+        if (mState < mStatus.length && mStatus[mState] == WAIT_FOR_USER) {
+            markItemWaiting(mState);
+        }
+
+        testAdvance(mState);
+
+        if (mState == mStatus.length - 1 && mStatus[mState] == PASS) {
+            // All tests run and pass
+            getPassButton().setEnabled(true);
+        }
+    }
+
+    /**
+     * Launches Locations &gt; Settings so the user can set the location mode. Public because it
+     * is referenced by layout.
+     */
+    public void launchSettings(View button) {
+        startActivity(new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS));
+    }
+
+    /**
+     * Return to the state machine to progress through the tests.
+     */
+    protected void next() {
+        mHandler.post(mRunner);
+    }
+
+    /**
+     * Wait for things to settle before returning to the state machine.
+     */
+    protected void delay() {
+        mHandler.postDelayed(mRunner, 2000);
+    }
+
+    // Tests
+
+    private int getLocationMode() {
+        ContentResolver cr = getContentResolver();
+        return Secure.getInt(cr, Secure.LOCATION_MODE, Secure.LOCATION_MODE_OFF);
+    }
+
+    protected void testIsOn(int i) {
+        int mode = getLocationMode();
+        boolean passed = mode != Secure.LOCATION_MODE_OFF;
+        if (passed) {
+            mStatus[i] = PASS;
+        } else {
+            mStatus[i] = WAIT_FOR_USER;
+        }
+        next();
+    }
+
+    protected void testIsExpectedMode(int i, int expectedMode) {
+        int mode = getLocationMode();
+        boolean passed = mode == expectedMode;
+        if (passed) {
+            mStatus[i] = PASS;
+            next();
+        } else {
+            mStatus[i] = WAIT_FOR_USER;
+            delay();
+        }
+    }
+
+    protected void testSecureProviderIsEnabled(int i, String provider) {
+        ContentResolver cr = getContentResolver();
+        boolean enabled = Secure.isLocationProviderEnabled(cr, provider);
+        mStatus[i] = enabled ? PASS : FAIL;
+        next();
+    }
+
+    protected void testSecureProviderIsDisabled(int i, String provider) {
+        ContentResolver cr = getContentResolver();
+        boolean enabled = Secure.isLocationProviderEnabled(cr, provider);
+        mStatus[i] = !enabled ? PASS : FAIL;
+        next();
+    }
+
+    protected void testManagerProviderIsEnabled(int i, String gpsProvider) {
+        LocationManager manager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
+        boolean enabled = manager.isProviderEnabled(gpsProvider);
+        mStatus[i] = enabled ? PASS : FAIL;
+        next();
+    }
+
+    protected void testManagerProviderIsDisabled(int i, String gpsProvider) {
+        LocationManager manager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
+        boolean enabled = manager.isProviderEnabled(gpsProvider);
+        mStatus[i] = !enabled ? PASS : FAIL;
+        next();
+    }
+
+    protected abstract void testAdvance(int state);
+}
diff --git a/apps/CtsVerifier/src/com/android/cts/verifier/nfc/NfcDialogs.java b/apps/CtsVerifier/src/com/android/cts/verifier/nfc/NfcDialogs.java
index c78062b..40a12ae 100644
--- a/apps/CtsVerifier/src/com/android/cts/verifier/nfc/NfcDialogs.java
+++ b/apps/CtsVerifier/src/com/android/cts/verifier/nfc/NfcDialogs.java
@@ -25,7 +25,7 @@
 import android.provider.Settings;
 
 /** Class containing methods to create common dialogs for NFC activities. */
-class NfcDialogs {
+public class NfcDialogs {
 
     static AlertDialog createNotEnabledDialog(final Context context) {
         return new AlertDialog.Builder(context)
@@ -57,6 +57,15 @@
                 .create();
     }
 
+    public static AlertDialog createHceTapReaderDialog(final Context context, String message) {
+        String baseString = context.getString(R.string.nfc_hce_tap_reader_message);
+        return new AlertDialog.Builder(context)
+                .setIcon(android.R.drawable.ic_dialog_alert)
+                .setTitle(R.string.nfc_hce_tap_reader_title)
+                .setMessage(message != null ? message + "\n\n" + baseString : baseString)
+                .setPositiveButton("OK", null)
+                .create();
+    }
     private NfcDialogs() {
     }
 }
diff --git a/apps/CtsVerifier/src/com/android/cts/verifier/nfc/NfcTestActivity.java b/apps/CtsVerifier/src/com/android/cts/verifier/nfc/NfcTestActivity.java
old mode 100755
new mode 100644
index b158ad3..cb90241
--- a/apps/CtsVerifier/src/com/android/cts/verifier/nfc/NfcTestActivity.java
+++ b/apps/CtsVerifier/src/com/android/cts/verifier/nfc/NfcTestActivity.java
@@ -20,6 +20,8 @@
 import com.android.cts.verifier.PassFailButtons;
 import com.android.cts.verifier.R;
 import com.android.cts.verifier.TestListAdapter.TestListItem;
+import com.android.cts.verifier.nfc.hce.HceEmulatorTestActivity;
+import com.android.cts.verifier.nfc.hce.HceReaderTestActivity;
 
 import android.content.Intent;
 import android.content.pm.PackageManager;
@@ -64,6 +66,16 @@
                     MIFARE_ULTRALIGHT_ID, getTagIntent(MifareUltralight.class), null));
         }
 
+        if (getPackageManager().hasSystemFeature(PackageManager.FEATURE_NFC_HOST_CARD_EMULATION)) {
+            adapter.add(TestListItem.newCategory(this, R.string.nfc_hce));
+            adapter.add(TestListItem.newTest(this, R.string.nfc_hce_reader_tests,
+                    HceReaderTestActivity.class.getName(),
+                    new Intent(this, HceReaderTestActivity.class), null));
+            adapter.add(TestListItem.newTest(this, R.string.nfc_hce_emulator_tests,
+                    HceEmulatorTestActivity.class.getName(),
+                    new Intent(this, HceEmulatorTestActivity.class), null));
+        }
+
         setTestListAdapter(adapter);
     }
 
diff --git a/apps/CtsVerifier/src/com/android/cts/verifier/nfc/hce/AccessService.java b/apps/CtsVerifier/src/com/android/cts/verifier/nfc/hce/AccessService.java
new file mode 100644
index 0000000..969f621
--- /dev/null
+++ b/apps/CtsVerifier/src/com/android/cts/verifier/nfc/hce/AccessService.java
@@ -0,0 +1,28 @@
+package com.android.cts.verifier.nfc.hce;
+
+import android.content.ComponentName;
+
+public class AccessService extends HceService {
+    static final ComponentName COMPONENT =
+            new ComponentName("com.android.cts.verifier",
+            AccessService.class.getName());
+
+    public static final String[] APDU_COMMAND_SEQUENCE = {
+        HceUtils.buildSelectApdu(HceUtils.ACCESS_AID),
+        "80CA01F000"
+    };
+
+    public static final String[] APDU_RESPOND_SEQUENCE = {
+        "123456789000",
+        "1481148114819000"
+    };
+
+    public AccessService() {
+        initialize(APDU_COMMAND_SEQUENCE, APDU_RESPOND_SEQUENCE);
+    }
+
+    @Override
+    public ComponentName getComponent() {
+        return COMPONENT;
+    }
+}
diff --git a/apps/CtsVerifier/src/com/android/cts/verifier/nfc/hce/BaseEmulatorActivity.java b/apps/CtsVerifier/src/com/android/cts/verifier/nfc/hce/BaseEmulatorActivity.java
new file mode 100644
index 0000000..bcd2b8d
--- /dev/null
+++ b/apps/CtsVerifier/src/com/android/cts/verifier/nfc/hce/BaseEmulatorActivity.java
@@ -0,0 +1,131 @@
+package com.android.cts.verifier.nfc.hce;
+
+import android.annotation.TargetApi;
+import android.app.ProgressDialog;
+import android.content.BroadcastReceiver;
+import android.content.ComponentName;
+import android.content.Context;
+import android.content.Intent;
+import android.content.IntentFilter;
+import android.nfc.NfcAdapter;
+import android.nfc.cardemulation.CardEmulation;
+import android.os.AsyncTask;
+import android.os.Bundle;
+import android.util.Log;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+
+import com.android.cts.verifier.PassFailButtons;
+import com.android.cts.verifier.R;
+import com.android.cts.verifier.nfc.hce.PaymentService1;
+
+@TargetApi(19)
+public abstract class BaseEmulatorActivity extends PassFailButtons.Activity {
+    static final String TAG = "BaseEmulatorActivity";
+    NfcAdapter mAdapter;
+    CardEmulation mCardEmulation;
+    ProgressDialog mSetupDialog;
+
+    final ArrayList<ComponentName> SERVICES = new ArrayList<ComponentName>(
+            Arrays.asList(
+            PaymentService1.COMPONENT,
+            PaymentService2.COMPONENT,
+            TransportService1.COMPONENT,
+            TransportService2.COMPONENT,
+            AccessService.COMPONENT,
+            ThroughputService.COMPONENT,
+            OffHostService.COMPONENT)
+    );
+
+    @Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+
+        mAdapter = NfcAdapter.getDefaultAdapter(this);
+        mCardEmulation = CardEmulation.getInstance(mAdapter);
+    }
+
+    abstract void onServicesSetup(boolean result);
+
+    abstract void onApduSequenceComplete(ComponentName component, long duration);
+
+    void onApduSequenceError() {
+
+    }
+
+    @Override
+    protected void onPause() {
+        super.onPause();
+        unregisterReceiver(mReceiver);
+    }
+
+    @Override
+    protected void onResume() {
+        super.onResume();
+        IntentFilter filter = new IntentFilter(HceUtils.ACTION_APDU_SEQUENCE_COMPLETE);
+        registerReceiver(mReceiver, filter);
+    }
+
+    final void setupServices(Context context, ComponentName... components) {
+        mSetupDialog = new ProgressDialog(context);
+        new SetupServicesTask().execute(components);
+    }
+
+    final BroadcastReceiver mReceiver = new BroadcastReceiver() {
+        @Override
+        public void onReceive(Context context, Intent intent) {
+            String action = intent.getAction();
+            if (HceUtils.ACTION_APDU_SEQUENCE_COMPLETE.equals(action)) {
+                // Get component whose sequence was completed
+                ComponentName component = intent.getParcelableExtra(HceUtils.EXTRA_COMPONENT);
+                long duration = intent.getLongExtra(HceUtils.EXTRA_DURATION, 0);
+                if (component != null) {
+                    onApduSequenceComplete(component, duration);
+                }
+            } else if (HceUtils.ACTION_APDU_SEQUENCE_ERROR.equals(action)) {
+                onApduSequenceError();
+            }
+        }
+    };
+
+    private class SetupServicesTask extends AsyncTask<ComponentName, Void, Boolean> {
+        @Override
+        protected void onPostExecute(Boolean result) {
+            super.onPostExecute(result);
+            mSetupDialog.dismiss();
+            onServicesSetup(result);
+        }
+
+        @Override
+        protected void onPreExecute() {
+            super.onPreExecute();
+            mSetupDialog.setTitle(R.string.nfc_hce_please_wait);
+            mSetupDialog.setMessage(getString(R.string.nfc_hce_setting_up));
+            mSetupDialog.setCancelable(false);
+            mSetupDialog.show();
+        }
+
+        @Override
+        protected Boolean doInBackground(ComponentName... components) {
+            List<ComponentName> enableComponents = Arrays.asList(components);
+            for (ComponentName component : SERVICES) {
+                if (enableComponents.contains(component)) {
+                    Log.d(TAG, "Enabling component " + component);
+                    HceUtils.enableComponent(getPackageManager(), component);
+                } else {
+                    Log.d(TAG, "Disabling component " + component);
+                    HceUtils.disableComponent(getPackageManager(), component);
+                }
+            }
+            // This is a trick to invalidate the HCE cache and avoid
+            // having to wait for PackageManager broadcasts to NFCService.
+            ComponentName bogusComponent = new ComponentName("com.android.cts.verifier",
+                    "com.android.cts.verifier.nfc.hce.BogusService");
+            mCardEmulation.isDefaultServiceForCategory(bogusComponent,
+                    CardEmulation.CATEGORY_PAYMENT);
+            return true;
+        }
+    };
+}
diff --git a/apps/CtsVerifier/src/com/android/cts/verifier/nfc/hce/ChangeDefaultEmulatorActivity.java b/apps/CtsVerifier/src/com/android/cts/verifier/nfc/hce/ChangeDefaultEmulatorActivity.java
new file mode 100644
index 0000000..0681f49
--- /dev/null
+++ b/apps/CtsVerifier/src/com/android/cts/verifier/nfc/hce/ChangeDefaultEmulatorActivity.java
@@ -0,0 +1,150 @@
+package com.android.cts.verifier.nfc.hce;
+
+import android.annotation.TargetApi;
+import android.app.AlertDialog;
+import android.content.ComponentName;
+import android.content.Context;
+import android.content.DialogInterface;
+import android.content.DialogInterface.OnClickListener;
+import android.content.Intent;
+import android.nfc.cardemulation.CardEmulation;
+import android.os.Bundle;
+
+import com.android.cts.verifier.R;
+import com.android.cts.verifier.nfc.NfcDialogs;
+
+@TargetApi(19)
+public class ChangeDefaultEmulatorActivity extends BaseEmulatorActivity implements OnClickListener {
+    final static int STATE_IDLE = 0;
+    final static int STATE_SERVICE1_SETTING_UP = 1;
+    final static int STATE_SERVICE2_SETTING_UP = 2;
+    final static int STATE_MAKING_SERVICE1_DEFAULT = 3;
+    final static int STATE_MAKING_SERVICE2_DEFAULT = 4;
+    final static int STATE_DEFAULT_CHANGED = 5;
+
+    boolean mReceiverRegistered = false;
+    int mState = STATE_IDLE;
+
+    @Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        setContentView(R.layout.pass_fail_text);
+        setPassFailButtonClickListeners();
+        getPassButton().setEnabled(false);
+
+        mState = STATE_SERVICE2_SETTING_UP;
+        setupServices(this, PaymentService2.COMPONENT);
+    }
+
+    @Override
+    protected void onResume() {
+        super.onResume();
+    }
+
+    @Override
+    void onServicesSetup(boolean result) {
+        if (mState == STATE_SERVICE2_SETTING_UP) {
+            mState = STATE_SERVICE1_SETTING_UP;
+            setupServices(this, PaymentService1.COMPONENT, PaymentService2.COMPONENT);
+            return;
+        }
+        // Verify HCE service 2 is the default
+        if (!mCardEmulation.isDefaultServiceForCategory(
+                PaymentService2.COMPONENT, CardEmulation.CATEGORY_PAYMENT)) {
+            mState = STATE_MAKING_SERVICE2_DEFAULT;
+            AlertDialog.Builder builder = new AlertDialog.Builder(this);
+            builder.setTitle("Note");
+            builder.setMessage(R.string.nfc_hce_change_preinstalled_wallet);
+            builder.setPositiveButton("OK", this);
+            builder.show();
+        } else {
+            mState = STATE_MAKING_SERVICE1_DEFAULT;
+            AlertDialog.Builder builder = new AlertDialog.Builder(this);
+            builder.setTitle("Note");
+            builder.setMessage(R.string.nfc_hce_change_default_help);
+            builder.setPositiveButton("OK", this);
+            builder.show();
+        }
+    }
+
+    @Override
+    protected void onPause() {
+        super.onPause();
+        if (mReceiverRegistered) {
+            unregisterReceiver(mReceiver);
+        }
+    }
+
+    public static Intent buildReaderIntent(Context context) {
+        Intent readerIntent = new Intent(context, SimpleReaderActivity.class);
+        readerIntent.putExtra(SimpleReaderActivity.EXTRA_APDUS,
+                PaymentService1.APDU_COMMAND_SEQUENCE);
+        readerIntent.putExtra(SimpleReaderActivity.EXTRA_RESPONSES,
+                PaymentService1.APDU_RESPOND_SEQUENCE);
+        readerIntent.putExtra(SimpleReaderActivity.EXTRA_LABEL,
+                context.getString(R.string.nfc_hce_change_default_reader));
+        return readerIntent;
+    }
+
+    @Override
+    void onApduSequenceComplete(ComponentName component, long duration) {
+        if (component.equals(PaymentService1.COMPONENT)) {
+            getPassButton().setEnabled(true);
+        }
+    }
+
+    @Override
+    public void onClick(DialogInterface dialog, int which) {
+        if (mState == STATE_MAKING_SERVICE1_DEFAULT) {
+            Intent changeDefault = new Intent(CardEmulation.ACTION_CHANGE_DEFAULT);
+            changeDefault.putExtra(CardEmulation.EXTRA_CATEGORY, CardEmulation.CATEGORY_PAYMENT);
+            changeDefault.putExtra(CardEmulation.EXTRA_SERVICE_COMPONENT, PaymentService1.COMPONENT);
+            startActivityForResult(changeDefault, 0);
+        } else if (mState == STATE_MAKING_SERVICE2_DEFAULT) {
+            Intent changeDefault = new Intent(CardEmulation.ACTION_CHANGE_DEFAULT);
+            changeDefault.putExtra(CardEmulation.EXTRA_CATEGORY, CardEmulation.CATEGORY_PAYMENT);
+            changeDefault.putExtra(CardEmulation.EXTRA_SERVICE_COMPONENT, PaymentService2.COMPONENT);
+            startActivityForResult(changeDefault, 0);
+        }
+    }
+
+    @Override
+    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
+        super.onActivityResult(requestCode, resultCode, data);
+        if (mState == STATE_MAKING_SERVICE1_DEFAULT) {
+            if (!mCardEmulation.isDefaultServiceForCategory(
+                    PaymentService1.COMPONENT, CardEmulation.CATEGORY_PAYMENT)) {
+                // Popup dialog-box, fail test
+                AlertDialog.Builder builder = new AlertDialog.Builder(this);
+                builder.setTitle("Test failed.");
+                builder.setMessage("PaymentService1 is not the default service according " +
+                        "to CardEmulation.getDefaultServiceForCategory(), verify the make " +
+                        "default implementation is correct.");
+                builder.setPositiveButton("OK", null);
+                builder.show();
+            } else {
+                mState = STATE_DEFAULT_CHANGED;
+                NfcDialogs.createHceTapReaderDialog(this, null).show();
+            }
+        } else if (mState == STATE_MAKING_SERVICE2_DEFAULT) {
+            if (!mCardEmulation.isDefaultServiceForCategory(
+                    PaymentService2.COMPONENT, CardEmulation.CATEGORY_PAYMENT)) {
+                // Popup dialog-box, fail test
+                AlertDialog.Builder builder = new AlertDialog.Builder(this);
+                builder.setTitle("Test failed.");
+                builder.setMessage("PaymentService2 is not the default service according " +
+                        "to CardEmulation.getDefaultServiceForCategory(), verify the make " +
+                        "default implementation is correct.");
+                builder.setPositiveButton("OK", null);
+                builder.show();
+            } else {
+                mState = STATE_MAKING_SERVICE1_DEFAULT;
+                AlertDialog.Builder builder = new AlertDialog.Builder(this);
+                builder.setTitle("Note");
+                builder.setMessage(R.string.nfc_hce_change_default_help);
+                builder.setPositiveButton("OK", this);
+                builder.show();
+            }
+        }
+    }
+}
diff --git a/apps/CtsVerifier/src/com/android/cts/verifier/nfc/hce/ConflictingNonPaymentEmulatorActivity.java b/apps/CtsVerifier/src/com/android/cts/verifier/nfc/hce/ConflictingNonPaymentEmulatorActivity.java
new file mode 100644
index 0000000..37d5207
--- /dev/null
+++ b/apps/CtsVerifier/src/com/android/cts/verifier/nfc/hce/ConflictingNonPaymentEmulatorActivity.java
@@ -0,0 +1,49 @@
+package com.android.cts.verifier.nfc.hce;
+
+import android.content.ComponentName;
+import android.content.Context;
+import android.content.Intent;
+import android.os.Bundle;
+
+import com.android.cts.verifier.R;
+import com.android.cts.verifier.nfc.NfcDialogs;
+
+public class ConflictingNonPaymentEmulatorActivity extends BaseEmulatorActivity {
+    @Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        setContentView(R.layout.pass_fail_text);
+        setPassFailButtonClickListeners();
+        getPassButton().setEnabled(false);
+        setupServices(this, TransportService1.COMPONENT, TransportService2.COMPONENT);
+    }
+
+    @Override
+    protected void onResume() {
+        super.onResume();
+    }
+
+    @Override
+    void onServicesSetup(boolean result) {
+        NfcDialogs.createHceTapReaderDialog(this,
+                getString(R.string.nfc_hce_conflicting_non_payment_help)).show();
+    }
+
+    public static Intent buildReaderIntent(Context context) {
+        Intent readerIntent = new Intent(context, SimpleReaderActivity.class);
+        readerIntent.putExtra(SimpleReaderActivity.EXTRA_APDUS,
+                TransportService2.APDU_COMMAND_SEQUENCE);
+        readerIntent.putExtra(SimpleReaderActivity.EXTRA_RESPONSES,
+                TransportService2.APDU_RESPOND_SEQUENCE);
+        readerIntent.putExtra(SimpleReaderActivity.EXTRA_LABEL,
+                context.getString(R.string.nfc_hce_conflicting_non_payment_reader));
+        return readerIntent;
+    }
+
+    @Override
+    void onApduSequenceComplete(ComponentName component, long duration) {
+        if (component.equals(TransportService2.COMPONENT)) {
+            getPassButton().setEnabled(true);
+        }
+    }
+}
diff --git a/apps/CtsVerifier/src/com/android/cts/verifier/nfc/hce/DefaultRouteEmulatorActivity.java b/apps/CtsVerifier/src/com/android/cts/verifier/nfc/hce/DefaultRouteEmulatorActivity.java
new file mode 100644
index 0000000..2de99e7
--- /dev/null
+++ b/apps/CtsVerifier/src/com/android/cts/verifier/nfc/hce/DefaultRouteEmulatorActivity.java
@@ -0,0 +1,49 @@
+package com.android.cts.verifier.nfc.hce;
+
+import android.content.ComponentName;
+import android.content.Context;
+import android.content.Intent;
+import android.os.Bundle;
+
+import com.android.cts.verifier.R;
+import com.android.cts.verifier.nfc.NfcDialogs;
+
+public class DefaultRouteEmulatorActivity extends BaseEmulatorActivity {
+    public static final String[] APDU_COMMAND_SEQUENCE = {
+        HceUtils.buildSelectApdu("A000000476416E64726F6964484345"),
+    };
+    public static final String[] APDU_RESPONSE_SEQUENCE = {
+        "148100009000"
+    };
+
+    @Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        setContentView(R.layout.pass_fail_text);
+        setPassFailButtonClickListeners();
+    }
+
+    @Override
+    protected void onResume() {
+        super.onResume();
+    }
+
+    @Override
+    void onServicesSetup(boolean result) {
+        NfcDialogs.createHceTapReaderDialog(this,
+                getString(R.string.nfc_hce_default_route_emulator_help)).show();
+    }
+
+    public static Intent buildReaderIntent(Context context) {
+        Intent readerIntent = new Intent(context, SimpleReaderActivity.class);
+        readerIntent.putExtra(SimpleReaderActivity.EXTRA_APDUS, APDU_COMMAND_SEQUENCE);
+        readerIntent.putExtra(SimpleReaderActivity.EXTRA_RESPONSES, APDU_RESPONSE_SEQUENCE);
+        readerIntent.putExtra(SimpleReaderActivity.EXTRA_LABEL,
+                context.getString(R.string.nfc_hce_default_route_reader));
+        return readerIntent;
+    }
+
+    @Override
+    void onApduSequenceComplete(ComponentName component, long duration) {
+    }
+}
diff --git a/apps/CtsVerifier/src/com/android/cts/verifier/nfc/hce/DualNonPaymentEmulatorActivity.java b/apps/CtsVerifier/src/com/android/cts/verifier/nfc/hce/DualNonPaymentEmulatorActivity.java
new file mode 100644
index 0000000..27b063c
--- /dev/null
+++ b/apps/CtsVerifier/src/com/android/cts/verifier/nfc/hce/DualNonPaymentEmulatorActivity.java
@@ -0,0 +1,63 @@
+package com.android.cts.verifier.nfc.hce;
+
+import android.content.ComponentName;
+import android.content.Context;
+import android.content.Intent;
+import android.os.Bundle;
+
+import com.android.cts.verifier.R;
+import com.android.cts.verifier.nfc.NfcDialogs;
+
+public class DualNonPaymentEmulatorActivity extends BaseEmulatorActivity {
+    @Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        setContentView(R.layout.pass_fail_text);
+        setPassFailButtonClickListeners();
+        getPassButton().setEnabled(false);
+        setupServices(this, TransportService2.COMPONENT, AccessService.COMPONENT);
+    }
+
+    @Override
+    protected void onResume() {
+        super.onResume();
+    }
+
+    @Override
+    void onServicesSetup(boolean result) {
+        NfcDialogs.createHceTapReaderDialog(this, null).show();
+    }
+
+    public static Intent buildReaderIntent(Context context) {
+        Intent readerIntent = new Intent(context, SimpleReaderActivity.class);
+        // Combine command/response APDU arrays
+        String[] commandSequences = new String[TransportService2.APDU_COMMAND_SEQUENCE.length +
+                                               AccessService.APDU_COMMAND_SEQUENCE.length];
+        System.arraycopy(TransportService2.APDU_COMMAND_SEQUENCE, 0, commandSequences, 0,
+                TransportService2.APDU_COMMAND_SEQUENCE.length);
+        System.arraycopy(AccessService.APDU_COMMAND_SEQUENCE, 0, commandSequences,
+                TransportService2.APDU_COMMAND_SEQUENCE.length,
+                AccessService.APDU_COMMAND_SEQUENCE.length);
+
+        String[] responseSequences = new String[TransportService2.APDU_RESPOND_SEQUENCE.length +
+                                               AccessService.APDU_RESPOND_SEQUENCE.length];
+        System.arraycopy(TransportService2.APDU_RESPOND_SEQUENCE, 0, responseSequences, 0,
+                TransportService2.APDU_RESPOND_SEQUENCE.length);
+        System.arraycopy(AccessService.APDU_RESPOND_SEQUENCE, 0, responseSequences,
+                TransportService2.APDU_RESPOND_SEQUENCE.length,
+                AccessService.APDU_RESPOND_SEQUENCE.length);
+
+        readerIntent.putExtra(SimpleReaderActivity.EXTRA_APDUS, commandSequences);
+        readerIntent.putExtra(SimpleReaderActivity.EXTRA_RESPONSES, responseSequences);
+        readerIntent.putExtra(SimpleReaderActivity.EXTRA_LABEL,
+                context.getString(R.string.nfc_hce_dual_non_payment_reader));
+        return readerIntent;
+    }
+
+    @Override
+    void onApduSequenceComplete(ComponentName component, long duration) {
+        if (component.equals(TransportService2.COMPONENT)) {
+            getPassButton().setEnabled(true);
+        }
+    }
+}
\ No newline at end of file
diff --git a/apps/CtsVerifier/src/com/android/cts/verifier/nfc/hce/DualPaymentEmulatorActivity.java b/apps/CtsVerifier/src/com/android/cts/verifier/nfc/hce/DualPaymentEmulatorActivity.java
new file mode 100644
index 0000000..125045f
--- /dev/null
+++ b/apps/CtsVerifier/src/com/android/cts/verifier/nfc/hce/DualPaymentEmulatorActivity.java
@@ -0,0 +1,111 @@
+package com.android.cts.verifier.nfc.hce;
+
+import android.annotation.TargetApi;
+import android.app.AlertDialog;
+import android.content.ComponentName;
+import android.content.Context;
+import android.content.DialogInterface;
+import android.content.DialogInterface.OnClickListener;
+import android.content.Intent;
+import android.nfc.cardemulation.CardEmulation;
+import android.os.Bundle;
+
+import com.android.cts.verifier.R;
+import com.android.cts.verifier.nfc.NfcDialogs;
+
+@TargetApi(19)
+public class DualPaymentEmulatorActivity extends BaseEmulatorActivity implements OnClickListener {
+    final static int STATE_IDLE = 0;
+    final static int STATE_SERVICE1_SETTING_UP = 1;
+    final static int STATE_SERVICE2_SETTING_UP = 2;
+    final static int STATE_MAKING_SERVICE2_DEFAULT = 3;
+
+    boolean mReceiverRegistered = false;
+    int mState = STATE_IDLE;
+
+    @Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        setContentView(R.layout.pass_fail_text);
+        setPassFailButtonClickListeners();
+        getPassButton().setEnabled(false);
+        mState = STATE_SERVICE2_SETTING_UP;
+        setupServices(this, PaymentService2.COMPONENT);
+    }
+
+    @Override
+    protected void onResume() {
+        super.onResume();
+    }
+
+    @Override
+    void onServicesSetup(boolean result) {
+        if (mState == STATE_SERVICE2_SETTING_UP) {
+            mState = STATE_SERVICE1_SETTING_UP;
+            setupServices(this, PaymentService1.COMPONENT, PaymentService2.COMPONENT);
+            return;
+        }
+        // Verify HCE service 2 is the default
+        if (!mCardEmulation.isDefaultServiceForCategory(
+                PaymentService2.COMPONENT, CardEmulation.CATEGORY_PAYMENT)) {
+            mState = STATE_MAKING_SERVICE2_DEFAULT;
+            AlertDialog.Builder builder = new AlertDialog.Builder(this);
+            builder.setTitle("Note");
+            builder.setMessage(R.string.nfc_hce_change_preinstalled_wallet);
+            builder.setPositiveButton("OK", this);
+            builder.show();
+        } else {
+            NfcDialogs.createHceTapReaderDialog(this,null).show();
+        }
+    }
+
+    @Override
+    protected void onPause() {
+        super.onPause();
+        if (mReceiverRegistered) {
+            unregisterReceiver(mReceiver);
+        }
+    }
+    @Override
+    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
+        super.onActivityResult(requestCode, resultCode, data);
+        if (!mCardEmulation.isDefaultServiceForCategory(
+                PaymentService2.COMPONENT, CardEmulation.CATEGORY_PAYMENT)) {
+            // Popup dialog-box, fail test
+            AlertDialog.Builder builder = new AlertDialog.Builder(this);
+            builder.setTitle("Test failed.");
+            builder.setMessage("PaymentService2 is not the default service according " +
+                    "to CardEmulation.getDefaultServiceForCategory(), verify the make " +
+                    "default implementation is correct.");
+            builder.setPositiveButton("OK", null);
+            builder.show();
+        } else {
+            NfcDialogs.createHceTapReaderDialog(this, null).show();
+        }
+    }
+    public static Intent buildReaderIntent(Context context) {
+        Intent readerIntent = new Intent(context, SimpleReaderActivity.class);
+        readerIntent.putExtra(SimpleReaderActivity.EXTRA_APDUS,
+                PaymentService2.APDU_COMMAND_SEQUENCE);
+        readerIntent.putExtra(SimpleReaderActivity.EXTRA_RESPONSES,
+                PaymentService2.APDU_RESPOND_SEQUENCE);
+        readerIntent.putExtra(SimpleReaderActivity.EXTRA_LABEL,
+                context.getString(R.string.nfc_hce_dual_payment_reader));
+        return readerIntent;
+    }
+
+    @Override
+    void onApduSequenceComplete(ComponentName component, long duration) {
+        if (component.equals(PaymentService2.COMPONENT)) {
+            getPassButton().setEnabled(true);
+        }
+    }
+
+    @Override
+    public void onClick(DialogInterface dialog, int which) {
+        Intent changeDefault = new Intent(CardEmulation.ACTION_CHANGE_DEFAULT);
+        changeDefault.putExtra(CardEmulation.EXTRA_CATEGORY, CardEmulation.CATEGORY_PAYMENT);
+        changeDefault.putExtra(CardEmulation.EXTRA_SERVICE_COMPONENT, PaymentService2.COMPONENT);
+        startActivityForResult(changeDefault, 0);
+    }
+}
diff --git a/apps/CtsVerifier/src/com/android/cts/verifier/nfc/hce/HceEmulatorTestActivity.java b/apps/CtsVerifier/src/com/android/cts/verifier/nfc/hce/HceEmulatorTestActivity.java
new file mode 100644
index 0000000..e85d387
--- /dev/null
+++ b/apps/CtsVerifier/src/com/android/cts/verifier/nfc/hce/HceEmulatorTestActivity.java
@@ -0,0 +1,98 @@
+/*
+ * Copyright (C) 2011 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.android.cts.verifier.nfc.hce;
+
+import com.android.cts.verifier.ArrayTestListAdapter;
+import com.android.cts.verifier.PassFailButtons;
+import com.android.cts.verifier.R;
+import com.android.cts.verifier.TestListAdapter.TestListItem;
+
+import android.content.Intent;
+import android.content.pm.PackageManager;
+import android.os.Bundle;
+
+/** Activity that lists all the NFC HCE emulator tests. */
+public class HceEmulatorTestActivity extends PassFailButtons.TestListActivity {
+
+    @Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        setContentView(R.layout.pass_fail_list);
+        setInfoResources(R.string.nfc_test, R.string.nfc_hce_emulator_test_info, 0);
+        setPassFailButtonClickListeners();
+
+        ArrayTestListAdapter adapter = new ArrayTestListAdapter(this);
+
+        if (getPackageManager().hasSystemFeature(PackageManager.FEATURE_NFC_HOST_CARD_EMULATION)) {
+            adapter.add(TestListItem.newCategory(this, R.string.nfc_hce_emulator_tests));
+
+            /*
+             * Only add this test when supported in platform
+            adapter.add(TestListItem.newTest(this, R.string.nfc_hce_default_route_emulator,
+                    DefaultRouteEmulatorActivity.class.getName(),
+                    new Intent(this, DefaultRouteEmulatorActivity.class), null));
+            */
+            adapter.add(TestListItem.newTest(this, R.string.nfc_hce_protocol_params_emulator,
+                    ProtocolParamsEmulatorActivity.class.getName(),
+                    new Intent(this, ProtocolParamsEmulatorActivity.class), null));
+
+            adapter.add(TestListItem.newTest(this, R.string.nfc_hce_single_payment_emulator,
+                    SinglePaymentEmulatorActivity.class.getName(),
+                    new Intent(this, SinglePaymentEmulatorActivity.class), null));
+
+            adapter.add(TestListItem.newTest(this, R.string.nfc_hce_dual_payment_emulator,
+                    DualPaymentEmulatorActivity.class.getName(),
+                    new Intent(this, DualPaymentEmulatorActivity.class), null));
+
+            adapter.add(TestListItem.newTest(this, R.string.nfc_hce_change_default_emulator,
+                    ChangeDefaultEmulatorActivity.class.getName(),
+                    new Intent(this, ChangeDefaultEmulatorActivity.class), null));
+
+
+            adapter.add(TestListItem.newTest(this, R.string.nfc_hce_single_non_payment_emulator,
+                    SingleNonPaymentEmulatorActivity.class.getName(),
+                    new Intent(this, SingleNonPaymentEmulatorActivity.class), null));
+
+            adapter.add(TestListItem.newTest(this, R.string.nfc_hce_dual_non_payment_emulator,
+                    DualNonPaymentEmulatorActivity.class.getName(),
+                    new Intent(this, DualNonPaymentEmulatorActivity.class), null));
+
+            adapter.add(TestListItem.newTest(this, R.string.nfc_hce_conflicting_non_payment_emulator,
+                    ConflictingNonPaymentEmulatorActivity.class.getName(),
+                    new Intent(this, ConflictingNonPaymentEmulatorActivity.class), null));
+
+            adapter.add(TestListItem.newTest(this, R.string.nfc_hce_throughput_emulator,
+                    ThroughputEmulatorActivity.class.getName(),
+                    new Intent(this, ThroughputEmulatorActivity.class), null));
+
+            adapter.add(TestListItem.newTest(this, R.string.nfc_hce_tap_test_emulator,
+                    TapTestEmulatorActivity.class.getName(),
+                    new Intent(this, TapTestEmulatorActivity.class), null));
+
+            adapter.add(TestListItem.newTest(this, R.string.nfc_hce_offhost_service_emulator,
+                    OffHostEmulatorActivity.class.getName(),
+                    new Intent(this, OffHostEmulatorActivity.class), null));
+
+            adapter.add(TestListItem.newTest(this, R.string.nfc_hce_on_and_offhost_service_emulator,
+                    OnAndOffHostEmulatorActivity.class.getName(),
+                    new Intent(this, OnAndOffHostEmulatorActivity.class), null));
+
+        }
+
+        setTestListAdapter(adapter);
+    }
+}
diff --git a/apps/CtsVerifier/src/com/android/cts/verifier/nfc/hce/HceReaderTestActivity.java b/apps/CtsVerifier/src/com/android/cts/verifier/nfc/hce/HceReaderTestActivity.java
new file mode 100644
index 0000000..704cc89
--- /dev/null
+++ b/apps/CtsVerifier/src/com/android/cts/verifier/nfc/hce/HceReaderTestActivity.java
@@ -0,0 +1,95 @@
+/*
+ * Copyright (C) 2011 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.android.cts.verifier.nfc.hce;
+
+import com.android.cts.verifier.ArrayTestListAdapter;
+import com.android.cts.verifier.PassFailButtons;
+import com.android.cts.verifier.R;
+import com.android.cts.verifier.TestListAdapter.TestListItem;
+
+import android.content.Intent;
+import android.content.pm.PackageManager;
+import android.os.Bundle;
+
+/** Activity that lists all the NFC HCE reader tests. */
+public class HceReaderTestActivity extends PassFailButtons.TestListActivity {
+    @Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        setContentView(R.layout.pass_fail_list);
+        setInfoResources(R.string.nfc_test, R.string.nfc_hce_reader_test_info, 0);
+        setPassFailButtonClickListeners();
+
+        ArrayTestListAdapter adapter = new ArrayTestListAdapter(this);
+
+        if (getPackageManager().hasSystemFeature(PackageManager.FEATURE_NFC_HOST_CARD_EMULATION)) {
+            adapter.add(TestListItem.newCategory(this, R.string.nfc_hce_reader_tests));
+            /*
+             * Only add this test when supported in platform
+            adapter.add(TestListItem.newTest(this, R.string.nfc_hce_default_route_reader,
+                    SimpleReaderActivity.class.getName(),
+                    DefaultRouteEmulatorActivity.buildReaderIntent(this), null));
+             */
+
+            adapter.add(TestListItem.newTest(this, R.string.nfc_hce_protocol_params_reader,
+                    ProtocolParamsReaderActivity.class.getName(),
+                    new Intent(this, ProtocolParamsReaderActivity.class), null));
+
+            adapter.add(TestListItem.newTest(this, R.string.nfc_hce_single_payment_reader,
+                    SimpleReaderActivity.class.getName(),
+                    SinglePaymentEmulatorActivity.buildReaderIntent(this), null));
+
+            adapter.add(TestListItem.newTest(this, R.string.nfc_hce_dual_payment_reader,
+                    SimpleReaderActivity.class.getName(),
+                    DualPaymentEmulatorActivity.buildReaderIntent(this), null));
+
+            adapter.add(TestListItem.newTest(this, R.string.nfc_hce_change_default_reader,
+                    SimpleReaderActivity.class.getName(),
+                    ChangeDefaultEmulatorActivity.buildReaderIntent(this), null));
+
+            adapter.add(TestListItem.newTest(this, R.string.nfc_hce_single_non_payment_reader,
+                    SimpleReaderActivity.class.getName(),
+                    SingleNonPaymentEmulatorActivity.buildReaderIntent(this), null));
+
+            adapter.add(TestListItem.newTest(this, R.string.nfc_hce_dual_non_payment_reader,
+                    SimpleReaderActivity.class.getName(),
+                    DualNonPaymentEmulatorActivity.buildReaderIntent(this), null));
+
+            adapter.add(TestListItem.newTest(this, R.string.nfc_hce_conflicting_non_payment_reader,
+                    SimpleReaderActivity.class.getName(),
+                    ConflictingNonPaymentEmulatorActivity.buildReaderIntent(this), null));
+
+            adapter.add(TestListItem.newTest(this, R.string.nfc_hce_throughput_reader,
+                    SimpleReaderActivity.class.getName(),
+                    ThroughputEmulatorActivity.buildReaderIntent(this), null));
+
+            adapter.add(TestListItem.newTest(this, R.string.nfc_hce_tap_test_reader,
+                    SimpleReaderActivity.class.getName(),
+                    TapTestEmulatorActivity.buildReaderIntent(this), null));
+
+            adapter.add(TestListItem.newTest(this, R.string.nfc_hce_offhost_service_reader,
+                    SimpleReaderActivity.class.getName(),
+                    OffHostEmulatorActivity.buildReaderIntent(this), null));
+
+            adapter.add(TestListItem.newTest(this, R.string.nfc_hce_on_and_offhost_service_reader,
+                    SimpleReaderActivity.class.getName(),
+                    OnAndOffHostEmulatorActivity.buildReaderIntent(this), null));
+        }
+
+        setTestListAdapter(adapter);
+    }
+}
diff --git a/apps/CtsVerifier/src/com/android/cts/verifier/nfc/hce/HceService.java b/apps/CtsVerifier/src/com/android/cts/verifier/nfc/hce/HceService.java
new file mode 100644
index 0000000..20b34df
--- /dev/null
+++ b/apps/CtsVerifier/src/com/android/cts/verifier/nfc/hce/HceService.java
@@ -0,0 +1,86 @@
+package com.android.cts.verifier.nfc.hce;
+
+import android.annotation.TargetApi;
+import android.content.ComponentName;
+import android.content.Intent;
+import android.nfc.cardemulation.HostApduService;
+import android.os.Bundle;
+import android.util.Log;
+
+import java.util.Arrays;
+
+@TargetApi(19)
+public abstract class HceService extends HostApduService {
+    final static String TAG = "HceService";
+
+    final static int STATE_IDLE = 0;
+    final static int STATE_IN_PROGRESS = 1;
+    final static int STATE_FAILED = 2;
+
+    // Variables below only used on main thread
+    String[] mCommandApdus = null;
+    String[] mResponseApdus = null;
+    int mApduIndex = 0;
+    int mState = STATE_IDLE;
+    long mStartTime;
+
+    public void initialize(String[] commandApdus, String[] responseApdus) {
+       mCommandApdus = commandApdus;
+       mResponseApdus = responseApdus;
+    }
+
+    @Override
+    public void onDeactivated(int arg0) {
+        mApduIndex = 0;
+        mState = STATE_IDLE;
+    }
+
+    public abstract ComponentName getComponent();
+
+    public void onApduSequenceComplete() {
+        Intent completionIntent = new Intent(HceUtils.ACTION_APDU_SEQUENCE_COMPLETE);
+        completionIntent.putExtra(HceUtils.EXTRA_COMPONENT, getComponent());
+        completionIntent.putExtra(HceUtils.EXTRA_DURATION,
+                System.currentTimeMillis() - mStartTime);
+        sendBroadcast(completionIntent);
+    }
+
+    public void onApduSequenceError() {
+        Intent errorIntent = new Intent(HceUtils.ACTION_APDU_SEQUENCE_ERROR);
+        sendBroadcast(errorIntent);
+    }
+
+    @Override
+    public byte[] processCommandApdu(byte[] arg0, Bundle arg1) {
+        if (mState == STATE_FAILED) {
+            // Don't accept any more APDUs until deactivated
+            return null;
+        }
+
+        if (mState == STATE_IDLE) {
+            mState = STATE_IN_PROGRESS;
+            mStartTime = System.currentTimeMillis();
+        }
+
+        if (mApduIndex >= mCommandApdus.length) {
+            Log.d(TAG, "Ignoring command APDU; protocol complete.");
+            // Ignore new APDUs after completion
+            return null;
+        } else {
+            if (!Arrays.equals(HceUtils.hexStringToBytes(mCommandApdus[mApduIndex]), arg0)) {
+                Log.d(TAG, "Unexpected command APDU: " + HceUtils.getHexBytes("", arg0));
+                onApduSequenceError();
+                return null;
+            } else {
+                // Send corresponding response APDU
+                byte[] responseApdu = HceUtils.hexStringToBytes(mResponseApdus[mApduIndex]);
+                mApduIndex++;
+                if (mApduIndex == mCommandApdus.length) {
+                    // Test passed
+                    onApduSequenceComplete();
+                }
+                return responseApdu;
+            }
+        }
+    }
+}
diff --git a/apps/CtsVerifier/src/com/android/cts/verifier/nfc/hce/HceUtils.java b/apps/CtsVerifier/src/com/android/cts/verifier/nfc/hce/HceUtils.java
new file mode 100644
index 0000000..3bab53b
--- /dev/null
+++ b/apps/CtsVerifier/src/com/android/cts/verifier/nfc/hce/HceUtils.java
@@ -0,0 +1,68 @@
+package com.android.cts.verifier.nfc.hce;
+
+import android.content.ComponentName;
+import android.content.pm.PackageManager;
+
+public final class HceUtils {
+    public static final String ACTION_APDU_SEQUENCE_COMPLETE =
+            "com.android.cts.verifier.nfc.hce.ACTION_APDU_SEQUENCE_COMPLETE";
+    public static final String ACTION_APDU_SEQUENCE_ERROR =
+            "com.android.cts.verifier.nfc.hce.ACTION_APDU_SEQUENCE_ERROR";
+
+    public static final String EXTRA_COMPONENT = "component";
+    public static final String EXTRA_DURATION = "duration";
+
+    public static final String PPSE_AID = "325041592E5359532E4444463031";
+    public static final String MC_AID = "A0000000041010";
+
+    public static final String TRANSPORT_AID = "F001020304";
+    public static final String ACCESS_AID = "F005060708";
+
+    public static void enableComponent(PackageManager pm, ComponentName component) {
+        pm.setComponentEnabledSetting(
+                component,
+                PackageManager.COMPONENT_ENABLED_STATE_ENABLED,
+                PackageManager.DONT_KILL_APP);
+    }
+
+    public static void disableComponent(PackageManager pm, ComponentName component) {
+        pm.setComponentEnabledSetting(
+                component,
+                PackageManager.COMPONENT_ENABLED_STATE_DISABLED,
+                PackageManager.DONT_KILL_APP);
+    }
+
+    public static String getHexBytes(String header, byte[] bytes) {
+        StringBuilder sb = new StringBuilder();
+        if (header != null) {
+            sb.append(header + ": ");
+        }
+        for (byte b : bytes) {
+            sb.append(String.format("%02X ", b));
+        }
+        return sb.toString();
+    }
+
+    public static byte[] hexStringToBytes(String s) {
+        if (s == null || s.length() == 0) return null;
+        int len = s.length();
+        if (len % 2 != 0) {
+            s = '0' + s;
+            len++;
+        }
+        byte[] data = new byte[len / 2];
+        for (int i = 0; i < len; i += 2) {
+            data[i / 2] = (byte) ((Character.digit(s.charAt(i), 16) << 4)
+                                 + Character.digit(s.charAt(i+1), 16));
+        }
+        return data;
+    }
+
+    public static final String buildSelectApdu(String aid) {
+        StringBuilder sb = new StringBuilder();
+        sb.append("00A40400");
+        sb.append(String.format("%02X", aid.length() / 2));
+        sb.append(aid);
+        return sb.toString();
+    }
+}
diff --git a/apps/CtsVerifier/src/com/android/cts/verifier/nfc/hce/OffHostEmulatorActivity.java b/apps/CtsVerifier/src/com/android/cts/verifier/nfc/hce/OffHostEmulatorActivity.java
new file mode 100644
index 0000000..216f35a
--- /dev/null
+++ b/apps/CtsVerifier/src/com/android/cts/verifier/nfc/hce/OffHostEmulatorActivity.java
@@ -0,0 +1,46 @@
+package com.android.cts.verifier.nfc.hce;
+
+import android.annotation.TargetApi;
+import android.content.ComponentName;
+import android.content.Context;
+import android.content.Intent;
+import android.os.Bundle;
+
+import com.android.cts.verifier.R;
+import com.android.cts.verifier.nfc.NfcDialogs;
+
+@TargetApi(19)
+public class OffHostEmulatorActivity extends BaseEmulatorActivity {
+    @Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        setContentView(R.layout.pass_fail_text);
+        setPassFailButtonClickListeners();
+        setupServices(this, OffHostService.COMPONENT);
+    }
+
+    @Override
+    protected void onResume() {
+        super.onResume();
+    }
+
+    @Override
+    void onServicesSetup(boolean result) {
+        NfcDialogs.createHceTapReaderDialog(this, getString(R.string.nfc_hce_offhost_emulator_help)).show();
+    }
+
+    public static Intent buildReaderIntent(Context context) {
+        Intent readerIntent = new Intent(context, SimpleReaderActivity.class);
+        readerIntent.putExtra(SimpleReaderActivity.EXTRA_APDUS,
+                OffHostService.APDU_COMMAND_SEQUENCE);
+        readerIntent.putExtra(SimpleReaderActivity.EXTRA_RESPONSES,
+                OffHostService.APDU_RESPOND_SEQUENCE);
+        readerIntent.putExtra(SimpleReaderActivity.EXTRA_LABEL,
+                context.getString(R.string.nfc_hce_offhost_service_reader));
+        return readerIntent;
+    }
+
+    @Override
+    void onApduSequenceComplete(ComponentName component, long duration) {
+    }
+}
diff --git a/apps/CtsVerifier/src/com/android/cts/verifier/nfc/hce/OffHostService.java b/apps/CtsVerifier/src/com/android/cts/verifier/nfc/hce/OffHostService.java
new file mode 100644
index 0000000..c087c99
--- /dev/null
+++ b/apps/CtsVerifier/src/com/android/cts/verifier/nfc/hce/OffHostService.java
@@ -0,0 +1,23 @@
+package com.android.cts.verifier.nfc.hce;
+
+import android.content.ComponentName;
+
+public class OffHostService {
+    public static final ComponentName COMPONENT =
+            new ComponentName("com.android.cts.verifier",
+                    OffHostService.class.getName());
+
+    public static final String[] APDU_COMMAND_SEQUENCE = {
+        HceUtils.buildSelectApdu("A000000151000000"),
+        "80CA9F7F00",
+        HceUtils.buildSelectApdu("A000000003000000"),
+        "80CA9F7F00"
+    };
+
+    public static final String[] APDU_RESPOND_SEQUENCE = {
+        "*",
+        "*",
+        "*",
+        "*"
+    };
+}
diff --git a/apps/CtsVerifier/src/com/android/cts/verifier/nfc/hce/OnAndOffHostEmulatorActivity.java b/apps/CtsVerifier/src/com/android/cts/verifier/nfc/hce/OnAndOffHostEmulatorActivity.java
new file mode 100644
index 0000000..3d5190f
--- /dev/null
+++ b/apps/CtsVerifier/src/com/android/cts/verifier/nfc/hce/OnAndOffHostEmulatorActivity.java
@@ -0,0 +1,67 @@
+package com.android.cts.verifier.nfc.hce;
+
+import android.annotation.TargetApi;
+import android.content.ComponentName;
+import android.content.Context;
+import android.content.Intent;
+import android.os.Bundle;
+
+import com.android.cts.verifier.R;
+import com.android.cts.verifier.nfc.NfcDialogs;
+
+@TargetApi(19)
+public class OnAndOffHostEmulatorActivity extends BaseEmulatorActivity {
+    @Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        setContentView(R.layout.pass_fail_text);
+        setPassFailButtonClickListeners();
+        getPassButton().setEnabled(false);
+        setupServices(this, OffHostService.COMPONENT, AccessService.COMPONENT);
+    }
+
+    @Override
+    protected void onResume() {
+        super.onResume();
+    }
+
+    @Override
+    void onServicesSetup(boolean result) {
+        NfcDialogs.createHceTapReaderDialog(this, getString(R.string.nfc_hce_on_and_offhost_emulator_help)).show();
+    }
+
+    public static Intent buildReaderIntent(Context context) {
+        // Combine command/response APDU arrays
+        String[] commandSequences = new String[OffHostService.APDU_COMMAND_SEQUENCE.length +
+                                               AccessService.APDU_COMMAND_SEQUENCE.length];
+        System.arraycopy(OffHostService.APDU_COMMAND_SEQUENCE, 0, commandSequences, 0,
+                OffHostService.APDU_COMMAND_SEQUENCE.length);
+        System.arraycopy(AccessService.APDU_COMMAND_SEQUENCE, 0, commandSequences,
+                OffHostService.APDU_COMMAND_SEQUENCE.length,
+                AccessService.APDU_COMMAND_SEQUENCE.length);
+
+        String[] responseSequences = new String[OffHostService.APDU_RESPOND_SEQUENCE.length +
+                                               AccessService.APDU_RESPOND_SEQUENCE.length];
+        System.arraycopy(OffHostService.APDU_RESPOND_SEQUENCE, 0, responseSequences, 0,
+                OffHostService.APDU_RESPOND_SEQUENCE.length);
+        System.arraycopy(AccessService.APDU_RESPOND_SEQUENCE, 0, responseSequences,
+                OffHostService.APDU_RESPOND_SEQUENCE.length,
+                AccessService.APDU_RESPOND_SEQUENCE.length);
+
+        Intent readerIntent = new Intent(context, SimpleReaderActivity.class);
+        readerIntent.putExtra(SimpleReaderActivity.EXTRA_APDUS,
+                commandSequences);
+        readerIntent.putExtra(SimpleReaderActivity.EXTRA_RESPONSES,
+                responseSequences);
+        readerIntent.putExtra(SimpleReaderActivity.EXTRA_LABEL,
+                context.getString(R.string.nfc_hce_on_and_offhost_service_reader));
+        return readerIntent;
+    }
+
+    @Override
+    void onApduSequenceComplete(ComponentName component, long duration) {
+        if (component.equals(AccessService.COMPONENT)) {
+            getPassButton().setEnabled(true);
+        }
+    }
+}
diff --git a/apps/CtsVerifier/src/com/android/cts/verifier/nfc/hce/PaymentService1.java b/apps/CtsVerifier/src/com/android/cts/verifier/nfc/hce/PaymentService1.java
new file mode 100644
index 0000000..f6119eb
--- /dev/null
+++ b/apps/CtsVerifier/src/com/android/cts/verifier/nfc/hce/PaymentService1.java
@@ -0,0 +1,32 @@
+package com.android.cts.verifier.nfc.hce;
+
+import android.content.ComponentName;
+
+public class PaymentService1 extends HceService {
+    static final String TAG = "PaymentService1";
+
+    static final ComponentName COMPONENT =
+            new ComponentName("com.android.cts.verifier",
+            PaymentService1.class.getName());
+
+    public static final String[] APDU_COMMAND_SEQUENCE = {
+        HceUtils.buildSelectApdu(HceUtils.PPSE_AID),
+        HceUtils.buildSelectApdu(HceUtils.MC_AID),
+        "80CA01F000"
+    };
+
+    public static final String[] APDU_RESPOND_SEQUENCE = {
+        "FFFF9000",
+        "FFEF9000",
+        "FFDFFFAABB9000"
+    };
+
+    public PaymentService1() {
+        initialize(APDU_COMMAND_SEQUENCE, APDU_RESPOND_SEQUENCE);
+    }
+
+    @Override
+    public ComponentName getComponent() {
+        return COMPONENT;
+    }
+}
\ No newline at end of file
diff --git a/apps/CtsVerifier/src/com/android/cts/verifier/nfc/hce/PaymentService2.java b/apps/CtsVerifier/src/com/android/cts/verifier/nfc/hce/PaymentService2.java
new file mode 100644
index 0000000..23664b9
--- /dev/null
+++ b/apps/CtsVerifier/src/com/android/cts/verifier/nfc/hce/PaymentService2.java
@@ -0,0 +1,28 @@
+package com.android.cts.verifier.nfc.hce;
+
+import android.content.ComponentName;
+
+public class PaymentService2 extends HceService {
+    static final ComponentName COMPONENT =
+            new ComponentName("com.android.cts.verifier",
+            PaymentService2.class.getName());
+
+    public static final String[] APDU_COMMAND_SEQUENCE = {
+        HceUtils.buildSelectApdu(HceUtils.PPSE_AID),
+        HceUtils.buildSelectApdu(HceUtils.MC_AID)
+    };
+
+    public static final String[] APDU_RESPOND_SEQUENCE = {
+        "12349000",
+        "56789000"
+    };
+
+    public PaymentService2() {
+        initialize(APDU_COMMAND_SEQUENCE, APDU_RESPOND_SEQUENCE);
+    }
+
+    @Override
+    public ComponentName getComponent() {
+        return COMPONENT;
+    }
+}
diff --git a/apps/CtsVerifier/src/com/android/cts/verifier/nfc/hce/ProtocolParamsEmulatorActivity.java b/apps/CtsVerifier/src/com/android/cts/verifier/nfc/hce/ProtocolParamsEmulatorActivity.java
new file mode 100644
index 0000000..70842a5
--- /dev/null
+++ b/apps/CtsVerifier/src/com/android/cts/verifier/nfc/hce/ProtocolParamsEmulatorActivity.java
@@ -0,0 +1,32 @@
+package com.android.cts.verifier.nfc.hce;
+
+import android.content.ComponentName;
+import android.os.Bundle;
+
+import com.android.cts.verifier.R;
+import com.android.cts.verifier.nfc.NfcDialogs;
+
+public class ProtocolParamsEmulatorActivity extends BaseEmulatorActivity {
+    @Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        setContentView(R.layout.pass_fail_text);
+        setPassFailButtonClickListeners();
+        getPassButton().setEnabled(true);
+    }
+
+    @Override
+    protected void onResume() {
+        super.onResume();
+        NfcDialogs.createHceTapReaderDialog(this,
+                getString(R.string.nfc_hce_protocol_params_emulator_help)).show();
+    }
+
+    @Override
+    void onServicesSetup(boolean result) {
+    }
+
+    @Override
+    void onApduSequenceComplete(ComponentName component, long duration) {
+    }
+}
diff --git a/apps/CtsVerifier/src/com/android/cts/verifier/nfc/hce/ProtocolParamsReaderActivity.java b/apps/CtsVerifier/src/com/android/cts/verifier/nfc/hce/ProtocolParamsReaderActivity.java
new file mode 100644
index 0000000..d3504ff
--- /dev/null
+++ b/apps/CtsVerifier/src/com/android/cts/verifier/nfc/hce/ProtocolParamsReaderActivity.java
@@ -0,0 +1,218 @@
+package com.android.cts.verifier.nfc.hce;
+
+import android.annotation.TargetApi;
+import android.nfc.NfcAdapter;
+import android.nfc.NfcAdapter.ReaderCallback;
+import android.nfc.tech.IsoDep;
+import android.nfc.tech.NfcA;
+import android.nfc.Tag;
+import android.os.Bundle;
+import android.widget.TextView;
+
+import com.android.cts.verifier.PassFailButtons;
+import com.android.cts.verifier.R;
+
+import java.io.IOException;
+
+@TargetApi(19)
+public class ProtocolParamsReaderActivity extends PassFailButtons.Activity implements ReaderCallback {
+    public static final String TAG = "ProtocolParamsReaderActivity";
+
+    NfcAdapter mAdapter;
+
+    TextView mTextView;
+
+    @Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        setContentView(R.layout.pass_fail_text);
+        setPassFailButtonClickListeners();
+
+        setTitle(R.string.nfc_hce_protocol_params_reader);
+
+        mAdapter = NfcAdapter.getDefaultAdapter(this);
+        mTextView = (TextView) findViewById(R.id.text);
+        mTextView.setTextSize(12.0f);
+    }
+
+    @Override
+    protected void onResume() {
+        super.onResume();
+        mAdapter.enableReaderMode(this, this, NfcAdapter.FLAG_READER_NFC_A |
+                NfcAdapter.FLAG_READER_NFC_BARCODE | NfcAdapter.FLAG_READER_SKIP_NDEF_CHECK, null);
+    }
+
+    public boolean parseProtocolParameters(StringBuilder sb, byte[] uid,
+            short sak, byte[] atqa, byte[] ats) {
+
+        boolean success = true;
+
+        sb.append("UID: " + HceUtils.getHexBytes(null, uid) + "\n\n");
+        sb.append("SAK: 0x" + Integer.toHexString(sak & 0xFF) + "\n");
+
+        if ((sak & 0x20) != 0) {
+            sb.append("    (OK) ISO-DEP bit (0x20) is set.\n");
+        } else {
+            success = false;
+            sb.append("    (FAIL) ISO-DEP bit (0x20) is NOT set.\n");
+        }
+
+        if ((sak & 0x40) != 0) {
+            sb.append("    (OK) P2P bit (0x40) is set.\n");
+        } else {
+            sb.append("    (WARN) P2P bit (0x40) is NOT set.\n");
+        }
+
+        sb.append("\n");
+        sb.append("ATQA: " + HceUtils.getHexBytes(null, atqa) + "\n");
+        sb.append("\n");
+
+        sb.append("ATS: " + HceUtils.getHexBytes(null, ats) + "\n");
+        sb.append("    TL: 0x" + Integer.toHexString(ats[0] & 0xFF) + "\n");
+        sb.append("    T0: 0x" + Integer.toHexString(ats[1] & 0xFF) + "\n");
+
+        boolean ta_present = false;
+        boolean tb_present = false;
+        boolean tc_present = false;
+        int atsIndex = 1;
+        if ((ats[atsIndex] & 0x40) != 0) {
+            sb.append("        (OK) T(C) is present (bit 7 is set).\n");
+            tc_present = true;
+        } else {
+            success = false;
+            sb.append("        (FAIL) T(C) is not present (bit 7 is NOT set).\n");
+        }
+        if ((ats[atsIndex] & 0x20) != 0) {
+            sb.append("        (OK) T(B) is present (bit 6 is set).\n");
+            tb_present = true;
+        } else {
+            success = false;
+            sb.append("        (FAIL) T(B) is not present (bit 6 is NOT set).\n");
+        }
+        if ((ats[atsIndex] & 0x10) != 0) {
+            sb.append("        (OK) T(A) is present (bit 5 is set).\n");
+            ta_present = true;
+        } else {
+            success = false;
+            sb.append("        (FAIL) T(A) is not present (bit 5 is NOT set).\n");
+        }
+        int fsc = ats[atsIndex] & 0x0F;
+        if (fsc > 8) {
+            success = false;
+            sb.append("        (FAIL) FSC " + Integer.toString(fsc) + " is > 8\n");
+        } else if (fsc < 2) {
+            sb.append("        (FAIL EMVCO) FSC " + Integer.toString(fsc) + " is < 2\n");
+        } else {
+            sb.append("        (OK) FSC = " + Integer.toString(fsc) + "\n");
+        }
+
+        atsIndex++;
+        if (ta_present) {
+            sb.append("    TA: 0x" + Integer.toHexString(ats[atsIndex] & 0xff) + "\n");
+            if ((ats[atsIndex] & 0x80) != 0) {
+                sb.append("        (OK) bit 8 set, indicating only same bit rate divisor.\n");
+            } else {
+                sb.append("        (FAIL EMVCO) bit 8 NOT set, indicating support for assymetric " +
+                        "bit rate divisors. EMVCo requires bit 8 set.\n");
+            }
+            if ((ats[atsIndex] & 0x70) != 0) {
+                sb.append("        (FAIL EMVCO) EMVCo requires bits 7 to 5 set to 0.\n");
+            } else {
+                sb.append("        (OK) bits 7 to 5 indicating only 106 kbit/s L->P supported.\n");
+            }
+            if ((ats[atsIndex] & 0x7) != 0) {
+                sb.append("        (FAIL EMVCO) EMVCo requires bits 3 to 1 set to 0.\n");
+            } else {
+                sb.append("        (OK) bits 3 to 1 indicating only 106 kbit/s P->L supported.\n");
+            }
+            atsIndex++;
+        }
+
+        if (tb_present) {
+            sb.append("    TB: 0x" + Integer.toHexString(ats[3] & 0xFF) + "\n");
+            int fwi = (ats[atsIndex] & 0xF0) >> 4;
+            if (fwi > 8) {
+                success = false;
+                sb.append("        (FAIL) FWI=" + Integer.toString(fwi) + ", should be <= 8\n");
+            } else if (fwi == 8) {
+                sb.append("        (FAIL EMVCO) FWI=" + Integer.toString(fwi) +
+                        ", EMVCo requires <= 7\n");
+            } else {
+                sb.append("        (OK) FWI=" + Integer.toString(fwi) + "\n");
+            }
+            int sfgi = ats[atsIndex] & 0x0F;
+            if (sfgi > 8) {
+                success = false;
+                sb.append("        (FAIL) SFGI=" + Integer.toString(sfgi) + ", should be <= 8\n");
+            } else {
+                sb.append("        (OK) SFGI=" + Integer.toString(sfgi) + "\n");
+            }
+            atsIndex++;
+        }
+
+        if (tc_present) {
+            sb.append("    TC: 0x" + Integer.toHexString(ats[atsIndex] & 0xFF) + "\n");
+            boolean apSupported = (ats[atsIndex] & 0x10) != 0;
+            boolean didSupported = (ats[atsIndex] & 0x02) != 0;
+            boolean nadSupported = (ats[atsIndex] & 0x01) != 0;
+            if (nadSupported) {
+                success = false;
+                sb.append("        (FAIL) NAD bit is not allowed to be set.\n");
+            } else {
+                sb.append("        (OK) NAD bit is not set.\n");
+            }
+            atsIndex++;
+            // See if there's any bytes left for general bytes
+            if (atsIndex + 1 < ats.length) {
+                int bytesToCopy = ats.length - atsIndex;
+                byte[] historical_bytes = new byte[bytesToCopy];
+                System.arraycopy(ats, atsIndex, historical_bytes, 0, bytesToCopy);
+                sb.append("\n(OK) Historical bytes: " +
+                        HceUtils.getHexBytes(null, historical_bytes));
+            }
+        }
+        return success;
+    }
+
+    @Override
+    public void onTagDiscovered(Tag tag) {
+        final StringBuilder sb = new StringBuilder();
+        IsoDep isoDep = IsoDep.get(tag);
+        NfcA nfcA = NfcA.get(tag);
+        boolean success = false;
+        if (nfcA == null || isoDep == null) {
+            return;
+        }
+        try {
+            nfcA.connect();
+            byte[] ats = nfcA.transceive(new byte[] { (byte) 0xE0, (byte)0xF0});
+            success = parseProtocolParameters(sb, tag.getId(), nfcA.getSak(), nfcA.getAtqa(), ats);
+        } catch (IOException e) {
+            sb.insert(0, "Test failed. IOException (did you keep the devices in range?)\n\n.");
+        } finally {
+            if (success) {
+                runOnUiThread(new Runnable() {
+                    @Override
+                    public void run() {
+                        mTextView.setText(sb.toString());
+                        getPassButton().setEnabled(true);
+                    }
+                });
+            } else {
+                runOnUiThread(new Runnable() {
+                    @Override
+                    public void run() {
+                        mTextView.setText(sb.toString());
+                        getPassButton().setEnabled(false);
+                    }
+                });
+            }
+            try {
+                nfcA.transceive(new byte[] {(byte) 0xC2});
+                nfcA.close();
+                isoDep.connect();
+            } catch (IOException e) {
+            }
+        }
+    }
+}
diff --git a/apps/CtsVerifier/src/com/android/cts/verifier/nfc/hce/SimpleReaderActivity.java b/apps/CtsVerifier/src/com/android/cts/verifier/nfc/hce/SimpleReaderActivity.java
new file mode 100644
index 0000000..6c15811
--- /dev/null
+++ b/apps/CtsVerifier/src/com/android/cts/verifier/nfc/hce/SimpleReaderActivity.java
@@ -0,0 +1,181 @@
+package com.android.cts.verifier.nfc.hce;
+
+import android.annotation.TargetApi;
+import android.app.AlertDialog;
+import android.content.Intent;
+import android.content.SharedPreferences;
+import android.nfc.NfcAdapter;
+import android.nfc.NfcAdapter.ReaderCallback;
+import android.nfc.tech.IsoDep;
+import android.nfc.Tag;
+import android.os.Bundle;
+import android.util.Log;
+import android.view.View;
+import android.widget.AdapterView;
+import android.widget.AdapterView.OnItemSelectedListener;
+import android.widget.ArrayAdapter;
+import android.widget.Spinner;
+import android.widget.TextView;
+
+import com.android.cts.verifier.PassFailButtons;
+import com.android.cts.verifier.R;
+
+import java.io.IOException;
+import java.util.Arrays;
+
+@TargetApi(19)
+public class SimpleReaderActivity extends PassFailButtons.Activity implements ReaderCallback,
+        OnItemSelectedListener {
+    public static final String PREFS_NAME = "HceTypePrefs";
+
+    public static final String TAG = "SimpleReaderActivity";
+    public static final String EXTRA_APDUS = "apdus";
+    public static final String EXTRA_RESPONSES = "responses";
+    public static final String EXTRA_LABEL = "label";
+
+    NfcAdapter mAdapter;
+    String[] mApdus;
+    String[] mResponses;
+
+    TextView mTextView;
+    Spinner mSpinner;
+    SharedPreferences mPrefs;
+
+    @Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        setContentView(R.layout.nfc_hce_reader);
+        setPassFailButtonClickListeners();
+        getPassButton().setEnabled(false);
+
+        String label = getIntent().getStringExtra(EXTRA_LABEL);
+        setTitle(label);
+
+        mAdapter = NfcAdapter.getDefaultAdapter(this);
+        mTextView = (TextView) findViewById(R.id.text);
+        mTextView.setTextSize(12.0f);
+        mTextView.setText(R.string.nfc_hce_type_selection);
+
+        Spinner spinner = (Spinner) findViewById(R.id.type_ab_selection);
+        ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this,
+                R.array.nfc_types_array, android.R.layout.simple_spinner_item);
+        adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
+        spinner.setAdapter(adapter);
+        spinner.setOnItemSelectedListener(this);
+
+        mPrefs = getSharedPreferences(PREFS_NAME, 0);
+        boolean isTypeB = mPrefs.getBoolean("typeB", false);
+        if (isTypeB) {
+            spinner.setSelection(1);
+        }
+    }
+
+    @Override
+    protected void onResume() {
+        super.onResume();
+        mAdapter.enableReaderMode(this, this, NfcAdapter.FLAG_READER_NFC_A |
+                NfcAdapter.FLAG_READER_NFC_BARCODE | NfcAdapter.FLAG_READER_SKIP_NDEF_CHECK, null);
+        Intent intent = getIntent();
+        mApdus = intent.getStringArrayExtra(EXTRA_APDUS);
+        mResponses = intent.getStringArrayExtra(EXTRA_RESPONSES);
+    }
+
+    @Override
+    public void onTagDiscovered(Tag tag) {
+        final StringBuilder sb = new StringBuilder();
+        IsoDep isoDep = IsoDep.get(tag);
+        if (isoDep == null) {
+            // TODO dialog box
+            return;
+        }
+
+        try {
+            isoDep.connect();
+            isoDep.setTimeout(5000);
+            int count = 0;
+            boolean success = true;
+            long startTime = System.currentTimeMillis();
+            for (String apdu: mApdus) {
+                sb.append("Request APDU:\n");
+                sb.append(apdu + "\n\n");
+                long apduStartTime = System.currentTimeMillis();
+                byte[] response = isoDep.transceive(HceUtils.hexStringToBytes(apdu));
+                long apduEndTime = System.currentTimeMillis();
+                sb.append("Response APDU (in " + Long.toString(apduEndTime - apduStartTime) +
+                        " ms):\n");
+                sb.append(HceUtils.getHexBytes(null, response));
+
+                sb.append("\n\n\n");
+                boolean wildCard = "*".equals(mResponses[count]);
+                byte[] expectedResponse = HceUtils.hexStringToBytes(mResponses[count]);
+                Log.d(TAG, HceUtils.getHexBytes("APDU response: ", response));
+                if (!wildCard && !Arrays.equals(response, expectedResponse)) {
+                    Log.d(TAG, "Unexpected APDU response: " + HceUtils.getHexBytes("", response));
+                    success = false;
+                    break;
+                }
+                count++;
+            }
+            if (success) {
+                sb.insert(0, "Total APDU exchange time: " +
+                        Long.toString(System.currentTimeMillis() - startTime) + " ms.\n\n");
+                runOnUiThread(new Runnable() {
+                    @Override
+                    public void run() {
+                        mTextView.setText(sb.toString());
+                        getPassButton().setEnabled(true);
+                    }
+                });
+            } else {
+                sb.insert(0, "FAIL. Total APDU exchange time: " +
+                        Long.toString(System.currentTimeMillis() - startTime) + " ms.\n\n");
+                runOnUiThread(new Runnable() {
+                    @Override
+                    public void run() {
+                        mTextView.setText(sb.toString());
+                        AlertDialog.Builder builder = new AlertDialog.Builder(SimpleReaderActivity.this);
+                        builder.setTitle("Test failed");
+                        builder.setMessage("An unexpected response APDU was received, or no APDUs were received at all.");
+                        builder.setPositiveButton("OK", null);
+                        builder.show();
+                    }
+                });
+            }
+        } catch (IOException e) {
+            sb.insert(0, "Test failed. IOException (did you keep the devices in range?)\n\n.");
+            runOnUiThread(new Runnable() {
+                @Override
+                public void run() {
+                    mTextView.setText(sb.toString());
+                }
+            });
+        } finally {
+        }
+    }
+
+    @Override
+    public void onItemSelected(AdapterView<?> parent, View view, int position,
+            long id) {
+        if (position == 0) {
+            // Type-A
+            mAdapter.disableReaderMode(this);
+            mAdapter.enableReaderMode(this, this, NfcAdapter.FLAG_READER_NFC_A |
+                NfcAdapter.FLAG_READER_NFC_BARCODE | NfcAdapter.FLAG_READER_SKIP_NDEF_CHECK, null);
+            SharedPreferences.Editor editor = mPrefs.edit();
+            editor.putBoolean("typeB", false);
+            editor.commit();
+        } else {
+            // Type-B
+            mAdapter.disableReaderMode(this);
+            mAdapter.enableReaderMode(this, this, NfcAdapter.FLAG_READER_NFC_B |
+                    NfcAdapter.FLAG_READER_SKIP_NDEF_CHECK, null);
+            SharedPreferences.Editor editor = mPrefs.edit();
+            editor.putBoolean("typeB", true);
+            editor.commit();
+        }
+    }
+
+    @Override
+    public void onNothingSelected(AdapterView<?> parent) {
+    }
+}
diff --git a/apps/CtsVerifier/src/com/android/cts/verifier/nfc/hce/SingleNonPaymentEmulatorActivity.java b/apps/CtsVerifier/src/com/android/cts/verifier/nfc/hce/SingleNonPaymentEmulatorActivity.java
new file mode 100644
index 0000000..694199b
--- /dev/null
+++ b/apps/CtsVerifier/src/com/android/cts/verifier/nfc/hce/SingleNonPaymentEmulatorActivity.java
@@ -0,0 +1,48 @@
+package com.android.cts.verifier.nfc.hce;
+
+import android.content.ComponentName;
+import android.content.Context;
+import android.content.Intent;
+import android.os.Bundle;
+
+import com.android.cts.verifier.R;
+import com.android.cts.verifier.nfc.NfcDialogs;
+
+public class SingleNonPaymentEmulatorActivity extends BaseEmulatorActivity {
+    @Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        setContentView(R.layout.pass_fail_text);
+        setPassFailButtonClickListeners();
+        getPassButton().setEnabled(false);
+        setupServices(this, TransportService1.COMPONENT);
+    }
+
+    @Override
+    protected void onResume() {
+        super.onResume();
+    }
+
+    @Override
+    void onServicesSetup(boolean result) {
+        NfcDialogs.createHceTapReaderDialog(this, null).show();
+    }
+
+    public static Intent buildReaderIntent(Context context) {
+        Intent readerIntent = new Intent(context, SimpleReaderActivity.class);
+        readerIntent.putExtra(SimpleReaderActivity.EXTRA_APDUS,
+                TransportService1.APDU_COMMAND_SEQUENCE);
+        readerIntent.putExtra(SimpleReaderActivity.EXTRA_RESPONSES,
+                TransportService1.APDU_RESPOND_SEQUENCE);
+        readerIntent.putExtra(SimpleReaderActivity.EXTRA_LABEL,
+                context.getString(R.string.nfc_hce_single_non_payment_reader));
+        return readerIntent;
+    }
+
+    @Override
+    void onApduSequenceComplete(ComponentName component, long duration) {
+        if (component.equals(TransportService1.COMPONENT)) {
+            getPassButton().setEnabled(true);
+        }
+    }
+}
diff --git a/apps/CtsVerifier/src/com/android/cts/verifier/nfc/hce/SinglePaymentEmulatorActivity.java b/apps/CtsVerifier/src/com/android/cts/verifier/nfc/hce/SinglePaymentEmulatorActivity.java
new file mode 100644
index 0000000..13b2fe8
--- /dev/null
+++ b/apps/CtsVerifier/src/com/android/cts/verifier/nfc/hce/SinglePaymentEmulatorActivity.java
@@ -0,0 +1,89 @@
+package com.android.cts.verifier.nfc.hce;
+
+import android.annotation.TargetApi;
+import android.app.AlertDialog;
+import android.content.ComponentName;
+import android.content.Context;
+import android.content.DialogInterface;
+import android.content.DialogInterface.OnClickListener;
+import android.content.Intent;
+import android.nfc.cardemulation.CardEmulation;
+import android.os.Bundle;
+import com.android.cts.verifier.R;
+import com.android.cts.verifier.nfc.NfcDialogs;
+
+@TargetApi(19)
+public class SinglePaymentEmulatorActivity extends BaseEmulatorActivity implements OnClickListener {
+    @Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        setContentView(R.layout.pass_fail_text);
+        setPassFailButtonClickListeners();
+        getPassButton().setEnabled(false);
+        setupServices(this, PaymentService1.COMPONENT);
+    }
+
+    @Override
+    protected void onResume() {
+        super.onResume();
+    }
+
+    @Override
+    void onServicesSetup(boolean result) {
+        // Verify HCE service 1 is the default
+        if (!mCardEmulation.isDefaultServiceForCategory(
+                PaymentService1.COMPONENT, CardEmulation.CATEGORY_PAYMENT)) {
+            AlertDialog.Builder builder = new AlertDialog.Builder(this);
+            builder.setTitle("Note");
+            builder.setMessage(R.string.nfc_hce_change_preinstalled_wallet);
+            builder.setPositiveButton("OK", this);
+            builder.show();
+        } else {
+	        NfcDialogs.createHceTapReaderDialog(this, null).show();
+        }
+    }
+
+    public static Intent buildReaderIntent(Context context) {
+        Intent readerIntent = new Intent(context, SimpleReaderActivity.class);
+        readerIntent.putExtra(SimpleReaderActivity.EXTRA_APDUS,
+                PaymentService1.APDU_COMMAND_SEQUENCE);
+        readerIntent.putExtra(SimpleReaderActivity.EXTRA_RESPONSES,
+                PaymentService1.APDU_RESPOND_SEQUENCE);
+        readerIntent.putExtra(SimpleReaderActivity.EXTRA_LABEL,
+                context.getString(R.string.nfc_hce_single_payment_reader));
+        return readerIntent;
+    }
+
+    @Override
+    void onApduSequenceComplete(ComponentName component, long duration) {
+        if (component.equals(PaymentService1.COMPONENT)) {
+            getPassButton().setEnabled(true);
+        }
+    }
+
+    @Override
+    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
+        super.onActivityResult(requestCode, resultCode, data);
+        if (!mCardEmulation.isDefaultServiceForCategory(
+                PaymentService1.COMPONENT, CardEmulation.CATEGORY_PAYMENT)) {
+            // Popup dialog-box, fail test
+            AlertDialog.Builder builder = new AlertDialog.Builder(this);
+            builder.setTitle("Test failed.");
+            builder.setMessage("PaymentService1 is not the default service according " +
+                    "to CardEmulation.getDefaultServiceForCategory(), verify the make " +
+                    "default implementation is correct.");
+            builder.setPositiveButton("OK", null);
+            builder.show();
+        } else {
+            NfcDialogs.createHceTapReaderDialog(this, null).show();
+        }
+    }
+
+    @Override
+    public void onClick(DialogInterface dialog, int which) {
+        Intent changeDefault = new Intent(CardEmulation.ACTION_CHANGE_DEFAULT);
+        changeDefault.putExtra(CardEmulation.EXTRA_CATEGORY, CardEmulation.CATEGORY_PAYMENT);
+        changeDefault.putExtra(CardEmulation.EXTRA_SERVICE_COMPONENT, PaymentService1.COMPONENT);
+        startActivityForResult(changeDefault, 0);
+    }
+}
diff --git a/apps/CtsVerifier/src/com/android/cts/verifier/nfc/hce/TapTestEmulatorActivity.java b/apps/CtsVerifier/src/com/android/cts/verifier/nfc/hce/TapTestEmulatorActivity.java
new file mode 100644
index 0000000..2eea89c
--- /dev/null
+++ b/apps/CtsVerifier/src/com/android/cts/verifier/nfc/hce/TapTestEmulatorActivity.java
@@ -0,0 +1,65 @@
+package com.android.cts.verifier.nfc.hce;
+
+import android.annotation.TargetApi;
+import android.content.ComponentName;
+import android.content.Context;
+import android.content.Intent;
+import android.os.Bundle;
+import android.widget.TextView;
+
+import com.android.cts.verifier.R;
+import com.android.cts.verifier.nfc.NfcDialogs;
+
+@TargetApi(19)
+public class TapTestEmulatorActivity extends BaseEmulatorActivity {
+    TextView mTextView;
+    int mNumTaps;
+
+    @Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        setContentView(R.layout.pass_fail_text);
+        setPassFailButtonClickListeners();
+        getPassButton().setEnabled(false);
+        mTextView = (TextView) findViewById(R.id.text);
+        setupServices(this, TransportService1.COMPONENT);
+    }
+
+    @Override
+    protected void onResume() {
+        super.onResume();
+        mNumTaps = 0;
+        mTextView.setText("Number of successful taps: 0/50.");
+    }
+
+    @Override
+    void onServicesSetup(boolean result) {
+        NfcDialogs.createHceTapReaderDialog(this,
+                getString(R.string.nfc_hce_tap_test_emulator_help)).show();
+    }
+
+    public static Intent buildReaderIntent(Context context) {
+        Intent readerIntent = new Intent(context, SimpleReaderActivity.class);
+        readerIntent.putExtra(SimpleReaderActivity.EXTRA_APDUS,
+                TransportService1.APDU_COMMAND_SEQUENCE);
+        readerIntent.putExtra(SimpleReaderActivity.EXTRA_RESPONSES,
+                TransportService1.APDU_RESPOND_SEQUENCE);
+        readerIntent.putExtra(SimpleReaderActivity.EXTRA_LABEL,
+                context.getString(R.string.nfc_hce_tap_test_reader));
+        return readerIntent;
+    }
+
+    @Override
+    void onApduSequenceComplete(ComponentName component, long duration) {
+        if (component.equals(TransportService1.COMPONENT)) {
+            mNumTaps++;
+            if (mNumTaps <= 50) {
+                mTextView.setText("Number of successful taps: " + Integer.toString(mNumTaps) +
+                        "/50.");
+            }
+            if (mNumTaps >= 50) {
+                getPassButton().setEnabled(true);
+            }
+        }
+    }
+}
diff --git a/apps/CtsVerifier/src/com/android/cts/verifier/nfc/hce/ThroughputEmulatorActivity.java b/apps/CtsVerifier/src/com/android/cts/verifier/nfc/hce/ThroughputEmulatorActivity.java
new file mode 100644
index 0000000..f050d77
--- /dev/null
+++ b/apps/CtsVerifier/src/com/android/cts/verifier/nfc/hce/ThroughputEmulatorActivity.java
@@ -0,0 +1,64 @@
+package com.android.cts.verifier.nfc.hce;
+
+import android.annotation.TargetApi;
+import android.content.ComponentName;
+import android.content.Context;
+import android.content.Intent;
+import android.os.Bundle;
+import android.widget.TextView;
+
+import com.android.cts.verifier.R;
+import com.android.cts.verifier.nfc.NfcDialogs;
+
+@TargetApi(19)
+public class ThroughputEmulatorActivity extends BaseEmulatorActivity {
+    TextView mTextView;
+
+    @Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        setContentView(R.layout.pass_fail_text);
+        setPassFailButtonClickListeners();
+        getPassButton().setEnabled(false);
+        mTextView = (TextView) findViewById(R.id.text);
+        setupServices(this, ThroughputService.COMPONENT);
+    }
+
+    @Override
+    protected void onResume() {
+        super.onResume();
+    }
+
+    @Override
+    void onServicesSetup(boolean result) {
+        NfcDialogs.createHceTapReaderDialog(this,
+                getString(R.string.nfc_hce_throughput_emulator_help)).show();
+    }
+
+    public static Intent buildReaderIntent(Context context) {
+        Intent readerIntent = new Intent(context, SimpleReaderActivity.class);
+        readerIntent.putExtra(SimpleReaderActivity.EXTRA_APDUS,
+                ThroughputService.APDU_COMMAND_SEQUENCE);
+        readerIntent.putExtra(SimpleReaderActivity.EXTRA_RESPONSES,
+                ThroughputService.APDU_RESPOND_SEQUENCE);
+        readerIntent.putExtra(SimpleReaderActivity.EXTRA_LABEL,
+                context.getString(R.string.nfc_hce_throughput_reader));
+        return readerIntent;
+    }
+
+    @Override
+    void onApduSequenceComplete(ComponentName component, long duration) {
+        if (component.equals(ThroughputService.COMPONENT)) {
+            long timePerApdu = duration / ThroughputService.APDU_COMMAND_SEQUENCE.length;
+            if (duration < 1000) {
+                mTextView.setText("PASS. Total duration: " + Long.toString(duration) + " ms " +
+                        "( " + Long.toString(timePerApdu) + " ms per APDU roundtrip).");
+                getPassButton().setEnabled(true);
+            } else {
+                mTextView.setText("FAIL. Total duration: " + Long.toString(duration) + " ms " +
+                        "(" + Long.toString(timePerApdu) + " ms per APDU roundtrip)." +
+                        " Require <= 60ms per APDU roundtrip.");
+            }
+        }
+    }
+}
diff --git a/apps/CtsVerifier/src/com/android/cts/verifier/nfc/hce/ThroughputService.java b/apps/CtsVerifier/src/com/android/cts/verifier/nfc/hce/ThroughputService.java
new file mode 100644
index 0000000..8f826ff
--- /dev/null
+++ b/apps/CtsVerifier/src/com/android/cts/verifier/nfc/hce/ThroughputService.java
@@ -0,0 +1,58 @@
+package com.android.cts.verifier.nfc.hce;
+
+import android.content.ComponentName;
+
+public class ThroughputService extends HceService {
+    static final String TAG = "PaymentService1";
+
+    static final ComponentName COMPONENT =
+            new ComponentName("com.android.cts.verifier",
+            ThroughputService.class.getName());
+
+    public static final String[] APDU_COMMAND_SEQUENCE = {
+        HceUtils.buildSelectApdu("F0010203040607FF"),
+        "80CA010000",
+        "80CA010100",
+        "80CA010200",
+        "80CA010300",
+        "80CA010400",
+        "80CA010500",
+        "80CA010600",
+        "80CA010700",
+        "80CA010800",
+        "80CA010900",
+        "80CA010A00",
+        "80CA010B00",
+        "80CA010C00",
+        "80CA010D00",
+        "80CA010E00",
+    };
+
+    public static final String[] APDU_RESPOND_SEQUENCE = {
+        "9000",
+        "0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9000",
+        "0001FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9000",
+        "0002FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9000",
+        "0003FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9000",
+        "0004FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9000",
+        "0005FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9000",
+        "0006FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9000",
+        "0007FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9000",
+        "0008FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9000",
+        "0009FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9000",
+        "000AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9000",
+        "000BFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9000",
+        "000CFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9000",
+        "000DFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9000",
+        "000EFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9000",
+    };
+
+    public ThroughputService() {
+        initialize(APDU_COMMAND_SEQUENCE, APDU_RESPOND_SEQUENCE);
+    }
+
+    @Override
+    public ComponentName getComponent() {
+        return COMPONENT;
+    }
+}
\ No newline at end of file
diff --git a/apps/CtsVerifier/src/com/android/cts/verifier/nfc/hce/TransportService1.java b/apps/CtsVerifier/src/com/android/cts/verifier/nfc/hce/TransportService1.java
new file mode 100644
index 0000000..c751e76
--- /dev/null
+++ b/apps/CtsVerifier/src/com/android/cts/verifier/nfc/hce/TransportService1.java
@@ -0,0 +1,28 @@
+package com.android.cts.verifier.nfc.hce;
+
+import android.content.ComponentName;
+
+public class TransportService1 extends HceService {
+    static final ComponentName COMPONENT =
+            new ComponentName("com.android.cts.verifier",
+            TransportService1.class.getName());
+
+    public static final String[] APDU_COMMAND_SEQUENCE = {
+        HceUtils.buildSelectApdu(HceUtils.TRANSPORT_AID),
+        "80CA01E000"
+    };
+
+    public static final String[] APDU_RESPOND_SEQUENCE = {
+        "80CA9000",
+        "83947102829000"
+    };
+
+    public TransportService1() {
+        initialize(APDU_COMMAND_SEQUENCE, APDU_RESPOND_SEQUENCE);
+    }
+
+    @Override
+    public ComponentName getComponent() {
+        return COMPONENT;
+    }
+}
diff --git a/apps/CtsVerifier/src/com/android/cts/verifier/nfc/hce/TransportService2.java b/apps/CtsVerifier/src/com/android/cts/verifier/nfc/hce/TransportService2.java
new file mode 100644
index 0000000..0815b9c
--- /dev/null
+++ b/apps/CtsVerifier/src/com/android/cts/verifier/nfc/hce/TransportService2.java
@@ -0,0 +1,28 @@
+package com.android.cts.verifier.nfc.hce;
+
+import android.content.ComponentName;
+
+public class TransportService2 extends HceService {
+    static final ComponentName COMPONENT =
+            new ComponentName("com.android.cts.verifier",
+            TransportService2.class.getName());
+
+    public static final String[] APDU_COMMAND_SEQUENCE = {
+        HceUtils.buildSelectApdu(HceUtils.TRANSPORT_AID),
+        "80CA01E100"
+    };
+
+    public static final String[] APDU_RESPOND_SEQUENCE = {
+        "81CA9000",
+        "7483624748FEFE9000"
+    };
+
+    public TransportService2() {
+        initialize(APDU_COMMAND_SEQUENCE, APDU_RESPOND_SEQUENCE);
+    }
+
+    @Override
+    public ComponentName getComponent() {
+        return COMPONENT;
+    }
+}
diff --git a/apps/CtsVerifier/src/com/android/cts/verifier/nls/MockListener.java b/apps/CtsVerifier/src/com/android/cts/verifier/nls/MockListener.java
index 8549214..0b74fa3 100644
--- a/apps/CtsVerifier/src/com/android/cts/verifier/nls/MockListener.java
+++ b/apps/CtsVerifier/src/com/android/cts/verifier/nls/MockListener.java
@@ -49,12 +49,12 @@
     static final int RESULT_TIMEOUT = Activity.RESULT_FIRST_USER;
     static final int RESULT_NO_SERVER = Activity.RESULT_FIRST_USER + 1;
 
-    static final String JSON_FLAGS = "flag";
-    static final String JSON_ICON = "icon";
-    static final String JSON_ID = "id";
-    static final String JSON_PACKAGE = "pkg";
-    static final String JSON_WHEN = "when";
-    static final String JSON_TAG = "tag";
+    public static final String JSON_FLAGS = "flag";
+    public static final String JSON_ICON = "icon";
+    public static final String JSON_ID = "id";
+    public static final String JSON_PACKAGE = "pkg";
+    public static final String JSON_WHEN = "when";
+    public static final String JSON_TAG = "tag";
 
     private ArrayList<String> mPosted = new ArrayList<String>();
     private ArrayList<String> mPayloads = new ArrayList<String>();
diff --git a/apps/CtsVerifier/src/com/android/cts/verifier/sample/SampleTestActivity.java b/apps/CtsVerifier/src/com/android/cts/verifier/sample/SampleTestActivity.java
new file mode 100644
index 0000000..25f90d9
--- /dev/null
+++ b/apps/CtsVerifier/src/com/android/cts/verifier/sample/SampleTestActivity.java
@@ -0,0 +1,102 @@
+/*
+ * Copyright (C) 2014 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.android.cts.verifier.sample;
+
+import com.android.cts.verifier.PassFailButtons;
+import com.android.cts.verifier.R;
+
+import android.content.Intent;
+import android.net.Uri;
+import android.os.Bundle;
+import android.view.View;
+import android.widget.Button;
+
+import java.io.File;
+import java.io.FileOutputStream;
+
+/**
+ * A sample CTS Verifier test case for testing file transfers using bluetooth sharing.
+ *
+ * This test assumes bluetooth is turned on and the device is already paired with a second device.
+ * Note: the second device need not be an Android device; it could be a laptop or desktop.
+ */
+public class SampleTestActivity extends PassFailButtons.Activity {
+
+    /**
+     * The name of the test file being transferred.
+     */
+    private static final String FILE_NAME = "test.txt";
+
+    /**
+     * The content of the test file being transferred.
+     */
+    private static final String TEST_STRING = "Sample Test String";
+
+    @Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+
+        // Setup the UI.
+        setContentView(R.layout.pass_fail_sample);
+        setPassFailButtonClickListeners();
+        setInfoResources(R.string.sample_test, R.string.sample_test_info, -1);
+        // Get the share button and attach the listener.
+        Button shareBtn = (Button) findViewById(R.id.sample_share_btn);
+        shareBtn.setOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View v) {
+                try {
+                    createFileAndShare();
+                } catch (Exception e) {
+                    e.printStackTrace();
+                }
+            }
+        });
+    }
+
+    /**
+     * Creates a temporary file containing the test string and then issues the intent to share it.
+     *
+     * @throws Exception
+     */
+    private void createFileAndShare() throws Exception {
+        // Use the external cache directory so the file will be deleted when the app is uninstalled
+        // and the file can be accessed by other apps, such as the sharing app.
+        File dir = getExternalCacheDir ();
+        // Create the file with the given name.
+        File file = new File(dir, FILE_NAME);
+        FileOutputStream outputStream = null;
+        try {
+            // Write the test string to the test file.
+            outputStream = new FileOutputStream(file);
+            outputStream.write(TEST_STRING.getBytes());
+
+            // Create the share intent.
+            Intent intent = new Intent();
+            intent.setAction(Intent.ACTION_SEND);
+            intent.setType("text/plain");
+            intent.putExtra(Intent.EXTRA_STREAM, Uri.fromFile(file));
+            startActivity(intent);
+        } finally {
+            // Clean up.
+            if (outputStream != null) {
+                outputStream.close();
+            }
+        }
+
+    }
+}
diff --git a/apps/CtsVerifier/src/com/android/cts/verifier/security/CAInstallNotificationVerifierActivity.java b/apps/CtsVerifier/src/com/android/cts/verifier/security/CAInstallNotificationVerifierActivity.java
new file mode 100644
index 0000000..3e8110e
--- /dev/null
+++ b/apps/CtsVerifier/src/com/android/cts/verifier/security/CAInstallNotificationVerifierActivity.java
@@ -0,0 +1,301 @@
+/*
+ * Copyright (C) 2013 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.android.cts.verifier.security;
+
+import android.app.Service;
+import android.content.ActivityNotFoundException;
+import android.content.Intent;
+import android.os.Bundle;
+import android.os.IBinder;
+import android.util.Log;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.View.OnClickListener;
+import android.view.ViewGroup;
+import android.widget.Button;
+import android.widget.ImageView;
+import android.widget.TextView;
+
+import com.android.cts.verifier.PassFailButtons;
+import com.android.cts.verifier.R;
+
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.concurrent.LinkedBlockingQueue;
+
+public class CAInstallNotificationVerifierActivity extends PassFailButtons.Activity
+implements Runnable {
+    static final String TAG = CAInstallNotificationVerifierActivity.class.getSimpleName();
+    private static final String STATE = "state";
+    private static final int PASS = 1;
+    private static final int FAIL = 2;
+    private static final int WAIT_FOR_USER = 3;
+    private static LinkedBlockingQueue<String> sDeletedQueue = new LinkedBlockingQueue<String>();
+
+    private int mState;
+    private int[] mStatus;
+    private LayoutInflater mInflater;
+    private ViewGroup mItemList;
+    private Runnable mRunner;
+    private View mHandler;
+
+    private static final String CERT_ASSET_NAME = "myCA.cer";
+    private File certStagingFile = new File("/sdcard/", CERT_ASSET_NAME);
+
+    protected boolean doneInstallingCert = false;
+    protected boolean doneCheckingInSettings = false;
+    protected boolean doneCheckingNotification = false;
+    protected boolean doneDismissingNotification = false;
+
+
+    public static class DismissService extends Service {
+        @Override
+        public IBinder onBind(Intent intent) {
+            return null;
+        }
+
+        @Override
+        public void onStart(Intent intent, int startId) {
+            sDeletedQueue.offer(intent.getAction());
+        }
+    }
+
+    @Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+
+        if (savedInstanceState != null) {
+            mState = savedInstanceState.getInt(STATE, 0);
+        }
+        mRunner = this;
+        mInflater = getLayoutInflater();
+        View view = mInflater.inflate(R.layout.cainstallnotify_main, null);
+        mItemList = (ViewGroup) view.findViewById(R.id.ca_notify_test_items);
+        mHandler = mItemList;
+        createTestItems();
+        mStatus = new int[mItemList.getChildCount()];
+        setContentView(view);
+
+        setPassFailButtonClickListeners();
+        setInfoResources(R.string.cacert_test, R.string.cacert_info, -1);
+    }
+
+    @Override
+    protected void onSaveInstanceState (Bundle outState) {
+        outState.putInt(STATE, mState);
+    }
+
+    @Override
+    protected void onResume() {
+        super.onResume();
+        next();
+    }
+
+    // Interface Utilities
+
+    private void createTestItems() {
+        createUserItem(R.string.cacert_install_cert, new InstallCert());
+        createUserItem(R.string.cacert_check_cert_in_settings, new OpenTrustedCredentials());
+        createUserItem(R.string.cacert_check_notification,
+                new DoneCheckingNotification(), R.string.cacert_done);
+        createUserItem(R.string.cacert_dismiss_notification,
+                new DoneCheckingDismissed(), R.string.cacert_done);
+    }
+
+    private void setItemState(int index, boolean passed) {
+        ViewGroup item = (ViewGroup) mItemList.getChildAt(index);
+        ImageView status = (ImageView) item.findViewById(R.id.ca_notify_status);
+        status.setImageResource(passed ? R.drawable.fs_good : R.drawable.fs_error);
+        View button = item.findViewById(R.id.ca_notify_do_something);
+        button.setClickable(false);
+        button.setEnabled(false);
+        status.invalidate();
+    }
+
+    private void markItemWaiting(int index) {
+        ViewGroup item = (ViewGroup) mItemList.getChildAt(index);
+        ImageView status = (ImageView) item.findViewById(R.id.ca_notify_status);
+        status.setImageResource(R.drawable.fs_warning);
+        status.invalidate();
+    }
+
+    private View createUserItem(int stringId, OnClickListener listener) {
+        return createUserItem(stringId, listener, 0);
+    }
+
+    private View createUserItem(int stringId, OnClickListener listener, int buttonLabel) {
+        View item = mInflater.inflate(R.layout.cainstallnotify_item, mItemList, false);
+        TextView instructions = (TextView) item.findViewById(R.id.ca_notify_instructions);
+        instructions.setText(stringId);
+        Button button = (Button) item.findViewById(R.id.ca_notify_do_something);
+        if (buttonLabel != 0) {
+            button.setText(buttonLabel);
+        }
+        button.setOnClickListener(listener);
+        mItemList.addView(item);
+        return item;
+    }
+
+    // Test management
+
+    public void run() {
+        while (mState < mStatus.length && mStatus[mState] != WAIT_FOR_USER) {
+            if (mStatus[mState] == PASS) {
+                setItemState(mState, true);
+                mState++;
+            } else if (mStatus[mState] == FAIL) {
+                setItemState(mState, false);
+                return;
+            } else {
+                break;
+            }
+        }
+
+        if (mState < mStatus.length && mStatus[mState] == WAIT_FOR_USER) {
+            markItemWaiting(mState);
+        }
+
+        switch (mState) {
+            case 0:
+                testInstalledCert(0);
+                break;
+            case 1:
+                testCheckedSettings(1);
+                break;
+            case 2:
+                testCheckedNotification(2);
+                break;
+            case 3:
+                testNotificationDismissed(3);
+                break;
+        }
+    }
+
+    /**
+     * Return to the state machine to progress through the tests.
+     */
+    private void next() {
+        mHandler.post(mRunner);
+    }
+
+    /**
+     * Wait for things to settle before returning to the state machine.
+     */
+    private void delay() {
+        mHandler.postDelayed(mRunner, 2000);
+    }
+
+    // Listeners
+
+    class InstallCert implements OnClickListener {
+        @Override
+        public void onClick(View v) {
+            InputStream is = null;
+            FileOutputStream os = null;
+            try {
+                try {
+                    is = getAssets().open(CERT_ASSET_NAME);
+                    os = new FileOutputStream(certStagingFile);
+                    byte[] buffer = new byte[1024];
+                    int length;
+                    while ((length = is.read(buffer)) > 0) {
+                        os.write(buffer, 0, length);
+                    }
+                } finally {
+                    if (is != null) is.close();
+                    if (os != null) os.close();
+                    certStagingFile.setReadable(true, false);
+                }
+            } catch (IOException ioe) {
+                Log.w(TAG, "Problem moving cert file to /sdcard/", ioe);
+                return;
+            }
+            try {
+                startActivity(new Intent("android.credentials.INSTALL"));
+            } catch (ActivityNotFoundException e) {
+                // do nothing
+            }
+            doneInstallingCert = true;
+        }
+    }
+
+    class OpenTrustedCredentials implements OnClickListener {
+        @Override
+        public void onClick(View v) {
+            try {
+                startActivity(new Intent("com.android.settings.TRUSTED_CREDENTIALS_USER"));
+            } catch (ActivityNotFoundException e) {
+                // do nothing
+            }
+            doneCheckingInSettings = true;
+        }
+    }
+
+    class DoneCheckingNotification implements OnClickListener {
+        @Override
+        public void onClick(View v) {
+            doneCheckingNotification = true;
+        }
+    }
+
+    class DoneCheckingDismissed implements OnClickListener {
+        @Override
+        public void onClick(View v) {
+            doneDismissingNotification = true;
+        }
+    }
+
+    // Tests
+
+    private void testInstalledCert(final int i) {
+        if (doneInstallingCert) {
+            mStatus[i] = PASS;
+            next();
+        } else {
+            delay();
+        }
+    }
+
+    private void testCheckedSettings(final int i) {
+        if (doneCheckingInSettings) {
+            mStatus[i] = PASS;
+            next();
+        } else {
+            delay();
+        }
+    }
+
+    private void testCheckedNotification(final int i) {
+        if (doneCheckingNotification) {
+            mStatus[i] = PASS;
+            next();
+        } else {
+            delay();
+        }
+    }
+
+    private void testNotificationDismissed(final int i) {
+        if (doneDismissingNotification) {
+            mStatus[i] = PASS;
+            next();
+        } else {
+            delay();
+        }
+    }
+}
diff --git a/apps/CtsVerifier/src/com/android/cts/verifier/security/CANotifyOnBootActivity.java b/apps/CtsVerifier/src/com/android/cts/verifier/security/CANotifyOnBootActivity.java
new file mode 100644
index 0000000..5537b15
--- /dev/null
+++ b/apps/CtsVerifier/src/com/android/cts/verifier/security/CANotifyOnBootActivity.java
@@ -0,0 +1,88 @@
+package com.android.cts.verifier.security;
+
+import android.content.ActivityNotFoundException;
+import android.content.Intent;
+import android.os.Bundle;
+import android.util.Log;
+import android.view.View;
+import android.view.View.OnClickListener;
+import android.widget.Button;
+import android.widget.Toast;
+
+import com.android.cts.verifier.PassFailButtons;
+import com.android.cts.verifier.R;
+
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
+
+public class CANotifyOnBootActivity extends PassFailButtons.Activity {
+
+    private static final String TAG = CANotifyOnBootActivity.class.getSimpleName();
+    private static final String CERT_ASSET_NAME = "myCA.cer";
+    private File certStagingFile = new File("/sdcard/", CERT_ASSET_NAME);
+
+    @Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+
+        View view = getLayoutInflater().inflate(R.layout.ca_boot_notify, null);
+        Button checkCredsButton = (Button) view.findViewById(R.id.check_creds);
+        Button installButton = (Button) view.findViewById(R.id.install);
+        checkCredsButton.setOnClickListener(new OpenTrustedCredentials());
+        installButton.setOnClickListener(new InstallCert());
+
+        setContentView(view);
+
+        setPassFailButtonClickListeners();
+        setInfoResources(R.string.caboot_test, R.string.caboot_info, -1);
+
+        getPassButton().setEnabled(true);
+    }
+
+    class OpenTrustedCredentials implements OnClickListener {
+        @Override
+        public void onClick(View v) {
+            try {
+                startActivity(new Intent("com.android.settings.TRUSTED_CREDENTIALS_USER"));
+            } catch (ActivityNotFoundException e) {
+                // do nothing
+            }
+        }
+    }
+
+    class InstallCert implements OnClickListener {
+        @Override
+        public void onClick(View v) {
+            InputStream is = null;
+            FileOutputStream os = null;
+            try {
+                try {
+                    is = getAssets().open(CERT_ASSET_NAME);
+                    os = new FileOutputStream(certStagingFile);
+                    byte[] buffer = new byte[1024];
+                    int length;
+                    while ((length = is.read(buffer)) > 0) {
+                        os.write(buffer, 0, length);
+                    }
+                } finally {
+                    if (is != null) is.close();
+                    if (os != null) os.close();
+                    certStagingFile.setReadable(true, false);
+                }
+            } catch (IOException ioe) {
+                Log.w(TAG, "Problem moving cert file to /sdcard/", ioe);
+                return;
+            }
+
+            try {
+                startActivity(new Intent("android.credentials.INSTALL"));
+            } catch (ActivityNotFoundException e) {
+                // do nothing
+            }
+        }
+    }
+
+
+}
diff --git a/apps/CtsVerifier/src/com/android/cts/verifier/sensors/AccelerometerMeasurementTestActivity.java b/apps/CtsVerifier/src/com/android/cts/verifier/sensors/AccelerometerMeasurementTestActivity.java
new file mode 100644
index 0000000..bcd00ed
--- /dev/null
+++ b/apps/CtsVerifier/src/com/android/cts/verifier/sensors/AccelerometerMeasurementTestActivity.java
@@ -0,0 +1,110 @@
+/*
+ * Copyright (C) 2013 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.android.cts.verifier.sensors;
+
+import android.hardware.Sensor;
+import android.hardware.SensorManager;
+import android.hardware.cts.helpers.sensorTestOperations.VerifyMeasurementsOperation;
+
+import java.util.concurrent.TimeUnit;
+
+/**
+ * Semi-automated test that focuses on characteristics associated with Accelerometer measurements.
+ */
+public class AccelerometerMeasurementTestActivity extends BaseSensorSemiAutomatedTestActivity {
+    @Override
+    protected void onRun() throws Throwable {
+        verifyMeasurements(
+                "Place the device in a flat surface with the screen facing the ceiling",
+                0, 0, SensorManager.STANDARD_GRAVITY);
+
+        delayedVerifyMeasurements(
+                "Press 'Next' and place the device in a flat surface with the screen facing it",
+                0, 0, -SensorManager.STANDARD_GRAVITY);
+
+        verifyMeasurements(
+                "Place the device in a flat surface resting vertically on its right side",
+                -SensorManager.STANDARD_GRAVITY, 0, 0);
+
+        verifyMeasurements(
+                "Place the device in a flat surface resting vertically on its left side",
+                SensorManager.STANDARD_GRAVITY, 0, 0);
+
+        verifyMeasurements(
+                "Place the device in a flat surface resting vertically on its top side",
+                0, -SensorManager.STANDARD_GRAVITY, 0);
+
+        verifyMeasurements(
+                "Place the device in a flat surface resting vertically on its bottom side",
+                0, SensorManager.STANDARD_GRAVITY, 0);
+    }
+
+    /**
+     * This test verifies that the Accelerometer measurements are close to the expected reference
+     * values (range and scale).
+     *
+     * The test takes a set of samples from the sensor under test and calculates the mean of each
+     * axis that the sensor data collects. It then compares it against the test expectations that
+     * are represented by reference values and a threshold.
+
+     * The reference values are coupled to the orientation of the device. The test is susceptible to
+     * errors when the device is not oriented properly, or the units in which the data are reported
+     * and the expectations are set are different.
+     *
+     * The error message associated with the test provides the required data needed to identify any
+     * possible issue. It provides:
+     * - the thread id on which the failure occurred
+     * - the sensor type and sensor handle that caused the failure
+     * - the values representing the expectation of the test
+     * - the mean of values sampled from the sensor
+     */
+    private void verifyMeasurements(double ... expectations) throws Throwable {
+        Thread.sleep(500 /*ms*/);
+        VerifyMeasurementsOperation verifyMeasurements = new VerifyMeasurementsOperation(
+                getApplicationContext(),
+                Sensor.TYPE_ACCELEROMETER,
+                SensorManager.SENSOR_DELAY_FASTEST,
+                0 /*reportLatencyInUs*/,
+                expectations,
+                1.95f /* m / s^2 */);
+        verifyMeasurements.execute();
+        logSuccess();
+    }
+
+    private void delayedVerifyMeasurements(
+            String message,
+            double ... expectations) throws Throwable {
+        appendText(String.format("\n%s.", message));
+        appendText("A sound will be played once the verification is complete...");
+        waitForUser();
+        Thread.sleep(TimeUnit.MILLISECONDS.convert(10, TimeUnit.SECONDS));
+
+        try {
+            verifyMeasurements(expectations);
+        } finally {
+            playSound();
+        }
+    }
+
+    private void verifyMeasurements(String message, double ... expectations) throws Throwable {
+        appendText(String.format("\n%s.", message));
+        appendText("Press 'Next' when ready and keep the device steady.");
+        waitForUser();
+
+        verifyMeasurements(expectations);
+    }
+}
diff --git a/apps/CtsVerifier/src/com/android/cts/verifier/sensors/BaseSensorSemiAutomatedTestActivity.java b/apps/CtsVerifier/src/com/android/cts/verifier/sensors/BaseSensorSemiAutomatedTestActivity.java
new file mode 100644
index 0000000..c634e16
--- /dev/null
+++ b/apps/CtsVerifier/src/com/android/cts/verifier/sensors/BaseSensorSemiAutomatedTestActivity.java
@@ -0,0 +1,230 @@
+/*
+ * Copyright (C) 2013 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.android.cts.verifier.sensors;
+
+import android.app.Activity;
+import android.graphics.Color;
+import android.hardware.cts.helpers.SensorNotSupportedException;
+import android.media.MediaPlayer;
+import android.os.Bundle;
+import android.provider.Settings;
+import android.text.Spannable;
+import android.text.SpannableStringBuilder;
+import android.text.method.ScrollingMovementMethod;
+import android.text.style.ForegroundColorSpan;
+import android.view.View;
+import android.widget.TextView;
+
+import com.android.cts.verifier.R;
+import com.android.cts.verifier.TestResult;
+
+import java.security.InvalidParameterException;
+import java.util.concurrent.Semaphore;
+
+/**
+ * Base class to author Sensor semi-automated test cases.
+ * These tests can only wait for operators to notify at some intervals, but the test needs to be
+ * autonomous to verify the data collected.
+ */
+public abstract class BaseSensorSemiAutomatedTestActivity
+        extends Activity
+        implements View.OnClickListener, Runnable {
+    protected final String LOG_TAG = "TestRunner";
+
+    private final Semaphore mSemaphore = new Semaphore(0);
+
+    private TextView mLogView;
+    private View mNextView;
+    private Thread mWorkerThread;
+
+    @Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        setContentView(R.layout.snsr_semi_auto_test);
+    }
+
+    @Override
+    public void onStart() {
+        super.onStart();
+
+        mLogView = (TextView) this.findViewById(R.id.log_text);
+        mNextView = this.findViewById(R.id.next_button);
+        mNextView.setOnClickListener(this);
+        mLogView.setMovementMethod(new ScrollingMovementMethod());
+
+        updateButton(false /*enabled*/);
+        mWorkerThread = new Thread(this);
+        mWorkerThread.start();
+    }
+
+    @Override
+    public void onClick(View target) {
+        mSemaphore.release();
+    }
+
+    @Override
+    public void run() {
+        String message = "";
+        SensorTestResult testResult = SensorTestResult.PASS;
+        try {
+            onRun();
+        } catch(SensorNotSupportedException e) {
+            // the sensor is not supported/available in the device, log a warning and skip the test
+            testResult = SensorTestResult.SKIPPED;
+            message = e.getMessage();
+        } catch(Throwable e) {
+            testResult = SensorTestResult.FAIL;
+            message = e.getMessage();
+        }
+        setTestResult(testResult, message);
+        appendText("\nTest completed. Press 'Next' to finish.\n");
+        waitForUser();
+        finish();
+    }
+
+    /**
+     * This is the method that subclasses will implement to define the operations that need to be
+     * verified.
+     * Any exception thrown will cause the test to fail, additionally mAssert can be used to verify
+     * the tests state.
+     *
+     * throws Throwable
+     */
+    protected abstract void onRun() throws Throwable;
+
+    /**
+     * Helper methods for subclasses to interact with the UI and the operator.
+     */
+    protected void appendText(String text, int textColor) {
+        this.runOnUiThread(new TextAppender(mLogView, text, textColor));
+    }
+
+    protected void appendText(String text) {
+        this.runOnUiThread(new TextAppender(mLogView, text));
+    }
+
+    protected void clearText() {
+        this.runOnUiThread(new Runnable() {
+            @Override
+            public void run() {
+                mLogView.setText("");
+            }
+        });
+    }
+
+    protected void updateButton(boolean enabled) {
+        this.runOnUiThread(new ButtonEnabler(this.mNextView, enabled));
+    }
+
+    protected void waitForUser() {
+        updateButton(true);
+        try {
+            mSemaphore.acquire();
+        } catch(InterruptedException e) {}
+        updateButton(false);
+    }
+
+    protected void logSuccess() {
+        appendText("PASS", Color.GREEN);
+    }
+
+    protected void playSound() {
+        MediaPlayer player = MediaPlayer.create(this, Settings.System.DEFAULT_NOTIFICATION_URI);
+        player.start();
+        try {
+            Thread.sleep(500);
+        } catch(InterruptedException e) {
+        } finally {
+            player.stop();
+        }
+    }
+
+    /**
+     * Private methods.
+     */
+    private String getTestId() {
+        return this.getClass().getName();
+    }
+
+    private void setTestResult(SensorTestResult testResult, String message) {
+        int textColor;
+        switch(testResult) {
+            case SKIPPED:
+                textColor = Color.YELLOW;
+                TestResult.setPassedResult(this, this.getTestId(), message);
+                break;
+            case PASS:
+                textColor = Color.GREEN;
+                TestResult.setPassedResult(this, this.getTestId(), message);
+                break;
+            case FAIL:
+                textColor = Color.RED;
+                TestResult.setFailedResult(this, this.getTestId(), message);
+                break;
+            default:
+                throw new InvalidParameterException("Unrecognized testResult.");
+        }
+        appendText(message, textColor);
+    }
+
+    private enum SensorTestResult {
+        SKIPPED,
+        PASS,
+        FAIL
+    }
+
+    private class TextAppender implements Runnable {
+        private final TextView mTextView;
+        private final SpannableStringBuilder mMessageBuilder;
+
+        public TextAppender(TextView textView, String message, int textColor) {
+            mTextView = textView;
+            mMessageBuilder = new SpannableStringBuilder(message + "\n");
+
+            ForegroundColorSpan colorSpan = new ForegroundColorSpan(textColor);
+            mMessageBuilder.setSpan(
+                    colorSpan,
+                    0 /*start*/,
+                    message.length(),
+                    Spannable.SPAN_INCLUSIVE_INCLUSIVE);
+        }
+
+        public TextAppender(TextView textView, String message) {
+            this(textView, message, textView.getCurrentTextColor());
+        }
+
+        @Override
+        public void run() {
+            mTextView.append(mMessageBuilder);
+        }
+    }
+
+    private class ButtonEnabler implements Runnable {
+        private final View mButtonView;
+        private final boolean mButtonEnabled;
+
+        public ButtonEnabler(View buttonView, boolean buttonEnabled) {
+            mButtonView = buttonView;
+            mButtonEnabled = buttonEnabled;
+        }
+
+        @Override
+        public void run() {
+            mButtonView.setEnabled(mButtonEnabled);
+        }
+    }
+}
diff --git a/apps/CtsVerifier/src/com/android/cts/verifier/sensors/GyroscopeMeasurementTestActivity.java b/apps/CtsVerifier/src/com/android/cts/verifier/sensors/GyroscopeMeasurementTestActivity.java
new file mode 100644
index 0000000..4bcdd56
--- /dev/null
+++ b/apps/CtsVerifier/src/com/android/cts/verifier/sensors/GyroscopeMeasurementTestActivity.java
@@ -0,0 +1,108 @@
+/*
+ * Copyright (C) 2013 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.android.cts.verifier.sensors;
+
+import android.hardware.Sensor;
+import android.hardware.SensorManager;
+import android.hardware.cts.helpers.sensorTestOperations.VerifySignumOperation;
+
+/**
+ * Semi-automated test that focuses on characteristics associated with Accelerometer measurements.
+ */
+public class GyroscopeMeasurementTestActivity extends BaseSensorSemiAutomatedTestActivity {
+    @Override
+    protected void onRun() throws Throwable {
+        appendText("Place the device in a flat surface with the screen facing the ceiling, make "
+                + "sure the device aligns with the orientation specified for each scenario. Then "
+                + "follow the instructions for each scenario:");
+
+        verifyMeasurements(
+                "leave the device static",
+                true /*portrait*/,
+                0, 0, 0);
+
+        verifyMeasurements(
+                "rotate the device clockwise",
+                true /*portrait*/,
+                0, 0, -1);
+
+        verifyMeasurements(
+                "rotate the device counter-clockwise",
+                true /*portrait*/,
+                0, 0, +1);
+
+        verifyMeasurements(
+                "rotate the device on its right until it stands on its side",
+                true /*portrait*/,
+                0, +1, 0);
+
+        verifyMeasurements(
+                "rotate the device on its left until it stands on its side",
+                true /*portrait*/,
+                0, -1, 0);
+
+        verifyMeasurements(
+                "rotate the device on its top until it stands perpendicular",
+                false /*portrait*/,
+                -1, 0, 0);
+
+        verifyMeasurements(
+                "rotate the device on its bottom until it stands perpendicular",
+                false /*portrait*/,
+                +1, 0, 0);
+    }
+
+    /**
+     * This test verifies that the Gyroscope measures angular speeds with the right direction.
+     * The test does not measure the range or scale, apart from filtering small readings that
+     * deviate from zero.
+     *
+     * The test takes a set of samples from the sensor under test and calculates the mean of each
+     * axis that the sensor data collects. It then compares it against the test expectations that
+     * are represented by signed values. It verifies that the readings have the right direction.
+
+     * The reference values are coupled to the orientation of the device. The test is susceptible to
+     * errors when the device is not oriented properly, the device has moved to slowly, or it has
+     * moved in more than the direction conducted.
+     *
+     * The error message associated with the test provides the required data needed to identify any
+     * possible issue. It provides:
+     * - the thread id on which the failure occurred
+     * - the sensor type and sensor handle that caused the failure
+     * - the values representing the expectation of the test
+     * - the mean of values sampled from the sensor
+     */
+    private void verifyMeasurements(
+            String scenarioInstructions,
+            boolean usePortraitOrientation,
+            int ... expectations) throws Throwable {
+        final String orientation = usePortraitOrientation ? "Portrait": "Landscape";
+        appendText(String.format("\n[Device orientation]: %s", orientation));
+        appendText(String.format("Press 'Next' and %s.", scenarioInstructions));
+        waitForUser();
+
+        Thread.sleep(500 /*ms*/);
+        VerifySignumOperation verifySignum = new VerifySignumOperation(
+                getApplicationContext(),
+                Sensor.TYPE_GYROSCOPE,
+                SensorManager.SENSOR_DELAY_FASTEST,
+                expectations,
+                0.2 /*noiseThreshold*/);
+        verifySignum.execute();
+        logSuccess();
+    }
+}
diff --git a/apps/CtsVerifier/src/com/android/cts/verifier/sensors/MagneticFieldMeasurementTestActivity.java b/apps/CtsVerifier/src/com/android/cts/verifier/sensors/MagneticFieldMeasurementTestActivity.java
new file mode 100644
index 0000000..ffed1ab
--- /dev/null
+++ b/apps/CtsVerifier/src/com/android/cts/verifier/sensors/MagneticFieldMeasurementTestActivity.java
@@ -0,0 +1,137 @@
+/*
+ * Copyright (C) 2013 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.android.cts.verifier.sensors;
+
+import android.graphics.Color;
+import android.hardware.Sensor;
+import android.hardware.SensorEvent;
+import android.hardware.SensorManager;
+import android.hardware.cts.helpers.SensorManagerTestVerifier;
+import android.hardware.cts.helpers.sensorTestOperations.VerifyMagnitudeOperation;
+import android.hardware.cts.helpers.sensorTestOperations.VerifyStandardDeviationOperation;
+
+/**
+ * Semi-automated test that focuses characteristics associated with Accelerometer measurements.
+ * These test cases require calibration of the sensor before performing the verifications.
+ * Also, it is recommended to execute these tests outdoors, or at least far from magnetic
+ * disturbances.
+ */
+public class MagneticFieldMeasurementTestActivity extends BaseSensorSemiAutomatedTestActivity {
+    @Override
+    protected void onRun() throws Throwable {
+        calibrateMagnetometer();
+
+        appendText("Verifying the Norm...");
+        verifyNorm();
+
+        appendText("\nVerifying the Standard Deviation...");
+        verifyStandardDeviation();
+    }
+
+    private void calibrateMagnetometer() {
+        SensorManagerTestVerifier magnetometer = new SensorManagerTestVerifier(
+                this.getApplicationContext(),
+                Sensor.TYPE_MAGNETIC_FIELD,
+                SensorManager.SENSOR_DELAY_NORMAL,
+                0 /*reportLatencyInUs*/) {
+            @Override
+            public void onSensorChanged(SensorEvent event) {
+                float values[] = event.values;
+                clearText();
+                appendText(
+                        "Please calibrate the Magnetometer by moving it in 8 shapes in different " +
+                                "orientations.");
+                appendText(
+                        String.format("->  (%.2f, %.2f, %.2f) uT", values[0], values[1], values[2]),
+                        Color.GRAY);
+                appendText("Then leave the device in a flat surface and press Next...\n");
+            }
+        };
+        magnetometer.registerListener();
+        waitForUser();
+        magnetometer.unregisterListener();
+    }
+
+    /**
+     * This test verifies that the Norm of the sensor data is close to the expected reference value.
+     * The units of the reference value are dependent on the type of sensor.
+     * This test is used to verify that the data reported by the sensor is close to the expected
+     * range and scale.
+     *
+     * The test takes a sample from the sensor under test and calculates the Euclidean Norm of the
+     * vector represented by the sampled data. It then compares it against the test expectations
+     * that are represented by a reference value and a threshold.
+     *
+     * The test is susceptible to errors when the Sensor under test is uncalibrated, or the units in
+     * which the data are reported and the expectations are set are different.
+     *
+     * The assertion associated with the test provides the required data needed to identify any
+     * possible issue. It provides:
+     * - the thread id on which the failure occurred
+     * - the sensor type and sensor handle that caused the failure
+     * - the values representing the expectation of the test
+     * - the values sampled from the sensor
+     */
+    private void verifyNorm() throws Throwable {
+        float expectedMagneticFieldEarth =
+                (SensorManager.MAGNETIC_FIELD_EARTH_MAX + SensorManager.MAGNETIC_FIELD_EARTH_MIN) / 2;
+        float magneticFieldEarthThreshold =
+                expectedMagneticFieldEarth - SensorManager.MAGNETIC_FIELD_EARTH_MIN;
+        VerifyMagnitudeOperation verifyNorm = new VerifyMagnitudeOperation(
+                this.getApplicationContext(),
+                Sensor.TYPE_MAGNETIC_FIELD,
+                SensorManager.SENSOR_DELAY_FASTEST,
+                expectedMagneticFieldEarth,
+                magneticFieldEarthThreshold);
+        verifyNorm.execute();
+        logSuccess();
+    }
+
+    /**
+     * This test verifies that the standard deviation of a set of sampled data from a particular
+     * sensor falls into the expectations defined in the CDD. The verification applies to each axis
+     * of the sampled data reported by the Sensor under test.
+     * This test is used to validate the requirement imposed by the CDD to Sensors in Android. And
+     * characterizes how the Sensor behaves while static.
+     *
+     * The test takes a set of samples from the sensor under test, and calculates the Standard
+     * Deviation for each of the axes the Sensor reports data for. The StdDev is compared against
+     * the expected value documented in the CDD.
+     *
+     * The test is susceptible to errors if the device is moving while the test is running, or if
+     * the Sensor's sampled data indeed falls into a large StdDev.
+     *
+     * The assertion associated with the test provides the required data to identify any possible
+     * issue. It provides:
+     * - the thread id on which the failure occurred
+     * - the sensor type and sensor handle that caused the failure
+     * - the expectation of the test
+     * - the std dev calculated and the axis it applies to
+     * Additionally, the device's debug output (adb logcat) dumps the set of values associated with
+     * the failure to help track down the issue.
+     */
+    private void verifyStandardDeviation() throws Throwable {
+        VerifyStandardDeviationOperation verifyStdDev = new VerifyStandardDeviationOperation(
+                this.getApplicationContext(),
+                Sensor.TYPE_MAGNETIC_FIELD,
+                SensorManager.SENSOR_DELAY_FASTEST,
+                0 /*reportLatencyInUs*/,
+                2f /* uT */);
+        verifyStdDev.execute();
+        logSuccess();
+    }
+}
diff --git a/build/test_executable.mk b/build/test_executable.mk
index 8b445a3..0d42d02 100644
--- a/build/test_executable.mk
+++ b/build/test_executable.mk
@@ -27,14 +27,14 @@
 
 cts_executable_xml := $(CTS_TESTCASES_OUT)/$(LOCAL_MODULE).xml
 
-$(cts_executable_xml): PRIVATE_PATH := $(LOCAL_PATH)
 $(cts_executable_xml): PRIVATE_TEST_PACKAGE := $(LOCAL_CTS_TEST_PACKAGE)
 $(cts_executable_xml): PRIVATE_EXECUTABLE := $(LOCAL_MODULE)
+$(cts_executable_xml): PRIVATE_TEST_LIST := $(LOCAL_PATH)/$(LOCAL_MODULE)_list.txt
 $(cts_executable_xml): $(addprefix $(LOCAL_PATH)/,$(LOCAL_SRC_FILES)) $(CTS_EXPECTATIONS) $(CTS_NATIVE_TEST_SCANNER) $(CTS_XML_GENERATOR)
 	$(hide) echo Generating test description for native package $(PRIVATE_TEST_PACKAGE)
 	$(hide) mkdir -p $(CTS_TESTCASES_OUT)
-	$(hide) $(CTS_NATIVE_TEST_SCANNER) -s $(PRIVATE_PATH) \
-						-t $(PRIVATE_TEST_PACKAGE) | \
+	$(hide) cat $(PRIVATE_TEST_LIST) | \
+			$(CTS_NATIVE_TEST_SCANNER) -t $(PRIVATE_TEST_PACKAGE) | \
 			$(CTS_XML_GENERATOR) -t native \
 						-n $(PRIVATE_EXECUTABLE) \
 						-p $(PRIVATE_TEST_PACKAGE) \
diff --git a/build/test_gtest_package.mk b/build/test_gtest_package.mk
index 2f4c9bb..cbd9414 100644
--- a/build/test_gtest_package.mk
+++ b/build/test_gtest_package.mk
@@ -21,11 +21,13 @@
 
 # Disable by default so "m cts" will work in emulator builds
 LOCAL_DEX_PREOPT := false
+LOCAL_PROGUARD_ENABLED := disabled
 
 include $(BUILD_PACKAGE)
 
 cts_package_apk := $(CTS_TESTCASES_OUT)/$(LOCAL_PACKAGE_NAME).apk
 cts_package_xml := $(CTS_TESTCASES_OUT)/$(LOCAL_PACKAGE_NAME).xml
+cts_test_list := $(LOCAL_PATH)/$(LOCAL_MODULE)_list.txt
 
 $(cts_package_apk): PRIVATE_PACKAGE := $(LOCAL_PACKAGE_NAME)
 $(cts_package_apk): $(call intermediates-dir-for,APPS,$(LOCAL_PACKAGE_NAME))/package.apk | $(ACP)
@@ -36,13 +38,14 @@
 $(cts_package_xml): PRIVATE_TEST_PACKAGE := android.$(notdir $(LOCAL_PATH))
 $(cts_package_xml): PRIVATE_EXECUTABLE := $(LOCAL_MODULE)
 $(cts_package_xml): PRIVATE_MANIFEST := $(LOCAL_PATH)/AndroidManifest.xml
-$(cts_package_xml): $(addprefix $(LOCAL_PATH)/,$(LOCAL_SRC_FILES))  $(CTS_NATIVE_TEST_SCANNER) $(CTS_XML_GENERATOR)
+$(cts_package_xml): PRIVATE_TEST_LIST := $(cts_test_list)
+$(cts_package_xml): $(addprefix $(LOCAL_PATH)/,$(LOCAL_SRC_FILES))  $(CTS_NATIVE_TEST_SCANNER) $(CTS_XML_GENERATOR) $(cts_test_list)
 	$(hide) echo Generating test description for wrapped native package $(PRIVATE_EXECUTABLE)
 	$(hide) mkdir -p $(CTS_TESTCASES_OUT)
-	$(hide) $(CTS_NATIVE_TEST_SCANNER) -s $(PRIVATE_PATH) \
-						-t $(PRIVATE_TEST_PACKAGE) | \
+	$(hide) cat $(PRIVATE_TEST_LIST) | \
+			$(CTS_NATIVE_TEST_SCANNER) -t $(PRIVATE_TEST_PACKAGE) | \
 			$(CTS_XML_GENERATOR) -t wrappednative \
-                                                -m $(PRIVATE_MANIFEST) \
+						-m $(PRIVATE_MANIFEST) \
 						-n $(PRIVATE_EXECUTABLE) \
 						-p $(PRIVATE_TEST_PACKAGE) \
 						-e $(CTS_EXPECTATIONS) \
diff --git a/build/test_package.mk b/build/test_package.mk
index 46718a8..a0adb5f 100644
--- a/build/test_package.mk
+++ b/build/test_package.mk
@@ -36,12 +36,12 @@
 $(cts_package_xml): PRIVATE_PATH := $(LOCAL_PATH)
 $(cts_package_xml): PRIVATE_INSTRUMENTATION := $(LOCAL_INSTRUMENTATION_FOR)
 $(cts_package_xml): PRIVATE_PACKAGE := $(LOCAL_PACKAGE_NAME)
-ifneq ($(filter cts/suite/pts/%, $(LOCAL_PATH)),) # PTS
-PRIVATE_CTS_TEST_PACKAGE_NANE_ := com.android.pts.$(notdir $(LOCAL_PATH))
-else # CTS
-PRIVATE_CTS_TEST_PACKAGE_NANE_ := android.$(notdir $(LOCAL_PATH))
-endif # PTS
-$(cts_package_xml): PRIVATE_TEST_PACKAGE := $(PRIVATE_CTS_TEST_PACKAGE_NANE_)
+ifneq ($(filter cts/suite/cts/%, $(LOCAL_PATH)),)
+PRIVATE_CTS_TEST_PACKAGE_NAME_ := com.android.cts.$(notdir $(LOCAL_PATH))
+else
+PRIVATE_CTS_TEST_PACKAGE_NAME_ := android.$(notdir $(LOCAL_PATH))
+endif
+$(cts_package_xml): PRIVATE_TEST_PACKAGE := $(PRIVATE_CTS_TEST_PACKAGE_NAME_)
 $(cts_package_xml): PRIVATE_MANIFEST := $(LOCAL_PATH)/AndroidManifest.xml
 $(cts_package_xml): PRIVATE_TEST_TYPE := $(if $(LOCAL_CTS_TEST_RUNNER),$(LOCAL_CTS_TEST_RUNNER),'')
 $(cts_package_xml): $(call intermediates-dir-for,APPS,$(LOCAL_PACKAGE_NAME))/package.apk $(CTS_EXPECTATIONS) $(CTS_JAVA_TEST_SCANNER_DOCLET) $(CTS_JAVA_TEST_SCANNER) $(CTS_XML_GENERATOR)
diff --git a/build/test_uiautomator.mk b/build/test_uiautomator.mk
index 255f70b..c17f12b 100644
--- a/build/test_uiautomator.mk
+++ b/build/test_uiautomator.mk
@@ -17,6 +17,8 @@
 # package XML needed by CTS.
 #
 
+LOCAL_DEX_PREOPT := false
+
 include $(BUILD_JAVA_LIBRARY)
 
 cts_library_xml := $(CTS_TESTCASES_OUT)/$(LOCAL_MODULE).xml 
diff --git a/hostsidetests/aadb/src/com/android/cts/aadb/TestDeviceStressTest.java b/hostsidetests/aadb/src/com/android/cts/aadb/TestDeviceStressTest.java
index c780fb9..2c6fcef 100644
--- a/hostsidetests/aadb/src/com/android/cts/aadb/TestDeviceStressTest.java
+++ b/hostsidetests/aadb/src/com/android/cts/aadb/TestDeviceStressTest.java
@@ -36,7 +36,7 @@
  */
 public class TestDeviceStressTest extends DeviceTestCase {
 
-    private int mIterations = 50;
+    private int mIterations = 25;
 
     private static final String LOG_TAG = "TestDeviceStressTest";
     private static final int TEST_FILE_COUNT= 200;
diff --git a/hostsidetests/appsecurity/src/com/android/cts/appsecurity/AppSecurityTests.java b/hostsidetests/appsecurity/src/com/android/cts/appsecurity/AppSecurityTests.java
index 5298af2..88b05fb 100644
--- a/hostsidetests/appsecurity/src/com/android/cts/appsecurity/AppSecurityTests.java
+++ b/hostsidetests/appsecurity/src/com/android/cts/appsecurity/AppSecurityTests.java
@@ -17,7 +17,6 @@
 package com.android.cts.appsecurity;
 
 import com.android.cts.tradefed.build.CtsBuildHelper;
-import com.android.ddmlib.IDevice;
 import com.android.ddmlib.Log;
 import com.android.ddmlib.testrunner.InstrumentationResultParser;
 import com.android.ddmlib.testrunner.RemoteAndroidTestRunner;
@@ -66,15 +65,16 @@
     private static final String APP_ACCESS_DATA_PKG = "com.android.cts.appaccessdata";
 
     // External storage constants
+    private static final String COMMON_EXTERNAL_STORAGE_APP_CLASS = "com.android.cts.externalstorageapp.CommonExternalStorageTest";
     private static final String EXTERNAL_STORAGE_APP_APK = "CtsExternalStorageApp.apk";
     private static final String EXTERNAL_STORAGE_APP_PKG = "com.android.cts.externalstorageapp";
-    private static final String EXTERNAL_STORAGE_APP_CLASS = EXTERNAL_STORAGE_APP_PKG
-            + ".ExternalStorageTest";
+    private static final String EXTERNAL_STORAGE_APP_CLASS = EXTERNAL_STORAGE_APP_PKG + ".ExternalStorageTest";
+    private static final String READ_EXTERNAL_STORAGE_APP_APK = "CtsReadExternalStorageApp.apk";
+    private static final String READ_EXTERNAL_STORAGE_APP_PKG = "com.android.cts.readexternalstorageapp";
+    private static final String READ_EXTERNAL_STORAGE_APP_CLASS = READ_EXTERNAL_STORAGE_APP_PKG + ".ReadExternalStorageTest";
     private static final String WRITE_EXTERNAL_STORAGE_APP_APK = "CtsWriteExternalStorageApp.apk";
-    private static final String
-            WRITE_EXTERNAL_STORAGE_APP_PKG = "com.android.cts.writeexternalstorageapp";
-    private static final String WRITE_EXTERNAL_STORAGE_APP_CLASS = WRITE_EXTERNAL_STORAGE_APP_PKG
-            + ".WriteExternalStorageTest";
+    private static final String WRITE_EXTERNAL_STORAGE_APP_PKG = "com.android.cts.writeexternalstorageapp";
+    private static final String WRITE_EXTERNAL_STORAGE_APP_CLASS = WRITE_EXTERNAL_STORAGE_APP_PKG + ".WriteExternalStorageTest";
 
     // testInstrumentationDiffCert constants
     private static final String TARGET_INSTRUMENT_APK = "CtsTargetInstrumentationApp.apk";
@@ -207,61 +207,89 @@
     }
 
     /**
-     * Test behavior when
-     * {@link android.Manifest.permission#READ_EXTERNAL_STORAGE} is unenforced.
+     * Verify that app with no external storage permissions works correctly.
      */
-    public void testReadExternalStorageUnenforced() throws Exception {
+    public void testExternalStorageNone() throws Exception {
         try {
+            wipePrimaryExternalStorage(getDevice());
+
             getDevice().uninstallPackage(EXTERNAL_STORAGE_APP_PKG);
-            getDevice().uninstallPackage(WRITE_EXTERNAL_STORAGE_APP_PKG);
-
-            // stage test file on external storage
-            getDevice().pushString("CAEK",
-                    getDevice().getMountPoint(IDevice.MNT_EXTERNAL_STORAGE) + "/meow");
-
-            // mark permission as not enforced
-            setPermissionEnforced(getDevice(), READ_EXTERNAL_STORAGE, false);
-
-            // install apps and run test
             assertNull(getDevice()
                     .installPackage(getTestAppFile(EXTERNAL_STORAGE_APP_APK), false));
-            assertNull(getDevice()
-                    .installPackage(getTestAppFile(WRITE_EXTERNAL_STORAGE_APP_APK), false));
-
-            // normal app should be able to read
-            assertTrue("Normal app unable to read external storage", runDeviceTests(
-                    EXTERNAL_STORAGE_APP_PKG, EXTERNAL_STORAGE_APP_CLASS,
-                    "testReadExternalStorage"));
-
-            // WRITE_EXTERNAL app should be able to read and write
-            assertTrue("WRITE_EXTERNAL app unable to read external storage", runDeviceTests(
-                    WRITE_EXTERNAL_STORAGE_APP_PKG, WRITE_EXTERNAL_STORAGE_APP_CLASS,
-                    "testReadExternalStorage"));
-            assertTrue("WRITE_EXTERNAL app unable to write external storage", runDeviceTests(
-                    WRITE_EXTERNAL_STORAGE_APP_PKG, WRITE_EXTERNAL_STORAGE_APP_CLASS,
-                    "testWriteExternalStorage"));
-
+            assertTrue("Failed external storage with no permissions",
+                    runDeviceTests(EXTERNAL_STORAGE_APP_PKG));
         } finally {
             getDevice().uninstallPackage(EXTERNAL_STORAGE_APP_PKG);
+        }
+    }
+
+    /**
+     * Verify that app with
+     * {@link android.Manifest.permission#READ_EXTERNAL_STORAGE} works
+     * correctly.
+     */
+    public void testExternalStorageRead() throws Exception {
+        try {
+            wipePrimaryExternalStorage(getDevice());
+
+            getDevice().uninstallPackage(READ_EXTERNAL_STORAGE_APP_PKG);
+            assertNull(getDevice()
+                    .installPackage(getTestAppFile(READ_EXTERNAL_STORAGE_APP_APK), false));
+            assertTrue("Failed external storage with read permissions",
+                    runDeviceTests(READ_EXTERNAL_STORAGE_APP_PKG));
+        } finally {
+            getDevice().uninstallPackage(READ_EXTERNAL_STORAGE_APP_PKG);
+        }
+    }
+
+    /**
+     * Verify that app with
+     * {@link android.Manifest.permission#WRITE_EXTERNAL_STORAGE} works
+     * correctly.
+     */
+    public void testExternalStorageWrite() throws Exception {
+        try {
+            wipePrimaryExternalStorage(getDevice());
+
+            getDevice().uninstallPackage(WRITE_EXTERNAL_STORAGE_APP_PKG);
+            assertNull(getDevice()
+                    .installPackage(getTestAppFile(WRITE_EXTERNAL_STORAGE_APP_APK), false));
+            assertTrue("Failed external storage with write permissions",
+                    runDeviceTests(WRITE_EXTERNAL_STORAGE_APP_PKG));
+        } finally {
             getDevice().uninstallPackage(WRITE_EXTERNAL_STORAGE_APP_PKG);
         }
     }
 
     /**
-     * Verify that legacy filesystem paths continue working, and that they all
-     * point to same location.
+     * Verify that app with WRITE_EXTERNAL can leave gifts in external storage
+     * directories belonging to other apps, and those apps can read.
      */
-    public void testExternalStorageLegacyPaths() throws Exception {
+    public void testExternalStorageGifts() throws Exception {
         try {
+            wipePrimaryExternalStorage(getDevice());
+
+            getDevice().uninstallPackage(EXTERNAL_STORAGE_APP_PKG);
+            getDevice().uninstallPackage(READ_EXTERNAL_STORAGE_APP_PKG);
             getDevice().uninstallPackage(WRITE_EXTERNAL_STORAGE_APP_PKG);
             assertNull(getDevice()
+                    .installPackage(getTestAppFile(EXTERNAL_STORAGE_APP_APK), false));
+            assertNull(getDevice()
+                    .installPackage(getTestAppFile(READ_EXTERNAL_STORAGE_APP_APK), false));
+            assertNull(getDevice()
                     .installPackage(getTestAppFile(WRITE_EXTERNAL_STORAGE_APP_APK), false));
 
-            assertTrue("Failed to verify legacy filesystem paths", runDeviceTests(
-                    WRITE_EXTERNAL_STORAGE_APP_PKG, WRITE_EXTERNAL_STORAGE_APP_CLASS,
-                    "testLegacyPaths"));
+            assertTrue("Failed to write gifts", runDeviceTests(WRITE_EXTERNAL_STORAGE_APP_PKG,
+                    WRITE_EXTERNAL_STORAGE_APP_CLASS, "doWriteGifts"));
+
+            assertTrue("Read failed to verify gifts", runDeviceTests(READ_EXTERNAL_STORAGE_APP_PKG,
+                    READ_EXTERNAL_STORAGE_APP_CLASS, "doVerifyGifts"));
+            assertTrue("None failed to verify gifts", runDeviceTests(EXTERNAL_STORAGE_APP_PKG,
+                    EXTERNAL_STORAGE_APP_CLASS, "doVerifyGifts"));
 
         } finally {
+            getDevice().uninstallPackage(EXTERNAL_STORAGE_APP_PKG);
+            getDevice().uninstallPackage(READ_EXTERNAL_STORAGE_APP_PKG);
             getDevice().uninstallPackage(WRITE_EXTERNAL_STORAGE_APP_PKG);
         }
     }
@@ -542,10 +570,8 @@
         return listener.getCurrentRunResults();
     }
 
-    private static void setPermissionEnforced(
-            ITestDevice device, String permission, boolean enforced)
+    private static void wipePrimaryExternalStorage(ITestDevice device)
             throws DeviceNotAvailableException {
-        device.executeShellCommand("pm set-permission-enforced " + permission + " "
-                + Boolean.toString(enforced));
+        device.executeShellCommand("rm -rf /sdcard/*");
     }
 }
diff --git a/hostsidetests/appsecurity/test-apps/ExternalStorageApp/Android.mk b/hostsidetests/appsecurity/test-apps/ExternalStorageApp/Android.mk
index 91d6ccf..bc99560 100644
--- a/hostsidetests/appsecurity/test-apps/ExternalStorageApp/Android.mk
+++ b/hostsidetests/appsecurity/test-apps/ExternalStorageApp/Android.mk
@@ -17,7 +17,7 @@
 include $(CLEAR_VARS)
 
 LOCAL_MODULE_TAGS := tests
-LOCAL_SDK_VERSION := 10
+LOCAL_SDK_VERSION := current
 
 LOCAL_SRC_FILES := $(call all-java-files-under, src)
 LOCAL_PACKAGE_NAME := CtsExternalStorageApp
diff --git a/hostsidetests/appsecurity/test-apps/ExternalStorageApp/src/com/android/cts/externalstorageapp/CommonExternalStorageTest.java b/hostsidetests/appsecurity/test-apps/ExternalStorageApp/src/com/android/cts/externalstorageapp/CommonExternalStorageTest.java
new file mode 100644
index 0000000..5b4d9f7
--- /dev/null
+++ b/hostsidetests/appsecurity/test-apps/ExternalStorageApp/src/com/android/cts/externalstorageapp/CommonExternalStorageTest.java
@@ -0,0 +1,339 @@
+/*
+ * Copyright (C) 2012 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.android.cts.externalstorageapp;
+
+import android.content.Context;
+import android.os.Environment;
+import android.test.AndroidTestCase;
+import android.util.Log;
+
+import java.io.DataInputStream;
+import java.io.DataOutputStream;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+
+/**
+ * Tests common functionality that should be supported regardless of external
+ * storage status.
+ */
+public class CommonExternalStorageTest extends AndroidTestCase {
+    public static final String TAG = "CommonExternalStorageTest";
+
+    public static final String PACKAGE_NONE = "com.android.cts.externalstorageapp";
+    public static final String PACKAGE_READ = "com.android.cts.readexternalstorageapp";
+    public static final String PACKAGE_WRITE = "com.android.cts.writeexternalstorageapp";
+
+    /**
+     * Primary storage must always be mounted.
+     */
+    public void testExternalStorageMounted() {
+        assertEquals(Environment.MEDIA_MOUNTED, Environment.getExternalStorageState());
+    }
+
+    /**
+     * Verify that single path is always first item in multiple.
+     */
+    public void testMultipleCacheDirs() throws Exception {
+        final File single = getContext().getExternalCacheDir();
+        assertNotNull("Primary storage must always be available", single);
+        final File firstMultiple = getContext().getExternalCacheDirs()[0];
+        assertEquals(single, firstMultiple);
+    }
+
+    /**
+     * Verify that single path is always first item in multiple.
+     */
+    public void testMultipleFilesDirs() throws Exception {
+        final File single = getContext().getExternalFilesDir(Environment.DIRECTORY_PICTURES);
+        assertNotNull("Primary storage must always be available", single);
+        final File firstMultiple = getContext()
+                .getExternalFilesDirs(Environment.DIRECTORY_PICTURES)[0];
+        assertEquals(single, firstMultiple);
+    }
+
+    /**
+     * Verify that single path is always first item in multiple.
+     */
+    public void testMultipleObbDirs() throws Exception {
+        final File single = getContext().getObbDir();
+        assertNotNull("Primary storage must always be available", single);
+        final File firstMultiple = getContext().getObbDirs()[0];
+        assertEquals(single, firstMultiple);
+    }
+
+    /**
+     * Verify we can write to our own package dirs.
+     */
+    public void testAllPackageDirsWritable() throws Exception {
+        final List<File> paths = getAllPackageSpecificPaths(getContext());
+        for (File path : paths) {
+            assertNotNull("Valid media must be inserted during CTS", path);
+            assertEquals("Valid media must be inserted during CTS", Environment.MEDIA_MOUNTED,
+                    Environment.getStorageState(path));
+
+            assertDirReadWriteAccess(path);
+
+            final File directChild = new File(path, "directChild");
+            final File subdir = new File(path, "subdir");
+            final File subdirChild = new File(path, "subdirChild");
+
+            writeInt(directChild, 32);
+            subdir.mkdirs();
+            assertDirReadWriteAccess(subdir);
+            writeInt(subdirChild, 64);
+
+            assertEquals(32, readInt(directChild));
+            assertEquals(64, readInt(subdirChild));
+        }
+
+        for (File path : paths) {
+            deleteContents(path);
+        }
+    }
+
+    /**
+     * Return a set of several package-specific external storage paths.
+     */
+    public static List<File> getAllPackageSpecificPaths(Context context) {
+        final List<File> paths = new ArrayList<File>();
+        Collections.addAll(paths, context.getExternalCacheDirs());
+        Collections.addAll(paths, context.getExternalFilesDirs(null));
+        Collections.addAll(paths, context.getExternalFilesDirs(Environment.DIRECTORY_PICTURES));
+        Collections.addAll(paths, context.getObbDirs());
+        return paths;
+    }
+
+    public static List<File> getAllPackageSpecificPathsExceptObb(Context context) {
+        final List<File> paths = new ArrayList<File>();
+        Collections.addAll(paths, context.getExternalCacheDirs());
+        Collections.addAll(paths, context.getExternalFilesDirs(null));
+        Collections.addAll(paths, context.getExternalFilesDirs(Environment.DIRECTORY_PICTURES));
+        return paths;
+    }
+
+    public static List<File> getPrimaryPackageSpecificPaths(Context context) {
+        final List<File> paths = new ArrayList<File>();
+        Collections.addAll(paths, context.getExternalCacheDir());
+        Collections.addAll(paths, context.getExternalFilesDir(null));
+        Collections.addAll(paths, context.getExternalFilesDir(Environment.DIRECTORY_PICTURES));
+        Collections.addAll(paths, context.getObbDir());
+        return paths;
+    }
+
+    public static List<File> getSecondaryPackageSpecificPaths(Context context) {
+        final List<File> paths = new ArrayList<File>();
+        Collections.addAll(paths, dropFirst(context.getExternalCacheDirs()));
+        Collections.addAll(paths, dropFirst(context.getExternalFilesDirs(null)));
+        Collections.addAll(
+                paths, dropFirst(context.getExternalFilesDirs(Environment.DIRECTORY_PICTURES)));
+        Collections.addAll(paths, dropFirst(context.getObbDirs()));
+        return paths;
+    }
+
+    private static File[] dropFirst(File[] before) {
+        final File[] after = new File[before.length - 1];
+        System.arraycopy(before, 1, after, 0, after.length);
+        return after;
+    }
+
+    public static File buildGiftForPackage(Context context, String packageName) {
+        final File myCache = context.getExternalCacheDir();
+        return new File(myCache.getAbsolutePath().replace(context.getPackageName(), packageName),
+                packageName + ".gift");
+    }
+
+    public static File buildProbeFile(File dir) {
+        return new File(dir, ".probe_" + System.nanoTime());
+    }
+
+    public static void assertDirReadOnlyAccess(File path) {
+        Log.d(TAG, "Asserting read-only access to " + path);
+
+        assertTrue("exists", path.exists());
+        assertTrue("read", path.canRead());
+        assertTrue("execute", path.canExecute());
+        assertNotNull("list", path.list());
+
+        try {
+            final File probe = buildProbeFile(path);
+            probe.createNewFile();
+            probe.delete();
+            fail("able to create probe!");
+        } catch (IOException e) {
+            // expected
+        }
+    }
+
+    public static void assertDirReadWriteAccess(File path) {
+        Log.d(TAG, "Asserting read/write access to " + path);
+
+        assertTrue("exists", path.exists());
+        assertTrue("read", path.canRead());
+        assertTrue("execute", path.canExecute());
+        assertNotNull("list", path.list());
+
+        try {
+            final File probe = buildProbeFile(path);
+            probe.createNewFile();
+            probe.delete();
+        } catch (IOException e) {
+            fail("failed to create probe!");
+        }
+    }
+
+    public static void assertDirNoAccess(File path) {
+        Log.d(TAG, "Asserting no access to " + path);
+
+        assertFalse("read", path.canRead());
+        assertNull("list", path.list());
+
+        try {
+            final File probe = buildProbeFile(path);
+            probe.createNewFile();
+            probe.delete();
+            fail("able to create probe!");
+        } catch (IOException e) {
+            // expected
+        }
+    }
+
+    public static void assertDirNoWriteAccess(File path) {
+        Log.d(TAG, "Asserting no write access to " + path);
+
+        try {
+            final File probe = buildProbeFile(path);
+            probe.createNewFile();
+            probe.delete();
+            fail("able to create probe!");
+        } catch (IOException e) {
+            // expected
+        }
+    }
+
+    public static void assertFileReadOnlyAccess(File path) {
+        try {
+            new FileInputStream(path).close();
+        } catch (IOException e) {
+            fail("failed to read!");
+        }
+
+        try {
+            new FileOutputStream(path, true).close();
+            fail("able to write!");
+        } catch (IOException e) {
+            // expected
+        }
+    }
+
+    public static void assertFileReadWriteAccess(File path) {
+        try {
+            new FileInputStream(path).close();
+        } catch (IOException e) {
+            fail("failed to read!");
+        }
+
+        try {
+            new FileOutputStream(path, true).close();
+        } catch (IOException e) {
+            fail("failed to write!");
+        }
+    }
+
+    public static void assertFileNoAccess(File path) {
+        try {
+            new FileInputStream(path).close();
+            fail("able to read!");
+        } catch (IOException e) {
+            // expected
+        }
+
+        try {
+            new FileOutputStream(path, true).close();
+            fail("able to write!");
+        } catch (IOException e) {
+            // expected
+        }
+    }
+
+    private static boolean isWhiteList(File file) {
+        final String[] whiteLists = {
+                "autorun.inf", ".android_secure", "android_secure"
+        };
+        if (file.getParentFile().getAbsolutePath().equals(
+                Environment.getExternalStorageDirectory().getAbsolutePath())) {
+            for (String whiteList : whiteLists) {
+                if (file.getName().equalsIgnoreCase(whiteList)) {
+                    return true;
+                }
+            }
+        }
+        return false;
+    }
+
+    private static File[] removeWhiteList(File[] files) {
+        List<File> fileList = new ArrayList<File>();
+        if (files == null) {
+            return null;
+        }
+
+        for (File file : files) {
+            if (!isWhiteList(file)) {
+                fileList.add(file);
+            }
+        }
+        return fileList.toArray(new File[fileList.size()]);
+    }
+
+    public static void deleteContents(File dir) throws IOException {
+        File[] files = dir.listFiles();
+        files = removeWhiteList(files);
+        if (files != null) {
+            for (File file : files) {
+                if (file.isDirectory()) {
+                    deleteContents(file);
+                }
+                assertTrue(file.delete());
+            }
+
+            File[] dirs = removeWhiteList(dir.listFiles());
+            assertEquals(0, dirs.length);
+        }
+    }
+
+    public static void writeInt(File file, int value) throws IOException {
+        final DataOutputStream os = new DataOutputStream(new FileOutputStream(file));
+        try {
+            os.writeInt(value);
+        } finally {
+            os.close();
+        }
+    }
+
+    public static int readInt(File file) throws IOException {
+        final DataInputStream is = new DataInputStream(new FileInputStream(file));
+        try {
+            return is.readInt();
+        } finally {
+            is.close();
+        }
+    }
+}
diff --git a/hostsidetests/appsecurity/test-apps/ExternalStorageApp/src/com/android/cts/externalstorageapp/ExternalStorageTest.java b/hostsidetests/appsecurity/test-apps/ExternalStorageApp/src/com/android/cts/externalstorageapp/ExternalStorageTest.java
index d42353d..425815f 100644
--- a/hostsidetests/appsecurity/test-apps/ExternalStorageApp/src/com/android/cts/externalstorageapp/ExternalStorageTest.java
+++ b/hostsidetests/appsecurity/test-apps/ExternalStorageApp/src/com/android/cts/externalstorageapp/ExternalStorageTest.java
@@ -16,52 +16,71 @@
 
 package com.android.cts.externalstorageapp;
 
+import static com.android.cts.externalstorageapp.CommonExternalStorageTest.PACKAGE_NONE;
+import static com.android.cts.externalstorageapp.CommonExternalStorageTest.PACKAGE_READ;
+import static com.android.cts.externalstorageapp.CommonExternalStorageTest.PACKAGE_WRITE;
+import static com.android.cts.externalstorageapp.CommonExternalStorageTest.assertDirNoAccess;
+import static com.android.cts.externalstorageapp.CommonExternalStorageTest.assertDirReadWriteAccess;
+import static com.android.cts.externalstorageapp.CommonExternalStorageTest.assertFileNoAccess;
+import static com.android.cts.externalstorageapp.CommonExternalStorageTest.assertFileReadWriteAccess;
+import static com.android.cts.externalstorageapp.CommonExternalStorageTest.buildGiftForPackage;
+import static com.android.cts.externalstorageapp.CommonExternalStorageTest.getAllPackageSpecificPaths;
+import static com.android.cts.externalstorageapp.CommonExternalStorageTest.readInt;
+
 import android.os.Environment;
 import android.test.AndroidTestCase;
 
 import java.io.File;
-import java.io.FileInputStream;
-import java.io.IOException;
-import java.io.InputStream;
+import java.util.List;
 
 /**
- * Test if {@link Environment#getExternalStorageDirectory()} is readable.
+ * Test external storage from an application that has no external storage
+ * permissions.
  */
 public class ExternalStorageTest extends AndroidTestCase {
 
-    private static final String TEST_FILE = "meow";
-
-    private void assertExternalStorageMounted() {
-        assertEquals(Environment.MEDIA_MOUNTED, Environment.getExternalStorageState());
+    public void testPrimaryNoAccess() throws Exception {
+        assertDirNoAccess(Environment.getExternalStorageDirectory());
     }
 
-    private void readExternalStorage() throws IOException {
-        final File file = new File(Environment.getExternalStorageDirectory(), TEST_FILE);
-        final InputStream is = new FileInputStream(file);
-        try {
-            is.read();
-        } finally {
-            is.close();
+    /**
+     * Verify that above our package directories we always have no access.
+     */
+    public void testAllWalkingUpTreeNoAccess() throws Exception {
+        final List<File> paths = getAllPackageSpecificPaths(getContext());
+        final String packageName = getContext().getPackageName();
+
+        for (File path : paths) {
+            if (path == null) continue;
+
+            assertTrue(path.getAbsolutePath().contains(packageName));
+
+            // Walk up until we drop our package
+            while (path.getAbsolutePath().contains(packageName)) {
+                assertDirReadWriteAccess(path);
+                path = path.getParentFile();
+            }
+
+            // Keep walking up until we leave device
+            while (Environment.MEDIA_MOUNTED.equals(Environment.getStorageState(path))) {
+                assertDirNoAccess(path);
+                path = path.getParentFile();
+            }
         }
     }
 
-    public void testReadExternalStorage() throws Exception {
-        assertExternalStorageMounted();
-        try {
-            readExternalStorage();
-        } catch (IOException e) {
-            fail("unable to read external file");
-        }
-    }
+    /**
+     * Verify we can read only our gifts.
+     */
+    public void doVerifyGifts() throws Exception {
+        final File none = buildGiftForPackage(getContext(), PACKAGE_NONE);
+        assertFileReadWriteAccess(none);
+        assertEquals(100, readInt(none));
 
-    public void testFailReadExternalStorage() throws Exception {
-        assertExternalStorageMounted();
-        try {
-            readExternalStorage();
-            fail("able read external file");
-        } catch (IOException e) {
-            // expected
-            e.printStackTrace();
-        }
+        final File read = buildGiftForPackage(getContext(), PACKAGE_READ);
+        assertFileNoAccess(read);
+
+        final File write = buildGiftForPackage(getContext(), PACKAGE_WRITE);
+        assertFileNoAccess(write);
     }
 }
diff --git a/hostsidetests/appsecurity/test-apps/MultiUserStorageApp/Android.mk b/hostsidetests/appsecurity/test-apps/MultiUserStorageApp/Android.mk
index 8781e8b..48f88b8 100644
--- a/hostsidetests/appsecurity/test-apps/MultiUserStorageApp/Android.mk
+++ b/hostsidetests/appsecurity/test-apps/MultiUserStorageApp/Android.mk
@@ -17,9 +17,11 @@
 include $(CLEAR_VARS)
 
 LOCAL_MODULE_TAGS := tests
-LOCAL_SDK_VERSION := 16
+LOCAL_SDK_VERSION := current
 
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
+LOCAL_SRC_FILES := $(call all-java-files-under, src) \
+    ../ExternalStorageApp/src/com/android/cts/externalstorageapp/CommonExternalStorageTest.java
+
 LOCAL_PACKAGE_NAME := CtsMultiUserStorageApp
 
 LOCAL_DEX_PREOPT := false
diff --git a/hostsidetests/appsecurity/test-apps/MultiUserStorageApp/src/com/android/cts/multiuserstorageapp/MultiUserStorageTest.java b/hostsidetests/appsecurity/test-apps/MultiUserStorageApp/src/com/android/cts/multiuserstorageapp/MultiUserStorageTest.java
index 267bf11..2a80c75 100644
--- a/hostsidetests/appsecurity/test-apps/MultiUserStorageApp/src/com/android/cts/multiuserstorageapp/MultiUserStorageTest.java
+++ b/hostsidetests/appsecurity/test-apps/MultiUserStorageApp/src/com/android/cts/multiuserstorageapp/MultiUserStorageTest.java
@@ -16,16 +16,15 @@
 
 package com.android.cts.multiuserstorageapp;
 
+import static com.android.cts.externalstorageapp.CommonExternalStorageTest.getAllPackageSpecificPathsExceptObb;
+import static com.android.cts.externalstorageapp.CommonExternalStorageTest.readInt;
+import static com.android.cts.externalstorageapp.CommonExternalStorageTest.writeInt;
+
 import android.os.Environment;
 import android.test.AndroidTestCase;
 import android.util.Log;
 
-import java.io.DataInputStream;
-import java.io.DataOutputStream;
 import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileOutputStream;
-import java.io.IOException;
 
 /**
  * Test multi-user emulated storage environment, ensuring that each user has
@@ -59,22 +58,44 @@
     }
 
     public void writeIsolatedStorage() throws Exception {
-        writeInt(buildApiPath(FILE_SINGLETON), android.os.Process.myUid());
-        writeInt(buildApiPath(FILE_MY_UID), android.os.Process.myUid());
+        final int uid = android.os.Process.myUid();
+
+        writeInt(buildApiPath(FILE_SINGLETON), uid);
+        writeInt(buildApiPath(FILE_MY_UID), uid);
+
+        // Write to every external path we think we have access to
+        for (File path : getAllPackageSpecificPathsExceptObb(getContext())) {
+            assertNotNull("Valid media must be inserted during CTS", path);
+            assertEquals("Valid media must be inserted during CTS", Environment.MEDIA_MOUNTED,
+                    Environment.getStorageState(path));
+
+            writeInt(new File(path, FILE_SINGLETON), uid);
+        }
     }
 
     public void readIsolatedStorage() throws Exception {
+        final int uid = android.os.Process.myUid();
+
         // Expect that the value we wrote earlier is still valid and wasn't
         // overwritten by us running as another user.
-        assertEquals("Failed to read singleton file from API path", android.os.Process.myUid(),
+        assertEquals("Failed to read singleton file from API path", uid,
                 readInt(buildApiPath(FILE_SINGLETON)));
-        assertEquals("Failed to read singleton file from env path", android.os.Process.myUid(),
+        assertEquals("Failed to read singleton file from env path", uid,
                 readInt(buildEnvPath(FILE_SINGLETON)));
-        assertEquals("Failed to read singleton file from raw path", android.os.Process.myUid(),
+        assertEquals("Failed to read singleton file from raw path", uid,
                 readInt(buildRawPath(FILE_SINGLETON)));
 
-        assertEquals("Failed to read UID file from API path", android.os.Process.myUid(),
+        assertEquals("Failed to read UID file from API path", uid,
                 readInt(buildApiPath(FILE_MY_UID)));
+
+        for (File path : getAllPackageSpecificPathsExceptObb(getContext())) {
+            assertNotNull("Valid media must be inserted during CTS", path);
+            assertEquals("Valid media must be inserted during CTS", Environment.MEDIA_MOUNTED,
+                    Environment.getStorageState(path));
+
+            assertEquals("Unexpected value in singleton file at " + path, uid,
+                    readInt(new File(path, FILE_SINGLETON)));
+        }
     }
 
     public void cleanObbStorage() throws Exception {
@@ -119,22 +140,4 @@
     private static File buildRawPath(String file) {
         return new File("/sdcard/", file);
     }
-
-    private static void writeInt(File file, int value) throws IOException {
-        final DataOutputStream os = new DataOutputStream(new FileOutputStream(file));
-        try {
-            os.writeInt(value);
-        } finally {
-            os.close();
-        }
-    }
-
-    private static int readInt(File file) throws IOException {
-        final DataInputStream is = new DataInputStream(new FileInputStream(file));
-        try {
-            return is.readInt();
-        } finally {
-            is.close();
-        }
-    }
 }
diff --git a/hostsidetests/appsecurity/test-apps/PermissionDeclareApp/src/com/android/cts/permissiondeclareapp/GrantUriPermission.java b/hostsidetests/appsecurity/test-apps/PermissionDeclareApp/src/com/android/cts/permissiondeclareapp/GrantUriPermission.java
index 31a3f47..46e1dff 100644
--- a/hostsidetests/appsecurity/test-apps/PermissionDeclareApp/src/com/android/cts/permissiondeclareapp/GrantUriPermission.java
+++ b/hostsidetests/appsecurity/test-apps/PermissionDeclareApp/src/com/android/cts/permissiondeclareapp/GrantUriPermission.java
@@ -19,27 +19,82 @@
 import android.content.BroadcastReceiver;
 import android.content.Context;
 import android.content.Intent;
+import android.content.UriPermission;
+import android.net.Uri;
 import android.util.Log;
 
+import java.util.List;
+
 public class GrantUriPermission extends BroadcastReceiver {
+    public static final String ACTION_GRANT_URI = "grantUri";
+    public static final String ACTION_REVOKE_URI = "revokeUri";
+    public static final String ACTION_START_ACTIVITY = "startActivity";
+    public static final String ACTION_START_SERVICE = "startService";
+    public static final String ACTION_VERIFY_OUTGOING_PERSISTED = "verifyOutgoingPersisted";
+
+    public static final String EXTRA_PACKAGE_NAME = "packageName";
+    public static final String EXTRA_INTENT = Intent.EXTRA_INTENT;
+    public static final String EXTRA_URI = "uri";
+    public static final String EXTRA_MODE = "mode";
+
+    public static final int SUCCESS = 101;
+    public static final int FAILURE = 100;
+
     @Override
     public void onReceive(Context context, Intent intent) {
-        Intent newIntent = (Intent)intent.getParcelableExtra("intent");
-        boolean service = intent.getBooleanExtra("service", false);
         try {
-            if (!service) {
+            final String action = intent.getAction();
+            if (ACTION_GRANT_URI.equals(action)) {
+                final Uri uri = intent.getParcelableExtra(EXTRA_URI);
+                context.grantUriPermission(intent.getStringExtra(EXTRA_PACKAGE_NAME), uri,
+                        intent.getIntExtra(EXTRA_MODE, 0));
+
+            } else if (ACTION_REVOKE_URI.equals(action)) {
+                final Uri uri = intent.getParcelableExtra(EXTRA_URI);
+                context.revokeUriPermission(uri, intent.getIntExtra(EXTRA_MODE, 0));
+
+            } else if (ACTION_START_ACTIVITY.equals(action)) {
+                final Intent newIntent = intent.getParcelableExtra(EXTRA_INTENT);
                 newIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                 context.startActivity(newIntent);
-            } else {
+
+            } else if (ACTION_START_SERVICE.equals(action)) {
+                final Intent newIntent = intent.getParcelableExtra(EXTRA_INTENT);
                 context.startService(newIntent);
+
+            } else if (ACTION_VERIFY_OUTGOING_PERSISTED.equals(action)) {
+                verifyOutgoingPersisted(context, intent);
             }
+
             if (isOrderedBroadcast()) {
-                setResultCode(101);
+                setResultCode(SUCCESS);
             }
         } catch (SecurityException e) {
             Log.i("GrantUriPermission", "Security exception", e);
             if (isOrderedBroadcast()) {
-                setResultCode(100);
+                setResultCode(FAILURE);
+            }
+        }
+    }
+
+    private void verifyOutgoingPersisted(Context context, Intent intent) {
+        final Uri uri = intent.getParcelableExtra(EXTRA_URI);
+        final List<UriPermission> perms = context.getContentResolver()
+                .getOutgoingPersistedUriPermissions();
+        if (uri != null) {
+            // Should have a single persisted perm
+            if (perms.size() != 1) {
+                throw new SecurityException("Missing grant");
+            }
+            final UriPermission perm = perms.get(0);
+            if (!perm.getUri().equals(uri)) {
+                throw new SecurityException(
+                        "Expected " + uri + " but found " + perm.getUri());
+            }
+        } else {
+            // Should have zero persisted perms
+            if (perms.size() != 0) {
+                throw new SecurityException("Unexpected grant");
             }
         }
     }
diff --git a/hostsidetests/appsecurity/test-apps/ReadExternalStorageApp/Android.mk b/hostsidetests/appsecurity/test-apps/ReadExternalStorageApp/Android.mk
new file mode 100644
index 0000000..44e4bef
--- /dev/null
+++ b/hostsidetests/appsecurity/test-apps/ReadExternalStorageApp/Android.mk
@@ -0,0 +1,29 @@
+# Copyright (C) 2013 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_TAGS := tests
+LOCAL_SDK_VERSION := current
+
+LOCAL_SRC_FILES := $(call all-java-files-under, src) \
+    ../ExternalStorageApp/src/com/android/cts/externalstorageapp/CommonExternalStorageTest.java
+
+LOCAL_PACKAGE_NAME := CtsReadExternalStorageApp
+
+LOCAL_DEX_PREOPT := false
+
+include $(BUILD_PACKAGE)
diff --git a/hostsidetests/appsecurity/test-apps/ReadExternalStorageApp/AndroidManifest.xml b/hostsidetests/appsecurity/test-apps/ReadExternalStorageApp/AndroidManifest.xml
new file mode 100644
index 0000000..f6582b9
--- /dev/null
+++ b/hostsidetests/appsecurity/test-apps/ReadExternalStorageApp/AndroidManifest.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2013 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.
+-->
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+       package="com.android.cts.readexternalstorageapp">
+
+    <application>
+        <uses-library android:name="android.test.runner" />
+    </application>
+
+    <instrumentation android:name="android.test.InstrumentationTestRunner"
+        android:targetPackage="com.android.cts.readexternalstorageapp" />
+
+    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
+
+</manifest>
diff --git a/hostsidetests/appsecurity/test-apps/ReadExternalStorageApp/src/com/android/cts/readexternalstorageapp/ReadExternalStorageTest.java b/hostsidetests/appsecurity/test-apps/ReadExternalStorageApp/src/com/android/cts/readexternalstorageapp/ReadExternalStorageTest.java
new file mode 100644
index 0000000..bbd1e7a
--- /dev/null
+++ b/hostsidetests/appsecurity/test-apps/ReadExternalStorageApp/src/com/android/cts/readexternalstorageapp/ReadExternalStorageTest.java
@@ -0,0 +1,91 @@
+/*
+ * Copyright (C) 2012 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.android.cts.readexternalstorageapp;
+
+import static com.android.cts.externalstorageapp.CommonExternalStorageTest.PACKAGE_NONE;
+import static com.android.cts.externalstorageapp.CommonExternalStorageTest.PACKAGE_READ;
+import static com.android.cts.externalstorageapp.CommonExternalStorageTest.PACKAGE_WRITE;
+import static com.android.cts.externalstorageapp.CommonExternalStorageTest.assertDirReadOnlyAccess;
+import static com.android.cts.externalstorageapp.CommonExternalStorageTest.assertDirReadWriteAccess;
+import static com.android.cts.externalstorageapp.CommonExternalStorageTest.assertFileReadOnlyAccess;
+import static com.android.cts.externalstorageapp.CommonExternalStorageTest.assertFileReadWriteAccess;
+import static com.android.cts.externalstorageapp.CommonExternalStorageTest.buildGiftForPackage;
+import static com.android.cts.externalstorageapp.CommonExternalStorageTest.getAllPackageSpecificPaths;
+import static com.android.cts.externalstorageapp.CommonExternalStorageTest.readInt;
+
+import android.os.Environment;
+import android.test.AndroidTestCase;
+
+import java.io.File;
+import java.util.List;
+
+/**
+ * Test external storage from an application that has
+ * {@link android.Manifest.permission#READ_EXTERNAL_STORAGE}.
+ */
+public class ReadExternalStorageTest extends AndroidTestCase {
+
+    public void testPrimaryReadOnly() throws Exception {
+        assertDirReadOnlyAccess(Environment.getExternalStorageDirectory());
+    }
+
+    /**
+     * Verify that above our package directories we always have read only
+     * access.
+     */
+    public void testAllWalkingUpTreeReadOnly() throws Exception {
+        final List<File> paths = getAllPackageSpecificPaths(getContext());
+        final String packageName = getContext().getPackageName();
+
+        for (File path : paths) {
+            assertNotNull("Valid media must be inserted during CTS", path);
+            assertEquals("Valid media must be inserted during CTS", Environment.MEDIA_MOUNTED,
+                    Environment.getStorageState(path));
+
+            assertTrue(path.getAbsolutePath().contains(packageName));
+
+            // Walk up until we drop our package
+            while (path.getAbsolutePath().contains(packageName)) {
+                assertDirReadWriteAccess(path);
+                path = path.getParentFile();
+            }
+
+            // Keep walking up until we leave device
+            while (Environment.MEDIA_MOUNTED.equals(Environment.getStorageState(path))) {
+                assertDirReadOnlyAccess(path);
+                path = path.getParentFile();
+            }
+        }
+    }
+
+    /**
+     * Verify we can read all gifts.
+     */
+    public void doVerifyGifts() throws Exception {
+        final File none = buildGiftForPackage(getContext(), PACKAGE_NONE);
+        assertFileReadOnlyAccess(none);
+        assertEquals(100, readInt(none));
+
+        final File read = buildGiftForPackage(getContext(), PACKAGE_READ);
+        assertFileReadWriteAccess(read);
+        assertEquals(101, readInt(read));
+
+        final File write = buildGiftForPackage(getContext(), PACKAGE_WRITE);
+        assertFileReadOnlyAccess(write);
+        assertEquals(102, readInt(write));
+    }
+}
diff --git a/hostsidetests/appsecurity/test-apps/UsePermissionDiffCert/Android.mk b/hostsidetests/appsecurity/test-apps/UsePermissionDiffCert/Android.mk
index acf9f6f..d836042 100644
--- a/hostsidetests/appsecurity/test-apps/UsePermissionDiffCert/Android.mk
+++ b/hostsidetests/appsecurity/test-apps/UsePermissionDiffCert/Android.mk
@@ -18,7 +18,8 @@
 
 LOCAL_MODULE_TAGS := tests
 
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
+LOCAL_SRC_FILES := $(call all-java-files-under, src) \
+    ../PermissionDeclareApp/src/com/android/cts/permissiondeclareapp/GrantUriPermission.java
 
 LOCAL_SDK_VERSION := current
 
diff --git a/hostsidetests/appsecurity/test-apps/UsePermissionDiffCert/src/com/android/cts/usespermissiondiffcertapp/AccessPermissionWithDiffSigTest.java b/hostsidetests/appsecurity/test-apps/UsePermissionDiffCert/src/com/android/cts/usespermissiondiffcertapp/AccessPermissionWithDiffSigTest.java
index 8f40cf1..db26eec 100644
--- a/hostsidetests/appsecurity/test-apps/UsePermissionDiffCert/src/com/android/cts/usespermissiondiffcertapp/AccessPermissionWithDiffSigTest.java
+++ b/hostsidetests/appsecurity/test-apps/UsePermissionDiffCert/src/com/android/cts/usespermissiondiffcertapp/AccessPermissionWithDiffSigTest.java
@@ -23,13 +23,17 @@
 import android.content.ContentValues;
 import android.content.Context;
 import android.content.Intent;
+import android.content.UriPermission;
 import android.database.Cursor;
 import android.net.Uri;
 import android.os.SystemClock;
 import android.test.AndroidTestCase;
 import android.util.Log;
 
+import com.android.cts.permissiondeclareapp.GrantUriPermission;
+
 import java.io.IOException;
+import java.util.List;
 
 /**
  * Tests that signature-enforced permissions cannot be accessed by apps signed
@@ -54,6 +58,14 @@
     private static final String EXPECTED_MIME_TYPE_AMBIGUOUS = "got/theUnspecifiedMIME";
     private static final Uri AMBIGUOUS_URI = Uri.parse("content://ctsambiguousprovider");
 
+    @Override
+    protected void tearDown() throws Exception {
+        super.tearDown();
+
+        // Always dispose, usually to clean up from failed tests
+        ReceiveUriActivity.finishCurInstanceSync();
+    }
+
     private void assertReadingContentUriNotAllowed(Uri uri, String msg) {
         try {
             getContext().getContentResolver().query(uri, null, null, null, null);
@@ -423,11 +435,11 @@
             synchronized (this) {
                 mHaveResult = true;
                 switch (getResultCode()) {
-                    case 100:
+                    case GrantUriPermission.FAILURE:
                         mGoodResult = true;
                         mSucceeded = false;
                         break;
-                    case 101:
+                    case GrantUriPermission.SUCCESS:
                         mGoodResult = true;
                         mSucceeded = true;
                         break;
@@ -491,8 +503,9 @@
                 service ? ReceiveUriService.class : ReceiveUriActivity.class);
         Intent intent = new Intent();
         intent.setComponent(GRANT_URI_PERM_COMP);
-        intent.putExtra("intent", grantIntent);
-        intent.putExtra("service", service);
+        intent.setAction(service ? GrantUriPermission.ACTION_START_SERVICE
+                : GrantUriPermission.ACTION_START_ACTIVITY);
+        intent.putExtra(GrantUriPermission.EXTRA_INTENT, grantIntent);
         GrantResultReceiver receiver = new GrantResultReceiver();
         getContext().sendOrderedBroadcast(intent, null, receiver, null, 0, null, null);
         receiver.assertFailure("Able to grant URI permission to " + grantDataUri + " when should not");
@@ -502,8 +515,9 @@
                 service ? ReceiveUriService.class : ReceiveUriActivity.class);
         intent = new Intent();
         intent.setComponent(GRANT_URI_PERM_COMP);
-        intent.putExtra("intent", grantIntent);
-        intent.putExtra("service", service);
+        intent.setAction(service ? GrantUriPermission.ACTION_START_SERVICE
+                : GrantUriPermission.ACTION_START_ACTIVITY);
+        intent.putExtra(GrantUriPermission.EXTRA_INTENT, grantIntent);
         receiver = new GrantResultReceiver();
         getContext().sendOrderedBroadcast(intent, null, receiver, null, 0, null, null);
         receiver.assertFailure("Able to grant URI permission to " + grantIntent.getClipData()
@@ -578,8 +592,9 @@
                 service ? ReceiveUriService.class : ReceiveUriActivity.class);
         Intent intent = new Intent();
         intent.setComponent(GRANT_URI_PERM_COMP);
-        intent.putExtra("intent", grantIntent);
-        intent.putExtra("service", service);
+        intent.setAction(service ? GrantUriPermission.ACTION_START_SERVICE
+                : GrantUriPermission.ACTION_START_ACTIVITY);
+        intent.putExtra(GrantUriPermission.EXTRA_INTENT, grantIntent);
         getContext().sendBroadcast(intent);
     }
 
@@ -843,7 +858,7 @@
         doTestGrantActivityUriWritePermission(PRIV_URI_GRANTING, false);
     }
 
-    void doTestGrantServiceUriReadPermission(Uri uri, boolean useClip) {
+    private void doTestGrantServiceUriReadPermission(Uri uri, boolean useClip) {
         final Uri subUri = Uri.withAppendedPath(uri, "foo");
         final Uri subSubUri = Uri.withAppendedPath(subUri, "bar");
         final Uri sub2Uri = Uri.withAppendedPath(uri, "yes");
@@ -1207,4 +1222,137 @@
         assertEquals(EXPECTED_MIME_TYPE_AMBIGUOUS,
                 getContext().getContentResolver().getType(AMBIGUOUS_URI_COMPAT));
     }
+
+    /**
+     * Validate behavior of persistable permission grants.
+     */
+    public void testGrantPersistableUriPermission() {
+        final ContentResolver resolver = getContext().getContentResolver();
+
+        final Uri target = Uri.withAppendedPath(PERM_URI_GRANTING, "foo");
+        final ClipData clip = makeSingleClipData(target);
+
+        // Make sure we can't see the target
+        assertReadingClipNotAllowed(clip, "reading should have failed");
+        assertWritingClipNotAllowed(clip, "writing should have failed");
+
+        // Make sure we can't take a grant we don't have
+        try {
+            resolver.takePersistableUriPermission(target, Intent.FLAG_GRANT_READ_URI_PERMISSION);
+            fail("taking read should have failed");
+        } catch (SecurityException expected) {
+        }
+
+        // And since we were just installed, no persisted grants yet
+        assertNoPersistedUriPermission();
+
+        // Now, let's grant ourselves some access
+        ReceiveUriActivity.clearStarted();
+        grantClipUriPermission(clip, Intent.FLAG_GRANT_READ_URI_PERMISSION
+                | Intent.FLAG_GRANT_PERSISTABLE_URI_PERMISSION, false);
+        ReceiveUriActivity.waitForStart();
+
+        // We should now have reading access, even before taking the persistable
+        // grant. Persisted grants should still be empty.
+        assertReadingClipAllowed(clip);
+        assertWritingClipNotAllowed(clip, "writing should have failed");
+        assertNoPersistedUriPermission();
+
+        // Take the read grant and verify we have it!
+        long before = System.currentTimeMillis();
+        resolver.takePersistableUriPermission(target, Intent.FLAG_GRANT_READ_URI_PERMISSION);
+        long after = System.currentTimeMillis();
+        assertPersistedUriPermission(target, Intent.FLAG_GRANT_READ_URI_PERMISSION, before, after);
+
+        // Make sure we can't take a grant we don't have
+        try {
+            resolver.takePersistableUriPermission(target, Intent.FLAG_GRANT_WRITE_URI_PERMISSION);
+            fail("taking write should have failed");
+        } catch (SecurityException expected) {
+        }
+
+        // Launch again giving ourselves persistable read and write access
+        ReceiveUriActivity.clearNewIntent();
+        grantClipUriPermission(clip, Intent.FLAG_GRANT_READ_URI_PERMISSION
+                | Intent.FLAG_GRANT_WRITE_URI_PERMISSION
+                | Intent.FLAG_GRANT_PERSISTABLE_URI_PERMISSION, false);
+        ReceiveUriActivity.waitForNewIntent();
+
+        // Previous persisted grant should be unchanged
+        assertPersistedUriPermission(target, Intent.FLAG_GRANT_READ_URI_PERMISSION, before, after);
+
+        // We should have both read and write; read is persisted, and write
+        // isn't persisted yet.
+        assertReadingClipAllowed(clip);
+        assertWritingClipAllowed(clip);
+
+        // Take again, but still only read; should just update timestamp
+        before = System.currentTimeMillis();
+        resolver.takePersistableUriPermission(target, Intent.FLAG_GRANT_READ_URI_PERMISSION);
+        after = System.currentTimeMillis();
+        assertPersistedUriPermission(target, Intent.FLAG_GRANT_READ_URI_PERMISSION, before, after);
+
+        // And take yet again, both read and write
+        before = System.currentTimeMillis();
+        resolver.takePersistableUriPermission(target,
+                Intent.FLAG_GRANT_READ_URI_PERMISSION | Intent.FLAG_GRANT_WRITE_URI_PERMISSION);
+        after = System.currentTimeMillis();
+        assertPersistedUriPermission(target,
+                Intent.FLAG_GRANT_READ_URI_PERMISSION | Intent.FLAG_GRANT_WRITE_URI_PERMISSION,
+                before, after);
+
+        // Now drop the persisted grant; write first, then read
+        resolver.releasePersistableUriPermission(target, Intent.FLAG_GRANT_READ_URI_PERMISSION);
+        assertPersistedUriPermission(target, Intent.FLAG_GRANT_WRITE_URI_PERMISSION, before, after);
+        resolver.releasePersistableUriPermission(target, Intent.FLAG_GRANT_WRITE_URI_PERMISSION);
+        assertNoPersistedUriPermission();
+
+        // And even though we dropped the persistable grants, our activity is
+        // still running with the global grants (until reboot).
+        assertReadingClipAllowed(clip);
+        assertWritingClipAllowed(clip);
+
+        ReceiveUriActivity.finishCurInstanceSync();
+    }
+
+    private void assertNoPersistedUriPermission() {
+        assertPersistedUriPermission(null, 0, -1, -1);
+    }
+
+    private void assertPersistedUriPermission(Uri uri, int flags, long before, long after) {
+        // Assert local
+        final List<UriPermission> perms = getContext()
+                .getContentResolver().getPersistedUriPermissions();
+        if (uri != null) {
+            assertEquals("expected exactly one permission", 1, perms.size());
+
+            final UriPermission perm = perms.get(0);
+            assertEquals("unexpected uri", uri, perm.getUri());
+
+            final long actual = perm.getPersistedTime();
+            if (before != -1) {
+                assertTrue("found " + actual + " before " + before, actual >= before);
+            }
+            if (after != -1) {
+                assertTrue("found " + actual + " after " + after, actual <= after);
+            }
+
+            final boolean expectedRead = (flags & Intent.FLAG_GRANT_READ_URI_PERMISSION) != 0;
+            final boolean expectedWrite = (flags & Intent.FLAG_GRANT_WRITE_URI_PERMISSION) != 0;
+            assertEquals("unexpected read status", expectedRead, perm.isReadPermission());
+            assertEquals("unexpected write status", expectedWrite, perm.isWritePermission());
+
+        } else {
+            assertEquals("expected zero permissions", 0, perms.size());
+        }
+
+        // And assert remote
+        Intent intent = new Intent();
+        intent.setComponent(GRANT_URI_PERM_COMP);
+        intent.setAction(GrantUriPermission.ACTION_VERIFY_OUTGOING_PERSISTED);
+        intent.putExtra(GrantUriPermission.EXTRA_URI, uri);
+        GrantResultReceiver receiver = new GrantResultReceiver();
+        getContext().sendOrderedBroadcast(intent, null, receiver, null, 0, null, null);
+        receiver.assertSuccess("unexpected outgoing persisted Uri status");
+    }
 }
diff --git a/hostsidetests/appsecurity/test-apps/UsePermissionDiffCert/src/com/android/cts/usespermissiondiffcertapp/ReceiveUriActivity.java b/hostsidetests/appsecurity/test-apps/UsePermissionDiffCert/src/com/android/cts/usespermissiondiffcertapp/ReceiveUriActivity.java
index 851d8da..dd9a5c5 100644
--- a/hostsidetests/appsecurity/test-apps/UsePermissionDiffCert/src/com/android/cts/usespermissiondiffcertapp/ReceiveUriActivity.java
+++ b/hostsidetests/appsecurity/test-apps/UsePermissionDiffCert/src/com/android/cts/usespermissiondiffcertapp/ReceiveUriActivity.java
@@ -32,7 +32,7 @@
     private static final Object sLock = new Object();
     private static boolean sStarted;
     private static boolean sNewIntent;
-    private static boolean sDestroyed;
+    private static boolean sDestroyed = true;
     private static ReceiveUriActivity sCurInstance;
 
     private static final long TIMEOUT_MILLIS = 30 * SECOND_IN_MILLIS;
diff --git a/hostsidetests/appsecurity/test-apps/WriteExternalStorageApp/Android.mk b/hostsidetests/appsecurity/test-apps/WriteExternalStorageApp/Android.mk
index 9e056a9..4352bfb 100644
--- a/hostsidetests/appsecurity/test-apps/WriteExternalStorageApp/Android.mk
+++ b/hostsidetests/appsecurity/test-apps/WriteExternalStorageApp/Android.mk
@@ -17,9 +17,11 @@
 include $(CLEAR_VARS)
 
 LOCAL_MODULE_TAGS := tests
-LOCAL_SDK_VERSION := 10
+LOCAL_SDK_VERSION := current
 
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
+LOCAL_SRC_FILES := $(call all-java-files-under, src) \
+    ../ExternalStorageApp/src/com/android/cts/externalstorageapp/CommonExternalStorageTest.java
+
 LOCAL_PACKAGE_NAME := CtsWriteExternalStorageApp
 
 LOCAL_DEX_PREOPT := false
diff --git a/hostsidetests/appsecurity/test-apps/WriteExternalStorageApp/src/com/android/cts/writeexternalstorageapp/WriteExternalStorageTest.java b/hostsidetests/appsecurity/test-apps/WriteExternalStorageApp/src/com/android/cts/writeexternalstorageapp/WriteExternalStorageTest.java
index 3f103b6..6857236 100644
--- a/hostsidetests/appsecurity/test-apps/WriteExternalStorageApp/src/com/android/cts/writeexternalstorageapp/WriteExternalStorageTest.java
+++ b/hostsidetests/appsecurity/test-apps/WriteExternalStorageApp/src/com/android/cts/writeexternalstorageapp/WriteExternalStorageTest.java
@@ -16,19 +16,38 @@
 
 package com.android.cts.writeexternalstorageapp;
 
+import static com.android.cts.externalstorageapp.CommonExternalStorageTest.PACKAGE_NONE;
+import static com.android.cts.externalstorageapp.CommonExternalStorageTest.PACKAGE_READ;
+import static com.android.cts.externalstorageapp.CommonExternalStorageTest.PACKAGE_WRITE;
+import static com.android.cts.externalstorageapp.CommonExternalStorageTest.TAG;
+import static com.android.cts.externalstorageapp.CommonExternalStorageTest.assertDirNoWriteAccess;
+import static com.android.cts.externalstorageapp.CommonExternalStorageTest.assertDirReadOnlyAccess;
+import static com.android.cts.externalstorageapp.CommonExternalStorageTest.assertDirReadWriteAccess;
+import static com.android.cts.externalstorageapp.CommonExternalStorageTest.assertFileReadWriteAccess;
+import static com.android.cts.externalstorageapp.CommonExternalStorageTest.buildGiftForPackage;
+import static com.android.cts.externalstorageapp.CommonExternalStorageTest.buildProbeFile;
+import static com.android.cts.externalstorageapp.CommonExternalStorageTest.deleteContents;
+import static com.android.cts.externalstorageapp.CommonExternalStorageTest.getAllPackageSpecificPaths;
+import static com.android.cts.externalstorageapp.CommonExternalStorageTest.getPrimaryPackageSpecificPaths;
+import static com.android.cts.externalstorageapp.CommonExternalStorageTest.getSecondaryPackageSpecificPaths;
+import static com.android.cts.externalstorageapp.CommonExternalStorageTest.readInt;
+import static com.android.cts.externalstorageapp.CommonExternalStorageTest.writeInt;
+
 import android.os.Environment;
 import android.test.AndroidTestCase;
+import android.util.Log;
 
-import java.io.DataInputStream;
-import java.io.DataOutputStream;
+import com.android.cts.externalstorageapp.CommonExternalStorageTest;
+
+import java.io.BufferedReader;
 import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileOutputStream;
-import java.io.IOException;
+import java.io.FileReader;
+import java.util.List;
 import java.util.Random;
 
 /**
- * Test if {@link Environment#getExternalStorageDirectory()} is writable.
+ * Test external storage from an application that has
+ * {@link android.Manifest.permission#WRITE_EXTERNAL_STORAGE}.
  */
 public class WriteExternalStorageTest extends AndroidTestCase {
 
@@ -57,6 +76,10 @@
         }
     }
 
+    private void assertExternalStorageMounted() {
+        assertEquals(Environment.MEDIA_MOUNTED, Environment.getExternalStorageState());
+    }
+
     public void testReadExternalStorage() throws Exception {
         assertExternalStorageMounted();
         Environment.getExternalStorageDirectory().list();
@@ -93,25 +116,207 @@
         }
     }
 
-    private static void assertExternalStorageMounted() {
-        assertEquals(Environment.MEDIA_MOUNTED, Environment.getExternalStorageState());
+    public void testPrimaryReadWrite() throws Exception {
+        assertDirReadWriteAccess(Environment.getExternalStorageDirectory());
     }
 
-    private static void writeInt(File file, int value) throws IOException {
-        final DataOutputStream os = new DataOutputStream(new FileOutputStream(file));
-        try {
-            os.writeInt(value);
-        } finally {
-            os.close();
+    /**
+     * Verify that above our package directories (on primary storage) we always
+     * have write access.
+     */
+    public void testPrimaryWalkingUpTreeReadWrite() throws Exception {
+        final List<File> paths = getPrimaryPackageSpecificPaths(getContext());
+        final String packageName = getContext().getPackageName();
+
+        for (File path : paths) {
+            assertNotNull("Valid media must be inserted during CTS", path);
+            assertEquals("Valid media must be inserted during CTS", Environment.MEDIA_MOUNTED,
+                    Environment.getStorageState(path));
+
+            assertTrue(path.getAbsolutePath().contains(packageName));
+
+            // Walk until we leave device, writing the whole way
+            while (Environment.MEDIA_MOUNTED.equals(Environment.getStorageState(path))) {
+                assertDirReadWriteAccess(path);
+                path = path.getParentFile();
+            }
         }
     }
 
-    private static int readInt(File file) throws IOException {
-        final DataInputStream is = new DataInputStream(new FileInputStream(file));
-        try {
-            return is.readInt();
-        } finally {
-            is.close();
+    /**
+     * Verify that we have write access in other packages on primary external
+     * storage.
+     */
+    public void testPrimaryOtherPackageWriteAccess() throws Exception {
+        deleteContents(Environment.getExternalStorageDirectory());
+
+        final File ourCache = getContext().getExternalCacheDir();
+        final File otherCache = new File(ourCache.getAbsolutePath()
+                .replace(getContext().getPackageName(), PACKAGE_NONE));
+
+        assertTrue(otherCache.mkdirs());
+        assertDirReadWriteAccess(otherCache);
+    }
+
+    /**
+     * Verify we have valid mount status until we leave the device.
+     */
+    public void testMountStatusWalkingUpTree() {
+        final File top = Environment.getExternalStorageDirectory();
+        File path = getContext().getExternalCacheDir();
+
+        int depth = 0;
+        while (depth++ < 32) {
+            assertDirReadWriteAccess(path);
+            assertEquals(Environment.MEDIA_MOUNTED, Environment.getStorageState(path));
+
+            if (path.getAbsolutePath().equals(top.getAbsolutePath())) {
+                break;
+            }
+
+            path = path.getParentFile();
         }
+
+        // Make sure we hit the top
+        assertEquals(top.getAbsolutePath(), path.getAbsolutePath());
+
+        // And going one step further should be outside our reach
+        path = path.getParentFile();
+        assertDirNoWriteAccess(path);
+        assertEquals(Environment.MEDIA_UNKNOWN, Environment.getStorageState(path));
+    }
+
+    /**
+     * Verify mount status for random paths.
+     */
+    public void testMountStatus() {
+        assertEquals(Environment.MEDIA_UNKNOWN,
+                Environment.getStorageState(new File("/meow-should-never-exist")));
+
+        // Internal data isn't a mount point
+        assertEquals(Environment.MEDIA_UNKNOWN,
+                Environment.getStorageState(getContext().getCacheDir()));
+    }
+
+    /**
+     * Verify that we have write access in our package-specific directories on
+     * secondary storage devices, but it becomes read-only access above them.
+     */
+    public void testSecondaryWalkingUpTreeReadOnly() throws Exception {
+        final List<File> paths = getSecondaryPackageSpecificPaths(getContext());
+        final String packageName = getContext().getPackageName();
+
+        for (File path : paths) {
+            assertNotNull("Valid media must be inserted during CTS", path);
+            assertEquals("Valid media must be inserted during CTS", Environment.MEDIA_MOUNTED,
+                    Environment.getStorageState(path));
+
+            assertTrue(path.getAbsolutePath().contains(packageName));
+
+            // Walk up until we drop our package
+            while (path.getAbsolutePath().contains(packageName)) {
+                assertDirReadWriteAccess(path);
+                path = path.getParentFile();
+            }
+
+            // Keep walking up until we leave device
+            while (Environment.MEDIA_MOUNTED.equals(Environment.getStorageState(path))) {
+                assertDirReadOnlyAccess(path);
+                path = path.getParentFile();
+            }
+        }
+    }
+
+    /**
+     * Verify that .nomedia is created correctly.
+     */
+    public void testVerifyNoMediaCreated() throws Exception {
+        deleteContents(Environment.getExternalStorageDirectory());
+
+        final List<File> paths = getAllPackageSpecificPaths(getContext());
+
+        // Require that .nomedia was created somewhere above each dir
+        for (File path : paths) {
+            assertNotNull("Valid media must be inserted during CTS", path);
+            assertEquals("Valid media must be inserted during CTS", Environment.MEDIA_MOUNTED,
+                    Environment.getStorageState(path));
+
+            final File start = path;
+
+            boolean found = false;
+            while (Environment.MEDIA_MOUNTED.equals(Environment.getStorageState(path))) {
+                final File test = new File(path, ".nomedia");
+                if (test.exists()) {
+                    found = true;
+                    break;
+                }
+                path = path.getParentFile();
+            }
+
+            if (!found) {
+                fail("Missing .nomedia file above package-specific directory " + start
+                        + "; gave up at " + path);
+            }
+        }
+    }
+
+    /**
+     * Secondary external storage mount points must always be read-only, per
+     * CDD, <em>except</em> for the package specific directories tested by
+     * {@link CommonExternalStorageTest#testAllPackageDirsWritable()}.
+     */
+    public void testSecondaryMountPointsNotWritable() throws Exception {
+        final File probe = buildProbeFile(Environment.getExternalStorageDirectory());
+        assertTrue(probe.createNewFile());
+
+        final BufferedReader br = new BufferedReader(new FileReader("/proc/self/mounts"));
+        try {
+            String line;
+            while ((line = br.readLine()) != null) {
+                final String[] fields = line.split(" ");
+                final File testMount = new File(fields[1]);
+                final File testProbe = new File(testMount, probe.getName());
+                if (testProbe.exists()) {
+                    Log.d(TAG, "Primary external mountpoint " + testMount);
+                } else {
+                    // This mountpoint is not primary external storage; we must
+                    // not be able to write.
+                    Log.d(TAG, "Other mountpoint " + testMount);
+                    assertDirNoWriteAccess(testProbe.getParentFile());
+                }
+            }
+       } finally {
+           br.close();
+           probe.delete();
+       }
+    }
+
+    /**
+     * Leave gifts for other packages in their primary external cache dirs.
+     */
+    public void doWriteGifts() throws Exception {
+        final File none = buildGiftForPackage(getContext(), PACKAGE_NONE);
+        none.getParentFile().mkdirs();
+        none.createNewFile();
+        assertFileReadWriteAccess(none);
+
+        writeInt(none, 100);
+        assertEquals(100, readInt(none));
+
+        final File read = buildGiftForPackage(getContext(), PACKAGE_READ);
+        read.getParentFile().mkdirs();
+        read.createNewFile();
+        assertFileReadWriteAccess(read);
+
+        writeInt(read, 101);
+        assertEquals(101, readInt(read));
+
+        final File write = buildGiftForPackage(getContext(), PACKAGE_WRITE);
+        write.getParentFile().mkdirs();
+        write.createNewFile();
+        assertFileReadWriteAccess(write);
+
+        writeInt(write, 102);
+        assertEquals(102, readInt(write));
     }
 }
diff --git a/hostsidetests/monkey/src/com/android/cts/monkey/AbstractMonkeyTest.java b/hostsidetests/monkey/src/com/android/cts/monkey/AbstractMonkeyTest.java
old mode 100644
new mode 100755
index 9c27b62..11d2a2c
--- a/hostsidetests/monkey/src/com/android/cts/monkey/AbstractMonkeyTest.java
+++ b/hostsidetests/monkey/src/com/android/cts/monkey/AbstractMonkeyTest.java
@@ -17,7 +17,7 @@
     /** 
      * Base monkey command with flags to avoid side effects like airplane mode.
      */
-    static final String MONKEY_CMD = "monkey --pct-touch 0 --pct-motion 0 --pct-majornav 0 --pct-syskeys 0 --pct-anyevent 0 --pct-rotation 0";
+    static final String MONKEY_CMD = "monkey --pct-motion 0 --pct-majornav 0 --pct-syskeys 0 --pct-anyevent 0 --pct-rotation 0";
 
     CtsBuildHelper mBuild;
     ITestDevice mDevice;
diff --git a/hostsidetests/sample/Android.mk b/hostsidetests/sample/Android.mk
new file mode 100644
index 0000000..1d3ddc8
--- /dev/null
+++ b/hostsidetests/sample/Android.mk
@@ -0,0 +1,32 @@
+# Copyright (C) 2014 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_SRC_FILES := $(call all-java-files-under, src)
+
+LOCAL_MODULE_TAGS := optional
+
+# Must match the package name in CtsTestCaseList.mk
+LOCAL_MODULE := CtsSampleHostTestCases
+
+LOCAL_JAVA_LIBRARIES := cts-tradefed ddmlib-prebuilt tradefed-prebuilt
+
+LOCAL_CTS_TEST_PACKAGE := android.host.sample
+
+include $(BUILD_CTS_HOST_JAVA_LIBRARY)
+
+include $(call all-makefiles-under,$(LOCAL_PATH))
diff --git a/hostsidetests/sample/app/Android.mk b/hostsidetests/sample/app/Android.mk
new file mode 100644
index 0000000..4af45b9
--- /dev/null
+++ b/hostsidetests/sample/app/Android.mk
@@ -0,0 +1,31 @@
+# Copyright (C) 2014 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)
+
+# Don't include this package in any target.
+LOCAL_MODULE_TAGS := optional
+
+# When built, explicitly put it in the data partition.
+LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
+
+LOCAL_SRC_FILES := $(call all-java-files-under, src)
+
+LOCAL_PACKAGE_NAME := CtsSampleDeviceApp
+
+LOCAL_SDK_VERSION := current
+
+include $(BUILD_CTS_PACKAGE)
diff --git a/hostsidetests/sample/app/AndroidManifest.xml b/hostsidetests/sample/app/AndroidManifest.xml
new file mode 100755
index 0000000..c087435
--- /dev/null
+++ b/hostsidetests/sample/app/AndroidManifest.xml
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ * Copyright (C) 2014 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.
+ -->
+
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+    package="android.sample.app">
+
+    <uses-permission android:name="android.permission.DISABLE_KEYGUARD" />
+    <application>
+        <activity android:name=".SampleDeviceActivity" >
+            <intent-filter>
+                <action android:name="android.intent.action.MAIN" />
+                <category android:name="android.intent.category.LAUNCHER" />
+            </intent-filter>
+        </activity>
+    </application>
+
+</manifest>
+
diff --git a/hostsidetests/sample/app/src/android/sample/app/SampleDeviceActivity.java b/hostsidetests/sample/app/src/android/sample/app/SampleDeviceActivity.java
new file mode 100644
index 0000000..d7efc0c
--- /dev/null
+++ b/hostsidetests/sample/app/src/android/sample/app/SampleDeviceActivity.java
@@ -0,0 +1,44 @@
+/*
+ * Copyright (C) 2014 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 android.sample.app;
+
+import android.app.Activity;
+import android.os.Bundle;
+import android.util.Log;
+
+import java.lang.Override;
+
+/**
+ * A simple activity which logs to Logcat.
+ */
+public class SampleDeviceActivity extends Activity {
+
+    private static final String TAG = SampleDeviceActivity.class.getSimpleName();
+
+    /**
+     * The test string to log.
+     */
+    private static final String TEST_STRING = "SampleTestString";
+
+    @Override
+    public void onCreate(Bundle icicle) {
+        super.onCreate(icicle);
+        // Log the test string to Logcat.
+        Log.i(TAG, TEST_STRING);
+    }
+
+}
diff --git a/hostsidetests/sample/src/android/sample/cts/SampleHostResultTest.java b/hostsidetests/sample/src/android/sample/cts/SampleHostResultTest.java
new file mode 100644
index 0000000..a3bc08f
--- /dev/null
+++ b/hostsidetests/sample/src/android/sample/cts/SampleHostResultTest.java
@@ -0,0 +1,148 @@
+/*
+ * Copyright (C) 2014 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 android.sample.cts;
+
+import com.android.cts.tradefed.build.CtsBuildHelper;
+import com.android.cts.tradefed.util.HostReportLog;
+import com.android.cts.util.MeasureRun;
+import com.android.cts.util.MeasureTime;
+import com.android.cts.util.ResultType;
+import com.android.cts.util.ResultUnit;
+import com.android.cts.util.ReportLog;
+import com.android.cts.util.Stat;
+import com.android.ddmlib.Log;
+import com.android.ddmlib.IDevice;
+import com.android.tradefed.build.IBuildInfo;
+import com.android.tradefed.device.ITestDevice;
+import com.android.tradefed.testtype.DeviceTestCase;
+import com.android.tradefed.testtype.IBuildReceiver;
+import com.android.tradefed.util.CommandResult;
+import com.android.tradefed.util.CommandStatus;
+import com.android.tradefed.util.FileUtil;
+import com.android.tradefed.util.RunUtil;
+
+import java.io.File;
+import java.lang.Exception;
+
+/**
+ * Test to measure the transfer time of a file from the host to the device.
+ */
+public class SampleHostResultTest extends DeviceTestCase implements IBuildReceiver {
+
+    private static final String TAG = SampleHostResultTest.class.getSimpleName();
+
+    /**
+     * The number of times to repeat the test.
+     */
+    private static final int REPEAT = 5;
+
+    /**
+     * The name of the plan to transfer.
+     *
+     * In this case we will transfer the CTS.xml file.
+     */
+    private static final String PLAN_NAME = "CTS";
+
+    /**
+     * A reference to the build.
+     */
+    private CtsBuildHelper mBuild;
+
+    /**
+     * A reference to the device under test.
+     */
+    private ITestDevice mDevice;
+
+    @Override
+    public void setBuild(IBuildInfo buildInfo) {
+        // Get the build, this is used to access the APK.
+        mBuild = CtsBuildHelper.createBuildHelper(buildInfo);
+    }
+
+    @Override
+    protected void setUp() throws Exception {
+        super.setUp();
+        // Get the device, this gives a handle to run commands and install APKs.
+        mDevice = getDevice();
+    }
+
+    /**
+     * Measures the time taken to transfer a file to the device and then back.
+     *
+     * The workload is repeated several times and the report is populated with the result.
+     *
+     * @throws Exception
+     */
+    public void testTransferTime() throws Exception {
+        final ITestDevice device = mDevice;
+        // Get the external storage location and ensure its not null.
+        final String externalStorePath = mDevice.getMountPoint(IDevice.MNT_EXTERNAL_STORAGE);
+        assertNotNull("External storage location no found", externalStorePath);
+        // Create the device side path where the file will be transfered.
+        final String devicePath = String.format("%s/%s", externalStorePath, "tmp_testPushPull.txt");
+        // Get the file from the build.
+        final File testFile = mBuild.getTestPlanFile(PLAN_NAME);
+        double[] result = MeasureTime.measure(REPEAT, new MeasureRun() {
+            @Override
+            public void prepare(int i) throws Exception {
+                device.executeShellCommand(String.format("rm %s", devicePath));
+            }
+            @Override
+            public void run(int i) throws Exception {
+                // Create a temporary file to compare with.
+                File tmpFile = FileUtil.createTempFile("tmp", "txt");
+                try {
+                    // Push the file across and ensure it exists.
+                    assertTrue("Could not push file", device.pushFile(testFile, devicePath));
+                    assertTrue("Unsuccessful transfer", device.doesFileExist(devicePath));
+                    // Pull the file back and ensure it is the same.
+                    assertTrue("Could not pull file", device.pullFile(devicePath, tmpFile));
+                    assertFilesAreEqual(testFile, tmpFile);
+                } finally {
+                    // Clean up.
+                    tmpFile.delete();
+                    device.executeShellCommand(String.format("rm %s", devicePath));
+                }
+            }
+        });
+        // Compute the stats.
+        Stat.StatResult stat = Stat.getStat(result);
+        // Get the report for this test and add the results to record.
+        HostReportLog report = new HostReportLog(mDevice.getSerialNumber(),
+                ReportLog.getClassMethodNames());
+        report.printArray("Times", result, ResultType.LOWER_BETTER, ResultUnit.MS);
+        report.printValue("Min", stat.mMin, ResultType.LOWER_BETTER, ResultUnit.MS);
+        report.printValue("Max", stat.mMax, ResultType.LOWER_BETTER, ResultUnit.MS);
+        // Every report must have a summary,
+        report.printSummary("Average", stat.mAverage, ResultType.LOWER_BETTER, ResultUnit.MS);
+        // Send the report to Tradefed.
+        report.deliverReportToHost();
+    }
+
+    /**
+     * Asserts the two given files are equal using the diff utility.
+     *
+     * @throws Exception
+     */
+    private static void assertFilesAreEqual(File first, File second) throws Exception {
+        CommandResult result = RunUtil.getDefault().runTimedCmd(5000, "diff",
+                first.getAbsolutePath(), second.getAbsolutePath());
+        assertTrue("Diff failed to run", result.getStatus() == CommandStatus.SUCCESS);
+        assertTrue("Files are not equivalent", "".equals(result.getStdout()));
+    }
+
+}
diff --git a/hostsidetests/sample/src/android/sample/cts/SampleHostTest.java b/hostsidetests/sample/src/android/sample/cts/SampleHostTest.java
new file mode 100644
index 0000000..7ccde0e
--- /dev/null
+++ b/hostsidetests/sample/src/android/sample/cts/SampleHostTest.java
@@ -0,0 +1,124 @@
+/*
+ * Copyright (C) 2014 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 android.sample.cts;
+
+import com.android.cts.tradefed.build.CtsBuildHelper;
+import com.android.tradefed.build.IBuildInfo;
+import com.android.tradefed.device.ITestDevice;
+import com.android.tradefed.testtype.DeviceTestCase;
+import com.android.tradefed.testtype.IBuildReceiver;
+
+import java.io.File;
+import java.lang.String;
+import java.util.Scanner;
+
+/**
+ * Test to check the APK logs to Logcat.
+ *
+ * When this test builds, it also builds {@see android.sample.app.SampleDeviceActivity} into an APK
+ * which it then installs at runtime and starts. The activity simply prints a message to Logcat and
+ * then gets uninstalled.
+ */
+public class SampleHostTest extends DeviceTestCase implements IBuildReceiver {
+
+    /**
+     * The package name of the APK.
+     */
+    private static final String PACKAGE = "android.sample.app";
+
+    /**
+     * The file name of the APK.
+     */
+    private static final String APK = "CtsSampleDeviceApp.apk";
+
+    /**
+     * The class name of the main activity in the APK.
+     */
+    private static final String CLASS = "SampleDeviceActivity";
+
+    /**
+     * The command to launch the main activity.
+     */
+    private static final String START_COMMAND = String.format(
+            "am start -W -a android.intent.action.MAIN -n %s/%s.%s", PACKAGE, PACKAGE, CLASS);
+
+    /**
+     * The test string to look for.
+     */
+    private static final String TEST_STRING = "SampleTestString";
+
+    /**
+     * A reference to the build.
+     */
+    private CtsBuildHelper mBuild;
+
+    /**
+     * A reference to the device under test.
+     */
+    private ITestDevice mDevice;
+
+    @Override
+    public void setBuild(IBuildInfo buildInfo) {
+        // Get the build, this is used to access the APK.
+        mBuild = CtsBuildHelper.createBuildHelper(buildInfo);
+    }
+
+    @Override
+    protected void setUp() throws Exception {
+        super.setUp();
+        // Get the device, this gives a handle to run commands and install APKs.
+        mDevice = getDevice();
+        // Remove any previously installed versions of this APK.
+        mDevice.uninstallPackage(PACKAGE);
+        // Get the APK from the build.
+        File app = mBuild.getTestApp(APK);
+        // Install the APK on the device.
+        mDevice.installPackage(app, false);
+    }
+
+    @Override
+    protected void tearDown() throws Exception {
+        // Remove the package once complete.
+        mDevice.uninstallPackage(PACKAGE);
+        super.tearDown();
+    }
+
+    /**
+     * Tests the string was successfully logged to Logcat from the activity.
+     *
+     * @throws Exception
+     */
+    public void testLogcat() throws Exception {
+        // Clear logcat.
+        mDevice.executeAdbCommand("logcat", "-c");
+        // Start the APK and wait for it to complete.
+        mDevice.executeShellCommand(START_COMMAND);
+        // Dump logcat.
+        String logs = mDevice.executeAdbCommand("logcat", "-d", CLASS + ":I", "*:S");
+        // Search for string.
+        String testString = "";
+        Scanner in = new Scanner(logs);
+        while (in.hasNextLine()) {
+            String line = in.nextLine();
+            if(line.startsWith("I/"+CLASS)) {
+                testString = line.split(":")[1].trim();
+            }
+        }
+        // Assert the logged string matches the test string.
+        assertEquals("Incorrect test string", TEST_STRING, testString);
+    }
+}
diff --git a/hostsidetests/theme/Android.mk b/hostsidetests/theme/Android.mk
index 75ee891..8e283a3 100644
--- a/hostsidetests/theme/Android.mk
+++ b/hostsidetests/theme/Android.mk
@@ -16,8 +16,7 @@
 
 include $(CLEAR_VARS)
 
-LOCAL_SRC_FILES := $(call all-java-files-under, src) \
-                   ../../libs/util/src/android/cts/util/TimeoutReq.java
+LOCAL_SRC_FILES := $(call all-java-files-under, src)
 
 LOCAL_JAVA_RESOURCE_DIRS := assets/$(PLATFORM_SDK_VERSION)/
 
diff --git a/hostsidetests/theme/app/res/drawable-xxxhdpi/display_info.png b/hostsidetests/theme/app/res/drawable-xxxhdpi/display_info.png
new file mode 100644
index 0000000..095382c
--- /dev/null
+++ b/hostsidetests/theme/app/res/drawable-xxxhdpi/display_info.png
Binary files differ
diff --git a/hostsidetests/theme/app/src/android/theme/app/DisplayInfoActivity.java b/hostsidetests/theme/app/src/android/theme/app/DisplayInfoActivity.java
index fc6ae13..12504c1 100644
--- a/hostsidetests/theme/app/src/android/theme/app/DisplayInfoActivity.java
+++ b/hostsidetests/theme/app/src/android/theme/app/DisplayInfoActivity.java
@@ -62,9 +62,15 @@
             case DisplayMetrics.DENSITY_XHIGH:
                 return "xhdpi";
 
+            case DisplayMetrics.DENSITY_400:
+                return "400dpi";
+
             case DisplayMetrics.DENSITY_XXHIGH:
                 return "xxhdpi";
 
+            case DisplayMetrics.DENSITY_XXXHIGH:
+                return "xxxhdpi";
+
             case DisplayMetrics.DENSITY_TV:
                 return "tvdpi";
 
diff --git a/hostsidetests/theme/assets/19/400dpi.zip b/hostsidetests/theme/assets/19/400dpi.zip
new file mode 100644
index 0000000..2f9edd2
--- /dev/null
+++ b/hostsidetests/theme/assets/19/400dpi.zip
Binary files differ
diff --git a/hostsidetests/theme/assets/19/hdpi.zip b/hostsidetests/theme/assets/19/hdpi.zip
new file mode 100644
index 0000000..45f07f4
--- /dev/null
+++ b/hostsidetests/theme/assets/19/hdpi.zip
Binary files differ
diff --git a/hostsidetests/theme/assets/19/ldpi.zip b/hostsidetests/theme/assets/19/ldpi.zip
new file mode 100644
index 0000000..89d6544
--- /dev/null
+++ b/hostsidetests/theme/assets/19/ldpi.zip
Binary files differ
diff --git a/hostsidetests/theme/assets/19/mdpi.zip b/hostsidetests/theme/assets/19/mdpi.zip
new file mode 100644
index 0000000..6559c4a
--- /dev/null
+++ b/hostsidetests/theme/assets/19/mdpi.zip
Binary files differ
diff --git a/hostsidetests/theme/assets/19/tvdpi.zip b/hostsidetests/theme/assets/19/tvdpi.zip
new file mode 100644
index 0000000..6496a1f
--- /dev/null
+++ b/hostsidetests/theme/assets/19/tvdpi.zip
Binary files differ
diff --git a/hostsidetests/theme/assets/19/xhdpi.zip b/hostsidetests/theme/assets/19/xhdpi.zip
new file mode 100644
index 0000000..515dcf2
--- /dev/null
+++ b/hostsidetests/theme/assets/19/xhdpi.zip
Binary files differ
diff --git a/hostsidetests/theme/assets/19/xxhdpi.zip b/hostsidetests/theme/assets/19/xxhdpi.zip
new file mode 100644
index 0000000..c9c7a59
--- /dev/null
+++ b/hostsidetests/theme/assets/19/xxhdpi.zip
Binary files differ
diff --git a/hostsidetests/theme/src/android/theme/cts/ThemeHostTest.java b/hostsidetests/theme/src/android/theme/cts/ThemeHostTest.java
index c9688fb..fe24bcb 100644
--- a/hostsidetests/theme/src/android/theme/cts/ThemeHostTest.java
+++ b/hostsidetests/theme/src/android/theme/cts/ThemeHostTest.java
@@ -25,7 +25,7 @@
 import com.android.tradefed.testtype.DeviceTestCase;
 import com.android.tradefed.testtype.IBuildReceiver;
 
-import android.cts.util.TimeoutReq;
+import com.android.cts.util.TimeoutReq;
 
 import java.io.File;
 import java.io.FileOutputStream;
diff --git a/hostsidetests/usb/Android.mk b/hostsidetests/usb/Android.mk
new file mode 100644
index 0000000..488acbb
--- /dev/null
+++ b/hostsidetests/usb/Android.mk
@@ -0,0 +1,31 @@
+# Copyright (C) 2013 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)
+
+# Only compile source java files in this apk.
+LOCAL_SRC_FILES := $(call all-java-files-under, src)
+
+LOCAL_MODULE := CtsUsbTests
+
+LOCAL_JAVA_LIBRARIES := cts-tradefed tradefed-prebuilt ddmlib-prebuilt junit
+
+LOCAL_CTS_TEST_PACKAGE := android.usb
+
+include $(BUILD_CTS_HOST_JAVA_LIBRARY)
+
+# Build the test APKs using their own makefiles
+include $(call all-makefiles-under,$(LOCAL_PATH))
diff --git a/hostsidetests/usb/SerialTestApp/Android.mk b/hostsidetests/usb/SerialTestApp/Android.mk
new file mode 100644
index 0000000..d36b98e
--- /dev/null
+++ b/hostsidetests/usb/SerialTestApp/Android.mk
@@ -0,0 +1,33 @@
+# Copyright (C) 2013 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)
+
+# don't include this package in any target
+LOCAL_MODULE_TAGS := optional
+
+LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
+
+LOCAL_JAVA_LIBRARIES := android.test.runner
+
+LOCAL_STATIC_JAVA_LIBRARIES := ctstestrunner
+
+LOCAL_SRC_FILES := $(call all-java-files-under, src)
+
+LOCAL_PACKAGE_NAME := CtsUsbSerialTestApp
+
+LOCAL_SDK_VERSION := current
+
+include $(BUILD_CTS_PACKAGE)
diff --git a/hostsidetests/usb/SerialTestApp/AndroidManifest.xml b/hostsidetests/usb/SerialTestApp/AndroidManifest.xml
new file mode 100644
index 0000000..0667d60
--- /dev/null
+++ b/hostsidetests/usb/SerialTestApp/AndroidManifest.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2013 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.
+-->
+
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+        package="com.android.cts.usb.serialtest">
+
+    <application>
+        <uses-library android:name="android.test.runner" />
+    </application>
+    <instrumentation
+        android:targetPackage="com.android.cts.usb.serialtest"
+        android:name="android.test.InstrumentationCtsTestRunner" />
+</manifest>
diff --git a/hostsidetests/usb/SerialTestApp/src/com/android/cts/usb/serialtest/UsbSerialTest.java b/hostsidetests/usb/SerialTestApp/src/com/android/cts/usb/serialtest/UsbSerialTest.java
new file mode 100644
index 0000000..a2b0c72
--- /dev/null
+++ b/hostsidetests/usb/SerialTestApp/src/com/android/cts/usb/serialtest/UsbSerialTest.java
@@ -0,0 +1,33 @@
+/*
+ * Copyright (C) 2013 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.android.cts.usb.serialtest;
+
+import android.os.Build;
+import android.test.AndroidTestCase;
+import android.util.Log;
+
+
+/**
+ * Device test which reads Build.SERIAL and just print it.
+ */
+public class UsbSerialTest extends AndroidTestCase {
+    private static final String TAG = "CtsUsbSerialTest";
+
+    public void testSerial() throws Exception {
+        Log.e(TAG, Build.SERIAL);
+    }
+}
diff --git a/hostsidetests/usb/src/com/android/cts/usb/TestUsbTest.java b/hostsidetests/usb/src/com/android/cts/usb/TestUsbTest.java
new file mode 100644
index 0000000..f53d210
--- /dev/null
+++ b/hostsidetests/usb/src/com/android/cts/usb/TestUsbTest.java
@@ -0,0 +1,141 @@
+/*
+ * Copyright (C) 2013 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.android.cts.usb;
+
+import com.android.cts.tradefed.build.CtsBuildHelper;
+import com.android.ddmlib.IDevice;
+import com.android.ddmlib.Log;
+import com.android.ddmlib.testrunner.RemoteAndroidTestRunner;
+import com.android.ddmlib.testrunner.TestIdentifier;
+import com.android.tradefed.build.IBuildInfo;
+import com.android.tradefed.device.DeviceNotAvailableException;
+import com.android.tradefed.device.IFileEntry;
+import com.android.tradefed.device.ITestDevice;
+import com.android.tradefed.log.LogUtil.CLog;
+import com.android.tradefed.result.CollectingTestListener;
+import com.android.tradefed.result.InputStreamSource;
+import com.android.tradefed.result.TestRunResult;
+import com.android.tradefed.testtype.DeviceTestCase;
+import com.android.tradefed.testtype.IBuildReceiver;
+import com.android.tradefed.util.CommandResult;
+import com.android.tradefed.util.CommandStatus;
+import com.android.tradefed.util.FileUtil;
+import com.android.tradefed.util.RunUtil;
+import com.android.tradefed.util.StreamUtil;
+
+import java.io.BufferedInputStream;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.util.Map;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+/**
+ * Functional tests for usb connection
+ */
+public class TestUsbTest extends DeviceTestCase implements IBuildReceiver {
+
+    private static final String LOG_TAG = "TestUsbTest";
+    private static final String CTS_RUNNER = "android.test.InstrumentationCtsTestRunner";
+    private static final String PACKAGE_NAME = "com.android.cts.usb.serialtest";
+    private static final String APK_NAME="CtsUsbSerialTestApp.apk";
+    private ITestDevice mDevice;
+    private CtsBuildHelper mBuild;
+
+    @Override
+    public void setBuild(IBuildInfo buildInfo) {
+        mBuild = CtsBuildHelper.createBuildHelper(buildInfo);
+    }
+
+    @Override
+    protected void setUp() throws Exception {
+        super.setUp();
+        mDevice = getDevice();
+        mDevice.uninstallPackage(PACKAGE_NAME);
+        File app = mBuild.getTestApp(APK_NAME);
+        mDevice.installPackage(app, false);
+    }
+
+    @Override
+    protected void tearDown() throws Exception {
+        super.tearDown();
+        mDevice.uninstallPackage(PACKAGE_NAME);
+    }
+
+    /**
+     * Check if adb serial number, USB serial number, ro.serialno, and android.os.Build.SERIAL
+     * all matches and meets the format requirement [a-zA-Z0-9]{6,20}
+     */
+    public void testUsbSerial() throws Exception {
+        String adbSerial = mDevice.getSerialNumber().toLowerCase().trim();
+        if (adbSerial.startsWith("emulator-")) {
+            return;
+        }
+        if (mDevice.isAdbTcp()) { // adb over WiFi, no point checking it
+            return;
+        }
+
+        String roSerial = mDevice.executeShellCommand("getprop ro.serialno").toLowerCase().
+                trim();
+        assertEquals("adb serial != ro.serialno" , adbSerial, roSerial);
+
+        CommandResult result = RunUtil.getDefault().runTimedCmd(5000, "lsusb", "-v");
+        assertTrue("lsusb -v failed", result.getStatus() == CommandStatus.SUCCESS);
+        String lsusbOutput = result.getStdout();
+        Pattern pattern = Pattern.compile("^\\s+iSerial\\s+\\d+\\s+([a-zA-Z0-9]{6,20})",
+                Pattern.MULTILINE);
+        Matcher matcher = pattern.matcher(lsusbOutput);
+        String usbSerial = "";
+        while (matcher.find()) {
+            String currentSerial = matcher.group(1).toLowerCase();
+            if (adbSerial.compareTo(currentSerial) == 0) {
+                usbSerial = currentSerial;
+                break;
+            }
+        }
+        assertEquals("usb serial != adb serial" , usbSerial, adbSerial);
+
+        // now check Build.SERIAL
+        clearLogCat();
+        CollectingTestListener listener = new CollectingTestListener();
+        RemoteAndroidTestRunner testRunner = new RemoteAndroidTestRunner(PACKAGE_NAME, CTS_RUNNER,
+                mDevice.getIDevice());
+        mDevice.runInstrumentationTests(testRunner, listener);
+        TestRunResult runResult = listener.getCurrentRunResults();
+        if (runResult.isRunFailure()) {
+            fail(runResult.getRunFailureMessage());
+        }
+        String logs = mDevice.executeAdbCommand("logcat", "-d", "CtsUsbSerialTest:W", "*:S");
+        pattern = Pattern.compile("^.*CtsUsbSerialTest\\(.*\\):\\s+([a-zA-Z0-9]{6,20})",
+                Pattern.MULTILINE);
+        matcher = pattern.matcher(logs);
+        String buildSerial = "";
+        while (matcher.find()) {
+            String currentSerial = matcher.group(1).toLowerCase();
+            if (usbSerial.compareTo(currentSerial) == 0) {
+                buildSerial = currentSerial;
+                break;
+            }
+        }
+        assertEquals("usb serial != Build.SERIAL" , usbSerial, buildSerial);
+    }
+
+    private void clearLogCat() throws DeviceNotAvailableException {
+        mDevice.executeAdbCommand("logcat", "-c");
+    }
+}
diff --git a/libs/commonutil/src/com/android/cts/util/CtsException.java b/libs/commonutil/src/com/android/cts/util/CtsException.java
new file mode 100644
index 0000000..7e79590
--- /dev/null
+++ b/libs/commonutil/src/com/android/cts/util/CtsException.java
@@ -0,0 +1,28 @@
+/*
+ * Copyright (C) 2012 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.android.cts.util;
+
+/**
+ * Exception throw by CTS test to pass the result to host
+ * This should not be thrown by test app unless the result is complete.
+ */
+@SuppressWarnings("serial")
+public class CtsException extends Exception {
+    public CtsException(String message) {
+        super(message);
+    }
+}
diff --git a/libs/commonutil/src/com/android/cts/util/MeasureRun.java b/libs/commonutil/src/com/android/cts/util/MeasureRun.java
new file mode 100644
index 0000000..43b5acf
--- /dev/null
+++ b/libs/commonutil/src/com/android/cts/util/MeasureRun.java
@@ -0,0 +1,31 @@
+/*
+ * Copyright (C) 2012 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.android.cts.util;
+
+/**
+ * interface for measuring time for each run.
+ */
+public abstract class MeasureRun {
+    /**
+     *  called before each run. not included to time measurement.
+     */
+    public void prepare(int i) throws Exception {
+        // default empty implementation
+    };
+
+    abstract public void run(int i) throws Exception;
+}
diff --git a/libs/commonutil/src/com/android/cts/util/MeasureTime.java b/libs/commonutil/src/com/android/cts/util/MeasureTime.java
new file mode 100644
index 0000000..fd22ef2
--- /dev/null
+++ b/libs/commonutil/src/com/android/cts/util/MeasureTime.java
@@ -0,0 +1,40 @@
+/*
+ * Copyright (C) 2012 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.android.cts.util;
+
+
+public class MeasureTime {
+    /**
+     * measure time taken for each run for given count
+     * @param count
+     * @param run
+     * @return array of time taken in each run in msec.
+     * @throws Exception
+     */
+    public static double[] measure(int count, MeasureRun run) throws Exception {
+        double[] result = new double[count];
+
+        for (int i = 0; i < count; i++) {
+            run.prepare(i);
+            long start = System.currentTimeMillis();
+            run.run(i);
+            long end =  System.currentTimeMillis();
+            result[i] = end - start;
+        }
+        return result;
+    }
+}
diff --git a/libs/commonutil/src/com/android/cts/util/ReportLog.java b/libs/commonutil/src/com/android/cts/util/ReportLog.java
new file mode 100644
index 0000000..115cec6
--- /dev/null
+++ b/libs/commonutil/src/com/android/cts/util/ReportLog.java
@@ -0,0 +1,200 @@
+/*
+ * Copyright (C) 2012 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.android.cts.util;
+
+import java.util.LinkedList;
+import java.util.List;
+
+import junit.framework.Assert;
+
+
+/**
+ * Utility class to print performance measurement result back to host.
+ * For now, throws know exception with message.
+ *
+ * Format:
+ * Message = summary log SUMMARY_SEPARATOR [LOG_SEPARATOR log]*
+ * summary = message|target|unit|type|value, target can be " " if there is no target set.
+ * log for array = classMethodName:line_number|message|unit|type|space seSummaryparated values
+ */
+public class ReportLog {
+    private static final String LOG_SEPARATOR = "+++";
+    private static final String SUMMARY_SEPARATOR = "++++";
+    private static final String LOG_ELEM_SEPARATOR = "|";
+
+    private List<String> mMessages = new LinkedList<String> ();
+    private String mSummary = null;
+    protected static int mDepth = 3;
+
+    /**
+     * print array of values to output log
+     */
+    public void printArray(String message, double[] values, ResultType type,
+            ResultUnit unit) {
+        doPrintArray(message, values, type, unit);
+    }
+
+    /**
+     * Print a value to output log
+     */
+    public void printValue(String message, double value, ResultType type,
+            ResultUnit unit) {
+        double[] vals = { value };
+        doPrintArray(message, vals, type, unit);
+    }
+
+    private void doPrintArray(String message, double[] values, ResultType type,
+    ResultUnit unit) {
+        StringBuilder builder = new StringBuilder();
+        // note mDepth + 1 as this function will be called by printVaue or printArray
+        // and we need caller of printValue / printArray
+        builder.append(getClassMethodNames(mDepth + 1, true) + LOG_ELEM_SEPARATOR + message +
+                LOG_ELEM_SEPARATOR + type.getXmlString() + LOG_ELEM_SEPARATOR +
+                unit.getXmlString() + LOG_ELEM_SEPARATOR);
+        for (double v : values) {
+            builder.append(v);
+            builder.append(" ");
+        }
+        mMessages.add(builder.toString());
+        printLog(builder.toString());
+    }
+
+    /**
+     * record the result of benchmarking with performance target.
+     * Depending on the ResultType, the function can fail if the result
+     * does not meet the target. For example, for the type of HIGHER_BETTER,
+     * value of 1.0 with target of 2.0 will fail.
+     *
+     * @param message message to be printed in the final report
+     * @param target target performance for the benchmarking
+     * @param value measured value
+     * @param type
+     * @param unit
+     */
+    public void printSummaryWithTarget(String message, double target, double value,
+            ResultType type, ResultUnit unit) {
+        mSummary = message + LOG_ELEM_SEPARATOR + target + LOG_ELEM_SEPARATOR + type.getXmlString()
+                + LOG_ELEM_SEPARATOR + unit.getXmlString() + LOG_ELEM_SEPARATOR + value;
+        boolean resultOk = true;
+        if (type == ResultType.HIGHER_BETTER) {
+            resultOk = value >= target;
+        } else if (type == ResultType.LOWER_BETTER) {
+            resultOk = value <= target;
+        }
+        if (!resultOk) {
+            Assert.fail("Measured result " + value + " does not meet perf target " + target +
+                    " with type " + type.getXmlString());
+        }
+    }
+
+    /**
+     * For standard report summary without target value.
+     * Note that this function will not fail as there is no target.
+     * @param messsage
+     * @param value
+     * @param type type of the value
+     * @param unit unit of the data
+     */
+    public void printSummary(String message, double value, ResultType type,
+            ResultUnit unit) {
+        mSummary = message + LOG_ELEM_SEPARATOR + " " + LOG_ELEM_SEPARATOR + type.getXmlString() +
+                LOG_ELEM_SEPARATOR + unit.getXmlString() + LOG_ELEM_SEPARATOR + value;
+    }
+
+    protected String generateReport() {
+        if ((mSummary == null) && mMessages.isEmpty()) {
+            // just return empty string
+            return "";
+        }
+        StringBuilder builder = new StringBuilder();
+        builder.append(mSummary);
+        builder.append(SUMMARY_SEPARATOR);
+        for (String entry : mMessages) {
+            builder.append(entry);
+            builder.append(LOG_SEPARATOR);
+        }
+        // delete the last separator
+        if (builder.length() >= LOG_SEPARATOR.length()) {
+            builder.delete(builder.length() - LOG_SEPARATOR.length(), builder.length());
+        }
+        mSummary = null;
+        mMessages.clear();
+        return builder.toString();
+    }
+
+    /**
+     * calculate rate per sec for given change happened during given timeInMSec.
+     * timeInSec with 0 value will be changed to small value to prevent divide by zero.
+     * @param change total change of quality for the given duration timeInMSec.
+     * @param timeInMSec
+     * @return
+     */
+    public static double calcRatePerSec(double change, double timeInMSec) {
+        if (timeInMSec == 0) {
+            return change * 1000.0 / 0.001; // do not allow zero
+        } else {
+            return change * 1000.0 / timeInMSec;
+        }
+    }
+
+    /**
+     * array version of calcRatePerSecArray
+     */
+    public static double[] calcRatePerSecArray(double change, double[] timeInMSec) {
+        double[] result = new double[timeInMSec.length];
+        change *= 1000.0;
+        for (int i = 0; i < timeInMSec.length; i++) {
+            if (timeInMSec[i] == 0) {
+                result[i] = change / 0.001;
+            } else {
+                result[i] = change / timeInMSec[i];
+            }
+        }
+        return result;
+    }
+
+    /**
+     * copy array from src to dst with given offset in dst.
+     * dst should be big enough to hold src
+     */
+    public static void copyArray(double[] src, double[] dst, int dstOffset) {
+        for (int i = 0; i < src.length; i++) {
+            dst[dstOffset + i] = src[i];
+        }
+    }
+
+    /**
+     * get classname#methodname from call stack of the current thread
+     */
+    public static String getClassMethodNames() {
+        return getClassMethodNames(mDepth, false);
+    }
+
+    private static String getClassMethodNames(int depth, boolean addLineNumber) {
+        StackTraceElement[] elements = Thread.currentThread().getStackTrace();
+        String names = elements[depth].getClassName() + "#" + elements[depth].getMethodName() +
+                (addLineNumber ? ":" + elements[depth].getLineNumber() : "");
+        return names;
+    }
+
+    /**
+     * to be overridden by child to print message to be passed
+     */
+    protected void printLog(String msg) {
+
+    }
+}
diff --git a/libs/commonutil/src/com/android/cts/util/ResultType.java b/libs/commonutil/src/com/android/cts/util/ResultType.java
new file mode 100644
index 0000000..a5a388c
--- /dev/null
+++ b/libs/commonutil/src/com/android/cts/util/ResultType.java
@@ -0,0 +1,38 @@
+/*
+ * Copyright (C) 2012 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.android.cts.util;
+
+/**
+ * Enum for distinguishing performance results.
+ */
+public enum ResultType {
+    /** lower score shows better performance */
+    LOWER_BETTER,
+    /** higher score shows better performance */
+    HIGHER_BETTER,
+    /** This value is not directly correlated with performance. */
+    NEUTRAL,
+    /** presence of this type requires some attention although it may not be an error. */
+    WARNING;
+
+    /**
+     * Return string used in CTS XML report
+     */
+    public String getXmlString() {
+        return name().toLowerCase();
+    }
+}
diff --git a/libs/commonutil/src/com/android/cts/util/ResultUnit.java b/libs/commonutil/src/com/android/cts/util/ResultUnit.java
new file mode 100644
index 0000000..a216a7e
--- /dev/null
+++ b/libs/commonutil/src/com/android/cts/util/ResultUnit.java
@@ -0,0 +1,50 @@
+/*
+ * Copyright (C) 2012 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.android.cts.util;
+
+/**
+ * Enum for representing the unit of performance results.
+ *
+ */
+public enum ResultUnit {
+    /** for value with no unit */
+    NONE,
+    /** milli-seconds */
+    MS,
+    /** frames per second */
+    FPS,
+    /** operations per second */
+    OPS,
+    /** kilo-bytes-per-second, not bits-per-second */
+    KBPS,
+    /** mega-bytes-per-second */
+    MBPS,
+    /** amount of data, bytes */
+    BYTE,
+    /** tell how many times it did happen. */
+    COUNT,
+    /** unit for benchmarking with generic score. */
+    SCORE;
+
+    /**
+     * Return string used in CTS XML report
+     */
+    public String getXmlString() {
+        return name().toLowerCase();
+    }
+}
+
diff --git a/libs/commonutil/src/com/android/cts/util/Stat.java b/libs/commonutil/src/com/android/cts/util/Stat.java
new file mode 100644
index 0000000..ceafa4e
--- /dev/null
+++ b/libs/commonutil/src/com/android/cts/util/Stat.java
@@ -0,0 +1,157 @@
+/*
+ * Copyright (C) 2012 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.android.cts.util;
+
+import java.util.Arrays;
+
+/**
+ * Utilities for doing statistics
+ *
+ */
+public class Stat {
+
+    /**
+     * Collection of statistical propertirs like average, max, min, and stddev
+     */
+    public static class StatResult {
+        public double mAverage;
+        public double mMin;
+        public double mMax;
+        public double mStddev;
+        public int mDataCount;
+        public StatResult(double average, double min, double max, double stddev, int dataCount) {
+            mAverage = average;
+            mMin = min;
+            mMax = max;
+            mStddev = stddev;
+            mDataCount = dataCount;
+        }
+    }
+
+    /**
+     * Calculate statistics properties likes average, min, max, and stddev for the given array
+     */
+    public static StatResult getStat(double[] data) {
+        double average = data[0];
+        double min = data[0];
+        double max = data[0];
+        double eX2 = data[0] * data[0]; // will become E[X^2]
+        for (int i = 1; i < data.length; i++) {
+            average += data[i];
+            eX2 += data[i] * data[i];
+            if (data[i] > max) {
+                max = data[i];
+            }
+            if (data[i] < min) {
+                min = data[i];
+            }
+        }
+        average /= data.length;
+        eX2 /= data.length;
+        // stddev = sqrt(E[X^2] - (E[X])^2)
+        double stddev = Math.sqrt(eX2 - average * average);
+        return new StatResult(average, min, max, stddev, data.length);
+    }
+
+    /**
+     * Calculate statistics properties likes average, min, max, and stddev for the given array
+     * while rejecting outlier +/- median * rejectionThreshold.
+     * rejectionThreshold should be bigger than 0.0 and be lowerthan 1.0
+     */
+    public static StatResult getStatWithOutlierRejection(double[] data, double rejectionThreshold) {
+        double[] dataCopied = Arrays.copyOf(data, data.length);
+        Arrays.sort(dataCopied);
+        int medianIndex = dataCopied.length / 2;
+        double median;
+        if (dataCopied.length % 2 == 1) {
+            median = dataCopied[medianIndex];
+        } else {
+            median = (dataCopied[medianIndex - 1] + dataCopied[medianIndex]) / 2.0;
+        }
+        double thresholdMin = median * (1.0 - rejectionThreshold);
+        double thresholdMax = median * (1.0 + rejectionThreshold);
+
+        double average = 0.0;
+        double min = median;
+        double max = median;
+        double eX2 = 0.0; // will become E[X^2]
+        int validDataCounter = 0;
+        for (int i = 0; i < data.length; i++) {
+            if ((data[i] > thresholdMin) && (data[i] < thresholdMax)) {
+                validDataCounter++;
+                average += data[i];
+                eX2 += data[i] * data[i];
+                if (data[i] > max) {
+                    max = data[i];
+                }
+                if (data[i] < min) {
+                    min = data[i];
+                }
+            }
+            //TODO report rejected data
+        }
+        double stddev;
+        if (validDataCounter > 0) {
+            average /= validDataCounter;
+            eX2 /= validDataCounter;
+            // stddev = sqrt(E[X^2] - (E[X])^2)
+            stddev = Math.sqrt(eX2 - average * average);
+        } else { // both median is showing too much diff
+            average = median;
+            stddev = 0; // don't care
+        }
+
+        return new StatResult(average, min, max, stddev, validDataCounter);
+    }
+
+    /**
+     * return the average value of the passed array
+     */
+    public static double getAverage(double[] data) {
+        double sum = data[0];
+        for (int i = 1; i < data.length; i++) {
+            sum += data[i];
+        }
+        return sum / data.length;
+    }
+
+    /**
+     * return the minimum value of the passed array
+     */
+    public static double getMin(double[] data) {
+        double min = data[0];
+        for (int i = 1; i < data.length; i++) {
+            if (data[i] < min) {
+                min = data[i];
+            }
+        }
+        return min;
+    }
+
+    /**
+     * return the maximum value of the passed array
+     */
+    public static double getMax(double[] data) {
+        double max = data[0];
+        for (int i = 1; i < data.length; i++) {
+            if (data[i] > max) {
+                max = data[i];
+            }
+        }
+        return max;
+    }
+}
diff --git a/libs/commonutil/src/com/android/cts/util/TimeoutReq.java b/libs/commonutil/src/com/android/cts/util/TimeoutReq.java
new file mode 100644
index 0000000..144cd33
--- /dev/null
+++ b/libs/commonutil/src/com/android/cts/util/TimeoutReq.java
@@ -0,0 +1,29 @@
+/*
+ * Copyright (C) 2012 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.android.cts.util;
+
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+
+/**
+ * Annotation to specify necessary timeout for the test
+ * timeout is specified in minutes and 0 value means no timeout ( = infinite waiting).
+ */
+@Retention(RetentionPolicy.RUNTIME)
+public @interface TimeoutReq {
+    int  minutes() default -1;
+}
diff --git a/libs/deviceutil/Android.mk b/libs/deviceutil/Android.mk
new file mode 100644
index 0000000..1b7db18
--- /dev/null
+++ b/libs/deviceutil/Android.mk
@@ -0,0 +1,31 @@
+# Copyright (C) 2012 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_SRC_FILES := \
+    $(call all-java-files-under, src) \
+    $(call all-java-files-under, ../commonutil/src)
+
+LOCAL_JAVA_LIBRARIES := android.test.runner
+
+LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/Android.mk
+
+LOCAL_MODULE_TAGS := optional
+
+LOCAL_MODULE := ctsdeviceutil
+
+include $(BUILD_STATIC_JAVA_LIBRARY)
diff --git a/libs/util/src/android/app/cts/CTSResult.java b/libs/deviceutil/src/android/app/cts/CTSResult.java
similarity index 100%
rename from libs/util/src/android/app/cts/CTSResult.java
rename to libs/deviceutil/src/android/app/cts/CTSResult.java
diff --git a/libs/deviceutil/src/android/cts/util/CtsActivityInstrumentationTestCase2.java b/libs/deviceutil/src/android/cts/util/CtsActivityInstrumentationTestCase2.java
new file mode 100644
index 0000000..e039407
--- /dev/null
+++ b/libs/deviceutil/src/android/cts/util/CtsActivityInstrumentationTestCase2.java
@@ -0,0 +1,45 @@
+/*
+ * Copyright (C) 2012 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 android.cts.util;
+
+import com.android.cts.util.ReportLog;
+
+import android.app.Activity;
+import android.test.ActivityInstrumentationTestCase2;
+
+
+public class CtsActivityInstrumentationTestCase2<T extends Activity> extends
+        ActivityInstrumentationTestCase2<T> {
+
+    private DeviceReportLog mReportLog = new DeviceReportLog();
+
+    public CtsActivityInstrumentationTestCase2(Class<T> activityClass) {
+        super(activityClass);
+    }
+
+    public ReportLog getReportLog() {
+        return mReportLog;
+    }
+
+    @Override
+    protected void tearDown() throws Exception {
+        mReportLog.deliverReportToHost(getInstrumentation());
+        super.tearDown();
+    }
+
+}
diff --git a/libs/deviceutil/src/android/cts/util/CtsAndroidTestCase.java b/libs/deviceutil/src/android/cts/util/CtsAndroidTestCase.java
new file mode 100644
index 0000000..b1164bc
--- /dev/null
+++ b/libs/deviceutil/src/android/cts/util/CtsAndroidTestCase.java
@@ -0,0 +1,35 @@
+/*
+ * Copyright (C) 2012 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 android.cts.util;
+
+import android.content.Context;
+
+/**
+ *  This class emulates AndroidTestCase, but internally it is ActivityInstrumentationTestCase2
+ *  to access Instrumentation.
+ *  DummyActivity is not supposed to be accessed.
+ */
+public class CtsAndroidTestCase extends CtsActivityInstrumentationTestCase2<DummyActivity> {
+    public CtsAndroidTestCase() {
+        super(DummyActivity.class);
+    }
+
+    public Context getContext() {
+        return getInstrumentation().getContext();
+    }
+}
diff --git a/libs/deviceutil/src/android/cts/util/DeviceReportLog.java b/libs/deviceutil/src/android/cts/util/DeviceReportLog.java
new file mode 100644
index 0000000..b707fc8
--- /dev/null
+++ b/libs/deviceutil/src/android/cts/util/DeviceReportLog.java
@@ -0,0 +1,48 @@
+/*
+ * Copyright (C) 2012 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 android.cts.util;
+
+import com.android.cts.util.ReportLog;
+
+import android.app.Instrumentation;
+import android.os.Bundle;
+import android.util.Log;
+
+public class DeviceReportLog extends ReportLog {
+    private static final String TAG = "DeviceCtsReport";
+    private static final String CTS_RESULT = "CTS_RESULT";
+    private static final int INST_STATUS_IN_PROGRESS = 2;
+
+    DeviceReportLog() {
+        mDepth = 4;
+    }
+
+    @Override
+    protected void printLog(String msg) {
+        Log.i(TAG, msg);
+    }
+
+    public void deliverReportToHost(Instrumentation instrumentation) {
+        Log.i(TAG, "deliverReportToHost");
+        String report = generateReport();
+        if (!report.equals("")) {
+            Bundle output = new Bundle();
+            output.putString(CTS_RESULT, report);
+            instrumentation.sendStatus(INST_STATUS_IN_PROGRESS, output);
+        }
+    }
+}
diff --git a/libs/deviceutil/src/android/cts/util/DummyActivity.java b/libs/deviceutil/src/android/cts/util/DummyActivity.java
new file mode 100644
index 0000000..16e3507
--- /dev/null
+++ b/libs/deviceutil/src/android/cts/util/DummyActivity.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2013 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 android.cts.util;
+
+import android.app.Activity;
+
+public class DummyActivity extends Activity {
+
+}
diff --git a/libs/deviceutil/src/android/cts/util/EvaluateJsResultPollingCheck.java b/libs/deviceutil/src/android/cts/util/EvaluateJsResultPollingCheck.java
new file mode 100644
index 0000000..17d6a73
--- /dev/null
+++ b/libs/deviceutil/src/android/cts/util/EvaluateJsResultPollingCheck.java
@@ -0,0 +1,39 @@
+/*
+ * Copyright (C) 2013 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 android.cts.util;
+
+import android.webkit.ValueCallback;
+
+public class EvaluateJsResultPollingCheck  extends PollingCheck
+        implements ValueCallback<String> {
+    private String mActualResult;
+    private String mExpectedResult;
+
+    public EvaluateJsResultPollingCheck(String expected) {
+        mExpectedResult = expected;
+    }
+
+    @Override
+    public synchronized boolean check() {
+        return mExpectedResult.equals(mActualResult);
+    }
+
+    @Override
+    public synchronized void onReceiveValue(String result) {
+        mActualResult = result;
+    }
+}
\ No newline at end of file
diff --git a/libs/util/src/android/cts/util/PollingCheck.java b/libs/deviceutil/src/android/cts/util/PollingCheck.java
similarity index 100%
rename from libs/util/src/android/cts/util/PollingCheck.java
rename to libs/deviceutil/src/android/cts/util/PollingCheck.java
diff --git a/libs/deviceutil/src/android/cts/util/SystemUtil.java b/libs/deviceutil/src/android/cts/util/SystemUtil.java
new file mode 100644
index 0000000..e6222cb
--- /dev/null
+++ b/libs/deviceutil/src/android/cts/util/SystemUtil.java
@@ -0,0 +1,43 @@
+/*
+ * Copyright (C) 2012 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 android.cts.util;
+
+import android.app.ActivityManager;
+import android.app.ActivityManager.MemoryInfo;
+import android.content.Context;
+import android.os.StatFs;
+
+public class SystemUtil {
+    public static long getFreeDiskSize(Context context) {
+        StatFs statFs = new StatFs(context.getFilesDir().getAbsolutePath());
+        return (long)statFs.getAvailableBlocks() * statFs.getBlockSize();
+    }
+
+    public static long getFreeMemory(Context context) {
+        MemoryInfo info = new MemoryInfo();
+        ActivityManager activityManager = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
+        activityManager.getMemoryInfo(info);
+        return info.availMem;
+    }
+
+    public static long getTotalMemory(Context context) {
+        MemoryInfo info = new MemoryInfo();
+        ActivityManager activityManager = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
+        activityManager.getMemoryInfo(info);
+        return info.totalMem; // TODO totalMem N/A in ICS.
+    }
+}
diff --git a/libs/util/src/android/cts/util/WatchDog.java b/libs/deviceutil/src/android/cts/util/WatchDog.java
similarity index 100%
rename from libs/util/src/android/cts/util/WatchDog.java
rename to libs/deviceutil/src/android/cts/util/WatchDog.java
diff --git a/libs/util/src/android/provider/cts/FileCopyHelper.java b/libs/deviceutil/src/android/provider/cts/FileCopyHelper.java
similarity index 100%
rename from libs/util/src/android/provider/cts/FileCopyHelper.java
rename to libs/deviceutil/src/android/provider/cts/FileCopyHelper.java
diff --git a/libs/testserver/src/android/webkit/cts/CtsTestServer.java b/libs/testserver/src/android/webkit/cts/CtsTestServer.java
old mode 100755
new mode 100644
index 0d1db19..928a68e
--- a/libs/testserver/src/android/webkit/cts/CtsTestServer.java
+++ b/libs/testserver/src/android/webkit/cts/CtsTestServer.java
@@ -59,6 +59,7 @@
 import java.net.Socket;
 import java.net.URI;
 import java.net.URL;
+import java.net.URLEncoder;
 import java.net.URLConnection;
 import java.security.KeyManagementException;
 import java.security.KeyStore;
@@ -67,8 +68,10 @@
 import java.util.ArrayList;
 import java.util.Date;
 import java.util.Hashtable;
+import java.util.HashMap;
 import java.util.Iterator;
 import java.util.List;
+import java.util.Map;
 import java.util.Vector;
 import java.util.concurrent.Callable;
 import java.util.concurrent.ExecutorService;
@@ -104,6 +107,7 @@
     public static final String APPCACHE_PATH = "/appcache.html";
     public static final String APPCACHE_MANIFEST_PATH = "/appcache.manifest";
     public static final String REDIRECT_PREFIX = "/redirect";
+    public static final String QUERY_REDIRECT_PATH = "/alt_redirect";
     public static final String DELAY_PREFIX = "/delayed";
     public static final String BINARY_PREFIX = "/binary";
     public static final String COOKIE_PREFIX = "/cookie";
@@ -133,6 +137,7 @@
     private MimeTypeMap mMap;
     private Vector<String> mQueries;
     private ArrayList<HttpEntity> mRequestEntities;
+    private final Map<String, HttpRequest> mLastRequestMap = new HashMap<String, HttpRequest>();
     private long mDocValidity;
     private long mDocAge;
 
@@ -336,6 +341,24 @@
         return sb.toString();
     }
 
+    /**
+     * Return an absolute URL that indirectly refers to the given asset, without having
+     * the destination path be part of the redirecting path.
+     * When a client fetches this URL, the server will respond with a temporary redirect (302)
+     * referring to the absolute URL of the given asset.
+     * @param path The path of the asset. See {@link AssetManager#open(String)}
+     */
+    public String getQueryRedirectingAssetUrl(String path) {
+        StringBuilder sb = new StringBuilder(getBaseUri());
+        sb.append(QUERY_REDIRECT_PATH);
+        sb.append("?dest=");
+        try {
+            sb.append(URLEncoder.encode(getAssetUrl(path), "UTF-8"));
+        } catch (UnsupportedEncodingException e) {
+        }
+        return sb.toString();
+    }
+
     public String getBinaryUrl(String mimeType, int contentLength) {
         StringBuilder sb = new StringBuilder(getBaseUri());
         sb.append(BINARY_PREFIX);
@@ -437,6 +460,15 @@
     }
 
     /**
+     * Returns the last HttpRequest at this path. Can return null if it is never requested.
+     */
+    public synchronized HttpRequest getLastRequest(String requestPath) {
+        String relativeUrl = getRelativeUrl(requestPath);
+        if (!mLastRequestMap.containsKey(relativeUrl))
+            return null;
+        return mLastRequestMap.get(relativeUrl);
+    }
+    /**
      * Hook for adding stuffs for HTTP POST. Default implementation does nothing.
      * @return null to use the default response mechanism of sending the requested uri as it is.
      *         Otherwise, the whole response should be handled inside onPost.
@@ -446,6 +478,16 @@
     }
 
     /**
+     * Return the relative URL that refers to the given asset.
+     * @param path The path of the asset. See {@link AssetManager#open(String)}
+     */
+    private String getRelativeUrl(String path) {
+        StringBuilder sb = new StringBuilder(ASSET_PREFIX);
+        sb.append(path);
+        return sb.toString();
+    }
+
+    /**
      * Generate a response to the given request.
      * @throws InterruptedException
      * @throws IOException
@@ -458,6 +500,7 @@
 
         synchronized (this) {
             mQueries.add(uriString);
+            mLastRequestMap.put(uriString, request);
             if (request instanceof HttpEntityEnclosingRequest) {
                 mRequestEntities.add(((HttpEntityEnclosingRequest)request).getEntity());
             }
@@ -562,6 +605,13 @@
             String location = getBaseUri() + path.substring(REDIRECT_PREFIX.length());
             Log.i(TAG, "Redirecting to: " + location);
             response.addHeader("Location", location);
+        } else if (path.equals(QUERY_REDIRECT_PATH)) {
+            String location = Uri.parse(uriString).getQueryParameter("dest");
+            if (location != null) {
+                Log.i(TAG, "Redirecting to: " + location);
+                response = createResponse(HttpStatus.SC_MOVED_TEMPORARILY);
+                response.addHeader("Location", location);
+            }
         } else if (path.startsWith(COOKIE_PREFIX)) {
             /*
              * Return a page with a title containing a list of all incoming cookies,
diff --git a/libs/util/Android.mk b/libs/util/Android.mk
deleted file mode 100644
index b3e128c..0000000
--- a/libs/util/Android.mk
+++ /dev/null
@@ -1,25 +0,0 @@
-# Copyright (C) 2012 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_SRC_FILES := $(call all-java-files-under, src)
-
-LOCAL_MODULE_TAGS := optional
-
-LOCAL_MODULE := ctsutil
-
-include $(BUILD_STATIC_JAVA_LIBRARY)
diff --git a/libs/util/src/android/cts/util/TimeoutReq.java b/libs/util/src/android/cts/util/TimeoutReq.java
deleted file mode 100644
index 943c3ce..0000000
--- a/libs/util/src/android/cts/util/TimeoutReq.java
+++ /dev/null
@@ -1,29 +0,0 @@
-/*
- * Copyright (C) 2012 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 android.cts.util;
-
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-
-/**
- * Annotation to specify necessary timeout for the test
- * timeout is specified in minutes and 0 value means no timeout ( = infinite waiting).
- */
-@Retention(RetentionPolicy.RUNTIME)
-public @interface TimeoutReq {
-    int  minutes() default -1;
-}
diff --git a/suite/audio_quality/Android.mk b/suite/audio_quality/Android.mk
index 21d8fb8..65abd23 100644
--- a/suite/audio_quality/Android.mk
+++ b/suite/audio_quality/Android.mk
@@ -22,18 +22,24 @@
 CTS_AUDIO_INSTALL_DIR := $(HOST_OUT)/cts-audio-quality/android-cts-audio-quality
 CTS_AUDIO_QUALITY_ZIP := $(HOST_OUT)/cts-audio-quality/android-cts-audio-quality.zip
 
-$(CTS_AUDIO_QUALITY_ZIP): cts_audio_quality_test cts_audio_quality \
-  CtsAudioClient $(CTS_AUDIO_TOP)/test_description
-	$(hide) mkdir -p $(CTS_AUDIO_INSTALL_DIR)
+cts_audio_quality_client_apk := $(TARGET_OUT_DATA_APPS)/CtsAudioClient.apk
+cts_audio_quality_host_bins := $(HOST_OUT)/bin/cts_audio_quality_test $(HOST_OUT)/bin/cts_audio_quality
+$(CTS_AUDIO_QUALITY_ZIP): PRIVATE_CLIENT_APK := $(cts_audio_quality_client_apk)
+$(CTS_AUDIO_QUALITY_ZIP): PRIVATE_HOST_BINS := $(cts_audio_quality_host_bins)
+$(CTS_AUDIO_QUALITY_ZIP): PRIVATE_TEST_DESC := $(CTS_AUDIO_TOP)/test_description
+$(CTS_AUDIO_QUALITY_ZIP): $(cts_audio_quality_client_apk) $(cts_audio_quality_host_bins) \
+    $(CTS_AUDIO_TOP)/test_description | $(ACP)
 	$(hide) mkdir -p $(CTS_AUDIO_INSTALL_DIR)/client
-	$(hide) $(ACP) -fp $(PRODUCT_OUT)/data/app/CtsAudioClient.apk \
+	$(hide) $(ACP) -fp $(PRIVATE_CLIENT_APK) \
         $(CTS_AUDIO_INSTALL_DIR)/client
-	$(hide) $(ACP) -fp $(HOST_OUT)/bin/cts_audio_quality_test $(CTS_AUDIO_INSTALL_DIR)
-	$(hide) $(ACP) -fp $(HOST_OUT)/bin/cts_audio_quality $(CTS_AUDIO_INSTALL_DIR)
-	$(hide) $(ACP) -fr $(CTS_AUDIO_TOP)/test_description $(CTS_AUDIO_INSTALL_DIR)
+	$(hide) $(ACP) -fp $(PRIVATE_HOST_BINS) $(CTS_AUDIO_INSTALL_DIR)
+	$(hide) $(ACP) -fr $(PRIVATE_TEST_DESC) $(CTS_AUDIO_INSTALL_DIR)
 	$(hide) echo "Package cts_audio: $@"
-	$(hide) cd $(HOST_OUT)/cts-audio-quality && \
-        zip -rq android-cts-audio-quality.zip android-cts-audio-quality -x android-cts-audio-quality/reports/\*
+	$(hide) cd $(dir $@) && \
+        zip -rq $(notdir $@) android-cts-audio-quality -x android-cts-audio-quality/reports/\*
+
+cts_audio_quality_client_apk :=
+cts_audio_quality_host_bins :=
 
 # target to build only this package
 .PHONY: cts_audio_quality_package
diff --git a/suite/audio_quality/client/Android.mk b/suite/audio_quality/client/Android.mk
index 090c758..6d60541 100644
--- a/suite/audio_quality/client/Android.mk
+++ b/suite/audio_quality/client/Android.mk
@@ -30,4 +30,6 @@
 # intentional to keep compatibility with ICS
 LOCAL_SDK_VERSION := 15
 
+LOCAL_DEX_PREOPT := false
+
 include $(BUILD_PACKAGE)
diff --git a/suite/cts/Android.mk b/suite/cts/Android.mk
new file mode 100644
index 0000000..c141484
--- /dev/null
+++ b/suite/cts/Android.mk
@@ -0,0 +1,17 @@
+#
+# Copyright (C) 2012 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.
+#
+
+include $(call all-subdir-makefiles)
diff --git a/suite/cts/deviceTests/Android.mk b/suite/cts/deviceTests/Android.mk
new file mode 100644
index 0000000..c141484
--- /dev/null
+++ b/suite/cts/deviceTests/Android.mk
@@ -0,0 +1,17 @@
+#
+# Copyright (C) 2012 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.
+#
+
+include $(call all-subdir-makefiles)
diff --git a/suite/cts/deviceTests/browserbench/Android.mk b/suite/cts/deviceTests/browserbench/Android.mk
new file mode 100644
index 0000000..6b241a9
--- /dev/null
+++ b/suite/cts/deviceTests/browserbench/Android.mk
@@ -0,0 +1,33 @@
+# Copyright (C) 2012 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)
+
+# don't include this package in any target
+LOCAL_MODULE_TAGS := optional
+
+LOCAL_JAVA_LIBRARIES := android.test.runner
+
+LOCAL_STATIC_JAVA_LIBRARIES := ctsdeviceutil ctstestrunner ctstestserver
+
+LOCAL_SRC_FILES := $(call all-java-files-under, src)
+
+LOCAL_PACKAGE_NAME := CtsDeviceBrowserBench
+
+LOCAL_SDK_VERSION := 16
+
+include $(BUILD_CTS_PACKAGE)
+
+include $(call all-makefiles-under,$(LOCAL_PATH))
diff --git a/suite/cts/deviceTests/browserbench/AndroidManifest.xml b/suite/cts/deviceTests/browserbench/AndroidManifest.xml
new file mode 100644
index 0000000..16626ad
--- /dev/null
+++ b/suite/cts/deviceTests/browserbench/AndroidManifest.xml
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2012 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.
+-->
+
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+        package="com.android.cts.browser">
+
+    <uses-permission android:name="android.permission.DISABLE_KEYGUARD" />
+    <uses-permission android:name="android.permission.INTERNET" />
+    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
+
+    <application>
+        <uses-library android:name="android.test.runner" />
+    </application>
+    <instrumentation android:name="android.test.InstrumentationCtsTestRunner"
+            android:targetPackage="com.android.cts.browser" />
+</manifest>
diff --git a/suite/cts/deviceTests/browserbench/assets/octane/base.js b/suite/cts/deviceTests/browserbench/assets/octane/base.js
new file mode 100644
index 0000000..8801f2d
--- /dev/null
+++ b/suite/cts/deviceTests/browserbench/assets/octane/base.js
@@ -0,0 +1,289 @@
+// Copyright 2012 the V8 project authors. All rights reserved.
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+//       notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+//       copyright notice, this list of conditions and the following
+//       disclaimer in the documentation and/or other materials provided
+//       with the distribution.
+//     * Neither the name of Google Inc. nor the names of its
+//       contributors may be used to endorse or promote products derived
+//       from this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+
+// Simple framework for running the benchmark suites and
+// computing a score based on the timing measurements.
+
+
+// A benchmark has a name (string) and a function that will be run to
+// do the performance measurement. The optional setup and tearDown
+// arguments are functions that will be invoked before and after
+// running the benchmark, but the running time of these functions will
+// not be accounted for in the benchmark score.
+function Benchmark(name, run, setup, tearDown, minIterations) {
+  this.name = name;
+  this.run = run;
+  this.Setup = setup ? setup : function() { };
+  this.TearDown = tearDown ? tearDown : function() { };
+  this.minIterations = minIterations ? minIterations : 32;
+}
+
+
+// Benchmark results hold the benchmark and the measured time used to
+// run the benchmark. The benchmark score is computed later once a
+// full benchmark suite has run to completion.
+function BenchmarkResult(benchmark, time) {
+  this.benchmark = benchmark;
+  this.time = time;
+}
+
+
+// Automatically convert results to numbers. Used by the geometric
+// mean computation.
+BenchmarkResult.prototype.valueOf = function() {
+  return this.time;
+}
+
+
+// Suites of benchmarks consist of a name and the set of benchmarks in
+// addition to the reference timing that the final score will be based
+// on. This way, all scores are relative to a reference run and higher
+// scores implies better performance.
+function BenchmarkSuite(name, reference, benchmarks) {
+  this.name = name;
+  this.reference = reference;
+  this.benchmarks = benchmarks;
+  BenchmarkSuite.suites.push(this);
+}
+
+
+// Keep track of all declared benchmark suites.
+BenchmarkSuite.suites = [];
+
+
+// Scores are not comparable across versions. Bump the version if
+// you're making changes that will affect that scores, e.g. if you add
+// a new benchmark or change an existing one.
+BenchmarkSuite.version = '8';
+
+// Override the alert function to throw an exception instead.
+alert = function(s) {
+  throw "Alert called with argument: " + s;
+};
+
+// To make the benchmark results predictable, we replace Math.random
+// with a 100% deterministic alternative.
+Math.random = (function() {
+  var seed = 49734321;
+  return function() {
+    // Robert Jenkins' 32 bit integer hash function.
+    seed = ((seed + 0x7ed55d16) + (seed << 12))  & 0xffffffff;
+    seed = ((seed ^ 0xc761c23c) ^ (seed >>> 19)) & 0xffffffff;
+    seed = ((seed + 0x165667b1) + (seed << 5))   & 0xffffffff;
+    seed = ((seed + 0xd3a2646c) ^ (seed << 9))   & 0xffffffff;
+    seed = ((seed + 0xfd7046c5) + (seed << 3))   & 0xffffffff;
+    seed = ((seed ^ 0xb55a4f09) ^ (seed >>> 16)) & 0xffffffff;
+    return (seed & 0xfffffff) / 0x10000000;
+  };
+})();
+
+
+// Runs all registered benchmark suites and optionally yields between
+// each individual benchmark to avoid running for too long in the
+// context of browsers. Once done, the final score is reported to the
+// runner.
+BenchmarkSuite.RunSuites = function(runner) {
+  var continuation = null;
+  var suites = BenchmarkSuite.suites;
+  var length = suites.length;
+  BenchmarkSuite.scores = [];
+  var index = 0;
+  function RunStep() {
+    while (continuation || index < length) {
+      if (continuation) {
+        continuation = continuation();
+      } else {
+        var suite = suites[index++];
+        if (runner.NotifyStart) runner.NotifyStart(suite.name);
+        continuation = suite.RunStep(runner);
+      }
+      if (continuation && typeof window != 'undefined' && window.setTimeout) {
+        window.setTimeout(RunStep, 25);
+        return;
+      }
+    }
+    if (runner.NotifyScore) {
+      var score = BenchmarkSuite.GeometricMean(BenchmarkSuite.scores);
+      var formatted = BenchmarkSuite.FormatScore(100 * score);
+      runner.NotifyScore(formatted);
+    }
+  }
+  RunStep();
+}
+
+
+// Counts the total number of registered benchmarks. Useful for
+// showing progress as a percentage.
+BenchmarkSuite.CountBenchmarks = function() {
+  var result = 0;
+  var suites = BenchmarkSuite.suites;
+  for (var i = 0; i < suites.length; i++) {
+    result += suites[i].benchmarks.length;
+  }
+  return result;
+}
+
+
+// Computes the geometric mean of a set of numbers.
+BenchmarkSuite.GeometricMean = function(numbers) {
+  var log = 0;
+  for (var i = 0; i < numbers.length; i++) {
+    log += Math.log(numbers[i]);
+  }
+  return Math.pow(Math.E, log / numbers.length);
+}
+
+
+// Converts a score value to a string with at least three significant
+// digits.
+BenchmarkSuite.FormatScore = function(value) {
+  if (value > 100) {
+    return value.toFixed(0);
+  } else {
+    return value.toPrecision(3);
+  }
+}
+
+// Notifies the runner that we're done running a single benchmark in
+// the benchmark suite. This can be useful to report progress.
+BenchmarkSuite.prototype.NotifyStep = function(result) {
+  this.results.push(result);
+  if (this.runner.NotifyStep) this.runner.NotifyStep(result.benchmark.name);
+}
+
+
+// Notifies the runner that we're done with running a suite and that
+// we have a result which can be reported to the user if needed.
+BenchmarkSuite.prototype.NotifyResult = function() {
+  var mean = BenchmarkSuite.GeometricMean(this.results);
+  var score = this.reference / mean;
+  BenchmarkSuite.scores.push(score);
+  if (this.runner.NotifyResult) {
+    var formatted = BenchmarkSuite.FormatScore(100 * score);
+    this.runner.NotifyResult(this.name, formatted);
+  }
+}
+
+
+// Notifies the runner that running a benchmark resulted in an error.
+BenchmarkSuite.prototype.NotifyError = function(error) {
+  if (this.runner.NotifyError) {
+    this.runner.NotifyError(this.name, error);
+  }
+  if (this.runner.NotifyStep) {
+    this.runner.NotifyStep(this.name);
+  }
+}
+
+
+// Runs a single benchmark for at least a second and computes the
+// average time it takes to run a single iteration.
+BenchmarkSuite.prototype.RunSingleBenchmark = function(benchmark, data) {
+  function Measure(data) {
+    var elapsed = 0;
+    var start = new Date();
+    for (var n = 0; elapsed < 1000; n++) {
+      benchmark.run();
+      elapsed = new Date() - start;
+    }
+    if (data != null) {
+      data.runs += n;
+      data.elapsed += elapsed;
+    }
+  }
+
+  if (data == null) {
+    // Measure the benchmark once for warm up and throw the result
+    // away. Return a fresh data object.
+    Measure(null);
+    return { runs: 0, elapsed: 0 };
+  } else {
+    Measure(data);
+    // If we've run too few iterations, we continue for another second.
+    if (data.runs < benchmark.minIterations) return data;
+    var usec = (data.elapsed * 1000) / data.runs;
+    this.NotifyStep(new BenchmarkResult(benchmark, usec));
+    return null;
+  }
+}
+
+
+// This function starts running a suite, but stops between each
+// individual benchmark in the suite and returns a continuation
+// function which can be invoked to run the next benchmark. Once the
+// last benchmark has been executed, null is returned.
+BenchmarkSuite.prototype.RunStep = function(runner) {
+  this.results = [];
+  this.runner = runner;
+  var length = this.benchmarks.length;
+  var index = 0;
+  var suite = this;
+  var data;
+
+  // Run the setup, the actual benchmark, and the tear down in three
+  // separate steps to allow the framework to yield between any of the
+  // steps.
+
+  function RunNextSetup() {
+    if (index < length) {
+      try {
+        suite.benchmarks[index].Setup();
+      } catch (e) {
+        suite.NotifyError(e);
+        return null;
+      }
+      return RunNextBenchmark;
+    }
+    suite.NotifyResult();
+    return null;
+  }
+
+  function RunNextBenchmark() {
+    try {
+      data = suite.RunSingleBenchmark(suite.benchmarks[index], data);
+    } catch (e) {
+      suite.NotifyError(e);
+      return null;
+    }
+    // If data is null, we're done with this benchmark.
+    return (data == null) ? RunNextTearDown : RunNextBenchmark();
+  }
+
+  function RunNextTearDown() {
+    try {
+      suite.benchmarks[index++].TearDown();
+    } catch (e) {
+      suite.NotifyError(e);
+      return null;
+    }
+    return RunNextSetup;
+  }
+
+  // Start out running the setup.
+  return RunNextSetup();
+}
diff --git a/suite/cts/deviceTests/browserbench/assets/octane/box2d.js b/suite/cts/deviceTests/browserbench/assets/octane/box2d.js
new file mode 100644
index 0000000..d6352e9
--- /dev/null
+++ b/suite/cts/deviceTests/browserbench/assets/octane/box2d.js
@@ -0,0 +1,562 @@
+// Portions copyright 2012 Google, Inc
+
+/*
+* Copyright (c) 2006-2007 Erin Catto http://www.gphysics.com
+*
+* This software is provided 'as-is', without any express or implied
+* warranty.  In no event will the authors be held liable for any damages
+* arising from the use of this software.
+* Permission is granted to anyone to use this software for any purpose,
+* including commercial applications, and to alter it and redistribute it
+* freely, subject to the following restrictions:
+* 1. The origin of this software must not be misrepresented; you must not
+* claim that you wrote the original software. If you use this software
+* in a product, an acknowledgment in the product documentation would be
+* appreciated but is not required.
+* 2. Altered source versions must be plainly marked as such, and must not be
+* misrepresented as being the original software.
+* 3. This notice may not be removed or altered from any source distribution.
+*/
+
+var Box2D={};
+(function(F,G){function K(){}if(!(Object.defineProperty instanceof Function)&&Object.prototype.__defineGetter__ instanceof Function&&Object.prototype.__defineSetter__ instanceof Function)Object.defineProperty=function(y,w,A){A.get instanceof Function&&y.__defineGetter__(w,A.get);A.set instanceof Function&&y.__defineSetter__(w,A.set)};F.inherit=function(y,w){K.prototype=w.prototype;y.prototype=new K;y.prototype.constructor=y};F.generateCallback=function(y,w){return function(){w.apply(y,arguments)}};
+F.NVector=function(y){if(y===G)y=0;for(var w=Array(y||0),A=0;A<y;++A)w[A]=0;return w};F.is=function(y,w){if(y===null)return false;if(w instanceof Function&&y instanceof w)return true;if(y.constructor.__implements!=G&&y.constructor.__implements[w])return true;return false};F.parseUInt=function(y){return Math.abs(parseInt(y))}})(Box2D);var Vector=Array,Vector_a2j_Number=Box2D.NVector;if(typeof Box2D==="undefined")Box2D={};if(typeof Box2D.Collision==="undefined")Box2D.Collision={};
+if(typeof Box2D.Collision.Shapes==="undefined")Box2D.Collision.Shapes={};if(typeof Box2D.Common==="undefined")Box2D.Common={};if(typeof Box2D.Common.Math==="undefined")Box2D.Common.Math={};if(typeof Box2D.Dynamics==="undefined")Box2D.Dynamics={};if(typeof Box2D.Dynamics.Contacts==="undefined")Box2D.Dynamics.Contacts={};if(typeof Box2D.Dynamics.Controllers==="undefined")Box2D.Dynamics.Controllers={};if(typeof Box2D.Dynamics.Joints==="undefined")Box2D.Dynamics.Joints={};
+(function(){function F(){F.b2AABB.apply(this,arguments)}function G(){G.b2Bound.apply(this,arguments)}function K(){K.b2BoundValues.apply(this,arguments);this.constructor===K&&this.b2BoundValues.apply(this,arguments)}function y(){y.b2Collision.apply(this,arguments)}function w(){w.b2ContactID.apply(this,arguments);this.constructor===w&&this.b2ContactID.apply(this,arguments)}function A(){A.b2ContactPoint.apply(this,arguments)}function U(){U.b2Distance.apply(this,arguments)}function p(){p.b2DistanceInput.apply(this,
+arguments)}function B(){B.b2DistanceOutput.apply(this,arguments)}function Q(){Q.b2DistanceProxy.apply(this,arguments)}function V(){V.b2DynamicTree.apply(this,arguments);this.constructor===V&&this.b2DynamicTree.apply(this,arguments)}function M(){M.b2DynamicTreeBroadPhase.apply(this,arguments)}function L(){L.b2DynamicTreeNode.apply(this,arguments)}function I(){I.b2DynamicTreePair.apply(this,arguments)}function W(){W.b2Manifold.apply(this,arguments);this.constructor===W&&this.b2Manifold.apply(this,arguments)}
+function Y(){Y.b2ManifoldPoint.apply(this,arguments);this.constructor===Y&&this.b2ManifoldPoint.apply(this,arguments)}function k(){k.b2Point.apply(this,arguments)}function z(){z.b2RayCastInput.apply(this,arguments);this.constructor===z&&this.b2RayCastInput.apply(this,arguments)}function u(){u.b2RayCastOutput.apply(this,arguments)}function D(){D.b2Segment.apply(this,arguments)}function H(){H.b2SeparationFunction.apply(this,arguments)}function O(){O.b2Simplex.apply(this,arguments);this.constructor===
+O&&this.b2Simplex.apply(this,arguments)}function E(){E.b2SimplexCache.apply(this,arguments)}function R(){R.b2SimplexVertex.apply(this,arguments)}function N(){N.b2TimeOfImpact.apply(this,arguments)}function S(){S.b2TOIInput.apply(this,arguments)}function aa(){aa.b2WorldManifold.apply(this,arguments);this.constructor===aa&&this.b2WorldManifold.apply(this,arguments)}function Z(){Z.ClipVertex.apply(this,arguments)}function d(){d.Features.apply(this,arguments)}function h(){h.b2CircleShape.apply(this,arguments);
+this.constructor===h&&this.b2CircleShape.apply(this,arguments)}function l(){l.b2EdgeChainDef.apply(this,arguments);this.constructor===l&&this.b2EdgeChainDef.apply(this,arguments)}function j(){j.b2EdgeShape.apply(this,arguments);this.constructor===j&&this.b2EdgeShape.apply(this,arguments)}function o(){o.b2MassData.apply(this,arguments)}function q(){q.b2PolygonShape.apply(this,arguments);this.constructor===q&&this.b2PolygonShape.apply(this,arguments)}function n(){n.b2Shape.apply(this,arguments);this.constructor===
+n&&this.b2Shape.apply(this,arguments)}function a(){a.b2Color.apply(this,arguments);this.constructor===a&&this.b2Color.apply(this,arguments)}function c(){c.b2Settings.apply(this,arguments)}function g(){g.b2Mat22.apply(this,arguments);this.constructor===g&&this.b2Mat22.apply(this,arguments)}function b(){b.b2Mat33.apply(this,arguments);this.constructor===b&&this.b2Mat33.apply(this,arguments)}function e(){e.b2Math.apply(this,arguments)}function f(){f.b2Sweep.apply(this,arguments)}function m(){m.b2Transform.apply(this,
+arguments);this.constructor===m&&this.b2Transform.apply(this,arguments)}function r(){r.b2Vec2.apply(this,arguments);this.constructor===r&&this.b2Vec2.apply(this,arguments)}function s(){s.b2Vec3.apply(this,arguments);this.constructor===s&&this.b2Vec3.apply(this,arguments)}function v(){v.b2Body.apply(this,arguments);this.constructor===v&&this.b2Body.apply(this,arguments)}function t(){t.b2BodyDef.apply(this,arguments);this.constructor===t&&this.b2BodyDef.apply(this,arguments)}function x(){x.b2ContactFilter.apply(this,
+arguments)}function C(){C.b2ContactImpulse.apply(this,arguments)}function J(){J.b2ContactListener.apply(this,arguments)}function T(){T.b2ContactManager.apply(this,arguments);this.constructor===T&&this.b2ContactManager.apply(this,arguments)}function P(){P.b2DebugDraw.apply(this,arguments);this.constructor===P&&this.b2DebugDraw.apply(this,arguments)}function X(){X.b2DestructionListener.apply(this,arguments)}function $(){$.b2FilterData.apply(this,arguments)}function ba(){ba.b2Fixture.apply(this,arguments);
+this.constructor===ba&&this.b2Fixture.apply(this,arguments)}function ca(){ca.b2FixtureDef.apply(this,arguments);this.constructor===ca&&this.b2FixtureDef.apply(this,arguments)}function da(){da.b2Island.apply(this,arguments);this.constructor===da&&this.b2Island.apply(this,arguments)}function Fa(){Fa.b2TimeStep.apply(this,arguments)}function ea(){ea.b2World.apply(this,arguments);this.constructor===ea&&this.b2World.apply(this,arguments)}function Ga(){Ga.b2CircleContact.apply(this,arguments)}function fa(){fa.b2Contact.apply(this,
+arguments);this.constructor===fa&&this.b2Contact.apply(this,arguments)}function ga(){ga.b2ContactConstraint.apply(this,arguments);this.constructor===ga&&this.b2ContactConstraint.apply(this,arguments)}function Ha(){Ha.b2ContactConstraintPoint.apply(this,arguments)}function Ia(){Ia.b2ContactEdge.apply(this,arguments)}function ha(){ha.b2ContactFactory.apply(this,arguments);this.constructor===ha&&this.b2ContactFactory.apply(this,arguments)}function Ja(){Ja.b2ContactRegister.apply(this,arguments)}function Ka(){Ka.b2ContactResult.apply(this,
+arguments)}function ia(){ia.b2ContactSolver.apply(this,arguments);this.constructor===ia&&this.b2ContactSolver.apply(this,arguments)}function La(){La.b2EdgeAndCircleContact.apply(this,arguments)}function ja(){ja.b2NullContact.apply(this,arguments);this.constructor===ja&&this.b2NullContact.apply(this,arguments)}function Ma(){Ma.b2PolyAndCircleContact.apply(this,arguments)}function Na(){Na.b2PolyAndEdgeContact.apply(this,arguments)}function Oa(){Oa.b2PolygonContact.apply(this,arguments)}function ka(){ka.b2PositionSolverManifold.apply(this,
+arguments);this.constructor===ka&&this.b2PositionSolverManifold.apply(this,arguments)}function Pa(){Pa.b2BuoyancyController.apply(this,arguments)}function Qa(){Qa.b2ConstantAccelController.apply(this,arguments)}function Ra(){Ra.b2ConstantForceController.apply(this,arguments)}function Sa(){Sa.b2Controller.apply(this,arguments)}function Ta(){Ta.b2ControllerEdge.apply(this,arguments)}function Ua(){Ua.b2GravityController.apply(this,arguments)}function Va(){Va.b2TensorDampingController.apply(this,arguments)}
+function la(){la.b2DistanceJoint.apply(this,arguments);this.constructor===la&&this.b2DistanceJoint.apply(this,arguments)}function ma(){ma.b2DistanceJointDef.apply(this,arguments);this.constructor===ma&&this.b2DistanceJointDef.apply(this,arguments)}function na(){na.b2FrictionJoint.apply(this,arguments);this.constructor===na&&this.b2FrictionJoint.apply(this,arguments)}function oa(){oa.b2FrictionJointDef.apply(this,arguments);this.constructor===oa&&this.b2FrictionJointDef.apply(this,arguments)}function pa(){pa.b2GearJoint.apply(this,
+arguments);this.constructor===pa&&this.b2GearJoint.apply(this,arguments)}function qa(){qa.b2GearJointDef.apply(this,arguments);this.constructor===qa&&this.b2GearJointDef.apply(this,arguments)}function Wa(){Wa.b2Jacobian.apply(this,arguments)}function ra(){ra.b2Joint.apply(this,arguments);this.constructor===ra&&this.b2Joint.apply(this,arguments)}function sa(){sa.b2JointDef.apply(this,arguments);this.constructor===sa&&this.b2JointDef.apply(this,arguments)}function Xa(){Xa.b2JointEdge.apply(this,arguments)}
+function ta(){ta.b2LineJoint.apply(this,arguments);this.constructor===ta&&this.b2LineJoint.apply(this,arguments)}function ua(){ua.b2LineJointDef.apply(this,arguments);this.constructor===ua&&this.b2LineJointDef.apply(this,arguments)}function va(){va.b2MouseJoint.apply(this,arguments);this.constructor===va&&this.b2MouseJoint.apply(this,arguments)}function wa(){wa.b2MouseJointDef.apply(this,arguments);this.constructor===wa&&this.b2MouseJointDef.apply(this,arguments)}function xa(){xa.b2PrismaticJoint.apply(this,
+arguments);this.constructor===xa&&this.b2PrismaticJoint.apply(this,arguments)}function ya(){ya.b2PrismaticJointDef.apply(this,arguments);this.constructor===ya&&this.b2PrismaticJointDef.apply(this,arguments)}function za(){za.b2PulleyJoint.apply(this,arguments);this.constructor===za&&this.b2PulleyJoint.apply(this,arguments)}function Aa(){Aa.b2PulleyJointDef.apply(this,arguments);this.constructor===Aa&&this.b2PulleyJointDef.apply(this,arguments)}function Ba(){Ba.b2RevoluteJoint.apply(this,arguments);
+this.constructor===Ba&&this.b2RevoluteJoint.apply(this,arguments)}function Ca(){Ca.b2RevoluteJointDef.apply(this,arguments);this.constructor===Ca&&this.b2RevoluteJointDef.apply(this,arguments)}function Da(){Da.b2WeldJoint.apply(this,arguments);this.constructor===Da&&this.b2WeldJoint.apply(this,arguments)}function Ea(){Ea.b2WeldJointDef.apply(this,arguments);this.constructor===Ea&&this.b2WeldJointDef.apply(this,arguments)}Box2D.Collision.IBroadPhase="Box2D.Collision.IBroadPhase";Box2D.Collision.b2AABB=
+F;Box2D.Collision.b2Bound=G;Box2D.Collision.b2BoundValues=K;Box2D.Collision.b2Collision=y;Box2D.Collision.b2ContactID=w;Box2D.Collision.b2ContactPoint=A;Box2D.Collision.b2Distance=U;Box2D.Collision.b2DistanceInput=p;Box2D.Collision.b2DistanceOutput=B;Box2D.Collision.b2DistanceProxy=Q;Box2D.Collision.b2DynamicTree=V;Box2D.Collision.b2DynamicTreeBroadPhase=M;Box2D.Collision.b2DynamicTreeNode=L;Box2D.Collision.b2DynamicTreePair=I;Box2D.Collision.b2Manifold=W;Box2D.Collision.b2ManifoldPoint=Y;Box2D.Collision.b2Point=
+k;Box2D.Collision.b2RayCastInput=z;Box2D.Collision.b2RayCastOutput=u;Box2D.Collision.b2Segment=D;Box2D.Collision.b2SeparationFunction=H;Box2D.Collision.b2Simplex=O;Box2D.Collision.b2SimplexCache=E;Box2D.Collision.b2SimplexVertex=R;Box2D.Collision.b2TimeOfImpact=N;Box2D.Collision.b2TOIInput=S;Box2D.Collision.b2WorldManifold=aa;Box2D.Collision.ClipVertex=Z;Box2D.Collision.Features=d;Box2D.Collision.Shapes.b2CircleShape=h;Box2D.Collision.Shapes.b2EdgeChainDef=l;Box2D.Collision.Shapes.b2EdgeShape=j;Box2D.Collision.Shapes.b2MassData=
+o;Box2D.Collision.Shapes.b2PolygonShape=q;Box2D.Collision.Shapes.b2Shape=n;Box2D.Common.b2internal="Box2D.Common.b2internal";Box2D.Common.b2Color=a;Box2D.Common.b2Settings=c;Box2D.Common.Math.b2Mat22=g;Box2D.Common.Math.b2Mat33=b;Box2D.Common.Math.b2Math=e;Box2D.Common.Math.b2Sweep=f;Box2D.Common.Math.b2Transform=m;Box2D.Common.Math.b2Vec2=r;Box2D.Common.Math.b2Vec3=s;Box2D.Dynamics.b2Body=v;Box2D.Dynamics.b2BodyDef=t;Box2D.Dynamics.b2ContactFilter=x;Box2D.Dynamics.b2ContactImpulse=C;Box2D.Dynamics.b2ContactListener=
+J;Box2D.Dynamics.b2ContactManager=T;Box2D.Dynamics.b2DebugDraw=P;Box2D.Dynamics.b2DestructionListener=X;Box2D.Dynamics.b2FilterData=$;Box2D.Dynamics.b2Fixture=ba;Box2D.Dynamics.b2FixtureDef=ca;Box2D.Dynamics.b2Island=da;Box2D.Dynamics.b2TimeStep=Fa;Box2D.Dynamics.b2World=ea;Box2D.Dynamics.Contacts.b2CircleContact=Ga;Box2D.Dynamics.Contacts.b2Contact=fa;Box2D.Dynamics.Contacts.b2ContactConstraint=ga;Box2D.Dynamics.Contacts.b2ContactConstraintPoint=Ha;Box2D.Dynamics.Contacts.b2ContactEdge=Ia;Box2D.Dynamics.Contacts.b2ContactFactory=
+ha;Box2D.Dynamics.Contacts.b2ContactRegister=Ja;Box2D.Dynamics.Contacts.b2ContactResult=Ka;Box2D.Dynamics.Contacts.b2ContactSolver=ia;Box2D.Dynamics.Contacts.b2EdgeAndCircleContact=La;Box2D.Dynamics.Contacts.b2NullContact=ja;Box2D.Dynamics.Contacts.b2PolyAndCircleContact=Ma;Box2D.Dynamics.Contacts.b2PolyAndEdgeContact=Na;Box2D.Dynamics.Contacts.b2PolygonContact=Oa;Box2D.Dynamics.Contacts.b2PositionSolverManifold=ka;Box2D.Dynamics.Controllers.b2BuoyancyController=Pa;Box2D.Dynamics.Controllers.b2ConstantAccelController=
+Qa;Box2D.Dynamics.Controllers.b2ConstantForceController=Ra;Box2D.Dynamics.Controllers.b2Controller=Sa;Box2D.Dynamics.Controllers.b2ControllerEdge=Ta;Box2D.Dynamics.Controllers.b2GravityController=Ua;Box2D.Dynamics.Controllers.b2TensorDampingController=Va;Box2D.Dynamics.Joints.b2DistanceJoint=la;Box2D.Dynamics.Joints.b2DistanceJointDef=ma;Box2D.Dynamics.Joints.b2FrictionJoint=na;Box2D.Dynamics.Joints.b2FrictionJointDef=oa;Box2D.Dynamics.Joints.b2GearJoint=pa;Box2D.Dynamics.Joints.b2GearJointDef=qa;
+Box2D.Dynamics.Joints.b2Jacobian=Wa;Box2D.Dynamics.Joints.b2Joint=ra;Box2D.Dynamics.Joints.b2JointDef=sa;Box2D.Dynamics.Joints.b2JointEdge=Xa;Box2D.Dynamics.Joints.b2LineJoint=ta;Box2D.Dynamics.Joints.b2LineJointDef=ua;Box2D.Dynamics.Joints.b2MouseJoint=va;Box2D.Dynamics.Joints.b2MouseJointDef=wa;Box2D.Dynamics.Joints.b2PrismaticJoint=xa;Box2D.Dynamics.Joints.b2PrismaticJointDef=ya;Box2D.Dynamics.Joints.b2PulleyJoint=za;Box2D.Dynamics.Joints.b2PulleyJointDef=Aa;Box2D.Dynamics.Joints.b2RevoluteJoint=
+Ba;Box2D.Dynamics.Joints.b2RevoluteJointDef=Ca;Box2D.Dynamics.Joints.b2WeldJoint=Da;Box2D.Dynamics.Joints.b2WeldJointDef=Ea})();Box2D.postDefs=[];
+(function(){var F=Box2D.Collision.Shapes.b2CircleShape,G=Box2D.Collision.Shapes.b2PolygonShape,K=Box2D.Collision.Shapes.b2Shape,y=Box2D.Common.b2Settings,w=Box2D.Common.Math.b2Math,A=Box2D.Common.Math.b2Sweep,U=Box2D.Common.Math.b2Transform,p=Box2D.Common.Math.b2Vec2,B=Box2D.Collision.b2AABB,Q=Box2D.Collision.b2Bound,V=Box2D.Collision.b2BoundValues,M=Box2D.Collision.b2Collision,L=Box2D.Collision.b2ContactID,I=Box2D.Collision.b2ContactPoint,W=Box2D.Collision.b2Distance,Y=Box2D.Collision.b2DistanceInput,
+k=Box2D.Collision.b2DistanceOutput,z=Box2D.Collision.b2DistanceProxy,u=Box2D.Collision.b2DynamicTree,D=Box2D.Collision.b2DynamicTreeBroadPhase,H=Box2D.Collision.b2DynamicTreeNode,O=Box2D.Collision.b2DynamicTreePair,E=Box2D.Collision.b2Manifold,R=Box2D.Collision.b2ManifoldPoint,N=Box2D.Collision.b2Point,S=Box2D.Collision.b2RayCastInput,aa=Box2D.Collision.b2RayCastOutput,Z=Box2D.Collision.b2Segment,d=Box2D.Collision.b2SeparationFunction,h=Box2D.Collision.b2Simplex,l=Box2D.Collision.b2SimplexCache,j=
+Box2D.Collision.b2SimplexVertex,o=Box2D.Collision.b2TimeOfImpact,q=Box2D.Collision.b2TOIInput,n=Box2D.Collision.b2WorldManifold,a=Box2D.Collision.ClipVertex,c=Box2D.Collision.Features,g=Box2D.Collision.IBroadPhase;B.b2AABB=function(){this.lowerBound=new p;this.upperBound=new p};B.prototype.IsValid=function(){var b=this.upperBound.y-this.lowerBound.y;return b=(b=this.upperBound.x-this.lowerBound.x>=0&&b>=0)&&this.lowerBound.IsValid()&&this.upperBound.IsValid()};B.prototype.GetCenter=function(){return new p((this.lowerBound.x+
+this.upperBound.x)/2,(this.lowerBound.y+this.upperBound.y)/2)};B.prototype.GetExtents=function(){return new p((this.upperBound.x-this.lowerBound.x)/2,(this.upperBound.y-this.lowerBound.y)/2)};B.prototype.Contains=function(b){var e=true;return e=(e=(e=(e=e&&this.lowerBound.x<=b.lowerBound.x)&&this.lowerBound.y<=b.lowerBound.y)&&b.upperBound.x<=this.upperBound.x)&&b.upperBound.y<=this.upperBound.y};B.prototype.RayCast=function(b,e){var f=-Number.MAX_VALUE,m=Number.MAX_VALUE,r=e.p1.x,s=e.p1.y,v=e.p2.x-
+e.p1.x,t=e.p2.y-e.p1.y,x=Math.abs(t),C=b.normal,J=0,T=0,P=J=0;P=0;if(Math.abs(v)<Number.MIN_VALUE){if(r<this.lowerBound.x||this.upperBound.x<r)return false}else{J=1/v;T=(this.lowerBound.x-r)*J;J=(this.upperBound.x-r)*J;P=-1;if(T>J){P=T;T=J;J=P;P=1}if(T>f){C.x=P;C.y=0;f=T}m=Math.min(m,J);if(f>m)return false}if(x<Number.MIN_VALUE){if(s<this.lowerBound.y||this.upperBound.y<s)return false}else{J=1/t;T=(this.lowerBound.y-s)*J;J=(this.upperBound.y-s)*J;P=-1;if(T>J){P=T;T=J;J=P;P=1}if(T>f){C.y=P;C.x=0;f=
+T}m=Math.min(m,J);if(f>m)return false}b.fraction=f;return true};B.prototype.TestOverlap=function(b){var e=b.lowerBound.y-this.upperBound.y,f=this.lowerBound.y-b.upperBound.y;if(b.lowerBound.x-this.upperBound.x>0||e>0)return false;if(this.lowerBound.x-b.upperBound.x>0||f>0)return false;return true};B.Combine=function(b,e){var f=new B;f.Combine(b,e);return f};B.prototype.Combine=function(b,e){this.lowerBound.x=Math.min(b.lowerBound.x,e.lowerBound.x);this.lowerBound.y=Math.min(b.lowerBound.y,e.lowerBound.y);
+this.upperBound.x=Math.max(b.upperBound.x,e.upperBound.x);this.upperBound.y=Math.max(b.upperBound.y,e.upperBound.y)};Q.b2Bound=function(){};Q.prototype.IsLower=function(){return(this.value&1)==0};Q.prototype.IsUpper=function(){return(this.value&1)==1};Q.prototype.Swap=function(b){var e=this.value,f=this.proxy,m=this.stabbingCount;this.value=b.value;this.proxy=b.proxy;this.stabbingCount=b.stabbingCount;b.value=e;b.proxy=f;b.stabbingCount=m};V.b2BoundValues=function(){};V.prototype.b2BoundValues=function(){this.lowerValues=
+new Vector_a2j_Number;this.lowerValues[0]=0;this.lowerValues[1]=0;this.upperValues=new Vector_a2j_Number;this.upperValues[0]=0;this.upperValues[1]=0};M.b2Collision=function(){};M.ClipSegmentToLine=function(b,e,f,m){if(m===undefined)m=0;var r,s=0;r=e[0];var v=r.v;r=e[1];var t=r.v,x=f.x*v.x+f.y*v.y-m;r=f.x*t.x+f.y*t.y-m;x<=0&&b[s++].Set(e[0]);r<=0&&b[s++].Set(e[1]);if(x*r<0){f=x/(x-r);r=b[s];r=r.v;r.x=v.x+f*(t.x-v.x);r.y=v.y+f*(t.y-v.y);r=b[s];r.id=(x>0?e[0]:e[1]).id;++s}return s};M.EdgeSeparation=
+function(b,e,f,m,r){if(f===undefined)f=0;parseInt(b.m_vertexCount);var s=b.m_vertices;b=b.m_normals;var v=parseInt(m.m_vertexCount),t=m.m_vertices,x,C;x=e.R;C=b[f];b=x.col1.x*C.x+x.col2.x*C.y;m=x.col1.y*C.x+x.col2.y*C.y;x=r.R;var J=x.col1.x*b+x.col1.y*m;x=x.col2.x*b+x.col2.y*m;for(var T=0,P=Number.MAX_VALUE,X=0;X<v;++X){C=t[X];C=C.x*J+C.y*x;if(C<P){P=C;T=X}}C=s[f];x=e.R;f=e.position.x+(x.col1.x*C.x+x.col2.x*C.y);e=e.position.y+(x.col1.y*C.x+x.col2.y*C.y);C=t[T];x=r.R;s=r.position.x+(x.col1.x*C.x+
+x.col2.x*C.y);r=r.position.y+(x.col1.y*C.x+x.col2.y*C.y);s-=f;r-=e;return s*b+r*m};M.FindMaxSeparation=function(b,e,f,m,r){var s=parseInt(e.m_vertexCount),v=e.m_normals,t,x;x=r.R;t=m.m_centroid;var C=r.position.x+(x.col1.x*t.x+x.col2.x*t.y),J=r.position.y+(x.col1.y*t.x+x.col2.y*t.y);x=f.R;t=e.m_centroid;C-=f.position.x+(x.col1.x*t.x+x.col2.x*t.y);J-=f.position.y+(x.col1.y*t.x+x.col2.y*t.y);x=C*f.R.col1.x+J*f.R.col1.y;J=C*f.R.col2.x+J*f.R.col2.y;C=0;for(var T=-Number.MAX_VALUE,P=0;P<s;++P){t=v[P];
+t=t.x*x+t.y*J;if(t>T){T=t;C=P}}v=M.EdgeSeparation(e,f,C,m,r);t=parseInt(C-1>=0?C-1:s-1);x=M.EdgeSeparation(e,f,t,m,r);J=parseInt(C+1<s?C+1:0);T=M.EdgeSeparation(e,f,J,m,r);var X=P=0,$=0;if(x>v&&x>T){$=-1;P=t;X=x}else if(T>v){$=1;P=J;X=T}else{b[0]=C;return v}for(;;){C=$==-1?P-1>=0?P-1:s-1:P+1<s?P+1:0;v=M.EdgeSeparation(e,f,C,m,r);if(v>X){P=C;X=v}else break}b[0]=P;return X};M.FindIncidentEdge=function(b,e,f,m,r,s){if(m===undefined)m=0;parseInt(e.m_vertexCount);var v=e.m_normals,t=parseInt(r.m_vertexCount);
+e=r.m_vertices;r=r.m_normals;var x;x=f.R;f=v[m];v=x.col1.x*f.x+x.col2.x*f.y;var C=x.col1.y*f.x+x.col2.y*f.y;x=s.R;f=x.col1.x*v+x.col1.y*C;C=x.col2.x*v+x.col2.y*C;v=f;x=0;for(var J=Number.MAX_VALUE,T=0;T<t;++T){f=r[T];f=v*f.x+C*f.y;if(f<J){J=f;x=T}}r=parseInt(x);v=parseInt(r+1<t?r+1:0);t=b[0];f=e[r];x=s.R;t.v.x=s.position.x+(x.col1.x*f.x+x.col2.x*f.y);t.v.y=s.position.y+(x.col1.y*f.x+x.col2.y*f.y);t.id.features.referenceEdge=m;t.id.features.incidentEdge=r;t.id.features.incidentVertex=0;t=b[1];f=e[v];
+x=s.R;t.v.x=s.position.x+(x.col1.x*f.x+x.col2.x*f.y);t.v.y=s.position.y+(x.col1.y*f.x+x.col2.y*f.y);t.id.features.referenceEdge=m;t.id.features.incidentEdge=v;t.id.features.incidentVertex=1};M.MakeClipPointVector=function(){var b=new Vector(2);b[0]=new a;b[1]=new a;return b};M.CollidePolygons=function(b,e,f,m,r){var s;b.m_pointCount=0;var v=e.m_radius+m.m_radius;s=0;M.s_edgeAO[0]=s;var t=M.FindMaxSeparation(M.s_edgeAO,e,f,m,r);s=M.s_edgeAO[0];if(!(t>v)){var x=0;M.s_edgeBO[0]=x;var C=M.FindMaxSeparation(M.s_edgeBO,
+m,r,e,f);x=M.s_edgeBO[0];if(!(C>v)){var J=0,T=0;if(C>0.98*t+0.0010){t=m;m=e;e=r;f=f;J=x;b.m_type=E.e_faceB;T=1}else{t=e;m=m;e=f;f=r;J=s;b.m_type=E.e_faceA;T=0}s=M.s_incidentEdge;M.FindIncidentEdge(s,t,e,J,m,f);x=parseInt(t.m_vertexCount);r=t.m_vertices;t=r[J];var P;P=J+1<x?r[parseInt(J+1)]:r[0];J=M.s_localTangent;J.Set(P.x-t.x,P.y-t.y);J.Normalize();r=M.s_localNormal;r.x=J.y;r.y=-J.x;m=M.s_planePoint;m.Set(0.5*(t.x+P.x),0.5*(t.y+P.y));C=M.s_tangent;x=e.R;C.x=x.col1.x*J.x+x.col2.x*J.y;C.y=x.col1.y*
+J.x+x.col2.y*J.y;var X=M.s_tangent2;X.x=-C.x;X.y=-C.y;J=M.s_normal;J.x=C.y;J.y=-C.x;var $=M.s_v11,ba=M.s_v12;$.x=e.position.x+(x.col1.x*t.x+x.col2.x*t.y);$.y=e.position.y+(x.col1.y*t.x+x.col2.y*t.y);ba.x=e.position.x+(x.col1.x*P.x+x.col2.x*P.y);ba.y=e.position.y+(x.col1.y*P.x+x.col2.y*P.y);e=J.x*$.x+J.y*$.y;x=C.x*ba.x+C.y*ba.y+v;P=M.s_clipPoints1;t=M.s_clipPoints2;ba=0;ba=M.ClipSegmentToLine(P,s,X,-C.x*$.x-C.y*$.y+v);if(!(ba<2)){ba=M.ClipSegmentToLine(t,P,C,x);if(!(ba<2)){b.m_localPlaneNormal.SetV(r);
+b.m_localPoint.SetV(m);for(m=r=0;m<y.b2_maxManifoldPoints;++m){s=t[m];if(J.x*s.v.x+J.y*s.v.y-e<=v){C=b.m_points[r];x=f.R;X=s.v.x-f.position.x;$=s.v.y-f.position.y;C.m_localPoint.x=X*x.col1.x+$*x.col1.y;C.m_localPoint.y=X*x.col2.x+$*x.col2.y;C.m_id.Set(s.id);C.m_id.features.flip=T;++r}}b.m_pointCount=r}}}}};M.CollideCircles=function(b,e,f,m,r){b.m_pointCount=0;var s,v;s=f.R;v=e.m_p;var t=f.position.x+(s.col1.x*v.x+s.col2.x*v.y);f=f.position.y+(s.col1.y*v.x+s.col2.y*v.y);s=r.R;v=m.m_p;t=r.position.x+
+(s.col1.x*v.x+s.col2.x*v.y)-t;r=r.position.y+(s.col1.y*v.x+s.col2.y*v.y)-f;s=e.m_radius+m.m_radius;if(!(t*t+r*r>s*s)){b.m_type=E.e_circles;b.m_localPoint.SetV(e.m_p);b.m_localPlaneNormal.SetZero();b.m_pointCount=1;b.m_points[0].m_localPoint.SetV(m.m_p);b.m_points[0].m_id.key=0}};M.CollidePolygonAndCircle=function(b,e,f,m,r){var s=b.m_pointCount=0,v=0,t,x;x=r.R;t=m.m_p;var C=r.position.y+(x.col1.y*t.x+x.col2.y*t.y);s=r.position.x+(x.col1.x*t.x+x.col2.x*t.y)-f.position.x;v=C-f.position.y;x=f.R;f=s*
+x.col1.x+v*x.col1.y;x=s*x.col2.x+v*x.col2.y;var J=0;C=-Number.MAX_VALUE;r=e.m_radius+m.m_radius;var T=parseInt(e.m_vertexCount),P=e.m_vertices;e=e.m_normals;for(var X=0;X<T;++X){t=P[X];s=f-t.x;v=x-t.y;t=e[X];s=t.x*s+t.y*v;if(s>r)return;if(s>C){C=s;J=X}}s=parseInt(J);v=parseInt(s+1<T?s+1:0);t=P[s];P=P[v];if(C<Number.MIN_VALUE){b.m_pointCount=1;b.m_type=E.e_faceA;b.m_localPlaneNormal.SetV(e[J]);b.m_localPoint.x=0.5*(t.x+P.x);b.m_localPoint.y=0.5*(t.y+P.y)}else{C=(f-P.x)*(t.x-P.x)+(x-P.y)*(t.y-P.y);
+if((f-t.x)*(P.x-t.x)+(x-t.y)*(P.y-t.y)<=0){if((f-t.x)*(f-t.x)+(x-t.y)*(x-t.y)>r*r)return;b.m_pointCount=1;b.m_type=E.e_faceA;b.m_localPlaneNormal.x=f-t.x;b.m_localPlaneNormal.y=x-t.y;b.m_localPlaneNormal.Normalize();b.m_localPoint.SetV(t)}else if(C<=0){if((f-P.x)*(f-P.x)+(x-P.y)*(x-P.y)>r*r)return;b.m_pointCount=1;b.m_type=E.e_faceA;b.m_localPlaneNormal.x=f-P.x;b.m_localPlaneNormal.y=x-P.y;b.m_localPlaneNormal.Normalize();b.m_localPoint.SetV(P)}else{J=0.5*(t.x+P.x);t=0.5*(t.y+P.y);C=(f-J)*e[s].x+
+(x-t)*e[s].y;if(C>r)return;b.m_pointCount=1;b.m_type=E.e_faceA;b.m_localPlaneNormal.x=e[s].x;b.m_localPlaneNormal.y=e[s].y;b.m_localPlaneNormal.Normalize();b.m_localPoint.Set(J,t)}}b.m_points[0].m_localPoint.SetV(m.m_p);b.m_points[0].m_id.key=0};M.TestOverlap=function(b,e){var f=e.lowerBound,m=b.upperBound,r=f.x-m.x,s=f.y-m.y;f=b.lowerBound;m=e.upperBound;var v=f.y-m.y;if(r>0||s>0)return false;if(f.x-m.x>0||v>0)return false;return true};Box2D.postDefs.push(function(){Box2D.Collision.b2Collision.s_incidentEdge=
+M.MakeClipPointVector();Box2D.Collision.b2Collision.s_clipPoints1=M.MakeClipPointVector();Box2D.Collision.b2Collision.s_clipPoints2=M.MakeClipPointVector();Box2D.Collision.b2Collision.s_edgeAO=new Vector_a2j_Number(1);Box2D.Collision.b2Collision.s_edgeBO=new Vector_a2j_Number(1);Box2D.Collision.b2Collision.s_localTangent=new p;Box2D.Collision.b2Collision.s_localNormal=new p;Box2D.Collision.b2Collision.s_planePoint=new p;Box2D.Collision.b2Collision.s_normal=new p;Box2D.Collision.b2Collision.s_tangent=
+new p;Box2D.Collision.b2Collision.s_tangent2=new p;Box2D.Collision.b2Collision.s_v11=new p;Box2D.Collision.b2Collision.s_v12=new p;Box2D.Collision.b2Collision.b2CollidePolyTempVec=new p;Box2D.Collision.b2Collision.b2_nullFeature=255});L.b2ContactID=function(){this.features=new c};L.prototype.b2ContactID=function(){this.features._m_id=this};L.prototype.Set=function(b){this.key=b._key};L.prototype.Copy=function(){var b=new L;b.key=this.key;return b};Object.defineProperty(L.prototype,"key",{enumerable:false,
+configurable:true,get:function(){return this._key}});Object.defineProperty(L.prototype,"key",{enumerable:false,configurable:true,set:function(b){if(b===undefined)b=0;this._key=b;this.features._referenceEdge=this._key&255;this.features._incidentEdge=(this._key&65280)>>8&255;this.features._incidentVertex=(this._key&16711680)>>16&255;this.features._flip=(this._key&4278190080)>>24&255}});I.b2ContactPoint=function(){this.position=new p;this.velocity=new p;this.normal=new p;this.id=new L};W.b2Distance=
+function(){};W.Distance=function(b,e,f){++W.b2_gjkCalls;var m=f.proxyA,r=f.proxyB,s=f.transformA,v=f.transformB,t=W.s_simplex;t.ReadCache(e,m,s,r,v);var x=t.m_vertices,C=W.s_saveA,J=W.s_saveB,T=0;t.GetClosestPoint().LengthSquared();for(var P=0,X,$=0;$<20;){T=t.m_count;for(P=0;P<T;P++){C[P]=x[P].indexA;J[P]=x[P].indexB}switch(t.m_count){case 1:break;case 2:t.Solve2();break;case 3:t.Solve3();break;default:y.b2Assert(false)}if(t.m_count==3)break;X=t.GetClosestPoint();X.LengthSquared();P=t.GetSearchDirection();
+if(P.LengthSquared()<Number.MIN_VALUE*Number.MIN_VALUE)break;X=x[t.m_count];X.indexA=m.GetSupport(w.MulTMV(s.R,P.GetNegative()));X.wA=w.MulX(s,m.GetVertex(X.indexA));X.indexB=r.GetSupport(w.MulTMV(v.R,P));X.wB=w.MulX(v,r.GetVertex(X.indexB));X.w=w.SubtractVV(X.wB,X.wA);++$;++W.b2_gjkIters;var ba=false;for(P=0;P<T;P++)if(X.indexA==C[P]&&X.indexB==J[P]){ba=true;break}if(ba)break;++t.m_count}W.b2_gjkMaxIters=w.Max(W.b2_gjkMaxIters,$);t.GetWitnessPoints(b.pointA,b.pointB);b.distance=w.SubtractVV(b.pointA,
+b.pointB).Length();b.iterations=$;t.WriteCache(e);if(f.useRadii){e=m.m_radius;r=r.m_radius;if(b.distance>e+r&&b.distance>Number.MIN_VALUE){b.distance-=e+r;f=w.SubtractVV(b.pointB,b.pointA);f.Normalize();b.pointA.x+=e*f.x;b.pointA.y+=e*f.y;b.pointB.x-=r*f.x;b.pointB.y-=r*f.y}else{X=new p;X.x=0.5*(b.pointA.x+b.pointB.x);X.y=0.5*(b.pointA.y+b.pointB.y);b.pointA.x=b.pointB.x=X.x;b.pointA.y=b.pointB.y=X.y;b.distance=0}}};Box2D.postDefs.push(function(){Box2D.Collision.b2Distance.s_simplex=new h;Box2D.Collision.b2Distance.s_saveA=
+new Vector_a2j_Number(3);Box2D.Collision.b2Distance.s_saveB=new Vector_a2j_Number(3)});Y.b2DistanceInput=function(){};k.b2DistanceOutput=function(){this.pointA=new p;this.pointB=new p};z.b2DistanceProxy=function(){};z.prototype.Set=function(b){switch(b.GetType()){case K.e_circleShape:b=b instanceof F?b:null;this.m_vertices=new Vector(1,true);this.m_vertices[0]=b.m_p;this.m_count=1;this.m_radius=b.m_radius;break;case K.e_polygonShape:b=b instanceof G?b:null;this.m_vertices=b.m_vertices;this.m_count=
+b.m_vertexCount;this.m_radius=b.m_radius;break;default:y.b2Assert(false)}};z.prototype.GetSupport=function(b){for(var e=0,f=this.m_vertices[0].x*b.x+this.m_vertices[0].y*b.y,m=1;m<this.m_count;++m){var r=this.m_vertices[m].x*b.x+this.m_vertices[m].y*b.y;if(r>f){e=m;f=r}}return e};z.prototype.GetSupportVertex=function(b){for(var e=0,f=this.m_vertices[0].x*b.x+this.m_vertices[0].y*b.y,m=1;m<this.m_count;++m){var r=this.m_vertices[m].x*b.x+this.m_vertices[m].y*b.y;if(r>f){e=m;f=r}}return this.m_vertices[e]};
+z.prototype.GetVertexCount=function(){return this.m_count};z.prototype.GetVertex=function(b){if(b===undefined)b=0;y.b2Assert(0<=b&&b<this.m_count);return this.m_vertices[b]};u.b2DynamicTree=function(){};u.prototype.b2DynamicTree=function(){this.m_freeList=this.m_root=null;this.m_insertionCount=this.m_path=0};u.prototype.CreateProxy=function(b,e){var f=this.AllocateNode(),m=y.b2_aabbExtension,r=y.b2_aabbExtension;f.aabb.lowerBound.x=b.lowerBound.x-m;f.aabb.lowerBound.y=b.lowerBound.y-r;f.aabb.upperBound.x=
+b.upperBound.x+m;f.aabb.upperBound.y=b.upperBound.y+r;f.userData=e;this.InsertLeaf(f);return f};u.prototype.DestroyProxy=function(b){this.RemoveLeaf(b);this.FreeNode(b)};u.prototype.MoveProxy=function(b,e,f){y.b2Assert(b.IsLeaf());if(b.aabb.Contains(e))return false;this.RemoveLeaf(b);var m=y.b2_aabbExtension+y.b2_aabbMultiplier*(f.x>0?f.x:-f.x);f=y.b2_aabbExtension+y.b2_aabbMultiplier*(f.y>0?f.y:-f.y);b.aabb.lowerBound.x=e.lowerBound.x-m;b.aabb.lowerBound.y=e.lowerBound.y-f;b.aabb.upperBound.x=e.upperBound.x+
+m;b.aabb.upperBound.y=e.upperBound.y+f;this.InsertLeaf(b);return true};u.prototype.Rebalance=function(b){if(b===undefined)b=0;if(this.m_root!=null)for(var e=0;e<b;e++){for(var f=this.m_root,m=0;f.IsLeaf()==false;){f=this.m_path>>m&1?f.child2:f.child1;m=m+1&31}++this.m_path;this.RemoveLeaf(f);this.InsertLeaf(f)}};u.prototype.GetFatAABB=function(b){return b.aabb};u.prototype.GetUserData=function(b){return b.userData};u.prototype.Query=function(b,e){if(this.m_root!=null){var f=new Vector,m=0;for(f[m++]=
+this.m_root;m>0;){var r=f[--m];if(r.aabb.TestOverlap(e))if(r.IsLeaf()){if(!b(r))break}else{f[m++]=r.child1;f[m++]=r.child2}}}};u.prototype.RayCast=function(b,e){if(this.m_root!=null){var f=e.p1,m=e.p2,r=w.SubtractVV(f,m);r.Normalize();r=w.CrossFV(1,r);var s=w.AbsV(r),v=e.maxFraction,t=new B,x=0,C=0;x=f.x+v*(m.x-f.x);C=f.y+v*(m.y-f.y);t.lowerBound.x=Math.min(f.x,x);t.lowerBound.y=Math.min(f.y,C);t.upperBound.x=Math.max(f.x,x);t.upperBound.y=Math.max(f.y,C);var J=new Vector,T=0;for(J[T++]=this.m_root;T>
+0;){v=J[--T];if(v.aabb.TestOverlap(t)!=false){x=v.aabb.GetCenter();C=v.aabb.GetExtents();if(!(Math.abs(r.x*(f.x-x.x)+r.y*(f.y-x.y))-s.x*C.x-s.y*C.y>0))if(v.IsLeaf()){x=new S;x.p1=e.p1;x.p2=e.p2;x.maxFraction=e.maxFraction;v=b(x,v);if(v==0)break;if(v>0){x=f.x+v*(m.x-f.x);C=f.y+v*(m.y-f.y);t.lowerBound.x=Math.min(f.x,x);t.lowerBound.y=Math.min(f.y,C);t.upperBound.x=Math.max(f.x,x);t.upperBound.y=Math.max(f.y,C)}}else{J[T++]=v.child1;J[T++]=v.child2}}}}};u.prototype.AllocateNode=function(){if(this.m_freeList){var b=
+this.m_freeList;this.m_freeList=b.parent;b.parent=null;b.child1=null;b.child2=null;return b}return new H};u.prototype.FreeNode=function(b){b.parent=this.m_freeList;this.m_freeList=b};u.prototype.InsertLeaf=function(b){++this.m_insertionCount;if(this.m_root==null){this.m_root=b;this.m_root.parent=null}else{var e=b.aabb.GetCenter(),f=this.m_root;if(f.IsLeaf()==false){do{var m=f.child1;f=f.child2;f=Math.abs((m.aabb.lowerBound.x+m.aabb.upperBound.x)/2-e.x)+Math.abs((m.aabb.lowerBound.y+m.aabb.upperBound.y)/
+2-e.y)<Math.abs((f.aabb.lowerBound.x+f.aabb.upperBound.x)/2-e.x)+Math.abs((f.aabb.lowerBound.y+f.aabb.upperBound.y)/2-e.y)?m:f}while(f.IsLeaf()==false)}e=f.parent;m=this.AllocateNode();m.parent=e;m.userData=null;m.aabb.Combine(b.aabb,f.aabb);if(e){if(f.parent.child1==f)e.child1=m;else e.child2=m;m.child1=f;m.child2=b;f.parent=m;b.parent=m;do{if(e.aabb.Contains(m.aabb))break;e.aabb.Combine(e.child1.aabb,e.child2.aabb);m=e;e=e.parent}while(e)}else{m.child1=f;m.child2=b;f.parent=m;this.m_root=b.parent=
+m}}};u.prototype.RemoveLeaf=function(b){if(b==this.m_root)this.m_root=null;else{var e=b.parent,f=e.parent;b=e.child1==b?e.child2:e.child1;if(f){if(f.child1==e)f.child1=b;else f.child2=b;b.parent=f;for(this.FreeNode(e);f;){e=f.aabb;f.aabb=B.Combine(f.child1.aabb,f.child2.aabb);if(e.Contains(f.aabb))break;f=f.parent}}else{this.m_root=b;b.parent=null;this.FreeNode(e)}}};D.b2DynamicTreeBroadPhase=function(){this.m_tree=new u;this.m_moveBuffer=new Vector;this.m_pairBuffer=new Vector;this.m_pairCount=0};
+D.prototype.CreateProxy=function(b,e){var f=this.m_tree.CreateProxy(b,e);++this.m_proxyCount;this.BufferMove(f);return f};D.prototype.DestroyProxy=function(b){this.UnBufferMove(b);--this.m_proxyCount;this.m_tree.DestroyProxy(b)};D.prototype.MoveProxy=function(b,e,f){this.m_tree.MoveProxy(b,e,f)&&this.BufferMove(b)};D.prototype.TestOverlap=function(b,e){var f=this.m_tree.GetFatAABB(b),m=this.m_tree.GetFatAABB(e);return f.TestOverlap(m)};D.prototype.GetUserData=function(b){return this.m_tree.GetUserData(b)};
+D.prototype.GetFatAABB=function(b){return this.m_tree.GetFatAABB(b)};D.prototype.GetProxyCount=function(){return this.m_proxyCount};D.prototype.UpdatePairs=function(b){var e=this;var f=e.m_pairCount=0,m;for(f=0;f<e.m_moveBuffer.length;++f){m=e.m_moveBuffer[f];var r=e.m_tree.GetFatAABB(m);e.m_tree.Query(function(t){if(t==m)return true;if(e.m_pairCount==e.m_pairBuffer.length)e.m_pairBuffer[e.m_pairCount]=new O;var x=e.m_pairBuffer[e.m_pairCount];x.proxyA=t<m?t:m;x.proxyB=t>=m?t:m;++e.m_pairCount;return true},
+r)}for(f=e.m_moveBuffer.length=0;f<e.m_pairCount;){r=e.m_pairBuffer[f];var s=e.m_tree.GetUserData(r.proxyA),v=e.m_tree.GetUserData(r.proxyB);b(s,v);for(++f;f<e.m_pairCount;){s=e.m_pairBuffer[f];if(s.proxyA!=r.proxyA||s.proxyB!=r.proxyB)break;++f}}};D.prototype.Query=function(b,e){this.m_tree.Query(b,e)};D.prototype.RayCast=function(b,e){this.m_tree.RayCast(b,e)};D.prototype.Validate=function(){};D.prototype.Rebalance=function(b){if(b===undefined)b=0;this.m_tree.Rebalance(b)};D.prototype.BufferMove=
+function(b){this.m_moveBuffer[this.m_moveBuffer.length]=b};D.prototype.UnBufferMove=function(b){this.m_moveBuffer.splice(parseInt(this.m_moveBuffer.indexOf(b)),1)};D.prototype.ComparePairs=function(){return 0};D.__implements={};D.__implements[g]=true;H.b2DynamicTreeNode=function(){this.aabb=new B};H.prototype.IsLeaf=function(){return this.child1==null};O.b2DynamicTreePair=function(){};E.b2Manifold=function(){this.m_pointCount=0};E.prototype.b2Manifold=function(){this.m_points=new Vector(y.b2_maxManifoldPoints);
+for(var b=0;b<y.b2_maxManifoldPoints;b++)this.m_points[b]=new R;this.m_localPlaneNormal=new p;this.m_localPoint=new p};E.prototype.Reset=function(){for(var b=0;b<y.b2_maxManifoldPoints;b++)(this.m_points[b]instanceof R?this.m_points[b]:null).Reset();this.m_localPlaneNormal.SetZero();this.m_localPoint.SetZero();this.m_pointCount=this.m_type=0};E.prototype.Set=function(b){this.m_pointCount=b.m_pointCount;for(var e=0;e<y.b2_maxManifoldPoints;e++)(this.m_points[e]instanceof R?this.m_points[e]:null).Set(b.m_points[e]);
+this.m_localPlaneNormal.SetV(b.m_localPlaneNormal);this.m_localPoint.SetV(b.m_localPoint);this.m_type=b.m_type};E.prototype.Copy=function(){var b=new E;b.Set(this);return b};Box2D.postDefs.push(function(){Box2D.Collision.b2Manifold.e_circles=1;Box2D.Collision.b2Manifold.e_faceA=2;Box2D.Collision.b2Manifold.e_faceB=4});R.b2ManifoldPoint=function(){this.m_localPoint=new p;this.m_id=new L};R.prototype.b2ManifoldPoint=function(){this.Reset()};R.prototype.Reset=function(){this.m_localPoint.SetZero();this.m_tangentImpulse=
+this.m_normalImpulse=0;this.m_id.key=0};R.prototype.Set=function(b){this.m_localPoint.SetV(b.m_localPoint);this.m_normalImpulse=b.m_normalImpulse;this.m_tangentImpulse=b.m_tangentImpulse;this.m_id.Set(b.m_id)};N.b2Point=function(){this.p=new p};N.prototype.Support=function(){return this.p};N.prototype.GetFirstVertex=function(){return this.p};S.b2RayCastInput=function(){this.p1=new p;this.p2=new p};S.prototype.b2RayCastInput=function(b,e,f){if(b===undefined)b=null;if(e===undefined)e=null;if(f===undefined)f=
+1;b&&this.p1.SetV(b);e&&this.p2.SetV(e);this.maxFraction=f};aa.b2RayCastOutput=function(){this.normal=new p};Z.b2Segment=function(){this.p1=new p;this.p2=new p};Z.prototype.TestSegment=function(b,e,f,m){if(m===undefined)m=0;var r=f.p1,s=f.p2.x-r.x,v=f.p2.y-r.y;f=this.p2.y-this.p1.y;var t=-(this.p2.x-this.p1.x),x=100*Number.MIN_VALUE,C=-(s*f+v*t);if(C>x){var J=r.x-this.p1.x,T=r.y-this.p1.y;r=J*f+T*t;if(0<=r&&r<=m*C){m=-s*T+v*J;if(-x*C<=m&&m<=C*(1+x)){r/=C;m=Math.sqrt(f*f+t*t);f/=m;t/=m;b[0]=r;e.Set(f,
+t);return true}}}return false};Z.prototype.Extend=function(b){this.ExtendForward(b);this.ExtendBackward(b)};Z.prototype.ExtendForward=function(b){var e=this.p2.x-this.p1.x,f=this.p2.y-this.p1.y;b=Math.min(e>0?(b.upperBound.x-this.p1.x)/e:e<0?(b.lowerBound.x-this.p1.x)/e:Number.POSITIVE_INFINITY,f>0?(b.upperBound.y-this.p1.y)/f:f<0?(b.lowerBound.y-this.p1.y)/f:Number.POSITIVE_INFINITY);this.p2.x=this.p1.x+e*b;this.p2.y=this.p1.y+f*b};Z.prototype.ExtendBackward=function(b){var e=-this.p2.x+this.p1.x,
+f=-this.p2.y+this.p1.y;b=Math.min(e>0?(b.upperBound.x-this.p2.x)/e:e<0?(b.lowerBound.x-this.p2.x)/e:Number.POSITIVE_INFINITY,f>0?(b.upperBound.y-this.p2.y)/f:f<0?(b.lowerBound.y-this.p2.y)/f:Number.POSITIVE_INFINITY);this.p1.x=this.p2.x+e*b;this.p1.y=this.p2.y+f*b};d.b2SeparationFunction=function(){this.m_localPoint=new p;this.m_axis=new p};d.prototype.Initialize=function(b,e,f,m,r){this.m_proxyA=e;this.m_proxyB=m;var s=parseInt(b.count);y.b2Assert(0<s&&s<3);var v,t,x,C,J=C=x=m=e=0,T=0;J=0;if(s==
+1){this.m_type=d.e_points;v=this.m_proxyA.GetVertex(b.indexA[0]);t=this.m_proxyB.GetVertex(b.indexB[0]);s=v;b=f.R;e=f.position.x+(b.col1.x*s.x+b.col2.x*s.y);m=f.position.y+(b.col1.y*s.x+b.col2.y*s.y);s=t;b=r.R;x=r.position.x+(b.col1.x*s.x+b.col2.x*s.y);C=r.position.y+(b.col1.y*s.x+b.col2.y*s.y);this.m_axis.x=x-e;this.m_axis.y=C-m;this.m_axis.Normalize()}else{if(b.indexB[0]==b.indexB[1]){this.m_type=d.e_faceA;e=this.m_proxyA.GetVertex(b.indexA[0]);m=this.m_proxyA.GetVertex(b.indexA[1]);t=this.m_proxyB.GetVertex(b.indexB[0]);
+this.m_localPoint.x=0.5*(e.x+m.x);this.m_localPoint.y=0.5*(e.y+m.y);this.m_axis=w.CrossVF(w.SubtractVV(m,e),1);this.m_axis.Normalize();s=this.m_axis;b=f.R;J=b.col1.x*s.x+b.col2.x*s.y;T=b.col1.y*s.x+b.col2.y*s.y;s=this.m_localPoint;b=f.R;e=f.position.x+(b.col1.x*s.x+b.col2.x*s.y);m=f.position.y+(b.col1.y*s.x+b.col2.y*s.y);s=t;b=r.R;x=r.position.x+(b.col1.x*s.x+b.col2.x*s.y);C=r.position.y+(b.col1.y*s.x+b.col2.y*s.y);J=(x-e)*J+(C-m)*T}else if(b.indexA[0]==b.indexA[0]){this.m_type=d.e_faceB;x=this.m_proxyB.GetVertex(b.indexB[0]);
+C=this.m_proxyB.GetVertex(b.indexB[1]);v=this.m_proxyA.GetVertex(b.indexA[0]);this.m_localPoint.x=0.5*(x.x+C.x);this.m_localPoint.y=0.5*(x.y+C.y);this.m_axis=w.CrossVF(w.SubtractVV(C,x),1);this.m_axis.Normalize();s=this.m_axis;b=r.R;J=b.col1.x*s.x+b.col2.x*s.y;T=b.col1.y*s.x+b.col2.y*s.y;s=this.m_localPoint;b=r.R;x=r.position.x+(b.col1.x*s.x+b.col2.x*s.y);C=r.position.y+(b.col1.y*s.x+b.col2.y*s.y);s=v;b=f.R;e=f.position.x+(b.col1.x*s.x+b.col2.x*s.y);m=f.position.y+(b.col1.y*s.x+b.col2.y*s.y);J=(e-
+x)*J+(m-C)*T}else{e=this.m_proxyA.GetVertex(b.indexA[0]);m=this.m_proxyA.GetVertex(b.indexA[1]);x=this.m_proxyB.GetVertex(b.indexB[0]);C=this.m_proxyB.GetVertex(b.indexB[1]);w.MulX(f,v);v=w.MulMV(f.R,w.SubtractVV(m,e));w.MulX(r,t);J=w.MulMV(r.R,w.SubtractVV(C,x));r=v.x*v.x+v.y*v.y;t=J.x*J.x+J.y*J.y;b=w.SubtractVV(J,v);f=v.x*b.x+v.y*b.y;b=J.x*b.x+J.y*b.y;v=v.x*J.x+v.y*J.y;T=r*t-v*v;J=0;if(T!=0)J=w.Clamp((v*b-f*t)/T,0,1);if((v*J+b)/t<0)J=w.Clamp((v-f)/r,0,1);v=new p;v.x=e.x+J*(m.x-e.x);v.y=e.y+J*(m.y-
+e.y);t=new p;t.x=x.x+J*(C.x-x.x);t.y=x.y+J*(C.y-x.y);if(J==0||J==1){this.m_type=d.e_faceB;this.m_axis=w.CrossVF(w.SubtractVV(C,x),1);this.m_axis.Normalize();this.m_localPoint=t}else{this.m_type=d.e_faceA;this.m_axis=w.CrossVF(w.SubtractVV(m,e),1);this.m_localPoint=v}}J<0&&this.m_axis.NegativeSelf()}};d.prototype.Evaluate=function(b,e){var f,m,r=0;switch(this.m_type){case d.e_points:f=w.MulTMV(b.R,this.m_axis);m=w.MulTMV(e.R,this.m_axis.GetNegative());f=this.m_proxyA.GetSupportVertex(f);m=this.m_proxyB.GetSupportVertex(m);
+f=w.MulX(b,f);m=w.MulX(e,m);return r=(m.x-f.x)*this.m_axis.x+(m.y-f.y)*this.m_axis.y;case d.e_faceA:r=w.MulMV(b.R,this.m_axis);f=w.MulX(b,this.m_localPoint);m=w.MulTMV(e.R,r.GetNegative());m=this.m_proxyB.GetSupportVertex(m);m=w.MulX(e,m);return r=(m.x-f.x)*r.x+(m.y-f.y)*r.y;case d.e_faceB:r=w.MulMV(e.R,this.m_axis);m=w.MulX(e,this.m_localPoint);f=w.MulTMV(b.R,r.GetNegative());f=this.m_proxyA.GetSupportVertex(f);f=w.MulX(b,f);return r=(f.x-m.x)*r.x+(f.y-m.y)*r.y;default:y.b2Assert(false);return 0}};
+Box2D.postDefs.push(function(){Box2D.Collision.b2SeparationFunction.e_points=1;Box2D.Collision.b2SeparationFunction.e_faceA=2;Box2D.Collision.b2SeparationFunction.e_faceB=4});h.b2Simplex=function(){this.m_v1=new j;this.m_v2=new j;this.m_v3=new j;this.m_vertices=new Vector(3)};h.prototype.b2Simplex=function(){this.m_vertices[0]=this.m_v1;this.m_vertices[1]=this.m_v2;this.m_vertices[2]=this.m_v3};h.prototype.ReadCache=function(b,e,f,m,r){y.b2Assert(0<=b.count&&b.count<=3);var s,v;this.m_count=b.count;
+for(var t=this.m_vertices,x=0;x<this.m_count;x++){var C=t[x];C.indexA=b.indexA[x];C.indexB=b.indexB[x];s=e.GetVertex(C.indexA);v=m.GetVertex(C.indexB);C.wA=w.MulX(f,s);C.wB=w.MulX(r,v);C.w=w.SubtractVV(C.wB,C.wA);C.a=0}if(this.m_count>1){b=b.metric;s=this.GetMetric();if(s<0.5*b||2*b<s||s<Number.MIN_VALUE)this.m_count=0}if(this.m_count==0){C=t[0];C.indexA=0;C.indexB=0;s=e.GetVertex(0);v=m.GetVertex(0);C.wA=w.MulX(f,s);C.wB=w.MulX(r,v);C.w=w.SubtractVV(C.wB,C.wA);this.m_count=1}};h.prototype.WriteCache=
+function(b){b.metric=this.GetMetric();b.count=Box2D.parseUInt(this.m_count);for(var e=this.m_vertices,f=0;f<this.m_count;f++){b.indexA[f]=Box2D.parseUInt(e[f].indexA);b.indexB[f]=Box2D.parseUInt(e[f].indexB)}};h.prototype.GetSearchDirection=function(){switch(this.m_count){case 1:return this.m_v1.w.GetNegative();case 2:var b=w.SubtractVV(this.m_v2.w,this.m_v1.w);return w.CrossVV(b,this.m_v1.w.GetNegative())>0?w.CrossFV(1,b):w.CrossVF(b,1);default:y.b2Assert(false);return new p}};h.prototype.GetClosestPoint=
+function(){switch(this.m_count){case 0:y.b2Assert(false);return new p;case 1:return this.m_v1.w;case 2:return new p(this.m_v1.a*this.m_v1.w.x+this.m_v2.a*this.m_v2.w.x,this.m_v1.a*this.m_v1.w.y+this.m_v2.a*this.m_v2.w.y);default:y.b2Assert(false);return new p}};h.prototype.GetWitnessPoints=function(b,e){switch(this.m_count){case 0:y.b2Assert(false);break;case 1:b.SetV(this.m_v1.wA);e.SetV(this.m_v1.wB);break;case 2:b.x=this.m_v1.a*this.m_v1.wA.x+this.m_v2.a*this.m_v2.wA.x;b.y=this.m_v1.a*this.m_v1.wA.y+
+this.m_v2.a*this.m_v2.wA.y;e.x=this.m_v1.a*this.m_v1.wB.x+this.m_v2.a*this.m_v2.wB.x;e.y=this.m_v1.a*this.m_v1.wB.y+this.m_v2.a*this.m_v2.wB.y;break;case 3:e.x=b.x=this.m_v1.a*this.m_v1.wA.x+this.m_v2.a*this.m_v2.wA.x+this.m_v3.a*this.m_v3.wA.x;e.y=b.y=this.m_v1.a*this.m_v1.wA.y+this.m_v2.a*this.m_v2.wA.y+this.m_v3.a*this.m_v3.wA.y;break;default:y.b2Assert(false)}};h.prototype.GetMetric=function(){switch(this.m_count){case 0:y.b2Assert(false);return 0;case 1:return 0;case 2:return w.SubtractVV(this.m_v1.w,
+this.m_v2.w).Length();case 3:return w.CrossVV(w.SubtractVV(this.m_v2.w,this.m_v1.w),w.SubtractVV(this.m_v3.w,this.m_v1.w));default:y.b2Assert(false);return 0}};h.prototype.Solve2=function(){var b=this.m_v1.w,e=this.m_v2.w,f=w.SubtractVV(e,b);b=-(b.x*f.x+b.y*f.y);if(b<=0)this.m_count=this.m_v1.a=1;else{e=e.x*f.x+e.y*f.y;if(e<=0){this.m_count=this.m_v2.a=1;this.m_v1.Set(this.m_v2)}else{f=1/(e+b);this.m_v1.a=e*f;this.m_v2.a=b*f;this.m_count=2}}};h.prototype.Solve3=function(){var b=this.m_v1.w,e=this.m_v2.w,
+f=this.m_v3.w,m=w.SubtractVV(e,b),r=w.Dot(b,m),s=w.Dot(e,m);r=-r;var v=w.SubtractVV(f,b),t=w.Dot(b,v),x=w.Dot(f,v);t=-t;var C=w.SubtractVV(f,e),J=w.Dot(e,C);C=w.Dot(f,C);J=-J;v=w.CrossVV(m,v);m=v*w.CrossVV(e,f);f=v*w.CrossVV(f,b);b=v*w.CrossVV(b,e);if(r<=0&&t<=0)this.m_count=this.m_v1.a=1;else if(s>0&&r>0&&b<=0){x=1/(s+r);this.m_v1.a=s*x;this.m_v2.a=r*x;this.m_count=2}else if(x>0&&t>0&&f<=0){s=1/(x+t);this.m_v1.a=x*s;this.m_v3.a=t*s;this.m_count=2;this.m_v2.Set(this.m_v3)}else if(s<=0&&J<=0){this.m_count=
+this.m_v2.a=1;this.m_v1.Set(this.m_v2)}else if(x<=0&&C<=0){this.m_count=this.m_v3.a=1;this.m_v1.Set(this.m_v3)}else if(C>0&&J>0&&m<=0){s=1/(C+J);this.m_v2.a=C*s;this.m_v3.a=J*s;this.m_count=2;this.m_v1.Set(this.m_v3)}else{s=1/(m+f+b);this.m_v1.a=m*s;this.m_v2.a=f*s;this.m_v3.a=b*s;this.m_count=3}};l.b2SimplexCache=function(){this.indexA=new Vector_a2j_Number(3);this.indexB=new Vector_a2j_Number(3)};j.b2SimplexVertex=function(){};j.prototype.Set=function(b){this.wA.SetV(b.wA);this.wB.SetV(b.wB);this.w.SetV(b.w);
+this.a=b.a;this.indexA=b.indexA;this.indexB=b.indexB};o.b2TimeOfImpact=function(){};o.TimeOfImpact=function(b){++o.b2_toiCalls;var e=b.proxyA,f=b.proxyB,m=b.sweepA,r=b.sweepB;y.b2Assert(m.t0==r.t0);y.b2Assert(1-m.t0>Number.MIN_VALUE);var s=e.m_radius+f.m_radius;b=b.tolerance;var v=0,t=0,x=0;o.s_cache.count=0;for(o.s_distanceInput.useRadii=false;;){m.GetTransform(o.s_xfA,v);r.GetTransform(o.s_xfB,v);o.s_distanceInput.proxyA=e;o.s_distanceInput.proxyB=f;o.s_distanceInput.transformA=o.s_xfA;o.s_distanceInput.transformB=
+o.s_xfB;W.Distance(o.s_distanceOutput,o.s_cache,o.s_distanceInput);if(o.s_distanceOutput.distance<=0){v=1;break}o.s_fcn.Initialize(o.s_cache,e,o.s_xfA,f,o.s_xfB);var C=o.s_fcn.Evaluate(o.s_xfA,o.s_xfB);if(C<=0){v=1;break}if(t==0)x=C>s?w.Max(s-b,0.75*s):w.Max(C-b,0.02*s);if(C-x<0.5*b){if(t==0){v=1;break}break}var J=v,T=v,P=1;C=C;m.GetTransform(o.s_xfA,P);r.GetTransform(o.s_xfB,P);var X=o.s_fcn.Evaluate(o.s_xfA,o.s_xfB);if(X>=x){v=1;break}for(var $=0;;){var ba=0;ba=$&1?T+(x-C)*(P-T)/(X-C):0.5*(T+P);
+m.GetTransform(o.s_xfA,ba);r.GetTransform(o.s_xfB,ba);var ca=o.s_fcn.Evaluate(o.s_xfA,o.s_xfB);if(w.Abs(ca-x)<0.025*b){J=ba;break}if(ca>x){T=ba;C=ca}else{P=ba;X=ca}++$;++o.b2_toiRootIters;if($==50)break}o.b2_toiMaxRootIters=w.Max(o.b2_toiMaxRootIters,$);if(J<(1+100*Number.MIN_VALUE)*v)break;v=J;t++;++o.b2_toiIters;if(t==1E3)break}o.b2_toiMaxIters=w.Max(o.b2_toiMaxIters,t);return v};Box2D.postDefs.push(function(){Box2D.Collision.b2TimeOfImpact.b2_toiCalls=0;Box2D.Collision.b2TimeOfImpact.b2_toiIters=
+0;Box2D.Collision.b2TimeOfImpact.b2_toiMaxIters=0;Box2D.Collision.b2TimeOfImpact.b2_toiRootIters=0;Box2D.Collision.b2TimeOfImpact.b2_toiMaxRootIters=0;Box2D.Collision.b2TimeOfImpact.s_cache=new l;Box2D.Collision.b2TimeOfImpact.s_distanceInput=new Y;Box2D.Collision.b2TimeOfImpact.s_xfA=new U;Box2D.Collision.b2TimeOfImpact.s_xfB=new U;Box2D.Collision.b2TimeOfImpact.s_fcn=new d;Box2D.Collision.b2TimeOfImpact.s_distanceOutput=new k});q.b2TOIInput=function(){this.proxyA=new z;this.proxyB=new z;this.sweepA=
+new A;this.sweepB=new A};n.b2WorldManifold=function(){this.m_normal=new p};n.prototype.b2WorldManifold=function(){this.m_points=new Vector(y.b2_maxManifoldPoints);for(var b=0;b<y.b2_maxManifoldPoints;b++)this.m_points[b]=new p};n.prototype.Initialize=function(b,e,f,m,r){if(f===undefined)f=0;if(r===undefined)r=0;if(b.m_pointCount!=0){var s=0,v,t,x=0,C=0,J=0,T=0,P=0;v=0;switch(b.m_type){case E.e_circles:t=e.R;v=b.m_localPoint;s=e.position.x+t.col1.x*v.x+t.col2.x*v.y;e=e.position.y+t.col1.y*v.x+t.col2.y*
+v.y;t=m.R;v=b.m_points[0].m_localPoint;b=m.position.x+t.col1.x*v.x+t.col2.x*v.y;m=m.position.y+t.col1.y*v.x+t.col2.y*v.y;v=b-s;t=m-e;x=v*v+t*t;if(x>Number.MIN_VALUE*Number.MIN_VALUE){x=Math.sqrt(x);this.m_normal.x=v/x;this.m_normal.y=t/x}else{this.m_normal.x=1;this.m_normal.y=0}v=e+f*this.m_normal.y;m=m-r*this.m_normal.y;this.m_points[0].x=0.5*(s+f*this.m_normal.x+(b-r*this.m_normal.x));this.m_points[0].y=0.5*(v+m);break;case E.e_faceA:t=e.R;v=b.m_localPlaneNormal;x=t.col1.x*v.x+t.col2.x*v.y;C=t.col1.y*
+v.x+t.col2.y*v.y;t=e.R;v=b.m_localPoint;J=e.position.x+t.col1.x*v.x+t.col2.x*v.y;T=e.position.y+t.col1.y*v.x+t.col2.y*v.y;this.m_normal.x=x;this.m_normal.y=C;for(s=0;s<b.m_pointCount;s++){t=m.R;v=b.m_points[s].m_localPoint;P=m.position.x+t.col1.x*v.x+t.col2.x*v.y;v=m.position.y+t.col1.y*v.x+t.col2.y*v.y;this.m_points[s].x=P+0.5*(f-(P-J)*x-(v-T)*C-r)*x;this.m_points[s].y=v+0.5*(f-(P-J)*x-(v-T)*C-r)*C}break;case E.e_faceB:t=m.R;v=b.m_localPlaneNormal;x=t.col1.x*v.x+t.col2.x*v.y;C=t.col1.y*v.x+t.col2.y*
+v.y;t=m.R;v=b.m_localPoint;J=m.position.x+t.col1.x*v.x+t.col2.x*v.y;T=m.position.y+t.col1.y*v.x+t.col2.y*v.y;this.m_normal.x=-x;this.m_normal.y=-C;for(s=0;s<b.m_pointCount;s++){t=e.R;v=b.m_points[s].m_localPoint;P=e.position.x+t.col1.x*v.x+t.col2.x*v.y;v=e.position.y+t.col1.y*v.x+t.col2.y*v.y;this.m_points[s].x=P+0.5*(r-(P-J)*x-(v-T)*C-f)*x;this.m_points[s].y=v+0.5*(r-(P-J)*x-(v-T)*C-f)*C}}}};a.ClipVertex=function(){this.v=new p;this.id=new L};a.prototype.Set=function(b){this.v.SetV(b.v);this.id.Set(b.id)};
+c.Features=function(){};Object.defineProperty(c.prototype,"referenceEdge",{enumerable:false,configurable:true,get:function(){return this._referenceEdge}});Object.defineProperty(c.prototype,"referenceEdge",{enumerable:false,configurable:true,set:function(b){if(b===undefined)b=0;this._referenceEdge=b;this._m_id._key=this._m_id._key&4294967040|this._referenceEdge&255}});Object.defineProperty(c.prototype,"incidentEdge",{enumerable:false,configurable:true,get:function(){return this._incidentEdge}});Object.defineProperty(c.prototype,
+"incidentEdge",{enumerable:false,configurable:true,set:function(b){if(b===undefined)b=0;this._incidentEdge=b;this._m_id._key=this._m_id._key&4294902015|this._incidentEdge<<8&65280}});Object.defineProperty(c.prototype,"incidentVertex",{enumerable:false,configurable:true,get:function(){return this._incidentVertex}});Object.defineProperty(c.prototype,"incidentVertex",{enumerable:false,configurable:true,set:function(b){if(b===undefined)b=0;this._incidentVertex=b;this._m_id._key=this._m_id._key&4278255615|
+this._incidentVertex<<16&16711680}});Object.defineProperty(c.prototype,"flip",{enumerable:false,configurable:true,get:function(){return this._flip}});Object.defineProperty(c.prototype,"flip",{enumerable:false,configurable:true,set:function(b){if(b===undefined)b=0;this._flip=b;this._m_id._key=this._m_id._key&16777215|this._flip<<24&4278190080}})})();
+(function(){var F=Box2D.Common.b2Settings,G=Box2D.Collision.Shapes.b2CircleShape,K=Box2D.Collision.Shapes.b2EdgeChainDef,y=Box2D.Collision.Shapes.b2EdgeShape,w=Box2D.Collision.Shapes.b2MassData,A=Box2D.Collision.Shapes.b2PolygonShape,U=Box2D.Collision.Shapes.b2Shape,p=Box2D.Common.Math.b2Mat22,B=Box2D.Common.Math.b2Math,Q=Box2D.Common.Math.b2Transform,V=Box2D.Common.Math.b2Vec2,M=Box2D.Collision.b2Distance,L=Box2D.Collision.b2DistanceInput,I=Box2D.Collision.b2DistanceOutput,W=Box2D.Collision.b2DistanceProxy,
+Y=Box2D.Collision.b2SimplexCache;Box2D.inherit(G,Box2D.Collision.Shapes.b2Shape);G.prototype.__super=Box2D.Collision.Shapes.b2Shape.prototype;G.b2CircleShape=function(){Box2D.Collision.Shapes.b2Shape.b2Shape.apply(this,arguments);this.m_p=new V};G.prototype.Copy=function(){var k=new G;k.Set(this);return k};G.prototype.Set=function(k){this.__super.Set.call(this,k);if(Box2D.is(k,G))this.m_p.SetV((k instanceof G?k:null).m_p)};G.prototype.TestPoint=function(k,z){var u=k.R,D=k.position.x+(u.col1.x*this.m_p.x+
+u.col2.x*this.m_p.y);u=k.position.y+(u.col1.y*this.m_p.x+u.col2.y*this.m_p.y);D=z.x-D;u=z.y-u;return D*D+u*u<=this.m_radius*this.m_radius};G.prototype.RayCast=function(k,z,u){var D=u.R,H=z.p1.x-(u.position.x+(D.col1.x*this.m_p.x+D.col2.x*this.m_p.y));u=z.p1.y-(u.position.y+(D.col1.y*this.m_p.x+D.col2.y*this.m_p.y));D=z.p2.x-z.p1.x;var O=z.p2.y-z.p1.y,E=H*D+u*O,R=D*D+O*O,N=E*E-R*(H*H+u*u-this.m_radius*this.m_radius);if(N<0||R<Number.MIN_VALUE)return false;E=-(E+Math.sqrt(N));if(0<=E&&E<=z.maxFraction*
+R){E/=R;k.fraction=E;k.normal.x=H+E*D;k.normal.y=u+E*O;k.normal.Normalize();return true}return false};G.prototype.ComputeAABB=function(k,z){var u=z.R,D=z.position.x+(u.col1.x*this.m_p.x+u.col2.x*this.m_p.y);u=z.position.y+(u.col1.y*this.m_p.x+u.col2.y*this.m_p.y);k.lowerBound.Set(D-this.m_radius,u-this.m_radius);k.upperBound.Set(D+this.m_radius,u+this.m_radius)};G.prototype.ComputeMass=function(k,z){if(z===undefined)z=0;k.mass=z*F.b2_pi*this.m_radius*this.m_radius;k.center.SetV(this.m_p);k.I=k.mass*
+(0.5*this.m_radius*this.m_radius+(this.m_p.x*this.m_p.x+this.m_p.y*this.m_p.y))};G.prototype.ComputeSubmergedArea=function(k,z,u,D){if(z===undefined)z=0;u=B.MulX(u,this.m_p);var H=-(B.Dot(k,u)-z);if(H<-this.m_radius+Number.MIN_VALUE)return 0;if(H>this.m_radius){D.SetV(u);return Math.PI*this.m_radius*this.m_radius}z=this.m_radius*this.m_radius;var O=H*H;H=z*(Math.asin(H/this.m_radius)+Math.PI/2)+H*Math.sqrt(z-O);z=-2/3*Math.pow(z-O,1.5)/H;D.x=u.x+k.x*z;D.y=u.y+k.y*z;return H};G.prototype.GetLocalPosition=
+function(){return this.m_p};G.prototype.SetLocalPosition=function(k){this.m_p.SetV(k)};G.prototype.GetRadius=function(){return this.m_radius};G.prototype.SetRadius=function(k){if(k===undefined)k=0;this.m_radius=k};G.prototype.b2CircleShape=function(k){if(k===undefined)k=0;this.__super.b2Shape.call(this);this.m_type=U.e_circleShape;this.m_radius=k};K.b2EdgeChainDef=function(){};K.prototype.b2EdgeChainDef=function(){this.vertexCount=0;this.isALoop=true;this.vertices=[]};Box2D.inherit(y,Box2D.Collision.Shapes.b2Shape);
+y.prototype.__super=Box2D.Collision.Shapes.b2Shape.prototype;y.b2EdgeShape=function(){Box2D.Collision.Shapes.b2Shape.b2Shape.apply(this,arguments);this.s_supportVec=new V;this.m_v1=new V;this.m_v2=new V;this.m_coreV1=new V;this.m_coreV2=new V;this.m_normal=new V;this.m_direction=new V;this.m_cornerDir1=new V;this.m_cornerDir2=new V};y.prototype.TestPoint=function(){return false};y.prototype.RayCast=function(k,z,u){var D,H=z.p2.x-z.p1.x,O=z.p2.y-z.p1.y;D=u.R;var E=u.position.x+(D.col1.x*this.m_v1.x+
+D.col2.x*this.m_v1.y),R=u.position.y+(D.col1.y*this.m_v1.x+D.col2.y*this.m_v1.y),N=u.position.y+(D.col1.y*this.m_v2.x+D.col2.y*this.m_v2.y)-R;u=-(u.position.x+(D.col1.x*this.m_v2.x+D.col2.x*this.m_v2.y)-E);D=100*Number.MIN_VALUE;var S=-(H*N+O*u);if(S>D){E=z.p1.x-E;var aa=z.p1.y-R;R=E*N+aa*u;if(0<=R&&R<=z.maxFraction*S){z=-H*aa+O*E;if(-D*S<=z&&z<=S*(1+D)){R/=S;k.fraction=R;z=Math.sqrt(N*N+u*u);k.normal.x=N/z;k.normal.y=u/z;return true}}}return false};y.prototype.ComputeAABB=function(k,z){var u=z.R,
+D=z.position.x+(u.col1.x*this.m_v1.x+u.col2.x*this.m_v1.y),H=z.position.y+(u.col1.y*this.m_v1.x+u.col2.y*this.m_v1.y),O=z.position.x+(u.col1.x*this.m_v2.x+u.col2.x*this.m_v2.y);u=z.position.y+(u.col1.y*this.m_v2.x+u.col2.y*this.m_v2.y);if(D<O){k.lowerBound.x=D;k.upperBound.x=O}else{k.lowerBound.x=O;k.upperBound.x=D}if(H<u){k.lowerBound.y=H;k.upperBound.y=u}else{k.lowerBound.y=u;k.upperBound.y=H}};y.prototype.ComputeMass=function(k){k.mass=0;k.center.SetV(this.m_v1);k.I=0};y.prototype.ComputeSubmergedArea=
+function(k,z,u,D){if(z===undefined)z=0;var H=new V(k.x*z,k.y*z),O=B.MulX(u,this.m_v1);u=B.MulX(u,this.m_v2);var E=B.Dot(k,O)-z;k=B.Dot(k,u)-z;if(E>0)if(k>0)return 0;else{O.x=-k/(E-k)*O.x+E/(E-k)*u.x;O.y=-k/(E-k)*O.y+E/(E-k)*u.y}else if(k>0){u.x=-k/(E-k)*O.x+E/(E-k)*u.x;u.y=-k/(E-k)*O.y+E/(E-k)*u.y}D.x=(H.x+O.x+u.x)/3;D.y=(H.y+O.y+u.y)/3;return 0.5*((O.x-H.x)*(u.y-H.y)-(O.y-H.y)*(u.x-H.x))};y.prototype.GetLength=function(){return this.m_length};y.prototype.GetVertex1=function(){return this.m_v1};y.prototype.GetVertex2=
+function(){return this.m_v2};y.prototype.GetCoreVertex1=function(){return this.m_coreV1};y.prototype.GetCoreVertex2=function(){return this.m_coreV2};y.prototype.GetNormalVector=function(){return this.m_normal};y.prototype.GetDirectionVector=function(){return this.m_direction};y.prototype.GetCorner1Vector=function(){return this.m_cornerDir1};y.prototype.GetCorner2Vector=function(){return this.m_cornerDir2};y.prototype.Corner1IsConvex=function(){return this.m_cornerConvex1};y.prototype.Corner2IsConvex=
+function(){return this.m_cornerConvex2};y.prototype.GetFirstVertex=function(k){var z=k.R;return new V(k.position.x+(z.col1.x*this.m_coreV1.x+z.col2.x*this.m_coreV1.y),k.position.y+(z.col1.y*this.m_coreV1.x+z.col2.y*this.m_coreV1.y))};y.prototype.GetNextEdge=function(){return this.m_nextEdge};y.prototype.GetPrevEdge=function(){return this.m_prevEdge};y.prototype.Support=function(k,z,u){if(z===undefined)z=0;if(u===undefined)u=0;var D=k.R,H=k.position.x+(D.col1.x*this.m_coreV1.x+D.col2.x*this.m_coreV1.y),
+O=k.position.y+(D.col1.y*this.m_coreV1.x+D.col2.y*this.m_coreV1.y),E=k.position.x+(D.col1.x*this.m_coreV2.x+D.col2.x*this.m_coreV2.y);k=k.position.y+(D.col1.y*this.m_coreV2.x+D.col2.y*this.m_coreV2.y);if(H*z+O*u>E*z+k*u){this.s_supportVec.x=H;this.s_supportVec.y=O}else{this.s_supportVec.x=E;this.s_supportVec.y=k}return this.s_supportVec};y.prototype.b2EdgeShape=function(k,z){this.__super.b2Shape.call(this);this.m_type=U.e_edgeShape;this.m_nextEdge=this.m_prevEdge=null;this.m_v1=k;this.m_v2=z;this.m_direction.Set(this.m_v2.x-
+this.m_v1.x,this.m_v2.y-this.m_v1.y);this.m_length=this.m_direction.Normalize();this.m_normal.Set(this.m_direction.y,-this.m_direction.x);this.m_coreV1.Set(-F.b2_toiSlop*(this.m_normal.x-this.m_direction.x)+this.m_v1.x,-F.b2_toiSlop*(this.m_normal.y-this.m_direction.y)+this.m_v1.y);this.m_coreV2.Set(-F.b2_toiSlop*(this.m_normal.x+this.m_direction.x)+this.m_v2.x,-F.b2_toiSlop*(this.m_normal.y+this.m_direction.y)+this.m_v2.y);this.m_cornerDir1=this.m_normal;this.m_cornerDir2.Set(-this.m_normal.x,-this.m_normal.y)};
+y.prototype.SetPrevEdge=function(k,z,u,D){this.m_prevEdge=k;this.m_coreV1=z;this.m_cornerDir1=u;this.m_cornerConvex1=D};y.prototype.SetNextEdge=function(k,z,u,D){this.m_nextEdge=k;this.m_coreV2=z;this.m_cornerDir2=u;this.m_cornerConvex2=D};w.b2MassData=function(){this.mass=0;this.center=new V(0,0);this.I=0};Box2D.inherit(A,Box2D.Collision.Shapes.b2Shape);A.prototype.__super=Box2D.Collision.Shapes.b2Shape.prototype;A.b2PolygonShape=function(){Box2D.Collision.Shapes.b2Shape.b2Shape.apply(this,arguments)};
+A.prototype.Copy=function(){var k=new A;k.Set(this);return k};A.prototype.Set=function(k){this.__super.Set.call(this,k);if(Box2D.is(k,A)){k=k instanceof A?k:null;this.m_centroid.SetV(k.m_centroid);this.m_vertexCount=k.m_vertexCount;this.Reserve(this.m_vertexCount);for(var z=0;z<this.m_vertexCount;z++){this.m_vertices[z].SetV(k.m_vertices[z]);this.m_normals[z].SetV(k.m_normals[z])}}};A.prototype.SetAsArray=function(k,z){if(z===undefined)z=0;var u=new Vector,D=0,H;for(D=0;D<k.length;++D){H=k[D];u.push(H)}this.SetAsVector(u,
+z)};A.AsArray=function(k,z){if(z===undefined)z=0;var u=new A;u.SetAsArray(k,z);return u};A.prototype.SetAsVector=function(k,z){if(z===undefined)z=0;if(z==0)z=k.length;F.b2Assert(2<=z);this.m_vertexCount=z;this.Reserve(z);var u=0;for(u=0;u<this.m_vertexCount;u++)this.m_vertices[u].SetV(k[u]);for(u=0;u<this.m_vertexCount;++u){var D=parseInt(u),H=parseInt(u+1<this.m_vertexCount?u+1:0);D=B.SubtractVV(this.m_vertices[H],this.m_vertices[D]);F.b2Assert(D.LengthSquared()>Number.MIN_VALUE);this.m_normals[u].SetV(B.CrossVF(D,
+1));this.m_normals[u].Normalize()}this.m_centroid=A.ComputeCentroid(this.m_vertices,this.m_vertexCount)};A.AsVector=function(k,z){if(z===undefined)z=0;var u=new A;u.SetAsVector(k,z);return u};A.prototype.SetAsBox=function(k,z){if(k===undefined)k=0;if(z===undefined)z=0;this.m_vertexCount=4;this.Reserve(4);this.m_vertices[0].Set(-k,-z);this.m_vertices[1].Set(k,-z);this.m_vertices[2].Set(k,z);this.m_vertices[3].Set(-k,z);this.m_normals[0].Set(0,-1);this.m_normals[1].Set(1,0);this.m_normals[2].Set(0,
+1);this.m_normals[3].Set(-1,0);this.m_centroid.SetZero()};A.AsBox=function(k,z){if(k===undefined)k=0;if(z===undefined)z=0;var u=new A;u.SetAsBox(k,z);return u};A.prototype.SetAsOrientedBox=function(k,z,u,D){if(k===undefined)k=0;if(z===undefined)z=0;if(u===undefined)u=null;if(D===undefined)D=0;this.m_vertexCount=4;this.Reserve(4);this.m_vertices[0].Set(-k,-z);this.m_vertices[1].Set(k,-z);this.m_vertices[2].Set(k,z);this.m_vertices[3].Set(-k,z);this.m_normals[0].Set(0,-1);this.m_normals[1].Set(1,0);
+this.m_normals[2].Set(0,1);this.m_normals[3].Set(-1,0);this.m_centroid=u;k=new Q;k.position=u;k.R.Set(D);for(u=0;u<this.m_vertexCount;++u){this.m_vertices[u]=B.MulX(k,this.m_vertices[u]);this.m_normals[u]=B.MulMV(k.R,this.m_normals[u])}};A.AsOrientedBox=function(k,z,u,D){if(k===undefined)k=0;if(z===undefined)z=0;if(u===undefined)u=null;if(D===undefined)D=0;var H=new A;H.SetAsOrientedBox(k,z,u,D);return H};A.prototype.SetAsEdge=function(k,z){this.m_vertexCount=2;this.Reserve(2);this.m_vertices[0].SetV(k);
+this.m_vertices[1].SetV(z);this.m_centroid.x=0.5*(k.x+z.x);this.m_centroid.y=0.5*(k.y+z.y);this.m_normals[0]=B.CrossVF(B.SubtractVV(z,k),1);this.m_normals[0].Normalize();this.m_normals[1].x=-this.m_normals[0].x;this.m_normals[1].y=-this.m_normals[0].y};A.AsEdge=function(k,z){var u=new A;u.SetAsEdge(k,z);return u};A.prototype.TestPoint=function(k,z){var u;u=k.R;for(var D=z.x-k.position.x,H=z.y-k.position.y,O=D*u.col1.x+H*u.col1.y,E=D*u.col2.x+H*u.col2.y,R=0;R<this.m_vertexCount;++R){u=this.m_vertices[R];
+D=O-u.x;H=E-u.y;u=this.m_normals[R];if(u.x*D+u.y*H>0)return false}return true};A.prototype.RayCast=function(k,z,u){var D=0,H=z.maxFraction,O=0,E=0,R,N;O=z.p1.x-u.position.x;E=z.p1.y-u.position.y;R=u.R;var S=O*R.col1.x+E*R.col1.y,aa=O*R.col2.x+E*R.col2.y;O=z.p2.x-u.position.x;E=z.p2.y-u.position.y;R=u.R;z=O*R.col1.x+E*R.col1.y-S;R=O*R.col2.x+E*R.col2.y-aa;for(var Z=parseInt(-1),d=0;d<this.m_vertexCount;++d){N=this.m_vertices[d];O=N.x-S;E=N.y-aa;N=this.m_normals[d];O=N.x*O+N.y*E;E=N.x*z+N.y*R;if(E==
+0){if(O<0)return false}else if(E<0&&O<D*E){D=O/E;Z=d}else if(E>0&&O<H*E)H=O/E;if(H<D-Number.MIN_VALUE)return false}if(Z>=0){k.fraction=D;R=u.R;N=this.m_normals[Z];k.normal.x=R.col1.x*N.x+R.col2.x*N.y;k.normal.y=R.col1.y*N.x+R.col2.y*N.y;return true}return false};A.prototype.ComputeAABB=function(k,z){for(var u=z.R,D=this.m_vertices[0],H=z.position.x+(u.col1.x*D.x+u.col2.x*D.y),O=z.position.y+(u.col1.y*D.x+u.col2.y*D.y),E=H,R=O,N=1;N<this.m_vertexCount;++N){D=this.m_vertices[N];var S=z.position.x+(u.col1.x*
+D.x+u.col2.x*D.y);D=z.position.y+(u.col1.y*D.x+u.col2.y*D.y);H=H<S?H:S;O=O<D?O:D;E=E>S?E:S;R=R>D?R:D}k.lowerBound.x=H-this.m_radius;k.lowerBound.y=O-this.m_radius;k.upperBound.x=E+this.m_radius;k.upperBound.y=R+this.m_radius};A.prototype.ComputeMass=function(k,z){if(z===undefined)z=0;if(this.m_vertexCount==2){k.center.x=0.5*(this.m_vertices[0].x+this.m_vertices[1].x);k.center.y=0.5*(this.m_vertices[0].y+this.m_vertices[1].y);k.mass=0;k.I=0}else{for(var u=0,D=0,H=0,O=0,E=1/3,R=0;R<this.m_vertexCount;++R){var N=
+this.m_vertices[R],S=R+1<this.m_vertexCount?this.m_vertices[parseInt(R+1)]:this.m_vertices[0],aa=N.x-0,Z=N.y-0,d=S.x-0,h=S.y-0,l=aa*h-Z*d,j=0.5*l;H+=j;u+=j*E*(0+N.x+S.x);D+=j*E*(0+N.y+S.y);N=aa;Z=Z;d=d;h=h;O+=l*(E*(0.25*(N*N+d*N+d*d)+(0*N+0*d))+0+(E*(0.25*(Z*Z+h*Z+h*h)+(0*Z+0*h))+0))}k.mass=z*H;u*=1/H;D*=1/H;k.center.Set(u,D);k.I=z*O}};A.prototype.ComputeSubmergedArea=function(k,z,u,D){if(z===undefined)z=0;var H=B.MulTMV(u.R,k),O=z-B.Dot(k,u.position),E=new Vector_a2j_Number,R=0,N=parseInt(-1);z=
+parseInt(-1);var S=false;for(k=k=0;k<this.m_vertexCount;++k){E[k]=B.Dot(H,this.m_vertices[k])-O;var aa=E[k]<-Number.MIN_VALUE;if(k>0)if(aa){if(!S){N=k-1;R++}}else if(S){z=k-1;R++}S=aa}switch(R){case 0:if(S){k=new w;this.ComputeMass(k,1);D.SetV(B.MulX(u,k.center));return k.mass}else return 0;case 1:if(N==-1)N=this.m_vertexCount-1;else z=this.m_vertexCount-1}k=parseInt((N+1)%this.m_vertexCount);H=parseInt((z+1)%this.m_vertexCount);O=(0-E[N])/(E[k]-E[N]);E=(0-E[z])/(E[H]-E[z]);N=new V(this.m_vertices[N].x*
+(1-O)+this.m_vertices[k].x*O,this.m_vertices[N].y*(1-O)+this.m_vertices[k].y*O);z=new V(this.m_vertices[z].x*(1-E)+this.m_vertices[H].x*E,this.m_vertices[z].y*(1-E)+this.m_vertices[H].y*E);E=0;O=new V;R=this.m_vertices[k];for(k=k;k!=H;){k=(k+1)%this.m_vertexCount;S=k==H?z:this.m_vertices[k];aa=0.5*((R.x-N.x)*(S.y-N.y)-(R.y-N.y)*(S.x-N.x));E+=aa;O.x+=aa*(N.x+R.x+S.x)/3;O.y+=aa*(N.y+R.y+S.y)/3;R=S}O.Multiply(1/E);D.SetV(B.MulX(u,O));return E};A.prototype.GetVertexCount=function(){return this.m_vertexCount};
+A.prototype.GetVertices=function(){return this.m_vertices};A.prototype.GetNormals=function(){return this.m_normals};A.prototype.GetSupport=function(k){for(var z=0,u=this.m_vertices[0].x*k.x+this.m_vertices[0].y*k.y,D=1;D<this.m_vertexCount;++D){var H=this.m_vertices[D].x*k.x+this.m_vertices[D].y*k.y;if(H>u){z=D;u=H}}return z};A.prototype.GetSupportVertex=function(k){for(var z=0,u=this.m_vertices[0].x*k.x+this.m_vertices[0].y*k.y,D=1;D<this.m_vertexCount;++D){var H=this.m_vertices[D].x*k.x+this.m_vertices[D].y*
+k.y;if(H>u){z=D;u=H}}return this.m_vertices[z]};A.prototype.Validate=function(){return false};A.prototype.b2PolygonShape=function(){this.__super.b2Shape.call(this);this.m_type=U.e_polygonShape;this.m_centroid=new V;this.m_vertices=new Vector;this.m_normals=new Vector};A.prototype.Reserve=function(k){if(k===undefined)k=0;for(var z=parseInt(this.m_vertices.length);z<k;z++){this.m_vertices[z]=new V;this.m_normals[z]=new V}};A.ComputeCentroid=function(k,z){if(z===undefined)z=0;for(var u=new V,D=0,H=1/
+3,O=0;O<z;++O){var E=k[O],R=O+1<z?k[parseInt(O+1)]:k[0],N=0.5*((E.x-0)*(R.y-0)-(E.y-0)*(R.x-0));D+=N;u.x+=N*H*(0+E.x+R.x);u.y+=N*H*(0+E.y+R.y)}u.x*=1/D;u.y*=1/D;return u};A.ComputeOBB=function(k,z,u){if(u===undefined)u=0;var D=0,H=new Vector(u+1);for(D=0;D<u;++D)H[D]=z[D];H[u]=H[0];z=Number.MAX_VALUE;for(D=1;D<=u;++D){var O=H[parseInt(D-1)],E=H[D].x-O.x,R=H[D].y-O.y,N=Math.sqrt(E*E+R*R);E/=N;R/=N;for(var S=-R,aa=E,Z=N=Number.MAX_VALUE,d=-Number.MAX_VALUE,h=-Number.MAX_VALUE,l=0;l<u;++l){var j=H[l].x-
+O.x,o=H[l].y-O.y,q=E*j+R*o;j=S*j+aa*o;if(q<N)N=q;if(j<Z)Z=j;if(q>d)d=q;if(j>h)h=j}l=(d-N)*(h-Z);if(l<0.95*z){z=l;k.R.col1.x=E;k.R.col1.y=R;k.R.col2.x=S;k.R.col2.y=aa;E=0.5*(N+d);R=0.5*(Z+h);S=k.R;k.center.x=O.x+(S.col1.x*E+S.col2.x*R);k.center.y=O.y+(S.col1.y*E+S.col2.y*R);k.extents.x=0.5*(d-N);k.extents.y=0.5*(h-Z)}}};Box2D.postDefs.push(function(){Box2D.Collision.Shapes.b2PolygonShape.s_mat=new p});U.b2Shape=function(){};U.prototype.Copy=function(){return null};U.prototype.Set=function(k){this.m_radius=
+k.m_radius};U.prototype.GetType=function(){return this.m_type};U.prototype.TestPoint=function(){return false};U.prototype.RayCast=function(){return false};U.prototype.ComputeAABB=function(){};U.prototype.ComputeMass=function(){};U.prototype.ComputeSubmergedArea=function(){return 0};U.TestOverlap=function(k,z,u,D){var H=new L;H.proxyA=new W;H.proxyA.Set(k);H.proxyB=new W;H.proxyB.Set(u);H.transformA=z;H.transformB=D;H.useRadii=true;k=new Y;k.count=0;z=new I;M.Distance(z,k,H);return z.distance<10*Number.MIN_VALUE};
+U.prototype.b2Shape=function(){this.m_type=U.e_unknownShape;this.m_radius=F.b2_linearSlop};Box2D.postDefs.push(function(){Box2D.Collision.Shapes.b2Shape.e_unknownShape=parseInt(-1);Box2D.Collision.Shapes.b2Shape.e_circleShape=0;Box2D.Collision.Shapes.b2Shape.e_polygonShape=1;Box2D.Collision.Shapes.b2Shape.e_edgeShape=2;Box2D.Collision.Shapes.b2Shape.e_shapeTypeCount=3;Box2D.Collision.Shapes.b2Shape.e_hitCollide=1;Box2D.Collision.Shapes.b2Shape.e_missCollide=0;Box2D.Collision.Shapes.b2Shape.e_startsInsideCollide=
+parseInt(-1)})})();
+(function(){var F=Box2D.Common.b2Color,G=Box2D.Common.b2Settings,K=Box2D.Common.Math.b2Math;F.b2Color=function(){this._b=this._g=this._r=0};F.prototype.b2Color=function(y,w,A){if(y===undefined)y=0;if(w===undefined)w=0;if(A===undefined)A=0;this._r=Box2D.parseUInt(255*K.Clamp(y,0,1));this._g=Box2D.parseUInt(255*K.Clamp(w,0,1));this._b=Box2D.parseUInt(255*K.Clamp(A,0,1))};F.prototype.Set=function(y,w,A){if(y===undefined)y=0;if(w===undefined)w=0;if(A===undefined)A=0;this._r=Box2D.parseUInt(255*K.Clamp(y,
+0,1));this._g=Box2D.parseUInt(255*K.Clamp(w,0,1));this._b=Box2D.parseUInt(255*K.Clamp(A,0,1))};Object.defineProperty(F.prototype,"r",{enumerable:false,configurable:true,set:function(y){if(y===undefined)y=0;this._r=Box2D.parseUInt(255*K.Clamp(y,0,1))}});Object.defineProperty(F.prototype,"g",{enumerable:false,configurable:true,set:function(y){if(y===undefined)y=0;this._g=Box2D.parseUInt(255*K.Clamp(y,0,1))}});Object.defineProperty(F.prototype,"b",{enumerable:false,configurable:true,set:function(y){if(y===
+undefined)y=0;this._b=Box2D.parseUInt(255*K.Clamp(y,0,1))}});Object.defineProperty(F.prototype,"color",{enumerable:false,configurable:true,get:function(){return this._r<<16|this._g<<8|this._b}});G.b2Settings=function(){};G.b2MixFriction=function(y,w){if(y===undefined)y=0;if(w===undefined)w=0;return Math.sqrt(y*w)};G.b2MixRestitution=function(y,w){if(y===undefined)y=0;if(w===undefined)w=0;return y>w?y:w};G.b2Assert=function(y){if(!y)throw"Assertion Failed";};Box2D.postDefs.push(function(){Box2D.Common.b2Settings.VERSION=
+"2.1alpha";Box2D.Common.b2Settings.USHRT_MAX=65535;Box2D.Common.b2Settings.b2_pi=Math.PI;Box2D.Common.b2Settings.b2_maxManifoldPoints=2;Box2D.Common.b2Settings.b2_aabbExtension=0.1;Box2D.Common.b2Settings.b2_aabbMultiplier=2;Box2D.Common.b2Settings.b2_polygonRadius=2*G.b2_linearSlop;Box2D.Common.b2Settings.b2_linearSlop=0.0050;Box2D.Common.b2Settings.b2_angularSlop=2/180*G.b2_pi;Box2D.Common.b2Settings.b2_toiSlop=8*G.b2_linearSlop;Box2D.Common.b2Settings.b2_maxTOIContactsPerIsland=32;Box2D.Common.b2Settings.b2_maxTOIJointsPerIsland=
+32;Box2D.Common.b2Settings.b2_velocityThreshold=1;Box2D.Common.b2Settings.b2_maxLinearCorrection=0.2;Box2D.Common.b2Settings.b2_maxAngularCorrection=8/180*G.b2_pi;Box2D.Common.b2Settings.b2_maxTranslation=2;Box2D.Common.b2Settings.b2_maxTranslationSquared=G.b2_maxTranslation*G.b2_maxTranslation;Box2D.Common.b2Settings.b2_maxRotation=0.5*G.b2_pi;Box2D.Common.b2Settings.b2_maxRotationSquared=G.b2_maxRotation*G.b2_maxRotation;Box2D.Common.b2Settings.b2_contactBaumgarte=0.2;Box2D.Common.b2Settings.b2_timeToSleep=
+0.5;Box2D.Common.b2Settings.b2_linearSleepTolerance=0.01;Box2D.Common.b2Settings.b2_angularSleepTolerance=2/180*G.b2_pi})})();
+(function(){var F=Box2D.Common.Math.b2Mat22,G=Box2D.Common.Math.b2Mat33,K=Box2D.Common.Math.b2Math,y=Box2D.Common.Math.b2Sweep,w=Box2D.Common.Math.b2Transform,A=Box2D.Common.Math.b2Vec2,U=Box2D.Common.Math.b2Vec3;F.b2Mat22=function(){this.col1=new A;this.col2=new A};F.prototype.b2Mat22=function(){this.SetIdentity()};F.FromAngle=function(p){if(p===undefined)p=0;var B=new F;B.Set(p);return B};F.FromVV=function(p,B){var Q=new F;Q.SetVV(p,B);return Q};F.prototype.Set=function(p){if(p===undefined)p=0;
+var B=Math.cos(p);p=Math.sin(p);this.col1.x=B;this.col2.x=-p;this.col1.y=p;this.col2.y=B};F.prototype.SetVV=function(p,B){this.col1.SetV(p);this.col2.SetV(B)};F.prototype.Copy=function(){var p=new F;p.SetM(this);return p};F.prototype.SetM=function(p){this.col1.SetV(p.col1);this.col2.SetV(p.col2)};F.prototype.AddM=function(p){this.col1.x+=p.col1.x;this.col1.y+=p.col1.y;this.col2.x+=p.col2.x;this.col2.y+=p.col2.y};F.prototype.SetIdentity=function(){this.col1.x=1;this.col2.x=0;this.col1.y=0;this.col2.y=
+1};F.prototype.SetZero=function(){this.col1.x=0;this.col2.x=0;this.col1.y=0;this.col2.y=0};F.prototype.GetAngle=function(){return Math.atan2(this.col1.y,this.col1.x)};F.prototype.GetInverse=function(p){var B=this.col1.x,Q=this.col2.x,V=this.col1.y,M=this.col2.y,L=B*M-Q*V;if(L!=0)L=1/L;p.col1.x=L*M;p.col2.x=-L*Q;p.col1.y=-L*V;p.col2.y=L*B;return p};F.prototype.Solve=function(p,B,Q){if(B===undefined)B=0;if(Q===undefined)Q=0;var V=this.col1.x,M=this.col2.x,L=this.col1.y,I=this.col2.y,W=V*I-M*L;if(W!=
+0)W=1/W;p.x=W*(I*B-M*Q);p.y=W*(V*Q-L*B);return p};F.prototype.Abs=function(){this.col1.Abs();this.col2.Abs()};G.b2Mat33=function(){this.col1=new U;this.col2=new U;this.col3=new U};G.prototype.b2Mat33=function(p,B,Q){if(p===undefined)p=null;if(B===undefined)B=null;if(Q===undefined)Q=null;if(!p&&!B&&!Q){this.col1.SetZero();this.col2.SetZero();this.col3.SetZero()}else{this.col1.SetV(p);this.col2.SetV(B);this.col3.SetV(Q)}};G.prototype.SetVVV=function(p,B,Q){this.col1.SetV(p);this.col2.SetV(B);this.col3.SetV(Q)};
+G.prototype.Copy=function(){return new G(this.col1,this.col2,this.col3)};G.prototype.SetM=function(p){this.col1.SetV(p.col1);this.col2.SetV(p.col2);this.col3.SetV(p.col3)};G.prototype.AddM=function(p){this.col1.x+=p.col1.x;this.col1.y+=p.col1.y;this.col1.z+=p.col1.z;this.col2.x+=p.col2.x;this.col2.y+=p.col2.y;this.col2.z+=p.col2.z;this.col3.x+=p.col3.x;this.col3.y+=p.col3.y;this.col3.z+=p.col3.z};G.prototype.SetIdentity=function(){this.col1.x=1;this.col2.x=0;this.col3.x=0;this.col1.y=0;this.col2.y=
+1;this.col3.y=0;this.col1.z=0;this.col2.z=0;this.col3.z=1};G.prototype.SetZero=function(){this.col1.x=0;this.col2.x=0;this.col3.x=0;this.col1.y=0;this.col2.y=0;this.col3.y=0;this.col1.z=0;this.col2.z=0;this.col3.z=0};G.prototype.Solve22=function(p,B,Q){if(B===undefined)B=0;if(Q===undefined)Q=0;var V=this.col1.x,M=this.col2.x,L=this.col1.y,I=this.col2.y,W=V*I-M*L;if(W!=0)W=1/W;p.x=W*(I*B-M*Q);p.y=W*(V*Q-L*B);return p};G.prototype.Solve33=function(p,B,Q,V){if(B===undefined)B=0;if(Q===undefined)Q=0;
+if(V===undefined)V=0;var M=this.col1.x,L=this.col1.y,I=this.col1.z,W=this.col2.x,Y=this.col2.y,k=this.col2.z,z=this.col3.x,u=this.col3.y,D=this.col3.z,H=M*(Y*D-k*u)+L*(k*z-W*D)+I*(W*u-Y*z);if(H!=0)H=1/H;p.x=H*(B*(Y*D-k*u)+Q*(k*z-W*D)+V*(W*u-Y*z));p.y=H*(M*(Q*D-V*u)+L*(V*z-B*D)+I*(B*u-Q*z));p.z=H*(M*(Y*V-k*Q)+L*(k*B-W*V)+I*(W*Q-Y*B));return p};K.b2Math=function(){};K.IsValid=function(p){if(p===undefined)p=0;return isFinite(p)};K.Dot=function(p,B){return p.x*B.x+p.y*B.y};K.CrossVV=function(p,B){return p.x*
+B.y-p.y*B.x};K.CrossVF=function(p,B){if(B===undefined)B=0;return new A(B*p.y,-B*p.x)};K.CrossFV=function(p,B){if(p===undefined)p=0;return new A(-p*B.y,p*B.x)};K.MulMV=function(p,B){return new A(p.col1.x*B.x+p.col2.x*B.y,p.col1.y*B.x+p.col2.y*B.y)};K.MulTMV=function(p,B){return new A(K.Dot(B,p.col1),K.Dot(B,p.col2))};K.MulX=function(p,B){var Q=K.MulMV(p.R,B);Q.x+=p.position.x;Q.y+=p.position.y;return Q};K.MulXT=function(p,B){var Q=K.SubtractVV(B,p.position),V=Q.x*p.R.col1.x+Q.y*p.R.col1.y;Q.y=Q.x*
+p.R.col2.x+Q.y*p.R.col2.y;Q.x=V;return Q};K.AddVV=function(p,B){return new A(p.x+B.x,p.y+B.y)};K.SubtractVV=function(p,B){return new A(p.x-B.x,p.y-B.y)};K.Distance=function(p,B){var Q=p.x-B.x,V=p.y-B.y;return Math.sqrt(Q*Q+V*V)};K.DistanceSquared=function(p,B){var Q=p.x-B.x,V=p.y-B.y;return Q*Q+V*V};K.MulFV=function(p,B){if(p===undefined)p=0;return new A(p*B.x,p*B.y)};K.AddMM=function(p,B){return F.FromVV(K.AddVV(p.col1,B.col1),K.AddVV(p.col2,B.col2))};K.MulMM=function(p,B){return F.FromVV(K.MulMV(p,
+B.col1),K.MulMV(p,B.col2))};K.MulTMM=function(p,B){var Q=new A(K.Dot(p.col1,B.col1),K.Dot(p.col2,B.col1)),V=new A(K.Dot(p.col1,B.col2),K.Dot(p.col2,B.col2));return F.FromVV(Q,V)};K.Abs=function(p){if(p===undefined)p=0;return p>0?p:-p};K.AbsV=function(p){return new A(K.Abs(p.x),K.Abs(p.y))};K.AbsM=function(p){return F.FromVV(K.AbsV(p.col1),K.AbsV(p.col2))};K.Min=function(p,B){if(p===undefined)p=0;if(B===undefined)B=0;return p<B?p:B};K.MinV=function(p,B){return new A(K.Min(p.x,B.x),K.Min(p.y,B.y))};
+K.Max=function(p,B){if(p===undefined)p=0;if(B===undefined)B=0;return p>B?p:B};K.MaxV=function(p,B){return new A(K.Max(p.x,B.x),K.Max(p.y,B.y))};K.Clamp=function(p,B,Q){if(p===undefined)p=0;if(B===undefined)B=0;if(Q===undefined)Q=0;return p<B?B:p>Q?Q:p};K.ClampV=function(p,B,Q){return K.MaxV(B,K.MinV(p,Q))};K.Swap=function(p,B){var Q=p[0];p[0]=B[0];B[0]=Q};K.Random=function(){return Math.random()*2-1};K.RandomRange=function(p,B){if(p===undefined)p=0;if(B===undefined)B=0;var Q=Math.random();return Q=
+(B-p)*Q+p};K.NextPowerOfTwo=function(p){if(p===undefined)p=0;p|=p>>1&2147483647;p|=p>>2&1073741823;p|=p>>4&268435455;p|=p>>8&16777215;p|=p>>16&65535;return p+1};K.IsPowerOfTwo=function(p){if(p===undefined)p=0;return p>0&&(p&p-1)==0};Box2D.postDefs.push(function(){Box2D.Common.Math.b2Math.b2Vec2_zero=new A(0,0);Box2D.Common.Math.b2Math.b2Mat22_identity=F.FromVV(new A(1,0),new A(0,1));Box2D.Common.Math.b2Math.b2Transform_identity=new w(K.b2Vec2_zero,K.b2Mat22_identity)});y.b2Sweep=function(){this.localCenter=
+new A;this.c0=new A;this.c=new A};y.prototype.Set=function(p){this.localCenter.SetV(p.localCenter);this.c0.SetV(p.c0);this.c.SetV(p.c);this.a0=p.a0;this.a=p.a;this.t0=p.t0};y.prototype.Copy=function(){var p=new y;p.localCenter.SetV(this.localCenter);p.c0.SetV(this.c0);p.c.SetV(this.c);p.a0=this.a0;p.a=this.a;p.t0=this.t0;return p};y.prototype.GetTransform=function(p,B){if(B===undefined)B=0;p.position.x=(1-B)*this.c0.x+B*this.c.x;p.position.y=(1-B)*this.c0.y+B*this.c.y;p.R.Set((1-B)*this.a0+B*this.a);
+var Q=p.R;p.position.x-=Q.col1.x*this.localCenter.x+Q.col2.x*this.localCenter.y;p.position.y-=Q.col1.y*this.localCenter.x+Q.col2.y*this.localCenter.y};y.prototype.Advance=function(p){if(p===undefined)p=0;if(this.t0<p&&1-this.t0>Number.MIN_VALUE){var B=(p-this.t0)/(1-this.t0);this.c0.x=(1-B)*this.c0.x+B*this.c.x;this.c0.y=(1-B)*this.c0.y+B*this.c.y;this.a0=(1-B)*this.a0+B*this.a;this.t0=p}};w.b2Transform=function(){this.position=new A;this.R=new F};w.prototype.b2Transform=function(p,B){if(p===undefined)p=
+null;if(B===undefined)B=null;if(p){this.position.SetV(p);this.R.SetM(B)}};w.prototype.Initialize=function(p,B){this.position.SetV(p);this.R.SetM(B)};w.prototype.SetIdentity=function(){this.position.SetZero();this.R.SetIdentity()};w.prototype.Set=function(p){this.position.SetV(p.position);this.R.SetM(p.R)};w.prototype.GetAngle=function(){return Math.atan2(this.R.col1.y,this.R.col1.x)};A.b2Vec2=function(){};A.prototype.b2Vec2=function(p,B){if(p===undefined)p=0;if(B===undefined)B=0;this.x=p;this.y=B};
+A.prototype.SetZero=function(){this.y=this.x=0};A.prototype.Set=function(p,B){if(p===undefined)p=0;if(B===undefined)B=0;this.x=p;this.y=B};A.prototype.SetV=function(p){this.x=p.x;this.y=p.y};A.prototype.GetNegative=function(){return new A(-this.x,-this.y)};A.prototype.NegativeSelf=function(){this.x=-this.x;this.y=-this.y};A.Make=function(p,B){if(p===undefined)p=0;if(B===undefined)B=0;return new A(p,B)};A.prototype.Copy=function(){return new A(this.x,this.y)};A.prototype.Add=function(p){this.x+=p.x;
+this.y+=p.y};A.prototype.Subtract=function(p){this.x-=p.x;this.y-=p.y};A.prototype.Multiply=function(p){if(p===undefined)p=0;this.x*=p;this.y*=p};A.prototype.MulM=function(p){var B=this.x;this.x=p.col1.x*B+p.col2.x*this.y;this.y=p.col1.y*B+p.col2.y*this.y};A.prototype.MulTM=function(p){var B=K.Dot(this,p.col1);this.y=K.Dot(this,p.col2);this.x=B};A.prototype.CrossVF=function(p){if(p===undefined)p=0;var B=this.x;this.x=p*this.y;this.y=-p*B};A.prototype.CrossFV=function(p){if(p===undefined)p=0;var B=
+this.x;this.x=-p*this.y;this.y=p*B};A.prototype.MinV=function(p){this.x=this.x<p.x?this.x:p.x;this.y=this.y<p.y?this.y:p.y};A.prototype.MaxV=function(p){this.x=this.x>p.x?this.x:p.x;this.y=this.y>p.y?this.y:p.y};A.prototype.Abs=function(){if(this.x<0)this.x=-this.x;if(this.y<0)this.y=-this.y};A.prototype.Length=function(){return Math.sqrt(this.x*this.x+this.y*this.y)};A.prototype.LengthSquared=function(){return this.x*this.x+this.y*this.y};A.prototype.Normalize=function(){var p=Math.sqrt(this.x*this.x+
+this.y*this.y);if(p<Number.MIN_VALUE)return 0;var B=1/p;this.x*=B;this.y*=B;return p};A.prototype.IsValid=function(){return K.IsValid(this.x)&&K.IsValid(this.y)};U.b2Vec3=function(){};U.prototype.b2Vec3=function(p,B,Q){if(p===undefined)p=0;if(B===undefined)B=0;if(Q===undefined)Q=0;this.x=p;this.y=B;this.z=Q};U.prototype.SetZero=function(){this.x=this.y=this.z=0};U.prototype.Set=function(p,B,Q){if(p===undefined)p=0;if(B===undefined)B=0;if(Q===undefined)Q=0;this.x=p;this.y=B;this.z=Q};U.prototype.SetV=
+function(p){this.x=p.x;this.y=p.y;this.z=p.z};U.prototype.GetNegative=function(){return new U(-this.x,-this.y,-this.z)};U.prototype.NegativeSelf=function(){this.x=-this.x;this.y=-this.y;this.z=-this.z};U.prototype.Copy=function(){return new U(this.x,this.y,this.z)};U.prototype.Add=function(p){this.x+=p.x;this.y+=p.y;this.z+=p.z};U.prototype.Subtract=function(p){this.x-=p.x;this.y-=p.y;this.z-=p.z};U.prototype.Multiply=function(p){if(p===undefined)p=0;this.x*=p;this.y*=p;this.z*=p}})();
+(function(){var F=Box2D.Common.Math.b2Math,G=Box2D.Common.Math.b2Sweep,K=Box2D.Common.Math.b2Transform,y=Box2D.Common.Math.b2Vec2,w=Box2D.Common.b2Color,A=Box2D.Common.b2Settings,U=Box2D.Collision.b2AABB,p=Box2D.Collision.b2ContactPoint,B=Box2D.Collision.b2DynamicTreeBroadPhase,Q=Box2D.Collision.b2RayCastInput,V=Box2D.Collision.b2RayCastOutput,M=Box2D.Collision.Shapes.b2CircleShape,L=Box2D.Collision.Shapes.b2EdgeShape,I=Box2D.Collision.Shapes.b2MassData,W=Box2D.Collision.Shapes.b2PolygonShape,Y=Box2D.Collision.Shapes.b2Shape,
+k=Box2D.Dynamics.b2Body,z=Box2D.Dynamics.b2BodyDef,u=Box2D.Dynamics.b2ContactFilter,D=Box2D.Dynamics.b2ContactImpulse,H=Box2D.Dynamics.b2ContactListener,O=Box2D.Dynamics.b2ContactManager,E=Box2D.Dynamics.b2DebugDraw,R=Box2D.Dynamics.b2DestructionListener,N=Box2D.Dynamics.b2FilterData,S=Box2D.Dynamics.b2Fixture,aa=Box2D.Dynamics.b2FixtureDef,Z=Box2D.Dynamics.b2Island,d=Box2D.Dynamics.b2TimeStep,h=Box2D.Dynamics.b2World,l=Box2D.Dynamics.Contacts.b2Contact,j=Box2D.Dynamics.Contacts.b2ContactFactory,
+o=Box2D.Dynamics.Contacts.b2ContactSolver,q=Box2D.Dynamics.Joints.b2Joint,n=Box2D.Dynamics.Joints.b2PulleyJoint;k.b2Body=function(){this.m_xf=new K;this.m_sweep=new G;this.m_linearVelocity=new y;this.m_force=new y};k.prototype.connectEdges=function(a,c,g){if(g===undefined)g=0;var b=Math.atan2(c.GetDirectionVector().y,c.GetDirectionVector().x);g=F.MulFV(Math.tan((b-g)*0.5),c.GetDirectionVector());g=F.SubtractVV(g,c.GetNormalVector());g=F.MulFV(A.b2_toiSlop,g);g=F.AddVV(g,c.GetVertex1());var e=F.AddVV(a.GetDirectionVector(),
+c.GetDirectionVector());e.Normalize();var f=F.Dot(a.GetDirectionVector(),c.GetNormalVector())>0;a.SetNextEdge(c,g,e,f);c.SetPrevEdge(a,g,e,f);return b};k.prototype.CreateFixture=function(a){if(this.m_world.IsLocked()==true)return null;var c=new S;c.Create(this,this.m_xf,a);this.m_flags&k.e_activeFlag&&c.CreateProxy(this.m_world.m_contactManager.m_broadPhase,this.m_xf);c.m_next=this.m_fixtureList;this.m_fixtureList=c;++this.m_fixtureCount;c.m_body=this;c.m_density>0&&this.ResetMassData();this.m_world.m_flags|=
+h.e_newFixture;return c};k.prototype.CreateFixture2=function(a,c){if(c===undefined)c=0;var g=new aa;g.shape=a;g.density=c;return this.CreateFixture(g)};k.prototype.DestroyFixture=function(a){if(this.m_world.IsLocked()!=true){for(var c=this.m_fixtureList,g=null;c!=null;){if(c==a){if(g)g.m_next=a.m_next;else this.m_fixtureList=a.m_next;break}g=c;c=c.m_next}for(c=this.m_contactList;c;){g=c.contact;c=c.next;var b=g.GetFixtureA(),e=g.GetFixtureB();if(a==b||a==e)this.m_world.m_contactManager.Destroy(g)}this.m_flags&
+k.e_activeFlag&&a.DestroyProxy(this.m_world.m_contactManager.m_broadPhase);a.Destroy();a.m_body=null;a.m_next=null;--this.m_fixtureCount;this.ResetMassData()}};k.prototype.SetPositionAndAngle=function(a,c){if(c===undefined)c=0;var g;if(this.m_world.IsLocked()!=true){this.m_xf.R.Set(c);this.m_xf.position.SetV(a);g=this.m_xf.R;var b=this.m_sweep.localCenter;this.m_sweep.c.x=g.col1.x*b.x+g.col2.x*b.y;this.m_sweep.c.y=g.col1.y*b.x+g.col2.y*b.y;this.m_sweep.c.x+=this.m_xf.position.x;this.m_sweep.c.y+=
+this.m_xf.position.y;this.m_sweep.c0.SetV(this.m_sweep.c);this.m_sweep.a0=this.m_sweep.a=c;b=this.m_world.m_contactManager.m_broadPhase;for(g=this.m_fixtureList;g;g=g.m_next)g.Synchronize(b,this.m_xf,this.m_xf);this.m_world.m_contactManager.FindNewContacts()}};k.prototype.SetTransform=function(a){this.SetPositionAndAngle(a.position,a.GetAngle())};k.prototype.GetTransform=function(){return this.m_xf};k.prototype.GetPosition=function(){return this.m_xf.position};k.prototype.SetPosition=function(a){this.SetPositionAndAngle(a,
+this.GetAngle())};k.prototype.GetAngle=function(){return this.m_sweep.a};k.prototype.SetAngle=function(a){if(a===undefined)a=0;this.SetPositionAndAngle(this.GetPosition(),a)};k.prototype.GetWorldCenter=function(){return this.m_sweep.c};k.prototype.GetLocalCenter=function(){return this.m_sweep.localCenter};k.prototype.SetLinearVelocity=function(a){this.m_type!=k.b2_staticBody&&this.m_linearVelocity.SetV(a)};k.prototype.GetLinearVelocity=function(){return this.m_linearVelocity};k.prototype.SetAngularVelocity=
+function(a){if(a===undefined)a=0;if(this.m_type!=k.b2_staticBody)this.m_angularVelocity=a};k.prototype.GetAngularVelocity=function(){return this.m_angularVelocity};k.prototype.GetDefinition=function(){var a=new z;a.type=this.GetType();a.allowSleep=(this.m_flags&k.e_allowSleepFlag)==k.e_allowSleepFlag;a.angle=this.GetAngle();a.angularDamping=this.m_angularDamping;a.angularVelocity=this.m_angularVelocity;a.fixedRotation=(this.m_flags&k.e_fixedRotationFlag)==k.e_fixedRotationFlag;a.bullet=(this.m_flags&
+k.e_bulletFlag)==k.e_bulletFlag;a.awake=(this.m_flags&k.e_awakeFlag)==k.e_awakeFlag;a.linearDamping=this.m_linearDamping;a.linearVelocity.SetV(this.GetLinearVelocity());a.position=this.GetPosition();a.userData=this.GetUserData();return a};k.prototype.ApplyForce=function(a,c){if(this.m_type==k.b2_dynamicBody){this.IsAwake()==false&&this.SetAwake(true);this.m_force.x+=a.x;this.m_force.y+=a.y;this.m_torque+=(c.x-this.m_sweep.c.x)*a.y-(c.y-this.m_sweep.c.y)*a.x}};k.prototype.ApplyTorque=function(a){if(a===
+undefined)a=0;if(this.m_type==k.b2_dynamicBody){this.IsAwake()==false&&this.SetAwake(true);this.m_torque+=a}};k.prototype.ApplyImpulse=function(a,c){if(this.m_type==k.b2_dynamicBody){this.IsAwake()==false&&this.SetAwake(true);this.m_linearVelocity.x+=this.m_invMass*a.x;this.m_linearVelocity.y+=this.m_invMass*a.y;this.m_angularVelocity+=this.m_invI*((c.x-this.m_sweep.c.x)*a.y-(c.y-this.m_sweep.c.y)*a.x)}};k.prototype.Split=function(a){for(var c=this.GetLinearVelocity().Copy(),g=this.GetAngularVelocity(),
+b=this.GetWorldCenter(),e=this.m_world.CreateBody(this.GetDefinition()),f,m=this.m_fixtureList;m;)if(a(m)){var r=m.m_next;if(f)f.m_next=r;else this.m_fixtureList=r;this.m_fixtureCount--;m.m_next=e.m_fixtureList;e.m_fixtureList=m;e.m_fixtureCount++;m.m_body=e;m=r}else{f=m;m=m.m_next}this.ResetMassData();e.ResetMassData();f=this.GetWorldCenter();a=e.GetWorldCenter();f=F.AddVV(c,F.CrossFV(g,F.SubtractVV(f,b)));c=F.AddVV(c,F.CrossFV(g,F.SubtractVV(a,b)));this.SetLinearVelocity(f);e.SetLinearVelocity(c);
+this.SetAngularVelocity(g);e.SetAngularVelocity(g);this.SynchronizeFixtures();e.SynchronizeFixtures();return e};k.prototype.Merge=function(a){var c;for(c=a.m_fixtureList;c;){var g=c.m_next;a.m_fixtureCount--;c.m_next=this.m_fixtureList;this.m_fixtureList=c;this.m_fixtureCount++;c.m_body=e;c=g}b.m_fixtureCount=0;var b=this,e=a;b.GetWorldCenter();e.GetWorldCenter();b.GetLinearVelocity().Copy();e.GetLinearVelocity().Copy();b.GetAngularVelocity();e.GetAngularVelocity();b.ResetMassData();this.SynchronizeFixtures()};
+k.prototype.GetMass=function(){return this.m_mass};k.prototype.GetInertia=function(){return this.m_I};k.prototype.GetMassData=function(a){a.mass=this.m_mass;a.I=this.m_I;a.center.SetV(this.m_sweep.localCenter)};k.prototype.SetMassData=function(a){A.b2Assert(this.m_world.IsLocked()==false);if(this.m_world.IsLocked()!=true)if(this.m_type==k.b2_dynamicBody){this.m_invI=this.m_I=this.m_invMass=0;this.m_mass=a.mass;if(this.m_mass<=0)this.m_mass=1;this.m_invMass=1/this.m_mass;if(a.I>0&&(this.m_flags&k.e_fixedRotationFlag)==
+0){this.m_I=a.I-this.m_mass*(a.center.x*a.center.x+a.center.y*a.center.y);this.m_invI=1/this.m_I}var c=this.m_sweep.c.Copy();this.m_sweep.localCenter.SetV(a.center);this.m_sweep.c0.SetV(F.MulX(this.m_xf,this.m_sweep.localCenter));this.m_sweep.c.SetV(this.m_sweep.c0);this.m_linearVelocity.x+=this.m_angularVelocity*-(this.m_sweep.c.y-c.y);this.m_linearVelocity.y+=this.m_angularVelocity*+(this.m_sweep.c.x-c.x)}};k.prototype.ResetMassData=function(){this.m_invI=this.m_I=this.m_invMass=this.m_mass=0;this.m_sweep.localCenter.SetZero();
+if(!(this.m_type==k.b2_staticBody||this.m_type==k.b2_kinematicBody)){for(var a=y.Make(0,0),c=this.m_fixtureList;c;c=c.m_next)if(c.m_density!=0){var g=c.GetMassData();this.m_mass+=g.mass;a.x+=g.center.x*g.mass;a.y+=g.center.y*g.mass;this.m_I+=g.I}if(this.m_mass>0){this.m_invMass=1/this.m_mass;a.x*=this.m_invMass;a.y*=this.m_invMass}else this.m_invMass=this.m_mass=1;if(this.m_I>0&&(this.m_flags&k.e_fixedRotationFlag)==0){this.m_I-=this.m_mass*(a.x*a.x+a.y*a.y);this.m_I*=this.m_inertiaScale;A.b2Assert(this.m_I>
+0);this.m_invI=1/this.m_I}else this.m_invI=this.m_I=0;c=this.m_sweep.c.Copy();this.m_sweep.localCenter.SetV(a);this.m_sweep.c0.SetV(F.MulX(this.m_xf,this.m_sweep.localCenter));this.m_sweep.c.SetV(this.m_sweep.c0);this.m_linearVelocity.x+=this.m_angularVelocity*-(this.m_sweep.c.y-c.y);this.m_linearVelocity.y+=this.m_angularVelocity*+(this.m_sweep.c.x-c.x)}};k.prototype.GetWorldPoint=function(a){var c=this.m_xf.R;a=new y(c.col1.x*a.x+c.col2.x*a.y,c.col1.y*a.x+c.col2.y*a.y);a.x+=this.m_xf.position.x;
+a.y+=this.m_xf.position.y;return a};k.prototype.GetWorldVector=function(a){return F.MulMV(this.m_xf.R,a)};k.prototype.GetLocalPoint=function(a){return F.MulXT(this.m_xf,a)};k.prototype.GetLocalVector=function(a){return F.MulTMV(this.m_xf.R,a)};k.prototype.GetLinearVelocityFromWorldPoint=function(a){return new y(this.m_linearVelocity.x-this.m_angularVelocity*(a.y-this.m_sweep.c.y),this.m_linearVelocity.y+this.m_angularVelocity*(a.x-this.m_sweep.c.x))};k.prototype.GetLinearVelocityFromLocalPoint=function(a){var c=
+this.m_xf.R;a=new y(c.col1.x*a.x+c.col2.x*a.y,c.col1.y*a.x+c.col2.y*a.y);a.x+=this.m_xf.position.x;a.y+=this.m_xf.position.y;return new y(this.m_linearVelocity.x-this.m_angularVelocity*(a.y-this.m_sweep.c.y),this.m_linearVelocity.y+this.m_angularVelocity*(a.x-this.m_sweep.c.x))};k.prototype.GetLinearDamping=function(){return this.m_linearDamping};k.prototype.SetLinearDamping=function(a){if(a===undefined)a=0;this.m_linearDamping=a};k.prototype.GetAngularDamping=function(){return this.m_angularDamping};
+k.prototype.SetAngularDamping=function(a){if(a===undefined)a=0;this.m_angularDamping=a};k.prototype.SetType=function(a){if(a===undefined)a=0;if(this.m_type!=a){this.m_type=a;this.ResetMassData();if(this.m_type==k.b2_staticBody){this.m_linearVelocity.SetZero();this.m_angularVelocity=0}this.SetAwake(true);this.m_force.SetZero();this.m_torque=0;for(a=this.m_contactList;a;a=a.next)a.contact.FlagForFiltering()}};k.prototype.GetType=function(){return this.m_type};k.prototype.SetBullet=function(a){if(a)this.m_flags|=
+k.e_bulletFlag;else this.m_flags&=~k.e_bulletFlag};k.prototype.IsBullet=function(){return(this.m_flags&k.e_bulletFlag)==k.e_bulletFlag};k.prototype.SetSleepingAllowed=function(a){if(a)this.m_flags|=k.e_allowSleepFlag;else{this.m_flags&=~k.e_allowSleepFlag;this.SetAwake(true)}};k.prototype.SetAwake=function(a){if(a){this.m_flags|=k.e_awakeFlag;this.m_sleepTime=0}else{this.m_flags&=~k.e_awakeFlag;this.m_sleepTime=0;this.m_linearVelocity.SetZero();this.m_angularVelocity=0;this.m_force.SetZero();this.m_torque=
+0}};k.prototype.IsAwake=function(){return(this.m_flags&k.e_awakeFlag)==k.e_awakeFlag};k.prototype.SetFixedRotation=function(a){if(a)this.m_flags|=k.e_fixedRotationFlag;else this.m_flags&=~k.e_fixedRotationFlag;this.ResetMassData()};k.prototype.IsFixedRotation=function(){return(this.m_flags&k.e_fixedRotationFlag)==k.e_fixedRotationFlag};k.prototype.SetActive=function(a){if(a!=this.IsActive()){var c;if(a){this.m_flags|=k.e_activeFlag;a=this.m_world.m_contactManager.m_broadPhase;for(c=this.m_fixtureList;c;c=
+c.m_next)c.CreateProxy(a,this.m_xf)}else{this.m_flags&=~k.e_activeFlag;a=this.m_world.m_contactManager.m_broadPhase;for(c=this.m_fixtureList;c;c=c.m_next)c.DestroyProxy(a);for(a=this.m_contactList;a;){c=a;a=a.next;this.m_world.m_contactManager.Destroy(c.contact)}this.m_contactList=null}}};k.prototype.IsActive=function(){return(this.m_flags&k.e_activeFlag)==k.e_activeFlag};k.prototype.IsSleepingAllowed=function(){return(this.m_flags&k.e_allowSleepFlag)==k.e_allowSleepFlag};k.prototype.GetFixtureList=
+function(){return this.m_fixtureList};k.prototype.GetJointList=function(){return this.m_jointList};k.prototype.GetControllerList=function(){return this.m_controllerList};k.prototype.GetContactList=function(){return this.m_contactList};k.prototype.GetNext=function(){return this.m_next};k.prototype.GetUserData=function(){return this.m_userData};k.prototype.SetUserData=function(a){this.m_userData=a};k.prototype.GetWorld=function(){return this.m_world};k.prototype.b2Body=function(a,c){this.m_flags=0;
+if(a.bullet)this.m_flags|=k.e_bulletFlag;if(a.fixedRotation)this.m_flags|=k.e_fixedRotationFlag;if(a.allowSleep)this.m_flags|=k.e_allowSleepFlag;if(a.awake)this.m_flags|=k.e_awakeFlag;if(a.active)this.m_flags|=k.e_activeFlag;this.m_world=c;this.m_xf.position.SetV(a.position);this.m_xf.R.Set(a.angle);this.m_sweep.localCenter.SetZero();this.m_sweep.t0=1;this.m_sweep.a0=this.m_sweep.a=a.angle;var g=this.m_xf.R,b=this.m_sweep.localCenter;this.m_sweep.c.x=g.col1.x*b.x+g.col2.x*b.y;this.m_sweep.c.y=g.col1.y*
+b.x+g.col2.y*b.y;this.m_sweep.c.x+=this.m_xf.position.x;this.m_sweep.c.y+=this.m_xf.position.y;this.m_sweep.c0.SetV(this.m_sweep.c);this.m_contactList=this.m_controllerList=this.m_jointList=null;this.m_controllerCount=0;this.m_next=this.m_prev=null;this.m_linearVelocity.SetV(a.linearVelocity);this.m_angularVelocity=a.angularVelocity;this.m_linearDamping=a.linearDamping;this.m_angularDamping=a.angularDamping;this.m_force.Set(0,0);this.m_sleepTime=this.m_torque=0;this.m_type=a.type;if(this.m_type==
+k.b2_dynamicBody)this.m_invMass=this.m_mass=1;else this.m_invMass=this.m_mass=0;this.m_invI=this.m_I=0;this.m_inertiaScale=a.inertiaScale;this.m_userData=a.userData;this.m_fixtureList=null;this.m_fixtureCount=0};k.prototype.SynchronizeFixtures=function(){var a=k.s_xf1;a.R.Set(this.m_sweep.a0);var c=a.R,g=this.m_sweep.localCenter;a.position.x=this.m_sweep.c0.x-(c.col1.x*g.x+c.col2.x*g.y);a.position.y=this.m_sweep.c0.y-(c.col1.y*g.x+c.col2.y*g.y);g=this.m_world.m_contactManager.m_broadPhase;for(c=this.m_fixtureList;c;c=
+c.m_next)c.Synchronize(g,a,this.m_xf)};k.prototype.SynchronizeTransform=function(){this.m_xf.R.Set(this.m_sweep.a);var a=this.m_xf.R,c=this.m_sweep.localCenter;this.m_xf.position.x=this.m_sweep.c.x-(a.col1.x*c.x+a.col2.x*c.y);this.m_xf.position.y=this.m_sweep.c.y-(a.col1.y*c.x+a.col2.y*c.y)};k.prototype.ShouldCollide=function(a){if(this.m_type!=k.b2_dynamicBody&&a.m_type!=k.b2_dynamicBody)return false;for(var c=this.m_jointList;c;c=c.next)if(c.other==a)if(c.joint.m_collideConnected==false)return false;
+return true};k.prototype.Advance=function(a){if(a===undefined)a=0;this.m_sweep.Advance(a);this.m_sweep.c.SetV(this.m_sweep.c0);this.m_sweep.a=this.m_sweep.a0;this.SynchronizeTransform()};Box2D.postDefs.push(function(){Box2D.Dynamics.b2Body.s_xf1=new K;Box2D.Dynamics.b2Body.e_islandFlag=1;Box2D.Dynamics.b2Body.e_awakeFlag=2;Box2D.Dynamics.b2Body.e_allowSleepFlag=4;Box2D.Dynamics.b2Body.e_bulletFlag=8;Box2D.Dynamics.b2Body.e_fixedRotationFlag=16;Box2D.Dynamics.b2Body.e_activeFlag=32;Box2D.Dynamics.b2Body.b2_staticBody=
+0;Box2D.Dynamics.b2Body.b2_kinematicBody=1;Box2D.Dynamics.b2Body.b2_dynamicBody=2});z.b2BodyDef=function(){this.position=new y;this.linearVelocity=new y};z.prototype.b2BodyDef=function(){this.userData=null;this.position.Set(0,0);this.angle=0;this.linearVelocity.Set(0,0);this.angularDamping=this.linearDamping=this.angularVelocity=0;this.awake=this.allowSleep=true;this.bullet=this.fixedRotation=false;this.type=k.b2_staticBody;this.active=true;this.inertiaScale=1};u.b2ContactFilter=function(){};u.prototype.ShouldCollide=
+function(a,c){var g=a.GetFilterData(),b=c.GetFilterData();if(g.groupIndex==b.groupIndex&&g.groupIndex!=0)return g.groupIndex>0;return(g.maskBits&b.categoryBits)!=0&&(g.categoryBits&b.maskBits)!=0};u.prototype.RayCollide=function(a,c){if(!a)return true;return this.ShouldCollide(a instanceof S?a:null,c)};Box2D.postDefs.push(function(){Box2D.Dynamics.b2ContactFilter.b2_defaultFilter=new u});D.b2ContactImpulse=function(){this.normalImpulses=new Vector_a2j_Number(A.b2_maxManifoldPoints);this.tangentImpulses=
+new Vector_a2j_Number(A.b2_maxManifoldPoints)};H.b2ContactListener=function(){};H.prototype.BeginContact=function(){};H.prototype.EndContact=function(){};H.prototype.PreSolve=function(){};H.prototype.PostSolve=function(){};Box2D.postDefs.push(function(){Box2D.Dynamics.b2ContactListener.b2_defaultListener=new H});O.b2ContactManager=function(){};O.prototype.b2ContactManager=function(){this.m_world=null;this.m_contactCount=0;this.m_contactFilter=u.b2_defaultFilter;this.m_contactListener=H.b2_defaultListener;
+this.m_contactFactory=new j(this.m_allocator);this.m_broadPhase=new B};O.prototype.AddPair=function(a,c){var g=a instanceof S?a:null,b=c instanceof S?c:null,e=g.GetBody(),f=b.GetBody();if(e!=f){for(var m=f.GetContactList();m;){if(m.other==e){var r=m.contact.GetFixtureA(),s=m.contact.GetFixtureB();if(r==g&&s==b)return;if(r==b&&s==g)return}m=m.next}if(f.ShouldCollide(e)!=false)if(this.m_contactFilter.ShouldCollide(g,b)!=false){m=this.m_contactFactory.Create(g,b);g=m.GetFixtureA();b=m.GetFixtureB();
+e=g.m_body;f=b.m_body;m.m_prev=null;m.m_next=this.m_world.m_contactList;if(this.m_world.m_contactList!=null)this.m_world.m_contactList.m_prev=m;this.m_world.m_contactList=m;m.m_nodeA.contact=m;m.m_nodeA.other=f;m.m_nodeA.prev=null;m.m_nodeA.next=e.m_contactList;if(e.m_contactList!=null)e.m_contactList.prev=m.m_nodeA;e.m_contactList=m.m_nodeA;m.m_nodeB.contact=m;m.m_nodeB.other=e;m.m_nodeB.prev=null;m.m_nodeB.next=f.m_contactList;if(f.m_contactList!=null)f.m_contactList.prev=m.m_nodeB;f.m_contactList=
+m.m_nodeB;++this.m_world.m_contactCount}}};O.prototype.FindNewContacts=function(){this.m_broadPhase.UpdatePairs(Box2D.generateCallback(this,this.AddPair))};O.prototype.Destroy=function(a){var c=a.GetFixtureA(),g=a.GetFixtureB();c=c.GetBody();g=g.GetBody();a.IsTouching()&&this.m_contactListener.EndContact(a);if(a.m_prev)a.m_prev.m_next=a.m_next;if(a.m_next)a.m_next.m_prev=a.m_prev;if(a==this.m_world.m_contactList)this.m_world.m_contactList=a.m_next;if(a.m_nodeA.prev)a.m_nodeA.prev.next=a.m_nodeA.next;
+if(a.m_nodeA.next)a.m_nodeA.next.prev=a.m_nodeA.prev;if(a.m_nodeA==c.m_contactList)c.m_contactList=a.m_nodeA.next;if(a.m_nodeB.prev)a.m_nodeB.prev.next=a.m_nodeB.next;if(a.m_nodeB.next)a.m_nodeB.next.prev=a.m_nodeB.prev;if(a.m_nodeB==g.m_contactList)g.m_contactList=a.m_nodeB.next;this.m_contactFactory.Destroy(a);--this.m_contactCount};O.prototype.Collide=function(){for(var a=this.m_world.m_contactList;a;){var c=a.GetFixtureA(),g=a.GetFixtureB(),b=c.GetBody(),e=g.GetBody();if(b.IsAwake()==false&&e.IsAwake()==
+false)a=a.GetNext();else{if(a.m_flags&l.e_filterFlag){if(e.ShouldCollide(b)==false){c=a;a=c.GetNext();this.Destroy(c);continue}if(this.m_contactFilter.ShouldCollide(c,g)==false){c=a;a=c.GetNext();this.Destroy(c);continue}a.m_flags&=~l.e_filterFlag}if(this.m_broadPhase.TestOverlap(c.m_proxy,g.m_proxy)==false){c=a;a=c.GetNext();this.Destroy(c)}else{a.Update(this.m_contactListener);a=a.GetNext()}}}};Box2D.postDefs.push(function(){Box2D.Dynamics.b2ContactManager.s_evalCP=new p});E.b2DebugDraw=function(){};
+E.prototype.b2DebugDraw=function(){};E.prototype.SetFlags=function(){};E.prototype.GetFlags=function(){};E.prototype.AppendFlags=function(){};E.prototype.ClearFlags=function(){};E.prototype.SetSprite=function(){};E.prototype.GetSprite=function(){};E.prototype.SetDrawScale=function(){};E.prototype.GetDrawScale=function(){};E.prototype.SetLineThickness=function(){};E.prototype.GetLineThickness=function(){};E.prototype.SetAlpha=function(){};E.prototype.GetAlpha=function(){};E.prototype.SetFillAlpha=
+function(){};E.prototype.GetFillAlpha=function(){};E.prototype.SetXFormScale=function(){};E.prototype.GetXFormScale=function(){};E.prototype.DrawPolygon=function(){};E.prototype.DrawSolidPolygon=function(){};E.prototype.DrawCircle=function(){};E.prototype.DrawSolidCircle=function(){};E.prototype.DrawSegment=function(){};E.prototype.DrawTransform=function(){};Box2D.postDefs.push(function(){Box2D.Dynamics.b2DebugDraw.e_shapeBit=1;Box2D.Dynamics.b2DebugDraw.e_jointBit=2;Box2D.Dynamics.b2DebugDraw.e_aabbBit=
+4;Box2D.Dynamics.b2DebugDraw.e_pairBit=8;Box2D.Dynamics.b2DebugDraw.e_centerOfMassBit=16;Box2D.Dynamics.b2DebugDraw.e_controllerBit=32});R.b2DestructionListener=function(){};R.prototype.SayGoodbyeJoint=function(){};R.prototype.SayGoodbyeFixture=function(){};N.b2FilterData=function(){this.categoryBits=1;this.maskBits=65535;this.groupIndex=0};N.prototype.Copy=function(){var a=new N;a.categoryBits=this.categoryBits;a.maskBits=this.maskBits;a.groupIndex=this.groupIndex;return a};S.b2Fixture=function(){this.m_filter=
+new N};S.prototype.GetType=function(){return this.m_shape.GetType()};S.prototype.GetShape=function(){return this.m_shape};S.prototype.SetSensor=function(a){if(this.m_isSensor!=a){this.m_isSensor=a;if(this.m_body!=null)for(a=this.m_body.GetContactList();a;){var c=a.contact,g=c.GetFixtureA(),b=c.GetFixtureB();if(g==this||b==this)c.SetSensor(g.IsSensor()||b.IsSensor());a=a.next}}};S.prototype.IsSensor=function(){return this.m_isSensor};S.prototype.SetFilterData=function(a){this.m_filter=a.Copy();if(!this.m_body)for(a=
+this.m_body.GetContactList();a;){var c=a.contact,g=c.GetFixtureA(),b=c.GetFixtureB();if(g==this||b==this)c.FlagForFiltering();a=a.next}};S.prototype.GetFilterData=function(){return this.m_filter.Copy()};S.prototype.GetBody=function(){return this.m_body};S.prototype.GetNext=function(){return this.m_next};S.prototype.GetUserData=function(){return this.m_userData};S.prototype.SetUserData=function(a){this.m_userData=a};S.prototype.TestPoint=function(a){return this.m_shape.TestPoint(this.m_body.GetTransform(),
+a)};S.prototype.RayCast=function(a,c){return this.m_shape.RayCast(a,c,this.m_body.GetTransform())};S.prototype.GetMassData=function(a){if(a===undefined)a=null;if(a==null)a=new I;this.m_shape.ComputeMass(a,this.m_density);return a};S.prototype.SetDensity=function(a){if(a===undefined)a=0;this.m_density=a};S.prototype.GetDensity=function(){return this.m_density};S.prototype.GetFriction=function(){return this.m_friction};S.prototype.SetFriction=function(a){if(a===undefined)a=0;this.m_friction=a};S.prototype.GetRestitution=
+function(){return this.m_restitution};S.prototype.SetRestitution=function(a){if(a===undefined)a=0;this.m_restitution=a};S.prototype.GetAABB=function(){return this.m_aabb};S.prototype.b2Fixture=function(){this.m_aabb=new U;this.m_shape=this.m_next=this.m_body=this.m_userData=null;this.m_restitution=this.m_friction=this.m_density=0};S.prototype.Create=function(a,c,g){this.m_userData=g.userData;this.m_friction=g.friction;this.m_restitution=g.restitution;this.m_body=a;this.m_next=null;this.m_filter=g.filter.Copy();
+this.m_isSensor=g.isSensor;this.m_shape=g.shape.Copy();this.m_density=g.density};S.prototype.Destroy=function(){this.m_shape=null};S.prototype.CreateProxy=function(a,c){this.m_shape.ComputeAABB(this.m_aabb,c);this.m_proxy=a.CreateProxy(this.m_aabb,this)};S.prototype.DestroyProxy=function(a){if(this.m_proxy!=null){a.DestroyProxy(this.m_proxy);this.m_proxy=null}};S.prototype.Synchronize=function(a,c,g){if(this.m_proxy){var b=new U,e=new U;this.m_shape.ComputeAABB(b,c);this.m_shape.ComputeAABB(e,g);
+this.m_aabb.Combine(b,e);c=F.SubtractVV(g.position,c.position);a.MoveProxy(this.m_proxy,this.m_aabb,c)}};aa.b2FixtureDef=function(){this.filter=new N};aa.prototype.b2FixtureDef=function(){this.userData=this.shape=null;this.friction=0.2;this.density=this.restitution=0;this.filter.categoryBits=1;this.filter.maskBits=65535;this.filter.groupIndex=0;this.isSensor=false};Z.b2Island=function(){};Z.prototype.b2Island=function(){this.m_bodies=new Vector;this.m_contacts=new Vector;this.m_joints=new Vector};
+Z.prototype.Initialize=function(a,c,g,b,e,f){if(a===undefined)a=0;if(c===undefined)c=0;if(g===undefined)g=0;var m=0;this.m_bodyCapacity=a;this.m_contactCapacity=c;this.m_jointCapacity=g;this.m_jointCount=this.m_contactCount=this.m_bodyCount=0;this.m_allocator=b;this.m_listener=e;this.m_contactSolver=f;for(m=this.m_bodies.length;m<a;m++)this.m_bodies[m]=null;for(m=this.m_contacts.length;m<c;m++)this.m_contacts[m]=null;for(m=this.m_joints.length;m<g;m++)this.m_joints[m]=null};Z.prototype.Clear=function(){this.m_jointCount=
+this.m_contactCount=this.m_bodyCount=0};Z.prototype.Solve=function(a,c,g){var b=0,e=0,f;for(b=0;b<this.m_bodyCount;++b){e=this.m_bodies[b];if(e.GetType()==k.b2_dynamicBody){e.m_linearVelocity.x+=a.dt*(c.x+e.m_invMass*e.m_force.x);e.m_linearVelocity.y+=a.dt*(c.y+e.m_invMass*e.m_force.y);e.m_angularVelocity+=a.dt*e.m_invI*e.m_torque;e.m_linearVelocity.Multiply(F.Clamp(1-a.dt*e.m_linearDamping,0,1));e.m_angularVelocity*=F.Clamp(1-a.dt*e.m_angularDamping,0,1)}}this.m_contactSolver.Initialize(a,this.m_contacts,
+this.m_contactCount,this.m_allocator);c=this.m_contactSolver;c.InitVelocityConstraints(a);for(b=0;b<this.m_jointCount;++b){f=this.m_joints[b];f.InitVelocityConstraints(a)}for(b=0;b<a.velocityIterations;++b){for(e=0;e<this.m_jointCount;++e){f=this.m_joints[e];f.SolveVelocityConstraints(a)}c.SolveVelocityConstraints()}for(b=0;b<this.m_jointCount;++b){f=this.m_joints[b];f.FinalizeVelocityConstraints()}c.FinalizeVelocityConstraints();for(b=0;b<this.m_bodyCount;++b){e=this.m_bodies[b];if(e.GetType()!=
+k.b2_staticBody){var m=a.dt*e.m_linearVelocity.x,r=a.dt*e.m_linearVelocity.y;if(m*m+r*r>A.b2_maxTranslationSquared){e.m_linearVelocity.Normalize();e.m_linearVelocity.x*=A.b2_maxTranslation*a.inv_dt;e.m_linearVelocity.y*=A.b2_maxTranslation*a.inv_dt}m=a.dt*e.m_angularVelocity;if(m*m>A.b2_maxRotationSquared)e.m_angularVelocity=e.m_angularVelocity<0?-A.b2_maxRotation*a.inv_dt:A.b2_maxRotation*a.inv_dt;e.m_sweep.c0.SetV(e.m_sweep.c);e.m_sweep.a0=e.m_sweep.a;e.m_sweep.c.x+=a.dt*e.m_linearVelocity.x;e.m_sweep.c.y+=
+a.dt*e.m_linearVelocity.y;e.m_sweep.a+=a.dt*e.m_angularVelocity;e.SynchronizeTransform()}}for(b=0;b<a.positionIterations;++b){m=c.SolvePositionConstraints(A.b2_contactBaumgarte);r=true;for(e=0;e<this.m_jointCount;++e){f=this.m_joints[e];f=f.SolvePositionConstraints(A.b2_contactBaumgarte);r=r&&f}if(m&&r)break}this.Report(c.m_constraints);if(g){g=Number.MAX_VALUE;c=A.b2_linearSleepTolerance*A.b2_linearSleepTolerance;m=A.b2_angularSleepTolerance*A.b2_angularSleepTolerance;for(b=0;b<this.m_bodyCount;++b){e=
+this.m_bodies[b];if(e.GetType()!=k.b2_staticBody){if((e.m_flags&k.e_allowSleepFlag)==0)g=e.m_sleepTime=0;if((e.m_flags&k.e_allowSleepFlag)==0||e.m_angularVelocity*e.m_angularVelocity>m||F.Dot(e.m_linearVelocity,e.m_linearVelocity)>c)g=e.m_sleepTime=0;else{e.m_sleepTime+=a.dt;g=F.Min(g,e.m_sleepTime)}}}if(g>=A.b2_timeToSleep)for(b=0;b<this.m_bodyCount;++b){e=this.m_bodies[b];e.SetAwake(false)}}};Z.prototype.SolveTOI=function(a){var c=0,g=0;this.m_contactSolver.Initialize(a,this.m_contacts,this.m_contactCount,
+this.m_allocator);var b=this.m_contactSolver;for(c=0;c<this.m_jointCount;++c)this.m_joints[c].InitVelocityConstraints(a);for(c=0;c<a.velocityIterations;++c){b.SolveVelocityConstraints();for(g=0;g<this.m_jointCount;++g)this.m_joints[g].SolveVelocityConstraints(a)}for(c=0;c<this.m_bodyCount;++c){g=this.m_bodies[c];if(g.GetType()!=k.b2_staticBody){var e=a.dt*g.m_linearVelocity.x,f=a.dt*g.m_linearVelocity.y;if(e*e+f*f>A.b2_maxTranslationSquared){g.m_linearVelocity.Normalize();g.m_linearVelocity.x*=A.b2_maxTranslation*
+a.inv_dt;g.m_linearVelocity.y*=A.b2_maxTranslation*a.inv_dt}e=a.dt*g.m_angularVelocity;if(e*e>A.b2_maxRotationSquared)g.m_angularVelocity=g.m_angularVelocity<0?-A.b2_maxRotation*a.inv_dt:A.b2_maxRotation*a.inv_dt;g.m_sweep.c0.SetV(g.m_sweep.c);g.m_sweep.a0=g.m_sweep.a;g.m_sweep.c.x+=a.dt*g.m_linearVelocity.x;g.m_sweep.c.y+=a.dt*g.m_linearVelocity.y;g.m_sweep.a+=a.dt*g.m_angularVelocity;g.SynchronizeTransform()}}for(c=0;c<a.positionIterations;++c){e=b.SolvePositionConstraints(0.75);f=true;for(g=0;g<
+this.m_jointCount;++g){var m=this.m_joints[g].SolvePositionConstraints(A.b2_contactBaumgarte);f=f&&m}if(e&&f)break}this.Report(b.m_constraints)};Z.prototype.Report=function(a){if(this.m_listener!=null)for(var c=0;c<this.m_contactCount;++c){for(var g=this.m_contacts[c],b=a[c],e=0;e<b.pointCount;++e){Z.s_impulse.normalImpulses[e]=b.points[e].normalImpulse;Z.s_impulse.tangentImpulses[e]=b.points[e].tangentImpulse}this.m_listener.PostSolve(g,Z.s_impulse)}};Z.prototype.AddBody=function(a){a.m_islandIndex=
+this.m_bodyCount;this.m_bodies[this.m_bodyCount++]=a};Z.prototype.AddContact=function(a){this.m_contacts[this.m_contactCount++]=a};Z.prototype.AddJoint=function(a){this.m_joints[this.m_jointCount++]=a};Box2D.postDefs.push(function(){Box2D.Dynamics.b2Island.s_impulse=new D});d.b2TimeStep=function(){};d.prototype.Set=function(a){this.dt=a.dt;this.inv_dt=a.inv_dt;this.positionIterations=a.positionIterations;this.velocityIterations=a.velocityIterations;this.warmStarting=a.warmStarting};h.b2World=function(){this.s_stack=
+new Vector;this.m_contactManager=new O;this.m_contactSolver=new o;this.m_island=new Z};h.prototype.b2World=function(a,c){this.m_controllerList=this.m_jointList=this.m_contactList=this.m_bodyList=this.m_debugDraw=this.m_destructionListener=null;this.m_controllerCount=this.m_jointCount=this.m_contactCount=this.m_bodyCount=0;h.m_warmStarting=true;h.m_continuousPhysics=true;this.m_allowSleep=c;this.m_gravity=a;this.m_inv_dt0=0;this.m_contactManager.m_world=this;this.m_groundBody=this.CreateBody(new z)};
+h.prototype.SetDestructionListener=function(a){this.m_destructionListener=a};h.prototype.SetContactFilter=function(a){this.m_contactManager.m_contactFilter=a};h.prototype.SetContactListener=function(a){this.m_contactManager.m_contactListener=a};h.prototype.SetDebugDraw=function(a){this.m_debugDraw=a};h.prototype.SetBroadPhase=function(a){var c=this.m_contactManager.m_broadPhase;this.m_contactManager.m_broadPhase=a;for(var g=this.m_bodyList;g;g=g.m_next)for(var b=g.m_fixtureList;b;b=b.m_next)b.m_proxy=
+a.CreateProxy(c.GetFatAABB(b.m_proxy),b)};h.prototype.Validate=function(){this.m_contactManager.m_broadPhase.Validate()};h.prototype.GetProxyCount=function(){return this.m_contactManager.m_broadPhase.GetProxyCount()};h.prototype.CreateBody=function(a){if(this.IsLocked()==true)return null;a=new k(a,this);a.m_prev=null;if(a.m_next=this.m_bodyList)this.m_bodyList.m_prev=a;this.m_bodyList=a;++this.m_bodyCount;return a};h.prototype.DestroyBody=function(a){if(this.IsLocked()!=true){for(var c=a.m_jointList;c;){var g=
+c;c=c.next;this.m_destructionListener&&this.m_destructionListener.SayGoodbyeJoint(g.joint);this.DestroyJoint(g.joint)}for(c=a.m_controllerList;c;){g=c;c=c.nextController;g.controller.RemoveBody(a)}for(c=a.m_contactList;c;){g=c;c=c.next;this.m_contactManager.Destroy(g.contact)}a.m_contactList=null;for(c=a.m_fixtureList;c;){g=c;c=c.m_next;this.m_destructionListener&&this.m_destructionListener.SayGoodbyeFixture(g);g.DestroyProxy(this.m_contactManager.m_broadPhase);g.Destroy()}a.m_fixtureList=null;a.m_fixtureCount=
+0;if(a.m_prev)a.m_prev.m_next=a.m_next;if(a.m_next)a.m_next.m_prev=a.m_prev;if(a==this.m_bodyList)this.m_bodyList=a.m_next;--this.m_bodyCount}};h.prototype.CreateJoint=function(a){var c=q.Create(a,null);c.m_prev=null;if(c.m_next=this.m_jointList)this.m_jointList.m_prev=c;this.m_jointList=c;++this.m_jointCount;c.m_edgeA.joint=c;c.m_edgeA.other=c.m_bodyB;c.m_edgeA.prev=null;if(c.m_edgeA.next=c.m_bodyA.m_jointList)c.m_bodyA.m_jointList.prev=c.m_edgeA;c.m_bodyA.m_jointList=c.m_edgeA;c.m_edgeB.joint=c;
+c.m_edgeB.other=c.m_bodyA;c.m_edgeB.prev=null;if(c.m_edgeB.next=c.m_bodyB.m_jointList)c.m_bodyB.m_jointList.prev=c.m_edgeB;c.m_bodyB.m_jointList=c.m_edgeB;var g=a.bodyA,b=a.bodyB;if(a.collideConnected==false)for(a=b.GetContactList();a;){a.other==g&&a.contact.FlagForFiltering();a=a.next}return c};h.prototype.DestroyJoint=function(a){var c=a.m_collideConnected;if(a.m_prev)a.m_prev.m_next=a.m_next;if(a.m_next)a.m_next.m_prev=a.m_prev;if(a==this.m_jointList)this.m_jointList=a.m_next;var g=a.m_bodyA,b=
+a.m_bodyB;g.SetAwake(true);b.SetAwake(true);if(a.m_edgeA.prev)a.m_edgeA.prev.next=a.m_edgeA.next;if(a.m_edgeA.next)a.m_edgeA.next.prev=a.m_edgeA.prev;if(a.m_edgeA==g.m_jointList)g.m_jointList=a.m_edgeA.next;a.m_edgeA.prev=null;a.m_edgeA.next=null;if(a.m_edgeB.prev)a.m_edgeB.prev.next=a.m_edgeB.next;if(a.m_edgeB.next)a.m_edgeB.next.prev=a.m_edgeB.prev;if(a.m_edgeB==b.m_jointList)b.m_jointList=a.m_edgeB.next;a.m_edgeB.prev=null;a.m_edgeB.next=null;q.Destroy(a,null);--this.m_jointCount;if(c==false)for(a=
+b.GetContactList();a;){a.other==g&&a.contact.FlagForFiltering();a=a.next}};h.prototype.AddController=function(a){a.m_next=this.m_controllerList;a.m_prev=null;this.m_controllerList=a;a.m_world=this;this.m_controllerCount++;return a};h.prototype.RemoveController=function(a){if(a.m_prev)a.m_prev.m_next=a.m_next;if(a.m_next)a.m_next.m_prev=a.m_prev;if(this.m_controllerList==a)this.m_controllerList=a.m_next;this.m_controllerCount--};h.prototype.CreateController=function(a){if(a.m_world!=this)throw Error("Controller can only be a member of one world");
+a.m_next=this.m_controllerList;a.m_prev=null;if(this.m_controllerList)this.m_controllerList.m_prev=a;this.m_controllerList=a;++this.m_controllerCount;a.m_world=this;return a};h.prototype.DestroyController=function(a){a.Clear();if(a.m_next)a.m_next.m_prev=a.m_prev;if(a.m_prev)a.m_prev.m_next=a.m_next;if(a==this.m_controllerList)this.m_controllerList=a.m_next;--this.m_controllerCount};h.prototype.SetWarmStarting=function(a){h.m_warmStarting=a};h.prototype.SetContinuousPhysics=function(a){h.m_continuousPhysics=
+a};h.prototype.GetBodyCount=function(){return this.m_bodyCount};h.prototype.GetJointCount=function(){return this.m_jointCount};h.prototype.GetContactCount=function(){return this.m_contactCount};h.prototype.SetGravity=function(a){this.m_gravity=a};h.prototype.GetGravity=function(){return this.m_gravity};h.prototype.GetGroundBody=function(){return this.m_groundBody};h.prototype.Step=function(a,c,g){if(a===undefined)a=0;if(c===undefined)c=0;if(g===undefined)g=0;if(this.m_flags&h.e_newFixture){this.m_contactManager.FindNewContacts();
+this.m_flags&=~h.e_newFixture}this.m_flags|=h.e_locked;var b=h.s_timestep2;b.dt=a;b.velocityIterations=c;b.positionIterations=g;b.inv_dt=a>0?1/a:0;b.dtRatio=this.m_inv_dt0*a;b.warmStarting=h.m_warmStarting;this.m_contactManager.Collide();b.dt>0&&this.Solve(b);h.m_continuousPhysics&&b.dt>0&&this.SolveTOI(b);if(b.dt>0)this.m_inv_dt0=b.inv_dt;this.m_flags&=~h.e_locked};h.prototype.ClearForces=function(){for(var a=this.m_bodyList;a;a=a.m_next){a.m_force.SetZero();a.m_torque=0}};h.prototype.DrawDebugData=
+function(){if(this.m_debugDraw!=null){this.m_debugDraw.m_sprite.graphics.clear();var a=this.m_debugDraw.GetFlags(),c,g,b;new y;new y;new y;var e;new U;new U;e=[new y,new y,new y,new y];var f=new w(0,0,0);if(a&E.e_shapeBit)for(c=this.m_bodyList;c;c=c.m_next){e=c.m_xf;for(g=c.GetFixtureList();g;g=g.m_next){b=g.GetShape();if(c.IsActive()==false)f.Set(0.5,0.5,0.3);else if(c.GetType()==k.b2_staticBody)f.Set(0.5,0.9,0.5);else if(c.GetType()==k.b2_kinematicBody)f.Set(0.5,0.5,0.9);else c.IsAwake()==false?
+f.Set(0.6,0.6,0.6):f.Set(0.9,0.7,0.7);this.DrawShape(b,e,f)}}if(a&E.e_jointBit)for(c=this.m_jointList;c;c=c.m_next)this.DrawJoint(c);if(a&E.e_controllerBit)for(c=this.m_controllerList;c;c=c.m_next)c.Draw(this.m_debugDraw);if(a&E.e_pairBit){f.Set(0.3,0.9,0.9);for(c=this.m_contactManager.m_contactList;c;c=c.GetNext()){b=c.GetFixtureA();g=c.GetFixtureB();b=b.GetAABB().GetCenter();g=g.GetAABB().GetCenter();this.m_debugDraw.DrawSegment(b,g,f)}}if(a&E.e_aabbBit){b=this.m_contactManager.m_broadPhase;e=[new y,
+new y,new y,new y];for(c=this.m_bodyList;c;c=c.GetNext())if(c.IsActive()!=false)for(g=c.GetFixtureList();g;g=g.GetNext()){var m=b.GetFatAABB(g.m_proxy);e[0].Set(m.lowerBound.x,m.lowerBound.y);e[1].Set(m.upperBound.x,m.lowerBound.y);e[2].Set(m.upperBound.x,m.upperBound.y);e[3].Set(m.lowerBound.x,m.upperBound.y);this.m_debugDraw.DrawPolygon(e,4,f)}}if(a&E.e_centerOfMassBit)for(c=this.m_bodyList;c;c=c.m_next){e=h.s_xf;e.R=c.m_xf.R;e.position=c.GetWorldCenter();this.m_debugDraw.DrawTransform(e)}}};h.prototype.QueryAABB=
+function(a,c){var g=this.m_contactManager.m_broadPhase;g.Query(function(b){return a(g.GetUserData(b))},c)};h.prototype.QueryShape=function(a,c,g){if(g===undefined)g=null;if(g==null){g=new K;g.SetIdentity()}var b=this.m_contactManager.m_broadPhase,e=new U;c.ComputeAABB(e,g);b.Query(function(f){f=b.GetUserData(f)instanceof S?b.GetUserData(f):null;if(Y.TestOverlap(c,g,f.GetShape(),f.GetBody().GetTransform()))return a(f);return true},e)};h.prototype.QueryPoint=function(a,c){var g=this.m_contactManager.m_broadPhase,
+b=new U;b.lowerBound.Set(c.x-A.b2_linearSlop,c.y-A.b2_linearSlop);b.upperBound.Set(c.x+A.b2_linearSlop,c.y+A.b2_linearSlop);g.Query(function(e){e=g.GetUserData(e)instanceof S?g.GetUserData(e):null;if(e.TestPoint(c))return a(e);return true},b)};h.prototype.RayCast=function(a,c,g){var b=this.m_contactManager.m_broadPhase,e=new V,f=new Q(c,g);b.RayCast(function(m,r){var s=b.GetUserData(r);s=s instanceof S?s:null;if(s.RayCast(e,m)){var v=e.fraction,t=new y((1-v)*c.x+v*g.x,(1-v)*c.y+v*g.y);return a(s,
+t,e.normal,v)}return m.maxFraction},f)};h.prototype.RayCastOne=function(a,c){var g;this.RayCast(function(b,e,f,m){if(m===undefined)m=0;g=b;return m},a,c);return g};h.prototype.RayCastAll=function(a,c){var g=new Vector;this.RayCast(function(b){g[g.length]=b;return 1},a,c);return g};h.prototype.GetBodyList=function(){return this.m_bodyList};h.prototype.GetJointList=function(){return this.m_jointList};h.prototype.GetContactList=function(){return this.m_contactList};h.prototype.IsLocked=function(){return(this.m_flags&
+h.e_locked)>0};h.prototype.Solve=function(a){for(var c,g=this.m_controllerList;g;g=g.m_next)g.Step(a);g=this.m_island;g.Initialize(this.m_bodyCount,this.m_contactCount,this.m_jointCount,null,this.m_contactManager.m_contactListener,this.m_contactSolver);for(c=this.m_bodyList;c;c=c.m_next)c.m_flags&=~k.e_islandFlag;for(var b=this.m_contactList;b;b=b.m_next)b.m_flags&=~l.e_islandFlag;for(b=this.m_jointList;b;b=b.m_next)b.m_islandFlag=false;parseInt(this.m_bodyCount);b=this.s_stack;for(var e=this.m_bodyList;e;e=
+e.m_next)if(!(e.m_flags&k.e_islandFlag))if(!(e.IsAwake()==false||e.IsActive()==false))if(e.GetType()!=k.b2_staticBody){g.Clear();var f=0;b[f++]=e;for(e.m_flags|=k.e_islandFlag;f>0;){c=b[--f];g.AddBody(c);c.IsAwake()==false&&c.SetAwake(true);if(c.GetType()!=k.b2_staticBody){for(var m,r=c.m_contactList;r;r=r.next)if(!(r.contact.m_flags&l.e_islandFlag))if(!(r.contact.IsSensor()==true||r.contact.IsEnabled()==false||r.contact.IsTouching()==false)){g.AddContact(r.contact);r.contact.m_flags|=l.e_islandFlag;
+m=r.other;if(!(m.m_flags&k.e_islandFlag)){b[f++]=m;m.m_flags|=k.e_islandFlag}}for(c=c.m_jointList;c;c=c.next)if(c.joint.m_islandFlag!=true){m=c.other;if(m.IsActive()!=false){g.AddJoint(c.joint);c.joint.m_islandFlag=true;if(!(m.m_flags&k.e_islandFlag)){b[f++]=m;m.m_flags|=k.e_islandFlag}}}}}g.Solve(a,this.m_gravity,this.m_allowSleep);for(f=0;f<g.m_bodyCount;++f){c=g.m_bodies[f];if(c.GetType()==k.b2_staticBody)c.m_flags&=~k.e_islandFlag}}for(f=0;f<b.length;++f){if(!b[f])break;b[f]=null}for(c=this.m_bodyList;c;c=
+c.m_next)c.IsAwake()==false||c.IsActive()==false||c.GetType()!=k.b2_staticBody&&c.SynchronizeFixtures();this.m_contactManager.FindNewContacts()};h.prototype.SolveTOI=function(a){var c,g,b,e=this.m_island;e.Initialize(this.m_bodyCount,A.b2_maxTOIContactsPerIsland,A.b2_maxTOIJointsPerIsland,null,this.m_contactManager.m_contactListener,this.m_contactSolver);var f=h.s_queue;for(c=this.m_bodyList;c;c=c.m_next){c.m_flags&=~k.e_islandFlag;c.m_sweep.t0=0}for(b=this.m_contactList;b;b=b.m_next)b.m_flags&=~(l.e_toiFlag|
+l.e_islandFlag);for(b=this.m_jointList;b;b=b.m_next)b.m_islandFlag=false;for(;;){var m=null,r=1;for(b=this.m_contactList;b;b=b.m_next)if(!(b.IsSensor()==true||b.IsEnabled()==false||b.IsContinuous()==false)){c=1;if(b.m_flags&l.e_toiFlag)c=b.m_toi;else{c=b.m_fixtureA;g=b.m_fixtureB;c=c.m_body;g=g.m_body;if((c.GetType()!=k.b2_dynamicBody||c.IsAwake()==false)&&(g.GetType()!=k.b2_dynamicBody||g.IsAwake()==false))continue;var s=c.m_sweep.t0;if(c.m_sweep.t0<g.m_sweep.t0){s=g.m_sweep.t0;c.m_sweep.Advance(s)}else if(g.m_sweep.t0<
+c.m_sweep.t0){s=c.m_sweep.t0;g.m_sweep.Advance(s)}c=b.ComputeTOI(c.m_sweep,g.m_sweep);A.b2Assert(0<=c&&c<=1);if(c>0&&c<1){c=(1-c)*s+c;if(c>1)c=1}b.m_toi=c;b.m_flags|=l.e_toiFlag}if(Number.MIN_VALUE<c&&c<r){m=b;r=c}}if(m==null||1-100*Number.MIN_VALUE<r)break;c=m.m_fixtureA;g=m.m_fixtureB;c=c.m_body;g=g.m_body;h.s_backupA.Set(c.m_sweep);h.s_backupB.Set(g.m_sweep);c.Advance(r);g.Advance(r);m.Update(this.m_contactManager.m_contactListener);m.m_flags&=~l.e_toiFlag;if(m.IsSensor()==true||m.IsEnabled()==
+false){c.m_sweep.Set(h.s_backupA);g.m_sweep.Set(h.s_backupB);c.SynchronizeTransform();g.SynchronizeTransform()}else if(m.IsTouching()!=false){c=c;if(c.GetType()!=k.b2_dynamicBody)c=g;e.Clear();m=b=0;f[b+m++]=c;for(c.m_flags|=k.e_islandFlag;m>0;){c=f[b++];--m;e.AddBody(c);c.IsAwake()==false&&c.SetAwake(true);if(c.GetType()==k.b2_dynamicBody){for(g=c.m_contactList;g;g=g.next){if(e.m_contactCount==e.m_contactCapacity)break;if(!(g.contact.m_flags&l.e_islandFlag))if(!(g.contact.IsSensor()==true||g.contact.IsEnabled()==
+false||g.contact.IsTouching()==false)){e.AddContact(g.contact);g.contact.m_flags|=l.e_islandFlag;s=g.other;if(!(s.m_flags&k.e_islandFlag)){if(s.GetType()!=k.b2_staticBody){s.Advance(r);s.SetAwake(true)}f[b+m]=s;++m;s.m_flags|=k.e_islandFlag}}}for(c=c.m_jointList;c;c=c.next)if(e.m_jointCount!=e.m_jointCapacity)if(c.joint.m_islandFlag!=true){s=c.other;if(s.IsActive()!=false){e.AddJoint(c.joint);c.joint.m_islandFlag=true;if(!(s.m_flags&k.e_islandFlag)){if(s.GetType()!=k.b2_staticBody){s.Advance(r);s.SetAwake(true)}f[b+
+m]=s;++m;s.m_flags|=k.e_islandFlag}}}}}b=h.s_timestep;b.warmStarting=false;b.dt=(1-r)*a.dt;b.inv_dt=1/b.dt;b.dtRatio=0;b.velocityIterations=a.velocityIterations;b.positionIterations=a.positionIterations;e.SolveTOI(b);for(r=r=0;r<e.m_bodyCount;++r){c=e.m_bodies[r];c.m_flags&=~k.e_islandFlag;if(c.IsAwake()!=false)if(c.GetType()==k.b2_dynamicBody){c.SynchronizeFixtures();for(g=c.m_contactList;g;g=g.next)g.contact.m_flags&=~l.e_toiFlag}}for(r=0;r<e.m_contactCount;++r){b=e.m_contacts[r];b.m_flags&=~(l.e_toiFlag|
+l.e_islandFlag)}for(r=0;r<e.m_jointCount;++r){b=e.m_joints[r];b.m_islandFlag=false}this.m_contactManager.FindNewContacts()}}};h.prototype.DrawJoint=function(a){var c=a.GetBodyA(),g=a.GetBodyB(),b=c.m_xf.position,e=g.m_xf.position,f=a.GetAnchorA(),m=a.GetAnchorB(),r=h.s_jointColor;switch(a.m_type){case q.e_distanceJoint:this.m_debugDraw.DrawSegment(f,m,r);break;case q.e_pulleyJoint:c=a instanceof n?a:null;a=c.GetGroundAnchorA();c=c.GetGroundAnchorB();this.m_debugDraw.DrawSegment(a,f,r);this.m_debugDraw.DrawSegment(c,
+m,r);this.m_debugDraw.DrawSegment(a,c,r);break;case q.e_mouseJoint:this.m_debugDraw.DrawSegment(f,m,r);break;default:c!=this.m_groundBody&&this.m_debugDraw.DrawSegment(b,f,r);this.m_debugDraw.DrawSegment(f,m,r);g!=this.m_groundBody&&this.m_debugDraw.DrawSegment(e,m,r)}};h.prototype.DrawShape=function(a,c,g){switch(a.m_type){case Y.e_circleShape:var b=a instanceof M?a:null;this.m_debugDraw.DrawSolidCircle(F.MulX(c,b.m_p),b.m_radius,c.R.col1,g);break;case Y.e_polygonShape:b=0;b=a instanceof W?a:null;
+a=parseInt(b.GetVertexCount());var e=b.GetVertices(),f=new Vector(a);for(b=0;b<a;++b)f[b]=F.MulX(c,e[b]);this.m_debugDraw.DrawSolidPolygon(f,a,g);break;case Y.e_edgeShape:b=a instanceof L?a:null;this.m_debugDraw.DrawSegment(F.MulX(c,b.GetVertex1()),F.MulX(c,b.GetVertex2()),g)}};Box2D.postDefs.push(function(){Box2D.Dynamics.b2World.s_timestep2=new d;Box2D.Dynamics.b2World.s_xf=new K;Box2D.Dynamics.b2World.s_backupA=new G;Box2D.Dynamics.b2World.s_backupB=new G;Box2D.Dynamics.b2World.s_timestep=new d;
+Box2D.Dynamics.b2World.s_queue=new Vector;Box2D.Dynamics.b2World.s_jointColor=new w(0.5,0.8,0.8);Box2D.Dynamics.b2World.e_newFixture=1;Box2D.Dynamics.b2World.e_locked=2})})();
+(function(){var F=Box2D.Collision.Shapes.b2CircleShape,G=Box2D.Collision.Shapes.b2EdgeShape,K=Box2D.Collision.Shapes.b2PolygonShape,y=Box2D.Collision.Shapes.b2Shape,w=Box2D.Dynamics.Contacts.b2CircleContact,A=Box2D.Dynamics.Contacts.b2Contact,U=Box2D.Dynamics.Contacts.b2ContactConstraint,p=Box2D.Dynamics.Contacts.b2ContactConstraintPoint,B=Box2D.Dynamics.Contacts.b2ContactEdge,Q=Box2D.Dynamics.Contacts.b2ContactFactory,V=Box2D.Dynamics.Contacts.b2ContactRegister,M=Box2D.Dynamics.Contacts.b2ContactResult,
+L=Box2D.Dynamics.Contacts.b2ContactSolver,I=Box2D.Dynamics.Contacts.b2EdgeAndCircleContact,W=Box2D.Dynamics.Contacts.b2NullContact,Y=Box2D.Dynamics.Contacts.b2PolyAndCircleContact,k=Box2D.Dynamics.Contacts.b2PolyAndEdgeContact,z=Box2D.Dynamics.Contacts.b2PolygonContact,u=Box2D.Dynamics.Contacts.b2PositionSolverManifold,D=Box2D.Dynamics.b2Body,H=Box2D.Dynamics.b2TimeStep,O=Box2D.Common.b2Settings,E=Box2D.Common.Math.b2Mat22,R=Box2D.Common.Math.b2Math,N=Box2D.Common.Math.b2Vec2,S=Box2D.Collision.b2Collision,
+aa=Box2D.Collision.b2ContactID,Z=Box2D.Collision.b2Manifold,d=Box2D.Collision.b2TimeOfImpact,h=Box2D.Collision.b2TOIInput,l=Box2D.Collision.b2WorldManifold;Box2D.inherit(w,Box2D.Dynamics.Contacts.b2Contact);w.prototype.__super=Box2D.Dynamics.Contacts.b2Contact.prototype;w.b2CircleContact=function(){Box2D.Dynamics.Contacts.b2Contact.b2Contact.apply(this,arguments)};w.Create=function(){return new w};w.Destroy=function(){};w.prototype.Reset=function(j,o){this.__super.Reset.call(this,j,o)};w.prototype.Evaluate=
+function(){var j=this.m_fixtureA.GetBody(),o=this.m_fixtureB.GetBody();S.CollideCircles(this.m_manifold,this.m_fixtureA.GetShape()instanceof F?this.m_fixtureA.GetShape():null,j.m_xf,this.m_fixtureB.GetShape()instanceof F?this.m_fixtureB.GetShape():null,o.m_xf)};A.b2Contact=function(){this.m_nodeA=new B;this.m_nodeB=new B;this.m_manifold=new Z;this.m_oldManifold=new Z};A.prototype.GetManifold=function(){return this.m_manifold};A.prototype.GetWorldManifold=function(j){var o=this.m_fixtureA.GetBody(),
+q=this.m_fixtureB.GetBody(),n=this.m_fixtureA.GetShape(),a=this.m_fixtureB.GetShape();j.Initialize(this.m_manifold,o.GetTransform(),n.m_radius,q.GetTransform(),a.m_radius)};A.prototype.IsTouching=function(){return(this.m_flags&A.e_touchingFlag)==A.e_touchingFlag};A.prototype.IsContinuous=function(){return(this.m_flags&A.e_continuousFlag)==A.e_continuousFlag};A.prototype.SetSensor=function(j){if(j)this.m_flags|=A.e_sensorFlag;else this.m_flags&=~A.e_sensorFlag};A.prototype.IsSensor=function(){return(this.m_flags&
+A.e_sensorFlag)==A.e_sensorFlag};A.prototype.SetEnabled=function(j){if(j)this.m_flags|=A.e_enabledFlag;else this.m_flags&=~A.e_enabledFlag};A.prototype.IsEnabled=function(){return(this.m_flags&A.e_enabledFlag)==A.e_enabledFlag};A.prototype.GetNext=function(){return this.m_next};A.prototype.GetFixtureA=function(){return this.m_fixtureA};A.prototype.GetFixtureB=function(){return this.m_fixtureB};A.prototype.FlagForFiltering=function(){this.m_flags|=A.e_filterFlag};A.prototype.b2Contact=function(){};
+A.prototype.Reset=function(j,o){if(j===undefined)j=null;if(o===undefined)o=null;this.m_flags=A.e_enabledFlag;if(!j||!o)this.m_fixtureB=this.m_fixtureA=null;else{if(j.IsSensor()||o.IsSensor())this.m_flags|=A.e_sensorFlag;var q=j.GetBody(),n=o.GetBody();if(q.GetType()!=D.b2_dynamicBody||q.IsBullet()||n.GetType()!=D.b2_dynamicBody||n.IsBullet())this.m_flags|=A.e_continuousFlag;this.m_fixtureA=j;this.m_fixtureB=o;this.m_manifold.m_pointCount=0;this.m_next=this.m_prev=null;this.m_nodeA.contact=null;this.m_nodeA.prev=
+null;this.m_nodeA.next=null;this.m_nodeA.other=null;this.m_nodeB.contact=null;this.m_nodeB.prev=null;this.m_nodeB.next=null;this.m_nodeB.other=null}};A.prototype.Update=function(j){var o=this.m_oldManifold;this.m_oldManifold=this.m_manifold;this.m_manifold=o;this.m_flags|=A.e_enabledFlag;var q=false;o=(this.m_flags&A.e_touchingFlag)==A.e_touchingFlag;var n=this.m_fixtureA.m_body,a=this.m_fixtureB.m_body,c=this.m_fixtureA.m_aabb.TestOverlap(this.m_fixtureB.m_aabb);if(this.m_flags&A.e_sensorFlag){if(c){q=
+this.m_fixtureA.GetShape();c=this.m_fixtureB.GetShape();n=n.GetTransform();a=a.GetTransform();q=y.TestOverlap(q,n,c,a)}this.m_manifold.m_pointCount=0}else{if(n.GetType()!=D.b2_dynamicBody||n.IsBullet()||a.GetType()!=D.b2_dynamicBody||a.IsBullet())this.m_flags|=A.e_continuousFlag;else this.m_flags&=~A.e_continuousFlag;if(c){this.Evaluate();q=this.m_manifold.m_pointCount>0;for(c=0;c<this.m_manifold.m_pointCount;++c){var g=this.m_manifold.m_points[c];g.m_normalImpulse=0;g.m_tangentImpulse=0;for(var b=
+g.m_id,e=0;e<this.m_oldManifold.m_pointCount;++e){var f=this.m_oldManifold.m_points[e];if(f.m_id.key==b.key){g.m_normalImpulse=f.m_normalImpulse;g.m_tangentImpulse=f.m_tangentImpulse;break}}}}else this.m_manifold.m_pointCount=0;if(q!=o){n.SetAwake(true);a.SetAwake(true)}}if(q)this.m_flags|=A.e_touchingFlag;else this.m_flags&=~A.e_touchingFlag;o==false&&q==true&&j.BeginContact(this);o==true&&q==false&&j.EndContact(this);(this.m_flags&A.e_sensorFlag)==0&&j.PreSolve(this,this.m_oldManifold)};A.prototype.Evaluate=
+function(){};A.prototype.ComputeTOI=function(j,o){A.s_input.proxyA.Set(this.m_fixtureA.GetShape());A.s_input.proxyB.Set(this.m_fixtureB.GetShape());A.s_input.sweepA=j;A.s_input.sweepB=o;A.s_input.tolerance=O.b2_linearSlop;return d.TimeOfImpact(A.s_input)};Box2D.postDefs.push(function(){Box2D.Dynamics.Contacts.b2Contact.e_sensorFlag=1;Box2D.Dynamics.Contacts.b2Contact.e_continuousFlag=2;Box2D.Dynamics.Contacts.b2Contact.e_islandFlag=4;Box2D.Dynamics.Contacts.b2Contact.e_toiFlag=8;Box2D.Dynamics.Contacts.b2Contact.e_touchingFlag=
+16;Box2D.Dynamics.Contacts.b2Contact.e_enabledFlag=32;Box2D.Dynamics.Contacts.b2Contact.e_filterFlag=64;Box2D.Dynamics.Contacts.b2Contact.s_input=new h});U.b2ContactConstraint=function(){this.localPlaneNormal=new N;this.localPoint=new N;this.normal=new N;this.normalMass=new E;this.K=new E};U.prototype.b2ContactConstraint=function(){this.points=new Vector(O.b2_maxManifoldPoints);for(var j=0;j<O.b2_maxManifoldPoints;j++)this.points[j]=new p};p.b2ContactConstraintPoint=function(){this.localPoint=new N;
+this.rA=new N;this.rB=new N};B.b2ContactEdge=function(){};Q.b2ContactFactory=function(){};Q.prototype.b2ContactFactory=function(j){this.m_allocator=j;this.InitializeRegisters()};Q.prototype.AddType=function(j,o,q,n){if(q===undefined)q=0;if(n===undefined)n=0;this.m_registers[q][n].createFcn=j;this.m_registers[q][n].destroyFcn=o;this.m_registers[q][n].primary=true;if(q!=n){this.m_registers[n][q].createFcn=j;this.m_registers[n][q].destroyFcn=o;this.m_registers[n][q].primary=false}};Q.prototype.InitializeRegisters=
+function(){this.m_registers=new Vector(y.e_shapeTypeCount);for(var j=0;j<y.e_shapeTypeCount;j++){this.m_registers[j]=new Vector(y.e_shapeTypeCount);for(var o=0;o<y.e_shapeTypeCount;o++)this.m_registers[j][o]=new V}this.AddType(w.Create,w.Destroy,y.e_circleShape,y.e_circleShape);this.AddType(Y.Create,Y.Destroy,y.e_polygonShape,y.e_circleShape);this.AddType(z.Create,z.Destroy,y.e_polygonShape,y.e_polygonShape);this.AddType(I.Create,I.Destroy,y.e_edgeShape,y.e_circleShape);this.AddType(k.Create,k.Destroy,
+y.e_polygonShape,y.e_edgeShape)};Q.prototype.Create=function(j,o){var q=parseInt(j.GetType()),n=parseInt(o.GetType());q=this.m_registers[q][n];if(q.pool){n=q.pool;q.pool=n.m_next;q.poolCount--;n.Reset(j,o);return n}n=q.createFcn;if(n!=null){if(q.primary){n=n(this.m_allocator);n.Reset(j,o)}else{n=n(this.m_allocator);n.Reset(o,j)}return n}else return null};Q.prototype.Destroy=function(j){if(j.m_manifold.m_pointCount>0){j.m_fixtureA.m_body.SetAwake(true);j.m_fixtureB.m_body.SetAwake(true)}var o=parseInt(j.m_fixtureA.GetType()),
+q=parseInt(j.m_fixtureB.GetType());o=this.m_registers[o][q];o.poolCount++;j.m_next=o.pool;o.pool=j;o=o.destroyFcn;o(j,this.m_allocator)};V.b2ContactRegister=function(){};M.b2ContactResult=function(){this.position=new N;this.normal=new N;this.id=new aa};L.b2ContactSolver=function(){this.m_step=new H;this.m_constraints=new Vector};L.prototype.b2ContactSolver=function(){};L.prototype.Initialize=function(j,o,q,n){if(q===undefined)q=0;var a;this.m_step.Set(j);this.m_allocator=n;j=0;for(this.m_constraintCount=
+q;this.m_constraints.length<this.m_constraintCount;)this.m_constraints[this.m_constraints.length]=new U;for(j=0;j<q;++j){a=o[j];n=a.m_fixtureA;var c=a.m_fixtureB,g=n.m_shape.m_radius,b=c.m_shape.m_radius,e=n.m_body,f=c.m_body,m=a.GetManifold(),r=O.b2MixFriction(n.GetFriction(),c.GetFriction()),s=O.b2MixRestitution(n.GetRestitution(),c.GetRestitution()),v=e.m_linearVelocity.x,t=e.m_linearVelocity.y,x=f.m_linearVelocity.x,C=f.m_linearVelocity.y,J=e.m_angularVelocity,T=f.m_angularVelocity;O.b2Assert(m.m_pointCount>
+0);L.s_worldManifold.Initialize(m,e.m_xf,g,f.m_xf,b);c=L.s_worldManifold.m_normal.x;a=L.s_worldManifold.m_normal.y;n=this.m_constraints[j];n.bodyA=e;n.bodyB=f;n.manifold=m;n.normal.x=c;n.normal.y=a;n.pointCount=m.m_pointCount;n.friction=r;n.restitution=s;n.localPlaneNormal.x=m.m_localPlaneNormal.x;n.localPlaneNormal.y=m.m_localPlaneNormal.y;n.localPoint.x=m.m_localPoint.x;n.localPoint.y=m.m_localPoint.y;n.radius=g+b;n.type=m.m_type;for(g=0;g<n.pointCount;++g){r=m.m_points[g];b=n.points[g];b.normalImpulse=
+r.m_normalImpulse;b.tangentImpulse=r.m_tangentImpulse;b.localPoint.SetV(r.m_localPoint);r=b.rA.x=L.s_worldManifold.m_points[g].x-e.m_sweep.c.x;s=b.rA.y=L.s_worldManifold.m_points[g].y-e.m_sweep.c.y;var P=b.rB.x=L.s_worldManifold.m_points[g].x-f.m_sweep.c.x,X=b.rB.y=L.s_worldManifold.m_points[g].y-f.m_sweep.c.y,$=r*a-s*c,ba=P*a-X*c;$*=$;ba*=ba;b.normalMass=1/(e.m_invMass+f.m_invMass+e.m_invI*$+f.m_invI*ba);var ca=e.m_mass*e.m_invMass+f.m_mass*f.m_invMass;ca+=e.m_mass*e.m_invI*$+f.m_mass*f.m_invI*ba;
+b.equalizedMass=1/ca;ba=a;ca=-c;$=r*ca-s*ba;ba=P*ca-X*ba;$*=$;ba*=ba;b.tangentMass=1/(e.m_invMass+f.m_invMass+e.m_invI*$+f.m_invI*ba);b.velocityBias=0;r=n.normal.x*(x+-T*X-v- -J*s)+n.normal.y*(C+T*P-t-J*r);if(r<-O.b2_velocityThreshold)b.velocityBias+=-n.restitution*r}if(n.pointCount==2){C=n.points[0];x=n.points[1];m=e.m_invMass;e=e.m_invI;v=f.m_invMass;f=f.m_invI;t=C.rA.x*a-C.rA.y*c;C=C.rB.x*a-C.rB.y*c;J=x.rA.x*a-x.rA.y*c;x=x.rB.x*a-x.rB.y*c;c=m+v+e*t*t+f*C*C;a=m+v+e*J*J+f*x*x;f=m+v+e*t*J+f*C*x;if(c*
+c<100*(c*a-f*f)){n.K.col1.Set(c,f);n.K.col2.Set(f,a);n.K.GetInverse(n.normalMass)}else n.pointCount=1}}};L.prototype.InitVelocityConstraints=function(j){for(var o=0;o<this.m_constraintCount;++o){var q=this.m_constraints[o],n=q.bodyA,a=q.bodyB,c=n.m_invMass,g=n.m_invI,b=a.m_invMass,e=a.m_invI,f=q.normal.x,m=q.normal.y,r=m,s=-f,v=0,t=0;if(j.warmStarting){t=q.pointCount;for(v=0;v<t;++v){var x=q.points[v];x.normalImpulse*=j.dtRatio;x.tangentImpulse*=j.dtRatio;var C=x.normalImpulse*f+x.tangentImpulse*
+r,J=x.normalImpulse*m+x.tangentImpulse*s;n.m_angularVelocity-=g*(x.rA.x*J-x.rA.y*C);n.m_linearVelocity.x-=c*C;n.m_linearVelocity.y-=c*J;a.m_angularVelocity+=e*(x.rB.x*J-x.rB.y*C);a.m_linearVelocity.x+=b*C;a.m_linearVelocity.y+=b*J}}else{t=q.pointCount;for(v=0;v<t;++v){n=q.points[v];n.normalImpulse=0;n.tangentImpulse=0}}}};L.prototype.SolveVelocityConstraints=function(){for(var j=0,o,q=0,n=0,a=0,c=n=n=q=q=0,g=q=q=0,b=q=a=0,e=0,f,m=0;m<this.m_constraintCount;++m){a=this.m_constraints[m];var r=a.bodyA,
+s=a.bodyB,v=r.m_angularVelocity,t=s.m_angularVelocity,x=r.m_linearVelocity,C=s.m_linearVelocity,J=r.m_invMass,T=r.m_invI,P=s.m_invMass,X=s.m_invI;b=a.normal.x;var $=e=a.normal.y;f=-b;g=a.friction;for(j=0;j<a.pointCount;j++){o=a.points[j];q=C.x-t*o.rB.y-x.x+v*o.rA.y;n=C.y+t*o.rB.x-x.y-v*o.rA.x;q=q*$+n*f;q=o.tangentMass*-q;n=g*o.normalImpulse;n=R.Clamp(o.tangentImpulse+q,-n,n);q=n-o.tangentImpulse;c=q*$;q=q*f;x.x-=J*c;x.y-=J*q;v-=T*(o.rA.x*q-o.rA.y*c);C.x+=P*c;C.y+=P*q;t+=X*(o.rB.x*q-o.rB.y*c);o.tangentImpulse=
+n}parseInt(a.pointCount);if(a.pointCount==1){o=a.points[0];q=C.x+-t*o.rB.y-x.x- -v*o.rA.y;n=C.y+t*o.rB.x-x.y-v*o.rA.x;a=q*b+n*e;q=-o.normalMass*(a-o.velocityBias);n=o.normalImpulse+q;n=n>0?n:0;q=n-o.normalImpulse;c=q*b;q=q*e;x.x-=J*c;x.y-=J*q;v-=T*(o.rA.x*q-o.rA.y*c);C.x+=P*c;C.y+=P*q;t+=X*(o.rB.x*q-o.rB.y*c);o.normalImpulse=n}else{o=a.points[0];j=a.points[1];q=o.normalImpulse;g=j.normalImpulse;var ba=(C.x-t*o.rB.y-x.x+v*o.rA.y)*b+(C.y+t*o.rB.x-x.y-v*o.rA.x)*e,ca=(C.x-t*j.rB.y-x.x+v*j.rA.y)*b+(C.y+
+t*j.rB.x-x.y-v*j.rA.x)*e;n=ba-o.velocityBias;c=ca-j.velocityBias;f=a.K;n-=f.col1.x*q+f.col2.x*g;for(c-=f.col1.y*q+f.col2.y*g;;){f=a.normalMass;$=-(f.col1.x*n+f.col2.x*c);f=-(f.col1.y*n+f.col2.y*c);if($>=0&&f>=0){q=$-q;g=f-g;a=q*b;q=q*e;b=g*b;e=g*e;x.x-=J*(a+b);x.y-=J*(q+e);v-=T*(o.rA.x*q-o.rA.y*a+j.rA.x*e-j.rA.y*b);C.x+=P*(a+b);C.y+=P*(q+e);t+=X*(o.rB.x*q-o.rB.y*a+j.rB.x*e-j.rB.y*b);o.normalImpulse=$;j.normalImpulse=f;break}$=-o.normalMass*n;f=0;ca=a.K.col1.y*$+c;if($>=0&&ca>=0){q=$-q;g=f-g;a=q*b;
+q=q*e;b=g*b;e=g*e;x.x-=J*(a+b);x.y-=J*(q+e);v-=T*(o.rA.x*q-o.rA.y*a+j.rA.x*e-j.rA.y*b);C.x+=P*(a+b);C.y+=P*(q+e);t+=X*(o.rB.x*q-o.rB.y*a+j.rB.x*e-j.rB.y*b);o.normalImpulse=$;j.normalImpulse=f;break}$=0;f=-j.normalMass*c;ba=a.K.col2.x*f+n;if(f>=0&&ba>=0){q=$-q;g=f-g;a=q*b;q=q*e;b=g*b;e=g*e;x.x-=J*(a+b);x.y-=J*(q+e);v-=T*(o.rA.x*q-o.rA.y*a+j.rA.x*e-j.rA.y*b);C.x+=P*(a+b);C.y+=P*(q+e);t+=X*(o.rB.x*q-o.rB.y*a+j.rB.x*e-j.rB.y*b);o.normalImpulse=$;j.normalImpulse=f;break}f=$=0;ba=n;ca=c;if(ba>=0&&ca>=0){q=
+$-q;g=f-g;a=q*b;q=q*e;b=g*b;e=g*e;x.x-=J*(a+b);x.y-=J*(q+e);v-=T*(o.rA.x*q-o.rA.y*a+j.rA.x*e-j.rA.y*b);C.x+=P*(a+b);C.y+=P*(q+e);t+=X*(o.rB.x*q-o.rB.y*a+j.rB.x*e-j.rB.y*b);o.normalImpulse=$;j.normalImpulse=f;break}break}}r.m_angularVelocity=v;s.m_angularVelocity=t}};L.prototype.FinalizeVelocityConstraints=function(){for(var j=0;j<this.m_constraintCount;++j)for(var o=this.m_constraints[j],q=o.manifold,n=0;n<o.pointCount;++n){var a=q.m_points[n],c=o.points[n];a.m_normalImpulse=c.normalImpulse;a.m_tangentImpulse=
+c.tangentImpulse}};L.prototype.SolvePositionConstraints=function(j){if(j===undefined)j=0;for(var o=0,q=0;q<this.m_constraintCount;q++){var n=this.m_constraints[q],a=n.bodyA,c=n.bodyB,g=a.m_mass*a.m_invMass,b=a.m_mass*a.m_invI,e=c.m_mass*c.m_invMass,f=c.m_mass*c.m_invI;L.s_psm.Initialize(n);for(var m=L.s_psm.m_normal,r=0;r<n.pointCount;r++){var s=n.points[r],v=L.s_psm.m_points[r],t=L.s_psm.m_separations[r],x=v.x-a.m_sweep.c.x,C=v.y-a.m_sweep.c.y,J=v.x-c.m_sweep.c.x;v=v.y-c.m_sweep.c.y;o=o<t?o:t;t=
+R.Clamp(j*(t+O.b2_linearSlop),-O.b2_maxLinearCorrection,0);t=-s.equalizedMass*t;s=t*m.x;t=t*m.y;a.m_sweep.c.x-=g*s;a.m_sweep.c.y-=g*t;a.m_sweep.a-=b*(x*t-C*s);a.SynchronizeTransform();c.m_sweep.c.x+=e*s;c.m_sweep.c.y+=e*t;c.m_sweep.a+=f*(J*t-v*s);c.SynchronizeTransform()}}return o>-1.5*O.b2_linearSlop};Box2D.postDefs.push(function(){Box2D.Dynamics.Contacts.b2ContactSolver.s_worldManifold=new l;Box2D.Dynamics.Contacts.b2ContactSolver.s_psm=new u});Box2D.inherit(I,Box2D.Dynamics.Contacts.b2Contact);
+I.prototype.__super=Box2D.Dynamics.Contacts.b2Contact.prototype;I.b2EdgeAndCircleContact=function(){Box2D.Dynamics.Contacts.b2Contact.b2Contact.apply(this,arguments)};I.Create=function(){return new I};I.Destroy=function(){};I.prototype.Reset=function(j,o){this.__super.Reset.call(this,j,o)};I.prototype.Evaluate=function(){var j=this.m_fixtureA.GetBody(),o=this.m_fixtureB.GetBody();this.b2CollideEdgeAndCircle(this.m_manifold,this.m_fixtureA.GetShape()instanceof G?this.m_fixtureA.GetShape():null,j.m_xf,
+this.m_fixtureB.GetShape()instanceof F?this.m_fixtureB.GetShape():null,o.m_xf)};I.prototype.b2CollideEdgeAndCircle=function(){};Box2D.inherit(W,Box2D.Dynamics.Contacts.b2Contact);W.prototype.__super=Box2D.Dynamics.Contacts.b2Contact.prototype;W.b2NullContact=function(){Box2D.Dynamics.Contacts.b2Contact.b2Contact.apply(this,arguments)};W.prototype.b2NullContact=function(){this.__super.b2Contact.call(this)};W.prototype.Evaluate=function(){};Box2D.inherit(Y,Box2D.Dynamics.Contacts.b2Contact);Y.prototype.__super=
+Box2D.Dynamics.Contacts.b2Contact.prototype;Y.b2PolyAndCircleContact=function(){Box2D.Dynamics.Contacts.b2Contact.b2Contact.apply(this,arguments)};Y.Create=function(){return new Y};Y.Destroy=function(){};Y.prototype.Reset=function(j,o){this.__super.Reset.call(this,j,o);O.b2Assert(j.GetType()==y.e_polygonShape);O.b2Assert(o.GetType()==y.e_circleShape)};Y.prototype.Evaluate=function(){var j=this.m_fixtureA.m_body,o=this.m_fixtureB.m_body;S.CollidePolygonAndCircle(this.m_manifold,this.m_fixtureA.GetShape()instanceof
+K?this.m_fixtureA.GetShape():null,j.m_xf,this.m_fixtureB.GetShape()instanceof F?this.m_fixtureB.GetShape():null,o.m_xf)};Box2D.inherit(k,Box2D.Dynamics.Contacts.b2Contact);k.prototype.__super=Box2D.Dynamics.Contacts.b2Contact.prototype;k.b2PolyAndEdgeContact=function(){Box2D.Dynamics.Contacts.b2Contact.b2Contact.apply(this,arguments)};k.Create=function(){return new k};k.Destroy=function(){};k.prototype.Reset=function(j,o){this.__super.Reset.call(this,j,o);O.b2Assert(j.GetType()==y.e_polygonShape);
+O.b2Assert(o.GetType()==y.e_edgeShape)};k.prototype.Evaluate=function(){var j=this.m_fixtureA.GetBody(),o=this.m_fixtureB.GetBody();this.b2CollidePolyAndEdge(this.m_manifold,this.m_fixtureA.GetShape()instanceof K?this.m_fixtureA.GetShape():null,j.m_xf,this.m_fixtureB.GetShape()instanceof G?this.m_fixtureB.GetShape():null,o.m_xf)};k.prototype.b2CollidePolyAndEdge=function(){};Box2D.inherit(z,Box2D.Dynamics.Contacts.b2Contact);z.prototype.__super=Box2D.Dynamics.Contacts.b2Contact.prototype;z.b2PolygonContact=
+function(){Box2D.Dynamics.Contacts.b2Contact.b2Contact.apply(this,arguments)};z.Create=function(){return new z};z.Destroy=function(){};z.prototype.Reset=function(j,o){this.__super.Reset.call(this,j,o)};z.prototype.Evaluate=function(){var j=this.m_fixtureA.GetBody(),o=this.m_fixtureB.GetBody();S.CollidePolygons(this.m_manifold,this.m_fixtureA.GetShape()instanceof K?this.m_fixtureA.GetShape():null,j.m_xf,this.m_fixtureB.GetShape()instanceof K?this.m_fixtureB.GetShape():null,o.m_xf)};u.b2PositionSolverManifold=
+function(){};u.prototype.b2PositionSolverManifold=function(){this.m_normal=new N;this.m_separations=new Vector_a2j_Number(O.b2_maxManifoldPoints);this.m_points=new Vector(O.b2_maxManifoldPoints);for(var j=0;j<O.b2_maxManifoldPoints;j++)this.m_points[j]=new N};u.prototype.Initialize=function(j){O.b2Assert(j.pointCount>0);var o=0,q=0,n=0,a,c=0,g=0;switch(j.type){case Z.e_circles:a=j.bodyA.m_xf.R;n=j.localPoint;o=j.bodyA.m_xf.position.x+(a.col1.x*n.x+a.col2.x*n.y);q=j.bodyA.m_xf.position.y+(a.col1.y*
+n.x+a.col2.y*n.y);a=j.bodyB.m_xf.R;n=j.points[0].localPoint;c=j.bodyB.m_xf.position.x+(a.col1.x*n.x+a.col2.x*n.y);a=j.bodyB.m_xf.position.y+(a.col1.y*n.x+a.col2.y*n.y);n=c-o;g=a-q;var b=n*n+g*g;if(b>Number.MIN_VALUE*Number.MIN_VALUE){b=Math.sqrt(b);this.m_normal.x=n/b;this.m_normal.y=g/b}else{this.m_normal.x=1;this.m_normal.y=0}this.m_points[0].x=0.5*(o+c);this.m_points[0].y=0.5*(q+a);this.m_separations[0]=n*this.m_normal.x+g*this.m_normal.y-j.radius;break;case Z.e_faceA:a=j.bodyA.m_xf.R;n=j.localPlaneNormal;
+this.m_normal.x=a.col1.x*n.x+a.col2.x*n.y;this.m_normal.y=a.col1.y*n.x+a.col2.y*n.y;a=j.bodyA.m_xf.R;n=j.localPoint;c=j.bodyA.m_xf.position.x+(a.col1.x*n.x+a.col2.x*n.y);g=j.bodyA.m_xf.position.y+(a.col1.y*n.x+a.col2.y*n.y);a=j.bodyB.m_xf.R;for(o=0;o<j.pointCount;++o){n=j.points[o].localPoint;q=j.bodyB.m_xf.position.x+(a.col1.x*n.x+a.col2.x*n.y);n=j.bodyB.m_xf.position.y+(a.col1.y*n.x+a.col2.y*n.y);this.m_separations[o]=(q-c)*this.m_normal.x+(n-g)*this.m_normal.y-j.radius;this.m_points[o].x=q;this.m_points[o].y=
+n}break;case Z.e_faceB:a=j.bodyB.m_xf.R;n=j.localPlaneNormal;this.m_normal.x=a.col1.x*n.x+a.col2.x*n.y;this.m_normal.y=a.col1.y*n.x+a.col2.y*n.y;a=j.bodyB.m_xf.R;n=j.localPoint;c=j.bodyB.m_xf.position.x+(a.col1.x*n.x+a.col2.x*n.y);g=j.bodyB.m_xf.position.y+(a.col1.y*n.x+a.col2.y*n.y);a=j.bodyA.m_xf.R;for(o=0;o<j.pointCount;++o){n=j.points[o].localPoint;q=j.bodyA.m_xf.position.x+(a.col1.x*n.x+a.col2.x*n.y);n=j.bodyA.m_xf.position.y+(a.col1.y*n.x+a.col2.y*n.y);this.m_separations[o]=(q-c)*this.m_normal.x+
+(n-g)*this.m_normal.y-j.radius;this.m_points[o].Set(q,n)}this.m_normal.x*=-1;this.m_normal.y*=-1}};Box2D.postDefs.push(function(){Box2D.Dynamics.Contacts.b2PositionSolverManifold.circlePointA=new N;Box2D.Dynamics.Contacts.b2PositionSolverManifold.circlePointB=new N})})();
+(function(){var F=Box2D.Common.Math.b2Mat22,G=Box2D.Common.Math.b2Math,K=Box2D.Common.Math.b2Vec2,y=Box2D.Common.b2Color,w=Box2D.Dynamics.Controllers.b2BuoyancyController,A=Box2D.Dynamics.Controllers.b2ConstantAccelController,U=Box2D.Dynamics.Controllers.b2ConstantForceController,p=Box2D.Dynamics.Controllers.b2Controller,B=Box2D.Dynamics.Controllers.b2ControllerEdge,Q=Box2D.Dynamics.Controllers.b2GravityController,V=Box2D.Dynamics.Controllers.b2TensorDampingController;Box2D.inherit(w,Box2D.Dynamics.Controllers.b2Controller);
+w.prototype.__super=Box2D.Dynamics.Controllers.b2Controller.prototype;w.b2BuoyancyController=function(){Box2D.Dynamics.Controllers.b2Controller.b2Controller.apply(this,arguments);this.normal=new K(0,-1);this.density=this.offset=0;this.velocity=new K(0,0);this.linearDrag=2;this.angularDrag=1;this.useDensity=false;this.useWorldGravity=true;this.gravity=null};w.prototype.Step=function(){if(this.m_bodyList){if(this.useWorldGravity)this.gravity=this.GetWorld().GetGravity().Copy();for(var M=this.m_bodyList;M;M=
+M.nextBody){var L=M.body;if(L.IsAwake()!=false){for(var I=new K,W=new K,Y=0,k=0,z=L.GetFixtureList();z;z=z.GetNext()){var u=new K,D=z.GetShape().ComputeSubmergedArea(this.normal,this.offset,L.GetTransform(),u);Y+=D;I.x+=D*u.x;I.y+=D*u.y;var H=0;H=1;k+=D*H;W.x+=D*u.x*H;W.y+=D*u.y*H}I.x/=Y;I.y/=Y;W.x/=k;W.y/=k;if(!(Y<Number.MIN_VALUE)){k=this.gravity.GetNegative();k.Multiply(this.density*Y);L.ApplyForce(k,W);W=L.GetLinearVelocityFromWorldPoint(I);W.Subtract(this.velocity);W.Multiply(-this.linearDrag*
+Y);L.ApplyForce(W,I);L.ApplyTorque(-L.GetInertia()/L.GetMass()*Y*L.GetAngularVelocity()*this.angularDrag)}}}}};w.prototype.Draw=function(M){var L=new K,I=new K;L.x=this.normal.x*this.offset+this.normal.y*1E3;L.y=this.normal.y*this.offset-this.normal.x*1E3;I.x=this.normal.x*this.offset-this.normal.y*1E3;I.y=this.normal.y*this.offset+this.normal.x*1E3;var W=new y(0,0,1);M.DrawSegment(L,I,W)};Box2D.inherit(A,Box2D.Dynamics.Controllers.b2Controller);A.prototype.__super=Box2D.Dynamics.Controllers.b2Controller.prototype;
+A.b2ConstantAccelController=function(){Box2D.Dynamics.Controllers.b2Controller.b2Controller.apply(this,arguments);this.A=new K(0,0)};A.prototype.Step=function(M){M=new K(this.A.x*M.dt,this.A.y*M.dt);for(var L=this.m_bodyList;L;L=L.nextBody){var I=L.body;I.IsAwake()&&I.SetLinearVelocity(new K(I.GetLinearVelocity().x+M.x,I.GetLinearVelocity().y+M.y))}};Box2D.inherit(U,Box2D.Dynamics.Controllers.b2Controller);U.prototype.__super=Box2D.Dynamics.Controllers.b2Controller.prototype;U.b2ConstantForceController=
+function(){Box2D.Dynamics.Controllers.b2Controller.b2Controller.apply(this,arguments);this.F=new K(0,0)};U.prototype.Step=function(){for(var M=this.m_bodyList;M;M=M.nextBody){var L=M.body;L.IsAwake()&&L.ApplyForce(this.F,L.GetWorldCenter())}};p.b2Controller=function(){};p.prototype.Step=function(){};p.prototype.Draw=function(){};p.prototype.AddBody=function(M){var L=new B;L.controller=this;L.body=M;L.nextBody=this.m_bodyList;L.prevBody=null;this.m_bodyList=L;if(L.nextBody)L.nextBody.prevBody=L;this.m_bodyCount++;
+L.nextController=M.m_controllerList;L.prevController=null;M.m_controllerList=L;if(L.nextController)L.nextController.prevController=L;M.m_controllerCount++};p.prototype.RemoveBody=function(M){for(var L=M.m_controllerList;L&&L.controller!=this;)L=L.nextController;if(L.prevBody)L.prevBody.nextBody=L.nextBody;if(L.nextBody)L.nextBody.prevBody=L.prevBody;if(L.nextController)L.nextController.prevController=L.prevController;if(L.prevController)L.prevController.nextController=L.nextController;if(this.m_bodyList==
+L)this.m_bodyList=L.nextBody;if(M.m_controllerList==L)M.m_controllerList=L.nextController;M.m_controllerCount--;this.m_bodyCount--};p.prototype.Clear=function(){for(;this.m_bodyList;)this.RemoveBody(this.m_bodyList.body)};p.prototype.GetNext=function(){return this.m_next};p.prototype.GetWorld=function(){return this.m_world};p.prototype.GetBodyList=function(){return this.m_bodyList};B.b2ControllerEdge=function(){};Box2D.inherit(Q,Box2D.Dynamics.Controllers.b2Controller);Q.prototype.__super=Box2D.Dynamics.Controllers.b2Controller.prototype;
+Q.b2GravityController=function(){Box2D.Dynamics.Controllers.b2Controller.b2Controller.apply(this,arguments);this.G=1;this.invSqr=true};Q.prototype.Step=function(){var M=null,L=null,I=null,W=0,Y=null,k=null,z=null,u=0,D=0,H=0;u=null;if(this.invSqr)for(M=this.m_bodyList;M;M=M.nextBody){L=M.body;I=L.GetWorldCenter();W=L.GetMass();for(Y=this.m_bodyList;Y!=M;Y=Y.nextBody){k=Y.body;z=k.GetWorldCenter();u=z.x-I.x;D=z.y-I.y;H=u*u+D*D;if(!(H<Number.MIN_VALUE)){u=new K(u,D);u.Multiply(this.G/H/Math.sqrt(H)*
+W*k.GetMass());L.IsAwake()&&L.ApplyForce(u,I);u.Multiply(-1);k.IsAwake()&&k.ApplyForce(u,z)}}}else for(M=this.m_bodyList;M;M=M.nextBody){L=M.body;I=L.GetWorldCenter();W=L.GetMass();for(Y=this.m_bodyList;Y!=M;Y=Y.nextBody){k=Y.body;z=k.GetWorldCenter();u=z.x-I.x;D=z.y-I.y;H=u*u+D*D;if(!(H<Number.MIN_VALUE)){u=new K(u,D);u.Multiply(this.G/H*W*k.GetMass());L.IsAwake()&&L.ApplyForce(u,I);u.Multiply(-1);k.IsAwake()&&k.ApplyForce(u,z)}}}};Box2D.inherit(V,Box2D.Dynamics.Controllers.b2Controller);V.prototype.__super=
+Box2D.Dynamics.Controllers.b2Controller.prototype;V.b2TensorDampingController=function(){Box2D.Dynamics.Controllers.b2Controller.b2Controller.apply(this,arguments);this.T=new F;this.maxTimestep=0};V.prototype.SetAxisAligned=function(M,L){if(M===undefined)M=0;if(L===undefined)L=0;this.T.col1.x=-M;this.T.col1.y=0;this.T.col2.x=0;this.T.col2.y=-L;this.maxTimestep=M>0||L>0?1/Math.max(M,L):0};V.prototype.Step=function(M){M=M.dt;if(!(M<=Number.MIN_VALUE)){if(M>this.maxTimestep&&this.maxTimestep>0)M=this.maxTimestep;
+for(var L=this.m_bodyList;L;L=L.nextBody){var I=L.body;if(I.IsAwake()){var W=I.GetWorldVector(G.MulMV(this.T,I.GetLocalVector(I.GetLinearVelocity())));I.SetLinearVelocity(new K(I.GetLinearVelocity().x+W.x*M,I.GetLinearVelocity().y+W.y*M))}}}}})();
+(function(){var F=Box2D.Common.b2Settings,G=Box2D.Common.Math.b2Mat22,K=Box2D.Common.Math.b2Mat33,y=Box2D.Common.Math.b2Math,w=Box2D.Common.Math.b2Vec2,A=Box2D.Common.Math.b2Vec3,U=Box2D.Dynamics.Joints.b2DistanceJoint,p=Box2D.Dynamics.Joints.b2DistanceJointDef,B=Box2D.Dynamics.Joints.b2FrictionJoint,Q=Box2D.Dynamics.Joints.b2FrictionJointDef,V=Box2D.Dynamics.Joints.b2GearJoint,M=Box2D.Dynamics.Joints.b2GearJointDef,L=Box2D.Dynamics.Joints.b2Jacobian,I=Box2D.Dynamics.Joints.b2Joint,W=Box2D.Dynamics.Joints.b2JointDef,
+Y=Box2D.Dynamics.Joints.b2JointEdge,k=Box2D.Dynamics.Joints.b2LineJoint,z=Box2D.Dynamics.Joints.b2LineJointDef,u=Box2D.Dynamics.Joints.b2MouseJoint,D=Box2D.Dynamics.Joints.b2MouseJointDef,H=Box2D.Dynamics.Joints.b2PrismaticJoint,O=Box2D.Dynamics.Joints.b2PrismaticJointDef,E=Box2D.Dynamics.Joints.b2PulleyJoint,R=Box2D.Dynamics.Joints.b2PulleyJointDef,N=Box2D.Dynamics.Joints.b2RevoluteJoint,S=Box2D.Dynamics.Joints.b2RevoluteJointDef,aa=Box2D.Dynamics.Joints.b2WeldJoint,Z=Box2D.Dynamics.Joints.b2WeldJointDef;
+Box2D.inherit(U,Box2D.Dynamics.Joints.b2Joint);U.prototype.__super=Box2D.Dynamics.Joints.b2Joint.prototype;U.b2DistanceJoint=function(){Box2D.Dynamics.Joints.b2Joint.b2Joint.apply(this,arguments);this.m_localAnchor1=new w;this.m_localAnchor2=new w;this.m_u=new w};U.prototype.GetAnchorA=function(){return this.m_bodyA.GetWorldPoint(this.m_localAnchor1)};U.prototype.GetAnchorB=function(){return this.m_bodyB.GetWorldPoint(this.m_localAnchor2)};U.prototype.GetReactionForce=function(d){if(d===undefined)d=
+0;return new w(d*this.m_impulse*this.m_u.x,d*this.m_impulse*this.m_u.y)};U.prototype.GetReactionTorque=function(){return 0};U.prototype.GetLength=function(){return this.m_length};U.prototype.SetLength=function(d){if(d===undefined)d=0;this.m_length=d};U.prototype.GetFrequency=function(){return this.m_frequencyHz};U.prototype.SetFrequency=function(d){if(d===undefined)d=0;this.m_frequencyHz=d};U.prototype.GetDampingRatio=function(){return this.m_dampingRatio};U.prototype.SetDampingRatio=function(d){if(d===
+undefined)d=0;this.m_dampingRatio=d};U.prototype.b2DistanceJoint=function(d){this.__super.b2Joint.call(this,d);this.m_localAnchor1.SetV(d.localAnchorA);this.m_localAnchor2.SetV(d.localAnchorB);this.m_length=d.length;this.m_frequencyHz=d.frequencyHz;this.m_dampingRatio=d.dampingRatio;this.m_bias=this.m_gamma=this.m_impulse=0};U.prototype.InitVelocityConstraints=function(d){var h,l=0,j=this.m_bodyA,o=this.m_bodyB;h=j.m_xf.R;var q=this.m_localAnchor1.x-j.m_sweep.localCenter.x,n=this.m_localAnchor1.y-
+j.m_sweep.localCenter.y;l=h.col1.x*q+h.col2.x*n;n=h.col1.y*q+h.col2.y*n;q=l;h=o.m_xf.R;var a=this.m_localAnchor2.x-o.m_sweep.localCenter.x,c=this.m_localAnchor2.y-o.m_sweep.localCenter.y;l=h.col1.x*a+h.col2.x*c;c=h.col1.y*a+h.col2.y*c;a=l;this.m_u.x=o.m_sweep.c.x+a-j.m_sweep.c.x-q;this.m_u.y=o.m_sweep.c.y+c-j.m_sweep.c.y-n;l=Math.sqrt(this.m_u.x*this.m_u.x+this.m_u.y*this.m_u.y);l>F.b2_linearSlop?this.m_u.Multiply(1/l):this.m_u.SetZero();h=q*this.m_u.y-n*this.m_u.x;var g=a*this.m_u.y-c*this.m_u.x;
+h=j.m_invMass+j.m_invI*h*h+o.m_invMass+o.m_invI*g*g;this.m_mass=h!=0?1/h:0;if(this.m_frequencyHz>0){l=l-this.m_length;g=2*Math.PI*this.m_frequencyHz;var b=this.m_mass*g*g;this.m_gamma=d.dt*(2*this.m_mass*this.m_dampingRatio*g+d.dt*b);this.m_gamma=this.m_gamma!=0?1/this.m_gamma:0;this.m_bias=l*d.dt*b*this.m_gamma;this.m_mass=h+this.m_gamma;this.m_mass=this.m_mass!=0?1/this.m_mass:0}if(d.warmStarting){this.m_impulse*=d.dtRatio;d=this.m_impulse*this.m_u.x;h=this.m_impulse*this.m_u.y;j.m_linearVelocity.x-=
+j.m_invMass*d;j.m_linearVelocity.y-=j.m_invMass*h;j.m_angularVelocity-=j.m_invI*(q*h-n*d);o.m_linearVelocity.x+=o.m_invMass*d;o.m_linearVelocity.y+=o.m_invMass*h;o.m_angularVelocity+=o.m_invI*(a*h-c*d)}else this.m_impulse=0};U.prototype.SolveVelocityConstraints=function(){var d,h=this.m_bodyA,l=this.m_bodyB;d=h.m_xf.R;var j=this.m_localAnchor1.x-h.m_sweep.localCenter.x,o=this.m_localAnchor1.y-h.m_sweep.localCenter.y,q=d.col1.x*j+d.col2.x*o;o=d.col1.y*j+d.col2.y*o;j=q;d=l.m_xf.R;var n=this.m_localAnchor2.x-
+l.m_sweep.localCenter.x,a=this.m_localAnchor2.y-l.m_sweep.localCenter.y;q=d.col1.x*n+d.col2.x*a;a=d.col1.y*n+d.col2.y*a;n=q;q=-this.m_mass*(this.m_u.x*(l.m_linearVelocity.x+-l.m_angularVelocity*a-(h.m_linearVelocity.x+-h.m_angularVelocity*o))+this.m_u.y*(l.m_linearVelocity.y+l.m_angularVelocity*n-(h.m_linearVelocity.y+h.m_angularVelocity*j))+this.m_bias+this.m_gamma*this.m_impulse);this.m_impulse+=q;d=q*this.m_u.x;q=q*this.m_u.y;h.m_linearVelocity.x-=h.m_invMass*d;h.m_linearVelocity.y-=h.m_invMass*
+q;h.m_angularVelocity-=h.m_invI*(j*q-o*d);l.m_linearVelocity.x+=l.m_invMass*d;l.m_linearVelocity.y+=l.m_invMass*q;l.m_angularVelocity+=l.m_invI*(n*q-a*d)};U.prototype.SolvePositionConstraints=function(){var d;if(this.m_frequencyHz>0)return true;var h=this.m_bodyA,l=this.m_bodyB;d=h.m_xf.R;var j=this.m_localAnchor1.x-h.m_sweep.localCenter.x,o=this.m_localAnchor1.y-h.m_sweep.localCenter.y,q=d.col1.x*j+d.col2.x*o;o=d.col1.y*j+d.col2.y*o;j=q;d=l.m_xf.R;var n=this.m_localAnchor2.x-l.m_sweep.localCenter.x,
+a=this.m_localAnchor2.y-l.m_sweep.localCenter.y;q=d.col1.x*n+d.col2.x*a;a=d.col1.y*n+d.col2.y*a;n=q;q=l.m_sweep.c.x+n-h.m_sweep.c.x-j;var c=l.m_sweep.c.y+a-h.m_sweep.c.y-o;d=Math.sqrt(q*q+c*c);q/=d;c/=d;d=d-this.m_length;d=y.Clamp(d,-F.b2_maxLinearCorrection,F.b2_maxLinearCorrection);var g=-this.m_mass*d;this.m_u.Set(q,c);q=g*this.m_u.x;c=g*this.m_u.y;h.m_sweep.c.x-=h.m_invMass*q;h.m_sweep.c.y-=h.m_invMass*c;h.m_sweep.a-=h.m_invI*(j*c-o*q);l.m_sweep.c.x+=l.m_invMass*q;l.m_sweep.c.y+=l.m_invMass*c;
+l.m_sweep.a+=l.m_invI*(n*c-a*q);h.SynchronizeTransform();l.SynchronizeTransform();return y.Abs(d)<F.b2_linearSlop};Box2D.inherit(p,Box2D.Dynamics.Joints.b2JointDef);p.prototype.__super=Box2D.Dynamics.Joints.b2JointDef.prototype;p.b2DistanceJointDef=function(){Box2D.Dynamics.Joints.b2JointDef.b2JointDef.apply(this,arguments);this.localAnchorA=new w;this.localAnchorB=new w};p.prototype.b2DistanceJointDef=function(){this.__super.b2JointDef.call(this);this.type=I.e_distanceJoint;this.length=1;this.dampingRatio=
+this.frequencyHz=0};p.prototype.Initialize=function(d,h,l,j){this.bodyA=d;this.bodyB=h;this.localAnchorA.SetV(this.bodyA.GetLocalPoint(l));this.localAnchorB.SetV(this.bodyB.GetLocalPoint(j));d=j.x-l.x;l=j.y-l.y;this.length=Math.sqrt(d*d+l*l);this.dampingRatio=this.frequencyHz=0};Box2D.inherit(B,Box2D.Dynamics.Joints.b2Joint);B.prototype.__super=Box2D.Dynamics.Joints.b2Joint.prototype;B.b2FrictionJoint=function(){Box2D.Dynamics.Joints.b2Joint.b2Joint.apply(this,arguments);this.m_localAnchorA=new w;
+this.m_localAnchorB=new w;this.m_linearMass=new G;this.m_linearImpulse=new w};B.prototype.GetAnchorA=function(){return this.m_bodyA.GetWorldPoint(this.m_localAnchorA)};B.prototype.GetAnchorB=function(){return this.m_bodyB.GetWorldPoint(this.m_localAnchorB)};B.prototype.GetReactionForce=function(d){if(d===undefined)d=0;return new w(d*this.m_linearImpulse.x,d*this.m_linearImpulse.y)};B.prototype.GetReactionTorque=function(d){if(d===undefined)d=0;return d*this.m_angularImpulse};B.prototype.SetMaxForce=
+function(d){if(d===undefined)d=0;this.m_maxForce=d};B.prototype.GetMaxForce=function(){return this.m_maxForce};B.prototype.SetMaxTorque=function(d){if(d===undefined)d=0;this.m_maxTorque=d};B.prototype.GetMaxTorque=function(){return this.m_maxTorque};B.prototype.b2FrictionJoint=function(d){this.__super.b2Joint.call(this,d);this.m_localAnchorA.SetV(d.localAnchorA);this.m_localAnchorB.SetV(d.localAnchorB);this.m_linearMass.SetZero();this.m_angularMass=0;this.m_linearImpulse.SetZero();this.m_angularImpulse=
+0;this.m_maxForce=d.maxForce;this.m_maxTorque=d.maxTorque};B.prototype.InitVelocityConstraints=function(d){var h,l=0,j=this.m_bodyA,o=this.m_bodyB;h=j.m_xf.R;var q=this.m_localAnchorA.x-j.m_sweep.localCenter.x,n=this.m_localAnchorA.y-j.m_sweep.localCenter.y;l=h.col1.x*q+h.col2.x*n;n=h.col1.y*q+h.col2.y*n;q=l;h=o.m_xf.R;var a=this.m_localAnchorB.x-o.m_sweep.localCenter.x,c=this.m_localAnchorB.y-o.m_sweep.localCenter.y;l=h.col1.x*a+h.col2.x*c;c=h.col1.y*a+h.col2.y*c;a=l;h=j.m_invMass;l=o.m_invMass;
+var g=j.m_invI,b=o.m_invI,e=new G;e.col1.x=h+l;e.col2.x=0;e.col1.y=0;e.col2.y=h+l;e.col1.x+=g*n*n;e.col2.x+=-g*q*n;e.col1.y+=-g*q*n;e.col2.y+=g*q*q;e.col1.x+=b*c*c;e.col2.x+=-b*a*c;e.col1.y+=-b*a*c;e.col2.y+=b*a*a;e.GetInverse(this.m_linearMass);this.m_angularMass=g+b;if(this.m_angularMass>0)this.m_angularMass=1/this.m_angularMass;if(d.warmStarting){this.m_linearImpulse.x*=d.dtRatio;this.m_linearImpulse.y*=d.dtRatio;this.m_angularImpulse*=d.dtRatio;d=this.m_linearImpulse;j.m_linearVelocity.x-=h*d.x;
+j.m_linearVelocity.y-=h*d.y;j.m_angularVelocity-=g*(q*d.y-n*d.x+this.m_angularImpulse);o.m_linearVelocity.x+=l*d.x;o.m_linearVelocity.y+=l*d.y;o.m_angularVelocity+=b*(a*d.y-c*d.x+this.m_angularImpulse)}else{this.m_linearImpulse.SetZero();this.m_angularImpulse=0}};B.prototype.SolveVelocityConstraints=function(d){var h,l=0,j=this.m_bodyA,o=this.m_bodyB,q=j.m_linearVelocity,n=j.m_angularVelocity,a=o.m_linearVelocity,c=o.m_angularVelocity,g=j.m_invMass,b=o.m_invMass,e=j.m_invI,f=o.m_invI;h=j.m_xf.R;var m=
+this.m_localAnchorA.x-j.m_sweep.localCenter.x,r=this.m_localAnchorA.y-j.m_sweep.localCenter.y;l=h.col1.x*m+h.col2.x*r;r=h.col1.y*m+h.col2.y*r;m=l;h=o.m_xf.R;var s=this.m_localAnchorB.x-o.m_sweep.localCenter.x,v=this.m_localAnchorB.y-o.m_sweep.localCenter.y;l=h.col1.x*s+h.col2.x*v;v=h.col1.y*s+h.col2.y*v;s=l;h=0;l=-this.m_angularMass*(c-n);var t=this.m_angularImpulse;h=d.dt*this.m_maxTorque;this.m_angularImpulse=y.Clamp(this.m_angularImpulse+l,-h,h);l=this.m_angularImpulse-t;n-=e*l;c+=f*l;h=y.MulMV(this.m_linearMass,
+new w(-(a.x-c*v-q.x+n*r),-(a.y+c*s-q.y-n*m)));l=this.m_linearImpulse.Copy();this.m_linearImpulse.Add(h);h=d.dt*this.m_maxForce;if(this.m_linearImpulse.LengthSquared()>h*h){this.m_linearImpulse.Normalize();this.m_linearImpulse.Multiply(h)}h=y.SubtractVV(this.m_linearImpulse,l);q.x-=g*h.x;q.y-=g*h.y;n-=e*(m*h.y-r*h.x);a.x+=b*h.x;a.y+=b*h.y;c+=f*(s*h.y-v*h.x);j.m_angularVelocity=n;o.m_angularVelocity=c};B.prototype.SolvePositionConstraints=function(){return true};Box2D.inherit(Q,Box2D.Dynamics.Joints.b2JointDef);
+Q.prototype.__super=Box2D.Dynamics.Joints.b2JointDef.prototype;Q.b2FrictionJointDef=function(){Box2D.Dynamics.Joints.b2JointDef.b2JointDef.apply(this,arguments);this.localAnchorA=new w;this.localAnchorB=new w};Q.prototype.b2FrictionJointDef=function(){this.__super.b2JointDef.call(this);this.type=I.e_frictionJoint;this.maxTorque=this.maxForce=0};Q.prototype.Initialize=function(d,h,l){this.bodyA=d;this.bodyB=h;this.localAnchorA.SetV(this.bodyA.GetLocalPoint(l));this.localAnchorB.SetV(this.bodyB.GetLocalPoint(l))};
+Box2D.inherit(V,Box2D.Dynamics.Joints.b2Joint);V.prototype.__super=Box2D.Dynamics.Joints.b2Joint.prototype;V.b2GearJoint=function(){Box2D.Dynamics.Joints.b2Joint.b2Joint.apply(this,arguments);this.m_groundAnchor1=new w;this.m_groundAnchor2=new w;this.m_localAnchor1=new w;this.m_localAnchor2=new w;this.m_J=new L};V.prototype.GetAnchorA=function(){return this.m_bodyA.GetWorldPoint(this.m_localAnchor1)};V.prototype.GetAnchorB=function(){return this.m_bodyB.GetWorldPoint(this.m_localAnchor2)};V.prototype.GetReactionForce=
+function(d){if(d===undefined)d=0;return new w(d*this.m_impulse*this.m_J.linearB.x,d*this.m_impulse*this.m_J.linearB.y)};V.prototype.GetReactionTorque=function(d){if(d===undefined)d=0;var h=this.m_bodyB.m_xf.R,l=this.m_localAnchor1.x-this.m_bodyB.m_sweep.localCenter.x,j=this.m_localAnchor1.y-this.m_bodyB.m_sweep.localCenter.y,o=h.col1.x*l+h.col2.x*j;j=h.col1.y*l+h.col2.y*j;l=o;return d*(this.m_impulse*this.m_J.angularB-l*this.m_impulse*this.m_J.linearB.y+j*this.m_impulse*this.m_J.linearB.x)};V.prototype.GetRatio=
+function(){return this.m_ratio};V.prototype.SetRatio=function(d){if(d===undefined)d=0;this.m_ratio=d};V.prototype.b2GearJoint=function(d){this.__super.b2Joint.call(this,d);var h=parseInt(d.joint1.m_type),l=parseInt(d.joint2.m_type);this.m_prismatic2=this.m_revolute2=this.m_prismatic1=this.m_revolute1=null;var j=0,o=0;this.m_ground1=d.joint1.GetBodyA();this.m_bodyA=d.joint1.GetBodyB();if(h==I.e_revoluteJoint){this.m_revolute1=d.joint1 instanceof N?d.joint1:null;this.m_groundAnchor1.SetV(this.m_revolute1.m_localAnchor1);
+this.m_localAnchor1.SetV(this.m_revolute1.m_localAnchor2);j=this.m_revolute1.GetJointAngle()}else{this.m_prismatic1=d.joint1 instanceof H?d.joint1:null;this.m_groundAnchor1.SetV(this.m_prismatic1.m_localAnchor1);this.m_localAnchor1.SetV(this.m_prismatic1.m_localAnchor2);j=this.m_prismatic1.GetJointTranslation()}this.m_ground2=d.joint2.GetBodyA();this.m_bodyB=d.joint2.GetBodyB();if(l==I.e_revoluteJoint){this.m_revolute2=d.joint2 instanceof N?d.joint2:null;this.m_groundAnchor2.SetV(this.m_revolute2.m_localAnchor1);
+this.m_localAnchor2.SetV(this.m_revolute2.m_localAnchor2);o=this.m_revolute2.GetJointAngle()}else{this.m_prismatic2=d.joint2 instanceof H?d.joint2:null;this.m_groundAnchor2.SetV(this.m_prismatic2.m_localAnchor1);this.m_localAnchor2.SetV(this.m_prismatic2.m_localAnchor2);o=this.m_prismatic2.GetJointTranslation()}this.m_ratio=d.ratio;this.m_constant=j+this.m_ratio*o;this.m_impulse=0};V.prototype.InitVelocityConstraints=function(d){var h=this.m_ground1,l=this.m_ground2,j=this.m_bodyA,o=this.m_bodyB,
+q=0,n=0,a=0,c=0,g=a=0,b=0;this.m_J.SetZero();if(this.m_revolute1){this.m_J.angularA=-1;b+=j.m_invI}else{h=h.m_xf.R;n=this.m_prismatic1.m_localXAxis1;q=h.col1.x*n.x+h.col2.x*n.y;n=h.col1.y*n.x+h.col2.y*n.y;h=j.m_xf.R;a=this.m_localAnchor1.x-j.m_sweep.localCenter.x;c=this.m_localAnchor1.y-j.m_sweep.localCenter.y;g=h.col1.x*a+h.col2.x*c;c=h.col1.y*a+h.col2.y*c;a=g;a=a*n-c*q;this.m_J.linearA.Set(-q,-n);this.m_J.angularA=-a;b+=j.m_invMass+j.m_invI*a*a}if(this.m_revolute2){this.m_J.angularB=-this.m_ratio;
+b+=this.m_ratio*this.m_ratio*o.m_invI}else{h=l.m_xf.R;n=this.m_prismatic2.m_localXAxis1;q=h.col1.x*n.x+h.col2.x*n.y;n=h.col1.y*n.x+h.col2.y*n.y;h=o.m_xf.R;a=this.m_localAnchor2.x-o.m_sweep.localCenter.x;c=this.m_localAnchor2.y-o.m_sweep.localCenter.y;g=h.col1.x*a+h.col2.x*c;c=h.col1.y*a+h.col2.y*c;a=g;a=a*n-c*q;this.m_J.linearB.Set(-this.m_ratio*q,-this.m_ratio*n);this.m_J.angularB=-this.m_ratio*a;b+=this.m_ratio*this.m_ratio*(o.m_invMass+o.m_invI*a*a)}this.m_mass=b>0?1/b:0;if(d.warmStarting){j.m_linearVelocity.x+=
+j.m_invMass*this.m_impulse*this.m_J.linearA.x;j.m_linearVelocity.y+=j.m_invMass*this.m_impulse*this.m_J.linearA.y;j.m_angularVelocity+=j.m_invI*this.m_impulse*this.m_J.angularA;o.m_linearVelocity.x+=o.m_invMass*this.m_impulse*this.m_J.linearB.x;o.m_linearVelocity.y+=o.m_invMass*this.m_impulse*this.m_J.linearB.y;o.m_angularVelocity+=o.m_invI*this.m_impulse*this.m_J.angularB}else this.m_impulse=0};V.prototype.SolveVelocityConstraints=function(){var d=this.m_bodyA,h=this.m_bodyB,l=-this.m_mass*this.m_J.Compute(d.m_linearVelocity,
+d.m_angularVelocity,h.m_linearVelocity,h.m_angularVelocity);this.m_impulse+=l;d.m_linearVelocity.x+=d.m_invMass*l*this.m_J.linearA.x;d.m_linearVelocity.y+=d.m_invMass*l*this.m_J.linearA.y;d.m_angularVelocity+=d.m_invI*l*this.m_J.angularA;h.m_linearVelocity.x+=h.m_invMass*l*this.m_J.linearB.x;h.m_linearVelocity.y+=h.m_invMass*l*this.m_J.linearB.y;h.m_angularVelocity+=h.m_invI*l*this.m_J.angularB};V.prototype.SolvePositionConstraints=function(){var d=this.m_bodyA,h=this.m_bodyB,l=0,j=0;l=this.m_revolute1?
+this.m_revolute1.GetJointAngle():this.m_prismatic1.GetJointTranslation();j=this.m_revolute2?this.m_revolute2.GetJointAngle():this.m_prismatic2.GetJointTranslation();l=-this.m_mass*(this.m_constant-(l+this.m_ratio*j));d.m_sweep.c.x+=d.m_invMass*l*this.m_J.linearA.x;d.m_sweep.c.y+=d.m_invMass*l*this.m_J.linearA.y;d.m_sweep.a+=d.m_invI*l*this.m_J.angularA;h.m_sweep.c.x+=h.m_invMass*l*this.m_J.linearB.x;h.m_sweep.c.y+=h.m_invMass*l*this.m_J.linearB.y;h.m_sweep.a+=h.m_invI*l*this.m_J.angularB;d.SynchronizeTransform();
+h.SynchronizeTransform();return 0<F.b2_linearSlop};Box2D.inherit(M,Box2D.Dynamics.Joints.b2JointDef);M.prototype.__super=Box2D.Dynamics.Joints.b2JointDef.prototype;M.b2GearJointDef=function(){Box2D.Dynamics.Joints.b2JointDef.b2JointDef.apply(this,arguments)};M.prototype.b2GearJointDef=function(){this.__super.b2JointDef.call(this);this.type=I.e_gearJoint;this.joint2=this.joint1=null;this.ratio=1};L.b2Jacobian=function(){this.linearA=new w;this.linearB=new w};L.prototype.SetZero=function(){this.linearA.SetZero();
+this.angularA=0;this.linearB.SetZero();this.angularB=0};L.prototype.Set=function(d,h,l,j){if(h===undefined)h=0;if(j===undefined)j=0;this.linearA.SetV(d);this.angularA=h;this.linearB.SetV(l);this.angularB=j};L.prototype.Compute=function(d,h,l,j){if(h===undefined)h=0;if(j===undefined)j=0;return this.linearA.x*d.x+this.linearA.y*d.y+this.angularA*h+(this.linearB.x*l.x+this.linearB.y*l.y)+this.angularB*j};I.b2Joint=function(){this.m_edgeA=new Y;this.m_edgeB=new Y;this.m_localCenterA=new w;this.m_localCenterB=
+new w};I.prototype.GetType=function(){return this.m_type};I.prototype.GetAnchorA=function(){return null};I.prototype.GetAnchorB=function(){return null};I.prototype.GetReactionForce=function(){return null};I.prototype.GetReactionTorque=function(){return 0};I.prototype.GetBodyA=function(){return this.m_bodyA};I.prototype.GetBodyB=function(){return this.m_bodyB};I.prototype.GetNext=function(){return this.m_next};I.prototype.GetUserData=function(){return this.m_userData};I.prototype.SetUserData=function(d){this.m_userData=
+d};I.prototype.IsActive=function(){return this.m_bodyA.IsActive()&&this.m_bodyB.IsActive()};I.Create=function(d){var h=null;switch(d.type){case I.e_distanceJoint:h=new U(d instanceof p?d:null);break;case I.e_mouseJoint:h=new u(d instanceof D?d:null);break;case I.e_prismaticJoint:h=new H(d instanceof O?d:null);break;case I.e_revoluteJoint:h=new N(d instanceof S?d:null);break;case I.e_pulleyJoint:h=new E(d instanceof R?d:null);break;case I.e_gearJoint:h=new V(d instanceof M?d:null);break;case I.e_lineJoint:h=
+new k(d instanceof z?d:null);break;case I.e_weldJoint:h=new aa(d instanceof Z?d:null);break;case I.e_frictionJoint:h=new B(d instanceof Q?d:null)}return h};I.Destroy=function(){};I.prototype.b2Joint=function(d){F.b2Assert(d.bodyA!=d.bodyB);this.m_type=d.type;this.m_next=this.m_prev=null;this.m_bodyA=d.bodyA;this.m_bodyB=d.bodyB;this.m_collideConnected=d.collideConnected;this.m_islandFlag=false;this.m_userData=d.userData};I.prototype.InitVelocityConstraints=function(){};I.prototype.SolveVelocityConstraints=
+function(){};I.prototype.FinalizeVelocityConstraints=function(){};I.prototype.SolvePositionConstraints=function(){return false};Box2D.postDefs.push(function(){Box2D.Dynamics.Joints.b2Joint.e_unknownJoint=0;Box2D.Dynamics.Joints.b2Joint.e_revoluteJoint=1;Box2D.Dynamics.Joints.b2Joint.e_prismaticJoint=2;Box2D.Dynamics.Joints.b2Joint.e_distanceJoint=3;Box2D.Dynamics.Joints.b2Joint.e_pulleyJoint=4;Box2D.Dynamics.Joints.b2Joint.e_mouseJoint=5;Box2D.Dynamics.Joints.b2Joint.e_gearJoint=6;Box2D.Dynamics.Joints.b2Joint.e_lineJoint=
+7;Box2D.Dynamics.Joints.b2Joint.e_weldJoint=8;Box2D.Dynamics.Joints.b2Joint.e_frictionJoint=9;Box2D.Dynamics.Joints.b2Joint.e_inactiveLimit=0;Box2D.Dynamics.Joints.b2Joint.e_atLowerLimit=1;Box2D.Dynamics.Joints.b2Joint.e_atUpperLimit=2;Box2D.Dynamics.Joints.b2Joint.e_equalLimits=3});W.b2JointDef=function(){};W.prototype.b2JointDef=function(){this.type=I.e_unknownJoint;this.bodyB=this.bodyA=this.userData=null;this.collideConnected=false};Y.b2JointEdge=function(){};Box2D.inherit(k,Box2D.Dynamics.Joints.b2Joint);
+k.prototype.__super=Box2D.Dynamics.Joints.b2Joint.prototype;k.b2LineJoint=function(){Box2D.Dynamics.Joints.b2Joint.b2Joint.apply(this,arguments);this.m_localAnchor1=new w;this.m_localAnchor2=new w;this.m_localXAxis1=new w;this.m_localYAxis1=new w;this.m_axis=new w;this.m_perp=new w;this.m_K=new G;this.m_impulse=new w};k.prototype.GetAnchorA=function(){return this.m_bodyA.GetWorldPoint(this.m_localAnchor1)};k.prototype.GetAnchorB=function(){return this.m_bodyB.GetWorldPoint(this.m_localAnchor2)};k.prototype.GetReactionForce=
+function(d){if(d===undefined)d=0;return new w(d*(this.m_impulse.x*this.m_perp.x+(this.m_motorImpulse+this.m_impulse.y)*this.m_axis.x),d*(this.m_impulse.x*this.m_perp.y+(this.m_motorImpulse+this.m_impulse.y)*this.m_axis.y))};k.prototype.GetReactionTorque=function(d){if(d===undefined)d=0;return d*this.m_impulse.y};k.prototype.GetJointTranslation=function(){var d=this.m_bodyA,h=this.m_bodyB,l=d.GetWorldPoint(this.m_localAnchor1),j=h.GetWorldPoint(this.m_localAnchor2);h=j.x-l.x;l=j.y-l.y;d=d.GetWorldVector(this.m_localXAxis1);
+return d.x*h+d.y*l};k.prototype.GetJointSpeed=function(){var d=this.m_bodyA,h=this.m_bodyB,l;l=d.m_xf.R;var j=this.m_localAnchor1.x-d.m_sweep.localCenter.x,o=this.m_localAnchor1.y-d.m_sweep.localCenter.y,q=l.col1.x*j+l.col2.x*o;o=l.col1.y*j+l.col2.y*o;j=q;l=h.m_xf.R;var n=this.m_localAnchor2.x-h.m_sweep.localCenter.x,a=this.m_localAnchor2.y-h.m_sweep.localCenter.y;q=l.col1.x*n+l.col2.x*a;a=l.col1.y*n+l.col2.y*a;n=q;l=h.m_sweep.c.x+n-(d.m_sweep.c.x+j);q=h.m_sweep.c.y+a-(d.m_sweep.c.y+o);var c=d.GetWorldVector(this.m_localXAxis1),
+g=d.m_linearVelocity,b=h.m_linearVelocity;d=d.m_angularVelocity;h=h.m_angularVelocity;return l*-d*c.y+q*d*c.x+(c.x*(b.x+-h*a-g.x- -d*o)+c.y*(b.y+h*n-g.y-d*j))};k.prototype.IsLimitEnabled=function(){return this.m_enableLimit};k.prototype.EnableLimit=function(d){this.m_bodyA.SetAwake(true);this.m_bodyB.SetAwake(true);this.m_enableLimit=d};k.prototype.GetLowerLimit=function(){return this.m_lowerTranslation};k.prototype.GetUpperLimit=function(){return this.m_upperTranslation};k.prototype.SetLimits=function(d,
+h){if(d===undefined)d=0;if(h===undefined)h=0;this.m_bodyA.SetAwake(true);this.m_bodyB.SetAwake(true);this.m_lowerTranslation=d;this.m_upperTranslation=h};k.prototype.IsMotorEnabled=function(){return this.m_enableMotor};k.prototype.EnableMotor=function(d){this.m_bodyA.SetAwake(true);this.m_bodyB.SetAwake(true);this.m_enableMotor=d};k.prototype.SetMotorSpeed=function(d){if(d===undefined)d=0;this.m_bodyA.SetAwake(true);this.m_bodyB.SetAwake(true);this.m_motorSpeed=d};k.prototype.GetMotorSpeed=function(){return this.m_motorSpeed};
+k.prototype.SetMaxMotorForce=function(d){if(d===undefined)d=0;this.m_bodyA.SetAwake(true);this.m_bodyB.SetAwake(true);this.m_maxMotorForce=d};k.prototype.GetMaxMotorForce=function(){return this.m_maxMotorForce};k.prototype.GetMotorForce=function(){return this.m_motorImpulse};k.prototype.b2LineJoint=function(d){this.__super.b2Joint.call(this,d);this.m_localAnchor1.SetV(d.localAnchorA);this.m_localAnchor2.SetV(d.localAnchorB);this.m_localXAxis1.SetV(d.localAxisA);this.m_localYAxis1.x=-this.m_localXAxis1.y;
+this.m_localYAxis1.y=this.m_localXAxis1.x;this.m_impulse.SetZero();this.m_motorImpulse=this.m_motorMass=0;this.m_lowerTranslation=d.lowerTranslation;this.m_upperTranslation=d.upperTranslation;this.m_maxMotorForce=d.maxMotorForce;this.m_motorSpeed=d.motorSpeed;this.m_enableLimit=d.enableLimit;this.m_enableMotor=d.enableMotor;this.m_limitState=I.e_inactiveLimit;this.m_axis.SetZero();this.m_perp.SetZero()};k.prototype.InitVelocityConstraints=function(d){var h=this.m_bodyA,l=this.m_bodyB,j,o=0;this.m_localCenterA.SetV(h.GetLocalCenter());
+this.m_localCenterB.SetV(l.GetLocalCenter());var q=h.GetTransform();l.GetTransform();j=h.m_xf.R;var n=this.m_localAnchor1.x-this.m_localCenterA.x,a=this.m_localAnchor1.y-this.m_localCenterA.y;o=j.col1.x*n+j.col2.x*a;a=j.col1.y*n+j.col2.y*a;n=o;j=l.m_xf.R;var c=this.m_localAnchor2.x-this.m_localCenterB.x,g=this.m_localAnchor2.y-this.m_localCenterB.y;o=j.col1.x*c+j.col2.x*g;g=j.col1.y*c+j.col2.y*g;c=o;j=l.m_sweep.c.x+c-h.m_sweep.c.x-n;o=l.m_sweep.c.y+g-h.m_sweep.c.y-a;this.m_invMassA=h.m_invMass;this.m_invMassB=
+l.m_invMass;this.m_invIA=h.m_invI;this.m_invIB=l.m_invI;this.m_axis.SetV(y.MulMV(q.R,this.m_localXAxis1));this.m_a1=(j+n)*this.m_axis.y-(o+a)*this.m_axis.x;this.m_a2=c*this.m_axis.y-g*this.m_axis.x;this.m_motorMass=this.m_invMassA+this.m_invMassB+this.m_invIA*this.m_a1*this.m_a1+this.m_invIB*this.m_a2*this.m_a2;this.m_motorMass=this.m_motorMass>Number.MIN_VALUE?1/this.m_motorMass:0;this.m_perp.SetV(y.MulMV(q.R,this.m_localYAxis1));this.m_s1=(j+n)*this.m_perp.y-(o+a)*this.m_perp.x;this.m_s2=c*this.m_perp.y-
+g*this.m_perp.x;q=this.m_invMassA;n=this.m_invMassB;a=this.m_invIA;c=this.m_invIB;this.m_K.col1.x=q+n+a*this.m_s1*this.m_s1+c*this.m_s2*this.m_s2;this.m_K.col1.y=a*this.m_s1*this.m_a1+c*this.m_s2*this.m_a2;this.m_K.col2.x=this.m_K.col1.y;this.m_K.col2.y=q+n+a*this.m_a1*this.m_a1+c*this.m_a2*this.m_a2;if(this.m_enableLimit){j=this.m_axis.x*j+this.m_axis.y*o;if(y.Abs(this.m_upperTranslation-this.m_lowerTranslation)<2*F.b2_linearSlop)this.m_limitState=I.e_equalLimits;else if(j<=this.m_lowerTranslation){if(this.m_limitState!=
+I.e_atLowerLimit){this.m_limitState=I.e_atLowerLimit;this.m_impulse.y=0}}else if(j>=this.m_upperTranslation){if(this.m_limitState!=I.e_atUpperLimit){this.m_limitState=I.e_atUpperLimit;this.m_impulse.y=0}}else{this.m_limitState=I.e_inactiveLimit;this.m_impulse.y=0}}else this.m_limitState=I.e_inactiveLimit;if(this.m_enableMotor==false)this.m_motorImpulse=0;if(d.warmStarting){this.m_impulse.x*=d.dtRatio;this.m_impulse.y*=d.dtRatio;this.m_motorImpulse*=d.dtRatio;d=this.m_impulse.x*this.m_perp.x+(this.m_motorImpulse+
+this.m_impulse.y)*this.m_axis.x;j=this.m_impulse.x*this.m_perp.y+(this.m_motorImpulse+this.m_impulse.y)*this.m_axis.y;o=this.m_impulse.x*this.m_s1+(this.m_motorImpulse+this.m_impulse.y)*this.m_a1;q=this.m_impulse.x*this.m_s2+(this.m_motorImpulse+this.m_impulse.y)*this.m_a2;h.m_linearVelocity.x-=this.m_invMassA*d;h.m_linearVelocity.y-=this.m_invMassA*j;h.m_angularVelocity-=this.m_invIA*o;l.m_linearVelocity.x+=this.m_invMassB*d;l.m_linearVelocity.y+=this.m_invMassB*j;l.m_angularVelocity+=this.m_invIB*
+q}else{this.m_impulse.SetZero();this.m_motorImpulse=0}};k.prototype.SolveVelocityConstraints=function(d){var h=this.m_bodyA,l=this.m_bodyB,j=h.m_linearVelocity,o=h.m_angularVelocity,q=l.m_linearVelocity,n=l.m_angularVelocity,a=0,c=0,g=0,b=0;if(this.m_enableMotor&&this.m_limitState!=I.e_equalLimits){b=this.m_motorMass*(this.m_motorSpeed-(this.m_axis.x*(q.x-j.x)+this.m_axis.y*(q.y-j.y)+this.m_a2*n-this.m_a1*o));a=this.m_motorImpulse;c=d.dt*this.m_maxMotorForce;this.m_motorImpulse=y.Clamp(this.m_motorImpulse+
+b,-c,c);b=this.m_motorImpulse-a;a=b*this.m_axis.x;c=b*this.m_axis.y;g=b*this.m_a1;b=b*this.m_a2;j.x-=this.m_invMassA*a;j.y-=this.m_invMassA*c;o-=this.m_invIA*g;q.x+=this.m_invMassB*a;q.y+=this.m_invMassB*c;n+=this.m_invIB*b}c=this.m_perp.x*(q.x-j.x)+this.m_perp.y*(q.y-j.y)+this.m_s2*n-this.m_s1*o;if(this.m_enableLimit&&this.m_limitState!=I.e_inactiveLimit){g=this.m_axis.x*(q.x-j.x)+this.m_axis.y*(q.y-j.y)+this.m_a2*n-this.m_a1*o;a=this.m_impulse.Copy();d=this.m_K.Solve(new w,-c,-g);this.m_impulse.Add(d);
+if(this.m_limitState==I.e_atLowerLimit)this.m_impulse.y=y.Max(this.m_impulse.y,0);else if(this.m_limitState==I.e_atUpperLimit)this.m_impulse.y=y.Min(this.m_impulse.y,0);c=-c-(this.m_impulse.y-a.y)*this.m_K.col2.x;g=0;g=this.m_K.col1.x!=0?c/this.m_K.col1.x+a.x:a.x;this.m_impulse.x=g;d.x=this.m_impulse.x-a.x;d.y=this.m_impulse.y-a.y;a=d.x*this.m_perp.x+d.y*this.m_axis.x;c=d.x*this.m_perp.y+d.y*this.m_axis.y;g=d.x*this.m_s1+d.y*this.m_a1;b=d.x*this.m_s2+d.y*this.m_a2}else{d=0;d=this.m_K.col1.x!=0?-c/
+this.m_K.col1.x:0;this.m_impulse.x+=d;a=d*this.m_perp.x;c=d*this.m_perp.y;g=d*this.m_s1;b=d*this.m_s2}j.x-=this.m_invMassA*a;j.y-=this.m_invMassA*c;o-=this.m_invIA*g;q.x+=this.m_invMassB*a;q.y+=this.m_invMassB*c;n+=this.m_invIB*b;h.m_linearVelocity.SetV(j);h.m_angularVelocity=o;l.m_linearVelocity.SetV(q);l.m_angularVelocity=n};k.prototype.SolvePositionConstraints=function(){var d=this.m_bodyA,h=this.m_bodyB,l=d.m_sweep.c,j=d.m_sweep.a,o=h.m_sweep.c,q=h.m_sweep.a,n,a=0,c=0,g=0,b=0,e=n=0,f=0;c=false;
+var m=0,r=G.FromAngle(j);g=G.FromAngle(q);n=r;f=this.m_localAnchor1.x-this.m_localCenterA.x;var s=this.m_localAnchor1.y-this.m_localCenterA.y;a=n.col1.x*f+n.col2.x*s;s=n.col1.y*f+n.col2.y*s;f=a;n=g;g=this.m_localAnchor2.x-this.m_localCenterB.x;b=this.m_localAnchor2.y-this.m_localCenterB.y;a=n.col1.x*g+n.col2.x*b;b=n.col1.y*g+n.col2.y*b;g=a;n=o.x+g-l.x-f;a=o.y+b-l.y-s;if(this.m_enableLimit){this.m_axis=y.MulMV(r,this.m_localXAxis1);this.m_a1=(n+f)*this.m_axis.y-(a+s)*this.m_axis.x;this.m_a2=g*this.m_axis.y-
+b*this.m_axis.x;var v=this.m_axis.x*n+this.m_axis.y*a;if(y.Abs(this.m_upperTranslation-this.m_lowerTranslation)<2*F.b2_linearSlop){m=y.Clamp(v,-F.b2_maxLinearCorrection,F.b2_maxLinearCorrection);e=y.Abs(v);c=true}else if(v<=this.m_lowerTranslation){m=y.Clamp(v-this.m_lowerTranslation+F.b2_linearSlop,-F.b2_maxLinearCorrection,0);e=this.m_lowerTranslation-v;c=true}else if(v>=this.m_upperTranslation){m=y.Clamp(v-this.m_upperTranslation+F.b2_linearSlop,0,F.b2_maxLinearCorrection);e=v-this.m_upperTranslation;
+c=true}}this.m_perp=y.MulMV(r,this.m_localYAxis1);this.m_s1=(n+f)*this.m_perp.y-(a+s)*this.m_perp.x;this.m_s2=g*this.m_perp.y-b*this.m_perp.x;r=new w;s=this.m_perp.x*n+this.m_perp.y*a;e=y.Max(e,y.Abs(s));f=0;if(c){c=this.m_invMassA;g=this.m_invMassB;b=this.m_invIA;n=this.m_invIB;this.m_K.col1.x=c+g+b*this.m_s1*this.m_s1+n*this.m_s2*this.m_s2;this.m_K.col1.y=b*this.m_s1*this.m_a1+n*this.m_s2*this.m_a2;this.m_K.col2.x=this.m_K.col1.y;this.m_K.col2.y=c+g+b*this.m_a1*this.m_a1+n*this.m_a2*this.m_a2;this.m_K.Solve(r,
+-s,-m)}else{c=this.m_invMassA;g=this.m_invMassB;b=this.m_invIA;n=this.m_invIB;m=c+g+b*this.m_s1*this.m_s1+n*this.m_s2*this.m_s2;c=0;c=m!=0?-s/m:0;r.x=c;r.y=0}m=r.x*this.m_perp.x+r.y*this.m_axis.x;c=r.x*this.m_perp.y+r.y*this.m_axis.y;s=r.x*this.m_s1+r.y*this.m_a1;r=r.x*this.m_s2+r.y*this.m_a2;l.x-=this.m_invMassA*m;l.y-=this.m_invMassA*c;j-=this.m_invIA*s;o.x+=this.m_invMassB*m;o.y+=this.m_invMassB*c;q+=this.m_invIB*r;d.m_sweep.a=j;h.m_sweep.a=q;d.SynchronizeTransform();h.SynchronizeTransform();return e<=
+F.b2_linearSlop&&f<=F.b2_angularSlop};Box2D.inherit(z,Box2D.Dynamics.Joints.b2JointDef);z.prototype.__super=Box2D.Dynamics.Joints.b2JointDef.prototype;z.b2LineJointDef=function(){Box2D.Dynamics.Joints.b2JointDef.b2JointDef.apply(this,arguments);this.localAnchorA=new w;this.localAnchorB=new w;this.localAxisA=new w};z.prototype.b2LineJointDef=function(){this.__super.b2JointDef.call(this);this.type=I.e_lineJoint;this.localAxisA.Set(1,0);this.enableLimit=false;this.upperTranslation=this.lowerTranslation=
+0;this.enableMotor=false;this.motorSpeed=this.maxMotorForce=0};z.prototype.Initialize=function(d,h,l,j){this.bodyA=d;this.bodyB=h;this.localAnchorA=this.bodyA.GetLocalPoint(l);this.localAnchorB=this.bodyB.GetLocalPoint(l);this.localAxisA=this.bodyA.GetLocalVector(j)};Box2D.inherit(u,Box2D.Dynamics.Joints.b2Joint);u.prototype.__super=Box2D.Dynamics.Joints.b2Joint.prototype;u.b2MouseJoint=function(){Box2D.Dynamics.Joints.b2Joint.b2Joint.apply(this,arguments);this.K=new G;this.K1=new G;this.K2=new G;
+this.m_localAnchor=new w;this.m_target=new w;this.m_impulse=new w;this.m_mass=new G;this.m_C=new w};u.prototype.GetAnchorA=function(){return this.m_target};u.prototype.GetAnchorB=function(){return this.m_bodyB.GetWorldPoint(this.m_localAnchor)};u.prototype.GetReactionForce=function(d){if(d===undefined)d=0;return new w(d*this.m_impulse.x,d*this.m_impulse.y)};u.prototype.GetReactionTorque=function(){return 0};u.prototype.GetTarget=function(){return this.m_target};u.prototype.SetTarget=function(d){this.m_bodyB.IsAwake()==
+false&&this.m_bodyB.SetAwake(true);this.m_target=d};u.prototype.GetMaxForce=function(){return this.m_maxForce};u.prototype.SetMaxForce=function(d){if(d===undefined)d=0;this.m_maxForce=d};u.prototype.GetFrequency=function(){return this.m_frequencyHz};u.prototype.SetFrequency=function(d){if(d===undefined)d=0;this.m_frequencyHz=d};u.prototype.GetDampingRatio=function(){return this.m_dampingRatio};u.prototype.SetDampingRatio=function(d){if(d===undefined)d=0;this.m_dampingRatio=d};u.prototype.b2MouseJoint=
+function(d){this.__super.b2Joint.call(this,d);this.m_target.SetV(d.target);var h=this.m_target.x-this.m_bodyB.m_xf.position.x,l=this.m_target.y-this.m_bodyB.m_xf.position.y,j=this.m_bodyB.m_xf.R;this.m_localAnchor.x=h*j.col1.x+l*j.col1.y;this.m_localAnchor.y=h*j.col2.x+l*j.col2.y;this.m_maxForce=d.maxForce;this.m_impulse.SetZero();this.m_frequencyHz=d.frequencyHz;this.m_dampingRatio=d.dampingRatio;this.m_gamma=this.m_beta=0};u.prototype.InitVelocityConstraints=function(d){var h=this.m_bodyB,l=h.GetMass(),
+j=2*Math.PI*this.m_frequencyHz,o=l*j*j;this.m_gamma=d.dt*(2*l*this.m_dampingRatio*j+d.dt*o);this.m_gamma=this.m_gamma!=0?1/this.m_gamma:0;this.m_beta=d.dt*o*this.m_gamma;o=h.m_xf.R;l=this.m_localAnchor.x-h.m_sweep.localCenter.x;j=this.m_localAnchor.y-h.m_sweep.localCenter.y;var q=o.col1.x*l+o.col2.x*j;j=o.col1.y*l+o.col2.y*j;l=q;o=h.m_invMass;q=h.m_invI;this.K1.col1.x=o;this.K1.col2.x=0;this.K1.col1.y=0;this.K1.col2.y=o;this.K2.col1.x=q*j*j;this.K2.col2.x=-q*l*j;this.K2.col1.y=-q*l*j;this.K2.col2.y=
+q*l*l;this.K.SetM(this.K1);this.K.AddM(this.K2);this.K.col1.x+=this.m_gamma;this.K.col2.y+=this.m_gamma;this.K.GetInverse(this.m_mass);this.m_C.x=h.m_sweep.c.x+l-this.m_target.x;this.m_C.y=h.m_sweep.c.y+j-this.m_target.y;h.m_angularVelocity*=0.98;this.m_impulse.x*=d.dtRatio;this.m_impulse.y*=d.dtRatio;h.m_linearVelocity.x+=o*this.m_impulse.x;h.m_linearVelocity.y+=o*this.m_impulse.y;h.m_angularVelocity+=q*(l*this.m_impulse.y-j*this.m_impulse.x)};u.prototype.SolveVelocityConstraints=function(d){var h=
+this.m_bodyB,l,j=0,o=0;l=h.m_xf.R;var q=this.m_localAnchor.x-h.m_sweep.localCenter.x,n=this.m_localAnchor.y-h.m_sweep.localCenter.y;j=l.col1.x*q+l.col2.x*n;n=l.col1.y*q+l.col2.y*n;q=j;j=h.m_linearVelocity.x+-h.m_angularVelocity*n;var a=h.m_linearVelocity.y+h.m_angularVelocity*q;l=this.m_mass;j=j+this.m_beta*this.m_C.x+this.m_gamma*this.m_impulse.x;o=a+this.m_beta*this.m_C.y+this.m_gamma*this.m_impulse.y;a=-(l.col1.x*j+l.col2.x*o);o=-(l.col1.y*j+l.col2.y*o);l=this.m_impulse.x;j=this.m_impulse.y;this.m_impulse.x+=
+a;this.m_impulse.y+=o;d=d.dt*this.m_maxForce;this.m_impulse.LengthSquared()>d*d&&this.m_impulse.Multiply(d/this.m_impulse.Length());a=this.m_impulse.x-l;o=this.m_impulse.y-j;h.m_linearVelocity.x+=h.m_invMass*a;h.m_linearVelocity.y+=h.m_invMass*o;h.m_angularVelocity+=h.m_invI*(q*o-n*a)};u.prototype.SolvePositionConstraints=function(){return true};Box2D.inherit(D,Box2D.Dynamics.Joints.b2JointDef);D.prototype.__super=Box2D.Dynamics.Joints.b2JointDef.prototype;D.b2MouseJointDef=function(){Box2D.Dynamics.Joints.b2JointDef.b2JointDef.apply(this,
+arguments);this.target=new w};D.prototype.b2MouseJointDef=function(){this.__super.b2JointDef.call(this);this.type=I.e_mouseJoint;this.maxForce=0;this.frequencyHz=5;this.dampingRatio=0.7};Box2D.inherit(H,Box2D.Dynamics.Joints.b2Joint);H.prototype.__super=Box2D.Dynamics.Joints.b2Joint.prototype;H.b2PrismaticJoint=function(){Box2D.Dynamics.Joints.b2Joint.b2Joint.apply(this,arguments);this.m_localAnchor1=new w;this.m_localAnchor2=new w;this.m_localXAxis1=new w;this.m_localYAxis1=new w;this.m_axis=new w;
+this.m_perp=new w;this.m_K=new K;this.m_impulse=new A};H.prototype.GetAnchorA=function(){return this.m_bodyA.GetWorldPoint(this.m_localAnchor1)};H.prototype.GetAnchorB=function(){return this.m_bodyB.GetWorldPoint(this.m_localAnchor2)};H.prototype.GetReactionForce=function(d){if(d===undefined)d=0;return new w(d*(this.m_impulse.x*this.m_perp.x+(this.m_motorImpulse+this.m_impulse.z)*this.m_axis.x),d*(this.m_impulse.x*this.m_perp.y+(this.m_motorImpulse+this.m_impulse.z)*this.m_axis.y))};H.prototype.GetReactionTorque=
+function(d){if(d===undefined)d=0;return d*this.m_impulse.y};H.prototype.GetJointTranslation=function(){var d=this.m_bodyA,h=this.m_bodyB,l=d.GetWorldPoint(this.m_localAnchor1),j=h.GetWorldPoint(this.m_localAnchor2);h=j.x-l.x;l=j.y-l.y;d=d.GetWorldVector(this.m_localXAxis1);return d.x*h+d.y*l};H.prototype.GetJointSpeed=function(){var d=this.m_bodyA,h=this.m_bodyB,l;l=d.m_xf.R;var j=this.m_localAnchor1.x-d.m_sweep.localCenter.x,o=this.m_localAnchor1.y-d.m_sweep.localCenter.y,q=l.col1.x*j+l.col2.x*o;
+o=l.col1.y*j+l.col2.y*o;j=q;l=h.m_xf.R;var n=this.m_localAnchor2.x-h.m_sweep.localCenter.x,a=this.m_localAnchor2.y-h.m_sweep.localCenter.y;q=l.col1.x*n+l.col2.x*a;a=l.col1.y*n+l.col2.y*a;n=q;l=h.m_sweep.c.x+n-(d.m_sweep.c.x+j);q=h.m_sweep.c.y+a-(d.m_sweep.c.y+o);var c=d.GetWorldVector(this.m_localXAxis1),g=d.m_linearVelocity,b=h.m_linearVelocity;d=d.m_angularVelocity;h=h.m_angularVelocity;return l*-d*c.y+q*d*c.x+(c.x*(b.x+-h*a-g.x- -d*o)+c.y*(b.y+h*n-g.y-d*j))};H.prototype.IsLimitEnabled=function(){return this.m_enableLimit};
+H.prototype.EnableLimit=function(d){this.m_bodyA.SetAwake(true);this.m_bodyB.SetAwake(true);this.m_enableLimit=d};H.prototype.GetLowerLimit=function(){return this.m_lowerTranslation};H.prototype.GetUpperLimit=function(){return this.m_upperTranslation};H.prototype.SetLimits=function(d,h){if(d===undefined)d=0;if(h===undefined)h=0;this.m_bodyA.SetAwake(true);this.m_bodyB.SetAwake(true);this.m_lowerTranslation=d;this.m_upperTranslation=h};H.prototype.IsMotorEnabled=function(){return this.m_enableMotor};
+H.prototype.EnableMotor=function(d){this.m_bodyA.SetAwake(true);this.m_bodyB.SetAwake(true);this.m_enableMotor=d};H.prototype.SetMotorSpeed=function(d){if(d===undefined)d=0;this.m_bodyA.SetAwake(true);this.m_bodyB.SetAwake(true);this.m_motorSpeed=d};H.prototype.GetMotorSpeed=function(){return this.m_motorSpeed};H.prototype.SetMaxMotorForce=function(d){if(d===undefined)d=0;this.m_bodyA.SetAwake(true);this.m_bodyB.SetAwake(true);this.m_maxMotorForce=d};H.prototype.GetMotorForce=function(){return this.m_motorImpulse};
+H.prototype.b2PrismaticJoint=function(d){this.__super.b2Joint.call(this,d);this.m_localAnchor1.SetV(d.localAnchorA);this.m_localAnchor2.SetV(d.localAnchorB);this.m_localXAxis1.SetV(d.localAxisA);this.m_localYAxis1.x=-this.m_localXAxis1.y;this.m_localYAxis1.y=this.m_localXAxis1.x;this.m_refAngle=d.referenceAngle;this.m_impulse.SetZero();this.m_motorImpulse=this.m_motorMass=0;this.m_lowerTranslation=d.lowerTranslation;this.m_upperTranslation=d.upperTranslation;this.m_maxMotorForce=d.maxMotorForce;this.m_motorSpeed=
+d.motorSpeed;this.m_enableLimit=d.enableLimit;this.m_enableMotor=d.enableMotor;this.m_limitState=I.e_inactiveLimit;this.m_axis.SetZero();this.m_perp.SetZero()};H.prototype.InitVelocityConstraints=function(d){var h=this.m_bodyA,l=this.m_bodyB,j,o=0;this.m_localCenterA.SetV(h.GetLocalCenter());this.m_localCenterB.SetV(l.GetLocalCenter());var q=h.GetTransform();l.GetTransform();j=h.m_xf.R;var n=this.m_localAnchor1.x-this.m_localCenterA.x,a=this.m_localAnchor1.y-this.m_localCenterA.y;o=j.col1.x*n+j.col2.x*
+a;a=j.col1.y*n+j.col2.y*a;n=o;j=l.m_xf.R;var c=this.m_localAnchor2.x-this.m_localCenterB.x,g=this.m_localAnchor2.y-this.m_localCenterB.y;o=j.col1.x*c+j.col2.x*g;g=j.col1.y*c+j.col2.y*g;c=o;j=l.m_sweep.c.x+c-h.m_sweep.c.x-n;o=l.m_sweep.c.y+g-h.m_sweep.c.y-a;this.m_invMassA=h.m_invMass;this.m_invMassB=l.m_invMass;this.m_invIA=h.m_invI;this.m_invIB=l.m_invI;this.m_axis.SetV(y.MulMV(q.R,this.m_localXAxis1));this.m_a1=(j+n)*this.m_axis.y-(o+a)*this.m_axis.x;this.m_a2=c*this.m_axis.y-g*this.m_axis.x;this.m_motorMass=
+this.m_invMassA+this.m_invMassB+this.m_invIA*this.m_a1*this.m_a1+this.m_invIB*this.m_a2*this.m_a2;if(this.m_motorMass>Number.MIN_VALUE)this.m_motorMass=1/this.m_motorMass;this.m_perp.SetV(y.MulMV(q.R,this.m_localYAxis1));this.m_s1=(j+n)*this.m_perp.y-(o+a)*this.m_perp.x;this.m_s2=c*this.m_perp.y-g*this.m_perp.x;q=this.m_invMassA;n=this.m_invMassB;a=this.m_invIA;c=this.m_invIB;this.m_K.col1.x=q+n+a*this.m_s1*this.m_s1+c*this.m_s2*this.m_s2;this.m_K.col1.y=a*this.m_s1+c*this.m_s2;this.m_K.col1.z=a*
+this.m_s1*this.m_a1+c*this.m_s2*this.m_a2;this.m_K.col2.x=this.m_K.col1.y;this.m_K.col2.y=a+c;this.m_K.col2.z=a*this.m_a1+c*this.m_a2;this.m_K.col3.x=this.m_K.col1.z;this.m_K.col3.y=this.m_K.col2.z;this.m_K.col3.z=q+n+a*this.m_a1*this.m_a1+c*this.m_a2*this.m_a2;if(this.m_enableLimit){j=this.m_axis.x*j+this.m_axis.y*o;if(y.Abs(this.m_upperTranslation-this.m_lowerTranslation)<2*F.b2_linearSlop)this.m_limitState=I.e_equalLimits;else if(j<=this.m_lowerTranslation){if(this.m_limitState!=I.e_atLowerLimit){this.m_limitState=
+I.e_atLowerLimit;this.m_impulse.z=0}}else if(j>=this.m_upperTranslation){if(this.m_limitState!=I.e_atUpperLimit){this.m_limitState=I.e_atUpperLimit;this.m_impulse.z=0}}else{this.m_limitState=I.e_inactiveLimit;this.m_impulse.z=0}}else this.m_limitState=I.e_inactiveLimit;if(this.m_enableMotor==false)this.m_motorImpulse=0;if(d.warmStarting){this.m_impulse.x*=d.dtRatio;this.m_impulse.y*=d.dtRatio;this.m_motorImpulse*=d.dtRatio;d=this.m_impulse.x*this.m_perp.x+(this.m_motorImpulse+this.m_impulse.z)*this.m_axis.x;
+j=this.m_impulse.x*this.m_perp.y+(this.m_motorImpulse+this.m_impulse.z)*this.m_axis.y;o=this.m_impulse.x*this.m_s1+this.m_impulse.y+(this.m_motorImpulse+this.m_impulse.z)*this.m_a1;q=this.m_impulse.x*this.m_s2+this.m_impulse.y+(this.m_motorImpulse+this.m_impulse.z)*this.m_a2;h.m_linearVelocity.x-=this.m_invMassA*d;h.m_linearVelocity.y-=this.m_invMassA*j;h.m_angularVelocity-=this.m_invIA*o;l.m_linearVelocity.x+=this.m_invMassB*d;l.m_linearVelocity.y+=this.m_invMassB*j;l.m_angularVelocity+=this.m_invIB*
+q}else{this.m_impulse.SetZero();this.m_motorImpulse=0}};H.prototype.SolveVelocityConstraints=function(d){var h=this.m_bodyA,l=this.m_bodyB,j=h.m_linearVelocity,o=h.m_angularVelocity,q=l.m_linearVelocity,n=l.m_angularVelocity,a=0,c=0,g=0,b=0;if(this.m_enableMotor&&this.m_limitState!=I.e_equalLimits){b=this.m_motorMass*(this.m_motorSpeed-(this.m_axis.x*(q.x-j.x)+this.m_axis.y*(q.y-j.y)+this.m_a2*n-this.m_a1*o));a=this.m_motorImpulse;d=d.dt*this.m_maxMotorForce;this.m_motorImpulse=y.Clamp(this.m_motorImpulse+
+b,-d,d);b=this.m_motorImpulse-a;a=b*this.m_axis.x;c=b*this.m_axis.y;g=b*this.m_a1;b=b*this.m_a2;j.x-=this.m_invMassA*a;j.y-=this.m_invMassA*c;o-=this.m_invIA*g;q.x+=this.m_invMassB*a;q.y+=this.m_invMassB*c;n+=this.m_invIB*b}g=this.m_perp.x*(q.x-j.x)+this.m_perp.y*(q.y-j.y)+this.m_s2*n-this.m_s1*o;c=n-o;if(this.m_enableLimit&&this.m_limitState!=I.e_inactiveLimit){d=this.m_axis.x*(q.x-j.x)+this.m_axis.y*(q.y-j.y)+this.m_a2*n-this.m_a1*o;a=this.m_impulse.Copy();d=this.m_K.Solve33(new A,-g,-c,-d);this.m_impulse.Add(d);
+if(this.m_limitState==I.e_atLowerLimit)this.m_impulse.z=y.Max(this.m_impulse.z,0);else if(this.m_limitState==I.e_atUpperLimit)this.m_impulse.z=y.Min(this.m_impulse.z,0);g=-g-(this.m_impulse.z-a.z)*this.m_K.col3.x;c=-c-(this.m_impulse.z-a.z)*this.m_K.col3.y;c=this.m_K.Solve22(new w,g,c);c.x+=a.x;c.y+=a.y;this.m_impulse.x=c.x;this.m_impulse.y=c.y;d.x=this.m_impulse.x-a.x;d.y=this.m_impulse.y-a.y;d.z=this.m_impulse.z-a.z;a=d.x*this.m_perp.x+d.z*this.m_axis.x;c=d.x*this.m_perp.y+d.z*this.m_axis.y;g=d.x*
+this.m_s1+d.y+d.z*this.m_a1;b=d.x*this.m_s2+d.y+d.z*this.m_a2}else{d=this.m_K.Solve22(new w,-g,-c);this.m_impulse.x+=d.x;this.m_impulse.y+=d.y;a=d.x*this.m_perp.x;c=d.x*this.m_perp.y;g=d.x*this.m_s1+d.y;b=d.x*this.m_s2+d.y}j.x-=this.m_invMassA*a;j.y-=this.m_invMassA*c;o-=this.m_invIA*g;q.x+=this.m_invMassB*a;q.y+=this.m_invMassB*c;n+=this.m_invIB*b;h.m_linearVelocity.SetV(j);h.m_angularVelocity=o;l.m_linearVelocity.SetV(q);l.m_angularVelocity=n};H.prototype.SolvePositionConstraints=function(){var d=
+this.m_bodyA,h=this.m_bodyB,l=d.m_sweep.c,j=d.m_sweep.a,o=h.m_sweep.c,q=h.m_sweep.a,n,a=0,c=0,g=0,b=a=n=0,e=0;c=false;var f=0,m=G.FromAngle(j),r=G.FromAngle(q);n=m;e=this.m_localAnchor1.x-this.m_localCenterA.x;var s=this.m_localAnchor1.y-this.m_localCenterA.y;a=n.col1.x*e+n.col2.x*s;s=n.col1.y*e+n.col2.y*s;e=a;n=r;r=this.m_localAnchor2.x-this.m_localCenterB.x;g=this.m_localAnchor2.y-this.m_localCenterB.y;a=n.col1.x*r+n.col2.x*g;g=n.col1.y*r+n.col2.y*g;r=a;n=o.x+r-l.x-e;a=o.y+g-l.y-s;if(this.m_enableLimit){this.m_axis=
+y.MulMV(m,this.m_localXAxis1);this.m_a1=(n+e)*this.m_axis.y-(a+s)*this.m_axis.x;this.m_a2=r*this.m_axis.y-g*this.m_axis.x;var v=this.m_axis.x*n+this.m_axis.y*a;if(y.Abs(this.m_upperTranslation-this.m_lowerTranslation)<2*F.b2_linearSlop){f=y.Clamp(v,-F.b2_maxLinearCorrection,F.b2_maxLinearCorrection);b=y.Abs(v);c=true}else if(v<=this.m_lowerTranslation){f=y.Clamp(v-this.m_lowerTranslation+F.b2_linearSlop,-F.b2_maxLinearCorrection,0);b=this.m_lowerTranslation-v;c=true}else if(v>=this.m_upperTranslation){f=
+y.Clamp(v-this.m_upperTranslation+F.b2_linearSlop,0,F.b2_maxLinearCorrection);b=v-this.m_upperTranslation;c=true}}this.m_perp=y.MulMV(m,this.m_localYAxis1);this.m_s1=(n+e)*this.m_perp.y-(a+s)*this.m_perp.x;this.m_s2=r*this.m_perp.y-g*this.m_perp.x;m=new A;s=this.m_perp.x*n+this.m_perp.y*a;r=q-j-this.m_refAngle;b=y.Max(b,y.Abs(s));e=y.Abs(r);if(c){c=this.m_invMassA;g=this.m_invMassB;n=this.m_invIA;a=this.m_invIB;this.m_K.col1.x=c+g+n*this.m_s1*this.m_s1+a*this.m_s2*this.m_s2;this.m_K.col1.y=n*this.m_s1+
+a*this.m_s2;this.m_K.col1.z=n*this.m_s1*this.m_a1+a*this.m_s2*this.m_a2;this.m_K.col2.x=this.m_K.col1.y;this.m_K.col2.y=n+a;this.m_K.col2.z=n*this.m_a1+a*this.m_a2;this.m_K.col3.x=this.m_K.col1.z;this.m_K.col3.y=this.m_K.col2.z;this.m_K.col3.z=c+g+n*this.m_a1*this.m_a1+a*this.m_a2*this.m_a2;this.m_K.Solve33(m,-s,-r,-f)}else{c=this.m_invMassA;g=this.m_invMassB;n=this.m_invIA;a=this.m_invIB;f=n*this.m_s1+a*this.m_s2;v=n+a;this.m_K.col1.Set(c+g+n*this.m_s1*this.m_s1+a*this.m_s2*this.m_s2,f,0);this.m_K.col2.Set(f,
+v,0);f=this.m_K.Solve22(new w,-s,-r);m.x=f.x;m.y=f.y;m.z=0}f=m.x*this.m_perp.x+m.z*this.m_axis.x;c=m.x*this.m_perp.y+m.z*this.m_axis.y;s=m.x*this.m_s1+m.y+m.z*this.m_a1;m=m.x*this.m_s2+m.y+m.z*this.m_a2;l.x-=this.m_invMassA*f;l.y-=this.m_invMassA*c;j-=this.m_invIA*s;o.x+=this.m_invMassB*f;o.y+=this.m_invMassB*c;q+=this.m_invIB*m;d.m_sweep.a=j;h.m_sweep.a=q;d.SynchronizeTransform();h.SynchronizeTransform();return b<=F.b2_linearSlop&&e<=F.b2_angularSlop};Box2D.inherit(O,Box2D.Dynamics.Joints.b2JointDef);
+O.prototype.__super=Box2D.Dynamics.Joints.b2JointDef.prototype;O.b2PrismaticJointDef=function(){Box2D.Dynamics.Joints.b2JointDef.b2JointDef.apply(this,arguments);this.localAnchorA=new w;this.localAnchorB=new w;this.localAxisA=new w};O.prototype.b2PrismaticJointDef=function(){this.__super.b2JointDef.call(this);this.type=I.e_prismaticJoint;this.localAxisA.Set(1,0);this.referenceAngle=0;this.enableLimit=false;this.upperTranslation=this.lowerTranslation=0;this.enableMotor=false;this.motorSpeed=this.maxMotorForce=
+0};O.prototype.Initialize=function(d,h,l,j){this.bodyA=d;this.bodyB=h;this.localAnchorA=this.bodyA.GetLocalPoint(l);this.localAnchorB=this.bodyB.GetLocalPoint(l);this.localAxisA=this.bodyA.GetLocalVector(j);this.referenceAngle=this.bodyB.GetAngle()-this.bodyA.GetAngle()};Box2D.inherit(E,Box2D.Dynamics.Joints.b2Joint);E.prototype.__super=Box2D.Dynamics.Joints.b2Joint.prototype;E.b2PulleyJoint=function(){Box2D.Dynamics.Joints.b2Joint.b2Joint.apply(this,arguments);this.m_groundAnchor1=new w;this.m_groundAnchor2=
+new w;this.m_localAnchor1=new w;this.m_localAnchor2=new w;this.m_u1=new w;this.m_u2=new w};E.prototype.GetAnchorA=function(){return this.m_bodyA.GetWorldPoint(this.m_localAnchor1)};E.prototype.GetAnchorB=function(){return this.m_bodyB.GetWorldPoint(this.m_localAnchor2)};E.prototype.GetReactionForce=function(d){if(d===undefined)d=0;return new w(d*this.m_impulse*this.m_u2.x,d*this.m_impulse*this.m_u2.y)};E.prototype.GetReactionTorque=function(){return 0};E.prototype.GetGroundAnchorA=function(){var d=
+this.m_ground.m_xf.position.Copy();d.Add(this.m_groundAnchor1);return d};E.prototype.GetGroundAnchorB=function(){var d=this.m_ground.m_xf.position.Copy();d.Add(this.m_groundAnchor2);return d};E.prototype.GetLength1=function(){var d=this.m_bodyA.GetWorldPoint(this.m_localAnchor1),h=d.x-(this.m_ground.m_xf.position.x+this.m_groundAnchor1.x);d=d.y-(this.m_ground.m_xf.position.y+this.m_groundAnchor1.y);return Math.sqrt(h*h+d*d)};E.prototype.GetLength2=function(){var d=this.m_bodyB.GetWorldPoint(this.m_localAnchor2),
+h=d.x-(this.m_ground.m_xf.position.x+this.m_groundAnchor2.x);d=d.y-(this.m_ground.m_xf.position.y+this.m_groundAnchor2.y);return Math.sqrt(h*h+d*d)};E.prototype.GetRatio=function(){return this.m_ratio};E.prototype.b2PulleyJoint=function(d){this.__super.b2Joint.call(this,d);this.m_ground=this.m_bodyA.m_world.m_groundBody;this.m_groundAnchor1.x=d.groundAnchorA.x-this.m_ground.m_xf.position.x;this.m_groundAnchor1.y=d.groundAnchorA.y-this.m_ground.m_xf.position.y;this.m_groundAnchor2.x=d.groundAnchorB.x-
+this.m_ground.m_xf.position.x;this.m_groundAnchor2.y=d.groundAnchorB.y-this.m_ground.m_xf.position.y;this.m_localAnchor1.SetV(d.localAnchorA);this.m_localAnchor2.SetV(d.localAnchorB);this.m_ratio=d.ratio;this.m_constant=d.lengthA+this.m_ratio*d.lengthB;this.m_maxLength1=y.Min(d.maxLengthA,this.m_constant-this.m_ratio*E.b2_minPulleyLength);this.m_maxLength2=y.Min(d.maxLengthB,(this.m_constant-E.b2_minPulleyLength)/this.m_ratio);this.m_limitImpulse2=this.m_limitImpulse1=this.m_impulse=0};E.prototype.InitVelocityConstraints=
+function(d){var h=this.m_bodyA,l=this.m_bodyB,j;j=h.m_xf.R;var o=this.m_localAnchor1.x-h.m_sweep.localCenter.x,q=this.m_localAnchor1.y-h.m_sweep.localCenter.y,n=j.col1.x*o+j.col2.x*q;q=j.col1.y*o+j.col2.y*q;o=n;j=l.m_xf.R;var a=this.m_localAnchor2.x-l.m_sweep.localCenter.x,c=this.m_localAnchor2.y-l.m_sweep.localCenter.y;n=j.col1.x*a+j.col2.x*c;c=j.col1.y*a+j.col2.y*c;a=n;j=l.m_sweep.c.x+a;n=l.m_sweep.c.y+c;var g=this.m_ground.m_xf.position.x+this.m_groundAnchor2.x,b=this.m_ground.m_xf.position.y+
+this.m_groundAnchor2.y;this.m_u1.Set(h.m_sweep.c.x+o-(this.m_ground.m_xf.position.x+this.m_groundAnchor1.x),h.m_sweep.c.y+q-(this.m_ground.m_xf.position.y+this.m_groundAnchor1.y));this.m_u2.Set(j-g,n-b);j=this.m_u1.Length();n=this.m_u2.Length();j>F.b2_linearSlop?this.m_u1.Multiply(1/j):this.m_u1.SetZero();n>F.b2_linearSlop?this.m_u2.Multiply(1/n):this.m_u2.SetZero();if(this.m_constant-j-this.m_ratio*n>0){this.m_state=I.e_inactiveLimit;this.m_impulse=0}else this.m_state=I.e_atUpperLimit;if(j<this.m_maxLength1){this.m_limitState1=
+I.e_inactiveLimit;this.m_limitImpulse1=0}else this.m_limitState1=I.e_atUpperLimit;if(n<this.m_maxLength2){this.m_limitState2=I.e_inactiveLimit;this.m_limitImpulse2=0}else this.m_limitState2=I.e_atUpperLimit;j=o*this.m_u1.y-q*this.m_u1.x;n=a*this.m_u2.y-c*this.m_u2.x;this.m_limitMass1=h.m_invMass+h.m_invI*j*j;this.m_limitMass2=l.m_invMass+l.m_invI*n*n;this.m_pulleyMass=this.m_limitMass1+this.m_ratio*this.m_ratio*this.m_limitMass2;this.m_limitMass1=1/this.m_limitMass1;this.m_limitMass2=1/this.m_limitMass2;
+this.m_pulleyMass=1/this.m_pulleyMass;if(d.warmStarting){this.m_impulse*=d.dtRatio;this.m_limitImpulse1*=d.dtRatio;this.m_limitImpulse2*=d.dtRatio;d=(-this.m_impulse-this.m_limitImpulse1)*this.m_u1.x;j=(-this.m_impulse-this.m_limitImpulse1)*this.m_u1.y;n=(-this.m_ratio*this.m_impulse-this.m_limitImpulse2)*this.m_u2.x;g=(-this.m_ratio*this.m_impulse-this.m_limitImpulse2)*this.m_u2.y;h.m_linearVelocity.x+=h.m_invMass*d;h.m_linearVelocity.y+=h.m_invMass*j;h.m_angularVelocity+=h.m_invI*(o*j-q*d);l.m_linearVelocity.x+=
+l.m_invMass*n;l.m_linearVelocity.y+=l.m_invMass*g;l.m_angularVelocity+=l.m_invI*(a*g-c*n)}else this.m_limitImpulse2=this.m_limitImpulse1=this.m_impulse=0};E.prototype.SolveVelocityConstraints=function(){var d=this.m_bodyA,h=this.m_bodyB,l;l=d.m_xf.R;var j=this.m_localAnchor1.x-d.m_sweep.localCenter.x,o=this.m_localAnchor1.y-d.m_sweep.localCenter.y,q=l.col1.x*j+l.col2.x*o;o=l.col1.y*j+l.col2.y*o;j=q;l=h.m_xf.R;var n=this.m_localAnchor2.x-h.m_sweep.localCenter.x,a=this.m_localAnchor2.y-h.m_sweep.localCenter.y;
+q=l.col1.x*n+l.col2.x*a;a=l.col1.y*n+l.col2.y*a;n=q;var c=q=l=0,g=0;l=g=l=g=c=q=l=0;if(this.m_state==I.e_atUpperLimit){l=d.m_linearVelocity.x+-d.m_angularVelocity*o;q=d.m_linearVelocity.y+d.m_angularVelocity*j;c=h.m_linearVelocity.x+-h.m_angularVelocity*a;g=h.m_linearVelocity.y+h.m_angularVelocity*n;l=-(this.m_u1.x*l+this.m_u1.y*q)-this.m_ratio*(this.m_u2.x*c+this.m_u2.y*g);g=this.m_pulleyMass*-l;l=this.m_impulse;this.m_impulse=y.Max(0,this.m_impulse+g);g=this.m_impulse-l;l=-g*this.m_u1.x;q=-g*this.m_u1.y;
+c=-this.m_ratio*g*this.m_u2.x;g=-this.m_ratio*g*this.m_u2.y;d.m_linearVelocity.x+=d.m_invMass*l;d.m_linearVelocity.y+=d.m_invMass*q;d.m_angularVelocity+=d.m_invI*(j*q-o*l);h.m_linearVelocity.x+=h.m_invMass*c;h.m_linearVelocity.y+=h.m_invMass*g;h.m_angularVelocity+=h.m_invI*(n*g-a*c)}if(this.m_limitState1==I.e_atUpperLimit){l=d.m_linearVelocity.x+-d.m_angularVelocity*o;q=d.m_linearVelocity.y+d.m_angularVelocity*j;l=-(this.m_u1.x*l+this.m_u1.y*q);g=-this.m_limitMass1*l;l=this.m_limitImpulse1;this.m_limitImpulse1=
+y.Max(0,this.m_limitImpulse1+g);g=this.m_limitImpulse1-l;l=-g*this.m_u1.x;q=-g*this.m_u1.y;d.m_linearVelocity.x+=d.m_invMass*l;d.m_linearVelocity.y+=d.m_invMass*q;d.m_angularVelocity+=d.m_invI*(j*q-o*l)}if(this.m_limitState2==I.e_atUpperLimit){c=h.m_linearVelocity.x+-h.m_angularVelocity*a;g=h.m_linearVelocity.y+h.m_angularVelocity*n;l=-(this.m_u2.x*c+this.m_u2.y*g);g=-this.m_limitMass2*l;l=this.m_limitImpulse2;this.m_limitImpulse2=y.Max(0,this.m_limitImpulse2+g);g=this.m_limitImpulse2-l;c=-g*this.m_u2.x;
+g=-g*this.m_u2.y;h.m_linearVelocity.x+=h.m_invMass*c;h.m_linearVelocity.y+=h.m_invMass*g;h.m_angularVelocity+=h.m_invI*(n*g-a*c)}};E.prototype.SolvePositionConstraints=function(){var d=this.m_bodyA,h=this.m_bodyB,l,j=this.m_ground.m_xf.position.x+this.m_groundAnchor1.x,o=this.m_ground.m_xf.position.y+this.m_groundAnchor1.y,q=this.m_ground.m_xf.position.x+this.m_groundAnchor2.x,n=this.m_ground.m_xf.position.y+this.m_groundAnchor2.y,a=0,c=0,g=0,b=0,e=l=0,f=0,m=0,r=e=m=l=e=l=0;if(this.m_state==I.e_atUpperLimit){l=
+d.m_xf.R;a=this.m_localAnchor1.x-d.m_sweep.localCenter.x;c=this.m_localAnchor1.y-d.m_sweep.localCenter.y;e=l.col1.x*a+l.col2.x*c;c=l.col1.y*a+l.col2.y*c;a=e;l=h.m_xf.R;g=this.m_localAnchor2.x-h.m_sweep.localCenter.x;b=this.m_localAnchor2.y-h.m_sweep.localCenter.y;e=l.col1.x*g+l.col2.x*b;b=l.col1.y*g+l.col2.y*b;g=e;l=d.m_sweep.c.x+a;e=d.m_sweep.c.y+c;f=h.m_sweep.c.x+g;m=h.m_sweep.c.y+b;this.m_u1.Set(l-j,e-o);this.m_u2.Set(f-q,m-n);l=this.m_u1.Length();e=this.m_u2.Length();l>F.b2_linearSlop?this.m_u1.Multiply(1/
+l):this.m_u1.SetZero();e>F.b2_linearSlop?this.m_u2.Multiply(1/e):this.m_u2.SetZero();l=this.m_constant-l-this.m_ratio*e;r=y.Max(r,-l);l=y.Clamp(l+F.b2_linearSlop,-F.b2_maxLinearCorrection,0);m=-this.m_pulleyMass*l;l=-m*this.m_u1.x;e=-m*this.m_u1.y;f=-this.m_ratio*m*this.m_u2.x;m=-this.m_ratio*m*this.m_u2.y;d.m_sweep.c.x+=d.m_invMass*l;d.m_sweep.c.y+=d.m_invMass*e;d.m_sweep.a+=d.m_invI*(a*e-c*l);h.m_sweep.c.x+=h.m_invMass*f;h.m_sweep.c.y+=h.m_invMass*m;h.m_sweep.a+=h.m_invI*(g*m-b*f);d.SynchronizeTransform();
+h.SynchronizeTransform()}if(this.m_limitState1==I.e_atUpperLimit){l=d.m_xf.R;a=this.m_localAnchor1.x-d.m_sweep.localCenter.x;c=this.m_localAnchor1.y-d.m_sweep.localCenter.y;e=l.col1.x*a+l.col2.x*c;c=l.col1.y*a+l.col2.y*c;a=e;l=d.m_sweep.c.x+a;e=d.m_sweep.c.y+c;this.m_u1.Set(l-j,e-o);l=this.m_u1.Length();if(l>F.b2_linearSlop){this.m_u1.x*=1/l;this.m_u1.y*=1/l}else this.m_u1.SetZero();l=this.m_maxLength1-l;r=y.Max(r,-l);l=y.Clamp(l+F.b2_linearSlop,-F.b2_maxLinearCorrection,0);m=-this.m_limitMass1*l;
+l=-m*this.m_u1.x;e=-m*this.m_u1.y;d.m_sweep.c.x+=d.m_invMass*l;d.m_sweep.c.y+=d.m_invMass*e;d.m_sweep.a+=d.m_invI*(a*e-c*l);d.SynchronizeTransform()}if(this.m_limitState2==I.e_atUpperLimit){l=h.m_xf.R;g=this.m_localAnchor2.x-h.m_sweep.localCenter.x;b=this.m_localAnchor2.y-h.m_sweep.localCenter.y;e=l.col1.x*g+l.col2.x*b;b=l.col1.y*g+l.col2.y*b;g=e;f=h.m_sweep.c.x+g;m=h.m_sweep.c.y+b;this.m_u2.Set(f-q,m-n);e=this.m_u2.Length();if(e>F.b2_linearSlop){this.m_u2.x*=1/e;this.m_u2.y*=1/e}else this.m_u2.SetZero();
+l=this.m_maxLength2-e;r=y.Max(r,-l);l=y.Clamp(l+F.b2_linearSlop,-F.b2_maxLinearCorrection,0);m=-this.m_limitMass2*l;f=-m*this.m_u2.x;m=-m*this.m_u2.y;h.m_sweep.c.x+=h.m_invMass*f;h.m_sweep.c.y+=h.m_invMass*m;h.m_sweep.a+=h.m_invI*(g*m-b*f);h.SynchronizeTransform()}return r<F.b2_linearSlop};Box2D.postDefs.push(function(){Box2D.Dynamics.Joints.b2PulleyJoint.b2_minPulleyLength=2});Box2D.inherit(R,Box2D.Dynamics.Joints.b2JointDef);R.prototype.__super=Box2D.Dynamics.Joints.b2JointDef.prototype;R.b2PulleyJointDef=
+function(){Box2D.Dynamics.Joints.b2JointDef.b2JointDef.apply(this,arguments);this.groundAnchorA=new w;this.groundAnchorB=new w;this.localAnchorA=new w;this.localAnchorB=new w};R.prototype.b2PulleyJointDef=function(){this.__super.b2JointDef.call(this);this.type=I.e_pulleyJoint;this.groundAnchorA.Set(-1,1);this.groundAnchorB.Set(1,1);this.localAnchorA.Set(-1,0);this.localAnchorB.Set(1,0);this.maxLengthB=this.lengthB=this.maxLengthA=this.lengthA=0;this.ratio=1;this.collideConnected=true};R.prototype.Initialize=
+function(d,h,l,j,o,q,n){if(n===undefined)n=0;this.bodyA=d;this.bodyB=h;this.groundAnchorA.SetV(l);this.groundAnchorB.SetV(j);this.localAnchorA=this.bodyA.GetLocalPoint(o);this.localAnchorB=this.bodyB.GetLocalPoint(q);d=o.x-l.x;l=o.y-l.y;this.lengthA=Math.sqrt(d*d+l*l);l=q.x-j.x;j=q.y-j.y;this.lengthB=Math.sqrt(l*l+j*j);this.ratio=n;n=this.lengthA+this.ratio*this.lengthB;this.maxLengthA=n-this.ratio*E.b2_minPulleyLength;this.maxLengthB=(n-E.b2_minPulleyLength)/this.ratio};Box2D.inherit(N,Box2D.Dynamics.Joints.b2Joint);
+N.prototype.__super=Box2D.Dynamics.Joints.b2Joint.prototype;N.b2RevoluteJoint=function(){Box2D.Dynamics.Joints.b2Joint.b2Joint.apply(this,arguments);this.K=new G;this.K1=new G;this.K2=new G;this.K3=new G;this.impulse3=new A;this.impulse2=new w;this.reduced=new w;this.m_localAnchor1=new w;this.m_localAnchor2=new w;this.m_impulse=new A;this.m_mass=new K};N.prototype.GetAnchorA=function(){return this.m_bodyA.GetWorldPoint(this.m_localAnchor1)};N.prototype.GetAnchorB=function(){return this.m_bodyB.GetWorldPoint(this.m_localAnchor2)};
+N.prototype.GetReactionForce=function(d){if(d===undefined)d=0;return new w(d*this.m_impulse.x,d*this.m_impulse.y)};N.prototype.GetReactionTorque=function(d){if(d===undefined)d=0;return d*this.m_impulse.z};N.prototype.GetJointAngle=function(){return this.m_bodyB.m_sweep.a-this.m_bodyA.m_sweep.a-this.m_referenceAngle};N.prototype.GetJointSpeed=function(){return this.m_bodyB.m_angularVelocity-this.m_bodyA.m_angularVelocity};N.prototype.IsLimitEnabled=function(){return this.m_enableLimit};N.prototype.EnableLimit=
+function(d){this.m_enableLimit=d};N.prototype.GetLowerLimit=function(){return this.m_lowerAngle};N.prototype.GetUpperLimit=function(){return this.m_upperAngle};N.prototype.SetLimits=function(d,h){if(d===undefined)d=0;if(h===undefined)h=0;this.m_lowerAngle=d;this.m_upperAngle=h};N.prototype.IsMotorEnabled=function(){this.m_bodyA.SetAwake(true);this.m_bodyB.SetAwake(true);return this.m_enableMotor};N.prototype.EnableMotor=function(d){this.m_enableMotor=d};N.prototype.SetMotorSpeed=function(d){if(d===
+undefined)d=0;this.m_bodyA.SetAwake(true);this.m_bodyB.SetAwake(true);this.m_motorSpeed=d};N.prototype.GetMotorSpeed=function(){return this.m_motorSpeed};N.prototype.SetMaxMotorTorque=function(d){if(d===undefined)d=0;this.m_maxMotorTorque=d};N.prototype.GetMotorTorque=function(){return this.m_maxMotorTorque};N.prototype.b2RevoluteJoint=function(d){this.__super.b2Joint.call(this,d);this.m_localAnchor1.SetV(d.localAnchorA);this.m_localAnchor2.SetV(d.localAnchorB);this.m_referenceAngle=d.referenceAngle;
+this.m_impulse.SetZero();this.m_motorImpulse=0;this.m_lowerAngle=d.lowerAngle;this.m_upperAngle=d.upperAngle;this.m_maxMotorTorque=d.maxMotorTorque;this.m_motorSpeed=d.motorSpeed;this.m_enableLimit=d.enableLimit;this.m_enableMotor=d.enableMotor;this.m_limitState=I.e_inactiveLimit};N.prototype.InitVelocityConstraints=function(d){var h=this.m_bodyA,l=this.m_bodyB,j,o=0;j=h.m_xf.R;var q=this.m_localAnchor1.x-h.m_sweep.localCenter.x,n=this.m_localAnchor1.y-h.m_sweep.localCenter.y;o=j.col1.x*q+j.col2.x*
+n;n=j.col1.y*q+j.col2.y*n;q=o;j=l.m_xf.R;var a=this.m_localAnchor2.x-l.m_sweep.localCenter.x,c=this.m_localAnchor2.y-l.m_sweep.localCenter.y;o=j.col1.x*a+j.col2.x*c;c=j.col1.y*a+j.col2.y*c;a=o;j=h.m_invMass;o=l.m_invMass;var g=h.m_invI,b=l.m_invI;this.m_mass.col1.x=j+o+n*n*g+c*c*b;this.m_mass.col2.x=-n*q*g-c*a*b;this.m_mass.col3.x=-n*g-c*b;this.m_mass.col1.y=this.m_mass.col2.x;this.m_mass.col2.y=j+o+q*q*g+a*a*b;this.m_mass.col3.y=q*g+a*b;this.m_mass.col1.z=this.m_mass.col3.x;this.m_mass.col2.z=this.m_mass.col3.y;
+this.m_mass.col3.z=g+b;this.m_motorMass=1/(g+b);if(this.m_enableMotor==false)this.m_motorImpulse=0;if(this.m_enableLimit){var e=l.m_sweep.a-h.m_sweep.a-this.m_referenceAngle;if(y.Abs(this.m_upperAngle-this.m_lowerAngle)<2*F.b2_angularSlop)this.m_limitState=I.e_equalLimits;else if(e<=this.m_lowerAngle){if(this.m_limitState!=I.e_atLowerLimit)this.m_impulse.z=0;this.m_limitState=I.e_atLowerLimit}else if(e>=this.m_upperAngle){if(this.m_limitState!=I.e_atUpperLimit)this.m_impulse.z=0;this.m_limitState=
+I.e_atUpperLimit}else{this.m_limitState=I.e_inactiveLimit;this.m_impulse.z=0}}else this.m_limitState=I.e_inactiveLimit;if(d.warmStarting){this.m_impulse.x*=d.dtRatio;this.m_impulse.y*=d.dtRatio;this.m_motorImpulse*=d.dtRatio;d=this.m_impulse.x;e=this.m_impulse.y;h.m_linearVelocity.x-=j*d;h.m_linearVelocity.y-=j*e;h.m_angularVelocity-=g*(q*e-n*d+this.m_motorImpulse+this.m_impulse.z);l.m_linearVelocity.x+=o*d;l.m_linearVelocity.y+=o*e;l.m_angularVelocity+=b*(a*e-c*d+this.m_motorImpulse+this.m_impulse.z)}else{this.m_impulse.SetZero();
+this.m_motorImpulse=0}};N.prototype.SolveVelocityConstraints=function(d){var h=this.m_bodyA,l=this.m_bodyB,j=0,o=j=0,q=0,n=0,a=0,c=h.m_linearVelocity,g=h.m_angularVelocity,b=l.m_linearVelocity,e=l.m_angularVelocity,f=h.m_invMass,m=l.m_invMass,r=h.m_invI,s=l.m_invI;if(this.m_enableMotor&&this.m_limitState!=I.e_equalLimits){o=this.m_motorMass*-(e-g-this.m_motorSpeed);q=this.m_motorImpulse;n=d.dt*this.m_maxMotorTorque;this.m_motorImpulse=y.Clamp(this.m_motorImpulse+o,-n,n);o=this.m_motorImpulse-q;g-=
+r*o;e+=s*o}if(this.m_enableLimit&&this.m_limitState!=I.e_inactiveLimit){d=h.m_xf.R;o=this.m_localAnchor1.x-h.m_sweep.localCenter.x;q=this.m_localAnchor1.y-h.m_sweep.localCenter.y;j=d.col1.x*o+d.col2.x*q;q=d.col1.y*o+d.col2.y*q;o=j;d=l.m_xf.R;n=this.m_localAnchor2.x-l.m_sweep.localCenter.x;a=this.m_localAnchor2.y-l.m_sweep.localCenter.y;j=d.col1.x*n+d.col2.x*a;a=d.col1.y*n+d.col2.y*a;n=j;d=b.x+-e*a-c.x- -g*q;var v=b.y+e*n-c.y-g*o;this.m_mass.Solve33(this.impulse3,-d,-v,-(e-g));if(this.m_limitState==
+I.e_equalLimits)this.m_impulse.Add(this.impulse3);else if(this.m_limitState==I.e_atLowerLimit){j=this.m_impulse.z+this.impulse3.z;if(j<0){this.m_mass.Solve22(this.reduced,-d,-v);this.impulse3.x=this.reduced.x;this.impulse3.y=this.reduced.y;this.impulse3.z=-this.m_impulse.z;this.m_impulse.x+=this.reduced.x;this.m_impulse.y+=this.reduced.y;this.m_impulse.z=0}}else if(this.m_limitState==I.e_atUpperLimit){j=this.m_impulse.z+this.impulse3.z;if(j>0){this.m_mass.Solve22(this.reduced,-d,-v);this.impulse3.x=
+this.reduced.x;this.impulse3.y=this.reduced.y;this.impulse3.z=-this.m_impulse.z;this.m_impulse.x+=this.reduced.x;this.m_impulse.y+=this.reduced.y;this.m_impulse.z=0}}c.x-=f*this.impulse3.x;c.y-=f*this.impulse3.y;g-=r*(o*this.impulse3.y-q*this.impulse3.x+this.impulse3.z);b.x+=m*this.impulse3.x;b.y+=m*this.impulse3.y;e+=s*(n*this.impulse3.y-a*this.impulse3.x+this.impulse3.z)}else{d=h.m_xf.R;o=this.m_localAnchor1.x-h.m_sweep.localCenter.x;q=this.m_localAnchor1.y-h.m_sweep.localCenter.y;j=d.col1.x*o+
+d.col2.x*q;q=d.col1.y*o+d.col2.y*q;o=j;d=l.m_xf.R;n=this.m_localAnchor2.x-l.m_sweep.localCenter.x;a=this.m_localAnchor2.y-l.m_sweep.localCenter.y;j=d.col1.x*n+d.col2.x*a;a=d.col1.y*n+d.col2.y*a;n=j;this.m_mass.Solve22(this.impulse2,-(b.x+-e*a-c.x- -g*q),-(b.y+e*n-c.y-g*o));this.m_impulse.x+=this.impulse2.x;this.m_impulse.y+=this.impulse2.y;c.x-=f*this.impulse2.x;c.y-=f*this.impulse2.y;g-=r*(o*this.impulse2.y-q*this.impulse2.x);b.x+=m*this.impulse2.x;b.y+=m*this.impulse2.y;e+=s*(n*this.impulse2.y-
+a*this.impulse2.x)}h.m_linearVelocity.SetV(c);h.m_angularVelocity=g;l.m_linearVelocity.SetV(b);l.m_angularVelocity=e};N.prototype.SolvePositionConstraints=function(){var d=0,h,l=this.m_bodyA,j=this.m_bodyB,o=0,q=h=0,n=0,a=0;if(this.m_enableLimit&&this.m_limitState!=I.e_inactiveLimit){d=j.m_sweep.a-l.m_sweep.a-this.m_referenceAngle;var c=0;if(this.m_limitState==I.e_equalLimits){d=y.Clamp(d-this.m_lowerAngle,-F.b2_maxAngularCorrection,F.b2_maxAngularCorrection);c=-this.m_motorMass*d;o=y.Abs(d)}else if(this.m_limitState==
+I.e_atLowerLimit){d=d-this.m_lowerAngle;o=-d;d=y.Clamp(d+F.b2_angularSlop,-F.b2_maxAngularCorrection,0);c=-this.m_motorMass*d}else if(this.m_limitState==I.e_atUpperLimit){o=d=d-this.m_upperAngle;d=y.Clamp(d-F.b2_angularSlop,0,F.b2_maxAngularCorrection);c=-this.m_motorMass*d}l.m_sweep.a-=l.m_invI*c;j.m_sweep.a+=j.m_invI*c;l.SynchronizeTransform();j.SynchronizeTransform()}h=l.m_xf.R;c=this.m_localAnchor1.x-l.m_sweep.localCenter.x;d=this.m_localAnchor1.y-l.m_sweep.localCenter.y;q=h.col1.x*c+h.col2.x*
+d;d=h.col1.y*c+h.col2.y*d;c=q;h=j.m_xf.R;var g=this.m_localAnchor2.x-j.m_sweep.localCenter.x,b=this.m_localAnchor2.y-j.m_sweep.localCenter.y;q=h.col1.x*g+h.col2.x*b;b=h.col1.y*g+h.col2.y*b;g=q;n=j.m_sweep.c.x+g-l.m_sweep.c.x-c;a=j.m_sweep.c.y+b-l.m_sweep.c.y-d;var e=n*n+a*a;h=Math.sqrt(e);q=l.m_invMass;var f=j.m_invMass,m=l.m_invI,r=j.m_invI,s=10*F.b2_linearSlop;if(e>s*s){e=1/(q+f);n=e*-n;a=e*-a;l.m_sweep.c.x-=0.5*q*n;l.m_sweep.c.y-=0.5*q*a;j.m_sweep.c.x+=0.5*f*n;j.m_sweep.c.y+=0.5*f*a;n=j.m_sweep.c.x+
+g-l.m_sweep.c.x-c;a=j.m_sweep.c.y+b-l.m_sweep.c.y-d}this.K1.col1.x=q+f;this.K1.col2.x=0;this.K1.col1.y=0;this.K1.col2.y=q+f;this.K2.col1.x=m*d*d;this.K2.col2.x=-m*c*d;this.K2.col1.y=-m*c*d;this.K2.col2.y=m*c*c;this.K3.col1.x=r*b*b;this.K3.col2.x=-r*g*b;this.K3.col1.y=-r*g*b;this.K3.col2.y=r*g*g;this.K.SetM(this.K1);this.K.AddM(this.K2);this.K.AddM(this.K3);this.K.Solve(N.tImpulse,-n,-a);n=N.tImpulse.x;a=N.tImpulse.y;l.m_sweep.c.x-=l.m_invMass*n;l.m_sweep.c.y-=l.m_invMass*a;l.m_sweep.a-=l.m_invI*(c*
+a-d*n);j.m_sweep.c.x+=j.m_invMass*n;j.m_sweep.c.y+=j.m_invMass*a;j.m_sweep.a+=j.m_invI*(g*a-b*n);l.SynchronizeTransform();j.SynchronizeTransform();return h<=F.b2_linearSlop&&o<=F.b2_angularSlop};Box2D.postDefs.push(function(){Box2D.Dynamics.Joints.b2RevoluteJoint.tImpulse=new w});Box2D.inherit(S,Box2D.Dynamics.Joints.b2JointDef);S.prototype.__super=Box2D.Dynamics.Joints.b2JointDef.prototype;S.b2RevoluteJointDef=function(){Box2D.Dynamics.Joints.b2JointDef.b2JointDef.apply(this,arguments);this.localAnchorA=
+new w;this.localAnchorB=new w};S.prototype.b2RevoluteJointDef=function(){this.__super.b2JointDef.call(this);this.type=I.e_revoluteJoint;this.localAnchorA.Set(0,0);this.localAnchorB.Set(0,0);this.motorSpeed=this.maxMotorTorque=this.upperAngle=this.lowerAngle=this.referenceAngle=0;this.enableMotor=this.enableLimit=false};S.prototype.Initialize=function(d,h,l){this.bodyA=d;this.bodyB=h;this.localAnchorA=this.bodyA.GetLocalPoint(l);this.localAnchorB=this.bodyB.GetLocalPoint(l);this.referenceAngle=this.bodyB.GetAngle()-
+this.bodyA.GetAngle()};Box2D.inherit(aa,Box2D.Dynamics.Joints.b2Joint);aa.prototype.__super=Box2D.Dynamics.Joints.b2Joint.prototype;aa.b2WeldJoint=function(){Box2D.Dynamics.Joints.b2Joint.b2Joint.apply(this,arguments);this.m_localAnchorA=new w;this.m_localAnchorB=new w;this.m_impulse=new A;this.m_mass=new K};aa.prototype.GetAnchorA=function(){return this.m_bodyA.GetWorldPoint(this.m_localAnchorA)};aa.prototype.GetAnchorB=function(){return this.m_bodyB.GetWorldPoint(this.m_localAnchorB)};aa.prototype.GetReactionForce=
+function(d){if(d===undefined)d=0;return new w(d*this.m_impulse.x,d*this.m_impulse.y)};aa.prototype.GetReactionTorque=function(d){if(d===undefined)d=0;return d*this.m_impulse.z};aa.prototype.b2WeldJoint=function(d){this.__super.b2Joint.call(this,d);this.m_localAnchorA.SetV(d.localAnchorA);this.m_localAnchorB.SetV(d.localAnchorB);this.m_referenceAngle=d.referenceAngle;this.m_impulse.SetZero();this.m_mass=new K};aa.prototype.InitVelocityConstraints=function(d){var h,l=0,j=this.m_bodyA,o=this.m_bodyB;
+h=j.m_xf.R;var q=this.m_localAnchorA.x-j.m_sweep.localCenter.x,n=this.m_localAnchorA.y-j.m_sweep.localCenter.y;l=h.col1.x*q+h.col2.x*n;n=h.col1.y*q+h.col2.y*n;q=l;h=o.m_xf.R;var a=this.m_localAnchorB.x-o.m_sweep.localCenter.x,c=this.m_localAnchorB.y-o.m_sweep.localCenter.y;l=h.col1.x*a+h.col2.x*c;c=h.col1.y*a+h.col2.y*c;a=l;h=j.m_invMass;l=o.m_invMass;var g=j.m_invI,b=o.m_invI;this.m_mass.col1.x=h+l+n*n*g+c*c*b;this.m_mass.col2.x=-n*q*g-c*a*b;this.m_mass.col3.x=-n*g-c*b;this.m_mass.col1.y=this.m_mass.col2.x;
+this.m_mass.col2.y=h+l+q*q*g+a*a*b;this.m_mass.col3.y=q*g+a*b;this.m_mass.col1.z=this.m_mass.col3.x;this.m_mass.col2.z=this.m_mass.col3.y;this.m_mass.col3.z=g+b;if(d.warmStarting){this.m_impulse.x*=d.dtRatio;this.m_impulse.y*=d.dtRatio;this.m_impulse.z*=d.dtRatio;j.m_linearVelocity.x-=h*this.m_impulse.x;j.m_linearVelocity.y-=h*this.m_impulse.y;j.m_angularVelocity-=g*(q*this.m_impulse.y-n*this.m_impulse.x+this.m_impulse.z);o.m_linearVelocity.x+=l*this.m_impulse.x;o.m_linearVelocity.y+=l*this.m_impulse.y;
+o.m_angularVelocity+=b*(a*this.m_impulse.y-c*this.m_impulse.x+this.m_impulse.z)}else this.m_impulse.SetZero()};aa.prototype.SolveVelocityConstraints=function(){var d,h=0,l=this.m_bodyA,j=this.m_bodyB,o=l.m_linearVelocity,q=l.m_angularVelocity,n=j.m_linearVelocity,a=j.m_angularVelocity,c=l.m_invMass,g=j.m_invMass,b=l.m_invI,e=j.m_invI;d=l.m_xf.R;var f=this.m_localAnchorA.x-l.m_sweep.localCenter.x,m=this.m_localAnchorA.y-l.m_sweep.localCenter.y;h=d.col1.x*f+d.col2.x*m;m=d.col1.y*f+d.col2.y*m;f=h;d=
+j.m_xf.R;var r=this.m_localAnchorB.x-j.m_sweep.localCenter.x,s=this.m_localAnchorB.y-j.m_sweep.localCenter.y;h=d.col1.x*r+d.col2.x*s;s=d.col1.y*r+d.col2.y*s;r=h;d=n.x-a*s-o.x+q*m;h=n.y+a*r-o.y-q*f;var v=a-q,t=new A;this.m_mass.Solve33(t,-d,-h,-v);this.m_impulse.Add(t);o.x-=c*t.x;o.y-=c*t.y;q-=b*(f*t.y-m*t.x+t.z);n.x+=g*t.x;n.y+=g*t.y;a+=e*(r*t.y-s*t.x+t.z);l.m_angularVelocity=q;j.m_angularVelocity=a};aa.prototype.SolvePositionConstraints=function(){var d,h=0,l=this.m_bodyA,j=this.m_bodyB;d=l.m_xf.R;
+var o=this.m_localAnchorA.x-l.m_sweep.localCenter.x,q=this.m_localAnchorA.y-l.m_sweep.localCenter.y;h=d.col1.x*o+d.col2.x*q;q=d.col1.y*o+d.col2.y*q;o=h;d=j.m_xf.R;var n=this.m_localAnchorB.x-j.m_sweep.localCenter.x,a=this.m_localAnchorB.y-j.m_sweep.localCenter.y;h=d.col1.x*n+d.col2.x*a;a=d.col1.y*n+d.col2.y*a;n=h;d=l.m_invMass;h=j.m_invMass;var c=l.m_invI,g=j.m_invI,b=j.m_sweep.c.x+n-l.m_sweep.c.x-o,e=j.m_sweep.c.y+a-l.m_sweep.c.y-q,f=j.m_sweep.a-l.m_sweep.a-this.m_referenceAngle,m=10*F.b2_linearSlop,
+r=Math.sqrt(b*b+e*e),s=y.Abs(f);if(r>m){c*=1;g*=1}this.m_mass.col1.x=d+h+q*q*c+a*a*g;this.m_mass.col2.x=-q*o*c-a*n*g;this.m_mass.col3.x=-q*c-a*g;this.m_mass.col1.y=this.m_mass.col2.x;this.m_mass.col2.y=d+h+o*o*c+n*n*g;this.m_mass.col3.y=o*c+n*g;this.m_mass.col1.z=this.m_mass.col3.x;this.m_mass.col2.z=this.m_mass.col3.y;this.m_mass.col3.z=c+g;m=new A;this.m_mass.Solve33(m,-b,-e,-f);l.m_sweep.c.x-=d*m.x;l.m_sweep.c.y-=d*m.y;l.m_sweep.a-=c*(o*m.y-q*m.x+m.z);j.m_sweep.c.x+=h*m.x;j.m_sweep.c.y+=h*m.y;
+j.m_sweep.a+=g*(n*m.y-a*m.x+m.z);l.SynchronizeTransform();j.SynchronizeTransform();return r<=F.b2_linearSlop&&s<=F.b2_angularSlop};Box2D.inherit(Z,Box2D.Dynamics.Joints.b2JointDef);Z.prototype.__super=Box2D.Dynamics.Joints.b2JointDef.prototype;Z.b2WeldJointDef=function(){Box2D.Dynamics.Joints.b2JointDef.b2JointDef.apply(this,arguments);this.localAnchorA=new w;this.localAnchorB=new w};Z.prototype.b2WeldJointDef=function(){this.__super.b2JointDef.call(this);this.type=I.e_weldJoint;this.referenceAngle=
+0};Z.prototype.Initialize=function(d,h,l){this.bodyA=d;this.bodyB=h;this.localAnchorA.SetV(this.bodyA.GetLocalPoint(l));this.localAnchorB.SetV(this.bodyB.GetLocalPoint(l));this.referenceAngle=this.bodyB.GetAngle()-this.bodyA.GetAngle()}})();
+(function(){var F=Box2D.Dynamics.b2DebugDraw;F.b2DebugDraw=function(){this.m_xformScale=this.m_fillAlpha=this.m_alpha=this.m_lineThickness=this.m_drawScale=1;var G=this;this.m_sprite={graphics:{clear:function(){G.m_ctx.clearRect(0,0,G.m_ctx.canvas.width,G.m_ctx.canvas.height)}}}};F.prototype._color=function(G,K){return"rgba("+((G&16711680)>>16)+","+((G&65280)>>8)+","+(G&255)+","+K+")"};F.prototype.b2DebugDraw=function(){this.m_drawFlags=0};F.prototype.SetFlags=function(G){if(G===undefined)G=0;this.m_drawFlags=
+G};F.prototype.GetFlags=function(){return this.m_drawFlags};F.prototype.AppendFlags=function(G){if(G===undefined)G=0;this.m_drawFlags|=G};F.prototype.ClearFlags=function(G){if(G===undefined)G=0;this.m_drawFlags&=~G};F.prototype.SetSprite=function(G){this.m_ctx=G};F.prototype.GetSprite=function(){return this.m_ctx};F.prototype.SetDrawScale=function(G){if(G===undefined)G=0;this.m_drawScale=G};F.prototype.GetDrawScale=function(){return this.m_drawScale};F.prototype.SetLineThickness=function(G){if(G===
+undefined)G=0;this.m_lineThickness=G;this.m_ctx.strokeWidth=G};F.prototype.GetLineThickness=function(){return this.m_lineThickness};F.prototype.SetAlpha=function(G){if(G===undefined)G=0;this.m_alpha=G};F.prototype.GetAlpha=function(){return this.m_alpha};F.prototype.SetFillAlpha=function(G){if(G===undefined)G=0;this.m_fillAlpha=G};F.prototype.GetFillAlpha=function(){return this.m_fillAlpha};F.prototype.SetXFormScale=function(G){if(G===undefined)G=0;this.m_xformScale=G};F.prototype.GetXFormScale=function(){return this.m_xformScale};
+F.prototype.DrawPolygon=function(G,K,y){if(K){var w=this.m_ctx,A=this.m_drawScale;w.beginPath();w.strokeStyle=this._color(y.color,this.m_alpha);w.moveTo(G[0].x*A,G[0].y*A);for(y=1;y<K;y++)w.lineTo(G[y].x*A,G[y].y*A);w.lineTo(G[0].x*A,G[0].y*A);w.closePath();w.stroke()}};F.prototype.DrawSolidPolygon=function(G,K,y){if(K){var w=this.m_ctx,A=this.m_drawScale;w.beginPath();w.strokeStyle=this._color(y.color,this.m_alpha);w.fillStyle=this._color(y.color,this.m_fillAlpha);w.moveTo(G[0].x*A,G[0].y*A);for(y=
+1;y<K;y++)w.lineTo(G[y].x*A,G[y].y*A);w.lineTo(G[0].x*A,G[0].y*A);w.closePath();w.fill();w.stroke()}};F.prototype.DrawCircle=function(G,K,y){if(K){var w=this.m_ctx,A=this.m_drawScale;w.beginPath();w.strokeStyle=this._color(y.color,this.m_alpha);w.arc(G.x*A,G.y*A,K*A,0,Math.PI*2,true);w.closePath();w.stroke()}};F.prototype.DrawSolidCircle=function(G,K,y,w){if(K){var A=this.m_ctx,U=this.m_drawScale,p=G.x*U,B=G.y*U;A.moveTo(0,0);A.beginPath();A.strokeStyle=this._color(w.color,this.m_alpha);A.fillStyle=
+this._color(w.color,this.m_fillAlpha);A.arc(p,B,K*U,0,Math.PI*2,true);A.moveTo(p,B);A.lineTo((G.x+y.x*K)*U,(G.y+y.y*K)*U);A.closePath();A.fill();A.stroke()}};F.prototype.DrawSegment=function(G,K,y){var w=this.m_ctx,A=this.m_drawScale;w.strokeStyle=this._color(y.color,this.m_alpha);w.beginPath();w.moveTo(G.x*A,G.y*A);w.lineTo(K.x*A,K.y*A);w.closePath();w.stroke()};F.prototype.DrawTransform=function(G){var K=this.m_ctx,y=this.m_drawScale;K.beginPath();K.strokeStyle=this._color(16711680,this.m_alpha);
+K.moveTo(G.position.x*y,G.position.y*y);K.lineTo((G.position.x+this.m_xformScale*G.R.col1.x)*y,(G.position.y+this.m_xformScale*G.R.col1.y)*y);K.strokeStyle=this._color(65280,this.m_alpha);K.moveTo(G.position.x*y,G.position.y*y);K.lineTo((G.position.x+this.m_xformScale*G.R.col2.x)*y,(G.position.y+this.m_xformScale*G.R.col2.y)*y);K.closePath();K.stroke()}})();var i;for(i=0;i<Box2D.postDefs.length;++i)Box2D.postDefs[i]();delete Box2D.postDefs;
+
+// Copyright 2012 the V8 project authors. All rights reserved.
+
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 2 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+function MakeNewWorld () {
+  var Vec2 = Box2D.Common.Math.b2Vec2,
+      BodyDef = Box2D.Dynamics.b2BodyDef,
+      Body = Box2D.Dynamics.b2Body,
+      FixtureDef = Box2D.Dynamics.b2FixtureDef,
+      Fixture = Box2D.Dynamics.b2Fixture,
+      World = Box2D.Dynamics.b2World,
+      MassData = Box2D.Collision.Shapes.b2MassData,
+      PolygonShape = Box2D.Collision.Shapes.b2PolygonShape,
+      CircleShape = Box2D.Collision.Shapes.b2CircleShape;
+
+  var gravity = new Vec2(0, -10);
+  var world = new World(gravity, true);
+
+  var shape = new PolygonShape();
+  shape.SetAsEdge(new Vec2(-40.0, 0), new Vec2(40.0, 0));
+
+  var fd = new FixtureDef();
+  fd.density = 0.0;
+  fd.shape = shape;
+  var bd = new BodyDef();
+  var ground = world.CreateBody(bd);
+  ground.CreateFixture(fd);
+
+  var a = .5;
+  var shape = new PolygonShape();
+  shape.SetAsBox(a, a);
+
+  var x = new Vec2(-7.0, 0.75);
+  var y = new Vec2();
+  var deltaX = new Vec2(0.5625, 1);
+  var deltaY = new Vec2(1.125, 0.0);
+
+  for (var i = 0; i < 10; ++i) {
+    y.Set(x.x, x.y);
+
+    for (var j = 0; j < 5; ++j) {
+      var fd = new FixtureDef();
+      fd.density = 5.0;
+      fd.shape = shape;
+
+      var bd = new BodyDef();
+      bd.type = Body.b2_dynamicBody;
+      bd.position.Set(y.x, y.y);
+      var body = world.CreateBody(bd);
+      body.CreateFixture(fd);
+      y.Add(deltaY);
+    }
+
+    x.Add(deltaX);
+  }
+
+  return world;
+}
+
+var world = null;
+
+var Box2DBenchmark = new BenchmarkSuite('Box2D', 4559000,
+                                        [new Benchmark('Box2D',
+                                                       runBox2D,
+                                                       setupBox2D,
+                                                       tearDownBox2D,
+                                                       8)]);
+
+function runBox2D() {
+  var world = MakeNewWorld();
+  for (var i = 0; i < 20; i++) {
+    world.Step(1 / 60, 10, 3);
+  }
+}
+
+function setupBox2D() {
+}
+
+function tearDownBox2D() {
+  world = null;
+  Box2D = null;
+}
+
+
diff --git a/suite/cts/deviceTests/browserbench/assets/octane/code-load.js b/suite/cts/deviceTests/browserbench/assets/octane/code-load.js
new file mode 100644
index 0000000..24d7df1
--- /dev/null
+++ b/suite/cts/deviceTests/browserbench/assets/octane/code-load.js
@@ -0,0 +1,1531 @@
+// Copyright 2012 the Octane Benchmark project authors. All rights reserved.
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+//       notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+//       copyright notice, this list of conditions and the following
+//       disclaimer in the documentation and/or other materials provided
+//       with the distribution.
+//     * Neither the name of Google Inc. nor the names of its
+//       contributors may be used to endorse or promote products derived
+//       from this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+
+// The code in BASE_JS below:
+// Copyright 2012 The Closure Library Authors. All Rights Reserved.
+//
+// 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.
+
+
+// The code in JQUERY_JS below:
+// Copyright (c) 2012 John Resig, http://jquery.com/
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// 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 OR COPYRIGHT HOLDERS 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.
+
+
+var CodeLoad = new BenchmarkSuite('CodeLoad', 450000, [
+  new Benchmark('CodeLoadClosure',
+                runCodeLoadClosure,
+                setupCodeLoad,
+                tearDownCodeLoad,
+                16),
+  new Benchmark('CodeLoadJQuery',
+                runCodeLoadJQuery,
+                setupCodeLoad,
+                tearDownCodeLoad,
+                16)
+]);
+
+var salt;
+var indirectEval;
+
+function setupCodeLoad() {
+  salt = 0;
+  indirectEval = eval;
+}
+
+function tearDownCodeLoad() {
+  salt = null;
+  indirectEval = null;
+}
+
+function runCodeLoadClosure() {
+  runClosure();
+  salt++;
+}
+
+function runCodeLoadJQuery() {
+  runJQuery();
+  salt++;
+}
+
+/*
+ * BASE_JS is a compiled and formatted version of:
+ * http://code.google.com/p/closure-library/source/browse/trunk/closure/goog/base.js
+ * JQUERY_JS is a formatted copy of:
+ * http://code.jquery.com/jquery.min.js
+ * The following Python script generates both variables:
+
+#!/usr/bin/env python
+
+import urllib
+import urllib2
+
+def escape_and_format(data, varname):
+  data = data.replace("\n", " ").replace("; ", ";")
+  data = data.replace("\\", "\\\\").replace("\"", "\\\"")
+  data = "var " + varname + " = \"" + data + "\""
+  while len(data) > 0:
+    cutoff = min(79, len(data))
+    while data[cutoff-1] == '\\':
+      cutoff -= 1
+    line = data[0:cutoff]
+    data = data[cutoff:]
+    if len(data) > 0:
+      line += '\\'
+    print line
+
+url = "http://closure-compiler.appspot.com/compile"
+request_params = {"output_format": "text",
+                  "compilation_level": "SIMPLE_OPTIMIZATIONS",
+                  "use_closure_library": "true",
+                  "js_code": "",
+                  "output_info": "compiled_code"}
+result = urllib2.urlopen(url, urllib.urlencode(request_params))
+escape_and_format(result.read(), "BASE_JS")
+
+print "\n\n"
+
+url = "http://code.jquery.com/jquery.min.js"
+result = urllib2.urlopen(url)
+escape_and_format(result.read(), "JQUERY_JS")
+
+*/
+var BASE_JS = "var COMPILED=!0,goog=goog||{};goog.global=this;goog.DEBUG=!0;goo\
+g.LOCALE=\"en\";goog.provide=function(a){if(!COMPILED){if(goog.isProvided_(a))t\
+hrow Error('Namespace \"'+a+'\" already declared.');delete goog.implicitNamespa\
+ces_[a];for(var b=a;(b=b.substring(0,b.lastIndexOf(\".\")))&&!goog.getObjectByN\
+ame(b);)goog.implicitNamespaces_[b]=!0}goog.exportPath_(a)};goog.setTestOnly=fu\
+nction(a){if(COMPILED&&!goog.DEBUG)throw a=a||\"\",Error(\"Importing test-only \
+code into non-debug environment\"+a?\": \"+a:\".\");};COMPILED||(goog.isProvide\
+d_=function(a){return!goog.implicitNamespaces_[a]&&!!goog.getObjectByName(a)},g\
+oog.implicitNamespaces_={});goog.exportPath_=function(a,b,c){a=a.split(\".\");c\
+=c||goog.global;!(a[0]in c)&&c.execScript&&c.execScript(\"var \"+a[0]);for(var \
+d;a.length&&(d=a.shift());)!a.length&&goog.isDef(b)?c[d]=b:c=c[d]?c[d]:c[d]={}}\
+;goog.getObjectByName=function(a,b){for(var c=a.split(\".\"),d=b||goog.global,e\
+;e=c.shift();)if(goog.isDefAndNotNull(d[e]))d=d[e];else return null;return d};g\
+oog.globalize=function(a,b){var c=b||goog.global,d;for(d in a)c[d]=a[d]};goog.a\
+ddDependency=function(a,b,c){if(!COMPILED){for(var d,a=a.replace(/\\\\/g,\"/\")\
+,e=goog.dependencies_,g=0;d=b[g];g++){e.nameToPath[d]=a;a in e.pathToNames||(e.\
+pathToNames[a]={});e.pathToNames[a][d]=true}for(d=0;b=c[d];d++){a in e.requires\
+||(e.requires[a]={});e.requires[a][b]=true}}};goog.ENABLE_DEBUG_LOADER=!0;goog.\
+require=function(a){if(!COMPILED&&!goog.isProvided_(a)){if(goog.ENABLE_DEBUG_LO\
+ADER){var b=goog.getPathFromDeps_(a);if(b){goog.included_[b]=true;goog.writeScr\
+ipts_();return}}a=\"goog.require could not find: \"+a;goog.global.console&&goog\
+.global.console.error(a);throw Error(a);}};goog.basePath=\"\";goog.nullFunction\
+=function(){};goog.identityFunction=function(a){return a};goog.abstractMethod=f\
+unction(){throw Error(\"unimplemented abstract method\");};goog.addSingletonGet\
+ter=function(a){a.getInstance=function(){return a.instance_||(a.instance_=new a\
+)}};!COMPILED&&goog.ENABLE_DEBUG_LOADER&&(goog.included_={},goog.dependencies_=\
+{pathToNames:{},nameToPath:{},requires:{},visited:{},written:{}},goog.inHtmlDoc\
+ument_=function(){var a=goog.global.document;return typeof a!=\"undefined\"&&\"\
+write\"in a},goog.findBasePath_=function(){if(goog.global.CLOSURE_BASE_PATH)goo\
+g.basePath=goog.global.CLOSURE_BASE_PATH;else if(goog.inHtmlDocument_())for(var\
+ a=goog.global.document.getElementsByTagName(\"script\"),b=a.length-1;b>=0;--b)\
+{var c=a[b].src,d=c.lastIndexOf(\"?\"), d=d==-1?c.length:d;if(c.substr(d-7,7)==\
+\"base.js\"){goog.basePath=c.substr(0,d-7);break}}},goog.importScript_=function\
+(a){var b=goog.global.CLOSURE_IMPORT_SCRIPT||goog.writeScriptTag_;!goog.depende\
+ncies_.written[a]&&b(a)&&(goog.dependencies_.written[a]=true)},goog.writeScript\
+Tag_=function(a){if(goog.inHtmlDocument_()){goog.global.document.write('<script\
+ type=\"text/javascript\" src=\"'+a+'\"><\\/script>');return true}return false}\
+,goog.writeScripts_=function(){function a(e){if(!(e in d.written)){if(!(e in d.\
+visited)){d.visited[e]=true;if(e in d.requires)for(var f in d.requires[e])if(!g\
+oog.isProvided_(f))if(f in d.nameToPath)a(d.nameToPath[f]);else throw Error(\"U\
+ndefined nameToPath for \"+f);}if(!(e in c)){c[e]=true;b.push(e)}}}var b=[],c={\
+},d=goog.dependencies_,e;for(e in goog.included_)d.written[e]||a(e);for(e=0;e<b\
+.length;e++)if(b[e])goog.importScript_(goog.basePath+b[e]);else throw Error(\"U\
+ndefined script input\");},goog.getPathFromDeps_=function(a){return a in goog.d\
+ependencies_.nameToPath?goog.dependencies_.nameToPath[a]: null},goog.findBasePa\
+th_(),goog.global.CLOSURE_NO_DEPS||goog.importScript_(goog.basePath+\"deps.js\"\
+));goog.typeOf=function(a){var b=typeof a;if(b==\"object\")if(a){if(a instanceo\
+f Array)return\"array\";if(a instanceof Object)return b;var c=Object.prototype.\
+toString.call(a);if(c==\"[object Window]\")return\"object\";if(c==\"[object Arr\
+ay]\"||typeof a.length==\"number\"&&typeof a.splice!=\"undefined\"&&typeof a.pr\
+opertyIsEnumerable!=\"undefined\"&&!a.propertyIsEnumerable(\"splice\"))return\"\
+array\";if(c==\"[object Function]\"||typeof a.call!=\"undefined\"&&typeof a.pro\
+pertyIsEnumerable!=\"undefined\"&&!a.propertyIsEnumerable(\"call\"))return\"fun\
+ction\"}else return\"null\";else if(b==\"function\"&&typeof a.call==\"undefined\
+\")return\"object\";return b};goog.isDef=function(a){return a!==void 0};goog.is\
+Null=function(a){return a===null};goog.isDefAndNotNull=function(a){return a!=nu\
+ll};goog.isArray=function(a){return goog.typeOf(a)==\"array\"};goog.isArrayLike\
+=function(a){var b=goog.typeOf(a);return b==\"array\"||b==\"object\"&&typeof a.\
+length==\"number\"};goog.isDateLike=function(a){return goog.isObject(a)&&typeof\
+ a.getFullYear==\"function\"};goog.isString=function(a){return typeof a==\"stri\
+ng\"};goog.isBoolean=function(a){return typeof a==\"boolean\"};goog.isNumber=fu\
+nction(a){return typeof a==\"number\"};goog.isFunction=function(a){return goog.\
+typeOf(a)==\"function\"};goog.isObject=function(a){var b=typeof a;return b==\"o\
+bject\"&&a!=null||b==\"function\"};goog.getUid=function(a){return a[goog.UID_PR\
+OPERTY_]||(a[goog.UID_PROPERTY_]=++goog.uidCounter_)};goog.removeUid=function(a\
+){\"removeAttribute\"in a&&a.removeAttribute(goog.UID_PROPERTY_);try{delete a[g\
+oog.UID_PROPERTY_]}catch(b){}};goog.UID_PROPERTY_=\"closure_uid_\"+Math.floor(2\
+147483648*Math.random()).toString(36);goog.uidCounter_=0;goog.getHashCode=goog.\
+getUid;goog.removeHashCode=goog.removeUid;goog.cloneObject=function(a){var b=go\
+og.typeOf(a);if(b==\"object\"||b==\"array\"){if(a.clone)return a.clone();var b=\
+b==\"array\"?[]:{},c;for(c in a)b[c]=goog.cloneObject(a[c]);return b}return a};\
+goog.bindNative_=function(a,b,c){return a.call.apply(a.bind,arguments)};goog.bi\
+ndJs_=function(a,b,c){if(!a)throw Error();if(arguments.length>2){var d=Array.pr\
+ototype.slice.call(arguments,2);return function(){var c=Array.prototype.slice.c\
+all(arguments);Array.prototype.unshift.apply(c,d);return a.apply(b,c)}}return f\
+unction(){return a.apply(b,arguments)}};goog.bind=function(a,b,c){goog.bind=Fun\
+ction.prototype.bind&&Function.prototype.bind.toString().indexOf(\"native code\
+\")!=-1?goog.bindNative_:goog.bindJs_;return goog.bind.apply(null,arguments)};g\
+oog.partial=function(a,b){var c=Array.prototype.slice.call(arguments,1);return \
+function(){var b=Array.prototype.slice.call(arguments);b.unshift.apply(b,c);ret\
+urn a.apply(this,b)}};goog.mixin=function(a,b){for(var c in b)a[c]=b[c]};goog.n\
+ow=Date.now||function(){return+new Date};goog.globalEval=function(a){if(goog.gl\
+obal.execScript)goog.global.execScript(a,\"JavaScript\");else if(goog.global.ev\
+al){if(goog.evalWorksForGlobals_==null){goog.global.eval(\"var _et_ = 1;\");if(\
+typeof goog.global._et_!=\"undefined\"){delete goog.global._et_;goog.evalWorksF\
+orGlobals_=true}else goog.evalWorksForGlobals_=false}if(goog.evalWorksForGlobal\
+s_)goog.global.eval(a);else{var b=goog.global.document,c=b.createElement(\"scri\
+pt\");c.type=\"text/javascript\";c.defer=false;c.appendChild(b.createTextNode(a\
+));b.body.appendChild(c);b.body.removeChild(c)}}else throw Error(\"goog.globalE\
+val not available\");};goog.evalWorksForGlobals_=null;goog.getCssName=function(\
+a,b){var c=function(a){return goog.cssNameMapping_[a]||a},d=function(a){for(var\
+ a=a.split(\"-\"),b=[],d=0;d<a.length;d++)b.push(c(a[d]));return b.join(\"-\")}\
+,d=goog.cssNameMapping_?goog.cssNameMappingStyle_==\"BY_WHOLE\"?c:d:function(a)\
+{return a};return b?a+\"-\"+d(b):d(a)};goog.setCssNameMapping=function(a,b){goo\
+g.cssNameMapping_=a;goog.cssNameMappingStyle_=b};!COMPILED&&goog.global.CLOSURE\
+_CSS_NAME_MAPPING&&(goog.cssNameMapping_=goog.global.CLOSURE_CSS_NAME_MAPPING);\
+goog.getMsg=function(a,b){var c=b||{},d;for(d in c)var e=(\"\"+c[d]).replace(/\
+\\$/g,\"$$$$\"),a=a.replace(RegExp(\"\\\\{\\\\$\"+d+\"\\\\}\",\"gi\"),e);return\
+ a};goog.exportSymbol=function(a,b,c){goog.exportPath_(a,b,c)};goog.exportPrope\
+rty=function(a,b,c){a[b]=c};goog.inherits=function(a,b){function c(){}c.prototy\
+pe=b.prototype;a.superClass_=b.prototype;a.prototype=new c;a.prototype.construc\
+tor=a};goog.base=function(a,b,c){var d=arguments.callee.caller;if(d.superClass_\
+)return d.superClass_.constructor.apply(a,Array.prototype.slice.call(arguments,\
+1));for(var e=Array.prototype.slice.call(arguments,2),g=false,f=a.constructor;f\
+;f=f.superClass_&&f.superClass_.constructor)if(f.prototype[b]===d)g=true;else i\
+f(g)return f.prototype[b].apply(a,e);if(a[b]===d)return a.constructor.prototype\
+[b].apply(a,e);throw Error(\"goog.base called from a method of one name to a me\
+thod of a different name\");};goog.scope=function(a){a.call(goog.global)};"
+
+var JQUERY_JS = "/*! jQuery v1.7.2 jquery.com | jquery.org/license */ (function\
+(a,b){function cy(a){return f.isWindow(a)?a:a.nodeType===9?a.defaultView||a.par\
+entWindow:!1}function cu(a){if(!cj[a]){var b=c.body,d=f(\"<\"+a+\">\").appendTo\
+(b),e=d.css(\"display\");d.remove();if(e===\"none\"||e===\"\"){ck||(ck=c.create\
+Element(\"iframe\"),ck.frameBorder=ck.width=ck.height=0),b.appendChild(ck);if(!\
+cl||!ck.createElement)cl=(ck.contentWindow||ck.contentDocument).document,cl.wri\
+te((f.support.boxModel?\"<!doctype html>\":\"\")+\"<html><body>\"),cl.close();d\
+=cl.createElement(a),cl.body.appendChild(d),e=f.css(d,\"display\"),b.removeChil\
+d(ck)}cj[a]=e}return cj[a]}function ct(a,b){var c={};f.each(cp.concat.apply([],\
+cp.slice(0,b)),function(){c[this]=a});return c}function cs(){cq=b}function cr()\
+{setTimeout(cs,0);return cq=f.now()}function ci(){try{return new a.ActiveXObjec\
+t(\"Microsoft.XMLHTTP\")}catch(b){}}function ch(){try{return new a.XMLHttpReque\
+st}catch(b){}}function cb(a,c){a.dataFilter&&(c=a.dataFilter(c,a.dataType));var\
+ d=a.dataTypes,e={},g,h,i=d.length,j,k=d[0],l,m,n,o,p;for(g=1;g<i;g++){if(g===1\
+)for(h in a.converters)typeof h==\"string\"&&(e[h.toLowerCase()]=a.converters[h\
+]);l=k,k=d[g];if(k===\"*\")k=l;else if(l!==\"*\"&&l!==k){m=l+\" \"+k,n=e[m]||e[\
+\"* \"+k];if(!n){p=b;for(o in e){j=o.split(\" \");if(j[0]===l||j[0]===\"*\"){p=\
+e[j[1]+\" \"+k];if(p){o=e[o],o===!0?n=p:p===!0&&(n=o);break}}}}!n&&!p&&f.error(\
+\"No conversion from \"+m.replace(\" \",\" to \")),n!==!0&&(c=n?n(c):p(o(c)))}}\
+return c}function ca(a,c,d){var e=a.contents,f=a.dataTypes,g=a.responseFields,h\
+,i,j,k;for(i in g)i in d&&(c[g[i]]=d[i]);while(f[0]===\"*\")f.shift(),h===b&&(h\
+=a.mimeType||c.getResponseHeader(\"content-type\"));if(h)for(i in e)if(e[i]&&e[\
+i].test(h)){f.unshift(i);break}if(f[0]in d)j=f[0];else{for(i in d){if(!f[0]||a.\
+converters[i+\" \"+f[0]]){j=i;break}k||(k=i)}j=j||k}if(j){j!==f[0]&&f.unshift(j\
+);return d[j]}}function b_(a,b,c,d){if(f.isArray(b))f.each(b,function(b,e){c||b\
+D.test(a)?d(a,e):b_(a+\"[\"+(typeof e==\"object\"?b:\"\")+\"]\",e,c,d)});else i\
+f(!c&&f.type(b)===\"object\")for(var e in b)b_(a+\"[\"+e+\"]\",b[e],c,d);else d\
+(a,b)}function b$(a,c){var d,e,g=f.ajaxSettings.flatOptions||{};for(d in c)c[d]\
+!==b&&((g[d]?a:e||(e={}))[d]=c[d]);e&&f.extend(!0,a,e)}function bZ(a,c,d,e,f,g)\
+{f=f||c.dataTypes[0],g=g||{},g[f]=!0;var h=a[f],i=0,j=h?h.length:0,k=a===bS,l;f\
+or(;i<j&&(k||!l);i++)l=h[i](c,d,e),typeof l==\"string\"&&(!k||g[l]?l=b:(c.dataT\
+ypes.unshift(l),l=bZ(a,c,d,e,l,g)));(k||!l)&&!g[\"*\"]&&(l=bZ(a,c,d,e,\"*\",g))\
+;return l}function bY(a){return function(b,c){typeof b!=\"string\"&&(c=b,b=\"*\
+\");if(f.isFunction(c)){var d=b.toLowerCase().split(bO),e=0,g=d.length,h,i,j;fo\
+r(;e<g;e++)h=d[e],j=/^\\+/.test(h),j&&(h=h.substr(1)||\"*\"),i=a[h]=a[h]||[],i[\
+j?\"unshift\":\"push\"](c)}}}function bB(a,b,c){var d=b===\"width\"?a.offsetWid\
+th:a.offsetHeight,e=b===\"width\"?1:0,g=4;if(d>0){if(c!==\"border\")for(;e<g;e+\
+=2)c||(d-=parseFloat(f.css(a,\"padding\"+bx[e]))||0),c===\"margin\"?d+=parseFlo\
+at(f.css(a,c+bx[e]))||0:d-=parseFloat(f.css(a,\"border\"+bx[e]+\"Width\"))||0;r\
+eturn d+\"px\"}d=by(a,b);if(d<0||d==null)d=a.style[b];if(bt.test(d))return d;d=\
+parseFloat(d)||0;if(c)for(;e<g;e+=2)d+=parseFloat(f.css(a,\"padding\"+bx[e]))||\
+0,c!==\"padding\"&&(d+=parseFloat(f.css(a,\"border\"+bx[e]+\"Width\"))||0),c===\
+\"margin\"&&(d+=parseFloat(f.css(a,c+bx[e]))||0);return d+\"px\"}function bo(a)\
+{var b=c.createElement(\"div\");bh.appendChild(b),b.innerHTML=a.outerHTML;retur\
+n b.firstChild}function bn(a){var b=(a.nodeName||\"\").toLowerCase();b===\"inpu\
+t\"?bm(a):b!==\"script\"&&typeof a.getElementsByTagName!=\"undefined\"&&f.grep(\
+a.getElementsByTagName(\"input\"),bm)}function bm(a){if(a.type===\"checkbox\"||\
+a.type===\"radio\")a.defaultChecked=a.checked}function bl(a){return typeof a.ge\
+tElementsByTagName!=\"undefined\"?a.getElementsByTagName(\"*\"):typeof a.queryS\
+electorAll!=\"undefined\"?a.querySelectorAll(\"*\"):[]}function bk(a,b){var c;b\
+.nodeType===1&&(b.clearAttributes&&b.clearAttributes(),b.mergeAttributes&&b.mer\
+geAttributes(a),c=b.nodeName.toLowerCase(),c===\"object\"?b.outerHTML=a.outerHT\
+ML:c!==\"input\"||a.type!==\"checkbox\"&&a.type!==\"radio\"?c===\"option\"?b.se\
+lected=a.defaultSelected:c===\"input\"||c===\"textarea\"?b.defaultValue=a.defau\
+ltValue:c===\"script\"&&b.text!==a.text&&(b.text=a.text):(a.checked&&(b.default\
+Checked=b.checked=a.checked),b.value!==a.value&&(b.value=a.value)),b.removeAttr\
+ibute(f.expando),b.removeAttribute(\"_submit_attached\"),b.removeAttribute(\"_c\
+hange_attached\"))}function bj(a,b){if(b.nodeType===1&&!!f.hasData(a)){var c,d,\
+e,g=f._data(a),h=f._data(b,g),i=g.events;if(i){delete h.handle,h.events={};for(\
+c in i)for(d=0,e=i[c].length;d<e;d++)f.event.add(b,c,i[c][d])}h.data&&(h.data=f\
+.extend({},h.data))}}function bi(a,b){return f.nodeName(a,\"table\")?a.getEleme\
+ntsByTagName(\"tbody\")[0]||a.appendChild(a.ownerDocument.createElement(\"tbody\
+\")):a}function U(a){var b=V.split(\"|\"),c=a.createDocumentFragment();if(c.cre\
+ateElement)while(b.length)c.createElement(b.pop());return c}function T(a,b,c){b\
+=b||0;if(f.isFunction(b))return f.grep(a,function(a,d){var e=!!b.call(a,d,a);re\
+turn e===c});if(b.nodeType)return f.grep(a,function(a,d){return a===b===c});if(\
+typeof b==\"string\"){var d=f.grep(a,function(a){return a.nodeType===1});if(O.t\
+est(b))return f.filter(b,d,!c);b=f.filter(b,d)}return f.grep(a,function(a,d){re\
+turn f.inArray(a,b)>=0===c})}function S(a){return!a||!a.parentNode||a.parentNod\
+e.nodeType===11}function K(){return!0}function J(){return!1}function n(a,b,c){v\
+ar d=b+\"defer\",e=b+\"queue\",g=b+\"mark\",h=f._data(a,d);h&&(c===\"queue\"||!\
+f._data(a,e))&&(c===\"mark\"||!f._data(a,g))&&setTimeout(function(){!f._data(a,\
+e)&&!f._data(a,g)&&(f.removeData(a,d,!0),h.fire())},0)}function m(a){for(var b \
+in a){if(b===\"data\"&&f.isEmptyObject(a[b]))continue;if(b!==\"toJSON\")return!\
+1}return!0}function l(a,c,d){if(d===b&&a.nodeType===1){var e=\"data-\"+c.replac\
+e(k,\"-$1\").toLowerCase();d=a.getAttribute(e);if(typeof d==\"string\"){try{d=d\
+===\"true\"?!0:d===\"false\"?!1:d===\"null\"?null:f.isNumeric(d)?+d:j.test(d)?f\
+.parseJSON(d):d}catch(g){}f.data(a,c,d)}else d=b}return d}function h(a){var b=g\
+[a]={},c,d;a=a.split(/\\s+/);for(c=0,d=a.length;c<d;c++)b[a[c]]=!0;return b}var\
+ c=a.document,d=a.navigator,e=a.location,f=function(){function J(){if(!e.isRead\
+y){try{c.documentElement.doScroll(\"left\")}catch(a){setTimeout(J,1);return}e.r\
+eady()}}var e=function(a,b){return new e.fn.init(a,b,h)},f=a.jQuery,g=a.$,h,i=/\
+^(?:[^#<]*(<[\\w\\W]+>)[^>]*$|#([\\w\\-]*)$)/,j=/\\S/,k=/^\\s+/,l=/\\s+$/,m=/^<\
+(\\w+)\\s*\\/?>(?:<\\/\\1>)?$/,n=/^[\\],:{}\\s]*$/,o=/\\\\(?:[\"\\\\\\/bfnrt]|u\
+[0-9a-fA-F]{4})/g,p=/\"[^\"\\\\\\n\\r]*\"|true|false|null|-?\\d+(?:\\.\\d*)?(?:\
+[eE][+\\-]?\\d+)?/g,q=/(?:^|:|,)(?:\\s*\\[)+/g,r=/(webkit)[ \\/]([\\w.]+)/,s=/(\
+opera)(?:.*version)?[ \\/]([\\w.]+)/,t=/(msie) ([\\w.]+)/,u=/(mozilla)(?:.*? rv\
+:([\\w.]+))?/,v=/-([a-z]|[0-9])/ig,w=/^-ms-/,x=function(a,b){return(b+\"\").toU\
+pperCase()},y=d.userAgent,z,A,B,C=Object.prototype.toString,D=Object.prototype.\
+hasOwnProperty,E=Array.prototype.push,F=Array.prototype.slice,G=String.prototyp\
+e.trim,H=Array.prototype.indexOf,I={};e.fn=e.prototype={constructor:e,init:func\
+tion(a,d,f){var g,h,j,k;if(!a)return this;if(a.nodeType){this.context=this[0]=a\
+,this.length=1;return this}if(a===\"body\"&&!d&&c.body){this.context=c,this[0]=\
+c.body,this.selector=a,this.length=1;return this}if(typeof a==\"string\"){a.cha\
+rAt(0)!==\"<\"||a.charAt(a.length-1)!==\">\"||a.length<3?g=i.exec(a):g=[null,a,\
+null];if(g&&(g[1]||!d)){if(g[1]){d=d instanceof e?d[0]:d,k=d?d.ownerDocument||d\
+:c,j=m.exec(a),j?e.isPlainObject(d)?(a=[c.createElement(j[1])],e.fn.attr.call(a\
+,d,!0)):a=[k.createElement(j[1])]:(j=e.buildFragment([g[1]],[k]),a=(j.cacheable\
+?e.clone(j.fragment):j.fragment).childNodes);return e.merge(this,a)}h=c.getElem\
+entById(g[2]);if(h&&h.parentNode){if(h.id!==g[2])return f.find(a);this.length=1\
+,this[0]=h}this.context=c,this.selector=a;return this}return!d||d.jquery?(d||f)\
+.find(a):this.constructor(d).find(a)}if(e.isFunction(a))return f.ready(a);a.sel\
+ector!==b&&(this.selector=a.selector,this.context=a.context);return e.makeArray\
+(a,this)},selector:\"\",jquery:\"1.7.2\",length:0,size:function(){return this.l\
+ength},toArray:function(){return F.call(this,0)},get:function(a){return a==null\
+?this.toArray():a<0?this[this.length+a]:this[a]},pushStack:function(a,b,c){var \
+d=this.constructor();e.isArray(a)?E.apply(d,a):e.merge(d,a),d.prevObject=this,d\
+.context=this.context,b===\"find\"?d.selector=this.selector+(this.selector?\" \
+\":\"\")+c:b&&(d.selector=this.selector+\".\"+b+\"(\"+c+\")\");return d},each:f\
+unction(a,b){return e.each(this,a,b)},ready:function(a){e.bindReady(),A.add(a);\
+return this},eq:function(a){a=+a;return a===-1?this.slice(a):this.slice(a,a+1)}\
+,first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:\
+function(){return this.pushStack(F.apply(this,arguments),\"slice\",F.call(argum\
+ents).join(\",\"))},map:function(a){return this.pushStack(e.map(this,function(b\
+,c){return a.call(b,c,b)}))},end:function(){return this.prevObject||this.constr\
+uctor(null)},push:E,sort:[].sort,splice:[].splice},e.fn.init.prototype=e.fn,e.e\
+xtend=e.fn.extend=function(){var a,c,d,f,g,h,i=arguments[0]||{},j=1,k=arguments\
+.length,l=!1;typeof i==\"boolean\"&&(l=i,i=arguments[1]||{},j=2),typeof i!=\"ob\
+ject\"&&!e.isFunction(i)&&(i={}),k===j&&(i=this,--j);for(;j<k;j++)if((a=argumen\
+ts[j])!=null)for(c in a){d=i[c],f=a[c];if(i===f)continue;l&&f&&(e.isPlainObject\
+(f)||(g=e.isArray(f)))?(g?(g=!1,h=d&&e.isArray(d)?d:[]):h=d&&e.isPlainObject(d)\
+?d:{},i[c]=e.extend(l,h,f)):f!==b&&(i[c]=f)}return i},e.extend({noConflict:func\
+tion(b){a.$===e&&(a.$=g),b&&a.jQuery===e&&(a.jQuery=f);return e},isReady:!1,rea\
+dyWait:1,holdReady:function(a){a?e.readyWait++:e.ready(!0)},ready:function(a){i\
+f(a===!0&&!--e.readyWait||a!==!0&&!e.isReady){if(!c.body)return setTimeout(e.re\
+ady,1);e.isReady=!0;if(a!==!0&&--e.readyWait>0)return;A.fireWith(c,[e]),e.fn.tr\
+igger&&e(c).trigger(\"ready\").off(\"ready\")}},bindReady:function(){if(!A){A=e\
+.Callbacks(\"once memory\");if(c.readyState===\"complete\")return setTimeout(e.\
+ready,1);if(c.addEventListener)c.addEventListener(\"DOMContentLoaded\",B,!1),a.\
+addEventListener(\"load\",e.ready,!1);else if(c.attachEvent){c.attachEvent(\"on\
+readystatechange\",B),a.attachEvent(\"onload\",e.ready);var b=!1;try{b=a.frameE\
+lement==null}catch(d){}c.documentElement.doScroll&&b&&J()}}},isFunction:functio\
+n(a){return e.type(a)===\"function\"},isArray:Array.isArray||function(a){return\
+ e.type(a)===\"array\"},isWindow:function(a){return a!=null&&a==a.window},isNum\
+eric:function(a){return!isNaN(parseFloat(a))&&isFinite(a)},type:function(a){ret\
+urn a==null?String(a):I[C.call(a)]||\"object\"},isPlainObject:function(a){if(!a\
+||e.type(a)!==\"object\"||a.nodeType||e.isWindow(a))return!1;try{if(a.construct\
+or&&!D.call(a,\"constructor\")&&!D.call(a.constructor.prototype,\"isPrototypeOf\
+\"))return!1}catch(c){return!1}var d;for(d in a);return d===b||D.call(a,d)},isE\
+mptyObject:function(a){for(var b in a)return!1;return!0},error:function(a){thro\
+w new Error(a)},parseJSON:function(b){if(typeof b!=\"string\"||!b)return null;b\
+=e.trim(b);if(a.JSON&&a.JSON.parse)return a.JSON.parse(b);if(n.test(b.replace(o\
+,\"@\").replace(p,\"]\").replace(q,\"\")))return(new Function(\"return \"+b))()\
+;e.error(\"Invalid JSON: \"+b)},parseXML:function(c){if(typeof c!=\"string\"||!\
+c)return null;var d,f;try{a.DOMParser?(f=new DOMParser,d=f.parseFromString(c,\"\
+text/xml\")):(d=new ActiveXObject(\"Microsoft.XMLDOM\"),d.async=\"false\",d.loa\
+dXML(c))}catch(g){d=b}(!d||!d.documentElement||d.getElementsByTagName(\"parsere\
+rror\").length)&&e.error(\"Invalid XML: \"+c);return d},noop:function(){},globa\
+lEval:function(b){b&&j.test(b)&&(a.execScript||function(b){a.eval.call(a,b)})(b\
+)},camelCase:function(a){return a.replace(w,\"ms-\").replace(v,x)},nodeName:fun\
+ction(a,b){return a.nodeName&&a.nodeName.toUpperCase()===b.toUpperCase()},each:\
+function(a,c,d){var f,g=0,h=a.length,i=h===b||e.isFunction(a);if(d){if(i){for(f\
+ in a)if(c.apply(a[f],d)===!1)break}else for(;g<h;)if(c.apply(a[g++],d)===!1)br\
+eak}else if(i){for(f in a)if(c.call(a[f],f,a[f])===!1)break}else for(;g<h;)if(c\
+.call(a[g],g,a[g++])===!1)break;return a},trim:G?function(a){return a==null?\"\
+\":G.call(a)}:function(a){return a==null?\"\":(a+\"\").replace(k,\"\").replace(\
+l,\"\")},makeArray:function(a,b){var c=b||[];if(a!=null){var d=e.type(a);a.leng\
+th==null||d===\"string\"||d===\"function\"||d===\"regexp\"||e.isWindow(a)?E.cal\
+l(c,a):e.merge(c,a)}return c},inArray:function(a,b,c){var d;if(b){if(H)return H\
+.call(b,a,c);d=b.length,c=c?c<0?Math.max(0,d+c):c:0;for(;c<d;c++)if(c in b&&b[c\
+]===a)return c}return-1},merge:function(a,c){var d=a.length,e=0;if(typeof c.len\
+gth==\"number\")for(var f=c.length;e<f;e++)a[d++]=c[e];else while(c[e]!==b)a[d+\
++]=c[e++];a.length=d;return a},grep:function(a,b,c){var d=[],e;c=!!c;for(var f=\
+0,g=a.length;f<g;f++)e=!!b(a[f],f),c!==e&&d.push(a[f]);return d},map:function(a\
+,c,d){var f,g,h=[],i=0,j=a.length,k=a instanceof e||j!==b&&typeof j==\"number\"\
+&&(j>0&&a[0]&&a[j-1]||j===0||e.isArray(a));if(k)for(;i<j;i++)f=c(a[i],i,d),f!=n\
+ull&&(h[h.length]=f);else for(g in a)f=c(a[g],g,d),f!=null&&(h[h.length]=f);ret\
+urn h.concat.apply([],h)},guid:1,proxy:function(a,c){if(typeof c==\"string\"){v\
+ar d=a[c];c=a,a=d}if(!e.isFunction(a))return b;var f=F.call(arguments,2),g=func\
+tion(){return a.apply(c,f.concat(F.call(arguments)))};g.guid=a.guid=a.guid||g.g\
+uid||e.guid++;return g},access:function(a,c,d,f,g,h,i){var j,k=d==null,l=0,m=a.\
+length;if(d&&typeof d==\"object\"){for(l in d)e.access(a,c,l,d[l],1,h,f);g=1}el\
+se if(f!==b){j=i===b&&e.isFunction(f),k&&(j?(j=c,c=function(a,b,c){return j.cal\
+l(e(a),c)}):(c.call(a,f),c=null));if(c)for(;l<m;l++)c(a[l],d,j?f.call(a[l],l,c(\
+a[l],d)):f,i);g=1}return g?a:k?c.call(a):m?c(a[0],d):h},now:function(){return(n\
+ew Date).getTime()},uaMatch:function(a){a=a.toLowerCase();var b=r.exec(a)||s.ex\
+ec(a)||t.exec(a)||a.indexOf(\"compatible\")<0&&u.exec(a)||[];return{browser:b[1\
+]||\"\",version:b[2]||\"0\"}},sub:function(){function a(b,c){return new a.fn.in\
+it(b,c)}e.extend(!0,a,this),a.superclass=this,a.fn=a.prototype=this(),a.fn.cons\
+tructor=a,a.sub=this.sub,a.fn.init=function(d,f){f&&f instanceof e&&!(f instanc\
+eof a)&&(f=a(f));return e.fn.init.call(this,d,f,b)},a.fn.init.prototype=a.fn;va\
+r b=a(c);return a},browser:{}}),e.each(\"Boolean Number String Function Array D\
+ate RegExp Object\".split(\" \"),function(a,b){I[\"[object \"+b+\"]\"]=b.toLowe\
+rCase()}),z=e.uaMatch(y),z.browser&&(e.browser[z.browser]=!0,e.browser.version=\
+z.version),e.browser.webkit&&(e.browser.safari=!0),j.test(\" \")&&(k=/^[\\s\\x\
+A0]+/,l=/[\\s\\xA0]+$/),h=e(c),c.addEventListener?B=function(){c.removeEventLis\
+tener(\"DOMContentLoaded\",B,!1),e.ready()}:c.attachEvent&&(B=function(){c.read\
+yState===\"complete\"&&(c.detachEvent(\"onreadystatechange\",B),e.ready())});re\
+turn e}(),g={};f.Callbacks=function(a){a=a?g[a]||h(a):{};var c=[],d=[],e,i,j,k,\
+l,m,n=function(b){var d,e,g,h,i;for(d=0,e=b.length;d<e;d++)g=b[d],h=f.type(g),h\
+===\"array\"?n(g):h===\"function\"&&(!a.unique||!p.has(g))&&c.push(g)},o=functi\
+on(b,f){f=f||[],e=!a.memory||[b,f],i=!0,j=!0,m=k||0,k=0,l=c.length;for(;c&&m<l;\
+m++)if(c[m].apply(b,f)===!1&&a.stopOnFalse){e=!0;break}j=!1,c&&(a.once?e===!0?p\
+.disable():c=[]:d&&d.length&&(e=d.shift(),p.fireWith(e[0],e[1])))},p={add:funct\
+ion(){if(c){var a=c.length;n(arguments),j?l=c.length:e&&e!==!0&&(k=a,o(e[0],e[1\
+]))}return this},remove:function(){if(c){var b=arguments,d=0,e=b.length;for(;d<\
+e;d++)for(var f=0;f<c.length;f++)if(b[d]===c[f]){j&&f<=l&&(l--,f<=m&&m--),c.spl\
+ice(f--,1);if(a.unique)break}}return this},has:function(a){if(c){var b=0,d=c.le\
+ngth;for(;b<d;b++)if(a===c[b])return!0}return!1},empty:function(){c=[];return t\
+his},disable:function(){c=d=e=b;return this},disabled:function(){return!c},lock\
+:function(){d=b,(!e||e===!0)&&p.disable();return this},locked:function(){return\
+!d},fireWith:function(b,c){d&&(j?a.once||d.push([b,c]):(!a.once||!e)&&o(b,c));r\
+eturn this},fire:function(){p.fireWith(this,arguments);return this},fired:funct\
+ion(){return!!i}};return p};var i=[].slice;f.extend({Deferred:function(a){var b\
+=f.Callbacks(\"once memory\"),c=f.Callbacks(\"once memory\"),d=f.Callbacks(\"me\
+mory\"),e=\"pending\",g={resolve:b,reject:c,notify:d},h={done:b.add,fail:c.add,\
+progress:d.add,state:function(){return e},isResolved:b.fired,isRejected:c.fired\
+,then:function(a,b,c){i.done(a).fail(b).progress(c);return this},always:functio\
+n(){i.done.apply(i,arguments).fail.apply(i,arguments);return this},pipe:functio\
+n(a,b,c){return f.Deferred(function(d){f.each({done:[a,\"resolve\"],fail:[b,\"r\
+eject\"],progress:[c,\"notify\"]},function(a,b){var c=b[0],e=b[1],g;f.isFunctio\
+n(c)?i[a](function(){g=c.apply(this,arguments),g&&f.isFunction(g.promise)?g.pro\
+mise().then(d.resolve,d.reject,d.notify):d[e+\"With\"](this===i?d:this,[g])}):i\
+[a](d[e])})}).promise()},promise:function(a){if(a==null)a=h;else for(var b in h\
+)a[b]=h[b];return a}},i=h.promise({}),j;for(j in g)i[j]=g[j].fire,i[j+\"With\"]\
+=g[j].fireWith;i.done(function(){e=\"resolved\"},c.disable,d.lock).fail(functio\
+n(){e=\"rejected\"},b.disable,d.lock),a&&a.call(i,i);return i},when:function(a)\
+{function m(a){return function(b){e[a]=arguments.length>1?i.call(arguments,0):b\
+,j.notifyWith(k,e)}}function l(a){return function(c){b[a]=arguments.length>1?i.\
+call(arguments,0):c,--g||j.resolveWith(j,b)}}var b=i.call(arguments,0),c=0,d=b.\
+length,e=Array(d),g=d,h=d,j=d<=1&&a&&f.isFunction(a.promise)?a:f.Deferred(),k=j\
+.promise();if(d>1){for(;c<d;c++)b[c]&&b[c].promise&&f.isFunction(b[c].promise)?\
+b[c].promise().then(l(c),j.reject,m(c)):--g;g||j.resolveWith(j,b)}else j!==a&&j\
+.resolveWith(j,d?[a]:[]);return k}}),f.support=function(){var b,d,e,g,h,i,j,k,l\
+,m,n,o,p=c.createElement(\"div\"),q=c.documentElement;p.setAttribute(\"classNam\
+e\",\"t\"),p.innerHTML=\"   <link/><table></table><a href='/a' style='top:1px;f\
+loat:left;opacity:.55;'>a</a><input type='checkbox'/>\",d=p.getElementsByTagNam\
+e(\"*\"),e=p.getElementsByTagName(\"a\")[0];if(!d||!d.length||!e)return{};g=c.c\
+reateElement(\"select\"),h=g.appendChild(c.createElement(\"option\")),i=p.getEl\
+ementsByTagName(\"input\")[0],b={leadingWhitespace:p.firstChild.nodeType===3,tb\
+ody:!p.getElementsByTagName(\"tbody\").length,htmlSerialize:!!p.getElementsByTa\
+gName(\"link\").length,style:/top/.test(e.getAttribute(\"style\")),hrefNormaliz\
+ed:e.getAttribute(\"href\")===\"/a\",opacity:/^0.55/.test(e.style.opacity),cssF\
+loat:!!e.style.cssFloat,checkOn:i.value===\"on\",optSelected:h.selected,getSetA\
+ttribute:p.className!==\"t\",enctype:!!c.createElement(\"form\").enctype,html5C\
+lone:c.createElement(\"nav\").cloneNode(!0).outerHTML!==\"<:nav></:nav>\",submi\
+tBubbles:!0,changeBubbles:!0,focusinBubbles:!1,deleteExpando:!0,noCloneEvent:!0\
+,inlineBlockNeedsLayout:!1,shrinkWrapBlocks:!1,reliableMarginRight:!0,pixelMarg\
+in:!0},f.boxModel=b.boxModel=c.compatMode===\"CSS1Compat\",i.checked=!0,b.noClo\
+neChecked=i.cloneNode(!0).checked,g.disabled=!0,b.optDisabled=!h.disabled;try{d\
+elete p.test}catch(r){b.deleteExpando=!1}!p.addEventListener&&p.attachEvent&&p.\
+fireEvent&&(p.attachEvent(\"onclick\",function(){b.noCloneEvent=!1}),p.cloneNod\
+e(!0).fireEvent(\"onclick\")),i=c.createElement(\"input\"),i.value=\"t\",i.setA\
+ttribute(\"type\",\"radio\"),b.radioValue=i.value===\"t\",i.setAttribute(\"chec\
+ked\",\"checked\"),i.setAttribute(\"name\",\"t\"),p.appendChild(i),j=c.createDo\
+cumentFragment(),j.appendChild(p.lastChild),b.checkClone=j.cloneNode(!0).cloneN\
+ode(!0).lastChild.checked,b.appendChecked=i.checked,j.removeChild(i),j.appendCh\
+ild(p);if(p.attachEvent)for(n in{submit:1,change:1,focusin:1})m=\"on\"+n,o=m in\
+ p,o||(p.setAttribute(m,\"return;\"),o=typeof p[m]==\"function\"),b[n+\"Bubbles\
+\"]=o;j.removeChild(p),j=g=h=p=i=null,f(function(){var d,e,g,h,i,j,l,m,n,q,r,s,\
+t,u=c.getElementsByTagName(\"body\")[0];!u||(m=1,t=\"padding:0;margin:0;border:\
+\",r=\"position:absolute;top:0;left:0;width:1px;height:1px;\",s=t+\"0;visibilit\
+y:hidden;\",n=\"style='\"+r+t+\"5px solid #000;\",q=\"<div \"+n+\"display:block\
+;'><div style='\"+t+\"0;display:block;overflow:hidden;'></div></div>\"+\"<table\
+ \"+n+\"' cellpadding='0' cellspacing='0'>\"+\"<tr><td></td></tr></table>\",d=c\
+.createElement(\"div\"),d.style.cssText=s+\"width:0;height:0;position:static;to\
+p:0;margin-top:\"+m+\"px\",u.insertBefore(d,u.firstChild),p=c.createElement(\"d\
+iv\"),d.appendChild(p),p.innerHTML=\"<table><tr><td style='\"+t+\"0;display:non\
+e'></td><td>t</td></tr></table>\",k=p.getElementsByTagName(\"td\"),o=k[0].offse\
+tHeight===0,k[0].style.display=\"\",k[1].style.display=\"none\",b.reliableHidde\
+nOffsets=o&&k[0].offsetHeight===0,a.getComputedStyle&&(p.innerHTML=\"\",l=c.cre\
+ateElement(\"div\"),l.style.width=\"0\",l.style.marginRight=\"0\",p.style.width\
+=\"2px\",p.appendChild(l),b.reliableMarginRight=(parseInt((a.getComputedStyle(l\
+,null)||{marginRight:0}).marginRight,10)||0)===0),typeof p.style.zoom!=\"undefi\
+ned\"&&(p.innerHTML=\"\",p.style.width=p.style.padding=\"1px\",p.style.border=0\
+,p.style.overflow=\"hidden\",p.style.display=\"inline\",p.style.zoom=1,b.inline\
+BlockNeedsLayout=p.offsetWidth===3,p.style.display=\"block\",p.style.overflow=\
+\"visible\",p.innerHTML=\"<div style='width:5px;'></div>\",b.shrinkWrapBlocks=p\
+.offsetWidth!==3),p.style.cssText=r+s,p.innerHTML=q,e=p.firstChild,g=e.firstChi\
+ld,i=e.nextSibling.firstChild.firstChild,j={doesNotAddBorder:g.offsetTop!==5,do\
+esAddBorderForTableAndCells:i.offsetTop===5},g.style.position=\"fixed\",g.style\
+.top=\"20px\",j.fixedPosition=g.offsetTop===20||g.offsetTop===15,g.style.positi\
+on=g.style.top=\"\",e.style.overflow=\"hidden\",e.style.position=\"relative\",j\
+.subtractsBorderForOverflowNotVisible=g.offsetTop===-5,j.doesNotIncludeMarginIn\
+BodyOffset=u.offsetTop!==m,a.getComputedStyle&&(p.style.marginTop=\"1%\",b.pixe\
+lMargin=(a.getComputedStyle(p,null)||{marginTop:0}).marginTop!==\"1%\"),typeof \
+d.style.zoom!=\"undefined\"&&(d.style.zoom=1),u.removeChild(d),l=p=d=null,f.ext\
+end(b,j))});return b}();var j=/^(?:\\{.*\\}|\\[.*\\])$/,k=/([A-Z])/g;f.extend({\
+cache:{},uuid:0,expando:\"jQuery\"+(f.fn.jquery+Math.random()).replace(/\\D/g,\
+\"\"),noData:{embed:!0,object:\"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000\",ap\
+plet:!0},hasData:function(a){a=a.nodeType?f.cache[a[f.expando]]:a[f.expando];re\
+turn!!a&&!m(a)},data:function(a,c,d,e){if(!!f.acceptData(a)){var g,h,i,j=f.expa\
+ndo,k=typeof c==\"string\",l=a.nodeType,m=l?f.cache:a,n=l?a[j]:a[j]&&j,o=c===\"\
+events\";if((!n||!m[n]||!o&&!e&&!m[n].data)&&k&&d===b)return;n||(l?a[j]=n=++f.u\
+uid:n=j),m[n]||(m[n]={},l||(m[n].toJSON=f.noop));if(typeof c==\"object\"||typeo\
+f c==\"function\")e?m[n]=f.extend(m[n],c):m[n].data=f.extend(m[n].data,c);g=h=m\
+[n],e||(h.data||(h.data={}),h=h.data),d!==b&&(h[f.camelCase(c)]=d);if(o&&!h[c])\
+return g.events;k?(i=h[c],i==null&&(i=h[f.camelCase(c)])):i=h;return i}},remove\
+Data:function(a,b,c){if(!!f.acceptData(a)){var d,e,g,h=f.expando,i=a.nodeType,j\
+=i?f.cache:a,k=i?a[h]:h;if(!j[k])return;if(b){d=c?j[k]:j[k].data;if(d){f.isArra\
+y(b)||(b in d?b=[b]:(b=f.camelCase(b),b in d?b=[b]:b=b.split(\" \")));for(e=0,g\
+=b.length;e<g;e++)delete d[b[e]];if(!(c?m:f.isEmptyObject)(d))return}}if(!c){de\
+lete j[k].data;if(!m(j[k]))return}f.support.deleteExpando||!j.setInterval?delet\
+e j[k]:j[k]=null,i&&(f.support.deleteExpando?delete a[h]:a.removeAttribute?a.re\
+moveAttribute(h):a[h]=null)}},_data:function(a,b,c){return f.data(a,b,c,!0)},ac\
+ceptData:function(a){if(a.nodeName){var b=f.noData[a.nodeName.toLowerCase()];if\
+(b)return b!==!0&&a.getAttribute(\"classid\")===b}return!0}}),f.fn.extend({data\
+:function(a,c){var d,e,g,h,i,j=this[0],k=0,m=null;if(a===b){if(this.length){m=f\
+.data(j);if(j.nodeType===1&&!f._data(j,\"parsedAttrs\")){g=j.attributes;for(i=g\
+.length;k<i;k++)h=g[k].name,h.indexOf(\"data-\")===0&&(h=f.camelCase(h.substrin\
+g(5)),l(j,h,m[h]));f._data(j,\"parsedAttrs\",!0)}}return m}if(typeof a==\"objec\
+t\")return this.each(function(){f.data(this,a)});d=a.split(\".\",2),d[1]=d[1]?\
+\".\"+d[1]:\"\",e=d[1]+\"!\";return f.access(this,function(c){if(c===b){m=this.\
+triggerHandler(\"getData\"+e,[d[0]]),m===b&&j&&(m=f.data(j,a),m=l(j,a,m));retur\
+n m===b&&d[1]?this.data(d[0]):m}d[1]=c,this.each(function(){var b=f(this);b.tri\
+ggerHandler(\"setData\"+e,d),f.data(this,a,c),b.triggerHandler(\"changeData\"+e\
+,d)})},null,c,arguments.length>1,null,!1)},removeData:function(a){return this.e\
+ach(function(){f.removeData(this,a)})}}),f.extend({_mark:function(a,b){a&&(b=(b\
+||\"fx\")+\"mark\",f._data(a,b,(f._data(a,b)||0)+1))},_unmark:function(a,b,c){a\
+!==!0&&(c=b,b=a,a=!1);if(b){c=c||\"fx\";var d=c+\"mark\",e=a?0:(f._data(b,d)||1\
+)-1;e?f._data(b,d,e):(f.removeData(b,d,!0),n(b,c,\"mark\"))}},queue:function(a,\
+b,c){var d;if(a){b=(b||\"fx\")+\"queue\",d=f._data(a,b),c&&(!d||f.isArray(c)?d=\
+f._data(a,b,f.makeArray(c)):d.push(c));return d||[]}},dequeue:function(a,b){b=b\
+||\"fx\";var c=f.queue(a,b),d=c.shift(),e={};d===\"inprogress\"&&(d=c.shift()),\
+d&&(b===\"fx\"&&c.unshift(\"inprogress\"),f._data(a,b+\".run\",e),d.call(a,func\
+tion(){f.dequeue(a,b)},e)),c.length||(f.removeData(a,b+\"queue \"+b+\".run\",!0\
+),n(a,b,\"queue\"))}}),f.fn.extend({queue:function(a,c){var d=2;typeof a!=\"str\
+ing\"&&(c=a,a=\"fx\",d--);if(arguments.length<d)return f.queue(this[0],a);retur\
+n c===b?this:this.each(function(){var b=f.queue(this,a,c);a===\"fx\"&&b[0]!==\"\
+inprogress\"&&f.dequeue(this,a)})},dequeue:function(a){return this.each(functio\
+n(){f.dequeue(this,a)})},delay:function(a,b){a=f.fx?f.fx.speeds[a]||a:a,b=b||\"\
+fx\";return this.queue(b,function(b,c){var d=setTimeout(b,a);c.stop=function(){\
+clearTimeout(d)}})},clearQueue:function(a){return this.queue(a||\"fx\",[])},pro\
+mise:function(a,c){function m(){--h||d.resolveWith(e,[e])}typeof a!=\"string\"&\
+&(c=a,a=b),a=a||\"fx\";var d=f.Deferred(),e=this,g=e.length,h=1,i=a+\"defer\",j\
+=a+\"queue\",k=a+\"mark\",l;while(g--)if(l=f.data(e[g],i,b,!0)||(f.data(e[g],j,\
+b,!0)||f.data(e[g],k,b,!0))&&f.data(e[g],i,f.Callbacks(\"once memory\"),!0))h++\
+,l.add(m);m();return d.promise(c)}});var o=/[\\n\\t\\r]/g,p=/\\s+/,q=/\\r/g,r=/\
+^(?:button|input)$/i,s=/^(?:button|input|object|select|textarea)$/i,t=/^a(?:rea\
+)?$/i,u=/^(?:autofocus|autoplay|async|checked|controls|defer|disabled|hidden|lo\
+op|multiple|open|readonly|required|scoped|selected)$/i,v=f.support.getSetAttrib\
+ute,w,x,y;f.fn.extend({attr:function(a,b){return f.access(this,f.attr,a,b,argum\
+ents.length>1)},removeAttr:function(a){return this.each(function(){f.removeAttr\
+(this,a)})},prop:function(a,b){return f.access(this,f.prop,a,b,arguments.length\
+>1)},removeProp:function(a){a=f.propFix[a]||a;return this.each(function(){try{t\
+his[a]=b,delete this[a]}catch(c){}})},addClass:function(a){var b,c,d,e,g,h,i;if\
+(f.isFunction(a))return this.each(function(b){f(this).addClass(a.call(this,b,th\
+is.className))});if(a&&typeof a==\"string\"){b=a.split(p);for(c=0,d=this.length\
+;c<d;c++){e=this[c];if(e.nodeType===1)if(!e.className&&b.length===1)e.className\
+=a;else{g=\" \"+e.className+\" \";for(h=0,i=b.length;h<i;h++)~g.indexOf(\" \"+b\
+[h]+\" \")||(g+=b[h]+\" \");e.className=f.trim(g)}}}return this},removeClass:fu\
+nction(a){var c,d,e,g,h,i,j;if(f.isFunction(a))return this.each(function(b){f(t\
+his).removeClass(a.call(this,b,this.className))});if(a&&typeof a==\"string\"||a\
+===b){c=(a||\"\").split(p);for(d=0,e=this.length;d<e;d++){g=this[d];if(g.nodeTy\
+pe===1&&g.className)if(a){h=(\" \"+g.className+\" \").replace(o,\" \");for(i=0,\
+j=c.length;i<j;i++)h=h.replace(\" \"+c[i]+\" \",\" \");g.className=f.trim(h)}el\
+se g.className=\"\"}}return this},toggleClass:function(a,b){var c=typeof a,d=ty\
+peof b==\"boolean\";if(f.isFunction(a))return this.each(function(c){f(this).tog\
+gleClass(a.call(this,c,this.className,b),b)});return this.each(function(){if(c=\
+==\"string\"){var e,g=0,h=f(this),i=b,j=a.split(p);while(e=j[g++])i=d?i:!h.hasC\
+lass(e),h[i?\"addClass\":\"removeClass\"](e)}else if(c===\"undefined\"||c===\"b\
+oolean\")this.className&&f._data(this,\"__className__\",this.className),this.cl\
+assName=this.className||a===!1?\"\":f._data(this,\"__className__\")||\"\"})},ha\
+sClass:function(a){var b=\" \"+a+\" \",c=0,d=this.length;for(;c<d;c++)if(this[c\
+].nodeType===1&&(\" \"+this[c].className+\" \").replace(o,\" \").indexOf(b)>-1)\
+return!0;return!1},val:function(a){var c,d,e,g=this[0];{if(!!arguments.length){\
+e=f.isFunction(a);return this.each(function(d){var g=f(this),h;if(this.nodeType\
+===1){e?h=a.call(this,d,g.val()):h=a,h==null?h=\"\":typeof h==\"number\"?h+=\"\
+\":f.isArray(h)&&(h=f.map(h,function(a){return a==null?\"\":a+\"\"})),c=f.valHo\
+oks[this.type]||f.valHooks[this.nodeName.toLowerCase()];if(!c||!(\"set\"in c)||\
+c.set(this,h,\"value\")===b)this.value=h}})}if(g){c=f.valHooks[g.type]||f.valHo\
+oks[g.nodeName.toLowerCase()];if(c&&\"get\"in c&&(d=c.get(g,\"value\"))!==b)ret\
+urn d;d=g.value;return typeof d==\"string\"?d.replace(q,\"\"):d==null?\"\":d}}}\
+}),f.extend({valHooks:{option:{get:function(a){var b=a.attributes.value;return!\
+b||b.specified?a.value:a.text}},select:{get:function(a){var b,c,d,e,g=a.selecte\
+dIndex,h=[],i=a.options,j=a.type===\"select-one\";if(g<0)return null;c=j?g:0,d=\
+j?g+1:i.length;for(;c<d;c++){e=i[c];if(e.selected&&(f.support.optDisabled?!e.di\
+sabled:e.getAttribute(\"disabled\")===null)&&(!e.parentNode.disabled||!f.nodeNa\
+me(e.parentNode,\"optgroup\"))){b=f(e).val();if(j)return b;h.push(b)}}if(j&&!h.\
+length&&i.length)return f(i[g]).val();return h},set:function(a,b){var c=f.makeA\
+rray(b);f(a).find(\"option\").each(function(){this.selected=f.inArray(f(this).v\
+al(),c)>=0}),c.length||(a.selectedIndex=-1);return c}}},attrFn:{val:!0,css:!0,h\
+tml:!0,text:!0,data:!0,width:!0,height:!0,offset:!0},attr:function(a,c,d,e){var\
+ g,h,i,j=a.nodeType;if(!!a&&j!==3&&j!==8&&j!==2){if(e&&c in f.attrFn)return f(a\
+)[c](d);if(typeof a.getAttribute==\"undefined\")return f.prop(a,c,d);i=j!==1||!\
+f.isXMLDoc(a),i&&(c=c.toLowerCase(),h=f.attrHooks[c]||(u.test(c)?x:w));if(d!==b\
+){if(d===null){f.removeAttr(a,c);return}if(h&&\"set\"in h&&i&&(g=h.set(a,d,c))!\
+==b)return g;a.setAttribute(c,\"\"+d);return d}if(h&&\"get\"in h&&i&&(g=h.get(a\
+,c))!==null)return g;g=a.getAttribute(c);return g===null?b:g}},removeAttr:funct\
+ion(a,b){var c,d,e,g,h,i=0;if(b&&a.nodeType===1){d=b.toLowerCase().split(p),g=d\
+.length;for(;i<g;i++)e=d[i],e&&(c=f.propFix[e]||e,h=u.test(e),h||f.attr(a,e,\"\
+\"),a.removeAttribute(v?e:c),h&&c in a&&(a[c]=!1))}},attrHooks:{type:{set:funct\
+ion(a,b){if(r.test(a.nodeName)&&a.parentNode)f.error(\"type property can't be c\
+hanged\");else if(!f.support.radioValue&&b===\"radio\"&&f.nodeName(a,\"input\")\
+){var c=a.value;a.setAttribute(\"type\",b),c&&(a.value=c);return b}}},value:{ge\
+t:function(a,b){if(w&&f.nodeName(a,\"button\"))return w.get(a,b);return b in a?\
+a.value:null},set:function(a,b,c){if(w&&f.nodeName(a,\"button\"))return w.set(a\
+,b,c);a.value=b}}},propFix:{tabindex:\"tabIndex\",readonly:\"readOnly\",\"for\"\
+:\"htmlFor\",\"class\":\"className\",maxlength:\"maxLength\",cellspacing:\"cell\
+Spacing\",cellpadding:\"cellPadding\",rowspan:\"rowSpan\",colspan:\"colSpan\",u\
+semap:\"useMap\",frameborder:\"frameBorder\",contenteditable:\"contentEditable\
+\"},prop:function(a,c,d){var e,g,h,i=a.nodeType;if(!!a&&i!==3&&i!==8&&i!==2){h=\
+i!==1||!f.isXMLDoc(a),h&&(c=f.propFix[c]||c,g=f.propHooks[c]);return d!==b?g&&\
+\"set\"in g&&(e=g.set(a,d,c))!==b?e:a[c]=d:g&&\"get\"in g&&(e=g.get(a,c))!==nul\
+l?e:a[c]}},propHooks:{tabIndex:{get:function(a){var c=a.getAttributeNode(\"tabi\
+ndex\");return c&&c.specified?parseInt(c.value,10):s.test(a.nodeName)||t.test(a\
+.nodeName)&&a.href?0:b}}}}),f.attrHooks.tabindex=f.propHooks.tabIndex,x={get:fu\
+nction(a,c){var d,e=f.prop(a,c);return e===!0||typeof e!=\"boolean\"&&(d=a.getA\
+ttributeNode(c))&&d.nodeValue!==!1?c.toLowerCase():b},set:function(a,b,c){var d\
+;b===!1?f.removeAttr(a,c):(d=f.propFix[c]||c,d in a&&(a[d]=!0),a.setAttribute(c\
+,c.toLowerCase()));return c}},v||(y={name:!0,id:!0,coords:!0},w=f.valHooks.butt\
+on={get:function(a,c){var d;d=a.getAttributeNode(c);return d&&(y[c]?d.nodeValue\
+!==\"\":d.specified)?d.nodeValue:b},set:function(a,b,d){var e=a.getAttributeNod\
+e(d);e||(e=c.createAttribute(d),a.setAttributeNode(e));return e.nodeValue=b+\"\
+\"}},f.attrHooks.tabindex.set=w.set,f.each([\"width\",\"height\"],function(a,b)\
+{f.attrHooks[b]=f.extend(f.attrHooks[b],{set:function(a,c){if(c===\"\"){a.setAt\
+tribute(b,\"auto\");return c}}})}),f.attrHooks.contenteditable={get:w.get,set:f\
+unction(a,b,c){b===\"\"&&(b=\"false\"),w.set(a,b,c)}}),f.support.hrefNormalized\
+||f.each([\"href\",\"src\",\"width\",\"height\"],function(a,c){f.attrHooks[c]=f\
+.extend(f.attrHooks[c],{get:function(a){var d=a.getAttribute(c,2);return d===nu\
+ll?b:d}})}),f.support.style||(f.attrHooks.style={get:function(a){return a.style\
+.cssText.toLowerCase()||b},set:function(a,b){return a.style.cssText=\"\"+b}}),f\
+.support.optSelected||(f.propHooks.selected=f.extend(f.propHooks.selected,{get:\
+function(a){var b=a.parentNode;b&&(b.selectedIndex,b.parentNode&&b.parentNode.s\
+electedIndex);return null}})),f.support.enctype||(f.propFix.enctype=\"encoding\
+\"),f.support.checkOn||f.each([\"radio\",\"checkbox\"],function(){f.valHooks[th\
+is]={get:function(a){return a.getAttribute(\"value\")===null?\"on\":a.value}}})\
+,f.each([\"radio\",\"checkbox\"],function(){f.valHooks[this]=f.extend(f.valHook\
+s[this],{set:function(a,b){if(f.isArray(b))return a.checked=f.inArray(f(a).val(\
+),b)>=0}})});var z=/^(?:textarea|input|select)$/i,A=/^([^\\.]*)?(?:\\.(.+))?$/,\
+B=/(?:^|\\s)hover(\\.\\S+)?\\b/,C=/^key/,D=/^(?:mouse|contextmenu)|click/,E=/^(\
+?:focusinfocus|focusoutblur)$/,F=/^(\\w*)(?:#([\\w\\-]+))?(?:\\.([\\w\\-]+))?$/\
+,G=function( a){var b=F.exec(a);b&&(b[1]=(b[1]||\"\").toLowerCase(),b[3]=b[3]&&\
+new RegExp(\"(?:^|\\\\s)\"+b[3]+\"(?:\\\\s|$)\"));return b},H=function(a,b){var\
+ c=a.attributes||{};return(!b[1]||a.nodeName.toLowerCase()===b[1])&&(!b[2]||(c.\
+id||{}).value===b[2])&&(!b[3]||b[3].test((c[\"class\"]||{}).value))},I=function\
+(a){return f.event.special.hover?a:a.replace(B,\"mouseenter$1 mouseleave$1\")};\
+f.event={add:function(a,c,d,e,g){var h,i,j,k,l,m,n,o,p,q,r,s;if(!(a.nodeType===\
+3||a.nodeType===8||!c||!d||!(h=f._data(a)))){d.handler&&(p=d,d=p.handler,g=p.se\
+lector),d.guid||(d.guid=f.guid++),j=h.events,j||(h.events=j={}),i=h.handle,i||(\
+h.handle=i=function(a){return typeof f!=\"undefined\"&&(!a||f.event.triggered!=\
+=a.type)?f.event.dispatch.apply(i.elem,arguments):b},i.elem=a),c=f.trim(I(c)).s\
+plit(\" \");for(k=0;k<c.length;k++){l=A.exec(c[k])||[],m=l[1],n=(l[2]||\"\").sp\
+lit(\".\").sort(),s=f.event.special[m]||{},m=(g?s.delegateType:s.bindType)||m,s\
+=f.event.special[m]||{},o=f.extend({type:m,origType:l[1],data:e,handler:d,guid:\
+d.guid,selector:g,quick:g&&G(g),namespace:n.join(\".\")},p),r=j[m];if(!r){r=j[m\
+]=[],r.delegateCount=0;if(!s.setup||s.setup.call(a,e,n,i)===!1)a.addEventListen\
+er?a.addEventListener(m,i,!1):a.attachEvent&&a.attachEvent(\"on\"+m,i)}s.add&&(\
+s.add.call(a,o),o.handler.guid||(o.handler.guid=d.guid)),g?r.splice(r.delegateC\
+ount++,0,o):r.push(o),f.event.global[m]=!0}a=null}},global:{},remove:function(a\
+,b,c,d,e){var g=f.hasData(a)&&f._data(a),h,i,j,k,l,m,n,o,p,q,r,s;if(!!g&&!!(o=g\
+.events)){b=f.trim(I(b||\"\")).split(\" \");for(h=0;h<b.length;h++){i=A.exec(b[\
+h])||[],j=k=i[1],l=i[2];if(!j){for(j in o)f.event.remove(a,j+b[h],c,d,!0);conti\
+nue}p=f.event.special[j]||{},j=(d?p.delegateType:p.bindType)||j,r=o[j]||[],m=r.\
+length,l=l?new RegExp(\"(^|\\\\.)\"+l.split(\".\").sort().join(\"\\\\.(?:.*\
+\\\\.)?\")+\"(\\\\.|$)\"):null;for(n=0;n<r.length;n++)s=r[n],(e||k===s.origType\
+)&&(!c||c.guid===s.guid)&&(!l||l.test(s.namespace))&&(!d||d===s.selector||d===\
+\"**\"&&s.selector)&&(r.splice(n--,1),s.selector&&r.delegateCount--,p.remove&&p\
+.remove.call(a,s));r.length===0&&m!==r.length&&((!p.teardown||p.teardown.call(a\
+,l)===!1)&&f.removeEvent(a,j,g.handle),delete o[j])}f.isEmptyObject(o)&&(q=g.ha\
+ndle,q&&(q.elem=null),f.removeData(a,[\"events\",\"handle\"],!0))}},customEvent\
+:{getData:!0,setData:!0,changeData:!0},trigger:function(c,d,e,g){if(!e||e.nodeT\
+ype!==3&&e.nodeType!==8){var h=c.type||c,i=[],j,k,l,m,n,o,p,q,r,s;if(E.test(h+f\
+.event.triggered))return;h.indexOf(\"!\")>=0&&(h=h.slice(0,-1),k=!0),h.indexOf(\
+\".\")>=0&&(i=h.split(\".\"),h=i.shift(),i.sort());if((!e||f.event.customEvent[\
+h])&&!f.event.global[h])return;c=typeof c==\"object\"?c[f.expando]?c:new f.Even\
+t(h,c):new f.Event(h),c.type=h,c.isTrigger=!0,c.exclusive=k,c.namespace=i.join(\
+\".\"),c.namespace_re=c.namespace?new RegExp(\"(^|\\\\.)\"+i.join(\"\\\\.(?:.*\
+\\\\.)?\")+\"(\\\\.|$)\"):null,o=h.indexOf(\":\")<0?\"on\"+h:\"\";if(!e){j=f.ca\
+che;for(l in j)j[l].events&&j[l].events[h]&&f.event.trigger(c,d,j[l].handle.ele\
+m,!0);return}c.result=b,c.target||(c.target=e),d=d!=null?f.makeArray(d):[],d.un\
+shift(c),p=f.event.special[h]||{};if(p.trigger&&p.trigger.apply(e,d)===!1)retur\
+n;r=[[e,p.bindType||h]];if(!g&&!p.noBubble&&!f.isWindow(e)){s=p.delegateType||h\
+,m=E.test(s+h)?e:e.parentNode,n=null;for(;m;m=m.parentNode)r.push([m,s]),n=m;n&\
+&n===e.ownerDocument&&r.push([n.defaultView||n.parentWindow||a,s])}for(l=0;l<r.\
+length&&!c.isPropagationStopped();l++)m=r[l][0],c.type=r[l][1],q=(f._data(m,\"e\
+vents\")||{})[c.type]&&f._data(m,\"handle\"),q&&q.apply(m,d),q=o&&m[o],q&&f.acc\
+eptData(m)&&q.apply(m,d)===!1&&c.preventDefault();c.type=h,!g&&!c.isDefaultPrev\
+ented()&&(!p._default||p._default.apply(e.ownerDocument,d)===!1)&&(h!==\"click\
+\"||!f.nodeName(e,\"a\"))&&f.acceptData(e)&&o&&e[h]&&(h!==\"focus\"&&h!==\"blur\
+\"||c.target.offsetWidth!==0)&&!f.isWindow(e)&&(n=e[o],n&&(e[o]=null),f.event.t\
+riggered=h,e[h](),f.event.triggered=b,n&&(e[o]=n));return c.result}},dispatch:f\
+unction(c){c=f.event.fix(c||a.event);var d=(f._data(this,\"events\")||{})[c.typ\
+e]||[],e=d.delegateCount,g=[].slice.call(arguments,0),h=!c.exclusive&&!c.namesp\
+ace,i=f.event.special[c.type]||{},j=[],k,l,m,n,o,p,q,r,s,t,u;g[0]=c,c.delegateT\
+arget=this;if(!i.preDispatch||i.preDispatch.call(this,c)!==!1){if(e&&(!c.button\
+||c.type!==\"click\")){n=f(this),n.context=this.ownerDocument||this;for(m=c.tar\
+get;m!=this;m=m.parentNode||this)if(m.disabled!==!0){p={},r=[],n[0]=m;for(k=0;k\
+<e;k++)s=d[k],t=s.selector,p[t]===b&&(p[t]=s.quick?H(m,s.quick):n.is(t)),p[t]&&\
+r.push(s);r.length&&j.push({elem:m,matches:r})}}d.length>e&&j.push({elem:this,m\
+atches:d.slice(e)});for(k=0;k<j.length&&!c.isPropagationStopped();k++){q=j[k],c\
+.currentTarget=q.elem;for(l=0;l<q.matches.length&&!c.isImmediatePropagationStop\
+ped();l++){s=q.matches[l];if(h||!c.namespace&&!s.namespace||c.namespace_re&&c.n\
+amespace_re.test(s.namespace))c.data=s.data,c.handleObj=s,o=((f.event.special[s\
+.origType]||{}).handle||s.handler).apply(q.elem,g),o!==b&&(c.result=o,o===!1&&(\
+c.preventDefault(),c.stopPropagation()))}}i.postDispatch&&i.postDispatch.call(t\
+his,c);return c.result}},props:\"attrChange attrName relatedNode srcElement alt\
+Key bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget s\
+hiftKey target timeStamp view which\".split(\" \"),fixHooks:{},keyHooks:{props:\
+\"char charCode key keyCode\".split(\" \"),filter:function(a,b){a.which==null&&\
+(a.which=b.charCode!=null?b.charCode:b.keyCode);return a}},mouseHooks:{props:\"\
+button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX \
+screenY toElement\".split(\" \"),filter:function(a,d){var e,f,g,h=d.button,i=d.\
+fromElement;a.pageX==null&&d.clientX!=null&&(e=a.target.ownerDocument||c,f=e.do\
+cumentElement,g=e.body,a.pageX=d.clientX+(f&&f.scrollLeft||g&&g.scrollLeft||0)-\
+(f&&f.clientLeft||g&&g.clientLeft||0),a.pageY=d.clientY+(f&&f.scrollTop||g&&g.s\
+crollTop||0)-(f&&f.clientTop||g&&g.clientTop||0)),!a.relatedTarget&&i&&(a.relat\
+edTarget=i===a.target?d.toElement:i),!a.which&&h!==b&&(a.which=h&1?1:h&2?3:h&4?\
+2:0);return a}},fix:function(a){if(a[f.expando])return a;var d,e,g=a,h=f.event.\
+fixHooks[a.type]||{},i=h.props?this.props.concat(h.props):this.props;a=f.Event(\
+g);for(d=i.length;d;)e=i[--d],a[e]=g[e];a.target||(a.target=g.srcElement||c),a.\
+target.nodeType===3&&(a.target=a.target.parentNode),a.metaKey===b&&(a.metaKey=a\
+.ctrlKey);return h.filter?h.filter(a,g):a},special:{ready:{setup:f.bindReady},l\
+oad:{noBubble:!0},focus:{delegateType:\"focusin\"},blur:{delegateType:\"focusou\
+t\"},beforeunload:{setup:function(a,b,c){f.isWindow(this)&&(this.onbeforeunload\
+=c)},teardown:function(a,b){this.onbeforeunload===b&&(this.onbeforeunload=null)\
+}}},simulate:function(a,b,c,d){var e=f.extend(new f.Event,c,{type:a,isSimulated\
+:!0,originalEvent:{}});d?f.event.trigger(e,null,b):f.event.dispatch.call(b,e),e\
+.isDefaultPrevented()&&c.preventDefault()}},f.event.handle=f.event.dispatch,f.r\
+emoveEvent=c.removeEventListener?function(a,b,c){a.removeEventListener&&a.remov\
+eEventListener(b,c,!1)}:function(a,b,c){a.detachEvent&&a.detachEvent(\"on\"+b,c\
+)},f.Event=function(a,b){if(!(this instanceof f.Event))return new f.Event(a,b);\
+a&&a.type?(this.originalEvent=a,this.type=a.type,this.isDefaultPrevented=a.defa\
+ultPrevented||a.returnValue===!1||a.getPreventDefault&&a.getPreventDefault()?K:\
+J):this.type=a,b&&f.extend(this,b),this.timeStamp=a&&a.timeStamp||f.now(),this[\
+f.expando]=!0},f.Event.prototype={preventDefault:function(){this.isDefaultPreve\
+nted=K;var a=this.originalEvent;!a||(a.preventDefault?a.preventDefault():a.retu\
+rnValue=!1)},stopPropagation:function(){this.isPropagationStopped=K;var a=this.\
+originalEvent;!a||(a.stopPropagation&&a.stopPropagation(),a.cancelBubble=!0)},s\
+topImmediatePropagation:function(){this.isImmediatePropagationStopped=K,this.st\
+opPropagation()},isDefaultPrevented:J,isPropagationStopped:J,isImmediatePropaga\
+tionStopped:J},f.each({mouseenter:\"mouseover\",mouseleave:\"mouseout\"},functi\
+on(a,b){f.event.special[a]={delegateType:b,bindType:b,handle:function(a){var c=\
+this,d=a.relatedTarget,e=a.handleObj,g=e.selector,h;if(!d||d!==c&&!f.contains(c\
+,d))a.type=e.origType,h=e.handler.apply(this,arguments),a.type=b;return h}}}),f\
+.support.submitBubbles||(f.event.special.submit={setup:function(){if(f.nodeName\
+(this,\"form\"))return!1;f.event.add(this,\"click._submit keypress._submit\",fu\
+nction(a){var c=a.target,d=f.nodeName(c,\"input\")||f.nodeName(c,\"button\")?c.\
+form:b;d&&!d._submit_attached&&(f.event.add(d,\"submit._submit\",function(a){a.\
+_submit_bubble=!0}),d._submit_attached=!0)})},postDispatch:function(a){a._submi\
+t_bubble&&(delete a._submit_bubble,this.parentNode&&!a.isTrigger&&f.event.simul\
+ate(\"submit\",this.parentNode,a,!0))},teardown:function(){if(f.nodeName(this,\
+\"form\"))return!1;f.event.remove(this,\"._submit\")}}),f.support.changeBubbles\
+||(f.event.special.change={setup:function(){if(z.test(this.nodeName)){if(this.t\
+ype===\"checkbox\"||this.type===\"radio\")f.event.add(this,\"propertychange._ch\
+ange\",function(a){a.originalEvent.propertyName===\"checked\"&&(this._just_chan\
+ged=!0)}),f.event.add(this,\"click._change\",function(a){this._just_changed&&!a\
+.isTrigger&&(this._just_changed=!1,f.event.simulate(\"change\",this,a,!0))});re\
+turn!1}f.event.add(this,\"beforeactivate._change\",function(a){var b=a.target;z\
+.test(b.nodeName)&&!b._change_attached&&(f.event.add(b,\"change._change\",funct\
+ion(a){this.parentNode&&!a.isSimulated&&!a.isTrigger&&f.event.simulate(\"change\
+\",this.parentNode,a,!0)}),b._change_attached=!0)})},handle:function(a){var b=a\
+.target;if(this!==b||a.isSimulated||a.isTrigger||b.type!==\"radio\"&&b.type!==\
+\"checkbox\")return a.handleObj.handler.apply(this,arguments)},teardown:functio\
+n(){f.event.remove(this,\"._change\");return z.test(this.nodeName)}}),f.support\
+.focusinBubbles||f.each({focus:\"focusin\",blur:\"focusout\"},function(a,b){var\
+ d=0,e=function(a){f.event.simulate(b,a.target,f.event.fix(a),!0)};f.event.spec\
+ial[b]={setup:function(){d++===0&&c.addEventListener(a,e,!0)},teardown:function\
+(){--d===0&&c.removeEventListener(a,e,!0)}}}),f.fn.extend({on:function(a,c,d,e,\
+g){var h,i;if(typeof a==\"object\"){typeof c!=\"string\"&&(d=d||c,c=b);for(i in\
+ a)this.on(i,c,d,a[i],g);return this}d==null&&e==null?(e=c,d=c=b):e==null&&(typ\
+eof c==\"string\"?(e=d,d=b):(e=d,d=c,c=b));if(e===!1)e=J;else if(!e)return this\
+;g===1&&(h=e,e=function(a){f().off(a);return h.apply(this,arguments)},e.guid=h.\
+guid||(h.guid=f.guid++));return this.each(function(){f.event.add(this,a,e,d,c)}\
+)},one:function(a,b,c,d){return this.on(a,b,c,d,1)},off:function(a,c,d){if(a&&a\
+.preventDefault&&a.handleObj){var e=a.handleObj;f(a.delegateTarget).off(e.names\
+pace?e.origType+\".\"+e.namespace:e.origType,e.selector,e.handler);return this}\
+if(typeof a==\"object\"){for(var g in a)this.off(g,c,a[g]);return this}if(c===!\
+1||typeof c==\"function\")d=c,c=b;d===!1&&(d=J);return this.each(function(){f.e\
+vent.remove(this,a,d,c)})},bind:function(a,b,c){return this.on(a,null,b,c)},unb\
+ind:function(a,b){return this.off(a,null,b)},live:function(a,b,c){f(this.contex\
+t).on(a,this.selector,b,c);return this},die:function(a,b){f(this.context).off(a\
+,this.selector||\"**\",b);return this},delegate:function(a,b,c,d){return this.o\
+n(b,a,c,d)},undelegate:function(a,b,c){return arguments.length==1?this.off(a,\"\
+**\"):this.off(b,a,c)},trigger:function(a,b){return this.each(function(){f.even\
+t.trigger(a,b,this)})},triggerHandler:function(a,b){if(this[0])return f.event.t\
+rigger(a,b,this[0],!0)},toggle:function(a){var b=arguments,c=a.guid||f.guid++,d\
+=0,e=function(c){var e=(f._data(this,\"lastToggle\"+a.guid)||0)%d;f._data(this,\
+\"lastToggle\"+a.guid,e+1),c.preventDefault();return b[e].apply(this,arguments)\
+||!1};e.guid=c;while(d<b.length)b[d++].guid=c;return this.click(e)},hover:funct\
+ion(a,b){return this.mouseenter(a).mouseleave(b||a)}}),f.each(\"blur focus focu\
+sin focusout load resize scroll unload click dblclick mousedown mouseup mousemo\
+ve mouseover mouseout mouseenter mouseleave change select submit keydown keypre\
+ss keyup error contextmenu\".split(\" \"),function(a,b){f.fn[b]=function(a,c){c\
+==null&&(c=a,a=null);return arguments.length>0?this.on(b,null,a,c):this.trigger\
+(b)},f.attrFn&&(f.attrFn[b]=!0),C.test(b)&&(f.event.fixHooks[b]=f.event.keyHook\
+s),D.test(b)&&(f.event.fixHooks[b]=f.event.mouseHooks)}),function(){function x(\
+a,b,c,e,f,g){for(var h=0,i=e.length;h<i;h++){var j=e[h];if(j){var k=!1;j=j[a];w\
+hile(j){if(j[d]===c){k=e[j.sizset];break}if(j.nodeType===1){g||(j[d]=c,j.sizset\
+=h);if(typeof b!=\"string\"){if(j===b){k=!0;break}}else if(m.filter(b,[j]).leng\
+th>0){k=j;break}}j=j[a]}e[h]=k}}}function w(a,b,c,e,f,g){for(var h=0,i=e.length\
+;h<i;h++){var j=e[h];if(j){var k=!1;j=j[a];while(j){if(j[d]===c){k=e[j.sizset];\
+break}j.nodeType===1&&!g&&(j[d]=c,j.sizset=h);if(j.nodeName.toLowerCase()===b){\
+k=j;break}j=j[a]}e[h]=k}}}var a=/((?:\\((?:\\([^()]+\\)|[^()]+)+\\)|\\[(?:\\[[^\
+\\[\\]]*\\]|['\"][^'\"]*['\"]|[^\\[\\]'\"]+)+\\]|\\\\.|[^ >+~,(\\[\\\\]+)+|[>+~\
+])(\\s*,\\s*)?((?:.|\\r|\\n)*)/g,d=\"sizcache\"+(Math.random()+\"\").replace(\"\
+.\",\"\"),e=0,g=Object.prototype.toString,h=!1,i=!0,j=/\\\\/g,k=/\\r\\n/g,l=/\
+\\W/;[0,0].sort(function(){i=!1;return 0});var m=function(b,d,e,f){e=e||[],d=d|\
+|c;var h=d;if(d.nodeType!==1&&d.nodeType!==9)return[];if(!b||typeof b!=\"string\
+\")return e;var i,j,k,l,n,q,r,t,u=!0,v=m.isXML(d),w=[],x=b;do{a.exec(\"\"),i=a.\
+exec(x);if(i){x=i[3],w.push(i[1]);if(i[2]){l=i[3];break}}}while(i);if(w.length>\
+1&&p.exec(b))if(w.length===2&&o.relative[w[0]])j=y(w[0]+w[1],d,f);else{j=o.rela\
+tive[w[0]]?[d]:m(w.shift(),d);while(w.length)b=w.shift(),o.relative[b]&&(b+=w.s\
+hift()),j=y(b,j,f)}else{!f&&w.length>1&&d.nodeType===9&&!v&&o.match.ID.test(w[0\
+])&&!o.match.ID.test(w[w.length-1])&&(n=m.find(w.shift(),d,v),d=n.expr?m.filter\
+(n.expr,n.set)[0]:n.set[0]);if(d){n=f?{expr:w.pop(),set:s(f)}:m.find(w.pop(),w.\
+length===1&&(w[0]===\"~\"||w[0]===\"+\")&&d.parentNode?d.parentNode:d,v),j=n.ex\
+pr?m.filter(n.expr,n.set):n.set,w.length>0?k=s(j):u=!1;while(w.length)q=w.pop()\
+,r=q,o.relative[q]?r=w.pop():q=\"\",r==null&&(r=d),o.relative[q](k,r,v)}else k=\
+w=[]}k||(k=j),k||m.error(q||b);if(g.call(k)===\"[object Array]\")if(!u)e.push.a\
+pply(e,k);else if(d&&d.nodeType===1)for(t=0;k[t]!=null;t++)k[t]&&(k[t]===!0||k[\
+t].nodeType===1&&m.contains(d,k[t]))&&e.push(j[t]);else for(t=0;k[t]!=null;t++)\
+k[t]&&k[t].nodeType===1&&e.push(j[t]);else s(k,e);l&&(m(l,h,e,f),m.uniqueSort(e\
+));return e};m.uniqueSort=function(a){if(u){h=i,a.sort(u);if(h)for(var b=1;b<a.\
+length;b++)a[b]===a[b-1]&&a.splice(b--,1)}return a},m.matches=function(a,b){ret\
+urn m(a,null,null,b)},m.matchesSelector=function(a,b){return m(b,null,null,[a])\
+.length>0},m.find=function(a,b,c){var d,e,f,g,h,i;if(!a)return[];for(e=0,f=o.or\
+der.length;e<f;e++){h=o.order[e];if(g=o.leftMatch[h].exec(a)){i=g[1],g.splice(1\
+,1);if(i.substr(i.length-1)!==\"\\\\\"){g[1]=(g[1]||\"\").replace(j,\"\"),d=o.f\
+ind[h](g,b,c);if(d!=null){a=a.replace(o.match[h],\"\");break}}}}d||(d=typeof b.\
+getElementsByTagName!=\"undefined\"?b.getElementsByTagName(\"*\"):[]);return{se\
+t:d,expr:a}},m.filter=function(a,c,d,e){var f,g,h,i,j,k,l,n,p,q=a,r=[],s=c,t=c&\
+&c[0]&&m.isXML(c[0]);while(a&&c.length){for(h in o.filter)if((f=o.leftMatch[h].\
+exec(a))!=null&&f[2]){k=o.filter[h],l=f[1],g=!1,f.splice(1,1);if(l.substr(l.len\
+gth-1)===\"\\\\\")continue;s===r&&(r=[]);if(o.preFilter[h]){f=o.preFilter[h](f,\
+s,d,r,e,t);if(!f)g=i=!0;else if(f===!0)continue}if(f)for(n=0;(j=s[n])!=null;n++\
+)j&&(i=k(j,f,n,s),p=e^i,d&&i!=null?p?g=!0:s[n]=!1:p&&(r.push(j),g=!0));if(i!==b\
+){d||(s=r),a=a.replace(o.match[h],\"\");if(!g)return[];break}}if(a===q)if(g==nu\
+ll)m.error(a);else break;q=a}return s},m.error=function(a){throw new Error(\"Sy\
+ntax error, unrecognized expression: \"+a)};var n=m.getText=function(a){var b,c\
+,d=a.nodeType,e=\"\";if(d){if(d===1||d===9||d===11){if(typeof a.textContent==\"\
+string\")return a.textContent;if(typeof a.innerText==\"string\")return a.innerT\
+ext.replace(k,\"\");for(a=a.firstChild;a;a=a.nextSibling)e+=n(a)}else if(d===3|\
+|d===4)return a.nodeValue}else for(b=0;c=a[b];b++)c.nodeType!==8&&(e+=n(c));ret\
+urn e},o=m.selectors={order:[\"ID\",\"NAME\",\"TAG\"],match:{ID:/#((?:[\\w\\u00\
+c0-\\uFFFF\\-]|\\\\.)+)/,CLASS:/\\.((?:[\\w\\u00c0-\\uFFFF\\-]|\\\\.)+)/,NAME:/\
+\\[name=['\"]*((?:[\\w\\u00c0-\\uFFFF\\-]|\\\\.)+)['\"]*\\]/,ATTR:/\\[\\s*((?:[\
+\\w\\u00c0-\\uFFFF\\-]|\\\\.)+)\\s*(?:(\\S?=)\\s*(?:(['\"])(.*?)\\3|(#?(?:[\\w\
+\\u00c0-\\uFFFF\\-]|\\\\.)*)|)|)\\s*\\]/,TAG:/^((?:[\\w\\u00c0-\\uFFFF\\*\\-]|\
+\\\\.)+)/,CHILD:/:(only|nth|last|first)-child(?:\\(\\s*(even|odd|(?:[+\\-]?\\d+\
+|(?:[+\\-]?\\d*)?n\\s*(?:[+\\-]\\s*\\d+)?))\\s*\\))?/,POS:/:(nth|eq|gt|lt|first\
+|last|even|odd)(?:\\((\\d*)\\))?(?=[^\\-]|$)/,PSEUDO:/:((?:[\\w\\u00c0-\\uFFFF\
+\\-]|\\\\.)+)(?:\\((['\"]?)((?:\\([^\\)]+\\)|[^\\(\\)]*)+)\\2\\))?/},leftMatch:\
+{},attrMap:{\"class\":\"className\",\"for\":\"htmlFor\"},attrHandle:{href:funct\
+ion(a){return a.getAttribute(\"href\")},type:function(a){return a.getAttribute(\
+\"type\")}},relative:{\"+\":function(a,b){var c=typeof b==\"string\",d=c&&!l.te\
+st(b),e=c&&!d;d&&(b=b.toLowerCase());for(var f=0,g=a.length,h;f<g;f++)if(h=a[f]\
+){while((h=h.previousSibling)&&h.nodeType!==1);a[f]=e||h&&h.nodeName.toLowerCas\
+e()===b?h||!1:h===b}e&&m.filter(b,a,!0)},\">\":function(a,b){var c,d=typeof b==\
+\"string\",e=0,f=a.length;if(d&&!l.test(b)){b=b.toLowerCase();for(;e<f;e++){c=a\
+[e];if(c){var g=c.parentNode;a[e]=g.nodeName.toLowerCase()===b?g:!1}}}else{for(\
+;e<f;e++)c=a[e],c&&(a[e]=d?c.parentNode:c.parentNode===b);d&&m.filter(b,a,!0)}}\
+,\"\":function(a,b,c){var d,f=e++,g=x;typeof b==\"string\"&&!l.test(b)&&(b=b.to\
+LowerCase(),d=b,g=w),g(\"parentNode\",b,f,a,d,c)},\"~\":function(a,b,c){var d,f\
+=e++,g=x;typeof b==\"string\"&&!l.test(b)&&(b=b.toLowerCase(),d=b,g=w),g(\"prev\
+iousSibling\",b,f,a,d,c)}},find:{ID:function(a,b,c){if(typeof b.getElementById!\
+=\"undefined\"&&!c){var d=b.getElementById(a[1]);return d&&d.parentNode?[d]:[]}\
+},NAME:function(a,b){if(typeof b.getElementsByName!=\"undefined\"){var c=[],d=b\
+.getElementsByName(a[1]);for(var e=0,f=d.length;e<f;e++)d[e].getAttribute(\"nam\
+e\")===a[1]&&c.push(d[e]);return c.length===0?null:c}},TAG:function(a,b){if(typ\
+eof b.getElementsByTagName!=\"undefined\")return b.getElementsByTagName(a[1])}}\
+,preFilter:{CLASS:function(a,b,c,d,e,f){a=\" \"+a[1].replace(j,\"\")+\" \";if(f\
+)return a;for(var g=0,h;(h=b[g])!=null;g++)h&&(e^(h.className&&(\" \"+h.classNa\
+me+\" \").replace(/[\\t\\n\\r]/g,\" \").indexOf(a)>=0)?c||d.push(h):c&&(b[g]=!1\
+));return!1},ID:function(a){return a[1].replace(j,\"\")},TAG:function(a,b){retu\
+rn a[1].replace(j,\"\").toLowerCase()},CHILD:function(a){if(a[1]===\"nth\"){a[2\
+]||m.error(a[0]),a[2]=a[2].replace(/^\\+|\\s*/g,\"\");var b=/(-?)(\\d*)(?:n([+\
+\\-]?\\d*))?/.exec(a[2]===\"even\"&&\"2n\"||a[2]===\"odd\"&&\"2n+1\"||!/\\D/.te\
+st(a[2])&&\"0n+\"+a[2]||a[2]);a[2]=b[1]+(b[2]||1)-0,a[3]=b[3]-0}else a[2]&&m.er\
+ror(a[0]);a[0]=e++;return a},ATTR:function(a,b,c,d,e,f){var g=a[1]=a[1].replace\
+(j,\"\");!f&&o.attrMap[g]&&(a[1]=o.attrMap[g]),a[4]=(a[4]||a[5]||\"\").replace(\
+j,\"\"),a[2]===\"~=\"&&(a[4]=\" \"+a[4]+\" \");return a},PSEUDO:function(b,c,d,\
+e,f){if(b[1]===\"not\")if((a.exec(b[3])||\"\").length>1||/^\\w/.test(b[3]))b[3]\
+=m(b[3],null,null,c);else{var g=m.filter(b[3],c,d,!0^f);d||e.push.apply(e,g);re\
+turn!1}else if(o.match.POS.test(b[0])||o.match.CHILD.test(b[0]))return!0;return\
+ b},POS:function(a){a.unshift(!0);return a}},filters:{enabled:function(a){retur\
+n a.disabled===!1&&a.type!==\"hidden\"},disabled:function(a){return a.disabled=\
+==!0},checked:function(a){return a.checked===!0},selected:function(a){a.parentN\
+ode&&a.parentNode.selectedIndex;return a.selected===!0},parent:function(a){retu\
+rn!!a.firstChild},empty:function(a){return!a.firstChild},has:function(a,b,c){re\
+turn!!m(c[3],a).length},header:function(a){return/h\\d/i.test(a.nodeName)},text\
+:function(a){var b=a.getAttribute(\"type\"),c=a.type;return a.nodeName.toLowerC\
+ase()===\"input\"&&\"text\"===c&&(b===c||b===null)},radio:function(a){return a.\
+nodeName.toLowerCase()===\"input\"&&\"radio\"===a.type},checkbox:function(a){re\
+turn a.nodeName.toLowerCase()===\"input\"&&\"checkbox\"===a.type},file:function\
+(a){return a.nodeName.toLowerCase()===\"input\"&&\"file\"===a.type},password:fu\
+nction(a){return a.nodeName.toLowerCase()===\"input\"&&\"password\"===a.type},s\
+ubmit:function(a){var b=a.nodeName.toLowerCase();return(b===\"input\"||b===\"bu\
+tton\")&&\"submit\"===a.type},image:function(a){return a.nodeName.toLowerCase()\
+===\"input\"&&\"image\"===a.type},reset:function(a){var b=a.nodeName.toLowerCas\
+e();return(b===\"input\"||b===\"button\")&&\"reset\"===a.type},button:function(\
+a){var b=a.nodeName.toLowerCase();return b===\"input\"&&\"button\"===a.type||b=\
+==\"button\"},input:function(a){return/input|select|textarea|button/i.test(a.no\
+deName)},focus:function(a){return a===a.ownerDocument.activeElement}},setFilter\
+s:{first:function(a,b){return b===0},last:function(a,b,c,d){return b===d.length\
+-1},even:function(a,b){return b%2===0},odd:function(a,b){return b%2===1},lt:fun\
+ction(a,b,c){return b<c[3]-0},gt:function(a,b,c){return b>c[3]-0},nth:function(\
+a,b,c){return c[3]-0===b},eq:function(a,b,c){return c[3]-0===b}},filter:{PSEUDO\
+:function(a,b,c,d){var e=b[1],f=o.filters[e];if(f)return f(a,c,b,d);if(e===\"co\
+ntains\")return(a.textContent||a.innerText||n([a])||\"\").indexOf(b[3])>=0;if(e\
+===\"not\"){var g=b[3];for(var h=0,i=g.length;h<i;h++)if(g[h]===a)return!1;retu\
+rn!0}m.error(e)},CHILD:function(a,b){var c,e,f,g,h,i,j,k=b[1],l=a;switch(k){cas\
+e\"only\":case\"first\":while(l=l.previousSibling)if(l.nodeType===1)return!1;if\
+(k===\"first\")return!0;l=a;case\"last\":while(l=l.nextSibling)if(l.nodeType===\
+1)return!1;return!0;case\"nth\":c=b[2],e=b[3];if(c===1&&e===0)return!0;f=b[0],g\
+=a.parentNode;if(g&&(g[d]!==f||!a.nodeIndex)){i=0;for(l=g.firstChild;l;l=l.next\
+Sibling)l.nodeType===1&&(l.nodeIndex=++i);g[d]=f}j=a.nodeIndex-e;return c===0?j\
+===0:j%c===0&&j/c>=0}},ID:function(a,b){return a.nodeType===1&&a.getAttribute(\
+\"id\")===b},TAG:function(a,b){return b===\"*\"&&a.nodeType===1||!!a.nodeName&&\
+a.nodeName.toLowerCase()===b},CLASS:function(a,b){return(\" \"+(a.className||a.\
+getAttribute(\"class\"))+\" \").indexOf(b)>-1},ATTR:function(a,b){var c=b[1],d=\
+m.attr?m.attr(a,c):o.attrHandle[c]?o.attrHandle[c](a):a[c]!=null?a[c]:a.getAttr\
+ibute(c),e=d+\"\",f=b[2],g=b[4];return d==null?f===\"!=\":!f&&m.attr?d!=null:f=\
+==\"=\"?e===g:f===\"*=\"?e.indexOf(g)>=0:f===\"~=\"?(\" \"+e+\" \").indexOf(g)>\
+=0:g?f===\"!=\"?e!==g:f===\"^=\"?e.indexOf(g)===0:f===\"$=\"?e.substr(e.length-\
+g.length)===g:f===\"|=\"?e===g||e.substr(0,g.length+1)===g+\"-\":!1:e&&d!==!1},\
+POS:function(a,b,c,d){var e=b[2],f=o.setFilters[e];if(f)return f(a,c,b,d)}}},p=\
+o.match.POS,q=function(a,b){return\"\\\\\"+(b-0+1)};for(var r in o.match)o.matc\
+h[r]=new RegExp(o.match[r].source+/(?![^\\[]*\\])(?![^\\(]*\\))/.source),o.left\
+Match[r]=new RegExp(/(^(?:.|\\r|\\n)*?)/.source+o.match[r].source.replace(/\
+\\\\(\\d+)/g,q));o.match.globalPOS=p;var s=function(a,b){a=Array.prototype.slic\
+e.call(a,0);if(b){b.push.apply(b,a);return b}return a};try{Array.prototype.slic\
+e.call(c.documentElement.childNodes,0)[0].nodeType}catch(t){s=function(a,b){var\
+ c=0,d=b||[];if(g.call(a)===\"[object Array]\")Array.prototype.push.apply(d,a);\
+else if(typeof a.length==\"number\")for(var e=a.length;c<e;c++)d.push(a[c]);els\
+e for(;a[c];c++)d.push(a[c]);return d}}var u,v;c.documentElement.compareDocumen\
+tPosition?u=function(a,b){if(a===b){h=!0;return 0}if(!a.compareDocumentPosition\
+||!b.compareDocumentPosition)return a.compareDocumentPosition?-1:1;return a.com\
+pareDocumentPosition(b)&4?-1:1}:(u=function(a,b){if(a===b){h=!0;return 0}if(a.s\
+ourceIndex&&b.sourceIndex)return a.sourceIndex-b.sourceIndex;var c,d,e=[],f=[],\
+g=a.parentNode,i=b.parentNode,j=g;if(g===i)return v(a,b);if(!g)return-1;if(!i)r\
+eturn 1;while(j)e.unshift(j),j=j.parentNode;j=i;while(j)f.unshift(j),j=j.parent\
+Node;c=e.length,d=f.length;for(var k=0;k<c&&k<d;k++)if(e[k]!==f[k])return v(e[k\
+],f[k]);return k===c?v(a,f[k],-1):v(e[k],b,1)},v=function(a,b,c){if(a===b)retur\
+n c;var d=a.nextSibling;while(d){if(d===b)return-1;d=d.nextSibling}return 1}),f\
+unction(){var a=c.createElement(\"div\"),d=\"script\"+(new Date).getTime(),e=c.\
+documentElement;a.innerHTML=\"<a name='\"+d+\"'/>\",e.insertBefore(a,e.firstChi\
+ld),c.getElementById(d)&&(o.find.ID=function(a,c,d){if(typeof c.getElementById!\
+=\"undefined\"&&!d){var e=c.getElementById(a[1]);return e?e.id===a[1]||typeof e\
+.getAttributeNode!=\"undefined\"&&e.getAttributeNode(\"id\").nodeValue===a[1]?[\
+e]:b:[]}},o.filter.ID=function(a,b){var c=typeof a.getAttributeNode!=\"undefine\
+d\"&&a.getAttributeNode(\"id\");return a.nodeType===1&&c&&c.nodeValue===b}),e.r\
+emoveChild(a),e=a=null}(),function(){var a=c.createElement(\"div\");a.appendChi\
+ld(c.createComment(\"\")),a.getElementsByTagName(\"*\").length>0&&(o.find.TAG=f\
+unction(a,b){var c=b.getElementsByTagName(a[1]);if(a[1]===\"*\"){var d=[];for(v\
+ar e=0;c[e];e++)c[e].nodeType===1&&d.push(c[e]);c=d}return c}),a.innerHTML=\"<a\
+ href='#'></a>\",a.firstChild&&typeof a.firstChild.getAttribute!=\"undefined\"&\
+&a.firstChild.getAttribute(\"href\")!==\"#\"&&(o.attrHandle.href=function(a){re\
+turn a.getAttribute(\"href\",2)}),a=null}(),c.querySelectorAll&&function(){var \
+a=m,b=c.createElement(\"div\"),d=\"__sizzle__\";b.innerHTML=\"<p class='TEST'><\
+/p>\";if(!b.querySelectorAll||b.querySelectorAll(\".TEST\").length!==0){m=funct\
+ion(b,e,f,g){e=e||c;if(!g&&!m.isXML(e)){var h=/^(\\w+$)|^\\.([\\w\\-]+$)|^#([\
+\\w\\-]+$)/.exec(b);if(h&&(e.nodeType===1||e.nodeType===9)){if(h[1])return s(e.\
+getElementsByTagName(b),f);if(h[2]&&o.find.CLASS&&e.getElementsByClassName)retu\
+rn s(e.getElementsByClassName(h[2]),f)}if(e.nodeType===9){if(b===\"body\"&&e.bo\
+dy)return s([e.body],f);if(h&&h[3]){var i=e.getElementById(h[3]);if(!i||!i.pare\
+ntNode)return s([],f);if(i.id===h[3])return s([i],f)}try{return s(e.querySelect\
+orAll(b),f)}catch(j){}}else if(e.nodeType===1&&e.nodeName.toLowerCase()!==\"obj\
+ect\"){var k=e,l=e.getAttribute(\"id\"),n=l||d,p=e.parentNode,q=/^\\s*[+~]/.tes\
+t(b);l?n=n.replace(/'/g,\"\\\\$&\"):e.setAttribute(\"id\",n),q&&p&&(e=e.parentN\
+ode);try{if(!q||p)return s(e.querySelectorAll(\"[id='\"+n+\"'] \"+b),f)}catch(r\
+){}finally{l||k.removeAttribute(\"id\")}}}return a(b,e,f,g)};for(var e in a)m[e\
+]=a[e];b=null}}(),function(){var a=c.documentElement,b=a.matchesSelector||a.moz\
+MatchesSelector||a.webkitMatchesSelector||a.msMatchesSelector;if(b){var d=!b.ca\
+ll(c.createElement(\"div\"),\"div\"),e=!1;try{b.call(c.documentElement,\"[test!\
+='']:sizzle\")}catch(f){e=!0}m.matchesSelector=function(a,c){c=c.replace(/\\=\
+\\s*([^'\"\\]]*)\\s*\\]/g,\"='$1']\");if(!m.isXML(a))try{if(e||!o.match.PSEUDO.\
+test(c)&&!/!=/.test(c)){var f=b.call(a,c);if(f||!d||a.document&&a.document.node\
+Type!==11)return f}}catch(g){}return m(c,null,null,[a]).length>0}}}(),function(\
+){var a=c.createElement(\"div\");a.innerHTML=\"<div class='test e'></div><div c\
+lass='test'></div>\";if(!!a.getElementsByClassName&&a.getElementsByClassName(\"\
+e\").length!==0){a.lastChild.className=\"e\";if(a.getElementsByClassName(\"e\")\
+.length===1)return;o.order.splice(1,0,\"CLASS\"),o.find.CLASS=function(a,b,c){i\
+f(typeof b.getElementsByClassName!=\"undefined\"&&!c)return b.getElementsByClas\
+sName(a[1])},a=null}}(),c.documentElement.contains?m.contains=function(a,b){ret\
+urn a!==b&&(a.contains?a.contains(b):!0)}:c.documentElement.compareDocumentPosi\
+tion?m.contains=function(a,b){return!!(a.compareDocumentPosition(b)&16)}:m.cont\
+ains=function(){return!1},m.isXML=function(a){var b=(a?a.ownerDocument||a:0).do\
+cumentElement;return b?b.nodeName!==\"HTML\":!1};var y=function(a,b,c){var d,e=\
+[],f=\"\",g=b.nodeType?[b]:b;while(d=o.match.PSEUDO.exec(a))f+=d[0],a=a.replace\
+(o.match.PSEUDO,\"\");a=o.relative[a]?a+\"*\":a;for(var h=0,i=g.length;h<i;h++)\
+m(a,g[h],e,c);return m.filter(f,e)};m.attr=f.attr,m.selectors.attrMap={},f.find\
+=m,f.expr=m.selectors,f.expr[\":\"]=f.expr.filters,f.unique=m.uniqueSort,f.text\
+=m.getText,f.isXMLDoc=m.isXML,f.contains=m.contains}();var L=/Until$/,M=/^(?:pa\
+rents|prevUntil|prevAll)/,N=/,/,O=/^.[^:#\\[\\.,]*$/,P=Array.prototype.slice,Q=\
+f.expr.match.globalPOS,R={children:!0,contents:!0,next:!0,prev:!0};f.fn.extend(\
+{find:function(a){var b=this,c,d;if(typeof a!=\"string\")return f(a).filter(fun\
+ction(){for(c=0,d=b.length;c<d;c++)if(f.contains(b[c],this))return!0});var e=th\
+is.pushStack(\"\",\"find\",a),g,h,i;for(c=0,d=this.length;c<d;c++){g=e.length,f\
+.find(a,this[c],e);if(c>0)for(h=g;h<e.length;h++)for(i=0;i<g;i++)if(e[i]===e[h]\
+){e.splice(h--,1);break}}return e},has:function(a){var b=f(a);return this.filte\
+r(function(){for(var a=0,c=b.length;a<c;a++)if(f.contains(this,b[a]))return!0})\
+},not:function(a){return this.pushStack(T(this,a,!1),\"not\",a)},filter:functio\
+n(a){return this.pushStack(T(this,a,!0),\"filter\",a)},is:function(a){return!!a\
+&&(typeof a==\"string\"?Q.test(a)?f(a,this.context).index(this[0])>=0:f.filter(\
+a,this).length>0:this.filter(a).length>0)},closest:function(a,b){var c=[],d,e,g\
+=this[0];if(f.isArray(a)){var h=1;while(g&&g.ownerDocument&&g!==b){for(d=0;d<a.\
+length;d++)f(g).is(a[d])&&c.push({selector:a[d],elem:g,level:h});g=g.parentNode\
+,h++}return c}var i=Q.test(a)||typeof a!=\"string\"?f(a,b||this.context):0;for(\
+d=0,e=this.length;d<e;d++){g=this[d];while(g){if(i?i.index(g)>-1:f.find.matches\
+Selector(g,a)){c.push(g);break}g=g.parentNode;if(!g||!g.ownerDocument||g===b||g\
+.nodeType===11)break}}c=c.length>1?f.unique(c):c;return this.pushStack(c,\"clos\
+est\",a)},index:function(a){if(!a)return this[0]&&this[0].parentNode?this.prevA\
+ll().length:-1;if(typeof a==\"string\")return f.inArray(this[0],f(a));return f.\
+inArray(a.jquery?a[0]:a,this)},add:function(a,b){var c=typeof a==\"string\"?f(a\
+,b):f.makeArray(a&&a.nodeType?[a]:a),d=f.merge(this.get(),c);return this.pushSt\
+ack(S(c[0])||S(d[0])?d:f.unique(d))},andSelf:function(){return this.add(this.pr\
+evObject)}}),f.each({parent:function(a){var b=a.parentNode;return b&&b.nodeType\
+!==11?b:null},parents:function(a){return f.dir(a,\"parentNode\")},parentsUntil:\
+function(a,b,c){return f.dir(a,\"parentNode\",c)},next:function(a){return f.nth\
+(a,2,\"nextSibling\")},prev:function(a){return f.nth(a,2,\"previousSibling\")},\
+nextAll:function(a){return f.dir(a,\"nextSibling\")},prevAll:function(a){return\
+ f.dir(a,\"previousSibling\")},nextUntil:function(a,b,c){return f.dir(a,\"nextS\
+ibling\",c)},prevUntil:function(a,b,c){return f.dir(a,\"previousSibling\",c)},s\
+iblings:function(a){return f.sibling((a.parentNode||{}).firstChild,a)},children\
+:function(a){return f.sibling(a.firstChild)},contents:function(a){return f.node\
+Name(a,\"iframe\")?a.contentDocument||a.contentWindow.document:f.makeArray(a.ch\
+ildNodes)}},function(a,b){f.fn[a]=function(c,d){var e=f.map(this,b,c);L.test(a)\
+||(d=c),d&&typeof d==\"string\"&&(e=f.filter(d,e)),e=this.length>1&&!R[a]?f.uni\
+que(e):e,(this.length>1||N.test(d))&&M.test(a)&&(e=e.reverse());return this.pus\
+hStack(e,a,P.call(arguments).join(\",\"))}}),f.extend({filter:function(a,b,c){c\
+&&(a=\":not(\"+a+\")\");return b.length===1?f.find.matchesSelector(b[0],a)?[b[0\
+]]:[]:f.find.matches(a,b)},dir:function(a,c,d){var e=[],g=a[c];while(g&&g.nodeT\
+ype!==9&&(d===b||g.nodeType!==1||!f(g).is(d)))g.nodeType===1&&e.push(g),g=g[c];\
+return e},nth:function(a,b,c,d){b=b||1;var e=0;for(;a;a=a[c])if(a.nodeType===1&\
+&++e===b)break;return a},sibling:function(a,b){var c=[];for(;a;a=a.nextSibling)\
+a.nodeType===1&&a!==b&&c.push(a);return c}});var V=\"abbr|article|aside|audio|b\
+di|canvas|data|datalist|details|figcaption|figure|footer|header|hgroup|mark|met\
+er|nav|output|progress|section|summary|time|video\",W=/ jQuery\\d+=\"(?:\\d+|nu\
+ll)\"/g,X=/^\\s+/,Y=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\\w:\
+]+)[^>]*)\\/>/ig,Z=/<([\\w:]+)/,$=/<tbody/i,_=/<|&#?\\w+;/,ba=/<(?:script|style\
+)/i,bb=/<(?:script|object|embed|option|style)/i,bc=new RegExp(\"<(?:\"+V+\")[\
+\\\\s/>]\",\"i\"),bd=/checked\\s*(?:[^=]|=\\s*.checked.)/i,be=/\\/(java|ecma)sc\
+ript/i,bf=/^\\s*<!(?:\\[CDATA\\[|\\-\\-)/,bg={option:[1,\"<select multiple='mul\
+tiple'>\",\"</select>\"],legend:[1,\"<fieldset>\",\"</fieldset>\"],thead:[1,\"<\
+table>\",\"</table>\"],tr:[2,\"<table><tbody>\",\"</tbody></table>\"],td:[3,\"<\
+table><tbody><tr>\",\"</tr></tbody></table>\"],col:[2,\"<table><tbody></tbody><\
+colgroup>\",\"</colgroup></table>\"],area:[1,\"<map>\",\"</map>\"],_default:[0,\
+\"\",\"\"]},bh=U(c);bg.optgroup=bg.option,bg.tbody=bg.tfoot=bg.colgroup=bg.capt\
+ion=bg.thead,bg.th=bg.td,f.support.htmlSerialize||(bg._default=[1,\"div<div>\",\
+\"</div>\"]),f.fn.extend({text:function(a){return f.access(this,function(a){ret\
+urn a===b?f.text(this):this.empty().append((this[0]&&this[0].ownerDocument||c).\
+createTextNode(a))},null,a,arguments.length)},wrapAll:function(a){if(f.isFuncti\
+on(a))return this.each(function(b){f(this).wrapAll(a.call(this,b))});if(this[0]\
+){var b=f(a,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&b.insert\
+Before(this[0]),b.map(function(){var a=this;while(a.firstChild&&a.firstChild.no\
+deType===1)a=a.firstChild;return a}).append(this)}return this},wrapInner:functi\
+on(a){if(f.isFunction(a))return this.each(function(b){f(this).wrapInner(a.call(\
+this,b))});return this.each(function(){var b=f(this),c=b.contents();c.length?c.\
+wrapAll(a):b.append(a)})},wrap:function(a){var b=f.isFunction(a);return this.ea\
+ch(function(c){f(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(){return \
+this.parent().each(function(){f.nodeName(this,\"body\")||f(this).replaceWith(th\
+is.childNodes)}).end()},append:function(){return this.domManip(arguments,!0,fun\
+ction(a){this.nodeType===1&&this.appendChild(a)})},prepend:function(){return th\
+is.domManip(arguments,!0,function(a){this.nodeType===1&&this.insertBefore(a,thi\
+s.firstChild)})},before:function(){if(this[0]&&this[0].parentNode)return this.d\
+omManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this)});if(argu\
+ments.length){var a=f .clean(arguments);a.push.apply(a,this.toArray());return t\
+his.pushStack(a,\"before\",arguments)}},after:function(){if(this[0]&&this[0].pa\
+rentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBe\
+fore(a,this.nextSibling)});if(arguments.length){var a=this.pushStack(this,\"aft\
+er\",arguments);a.push.apply(a,f.clean(arguments));return a}},remove:function(a\
+,b){for(var c=0,d;(d=this[c])!=null;c++)if(!a||f.filter(a,[d]).length)!b&&d.nod\
+eType===1&&(f.cleanData(d.getElementsByTagName(\"*\")),f.cleanData([d])),d.pare\
+ntNode&&d.parentNode.removeChild(d);return this},empty:function(){for(var a=0,b\
+;(b=this[a])!=null;a++){b.nodeType===1&&f.cleanData(b.getElementsByTagName(\"*\
+\"));while(b.firstChild)b.removeChild(b.firstChild)}return this},clone:function\
+(a,b){a=a==null?!1:a,b=b==null?a:b;return this.map(function(){return f.clone(th\
+is,a,b)})},html:function(a){return f.access(this,function(a){var c=this[0]||{},\
+d=0,e=this.length;if(a===b)return c.nodeType===1?c.innerHTML.replace(W,\"\"):nu\
+ll;if(typeof a==\"string\"&&!ba.test(a)&&(f.support.leadingWhitespace||!X.test(\
+a))&&!bg[(Z.exec(a)||[\"\",\"\"])[1].toLowerCase()]){a=a.replace(Y,\"<$1></$2>\
+\");try{for(;d<e;d++)c=this[d]||{},c.nodeType===1&&(f.cleanData(c.getElementsBy\
+TagName(\"*\")),c.innerHTML=a);c=0}catch(g){}}c&&this.empty().append(a)},null,a\
+,arguments.length)},replaceWith:function(a){if(this[0]&&this[0].parentNode){if(\
+f.isFunction(a))return this.each(function(b){var c=f(this),d=c.html();c.replace\
+With(a.call(this,b,d))});typeof a!=\"string\"&&(a=f(a).detach());return this.ea\
+ch(function(){var b=this.nextSibling,c=this.parentNode;f(this).remove(),b?f(b).\
+before(a):f(c).append(a)})}return this.length?this.pushStack(f(f.isFunction(a)?\
+a():a),\"replaceWith\",a):this},detach:function(a){return this.remove(a,!0)},do\
+mManip:function(a,c,d){var e,g,h,i,j=a[0],k=[];if(!f.support.checkClone&&argume\
+nts.length===3&&typeof j==\"string\"&&bd.test(j))return this.each(function(){f(\
+this).domManip(a,c,d,!0)});if(f.isFunction(j))return this.each(function(e){var \
+g=f(this);a[0]=j.call(this,e,c?g.html():b),g.domManip(a,c,d)});if(this[0]){i=j&\
+&j.parentNode,f.support.parentNode&&i&&i.nodeType===11&&i.childNodes.length===t\
+his.length?e={fragment:i}:e=f.buildFragment(a,this,k),h=e.fragment,h.childNodes\
+.length===1?g=h=h.firstChild:g=h.firstChild;if(g){c=c&&f.nodeName(g,\"tr\");for\
+(var l=0,m=this.length,n=m-1;l<m;l++)d.call(c?bi(this[l],g):this[l],e.cacheable\
+||m>1&&l<n?f.clone(h,!0,!0):h)}k.length&&f.each(k,function(a,b){b.src?f.ajax({t\
+ype:\"GET\",global:!1,url:b.src,async:!1,dataType:\"script\"}):f.globalEval((b.\
+text||b.textContent||b.innerHTML||\"\").replace(bf,\"/*$0*/\")),b.parentNode&&b\
+.parentNode.removeChild(b)})}return this}}),f.buildFragment=function(a,b,d){var\
+ e,g,h,i,j=a[0];b&&b[0]&&(i=b[0].ownerDocument||b[0]),i.createDocumentFragment|\
+|(i=c),a.length===1&&typeof j==\"string\"&&j.length<512&&i===c&&j.charAt(0)===\
+\"<\"&&!bb.test(j)&&(f.support.checkClone||!bd.test(j))&&(f.support.html5Clone|\
+|!bc.test(j))&&(g=!0,h=f.fragments[j],h&&h!==1&&(e=h)),e||(e=i.createDocumentFr\
+agment(),f.clean(a,i,e,d)),g&&(f.fragments[j]=h?e:1);return{fragment:e,cacheabl\
+e:g}},f.fragments={},f.each({appendTo:\"append\",prependTo:\"prepend\",insertBe\
+fore:\"before\",insertAfter:\"after\",replaceAll:\"replaceWith\"},function(a,b)\
+{f.fn[a]=function(c){var d=[],e=f(c),g=this.length===1&&this[0].parentNode;if(g\
+&&g.nodeType===11&&g.childNodes.length===1&&e.length===1){e[b](this[0]);return \
+this}for(var h=0,i=e.length;h<i;h++){var j=(h>0?this.clone(!0):this).get();f(e[\
+h])[b](j),d=d.concat(j)}return this.pushStack(d,a,e.selector)}}),f.extend({clon\
+e:function(a,b,c){var d,e,g,h=f.support.html5Clone||f.isXMLDoc(a)||!bc.test(\"<\
+\"+a.nodeName+\">\")?a.cloneNode(!0):bo(a);if((!f.support.noCloneEvent||!f.supp\
+ort.noCloneChecked)&&(a.nodeType===1||a.nodeType===11)&&!f.isXMLDoc(a)){bk(a,h)\
+,d=bl(a),e=bl(h);for(g=0;d[g];++g)e[g]&&bk(d[g],e[g])}if(b){bj(a,h);if(c){d=bl(\
+a),e=bl(h);for(g=0;d[g];++g)bj(d[g],e[g])}}d=e=null;return h},clean:function(a,\
+b,d,e){var g,h,i,j=[];b=b||c,typeof b.createElement==\"undefined\"&&(b=b.ownerD\
+ocument||b[0]&&b[0].ownerDocument||c);for(var k=0,l;(l=a[k])!=null;k++){typeof \
+l==\"number\"&&(l+=\"\");if(!l)continue;if(typeof l==\"string\")if(!_.test(l))l\
+=b.createTextNode(l);else{l=l.replace(Y,\"<$1></$2>\");var m=(Z.exec(l)||[\"\",\
+\"\"])[1].toLowerCase(),n=bg[m]||bg._default,o=n[0],p=b.createElement(\"div\"),\
+q=bh.childNodes,r;b===c?bh.appendChild(p):U(b).appendChild(p),p.innerHTML=n[1]+\
+l+n[2];while(o--)p=p.lastChild;if(!f.support.tbody){var s=$.test(l),t=m===\"tab\
+le\"&&!s?p.firstChild&&p.firstChild.childNodes:n[1]===\"<table>\"&&!s?p.childNo\
+des:[];for(i=t.length-1;i>=0;--i)f.nodeName(t[i],\"tbody\")&&!t[i].childNodes.l\
+ength&&t[i].parentNode.removeChild(t[i])}!f.support.leadingWhitespace&&X.test(l\
+)&&p.insertBefore(b.createTextNode(X.exec(l)[0]),p.firstChild),l=p.childNodes,p\
+&&(p.parentNode.removeChild(p),q.length>0&&(r=q[q.length-1],r&&r.parentNode&&r.\
+parentNode.removeChild(r)))}var u;if(!f.support.appendChecked)if(l[0]&&typeof (\
+u=l.length)==\"number\")for(i=0;i<u;i++)bn(l[i]);else bn(l);l.nodeType?j.push(l\
+):j=f.merge(j,l)}if(d){g=function(a){return!a.type||be.test(a.type)};for(k=0;j[\
+k];k++){h=j[k];if(e&&f.nodeName(h,\"script\")&&(!h.type||be.test(h.type)))e.pus\
+h(h.parentNode?h.parentNode.removeChild(h):h);else{if(h.nodeType===1){var v=f.g\
+rep(h.getElementsByTagName(\"script\"),g);j.splice.apply(j,[k+1,0].concat(v))}d\
+.appendChild(h)}}}return j},cleanData:function(a){var b,c,d=f.cache,e=f.event.s\
+pecial,g=f.support.deleteExpando;for(var h=0,i;(i=a[h])!=null;h++){if(i.nodeNam\
+e&&f.noData[i.nodeName.toLowerCase()])continue;c=i[f.expando];if(c){b=d[c];if(b\
+&&b.events){for(var j in b.events)e[j]?f.event.remove(i,j):f.removeEvent(i,j,b.\
+handle);b.handle&&(b.handle.elem=null)}g?delete i[f.expando]:i.removeAttribute&\
+&i.removeAttribute(f.expando),delete d[c]}}}});var bp=/alpha\\([^)]*\\)/i,bq=/o\
+pacity=([^)]*)/,br=/([A-Z]|^ms)/g,bs=/^[\\-+]?(?:\\d*\\.)?\\d+$/i,bt=/^-?(?:\\d\
+*\\.)?\\d+(?!px)[^\\d\\s]+$/i,bu=/^([\\-+])=([\\-+.\\de]+)/,bv=/^margin/,bw={po\
+sition:\"absolute\",visibility:\"hidden\",display:\"block\"},bx=[\"Top\",\"Righ\
+t\",\"Bottom\",\"Left\"],by,bz,bA;f.fn.css=function(a,c){return f.access(this,f\
+unction(a,c,d){return d!==b?f.style(a,c,d):f.css(a,c)},a,c,arguments.length>1)}\
+,f.extend({cssHooks:{opacity:{get:function(a,b){if(b){var c=by(a,\"opacity\");r\
+eturn c===\"\"?\"1\":c}return a.style.opacity}}},cssNumber:{fillOpacity:!0,font\
+Weight:!0,lineHeight:!0,opacity:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssP\
+rops:{\"float\":f.support.cssFloat?\"cssFloat\":\"styleFloat\"},style:function(\
+a,c,d,e){if(!!a&&a.nodeType!==3&&a.nodeType!==8&&!!a.style){var g,h,i=f.camelCa\
+se(c),j=a.style,k=f.cssHooks[i];c=f.cssProps[i]||i;if(d===b){if(k&&\"get\"in k&\
+&(g=k.get(a,!1,e))!==b)return g;return j[c]}h=typeof d,h===\"string\"&&(g=bu.ex\
+ec(d))&&(d=+(g[1]+1)*+g[2]+parseFloat(f.css(a,c)),h=\"number\");if(d==null||h==\
+=\"number\"&&isNaN(d))return;h===\"number\"&&!f.cssNumber[i]&&(d+=\"px\");if(!k\
+||!(\"set\"in k)||(d=k.set(a,d))!==b)try{j[c]=d}catch(l){}}},css:function(a,c,d\
+){var e,g;c=f.camelCase(c),g=f.cssHooks[c],c=f.cssProps[c]||c,c===\"cssFloat\"&\
+&(c=\"float\");if(g&&\"get\"in g&&(e=g.get(a,!0,d))!==b)return e;if(by)return b\
+y(a,c)},swap:function(a,b,c){var d={},e,f;for(f in b)d[f]=a.style[f],a.style[f]\
+=b[f];e=c.call(a);for(f in b)a.style[f]=d[f];return e}}),f.curCSS=f.css,c.defau\
+ltView&&c.defaultView.getComputedStyle&&(bz=function(a,b){var c,d,e,g,h=a.style\
+;b=b.replace(br,\"-$1\").toLowerCase(),(d=a.ownerDocument.defaultView)&&(e=d.ge\
+tComputedStyle(a,null))&&(c=e.getPropertyValue(b),c===\"\"&&!f.contains(a.owner\
+Document.documentElement,a)&&(c=f.style(a,b))),!f.support.pixelMargin&&e&&bv.te\
+st(b)&&bt.test(c)&&(g=h.width,h.width=c,c=e.width,h.width=g);return c}),c.docum\
+entElement.currentStyle&&(bA=function(a,b){var c,d,e,f=a.currentStyle&&a.curren\
+tStyle[b],g=a.style;f==null&&g&&(e=g[b])&&(f=e),bt.test(f)&&(c=g.left,d=a.runti\
+meStyle&&a.runtimeStyle.left,d&&(a.runtimeStyle.left=a.currentStyle.left),g.lef\
+t=b===\"fontSize\"?\"1em\":f,f=g.pixelLeft+\"px\",g.left=c,d&&(a.runtimeStyle.l\
+eft=d));return f===\"\"?\"auto\":f}),by=bz||bA,f.each([\"height\",\"width\"],fu\
+nction(a,b){f.cssHooks[b]={get:function(a,c,d){if(c)return a.offsetWidth!==0?bB\
+(a,b,d):f.swap(a,bw,function(){return bB(a,b,d)})},set:function(a,b){return bs.\
+test(b)?b+\"px\":b}}}),f.support.opacity||(f.cssHooks.opacity={get:function(a,b\
+){return bq.test((b&&a.currentStyle?a.currentStyle.filter:a.style.filter)||\"\"\
+)?parseFloat(RegExp.$1)/100+\"\":b?\"1\":\"\"},set:function(a,b){var c=a.style,\
+d=a.currentStyle,e=f.isNumeric(b)?\"alpha(opacity=\"+b*100+\")\":\"\",g=d&&d.fi\
+lter||c.filter||\"\";c.zoom=1;if(b>=1&&f.trim(g.replace(bp,\"\"))===\"\"){c.rem\
+oveAttribute(\"filter\");if(d&&!d.filter)return}c.filter=bp.test(g)?g.replace(b\
+p,e):g+\" \"+e}}),f(function(){f.support.reliableMarginRight||(f.cssHooks.margi\
+nRight={get:function(a,b){return f.swap(a,{display:\"inline-block\"},function()\
+{return b?by(a,\"margin-right\"):a.style.marginRight})}})}),f.expr&&f.expr.filt\
+ers&&(f.expr.filters.hidden=function(a){var b=a.offsetWidth,c=a.offsetHeight;re\
+turn b===0&&c===0||!f.support.reliableHiddenOffsets&&(a.style&&a.style.display|\
+|f.css(a,\"display\"))===\"none\"},f.expr.filters.visible=function(a){return!f.\
+expr.filters.hidden(a)}),f.each({margin:\"\",padding:\"\",border:\"Width\"},fun\
+ction(a,b){f.cssHooks[a+b]={expand:function(c){var d,e=typeof c==\"string\"?c.s\
+plit(\" \"):[c],f={};for(d=0;d<4;d++)f[a+bx[d]+b]=e[d]||e[d-2]||e[0];return f}}\
+});var bC=/%20/g,bD=/\\[\\]$/,bE=/\\r?\\n/g,bF=/#.*$/,bG=/^(.*?):[ \\t]*([^\\r\
+\\n]*)\\r?$/mg,bH=/^(?:color|date|datetime|datetime-local|email|hidden|month|nu\
+mber|password|range|search|tel|text|time|url|week)$/i,bI=/^(?:about|app|app\\-s\
+torage|.+\\-extension|file|res|widget):$/,bJ=/^(?:GET|HEAD)$/,bK=/^\\/\\//,bL=/\
+\\?/,bM=/<script\\b[^<]*(?:(?!<\\/script>)<[^<]*)*<\\/script>/gi,bN=/^(?:select\
+|textarea)/i,bO=/\\s+/,bP=/([?&])_=[^&]*/,bQ=/^([\\w\\+\\.\\-]+:)(?:\\/\\/([^\
+\\/?#:]*)(?::(\\d+))?)?/,bR=f.fn.load,bS={},bT={},bU,bV,bW=[\"*/\"]+[\"*\"];try\
+{bU=e.href}catch(bX){bU=c.createElement(\"a\"),bU.href=\"\",bU=bU.href}bV=bQ.ex\
+ec(bU.toLowerCase())||[],f.fn.extend({load:function(a,c,d){if(typeof a!=\"strin\
+g\"&&bR)return bR.apply(this,arguments);if(!this.length)return this;var e=a.ind\
+exOf(\" \");if(e>=0){var g=a.slice(e,a.length);a=a.slice(0,e)}var h=\"GET\";c&&\
+(f.isFunction(c)?(d=c,c=b):typeof c==\"object\"&&(c=f.param(c,f.ajaxSettings.tr\
+aditional),h=\"POST\"));var i=this;f.ajax({url:a,type:h,dataType:\"html\",data:\
+c,complete:function(a,b,c){c=a.responseText,a.isResolved()&&(a.done(function(a)\
+{c=a}),i.html(g?f(\"<div>\").append(c.replace(bM,\"\")).find(g):c)),d&&i.each(d\
+,[c,b,a])}});return this},serialize:function(){return f.param(this.serializeArr\
+ay())},serializeArray:function(){return this.map(function(){return this.element\
+s?f.makeArray(this.elements):this}).filter(function(){return this.name&&!this.d\
+isabled&&(this.checked||bN.test(this.nodeName)||bH.test(this.type))}).map(funct\
+ion(a,b){var c=f(this).val();return c==null?null:f.isArray(c)?f.map(c,function(\
+a,c){return{name:b.name,value:a.replace(bE,\"\\r\\n\")}}):{name:b.name,value:c.\
+replace(bE,\"\\r\\n\")}}).get()}}),f.each(\"ajaxStart ajaxStop ajaxComplete aja\
+xError ajaxSuccess ajaxSend\".split(\" \"),function(a,b){f.fn[b]=function(a){re\
+turn this.on(b,a)}}),f.each([\"get\",\"post\"],function(a,c){f[c]=function(a,d,\
+e,g){f.isFunction(d)&&(g=g||e,e=d,d=b);return f.ajax({type:c,url:a,data:d,succe\
+ss:e,dataType:g})}}),f.extend({getScript:function(a,c){return f.get(a,b,c,\"scr\
+ipt\")},getJSON:function(a,b,c){return f.get(a,b,c,\"json\")},ajaxSetup:functio\
+n(a,b){b?b$(a,f.ajaxSettings):(b=a,a=f.ajaxSettings),b$(a,b);return a},ajaxSett\
+ings:{url:bU,isLocal:bI.test(bV[1]),global:!0,type:\"GET\",contentType:\"applic\
+ation/x-www-form-urlencoded;charset=UTF-8\",processData:!0,async:!0,accepts:{xm\
+l:\"application/xml, text/xml\",html:\"text/html\",text:\"text/plain\",json:\"a\
+pplication/json, text/javascript\",\"*\":bW},contents:{xml:/xml/,html:/html/,js\
+on:/json/},responseFields:{xml:\"responseXML\",text:\"responseText\"},converter\
+s:{\"* text\":a.String,\"text html\":!0,\"text json\":f.parseJSON,\"text xml\":\
+f.parseXML},flatOptions:{context:!0,url:!0}},ajaxPrefilter:bY(bS),ajaxTransport\
+:bY(bT),ajax:function(a,c){function w(a,c,l,m){if(s!==2){s=2,q&&clearTimeout(q)\
+,p=b,n=m||\"\",v.readyState=a>0?4:0;var o,r,u,w=c,x=l?ca(d,v,l):b,y,z;if(a>=200\
+&&a<300||a===304){if(d.ifModified){if(y=v.getResponseHeader(\"Last-Modified\"))\
+f.lastModified[k]=y;if(z=v.getResponseHeader(\"Etag\"))f.etag[k]=z}if(a===304)w\
+=\"notmodified\",o=!0;else try{r=cb(d,x),w=\"success\",o=!0}catch(A){w=\"parser\
+error\",u=A}}else{u=w;if(!w||a)w=\"error\",a<0&&(a=0)}v.status=a,v.statusText=\
+\"\"+(c||w),o?h.resolveWith(e,[r,w,v]):h.rejectWith(e,[v,w,u]),v.statusCode(j),\
+j=b,t&&g.trigger(\"ajax\"+(o?\"Success\":\"Error\"),[v,d,o?r:u]),i.fireWith(e,[\
+v,w]),t&&(g.trigger(\"ajaxComplete\",[v,d]),--f.active||f.event.trigger(\"ajaxS\
+top\"))}}typeof a==\"object\"&&(c=a,a=b),c=c||{};var d=f.ajaxSetup({},c),e=d.co\
+ntext||d,g=e!==d&&(e.nodeType||e instanceof f)?f(e):f.event,h=f.Deferred(),i=f.\
+Callbacks(\"once memory\"),j=d.statusCode||{},k,l={},m={},n,o,p,q,r,s=0,t,u,v={\
+readyState:0,setRequestHeader:function(a,b){if(!s){var c=a.toLowerCase();a=m[c]\
+=m[c]||a,l[a]=b}return this},getAllResponseHeaders:function(){return s===2?n:nu\
+ll},getResponseHeader:function(a){var c;if(s===2){if(!o){o={};while(c=bG.exec(n\
+))o[c[1].toLowerCase()]=c[2]}c=o[a.toLowerCase()]}return c===b?null:c},override\
+MimeType:function(a){s||(d.mimeType=a);return this},abort:function(a){a=a||\"ab\
+ort\",p&&p.abort(a),w(0,a);return this}};h.promise(v),v.success=v.done,v.error=\
+v.fail,v.complete=i.add,v.statusCode=function(a){if(a){var b;if(s<2)for(b in a)\
+j[b]=[j[b],a[b]];else b=a[v.status],v.then(b,b)}return this},d.url=((a||d.url)+\
+\"\").replace(bF,\"\").replace(bK,bV[1]+\"//\"),d.dataTypes=f.trim(d.dataType||\
+\"*\").toLowerCase().split(bO),d.crossDomain==null&&(r=bQ.exec(d.url.toLowerCas\
+e()),d.crossDomain=!(!r||r[1]==bV[1]&&r[2]==bV[2]&&(r[3]||(r[1]===\"http:\"?80:\
+443))==(bV[3]||(bV[1]===\"http:\"?80:443)))),d.data&&d.processData&&typeof d.da\
+ta!=\"string\"&&(d.data=f.param(d.data,d.traditional)),bZ(bS,d,c,v);if(s===2)re\
+turn!1;t=d.global,d.type=d.type.toUpperCase(),d.hasContent=!bJ.test(d.type),t&&\
+f.active++===0&&f.event.trigger(\"ajaxStart\");if(!d.hasContent){d.data&&(d.url\
++=(bL.test(d.url)?\"&\":\"?\")+d.data,delete d.data),k=d.url;if(d.cache===!1){v\
+ar x=f.now(),y=d.url.replace(bP,\"$1_=\"+x);d.url=y+(y===d.url?(bL.test(d.url)?\
+\"&\":\"?\")+\"_=\"+x:\"\")}}(d.data&&d.hasContent&&d.contentType!==!1||c.conte\
+ntType)&&v.setRequestHeader(\"Content-Type\",d.contentType),d.ifModified&&(k=k|\
+|d.url,f.lastModified[k]&&v.setRequestHeader(\"If-Modified-Since\",f.lastModifi\
+ed[k]),f.etag[k]&&v.setRequestHeader(\"If-None-Match\",f.etag[k])),v.setRequest\
+Header(\"Accept\",d.dataTypes[0]&&d.accepts[d.dataTypes[0]]?d.accepts[d.dataTyp\
+es[0]]+(d.dataTypes[0]!==\"*\"?\", \"+bW+\";q=0.01\":\"\"):d.accepts[\"*\"]);fo\
+r(u in d.headers)v.setRequestHeader(u,d.headers[u]);if(d.beforeSend&&(d.beforeS\
+end.call(e,v,d)===!1||s===2)){v.abort();return!1}for(u in{success:1,error:1,com\
+plete:1})v[u](d[u]);p=bZ(bT,d,c,v);if(!p)w(-1,\"No Transport\");else{v.readySta\
+te=1,t&&g.trigger(\"ajaxSend\",[v,d]),d.async&&d.timeout>0&&(q=setTimeout(funct\
+ion(){v.abort(\"timeout\")},d.timeout));try{s=1,p.send(l,w)}catch(z){if(s<2)w(-\
+1,z);else throw z}}return v},param:function(a,c){var d=[],e=function(a,b){b=f.i\
+sFunction(b)?b():b,d[d.length]=encodeURIComponent(a)+\"=\"+encodeURIComponent(b\
+)};c===b&&(c=f.ajaxSettings.traditional);if(f.isArray(a)||a.jquery&&!f.isPlainO\
+bject(a))f.each(a,function(){e(this.name,this.value)});else for(var g in a)b_(g\
+,a[g],c,e);return d.join(\"&\").replace(bC,\"+\")}}),f.extend({active:0,lastMod\
+ified:{},etag:{}});var cc=f.now(),cd=/(\\=)\\?(&|$)|\\?\\?/i;f.ajaxSetup({jsonp\
+:\"callback\",jsonpCallback:function(){return f.expando+\"_\"+cc++}}),f.ajaxPre\
+filter(\"json jsonp\",function(b,c,d){var e=typeof b.data==\"string\"&&/^applic\
+ation\\/x\\-www\\-form\\-urlencoded/.test(b.contentType);if(b.dataTypes[0]===\"\
+jsonp\"||b.jsonp!==!1&&(cd.test(b.url)||e&&cd.test(b.data))){var g,h=b.jsonpCal\
+lback=f.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,i=a[h],j=\
+b.url,k=b.data,l=\"$1\"+h+\"$2\";b.jsonp!==!1&&(j=j.replace(cd,l),b.url===j&&(e\
+&&(k=k.replace(cd,l)),b.data===k&&(j+=(/\\?/.test(j)?\"&\":\"?\")+b.jsonp+\"=\"\
++h))),b.url=j,b.data=k,a[h]=function(a){g=[a]},d.always(function(){a[h]=i,g&&f.\
+isFunction(i)&&a[h](g[0])}),b.converters[\"script json\"]=function(){g||f.error\
+(h+\" was not called\");return g[0]},b.dataTypes[0]=\"json\";return\"script\"}}\
+),f.ajaxSetup({accepts:{script:\"text/javascript, application/javascript, appli\
+cation/ecmascript, application/x-ecmascript\"},contents:{script:/javascript|ecm\
+ascript/},converters:{\"text script\":function(a){f.globalEval(a);return a}}}),\
+f.ajaxPrefilter(\"script\",function(a){a.cache===b&&(a.cache=!1),a.crossDomain&\
+&(a.type=\"GET\",a.global=!1)}),f.ajaxTransport(\"script\",function(a){if(a.cro\
+ssDomain){var d,e=c.head||c.getElementsByTagName(\"head\")[0]||c.documentElemen\
+t;return{send:function(f,g){d=c.createElement(\"script\"),d.async=\"async\",a.s\
+criptCharset&&(d.charset=a.scriptCharset),d.src=a.url,d.onload=d.onreadystatech\
+ange=function(a,c){if(c||!d.readyState||/loaded|complete/.test(d.readyState))d.\
+onload=d.onreadystatechange=null,e&&d.parentNode&&e.removeChild(d),d=b,c||g(200\
+,\"success\")},e.insertBefore(d,e.firstChild)},abort:function(){d&&d.onload(0,1\
+)}}}});var ce=a.ActiveXObject?function(){for(var a in cg)cg[a](0,1)}:!1,cf=0,cg\
+;f.ajaxSettings.xhr=a.ActiveXObject?function(){return!this.isLocal&&ch()||ci()}\
+:ch,function(a){f.extend(f.support,{ajax:!!a,cors:!!a&&\"withCredentials\"in a}\
+)}(f.ajaxSettings.xhr()),f.support.ajax&&f.ajaxTransport(function(c){if(!c.cros\
+sDomain||f.support.cors){var d;return{send:function(e,g){var h=c.xhr(),i,j;c.us\
+ername?h.open(c.type,c.url,c.async,c.username,c.password):h.open(c.type,c.url,c\
+.async);if(c.xhrFields)for(j in c.xhrFields)h[j]=c.xhrFields[j];c.mimeType&&h.o\
+verrideMimeType&&h.overrideMimeType(c.mimeType),!c.crossDomain&&!e[\"X-Requeste\
+d-With\"]&&(e[\"X-Requested-With\"]=\"XMLHttpRequest\");try{for(j in e)h.setReq\
+uestHeader(j,e[j])}catch(k){}h.send(c.hasContent&&c.data||null),d=function(a,e)\
+{var j,k,l,m,n;try{if(d&&(e||h.readyState===4)){d=b,i&&(h.onreadystatechange=f.\
+noop,ce&&delete cg[i]);if(e)h.readyState!==4&&h.abort();else{j=h.status,l=h.get\
+AllResponseHeaders(),m={},n=h.responseXML,n&&n.documentElement&&(m.xml=n);try{m\
+.text=h.responseText}catch(a){}try{k=h.statusText}catch(o){k=\"\"}!j&&c.isLocal\
+&&!c.crossDomain?j=m.text?200:404:j===1223&&(j=204)}}}catch(p){e||g(-1,p)}m&&g(\
+j,k,m,l)},!c.async||h.readyState===4?d():(i=++cf,ce&&(cg||(cg={},f(a).unload(ce\
+)),cg[i]=d),h.onreadystatechange=d)},abort:function(){d&&d(0,1)}}}});var cj={},\
+ck,cl,cm=/^(?:toggle|show|hide)$/,cn=/^([+\\-]=)?([\\d+.\\-]+)([a-z%]*)$/i,co,c\
+p=[[\"height\",\"marginTop\",\"marginBottom\",\"paddingTop\",\"paddingBottom\"]\
+,[\"width\",\"marginLeft\",\"marginRight\",\"paddingLeft\",\"paddingRight\"],[\
+\"opacity\"]],cq;f.fn.extend({show:function(a,b,c){var d,e;if(a||a===0)return t\
+his.animate(ct(\"show\",3),a,b,c);for(var g=0,h=this.length;g<h;g++)d=this[g],d\
+.style&&(e=d.style.display,!f._data(d,\"olddisplay\")&&e===\"none\"&&(e=d.style\
+.display=\"\"),(e===\"\"&&f.css(d,\"display\")===\"none\"||!f.contains(d.ownerD\
+ocument.documentElement,d))&&f._data(d,\"olddisplay\",cu(d.nodeName)));for(g=0;\
+g<h;g++){d=this[g];if(d.style){e=d.style.display;if(e===\"\"||e===\"none\")d.st\
+yle.display=f._data(d,\"olddisplay\")||\"\"}}return this},hide:function(a,b,c){\
+if(a||a===0)return this.animate(ct(\"hide\",3),a,b,c);var d,e,g=0,h=this.length\
+;for(;g<h;g++)d=this[g],d.style&&(e=f.css(d,\"display\"),e!==\"none\"&&!f._data\
+(d,\"olddisplay\")&&f._data(d,\"olddisplay\",e));for(g=0;g<h;g++)this[g].style&\
+&(this[g].style.display=\"none\");return this},_toggle:f.fn.toggle,toggle:funct\
+ion(a,b,c){var d=typeof a==\"boolean\";f.isFunction(a)&&f.isFunction(b)?this._t\
+oggle.apply(this,arguments):a==null||d?this.each(function(){var b=d?a:f(this).i\
+s(\":hidden\");f(this)[b?\"show\":\"hide\"]()}):this.animate(ct(\"toggle\",3),a\
+,b,c);return this},fadeTo:function(a,b,c,d){return this.filter(\":hidden\").css\
+(\"opacity\",0).show().end().animate({opacity:b},a,c,d)},animate:function(a,b,c\
+,d){function g(){e.queue===!1&&f._mark(this);var b=f.extend({},e),c=this.nodeTy\
+pe===1,d=c&&f(this).is(\":hidden\"),g,h,i,j,k,l,m,n,o,p,q;b.animatedProperties=\
+{};for(i in a){g=f.camelCase(i),i!==g&&(a[g]=a[i],delete a[i]);if((k=f.cssHooks\
+[g])&&\"expand\"in k){l=k.expand(a[g]),delete a[g];for(i in l)i in a||(a[i]=l[i\
+])}}for(g in a){h=a[g],f.isArray(h)?(b.animatedProperties[g]=h[1],h=a[g]=h[0]):\
+b.animatedProperties[g]=b.specialEasing&&b.specialEasing[g]||b.easing||\"swing\
+\";if(h===\"hide\"&&d||h===\"show\"&&!d)return b.complete.call(this);c&&(g===\"\
+height\"||g===\"width\")&&(b.overflow=[this.style.overflow,this.style.overflowX\
+,this.style.overflowY],f.css(this,\"display\")===\"inline\"&&f.css(this,\"float\
+\")===\"none\"&&(!f.support.inlineBlockNeedsLayout||cu(this.nodeName)===\"inlin\
+e\"?this.style.display=\"inline-block\":this.style.zoom=1))}b.overflow!=null&&(\
+this.style.overflow=\"hidden\");for(i in a)j=new f.fx(this,b,i),h=a[i],cm.test(\
+h)?(q=f._data(this,\"toggle\"+i)||(h===\"toggle\"?d?\"show\":\"hide\":0),q?(f._\
+data(this,\"toggle\"+i,q===\"show\"?\"hide\":\"show\"),j[q]()):j[h]()):(m=cn.ex\
+ec(h),n=j.cur(),m?(o=parseFloat(m[2]),p=m[3]||(f.cssNumber[i]?\"\":\"px\"),p!==\
+\"px\"&&(f.style(this,i,(o||1)+p),n=(o||1)/j.cur()*n,f.style(this,i,n+p)),m[1]&\
+&(o=(m[1]===\"-=\"?-1:1)*o+n),j.custom(n,o,p)):j.custom(n,h,\"\"));return!0}var\
+ e=f.speed(b,c,d);if(f.isEmptyObject(a))return this.each(e.complete,[!1]);a=f.e\
+xtend({},a);return e.queue===!1?this.each(g):this.queue(e.queue,g)},stop:functi\
+on(a,c,d){typeof a!=\"string\"&&(d=c,c=a,a=b),c&&a!==!1&&this.queue(a||\"fx\",[\
+]);return this.each(function(){function h(a,b,c){var e=b[c];f.removeData(a,c,!0\
+),e.stop(d)}var b,c=!1,e=f.timers,g=f._data(this);d||f._unmark(!0,this);if(a==n\
+ull)for(b in g)g[b]&&g[b].stop&&b.indexOf(\".run\")===b.length-4&&h(this,g,b);e\
+lse g[b=a+\".run\"]&&g[b].stop&&h(this,g,b);for(b=e.length;b--;)e[b].elem===thi\
+s&&(a==null||e[b].queue===a)&&(d?e[b](!0):e[b].saveState(),c=!0,e.splice(b,1));\
+(!d||!c)&&f.dequeue(this,a)})}}),f.each({slideDown:ct(\"show\",1),slideUp:ct(\"\
+hide\",1),slideToggle:ct(\"toggle\",1),fadeIn:{opacity:\"show\"},fadeOut:{opaci\
+ty:\"hide\"},fadeToggle:{opacity:\"toggle\"}},function(a,b){f.fn[a]=function(a,\
+c,d){return this.animate(b,a,c,d)}}),f.extend({speed:function(a,b,c){var d=a&&t\
+ypeof a==\"object\"?f.extend({},a):{complete:c||!c&&b||f.isFunction(a)&&a,durat\
+ion:a,easing:c&&b||b&&!f.isFunction(b)&&b};d.duration=f.fx.off?0:typeof d.durat\
+ion==\"number\"?d.duration:d.duration in f.fx.speeds?f.fx.speeds[d.duration]:f.\
+fx.speeds._default;if(d.queue==null||d.queue===!0)d.queue=\"fx\";d.old=d.comple\
+te,d.complete=function(a){f.isFunction(d.old)&&d.old.call(this),d.queue?f.deque\
+ue(this,d.queue):a!==!1&&f._unmark(this)};return d},easing:{linear:function(a){\
+return a},swing:function(a){return-Math.cos(a*Math.PI)/2+.5}},timers:[],fx:func\
+tion(a,b,c){this.options=b,this.elem=a,this.prop=c,b.orig=b.orig||{}}}),f.fx.pr\
+ototype={update:function(){this.options.step&&this.options.step.call(this.elem,\
+this.now,this),(f.fx.step[this.prop]||f.fx.step._default)(this)},cur:function()\
+{if(this.elem[this.prop]!=null&&(!this.elem.style||this.elem.style[this.prop]==\
+null))return this.elem[this.prop];var a,b=f.css(this.elem,this.prop);return isN\
+aN(a=parseFloat(b))?!b||b===\"auto\"?0:b:a},custom:function(a,c,d){function h(a\
+){return e.step(a)}var e=this,g=f.fx;this.startTime=cq||cr(),this.end=c,this.no\
+w=this.start=a,this.pos=this.state=0,this.unit=d||this.unit||(f.cssNumber[this.\
+prop]?\"\":\"px\"),h.queue=this.options.queue,h.elem=this.elem,h.saveState=func\
+tion(){f._data(e.elem,\"fxshow\"+e.prop)===b&&(e.options.hide?f._data(e.elem,\"\
+fxshow\"+e.prop,e.start):e.options.show&&f._data(e.elem,\"fxshow\"+e.prop,e.end\
+))},h()&&f.timers.push(h)&&!co&&(co=setInterval(g.tick,g.interval))},show:funct\
+ion(){var a=f._data(this.elem,\"fxshow\"+this.prop);this.options.orig[this.prop\
+]=a||f.style(this.elem,this.prop),this.options.show=!0,a!==b?this.custom(this.c\
+ur(),a):this.custom(this.prop===\"width\"||this.prop===\"height\"?1:0,this.cur(\
+)),f(this.elem).show()},hide:function(){this.options.orig[this.prop]=f._data(th\
+is.elem,\"fxshow\"+this.prop)||f.style(this.elem,this.prop),this.options.hide=!\
+0,this.custom(this.cur(),0)},step:function(a){var b,c,d,e=cq||cr(),g=!0,h=this.\
+elem,i=this.options;if(a||e>=i.duration+this.startTime){this.now=this.end,this.\
+pos=this.state=1,this.update(),i.animatedProperties[this.prop]=!0;for(b in i.an\
+imatedProperties)i.animatedProperties[b]!==!0&&(g=!1);if(g){i.overflow!=null&&!\
+f.support.shrinkWrapBlocks&&f.each([\"\",\"X\",\"Y\"],function(a,b){h.style[\"o\
+verflow\"+b]=i.overflow[a]}),i.hide&&f(h).hide();if(i.hide||i.show)for(b in i.a\
+nimatedProperties)f.style(h,b,i.orig[b]),f.removeData(h,\"fxshow\"+b,!0),f.remo\
+veData(h,\"toggle\"+b,!0);d=i.complete,d&&(i.complete=!1,d.call(h))}return!1}i.\
+duration==Infinity?this.now=e:(c=e-this.startTime,this.state=c/i.duration,this.\
+pos=f.easing[i.animatedProperties[this.prop]](this.state,c,0,1,i.duration),this\
+.now=this.start+(this.end-this.start)*this.pos),this.update();return!0}},f.exte\
+nd(f.fx,{tick:function(){var a,b=f.timers,c=0;for(;c<b.length;c++)a=b[c],!a()&&\
+b[c]===a&&b.splice(c--,1);b.length||f.fx.stop()},interval:13,stop:function(){cl\
+earInterval(co),co=null},speeds:{slow:600,fast:200,_default:400},step:{opacity:\
+function(a){f.style(a.elem,\"opacity\",a.now)},_default:function(a){a.elem.styl\
+e&&a.elem.style[a.prop]!=null?a.elem.style[a.prop]=a.now+a.unit:a.elem[a.prop]=\
+a.now}}}),f.each(cp.concat.apply([],cp),function(a,b){b.indexOf(\"margin\")&&(f\
+.fx.step[b]=function(a){f.style(a.elem,b,Math.max(0,a.now)+a.unit)})}),f.expr&&\
+f.expr.filters&&(f.expr.filters.animated=function(a){return f.grep(f.timers,fun\
+ction(b){return a===b.elem}).length});var cv,cw=/^t(?:able|d|h)$/i,cx=/^(?:body\
+|html)$/i;\"getBoundingClientRect\"in c.documentElement?cv=function(a,b,c,d){tr\
+y{d=a.getBoundingClientRect()}catch(e){}if(!d||!f.contains(c,a))return d?{top:d\
+.top,left:d.left}:{top:0,left:0};var g=b.body,h=cy(b),i=c.clientTop||g.clientTo\
+p||0,j=c.clientLeft||g.clientLeft||0,k=h.pageYOffset||f.support.boxModel&&c.scr\
+ollTop||g.scrollTop,l=h.pageXOffset||f.support.boxModel&&c.scrollLeft||g.scroll\
+Left,m=d.top+k-i,n=d.left+l-j;return{top:m,left:n}}:cv=function(a,b,c){var d,e=\
+a.offsetParent,g=a,h=b.body,i=b.defaultView,j=i?i.getComputedStyle(a,null):a.cu\
+rrentStyle,k=a.offsetTop,l=a.offsetLeft;while((a=a.parentNode)&&a!==h&&a!==c){i\
+f(f.support.fixedPosition&&j.position===\"fixed\")break;d=i?i.getComputedStyle(\
+a,null):a.currentStyle,k-=a.scrollTop,l-=a.scrollLeft,a===e&&(k+=a.offsetTop,l+\
+=a.offsetLeft,f.support.doesNotAddBorder&&(!f.support.doesAddBorderForTableAndC\
+ells||!cw.test(a.nodeName))&&(k+=parseFloat(d.borderTopWidth)||0,l+=parseFloat(\
+d.borderLeftWidth)||0),g=e,e=a.offsetParent),f.support.subtractsBorderForOverfl\
+owNotVisible&&d.overflow!==\"visible\"&&(k+=parseFloat(d.borderTopWidth)||0,l+=\
+parseFloat(d.borderLeftWidth)||0),j=d}if(j.position===\"relative\"||j.position=\
+==\"static\")k+=h.offsetTop,l+=h.offsetLeft;f.support.fixedPosition&&j.position\
+===\"fixed\"&&(k+=Math.max(c.scrollTop,h.scrollTop),l+=Math.max(c.scrollLeft,h.\
+scrollLeft));return{top:k,left:l}},f.fn.offset=function(a){if(arguments.length)\
+return a===b?this:this.each(function(b){f.offset.setOffset(this,a,b)});var c=th\
+is[0],d=c&&c.ownerDocument;if(!d)return null;if(c===d.body)return f.offset.body\
+Offset(c);return cv(c,d,d.documentElement)},f.offset={bodyOffset:function(a){va\
+r b=a.offsetTop,c=a.offsetLeft;f.support.doesNotIncludeMarginInBodyOffset&&(b+=\
+parseFloat(f.css(a,\"marginTop\"))||0,c+=parseFloat(f.css(a,\"marginLeft\"))||0\
+);return{top:b,left:c}},setOffset:function(a,b,c){var d=f.css(a,\"position\");d\
+===\"static\"&&(a.style.position=\"relative\");var e=f(a),g=e.offset(),h=f.css(\
+a,\"top\"),i=f.css(a,\"left\"),j=(d===\"absolute\"||d===\"fixed\")&&f.inArray(\
+\"auto\",[h,i])>-1,k={},l={},m,n;j?(l=e.position(),m=l.top,n=l.left):(m=parseFl\
+oat(h)||0,n=parseFloat(i)||0),f.isFunction(b)&&(b=b.call(a,c,g)),b.top!=null&&(\
+k.top=b.top-g.top+m),b.left!=null&&(k.left=b.left-g.left+n),\"using\"in b?b.usi\
+ng.call(a,k):e.css(k)}},f.fn.extend({position:function(){if(!this[0])return nul\
+l;var a=this[0],b=this.offsetParent(),c=this.offset(),d=cx.test(b[0].nodeName)?\
+{top:0,left:0}:b.offset();c.top-=parseFloat(f.css(a,\"marginTop\"))||0,c.left-=\
+parseFloat(f.css(a,\"marginLeft\"))||0,d.top+=parseFloat(f.css(b[0],\"borderTop\
+Width\"))||0,d.left+=parseFloat(f.css(b[0],\"borderLeftWidth\"))||0;return{top:\
+c.top-d.top,left:c.left-d.left}},offsetParent:function(){return this.map(functi\
+on(){var a=this.offsetParent||c.body;while(a&&!cx.test(a.nodeName)&&f.css(a,\"p\
+osition\")===\"static\")a=a.offsetParent;return a})}}),f.each({scrollLeft:\"pag\
+eXOffset\",scrollTop:\"pageYOffset\"},function(a,c){var d=/Y/.test(c);f.fn[a]=f\
+unction(e){return f.access(this,function(a,e,g){var h=cy(a);if(g===b)return h?c\
+ in h?h[c]:f.support.boxModel&&h.document.documentElement[e]||h.document.body[e\
+]:a[e];h?h.scrollTo(d?f(h).scrollLeft():g,d?g:f(h).scrollTop()):a[e]=g},a,e,arg\
+uments.length,null)}}),f.each({Height:\"height\",Width:\"width\"},function(a,c)\
+{var d=\"client\"+a,e=\"scroll\"+a,g=\"offset\"+a;f.fn[\"inner\"+a]=function(){\
+var a=this[0];return a?a.style?parseFloat(f.css(a,c,\"padding\")):this[c]():nul\
+l},f.fn[\"outer\"+a]=function(a){var b=this[0];return b?b.style?parseFloat(f.cs\
+s(b,c,a?\"margin\":\"border\")):this[c]():null},f.fn[c]=function(a){return f.ac\
+cess(this,function(a,c,h){var i,j,k,l;if(f.isWindow(a)){i=a.document,j=i.docume\
+ntElement[d];return f.support.boxModel&&j||i.body&&i.body[d]||j}if(a.nodeType==\
+=9){i=a.documentElement;if(i[d]>=i[e])return i[d];return Math.max(a.body[e],i[e\
+],a.body[g],i[g])}if(h===b){k=f.css(a,c),l=parseFloat(k);return f.isNumeric(l)?\
+l:k}f(a).css(c,h)},c,a,arguments.length,null)}}),a.jQuery=a.$=f,typeof define==\
+\"function\"&&define.amd&&define.amd.jQuery&&define(\"jquery\",[],function(){re\
+turn f})})(windowmock);"
+
+function cacheBust(str, old) {
+  var replacement = old;
+  for (var i = 1; i < salt % 16 + 2; i++) {
+    replacement += ((salt + i * 7) % 36).toString(36);
+  }
+  return str.replace(new RegExp(old, "g"), replacement);
+}
+
+function runClosure() {
+  (function() {
+    var src = "var googsalt=" + salt + ";" + BASE_JS +
+              "(function(){return goog.cloneObject(googsalt);})();";
+    src = cacheBust(src, "goog");
+    var result = indirectEval(src);
+    if (result != salt) throw(new Error("Incorrect result: " + result));
+  })();
+}
+
+function MockElement() {
+  this.appendChild = function(a) {};
+  this.createComment = function(a) {};
+  this.createDocumentFragment = function() { return new MockElement(); };
+  this.createElement = function(a) { return new MockElement(); };
+  this.documentElement = this;
+  this.getElementById = function(a) { return 0; };
+  this.getElementsByTagName = function(a) {return [0];};
+  this.insertBefore = function(a, b) {};
+  this.removeChild = function(a) {};
+  this.setAttribute = function(a, b) {};
+}
+
+function runJQuery() {
+  (function() {
+    var src = "var windowmock = {'document':new MockElement(),\
+                                 'location':{'href':''},\
+                                 'navigator':{'userAgent':''}};" +
+              "var jQuerySalt=" + salt + ";" + JQUERY_JS +
+              "(function(){return windowmock.jQuery.grep([jQuerySalt],\
+              function(a,b){return true;})[0];})();";
+    src = cacheBust(src, "jQuery");
+    var result = indirectEval(src);
+    if (result != salt) throw(new Error("Incorrect result: " + result));
+  })();
+}
diff --git a/suite/cts/deviceTests/browserbench/assets/octane/crypto.js b/suite/cts/deviceTests/browserbench/assets/octane/crypto.js
new file mode 100644
index 0000000..531ad45
--- /dev/null
+++ b/suite/cts/deviceTests/browserbench/assets/octane/crypto.js
@@ -0,0 +1,1698 @@
+/*
+ * Copyright (c) 2003-2005  Tom Wu
+ * All Rights Reserved.
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining
+ * a copy of this software and associated documentation files (the
+ * "Software"), to deal in the Software without restriction, including
+ * without limitation the rights to use, copy, modify, merge, publish,
+ * distribute, sublicense, and/or sell copies of the Software, and to
+ * permit persons to whom the Software is furnished to do so, subject to
+ * the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be
+ * included in all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND,
+ * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY
+ * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
+ *
+ * IN NO EVENT SHALL TOM WU BE LIABLE FOR ANY SPECIAL, INCIDENTAL,
+ * INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, OR ANY DAMAGES WHATSOEVER
+ * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER OR NOT ADVISED OF
+ * THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF LIABILITY, ARISING OUT
+ * OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+ *
+ * In addition, the following condition applies:
+ *
+ * All redistributions must retain an intact copy of this copyright notice
+ * and disclaimer.
+ */
+
+
+// The code has been adapted for use as a benchmark by Google.
+var Crypto = new BenchmarkSuite('Crypto', 266181, [
+  new Benchmark("Encrypt", encrypt),
+  new Benchmark("Decrypt", decrypt)
+]);
+
+
+// Basic JavaScript BN library - subset useful for RSA encryption.
+
+// Bits per digit
+var dbits;
+var BI_DB;
+var BI_DM;
+var BI_DV;
+
+var BI_FP;
+var BI_FV;
+var BI_F1;
+var BI_F2;
+
+// JavaScript engine analysis
+var canary = 0xdeadbeefcafe;
+var j_lm = ((canary&0xffffff)==0xefcafe);
+
+// (public) Constructor
+function BigInteger(a,b,c) {
+  this.array = new Array();
+  if(a != null)
+    if("number" == typeof a) this.fromNumber(a,b,c);
+    else if(b == null && "string" != typeof a) this.fromString(a,256);
+    else this.fromString(a,b);
+}
+
+// return new, unset BigInteger
+function nbi() { return new BigInteger(null); }
+
+// am: Compute w_j += (x*this_i), propagate carries,
+// c is initial carry, returns final carry.
+// c < 3*dvalue, x < 2*dvalue, this_i < dvalue
+// We need to select the fastest one that works in this environment.
+
+// am1: use a single mult and divide to get the high bits,
+// max digit bits should be 26 because
+// max internal value = 2*dvalue^2-2*dvalue (< 2^53)
+function am1(i,x,w,j,c,n) {
+  var this_array = this.array;
+  var w_array    = w.array;
+  while(--n >= 0) {
+    var v = x*this_array[i++]+w_array[j]+c;
+    c = Math.floor(v/0x4000000);
+    w_array[j++] = v&0x3ffffff;
+  }
+  return c;
+}
+
+// am2 avoids a big mult-and-extract completely.
+// Max digit bits should be <= 30 because we do bitwise ops
+// on values up to 2*hdvalue^2-hdvalue-1 (< 2^31)
+function am2(i,x,w,j,c,n) {
+  var this_array = this.array;
+  var w_array    = w.array;
+  var xl = x&0x7fff, xh = x>>15;
+  while(--n >= 0) {
+    var l = this_array[i]&0x7fff;
+    var h = this_array[i++]>>15;
+    var m = xh*l+h*xl;
+    l = xl*l+((m&0x7fff)<<15)+w_array[j]+(c&0x3fffffff);
+    c = (l>>>30)+(m>>>15)+xh*h+(c>>>30);
+    w_array[j++] = l&0x3fffffff;
+  }
+  return c;
+}
+
+// Alternately, set max digit bits to 28 since some
+// browsers slow down when dealing with 32-bit numbers.
+function am3(i,x,w,j,c,n) {
+  var this_array = this.array;
+  var w_array    = w.array;
+
+  var xl = x&0x3fff, xh = x>>14;
+  while(--n >= 0) {
+    var l = this_array[i]&0x3fff;
+    var h = this_array[i++]>>14;
+    var m = xh*l+h*xl;
+    l = xl*l+((m&0x3fff)<<14)+w_array[j]+c;
+    c = (l>>28)+(m>>14)+xh*h;
+    w_array[j++] = l&0xfffffff;
+  }
+  return c;
+}
+
+// This is tailored to VMs with 2-bit tagging. It makes sure
+// that all the computations stay within the 29 bits available.
+function am4(i,x,w,j,c,n) {
+  var this_array = this.array;
+  var w_array    = w.array;
+
+  var xl = x&0x1fff, xh = x>>13;
+  while(--n >= 0) {
+    var l = this_array[i]&0x1fff;
+    var h = this_array[i++]>>13;
+    var m = xh*l+h*xl;
+    l = xl*l+((m&0x1fff)<<13)+w_array[j]+c;
+    c = (l>>26)+(m>>13)+xh*h;
+    w_array[j++] = l&0x3ffffff;
+  }
+  return c;
+}
+
+// am3/28 is best for SM, Rhino, but am4/26 is best for v8.
+// Kestrel (Opera 9.5) gets its best result with am4/26.
+// IE7 does 9% better with am3/28 than with am4/26.
+// Firefox (SM) gets 10% faster with am3/28 than with am4/26.
+
+setupEngine = function(fn, bits) {
+  BigInteger.prototype.am = fn;
+  dbits = bits;
+
+  BI_DB = dbits;
+  BI_DM = ((1<<dbits)-1);
+  BI_DV = (1<<dbits);
+
+  BI_FP = 52;
+  BI_FV = Math.pow(2,BI_FP);
+  BI_F1 = BI_FP-dbits;
+  BI_F2 = 2*dbits-BI_FP;
+}
+
+
+// Digit conversions
+var BI_RM = "0123456789abcdefghijklmnopqrstuvwxyz";
+var BI_RC = new Array();
+var rr,vv;
+rr = "0".charCodeAt(0);
+for(vv = 0; vv <= 9; ++vv) BI_RC[rr++] = vv;
+rr = "a".charCodeAt(0);
+for(vv = 10; vv < 36; ++vv) BI_RC[rr++] = vv;
+rr = "A".charCodeAt(0);
+for(vv = 10; vv < 36; ++vv) BI_RC[rr++] = vv;
+
+function int2char(n) { return BI_RM.charAt(n); }
+function intAt(s,i) {
+  var c = BI_RC[s.charCodeAt(i)];
+  return (c==null)?-1:c;
+}
+
+// (protected) copy this to r
+function bnpCopyTo(r) {
+  var this_array = this.array;
+  var r_array    = r.array;
+
+  for(var i = this.t-1; i >= 0; --i) r_array[i] = this_array[i];
+  r.t = this.t;
+  r.s = this.s;
+}
+
+// (protected) set from integer value x, -DV <= x < DV
+function bnpFromInt(x) {
+  var this_array = this.array;
+  this.t = 1;
+  this.s = (x<0)?-1:0;
+  if(x > 0) this_array[0] = x;
+  else if(x < -1) this_array[0] = x+DV;
+  else this.t = 0;
+}
+
+// return bigint initialized to value
+function nbv(i) { var r = nbi(); r.fromInt(i); return r; }
+
+// (protected) set from string and radix
+function bnpFromString(s,b) {
+  var this_array = this.array;
+  var k;
+  if(b == 16) k = 4;
+  else if(b == 8) k = 3;
+  else if(b == 256) k = 8; // byte array
+  else if(b == 2) k = 1;
+  else if(b == 32) k = 5;
+  else if(b == 4) k = 2;
+  else { this.fromRadix(s,b); return; }
+  this.t = 0;
+  this.s = 0;
+  var i = s.length, mi = false, sh = 0;
+  while(--i >= 0) {
+    var x = (k==8)?s[i]&0xff:intAt(s,i);
+    if(x < 0) {
+      if(s.charAt(i) == "-") mi = true;
+      continue;
+    }
+    mi = false;
+    if(sh == 0)
+      this_array[this.t++] = x;
+    else if(sh+k > BI_DB) {
+      this_array[this.t-1] |= (x&((1<<(BI_DB-sh))-1))<<sh;
+      this_array[this.t++] = (x>>(BI_DB-sh));
+    }
+    else
+      this_array[this.t-1] |= x<<sh;
+    sh += k;
+    if(sh >= BI_DB) sh -= BI_DB;
+  }
+  if(k == 8 && (s[0]&0x80) != 0) {
+    this.s = -1;
+    if(sh > 0) this_array[this.t-1] |= ((1<<(BI_DB-sh))-1)<<sh;
+  }
+  this.clamp();
+  if(mi) BigInteger.ZERO.subTo(this,this);
+}
+
+// (protected) clamp off excess high words
+function bnpClamp() {
+  var this_array = this.array;
+  var c = this.s&BI_DM;
+  while(this.t > 0 && this_array[this.t-1] == c) --this.t;
+}
+
+// (public) return string representation in given radix
+function bnToString(b) {
+  var this_array = this.array;
+  if(this.s < 0) return "-"+this.negate().toString(b);
+  var k;
+  if(b == 16) k = 4;
+  else if(b == 8) k = 3;
+  else if(b == 2) k = 1;
+  else if(b == 32) k = 5;
+  else if(b == 4) k = 2;
+  else return this.toRadix(b);
+  var km = (1<<k)-1, d, m = false, r = "", i = this.t;
+  var p = BI_DB-(i*BI_DB)%k;
+  if(i-- > 0) {
+    if(p < BI_DB && (d = this_array[i]>>p) > 0) { m = true; r = int2char(d); }
+    while(i >= 0) {
+      if(p < k) {
+        d = (this_array[i]&((1<<p)-1))<<(k-p);
+        d |= this_array[--i]>>(p+=BI_DB-k);
+      }
+      else {
+        d = (this_array[i]>>(p-=k))&km;
+        if(p <= 0) { p += BI_DB; --i; }
+      }
+      if(d > 0) m = true;
+      if(m) r += int2char(d);
+    }
+  }
+  return m?r:"0";
+}
+
+// (public) -this
+function bnNegate() { var r = nbi(); BigInteger.ZERO.subTo(this,r); return r; }
+
+// (public) |this|
+function bnAbs() { return (this.s<0)?this.negate():this; }
+
+// (public) return + if this > a, - if this < a, 0 if equal
+function bnCompareTo(a) {
+  var this_array = this.array;
+  var a_array = a.array;
+
+  var r = this.s-a.s;
+  if(r != 0) return r;
+  var i = this.t;
+  r = i-a.t;
+  if(r != 0) return r;
+  while(--i >= 0) if((r=this_array[i]-a_array[i]) != 0) return r;
+  return 0;
+}
+
+// returns bit length of the integer x
+function nbits(x) {
+  var r = 1, t;
+  if((t=x>>>16) != 0) { x = t; r += 16; }
+  if((t=x>>8) != 0) { x = t; r += 8; }
+  if((t=x>>4) != 0) { x = t; r += 4; }
+  if((t=x>>2) != 0) { x = t; r += 2; }
+  if((t=x>>1) != 0) { x = t; r += 1; }
+  return r;
+}
+
+// (public) return the number of bits in "this"
+function bnBitLength() {
+  var this_array = this.array;
+  if(this.t <= 0) return 0;
+  return BI_DB*(this.t-1)+nbits(this_array[this.t-1]^(this.s&BI_DM));
+}
+
+// (protected) r = this << n*DB
+function bnpDLShiftTo(n,r) {
+  var this_array = this.array;
+  var r_array = r.array;
+  var i;
+  for(i = this.t-1; i >= 0; --i) r_array[i+n] = this_array[i];
+  for(i = n-1; i >= 0; --i) r_array[i] = 0;
+  r.t = this.t+n;
+  r.s = this.s;
+}
+
+// (protected) r = this >> n*DB
+function bnpDRShiftTo(n,r) {
+  var this_array = this.array;
+  var r_array = r.array;
+  for(var i = n; i < this.t; ++i) r_array[i-n] = this_array[i];
+  r.t = Math.max(this.t-n,0);
+  r.s = this.s;
+}
+
+// (protected) r = this << n
+function bnpLShiftTo(n,r) {
+  var this_array = this.array;
+  var r_array = r.array;
+  var bs = n%BI_DB;
+  var cbs = BI_DB-bs;
+  var bm = (1<<cbs)-1;
+  var ds = Math.floor(n/BI_DB), c = (this.s<<bs)&BI_DM, i;
+  for(i = this.t-1; i >= 0; --i) {
+    r_array[i+ds+1] = (this_array[i]>>cbs)|c;
+    c = (this_array[i]&bm)<<bs;
+  }
+  for(i = ds-1; i >= 0; --i) r_array[i] = 0;
+  r_array[ds] = c;
+  r.t = this.t+ds+1;
+  r.s = this.s;
+  r.clamp();
+}
+
+// (protected) r = this >> n
+function bnpRShiftTo(n,r) {
+  var this_array = this.array;
+  var r_array = r.array;
+  r.s = this.s;
+  var ds = Math.floor(n/BI_DB);
+  if(ds >= this.t) { r.t = 0; return; }
+  var bs = n%BI_DB;
+  var cbs = BI_DB-bs;
+  var bm = (1<<bs)-1;
+  r_array[0] = this_array[ds]>>bs;
+  for(var i = ds+1; i < this.t; ++i) {
+    r_array[i-ds-1] |= (this_array[i]&bm)<<cbs;
+    r_array[i-ds] = this_array[i]>>bs;
+  }
+  if(bs > 0) r_array[this.t-ds-1] |= (this.s&bm)<<cbs;
+  r.t = this.t-ds;
+  r.clamp();
+}
+
+// (protected) r = this - a
+function bnpSubTo(a,r) {
+  var this_array = this.array;
+  var r_array = r.array;
+  var a_array = a.array;
+  var i = 0, c = 0, m = Math.min(a.t,this.t);
+  while(i < m) {
+    c += this_array[i]-a_array[i];
+    r_array[i++] = c&BI_DM;
+    c >>= BI_DB;
+  }
+  if(a.t < this.t) {
+    c -= a.s;
+    while(i < this.t) {
+      c += this_array[i];
+      r_array[i++] = c&BI_DM;
+      c >>= BI_DB;
+    }
+    c += this.s;
+  }
+  else {
+    c += this.s;
+    while(i < a.t) {
+      c -= a_array[i];
+      r_array[i++] = c&BI_DM;
+      c >>= BI_DB;
+    }
+    c -= a.s;
+  }
+  r.s = (c<0)?-1:0;
+  if(c < -1) r_array[i++] = BI_DV+c;
+  else if(c > 0) r_array[i++] = c;
+  r.t = i;
+  r.clamp();
+}
+
+// (protected) r = this * a, r != this,a (HAC 14.12)
+// "this" should be the larger one if appropriate.
+function bnpMultiplyTo(a,r) {
+  var this_array = this.array;
+  var r_array = r.array;
+  var x = this.abs(), y = a.abs();
+  var y_array = y.array;
+
+  var i = x.t;
+  r.t = i+y.t;
+  while(--i >= 0) r_array[i] = 0;
+  for(i = 0; i < y.t; ++i) r_array[i+x.t] = x.am(0,y_array[i],r,i,0,x.t);
+  r.s = 0;
+  r.clamp();
+  if(this.s != a.s) BigInteger.ZERO.subTo(r,r);
+}
+
+// (protected) r = this^2, r != this (HAC 14.16)
+function bnpSquareTo(r) {
+  var x = this.abs();
+  var x_array = x.array;
+  var r_array = r.array;
+
+  var i = r.t = 2*x.t;
+  while(--i >= 0) r_array[i] = 0;
+  for(i = 0; i < x.t-1; ++i) {
+    var c = x.am(i,x_array[i],r,2*i,0,1);
+    if((r_array[i+x.t]+=x.am(i+1,2*x_array[i],r,2*i+1,c,x.t-i-1)) >= BI_DV) {
+      r_array[i+x.t] -= BI_DV;
+      r_array[i+x.t+1] = 1;
+    }
+  }
+  if(r.t > 0) r_array[r.t-1] += x.am(i,x_array[i],r,2*i,0,1);
+  r.s = 0;
+  r.clamp();
+}
+
+// (protected) divide this by m, quotient and remainder to q, r (HAC 14.20)
+// r != q, this != m.  q or r may be null.
+function bnpDivRemTo(m,q,r) {
+  var pm = m.abs();
+  if(pm.t <= 0) return;
+  var pt = this.abs();
+  if(pt.t < pm.t) {
+    if(q != null) q.fromInt(0);
+    if(r != null) this.copyTo(r);
+    return;
+  }
+  if(r == null) r = nbi();
+  var y = nbi(), ts = this.s, ms = m.s;
+  var pm_array = pm.array;
+  var nsh = BI_DB-nbits(pm_array[pm.t-1]);	// normalize modulus
+  if(nsh > 0) { pm.lShiftTo(nsh,y); pt.lShiftTo(nsh,r); }
+  else { pm.copyTo(y); pt.copyTo(r); }
+  var ys = y.t;
+
+  var y_array = y.array;
+  var y0 = y_array[ys-1];
+  if(y0 == 0) return;
+  var yt = y0*(1<<BI_F1)+((ys>1)?y_array[ys-2]>>BI_F2:0);
+  var d1 = BI_FV/yt, d2 = (1<<BI_F1)/yt, e = 1<<BI_F2;
+  var i = r.t, j = i-ys, t = (q==null)?nbi():q;
+  y.dlShiftTo(j,t);
+
+  var r_array = r.array;
+  if(r.compareTo(t) >= 0) {
+    r_array[r.t++] = 1;
+    r.subTo(t,r);
+  }
+  BigInteger.ONE.dlShiftTo(ys,t);
+  t.subTo(y,y);	// "negative" y so we can replace sub with am later
+  while(y.t < ys) y_array[y.t++] = 0;
+  while(--j >= 0) {
+    // Estimate quotient digit
+    var qd = (r_array[--i]==y0)?BI_DM:Math.floor(r_array[i]*d1+(r_array[i-1]+e)*d2);
+    if((r_array[i]+=y.am(0,qd,r,j,0,ys)) < qd) {	// Try it out
+      y.dlShiftTo(j,t);
+      r.subTo(t,r);
+      while(r_array[i] < --qd) r.subTo(t,r);
+    }
+  }
+  if(q != null) {
+    r.drShiftTo(ys,q);
+    if(ts != ms) BigInteger.ZERO.subTo(q,q);
+  }
+  r.t = ys;
+  r.clamp();
+  if(nsh > 0) r.rShiftTo(nsh,r);	// Denormalize remainder
+  if(ts < 0) BigInteger.ZERO.subTo(r,r);
+}
+
+// (public) this mod a
+function bnMod(a) {
+  var r = nbi();
+  this.abs().divRemTo(a,null,r);
+  if(this.s < 0 && r.compareTo(BigInteger.ZERO) > 0) a.subTo(r,r);
+  return r;
+}
+
+// Modular reduction using "classic" algorithm
+function Classic(m) { this.m = m; }
+function cConvert(x) {
+  if(x.s < 0 || x.compareTo(this.m) >= 0) return x.mod(this.m);
+  else return x;
+}
+function cRevert(x) { return x; }
+function cReduce(x) { x.divRemTo(this.m,null,x); }
+function cMulTo(x,y,r) { x.multiplyTo(y,r); this.reduce(r); }
+function cSqrTo(x,r) { x.squareTo(r); this.reduce(r); }
+
+Classic.prototype.convert = cConvert;
+Classic.prototype.revert = cRevert;
+Classic.prototype.reduce = cReduce;
+Classic.prototype.mulTo = cMulTo;
+Classic.prototype.sqrTo = cSqrTo;
+
+// (protected) return "-1/this % 2^DB"; useful for Mont. reduction
+// justification:
+//         xy == 1 (mod m)
+//         xy =  1+km
+//   xy(2-xy) = (1+km)(1-km)
+// x[y(2-xy)] = 1-k^2m^2
+// x[y(2-xy)] == 1 (mod m^2)
+// if y is 1/x mod m, then y(2-xy) is 1/x mod m^2
+// should reduce x and y(2-xy) by m^2 at each step to keep size bounded.
+// JS multiply "overflows" differently from C/C++, so care is needed here.
+function bnpInvDigit() {
+  var this_array = this.array;
+  if(this.t < 1) return 0;
+  var x = this_array[0];
+  if((x&1) == 0) return 0;
+  var y = x&3;		// y == 1/x mod 2^2
+  y = (y*(2-(x&0xf)*y))&0xf;	// y == 1/x mod 2^4
+  y = (y*(2-(x&0xff)*y))&0xff;	// y == 1/x mod 2^8
+  y = (y*(2-(((x&0xffff)*y)&0xffff)))&0xffff;	// y == 1/x mod 2^16
+  // last step - calculate inverse mod DV directly;
+  // assumes 16 < DB <= 32 and assumes ability to handle 48-bit ints
+  y = (y*(2-x*y%BI_DV))%BI_DV;		// y == 1/x mod 2^dbits
+  // we really want the negative inverse, and -DV < y < DV
+  return (y>0)?BI_DV-y:-y;
+}
+
+// Montgomery reduction
+function Montgomery(m) {
+  this.m = m;
+  this.mp = m.invDigit();
+  this.mpl = this.mp&0x7fff;
+  this.mph = this.mp>>15;
+  this.um = (1<<(BI_DB-15))-1;
+  this.mt2 = 2*m.t;
+}
+
+// xR mod m
+function montConvert(x) {
+  var r = nbi();
+  x.abs().dlShiftTo(this.m.t,r);
+  r.divRemTo(this.m,null,r);
+  if(x.s < 0 && r.compareTo(BigInteger.ZERO) > 0) this.m.subTo(r,r);
+  return r;
+}
+
+// x/R mod m
+function montRevert(x) {
+  var r = nbi();
+  x.copyTo(r);
+  this.reduce(r);
+  return r;
+}
+
+// x = x/R mod m (HAC 14.32)
+function montReduce(x) {
+  var x_array = x.array;
+  while(x.t <= this.mt2)	// pad x so am has enough room later
+    x_array[x.t++] = 0;
+  for(var i = 0; i < this.m.t; ++i) {
+    // faster way of calculating u0 = x[i]*mp mod DV
+    var j = x_array[i]&0x7fff;
+    var u0 = (j*this.mpl+(((j*this.mph+(x_array[i]>>15)*this.mpl)&this.um)<<15))&BI_DM;
+    // use am to combine the multiply-shift-add into one call
+    j = i+this.m.t;
+    x_array[j] += this.m.am(0,u0,x,i,0,this.m.t);
+    // propagate carry
+    while(x_array[j] >= BI_DV) { x_array[j] -= BI_DV; x_array[++j]++; }
+  }
+  x.clamp();
+  x.drShiftTo(this.m.t,x);
+  if(x.compareTo(this.m) >= 0) x.subTo(this.m,x);
+}
+
+// r = "x^2/R mod m"; x != r
+function montSqrTo(x,r) { x.squareTo(r); this.reduce(r); }
+
+// r = "xy/R mod m"; x,y != r
+function montMulTo(x,y,r) { x.multiplyTo(y,r); this.reduce(r); }
+
+Montgomery.prototype.convert = montConvert;
+Montgomery.prototype.revert = montRevert;
+Montgomery.prototype.reduce = montReduce;
+Montgomery.prototype.mulTo = montMulTo;
+Montgomery.prototype.sqrTo = montSqrTo;
+
+// (protected) true iff this is even
+function bnpIsEven() {
+  var this_array = this.array;
+  return ((this.t>0)?(this_array[0]&1):this.s) == 0;
+}
+
+// (protected) this^e, e < 2^32, doing sqr and mul with "r" (HAC 14.79)
+function bnpExp(e,z) {
+  if(e > 0xffffffff || e < 1) return BigInteger.ONE;
+  var r = nbi(), r2 = nbi(), g = z.convert(this), i = nbits(e)-1;
+  g.copyTo(r);
+  while(--i >= 0) {
+    z.sqrTo(r,r2);
+    if((e&(1<<i)) > 0) z.mulTo(r2,g,r);
+    else { var t = r; r = r2; r2 = t; }
+  }
+  return z.revert(r);
+}
+
+// (public) this^e % m, 0 <= e < 2^32
+function bnModPowInt(e,m) {
+  var z;
+  if(e < 256 || m.isEven()) z = new Classic(m); else z = new Montgomery(m);
+  return this.exp(e,z);
+}
+
+// protected
+BigInteger.prototype.copyTo = bnpCopyTo;
+BigInteger.prototype.fromInt = bnpFromInt;
+BigInteger.prototype.fromString = bnpFromString;
+BigInteger.prototype.clamp = bnpClamp;
+BigInteger.prototype.dlShiftTo = bnpDLShiftTo;
+BigInteger.prototype.drShiftTo = bnpDRShiftTo;
+BigInteger.prototype.lShiftTo = bnpLShiftTo;
+BigInteger.prototype.rShiftTo = bnpRShiftTo;
+BigInteger.prototype.subTo = bnpSubTo;
+BigInteger.prototype.multiplyTo = bnpMultiplyTo;
+BigInteger.prototype.squareTo = bnpSquareTo;
+BigInteger.prototype.divRemTo = bnpDivRemTo;
+BigInteger.prototype.invDigit = bnpInvDigit;
+BigInteger.prototype.isEven = bnpIsEven;
+BigInteger.prototype.exp = bnpExp;
+
+// public
+BigInteger.prototype.toString = bnToString;
+BigInteger.prototype.negate = bnNegate;
+BigInteger.prototype.abs = bnAbs;
+BigInteger.prototype.compareTo = bnCompareTo;
+BigInteger.prototype.bitLength = bnBitLength;
+BigInteger.prototype.mod = bnMod;
+BigInteger.prototype.modPowInt = bnModPowInt;
+
+// "constants"
+BigInteger.ZERO = nbv(0);
+BigInteger.ONE = nbv(1);
+// Copyright (c) 2005  Tom Wu
+// All Rights Reserved.
+// See "LICENSE" for details.
+
+// Extended JavaScript BN functions, required for RSA private ops.
+
+// (public)
+function bnClone() { var r = nbi(); this.copyTo(r); return r; }
+
+// (public) return value as integer
+function bnIntValue() {
+  var this_array = this.array;
+  if(this.s < 0) {
+    if(this.t == 1) return this_array[0]-BI_DV;
+    else if(this.t == 0) return -1;
+  }
+  else if(this.t == 1) return this_array[0];
+  else if(this.t == 0) return 0;
+  // assumes 16 < DB < 32
+  return ((this_array[1]&((1<<(32-BI_DB))-1))<<BI_DB)|this_array[0];
+}
+
+// (public) return value as byte
+function bnByteValue() {
+  var this_array = this.array;
+  return (this.t==0)?this.s:(this_array[0]<<24)>>24;
+}
+
+// (public) return value as short (assumes DB>=16)
+function bnShortValue() {
+  var this_array = this.array;
+  return (this.t==0)?this.s:(this_array[0]<<16)>>16;
+}
+
+// (protected) return x s.t. r^x < DV
+function bnpChunkSize(r) { return Math.floor(Math.LN2*BI_DB/Math.log(r)); }
+
+// (public) 0 if this == 0, 1 if this > 0
+function bnSigNum() {
+  var this_array = this.array;
+  if(this.s < 0) return -1;
+  else if(this.t <= 0 || (this.t == 1 && this_array[0] <= 0)) return 0;
+  else return 1;
+}
+
+// (protected) convert to radix string
+function bnpToRadix(b) {
+  if(b == null) b = 10;
+  if(this.signum() == 0 || b < 2 || b > 36) return "0";
+  var cs = this.chunkSize(b);
+  var a = Math.pow(b,cs);
+  var d = nbv(a), y = nbi(), z = nbi(), r = "";
+  this.divRemTo(d,y,z);
+  while(y.signum() > 0) {
+    r = (a+z.intValue()).toString(b).substr(1) + r;
+    y.divRemTo(d,y,z);
+  }
+  return z.intValue().toString(b) + r;
+}
+
+// (protected) convert from radix string
+function bnpFromRadix(s,b) {
+  this.fromInt(0);
+  if(b == null) b = 10;
+  var cs = this.chunkSize(b);
+  var d = Math.pow(b,cs), mi = false, j = 0, w = 0;
+  for(var i = 0; i < s.length; ++i) {
+    var x = intAt(s,i);
+    if(x < 0) {
+      if(s.charAt(i) == "-" && this.signum() == 0) mi = true;
+      continue;
+    }
+    w = b*w+x;
+    if(++j >= cs) {
+      this.dMultiply(d);
+      this.dAddOffset(w,0);
+      j = 0;
+      w = 0;
+    }
+  }
+  if(j > 0) {
+    this.dMultiply(Math.pow(b,j));
+    this.dAddOffset(w,0);
+  }
+  if(mi) BigInteger.ZERO.subTo(this,this);
+}
+
+// (protected) alternate constructor
+function bnpFromNumber(a,b,c) {
+  if("number" == typeof b) {
+    // new BigInteger(int,int,RNG)
+    if(a < 2) this.fromInt(1);
+    else {
+      this.fromNumber(a,c);
+      if(!this.testBit(a-1))	// force MSB set
+        this.bitwiseTo(BigInteger.ONE.shiftLeft(a-1),op_or,this);
+      if(this.isEven()) this.dAddOffset(1,0); // force odd
+      while(!this.isProbablePrime(b)) {
+        this.dAddOffset(2,0);
+        if(this.bitLength() > a) this.subTo(BigInteger.ONE.shiftLeft(a-1),this);
+      }
+    }
+  }
+  else {
+    // new BigInteger(int,RNG)
+    var x = new Array(), t = a&7;
+    x.length = (a>>3)+1;
+    b.nextBytes(x);
+    if(t > 0) x[0] &= ((1<<t)-1); else x[0] = 0;
+    this.fromString(x,256);
+  }
+}
+
+// (public) convert to bigendian byte array
+function bnToByteArray() {
+  var this_array = this.array;
+  var i = this.t, r = new Array();
+  r[0] = this.s;
+  var p = BI_DB-(i*BI_DB)%8, d, k = 0;
+  if(i-- > 0) {
+    if(p < BI_DB && (d = this_array[i]>>p) != (this.s&BI_DM)>>p)
+      r[k++] = d|(this.s<<(BI_DB-p));
+    while(i >= 0) {
+      if(p < 8) {
+        d = (this_array[i]&((1<<p)-1))<<(8-p);
+        d |= this_array[--i]>>(p+=BI_DB-8);
+      }
+      else {
+        d = (this_array[i]>>(p-=8))&0xff;
+        if(p <= 0) { p += BI_DB; --i; }
+      }
+      if((d&0x80) != 0) d |= -256;
+      if(k == 0 && (this.s&0x80) != (d&0x80)) ++k;
+      if(k > 0 || d != this.s) r[k++] = d;
+    }
+  }
+  return r;
+}
+
+function bnEquals(a) { return(this.compareTo(a)==0); }
+function bnMin(a) { return(this.compareTo(a)<0)?this:a; }
+function bnMax(a) { return(this.compareTo(a)>0)?this:a; }
+
+// (protected) r = this op a (bitwise)
+function bnpBitwiseTo(a,op,r) {
+  var this_array = this.array;
+  var a_array    = a.array;
+  var r_array    = r.array;
+  var i, f, m = Math.min(a.t,this.t);
+  for(i = 0; i < m; ++i) r_array[i] = op(this_array[i],a_array[i]);
+  if(a.t < this.t) {
+    f = a.s&BI_DM;
+    for(i = m; i < this.t; ++i) r_array[i] = op(this_array[i],f);
+    r.t = this.t;
+  }
+  else {
+    f = this.s&BI_DM;
+    for(i = m; i < a.t; ++i) r_array[i] = op(f,a_array[i]);
+    r.t = a.t;
+  }
+  r.s = op(this.s,a.s);
+  r.clamp();
+}
+
+// (public) this & a
+function op_and(x,y) { return x&y; }
+function bnAnd(a) { var r = nbi(); this.bitwiseTo(a,op_and,r); return r; }
+
+// (public) this | a
+function op_or(x,y) { return x|y; }
+function bnOr(a) { var r = nbi(); this.bitwiseTo(a,op_or,r); return r; }
+
+// (public) this ^ a
+function op_xor(x,y) { return x^y; }
+function bnXor(a) { var r = nbi(); this.bitwiseTo(a,op_xor,r); return r; }
+
+// (public) this & ~a
+function op_andnot(x,y) { return x&~y; }
+function bnAndNot(a) { var r = nbi(); this.bitwiseTo(a,op_andnot,r); return r; }
+
+// (public) ~this
+function bnNot() {
+  var this_array = this.array;
+  var r = nbi();
+  var r_array = r.array;
+
+  for(var i = 0; i < this.t; ++i) r_array[i] = BI_DM&~this_array[i];
+  r.t = this.t;
+  r.s = ~this.s;
+  return r;
+}
+
+// (public) this << n
+function bnShiftLeft(n) {
+  var r = nbi();
+  if(n < 0) this.rShiftTo(-n,r); else this.lShiftTo(n,r);
+  return r;
+}
+
+// (public) this >> n
+function bnShiftRight(n) {
+  var r = nbi();
+  if(n < 0) this.lShiftTo(-n,r); else this.rShiftTo(n,r);
+  return r;
+}
+
+// return index of lowest 1-bit in x, x < 2^31
+function lbit(x) {
+  if(x == 0) return -1;
+  var r = 0;
+  if((x&0xffff) == 0) { x >>= 16; r += 16; }
+  if((x&0xff) == 0) { x >>= 8; r += 8; }
+  if((x&0xf) == 0) { x >>= 4; r += 4; }
+  if((x&3) == 0) { x >>= 2; r += 2; }
+  if((x&1) == 0) ++r;
+  return r;
+}
+
+// (public) returns index of lowest 1-bit (or -1 if none)
+function bnGetLowestSetBit() {
+  var this_array = this.array;
+  for(var i = 0; i < this.t; ++i)
+    if(this_array[i] != 0) return i*BI_DB+lbit(this_array[i]);
+  if(this.s < 0) return this.t*BI_DB;
+  return -1;
+}
+
+// return number of 1 bits in x
+function cbit(x) {
+  var r = 0;
+  while(x != 0) { x &= x-1; ++r; }
+  return r;
+}
+
+// (public) return number of set bits
+function bnBitCount() {
+  var r = 0, x = this.s&BI_DM;
+  for(var i = 0; i < this.t; ++i) r += cbit(this_array[i]^x);
+  return r;
+}
+
+// (public) true iff nth bit is set
+function bnTestBit(n) {
+  var this_array = this.array;
+  var j = Math.floor(n/BI_DB);
+  if(j >= this.t) return(this.s!=0);
+  return((this_array[j]&(1<<(n%BI_DB)))!=0);
+}
+
+// (protected) this op (1<<n)
+function bnpChangeBit(n,op) {
+  var r = BigInteger.ONE.shiftLeft(n);
+  this.bitwiseTo(r,op,r);
+  return r;
+}
+
+// (public) this | (1<<n)
+function bnSetBit(n) { return this.changeBit(n,op_or); }
+
+// (public) this & ~(1<<n)
+function bnClearBit(n) { return this.changeBit(n,op_andnot); }
+
+// (public) this ^ (1<<n)
+function bnFlipBit(n) { return this.changeBit(n,op_xor); }
+
+// (protected) r = this + a
+function bnpAddTo(a,r) {
+  var this_array = this.array;
+  var a_array = a.array;
+  var r_array = r.array;
+  var i = 0, c = 0, m = Math.min(a.t,this.t);
+  while(i < m) {
+    c += this_array[i]+a_array[i];
+    r_array[i++] = c&BI_DM;
+    c >>= BI_DB;
+  }
+  if(a.t < this.t) {
+    c += a.s;
+    while(i < this.t) {
+      c += this_array[i];
+      r_array[i++] = c&BI_DM;
+      c >>= BI_DB;
+    }
+    c += this.s;
+  }
+  else {
+    c += this.s;
+    while(i < a.t) {
+      c += a_array[i];
+      r_array[i++] = c&BI_DM;
+      c >>= BI_DB;
+    }
+    c += a.s;
+  }
+  r.s = (c<0)?-1:0;
+  if(c > 0) r_array[i++] = c;
+  else if(c < -1) r_array[i++] = BI_DV+c;
+  r.t = i;
+  r.clamp();
+}
+
+// (public) this + a
+function bnAdd(a) { var r = nbi(); this.addTo(a,r); return r; }
+
+// (public) this - a
+function bnSubtract(a) { var r = nbi(); this.subTo(a,r); return r; }
+
+// (public) this * a
+function bnMultiply(a) { var r = nbi(); this.multiplyTo(a,r); return r; }
+
+// (public) this / a
+function bnDivide(a) { var r = nbi(); this.divRemTo(a,r,null); return r; }
+
+// (public) this % a
+function bnRemainder(a) { var r = nbi(); this.divRemTo(a,null,r); return r; }
+
+// (public) [this/a,this%a]
+function bnDivideAndRemainder(a) {
+  var q = nbi(), r = nbi();
+  this.divRemTo(a,q,r);
+  return new Array(q,r);
+}
+
+// (protected) this *= n, this >= 0, 1 < n < DV
+function bnpDMultiply(n) {
+  var this_array = this.array;
+  this_array[this.t] = this.am(0,n-1,this,0,0,this.t);
+  ++this.t;
+  this.clamp();
+}
+
+// (protected) this += n << w words, this >= 0
+function bnpDAddOffset(n,w) {
+  var this_array = this.array;
+  while(this.t <= w) this_array[this.t++] = 0;
+  this_array[w] += n;
+  while(this_array[w] >= BI_DV) {
+    this_array[w] -= BI_DV;
+    if(++w >= this.t) this_array[this.t++] = 0;
+    ++this_array[w];
+  }
+}
+
+// A "null" reducer
+function NullExp() {}
+function nNop(x) { return x; }
+function nMulTo(x,y,r) { x.multiplyTo(y,r); }
+function nSqrTo(x,r) { x.squareTo(r); }
+
+NullExp.prototype.convert = nNop;
+NullExp.prototype.revert = nNop;
+NullExp.prototype.mulTo = nMulTo;
+NullExp.prototype.sqrTo = nSqrTo;
+
+// (public) this^e
+function bnPow(e) { return this.exp(e,new NullExp()); }
+
+// (protected) r = lower n words of "this * a", a.t <= n
+// "this" should be the larger one if appropriate.
+function bnpMultiplyLowerTo(a,n,r) {
+  var r_array = r.array;
+  var a_array = a.array;
+  var i = Math.min(this.t+a.t,n);
+  r.s = 0; // assumes a,this >= 0
+  r.t = i;
+  while(i > 0) r_array[--i] = 0;
+  var j;
+  for(j = r.t-this.t; i < j; ++i) r_array[i+this.t] = this.am(0,a_array[i],r,i,0,this.t);
+  for(j = Math.min(a.t,n); i < j; ++i) this.am(0,a_array[i],r,i,0,n-i);
+  r.clamp();
+}
+
+// (protected) r = "this * a" without lower n words, n > 0
+// "this" should be the larger one if appropriate.
+function bnpMultiplyUpperTo(a,n,r) {
+  var r_array = r.array;
+  var a_array = a.array;
+  --n;
+  var i = r.t = this.t+a.t-n;
+  r.s = 0; // assumes a,this >= 0
+  while(--i >= 0) r_array[i] = 0;
+  for(i = Math.max(n-this.t,0); i < a.t; ++i)
+    r_array[this.t+i-n] = this.am(n-i,a_array[i],r,0,0,this.t+i-n);
+  r.clamp();
+  r.drShiftTo(1,r);
+}
+
+// Barrett modular reduction
+function Barrett(m) {
+  // setup Barrett
+  this.r2 = nbi();
+  this.q3 = nbi();
+  BigInteger.ONE.dlShiftTo(2*m.t,this.r2);
+  this.mu = this.r2.divide(m);
+  this.m = m;
+}
+
+function barrettConvert(x) {
+  if(x.s < 0 || x.t > 2*this.m.t) return x.mod(this.m);
+  else if(x.compareTo(this.m) < 0) return x;
+  else { var r = nbi(); x.copyTo(r); this.reduce(r); return r; }
+}
+
+function barrettRevert(x) { return x; }
+
+// x = x mod m (HAC 14.42)
+function barrettReduce(x) {
+  x.drShiftTo(this.m.t-1,this.r2);
+  if(x.t > this.m.t+1) { x.t = this.m.t+1; x.clamp(); }
+  this.mu.multiplyUpperTo(this.r2,this.m.t+1,this.q3);
+  this.m.multiplyLowerTo(this.q3,this.m.t+1,this.r2);
+  while(x.compareTo(this.r2) < 0) x.dAddOffset(1,this.m.t+1);
+  x.subTo(this.r2,x);
+  while(x.compareTo(this.m) >= 0) x.subTo(this.m,x);
+}
+
+// r = x^2 mod m; x != r
+function barrettSqrTo(x,r) { x.squareTo(r); this.reduce(r); }
+
+// r = x*y mod m; x,y != r
+function barrettMulTo(x,y,r) { x.multiplyTo(y,r); this.reduce(r); }
+
+Barrett.prototype.convert = barrettConvert;
+Barrett.prototype.revert = barrettRevert;
+Barrett.prototype.reduce = barrettReduce;
+Barrett.prototype.mulTo = barrettMulTo;
+Barrett.prototype.sqrTo = barrettSqrTo;
+
+// (public) this^e % m (HAC 14.85)
+function bnModPow(e,m) {
+  var e_array = e.array;
+  var i = e.bitLength(), k, r = nbv(1), z;
+  if(i <= 0) return r;
+  else if(i < 18) k = 1;
+  else if(i < 48) k = 3;
+  else if(i < 144) k = 4;
+  else if(i < 768) k = 5;
+  else k = 6;
+  if(i < 8)
+    z = new Classic(m);
+  else if(m.isEven())
+    z = new Barrett(m);
+  else
+    z = new Montgomery(m);
+
+  // precomputation
+  var g = new Array(), n = 3, k1 = k-1, km = (1<<k)-1;
+  g[1] = z.convert(this);
+  if(k > 1) {
+    var g2 = nbi();
+    z.sqrTo(g[1],g2);
+    while(n <= km) {
+      g[n] = nbi();
+      z.mulTo(g2,g[n-2],g[n]);
+      n += 2;
+    }
+  }
+
+  var j = e.t-1, w, is1 = true, r2 = nbi(), t;
+  i = nbits(e_array[j])-1;
+  while(j >= 0) {
+    if(i >= k1) w = (e_array[j]>>(i-k1))&km;
+    else {
+      w = (e_array[j]&((1<<(i+1))-1))<<(k1-i);
+      if(j > 0) w |= e_array[j-1]>>(BI_DB+i-k1);
+    }
+
+    n = k;
+    while((w&1) == 0) { w >>= 1; --n; }
+    if((i -= n) < 0) { i += BI_DB; --j; }
+    if(is1) {	// ret == 1, don't bother squaring or multiplying it
+      g[w].copyTo(r);
+      is1 = false;
+    }
+    else {
+      while(n > 1) { z.sqrTo(r,r2); z.sqrTo(r2,r); n -= 2; }
+      if(n > 0) z.sqrTo(r,r2); else { t = r; r = r2; r2 = t; }
+      z.mulTo(r2,g[w],r);
+    }
+
+    while(j >= 0 && (e_array[j]&(1<<i)) == 0) {
+      z.sqrTo(r,r2); t = r; r = r2; r2 = t;
+      if(--i < 0) { i = BI_DB-1; --j; }
+    }
+  }
+  return z.revert(r);
+}
+
+// (public) gcd(this,a) (HAC 14.54)
+function bnGCD(a) {
+  var x = (this.s<0)?this.negate():this.clone();
+  var y = (a.s<0)?a.negate():a.clone();
+  if(x.compareTo(y) < 0) { var t = x; x = y; y = t; }
+  var i = x.getLowestSetBit(), g = y.getLowestSetBit();
+  if(g < 0) return x;
+  if(i < g) g = i;
+  if(g > 0) {
+    x.rShiftTo(g,x);
+    y.rShiftTo(g,y);
+  }
+  while(x.signum() > 0) {
+    if((i = x.getLowestSetBit()) > 0) x.rShiftTo(i,x);
+    if((i = y.getLowestSetBit()) > 0) y.rShiftTo(i,y);
+    if(x.compareTo(y) >= 0) {
+      x.subTo(y,x);
+      x.rShiftTo(1,x);
+    }
+    else {
+      y.subTo(x,y);
+      y.rShiftTo(1,y);
+    }
+  }
+  if(g > 0) y.lShiftTo(g,y);
+  return y;
+}
+
+// (protected) this % n, n < 2^26
+function bnpModInt(n) {
+  var this_array = this.array;
+  if(n <= 0) return 0;
+  var d = BI_DV%n, r = (this.s<0)?n-1:0;
+  if(this.t > 0)
+    if(d == 0) r = this_array[0]%n;
+    else for(var i = this.t-1; i >= 0; --i) r = (d*r+this_array[i])%n;
+  return r;
+}
+
+// (public) 1/this % m (HAC 14.61)
+function bnModInverse(m) {
+  var ac = m.isEven();
+  if((this.isEven() && ac) || m.signum() == 0) return BigInteger.ZERO;
+  var u = m.clone(), v = this.clone();
+  var a = nbv(1), b = nbv(0), c = nbv(0), d = nbv(1);
+  while(u.signum() != 0) {
+    while(u.isEven()) {
+      u.rShiftTo(1,u);
+      if(ac) {
+        if(!a.isEven() || !b.isEven()) { a.addTo(this,a); b.subTo(m,b); }
+        a.rShiftTo(1,a);
+      }
+      else if(!b.isEven()) b.subTo(m,b);
+      b.rShiftTo(1,b);
+    }
+    while(v.isEven()) {
+      v.rShiftTo(1,v);
+      if(ac) {
+        if(!c.isEven() || !d.isEven()) { c.addTo(this,c); d.subTo(m,d); }
+        c.rShiftTo(1,c);
+      }
+      else if(!d.isEven()) d.subTo(m,d);
+      d.rShiftTo(1,d);
+    }
+    if(u.compareTo(v) >= 0) {
+      u.subTo(v,u);
+      if(ac) a.subTo(c,a);
+      b.subTo(d,b);
+    }
+    else {
+      v.subTo(u,v);
+      if(ac) c.subTo(a,c);
+      d.subTo(b,d);
+    }
+  }
+  if(v.compareTo(BigInteger.ONE) != 0) return BigInteger.ZERO;
+  if(d.compareTo(m) >= 0) return d.subtract(m);
+  if(d.signum() < 0) d.addTo(m,d); else return d;
+  if(d.signum() < 0) return d.add(m); else return d;
+}
+
+var lowprimes = [2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97,101,103,107,109,113,127,131,137,139,149,151,157,163,167,173,179,181,191,193,197,199,211,223,227,229,233,239,241,251,257,263,269,271,277,281,283,293,307,311,313,317,331,337,347,349,353,359,367,373,379,383,389,397,401,409,419,421,431,433,439,443,449,457,461,463,467,479,487,491,499,503,509];
+var lplim = (1<<26)/lowprimes[lowprimes.length-1];
+
+// (public) test primality with certainty >= 1-.5^t
+function bnIsProbablePrime(t) {
+  var i, x = this.abs();
+  var x_array = x.array;
+  if(x.t == 1 && x_array[0] <= lowprimes[lowprimes.length-1]) {
+    for(i = 0; i < lowprimes.length; ++i)
+      if(x_array[0] == lowprimes[i]) return true;
+    return false;
+  }
+  if(x.isEven()) return false;
+  i = 1;
+  while(i < lowprimes.length) {
+    var m = lowprimes[i], j = i+1;
+    while(j < lowprimes.length && m < lplim) m *= lowprimes[j++];
+    m = x.modInt(m);
+    while(i < j) if(m%lowprimes[i++] == 0) return false;
+  }
+  return x.millerRabin(t);
+}
+
+// (protected) true if probably prime (HAC 4.24, Miller-Rabin)
+function bnpMillerRabin(t) {
+  var n1 = this.subtract(BigInteger.ONE);
+  var k = n1.getLowestSetBit();
+  if(k <= 0) return false;
+  var r = n1.shiftRight(k);
+  t = (t+1)>>1;
+  if(t > lowprimes.length) t = lowprimes.length;
+  var a = nbi();
+  for(var i = 0; i < t; ++i) {
+    a.fromInt(lowprimes[i]);
+    var y = a.modPow(r,this);
+    if(y.compareTo(BigInteger.ONE) != 0 && y.compareTo(n1) != 0) {
+      var j = 1;
+      while(j++ < k && y.compareTo(n1) != 0) {
+        y = y.modPowInt(2,this);
+        if(y.compareTo(BigInteger.ONE) == 0) return false;
+      }
+      if(y.compareTo(n1) != 0) return false;
+    }
+  }
+  return true;
+}
+
+// protected
+BigInteger.prototype.chunkSize = bnpChunkSize;
+BigInteger.prototype.toRadix = bnpToRadix;
+BigInteger.prototype.fromRadix = bnpFromRadix;
+BigInteger.prototype.fromNumber = bnpFromNumber;
+BigInteger.prototype.bitwiseTo = bnpBitwiseTo;
+BigInteger.prototype.changeBit = bnpChangeBit;
+BigInteger.prototype.addTo = bnpAddTo;
+BigInteger.prototype.dMultiply = bnpDMultiply;
+BigInteger.prototype.dAddOffset = bnpDAddOffset;
+BigInteger.prototype.multiplyLowerTo = bnpMultiplyLowerTo;
+BigInteger.prototype.multiplyUpperTo = bnpMultiplyUpperTo;
+BigInteger.prototype.modInt = bnpModInt;
+BigInteger.prototype.millerRabin = bnpMillerRabin;
+
+// public
+BigInteger.prototype.clone = bnClone;
+BigInteger.prototype.intValue = bnIntValue;
+BigInteger.prototype.byteValue = bnByteValue;
+BigInteger.prototype.shortValue = bnShortValue;
+BigInteger.prototype.signum = bnSigNum;
+BigInteger.prototype.toByteArray = bnToByteArray;
+BigInteger.prototype.equals = bnEquals;
+BigInteger.prototype.min = bnMin;
+BigInteger.prototype.max = bnMax;
+BigInteger.prototype.and = bnAnd;
+BigInteger.prototype.or = bnOr;
+BigInteger.prototype.xor = bnXor;
+BigInteger.prototype.andNot = bnAndNot;
+BigInteger.prototype.not = bnNot;
+BigInteger.prototype.shiftLeft = bnShiftLeft;
+BigInteger.prototype.shiftRight = bnShiftRight;
+BigInteger.prototype.getLowestSetBit = bnGetLowestSetBit;
+BigInteger.prototype.bitCount = bnBitCount;
+BigInteger.prototype.testBit = bnTestBit;
+BigInteger.prototype.setBit = bnSetBit;
+BigInteger.prototype.clearBit = bnClearBit;
+BigInteger.prototype.flipBit = bnFlipBit;
+BigInteger.prototype.add = bnAdd;
+BigInteger.prototype.subtract = bnSubtract;
+BigInteger.prototype.multiply = bnMultiply;
+BigInteger.prototype.divide = bnDivide;
+BigInteger.prototype.remainder = bnRemainder;
+BigInteger.prototype.divideAndRemainder = bnDivideAndRemainder;
+BigInteger.prototype.modPow = bnModPow;
+BigInteger.prototype.modInverse = bnModInverse;
+BigInteger.prototype.pow = bnPow;
+BigInteger.prototype.gcd = bnGCD;
+BigInteger.prototype.isProbablePrime = bnIsProbablePrime;
+
+// BigInteger interfaces not implemented in jsbn:
+
+// BigInteger(int signum, byte[] magnitude)
+// double doubleValue()
+// float floatValue()
+// int hashCode()
+// long longValue()
+// static BigInteger valueOf(long val)
+// prng4.js - uses Arcfour as a PRNG
+
+function Arcfour() {
+  this.i = 0;
+  this.j = 0;
+  this.S = new Array();
+}
+
+// Initialize arcfour context from key, an array of ints, each from [0..255]
+function ARC4init(key) {
+  var i, j, t;
+  for(i = 0; i < 256; ++i)
+    this.S[i] = i;
+  j = 0;
+  for(i = 0; i < 256; ++i) {
+    j = (j + this.S[i] + key[i % key.length]) & 255;
+    t = this.S[i];
+    this.S[i] = this.S[j];
+    this.S[j] = t;
+  }
+  this.i = 0;
+  this.j = 0;
+}
+
+function ARC4next() {
+  var t;
+  this.i = (this.i + 1) & 255;
+  this.j = (this.j + this.S[this.i]) & 255;
+  t = this.S[this.i];
+  this.S[this.i] = this.S[this.j];
+  this.S[this.j] = t;
+  return this.S[(t + this.S[this.i]) & 255];
+}
+
+Arcfour.prototype.init = ARC4init;
+Arcfour.prototype.next = ARC4next;
+
+// Plug in your RNG constructor here
+function prng_newstate() {
+  return new Arcfour();
+}
+
+// Pool size must be a multiple of 4 and greater than 32.
+// An array of bytes the size of the pool will be passed to init()
+var rng_psize = 256;
+// Random number generator - requires a PRNG backend, e.g. prng4.js
+
+// For best results, put code like
+// <body onClick='rng_seed_time();' onKeyPress='rng_seed_time();'>
+// in your main HTML document.
+
+var rng_state;
+var rng_pool;
+var rng_pptr;
+
+// Mix in a 32-bit integer into the pool
+function rng_seed_int(x) {
+  rng_pool[rng_pptr++] ^= x & 255;
+  rng_pool[rng_pptr++] ^= (x >> 8) & 255;
+  rng_pool[rng_pptr++] ^= (x >> 16) & 255;
+  rng_pool[rng_pptr++] ^= (x >> 24) & 255;
+  if(rng_pptr >= rng_psize) rng_pptr -= rng_psize;
+}
+
+// Mix in the current time (w/milliseconds) into the pool
+function rng_seed_time() {
+  // Use pre-computed date to avoid making the benchmark
+  // results dependent on the current date.
+  rng_seed_int(1122926989487);
+}
+
+// Initialize the pool with junk if needed.
+if(rng_pool == null) {
+  rng_pool = new Array();
+  rng_pptr = 0;
+  var t;
+  while(rng_pptr < rng_psize) {  // extract some randomness from Math.random()
+    t = Math.floor(65536 * Math.random());
+    rng_pool[rng_pptr++] = t >>> 8;
+    rng_pool[rng_pptr++] = t & 255;
+  }
+  rng_pptr = 0;
+  rng_seed_time();
+  //rng_seed_int(window.screenX);
+  //rng_seed_int(window.screenY);
+}
+
+function rng_get_byte() {
+  if(rng_state == null) {
+    rng_seed_time();
+    rng_state = prng_newstate();
+    rng_state.init(rng_pool);
+    for(rng_pptr = 0; rng_pptr < rng_pool.length; ++rng_pptr)
+      rng_pool[rng_pptr] = 0;
+    rng_pptr = 0;
+    //rng_pool = null;
+  }
+  // TODO: allow reseeding after first request
+  return rng_state.next();
+}
+
+function rng_get_bytes(ba) {
+  var i;
+  for(i = 0; i < ba.length; ++i) ba[i] = rng_get_byte();
+}
+
+function SecureRandom() {}
+
+SecureRandom.prototype.nextBytes = rng_get_bytes;
+// Depends on jsbn.js and rng.js
+
+// convert a (hex) string to a bignum object
+function parseBigInt(str,r) {
+  return new BigInteger(str,r);
+}
+
+function linebrk(s,n) {
+  var ret = "";
+  var i = 0;
+  while(i + n < s.length) {
+    ret += s.substring(i,i+n) + "\n";
+    i += n;
+  }
+  return ret + s.substring(i,s.length);
+}
+
+function byte2Hex(b) {
+  if(b < 0x10)
+    return "0" + b.toString(16);
+  else
+    return b.toString(16);
+}
+
+// PKCS#1 (type 2, random) pad input string s to n bytes, and return a bigint
+function pkcs1pad2(s,n) {
+  if(n < s.length + 11) {
+    alert("Message too long for RSA");
+    return null;
+  }
+  var ba = new Array();
+  var i = s.length - 1;
+  while(i >= 0 && n > 0) ba[--n] = s.charCodeAt(i--);
+  ba[--n] = 0;
+  var rng = new SecureRandom();
+  var x = new Array();
+  while(n > 2) { // random non-zero pad
+    x[0] = 0;
+    while(x[0] == 0) rng.nextBytes(x);
+    ba[--n] = x[0];
+  }
+  ba[--n] = 2;
+  ba[--n] = 0;
+  return new BigInteger(ba);
+}
+
+// "empty" RSA key constructor
+function RSAKey() {
+  this.n = null;
+  this.e = 0;
+  this.d = null;
+  this.p = null;
+  this.q = null;
+  this.dmp1 = null;
+  this.dmq1 = null;
+  this.coeff = null;
+}
+
+// Set the public key fields N and e from hex strings
+function RSASetPublic(N,E) {
+  if(N != null && E != null && N.length > 0 && E.length > 0) {
+    this.n = parseBigInt(N,16);
+    this.e = parseInt(E,16);
+  }
+  else
+    alert("Invalid RSA public key");
+}
+
+// Perform raw public operation on "x": return x^e (mod n)
+function RSADoPublic(x) {
+  return x.modPowInt(this.e, this.n);
+}
+
+// Return the PKCS#1 RSA encryption of "text" as an even-length hex string
+function RSAEncrypt(text) {
+  var m = pkcs1pad2(text,(this.n.bitLength()+7)>>3);
+  if(m == null) return null;
+  var c = this.doPublic(m);
+  if(c == null) return null;
+  var h = c.toString(16);
+  if((h.length & 1) == 0) return h; else return "0" + h;
+}
+
+// Return the PKCS#1 RSA encryption of "text" as a Base64-encoded string
+//function RSAEncryptB64(text) {
+//  var h = this.encrypt(text);
+//  if(h) return hex2b64(h); else return null;
+//}
+
+// protected
+RSAKey.prototype.doPublic = RSADoPublic;
+
+// public
+RSAKey.prototype.setPublic = RSASetPublic;
+RSAKey.prototype.encrypt = RSAEncrypt;
+//RSAKey.prototype.encrypt_b64 = RSAEncryptB64;
+// Depends on rsa.js and jsbn2.js
+
+// Undo PKCS#1 (type 2, random) padding and, if valid, return the plaintext
+function pkcs1unpad2(d,n) {
+  var b = d.toByteArray();
+  var i = 0;
+  while(i < b.length && b[i] == 0) ++i;
+  if(b.length-i != n-1 || b[i] != 2)
+    return null;
+  ++i;
+  while(b[i] != 0)
+    if(++i >= b.length) return null;
+  var ret = "";
+  while(++i < b.length)
+    ret += String.fromCharCode(b[i]);
+  return ret;
+}
+
+// Set the private key fields N, e, and d from hex strings
+function RSASetPrivate(N,E,D) {
+  if(N != null && E != null && N.length > 0 && E.length > 0) {
+    this.n = parseBigInt(N,16);
+    this.e = parseInt(E,16);
+    this.d = parseBigInt(D,16);
+  }
+  else
+    alert("Invalid RSA private key");
+}
+
+// Set the private key fields N, e, d and CRT params from hex strings
+function RSASetPrivateEx(N,E,D,P,Q,DP,DQ,C) {
+  if(N != null && E != null && N.length > 0 && E.length > 0) {
+    this.n = parseBigInt(N,16);
+    this.e = parseInt(E,16);
+    this.d = parseBigInt(D,16);
+    this.p = parseBigInt(P,16);
+    this.q = parseBigInt(Q,16);
+    this.dmp1 = parseBigInt(DP,16);
+    this.dmq1 = parseBigInt(DQ,16);
+    this.coeff = parseBigInt(C,16);
+  }
+  else
+    alert("Invalid RSA private key");
+}
+
+// Generate a new random private key B bits long, using public expt E
+function RSAGenerate(B,E) {
+  var rng = new SecureRandom();
+  var qs = B>>1;
+  this.e = parseInt(E,16);
+  var ee = new BigInteger(E,16);
+  for(;;) {
+    for(;;) {
+      this.p = new BigInteger(B-qs,1,rng);
+      if(this.p.subtract(BigInteger.ONE).gcd(ee).compareTo(BigInteger.ONE) == 0 && this.p.isProbablePrime(10)) break;
+    }
+    for(;;) {
+      this.q = new BigInteger(qs,1,rng);
+      if(this.q.subtract(BigInteger.ONE).gcd(ee).compareTo(BigInteger.ONE) == 0 && this.q.isProbablePrime(10)) break;
+    }
+    if(this.p.compareTo(this.q) <= 0) {
+      var t = this.p;
+      this.p = this.q;
+      this.q = t;
+    }
+    var p1 = this.p.subtract(BigInteger.ONE);
+    var q1 = this.q.subtract(BigInteger.ONE);
+    var phi = p1.multiply(q1);
+    if(phi.gcd(ee).compareTo(BigInteger.ONE) == 0) {
+      this.n = this.p.multiply(this.q);
+      this.d = ee.modInverse(phi);
+      this.dmp1 = this.d.mod(p1);
+      this.dmq1 = this.d.mod(q1);
+      this.coeff = this.q.modInverse(this.p);
+      break;
+    }
+  }
+}
+
+// Perform raw private operation on "x": return x^d (mod n)
+function RSADoPrivate(x) {
+  if(this.p == null || this.q == null)
+    return x.modPow(this.d, this.n);
+
+  // TODO: re-calculate any missing CRT params
+  var xp = x.mod(this.p).modPow(this.dmp1, this.p);
+  var xq = x.mod(this.q).modPow(this.dmq1, this.q);
+
+  while(xp.compareTo(xq) < 0)
+    xp = xp.add(this.p);
+  return xp.subtract(xq).multiply(this.coeff).mod(this.p).multiply(this.q).add(xq);
+}
+
+// Return the PKCS#1 RSA decryption of "ctext".
+// "ctext" is an even-length hex string and the output is a plain string.
+function RSADecrypt(ctext) {
+  var c = parseBigInt(ctext, 16);
+  var m = this.doPrivate(c);
+  if(m == null) return null;
+  return pkcs1unpad2(m, (this.n.bitLength()+7)>>3);
+}
+
+// Return the PKCS#1 RSA decryption of "ctext".
+// "ctext" is a Base64-encoded string and the output is a plain string.
+//function RSAB64Decrypt(ctext) {
+//  var h = b64tohex(ctext);
+//  if(h) return this.decrypt(h); else return null;
+//}
+
+// protected
+RSAKey.prototype.doPrivate = RSADoPrivate;
+
+// public
+RSAKey.prototype.setPrivate = RSASetPrivate;
+RSAKey.prototype.setPrivateEx = RSASetPrivateEx;
+RSAKey.prototype.generate = RSAGenerate;
+RSAKey.prototype.decrypt = RSADecrypt;
+//RSAKey.prototype.b64_decrypt = RSAB64Decrypt;
+
+
+nValue="a5261939975948bb7a58dffe5ff54e65f0498f9175f5a09288810b8975871e99af3b5dd94057b0fc07535f5f97444504fa35169d461d0d30cf0192e307727c065168c788771c561a9400fb49175e9e6aa4e23fe11af69e9412dd23b0cb6684c4c2429bce139e848ab26d0829073351f4acd36074eafd036a5eb83359d2a698d3";
+eValue="10001";
+dValue="8e9912f6d3645894e8d38cb58c0db81ff516cf4c7e5a14c7f1eddb1459d2cded4d8d293fc97aee6aefb861859c8b6a3d1dfe710463e1f9ddc72048c09751971c4a580aa51eb523357a3cc48d31cfad1d4a165066ed92d4748fb6571211da5cb14bc11b6e2df7c1a559e6d5ac1cd5c94703a22891464fba23d0d965086277a161";
+pValue="d090ce58a92c75233a6486cb0a9209bf3583b64f540c76f5294bb97d285eed33aec220bde14b2417951178ac152ceab6da7090905b478195498b352048f15e7d";
+qValue="cab575dc652bb66df15a0359609d51d1db184750c00c6698b90ef3465c99655103edbf0d54c56aec0ce3c4d22592338092a126a0cc49f65a4a30d222b411e58f";
+dmp1Value="1a24bca8e273df2f0e47c199bbf678604e7df7215480c77c8db39f49b000ce2cf7500038acfff5433b7d582a01f1826e6f4d42e1c57f5e1fef7b12aabc59fd25";
+dmq1Value="3d06982efbbe47339e1f6d36b1216b8a741d410b0c662f54f7118b27b9a4ec9d914337eb39841d8666f3034408cf94f5b62f11c402fc994fe15a05493150d9fd";
+coeffValue="3a3e731acd8960b7ff9eb81a7ff93bd1cfa74cbd56987db58b4594fb09c09084db1734c8143f98b602b981aaa9243ca28deb69b5b280ee8dcee0fd2625e53250";
+
+setupEngine(am3, 28);
+
+var TEXT = "The quick brown fox jumped over the extremely lazy frog! " +
+    "Now is the time for all good men to come to the party.";
+var encrypted;
+
+function encrypt() {
+  var RSA = new RSAKey();
+  RSA.setPublic(nValue, eValue);
+  RSA.setPrivateEx(nValue, eValue, dValue, pValue, qValue, dmp1Value, dmq1Value, coeffValue);
+  encrypted = RSA.encrypt(TEXT);
+}
+
+function decrypt() {
+  var RSA = new RSAKey();
+  RSA.setPublic(nValue, eValue);
+  RSA.setPrivateEx(nValue, eValue, dValue, pValue, qValue, dmp1Value, dmq1Value, coeffValue);
+  var decrypted = RSA.decrypt(encrypted);
+  if (decrypted != TEXT) {
+    throw new Error("Crypto operation failed");
+  }
+}
diff --git a/suite/cts/deviceTests/browserbench/assets/octane/css/bootstrap-responsive.css b/suite/cts/deviceTests/browserbench/assets/octane/css/bootstrap-responsive.css
new file mode 100644
index 0000000..06e55c0
--- /dev/null
+++ b/suite/cts/deviceTests/browserbench/assets/octane/css/bootstrap-responsive.css
@@ -0,0 +1,815 @@
+/*!
+ * Bootstrap Responsive v2.0.4
+ *
+ * Copyright 2012 Twitter, Inc
+ * Licensed under the Apache License v2.0
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Designed and built with all the love in the world @twitter by @mdo and @fat.
+ */
+
+.clearfix {
+  *zoom: 1;
+}
+
+.clearfix:before,
+.clearfix:after {
+  display: table;
+  content: "";
+}
+
+.clearfix:after {
+  clear: both;
+}
+
+.hide-text {
+  font: 0/0 a;
+  color: transparent;
+  text-shadow: none;
+  background-color: transparent;
+  border: 0;
+}
+
+.input-block-level {
+  display: block;
+  width: 100%;
+  min-height: 28px;
+  -webkit-box-sizing: border-box;
+     -moz-box-sizing: border-box;
+      -ms-box-sizing: border-box;
+          box-sizing: border-box;
+}
+
+.hidden {
+  display: none;
+  visibility: hidden;
+}
+
+.visible-phone {
+  display: none !important;
+}
+
+.visible-tablet {
+  display: none !important;
+}
+
+.hidden-desktop {
+  display: none !important;
+}
+
+@media (max-width: 767px) {
+  .visible-phone {
+    display: inherit !important;
+  }
+  .hidden-phone {
+    display: none !important;
+  }
+  .hidden-desktop {
+    display: inherit !important;
+  }
+  .visible-desktop {
+    display: none !important;
+  }
+}
+
+@media (min-width: 768px) and (max-width: 979px) {
+  .visible-tablet {
+    display: inherit !important;
+  }
+  .hidden-tablet {
+    display: none !important;
+  }
+  .hidden-desktop {
+    display: inherit !important;
+  }
+  .visible-desktop {
+    display: none !important ;
+  }
+}
+
+@media (max-width: 480px) {
+  .nav-collapse {
+    -webkit-transform: translate3d(0, 0, 0);
+  }
+  .page-header h1 small {
+    display: block;
+    line-height: 18px;
+  }
+  input[type="checkbox"],
+  input[type="radio"] {
+    border: 1px solid #ccc;
+  }
+  .form-horizontal .control-group > label {
+    float: none;
+    width: auto;
+    padding-top: 0;
+    text-align: left;
+  }
+  .form-horizontal .controls {
+    margin-left: 0;
+  }
+  .form-horizontal .control-list {
+    padding-top: 0;
+  }
+  .form-horizontal .form-actions {
+    padding-right: 10px;
+    padding-left: 10px;
+  }
+  .modal {
+    position: absolute;
+    top: 10px;
+    right: 10px;
+    left: 10px;
+    width: auto;
+    margin: 0;
+  }
+  .modal.fade.in {
+    top: auto;
+  }
+  .modal-header .close {
+    padding: 10px;
+    margin: -10px;
+  }
+  .carousel-caption {
+    position: static;
+  }
+}
+
+@media (max-width: 767px) {
+  body {
+    padding-right: 20px;
+    padding-left: 20px;
+  }
+  .navbar-fixed-top,
+  .navbar-fixed-bottom {
+    margin-right: -20px;
+    margin-left: -20px;
+  }
+  .container-fluid {
+    padding: 0;
+  }
+  .dl-horizontal dt {
+    float: none;
+    width: auto;
+    clear: none;
+    text-align: left;
+  }
+  .dl-horizontal dd {
+    margin-left: 0;
+  }
+  .container {
+    width: auto;
+  }
+  .row-fluid {
+    width: 100%;
+  }
+  .row,
+  .thumbnails {
+    margin-left: 0;
+  }
+  [class*="span"],
+  .row-fluid [class*="span"] {
+    display: block;
+    float: none;
+    width: auto;
+    margin-left: 0;
+  }
+  .input-large,
+  .input-xlarge,
+  .input-xxlarge,
+  input[class*="span"],
+  select[class*="span"],
+  textarea[class*="span"],
+  .uneditable-input {
+    display: block;
+    width: 100%;
+    min-height: 28px;
+    -webkit-box-sizing: border-box;
+       -moz-box-sizing: border-box;
+        -ms-box-sizing: border-box;
+            box-sizing: border-box;
+  }
+  .input-prepend input,
+  .input-append input,
+  .input-prepend input[class*="span"],
+  .input-append input[class*="span"] {
+    display: inline-block;
+    width: auto;
+  }
+}
+
+@media (min-width: 768px) and (max-width: 979px) {
+  .row {
+    margin-left: -20px;
+    *zoom: 1;
+  }
+  .row:before,
+  .row:after {
+    display: table;
+    content: "";
+  }
+  .row:after {
+    clear: both;
+  }
+  [class*="span"] {
+    float: left;
+    margin-left: 20px;
+  }
+  .container,
+  .navbar-fixed-top .container,
+  .navbar-fixed-bottom .container {
+    width: 724px;
+  }
+  .span12 {
+    width: 724px;
+  }
+  .span11 {
+    width: 662px;
+  }
+  .span10 {
+    width: 600px;
+  }
+  .span9 {
+    width: 538px;
+  }
+  .span8 {
+    width: 476px;
+  }
+  .span7 {
+    width: 414px;
+  }
+  .span6 {
+    width: 352px;
+  }
+  .span5 {
+    width: 290px;
+  }
+  .span4 {
+    width: 228px;
+  }
+  .span3 {
+    width: 166px;
+  }
+  .span2 {
+    width: 104px;
+  }
+  .span1 {
+    width: 42px;
+  }
+  .offset12 {
+    margin-left: 764px;
+  }
+  .offset11 {
+    margin-left: 702px;
+  }
+  .offset10 {
+    margin-left: 640px;
+  }
+  .offset9 {
+    margin-left: 578px;
+  }
+  .offset8 {
+    margin-left: 516px;
+  }
+  .offset7 {
+    margin-left: 454px;
+  }
+  .offset6 {
+    margin-left: 392px;
+  }
+  .offset5 {
+    margin-left: 330px;
+  }
+  .offset4 {
+    margin-left: 268px;
+  }
+  .offset3 {
+    margin-left: 206px;
+  }
+  .offset2 {
+    margin-left: 144px;
+  }
+  .offset1 {
+    margin-left: 82px;
+  }
+  .row-fluid {
+    width: 100%;
+    *zoom: 1;
+  }
+  .row-fluid:before,
+  .row-fluid:after {
+    display: table;
+    content: "";
+  }
+  .row-fluid:after {
+    clear: both;
+  }
+  .row-fluid [class*="span"] {
+    display: block;
+    float: left;
+    width: 100%;
+    min-height: 28px;
+    margin-left: 2.762430939%;
+    *margin-left: 2.709239449638298%;
+    -webkit-box-sizing: border-box;
+       -moz-box-sizing: border-box;
+        -ms-box-sizing: border-box;
+            box-sizing: border-box;
+  }
+  .row-fluid [class*="span"]:first-child {
+    margin-left: 0;
+  }
+  .row-fluid .span12 {
+    width: 99.999999993%;
+    *width: 99.9468085036383%;
+  }
+  .row-fluid .span11 {
+    width: 91.436464082%;
+    *width: 91.38327259263829%;
+  }
+  .row-fluid .span10 {
+    width: 82.87292817100001%;
+    *width: 82.8197366816383%;
+  }
+  .row-fluid .span9 {
+    width: 74.30939226%;
+    *width: 74.25620077063829%;
+  }
+  .row-fluid .span8 {
+    width: 65.74585634900001%;
+    *width: 65.6926648596383%;
+  }
+  .row-fluid .span7 {
+    width: 57.182320438000005%;
+    *width: 57.129128948638304%;
+  }
+  .row-fluid .span6 {
+    width: 48.618784527%;
+    *width: 48.5655930376383%;
+  }
+  .row-fluid .span5 {
+    width: 40.055248616%;
+    *width: 40.0020571266383%;
+  }
+  .row-fluid .span4 {
+    width: 31.491712705%;
+    *width: 31.4385212156383%;
+  }
+  .row-fluid .span3 {
+    width: 22.928176794%;
+    *width: 22.874985304638297%;
+  }
+  .row-fluid .span2 {
+    width: 14.364640883%;
+    *width: 14.311449393638298%;
+  }
+  .row-fluid .span1 {
+    width: 5.801104972%;
+    *width: 5.747913482638298%;
+  }
+  input,
+  textarea,
+  .uneditable-input {
+    margin-left: 0;
+  }
+  input.span12,
+  textarea.span12,
+  .uneditable-input.span12 {
+    width: 714px;
+  }
+  input.span11,
+  textarea.span11,
+  .uneditable-input.span11 {
+    width: 652px;
+  }
+  input.span10,
+  textarea.span10,
+  .uneditable-input.span10 {
+    width: 590px;
+  }
+  input.span9,
+  textarea.span9,
+  .uneditable-input.span9 {
+    width: 528px;
+  }
+  input.span8,
+  textarea.span8,
+  .uneditable-input.span8 {
+    width: 466px;
+  }
+  input.span7,
+  textarea.span7,
+  .uneditable-input.span7 {
+    width: 404px;
+  }
+  input.span6,
+  textarea.span6,
+  .uneditable-input.span6 {
+    width: 342px;
+  }
+  input.span5,
+  textarea.span5,
+  .uneditable-input.span5 {
+    width: 280px;
+  }
+  input.span4,
+  textarea.span4,
+  .uneditable-input.span4 {
+    width: 218px;
+  }
+  input.span3,
+  textarea.span3,
+  .uneditable-input.span3 {
+    width: 156px;
+  }
+  input.span2,
+  textarea.span2,
+  .uneditable-input.span2 {
+    width: 94px;
+  }
+  input.span1,
+  textarea.span1,
+  .uneditable-input.span1 {
+    width: 32px;
+  }
+}
+
+@media (min-width: 1200px) {
+  .row {
+    margin-left: -30px;
+    *zoom: 1;
+  }
+  .row:before,
+  .row:after {
+    display: table;
+    content: "";
+  }
+  .row:after {
+    clear: both;
+  }
+  [class*="span"] {
+    float: left;
+    margin-left: 30px;
+  }
+  .container,
+  .navbar-fixed-top .container,
+  .navbar-fixed-bottom .container {
+    width: 1170px;
+  }
+  .span12 {
+    width: 1170px;
+  }
+  .span11 {
+    width: 1070px;
+  }
+  .span10 {
+    width: 970px;
+  }
+  .span9 {
+    width: 870px;
+  }
+  .span8 {
+    width: 770px;
+  }
+  .span7 {
+    width: 670px;
+  }
+  .span6 {
+    width: 570px;
+  }
+  .span5 {
+    width: 470px;
+  }
+  .span4 {
+    width: 370px;
+  }
+  .span3 {
+    width: 270px;
+  }
+  .span2 {
+    width: 170px;
+  }
+  .span1 {
+    width: 70px;
+  }
+  .offset12 {
+    margin-left: 1230px;
+  }
+  .offset11 {
+    margin-left: 1130px;
+  }
+  .offset10 {
+    margin-left: 1030px;
+  }
+  .offset9 {
+    margin-left: 930px;
+  }
+  .offset8 {
+    margin-left: 830px;
+  }
+  .offset7 {
+    margin-left: 730px;
+  }
+  .offset6 {
+    margin-left: 630px;
+  }
+  .offset5 {
+    margin-left: 530px;
+  }
+  .offset4 {
+    margin-left: 430px;
+  }
+  .offset3 {
+    margin-left: 330px;
+  }
+  .offset2 {
+    margin-left: 230px;
+  }
+  .offset1 {
+    margin-left: 130px;
+  }
+  .row-fluid {
+    width: 100%;
+    *zoom: 1;
+  }
+  .row-fluid:before,
+  .row-fluid:after {
+    display: table;
+    content: "";
+  }
+  .row-fluid:after {
+    clear: both;
+  }
+  .row-fluid [class*="span"] {
+    display: block;
+    float: left;
+    width: 100%;
+    min-height: 28px;
+    margin-left: 2.564102564%;
+    *margin-left: 2.510911074638298%;
+    -webkit-box-sizing: border-box;
+       -moz-box-sizing: border-box;
+        -ms-box-sizing: border-box;
+            box-sizing: border-box;
+  }
+  .row-fluid [class*="span"]:first-child {
+    margin-left: 0;
+  }
+  .row-fluid .span12 {
+    width: 100%;
+    *width: 99.94680851063829%;
+  }
+  .row-fluid .span11 {
+    width: 91.45299145300001%;
+    *width: 91.3997999636383%;
+  }
+  .row-fluid .span10 {
+    width: 82.905982906%;
+    *width: 82.8527914166383%;
+  }
+  .row-fluid .span9 {
+    width: 74.358974359%;
+    *width: 74.30578286963829%;
+  }
+  .row-fluid .span8 {
+    width: 65.81196581200001%;
+    *width: 65.7587743226383%;
+  }
+  .row-fluid .span7 {
+    width: 57.264957265%;
+    *width: 57.2117657756383%;
+  }
+  .row-fluid .span6 {
+    width: 48.717948718%;
+    *width: 48.6647572286383%;
+  }
+  .row-fluid .span5 {
+    width: 40.170940171000005%;
+    *width: 40.117748681638304%;
+  }
+  .row-fluid .span4 {
+    width: 31.623931624%;
+    *width: 31.5707401346383%;
+  }
+  .row-fluid .span3 {
+    width: 23.076923077%;
+    *width: 23.0237315876383%;
+  }
+  .row-fluid .span2 {
+    width: 14.529914530000001%;
+    *width: 14.4767230406383%;
+  }
+  .row-fluid .span1 {
+    width: 5.982905983%;
+    *width: 5.929714493638298%;
+  }
+  input,
+  textarea,
+  .uneditable-input {
+    margin-left: 0;
+  }
+  input.span12,
+  textarea.span12,
+  .uneditable-input.span12 {
+    width: 1160px;
+  }
+  input.span11,
+  textarea.span11,
+  .uneditable-input.span11 {
+    width: 1060px;
+  }
+  input.span10,
+  textarea.span10,
+  .uneditable-input.span10 {
+    width: 960px;
+  }
+  input.span9,
+  textarea.span9,
+  .uneditable-input.span9 {
+    width: 860px;
+  }
+  input.span8,
+  textarea.span8,
+  .uneditable-input.span8 {
+    width: 760px;
+  }
+  input.span7,
+  textarea.span7,
+  .uneditable-input.span7 {
+    width: 660px;
+  }
+  input.span6,
+  textarea.span6,
+  .uneditable-input.span6 {
+    width: 560px;
+  }
+  input.span5,
+  textarea.span5,
+  .uneditable-input.span5 {
+    width: 460px;
+  }
+  input.span4,
+  textarea.span4,
+  .uneditable-input.span4 {
+    width: 360px;
+  }
+  input.span3,
+  textarea.span3,
+  .uneditable-input.span3 {
+    width: 260px;
+  }
+  input.span2,
+  textarea.span2,
+  .uneditable-input.span2 {
+    width: 160px;
+  }
+  input.span1,
+  textarea.span1,
+  .uneditable-input.span1 {
+    width: 60px;
+  }
+  .thumbnails {
+    margin-left: -30px;
+  }
+  .thumbnails > li {
+    margin-left: 30px;
+  }
+  .row-fluid .thumbnails {
+    margin-left: 0;
+  }
+}
+
+@media (max-width: 979px) {
+  body {
+    padding-top: 0;
+  }
+  .navbar-fixed-top,
+  .navbar-fixed-bottom {
+    position: static;
+  }
+  .navbar-fixed-top {
+    margin-bottom: 18px;
+  }
+  .navbar-fixed-bottom {
+    margin-top: 18px;
+  }
+  .navbar-fixed-top .navbar-inner,
+  .navbar-fixed-bottom .navbar-inner {
+    padding: 5px;
+  }
+  .navbar .container {
+    width: auto;
+    padding: 0;
+  }
+  .navbar .brand {
+    padding-right: 10px;
+    padding-left: 10px;
+    margin: 0 0 0 -5px;
+  }
+  .nav-collapse {
+    clear: both;
+  }
+  .nav-collapse .nav {
+    float: none;
+    margin: 0 0 9px;
+  }
+  .nav-collapse .nav > li {
+    float: none;
+  }
+  .nav-collapse .nav > li > a {
+    margin-bottom: 2px;
+  }
+  .nav-collapse .nav > .divider-vertical {
+    display: none;
+  }
+  .nav-collapse .nav .nav-header {
+    color: #999999;
+    text-shadow: none;
+  }
+  .nav-collapse .nav > li > a,
+  .nav-collapse .dropdown-menu a {
+    padding: 6px 15px;
+    font-weight: bold;
+    color: #999999;
+    -webkit-border-radius: 3px;
+       -moz-border-radius: 3px;
+            border-radius: 3px;
+  }
+  .nav-collapse .btn {
+    padding: 4px 10px 4px;
+    font-weight: normal;
+    -webkit-border-radius: 4px;
+       -moz-border-radius: 4px;
+            border-radius: 4px;
+  }
+  .nav-collapse .dropdown-menu li + li a {
+    margin-bottom: 2px;
+  }
+  .nav-collapse .nav > li > a:hover,
+  .nav-collapse .dropdown-menu a:hover {
+    background-color: #222222;
+  }
+  .nav-collapse.in .btn-group {
+    padding: 0;
+    margin-top: 5px;
+  }
+  .nav-collapse .dropdown-menu {
+    position: static;
+    top: auto;
+    left: auto;
+    display: block;
+    float: none;
+    max-width: none;
+    padding: 0;
+    margin: 0 15px;
+    background-color: transparent;
+    border: none;
+    -webkit-border-radius: 0;
+       -moz-border-radius: 0;
+            border-radius: 0;
+    -webkit-box-shadow: none;
+       -moz-box-shadow: none;
+            box-shadow: none;
+  }
+  .nav-collapse .dropdown-menu:before,
+  .nav-collapse .dropdown-menu:after {
+    display: none;
+  }
+  .nav-collapse .dropdown-menu .divider {
+    display: none;
+  }
+  .nav-collapse .navbar-form,
+  .nav-collapse .navbar-search {
+    float: none;
+    padding: 9px 15px;
+    margin: 9px 0;
+    border-top: 1px solid #222222;
+    border-bottom: 1px solid #222222;
+    -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1);
+       -moz-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1);
+            box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1);
+  }
+  .navbar .nav-collapse .nav.pull-right {
+    float: none;
+    margin-left: 0;
+  }
+  .nav-collapse,
+  .nav-collapse.collapse {
+    height: 0;
+    overflow: hidden;
+  }
+  .navbar .btn-navbar {
+    display: block;
+  }
+  .navbar-static .navbar-inner {
+    padding-right: 10px;
+    padding-left: 10px;
+  }
+}
+
+@media (min-width: 980px) {
+  .nav-collapse.collapse {
+    height: auto !important;
+    overflow: visible !important;
+  }
+}
diff --git a/suite/cts/deviceTests/browserbench/assets/octane/css/bootstrap.css b/suite/cts/deviceTests/browserbench/assets/octane/css/bootstrap.css
new file mode 100644
index 0000000..cca3010
--- /dev/null
+++ b/suite/cts/deviceTests/browserbench/assets/octane/css/bootstrap.css
@@ -0,0 +1,4214 @@
+/* Portions copyright 2012 Google, Inc */
+/*!
+ * Bootstrap v2.0.4
+ *
+ * Copyright 2012 Twitter, Inc
+ * Licensed under the Apache License v2.0
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Designed and built with all the love in the world @twitter by @mdo and @fat.
+ */
+
+/* added styles by Octane */
+
+span.label-simple {
+font-size: 12px; 
+font-weight: bold; 
+color: #1a1515;
+}
+
+p.p-result {
+    text-align:right;
+    font-size:20px;
+}
+
+div.box {
+  background-color: #B8B7B6;
+  height: 80px;
+  margin-top: 8px;
+  margin-bottom: 8px;
+  padding: 5px;
+  font-size: 20px;
+  position: relative;
+  -webkit-border-radius: 6px;
+  -moz-border-radius: 6px;
+
+}
+
+span.new {font-size:14px; color: #DE0000;}
+
+div.warning-header {
+    font-weight: bold;
+    font-size: 22px;
+    color: #A2412D;
+}
+
+/* original css produced via lavishbootstrap - minor tweaks below */
+article,
+aside,
+details,
+figcaption,
+figure,
+footer,
+header,
+hgroup,
+nav,
+section {
+  display: block;
+}
+audio,
+canvas,
+video {
+  display: inline-block;
+  *display: inline;
+  *zoom: 1;
+}
+audio:not([controls]) {
+  display: none;
+}
+html {
+  font-size: 100%;
+  -webkit-text-size-adjust: 100%;
+  -ms-text-size-adjust: 100%;
+}
+a:focus {
+  outline: thin dotted #333;
+  outline: 5px auto -webkit-focus-ring-color;
+  outline-offset: -2px;
+}
+a:hover,
+a:active {
+  outline: 0;
+}
+sub,
+sup {
+  position: relative;
+  font-size: 75%;
+  line-height: 0;
+  vertical-align: baseline;
+}
+sup {
+  top: -0.5em;
+}
+sub {
+  bottom: -0.25em;
+}
+img {
+  max-width: 100%;
+  vertical-align: middle;
+  border: 0;
+  -ms-interpolation-mode: bicubic;
+}
+button,
+input,
+select,
+textarea {
+  margin: 0;
+  font-size: 100%;
+  vertical-align: middle;
+}
+button,
+input {
+  *overflow: visible;
+  line-height: normal;
+}
+button::-moz-focus-inner,
+input::-moz-focus-inner {
+  padding: 0;
+  border: 0;
+}
+button,
+input[type="button"],
+input[type="reset"],
+input[type="submit"] {
+  cursor: pointer;
+  -webkit-appearance: button;
+}
+input[type="search"] {
+  -webkit-box-sizing: content-box;
+  -moz-box-sizing: content-box;
+  box-sizing: content-box;
+  -webkit-appearance: textfield;
+}
+input[type="search"]::-webkit-search-decoration,
+input[type="search"]::-webkit-search-cancel-button {
+  -webkit-appearance: none;
+}
+textarea {
+  overflow: auto;
+  vertical-align: top;
+}
+.clearfix {
+  *zoom: 1;
+}
+.clearfix:before,
+.clearfix:after {
+  display: table;
+  content: "";
+}
+.clearfix:after {
+  clear: both;
+}
+.hide-text {
+  font: 0/0 a;
+  color: transparent;
+  text-shadow: none;
+  background-color: transparent;
+  border: 0;
+}
+.input-block-level {
+  display: block;
+  width: 100%;
+  min-height: 28px;
+  -webkit-box-sizing: border-box;
+  -moz-box-sizing: border-box;
+  -ms-box-sizing: border-box;
+  box-sizing: border-box;
+}
+body {
+  margin: 0;
+  font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
+  font-size: 13px;
+  line-height: 18px;
+  color: #5e3534;
+  background-color: #1a1515;
+}
+a {
+  color: #E26128;
+  text-decoration: none;
+}
+a:hover {
+  color: #a74317;
+  text-decoration: underline;
+}
+.row {
+  margin-left: -20px;
+  *zoom: 1;
+}
+.row:before,
+.row:after {
+  display: table;
+  content: "";
+}
+.row:after {
+  clear: both;
+}
+[class*="span"] {
+  float: left;
+  margin-left: 20px;
+}
+.container,
+.navbar-fixed-top .container,
+.navbar-fixed-bottom .container {
+  width: 940px;
+}
+.span12 {
+  width: 940px;
+}
+.span11 {
+  width: 860px;
+}
+.span10 {
+  width: 780px;
+}
+.span9 {
+  width: 700px;
+}
+.span8 {
+  width: 620px;
+}
+.span7 {
+  width: 540px;
+}
+.span6 {
+  width: 460px;
+}
+.span5 {
+  width: 380px;
+}
+.span4 {
+  width: 300px;
+}
+.span3 {
+  width: 220px;
+}
+.span2 {
+  width: 140px;
+}
+.span1 {
+  width: 60px;
+}
+.offset12 {
+  margin-left: 980px;
+}
+.offset11 {
+  margin-left: 900px;
+}
+.offset10 {
+  margin-left: 820px;
+}
+.offset9 {
+  margin-left: 740px;
+}
+.offset8 {
+  margin-left: 660px;
+}
+.offset7 {
+  margin-left: 580px;
+}
+.offset6 {
+  margin-left: 500px;
+}
+.offset5 {
+  margin-left: 420px;
+}
+.offset4 {
+  margin-left: 340px;
+}
+.offset3 {
+  margin-left: 260px;
+}
+.offset2 {
+  margin-left: 180px;
+}
+.offset1 {
+  margin-left: 100px;
+}
+.row-fluid {
+  width: 100%;
+  *zoom: 1;
+}
+.row-fluid:before,
+.row-fluid:after {
+  display: table;
+  content: "";
+}
+.row-fluid:after {
+  clear: both;
+}
+.row-fluid [class*="span"] {
+  display: block;
+  width: 100%;
+  min-height: 28px;
+  -webkit-box-sizing: border-box;
+  -moz-box-sizing: border-box;
+  -ms-box-sizing: border-box;
+  box-sizing: border-box;
+  float: left;
+  margin-left: 2.127659574%;
+  *margin-left: 2.0744680846382977%;
+}
+.row-fluid [class*="span"]:first-child {
+  margin-left: 0;
+}
+.row-fluid .span12 {
+  width: 99.99999998999999%;
+  *width: 99.94680850063828%;
+}
+.row-fluid .span11 {
+  width: 91.489361693%;
+  *width: 91.4361702036383%;
+}
+.row-fluid .span10 {
+  width: 82.97872339599999%;
+  *width: 82.92553190663828%;
+}
+.row-fluid .span9 {
+  width: 74.468085099%;
+  *width: 74.4148936096383%;
+}
+.row-fluid .span8 {
+  width: 65.95744680199999%;
+  *width: 65.90425531263828%;
+}
+.row-fluid .span7 {
+  width: 57.446808505%;
+  *width: 57.3936170156383%;
+}
+.row-fluid .span6 {
+  width: 48.93617020799999%;
+  *width: 48.88297871863829%;
+}
+.row-fluid .span5 {
+  width: 40.425531911%;
+  *width: 40.3723404216383%;
+}
+.row-fluid .span4 {
+  width: 31.914893614%;
+  *width: 31.8617021246383%;
+}
+.row-fluid .span3 {
+  width: 23.404255317%;
+  *width: 23.3510638276383%;
+}
+.row-fluid .span2 {
+  width: 14.89361702%;
+  *width: 14.8404255306383%;
+}
+.row-fluid .span1 {
+  width: 6.382978723%;
+  *width: 6.329787233638298%;
+}
+.container {
+  margin-right: auto;
+  margin-left: auto;
+  *zoom: 1;
+}
+.container:before,
+.container:after {
+  display: table;
+  content: "";
+}
+.container:after {
+  clear: both;
+}
+.container-fluid {
+  padding-right: 20px;
+  padding-left: 20px;
+  *zoom: 1;
+}
+.container-fluid:before,
+.container-fluid:after {
+  display: table;
+  content: "";
+}
+.container-fluid:after {
+  clear: both;
+}
+p {
+  margin: 0 0 9px;
+  font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
+  font-size: 13px;
+  line-height: 18px;
+}
+p small {
+  font-size: 11px;
+  color: #E26128;
+}
+.lead {
+  margin-bottom: 18px;
+  font-size: 20px;
+  font-weight: 200;
+  line-height: 27px;
+}
+h1,
+h2,
+h3,
+h4,
+h5,
+h6 {
+  margin: 0;
+  font-family: inherit;
+  font-weight: bold;
+  color: inherit;
+  text-rendering: optimizelegibility;
+}
+h1 small,
+h2 small,
+h3 small,
+h4 small,
+h5 small,
+h6 small {
+  font-weight: normal;
+  color: #E26128;
+}
+h1 {
+  font-size: 30px;
+  line-height: 36px;
+}
+h1 small {
+  font-size: 18px;
+}
+h2 {
+  font-size: 24px;
+  line-height: 36px;
+}
+h2 small {
+  font-size: 18px;
+}
+h3 {
+  font-size: 18px;
+  line-height: 27px;
+}
+h3 small {
+  font-size: 14px;
+}
+h4,
+h5,
+h6 {
+  line-height: 18px;
+}
+h4 {
+  font-size: 14px;
+}
+h4 small {
+  font-size: 12px;
+}
+h5 {
+  font-size: 12px;
+}
+h6 {
+  font-size: 11px;
+  color: #E26128;
+  text-transform: uppercase;
+}
+.page-header {
+  padding-bottom: 17px;
+  margin: 18px 0;
+  border-bottom: 1px solid #eb9742;
+}
+.page-header h1 {
+  line-height: 1;
+}
+ul,
+ol {
+  padding: 0;
+  margin: 0 0 9px 25px;
+}
+ul ul,
+ul ol,
+ol ol,
+ol ul {
+  margin-bottom: 0;
+}
+ul {
+  list-style: disc;
+}
+ol {
+  list-style: decimal;
+}
+li {
+  line-height: 18px;
+}
+ul.unstyled,
+ol.unstyled {
+  margin-left: 0;
+  list-style: none;
+}
+dl {
+  margin-bottom: 18px;
+}
+dt,
+dd {
+  line-height: 18px;
+}
+dt {
+  font-weight: bold;
+  line-height: 17px;
+}
+dd {
+  margin-left: 9px;
+}
+.dl-horizontal dt {
+  float: left;
+  width: 120px;
+  clear: left;
+  text-align: right;
+  overflow: hidden;
+  text-overflow: ellipsis;
+  white-space: nowrap;
+}
+.dl-horizontal dd {
+  margin-left: 130px;
+}
+hr {
+  margin: 18px 0;
+  border: 0;
+  border-top: 1px solid #eb9742;
+  border-bottom: 1px solid #1a1515;
+}
+strong {
+  font-weight: bold;
+}
+em {
+  font-style: italic;
+}
+.muted {
+  color: #E26128;
+}
+abbr[title] {
+  cursor: help;
+  border-bottom: 1px dotted #ddd;
+}
+abbr.initialism {
+  font-size: 90%;
+  text-transform: uppercase;
+}
+blockquote {
+  padding: 0 0 0 15px;
+  margin: 0 0 18px;
+  border-left: 5px solid #eb9742;
+}
+blockquote p {
+  margin-bottom: 0;
+  font-size: 16px;
+  font-weight: 300;
+  line-height: 22.5px;
+}
+blockquote small {
+  display: block;
+  line-height: 18px;
+  color: #E26128;
+}
+blockquote small:before {
+  content: '\2014 \00A0';
+}
+blockquote.pull-right {
+  float: right;
+  padding-right: 15px;
+  padding-left: 0;
+  border-right: 5px solid #eb9742;
+  border-left: 0;
+}
+blockquote.pull-right p,
+blockquote.pull-right small {
+  text-align: right;
+}
+q:before,
+q:after,
+blockquote:before,
+blockquote:after {
+  content: "";
+}
+address {
+  display: block;
+  margin-bottom: 18px;
+  font-style: normal;
+  line-height: 18px;
+}
+small {
+  font-size: 100%;
+}
+cite {
+  font-style: normal;
+}
+code,
+pre {
+  padding: 0 3px 2px;
+  font-family: Menlo, Monaco, Consolas, "Courier New", monospace;
+  font-size: 12px;
+  color: #5e3534;
+  -webkit-border-radius: 3px;
+  -moz-border-radius: 3px;
+  border-radius: 3px;
+}
+code {
+  padding: 2px 4px;
+  color: #d14;
+  background-color: #f7f7f9;
+  border: 1px solid #e1e1e8;
+}
+pre {
+  display: block;
+  padding: 8.5px;
+  margin: 0 0 9px;
+  font-size: 12.025px;
+  line-height: 18px;
+  word-break: break-all;
+  word-wrap: break-word;
+  white-space: pre;
+  white-space: pre-wrap;
+  background-color: #f5f5f5;
+  border: 1px solid #ccc;
+  border: 1px solid rgba(0, 0, 0, 0.15);
+  -webkit-border-radius: 4px;
+  -moz-border-radius: 4px;
+  border-radius: 4px;
+}
+pre.prettyprint {
+  margin-bottom: 18px;
+}
+pre code {
+  padding: 0;
+  color: inherit;
+  background-color: transparent;
+  border: 0;
+}
+.pre-scrollable {
+  max-height: 340px;
+  overflow-y: scroll;
+}
+form {
+  margin: 0 0 18px;
+}
+fieldset {
+  padding: 0;
+  margin: 0;
+  border: 0;
+}
+legend {
+  display: block;
+  width: 100%;
+  padding: 0;
+  margin-bottom: 27px;
+  font-size: 19.5px;
+  line-height: 36px;
+  color: #5e3534;
+  border: 0;
+  border-bottom: 1px solid #eee;
+}
+legend small {
+  font-size: 13.5px;
+  color: #E26128;
+}
+label,
+input,
+button,
+select,
+textarea {
+  font-size: 13px;
+  font-weight: normal;
+  line-height: 18px;
+}
+input,
+button,
+select,
+textarea {
+  font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
+}
+label {
+  display: block;
+  margin-bottom: 5px;
+  color: #5e3534;
+}
+input,
+textarea,
+select,
+.uneditable-input {
+  display: inline-block;
+  width: 210px;
+  height: 18px;
+  padding: 4px;
+  margin-bottom: 9px;
+  font-size: 13px;
+  line-height: 18px;
+  color: #7b7e8c;
+  background-color: '#fff';
+  border: 1px solid #cccccc;
+  -webkit-border-radius: 3px;
+  -moz-border-radius: 3px;
+  border-radius: 3px;
+}
+.uneditable-textarea {
+  width: auto;
+  height: auto;
+}
+label input,
+label textarea,
+label select {
+  display: block;
+}
+input[type="image"],
+input[type="checkbox"],
+input[type="radio"] {
+  width: auto;
+  height: auto;
+  padding: 0;
+  margin: 3px 0;
+  *margin-top: 0;
+  /* IE7 */
+
+  line-height: normal;
+  cursor: pointer;
+  background-color: transparent;
+  border: 0 \9;
+  /* IE9 and down */
+
+  -webkit-border-radius: 0;
+  -moz-border-radius: 0;
+  border-radius: 0;
+}
+input[type="image"] {
+  border: 0;
+}
+input[type="file"] {
+  width: auto;
+  padding: initial;
+  line-height: initial;
+  background-color: '#fff';
+  background-color: initial;
+  border: initial;
+  -webkit-box-shadow: none;
+  -moz-box-shadow: none;
+  box-shadow: none;
+}
+input[type="button"],
+input[type="reset"],
+input[type="submit"] {
+  width: auto;
+  height: auto;
+}
+select,
+input[type="file"] {
+  height: 28px;
+  /* In IE7, the height of the select element cannot be changed by height, only font-size */
+
+  *margin-top: 4px;
+  /* For IE7, add top margin to align select with labels */
+
+  line-height: 28px;
+}
+input[type="file"] {
+  line-height: 18px \9;
+}
+select {
+  width: 220px;
+  background-color: '#fff';
+}
+select[multiple],
+select[size] {
+  height: auto;
+}
+input[type="image"] {
+  -webkit-box-shadow: none;
+  -moz-box-shadow: none;
+  box-shadow: none;
+}
+textarea {
+  height: auto;
+}
+input[type="hidden"] {
+  display: none;
+}
+.radio,
+.checkbox {
+  min-height: 18px;
+  padding-left: 18px;
+}
+.radio input[type="radio"],
+.checkbox input[type="checkbox"] {
+  float: left;
+  margin-left: -18px;
+}
+.controls > .radio:first-child,
+.controls > .checkbox:first-child {
+  padding-top: 5px;
+}
+.radio.inline,
+.checkbox.inline {
+  display: inline-block;
+  padding-top: 5px;
+  margin-bottom: 0;
+  vertical-align: middle;
+}
+.radio.inline + .radio.inline,
+.checkbox.inline + .checkbox.inline {
+  margin-left: 10px;
+}
+input,
+textarea {
+  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
+  -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
+  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
+  -webkit-transition: border linear 0.2s, box-shadow linear 0.2s;
+  -moz-transition: border linear 0.2s, box-shadow linear 0.2s;
+  -ms-transition: border linear 0.2s, box-shadow linear 0.2s;
+  -o-transition: border linear 0.2s, box-shadow linear 0.2s;
+  transition: border linear 0.2s, box-shadow linear 0.2s;
+}
+input:focus,
+textarea:focus {
+  border-color: rgba(82, 168, 236, 0.8);
+  outline: 0;
+  outline: thin dotted \9;
+  /* IE6-9 */
+
+  -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(82,168,236,.6);
+  -moz-box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(82,168,236,.6);
+  box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(82,168,236,.6);
+}
+input[type="file"]:focus,
+input[type="radio"]:focus,
+input[type="checkbox"]:focus,
+select:focus {
+  outline: thin dotted #333;
+  outline: 5px auto -webkit-focus-ring-color;
+  outline-offset: -2px;
+  -webkit-box-shadow: none;
+  -moz-box-shadow: none;
+  box-shadow: none;
+}
+.input-mini {
+  width: 60px;
+}
+.input-small {
+  width: 90px;
+}
+.input-medium {
+  width: 150px;
+}
+.input-large {
+  width: 210px;
+}
+.input-xlarge {
+  width: 270px;
+}
+.input-xxlarge {
+  width: 530px;
+}
+input[class*="span"],
+select[class*="span"],
+textarea[class*="span"],
+.uneditable-input[class*="span"],
+.row-fluid input[class*="span"],
+.row-fluid select[class*="span"],
+.row-fluid textarea[class*="span"],
+.row-fluid .uneditable-input[class*="span"] {
+  float: none;
+  margin-left: 0;
+}
+input,
+textarea,
+.uneditable-input {
+  margin-left: 0;
+}
+input.span12, textarea.span12, .uneditable-input.span12 {
+  width: 930px;
+}
+input.span11, textarea.span11, .uneditable-input.span11 {
+  width: 850px;
+}
+input.span10, textarea.span10, .uneditable-input.span10 {
+  width: 770px;
+}
+input.span9, textarea.span9, .uneditable-input.span9 {
+  width: 690px;
+}
+input.span8, textarea.span8, .uneditable-input.span8 {
+  width: 610px;
+}
+input.span7, textarea.span7, .uneditable-input.span7 {
+  width: 530px;
+}
+input.span6, textarea.span6, .uneditable-input.span6 {
+  width: 450px;
+}
+input.span5, textarea.span5, .uneditable-input.span5 {
+  width: 370px;
+}
+input.span4, textarea.span4, .uneditable-input.span4 {
+  width: 290px;
+}
+input.span3, textarea.span3, .uneditable-input.span3 {
+  width: 210px;
+}
+input.span2, textarea.span2, .uneditable-input.span2 {
+  width: 130px;
+}
+input.span1, textarea.span1, .uneditable-input.span1 {
+  width: 50px;
+}
+input[disabled],
+select[disabled],
+textarea[disabled],
+input[readonly],
+select[readonly],
+textarea[readonly] {
+  cursor: not-allowed;
+  background-color: #eb9742;
+  border-color: #ddd;
+}
+input[type="radio"][disabled],
+input[type="checkbox"][disabled],
+input[type="radio"][readonly],
+input[type="checkbox"][readonly] {
+  background-color: transparent;
+}
+.control-group.warning > label,
+.control-group.warning .help-block,
+.control-group.warning .help-inline {
+  color: #c09853;
+}
+.control-group.warning input,
+.control-group.warning select,
+.control-group.warning textarea {
+  color: #c09853;
+  border-color: #c09853;
+}
+.control-group.warning input:focus,
+.control-group.warning select:focus,
+.control-group.warning textarea:focus {
+  border-color: #a47e3c;
+  -webkit-box-shadow: 0 0 6px #dbc59e;
+  -moz-box-shadow: 0 0 6px #dbc59e;
+  box-shadow: 0 0 6px #dbc59e;
+}
+.control-group.warning .input-prepend .add-on,
+.control-group.warning .input-append .add-on {
+  color: #c09853;
+  background-color: #fcf8e3;
+  border-color: #c09853;
+}
+.control-group.error > label,
+.control-group.error .help-block,
+.control-group.error .help-inline {
+  color: #b94a48;
+}
+.control-group.error input,
+.control-group.error select,
+.control-group.error textarea {
+  color: #b94a48;
+  border-color: #b94a48;
+}
+.control-group.error input:focus,
+.control-group.error select:focus,
+.control-group.error textarea:focus {
+  border-color: #953b39;
+  -webkit-box-shadow: 0 0 6px #d59392;
+  -moz-box-shadow: 0 0 6px #d59392;
+  box-shadow: 0 0 6px #d59392;
+}
+.control-group.error .input-prepend .add-on,
+.control-group.error .input-append .add-on {
+  color: #b94a48;
+  background-color: #f2dede;
+  border-color: #b94a48;
+}
+.control-group.success > label,
+.control-group.success .help-block,
+.control-group.success .help-inline {
+  color: #468847;
+}
+.control-group.success input,
+.control-group.success select,
+.control-group.success textarea {
+  color: #468847;
+  border-color: #468847;
+}
+.control-group.success input:focus,
+.control-group.success select:focus,
+.control-group.success textarea:focus {
+  border-color: #356635;
+  -webkit-box-shadow: 0 0 6px #7aba7b;
+  -moz-box-shadow: 0 0 6px #7aba7b;
+  box-shadow: 0 0 6px #7aba7b;
+}
+.control-group.success .input-prepend .add-on,
+.control-group.success .input-append .add-on {
+  color: #468847;
+  background-color: #dff0d8;
+  border-color: #468847;
+}
+input:focus:required:invalid,
+textarea:focus:required:invalid,
+select:focus:required:invalid {
+  color: #b94a48;
+  border-color: #ee5f5b;
+}
+input:focus:required:invalid:focus,
+textarea:focus:required:invalid:focus,
+select:focus:required:invalid:focus {
+  border-color: #e9322d;
+  -webkit-box-shadow: 0 0 6px #f8b9b7;
+  -moz-box-shadow: 0 0 6px #f8b9b7;
+  box-shadow: 0 0 6px #f8b9b7;
+}
+.form-actions {
+  padding: 17px 20px 18px;
+  margin-top: 18px;
+  margin-bottom: 18px;
+  background-color: #f5f5f5;
+  border-top: 1px solid #ddd;
+  *zoom: 1;
+}
+.form-actions:before,
+.form-actions:after {
+  display: table;
+  content: "";
+}
+.form-actions:after {
+  clear: both;
+}
+.uneditable-input {
+  overflow: hidden;
+  white-space: nowrap;
+  cursor: not-allowed;
+  background-color: '#fff';
+  border-color: #eee;
+  -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.025);
+  -moz-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.025);
+  box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.025);
+}
+:-moz-placeholder {
+  color: #E26128;
+}
+::-webkit-input-placeholder {
+  color: #E26128;
+}
+.help-block,
+.help-inline {
+  color: #7b7e8c;
+}
+.help-block {
+  display: block;
+  margin-bottom: 9px;
+}
+.help-inline {
+  display: inline-block;
+  *display: inline;
+  /* IE7 inline-block hack */
+
+  *zoom: 1;
+  vertical-align: middle;
+  padding-left: 5px;
+}
+.input-prepend,
+.input-append {
+  margin-bottom: 5px;
+}
+.input-prepend input,
+.input-append input,
+.input-prepend select,
+.input-append select,
+.input-prepend .uneditable-input,
+.input-append .uneditable-input {
+  position: relative;
+  margin-bottom: 0;
+  *margin-left: 0;
+  vertical-align: middle;
+  -webkit-border-radius: 0 3px 3px 0;
+  -moz-border-radius: 0 3px 3px 0;
+  border-radius: 0 3px 3px 0;
+}
+.input-prepend input:focus,
+.input-append input:focus,
+.input-prepend select:focus,
+.input-append select:focus,
+.input-prepend .uneditable-input:focus,
+.input-append .uneditable-input:focus {
+  z-index: 2;
+}
+.input-prepend .uneditable-input,
+.input-append .uneditable-input {
+  border-left-color: #ccc;
+}
+.input-prepend .add-on,
+.input-append .add-on {
+  display: inline-block;
+  width: auto;
+  height: 18px;
+  min-width: 16px;
+  padding: 4px 5px;
+  font-weight: normal;
+  line-height: 18px;
+  text-align: center;
+  text-shadow: 0 1px 0 #1a1515;
+  vertical-align: middle;
+  background-color: #eb9742;
+  border: 1px solid #ccc;
+}
+.input-prepend .add-on,
+.input-append .add-on,
+.input-prepend .btn,
+.input-append .btn {
+  margin-left: -1px;
+  -webkit-border-radius: 0;
+  -moz-border-radius: 0;
+  border-radius: 0;
+}
+.input-prepend .active,
+.input-append .active {
+  background-color: #a9dba9;
+  border-color: #46a546;
+}
+.input-prepend .add-on,
+.input-prepend .btn {
+  margin-right: -1px;
+}
+.input-prepend .add-on:first-child,
+.input-prepend .btn:first-child {
+  -webkit-border-radius: 3px 0 0 3px;
+  -moz-border-radius: 3px 0 0 3px;
+  border-radius: 3px 0 0 3px;
+}
+.input-append input,
+.input-append select,
+.input-append .uneditable-input {
+  -webkit-border-radius: 3px 0 0 3px;
+  -moz-border-radius: 3px 0 0 3px;
+  border-radius: 3px 0 0 3px;
+}
+.input-append .uneditable-input {
+  border-right-color: #ccc;
+  border-left-color: #eee;
+}
+.input-append .add-on:last-child,
+.input-append .btn:last-child {
+  -webkit-border-radius: 0 3px 3px 0;
+  -moz-border-radius: 0 3px 3px 0;
+  border-radius: 0 3px 3px 0;
+}
+.input-prepend.input-append input,
+.input-prepend.input-append select,
+.input-prepend.input-append .uneditable-input {
+  -webkit-border-radius: 0;
+  -moz-border-radius: 0;
+  border-radius: 0;
+}
+.input-prepend.input-append .add-on:first-child,
+.input-prepend.input-append .btn:first-child {
+  margin-right: -1px;
+  -webkit-border-radius: 3px 0 0 3px;
+  -moz-border-radius: 3px 0 0 3px;
+  border-radius: 3px 0 0 3px;
+}
+.input-prepend.input-append .add-on:last-child,
+.input-prepend.input-append .btn:last-child {
+  margin-left: -1px;
+  -webkit-border-radius: 0 3px 3px 0;
+  -moz-border-radius: 0 3px 3px 0;
+  border-radius: 0 3px 3px 0;
+}
+.search-query {
+  padding-right: 14px;
+  padding-right: 4px \9;
+  padding-left: 14px;
+  padding-left: 4px \9;
+  /* IE7-8 doesn't have border-radius, so don't indent the padding */
+
+  margin-bottom: 0;
+  -webkit-border-radius: 14px;
+  -moz-border-radius: 14px;
+  border-radius: 14px;
+}
+.form-search input,
+.form-inline input,
+.form-horizontal input,
+.form-search textarea,
+.form-inline textarea,
+.form-horizontal textarea,
+.form-search select,
+.form-inline select,
+.form-horizontal select,
+.form-search .help-inline,
+.form-inline .help-inline,
+.form-horizontal .help-inline,
+.form-search .uneditable-input,
+.form-inline .uneditable-input,
+.form-horizontal .uneditable-input,
+.form-search .input-prepend,
+.form-inline .input-prepend,
+.form-horizontal .input-prepend,
+.form-search .input-append,
+.form-inline .input-append,
+.form-horizontal .input-append {
+  display: inline-block;
+  *display: inline;
+  /* IE7 inline-block hack */
+
+  *zoom: 1;
+  margin-bottom: 0;
+}
+.form-search .hide,
+.form-inline .hide,
+.form-horizontal .hide {
+  display: none;
+}
+.form-search label,
+.form-inline label {
+  display: inline-block;
+}
+.form-search .input-append,
+.form-inline .input-append,
+.form-search .input-prepend,
+.form-inline .input-prepend {
+  margin-bottom: 0;
+}
+.form-search .radio,
+.form-search .checkbox,
+.form-inline .radio,
+.form-inline .checkbox {
+  padding-left: 0;
+  margin-bottom: 0;
+  vertical-align: middle;
+}
+.form-search .radio input[type="radio"],
+.form-search .checkbox input[type="checkbox"],
+.form-inline .radio input[type="radio"],
+.form-inline .checkbox input[type="checkbox"] {
+  float: left;
+  margin-right: 3px;
+  margin-left: 0;
+}
+.control-group {
+  margin-bottom: 9px;
+}
+legend + .control-group {
+  margin-top: 18px;
+  -webkit-margin-top-collapse: separate;
+}
+.form-horizontal .control-group {
+  margin-bottom: 18px;
+  *zoom: 1;
+}
+.form-horizontal .control-group:before,
+.form-horizontal .control-group:after {
+  display: table;
+  content: "";
+}
+.form-horizontal .control-group:after {
+  clear: both;
+}
+.form-horizontal .control-label {
+  float: left;
+  width: 140px;
+  padding-top: 5px;
+  text-align: right;
+}
+.form-horizontal .controls {
+  *display: inline-block;
+  *padding-left: 20px;
+  margin-left: 160px;
+  *margin-left: 0;
+}
+.form-horizontal .controls:first-child {
+  *padding-left: 160px;
+}
+.form-horizontal .help-block {
+  margin-top: 9px;
+  margin-bottom: 0;
+}
+.form-horizontal .form-actions {
+  padding-left: 160px;
+}
+table {
+  max-width: 100%;
+  background-color: transparent;
+  border-collapse: collapse;
+  border-spacing: 0;
+}
+.table {
+  width: 100%;
+  margin-bottom: 18px;
+}
+.table th,
+.table td {
+  padding: 8px;
+  line-height: 18px;
+  text-align: left;
+  vertical-align: top;
+  border-top: 1px solid #dddddd;
+}
+.table th {
+  font-weight: bold;
+}
+.table thead th {
+  vertical-align: bottom;
+}
+.table caption + thead tr:first-child th,
+.table caption + thead tr:first-child td,
+.table colgroup + thead tr:first-child th,
+.table colgroup + thead tr:first-child td,
+.table thead:first-child tr:first-child th,
+.table thead:first-child tr:first-child td {
+  border-top: 0;
+}
+.table tbody + tbody {
+  border-top: 2px solid #dddddd;
+}
+.table-condensed th,
+.table-condensed td {
+  padding: 4px 5px;
+}
+.table-bordered {
+  border: 1px solid #dddddd;
+  border-collapse: separate;
+  *border-collapse: collapsed;
+  border-left: 0;
+  -webkit-border-radius: 4px;
+  -moz-border-radius: 4px;
+  border-radius: 4px;
+}
+.table-bordered th,
+.table-bordered td {
+  border-left: 1px solid #dddddd;
+}
+.table-bordered caption + thead tr:first-child th,
+.table-bordered caption + tbody tr:first-child th,
+.table-bordered caption + tbody tr:first-child td,
+.table-bordered colgroup + thead tr:first-child th,
+.table-bordered colgroup + tbody tr:first-child th,
+.table-bordered colgroup + tbody tr:first-child td,
+.table-bordered thead:first-child tr:first-child th,
+.table-bordered tbody:first-child tr:first-child th,
+.table-bordered tbody:first-child tr:first-child td {
+  border-top: 0;
+}
+.table-bordered thead:first-child tr:first-child th:first-child,
+.table-bordered tbody:first-child tr:first-child td:first-child {
+  -webkit-border-top-left-radius: 4px;
+  border-top-left-radius: 4px;
+  -moz-border-radius-topleft: 4px;
+}
+.table-bordered thead:first-child tr:first-child th:last-child,
+.table-bordered tbody:first-child tr:first-child td:last-child {
+  -webkit-border-top-right-radius: 4px;
+  border-top-right-radius: 4px;
+  -moz-border-radius-topright: 4px;
+}
+.table-bordered thead:last-child tr:last-child th:first-child,
+.table-bordered tbody:last-child tr:last-child td:first-child {
+  -webkit-border-radius: 0 0 0 4px;
+  -moz-border-radius: 0 0 0 4px;
+  border-radius: 0 0 0 4px;
+  -webkit-border-bottom-left-radius: 4px;
+  border-bottom-left-radius: 4px;
+  -moz-border-radius-bottomleft: 4px;
+}
+.table-bordered thead:last-child tr:last-child th:last-child,
+.table-bordered tbody:last-child tr:last-child td:last-child {
+  -webkit-border-bottom-right-radius: 4px;
+  border-bottom-right-radius: 4px;
+  -moz-border-radius-bottomright: 4px;
+}
+.table-striped tbody tr:nth-child(odd) td,
+.table-striped tbody tr:nth-child(odd) th {
+  background-color: #f9f9f9;
+}
+.table tbody tr:hover td,
+.table tbody tr:hover th {
+  background-color: #f5f5f5;
+}
+table .span1 {
+  float: none;
+  width: 44px;
+  margin-left: 0;
+}
+table .span2 {
+  float: none;
+  width: 124px;
+  margin-left: 0;
+}
+table .span3 {
+  float: none;
+  width: 204px;
+  margin-left: 0;
+}
+table .span4 {
+  float: none;
+  width: 284px;
+  margin-left: 0;
+}
+table .span5 {
+  float: none;
+  width: 364px;
+  margin-left: 0;
+}
+table .span6 {
+  float: none;
+  width: 444px;
+  margin-left: 0;
+}
+table .span7 {
+  float: none;
+  width: 524px;
+  margin-left: 0;
+}
+table .span8 {
+  float: none;
+  width: 604px;
+  margin-left: 0;
+}
+table .span9 {
+  float: none;
+  width: 684px;
+  margin-left: 0;
+}
+table .span10 {
+  float: none;
+  width: 764px;
+  margin-left: 0;
+}
+table .span11 {
+  float: none;
+  width: 844px;
+  margin-left: 0;
+}
+table .span12 {
+  float: none;
+  width: 924px;
+  margin-left: 0;
+}
+table .span13 {
+  float: none;
+  width: 1004px;
+  margin-left: 0;
+}
+table .span14 {
+  float: none;
+  width: 1084px;
+  margin-left: 0;
+}
+table .span15 {
+  float: none;
+  width: 1164px;
+  margin-left: 0;
+}
+table .span16 {
+  float: none;
+  width: 1244px;
+  margin-left: 0;
+}
+table .span17 {
+  float: none;
+  width: 1324px;
+  margin-left: 0;
+}
+table .span18 {
+  float: none;
+  width: 1404px;
+  margin-left: 0;
+}
+table .span19 {
+  float: none;
+  width: 1484px;
+  margin-left: 0;
+}
+table .span20 {
+  float: none;
+  width: 1564px;
+  margin-left: 0;
+}
+table .span21 {
+  float: none;
+  width: 1644px;
+  margin-left: 0;
+}
+table .span22 {
+  float: none;
+  width: 1724px;
+  margin-left: 0;
+}
+table .span23 {
+  float: none;
+  width: 1804px;
+  margin-left: 0;
+}
+table .span24 {
+  float: none;
+  width: 1884px;
+  margin-left: 0;
+}
+[class^="icon-"],
+[class*=" icon-"] {
+  display: inline-block;
+  width: 14px;
+  height: 14px;
+  *margin-right: .3em;
+  line-height: 14px;
+  vertical-align: text-top;
+  background-image: url("../img/glyphicons-halflings.png");
+  background-position: 14px 14px;
+  background-repeat: no-repeat;
+}
+[class^="icon-"]:last-child,
+[class*=" icon-"]:last-child {
+  *margin-left: 0;
+}
+.icon-white {
+  background-image: url("../img/glyphicons-halflings-white.png");
+}
+.icon-glass {
+  background-position: 0      0;
+}
+.icon-music {
+  background-position: -24px 0;
+}
+.icon-search {
+  background-position: -48px 0;
+}
+.icon-envelope {
+  background-position: -72px 0;
+}
+.icon-heart {
+  background-position: -96px 0;
+}
+.icon-star {
+  background-position: -120px 0;
+}
+.icon-star-empty {
+  background-position: -144px 0;
+}
+.icon-user {
+  background-position: -168px 0;
+}
+.icon-film {
+  background-position: -192px 0;
+}
+.icon-th-large {
+  background-position: -216px 0;
+}
+.icon-th {
+  background-position: -240px 0;
+}
+.icon-th-list {
+  background-position: -264px 0;
+}
+.icon-ok {
+  background-position: -288px 0;
+}
+.icon-remove {
+  background-position: -312px 0;
+}
+.icon-zoom-in {
+  background-position: -336px 0;
+}
+.icon-zoom-out {
+  background-position: -360px 0;
+}
+.icon-off {
+  background-position: -384px 0;
+}
+.icon-signal {
+  background-position: -408px 0;
+}
+.icon-cog {
+  background-position: -432px 0;
+}
+.icon-trash {
+  background-position: -456px 0;
+}
+.icon-home {
+  background-position: 0 -24px;
+}
+.icon-file {
+  background-position: -24px -24px;
+}
+.icon-time {
+  background-position: -48px -24px;
+}
+.icon-road {
+  background-position: -72px -24px;
+}
+.icon-download-alt {
+  background-position: -96px -24px;
+}
+.icon-download {
+  background-position: -120px -24px;
+}
+.icon-upload {
+  background-position: -144px -24px;
+}
+.icon-inbox {
+  background-position: -168px -24px;
+}
+.icon-play-circle {
+  background-position: -192px -24px;
+}
+.icon-repeat {
+  background-position: -216px -24px;
+}
+.icon-refresh {
+  background-position: -240px -24px;
+}
+.icon-list-alt {
+  background-position: -264px -24px;
+}
+.icon-lock {
+  background-position: -287px -24px;
+}
+.icon-flag {
+  background-position: -312px -24px;
+}
+.icon-headphones {
+  background-position: -336px -24px;
+}
+.icon-volume-off {
+  background-position: -360px -24px;
+}
+.icon-volume-down {
+  background-position: -384px -24px;
+}
+.icon-volume-up {
+  background-position: -408px -24px;
+}
+.icon-qrcode {
+  background-position: -432px -24px;
+}
+.icon-barcode {
+  background-position: -456px -24px;
+}
+.icon-tag {
+  background-position: 0 -48px;
+}
+.icon-tags {
+  background-position: -25px -48px;
+}
+.icon-book {
+  background-position: -48px -48px;
+}
+.icon-bookmark {
+  background-position: -72px -48px;
+}
+.icon-print {
+  background-position: -96px -48px;
+}
+.icon-camera {
+  background-position: -120px -48px;
+}
+.icon-font {
+  background-position: -144px -48px;
+}
+.icon-bold {
+  background-position: -167px -48px;
+}
+.icon-italic {
+  background-position: -192px -48px;
+}
+.icon-text-height {
+  background-position: -216px -48px;
+}
+.icon-text-width {
+  background-position: -240px -48px;
+}
+.icon-align-left {
+  background-position: -264px -48px;
+}
+.icon-align-center {
+  background-position: -288px -48px;
+}
+.icon-align-right {
+  background-position: -312px -48px;
+}
+.icon-align-justify {
+  background-position: -336px -48px;
+}
+.icon-list {
+  background-position: -360px -48px;
+}
+.icon-indent-left {
+  background-position: -384px -48px;
+}
+.icon-indent-right {
+  background-position: -408px -48px;
+}
+.icon-facetime-video {
+  background-position: -432px -48px;
+}
+.icon-picture {
+  background-position: -456px -48px;
+}
+.icon-pencil {
+  background-position: 0 -72px;
+}
+.icon-map-marker {
+  background-position: -24px -72px;
+}
+.icon-adjust {
+  background-position: -48px -72px;
+}
+.icon-tint {
+  background-position: -72px -72px;
+}
+.icon-edit {
+  background-position: -96px -72px;
+}
+.icon-share {
+  background-position: -120px -72px;
+}
+.icon-check {
+  background-position: -144px -72px;
+}
+.icon-move {
+  background-position: -168px -72px;
+}
+.icon-step-backward {
+  background-position: -192px -72px;
+}
+.icon-fast-backward {
+  background-position: -216px -72px;
+}
+.icon-backward {
+  background-position: -240px -72px;
+}
+.icon-play {
+  background-position: -264px -72px;
+}
+.icon-pause {
+  background-position: -288px -72px;
+}
+.icon-stop {
+  background-position: -312px -72px;
+}
+.icon-forward {
+  background-position: -336px -72px;
+}
+.icon-fast-forward {
+  background-position: -360px -72px;
+}
+.icon-step-forward {
+  background-position: -384px -72px;
+}
+.icon-eject {
+  background-position: -408px -72px;
+}
+.icon-chevron-left {
+  background-position: -432px -72px;
+}
+.icon-chevron-right {
+  background-position: -456px -72px;
+}
+.icon-plus-sign {
+  background-position: 0 -96px;
+}
+.icon-minus-sign {
+  background-position: -24px -96px;
+}
+.icon-remove-sign {
+  background-position: -48px -96px;
+}
+.icon-ok-sign {
+  background-position: -72px -96px;
+}
+.icon-question-sign {
+  background-position: -96px -96px;
+}
+.icon-info-sign {
+  background-position: -120px -96px;
+}
+.icon-screenshot {
+  background-position: -144px -96px;
+}
+.icon-remove-circle {
+  background-position: -168px -96px;
+}
+.icon-ok-circle {
+  background-position: -192px -96px;
+}
+.icon-ban-circle {
+  background-position: -216px -96px;
+}
+.icon-arrow-left {
+  background-position: -240px -96px;
+}
+.icon-arrow-right {
+  background-position: -264px -96px;
+}
+.icon-arrow-up {
+  background-position: -289px -96px;
+}
+.icon-arrow-down {
+  background-position: -312px -96px;
+}
+.icon-share-alt {
+  background-position: -336px -96px;
+}
+.icon-resize-full {
+  background-position: -360px -96px;
+}
+.icon-resize-small {
+  background-position: -384px -96px;
+}
+.icon-plus {
+  background-position: -408px -96px;
+}
+.icon-minus {
+  background-position: -433px -96px;
+}
+.icon-asterisk {
+  background-position: -456px -96px;
+}
+.icon-exclamation-sign {
+  background-position: 0 -120px;
+}
+.icon-gift {
+  background-position: -24px -120px;
+}
+.icon-leaf {
+  background-position: -48px -120px;
+}
+.icon-fire {
+  background-position: -72px -120px;
+}
+.icon-eye-open {
+  background-position: -96px -120px;
+}
+.icon-eye-close {
+  background-position: -120px -120px;
+}
+.icon-warning-sign {
+  background-position: -144px -120px;
+}
+.icon-plane {
+  background-position: -168px -120px;
+}
+.icon-calendar {
+  background-position: -192px -120px;
+}
+.icon-random {
+  background-position: -216px -120px;
+}
+.icon-comment {
+  background-position: -240px -120px;
+}
+.icon-magnet {
+  background-position: -264px -120px;
+}
+.icon-chevron-up {
+  background-position: -288px -120px;
+}
+.icon-chevron-down {
+  background-position: -313px -119px;
+}
+.icon-retweet {
+  background-position: -336px -120px;
+}
+.icon-shopping-cart {
+  background-position: -360px -120px;
+}
+.icon-folder-close {
+  background-position: -384px -120px;
+}
+.icon-folder-open {
+  background-position: -408px -120px;
+}
+.icon-resize-vertical {
+  background-position: -432px -119px;
+}
+.icon-resize-horizontal {
+  background-position: -456px -118px;
+}
+.icon-hdd {
+  background-position: 0 -144px;
+}
+.icon-bullhorn {
+  background-position: -24px -144px;
+}
+.icon-bell {
+  background-position: -48px -144px;
+}
+.icon-certificate {
+  background-position: -72px -144px;
+}
+.icon-thumbs-up {
+  background-position: -96px -144px;
+}
+.icon-thumbs-down {
+  background-position: -120px -144px;
+}
+.icon-hand-right {
+  background-position: -144px -144px;
+}
+.icon-hand-left {
+  background-position: -168px -144px;
+}
+.icon-hand-up {
+  background-position: -192px -144px;
+}
+.icon-hand-down {
+  background-position: -216px -144px;
+}
+.icon-circle-arrow-right {
+  background-position: -240px -144px;
+}
+.icon-circle-arrow-left {
+  background-position: -264px -144px;
+}
+.icon-circle-arrow-up {
+  background-position: -288px -144px;
+}
+.icon-circle-arrow-down {
+  background-position: -312px -144px;
+}
+.icon-globe {
+  background-position: -336px -144px;
+}
+.icon-wrench {
+  background-position: -360px -144px;
+}
+.icon-tasks {
+  background-position: -384px -144px;
+}
+.icon-filter {
+  background-position: -408px -144px;
+}
+.icon-briefcase {
+  background-position: -432px -144px;
+}
+.icon-fullscreen {
+  background-position: -456px -144px;
+}
+.dropup,
+.dropdown {
+  position: relative;
+}
+.dropdown-toggle {
+  *margin-bottom: -3px;
+}
+.dropdown-toggle:active,
+.open .dropdown-toggle {
+  outline: 0;
+}
+.caret {
+  display: inline-block;
+  width: 0;
+  height: 0;
+  vertical-align: top;
+  border-top: 4px solid #1a1515;
+  border-right: 4px solid transparent;
+  border-left: 4px solid transparent;
+  content: "";
+  opacity: 0.3;
+  filter: alpha(opacity=30);
+}
+.dropdown .caret {
+  margin-top: 8px;
+  margin-left: 2px;
+}
+.dropdown:hover .caret,
+.open .caret {
+  opacity: 1;
+  filter: alpha(opacity=100);
+}
+.dropdown-menu {
+  position: absolute;
+  top: 100%;
+  left: 0;
+  z-index: 1000;
+  display: none;
+  float: left;
+  min-width: 160px;
+  padding: 4px 0;
+  margin: 1px 0 0;
+  list-style: none;
+  background-color: #1a1515;
+  border: 1px solid #ccc;
+  border: 1px solid rgba(0, 0, 0, 0.2);
+  *border-right-width: 2px;
+  *border-bottom-width: 2px;
+  -webkit-border-radius: 5px;
+  -moz-border-radius: 5px;
+  border-radius: 5px;
+  -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
+  -moz-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
+  box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
+  -webkit-background-clip: padding-box;
+  -moz-background-clip: padding;
+  background-clip: padding-box;
+}
+.dropdown-menu.pull-right {
+  right: 0;
+  left: auto;
+}
+.dropdown-menu .divider {
+  *width: 100%;
+  height: 1px;
+  margin: 8px 1px;
+  *margin: -5px 0 5px;
+  overflow: hidden;
+  background-color: #e5e5e5;
+  border-bottom: 1px solid #1a1515;
+}
+.dropdown-menu a {
+  display: block;
+  padding: 3px 15px;
+  clear: both;
+  font-weight: normal;
+  line-height: 18px;
+  color: #5e3534;
+  white-space: nowrap;
+}
+.dropdown-menu li > a:hover,
+.dropdown-menu .active > a,
+.dropdown-menu .active > a:hover {
+  color: #1a1515;
+  text-decoration: none;
+  background-color: #E26128;
+}
+.open {
+  *z-index: 1000;
+}
+.open .dropdown-menu {
+  display: block;
+}
+.pull-right .dropdown-menu {
+  right: 0;
+  left: auto;
+}
+.dropup .caret,
+.navbar-fixed-bottom .dropdown .caret {
+  border-top: 0;
+  border-bottom: 4px solid #1a1515;
+  content: "\2191";
+}
+.dropup .dropdown-menu,
+.navbar-fixed-bottom .dropdown .dropdown-menu {
+  top: auto;
+  bottom: 100%;
+  margin-bottom: 1px;
+}
+.typeahead {
+  margin-top: 2px;
+  -webkit-border-radius: 4px;
+  -moz-border-radius: 4px;
+  border-radius: 4px;
+}
+.well {
+  min-height: 20px;
+  padding: 19px;
+  margin-bottom: 20px;
+  background-color: #f5f5f5;
+  border: 1px solid #eee;
+  border: 1px solid rgba(0, 0, 0, 0.05);
+  -webkit-border-radius: 4px;
+  -moz-border-radius: 4px;
+  border-radius: 4px;
+  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);
+  -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);
+  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);
+}
+.well blockquote {
+  border-color: #ddd;
+  border-color: rgba(0, 0, 0, 0.15);
+}
+.well-large {
+  padding: 24px;
+  -webkit-border-radius: 6px;
+  -moz-border-radius: 6px;
+  border-radius: 6px;
+}
+.well-small {
+  padding: 9px;
+  -webkit-border-radius: 3px;
+  -moz-border-radius: 3px;
+  border-radius: 3px;
+}
+.fade {
+  opacity: 0;
+  filter: alpha(opacity=0);
+  -webkit-transition: opacity 0.15s linear;
+  -moz-transition: opacity 0.15s linear;
+  -ms-transition: opacity 0.15s linear;
+  -o-transition: opacity 0.15s linear;
+  transition: opacity 0.15s linear;
+}
+.fade.in {
+  opacity: 1;
+  filter: alpha(opacity=100);
+}
+.collapse {
+  position: relative;
+  height: 0;
+  overflow: hidden;
+  -webkit-transition: height 0.35s ease;
+  -moz-transition: height 0.35s ease;
+  -ms-transition: height 0.35s ease;
+  -o-transition: height 0.35s ease;
+  transition: height 0.35s ease;
+}
+.collapse.in {
+  height: auto;
+}
+.close {
+  float: right;
+  font-size: 20px;
+  font-weight: bold;
+  line-height: 18px;
+  color: #1a1515;
+  text-shadow: 0 1px 0 #ffffff;
+  opacity: 0.2;
+  filter: alpha(opacity=20);
+}
+.close:hover {
+  color: #1a1515;
+  text-decoration: none;
+  cursor: pointer;
+  opacity: 0.4;
+  filter: alpha(opacity=40);
+}
+button.close {
+  padding: 0;
+  cursor: pointer;
+  background: transparent;
+  border: 0;
+  -webkit-appearance: none;
+}
+.btn {
+  display: inline-block;
+  *display: inline;
+  /* IE7 inline-block hack */
+
+  *zoom: 1;
+  padding: 4px 10px 4px;
+  margin-bottom: 0;
+  font-size: 13px;
+  line-height: 18px;
+  *line-height: 20px;
+  color: #5e3534;
+  text-align: center;
+  text-shadow: 0 1px 1px rgba(255, 255, 255, 0.75);
+  vertical-align: middle;
+  cursor: pointer;
+  background-color: #100d0d;
+  background-image: -moz-linear-gradient(top, #1a1515, #000000);
+  background-image: -ms-linear-gradient(top, #1a1515, #000000);
+  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#1a1515), to(#000000));
+  background-image: -webkit-linear-gradient(top, #1a1515, #000000);
+  background-image: -o-linear-gradient(top, #1a1515, #000000);
+  background-image: linear-gradient(top, #1a1515, #000000);
+  background-repeat: repeat-x;
+  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#1a1515', endColorstr='#000000', GradientType=0);
+  border-color: #000000 #000000 #000000;
+  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
+  *background-color: #000000;
+  /* Darken IE7 buttons by default so they stand out more given they won't have borders */
+
+  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
+  border: 1px solid #cccccc;
+  *border: 0;
+  border-bottom-color: #b3b3b3;
+  -webkit-border-radius: 4px;
+  -moz-border-radius: 4px;
+  border-radius: 4px;
+  *margin-left: .3em;
+  -webkit-box-shadow: inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05);
+  -moz-box-shadow: inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05);
+  box-shadow: inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05);
+}
+.btn:hover,
+.btn:active,
+.btn.active,
+.btn.disabled,
+.btn[disabled] {
+  background-color: #000000;
+  *background-color: #000000;
+}
+.btn:active,
+.btn.active {
+  background-color: #000000 \9;
+}
+.btn:first-child {
+  *margin-left: 0;
+}
+.btn:hover {
+  color: #5e3534;
+  text-decoration: none;
+  background-color: #000000;
+  *background-color: #000000;
+  /* Buttons in IE7 don't get borders, so darken on hover */
+
+  background-position: 0 -15px;
+  -webkit-transition: background-position 0.1s linear;
+  -moz-transition: background-position 0.1s linear;
+  -ms-transition: background-position 0.1s linear;
+  -o-transition: background-position 0.1s linear;
+  transition: background-position 0.1s linear;
+}
+.btn:focus {
+  outline: thin dotted #333;
+  outline: 5px auto -webkit-focus-ring-color;
+  outline-offset: -2px;
+}
+.btn.active,
+.btn:active {
+  background-color: #000000;
+  background-color: #000000 \9;
+  background-image: none;
+  outline: 0;
+  -webkit-box-shadow: inset 0 2px 4px rgba(0,0,0,.15), 0 1px 2px rgba(0,0,0,.05);
+  -moz-box-shadow: inset 0 2px 4px rgba(0,0,0,.15), 0 1px 2px rgba(0,0,0,.05);
+  box-shadow: inset 0 2px 4px rgba(0,0,0,.15), 0 1px 2px rgba(0,0,0,.05);
+}
+.btn.disabled,
+.btn[disabled] {
+  cursor: default;
+  background-color: #000000;
+  background-image: none;
+  opacity: 0.65;
+  filter: alpha(opacity=65);
+  -webkit-box-shadow: none;
+  -moz-box-shadow: none;
+  box-shadow: none;
+}
+.btn-large {
+  padding: 9px 14px;
+  font-size: 15px;
+  line-height: normal;
+  -webkit-border-radius: 5px;
+  -moz-border-radius: 5px;
+  border-radius: 5px;
+}
+.btn-large [class^="icon-"] {
+  margin-top: 1px;
+}
+.btn-small {
+  padding: 5px 9px;
+  font-size: 11px;
+  line-height: 16px;
+}
+.btn-small [class^="icon-"] {
+  margin-top: -1px;
+}
+.btn-mini {
+  padding: 2px 6px;
+  font-size: 11px;
+  line-height: 14px;
+}
+.btn-primary,
+.btn-primary:hover,
+.btn-warning,
+.btn-warning:hover,
+.btn-danger,
+.btn-danger:hover,
+.btn-success,
+.btn-success:hover,
+.btn-info,
+.btn-info:hover,
+.btn-inverse,
+.btn-inverse:hover {
+  color: #1a1515;
+  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
+}
+.btn-primary.active,
+.btn-warning.active,
+.btn-danger.active,
+.btn-success.active,
+.btn-info.active,
+.btn-inverse.active {
+  color: rgba(255, 255, 255, 0.75);
+}
+.btn {
+  border-color: #ccc;
+  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
+}
+.btn-primary {
+  background-color: #e27428;
+  background-image: -moz-linear-gradient(top, #E26128, #e29028);
+  background-image: -ms-linear-gradient(top, #E26128, #e29028);
+  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#E26128), to(#e29028));
+  background-image: -webkit-linear-gradient(top, #E26128, #e29028);
+  background-image: -o-linear-gradient(top, #E26128, #e29028);
+  background-image: linear-gradient(top, #E26128, #e29028);
+  background-repeat: repeat-x;
+  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#E26128', endColorstr='#e29028', GradientType=0);
+  border-color: #e29028 #e29028 #a76717;
+  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
+  *background-color: #e29028;
+  /* Darken IE7 buttons by default so they stand out more given they won't have borders */
+
+  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
+}
+.btn-primary:hover,
+.btn-primary:active,
+.btn-primary.active,
+.btn-primary.disabled,
+.btn-primary[disabled] {
+  background-color: #e29028;
+  *background-color: #d4831d;
+}
+.btn-primary:active,
+.btn-primary.active {
+  background-color: #bd751a \9;
+}
+.btn-warning {
+  background-color: #faa732;
+  background-image: -moz-linear-gradient(top, #fbb450, #f89406);
+  background-image: -ms-linear-gradient(top, #fbb450, #f89406);
+  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#fbb450), to(#f89406));
+  background-image: -webkit-linear-gradient(top, #fbb450, #f89406);
+  background-image: -o-linear-gradient(top, #fbb450, #f89406);
+  background-image: linear-gradient(top, #fbb450, #f89406);
+  background-repeat: repeat-x;
+  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fbb450', endColorstr='#f89406', GradientType=0);
+  border-color: #f89406 #f89406 #ad6704;
+  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
+  *background-color: #f89406;
+  /* Darken IE7 buttons by default so they stand out more given they won't have borders */
+
+  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
+}
+.btn-warning:hover,
+.btn-warning:active,
+.btn-warning.active,
+.btn-warning.disabled,
+.btn-warning[disabled] {
+  background-color: #f89406;
+  *background-color: #df8505;
+}
+.btn-warning:active,
+.btn-warning.active {
+  background-color: #c67605 \9;
+}
+.btn-danger {
+  background-color: #da4f49;
+  background-image: -moz-linear-gradient(top, #ee5f5b, #bd362f);
+  background-image: -ms-linear-gradient(top, #ee5f5b, #bd362f);
+  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ee5f5b), to(#bd362f));
+  background-image: -webkit-linear-gradient(top, #ee5f5b, #bd362f);
+  background-image: -o-linear-gradient(top, #ee5f5b, #bd362f);
+  background-image: linear-gradient(top, #ee5f5b, #bd362f);
+  background-repeat: repeat-x;
+  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ee5f5b', endColorstr='#bd362f', GradientType=0);
+  border-color: #bd362f #bd362f #802420;
+  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
+  *background-color: #bd362f;
+  /* Darken IE7 buttons by default so they stand out more given they won't have borders */
+
+  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
+}
+.btn-danger:hover,
+.btn-danger:active,
+.btn-danger.active,
+.btn-danger.disabled,
+.btn-danger[disabled] {
+  background-color: #bd362f;
+  *background-color: #a9302a;
+}
+.btn-danger:active,
+.btn-danger.active {
+  background-color: #942a25 \9;
+}
+.btn-success {
+  background-color: #5bb75b;
+  background-image: -moz-linear-gradient(top, #62c462, #51a351);
+  background-image: -ms-linear-gradient(top, #62c462, #51a351);
+  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#62c462), to(#51a351));
+  background-image: -webkit-linear-gradient(top, #62c462, #51a351);
+  background-image: -o-linear-gradient(top, #62c462, #51a351);
+  background-image: linear-gradient(top, #62c462, #51a351);
+  background-repeat: repeat-x;
+  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#62c462', endColorstr='#51a351', GradientType=0);
+  border-color: #51a351 #51a351 #387038;
+  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
+  *background-color: #51a351;
+  /* Darken IE7 buttons by default so they stand out more given they won't have borders */
+
+  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
+}
+.btn-success:hover,
+.btn-success:active,
+.btn-success.active,
+.btn-success.disabled,
+.btn-success[disabled] {
+  background-color: #51a351;
+  *background-color: #499249;
+}
+.btn-success:active,
+.btn-success.active {
+  background-color: #408140 \9;
+}
+.btn-info {
+  background-color: #49afcd;
+  background-image: -moz-linear-gradient(top, #5bc0de, #2f96b4);
+  background-image: -ms-linear-gradient(top, #5bc0de, #2f96b4);
+  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#5bc0de), to(#2f96b4));
+  background-image: -webkit-linear-gradient(top, #5bc0de, #2f96b4);
+  background-image: -o-linear-gradient(top, #5bc0de, #2f96b4);
+  background-image: linear-gradient(top, #5bc0de, #2f96b4);
+  background-repeat: repeat-x;
+  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#5bc0de', endColorstr='#2f96b4', GradientType=0);
+  border-color: #2f96b4 #2f96b4 #1f6377;
+  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
+  *background-color: #2f96b4;
+  /* Darken IE7 buttons by default so they stand out more given they won't have borders */
+
+  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
+}
+.btn-info:hover,
+.btn-info:active,
+.btn-info.active,
+.btn-info.disabled,
+.btn-info[disabled] {
+  background-color: #2f96b4;
+  *background-color: #2a85a0;
+}
+.btn-info:active,
+.btn-info.active {
+  background-color: #24748c \9;
+}
+.btn-inverse {
+  background-color: #625962;
+  background-image: -moz-linear-gradient(top, #7b7e8c, #3d2222);
+  background-image: -ms-linear-gradient(top, #7b7e8c, #3d2222);
+  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#7b7e8c), to(#3d2222));
+  background-image: -webkit-linear-gradient(top, #7b7e8c, #3d2222);
+  background-image: -o-linear-gradient(top, #7b7e8c, #3d2222);
+  background-image: linear-gradient(top, #7b7e8c, #3d2222);
+  background-repeat: repeat-x;
+  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#7b7e8c', endColorstr='#3d2222', GradientType=0);
+  border-color: #3d2222 #3d2222 #0c0707;
+  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
+  *background-color: #3d2222;
+  /* Darken IE7 buttons by default so they stand out more given they won't have borders */
+
+  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
+}
+.btn-inverse:hover,
+.btn-inverse:active,
+.btn-inverse.active,
+.btn-inverse.disabled,
+.btn-inverse[disabled] {
+  background-color: #3d2222;
+  *background-color: #2d1919;
+}
+.btn-inverse:active,
+.btn-inverse.active {
+  background-color: #1c1010 \9;
+}
+button.btn,
+input[type="submit"].btn {
+  *padding-top: 2px;
+  *padding-bottom: 2px;
+}
+button.btn::-moz-focus-inner,
+input[type="submit"].btn::-moz-focus-inner {
+  padding: 0;
+  border: 0;
+}
+button.btn.btn-large,
+input[type="submit"].btn.btn-large {
+  *padding-top: 7px;
+  *padding-bottom: 7px;
+}
+button.btn.btn-small,
+input[type="submit"].btn.btn-small {
+  *padding-top: 3px;
+  *padding-bottom: 3px;
+}
+button.btn.btn-mini,
+input[type="submit"].btn.btn-mini {
+  *padding-top: 1px;
+  *padding-bottom: 1px;
+}
+.btn-group {
+  position: relative;
+  *zoom: 1;
+  *margin-left: .3em;
+}
+.btn-group:before,
+.btn-group:after {
+  display: table;
+  content: "";
+}
+.btn-group:after {
+  clear: both;
+}
+.btn-group:first-child {
+  *margin-left: 0;
+}
+.btn-group + .btn-group {
+  margin-left: 5px;
+}
+.btn-toolbar {
+  margin-top: 9px;
+  margin-bottom: 9px;
+}
+.btn-toolbar .btn-group {
+  display: inline-block;
+  *display: inline;
+  /* IE7 inline-block hack */
+
+  *zoom: 1;
+}
+.btn-group > .btn {
+  position: relative;
+  float: left;
+  margin-left: -1px;
+  -webkit-border-radius: 0;
+  -moz-border-radius: 0;
+  border-radius: 0;
+}
+.btn-group > .btn:first-child {
+  margin-left: 0;
+  -webkit-border-top-left-radius: 4px;
+  -moz-border-radius-topleft: 4px;
+  border-top-left-radius: 4px;
+  -webkit-border-bottom-left-radius: 4px;
+  -moz-border-radius-bottomleft: 4px;
+  border-bottom-left-radius: 4px;
+}
+.btn-group > .btn:last-child,
+.btn-group > .dropdown-toggle {
+  -webkit-border-top-right-radius: 4px;
+  -moz-border-radius-topright: 4px;
+  border-top-right-radius: 4px;
+  -webkit-border-bottom-right-radius: 4px;
+  -moz-border-radius-bottomright: 4px;
+  border-bottom-right-radius: 4px;
+}
+.btn-group > .btn.large:first-child {
+  margin-left: 0;
+  -webkit-border-top-left-radius: 6px;
+  -moz-border-radius-topleft: 6px;
+  border-top-left-radius: 6px;
+  -webkit-border-bottom-left-radius: 6px;
+  -moz-border-radius-bottomleft: 6px;
+  border-bottom-left-radius: 6px;
+}
+.btn-group > .btn.large:last-child,
+.btn-group > .large.dropdown-toggle {
+  -webkit-border-top-right-radius: 6px;
+  -moz-border-radius-topright: 6px;
+  border-top-right-radius: 6px;
+  -webkit-border-bottom-right-radius: 6px;
+  -moz-border-radius-bottomright: 6px;
+  border-bottom-right-radius: 6px;
+}
+.btn-group > .btn:hover,
+.btn-group > .btn:focus,
+.btn-group > .btn:active,
+.btn-group > .btn.active {
+  z-index: 2;
+}
+.btn-group .dropdown-toggle:active,
+.btn-group.open .dropdown-toggle {
+  outline: 0;
+}
+.btn-group > .dropdown-toggle {
+  padding-left: 8px;
+  padding-right: 8px;
+  -webkit-box-shadow: inset 1px 0 0 rgba(255,255,255,.125), inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05);
+  -moz-box-shadow: inset 1px 0 0 rgba(255,255,255,.125), inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05);
+  box-shadow: inset 1px 0 0 rgba(255,255,255,.125), inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05);
+  *padding-top: 4px;
+  *padding-bottom: 4px;
+}
+.btn-group > .btn-mini.dropdown-toggle {
+  padding-left: 5px;
+  padding-right: 5px;
+}
+.btn-group > .btn-small.dropdown-toggle {
+  *padding-top: 4px;
+  *padding-bottom: 4px;
+}
+.btn-group > .btn-large.dropdown-toggle {
+  padding-left: 12px;
+  padding-right: 12px;
+}
+.btn-group.open .dropdown-toggle {
+  background-image: none;
+  -webkit-box-shadow: inset 0 2px 4px rgba(0,0,0,.15), 0 1px 2px rgba(0,0,0,.05);
+  -moz-box-shadow: inset 0 2px 4px rgba(0,0,0,.15), 0 1px 2px rgba(0,0,0,.05);
+  box-shadow: inset 0 2px 4px rgba(0,0,0,.15), 0 1px 2px rgba(0,0,0,.05);
+}
+.btn-group.open .btn.dropdown-toggle {
+  background-color: #000000;
+}
+.btn-group.open .btn-primary.dropdown-toggle {
+  background-color: #e29028;
+}
+.btn-group.open .btn-warning.dropdown-toggle {
+  background-color: #f89406;
+}
+.btn-group.open .btn-danger.dropdown-toggle {
+  background-color: #bd362f;
+}
+.btn-group.open .btn-success.dropdown-toggle {
+  background-color: #51a351;
+}
+.btn-group.open .btn-info.dropdown-toggle {
+  background-color: #2f96b4;
+}
+.btn-group.open .btn-inverse.dropdown-toggle {
+  background-color: #3d2222;
+}
+.btn .caret {
+  margin-top: 7px;
+  margin-left: 0;
+}
+.btn:hover .caret,
+.open.btn-group .caret {
+  opacity: 1;
+  filter: alpha(opacity=100);
+}
+.btn-mini .caret {
+  margin-top: 5px;
+}
+.btn-small .caret {
+  margin-top: 6px;
+}
+.btn-large .caret {
+  margin-top: 6px;
+  border-left-width: 5px;
+  border-right-width: 5px;
+  border-top-width: 5px;
+}
+.dropup .btn-large .caret {
+  border-bottom: 5px solid #1a1515;
+  border-top: 0;
+}
+.btn-primary .caret,
+.btn-warning .caret,
+.btn-danger .caret,
+.btn-info .caret,
+.btn-success .caret,
+.btn-inverse .caret {
+  border-top-color: #1a1515;
+  border-bottom-color: #1a1515;
+  opacity: 0.75;
+  filter: alpha(opacity=75);
+}
+.alert {
+  padding: 8px 35px 8px 14px;
+  margin-bottom: 18px;
+  text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5);
+  background-color: #fcf8e3;
+  border: 1px solid #fbeed5;
+  -webkit-border-radius: 4px;
+  -moz-border-radius: 4px;
+  border-radius: 4px;
+  color: #c09853;
+}
+.alert-heading {
+  color: inherit;
+}
+.alert .close {
+  position: relative;
+  top: -2px;
+  right: -21px;
+  line-height: 18px;
+}
+.alert-success {
+  background-color: #dff0d8;
+  border-color: #d6e9c6;
+  color: #468847;
+}
+.alert-danger,
+.alert-error {
+  background-color: #f2dede;
+  border-color: #eed3d7;
+  color: #b94a48;
+}
+.alert-info {
+  background-color: #d9edf7;
+  border-color: #bce8f1;
+  color: #3a87ad;
+}
+.alert-block {
+  padding-top: 14px;
+  padding-bottom: 14px;
+}
+.alert-block > p,
+.alert-block > ul {
+  margin-bottom: 0;
+}
+.alert-block p + p {
+  margin-top: 5px;
+}
+.nav {
+  margin-left: 0;
+  margin-bottom: 18px;
+  list-style: none;
+}
+.nav > li > a {
+  display: block;
+}
+.nav > li > a:hover {
+  text-decoration: none;
+  background-color: #eb9742;
+}
+.nav > .pull-right {
+  float: right;
+}
+.nav .nav-header {
+  display: block;
+  padding: 3px 15px;
+  font-size: 11px;
+  font-weight: bold;
+  line-height: 18px;
+  color: #E26128;
+  text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5);
+  text-transform: uppercase;
+}
+.nav li + .nav-header {
+  margin-top: 9px;
+}
+.nav-list {
+  padding-left: 15px;
+  padding-right: 15px;
+  margin-bottom: 0;
+}
+.nav-list > li > a,
+.nav-list .nav-header {
+  margin-left: -15px;
+  margin-right: -15px;
+  text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5);
+}
+.nav-list > li > a {
+  padding: 3px 15px;
+}
+.nav-list > .active > a,
+.nav-list > .active > a:hover {
+  color: #1a1515;
+  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.2);
+  background-color: #E26128;
+}
+.nav-list [class^="icon-"] {
+  margin-right: 2px;
+}
+.nav-list .divider {
+  *width: 100%;
+  height: 1px;
+  margin: 8px 1px;
+  *margin: -5px 0 5px;
+  overflow: hidden;
+  background-color: #e5e5e5;
+  border-bottom: 1px solid #1a1515;
+}
+.nav-tabs,
+.nav-pills {
+  *zoom: 1;
+}
+.nav-tabs:before,
+.nav-pills:before,
+.nav-tabs:after,
+.nav-pills:after {
+  display: table;
+  content: "";
+}
+.nav-tabs:after,
+.nav-pills:after {
+  clear: both;
+}
+.nav-tabs > li,
+.nav-pills > li {
+  float: left;
+}
+.nav-tabs > li > a,
+.nav-pills > li > a {
+  padding-right: 12px;
+  padding-left: 12px;
+  margin-right: 2px;
+  line-height: 14px;
+}
+.nav-tabs {
+  border-bottom: 1px solid #ddd;
+}
+.nav-tabs > li {
+  margin-bottom: -1px;
+}
+.nav-tabs > li > a {
+  padding-top: 8px;
+  padding-bottom: 8px;
+  line-height: 18px;
+  border: 1px solid transparent;
+  -webkit-border-radius: 4px 4px 0 0;
+  -moz-border-radius: 4px 4px 0 0;
+  border-radius: 4px 4px 0 0;
+}
+.nav-tabs > li > a:hover {
+  border-color: #eb9742 #eb9742 #dddddd;
+}
+.nav-tabs > .active > a,
+.nav-tabs > .active > a:hover {
+  color: #7b7e8c;
+  background-color: #1a1515;
+  border: 1px solid #ddd;
+  border-bottom-color: transparent;
+  cursor: default;
+}
+.nav-pills > li > a {
+  padding-top: 8px;
+  padding-bottom: 8px;
+  margin-top: 2px;
+  margin-bottom: 2px;
+  -webkit-border-radius: 5px;
+  -moz-border-radius: 5px;
+  border-radius: 5px;
+}
+.nav-pills > .active > a,
+.nav-pills > .active > a:hover {
+  color: #1a1515;
+  background-color: #E26128;
+}
+.nav-stacked > li {
+  float: none;
+}
+.nav-stacked > li > a {
+  margin-right: 0;
+}
+.nav-tabs.nav-stacked {
+  border-bottom: 0;
+}
+.nav-tabs.nav-stacked > li > a {
+  border: 1px solid #ddd;
+  -webkit-border-radius: 0;
+  -moz-border-radius: 0;
+  border-radius: 0;
+}
+.nav-tabs.nav-stacked > li:first-child > a {
+  -webkit-border-radius: 4px 4px 0 0;
+  -moz-border-radius: 4px 4px 0 0;
+  border-radius: 4px 4px 0 0;
+}
+.nav-tabs.nav-stacked > li:last-child > a {
+  -webkit-border-radius: 0 0 4px 4px;
+  -moz-border-radius: 0 0 4px 4px;
+  border-radius: 0 0 4px 4px;
+}
+.nav-tabs.nav-stacked > li > a:hover {
+  border-color: #ddd;
+  z-index: 2;
+}
+.nav-pills.nav-stacked > li > a {
+  margin-bottom: 3px;
+}
+.nav-pills.nav-stacked > li:last-child > a {
+  margin-bottom: 1px;
+}
+.nav-tabs .dropdown-menu {
+  -webkit-border-radius: 0 0 5px 5px;
+  -moz-border-radius: 0 0 5px 5px;
+  border-radius: 0 0 5px 5px;
+}
+.nav-pills .dropdown-menu {
+  -webkit-border-radius: 4px;
+  -moz-border-radius: 4px;
+  border-radius: 4px;
+}
+.nav-tabs .dropdown-toggle .caret,
+.nav-pills .dropdown-toggle .caret {
+  border-top-color: #E26128;
+  border-bottom-color: #E26128;
+  margin-top: 6px;
+}
+.nav-tabs .dropdown-toggle:hover .caret,
+.nav-pills .dropdown-toggle:hover .caret {
+  border-top-color: #a74317;
+  border-bottom-color: #a74317;
+}
+.nav-tabs .active .dropdown-toggle .caret,
+.nav-pills .active .dropdown-toggle .caret {
+  border-top-color: #5e3534;
+  border-bottom-color: #5e3534;
+}
+.nav > .dropdown.active > a:hover {
+  color: #1a1515;
+  cursor: pointer;
+}
+.nav-tabs .open .dropdown-toggle,
+.nav-pills .open .dropdown-toggle,
+.nav > li.dropdown.open.active > a:hover {
+  color: #1a1515;
+  background-color: #E26128;
+  border-color: #E26128;
+}
+.nav li.dropdown.open .caret,
+.nav li.dropdown.open.active .caret,
+.nav li.dropdown.open a:hover .caret {
+  border-top-color: #1a1515;
+  border-bottom-color: #1a1515;
+  opacity: 1;
+  filter: alpha(opacity=100);
+}
+.tabs-stacked .open > a:hover {
+  border-color: #E26128;
+}
+.tabbable {
+  *zoom: 1;
+}
+.tabbable:before,
+.tabbable:after {
+  display: table;
+  content: "";
+}
+.tabbable:after {
+  clear: both;
+}
+.tab-content {
+  overflow: auto;
+}
+.tabs-below > .nav-tabs,
+.tabs-right > .nav-tabs,
+.tabs-left > .nav-tabs {
+  border-bottom: 0;
+}
+.tab-content > .tab-pane,
+.pill-content > .pill-pane {
+  display: none;
+}
+.tab-content > .active,
+.pill-content > .active {
+  display: block;
+}
+.tabs-below > .nav-tabs {
+  border-top: 1px solid #ddd;
+}
+.tabs-below > .nav-tabs > li {
+  margin-top: -1px;
+  margin-bottom: 0;
+}
+.tabs-below > .nav-tabs > li > a {
+  -webkit-border-radius: 0 0 4px 4px;
+  -moz-border-radius: 0 0 4px 4px;
+  border-radius: 0 0 4px 4px;
+}
+.tabs-below > .nav-tabs > li > a:hover {
+  border-bottom-color: transparent;
+  border-top-color: #ddd;
+}
+.tabs-below > .nav-tabs > .active > a,
+.tabs-below > .nav-tabs > .active > a:hover {
+  border-color: transparent #ddd #ddd #ddd;
+}
+.tabs-left > .nav-tabs > li,
+.tabs-right > .nav-tabs > li {
+  float: none;
+}
+.tabs-left > .nav-tabs > li > a,
+.tabs-right > .nav-tabs > li > a {
+  min-width: 74px;
+  margin-right: 0;
+  margin-bottom: 3px;
+}
+.tabs-left > .nav-tabs {
+  float: left;
+  margin-right: 19px;
+  border-right: 1px solid #ddd;
+}
+.tabs-left > .nav-tabs > li > a {
+  margin-right: -1px;
+  -webkit-border-radius: 4px 0 0 4px;
+  -moz-border-radius: 4px 0 0 4px;
+  border-radius: 4px 0 0 4px;
+}
+.tabs-left > .nav-tabs > li > a:hover {
+  border-color: #eb9742 #dddddd #eb9742 #eb9742;
+}
+.tabs-left > .nav-tabs .active > a,
+.tabs-left > .nav-tabs .active > a:hover {
+  border-color: #ddd transparent #ddd #ddd;
+  *border-right-color: #1a1515;
+}
+.tabs-right > .nav-tabs {
+  float: right;
+  margin-left: 19px;
+  border-left: 1px solid #ddd;
+}
+.tabs-right > .nav-tabs > li > a {
+  margin-left: -1px;
+  -webkit-border-radius: 0 4px 4px 0;
+  -moz-border-radius: 0 4px 4px 0;
+  border-radius: 0 4px 4px 0;
+}
+.tabs-right > .nav-tabs > li > a:hover {
+  border-color: #eb9742 #eb9742 #eb9742 #dddddd;
+}
+.tabs-right > .nav-tabs .active > a,
+.tabs-right > .nav-tabs .active > a:hover {
+  border-color: #ddd #ddd #ddd transparent;
+  *border-left-color: #1a1515;
+}
+.navbar {
+  *position: relative;
+  *z-index: 2;
+  overflow: visible;
+  margin-bottom: 18px;
+}
+.navbar-inner {
+  min-height: 40px;
+  padding-left: 20px;
+  padding-right: 20px;
+  background-color: #512e2d;
+  background-image: -moz-linear-gradient(top, #5e3534, #3d2222);
+  background-image: -ms-linear-gradient(top, #5e3534, #3d2222);
+  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#5e3534), to(#3d2222));
+  background-image: -webkit-linear-gradient(top, #5e3534, #3d2222);
+  background-image: -o-linear-gradient(top, #5e3534, #3d2222);
+  background-image: linear-gradient(top, #5e3534, #3d2222);
+  background-repeat: repeat-x;
+  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#5e3534', endColorstr='#3d2222', GradientType=0);
+  -webkit-border-radius: 4px;
+  -moz-border-radius: 4px;
+  border-radius: 4px;
+  -webkit-box-shadow: 0 1px 3px rgba(0,0,0,.25), inset 0 -1px 0 rgba(0,0,0,.1);
+  -moz-box-shadow: 0 1px 3px rgba(0,0,0,.25), inset 0 -1px 0 rgba(0,0,0,.1);
+  box-shadow: 0 1px 3px rgba(0,0,0,.25), inset 0 -1px 0 rgba(0,0,0,.1);
+}
+.navbar .container {
+  width: auto;
+}
+.nav-collapse.collapse {
+  height: auto;
+}
+.navbar {
+  color: #E26128;
+}
+.navbar .brand:hover {
+  text-decoration: none;
+}
+.navbar .brand {
+  float: left;
+  display: block;
+  padding: 8px 20px 12px;
+  margin-left: -20px;
+  font-size: 20px;
+  font-weight: 200;
+  line-height: 1;
+  color: #E26128;
+}
+.navbar .navbar-text {
+  margin-bottom: 0;
+  line-height: 40px;
+}
+.navbar .navbar-link {
+  color: #E26128;
+}
+.navbar .navbar-link:hover {
+  color: #1a1515;
+}
+.navbar .btn,
+.navbar .btn-group {
+  margin-top: 5px;
+}
+.navbar .btn-group .btn {
+  margin: 0;
+}
+.navbar-form {
+  margin-bottom: 0;
+  *zoom: 1;
+}
+.navbar-form:before,
+.navbar-form:after {
+  display: table;
+  content: "";
+}
+.navbar-form:after {
+  clear: both;
+}
+.navbar-form input,
+.navbar-form select,
+.navbar-form .radio,
+.navbar-form .checkbox {
+  margin-top: 5px;
+}
+.navbar-form input,
+.navbar-form select {
+  display: inline-block;
+  margin-bottom: 0;
+}
+.navbar-form input[type="image"],
+.navbar-form input[type="checkbox"],
+.navbar-form input[type="radio"] {
+  margin-top: 3px;
+}
+.navbar-form .input-append,
+.navbar-form .input-prepend {
+  margin-top: 6px;
+  white-space: nowrap;
+}
+.navbar-form .input-append input,
+.navbar-form .input-prepend input {
+  margin-top: 0;
+}
+.navbar-search {
+  position: relative;
+  float: left;
+  margin-top: 6px;
+  margin-bottom: 0;
+}
+.navbar-search .search-query {
+  padding: 4px 9px;
+  font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
+  font-size: 13px;
+  font-weight: normal;
+  line-height: 1;
+  color: #1a1515;
+  background-color: #8f514f;
+  border: 1px solid #2d1919;
+  -webkit-box-shadow: inset 0 1px 2px rgba(0,0,0,.1), 0 1px 0 rgba(255,255,255,.15);
+  -moz-box-shadow: inset 0 1px 2px rgba(0,0,0,.1), 0 1px 0 rgba(255,255,255,.15);
+  box-shadow: inset 0 1px 2px rgba(0,0,0,.1), 0 1px 0 rgba(255,255,255,.15);
+  -webkit-transition: none;
+  -moz-transition: none;
+  -ms-transition: none;
+  -o-transition: none;
+  transition: none;
+}
+.navbar-search .search-query:-moz-placeholder {
+  color: #cccccc;
+}
+.navbar-search .search-query::-webkit-input-placeholder {
+  color: #cccccc;
+}
+.navbar-search .search-query:focus,
+.navbar-search .search-query.focused {
+  padding: 5px 10px;
+  color: #5e3534;
+  text-shadow: 0 1px 0 #1a1515;
+  background-color: #1a1515;
+  border: 0;
+  -webkit-box-shadow: 0 0 3px rgba(0, 0, 0, 0.15);
+  -moz-box-shadow: 0 0 3px rgba(0, 0, 0, 0.15);
+  box-shadow: 0 0 3px rgba(0, 0, 0, 0.15);
+  outline: 0;
+}
+.navbar-fixed-top,
+.navbar-fixed-bottom {
+  position: fixed;
+  right: 0;
+  left: 0;
+  z-index: 1030;
+  margin-bottom: 0;
+}
+.navbar-fixed-top .navbar-inner,
+.navbar-fixed-bottom .navbar-inner {
+  padding-left: 0;
+  padding-right: 0;
+  -webkit-border-radius: 0;
+  -moz-border-radius: 0;
+  border-radius: 0;
+}
+.navbar-fixed-top .container,
+.navbar-fixed-bottom .container {
+  width: 940px;
+}
+.navbar-fixed-top {
+  top: 0;
+}
+.navbar-fixed-bottom {
+  bottom: 0;
+}
+.navbar .nav {
+  position: relative;
+  left: 0;
+  display: block;
+  float: left;
+  margin: 0 10px 0 0;
+}
+.navbar .nav.pull-right {
+  float: right;
+}
+.navbar .nav > li {
+  display: block;
+  float: left;
+}
+.navbar .nav > li > a {
+  float: none;
+  padding: 9px 10px 11px;
+  line-height: 19px;
+  color: #E26128;
+  text-decoration: none;
+  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
+}
+.navbar .btn {
+  display: inline-block;
+  padding: 4px 10px 4px;
+  margin: 5px 5px 6px;
+  line-height: 18px;
+}
+.navbar .btn-group {
+  margin: 0;
+  padding: 5px 5px 6px;
+}
+.navbar .nav > li > a:hover {
+  background-color: transparent;
+  color: #B8B7B6;
+  text-decoration: none;
+}
+.navbar .nav .active > a,
+.navbar .nav .active > a:hover {
+  color: #1a1515;
+  text-decoration: none;
+  background-color: #3d2222;
+}
+.navbar .divider-vertical {
+  height: 40px;
+  width: 1px;
+  margin: 0 9px;
+  overflow: hidden;
+  background-color: #3d2222;
+  border-right: 1px solid #5e3534;
+}
+.navbar .nav.pull-right {
+  margin-left: 10px;
+  margin-right: 0;
+}
+.navbar .btn-navbar {
+  display: none;
+  float: right;
+  padding: 7px 10px;
+  margin-left: 5px;
+  margin-right: 5px;
+  background-color: #512e2d;
+  background-image: -moz-linear-gradient(top, #5e3534, #3d2222);
+  background-image: -ms-linear-gradient(top, #5e3534, #3d2222);
+  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#5e3534), to(#3d2222));
+  background-image: -webkit-linear-gradient(top, #5e3534, #3d2222);
+  background-image: -o-linear-gradient(top, #5e3534, #3d2222);
+  background-image: linear-gradient(top, #5e3534, #3d2222);
+  background-repeat: repeat-x;
+  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#5e3534', endColorstr='#3d2222', GradientType=0);
+  border-color: #3d2222 #3d2222 #0c0707;
+  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
+  *background-color: #3d2222;
+  /* Darken IE7 buttons by default so they stand out more given they won't have borders */
+
+  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
+  -webkit-box-shadow: inset 0 1px 0 rgba(255,255,255,.1), 0 1px 0 rgba(255,255,255,.075);
+  -moz-box-shadow: inset 0 1px 0 rgba(255,255,255,.1), 0 1px 0 rgba(255,255,255,.075);
+  box-shadow: inset 0 1px 0 rgba(255,255,255,.1), 0 1px 0 rgba(255,255,255,.075);
+}
+.navbar .btn-navbar:hover,
+.navbar .btn-navbar:active,
+.navbar .btn-navbar.active,
+.navbar .btn-navbar.disabled,
+.navbar .btn-navbar[disabled] {
+  background-color: #3d2222;
+  *background-color: #2d1919;
+}
+.navbar .btn-navbar:active,
+.navbar .btn-navbar.active {
+  background-color: #1c1010 \9;
+}
+.navbar .btn-navbar .icon-bar {
+  display: block;
+  width: 18px;
+  height: 2px;
+  background-color: #f5f5f5;
+  -webkit-border-radius: 1px;
+  -moz-border-radius: 1px;
+  border-radius: 1px;
+  -webkit-box-shadow: 0 1px 0 rgba(0, 0, 0, 0.25);
+  -moz-box-shadow: 0 1px 0 rgba(0, 0, 0, 0.25);
+  box-shadow: 0 1px 0 rgba(0, 0, 0, 0.25);
+}
+.btn-navbar .icon-bar + .icon-bar {
+  margin-top: 3px;
+}
+.navbar .dropdown-menu:before {
+  content: '';
+  display: inline-block;
+  border-left: 7px solid transparent;
+  border-right: 7px solid transparent;
+  border-bottom: 7px solid #ccc;
+  border-bottom-color: rgba(0, 0, 0, 0.2);
+  position: absolute;
+  top: -7px;
+  left: 9px;
+}
+.navbar .dropdown-menu:after {
+  content: '';
+  display: inline-block;
+  border-left: 6px solid transparent;
+  border-right: 6px solid transparent;
+  border-bottom: 6px solid #1a1515;
+  position: absolute;
+  top: -6px;
+  left: 10px;
+}
+.navbar-fixed-bottom .dropdown-menu:before {
+  border-top: 7px solid #ccc;
+  border-top-color: rgba(0, 0, 0, 0.2);
+  border-bottom: 0;
+  bottom: -7px;
+  top: auto;
+}
+.navbar-fixed-bottom .dropdown-menu:after {
+  border-top: 6px solid #1a1515;
+  border-bottom: 0;
+  bottom: -6px;
+  top: auto;
+}
+.navbar .nav li.dropdown .dropdown-toggle .caret,
+.navbar .nav li.dropdown.open .caret {
+  border-top-color: #1a1515;
+  border-bottom-color: #1a1515;
+}
+.navbar .nav li.dropdown.active .caret {
+  opacity: 1;
+  filter: alpha(opacity=100);
+}
+.navbar .nav li.dropdown.open > .dropdown-toggle,
+.navbar .nav li.dropdown.active > .dropdown-toggle,
+.navbar .nav li.dropdown.open.active > .dropdown-toggle {
+  background-color: transparent;
+}
+.navbar .nav li.dropdown.active > .dropdown-toggle:hover {
+  color: #1a1515;
+}
+.navbar .pull-right .dropdown-menu,
+.navbar .dropdown-menu.pull-right {
+  left: auto;
+  right: 0;
+}
+.navbar .pull-right .dropdown-menu:before,
+.navbar .dropdown-menu.pull-right:before {
+  left: auto;
+  right: 12px;
+}
+.navbar .pull-right .dropdown-menu:after,
+.navbar .dropdown-menu.pull-right:after {
+  left: auto;
+  right: 13px;
+}
+.breadcrumb {
+  padding: 7px 14px;
+  margin: 0 0 18px;
+  list-style: none;
+  background-color: #726f6f;
+  background-image: -moz-linear-gradient(top, #1a1515, #f5f5f5);
+  background-image: -ms-linear-gradient(top, #1a1515, #f5f5f5);
+  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#1a1515), to(#f5f5f5));
+  background-image: -webkit-linear-gradient(top, #1a1515, #f5f5f5);
+  background-image: -o-linear-gradient(top, #1a1515, #f5f5f5);
+  background-image: linear-gradient(top, #1a1515, #f5f5f5);
+  background-repeat: repeat-x;
+  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#1a1515', endColorstr='#f5f5f5', GradientType=0);
+  border: 1px solid #ddd;
+  -webkit-border-radius: 3px;
+  -moz-border-radius: 3px;
+  border-radius: 3px;
+  -webkit-box-shadow: inset 0 1px 0 #1a1515;
+  -moz-box-shadow: inset 0 1px 0 #1a1515;
+  box-shadow: inset 0 1px 0 #1a1515;
+}
+.breadcrumb li {
+  display: inline-block;
+  *display: inline;
+  /* IE7 inline-block hack */
+
+  *zoom: 1;
+  text-shadow: 0 1px 0 #1a1515;
+}
+.breadcrumb .divider {
+  padding: 0 5px;
+  color: #E26128;
+}
+.breadcrumb .active a {
+  color: #5e3534;
+}
+.pagination {
+  height: 36px;
+  margin: 18px 0;
+}
+.pagination ul {
+  display: inline-block;
+  *display: inline;
+  /* IE7 inline-block hack */
+
+  *zoom: 1;
+  margin-left: 0;
+  margin-bottom: 0;
+  -webkit-border-radius: 3px;
+  -moz-border-radius: 3px;
+  border-radius: 3px;
+  -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);
+  -moz-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);
+  box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);
+}
+.pagination li {
+  display: inline;
+}
+.pagination a {
+  float: left;
+  padding: 0 14px;
+  line-height: 34px;
+  text-decoration: none;
+  border: 1px solid #ddd;
+  border-left-width: 0;
+}
+.pagination a:hover,
+.pagination .active a {
+  background-color: #f5f5f5;
+}
+.pagination .active a {
+  color: #E26128;
+  cursor: default;
+}
+.pagination .disabled span,
+.pagination .disabled a,
+.pagination .disabled a:hover {
+  color: #E26128;
+  background-color: transparent;
+  cursor: default;
+}
+.pagination li:first-child a {
+  border-left-width: 1px;
+  -webkit-border-radius: 3px 0 0 3px;
+  -moz-border-radius: 3px 0 0 3px;
+  border-radius: 3px 0 0 3px;
+}
+.pagination li:last-child a {
+  -webkit-border-radius: 0 3px 3px 0;
+  -moz-border-radius: 0 3px 3px 0;
+  border-radius: 0 3px 3px 0;
+}
+.pagination-centered {
+  text-align: center;
+}
+.pagination-right {
+  text-align: right;
+}
+.pager {
+  margin-left: 0;
+  margin-bottom: 18px;
+  list-style: none;
+  text-align: center;
+  *zoom: 1;
+}
+.pager:before,
+.pager:after {
+  display: table;
+  content: "";
+}
+.pager:after {
+  clear: both;
+}
+.pager li {
+  display: inline;
+}
+.pager a {
+  display: inline-block;
+  padding: 5px 14px;
+  background-color: #fff;
+  border: 1px solid #ddd;
+  -webkit-border-radius: 15px;
+  -moz-border-radius: 15px;
+  border-radius: 15px;
+}
+.pager a:hover {
+  text-decoration: none;
+  background-color: #f5f5f5;
+}
+.pager .next a {
+  float: right;
+}
+.pager .previous a {
+  float: left;
+}
+.pager .disabled a,
+.pager .disabled a:hover {
+  color: #E26128;
+  background-color: #fff;
+  cursor: default;
+}
+.modal-open .dropdown-menu {
+  z-index: 2050;
+}
+.modal-open .dropdown.open {
+  *z-index: 2050;
+}
+.modal-open .popover {
+  z-index: 2060;
+}
+.modal-open .tooltip {
+  z-index: 2070;
+}
+.modal-backdrop {
+  position: fixed;
+  top: 0;
+  right: 0;
+  bottom: 0;
+  left: 0;
+  z-index: 1040;
+  background-color: #1a1515;
+}
+.modal-backdrop.fade {
+  opacity: 0;
+}
+.modal-backdrop,
+.modal-backdrop.fade.in {
+  opacity: 0.8;
+  filter: alpha(opacity=80);
+}
+.modal {
+  position: fixed;
+  top: 50%;
+  left: 50%;
+  z-index: 1050;
+  overflow: auto;
+  width: 560px;
+  margin: -250px 0 0 -280px;
+  background-color: #1a1515;
+  border: 1px solid #999;
+  border: 1px solid rgba(0, 0, 0, 0.3);
+  *border: 1px solid #999;
+  /* IE6-7 */
+
+  -webkit-border-radius: 6px;
+  -moz-border-radius: 6px;
+  border-radius: 6px;
+  -webkit-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3);
+  -moz-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3);
+  box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3);
+  -webkit-background-clip: padding-box;
+  -moz-background-clip: padding-box;
+  background-clip: padding-box;
+}
+.modal.fade {
+  -webkit-transition: opacity .3s linear, top .3s ease-out;
+  -moz-transition: opacity .3s linear, top .3s ease-out;
+  -ms-transition: opacity .3s linear, top .3s ease-out;
+  -o-transition: opacity .3s linear, top .3s ease-out;
+  transition: opacity .3s linear, top .3s ease-out;
+  top: -25%;
+}
+.modal.fade.in {
+  top: 50%;
+}
+.modal-header {
+  padding: 9px 15px;
+  border-bottom: 1px solid #eee;
+}
+.modal-header .close {
+  margin-top: 2px;
+}
+.modal-body {
+  overflow-y: auto;
+  max-height: 400px;
+  padding: 15px;
+}
+.modal-form {
+  margin-bottom: 0;
+}
+.modal-footer {
+  padding: 14px 15px 15px;
+  margin-bottom: 0;
+  text-align: right;
+  background-color: #f5f5f5;
+  border-top: 1px solid #ddd;
+  -webkit-border-radius: 0 0 6px 6px;
+  -moz-border-radius: 0 0 6px 6px;
+  border-radius: 0 0 6px 6px;
+  -webkit-box-shadow: inset 0 1px 0 #1a1515;
+  -moz-box-shadow: inset 0 1px 0 #1a1515;
+  box-shadow: inset 0 1px 0 #1a1515;
+  *zoom: 1;
+}
+.modal-footer:before,
+.modal-footer:after {
+  display: table;
+  content: "";
+}
+.modal-footer:after {
+  clear: both;
+}
+.modal-footer .btn + .btn {
+  margin-left: 5px;
+  margin-bottom: 0;
+}
+.modal-footer .btn-group .btn + .btn {
+  margin-left: -1px;
+}
+.tooltip {
+  position: absolute;
+  z-index: 1020;
+  display: block;
+  visibility: visible;
+  padding: 5px;
+  font-size: 11px;
+  opacity: 0;
+  filter: alpha(opacity=0);
+}
+.tooltip.in {
+  opacity: 0.8;
+  filter: alpha(opacity=80);
+}
+.tooltip.top {
+  margin-top: -2px;
+}
+.tooltip.right {
+  margin-left: 2px;
+}
+.tooltip.bottom {
+  margin-top: 2px;
+}
+.tooltip.left {
+  margin-left: -2px;
+}
+.tooltip.top .tooltip-arrow {
+  bottom: 0;
+  left: 50%;
+  margin-left: -5px;
+  border-left: 5px solid transparent;
+  border-right: 5px solid transparent;
+  border-top: 5px solid #1a1515;
+}
+.tooltip.left .tooltip-arrow {
+  top: 50%;
+  right: 0;
+  margin-top: -5px;
+  border-top: 5px solid transparent;
+  border-bottom: 5px solid transparent;
+  border-left: 5px solid #1a1515;
+}
+.tooltip.bottom .tooltip-arrow {
+  top: 0;
+  left: 50%;
+  margin-left: -5px;
+  border-left: 5px solid transparent;
+  border-right: 5px solid transparent;
+  border-bottom: 5px solid #1a1515;
+}
+.tooltip.right .tooltip-arrow {
+  top: 50%;
+  left: 0;
+  margin-top: -5px;
+  border-top: 5px solid transparent;
+  border-bottom: 5px solid transparent;
+  border-right: 5px solid #1a1515;
+}
+.tooltip-inner {
+  max-width: 200px;
+  padding: 3px 8px;
+  color: #1a1515;
+  text-align: center;
+  text-decoration: none;
+  background-color: #1a1515;
+  -webkit-border-radius: 4px;
+  -moz-border-radius: 4px;
+  border-radius: 4px;
+}
+.tooltip-arrow {
+  position: absolute;
+  width: 0;
+  height: 0;
+}
+.popover {
+  position: absolute;
+  top: 0;
+  left: 0;
+  z-index: 1010;
+  display: none;
+  padding: 5px;
+}
+.popover.top {
+  margin-top: -5px;
+}
+.popover.right {
+  margin-left: 5px;
+}
+.popover.bottom {
+  margin-top: 5px;
+}
+.popover.left {
+  margin-left: -5px;
+}
+.popover.top .arrow {
+  bottom: 0;
+  left: 50%;
+  margin-left: -5px;
+  border-left: 5px solid transparent;
+  border-right: 5px solid transparent;
+  border-top: 5px solid #1a1515;
+}
+.popover.right .arrow {
+  top: 50%;
+  left: 0;
+  margin-top: -5px;
+  border-top: 5px solid transparent;
+  border-bottom: 5px solid transparent;
+  border-right: 5px solid #1a1515;
+}
+.popover.bottom .arrow {
+  top: 0;
+  left: 50%;
+  margin-left: -5px;
+  border-left: 5px solid transparent;
+  border-right: 5px solid transparent;
+  border-bottom: 5px solid #1a1515;
+}
+.popover.left .arrow {
+  top: 50%;
+  right: 0;
+  margin-top: -5px;
+  border-top: 5px solid transparent;
+  border-bottom: 5px solid transparent;
+  border-left: 5px solid #1a1515;
+}
+.popover .arrow {
+  position: absolute;
+  width: 0;
+  height: 0;
+}
+.popover-inner {
+  padding: 3px;
+  width: 280px;
+  overflow: hidden;
+  background: #1a1515;
+  background: rgba(0, 0, 0, 0.8);
+  -webkit-border-radius: 6px;
+  -moz-border-radius: 6px;
+  border-radius: 6px;
+  -webkit-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3);
+  -moz-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3);
+  box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3);
+}
+.popover-title {
+  padding: 9px 15px;
+  line-height: 1;
+  background-color: #f5f5f5;
+  border-bottom: 1px solid #eee;
+  -webkit-border-radius: 3px 3px 0 0;
+  -moz-border-radius: 3px 3px 0 0;
+  border-radius: 3px 3px 0 0;
+}
+.popover-content {
+  padding: 14px;
+  background-color: #1a1515;
+  -webkit-border-radius: 0 0 3px 3px;
+  -moz-border-radius: 0 0 3px 3px;
+  border-radius: 0 0 3px 3px;
+  -webkit-background-clip: padding-box;
+  -moz-background-clip: padding-box;
+  background-clip: padding-box;
+}
+.popover-content p,
+.popover-content ul,
+.popover-content ol {
+  margin-bottom: 0;
+}
+.thumbnails {
+  margin-left: -20px;
+  list-style: none;
+  *zoom: 1;
+}
+.thumbnails:before,
+.thumbnails:after {
+  display: table;
+  content: "";
+}
+.thumbnails:after {
+  clear: both;
+}
+.row-fluid .thumbnails {
+  margin-left: 0;
+}
+.thumbnails > li {
+  float: left;
+  margin-bottom: 18px;
+  margin-left: 20px;
+}
+.thumbnail {
+  display: block;
+  padding: 4px;
+  line-height: 1;
+  border: 1px solid #ddd;
+  -webkit-border-radius: 4px;
+  -moz-border-radius: 4px;
+  border-radius: 4px;
+  -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.075);
+  -moz-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.075);
+  box-shadow: 0 1px 1px rgba(0, 0, 0, 0.075);
+}
+a.thumbnail:hover {
+  border-color: #E26128;
+  -webkit-box-shadow: 0 1px 4px rgba(0, 105, 214, 0.25);
+  -moz-box-shadow: 0 1px 4px rgba(0, 105, 214, 0.25);
+  box-shadow: 0 1px 4px rgba(0, 105, 214, 0.25);
+}
+.thumbnail > img {
+  display: block;
+  max-width: 100%;
+  margin-left: auto;
+  margin-right: auto;
+}
+.thumbnail .caption {
+  padding: 9px;
+}
+.label,
+.badge {
+  font-size: 10.998px;
+  font-weight: bold;
+  line-height: 14px;
+  color: #1a1515;
+  vertical-align: baseline;
+  white-space: nowrap;
+  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
+  background-color: #E26128;
+}
+.label {
+  padding: 1px 4px 2px;
+  -webkit-border-radius: 3px;
+  -moz-border-radius: 3px;
+  border-radius: 3px;
+}
+.badge {
+  padding: 1px 9px 2px;
+  -webkit-border-radius: 9px;
+  -moz-border-radius: 9px;
+  border-radius: 9px;
+}
+a.label:hover,
+a.badge:hover {
+  color: #1a1515;
+  text-decoration: none;
+  cursor: pointer;
+}
+.label-important,
+.badge-important {
+  background-color: #b94a48;
+}
+.label-important[href],
+.badge-important[href] {
+  background-color: #953b39;
+}
+.label-warning,
+.badge-warning {
+  background-color: #f89406;
+}
+.label-warning[href],
+.badge-warning[href] {
+  background-color: #c67605;
+}
+.label-success,
+.badge-success {
+  background-color: #468847;
+}
+.label-success[href],
+.badge-success[href] {
+  background-color: #356635;
+}
+.label-info,
+.badge-info {
+  background-color: #7B7E8C; /* STE #3a87ad; */
+}
+.label-info[href],
+.badge-info[href] {
+  background-color: #2d6987;
+}
+.label-inverse,
+.badge-inverse {
+  background-color: #5e3534;
+}
+.label-inverse[href],
+.badge-inverse[href] {
+  background-color: #3d2222;
+}
+@-webkit-keyframes progress-bar-stripes {
+  from {
+    background-position: 40px 0;
+  }
+  to {
+    background-position: 0 0;
+  }
+}
+@-moz-keyframes progress-bar-stripes {
+  from {
+    background-position: 40px 0;
+  }
+  to {
+    background-position: 0 0;
+  }
+}
+@-ms-keyframes progress-bar-stripes {
+  from {
+    background-position: 40px 0;
+  }
+  to {
+    background-position: 0 0;
+  }
+}
+@-o-keyframes progress-bar-stripes {
+  from {
+    background-position: 0 0;
+  }
+  to {
+    background-position: 40px 0;
+  }
+}
+@keyframes progress-bar-stripes {
+  from {
+    background-position: 40px 0;
+  }
+  to {
+    background-position: 0 0;
+  }
+}
+.progress {
+  overflow: hidden;
+  height: 18px;
+  margin-bottom: 18px;
+  background-color: #f7f7f7;
+  background-image: -moz-linear-gradient(top, #f5f5f5, #f9f9f9);
+  background-image: -ms-linear-gradient(top, #f5f5f5, #f9f9f9);
+  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#f5f5f5), to(#f9f9f9));
+  background-image: -webkit-linear-gradient(top, #f5f5f5, #f9f9f9);
+  background-image: -o-linear-gradient(top, #f5f5f5, #f9f9f9);
+  background-image: linear-gradient(top, #f5f5f5, #f9f9f9);
+  background-repeat: repeat-x;
+  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#f5f5f5', endColorstr='#f9f9f9', GradientType=0);
+  -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);
+  -moz-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);
+  box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);
+  -webkit-border-radius: 4px;
+  -moz-border-radius: 4px;
+  border-radius: 4px;
+}
+.progress .bar {
+  width: 0%;
+  height: 18px;
+  color: #1a1515;
+  font-size: 12px;
+  text-align: center;
+  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
+  background-color: #0e90d2;
+  background-image: -moz-linear-gradient(top, #149bdf, #0480be);
+  background-image: -ms-linear-gradient(top, #149bdf, #0480be);
+  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#149bdf), to(#0480be));
+  background-image: -webkit-linear-gradient(top, #149bdf, #0480be);
+  background-image: -o-linear-gradient(top, #149bdf, #0480be);
+  background-image: linear-gradient(top, #149bdf, #0480be);
+  background-repeat: repeat-x;
+  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#149bdf', endColorstr='#0480be', GradientType=0);
+  -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15);
+  -moz-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15);
+  box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15);
+  -webkit-box-sizing: border-box;
+  -moz-box-sizing: border-box;
+  -ms-box-sizing: border-box;
+  box-sizing: border-box;
+/*  -webkit-transition: width 0.6s ease;
+  -moz-transition: width 0.6s ease;
+  -ms-transition: width 0.6s ease;
+  -o-transition: width 0.6s ease;
+  transition: width 0.6s ease;  STE removed transition*/
+}
+.progress-striped .bar {
+  background-color: #A2412D; /* STE #149bdf */;
+  background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent));
+  background-image: -webkit-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+  background-image: -moz-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+  background-image: -ms-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+  background-image: -o-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+  background-image: linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+  -webkit-background-size: 40px 40px;
+  -moz-background-size: 40px 40px;
+  -o-background-size: 40px 40px;
+  background-size: 40px 40px;
+}
+.progress.active .bar {
+  -webkit-animation: progress-bar-stripes 2s linear infinite;
+  -moz-animation: progress-bar-stripes 2s linear infinite;
+  -ms-animation: progress-bar-stripes 2s linear infinite;
+  -o-animation: progress-bar-stripes 2s linear infinite;
+  animation: progress-bar-stripes 2s linear infinite;
+}
+.progress-danger .bar {
+  background-color: #dd514c;
+  background-image: -moz-linear-gradient(top, #ee5f5b, #c43c35);
+  background-image: -ms-linear-gradient(top, #ee5f5b, #c43c35);
+  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ee5f5b), to(#c43c35));
+  background-image: -webkit-linear-gradient(top, #ee5f5b, #c43c35);
+  background-image: -o-linear-gradient(top, #ee5f5b, #c43c35);
+  background-image: linear-gradient(top, #ee5f5b, #c43c35);
+  background-repeat: repeat-x;
+  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ee5f5b', endColorstr='#c43c35', GradientType=0);
+}
+.progress-danger.progress-striped .bar {
+  background-color: #ee5f5b;
+  background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent));
+  background-image: -webkit-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+  background-image: -moz-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+  background-image: -ms-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+  background-image: -o-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+  background-image: linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+}
+.progress-success .bar {
+  background-color: #5eb95e;
+  background-image: -moz-linear-gradient(top, #62c462, #57a957);
+  background-image: -ms-linear-gradient(top, #62c462, #57a957);
+  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#62c462), to(#57a957));
+  background-image: -webkit-linear-gradient(top, #62c462, #57a957);
+  background-image: -o-linear-gradient(top, #62c462, #57a957);
+  background-image: linear-gradient(top, #62c462, #57a957);
+  background-repeat: repeat-x;
+  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#62c462', endColorstr='#57a957', GradientType=0);
+}
+.progress-success.progress-striped .bar {
+  background-color: #62c462;
+  background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent));
+  background-image: -webkit-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+  background-image: -moz-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+  background-image: -ms-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+  background-image: -o-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+  background-image: linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+}
+.progress-info .bar {
+  background-color: #4bb1cf;
+  background-image: -moz-linear-gradient(top, #5bc0de, #339bb9);
+  background-image: -ms-linear-gradient(top, #5bc0de, #339bb9);
+  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#5bc0de), to(#339bb9));
+  background-image: -webkit-linear-gradient(top, #5bc0de, #339bb9);
+  background-image: -o-linear-gradient(top, #5bc0de, #339bb9);
+  background-image: linear-gradient(top, #5bc0de, #339bb9);
+  background-repeat: repeat-x;
+  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#5bc0de', endColorstr='#339bb9', GradientType=0);
+}
+.progress-info.progress-striped .bar {
+  background-color: #5bc0de;
+  background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent));
+  background-image: -webkit-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+  background-image: -moz-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+  background-image: -ms-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+  background-image: -o-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+  background-image: linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+}
+.progress-warning .bar {
+  background-color: #faa732;
+  background-image: -moz-linear-gradient(top, #fbb450, #f89406);
+  background-image: -ms-linear-gradient(top, #fbb450, #f89406);
+  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#fbb450), to(#f89406));
+  background-image: -webkit-linear-gradient(top, #fbb450, #f89406);
+  background-image: -o-linear-gradient(top, #fbb450, #f89406);
+  background-image: linear-gradient(top, #fbb450, #f89406);
+  background-repeat: repeat-x;
+  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fbb450', endColorstr='#f89406', GradientType=0);
+}
+.progress-warning.progress-striped .bar {
+  background-color: #fbb450;
+  background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent));
+  background-image: -webkit-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+  background-image: -moz-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+  background-image: -ms-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+  background-image: -o-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+  background-image: linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+}
+.accordion {
+  margin-bottom: 18px;
+}
+.accordion-group {
+  margin-bottom: 2px;
+  border: 1px solid #e5e5e5;
+  -webkit-border-radius: 4px;
+  -moz-border-radius: 4px;
+  border-radius: 4px;
+}
+.accordion-heading {
+  border-bottom: 0;
+}
+.accordion-heading .accordion-toggle {
+  display: block;
+  padding: 8px 15px;
+}
+.accordion-toggle {
+  cursor: pointer;
+}
+.accordion-inner {
+  padding: 9px 15px;
+  border-top: 1px solid #e5e5e5;
+}
+.carousel {
+  position: relative;
+  margin-bottom: 18px;
+  line-height: 1;
+}
+.carousel-inner {
+  overflow: hidden;
+  width: 100%;
+  position: relative;
+}
+.carousel .item {
+  display: none;
+  position: relative;
+  -webkit-transition: 0.6s ease-in-out left;
+  -moz-transition: 0.6s ease-in-out left;
+  -ms-transition: 0.6s ease-in-out left;
+  -o-transition: 0.6s ease-in-out left;
+  transition: 0.6s ease-in-out left;
+}
+.carousel .item > img {
+  display: block;
+  line-height: 1;
+}
+.carousel .active,
+.carousel .next,
+.carousel .prev {
+  display: block;
+}
+.carousel .active {
+  left: 0;
+}
+.carousel .next,
+.carousel .prev {
+  position: absolute;
+  top: 0;
+  width: 100%;
+}
+.carousel .next {
+  left: 100%;
+}
+.carousel .prev {
+  left: -100%;
+}
+.carousel .next.left,
+.carousel .prev.right {
+  left: 0;
+}
+.carousel .active.left {
+  left: -100%;
+}
+.carousel .active.right {
+  left: 100%;
+}
+.carousel-control {
+  position: absolute;
+  top: 40%;
+  left: 15px;
+  width: 40px;
+  height: 40px;
+  margin-top: -20px;
+  font-size: 60px;
+  font-weight: 100;
+  line-height: 30px;
+  color: #1a1515;
+  text-align: center;
+  background: #3d2222;
+  border: 3px solid #1a1515;
+  -webkit-border-radius: 23px;
+  -moz-border-radius: 23px;
+  border-radius: 23px;
+  opacity: 0.5;
+  filter: alpha(opacity=50);
+}
+.carousel-control.right {
+  left: auto;
+  right: 15px;
+}
+.carousel-control:hover {
+  color: #1a1515;
+  text-decoration: none;
+  opacity: 0.9;
+  filter: alpha(opacity=90);
+}
+.carousel-caption {
+  position: absolute;
+  left: 0;
+  right: 0;
+  bottom: 0;
+  padding: 10px 15px 5px;
+  background: #5e3534;
+  background: rgba(0, 0, 0, 0.75);
+}
+.carousel-caption h4,
+.carousel-caption p {
+  color: #1a1515;
+}
+.hero-unit {
+  padding: 30px; /* STE */
+  margin-bottom: 30px;
+  background-color: #eb9742;
+  -webkit-border-radius: 6px;
+  -moz-border-radius: 6px;
+  border-radius: 6px;
+}
+.hero-unit h1 {
+  margin-bottom: 0;
+  font-size: 60px;
+  line-height: 1;
+  color: inherit;
+  letter-spacing: -1px;
+}
+.hero-unit p {
+  font-size: 18px;
+  font-weight: 200;
+  line-height: 27px;
+  color: inherit;
+}
+.pull-right {
+  float: right;
+}
+.pull-left {
+  float: left;
+}
+.hide {
+  display: none;
+}
+.show {
+  display: block;
+}
+.invisible {
+  visibility: hidden;
+}
+
diff --git a/suite/cts/deviceTests/browserbench/assets/octane/css/docs.css b/suite/cts/deviceTests/browserbench/assets/octane/css/docs.css
new file mode 100644
index 0000000..92a4ec8
--- /dev/null
+++ b/suite/cts/deviceTests/browserbench/assets/octane/css/docs.css
@@ -0,0 +1,846 @@
+/* Add additional stylesheets below
+-------------------------------------------------- */
+/*
+  Bootstrap's documentation styles
+  Special styles for presenting Bootstrap's documentation and examples
+*/
+
+
+/* Body and structure
+-------------------------------------------------- */
+body {
+  position: relative;
+  padding-top: 90px;
+  background-color: #fff;
+  background-image: url(../img/grid-18px-masked.png);
+  background-repeat: repeat-x;
+  background-position: 0 40px;
+}
+
+
+/* Tweak navbar brand link to be super sleek
+-------------------------------------------------- */
+.navbar-fixed-top .brand {
+  padding-right: 0;
+  padding-left: 0;
+  margin-left: 20px;
+  float: right;
+  font-weight: bold;
+  color: #000;
+  text-shadow: 0 1px 0 rgba(255,255,255,.1), 0 0 30px rgba(255,255,255,.125);
+  -webkit-transition: all .2s linear;
+     -moz-transition: all .2s linear;
+          transition: all .2s linear;
+}
+.navbar-fixed-top .brand:hover {
+  text-decoration: none;
+}
+
+
+/* Space out sub-sections more
+-------------------------------------------------- */
+section {
+  padding-top: 60px;
+}
+
+/* Faded out hr */
+hr.soften {
+  height: 1px;
+  margin: 54px 0;
+  background-image: -webkit-linear-gradient(left, rgba(0,0,0,0), rgba(0,0,0,.1), rgba(0,0,0,0));
+  background-image:    -moz-linear-gradient(left, rgba(0,0,0,0), rgba(0,0,0,.1), rgba(0,0,0,0));
+  background-image:     -ms-linear-gradient(left, rgba(0,0,0,0), rgba(0,0,0,.1), rgba(0,0,0,0));
+  background-image:      -o-linear-gradient(left, rgba(0,0,0,0), rgba(0,0,0,.1), rgba(0,0,0,0));
+  border: 0;
+}
+
+
+/* Jumbotrons
+-------------------------------------------------- */
+.jumbotron {
+  position: relative;
+}
+.jumbotron h1 {
+  margin-bottom: 9px;
+  font-size: 81px;
+  font-weight: bold;
+  letter-spacing: -1px;
+  line-height: 1;
+}
+.jumbotron p {
+  margin-bottom: 18px;
+  font-weight: 300;
+}
+.jumbotron .btn-large {
+  font-size: 20px;
+  font-weight: normal;
+  padding: 14px 24px;
+  margin-right: 10px;
+  -webkit-border-radius: 6px;
+     -moz-border-radius: 6px;
+          border-radius: 6px;
+}
+.jumbotron .btn-large small {
+  font-size: 14px;
+}
+
+/* Masthead (docs home) */
+.masthead {
+  padding-top: 36px;
+  margin-bottom: 72px;
+}
+.masthead h1,
+.masthead p {
+  text-align: center;
+}
+.masthead h1 {
+  margin-bottom: 18px;
+}
+.masthead p {
+  margin-left: 5%;
+  margin-right: 5%;
+  font-size: 30px;
+  line-height: 36px;
+}
+
+
+/* Specific jumbotrons
+------------------------- */
+/* supporting docs pages */
+.subhead {
+  padding-bottom: 0;
+  margin-bottom: 9px;
+}
+.subhead h1 {
+  font-size: 54px;
+}
+
+/* Subnav */
+.subnav {
+  width: 100%;
+  height: 36px;
+  background-color: #eeeeee; /* Old browsers */
+  background-repeat: repeat-x; /* Repeat the gradient */
+  background-image: -moz-linear-gradient(top, #f5f5f5 0%, #eeeeee 100%); /* FF3.6+ */
+  background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#f5f5f5), color-stop(100%,#eeeeee)); /* Chrome,Safari4+ */
+  background-image: -webkit-linear-gradient(top, #f5f5f5 0%,#eeeeee 100%); /* Chrome 10+,Safari 5.1+ */
+  background-image: -ms-linear-gradient(top, #f5f5f5 0%,#eeeeee 100%); /* IE10+ */
+  background-image: -o-linear-gradient(top, #f5f5f5 0%,#eeeeee 100%); /* Opera 11.10+ */
+  filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#f5f5f5', endColorstr='#eeeeee',GradientType=0 ); /* IE6-9 */
+  background-image: linear-gradient(top, #f5f5f5 0%,#eeeeee 100%); /* W3C */
+  border: 1px solid #e5e5e5;
+  -webkit-border-radius: 4px;
+     -moz-border-radius: 4px;
+          border-radius: 4px;
+}
+.subnav .nav {
+  margin-bottom: 0;
+}
+.subnav .nav > li > a {
+  margin: 0;
+  padding-top:    11px;
+  padding-bottom: 11px;
+  border-left: 1px solid #f5f5f5;
+  border-right: 1px solid #e5e5e5;
+  -webkit-border-radius: 0;
+     -moz-border-radius: 0;
+          border-radius: 0;
+}
+.subnav .nav > .active > a,
+.subnav .nav > .active > a:hover {
+  padding-left: 13px;
+  color: #777;
+  background-color: #e9e9e9;
+  border-right-color: #ddd;
+  border-left: 0;
+  -webkit-box-shadow: inset 0 3px 5px rgba(0,0,0,.05);
+     -moz-box-shadow: inset 0 3px 5px rgba(0,0,0,.05);
+          box-shadow: inset 0 3px 5px rgba(0,0,0,.05);
+}
+.subnav .nav > .active > a .caret,
+.subnav .nav > .active > a:hover .caret {
+  border-top-color: #777;
+}
+.subnav .nav > li:first-child > a,
+.subnav .nav > li:first-child > a:hover {
+  border-left: 0;
+  padding-left: 12px;
+  -webkit-border-radius: 4px 0 0 4px;
+     -moz-border-radius: 4px 0 0 4px;
+          border-radius: 4px 0 0 4px;
+}
+.subnav .nav > li:last-child > a {
+  border-right: 0;
+}
+.subnav .dropdown-menu {
+  -webkit-border-radius: 0 0 4px 4px;
+     -moz-border-radius: 0 0 4px 4px;
+          border-radius: 0 0 4px 4px;
+}
+
+/* Fixed subnav on scroll, but only for 980px and up (sorry IE!) */
+@media (min-width: 980px) {
+  .subnav-fixed {
+    position: fixed;
+    top: 40px;
+    left: 0;
+    right: 0;
+    z-index: 1020; /* 10 less than .navbar-fixed to prevent any overlap */
+    border-color: #d5d5d5;
+    border-width: 0 0 1px; /* drop the border on the fixed edges */
+    -webkit-border-radius: 0;
+       -moz-border-radius: 0;
+            border-radius: 0;
+    -webkit-box-shadow: inset 0 1px 0 #fff, 0 1px 5px rgba(0,0,0,.1);
+       -moz-box-shadow: inset 0 1px 0 #fff, 0 1px 5px rgba(0,0,0,.1);
+            box-shadow: inset 0 1px 0 #fff, 0 1px 5px rgba(0,0,0,.1);
+    filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); /* IE6-9 */
+  }
+  .subnav-fixed .nav {
+    width: 938px;
+    margin: 0 auto;
+    padding: 0 1px;
+  }
+  .subnav .nav > li:first-child > a,
+  .subnav .nav > li:first-child > a:hover {
+    -webkit-border-radius: 0;
+       -moz-border-radius: 0;
+            border-radius: 0;
+  }
+}
+
+
+/* Quick links
+-------------------------------------------------- */
+.bs-links {
+  margin: 36px 0;
+}
+.quick-links {
+  min-height: 30px;
+  margin: 0;
+  padding: 5px 20px;
+  list-style: none;
+  text-align: center;
+  overflow: hidden;
+}
+.quick-links:first-child {
+  min-height: 0;
+}
+.quick-links li {
+  display: inline;
+  margin: 0 8px;
+  color: #999;
+}
+.quick-links .github-btn,
+.quick-links .tweet-btn,
+.quick-links .follow-btn {
+  position: relative;
+  top: 5px;
+}
+
+
+/* Marketing section of Overview
+-------------------------------------------------- */
+.marketing .row {
+  margin-bottom: 9px;
+}
+.marketing h1 {
+  margin: 36px 0 27px;
+  font-size: 40px;
+  font-weight: 300;
+  text-align: center;
+}
+.marketing h2,
+.marketing h3 {
+  font-weight: 300;
+}
+.marketing h2 {
+  font-size: 22px;
+}
+.marketing p {
+  margin-right: 10px;
+}
+.marketing .bs-icon {
+  float: left;
+  margin: 7px 10px 0 0;
+  opacity: .8;
+}
+.marketing .small-bs-icon {
+  float: left;
+  margin: 4px 5px 0 0;
+}
+
+
+
+/* Footer
+-------------------------------------------------- */
+.footer {
+  margin-top: 45px;
+  padding: 35px 0 36px;
+  border-top: 1px solid #e5e5e5;
+}
+.footer p {
+  margin-bottom: 0;
+  color: #555;
+}
+
+
+
+/* Special grid styles
+-------------------------------------------------- */
+.show-grid {
+  margin-top: 10px;
+  margin-bottom: 20px;
+}
+.show-grid [class*="span"] {
+  background-color: #eee;
+  text-align: center;
+  -webkit-border-radius: 3px;
+     -moz-border-radius: 3px;
+          border-radius: 3px;
+  min-height: 30px;
+  line-height: 30px;
+}
+.show-grid:hover [class*="span"] {
+  background: #ddd;
+}
+.show-grid .show-grid {
+  margin-top: 0;
+  margin-bottom: 0;
+}
+.show-grid .show-grid [class*="span"] {
+  background-color: #ccc;
+}
+
+
+/* Render mini layout previews
+-------------------------------------------------- */
+.mini-layout {
+  border: 1px solid #ddd;
+  -webkit-border-radius: 6px;
+     -moz-border-radius: 6px;
+          border-radius: 6px;
+  -webkit-box-shadow: 0 1px 2px rgba(0,0,0,.075);
+     -moz-box-shadow: 0 1px 2px rgba(0,0,0,.075);
+          box-shadow: 0 1px 2px rgba(0,0,0,.075);
+}
+.mini-layout {
+  height: 240px;
+  margin-bottom: 20px;
+  padding: 9px;
+}
+.mini-layout div {
+  -webkit-border-radius: 3px;
+     -moz-border-radius: 3px;
+          border-radius: 3px;
+}
+.mini-layout .mini-layout-body {
+  background-color: #dceaf4;
+  margin: 0 auto;
+  width: 70%;
+  height: 240px;
+}
+.mini-layout.fluid .mini-layout-sidebar,
+.mini-layout.fluid .mini-layout-header,
+.mini-layout.fluid .mini-layout-body {
+  float: left;
+}
+.mini-layout.fluid .mini-layout-sidebar {
+  background-color: #bbd8e9;
+  width: 20%;
+  height: 240px;
+}
+.mini-layout.fluid .mini-layout-body {
+  width: 77.5%;
+  margin-left: 2.5%;
+}
+
+
+/* Popover docs
+-------------------------------------------------- */
+.popover-well {
+  min-height: 160px;
+}
+.popover-well .popover {
+  display: block;
+}
+.popover-well .popover-wrapper {
+  width: 50%;
+  height: 160px;
+  float: left;
+  margin-left: 55px;
+  position: relative;
+}
+.popover-well .popover-menu-wrapper {
+  height: 80px;
+}
+.large-bird {
+  margin: 5px 0 0 310px;
+  opacity: .1;
+}
+
+
+/* Download page
+-------------------------------------------------- */
+.download .page-header {
+  margin-top: 36px;
+}
+.page-header .toggle-all {
+  margin-top: 5px;
+}
+
+/* Space out h3s when following a section */
+.download h3 {
+  margin-bottom: 5px;
+}
+.download-builder input + h3,
+.download-builder .checkbox + h3 {
+  margin-top: 9px;
+}
+
+/* Fields for variables */
+.download-builder input[type=text] {
+  margin-bottom: 9px;
+  font-family: Menlo, Monaco, "Courier New", monospace;
+  font-size: 12px;
+  color: #d14;
+}
+.download-builder input[type=text]:focus {
+  background-color: #fff;
+}
+
+/* Custom, larger checkbox labels */
+.download .checkbox {
+  padding: 6px 10px 6px 25px;
+  color: #555;
+  background-color: #f9f9f9;
+  -webkit-border-radius: 3px;
+     -moz-border-radius: 3px;
+          border-radius: 3px;
+  cursor: pointer;
+}
+.download .checkbox:hover {
+  color: #333;
+  background-color: #f5f5f5;
+}
+.download .checkbox small {
+  font-size: 12px;
+  color: #777;
+}
+
+/* Variables section */
+#variables label {
+  margin-bottom: 0;
+}
+
+/* Giant download button */
+.download-btn {
+  margin: 36px 0 108px;
+}
+#download p,
+#download h4 {
+  max-width: 50%;
+  margin: 0 auto;
+  color: #999;
+  text-align: center;
+}
+#download h4 {
+  margin-bottom: 0;
+}
+#download p {
+  margin-bottom: 18px;
+}
+.download-btn .btn {
+  display: block;
+  width: auto;
+  padding: 19px 24px;
+  margin-bottom: 27px;
+  font-size: 30px;
+  line-height: 1;
+  text-align: center;
+  -webkit-border-radius: 6px;
+     -moz-border-radius: 6px;
+          border-radius: 6px;
+}
+
+
+
+/* Color swatches on LESS docs page
+-------------------------------------------------- */
+/* Sets the width of the td */
+.swatch-col {
+  width: 30px;
+}
+/* Le swatch */
+.swatch {
+  display: inline-block;
+  width: 30px;
+  height: 20px;
+  margin: -6px 0;
+  -webkit-border-radius: 3px;
+     -moz-border-radius: 3px;
+          border-radius: 3px;
+}
+/* For white swatches, give a border */
+.swatch-bordered {
+  width: 28px;
+  height: 18px;
+  border: 1px solid #eee;
+}
+
+
+/* Misc
+-------------------------------------------------- */
+
+/* Make tables spaced out a bit more */
+h2 + table,
+h3 + table,
+h4 + table,
+h2 + .row {
+  margin-top: 5px;
+}
+
+/* Example sites showcase */
+.example-sites img {
+  max-width: 100%;
+  margin: 0 auto;
+}
+.marketing-byline {
+  margin: -18px 0 27px;
+  font-size: 18px;
+  font-weight: 300;
+  line-height: 24px;
+  color: #999;
+  text-align: center;
+}
+
+.scrollspy-example {
+  height: 200px;
+  overflow: auto;
+  position: relative;
+}
+
+/* Remove bottom margin on example forms in wells */
+form.well {
+  padding: 14px;
+}
+
+/* Tighten up spacing */
+.well hr {
+  margin: 18px 0;
+}
+
+/* Fake the :focus state to demo it */
+.focused {
+  border-color: rgba(82,168,236,.8);
+  -webkit-box-shadow: inset 0 1px 3px rgba(0,0,0,.1), 0 0 8px rgba(82,168,236,.6);
+     -moz-box-shadow: inset 0 1px 3px rgba(0,0,0,.1), 0 0 8px rgba(82,168,236,.6);
+          box-shadow: inset 0 1px 3px rgba(0,0,0,.1), 0 0 8px rgba(82,168,236,.6);
+  outline: 0;
+}
+
+/* For input sizes, make them display block */
+.docs-input-sizes select,
+.docs-input-sizes input[type=text] {
+  display: block;
+  margin-bottom: 9px;
+}
+
+/* Icons
+------------------------- */
+.the-icons {
+  margin-left: 0;
+  list-style: none;
+}
+.the-icons i:hover {
+  background-color: rgba(255,0,0,.25);
+}
+
+/* Eaxmples page
+------------------------- */
+.bootstrap-examples .thumbnail {
+  margin-bottom: 9px;
+  background-color: #fff;
+}
+
+/* Responsive table
+------------------------- */
+.responsive-utilities th small {
+  display: block;
+  font-weight: normal;
+  color: #999;
+}
+.responsive-utilities tbody th {
+  font-weight: normal;
+}
+.responsive-utilities td {
+  text-align: center;
+}
+.responsive-utilities td.is-visible {
+  color: #468847;
+  background-color: #dff0d8 !important;
+}
+.responsive-utilities td.is-hidden {
+  color: #ccc;
+  background-color: #f9f9f9 !important;
+}
+
+/* Responsive tests
+------------------------- */
+.responsive-utilities-test {
+  margin-top: 5px;
+  margin-left: 0;
+  list-style: none;
+  overflow: hidden; /* clear floats */
+}
+.responsive-utilities-test li {
+  position: relative;
+  float: left;
+  width: 25%;
+  height: 43px;
+  font-size: 14px;
+  font-weight: bold;
+  line-height: 43px;
+  color: #999;
+  text-align: center;
+  border: 1px solid #ddd;
+  -webkit-border-radius: 4px;
+     -moz-border-radius: 4px;
+          border-radius: 4px;
+}
+.responsive-utilities-test li + li {
+  margin-left: 10px;
+}
+.responsive-utilities-test span {
+  position: absolute;
+  top:    -1px;
+  left:   -1px;
+  right:  -1px;
+  bottom: -1px;
+  -webkit-border-radius: 4px;
+     -moz-border-radius: 4px;
+          border-radius: 4px;
+}
+.responsive-utilities-test span {
+  color: #468847;
+  background-color: #dff0d8;
+  border: 1px solid #d6e9c6;
+}
+
+
+/* Responsive Docs
+-------------------------------------------------- */
+@media (max-width: 480px) {
+
+  /* Reduce padding above jumbotron */
+  body {
+    padding-top: 70px;
+  }
+
+  /* Change up some type stuff */
+  h2 {
+    margin-top: 27px;
+  }
+  h2 small {
+    display: block;
+    line-height: 18px;
+  }
+  h3 {
+    margin-top: 18px;
+  }
+
+  /* icons */
+  .marketing .bs-icon {
+    margin: 0;
+  }
+
+  /* Adjust the jumbotron */
+  .jumbotron h1,
+  .jumbotron p {
+    text-align: center;
+    margin-right: 0;
+  }
+  .jumbotron h1 {
+    font-size: 45px;
+    margin-right: 0;
+  }
+  .jumbotron p {
+    margin-right: 0;
+    margin-left: 0;
+    font-size: 18px;
+    line-height: 24px;
+  }
+  .jumbotron .btn {
+    display: block;
+    font-size: 18px;
+    padding: 10px 14px;
+    margin: 0 auto 10px;
+  }
+  /* Masthead (home page jumbotron) */
+  .masthead {
+    padding-top: 0;
+  }
+
+  /* Don't space out quick links so much */
+  .quick-links {
+    margin: 40px 0 0;
+  }
+  /* hide the bullets on mobile since our horizontal space is limited */
+  .quick-links .divider {
+    display: none;
+  }
+
+  /* center example sites */
+  .example-sites {
+    margin-left: 0;
+  }
+  .example-sites > li {
+    float: none;
+    display: block;
+    max-width: 280px;
+    margin: 0 auto 18px;
+    text-align: center;
+  }
+  .example-sites .thumbnail > img {
+    max-width: 270px;
+  }
+
+  table code {
+    white-space: normal;
+    word-wrap: break-word;
+    word-break: break-all;
+  }
+
+  /* Modal example */
+  .modal-example .modal {
+    position: relative;
+    top: auto;
+    right: auto;
+    bottom: auto;
+    left: auto;
+  }
+
+}
+
+
+@media (max-width: 768px) {
+
+  /* Remove any padding from the body */
+  body {
+    padding-top: 0;
+  }
+
+  /* Jumbotron buttons */
+  .jumbotron .btn {
+    margin-bottom: 10px;
+  }
+
+  /* Subnav */
+  .subnav {
+    position: static;
+    top: auto;
+    z-index: auto;
+    width: auto;
+    height: auto;
+    background: #fff; /* whole background property since we use a background-image for gradient */
+    -webkit-box-shadow: none;
+       -moz-box-shadow: none;
+            box-shadow: none;
+  }
+  .subnav .nav > li {
+    float: none;
+  }
+  .subnav .nav > li > a {
+    border: 0;
+  }
+  .subnav .nav > li + li > a {
+    border-top: 1px solid #e5e5e5;
+  }
+  .subnav .nav > li:first-child > a,
+  .subnav .nav > li:first-child > a:hover {
+      -webkit-border-radius: 4px 4px 0 0;
+         -moz-border-radius: 4px 4px 0 0;
+              border-radius: 4px 4px 0 0;
+  }
+
+  /* Popovers */
+  .large-bird {
+    display: none;
+  }
+  .popover-well .popover-wrapper {
+    margin-left: 0;
+  }
+
+  /* Space out the show-grid examples */
+  .show-grid [class*="span"] {
+    margin-bottom: 5px;
+  }
+
+  /* Unfloat the back to top link in footer */
+  .footer .pull-right {
+    float: none;
+  }
+  .footer p {
+    margin-bottom: 9px;
+  }
+
+}
+
+
+@media (min-width: 480px) and (max-width: 768px) {
+
+  /* Scale down the jumbotron content */
+  .jumbotron h1 {
+    font-size: 54px;
+  }
+  .jumbotron p {
+    margin-right: 0;
+    margin-left: 0;
+  }
+
+}
+
+
+@media (min-width: 768px) and (max-width: 980px) {
+
+  /* Remove any padding from the body */
+  body {
+    padding-top: 0;
+  }
+
+  /* Scale down the jumbotron content */
+  .jumbotron h1 {
+    font-size: 72px;
+  }
+
+}
+
+
+@media (max-width: 980px) {
+
+  /* Unfloat brand */
+  .navbar-fixed-top .brand {
+    float: left;
+    margin-left: 0;
+    padding-left: 10px;
+    padding-right: 10px;
+  }
+
+  /* Inline-block quick links for more spacing */
+  .quick-links li {
+    display: inline-block;
+    margin: 5px;
+  }
+
+}
+
+
+/* LARGE DESKTOP SCREENS */
+@media (min-width: 1210px) {
+
+  /* Update subnav container */
+  .subnav-fixed .nav {
+    width: 1168px; /* 2px less to account for left/right borders being removed when in fixed mode */
+  }
+
+}
diff --git a/suite/cts/deviceTests/browserbench/assets/octane/cts_report.html b/suite/cts/deviceTests/browserbench/assets/octane/cts_report.html
new file mode 100644
index 0000000..6dc6f42
--- /dev/null
+++ b/suite/cts/deviceTests/browserbench/assets/octane/cts_report.html
@@ -0,0 +1,8 @@
+<!doctype html>
+<html>
+  <head>
+    <title>cts_report</title>
+  </head>
+  <body>
+  </body>
+</html>
diff --git a/suite/cts/deviceTests/browserbench/assets/octane/cts_report.js b/suite/cts/deviceTests/browserbench/assets/octane/cts_report.js
new file mode 100644
index 0000000..ca15479
--- /dev/null
+++ b/suite/cts/deviceTests/browserbench/assets/octane/cts_report.js
@@ -0,0 +1,31 @@
+/*
+ * Copyright (C) 2013 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.
+ */
+
+/**
+ *  Utility to report benchmarking result via HTTP POST
+ *  to CTS.
+ * @param msg message to add to the report
+ * @param score resulting score
+ * @param isFinal true if this is the last / final score
+ */
+function CtsReport(msg, score, isFinal)
+{
+    req = new XMLHttpRequest();
+    req.open("POST", "cts_report.html?final=" + (isFinal ? "1" : "0") +
+             "&score=" + score + "&message=" + msg, false);
+    req.send(null)
+}
+
diff --git a/suite/cts/deviceTests/browserbench/assets/octane/deltablue.js b/suite/cts/deviceTests/browserbench/assets/octane/deltablue.js
new file mode 100644
index 0000000..70d3b01
--- /dev/null
+++ b/suite/cts/deviceTests/browserbench/assets/octane/deltablue.js
@@ -0,0 +1,883 @@
+// Copyright 2008 the V8 project authors. All rights reserved.
+// Copyright 1996 John Maloney and Mario Wolczko.
+
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 2 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+
+// This implementation of the DeltaBlue benchmark is derived
+// from the Smalltalk implementation by John Maloney and Mario
+// Wolczko. Some parts have been translated directly, whereas
+// others have been modified more aggresively to make it feel
+// more like a JavaScript program.
+
+
+var DeltaBlue = new BenchmarkSuite('DeltaBlue', 66118, [
+  new Benchmark('DeltaBlue', deltaBlue)
+]);
+
+
+/**
+ * A JavaScript implementation of the DeltaBlue constraint-solving
+ * algorithm, as described in:
+ *
+ * "The DeltaBlue Algorithm: An Incremental Constraint Hierarchy Solver"
+ *   Bjorn N. Freeman-Benson and John Maloney
+ *   January 1990 Communications of the ACM,
+ *   also available as University of Washington TR 89-08-06.
+ *
+ * Beware: this benchmark is written in a grotesque style where
+ * the constraint model is built by side-effects from constructors.
+ * I've kept it this way to avoid deviating too much from the original
+ * implementation.
+ */
+
+
+/* --- O b j e c t   M o d e l --- */
+
+Object.defineProperty(Object.prototype, "inheritsFrom", {
+  
+  value: function (shuper) {
+    function Inheriter() { }
+    Inheriter.prototype = shuper.prototype;
+    this.prototype = new Inheriter();
+    this.superConstructor = shuper;
+  }
+});
+
+function OrderedCollection() {
+  this.elms = new Array();
+}
+
+OrderedCollection.prototype.add = function (elm) {
+  this.elms.push(elm);
+}
+
+OrderedCollection.prototype.at = function (index) {
+  return this.elms[index];
+}
+
+OrderedCollection.prototype.size = function () {
+  return this.elms.length;
+}
+
+OrderedCollection.prototype.removeFirst = function () {
+  return this.elms.pop();
+}
+
+OrderedCollection.prototype.remove = function (elm) {
+  var index = 0, skipped = 0;
+  for (var i = 0; i < this.elms.length; i++) {
+    var value = this.elms[i];
+    if (value != elm) {
+      this.elms[index] = value;
+      index++;
+    } else {
+      skipped++;
+    }
+  }
+  for (var i = 0; i < skipped; i++)
+    this.elms.pop();
+}
+
+/* --- *
+ * S t r e n g t h
+ * --- */
+
+/**
+ * Strengths are used to measure the relative importance of constraints.
+ * New strengths may be inserted in the strength hierarchy without
+ * disrupting current constraints.  Strengths cannot be created outside
+ * this class, so pointer comparison can be used for value comparison.
+ */
+function Strength(strengthValue, name) {
+  this.strengthValue = strengthValue;
+  this.name = name;
+}
+
+Strength.stronger = function (s1, s2) {
+  return s1.strengthValue < s2.strengthValue;
+}
+
+Strength.weaker = function (s1, s2) {
+  return s1.strengthValue > s2.strengthValue;
+}
+
+Strength.weakestOf = function (s1, s2) {
+  return this.weaker(s1, s2) ? s1 : s2;
+}
+
+Strength.strongest = function (s1, s2) {
+  return this.stronger(s1, s2) ? s1 : s2;
+}
+
+Strength.prototype.nextWeaker = function () {
+  switch (this.strengthValue) {
+    case 0: return Strength.WEAKEST;
+    case 1: return Strength.WEAK_DEFAULT;
+    case 2: return Strength.NORMAL;
+    case 3: return Strength.STRONG_DEFAULT;
+    case 4: return Strength.PREFERRED;
+    case 5: return Strength.REQUIRED;
+  }
+}
+
+// Strength constants.
+Strength.REQUIRED        = new Strength(0, "required");
+Strength.STONG_PREFERRED = new Strength(1, "strongPreferred");
+Strength.PREFERRED       = new Strength(2, "preferred");
+Strength.STRONG_DEFAULT  = new Strength(3, "strongDefault");
+Strength.NORMAL          = new Strength(4, "normal");
+Strength.WEAK_DEFAULT    = new Strength(5, "weakDefault");
+Strength.WEAKEST         = new Strength(6, "weakest");
+
+/* --- *
+ * C o n s t r a i n t
+ * --- */
+
+/**
+ * An abstract class representing a system-maintainable relationship
+ * (or "constraint") between a set of variables. A constraint supplies
+ * a strength instance variable; concrete subclasses provide a means
+ * of storing the constrained variables and other information required
+ * to represent a constraint.
+ */
+function Constraint(strength) {
+  this.strength = strength;
+}
+
+/**
+ * Activate this constraint and attempt to satisfy it.
+ */
+Constraint.prototype.addConstraint = function () {
+  this.addToGraph();
+  planner.incrementalAdd(this);
+}
+
+/**
+ * Attempt to find a way to enforce this constraint. If successful,
+ * record the solution, perhaps modifying the current dataflow
+ * graph. Answer the constraint that this constraint overrides, if
+ * there is one, or nil, if there isn't.
+ * Assume: I am not already satisfied.
+ */
+Constraint.prototype.satisfy = function (mark) {
+  this.chooseMethod(mark);
+  if (!this.isSatisfied()) {
+    if (this.strength == Strength.REQUIRED)
+      alert("Could not satisfy a required constraint!");
+    return null;
+  }
+  this.markInputs(mark);
+  var out = this.output();
+  var overridden = out.determinedBy;
+  if (overridden != null) overridden.markUnsatisfied();
+  out.determinedBy = this;
+  if (!planner.addPropagate(this, mark))
+    alert("Cycle encountered");
+  out.mark = mark;
+  return overridden;
+}
+
+Constraint.prototype.destroyConstraint = function () {
+  if (this.isSatisfied()) planner.incrementalRemove(this);
+  else this.removeFromGraph();
+}
+
+/**
+ * Normal constraints are not input constraints.  An input constraint
+ * is one that depends on external state, such as the mouse, the
+ * keybord, a clock, or some arbitraty piece of imperative code.
+ */
+Constraint.prototype.isInput = function () {
+  return false;
+}
+
+/* --- *
+ * U n a r y   C o n s t r a i n t
+ * --- */
+
+/**
+ * Abstract superclass for constraints having a single possible output
+ * variable.
+ */
+function UnaryConstraint(v, strength) {
+  UnaryConstraint.superConstructor.call(this, strength);
+  this.myOutput = v;
+  this.satisfied = false;
+  this.addConstraint();
+}
+
+UnaryConstraint.inheritsFrom(Constraint);
+
+/**
+ * Adds this constraint to the constraint graph
+ */
+UnaryConstraint.prototype.addToGraph = function () {
+  this.myOutput.addConstraint(this);
+  this.satisfied = false;
+}
+
+/**
+ * Decides if this constraint can be satisfied and records that
+ * decision.
+ */
+UnaryConstraint.prototype.chooseMethod = function (mark) {
+  this.satisfied = (this.myOutput.mark != mark)
+    && Strength.stronger(this.strength, this.myOutput.walkStrength);
+}
+
+/**
+ * Returns true if this constraint is satisfied in the current solution.
+ */
+UnaryConstraint.prototype.isSatisfied = function () {
+  return this.satisfied;
+}
+
+UnaryConstraint.prototype.markInputs = function (mark) {
+  // has no inputs
+}
+
+/**
+ * Returns the current output variable.
+ */
+UnaryConstraint.prototype.output = function () {
+  return this.myOutput;
+}
+
+/**
+ * Calculate the walkabout strength, the stay flag, and, if it is
+ * 'stay', the value for the current output of this constraint. Assume
+ * this constraint is satisfied.
+ */
+UnaryConstraint.prototype.recalculate = function () {
+  this.myOutput.walkStrength = this.strength;
+  this.myOutput.stay = !this.isInput();
+  if (this.myOutput.stay) this.execute(); // Stay optimization
+}
+
+/**
+ * Records that this constraint is unsatisfied
+ */
+UnaryConstraint.prototype.markUnsatisfied = function () {
+  this.satisfied = false;
+}
+
+UnaryConstraint.prototype.inputsKnown = function () {
+  return true;
+}
+
+UnaryConstraint.prototype.removeFromGraph = function () {
+  if (this.myOutput != null) this.myOutput.removeConstraint(this);
+  this.satisfied = false;
+}
+
+/* --- *
+ * S t a y   C o n s t r a i n t
+ * --- */
+
+/**
+ * Variables that should, with some level of preference, stay the same.
+ * Planners may exploit the fact that instances, if satisfied, will not
+ * change their output during plan execution.  This is called "stay
+ * optimization".
+ */
+function StayConstraint(v, str) {
+  StayConstraint.superConstructor.call(this, v, str);
+}
+
+StayConstraint.inheritsFrom(UnaryConstraint);
+
+StayConstraint.prototype.execute = function () {
+  // Stay constraints do nothing
+}
+
+/* --- *
+ * E d i t   C o n s t r a i n t
+ * --- */
+
+/**
+ * A unary input constraint used to mark a variable that the client
+ * wishes to change.
+ */
+function EditConstraint(v, str) {
+  EditConstraint.superConstructor.call(this, v, str);
+}
+
+EditConstraint.inheritsFrom(UnaryConstraint);
+
+/**
+ * Edits indicate that a variable is to be changed by imperative code.
+ */
+EditConstraint.prototype.isInput = function () {
+  return true;
+}
+
+EditConstraint.prototype.execute = function () {
+  // Edit constraints do nothing
+}
+
+/* --- *
+ * B i n a r y   C o n s t r a i n t
+ * --- */
+
+var Direction = new Object();
+Direction.NONE     = 0;
+Direction.FORWARD  = 1;
+Direction.BACKWARD = -1;
+
+/**
+ * Abstract superclass for constraints having two possible output
+ * variables.
+ */
+function BinaryConstraint(var1, var2, strength) {
+  BinaryConstraint.superConstructor.call(this, strength);
+  this.v1 = var1;
+  this.v2 = var2;
+  this.direction = Direction.NONE;
+  this.addConstraint();
+}
+
+BinaryConstraint.inheritsFrom(Constraint);
+
+/**
+ * Decides if this constraint can be satisfied and which way it
+ * should flow based on the relative strength of the variables related,
+ * and record that decision.
+ */
+BinaryConstraint.prototype.chooseMethod = function (mark) {
+  if (this.v1.mark == mark) {
+    this.direction = (this.v2.mark != mark && Strength.stronger(this.strength, this.v2.walkStrength))
+      ? Direction.FORWARD
+      : Direction.NONE;
+  }
+  if (this.v2.mark == mark) {
+    this.direction = (this.v1.mark != mark && Strength.stronger(this.strength, this.v1.walkStrength))
+      ? Direction.BACKWARD
+      : Direction.NONE;
+  }
+  if (Strength.weaker(this.v1.walkStrength, this.v2.walkStrength)) {
+    this.direction = Strength.stronger(this.strength, this.v1.walkStrength)
+      ? Direction.BACKWARD
+      : Direction.NONE;
+  } else {
+    this.direction = Strength.stronger(this.strength, this.v2.walkStrength)
+      ? Direction.FORWARD
+      : Direction.BACKWARD
+  }
+}
+
+/**
+ * Add this constraint to the constraint graph
+ */
+BinaryConstraint.prototype.addToGraph = function () {
+  this.v1.addConstraint(this);
+  this.v2.addConstraint(this);
+  this.direction = Direction.NONE;
+}
+
+/**
+ * Answer true if this constraint is satisfied in the current solution.
+ */
+BinaryConstraint.prototype.isSatisfied = function () {
+  return this.direction != Direction.NONE;
+}
+
+/**
+ * Mark the input variable with the given mark.
+ */
+BinaryConstraint.prototype.markInputs = function (mark) {
+  this.input().mark = mark;
+}
+
+/**
+ * Returns the current input variable
+ */
+BinaryConstraint.prototype.input = function () {
+  return (this.direction == Direction.FORWARD) ? this.v1 : this.v2;
+}
+
+/**
+ * Returns the current output variable
+ */
+BinaryConstraint.prototype.output = function () {
+  return (this.direction == Direction.FORWARD) ? this.v2 : this.v1;
+}
+
+/**
+ * Calculate the walkabout strength, the stay flag, and, if it is
+ * 'stay', the value for the current output of this
+ * constraint. Assume this constraint is satisfied.
+ */
+BinaryConstraint.prototype.recalculate = function () {
+  var ihn = this.input(), out = this.output();
+  out.walkStrength = Strength.weakestOf(this.strength, ihn.walkStrength);
+  out.stay = ihn.stay;
+  if (out.stay) this.execute();
+}
+
+/**
+ * Record the fact that this constraint is unsatisfied.
+ */
+BinaryConstraint.prototype.markUnsatisfied = function () {
+  this.direction = Direction.NONE;
+}
+
+BinaryConstraint.prototype.inputsKnown = function (mark) {
+  var i = this.input();
+  return i.mark == mark || i.stay || i.determinedBy == null;
+}
+
+BinaryConstraint.prototype.removeFromGraph = function () {
+  if (this.v1 != null) this.v1.removeConstraint(this);
+  if (this.v2 != null) this.v2.removeConstraint(this);
+  this.direction = Direction.NONE;
+}
+
+/* --- *
+ * S c a l e   C o n s t r a i n t
+ * --- */
+
+/**
+ * Relates two variables by the linear scaling relationship: "v2 =
+ * (v1 * scale) + offset". Either v1 or v2 may be changed to maintain
+ * this relationship but the scale factor and offset are considered
+ * read-only.
+ */
+function ScaleConstraint(src, scale, offset, dest, strength) {
+  this.direction = Direction.NONE;
+  this.scale = scale;
+  this.offset = offset;
+  ScaleConstraint.superConstructor.call(this, src, dest, strength);
+}
+
+ScaleConstraint.inheritsFrom(BinaryConstraint);
+
+/**
+ * Adds this constraint to the constraint graph.
+ */
+ScaleConstraint.prototype.addToGraph = function () {
+  ScaleConstraint.superConstructor.prototype.addToGraph.call(this);
+  this.scale.addConstraint(this);
+  this.offset.addConstraint(this);
+}
+
+ScaleConstraint.prototype.removeFromGraph = function () {
+  ScaleConstraint.superConstructor.prototype.removeFromGraph.call(this);
+  if (this.scale != null) this.scale.removeConstraint(this);
+  if (this.offset != null) this.offset.removeConstraint(this);
+}
+
+ScaleConstraint.prototype.markInputs = function (mark) {
+  ScaleConstraint.superConstructor.prototype.markInputs.call(this, mark);
+  this.scale.mark = this.offset.mark = mark;
+}
+
+/**
+ * Enforce this constraint. Assume that it is satisfied.
+ */
+ScaleConstraint.prototype.execute = function () {
+  if (this.direction == Direction.FORWARD) {
+    this.v2.value = this.v1.value * this.scale.value + this.offset.value;
+  } else {
+    this.v1.value = (this.v2.value - this.offset.value) / this.scale.value;
+  }
+}
+
+/**
+ * Calculate the walkabout strength, the stay flag, and, if it is
+ * 'stay', the value for the current output of this constraint. Assume
+ * this constraint is satisfied.
+ */
+ScaleConstraint.prototype.recalculate = function () {
+  var ihn = this.input(), out = this.output();
+  out.walkStrength = Strength.weakestOf(this.strength, ihn.walkStrength);
+  out.stay = ihn.stay && this.scale.stay && this.offset.stay;
+  if (out.stay) this.execute();
+}
+
+/* --- *
+ * E q u a l i t  y   C o n s t r a i n t
+ * --- */
+
+/**
+ * Constrains two variables to have the same value.
+ */
+function EqualityConstraint(var1, var2, strength) {
+  EqualityConstraint.superConstructor.call(this, var1, var2, strength);
+}
+
+EqualityConstraint.inheritsFrom(BinaryConstraint);
+
+/**
+ * Enforce this constraint. Assume that it is satisfied.
+ */
+EqualityConstraint.prototype.execute = function () {
+  this.output().value = this.input().value;
+}
+
+/* --- *
+ * V a r i a b l e
+ * --- */
+
+/**
+ * A constrained variable. In addition to its value, it maintain the
+ * structure of the constraint graph, the current dataflow graph, and
+ * various parameters of interest to the DeltaBlue incremental
+ * constraint solver.
+ **/
+function Variable(name, initialValue) {
+  this.value = initialValue || 0;
+  this.constraints = new OrderedCollection();
+  this.determinedBy = null;
+  this.mark = 0;
+  this.walkStrength = Strength.WEAKEST;
+  this.stay = true;
+  this.name = name;
+}
+
+/**
+ * Add the given constraint to the set of all constraints that refer
+ * this variable.
+ */
+Variable.prototype.addConstraint = function (c) {
+  this.constraints.add(c);
+}
+
+/**
+ * Removes all traces of c from this variable.
+ */
+Variable.prototype.removeConstraint = function (c) {
+  this.constraints.remove(c);
+  if (this.determinedBy == c) this.determinedBy = null;
+}
+
+/* --- *
+ * P l a n n e r
+ * --- */
+
+/**
+ * The DeltaBlue planner
+ */
+function Planner() {
+  this.currentMark = 0;
+}
+
+/**
+ * Attempt to satisfy the given constraint and, if successful,
+ * incrementally update the dataflow graph.  Details: If satifying
+ * the constraint is successful, it may override a weaker constraint
+ * on its output. The algorithm attempts to resatisfy that
+ * constraint using some other method. This process is repeated
+ * until either a) it reaches a variable that was not previously
+ * determined by any constraint or b) it reaches a constraint that
+ * is too weak to be satisfied using any of its methods. The
+ * variables of constraints that have been processed are marked with
+ * a unique mark value so that we know where we've been. This allows
+ * the algorithm to avoid getting into an infinite loop even if the
+ * constraint graph has an inadvertent cycle.
+ */
+Planner.prototype.incrementalAdd = function (c) {
+  var mark = this.newMark();
+  var overridden = c.satisfy(mark);
+  while (overridden != null)
+    overridden = overridden.satisfy(mark);
+}
+
+/**
+ * Entry point for retracting a constraint. Remove the given
+ * constraint and incrementally update the dataflow graph.
+ * Details: Retracting the given constraint may allow some currently
+ * unsatisfiable downstream constraint to be satisfied. We therefore collect
+ * a list of unsatisfied downstream constraints and attempt to
+ * satisfy each one in turn. This list is traversed by constraint
+ * strength, strongest first, as a heuristic for avoiding
+ * unnecessarily adding and then overriding weak constraints.
+ * Assume: c is satisfied.
+ */
+Planner.prototype.incrementalRemove = function (c) {
+  var out = c.output();
+  c.markUnsatisfied();
+  c.removeFromGraph();
+  var unsatisfied = this.removePropagateFrom(out);
+  var strength = Strength.REQUIRED;
+  do {
+    for (var i = 0; i < unsatisfied.size(); i++) {
+      var u = unsatisfied.at(i);
+      if (u.strength == strength)
+        this.incrementalAdd(u);
+    }
+    strength = strength.nextWeaker();
+  } while (strength != Strength.WEAKEST);
+}
+
+/**
+ * Select a previously unused mark value.
+ */
+Planner.prototype.newMark = function () {
+  return ++this.currentMark;
+}
+
+/**
+ * Extract a plan for resatisfaction starting from the given source
+ * constraints, usually a set of input constraints. This method
+ * assumes that stay optimization is desired; the plan will contain
+ * only constraints whose output variables are not stay. Constraints
+ * that do no computation, such as stay and edit constraints, are
+ * not included in the plan.
+ * Details: The outputs of a constraint are marked when it is added
+ * to the plan under construction. A constraint may be appended to
+ * the plan when all its input variables are known. A variable is
+ * known if either a) the variable is marked (indicating that has
+ * been computed by a constraint appearing earlier in the plan), b)
+ * the variable is 'stay' (i.e. it is a constant at plan execution
+ * time), or c) the variable is not determined by any
+ * constraint. The last provision is for past states of history
+ * variables, which are not stay but which are also not computed by
+ * any constraint.
+ * Assume: sources are all satisfied.
+ */
+Planner.prototype.makePlan = function (sources) {
+  var mark = this.newMark();
+  var plan = new Plan();
+  var todo = sources;
+  while (todo.size() > 0) {
+    var c = todo.removeFirst();
+    if (c.output().mark != mark && c.inputsKnown(mark)) {
+      plan.addConstraint(c);
+      c.output().mark = mark;
+      this.addConstraintsConsumingTo(c.output(), todo);
+    }
+  }
+  return plan;
+}
+
+/**
+ * Extract a plan for resatisfying starting from the output of the
+ * given constraints, usually a set of input constraints.
+ */
+Planner.prototype.extractPlanFromConstraints = function (constraints) {
+  var sources = new OrderedCollection();
+  for (var i = 0; i < constraints.size(); i++) {
+    var c = constraints.at(i);
+    if (c.isInput() && c.isSatisfied())
+      // not in plan already and eligible for inclusion
+      sources.add(c);
+  }
+  return this.makePlan(sources);
+}
+
+/**
+ * Recompute the walkabout strengths and stay flags of all variables
+ * downstream of the given constraint and recompute the actual
+ * values of all variables whose stay flag is true. If a cycle is
+ * detected, remove the given constraint and answer
+ * false. Otherwise, answer true.
+ * Details: Cycles are detected when a marked variable is
+ * encountered downstream of the given constraint. The sender is
+ * assumed to have marked the inputs of the given constraint with
+ * the given mark. Thus, encountering a marked node downstream of
+ * the output constraint means that there is a path from the
+ * constraint's output to one of its inputs.
+ */
+Planner.prototype.addPropagate = function (c, mark) {
+  var todo = new OrderedCollection();
+  todo.add(c);
+  while (todo.size() > 0) {
+    var d = todo.removeFirst();
+    if (d.output().mark == mark) {
+      this.incrementalRemove(c);
+      return false;
+    }
+    d.recalculate();
+    this.addConstraintsConsumingTo(d.output(), todo);
+  }
+  return true;
+}
+
+
+/**
+ * Update the walkabout strengths and stay flags of all variables
+ * downstream of the given constraint. Answer a collection of
+ * unsatisfied constraints sorted in order of decreasing strength.
+ */
+Planner.prototype.removePropagateFrom = function (out) {
+  out.determinedBy = null;
+  out.walkStrength = Strength.WEAKEST;
+  out.stay = true;
+  var unsatisfied = new OrderedCollection();
+  var todo = new OrderedCollection();
+  todo.add(out);
+  while (todo.size() > 0) {
+    var v = todo.removeFirst();
+    for (var i = 0; i < v.constraints.size(); i++) {
+      var c = v.constraints.at(i);
+      if (!c.isSatisfied())
+        unsatisfied.add(c);
+    }
+    var determining = v.determinedBy;
+    for (var i = 0; i < v.constraints.size(); i++) {
+      var next = v.constraints.at(i);
+      if (next != determining && next.isSatisfied()) {
+        next.recalculate();
+        todo.add(next.output());
+      }
+    }
+  }
+  return unsatisfied;
+}
+
+Planner.prototype.addConstraintsConsumingTo = function (v, coll) {
+  var determining = v.determinedBy;
+  var cc = v.constraints;
+  for (var i = 0; i < cc.size(); i++) {
+    var c = cc.at(i);
+    if (c != determining && c.isSatisfied())
+      coll.add(c);
+  }
+}
+
+/* --- *
+ * P l a n
+ * --- */
+
+/**
+ * A Plan is an ordered list of constraints to be executed in sequence
+ * to resatisfy all currently satisfiable constraints in the face of
+ * one or more changing inputs.
+ */
+function Plan() {
+  this.v = new OrderedCollection();
+}
+
+Plan.prototype.addConstraint = function (c) {
+  this.v.add(c);
+}
+
+Plan.prototype.size = function () {
+  return this.v.size();
+}
+
+Plan.prototype.constraintAt = function (index) {
+  return this.v.at(index);
+}
+
+Plan.prototype.execute = function () {
+  for (var i = 0; i < this.size(); i++) {
+    var c = this.constraintAt(i);
+    c.execute();
+  }
+}
+
+/* --- *
+ * M a i n
+ * --- */
+
+/**
+ * This is the standard DeltaBlue benchmark. A long chain of equality
+ * constraints is constructed with a stay constraint on one end. An
+ * edit constraint is then added to the opposite end and the time is
+ * measured for adding and removing this constraint, and extracting
+ * and executing a constraint satisfaction plan. There are two cases.
+ * In case 1, the added constraint is stronger than the stay
+ * constraint and values must propagate down the entire length of the
+ * chain. In case 2, the added constraint is weaker than the stay
+ * constraint so it cannot be accomodated. The cost in this case is,
+ * of course, very low. Typical situations lie somewhere between these
+ * two extremes.
+ */
+function chainTest(n) {
+  planner = new Planner();
+  var prev = null, first = null, last = null;
+
+  // Build chain of n equality constraints
+  for (var i = 0; i <= n; i++) {
+    var name = "v" + i;
+    var v = new Variable(name);
+    if (prev != null)
+      new EqualityConstraint(prev, v, Strength.REQUIRED);
+    if (i == 0) first = v;
+    if (i == n) last = v;
+    prev = v;
+  }
+
+  new StayConstraint(last, Strength.STRONG_DEFAULT);
+  var edit = new EditConstraint(first, Strength.PREFERRED);
+  var edits = new OrderedCollection();
+  edits.add(edit);
+  var plan = planner.extractPlanFromConstraints(edits);
+  for (var i = 0; i < 100; i++) {
+    first.value = i;
+    plan.execute();
+    if (last.value != i)
+      alert("Chain test failed.");
+  }
+}
+
+/**
+ * This test constructs a two sets of variables related to each
+ * other by a simple linear transformation (scale and offset). The
+ * time is measured to change a variable on either side of the
+ * mapping and to change the scale and offset factors.
+ */
+function projectionTest(n) {
+  planner = new Planner();
+  var scale = new Variable("scale", 10);
+  var offset = new Variable("offset", 1000);
+  var src = null, dst = null;
+
+  var dests = new OrderedCollection();
+  for (var i = 0; i < n; i++) {
+    src = new Variable("src" + i, i);
+    dst = new Variable("dst" + i, i);
+    dests.add(dst);
+    new StayConstraint(src, Strength.NORMAL);
+    new ScaleConstraint(src, scale, offset, dst, Strength.REQUIRED);
+  }
+
+  change(src, 17);
+  if (dst.value != 1170) alert("Projection 1 failed");
+  change(dst, 1050);
+  if (src.value != 5) alert("Projection 2 failed");
+  change(scale, 5);
+  for (var i = 0; i < n - 1; i++) {
+    if (dests.at(i).value != i * 5 + 1000)
+      alert("Projection 3 failed");
+  }
+  change(offset, 2000);
+  for (var i = 0; i < n - 1; i++) {
+    if (dests.at(i).value != i * 5 + 2000)
+      alert("Projection 4 failed");
+  }
+}
+
+function change(v, newValue) {
+  var edit = new EditConstraint(v, Strength.PREFERRED);
+  var edits = new OrderedCollection();
+  edits.add(edit);
+  var plan = planner.extractPlanFromConstraints(edits);
+  for (var i = 0; i < 10; i++) {
+    v.value = newValue;
+    plan.execute();
+  }
+  edit.destroyConstraint();
+}
+
+// Global variable holding the current planner.
+var planner = null;
+
+function deltaBlue() {
+  chainTest(100);
+  projectionTest(100);
+}
diff --git a/suite/cts/deviceTests/browserbench/assets/octane/earley-boyer.js b/suite/cts/deviceTests/browserbench/assets/octane/earley-boyer.js
new file mode 100644
index 0000000..b2328d6
--- /dev/null
+++ b/suite/cts/deviceTests/browserbench/assets/octane/earley-boyer.js
@@ -0,0 +1,4684 @@
+// This file is automatically generated by scheme2js, except for the
+// benchmark harness code at the beginning and end of the file.
+
+var EarleyBoyer = new BenchmarkSuite('EarleyBoyer', 666463, [
+  new Benchmark("Earley", function () { BgL_earleyzd2benchmarkzd2(); }),
+  new Benchmark("Boyer", function () { BgL_nboyerzd2benchmarkzd2(); })
+]);
+
+
+/************* GENERATED FILE - DO NOT EDIT *************/
+/************* GENERATED FILE - DO NOT EDIT *************/
+/************* GENERATED FILE - DO NOT EDIT *************/
+/************* GENERATED FILE - DO NOT EDIT *************/
+/************* GENERATED FILE - DO NOT EDIT *************/
+/************* GENERATED FILE - DO NOT EDIT *************/
+/************* GENERATED FILE - DO NOT EDIT *************/
+/************* GENERATED FILE - DO NOT EDIT *************/
+/*
+ * To use write/prints/... the default-output port has to be set first.
+ * Simply setting SC_DEFAULT_OUT and SC_ERROR_OUT to the desired values
+ * should do the trick.
+ * In the following example the std-out and error-port are redirected to
+ * a DIV.
+function initRuntime() {
+    function escapeHTML(s) {
+	var tmp = s;
+	tmp = tmp.replace(/&/g, "&amp;");
+	tmp = tmp.replace(/</g, "&lt;");
+	tmp = tmp.replace(/>/g, "&gt;");
+	tmp = tmp.replace(/ /g, "&nbsp;");
+	tmp = tmp.replace(/\n/g, "<br />");
+	tmp = tmp.replace(/\t/g, "&nbsp;&nbsp;&nbsp;&nbsp");
+	return tmp;
+	
+    }
+
+    document.write("<div id='stdout'></div>");
+    SC_DEFAULT_OUT = new sc_GenericOutputPort(
+	function(s) {
+	    var stdout = document.getElementById('stdout');
+	    stdout.innerHTML = stdout.innerHTML + escapeHTML(s);
+	});
+    SC_ERROR_OUT = SC_DEFAULT_OUT;
+}
+*/
+
+
+function sc_print_debug() {
+    sc_print.apply(null, arguments);
+}
+/*** META ((export *js*)) */
+var sc_JS_GLOBALS = this;
+
+var __sc_LINE=-1;
+var __sc_FILE="";
+
+/*** META ((export #t)) */
+function sc_alert() {
+   var len = arguments.length;
+   var s = "";
+   var i;
+
+   for( i = 0; i < len; i++ ) {
+       s += sc_toDisplayString(arguments[ i ]);
+   }
+
+   return alert( s );
+}
+
+/*** META ((export #t)) */
+function sc_typeof( x ) {
+   return typeof x;
+}
+
+/*** META ((export #t)) */
+function sc_error() {
+    var a = [sc_jsstring2symbol("*error*")];
+    for (var i = 0; i < arguments.length; i++) {
+	a[i+1] = arguments[i];
+    }
+    throw a;
+}
+
+/*** META ((export #t)
+           (peephole (prefix "throw ")))
+*/
+function sc_raise(obj) {
+    throw obj;
+}
+
+/*** META ((export with-handler-lambda)) */
+function sc_withHandlerLambda(handler, body) {
+    try {
+	return body();
+    } catch(e) {
+	if (!e._internalException)
+	    return handler(e);
+	else
+	    throw e;
+    }
+}
+
+var sc_properties = new Object();
+
+/*** META ((export #t)) */
+function sc_putpropBang(sym, key, val) {
+    var ht = sc_properties[sym];
+    if (!ht) {
+	ht = new Object();
+	sc_properties[sym] = ht;
+    }
+    ht[key] = val;
+}
+
+/*** META ((export #t)) */
+function sc_getprop(sym, key) {
+    var ht = sc_properties[sym];
+    if (ht) {
+	if (key in ht)
+	    return ht[key];
+	else
+	    return false;
+    } else
+	return false;
+}
+
+/*** META ((export #t)) */
+function sc_rempropBang(sym, key) {
+    var ht = sc_properties[sym];
+    if (ht)
+	delete ht[key];
+}
+
+/*** META ((export #t)) */
+function sc_any2String(o) {
+    return jsstring2string(sc_toDisplayString(o));
+}
+
+/*** META ((export #t)
+           (peephole (infix 2 2 "==="))
+           (type bool))
+*/
+function sc_isEqv(o1, o2) {
+    return (o1 === o2);
+}
+
+/*** META ((export #t)
+           (peephole (infix 2 2 "==="))
+           (type bool))
+*/
+function sc_isEq(o1, o2) {
+    return (o1 === o2);
+}
+
+/*** META ((export #t)
+           (type bool))
+*/
+function sc_isNumber(n) {
+    return (typeof n === "number");
+}
+
+/*** META ((export #t)
+           (type bool))
+*/
+function sc_isComplex(n) {
+    return sc_isNumber(n);
+}
+
+/*** META ((export #t)
+           (type bool))
+*/
+function sc_isReal(n) {
+    return sc_isNumber(n);
+}
+
+/*** META ((export #t)
+           (type bool))
+*/
+function sc_isRational(n) {
+    return sc_isReal(n);
+}
+
+/*** META ((export #t)
+           (type bool))
+*/
+function sc_isInteger(n) {
+    return (parseInt(n) === n);
+}
+
+/*** META ((export #t)
+           (type bool)
+           (peephole (postfix ", false")))
+*/
+// we don't have exact numbers...
+function sc_isExact(n) {
+    return false;
+}
+
+/*** META ((export #t)
+           (peephole (postfix ", true"))
+	   (type bool))
+*/
+function sc_isInexact(n) {
+    return true;
+}
+
+/*** META ((export = =fx =fl)
+           (type bool)
+           (peephole (infix 2 2 "===")))
+*/
+function sc_equal(x) {
+    for (var i = 1; i < arguments.length; i++)
+	if (x !== arguments[i])
+	    return false;
+    return true;
+}
+
+/*** META ((export < <fx <fl)
+           (type bool)
+           (peephole (infix 2 2 "<")))
+*/
+function sc_less(x) {
+    for (var i = 1; i < arguments.length; i++) {
+	if (x >= arguments[i])
+	    return false;
+	x = arguments[i];
+    }
+    return true;
+}
+
+/*** META ((export > >fx >fl)
+           (type bool)
+           (peephole (infix 2 2 ">")))
+*/
+function sc_greater(x, y) {
+    for (var i = 1; i < arguments.length; i++) {
+	if (x <= arguments[i])
+	    return false;
+	x = arguments[i];
+    }
+    return true;
+}
+
+/*** META ((export <= <=fx <=fl)
+           (type bool)
+           (peephole (infix 2 2 "<=")))
+*/
+function sc_lessEqual(x, y) {
+    for (var i = 1; i < arguments.length; i++) {
+	if (x > arguments[i])
+	    return false;
+	x = arguments[i];
+    }
+    return true;
+}
+
+/*** META ((export >= >=fl >=fx)
+           (type bool)
+           (peephole (infix 2 2 ">=")))
+*/
+function sc_greaterEqual(x, y) {
+    for (var i = 1; i < arguments.length; i++) {
+	if (x < arguments[i])
+	    return false;
+	x = arguments[i];
+    }
+    return true;
+}
+
+/*** META ((export #t)
+           (type bool)
+           (peephole (postfix "=== 0")))
+*/
+function sc_isZero(x) {
+    return (x === 0);
+}
+
+/*** META ((export #t)
+           (type bool)
+           (peephole (postfix "> 0")))
+*/
+function sc_isPositive(x) {
+    return (x > 0);
+}
+
+/*** META ((export #t)
+           (type bool)
+           (peephole (postfix "< 0")))
+*/
+function sc_isNegative(x) {
+    return (x < 0);
+}
+
+/*** META ((export #t)
+           (type bool)
+           (peephole (postfix "%2===1")))
+*/
+function sc_isOdd(x) {
+    return (x % 2 === 1);
+}
+
+/*** META ((export #t)
+           (type bool)
+           (peephole (postfix "%2===0")))
+*/
+function sc_isEven(x) {
+    return (x % 2 === 0);
+}
+
+/*** META ((export #t)) */
+var sc_max = Math.max;
+/*** META ((export #t)) */
+var sc_min = Math.min;
+
+/*** META ((export + +fx +fl)
+           (peephole (infix 0 #f "+" "0")))
+*/
+function sc_plus() {
+    var sum = 0;
+    for (var i = 0; i < arguments.length; i++)
+	sum += arguments[i];
+    return sum;
+}
+
+/*** META ((export * *fx *fl)
+           (peephole (infix 0 #f "*" "1")))
+*/
+function sc_multi() {
+    var product = 1;
+    for (var i = 0; i < arguments.length; i++)
+	product *= arguments[i];
+    return product;
+}
+
+/*** META ((export - -fx -fl)
+           (peephole (minus)))
+*/
+function sc_minus(x) {
+    if (arguments.length === 1)
+	return -x;
+    else {
+	var res = x;
+	for (var i = 1; i < arguments.length; i++)
+	    res -= arguments[i];
+	return res;
+    }
+}
+
+/*** META ((export / /fl)
+           (peephole (div)))
+*/
+function sc_div(x) {
+    if (arguments.length === 1)
+	return 1/x;
+    else {
+	var res = x;
+	for (var i = 1; i < arguments.length; i++)
+	    res /= arguments[i];
+	return res;
+    }
+}
+
+/*** META ((export #t)) */
+var sc_abs = Math.abs;
+
+/*** META ((export quotient /fx)
+           (peephole (hole 2 "parseInt(" x "/" y ")")))
+*/
+function sc_quotient(x, y) {
+    return parseInt(x / y);
+}
+
+/*** META ((export #t)
+           (peephole (infix 2 2 "%")))
+*/
+function sc_remainder(x, y) {
+    return x % y;
+}
+
+/*** META ((export #t)
+           (peephole (modulo)))
+*/
+function sc_modulo(x, y) {
+    var remainder = x % y;
+    // if they don't have the same sign
+    if ((remainder * y) < 0)
+	return remainder + y;
+    else
+	return remainder;
+}
+
+function sc_euclid_gcd(a, b) {
+    var temp;
+    if (a === 0) return b;
+    if (b === 0) return a;
+    if (a < 0) {a = -a;};
+    if (b < 0) {b = -b;};
+    if (b > a) {temp = a; a = b; b = temp;};
+    while (true) {
+	a %= b;
+	if(a === 0) {return b;};
+	b %= a;
+	if(b === 0) {return a;};
+    };
+    return b;
+}
+
+/*** META ((export #t)) */
+function sc_gcd() {
+    var gcd = 0;
+    for (var i = 0; i < arguments.length; i++)
+	gcd = sc_euclid_gcd(gcd, arguments[i]);
+    return gcd;
+}
+
+/*** META ((export #t)) */
+function sc_lcm() {
+    var lcm = 1;
+    for (var i = 0; i < arguments.length; i++) {
+	var f = Math.round(arguments[i] / sc_euclid_gcd(arguments[i], lcm));
+	lcm *= Math.abs(f);
+    }
+    return lcm;
+}
+
+// LIMITATION: numerator and denominator don't make sense in floating point world.
+//var SC_MAX_DECIMALS = 1000000
+//
+// function sc_numerator(x) {
+//     var rounded = Math.round(x * SC_MAX_DECIMALS);
+//     return Math.round(rounded / sc_euclid_gcd(rounded, SC_MAX_DECIMALS));
+// }
+
+// function sc_denominator(x) {
+//     var rounded = Math.round(x * SC_MAX_DECIMALS);
+//     return Math.round(SC_MAX_DECIMALS / sc_euclid_gcd(rounded, SC_MAX_DECIMALS));
+// }
+
+/*** META ((export #t)) */
+var sc_floor = Math.floor;
+/*** META ((export #t)) */
+var sc_ceiling = Math.ceil;
+/*** META ((export #t)) */
+var sc_truncate = parseInt;
+/*** META ((export #t)) */
+var sc_round = Math.round;
+
+// LIMITATION: sc_rationalize doesn't make sense in a floating point world.
+
+/*** META ((export #t)) */
+var sc_exp = Math.exp;
+/*** META ((export #t)) */
+var sc_log = Math.log;
+/*** META ((export #t)) */
+var sc_sin = Math.sin;
+/*** META ((export #t)) */
+var sc_cos = Math.cos;
+/*** META ((export #t)) */
+var sc_tan = Math.tan;
+/*** META ((export #t)) */
+var sc_asin = Math.asin;
+/*** META ((export #t)) */
+var sc_acos = Math.acos;
+/*** META ((export #t)) */
+var sc_atan = Math.atan;
+
+/*** META ((export #t)) */
+var sc_sqrt = Math.sqrt;
+/*** META ((export #t)) */
+var sc_expt = Math.pow;
+
+// LIMITATION: we don't have complex numbers.
+// LIMITATION: the following functions are hence not implemented.
+// LIMITATION: make-rectangular, make-polar, real-part, imag-part, magnitude, angle
+// LIMITATION: 2 argument atan
+
+/*** META ((export #t)
+           (peephole (id)))
+*/
+function sc_exact2inexact(x) {
+    return x;
+}
+
+/*** META ((export #t)
+           (peephole (id)))
+*/
+function sc_inexact2exact(x) {
+    return x;
+}
+
+function sc_number2jsstring(x, radix) {
+    if (radix)
+	return x.toString(radix);
+    else
+	return x.toString();
+}
+
+function sc_jsstring2number(s, radix) {
+    if (s === "") return false;
+
+    if (radix) {
+	var t = parseInt(s, radix);
+	if (!t && t !== 0) return false;
+	// verify that each char is in range. (parseInt ignores leading
+	// white and trailing chars)
+	var allowedChars = "01234567890abcdefghijklmnopqrstuvwxyz".substring(0, radix+1);
+	if ((new RegExp("^["+allowedChars+"]*$", "i")).test(s))
+	    return t;
+	else return false;
+    } else {
+	var t = +s; // does not ignore trailing chars.
+	if (!t && t !== 0) return false;
+	// simply verify that first char is not whitespace.
+	var c = s.charAt(0);
+	// if +c is 0, but the char is not "0", then we have a whitespace.
+	if (+c === 0 && c !== "0") return false;
+	return t;
+    }
+}
+
+/*** META ((export #t)
+           (type bool)
+           (peephole (not)))
+*/
+function sc_not(b) {
+    return b === false;
+}
+
+/*** META ((export #t)
+           (type bool))
+*/
+function sc_isBoolean(b) {
+    return (b === true) || (b === false);
+}
+
+function sc_Pair(car, cdr) {
+    this.car = car;
+    this.cdr = cdr;
+}
+
+sc_Pair.prototype.toString = function() {
+    return sc_toDisplayString(this);
+};
+sc_Pair.prototype.sc_toWriteOrDisplayString = function(writeOrDisplay) {
+    var current = this;
+
+    var res = "(";
+
+    while(true) {
+	res += writeOrDisplay(current.car);
+	if (sc_isPair(current.cdr)) {
+	    res += " ";
+	    current = current.cdr;
+	} else if (current.cdr !== null) {
+	    res += " . " + writeOrDisplay(current.cdr);
+	    break;
+	} else // current.cdr == null
+	    break;
+    }
+	
+    res += ")";
+
+    return res;
+};
+sc_Pair.prototype.sc_toDisplayString = function() {
+    return this.sc_toWriteOrDisplayString(sc_toDisplayString);
+};
+sc_Pair.prototype.sc_toWriteString = function() {
+    return this.sc_toWriteOrDisplayString(sc_toWriteString);
+};
+// sc_Pair.prototype.sc_toWriteCircleString in IO.js
+
+/*** META ((export #t)
+           (type bool)
+           (peephole (postfix " instanceof sc_Pair")))
+*/
+function sc_isPair(p) {
+    return (p instanceof sc_Pair);
+}
+
+function sc_isPairEqual(p1, p2, comp) {
+    return (comp(p1.car, p2.car) && comp(p1.cdr, p2.cdr));
+}
+
+/*** META ((export #t)
+           (peephole (hole 2 "new sc_Pair(" car ", " cdr ")")))
+*/
+function sc_cons(car, cdr) {
+    return new sc_Pair(car, cdr);
+}
+
+/*** META ((export cons*)) */
+function sc_consStar() {
+    var res = arguments[arguments.length - 1];
+    for (var i = arguments.length-2; i >= 0; i--)
+	res = new sc_Pair(arguments[i], res);
+    return res;
+}
+
+/*** META ((export #t)
+           (peephole (postfix ".car")))
+*/
+function sc_car(p) {
+    return p.car;
+}
+
+/*** META ((export #t)
+           (peephole (postfix ".cdr")))
+*/
+function sc_cdr(p) {
+    return p.cdr;
+}
+
+/*** META ((export #t)
+           (peephole (hole 2 p ".car = " val)))
+*/
+function sc_setCarBang(p, val) {
+    p.car = val;
+}
+
+/*** META ((export #t)
+           (peephole (hole 2 p ".cdr = " val)))
+*/
+function sc_setCdrBang(p, val) {
+    p.cdr = val;
+}
+
+/*** META ((export #t)
+           (peephole (postfix ".car.car")))
+*/
+function sc_caar(p) { return p.car.car; }
+/*** META ((export #t)
+           (peephole (postfix ".cdr.car")))
+*/
+function sc_cadr(p) { return p.cdr.car; }
+/*** META ((export #t)
+           (peephole (postfix ".car.cdr")))
+*/
+function sc_cdar(p) { return p.car.cdr; }
+/*** META ((export #t)
+           (peephole (postfix ".cdr.cdr")))
+*/
+function sc_cddr(p) { return p.cdr.cdr; }
+/*** META ((export #t)
+           (peephole (postfix ".car.car.car")))
+*/
+function sc_caaar(p) { return p.car.car.car; }
+/*** META ((export #t)
+           (peephole (postfix ".car.cdr.car")))
+*/
+function sc_cadar(p) { return p.car.cdr.car; }
+/*** META ((export #t)
+           (peephole (postfix ".cdr.car.car")))
+*/
+function sc_caadr(p) { return p.cdr.car.car; }
+/*** META ((export #t)
+           (peephole (postfix ".cdr.cdr.car")))
+*/
+function sc_caddr(p) { return p.cdr.cdr.car; }
+/*** META ((export #t)
+           (peephole (postfix ".car.car.cdr")))
+*/
+function sc_cdaar(p) { return p.car.car.cdr; }
+/*** META ((export #t)
+           (peephole (postfix ".cdr.car.cdr")))
+*/
+function sc_cdadr(p) { return p.cdr.car.cdr; }
+/*** META ((export #t)
+           (peephole (postfix ".car.cdr.cdr")))
+*/
+function sc_cddar(p) { return p.car.cdr.cdr; }
+/*** META ((export #t)
+           (peephole (postfix ".cdr.cdr.cdr")))
+*/
+function sc_cdddr(p) { return p.cdr.cdr.cdr; }
+/*** META ((export #t)
+           (peephole (postfix ".car.car.car.car")))
+*/
+function sc_caaaar(p) { return p.car.car.car.car; }
+/*** META ((export #t)
+           (peephole (postfix ".car.cdr.car.car")))
+*/
+function sc_caadar(p) { return p.car.cdr.car.car; }
+/*** META ((export #t)
+           (peephole (postfix ".cdr.car.car.car")))
+*/
+function sc_caaadr(p) { return p.cdr.car.car.car; }
+/*** META ((export #t)
+           (peephole (postfix ".cdr.cdr.car.car")))
+*/
+function sc_caaddr(p) { return p.cdr.cdr.car.car; }
+/*** META ((export #t)
+           (peephole (postfix ".car.car.car.cdr")))
+*/
+function sc_cdaaar(p) { return p.car.car.car.cdr; }
+/*** META ((export #t)
+           (peephole (postfix ".car.cdr.car.cdr")))
+*/
+function sc_cdadar(p) { return p.car.cdr.car.cdr; }
+/*** META ((export #t)
+           (peephole (postfix ".cdr.car.car.cdr")))
+*/
+function sc_cdaadr(p) { return p.cdr.car.car.cdr; }
+/*** META ((export #t)
+           (peephole (postfix ".cdr.cdr.car.cdr")))
+*/
+function sc_cdaddr(p) { return p.cdr.cdr.car.cdr; }
+/*** META ((export #t)
+           (peephole (postfix ".car.car.cdr.car")))
+*/
+function sc_cadaar(p) { return p.car.car.cdr.car; }
+/*** META ((export #t)
+           (peephole (postfix ".car.cdr.cdr.car")))
+*/
+function sc_caddar(p) { return p.car.cdr.cdr.car; }
+/*** META ((export #t)
+           (peephole (postfix ".cdr.car.cdr.car")))
+*/
+function sc_cadadr(p) { return p.cdr.car.cdr.car; }
+/*** META ((export #t)
+           (peephole (postfix ".cdr.cdr.cdr.car")))
+*/
+function sc_cadddr(p) { return p.cdr.cdr.cdr.car; }
+/*** META ((export #t)
+           (peephole (postfix ".car.car.cdr.cdr")))
+*/
+function sc_cddaar(p) { return p.car.car.cdr.cdr; }
+/*** META ((export #t)
+           (peephole (postfix ".car.cdr.cdr.cdr")))
+*/
+function sc_cdddar(p) { return p.car.cdr.cdr.cdr; }
+/*** META ((export #t)
+           (peephole (postfix ".cdr.car.cdr.cdr")))
+*/
+function sc_cddadr(p) { return p.cdr.car.cdr.cdr; }
+/*** META ((export #t)
+           (peephole (postfix ".cdr.cdr.cdr.cdr")))
+*/
+function sc_cddddr(p) { return p.cdr.cdr.cdr.cdr; }
+
+/*** META ((export #t)) */
+function sc_lastPair(l) {
+    if (!sc_isPair(l)) sc_error("sc_lastPair: pair expected");
+    var res = l;
+    var cdr = l.cdr;
+    while (sc_isPair(cdr)) {
+	res = cdr;
+	cdr = res.cdr;
+    }
+    return res;
+}
+
+/*** META ((export #t)
+           (type bool)
+           (peephole (postfix " === null")))
+*/
+function sc_isNull(o) {
+    return (o === null);
+}
+
+/*** META ((export #t)
+           (type bool))
+*/
+function sc_isList(o) {
+    var rabbit;
+    var turtle;
+
+    var rabbit = o;
+    var turtle = o;
+    while (true) {
+	if (rabbit === null ||
+	    (rabbit instanceof sc_Pair && rabbit.cdr === null))
+	    return true;  // end of list
+	else if ((rabbit instanceof sc_Pair) &&
+		 (rabbit.cdr instanceof sc_Pair)) {
+	    rabbit = rabbit.cdr.cdr;
+	    turtle = turtle.cdr;
+	    if (rabbit === turtle) return false; // cycle
+	} else
+	    return false; // not pair
+    }
+}
+
+/*** META ((export #t)) */
+function sc_list() {
+    var res = null;
+    var a = arguments;
+    for (var i = a.length-1; i >= 0; i--)
+	res = new sc_Pair(a[i], res);
+    return res;
+}
+
+/*** META ((export #t)) */
+function sc_iota(num, init) {
+   var res = null;
+   if (!init) init = 0;
+   for (var i = num - 1; i >= 0; i--)
+      res = new sc_Pair(i + init, res);
+   return res;
+}
+
+/*** META ((export #t)) */
+function sc_makeList(nbEls, fill) {
+    var res = null;
+    for (var i = 0; i < nbEls; i++)
+	res = new sc_Pair(fill, res);
+    return res;
+}
+
+/*** META ((export #t)) */
+function sc_length(l) {
+    var res = 0;
+    while (l !== null) {
+	res++;
+	l = l.cdr;
+    }
+    return res;
+}
+
+/*** META ((export #t)) */
+function sc_remq(o, l) {
+    var dummy = { cdr : null };
+    var tail = dummy;
+    while (l !== null) {
+	if (l.car !== o) {
+	    tail.cdr = sc_cons(l.car, null);
+	    tail = tail.cdr;
+	}
+	l = l.cdr;
+    }
+    return dummy.cdr;
+}
+
+/*** META ((export #t)) */
+function sc_remqBang(o, l) {
+    var dummy = { cdr : null };
+    var tail = dummy;
+    var needsAssig = true;
+    while (l !== null) {
+	if (l.car === o) {
+	    needsAssig = true;
+	} else {
+	    if (needsAssig) {
+		tail.cdr = l;
+		needsAssig = false;
+	    }
+	    tail = l;
+	}
+	l = l.cdr;
+    }
+    tail.cdr = null;
+    return dummy.cdr;
+}
+
+/*** META ((export #t)) */
+function sc_delete(o, l) {
+    var dummy = { cdr : null };
+    var tail = dummy;
+    while (l !== null) {
+	if (!sc_isEqual(l.car, o)) {
+	    tail.cdr = sc_cons(l.car, null);
+	    tail = tail.cdr;
+	}
+	l = l.cdr;
+    }
+    return dummy.cdr;
+}
+
+/*** META ((export #t)) */
+function sc_deleteBang(o, l) {
+    var dummy = { cdr : null };
+    var tail = dummy;
+    var needsAssig = true;
+    while (l !== null) {
+	if (sc_isEqual(l.car, o)) {
+	    needsAssig = true;
+	} else {
+	    if (needsAssig) {
+		tail.cdr = l;
+		needsAssig = false;
+	    }
+	    tail = l;
+	}
+	l = l.cdr;
+    }
+    tail.cdr = null;
+    return dummy.cdr;
+}
+
+function sc_reverseAppendBang(l1, l2) {
+    var res = l2;
+    while (l1 !== null) {
+	var tmp = res;
+	res = l1;
+	l1 = l1.cdr;
+	res.cdr = tmp;
+    }
+    return res;
+}
+	
+function sc_dualAppend(l1, l2) {
+    if (l1 === null) return l2;
+    if (l2 === null) return l1;
+    var rev = sc_reverse(l1);
+    return sc_reverseAppendBang(rev, l2);
+}
+
+/*** META ((export #t)) */
+function sc_append() {
+    if (arguments.length === 0)
+	return null;
+    var res = arguments[arguments.length - 1];
+    for (var i = arguments.length - 2; i >= 0; i--)
+	res = sc_dualAppend(arguments[i], res);
+    return res;
+}
+
+function sc_dualAppendBang(l1, l2) {
+    if (l1 === null) return l2;
+    if (l2 === null) return l1;
+    var tmp = l1;
+    while (tmp.cdr !== null) tmp=tmp.cdr;
+    tmp.cdr = l2;
+    return l1;
+}
+
+/*** META ((export #t)) */
+function sc_appendBang() {
+    var res = null;
+    for (var i = 0; i < arguments.length; i++)
+	res = sc_dualAppendBang(res, arguments[i]);
+    return res;
+}
+
+/*** META ((export #t)) */
+function sc_reverse(l1) {
+    var res = null;
+    while (l1 !== null) {
+	res = sc_cons(l1.car, res);
+	l1 = l1.cdr;
+    }
+    return res;
+}
+
+/*** META ((export #t)) */
+function sc_reverseBang(l) {
+    return sc_reverseAppendBang(l, null);
+}
+
+/*** META ((export #t)) */
+function sc_listTail(l, k) {
+    var res = l;
+    for (var i = 0; i < k; i++) {
+	res = res.cdr;
+    }
+    return res;
+}
+
+/*** META ((export #t)) */
+function sc_listRef(l, k) {
+    return sc_listTail(l, k).car;
+}
+
+/* // unoptimized generic versions
+function sc_memX(o, l, comp) {
+    while (l != null) {
+	if (comp(l.car, o))
+	    return l;
+	l = l.cdr;
+    }
+    return false;
+}
+function sc_memq(o, l) { return sc_memX(o, l, sc_isEq); }
+function sc_memv(o, l) { return sc_memX(o, l, sc_isEqv); }
+function sc_member(o, l) { return sc_memX(o, l, sc_isEqual); }
+*/
+
+/* optimized versions */
+/*** META ((export #t)) */
+function sc_memq(o, l) {
+    while (l !== null) {
+	if (l.car === o)
+	    return l;
+	l = l.cdr;
+    }
+    return false;
+}
+/*** META ((export #t)) */
+function sc_memv(o, l) {
+    while (l !== null) {
+	if (l.car === o)
+	    return l;
+	l = l.cdr;
+    }
+    return false;
+}
+/*** META ((export #t)) */
+function sc_member(o, l) {
+    while (l !== null) {
+	if (sc_isEqual(l.car,o))
+	    return l;
+	l = l.cdr;
+    }
+    return false;
+}
+
+/* // generic unoptimized versions
+function sc_assX(o, al, comp) {
+    while (al != null) {
+	if (comp(al.car.car, o))
+	    return al.car;
+	al = al.cdr;
+    }
+    return false;
+}
+function sc_assq(o, al) { return sc_assX(o, al, sc_isEq); }
+function sc_assv(o, al) { return sc_assX(o, al, sc_isEqv); }
+function sc_assoc(o, al) { return sc_assX(o, al, sc_isEqual); }
+*/
+// optimized versions
+/*** META ((export #t)) */
+function sc_assq(o, al) {
+    while (al !== null) {
+	if (al.car.car === o)
+	    return al.car;
+	al = al.cdr;
+    }
+    return false;
+}
+/*** META ((export #t)) */
+function sc_assv(o, al) {
+    while (al !== null) {
+	if (al.car.car === o)
+	    return al.car;
+	al = al.cdr;
+    }
+    return false;
+}
+/*** META ((export #t)) */
+function sc_assoc(o, al) {
+    while (al !== null) {
+	if (sc_isEqual(al.car.car, o))
+	    return al.car;
+	al = al.cdr;
+    }
+    return false;
+}
+
+/* can be used for mutable strings and characters */
+function sc_isCharStringEqual(cs1, cs2) { return cs1.val === cs2.val; }
+function sc_isCharStringLess(cs1, cs2) { return cs1.val < cs2.val; }
+function sc_isCharStringGreater(cs1, cs2) { return cs1.val > cs2.val; }
+function sc_isCharStringLessEqual(cs1, cs2) { return cs1.val <= cs2.val; }
+function sc_isCharStringGreaterEqual(cs1, cs2) { return cs1.val >= cs2.val; }
+function sc_isCharStringCIEqual(cs1, cs2)
+    { return cs1.val.toLowerCase() === cs2.val.toLowerCase(); }
+function sc_isCharStringCILess(cs1, cs2)
+    { return cs1.val.toLowerCase() < cs2.val.toLowerCase(); }
+function sc_isCharStringCIGreater(cs1, cs2)
+    { return cs1.val.toLowerCase() > cs2.val.toLowerCase(); }
+function sc_isCharStringCILessEqual(cs1, cs2)
+    { return cs1.val.toLowerCase() <= cs2.val.toLowerCase(); }
+function sc_isCharStringCIGreaterEqual(cs1, cs2)
+    { return cs1.val.toLowerCase() >= cs2.val.toLowerCase(); }
+
+
+
+
+function sc_Char(c) {
+    var cached = sc_Char.lazy[c];
+    if (cached)
+	return cached;
+    this.val = c;
+    sc_Char.lazy[c] = this;
+    // add return, so FF does not complain.
+    return undefined;
+}
+sc_Char.lazy = new Object();
+// thanks to Eric
+sc_Char.char2readable = {
+    "\000": "#\\null",
+    "\007": "#\\bell",
+    "\010": "#\\backspace",
+    "\011": "#\\tab",
+    "\012": "#\\newline",
+    "\014": "#\\page",
+    "\015": "#\\return",
+    "\033": "#\\escape",
+    "\040": "#\\space",
+    "\177": "#\\delete",
+
+  /* poeticless names */
+    "\001": "#\\soh",
+    "\002": "#\\stx",
+    "\003": "#\\etx",
+    "\004": "#\\eot",
+    "\005": "#\\enq",
+    "\006": "#\\ack",
+
+    "\013": "#\\vt",
+    "\016": "#\\so",
+    "\017": "#\\si",
+
+    "\020": "#\\dle",
+    "\021": "#\\dc1",
+    "\022": "#\\dc2",
+    "\023": "#\\dc3",
+    "\024": "#\\dc4",
+    "\025": "#\\nak",
+    "\026": "#\\syn",
+    "\027": "#\\etb",
+
+    "\030": "#\\can",
+    "\031": "#\\em",
+    "\032": "#\\sub",
+    "\033": "#\\esc",
+    "\034": "#\\fs",
+    "\035": "#\\gs",
+    "\036": "#\\rs",
+    "\037": "#\\us"};
+
+sc_Char.readable2char = {
+    "null": "\000",
+    "bell": "\007",
+    "backspace": "\010",
+    "tab": "\011",
+    "newline": "\012",
+    "page": "\014",
+    "return": "\015",
+    "escape": "\033",
+    "space": "\040",
+    "delete": "\000",
+    "soh": "\001",
+    "stx": "\002",
+    "etx": "\003",
+    "eot": "\004",
+    "enq": "\005",
+    "ack": "\006",
+    "bel": "\007",
+    "bs": "\010",
+    "ht": "\011",
+    "nl": "\012",
+    "vt": "\013",
+    "np": "\014",
+    "cr": "\015",
+    "so": "\016",
+    "si": "\017",
+    "dle": "\020",
+    "dc1": "\021",
+    "dc2": "\022",
+    "dc3": "\023",
+    "dc4": "\024",
+    "nak": "\025",
+    "syn": "\026",
+    "etb": "\027",
+    "can": "\030",
+    "em": "\031",
+    "sub": "\032",
+    "esc": "\033",
+    "fs": "\034",
+    "gs": "\035",
+    "rs": "\036",
+    "us": "\037",
+    "sp": "\040",
+    "del": "\177"};
+
+sc_Char.prototype.toString = function() {
+    return this.val;
+};
+// sc_toDisplayString == toString
+sc_Char.prototype.sc_toWriteString = function() {
+    var entry = sc_Char.char2readable[this.val];
+    if (entry)
+	return entry;
+    else
+	return "#\\" + this.val;
+};
+
+/*** META ((export #t)
+           (type bool)
+           (peephole (postfix "instanceof sc_Char")))
+*/
+function sc_isChar(c) {
+    return (c instanceof sc_Char);
+}
+
+/*** META ((export char=?)
+           (type bool)
+           (peephole (hole 2 c1 ".val === " c2 ".val")))
+*/
+var sc_isCharEqual = sc_isCharStringEqual;
+/*** META ((export char<?)
+           (type bool)
+           (peephole (hole 2 c1 ".val < " c2 ".val")))
+*/
+var sc_isCharLess = sc_isCharStringLess;
+/*** META ((export char>?)
+           (type bool)
+           (peephole (hole 2 c1 ".val > " c2 ".val")))
+*/
+var sc_isCharGreater = sc_isCharStringGreater;
+/*** META ((export char<=?)
+           (type bool)
+           (peephole (hole 2 c1 ".val <= " c2 ".val")))
+*/
+var sc_isCharLessEqual = sc_isCharStringLessEqual;
+/*** META ((export char>=?)
+           (type bool)
+           (peephole (hole 2 c1 ".val >= " c2 ".val")))
+*/
+var sc_isCharGreaterEqual = sc_isCharStringGreaterEqual;
+/*** META ((export char-ci=?)
+           (type bool)
+           (peephole (hole 2 c1 ".val.toLowerCase() === " c2 ".val.toLowerCase()")))
+*/
+var sc_isCharCIEqual = sc_isCharStringCIEqual;
+/*** META ((export char-ci<?)
+           (type bool)
+           (peephole (hole 2 c1 ".val.toLowerCase() < " c2 ".val.toLowerCase()")))
+*/
+var sc_isCharCILess = sc_isCharStringCILess;
+/*** META ((export char-ci>?)
+           (type bool)
+           (peephole (hole 2 c1 ".val.toLowerCase() > " c2 ".val.toLowerCase()")))
+*/
+var sc_isCharCIGreater = sc_isCharStringCIGreater;
+/*** META ((export char-ci<=?)
+           (type bool)
+           (peephole (hole 2 c1 ".val.toLowerCase() <= " c2 ".val.toLowerCase()")))
+*/
+var sc_isCharCILessEqual = sc_isCharStringCILessEqual;
+/*** META ((export char-ci>=?)
+           (type bool)
+           (peephole (hole 2 c1 ".val.toLowerCase() >= " c2 ".val.toLowerCase()")))
+*/
+var sc_isCharCIGreaterEqual = sc_isCharStringCIGreaterEqual;
+
+var SC_NUMBER_CLASS = "0123456789";
+var SC_WHITESPACE_CLASS = ' \r\n\t\f';
+var SC_LOWER_CLASS = 'abcdefghijklmnopqrstuvwxyz';
+var SC_UPPER_CLASS = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
+
+function sc_isCharOfClass(c, cl) { return (cl.indexOf(c) != -1); }
+/*** META ((export #t)
+           (type bool))
+*/
+function sc_isCharAlphabetic(c)
+    { return sc_isCharOfClass(c.val, SC_LOWER_CLASS) ||
+	  sc_isCharOfClass(c.val, SC_UPPER_CLASS); }
+/*** META ((export #t)
+           (type bool)
+           (peephole (hole 1 "SC_NUMBER_CLASS.indexOf(" c ".val) != -1")))
+*/
+function sc_isCharNumeric(c)
+    { return sc_isCharOfClass(c.val, SC_NUMBER_CLASS); }
+/*** META ((export #t)
+           (type bool))
+*/
+function sc_isCharWhitespace(c) {
+    var tmp = c.val;
+    return tmp === " " || tmp === "\r" || tmp === "\n" || tmp === "\t" || tmp === "\f";
+}
+/*** META ((export #t)
+           (type bool)
+           (peephole (hole 1 "SC_UPPER_CLASS.indexOf(" c ".val) != -1")))
+*/
+function sc_isCharUpperCase(c)
+    { return sc_isCharOfClass(c.val, SC_UPPER_CLASS); }
+/*** META ((export #t)
+           (type bool)
+           (peephole (hole 1 "SC_LOWER_CLASS.indexOf(" c ".val) != -1")))
+*/
+function sc_isCharLowerCase(c)
+    { return sc_isCharOfClass(c.val, SC_LOWER_CLASS); }
+
+/*** META ((export #t)
+           (peephole (postfix ".val.charCodeAt(0)")))
+*/
+function sc_char2integer(c)
+    { return c.val.charCodeAt(0); }
+/*** META ((export #t)
+           (peephole (hole 1 "new sc_Char(String.fromCharCode(" n "))")))
+*/
+function sc_integer2char(n)
+    { return new sc_Char(String.fromCharCode(n)); }
+
+/*** META ((export #t)
+           (peephole (hole 1 "new sc_Char(" c ".val.toUpperCase())")))
+*/
+function sc_charUpcase(c)
+    { return new sc_Char(c.val.toUpperCase()); }
+/*** META ((export #t)
+           (peephole (hole 1 "new sc_Char(" c ".val.toLowerCase())")))
+*/
+function sc_charDowncase(c)
+    { return new sc_Char(c.val.toLowerCase()); }
+
+function sc_makeJSStringOfLength(k, c) {
+    var fill;
+    if (c === undefined)
+	fill = " ";
+    else
+	fill = c;
+    var res = "";
+    var len = 1;
+    // every round doubles the size of fill.
+    while (k >= len) {
+	if (k & len)
+	    res = res.concat(fill);
+	fill = fill.concat(fill);
+	len *= 2;
+    }
+    return res;
+}
+
+function sc_makejsString(k, c) {
+    var fill;
+    if (c)
+	fill = c.val;
+    else
+	fill = " ";
+    return sc_makeJSStringOfLength(k, fill);
+}
+
+function sc_jsstring2list(s) {
+    var res = null;
+    for (var i = s.length - 1; i >= 0; i--)
+	res = sc_cons(new sc_Char(s.charAt(i)), res);
+    return res;
+}
+
+function sc_list2jsstring(l) {
+    var a = new Array();
+    while(l !== null) {
+	a.push(l.car.val);
+	l = l.cdr;
+    }
+    return "".concat.apply("", a);
+}
+
+var sc_Vector = Array;
+
+sc_Vector.prototype.sc_toWriteOrDisplayString = function(writeOrDisplay) {
+    if (this.length === 0) return "#()";
+
+    var res = "#(" + writeOrDisplay(this[0]);
+    for (var i = 1; i < this.length; i++)
+	res += " " + writeOrDisplay(this[i]);
+    res += ")";
+    return res;
+};
+sc_Vector.prototype.sc_toDisplayString = function() {
+    return this.sc_toWriteOrDisplayString(sc_toDisplayString);
+};
+sc_Vector.prototype.sc_toWriteString = function() {
+    return this.sc_toWriteOrDisplayString(sc_toWriteString);
+};
+
+/*** META ((export vector? array?)
+           (type bool)
+           (peephole (postfix " instanceof sc_Vector")))
+*/
+function sc_isVector(v) {
+    return (v instanceof sc_Vector);
+}
+
+// only applies to vectors
+function sc_isVectorEqual(v1, v2, comp) {
+    if (v1.length !== v2.length) return false;
+    for (var i = 0; i < v1.length; i++)
+	if (!comp(v1[i], v2[i])) return false;
+    return true;
+}
+
+/*** META ((export make-vector make-array)) */
+function sc_makeVector(size, fill) {
+    var a = new sc_Vector(size);
+    if (fill !== undefined)
+	sc_vectorFillBang(a, fill);
+    return a;
+}
+
+/*** META ((export vector array)
+           (peephole (vector)))
+*/
+function sc_vector() {
+    var a = new sc_Vector();
+    for (var i = 0; i < arguments.length; i++)
+	a.push(arguments[i]);
+    return a;
+}
+
+/*** META ((export vector-length array-length)
+           (peephole (postfix ".length")))
+*/
+function sc_vectorLength(v) {
+    return v.length;
+}
+
+/*** META ((export vector-ref array-ref)
+           (peephole (hole 2 v "[" pos "]")))
+*/
+function sc_vectorRef(v, pos) {
+    return v[pos];
+}
+
+/*** META ((export vector-set! array-set!)
+           (peephole (hole 3 v "[" pos "] = " val)))
+*/
+function sc_vectorSetBang(v, pos, val) {
+    v[pos] = val;
+}
+
+/*** META ((export vector->list array->list)) */
+function sc_vector2list(a) {
+    var res = null;
+    for (var i = a.length-1; i >= 0; i--)
+	res = sc_cons(a[i], res);
+    return res;
+}
+
+/*** META ((export list->vector list->array)) */
+function sc_list2vector(l) {
+    var a = new sc_Vector();
+    while(l !== null) {
+	a.push(l.car);
+	l = l.cdr;
+    }
+    return a;
+}
+
+/*** META ((export vector-fill! array-fill!)) */
+function sc_vectorFillBang(a, fill) {
+    for (var i = 0; i < a.length; i++)
+	a[i] = fill;
+}
+
+
+/*** META ((export #t)) */
+function sc_copyVector(a, len) {
+    if (len <= a.length)
+	return a.slice(0, len);
+    else {
+	var tmp = a.concat();
+	tmp.length = len;
+	return tmp;
+    }
+}
+
+/*** META ((export #t)
+           (peephole (hole 3 a ".slice(" start "," end ")")))
+*/
+function sc_vectorCopy(a, start, end) {
+    return a.slice(start, end);
+}
+
+/*** META ((export #t)) */
+function sc_vectorCopyBang(target, tstart, source, sstart, send) {
+    if (!sstart) sstart = 0;
+    if (!send) send = source.length;
+
+    // if target == source we don't want to overwrite not yet copied elements.
+    if (tstart <= sstart) {
+	for (var i = tstart, j = sstart; j < send; i++, j++) {
+	    target[i] = source[j];
+	}
+    } else {
+	var diff = send - sstart;
+	for (var i = tstart + diff - 1, j = send - 1;
+	     j >= sstart;
+	     i--, j--) {
+	    target[i] = source[j];
+	}
+    }
+    return target;
+}
+
+/*** META ((export #t)
+           (type bool)
+           (peephole (hole 1 "typeof " o " === 'function'")))
+*/
+function sc_isProcedure(o) {
+    return (typeof o === "function");
+}
+
+/*** META ((export #t)) */
+function sc_apply(proc) {
+    var args = new Array();
+    // first part of arguments are not in list-form.
+    for (var i = 1; i < arguments.length - 1; i++)
+	args.push(arguments[i]);
+    var l = arguments[arguments.length - 1];
+    while (l !== null) {
+	args.push(l.car);
+	l = l.cdr;
+    }
+    return proc.apply(null, args);
+}
+
+/*** META ((export #t)) */
+function sc_map(proc, l1) {
+    if (l1 === undefined)
+	return null;
+    // else
+    var nbApplyArgs = arguments.length - 1;
+    var applyArgs = new Array(nbApplyArgs);
+    var revres = null;
+    while (l1 !== null) {
+	for (var i = 0; i < nbApplyArgs; i++) {
+	    applyArgs[i] = arguments[i + 1].car;
+	    arguments[i + 1] = arguments[i + 1].cdr;
+	}
+	revres = sc_cons(proc.apply(null, applyArgs), revres);
+    }
+    return sc_reverseAppendBang(revres, null);
+}
+
+/*** META ((export #t)) */
+function sc_mapBang(proc, l1) {
+    if (l1 === undefined)
+	return null;
+    // else
+    var l1_orig = l1;
+    var nbApplyArgs = arguments.length - 1;
+    var applyArgs = new Array(nbApplyArgs);
+    while (l1 !== null) {
+	var tmp = l1;
+	for (var i = 0; i < nbApplyArgs; i++) {
+	    applyArgs[i] = arguments[i + 1].car;
+	    arguments[i + 1] = arguments[i + 1].cdr;
+	}
+	tmp.car = proc.apply(null, applyArgs);
+    }
+    return l1_orig;
+}
+
+/*** META ((export #t)) */
+function sc_forEach(proc, l1) {
+    if (l1 === undefined)
+	return undefined;
+    // else
+    var nbApplyArgs = arguments.length - 1;
+    var applyArgs = new Array(nbApplyArgs);
+    while (l1 !== null) {
+	for (var i = 0; i < nbApplyArgs; i++) {
+	    applyArgs[i] = arguments[i + 1].car;
+	    arguments[i + 1] = arguments[i + 1].cdr;
+	}
+	proc.apply(null, applyArgs);
+    }
+    // add return so FF does not complain.
+    return undefined;
+}
+
+/*** META ((export #t)) */
+function sc_filter(proc, l1) {
+    var dummy = { cdr : null };
+    var tail = dummy;
+    while (l1 !== null) {
+	if (proc(l1.car) !== false) {
+	    tail.cdr = sc_cons(l1.car, null);
+	    tail = tail.cdr;
+	}
+	l1 = l1.cdr;
+    }
+    return dummy.cdr;
+}
+
+/*** META ((export #t)) */
+function sc_filterBang(proc, l1) {
+    var head = sc_cons("dummy", l1);
+    var it = head;
+    var next = l1;
+    while (next !== null) {
+        if (proc(next.car) !== false) {
+	    it.cdr = next
+	    it = next;
+	}
+	next = next.cdr;
+    }
+    it.cdr = null;
+    return head.cdr;
+}
+
+function sc_filterMap1(proc, l1) {
+    var revres = null;
+    while (l1 !== null) {
+        var tmp = proc(l1.car)
+        if (tmp !== false) revres = sc_cons(tmp, revres);
+        l1 = l1.cdr;
+    }
+    return sc_reverseAppendBang(revres, null);
+}
+function sc_filterMap2(proc, l1, l2) {
+    var revres = null;
+    while (l1 !== null) {
+        var tmp = proc(l1.car, l2.car);
+        if(tmp !== false) revres = sc_cons(tmp, revres);
+	l1 = l1.cdr;
+	l2 = l2.cdr
+    }
+    return sc_reverseAppendBang(revres, null);
+}
+
+/*** META ((export #t)) */
+function sc_filterMap(proc, l1, l2, l3) {
+    if (l2 === undefined)
+	return sc_filterMap1(proc, l1);
+    else if (l3 === undefined)
+	return sc_filterMap2(proc, l1, l2);
+    // else
+    var nbApplyArgs = arguments.length - 1;
+    var applyArgs = new Array(nbApplyArgs);
+    var revres = null;
+    while (l1 !== null) {
+	for (var i = 0; i < nbApplyArgs; i++) {
+	    applyArgs[i] = arguments[i + 1].car;
+	    arguments[i + 1] = arguments[i + 1].cdr;
+	}
+	var tmp = proc.apply(null, applyArgs);
+	if(tmp !== false) revres = sc_cons(tmp, revres);
+    }
+    return sc_reverseAppendBang(revres, null);
+}
+
+/*** META ((export #t)) */
+function sc_any(proc, l) {
+    var revres = null;
+    while (l !== null) {
+        var tmp = proc(l.car);
+        if(tmp !== false) return tmp;
+	l = l.cdr;
+    }
+    return false;
+}
+
+/*** META ((export any?)
+           (peephole (hole 2 "sc_any(" proc "," l ") !== false")))
+*/
+function sc_anyPred(proc, l) {
+    return sc_any(proc, l)!== false;
+}
+
+/*** META ((export #t)) */
+function sc_every(proc, l) {
+    var revres = null;
+    var tmp = true;
+    while (l !== null) {
+        tmp = proc(l.car);
+        if (tmp === false) return false;
+	l = l.cdr;
+    }
+    return tmp;
+}
+
+/*** META ((export every?)
+           (peephole (hole 2 "sc_every(" proc "," l ") !== false")))
+*/
+function sc_everyPred(proc, l) {
+    var tmp = sc_every(proc, l);
+    if (tmp !== false) return true;
+    return false;
+}
+
+/*** META ((export #t)
+           (peephole (postfix "()")))
+*/
+function sc_force(o) {
+    return o();
+}
+
+/*** META ((export #t)) */
+function sc_makePromise(proc) {
+    var isResultReady = false;
+    var result = undefined;
+    return function() {
+	if (!isResultReady) {
+	    var tmp = proc();
+	    if (!isResultReady) {
+		isResultReady = true;
+		result = tmp;
+	    }
+	}
+	return result;
+    };
+}
+
+function sc_Values(values) {
+    this.values = values;
+}
+
+/*** META ((export #t)
+           (peephole (values)))
+*/
+function sc_values() {
+    if (arguments.length === 1)
+	return arguments[0];
+    else
+	return new sc_Values(arguments);
+}
+
+/*** META ((export #t)) */
+function sc_callWithValues(producer, consumer) {
+    var produced = producer();
+    if (produced instanceof sc_Values)
+	return consumer.apply(null, produced.values);
+    else
+	return consumer(produced);
+}
+
+/*** META ((export #t)) */
+function sc_dynamicWind(before, thunk, after) {
+    before();
+    try {
+	var res = thunk();
+	return res;
+    } finally {
+	after();
+    }
+}
+
+
+// TODO: eval/scheme-report-environment/null-environment/interaction-environment
+
+// LIMITATION: 'load' doesn't exist without files.
+// LIMITATION: transcript-on/transcript-off doesn't exist without files.
+
+
+function sc_Struct(name) {
+    this.name = name;
+}
+sc_Struct.prototype.sc_toDisplayString = function() {
+    return "#<struct" + sc_hash(this) + ">";
+};
+sc_Struct.prototype.sc_toWriteString = sc_Struct.prototype.sc_toDisplayString;
+
+/*** META ((export #t)
+           (peephole (hole 1 "new sc_Struct(" name ")")))
+*/
+function sc_makeStruct(name) {
+    return new sc_Struct(name);
+}
+
+/*** META ((export #t)
+           (type bool)
+           (peephole (postfix " instanceof sc_Struct")))
+*/
+function sc_isStruct(o) {
+    return (o instanceof sc_Struct);
+}
+
+/*** META ((export #t)
+           (type bool)
+           (peephole (hole 2 "(" 1 " instanceof sc_Struct) && ( " 1 ".name === " 0 ")")))
+*/
+function sc_isStructNamed(name, s) {
+    return ((s instanceof sc_Struct) && (s.name === name));
+}
+
+/*** META ((export struct-field)
+           (peephole (hole 3 0 "[" 2 "]")))
+*/
+function sc_getStructField(s, name, field) {
+    return s[field];
+}
+
+/*** META ((export struct-field-set!)
+           (peephole (hole 4 0 "[" 2 "] = " 3)))
+*/
+function sc_setStructFieldBang(s, name, field, val) {
+    s[field] = val;
+}
+
+/*** META ((export #t)
+           (peephole (prefix "~")))
+*/
+function sc_bitNot(x) {
+    return ~x;
+}
+
+/*** META ((export #t)
+           (peephole (infix 2 2 "&")))
+*/
+function sc_bitAnd(x, y) {
+    return x & y;
+}
+
+/*** META ((export #t)
+           (peephole (infix 2 2 "|")))
+*/
+function sc_bitOr(x, y) {
+    return x | y;
+}
+
+/*** META ((export #t)
+           (peephole (infix 2 2 "^")))
+*/
+function sc_bitXor(x, y) {
+    return x ^ y;
+}
+
+/*** META ((export #t)
+           (peephole (infix 2 2 "<<")))
+*/
+function sc_bitLsh(x, y) {
+    return x << y;
+}
+
+/*** META ((export #t)
+           (peephole (infix 2 2 ">>")))
+*/
+function sc_bitRsh(x, y) {
+    return x >> y;
+}
+
+/*** META ((export #t)
+           (peephole (infix 2 2 ">>>")))
+*/
+function sc_bitUrsh(x, y) {
+    return x >>> y;
+}
+
+/*** META ((export js-field js-property)
+           (peephole (hole 2 o "[" field "]")))
+*/
+function sc_jsField(o, field) {
+    return o[field];
+}
+
+/*** META ((export js-field-set! js-property-set!)
+           (peephole (hole 3 o "[" field "] = " val)))
+*/
+function sc_setJsFieldBang(o, field, val) {
+    return o[field] = val;
+}
+
+/*** META ((export js-field-delete! js-property-delete!)
+           (peephole (hole 2 "delete" o "[" field "]")))
+*/
+function sc_deleteJsFieldBang(o, field) {
+    delete o[field];
+}
+
+/*** META ((export #t)
+           (peephole (jsCall)))
+*/
+function sc_jsCall(o, fun) {
+    var args = new Array();
+    for (var i = 2; i < arguments.length; i++)
+	args[i-2] = arguments[i];
+    return fun.apply(o, args);
+}
+
+/*** META ((export #t)
+           (peephole (jsMethodCall)))
+*/
+function sc_jsMethodCall(o, field) {
+    var args = new Array();
+    for (var i = 2; i < arguments.length; i++)
+	args[i-2] = arguments[i];
+    return o[field].apply(o, args);
+}
+
+/*** META ((export new js-new)
+           (peephole (jsNew)))
+*/
+function sc_jsNew(c) {
+    var evalStr = "new c(";
+    evalStr +=arguments.length > 1? "arguments[1]": "";
+    for (var i = 2; i < arguments.length; i++)
+	evalStr += ", arguments[" + i + "]";
+    evalStr +=")";
+    return eval(evalStr);
+}
+
+// ======================== RegExp ====================
+/*** META ((export #t)) */
+function sc_pregexp(re) {
+    return new RegExp(sc_string2jsstring(re));
+}
+
+/*** META ((export #t)) */
+function sc_pregexpMatch(re, s) {
+    var reg = (re instanceof RegExp) ? re : sc_pregexp(re);
+    var tmp = reg.exec(sc_string2jsstring(s));
+
+    if (tmp == null) return false;
+
+    var res = null;
+    for (var i = tmp.length-1; i >= 0; i--) {
+	if (tmp[i] !== null) {
+	    res = sc_cons(sc_jsstring2string(tmp[i]), res);
+	} else {
+	    res = sc_cons(false, res);
+	}
+    }
+    return res;
+}
+
+/*** META ((export #t)) */
+function sc_pregexpReplace(re, s1, s2) {
+   var reg;
+   var jss1 = sc_string2jsstring(s1);
+   var jss2 = sc_string2jsstring(s2);
+
+   if (re instanceof RegExp) {
+       if (re.global)
+	   reg = re;
+       else
+	   reg = new RegExp(re.source);
+   } else {
+       reg = new RegExp(sc_string2jsstring(re));
+   }
+
+   return jss1.replace(reg, jss2);
+}
+
+/*** META ((export pregexp-replace*)) */
+function sc_pregexpReplaceAll(re, s1, s2) {
+   var reg;
+   var jss1 = sc_string2jsstring(s1);
+   var jss2 = sc_string2jsstring(s2);
+
+   if (re instanceof RegExp) {
+      if (re.global)
+	  reg = re;
+      else
+	  reg = new RegExp(re.source, "g");
+   } else {
+       reg = new RegExp(sc_string2jsstring(re), "g");
+   }
+
+   return jss1.replace(reg, jss2);
+}
+
+/*** META ((export #t)) */
+function sc_pregexpSplit(re, s) {
+   var reg = ((re instanceof RegExp) ?
+	      re :
+	      new RegExp(sc_string2jsstring(re)));
+   var jss = sc_string2jsstring(s);
+   var tmp = jss.split(reg);
+
+   if (tmp == null) return false;
+
+   return sc_vector2list(tmp);
+}
+
+
+/* =========================================================================== */
+/* Other library stuff */
+/* =========================================================================== */
+
+/*** META ((export #t)
+           (peephole (hole 1 "Math.floor(Math.random()*" 'n ")")))
+*/
+function sc_random(n) {
+    return Math.floor(Math.random()*n);
+}
+
+/*** META ((export current-date)
+           (peephole (hole 0 "new Date()")))
+*/
+function sc_currentDate() {
+   return new Date();
+}
+
+function sc_Hashtable() {
+}
+sc_Hashtable.prototype.toString = function() {
+    return "#{%hashtable}";
+};
+// sc_toWriteString == sc_toDisplayString == toString
+
+function sc_HashtableElement(key, val) {
+    this.key = key;
+    this.val = val;
+}
+
+/*** META ((export #t)
+           (peephole (hole 0 "new sc_Hashtable()")))
+*/
+function sc_makeHashtable() {
+    return new sc_Hashtable();
+}
+
+/*** META ((export #t)) */
+function sc_hashtablePutBang(ht, key, val) {
+    var hash = sc_hash(key);
+    ht[hash] = new sc_HashtableElement(key, val);
+}
+
+/*** META ((export #t)) */
+function sc_hashtableGet(ht, key) {
+    var hash = sc_hash(key);
+    if (hash in ht)
+	return ht[hash].val;
+    else
+	return false;
+}
+
+/*** META ((export #t)) */
+function sc_hashtableForEach(ht, f) {
+    for (var v in ht) {
+	if (ht[v] instanceof sc_HashtableElement)
+	    f(ht[v].key, ht[v].val);
+    }
+}
+
+/*** META ((export hashtable-contains?)
+           (peephole (hole 2 "sc_hash(" 1 ") in " 0)))
+*/
+function sc_hashtableContains(ht, key) {
+    var hash = sc_hash(key);
+    if (hash in ht)
+	return true;
+    else
+	return false;
+}
+
+var SC_HASH_COUNTER = 0;
+
+function sc_hash(o) {
+    if (o === null)
+	return "null";
+    else if (o === undefined)
+	return "undefined";
+    else if (o === true)
+	return "true";
+    else if (o === false)
+	return "false";
+    else if (typeof o === "number")
+	return "num-" + o;
+    else if (typeof o === "string")
+	return "jsstr-" + o;
+    else if (o.sc_getHash)
+	return o.sc_getHash();
+    else
+	return sc_counterHash.call(o);
+}
+function sc_counterHash() {
+    if (!this.sc_hash) {
+	this.sc_hash = "hash-" + SC_HASH_COUNTER;
+	SC_HASH_COUNTER++;
+    }
+    return this.sc_hash;
+}
+
+function sc_Trampoline(args, maxTailCalls) {
+    this['__trampoline return__'] = true;
+    this.args = args;
+    this.MAX_TAIL_CALLs = maxTailCalls;
+}
+// TODO: call/cc stuff
+sc_Trampoline.prototype.restart = function() {
+    var o = this;
+    while (true) {
+	// set both globals.
+	SC_TAIL_OBJECT.calls = o.MAX_TAIL_CALLs-1;
+	var fun = o.args.callee;
+	var res = fun.apply(SC_TAIL_OBJECT, o.args);
+	if (res instanceof sc_Trampoline)
+	    o = res;
+	else
+	    return res;
+    }
+}
+
+/*** META ((export bind-exit-lambda)) */
+function sc_bindExitLambda(proc) {
+    var escape_obj = new sc_BindExitException();
+    var escape = function(res) {
+	escape_obj.res = res;
+	throw escape_obj;
+    };
+    try {
+	return proc(escape);
+    } catch(e) {
+	if (e === escape_obj) {
+	    return e.res;
+	}
+	throw e;
+    }
+}
+function sc_BindExitException() {
+    this._internalException = true;
+}
+
+var SC_SCM2JS_GLOBALS = new Object();
+
+// default tail-call depth.
+// normally the program should set it again. but just in case...
+var SC_TAIL_OBJECT = new Object();
+SC_SCM2JS_GLOBALS.TAIL_OBJECT = SC_TAIL_OBJECT;
+// ======================== I/O =======================
+
+/*------------------------------------------------------------------*/
+
+function sc_EOF() {
+}
+var SC_EOF_OBJECT = new sc_EOF();
+
+function sc_Port() {
+}
+
+/* --------------- Input ports -------------------------------------*/
+
+function sc_InputPort() {
+}
+sc_InputPort.prototype = new sc_Port();
+
+sc_InputPort.prototype.peekChar = function() {
+    if (!("peeked" in this))
+	this.peeked = this.getNextChar();
+    return this.peeked;
+}
+sc_InputPort.prototype.readChar = function() {
+    var tmp = this.peekChar();
+    delete this.peeked;
+    return tmp;
+}
+sc_InputPort.prototype.isCharReady = function() {
+    return true;
+}
+sc_InputPort.prototype.close = function() {
+    // do nothing
+}
+
+/* .............. String port ..........................*/
+function sc_ErrorInputPort() {
+};
+sc_ErrorInputPort.prototype = new sc_InputPort();
+sc_ErrorInputPort.prototype.getNextChar = function() {
+    throw "can't read from error-port.";
+};
+sc_ErrorInputPort.prototype.isCharReady = function() {
+    return false;
+};
+
+
+/* .............. String port ..........................*/
+
+function sc_StringInputPort(jsStr) {
+    // we are going to do some charAts on the str.
+    // instead of recreating all the time a String-object, we
+    // create one in the beginning. (not sure, if this is really an optim)
+    this.str = new String(jsStr);
+    this.pos = 0;
+}
+sc_StringInputPort.prototype = new sc_InputPort();
+sc_StringInputPort.prototype.getNextChar = function() {
+    if (this.pos >= this.str.length)
+	return SC_EOF_OBJECT;
+    return this.str.charAt(this.pos++);
+};
+
+/* ------------- Read and other lib-funs  -------------------------------*/
+function sc_Token(type, val, pos) {
+    this.type = type;
+    this.val = val;
+    this.pos = pos;
+}
+sc_Token.EOF = 0/*EOF*/;
+sc_Token.OPEN_PAR = 1/*OPEN_PAR*/;
+sc_Token.CLOSE_PAR = 2/*CLOSE_PAR*/;
+sc_Token.OPEN_BRACE = 3/*OPEN_BRACE*/;
+sc_Token.CLOSE_BRACE = 4/*CLOSE_BRACE*/;
+sc_Token.OPEN_BRACKET = 5/*OPEN_BRACKET*/;
+sc_Token.CLOSE_BRACKET = 6/*CLOSE_BRACKET*/;
+sc_Token.WHITESPACE = 7/*WHITESPACE*/;
+sc_Token.QUOTE = 8/*QUOTE*/;
+sc_Token.ID = 9/*ID*/;
+sc_Token.DOT = 10/*DOT*/;
+sc_Token.STRING = 11/*STRING*/;
+sc_Token.NUMBER = 12/*NUMBER*/;
+sc_Token.ERROR = 13/*ERROR*/;
+sc_Token.VECTOR_BEGIN = 14/*VECTOR_BEGIN*/;
+sc_Token.TRUE = 15/*TRUE*/;
+sc_Token.FALSE = 16/*FALSE*/;
+sc_Token.UNSPECIFIED = 17/*UNSPECIFIED*/;
+sc_Token.REFERENCE = 18/*REFERENCE*/;
+sc_Token.STORE = 19/*STORE*/;
+sc_Token.CHAR = 20/*CHAR*/;
+
+var SC_ID_CLASS = SC_LOWER_CLASS + SC_UPPER_CLASS + "!$%*+-./:<=>?@^_~";
+function sc_Tokenizer(port) {
+    this.port = port;
+}
+sc_Tokenizer.prototype.peekToken = function() {
+    if (this.peeked)
+	return this.peeked;
+    var newToken = this.nextToken();
+    this.peeked = newToken;
+    return newToken;
+};
+sc_Tokenizer.prototype.readToken = function() {
+    var tmp = this.peekToken();
+    delete this.peeked;
+    return tmp;
+};
+sc_Tokenizer.prototype.nextToken = function() {
+    var port = this.port;
+
+    function isNumberChar(c) {
+	return (c >= "0" && c <= "9");
+    };
+    function isIdOrNumberChar(c) {
+	return SC_ID_CLASS.indexOf(c) != -1 || // ID-char
+	    (c >= "0" && c <= "9");
+    }
+    function isWhitespace(c) {
+	return c === " " || c === "\r" || c === "\n" || c === "\t" || c === "\f";
+    };
+    function isWhitespaceOrEOF(c) {
+	return isWhitespace(c) || c === SC_EOF_OBJECT;
+    };
+
+    function readString() {
+	res = "";
+	while (true) {
+	    var c = port.readChar();
+	    switch (c) {
+	    case '"':
+		return new sc_Token(11/*STRING*/, res);
+	    case "\\":
+		var tmp = port.readChar();
+		switch (tmp) {
+		case '0': res += "\0"; break;
+		case 'a': res += "\a"; break;
+		case 'b': res += "\b"; break;
+		case 'f': res += "\f"; break;
+		case 'n': res += "\n"; break;
+		case 'r': res += "\r"; break;
+		case 't': res += "\t"; break;
+		case 'v': res += "\v"; break;
+		case '"': res += '"'; break;
+		case '\\': res += '\\'; break;
+		case 'x':
+		    /* hexa-number */
+		    var nb = 0;
+		    while (true) {
+			var hexC = port.peekChar();
+			if (hexC >= '0' && hexC <= '9') {
+			    port.readChar();
+			    nb = nb * 16 + hexC.charCodeAt(0) - '0'.charCodeAt(0);
+			} else if (hexC >= 'a' && hexC <= 'f') {
+			    port.readChar();
+			    nb = nb * 16 + hexC.charCodeAt(0) - 'a'.charCodeAt(0);
+			} else if (hexC >= 'A' && hexC <= 'F') {
+			    port.readChar();
+			    nb = nb * 16 + hexC.charCodeAt(0) - 'A'.charCodeAt(0);
+			} else {
+			    // next char isn't part of hex.
+			    res += String.fromCharCode(nb);
+			    break;
+			}
+		    }
+		    break;
+		default:
+		    if (tmp === SC_EOF_OBJECT) {
+			return new sc_Token(13/*ERROR*/, "unclosed string-literal" + res);
+		    }
+		    res += tmp;
+		}
+		break;
+	    default:
+		if (c === SC_EOF_OBJECT) {
+		    return new sc_Token(13/*ERROR*/, "unclosed string-literal" + res);
+		}
+		res += c;
+	    }
+	}
+    };
+    function readIdOrNumber(firstChar) {
+	var res = firstChar;
+	while (isIdOrNumberChar(port.peekChar()))
+	    res += port.readChar();
+	if (isNaN(res))
+	    return new sc_Token(9/*ID*/, res);
+	else
+	    return new sc_Token(12/*NUMBER*/, res - 0);
+    };
+
+    function skipWhitespaceAndComments() {
+	var done = false;
+	while (!done) {
+	    done = true;
+	    while (isWhitespace(port.peekChar()))
+		port.readChar();
+	    if (port.peekChar() === ';') {
+		port.readChar();
+		done = false;
+		while (true) {
+		    curChar = port.readChar();
+		    if (curChar === SC_EOF_OBJECT ||
+			curChar === '\n')
+			break;
+		}
+	    }
+	}
+    };
+
+    function readDot() {
+	if (isWhitespace(port.peekChar()))
+	    return new sc_Token(10/*DOT*/);
+	else
+	    return readIdOrNumber(".");
+    };
+
+    function readSharp() {
+	var c = port.readChar();
+	if (isWhitespace(c))
+	    return new sc_Token(13/*ERROR*/, "bad #-pattern0.");
+
+	// reference
+	if (isNumberChar(c)) {
+	    var nb = c - 0;
+	    while (isNumberChar(port.peekChar()))
+		nb = nb*10 + (port.readChar() - 0);
+	    switch (port.readChar()) {
+	    case '#':
+		return new sc_Token(18/*REFERENCE*/, nb);
+	    case '=':
+		return new sc_Token(19/*STORE*/, nb);
+	    default:
+		return new sc_Token(13/*ERROR*/, "bad #-pattern1." + nb);
+	    }
+	}
+
+	if (c === "(")
+	    return new sc_Token(14/*VECTOR_BEGIN*/);
+	
+	if (c === "\\") { // character
+	    var tmp = ""
+	    while (!isWhitespaceOrEOF(port.peekChar()))
+		tmp += port.readChar();
+	    switch (tmp.length) {
+	    case 0: // it's escaping a whitespace char:
+		if (sc_isEOFObject(port.peekChar))
+		    return new sc_Token(13/*ERROR*/, "bad #-pattern2.");
+		else
+		    return new sc_Token(20/*CHAR*/, port.readChar());
+	    case 1:
+		return new sc_Token(20/*CHAR*/, tmp);
+	    default:
+		var entry = sc_Char.readable2char[tmp.toLowerCase()];
+		if (entry)
+		    return new sc_Token(20/*CHAR*/, entry);
+		else
+		    return new sc_Token(13/*ERROR*/, "unknown character description: #\\" + tmp);
+	    }
+	}
+
+	// some constants (#t, #f, #unspecified)
+	var res;
+	var needing;
+	switch (c) {
+	case 't': res = new sc_Token(15/*TRUE*/, true); needing = ""; break;
+	case 'f': res = new sc_Token(16/*FALSE*/, false); needing = ""; break;
+	case 'u': res = new sc_Token(17/*UNSPECIFIED*/, undefined); needing = "nspecified"; break;
+	default:
+	    return new sc_Token(13/*ERROR*/, "bad #-pattern3: " + c);
+	}
+	while(true) {
+	    c = port.peekChar();
+	    if ((isWhitespaceOrEOF(c) || c === ')') &&
+		needing == "")
+		return res;
+	    else if (isWhitespace(c) || needing == "")
+		return new sc_Token(13/*ERROR*/, "bad #-pattern4 " + c + " " + needing);
+	    else if (needing.charAt(0) == c) {
+		port.readChar(); // consume
+		needing = needing.slice(1);
+	    } else
+		return new sc_Token(13/*ERROR*/, "bad #-pattern5");
+	}
+	
+    };
+
+    skipWhitespaceAndComments();
+    var curChar = port.readChar();
+    if (curChar === SC_EOF_OBJECT)
+	return new sc_Token(0/*EOF*/, curChar);
+    switch (curChar)
+    {
+    case " ":
+    case "\n":
+    case "\t":
+	return readWhitespace();
+    case "(":
+	return new sc_Token(1/*OPEN_PAR*/);
+    case ")":
+	return new sc_Token(2/*CLOSE_PAR*/);
+    case "{":
+	return new sc_Token(3/*OPEN_BRACE*/);
+    case "}":
+	return new sc_Token(4/*CLOSE_BRACE*/);
+    case "[":
+	return new sc_Token(5/*OPEN_BRACKET*/);
+    case "]":
+	return new sc_Token(6/*CLOSE_BRACKET*/);
+    case "'":
+	return new sc_Token(8/*QUOTE*/);
+    case "#":
+	return readSharp();
+    case ".":
+	return readDot();
+    case '"':
+	return readString();
+    default:
+	if (isIdOrNumberChar(curChar))
+	    return readIdOrNumber(curChar);
+	throw "unexpected character: " + curChar;
+    }
+};
+
+function sc_Reader(tokenizer) {
+    this.tokenizer = tokenizer;
+    this.backref = new Array();
+}
+sc_Reader.prototype.read = function() {
+    function readList(listBeginType) {
+	function matchesPeer(open, close) {
+	    return open === 1/*OPEN_PAR*/ && close === 2/*CLOSE_PAR*/
+	    	|| open === 3/*OPEN_BRACE*/ && close === 4/*CLOSE_BRACE*/
+		|| open === 5/*OPEN_BRACKET*/ && close === 6/*CLOSE_BRACKET*/;
+	};
+	var res = null;
+
+	while (true) {
+	    var token = tokenizer.peekToken();
+
+	    switch (token.type) {
+	    case 2/*CLOSE_PAR*/:
+	    case 4/*CLOSE_BRACE*/:
+	    case 6/*CLOSE_BRACKET*/:
+		if (matchesPeer(listBeginType, token.type)) {
+		    tokenizer.readToken(); // consume token
+		    return sc_reverseBang(res);
+		} else
+		    throw "closing par doesn't match: " + listBeginType
+			+ " " + listEndType;
+
+	    case 0/*EOF*/:
+		throw "unexpected end of file";
+
+	    case 10/*DOT*/:
+		tokenizer.readToken(); // consume token
+		var cdr = this.read();
+		var par = tokenizer.readToken();
+		if (!matchesPeer(listBeginType, par.type))
+		    throw "closing par doesn't match: " + listBeginType
+			+ " " + par.type;
+		else
+		    return sc_reverseAppendBang(res, cdr);
+		
+
+	    default:
+		res = sc_cons(this.read(), res);
+	    }
+	}
+    };
+    function readQuote() {
+	return sc_cons("quote", sc_cons(this.read(), null));
+    };
+    function readVector() {
+	// opening-parenthesis is already consumed
+	var a = new Array();
+	while (true) {
+	    var token = tokenizer.peekToken();
+	    switch (token.type) {
+	    case 2/*CLOSE_PAR*/:
+		tokenizer.readToken();
+		return a;
+		
+	    default:
+		a.push(this.read());
+	    }
+	}
+    };
+
+    function storeRefence(nb) {
+	var tmp = this.read();
+	this.backref[nb] = tmp;
+	return tmp;
+    };
+	
+    function readReference(nb) {
+	if (nb in this.backref)
+	    return this.backref[nb];
+	else
+	    throw "bad reference: " + nb;
+    };
+
+    var tokenizer = this.tokenizer;
+
+    var token = tokenizer.readToken();
+
+    // handle error
+    if (token.type === 13/*ERROR*/)
+	throw token.val;
+
+    switch (token.type) {
+    case 1/*OPEN_PAR*/:
+    case 3/*OPEN_BRACE*/:
+    case 5/*OPEN_BRACKET*/:
+	return readList.call(this, token.type);
+    case 8/*QUOTE*/:
+	return readQuote.call(this);
+    case 11/*STRING*/:
+	return sc_jsstring2string(token.val);
+    case 20/*CHAR*/:
+	return new sc_Char(token.val);
+    case 14/*VECTOR_BEGIN*/:
+	return readVector.call(this);
+    case 18/*REFERENCE*/:
+	return readReference.call(this, token.val);
+    case 19/*STORE*/:
+	return storeRefence.call(this, token.val);
+    case 9/*ID*/:
+	return sc_jsstring2symbol(token.val);
+    case 0/*EOF*/:
+    case 12/*NUMBER*/:
+    case 15/*TRUE*/:
+    case 16/*FALSE*/:
+    case 17/*UNSPECIFIED*/:
+	return token.val;
+    default:
+	throw "unexpected token " + token.type + " " + token.val;
+    }
+};
+
+/*** META ((export #t)) */
+function sc_read(port) {
+    if (port === undefined) // we assume the port hasn't been given.
+	port = SC_DEFAULT_IN; // THREAD: shared var...
+    var reader = new sc_Reader(new sc_Tokenizer(port));
+    return reader.read();
+}
+/*** META ((export #t)) */
+function sc_readChar(port) {
+    if (port === undefined) // we assume the port hasn't been given.
+	port = SC_DEFAULT_IN; // THREAD: shared var...
+    var t = port.readChar();
+    return t === SC_EOF_OBJECT? t: new sc_Char(t);
+}
+/*** META ((export #t)) */
+function sc_peekChar(port) {
+    if (port === undefined) // we assume the port hasn't been given.
+	port = SC_DEFAULT_IN; // THREAD: shared var...
+    var t = port.peekChar();
+    return t === SC_EOF_OBJECT? t: new sc_Char(t);
+}
+/*** META ((export #t)
+           (type bool))
+*/
+function sc_isCharReady(port) {
+    if (port === undefined) // we assume the port hasn't been given.
+	port = SC_DEFAULT_IN; // THREAD: shared var...
+    return port.isCharReady();
+}
+/*** META ((export #t)
+           (peephole (postfix ".close()")))
+*/
+function sc_closeInputPort(p) {
+    return p.close();
+}
+
+/*** META ((export #t)
+           (type bool)
+           (peephole (postfix " instanceof sc_InputPort")))
+*/
+function sc_isInputPort(o) {
+    return (o instanceof sc_InputPort);
+}
+
+/*** META ((export eof-object?)
+           (type bool)
+           (peephole (postfix " === SC_EOF_OBJECT")))
+*/
+function sc_isEOFObject(o) {
+    return o === SC_EOF_OBJECT;
+}
+
+/*** META ((export #t)
+           (peephole (hole 0 "SC_DEFAULT_IN")))
+*/
+function sc_currentInputPort() {
+    return SC_DEFAULT_IN;
+}
+
+/* ------------ file operations are not supported -----------*/
+/*** META ((export #t)) */
+function sc_callWithInputFile(s, proc) {
+    throw "can't open " + s;
+}
+
+/*** META ((export #t)) */
+function sc_callWithOutputFile(s, proc) {
+    throw "can't open " + s;
+}
+
+/*** META ((export #t)) */
+function sc_withInputFromFile(s, thunk) {
+    throw "can't open " + s;
+}
+
+/*** META ((export #t)) */
+function sc_withOutputToFile(s, thunk) {
+    throw "can't open " + s;
+}
+
+/*** META ((export #t)) */
+function sc_openInputFile(s) {
+    throw "can't open " + s;
+}
+
+/*** META ((export #t)) */
+function sc_openOutputFile(s) {
+    throw "can't open " + s;
+}
+
+/* ----------------------------------------------------------------------------*/
+/*** META ((export #t)) */
+function sc_basename(p) {
+   var i = p.lastIndexOf('/');
+
+   if(i >= 0)
+      return p.substring(i + 1, p.length);
+   else
+      return '';
+}
+
+/*** META ((export #t)) */
+function sc_dirname(p) {
+   var i = p.lastIndexOf('/');
+
+   if(i >= 0)
+      return p.substring(0, i);
+   else
+      return '';
+}
+
+/* ----------------------------------------------------------------------------*/
+
+/*** META ((export #t)) */
+function sc_withInputFromPort(p, thunk) {
+    try {
+	var tmp = SC_DEFAULT_IN; // THREAD: shared var.
+	SC_DEFAULT_IN = p;
+	return thunk();
+    } finally {
+	SC_DEFAULT_IN = tmp;
+    }
+}
+
+/*** META ((export #t)) */
+function sc_withInputFromString(s, thunk) {
+    return sc_withInputFromPort(new sc_StringInputPort(sc_string2jsstring(s)), thunk);
+}
+
+/*** META ((export #t)) */
+function sc_withOutputToPort(p, thunk) {
+    try {
+	var tmp = SC_DEFAULT_OUT; // THREAD: shared var.
+	SC_DEFAULT_OUT = p;
+	return thunk();
+    } finally {
+	SC_DEFAULT_OUT = tmp;
+    }
+}
+
+/*** META ((export #t)) */
+function sc_withOutputToString(thunk) {
+    var p = new sc_StringOutputPort();
+    sc_withOutputToPort(p, thunk);
+    return p.close();
+}
+
+/*** META ((export #t)) */
+function sc_withOutputToProcedure(proc, thunk) {
+    var t = function(s) { proc(sc_jsstring2string(s)); };
+    return sc_withOutputToPort(new sc_GenericOutputPort(t), thunk);
+}
+
+/*** META ((export #t)
+           (peephole (hole 0 "new sc_StringOutputPort()")))
+*/
+function sc_openOutputString() {
+    return new sc_StringOutputPort();
+}
+
+/*** META ((export #t)) */
+function sc_openInputString(str) {
+    return new sc_StringInputPort(sc_string2jsstring(str));
+}
+
+/* ----------------------------------------------------------------------------*/
+
+function sc_OutputPort() {
+}
+sc_OutputPort.prototype = new sc_Port();
+sc_OutputPort.prototype.appendJSString = function(obj) {
+    /* do nothing */
+}
+sc_OutputPort.prototype.close = function() {
+    /* do nothing */
+}
+
+function sc_StringOutputPort() {
+    this.res = "";
+}
+sc_StringOutputPort.prototype = new sc_OutputPort();
+sc_StringOutputPort.prototype.appendJSString = function(s) {
+    this.res += s;
+}
+sc_StringOutputPort.prototype.close = function() {
+    return sc_jsstring2string(this.res);
+}
+
+/*** META ((export #t)) */
+function sc_getOutputString(sp) {
+    return sc_jsstring2string(sp.res);
+}
+
+
+function sc_ErrorOutputPort() {
+}
+sc_ErrorOutputPort.prototype = new sc_OutputPort();
+sc_ErrorOutputPort.prototype.appendJSString = function(s) {
+    throw "don't write on ErrorPort!";
+}
+sc_ErrorOutputPort.prototype.close = function() {
+    /* do nothing */
+}
+
+function sc_GenericOutputPort(appendJSString, close) {
+    this.appendJSString = appendJSString;
+    if (close)
+	this.close = close;
+}
+sc_GenericOutputPort.prototype = new sc_OutputPort();
+
+/*** META ((export #t)
+           (type bool)
+           (peephole (postfix " instanceof sc_OutputPort")))
+*/
+function sc_isOutputPort(o) {
+    return (o instanceof sc_OutputPort);
+}
+
+/*** META ((export #t)
+           (peephole (postfix ".close()")))
+*/
+function sc_closeOutputPort(p) {
+    return p.close();
+}
+
+/* ------------------ write ---------------------------------------------------*/
+
+/*** META ((export #t)) */
+function sc_write(o, p) {
+    if (p === undefined) // we assume not given
+	p = SC_DEFAULT_OUT;
+    p.appendJSString(sc_toWriteString(o));
+}
+
+function sc_toWriteString(o) {
+    if (o === null)
+	return "()";
+    else if (o === true)
+	return "#t";
+    else if (o === false)
+	return "#f";
+    else if (o === undefined)
+	return "#unspecified";
+    else if (typeof o === 'function')
+	return "#<procedure " + sc_hash(o) + ">";
+    else if (o.sc_toWriteString)
+	return o.sc_toWriteString();
+    else
+	return o.toString();
+}
+
+function sc_escapeWriteString(s) {
+    var res = "";
+    var j = 0;
+    for (i = 0; i < s.length; i++) {
+	switch (s.charAt(i)) {
+	case "\0": res += s.substring(j, i) + "\\0"; j = i + 1; break;
+	case "\b": res += s.substring(j, i) + "\\b"; j = i + 1; break;
+	case "\f": res += s.substring(j, i) + "\\f"; j = i + 1; break;
+	case "\n": res += s.substring(j, i) + "\\n"; j = i + 1; break;
+	case "\r": res += s.substring(j, i) + "\\r"; j = i + 1; break;
+	case "\t": res += s.substring(j, i) + "\\t"; j = i + 1; break;
+	case "\v": res += s.substring(j, i) + "\\v"; j = i + 1; break;
+	case '"': res += s.substring(j, i) + '\\"'; j = i + 1; break;
+	case "\\": res += s.substring(j, i) + "\\\\"; j = i + 1; break;
+	default:
+	    var c = s.charAt(i);
+	    if ("\a" !== "a" && c == "\a") {
+		res += s.substring(j, i) + "\\a"; j = i + 1; continue;
+	    }
+	    if ("\v" !== "v" && c == "\v") {
+		res += s.substring(j, i) + "\\v"; j = i + 1; continue;
+	    }
+	    //if (s.charAt(i) < ' ' || s.charCodeAt(i) > 127) {
+	    // CARE: Manuel is this OK with HOP?
+	    if (s.charAt(i) < ' ') {
+		/* non printable character and special chars */
+		res += s.substring(j, i) + "\\x" + s.charCodeAt(i).toString(16);
+		j = i + 1;
+	    }
+	    // else just let i increase...
+	}
+    }
+    res += s.substring(j, i);
+    return res;
+}
+
+/* ------------------ display ---------------------------------------------------*/
+
+/*** META ((export #t)) */
+function sc_display(o, p) {
+    if (p === undefined) // we assume not given
+	p = SC_DEFAULT_OUT;
+    p.appendJSString(sc_toDisplayString(o));
+}
+
+function sc_toDisplayString(o) {
+    if (o === null)
+	return "()";
+    else if (o === true)
+	return "#t";
+    else if (o === false)
+	return "#f";
+    else if (o === undefined)
+	return "#unspecified";
+    else if (typeof o === 'function')
+	return "#<procedure " + sc_hash(o) + ">";
+    else if (o.sc_toDisplayString)
+	return o.sc_toDisplayString();
+    else
+	return o.toString();
+}
+
+/* ------------------ newline ---------------------------------------------------*/
+
+/*** META ((export #t)) */
+function sc_newline(p) {
+    if (p === undefined) // we assume not given
+	p = SC_DEFAULT_OUT;
+    p.appendJSString("\n");
+}
+
+/* ------------------ write-char ---------------------------------------------------*/
+
+/*** META ((export #t)) */
+function sc_writeChar(c, p) {
+    if (p === undefined) // we assume not given
+	p = SC_DEFAULT_OUT;
+    p.appendJSString(c.val);
+}
+
+/* ------------------ write-circle ---------------------------------------------------*/
+
+/*** META ((export #t)) */
+function sc_writeCircle(o, p) {
+    if (p === undefined) // we assume not given
+	p = SC_DEFAULT_OUT;
+    p.appendJSString(sc_toWriteCircleString(o));
+}
+
+function sc_toWriteCircleString(o) {
+    var symb = sc_gensym("writeCircle");
+    var nbPointer = new Object();
+    nbPointer.nb = 0;
+    sc_prepWriteCircle(o, symb, nbPointer);
+    return sc_genToWriteCircleString(o, symb);
+}
+
+function sc_prepWriteCircle(o, symb, nbPointer) {
+    // TODO sc_Struct
+    if (o instanceof sc_Pair ||
+	o instanceof sc_Vector) {
+	if (o[symb] !== undefined) {
+	    // not the first visit.
+	    o[symb]++;
+	    // unless there is already a number, assign one.
+	    if (!o[symb + "nb"]) o[symb + "nb"] = nbPointer.nb++;
+	    return;
+	}
+	o[symb] = 0;
+	if (o instanceof sc_Pair) {
+	    sc_prepWriteCircle(o.car, symb, nbPointer);
+	    sc_prepWriteCircle(o.cdr, symb, nbPointer);
+	} else {
+	    for (var i = 0; i < o.length; i++)
+		sc_prepWriteCircle(o[i], symb, nbPointer);
+	}
+    }
+}
+
+function sc_genToWriteCircleString(o, symb) {
+    if (!(o instanceof sc_Pair ||
+	  o instanceof sc_Vector))
+	return sc_toWriteString(o);
+    return o.sc_toWriteCircleString(symb);
+}
+sc_Pair.prototype.sc_toWriteCircleString = function(symb, inList) {
+    if (this[symb + "use"]) { // use-flag is set. Just use it.
+	var nb = this[symb + "nb"];
+	if (this[symb]-- === 0) { // if we are the last use. remove all fields.
+	    delete this[symb];
+	    delete this[symb + "nb"];
+	    delete this[symb + "use"];
+	}
+	if (inList)
+	    return '. #' + nb + '#';
+	else
+	    return '#' + nb + '#';
+    }
+    if (this[symb]-- === 0) { // if we are the last use. remove all fields.
+	delete this[symb];
+	delete this[symb + "nb"];
+	delete this[symb + "use"];
+    }
+
+    var res = "";
+
+    if (this[symb] !== undefined) { // implies > 0
+	this[symb + "use"] = true;
+	if (inList)
+	    res += '. #' + this[symb + "nb"] + '=';
+	else
+	    res += '#' + this[symb + "nb"] + '=';
+	inList = false;
+    }
+
+    if (!inList)
+	res += "(";
+
+    // print car
+    res += sc_genToWriteCircleString(this.car, symb);
+
+    if (sc_isPair(this.cdr)) {
+	res += " " + this.cdr.sc_toWriteCircleString(symb, true);
+    } else if (this.cdr !== null) {
+	res += " . " + sc_genToWriteCircleString(this.cdr, symb);
+    }
+    if (!inList)
+	res += ")";
+    return res;
+};
+sc_Vector.prototype.sc_toWriteCircleString = function(symb) {
+    if (this[symb + "use"]) { // use-flag is set. Just use it.
+	var nb = this[symb + "nb"];
+	if (this[symb]-- === 0) { // if we are the last use. remove all fields.
+	    delete this[symb];
+	    delete this[symb + "nb"];
+	    delete this[symb + "use"];
+	}
+	return '#' + nb + '#';
+    }
+    if (this[symb]-- === 0) { // if we are the last use. remove all fields.
+	delete this[symb];
+	delete this[symb + "nb"];
+	delete this[symb + "use"];
+    }
+
+    var res = "";
+    if (this[symb] !== undefined) { // implies > 0
+	this[symb + "use"] = true;
+	res += '#' + this[symb + "nb"] + '=';
+    }
+    res += "#(";
+    for (var i = 0; i < this.length; i++) {
+	res += sc_genToWriteCircleString(this[i], symb);
+	if (i < this.length - 1) res += " ";
+    }
+    res += ")";
+    return res;
+};
+
+
+/* ------------------ print ---------------------------------------------------*/
+
+/*** META ((export #t)) */
+function sc_print(s) {
+    if (arguments.length === 1) {
+	sc_display(s);
+	sc_newline();
+    }
+    else {
+	for (var i = 0; i < arguments.length; i++)
+	    sc_display(arguments[i]);
+	sc_newline();
+    }
+}
+
+/* ------------------ format ---------------------------------------------------*/
+/*** META ((export #t)) */
+function sc_format(s, args) {
+   var len = s.length;
+   var p = new sc_StringOutputPort();
+   var i = 0, j = 1;
+
+   while( i < len ) {
+      var i2 = s.indexOf("~", i);
+
+      if (i2 == -1) {
+	  p.appendJSString( s.substring( i, len ) );
+	  return p.close();
+      } else {
+	 if (i2 > i) {
+	    if (i2 == (len - 1)) {
+		p.appendJSString(s.substring(i, len));
+		return p.close();
+	    } else {
+	       p.appendJSString(s.substring(i, i2));
+	       i = i2;
+	    }
+	 }
+
+	 switch(s.charCodeAt(i2 + 1)) {
+	    case 65:
+	    case 97:
+	       // a
+	       sc_display(arguments[j], p);
+	       i += 2; j++;
+	       break;
+
+	    case 83:
+	    case 115:
+	       // s
+	       sc_write(arguments[j], p);
+	       i += 2; j++;
+	       break;
+
+	    case 86:
+	    case 118:
+	       // v
+	       sc_display(arguments[j], p);
+	       p.appendJSString("\n");
+	       i += 2; j++;
+	       break;
+
+	    case 67:
+	    case 99:
+	       // c
+	       p.appendJSString(String.fromCharCode(arguments[j]));
+	       i += 2; j++;
+	       break;
+
+	    case 88:
+	    case 120:
+	       // x
+	       p.appendJSString(arguments[j].toString(6));
+	       i += 2; j++;
+	       break;
+
+	    case 79:
+	    case 111:
+	       // o
+	       p.appendJSString(arguments[j].toString(8));
+	       i += 2; j++;
+	       break;
+
+	    case 66:
+	    case 98:
+	       // b
+	       p.appendJSString(arguments[j].toString(2));
+	       i += 2; j++;
+	       break;
+
+	    case 37:
+	    case 110:
+	       // %, n
+	       p.appendJSString("\n");
+	       i += 2; break;
+
+	    case 114:
+	       // r
+	       p.appendJSString("\r");
+	       i += 2; break;
+
+	    case 126:
+	       // ~
+	       p.appendJSString("~");
+	       i += 2; break;
+
+	    default:
+	       sc_error( "format: illegal ~"
+			 + String.fromCharCode(s.charCodeAt(i2 + 1))
+			 + " sequence" );
+	       return "";
+	 }
+      }
+   }
+
+   return p.close();
+}
+
+/* ------------------ global ports ---------------------------------------------------*/
+
+var SC_DEFAULT_IN = new sc_ErrorInputPort();
+var SC_DEFAULT_OUT = new sc_ErrorOutputPort();
+var SC_ERROR_OUT = new sc_ErrorOutputPort();
+
+var sc_SYMBOL_PREFIX = "\u1E9C";
+var sc_KEYWORD_PREFIX = "\u1E9D";
+
+/*** META ((export #t)
+           (peephole (id))) */
+function sc_jsstring2string(s) {
+    return s;
+}
+
+/*** META ((export #t)
+           (peephole (prefix "'\\u1E9C' +")))
+*/
+function sc_jsstring2symbol(s) {
+    return sc_SYMBOL_PREFIX + s;
+}
+
+/*** META ((export #t)
+           (peephole (id)))
+*/
+function sc_string2jsstring(s) {
+    return s;
+}
+
+/*** META ((export #t)
+           (peephole (symbol2jsstring_immutable)))
+*/
+function sc_symbol2jsstring(s) {
+    return s.slice(1);
+}
+
+/*** META ((export #t)
+           (peephole (postfix ".slice(1)")))
+*/
+function sc_keyword2jsstring(k) {
+    return k.slice(1);
+}
+
+/*** META ((export #t)
+           (peephole (prefix "'\\u1E9D' +")))
+*/
+function sc_jsstring2keyword(s) {
+    return sc_KEYWORD_PREFIX + s;
+}
+
+/*** META ((export #t)
+           (type bool))
+*/
+function sc_isKeyword(s) {
+    return (typeof s === "string") &&
+	(s.charAt(0) === sc_KEYWORD_PREFIX);
+}
+
+
+/*** META ((export #t)) */
+var sc_gensym = function() {
+    var counter = 1000;
+    return function(sym) {
+	counter++;
+	if (!sym) sym = sc_SYMBOL_PREFIX;
+	return sym + "s" + counter + "~" + "^sC-GeNsYm ";
+    };
+}();
+
+
+/*** META ((export #t)
+           (type bool))
+*/
+function sc_isEqual(o1, o2) {
+    return ((o1 === o2) ||
+	    (sc_isPair(o1) && sc_isPair(o2)
+	     && sc_isPairEqual(o1, o2, sc_isEqual)) ||
+	    (sc_isVector(o1) && sc_isVector(o2)
+	     && sc_isVectorEqual(o1, o2, sc_isEqual)));
+}
+
+/*** META ((export number->symbol integer->symbol)) */
+function sc_number2symbol(x, radix) {
+    return sc_SYMBOL_PREFIX + sc_number2jsstring(x, radix);
+}
+
+/*** META ((export number->string integer->string)) */
+var sc_number2string = sc_number2jsstring;
+
+/*** META ((export #t)) */
+function sc_symbol2number(s, radix) {
+    return sc_jsstring2number(s.slice(1), radix);
+}
+
+/*** META ((export #t)) */
+var sc_string2number = sc_jsstring2number;
+
+/*** META ((export #t)
+           (peephole (prefix "+" s)))
+           ;; peephole will only apply if no radix is given.
+*/
+function sc_string2integer(s, radix) {
+    if (!radix) return +s;
+    return parseInt(s, radix);
+}
+
+/*** META ((export #t)
+           (peephole (prefix "+")))
+*/
+function sc_string2real(s) {
+    return +s;
+}
+
+
+/*** META ((export #t)
+           (type bool))
+*/
+function sc_isSymbol(s) {
+    return (typeof s === "string") &&
+	(s.charAt(0) === sc_SYMBOL_PREFIX);
+}
+
+/*** META ((export #t)
+           (peephole (symbol2string_immutable)))
+*/
+function sc_symbol2string(s) {
+    return s.slice(1);
+}
+
+/*** META ((export #t)
+           (peephole (prefix "'\\u1E9C' +")))
+*/
+function sc_string2symbol(s) {
+    return sc_SYMBOL_PREFIX + s;
+}
+
+/*** META ((export symbol-append)
+           (peephole (symbolAppend_immutable)))
+*/
+function sc_symbolAppend() {
+    var res = sc_SYMBOL_PREFIX;
+    for (var i = 0; i < arguments.length; i++)
+	res += arguments[i].slice(1);
+    return res;
+}
+
+/*** META ((export #t)
+           (peephole (postfix ".val")))
+*/
+function sc_char2string(c) { return c.val; }
+
+/*** META ((export #t)
+           (peephole (hole 1 "'\\u1E9C' + " c ".val")))
+*/
+function sc_char2symbol(c) { return sc_SYMBOL_PREFIX + c.val; }
+
+/*** META ((export #t)
+           (type bool))
+*/
+function sc_isString(s) {
+    return (typeof s === "string") &&
+	(s.charAt(0) !== sc_SYMBOL_PREFIX);
+}
+
+/*** META ((export #t)) */
+var sc_makeString = sc_makejsString;
+
+
+/*** META ((export #t)) */
+function sc_string() {
+    for (var i = 0; i < arguments.length; i++)
+	arguments[i] = arguments[i].val;
+    return "".concat.apply("", arguments);
+}
+
+/*** META ((export #t)
+           (peephole (postfix ".length")))
+*/
+function sc_stringLength(s) { return s.length; }
+
+/*** META ((export #t)) */
+function sc_stringRef(s, k) {
+    return new sc_Char(s.charAt(k));
+}
+
+/* there's no stringSet in the immutable version
+function sc_stringSet(s, k, c)
+*/
+
+
+/*** META ((export string=?)
+	   (type bool)
+           (peephole (hole 2 str1 " === " str2)))
+*/
+function sc_isStringEqual(s1, s2) {
+    return s1 === s2;
+}
+/*** META ((export string<?)
+	   (type bool)
+           (peephole (hole 2 str1 " < " str2)))
+*/
+function sc_isStringLess(s1, s2) {
+    return s1 < s2;
+}
+/*** META ((export string>?)
+	   (type bool)
+           (peephole (hole 2 str1 " > " str2)))
+*/
+function sc_isStringGreater(s1, s2) {
+    return s1 > s2;
+}
+/*** META ((export string<=?)
+	   (type bool)
+           (peephole (hole 2 str1 " <= " str2)))
+*/
+function sc_isStringLessEqual(s1, s2) {
+    return s1 <= s2;
+}
+/*** META ((export string>=?)
+	   (type bool)
+           (peephole (hole 2 str1 " >= " str2)))
+*/
+function sc_isStringGreaterEqual(s1, s2) {
+    return s1 >= s2;
+}
+/*** META ((export string-ci=?)
+	   (type bool)
+           (peephole (hole 2 str1 ".toLowerCase() === " str2 ".toLowerCase()")))
+*/
+function sc_isStringCIEqual(s1, s2) {
+    return s1.toLowerCase() === s2.toLowerCase();
+}
+/*** META ((export string-ci<?)
+	   (type bool)
+           (peephole (hole 2 str1 ".toLowerCase() < " str2 ".toLowerCase()")))
+*/
+function sc_isStringCILess(s1, s2) {
+    return s1.toLowerCase() < s2.toLowerCase();
+}
+/*** META ((export string-ci>?)
+	   (type bool)
+           (peephole (hole 2 str1 ".toLowerCase() > " str2 ".toLowerCase()")))
+*/
+function sc_isStringCIGreater(s1, s2) {
+    return s1.toLowerCase() > s2.toLowerCase();
+}
+/*** META ((export string-ci<=?)
+	   (type bool)
+           (peephole (hole 2 str1 ".toLowerCase() <= " str2 ".toLowerCase()")))
+*/
+function sc_isStringCILessEqual(s1, s2) {
+    return s1.toLowerCase() <= s2.toLowerCase();
+}
+/*** META ((export string-ci>=?)
+	   (type bool)
+           (peephole (hole 2 str1 ".toLowerCase() >= " str2 ".toLowerCase()")))
+*/
+function sc_isStringCIGreaterEqual(s1, s2) {
+    return s1.toLowerCase() >= s2.toLowerCase();
+}
+
+/*** META ((export #t)
+           (peephole (hole 3 s ".substring(" start ", " end ")")))
+*/
+function sc_substring(s, start, end) {
+    return s.substring(start, end);
+}
+
+/*** META ((export #t))
+*/
+function sc_isSubstring_at(s1, s2, i) {
+    return s2 == s1.substring(i, i+ s2.length);
+}
+
+/*** META ((export #t)
+           (peephole (infix 0 #f "+" "''")))
+*/
+function sc_stringAppend() {
+    return "".concat.apply("", arguments);
+}
+
+/*** META ((export #t)) */
+var sc_string2list = sc_jsstring2list;
+
+/*** META ((export #t)) */
+var sc_list2string = sc_list2jsstring;
+
+/*** META ((export #t)
+           (peephole (id)))
+*/
+function sc_stringCopy(s) {
+    return s;
+}
+
+/* there's no string-fill in the immutable version
+function sc_stringFill(s, c)
+*/
+
+/*** META ((export #t)
+           (peephole (postfix ".slice(1)")))
+*/
+function sc_keyword2string(o) {
+    return o.slice(1);
+}
+
+/*** META ((export #t)
+           (peephole (prefix "'\\u1E9D' +")))
+*/
+function sc_string2keyword(o) {
+    return sc_KEYWORD_PREFIX + o;
+}
+
+String.prototype.sc_toDisplayString = function() {
+    if (this.charAt(0) === sc_SYMBOL_PREFIX)
+	// TODO: care for symbols with spaces (escape-chars symbols).
+	return this.slice(1);
+    else if (this.charAt(0) === sc_KEYWORD_PREFIX)
+	return ":" + this.slice(1);
+    else
+	return this.toString();
+};
+
+String.prototype.sc_toWriteString = function() {
+    if (this.charAt(0) === sc_SYMBOL_PREFIX)
+	// TODO: care for symbols with spaces (escape-chars symbols).
+	return this.slice(1);
+    else if (this.charAt(0) === sc_KEYWORD_PREFIX)
+	return ":" + this.slice(1);
+    else
+	return '"' + sc_escapeWriteString(this) + '"';
+};
+/* Exported Variables */
+var BgL_testzd2boyerzd2;
+var BgL_nboyerzd2benchmarkzd2;
+var BgL_setupzd2boyerzd2;
+/* End Exports */
+
+var translate_term_nboyer;
+var translate_args_nboyer;
+var untranslate_term_nboyer;
+var BgL_sc_symbolzd2ze3symbolzd2record_1ze3_nboyer;
+var BgL_sc_za2symbolzd2recordszd2alistza2_2z00_nboyer;
+var translate_alist_nboyer;
+var apply_subst_nboyer;
+var apply_subst_lst_nboyer;
+var tautologyp_nboyer;
+var if_constructor_nboyer;
+var rewrite_count_nboyer;
+var rewrite_nboyer;
+var rewrite_args_nboyer;
+var unify_subst_nboyer;
+var one_way_unify1_nboyer;
+var false_term_nboyer;
+var true_term_nboyer;
+var trans_of_implies1_nboyer;
+var is_term_equal_nboyer;
+var is_term_member_nboyer;
+var const_nboyer;
+var sc_const_3_nboyer;
+var sc_const_4_nboyer;
+{
+    (sc_const_4_nboyer = (new sc_Pair("\u1E9Cimplies",(new sc_Pair((new sc_Pair("\u1E9Cand",(new sc_Pair((new sc_Pair("\u1E9Cimplies",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cand",(new sc_Pair((new sc_Pair("\u1E9Cimplies",(new sc_Pair("\u1E9Cy",(new sc_Pair("\u1E9Cz",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cand",(new sc_Pair((new sc_Pair("\u1E9Cimplies",(new sc_Pair("\u1E9Cz",(new sc_Pair("\u1E9Cu",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cimplies",(new sc_Pair("\u1E9Cu",(new sc_Pair("\u1E9Cw",null)))))),null)))))),null)))))),null)))))),(new sc_Pair((new sc_Pair("\u1E9Cimplies",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cw",null)))))),null)))))));
+    (sc_const_3_nboyer = sc_list((new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Ccompile",(new sc_Pair("\u1E9Cform",null)))),(new sc_Pair((new sc_Pair("\u1E9Creverse",(new sc_Pair((new sc_Pair("\u1E9Ccodegen",(new sc_Pair((new sc_Pair("\u1E9Coptimize",(new sc_Pair("\u1E9Cform",null)))),(new sc_Pair((new sc_Pair("\u1E9Cnil",null)),null)))))),null)))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Ceqp",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cfix",(new sc_Pair("\u1E9Cx",null)))),(new sc_Pair((new sc_Pair("\u1E9Cfix",(new sc_Pair("\u1E9Cy",null)))),null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cgreaterp",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),(new sc_Pair((new sc_Pair("\u1E9Clessp",(new sc_Pair("\u1E9Cy",(new sc_Pair("\u1E9Cx",null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Clesseqp",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cnot",(new sc_Pair((new sc_Pair("\u1E9Clessp",(new sc_Pair("\u1E9Cy",(new sc_Pair("\u1E9Cx",null)))))),null)))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cgreatereqp",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cnot",(new sc_Pair((new sc_Pair("\u1E9Clessp",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),null)))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cboolean",(new sc_Pair("\u1E9Cx",null)))),(new sc_Pair((new sc_Pair("\u1E9Cor",(new sc_Pair((new sc_Pair("\u1E9Cequal",(new sc_Pair("\u1E9Cx",(new sc_Pair((new sc_Pair("\u1E9Ct",null)),null)))))),(new sc_Pair((new sc_Pair("\u1E9Cequal",(new sc_Pair("\u1E9Cx",(new sc_Pair((new sc_Pair("\u1E9Cf",null)),null)))))),null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Ciff",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cand",(new sc_Pair((new sc_Pair("\u1E9Cimplies",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cimplies",(new sc_Pair("\u1E9Cy",(new sc_Pair("\u1E9Cx",null)))))),null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Ceven1",(new sc_Pair("\u1E9Cx",null)))),(new sc_Pair((new sc_Pair("\u1E9Cif",(new sc_Pair((new sc_Pair("\u1E9Czerop",(new sc_Pair("\u1E9Cx",null)))),(new sc_Pair((new sc_Pair("\u1E9Ct",null)),(new sc_Pair((new sc_Pair("\u1E9Codd",(new sc_Pair((new sc_Pair("\u1E9Csub1",(new sc_Pair("\u1E9Cx",null)))),null)))),null)))))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Ccountps-",(new sc_Pair("\u1E9Cl",(new sc_Pair("\u1E9Cpred",null)))))),(new sc_Pair((new sc_Pair("\u1E9Ccountps-loop",(new sc_Pair("\u1E9Cl",(new sc_Pair("\u1E9Cpred",(new sc_Pair((new sc_Pair("\u1E9Czero",null)),null)))))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cfact-",(new sc_Pair("\u1E9Ci",null)))),(new sc_Pair((new sc_Pair("\u1E9Cfact-loop",(new sc_Pair("\u1E9Ci",(new sc_Pair((1),null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Creverse-",(new sc_Pair("\u1E9Cx",null)))),(new sc_Pair((new sc_Pair("\u1E9Creverse-loop",(new sc_Pair("\u1E9Cx",(new sc_Pair((new sc_Pair("\u1E9Cnil",null)),null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cdivides",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),(new sc_Pair((new sc_Pair("\u1E9Czerop",(new sc_Pair((new sc_Pair("\u1E9Cremainder",(new sc_Pair("\u1E9Cy",(new sc_Pair("\u1E9Cx",null)))))),null)))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cassume-true",(new sc_Pair("\u1E9Cvar",(new sc_Pair("\u1E9Calist",null)))))),(new sc_Pair((new sc_Pair("\u1E9Ccons",(new sc_Pair((new sc_Pair("\u1E9Ccons",(new sc_Pair("\u1E9Cvar",(new sc_Pair((new sc_Pair("\u1E9Ct",null)),null)))))),(new sc_Pair("\u1E9Calist",null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cassume-false",(new sc_Pair("\u1E9Cvar",(new sc_Pair("\u1E9Calist",null)))))),(new sc_Pair((new sc_Pair("\u1E9Ccons",(new sc_Pair((new sc_Pair("\u1E9Ccons",(new sc_Pair("\u1E9Cvar",(new sc_Pair((new sc_Pair("\u1E9Cf",null)),null)))))),(new sc_Pair("\u1E9Calist",null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Ctautology-checker",(new sc_Pair("\u1E9Cx",null)))),(new sc_Pair((new sc_Pair("\u1E9Ctautologyp",(new sc_Pair((new sc_Pair("\u1E9Cnormalize",(new sc_Pair("\u1E9Cx",null)))),(new sc_Pair((new sc_Pair("\u1E9Cnil",null)),null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cfalsify",(new sc_Pair("\u1E9Cx",null)))),(new sc_Pair((new sc_Pair("\u1E9Cfalsify1",(new sc_Pair((new sc_Pair("\u1E9Cnormalize",(new sc_Pair("\u1E9Cx",null)))),(new sc_Pair((new sc_Pair("\u1E9Cnil",null)),null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cprime",(new sc_Pair("\u1E9Cx",null)))),(new sc_Pair((new sc_Pair("\u1E9Cand",(new sc_Pair((new sc_Pair("\u1E9Cnot",(new sc_Pair((new sc_Pair("\u1E9Czerop",(new sc_Pair("\u1E9Cx",null)))),null)))),(new sc_Pair((new sc_Pair("\u1E9Cnot",(new sc_Pair((new sc_Pair("\u1E9Cequal",(new sc_Pair("\u1E9Cx",(new sc_Pair((new sc_Pair("\u1E9Cadd1",(new sc_Pair((new sc_Pair("\u1E9Czero",null)),null)))),null)))))),null)))),(new sc_Pair((new sc_Pair("\u1E9Cprime1",(new sc_Pair("\u1E9Cx",(new sc_Pair((new sc_Pair("\u1E9Csub1",(new sc_Pair("\u1E9Cx",null)))),null)))))),null)))))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cand",(new sc_Pair("\u1E9Cp",(new sc_Pair("\u1E9Cq",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cif",(new sc_Pair("\u1E9Cp",(new sc_Pair((new sc_Pair("\u1E9Cif",(new sc_Pair("\u1E9Cq",(new sc_Pair((new sc_Pair("\u1E9Ct",null)),(new sc_Pair((new sc_Pair("\u1E9Cf",null)),null)))))))),(new sc_Pair((new sc_Pair("\u1E9Cf",null)),null)))))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cor",(new sc_Pair("\u1E9Cp",(new sc_Pair("\u1E9Cq",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cif",(new sc_Pair("\u1E9Cp",(new sc_Pair((new sc_Pair("\u1E9Ct",null)),(new sc_Pair((new sc_Pair("\u1E9Cif",(new sc_Pair("\u1E9Cq",(new sc_Pair((new sc_Pair("\u1E9Ct",null)),(new sc_Pair((new sc_Pair("\u1E9Cf",null)),null)))))))),null)))))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cnot",(new sc_Pair("\u1E9Cp",null)))),(new sc_Pair((new sc_Pair("\u1E9Cif",(new sc_Pair("\u1E9Cp",(new sc_Pair((new sc_Pair("\u1E9Cf",null)),(new sc_Pair((new sc_Pair("\u1E9Ct",null)),null)))))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cimplies",(new sc_Pair("\u1E9Cp",(new sc_Pair("\u1E9Cq",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cif",(new sc_Pair("\u1E9Cp",(new sc_Pair((new sc_Pair("\u1E9Cif",(new sc_Pair("\u1E9Cq",(new sc_Pair((new sc_Pair("\u1E9Ct",null)),(new sc_Pair((new sc_Pair("\u1E9Cf",null)),null)))))))),(new sc_Pair((new sc_Pair("\u1E9Ct",null)),null)))))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cfix",(new sc_Pair("\u1E9Cx",null)))),(new sc_Pair((new sc_Pair("\u1E9Cif",(new sc_Pair((new sc_Pair("\u1E9Cnumberp",(new sc_Pair("\u1E9Cx",null)))),(new sc_Pair("\u1E9Cx",(new sc_Pair((new sc_Pair("\u1E9Czero",null)),null)))))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cif",(new sc_Pair((new sc_Pair("\u1E9Cif",(new sc_Pair("\u1E9Ca",(new sc_Pair("\u1E9Cb",(new sc_Pair("\u1E9Cc",null)))))))),(new sc_Pair("\u1E9Cd",(new sc_Pair("\u1E9Ce",null)))))))),(new sc_Pair((new sc_Pair("\u1E9Cif",(new sc_Pair("\u1E9Ca",(new sc_Pair((new sc_Pair("\u1E9Cif",(new sc_Pair("\u1E9Cb",(new sc_Pair("\u1E9Cd",(new sc_Pair("\u1E9Ce",null)))))))),(new sc_Pair((new sc_Pair("\u1E9Cif",(new sc_Pair("\u1E9Cc",(new sc_Pair("\u1E9Cd",(new sc_Pair("\u1E9Ce",null)))))))),null)))))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Czerop",(new sc_Pair("\u1E9Cx",null)))),(new sc_Pair((new sc_Pair("\u1E9Cor",(new sc_Pair((new sc_Pair("\u1E9Cequal",(new sc_Pair("\u1E9Cx",(new sc_Pair((new sc_Pair("\u1E9Czero",null)),null)))))),(new sc_Pair((new sc_Pair("\u1E9Cnot",(new sc_Pair((new sc_Pair("\u1E9Cnumberp",(new sc_Pair("\u1E9Cx",null)))),null)))),null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cplus",(new sc_Pair((new sc_Pair("\u1E9Cplus",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),(new sc_Pair("\u1E9Cz",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cplus",(new sc_Pair("\u1E9Cx",(new sc_Pair((new sc_Pair("\u1E9Cplus",(new sc_Pair("\u1E9Cy",(new sc_Pair("\u1E9Cz",null)))))),null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cplus",(new sc_Pair("\u1E9Ca",(new sc_Pair("\u1E9Cb",null)))))),(new sc_Pair((new sc_Pair("\u1E9Czero",null)),null)))))),(new sc_Pair((new sc_Pair("\u1E9Cand",(new sc_Pair((new sc_Pair("\u1E9Czerop",(new sc_Pair("\u1E9Ca",null)))),(new sc_Pair((new sc_Pair("\u1E9Czerop",(new sc_Pair("\u1E9Cb",null)))),null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cdifference",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cx",null)))))),(new sc_Pair((new sc_Pair("\u1E9Czero",null)),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cplus",(new sc_Pair("\u1E9Ca",(new sc_Pair("\u1E9Cb",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cplus",(new sc_Pair("\u1E9Ca",(new sc_Pair("\u1E9Cc",null)))))),null)))))),(new sc_Pair((new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cfix",(new sc_Pair("\u1E9Cb",null)))),(new sc_Pair((new sc_Pair("\u1E9Cfix",(new sc_Pair("\u1E9Cc",null)))),null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Czero",null)),(new sc_Pair((new sc_Pair("\u1E9Cdifference",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),null)))))),(new sc_Pair((new sc_Pair("\u1E9Cnot",(new sc_Pair((new sc_Pair("\u1E9Clessp",(new sc_Pair("\u1E9Cy",(new sc_Pair("\u1E9Cx",null)))))),null)))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cequal",(new sc_Pair("\u1E9Cx",(new sc_Pair((new sc_Pair("\u1E9Cdifference",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),null)))))),(new sc_Pair((new sc_Pair("\u1E9Cand",(new sc_Pair((new sc_Pair("\u1E9Cnumberp",(new sc_Pair("\u1E9Cx",null)))),(new sc_Pair((new sc_Pair("\u1E9Cor",(new sc_Pair((new sc_Pair("\u1E9Cequal",(new sc_Pair("\u1E9Cx",(new sc_Pair((new sc_Pair("\u1E9Czero",null)),null)))))),(new sc_Pair((new sc_Pair("\u1E9Czerop",(new sc_Pair("\u1E9Cy",null)))),null)))))),null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cmeaning",(new sc_Pair((new sc_Pair("\u1E9Cplus-tree",(new sc_Pair((new sc_Pair("\u1E9Cappend",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),null)))),(new sc_Pair("\u1E9Ca",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cplus",(new sc_Pair((new sc_Pair("\u1E9Cmeaning",(new sc_Pair((new sc_Pair("\u1E9Cplus-tree",(new sc_Pair("\u1E9Cx",null)))),(new sc_Pair("\u1E9Ca",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cmeaning",(new sc_Pair((new sc_Pair("\u1E9Cplus-tree",(new sc_Pair("\u1E9Cy",null)))),(new sc_Pair("\u1E9Ca",null)))))),null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cmeaning",(new sc_Pair((new sc_Pair("\u1E9Cplus-tree",(new sc_Pair((new sc_Pair("\u1E9Cplus-fringe",(new sc_Pair("\u1E9Cx",null)))),null)))),(new sc_Pair("\u1E9Ca",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cfix",(new sc_Pair((new sc_Pair("\u1E9Cmeaning",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Ca",null)))))),null)))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cappend",(new sc_Pair((new sc_Pair("\u1E9Cappend",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),(new sc_Pair("\u1E9Cz",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cappend",(new sc_Pair("\u1E9Cx",(new sc_Pair((new sc_Pair("\u1E9Cappend",(new sc_Pair("\u1E9Cy",(new sc_Pair("\u1E9Cz",null)))))),null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Creverse",(new sc_Pair((new sc_Pair("\u1E9Cappend",(new sc_Pair("\u1E9Ca",(new sc_Pair("\u1E9Cb",null)))))),null)))),(new sc_Pair((new sc_Pair("\u1E9Cappend",(new sc_Pair((new sc_Pair("\u1E9Creverse",(new sc_Pair("\u1E9Cb",null)))),(new sc_Pair((new sc_Pair("\u1E9Creverse",(new sc_Pair("\u1E9Ca",null)))),null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Ctimes",(new sc_Pair("\u1E9Cx",(new sc_Pair((new sc_Pair("\u1E9Cplus",(new sc_Pair("\u1E9Cy",(new sc_Pair("\u1E9Cz",null)))))),null)))))),(new sc_Pair((new sc_Pair("\u1E9Cplus",(new sc_Pair((new sc_Pair("\u1E9Ctimes",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),(new sc_Pair((new sc_Pair("\u1E9Ctimes",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cz",null)))))),null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Ctimes",(new sc_Pair((new sc_Pair("\u1E9Ctimes",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),(new sc_Pair("\u1E9Cz",null)))))),(new sc_Pair((new sc_Pair("\u1E9Ctimes",(new sc_Pair("\u1E9Cx",(new sc_Pair((new sc_Pair("\u1E9Ctimes",(new sc_Pair("\u1E9Cy",(new sc_Pair("\u1E9Cz",null)))))),null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Ctimes",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),(new sc_Pair((new sc_Pair("\u1E9Czero",null)),null)))))),(new sc_Pair((new sc_Pair("\u1E9Cor",(new sc_Pair((new sc_Pair("\u1E9Czerop",(new sc_Pair("\u1E9Cx",null)))),(new sc_Pair((new sc_Pair("\u1E9Czerop",(new sc_Pair("\u1E9Cy",null)))),null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cexec",(new sc_Pair((new sc_Pair("\u1E9Cappend",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),(new sc_Pair("\u1E9Cpds",(new sc_Pair("\u1E9Cenvrn",null)))))))),(new sc_Pair((new sc_Pair("\u1E9Cexec",(new sc_Pair("\u1E9Cy",(new sc_Pair((new sc_Pair("\u1E9Cexec",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cpds",(new sc_Pair("\u1E9Cenvrn",null)))))))),(new sc_Pair("\u1E9Cenvrn",null)))))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cmc-flatten",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cappend",(new sc_Pair((new sc_Pair("\u1E9Cflatten",(new sc_Pair("\u1E9Cx",null)))),(new sc_Pair("\u1E9Cy",null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cmember",(new sc_Pair("\u1E9Cx",(new sc_Pair((new sc_Pair("\u1E9Cappend",(new sc_Pair("\u1E9Ca",(new sc_Pair("\u1E9Cb",null)))))),null)))))),(new sc_Pair((new sc_Pair("\u1E9Cor",(new sc_Pair((new sc_Pair("\u1E9Cmember",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Ca",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cmember",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cb",null)))))),null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cmember",(new sc_Pair("\u1E9Cx",(new sc_Pair((new sc_Pair("\u1E9Creverse",(new sc_Pair("\u1E9Cy",null)))),null)))))),(new sc_Pair((new sc_Pair("\u1E9Cmember",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Clength",(new sc_Pair((new sc_Pair("\u1E9Creverse",(new sc_Pair("\u1E9Cx",null)))),null)))),(new sc_Pair((new sc_Pair("\u1E9Clength",(new sc_Pair("\u1E9Cx",null)))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cmember",(new sc_Pair("\u1E9Ca",(new sc_Pair((new sc_Pair("\u1E9Cintersect",(new sc_Pair("\u1E9Cb",(new sc_Pair("\u1E9Cc",null)))))),null)))))),(new sc_Pair((new sc_Pair("\u1E9Cand",(new sc_Pair((new sc_Pair("\u1E9Cmember",(new sc_Pair("\u1E9Ca",(new sc_Pair("\u1E9Cb",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cmember",(new sc_Pair("\u1E9Ca",(new sc_Pair("\u1E9Cc",null)))))),null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cnth",(new sc_Pair((new sc_Pair("\u1E9Czero",null)),(new sc_Pair("\u1E9Ci",null)))))),(new sc_Pair((new sc_Pair("\u1E9Czero",null)),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cexp",(new sc_Pair("\u1E9Ci",(new sc_Pair((new sc_Pair("\u1E9Cplus",(new sc_Pair("\u1E9Cj",(new sc_Pair("\u1E9Ck",null)))))),null)))))),(new sc_Pair((new sc_Pair("\u1E9Ctimes",(new sc_Pair((new sc_Pair("\u1E9Cexp",(new sc_Pair("\u1E9Ci",(new sc_Pair("\u1E9Cj",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cexp",(new sc_Pair("\u1E9Ci",(new sc_Pair("\u1E9Ck",null)))))),null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cexp",(new sc_Pair("\u1E9Ci",(new sc_Pair((new sc_Pair("\u1E9Ctimes",(new sc_Pair("\u1E9Cj",(new sc_Pair("\u1E9Ck",null)))))),null)))))),(new sc_Pair((new sc_Pair("\u1E9Cexp",(new sc_Pair((new sc_Pair("\u1E9Cexp",(new sc_Pair("\u1E9Ci",(new sc_Pair("\u1E9Cj",null)))))),(new sc_Pair("\u1E9Ck",null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Creverse-loop",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cappend",(new sc_Pair((new sc_Pair("\u1E9Creverse",(new sc_Pair("\u1E9Cx",null)))),(new sc_Pair("\u1E9Cy",null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Creverse-loop",(new sc_Pair("\u1E9Cx",(new sc_Pair((new sc_Pair("\u1E9Cnil",null)),null)))))),(new sc_Pair((new sc_Pair("\u1E9Creverse",(new sc_Pair("\u1E9Cx",null)))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Ccount-list",(new sc_Pair("\u1E9Cz",(new sc_Pair((new sc_Pair("\u1E9Csort-lp",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),null)))))),(new sc_Pair((new sc_Pair("\u1E9Cplus",(new sc_Pair((new sc_Pair("\u1E9Ccount-list",(new sc_Pair("\u1E9Cz",(new sc_Pair("\u1E9Cx",null)))))),(new sc_Pair((new sc_Pair("\u1E9Ccount-list",(new sc_Pair("\u1E9Cz",(new sc_Pair("\u1E9Cy",null)))))),null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cappend",(new sc_Pair("\u1E9Ca",(new sc_Pair("\u1E9Cb",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cappend",(new sc_Pair("\u1E9Ca",(new sc_Pair("\u1E9Cc",null)))))),null)))))),(new sc_Pair((new sc_Pair("\u1E9Cequal",(new sc_Pair("\u1E9Cb",(new sc_Pair("\u1E9Cc",null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cplus",(new sc_Pair((new sc_Pair("\u1E9Cremainder",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),(new sc_Pair((new sc_Pair("\u1E9Ctimes",(new sc_Pair("\u1E9Cy",(new sc_Pair((new sc_Pair("\u1E9Cquotient",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),null)))))),null)))))),(new sc_Pair((new sc_Pair("\u1E9Cfix",(new sc_Pair("\u1E9Cx",null)))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cpower-eval",(new sc_Pair((new sc_Pair("\u1E9Cbig-plus1",(new sc_Pair("\u1E9Cl",(new sc_Pair("\u1E9Ci",(new sc_Pair("\u1E9Cbase",null)))))))),(new sc_Pair("\u1E9Cbase",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cplus",(new sc_Pair((new sc_Pair("\u1E9Cpower-eval",(new sc_Pair("\u1E9Cl",(new sc_Pair("\u1E9Cbase",null)))))),(new sc_Pair("\u1E9Ci",null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cpower-eval",(new sc_Pair((new sc_Pair("\u1E9Cbig-plus",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",(new sc_Pair("\u1E9Ci",(new sc_Pair("\u1E9Cbase",null)))))))))),(new sc_Pair("\u1E9Cbase",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cplus",(new sc_Pair("\u1E9Ci",(new sc_Pair((new sc_Pair("\u1E9Cplus",(new sc_Pair((new sc_Pair("\u1E9Cpower-eval",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cbase",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cpower-eval",(new sc_Pair("\u1E9Cy",(new sc_Pair("\u1E9Cbase",null)))))),null)))))),null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cremainder",(new sc_Pair("\u1E9Cy",(new sc_Pair((1),null)))))),(new sc_Pair((new sc_Pair("\u1E9Czero",null)),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Clessp",(new sc_Pair((new sc_Pair("\u1E9Cremainder",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),(new sc_Pair("\u1E9Cy",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cnot",(new sc_Pair((new sc_Pair("\u1E9Czerop",(new sc_Pair("\u1E9Cy",null)))),null)))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cremainder",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cx",null)))))),(new sc_Pair((new sc_Pair("\u1E9Czero",null)),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Clessp",(new sc_Pair((new sc_Pair("\u1E9Cquotient",(new sc_Pair("\u1E9Ci",(new sc_Pair("\u1E9Cj",null)))))),(new sc_Pair("\u1E9Ci",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cand",(new sc_Pair((new sc_Pair("\u1E9Cnot",(new sc_Pair((new sc_Pair("\u1E9Czerop",(new sc_Pair("\u1E9Ci",null)))),null)))),(new sc_Pair((new sc_Pair("\u1E9Cor",(new sc_Pair((new sc_Pair("\u1E9Czerop",(new sc_Pair("\u1E9Cj",null)))),(new sc_Pair((new sc_Pair("\u1E9Cnot",(new sc_Pair((new sc_Pair("\u1E9Cequal",(new sc_Pair("\u1E9Cj",(new sc_Pair((1),null)))))),null)))),null)))))),null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Clessp",(new sc_Pair((new sc_Pair("\u1E9Cremainder",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),(new sc_Pair("\u1E9Cx",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cand",(new sc_Pair((new sc_Pair("\u1E9Cnot",(new sc_Pair((new sc_Pair("\u1E9Czerop",(new sc_Pair("\u1E9Cy",null)))),null)))),(new sc_Pair((new sc_Pair("\u1E9Cnot",(new sc_Pair((new sc_Pair("\u1E9Czerop",(new sc_Pair("\u1E9Cx",null)))),null)))),(new sc_Pair((new sc_Pair("\u1E9Cnot",(new sc_Pair((new sc_Pair("\u1E9Clessp",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),null)))),null)))))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cpower-eval",(new sc_Pair((new sc_Pair("\u1E9Cpower-rep",(new sc_Pair("\u1E9Ci",(new sc_Pair("\u1E9Cbase",null)))))),(new sc_Pair("\u1E9Cbase",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cfix",(new sc_Pair("\u1E9Ci",null)))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cpower-eval",(new sc_Pair((new sc_Pair("\u1E9Cbig-plus",(new sc_Pair((new sc_Pair("\u1E9Cpower-rep",(new sc_Pair("\u1E9Ci",(new sc_Pair("\u1E9Cbase",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cpower-rep",(new sc_Pair("\u1E9Cj",(new sc_Pair("\u1E9Cbase",null)))))),(new sc_Pair((new sc_Pair("\u1E9Czero",null)),(new sc_Pair("\u1E9Cbase",null)))))))))),(new sc_Pair("\u1E9Cbase",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cplus",(new sc_Pair("\u1E9Ci",(new sc_Pair("\u1E9Cj",null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cgcd",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cgcd",(new sc_Pair("\u1E9Cy",(new sc_Pair("\u1E9Cx",null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cnth",(new sc_Pair((new sc_Pair("\u1E9Cappend",(new sc_Pair("\u1E9Ca",(new sc_Pair("\u1E9Cb",null)))))),(new sc_Pair("\u1E9Ci",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cappend",(new sc_Pair((new sc_Pair("\u1E9Cnth",(new sc_Pair("\u1E9Ca",(new sc_Pair("\u1E9Ci",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cnth",(new sc_Pair("\u1E9Cb",(new sc_Pair((new sc_Pair("\u1E9Cdifference",(new sc_Pair("\u1E9Ci",(new sc_Pair((new sc_Pair("\u1E9Clength",(new sc_Pair("\u1E9Ca",null)))),null)))))),null)))))),null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cdifference",(new sc_Pair((new sc_Pair("\u1E9Cplus",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),(new sc_Pair("\u1E9Cx",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cfix",(new sc_Pair("\u1E9Cy",null)))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cdifference",(new sc_Pair((new sc_Pair("\u1E9Cplus",(new sc_Pair("\u1E9Cy",(new sc_Pair("\u1E9Cx",null)))))),(new sc_Pair("\u1E9Cx",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cfix",(new sc_Pair("\u1E9Cy",null)))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cdifference",(new sc_Pair((new sc_Pair("\u1E9Cplus",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cplus",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cz",null)))))),null)))))),(new sc_Pair((new sc_Pair("\u1E9Cdifference",(new sc_Pair("\u1E9Cy",(new sc_Pair("\u1E9Cz",null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Ctimes",(new sc_Pair("\u1E9Cx",(new sc_Pair((new sc_Pair("\u1E9Cdifference",(new sc_Pair("\u1E9Cc",(new sc_Pair("\u1E9Cw",null)))))),null)))))),(new sc_Pair((new sc_Pair("\u1E9Cdifference",(new sc_Pair((new sc_Pair("\u1E9Ctimes",(new sc_Pair("\u1E9Cc",(new sc_Pair("\u1E9Cx",null)))))),(new sc_Pair((new sc_Pair("\u1E9Ctimes",(new sc_Pair("\u1E9Cw",(new sc_Pair("\u1E9Cx",null)))))),null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cremainder",(new sc_Pair((new sc_Pair("\u1E9Ctimes",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cz",null)))))),(new sc_Pair("\u1E9Cz",null)))))),(new sc_Pair((new sc_Pair("\u1E9Czero",null)),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cdifference",(new sc_Pair((new sc_Pair("\u1E9Cplus",(new sc_Pair("\u1E9Cb",(new sc_Pair((new sc_Pair("\u1E9Cplus",(new sc_Pair("\u1E9Ca",(new sc_Pair("\u1E9Cc",null)))))),null)))))),(new sc_Pair("\u1E9Ca",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cplus",(new sc_Pair("\u1E9Cb",(new sc_Pair("\u1E9Cc",null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cdifference",(new sc_Pair((new sc_Pair("\u1E9Cadd1",(new sc_Pair((new sc_Pair("\u1E9Cplus",(new sc_Pair("\u1E9Cy",(new sc_Pair("\u1E9Cz",null)))))),null)))),(new sc_Pair("\u1E9Cz",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cadd1",(new sc_Pair("\u1E9Cy",null)))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Clessp",(new sc_Pair((new sc_Pair("\u1E9Cplus",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cplus",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cz",null)))))),null)))))),(new sc_Pair((new sc_Pair("\u1E9Clessp",(new sc_Pair("\u1E9Cy",(new sc_Pair("\u1E9Cz",null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Clessp",(new sc_Pair((new sc_Pair("\u1E9Ctimes",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cz",null)))))),(new sc_Pair((new sc_Pair("\u1E9Ctimes",(new sc_Pair("\u1E9Cy",(new sc_Pair("\u1E9Cz",null)))))),null)))))),(new sc_Pair((new sc_Pair("\u1E9Cand",(new sc_Pair((new sc_Pair("\u1E9Cnot",(new sc_Pair((new sc_Pair("\u1E9Czerop",(new sc_Pair("\u1E9Cz",null)))),null)))),(new sc_Pair((new sc_Pair("\u1E9Clessp",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Clessp",(new sc_Pair("\u1E9Cy",(new sc_Pair((new sc_Pair("\u1E9Cplus",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),null)))))),(new sc_Pair((new sc_Pair("\u1E9Cnot",(new sc_Pair((new sc_Pair("\u1E9Czerop",(new sc_Pair("\u1E9Cx",null)))),null)))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cgcd",(new sc_Pair((new sc_Pair("\u1E9Ctimes",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cz",null)))))),(new sc_Pair((new sc_Pair("\u1E9Ctimes",(new sc_Pair("\u1E9Cy",(new sc_Pair("\u1E9Cz",null)))))),null)))))),(new sc_Pair((new sc_Pair("\u1E9Ctimes",(new sc_Pair("\u1E9Cz",(new sc_Pair((new sc_Pair("\u1E9Cgcd",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cvalue",(new sc_Pair((new sc_Pair("\u1E9Cnormalize",(new sc_Pair("\u1E9Cx",null)))),(new sc_Pair("\u1E9Ca",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cvalue",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Ca",null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cflatten",(new sc_Pair("\u1E9Cx",null)))),(new sc_Pair((new sc_Pair("\u1E9Ccons",(new sc_Pair("\u1E9Cy",(new sc_Pair((new sc_Pair("\u1E9Cnil",null)),null)))))),null)))))),(new sc_Pair((new sc_Pair("\u1E9Cand",(new sc_Pair((new sc_Pair("\u1E9Cnlistp",(new sc_Pair("\u1E9Cx",null)))),(new sc_Pair((new sc_Pair("\u1E9Cequal",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Clistp",(new sc_Pair((new sc_Pair("\u1E9Cgopher",(new sc_Pair("\u1E9Cx",null)))),null)))),(new sc_Pair((new sc_Pair("\u1E9Clistp",(new sc_Pair("\u1E9Cx",null)))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Csamefringe",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cflatten",(new sc_Pair("\u1E9Cx",null)))),(new sc_Pair((new sc_Pair("\u1E9Cflatten",(new sc_Pair("\u1E9Cy",null)))),null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cgreatest-factor",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),(new sc_Pair((new sc_Pair("\u1E9Czero",null)),null)))))),(new sc_Pair((new sc_Pair("\u1E9Cand",(new sc_Pair((new sc_Pair("\u1E9Cor",(new sc_Pair((new sc_Pair("\u1E9Czerop",(new sc_Pair("\u1E9Cy",null)))),(new sc_Pair((new sc_Pair("\u1E9Cequal",(new sc_Pair("\u1E9Cy",(new sc_Pair((1),null)))))),null)))))),(new sc_Pair((new sc_Pair("\u1E9Cequal",(new sc_Pair("\u1E9Cx",(new sc_Pair((new sc_Pair("\u1E9Czero",null)),null)))))),null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cgreatest-factor",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),(new sc_Pair((1),null)))))),(new sc_Pair((new sc_Pair("\u1E9Cequal",(new sc_Pair("\u1E9Cx",(new sc_Pair((1),null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cnumberp",(new sc_Pair((new sc_Pair("\u1E9Cgreatest-factor",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),null)))),(new sc_Pair((new sc_Pair("\u1E9Cnot",(new sc_Pair((new sc_Pair("\u1E9Cand",(new sc_Pair((new sc_Pair("\u1E9Cor",(new sc_Pair((new sc_Pair("\u1E9Czerop",(new sc_Pair("\u1E9Cy",null)))),(new sc_Pair((new sc_Pair("\u1E9Cequal",(new sc_Pair("\u1E9Cy",(new sc_Pair((1),null)))))),null)))))),(new sc_Pair((new sc_Pair("\u1E9Cnot",(new sc_Pair((new sc_Pair("\u1E9Cnumberp",(new sc_Pair("\u1E9Cx",null)))),null)))),null)))))),null)))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Ctimes-list",(new sc_Pair((new sc_Pair("\u1E9Cappend",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),null)))),(new sc_Pair((new sc_Pair("\u1E9Ctimes",(new sc_Pair((new sc_Pair("\u1E9Ctimes-list",(new sc_Pair("\u1E9Cx",null)))),(new sc_Pair((new sc_Pair("\u1E9Ctimes-list",(new sc_Pair("\u1E9Cy",null)))),null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cprime-list",(new sc_Pair((new sc_Pair("\u1E9Cappend",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),null)))),(new sc_Pair((new sc_Pair("\u1E9Cand",(new sc_Pair((new sc_Pair("\u1E9Cprime-list",(new sc_Pair("\u1E9Cx",null)))),(new sc_Pair((new sc_Pair("\u1E9Cprime-list",(new sc_Pair("\u1E9Cy",null)))),null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cequal",(new sc_Pair("\u1E9Cz",(new sc_Pair((new sc_Pair("\u1E9Ctimes",(new sc_Pair("\u1E9Cw",(new sc_Pair("\u1E9Cz",null)))))),null)))))),(new sc_Pair((new sc_Pair("\u1E9Cand",(new sc_Pair((new sc_Pair("\u1E9Cnumberp",(new sc_Pair("\u1E9Cz",null)))),(new sc_Pair((new sc_Pair("\u1E9Cor",(new sc_Pair((new sc_Pair("\u1E9Cequal",(new sc_Pair("\u1E9Cz",(new sc_Pair((new sc_Pair("\u1E9Czero",null)),null)))))),(new sc_Pair((new sc_Pair("\u1E9Cequal",(new sc_Pair("\u1E9Cw",(new sc_Pair((1),null)))))),null)))))),null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cgreatereqp",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cnot",(new sc_Pair((new sc_Pair("\u1E9Clessp",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),null)))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cequal",(new sc_Pair("\u1E9Cx",(new sc_Pair((new sc_Pair("\u1E9Ctimes",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),null)))))),(new sc_Pair((new sc_Pair("\u1E9Cor",(new sc_Pair((new sc_Pair("\u1E9Cequal",(new sc_Pair("\u1E9Cx",(new sc_Pair((new sc_Pair("\u1E9Czero",null)),null)))))),(new sc_Pair((new sc_Pair("\u1E9Cand",(new sc_Pair((new sc_Pair("\u1E9Cnumberp",(new sc_Pair("\u1E9Cx",null)))),(new sc_Pair((new sc_Pair("\u1E9Cequal",(new sc_Pair("\u1E9Cy",(new sc_Pair((1),null)))))),null)))))),null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cremainder",(new sc_Pair((new sc_Pair("\u1E9Ctimes",(new sc_Pair("\u1E9Cy",(new sc_Pair("\u1E9Cx",null)))))),(new sc_Pair("\u1E9Cy",null)))))),(new sc_Pair((new sc_Pair("\u1E9Czero",null)),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Ctimes",(new sc_Pair("\u1E9Ca",(new sc_Pair("\u1E9Cb",null)))))),(new sc_Pair((1),null)))))),(new sc_Pair(sc_list("\u1E9Cand", (new sc_Pair("\u1E9Cnot",(new sc_Pair((new sc_Pair("\u1E9Cequal",(new sc_Pair("\u1E9Ca",(new sc_Pair((new sc_Pair("\u1E9Czero",null)),null)))))),null)))), (new sc_Pair("\u1E9Cnot",(new sc_Pair((new sc_Pair("\u1E9Cequal",(new sc_Pair("\u1E9Cb",(new sc_Pair((new sc_Pair("\u1E9Czero",null)),null)))))),null)))), (new sc_Pair("\u1E9Cnumberp",(new sc_Pair("\u1E9Ca",null)))), (new sc_Pair("\u1E9Cnumberp",(new sc_Pair("\u1E9Cb",null)))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Csub1",(new sc_Pair("\u1E9Ca",null)))),(new sc_Pair((new sc_Pair("\u1E9Czero",null)),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Csub1",(new sc_Pair("\u1E9Cb",null)))),(new sc_Pair((new sc_Pair("\u1E9Czero",null)),null))))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Clessp",(new sc_Pair((new sc_Pair("\u1E9Clength",(new sc_Pair((new sc_Pair("\u1E9Cdelete",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cl",null)))))),null)))),(new sc_Pair((new sc_Pair("\u1E9Clength",(new sc_Pair("\u1E9Cl",null)))),null)))))),(new sc_Pair((new sc_Pair("\u1E9Cmember",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cl",null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Csort2",(new sc_Pair((new sc_Pair("\u1E9Cdelete",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cl",null)))))),null)))),(new sc_Pair((new sc_Pair("\u1E9Cdelete",(new sc_Pair("\u1E9Cx",(new sc_Pair((new sc_Pair("\u1E9Csort2",(new sc_Pair("\u1E9Cl",null)))),null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cdsort",(new sc_Pair("\u1E9Cx",null)))),(new sc_Pair((new sc_Pair("\u1E9Csort2",(new sc_Pair("\u1E9Cx",null)))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Clength",(new sc_Pair((new sc_Pair("\u1E9Ccons",(new sc_Pair("\u1E9Cx1",(new sc_Pair((new sc_Pair("\u1E9Ccons",(new sc_Pair("\u1E9Cx2",(new sc_Pair((new sc_Pair("\u1E9Ccons",(new sc_Pair("\u1E9Cx3",(new sc_Pair((new sc_Pair("\u1E9Ccons",(new sc_Pair("\u1E9Cx4",(new sc_Pair((new sc_Pair("\u1E9Ccons",(new sc_Pair("\u1E9Cx5",(new sc_Pair((new sc_Pair("\u1E9Ccons",(new sc_Pair("\u1E9Cx6",(new sc_Pair("\u1E9Cx7",null)))))),null)))))),null)))))),null)))))),null)))))),null)))))),null)))),(new sc_Pair((new sc_Pair("\u1E9Cplus",(new sc_Pair((6),(new sc_Pair((new sc_Pair("\u1E9Clength",(new sc_Pair("\u1E9Cx7",null)))),null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cdifference",(new sc_Pair((new sc_Pair("\u1E9Cadd1",(new sc_Pair((new sc_Pair("\u1E9Cadd1",(new sc_Pair("\u1E9Cx",null)))),null)))),(new sc_Pair((2),null)))))),(new sc_Pair((new sc_Pair("\u1E9Cfix",(new sc_Pair("\u1E9Cx",null)))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cquotient",(new sc_Pair((new sc_Pair("\u1E9Cplus",(new sc_Pair("\u1E9Cx",(new sc_Pair((new sc_Pair("\u1E9Cplus",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),null)))))),(new sc_Pair((2),null)))))),(new sc_Pair((new sc_Pair("\u1E9Cplus",(new sc_Pair("\u1E9Cx",(new sc_Pair((new sc_Pair("\u1E9Cquotient",(new sc_Pair("\u1E9Cy",(new sc_Pair((2),null)))))),null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Csigma",(new sc_Pair((new sc_Pair("\u1E9Czero",null)),(new sc_Pair("\u1E9Ci",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cquotient",(new sc_Pair((new sc_Pair("\u1E9Ctimes",(new sc_Pair("\u1E9Ci",(new sc_Pair((new sc_Pair("\u1E9Cadd1",(new sc_Pair("\u1E9Ci",null)))),null)))))),(new sc_Pair((2),null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cplus",(new sc_Pair("\u1E9Cx",(new sc_Pair((new sc_Pair("\u1E9Cadd1",(new sc_Pair("\u1E9Cy",null)))),null)))))),(new sc_Pair((new sc_Pair("\u1E9Cif",(new sc_Pair((new sc_Pair("\u1E9Cnumberp",(new sc_Pair("\u1E9Cy",null)))),(new sc_Pair((new sc_Pair("\u1E9Cadd1",(new sc_Pair((new sc_Pair("\u1E9Cplus",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),null)))),(new sc_Pair((new sc_Pair("\u1E9Cadd1",(new sc_Pair("\u1E9Cx",null)))),null)))))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cdifference",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cdifference",(new sc_Pair("\u1E9Cz",(new sc_Pair("\u1E9Cy",null)))))),null)))))),(new sc_Pair((new sc_Pair("\u1E9Cif",(new sc_Pair((new sc_Pair("\u1E9Clessp",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cnot",(new sc_Pair((new sc_Pair("\u1E9Clessp",(new sc_Pair("\u1E9Cy",(new sc_Pair("\u1E9Cz",null)))))),null)))),(new sc_Pair((new sc_Pair("\u1E9Cif",(new sc_Pair((new sc_Pair("\u1E9Clessp",(new sc_Pair("\u1E9Cz",(new sc_Pair("\u1E9Cy",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cnot",(new sc_Pair((new sc_Pair("\u1E9Clessp",(new sc_Pair("\u1E9Cy",(new sc_Pair("\u1E9Cx",null)))))),null)))),(new sc_Pair((new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cfix",(new sc_Pair("\u1E9Cx",null)))),(new sc_Pair((new sc_Pair("\u1E9Cfix",(new sc_Pair("\u1E9Cz",null)))),null)))))),null)))))))),null)))))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cmeaning",(new sc_Pair((new sc_Pair("\u1E9Cplus-tree",(new sc_Pair((new sc_Pair("\u1E9Cdelete",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),null)))),(new sc_Pair("\u1E9Ca",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cif",(new sc_Pair((new sc_Pair("\u1E9Cmember",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cdifference",(new sc_Pair((new sc_Pair("\u1E9Cmeaning",(new sc_Pair((new sc_Pair("\u1E9Cplus-tree",(new sc_Pair("\u1E9Cy",null)))),(new sc_Pair("\u1E9Ca",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cmeaning",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Ca",null)))))),null)))))),(new sc_Pair((new sc_Pair("\u1E9Cmeaning",(new sc_Pair((new sc_Pair("\u1E9Cplus-tree",(new sc_Pair("\u1E9Cy",null)))),(new sc_Pair("\u1E9Ca",null)))))),null)))))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Ctimes",(new sc_Pair("\u1E9Cx",(new sc_Pair((new sc_Pair("\u1E9Cadd1",(new sc_Pair("\u1E9Cy",null)))),null)))))),(new sc_Pair((new sc_Pair("\u1E9Cif",(new sc_Pair((new sc_Pair("\u1E9Cnumberp",(new sc_Pair("\u1E9Cy",null)))),(new sc_Pair((new sc_Pair("\u1E9Cplus",(new sc_Pair("\u1E9Cx",(new sc_Pair((new sc_Pair("\u1E9Ctimes",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),null)))))),(new sc_Pair((new sc_Pair("\u1E9Cfix",(new sc_Pair("\u1E9Cx",null)))),null)))))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cnth",(new sc_Pair((new sc_Pair("\u1E9Cnil",null)),(new sc_Pair("\u1E9Ci",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cif",(new sc_Pair((new sc_Pair("\u1E9Czerop",(new sc_Pair("\u1E9Ci",null)))),(new sc_Pair((new sc_Pair("\u1E9Cnil",null)),(new sc_Pair((new sc_Pair("\u1E9Czero",null)),null)))))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Clast",(new sc_Pair((new sc_Pair("\u1E9Cappend",(new sc_Pair("\u1E9Ca",(new sc_Pair("\u1E9Cb",null)))))),null)))),(new sc_Pair((new sc_Pair("\u1E9Cif",(new sc_Pair((new sc_Pair("\u1E9Clistp",(new sc_Pair("\u1E9Cb",null)))),(new sc_Pair((new sc_Pair("\u1E9Clast",(new sc_Pair("\u1E9Cb",null)))),(new sc_Pair((new sc_Pair("\u1E9Cif",(new sc_Pair((new sc_Pair("\u1E9Clistp",(new sc_Pair("\u1E9Ca",null)))),(new sc_Pair((new sc_Pair("\u1E9Ccons",(new sc_Pair((new sc_Pair("\u1E9Ccar",(new sc_Pair((new sc_Pair("\u1E9Clast",(new sc_Pair("\u1E9Ca",null)))),null)))),(new sc_Pair("\u1E9Cb",null)))))),(new sc_Pair("\u1E9Cb",null)))))))),null)))))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Clessp",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),(new sc_Pair("\u1E9Cz",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cif",(new sc_Pair((new sc_Pair("\u1E9Clessp",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Ct",null)),(new sc_Pair("\u1E9Cz",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cf",null)),(new sc_Pair("\u1E9Cz",null)))))),null)))))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cassignment",(new sc_Pair("\u1E9Cx",(new sc_Pair((new sc_Pair("\u1E9Cappend",(new sc_Pair("\u1E9Ca",(new sc_Pair("\u1E9Cb",null)))))),null)))))),(new sc_Pair((new sc_Pair("\u1E9Cif",(new sc_Pair((new sc_Pair("\u1E9Cassignedp",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Ca",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cassignment",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Ca",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cassignment",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cb",null)))))),null)))))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Ccar",(new sc_Pair((new sc_Pair("\u1E9Cgopher",(new sc_Pair("\u1E9Cx",null)))),null)))),(new sc_Pair((new sc_Pair("\u1E9Cif",(new sc_Pair((new sc_Pair("\u1E9Clistp",(new sc_Pair("\u1E9Cx",null)))),(new sc_Pair((new sc_Pair("\u1E9Ccar",(new sc_Pair((new sc_Pair("\u1E9Cflatten",(new sc_Pair("\u1E9Cx",null)))),null)))),(new sc_Pair((new sc_Pair("\u1E9Czero",null)),null)))))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cflatten",(new sc_Pair((new sc_Pair("\u1E9Ccdr",(new sc_Pair((new sc_Pair("\u1E9Cgopher",(new sc_Pair("\u1E9Cx",null)))),null)))),null)))),(new sc_Pair((new sc_Pair("\u1E9Cif",(new sc_Pair((new sc_Pair("\u1E9Clistp",(new sc_Pair("\u1E9Cx",null)))),(new sc_Pair((new sc_Pair("\u1E9Ccdr",(new sc_Pair((new sc_Pair("\u1E9Cflatten",(new sc_Pair("\u1E9Cx",null)))),null)))),(new sc_Pair((new sc_Pair("\u1E9Ccons",(new sc_Pair((new sc_Pair("\u1E9Czero",null)),(new sc_Pair((new sc_Pair("\u1E9Cnil",null)),null)))))),null)))))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cquotient",(new sc_Pair((new sc_Pair("\u1E9Ctimes",(new sc_Pair("\u1E9Cy",(new sc_Pair("\u1E9Cx",null)))))),(new sc_Pair("\u1E9Cy",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cif",(new sc_Pair((new sc_Pair("\u1E9Czerop",(new sc_Pair("\u1E9Cy",null)))),(new sc_Pair((new sc_Pair("\u1E9Czero",null)),(new sc_Pair((new sc_Pair("\u1E9Cfix",(new sc_Pair("\u1E9Cx",null)))),null)))))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cget",(new sc_Pair("\u1E9Cj",(new sc_Pair((new sc_Pair("\u1E9Cset",(new sc_Pair("\u1E9Ci",(new sc_Pair("\u1E9Cval",(new sc_Pair("\u1E9Cmem",null)))))))),null)))))),(new sc_Pair((new sc_Pair("\u1E9Cif",(new sc_Pair((new sc_Pair("\u1E9Ceqp",(new sc_Pair("\u1E9Cj",(new sc_Pair("\u1E9Ci",null)))))),(new sc_Pair("\u1E9Cval",(new sc_Pair((new sc_Pair("\u1E9Cget",(new sc_Pair("\u1E9Cj",(new sc_Pair("\u1E9Cmem",null)))))),null)))))))),null))))))));
+    (const_nboyer = (new sc_Pair((new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cf",(new sc_Pair((new sc_Pair("\u1E9Cplus",(new sc_Pair((new sc_Pair("\u1E9Cplus",(new sc_Pair("\u1E9Ca",(new sc_Pair("\u1E9Cb",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cplus",(new sc_Pair("\u1E9Cc",(new sc_Pair((new sc_Pair("\u1E9Czero",null)),null)))))),null)))))),null)))))),(new sc_Pair((new sc_Pair("\u1E9Cy",(new sc_Pair("\u1E9Cf",(new sc_Pair((new sc_Pair("\u1E9Ctimes",(new sc_Pair((new sc_Pair("\u1E9Ctimes",(new sc_Pair("\u1E9Ca",(new sc_Pair("\u1E9Cb",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cplus",(new sc_Pair("\u1E9Cc",(new sc_Pair("\u1E9Cd",null)))))),null)))))),null)))))),(new sc_Pair((new sc_Pair("\u1E9Cz",(new sc_Pair("\u1E9Cf",(new sc_Pair((new sc_Pair("\u1E9Creverse",(new sc_Pair((new sc_Pair("\u1E9Cappend",(new sc_Pair((new sc_Pair("\u1E9Cappend",(new sc_Pair("\u1E9Ca",(new sc_Pair("\u1E9Cb",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cnil",null)),null)))))),null)))),null)))))),(new sc_Pair((new sc_Pair("\u1E9Cu",(new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cplus",(new sc_Pair("\u1E9Ca",(new sc_Pair("\u1E9Cb",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cdifference",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),null)))))))),(new sc_Pair((new sc_Pair("\u1E9Cw",(new sc_Pair("\u1E9Clessp",(new sc_Pair((new sc_Pair("\u1E9Cremainder",(new sc_Pair("\u1E9Ca",(new sc_Pair("\u1E9Cb",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cmember",(new sc_Pair("\u1E9Ca",(new sc_Pair((new sc_Pair("\u1E9Clength",(new sc_Pair("\u1E9Cb",null)))),null)))))),null)))))))),null)))))))))));
+    BgL_nboyerzd2benchmarkzd2 = function() {
+        var args = null;
+        for (var sc_tmp = arguments.length - 1; sc_tmp >= 0; sc_tmp--) {
+            args = sc_cons(arguments[sc_tmp], args);
+        }
+        var n;
+        return ((n = ((args === null)?(0):(args.car))), (BgL_setupzd2boyerzd2()), (BgL_runzd2benchmarkzd2(("nboyer"+(sc_number2string(n))), (1), function() {
+            return (BgL_testzd2boyerzd2(n));
+        }, function(rewrites) {
+            if ((sc_isNumber(rewrites)))
+                switch (n) {
+                case (0):
+                    return (rewrites===(95024));
+                    break;
+                case (1):
+                    return (rewrites===(591777));
+                    break;
+                case (2):
+                    return (rewrites===(1813975));
+                    break;
+                case (3):
+                    return (rewrites===(5375678));
+                    break;
+                case (4):
+                    return (rewrites===(16445406));
+                    break;
+                case (5):
+                    return (rewrites===(51507739));
+                    break;
+                default:
+                    return true;
+                    break;
+                }
+            else
+                return false;
+        })));
+    };
+    BgL_setupzd2boyerzd2 = function() {
+        return true;
+    };
+    BgL_testzd2boyerzd2 = function() {
+        return true;
+    };
+    translate_term_nboyer = function(term) {
+        var lst;
+        return (!(term instanceof sc_Pair)?term:(new sc_Pair((BgL_sc_symbolzd2ze3symbolzd2record_1ze3_nboyer((term.car))), ((lst = (term.cdr)), ((lst === null)?null:(new sc_Pair((translate_term_nboyer((lst.car))), (translate_args_nboyer((lst.cdr))))))))));
+    };
+    translate_args_nboyer = function(lst) {
+        var sc_lst_5;
+        var term;
+        return ((lst === null)?null:(new sc_Pair(((term = (lst.car)), (!(term instanceof sc_Pair)?term:(new sc_Pair((BgL_sc_symbolzd2ze3symbolzd2record_1ze3_nboyer((term.car))), (translate_args_nboyer((term.cdr))))))), ((sc_lst_5 = (lst.cdr)), ((sc_lst_5 === null)?null:(new sc_Pair((translate_term_nboyer((sc_lst_5.car))), (translate_args_nboyer((sc_lst_5.cdr))))))))));
+    };
+    untranslate_term_nboyer = function(term) {
+        var optrOpnd;
+        var tail1131;
+        var L1127;
+        var falseHead1130;
+        var symbol_record;
+        if (!(term instanceof sc_Pair))
+            return term;
+        else
+            {
+                (falseHead1130 = (new sc_Pair(null, null)));
+                (L1127 = (term.cdr));
+                (tail1131 = falseHead1130);
+                while (!(L1127 === null)) {
+                    {
+                        (tail1131.cdr = (new sc_Pair((untranslate_term_nboyer((L1127.car))), null)));
+                        (tail1131 = (tail1131.cdr));
+                        (L1127 = (L1127.cdr));
+                    }
+                }
+                (optrOpnd = (falseHead1130.cdr));
+                return (new sc_Pair(((symbol_record = (term.car)), (symbol_record[(0)])), optrOpnd));
+            }
+    };
+    BgL_sc_symbolzd2ze3symbolzd2record_1ze3_nboyer = function(sym) {
+        var r;
+        var x;
+        return ((x = (sc_assq(sym, BgL_sc_za2symbolzd2recordszd2alistza2_2z00_nboyer))), ((x!== false)?(x.cdr):((r = [sym, null]), (BgL_sc_za2symbolzd2recordszd2alistza2_2z00_nboyer = (new sc_Pair((new sc_Pair(sym, r)), BgL_sc_za2symbolzd2recordszd2alistza2_2z00_nboyer))), r)));
+    };
+    (BgL_sc_za2symbolzd2recordszd2alistza2_2z00_nboyer = null);
+    translate_alist_nboyer = function(alist) {
+        var sc_alist_6;
+        var term;
+        return ((alist === null)?null:(new sc_Pair((new sc_Pair((alist.car.car), ((term = (alist.car.cdr)), (!(term instanceof sc_Pair)?term:(new sc_Pair((BgL_sc_symbolzd2ze3symbolzd2record_1ze3_nboyer((term.car))), (translate_args_nboyer((term.cdr))))))))), ((sc_alist_6 = (alist.cdr)), ((sc_alist_6 === null)?null:(new sc_Pair((new sc_Pair((sc_alist_6.car.car), (translate_term_nboyer((sc_alist_6.car.cdr))))), (translate_alist_nboyer((sc_alist_6.cdr))))))))));
+    };
+    apply_subst_nboyer = function(alist, term) {
+        var lst;
+        var temp_temp;
+        return (!(term instanceof sc_Pair)?((temp_temp = (sc_assq(term, alist))), ((temp_temp!== false)?(temp_temp.cdr):term)):(new sc_Pair((term.car), ((lst = (term.cdr)), ((lst === null)?null:(new sc_Pair((apply_subst_nboyer(alist, (lst.car))), (apply_subst_lst_nboyer(alist, (lst.cdr))))))))));
+    };
+    apply_subst_lst_nboyer = function(alist, lst) {
+        var sc_lst_7;
+        return ((lst === null)?null:(new sc_Pair((apply_subst_nboyer(alist, (lst.car))), ((sc_lst_7 = (lst.cdr)), ((sc_lst_7 === null)?null:(new sc_Pair((apply_subst_nboyer(alist, (sc_lst_7.car))), (apply_subst_lst_nboyer(alist, (sc_lst_7.cdr))))))))));
+    };
+    tautologyp_nboyer = function(sc_x_11, true_lst, false_lst) {
+        var tmp1125;
+        var x;
+        var tmp1126;
+        var sc_x_8;
+        var sc_tmp1125_9;
+        var sc_tmp1126_10;
+        var sc_x_11;
+        var true_lst;
+        var false_lst;
+        while (true) {
+            if ((((sc_tmp1126_10 = (is_term_equal_nboyer(sc_x_11, true_term_nboyer))), ((sc_tmp1126_10!== false)?sc_tmp1126_10:(is_term_member_nboyer(sc_x_11, true_lst))))!== false))
+                return true;
+            else
+                if ((((sc_tmp1125_9 = (is_term_equal_nboyer(sc_x_11, false_term_nboyer))), ((sc_tmp1125_9!== false)?sc_tmp1125_9:(is_term_member_nboyer(sc_x_11, false_lst))))!== false))
+                    return false;
+                else
+                    if (!(sc_x_11 instanceof sc_Pair))
+                        return false;
+                    else
+                        if (((sc_x_11.car)===if_constructor_nboyer))
+                            if ((((sc_x_8 = (sc_x_11.cdr.car)), (tmp1126 = (is_term_equal_nboyer(sc_x_8, true_term_nboyer))), ((tmp1126!== false)?tmp1126:(is_term_member_nboyer(sc_x_8, true_lst))))!== false))
+                                (sc_x_11 = (sc_x_11.cdr.cdr.car));
+                            else
+                                if ((((x = (sc_x_11.cdr.car)), (tmp1125 = (is_term_equal_nboyer(x, false_term_nboyer))), ((tmp1125!== false)?tmp1125:(is_term_member_nboyer(x, false_lst))))!== false))
+                                    (sc_x_11 = (sc_x_11.cdr.cdr.cdr.car));
+                                else
+                                    if (((tautologyp_nboyer((sc_x_11.cdr.cdr.car), (new sc_Pair((sc_x_11.cdr.car), true_lst)), false_lst))!== false))
+                                        {
+                                            (false_lst = (new sc_Pair((sc_x_11.cdr.car), false_lst)));
+                                            (sc_x_11 = (sc_x_11.cdr.cdr.cdr.car));
+                                        }
+                                    else
+                                        return false;
+                        else
+                            return false;
+        }
+    };
+    (if_constructor_nboyer = "\u1E9C*");
+    (rewrite_count_nboyer = (0));
+    rewrite_nboyer = function(term) {
+        var term2;
+        var sc_term_12;
+        var lst;
+        var symbol_record;
+        var sc_lst_13;
+        {
+            (++rewrite_count_nboyer);
+            if (!(term instanceof sc_Pair))
+                return term;
+            else
+                {
+                    (sc_term_12 = (new sc_Pair((term.car), ((sc_lst_13 = (term.cdr)), ((sc_lst_13 === null)?null:(new sc_Pair((rewrite_nboyer((sc_lst_13.car))), (rewrite_args_nboyer((sc_lst_13.cdr))))))))));
+                    (lst = ((symbol_record = (term.car)), (symbol_record[(1)])));
+                    while (true) {
+                        if ((lst === null))
+                            return sc_term_12;
+                        else
+                            if ((((term2 = ((lst.car).cdr.car)), (unify_subst_nboyer = null), (one_way_unify1_nboyer(sc_term_12, term2)))!== false))
+                                return (rewrite_nboyer((apply_subst_nboyer(unify_subst_nboyer, ((lst.car).cdr.cdr.car)))));
+                            else
+                                (lst = (lst.cdr));
+                    }
+                }
+        }
+    };
+    rewrite_args_nboyer = function(lst) {
+        var sc_lst_14;
+        return ((lst === null)?null:(new sc_Pair((rewrite_nboyer((lst.car))), ((sc_lst_14 = (lst.cdr)), ((sc_lst_14 === null)?null:(new sc_Pair((rewrite_nboyer((sc_lst_14.car))), (rewrite_args_nboyer((sc_lst_14.cdr))))))))));
+    };
+    (unify_subst_nboyer = "\u1E9C*");
+    one_way_unify1_nboyer = function(term1, term2) {
+        var lst1;
+        var lst2;
+        var temp_temp;
+        if (!(term2 instanceof sc_Pair))
+            {
+                (temp_temp = (sc_assq(term2, unify_subst_nboyer)));
+                if ((temp_temp!== false))
+                    return (is_term_equal_nboyer(term1, (temp_temp.cdr)));
+                else
+                    if ((sc_isNumber(term2)))
+                        return (sc_isEqual(term1, term2));
+                    else
+                        {
+                            (unify_subst_nboyer = (new sc_Pair((new sc_Pair(term2, term1)), unify_subst_nboyer)));
+                            return true;
+                        }
+            }
+        else
+            if (!(term1 instanceof sc_Pair))
+                return false;
+            else
+                if (((term1.car)===(term2.car)))
+                    {
+                        (lst1 = (term1.cdr));
+                        (lst2 = (term2.cdr));
+                        while (true) {
+                            if ((lst1 === null))
+                                return (lst2 === null);
+                            else
+                                if ((lst2 === null))
+                                    return false;
+                                else
+                                    if (((one_way_unify1_nboyer((lst1.car), (lst2.car)))!== false))
+                                        {
+                                            (lst1 = (lst1.cdr));
+                                            (lst2 = (lst2.cdr));
+                                        }
+                                    else
+                                        return false;
+                        }
+                    }
+                else
+                    return false;
+    };
+    (false_term_nboyer = "\u1E9C*");
+    (true_term_nboyer = "\u1E9C*");
+    trans_of_implies1_nboyer = function(n) {
+        var sc_n_15;
+        return ((sc_isEqual(n, (1)))?(sc_list("\u1E9Cimplies", (0), (1))):(sc_list("\u1E9Cand", (sc_list("\u1E9Cimplies", (n-(1)), n)), ((sc_n_15 = (n-(1))), ((sc_isEqual(sc_n_15, (1)))?(sc_list("\u1E9Cimplies", (0), (1))):(sc_list("\u1E9Cand", (sc_list("\u1E9Cimplies", (sc_n_15-(1)), sc_n_15)), (trans_of_implies1_nboyer((sc_n_15-(1)))))))))));
+    };
+    is_term_equal_nboyer = function(x, y) {
+        var lst1;
+        var lst2;
+        var r2;
+        var r1;
+        if ((x instanceof sc_Pair))
+            if ((y instanceof sc_Pair))
+                if ((((r1 = (x.car)), (r2 = (y.car)), (r1===r2))!== false))
+                    {
+                        (lst1 = (x.cdr));
+                        (lst2 = (y.cdr));
+                        while (true) {
+                            if ((lst1 === null))
+                                return (lst2 === null);
+                            else
+                                if ((lst2 === null))
+                                    return false;
+                                else
+                                    if (((is_term_equal_nboyer((lst1.car), (lst2.car)))!== false))
+                                        {
+                                            (lst1 = (lst1.cdr));
+                                            (lst2 = (lst2.cdr));
+                                        }
+                                    else
+                                        return false;
+                        }
+                    }
+                else
+                    return false;
+            else
+                return false;
+        else
+            return (sc_isEqual(x, y));
+    };
+    is_term_member_nboyer = function(x, lst) {
+        var x;
+        var lst;
+        while (true) {
+            if ((lst === null))
+                return false;
+            else
+                if (((is_term_equal_nboyer(x, (lst.car)))!== false))
+                    return true;
+                else
+                    (lst = (lst.cdr));
+        }
+    };
+    BgL_setupzd2boyerzd2 = function() {
+        var symbol_record;
+        var value;
+        var BgL_sc_symbolzd2record_16zd2;
+        var sym;
+        var sc_sym_17;
+        var term;
+        var lst;
+        var sc_term_18;
+        var sc_term_19;
+        {
+            (BgL_sc_za2symbolzd2recordszd2alistza2_2z00_nboyer = null);
+            (if_constructor_nboyer = (BgL_sc_symbolzd2ze3symbolzd2record_1ze3_nboyer("\u1E9Cif")));
+            (false_term_nboyer = ((sc_term_19 = (new sc_Pair("\u1E9Cf",null))), (!(sc_term_19 instanceof sc_Pair)?sc_term_19:(new sc_Pair((BgL_sc_symbolzd2ze3symbolzd2record_1ze3_nboyer((sc_term_19.car))), (translate_args_nboyer((sc_term_19.cdr))))))));
+            (true_term_nboyer = ((sc_term_18 = (new sc_Pair("\u1E9Ct",null))), (!(sc_term_18 instanceof sc_Pair)?sc_term_18:(new sc_Pair((BgL_sc_symbolzd2ze3symbolzd2record_1ze3_nboyer((sc_term_18.car))), (translate_args_nboyer((sc_term_18.cdr))))))));
+            (lst = sc_const_3_nboyer);
+            while (!(lst === null)) {
+                {
+                    (term = (lst.car));
+                    if (((term instanceof sc_Pair)&&(((term.car)==="\u1E9Cequal")&&((term.cdr.car) instanceof sc_Pair))))
+                        {
+                            (sc_sym_17 = ((term.cdr.car).car));
+                            (value = (new sc_Pair((!(term instanceof sc_Pair)?term:(new sc_Pair((BgL_sc_symbolzd2ze3symbolzd2record_1ze3_nboyer((term.car))), (translate_args_nboyer((term.cdr)))))), ((sym = ((term.cdr.car).car)), (BgL_sc_symbolzd2record_16zd2 = (BgL_sc_symbolzd2ze3symbolzd2record_1ze3_nboyer(sym))), (BgL_sc_symbolzd2record_16zd2[(1)])))));
+                            (symbol_record = (BgL_sc_symbolzd2ze3symbolzd2record_1ze3_nboyer(sc_sym_17)));
+                            (symbol_record[(1)] = value);
+                        }
+                    else
+                        (sc_error("ADD-LEMMA did not like term:  ", term));
+                    (lst = (lst.cdr));
+                }
+            }
+            return true;
+        }
+    };
+    BgL_testzd2boyerzd2 = function(n) {
+        var optrOpnd;
+        var term;
+        var sc_n_20;
+        var answer;
+        var sc_term_21;
+        var sc_term_22;
+        {
+            (rewrite_count_nboyer = (0));
+            (term = sc_const_4_nboyer);
+            (sc_n_20 = n);
+            while (!(sc_n_20=== 0)) {
+                {
+                    (term = (sc_list("\u1E9Cor", term, (new sc_Pair("\u1E9Cf",null)))));
+                    (--sc_n_20);
+                }
+            }
+            (sc_term_22 = term);
+            if (!(sc_term_22 instanceof sc_Pair))
+                (optrOpnd = sc_term_22);
+            else
+                (optrOpnd = (new sc_Pair((BgL_sc_symbolzd2ze3symbolzd2record_1ze3_nboyer((sc_term_22.car))), (translate_args_nboyer((sc_term_22.cdr))))));
+            (sc_term_21 = (apply_subst_nboyer(((const_nboyer === null)?null:(new sc_Pair((new sc_Pair((const_nboyer.car.car), (translate_term_nboyer((const_nboyer.car.cdr))))), (translate_alist_nboyer((const_nboyer.cdr)))))), optrOpnd)));
+            (answer = (tautologyp_nboyer((rewrite_nboyer(sc_term_21)), null, null)));
+            (sc_write(rewrite_count_nboyer));
+            (sc_display(" rewrites"));
+            (sc_newline());
+            if ((answer!== false))
+                return rewrite_count_nboyer;
+            else
+                return false;
+        }
+    };
+}
+/* Exported Variables */
+var BgL_parsezd2ze3nbzd2treesze3;
+var BgL_earleyzd2benchmarkzd2;
+var BgL_parsezd2ze3parsedzf3zc2;
+var test;
+var BgL_parsezd2ze3treesz31;
+var BgL_makezd2parserzd2;
+/* End Exports */
+
+var const_earley;
+{
+    (const_earley = (new sc_Pair((new sc_Pair("\u1E9Cs",(new sc_Pair((new sc_Pair("\u1E9Ca",null)),(new sc_Pair((new sc_Pair("\u1E9Cs",(new sc_Pair("\u1E9Cs",null)))),null)))))),null)));
+    BgL_makezd2parserzd2 = function(grammar, lexer) {
+        var i;
+        var parser_descr;
+        var def_loop;
+        var nb_nts;
+        var names;
+        var steps;
+        var predictors;
+        var enders;
+        var starters;
+        var nts;
+        var sc_names_1;
+        var sc_steps_2;
+        var sc_predictors_3;
+        var sc_enders_4;
+        var sc_starters_5;
+        var nb_confs;
+        var BgL_sc_defzd2loop_6zd2;
+        var BgL_sc_nbzd2nts_7zd2;
+        var sc_nts_8;
+        var BgL_sc_defzd2loop_9zd2;
+        var ind;
+        {
+            ind = function(nt, sc_nts_10) {
+                var i;
+                {
+                    (i = ((sc_nts_10.length)-(1)));
+                    while (true) {
+                        if ((i>=(0)))
+                            if ((sc_isEqual((sc_nts_10[i]), nt)))
+                                return i;
+                            else
+                                (--i);
+                        else
+                            return false;
+                    }
+                }
+            };
+            (sc_nts_8 = ((BgL_sc_defzd2loop_9zd2 = function(defs, sc_nts_11) {
+                var rule_loop;
+                var head;
+                var def;
+                return ((defs instanceof sc_Pair)?((def = (defs.car)), (head = (def.car)), (rule_loop = function(rules, sc_nts_12) {
+                    var nt;
+                    var l;
+                    var sc_nts_13;
+                    var rule;
+                    if ((rules instanceof sc_Pair))
+                        {
+                            (rule = (rules.car));
+                            (l = rule);
+                            (sc_nts_13 = sc_nts_12);
+                            while ((l instanceof sc_Pair)) {
+                                {
+                                    (nt = (l.car));
+                                    (l = (l.cdr));
+                                    (sc_nts_13 = (((sc_member(nt, sc_nts_13))!== false)?sc_nts_13:(new sc_Pair(nt, sc_nts_13))));
+                                }
+                            }
+                            return (rule_loop((rules.cdr), sc_nts_13));
+                        }
+                    else
+                        return (BgL_sc_defzd2loop_9zd2((defs.cdr), sc_nts_12));
+                }), (rule_loop((def.cdr), (((sc_member(head, sc_nts_11))!== false)?sc_nts_11:(new sc_Pair(head, sc_nts_11)))))):(sc_list2vector((sc_reverse(sc_nts_11)))));
+            }), (BgL_sc_defzd2loop_9zd2(grammar, null))));
+            (BgL_sc_nbzd2nts_7zd2 = (sc_nts_8.length));
+            (nb_confs = (((BgL_sc_defzd2loop_6zd2 = function(defs, BgL_sc_nbzd2confs_14zd2) {
+                var rule_loop;
+                var def;
+                return ((defs instanceof sc_Pair)?((def = (defs.car)), (rule_loop = function(rules, BgL_sc_nbzd2confs_15zd2) {
+                    var l;
+                    var BgL_sc_nbzd2confs_16zd2;
+                    var rule;
+                    if ((rules instanceof sc_Pair))
+                        {
+                            (rule = (rules.car));
+                            (l = rule);
+                            (BgL_sc_nbzd2confs_16zd2 = BgL_sc_nbzd2confs_15zd2);
+                            while ((l instanceof sc_Pair)) {
+                                {
+                                    (l = (l.cdr));
+                                    (++BgL_sc_nbzd2confs_16zd2);
+                                }
+                            }
+                            return (rule_loop((rules.cdr), (BgL_sc_nbzd2confs_16zd2+(1))));
+                        }
+                    else
+                        return (BgL_sc_defzd2loop_6zd2((defs.cdr), BgL_sc_nbzd2confs_15zd2));
+                }), (rule_loop((def.cdr), BgL_sc_nbzd2confs_14zd2))):BgL_sc_nbzd2confs_14zd2);
+            }), (BgL_sc_defzd2loop_6zd2(grammar, (0))))+BgL_sc_nbzd2nts_7zd2));
+            (sc_starters_5 = (sc_makeVector(BgL_sc_nbzd2nts_7zd2, null)));
+            (sc_enders_4 = (sc_makeVector(BgL_sc_nbzd2nts_7zd2, null)));
+            (sc_predictors_3 = (sc_makeVector(BgL_sc_nbzd2nts_7zd2, null)));
+            (sc_steps_2 = (sc_makeVector(nb_confs, false)));
+            (sc_names_1 = (sc_makeVector(nb_confs, false)));
+            (nts = sc_nts_8);
+            (starters = sc_starters_5);
+            (enders = sc_enders_4);
+            (predictors = sc_predictors_3);
+            (steps = sc_steps_2);
+            (names = sc_names_1);
+            (nb_nts = (sc_nts_8.length));
+            (i = (nb_nts-(1)));
+            while ((i>=(0))) {
+                {
+                    (sc_steps_2[i] = (i-nb_nts));
+                    (sc_names_1[i] = (sc_list((sc_nts_8[i]), (0))));
+                    (sc_enders_4[i] = (sc_list(i)));
+                    (--i);
+                }
+            }
+            def_loop = function(defs, conf) {
+                var rule_loop;
+                var head;
+                var def;
+                return ((defs instanceof sc_Pair)?((def = (defs.car)), (head = (def.car)), (rule_loop = function(rules, conf, rule_num) {
+                    var i;
+                    var sc_i_17;
+                    var nt;
+                    var l;
+                    var sc_conf_18;
+                    var sc_i_19;
+                    var rule;
+                    if ((rules instanceof sc_Pair))
+                        {
+                            (rule = (rules.car));
+                            (names[conf] = (sc_list(head, rule_num)));
+                            (sc_i_19 = (ind(head, nts)));
+                            (starters[sc_i_19] = (new sc_Pair(conf, (starters[sc_i_19]))));
+                            (l = rule);
+                            (sc_conf_18 = conf);
+                            while ((l instanceof sc_Pair)) {
+                                {
+                                    (nt = (l.car));
+                                    (steps[sc_conf_18] = (ind(nt, nts)));
+                                    (sc_i_17 = (ind(nt, nts)));
+                                    (predictors[sc_i_17] = (new sc_Pair(sc_conf_18, (predictors[sc_i_17]))));
+                                    (l = (l.cdr));
+                                    (++sc_conf_18);
+                                }
+                            }
+                            (steps[sc_conf_18] = ((ind(head, nts))-nb_nts));
+                            (i = (ind(head, nts)));
+                            (enders[i] = (new sc_Pair(sc_conf_18, (enders[i]))));
+                            return (rule_loop((rules.cdr), (sc_conf_18+(1)), (rule_num+(1))));
+                        }
+                    else
+                        return (def_loop((defs.cdr), conf));
+                }), (rule_loop((def.cdr), conf, (1)))):undefined);
+            };
+            (def_loop(grammar, (sc_nts_8.length)));
+            (parser_descr = [lexer, sc_nts_8, sc_starters_5, sc_enders_4, sc_predictors_3, sc_steps_2, sc_names_1]);
+            return function(input) {
+                var optrOpnd;
+                var sc_optrOpnd_20;
+                var sc_optrOpnd_21;
+                var sc_optrOpnd_22;
+                var loop1;
+                var BgL_sc_stateza2_23za2;
+                var toks;
+                var BgL_sc_nbzd2nts_24zd2;
+                var sc_steps_25;
+                var sc_enders_26;
+                var state_num;
+                var BgL_sc_statesza2_27za2;
+                var states;
+                var i;
+                var conf;
+                var l;
+                var tok_nts;
+                var sc_i_28;
+                var sc_i_29;
+                var l1;
+                var l2;
+                var tok;
+                var tail1129;
+                var L1125;
+                var goal_enders;
+                var BgL_sc_statesza2_30za2;
+                var BgL_sc_nbzd2nts_31zd2;
+                var BgL_sc_nbzd2confs_32zd2;
+                var nb_toks;
+                var goal_starters;
+                var sc_states_33;
+                var BgL_sc_nbzd2confs_34zd2;
+                var BgL_sc_nbzd2toks_35zd2;
+                var sc_toks_36;
+                var falseHead1128;
+                var sc_names_37;
+                var sc_steps_38;
+                var sc_predictors_39;
+                var sc_enders_40;
+                var sc_starters_41;
+                var sc_nts_42;
+                var lexer;
+                var sc_ind_43;
+                var make_states;
+                var BgL_sc_confzd2setzd2getza2_44za2;
+                var conf_set_merge_new_bang;
+                var conf_set_adjoin;
+                var BgL_sc_confzd2setzd2adjoinza2_45za2;
+                var BgL_sc_confzd2setzd2adjoinza2za2_46z00;
+                var conf_set_union;
+                var forw;
+                var is_parsed;
+                var deriv_trees;
+                var BgL_sc_derivzd2treesza2_47z70;
+                var nb_deriv_trees;
+                var BgL_sc_nbzd2derivzd2treesza2_48za2;
+                {
+                    sc_ind_43 = function(nt, sc_nts_49) {
+                        var i;
+                        {
+                            (i = ((sc_nts_49.length)-(1)));
+                            while (true) {
+                                if ((i>=(0)))
+                                    if ((sc_isEqual((sc_nts_49[i]), nt)))
+                                        return i;
+                                    else
+                                        (--i);
+                                else
+                                    return false;
+                            }
+                        }
+                    };
+                    make_states = function(BgL_sc_nbzd2toks_50zd2, BgL_sc_nbzd2confs_51zd2) {
+                        var v;
+                        var i;
+                        var sc_states_52;
+                        {
+                            (sc_states_52 = (sc_makeVector((BgL_sc_nbzd2toks_50zd2+(1)), false)));
+                            (i = BgL_sc_nbzd2toks_50zd2);
+                            while ((i>=(0))) {
+                                {
+                                    (v = (sc_makeVector((BgL_sc_nbzd2confs_51zd2+(1)), false)));
+                                    (v[(0)] = (-1));
+                                    (sc_states_52[i] = v);
+                                    (--i);
+                                }
+                            }
+                            return sc_states_52;
+                        }
+                    };
+                    BgL_sc_confzd2setzd2getza2_44za2 = function(state, BgL_sc_statezd2num_53zd2, sc_conf_54) {
+                        var conf_set;
+                        var BgL_sc_confzd2set_55zd2;
+                        return ((BgL_sc_confzd2set_55zd2 = (state[(sc_conf_54+(1))])), ((BgL_sc_confzd2set_55zd2!== false)?BgL_sc_confzd2set_55zd2:((conf_set = (sc_makeVector((BgL_sc_statezd2num_53zd2+(6)), false))), (conf_set[(1)] = (-3)), (conf_set[(2)] = (-1)), (conf_set[(3)] = (-1)), (conf_set[(4)] = (-1)), (state[(sc_conf_54+(1))] = conf_set), conf_set)));
+                    };
+                    conf_set_merge_new_bang = function(conf_set) {
+                        return ((conf_set[((conf_set[(1)])+(5))] = (conf_set[(4)])), (conf_set[(1)] = (conf_set[(3)])), (conf_set[(3)] = (-1)), (conf_set[(4)] = (-1)));
+                    };
+                    conf_set_adjoin = function(state, conf_set, sc_conf_56, i) {
+                        var tail;
+                        return ((tail = (conf_set[(3)])), (conf_set[(i+(5))] = (-1)), (conf_set[(tail+(5))] = i), (conf_set[(3)] = i), ((tail<(0))?((conf_set[(0)] = (state[(0)])), (state[(0)] = sc_conf_56)):undefined));
+                    };
+                    BgL_sc_confzd2setzd2adjoinza2_45za2 = function(sc_states_57, BgL_sc_statezd2num_58zd2, l, i) {
+                        var conf_set;
+                        var sc_conf_59;
+                        var l1;
+                        var state;
+                        {
+                            (state = (sc_states_57[BgL_sc_statezd2num_58zd2]));
+                            (l1 = l);
+                            while ((l1 instanceof sc_Pair)) {
+                                {
+                                    (sc_conf_59 = (l1.car));
+                                    (conf_set = (BgL_sc_confzd2setzd2getza2_44za2(state, BgL_sc_statezd2num_58zd2, sc_conf_59)));
+                                    if (((conf_set[(i+(5))])=== false))
+                                        {
+                                            (conf_set_adjoin(state, conf_set, sc_conf_59, i));
+                                            (l1 = (l1.cdr));
+                                        }
+                                    else
+                                        (l1 = (l1.cdr));
+                                }
+                            }
+                            return undefined;
+                        }
+                    };
+                    BgL_sc_confzd2setzd2adjoinza2za2_46z00 = function(sc_states_60, BgL_sc_statesza2_61za2, BgL_sc_statezd2num_62zd2, sc_conf_63, i) {
+                        var BgL_sc_confzd2setza2_64z70;
+                        var BgL_sc_stateza2_65za2;
+                        var conf_set;
+                        var state;
+                        return ((state = (sc_states_60[BgL_sc_statezd2num_62zd2])), ((((conf_set = (state[(sc_conf_63+(1))])), ((conf_set!== false)?(conf_set[(i+(5))]):false))!== false)?((BgL_sc_stateza2_65za2 = (BgL_sc_statesza2_61za2[BgL_sc_statezd2num_62zd2])), (BgL_sc_confzd2setza2_64z70 = (BgL_sc_confzd2setzd2getza2_44za2(BgL_sc_stateza2_65za2, BgL_sc_statezd2num_62zd2, sc_conf_63))), (((BgL_sc_confzd2setza2_64z70[(i+(5))])=== false)?(conf_set_adjoin(BgL_sc_stateza2_65za2, BgL_sc_confzd2setza2_64z70, sc_conf_63, i)):undefined), true):false));
+                    };
+                    conf_set_union = function(state, conf_set, sc_conf_66, other_set) {
+                        var i;
+                        {
+                            (i = (other_set[(2)]));
+                            while ((i>=(0))) {
+                                if (((conf_set[(i+(5))])=== false))
+                                    {
+                                        (conf_set_adjoin(state, conf_set, sc_conf_66, i));
+                                        (i = (other_set[(i+(5))]));
+                                    }
+                                else
+                                    (i = (other_set[(i+(5))]));
+                            }
+                            return undefined;
+                        }
+                    };
+                    forw = function(sc_states_67, BgL_sc_statezd2num_68zd2, sc_starters_69, sc_enders_70, sc_predictors_71, sc_steps_72, sc_nts_73) {
+                        var next_set;
+                        var next;
+                        var conf_set;
+                        var ender;
+                        var l;
+                        var starter_set;
+                        var starter;
+                        var sc_l_74;
+                        var sc_loop1_75;
+                        var head;
+                        var BgL_sc_confzd2set_76zd2;
+                        var BgL_sc_statezd2num_77zd2;
+                        var state;
+                        var sc_states_78;
+                        var preds;
+                        var BgL_sc_confzd2set_79zd2;
+                        var step;
+                        var sc_conf_80;
+                        var BgL_sc_nbzd2nts_81zd2;
+                        var sc_state_82;
+                        {
+                            (sc_state_82 = (sc_states_67[BgL_sc_statezd2num_68zd2]));
+                            (BgL_sc_nbzd2nts_81zd2 = (sc_nts_73.length));
+                            while (true) {
+                                {
+                                    (sc_conf_80 = (sc_state_82[(0)]));
+                                    if ((sc_conf_80>=(0)))
+                                        {
+                                            (step = (sc_steps_72[sc_conf_80]));
+                                            (BgL_sc_confzd2set_79zd2 = (sc_state_82[(sc_conf_80+(1))]));
+                                            (head = (BgL_sc_confzd2set_79zd2[(4)]));
+                                            (sc_state_82[(0)] = (BgL_sc_confzd2set_79zd2[(0)]));
+                                            (conf_set_merge_new_bang(BgL_sc_confzd2set_79zd2));
+                                            if ((step>=(0)))
+                                                {
+                                                    (sc_l_74 = (sc_starters_69[step]));
+                                                    while ((sc_l_74 instanceof sc_Pair)) {
+                                                        {
+                                                            (starter = (sc_l_74.car));
+                                                            (starter_set = (BgL_sc_confzd2setzd2getza2_44za2(sc_state_82, BgL_sc_statezd2num_68zd2, starter)));
+                                                            if (((starter_set[(BgL_sc_statezd2num_68zd2+(5))])=== false))
+                                                                {
+                                                                    (conf_set_adjoin(sc_state_82, starter_set, starter, BgL_sc_statezd2num_68zd2));
+                                                                    (sc_l_74 = (sc_l_74.cdr));
+                                                                }
+                                                            else
+                                                                (sc_l_74 = (sc_l_74.cdr));
+                                                        }
+                                                    }
+                                                    (l = (sc_enders_70[step]));
+                                                    while ((l instanceof sc_Pair)) {
+                                                        {
+                                                            (ender = (l.car));
+                                                            if ((((conf_set = (sc_state_82[(ender+(1))])), ((conf_set!== false)?(conf_set[(BgL_sc_statezd2num_68zd2+(5))]):false))!== false))
+                                                                {
+                                                                    (next = (sc_conf_80+(1)));
+                                                                    (next_set = (BgL_sc_confzd2setzd2getza2_44za2(sc_state_82, BgL_sc_statezd2num_68zd2, next)));
+                                                                    (conf_set_union(sc_state_82, next_set, next, BgL_sc_confzd2set_79zd2));
+                                                                    (l = (l.cdr));
+                                                                }
+                                                            else
+                                                                (l = (l.cdr));
+                                                        }
+                                                    }
+                                                }
+                                            else
+                                                {
+                                                    (preds = (sc_predictors_71[(step+BgL_sc_nbzd2nts_81zd2)]));
+                                                    (sc_states_78 = sc_states_67);
+                                                    (state = sc_state_82);
+                                                    (BgL_sc_statezd2num_77zd2 = BgL_sc_statezd2num_68zd2);
+                                                    (BgL_sc_confzd2set_76zd2 = BgL_sc_confzd2set_79zd2);
+                                                    sc_loop1_75 = function(l) {
+                                                        var sc_state_83;
+                                                        var BgL_sc_nextzd2set_84zd2;
+                                                        var sc_next_85;
+                                                        var pred_set;
+                                                        var i;
+                                                        var pred;
+                                                        if ((l instanceof sc_Pair))
+                                                            {
+                                                                (pred = (l.car));
+                                                                (i = head);
+                                                                while ((i>=(0))) {
+                                                                    {
+                                                                        (pred_set = ((sc_state_83 = (sc_states_78[i])), (sc_state_83[(pred+(1))])));
+                                                                        if ((pred_set!== false))
+                                                                            {
+                                                                                (sc_next_85 = (pred+(1)));
+                                                                                (BgL_sc_nextzd2set_84zd2 = (BgL_sc_confzd2setzd2getza2_44za2(state, BgL_sc_statezd2num_77zd2, sc_next_85)));
+                                                                                (conf_set_union(state, BgL_sc_nextzd2set_84zd2, sc_next_85, pred_set));
+                                                                            }
+                                                                        (i = (BgL_sc_confzd2set_76zd2[(i+(5))]));
+                                                                    }
+                                                                }
+                                                                return (sc_loop1_75((l.cdr)));
+                                                            }
+                                                        else
+                                                            return undefined;
+                                                    };
+                                                    (sc_loop1_75(preds));
+                                                }
+                                        }
+                                    else
+                                        return undefined;
+                                }
+                            }
+                        }
+                    };
+                    is_parsed = function(nt, i, j, sc_nts_86, sc_enders_87, sc_states_88) {
+                        var conf_set;
+                        var state;
+                        var sc_conf_89;
+                        var l;
+                        var BgL_sc_ntza2_90za2;
+                        {
+                            (BgL_sc_ntza2_90za2 = (sc_ind_43(nt, sc_nts_86)));
+                            if ((BgL_sc_ntza2_90za2!== false))
+                                {
+                                    (sc_nts_86.length);
+                                    (l = (sc_enders_87[BgL_sc_ntza2_90za2]));
+                                    while (true) {
+                                        if ((l instanceof sc_Pair))
+                                            {
+                                                (sc_conf_89 = (l.car));
+                                                if ((((state = (sc_states_88[j])), (conf_set = (state[(sc_conf_89+(1))])), ((conf_set!== false)?(conf_set[(i+(5))]):false))!== false))
+                                                    return true;
+                                                else
+                                                    (l = (l.cdr));
+                                            }
+                                        else
+                                            return false;
+                                    }
+                                }
+                            else
+                                return false;
+                        }
+                    };
+                    deriv_trees = function(sc_conf_91, i, j, sc_enders_92, sc_steps_93, sc_names_94, sc_toks_95, sc_states_96, BgL_sc_nbzd2nts_97zd2) {
+                        var sc_loop1_98;
+                        var prev;
+                        var name;
+                        return ((name = (sc_names_94[sc_conf_91])), ((name!== false)?((sc_conf_91<BgL_sc_nbzd2nts_97zd2)?(sc_list((sc_list(name, ((sc_toks_95[i]).car))))):(sc_list((sc_list(name))))):((prev = (sc_conf_91-(1))), (sc_loop1_98 = function(l1, l2) {
+                            var loop2;
+                            var ender_set;
+                            var state;
+                            var ender;
+                            var l1;
+                            var l2;
+                            while (true) {
+                                if ((l1 instanceof sc_Pair))
+                                    {
+                                        (ender = (l1.car));
+                                        (ender_set = ((state = (sc_states_96[j])), (state[(ender+(1))])));
+                                        if ((ender_set!== false))
+                                            {
+                                                loop2 = function(k, l2) {
+                                                    var loop3;
+                                                    var ender_trees;
+                                                    var prev_trees;
+                                                    var conf_set;
+                                                    var sc_state_99;
+                                                    var k;
+                                                    var l2;
+                                                    while (true) {
+                                                        if ((k>=(0)))
+                                                            if (((k>=i)&&(((sc_state_99 = (sc_states_96[k])), (conf_set = (sc_state_99[(prev+(1))])), ((conf_set!== false)?(conf_set[(i+(5))]):false))!== false)))
+                                                                {
+                                                                    (prev_trees = (deriv_trees(prev, i, k, sc_enders_92, sc_steps_93, sc_names_94, sc_toks_95, sc_states_96, BgL_sc_nbzd2nts_97zd2)));
+                                                                    (ender_trees = (deriv_trees(ender, k, j, sc_enders_92, sc_steps_93, sc_names_94, sc_toks_95, sc_states_96, BgL_sc_nbzd2nts_97zd2)));
+                                                                    loop3 = function(l3, l2) {
+                                                                        var l4;
+                                                                        var sc_l2_100;
+                                                                        var ender_tree;
+                                                                        if ((l3 instanceof sc_Pair))
+                                                                            {
+                                                                                (ender_tree = (sc_list((l3.car))));
+                                                                                (l4 = prev_trees);
+                                                                                (sc_l2_100 = l2);
+                                                                                while ((l4 instanceof sc_Pair)) {
+                                                                                    {
+                                                                                        (sc_l2_100 = (new sc_Pair((sc_append((l4.car), ender_tree)), sc_l2_100)));
+                                                                                        (l4 = (l4.cdr));
+                                                                                    }
+                                                                                }
+                                                                                return (loop3((l3.cdr), sc_l2_100));
+                                                                            }
+                                                                        else
+                                                                            return (loop2((ender_set[(k+(5))]), l2));
+                                                                    };
+                                                                    return (loop3(ender_trees, l2));
+                                                                }
+                                                            else
+                                                                (k = (ender_set[(k+(5))]));
+                                                        else
+                                                            return (sc_loop1_98((l1.cdr), l2));
+                                                    }
+                                                };
+                                                return (loop2((ender_set[(2)]), l2));
+                                            }
+                                        else
+                                            (l1 = (l1.cdr));
+                                    }
+                                else
+                                    return l2;
+                            }
+                        }), (sc_loop1_98((sc_enders_92[(sc_steps_93[prev])]), null)))));
+                    };
+                    BgL_sc_derivzd2treesza2_47z70 = function(nt, i, j, sc_nts_101, sc_enders_102, sc_steps_103, sc_names_104, sc_toks_105, sc_states_106) {
+                        var conf_set;
+                        var state;
+                        var sc_conf_107;
+                        var l;
+                        var trees;
+                        var BgL_sc_nbzd2nts_108zd2;
+                        var BgL_sc_ntza2_109za2;
+                        {
+                            (BgL_sc_ntza2_109za2 = (sc_ind_43(nt, sc_nts_101)));
+                            if ((BgL_sc_ntza2_109za2!== false))
+                                {
+                                    (BgL_sc_nbzd2nts_108zd2 = (sc_nts_101.length));
+                                    (l = (sc_enders_102[BgL_sc_ntza2_109za2]));
+                                    (trees = null);
+                                    while ((l instanceof sc_Pair)) {
+                                        {
+                                            (sc_conf_107 = (l.car));
+                                            if ((((state = (sc_states_106[j])), (conf_set = (state[(sc_conf_107+(1))])), ((conf_set!== false)?(conf_set[(i+(5))]):false))!== false))
+                                                {
+                                                    (l = (l.cdr));
+                                                    (trees = (sc_append((deriv_trees(sc_conf_107, i, j, sc_enders_102, sc_steps_103, sc_names_104, sc_toks_105, sc_states_106, BgL_sc_nbzd2nts_108zd2)), trees)));
+                                                }
+                                            else
+                                                (l = (l.cdr));
+                                        }
+                                    }
+                                    return trees;
+                                }
+                            else
+                                return false;
+                        }
+                    };
+                    nb_deriv_trees = function(sc_conf_110, i, j, sc_enders_111, sc_steps_112, sc_toks_113, sc_states_114, BgL_sc_nbzd2nts_115zd2) {
+                        var sc_loop1_116;
+                        var tmp1124;
+                        var prev;
+                        return ((prev = (sc_conf_110-(1))), ((((tmp1124 = (sc_conf_110<BgL_sc_nbzd2nts_115zd2)), ((tmp1124!== false)?tmp1124:((sc_steps_112[prev])<(0))))!== false)?(1):((sc_loop1_116 = function(l, sc_n_118) {
+                            var nb_ender_trees;
+                            var nb_prev_trees;
+                            var conf_set;
+                            var state;
+                            var k;
+                            var n;
+                            var ender_set;
+                            var sc_state_117;
+                            var ender;
+                            var l;
+                            var sc_n_118;
+                            while (true) {
+                                if ((l instanceof sc_Pair))
+                                    {
+                                        (ender = (l.car));
+                                        (ender_set = ((sc_state_117 = (sc_states_114[j])), (sc_state_117[(ender+(1))])));
+                                        if ((ender_set!== false))
+                                            {
+                                                (k = (ender_set[(2)]));
+                                                (n = sc_n_118);
+                                                while ((k>=(0))) {
+                                                    if (((k>=i)&&(((state = (sc_states_114[k])), (conf_set = (state[(prev+(1))])), ((conf_set!== false)?(conf_set[(i+(5))]):false))!== false)))
+                                                        {
+                                                            (nb_prev_trees = (nb_deriv_trees(prev, i, k, sc_enders_111, sc_steps_112, sc_toks_113, sc_states_114, BgL_sc_nbzd2nts_115zd2)));
+                                                            (nb_ender_trees = (nb_deriv_trees(ender, k, j, sc_enders_111, sc_steps_112, sc_toks_113, sc_states_114, BgL_sc_nbzd2nts_115zd2)));
+                                                            (k = (ender_set[(k+(5))]));
+                                                            (n +=(nb_prev_trees*nb_ender_trees));
+                                                        }
+                                                    else
+                                                        (k = (ender_set[(k+(5))]));
+                                                }
+                                                return (sc_loop1_116((l.cdr), n));
+                                            }
+                                        else
+                                            (l = (l.cdr));
+                                    }
+                                else
+                                    return sc_n_118;
+                            }
+                        }), (sc_loop1_116((sc_enders_111[(sc_steps_112[prev])]), (0))))));
+                    };
+                    BgL_sc_nbzd2derivzd2treesza2_48za2 = function(nt, i, j, sc_nts_119, sc_enders_120, sc_steps_121, sc_toks_122, sc_states_123) {
+                        var conf_set;
+                        var state;
+                        var sc_conf_124;
+                        var l;
+                        var nb_trees;
+                        var BgL_sc_nbzd2nts_125zd2;
+                        var BgL_sc_ntza2_126za2;
+                        {
+                            (BgL_sc_ntza2_126za2 = (sc_ind_43(nt, sc_nts_119)));
+                            if ((BgL_sc_ntza2_126za2!== false))
+                                {
+                                    (BgL_sc_nbzd2nts_125zd2 = (sc_nts_119.length));
+                                    (l = (sc_enders_120[BgL_sc_ntza2_126za2]));
+                                    (nb_trees = (0));
+                                    while ((l instanceof sc_Pair)) {
+                                        {
+                                            (sc_conf_124 = (l.car));
+                                            if ((((state = (sc_states_123[j])), (conf_set = (state[(sc_conf_124+(1))])), ((conf_set!== false)?(conf_set[(i+(5))]):false))!== false))
+                                                {
+                                                    (l = (l.cdr));
+                                                    (nb_trees = ((nb_deriv_trees(sc_conf_124, i, j, sc_enders_120, sc_steps_121, sc_toks_122, sc_states_123, BgL_sc_nbzd2nts_125zd2))+nb_trees));
+                                                }
+                                            else
+                                                (l = (l.cdr));
+                                        }
+                                    }
+                                    return nb_trees;
+                                }
+                            else
+                                return false;
+                        }
+                    };
+                    (lexer = (parser_descr[(0)]));
+                    (sc_nts_42 = (parser_descr[(1)]));
+                    (sc_starters_41 = (parser_descr[(2)]));
+                    (sc_enders_40 = (parser_descr[(3)]));
+                    (sc_predictors_39 = (parser_descr[(4)]));
+                    (sc_steps_38 = (parser_descr[(5)]));
+                    (sc_names_37 = (parser_descr[(6)]));
+                    (falseHead1128 = (new sc_Pair(null, null)));
+                    (L1125 = (lexer(input)));
+                    (tail1129 = falseHead1128);
+                    while (!(L1125 === null)) {
+                        {
+                            (tok = (L1125.car));
+                            (l1 = (tok.cdr));
+                            (l2 = null);
+                            while ((l1 instanceof sc_Pair)) {
+                                {
+                                    (sc_i_29 = (sc_ind_43((l1.car), sc_nts_42)));
+                                    if ((sc_i_29!== false))
+                                        {
+                                            (l1 = (l1.cdr));
+                                            (l2 = (new sc_Pair(sc_i_29, l2)));
+                                        }
+                                    else
+                                        (l1 = (l1.cdr));
+                                }
+                            }
+                            (sc_optrOpnd_22 = (new sc_Pair((tok.car), (sc_reverse(l2)))));
+                            (sc_optrOpnd_21 = (new sc_Pair(sc_optrOpnd_22, null)));
+                            (tail1129.cdr = sc_optrOpnd_21);
+                            (tail1129 = (tail1129.cdr));
+                            (L1125 = (L1125.cdr));
+                        }
+                    }
+                    (sc_optrOpnd_20 = (falseHead1128.cdr));
+                    (sc_toks_36 = (sc_list2vector(sc_optrOpnd_20)));
+                    (BgL_sc_nbzd2toks_35zd2 = (sc_toks_36.length));
+                    (BgL_sc_nbzd2confs_34zd2 = (sc_steps_38.length));
+                    (sc_states_33 = (make_states(BgL_sc_nbzd2toks_35zd2, BgL_sc_nbzd2confs_34zd2)));
+                    (goal_starters = (sc_starters_41[(0)]));
+                    (BgL_sc_confzd2setzd2adjoinza2_45za2(sc_states_33, (0), goal_starters, (0)));
+                    (forw(sc_states_33, (0), sc_starters_41, sc_enders_40, sc_predictors_39, sc_steps_38, sc_nts_42));
+                    (sc_i_28 = (0));
+                    while ((sc_i_28<BgL_sc_nbzd2toks_35zd2)) {
+                        {
+                            (tok_nts = ((sc_toks_36[sc_i_28]).cdr));
+                            (BgL_sc_confzd2setzd2adjoinza2_45za2(sc_states_33, (sc_i_28+(1)), tok_nts, sc_i_28));
+                            (forw(sc_states_33, (sc_i_28+(1)), sc_starters_41, sc_enders_40, sc_predictors_39, sc_steps_38, sc_nts_42));
+                            (++sc_i_28);
+                        }
+                    }
+                    (nb_toks = (sc_toks_36.length));
+                    (BgL_sc_nbzd2confs_32zd2 = (sc_steps_38.length));
+                    (BgL_sc_nbzd2nts_31zd2 = (sc_nts_42.length));
+                    (BgL_sc_statesza2_30za2 = (make_states(nb_toks, BgL_sc_nbzd2confs_32zd2)));
+                    (goal_enders = (sc_enders_40[(0)]));
+                    (l = goal_enders);
+                    while ((l instanceof sc_Pair)) {
+                        {
+                            (conf = (l.car));
+                            (BgL_sc_confzd2setzd2adjoinza2za2_46z00(sc_states_33, BgL_sc_statesza2_30za2, nb_toks, conf, (0)));
+                            (l = (l.cdr));
+                        }
+                    }
+                    (i = nb_toks);
+                    while ((i>=(0))) {
+                        {
+                            (states = sc_states_33);
+                            (BgL_sc_statesza2_27za2 = BgL_sc_statesza2_30za2);
+                            (state_num = i);
+                            (sc_enders_26 = sc_enders_40);
+                            (sc_steps_25 = sc_steps_38);
+                            (BgL_sc_nbzd2nts_24zd2 = BgL_sc_nbzd2nts_31zd2);
+                            (toks = sc_toks_36);
+                            (BgL_sc_stateza2_23za2 = (BgL_sc_statesza2_30za2[i]));
+                            loop1 = function() {
+                                var sc_loop1_127;
+                                var prev;
+                                var BgL_sc_statesza2_128za2;
+                                var sc_states_129;
+                                var j;
+                                var i;
+                                var sc_i_130;
+                                var head;
+                                var conf_set;
+                                var sc_conf_131;
+                                {
+                                    (sc_conf_131 = (BgL_sc_stateza2_23za2[(0)]));
+                                    if ((sc_conf_131>=(0)))
+                                        {
+                                            (conf_set = (BgL_sc_stateza2_23za2[(sc_conf_131+(1))]));
+                                            (head = (conf_set[(4)]));
+                                            (BgL_sc_stateza2_23za2[(0)] = (conf_set[(0)]));
+                                            (conf_set_merge_new_bang(conf_set));
+                                            (sc_i_130 = head);
+                                            while ((sc_i_130>=(0))) {
+                                                {
+                                                    (i = sc_i_130);
+                                                    (j = state_num);
+                                                    (sc_states_129 = states);
+                                                    (BgL_sc_statesza2_128za2 = BgL_sc_statesza2_27za2);
+                                                    (prev = (sc_conf_131-(1)));
+                                                    if (((sc_conf_131>=BgL_sc_nbzd2nts_24zd2)&&((sc_steps_25[prev])>=(0))))
+                                                        {
+                                                            sc_loop1_127 = function(l) {
+                                                                var k;
+                                                                var ender_set;
+                                                                var state;
+                                                                var ender;
+                                                                var l;
+                                                                while (true) {
+                                                                    if ((l instanceof sc_Pair))
+                                                                        {
+                                                                            (ender = (l.car));
+                                                                            (ender_set = ((state = (sc_states_129[j])), (state[(ender+(1))])));
+                                                                            if ((ender_set!== false))
+                                                                                {
+                                                                                    (k = (ender_set[(2)]));
+                                                                                    while ((k>=(0))) {
+                                                                                        {
+                                                                                            if ((k>=i))
+                                                                                                if (((BgL_sc_confzd2setzd2adjoinza2za2_46z00(sc_states_129, BgL_sc_statesza2_128za2, k, prev, i))!== false))
+                                                                                                    (BgL_sc_confzd2setzd2adjoinza2za2_46z00(sc_states_129, BgL_sc_statesza2_128za2, j, ender, k));
+                                                                                            (k = (ender_set[(k+(5))]));
+                                                                                        }
+                                                                                    }
+                                                                                    return (sc_loop1_127((l.cdr)));
+                                                                                }
+                                                                            else
+                                                                                (l = (l.cdr));
+                                                                        }
+                                                                    else
+                                                                        return undefined;
+                                                                }
+                                                            };
+                                                            (sc_loop1_127((sc_enders_26[(sc_steps_25[prev])])));
+                                                        }
+                                                    (sc_i_130 = (conf_set[(sc_i_130+(5))]));
+                                                }
+                                            }
+                                            return (loop1());
+                                        }
+                                    else
+                                        return undefined;
+                                }
+                            };
+                            (loop1());
+                            (--i);
+                        }
+                    }
+                    (optrOpnd = BgL_sc_statesza2_30za2);
+                    return [sc_nts_42, sc_starters_41, sc_enders_40, sc_predictors_39, sc_steps_38, sc_names_37, sc_toks_36, optrOpnd, is_parsed, BgL_sc_derivzd2treesza2_47z70, BgL_sc_nbzd2derivzd2treesza2_48za2];
+                }
+            };
+        }
+    };
+    BgL_parsezd2ze3parsedzf3zc2 = function(parse, nt, i, j) {
+        var is_parsed;
+        var states;
+        var enders;
+        var nts;
+        return ((nts = (parse[(0)])), (enders = (parse[(2)])), (states = (parse[(7)])), (is_parsed = (parse[(8)])), (is_parsed(nt, i, j, nts, enders, states)));
+    };
+    BgL_parsezd2ze3treesz31 = function(parse, nt, i, j) {
+        var BgL_sc_derivzd2treesza2_132z70;
+        var states;
+        var toks;
+        var names;
+        var steps;
+        var enders;
+        var nts;
+        return ((nts = (parse[(0)])), (enders = (parse[(2)])), (steps = (parse[(4)])), (names = (parse[(5)])), (toks = (parse[(6)])), (states = (parse[(7)])), (BgL_sc_derivzd2treesza2_132z70 = (parse[(9)])), (BgL_sc_derivzd2treesza2_132z70(nt, i, j, nts, enders, steps, names, toks, states)));
+    };
+    BgL_parsezd2ze3nbzd2treesze3 = function(parse, nt, i, j) {
+        var BgL_sc_nbzd2derivzd2treesza2_133za2;
+        var states;
+        var toks;
+        var steps;
+        var enders;
+        var nts;
+        return ((nts = (parse[(0)])), (enders = (parse[(2)])), (steps = (parse[(4)])), (toks = (parse[(6)])), (states = (parse[(7)])), (BgL_sc_nbzd2derivzd2treesza2_133za2 = (parse[(10)])), (BgL_sc_nbzd2derivzd2treesza2_133za2(nt, i, j, nts, enders, steps, toks, states)));
+    };
+    test = function(k) {
+        var x;
+        var p;
+        return ((p = (BgL_makezd2parserzd2(const_earley, function(l) {
+            var sc_x_134;
+            var tail1134;
+            var L1130;
+            var falseHead1133;
+            {
+                (falseHead1133 = (new sc_Pair(null, null)));
+                (tail1134 = falseHead1133);
+                (L1130 = l);
+                while (!(L1130 === null)) {
+                    {
+                        (tail1134.cdr = (new sc_Pair(((sc_x_134 = (L1130.car)), (sc_list(sc_x_134, sc_x_134))), null)));
+                        (tail1134 = (tail1134.cdr));
+                        (L1130 = (L1130.cdr));
+                    }
+                }
+                return (falseHead1133.cdr);
+            }
+        }))), (x = (p((sc_vector2list((sc_makeVector(k, "\u1E9Ca"))))))), (sc_length((BgL_parsezd2ze3treesz31(x, "\u1E9Cs", (0), k)))));
+    };
+    BgL_earleyzd2benchmarkzd2 = function() {
+        var args = null;
+        for (var sc_tmp = arguments.length - 1; sc_tmp >= 0; sc_tmp--) {
+            args = sc_cons(arguments[sc_tmp], args);
+        }
+        var k;
+        return ((k = ((args === null)?(7):(args.car))), (BgL_runzd2benchmarkzd2("earley", (1), function() {
+            return (test(k));
+        }, function(result) {
+            return ((sc_display(result)), (sc_newline()), result == 132);
+        })));
+    };
+}
+
+
+/************* END OF GENERATED CODE *************/
+// Invoke this function to run a benchmark.
+// The first argument is a string identifying the benchmark.
+// The second argument is the number of times to run the benchmark.
+// The third argument is a function that runs the benchmark.
+// The fourth argument is a unary function that warns if the result
+// returned by the benchmark is incorrect.
+//
+// Example:
+// RunBenchmark("new Array()",
+//              1,
+//              function () { new Array(1000000); }
+//              function (v) {
+//                return (v instanceof Array) && (v.length == 1000000);
+//              });
+
+SC_DEFAULT_OUT = new sc_GenericOutputPort(function(s) {});
+SC_ERROR_OUT = SC_DEFAULT_OUT;
+
+function RunBenchmark(name, count, run, warn) {
+  for (var n = 0; n < count; ++n) {
+    result = run();
+    if (!warn(result)) {
+      throw new Error("Earley or Boyer did incorrect number of rewrites");
+    }
+  }
+}
+
+var BgL_runzd2benchmarkzd2 = RunBenchmark;
diff --git a/suite/cts/deviceTests/browserbench/assets/octane/gbemu.js b/suite/cts/deviceTests/browserbench/assets/octane/gbemu.js
new file mode 100644
index 0000000..5e98592
--- /dev/null
+++ b/suite/cts/deviceTests/browserbench/assets/octane/gbemu.js
@@ -0,0 +1,11108 @@
+// Portions copyright 2012 Google, Inc
+
+// Copyright (C) 2010 - 2012 Grant Galitz
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License version 2 as
+// published by the Free Software Foundation.
+// The full license is available at http://www.gnu.org/licenses/gpl.html
+// This program is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+
+// The code has been adapted for use as a benchmark by Google.
+
+var GameboyBenchmark = new BenchmarkSuite('Gameboy', 18000000,
+                                          [new Benchmark('Gameboy',
+                                                         runGameboy,
+                                                         setupGameboy,
+                                                         tearDownGameboy,
+                                                         4)]);
+
+var decoded_gameboy_rom = null;
+
+function setupGameboy() {
+
+  // Check if all the types required by the code are supported.
+  // If not, throw exception and quit.
+  if (!(typeof Uint8Array != "undefined" &&
+      typeof Int8Array != "undefined" &&
+      typeof Float32Array != "undefined" &&
+      typeof Int32Array != "undefined") ) {
+    throw "TypedArrayUnsupported";
+  }
+  decoded_gameboy_rom = base64_decode(gameboy_rom);
+  rom = null;
+}
+
+function runGameboy() {
+  start(new GameBoyCanvas(), decoded_gameboy_rom);
+
+  gameboy.instructions = 0;
+  gameboy.totalInstructions = 250000;
+
+  while (gameboy.instructions <= gameboy.totalInstructions) {
+    gameboy.run();
+    GameBoyAudioNode.run();
+  }
+
+  resetGlobalVariables();
+}
+
+function tearDownGameboy() {
+  decoded_gameboy_rom = null;
+  expectedGameboyStateStr = null;
+}
+
+var expectedGameboyStateStr =
+  '{"registerA":160,"registerB":255,"registerC":255,"registerE":11,' +
+  '"registersHL":51600,"programCounter":24309,"stackPointer":49706,' +
+  '"sumROM":10171578,"sumMemory":3435856,"sumMBCRam":234598,"sumVRam":0}';
+
+// Start of browser emulation.
+
+GameBoyWindow = { };
+
+function GameBoyContext() {
+  this.createBuffer = function() {
+    return new Buffer();
+  }
+  this.createImageData = function (w, h) {
+    var result = {};
+    result.data = new Uint8Array(w * h);
+    return result;
+  }
+  this.putImageData = function (buffer, x, y) {
+    var sum = 0;
+    for (var i = 0; i < buffer.data.length; i++) {
+      sum += i * buffer.data[i];
+      sum = sum % 1000;
+    }
+  }
+  this.drawImage = function () { }
+};
+
+function GameBoyCanvas() {
+  this.getContext = function() {
+    return new GameBoyContext();
+  }
+  this.width = 160;
+  this.height = 144;
+  this.style = { visibility: "visibile" };
+}
+
+function cout(message, colorIndex) {
+}
+
+function clear_terminal() {
+}
+
+var GameBoyAudioNode = {
+  bufferSize : 0,
+  onaudioprocess : null ,
+  connect : function () {},
+  run: function() {
+    var event = {outputBuffer : this.outputBuffer};
+    this.onaudioprocess(event);
+  }
+};
+
+function GameBoyAudioContext () {
+  this.createBufferSource = function() {
+    return { noteOn : function () {}, connect : function() {}};
+  }
+  this.sampleRate = 48000;
+  this.destination = {}
+  this.createBuffer = function (channels, len, sampleRate) {
+    return { gain : 1,
+             numberOfChannels : 1,
+             length : 1,
+             duration : 0.000020833333110203966,
+             sampleRate : 48000}
+  }
+  this.createJavaScriptNode = function (bufferSize, inputChannels, outputChannels) {
+    GameBoyAudioNode.bufferSize = bufferSize;
+    GameBoyAudioNode.outputBuffer = {
+        getChannelData : function (i) {return this.channelData[i];},
+        channelData    : []
+    };
+    for (var i = 0; i < outputChannels; i++) {
+      GameBoyAudioNode.outputBuffer.channelData[i] = new Float32Array(bufferSize);
+    }
+    return GameBoyAudioNode;
+  }
+}
+
+var mock_date_time_counter = 0;
+
+function new_Date() {
+  return {
+    getTime: function() {
+      mock_date_time_counter += 16;
+      return mock_date_time_counter;
+    }
+  };
+}
+
+// End of browser emulation.
+
+// Start of helper functions.
+
+function checkFinalState() {
+  function sum(a) {
+    var result = 0;
+    for (var i = 0; i < a.length; i++) {
+      result += a[i];
+    }
+    return result;
+  }
+  var state = {
+    registerA: gameboy.registerA,
+    registerB: gameboy.registerB,
+    registerC: gameboy.registerC,
+    registerE: gameboy.registerE,
+    registerF: gameboy.registerF,
+    registersHL: gameboy.registersHL,
+    programCounter: gameboy.programCounter,
+    stackPointer: gameboy.stackPointer,
+    sumROM : sum(gameboy.fromTypedArray(gameboy.ROM)),
+    sumMemory: sum(gameboy.fromTypedArray(gameboy.memory)),
+    sumMBCRam: sum(gameboy.fromTypedArray(gameboy.MBCRam)),
+    sumVRam: sum(gameboy.fromTypedArray(gameboy.VRam))
+  }
+  var stateStr = JSON.stringify(state);
+  if (typeof expectedGameboyStateStr != "undefined") {
+    if (stateStr != expectedGameboyStateStr) {
+      alert("Incorrect final state of processor:\n" +
+            " actual   " + stateStr + "\n" +
+            " expected " + expectedGameboyStateStr);
+    }
+  } else {
+    alert(stateStr);
+  }
+}
+
+
+function resetGlobalVariables () {
+  //Audio API Event Handler:
+  audioContextHandle = null;
+  audioNode = null;
+  audioSource = null;
+  launchedContext = false;
+  audioContextSampleBuffer = [];
+  resampled = [];
+  webAudioMinBufferSize = 15000;
+  webAudioMaxBufferSize = 25000;
+  webAudioActualSampleRate = 44100;
+  XAudioJSSampleRate = 0;
+  webAudioMono = false;
+  XAudioJSVolume = 1;
+  resampleControl = null;
+  audioBufferSize = 0;
+  resampleBufferStart = 0;
+  resampleBufferEnd = 0;
+  resampleBufferSize = 2;
+
+  gameboy = null;           //GameBoyCore object.
+  gbRunInterval = null;       //GameBoyCore Timer
+}
+
+
+// End of helper functions.
+
+// Original code from Grant Galitz follows.
+// Modifications by Google are marked in comments.
+
+// Start of js/other/base64.js file.
+
+var toBase64 = ["A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z",
+  "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z",
+  "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "+" , "/", "="];
+var fromBase64 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";
+function base64(data) {
+  try {
+    // The following line was modified for benchmarking:
+    var base64 = GameBoyWindow.btoa(data);  //Use this native function when it's available, as it's a magnitude faster than the non-native code below.
+  }
+  catch (error) {
+    //Defaulting to non-native base64 encoding...
+    var base64 = "";
+    var dataLength = data.length;
+    if (dataLength > 0) {
+      var bytes = [0, 0, 0];
+      var index = 0;
+      var remainder = dataLength % 3;
+      while (data.length % 3 > 0) {
+        //Make sure we don't do fuzzy math in the next loop...
+        data[data.length] = " ";
+      }
+      while (index < dataLength) {
+        //Keep this loop small for speed.
+        bytes = [data.charCodeAt(index++) & 0xFF, data.charCodeAt(index++) & 0xFF, data.charCodeAt(index++) & 0xFF];
+        base64 += toBase64[bytes[0] >> 2] + toBase64[((bytes[0] & 0x3) << 4) | (bytes[1] >> 4)] + toBase64[((bytes[1] & 0xF) << 2) | (bytes[2] >> 6)] + toBase64[bytes[2] & 0x3F];
+      }
+      if (remainder > 0) {
+        //Fill in the padding and recalulate the trailing six-bit group...
+        base64[base64.length - 1] = "=";
+        if (remainder == 2) {
+          base64[base64.length - 2] = "=";
+          base64[base64.length - 3] = toBase64[(bytes[0] & 0x3) << 4];
+        }
+        else {
+          base64[base64.length - 2] = toBase64[(bytes[1] & 0xF) << 2];
+        }
+      }
+    }
+  }
+  return base64;
+}
+function base64_decode(data) {
+  try {
+    // The following line was modified for benchmarking:
+    var decode64 = GameBoyWindow.atob(data);  //Use this native function when it's available, as it's a magnitude faster than the non-native code below.
+  }
+  catch (error) {
+    //Defaulting to non-native base64 decoding...
+    var decode64 = "";
+    var dataLength = data.length;
+    if (dataLength > 3 && dataLength % 4 == 0) {
+      var sixbits = [0, 0, 0, 0];  //Declare this out of the loop, to speed up the ops.
+      var index = 0;
+      while (index < dataLength) {
+        //Keep this loop small for speed.
+        sixbits = [fromBase64.indexOf(data.charAt(index++)), fromBase64.indexOf(data.charAt(index++)), fromBase64.indexOf(data.charAt(index++)), fromBase64.indexOf(data.charAt(index++))];
+        decode64 += String.fromCharCode((sixbits[0] << 2) | (sixbits[1] >> 4)) + String.fromCharCode(((sixbits[1] & 0x0F) << 4) | (sixbits[2] >> 2)) + String.fromCharCode(((sixbits[2] & 0x03) << 6) | sixbits[3]);
+      }
+      //Check for the '=' character after the loop, so we don't hose it up.
+      if (sixbits[3] >= 0x40) {
+        decode64.length -= 1;
+        if (sixbits[2] >= 0x40) {
+          decode64.length -= 1;
+        }
+      }
+    }
+  }
+  return decode64;
+}
+function to_little_endian_dword(str) {
+  return to_little_endian_word(str) + String.fromCharCode((str >> 16) & 0xFF, (str >> 24) & 0xFF);
+}
+function to_little_endian_word(str) {
+  return to_byte(str) + String.fromCharCode((str >> 8) & 0xFF);
+}
+function to_byte(str) {
+  return String.fromCharCode(str & 0xFF);
+}
+function arrayToBase64(arrayIn) {
+  var binString = "";
+  var length = arrayIn.length;
+  for (var index = 0; index < length; ++index) {
+    if (typeof arrayIn[index] == "number") {
+      binString += String.fromCharCode(arrayIn[index]);
+    }
+  }
+  return base64(binString);
+}
+function base64ToArray(b64String) {
+  var binString = base64_decode(b64String);
+  var outArray = [];
+  var length = binString.length;
+  for (var index = 0; index < length;) {
+    outArray.push(binString.charCodeAt(index++) & 0xFF);
+  }
+  return outArray;
+}
+
+// End of js/other/base64.js file.
+
+// Start of js/other/resampler.js file.
+
+//JavaScript Audio Resampler (c) 2011 - Grant Galitz
+function Resampler(fromSampleRate, toSampleRate, channels, outputBufferSize, noReturn) {
+  this.fromSampleRate = fromSampleRate;
+  this.toSampleRate = toSampleRate;
+  this.channels = channels | 0;
+  this.outputBufferSize = outputBufferSize;
+  this.noReturn = !!noReturn;
+  this.initialize();
+}
+Resampler.prototype.initialize = function () {
+  //Perform some checks:
+  if (this.fromSampleRate > 0 && this.toSampleRate > 0 && this.channels > 0) {
+    if (this.fromSampleRate == this.toSampleRate) {
+      //Setup a resampler bypass:
+      this.resampler = this.bypassResampler;    //Resampler just returns what was passed through.
+      this.ratioWeight = 1;
+    }
+    else {
+      //Setup the interpolation resampler:
+      this.compileInterpolationFunction();
+      this.resampler = this.interpolate;      //Resampler is a custom quality interpolation algorithm.
+      this.ratioWeight = this.fromSampleRate / this.toSampleRate;
+      this.tailExists = false;
+      this.lastWeight = 0;
+      this.initializeBuffers();
+    }
+  }
+  else {
+    throw(new Error("Invalid settings specified for the resampler."));
+  }
+}
+Resampler.prototype.compileInterpolationFunction = function () {
+  var toCompile = "var bufferLength = Math.min(buffer.length, this.outputBufferSize);\
+  if ((bufferLength % " + this.channels + ") == 0) {\
+    if (bufferLength > 0) {\
+      var ratioWeight = this.ratioWeight;\
+      var weight = 0;";
+  for (var channel = 0; channel < this.channels; ++channel) {
+    toCompile += "var output" + channel + " = 0;"
+  }
+  toCompile += "var actualPosition = 0;\
+      var amountToNext = 0;\
+      var alreadyProcessedTail = !this.tailExists;\
+      this.tailExists = false;\
+      var outputBuffer = this.outputBuffer;\
+      var outputOffset = 0;\
+      var currentPosition = 0;\
+      do {\
+        if (alreadyProcessedTail) {\
+          weight = ratioWeight;";
+  for (channel = 0; channel < this.channels; ++channel) {
+    toCompile += "output" + channel + " = 0;"
+  }
+  toCompile += "}\
+        else {\
+          weight = this.lastWeight;";
+  for (channel = 0; channel < this.channels; ++channel) {
+    toCompile += "output" + channel + " = this.lastOutput[" + channel + "];"
+  }
+  toCompile += "alreadyProcessedTail = true;\
+        }\
+        while (weight > 0 && actualPosition < bufferLength) {\
+          amountToNext = 1 + actualPosition - currentPosition;\
+          if (weight >= amountToNext) {";
+  for (channel = 0; channel < this.channels; ++channel) {
+    toCompile += "output" + channel + " += buffer[actualPosition++] * amountToNext;"
+  }
+  toCompile += "currentPosition = actualPosition;\
+            weight -= amountToNext;\
+          }\
+          else {";
+  for (channel = 0; channel < this.channels; ++channel) {
+    toCompile += "output" + channel + " += buffer[actualPosition" + ((channel > 0) ? (" + " + channel) : "") + "] * weight;"
+  }
+  toCompile += "currentPosition += weight;\
+            weight = 0;\
+            break;\
+          }\
+        }\
+        if (weight == 0) {";
+  for (channel = 0; channel < this.channels; ++channel) {
+    toCompile += "outputBuffer[outputOffset++] = output" + channel + " / ratioWeight;"
+  }
+  toCompile += "}\
+        else {\
+          this.lastWeight = weight;";
+  for (channel = 0; channel < this.channels; ++channel) {
+    toCompile += "this.lastOutput[" + channel + "] = output" + channel + ";"
+  }
+  toCompile += "this.tailExists = true;\
+          break;\
+        }\
+      } while (actualPosition < bufferLength);\
+      return this.bufferSlice(outputOffset);\
+    }\
+    else {\
+      return (this.noReturn) ? 0 : [];\
+    }\
+  }\
+  else {\
+    throw(new Error(\"Buffer was of incorrect sample length.\"));\
+  }";
+  this.interpolate = Function("buffer", toCompile);
+}
+Resampler.prototype.bypassResampler = function (buffer) {
+  if (this.noReturn) {
+    //Set the buffer passed as our own, as we don't need to resample it:
+    this.outputBuffer = buffer;
+    return buffer.length;
+  }
+  else {
+    //Just return the buffer passsed:
+    return buffer;
+  }
+}
+Resampler.prototype.bufferSlice = function (sliceAmount) {
+  if (this.noReturn) {
+    //If we're going to access the properties directly from this object:
+    return sliceAmount;
+  }
+  else {
+    //Typed array and normal array buffer section referencing:
+    try {
+      return this.outputBuffer.subarray(0, sliceAmount);
+    }
+    catch (error) {
+      try {
+        //Regular array pass:
+        this.outputBuffer.length = sliceAmount;
+        return this.outputBuffer;
+      }
+      catch (error) {
+        //Nightly Firefox 4 used to have the subarray function named as slice:
+        return this.outputBuffer.slice(0, sliceAmount);
+      }
+    }
+  }
+}
+Resampler.prototype.initializeBuffers = function () {
+  //Initialize the internal buffer:
+  try {
+    this.outputBuffer = new Float32Array(this.outputBufferSize);
+    this.lastOutput = new Float32Array(this.channels);
+  }
+  catch (error) {
+    this.outputBuffer = [];
+    this.lastOutput = [];
+  }
+}
+
+// End of js/other/resampler.js file.
+
+// Start of js/other/XAudioServer.js file.
+
+/*Initialize here first:
+  Example:
+    Stereo audio with a sample rate of 70 khz, a minimum buffer of 15000 samples total, a maximum buffer of 25000 samples total and a starting volume level of 1.
+      var parentObj = this;
+      this.audioHandle = new XAudioServer(2, 70000, 15000, 25000, function (sampleCount) {
+        return parentObj.audioUnderRun(sampleCount);
+      }, 1);
+
+  The callback is passed the number of samples requested, while it can return any number of samples it wants back.
+*/
+function XAudioServer(channels, sampleRate, minBufferSize, maxBufferSize, underRunCallback, volume) {
+  this.audioChannels = (channels == 2) ? 2 : 1;
+  webAudioMono = (this.audioChannels == 1);
+  XAudioJSSampleRate = (sampleRate > 0 && sampleRate <= 0xFFFFFF) ? sampleRate : 44100;
+  webAudioMinBufferSize = (minBufferSize >= (samplesPerCallback << 1) && minBufferSize < maxBufferSize) ? (minBufferSize & ((webAudioMono) ? 0xFFFFFFFF : 0xFFFFFFFE)) : (samplesPerCallback << 1);
+  webAudioMaxBufferSize = (Math.floor(maxBufferSize) > webAudioMinBufferSize + this.audioChannels) ? (maxBufferSize & ((webAudioMono) ? 0xFFFFFFFF : 0xFFFFFFFE)) : (minBufferSize << 1);
+  this.underRunCallback = (typeof underRunCallback == "function") ? underRunCallback : function () {};
+  XAudioJSVolume = (volume >= 0 && volume <= 1) ? volume : 1;
+  this.audioType = -1;
+  this.mozAudioTail = [];
+  this.audioHandleMoz = null;
+  this.audioHandleFlash = null;
+  this.flashInitialized = false;
+  this.mozAudioFound = false;
+  this.initializeAudio();
+}
+XAudioServer.prototype.MOZWriteAudio = function (buffer) {
+  //mozAudio:
+  this.MOZWriteAudioNoCallback(buffer);
+  this.MOZExecuteCallback();
+}
+XAudioServer.prototype.MOZWriteAudioNoCallback = function (buffer) {
+  //mozAudio:
+  this.writeMozAudio(buffer);
+}
+XAudioServer.prototype.callbackBasedWriteAudio = function (buffer) {
+  //Callback-centered audio APIs:
+  this.callbackBasedWriteAudioNoCallback(buffer);
+  this.callbackBasedExecuteCallback();
+}
+XAudioServer.prototype.callbackBasedWriteAudioNoCallback = function (buffer) {
+  //Callback-centered audio APIs:
+  var length = buffer.length;
+  for (var bufferCounter = 0; bufferCounter < length && audioBufferSize < webAudioMaxBufferSize;) {
+    audioContextSampleBuffer[audioBufferSize++] = buffer[bufferCounter++];
+  }
+}
+/*Pass your samples into here!
+Pack your samples as a one-dimenional array
+With the channel samplea packed uniformly.
+examples:
+    mono - [left, left, left, left]
+    stereo - [left, right, left, right, left, right, left, right]
+*/
+XAudioServer.prototype.writeAudio = function (buffer) {
+  if (this.audioType == 0) {
+    this.MOZWriteAudio(buffer);
+  }
+  else if (this.audioType == 1) {
+    this.callbackBasedWriteAudio(buffer);
+  }
+  else if (this.audioType == 2) {
+    if (this.checkFlashInit() || launchedContext) {
+      this.callbackBasedWriteAudio(buffer);
+    }
+    else if (this.mozAudioFound) {
+      this.MOZWriteAudio(buffer);
+    }
+  }
+}
+/*Pass your samples into here if you don't want automatic callback calling:
+Pack your samples as a one-dimenional array
+With the channel samplea packed uniformly.
+examples:
+    mono - [left, left, left, left]
+    stereo - [left, right, left, right, left, right, left, right]
+Useful in preventing infinite recursion issues with calling writeAudio inside your callback.
+*/
+XAudioServer.prototype.writeAudioNoCallback = function (buffer) {
+  if (this.audioType == 0) {
+    this.MOZWriteAudioNoCallback(buffer);
+  }
+  else if (this.audioType == 1) {
+    this.callbackBasedWriteAudioNoCallback(buffer);
+  }
+  else if (this.audioType == 2) {
+    if (this.checkFlashInit() || launchedContext) {
+      this.callbackBasedWriteAudioNoCallback(buffer);
+    }
+    else if (this.mozAudioFound) {
+      this.MOZWriteAudioNoCallback(buffer);
+    }
+  }
+}
+//Developer can use this to see how many samples to write (example: minimum buffer allotment minus remaining samples left returned from this function to make sure maximum buffering is done...)
+//If -1 is returned, then that means metric could not be done.
+XAudioServer.prototype.remainingBuffer = function () {
+  if (this.audioType == 0) {
+    //mozAudio:
+    return this.samplesAlreadyWritten - this.audioHandleMoz.mozCurrentSampleOffset();
+  }
+  else if (this.audioType == 1) {
+    //WebKit Audio:
+    return (((resampledSamplesLeft() * resampleControl.ratioWeight) >> (this.audioChannels - 1)) << (this.audioChannels - 1)) + audioBufferSize;
+  }
+  else if (this.audioType == 2) {
+    if (this.checkFlashInit() || launchedContext) {
+      //Webkit Audio / Flash Plugin Audio:
+      return (((resampledSamplesLeft() * resampleControl.ratioWeight) >> (this.audioChannels - 1)) << (this.audioChannels - 1)) + audioBufferSize;
+    }
+    else if (this.mozAudioFound) {
+      //mozAudio:
+      return this.samplesAlreadyWritten - this.audioHandleMoz.mozCurrentSampleOffset();
+    }
+  }
+  //Default return:
+  return 0;
+}
+XAudioServer.prototype.MOZExecuteCallback = function () {
+  //mozAudio:
+  var samplesRequested = webAudioMinBufferSize - this.remainingBuffer();
+  if (samplesRequested > 0) {
+    this.writeMozAudio(this.underRunCallback(samplesRequested));
+  }
+}
+XAudioServer.prototype.callbackBasedExecuteCallback = function () {
+  //WebKit /Flash Audio:
+  var samplesRequested = webAudioMinBufferSize - this.remainingBuffer();
+  if (samplesRequested > 0) {
+    this.callbackBasedWriteAudioNoCallback(this.underRunCallback(samplesRequested));
+  }
+}
+//If you just want your callback called for any possible refill (Execution of callback is still conditional):
+XAudioServer.prototype.executeCallback = function () {
+  if (this.audioType == 0) {
+    this.MOZExecuteCallback();
+  }
+  else if (this.audioType == 1) {
+    this.callbackBasedExecuteCallback();
+  }
+  else if (this.audioType == 2) {
+    if (this.checkFlashInit() || launchedContext) {
+      this.callbackBasedExecuteCallback();
+    }
+    else if (this.mozAudioFound) {
+      this.MOZExecuteCallback();
+    }
+  }
+}
+//DO NOT CALL THIS, the lib calls this internally!
+XAudioServer.prototype.initializeAudio = function () {
+  try {
+    throw (new Error("Select initializeWebAudio case"));  // Line added for benchmarking.
+    this.preInitializeMozAudio();
+    if (navigator.platform == "Linux i686") {
+      //Block out mozaudio usage for Linux Firefox due to moz bugs:
+      throw(new Error(""));
+    }
+    this.initializeMozAudio();
+  }
+  catch (error) {
+    try {
+      this.initializeWebAudio();
+    }
+    catch (error) {
+      try {
+        this.initializeFlashAudio();
+      }
+      catch (error) {
+        throw(new Error("Browser does not support real time audio output."));
+      }
+    }
+  }
+}
+XAudioServer.prototype.preInitializeMozAudio = function () {
+  //mozAudio - Synchronous Audio API
+  this.audioHandleMoz = new Audio();
+  this.audioHandleMoz.mozSetup(this.audioChannels, XAudioJSSampleRate);
+  this.samplesAlreadyWritten = 0;
+  var emptySampleFrame = (this.audioChannels == 2) ? [0, 0] : [0];
+  var prebufferAmount = 0;
+  if (navigator.platform != "MacIntel" && navigator.platform != "MacPPC") {  //Mac OS X doesn't experience this moz-bug!
+    while (this.audioHandleMoz.mozCurrentSampleOffset() == 0) {
+      //Mozilla Audio Bugginess Workaround (Firefox freaks out if we don't give it a prebuffer under certain OSes):
+      prebufferAmount += this.audioHandleMoz.mozWriteAudio(emptySampleFrame);
+    }
+    var samplesToDoubleBuffer = prebufferAmount / this.audioChannels;
+    //Double the prebuffering for windows:
+    for (var index = 0; index < samplesToDoubleBuffer; index++) {
+      this.samplesAlreadyWritten += this.audioHandleMoz.mozWriteAudio(emptySampleFrame);
+    }
+  }
+  this.samplesAlreadyWritten += prebufferAmount;
+  webAudioMinBufferSize += this.samplesAlreadyWritten;
+  this.mozAudioFound = true;
+}
+XAudioServer.prototype.initializeMozAudio = function () {
+  //Fill in our own buffering up to the minimum specified:
+  this.writeMozAudio(getFloat32(webAudioMinBufferSize));
+  this.audioType = 0;
+}
+XAudioServer.prototype.initializeWebAudio = function () {
+  if (launchedContext) {
+    resetCallbackAPIAudioBuffer(webAudioActualSampleRate, samplesPerCallback);
+    this.audioType = 1;
+  }
+  else {
+    throw(new Error(""));
+  }
+}
+XAudioServer.prototype.initializeFlashAudio = function () {
+  var existingFlashload = document.getElementById("XAudioJS");
+  if (existingFlashload == null) {
+    var thisObj = this;
+    var mainContainerNode = document.createElement("div");
+    mainContainerNode.setAttribute("style", "position: fixed; bottom: 0px; right: 0px; margin: 0px; padding: 0px; border: none; width: 8px; height: 8px; overflow: hidden; z-index: -1000; ");
+    var containerNode = document.createElement("div");
+    containerNode.setAttribute("style", "position: static; border: none; width: 0px; height: 0px; visibility: hidden; margin: 8px; padding: 0px;");
+    containerNode.setAttribute("id", "XAudioJS");
+    mainContainerNode.appendChild(containerNode);
+    document.getElementsByTagName("body")[0].appendChild(mainContainerNode);
+    swfobject.embedSWF(
+      "XAudioJS.swf",
+      "XAudioJS",
+      "8",
+      "8",
+      "9.0.0",
+      "",
+      {},
+      {"allowscriptaccess":"always"},
+      {"style":"position: static; visibility: hidden; margin: 8px; padding: 0px; border: none"},
+      function (event) {
+        if (event.success) {
+          thisObj.audioHandleFlash = event.ref;
+        }
+        else {
+          thisObj.audioType = 1;
+        }
+      }
+    );
+  }
+  else {
+    this.audioHandleFlash = existingFlashload;
+  }
+  this.audioType = 2;
+}
+XAudioServer.prototype.changeVolume = function (newVolume) {
+  if (newVolume >= 0 && newVolume <= 1) {
+    XAudioJSVolume = newVolume;
+    if (this.checkFlashInit()) {
+      this.audioHandleFlash.changeVolume(XAudioJSVolume);
+    }
+    if (this.mozAudioFound) {
+      this.audioHandleMoz.volume = XAudioJSVolume;
+    }
+  }
+}
+//Moz Audio Buffer Writing Handler:
+XAudioServer.prototype.writeMozAudio = function (buffer) {
+  var length = this.mozAudioTail.length;
+  if (length > 0) {
+    var samplesAccepted = this.audioHandleMoz.mozWriteAudio(this.mozAudioTail);
+    this.samplesAlreadyWritten += samplesAccepted;
+    this.mozAudioTail.splice(0, samplesAccepted);
+  }
+  length = Math.min(buffer.length, webAudioMaxBufferSize - this.samplesAlreadyWritten + this.audioHandleMoz.mozCurrentSampleOffset());
+  var samplesAccepted = this.audioHandleMoz.mozWriteAudio(buffer);
+  this.samplesAlreadyWritten += samplesAccepted;
+  for (var index = 0; length > samplesAccepted; --length) {
+    //Moz Audio wants us saving the tail:
+    this.mozAudioTail.push(buffer[index++]);
+  }
+}
+//Checks to see if the NPAPI Adobe Flash bridge is ready yet:
+XAudioServer.prototype.checkFlashInit = function () {
+  if (!this.flashInitialized && this.audioHandleFlash && this.audioHandleFlash.initialize) {
+    this.flashInitialized = true;
+    this.audioHandleFlash.initialize(this.audioChannels, XAudioJSVolume);
+    resetCallbackAPIAudioBuffer(44100, samplesPerCallback);
+  }
+  return this.flashInitialized;
+}
+/////////END LIB
+function getFloat32(size) {
+  try {
+    return new Float32Array(size);
+  }
+  catch (error) {
+    return new Array(size);
+  }
+}
+function getFloat32Flat(size) {
+  try {
+    var newBuffer = new Float32Array(size);
+  }
+  catch (error) {
+    var newBuffer = new Array(size);
+    var audioSampleIndice = 0;
+    do {
+      newBuffer[audioSampleIndice] = 0;
+    } while (++audioSampleIndice < size);
+  }
+  return newBuffer;
+}
+//Flash NPAPI Event Handler:
+var samplesPerCallback = 2048;      //Has to be between 2048 and 4096 (If over, then samples are ignored, if under then silence is added).
+var outputConvert = null;
+function audioOutputFlashEvent() {    //The callback that flash calls...
+  resampleRefill();
+  return outputConvert();
+}
+function generateFlashStereoString() {  //Convert the arrays to one long string for speed.
+  var copyBinaryStringLeft = "";
+  var copyBinaryStringRight = "";
+  for (var index = 0; index < samplesPerCallback && resampleBufferStart != resampleBufferEnd; ++index) {
+    //Sanitize the buffer:
+    copyBinaryStringLeft += String.fromCharCode(((Math.min(Math.max(resampled[resampleBufferStart++] + 1, 0), 2) * 0x3FFF) | 0) + 0x3000);
+    copyBinaryStringRight += String.fromCharCode(((Math.min(Math.max(resampled[resampleBufferStart++] + 1, 0), 2) * 0x3FFF) | 0) + 0x3000);
+    if (resampleBufferStart == resampleBufferSize) {
+      resampleBufferStart = 0;
+    }
+  }
+  return copyBinaryStringLeft + copyBinaryStringRight;
+}
+function generateFlashMonoString() {  //Convert the array to one long string for speed.
+  var copyBinaryString = "";
+  for (var index = 0; index < samplesPerCallback && resampleBufferStart != resampleBufferEnd; ++index) {
+    //Sanitize the buffer:
+    copyBinaryString += String.fromCharCode(((Math.min(Math.max(resampled[resampleBufferStart++] + 1, 0), 2) * 0x3FFF) | 0) + 0x3000);
+    if (resampleBufferStart == resampleBufferSize) {
+      resampleBufferStart = 0;
+    }
+  }
+  return copyBinaryString;
+}
+//Audio API Event Handler:
+var audioContextHandle = null;
+var audioNode = null;
+var audioSource = null;
+var launchedContext = false;
+var audioContextSampleBuffer = [];
+var resampled = [];
+var webAudioMinBufferSize = 15000;
+var webAudioMaxBufferSize = 25000;
+var webAudioActualSampleRate = 44100;
+var XAudioJSSampleRate = 0;
+var webAudioMono = false;
+var XAudioJSVolume = 1;
+var resampleControl = null;
+var audioBufferSize = 0;
+var resampleBufferStart = 0;
+var resampleBufferEnd = 0;
+var resampleBufferSize = 2;
+function audioOutputEvent(event) {    //Web Audio API callback...
+  var index = 0;
+  var buffer1 = event.outputBuffer.getChannelData(0);
+  var buffer2 = event.outputBuffer.getChannelData(1);
+  resampleRefill();
+  if (!webAudioMono) {
+    //STEREO:
+    while (index < samplesPerCallback && resampleBufferStart != resampleBufferEnd) {
+      buffer1[index] = resampled[resampleBufferStart++] * XAudioJSVolume;
+      buffer2[index++] = resampled[resampleBufferStart++] * XAudioJSVolume;
+      if (resampleBufferStart == resampleBufferSize) {
+        resampleBufferStart = 0;
+      }
+    }
+  }
+  else {
+    //MONO:
+    while (index < samplesPerCallback && resampleBufferStart != resampleBufferEnd) {
+      buffer2[index] = buffer1[index] = resampled[resampleBufferStart++] * XAudioJSVolume;
+      ++index;
+      if (resampleBufferStart == resampleBufferSize) {
+        resampleBufferStart = 0;
+      }
+    }
+  }
+  //Pad with silence if we're underrunning:
+  while (index < samplesPerCallback) {
+    buffer2[index] = buffer1[index] = 0;
+    ++index;
+  }
+}
+function resampleRefill() {
+  if (audioBufferSize > 0) {
+    //Resample a chunk of audio:
+    var resampleLength = resampleControl.resampler(getBufferSamples());
+    var resampledResult = resampleControl.outputBuffer;
+    for (var index2 = 0; index2 < resampleLength; ++index2) {
+      resampled[resampleBufferEnd++] = resampledResult[index2];
+      if (resampleBufferEnd == resampleBufferSize) {
+        resampleBufferEnd = 0;
+      }
+      if (resampleBufferStart == resampleBufferEnd) {
+        ++resampleBufferStart;
+        if (resampleBufferStart == resampleBufferSize) {
+          resampleBufferStart = 0;
+        }
+      }
+    }
+    audioBufferSize = 0;
+  }
+}
+function resampledSamplesLeft() {
+  return ((resampleBufferStart <= resampleBufferEnd) ? 0 : resampleBufferSize) + resampleBufferEnd - resampleBufferStart;
+}
+function getBufferSamples() {
+  //Typed array and normal array buffer section referencing:
+  try {
+    return audioContextSampleBuffer.subarray(0, audioBufferSize);
+  }
+  catch (error) {
+    try {
+      //Regular array pass:
+      audioContextSampleBuffer.length = audioBufferSize;
+      return audioContextSampleBuffer;
+    }
+    catch (error) {
+      //Nightly Firefox 4 used to have the subarray function named as slice:
+      return audioContextSampleBuffer.slice(0, audioBufferSize);
+    }
+  }
+}
+//Initialize WebKit Audio /Flash Audio Buffer:
+function resetCallbackAPIAudioBuffer(APISampleRate, bufferAlloc) {
+  audioContextSampleBuffer = getFloat32(webAudioMaxBufferSize);
+  audioBufferSize = webAudioMaxBufferSize;
+  resampleBufferStart = 0;
+  resampleBufferEnd = 0;
+  resampleBufferSize = Math.max(webAudioMaxBufferSize * Math.ceil(XAudioJSSampleRate / APISampleRate), samplesPerCallback) << 1;
+  if (webAudioMono) {
+    //MONO Handling:
+    resampled = getFloat32Flat(resampleBufferSize);
+    resampleControl = new Resampler(XAudioJSSampleRate, APISampleRate, 1, resampleBufferSize, true);
+    outputConvert = generateFlashMonoString;
+  }
+  else {
+    //STEREO Handling:
+    resampleBufferSize  <<= 1;
+    resampled = getFloat32Flat(resampleBufferSize);
+    resampleControl = new Resampler(XAudioJSSampleRate, APISampleRate, 2, resampleBufferSize, true);
+    outputConvert = generateFlashStereoString;
+  }
+}
+//Initialize WebKit Audio:
+(function () {
+  if (!launchedContext) {
+    try {
+      // The following line was modified for benchmarking:
+      audioContextHandle = new GameBoyAudioContext();              //Create a system audio context.
+    }
+    catch (error) {
+      try {
+        audioContextHandle = new AudioContext();                //Create a system audio context.
+      }
+      catch (error) {
+        return;
+      }
+    }
+    try {
+      audioSource = audioContextHandle.createBufferSource();            //We need to create a false input to get the chain started.
+      audioSource.loop = false;  //Keep this alive forever (Event handler will know when to ouput.)
+      XAudioJSSampleRate = webAudioActualSampleRate = audioContextHandle.sampleRate;
+      audioSource.buffer = audioContextHandle.createBuffer(1, 1, webAudioActualSampleRate);  //Create a zero'd input buffer for the input to be valid.
+      audioNode = audioContextHandle.createJavaScriptNode(samplesPerCallback, 1, 2);      //Create 2 outputs and ignore the input buffer (Just copy buffer 1 over if mono)
+      audioNode.onaudioprocess = audioOutputEvent;                //Connect the audio processing event to a handling function so we can manipulate output
+      audioSource.connect(audioNode);                        //Send and chain the input to the audio manipulation.
+      audioNode.connect(audioContextHandle.destination);              //Send and chain the output of the audio manipulation to the system audio output.
+      audioSource.noteOn(0);                            //Start the loop!
+    }
+    catch (error) {
+      return;
+    }
+    launchedContext = true;
+  }
+})();
+
+// End of js/other/XAudioServer.js file.
+
+// Start of js/other/resize.js file.
+
+//JavaScript Image Resizer (c) 2012 - Grant Galitz
+function Resize(widthOriginal, heightOriginal, targetWidth, targetHeight, blendAlpha, interpolationPass) {
+  this.widthOriginal = Math.abs(parseInt(widthOriginal) || 0);
+  this.heightOriginal = Math.abs(parseInt(heightOriginal) || 0);
+  this.targetWidth = Math.abs(parseInt(targetWidth) || 0);
+  this.targetHeight = Math.abs(parseInt(targetHeight) || 0);
+  this.colorChannels = (!!blendAlpha) ? 4 : 3;
+  this.interpolationPass = !!interpolationPass;
+  this.targetWidthMultipliedByChannels = this.targetWidth * this.colorChannels;
+  this.originalWidthMultipliedByChannels = this.widthOriginal * this.colorChannels;
+  this.originalHeightMultipliedByChannels = this.heightOriginal * this.colorChannels;
+  this.widthPassResultSize = this.targetWidthMultipliedByChannels * this.heightOriginal;
+  this.finalResultSize = this.targetWidthMultipliedByChannels * this.targetHeight;
+  this.initialize();
+}
+Resize.prototype.initialize = function () {
+  //Perform some checks:
+  if (this.widthOriginal > 0 && this.heightOriginal > 0 && this.targetWidth > 0 && this.targetHeight > 0) {
+    if (this.widthOriginal == this.targetWidth) {
+      //Bypass the width resizer pass:
+      this.resizeWidth = this.bypassResizer;
+    }
+    else {
+      //Setup the width resizer pass:
+      this.ratioWeightWidthPass = this.widthOriginal / this.targetWidth;
+      if (this.ratioWeightWidthPass < 1 && this.interpolationPass) {
+        this.initializeFirstPassBuffers(true);
+        this.resizeWidth = (this.colorChannels == 4) ? this.resizeWidthInterpolatedRGBA : this.resizeWidthInterpolatedRGB;
+      }
+      else {
+        this.initializeFirstPassBuffers(false);
+        this.resizeWidth = (this.colorChannels == 4) ? this.resizeWidthRGBA : this.resizeWidthRGB;
+      }
+    }
+    if (this.heightOriginal == this.targetHeight) {
+      //Bypass the height resizer pass:
+      this.resizeHeight = this.bypassResizer;
+    }
+    else {
+      //Setup the height resizer pass:
+      this.ratioWeightHeightPass = this.heightOriginal / this.targetHeight;
+      if (this.ratioWeightHeightPass < 1 && this.interpolationPass) {
+        this.initializeSecondPassBuffers(true);
+        this.resizeHeight = this.resizeHeightInterpolated;
+      }
+      else {
+        this.initializeSecondPassBuffers(false);
+        this.resizeHeight = (this.colorChannels == 4) ? this.resizeHeightRGBA : this.resizeHeightRGB;
+      }
+    }
+  }
+  else {
+    throw(new Error("Invalid settings specified for the resizer."));
+  }
+}
+Resize.prototype.resizeWidthRGB = function (buffer) {
+  var ratioWeight = this.ratioWeightWidthPass;
+  var weight = 0;
+  var amountToNext = 0;
+  var actualPosition = 0;
+  var currentPosition = 0;
+  var line = 0;
+  var pixelOffset = 0;
+  var outputOffset = 0;
+  var nextLineOffsetOriginalWidth = this.originalWidthMultipliedByChannels - 2;
+  var nextLineOffsetTargetWidth = this.targetWidthMultipliedByChannels - 2;
+  var output = this.outputWidthWorkBench;
+  var outputBuffer = this.widthBuffer;
+  do {
+    for (line = 0; line < this.originalHeightMultipliedByChannels;) {
+      output[line++] = 0;
+      output[line++] = 0;
+      output[line++] = 0;
+    }
+    weight = ratioWeight;
+    do {
+      amountToNext = 1 + actualPosition - currentPosition;
+      if (weight >= amountToNext) {
+        for (line = 0, pixelOffset = actualPosition; line < this.originalHeightMultipliedByChannels; pixelOffset += nextLineOffsetOriginalWidth) {
+          output[line++] += buffer[pixelOffset++] * amountToNext;
+          output[line++] += buffer[pixelOffset++] * amountToNext;
+          output[line++] += buffer[pixelOffset] * amountToNext;
+        }
+        currentPosition = actualPosition = actualPosition + 3;
+        weight -= amountToNext;
+      }
+      else {
+        for (line = 0, pixelOffset = actualPosition; line < this.originalHeightMultipliedByChannels; pixelOffset += nextLineOffsetOriginalWidth) {
+          output[line++] += buffer[pixelOffset++] * weight;
+          output[line++] += buffer[pixelOffset++] * weight;
+          output[line++] += buffer[pixelOffset] * weight;
+        }
+        currentPosition += weight;
+        break;
+      }
+    } while (weight > 0 && actualPosition < this.originalWidthMultipliedByChannels);
+    for (line = 0, pixelOffset = outputOffset; line < this.originalHeightMultipliedByChannels; pixelOffset += nextLineOffsetTargetWidth) {
+      outputBuffer[pixelOffset++] = output[line++] / ratioWeight;
+      outputBuffer[pixelOffset++] = output[line++] / ratioWeight;
+      outputBuffer[pixelOffset] = output[line++] / ratioWeight;
+    }
+    outputOffset += 3;
+  } while (outputOffset < this.targetWidthMultipliedByChannels);
+  return outputBuffer;
+}
+Resize.prototype.resizeWidthInterpolatedRGB = function (buffer) {
+  var ratioWeight = (this.widthOriginal - 1) / this.targetWidth;
+  var weight = 0;
+  var finalOffset = 0;
+  var pixelOffset = 0;
+  var outputBuffer = this.widthBuffer;
+  for (var targetPosition = 0; targetPosition < this.targetWidthMultipliedByChannels; targetPosition += 3, weight += ratioWeight) {
+    //Calculate weightings:
+    secondWeight = weight % 1;
+    firstWeight = 1 - secondWeight;
+    //Interpolate:
+    for (finalOffset = targetPosition, pixelOffset = Math.floor(weight) * 3; finalOffset < this.widthPassResultSize; pixelOffset += this.originalWidthMultipliedByChannels, finalOffset += this.targetWidthMultipliedByChannels) {
+      outputBuffer[finalOffset] = (buffer[pixelOffset] * firstWeight) + (buffer[pixelOffset + 3] * secondWeight);
+      outputBuffer[finalOffset + 1] = (buffer[pixelOffset + 1] * firstWeight) + (buffer[pixelOffset + 4] * secondWeight);
+      outputBuffer[finalOffset + 2] = (buffer[pixelOffset + 2] * firstWeight) + (buffer[pixelOffset + 5] * secondWeight);
+    }
+  }
+  return outputBuffer;
+}
+Resize.prototype.resizeWidthRGBA = function (buffer) {
+  var ratioWeight = this.ratioWeightWidthPass;
+  var weight = 0;
+  var amountToNext = 0;
+  var actualPosition = 0;
+  var currentPosition = 0;
+  var line = 0;
+  var pixelOffset = 0;
+  var outputOffset = 0;
+  var nextLineOffsetOriginalWidth = this.originalWidthMultipliedByChannels - 3;
+  var nextLineOffsetTargetWidth = this.targetWidthMultipliedByChannels - 3;
+  var output = this.outputWidthWorkBench;
+  var outputBuffer = this.widthBuffer;
+  do {
+    for (line = 0; line < this.originalHeightMultipliedByChannels;) {
+      output[line++] = 0;
+      output[line++] = 0;
+      output[line++] = 0;
+      output[line++] = 0;
+    }
+    weight = ratioWeight;
+    do {
+      amountToNext = 1 + actualPosition - currentPosition;
+      if (weight >= amountToNext) {
+        for (line = 0, pixelOffset = actualPosition; line < this.originalHeightMultipliedByChannels; pixelOffset += nextLineOffsetOriginalWidth) {
+          output[line++] += buffer[pixelOffset++] * amountToNext;
+          output[line++] += buffer[pixelOffset++] * amountToNext;
+          output[line++] += buffer[pixelOffset++] * amountToNext;
+          output[line++] += buffer[pixelOffset] * amountToNext;
+        }
+        currentPosition = actualPosition = actualPosition + 4;
+        weight -= amountToNext;
+      }
+      else {
+        for (line = 0, pixelOffset = actualPosition; line < this.originalHeightMultipliedByChannels; pixelOffset += nextLineOffsetOriginalWidth) {
+          output[line++] += buffer[pixelOffset++] * weight;
+          output[line++] += buffer[pixelOffset++] * weight;
+          output[line++] += buffer[pixelOffset++] * weight;
+          output[line++] += buffer[pixelOffset] * weight;
+        }
+        currentPosition += weight;
+        break;
+      }
+    } while (weight > 0 && actualPosition < this.originalWidthMultipliedByChannels);
+    for (line = 0, pixelOffset = outputOffset; line < this.originalHeightMultipliedByChannels; pixelOffset += nextLineOffsetTargetWidth) {
+      outputBuffer[pixelOffset++] = output[line++] / ratioWeight;
+      outputBuffer[pixelOffset++] = output[line++] / ratioWeight;
+      outputBuffer[pixelOffset++] = output[line++] / ratioWeight;
+      outputBuffer[pixelOffset] = output[line++] / ratioWeight;
+    }
+    outputOffset += 4;
+  } while (outputOffset < this.targetWidthMultipliedByChannels);
+  return outputBuffer;
+}
+Resize.prototype.resizeWidthInterpolatedRGBA = function (buffer) {
+  var ratioWeight = (this.widthOriginal - 1) / this.targetWidth;
+  var weight = 0;
+  var finalOffset = 0;
+  var pixelOffset = 0;
+  var outputBuffer = this.widthBuffer;
+  for (var targetPosition = 0; targetPosition < this.targetWidthMultipliedByChannels; targetPosition += 4, weight += ratioWeight) {
+    //Calculate weightings:
+    secondWeight = weight % 1;
+    firstWeight = 1 - secondWeight;
+    //Interpolate:
+    for (finalOffset = targetPosition, pixelOffset = Math.floor(weight) * 4; finalOffset < this.widthPassResultSize; pixelOffset += this.originalWidthMultipliedByChannels, finalOffset += this.targetWidthMultipliedByChannels) {
+      outputBuffer[finalOffset] = (buffer[pixelOffset] * firstWeight) + (buffer[pixelOffset + 4] * secondWeight);
+      outputBuffer[finalOffset + 1] = (buffer[pixelOffset + 1] * firstWeight) + (buffer[pixelOffset + 5] * secondWeight);
+      outputBuffer[finalOffset + 2] = (buffer[pixelOffset + 2] * firstWeight) + (buffer[pixelOffset + 6] * secondWeight);
+      outputBuffer[finalOffset + 3] = (buffer[pixelOffset + 3] * firstWeight) + (buffer[pixelOffset + 7] * secondWeight);
+    }
+  }
+  return outputBuffer;
+}
+Resize.prototype.resizeHeightRGB = function (buffer) {
+  var ratioWeight = this.ratioWeightHeightPass;
+  var weight = 0;
+  var amountToNext = 0;
+  var actualPosition = 0;
+  var currentPosition = 0;
+  var pixelOffset = 0;
+  var outputOffset = 0;
+  var output = this.outputHeightWorkBench;
+  var outputBuffer = this.heightBuffer;
+  do {
+    for (pixelOffset = 0; pixelOffset < this.targetWidthMultipliedByChannels;) {
+      output[pixelOffset++] = 0;
+      output[pixelOffset++] = 0;
+      output[pixelOffset++] = 0;
+    }
+    weight = ratioWeight;
+    do {
+      amountToNext = 1 + actualPosition - currentPosition;
+      if (weight >= amountToNext) {
+        for (pixelOffset = 0; pixelOffset < this.targetWidthMultipliedByChannels;) {
+          output[pixelOffset++] += buffer[actualPosition++] * amountToNext;
+          output[pixelOffset++] += buffer[actualPosition++] * amountToNext;
+          output[pixelOffset++] += buffer[actualPosition++] * amountToNext;
+        }
+        currentPosition = actualPosition;
+        weight -= amountToNext;
+      }
+      else {
+        for (pixelOffset = 0, amountToNext = actualPosition; pixelOffset < this.targetWidthMultipliedByChannels;) {
+          output[pixelOffset++] += buffer[amountToNext++] * weight;
+          output[pixelOffset++] += buffer[amountToNext++] * weight;
+          output[pixelOffset++] += buffer[amountToNext++] * weight;
+        }
+        currentPosition += weight;
+        break;
+      }
+    } while (weight > 0 && actualPosition < this.widthPassResultSize);
+    for (pixelOffset = 0; pixelOffset < this.targetWidthMultipliedByChannels;) {
+      outputBuffer[outputOffset++] = Math.round(output[pixelOffset++] / ratioWeight);
+      outputBuffer[outputOffset++] = Math.round(output[pixelOffset++] / ratioWeight);
+      outputBuffer[outputOffset++] = Math.round(output[pixelOffset++] / ratioWeight);
+    }
+  } while (outputOffset < this.finalResultSize);
+  return outputBuffer;
+}
+Resize.prototype.resizeHeightInterpolated = function (buffer) {
+  var ratioWeight = (this.heightOriginal - 1) / this.targetHeight;
+  var weight = 0;
+  var finalOffset = 0;
+  var pixelOffset = 0;
+  var pixelOffsetAccumulated = 0;
+  var pixelOffsetAccumulated2 = 0;
+  var outputBuffer = this.heightBuffer;
+  do {
+    //Calculate weightings:
+    secondWeight = weight % 1;
+    firstWeight = 1 - secondWeight;
+    //Interpolate:
+    pixelOffsetAccumulated = Math.floor(weight) * this.targetWidthMultipliedByChannels;
+    pixelOffsetAccumulated2 = pixelOffsetAccumulated + this.targetWidthMultipliedByChannels;
+    for (pixelOffset = 0; pixelOffset < this.targetWidthMultipliedByChannels; ++pixelOffset) {
+      outputBuffer[finalOffset++] = (buffer[pixelOffsetAccumulated + pixelOffset] * firstWeight) + (buffer[pixelOffsetAccumulated2 + pixelOffset] * secondWeight);
+    }
+    weight += ratioWeight;
+  } while (finalOffset < this.finalResultSize);
+  return outputBuffer;
+}
+Resize.prototype.resizeHeightRGBA = function (buffer) {
+  var ratioWeight = this.ratioWeightHeightPass;
+  var weight = 0;
+  var amountToNext = 0;
+  var actualPosition = 0;
+  var currentPosition = 0;
+  var pixelOffset = 0;
+  var outputOffset = 0;
+  var output = this.outputHeightWorkBench;
+  var outputBuffer = this.heightBuffer;
+  do {
+    for (pixelOffset = 0; pixelOffset < this.targetWidthMultipliedByChannels;) {
+      output[pixelOffset++] = 0;
+      output[pixelOffset++] = 0;
+      output[pixelOffset++] = 0;
+      output[pixelOffset++] = 0;
+    }
+    weight = ratioWeight;
+    do {
+      amountToNext = 1 + actualPosition - currentPosition;
+      if (weight >= amountToNext) {
+        for (pixelOffset = 0; pixelOffset < this.targetWidthMultipliedByChannels;) {
+          output[pixelOffset++] += buffer[actualPosition++] * amountToNext;
+          output[pixelOffset++] += buffer[actualPosition++] * amountToNext;
+          output[pixelOffset++] += buffer[actualPosition++] * amountToNext;
+          output[pixelOffset++] += buffer[actualPosition++] * amountToNext;
+        }
+        currentPosition = actualPosition;
+        weight -= amountToNext;
+      }
+      else {
+        for (pixelOffset = 0, amountToNext = actualPosition; pixelOffset < this.targetWidthMultipliedByChannels;) {
+          output[pixelOffset++] += buffer[amountToNext++] * weight;
+          output[pixelOffset++] += buffer[amountToNext++] * weight;
+          output[pixelOffset++] += buffer[amountToNext++] * weight;
+          output[pixelOffset++] += buffer[amountToNext++] * weight;
+        }
+        currentPosition += weight;
+        break;
+      }
+    } while (weight > 0 && actualPosition < this.widthPassResultSize);
+    for (pixelOffset = 0; pixelOffset < this.targetWidthMultipliedByChannels;) {
+      outputBuffer[outputOffset++] = Math.round(output[pixelOffset++] / ratioWeight);
+      outputBuffer[outputOffset++] = Math.round(output[pixelOffset++] / ratioWeight);
+      outputBuffer[outputOffset++] = Math.round(output[pixelOffset++] / ratioWeight);
+      outputBuffer[outputOffset++] = Math.round(output[pixelOffset++] / ratioWeight);
+    }
+  } while (outputOffset < this.finalResultSize);
+  return outputBuffer;
+}
+Resize.prototype.resizeHeightInterpolatedRGBA = function (buffer) {
+  var ratioWeight = (this.heightOriginal - 1) / this.targetHeight;
+  var weight = 0;
+  var finalOffset = 0;
+  var pixelOffset = 0;
+  var outputBuffer = this.heightBuffer;
+  while (pixelOffset < this.finalResultSize) {
+    //Calculate weightings:
+    secondWeight = weight % 1;
+    firstWeight = 1 - secondWeight;
+    //Interpolate:
+    for (pixelOffset = Math.floor(weight) * 4; pixelOffset < this.targetWidthMultipliedByChannels; pixelOffset += 4) {
+      outputBuffer[finalOffset++] = (buffer[pixelOffset] * firstWeight) + (buffer[pixelOffset + 4] * secondWeight);
+      outputBuffer[finalOffset++] = (buffer[pixelOffset + 1] * firstWeight) + (buffer[pixelOffset + 5] * secondWeight);
+      outputBuffer[finalOffset++] = (buffer[pixelOffset + 2] * firstWeight) + (buffer[pixelOffset + 6] * secondWeight);
+      outputBuffer[finalOffset++] = (buffer[pixelOffset + 3] * firstWeight) + (buffer[pixelOffset + 7] * secondWeight);
+    }
+    weight += ratioWeight;
+  }
+  return outputBuffer;
+}
+Resize.prototype.resize = function (buffer) {
+  return this.resizeHeight(this.resizeWidth(buffer));
+}
+Resize.prototype.bypassResizer = function (buffer) {
+  //Just return the buffer passsed:
+  return buffer;
+}
+Resize.prototype.initializeFirstPassBuffers = function (BILINEARAlgo) {
+  //Initialize the internal width pass buffers:
+  this.widthBuffer = this.generateFloatBuffer(this.widthPassResultSize);
+  if (!BILINEARAlgo) {
+    this.outputWidthWorkBench = this.generateFloatBuffer(this.originalHeightMultipliedByChannels);
+  }
+}
+Resize.prototype.initializeSecondPassBuffers = function (BILINEARAlgo) {
+  //Initialize the internal height pass buffers:
+  this.heightBuffer = this.generateUint8Buffer(this.finalResultSize);
+  if (!BILINEARAlgo) {
+    this.outputHeightWorkBench = this.generateFloatBuffer(this.targetWidthMultipliedByChannels);
+  }
+}
+Resize.prototype.generateFloatBuffer = function (bufferLength) {
+  //Generate a float32 typed array buffer:
+  try {
+    return new Float32Array(bufferLength);
+  }
+  catch (error) {
+    return [];
+  }
+}
+Resize.prototype.generateUint8Buffer = function (bufferLength) {
+  //Generate a uint8 typed array buffer:
+  try {
+    return this.checkForOperaMathBug(new Uint8Array(bufferLength));
+  }
+  catch (error) {
+    return [];
+  }
+}
+Resize.prototype.checkForOperaMathBug = function (typedArray) {
+  typedArray[0] = -1;
+  typedArray[0] >>= 0;
+  if (typedArray[0] != 0xFF) {
+    return [];
+  }
+  else {
+    return typedArray;
+  }
+}
+
+// End of js/other/resize.js file.
+
+// Start of js/GameBoyCore.js file.
+
+"use strict";
+/*
+ * JavaScript GameBoy Color Emulator
+ * Copyright (C) 2010 - 2012 Grant Galitz
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * version 2 as published by the Free Software Foundation.
+ * The full license is available at http://www.gnu.org/licenses/gpl.html
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ */
+function GameBoyCore(canvas, ROMImage) {
+  //Params, etc...
+  this.canvas = canvas;            //Canvas DOM object for drawing out the graphics to.
+  this.drawContext = null;          // LCD Context
+  this.ROMImage = ROMImage;          //The game's ROM.
+  //CPU Registers and Flags:
+  this.registerA = 0x01;             //Register A (Accumulator)
+  this.FZero = true;               //Register F  - Result was zero
+  this.FSubtract = false;            //Register F  - Subtraction was executed
+  this.FHalfCarry = true;            //Register F  - Half carry or half borrow
+  this.FCarry = true;              //Register F  - Carry or borrow
+  this.registerB = 0x00;            //Register B
+  this.registerC = 0x13;            //Register C
+  this.registerD = 0x00;            //Register D
+  this.registerE = 0xD8;            //Register E
+  this.registersHL = 0x014D;          //Registers H and L combined
+  this.stackPointer = 0xFFFE;          //Stack Pointer
+  this.programCounter = 0x0100;        //Program Counter
+  //Some CPU Emulation State Variables:
+  this.CPUCyclesTotal = 0;          //Relative CPU clocking to speed set, rounded appropriately.
+  this.CPUCyclesTotalBase = 0;        //Relative CPU clocking to speed set base.
+  this.CPUCyclesTotalCurrent = 0;        //Relative CPU clocking to speed set, the directly used value.
+  this.CPUCyclesTotalRoundoff = 0;      //Clocking per iteration rounding catch.
+  this.baseCPUCyclesPerIteration = 0;    //CPU clocks per iteration at 1x speed.
+  this.remainingClocks = 0;          //HALT clocking overrun carry over.
+  this.inBootstrap = true;          //Whether we're in the GBC boot ROM.
+  this.usedBootROM = false;          //Updated upon ROM loading...
+  this.usedGBCBootROM = false;        //Did we boot to the GBC boot ROM?
+  this.halt = false;              //Has the CPU been suspended until the next interrupt?
+  this.skipPCIncrement = false;        //Did we trip the DMG Halt bug?
+  this.stopEmulator = 3;            //Has the emulation been paused or a frame has ended?
+  this.IME = true;              //Are interrupts enabled?
+  this.IRQLineMatched = 0;          //CPU IRQ assertion.
+  this.interruptsRequested = 0;        //IF Register
+  this.interruptsEnabled = 0;          //IE Register
+  this.hdmaRunning = false;          //HDMA Transfer Flag - GBC only
+  this.CPUTicks = 0;              //The number of clock cycles emulated.
+  this.doubleSpeedShifter = 0;        //GBC double speed clocking shifter.
+  this.JoyPad = 0xFF;              //Joypad State (two four-bit states actually)
+  this.CPUStopped = false;          //CPU STOP status.
+  //Main RAM, MBC RAM, GBC Main RAM, VRAM, etc.
+  this.memoryReader = [];            //Array of functions mapped to read back memory
+  this.memoryWriter = [];            //Array of functions mapped to write to memory
+  this.memoryHighReader = [];          //Array of functions mapped to read back 0xFFXX memory
+  this.memoryHighWriter = [];          //Array of functions mapped to write to 0xFFXX memory
+  this.ROM = [];                //The full ROM file dumped to an array.
+  this.memory = [];              //Main Core Memory
+  this.MBCRam = [];              //Switchable RAM (Used by games for more RAM) for the main memory range 0xA000 - 0xC000.
+  this.VRAM = [];                //Extra VRAM bank for GBC.
+  this.GBCMemory = [];            //GBC main RAM Banks
+  this.MBC1Mode = false;            //MBC1 Type (4/32, 16/8)
+  this.MBCRAMBanksEnabled = false;      //MBC RAM Access Control.
+  this.currMBCRAMBank = 0;          //MBC Currently Indexed RAM Bank
+  this.currMBCRAMBankPosition = -0xA000;    //MBC Position Adder;
+  this.cGBC = false;              //GameBoy Color detection.
+  this.gbcRamBank = 1;            //Currently Switched GameBoy Color ram bank
+  this.gbcRamBankPosition = -0xD000;      //GBC RAM offset from address start.
+  this.gbcRamBankPositionECHO = -0xF000;    //GBC RAM (ECHO mirroring) offset from address start.
+  this.RAMBanks = [0, 1, 2, 4, 16];      //Used to map the RAM banks to maximum size the MBC used can do.
+  this.ROMBank1offs = 0;            //Offset of the ROM bank switching.
+  this.currentROMBank = 0;          //The parsed current ROM bank selection.
+  this.cartridgeType = 0;            //Cartridge Type
+  this.name = "";                //Name of the game
+  this.gameCode = "";              //Game code (Suffix for older games)
+  this.fromSaveState = false;          //A boolean to see if this was loaded in as a save state.
+  this.savedStateFileName = "";        //When loaded in as a save state, this will not be empty.
+  this.STATTracker = 0;            //Tracker for STAT triggering.
+  this.modeSTAT = 0;              //The scan line mode (for lines 1-144 it's 2-3-0, for 145-154 it's 1)
+  this.spriteCount = 252;            //Mode 3 extra clocking counter (Depends on how many sprites are on the current line.).
+  this.LYCMatchTriggerSTAT = false;      //Should we trigger an interrupt if LY==LYC?
+  this.mode2TriggerSTAT = false;        //Should we trigger an interrupt if in mode 2?
+  this.mode1TriggerSTAT = false;        //Should we trigger an interrupt if in mode 1?
+  this.mode0TriggerSTAT = false;        //Should we trigger an interrupt if in mode 0?
+  this.LCDisOn = false;            //Is the emulated LCD controller on?
+  this.LINECONTROL = [];            //Array of functions to handle each scan line we do (onscreen + offscreen)
+  this.DISPLAYOFFCONTROL = [function (parentObj) {
+    //Array of line 0 function to handle the LCD controller when it's off (Do nothing!).
+  }];
+  this.LCDCONTROL = null;            //Pointer to either LINECONTROL or DISPLAYOFFCONTROL.
+  this.initializeLCDController();        //Compile the LCD controller functions.
+  //RTC (Real Time Clock for MBC3):
+  this.RTCisLatched = false;
+  this.latchedSeconds = 0;          //RTC latched seconds.
+  this.latchedMinutes = 0;          //RTC latched minutes.
+  this.latchedHours = 0;            //RTC latched hours.
+  this.latchedLDays = 0;            //RTC latched lower 8-bits of the day counter.
+  this.latchedHDays = 0;            //RTC latched high-bit of the day counter.
+  this.RTCSeconds = 0;            //RTC seconds counter.
+  this.RTCMinutes = 0;            //RTC minutes counter.
+  this.RTCHours = 0;              //RTC hours counter.
+  this.RTCDays = 0;              //RTC days counter.
+  this.RTCDayOverFlow = false;        //Did the RTC overflow and wrap the day counter?
+  this.RTCHALT = false;            //Is the RTC allowed to clock up?
+  //Gyro:
+  this.highX = 127;
+  this.lowX = 127;
+  this.highY = 127;
+  this.lowY = 127;
+  //Sound variables:
+  this.audioHandle = null;            //XAudioJS handle
+  this.numSamplesTotal = 0;            //Length of the sound buffers.
+  this.sampleSize = 0;              //Length of the sound buffer for one channel.
+  this.dutyLookup = [                //Map the duty values given to ones we can work with.
+    [false, false, false, false, false, false, false, true],
+    [true, false, false, false, false, false, false, true],
+    [true, false, false, false, false, true, true, true],
+    [false, true, true, true, true, true, true, false]
+  ];
+  this.currentBuffer = [];            //The audio buffer we're working on.
+  this.bufferContainAmount = 0;          //Buffer maintenance metric.
+  this.LSFR15Table = null;
+  this.LSFR7Table = null;
+  this.noiseSampleTable = null;
+  this.initializeAudioStartState();
+  this.soundMasterEnabled = false;      //As its name implies
+  this.channel3PCM = null;          //Channel 3 adjusted sample buffer.
+  //Vin Shit:
+  this.VinLeftChannelMasterVolume = 8;    //Computed post-mixing volume.
+  this.VinRightChannelMasterVolume = 8;    //Computed post-mixing volume.
+  //Channel paths enabled:
+  this.leftChannel1 = false;
+  this.leftChannel2 = false;
+  this.leftChannel3 = false;
+  this.leftChannel4 = false;
+  this.rightChannel1 = false;
+  this.rightChannel2 = false;
+  this.rightChannel3 = false;
+  this.rightChannel4 = false;
+  //Channel output level caches:
+  this.channel1currentSampleLeft = 0;
+  this.channel1currentSampleRight = 0;
+  this.channel2currentSampleLeft = 0;
+  this.channel2currentSampleRight = 0;
+  this.channel3currentSampleLeft = 0;
+  this.channel3currentSampleRight = 0;
+  this.channel4currentSampleLeft = 0;
+  this.channel4currentSampleRight = 0;
+  this.channel1currentSampleLeftSecondary = 0;
+  this.channel1currentSampleRightSecondary = 0;
+  this.channel2currentSampleLeftSecondary = 0;
+  this.channel2currentSampleRightSecondary = 0;
+  this.channel3currentSampleLeftSecondary = 0;
+  this.channel3currentSampleRightSecondary = 0;
+  this.channel4currentSampleLeftSecondary = 0;
+  this.channel4currentSampleRightSecondary = 0;
+  this.channel1currentSampleLeftTrimary = 0;
+  this.channel1currentSampleRightTrimary = 0;
+  this.channel2currentSampleLeftTrimary = 0;
+  this.channel2currentSampleRightTrimary = 0;
+  this.mixerOutputCache = 0;
+  //Pre-multipliers to cache some calculations:
+  this.initializeTiming();
+  this.machineOut = 0;        //Premultiplier for audio samples per instruction.
+  //Audio generation counters:
+  this.audioTicks = 0;        //Used to sample the audio system every x CPU instructions.
+  this.audioIndex = 0;        //Used to keep alignment on audio generation.
+  this.rollover = 0;          //Used to keep alignment on the number of samples to output (Realign from counter alias).
+  //Timing Variables
+  this.emulatorTicks = 0;        //Times for how many instructions to execute before ending the loop.
+  this.DIVTicks = 56;          //DIV Ticks Counter (Invisible lower 8-bit)
+  this.LCDTicks = 60;          //Counter for how many instructions have been executed on a scanline so far.
+  this.timerTicks = 0;        //Counter for the TIMA timer.
+  this.TIMAEnabled = false;      //Is TIMA enabled?
+  this.TACClocker = 1024;        //Timer Max Ticks
+  this.serialTimer = 0;        //Serial IRQ Timer
+  this.serialShiftTimer = 0;      //Serial Transfer Shift Timer
+  this.serialShiftTimerAllocated = 0;  //Serial Transfer Shift Timer Refill
+  this.IRQEnableDelay = 0;      //Are the interrupts on queue to be enabled?
+  var dateVar = new_Date();     // The line is changed for benchmarking.
+  this.lastIteration = dateVar.getTime();//The last time we iterated the main loop.
+  dateVar = new_Date();         // The line is changed for benchmarking.
+  this.firstIteration = dateVar.getTime();
+  this.iterations = 0;
+  this.actualScanLine = 0;      //Actual scan line...
+  this.lastUnrenderedLine = 0;    //Last rendered scan line...
+  this.queuedScanLines = 0;
+  this.totalLinesPassed = 0;
+  this.haltPostClocks = 0;      //Post-Halt clocking.
+  //ROM Cartridge Components:
+  this.cMBC1 = false;          //Does the cartridge use MBC1?
+  this.cMBC2 = false;          //Does the cartridge use MBC2?
+  this.cMBC3 = false;          //Does the cartridge use MBC3?
+  this.cMBC5 = false;          //Does the cartridge use MBC5?
+  this.cMBC7 = false;          //Does the cartridge use MBC7?
+  this.cSRAM = false;          //Does the cartridge use save RAM?
+  this.cMMMO1 = false;        //...
+  this.cRUMBLE = false;        //Does the cartridge use the RUMBLE addressing (modified MBC5)?
+  this.cCamera = false;        //Is the cartridge actually a GameBoy Camera?
+  this.cTAMA5 = false;        //Does the cartridge use TAMA5? (Tamagotchi Cartridge)
+  this.cHuC3 = false;          //Does the cartridge use HuC3 (Hudson Soft / modified MBC3)?
+  this.cHuC1 = false;          //Does the cartridge use HuC1 (Hudson Soft / modified MBC1)?
+  this.cTIMER = false;        //Does the cartridge have an RTC?
+  this.ROMBanks = [          // 1 Bank = 16 KBytes = 256 Kbits
+    2, 4, 8, 16, 32, 64, 128, 256, 512
+  ];
+  this.ROMBanks[0x52] = 72;
+  this.ROMBanks[0x53] = 80;
+  this.ROMBanks[0x54] = 96;
+  this.numRAMBanks = 0;          //How many RAM banks were actually allocated?
+  ////Graphics Variables
+  this.currVRAMBank = 0;          //Current VRAM bank for GBC.
+  this.backgroundX = 0;          //Register SCX (X-Scroll)
+  this.backgroundY = 0;          //Register SCY (Y-Scroll)
+  this.gfxWindowDisplay = false;      //Is the windows enabled?
+  this.gfxSpriteShow = false;        //Are sprites enabled?
+  this.gfxSpriteNormalHeight = true;    //Are we doing 8x8 or 8x16 sprites?
+  this.bgEnabled = true;          //Is the BG enabled?
+  this.BGPriorityEnabled = true;      //Can we flag the BG for priority over sprites?
+  this.gfxWindowCHRBankPosition = 0;    //The current bank of the character map the window uses.
+  this.gfxBackgroundCHRBankPosition = 0;  //The current bank of the character map the BG uses.
+  this.gfxBackgroundBankOffset = 0x80;  //Fast mapping of the tile numbering/
+  this.windowY = 0;            //Current Y offset of the window.
+  this.windowX = 0;            //Current X offset of the window.
+  this.drewBlank = 0;            //To prevent the repeating of drawing a blank screen.
+  this.drewFrame = false;          //Throttle how many draws we can do to once per iteration.
+  this.midScanlineOffset = -1;      //mid-scanline rendering offset.
+  this.pixelEnd = 0;            //track the x-coord limit for line rendering (mid-scanline usage).
+  this.currentX = 0;            //The x-coord we left off at for mid-scanline rendering.
+  //BG Tile Pointer Caches:
+  this.BGCHRBank1 = null;
+  this.BGCHRBank2 = null;
+  this.BGCHRCurrentBank = null;
+  //Tile Data Cache:
+  this.tileCache = null;
+  //Palettes:
+  this.colors = [0xEFFFDE, 0xADD794, 0x529273, 0x183442];      //"Classic" GameBoy palette colors.
+  this.OBJPalette = null;
+  this.BGPalette = null;
+  this.gbcOBJRawPalette = null;
+  this.gbcBGRawPalette = null;
+  this.gbOBJPalette = null;
+  this.gbBGPalette = null;
+  this.gbcOBJPalette = null;
+  this.gbcBGPalette = null;
+  this.gbBGColorizedPalette = null;
+  this.gbOBJColorizedPalette = null;
+  this.cachedBGPaletteConversion = null;
+  this.cachedOBJPaletteConversion = null;
+  this.updateGBBGPalette = this.updateGBRegularBGPalette;
+  this.updateGBOBJPalette = this.updateGBRegularOBJPalette;
+  this.colorizedGBPalettes = false;
+  this.BGLayerRender = null;      //Reference to the BG rendering function.
+  this.WindowLayerRender = null;    //Reference to the window rendering function.
+  this.SpriteLayerRender = null;    //Reference to the OAM rendering function.
+  this.frameBuffer = [];        //The internal frame-buffer.
+  this.swizzledFrame = null;      //The secondary gfx buffer that holds the converted RGBA values.
+  this.canvasBuffer = null;      //imageData handle
+  this.pixelStart = 0;        //Temp variable for holding the current working framebuffer offset.
+  //Variables used for scaling in JS:
+  this.onscreenWidth = this.offscreenWidth = 160;
+  this.onscreenHeight = this.offScreenheight = 144;
+  this.offscreenRGBCount = this.onscreenWidth * this.onscreenHeight * 4;
+  //Initialize the white noise cache tables ahead of time:
+  this.intializeWhiteNoise();
+}
+
+// Start of code changed for benchmarking (removed ROM):
+GameBoyCore.prototype.GBBOOTROM = [];
+GameBoyCore.prototype.GBCBOOTROM = [];
+// End of code changed for benchmarking.
+
+GameBoyCore.prototype.ffxxDump = [  //Dump of the post-BOOT I/O register state (From gambatte):
+  0x0F, 0x00, 0x7C, 0xFF, 0x00, 0x00, 0x00, 0xF8,   0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x01,
+  0x80, 0xBF, 0xF3, 0xFF, 0xBF, 0xFF, 0x3F, 0x00,   0xFF, 0xBF, 0x7F, 0xFF, 0x9F, 0xFF, 0xBF, 0xFF,
+  0xFF, 0x00, 0x00, 0xBF, 0x77, 0xF3, 0xF1, 0xFF,   0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+  0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF,   0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF,
+  0x91, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC,   0x00, 0x00, 0x00, 0x00, 0xFF, 0x7E, 0xFF, 0xFE,
+  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3E, 0xFF,   0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,   0xC0, 0xFF, 0xC1, 0x00, 0xFE, 0xFF, 0xFF, 0xFF,
+  0xF8, 0xFF, 0x00, 0x00, 0x00, 0x8F, 0x00, 0x00,   0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+  0xCE, 0xED, 0x66, 0x66, 0xCC, 0x0D, 0x00, 0x0B,   0x03, 0x73, 0x00, 0x83, 0x00, 0x0C, 0x00, 0x0D,
+  0x00, 0x08, 0x11, 0x1F, 0x88, 0x89, 0x00, 0x0E,   0xDC, 0xCC, 0x6E, 0xE6, 0xDD, 0xDD, 0xD9, 0x99,
+  0xBB, 0xBB, 0x67, 0x63, 0x6E, 0x0E, 0xEC, 0xCC,   0xDD, 0xDC, 0x99, 0x9F, 0xBB, 0xB9, 0x33, 0x3E,
+  0x45, 0xEC, 0x52, 0xFA, 0x08, 0xB7, 0x07, 0x5D,   0x01, 0xFD, 0xC0, 0xFF, 0x08, 0xFC, 0x00, 0xE5,
+  0x0B, 0xF8, 0xC2, 0xCE, 0xF4, 0xF9, 0x0F, 0x7F,   0x45, 0x6D, 0x3D, 0xFE, 0x46, 0x97, 0x33, 0x5E,
+  0x08, 0xEF, 0xF1, 0xFF, 0x86, 0x83, 0x24, 0x74,   0x12, 0xFC, 0x00, 0x9F, 0xB4, 0xB7, 0x06, 0xD5,
+  0xD0, 0x7A, 0x00, 0x9E, 0x04, 0x5F, 0x41, 0x2F,   0x1D, 0x77, 0x36, 0x75, 0x81, 0xAA, 0x70, 0x3A,
+  0x98, 0xD1, 0x71, 0x02, 0x4D, 0x01, 0xC1, 0xFF,   0x0D, 0x00, 0xD3, 0x05, 0xF9, 0x00, 0x0B, 0x00
+];
+GameBoyCore.prototype.OPCODE = [
+  //NOP
+  //#0x00:
+  function (parentObj) {
+    //Do Nothing...
+  },
+  //LD BC, nn
+  //#0x01:
+  function (parentObj) {
+    parentObj.registerC = parentObj.memoryReader[parentObj.programCounter](parentObj, parentObj.programCounter);
+    parentObj.registerB = parentObj.memoryRead((parentObj.programCounter + 1) & 0xFFFF);
+    parentObj.programCounter = (parentObj.programCounter + 2) & 0xFFFF;
+  },
+  //LD (BC), A
+  //#0x02:
+  function (parentObj) {
+    parentObj.memoryWrite((parentObj.registerB << 8) | parentObj.registerC, parentObj.registerA);
+  },
+  //INC BC
+  //#0x03:
+  function (parentObj) {
+    var temp_var = ((parentObj.registerB << 8) | parentObj.registerC) + 1;
+    parentObj.registerB = (temp_var >> 8) & 0xFF;
+    parentObj.registerC = temp_var & 0xFF;
+  },
+  //INC B
+  //#0x04:
+  function (parentObj) {
+    parentObj.registerB = (parentObj.registerB + 1) & 0xFF;
+    parentObj.FZero = (parentObj.registerB == 0);
+    parentObj.FHalfCarry = ((parentObj.registerB & 0xF) == 0);
+    parentObj.FSubtract = false;
+  },
+  //DEC B
+  //#0x05:
+  function (parentObj) {
+    parentObj.registerB = (parentObj.registerB - 1) & 0xFF;
+    parentObj.FZero = (parentObj.registerB == 0);
+    parentObj.FHalfCarry = ((parentObj.registerB & 0xF) == 0xF);
+    parentObj.FSubtract = true;
+  },
+  //LD B, n
+  //#0x06:
+  function (parentObj) {
+    parentObj.registerB = parentObj.memoryReader[parentObj.programCounter](parentObj, parentObj.programCounter);
+    parentObj.programCounter = (parentObj.programCounter + 1) & 0xFFFF;
+  },
+  //RLCA
+  //#0x07:
+  function (parentObj) {
+    parentObj.FCarry = (parentObj.registerA > 0x7F);
+    parentObj.registerA = ((parentObj.registerA << 1) & 0xFF) | (parentObj.registerA >> 7);
+    parentObj.FZero = parentObj.FSubtract = parentObj.FHalfCarry = false;
+  },
+  //LD (nn), SP
+  //#0x08:
+  function (parentObj) {
+    var temp_var = (parentObj.memoryRead((parentObj.programCounter + 1) & 0xFFFF) << 8) | parentObj.memoryReader[parentObj.programCounter](parentObj, parentObj.programCounter);
+    parentObj.programCounter = (parentObj.programCounter + 2) & 0xFFFF;
+    parentObj.memoryWrite(temp_var, parentObj.stackPointer & 0xFF);
+    parentObj.memoryWrite((temp_var + 1) & 0xFFFF, parentObj.stackPointer >> 8);
+  },
+  //ADD HL, BC
+  //#0x09:
+  function (parentObj) {
+    var dirtySum = parentObj.registersHL + ((parentObj.registerB << 8) | parentObj.registerC);
+    parentObj.FHalfCarry = ((parentObj.registersHL & 0xFFF) > (dirtySum & 0xFFF));
+    parentObj.FCarry = (dirtySum > 0xFFFF);
+    parentObj.registersHL = dirtySum & 0xFFFF;
+    parentObj.FSubtract = false;
+  },
+  //LD A, (BC)
+  //#0x0A:
+  function (parentObj) {
+    parentObj.registerA = parentObj.memoryRead((parentObj.registerB << 8) | parentObj.registerC);
+  },
+  //DEC BC
+  //#0x0B:
+  function (parentObj) {
+    var temp_var = (((parentObj.registerB << 8) | parentObj.registerC) - 1) & 0xFFFF;
+    parentObj.registerB = temp_var >> 8;
+    parentObj.registerC = temp_var & 0xFF;
+  },
+  //INC C
+  //#0x0C:
+  function (parentObj) {
+    parentObj.registerC = (parentObj.registerC + 1) & 0xFF;
+    parentObj.FZero = (parentObj.registerC == 0);
+    parentObj.FHalfCarry = ((parentObj.registerC & 0xF) == 0);
+    parentObj.FSubtract = false;
+  },
+  //DEC C
+  //#0x0D:
+  function (parentObj) {
+    parentObj.registerC = (parentObj.registerC - 1) & 0xFF;
+    parentObj.FZero = (parentObj.registerC == 0);
+    parentObj.FHalfCarry = ((parentObj.registerC & 0xF) == 0xF);
+    parentObj.FSubtract = true;
+  },
+  //LD C, n
+  //#0x0E:
+  function (parentObj) {
+    parentObj.registerC = parentObj.memoryReader[parentObj.programCounter](parentObj, parentObj.programCounter);
+    parentObj.programCounter = (parentObj.programCounter + 1) & 0xFFFF;
+  },
+  //RRCA
+  //#0x0F:
+  function (parentObj) {
+    parentObj.registerA = (parentObj.registerA >> 1) | ((parentObj.registerA & 1) << 7);
+    parentObj.FCarry = (parentObj.registerA > 0x7F);
+    parentObj.FZero = parentObj.FSubtract = parentObj.FHalfCarry = false;
+  },
+  //STOP
+  //#0x10:
+  function (parentObj) {
+    if (parentObj.cGBC) {
+      if ((parentObj.memory[0xFF4D] & 0x01) == 0x01) {    //Speed change requested.
+        if (parentObj.memory[0xFF4D] > 0x7F) {        //Go back to single speed mode.
+          cout("Going into single clock speed mode.", 0);
+          parentObj.doubleSpeedShifter = 0;
+          parentObj.memory[0xFF4D] &= 0x7F;        //Clear the double speed mode flag.
+        }
+        else {                        //Go to double speed mode.
+          cout("Going into double clock speed mode.", 0);
+          parentObj.doubleSpeedShifter = 1;
+          parentObj.memory[0xFF4D] |= 0x80;        //Set the double speed mode flag.
+        }
+        parentObj.memory[0xFF4D] &= 0xFE;          //Reset the request bit.
+      }
+      else {
+        parentObj.handleSTOP();
+      }
+    }
+    else {
+      parentObj.handleSTOP();
+    }
+  },
+  //LD DE, nn
+  //#0x11:
+  function (parentObj) {
+    parentObj.registerE = parentObj.memoryReader[parentObj.programCounter](parentObj, parentObj.programCounter);
+    parentObj.registerD = parentObj.memoryRead((parentObj.programCounter + 1) & 0xFFFF);
+    parentObj.programCounter = (parentObj.programCounter + 2) & 0xFFFF;
+  },
+  //LD (DE), A
+  //#0x12:
+  function (parentObj) {
+    parentObj.memoryWrite((parentObj.registerD << 8) | parentObj.registerE, parentObj.registerA);
+  },
+  //INC DE
+  //#0x13:
+  function (parentObj) {
+    var temp_var = ((parentObj.registerD << 8) | parentObj.registerE) + 1;
+    parentObj.registerD = (temp_var >> 8) & 0xFF;
+    parentObj.registerE = temp_var & 0xFF;
+  },
+  //INC D
+  //#0x14:
+  function (parentObj) {
+    parentObj.registerD = (parentObj.registerD + 1) & 0xFF;
+    parentObj.FZero = (parentObj.registerD == 0);
+    parentObj.FHalfCarry = ((parentObj.registerD & 0xF) == 0);
+    parentObj.FSubtract = false;
+  },
+  //DEC D
+  //#0x15:
+  function (parentObj) {
+    parentObj.registerD = (parentObj.registerD - 1) & 0xFF;
+    parentObj.FZero = (parentObj.registerD == 0);
+    parentObj.FHalfCarry = ((parentObj.registerD & 0xF) == 0xF);
+    parentObj.FSubtract = true;
+  },
+  //LD D, n
+  //#0x16:
+  function (parentObj) {
+    parentObj.registerD = parentObj.memoryReader[parentObj.programCounter](parentObj, parentObj.programCounter);
+    parentObj.programCounter = (parentObj.programCounter + 1) & 0xFFFF;
+  },
+  //RLA
+  //#0x17:
+  function (parentObj) {
+    var carry_flag = (parentObj.FCarry) ? 1 : 0;
+    parentObj.FCarry = (parentObj.registerA > 0x7F);
+    parentObj.registerA = ((parentObj.registerA << 1) & 0xFF) | carry_flag;
+    parentObj.FZero = parentObj.FSubtract = parentObj.FHalfCarry = false;
+  },
+  //JR n
+  //#0x18:
+  function (parentObj) {
+    parentObj.programCounter = (parentObj.programCounter + ((parentObj.memoryReader[parentObj.programCounter](parentObj, parentObj.programCounter) << 24) >> 24) + 1) & 0xFFFF;
+  },
+  //ADD HL, DE
+  //#0x19:
+  function (parentObj) {
+    var dirtySum = parentObj.registersHL + ((parentObj.registerD << 8) | parentObj.registerE);
+    parentObj.FHalfCarry = ((parentObj.registersHL & 0xFFF) > (dirtySum & 0xFFF));
+    parentObj.FCarry = (dirtySum > 0xFFFF);
+    parentObj.registersHL = dirtySum & 0xFFFF;
+    parentObj.FSubtract = false;
+  },
+  //LD A, (DE)
+  //#0x1A:
+  function (parentObj) {
+    parentObj.registerA = parentObj.memoryRead((parentObj.registerD << 8) | parentObj.registerE);
+  },
+  //DEC DE
+  //#0x1B:
+  function (parentObj) {
+    var temp_var = (((parentObj.registerD << 8) | parentObj.registerE) - 1) & 0xFFFF;
+    parentObj.registerD = temp_var >> 8;
+    parentObj.registerE = temp_var & 0xFF;
+  },
+  //INC E
+  //#0x1C:
+  function (parentObj) {
+    parentObj.registerE = (parentObj.registerE + 1) & 0xFF;
+    parentObj.FZero = (parentObj.registerE == 0);
+    parentObj.FHalfCarry = ((parentObj.registerE & 0xF) == 0);
+    parentObj.FSubtract = false;
+  },
+  //DEC E
+  //#0x1D:
+  function (parentObj) {
+    parentObj.registerE = (parentObj.registerE - 1) & 0xFF;
+    parentObj.FZero = (parentObj.registerE == 0);
+    parentObj.FHalfCarry = ((parentObj.registerE & 0xF) == 0xF);
+    parentObj.FSubtract = true;
+  },
+  //LD E, n
+  //#0x1E:
+  function (parentObj) {
+    parentObj.registerE = parentObj.memoryReader[parentObj.programCounter](parentObj, parentObj.programCounter);
+    parentObj.programCounter = (parentObj.programCounter + 1) & 0xFFFF;
+  },
+  //RRA
+  //#0x1F:
+  function (parentObj) {
+    var carry_flag = (parentObj.FCarry) ? 0x80 : 0;
+    parentObj.FCarry = ((parentObj.registerA & 1) == 1);
+    parentObj.registerA = (parentObj.registerA >> 1) | carry_flag;
+    parentObj.FZero = parentObj.FSubtract = parentObj.FHalfCarry = false;
+  },
+  //JR NZ, n
+  //#0x20:
+  function (parentObj) {
+    if (!parentObj.FZero) {
+      parentObj.programCounter = (parentObj.programCounter + ((parentObj.memoryReader[parentObj.programCounter](parentObj, parentObj.programCounter) << 24) >> 24) + 1) & 0xFFFF;
+      parentObj.CPUTicks += 4;
+    }
+    else {
+      parentObj.programCounter = (parentObj.programCounter + 1) & 0xFFFF;
+    }
+  },
+  //LD HL, nn
+  //#0x21:
+  function (parentObj) {
+    parentObj.registersHL = (parentObj.memoryRead((parentObj.programCounter + 1) & 0xFFFF) << 8) | parentObj.memoryReader[parentObj.programCounter](parentObj, parentObj.programCounter);
+    parentObj.programCounter = (parentObj.programCounter + 2) & 0xFFFF;
+  },
+  //LDI (HL), A
+  //#0x22:
+  function (parentObj) {
+    parentObj.memoryWriter[parentObj.registersHL](parentObj, parentObj.registersHL, parentObj.registerA);
+    parentObj.registersHL = (parentObj.registersHL + 1) & 0xFFFF;
+  },
+  //INC HL
+  //#0x23:
+  function (parentObj) {
+    parentObj.registersHL = (parentObj.registersHL + 1) & 0xFFFF;
+  },
+  //INC H
+  //#0x24:
+  function (parentObj) {
+    var H = ((parentObj.registersHL >> 8) + 1) & 0xFF;
+    parentObj.FZero = (H == 0);
+    parentObj.FHalfCarry = ((H & 0xF) == 0);
+    parentObj.FSubtract = false;
+    parentObj.registersHL = (H << 8) | (parentObj.registersHL & 0xFF);
+  },
+  //DEC H
+  //#0x25:
+  function (parentObj) {
+    var H = ((parentObj.registersHL >> 8) - 1) & 0xFF;
+    parentObj.FZero = (H == 0);
+    parentObj.FHalfCarry = ((H & 0xF) == 0xF);
+    parentObj.FSubtract = true;
+    parentObj.registersHL = (H << 8) | (parentObj.registersHL & 0xFF);
+  },
+  //LD H, n
+  //#0x26:
+  function (parentObj) {
+    parentObj.registersHL = (parentObj.memoryReader[parentObj.programCounter](parentObj, parentObj.programCounter) << 8) | (parentObj.registersHL & 0xFF);
+    parentObj.programCounter = (parentObj.programCounter + 1) & 0xFFFF;
+  },
+  //DAA
+  //#0x27:
+  function (parentObj) {
+    if (!parentObj.FSubtract) {
+      if (parentObj.FCarry || parentObj.registerA > 0x99) {
+        parentObj.registerA = (parentObj.registerA + 0x60) & 0xFF;
+        parentObj.FCarry = true;
+      }
+      if (parentObj.FHalfCarry || (parentObj.registerA & 0xF) > 0x9) {
+        parentObj.registerA = (parentObj.registerA + 0x06) & 0xFF;
+        parentObj.FHalfCarry = false;
+      }
+    }
+    else if (parentObj.FCarry && parentObj.FHalfCarry) {
+      parentObj.registerA = (parentObj.registerA + 0x9A) & 0xFF;
+      parentObj.FHalfCarry = false;
+    }
+    else if (parentObj.FCarry) {
+      parentObj.registerA = (parentObj.registerA + 0xA0) & 0xFF;
+    }
+    else if (parentObj.FHalfCarry) {
+      parentObj.registerA = (parentObj.registerA + 0xFA) & 0xFF;
+      parentObj.FHalfCarry = false;
+    }
+    parentObj.FZero = (parentObj.registerA == 0);
+  },
+  //JR Z, n
+  //#0x28:
+  function (parentObj) {
+    if (parentObj.FZero) {
+      parentObj.programCounter = (parentObj.programCounter + ((parentObj.memoryReader[parentObj.programCounter](parentObj, parentObj.programCounter) << 24) >> 24) + 1) & 0xFFFF;
+      parentObj.CPUTicks += 4;
+    }
+    else {
+      parentObj.programCounter = (parentObj.programCounter + 1) & 0xFFFF;
+    }
+  },
+  //ADD HL, HL
+  //#0x29:
+  function (parentObj) {
+    parentObj.FHalfCarry = ((parentObj.registersHL & 0xFFF) > 0x7FF);
+    parentObj.FCarry = (parentObj.registersHL > 0x7FFF);
+    parentObj.registersHL = (parentObj.registersHL << 1) & 0xFFFF;
+    parentObj.FSubtract = false;
+  },
+  //LDI A, (HL)
+  //#0x2A:
+  function (parentObj) {
+    parentObj.registerA = parentObj.memoryReader[parentObj.registersHL](parentObj, parentObj.registersHL);
+    parentObj.registersHL = (parentObj.registersHL + 1) & 0xFFFF;
+  },
+  //DEC HL
+  //#0x2B:
+  function (parentObj) {
+    parentObj.registersHL = (parentObj.registersHL - 1) & 0xFFFF;
+  },
+  //INC L
+  //#0x2C:
+  function (parentObj) {
+    var L = (parentObj.registersHL + 1) & 0xFF;
+    parentObj.FZero = (L == 0);
+    parentObj.FHalfCarry = ((L & 0xF) == 0);
+    parentObj.FSubtract = false;
+    parentObj.registersHL = (parentObj.registersHL & 0xFF00) | L;
+  },
+  //DEC L
+  //#0x2D:
+  function (parentObj) {
+    var L = (parentObj.registersHL - 1) & 0xFF;
+    parentObj.FZero = (L == 0);
+    parentObj.FHalfCarry = ((L & 0xF) == 0xF);
+    parentObj.FSubtract = true;
+    parentObj.registersHL = (parentObj.registersHL & 0xFF00) | L;
+  },
+  //LD L, n
+  //#0x2E:
+  function (parentObj) {
+    parentObj.registersHL = (parentObj.registersHL & 0xFF00) | parentObj.memoryReader[parentObj.programCounter](parentObj, parentObj.programCounter);
+    parentObj.programCounter = (parentObj.programCounter + 1) & 0xFFFF;
+  },
+  //CPL
+  //#0x2F:
+  function (parentObj) {
+    parentObj.registerA ^= 0xFF;
+    parentObj.FSubtract = parentObj.FHalfCarry = true;
+  },
+  //JR NC, n
+  //#0x30:
+  function (parentObj) {
+    if (!parentObj.FCarry) {
+      parentObj.programCounter = (parentObj.programCounter + ((parentObj.memoryReader[parentObj.programCounter](parentObj, parentObj.programCounter) << 24) >> 24) + 1) & 0xFFFF;
+      parentObj.CPUTicks += 4;
+    }
+    else {
+      parentObj.programCounter = (parentObj.programCounter + 1) & 0xFFFF;
+    }
+  },
+  //LD SP, nn
+  //#0x31:
+  function (parentObj) {
+    parentObj.stackPointer = (parentObj.memoryRead((parentObj.programCounter + 1) & 0xFFFF) << 8) | parentObj.memoryReader[parentObj.programCounter](parentObj, parentObj.programCounter);
+    parentObj.programCounter = (parentObj.programCounter + 2) & 0xFFFF;
+  },
+  //LDD (HL), A
+  //#0x32:
+  function (parentObj) {
+    parentObj.memoryWriter[parentObj.registersHL](parentObj, parentObj.registersHL, parentObj.registerA);
+    parentObj.registersHL = (parentObj.registersHL - 1) & 0xFFFF;
+  },
+  //INC SP
+  //#0x33:
+  function (parentObj) {
+    parentObj.stackPointer = (parentObj.stackPointer + 1) & 0xFFFF;
+  },
+  //INC (HL)
+  //#0x34:
+  function (parentObj) {
+    var temp_var = (parentObj.memoryReader[parentObj.registersHL](parentObj, parentObj.registersHL) + 1) & 0xFF;
+    parentObj.FZero = (temp_var == 0);
+    parentObj.FHalfCarry = ((temp_var & 0xF) == 0);
+    parentObj.FSubtract = false;
+    parentObj.memoryWriter[parentObj.registersHL](parentObj, parentObj.registersHL, temp_var);
+  },
+  //DEC (HL)
+  //#0x35:
+  function (parentObj) {
+    var temp_var = (parentObj.memoryReader[parentObj.registersHL](parentObj, parentObj.registersHL) - 1) & 0xFF;
+    parentObj.FZero = (temp_var == 0);
+    parentObj.FHalfCarry = ((temp_var & 0xF) == 0xF);
+    parentObj.FSubtract = true;
+    parentObj.memoryWriter[parentObj.registersHL](parentObj, parentObj.registersHL, temp_var);
+  },
+  //LD (HL), n
+  //#0x36:
+  function (parentObj) {
+    parentObj.memoryWriter[parentObj.registersHL](parentObj, parentObj.registersHL, parentObj.memoryReader[parentObj.programCounter](parentObj, parentObj.programCounter));
+    parentObj.programCounter = (parentObj.programCounter + 1) & 0xFFFF;
+  },
+  //SCF
+  //#0x37:
+  function (parentObj) {
+    parentObj.FCarry = true;
+    parentObj.FSubtract = parentObj.FHalfCarry = false;
+  },
+  //JR C, n
+  //#0x38:
+  function (parentObj) {
+    if (parentObj.FCarry) {
+      parentObj.programCounter = (parentObj.programCounter + ((parentObj.memoryReader[parentObj.programCounter](parentObj, parentObj.programCounter) << 24) >> 24) + 1) & 0xFFFF;
+      parentObj.CPUTicks += 4;
+    }
+    else {
+      parentObj.programCounter = (parentObj.programCounter + 1) & 0xFFFF;
+    }
+  },
+  //ADD HL, SP
+  //#0x39:
+  function (parentObj) {
+    var dirtySum = parentObj.registersHL + parentObj.stackPointer;
+    parentObj.FHalfCarry = ((parentObj.registersHL & 0xFFF) > (dirtySum & 0xFFF));
+    parentObj.FCarry = (dirtySum > 0xFFFF);
+    parentObj.registersHL = dirtySum & 0xFFFF;
+    parentObj.FSubtract = false;
+  },
+  //LDD A, (HL)
+  //#0x3A:
+  function (parentObj) {
+    parentObj.registerA = parentObj.memoryReader[parentObj.registersHL](parentObj, parentObj.registersHL);
+    parentObj.registersHL = (parentObj.registersHL - 1) & 0xFFFF;
+  },
+  //DEC SP
+  //#0x3B:
+  function (parentObj) {
+    parentObj.stackPointer = (parentObj.stackPointer - 1) & 0xFFFF;
+  },
+  //INC A
+  //#0x3C:
+  function (parentObj) {
+    parentObj.registerA = (parentObj.registerA + 1) & 0xFF;
+    parentObj.FZero = (parentObj.registerA == 0);
+    parentObj.FHalfCarry = ((parentObj.registerA & 0xF) == 0);
+    parentObj.FSubtract = false;
+  },
+  //DEC A
+  //#0x3D:
+  function (parentObj) {
+    parentObj.registerA = (parentObj.registerA - 1) & 0xFF;
+    parentObj.FZero = (parentObj.registerA == 0);
+    parentObj.FHalfCarry = ((parentObj.registerA & 0xF) == 0xF);
+    parentObj.FSubtract = true;
+  },
+  //LD A, n
+  //#0x3E:
+  function (parentObj) {
+    parentObj.registerA = parentObj.memoryReader[parentObj.programCounter](parentObj, parentObj.programCounter);
+    parentObj.programCounter = (parentObj.programCounter + 1) & 0xFFFF;
+  },
+  //CCF
+  //#0x3F:
+  function (parentObj) {
+    parentObj.FCarry = !parentObj.FCarry;
+    parentObj.FSubtract = parentObj.FHalfCarry = false;
+  },
+  //LD B, B
+  //#0x40:
+  function (parentObj) {
+    //Do nothing...
+  },
+  //LD B, C
+  //#0x41:
+  function (parentObj) {
+    parentObj.registerB = parentObj.registerC;
+  },
+  //LD B, D
+  //#0x42:
+  function (parentObj) {
+    parentObj.registerB = parentObj.registerD;
+  },
+  //LD B, E
+  //#0x43:
+  function (parentObj) {
+    parentObj.registerB = parentObj.registerE;
+  },
+  //LD B, H
+  //#0x44:
+  function (parentObj) {
+    parentObj.registerB = parentObj.registersHL >> 8;
+  },
+  //LD B, L
+  //#0x45:
+  function (parentObj) {
+    parentObj.registerB = parentObj.registersHL & 0xFF;
+  },
+  //LD B, (HL)
+  //#0x46:
+  function (parentObj) {
+    parentObj.registerB = parentObj.memoryReader[parentObj.registersHL](parentObj, parentObj.registersHL);
+  },
+  //LD B, A
+  //#0x47:
+  function (parentObj) {
+    parentObj.registerB = parentObj.registerA;
+  },
+  //LD C, B
+  //#0x48:
+  function (parentObj) {
+    parentObj.registerC = parentObj.registerB;
+  },
+  //LD C, C
+  //#0x49:
+  function (parentObj) {
+    //Do nothing...
+  },
+  //LD C, D
+  //#0x4A:
+  function (parentObj) {
+    parentObj.registerC = parentObj.registerD;
+  },
+  //LD C, E
+  //#0x4B:
+  function (parentObj) {
+    parentObj.registerC = parentObj.registerE;
+  },
+  //LD C, H
+  //#0x4C:
+  function (parentObj) {
+    parentObj.registerC = parentObj.registersHL >> 8;
+  },
+  //LD C, L
+  //#0x4D:
+  function (parentObj) {
+    parentObj.registerC = parentObj.registersHL & 0xFF;
+  },
+  //LD C, (HL)
+  //#0x4E:
+  function (parentObj) {
+    parentObj.registerC = parentObj.memoryReader[parentObj.registersHL](parentObj, parentObj.registersHL);
+  },
+  //LD C, A
+  //#0x4F:
+  function (parentObj) {
+    parentObj.registerC = parentObj.registerA;
+  },
+  //LD D, B
+  //#0x50:
+  function (parentObj) {
+    parentObj.registerD = parentObj.registerB;
+  },
+  //LD D, C
+  //#0x51:
+  function (parentObj) {
+    parentObj.registerD = parentObj.registerC;
+  },
+  //LD D, D
+  //#0x52:
+  function (parentObj) {
+    //Do nothing...
+  },
+  //LD D, E
+  //#0x53:
+  function (parentObj) {
+    parentObj.registerD = parentObj.registerE;
+  },
+  //LD D, H
+  //#0x54:
+  function (parentObj) {
+    parentObj.registerD = parentObj.registersHL >> 8;
+  },
+  //LD D, L
+  //#0x55:
+  function (parentObj) {
+    parentObj.registerD = parentObj.registersHL & 0xFF;
+  },
+  //LD D, (HL)
+  //#0x56:
+  function (parentObj) {
+    parentObj.registerD = parentObj.memoryReader[parentObj.registersHL](parentObj, parentObj.registersHL);
+  },
+  //LD D, A
+  //#0x57:
+  function (parentObj) {
+    parentObj.registerD = parentObj.registerA;
+  },
+  //LD E, B
+  //#0x58:
+  function (parentObj) {
+    parentObj.registerE = parentObj.registerB;
+  },
+  //LD E, C
+  //#0x59:
+  function (parentObj) {
+    parentObj.registerE = parentObj.registerC;
+  },
+  //LD E, D
+  //#0x5A:
+  function (parentObj) {
+    parentObj.registerE = parentObj.registerD;
+  },
+  //LD E, E
+  //#0x5B:
+  function (parentObj) {
+    //Do nothing...
+  },
+  //LD E, H
+  //#0x5C:
+  function (parentObj) {
+    parentObj.registerE = parentObj.registersHL >> 8;
+  },
+  //LD E, L
+  //#0x5D:
+  function (parentObj) {
+    parentObj.registerE = parentObj.registersHL & 0xFF;
+  },
+  //LD E, (HL)
+  //#0x5E:
+  function (parentObj) {
+    parentObj.registerE = parentObj.memoryReader[parentObj.registersHL](parentObj, parentObj.registersHL);
+  },
+  //LD E, A
+  //#0x5F:
+  function (parentObj) {
+    parentObj.registerE = parentObj.registerA;
+  },
+  //LD H, B
+  //#0x60:
+  function (parentObj) {
+    parentObj.registersHL = (parentObj.registerB << 8) | (parentObj.registersHL & 0xFF);
+  },
+  //LD H, C
+  //#0x61:
+  function (parentObj) {
+    parentObj.registersHL = (parentObj.registerC << 8) | (parentObj.registersHL & 0xFF);
+  },
+  //LD H, D
+  //#0x62:
+  function (parentObj) {
+    parentObj.registersHL = (parentObj.registerD << 8) | (parentObj.registersHL & 0xFF);
+  },
+  //LD H, E
+  //#0x63:
+  function (parentObj) {
+    parentObj.registersHL = (parentObj.registerE << 8) | (parentObj.registersHL & 0xFF);
+  },
+  //LD H, H
+  //#0x64:
+  function (parentObj) {
+    //Do nothing...
+  },
+  //LD H, L
+  //#0x65:
+  function (parentObj) {
+    parentObj.registersHL = (parentObj.registersHL & 0xFF) * 0x101;
+  },
+  //LD H, (HL)
+  //#0x66:
+  function (parentObj) {
+    parentObj.registersHL = (parentObj.memoryReader[parentObj.registersHL](parentObj, parentObj.registersHL) << 8) | (parentObj.registersHL & 0xFF);
+  },
+  //LD H, A
+  //#0x67:
+  function (parentObj) {
+    parentObj.registersHL = (parentObj.registerA << 8) | (parentObj.registersHL & 0xFF);
+  },
+  //LD L, B
+  //#0x68:
+  function (parentObj) {
+    parentObj.registersHL = (parentObj.registersHL & 0xFF00) | parentObj.registerB;
+  },
+  //LD L, C
+  //#0x69:
+  function (parentObj) {
+    parentObj.registersHL = (parentObj.registersHL & 0xFF00) | parentObj.registerC;
+  },
+  //LD L, D
+  //#0x6A:
+  function (parentObj) {
+    parentObj.registersHL = (parentObj.registersHL & 0xFF00) | parentObj.registerD;
+  },
+  //LD L, E
+  //#0x6B:
+  function (parentObj) {
+    parentObj.registersHL = (parentObj.registersHL & 0xFF00) | parentObj.registerE;
+  },
+  //LD L, H
+  //#0x6C:
+  function (parentObj) {
+    parentObj.registersHL = (parentObj.registersHL & 0xFF00) | (parentObj.registersHL >> 8);
+  },
+  //LD L, L
+  //#0x6D:
+  function (parentObj) {
+    //Do nothing...
+  },
+  //LD L, (HL)
+  //#0x6E:
+  function (parentObj) {
+    parentObj.registersHL = (parentObj.registersHL & 0xFF00) | parentObj.memoryReader[parentObj.registersHL](parentObj, parentObj.registersHL);
+  },
+  //LD L, A
+  //#0x6F:
+  function (parentObj) {
+    parentObj.registersHL = (parentObj.registersHL & 0xFF00) | parentObj.registerA;
+  },
+  //LD (HL), B
+  //#0x70:
+  function (parentObj) {
+    parentObj.memoryWriter[parentObj.registersHL](parentObj, parentObj.registersHL, parentObj.registerB);
+  },
+  //LD (HL), C
+  //#0x71:
+  function (parentObj) {
+    parentObj.memoryWriter[parentObj.registersHL](parentObj, parentObj.registersHL, parentObj.registerC);
+  },
+  //LD (HL), D
+  //#0x72:
+  function (parentObj) {
+    parentObj.memoryWriter[parentObj.registersHL](parentObj, parentObj.registersHL, parentObj.registerD);
+  },
+  //LD (HL), E
+  //#0x73:
+  function (parentObj) {
+    parentObj.memoryWriter[parentObj.registersHL](parentObj, parentObj.registersHL, parentObj.registerE);
+  },
+  //LD (HL), H
+  //#0x74:
+  function (parentObj) {
+    parentObj.memoryWriter[parentObj.registersHL](parentObj, parentObj.registersHL, parentObj.registersHL >> 8);
+  },
+  //LD (HL), L
+  //#0x75:
+  function (parentObj) {
+    parentObj.memoryWriter[parentObj.registersHL](parentObj, parentObj.registersHL, parentObj.registersHL & 0xFF);
+  },
+  //HALT
+  //#0x76:
+  function (parentObj) {
+    //See if there's already an IRQ match:
+    if ((parentObj.interruptsEnabled & parentObj.interruptsRequested & 0x1F) > 0) {
+      if (!parentObj.cGBC && !parentObj.usedBootROM) {
+        //HALT bug in the DMG CPU model (Program Counter fails to increment for one instruction after HALT):
+        parentObj.skipPCIncrement = true;
+      }
+      else {
+        //CGB gets around the HALT PC bug by doubling the hidden NOP.
+        parentObj.CPUTicks += 4;
+      }
+    }
+    else {
+      //CPU is stalled until the next IRQ match:
+      parentObj.calculateHALTPeriod();
+    }
+  },
+  //LD (HL), A
+  //#0x77:
+  function (parentObj) {
+    parentObj.memoryWriter[parentObj.registersHL](parentObj, parentObj.registersHL, parentObj.registerA);
+  },
+  //LD A, B
+  //#0x78:
+  function (parentObj) {
+    parentObj.registerA = parentObj.registerB;
+  },
+  //LD A, C
+  //#0x79:
+  function (parentObj) {
+    parentObj.registerA = parentObj.registerC;
+  },
+  //LD A, D
+  //#0x7A:
+  function (parentObj) {
+    parentObj.registerA = parentObj.registerD;
+  },
+  //LD A, E
+  //#0x7B:
+  function (parentObj) {
+    parentObj.registerA = parentObj.registerE;
+  },
+  //LD A, H
+  //#0x7C:
+  function (parentObj) {
+    parentObj.registerA = parentObj.registersHL >> 8;
+  },
+  //LD A, L
+  //#0x7D:
+  function (parentObj) {
+    parentObj.registerA = parentObj.registersHL & 0xFF;
+  },
+  //LD, A, (HL)
+  //#0x7E:
+  function (parentObj) {
+    parentObj.registerA = parentObj.memoryReader[parentObj.registersHL](parentObj, parentObj.registersHL);
+  },
+  //LD A, A
+  //#0x7F:
+  function (parentObj) {
+    //Do Nothing...
+  },
+  //ADD A, B
+  //#0x80:
+  function (parentObj) {
+    var dirtySum = parentObj.registerA + parentObj.registerB;
+    parentObj.FHalfCarry = ((dirtySum & 0xF) < (parentObj.registerA & 0xF));
+    parentObj.FCarry = (dirtySum > 0xFF);
+    parentObj.registerA = dirtySum & 0xFF;
+    parentObj.FZero = (parentObj.registerA == 0);
+    parentObj.FSubtract = false;
+  },
+  //ADD A, C
+  //#0x81:
+  function (parentObj) {
+    var dirtySum = parentObj.registerA + parentObj.registerC;
+    parentObj.FHalfCarry = ((dirtySum & 0xF) < (parentObj.registerA & 0xF));
+    parentObj.FCarry = (dirtySum > 0xFF);
+    parentObj.registerA = dirtySum & 0xFF;
+    parentObj.FZero = (parentObj.registerA == 0);
+    parentObj.FSubtract = false;
+  },
+  //ADD A, D
+  //#0x82:
+  function (parentObj) {
+    var dirtySum = parentObj.registerA + parentObj.registerD;
+    parentObj.FHalfCarry = ((dirtySum & 0xF) < (parentObj.registerA & 0xF));
+    parentObj.FCarry = (dirtySum > 0xFF);
+    parentObj.registerA = dirtySum & 0xFF;
+    parentObj.FZero = (parentObj.registerA == 0);
+    parentObj.FSubtract = false;
+  },
+  //ADD A, E
+  //#0x83:
+  function (parentObj) {
+    var dirtySum = parentObj.registerA + parentObj.registerE;
+    parentObj.FHalfCarry = ((dirtySum & 0xF) < (parentObj.registerA & 0xF));
+    parentObj.FCarry = (dirtySum > 0xFF);
+    parentObj.registerA = dirtySum & 0xFF;
+    parentObj.FZero = (parentObj.registerA == 0);
+    parentObj.FSubtract = false;
+  },
+  //ADD A, H
+  //#0x84:
+  function (parentObj) {
+    var dirtySum = parentObj.registerA + (parentObj.registersHL >> 8);
+    parentObj.FHalfCarry = ((dirtySum & 0xF) < (parentObj.registerA & 0xF));
+    parentObj.FCarry = (dirtySum > 0xFF);
+    parentObj.registerA = dirtySum & 0xFF;
+    parentObj.FZero = (parentObj.registerA == 0);
+    parentObj.FSubtract = false;
+  },
+  //ADD A, L
+  //#0x85:
+  function (parentObj) {
+    var dirtySum = parentObj.registerA + (parentObj.registersHL & 0xFF);
+    parentObj.FHalfCarry = ((dirtySum & 0xF) < (parentObj.registerA & 0xF));
+    parentObj.FCarry = (dirtySum > 0xFF);
+    parentObj.registerA = dirtySum & 0xFF;
+    parentObj.FZero = (parentObj.registerA == 0);
+    parentObj.FSubtract = false;
+  },
+  //ADD A, (HL)
+  //#0x86:
+  function (parentObj) {
+    var dirtySum = parentObj.registerA + parentObj.memoryReader[parentObj.registersHL](parentObj, parentObj.registersHL);
+    parentObj.FHalfCarry = ((dirtySum & 0xF) < (parentObj.registerA & 0xF));
+    parentObj.FCarry = (dirtySum > 0xFF);
+    parentObj.registerA = dirtySum & 0xFF;
+    parentObj.FZero = (parentObj.registerA == 0);
+    parentObj.FSubtract = false;
+  },
+  //ADD A, A
+  //#0x87:
+  function (parentObj) {
+    parentObj.FHalfCarry = ((parentObj.registerA & 0x8) == 0x8);
+    parentObj.FCarry = (parentObj.registerA > 0x7F);
+    parentObj.registerA = (parentObj.registerA << 1) & 0xFF;
+    parentObj.FZero = (parentObj.registerA == 0);
+    parentObj.FSubtract = false;
+  },
+  //ADC A, B
+  //#0x88:
+  function (parentObj) {
+    var dirtySum = parentObj.registerA + parentObj.registerB + ((parentObj.FCarry) ? 1 : 0);
+    parentObj.FHalfCarry = ((parentObj.registerA & 0xF) + (parentObj.registerB & 0xF) + ((parentObj.FCarry) ? 1 : 0) > 0xF);
+    parentObj.FCarry = (dirtySum > 0xFF);
+    parentObj.registerA = dirtySum & 0xFF;
+    parentObj.FZero = (parentObj.registerA == 0);
+    parentObj.FSubtract = false;
+  },
+  //ADC A, C
+  //#0x89:
+  function (parentObj) {
+    var dirtySum = parentObj.registerA + parentObj.registerC + ((parentObj.FCarry) ? 1 : 0);
+    parentObj.FHalfCarry = ((parentObj.registerA & 0xF) + (parentObj.registerC & 0xF) + ((parentObj.FCarry) ? 1 : 0) > 0xF);
+    parentObj.FCarry = (dirtySum > 0xFF);
+    parentObj.registerA = dirtySum & 0xFF;
+    parentObj.FZero = (parentObj.registerA == 0);
+    parentObj.FSubtract = false;
+  },
+  //ADC A, D
+  //#0x8A:
+  function (parentObj) {
+    var dirtySum = parentObj.registerA + parentObj.registerD + ((parentObj.FCarry) ? 1 : 0);
+    parentObj.FHalfCarry = ((parentObj.registerA & 0xF) + (parentObj.registerD & 0xF) + ((parentObj.FCarry) ? 1 : 0) > 0xF);
+    parentObj.FCarry = (dirtySum > 0xFF);
+    parentObj.registerA = dirtySum & 0xFF;
+    parentObj.FZero = (parentObj.registerA == 0);
+    parentObj.FSubtract = false;
+  },
+  //ADC A, E
+  //#0x8B:
+  function (parentObj) {
+    var dirtySum = parentObj.registerA + parentObj.registerE + ((parentObj.FCarry) ? 1 : 0);
+    parentObj.FHalfCarry = ((parentObj.registerA & 0xF) + (parentObj.registerE & 0xF) + ((parentObj.FCarry) ? 1 : 0) > 0xF);
+    parentObj.FCarry = (dirtySum > 0xFF);
+    parentObj.registerA = dirtySum & 0xFF;
+    parentObj.FZero = (parentObj.registerA == 0);
+    parentObj.FSubtract = false;
+  },
+  //ADC A, H
+  //#0x8C:
+  function (parentObj) {
+    var tempValue = (parentObj.registersHL >> 8);
+    var dirtySum = parentObj.registerA + tempValue + ((parentObj.FCarry) ? 1 : 0);
+    parentObj.FHalfCarry = ((parentObj.registerA & 0xF) + (tempValue & 0xF) + ((parentObj.FCarry) ? 1 : 0) > 0xF);
+    parentObj.FCarry = (dirtySum > 0xFF);
+    parentObj.registerA = dirtySum & 0xFF;
+    parentObj.FZero = (parentObj.registerA == 0);
+    parentObj.FSubtract = false;
+  },
+  //ADC A, L
+  //#0x8D:
+  function (parentObj) {
+    var tempValue = (parentObj.registersHL & 0xFF);
+    var dirtySum = parentObj.registerA + tempValue + ((parentObj.FCarry) ? 1 : 0);
+    parentObj.FHalfCarry = ((parentObj.registerA & 0xF) + (tempValue & 0xF) + ((parentObj.FCarry) ? 1 : 0) > 0xF);
+    parentObj.FCarry = (dirtySum > 0xFF);
+    parentObj.registerA = dirtySum & 0xFF;
+    parentObj.FZero = (parentObj.registerA == 0);
+    parentObj.FSubtract = false;
+  },
+  //ADC A, (HL)
+  //#0x8E:
+  function (parentObj) {
+    var tempValue = parentObj.memoryReader[parentObj.registersHL](parentObj, parentObj.registersHL);
+    var dirtySum = parentObj.registerA + tempValue + ((parentObj.FCarry) ? 1 : 0);
+    parentObj.FHalfCarry = ((parentObj.registerA & 0xF) + (tempValue & 0xF) + ((parentObj.FCarry) ? 1 : 0) > 0xF);
+    parentObj.FCarry = (dirtySum > 0xFF);
+    parentObj.registerA = dirtySum & 0xFF;
+    parentObj.FZero = (parentObj.registerA == 0);
+    parentObj.FSubtract = false;
+  },
+  //ADC A, A
+  //#0x8F:
+  function (parentObj) {
+    //shift left register A one bit for some ops here as an optimization:
+    var dirtySum = (parentObj.registerA << 1) | ((parentObj.FCarry) ? 1 : 0);
+    parentObj.FHalfCarry = ((((parentObj.registerA << 1) & 0x1E) | ((parentObj.FCarry) ? 1 : 0)) > 0xF);
+    parentObj.FCarry = (dirtySum > 0xFF);
+    parentObj.registerA = dirtySum & 0xFF;
+    parentObj.FZero = (parentObj.registerA == 0);
+    parentObj.FSubtract = false;
+  },
+  //SUB A, B
+  //#0x90:
+  function (parentObj) {
+    var dirtySum = parentObj.registerA - parentObj.registerB;
+    parentObj.FHalfCarry = ((parentObj.registerA & 0xF) < (dirtySum & 0xF));
+    parentObj.FCarry = (dirtySum < 0);
+    parentObj.registerA = dirtySum & 0xFF;
+    parentObj.FZero = (dirtySum == 0);
+    parentObj.FSubtract = true;
+  },
+  //SUB A, C
+  //#0x91:
+  function (parentObj) {
+    var dirtySum = parentObj.registerA - parentObj.registerC;
+    parentObj.FHalfCarry = ((parentObj.registerA & 0xF) < (dirtySum & 0xF));
+    parentObj.FCarry = (dirtySum < 0);
+    parentObj.registerA = dirtySum & 0xFF;
+    parentObj.FZero = (dirtySum == 0);
+    parentObj.FSubtract = true;
+  },
+  //SUB A, D
+  //#0x92:
+  function (parentObj) {
+    var dirtySum = parentObj.registerA - parentObj.registerD;
+    parentObj.FHalfCarry = ((parentObj.registerA & 0xF) < (dirtySum & 0xF));
+    parentObj.FCarry = (dirtySum < 0);
+    parentObj.registerA = dirtySum & 0xFF;
+    parentObj.FZero = (dirtySum == 0);
+    parentObj.FSubtract = true;
+  },
+  //SUB A, E
+  //#0x93:
+  function (parentObj) {
+    var dirtySum = parentObj.registerA - parentObj.registerE;
+    parentObj.FHalfCarry = ((parentObj.registerA & 0xF) < (dirtySum & 0xF));
+    parentObj.FCarry = (dirtySum < 0);
+    parentObj.registerA = dirtySum & 0xFF;
+    parentObj.FZero = (dirtySum == 0);
+    parentObj.FSubtract = true;
+  },
+  //SUB A, H
+  //#0x94:
+  function (parentObj) {
+    var dirtySum = parentObj.registerA - (parentObj.registersHL >> 8);
+    parentObj.FHalfCarry = ((parentObj.registerA & 0xF) < (dirtySum & 0xF));
+    parentObj.FCarry = (dirtySum < 0);
+    parentObj.registerA = dirtySum & 0xFF;
+    parentObj.FZero = (dirtySum == 0);
+    parentObj.FSubtract = true;
+  },
+  //SUB A, L
+  //#0x95:
+  function (parentObj) {
+    var dirtySum = parentObj.registerA - (parentObj.registersHL & 0xFF);
+    parentObj.FHalfCarry = ((parentObj.registerA & 0xF) < (dirtySum & 0xF));
+    parentObj.FCarry = (dirtySum < 0);
+    parentObj.registerA = dirtySum & 0xFF;
+    parentObj.FZero = (dirtySum == 0);
+    parentObj.FSubtract = true;
+  },
+  //SUB A, (HL)
+  //#0x96:
+  function (parentObj) {
+    var dirtySum = parentObj.registerA - parentObj.memoryReader[parentObj.registersHL](parentObj, parentObj.registersHL);
+    parentObj.FHalfCarry = ((parentObj.registerA & 0xF) < (dirtySum & 0xF));
+    parentObj.FCarry = (dirtySum < 0);
+    parentObj.registerA = dirtySum & 0xFF;
+    parentObj.FZero = (dirtySum == 0);
+    parentObj.FSubtract = true;
+  },
+  //SUB A, A
+  //#0x97:
+  function (parentObj) {
+    //number - same number == 0
+    parentObj.registerA = 0;
+    parentObj.FHalfCarry = parentObj.FCarry = false;
+    parentObj.FZero = parentObj.FSubtract = true;
+  },
+  //SBC A, B
+  //#0x98:
+  function (parentObj) {
+    var dirtySum = parentObj.registerA - parentObj.registerB - ((parentObj.FCarry) ? 1 : 0);
+    parentObj.FHalfCarry = ((parentObj.registerA & 0xF) - (parentObj.registerB & 0xF) - ((parentObj.FCarry) ? 1 : 0) < 0);
+    parentObj.FCarry = (dirtySum < 0);
+    parentObj.registerA = dirtySum & 0xFF;
+    parentObj.FZero = (parentObj.registerA == 0);
+    parentObj.FSubtract = true;
+  },
+  //SBC A, C
+  //#0x99:
+  function (parentObj) {
+    var dirtySum = parentObj.registerA - parentObj.registerC - ((parentObj.FCarry) ? 1 : 0);
+    parentObj.FHalfCarry = ((parentObj.registerA & 0xF) - (parentObj.registerC & 0xF) - ((parentObj.FCarry) ? 1 : 0) < 0);
+    parentObj.FCarry = (dirtySum < 0);
+    parentObj.registerA = dirtySum & 0xFF;
+    parentObj.FZero = (parentObj.registerA == 0);
+    parentObj.FSubtract = true;
+  },
+  //SBC A, D
+  //#0x9A:
+  function (parentObj) {
+    var dirtySum = parentObj.registerA - parentObj.registerD - ((parentObj.FCarry) ? 1 : 0);
+    parentObj.FHalfCarry = ((parentObj.registerA & 0xF) - (parentObj.registerD & 0xF) - ((parentObj.FCarry) ? 1 : 0) < 0);
+    parentObj.FCarry = (dirtySum < 0);
+    parentObj.registerA = dirtySum & 0xFF;
+    parentObj.FZero = (parentObj.registerA == 0);
+    parentObj.FSubtract = true;
+  },
+  //SBC A, E
+  //#0x9B:
+  function (parentObj) {
+    var dirtySum = parentObj.registerA - parentObj.registerE - ((parentObj.FCarry) ? 1 : 0);
+    parentObj.FHalfCarry = ((parentObj.registerA & 0xF) - (parentObj.registerE & 0xF) - ((parentObj.FCarry) ? 1 : 0) < 0);
+    parentObj.FCarry = (dirtySum < 0);
+    parentObj.registerA = dirtySum & 0xFF;
+    parentObj.FZero = (parentObj.registerA == 0);
+    parentObj.FSubtract = true;
+  },
+  //SBC A, H
+  //#0x9C:
+  function (parentObj) {
+    var temp_var = parentObj.registersHL >> 8;
+    var dirtySum = parentObj.registerA - temp_var - ((parentObj.FCarry) ? 1 : 0);
+    parentObj.FHalfCarry = ((parentObj.registerA & 0xF) - (temp_var & 0xF) - ((parentObj.FCarry) ? 1 : 0) < 0);
+    parentObj.FCarry = (dirtySum < 0);
+    parentObj.registerA = dirtySum & 0xFF;
+    parentObj.FZero = (parentObj.registerA == 0);
+    parentObj.FSubtract = true;
+  },
+  //SBC A, L
+  //#0x9D:
+  function (parentObj) {
+    var dirtySum = parentObj.registerA - (parentObj.registersHL & 0xFF) - ((parentObj.FCarry) ? 1 : 0);
+    parentObj.FHalfCarry = ((parentObj.registerA & 0xF) - (parentObj.registersHL & 0xF) - ((parentObj.FCarry) ? 1 : 0) < 0);
+    parentObj.FCarry = (dirtySum < 0);
+    parentObj.registerA = dirtySum & 0xFF;
+    parentObj.FZero = (parentObj.registerA == 0);
+    parentObj.FSubtract = true;
+  },
+  //SBC A, (HL)
+  //#0x9E:
+  function (parentObj) {
+    var temp_var = parentObj.memoryReader[parentObj.registersHL](parentObj, parentObj.registersHL);
+    var dirtySum = parentObj.registerA - temp_var - ((parentObj.FCarry) ? 1 : 0);
+    parentObj.FHalfCarry = ((parentObj.registerA & 0xF) - (temp_var & 0xF) - ((parentObj.FCarry) ? 1 : 0) < 0);
+    parentObj.FCarry = (dirtySum < 0);
+    parentObj.registerA = dirtySum & 0xFF;
+    parentObj.FZero = (parentObj.registerA == 0);
+    parentObj.FSubtract = true;
+  },
+  //SBC A, A
+  //#0x9F:
+  function (parentObj) {
+    //Optimized SBC A:
+    if (parentObj.FCarry) {
+      parentObj.FZero = false;
+      parentObj.FSubtract = parentObj.FHalfCarry = parentObj.FCarry = true;
+      parentObj.registerA = 0xFF;
+    }
+    else {
+      parentObj.FHalfCarry = parentObj.FCarry = false;
+      parentObj.FSubtract = parentObj.FZero = true;
+      parentObj.registerA = 0;
+    }
+  },
+  //AND B
+  //#0xA0:
+  function (parentObj) {
+    parentObj.registerA &= parentObj.registerB;
+    parentObj.FZero = (parentObj.registerA == 0);
+    parentObj.FHalfCarry = true;
+    parentObj.FSubtract = parentObj.FCarry = false;
+  },
+  //AND C
+  //#0xA1:
+  function (parentObj) {
+    parentObj.registerA &= parentObj.registerC;
+    parentObj.FZero = (parentObj.registerA == 0);
+    parentObj.FHalfCarry = true;
+    parentObj.FSubtract = parentObj.FCarry = false;
+  },
+  //AND D
+  //#0xA2:
+  function (parentObj) {
+    parentObj.registerA &= parentObj.registerD;
+    parentObj.FZero = (parentObj.registerA == 0);
+    parentObj.FHalfCarry = true;
+    parentObj.FSubtract = parentObj.FCarry = false;
+  },
+  //AND E
+  //#0xA3:
+  function (parentObj) {
+    parentObj.registerA &= parentObj.registerE;
+    parentObj.FZero = (parentObj.registerA == 0);
+    parentObj.FHalfCarry = true;
+    parentObj.FSubtract = parentObj.FCarry = false;
+  },
+  //AND H
+  //#0xA4:
+  function (parentObj) {
+    parentObj.registerA &= (parentObj.registersHL >> 8);
+    parentObj.FZero = (parentObj.registerA == 0);
+    parentObj.FHalfCarry = true;
+    parentObj.FSubtract = parentObj.FCarry = false;
+  },
+  //AND L
+  //#0xA5:
+  function (parentObj) {
+    parentObj.registerA &= parentObj.registersHL;
+    parentObj.FZero = (parentObj.registerA == 0);
+    parentObj.FHalfCarry = true;
+    parentObj.FSubtract = parentObj.FCarry = false;
+  },
+  //AND (HL)
+  //#0xA6:
+  function (parentObj) {
+    parentObj.registerA &= parentObj.memoryReader[parentObj.registersHL](parentObj, parentObj.registersHL);
+    parentObj.FZero = (parentObj.registerA == 0);
+    parentObj.FHalfCarry = true;
+    parentObj.FSubtract = parentObj.FCarry = false;
+  },
+  //AND A
+  //#0xA7:
+  function (parentObj) {
+    //number & same number = same number
+    parentObj.FZero = (parentObj.registerA == 0);
+    parentObj.FHalfCarry = true;
+    parentObj.FSubtract = parentObj.FCarry = false;
+  },
+  //XOR B
+  //#0xA8:
+  function (parentObj) {
+    parentObj.registerA ^= parentObj.registerB;
+    parentObj.FZero = (parentObj.registerA == 0);
+    parentObj.FSubtract = parentObj.FHalfCarry = parentObj.FCarry = false;
+  },
+  //XOR C
+  //#0xA9:
+  function (parentObj) {
+    parentObj.registerA ^= parentObj.registerC;
+    parentObj.FZero = (parentObj.registerA == 0);
+    parentObj.FSubtract = parentObj.FHalfCarry = parentObj.FCarry = false;
+  },
+  //XOR D
+  //#0xAA:
+  function (parentObj) {
+    parentObj.registerA ^= parentObj.registerD;
+    parentObj.FZero = (parentObj.registerA == 0);
+    parentObj.FSubtract = parentObj.FHalfCarry = parentObj.FCarry = false;
+  },
+  //XOR E
+  //#0xAB:
+  function (parentObj) {
+    parentObj.registerA ^= parentObj.registerE;
+    parentObj.FZero = (parentObj.registerA == 0);
+    parentObj.FSubtract = parentObj.FHalfCarry = parentObj.FCarry = false;
+  },
+  //XOR H
+  //#0xAC:
+  function (parentObj) {
+    parentObj.registerA ^= (parentObj.registersHL >> 8);
+    parentObj.FZero = (parentObj.registerA == 0);
+    parentObj.FSubtract = parentObj.FHalfCarry = parentObj.FCarry = false;
+  },
+  //XOR L
+  //#0xAD:
+  function (parentObj) {
+    parentObj.registerA ^= (parentObj.registersHL & 0xFF);
+    parentObj.FZero = (parentObj.registerA == 0);
+    parentObj.FSubtract = parentObj.FHalfCarry = parentObj.FCarry = false;
+  },
+  //XOR (HL)
+  //#0xAE:
+  function (parentObj) {
+    parentObj.registerA ^= parentObj.memoryReader[parentObj.registersHL](parentObj, parentObj.registersHL);
+    parentObj.FZero = (parentObj.registerA == 0);
+    parentObj.FSubtract = parentObj.FHalfCarry = parentObj.FCarry = false;
+  },
+  //XOR A
+  //#0xAF:
+  function (parentObj) {
+    //number ^ same number == 0
+    parentObj.registerA = 0;
+    parentObj.FZero = true;
+    parentObj.FSubtract = parentObj.FHalfCarry = parentObj.FCarry = false;
+  },
+  //OR B
+  //#0xB0:
+  function (parentObj) {
+    parentObj.registerA |= parentObj.registerB;
+    parentObj.FZero = (parentObj.registerA == 0);
+    parentObj.FSubtract = parentObj.FCarry = parentObj.FHalfCarry = false;
+  },
+  //OR C
+  //#0xB1:
+  function (parentObj) {
+    parentObj.registerA |= parentObj.registerC;
+    parentObj.FZero = (parentObj.registerA == 0);
+    parentObj.FSubtract = parentObj.FCarry = parentObj.FHalfCarry = false;
+  },
+  //OR D
+  //#0xB2:
+  function (parentObj) {
+    parentObj.registerA |= parentObj.registerD;
+    parentObj.FZero = (parentObj.registerA == 0);
+    parentObj.FSubtract = parentObj.FCarry = parentObj.FHalfCarry = false;
+  },
+  //OR E
+  //#0xB3:
+  function (parentObj) {
+    parentObj.registerA |= parentObj.registerE;
+    parentObj.FZero = (parentObj.registerA == 0);
+    parentObj.FSubtract = parentObj.FCarry = parentObj.FHalfCarry = false;
+  },
+  //OR H
+  //#0xB4:
+  function (parentObj) {
+    parentObj.registerA |= (parentObj.registersHL >> 8);
+    parentObj.FZero = (parentObj.registerA == 0);
+    parentObj.FSubtract = parentObj.FCarry = parentObj.FHalfCarry = false;
+  },
+  //OR L
+  //#0xB5:
+  function (parentObj) {
+    parentObj.registerA |= (parentObj.registersHL & 0xFF);
+    parentObj.FZero = (parentObj.registerA == 0);
+    parentObj.FSubtract = parentObj.FCarry = parentObj.FHalfCarry = false;
+  },
+  //OR (HL)
+  //#0xB6:
+  function (parentObj) {
+    parentObj.registerA |= parentObj.memoryReader[parentObj.registersHL](parentObj, parentObj.registersHL);
+    parentObj.FZero = (parentObj.registerA == 0);
+    parentObj.FSubtract = parentObj.FCarry = parentObj.FHalfCarry = false;
+  },
+  //OR A
+  //#0xB7:
+  function (parentObj) {
+    //number | same number == same number
+    parentObj.FZero = (parentObj.registerA == 0);
+    parentObj.FSubtract = parentObj.FCarry = parentObj.FHalfCarry = false;
+  },
+  //CP B
+  //#0xB8:
+  function (parentObj) {
+    var dirtySum = parentObj.registerA - parentObj.registerB;
+    parentObj.FHalfCarry = ((dirtySum & 0xF) > (parentObj.registerA & 0xF));
+    parentObj.FCarry = (dirtySum < 0);
+    parentObj.FZero = (dirtySum == 0);
+    parentObj.FSubtract = true;
+  },
+  //CP C
+  //#0xB9:
+  function (parentObj) {
+    var dirtySum = parentObj.registerA - parentObj.registerC;
+    parentObj.FHalfCarry = ((dirtySum & 0xF) > (parentObj.registerA & 0xF));
+    parentObj.FCarry = (dirtySum < 0);
+    parentObj.FZero = (dirtySum == 0);
+    parentObj.FSubtract = true;
+  },
+  //CP D
+  //#0xBA:
+  function (parentObj) {
+    var dirtySum = parentObj.registerA - parentObj.registerD;
+    parentObj.FHalfCarry = ((dirtySum & 0xF) > (parentObj.registerA & 0xF));
+    parentObj.FCarry = (dirtySum < 0);
+    parentObj.FZero = (dirtySum == 0);
+    parentObj.FSubtract = true;
+  },
+  //CP E
+  //#0xBB:
+  function (parentObj) {
+    var dirtySum = parentObj.registerA - parentObj.registerE;
+    parentObj.FHalfCarry = ((dirtySum & 0xF) > (parentObj.registerA & 0xF));
+    parentObj.FCarry = (dirtySum < 0);
+    parentObj.FZero = (dirtySum == 0);
+    parentObj.FSubtract = true;
+  },
+  //CP H
+  //#0xBC:
+  function (parentObj) {
+    var dirtySum = parentObj.registerA - (parentObj.registersHL >> 8);
+    parentObj.FHalfCarry = ((dirtySum & 0xF) > (parentObj.registerA & 0xF));
+    parentObj.FCarry = (dirtySum < 0);
+    parentObj.FZero = (dirtySum == 0);
+    parentObj.FSubtract = true;
+  },
+  //CP L
+  //#0xBD:
+  function (parentObj) {
+    var dirtySum = parentObj.registerA - (parentObj.registersHL & 0xFF);
+    parentObj.FHalfCarry = ((dirtySum & 0xF) > (parentObj.registerA & 0xF));
+    parentObj.FCarry = (dirtySum < 0);
+    parentObj.FZero = (dirtySum == 0);
+    parentObj.FSubtract = true;
+  },
+  //CP (HL)
+  //#0xBE:
+  function (parentObj) {
+    var dirtySum = parentObj.registerA - parentObj.memoryReader[parentObj.registersHL](parentObj, parentObj.registersHL);
+    parentObj.FHalfCarry = ((dirtySum & 0xF) > (parentObj.registerA & 0xF));
+    parentObj.FCarry = (dirtySum < 0);
+    parentObj.FZero = (dirtySum == 0);
+    parentObj.FSubtract = true;
+  },
+  //CP A
+  //#0xBF:
+  function (parentObj) {
+    parentObj.FHalfCarry = parentObj.FCarry = false;
+    parentObj.FZero = parentObj.FSubtract = true;
+  },
+  //RET !FZ
+  //#0xC0:
+  function (parentObj) {
+    if (!parentObj.FZero) {
+      parentObj.programCounter = (parentObj.memoryRead((parentObj.stackPointer + 1) & 0xFFFF) << 8) | parentObj.memoryReader[parentObj.stackPointer](parentObj, parentObj.stackPointer);
+      parentObj.stackPointer = (parentObj.stackPointer + 2) & 0xFFFF;
+      parentObj.CPUTicks += 12;
+    }
+  },
+  //POP BC
+  //#0xC1:
+  function (parentObj) {
+    parentObj.registerC = parentObj.memoryReader[parentObj.stackPointer](parentObj, parentObj.stackPointer);
+    parentObj.registerB = parentObj.memoryRead((parentObj.stackPointer + 1) & 0xFFFF);
+    parentObj.stackPointer = (parentObj.stackPointer + 2) & 0xFFFF;
+  },
+  //JP !FZ, nn
+  //#0xC2:
+  function (parentObj) {
+    if (!parentObj.FZero) {
+      parentObj.programCounter = (parentObj.memoryRead((parentObj.programCounter + 1) & 0xFFFF) << 8) | parentObj.memoryReader[parentObj.programCounter](parentObj, parentObj.programCounter);
+      parentObj.CPUTicks += 4;
+    }
+    else {
+      parentObj.programCounter = (parentObj.programCounter + 2) & 0xFFFF;
+    }
+  },
+  //JP nn
+  //#0xC3:
+  function (parentObj) {
+    parentObj.programCounter = (parentObj.memoryRead((parentObj.programCounter + 1) & 0xFFFF) << 8) | parentObj.memoryReader[parentObj.programCounter](parentObj, parentObj.programCounter);
+  },
+  //CALL !FZ, nn
+  //#0xC4:
+  function (parentObj) {
+    if (!parentObj.FZero) {
+      var temp_pc = (parentObj.memoryRead((parentObj.programCounter + 1) & 0xFFFF) << 8) | parentObj.memoryReader[parentObj.programCounter](parentObj, parentObj.programCounter);
+      parentObj.programCounter = (parentObj.programCounter + 2) & 0xFFFF;
+      parentObj.stackPointer = (parentObj.stackPointer - 1) & 0xFFFF;
+      parentObj.memoryWriter[parentObj.stackPointer](parentObj, parentObj.stackPointer, parentObj.programCounter >> 8);
+      parentObj.stackPointer = (parentObj.stackPointer - 1) & 0xFFFF;
+      parentObj.memoryWriter[parentObj.stackPointer](parentObj, parentObj.stackPointer, parentObj.programCounter & 0xFF);
+      parentObj.programCounter = temp_pc;
+      parentObj.CPUTicks += 12;
+    }
+    else {
+      parentObj.programCounter = (parentObj.programCounter + 2) & 0xFFFF;
+    }
+  },
+  //PUSH BC
+  //#0xC5:
+  function (parentObj) {
+    parentObj.stackPointer = (parentObj.stackPointer - 1) & 0xFFFF;
+    parentObj.memoryWriter[parentObj.stackPointer](parentObj, parentObj.stackPointer, parentObj.registerB);
+    parentObj.stackPointer = (parentObj.stackPointer - 1) & 0xFFFF;
+    parentObj.memoryWriter[parentObj.stackPointer](parentObj, parentObj.stackPointer, parentObj.registerC);
+  },
+  //ADD, n
+  //#0xC6:
+  function (parentObj) {
+    var dirtySum = parentObj.registerA + parentObj.memoryReader[parentObj.programCounter](parentObj, parentObj.programCounter);
+    parentObj.programCounter = (parentObj.programCounter + 1) & 0xFFFF;
+    parentObj.FHalfCarry = ((dirtySum & 0xF) < (parentObj.registerA & 0xF));
+    parentObj.FCarry = (dirtySum > 0xFF);
+    parentObj.registerA = dirtySum & 0xFF;
+    parentObj.FZero = (parentObj.registerA == 0);
+    parentObj.FSubtract = false;
+  },
+  //RST 0
+  //#0xC7:
+  function (parentObj) {
+    parentObj.stackPointer = (parentObj.stackPointer - 1) & 0xFFFF;
+    parentObj.memoryWriter[parentObj.stackPointer](parentObj, parentObj.stackPointer, parentObj.programCounter >> 8);
+    parentObj.stackPointer = (parentObj.stackPointer - 1) & 0xFFFF;
+    parentObj.memoryWriter[parentObj.stackPointer](parentObj, parentObj.stackPointer, parentObj.programCounter & 0xFF);
+    parentObj.programCounter = 0;
+  },
+  //RET FZ
+  //#0xC8:
+  function (parentObj) {
+    if (parentObj.FZero) {
+      parentObj.programCounter = (parentObj.memoryRead((parentObj.stackPointer + 1) & 0xFFFF) << 8) | parentObj.memoryReader[parentObj.stackPointer](parentObj, parentObj.stackPointer);
+      parentObj.stackPointer = (parentObj.stackPointer + 2) & 0xFFFF;
+      parentObj.CPUTicks += 12;
+    }
+  },
+  //RET
+  //#0xC9:
+  function (parentObj) {
+    parentObj.programCounter =  (parentObj.memoryRead((parentObj.stackPointer + 1) & 0xFFFF) << 8) | parentObj.memoryReader[parentObj.stackPointer](parentObj, parentObj.stackPointer);
+    parentObj.stackPointer = (parentObj.stackPointer + 2) & 0xFFFF;
+  },
+  //JP FZ, nn
+  //#0xCA:
+  function (parentObj) {
+    if (parentObj.FZero) {
+      parentObj.programCounter = (parentObj.memoryRead((parentObj.programCounter + 1) & 0xFFFF) << 8) | parentObj.memoryReader[parentObj.programCounter](parentObj, parentObj.programCounter);
+      parentObj.CPUTicks += 4;
+    }
+    else {
+      parentObj.programCounter = (parentObj.programCounter + 2) & 0xFFFF;
+    }
+  },
+  //Secondary OP Code Set:
+  //#0xCB:
+  function (parentObj) {
+    var opcode = parentObj.memoryReader[parentObj.programCounter](parentObj, parentObj.programCounter);
+    //Increment the program counter to the next instruction:
+    parentObj.programCounter = (parentObj.programCounter + 1) & 0xFFFF;
+    //Get how many CPU cycles the current 0xCBXX op code counts for:
+    parentObj.CPUTicks += parentObj.SecondaryTICKTable[opcode];
+    //Execute secondary OP codes for the 0xCB OP code call.
+    parentObj.CBOPCODE[opcode](parentObj);
+  },
+  //CALL FZ, nn
+  //#0xCC:
+  function (parentObj) {
+    if (parentObj.FZero) {
+      var temp_pc = (parentObj.memoryRead((parentObj.programCounter + 1) & 0xFFFF) << 8) | parentObj.memoryReader[parentObj.programCounter](parentObj, parentObj.programCounter);
+      parentObj.programCounter = (parentObj.programCounter + 2) & 0xFFFF;
+      parentObj.stackPointer = (parentObj.stackPointer - 1) & 0xFFFF;
+      parentObj.memoryWriter[parentObj.stackPointer](parentObj, parentObj.stackPointer, parentObj.programCounter >> 8);
+      parentObj.stackPointer = (parentObj.stackPointer - 1) & 0xFFFF;
+      parentObj.memoryWriter[parentObj.stackPointer](parentObj, parentObj.stackPointer, parentObj.programCounter & 0xFF);
+      parentObj.programCounter = temp_pc;
+      parentObj.CPUTicks += 12;
+    }
+    else {
+      parentObj.programCounter = (parentObj.programCounter + 2) & 0xFFFF;
+    }
+  },
+  //CALL nn
+  //#0xCD:
+  function (parentObj) {
+    var temp_pc = (parentObj.memoryRead((parentObj.programCounter + 1) & 0xFFFF) << 8) | parentObj.memoryReader[parentObj.programCounter](parentObj, parentObj.programCounter);
+    parentObj.programCounter = (parentObj.programCounter + 2) & 0xFFFF;
+    parentObj.stackPointer = (parentObj.stackPointer - 1) & 0xFFFF;
+    parentObj.memoryWriter[parentObj.stackPointer](parentObj, parentObj.stackPointer, parentObj.programCounter >> 8);
+    parentObj.stackPointer = (parentObj.stackPointer - 1) & 0xFFFF;
+    parentObj.memoryWriter[parentObj.stackPointer](parentObj, parentObj.stackPointer, parentObj.programCounter & 0xFF);
+    parentObj.programCounter = temp_pc;
+  },
+  //ADC A, n
+  //#0xCE:
+  function (parentObj) {
+    var tempValue = parentObj.memoryReader[parentObj.programCounter](parentObj, parentObj.programCounter);
+    parentObj.programCounter = (parentObj.programCounter + 1) & 0xFFFF;
+    var dirtySum = parentObj.registerA + tempValue + ((parentObj.FCarry) ? 1 : 0);
+    parentObj.FHalfCarry = ((parentObj.registerA & 0xF) + (tempValue & 0xF) + ((parentObj.FCarry) ? 1 : 0) > 0xF);
+    parentObj.FCarry = (dirtySum > 0xFF);
+    parentObj.registerA = dirtySum & 0xFF;
+    parentObj.FZero = (parentObj.registerA == 0);
+    parentObj.FSubtract = false;
+  },
+  //RST 0x8
+  //#0xCF:
+  function (parentObj) {
+    parentObj.stackPointer = (parentObj.stackPointer - 1) & 0xFFFF;
+    parentObj.memoryWriter[parentObj.stackPointer](parentObj, parentObj.stackPointer, parentObj.programCounter >> 8);
+    parentObj.stackPointer = (parentObj.stackPointer - 1) & 0xFFFF;
+    parentObj.memoryWriter[parentObj.stackPointer](parentObj, parentObj.stackPointer, parentObj.programCounter & 0xFF);
+    parentObj.programCounter = 0x8;
+  },
+  //RET !FC
+  //#0xD0:
+  function (parentObj) {
+    if (!parentObj.FCarry) {
+      parentObj.programCounter = (parentObj.memoryRead((parentObj.stackPointer + 1) & 0xFFFF) << 8) | parentObj.memoryReader[parentObj.stackPointer](parentObj, parentObj.stackPointer);
+      parentObj.stackPointer = (parentObj.stackPointer + 2) & 0xFFFF;
+      parentObj.CPUTicks += 12;
+    }
+  },
+  //POP DE
+  //#0xD1:
+  function (parentObj) {
+    parentObj.registerE = parentObj.memoryReader[parentObj.stackPointer](parentObj, parentObj.stackPointer);
+    parentObj.registerD = parentObj.memoryRead((parentObj.stackPointer + 1) & 0xFFFF);
+    parentObj.stackPointer = (parentObj.stackPointer + 2) & 0xFFFF;
+  },
+  //JP !FC, nn
+  //#0xD2:
+  function (parentObj) {
+    if (!parentObj.FCarry) {
+      parentObj.programCounter = (parentObj.memoryRead((parentObj.programCounter + 1) & 0xFFFF) << 8) | parentObj.memoryReader[parentObj.programCounter](parentObj, parentObj.programCounter);
+      parentObj.CPUTicks += 4;
+    }
+    else {
+      parentObj.programCounter = (parentObj.programCounter + 2) & 0xFFFF;
+    }
+  },
+  //0xD3 - Illegal
+  //#0xD3:
+  function (parentObj) {
+    cout("Illegal op code 0xD3 called, pausing emulation.", 2);
+    pause();
+  },
+  //CALL !FC, nn
+  //#0xD4:
+  function (parentObj) {
+    if (!parentObj.FCarry) {
+      var temp_pc = (parentObj.memoryRead((parentObj.programCounter + 1) & 0xFFFF) << 8) | parentObj.memoryReader[parentObj.programCounter](parentObj, parentObj.programCounter);
+      parentObj.programCounter = (parentObj.programCounter + 2) & 0xFFFF;
+      parentObj.stackPointer = (parentObj.stackPointer - 1) & 0xFFFF;
+      parentObj.memoryWriter[parentObj.stackPointer](parentObj, parentObj.stackPointer, parentObj.programCounter >> 8);
+      parentObj.stackPointer = (parentObj.stackPointer - 1) & 0xFFFF;
+      parentObj.memoryWriter[parentObj.stackPointer](parentObj, parentObj.stackPointer, parentObj.programCounter & 0xFF);
+      parentObj.programCounter = temp_pc;
+      parentObj.CPUTicks += 12;
+    }
+    else {
+      parentObj.programCounter = (parentObj.programCounter + 2) & 0xFFFF;
+    }
+  },
+  //PUSH DE
+  //#0xD5:
+  function (parentObj) {
+    parentObj.stackPointer = (parentObj.stackPointer - 1) & 0xFFFF;
+    parentObj.memoryWriter[parentObj.stackPointer](parentObj, parentObj.stackPointer, parentObj.registerD);
+    parentObj.stackPointer = (parentObj.stackPointer - 1) & 0xFFFF;
+    parentObj.memoryWriter[parentObj.stackPointer](parentObj, parentObj.stackPointer, parentObj.registerE);
+  },
+  //SUB A, n
+  //#0xD6:
+  function (parentObj) {
+    var dirtySum = parentObj.registerA - parentObj.memoryReader[parentObj.programCounter](parentObj, parentObj.programCounter);
+    parentObj.programCounter = (parentObj.programCounter + 1) & 0xFFFF;
+    parentObj.FHalfCarry = ((parentObj.registerA & 0xF) < (dirtySum & 0xF));
+    parentObj.FCarry = (dirtySum < 0);
+    parentObj.registerA = dirtySum & 0xFF;
+    parentObj.FZero = (dirtySum == 0);
+    parentObj.FSubtract = true;
+  },
+  //RST 0x10
+  //#0xD7:
+  function (parentObj) {
+    parentObj.stackPointer = (parentObj.stackPointer - 1) & 0xFFFF;
+    parentObj.memoryWriter[parentObj.stackPointer](parentObj, parentObj.stackPointer, parentObj.programCounter >> 8);
+    parentObj.stackPointer = (parentObj.stackPointer - 1) & 0xFFFF;
+    parentObj.memoryWriter[parentObj.stackPointer](parentObj, parentObj.stackPointer, parentObj.programCounter & 0xFF);
+    parentObj.programCounter = 0x10;
+  },
+  //RET FC
+  //#0xD8:
+  function (parentObj) {
+    if (parentObj.FCarry) {
+      parentObj.programCounter = (parentObj.memoryRead((parentObj.stackPointer + 1) & 0xFFFF) << 8) | parentObj.memoryReader[parentObj.stackPointer](parentObj, parentObj.stackPointer);
+      parentObj.stackPointer = (parentObj.stackPointer + 2) & 0xFFFF;
+      parentObj.CPUTicks += 12;
+    }
+  },
+  //RETI
+  //#0xD9:
+  function (parentObj) {
+    parentObj.programCounter = (parentObj.memoryRead((parentObj.stackPointer + 1) & 0xFFFF) << 8) | parentObj.memoryReader[parentObj.stackPointer](parentObj, parentObj.stackPointer);
+    parentObj.stackPointer = (parentObj.stackPointer + 2) & 0xFFFF;
+    //Immediate for HALT:
+    parentObj.IRQEnableDelay = (parentObj.IRQEnableDelay == 2 || parentObj.memoryReader[parentObj.programCounter](parentObj, parentObj.programCounter) == 0x76) ? 1 : 2;
+  },
+  //JP FC, nn
+  //#0xDA:
+  function (parentObj) {
+    if (parentObj.FCarry) {
+      parentObj.programCounter = (parentObj.memoryRead((parentObj.programCounter + 1) & 0xFFFF) << 8) | parentObj.memoryReader[parentObj.programCounter](parentObj, parentObj.programCounter);
+      parentObj.CPUTicks += 4;
+    }
+    else {
+      parentObj.programCounter = (parentObj.programCounter + 2) & 0xFFFF;
+    }
+  },
+  //0xDB - Illegal
+  //#0xDB:
+  function (parentObj) {
+    cout("Illegal op code 0xDB called, pausing emulation.", 2);
+    pause();
+  },
+  //CALL FC, nn
+  //#0xDC:
+  function (parentObj) {
+    if (parentObj.FCarry) {
+      var temp_pc = (parentObj.memoryRead((parentObj.programCounter + 1) & 0xFFFF) << 8) | parentObj.memoryReader[parentObj.programCounter](parentObj, parentObj.programCounter);
+      parentObj.programCounter = (parentObj.programCounter + 2) & 0xFFFF;
+      parentObj.stackPointer = (parentObj.stackPointer - 1) & 0xFFFF;
+      parentObj.memoryWriter[parentObj.stackPointer](parentObj, parentObj.stackPointer, parentObj.programCounter >> 8);
+      parentObj.stackPointer = (parentObj.stackPointer - 1) & 0xFFFF;
+      parentObj.memoryWriter[parentObj.stackPointer](parentObj, parentObj.stackPointer, parentObj.programCounter & 0xFF);
+      parentObj.programCounter = temp_pc;
+      parentObj.CPUTicks += 12;
+    }
+    else {
+      parentObj.programCounter = (parentObj.programCounter + 2) & 0xFFFF;
+    }
+  },
+  //0xDD - Illegal
+  //#0xDD:
+  function (parentObj) {
+    cout("Illegal op code 0xDD called, pausing emulation.", 2);
+    pause();
+  },
+  //SBC A, n
+  //#0xDE:
+  function (parentObj) {
+    var temp_var = parentObj.memoryReader[parentObj.programCounter](parentObj, parentObj.programCounter);
+    parentObj.programCounter = (parentObj.programCounter + 1) & 0xFFFF;
+    var dirtySum = parentObj.registerA - temp_var - ((parentObj.FCarry) ? 1 : 0);
+    parentObj.FHalfCarry = ((parentObj.registerA & 0xF) - (temp_var & 0xF) - ((parentObj.FCarry) ? 1 : 0) < 0);
+    parentObj.FCarry = (dirtySum < 0);
+    parentObj.registerA = dirtySum & 0xFF;
+    parentObj.FZero = (parentObj.registerA == 0);
+    parentObj.FSubtract = true;
+  },
+  //RST 0x18
+  //#0xDF:
+  function (parentObj) {
+    parentObj.stackPointer = (parentObj.stackPointer - 1) & 0xFFFF;
+    parentObj.memoryWriter[parentObj.stackPointer](parentObj, parentObj.stackPointer, parentObj.programCounter >> 8);
+    parentObj.stackPointer = (parentObj.stackPointer - 1) & 0xFFFF;
+    parentObj.memoryWriter[parentObj.stackPointer](parentObj, parentObj.stackPointer, parentObj.programCounter & 0xFF);
+    parentObj.programCounter = 0x18;
+  },
+  //LDH (n), A
+  //#0xE0:
+  function (parentObj) {
+    parentObj.memoryHighWrite(parentObj.memoryReader[parentObj.programCounter](parentObj, parentObj.programCounter), parentObj.registerA);
+    parentObj.programCounter = (parentObj.programCounter + 1) & 0xFFFF;
+  },
+  //POP HL
+  //#0xE1:
+  function (parentObj) {
+    parentObj.registersHL = (parentObj.memoryRead((parentObj.stackPointer + 1) & 0xFFFF) << 8) | parentObj.memoryReader[parentObj.stackPointer](parentObj, parentObj.stackPointer);
+    parentObj.stackPointer = (parentObj.stackPointer + 2) & 0xFFFF;
+  },
+  //LD (0xFF00 + C), A
+  //#0xE2:
+  function (parentObj) {
+    parentObj.memoryHighWriter[parentObj.registerC](parentObj, parentObj.registerC, parentObj.registerA);
+  },
+  //0xE3 - Illegal
+  //#0xE3:
+  function (parentObj) {
+    cout("Illegal op code 0xE3 called, pausing emulation.", 2);
+    pause();
+  },
+  //0xE4 - Illegal
+  //#0xE4:
+  function (parentObj) {
+    cout("Illegal op code 0xE4 called, pausing emulation.", 2);
+    pause();
+  },
+  //PUSH HL
+  //#0xE5:
+  function (parentObj) {
+    parentObj.stackPointer = (parentObj.stackPointer - 1) & 0xFFFF;
+    parentObj.memoryWriter[parentObj.stackPointer](parentObj, parentObj.stackPointer, parentObj.registersHL >> 8);
+    parentObj.stackPointer = (parentObj.stackPointer - 1) & 0xFFFF;
+    parentObj.memoryWriter[parentObj.stackPointer](parentObj, parentObj.stackPointer, parentObj.registersHL & 0xFF);
+  },
+  //AND n
+  //#0xE6:
+  function (parentObj) {
+    parentObj.registerA &= parentObj.memoryReader[parentObj.programCounter](parentObj, parentObj.programCounter);
+    parentObj.programCounter = (parentObj.programCounter + 1) & 0xFFFF;
+    parentObj.FZero = (parentObj.registerA == 0);
+    parentObj.FHalfCarry = true;
+    parentObj.FSubtract = parentObj.FCarry = false;
+  },
+  //RST 0x20
+  //#0xE7:
+  function (parentObj) {
+    parentObj.stackPointer = (parentObj.stackPointer - 1) & 0xFFFF;
+    parentObj.memoryWriter[parentObj.stackPointer](parentObj, parentObj.stackPointer, parentObj.programCounter >> 8);
+    parentObj.stackPointer = (parentObj.stackPointer - 1) & 0xFFFF;
+    parentObj.memoryWriter[parentObj.stackPointer](parentObj, parentObj.stackPointer, parentObj.programCounter & 0xFF);
+    parentObj.programCounter = 0x20;
+  },
+  //ADD SP, n
+  //#0xE8:
+  function (parentObj) {
+    var temp_value2 = (parentObj.memoryReader[parentObj.programCounter](parentObj, parentObj.programCounter) << 24) >> 24;
+    parentObj.programCounter = (parentObj.programCounter + 1) & 0xFFFF;
+    var temp_value = (parentObj.stackPointer + temp_value2) & 0xFFFF;
+    temp_value2 = parentObj.stackPointer ^ temp_value2 ^ temp_value;
+    parentObj.stackPointer = temp_value;
+    parentObj.FCarry = ((temp_value2 & 0x100) == 0x100);
+    parentObj.FHalfCarry = ((temp_value2 & 0x10) == 0x10);
+    parentObj.FZero = parentObj.FSubtract = false;
+  },
+  //JP, (HL)
+  //#0xE9:
+  function (parentObj) {
+    parentObj.programCounter = parentObj.registersHL;
+  },
+  //LD n, A
+  //#0xEA:
+  function (parentObj) {
+    parentObj.memoryWrite((parentObj.memoryRead((parentObj.programCounter + 1) & 0xFFFF) << 8) | parentObj.memoryReader[parentObj.programCounter](parentObj, parentObj.programCounter), parentObj.registerA);
+    parentObj.programCounter = (parentObj.programCounter + 2) & 0xFFFF;
+  },
+  //0xEB - Illegal
+  //#0xEB:
+  function (parentObj) {
+    cout("Illegal op code 0xEB called, pausing emulation.", 2);
+    pause();
+  },
+  //0xEC - Illegal
+  //#0xEC:
+  function (parentObj) {
+    cout("Illegal op code 0xEC called, pausing emulation.", 2);
+    pause();
+  },
+  //0xED - Illegal
+  //#0xED:
+  function (parentObj) {
+    cout("Illegal op code 0xED called, pausing emulation.", 2);
+    pause();
+  },
+  //XOR n
+  //#0xEE:
+  function (parentObj) {
+    parentObj.registerA ^= parentObj.memoryReader[parentObj.programCounter](parentObj, parentObj.programCounter);
+    parentObj.programCounter = (parentObj.programCounter + 1) & 0xFFFF;
+    parentObj.FZero = (parentObj.registerA == 0);
+    parentObj.FSubtract = parentObj.FHalfCarry = parentObj.FCarry = false;
+  },
+  //RST 0x28
+  //#0xEF:
+  function (parentObj) {
+    parentObj.stackPointer = (parentObj.stackPointer - 1) & 0xFFFF;
+    parentObj.memoryWriter[parentObj.stackPointer](parentObj, parentObj.stackPointer, parentObj.programCounter >> 8);
+    parentObj.stackPointer = (parentObj.stackPointer - 1) & 0xFFFF;
+    parentObj.memoryWriter[parentObj.stackPointer](parentObj, parentObj.stackPointer, parentObj.programCounter & 0xFF);
+    parentObj.programCounter = 0x28;
+  },
+  //LDH A, (n)
+  //#0xF0:
+  function (parentObj) {
+    parentObj.registerA = parentObj.memoryHighRead(parentObj.memoryReader[parentObj.programCounter](parentObj, parentObj.programCounter));
+    parentObj.programCounter = (parentObj.programCounter + 1) & 0xFFFF;
+  },
+  //POP AF
+  //#0xF1:
+  function (parentObj) {
+    var temp_var = parentObj.memoryReader[parentObj.stackPointer](parentObj, parentObj.stackPointer);
+    parentObj.FZero = (temp_var > 0x7F);
+    parentObj.FSubtract = ((temp_var & 0x40) == 0x40);
+    parentObj.FHalfCarry = ((temp_var & 0x20) == 0x20);
+    parentObj.FCarry = ((temp_var & 0x10) == 0x10);
+    parentObj.registerA = parentObj.memoryRead((parentObj.stackPointer + 1) & 0xFFFF);
+    parentObj.stackPointer = (parentObj.stackPointer + 2) & 0xFFFF;
+  },
+  //LD A, (0xFF00 + C)
+  //#0xF2:
+  function (parentObj) {
+    parentObj.registerA = parentObj.memoryHighReader[parentObj.registerC](parentObj, parentObj.registerC);
+  },
+  //DI
+  //#0xF3:
+  function (parentObj) {
+    parentObj.IME = false;
+    parentObj.IRQEnableDelay = 0;
+  },
+  //0xF4 - Illegal
+  //#0xF4:
+  function (parentObj) {
+    cout("Illegal op code 0xF4 called, pausing emulation.", 2);
+    pause();
+  },
+  //PUSH AF
+  //#0xF5:
+  function (parentObj) {
+    parentObj.stackPointer = (parentObj.stackPointer - 1) & 0xFFFF;
+    parentObj.memoryWriter[parentObj.stackPointer](parentObj, parentObj.stackPointer, parentObj.registerA);
+    parentObj.stackPointer = (parentObj.stackPointer - 1) & 0xFFFF;
+    parentObj.memoryWriter[parentObj.stackPointer](parentObj, parentObj.stackPointer, ((parentObj.FZero) ? 0x80 : 0) | ((parentObj.FSubtract) ? 0x40 : 0) | ((parentObj.FHalfCarry) ? 0x20 : 0) | ((parentObj.FCarry) ? 0x10 : 0));
+  },
+  //OR n
+  //#0xF6:
+  function (parentObj) {
+    parentObj.registerA |= parentObj.memoryReader[parentObj.programCounter](parentObj, parentObj.programCounter);
+    parentObj.FZero = (parentObj.registerA == 0);
+    parentObj.programCounter = (parentObj.programCounter + 1) & 0xFFFF;
+    parentObj.FSubtract = parentObj.FCarry = parentObj.FHalfCarry = false;
+  },
+  //RST 0x30
+  //#0xF7:
+  function (parentObj) {
+    parentObj.stackPointer = (parentObj.stackPointer - 1) & 0xFFFF;
+    parentObj.memoryWriter[parentObj.stackPointer](parentObj, parentObj.stackPointer, parentObj.programCounter >> 8);
+    parentObj.stackPointer = (parentObj.stackPointer - 1) & 0xFFFF;
+    parentObj.memoryWriter[parentObj.stackPointer](parentObj, parentObj.stackPointer, parentObj.programCounter & 0xFF);
+    parentObj.programCounter = 0x30;
+  },
+  //LDHL SP, n
+  //#0xF8:
+  function (parentObj) {
+    var temp_var = (parentObj.memoryReader[parentObj.programCounter](parentObj, parentObj.programCounter) << 24) >> 24;
+    parentObj.programCounter = (parentObj.programCounter + 1) & 0xFFFF;
+    parentObj.registersHL = (parentObj.stackPointer + temp_var) & 0xFFFF;
+    temp_var = parentObj.stackPointer ^ temp_var ^ parentObj.registersHL;
+    parentObj.FCarry = ((temp_var & 0x100) == 0x100);
+    parentObj.FHalfCarry = ((temp_var & 0x10) == 0x10);
+    parentObj.FZero = parentObj.FSubtract = false;
+  },
+  //LD SP, HL
+  //#0xF9:
+  function (parentObj) {
+    parentObj.stackPointer = parentObj.registersHL;
+  },
+  //LD A, (nn)
+  //#0xFA:
+  function (parentObj) {
+    parentObj.registerA = parentObj.memoryRead((parentObj.memoryRead((parentObj.programCounter + 1) & 0xFFFF) << 8) | parentObj.memoryReader[parentObj.programCounter](parentObj, parentObj.programCounter));
+    parentObj.programCounter = (parentObj.programCounter + 2) & 0xFFFF;
+  },
+  //EI
+  //#0xFB:
+  function (parentObj) {
+    //Immediate for HALT:
+    parentObj.IRQEnableDelay = (parentObj.IRQEnableDelay == 2 || parentObj.memoryReader[parentObj.programCounter](parentObj, parentObj.programCounter) == 0x76) ? 1 : 2;
+  },
+  //0xFC - Illegal
+  //#0xFC:
+  function (parentObj) {
+    cout("Illegal op code 0xFC called, pausing emulation.", 2);
+    pause();
+  },
+  //0xFD - Illegal
+  //#0xFD:
+  function (parentObj) {
+    cout("Illegal op code 0xFD called, pausing emulation.", 2);
+    pause();
+  },
+  //CP n
+  //#0xFE:
+  function (parentObj) {
+    var dirtySum = parentObj.registerA - parentObj.memoryReader[parentObj.programCounter](parentObj, parentObj.programCounter);
+    parentObj.programCounter = (parentObj.programCounter + 1) & 0xFFFF;
+    parentObj.FHalfCarry = ((dirtySum & 0xF) > (parentObj.registerA & 0xF));
+    parentObj.FCarry = (dirtySum < 0);
+    parentObj.FZero = (dirtySum == 0);
+    parentObj.FSubtract = true;
+  },
+  //RST 0x38
+  //#0xFF:
+  function (parentObj) {
+    parentObj.stackPointer = (parentObj.stackPointer - 1) & 0xFFFF;
+    parentObj.memoryWriter[parentObj.stackPointer](parentObj, parentObj.stackPointer, parentObj.programCounter >> 8);
+    parentObj.stackPointer = (parentObj.stackPointer - 1) & 0xFFFF;
+    parentObj.memoryWriter[parentObj.stackPointer](parentObj, parentObj.stackPointer, parentObj.programCounter & 0xFF);
+    parentObj.programCounter = 0x38;
+  }
+];
+GameBoyCore.prototype.CBOPCODE = [
+  //RLC B
+  //#0x00:
+  function (parentObj) {
+    parentObj.FCarry = (parentObj.registerB > 0x7F);
+    parentObj.registerB = ((parentObj.registerB << 1) & 0xFF) | ((parentObj.FCarry) ? 1 : 0);
+    parentObj.FHalfCarry = parentObj.FSubtract = false;
+    parentObj.FZero = (parentObj.registerB == 0);
+  }
+  //RLC C
+  //#0x01:
+  ,function (parentObj) {
+    parentObj.FCarry = (parentObj.registerC > 0x7F);
+    parentObj.registerC = ((parentObj.registerC << 1) & 0xFF) | ((parentObj.FCarry) ? 1 : 0);
+    parentObj.FHalfCarry = parentObj.FSubtract = false;
+    parentObj.FZero = (parentObj.registerC == 0);
+  }
+  //RLC D
+  //#0x02:
+  ,function (parentObj) {
+    parentObj.FCarry = (parentObj.registerD > 0x7F);
+    parentObj.registerD = ((parentObj.registerD << 1) & 0xFF) | ((parentObj.FCarry) ? 1 : 0);
+    parentObj.FHalfCarry = parentObj.FSubtract = false;
+    parentObj.FZero = (parentObj.registerD == 0);
+  }
+  //RLC E
+  //#0x03:
+  ,function (parentObj) {
+    parentObj.FCarry = (parentObj.registerE > 0x7F);
+    parentObj.registerE = ((parentObj.registerE << 1) & 0xFF) | ((parentObj.FCarry) ? 1 : 0);
+    parentObj.FHalfCarry = parentObj.FSubtract = false;
+    parentObj.FZero = (parentObj.registerE == 0);
+  }
+  //RLC H
+  //#0x04:
+  ,function (parentObj) {
+    parentObj.FCarry = (parentObj.registersHL > 0x7FFF);
+    parentObj.registersHL = ((parentObj.registersHL << 1) & 0xFE00) | ((parentObj.FCarry) ? 0x100 : 0) | (parentObj.registersHL & 0xFF);
+    parentObj.FHalfCarry = parentObj.FSubtract = false;
+    parentObj.FZero = (parentObj.registersHL < 0x100);
+  }
+  //RLC L
+  //#0x05:
+  ,function (parentObj) {
+    parentObj.FCarry = ((parentObj.registersHL & 0x80) == 0x80);
+    parentObj.registersHL = (parentObj.registersHL & 0xFF00) | ((parentObj.registersHL << 1) & 0xFF) | ((parentObj.FCarry) ? 1 : 0);
+    parentObj.FHalfCarry = parentObj.FSubtract = false;
+    parentObj.FZero = ((parentObj.registersHL & 0xFF) == 0);
+  }
+  //RLC (HL)
+  //#0x06:
+  ,function (parentObj) {
+    var temp_var = parentObj.memoryReader[parentObj.registersHL](parentObj, parentObj.registersHL);
+    parentObj.FCarry = (temp_var > 0x7F);
+    temp_var = ((temp_var << 1) & 0xFF) | ((parentObj.FCarry) ? 1 : 0);
+    parentObj.memoryWriter[parentObj.registersHL](parentObj, parentObj.registersHL, temp_var);
+    parentObj.FHalfCarry = parentObj.FSubtract = false;
+    parentObj.FZero = (temp_var == 0);
+  }
+  //RLC A
+  //#0x07:
+  ,function (parentObj) {
+    parentObj.FCarry = (parentObj.registerA > 0x7F);
+    parentObj.registerA = ((parentObj.registerA << 1) & 0xFF) | ((parentObj.FCarry) ? 1 : 0);
+    parentObj.FHalfCarry = parentObj.FSubtract = false;
+    parentObj.FZero = (parentObj.registerA == 0);
+  }
+  //RRC B
+  //#0x08:
+  ,function (parentObj) {
+    parentObj.FCarry = ((parentObj.registerB & 0x01) == 0x01);
+    parentObj.registerB = ((parentObj.FCarry) ? 0x80 : 0) | (parentObj.registerB >> 1);
+    parentObj.FHalfCarry = parentObj.FSubtract = false;
+    parentObj.FZero = (parentObj.registerB == 0);
+  }
+  //RRC C
+  //#0x09:
+  ,function (parentObj) {
+    parentObj.FCarry = ((parentObj.registerC & 0x01) == 0x01);
+    parentObj.registerC = ((parentObj.FCarry) ? 0x80 : 0) | (parentObj.registerC >> 1);
+    parentObj.FHalfCarry = parentObj.FSubtract = false;
+    parentObj.FZero = (parentObj.registerC == 0);
+  }
+  //RRC D
+  //#0x0A:
+  ,function (parentObj) {
+    parentObj.FCarry = ((parentObj.registerD & 0x01) == 0x01);
+    parentObj.registerD = ((parentObj.FCarry) ? 0x80 : 0) | (parentObj.registerD >> 1);
+    parentObj.FHalfCarry = parentObj.FSubtract = false;
+    parentObj.FZero = (parentObj.registerD == 0);
+  }
+  //RRC E
+  //#0x0B:
+  ,function (parentObj) {
+    parentObj.FCarry = ((parentObj.registerE & 0x01) == 0x01);
+    parentObj.registerE = ((parentObj.FCarry) ? 0x80 : 0) | (parentObj.registerE >> 1);
+    parentObj.FHalfCarry = parentObj.FSubtract = false;
+    parentObj.FZero = (parentObj.registerE == 0);
+  }
+  //RRC H
+  //#0x0C:
+  ,function (parentObj) {
+    parentObj.FCarry = ((parentObj.registersHL & 0x0100) == 0x0100);
+    parentObj.registersHL = ((parentObj.FCarry) ? 0x8000 : 0) | ((parentObj.registersHL >> 1) & 0xFF00) | (parentObj.registersHL & 0xFF);
+    parentObj.FHalfCarry = parentObj.FSubtract = false;
+    parentObj.FZero = (parentObj.registersHL < 0x100);
+  }
+  //RRC L
+  //#0x0D:
+  ,function (parentObj) {
+    parentObj.FCarry = ((parentObj.registersHL & 0x01) == 0x01);
+    parentObj.registersHL = (parentObj.registersHL & 0xFF00) | ((parentObj.FCarry) ? 0x80 : 0) | ((parentObj.registersHL & 0xFF) >> 1);
+    parentObj.FHalfCarry = parentObj.FSubtract = false;
+    parentObj.FZero = ((parentObj.registersHL & 0xFF) == 0);
+  }
+  //RRC (HL)
+  //#0x0E:
+  ,function (parentObj) {
+    var temp_var = parentObj.memoryReader[parentObj.registersHL](parentObj, parentObj.registersHL);
+    parentObj.FCarry = ((temp_var & 0x01) == 0x01);
+    temp_var = ((parentObj.FCarry) ? 0x80 : 0) | (temp_var >> 1);
+    parentObj.memoryWriter[parentObj.registersHL](parentObj, parentObj.registersHL, temp_var);
+    parentObj.FHalfCarry = parentObj.FSubtract = false;
+    parentObj.FZero = (temp_var == 0);
+  }
+  //RRC A
+  //#0x0F:
+  ,function (parentObj) {
+    parentObj.FCarry = ((parentObj.registerA & 0x01) == 0x01);
+    parentObj.registerA = ((parentObj.FCarry) ? 0x80 : 0) | (parentObj.registerA >> 1);
+    parentObj.FHalfCarry = parentObj.FSubtract = false;
+    parentObj.FZero = (parentObj.registerA == 0);
+  }
+  //RL B
+  //#0x10:
+  ,function (parentObj) {
+    var newFCarry = (parentObj.registerB > 0x7F);
+    parentObj.registerB = ((parentObj.registerB << 1) & 0xFF) | ((parentObj.FCarry) ? 1 : 0);
+    parentObj.FCarry = newFCarry;
+    parentObj.FHalfCarry = parentObj.FSubtract = false;
+    parentObj.FZero = (parentObj.registerB == 0);
+  }
+  //RL C
+  //#0x11:
+  ,function (parentObj) {
+    var newFCarry = (parentObj.registerC > 0x7F);
+    parentObj.registerC = ((parentObj.registerC << 1) & 0xFF) | ((parentObj.FCarry) ? 1 : 0);
+    parentObj.FCarry = newFCarry;
+    parentObj.FHalfCarry = parentObj.FSubtract = false;
+    parentObj.FZero = (parentObj.registerC == 0);
+  }
+  //RL D
+  //#0x12:
+  ,function (parentObj) {
+    var newFCarry = (parentObj.registerD > 0x7F);
+    parentObj.registerD = ((parentObj.registerD << 1) & 0xFF) | ((parentObj.FCarry) ? 1 : 0);
+    parentObj.FCarry = newFCarry;
+    parentObj.FHalfCarry = parentObj.FSubtract = false;
+    parentObj.FZero = (parentObj.registerD == 0);
+  }
+  //RL E
+  //#0x13:
+  ,function (parentObj) {
+    var newFCarry = (parentObj.registerE > 0x7F);
+    parentObj.registerE = ((parentObj.registerE << 1) & 0xFF) | ((parentObj.FCarry) ? 1 : 0);
+    parentObj.FCarry = newFCarry;
+    parentObj.FHalfCarry = parentObj.FSubtract = false;
+    parentObj.FZero = (parentObj.registerE == 0);
+  }
+  //RL H
+  //#0x14:
+  ,function (parentObj) {
+    var newFCarry = (parentObj.registersHL > 0x7FFF);
+    parentObj.registersHL = ((parentObj.registersHL << 1) & 0xFE00) | ((parentObj.FCarry) ? 0x100 : 0) | (parentObj.registersHL & 0xFF);
+    parentObj.FCarry = newFCarry;
+    parentObj.FHalfCarry = parentObj.FSubtract = false;
+    parentObj.FZero = (parentObj.registersHL < 0x100);
+  }
+  //RL L
+  //#0x15:
+  ,function (parentObj) {
+    var newFCarry = ((parentObj.registersHL & 0x80) == 0x80);
+    parentObj.registersHL = (parentObj.registersHL & 0xFF00) | ((parentObj.registersHL << 1) & 0xFF) | ((parentObj.FCarry) ? 1 : 0);
+    parentObj.FCarry = newFCarry;
+    parentObj.FHalfCarry = parentObj.FSubtract = false;
+    parentObj.FZero = ((parentObj.registersHL & 0xFF) == 0);
+  }
+  //RL (HL)
+  //#0x16:
+  ,function (parentObj) {
+    var temp_var = parentObj.memoryReader[parentObj.registersHL](parentObj, parentObj.registersHL);
+    var newFCarry = (temp_var > 0x7F);
+    temp_var = ((temp_var << 1) & 0xFF) | ((parentObj.FCarry) ? 1 : 0);
+    parentObj.FCarry = newFCarry;
+    parentObj.memoryWriter[parentObj.registersHL](parentObj, parentObj.registersHL, temp_var);
+    parentObj.FHalfCarry = parentObj.FSubtract = false;
+    parentObj.FZero = (temp_var == 0);
+  }
+  //RL A
+  //#0x17:
+  ,function (parentObj) {
+    var newFCarry = (parentObj.registerA > 0x7F);
+    parentObj.registerA = ((parentObj.registerA << 1) & 0xFF) | ((parentObj.FCarry) ? 1 : 0);
+    parentObj.FCarry = newFCarry;
+    parentObj.FHalfCarry = parentObj.FSubtract = false;
+    parentObj.FZero = (parentObj.registerA == 0);
+  }
+  //RR B
+  //#0x18:
+  ,function (parentObj) {
+    var newFCarry = ((parentObj.registerB & 0x01) == 0x01);
+    parentObj.registerB = ((parentObj.FCarry) ? 0x80 : 0) | (parentObj.registerB >> 1);
+    parentObj.FCarry = newFCarry;
+    parentObj.FHalfCarry = parentObj.FSubtract = false;
+    parentObj.FZero = (parentObj.registerB == 0);
+  }
+  //RR C
+  //#0x19:
+  ,function (parentObj) {
+    var newFCarry = ((parentObj.registerC & 0x01) == 0x01);
+    parentObj.registerC = ((parentObj.FCarry) ? 0x80 : 0) | (parentObj.registerC >> 1);
+    parentObj.FCarry = newFCarry;
+    parentObj.FHalfCarry = parentObj.FSubtract = false;
+    parentObj.FZero = (parentObj.registerC == 0);
+  }
+  //RR D
+  //#0x1A:
+  ,function (parentObj) {
+    var newFCarry = ((parentObj.registerD & 0x01) == 0x01);
+    parentObj.registerD = ((parentObj.FCarry) ? 0x80 : 0) | (parentObj.registerD >> 1);
+    parentObj.FCarry = newFCarry;
+    parentObj.FHalfCarry = parentObj.FSubtract = false;
+    parentObj.FZero = (parentObj.registerD == 0);
+  }
+  //RR E
+  //#0x1B:
+  ,function (parentObj) {
+    var newFCarry = ((parentObj.registerE & 0x01) == 0x01);
+    parentObj.registerE = ((parentObj.FCarry) ? 0x80 : 0) | (parentObj.registerE >> 1);
+    parentObj.FCarry = newFCarry;
+    parentObj.FHalfCarry = parentObj.FSubtract = false;
+    parentObj.FZero = (parentObj.registerE == 0);
+  }
+  //RR H
+  //#0x1C:
+  ,function (parentObj) {
+    var newFCarry = ((parentObj.registersHL & 0x0100) == 0x0100);
+    parentObj.registersHL = ((parentObj.FCarry) ? 0x8000 : 0) | ((parentObj.registersHL >> 1) & 0xFF00) | (parentObj.registersHL & 0xFF);
+    parentObj.FCarry = newFCarry;
+    parentObj.FHalfCarry = parentObj.FSubtract = false;
+    parentObj.FZero = (parentObj.registersHL < 0x100);
+  }
+  //RR L
+  //#0x1D:
+  ,function (parentObj) {
+    var newFCarry = ((parentObj.registersHL & 0x01) == 0x01);
+    parentObj.registersHL = (parentObj.registersHL & 0xFF00) | ((parentObj.FCarry) ? 0x80 : 0) | ((parentObj.registersHL & 0xFF) >> 1);
+    parentObj.FCarry = newFCarry;
+    parentObj.FHalfCarry = parentObj.FSubtract = false;
+    parentObj.FZero = ((parentObj.registersHL & 0xFF) == 0);
+  }
+  //RR (HL)
+  //#0x1E:
+  ,function (parentObj) {
+    var temp_var = parentObj.memoryReader[parentObj.registersHL](parentObj, parentObj.registersHL);
+    var newFCarry = ((temp_var & 0x01) == 0x01);
+    temp_var = ((parentObj.FCarry) ? 0x80 : 0) | (temp_var >> 1);
+    parentObj.FCarry = newFCarry;
+    parentObj.memoryWriter[parentObj.registersHL](parentObj, parentObj.registersHL, temp_var);
+    parentObj.FHalfCarry = parentObj.FSubtract = false;
+    parentObj.FZero = (temp_var == 0);
+  }
+  //RR A
+  //#0x1F:
+  ,function (parentObj) {
+    var newFCarry = ((parentObj.registerA & 0x01) == 0x01);
+    parentObj.registerA = ((parentObj.FCarry) ? 0x80 : 0) | (parentObj.registerA >> 1);
+    parentObj.FCarry = newFCarry;
+    parentObj.FHalfCarry = parentObj.FSubtract = false;
+    parentObj.FZero = (parentObj.registerA == 0);
+  }
+  //SLA B
+  //#0x20:
+  ,function (parentObj) {
+    parentObj.FCarry = (parentObj.registerB > 0x7F);
+    parentObj.registerB = (parentObj.registerB << 1) & 0xFF;
+    parentObj.FHalfCarry = parentObj.FSubtract = false;
+    parentObj.FZero = (parentObj.registerB == 0);
+  }
+  //SLA C
+  //#0x21:
+  ,function (parentObj) {
+    parentObj.FCarry = (parentObj.registerC > 0x7F);
+    parentObj.registerC = (parentObj.registerC << 1) & 0xFF;
+    parentObj.FHalfCarry = parentObj.FSubtract = false;
+    parentObj.FZero = (parentObj.registerC == 0);
+  }
+  //SLA D
+  //#0x22:
+  ,function (parentObj) {
+    parentObj.FCarry = (parentObj.registerD > 0x7F);
+    parentObj.registerD = (parentObj.registerD << 1) & 0xFF;
+    parentObj.FHalfCarry = parentObj.FSubtract = false;
+    parentObj.FZero = (parentObj.registerD == 0);
+  }
+  //SLA E
+  //#0x23:
+  ,function (parentObj) {
+    parentObj.FCarry = (parentObj.registerE > 0x7F);
+    parentObj.registerE = (parentObj.registerE << 1) & 0xFF;
+    parentObj.FHalfCarry = parentObj.FSubtract = false;
+    parentObj.FZero = (parentObj.registerE == 0);
+  }
+  //SLA H
+  //#0x24:
+  ,function (parentObj) {
+    parentObj.FCarry = (parentObj.registersHL > 0x7FFF);
+    parentObj.registersHL = ((parentObj.registersHL << 1) & 0xFE00) | (parentObj.registersHL & 0xFF);
+    parentObj.FHalfCarry = parentObj.FSubtract = false;
+    parentObj.FZero = (parentObj.registersHL < 0x100);
+  }
+  //SLA L
+  //#0x25:
+  ,function (parentObj) {
+    parentObj.FCarry = ((parentObj.registersHL & 0x0080) == 0x0080);
+    parentObj.registersHL = (parentObj.registersHL & 0xFF00) | ((parentObj.registersHL << 1) & 0xFF);
+    parentObj.FHalfCarry = parentObj.FSubtract = false;
+    parentObj.FZero = ((parentObj.registersHL & 0xFF) == 0);
+  }
+  //SLA (HL)
+  //#0x26:
+  ,function (parentObj) {
+    var temp_var = parentObj.memoryReader[parentObj.registersHL](parentObj, parentObj.registersHL);
+    parentObj.FCarry = (temp_var > 0x7F);
+    temp_var = (temp_var << 1) & 0xFF;
+    parentObj.memoryWriter[parentObj.registersHL](parentObj, parentObj.registersHL, temp_var);
+    parentObj.FHalfCarry = parentObj.FSubtract = false;
+    parentObj.FZero = (temp_var == 0);
+  }
+  //SLA A
+  //#0x27:
+  ,function (parentObj) {
+    parentObj.FCarry = (parentObj.registerA > 0x7F);
+    parentObj.registerA = (parentObj.registerA << 1) & 0xFF;
+    parentObj.FHalfCarry = parentObj.FSubtract = false;
+    parentObj.FZero = (parentObj.registerA == 0);
+  }
+  //SRA B
+  //#0x28:
+  ,function (parentObj) {
+    parentObj.FCarry = ((parentObj.registerB & 0x01) == 0x01);
+    parentObj.registerB = (parentObj.registerB & 0x80) | (parentObj.registerB >> 1);
+    parentObj.FHalfCarry = parentObj.FSubtract = false;
+    parentObj.FZero = (parentObj.registerB == 0);
+  }
+  //SRA C
+  //#0x29:
+  ,function (parentObj) {
+    parentObj.FCarry = ((parentObj.registerC & 0x01) == 0x01);
+    parentObj.registerC = (parentObj.registerC & 0x80) | (parentObj.registerC >> 1);
+    parentObj.FHalfCarry = parentObj.FSubtract = false;
+    parentObj.FZero = (parentObj.registerC == 0);
+  }
+  //SRA D
+  //#0x2A:
+  ,function (parentObj) {
+    parentObj.FCarry = ((parentObj.registerD & 0x01) == 0x01);
+    parentObj.registerD = (parentObj.registerD & 0x80) | (parentObj.registerD >> 1);
+    parentObj.FHalfCarry = parentObj.FSubtract = false;
+    parentObj.FZero = (parentObj.registerD == 0);
+  }
+  //SRA E
+  //#0x2B:
+  ,function (parentObj) {
+    parentObj.FCarry = ((parentObj.registerE & 0x01) == 0x01);
+    parentObj.registerE = (parentObj.registerE & 0x80) | (parentObj.registerE >> 1);
+    parentObj.FHalfCarry = parentObj.FSubtract = false;
+    parentObj.FZero = (parentObj.registerE == 0);
+  }
+  //SRA H
+  //#0x2C:
+  ,function (parentObj) {
+    parentObj.FCarry = ((parentObj.registersHL & 0x0100) == 0x0100);
+    parentObj.registersHL = ((parentObj.registersHL >> 1) & 0xFF00) | (parentObj.registersHL & 0x80FF);
+    parentObj.FHalfCarry = parentObj.FSubtract = false;
+    parentObj.FZero = (parentObj.registersHL < 0x100);
+  }
+  //SRA L
+  //#0x2D:
+  ,function (parentObj) {
+    parentObj.FCarry = ((parentObj.registersHL & 0x0001) == 0x0001);
+    parentObj.registersHL = (parentObj.registersHL & 0xFF80) | ((parentObj.registersHL & 0xFF) >> 1);
+    parentObj.FHalfCarry = parentObj.FSubtract = false;
+    parentObj.FZero = ((parentObj.registersHL & 0xFF) == 0);
+  }
+  //SRA (HL)
+  //#0x2E:
+  ,function (parentObj) {
+    var temp_var = parentObj.memoryReader[parentObj.registersHL](parentObj, parentObj.registersHL);
+    parentObj.FCarry = ((temp_var & 0x01) == 0x01);
+    temp_var = (temp_var & 0x80) | (temp_var >> 1);
+    parentObj.memoryWriter[parentObj.registersHL](parentObj, parentObj.registersHL, temp_var);
+    parentObj.FHalfCarry = parentObj.FSubtract = false;
+    parentObj.FZero = (temp_var == 0);
+  }
+  //SRA A
+  //#0x2F:
+  ,function (parentObj) {
+    parentObj.FCarry = ((parentObj.registerA & 0x01) == 0x01);
+    parentObj.registerA = (parentObj.registerA & 0x80) | (parentObj.registerA >> 1);
+    parentObj.FHalfCarry = parentObj.FSubtract = false;
+    parentObj.FZero = (parentObj.registerA == 0);
+  }
+  //SWAP B
+  //#0x30:
+  ,function (parentObj) {
+    parentObj.registerB = ((parentObj.registerB & 0xF) << 4) | (parentObj.registerB >> 4);
+    parentObj.FZero = (parentObj.registerB == 0);
+    parentObj.FCarry = parentObj.FHalfCarry = parentObj.FSubtract = false;
+  }
+  //SWAP C
+  //#0x31:
+  ,function (parentObj) {
+    parentObj.registerC = ((parentObj.registerC & 0xF) << 4) | (parentObj.registerC >> 4);
+    parentObj.FZero = (parentObj.registerC == 0);
+    parentObj.FCarry = parentObj.FHalfCarry = parentObj.FSubtract = false;
+  }
+  //SWAP D
+  //#0x32:
+  ,function (parentObj) {
+    parentObj.registerD = ((parentObj.registerD & 0xF) << 4) | (parentObj.registerD >> 4);
+    parentObj.FZero = (parentObj.registerD == 0);
+    parentObj.FCarry = parentObj.FHalfCarry = parentObj.FSubtract = false;
+  }
+  //SWAP E
+  //#0x33:
+  ,function (parentObj) {
+    parentObj.registerE = ((parentObj.registerE & 0xF) << 4) | (parentObj.registerE >> 4);
+    parentObj.FZero = (parentObj.registerE == 0);
+    parentObj.FCarry = parentObj.FHalfCarry = parentObj.FSubtract = false;
+  }
+  //SWAP H
+  //#0x34:
+  ,function (parentObj) {
+    parentObj.registersHL = ((parentObj.registersHL & 0xF00) << 4) | ((parentObj.registersHL & 0xF000) >> 4) | (parentObj.registersHL & 0xFF);
+    parentObj.FZero = (parentObj.registersHL < 0x100);
+    parentObj.FCarry = parentObj.FHalfCarry = parentObj.FSubtract = false;
+  }
+  //SWAP L
+  //#0x35:
+  ,function (parentObj) {
+    parentObj.registersHL = (parentObj.registersHL & 0xFF00) | ((parentObj.registersHL & 0xF) << 4) | ((parentObj.registersHL & 0xF0) >> 4);
+    parentObj.FZero = ((parentObj.registersHL & 0xFF) == 0);
+    parentObj.FCarry = parentObj.FHalfCarry = parentObj.FSubtract = false;
+  }
+  //SWAP (HL)
+  //#0x36:
+  ,function (parentObj) {
+    var temp_var = parentObj.memoryReader[parentObj.registersHL](parentObj, parentObj.registersHL);
+    temp_var = ((temp_var & 0xF) << 4) | (temp_var >> 4);
+    parentObj.memoryWriter[parentObj.registersHL](parentObj, parentObj.registersHL, temp_var);
+    parentObj.FZero = (temp_var == 0);
+    parentObj.FCarry = parentObj.FHalfCarry = parentObj.FSubtract = false;
+  }
+  //SWAP A
+  //#0x37:
+  ,function (parentObj) {
+    parentObj.registerA = ((parentObj.registerA & 0xF) << 4) | (parentObj.registerA >> 4);
+    parentObj.FZero = (parentObj.registerA == 0);
+    parentObj.FCarry = parentObj.FHalfCarry = parentObj.FSubtract = false;
+  }
+  //SRL B
+  //#0x38:
+  ,function (parentObj) {
+    parentObj.FCarry = ((parentObj.registerB & 0x01) == 0x01);
+    parentObj.registerB >>= 1;
+    parentObj.FHalfCarry = parentObj.FSubtract = false;
+    parentObj.FZero = (parentObj.registerB == 0);
+  }
+  //SRL C
+  //#0x39:
+  ,function (parentObj) {
+    parentObj.FCarry = ((parentObj.registerC & 0x01) == 0x01);
+    parentObj.registerC >>= 1;
+    parentObj.FHalfCarry = parentObj.FSubtract = false;
+    parentObj.FZero = (parentObj.registerC == 0);
+  }
+  //SRL D
+  //#0x3A:
+  ,function (parentObj) {
+    parentObj.FCarry = ((parentObj.registerD & 0x01) == 0x01);
+    parentObj.registerD >>= 1;
+    parentObj.FHalfCarry = parentObj.FSubtract = false;
+    parentObj.FZero = (parentObj.registerD == 0);
+  }
+  //SRL E
+  //#0x3B:
+  ,function (parentObj) {
+    parentObj.FCarry = ((parentObj.registerE & 0x01) == 0x01);
+    parentObj.registerE >>= 1;
+    parentObj.FHalfCarry = parentObj.FSubtract = false;
+    parentObj.FZero = (parentObj.registerE == 0);
+  }
+  //SRL H
+  //#0x3C:
+  ,function (parentObj) {
+    parentObj.FCarry = ((parentObj.registersHL & 0x0100) == 0x0100);
+    parentObj.registersHL = ((parentObj.registersHL >> 1) & 0xFF00) | (parentObj.registersHL & 0xFF);
+    parentObj.FHalfCarry = parentObj.FSubtract = false;
+    parentObj.FZero = (parentObj.registersHL < 0x100);
+  }
+  //SRL L
+  //#0x3D:
+  ,function (parentObj) {
+    parentObj.FCarry = ((parentObj.registersHL & 0x0001) == 0x0001);
+    parentObj.registersHL = (parentObj.registersHL & 0xFF00) | ((parentObj.registersHL & 0xFF) >> 1);
+    parentObj.FHalfCarry = parentObj.FSubtract = false;
+    parentObj.FZero = ((parentObj.registersHL & 0xFF) == 0);
+  }
+  //SRL (HL)
+  //#0x3E:
+  ,function (parentObj) {
+    var temp_var = parentObj.memoryReader[parentObj.registersHL](parentObj, parentObj.registersHL);
+    parentObj.FCarry = ((temp_var & 0x01) == 0x01);
+    parentObj.memoryWriter[parentObj.registersHL](parentObj, parentObj.registersHL, temp_var >> 1);
+    parentObj.FHalfCarry = parentObj.FSubtract = false;
+    parentObj.FZero = (temp_var < 2);
+  }
+  //SRL A
+  //#0x3F:
+  ,function (parentObj) {
+    parentObj.FCarry = ((parentObj.registerA & 0x01) == 0x01);
+    parentObj.registerA >>= 1;
+    parentObj.FHalfCarry = parentObj.FSubtract = false;
+    parentObj.FZero = (parentObj.registerA == 0);
+  }
+  //BIT 0, B
+  //#0x40:
+  ,function (parentObj) {
+    parentObj.FHalfCarry = true;
+    parentObj.FSubtract = false;
+    parentObj.FZero = ((parentObj.registerB & 0x01) == 0);
+  }
+  //BIT 0, C
+  //#0x41:
+  ,function (parentObj) {
+    parentObj.FHalfCarry = true;
+    parentObj.FSubtract = false;
+    parentObj.FZero = ((parentObj.registerC & 0x01) == 0);
+  }
+  //BIT 0, D
+  //#0x42:
+  ,function (parentObj) {
+    parentObj.FHalfCarry = true;
+    parentObj.FSubtract = false;
+    parentObj.FZero = ((parentObj.registerD & 0x01) == 0);
+  }
+  //BIT 0, E
+  //#0x43:
+  ,function (parentObj) {
+    parentObj.FHalfCarry = true;
+    parentObj.FSubtract = false;
+    parentObj.FZero = ((parentObj.registerE & 0x01) == 0);
+  }
+  //BIT 0, H
+  //#0x44:
+  ,function (parentObj) {
+    parentObj.FHalfCarry = true;
+    parentObj.FSubtract = false;
+    parentObj.FZero = ((parentObj.registersHL & 0x0100) == 0);
+  }
+  //BIT 0, L
+  //#0x45:
+  ,function (parentObj) {
+    parentObj.FHalfCarry = true;
+    parentObj.FSubtract = false;
+    parentObj.FZero = ((parentObj.registersHL & 0x0001) == 0);
+  }
+  //BIT 0, (HL)
+  //#0x46:
+  ,function (parentObj) {
+    parentObj.FHalfCarry = true;
+    parentObj.FSubtract = false;
+    parentObj.FZero = ((parentObj.memoryReader[parentObj.registersHL](parentObj, parentObj.registersHL) & 0x01) == 0);
+  }
+  //BIT 0, A
+  //#0x47:
+  ,function (parentObj) {
+    parentObj.FHalfCarry = true;
+    parentObj.FSubtract = false;
+    parentObj.FZero = ((parentObj.registerA & 0x01) == 0);
+  }
+  //BIT 1, B
+  //#0x48:
+  ,function (parentObj) {
+    parentObj.FHalfCarry = true;
+    parentObj.FSubtract = false;
+    parentObj.FZero = ((parentObj.registerB & 0x02) == 0);
+  }
+  //BIT 1, C
+  //#0x49:
+  ,function (parentObj) {
+    parentObj.FHalfCarry = true;
+    parentObj.FSubtract = false;
+    parentObj.FZero = ((parentObj.registerC & 0x02) == 0);
+  }
+  //BIT 1, D
+  //#0x4A:
+  ,function (parentObj) {
+    parentObj.FHalfCarry = true;
+    parentObj.FSubtract = false;
+    parentObj.FZero = ((parentObj.registerD & 0x02) == 0);
+  }
+  //BIT 1, E
+  //#0x4B:
+  ,function (parentObj) {
+    parentObj.FHalfCarry = true;
+    parentObj.FSubtract = false;
+    parentObj.FZero = ((parentObj.registerE & 0x02) == 0);
+  }
+  //BIT 1, H
+  //#0x4C:
+  ,function (parentObj) {
+    parentObj.FHalfCarry = true;
+    parentObj.FSubtract = false;
+    parentObj.FZero = ((parentObj.registersHL & 0x0200) == 0);
+  }
+  //BIT 1, L
+  //#0x4D:
+  ,function (parentObj) {
+    parentObj.FHalfCarry = true;
+    parentObj.FSubtract = false;
+    parentObj.FZero = ((parentObj.registersHL & 0x0002) == 0);
+  }
+  //BIT 1, (HL)
+  //#0x4E:
+  ,function (parentObj) {
+    parentObj.FHalfCarry = true;
+    parentObj.FSubtract = false;
+    parentObj.FZero = ((parentObj.memoryReader[parentObj.registersHL](parentObj, parentObj.registersHL) & 0x02) == 0);
+  }
+  //BIT 1, A
+  //#0x4F:
+  ,function (parentObj) {
+    parentObj.FHalfCarry = true;
+    parentObj.FSubtract = false;
+    parentObj.FZero = ((parentObj.registerA & 0x02) == 0);
+  }
+  //BIT 2, B
+  //#0x50:
+  ,function (parentObj) {
+    parentObj.FHalfCarry = true;
+    parentObj.FSubtract = false;
+    parentObj.FZero = ((parentObj.registerB & 0x04) == 0);
+  }
+  //BIT 2, C
+  //#0x51:
+  ,function (parentObj) {
+    parentObj.FHalfCarry = true;
+    parentObj.FSubtract = false;
+    parentObj.FZero = ((parentObj.registerC & 0x04) == 0);
+  }
+  //BIT 2, D
+  //#0x52:
+  ,function (parentObj) {
+    parentObj.FHalfCarry = true;
+    parentObj.FSubtract = false;
+    parentObj.FZero = ((parentObj.registerD & 0x04) == 0);
+  }
+  //BIT 2, E
+  //#0x53:
+  ,function (parentObj) {
+    parentObj.FHalfCarry = true;
+    parentObj.FSubtract = false;
+    parentObj.FZero = ((parentObj.registerE & 0x04) == 0);
+  }
+  //BIT 2, H
+  //#0x54:
+  ,function (parentObj) {
+    parentObj.FHalfCarry = true;
+    parentObj.FSubtract = false;
+    parentObj.FZero = ((parentObj.registersHL & 0x0400) == 0);
+  }
+  //BIT 2, L
+  //#0x55:
+  ,function (parentObj) {
+    parentObj.FHalfCarry = true;
+    parentObj.FSubtract = false;
+    parentObj.FZero = ((parentObj.registersHL & 0x0004) == 0);
+  }
+  //BIT 2, (HL)
+  //#0x56:
+  ,function (parentObj) {
+    parentObj.FHalfCarry = true;
+    parentObj.FSubtract = false;
+    parentObj.FZero = ((parentObj.memoryReader[parentObj.registersHL](parentObj, parentObj.registersHL) & 0x04) == 0);
+  }
+  //BIT 2, A
+  //#0x57:
+  ,function (parentObj) {
+    parentObj.FHalfCarry = true;
+    parentObj.FSubtract = false;
+    parentObj.FZero = ((parentObj.registerA & 0x04) == 0);
+  }
+  //BIT 3, B
+  //#0x58:
+  ,function (parentObj) {
+    parentObj.FHalfCarry = true;
+    parentObj.FSubtract = false;
+    parentObj.FZero = ((parentObj.registerB & 0x08) == 0);
+  }
+  //BIT 3, C
+  //#0x59:
+  ,function (parentObj) {
+    parentObj.FHalfCarry = true;
+    parentObj.FSubtract = false;
+    parentObj.FZero = ((parentObj.registerC & 0x08) == 0);
+  }
+  //BIT 3, D
+  //#0x5A:
+  ,function (parentObj) {
+    parentObj.FHalfCarry = true;
+    parentObj.FSubtract = false;
+    parentObj.FZero = ((parentObj.registerD & 0x08) == 0);
+  }
+  //BIT 3, E
+  //#0x5B:
+  ,function (parentObj) {
+    parentObj.FHalfCarry = true;
+    parentObj.FSubtract = false;
+    parentObj.FZero = ((parentObj.registerE & 0x08) == 0);
+  }
+  //BIT 3, H
+  //#0x5C:
+  ,function (parentObj) {
+    parentObj.FHalfCarry = true;
+    parentObj.FSubtract = false;
+    parentObj.FZero = ((parentObj.registersHL & 0x0800) == 0);
+  }
+  //BIT 3, L
+  //#0x5D:
+  ,function (parentObj) {
+    parentObj.FHalfCarry = true;
+    parentObj.FSubtract = false;
+    parentObj.FZero = ((parentObj.registersHL & 0x0008) == 0);
+  }
+  //BIT 3, (HL)
+  //#0x5E:
+  ,function (parentObj) {
+    parentObj.FHalfCarry = true;
+    parentObj.FSubtract = false;
+    parentObj.FZero = ((parentObj.memoryReader[parentObj.registersHL](parentObj, parentObj.registersHL) & 0x08) == 0);
+  }
+  //BIT 3, A
+  //#0x5F:
+  ,function (parentObj) {
+    parentObj.FHalfCarry = true;
+    parentObj.FSubtract = false;
+    parentObj.FZero = ((parentObj.registerA & 0x08) == 0);
+  }
+  //BIT 4, B
+  //#0x60:
+  ,function (parentObj) {
+    parentObj.FHalfCarry = true;
+    parentObj.FSubtract = false;
+    parentObj.FZero = ((parentObj.registerB & 0x10) == 0);
+  }
+  //BIT 4, C
+  //#0x61:
+  ,function (parentObj) {
+    parentObj.FHalfCarry = true;
+    parentObj.FSubtract = false;
+    parentObj.FZero = ((parentObj.registerC & 0x10) == 0);
+  }
+  //BIT 4, D
+  //#0x62:
+  ,function (parentObj) {
+    parentObj.FHalfCarry = true;
+    parentObj.FSubtract = false;
+    parentObj.FZero = ((parentObj.registerD & 0x10) == 0);
+  }
+  //BIT 4, E
+  //#0x63:
+  ,function (parentObj) {
+    parentObj.FHalfCarry = true;
+    parentObj.FSubtract = false;
+    parentObj.FZero = ((parentObj.registerE & 0x10) == 0);
+  }
+  //BIT 4, H
+  //#0x64:
+  ,function (parentObj) {
+    parentObj.FHalfCarry = true;
+    parentObj.FSubtract = false;
+    parentObj.FZero = ((parentObj.registersHL & 0x1000) == 0);
+  }
+  //BIT 4, L
+  //#0x65:
+  ,function (parentObj) {
+    parentObj.FHalfCarry = true;
+    parentObj.FSubtract = false;
+    parentObj.FZero = ((parentObj.registersHL & 0x0010) == 0);
+  }
+  //BIT 4, (HL)
+  //#0x66:
+  ,function (parentObj) {
+    parentObj.FHalfCarry = true;
+    parentObj.FSubtract = false;
+    parentObj.FZero = ((parentObj.memoryReader[parentObj.registersHL](parentObj, parentObj.registersHL) & 0x10) == 0);
+  }
+  //BIT 4, A
+  //#0x67:
+  ,function (parentObj) {
+    parentObj.FHalfCarry = true;
+    parentObj.FSubtract = false;
+    parentObj.FZero = ((parentObj.registerA & 0x10) == 0);
+  }
+  //BIT 5, B
+  //#0x68:
+  ,function (parentObj) {
+    parentObj.FHalfCarry = true;
+    parentObj.FSubtract = false;
+    parentObj.FZero = ((parentObj.registerB & 0x20) == 0);
+  }
+  //BIT 5, C
+  //#0x69:
+  ,function (parentObj) {
+    parentObj.FHalfCarry = true;
+    parentObj.FSubtract = false;
+    parentObj.FZero = ((parentObj.registerC & 0x20) == 0);
+  }
+  //BIT 5, D
+  //#0x6A:
+  ,function (parentObj) {
+    parentObj.FHalfCarry = true;
+    parentObj.FSubtract = false;
+    parentObj.FZero = ((parentObj.registerD & 0x20) == 0);
+  }
+  //BIT 5, E
+  //#0x6B:
+  ,function (parentObj) {
+    parentObj.FHalfCarry = true;
+    parentObj.FSubtract = false;
+    parentObj.FZero = ((parentObj.registerE & 0x20) == 0);
+  }
+  //BIT 5, H
+  //#0x6C:
+  ,function (parentObj) {
+    parentObj.FHalfCarry = true;
+    parentObj.FSubtract = false;
+    parentObj.FZero = ((parentObj.registersHL & 0x2000) == 0);
+  }
+  //BIT 5, L
+  //#0x6D:
+  ,function (parentObj) {
+    parentObj.FHalfCarry = true;
+    parentObj.FSubtract = false;
+    parentObj.FZero = ((parentObj.registersHL & 0x0020) == 0);
+  }
+  //BIT 5, (HL)
+  //#0x6E:
+  ,function (parentObj) {
+    parentObj.FHalfCarry = true;
+    parentObj.FSubtract = false;
+    parentObj.FZero = ((parentObj.memoryReader[parentObj.registersHL](parentObj, parentObj.registersHL) & 0x20) == 0);
+  }
+  //BIT 5, A
+  //#0x6F:
+  ,function (parentObj) {
+    parentObj.FHalfCarry = true;
+    parentObj.FSubtract = false;
+    parentObj.FZero = ((parentObj.registerA & 0x20) == 0);
+  }
+  //BIT 6, B
+  //#0x70:
+  ,function (parentObj) {
+    parentObj.FHalfCarry = true;
+    parentObj.FSubtract = false;
+    parentObj.FZero = ((parentObj.registerB & 0x40) == 0);
+  }
+  //BIT 6, C
+  //#0x71:
+  ,function (parentObj) {
+    parentObj.FHalfCarry = true;
+    parentObj.FSubtract = false;
+    parentObj.FZero = ((parentObj.registerC & 0x40) == 0);
+  }
+  //BIT 6, D
+  //#0x72:
+  ,function (parentObj) {
+    parentObj.FHalfCarry = true;
+    parentObj.FSubtract = false;
+    parentObj.FZero = ((parentObj.registerD & 0x40) == 0);
+  }
+  //BIT 6, E
+  //#0x73:
+  ,function (parentObj) {
+    parentObj.FHalfCarry = true;
+    parentObj.FSubtract = false;
+    parentObj.FZero = ((parentObj.registerE & 0x40) == 0);
+  }
+  //BIT 6, H
+  //#0x74:
+  ,function (parentObj) {
+    parentObj.FHalfCarry = true;
+    parentObj.FSubtract = false;
+    parentObj.FZero = ((parentObj.registersHL & 0x4000) == 0);
+  }
+  //BIT 6, L
+  //#0x75:
+  ,function (parentObj) {
+    parentObj.FHalfCarry = true;
+    parentObj.FSubtract = false;
+    parentObj.FZero = ((parentObj.registersHL & 0x0040) == 0);
+  }
+  //BIT 6, (HL)
+  //#0x76:
+  ,function (parentObj) {
+    parentObj.FHalfCarry = true;
+    parentObj.FSubtract = false;
+    parentObj.FZero = ((parentObj.memoryReader[parentObj.registersHL](parentObj, parentObj.registersHL) & 0x40) == 0);
+  }
+  //BIT 6, A
+  //#0x77:
+  ,function (parentObj) {
+    parentObj.FHalfCarry = true;
+    parentObj.FSubtract = false;
+    parentObj.FZero = ((parentObj.registerA & 0x40) == 0);
+  }
+  //BIT 7, B
+  //#0x78:
+  ,function (parentObj) {
+    parentObj.FHalfCarry = true;
+    parentObj.FSubtract = false;
+    parentObj.FZero = ((parentObj.registerB & 0x80) == 0);
+  }
+  //BIT 7, C
+  //#0x79:
+  ,function (parentObj) {
+    parentObj.FHalfCarry = true;
+    parentObj.FSubtract = false;
+    parentObj.FZero = ((parentObj.registerC & 0x80) == 0);
+  }
+  //BIT 7, D
+  //#0x7A:
+  ,function (parentObj) {
+    parentObj.FHalfCarry = true;
+    parentObj.FSubtract = false;
+    parentObj.FZero = ((parentObj.registerD & 0x80) == 0);
+  }
+  //BIT 7, E
+  //#0x7B:
+  ,function (parentObj) {
+    parentObj.FHalfCarry = true;
+    parentObj.FSubtract = false;
+    parentObj.FZero = ((parentObj.registerE & 0x80) == 0);
+  }
+  //BIT 7, H
+  //#0x7C:
+  ,function (parentObj) {
+    parentObj.FHalfCarry = true;
+    parentObj.FSubtract = false;
+    parentObj.FZero = ((parentObj.registersHL & 0x8000) == 0);
+  }
+  //BIT 7, L
+  //#0x7D:
+  ,function (parentObj) {
+    parentObj.FHalfCarry = true;
+    parentObj.FSubtract = false;
+    parentObj.FZero = ((parentObj.registersHL & 0x0080) == 0);
+  }
+  //BIT 7, (HL)
+  //#0x7E:
+  ,function (parentObj) {
+    parentObj.FHalfCarry = true;
+    parentObj.FSubtract = false;
+    parentObj.FZero = ((parentObj.memoryReader[parentObj.registersHL](parentObj, parentObj.registersHL) & 0x80) == 0);
+  }
+  //BIT 7, A
+  //#0x7F:
+  ,function (parentObj) {
+    parentObj.FHalfCarry = true;
+    parentObj.FSubtract = false;
+    parentObj.FZero = ((parentObj.registerA & 0x80) == 0);
+  }
+  //RES 0, B
+  //#0x80:
+  ,function (parentObj) {
+    parentObj.registerB &= 0xFE;
+  }
+  //RES 0, C
+  //#0x81:
+  ,function (parentObj) {
+    parentObj.registerC &= 0xFE;
+  }
+  //RES 0, D
+  //#0x82:
+  ,function (parentObj) {
+    parentObj.registerD &= 0xFE;
+  }
+  //RES 0, E
+  //#0x83:
+  ,function (parentObj) {
+    parentObj.registerE &= 0xFE;
+  }
+  //RES 0, H
+  //#0x84:
+  ,function (parentObj) {
+    parentObj.registersHL &= 0xFEFF;
+  }
+  //RES 0, L
+  //#0x85:
+  ,function (parentObj) {
+    parentObj.registersHL &= 0xFFFE;
+  }
+  //RES 0, (HL)
+  //#0x86:
+  ,function (parentObj) {
+    parentObj.memoryWriter[parentObj.registersHL](parentObj, parentObj.registersHL, parentObj.memoryReader[parentObj.registersHL](parentObj, parentObj.registersHL) & 0xFE);
+  }
+  //RES 0, A
+  //#0x87:
+  ,function (parentObj) {
+    parentObj.registerA &= 0xFE;
+  }
+  //RES 1, B
+  //#0x88:
+  ,function (parentObj) {
+    parentObj.registerB &= 0xFD;
+  }
+  //RES 1, C
+  //#0x89:
+  ,function (parentObj) {
+    parentObj.registerC &= 0xFD;
+  }
+  //RES 1, D
+  //#0x8A:
+  ,function (parentObj) {
+    parentObj.registerD &= 0xFD;
+  }
+  //RES 1, E
+  //#0x8B:
+  ,function (parentObj) {
+    parentObj.registerE &= 0xFD;
+  }
+  //RES 1, H
+  //#0x8C:
+  ,function (parentObj) {
+    parentObj.registersHL &= 0xFDFF;
+  }
+  //RES 1, L
+  //#0x8D:
+  ,function (parentObj) {
+    parentObj.registersHL &= 0xFFFD;
+  }
+  //RES 1, (HL)
+  //#0x8E:
+  ,function (parentObj) {
+    parentObj.memoryWriter[parentObj.registersHL](parentObj, parentObj.registersHL, parentObj.memoryReader[parentObj.registersHL](parentObj, parentObj.registersHL) & 0xFD);
+  }
+  //RES 1, A
+  //#0x8F:
+  ,function (parentObj) {
+    parentObj.registerA &= 0xFD;
+  }
+  //RES 2, B
+  //#0x90:
+  ,function (parentObj) {
+    parentObj.registerB &= 0xFB;
+  }
+  //RES 2, C
+  //#0x91:
+  ,function (parentObj) {
+    parentObj.registerC &= 0xFB;
+  }
+  //RES 2, D
+  //#0x92:
+  ,function (parentObj) {
+    parentObj.registerD &= 0xFB;
+  }
+  //RES 2, E
+  //#0x93:
+  ,function (parentObj) {
+    parentObj.registerE &= 0xFB;
+  }
+  //RES 2, H
+  //#0x94:
+  ,function (parentObj) {
+    parentObj.registersHL &= 0xFBFF;
+  }
+  //RES 2, L
+  //#0x95:
+  ,function (parentObj) {
+    parentObj.registersHL &= 0xFFFB;
+  }
+  //RES 2, (HL)
+  //#0x96:
+  ,function (parentObj) {
+    parentObj.memoryWriter[parentObj.registersHL](parentObj, parentObj.registersHL, parentObj.memoryReader[parentObj.registersHL](parentObj, parentObj.registersHL) & 0xFB);
+  }
+  //RES 2, A
+  //#0x97:
+  ,function (parentObj) {
+    parentObj.registerA &= 0xFB;
+  }
+  //RES 3, B
+  //#0x98:
+  ,function (parentObj) {
+    parentObj.registerB &= 0xF7;
+  }
+  //RES 3, C
+  //#0x99:
+  ,function (parentObj) {
+    parentObj.registerC &= 0xF7;
+  }
+  //RES 3, D
+  //#0x9A:
+  ,function (parentObj) {
+    parentObj.registerD &= 0xF7;
+  }
+  //RES 3, E
+  //#0x9B:
+  ,function (parentObj) {
+    parentObj.registerE &= 0xF7;
+  }
+  //RES 3, H
+  //#0x9C:
+  ,function (parentObj) {
+    parentObj.registersHL &= 0xF7FF;
+  }
+  //RES 3, L
+  //#0x9D:
+  ,function (parentObj) {
+    parentObj.registersHL &= 0xFFF7;
+  }
+  //RES 3, (HL)
+  //#0x9E:
+  ,function (parentObj) {
+    parentObj.memoryWriter[parentObj.registersHL](parentObj, parentObj.registersHL, parentObj.memoryReader[parentObj.registersHL](parentObj, parentObj.registersHL) & 0xF7);
+  }
+  //RES 3, A
+  //#0x9F:
+  ,function (parentObj) {
+    parentObj.registerA &= 0xF7;
+  }
+  //RES 3, B
+  //#0xA0:
+  ,function (parentObj) {
+    parentObj.registerB &= 0xEF;
+  }
+  //RES 4, C
+  //#0xA1:
+  ,function (parentObj) {
+    parentObj.registerC &= 0xEF;
+  }
+  //RES 4, D
+  //#0xA2:
+  ,function (parentObj) {
+    parentObj.registerD &= 0xEF;
+  }
+  //RES 4, E
+  //#0xA3:
+  ,function (parentObj) {
+    parentObj.registerE &= 0xEF;
+  }
+  //RES 4, H
+  //#0xA4:
+  ,function (parentObj) {
+    parentObj.registersHL &= 0xEFFF;
+  }
+  //RES 4, L
+  //#0xA5:
+  ,function (parentObj) {
+    parentObj.registersHL &= 0xFFEF;
+  }
+  //RES 4, (HL)
+  //#0xA6:
+  ,function (parentObj) {
+    parentObj.memoryWriter[parentObj.registersHL](parentObj, parentObj.registersHL, parentObj.memoryReader[parentObj.registersHL](parentObj, parentObj.registersHL) & 0xEF);
+  }
+  //RES 4, A
+  //#0xA7:
+  ,function (parentObj) {
+    parentObj.registerA &= 0xEF;
+  }
+  //RES 5, B
+  //#0xA8:
+  ,function (parentObj) {
+    parentObj.registerB &= 0xDF;
+  }
+  //RES 5, C
+  //#0xA9:
+  ,function (parentObj) {
+    parentObj.registerC &= 0xDF;
+  }
+  //RES 5, D
+  //#0xAA:
+  ,function (parentObj) {
+    parentObj.registerD &= 0xDF;
+  }
+  //RES 5, E
+  //#0xAB:
+  ,function (parentObj) {
+    parentObj.registerE &= 0xDF;
+  }
+  //RES 5, H
+  //#0xAC:
+  ,function (parentObj) {
+    parentObj.registersHL &= 0xDFFF;
+  }
+  //RES 5, L
+  //#0xAD:
+  ,function (parentObj) {
+    parentObj.registersHL &= 0xFFDF;
+  }
+  //RES 5, (HL)
+  //#0xAE:
+  ,function (parentObj) {
+    parentObj.memoryWriter[parentObj.registersHL](parentObj, parentObj.registersHL, parentObj.memoryReader[parentObj.registersHL](parentObj, parentObj.registersHL) & 0xDF);
+  }
+  //RES 5, A
+  //#0xAF:
+  ,function (parentObj) {
+    parentObj.registerA &= 0xDF;
+  }
+  //RES 6, B
+  //#0xB0:
+  ,function (parentObj) {
+    parentObj.registerB &= 0xBF;
+  }
+  //RES 6, C
+  //#0xB1:
+  ,function (parentObj) {
+    parentObj.registerC &= 0xBF;
+  }
+  //RES 6, D
+  //#0xB2:
+  ,function (parentObj) {
+    parentObj.registerD &= 0xBF;
+  }
+  //RES 6, E
+  //#0xB3:
+  ,function (parentObj) {
+    parentObj.registerE &= 0xBF;
+  }
+  //RES 6, H
+  //#0xB4:
+  ,function (parentObj) {
+    parentObj.registersHL &= 0xBFFF;
+  }
+  //RES 6, L
+  //#0xB5:
+  ,function (parentObj) {
+    parentObj.registersHL &= 0xFFBF;
+  }
+  //RES 6, (HL)
+  //#0xB6:
+  ,function (parentObj) {
+    parentObj.memoryWriter[parentObj.registersHL](parentObj, parentObj.registersHL, parentObj.memoryReader[parentObj.registersHL](parentObj, parentObj.registersHL) & 0xBF);
+  }
+  //RES 6, A
+  //#0xB7:
+  ,function (parentObj) {
+    parentObj.registerA &= 0xBF;
+  }
+  //RES 7, B
+  //#0xB8:
+  ,function (parentObj) {
+    parentObj.registerB &= 0x7F;
+  }
+  //RES 7, C
+  //#0xB9:
+  ,function (parentObj) {
+    parentObj.registerC &= 0x7F;
+  }
+  //RES 7, D
+  //#0xBA:
+  ,function (parentObj) {
+    parentObj.registerD &= 0x7F;
+  }
+  //RES 7, E
+  //#0xBB:
+  ,function (parentObj) {
+    parentObj.registerE &= 0x7F;
+  }
+  //RES 7, H
+  //#0xBC:
+  ,function (parentObj) {
+    parentObj.registersHL &= 0x7FFF;
+  }
+  //RES 7, L
+  //#0xBD:
+  ,function (parentObj) {
+    parentObj.registersHL &= 0xFF7F;
+  }
+  //RES 7, (HL)
+  //#0xBE:
+  ,function (parentObj) {
+    parentObj.memoryWriter[parentObj.registersHL](parentObj, parentObj.registersHL, parentObj.memoryReader[parentObj.registersHL](parentObj, parentObj.registersHL) & 0x7F);
+  }
+  //RES 7, A
+  //#0xBF:
+  ,function (parentObj) {
+    parentObj.registerA &= 0x7F;
+  }
+  //SET 0, B
+  //#0xC0:
+  ,function (parentObj) {
+    parentObj.registerB |= 0x01;
+  }
+  //SET 0, C
+  //#0xC1:
+  ,function (parentObj) {
+    parentObj.registerC |= 0x01;
+  }
+  //SET 0, D
+  //#0xC2:
+  ,function (parentObj) {
+    parentObj.registerD |= 0x01;
+  }
+  //SET 0, E
+  //#0xC3:
+  ,function (parentObj) {
+    parentObj.registerE |= 0x01;
+  }
+  //SET 0, H
+  //#0xC4:
+  ,function (parentObj) {
+    parentObj.registersHL |= 0x0100;
+  }
+  //SET 0, L
+  //#0xC5:
+  ,function (parentObj) {
+    parentObj.registersHL |= 0x01;
+  }
+  //SET 0, (HL)
+  //#0xC6:
+  ,function (parentObj) {
+    parentObj.memoryWriter[parentObj.registersHL](parentObj, parentObj.registersHL, parentObj.memoryReader[parentObj.registersHL](parentObj, parentObj.registersHL) | 0x01);
+  }
+  //SET 0, A
+  //#0xC7:
+  ,function (parentObj) {
+    parentObj.registerA |= 0x01;
+  }
+  //SET 1, B
+  //#0xC8:
+  ,function (parentObj) {
+    parentObj.registerB |= 0x02;
+  }
+  //SET 1, C
+  //#0xC9:
+  ,function (parentObj) {
+    parentObj.registerC |= 0x02;
+  }
+  //SET 1, D
+  //#0xCA:
+  ,function (parentObj) {
+    parentObj.registerD |= 0x02;
+  }
+  //SET 1, E
+  //#0xCB:
+  ,function (parentObj) {
+    parentObj.registerE |= 0x02;
+  }
+  //SET 1, H
+  //#0xCC:
+  ,function (parentObj) {
+    parentObj.registersHL |= 0x0200;
+  }
+  //SET 1, L
+  //#0xCD:
+  ,function (parentObj) {
+    parentObj.registersHL |= 0x02;
+  }
+  //SET 1, (HL)
+  //#0xCE:
+  ,function (parentObj) {
+    parentObj.memoryWriter[parentObj.registersHL](parentObj, parentObj.registersHL, parentObj.memoryReader[parentObj.registersHL](parentObj, parentObj.registersHL) | 0x02);
+  }
+  //SET 1, A
+  //#0xCF:
+  ,function (parentObj) {
+    parentObj.registerA |= 0x02;
+  }
+  //SET 2, B
+  //#0xD0:
+  ,function (parentObj) {
+    parentObj.registerB |= 0x04;
+  }
+  //SET 2, C
+  //#0xD1:
+  ,function (parentObj) {
+    parentObj.registerC |= 0x04;
+  }
+  //SET 2, D
+  //#0xD2:
+  ,function (parentObj) {
+    parentObj.registerD |= 0x04;
+  }
+  //SET 2, E
+  //#0xD3:
+  ,function (parentObj) {
+    parentObj.registerE |= 0x04;
+  }
+  //SET 2, H
+  //#0xD4:
+  ,function (parentObj) {
+    parentObj.registersHL |= 0x0400;
+  }
+  //SET 2, L
+  //#0xD5:
+  ,function (parentObj) {
+    parentObj.registersHL |= 0x04;
+  }
+  //SET 2, (HL)
+  //#0xD6:
+  ,function (parentObj) {
+    parentObj.memoryWriter[parentObj.registersHL](parentObj, parentObj.registersHL, parentObj.memoryReader[parentObj.registersHL](parentObj, parentObj.registersHL) | 0x04);
+  }
+  //SET 2, A
+  //#0xD7:
+  ,function (parentObj) {
+    parentObj.registerA |= 0x04;
+  }
+  //SET 3, B
+  //#0xD8:
+  ,function (parentObj) {
+    parentObj.registerB |= 0x08;
+  }
+  //SET 3, C
+  //#0xD9:
+  ,function (parentObj) {
+    parentObj.registerC |= 0x08;
+  }
+  //SET 3, D
+  //#0xDA:
+  ,function (parentObj) {
+    parentObj.registerD |= 0x08;
+  }
+  //SET 3, E
+  //#0xDB:
+  ,function (parentObj) {
+    parentObj.registerE |= 0x08;
+  }
+  //SET 3, H
+  //#0xDC:
+  ,function (parentObj) {
+    parentObj.registersHL |= 0x0800;
+  }
+  //SET 3, L
+  //#0xDD:
+  ,function (parentObj) {
+    parentObj.registersHL |= 0x08;
+  }
+  //SET 3, (HL)
+  //#0xDE:
+  ,function (parentObj) {
+    parentObj.memoryWriter[parentObj.registersHL](parentObj, parentObj.registersHL, parentObj.memoryReader[parentObj.registersHL](parentObj, parentObj.registersHL) | 0x08);
+  }
+  //SET 3, A
+  //#0xDF:
+  ,function (parentObj) {
+    parentObj.registerA |= 0x08;
+  }
+  //SET 4, B
+  //#0xE0:
+  ,function (parentObj) {
+    parentObj.registerB |= 0x10;
+  }
+  //SET 4, C
+  //#0xE1:
+  ,function (parentObj) {
+    parentObj.registerC |= 0x10;
+  }
+  //SET 4, D
+  //#0xE2:
+  ,function (parentObj) {
+    parentObj.registerD |= 0x10;
+  }
+  //SET 4, E
+  //#0xE3:
+  ,function (parentObj) {
+    parentObj.registerE |= 0x10;
+  }
+  //SET 4, H
+  //#0xE4:
+  ,function (parentObj) {
+    parentObj.registersHL |= 0x1000;
+  }
+  //SET 4, L
+  //#0xE5:
+  ,function (parentObj) {
+    parentObj.registersHL |= 0x10;
+  }
+  //SET 4, (HL)
+  //#0xE6:
+  ,function (parentObj) {
+    parentObj.memoryWriter[parentObj.registersHL](parentObj, parentObj.registersHL, parentObj.memoryReader[parentObj.registersHL](parentObj, parentObj.registersHL) | 0x10);
+  }
+  //SET 4, A
+  //#0xE7:
+  ,function (parentObj) {
+    parentObj.registerA |= 0x10;
+  }
+  //SET 5, B
+  //#0xE8:
+  ,function (parentObj) {
+    parentObj.registerB |= 0x20;
+  }
+  //SET 5, C
+  //#0xE9:
+  ,function (parentObj) {
+    parentObj.registerC |= 0x20;
+  }
+  //SET 5, D
+  //#0xEA:
+  ,function (parentObj) {
+    parentObj.registerD |= 0x20;
+  }
+  //SET 5, E
+  //#0xEB:
+  ,function (parentObj) {
+    parentObj.registerE |= 0x20;
+  }
+  //SET 5, H
+  //#0xEC:
+  ,function (parentObj) {
+    parentObj.registersHL |= 0x2000;
+  }
+  //SET 5, L
+  //#0xED:
+  ,function (parentObj) {
+    parentObj.registersHL |= 0x20;
+  }
+  //SET 5, (HL)
+  //#0xEE:
+  ,function (parentObj) {
+    parentObj.memoryWriter[parentObj.registersHL](parentObj, parentObj.registersHL, parentObj.memoryReader[parentObj.registersHL](parentObj, parentObj.registersHL) | 0x20);
+  }
+  //SET 5, A
+  //#0xEF:
+  ,function (parentObj) {
+    parentObj.registerA |= 0x20;
+  }
+  //SET 6, B
+  //#0xF0:
+  ,function (parentObj) {
+    parentObj.registerB |= 0x40;
+  }
+  //SET 6, C
+  //#0xF1:
+  ,function (parentObj) {
+    parentObj.registerC |= 0x40;
+  }
+  //SET 6, D
+  //#0xF2:
+  ,function (parentObj) {
+    parentObj.registerD |= 0x40;
+  }
+  //SET 6, E
+  //#0xF3:
+  ,function (parentObj) {
+    parentObj.registerE |= 0x40;
+  }
+  //SET 6, H
+  //#0xF4:
+  ,function (parentObj) {
+    parentObj.registersHL |= 0x4000;
+  }
+  //SET 6, L
+  //#0xF5:
+  ,function (parentObj) {
+    parentObj.registersHL |= 0x40;
+  }
+  //SET 6, (HL)
+  //#0xF6:
+  ,function (parentObj) {
+    parentObj.memoryWriter[parentObj.registersHL](parentObj, parentObj.registersHL, parentObj.memoryReader[parentObj.registersHL](parentObj, parentObj.registersHL) | 0x40);
+  }
+  //SET 6, A
+  //#0xF7:
+  ,function (parentObj) {
+    parentObj.registerA |= 0x40;
+  }
+  //SET 7, B
+  //#0xF8:
+  ,function (parentObj) {
+    parentObj.registerB |= 0x80;
+  }
+  //SET 7, C
+  //#0xF9:
+  ,function (parentObj) {
+    parentObj.registerC |= 0x80;
+  }
+  //SET 7, D
+  //#0xFA:
+  ,function (parentObj) {
+    parentObj.registerD |= 0x80;
+  }
+  //SET 7, E
+  //#0xFB:
+  ,function (parentObj) {
+    parentObj.registerE |= 0x80;
+  }
+  //SET 7, H
+  //#0xFC:
+  ,function (parentObj) {
+    parentObj.registersHL |= 0x8000;
+  }
+  //SET 7, L
+  //#0xFD:
+  ,function (parentObj) {
+    parentObj.registersHL |= 0x80;
+  }
+  //SET 7, (HL)
+  //#0xFE:
+  ,function (parentObj) {
+    parentObj.memoryWriter[parentObj.registersHL](parentObj, parentObj.registersHL, parentObj.memoryReader[parentObj.registersHL](parentObj, parentObj.registersHL) | 0x80);
+  }
+  //SET 7, A
+  //#0xFF:
+  ,function (parentObj) {
+    parentObj.registerA |= 0x80;
+  }
+];
+GameBoyCore.prototype.TICKTable = [    //Number of machine cycles for each instruction:
+/*   0,  1,  2,  3,  4,  5,  6,  7,      8,  9,  A, B,  C,  D, E,  F*/
+     4, 12,  8,  8,  4,  4,  8,  4,     20,  8,  8, 8,  4,  4, 8,  4,  //0
+     4, 12,  8,  8,  4,  4,  8,  4,     12,  8,  8, 8,  4,  4, 8,  4,  //1
+     8, 12,  8,  8,  4,  4,  8,  4,      8,  8,  8, 8,  4,  4, 8,  4,  //2
+     8, 12,  8,  8, 12, 12, 12,  4,      8,  8,  8, 8,  4,  4, 8,  4,  //3
+
+     4,  4,  4,  4,  4,  4,  8,  4,      4,  4,  4, 4,  4,  4, 8,  4,  //4
+     4,  4,  4,  4,  4,  4,  8,  4,      4,  4,  4, 4,  4,  4, 8,  4,  //5
+     4,  4,  4,  4,  4,  4,  8,  4,      4,  4,  4, 4,  4,  4, 8,  4,  //6
+     8,  8,  8,  8,  8,  8,  4,  8,      4,  4,  4, 4,  4,  4, 8,  4,  //7
+
+     4,  4,  4,  4,  4,  4,  8,  4,      4,  4,  4, 4,  4,  4, 8,  4,  //8
+     4,  4,  4,  4,  4,  4,  8,  4,      4,  4,  4, 4,  4,  4, 8,  4,  //9
+     4,  4,  4,  4,  4,  4,  8,  4,      4,  4,  4, 4,  4,  4, 8,  4,  //A
+     4,  4,  4,  4,  4,  4,  8,  4,      4,  4,  4, 4,  4,  4, 8,  4,  //B
+
+     8, 12, 12, 16, 12, 16,  8, 16,      8, 16, 12, 0, 12, 24, 8, 16,  //C
+     8, 12, 12,  4, 12, 16,  8, 16,      8, 16, 12, 4, 12,  4, 8, 16,  //D
+    12, 12,  8,  4,  4, 16,  8, 16,     16,  4, 16, 4,  4,  4, 8, 16,  //E
+    12, 12,  8,  4,  4, 16,  8, 16,     12,  8, 16, 4,  0,  4, 8, 16   //F
+];
+GameBoyCore.prototype.SecondaryTICKTable = [  //Number of machine cycles for each 0xCBXX instruction:
+/*  0, 1, 2, 3, 4, 5,  6, 7,        8, 9, A, B, C, D,  E, F*/
+    8, 8, 8, 8, 8, 8, 16, 8,        8, 8, 8, 8, 8, 8, 16, 8,  //0
+    8, 8, 8, 8, 8, 8, 16, 8,        8, 8, 8, 8, 8, 8, 16, 8,  //1
+    8, 8, 8, 8, 8, 8, 16, 8,        8, 8, 8, 8, 8, 8, 16, 8,  //2
+    8, 8, 8, 8, 8, 8, 16, 8,        8, 8, 8, 8, 8, 8, 16, 8,  //3
+
+    8, 8, 8, 8, 8, 8, 12, 8,        8, 8, 8, 8, 8, 8, 12, 8,  //4
+    8, 8, 8, 8, 8, 8, 12, 8,        8, 8, 8, 8, 8, 8, 12, 8,  //5
+    8, 8, 8, 8, 8, 8, 12, 8,        8, 8, 8, 8, 8, 8, 12, 8,  //6
+    8, 8, 8, 8, 8, 8, 12, 8,        8, 8, 8, 8, 8, 8, 12, 8,  //7
+
+    8, 8, 8, 8, 8, 8, 16, 8,        8, 8, 8, 8, 8, 8, 16, 8,  //8
+    8, 8, 8, 8, 8, 8, 16, 8,        8, 8, 8, 8, 8, 8, 16, 8,  //9
+    8, 8, 8, 8, 8, 8, 16, 8,        8, 8, 8, 8, 8, 8, 16, 8,  //A
+    8, 8, 8, 8, 8, 8, 16, 8,        8, 8, 8, 8, 8, 8, 16, 8,  //B
+
+    8, 8, 8, 8, 8, 8, 16, 8,        8, 8, 8, 8, 8, 8, 16, 8,  //C
+    8, 8, 8, 8, 8, 8, 16, 8,        8, 8, 8, 8, 8, 8, 16, 8,  //D
+    8, 8, 8, 8, 8, 8, 16, 8,        8, 8, 8, 8, 8, 8, 16, 8,  //E
+    8, 8, 8, 8, 8, 8, 16, 8,        8, 8, 8, 8, 8, 8, 16, 8   //F
+];
+GameBoyCore.prototype.saveSRAMState = function () {
+  if (!this.cBATT || this.MBCRam.length == 0) {
+    //No battery backup...
+    return [];
+  }
+  else {
+    //Return the MBC RAM for backup...
+    return this.fromTypedArray(this.MBCRam);
+  }
+}
+GameBoyCore.prototype.saveRTCState = function () {
+  if (!this.cTIMER) {
+    //No battery backup...
+    return [];
+  }
+  else {
+    //Return the MBC RAM for backup...
+    return [
+      this.lastIteration,
+      this.RTCisLatched,
+      this.latchedSeconds,
+      this.latchedMinutes,
+      this.latchedHours,
+      this.latchedLDays,
+      this.latchedHDays,
+      this.RTCSeconds,
+      this.RTCMinutes,
+      this.RTCHours,
+      this.RTCDays,
+      this.RTCDayOverFlow,
+      this.RTCHALT
+    ];
+  }
+}
+GameBoyCore.prototype.saveState = function () {
+  return [
+    this.fromTypedArray(this.ROM),
+    this.inBootstrap,
+    this.registerA,
+    this.FZero,
+    this.FSubtract,
+    this.FHalfCarry,
+    this.FCarry,
+    this.registerB,
+    this.registerC,
+    this.registerD,
+    this.registerE,
+    this.registersHL,
+    this.stackPointer,
+    this.programCounter,
+    this.halt,
+    this.IME,
+    this.hdmaRunning,
+    this.CPUTicks,
+    this.doubleSpeedShifter,
+    this.fromTypedArray(this.memory),
+    this.fromTypedArray(this.MBCRam),
+    this.fromTypedArray(this.VRAM),
+    this.currVRAMBank,
+    this.fromTypedArray(this.GBCMemory),
+    this.MBC1Mode,
+    this.MBCRAMBanksEnabled,
+    this.currMBCRAMBank,
+    this.currMBCRAMBankPosition,
+    this.cGBC,
+    this.gbcRamBank,
+    this.gbcRamBankPosition,
+    this.ROMBank1offs,
+    this.currentROMBank,
+    this.cartridgeType,
+    this.name,
+    this.gameCode,
+    this.modeSTAT,
+    this.LYCMatchTriggerSTAT,
+    this.mode2TriggerSTAT,
+    this.mode1TriggerSTAT,
+    this.mode0TriggerSTAT,
+    this.LCDisOn,
+    this.gfxWindowCHRBankPosition,
+    this.gfxWindowDisplay,
+    this.gfxSpriteShow,
+    this.gfxSpriteNormalHeight,
+    this.gfxBackgroundCHRBankPosition,
+    this.gfxBackgroundBankOffset,
+    this.TIMAEnabled,
+    this.DIVTicks,
+    this.LCDTicks,
+    this.timerTicks,
+    this.TACClocker,
+    this.serialTimer,
+    this.serialShiftTimer,
+    this.serialShiftTimerAllocated,
+    this.IRQEnableDelay,
+    this.lastIteration,
+    this.cMBC1,
+    this.cMBC2,
+    this.cMBC3,
+    this.cMBC5,
+    this.cMBC7,
+    this.cSRAM,
+    this.cMMMO1,
+    this.cRUMBLE,
+    this.cCamera,
+    this.cTAMA5,
+    this.cHuC3,
+    this.cHuC1,
+    this.drewBlank,
+    this.fromTypedArray(this.frameBuffer),
+    this.bgEnabled,
+    this.BGPriorityEnabled,
+    this.channel1FrequencyTracker,
+    this.channel1FrequencyCounter,
+    this.channel1totalLength,
+    this.channel1envelopeVolume,
+    this.channel1envelopeType,
+    this.channel1envelopeSweeps,
+    this.channel1envelopeSweepsLast,
+    this.channel1consecutive,
+    this.channel1frequency,
+    this.channel1SweepFault,
+    this.channel1ShadowFrequency,
+    this.channel1timeSweep,
+    this.channel1lastTimeSweep,
+    this.channel1numSweep,
+    this.channel1frequencySweepDivider,
+    this.channel1decreaseSweep,
+    this.channel2FrequencyTracker,
+    this.channel2FrequencyCounter,
+    this.channel2totalLength,
+    this.channel2envelopeVolume,
+    this.channel2envelopeType,
+    this.channel2envelopeSweeps,
+    this.channel2envelopeSweepsLast,
+    this.channel2consecutive,
+    this.channel2frequency,
+    this.channel3canPlay,
+    this.channel3totalLength,
+    this.channel3patternType,
+    this.channel3frequency,
+    this.channel3consecutive,
+    this.fromTypedArray(this.channel3PCM),
+    this.channel4FrequencyPeriod,
+    this.channel4lastSampleLookup,
+    this.channel4totalLength,
+    this.channel4envelopeVolume,
+    this.channel4currentVolume,
+    this.channel4envelopeType,
+    this.channel4envelopeSweeps,
+    this.channel4envelopeSweepsLast,
+    this.channel4consecutive,
+    this.channel4BitRange,
+    this.soundMasterEnabled,
+    this.VinLeftChannelMasterVolume,
+    this.VinRightChannelMasterVolume,
+    this.leftChannel1,
+    this.leftChannel2,
+    this.leftChannel3,
+    this.leftChannel4,
+    this.rightChannel1,
+    this.rightChannel2,
+    this.rightChannel3,
+    this.rightChannel4,
+    this.channel1currentSampleLeft,
+    this.channel1currentSampleRight,
+    this.channel2currentSampleLeft,
+    this.channel2currentSampleRight,
+    this.channel3currentSampleLeft,
+    this.channel3currentSampleRight,
+    this.channel4currentSampleLeft,
+    this.channel4currentSampleRight,
+    this.channel1currentSampleLeftSecondary,
+    this.channel1currentSampleRightSecondary,
+    this.channel2currentSampleLeftSecondary,
+    this.channel2currentSampleRightSecondary,
+    this.channel3currentSampleLeftSecondary,
+    this.channel3currentSampleRightSecondary,
+    this.channel4currentSampleLeftSecondary,
+    this.channel4currentSampleRightSecondary,
+    this.channel1currentSampleLeftTrimary,
+    this.channel1currentSampleRightTrimary,
+    this.channel2currentSampleLeftTrimary,
+    this.channel2currentSampleRightTrimary,
+    this.mixerOutputCache,
+    this.channel1DutyTracker,
+    this.channel1CachedDuty,
+    this.channel2DutyTracker,
+    this.channel2CachedDuty,
+    this.channel1Enabled,
+    this.channel2Enabled,
+    this.channel3Enabled,
+    this.channel4Enabled,
+    this.sequencerClocks,
+    this.sequencePosition,
+    this.channel3Counter,
+    this.channel4Counter,
+    this.cachedChannel3Sample,
+    this.cachedChannel4Sample,
+    this.channel3FrequencyPeriod,
+    this.channel3lastSampleLookup,
+    this.actualScanLine,
+    this.lastUnrenderedLine,
+    this.queuedScanLines,
+    this.RTCisLatched,
+    this.latchedSeconds,
+    this.latchedMinutes,
+    this.latchedHours,
+    this.latchedLDays,
+    this.latchedHDays,
+    this.RTCSeconds,
+    this.RTCMinutes,
+    this.RTCHours,
+    this.RTCDays,
+    this.RTCDayOverFlow,
+    this.RTCHALT,
+    this.usedBootROM,
+    this.skipPCIncrement,
+    this.STATTracker,
+    this.gbcRamBankPositionECHO,
+    this.numRAMBanks,
+    this.windowY,
+    this.windowX,
+    this.fromTypedArray(this.gbcOBJRawPalette),
+    this.fromTypedArray(this.gbcBGRawPalette),
+    this.fromTypedArray(this.gbOBJPalette),
+    this.fromTypedArray(this.gbBGPalette),
+    this.fromTypedArray(this.gbcOBJPalette),
+    this.fromTypedArray(this.gbcBGPalette),
+    this.fromTypedArray(this.gbBGColorizedPalette),
+    this.fromTypedArray(this.gbOBJColorizedPalette),
+    this.fromTypedArray(this.cachedBGPaletteConversion),
+    this.fromTypedArray(this.cachedOBJPaletteConversion),
+    this.fromTypedArray(this.BGCHRBank1),
+    this.fromTypedArray(this.BGCHRBank2),
+    this.haltPostClocks,
+    this.interruptsRequested,
+    this.interruptsEnabled,
+    this.remainingClocks,
+    this.colorizedGBPalettes,
+    this.backgroundY,
+    this.backgroundX,
+    this.CPUStopped
+  ];
+}
+GameBoyCore.prototype.returnFromState = function (returnedFrom) {
+  var index = 0;
+  var state = returnedFrom.slice(0);
+  this.ROM = this.toTypedArray(state[index++], "uint8");
+  this.ROMBankEdge = Math.floor(this.ROM.length / 0x4000);
+  this.inBootstrap = state[index++];
+  this.registerA = state[index++];
+  this.FZero = state[index++];
+  this.FSubtract = state[index++];
+  this.FHalfCarry = state[index++];
+  this.FCarry = state[index++];
+  this.registerB = state[index++];
+  this.registerC = state[index++];
+  this.registerD = state[index++];
+  this.registerE = state[index++];
+  this.registersHL = state[index++];
+  this.stackPointer = state[index++];
+  this.programCounter = state[index++];
+  this.halt = state[index++];
+  this.IME = state[index++];
+  this.hdmaRunning = state[index++];
+  this.CPUTicks = state[index++];
+  this.doubleSpeedShifter = state[index++];
+  this.memory = this.toTypedArray(state[index++], "uint8");
+  this.MBCRam = this.toTypedArray(state[index++], "uint8");
+  this.VRAM = this.toTypedArray(state[index++], "uint8");
+  this.currVRAMBank = state[index++];
+  this.GBCMemory = this.toTypedArray(state[index++], "uint8");
+  this.MBC1Mode = state[index++];
+  this.MBCRAMBanksEnabled = state[index++];
+  this.currMBCRAMBank = state[index++];
+  this.currMBCRAMBankPosition = state[index++];
+  this.cGBC = state[index++];
+  this.gbcRamBank = state[index++];
+  this.gbcRamBankPosition = state[index++];
+  this.ROMBank1offs = state[index++];
+  this.currentROMBank = state[index++];
+  this.cartridgeType = state[index++];
+  this.name = state[index++];
+  this.gameCode = state[index++];
+  this.modeSTAT = state[index++];
+  this.LYCMatchTriggerSTAT = state[index++];
+  this.mode2TriggerSTAT = state[index++];
+  this.mode1TriggerSTAT = state[index++];
+  this.mode0TriggerSTAT = state[index++];
+  this.LCDisOn = state[index++];
+  this.gfxWindowCHRBankPosition = state[index++];
+  this.gfxWindowDisplay = state[index++];
+  this.gfxSpriteShow = state[index++];
+  this.gfxSpriteNormalHeight = state[index++];
+  this.gfxBackgroundCHRBankPosition = state[index++];
+  this.gfxBackgroundBankOffset = state[index++];
+  this.TIMAEnabled = state[index++];
+  this.DIVTicks = state[index++];
+  this.LCDTicks = state[index++];
+  this.timerTicks = state[index++];
+  this.TACClocker = state[index++];
+  this.serialTimer = state[index++];
+  this.serialShiftTimer = state[index++];
+  this.serialShiftTimerAllocated = state[index++];
+  this.IRQEnableDelay = state[index++];
+  this.lastIteration = state[index++];
+  this.cMBC1 = state[index++];
+  this.cMBC2 = state[index++];
+  this.cMBC3 = state[index++];
+  this.cMBC5 = state[index++];
+  this.cMBC7 = state[index++];
+  this.cSRAM = state[index++];
+  this.cMMMO1 = state[index++];
+  this.cRUMBLE = state[index++];
+  this.cCamera = state[index++];
+  this.cTAMA5 = state[index++];
+  this.cHuC3 = state[index++];
+  this.cHuC1 = state[index++];
+  this.drewBlank = state[index++];
+  this.frameBuffer = this.toTypedArray(state[index++], "int32");
+  this.bgEnabled = state[index++];
+  this.BGPriorityEnabled = state[index++];
+  this.channel1FrequencyTracker = state[index++];
+  this.channel1FrequencyCounter = state[index++];
+  this.channel1totalLength = state[index++];
+  this.channel1envelopeVolume = state[index++];
+  this.channel1envelopeType = state[index++];
+  this.channel1envelopeSweeps = state[index++];
+  this.channel1envelopeSweepsLast = state[index++];
+  this.channel1consecutive = state[index++];
+  this.channel1frequency = state[index++];
+  this.channel1SweepFault = state[index++];
+  this.channel1ShadowFrequency = state[index++];
+  this.channel1timeSweep = state[index++];
+  this.channel1lastTimeSweep = state[index++];
+  this.channel1numSweep = state[index++];
+  this.channel1frequencySweepDivider = state[index++];
+  this.channel1decreaseSweep = state[index++];
+  this.channel2FrequencyTracker = state[index++];
+  this.channel2FrequencyCounter = state[index++];
+  this.channel2totalLength = state[index++];
+  this.channel2envelopeVolume = state[index++];
+  this.channel2envelopeType = state[index++];
+  this.channel2envelopeSweeps = state[index++];
+  this.channel2envelopeSweepsLast = state[index++];
+  this.channel2consecutive = state[index++];
+  this.channel2frequency = state[index++];
+  this.channel3canPlay = state[index++];
+  this.channel3totalLength = state[index++];
+  this.channel3patternType = state[index++];
+  this.channel3frequency = state[index++];
+  this.channel3consecutive = state[index++];
+  this.channel3PCM = this.toTypedArray(state[index++], "int8");
+  this.channel4FrequencyPeriod = state[index++];
+  this.channel4lastSampleLookup = state[index++];
+  this.channel4totalLength = state[index++];
+  this.channel4envelopeVolume = state[index++];
+  this.channel4currentVolume = state[index++];
+  this.channel4envelopeType = state[index++];
+  this.channel4envelopeSweeps = state[index++];
+  this.channel4envelopeSweepsLast = state[index++];
+  this.channel4consecutive = state[index++];
+  this.channel4BitRange = state[index++];
+  this.soundMasterEnabled = state[index++];
+  this.VinLeftChannelMasterVolume = state[index++];
+  this.VinRightChannelMasterVolume = state[index++];
+  this.leftChannel1 = state[index++];
+  this.leftChannel2 = state[index++];
+  this.leftChannel3 = state[index++];
+  this.leftChannel4 = state[index++];
+  this.rightChannel1 = state[index++];
+  this.rightChannel2 = state[index++];
+  this.rightChannel3 = state[index++];
+  this.rightChannel4 = state[index++];
+  this.channel1currentSampleLeft = state[index++];
+  this.channel1currentSampleRight = state[index++];
+  this.channel2currentSampleLeft = state[index++];
+  this.channel2currentSampleRight = state[index++];
+  this.channel3currentSampleLeft = state[index++];
+  this.channel3currentSampleRight = state[index++];
+  this.channel4currentSampleLeft = state[index++];
+  this.channel4currentSampleRight = state[index++];
+  this.channel1currentSampleLeftSecondary = state[index++];
+  this.channel1currentSampleRightSecondary = state[index++];
+  this.channel2currentSampleLeftSecondary = state[index++];
+  this.channel2currentSampleRightSecondary = state[index++];
+  this.channel3currentSampleLeftSecondary = state[index++];
+  this.channel3currentSampleRightSecondary = state[index++];
+  this.channel4currentSampleLeftSecondary = state[index++];
+  this.channel4currentSampleRightSecondary = state[index++];
+  this.channel1currentSampleLeftTrimary = state[index++];
+  this.channel1currentSampleRightTrimary = state[index++];
+  this.channel2currentSampleLeftTrimary = state[index++];
+  this.channel2currentSampleRightTrimary = state[index++];
+  this.mixerOutputCache = state[index++];
+  this.channel1DutyTracker = state[index++];
+  this.channel1CachedDuty = state[index++];
+  this.channel2DutyTracker = state[index++];
+  this.channel2CachedDuty = state[index++];
+  this.channel1Enabled = state[index++];
+  this.channel2Enabled = state[index++];
+  this.channel3Enabled = state[index++];
+  this.channel4Enabled = state[index++];
+  this.sequencerClocks = state[index++];
+  this.sequencePosition = state[index++];
+  this.channel3Counter = state[index++];
+  this.channel4Counter = state[index++];
+  this.cachedChannel3Sample = state[index++];
+  this.cachedChannel4Sample = state[index++];
+  this.channel3FrequencyPeriod = state[index++];
+  this.channel3lastSampleLookup = state[index++];
+  this.actualScanLine = state[index++];
+  this.lastUnrenderedLine = state[index++];
+  this.queuedScanLines = state[index++];
+  this.RTCisLatched = state[index++];
+  this.latchedSeconds = state[index++];
+  this.latchedMinutes = state[index++];
+  this.latchedHours = state[index++];
+  this.latchedLDays = state[index++];
+  this.latchedHDays = state[index++];
+  this.RTCSeconds = state[index++];
+  this.RTCMinutes = state[index++];
+  this.RTCHours = state[index++];
+  this.RTCDays = state[index++];
+  this.RTCDayOverFlow = state[index++];
+  this.RTCHALT = state[index++];
+  this.usedBootROM = state[index++];
+  this.skipPCIncrement = state[index++];
+  this.STATTracker = state[index++];
+  this.gbcRamBankPositionECHO = state[index++];
+  this.numRAMBanks = state[index++];
+  this.windowY = state[index++];
+  this.windowX = state[index++];
+  this.gbcOBJRawPalette = this.toTypedArray(state[index++], "uint8");
+  this.gbcBGRawPalette = this.toTypedArray(state[index++], "uint8");
+  this.gbOBJPalette = this.toTypedArray(state[index++], "int32");
+  this.gbBGPalette = this.toTypedArray(state[index++], "int32");
+  this.gbcOBJPalette = this.toTypedArray(state[index++], "int32");
+  this.gbcBGPalette = this.toTypedArray(state[index++], "int32");
+  this.gbBGColorizedPalette = this.toTypedArray(state[index++], "int32");
+  this.gbOBJColorizedPalette = this.toTypedArray(state[index++], "int32");
+  this.cachedBGPaletteConversion = this.toTypedArray(state[index++], "int32");
+  this.cachedOBJPaletteConversion = this.toTypedArray(state[index++], "int32");
+  this.BGCHRBank1 = this.toTypedArray(state[index++], "uint8");
+  this.BGCHRBank2 = this.toTypedArray(state[index++], "uint8");
+  this.haltPostClocks = state[index++];
+  this.interruptsRequested = state[index++];
+  this.interruptsEnabled = state[index++];
+  this.checkIRQMatching();
+  this.remainingClocks = state[index++];
+  this.colorizedGBPalettes = state[index++];
+  this.backgroundY = state[index++];
+  this.backgroundX = state[index++];
+  this.CPUStopped = state[index];
+  this.fromSaveState = true;
+  this.TICKTable = this.toTypedArray(this.TICKTable, "uint8");
+  this.SecondaryTICKTable = this.toTypedArray(this.SecondaryTICKTable, "uint8");
+  this.initializeReferencesFromSaveState();
+  this.memoryReadJumpCompile();
+  this.memoryWriteJumpCompile();
+  this.initLCD();
+  this.initSound();
+  this.noiseSampleTable = (this.channel4BitRange == 0x7FFF) ? this.LSFR15Table : this.LSFR7Table;
+  this.channel4VolumeShifter = (this.channel4BitRange == 0x7FFF) ? 15 : 7;
+}
+GameBoyCore.prototype.returnFromRTCState = function () {
+  if (typeof this.openRTC == "function" && this.cTIMER) {
+    var rtcData = this.openRTC(this.name);
+    var index = 0;
+    this.lastIteration = rtcData[index++];
+    this.RTCisLatched = rtcData[index++];
+    this.latchedSeconds = rtcData[index++];
+    this.latchedMinutes = rtcData[index++];
+    this.latchedHours = rtcData[index++];
+    this.latchedLDays = rtcData[index++];
+    this.latchedHDays = rtcData[index++];
+    this.RTCSeconds = rtcData[index++];
+    this.RTCMinutes = rtcData[index++];
+    this.RTCHours = rtcData[index++];
+    this.RTCDays = rtcData[index++];
+    this.RTCDayOverFlow = rtcData[index++];
+    this.RTCHALT = rtcData[index];
+  }
+}
+
+GameBoyCore.prototype.start = function () {
+  this.initMemory();  //Write the startup memory.
+  this.ROMLoad();    //Load the ROM into memory and get cartridge information from it.
+  this.initLCD();    //Initialize the graphics.
+  this.initSound();  //Sound object initialization.
+  this.run();      //Start the emulation.
+}
+GameBoyCore.prototype.initMemory = function () {
+  //Initialize the RAM:
+  this.memory = this.getTypedArray(0x10000, 0, "uint8");
+  this.frameBuffer = this.getTypedArray(23040, 0xF8F8F8, "int32");
+  this.BGCHRBank1 = this.getTypedArray(0x800, 0, "uint8");
+  this.TICKTable = this.toTypedArray(this.TICKTable, "uint8");
+  this.SecondaryTICKTable = this.toTypedArray(this.SecondaryTICKTable, "uint8");
+  this.channel3PCM = this.getTypedArray(0x20, 0, "int8");
+}
+GameBoyCore.prototype.generateCacheArray = function (tileAmount) {
+  var tileArray = [];
+  var tileNumber = 0;
+  while (tileNumber < tileAmount) {
+    tileArray[tileNumber++] = this.getTypedArray(64, 0, "uint8");
+  }
+  return tileArray;
+}
+GameBoyCore.prototype.initSkipBootstrap = function () {
+  //Fill in the boot ROM set register values
+  //Default values to the GB boot ROM values, then fill in the GBC boot ROM values after ROM loading
+  var index = 0xFF;
+  while (index >= 0) {
+    if (index >= 0x30 && index < 0x40) {
+      this.memoryWrite(0xFF00 | index, this.ffxxDump[index]);
+    }
+    else {
+      switch (index) {
+        case 0x00:
+        case 0x01:
+        case 0x02:
+        case 0x05:
+        case 0x07:
+        case 0x0F:
+        case 0xFF:
+          this.memoryWrite(0xFF00 | index, this.ffxxDump[index]);
+          break;
+        default:
+          this.memory[0xFF00 | index] = this.ffxxDump[index];
+      }
+    }
+    --index;
+  }
+  if (this.cGBC) {
+    this.memory[0xFF6C] = 0xFE;
+    this.memory[0xFF74] = 0xFE;
+  }
+  else {
+    this.memory[0xFF48] = 0xFF;
+    this.memory[0xFF49] = 0xFF;
+    this.memory[0xFF6C] = 0xFF;
+    this.memory[0xFF74] = 0xFF;
+  }
+  //Start as an unset device:
+  cout("Starting without the GBC boot ROM.", 0);
+  this.registerA = (this.cGBC) ? 0x11 : 0x1;
+  this.registerB = 0;
+  this.registerC = 0x13;
+  this.registerD = 0;
+  this.registerE = 0xD8;
+  this.FZero = true;
+  this.FSubtract = false;
+  this.FHalfCarry = true;
+  this.FCarry = true;
+  this.registersHL = 0x014D;
+  this.LCDCONTROL = this.LINECONTROL;
+  this.IME = false;
+  this.IRQLineMatched = 0;
+  this.interruptsRequested = 225;
+  this.interruptsEnabled = 0;
+  this.hdmaRunning = false;
+  this.CPUTicks = 12;
+  this.STATTracker = 0;
+  this.modeSTAT = 1;
+  this.spriteCount = 252;
+  this.LYCMatchTriggerSTAT = false;
+  this.mode2TriggerSTAT = false;
+  this.mode1TriggerSTAT = false;
+  this.mode0TriggerSTAT = false;
+  this.LCDisOn = true;
+  this.channel1FrequencyTracker = 0x2000;
+  this.channel1DutyTracker = 0;
+  this.channel1CachedDuty = this.dutyLookup[2];
+  this.channel1totalLength = 0;
+  this.channel1envelopeVolume = 0;
+  this.channel1envelopeType = false;
+  this.channel1envelopeSweeps = 0;
+  this.channel1envelopeSweepsLast = 0;
+  this.channel1consecutive = true;
+  this.channel1frequency = 1985;
+  this.channel1SweepFault = true;
+  this.channel1ShadowFrequency = 1985;
+  this.channel1timeSweep = 1;
+  this.channel1lastTimeSweep = 0;
+  this.channel1numSweep = 0;
+  this.channel1frequencySweepDivider = 0;
+  this.channel1decreaseSweep = false;
+  this.channel2FrequencyTracker = 0x2000;
+  this.channel2DutyTracker = 0;
+  this.channel2CachedDuty = this.dutyLookup[2];
+  this.channel2totalLength = 0;
+  this.channel2envelopeVolume = 0;
+  this.channel2envelopeType = false;
+  this.channel2envelopeSweeps = 0;
+  this.channel2envelopeSweepsLast = 0;
+  this.channel2consecutive = true;
+  this.channel2frequency = 0;
+  this.channel3canPlay = false;
+  this.channel3totalLength = 0;
+  this.channel3patternType = 4;
+  this.channel3frequency = 0;
+  this.channel3consecutive = true;
+  this.channel3Counter = 0x418;
+  this.channel4FrequencyPeriod = 8;
+  this.channel4totalLength = 0;
+  this.channel4envelopeVolume = 0;
+  this.channel4currentVolume = 0;
+  this.channel4envelopeType = false;
+  this.channel4envelopeSweeps = 0;
+  this.channel4envelopeSweepsLast = 0;
+  this.channel4consecutive = true;
+  this.channel4BitRange = 0x7FFF;
+  this.channel4VolumeShifter = 15;
+  this.channel1FrequencyCounter = 0x200;
+  this.channel2FrequencyCounter = 0x200;
+  this.channel3Counter = 0x800;
+  this.channel3FrequencyPeriod = 0x800;
+  this.channel3lastSampleLookup = 0;
+  this.channel4lastSampleLookup = 0;
+  this.VinLeftChannelMasterVolume = 1;
+  this.VinRightChannelMasterVolume = 1;
+  this.soundMasterEnabled = true;
+  this.leftChannel1 = true;
+  this.leftChannel2 = true;
+  this.leftChannel3 = true;
+  this.leftChannel4 = true;
+  this.rightChannel1 = true;
+  this.rightChannel2 = true;
+  this.rightChannel3 = false;
+  this.rightChannel4 = false;
+  this.DIVTicks = 27044;
+  this.LCDTicks = 160;
+  this.timerTicks = 0;
+  this.TIMAEnabled = false;
+  this.TACClocker = 1024;
+  this.serialTimer = 0;
+  this.serialShiftTimer = 0;
+  this.serialShiftTimerAllocated = 0;
+  this.IRQEnableDelay = 0;
+  this.actualScanLine = 144;
+  this.lastUnrenderedLine = 0;
+  this.gfxWindowDisplay = false;
+  this.gfxSpriteShow = false;
+  this.gfxSpriteNormalHeight = true;
+  this.bgEnabled = true;
+  this.BGPriorityEnabled = true;
+  this.gfxWindowCHRBankPosition = 0;
+  this.gfxBackgroundCHRBankPosition = 0;
+  this.gfxBackgroundBankOffset = 0;
+  this.windowY = 0;
+  this.windowX = 0;
+  this.drewBlank = 0;
+  this.midScanlineOffset = -1;
+  this.currentX = 0;
+}
+GameBoyCore.prototype.initBootstrap = function () {
+  //Start as an unset device:
+  cout("Starting the selected boot ROM.", 0);
+  this.programCounter = 0;
+  this.stackPointer = 0;
+  this.IME = false;
+  this.LCDTicks = 0;
+  this.DIVTicks = 0;
+  this.registerA = 0;
+  this.registerB = 0;
+  this.registerC = 0;
+  this.registerD = 0;
+  this.registerE = 0;
+  this.FZero = this.FSubtract = this.FHalfCarry = this.FCarry = false;
+  this.registersHL = 0;
+  this.leftChannel1 = false;
+  this.leftChannel2 = false;
+  this.leftChannel3 = false;
+  this.leftChannel4 = false;
+  this.rightChannel1 = false;
+  this.rightChannel2 = false;
+  this.rightChannel3 = false;
+  this.rightChannel4 = false;
+  this.channel2frequency = this.channel1frequency = 0;
+  this.channel4consecutive = this.channel2consecutive = this.channel1consecutive = false;
+  this.VinLeftChannelMasterVolume = 8;
+  this.VinRightChannelMasterVolume = 8;
+  this.memory[0xFF00] = 0xF;  //Set the joypad state.
+}
+GameBoyCore.prototype.ROMLoad = function () {
+  //Load the first two ROM banks (0x0000 - 0x7FFF) into regular gameboy memory:
+  this.ROM = [];
+  this.usedBootROM = settings[1];
+  var maxLength = this.ROMImage.length;
+  if (maxLength < 0x4000) {
+    throw(new Error("ROM image size too small."));
+  }
+  this.ROM = this.getTypedArray(maxLength, 0, "uint8");
+  var romIndex = 0;
+  if (this.usedBootROM) {
+    if (!settings[11]) {
+      //Patch in the GBC boot ROM into the memory map:
+      for (; romIndex < 0x100; ++romIndex) {
+        this.memory[romIndex] = this.GBCBOOTROM[romIndex];                      //Load in the GameBoy Color BOOT ROM.
+        this.ROM[romIndex] = (this.ROMImage.charCodeAt(romIndex) & 0xFF);              //Decode the ROM binary for the switch out.
+      }
+      for (; romIndex < 0x200; ++romIndex) {
+        this.memory[romIndex] = this.ROM[romIndex] = (this.ROMImage.charCodeAt(romIndex) & 0xFF);  //Load in the game ROM.
+      }
+      for (; romIndex < 0x900; ++romIndex) {
+        this.memory[romIndex] = this.GBCBOOTROM[romIndex - 0x100];                  //Load in the GameBoy Color BOOT ROM.
+        this.ROM[romIndex] = (this.ROMImage.charCodeAt(romIndex) & 0xFF);              //Decode the ROM binary for the switch out.
+      }
+      this.usedGBCBootROM = true;
+    }
+    else {
+      //Patch in the GBC boot ROM into the memory map:
+      for (; romIndex < 0x100; ++romIndex) {
+        this.memory[romIndex] = this.GBBOOTROM[romIndex];                      //Load in the GameBoy Color BOOT ROM.
+        this.ROM[romIndex] = (this.ROMImage.charCodeAt(romIndex) & 0xFF);              //Decode the ROM binary for the switch out.
+      }
+    }
+    for (; romIndex < 0x4000; ++romIndex) {
+      this.memory[romIndex] = this.ROM[romIndex] = (this.ROMImage.charCodeAt(romIndex) & 0xFF);  //Load in the game ROM.
+    }
+  }
+  else {
+    //Don't load in the boot ROM:
+    for (; romIndex < 0x4000; ++romIndex) {
+      this.memory[romIndex] = this.ROM[romIndex] = (this.ROMImage.charCodeAt(romIndex) & 0xFF);  //Load in the game ROM.
+    }
+  }
+  //Finish the decoding of the ROM binary:
+  for (; romIndex < maxLength; ++romIndex) {
+    this.ROM[romIndex] = (this.ROMImage.charCodeAt(romIndex) & 0xFF);
+  }
+  this.ROMBankEdge = Math.floor(this.ROM.length / 0x4000);
+  //Set up the emulator for the cartidge specifics:
+  this.interpretCartridge();
+  //Check for IRQ matching upon initialization:
+  this.checkIRQMatching();
+}
+GameBoyCore.prototype.getROMImage = function () {
+  //Return the binary version of the ROM image currently running:
+  if (this.ROMImage.length > 0) {
+    return this.ROMImage.length;
+  }
+  var length = this.ROM.length;
+  for (var index = 0; index < length; index++) {
+    this.ROMImage += String.fromCharCode(this.ROM[index]);
+  }
+  return this.ROMImage;
+}
+GameBoyCore.prototype.interpretCartridge = function () {
+  // ROM name
+  for (var index = 0x134; index < 0x13F; index++) {
+    if (this.ROMImage.charCodeAt(index) > 0) {
+      this.name += this.ROMImage[index];
+    }
+  }
+  // ROM game code (for newer games)
+  for (var index = 0x13F; index < 0x143; index++) {
+    if (this.ROMImage.charCodeAt(index) > 0) {
+      this.gameCode += this.ROMImage[index];
+    }
+  }
+  cout("Game Title: " + this.name + "[" + this.gameCode + "][" + this.ROMImage[0x143] + "]", 0);
+  cout("Game Code: " + this.gameCode, 0);
+  // Cartridge type
+  this.cartridgeType = this.ROM[0x147];
+  cout("Cartridge type #" + this.cartridgeType, 0);
+  //Map out ROM cartridge sub-types.
+  var MBCType = "";
+  switch (this.cartridgeType) {
+    case 0x00:
+      //ROM w/o bank switching
+      if (!settings[9]) {
+        MBCType = "ROM";
+        break;
+      }
+    case 0x01:
+      this.cMBC1 = true;
+      MBCType = "MBC1";
+      break;
+    case 0x02:
+      this.cMBC1 = true;
+      this.cSRAM = true;
+      MBCType = "MBC1 + SRAM";
+      break;
+    case 0x03:
+      this.cMBC1 = true;
+      this.cSRAM = true;
+      this.cBATT = true;
+      MBCType = "MBC1 + SRAM + BATT";
+      break;
+    case 0x05:
+      this.cMBC2 = true;
+      MBCType = "MBC2";
+      break;
+    case 0x06:
+      this.cMBC2 = true;
+      this.cBATT = true;
+      MBCType = "MBC2 + BATT";
+      break;
+    case 0x08:
+      this.cSRAM = true;
+      MBCType = "ROM + SRAM";
+      break;
+    case 0x09:
+      this.cSRAM = true;
+      this.cBATT = true;
+      MBCType = "ROM + SRAM + BATT";
+      break;
+    case 0x0B:
+      this.cMMMO1 = true;
+      MBCType = "MMMO1";
+      break;
+    case 0x0C:
+      this.cMMMO1 = true;
+      this.cSRAM = true;
+      MBCType = "MMMO1 + SRAM";
+      break;
+    case 0x0D:
+      this.cMMMO1 = true;
+      this.cSRAM = true;
+      this.cBATT = true;
+      MBCType = "MMMO1 + SRAM + BATT";
+      break;
+    case 0x0F:
+      this.cMBC3 = true;
+      this.cTIMER = true;
+      this.cBATT = true;
+      MBCType = "MBC3 + TIMER + BATT";
+      break;
+    case 0x10:
+      this.cMBC3 = true;
+      this.cTIMER = true;
+      this.cBATT = true;
+      this.cSRAM = true;
+      MBCType = "MBC3 + TIMER + BATT + SRAM";
+      break;
+    case 0x11:
+      this.cMBC3 = true;
+      MBCType = "MBC3";
+      break;
+    case 0x12:
+      this.cMBC3 = true;
+      this.cSRAM = true;
+      MBCType = "MBC3 + SRAM";
+      break;
+    case 0x13:
+      this.cMBC3 = true;
+      this.cSRAM = true;
+      this.cBATT = true;
+      MBCType = "MBC3 + SRAM + BATT";
+      break;
+    case 0x19:
+      this.cMBC5 = true;
+      MBCType = "MBC5";
+      break;
+    case 0x1A:
+      this.cMBC5 = true;
+      this.cSRAM = true;
+      MBCType = "MBC5 + SRAM";
+      break;
+    case 0x1B:
+      this.cMBC5 = true;
+      this.cSRAM = true;
+      this.cBATT = true;
+      MBCType = "MBC5 + SRAM + BATT";
+      break;
+    case 0x1C:
+      this.cRUMBLE = true;
+      MBCType = "RUMBLE";
+      break;
+    case 0x1D:
+      this.cRUMBLE = true;
+      this.cSRAM = true;
+      MBCType = "RUMBLE + SRAM";
+      break;
+    case 0x1E:
+      this.cRUMBLE = true;
+      this.cSRAM = true;
+      this.cBATT = true;
+      MBCType = "RUMBLE + SRAM + BATT";
+      break;
+    case 0x1F:
+      this.cCamera = true;
+      MBCType = "GameBoy Camera";
+      break;
+    case 0x22:
+      this.cMBC7 = true;
+      this.cSRAM = true;
+      this.cBATT = true;
+      MBCType = "MBC7 + SRAM + BATT";
+      break;
+    case 0xFD:
+      this.cTAMA5 = true;
+      MBCType = "TAMA5";
+      break;
+    case 0xFE:
+      this.cHuC3 = true;
+      MBCType = "HuC3";
+      break;
+    case 0xFF:
+      this.cHuC1 = true;
+      MBCType = "HuC1";
+      break;
+    default:
+      MBCType = "Unknown";
+      cout("Cartridge type is unknown.", 2);
+      pause();
+  }
+  cout("Cartridge Type: " + MBCType + ".", 0);
+  // ROM and RAM banks
+  this.numROMBanks = this.ROMBanks[this.ROM[0x148]];
+  cout(this.numROMBanks + " ROM banks.", 0);
+  switch (this.RAMBanks[this.ROM[0x149]]) {
+    case 0:
+      cout("No RAM banking requested for allocation or MBC is of type 2.", 0);
+      break;
+    case 2:
+      cout("1 RAM bank requested for allocation.", 0);
+      break;
+    case 3:
+      cout("4 RAM banks requested for allocation.", 0);
+      break;
+    case 4:
+      cout("16 RAM banks requested for allocation.", 0);
+      break;
+    default:
+      cout("RAM bank amount requested is unknown, will use maximum allowed by specified MBC type.", 0);
+  }
+  //Check the GB/GBC mode byte:
+  if (!this.usedBootROM) {
+    switch (this.ROM[0x143]) {
+      case 0x00:  //Only GB mode
+        this.cGBC = false;
+        cout("Only GB mode detected.", 0);
+        break;
+      case 0x32:  //Exception to the GBC identifying code:
+        if (!settings[2] && this.name + this.gameCode + this.ROM[0x143] == "Game and Watch 50") {
+          this.cGBC = true;
+          cout("Created a boot exception for Game and Watch Gallery 2 (GBC ID byte is wrong on the cartridge).", 1);
+        }
+        else {
+          this.cGBC = false;
+        }
+        break;
+      case 0x80:  //Both GB + GBC modes
+        this.cGBC = !settings[2];
+        cout("GB and GBC mode detected.", 0);
+        break;
+      case 0xC0:  //Only GBC mode
+        this.cGBC = true;
+        cout("Only GBC mode detected.", 0);
+        break;
+      default:
+        this.cGBC = false;
+        cout("Unknown GameBoy game type code #" + this.ROM[0x143] + ", defaulting to GB mode (Old games don't have a type code).", 1);
+    }
+    this.inBootstrap = false;
+    this.setupRAM();  //CPU/(V)RAM initialization.
+    this.initSkipBootstrap();
+    this.initializeAudioStartState(); // Line added for benchmarking.
+  }
+  else {
+    this.cGBC = this.usedGBCBootROM;  //Allow the GBC boot ROM to run in GBC mode...
+    this.setupRAM();  //CPU/(V)RAM initialization.
+    this.initBootstrap();
+  }
+  this.initializeModeSpecificArrays();
+  //License Code Lookup:
+  var cOldLicense = this.ROM[0x14B];
+  var cNewLicense = (this.ROM[0x144] & 0xFF00) | (this.ROM[0x145] & 0xFF);
+  if (cOldLicense != 0x33) {
+    //Old Style License Header
+    cout("Old style license code: " + cOldLicense, 0);
+  }
+  else {
+    //New Style License Header
+    cout("New style license code: " + cNewLicense, 0);
+  }
+  this.ROMImage = "";  //Memory consumption reduction.
+}
+GameBoyCore.prototype.disableBootROM = function () {
+  //Remove any traces of the boot ROM from ROM memory.
+  for (var index = 0; index < 0x100; ++index) {
+    this.memory[index] = this.ROM[index];  //Replace the GameBoy or GameBoy Color boot ROM with the game ROM.
+  }
+  if (this.usedGBCBootROM) {
+    //Remove any traces of the boot ROM from ROM memory.
+    for (index = 0x200; index < 0x900; ++index) {
+      this.memory[index] = this.ROM[index];  //Replace the GameBoy Color boot ROM with the game ROM.
+    }
+    if (!this.cGBC) {
+      //Clean up the post-boot (GB mode only) state:
+      this.GBCtoGBModeAdjust();
+    }
+    else {
+      this.recompileBootIOWriteHandling();
+    }
+  }
+  else {
+    this.recompileBootIOWriteHandling();
+  }
+}
+GameBoyCore.prototype.initializeTiming = function () {
+  //Emulator Timing:
+  this.baseCPUCyclesPerIteration = 0x80000 / 0x7D * settings[6];
+  this.CPUCyclesTotalRoundoff = this.baseCPUCyclesPerIteration % 4;
+  this.CPUCyclesTotalBase = this.CPUCyclesTotal = (this.baseCPUCyclesPerIteration - this.CPUCyclesTotalRoundoff) | 0;
+  this.CPUCyclesTotalCurrent = 0;
+}
+GameBoyCore.prototype.setupRAM = function () {
+  //Setup the auxilliary/switchable RAM:
+  if (this.cMBC2) {
+    this.numRAMBanks = 1 / 16;
+  }
+  else if (this.cMBC1 || this.cRUMBLE || this.cMBC3 || this.cHuC3) {
+    this.numRAMBanks = 4;
+  }
+  else if (this.cMBC5) {
+    this.numRAMBanks = 16;
+  }
+  else if (this.cSRAM) {
+    this.numRAMBanks = 1;
+  }
+  if (this.numRAMBanks > 0) {
+    if (!this.MBCRAMUtilized()) {
+      //For ROM and unknown MBC cartridges using the external RAM:
+      this.MBCRAMBanksEnabled = true;
+    }
+    //Switched RAM Used
+    var MBCRam = (typeof this.openMBC == "function") ? this.openMBC(this.name) : [];
+    if (MBCRam.length > 0) {
+      //Flash the SRAM into memory:
+      this.MBCRam = this.toTypedArray(MBCRam, "uint8");
+    }
+    else {
+      this.MBCRam = this.getTypedArray(this.numRAMBanks * 0x2000, 0, "uint8");
+    }
+  }
+  cout("Actual bytes of MBC RAM allocated: " + (this.numRAMBanks * 0x2000), 0);
+  this.returnFromRTCState();
+  //Setup the RAM for GBC mode.
+  if (this.cGBC) {
+    this.VRAM = this.getTypedArray(0x2000, 0, "uint8");
+    this.GBCMemory = this.getTypedArray(0x7000, 0, "uint8");
+  }
+  this.memoryReadJumpCompile();
+  this.memoryWriteJumpCompile();
+}
+GameBoyCore.prototype.MBCRAMUtilized = function () {
+  return this.cMBC1 || this.cMBC2 || this.cMBC3 || this.cMBC5 || this.cMBC7 || this.cRUMBLE;
+}
+GameBoyCore.prototype.recomputeDimension = function () {
+  initNewCanvas();
+  //Cache some dimension info:
+  this.onscreenWidth = this.canvas.width;
+  this.onscreenHeight = this.canvas.height;
+  // The following line was modified for benchmarking:
+  if (GameBoyWindow && GameBoyWindow.mozRequestAnimationFrame) {
+    //Firefox slowness hack:
+    this.canvas.width = this.onscreenWidth = (!settings[12]) ? 160 : this.canvas.width;
+    this.canvas.height = this.onscreenHeight = (!settings[12]) ? 144 : this.canvas.height;
+  }
+  else {
+    this.onscreenWidth = this.canvas.width;
+    this.onscreenHeight = this.canvas.height;
+  }
+  this.offscreenWidth = (!settings[12]) ? 160 : this.canvas.width;
+  this.offscreenHeight = (!settings[12]) ? 144 : this.canvas.height;
+  this.offscreenRGBCount = this.offscreenWidth * this.offscreenHeight * 4;
+}
+GameBoyCore.prototype.initLCD = function () {
+  this.recomputeDimension();
+  if (this.offscreenRGBCount != 92160) {
+    //Only create the resizer handle if we need it:
+    this.compileResizeFrameBufferFunction();
+  }
+  else {
+    //Resizer not needed:
+    this.resizer = null;
+  }
+  try {
+    this.canvasOffscreen = new GameBoyCanvas();  // Line modified for benchmarking.
+    this.canvasOffscreen.width = this.offscreenWidth;
+    this.canvasOffscreen.height = this.offscreenHeight;
+    this.drawContextOffscreen = this.canvasOffscreen.getContext("2d");
+    this.drawContextOnscreen = this.canvas.getContext("2d");
+    //Get a CanvasPixelArray buffer:
+    try {
+      this.canvasBuffer = this.drawContextOffscreen.createImageData(this.offscreenWidth, this.offscreenHeight);
+    }
+    catch (error) {
+      cout("Falling back to the getImageData initialization (Error \"" + error.message + "\").", 1);
+      this.canvasBuffer = this.drawContextOffscreen.getImageData(0, 0, this.offscreenWidth, this.offscreenHeight);
+    }
+    var index = this.offscreenRGBCount;
+    while (index > 0) {
+      this.canvasBuffer.data[index -= 4] = 0xF8;
+      this.canvasBuffer.data[index + 1] = 0xF8;
+      this.canvasBuffer.data[index + 2] = 0xF8;
+      this.canvasBuffer.data[index + 3] = 0xFF;
+    }
+    this.graphicsBlit();
+    this.canvas.style.visibility = "visible";
+    if (this.swizzledFrame == null) {
+      this.swizzledFrame = this.getTypedArray(69120, 0xFF, "uint8");
+    }
+    //Test the draw system and browser vblank latching:
+    this.drewFrame = true;                    //Copy the latest graphics to buffer.
+    this.requestDraw();
+  }
+  catch (error) {
+    throw(new Error("HTML5 Canvas support required: " + error.message + "file: " + error.fileName + ", line: " + error.lineNumber));
+  }
+}
+GameBoyCore.prototype.graphicsBlit = function () {
+  if (this.offscreenWidth == this.onscreenWidth && this.offscreenHeight == this.onscreenHeight) {
+    this.drawContextOnscreen.putImageData(this.canvasBuffer, 0, 0);
+  }
+  else {
+    this.drawContextOffscreen.putImageData(this.canvasBuffer, 0, 0);
+    this.drawContextOnscreen.drawImage(this.canvasOffscreen, 0, 0, this.onscreenWidth, this.onscreenHeight);
+  }
+}
+GameBoyCore.prototype.JoyPadEvent = function (key, down) {
+  if (down) {
+    this.JoyPad &= 0xFF ^ (1 << key);
+    if (!this.cGBC && (!this.usedBootROM || !this.usedGBCBootROM)) {
+      this.interruptsRequested |= 0x10;  //A real GBC doesn't set this!
+      this.remainingClocks = 0;
+      this.checkIRQMatching();
+    }
+  }
+  else {
+    this.JoyPad |= (1 << key);
+  }
+  this.memory[0xFF00] = (this.memory[0xFF00] & 0x30) + ((((this.memory[0xFF00] & 0x20) == 0) ? (this.JoyPad >> 4) : 0xF) & (((this.memory[0xFF00] & 0x10) == 0) ? (this.JoyPad & 0xF) : 0xF));
+  this.CPUStopped = false;
+}
+GameBoyCore.prototype.GyroEvent = function (x, y) {
+  x *= -100;
+  x += 2047;
+  this.highX = x >> 8;
+  this.lowX = x & 0xFF;
+  y *= -100;
+  y += 2047;
+  this.highY = y >> 8;
+  this.lowY = y & 0xFF;
+}
+GameBoyCore.prototype.initSound = function () {
+  this.sampleSize = 0x400000 / 1000 * settings[6];
+  this.machineOut = settings[13];
+  if (settings[0]) {
+    try {
+      var parentObj = this;
+      this.audioHandle = new XAudioServer(2, 0x400000 / settings[13], 0, Math.max(this.sampleSize * settings[8] / settings[13], 8192) << 1, null, settings[14]);
+      this.initAudioBuffer();
+    }
+    catch (error) {
+      cout("Audio system cannot run: " + error.message, 2);
+      settings[0] = false;
+    }
+  }
+  else if (this.audioHandle) {
+    //Mute the audio output, as it has an immediate silencing effect:
+    try {
+      this.audioHandle.changeVolume(0);
+    }
+    catch (error) { }
+  }
+}
+GameBoyCore.prototype.changeVolume = function () {
+  if (settings[0] && this.audioHandle) {
+    try {
+      this.audioHandle.changeVolume(settings[14]);
+    }
+    catch (error) { }
+  }
+}
+GameBoyCore.prototype.initAudioBuffer = function () {
+  this.audioIndex = 0;
+  this.bufferContainAmount = Math.max(this.sampleSize * settings[7] / settings[13], 4096) << 1;
+  this.numSamplesTotal = (this.sampleSize - (this.sampleSize % settings[13])) | 0;
+  this.currentBuffer = this.getTypedArray(this.numSamplesTotal, 0xF0F0, "int32");
+  this.secondaryBuffer = this.getTypedArray((this.numSamplesTotal << 1) / settings[13], 0, "float32");
+}
+GameBoyCore.prototype.intializeWhiteNoise = function () {
+  //Noise Sample Tables:
+  var randomFactor = 1;
+  //15-bit LSFR Cache Generation:
+  this.LSFR15Table = this.getTypedArray(0x80000, 0, "int8");
+  var LSFR = 0x7FFF;  //Seed value has all its bits set.
+  var LSFRShifted = 0x3FFF;
+  for (var index = 0; index < 0x8000; ++index) {
+    //Normalize the last LSFR value for usage:
+    randomFactor = 1 - (LSFR & 1);  //Docs say it's the inverse.
+    //Cache the different volume level results:
+    this.LSFR15Table[0x08000 | index] = randomFactor;
+    this.LSFR15Table[0x10000 | index] = randomFactor * 0x2;
+    this.LSFR15Table[0x18000 | index] = randomFactor * 0x3;
+    this.LSFR15Table[0x20000 | index] = randomFactor * 0x4;
+    this.LSFR15Table[0x28000 | index] = randomFactor * 0x5;
+    this.LSFR15Table[0x30000 | index] = randomFactor * 0x6;
+    this.LSFR15Table[0x38000 | index] = randomFactor * 0x7;
+    this.LSFR15Table[0x40000 | index] = randomFactor * 0x8;
+    this.LSFR15Table[0x48000 | index] = randomFactor * 0x9;
+    this.LSFR15Table[0x50000 | index] = randomFactor * 0xA;
+    this.LSFR15Table[0x58000 | index] = randomFactor * 0xB;
+    this.LSFR15Table[0x60000 | index] = randomFactor * 0xC;
+    this.LSFR15Table[0x68000 | index] = randomFactor * 0xD;
+    this.LSFR15Table[0x70000 | index] = randomFactor * 0xE;
+    this.LSFR15Table[0x78000 | index] = randomFactor * 0xF;
+    //Recompute the LSFR algorithm:
+    LSFRShifted = LSFR >> 1;
+    LSFR = LSFRShifted | (((LSFRShifted ^ LSFR) & 0x1) << 14);
+  }
+  //7-bit LSFR Cache Generation:
+  this.LSFR7Table = this.getTypedArray(0x800, 0, "int8");
+  LSFR = 0x7F;  //Seed value has all its bits set.
+  for (index = 0; index < 0x80; ++index) {
+    //Normalize the last LSFR value for usage:
+    randomFactor = 1 - (LSFR & 1);  //Docs say it's the inverse.
+    //Cache the different volume level results:
+    this.LSFR7Table[0x080 | index] = randomFactor;
+    this.LSFR7Table[0x100 | index] = randomFactor * 0x2;
+    this.LSFR7Table[0x180 | index] = randomFactor * 0x3;
+    this.LSFR7Table[0x200 | index] = randomFactor * 0x4;
+    this.LSFR7Table[0x280 | index] = randomFactor * 0x5;
+    this.LSFR7Table[0x300 | index] = randomFactor * 0x6;
+    this.LSFR7Table[0x380 | index] = randomFactor * 0x7;
+    this.LSFR7Table[0x400 | index] = randomFactor * 0x8;
+    this.LSFR7Table[0x480 | index] = randomFactor * 0x9;
+    this.LSFR7Table[0x500 | index] = randomFactor * 0xA;
+    this.LSFR7Table[0x580 | index] = randomFactor * 0xB;
+    this.LSFR7Table[0x600 | index] = randomFactor * 0xC;
+    this.LSFR7Table[0x680 | index] = randomFactor * 0xD;
+    this.LSFR7Table[0x700 | index] = randomFactor * 0xE;
+    this.LSFR7Table[0x780 | index] = randomFactor * 0xF;
+    //Recompute the LSFR algorithm:
+    LSFRShifted = LSFR >> 1;
+    LSFR = LSFRShifted | (((LSFRShifted ^ LSFR) & 0x1) << 6);
+  }
+  if (!this.noiseSampleTable && this.memory.length == 0x10000) {
+    //If enabling audio for the first time after a game is already running, set up the internal table reference:
+    this.noiseSampleTable = ((this.memory[0xFF22] & 0x8) == 0x8) ? this.LSFR7Table : this.LSFR15Table;
+  }
+}
+GameBoyCore.prototype.audioUnderrunAdjustment = function () {
+  if (settings[0]) {
+    var underrunAmount = this.bufferContainAmount - this.audioHandle.remainingBuffer();
+    if (underrunAmount > 0) {
+      this.CPUCyclesTotalCurrent += (underrunAmount >> 1) * this.machineOut;
+      this.recalculateIterationClockLimit();
+    }
+  }
+}
+GameBoyCore.prototype.initializeAudioStartState = function () {
+  this.channel1FrequencyTracker = 0x2000;
+  this.channel1DutyTracker = 0;
+  this.channel1CachedDuty = this.dutyLookup[2];
+  this.channel1totalLength = 0;
+  this.channel1envelopeVolume = 0;
+  this.channel1envelopeType = false;
+  this.channel1envelopeSweeps = 0;
+  this.channel1envelopeSweepsLast = 0;
+  this.channel1consecutive = true;
+  this.channel1frequency = 0;
+  this.channel1SweepFault = false;
+  this.channel1ShadowFrequency = 0;
+  this.channel1timeSweep = 1;
+  this.channel1lastTimeSweep = 0;
+  this.channel1numSweep = 0;
+  this.channel1frequencySweepDivider = 0;
+  this.channel1decreaseSweep = false;
+  this.channel2FrequencyTracker = 0x2000;
+  this.channel2DutyTracker = 0;
+  this.channel2CachedDuty = this.dutyLookup[2];
+  this.channel2totalLength = 0;
+  this.channel2envelopeVolume = 0;
+  this.channel2envelopeType = false;
+  this.channel2envelopeSweeps = 0;
+  this.channel2envelopeSweepsLast = 0;
+  this.channel2consecutive = true;
+  this.channel2frequency = 0;
+  this.channel3canPlay = false;
+  this.channel3totalLength = 0;
+  this.channel3patternType = 4;
+  this.channel3frequency = 0;
+  this.channel3consecutive = true;
+  this.channel3Counter = 0x800;
+  this.channel4FrequencyPeriod = 8;
+  this.channel4totalLength = 0;
+  this.channel4envelopeVolume = 0;
+  this.channel4currentVolume = 0;
+  this.channel4envelopeType = false;
+  this.channel4envelopeSweeps = 0;
+  this.channel4envelopeSweepsLast = 0;
+  this.channel4consecutive = true;
+  this.channel4BitRange = 0x7FFF;
+  this.noiseSampleTable = this.LSFR15Table;
+  this.channel4VolumeShifter = 15;
+  this.channel1FrequencyCounter = 0x2000;
+  this.channel2FrequencyCounter = 0x2000;
+  this.channel3Counter = 0x800;
+  this.channel3FrequencyPeriod = 0x800;
+  this.channel3lastSampleLookup = 0;
+  this.channel4lastSampleLookup = 0;
+  this.VinLeftChannelMasterVolume = 8;
+  this.VinRightChannelMasterVolume = 8;
+  this.mixerOutputCache = 0;
+  this.sequencerClocks = 0x2000;
+  this.sequencePosition = 0;
+  this.channel4FrequencyPeriod = 8;
+  this.channel4Counter = 8;
+  this.cachedChannel3Sample = 0;
+  this.cachedChannel4Sample = 0;
+  this.channel1Enabled = false;
+  this.channel2Enabled = false;
+  this.channel3Enabled = false;
+  this.channel4Enabled = false;
+  this.channel1canPlay = false;
+  this.channel2canPlay = false;
+  this.channel4canPlay = false;
+  this.channel1OutputLevelCache();
+  this.channel2OutputLevelCache();
+  this.channel3OutputLevelCache();
+  this.channel4OutputLevelCache();
+}
+GameBoyCore.prototype.outputAudio = function () {
+  var sampleFactor = 0;
+  var dirtySample = 0;
+  var averageL = 0;
+  var averageR = 0;
+  var destinationPosition = 0;
+  var divisor1 = settings[13];
+  var divisor2 = divisor1 * 0xF0;
+  for (var sourcePosition = 0; sourcePosition < this.numSamplesTotal;) {
+    for (sampleFactor = averageL = averageR = 0; sampleFactor < divisor1; ++sampleFactor) {
+      dirtySample = this.currentBuffer[sourcePosition++];
+      averageL += dirtySample >> 9;
+      averageR += dirtySample & 0x1FF;
+    }
+    this.secondaryBuffer[destinationPosition++] = averageL / divisor2 - 1;
+    this.secondaryBuffer[destinationPosition++] = averageR / divisor2 - 1;
+  }
+  this.audioHandle.writeAudioNoCallback(this.secondaryBuffer);
+}
+//Below are the audio generation functions timed against the CPU:
+GameBoyCore.prototype.generateAudio = function (numSamples) {
+  if (this.soundMasterEnabled && !this.CPUStopped) {
+    for (var samplesToGenerate = 0; numSamples > 0;) {
+      samplesToGenerate = (numSamples < this.sequencerClocks) ? numSamples : this.sequencerClocks;
+      this.sequencerClocks -= samplesToGenerate;
+      numSamples -= samplesToGenerate;
+      while (--samplesToGenerate > -1) {
+        this.computeAudioChannels();
+        this.currentBuffer[this.audioIndex++] = this.mixerOutputCache;
+        if (this.audioIndex == this.numSamplesTotal) {
+          this.audioIndex = 0;
+          this.outputAudio();
+        }
+      }
+      if (this.sequencerClocks == 0) {
+        this.audioComputeSequencer();
+        this.sequencerClocks = 0x2000;
+      }
+    }
+  }
+  else {
+    //SILENT OUTPUT:
+    while (--numSamples > -1) {
+      this.currentBuffer[this.audioIndex++] = 0xF0F0;
+      if (this.audioIndex == this.numSamplesTotal) {
+        this.audioIndex = 0;
+        this.outputAudio();
+      }
+    }
+  }
+}
+//Generate audio, but don't actually output it (Used for when sound is disabled by user/browser):
+GameBoyCore.prototype.generateAudioFake = function (numSamples) {
+  if (this.soundMasterEnabled && !this.CPUStopped) {
+    while (--numSamples > -1) {
+      this.computeAudioChannels();
+      if (--this.sequencerClocks == 0) {
+        this.audioComputeSequencer();
+        this.sequencerClocks = 0x2000;
+      }
+    }
+  }
+}
+GameBoyCore.prototype.audioJIT = function () {
+  //Audio Sample Generation Timing:
+  if (settings[0]) {
+    this.generateAudio(this.audioTicks);
+  }
+  else {
+    this.generateAudioFake(this.audioTicks);
+  }
+  this.audioTicks = 0;
+}
+GameBoyCore.prototype.audioComputeSequencer = function () {
+  switch (this.sequencePosition++) {
+    case 0:
+      this.clockAudioLength();
+      break;
+    case 2:
+      this.clockAudioLength();
+      this.clockAudioSweep();
+      break;
+    case 4:
+      this.clockAudioLength();
+      break;
+    case 6:
+      this.clockAudioLength();
+      this.clockAudioSweep();
+      break;
+    case 7:
+      this.clockAudioEnvelope();
+      this.sequencePosition = 0;
+  }
+}
+GameBoyCore.prototype.clockAudioLength = function () {
+  //Channel 1:
+  if (this.channel1totalLength > 1) {
+    --this.channel1totalLength;
+  }
+  else if (this.channel1totalLength == 1) {
+    this.channel1totalLength = 0;
+    this.channel1EnableCheck();
+    this.memory[0xFF26] &= 0xFE;  //Channel #1 On Flag Off
+  }
+  //Channel 2:
+  if (this.channel2totalLength > 1) {
+    --this.channel2totalLength;
+  }
+  else if (this.channel2totalLength == 1) {
+    this.channel2totalLength = 0;
+    this.channel2EnableCheck();
+    this.memory[0xFF26] &= 0xFD;  //Channel #2 On Flag Off
+  }
+  //Channel 3:
+  if (this.channel3totalLength > 1) {
+    --this.channel3totalLength;
+  }
+  else if (this.channel3totalLength == 1) {
+    this.channel3totalLength = 0;
+    this.channel3EnableCheck();
+    this.memory[0xFF26] &= 0xFB;  //Channel #3 On Flag Off
+  }
+  //Channel 4:
+  if (this.channel4totalLength > 1) {
+    --this.channel4totalLength;
+  }
+  else if (this.channel4totalLength == 1) {
+    this.channel4totalLength = 0;
+    this.channel4EnableCheck();
+    this.memory[0xFF26] &= 0xF7;  //Channel #4 On Flag Off
+  }
+}
+GameBoyCore.prototype.clockAudioSweep = function () {
+  //Channel 1:
+  if (!this.channel1SweepFault && this.channel1timeSweep > 0) {
+    if (--this.channel1timeSweep == 0) {
+      this.runAudioSweep();
+    }
+  }
+}
+GameBoyCore.prototype.runAudioSweep = function () {
+  //Channel 1:
+  if (this.channel1lastTimeSweep > 0) {
+    if (this.channel1frequencySweepDivider > 0) {
+      if (this.channel1numSweep > 0) {
+        --this.channel1numSweep;
+        if (this.channel1decreaseSweep) {
+          this.channel1ShadowFrequency -= this.channel1ShadowFrequency >> this.channel1frequencySweepDivider;
+          this.channel1frequency = this.channel1ShadowFrequency & 0x7FF;
+          this.channel1FrequencyTracker = (0x800 - this.channel1frequency) << 2;
+        }
+        else {
+          this.channel1ShadowFrequency += this.channel1ShadowFrequency >> this.channel1frequencySweepDivider;
+          this.channel1frequency = this.channel1ShadowFrequency;
+          if (this.channel1ShadowFrequency <= 0x7FF) {
+            this.channel1FrequencyTracker = (0x800 - this.channel1frequency) << 2;
+            //Run overflow check twice:
+            if ((this.channel1ShadowFrequency + (this.channel1ShadowFrequency >> this.channel1frequencySweepDivider)) > 0x7FF) {
+              this.channel1SweepFault = true;
+              this.channel1EnableCheck();
+              this.memory[0xFF26] &= 0xFE;  //Channel #1 On Flag Off
+            }
+          }
+          else {
+            this.channel1frequency &= 0x7FF;
+            this.channel1SweepFault = true;
+            this.channel1EnableCheck();
+            this.memory[0xFF26] &= 0xFE;  //Channel #1 On Flag Off
+          }
+        }
+      }
+      this.channel1timeSweep = this.channel1lastTimeSweep;
+    }
+    else {
+      //Channel has sweep disabled and timer becomes a length counter:
+      this.channel1SweepFault = true;
+      this.channel1EnableCheck();
+    }
+  }
+}
+GameBoyCore.prototype.clockAudioEnvelope = function () {
+  //Channel 1:
+  if (this.channel1envelopeSweepsLast > -1) {
+    if (this.channel1envelopeSweeps > 0) {
+      --this.channel1envelopeSweeps;
+    }
+    else {
+      if (!this.channel1envelopeType) {
+        if (this.channel1envelopeVolume > 0) {
+          --this.channel1envelopeVolume;
+          this.channel1envelopeSweeps = this.channel1envelopeSweepsLast;
+          this.channel1OutputLevelCache();
+        }
+        else {
+          this.channel1envelopeSweepsLast = -1;
+        }
+      }
+      else if (this.channel1envelopeVolume < 0xF) {
+        ++this.channel1envelopeVolume;
+        this.channel1envelopeSweeps = this.channel1envelopeSweepsLast;
+        this.channel1OutputLevelCache();
+      }
+      else {
+        this.channel1envelopeSweepsLast = -1;
+      }
+    }
+  }
+  //Channel 2:
+  if (this.channel2envelopeSweepsLast > -1) {
+    if (this.channel2envelopeSweeps > 0) {
+      --this.channel2envelopeSweeps;
+    }
+    else {
+      if (!this.channel2envelopeType) {
+        if (this.channel2envelopeVolume > 0) {
+          --this.channel2envelopeVolume;
+          this.channel2envelopeSweeps = this.channel2envelopeSweepsLast;
+          this.channel2OutputLevelCache();
+        }
+        else {
+          this.channel2envelopeSweepsLast = -1;
+        }
+      }
+      else if (this.channel2envelopeVolume < 0xF) {
+        ++this.channel2envelopeVolume;
+        this.channel2envelopeSweeps = this.channel2envelopeSweepsLast;
+        this.channel2OutputLevelCache();
+      }
+      else {
+        this.channel2envelopeSweepsLast = -1;
+      }
+    }
+  }
+  //Channel 4:
+  if (this.channel4envelopeSweepsLast > -1) {
+    if (this.channel4envelopeSweeps > 0) {
+      --this.channel4envelopeSweeps;
+    }
+    else {
+      if (!this.channel4envelopeType) {
+        if (this.channel4envelopeVolume > 0) {
+          this.channel4currentVolume = --this.channel4envelopeVolume << this.channel4VolumeShifter;
+          this.channel4envelopeSweeps = this.channel4envelopeSweepsLast;
+          this.channel4UpdateCache();
+        }
+        else {
+          this.channel4envelopeSweepsLast = -1;
+        }
+      }
+      else if (this.channel4envelopeVolume < 0xF) {
+        this.channel4currentVolume = ++this.channel4envelopeVolume << this.channel4VolumeShifter;
+        this.channel4envelopeSweeps = this.channel4envelopeSweepsLast;
+        this.channel4UpdateCache();
+      }
+      else {
+        this.channel4envelopeSweepsLast = -1;
+      }
+    }
+  }
+}
+GameBoyCore.prototype.computeAudioChannels = function () {
+  //Channel 1 counter:
+  if (--this.channel1FrequencyCounter == 0) {
+    this.channel1FrequencyCounter = this.channel1FrequencyTracker;
+    this.channel1DutyTracker = (this.channel1DutyTracker + 1) & 0x7;
+    this.channel1OutputLevelTrimaryCache();
+  }
+  //Channel 2 counter:
+  if (--this.channel2FrequencyCounter == 0) {
+    this.channel2FrequencyCounter = this.channel2FrequencyTracker;
+    this.channel2DutyTracker = (this.channel2DutyTracker + 1) & 0x7;
+    this.channel2OutputLevelTrimaryCache();
+  }
+  //Channel 3 counter:
+  if (--this.channel3Counter == 0) {
+    if (this.channel3canPlay) {
+      this.channel3lastSampleLookup = (this.channel3lastSampleLookup + 1) & 0x1F;
+    }
+    this.channel3Counter = this.channel3FrequencyPeriod;
+    this.channel3UpdateCache();
+  }
+  //Channel 4 counter:
+  if (--this.channel4Counter == 0) {
+    this.channel4lastSampleLookup = (this.channel4lastSampleLookup + 1) & this.channel4BitRange;
+    this.channel4Counter = this.channel4FrequencyPeriod;
+    this.channel4UpdateCache();
+  }
+}
+GameBoyCore.prototype.channel1EnableCheck = function () {
+  this.channel1Enabled = ((this.channel1consecutive || this.channel1totalLength > 0) && !this.channel1SweepFault && this.channel1canPlay);
+  this.channel1OutputLevelSecondaryCache();
+}
+GameBoyCore.prototype.channel1VolumeEnableCheck = function () {
+  this.channel1canPlay = (this.memory[0xFF12] > 7);
+  this.channel1EnableCheck();
+  this.channel1OutputLevelSecondaryCache();
+}
+GameBoyCore.prototype.channel1OutputLevelCache = function () {
+  this.channel1currentSampleLeft = (this.leftChannel1) ? this.channel1envelopeVolume : 0;
+  this.channel1currentSampleRight = (this.rightChannel1) ? this.channel1envelopeVolume : 0;
+  this.channel1OutputLevelSecondaryCache();
+}
+GameBoyCore.prototype.channel1OutputLevelSecondaryCache = function () {
+  if (this.channel1Enabled) {
+    this.channel1currentSampleLeftSecondary = this.channel1currentSampleLeft;
+    this.channel1currentSampleRightSecondary = this.channel1currentSampleRight;
+  }
+  else {
+    this.channel1currentSampleLeftSecondary = 0;
+    this.channel1currentSampleRightSecondary = 0;
+  }
+  this.channel1OutputLevelTrimaryCache();
+}
+GameBoyCore.prototype.channel1OutputLevelTrimaryCache = function () {
+  if (this.channel1CachedDuty[this.channel1DutyTracker]) {
+    this.channel1currentSampleLeftTrimary = this.channel1currentSampleLeftSecondary;
+    this.channel1currentSampleRightTrimary = this.channel1currentSampleRightSecondary;
+  }
+  else {
+    this.channel1currentSampleLeftTrimary = 0;
+    this.channel1currentSampleRightTrimary = 0;
+  }
+  this.mixerOutputLevelCache();
+}
+GameBoyCore.prototype.channel2EnableCheck = function () {
+  this.channel2Enabled = ((this.channel2consecutive || this.channel2totalLength > 0) && this.channel2canPlay);
+  this.channel2OutputLevelSecondaryCache();
+}
+GameBoyCore.prototype.channel2VolumeEnableCheck = function () {
+  this.channel2canPlay = (this.memory[0xFF17] > 7);
+  this.channel2EnableCheck();
+  this.channel2OutputLevelSecondaryCache();
+}
+GameBoyCore.prototype.channel2OutputLevelCache = function () {
+  this.channel2currentSampleLeft = (this.leftChannel2) ? this.channel2envelopeVolume : 0;
+  this.channel2currentSampleRight = (this.rightChannel2) ? this.channel2envelopeVolume : 0;
+  this.channel2OutputLevelSecondaryCache();
+}
+GameBoyCore.prototype.channel2OutputLevelSecondaryCache = function () {
+  if (this.channel2Enabled) {
+    this.channel2currentSampleLeftSecondary = this.channel2currentSampleLeft;
+    this.channel2currentSampleRightSecondary = this.channel2currentSampleRight;
+  }
+  else {
+    this.channel2currentSampleLeftSecondary = 0;
+    this.channel2currentSampleRightSecondary = 0;
+  }
+  this.channel2OutputLevelTrimaryCache();
+}
+GameBoyCore.prototype.channel2OutputLevelTrimaryCache = function () {
+  if (this.channel2CachedDuty[this.channel2DutyTracker]) {
+    this.channel2currentSampleLeftTrimary = this.channel2currentSampleLeftSecondary;
+    this.channel2currentSampleRightTrimary = this.channel2currentSampleRightSecondary;
+  }
+  else {
+    this.channel2currentSampleLeftTrimary = 0;
+    this.channel2currentSampleRightTrimary = 0;
+  }
+  this.mixerOutputLevelCache();
+}
+GameBoyCore.prototype.channel3EnableCheck = function () {
+  this.channel3Enabled = (/*this.channel3canPlay && */(this.channel3consecutive || this.channel3totalLength > 0));
+  this.channel3OutputLevelSecondaryCache();
+}
+GameBoyCore.prototype.channel3OutputLevelCache = function () {
+  this.channel3currentSampleLeft = (this.leftChannel3) ? this.cachedChannel3Sample : 0;
+  this.channel3currentSampleRight = (this.rightChannel3) ? this.cachedChannel3Sample : 0;
+  this.channel3OutputLevelSecondaryCache();
+}
+GameBoyCore.prototype.channel3OutputLevelSecondaryCache = function () {
+  if (this.channel3Enabled) {
+    this.channel3currentSampleLeftSecondary = this.channel3currentSampleLeft;
+    this.channel3currentSampleRightSecondary = this.channel3currentSampleRight;
+  }
+  else {
+    this.channel3currentSampleLeftSecondary = 0;
+    this.channel3currentSampleRightSecondary = 0;
+  }
+  this.mixerOutputLevelCache();
+}
+GameBoyCore.prototype.channel4EnableCheck = function () {
+  this.channel4Enabled = ((this.channel4consecutive || this.channel4totalLength > 0) && this.channel4canPlay);
+  this.channel4OutputLevelSecondaryCache();
+}
+GameBoyCore.prototype.channel4VolumeEnableCheck = function () {
+  this.channel4canPlay = (this.memory[0xFF21] > 7);
+  this.channel4EnableCheck();
+  this.channel4OutputLevelSecondaryCache();
+}
+GameBoyCore.prototype.channel4OutputLevelCache = function () {
+  this.channel4currentSampleLeft = (this.leftChannel4) ? this.cachedChannel4Sample : 0;
+  this.channel4currentSampleRight = (this.rightChannel4) ? this.cachedChannel4Sample : 0;
+  this.channel4OutputLevelSecondaryCache();
+}
+GameBoyCore.prototype.channel4OutputLevelSecondaryCache = function () {
+  if (this.channel4Enabled) {
+    this.channel4currentSampleLeftSecondary = this.channel4currentSampleLeft;
+    this.channel4currentSampleRightSecondary = this.channel4currentSampleRight;
+  }
+  else {
+    this.channel4currentSampleLeftSecondary = 0;
+    this.channel4currentSampleRightSecondary = 0;
+  }
+  this.mixerOutputLevelCache();
+}
+GameBoyCore.prototype.mixerOutputLevelCache = function () {
+  this.mixerOutputCache = ((((this.channel1currentSampleLeftTrimary + this.channel2currentSampleLeftTrimary + this.channel3currentSampleLeftSecondary + this.channel4currentSampleLeftSecondary) * this.VinLeftChannelMasterVolume) << 9) +
+  ((this.channel1currentSampleRightTrimary + this.channel2currentSampleRightTrimary + this.channel3currentSampleRightSecondary + this.channel4currentSampleRightSecondary) * this.VinRightChannelMasterVolume));
+}
+GameBoyCore.prototype.channel3UpdateCache = function () {
+  this.cachedChannel3Sample = this.channel3PCM[this.channel3lastSampleLookup] >> this.channel3patternType;
+  this.channel3OutputLevelCache();
+}
+GameBoyCore.prototype.channel3WriteRAM = function (address, data) {
+  if (this.channel3canPlay) {
+    this.audioJIT();
+    //address = this.channel3lastSampleLookup >> 1;
+  }
+  this.memory[0xFF30 | address] = data;
+  address <<= 1;
+  this.channel3PCM[address] = data >> 4;
+  this.channel3PCM[address | 1] = data & 0xF;
+}
+GameBoyCore.prototype.channel4UpdateCache = function () {
+  this.cachedChannel4Sample = this.noiseSampleTable[this.channel4currentVolume | this.channel4lastSampleLookup];
+  this.channel4OutputLevelCache();
+}
+GameBoyCore.prototype.run = function () {
+  //The preprocessing before the actual iteration loop:
+  if ((this.stopEmulator & 2) == 0) {
+    if ((this.stopEmulator & 1) == 1) {
+      if (!this.CPUStopped) {
+        this.stopEmulator = 0;
+        this.drewFrame = false;
+        this.audioUnderrunAdjustment();
+        this.clockUpdate();      //RTC clocking.
+        if (!this.halt) {
+          this.executeIteration();
+        }
+        else {            //Finish the HALT rundown execution.
+          this.CPUTicks = 0;
+          this.calculateHALTPeriod();
+          if (this.halt) {
+            this.updateCoreFull();
+          }
+          else {
+            this.executeIteration();
+          }
+        }
+        //Request the graphics target to be updated:
+        this.requestDraw();
+      }
+      else {
+        this.audioUnderrunAdjustment();
+        this.audioTicks += this.CPUCyclesTotal;
+        this.audioJIT();
+        this.stopEmulator |= 1;      //End current loop.
+      }
+    }
+    else {    //We can only get here if there was an internal error, but the loop was restarted.
+      cout("Iterator restarted a faulted core.", 2);
+      pause();
+    }
+  }
+}
+
+GameBoyCore.prototype.executeIteration = function () {
+  //Iterate the interpreter loop:
+  var opcodeToExecute = 0;
+  var timedTicks = 0;
+  while (this.stopEmulator == 0) {
+    //Interrupt Arming:
+    switch (this.IRQEnableDelay) {
+      case 1:
+        this.IME = true;
+        this.checkIRQMatching();
+      case 2:
+        --this.IRQEnableDelay;
+    }
+    //Is an IRQ set to fire?:
+    if (this.IRQLineMatched > 0) {
+      //IME is true and and interrupt was matched:
+      this.launchIRQ();
+    }
+    //Fetch the current opcode:
+    opcodeToExecute = this.memoryReader[this.programCounter](this, this.programCounter);
+    //Increment the program counter to the next instruction:
+    this.programCounter = (this.programCounter + 1) & 0xFFFF;
+    //Check for the program counter quirk:
+    if (this.skipPCIncrement) {
+      this.programCounter = (this.programCounter - 1) & 0xFFFF;
+      this.skipPCIncrement = false;
+    }
+    //Get how many CPU cycles the current instruction counts for:
+    this.CPUTicks = this.TICKTable[opcodeToExecute];
+    //Execute the current instruction:
+    this.OPCODE[opcodeToExecute](this);
+    //Update the state (Inlined updateCoreFull manually here):
+    //Update the clocking for the LCD emulation:
+    this.LCDTicks += this.CPUTicks >> this.doubleSpeedShifter;  //LCD Timing
+    this.LCDCONTROL[this.actualScanLine](this);          //Scan Line and STAT Mode Control
+    //Single-speed relative timing for A/V emulation:
+    timedTicks = this.CPUTicks >> this.doubleSpeedShifter;    //CPU clocking can be updated from the LCD handling.
+    this.audioTicks += timedTicks;                //Audio Timing
+    this.emulatorTicks += timedTicks;              //Emulator Timing
+    //CPU Timers:
+    this.DIVTicks += this.CPUTicks;                //DIV Timing
+    if (this.TIMAEnabled) {                    //TIMA Timing
+      this.timerTicks += this.CPUTicks;
+      while (this.timerTicks >= this.TACClocker) {
+        this.timerTicks -= this.TACClocker;
+        if (++this.memory[0xFF05] == 0x100) {
+          this.memory[0xFF05] = this.memory[0xFF06];
+          this.interruptsRequested |= 0x4;
+          this.checkIRQMatching();
+        }
+      }
+    }
+    if (this.serialTimer > 0) {                    //Serial Timing
+      //IRQ Counter:
+      this.serialTimer -= this.CPUTicks;
+      if (this.serialTimer <= 0) {
+        this.interruptsRequested |= 0x8;
+        this.checkIRQMatching();
+      }
+      //Bit Shit Counter:
+      this.serialShiftTimer -= this.CPUTicks;
+      if (this.serialShiftTimer <= 0) {
+        this.serialShiftTimer = this.serialShiftTimerAllocated;
+        this.memory[0xFF01] = ((this.memory[0xFF01] << 1) & 0xFE) | 0x01;  //We could shift in actual link data here if we were to implement such!!!
+      }
+    }
+    //End of iteration routine:
+    if (this.emulatorTicks >= this.CPUCyclesTotal) {
+      this.iterationEndRoutine();
+    }
+    // Start of code added for benchmarking:
+    this.instructions += 1;
+    if (this.instructions > this.totalInstructions) {
+      this.iterationEndRoutine();
+      this.stopEmulator |= 2;
+      checkFinalState();
+    }
+    // End of code added for benchmarking.
+  }
+}
+GameBoyCore.prototype.iterationEndRoutine = function () {
+  if ((this.stopEmulator & 0x1) == 0) {
+    this.audioJIT();  //Make sure we at least output once per iteration.
+    //Update DIV Alignment (Integer overflow safety):
+    this.memory[0xFF04] = (this.memory[0xFF04] + (this.DIVTicks >> 8)) & 0xFF;
+    this.DIVTicks &= 0xFF;
+    //Update emulator flags:
+    this.stopEmulator |= 1;      //End current loop.
+    this.emulatorTicks -= this.CPUCyclesTotal;
+    this.CPUCyclesTotalCurrent += this.CPUCyclesTotalRoundoff;
+    this.recalculateIterationClockLimit();
+  }
+}
+GameBoyCore.prototype.handleSTOP = function () {
+  this.CPUStopped = true;            //Stop CPU until joypad input changes.
+  this.iterationEndRoutine();
+  if (this.emulatorTicks < 0) {
+    this.audioTicks -= this.emulatorTicks;
+    this.audioJIT();
+  }
+}
+GameBoyCore.prototype.recalculateIterationClockLimit = function () {
+  var endModulus = this.CPUCyclesTotalCurrent % 4;
+  this.CPUCyclesTotal = this.CPUCyclesTotalBase + this.CPUCyclesTotalCurrent - endModulus;
+  this.CPUCyclesTotalCurrent = endModulus;
+}
+GameBoyCore.prototype.scanLineMode2 = function () {  //OAM Search Period
+  if (this.STATTracker != 1) {
+    if (this.mode2TriggerSTAT) {
+      this.interruptsRequested |= 0x2;
+      this.checkIRQMatching();
+    }
+    this.STATTracker = 1;
+    this.modeSTAT = 2;
+  }
+}
+GameBoyCore.prototype.scanLineMode3 = function () {  //Scan Line Drawing Period
+  if (this.modeSTAT != 3) {
+    if (this.STATTracker == 0 && this.mode2TriggerSTAT) {
+      this.interruptsRequested |= 0x2;
+      this.checkIRQMatching();
+    }
+    this.STATTracker = 1;
+    this.modeSTAT = 3;
+  }
+}
+GameBoyCore.prototype.scanLineMode0 = function () {  //Horizontal Blanking Period
+  if (this.modeSTAT != 0) {
+    if (this.STATTracker != 2) {
+      if (this.STATTracker == 0) {
+        if (this.mode2TriggerSTAT) {
+          this.interruptsRequested |= 0x2;
+          this.checkIRQMatching();
+        }
+        this.modeSTAT = 3;
+      }
+      this.incrementScanLineQueue();
+      this.updateSpriteCount(this.actualScanLine);
+      this.STATTracker = 2;
+    }
+    if (this.LCDTicks >= this.spriteCount) {
+      if (this.hdmaRunning) {
+        this.executeHDMA();
+      }
+      if (this.mode0TriggerSTAT) {
+        this.interruptsRequested |= 0x2;
+        this.checkIRQMatching();
+      }
+      this.STATTracker = 3;
+      this.modeSTAT = 0;
+    }
+  }
+}
+GameBoyCore.prototype.clocksUntilLYCMatch = function () {
+  if (this.memory[0xFF45] != 0) {
+    if (this.memory[0xFF45] > this.actualScanLine) {
+      return 456 * (this.memory[0xFF45] - this.actualScanLine);
+    }
+    return 456 * (154 - this.actualScanLine + this.memory[0xFF45]);
+  }
+  return (456 * ((this.actualScanLine == 153 && this.memory[0xFF44] == 0) ? 154 : (153 - this.actualScanLine))) + 8;
+}
+GameBoyCore.prototype.clocksUntilMode0 = function () {
+  switch (this.modeSTAT) {
+    case 0:
+      if (this.actualScanLine == 143) {
+        this.updateSpriteCount(0);
+        return this.spriteCount + 5016;
+      }
+      this.updateSpriteCount(this.actualScanLine + 1);
+      return this.spriteCount + 456;
+    case 2:
+    case 3:
+      this.updateSpriteCount(this.actualScanLine);
+      return this.spriteCount;
+    case 1:
+      this.updateSpriteCount(0);
+      return this.spriteCount + (456 * (154 - this.actualScanLine));
+  }
+}
+GameBoyCore.prototype.updateSpriteCount = function (line) {
+  this.spriteCount = 252;
+  if (this.cGBC && this.gfxSpriteShow) {                    //Is the window enabled and are we in CGB mode?
+    var lineAdjusted = line + 0x10;
+    var yoffset = 0;
+    var yCap = (this.gfxSpriteNormalHeight) ? 0x8 : 0x10;
+    for (var OAMAddress = 0xFE00; OAMAddress < 0xFEA0 && this.spriteCount < 312; OAMAddress += 4) {
+      yoffset = lineAdjusted - this.memory[OAMAddress];
+      if (yoffset > -1 && yoffset < yCap) {
+        this.spriteCount += 6;
+      }
+    }
+  }
+}
+GameBoyCore.prototype.matchLYC = function () {  //LYC Register Compare
+  if (this.memory[0xFF44] == this.memory[0xFF45]) {
+    this.memory[0xFF41] |= 0x04;
+    if (this.LYCMatchTriggerSTAT) {
+      this.interruptsRequested |= 0x2;
+      this.checkIRQMatching();
+    }
+  }
+  else {
+    this.memory[0xFF41] &= 0x7B;
+  }
+}
+GameBoyCore.prototype.updateCore = function () {
+  //Update the clocking for the LCD emulation:
+  this.LCDTicks += this.CPUTicks >> this.doubleSpeedShifter;  //LCD Timing
+  this.LCDCONTROL[this.actualScanLine](this);          //Scan Line and STAT Mode Control
+  //Single-speed relative timing for A/V emulation:
+  var timedTicks = this.CPUTicks >> this.doubleSpeedShifter;  //CPU clocking can be updated from the LCD handling.
+  this.audioTicks += timedTicks;                //Audio Timing
+  this.emulatorTicks += timedTicks;              //Emulator Timing
+  //CPU Timers:
+  this.DIVTicks += this.CPUTicks;                //DIV Timing
+  if (this.TIMAEnabled) {                    //TIMA Timing
+    this.timerTicks += this.CPUTicks;
+    while (this.timerTicks >= this.TACClocker) {
+      this.timerTicks -= this.TACClocker;
+      if (++this.memory[0xFF05] == 0x100) {
+        this.memory[0xFF05] = this.memory[0xFF06];
+        this.interruptsRequested |= 0x4;
+        this.checkIRQMatching();
+      }
+    }
+  }
+  if (this.serialTimer > 0) {                    //Serial Timing
+    //IRQ Counter:
+    this.serialTimer -= this.CPUTicks;
+    if (this.serialTimer <= 0) {
+      this.interruptsRequested |= 0x8;
+      this.checkIRQMatching();
+    }
+    //Bit Shit Counter:
+    this.serialShiftTimer -= this.CPUTicks;
+    if (this.serialShiftTimer <= 0) {
+      this.serialShiftTimer = this.serialShiftTimerAllocated;
+      this.memory[0xFF01] = ((this.memory[0xFF01] << 1) & 0xFE) | 0x01;  //We could shift in actual link data here if we were to implement such!!!
+    }
+  }
+}
+GameBoyCore.prototype.updateCoreFull = function () {
+  //Update the state machine:
+  this.updateCore();
+  //End of iteration routine:
+  if (this.emulatorTicks >= this.CPUCyclesTotal) {
+    this.iterationEndRoutine();
+  }
+}
+GameBoyCore.prototype.initializeLCDController = function () {
+  //Display on hanlding:
+  var line = 0;
+  while (line < 154) {
+    if (line < 143) {
+      //We're on a normal scan line:
+      this.LINECONTROL[line] = function (parentObj) {
+        if (parentObj.LCDTicks < 80) {
+          parentObj.scanLineMode2();
+        }
+        else if (parentObj.LCDTicks < 252) {
+          parentObj.scanLineMode3();
+        }
+        else if (parentObj.LCDTicks < 456) {
+          parentObj.scanLineMode0();
+        }
+        else {
+          //We're on a new scan line:
+          parentObj.LCDTicks -= 456;
+          if (parentObj.STATTracker != 3) {
+            //Make sure the mode 0 handler was run at least once per scan line:
+            if (parentObj.STATTracker != 2) {
+              if (parentObj.STATTracker == 0 && parentObj.mode2TriggerSTAT) {
+                parentObj.interruptsRequested |= 0x2;
+              }
+              parentObj.incrementScanLineQueue();
+            }
+            if (parentObj.hdmaRunning) {
+              parentObj.executeHDMA();
+            }
+            if (parentObj.mode0TriggerSTAT) {
+              parentObj.interruptsRequested |= 0x2;
+            }
+          }
+          //Update the scanline registers and assert the LYC counter:
+          parentObj.actualScanLine = ++parentObj.memory[0xFF44];
+          //Perform a LYC counter assert:
+          if (parentObj.actualScanLine == parentObj.memory[0xFF45]) {
+            parentObj.memory[0xFF41] |= 0x04;
+            if (parentObj.LYCMatchTriggerSTAT) {
+              parentObj.interruptsRequested |= 0x2;
+            }
+          }
+          else {
+            parentObj.memory[0xFF41] &= 0x7B;
+          }
+          parentObj.checkIRQMatching();
+          //Reset our mode contingency variables:
+          parentObj.STATTracker = 0;
+          parentObj.modeSTAT = 2;
+          parentObj.LINECONTROL[parentObj.actualScanLine](parentObj);  //Scan Line and STAT Mode Control.
+        }
+      }
+    }
+    else if (line == 143) {
+      //We're on the last visible scan line of the LCD screen:
+      this.LINECONTROL[143] = function (parentObj) {
+        if (parentObj.LCDTicks < 80) {
+          parentObj.scanLineMode2();
+        }
+        else if (parentObj.LCDTicks < 252) {
+          parentObj.scanLineMode3();
+        }
+        else if (parentObj.LCDTicks < 456) {
+          parentObj.scanLineMode0();
+        }
+        else {
+          //Starting V-Blank:
+          //Just finished the last visible scan line:
+          parentObj.LCDTicks -= 456;
+          if (parentObj.STATTracker != 3) {
+            //Make sure the mode 0 handler was run at least once per scan line:
+            if (parentObj.STATTracker != 2) {
+              if (parentObj.STATTracker == 0 && parentObj.mode2TriggerSTAT) {
+                parentObj.interruptsRequested |= 0x2;
+              }
+              parentObj.incrementScanLineQueue();
+            }
+            if (parentObj.hdmaRunning) {
+              parentObj.executeHDMA();
+            }
+            if (parentObj.mode0TriggerSTAT) {
+              parentObj.interruptsRequested |= 0x2;
+            }
+          }
+          //Update the scanline registers and assert the LYC counter:
+          parentObj.actualScanLine = parentObj.memory[0xFF44] = 144;
+          //Perform a LYC counter assert:
+          if (parentObj.memory[0xFF45] == 144) {
+            parentObj.memory[0xFF41] |= 0x04;
+            if (parentObj.LYCMatchTriggerSTAT) {
+              parentObj.interruptsRequested |= 0x2;
+            }
+          }
+          else {
+            parentObj.memory[0xFF41] &= 0x7B;
+          }
+          //Reset our mode contingency variables:
+          parentObj.STATTracker = 0;
+          //Update our state for v-blank:
+          parentObj.modeSTAT = 1;
+          parentObj.interruptsRequested |= (parentObj.mode1TriggerSTAT) ? 0x3 : 0x1;
+          parentObj.checkIRQMatching();
+          //Attempt to blit out to our canvas:
+          if (parentObj.drewBlank == 0) {
+            //Ensure JIT framing alignment:
+            if (parentObj.totalLinesPassed < 144 || (parentObj.totalLinesPassed == 144 && parentObj.midScanlineOffset > -1)) {
+              //Make sure our gfx are up-to-date:
+              parentObj.graphicsJITVBlank();
+              //Draw the frame:
+              parentObj.prepareFrame();
+            }
+          }
+          else {
+            //LCD off takes at least 2 frames:
+            --parentObj.drewBlank;
+          }
+          parentObj.LINECONTROL[144](parentObj);  //Scan Line and STAT Mode Control.
+        }
+      }
+    }
+    else if (line < 153) {
+      //In VBlank
+      this.LINECONTROL[line] = function (parentObj) {
+        if (parentObj.LCDTicks >= 456) {
+          //We're on a new scan line:
+          parentObj.LCDTicks -= 456;
+          parentObj.actualScanLine = ++parentObj.memory[0xFF44];
+          //Perform a LYC counter assert:
+          if (parentObj.actualScanLine == parentObj.memory[0xFF45]) {
+            parentObj.memory[0xFF41] |= 0x04;
+            if (parentObj.LYCMatchTriggerSTAT) {
+              parentObj.interruptsRequested |= 0x2;
+              parentObj.checkIRQMatching();
+            }
+          }
+          else {
+            parentObj.memory[0xFF41] &= 0x7B;
+          }
+          parentObj.LINECONTROL[parentObj.actualScanLine](parentObj);  //Scan Line and STAT Mode Control.
+        }
+      }
+    }
+    else {
+      //VBlank Ending (We're on the last actual scan line)
+      this.LINECONTROL[153] = function (parentObj) {
+        if (parentObj.LCDTicks >= 8) {
+          if (parentObj.STATTracker != 4 && parentObj.memory[0xFF44] == 153) {
+            parentObj.memory[0xFF44] = 0;  //LY register resets to 0 early.
+            //Perform a LYC counter assert:
+            if (parentObj.memory[0xFF45] == 0) {
+              parentObj.memory[0xFF41] |= 0x04;
+              if (parentObj.LYCMatchTriggerSTAT) {
+                parentObj.interruptsRequested |= 0x2;
+                parentObj.checkIRQMatching();
+              }
+            }
+            else {
+              parentObj.memory[0xFF41] &= 0x7B;
+            }
+            parentObj.STATTracker = 4;
+          }
+          if (parentObj.LCDTicks >= 456) {
+            //We reset back to the beginning:
+            parentObj.LCDTicks -= 456;
+            parentObj.STATTracker = parentObj.actualScanLine = 0;
+            parentObj.LINECONTROL[0](parentObj);  //Scan Line and STAT Mode Control.
+          }
+        }
+      }
+    }
+    ++line;
+  }
+}
+GameBoyCore.prototype.DisplayShowOff = function () {
+  if (this.drewBlank == 0) {
+    //Output a blank screen to the output framebuffer:
+    this.clearFrameBuffer();
+    this.drewFrame = true;
+  }
+  this.drewBlank = 2;
+}
+GameBoyCore.prototype.executeHDMA = function () {
+  this.DMAWrite(1);
+  if (this.halt) {
+    if ((this.LCDTicks - this.spriteCount) < ((4 >> this.doubleSpeedShifter) | 0x20)) {
+      //HALT clocking correction:
+      this.CPUTicks = 4 + ((0x20 + this.spriteCount) << this.doubleSpeedShifter);
+      this.LCDTicks = this.spriteCount + ((4 >> this.doubleSpeedShifter) | 0x20);
+    }
+  }
+  else {
+    this.LCDTicks += (4 >> this.doubleSpeedShifter) | 0x20;      //LCD Timing Update For HDMA.
+  }
+  if (this.memory[0xFF55] == 0) {
+    this.hdmaRunning = false;
+    this.memory[0xFF55] = 0xFF;  //Transfer completed ("Hidden last step," since some ROMs don't imply this, but most do).
+  }
+  else {
+    --this.memory[0xFF55];
+  }
+}
+GameBoyCore.prototype.clockUpdate = function () {
+  if (this.cTIMER) {
+    var dateObj = new_Date(); // The line is changed for benchmarking.
+    var newTime = dateObj.getTime();
+    var timeElapsed = newTime - this.lastIteration;  //Get the numnber of milliseconds since this last executed.
+    this.lastIteration = newTime;
+    if (this.cTIMER && !this.RTCHALT) {
+      //Update the MBC3 RTC:
+      this.RTCSeconds += timeElapsed / 1000;
+      while (this.RTCSeconds >= 60) {  //System can stutter, so the seconds difference can get large, thus the "while".
+        this.RTCSeconds -= 60;
+        ++this.RTCMinutes;
+        if (this.RTCMinutes >= 60) {
+          this.RTCMinutes -= 60;
+          ++this.RTCHours;
+          if (this.RTCHours >= 24) {
+            this.RTCHours -= 24
+            ++this.RTCDays;
+            if (this.RTCDays >= 512) {
+              this.RTCDays -= 512;
+              this.RTCDayOverFlow = true;
+            }
+          }
+        }
+      }
+    }
+  }
+}
+GameBoyCore.prototype.prepareFrame = function () {
+  //Copy the internal frame buffer to the output buffer:
+  this.swizzleFrameBuffer();
+  this.drewFrame = true;
+}
+GameBoyCore.prototype.requestDraw = function () {
+  if (this.drewFrame) {
+    this.dispatchDraw();
+  }
+}
+GameBoyCore.prototype.dispatchDraw = function () {
+  var canvasRGBALength = this.offscreenRGBCount;
+  if (canvasRGBALength > 0) {
+    //We actually updated the graphics internally, so copy out:
+    var frameBuffer = (canvasRGBALength == 92160) ? this.swizzledFrame : this.resizeFrameBuffer();
+    var canvasData = this.canvasBuffer.data;
+    var bufferIndex = 0;
+    for (var canvasIndex = 0; canvasIndex < canvasRGBALength; ++canvasIndex) {
+      canvasData[canvasIndex++] = frameBuffer[bufferIndex++];
+      canvasData[canvasIndex++] = frameBuffer[bufferIndex++];
+      canvasData[canvasIndex++] = frameBuffer[bufferIndex++];
+    }
+    this.graphicsBlit();
+  }
+}
+GameBoyCore.prototype.swizzleFrameBuffer = function () {
+  //Convert our dirty 24-bit (24-bit, with internal render flags above it) framebuffer to an 8-bit buffer with separate indices for the RGB channels:
+  var frameBuffer = this.frameBuffer;
+  var swizzledFrame = this.swizzledFrame;
+  var bufferIndex = 0;
+  for (var canvasIndex = 0; canvasIndex < 69120;) {
+    swizzledFrame[canvasIndex++] = (frameBuffer[bufferIndex] >> 16) & 0xFF;    //Red
+    swizzledFrame[canvasIndex++] = (frameBuffer[bufferIndex] >> 8) & 0xFF;    //Green
+    swizzledFrame[canvasIndex++] = frameBuffer[bufferIndex++] & 0xFF;      //Blue
+  }
+}
+GameBoyCore.prototype.clearFrameBuffer = function () {
+  var bufferIndex = 0;
+  var frameBuffer = this.swizzledFrame;
+  if (this.cGBC || this.colorizedGBPalettes) {
+    while (bufferIndex < 69120) {
+      frameBuffer[bufferIndex++] = 248;
+    }
+  }
+  else {
+    while (bufferIndex < 69120) {
+      frameBuffer[bufferIndex++] = 239;
+      frameBuffer[bufferIndex++] = 255;
+      frameBuffer[bufferIndex++] = 222;
+    }
+  }
+}
+GameBoyCore.prototype.resizeFrameBuffer = function () {
+  //Return a reference to the generated resized framebuffer:
+  return this.resizer.resize(this.swizzledFrame);
+}
+GameBoyCore.prototype.compileResizeFrameBufferFunction = function () {
+  if (this.offscreenRGBCount > 0) {
+    this.resizer = new Resize(160, 144, this.offscreenWidth, this.offscreenHeight, false, true);
+  }
+}
+GameBoyCore.prototype.renderScanLine = function (scanlineToRender) {
+  this.pixelStart = scanlineToRender * 160;
+  if (this.bgEnabled) {
+    this.pixelEnd = 160;
+    this.BGLayerRender(scanlineToRender);
+    this.WindowLayerRender(scanlineToRender);
+  }
+  else {
+    var pixelLine = (scanlineToRender + 1) * 160;
+    var defaultColor = (this.cGBC || this.colorizedGBPalettes) ? 0xF8F8F8 : 0xEFFFDE;
+    for (var pixelPosition = (scanlineToRender * 160) + this.currentX; pixelPosition < pixelLine; pixelPosition++) {
+      this.frameBuffer[pixelPosition] = defaultColor;
+    }
+  }
+  this.SpriteLayerRender(scanlineToRender);
+  this.currentX = 0;
+  this.midScanlineOffset = -1;
+}
+GameBoyCore.prototype.renderMidScanLine = function () {
+  if (this.actualScanLine < 144 && this.modeSTAT == 3) {
+    //TODO: Get this accurate:
+    if (this.midScanlineOffset == -1) {
+      this.midScanlineOffset = this.backgroundX & 0x7;
+    }
+    if (this.LCDTicks >= 82) {
+      this.pixelEnd = this.LCDTicks - 74;
+      this.pixelEnd = Math.min(this.pixelEnd - this.midScanlineOffset - (this.pixelEnd % 0x8), 160);
+      if (this.bgEnabled) {
+        this.pixelStart = this.lastUnrenderedLine * 160;
+        this.BGLayerRender(this.lastUnrenderedLine);
+        this.WindowLayerRender(this.lastUnrenderedLine);
+        //TODO: Do midscanline JIT for sprites...
+      }
+      else {
+        var pixelLine = (this.lastUnrenderedLine * 160) + this.pixelEnd;
+        var defaultColor = (this.cGBC || this.colorizedGBPalettes) ? 0xF8F8F8 : 0xEFFFDE;
+        for (var pixelPosition = (this.lastUnrenderedLine * 160) + this.currentX; pixelPosition < pixelLine; pixelPosition++) {
+          this.frameBuffer[pixelPosition] = defaultColor;
+        }
+      }
+      this.currentX = this.pixelEnd;
+    }
+  }
+}
+GameBoyCore.prototype.initializeModeSpecificArrays = function () {
+  this.LCDCONTROL = (this.LCDisOn) ? this.LINECONTROL : this.DISPLAYOFFCONTROL;
+  if (this.cGBC) {
+    this.gbcOBJRawPalette = this.getTypedArray(0x40, 0, "uint8");
+    this.gbcBGRawPalette = this.getTypedArray(0x40, 0, "uint8");
+    this.gbcOBJPalette = this.getTypedArray(0x20, 0x1000000, "int32");
+    this.gbcBGPalette = this.getTypedArray(0x40, 0, "int32");
+    this.BGCHRBank2 = this.getTypedArray(0x800, 0, "uint8");
+    this.BGCHRCurrentBank = (this.currVRAMBank > 0) ? this.BGCHRBank2 : this.BGCHRBank1;
+    this.tileCache = this.generateCacheArray(0xF80);
+  }
+  else {
+    this.gbOBJPalette = this.getTypedArray(8, 0, "int32");
+    this.gbBGPalette = this.getTypedArray(4, 0, "int32");
+    this.BGPalette = this.gbBGPalette;
+    this.OBJPalette = this.gbOBJPalette;
+    this.tileCache = this.generateCacheArray(0x700);
+    this.sortBuffer = this.getTypedArray(0x100, 0, "uint8");
+    this.OAMAddressCache = this.getTypedArray(10, 0, "int32");
+  }
+  this.renderPathBuild();
+}
+GameBoyCore.prototype.GBCtoGBModeAdjust = function () {
+  cout("Stepping down from GBC mode.", 0);
+  this.VRAM = this.GBCMemory = this.BGCHRCurrentBank = this.BGCHRBank2 = null;
+  this.tileCache.length = 0x700;
+  if (settings[4]) {
+    this.gbBGColorizedPalette = this.getTypedArray(4, 0, "int32");
+    this.gbOBJColorizedPalette = this.getTypedArray(8, 0, "int32");
+    this.cachedBGPaletteConversion = this.getTypedArray(4, 0, "int32");
+    this.cachedOBJPaletteConversion = this.getTypedArray(8, 0, "int32");
+    this.BGPalette = this.gbBGColorizedPalette;
+    this.OBJPalette = this.gbOBJColorizedPalette;
+    this.gbOBJPalette = this.gbBGPalette = null;
+    this.getGBCColor();
+  }
+  else {
+    this.gbOBJPalette = this.getTypedArray(8, 0, "int32");
+    this.gbBGPalette = this.getTypedArray(4, 0, "int32");
+    this.BGPalette = this.gbBGPalette;
+    this.OBJPalette = this.gbOBJPalette;
+  }
+  this.sortBuffer = this.getTypedArray(0x100, 0, "uint8");
+  this.OAMAddressCache = this.getTypedArray(10, 0, "int32");
+  this.renderPathBuild();
+  this.memoryReadJumpCompile();
+  this.memoryWriteJumpCompile();
+}
+GameBoyCore.prototype.renderPathBuild = function () {
+  if (!this.cGBC) {
+    this.BGLayerRender = this.BGGBLayerRender;
+    this.WindowLayerRender = this.WindowGBLayerRender;
+    this.SpriteLayerRender = this.SpriteGBLayerRender;
+  }
+  else {
+    this.priorityFlaggingPathRebuild();
+    this.SpriteLayerRender = this.SpriteGBCLayerRender;
+  }
+}
+GameBoyCore.prototype.priorityFlaggingPathRebuild = function () {
+  if (this.BGPriorityEnabled) {
+    this.BGLayerRender = this.BGGBCLayerRender;
+    this.WindowLayerRender = this.WindowGBCLayerRender;
+  }
+  else {
+    this.BGLayerRender = this.BGGBCLayerRenderNoPriorityFlagging;
+    this.WindowLayerRender = this.WindowGBCLayerRenderNoPriorityFlagging;
+  }
+}
+GameBoyCore.prototype.initializeReferencesFromSaveState = function () {
+  this.LCDCONTROL = (this.LCDisOn) ? this.LINECONTROL : this.DISPLAYOFFCONTROL;
+  var tileIndex = 0;
+  if (!this.cGBC) {
+    if (this.colorizedGBPalettes) {
+      this.BGPalette = this.gbBGColorizedPalette;
+      this.OBJPalette = this.gbOBJColorizedPalette;
+      this.updateGBBGPalette = this.updateGBColorizedBGPalette;
+      this.updateGBOBJPalette = this.updateGBColorizedOBJPalette;
+
+    }
+    else {
+      this.BGPalette = this.gbBGPalette;
+      this.OBJPalette = this.gbOBJPalette;
+    }
+    this.tileCache = this.generateCacheArray(0x700);
+    for (tileIndex = 0x8000; tileIndex < 0x9000; tileIndex += 2) {
+      this.generateGBOAMTileLine(tileIndex);
+    }
+    for (tileIndex = 0x9000; tileIndex < 0x9800; tileIndex += 2) {
+      this.generateGBTileLine(tileIndex);
+    }
+    this.sortBuffer = this.getTypedArray(0x100, 0, "uint8");
+    this.OAMAddressCache = this.getTypedArray(10, 0, "int32");
+  }
+  else {
+    this.BGCHRCurrentBank = (this.currVRAMBank > 0) ? this.BGCHRBank2 : this.BGCHRBank1;
+    this.tileCache = this.generateCacheArray(0xF80);
+    for (; tileIndex < 0x1800; tileIndex += 0x10) {
+      this.generateGBCTileBank1(tileIndex);
+      this.generateGBCTileBank2(tileIndex);
+    }
+  }
+  this.renderPathBuild();
+}
+GameBoyCore.prototype.RGBTint = function (value) {
+  //Adjustment for the GBC's tinting (According to Gambatte):
+  var r = value & 0x1F;
+  var g = (value >> 5) & 0x1F;
+  var b = (value >> 10) & 0x1F;
+  return ((r * 13 + g * 2 + b) >> 1) << 16 | (g * 3 + b) << 9 | (r * 3 + g * 2 + b * 11) >> 1;
+}
+GameBoyCore.prototype.getGBCColor = function () {
+  //GBC Colorization of DMG ROMs:
+  //BG
+  for (var counter = 0; counter < 4; counter++) {
+    var adjustedIndex = counter << 1;
+    //BG
+    this.cachedBGPaletteConversion[counter] = this.RGBTint((this.gbcBGRawPalette[adjustedIndex | 1] << 8) | this.gbcBGRawPalette[adjustedIndex]);
+    //OBJ 1
+    this.cachedOBJPaletteConversion[counter] = this.RGBTint((this.gbcOBJRawPalette[adjustedIndex | 1] << 8) | this.gbcOBJRawPalette[adjustedIndex]);
+  }
+  //OBJ 2
+  for (counter = 4; counter < 8; counter++) {
+    adjustedIndex = counter << 1;
+    this.cachedOBJPaletteConversion[counter] = this.RGBTint((this.gbcOBJRawPalette[adjustedIndex | 1] << 8) | this.gbcOBJRawPalette[adjustedIndex]);
+  }
+  //Update the palette entries:
+  this.updateGBBGPalette = this.updateGBColorizedBGPalette;
+  this.updateGBOBJPalette = this.updateGBColorizedOBJPalette;
+  this.updateGBBGPalette(this.memory[0xFF47]);
+  this.updateGBOBJPalette(0, this.memory[0xFF48]);
+  this.updateGBOBJPalette(1, this.memory[0xFF49]);
+  this.colorizedGBPalettes = true;
+}
+GameBoyCore.prototype.updateGBRegularBGPalette = function (data) {
+  this.gbBGPalette[0] = this.colors[data & 0x03] | 0x2000000;
+  this.gbBGPalette[1] = this.colors[(data >> 2) & 0x03];
+  this.gbBGPalette[2] = this.colors[(data >> 4) & 0x03];
+  this.gbBGPalette[3] = this.colors[data >> 6];
+}
+GameBoyCore.prototype.updateGBColorizedBGPalette = function (data) {
+  //GB colorization:
+  this.gbBGColorizedPalette[0] = this.cachedBGPaletteConversion[data & 0x03] | 0x2000000;
+  this.gbBGColorizedPalette[1] = this.cachedBGPaletteConversion[(data >> 2) & 0x03];
+  this.gbBGColorizedPalette[2] = this.cachedBGPaletteConversion[(data >> 4) & 0x03];
+  this.gbBGColorizedPalette[3] = this.cachedBGPaletteConversion[data >> 6];
+}
+GameBoyCore.prototype.updateGBRegularOBJPalette = function (index, data) {
+  this.gbOBJPalette[index | 1] = this.colors[(data >> 2) & 0x03];
+  this.gbOBJPalette[index | 2] = this.colors[(data >> 4) & 0x03];
+  this.gbOBJPalette[index | 3] = this.colors[data >> 6];
+}
+GameBoyCore.prototype.updateGBColorizedOBJPalette = function (index, data) {
+  //GB colorization:
+  this.gbOBJColorizedPalette[index | 1] = this.cachedOBJPaletteConversion[index | ((data >> 2) & 0x03)];
+  this.gbOBJColorizedPalette[index | 2] = this.cachedOBJPaletteConversion[index | ((data >> 4) & 0x03)];
+  this.gbOBJColorizedPalette[index | 3] = this.cachedOBJPaletteConversion[index | (data >> 6)];
+}
+GameBoyCore.prototype.updateGBCBGPalette = function (index, data) {
+  if (this.gbcBGRawPalette[index] != data) {
+    this.midScanLineJIT();
+    //Update the color palette for BG tiles since it changed:
+    this.gbcBGRawPalette[index] = data;
+    if ((index & 0x06) == 0) {
+      //Palette 0 (Special tile Priority stuff)
+      data = 0x2000000 | this.RGBTint((this.gbcBGRawPalette[index | 1] << 8) | this.gbcBGRawPalette[index & 0x3E]);
+      index >>= 1;
+      this.gbcBGPalette[index] = data;
+      this.gbcBGPalette[0x20 | index] = 0x1000000 | data;
+    }
+    else {
+      //Regular Palettes (No special crap)
+      data = this.RGBTint((this.gbcBGRawPalette[index | 1] << 8) | this.gbcBGRawPalette[index & 0x3E]);
+      index >>= 1;
+      this.gbcBGPalette[index] = data;
+      this.gbcBGPalette[0x20 | index] = 0x1000000 | data;
+    }
+  }
+}
+GameBoyCore.prototype.updateGBCOBJPalette = function (index, data) {
+  if (this.gbcOBJRawPalette[index] != data) {
+    //Update the color palette for OBJ tiles since it changed:
+    this.gbcOBJRawPalette[index] = data;
+    if ((index & 0x06) > 0) {
+      //Regular Palettes (No special crap)
+      this.midScanLineJIT();
+      this.gbcOBJPalette[index >> 1] = 0x1000000 | this.RGBTint((this.gbcOBJRawPalette[index | 1] << 8) | this.gbcOBJRawPalette[index & 0x3E]);
+    }
+  }
+}
+GameBoyCore.prototype.BGGBLayerRender = function (scanlineToRender) {
+  var scrollYAdjusted = (this.backgroundY + scanlineToRender) & 0xFF;            //The line of the BG we're at.
+  var tileYLine = (scrollYAdjusted & 7) << 3;
+  var tileYDown = this.gfxBackgroundCHRBankPosition | ((scrollYAdjusted & 0xF8) << 2);  //The row of cached tiles we're fetching from.
+  var scrollXAdjusted = (this.backgroundX + this.currentX) & 0xFF;            //The scroll amount of the BG.
+  var pixelPosition = this.pixelStart + this.currentX;                  //Current pixel we're working on.
+  var pixelPositionEnd = this.pixelStart + ((this.gfxWindowDisplay && (scanlineToRender - this.windowY) >= 0) ? Math.min(Math.max(this.windowX, 0) + this.currentX, this.pixelEnd) : this.pixelEnd);  //Make sure we do at most 160 pixels a scanline.
+  var tileNumber = tileYDown + (scrollXAdjusted >> 3);
+  var chrCode = this.BGCHRBank1[tileNumber];
+  if (chrCode < this.gfxBackgroundBankOffset) {
+    chrCode |= 0x100;
+  }
+  var tile = this.tileCache[chrCode];
+  for (var texel = (scrollXAdjusted & 0x7); texel < 8 && pixelPosition < pixelPositionEnd && scrollXAdjusted < 0x100; ++scrollXAdjusted) {
+    this.frameBuffer[pixelPosition++] = this.BGPalette[tile[tileYLine | texel++]];
+  }
+  var scrollXAdjustedAligned = Math.min(pixelPositionEnd - pixelPosition, 0x100 - scrollXAdjusted) >> 3;
+  scrollXAdjusted += scrollXAdjustedAligned << 3;
+  scrollXAdjustedAligned += tileNumber;
+  while (tileNumber < scrollXAdjustedAligned) {
+    chrCode = this.BGCHRBank1[++tileNumber];
+    if (chrCode < this.gfxBackgroundBankOffset) {
+      chrCode |= 0x100;
+    }
+    tile = this.tileCache[chrCode];
+    texel = tileYLine;
+    this.frameBuffer[pixelPosition++] = this.BGPalette[tile[texel++]];
+    this.frameBuffer[pixelPosition++] = this.BGPalette[tile[texel++]];
+    this.frameBuffer[pixelPosition++] = this.BGPalette[tile[texel++]];
+    this.frameBuffer[pixelPosition++] = this.BGPalette[tile[texel++]];
+    this.frameBuffer[pixelPosition++] = this.BGPalette[tile[texel++]];
+    this.frameBuffer[pixelPosition++] = this.BGPalette[tile[texel++]];
+    this.frameBuffer[pixelPosition++] = this.BGPalette[tile[texel++]];
+    this.frameBuffer[pixelPosition++] = this.BGPalette[tile[texel]];
+  }
+  if (pixelPosition < pixelPositionEnd) {
+    if (scrollXAdjusted < 0x100) {
+      chrCode = this.BGCHRBank1[++tileNumber];
+      if (chrCode < this.gfxBackgroundBankOffset) {
+        chrCode |= 0x100;
+      }
+      tile = this.tileCache[chrCode];
+      for (texel = tileYLine - 1; pixelPosition < pixelPositionEnd && scrollXAdjusted < 0x100; ++scrollXAdjusted) {
+        this.frameBuffer[pixelPosition++] = this.BGPalette[tile[++texel]];
+      }
+    }
+    scrollXAdjustedAligned = ((pixelPositionEnd - pixelPosition) >> 3) + tileYDown;
+    while (tileYDown < scrollXAdjustedAligned) {
+      chrCode = this.BGCHRBank1[tileYDown++];
+      if (chrCode < this.gfxBackgroundBankOffset) {
+        chrCode |= 0x100;
+      }
+      tile = this.tileCache[chrCode];
+      texel = tileYLine;
+      this.frameBuffer[pixelPosition++] = this.BGPalette[tile[texel++]];
+      this.frameBuffer[pixelPosition++] = this.BGPalette[tile[texel++]];
+      this.frameBuffer[pixelPosition++] = this.BGPalette[tile[texel++]];
+      this.frameBuffer[pixelPosition++] = this.BGPalette[tile[texel++]];
+      this.frameBuffer[pixelPosition++] = this.BGPalette[tile[texel++]];
+      this.frameBuffer[pixelPosition++] = this.BGPalette[tile[texel++]];
+      this.frameBuffer[pixelPosition++] = this.BGPalette[tile[texel++]];
+      this.frameBuffer[pixelPosition++] = this.BGPalette[tile[texel]];
+    }
+    if (pixelPosition < pixelPositionEnd) {
+      chrCode = this.BGCHRBank1[tileYDown];
+      if (chrCode < this.gfxBackgroundBankOffset) {
+        chrCode |= 0x100;
+      }
+      tile = this.tileCache[chrCode];
+      switch (pixelPositionEnd - pixelPosition) {
+        case 7:
+          this.frameBuffer[pixelPosition + 6] = this.BGPalette[tile[tileYLine | 6]];
+        case 6:
+          this.frameBuffer[pixelPosition + 5] = this.BGPalette[tile[tileYLine | 5]];
+        case 5:
+          this.frameBuffer[pixelPosition + 4] = this.BGPalette[tile[tileYLine | 4]];
+        case 4:
+          this.frameBuffer[pixelPosition + 3] = this.BGPalette[tile[tileYLine | 3]];
+        case 3:
+          this.frameBuffer[pixelPosition + 2] = this.BGPalette[tile[tileYLine | 2]];
+        case 2:
+          this.frameBuffer[pixelPosition + 1] = this.BGPalette[tile[tileYLine | 1]];
+        case 1:
+          this.frameBuffer[pixelPosition] = this.BGPalette[tile[tileYLine]];
+      }
+    }
+  }
+}
+GameBoyCore.prototype.BGGBCLayerRender = function (scanlineToRender) {
+  var scrollYAdjusted = (this.backgroundY + scanlineToRender) & 0xFF;            //The line of the BG we're at.
+  var tileYLine = (scrollYAdjusted & 7) << 3;
+  var tileYDown = this.gfxBackgroundCHRBankPosition | ((scrollYAdjusted & 0xF8) << 2);  //The row of cached tiles we're fetching from.
+  var scrollXAdjusted = (this.backgroundX + this.currentX) & 0xFF;            //The scroll amount of the BG.
+  var pixelPosition = this.pixelStart + this.currentX;                  //Current pixel we're working on.
+  var pixelPositionEnd = this.pixelStart + ((this.gfxWindowDisplay && (scanlineToRender - this.windowY) >= 0) ? Math.min(Math.max(this.windowX, 0) + this.currentX, this.pixelEnd) : this.pixelEnd);  //Make sure we do at most 160 pixels a scanline.
+  var tileNumber = tileYDown + (scrollXAdjusted >> 3);
+  var chrCode = this.BGCHRBank1[tileNumber];
+  if (chrCode < this.gfxBackgroundBankOffset) {
+    chrCode |= 0x100;
+  }
+  var attrCode = this.BGCHRBank2[tileNumber];
+  var tile = this.tileCache[((attrCode & 0x08) << 8) | ((attrCode & 0x60) << 4) | chrCode];
+  var palette = ((attrCode & 0x7) << 2) | ((attrCode & 0x80) >> 2);
+  for (var texel = (scrollXAdjusted & 0x7); texel < 8 && pixelPosition < pixelPositionEnd && scrollXAdjusted < 0x100; ++scrollXAdjusted) {
+    this.frameBuffer[pixelPosition++] = this.gbcBGPalette[palette | tile[tileYLine | texel++]];
+  }
+  var scrollXAdjustedAligned = Math.min(pixelPositionEnd - pixelPosition, 0x100 - scrollXAdjusted) >> 3;
+  scrollXAdjusted += scrollXAdjustedAligned << 3;
+  scrollXAdjustedAligned += tileNumber;
+  while (tileNumber < scrollXAdjustedAligned) {
+    chrCode = this.BGCHRBank1[++tileNumber];
+    if (chrCode < this.gfxBackgroundBankOffset) {
+      chrCode |= 0x100;
+    }
+    attrCode = this.BGCHRBank2[tileNumber];
+    tile = this.tileCache[((attrCode & 0x08) << 8) | ((attrCode & 0x60) << 4) | chrCode];
+    palette = ((attrCode & 0x7) << 2) | ((attrCode & 0x80) >> 2);
+    texel = tileYLine;
+    this.frameBuffer[pixelPosition++] = this.gbcBGPalette[palette | tile[texel++]];
+    this.frameBuffer[pixelPosition++] = this.gbcBGPalette[palette | tile[texel++]];
+    this.frameBuffer[pixelPosition++] = this.gbcBGPalette[palette | tile[texel++]];
+    this.frameBuffer[pixelPosition++] = this.gbcBGPalette[palette | tile[texel++]];
+    this.frameBuffer[pixelPosition++] = this.gbcBGPalette[palette | tile[texel++]];
+    this.frameBuffer[pixelPosition++] = this.gbcBGPalette[palette | tile[texel++]];
+    this.frameBuffer[pixelPosition++] = this.gbcBGPalette[palette | tile[texel++]];
+    this.frameBuffer[pixelPosition++] = this.gbcBGPalette[palette | tile[texel]];
+  }
+  if (pixelPosition < pixelPositionEnd) {
+    if (scrollXAdjusted < 0x100) {
+      chrCode = this.BGCHRBank1[++tileNumber];
+      if (chrCode < this.gfxBackgroundBankOffset) {
+        chrCode |= 0x100;
+      }
+      attrCode = this.BGCHRBank2[tileNumber];
+      tile = this.tileCache[((attrCode & 0x08) << 8) | ((attrCode & 0x60) << 4) | chrCode];
+      palette = ((attrCode & 0x7) << 2) | ((attrCode & 0x80) >> 2);
+      for (texel = tileYLine - 1; pixelPosition < pixelPositionEnd && scrollXAdjusted < 0x100; ++scrollXAdjusted) {
+        this.frameBuffer[pixelPosition++] = this.gbcBGPalette[palette | tile[++texel]];
+      }
+    }
+    scrollXAdjustedAligned = ((pixelPositionEnd - pixelPosition) >> 3) + tileYDown;
+    while (tileYDown < scrollXAdjustedAligned) {
+      chrCode = this.BGCHRBank1[tileYDown];
+      if (chrCode < this.gfxBackgroundBankOffset) {
+        chrCode |= 0x100;
+      }
+      attrCode = this.BGCHRBank2[tileYDown++];
+      tile = this.tileCache[((attrCode & 0x08) << 8) | ((attrCode & 0x60) << 4) | chrCode];
+      palette = ((attrCode & 0x7) << 2) | ((attrCode & 0x80) >> 2);
+      texel = tileYLine;
+      this.frameBuffer[pixelPosition++] = this.gbcBGPalette[palette | tile[texel++]];
+      this.frameBuffer[pixelPosition++] = this.gbcBGPalette[palette | tile[texel++]];
+      this.frameBuffer[pixelPosition++] = this.gbcBGPalette[palette | tile[texel++]];
+      this.frameBuffer[pixelPosition++] = this.gbcBGPalette[palette | tile[texel++]];
+      this.frameBuffer[pixelPosition++] = this.gbcBGPalette[palette | tile[texel++]];
+      this.frameBuffer[pixelPosition++] = this.gbcBGPalette[palette | tile[texel++]];
+      this.frameBuffer[pixelPosition++] = this.gbcBGPalette[palette | tile[texel++]];
+      this.frameBuffer[pixelPosition++] = this.gbcBGPalette[palette | tile[texel]];
+    }
+    if (pixelPosition < pixelPositionEnd) {
+      chrCode = this.BGCHRBank1[tileYDown];
+      if (chrCode < this.gfxBackgroundBankOffset) {
+        chrCode |= 0x100;
+      }
+      attrCode = this.BGCHRBank2[tileYDown];
+      tile = this.tileCache[((attrCode & 0x08) << 8) | ((attrCode & 0x60) << 4) | chrCode];
+      palette = ((attrCode & 0x7) << 2) | ((attrCode & 0x80) >> 2);
+      switch (pixelPositionEnd - pixelPosition) {
+        case 7:
+          this.frameBuffer[pixelPosition + 6] = this.gbcBGPalette[palette | tile[tileYLine | 6]];
+        case 6:
+          this.frameBuffer[pixelPosition + 5] = this.gbcBGPalette[palette | tile[tileYLine | 5]];
+        case 5:
+          this.frameBuffer[pixelPosition + 4] = this.gbcBGPalette[palette | tile[tileYLine | 4]];
+        case 4:
+          this.frameBuffer[pixelPosition + 3] = this.gbcBGPalette[palette | tile[tileYLine | 3]];
+        case 3:
+          this.frameBuffer[pixelPosition + 2] = this.gbcBGPalette[palette | tile[tileYLine | 2]];
+        case 2:
+          this.frameBuffer[pixelPosition + 1] = this.gbcBGPalette[palette | tile[tileYLine | 1]];
+        case 1:
+          this.frameBuffer[pixelPosition] = this.gbcBGPalette[palette | tile[tileYLine]];
+      }
+    }
+  }
+}
+GameBoyCore.prototype.BGGBCLayerRenderNoPriorityFlagging = function (scanlineToRender) {
+  var scrollYAdjusted = (this.backgroundY + scanlineToRender) & 0xFF;            //The line of the BG we're at.
+  var tileYLine = (scrollYAdjusted & 7) << 3;
+  var tileYDown = this.gfxBackgroundCHRBankPosition | ((scrollYAdjusted & 0xF8) << 2);  //The row of cached tiles we're fetching from.
+  var scrollXAdjusted = (this.backgroundX + this.currentX) & 0xFF;            //The scroll amount of the BG.
+  var pixelPosition = this.pixelStart + this.currentX;                  //Current pixel we're working on.
+  var pixelPositionEnd = this.pixelStart + ((this.gfxWindowDisplay && (scanlineToRender - this.windowY) >= 0) ? Math.min(Math.max(this.windowX, 0) + this.currentX, this.pixelEnd) : this.pixelEnd);  //Make sure we do at most 160 pixels a scanline.
+  var tileNumber = tileYDown + (scrollXAdjusted >> 3);
+  var chrCode = this.BGCHRBank1[tileNumber];
+  if (chrCode < this.gfxBackgroundBankOffset) {
+    chrCode |= 0x100;
+  }
+  var attrCode = this.BGCHRBank2[tileNumber];
+  var tile = this.tileCache[((attrCode & 0x08) << 8) | ((attrCode & 0x60) << 4) | chrCode];
+  var palette = (attrCode & 0x7) << 2;
+  for (var texel = (scrollXAdjusted & 0x7); texel < 8 && pixelPosition < pixelPositionEnd && scrollXAdjusted < 0x100; ++scrollXAdjusted) {
+    this.frameBuffer[pixelPosition++] = this.gbcBGPalette[palette | tile[tileYLine | texel++]];
+  }
+  var scrollXAdjustedAligned = Math.min(pixelPositionEnd - pixelPosition, 0x100 - scrollXAdjusted) >> 3;
+  scrollXAdjusted += scrollXAdjustedAligned << 3;
+  scrollXAdjustedAligned += tileNumber;
+  while (tileNumber < scrollXAdjustedAligned) {
+    chrCode = this.BGCHRBank1[++tileNumber];
+    if (chrCode < this.gfxBackgroundBankOffset) {
+      chrCode |= 0x100;
+    }
+    attrCode = this.BGCHRBank2[tileNumber];
+    tile = this.tileCache[((attrCode & 0x08) << 8) | ((attrCode & 0x60) << 4) | chrCode];
+    palette = (attrCode & 0x7) << 2;
+    texel = tileYLine;
+    this.frameBuffer[pixelPosition++] = this.gbcBGPalette[palette | tile[texel++]];
+    this.frameBuffer[pixelPosition++] = this.gbcBGPalette[palette | tile[texel++]];
+    this.frameBuffer[pixelPosition++] = this.gbcBGPalette[palette | tile[texel++]];
+    this.frameBuffer[pixelPosition++] = this.gbcBGPalette[palette | tile[texel++]];
+    this.frameBuffer[pixelPosition++] = this.gbcBGPalette[palette | tile[texel++]];
+    this.frameBuffer[pixelPosition++] = this.gbcBGPalette[palette | tile[texel++]];
+    this.frameBuffer[pixelPosition++] = this.gbcBGPalette[palette | tile[texel++]];
+    this.frameBuffer[pixelPosition++] = this.gbcBGPalette[palette | tile[texel]];
+  }
+  if (pixelPosition < pixelPositionEnd) {
+    if (scrollXAdjusted < 0x100) {
+      chrCode = this.BGCHRBank1[++tileNumber];
+      if (chrCode < this.gfxBackgroundBankOffset) {
+        chrCode |= 0x100;
+      }
+      attrCode = this.BGCHRBank2[tileNumber];
+      tile = this.tileCache[((attrCode & 0x08) << 8) | ((attrCode & 0x60) << 4) | chrCode];
+      palette = (attrCode & 0x7) << 2;
+      for (texel = tileYLine - 1; pixelPosition < pixelPositionEnd && scrollXAdjusted < 0x100; ++scrollXAdjusted) {
+        this.frameBuffer[pixelPosition++] = this.gbcBGPalette[palette | tile[++texel]];
+      }
+    }
+    scrollXAdjustedAligned = ((pixelPositionEnd - pixelPosition) >> 3) + tileYDown;
+    while (tileYDown < scrollXAdjustedAligned) {
+      chrCode = this.BGCHRBank1[tileYDown];
+      if (chrCode < this.gfxBackgroundBankOffset) {
+        chrCode |= 0x100;
+      }
+      attrCode = this.BGCHRBank2[tileYDown++];
+      tile = this.tileCache[((attrCode & 0x08) << 8) | ((attrCode & 0x60) << 4) | chrCode];
+      palette = (attrCode & 0x7) << 2;
+      texel = tileYLine;
+      this.frameBuffer[pixelPosition++] = this.gbcBGPalette[palette | tile[texel++]];
+      this.frameBuffer[pixelPosition++] = this.gbcBGPalette[palette | tile[texel++]];
+      this.frameBuffer[pixelPosition++] = this.gbcBGPalette[palette | tile[texel++]];
+      this.frameBuffer[pixelPosition++] = this.gbcBGPalette[palette | tile[texel++]];
+      this.frameBuffer[pixelPosition++] = this.gbcBGPalette[palette | tile[texel++]];
+      this.frameBuffer[pixelPosition++] = this.gbcBGPalette[palette | tile[texel++]];
+      this.frameBuffer[pixelPosition++] = this.gbcBGPalette[palette | tile[texel++]];
+      this.frameBuffer[pixelPosition++] = this.gbcBGPalette[palette | tile[texel]];
+    }
+    if (pixelPosition < pixelPositionEnd) {
+      chrCode = this.BGCHRBank1[tileYDown];
+      if (chrCode < this.gfxBackgroundBankOffset) {
+        chrCode |= 0x100;
+      }
+      attrCode = this.BGCHRBank2[tileYDown];
+      tile = this.tileCache[((attrCode & 0x08) << 8) | ((attrCode & 0x60) << 4) | chrCode];
+      palette = (attrCode & 0x7) << 2;
+      switch (pixelPositionEnd - pixelPosition) {
+        case 7:
+          this.frameBuffer[pixelPosition + 6] = this.gbcBGPalette[palette | tile[tileYLine | 6]];
+        case 6:
+          this.frameBuffer[pixelPosition + 5] = this.gbcBGPalette[palette | tile[tileYLine | 5]];
+        case 5:
+          this.frameBuffer[pixelPosition + 4] = this.gbcBGPalette[palette | tile[tileYLine | 4]];
+        case 4:
+          this.frameBuffer[pixelPosition + 3] = this.gbcBGPalette[palette | tile[tileYLine | 3]];
+        case 3:
+          this.frameBuffer[pixelPosition + 2] = this.gbcBGPalette[palette | tile[tileYLine | 2]];
+        case 2:
+          this.frameBuffer[pixelPosition + 1] = this.gbcBGPalette[palette | tile[tileYLine | 1]];
+        case 1:
+          this.frameBuffer[pixelPosition] = this.gbcBGPalette[palette | tile[tileYLine]];
+      }
+    }
+  }
+}
+GameBoyCore.prototype.WindowGBLayerRender = function (scanlineToRender) {
+  if (this.gfxWindowDisplay) {                  //Is the window enabled?
+    var scrollYAdjusted = scanlineToRender - this.windowY;    //The line of the BG we're at.
+    if (scrollYAdjusted >= 0) {
+      var scrollXRangeAdjusted = (this.windowX > 0) ? (this.windowX + this.currentX) : this.currentX;
+      var pixelPosition = this.pixelStart + scrollXRangeAdjusted;
+      var pixelPositionEnd = this.pixelStart + this.pixelEnd;
+      if (pixelPosition < pixelPositionEnd) {
+        var tileYLine = (scrollYAdjusted & 0x7) << 3;
+        var tileNumber = (this.gfxWindowCHRBankPosition | ((scrollYAdjusted & 0xF8) << 2)) + (this.currentX >> 3);
+        var chrCode = this.BGCHRBank1[tileNumber];
+        if (chrCode < this.gfxBackgroundBankOffset) {
+          chrCode |= 0x100;
+        }
+        var tile = this.tileCache[chrCode];
+        var texel = (scrollXRangeAdjusted - this.windowX) & 0x7;
+        scrollXRangeAdjusted = Math.min(8, texel + pixelPositionEnd - pixelPosition);
+        while (texel < scrollXRangeAdjusted) {
+          this.frameBuffer[pixelPosition++] = this.BGPalette[tile[tileYLine | texel++]];
+        }
+        scrollXRangeAdjusted = tileNumber + ((pixelPositionEnd - pixelPosition) >> 3);
+        while (tileNumber < scrollXRangeAdjusted) {
+          chrCode = this.BGCHRBank1[++tileNumber];
+          if (chrCode < this.gfxBackgroundBankOffset) {
+            chrCode |= 0x100;
+          }
+          tile = this.tileCache[chrCode];
+          texel = tileYLine;
+          this.frameBuffer[pixelPosition++] = this.BGPalette[tile[texel++]];
+          this.frameBuffer[pixelPosition++] = this.BGPalette[tile[texel++]];
+          this.frameBuffer[pixelPosition++] = this.BGPalette[tile[texel++]];
+          this.frameBuffer[pixelPosition++] = this.BGPalette[tile[texel++]];
+          this.frameBuffer[pixelPosition++] = this.BGPalette[tile[texel++]];
+          this.frameBuffer[pixelPosition++] = this.BGPalette[tile[texel++]];
+          this.frameBuffer[pixelPosition++] = this.BGPalette[tile[texel++]];
+          this.frameBuffer[pixelPosition++] = this.BGPalette[tile[texel]];
+        }
+        if (pixelPosition < pixelPositionEnd) {
+          chrCode = this.BGCHRBank1[++tileNumber];
+          if (chrCode < this.gfxBackgroundBankOffset) {
+            chrCode |= 0x100;
+          }
+          tile = this.tileCache[chrCode];
+          switch (pixelPositionEnd - pixelPosition) {
+            case 7:
+              this.frameBuffer[pixelPosition + 6] = this.BGPalette[tile[tileYLine | 6]];
+            case 6:
+              this.frameBuffer[pixelPosition + 5] = this.BGPalette[tile[tileYLine | 5]];
+            case 5:
+              this.frameBuffer[pixelPosition + 4] = this.BGPalette[tile[tileYLine | 4]];
+            case 4:
+              this.frameBuffer[pixelPosition + 3] = this.BGPalette[tile[tileYLine | 3]];
+            case 3:
+              this.frameBuffer[pixelPosition + 2] = this.BGPalette[tile[tileYLine | 2]];
+            case 2:
+              this.frameBuffer[pixelPosition + 1] = this.BGPalette[tile[tileYLine | 1]];
+            case 1:
+              this.frameBuffer[pixelPosition] = this.BGPalette[tile[tileYLine]];
+          }
+        }
+      }
+    }
+  }
+}
+GameBoyCore.prototype.WindowGBCLayerRender = function (scanlineToRender) {
+  if (this.gfxWindowDisplay) {                  //Is the window enabled?
+    var scrollYAdjusted = scanlineToRender - this.windowY;    //The line of the BG we're at.
+    if (scrollYAdjusted >= 0) {
+      var scrollXRangeAdjusted = (this.windowX > 0) ? (this.windowX + this.currentX) : this.currentX;
+      var pixelPosition = this.pixelStart + scrollXRangeAdjusted;
+      var pixelPositionEnd = this.pixelStart + this.pixelEnd;
+      if (pixelPosition < pixelPositionEnd) {
+        var tileYLine = (scrollYAdjusted & 0x7) << 3;
+        var tileNumber = (this.gfxWindowCHRBankPosition | ((scrollYAdjusted & 0xF8) << 2)) + (this.currentX >> 3);
+        var chrCode = this.BGCHRBank1[tileNumber];
+        if (chrCode < this.gfxBackgroundBankOffset) {
+          chrCode |= 0x100;
+        }
+        var attrCode = this.BGCHRBank2[tileNumber];
+        var tile = this.tileCache[((attrCode & 0x08) << 8) | ((attrCode & 0x60) << 4) | chrCode];
+        var palette = ((attrCode & 0x7) << 2) | ((attrCode & 0x80) >> 2);
+        var texel = (scrollXRangeAdjusted - this.windowX) & 0x7;
+        scrollXRangeAdjusted = Math.min(8, texel + pixelPositionEnd - pixelPosition);
+        while (texel < scrollXRangeAdjusted) {
+          this.frameBuffer[pixelPosition++] = this.gbcBGPalette[palette | tile[tileYLine | texel++]];
+        }
+        scrollXRangeAdjusted = tileNumber + ((pixelPositionEnd - pixelPosition) >> 3);
+        while (tileNumber < scrollXRangeAdjusted) {
+          chrCode = this.BGCHRBank1[++tileNumber];
+          if (chrCode < this.gfxBackgroundBankOffset) {
+            chrCode |= 0x100;
+          }
+          attrCode = this.BGCHRBank2[tileNumber];
+          tile = this.tileCache[((attrCode & 0x08) << 8) | ((attrCode & 0x60) << 4) | chrCode];
+          palette = ((attrCode & 0x7) << 2) | ((attrCode & 0x80) >> 2);
+          texel = tileYLine;
+          this.frameBuffer[pixelPosition++] = this.gbcBGPalette[palette | tile[texel++]];
+          this.frameBuffer[pixelPosition++] = this.gbcBGPalette[palette | tile[texel++]];
+          this.frameBuffer[pixelPosition++] = this.gbcBGPalette[palette | tile[texel++]];
+          this.frameBuffer[pixelPosition++] = this.gbcBGPalette[palette | tile[texel++]];
+          this.frameBuffer[pixelPosition++] = this.gbcBGPalette[palette | tile[texel++]];
+          this.frameBuffer[pixelPosition++] = this.gbcBGPalette[palette | tile[texel++]];
+          this.frameBuffer[pixelPosition++] = this.gbcBGPalette[palette | tile[texel++]];
+          this.frameBuffer[pixelPosition++] = this.gbcBGPalette[palette | tile[texel]];
+        }
+        if (pixelPosition < pixelPositionEnd) {
+          chrCode = this.BGCHRBank1[++tileNumber];
+          if (chrCode < this.gfxBackgroundBankOffset) {
+            chrCode |= 0x100;
+          }
+          attrCode = this.BGCHRBank2[tileNumber];
+          tile = this.tileCache[((attrCode & 0x08) << 8) | ((attrCode & 0x60) << 4) | chrCode];
+          palette = ((attrCode & 0x7) << 2) | ((attrCode & 0x80) >> 2);
+          switch (pixelPositionEnd - pixelPosition) {
+            case 7:
+              this.frameBuffer[pixelPosition + 6] = this.gbcBGPalette[palette | tile[tileYLine | 6]];
+            case 6:
+              this.frameBuffer[pixelPosition + 5] = this.gbcBGPalette[palette | tile[tileYLine | 5]];
+            case 5:
+              this.frameBuffer[pixelPosition + 4] = this.gbcBGPalette[palette | tile[tileYLine | 4]];
+            case 4:
+              this.frameBuffer[pixelPosition + 3] = this.gbcBGPalette[palette | tile[tileYLine | 3]];
+            case 3:
+              this.frameBuffer[pixelPosition + 2] = this.gbcBGPalette[palette | tile[tileYLine | 2]];
+            case 2:
+              this.frameBuffer[pixelPosition + 1] = this.gbcBGPalette[palette | tile[tileYLine | 1]];
+            case 1:
+              this.frameBuffer[pixelPosition] = this.gbcBGPalette[palette | tile[tileYLine]];
+          }
+        }
+      }
+    }
+  }
+}
+GameBoyCore.prototype.WindowGBCLayerRenderNoPriorityFlagging = function (scanlineToRender) {
+  if (this.gfxWindowDisplay) {                  //Is the window enabled?
+    var scrollYAdjusted = scanlineToRender - this.windowY;    //The line of the BG we're at.
+    if (scrollYAdjusted >= 0) {
+      var scrollXRangeAdjusted = (this.windowX > 0) ? (this.windowX + this.currentX) : this.currentX;
+      var pixelPosition = this.pixelStart + scrollXRangeAdjusted;
+      var pixelPositionEnd = this.pixelStart + this.pixelEnd;
+      if (pixelPosition < pixelPositionEnd) {
+        var tileYLine = (scrollYAdjusted & 0x7) << 3;
+        var tileNumber = (this.gfxWindowCHRBankPosition | ((scrollYAdjusted & 0xF8) << 2)) + (this.currentX >> 3);
+        var chrCode = this.BGCHRBank1[tileNumber];
+        if (chrCode < this.gfxBackgroundBankOffset) {
+          chrCode |= 0x100;
+        }
+        var attrCode = this.BGCHRBank2[tileNumber];
+        var tile = this.tileCache[((attrCode & 0x08) << 8) | ((attrCode & 0x60) << 4) | chrCode];
+        var palette = (attrCode & 0x7) << 2;
+        var texel = (scrollXRangeAdjusted - this.windowX) & 0x7;
+        scrollXRangeAdjusted = Math.min(8, texel + pixelPositionEnd - pixelPosition);
+        while (texel < scrollXRangeAdjusted) {
+          this.frameBuffer[pixelPosition++] = this.gbcBGPalette[palette | tile[tileYLine | texel++]];
+        }
+        scrollXRangeAdjusted = tileNumber + ((pixelPositionEnd - pixelPosition) >> 3);
+        while (tileNumber < scrollXRangeAdjusted) {
+          chrCode = this.BGCHRBank1[++tileNumber];
+          if (chrCode < this.gfxBackgroundBankOffset) {
+            chrCode |= 0x100;
+          }
+          attrCode = this.BGCHRBank2[tileNumber];
+          tile = this.tileCache[((attrCode & 0x08) << 8) | ((attrCode & 0x60) << 4) | chrCode];
+          palette = (attrCode & 0x7) << 2;
+          texel = tileYLine;
+          this.frameBuffer[pixelPosition++] = this.gbcBGPalette[palette | tile[texel++]];
+          this.frameBuffer[pixelPosition++] = this.gbcBGPalette[palette | tile[texel++]];
+          this.frameBuffer[pixelPosition++] = this.gbcBGPalette[palette | tile[texel++]];
+          this.frameBuffer[pixelPosition++] = this.gbcBGPalette[palette | tile[texel++]];
+          this.frameBuffer[pixelPosition++] = this.gbcBGPalette[palette | tile[texel++]];
+          this.frameBuffer[pixelPosition++] = this.gbcBGPalette[palette | tile[texel++]];
+          this.frameBuffer[pixelPosition++] = this.gbcBGPalette[palette | tile[texel++]];
+          this.frameBuffer[pixelPosition++] = this.gbcBGPalette[palette | tile[texel]];
+        }
+        if (pixelPosition < pixelPositionEnd) {
+          chrCode = this.BGCHRBank1[++tileNumber];
+          if (chrCode < this.gfxBackgroundBankOffset) {
+            chrCode |= 0x100;
+          }
+          attrCode = this.BGCHRBank2[tileNumber];
+          tile = this.tileCache[((attrCode & 0x08) << 8) | ((attrCode & 0x60) << 4) | chrCode];
+          palette = (attrCode & 0x7) << 2;
+          switch (pixelPositionEnd - pixelPosition) {
+            case 7:
+              this.frameBuffer[pixelPosition + 6] = this.gbcBGPalette[palette | tile[tileYLine | 6]];
+            case 6:
+              this.frameBuffer[pixelPosition + 5] = this.gbcBGPalette[palette | tile[tileYLine | 5]];
+            case 5:
+              this.frameBuffer[pixelPosition + 4] = this.gbcBGPalette[palette | tile[tileYLine | 4]];
+            case 4:
+              this.frameBuffer[pixelPosition + 3] = this.gbcBGPalette[palette | tile[tileYLine | 3]];
+            case 3:
+              this.frameBuffer[pixelPosition + 2] = this.gbcBGPalette[palette | tile[tileYLine | 2]];
+            case 2:
+              this.frameBuffer[pixelPosition + 1] = this.gbcBGPalette[palette | tile[tileYLine | 1]];
+            case 1:
+              this.frameBuffer[pixelPosition] = this.gbcBGPalette[palette | tile[tileYLine]];
+          }
+        }
+      }
+    }
+  }
+}
+GameBoyCore.prototype.SpriteGBLayerRender = function (scanlineToRender) {
+  if (this.gfxSpriteShow) {                    //Are sprites enabled?
+    var lineAdjusted = scanlineToRender + 0x10;
+    var OAMAddress = 0xFE00;
+    var yoffset = 0;
+    var xcoord = 1;
+    var xCoordStart = 0;
+    var xCoordEnd = 0;
+    var attrCode = 0;
+    var palette = 0;
+    var tile = null;
+    var data = 0;
+    var spriteCount = 0;
+    var length = 0;
+    var currentPixel = 0;
+    var linePixel = 0;
+    //Clear our x-coord sort buffer:
+    while (xcoord < 168) {
+      this.sortBuffer[xcoord++] = 0xFF;
+    }
+    if (this.gfxSpriteNormalHeight) {
+      //Draw the visible sprites:
+      for (var length = this.findLowestSpriteDrawable(lineAdjusted, 0x7); spriteCount < length; ++spriteCount) {
+        OAMAddress = this.OAMAddressCache[spriteCount];
+        yoffset = (lineAdjusted - this.memory[OAMAddress]) << 3;
+        attrCode = this.memory[OAMAddress | 3];
+        palette = (attrCode & 0x10) >> 2;
+        tile = this.tileCache[((attrCode & 0x60) << 4) | this.memory[OAMAddress | 0x2]];
+        linePixel = xCoordStart = this.memory[OAMAddress | 1];
+        xCoordEnd = Math.min(168 - linePixel, 8);
+        xcoord = (linePixel > 7) ? 0 : (8 - linePixel);
+        for (currentPixel = this.pixelStart + ((linePixel > 8) ? (linePixel - 8) : 0); xcoord < xCoordEnd; ++xcoord, ++currentPixel, ++linePixel) {
+          if (this.sortBuffer[linePixel] > xCoordStart) {
+            if (this.frameBuffer[currentPixel] >= 0x2000000) {
+              data = tile[yoffset | xcoord];
+              if (data > 0) {
+                this.frameBuffer[currentPixel] = this.OBJPalette[palette | data];
+                this.sortBuffer[linePixel] = xCoordStart;
+              }
+            }
+            else if (this.frameBuffer[currentPixel] < 0x1000000) {
+              data = tile[yoffset | xcoord];
+              if (data > 0 && attrCode < 0x80) {
+                this.frameBuffer[currentPixel] = this.OBJPalette[palette | data];
+                this.sortBuffer[linePixel] = xCoordStart;
+              }
+            }
+          }
+        }
+      }
+    }
+    else {
+      //Draw the visible sprites:
+      for (var length = this.findLowestSpriteDrawable(lineAdjusted, 0xF); spriteCount < length; ++spriteCount) {
+        OAMAddress = this.OAMAddressCache[spriteCount];
+        yoffset = (lineAdjusted - this.memory[OAMAddress]) << 3;
+        attrCode = this.memory[OAMAddress | 3];
+        palette = (attrCode & 0x10) >> 2;
+        if ((attrCode & 0x40) == (0x40 & yoffset)) {
+          tile = this.tileCache[((attrCode & 0x60) << 4) | (this.memory[OAMAddress | 0x2] & 0xFE)];
+        }
+        else {
+          tile = this.tileCache[((attrCode & 0x60) << 4) | this.memory[OAMAddress | 0x2] | 1];
+        }
+        yoffset &= 0x3F;
+        linePixel = xCoordStart = this.memory[OAMAddress | 1];
+        xCoordEnd = Math.min(168 - linePixel, 8);
+        xcoord = (linePixel > 7) ? 0 : (8 - linePixel);
+        for (currentPixel = this.pixelStart + ((linePixel > 8) ? (linePixel - 8) : 0); xcoord < xCoordEnd; ++xcoord, ++currentPixel, ++linePixel) {
+          if (this.sortBuffer[linePixel] > xCoordStart) {
+            if (this.frameBuffer[currentPixel] >= 0x2000000) {
+              data = tile[yoffset | xcoord];
+              if (data > 0) {
+                this.frameBuffer[currentPixel] = this.OBJPalette[palette | data];
+                this.sortBuffer[linePixel] = xCoordStart;
+              }
+            }
+            else if (this.frameBuffer[currentPixel] < 0x1000000) {
+              data = tile[yoffset | xcoord];
+              if (data > 0 && attrCode < 0x80) {
+                this.frameBuffer[currentPixel] = this.OBJPalette[palette | data];
+                this.sortBuffer[linePixel] = xCoordStart;
+              }
+            }
+          }
+        }
+      }
+    }
+  }
+}
+GameBoyCore.prototype.findLowestSpriteDrawable = function (scanlineToRender, drawableRange) {
+  var address = 0xFE00;
+  var spriteCount = 0;
+  var diff = 0;
+  while (address < 0xFEA0 && spriteCount < 10) {
+    diff = scanlineToRender - this.memory[address];
+    if ((diff & drawableRange) == diff) {
+      this.OAMAddressCache[spriteCount++] = address;
+    }
+    address += 4;
+  }
+  return spriteCount;
+}
+GameBoyCore.prototype.SpriteGBCLayerRender = function (scanlineToRender) {
+  if (this.gfxSpriteShow) {                    //Are sprites enabled?
+    var OAMAddress = 0xFE00;
+    var lineAdjusted = scanlineToRender + 0x10;
+    var yoffset = 0;
+    var xcoord = 0;
+    var endX = 0;
+    var xCounter = 0;
+    var attrCode = 0;
+    var palette = 0;
+    var tile = null;
+    var data = 0;
+    var currentPixel = 0;
+    var spriteCount = 0;
+    if (this.gfxSpriteNormalHeight) {
+      for (; OAMAddress < 0xFEA0 && spriteCount < 10; OAMAddress += 4) {
+        yoffset = lineAdjusted - this.memory[OAMAddress];
+        if ((yoffset & 0x7) == yoffset) {
+          xcoord = this.memory[OAMAddress | 1] - 8;
+          endX = Math.min(160, xcoord + 8);
+          attrCode = this.memory[OAMAddress | 3];
+          palette = (attrCode & 7) << 2;
+          tile = this.tileCache[((attrCode & 0x08) << 8) | ((attrCode & 0x60) << 4) | this.memory[OAMAddress | 2]];
+          xCounter = (xcoord > 0) ? xcoord : 0;
+          xcoord -= yoffset << 3;
+          for (currentPixel = this.pixelStart + xCounter; xCounter < endX; ++xCounter, ++currentPixel) {
+            if (this.frameBuffer[currentPixel] >= 0x2000000) {
+              data = tile[xCounter - xcoord];
+              if (data > 0) {
+                this.frameBuffer[currentPixel] = this.gbcOBJPalette[palette | data];
+              }
+            }
+            else if (this.frameBuffer[currentPixel] < 0x1000000) {
+              data = tile[xCounter - xcoord];
+              if (data > 0 && attrCode < 0x80) {    //Don't optimize for attrCode, as LICM-capable JITs should optimize its checks.
+                this.frameBuffer[currentPixel] = this.gbcOBJPalette[palette | data];
+              }
+            }
+          }
+          ++spriteCount;
+        }
+      }
+    }
+    else {
+      for (; OAMAddress < 0xFEA0 && spriteCount < 10; OAMAddress += 4) {
+        yoffset = lineAdjusted - this.memory[OAMAddress];
+        if ((yoffset & 0xF) == yoffset) {
+          xcoord = this.memory[OAMAddress | 1] - 8;
+          endX = Math.min(160, xcoord + 8);
+          attrCode = this.memory[OAMAddress | 3];
+          palette = (attrCode & 7) << 2;
+          if ((attrCode & 0x40) == (0x40 & (yoffset << 3))) {
+            tile = this.tileCache[((attrCode & 0x08) << 8) | ((attrCode & 0x60) << 4) | (this.memory[OAMAddress | 0x2] & 0xFE)];
+          }
+          else {
+            tile = this.tileCache[((attrCode & 0x08) << 8) | ((attrCode & 0x60) << 4) | this.memory[OAMAddress | 0x2] | 1];
+          }
+          xCounter = (xcoord > 0) ? xcoord : 0;
+          xcoord -= (yoffset & 0x7) << 3;
+          for (currentPixel = this.pixelStart + xCounter; xCounter < endX; ++xCounter, ++currentPixel) {
+            if (this.frameBuffer[currentPixel] >= 0x2000000) {
+              data = tile[xCounter - xcoord];
+              if (data > 0) {
+                this.frameBuffer[currentPixel] = this.gbcOBJPalette[palette | data];
+              }
+            }
+            else if (this.frameBuffer[currentPixel] < 0x1000000) {
+              data = tile[xCounter - xcoord];
+              if (data > 0 && attrCode < 0x80) {    //Don't optimize for attrCode, as LICM-capable JITs should optimize its checks.
+                this.frameBuffer[currentPixel] = this.gbcOBJPalette[palette | data];
+              }
+            }
+          }
+          ++spriteCount;
+        }
+      }
+    }
+  }
+}
+//Generate only a single tile line for the GB tile cache mode:
+GameBoyCore.prototype.generateGBTileLine = function (address) {
+  var lineCopy = (this.memory[0x1 | address] << 8) | this.memory[0x9FFE & address];
+  var tileBlock = this.tileCache[(address & 0x1FF0) >> 4];
+  address = (address & 0xE) << 2;
+  tileBlock[address | 7] = ((lineCopy & 0x100) >> 7) | (lineCopy & 0x1);
+  tileBlock[address | 6] = ((lineCopy & 0x200) >> 8) | ((lineCopy & 0x2) >> 1);
+  tileBlock[address | 5] = ((lineCopy & 0x400) >> 9) | ((lineCopy & 0x4) >> 2);
+  tileBlock[address | 4] = ((lineCopy & 0x800) >> 10) | ((lineCopy & 0x8) >> 3);
+  tileBlock[address | 3] = ((lineCopy & 0x1000) >> 11) | ((lineCopy & 0x10) >> 4);
+  tileBlock[address | 2] = ((lineCopy & 0x2000) >> 12) | ((lineCopy & 0x20) >> 5);
+  tileBlock[address | 1] = ((lineCopy & 0x4000) >> 13) | ((lineCopy & 0x40) >> 6);
+  tileBlock[address] = ((lineCopy & 0x8000) >> 14) | ((lineCopy & 0x80) >> 7);
+}
+//Generate only a single tile line for the GBC tile cache mode (Bank 1):
+GameBoyCore.prototype.generateGBCTileLineBank1 = function (address) {
+  var lineCopy = (this.memory[0x1 | address] << 8) | this.memory[0x9FFE & address];
+  address &= 0x1FFE;
+  var tileBlock1 = this.tileCache[address >> 4];
+  var tileBlock2 = this.tileCache[0x200 | (address >> 4)];
+  var tileBlock3 = this.tileCache[0x400 | (address >> 4)];
+  var tileBlock4 = this.tileCache[0x600 | (address >> 4)];
+  address = (address & 0xE) << 2;
+  var addressFlipped = 0x38 - address;
+  tileBlock4[addressFlipped] = tileBlock2[address] = tileBlock3[addressFlipped | 7] = tileBlock1[address | 7] = ((lineCopy & 0x100) >> 7) | (lineCopy & 0x1);
+  tileBlock4[addressFlipped | 1] = tileBlock2[address | 1] = tileBlock3[addressFlipped | 6] = tileBlock1[address | 6] = ((lineCopy & 0x200) >> 8) | ((lineCopy & 0x2) >> 1);
+  tileBlock4[addressFlipped | 2] = tileBlock2[address | 2] = tileBlock3[addressFlipped | 5] = tileBlock1[address | 5] = ((lineCopy & 0x400) >> 9) | ((lineCopy & 0x4) >> 2);
+  tileBlock4[addressFlipped | 3] = tileBlock2[address | 3] = tileBlock3[addressFlipped | 4] = tileBlock1[address | 4] = ((lineCopy & 0x800) >> 10) | ((lineCopy & 0x8) >> 3);
+  tileBlock4[addressFlipped | 4] = tileBlock2[address | 4] = tileBlock3[addressFlipped | 3] = tileBlock1[address | 3] = ((lineCopy & 0x1000) >> 11) | ((lineCopy & 0x10) >> 4);
+  tileBlock4[addressFlipped | 5] = tileBlock2[address | 5] = tileBlock3[addressFlipped | 2] = tileBlock1[address | 2] = ((lineCopy & 0x2000) >> 12) | ((lineCopy & 0x20) >> 5);
+  tileBlock4[addressFlipped | 6] = tileBlock2[address | 6] = tileBlock3[addressFlipped | 1] = tileBlock1[address | 1] = ((lineCopy & 0x4000) >> 13) | ((lineCopy & 0x40) >> 6);
+  tileBlock4[addressFlipped | 7] = tileBlock2[address | 7] = tileBlock3[addressFlipped] = tileBlock1[address] = ((lineCopy & 0x8000) >> 14) | ((lineCopy & 0x80) >> 7);
+}
+//Generate all the flip combinations for a full GBC VRAM bank 1 tile:
+GameBoyCore.prototype.generateGBCTileBank1 = function (vramAddress) {
+  var address = vramAddress >> 4;
+  var tileBlock1 = this.tileCache[address];
+  var tileBlock2 = this.tileCache[0x200 | address];
+  var tileBlock3 = this.tileCache[0x400 | address];
+  var tileBlock4 = this.tileCache[0x600 | address];
+  var lineCopy = 0;
+  vramAddress |= 0x8000;
+  address = 0;
+  var addressFlipped = 56;
+  do {
+    lineCopy = (this.memory[0x1 | vramAddress] << 8) | this.memory[vramAddress];
+    tileBlock4[addressFlipped] = tileBlock2[address] = tileBlock3[addressFlipped | 7] = tileBlock1[address | 7] = ((lineCopy & 0x100) >> 7) | (lineCopy & 0x1);
+    tileBlock4[addressFlipped | 1] = tileBlock2[address | 1] = tileBlock3[addressFlipped | 6] = tileBlock1[address | 6] = ((lineCopy & 0x200) >> 8) | ((lineCopy & 0x2) >> 1);
+    tileBlock4[addressFlipped | 2] = tileBlock2[address | 2] = tileBlock3[addressFlipped | 5] = tileBlock1[address | 5] = ((lineCopy & 0x400) >> 9) | ((lineCopy & 0x4) >> 2);
+    tileBlock4[addressFlipped | 3] = tileBlock2[address | 3] = tileBlock3[addressFlipped | 4] = tileBlock1[address | 4] = ((lineCopy & 0x800) >> 10) | ((lineCopy & 0x8) >> 3);
+    tileBlock4[addressFlipped | 4] = tileBlock2[address | 4] = tileBlock3[addressFlipped | 3] = tileBlock1[address | 3] = ((lineCopy & 0x1000) >> 11) | ((lineCopy & 0x10) >> 4);
+    tileBlock4[addressFlipped | 5] = tileBlock2[address | 5] = tileBlock3[addressFlipped | 2] = tileBlock1[address | 2] = ((lineCopy & 0x2000) >> 12) | ((lineCopy & 0x20) >> 5);
+    tileBlock4[addressFlipped | 6] = tileBlock2[address | 6] = tileBlock3[addressFlipped | 1] = tileBlock1[address | 1] = ((lineCopy & 0x4000) >> 13) | ((lineCopy & 0x40) >> 6);
+    tileBlock4[addressFlipped | 7] = tileBlock2[address | 7] = tileBlock3[addressFlipped] = tileBlock1[address] = ((lineCopy & 0x8000) >> 14) | ((lineCopy & 0x80) >> 7);
+    address += 8;
+    addressFlipped -= 8;
+    vramAddress += 2;
+  } while (addressFlipped > -1);
+}
+//Generate only a single tile line for the GBC tile cache mode (Bank 2):
+GameBoyCore.prototype.generateGBCTileLineBank2 = function (address) {
+  var lineCopy = (this.VRAM[0x1 | address] << 8) | this.VRAM[0x1FFE & address];
+  var tileBlock1 = this.tileCache[0x800 | (address >> 4)];
+  var tileBlock2 = this.tileCache[0xA00 | (address >> 4)];
+  var tileBlock3 = this.tileCache[0xC00 | (address >> 4)];
+  var tileBlock4 = this.tileCache[0xE00 | (address >> 4)];
+  address = (address & 0xE) << 2;
+  var addressFlipped = 0x38 - address;
+  tileBlock4[addressFlipped] = tileBlock2[address] = tileBlock3[addressFlipped | 7] = tileBlock1[address | 7] = ((lineCopy & 0x100) >> 7) | (lineCopy & 0x1);
+  tileBlock4[addressFlipped | 1] = tileBlock2[address | 1] = tileBlock3[addressFlipped | 6] = tileBlock1[address | 6] = ((lineCopy & 0x200) >> 8) | ((lineCopy & 0x2) >> 1);
+  tileBlock4[addressFlipped | 2] = tileBlock2[address | 2] = tileBlock3[addressFlipped | 5] = tileBlock1[address | 5] = ((lineCopy & 0x400) >> 9) | ((lineCopy & 0x4) >> 2);
+  tileBlock4[addressFlipped | 3] = tileBlock2[address | 3] = tileBlock3[addressFlipped | 4] = tileBlock1[address | 4] = ((lineCopy & 0x800) >> 10) | ((lineCopy & 0x8) >> 3);
+  tileBlock4[addressFlipped | 4] = tileBlock2[address | 4] = tileBlock3[addressFlipped | 3] = tileBlock1[address | 3] = ((lineCopy & 0x1000) >> 11) | ((lineCopy & 0x10) >> 4);
+  tileBlock4[addressFlipped | 5] = tileBlock2[address | 5] = tileBlock3[addressFlipped | 2] = tileBlock1[address | 2] = ((lineCopy & 0x2000) >> 12) | ((lineCopy & 0x20) >> 5);
+  tileBlock4[addressFlipped | 6] = tileBlock2[address | 6] = tileBlock3[addressFlipped | 1] = tileBlock1[address | 1] = ((lineCopy & 0x4000) >> 13) | ((lineCopy & 0x40) >> 6);
+  tileBlock4[addressFlipped | 7] = tileBlock2[address | 7] = tileBlock3[addressFlipped] = tileBlock1[address] = ((lineCopy & 0x8000) >> 14) | ((lineCopy & 0x80) >> 7);
+}
+//Generate all the flip combinations for a full GBC VRAM bank 2 tile:
+GameBoyCore.prototype.generateGBCTileBank2 = function (vramAddress) {
+  var address = vramAddress >> 4;
+  var tileBlock1 = this.tileCache[0x800 | address];
+  var tileBlock2 = this.tileCache[0xA00 | address];
+  var tileBlock3 = this.tileCache[0xC00 | address];
+  var tileBlock4 = this.tileCache[0xE00 | address];
+  var lineCopy = 0;
+  address = 0;
+  var addressFlipped = 56;
+  do {
+    lineCopy = (this.VRAM[0x1 | vramAddress] << 8) | this.VRAM[vramAddress];
+    tileBlock4[addressFlipped] = tileBlock2[address] = tileBlock3[addressFlipped | 7] = tileBlock1[address | 7] = ((lineCopy & 0x100) >> 7) | (lineCopy & 0x1);
+    tileBlock4[addressFlipped | 1] = tileBlock2[address | 1] = tileBlock3[addressFlipped | 6] = tileBlock1[address | 6] = ((lineCopy & 0x200) >> 8) | ((lineCopy & 0x2) >> 1);
+    tileBlock4[addressFlipped | 2] = tileBlock2[address | 2] = tileBlock3[addressFlipped | 5] = tileBlock1[address | 5] = ((lineCopy & 0x400) >> 9) | ((lineCopy & 0x4) >> 2);
+    tileBlock4[addressFlipped | 3] = tileBlock2[address | 3] = tileBlock3[addressFlipped | 4] = tileBlock1[address | 4] = ((lineCopy & 0x800) >> 10) | ((lineCopy & 0x8) >> 3);
+    tileBlock4[addressFlipped | 4] = tileBlock2[address | 4] = tileBlock3[addressFlipped | 3] = tileBlock1[address | 3] = ((lineCopy & 0x1000) >> 11) | ((lineCopy & 0x10) >> 4);
+    tileBlock4[addressFlipped | 5] = tileBlock2[address | 5] = tileBlock3[addressFlipped | 2] = tileBlock1[address | 2] = ((lineCopy & 0x2000) >> 12) | ((lineCopy & 0x20) >> 5);
+    tileBlock4[addressFlipped | 6] = tileBlock2[address | 6] = tileBlock3[addressFlipped | 1] = tileBlock1[address | 1] = ((lineCopy & 0x4000) >> 13) | ((lineCopy & 0x40) >> 6);
+    tileBlock4[addressFlipped | 7] = tileBlock2[address | 7] = tileBlock3[addressFlipped] = tileBlock1[address] = ((lineCopy & 0x8000) >> 14) | ((lineCopy & 0x80) >> 7);
+    address += 8;
+    addressFlipped -= 8;
+    vramAddress += 2;
+  } while (addressFlipped > -1);
+}
+//Generate only a single tile line for the GB tile cache mode (OAM accessible range):
+GameBoyCore.prototype.generateGBOAMTileLine = function (address) {
+  var lineCopy = (this.memory[0x1 | address] << 8) | this.memory[0x9FFE & address];
+  address &= 0x1FFE;
+  var tileBlock1 = this.tileCache[address >> 4];
+  var tileBlock2 = this.tileCache[0x200 | (address >> 4)];
+  var tileBlock3 = this.tileCache[0x400 | (address >> 4)];
+  var tileBlock4 = this.tileCache[0x600 | (address >> 4)];
+  address = (address & 0xE) << 2;
+  var addressFlipped = 0x38 - address;
+  tileBlock4[addressFlipped] = tileBlock2[address] = tileBlock3[addressFlipped | 7] = tileBlock1[address | 7] = ((lineCopy & 0x100) >> 7) | (lineCopy & 0x1);
+  tileBlock4[addressFlipped | 1] = tileBlock2[address | 1] = tileBlock3[addressFlipped | 6] = tileBlock1[address | 6] = ((lineCopy & 0x200) >> 8) | ((lineCopy & 0x2) >> 1);
+  tileBlock4[addressFlipped | 2] = tileBlock2[address | 2] = tileBlock3[addressFlipped | 5] = tileBlock1[address | 5] = ((lineCopy & 0x400) >> 9) | ((lineCopy & 0x4) >> 2);
+  tileBlock4[addressFlipped | 3] = tileBlock2[address | 3] = tileBlock3[addressFlipped | 4] = tileBlock1[address | 4] = ((lineCopy & 0x800) >> 10) | ((lineCopy & 0x8) >> 3);
+  tileBlock4[addressFlipped | 4] = tileBlock2[address | 4] = tileBlock3[addressFlipped | 3] = tileBlock1[address | 3] = ((lineCopy & 0x1000) >> 11) | ((lineCopy & 0x10) >> 4);
+  tileBlock4[addressFlipped | 5] = tileBlock2[address | 5] = tileBlock3[addressFlipped | 2] = tileBlock1[address | 2] = ((lineCopy & 0x2000) >> 12) | ((lineCopy & 0x20) >> 5);
+  tileBlock4[addressFlipped | 6] = tileBlock2[address | 6] = tileBlock3[addressFlipped | 1] = tileBlock1[address | 1] = ((lineCopy & 0x4000) >> 13) | ((lineCopy & 0x40) >> 6);
+  tileBlock4[addressFlipped | 7] = tileBlock2[address | 7] = tileBlock3[addressFlipped] = tileBlock1[address] = ((lineCopy & 0x8000) >> 14) | ((lineCopy & 0x80) >> 7);
+}
+GameBoyCore.prototype.graphicsJIT = function () {
+  if (this.LCDisOn) {
+    this.totalLinesPassed = 0;      //Mark frame for ensuring a JIT pass for the next framebuffer output.
+    this.graphicsJITScanlineGroup();
+  }
+}
+GameBoyCore.prototype.graphicsJITVBlank = function () {
+  //JIT the graphics to v-blank framing:
+  this.totalLinesPassed += this.queuedScanLines;
+  this.graphicsJITScanlineGroup();
+}
+GameBoyCore.prototype.graphicsJITScanlineGroup = function () {
+  //Normal rendering JIT, where we try to do groups of scanlines at once:
+  while (this.queuedScanLines > 0) {
+    this.renderScanLine(this.lastUnrenderedLine);
+    if (this.lastUnrenderedLine < 143) {
+      ++this.lastUnrenderedLine;
+    }
+    else {
+      this.lastUnrenderedLine = 0;
+    }
+    --this.queuedScanLines;
+  }
+}
+GameBoyCore.prototype.incrementScanLineQueue = function () {
+  if (this.queuedScanLines < 144) {
+    ++this.queuedScanLines;
+  }
+  else {
+    this.currentX = 0;
+    this.midScanlineOffset = -1;
+    if (this.lastUnrenderedLine < 143) {
+      ++this.lastUnrenderedLine;
+    }
+    else {
+      this.lastUnrenderedLine = 0;
+    }
+  }
+}
+GameBoyCore.prototype.midScanLineJIT = function () {
+  this.graphicsJIT();
+  this.renderMidScanLine();
+}
+//Check for the highest priority IRQ to fire:
+GameBoyCore.prototype.launchIRQ = function () {
+  var bitShift = 0;
+  var testbit = 1;
+  do {
+    //Check to see if an interrupt is enabled AND requested.
+    if ((testbit & this.IRQLineMatched) == testbit) {
+      this.IME = false;            //Reset the interrupt enabling.
+      this.interruptsRequested -= testbit;  //Reset the interrupt request.
+      this.IRQLineMatched = 0;        //Reset the IRQ assertion.
+      //Interrupts have a certain clock cycle length:
+      this.CPUTicks = 20;
+      //Set the stack pointer to the current program counter value:
+      this.stackPointer = (this.stackPointer - 1) & 0xFFFF;
+      this.memoryWriter[this.stackPointer](this, this.stackPointer, this.programCounter >> 8);
+      this.stackPointer = (this.stackPointer - 1) & 0xFFFF;
+      this.memoryWriter[this.stackPointer](this, this.stackPointer, this.programCounter & 0xFF);
+      //Set the program counter to the interrupt's address:
+      this.programCounter = 0x40 | (bitShift << 3);
+      //Clock the core for mid-instruction updates:
+      this.updateCore();
+      return;                  //We only want the highest priority interrupt.
+    }
+    testbit = 1 << ++bitShift;
+  } while (bitShift < 5);
+}
+/*
+  Check for IRQs to be fired while not in HALT:
+*/
+GameBoyCore.prototype.checkIRQMatching = function () {
+  if (this.IME) {
+    this.IRQLineMatched = this.interruptsEnabled & this.interruptsRequested & 0x1F;
+  }
+}
+/*
+  Handle the HALT opcode by predicting all IRQ cases correctly,
+  then selecting the next closest IRQ firing from the prediction to
+  clock up to. This prevents hacky looping that doesn't predict, but
+  instead just clocks through the core update procedure by one which
+  is very slow. Not many emulators do this because they have to cover
+  all the IRQ prediction cases and they usually get them wrong.
+*/
+GameBoyCore.prototype.calculateHALTPeriod = function () {
+  //Initialize our variables and start our prediction:
+  if (!this.halt) {
+    this.halt = true;
+    var currentClocks = -1;
+    var temp_var = 0;
+    if (this.LCDisOn) {
+      //If the LCD is enabled, then predict the LCD IRQs enabled:
+      if ((this.interruptsEnabled & 0x1) == 0x1) {
+        currentClocks = ((456 * (((this.modeSTAT == 1) ? 298 : 144) - this.actualScanLine)) - this.LCDTicks) << this.doubleSpeedShifter;
+      }
+      if ((this.interruptsEnabled & 0x2) == 0x2) {
+        if (this.mode0TriggerSTAT) {
+          temp_var = (this.clocksUntilMode0() - this.LCDTicks) << this.doubleSpeedShifter;
+          if (temp_var <= currentClocks || currentClocks == -1) {
+            currentClocks = temp_var;
+          }
+        }
+        if (this.mode1TriggerSTAT && (this.interruptsEnabled & 0x1) == 0) {
+          temp_var = ((456 * (((this.modeSTAT == 1) ? 298 : 144) - this.actualScanLine)) - this.LCDTicks) << this.doubleSpeedShifter;
+          if (temp_var <= currentClocks || currentClocks == -1) {
+            currentClocks = temp_var;
+          }
+        }
+        if (this.mode2TriggerSTAT) {
+          temp_var = (((this.actualScanLine >= 143) ? (456 * (154 - this.actualScanLine)) : 456) - this.LCDTicks) << this.doubleSpeedShifter;
+          if (temp_var <= currentClocks || currentClocks == -1) {
+            currentClocks = temp_var;
+          }
+        }
+        if (this.LYCMatchTriggerSTAT && this.memory[0xFF45] <= 153) {
+          temp_var = (this.clocksUntilLYCMatch() - this.LCDTicks) << this.doubleSpeedShifter;
+          if (temp_var <= currentClocks || currentClocks == -1) {
+            currentClocks = temp_var;
+          }
+        }
+      }
+    }
+    if (this.TIMAEnabled && (this.interruptsEnabled & 0x4) == 0x4) {
+      //CPU timer IRQ prediction:
+      temp_var = ((0x100 - this.memory[0xFF05]) * this.TACClocker) - this.timerTicks;
+      if (temp_var <= currentClocks || currentClocks == -1) {
+        currentClocks = temp_var;
+      }
+    }
+    if (this.serialTimer > 0 && (this.interruptsEnabled & 0x8) == 0x8) {
+      //Serial IRQ prediction:
+      if (this.serialTimer <= currentClocks || currentClocks == -1) {
+        currentClocks = this.serialTimer;
+      }
+    }
+  }
+  else {
+    var currentClocks = this.remainingClocks;
+  }
+  var maxClocks = (this.CPUCyclesTotal - this.emulatorTicks) << this.doubleSpeedShifter;
+  if (currentClocks >= 0) {
+    if (currentClocks <= maxClocks) {
+      //Exit out of HALT normally:
+      this.CPUTicks = Math.max(currentClocks, this.CPUTicks);
+      this.updateCoreFull();
+      this.halt = false;
+      this.CPUTicks = 0;
+    }
+    else {
+      //Still in HALT, clock only up to the clocks specified per iteration:
+      this.CPUTicks = Math.max(maxClocks, this.CPUTicks);
+      this.remainingClocks = currentClocks - this.CPUTicks;
+    }
+  }
+  else {
+    //Still in HALT, clock only up to the clocks specified per iteration:
+    //Will stay in HALT forever (Stuck in HALT forever), but the APU and LCD are still clocked, so don't pause:
+    this.CPUTicks += maxClocks;
+  }
+}
+//Memory Reading:
+GameBoyCore.prototype.memoryRead = function (address) {
+  //Act as a wrapper for reading the returns from the compiled jumps to memory.
+  return this.memoryReader[address](this, address);  //This seems to be faster than the usual if/else.
+}
+GameBoyCore.prototype.memoryHighRead = function (address) {
+  //Act as a wrapper for reading the returns from the compiled jumps to memory.
+  return this.memoryHighReader[address](this, address);  //This seems to be faster than the usual if/else.
+}
+GameBoyCore.prototype.memoryReadJumpCompile = function () {
+  //Faster in some browsers, since we are doing less conditionals overall by implementing them in advance.
+  for (var index = 0x0000; index <= 0xFFFF; index++) {
+    if (index < 0x4000) {
+      this.memoryReader[index] = this.memoryReadNormal;
+    }
+    else if (index < 0x8000) {
+      this.memoryReader[index] = this.memoryReadROM;
+    }
+    else if (index < 0x9800) {
+      this.memoryReader[index] = (this.cGBC) ? this.VRAMDATAReadCGBCPU : this.VRAMDATAReadDMGCPU;
+    }
+    else if (index < 0xA000) {
+      this.memoryReader[index] = (this.cGBC) ? this.VRAMCHRReadCGBCPU : this.VRAMCHRReadDMGCPU;
+    }
+    else if (index >= 0xA000 && index < 0xC000) {
+      if ((this.numRAMBanks == 1 / 16 && index < 0xA200) || this.numRAMBanks >= 1) {
+        if (this.cMBC7) {
+          this.memoryReader[index] = this.memoryReadMBC7;
+        }
+        else if (!this.cMBC3) {
+          this.memoryReader[index] = this.memoryReadMBC;
+        }
+        else {
+          //MBC3 RTC + RAM:
+          this.memoryReader[index] = this.memoryReadMBC3;
+        }
+      }
+      else {
+        this.memoryReader[index] = this.memoryReadBAD;
+      }
+    }
+    else if (index >= 0xC000 && index < 0xE000) {
+      if (!this.cGBC || index < 0xD000) {
+        this.memoryReader[index] = this.memoryReadNormal;
+      }
+      else {
+        this.memoryReader[index] = this.memoryReadGBCMemory;
+      }
+    }
+    else if (index >= 0xE000 && index < 0xFE00) {
+      if (!this.cGBC || index < 0xF000) {
+        this.memoryReader[index] = this.memoryReadECHONormal;
+      }
+      else {
+        this.memoryReader[index] = this.memoryReadECHOGBCMemory;
+      }
+    }
+    else if (index < 0xFEA0) {
+      this.memoryReader[index] = this.memoryReadOAM;
+    }
+    else if (this.cGBC && index >= 0xFEA0 && index < 0xFF00) {
+      this.memoryReader[index] = this.memoryReadNormal;
+    }
+    else if (index >= 0xFF00) {
+      switch (index) {
+        case 0xFF00:
+          //JOYPAD:
+          this.memoryHighReader[0] = this.memoryReader[0xFF00] = function (parentObj, address) {
+            return 0xC0 | parentObj.memory[0xFF00];  //Top nibble returns as set.
+          }
+          break;
+        case 0xFF01:
+          //SB
+          this.memoryHighReader[0x01] = this.memoryReader[0xFF01] = function (parentObj, address) {
+            return (parentObj.memory[0xFF02] < 0x80) ? parentObj.memory[0xFF01] : 0xFF;
+          }
+          break;
+        case 0xFF02:
+          //SC
+          if (this.cGBC) {
+            this.memoryHighReader[0x02] = this.memoryReader[0xFF02] = function (parentObj, address) {
+              return ((parentObj.serialTimer <= 0) ? 0x7C : 0xFC) | parentObj.memory[0xFF02];
+            }
+          }
+          else {
+            this.memoryHighReader[0x02] = this.memoryReader[0xFF02] = function (parentObj, address) {
+              return ((parentObj.serialTimer <= 0) ? 0x7E : 0xFE) | parentObj.memory[0xFF02];
+            }
+          }
+          break;
+        case 0xFF04:
+          //DIV
+          this.memoryHighReader[0x04] = this.memoryReader[0xFF04] = function (parentObj, address) {
+            parentObj.memory[0xFF04] = (parentObj.memory[0xFF04] + (parentObj.DIVTicks >> 8)) & 0xFF;
+            parentObj.DIVTicks &= 0xFF;
+            return parentObj.memory[0xFF04];
+
+          }
+          break;
+        case 0xFF07:
+          this.memoryHighReader[0x07] = this.memoryReader[0xFF07] = function (parentObj, address) {
+            return 0xF8 | parentObj.memory[0xFF07];
+          }
+          break;
+        case 0xFF0F:
+          //IF
+          this.memoryHighReader[0x0F] = this.memoryReader[0xFF0F] = function (parentObj, address) {
+            return 0xE0 | parentObj.interruptsRequested;
+          }
+          break;
+        case 0xFF10:
+          this.memoryHighReader[0x10] = this.memoryReader[0xFF10] = function (parentObj, address) {
+            return 0x80 | parentObj.memory[0xFF10];
+          }
+          break;
+        case 0xFF11:
+          this.memoryHighReader[0x11] = this.memoryReader[0xFF11] = function (parentObj, address) {
+            return 0x3F | parentObj.memory[0xFF11];
+          }
+          break;
+        case 0xFF13:
+          this.memoryHighReader[0x13] = this.memoryReader[0xFF13] = this.memoryReadBAD;
+          break;
+        case 0xFF14:
+          this.memoryHighReader[0x14] = this.memoryReader[0xFF14] = function (parentObj, address) {
+            return 0xBF | parentObj.memory[0xFF14];
+          }
+          break;
+        case 0xFF16:
+          this.memoryHighReader[0x16] = this.memoryReader[0xFF16] = function (parentObj, address) {
+            return 0x3F | parentObj.memory[0xFF16];
+          }
+          break;
+        case 0xFF18:
+          this.memoryHighReader[0x18] = this.memoryReader[0xFF18] = this.memoryReadBAD;
+          break;
+        case 0xFF19:
+          this.memoryHighReader[0x19] = this.memoryReader[0xFF19] = function (parentObj, address) {
+            return 0xBF | parentObj.memory[0xFF19];
+          }
+          break;
+        case 0xFF1A:
+          this.memoryHighReader[0x1A] = this.memoryReader[0xFF1A] = function (parentObj, address) {
+            return 0x7F | parentObj.memory[0xFF1A];
+          }
+          break;
+        case 0xFF1B:
+          this.memoryHighReader[0x1B] = this.memoryReader[0xFF1B] = this.memoryReadBAD;
+          break;
+        case 0xFF1C:
+          this.memoryHighReader[0x1C] = this.memoryReader[0xFF1C] = function (parentObj, address) {
+            return 0x9F | parentObj.memory[0xFF1C];
+          }
+          break;
+        case 0xFF1D:
+          this.memoryHighReader[0x1D] = this.memoryReader[0xFF1D] = function (parentObj, address) {
+            return 0xFF;
+          }
+          break;
+        case 0xFF1E:
+          this.memoryHighReader[0x1E] = this.memoryReader[0xFF1E] = function (parentObj, address) {
+            return 0xBF | parentObj.memory[0xFF1E];
+          }
+          break;
+        case 0xFF1F:
+        case 0xFF20:
+          this.memoryHighReader[index & 0xFF] = this.memoryReader[index] = this.memoryReadBAD;
+          break;
+        case 0xFF23:
+          this.memoryHighReader[0x23] = this.memoryReader[0xFF23] = function (parentObj, address) {
+            return 0xBF | parentObj.memory[0xFF23];
+          }
+          break;
+        case 0xFF26:
+          this.memoryHighReader[0x26] = this.memoryReader[0xFF26] = function (parentObj, address) {
+            parentObj.audioJIT();
+            return 0x70 | parentObj.memory[0xFF26];
+          }
+          break;
+        case 0xFF27:
+        case 0xFF28:
+        case 0xFF29:
+        case 0xFF2A:
+        case 0xFF2B:
+        case 0xFF2C:
+        case 0xFF2D:
+        case 0xFF2E:
+        case 0xFF2F:
+          this.memoryHighReader[index & 0xFF] = this.memoryReader[index] = this.memoryReadBAD;
+          break;
+        case 0xFF30:
+        case 0xFF31:
+        case 0xFF32:
+        case 0xFF33:
+        case 0xFF34:
+        case 0xFF35:
+        case 0xFF36:
+        case 0xFF37:
+        case 0xFF38:
+        case 0xFF39:
+        case 0xFF3A:
+        case 0xFF3B:
+        case 0xFF3C:
+        case 0xFF3D:
+        case 0xFF3E:
+        case 0xFF3F:
+          this.memoryReader[index] = function (parentObj, address) {
+            return (parentObj.channel3canPlay) ? parentObj.memory[0xFF00 | (parentObj.channel3lastSampleLookup >> 1)] : parentObj.memory[address];
+          }
+          this.memoryHighReader[index & 0xFF] = function (parentObj, address) {
+            return (parentObj.channel3canPlay) ? parentObj.memory[0xFF00 | (parentObj.channel3lastSampleLookup >> 1)] : parentObj.memory[0xFF00 | address];
+          }
+          break;
+        case 0xFF41:
+          this.memoryHighReader[0x41] = this.memoryReader[0xFF41] = function (parentObj, address) {
+            return 0x80 | parentObj.memory[0xFF41] | parentObj.modeSTAT;
+          }
+          break;
+        case 0xFF42:
+          this.memoryHighReader[0x42] = this.memoryReader[0xFF42] = function (parentObj, address) {
+            return parentObj.backgroundY;
+          }
+          break;
+        case 0xFF43:
+          this.memoryHighReader[0x43] = this.memoryReader[0xFF43] = function (parentObj, address) {
+            return parentObj.backgroundX;
+          }
+          break;
+        case 0xFF44:
+          this.memoryHighReader[0x44] = this.memoryReader[0xFF44] = function (parentObj, address) {
+            return ((parentObj.LCDisOn) ? parentObj.memory[0xFF44] : 0);
+          }
+          break;
+        case 0xFF4A:
+          //WY
+          this.memoryHighReader[0x4A] = this.memoryReader[0xFF4A] = function (parentObj, address) {
+            return parentObj.windowY;
+          }
+          break;
+        case 0xFF4F:
+          this.memoryHighReader[0x4F] = this.memoryReader[0xFF4F] = function (parentObj, address) {
+            return parentObj.currVRAMBank;
+          }
+          break;
+        case 0xFF55:
+          if (this.cGBC) {
+            this.memoryHighReader[0x55] = this.memoryReader[0xFF55] = function (parentObj, address) {
+              if (!parentObj.LCDisOn && parentObj.hdmaRunning) {  //Undocumented behavior alert: HDMA becomes GDMA when LCD is off (Worms Armageddon Fix).
+                //DMA
+                parentObj.DMAWrite((parentObj.memory[0xFF55] & 0x7F) + 1);
+                parentObj.memory[0xFF55] = 0xFF;  //Transfer completed.
+                parentObj.hdmaRunning = false;
+              }
+              return parentObj.memory[0xFF55];
+            }
+          }
+          else {
+            this.memoryReader[0xFF55] = this.memoryReadNormal;
+            this.memoryHighReader[0x55] = this.memoryHighReadNormal;
+          }
+          break;
+        case 0xFF56:
+          if (this.cGBC) {
+            this.memoryHighReader[0x56] = this.memoryReader[0xFF56] = function (parentObj, address) {
+              //Return IR "not connected" status:
+              return 0x3C | ((parentObj.memory[0xFF56] >= 0xC0) ? (0x2 | (parentObj.memory[0xFF56] & 0xC1)) : (parentObj.memory[0xFF56] & 0xC3));
+            }
+          }
+          else {
+            this.memoryReader[0xFF56] = this.memoryReadNormal;
+            this.memoryHighReader[0x56] = this.memoryHighReadNormal;
+          }
+          break;
+        case 0xFF6C:
+          if (this.cGBC) {
+            this.memoryHighReader[0x6C] = this.memoryReader[0xFF6C] = function (parentObj, address) {
+              return 0xFE | parentObj.memory[0xFF6C];
+            }
+          }
+          else {
+            this.memoryHighReader[0x6C] = this.memoryReader[0xFF6C] = this.memoryReadBAD;
+          }
+          break;
+        case 0xFF70:
+          if (this.cGBC) {
+            //SVBK
+            this.memoryHighReader[0x70] = this.memoryReader[0xFF70] = function (parentObj, address) {
+              return 0x40 | parentObj.memory[0xFF70];
+            }
+          }
+          else {
+            this.memoryHighReader[0x70] = this.memoryReader[0xFF70] = this.memoryReadBAD;
+          }
+          break;
+        case 0xFF75:
+          this.memoryHighReader[0x75] = this.memoryReader[0xFF75] = function (parentObj, address) {
+            return 0x8F | parentObj.memory[0xFF75];
+          }
+          break;
+        case 0xFF76:
+        case 0xFF77:
+          this.memoryHighReader[index & 0xFF] = this.memoryReader[index] = function (parentObj, address) {
+            return 0;
+          }
+          break;
+        case 0xFFFF:
+          //IE
+          this.memoryHighReader[0xFF] = this.memoryReader[0xFFFF] = function (parentObj, address) {
+            return parentObj.interruptsEnabled;
+          }
+          break;
+        default:
+          this.memoryReader[index] = this.memoryReadNormal;
+          this.memoryHighReader[index & 0xFF] = this.memoryHighReadNormal;
+      }
+    }
+    else {
+      this.memoryReader[index] = this.memoryReadBAD;
+    }
+  }
+}
+GameBoyCore.prototype.memoryReadNormal = function (parentObj, address) {
+  return parentObj.memory[address];
+}
+GameBoyCore.prototype.memoryHighReadNormal = function (parentObj, address) {
+  return parentObj.memory[0xFF00 | address];
+}
+GameBoyCore.prototype.memoryReadROM = function (parentObj, address) {
+  return parentObj.ROM[parentObj.currentROMBank + address];
+}
+GameBoyCore.prototype.memoryReadMBC = function (parentObj, address) {
+  //Switchable RAM
+  if (parentObj.MBCRAMBanksEnabled || settings[10]) {
+    return parentObj.MBCRam[address + parentObj.currMBCRAMBankPosition];
+  }
+  //cout("Reading from disabled RAM.", 1);
+  return 0xFF;
+}
+GameBoyCore.prototype.memoryReadMBC7 = function (parentObj, address) {
+  //Switchable RAM
+  if (parentObj.MBCRAMBanksEnabled || settings[10]) {
+    switch (address) {
+      case 0xA000:
+      case 0xA060:
+      case 0xA070:
+        return 0;
+      case 0xA080:
+        //TODO: Gyro Control Register
+        return 0;
+      case 0xA050:
+        //Y High Byte
+        return parentObj.highY;
+      case 0xA040:
+        //Y Low Byte
+        return parentObj.lowY;
+      case 0xA030:
+        //X High Byte
+        return parentObj.highX;
+      case 0xA020:
+        //X Low Byte:
+        return parentObj.lowX;
+      default:
+        return parentObj.MBCRam[address + parentObj.currMBCRAMBankPosition];
+    }
+  }
+  //cout("Reading from disabled RAM.", 1);
+  return 0xFF;
+}
+GameBoyCore.prototype.memoryReadMBC3 = function (parentObj, address) {
+  //Switchable RAM
+  if (parentObj.MBCRAMBanksEnabled || settings[10]) {
+    switch (parentObj.currMBCRAMBank) {
+      case 0x00:
+      case 0x01:
+      case 0x02:
+      case 0x03:
+        return parentObj.MBCRam[address + parentObj.currMBCRAMBankPosition];
+        break;
+      case 0x08:
+        return parentObj.latchedSeconds;
+        break;
+      case 0x09:
+        return parentObj.latchedMinutes;
+        break;
+      case 0x0A:
+        return parentObj.latchedHours;
+        break;
+      case 0x0B:
+        return parentObj.latchedLDays;
+        break;
+      case 0x0C:
+        return (((parentObj.RTCDayOverFlow) ? 0x80 : 0) + ((parentObj.RTCHALT) ? 0x40 : 0)) + parentObj.latchedHDays;
+    }
+  }
+  //cout("Reading from invalid or disabled RAM.", 1);
+  return 0xFF;
+}
+GameBoyCore.prototype.memoryReadGBCMemory = function (parentObj, address) {
+  return parentObj.GBCMemory[address + parentObj.gbcRamBankPosition];
+}
+GameBoyCore.prototype.memoryReadOAM = function (parentObj, address) {
+  return (parentObj.modeSTAT > 1) ?  0xFF : parentObj.memory[address];
+}
+GameBoyCore.prototype.memoryReadECHOGBCMemory = function (parentObj, address) {
+  return parentObj.GBCMemory[address + parentObj.gbcRamBankPositionECHO];
+}
+GameBoyCore.prototype.memoryReadECHONormal = function (parentObj, address) {
+  return parentObj.memory[address - 0x2000];
+}
+GameBoyCore.prototype.memoryReadBAD = function (parentObj, address) {
+  return 0xFF;
+}
+GameBoyCore.prototype.VRAMDATAReadCGBCPU = function (parentObj, address) {
+  //CPU Side Reading The VRAM (Optimized for GameBoy Color)
+  return (parentObj.modeSTAT > 2) ? 0xFF : ((parentObj.currVRAMBank == 0) ? parentObj.memory[address] : parentObj.VRAM[address & 0x1FFF]);
+}
+GameBoyCore.prototype.VRAMDATAReadDMGCPU = function (parentObj, address) {
+  //CPU Side Reading The VRAM (Optimized for classic GameBoy)
+  return (parentObj.modeSTAT > 2) ? 0xFF : parentObj.memory[address];
+}
+GameBoyCore.prototype.VRAMCHRReadCGBCPU = function (parentObj, address) {
+  //CPU Side Reading the Character Data Map:
+  return (parentObj.modeSTAT > 2) ? 0xFF : parentObj.BGCHRCurrentBank[address & 0x7FF];
+}
+GameBoyCore.prototype.VRAMCHRReadDMGCPU = function (parentObj, address) {
+  //CPU Side Reading the Character Data Map:
+  return (parentObj.modeSTAT > 2) ? 0xFF : parentObj.BGCHRBank1[address & 0x7FF];
+}
+GameBoyCore.prototype.setCurrentMBC1ROMBank = function () {
+  //Read the cartridge ROM data from RAM memory:
+  switch (this.ROMBank1offs) {
+    case 0x00:
+    case 0x20:
+    case 0x40:
+    case 0x60:
+      //Bank calls for 0x00, 0x20, 0x40, and 0x60 are really for 0x01, 0x21, 0x41, and 0x61.
+      this.currentROMBank = (this.ROMBank1offs % this.ROMBankEdge) << 14;
+      break;
+    default:
+      this.currentROMBank = ((this.ROMBank1offs % this.ROMBankEdge) - 1) << 14;
+  }
+}
+GameBoyCore.prototype.setCurrentMBC2AND3ROMBank = function () {
+  //Read the cartridge ROM data from RAM memory:
+  //Only map bank 0 to bank 1 here (MBC2 is like MBC1, but can only do 16 banks, so only the bank 0 quirk appears for MBC2):
+  this.currentROMBank = Math.max((this.ROMBank1offs % this.ROMBankEdge) - 1, 0) << 14;
+}
+GameBoyCore.prototype.setCurrentMBC5ROMBank = function () {
+  //Read the cartridge ROM data from RAM memory:
+  this.currentROMBank = ((this.ROMBank1offs % this.ROMBankEdge) - 1) << 14;
+}
+//Memory Writing:
+GameBoyCore.prototype.memoryWrite = function (address, data) {
+  //Act as a wrapper for writing by compiled jumps to specific memory writing functions.
+  this.memoryWriter[address](this, address, data);
+}
+//0xFFXX fast path:
+GameBoyCore.prototype.memoryHighWrite = function (address, data) {
+  //Act as a wrapper for writing by compiled jumps to specific memory writing functions.
+  this.memoryHighWriter[address](this, address, data);
+}
+GameBoyCore.prototype.memoryWriteJumpCompile = function () {
+  //Faster in some browsers, since we are doing less conditionals overall by implementing them in advance.
+  for (var index = 0x0000; index <= 0xFFFF; index++) {
+    if (index < 0x8000) {
+      if (this.cMBC1) {
+        if (index < 0x2000) {
+          this.memoryWriter[index] = this.MBCWriteEnable;
+        }
+        else if (index < 0x4000) {
+          this.memoryWriter[index] = this.MBC1WriteROMBank;
+        }
+        else if (index < 0x6000) {
+          this.memoryWriter[index] = this.MBC1WriteRAMBank;
+        }
+        else {
+          this.memoryWriter[index] = this.MBC1WriteType;
+        }
+      }
+      else if (this.cMBC2) {
+        if (index < 0x1000) {
+          this.memoryWriter[index] = this.MBCWriteEnable;
+        }
+        else if (index >= 0x2100 && index < 0x2200) {
+          this.memoryWriter[index] = this.MBC2WriteROMBank;
+        }
+        else {
+          this.memoryWriter[index] = this.cartIgnoreWrite;
+        }
+      }
+      else if (this.cMBC3) {
+        if (index < 0x2000) {
+          this.memoryWriter[index] = this.MBCWriteEnable;
+        }
+        else if (index < 0x4000) {
+          this.memoryWriter[index] = this.MBC3WriteROMBank;
+        }
+        else if (index < 0x6000) {
+          this.memoryWriter[index] = this.MBC3WriteRAMBank;
+        }
+        else {
+          this.memoryWriter[index] = this.MBC3WriteRTCLatch;
+        }
+      }
+      else if (this.cMBC5 || this.cRUMBLE || this.cMBC7) {
+        if (index < 0x2000) {
+          this.memoryWriter[index] = this.MBCWriteEnable;
+        }
+        else if (index < 0x3000) {
+          this.memoryWriter[index] = this.MBC5WriteROMBankLow;
+        }
+        else if (index < 0x4000) {
+          this.memoryWriter[index] = this.MBC5WriteROMBankHigh;
+        }
+        else if (index < 0x6000) {
+          this.memoryWriter[index] = (this.cRUMBLE) ? this.RUMBLEWriteRAMBank : this.MBC5WriteRAMBank;
+        }
+        else {
+          this.memoryWriter[index] = this.cartIgnoreWrite;
+        }
+      }
+      else if (this.cHuC3) {
+        if (index < 0x2000) {
+          this.memoryWriter[index] = this.MBCWriteEnable;
+        }
+        else if (index < 0x4000) {
+          this.memoryWriter[index] = this.MBC3WriteROMBank;
+        }
+        else if (index < 0x6000) {
+          this.memoryWriter[index] = this.HuC3WriteRAMBank;
+        }
+        else {
+          this.memoryWriter[index] = this.cartIgnoreWrite;
+        }
+      }
+      else {
+        this.memoryWriter[index] = this.cartIgnoreWrite;
+      }
+    }
+    else if (index < 0x9000) {
+      this.memoryWriter[index] = (this.cGBC) ? this.VRAMGBCDATAWrite : this.VRAMGBDATAWrite;
+    }
+    else if (index < 0x9800) {
+      this.memoryWriter[index] = (this.cGBC) ? this.VRAMGBCDATAWrite : this.VRAMGBDATAUpperWrite;
+    }
+    else if (index < 0xA000) {
+      this.memoryWriter[index] = (this.cGBC) ? this.VRAMGBCCHRMAPWrite : this.VRAMGBCHRMAPWrite;
+    }
+    else if (index < 0xC000) {
+      if ((this.numRAMBanks == 1 / 16 && index < 0xA200) || this.numRAMBanks >= 1) {
+        if (!this.cMBC3) {
+          this.memoryWriter[index] = this.memoryWriteMBCRAM;
+        }
+        else {
+          //MBC3 RTC + RAM:
+          this.memoryWriter[index] = this.memoryWriteMBC3RAM;
+        }
+      }
+      else {
+        this.memoryWriter[index] = this.cartIgnoreWrite;
+      }
+    }
+    else if (index < 0xE000) {
+      if (this.cGBC && index >= 0xD000) {
+        this.memoryWriter[index] = this.memoryWriteGBCRAM;
+      }
+      else {
+        this.memoryWriter[index] = this.memoryWriteNormal;
+      }
+    }
+    else if (index < 0xFE00) {
+      if (this.cGBC && index >= 0xF000) {
+        this.memoryWriter[index] = this.memoryWriteECHOGBCRAM;
+      }
+      else {
+        this.memoryWriter[index] = this.memoryWriteECHONormal;
+      }
+    }
+    else if (index <= 0xFEA0) {
+      this.memoryWriter[index] = this.memoryWriteOAMRAM;
+    }
+    else if (index < 0xFF00) {
+      if (this.cGBC) {                      //Only GBC has access to this RAM.
+        this.memoryWriter[index] = this.memoryWriteNormal;
+      }
+      else {
+        this.memoryWriter[index] = this.cartIgnoreWrite;
+      }
+    }
+    else {
+      //Start the I/O initialization by filling in the slots as normal memory:
+      this.memoryWriter[index] = this.memoryWriteNormal;
+      this.memoryHighWriter[index & 0xFF] = this.memoryHighWriteNormal;
+    }
+  }
+  this.registerWriteJumpCompile();        //Compile the I/O write functions separately...
+}
+GameBoyCore.prototype.MBCWriteEnable = function (parentObj, address, data) {
+  //MBC RAM Bank Enable/Disable:
+  parentObj.MBCRAMBanksEnabled = ((data & 0x0F) == 0x0A);  //If lower nibble is 0x0A, then enable, otherwise disable.
+}
+GameBoyCore.prototype.MBC1WriteROMBank = function (parentObj, address, data) {
+  //MBC1 ROM bank switching:
+  parentObj.ROMBank1offs = (parentObj.ROMBank1offs & 0x60) | (data & 0x1F);
+  parentObj.setCurrentMBC1ROMBank();
+}
+GameBoyCore.prototype.MBC1WriteRAMBank = function (parentObj, address, data) {
+  //MBC1 RAM bank switching
+  if (parentObj.MBC1Mode) {
+    //4/32 Mode
+    parentObj.currMBCRAMBank = data & 0x03;
+    parentObj.currMBCRAMBankPosition = (parentObj.currMBCRAMBank << 13) - 0xA000;
+  }
+  else {
+    //16/8 Mode
+    parentObj.ROMBank1offs = ((data & 0x03) << 5) | (parentObj.ROMBank1offs & 0x1F);
+    parentObj.setCurrentMBC1ROMBank();
+  }
+}
+GameBoyCore.prototype.MBC1WriteType = function (parentObj, address, data) {
+  //MBC1 mode setting:
+  parentObj.MBC1Mode = ((data & 0x1) == 0x1);
+  if (parentObj.MBC1Mode) {
+    parentObj.ROMBank1offs &= 0x1F;
+    parentObj.setCurrentMBC1ROMBank();
+  }
+  else {
+    parentObj.currMBCRAMBank = 0;
+    parentObj.currMBCRAMBankPosition = -0xA000;
+  }
+}
+GameBoyCore.prototype.MBC2WriteROMBank = function (parentObj, address, data) {
+  //MBC2 ROM bank switching:
+  parentObj.ROMBank1offs = data & 0x0F;
+  parentObj.setCurrentMBC2AND3ROMBank();
+}
+GameBoyCore.prototype.MBC3WriteROMBank = function (parentObj, address, data) {
+  //MBC3 ROM bank switching:
+  parentObj.ROMBank1offs = data & 0x7F;
+  parentObj.setCurrentMBC2AND3ROMBank();
+}
+GameBoyCore.prototype.MBC3WriteRAMBank = function (parentObj, address, data) {
+  parentObj.currMBCRAMBank = data;
+  if (data < 4) {
+    //MBC3 RAM bank switching
+    parentObj.currMBCRAMBankPosition = (parentObj.currMBCRAMBank << 13) - 0xA000;
+  }
+}
+GameBoyCore.prototype.MBC3WriteRTCLatch = function (parentObj, address, data) {
+  if (data == 0) {
+    parentObj.RTCisLatched = false;
+  }
+  else if (!parentObj.RTCisLatched) {
+    //Copy over the current RTC time for reading.
+    parentObj.RTCisLatched = true;
+    parentObj.latchedSeconds = parentObj.RTCSeconds | 0;
+    parentObj.latchedMinutes = parentObj.RTCMinutes;
+    parentObj.latchedHours = parentObj.RTCHours;
+    parentObj.latchedLDays = (parentObj.RTCDays & 0xFF);
+    parentObj.latchedHDays = parentObj.RTCDays >> 8;
+  }
+}
+GameBoyCore.prototype.MBC5WriteROMBankLow = function (parentObj, address, data) {
+  //MBC5 ROM bank switching:
+  parentObj.ROMBank1offs = (parentObj.ROMBank1offs & 0x100) | data;
+  parentObj.setCurrentMBC5ROMBank();
+}
+GameBoyCore.prototype.MBC5WriteROMBankHigh = function (parentObj, address, data) {
+  //MBC5 ROM bank switching (by least significant bit):
+  parentObj.ROMBank1offs  = ((data & 0x01) << 8) | (parentObj.ROMBank1offs & 0xFF);
+  parentObj.setCurrentMBC5ROMBank();
+}
+GameBoyCore.prototype.MBC5WriteRAMBank = function (parentObj, address, data) {
+  //MBC5 RAM bank switching
+  parentObj.currMBCRAMBank = data & 0xF;
+  parentObj.currMBCRAMBankPosition = (parentObj.currMBCRAMBank << 13) - 0xA000;
+}
+GameBoyCore.prototype.RUMBLEWriteRAMBank = function (parentObj, address, data) {
+  //MBC5 RAM bank switching
+  //Like MBC5, but bit 3 of the lower nibble is used for rumbling and bit 2 is ignored.
+  parentObj.currMBCRAMBank = data & 0x03;
+  parentObj.currMBCRAMBankPosition = (parentObj.currMBCRAMBank << 13) - 0xA000;
+}
+GameBoyCore.prototype.HuC3WriteRAMBank = function (parentObj, address, data) {
+  //HuC3 RAM bank switching
+  parentObj.currMBCRAMBank = data & 0x03;
+  parentObj.currMBCRAMBankPosition = (parentObj.currMBCRAMBank << 13) - 0xA000;
+}
+GameBoyCore.prototype.cartIgnoreWrite = function (parentObj, address, data) {
+  //We might have encountered illegal RAM writing or such, so just do nothing...
+}
+GameBoyCore.prototype.memoryWriteNormal = function (parentObj, address, data) {
+  parentObj.memory[address] = data;
+}
+GameBoyCore.prototype.memoryHighWriteNormal = function (parentObj, address, data) {
+  parentObj.memory[0xFF00 | address] = data;
+}
+GameBoyCore.prototype.memoryWriteMBCRAM = function (parentObj, address, data) {
+  if (parentObj.MBCRAMBanksEnabled || settings[10]) {
+    parentObj.MBCRam[address + parentObj.currMBCRAMBankPosition] = data;
+  }
+}
+GameBoyCore.prototype.memoryWriteMBC3RAM = function (parentObj, address, data) {
+  if (parentObj.MBCRAMBanksEnabled || settings[10]) {
+    switch (parentObj.currMBCRAMBank) {
+      case 0x00:
+      case 0x01:
+      case 0x02:
+      case 0x03:
+        parentObj.MBCRam[address + parentObj.currMBCRAMBankPosition] = data;
+        break;
+      case 0x08:
+        if (data < 60) {
+          parentObj.RTCSeconds = data;
+        }
+        else {
+          cout("(Bank #" + parentObj.currMBCRAMBank + ") RTC write out of range: " + data, 1);
+        }
+        break;
+      case 0x09:
+        if (data < 60) {
+          parentObj.RTCMinutes = data;
+        }
+        else {
+          cout("(Bank #" + parentObj.currMBCRAMBank + ") RTC write out of range: " + data, 1);
+        }
+        break;
+      case 0x0A:
+        if (data < 24) {
+          parentObj.RTCHours = data;
+        }
+        else {
+          cout("(Bank #" + parentObj.currMBCRAMBank + ") RTC write out of range: " + data, 1);
+        }
+        break;
+      case 0x0B:
+        parentObj.RTCDays = (data & 0xFF) | (parentObj.RTCDays & 0x100);
+        break;
+      case 0x0C:
+        parentObj.RTCDayOverFlow = (data > 0x7F);
+        parentObj.RTCHalt = (data & 0x40) == 0x40;
+        parentObj.RTCDays = ((data & 0x1) << 8) | (parentObj.RTCDays & 0xFF);
+        break;
+      default:
+        cout("Invalid MBC3 bank address selected: " + parentObj.currMBCRAMBank, 0);
+    }
+  }
+}
+GameBoyCore.prototype.memoryWriteGBCRAM = function (parentObj, address, data) {
+  parentObj.GBCMemory[address + parentObj.gbcRamBankPosition] = data;
+}
+GameBoyCore.prototype.memoryWriteOAMRAM = function (parentObj, address, data) {
+  if (parentObj.modeSTAT < 2) {    //OAM RAM cannot be written to in mode 2 & 3
+    if (parentObj.memory[address] != data) {
+      parentObj.graphicsJIT();
+      parentObj.memory[address] = data;
+    }
+  }
+}
+GameBoyCore.prototype.memoryWriteECHOGBCRAM = function (parentObj, address, data) {
+  parentObj.GBCMemory[address + parentObj.gbcRamBankPositionECHO] = data;
+}
+GameBoyCore.prototype.memoryWriteECHONormal = function (parentObj, address, data) {
+  parentObj.memory[address - 0x2000] = data;
+}
+GameBoyCore.prototype.VRAMGBDATAWrite = function (parentObj, address, data) {
+  if (parentObj.modeSTAT < 3) {  //VRAM cannot be written to during mode 3
+    if (parentObj.memory[address] != data) {
+      //JIT the graphics render queue:
+      parentObj.graphicsJIT();
+      parentObj.memory[address] = data;
+      parentObj.generateGBOAMTileLine(address);
+    }
+  }
+}
+GameBoyCore.prototype.VRAMGBDATAUpperWrite = function (parentObj, address, data) {
+  if (parentObj.modeSTAT < 3) {  //VRAM cannot be written to during mode 3
+    if (parentObj.memory[address] != data) {
+      //JIT the graphics render queue:
+      parentObj.graphicsJIT();
+      parentObj.memory[address] = data;
+      parentObj.generateGBTileLine(address);
+    }
+  }
+}
+GameBoyCore.prototype.VRAMGBCDATAWrite = function (parentObj, address, data) {
+  if (parentObj.modeSTAT < 3) {  //VRAM cannot be written to during mode 3
+    if (parentObj.currVRAMBank == 0) {
+      if (parentObj.memory[address] != data) {
+        //JIT the graphics render queue:
+        parentObj.graphicsJIT();
+        parentObj.memory[address] = data;
+        parentObj.generateGBCTileLineBank1(address);
+      }
+    }
+    else {
+      address &= 0x1FFF;
+      if (parentObj.VRAM[address] != data) {
+        //JIT the graphics render queue:
+        parentObj.graphicsJIT();
+        parentObj.VRAM[address] = data;
+        parentObj.generateGBCTileLineBank2(address);
+      }
+    }
+  }
+}
+GameBoyCore.prototype.VRAMGBCHRMAPWrite = function (parentObj, address, data) {
+  if (parentObj.modeSTAT < 3) {  //VRAM cannot be written to during mode 3
+    address &= 0x7FF;
+    if (parentObj.BGCHRBank1[address] != data) {
+      //JIT the graphics render queue:
+      parentObj.graphicsJIT();
+      parentObj.BGCHRBank1[address] = data;
+    }
+  }
+}
+GameBoyCore.prototype.VRAMGBCCHRMAPWrite = function (parentObj, address, data) {
+  if (parentObj.modeSTAT < 3) {  //VRAM cannot be written to during mode 3
+    address &= 0x7FF;
+    if (parentObj.BGCHRCurrentBank[address] != data) {
+      //JIT the graphics render queue:
+      parentObj.graphicsJIT();
+      parentObj.BGCHRCurrentBank[address] = data;
+    }
+  }
+}
+GameBoyCore.prototype.DMAWrite = function (tilesToTransfer) {
+  if (!this.halt) {
+    //Clock the CPU for the DMA transfer (CPU is halted during the transfer):
+    this.CPUTicks += 4 | ((tilesToTransfer << 5) << this.doubleSpeedShifter);
+  }
+  //Source address of the transfer:
+  var source = (this.memory[0xFF51] << 8) | this.memory[0xFF52];
+  //Destination address in the VRAM memory range:
+  var destination = (this.memory[0xFF53] << 8) | this.memory[0xFF54];
+  //Creating some references:
+  var memoryReader = this.memoryReader;
+  //JIT the graphics render queue:
+  this.graphicsJIT();
+  var memory = this.memory;
+  //Determining which bank we're working on so we can optimize:
+  if (this.currVRAMBank == 0) {
+    //DMA transfer for VRAM bank 0:
+    do {
+      if (destination < 0x1800) {
+        memory[0x8000 | destination] = memoryReader[source](this, source++);
+        memory[0x8001 | destination] = memoryReader[source](this, source++);
+        memory[0x8002 | destination] = memoryReader[source](this, source++);
+        memory[0x8003 | destination] = memoryReader[source](this, source++);
+        memory[0x8004 | destination] = memoryReader[source](this, source++);
+        memory[0x8005 | destination] = memoryReader[source](this, source++);
+        memory[0x8006 | destination] = memoryReader[source](this, source++);
+        memory[0x8007 | destination] = memoryReader[source](this, source++);
+        memory[0x8008 | destination] = memoryReader[source](this, source++);
+        memory[0x8009 | destination] = memoryReader[source](this, source++);
+        memory[0x800A | destination] = memoryReader[source](this, source++);
+        memory[0x800B | destination] = memoryReader[source](this, source++);
+        memory[0x800C | destination] = memoryReader[source](this, source++);
+        memory[0x800D | destination] = memoryReader[source](this, source++);
+        memory[0x800E | destination] = memoryReader[source](this, source++);
+        memory[0x800F | destination] = memoryReader[source](this, source++);
+        this.generateGBCTileBank1(destination);
+        destination += 0x10;
+      }
+      else {
+        destination &= 0x7F0;
+        this.BGCHRBank1[destination++] = memoryReader[source](this, source++);
+        this.BGCHRBank1[destination++] = memoryReader[source](this, source++);
+        this.BGCHRBank1[destination++] = memoryReader[source](this, source++);
+        this.BGCHRBank1[destination++] = memoryReader[source](this, source++);
+        this.BGCHRBank1[destination++] = memoryReader[source](this, source++);
+        this.BGCHRBank1[destination++] = memoryReader[source](this, source++);
+        this.BGCHRBank1[destination++] = memoryReader[source](this, source++);
+        this.BGCHRBank1[destination++] = memoryReader[source](this, source++);
+        this.BGCHRBank1[destination++] = memoryReader[source](this, source++);
+        this.BGCHRBank1[destination++] = memoryReader[source](this, source++);
+        this.BGCHRBank1[destination++] = memoryReader[source](this, source++);
+        this.BGCHRBank1[destination++] = memoryReader[source](this, source++);
+        this.BGCHRBank1[destination++] = memoryReader[source](this, source++);
+        this.BGCHRBank1[destination++] = memoryReader[source](this, source++);
+        this.BGCHRBank1[destination++] = memoryReader[source](this, source++);
+        this.BGCHRBank1[destination++] = memoryReader[source](this, source++);
+        destination = (destination + 0x1800) & 0x1FF0;
+      }
+      source &= 0xFFF0;
+      --tilesToTransfer;
+    } while (tilesToTransfer > 0);
+  }
+  else {
+    var VRAM = this.VRAM;
+    //DMA transfer for VRAM bank 1:
+    do {
+      if (destination < 0x1800) {
+        VRAM[destination] = memoryReader[source](this, source++);
+        VRAM[destination | 0x1] = memoryReader[source](this, source++);
+        VRAM[destination | 0x2] = memoryReader[source](this, source++);
+        VRAM[destination | 0x3] = memoryReader[source](this, source++);
+        VRAM[destination | 0x4] = memoryReader[source](this, source++);
+        VRAM[destination | 0x5] = memoryReader[source](this, source++);
+        VRAM[destination | 0x6] = memoryReader[source](this, source++);
+        VRAM[destination | 0x7] = memoryReader[source](this, source++);
+        VRAM[destination | 0x8] = memoryReader[source](this, source++);
+        VRAM[destination | 0x9] = memoryReader[source](this, source++);
+        VRAM[destination | 0xA] = memoryReader[source](this, source++);
+        VRAM[destination | 0xB] = memoryReader[source](this, source++);
+        VRAM[destination | 0xC] = memoryReader[source](this, source++);
+        VRAM[destination | 0xD] = memoryReader[source](this, source++);
+        VRAM[destination | 0xE] = memoryReader[source](this, source++);
+        VRAM[destination | 0xF] = memoryReader[source](this, source++);
+        this.generateGBCTileBank2(destination);
+        destination += 0x10;
+      }
+      else {
+        destination &= 0x7F0;
+        this.BGCHRBank2[destination++] = memoryReader[source](this, source++);
+        this.BGCHRBank2[destination++] = memoryReader[source](this, source++);
+        this.BGCHRBank2[destination++] = memoryReader[source](this, source++);
+        this.BGCHRBank2[destination++] = memoryReader[source](this, source++);
+        this.BGCHRBank2[destination++] = memoryReader[source](this, source++);
+        this.BGCHRBank2[destination++] = memoryReader[source](this, source++);
+        this.BGCHRBank2[destination++] = memoryReader[source](this, source++);
+        this.BGCHRBank2[destination++] = memoryReader[source](this, source++);
+        this.BGCHRBank2[destination++] = memoryReader[source](this, source++);
+        this.BGCHRBank2[destination++] = memoryReader[source](this, source++);
+        this.BGCHRBank2[destination++] = memoryReader[source](this, source++);
+        this.BGCHRBank2[destination++] = memoryReader[source](this, source++);
+        this.BGCHRBank2[destination++] = memoryReader[source](this, source++);
+        this.BGCHRBank2[destination++] = memoryReader[source](this, source++);
+        this.BGCHRBank2[destination++] = memoryReader[source](this, source++);
+        this.BGCHRBank2[destination++] = memoryReader[source](this, source++);
+        destination = (destination + 0x1800) & 0x1FF0;
+      }
+      source &= 0xFFF0;
+      --tilesToTransfer;
+    } while (tilesToTransfer > 0);
+  }
+  //Update the HDMA registers to their next addresses:
+  memory[0xFF51] = source >> 8;
+  memory[0xFF52] = source & 0xF0;
+  memory[0xFF53] = destination >> 8;
+  memory[0xFF54] = destination & 0xF0;
+}
+GameBoyCore.prototype.registerWriteJumpCompile = function () {
+  //I/O Registers (GB + GBC):
+  //JoyPad
+  this.memoryHighWriter[0] = this.memoryWriter[0xFF00] = function (parentObj, address, data) {
+    parentObj.memory[0xFF00] = (data & 0x30) | ((((data & 0x20) == 0) ? (parentObj.JoyPad >> 4) : 0xF) & (((data & 0x10) == 0) ? (parentObj.JoyPad & 0xF) : 0xF));
+  }
+  //SB (Serial Transfer Data)
+  this.memoryHighWriter[0x1] = this.memoryWriter[0xFF01] = function (parentObj, address, data) {
+    if (parentObj.memory[0xFF02] < 0x80) {  //Cannot write while a serial transfer is active.
+      parentObj.memory[0xFF01] = data;
+    }
+  }
+  //DIV
+  this.memoryHighWriter[0x4] = this.memoryWriter[0xFF04] = function (parentObj, address, data) {
+    parentObj.DIVTicks &= 0xFF;  //Update DIV for realignment.
+    parentObj.memory[0xFF04] = 0;
+  }
+  //TIMA
+  this.memoryHighWriter[0x5] = this.memoryWriter[0xFF05] = function (parentObj, address, data) {
+    parentObj.memory[0xFF05] = data;
+  }
+  //TMA
+  this.memoryHighWriter[0x6] = this.memoryWriter[0xFF06] = function (parentObj, address, data) {
+    parentObj.memory[0xFF06] = data;
+  }
+  //TAC
+  this.memoryHighWriter[0x7] = this.memoryWriter[0xFF07] = function (parentObj, address, data) {
+    parentObj.memory[0xFF07] = data & 0x07;
+    parentObj.TIMAEnabled = (data & 0x04) == 0x04;
+    parentObj.TACClocker = Math.pow(4, ((data & 0x3) != 0) ? (data & 0x3) : 4) << 2;  //TODO: Find a way to not make a conditional in here...
+  }
+  //IF (Interrupt Request)
+  this.memoryHighWriter[0xF] = this.memoryWriter[0xFF0F] = function (parentObj, address, data) {
+    parentObj.interruptsRequested = data;
+    parentObj.checkIRQMatching();
+  }
+  this.memoryHighWriter[0x10] = this.memoryWriter[0xFF10] = function (parentObj, address, data) {
+    if (parentObj.soundMasterEnabled) {
+      parentObj.audioJIT();
+      if (parentObj.channel1decreaseSweep && (data & 0x08) == 0) {
+        if (parentObj.channel1numSweep != parentObj.channel1frequencySweepDivider) {
+          parentObj.channel1SweepFault = true;
+        }
+      }
+      parentObj.channel1lastTimeSweep = (data & 0x70) >> 4;
+      parentObj.channel1frequencySweepDivider = data & 0x07;
+      parentObj.channel1decreaseSweep = ((data & 0x08) == 0x08);
+      parentObj.memory[0xFF10] = data;
+      parentObj.channel1EnableCheck();
+    }
+  }
+  this.memoryHighWriter[0x11] = this.memoryWriter[0xFF11] = function (parentObj, address, data) {
+    if (parentObj.soundMasterEnabled || !parentObj.cGBC) {
+      if (parentObj.soundMasterEnabled) {
+        parentObj.audioJIT();
+      }
+      else {
+        data &= 0x3F;
+      }
+      parentObj.channel1CachedDuty = parentObj.dutyLookup[data >> 6];
+      parentObj.channel1totalLength = 0x40 - (data & 0x3F);
+      parentObj.memory[0xFF11] = data & 0xC0;
+      parentObj.channel1EnableCheck();
+    }
+  }
+  this.memoryHighWriter[0x12] = this.memoryWriter[0xFF12] = function (parentObj, address, data) {
+    if (parentObj.soundMasterEnabled) {
+      parentObj.audioJIT();
+      if (parentObj.channel1Enabled && parentObj.channel1envelopeSweeps == 0) {
+        //Zombie Volume PAPU Bug:
+        if (((parentObj.memory[0xFF12] ^ data) & 0x8) == 0x8) {
+          if ((parentObj.memory[0xFF12] & 0x8) == 0) {
+            if ((parentObj.memory[0xFF12] & 0x7) == 0x7) {
+              parentObj.channel1envelopeVolume += 2;
+            }
+            else {
+              ++parentObj.channel1envelopeVolume;
+            }
+          }
+          parentObj.channel1envelopeVolume = (16 - parentObj.channel1envelopeVolume) & 0xF;
+        }
+        else if ((parentObj.memory[0xFF12] & 0xF) == 0x8) {
+          parentObj.channel1envelopeVolume = (1 + parentObj.channel1envelopeVolume) & 0xF;
+        }
+        parentObj.channel1OutputLevelCache();
+      }
+      parentObj.channel1envelopeType = ((data & 0x08) == 0x08);
+      parentObj.memory[0xFF12] = data;
+      parentObj.channel1VolumeEnableCheck();
+    }
+  }
+  this.memoryHighWriter[0x13] = this.memoryWriter[0xFF13] = function (parentObj, address, data) {
+    if (parentObj.soundMasterEnabled) {
+      parentObj.audioJIT();
+      parentObj.channel1frequency = (parentObj.channel1frequency & 0x700) | data;
+      parentObj.channel1FrequencyTracker = (0x800 - parentObj.channel1frequency) << 2;
+      parentObj.memory[0xFF13] = data;
+    }
+  }
+  this.memoryHighWriter[0x14] = this.memoryWriter[0xFF14] = function (parentObj, address, data) {
+    if (parentObj.soundMasterEnabled) {
+      parentObj.audioJIT();
+      parentObj.channel1consecutive = ((data & 0x40) == 0x0);
+      parentObj.channel1frequency = ((data & 0x7) << 8) | (parentObj.channel1frequency & 0xFF);
+      parentObj.channel1FrequencyTracker = (0x800 - parentObj.channel1frequency) << 2;
+      if (data > 0x7F) {
+        //Reload 0xFF10:
+        parentObj.channel1timeSweep = parentObj.channel1lastTimeSweep;
+        parentObj.channel1numSweep = parentObj.channel1frequencySweepDivider;
+        //Reload 0xFF12:
+        var nr12 = parentObj.memory[0xFF12];
+        parentObj.channel1envelopeVolume = nr12 >> 4;
+        parentObj.channel1OutputLevelCache();
+        parentObj.channel1envelopeSweepsLast = (nr12 & 0x7) - 1;
+        if (parentObj.channel1totalLength == 0) {
+          parentObj.channel1totalLength = 0x40;
+        }
+        if (parentObj.channel1lastTimeSweep > 0 || parentObj.channel1frequencySweepDivider > 0) {
+          parentObj.memory[0xFF26] |= 0x1;
+        }
+        else {
+          parentObj.memory[0xFF26] &= 0xFE;
+        }
+        if ((data & 0x40) == 0x40) {
+          parentObj.memory[0xFF26] |= 0x1;
+        }
+        parentObj.channel1ShadowFrequency = parentObj.channel1frequency;
+        //Reset frequency overflow check + frequency sweep type check:
+        parentObj.channel1SweepFault = false;
+        //Supposed to run immediately:
+        parentObj.runAudioSweep();
+      }
+      parentObj.channel1EnableCheck();
+      parentObj.memory[0xFF14] = data & 0x40;
+    }
+  }
+  this.memoryHighWriter[0x16] = this.memoryWriter[0xFF16] = function (parentObj, address, data) {
+    if (parentObj.soundMasterEnabled || !parentObj.cGBC) {
+      if (parentObj.soundMasterEnabled) {
+        parentObj.audioJIT();
+      }
+      else {
+        data &= 0x3F;
+      }
+      parentObj.channel2CachedDuty = parentObj.dutyLookup[data >> 6];
+      parentObj.channel2totalLength = 0x40 - (data & 0x3F);
+      parentObj.memory[0xFF16] = data & 0xC0;
+      parentObj.channel2EnableCheck();
+    }
+  }
+  this.memoryHighWriter[0x17] = this.memoryWriter[0xFF17] = function (parentObj, address, data) {
+    if (parentObj.soundMasterEnabled) {
+      parentObj.audioJIT();
+      if (parentObj.channel2Enabled && parentObj.channel2envelopeSweeps == 0) {
+        //Zombie Volume PAPU Bug:
+        if (((parentObj.memory[0xFF17] ^ data) & 0x8) == 0x8) {
+          if ((parentObj.memory[0xFF17] & 0x8) == 0) {
+            if ((parentObj.memory[0xFF17] & 0x7) == 0x7) {
+              parentObj.channel2envelopeVolume += 2;
+            }
+            else {
+              ++parentObj.channel2envelopeVolume;
+            }
+          }
+          parentObj.channel2envelopeVolume = (16 - parentObj.channel2envelopeVolume) & 0xF;
+        }
+        else if ((parentObj.memory[0xFF17] & 0xF) == 0x8) {
+          parentObj.channel2envelopeVolume = (1 + parentObj.channel2envelopeVolume) & 0xF;
+        }
+        parentObj.channel2OutputLevelCache();
+      }
+      parentObj.channel2envelopeType = ((data & 0x08) == 0x08);
+      parentObj.memory[0xFF17] = data;
+      parentObj.channel2VolumeEnableCheck();
+    }
+  }
+  this.memoryHighWriter[0x18] = this.memoryWriter[0xFF18] = function (parentObj, address, data) {
+    if (parentObj.soundMasterEnabled) {
+      parentObj.audioJIT();
+      parentObj.channel2frequency = (parentObj.channel2frequency & 0x700) | data;
+      parentObj.channel2FrequencyTracker = (0x800 - parentObj.channel2frequency) << 2;
+      parentObj.memory[0xFF18] = data;
+    }
+  }
+  this.memoryHighWriter[0x19] = this.memoryWriter[0xFF19] = function (parentObj, address, data) {
+    if (parentObj.soundMasterEnabled) {
+      parentObj.audioJIT();
+      if (data > 0x7F) {
+        //Reload 0xFF17:
+        var nr22 = parentObj.memory[0xFF17];
+        parentObj.channel2envelopeVolume = nr22 >> 4;
+        parentObj.channel2OutputLevelCache();
+        parentObj.channel2envelopeSweepsLast = (nr22 & 0x7) - 1;
+        if (parentObj.channel2totalLength == 0) {
+          parentObj.channel2totalLength = 0x40;
+        }
+        if ((data & 0x40) == 0x40) {
+          parentObj.memory[0xFF26] |= 0x2;
+        }
+      }
+      parentObj.channel2consecutive = ((data & 0x40) == 0x0);
+      parentObj.channel2frequency = ((data & 0x7) << 8) | (parentObj.channel2frequency & 0xFF);
+      parentObj.channel2FrequencyTracker = (0x800 - parentObj.channel2frequency) << 2;
+      parentObj.memory[0xFF19] = data & 0x40;
+      parentObj.channel2EnableCheck();
+    }
+  }
+  this.memoryHighWriter[0x1A] = this.memoryWriter[0xFF1A] = function (parentObj, address, data) {
+    if (parentObj.soundMasterEnabled) {
+      parentObj.audioJIT();
+      if (!parentObj.channel3canPlay && data >= 0x80) {
+        parentObj.channel3lastSampleLookup = 0;
+        parentObj.channel3UpdateCache();
+      }
+      parentObj.channel3canPlay = (data > 0x7F);
+      if (parentObj.channel3canPlay && parentObj.memory[0xFF1A] > 0x7F && !parentObj.channel3consecutive) {
+        parentObj.memory[0xFF26] |= 0x4;
+      }
+      parentObj.memory[0xFF1A] = data & 0x80;
+      //parentObj.channel3EnableCheck();
+    }
+  }
+  this.memoryHighWriter[0x1B] = this.memoryWriter[0xFF1B] = function (parentObj, address, data) {
+    if (parentObj.soundMasterEnabled || !parentObj.cGBC) {
+      if (parentObj.soundMasterEnabled) {
+        parentObj.audioJIT();
+      }
+      parentObj.channel3totalLength = 0x100 - data;
+      parentObj.memory[0xFF1B] = data;
+      parentObj.channel3EnableCheck();
+    }
+  }
+  this.memoryHighWriter[0x1C] = this.memoryWriter[0xFF1C] = function (parentObj, address, data) {
+    if (parentObj.soundMasterEnabled) {
+      parentObj.audioJIT();
+      data &= 0x60;
+      parentObj.memory[0xFF1C] = data;
+      parentObj.channel3patternType = (data == 0) ? 4 : ((data >> 5) - 1);
+    }
+  }
+  this.memoryHighWriter[0x1D] = this.memoryWriter[0xFF1D] = function (parentObj, address, data) {
+    if (parentObj.soundMasterEnabled) {
+      parentObj.audioJIT();
+      parentObj.channel3frequency = (parentObj.channel3frequency & 0x700) | data;
+      parentObj.channel3FrequencyPeriod = (0x800 - parentObj.channel3frequency) << 1;
+      parentObj.memory[0xFF1D] = data;
+    }
+  }
+  this.memoryHighWriter[0x1E] = this.memoryWriter[0xFF1E] = function (parentObj, address, data) {
+    if (parentObj.soundMasterEnabled) {
+      parentObj.audioJIT();
+      if (data > 0x7F) {
+        if (parentObj.channel3totalLength == 0) {
+          parentObj.channel3totalLength = 0x100;
+        }
+        parentObj.channel3lastSampleLookup = 0;
+        if ((data & 0x40) == 0x40) {
+          parentObj.memory[0xFF26] |= 0x4;
+        }
+      }
+      parentObj.channel3consecutive = ((data & 0x40) == 0x0);
+      parentObj.channel3frequency = ((data & 0x7) << 8) | (parentObj.channel3frequency & 0xFF);
+      parentObj.channel3FrequencyPeriod = (0x800 - parentObj.channel3frequency) << 1;
+      parentObj.memory[0xFF1E] = data & 0x40;
+      parentObj.channel3EnableCheck();
+    }
+  }
+  this.memoryHighWriter[0x20] = this.memoryWriter[0xFF20] = function (parentObj, address, data) {
+    if (parentObj.soundMasterEnabled || !parentObj.cGBC) {
+      if (parentObj.soundMasterEnabled) {
+        parentObj.audioJIT();
+      }
+      parentObj.channel4totalLength = 0x40 - (data & 0x3F);
+      parentObj.memory[0xFF20] = data | 0xC0;
+      parentObj.channel4EnableCheck();
+    }
+  }
+  this.memoryHighWriter[0x21] = this.memoryWriter[0xFF21] = function (parentObj, address, data) {
+    if (parentObj.soundMasterEnabled) {
+      parentObj.audioJIT();
+      if (parentObj.channel4Enabled && parentObj.channel4envelopeSweeps == 0) {
+        //Zombie Volume PAPU Bug:
+        if (((parentObj.memory[0xFF21] ^ data) & 0x8) == 0x8) {
+          if ((parentObj.memory[0xFF21] & 0x8) == 0) {
+            if ((parentObj.memory[0xFF21] & 0x7) == 0x7) {
+              parentObj.channel4envelopeVolume += 2;
+            }
+            else {
+              ++parentObj.channel4envelopeVolume;
+            }
+          }
+          parentObj.channel4envelopeVolume = (16 - parentObj.channel4envelopeVolume) & 0xF;
+        }
+        else if ((parentObj.memory[0xFF21] & 0xF) == 0x8) {
+          parentObj.channel4envelopeVolume = (1 + parentObj.channel4envelopeVolume) & 0xF;
+        }
+        parentObj.channel4currentVolume = parentObj.channel4envelopeVolume << parentObj.channel4VolumeShifter;
+      }
+      parentObj.channel4envelopeType = ((data & 0x08) == 0x08);
+      parentObj.memory[0xFF21] = data;
+      parentObj.channel4UpdateCache();
+      parentObj.channel4VolumeEnableCheck();
+    }
+  }
+  this.memoryHighWriter[0x22] = this.memoryWriter[0xFF22] = function (parentObj, address, data) {
+    if (parentObj.soundMasterEnabled) {
+      parentObj.audioJIT();
+      parentObj.channel4FrequencyPeriod = Math.max((data & 0x7) << 4, 8) << (data >> 4);
+      var bitWidth = (data & 0x8);
+      if ((bitWidth == 0x8 && parentObj.channel4BitRange == 0x7FFF) || (bitWidth == 0 && parentObj.channel4BitRange == 0x7F)) {
+        parentObj.channel4lastSampleLookup = 0;
+        parentObj.channel4BitRange = (bitWidth == 0x8) ? 0x7F : 0x7FFF;
+        parentObj.channel4VolumeShifter = (bitWidth == 0x8) ? 7 : 15;
+        parentObj.channel4currentVolume = parentObj.channel4envelopeVolume << parentObj.channel4VolumeShifter;
+        parentObj.noiseSampleTable = (bitWidth == 0x8) ? parentObj.LSFR7Table : parentObj.LSFR15Table;
+      }
+      parentObj.memory[0xFF22] = data;
+      parentObj.channel4UpdateCache();
+    }
+  }
+  this.memoryHighWriter[0x23] = this.memoryWriter[0xFF23] = function (parentObj, address, data) {
+    if (parentObj.soundMasterEnabled) {
+      parentObj.audioJIT();
+      parentObj.memory[0xFF23] = data;
+      parentObj.channel4consecutive = ((data & 0x40) == 0x0);
+      if (data > 0x7F) {
+        var nr42 = parentObj.memory[0xFF21];
+        parentObj.channel4envelopeVolume = nr42 >> 4;
+        parentObj.channel4currentVolume = parentObj.channel4envelopeVolume << parentObj.channel4VolumeShifter;
+        parentObj.channel4envelopeSweepsLast = (nr42 & 0x7) - 1;
+        if (parentObj.channel4totalLength == 0) {
+          parentObj.channel4totalLength = 0x40;
+        }
+        if ((data & 0x40) == 0x40) {
+          parentObj.memory[0xFF26] |= 0x8;
+        }
+      }
+      parentObj.channel4EnableCheck();
+    }
+  }
+  this.memoryHighWriter[0x24] = this.memoryWriter[0xFF24] = function (parentObj, address, data) {
+    if (parentObj.soundMasterEnabled && parentObj.memory[0xFF24] != data) {
+      parentObj.audioJIT();
+      parentObj.memory[0xFF24] = data;
+      parentObj.VinLeftChannelMasterVolume = ((data >> 4) & 0x07) + 1;
+      parentObj.VinRightChannelMasterVolume = (data & 0x07) + 1;
+      parentObj.mixerOutputLevelCache();
+    }
+  }
+  this.memoryHighWriter[0x25] = this.memoryWriter[0xFF25] = function (parentObj, address, data) {
+    if (parentObj.soundMasterEnabled && parentObj.memory[0xFF25] != data) {
+      parentObj.audioJIT();
+      parentObj.memory[0xFF25] = data;
+      parentObj.rightChannel1 = ((data & 0x01) == 0x01);
+      parentObj.rightChannel2 = ((data & 0x02) == 0x02);
+      parentObj.rightChannel3 = ((data & 0x04) == 0x04);
+      parentObj.rightChannel4 = ((data & 0x08) == 0x08);
+      parentObj.leftChannel1 = ((data & 0x10) == 0x10);
+      parentObj.leftChannel2 = ((data & 0x20) == 0x20);
+      parentObj.leftChannel3 = ((data & 0x40) == 0x40);
+      parentObj.leftChannel4 = (data > 0x7F);
+      parentObj.channel1OutputLevelCache();
+      parentObj.channel2OutputLevelCache();
+      parentObj.channel3OutputLevelCache();
+      parentObj.channel4OutputLevelCache();
+    }
+  }
+  this.memoryHighWriter[0x26] = this.memoryWriter[0xFF26] = function (parentObj, address, data) {
+    parentObj.audioJIT();
+    if (!parentObj.soundMasterEnabled && data > 0x7F) {
+      parentObj.memory[0xFF26] = 0x80;
+      parentObj.soundMasterEnabled = true;
+      parentObj.initializeAudioStartState();
+    }
+    else if (parentObj.soundMasterEnabled && data < 0x80) {
+      parentObj.memory[0xFF26] = 0;
+      parentObj.soundMasterEnabled = false;
+      //GBDev wiki says the registers are written with zeros on power off:
+      for (var index = 0xFF10; index < 0xFF26; index++) {
+        parentObj.memoryWriter[index](parentObj, index, 0);
+      }
+    }
+  }
+  //0xFF27 to 0xFF2F don't do anything...
+  this.memoryHighWriter[0x27] = this.memoryWriter[0xFF27] = this.cartIgnoreWrite;
+  this.memoryHighWriter[0x28] = this.memoryWriter[0xFF28] = this.cartIgnoreWrite;
+  this.memoryHighWriter[0x29] = this.memoryWriter[0xFF29] = this.cartIgnoreWrite;
+  this.memoryHighWriter[0x2A] = this.memoryWriter[0xFF2A] = this.cartIgnoreWrite;
+  this.memoryHighWriter[0x2B] = this.memoryWriter[0xFF2B] = this.cartIgnoreWrite;
+  this.memoryHighWriter[0x2C] = this.memoryWriter[0xFF2C] = this.cartIgnoreWrite;
+  this.memoryHighWriter[0x2D] = this.memoryWriter[0xFF2D] = this.cartIgnoreWrite;
+  this.memoryHighWriter[0x2E] = this.memoryWriter[0xFF2E] = this.cartIgnoreWrite;
+  this.memoryHighWriter[0x2F] = this.memoryWriter[0xFF2F] = this.cartIgnoreWrite;
+  //WAVE PCM RAM:
+  this.memoryHighWriter[0x30] = this.memoryWriter[0xFF30] = function (parentObj, address, data) {
+    parentObj.channel3WriteRAM(0, data);
+  }
+  this.memoryHighWriter[0x31] = this.memoryWriter[0xFF31] = function (parentObj, address, data) {
+    parentObj.channel3WriteRAM(0x1, data);
+  }
+  this.memoryHighWriter[0x32] = this.memoryWriter[0xFF32] = function (parentObj, address, data) {
+    parentObj.channel3WriteRAM(0x2, data);
+  }
+  this.memoryHighWriter[0x33] = this.memoryWriter[0xFF33] = function (parentObj, address, data) {
+    parentObj.channel3WriteRAM(0x3, data);
+  }
+  this.memoryHighWriter[0x34] = this.memoryWriter[0xFF34] = function (parentObj, address, data) {
+    parentObj.channel3WriteRAM(0x4, data);
+  }
+  this.memoryHighWriter[0x35] = this.memoryWriter[0xFF35] = function (parentObj, address, data) {
+    parentObj.channel3WriteRAM(0x5, data);
+  }
+  this.memoryHighWriter[0x36] = this.memoryWriter[0xFF36] = function (parentObj, address, data) {
+    parentObj.channel3WriteRAM(0x6, data);
+  }
+  this.memoryHighWriter[0x37] = this.memoryWriter[0xFF37] = function (parentObj, address, data) {
+    parentObj.channel3WriteRAM(0x7, data);
+  }
+  this.memoryHighWriter[0x38] = this.memoryWriter[0xFF38] = function (parentObj, address, data) {
+    parentObj.channel3WriteRAM(0x8, data);
+  }
+  this.memoryHighWriter[0x39] = this.memoryWriter[0xFF39] = function (parentObj, address, data) {
+    parentObj.channel3WriteRAM(0x9, data);
+  }
+  this.memoryHighWriter[0x3A] = this.memoryWriter[0xFF3A] = function (parentObj, address, data) {
+    parentObj.channel3WriteRAM(0xA, data);
+  }
+  this.memoryHighWriter[0x3B] = this.memoryWriter[0xFF3B] = function (parentObj, address, data) {
+    parentObj.channel3WriteRAM(0xB, data);
+  }
+  this.memoryHighWriter[0x3C] = this.memoryWriter[0xFF3C] = function (parentObj, address, data) {
+    parentObj.channel3WriteRAM(0xC, data);
+  }
+  this.memoryHighWriter[0x3D] = this.memoryWriter[0xFF3D] = function (parentObj, address, data) {
+    parentObj.channel3WriteRAM(0xD, data);
+  }
+  this.memoryHighWriter[0x3E] = this.memoryWriter[0xFF3E] = function (parentObj, address, data) {
+    parentObj.channel3WriteRAM(0xE, data);
+  }
+  this.memoryHighWriter[0x3F] = this.memoryWriter[0xFF3F] = function (parentObj, address, data) {
+    parentObj.channel3WriteRAM(0xF, data);
+  }
+  //SCY
+  this.memoryHighWriter[0x42] = this.memoryWriter[0xFF42] = function (parentObj, address, data) {
+    if (parentObj.backgroundY != data) {
+      parentObj.midScanLineJIT();
+      parentObj.backgroundY = data;
+    }
+  }
+  //SCX
+  this.memoryHighWriter[0x43] = this.memoryWriter[0xFF43] = function (parentObj, address, data) {
+    if (parentObj.backgroundX != data) {
+      parentObj.midScanLineJIT();
+      parentObj.backgroundX = data;
+    }
+  }
+  //LY
+  this.memoryHighWriter[0x44] = this.memoryWriter[0xFF44] = function (parentObj, address, data) {
+    //Read Only:
+    if (parentObj.LCDisOn) {
+      //Gambatte says to do this:
+      parentObj.modeSTAT = 2;
+      parentObj.midScanlineOffset = -1;
+      parentObj.totalLinesPassed = parentObj.currentX = parentObj.queuedScanLines = parentObj.lastUnrenderedLine = parentObj.LCDTicks = parentObj.STATTracker = parentObj.actualScanLine = parentObj.memory[0xFF44] = 0;
+    }
+  }
+  //LYC
+  this.memoryHighWriter[0x45] = this.memoryWriter[0xFF45] = function (parentObj, address, data) {
+    if (parentObj.memory[0xFF45] != data) {
+      parentObj.memory[0xFF45] = data;
+      if (parentObj.LCDisOn) {
+        parentObj.matchLYC();  //Get the compare of the first scan line.
+      }
+    }
+  }
+  //WY
+  this.memoryHighWriter[0x4A] = this.memoryWriter[0xFF4A] = function (parentObj, address, data) {
+    if (parentObj.windowY != data) {
+      parentObj.midScanLineJIT();
+      parentObj.windowY = data;
+    }
+  }
+  //WX
+  this.memoryHighWriter[0x4B] = this.memoryWriter[0xFF4B] = function (parentObj, address, data) {
+    if (parentObj.memory[0xFF4B] != data) {
+      parentObj.midScanLineJIT();
+      parentObj.memory[0xFF4B] = data;
+      parentObj.windowX = data - 7;
+    }
+  }
+  this.memoryHighWriter[0x72] = this.memoryWriter[0xFF72] = function (parentObj, address, data) {
+    parentObj.memory[0xFF72] = data;
+  }
+  this.memoryHighWriter[0x73] = this.memoryWriter[0xFF73] = function (parentObj, address, data) {
+    parentObj.memory[0xFF73] = data;
+  }
+  this.memoryHighWriter[0x75] = this.memoryWriter[0xFF75] = function (parentObj, address, data) {
+    parentObj.memory[0xFF75] = data;
+  }
+  this.memoryHighWriter[0x76] = this.memoryWriter[0xFF76] = this.cartIgnoreWrite;
+  this.memoryHighWriter[0x77] = this.memoryWriter[0xFF77] = this.cartIgnoreWrite;
+  //IE (Interrupt Enable)
+  this.memoryHighWriter[0xFF] = this.memoryWriter[0xFFFF] = function (parentObj, address, data) {
+    parentObj.interruptsEnabled = data;
+    parentObj.checkIRQMatching();
+  }
+  this.recompileModelSpecificIOWriteHandling();
+  this.recompileBootIOWriteHandling();
+}
+GameBoyCore.prototype.recompileModelSpecificIOWriteHandling = function () {
+  if (this.cGBC) {
+    //GameBoy Color Specific I/O:
+    //SC (Serial Transfer Control Register)
+    this.memoryHighWriter[0x2] = this.memoryWriter[0xFF02] = function (parentObj, address, data) {
+      if (((data & 0x1) == 0x1)) {
+        //Internal clock:
+        parentObj.memory[0xFF02] = (data & 0x7F);
+        parentObj.serialTimer = ((data & 0x2) == 0) ? 4096 : 128;  //Set the Serial IRQ counter.
+        parentObj.serialShiftTimer = parentObj.serialShiftTimerAllocated = ((data & 0x2) == 0) ? 512 : 16;  //Set the transfer data shift counter.
+      }
+      else {
+        //External clock:
+        parentObj.memory[0xFF02] = data;
+        parentObj.serialShiftTimer = parentObj.serialShiftTimerAllocated = parentObj.serialTimer = 0;  //Zero the timers, since we're emulating as if nothing is connected.
+      }
+    }
+    this.memoryHighWriter[0x40] = this.memoryWriter[0xFF40] = function (parentObj, address, data) {
+      if (parentObj.memory[0xFF40] != data) {
+        parentObj.midScanLineJIT();
+        var temp_var = (data > 0x7F);
+        if (temp_var != parentObj.LCDisOn) {
+          //When the display mode changes...
+          parentObj.LCDisOn = temp_var;
+          parentObj.memory[0xFF41] &= 0x78;
+          parentObj.midScanlineOffset = -1;
+          parentObj.totalLinesPassed = parentObj.currentX = parentObj.queuedScanLines = parentObj.lastUnrenderedLine = parentObj.STATTracker = parentObj.LCDTicks = parentObj.actualScanLine = parentObj.memory[0xFF44] = 0;
+          if (parentObj.LCDisOn) {
+            parentObj.modeSTAT = 2;
+            parentObj.matchLYC();  //Get the compare of the first scan line.
+            parentObj.LCDCONTROL = parentObj.LINECONTROL;
+          }
+          else {
+            parentObj.modeSTAT = 0;
+            parentObj.LCDCONTROL = parentObj.DISPLAYOFFCONTROL;
+            parentObj.DisplayShowOff();
+          }
+          parentObj.interruptsRequested &= 0xFD;
+        }
+        parentObj.gfxWindowCHRBankPosition = ((data & 0x40) == 0x40) ? 0x400 : 0;
+        parentObj.gfxWindowDisplay = ((data & 0x20) == 0x20);
+        parentObj.gfxBackgroundBankOffset = ((data & 0x10) == 0x10) ? 0 : 0x80;
+        parentObj.gfxBackgroundCHRBankPosition = ((data & 0x08) == 0x08) ? 0x400 : 0;
+        parentObj.gfxSpriteNormalHeight = ((data & 0x04) == 0);
+        parentObj.gfxSpriteShow = ((data & 0x02) == 0x02);
+        parentObj.BGPriorityEnabled = ((data & 0x01) == 0x01);
+        parentObj.priorityFlaggingPathRebuild();  //Special case the priority flagging as an optimization.
+        parentObj.memory[0xFF40] = data;
+      }
+    }
+    this.memoryHighWriter[0x41] = this.memoryWriter[0xFF41] = function (parentObj, address, data) {
+      parentObj.LYCMatchTriggerSTAT = ((data & 0x40) == 0x40);
+      parentObj.mode2TriggerSTAT = ((data & 0x20) == 0x20);
+      parentObj.mode1TriggerSTAT = ((data & 0x10) == 0x10);
+      parentObj.mode0TriggerSTAT = ((data & 0x08) == 0x08);
+      parentObj.memory[0xFF41] = data & 0x78;
+    }
+    this.memoryHighWriter[0x46] = this.memoryWriter[0xFF46] = function (parentObj, address, data) {
+      parentObj.memory[0xFF46] = data;
+      if (data < 0xE0) {
+        data <<= 8;
+        address = 0xFE00;
+        var stat = parentObj.modeSTAT;
+        parentObj.modeSTAT = 0;
+        var newData = 0;
+        do {
+          newData = parentObj.memoryReader[data](parentObj, data++);
+          if (newData != parentObj.memory[address]) {
+            //JIT the graphics render queue:
+            parentObj.modeSTAT = stat;
+            parentObj.graphicsJIT();
+            parentObj.modeSTAT = 0;
+            parentObj.memory[address++] = newData;
+            break;
+          }
+        } while (++address < 0xFEA0);
+        if (address < 0xFEA0) {
+          do {
+            parentObj.memory[address++] = parentObj.memoryReader[data](parentObj, data++);
+            parentObj.memory[address++] = parentObj.memoryReader[data](parentObj, data++);
+            parentObj.memory[address++] = parentObj.memoryReader[data](parentObj, data++);
+            parentObj.memory[address++] = parentObj.memoryReader[data](parentObj, data++);
+          } while (address < 0xFEA0);
+        }
+        parentObj.modeSTAT = stat;
+      }
+    }
+    //KEY1
+    this.memoryHighWriter[0x4D] = this.memoryWriter[0xFF4D] = function (parentObj, address, data) {
+      parentObj.memory[0xFF4D] = (data & 0x7F) | (parentObj.memory[0xFF4D] & 0x80);
+    }
+    this.memoryHighWriter[0x4F] = this.memoryWriter[0xFF4F] = function (parentObj, address, data) {
+      parentObj.currVRAMBank = data & 0x01;
+      if (parentObj.currVRAMBank > 0) {
+        parentObj.BGCHRCurrentBank = parentObj.BGCHRBank2;
+      }
+      else {
+        parentObj.BGCHRCurrentBank = parentObj.BGCHRBank1;
+      }
+      //Only writable by GBC.
+    }
+    this.memoryHighWriter[0x51] = this.memoryWriter[0xFF51] = function (parentObj, address, data) {
+      if (!parentObj.hdmaRunning) {
+        parentObj.memory[0xFF51] = data;
+      }
+    }
+    this.memoryHighWriter[0x52] = this.memoryWriter[0xFF52] = function (parentObj, address, data) {
+      if (!parentObj.hdmaRunning) {
+        parentObj.memory[0xFF52] = data & 0xF0;
+      }
+    }
+    this.memoryHighWriter[0x53] = this.memoryWriter[0xFF53] = function (parentObj, address, data) {
+      if (!parentObj.hdmaRunning) {
+        parentObj.memory[0xFF53] = data & 0x1F;
+      }
+    }
+    this.memoryHighWriter[0x54] = this.memoryWriter[0xFF54] = function (parentObj, address, data) {
+      if (!parentObj.hdmaRunning) {
+        parentObj.memory[0xFF54] = data & 0xF0;
+      }
+    }
+    this.memoryHighWriter[0x55] = this.memoryWriter[0xFF55] = function (parentObj, address, data) {
+      if (!parentObj.hdmaRunning) {
+        if ((data & 0x80) == 0) {
+          //DMA
+          parentObj.DMAWrite((data & 0x7F) + 1);
+          parentObj.memory[0xFF55] = 0xFF;  //Transfer completed.
+        }
+        else {
+          //H-Blank DMA
+          parentObj.hdmaRunning = true;
+          parentObj.memory[0xFF55] = data & 0x7F;
+        }
+      }
+      else if ((data & 0x80) == 0) {
+        //Stop H-Blank DMA
+        parentObj.hdmaRunning = false;
+        parentObj.memory[0xFF55] |= 0x80;
+      }
+      else {
+        parentObj.memory[0xFF55] = data & 0x7F;
+      }
+    }
+    this.memoryHighWriter[0x68] = this.memoryWriter[0xFF68] = function (parentObj, address, data) {
+      parentObj.memory[0xFF69] = parentObj.gbcBGRawPalette[data & 0x3F];
+      parentObj.memory[0xFF68] = data;
+    }
+    this.memoryHighWriter[0x69] = this.memoryWriter[0xFF69] = function (parentObj, address, data) {
+      parentObj.updateGBCBGPalette(parentObj.memory[0xFF68] & 0x3F, data);
+      if (parentObj.memory[0xFF68] > 0x7F) { // high bit = autoincrement
+        var next = ((parentObj.memory[0xFF68] + 1) & 0x3F);
+        parentObj.memory[0xFF68] = (next | 0x80);
+        parentObj.memory[0xFF69] = parentObj.gbcBGRawPalette[next];
+      }
+      else {
+        parentObj.memory[0xFF69] = data;
+      }
+    }
+    this.memoryHighWriter[0x6A] = this.memoryWriter[0xFF6A] = function (parentObj, address, data) {
+      parentObj.memory[0xFF6B] = parentObj.gbcOBJRawPalette[data & 0x3F];
+      parentObj.memory[0xFF6A] = data;
+    }
+    this.memoryHighWriter[0x6B] = this.memoryWriter[0xFF6B] = function (parentObj, address, data) {
+      parentObj.updateGBCOBJPalette(parentObj.memory[0xFF6A] & 0x3F, data);
+      if (parentObj.memory[0xFF6A] > 0x7F) { // high bit = autoincrement
+        var next = ((parentObj.memory[0xFF6A] + 1) & 0x3F);
+        parentObj.memory[0xFF6A] = (next | 0x80);
+        parentObj.memory[0xFF6B] = parentObj.gbcOBJRawPalette[next];
+      }
+      else {
+        parentObj.memory[0xFF6B] = data;
+      }
+    }
+    //SVBK
+    this.memoryHighWriter[0x70] = this.memoryWriter[0xFF70] = function (parentObj, address, data) {
+      var addressCheck = (parentObj.memory[0xFF51] << 8) | parentObj.memory[0xFF52];  //Cannot change the RAM bank while WRAM is the source of a running HDMA.
+      if (!parentObj.hdmaRunning || addressCheck < 0xD000 || addressCheck >= 0xE000) {
+        parentObj.gbcRamBank = Math.max(data & 0x07, 1);  //Bank range is from 1-7
+        parentObj.gbcRamBankPosition = ((parentObj.gbcRamBank - 1) << 12) - 0xD000;
+        parentObj.gbcRamBankPositionECHO = parentObj.gbcRamBankPosition - 0x2000;
+      }
+      parentObj.memory[0xFF70] = data;  //Bit 6 cannot be written to.
+    }
+    this.memoryHighWriter[0x74] = this.memoryWriter[0xFF74] = function (parentObj, address, data) {
+      parentObj.memory[0xFF74] = data;
+    }
+  }
+  else {
+    //Fill in the GameBoy Color I/O registers as normal RAM for GameBoy compatibility:
+    //SC (Serial Transfer Control Register)
+    this.memoryHighWriter[0x2] = this.memoryWriter[0xFF02] = function (parentObj, address, data) {
+      if (((data & 0x1) == 0x1)) {
+        //Internal clock:
+        parentObj.memory[0xFF02] = (data & 0x7F);
+        parentObj.serialTimer = 4096;  //Set the Serial IRQ counter.
+        parentObj.serialShiftTimer = parentObj.serialShiftTimerAllocated = 512;  //Set the transfer data shift counter.
+      }
+      else {
+        //External clock:
+        parentObj.memory[0xFF02] = data;
+        parentObj.serialShiftTimer = parentObj.serialShiftTimerAllocated = parentObj.serialTimer = 0;  //Zero the timers, since we're emulating as if nothing is connected.
+      }
+    }
+    this.memoryHighWriter[0x40] = this.memoryWriter[0xFF40] = function (parentObj, address, data) {
+      if (parentObj.memory[0xFF40] != data) {
+        parentObj.midScanLineJIT();
+        var temp_var = (data > 0x7F);
+        if (temp_var != parentObj.LCDisOn) {
+          //When the display mode changes...
+          parentObj.LCDisOn = temp_var;
+          parentObj.memory[0xFF41] &= 0x78;
+          parentObj.midScanlineOffset = -1;
+          parentObj.totalLinesPassed = parentObj.currentX = parentObj.queuedScanLines = parentObj.lastUnrenderedLine = parentObj.STATTracker = parentObj.LCDTicks = parentObj.actualScanLine = parentObj.memory[0xFF44] = 0;
+          if (parentObj.LCDisOn) {
+            parentObj.modeSTAT = 2;
+            parentObj.matchLYC();  //Get the compare of the first scan line.
+            parentObj.LCDCONTROL = parentObj.LINECONTROL;
+          }
+          else {
+            parentObj.modeSTAT = 0;
+            parentObj.LCDCONTROL = parentObj.DISPLAYOFFCONTROL;
+            parentObj.DisplayShowOff();
+          }
+          parentObj.interruptsRequested &= 0xFD;
+        }
+        parentObj.gfxWindowCHRBankPosition = ((data & 0x40) == 0x40) ? 0x400 : 0;
+        parentObj.gfxWindowDisplay = (data & 0x20) == 0x20;
+        parentObj.gfxBackgroundBankOffset = ((data & 0x10) == 0x10) ? 0 : 0x80;
+        parentObj.gfxBackgroundCHRBankPosition = ((data & 0x08) == 0x08) ? 0x400 : 0;
+        parentObj.gfxSpriteNormalHeight = ((data & 0x04) == 0);
+        parentObj.gfxSpriteShow = (data & 0x02) == 0x02;
+        parentObj.bgEnabled = ((data & 0x01) == 0x01);
+        parentObj.memory[0xFF40] = data;
+      }
+    }
+    this.memoryHighWriter[0x41] = this.memoryWriter[0xFF41] = function (parentObj, address, data) {
+      parentObj.LYCMatchTriggerSTAT = ((data & 0x40) == 0x40);
+      parentObj.mode2TriggerSTAT = ((data & 0x20) == 0x20);
+      parentObj.mode1TriggerSTAT = ((data & 0x10) == 0x10);
+      parentObj.mode0TriggerSTAT = ((data & 0x08) == 0x08);
+      parentObj.memory[0xFF41] = data & 0x78;
+      if ((!parentObj.usedBootROM || !parentObj.usedGBCBootROM) && parentObj.LCDisOn && parentObj.modeSTAT < 2) {
+        parentObj.interruptsRequested |= 0x2;
+        parentObj.checkIRQMatching();
+      }
+    }
+    this.memoryHighWriter[0x46] = this.memoryWriter[0xFF46] = function (parentObj, address, data) {
+      parentObj.memory[0xFF46] = data;
+      if (data > 0x7F && data < 0xE0) {  //DMG cannot DMA from the ROM banks.
+        data <<= 8;
+        address = 0xFE00;
+        var stat = parentObj.modeSTAT;
+        parentObj.modeSTAT = 0;
+        var newData = 0;
+        do {
+          newData = parentObj.memoryReader[data](parentObj, data++);
+          if (newData != parentObj.memory[address]) {
+            //JIT the graphics render queue:
+            parentObj.modeSTAT = stat;
+            parentObj.graphicsJIT();
+            parentObj.modeSTAT = 0;
+            parentObj.memory[address++] = newData;
+            break;
+          }
+        } while (++address < 0xFEA0);
+        if (address < 0xFEA0) {
+          do {
+            parentObj.memory[address++] = parentObj.memoryReader[data](parentObj, data++);
+            parentObj.memory[address++] = parentObj.memoryReader[data](parentObj, data++);
+            parentObj.memory[address++] = parentObj.memoryReader[data](parentObj, data++);
+            parentObj.memory[address++] = parentObj.memoryReader[data](parentObj, data++);
+          } while (address < 0xFEA0);
+        }
+        parentObj.modeSTAT = stat;
+      }
+    }
+    this.memoryHighWriter[0x47] = this.memoryWriter[0xFF47] = function (parentObj, address, data) {
+      if (parentObj.memory[0xFF47] != data) {
+        parentObj.midScanLineJIT();
+        parentObj.updateGBBGPalette(data);
+        parentObj.memory[0xFF47] = data;
+      }
+    }
+    this.memoryHighWriter[0x48] = this.memoryWriter[0xFF48] = function (parentObj, address, data) {
+      if (parentObj.memory[0xFF48] != data) {
+        parentObj.midScanLineJIT();
+        parentObj.updateGBOBJPalette(0, data);
+        parentObj.memory[0xFF48] = data;
+      }
+    }
+    this.memoryHighWriter[0x49] = this.memoryWriter[0xFF49] = function (parentObj, address, data) {
+      if (parentObj.memory[0xFF49] != data) {
+        parentObj.midScanLineJIT();
+        parentObj.updateGBOBJPalette(4, data);
+        parentObj.memory[0xFF49] = data;
+      }
+    }
+    this.memoryHighWriter[0x4D] = this.memoryWriter[0xFF4D] = function (parentObj, address, data) {
+      parentObj.memory[0xFF4D] = data;
+    }
+    this.memoryHighWriter[0x4F] = this.memoryWriter[0xFF4F] = this.cartIgnoreWrite;  //Not writable in DMG mode.
+    this.memoryHighWriter[0x55] = this.memoryWriter[0xFF55] = this.cartIgnoreWrite;
+    this.memoryHighWriter[0x68] = this.memoryWriter[0xFF68] = this.cartIgnoreWrite;
+    this.memoryHighWriter[0x69] = this.memoryWriter[0xFF69] = this.cartIgnoreWrite;
+    this.memoryHighWriter[0x6A] = this.memoryWriter[0xFF6A] = this.cartIgnoreWrite;
+    this.memoryHighWriter[0x6B] = this.memoryWriter[0xFF6B] = this.cartIgnoreWrite;
+    this.memoryHighWriter[0x6C] = this.memoryWriter[0xFF6C] = this.cartIgnoreWrite;
+    this.memoryHighWriter[0x70] = this.memoryWriter[0xFF70] = this.cartIgnoreWrite;
+    this.memoryHighWriter[0x74] = this.memoryWriter[0xFF74] = this.cartIgnoreWrite;
+  }
+}
+GameBoyCore.prototype.recompileBootIOWriteHandling = function () {
+  //Boot I/O Registers:
+  if (this.inBootstrap) {
+    this.memoryHighWriter[0x50] = this.memoryWriter[0xFF50] = function (parentObj, address, data) {
+      cout("Boot ROM reads blocked: Bootstrap process has ended.", 0);
+      parentObj.inBootstrap = false;
+      parentObj.disableBootROM();      //Fill in the boot ROM ranges with ROM  bank 0 ROM ranges
+      parentObj.memory[0xFF50] = data;  //Bits are sustained in memory?
+    }
+    if (this.cGBC) {
+      this.memoryHighWriter[0x6C] = this.memoryWriter[0xFF6C] = function (parentObj, address, data) {
+        if (parentObj.inBootstrap) {
+          parentObj.cGBC = ((data & 0x1) == 0);
+          //Exception to the GBC identifying code:
+          if (parentObj.name + parentObj.gameCode + parentObj.ROM[0x143] == "Game and Watch 50") {
+            parentObj.cGBC = true;
+            cout("Created a boot exception for Game and Watch Gallery 2 (GBC ID byte is wrong on the cartridge).", 1);
+          }
+          cout("Booted to GBC Mode: " + parentObj.cGBC, 0);
+        }
+        parentObj.memory[0xFF6C] = data;
+      }
+    }
+  }
+  else {
+    //Lockout the ROMs from accessing the BOOT ROM control register:
+    this.memoryHighWriter[0x50] = this.memoryWriter[0xFF50] = this.cartIgnoreWrite;
+  }
+}
+//Helper Functions
+GameBoyCore.prototype.toTypedArray = function (baseArray, memtype) {
+  try {
+    // The following line was modified for benchmarking:
+    if (settings[5] || (memtype != "float32" && GameBoyWindow.opera && this.checkForOperaMathBug())) {
+      return baseArray;
+    }
+    if (!baseArray || !baseArray.length) {
+      return [];
+    }
+    var length = baseArray.length;
+    switch (memtype) {
+      case "uint8":
+        var typedArrayTemp = new Uint8Array(length);
+        break;
+      case "int8":
+        var typedArrayTemp = new Int8Array(length);
+        break;
+      case "int32":
+        var typedArrayTemp = new Int32Array(length);
+        break;
+      case "float32":
+        var typedArrayTemp = new Float32Array(length);
+    }
+    for (var index = 0; index < length; index++) {
+      typedArrayTemp[index] = baseArray[index];
+    }
+    return typedArrayTemp;
+  }
+  catch (error) {
+    cout("Could not convert an array to a typed array: " + error.message, 1);
+    return baseArray;
+  }
+}
+GameBoyCore.prototype.fromTypedArray = function (baseArray) {
+  try {
+    if (!baseArray || !baseArray.length) {
+      return [];
+    }
+    var arrayTemp = [];
+    for (var index = 0; index < baseArray.length; ++index) {
+      arrayTemp[index] = baseArray[index];
+    }
+    return arrayTemp;
+  }
+  catch (error) {
+    cout("Conversion from a typed array failed: " + error.message, 1);
+    return baseArray;
+  }
+}
+GameBoyCore.prototype.getTypedArray = function (length, defaultValue, numberType) {
+  try {
+    if (settings[5]) {
+      throw(new Error(""));
+    }
+    // The following line was modified for benchmarking:
+    if (numberType != "float32" && GameBoyWindow.opera && this.checkForOperaMathBug()) {
+      //Caught Opera breaking typed array math:
+      throw(new Error(""));
+    }
+    switch (numberType) {
+      case "int8":
+        var arrayHandle = new Int8Array(length);
+        break;
+      case "uint8":
+        var arrayHandle = new Uint8Array(length);
+        break;
+      case "int32":
+        var arrayHandle = new Int32Array(length);
+        break;
+      case "float32":
+        var arrayHandle = new Float32Array(length);
+    }
+    if (defaultValue != 0) {
+      var index = 0;
+      while (index < length) {
+        arrayHandle[index++] = defaultValue;
+      }
+    }
+  }
+  catch (error) {
+    cout("Could not convert an array to a typed array: " + error.message, 1);
+    var arrayHandle = [];
+    var index = 0;
+    while (index < length) {
+      arrayHandle[index++] = defaultValue;
+    }
+  }
+  return arrayHandle;
+}
+GameBoyCore.prototype.checkForOperaMathBug = function () {
+  var testTypedArray = new Uint8Array(1);
+  testTypedArray[0] = -1;
+  testTypedArray[0] >>= 0;
+  if (testTypedArray[0] != 0xFF) {
+    cout("Detected faulty math by your browser.", 2);
+    return true;
+  }
+  else {
+    return false;
+  }
+}
+
+// End of js/GameBoyCore.js file.
+
+// Start of js/GameBoyIO.js file.
+
+"use strict";
+var gameboy = null;            //GameBoyCore object.
+var gbRunInterval = null;        //GameBoyCore Timer
+var settings = [            //Some settings.
+  true,                 //Turn on sound.
+  false,                //Boot with boot ROM first? (set to false for benchmarking)
+  false,                //Give priority to GameBoy mode
+  [39, 37, 38, 40, 88, 90, 16, 13],  //Keyboard button map.
+  true,                //Colorize GB mode?
+  false,                //Disallow typed arrays?
+  4,                  //Interval for the emulator loop.
+  15,                  //Audio buffer minimum span amount over x interpreter iterations.
+  30,                  //Audio buffer maximum span amount over x interpreter iterations.
+  false,                //Override to allow for MBC1 instead of ROM only (compatibility for broken 3rd-party cartridges).
+  false,                //Override MBC RAM disabling and always allow reading and writing to the banks.
+  false,                //Use the GameBoy boot ROM instead of the GameBoy Color boot ROM.
+  false,                //Scale the canvas in JS, or let the browser scale the canvas?
+  0x10,                //Internal audio buffer pre-interpolation factor.
+  1                  //Volume level set.
+];
+function start(canvas, ROM) {
+  clearLastEmulation();
+  autoSave();  //If we are about to load a new game, then save the last one...
+  gameboy = new GameBoyCore(canvas, ROM);
+  gameboy.openMBC = openSRAM;
+  gameboy.openRTC = openRTC;
+  gameboy.start();
+  run();
+}
+function run() {
+  if (GameBoyEmulatorInitialized()) {
+    if (!GameBoyEmulatorPlaying()) {
+      gameboy.stopEmulator &= 1;
+      cout("Starting the iterator.", 0);
+      var dateObj = new_Date();  // The line is changed for benchmarking.
+      gameboy.firstIteration = dateObj.getTime();
+      gameboy.iterations = 0;
+      // The following lines are commented out for benchmarking.
+      // gbRunInterval = setInterval(function () {
+      //  if (!document.hidden && !document.msHidden && !document.mozHidden && !document.webkitHidden) {
+      //    gameboy.run();
+      // }
+      // }, settings[6]);
+    }
+    else {
+      cout("The GameBoy core is already running.", 1);
+    }
+  }
+  else {
+    cout("GameBoy core cannot run while it has not been initialized.", 1);
+  }
+}
+function pause() {
+  if (GameBoyEmulatorInitialized()) {
+    if (GameBoyEmulatorPlaying()) {
+      clearLastEmulation();
+    }
+    else {
+      cout("GameBoy core has already been paused.", 1);
+    }
+  }
+  else {
+    cout("GameBoy core cannot be paused while it has not been initialized.", 1);
+  }
+}
+function clearLastEmulation() {
+  if (GameBoyEmulatorInitialized() && GameBoyEmulatorPlaying()) {
+    clearInterval(gbRunInterval);
+    gameboy.stopEmulator |= 2;
+    cout("The previous emulation has been cleared.", 0);
+  }
+  else {
+    cout("No previous emulation was found to be cleared.", 0);
+  }
+}
+function save() {
+  if (GameBoyEmulatorInitialized()) {
+    try {
+      var state_suffix = 0;
+      while (findValue("FREEZE_" + gameboy.name + "_" + state_suffix) != null) {
+        state_suffix++;
+      }
+      setValue("FREEZE_" + gameboy.name + "_" + state_suffix, gameboy.saveState());
+      cout("Saved the current state as: FREEZE_" + gameboy.name + "_" + state_suffix, 0);
+    }
+    catch (error) {
+      cout("Could not save the current emulation state(\"" + error.message + "\").", 2);
+    }
+  }
+  else {
+    cout("GameBoy core cannot be saved while it has not been initialized.", 1);
+  }
+}
+function saveSRAM() {
+  if (GameBoyEmulatorInitialized()) {
+    if (gameboy.cBATT) {
+      try {
+        var sram = gameboy.saveSRAMState();
+        if (sram.length > 0) {
+          cout("Saving the SRAM...", 0);
+          if (findValue("SRAM_" + gameboy.name) != null) {
+            //Remove the outdated storage format save:
+            cout("Deleting the old SRAM save due to outdated format.", 0);
+            deleteValue("SRAM_" + gameboy.name);
+          }
+          setValue("B64_SRAM_" + gameboy.name, arrayToBase64(sram));
+        }
+        else {
+          cout("SRAM could not be saved because it was empty.", 1);
+        }
+      }
+      catch (error) {
+        cout("Could not save the current emulation state(\"" + error.message + "\").", 2);
+      }
+    }
+    else {
+      cout("Cannot save a game that does not have battery backed SRAM specified.", 1);
+    }
+    saveRTC();
+  }
+  else {
+    cout("GameBoy core cannot be saved while it has not been initialized.", 1);
+  }
+}
+function saveRTC() {  //Execute this when SRAM is being saved as well.
+  if (GameBoyEmulatorInitialized()) {
+    if (gameboy.cTIMER) {
+      try {
+        cout("Saving the RTC...", 0);
+        setValue("RTC_" + gameboy.name, gameboy.saveRTCState());
+      }
+      catch (error) {
+        cout("Could not save the RTC of the current emulation state(\"" + error.message + "\").", 2);
+      }
+    }
+  }
+  else {
+    cout("GameBoy core cannot be saved while it has not been initialized.", 1);
+  }
+}
+function autoSave() {
+  if (GameBoyEmulatorInitialized()) {
+    cout("Automatically saving the SRAM.", 0);
+    saveSRAM();
+    saveRTC();
+  }
+}
+function openSRAM(filename) {
+  try {
+    if (findValue("B64_SRAM_" + filename) != null) {
+      cout("Found a previous SRAM state (Will attempt to load).", 0);
+      return base64ToArray(findValue("B64_SRAM_" + filename));
+    }
+    else if (findValue("SRAM_" + filename) != null) {
+      cout("Found a previous SRAM state (Will attempt to load).", 0);
+      return findValue("SRAM_" + filename);
+    }
+    else {
+      cout("Could not find any previous SRAM copy for the current ROM.", 0);
+    }
+  }
+  catch (error) {
+    cout("Could not open the  SRAM of the saved emulation state.", 2);
+  }
+  return [];
+}
+function openRTC(filename) {
+  try {
+    if (findValue("RTC_" + filename) != null) {
+      cout("Found a previous RTC state (Will attempt to load).", 0);
+      return findValue("RTC_" + filename);
+    }
+    else {
+      cout("Could not find any previous RTC copy for the current ROM.", 0);
+    }
+  }
+  catch (error) {
+    cout("Could not open the RTC data of the saved emulation state.", 2);
+  }
+  return [];
+}
+function openState(filename, canvas) {
+  try {
+    if (findValue(filename) != null) {
+      try {
+        clearLastEmulation();
+        cout("Attempting to run a saved emulation state.", 0);
+        gameboy = new GameBoyCore(canvas, "");
+        gameboy.savedStateFileName = filename;
+        gameboy.returnFromState(findValue(filename));
+        run();
+      }
+      catch (error) {
+        alert(error.message + " file: " + error.fileName + " line: " + error.lineNumber);
+      }
+    }
+    else {
+      cout("Could not find the save state " + filename + "\".", 2);
+    }
+  }
+  catch (error) {
+    cout("Could not open the saved emulation state.", 2);
+  }
+}
+function import_save(blobData) {
+  blobData = decodeBlob(blobData);
+  if (blobData && blobData.blobs) {
+    if (blobData.blobs.length > 0) {
+      for (var index = 0; index < blobData.blobs.length; ++index) {
+        cout("Importing blob \"" + blobData.blobs[index].blobID + "\"", 0);
+        if (blobData.blobs[index].blobContent) {
+          if (blobData.blobs[index].blobID.substring(0, 5) == "SRAM_") {
+            setValue("B64_" + blobData.blobs[index].blobID, base64(blobData.blobs[index].blobContent));
+          }
+          else {
+            setValue(blobData.blobs[index].blobID, JSON.parse(blobData.blobs[index].blobContent));
+          }
+        }
+        else if (blobData.blobs[index].blobID) {
+          cout("Save file imported had blob \"" + blobData.blobs[index].blobID + "\" with no blob data interpretable.", 2);
+        }
+        else {
+          cout("Blob chunk information missing completely.", 2);
+        }
+      }
+    }
+    else {
+      cout("Could not decode the imported file.", 2);
+    }
+  }
+  else {
+    cout("Could not decode the imported file.", 2);
+  }
+}
+function generateBlob(keyName, encodedData) {
+  //Append the file format prefix:
+  var saveString = "EMULATOR_DATA";
+  var consoleID = "GameBoy";
+  //Figure out the length:
+  var totalLength = (saveString.length + 4 + (1 + consoleID.length)) + ((1 + keyName.length) + (4 + encodedData.length));
+  //Append the total length in bytes:
+  saveString += to_little_endian_dword(totalLength);
+  //Append the console ID text's length:
+  saveString += to_byte(consoleID.length);
+  //Append the console ID text:
+  saveString += consoleID;
+  //Append the blob ID:
+  saveString += to_byte(keyName.length);
+  saveString += keyName;
+  //Now append the save data:
+  saveString += to_little_endian_dword(encodedData.length);
+  saveString += encodedData;
+  return saveString;
+}
+function generateMultiBlob(blobPairs) {
+  var consoleID = "GameBoy";
+  //Figure out the initial length:
+  var totalLength = 13 + 4 + 1 + consoleID.length;
+  //Append the console ID text's length:
+  var saveString = to_byte(consoleID.length);
+  //Append the console ID text:
+  saveString += consoleID;
+  var keyName = "";
+  var encodedData = "";
+  //Now append all the blobs:
+  for (var index = 0; index < blobPairs.length; ++index) {
+    keyName = blobPairs[index][0];
+    encodedData = blobPairs[index][1];
+    //Append the blob ID:
+    saveString += to_byte(keyName.length);
+    saveString += keyName;
+    //Now append the save data:
+    saveString += to_little_endian_dword(encodedData.length);
+    saveString += encodedData;
+    //Update the total length:
+    totalLength += 1 + keyName.length + 4 + encodedData.length;
+  }
+  //Now add the prefix:
+  saveString = "EMULATOR_DATA" + to_little_endian_dword(totalLength) + saveString;
+  return saveString;
+}
+function decodeBlob(blobData) {
+  /*Format is as follows:
+    - 13 byte string "EMULATOR_DATA"
+    - 4 byte total size (including these 4 bytes).
+    - 1 byte Console type ID length
+    - Console type ID text of 8 bit size
+    blobs {
+      - 1 byte blob ID length
+      - blob ID text (Used to say what the data is (SRAM/freeze state/etc...))
+      - 4 byte blob length
+      - blob length of 32 bit size
+    }
+  */
+  var length = blobData.length;
+  var blobProperties = {};
+  blobProperties.consoleID = null;
+  var blobsCount = -1;
+  blobProperties.blobs = [];
+  if (length > 17) {
+    if (blobData.substring(0, 13) == "EMULATOR_DATA") {
+      var length = Math.min(((blobData.charCodeAt(16) & 0xFF) << 24) | ((blobData.charCodeAt(15) & 0xFF) << 16) | ((blobData.charCodeAt(14) & 0xFF) << 8) | (blobData.charCodeAt(13) & 0xFF), length);
+      var consoleIDLength = blobData.charCodeAt(17) & 0xFF;
+      if (length > 17 + consoleIDLength) {
+        blobProperties.consoleID = blobData.substring(18, 18 + consoleIDLength);
+        var blobIDLength = 0;
+        var blobLength = 0;
+        for (var index = 18 + consoleIDLength; index < length;) {
+          blobIDLength = blobData.charCodeAt(index++) & 0xFF;
+          if (index + blobIDLength < length) {
+            blobProperties.blobs[++blobsCount] = {};
+            blobProperties.blobs[blobsCount].blobID = blobData.substring(index, index + blobIDLength);
+            index += blobIDLength;
+            if (index + 4 < length) {
+              blobLength = ((blobData.charCodeAt(index + 3) & 0xFF) << 24) | ((blobData.charCodeAt(index + 2) & 0xFF) << 16) | ((blobData.charCodeAt(index + 1) & 0xFF) << 8) | (blobData.charCodeAt(index) & 0xFF);
+              index += 4;
+              if (index + blobLength <= length) {
+                blobProperties.blobs[blobsCount].blobContent =  blobData.substring(index, index + blobLength);
+                index += blobLength;
+              }
+              else {
+                cout("Blob length check failed, blob determined to be incomplete.", 2);
+                break;
+              }
+            }
+            else {
+              cout("Blob was incomplete, bailing out.", 2);
+              break;
+            }
+          }
+          else {
+            cout("Blob was incomplete, bailing out.", 2);
+            break;
+          }
+        }
+      }
+    }
+  }
+  return blobProperties;
+}
+function matchKey(key) {  //Maps a keyboard key to a gameboy key.
+  //Order: Right, Left, Up, Down, A, B, Select, Start
+  for (var index = 0; index < settings[3].length; index++) {
+    if (settings[3][index] == key) {
+      return index;
+    }
+  }
+  return -1;
+}
+function GameBoyEmulatorInitialized() {
+  return (typeof gameboy == "object" && gameboy != null);
+}
+function GameBoyEmulatorPlaying() {
+  return ((gameboy.stopEmulator & 2) == 0);
+}
+function GameBoyKeyDown(e) {
+  if (GameBoyEmulatorInitialized() && GameBoyEmulatorPlaying()) {
+    var keycode = matchKey(e.keyCode);
+    if (keycode >= 0 && keycode < 8) {
+      gameboy.JoyPadEvent(keycode, true);
+      try {
+        e.preventDefault();
+      }
+      catch (error) { }
+    }
+  }
+}
+function GameBoyKeyUp(e) {
+  if (GameBoyEmulatorInitialized() && GameBoyEmulatorPlaying()) {
+    var keycode = matchKey(e.keyCode);
+    if (keycode >= 0 && keycode < 8) {
+      gameboy.JoyPadEvent(keycode, false);
+      try {
+        e.preventDefault();
+      }
+      catch (error) { }
+    }
+  }
+}
+function GameBoyGyroSignalHandler(e) {
+  if (GameBoyEmulatorInitialized() && GameBoyEmulatorPlaying()) {
+    if (e.gamma || e.beta) {
+      gameboy.GyroEvent(e.gamma * Math.PI / 180, e.beta * Math.PI / 180);
+    }
+    else {
+      gameboy.GyroEvent(e.x, e.y);
+    }
+    try {
+      e.preventDefault();
+    }
+    catch (error) { }
+  }
+}
+//The emulator will call this to sort out the canvas properties for (re)initialization.
+function initNewCanvas() {
+  if (GameBoyEmulatorInitialized()) {
+    gameboy.canvas.width = gameboy.canvas.clientWidth;
+    gameboy.canvas.height = gameboy.canvas.clientHeight;
+  }
+}
+//Call this when resizing the canvas:
+function initNewCanvasSize() {
+  if (GameBoyEmulatorInitialized()) {
+    if (!settings[12]) {
+      if (gameboy.onscreenWidth != 160 || gameboy.onscreenHeight != 144) {
+        gameboy.initLCD();
+      }
+    }
+    else {
+      if (gameboy.onscreenWidth != gameboy.canvas.clientWidth || gameboy.onscreenHeight != gameboy.canvas.clientHeight) {
+        gameboy.initLCD();
+      }
+    }
+  }
+}
+
+// End of js/GameBoyIO.js file.
+
+// Start of realtime.js file.
+// ROM code from Public Domain LPC2000 Demo "realtime" by AGO.
+
+gameboy_rom='r+BPyZiEZwA+AeBPySAobeEq6gAgKlYj5WJv6SRmZjjhKuXqACDJ/////////////////////////////////xgHZwCYhGcA2fX6/3/1xdXlIRPKNgHN9f/h0cHx6gAg+hLKtyAC8cnwgLcoF/CC7hjgUT6Q4FOv4FLgVOCAPv/gVfHZ8IG3IALx2fBA7gjgQA8PD+YB7gHgT/CC4FHuEOCCPojgU6/gUuBU4IE+/uBV4ID6NMs86jTL8dkKCgoKbWFkZSBieSBhZ28uIGVtYWlsOmdvYnV6b3ZAeWFob28uY29tCnVybDogc3BlY2N5LmRhLnJ1CgoKCv///////wDDSgnO7WZmzA0ACwNzAIMADAANAAgRH4iJAA7czG7m3d3Zmbu7Z2NuDuzM3dyZn7u5Mz5BR08nUyBSRUFMVElNRSCAAAAAAgEDADMBSTQeIUD/y37I8P/1y4fg//BE/pEg+su+8eD/yT7A4EY+KD0g/cnF1eWvEQPK1RITEhMGAyEAyuXFTgYAIWAMCQkqEhMqEhPB4SMFIOrhrwYIzYsU4dHByf////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////8AAgMFBggJCwwOEBETFBYXGBobHR4fISIjJSYnKSorLC0uLzAxMjM0NTY3ODg5Ojo7PDw9PT4+Pj8/Pz9AQEBAQEBAQEBAPz8/Pz4+PT08PDs7Ojk5ODc2NTU0MzIxMC8uLCsqKSgmJSQjISAfHRwaGRcWFRMSEA8NCwoIBwUEAgH//fz6+ff29PPx8O7t6+ro5+Xk4uHg3t3c2tnY19bU09LR0M/OzczLysnJyMfGxsXFxMPDw8LCwcHBwcDAwMDAwMDAwMDBwcHBwsLDw8PExcXGxsfIycnKy8zNzs/Q0dLT1NXX2Nna3N3e4OHi5OXn6Onr7O7v8fL09vf5+vz9AAEECRAZJDFAUWR5kKnE4QAhRGmQueQRQHGk2RBJhMEAQYTJEFmk8UCR5DmQ6UShAGHEKZD5ZNFAsSSZEIkEgQCBBIkQmSSxQNFk+ZApxGEAoUTpkDnkkUDxpFkQyYRBAMGESRDZpHFAEeS5kGlEIQDhxKmQeWRRQDEkGRAJBAEAAQQJEBkkMUBRZHmQqcThACFEaZC55BFAcaTZEEmEwQBBhMkQWaTxQJHkOZDpRKEAYcQpkPlk0UCxJJkQiQSBAIEEiRCZJLFA0WT5kCnEYQChROmQOeSRQPGkWRDJhEEAwYRJENmkcUAR5LmQaUQhAOHEqZB5ZFFAMSQZEAkEAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAgICAgIDAwMDBAQEBAUFBQUGBgYHBwcICAkJCQoKCgsLDAwNDQ4ODw8QEBEREhITExQUFRUWFxcYGRkaGhscHB0eHh8gISEiIyQkJSYnJygpKisrLC0uLzAxMTIzNDU2Nzg5Ojs8PT4/QEFCQ0RFRkdISUpLTE1OT1FSU1RVVldZWltcXV9gYWJkZWZnaWprbG5vcHJzdHZ3eXp7fX5/gYKEhYeIiouNjpCRk5SWl5manJ2foKKkpaepqqytr7GytLa3ubu9vsDCxMXHycvMztDS1NXX2dvd3+Hi5Obo6uzu8PL09vj6/P4A//z38Ofcz8CvnIdwVzwfAN+8l3BHHO/Aj1wn8Ld8PwC/fDfwp1wPwG8cx3AXvF8AnzzXcAecL8BP3Gfwd/x/AH/8d/Bn3E/AL5wHcNc8nwBfvBdwxxxvwA9cp/A3fL8AP3y38Cdcj8DvHEdwl7zfAB88V3CHnK/Az9zn8Pf8/wD//Pfw59zPwK+ch3BXPB8A37yXcEcc78CPXCfwt3w/AL98N/CnXA/AbxzHcBe8XwCfPNdwB5wvwE/cZ/B3/H8Af/x38GfcT8AvnAdw1zyfAF+8F3DHHG/AD1yn8Dd8vwA/fLfwJ1yPwO8cR3CXvN8AHzxXcIecr8DP3Ofw9/z/AP/////////////////////+/v7+/v79/f39/fz8/Pz8+/v7+vr6+vn5+fj4+Pf39/b29fX19PTz8/Ly8fHw8PDv7u7t7ezs6+vq6uno6Ofn5uXl5OPj4uHh4N/e3t3c3Nva2djY19bV1NTT0tHQz8/OzczLysnIx8bFxMPCwcDAvr28u7q5uLe2tbSzsrGwr62sq6qpqKalpKOioJ+enZyamZiWlZSTkZCPjYyLiYiHhYSCgYB+fXt6eHd1dHJxcG5sa2loZmVjYmBfXVtaWFdVU1JQTk1LSUhGREJBPz08Ojg2NDMxLy0rKigmJCIgHx0bGRcVExEPDQsJBwUDAf9/Px8PBwMBgEAgEAgEAgEAAQEBAQEBAQEBAQEA//////////////+AEAcAAQABAAEBAAEBAAEA/wD//wD//wD/AP+AKwcBAAEAAQD/AP8A/wD/AP8A/wABAAEAAQCARgcBAQEBAQD//////////////wABAQEBAQGAYQf///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+AwODw+Pz+/xEAwAGxwj4E9cU+BfUKbwMKZ37+gCALI34LAiN+AwILGOsahhIDHBwcHPE9IN7BIRAAGVRdPgX1Cm8DCmcalhIjfAILfQIDAx0dHR3xPSDnIRgAGVRd8T0grskRAcAB6cI+BPUKbwMKZ37+gCALI34LAiN+AwILGOs+CvUahhIcHBwc8T0g9CN8Agt9AgMD8T0g0MkgIEZJTExFRCAgIFBPTFlHT05TIEhFTElDT1BURVJJTiBBQ1RJT04gIQDADgpwLHQsGhPWICI2ACwNIPE+oOoQyngBCQDlYmsJVF3hDMYKR3AsdCwaG9YgIjYALA0g8a/qEcrJ+hDK/jDI1gTqEMpHPqCQ/lA4Aj5QDgAM1ggw+3ghAcARBAB3xggZDSD5+hHKg+oRykf+UDgCPlAOAAzWCDD7eC4td9YIGQ0g+ckh9grzMf/PzVABr+Am4P/gD+BD4EL2SOBFPkDgQT4E4AfN9RM+CuoAAA4HeeBwJqCvIstsKPsNIPIh/v8yy30g+wEKABH1/yFpAc3kE+cCAVYAEQDBIVt2zeQTrwYYIWsOzYsUIYsOzaQUxwGwAxEAgCGhF8XlzeQT4cERAIjN5BMhAJgRAwABYMDHcc9yIwUg+BQdIPHN9RMhuxUGAc2WE82JEz5E4EGv4EU+A+D/+z4B6hLK4E0QAAB4zccTBSD6zZATxwEACFkhAIhzIwt4sSD5IQDHPv9FdyRwJCJ3JXclcCwg8x5/IQCYx3PPNgDL1DYIx3PLlCPLVCjuPoABDxARIAAhIpjF5XfL1HfLlDwZDSD1POEswQUg7D486jPLr+o0yz3qL8s+oOCCPgLqG8vNiRM+ROBBr+BFPgPg/68+ACEXyyI+CiI+IHev6h7L4ITgluodyz4B6h/L6g/D6g3KBlARnAjNxAjNcwsBLAHFzTsLzQAJwQt4sSDzzZATxwEACFkhAIhzIwt4sSD5zfUTeQYQIYMOzYsUPv/qKcsGgBGwCM3ECM2JEwEsAcXNbAzNAAnBC3ixIPOv6hLKzZATPpDgU/PHAbADEQCIIaEXzeQTzfUTIQIWBgHNlhPNiRM+ROBBr+BFPgPg//sY/j4D6gAgzcRGBgMhF8t+gCJ+gDwifoB3zckP+jDLb/oxy2fNtgs+AeCB8IG3IPv6Dcq3KAPNcwHJ+h3LBgARTg2Hb2AZKmZvTgkq4ItfKjzgjD1PKuCNe4eHg0cRAMUqEhwFIPp5h4eBRxEAxCoSHAUg+n3qMMt86jHLyfCL4I7wjOCP8I3gkBEAw9XlzcoQ4dHwpeaAEhwBAwAJ8JA94JAg6CEAxQYPKk+gXxq3IB95yzegXxq3IBYqT6BfGrcgD3nLN6BfGrcgBiwsLBhHLOXNyhDwlrcoKwYB8KXGP0/LfygBBcXwpMY/Vx4AzZMOe8H18KPGP1ceAM2TDsHhJCJwGAzhJPCjxj8i8KTGPyIsJRbDBg/wjj3gjsLiCz4C6gAgw1JhfBjcHwAL7mpIYL9vBgMhF8t+gCJ+gDwifoB3zckPIcsNEQDGzf4MI+U+A+oAICEgy83+DPocy9YIb+ocy82vYAYDESDLIWIOxeXVzcoQ4fCjxhQi8KQiNg8jVF3hIyMjwQUg5M3ERsE+AeoAIAr+/ygiEQDGbyYAKRnlAwoDbyYAKRleI1bhKmZvxc0xHMwAQMEY2T4B4IHwgbcg+8l+PMjl1c3KEAYB8KVPy38oAQXF8KTLf/UoAi88Vx4AzZMO8XsgAi88xn/B9fCjy3/1KAIvPFceAM2TDvF7KAIvPMZ/wdESE3gSE+EjIyMYsFANAgAIDAYCRCgoFANEKAAUE0QAABQSRAAoFAJVKCjsA1UoAOwTVQAA7BJVACjsAAAEBQAAAAEFAAEBAwIGAQEDBwYCAgAHAwICAAcEAwMBAgYDAwEFBgQEAAECBAQAAwIFBQQFBgUFBAcGMgAAzgAAADIAAM4AAAAyAADOKAAAHhEAChEAAAAACu8AHu8AFAAKFAD2FAAPCgAF6AAC4gAQ3gAQ4gD+CgD74g4C3Q4C4QAC4vIC3fIC4AAM4PsM4PsQ4/sJ3fsJ/wABAQICAwMEBAUFAAAGAQYCBgMGBAYFBgAHAQcCBwMHBAcFBwYICQoKCwsMDA0NDgoPDxAQEQoSEhMTERQVFRYVFxUYCBkIGggb/yAAD/AbD/DlD/9//3+XEQAAAGD/f5cRAAAYAP9/lxEAAIB8lxH/f/9/QHz/f18IAADLI8sSeC9HeS9PAyEAAH2Pb3yPZwk4BWd9kW+3yxPLEn2Pb3yPZwk4BWd9kW+3yxPLEn2Pb3yPZwk4BWd9kW+3yxPLEn2Pb3yPZwk4BWd9kW+3yxPLEn2Pb3yPZwk4BWd9kW+3yxPLEn2Pb3yPZwk4BWd9kW+3yxPLEn2Pb3yPZwk4BWd9kW+3yxPLEn2Pb3yPZwk4BWd9kW+3yxPLEn2Pb3yPZwk4BWd9kW+3yxPLEn2Pb3yPZwk4BWd9kW+3yxPLEn2Pb3yPZwk4BWd9kW+3yxPLEn2Pb3yPZwk4BWd9kW+3yxPLEn2Pb3yPZwk4BWd9kW+3yxPLEn2Pb3yPZwk4BWd9kW+3yxPLEn2Pb3yPZwk4BWd9kW+3yxPLEn2Pb3yPZwk4BWd9kW+3yxPLEssoyxkJ0BPJ+hfLJgJvfuCcLzzgnn3GQG9+4Jvgn6/gmOCZ4JrgneChPkDgl/oYy29OfcZAb0bFeOCgeeCizdMQ8KPgpvCk4KnwpeCsr+Cg4KI+QOChzdMQ8KPgp/Ck4KrwpeCtwXkvPOCgr+CheOCizdMQ8KPgmfCk4JzwpeCf8Kbgl/Cp4JrwrOCd8KfgmPCq4JvwreCe+hnLJgJvTn3GQG9GxXjgoHkvPOChr+CizdMQ8KPgpvCk4KnwpeCswXngoHjgoa/gos3TEPCj4KfwpOCq8KXgra/goOChPkDgos3TEPCj4JnwpOCc8KXgn/Cm4JfwqeCa8KzgnfCn4JjwquCb8K3gnskq4KAq4KEq4KLwl1/woCYGV8t6ICDLe3soJy88X3qTMAIvPG96g1YlXiVvfiVuZxl8LzwYH3ovPFfLeyjhey88X5IwAi88b3qDViVeJW9+JW5nGXxH8Jhf8KEmBlfLeiAgy3t7KCcvPF96kzACLzxveoNWJV4lb34lbmcZfC88GB96LzxXy3so4XsvPF+SMAIvPG96g1YlXiVvfiVuZxl8T/CZX/CiJgZXy3ogIMt7eygnLzxfepMwAi88b3qDViVeJW9+JW5nGXwvPBgfei88V8t7KOF7LzxfkjACLzxveoNWJV4lb34lbmcZfICB4KPwml/woCYGV8t6ICDLe3soJy88X3qTMAIvPG96g1YlXiVvfiVuZxl8LzwYH3ovPFfLeyjhey88X5IwAi88b3qDViVeJW9+JW5nGXxH8Jtf8KEmBlfLeiAgy3t7KCcvPF96kzACLzxveoNWJV4lb34lbmcZfC88GB96LzxXy3so4XsvPF+SMAIvPG96g1YlXiVvfiVuZxl8T/CcX/CiJgZXy3ogIMt7eygnLzxfepMwAi88b3qDViVeJW9+JW5nGXwvPBgfei88V8t7KOF7LzxfkjACLzxveoNWJV4lb34lbmcZfICB4KTwnV/woCYGV8t6ICDLe3soJy88X3qTMAIvPG96g1YlXiVvfiVuZxl8LzwYH3ovPFfLeyjhey88X5IwAi88b3qDViVeJW9+JW5nGXxH8J5f8KEmBlfLeiAgy3t7KCcvPF96kzACLzxveoNWJV4lb34lbmcZfC88GB96LzxXy3so4XsvPF+SMAIvPG96g1YlXiVvfiVuZxl8T/CfX/CiJgZXy3ogIMt7eygnLzxfepMwAi88b3qDViVeJW9+JW5nGXwvPBgfei88V8t7KOF7LzxfkjACLzxveoNWJV4lb34lbmcZfICB4KXJ9T6D4EDxyfWv4EDxyfXF1eXHKv7/KFD+FiAaTiMqh4eHVF1vJgApKXgGmAlHelRne11vGNzGYBLPeBIcGNN2ACETyjQ1KPc1yfvFBmR2AAUg+8HJ+3YABSD7yfXF1eUqEhMLeLEg+OHRwfHJxeUBAKAhAMDNAxThwcnF5XEjBSD74cHJxdXlAQCAIZXKzQMU4dHBycXV5a/qFcuwIAwaEyIaEzIEDXjqFcvlxRq+EyAPIxq+IAkTIw0gCMHhGBkrGyMjBSDmecFPBBoTIhoTIiEVyzThDSDS+hXL4dHBydVfzXIUuzD60cnF9cH6FMrLD6mAR/CLkR+AR/AFqOoUysHJ9cXltxcXF/aA4Ggq4GkFIPo+5OBH4cHxyfXF5bcXFxf2gOBqKuBrBSD6PuTgSOBJ4cHxyT4Q4ADwAC/LN+bwRz4g4ADwAC/mD7DqFsvJzyEAgK8GIE8+CCINIPwFIPnHIQCABiBPIg0g/AUg+cnFzQMVSs0eFcHJxc0RFUjNGRVLzSMVwcnFBgHNKxXBycUGABj2xQYDGPHFBgLNKxXByfXlh4eAJsBvceHxyfXlh4cmwG9GI04jXiNW4fHJ9cXV5eCDKjzK8BPWIF/wg835FF95xghPezwY6PXF1eXF1c13FdHBex4FIS3LGNUBKssR8NjNlRURGPzNlRURnP/NlRUR9v/NlRUR//8+LzwZOPwCA3ovV3svXxMZyTAwRlBT/zAwUE5UU/8wMExJTkVT/xYFB1dFTENPTUUgVE8WBQgtUkVBTFRJTUUtFgAJREVNTyBNQURFIEVTUEVDSUFMTFkWAQpGT1IgTENQJzIwMDAgUEFSVFn/FgAAR1JFRVRJTlg6ICAgICAgICAgICAWAAFEU0MsUEFOLFNBQixGQVRBTElUWRYAAkpFRkYgRlJPSFdFSU4sSUNBUlVTFgADRE9YLFFVQU5HLEFCWVNTICAgICAWAAQgICAgICAgICAgICAgICAgICAgIBYABUNSRURJVFM6ICAgICAgICAgICAgFgAGQUxMIEdGWCZDT0RFIEJZIEFHTyAWAAdIRUxJQ09QVEVSIDNEIE1PREVMIBYACENSRUFURUQgQlkgQlVTWSAgICAgFgAJICAgICAgICAgICAgICAgICAgICAWAApVU0VEIFNPRlRXQVJFOiAgICAgIBYAC1JHQkRTLE5PJENBU0gsRkFSICAgFgAMICAgICAgICAgICAgICAgICAgICAWAA1DT05UQUNUOiAgICAgICAgICAgIBYADkdPQlVaT1ZAWUFIT08uQ09NICAgFgAPSFRUUDovL1NQRUNDWS5EQS5SVSAWABAgICAgICAgICAgICAgICAgICAgIBYAEVNFRSBZT1UgT04gR0JERVYyMDAw/wAAAAAAAAAAAAAAAAAAAAAICBwUHBQ4KDgoMDBwUCAgKCh8VHxUKCgAAAAAAAAAABQUPip/QT4qfFT+gnxUKCgICDw0fkL8rP6Cfmr8hHhYJCR+Wn5SPCR4SPyU/LRISBgYPCR+Wjwkflr8tH5KNDQQEDgocFAgIAAAAAAAAAAABAQOChwUOCg4KDgoHBQICBAQOCgcFBwUHBQ4KHBQICAAABQUPio8NH5CPCx8VCgoAAAICBwUPDR+QjwsOCgQEAAAAAAAAAAAEBA4KHBQcFAAAAAAAAB8fP6CfHwAAAAAAAAAAAAAAAAwMHhIeEgwMAQEDgoeEjwkeEjwkOCgQEAYGDwkflr+qv6q/LR4SDAwGBg8JHxUPDQ4KHxs/oJ8fBwcPiJ+Wjw0eEj8vP6CfHwcHD4iflo8NE5K/LR4SDAwJCR+Wn5afFT8tP6CfGwQEBwcPiJ8XPyEfnr8tHhIMDAYGDwkeFj8pP66/LR4SDAwPDx+Qv66XFQ4KHBQcFAgIBwcPiJ+Wjwkflr8tPiIcHAcHD4iflr+sn5KfHT4iHBwAAAAAAgIHBQICBAQOCgQEAAACAgcFAgIEBA4KDgocFAAAAAAHBQ4KHBQcFA4KAAAAAAAADw8fkJ8fPyEeHgAAAAAAAA4KBwUHBQ4KHBQAAAYGDwkflr8tHhoEBA4KBAQHBw+In5a/rL8pPi4+IhwcBwcPiJ+Wv66/oL+uvy0SEg4OHxEflr8pP6a/LT4iHBwHBw+In5a5qbgoP6y/IxwcDAweEh8VH5a7qr+uvyEeHgcHD4ifFx8RHhY/Lz+gnx8HBw+Inxc/IT4uOCg4KBAQBwcPiJ+Wvy8/qL+uvyEeHgkJH5a/rr+gv66/LT8tEhIPDx+QjwsOChwUHhY/IR4eDw8fkI+Og4KXFT8tHhIMDAkJH5afFR+Qv66/LT8tEhIICBwUHBQ4KDkpP66fEQ4OCgofFR+Qv6q/rr8tPy0SEgkJH5a/pr+qv6y7qr8tEhIHBw+In5a7qruqvy0+IhwcBwcPiJ+Wv66/IT4uOCgQEAcHD4iflr+uv6q/LT+inZ2HBw+In5a/LT4iPy0/LRISBwcPiJ8XP6Cfnr8tPiIcHB8fP6CfGw4KHBQcFBwUCAgJCR+Wn5a7qruqvy0eEgwMERE7qruqnxUfFR4SHBQICAkJH5aflr+uv6q/KR8VCgoJCR+WnxUOCg8JH5a/LRISCQkflr8tPy0eEhwUHBQICA8PH5C/LT46Dwsflr8hHh4HBw+IjwsOChwUHhYfEQ4OEBA4KDwkHhIPCQeEg4KBAQ4OHxEPDQcFDgoeGj4iHBwGBg8JH5a7qpERAAAAAAAAAAAAAAAAAAAAAB8fP6CfHx81rdPfJJne5X1MAIvPEevyxkwAYAfyxkwAYAfyxkwAYAfyxkwAYAfyxkwAYAfyxkwAYAfyxkwAYAfyxkwAYAfyxnLEcsXlDABhMsRyxeUMAGEyxHLF5QwAYTLEcsXlDABhMsRyxeUMAGEyxHLF5QwAYTLEcsXlDABhMsRyxeUMAGEeRcvT/F5MAIvPIVvJrcBAAA+t7zLEbrLED6/vcsRu8sQPj+8P8sRuj/LEL0/yxG7P8sQeLHIeKHAebcgB3xiV31rX3jLH9L/HD5AlU97lW96lPUwAi88R6/LGTABgB/LGTABgB/LGTABgB/LGTABgB/LGTABgB/LGTABgB/LGTABgB/LGTABgB/LGcsRyxeVMAGFyxHLF5UwAYXLEcsXlTABhcsRyxeVMAGFyxHLF5UwAYXLEcsXlTABhcsRyxeVMAGFyxHLF5UwAYV5Fy9P8XkwAi88hGcuQMMxHMsf0pcdPkCUT3qUZ3uV9TACLzxHr8sZMAGAH8sZMAGAH8sZMAGAH8sZMAGAH8sZMAGAH8sZMAGAH8sZMAGAH8sZMAGAH8sZyxHLF5QwAYTLEcsXlDABhMsRyxeUMAGEyxHLF5QwAYTLEcsXlDABhMsRyxeUMAGEyxHLF5QwAYTLEcsXlDABhHkXL0/xeTACLzyFbyZAwzEcyx/SoRt91r9PfZNvepT1MAIvPEevyxkwAYAfyxkwAYAfyxkwAYAfyxkwAYAfyxkwAYAfyxkwAYAfyxkwAYAfyxkwAYAfyxnLEcsXlTABhcsRyxeVMAGFyxHLF5UwAYXLEcsXlTABhcsRyxeVMAGFyxHLF5UwAYXLEcsXlTABhcsRyxeVMAGFeRcvT/F5MAIvPIRnLr/DMRz//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////3q8MAVUZ3tdb3u90pdAfZNPepRfkTA+V3nLPy88g+CDPn+R5YdPbyYARCkpKQkBkVIJweV41kAXb3nWQB8fH+YPZ/CChGd55gcGB/YITwpP8INHLMl5S1+RV3nLPy88g+CDPneR5YdPbyYARCkpKQkBklsJweV41kAXb3nWQB8fH+YPZ/CChGd55gcGB/YITwpP8INHLMmVT3qUX5EwPld5yz8vPIPggz5/keWHT28mAEQpKSkJAR9BCcHleNZAF2951kAfHx/mD2fwgoRneeYHBgf2CE8KT/CDRyzJeUtfkVd5yz8vPIPggz53keWHT28mAEQpKSkJASBKCcHleNZAF2951kAfHx/mD2fwgoRneeYHBgf2CE8KT/CDRyzJfrF3e8t4IAN6LCyAR8sJMAEkfrF3e8t4IAN6LCyAR8sJMAEkfrF3e8t4IAN6LCyAR8sJMAEkfrF3e8t4IAN6LCyAR8sJMAEkfrF3e8t4IAN6LCyAR8sJMAEkfrF3e8t4IAN6LCyAR8sJMAEkfrF3e8t4IAN6LCyAR8sJMAEkfrF3e8t4IAN6LCyAR8sJMAEkfrF3e8t4IAN6LCyAR8sJMAEkfrF3e8t4IAN6LCyAR8sJMAEkfrF3e8t4IAN6LCyAR8sJMAEkfrF3e8t4IAN6LCyAR8sJMAEkfrF3e8t4IAN6LCyAR8sJMAEkfrF3e8t4IAN6LCyAR8sJMAEkfrF3e8t4IAN6LCyAR8sJMAEkfrF3e8t4IAN6LCyAR8sJMAEkfrF3e8t4IAN6LCyAR8sJMAEkfrF3e8t4IAN6LCyAR8sJMAEkfrF3e8t4IAN6LCyAR8sJMAEkfrF3e8t4IAN6LCyAR8sJMAEkfrF3e8t4IAN6LCyAR8sJMAEkfrF3e8t4IAN6LCyAR8sJMAEkfrF3e8t4IAN6LCyAR8sJMAEkfrF3e8t4IAN6LCyAR8sJMAEkfrF3e8t4IAN6LCyAR8sJMAEkfrF3e8t4IAN6LCyAR8sJMAEkfrF3e8t4IAN6LCyAR8sJMAEkfrF3e8t4IAN6LCyAR8sJMAEkfrF3e8t4IAN6LCyAR8sJMAEkfrF3e8t4IAN6LCyAR8sJMAEkfrF3e8t4IAN6LCyAR8sJMAEkfrF3e8t4IAN6LCyAR8sJMAEkfrF3e8t4IAN6LCyAR8sJMAEkfrF3e8t4IAN6LCyAR8sJMAEkfrF3e8t4IAN6LCyAR8sJMAEkfrF3e8t4IAN6LCyAR8sJMAEkfrF3e8t4IAN6LCyAR8sJMAEkfrF3e8t4IAN6LCyAR8sJMAEkfrF3e8t4IAN6LCyAR8sJMAEkfrF3e8t4IAN6LCyAR8sJMAEkfrF3e8t4IAN6LCyAR8sJMAEkfrF3e8t4IAN6LCyAR8sJMAEkfrF3e8t4IAN6LCyAR8sJMAEkfrF3e8t4IAN6LCyAR8sJMAEkfrF3e8t4IAN6LCyAR8sJMAEkfrF3e8t4IAN6LCyAR8sJMAEkfrF3e8t4IAN6LCyAR8sJMAEkfrF3e8t4IAN6LCyAR8sJMAEkfrF3e8t4IAN6LCyAR8sJMAEkfrF3e8t4IAN6LCyAR8sJMAEkfrF3e8t4IAN6LCyAR8sJMAEkfrF3e8t4IAN6LCyAR8sJMAEkfrF3e8t4IAN6LCyAR8sJMAEkfrF3e8t4IAN6LCyAR8sJMAEkfrF3e8t4IAN6LCyAR8sJMAEkfrF3e8t4IAN6LCyAR8sJMAEkfrF3e8t4IAN6LCyAR8sJMAEkfrF3e8t4IAN6LCyAR8sJMAEkfrF3e8t4IAN6LCyAR8sJMAEkfrF3e8t4IAN6LCyAR8sJMAEkfrF3e8t4IAN6LCyAR8sJMAEkfrF3e8t4IAN6LCyAR8sJMAEkfrF3e8t4IAN6LCyAR8sJMAEkfrF3e8t4IAN6LCyAR8sJMAEkfrF3e8t4IAN6LCyAR8sJMAEkfrF3e8t4IAN6LCyAR8sJMAEkfrF3e8t4IAN6LCyAR8sJMAEkfrF3e8t4IAN6LCyAR8sJMAEkfrF3e8t4IAN6LCyAR8sJMAEkfrF3e8t4IAN6LCyAR8sJMAEkfrF3e8t4IAN6LCyAR8sJMAEkfrF3e8t4IAN6LCyAR8sJMAEkfrF3e8t4IAN6LCyAR8sJMAEkfrF3e8t4IAN6LCyAR8sJMAEkfrF3e8t4IAN6LCyAR8sJMAEkfrF3e8t4IAN6LCyAR8sJMAEkfrF3e8t4IAN6LCyAR8sJMAEkfrF3e8t4IAN6LCyAR8sJMAEkfrF3e8t4IAN6LCyAR8sJMAEkfrF3e8t4IAN6LCyAR8sJMAEkfrF3e8t4IAN6LCyAR8sJMAEkfrF3e8t4IAN6LCyAR8sJMAEkfrF3e8t4IAN6LCyAR8sJMAEkfrF3e8t4IAN6LCyAR8sJMAEkfrF3e8t4IAN6LCyAR8sJMAEkfrF3e8t4IAN6LCyAR8sJMAEkfrF3e8t4IAN6LCyAR8sJMAEkfrF3e8t4IAN6LCyAR8sJMAEkfrF3e8t4IAN6LCyAR8sJMAEkfrF3e8t4IAN6LCyAR8sJMAEkfrF3e8t4IAN6LCyAR8sJMAEkfrF3e8t4IAN6LCyAR8sJMAEkfrF3e8t4IAN6LCyAR8sJMAEkfrF3e8t4IAN6LCyAR8sJMAEkfrF3e8t4IAN6LCyAR8sJMAEkfrF3e8t4IAN6LCyAR8sJMAEkfrF3e8t4IAN6LCyAR8sJMAEkfrF3e8t4IAN6LCyAR8sJMAEkfrF3e8t4IAN6LCyAR8sJMAEkfrF3e8t4IAN6LCyAR8sJMAEkfrF3e8t4IAN6LCyAR8sJMAEkfrF3e8t4IAN6LCyAR8sJMAEkfrF3e8t4IAN6LCyAR8sJMAEkfrF3e8t4IAN6LCyAR8sJMAEkfrF3e8t4IAN6LCyAR8sJMAEkfrF3e8t4IAN6LCyAR8sJMAEkfrF3e8t4IAN6LCyAR8sJMAEkfrF3e8t4IAN6LCyAR8sJMAEkfrF3e8t4IAN6LCyAR8sJMAEkfrF3e8t4IAN6LCyAR8sJMAEkfrF3e8t4IAN6LCyAR8sJMAEkfrF3e8t4IAN6LCyAR8sJMAEkfrF3e8t4IAN6LCyAR8sJMAEkfrF3e8t4IAN6LCyAR8sJMAEkfrF3e8t4IAN6LCyAR8sJMAEkfrF3e8t4IAN6LCyAR8sJMAEkfrF3e8t4IAN6LCyAR8sJMAEkfrF3e8t4IAN6LCyAR8sJMAEkfrF3e8t4IAN6LCyAR8sJMAEkfrF3e8t4IAN6LCyAR8sJMAEkfrF3e8t4IAN6LCyAR8sJMAEkfrF3e8t4IAN6LCyAR8sJMAEkfrF3e8t4IAN6LCyAR8sJMAEkfrF3e8t4IAN6LCyAR8sJMAEkfrF3e8t4IAN6LCyAR8sJMAEkfrF3e8t4IAN6LCyAR8sJMAEkfrF3e8t4IAN6LCyAR8sJMAEkfrF3e8t4IAN6LCyAR8sJMAEkyX6xInvLeCAGessJMAEkgEcALH6xInvLeCAGessJMAEkgEcALH6xInvLeCAGessJMAEkgEcALH6xInvLeCAGessJMAEkgEcALH6xInvLeCAGessJMAEkgEcALH6xInvLeCAGessJMAEkgEcALH6xInvLeCAGessJMAEkgEcALH6xInvLeCAGessJMAEkgEcALH6xInvLeCAGessJMAEkgEcALH6xInvLeCAGessJMAEkgEcALH6xInvLeCAGessJMAEkgEcALH6xInvLeCAGessJMAEkgEcALH6xInvLeCAGessJMAEkgEcALH6xInvLeCAGessJMAEkgEcALH6xInvLeCAGessJMAEkgEcALH6xInvLeCAGessJMAEkgEcALH6xInvLeCAGessJMAEkgEcALH6xInvLeCAGessJMAEkgEcALH6xInvLeCAGessJMAEkgEcALH6xInvLeCAGessJMAEkgEcALH6xInvLeCAGessJMAEkgEcALH6xInvLeCAGessJMAEkgEcALH6xInvLeCAGessJMAEkgEcALH6xInvLeCAGessJMAEkgEcALH6xInvLeCAGessJMAEkgEcALH6xInvLeCAGessJMAEkgEcALH6xInvLeCAGessJMAEkgEcALH6xInvLeCAGessJMAEkgEcALH6xInvLeCAGessJMAEkgEcALH6xInvLeCAGessJMAEkgEcALH6xInvLeCAGessJMAEkgEcALH6xInvLeCAGessJMAEkgEcALH6xInvLeCAGessJMAEkgEcALH6xInvLeCAGessJMAEkgEcALH6xInvLeCAGessJMAEkgEcALH6xInvLeCAGessJMAEkgEcALH6xInvLeCAGessJMAEkgEcALH6xInvLeCAGessJMAEkgEcALH6xInvLeCAGessJMAEkgEcALH6xInvLeCAGessJMAEkgEcALH6xInvLeCAGessJMAEkgEcALH6xInvLeCAGessJMAEkgEcALH6xInvLeCAGessJMAEkgEcALH6xInvLeCAGessJMAEkgEcALH6xInvLeCAGessJMAEkgEcALH6xInvLeCAGessJMAEkgEcALH6xInvLeCAGessJMAEkgEcALH6xInvLeCAGessJMAEkgEcALH6xInvLeCAGessJMAEkgEcALH6xInvLeCAGessJMAEkgEcALH6xInvLeCAGessJMAEkgEcALH6xInvLeCAGessJMAEkgEcALH6xInvLeCAGessJMAEkgEcALH6xInvLeCAGessJMAEkgEcALH6xInvLeCAGessJMAEkgEcALH6xInvLeCAGessJMAEkgEcALH6xInvLeCAGessJMAEkgEcALH6xInvLeCAGessJMAEkgEcALH6xInvLeCAGessJMAEkgEcALH6xInvLeCAGessJMAEkgEcALH6xInvLeCAGessJMAEkgEcALH6xInvLeCAGessJMAEkgEcALH6xInvLeCAGessJMAEkgEcALH6xInvLeCAGessJMAEkgEcALH6xInvLeCAGessJMAEkgEcALH6xInvLeCAGessJMAEkgEcALH6xInvLeCAGessJMAEkgEcALH6xInvLeCAGessJMAEkgEcALH6xInvLeCAGessJMAEkgEcALH6xInvLeCAGessJMAEkgEcALH6xInvLeCAGessJMAEkgEcALH6xInvLeCAGessJMAEkgEcALH6xInvLeCAGessJMAEkgEcALH6xInvLeCAGessJMAEkgEcALH6xInvLeCAGessJMAEkgEcALH6xInvLeCAGessJMAEkgEcALH6xInvLeCAGessJMAEkgEcALH6xInvLeCAGessJMAEkgEcALH6xInvLeCAGessJMAEkgEcALH6xInvLeCAGessJMAEkgEcALH6xInvLeCAGessJMAEkgEcALH6xInvLeCAGessJMAEkgEcALH6xInvLeCAGessJMAEkgEcALH6xInvLeCAGessJMAEkgEcALH6xInvLeCAGessJMAEkgEcALH6xInvLeCAGessJMAEkgEcALH6xInvLeCAGessJMAEkgEcALH6xInvLeCAGessJMAEkgEcALH6xInvLeCAGessJMAEkgEcALH6xInvLeCAGessJMAEkgEcALH6xInvLeCAGessJMAEkgEcALH6xInvLeCAGessJMAEkgEcALH6xInvLeCAGessJMAEkgEcALH6xInvLeCAGessJMAEkgEcALH6xInvLeCAGessJMAEkgEcALH6xInvLeCAGessJMAEkgEcALH6xInvLeCAGessJMAEkgEcALH6xInvLeCAGessJMAEkgEcALH6xInvLeCAGessJMAEkgEcALH6xInvLeCAGessJMAEkgEcALH6xInvLeCAGessJMAEkgEcALH6xInvLeCAGessJMAEkgEcALH6xInvLeCAGessJMAEkgEcALH6xInvLeCAGessJMAEkgEcALH6xInvLeCAGessJMAEkgEcALH6xInvLeCAGessJMAEkgEcALH6xInvLeCAGessJMAEkgEcALH6xInvLeCAGessJMAEkgEcALH6xInvLeCAGessJMAEkgEcALH6xInvLeCAGessJMAEkgEcALH6xInvLeCAGessJMAEkgEcALH6xInvLeCAGessJMAEkgEcALH6xInvLeCAGessJMAEkgEcALH6xInvLeCAGessJMAEkgEcALH6xInvLeCAGessJMAEkgEcALH6xInvLeCAGessJMAEkgEcALH6xInvLeCAGessJMAEkgEcALH6xInvLeCAGessJMAEkgEcALH6xInvLeCAGessJMAEkgEcALH6xInvLeCAGessJMAEkgEcALMl+sXd7y3ggA3osLIBHywEwASV+sXd7y3ggA3osLIBHywEwASV+sXd7y3ggA3osLIBHywEwASV+sXd7y3ggA3osLIBHywEwASV+sXd7y3ggA3osLIBHywEwASV+sXd7y3ggA3osLIBHywEwASV+sXd7y3ggA3osLIBHywEwASV+sXd7y3ggA3osLIBHywEwASV+sXd7y3ggA3osLIBHywEwASV+sXd7y3ggA3osLIBHywEwASV+sXd7y3ggA3osLIBHywEwASV+sXd7y3ggA3osLIBHywEwASV+sXd7y3ggA3osLIBHywEwASV+sXd7y3ggA3osLIBHywEwASV+sXd7y3ggA3osLIBHywEwASV+sXd7y3ggA3osLIBHywEwASV+sXd7y3ggA3osLIBHywEwASV+sXd7y3ggA3osLIBHywEwASV+sXd7y3ggA3osLIBHywEwASV+sXd7y3ggA3osLIBHywEwASV+sXd7y3ggA3osLIBHywEwASV+sXd7y3ggA3osLIBHywEwASV+sXd7y3ggA3osLIBHywEwASV+sXd7y3ggA3osLIBHywEwASV+sXd7y3ggA3osLIBHywEwASV+sXd7y3ggA3osLIBHywEwASV+sXd7y3ggA3osLIBHywEwASV+sXd7y3ggA3osLIBHywEwASV+sXd7y3ggA3osLIBHywEwASV+sXd7y3ggA3osLIBHywEwASV+sXd7y3ggA3osLIBHywEwASV+sXd7y3ggA3osLIBHywEwASV+sXd7y3ggA3osLIBHywEwASV+sXd7y3ggA3osLIBHywEwASV+sXd7y3ggA3osLIBHywEwASV+sXd7y3ggA3osLIBHywEwASV+sXd7y3ggA3osLIBHywEwASV+sXd7y3ggA3osLIBHywEwASV+sXd7y3ggA3osLIBHywEwASV+sXd7y3ggA3osLIBHywEwASV+sXd7y3ggA3osLIBHywEwASV+sXd7y3ggA3osLIBHywEwASV+sXd7y3ggA3osLIBHywEwASV+sXd7y3ggA3osLIBHywEwASV+sXd7y3ggA3osLIBHywEwASV+sXd7y3ggA3osLIBHywEwASV+sXd7y3ggA3osLIBHywEwASV+sXd7y3ggA3osLIBHywEwASV+sXd7y3ggA3osLIBHywEwASV+sXd7y3ggA3osLIBHywEwASV+sXd7y3ggA3osLIBHywEwASV+sXd7y3ggA3osLIBHywEwASV+sXd7y3ggA3osLIBHywEwASV+sXd7y3ggA3osLIBHywEwASV+sXd7y3ggA3osLIBHywEwASV+sXd7y3ggA3osLIBHywEwASV+sXd7y3ggA3osLIBHywEwASV+sXd7y3ggA3osLIBHywEwASV+sXd7y3ggA3osLIBHywEwASV+sXd7y3ggA3osLIBHywEwASV+sXd7y3ggA3osLIBHywEwASV+sXd7y3ggA3osLIBHywEwASV+sXd7y3ggA3osLIBHywEwASV+sXd7y3ggA3osLIBHywEwASV+sXd7y3ggA3osLIBHywEwASV+sXd7y3ggA3osLIBHywEwASV+sXd7y3ggA3osLIBHywEwASV+sXd7y3ggA3osLIBHywEwASV+sXd7y3ggA3osLIBHywEwASV+sXd7y3ggA3osLIBHywEwASV+sXd7y3ggA3osLIBHywEwASV+sXd7y3ggA3osLIBHywEwASV+sXd7y3ggA3osLIBHywEwASV+sXd7y3ggA3osLIBHywEwASV+sXd7y3ggA3osLIBHywEwASV+sXd7y3ggA3osLIBHywEwASV+sXd7y3ggA3osLIBHywEwASV+sXd7y3ggA3osLIBHywEwASV+sXd7y3ggA3osLIBHywEwASV+sXd7y3ggA3osLIBHywEwASV+sXd7y3ggA3osLIBHywEwASV+sXd7y3ggA3osLIBHywEwASV+sXd7y3ggA3osLIBHywEwASV+sXd7y3ggA3osLIBHywEwASV+sXd7y3ggA3osLIBHywEwASV+sXd7y3ggA3osLIBHywEwASV+sXd7y3ggA3osLIBHywEwASV+sXd7y3ggA3osLIBHywEwASV+sXd7y3ggA3osLIBHywEwASV+sXd7y3ggA3osLIBHywEwASV+sXd7y3ggA3osLIBHywEwASV+sXd7y3ggA3osLIBHywEwASV+sXd7y3ggA3osLIBHywEwASV+sXd7y3ggA3osLIBHywEwASV+sXd7y3ggA3osLIBHywEwASV+sXd7y3ggA3osLIBHywEwASV+sXd7y3ggA3osLIBHywEwASV+sXd7y3ggA3osLIBHywEwASV+sXd7y3ggA3osLIBHywEwASV+sXd7y3ggA3osLIBHywEwASV+sXd7y3ggA3osLIBHywEwASV+sXd7y3ggA3osLIBHywEwASV+sXd7y3ggA3osLIBHywEwASV+sXd7y3ggA3osLIBHywEwASV+sXd7y3ggA3osLIBHywEwASV+sXd7y3ggA3osLIBHywEwASV+sXd7y3ggA3osLIBHywEwASV+sXd7y3ggA3osLIBHywEwASV+sXd7y3ggA3osLIBHywEwASV+sXd7y3ggA3osLIBHywEwASV+sXd7y3ggA3osLIBHywEwASV+sXd7y3ggA3osLIBHywEwASV+sXd7y3ggA3osLIBHywEwASV+sXd7y3ggA3osLIBHywEwASV+sXd7y3ggA3osLIBHywEwASV+sXd7y3ggA3osLIBHywEwASV+sXd7y3ggA3osLIBHywEwASV+sXd7y3ggA3osLIBHywEwASV+sXd7y3ggA3osLIBHywEwASV+sXd7y3ggA3osLIBHywEwASV+sXd7y3ggA3osLIBHywEwASV+sXd7y3ggA3osLIBHywEwASV+sXd7y3ggA3osLIBHywEwASV+sXd7y3ggA3osLIBHywEwASV+sXd7y3ggA3osLIBHywEwASV+sXd7y3ggA3osLIBHywEwASV+sXd7y3ggA3osLIBHywEwASV+sXd7y3ggA3osLIBHywEwASXJfrF3e8t4IAZ6ywEwASWARywsfrF3e8t4IAZ6ywEwASWARywsfrF3e8t4IAZ6ywEwASWARywsfrF3e8t4IAZ6ywEwASWARywsfrF3e8t4IAZ6ywEwASWARywsfrF3e8t4IAZ6ywEwASWARywsfrF3e8t4IAZ6ywEwASWARywsfrF3e8t4IAZ6ywEwASWARywsfrF3e8t4IAZ6ywEwASWARywsfrF3e8t4IAZ6ywEwASWARywsfrF3e8t4IAZ6ywEwASWARywsfrF3e8t4IAZ6ywEwASWARywsfrF3e8t4IAZ6ywEwASWARywsfrF3e8t4IAZ6ywEwASWARywsfrF3e8t4IAZ6ywEwASWARywsfrF3e8t4IAZ6ywEwASWARywsfrF3e8t4IAZ6ywEwASWARywsfrF3e8t4IAZ6ywEwASWARywsfrF3e8t4IAZ6ywEwASWARywsfrF3e8t4IAZ6ywEwASWARywsfrF3e8t4IAZ6ywEwASWARywsfrF3e8t4IAZ6ywEwASWARywsfrF3e8t4IAZ6ywEwASWARywsfrF3e8t4IAZ6ywEwASWARywsfrF3e8t4IAZ6ywEwASWARywsfrF3e8t4IAZ6ywEwASWARywsfrF3e8t4IAZ6ywEwASWARywsfrF3e8t4IAZ6ywEwASWARywsfrF3e8t4IAZ6ywEwASWARywsfrF3e8t4IAZ6ywEwASWARywsfrF3e8t4IAZ6ywEwASWARywsfrF3e8t4IAZ6ywEwASWARywsfrF3e8t4IAZ6ywEwASWARywsfrF3e8t4IAZ6ywEwASWARywsfrF3e8t4IAZ6ywEwASWARywsfrF3e8t4IAZ6ywEwASWARywsfrF3e8t4IAZ6ywEwASWARywsfrF3e8t4IAZ6ywEwASWARywsfrF3e8t4IAZ6ywEwASWARywsfrF3e8t4IAZ6ywEwASWARywsfrF3e8t4IAZ6ywEwASWARywsfrF3e8t4IAZ6ywEwASWARywsfrF3e8t4IAZ6ywEwASWARywsfrF3e8t4IAZ6ywEwASWARywsfrF3e8t4IAZ6ywEwASWARywsfrF3e8t4IAZ6ywEwASWARywsfrF3e8t4IAZ6ywEwASWARywsfrF3e8t4IAZ6ywEwASWARywsfrF3e8t4IAZ6ywEwASWARywsfrF3e8t4IAZ6ywEwASWARywsfrF3e8t4IAZ6ywEwASWARywsfrF3e8t4IAZ6ywEwASWARywsfrF3e8t4IAZ6ywEwASWARywsfrF3e8t4IAZ6ywEwASWARywsfrF3e8t4IAZ6ywEwASWARywsfrF3e8t4IAZ6ywEwASWARywsfrF3e8t4IAZ6ywEwASWARywsfrF3e8t4IAZ6ywEwASWARywsfrF3e8t4IAZ6ywEwASWARywsfrF3e8t4IAZ6ywEwASWARywsfrF3e8t4IAZ6ywEwASWARywsfrF3e8t4IAZ6ywEwASWARywsfrF3e8t4IAZ6ywEwASWARywsfrF3e8t4IAZ6ywEwASWARywsfrF3e8t4IAZ6ywEwASWARywsfrF3e8t4IAZ6ywEwASWARywsfrF3e8t4IAZ6ywEwASWARywsfrF3e8t4IAZ6ywEwASWARywsfrF3e8t4IAZ6ywEwASWARywsfrF3e8t4IAZ6ywEwASWARywsfrF3e8t4IAZ6ywEwASWARywsfrF3e8t4IAZ6ywEwASWARywsfrF3e8t4IAZ6ywEwASWARywsfrF3e8t4IAZ6ywEwASWARywsfrF3e8t4IAZ6ywEwASWARywsfrF3e8t4IAZ6ywEwASWARywsfrF3e8t4IAZ6ywEwASWARywsfrF3e8t4IAZ6ywEwASWARywsfrF3e8t4IAZ6ywEwASWARywsfrF3e8t4IAZ6ywEwASWARywsfrF3e8t4IAZ6ywEwASWARywsfrF3e8t4IAZ6ywEwASWARywsfrF3e8t4IAZ6ywEwASWARywsfrF3e8t4IAZ6ywEwASWARywsfrF3e8t4IAZ6ywEwASWARywsfrF3e8t4IAZ6ywEwASWARywsfrF3e8t4IAZ6ywEwASWARywsfrF3e8t4IAZ6ywEwASWARywsfrF3e8t4IAZ6ywEwASWARywsfrF3e8t4IAZ6ywEwASWARywsfrF3e8t4IAZ6ywEwASWARywsfrF3e8t4IAZ6ywEwASWARywsfrF3e8t4IAZ6ywEwASWARywsfrF3e8t4IAZ6ywEwASWARywsfrF3e8t4IAZ6ywEwASWARywsfrF3e8t4IAZ6ywEwASWARywsfrF3e8t4IAZ6ywEwASWARywsfrF3e8t4IAZ6ywEwASWARywsfrF3e8t4IAZ6ywEwASWARywsfrF3e8t4IAZ6ywEwASWARywsfrF3e8t4IAZ6ywEwASWARywsfrF3e8t4IAZ6ywEwASWARywsfrF3e8t4IAZ6ywEwASWARywsfrF3e8t4IAZ6ywEwASWARywsfrF3e8t4IAZ6ywEwASWARywsfrF3e8t4IAZ6ywEwASWARywsfrF3e8t4IAZ6ywEwASWARywsfrF3e8t4IAZ6ywEwASWARywsfrF3e8t4IAZ6ywEwASWARywsfrF3e8t4IAZ6ywEwASWARywsfrF3e8t4IAZ6ywEwASWARywsfrF3e8t4IAZ6ywEwASWARywsfrF3e8t4IAZ6ywEwASWARywsfrF3e8t4IAZ6ywEwASWARywsfrF3e8t4IAZ6ywEwASWARywsfrF3e8t4IAZ6ywEwASWARywsfrF3e8t4IAZ6ywEwASWARywsfrF3e8t4IAZ6ywEwASWARywsfrF3e8t4IAZ6ywEwASWARywsfrF3e8t4IAZ6ywEwASWARywsyf///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////wHRe7o4A1pXewYHoE8K9XqgTwQK4JF6Hx8f5g9X8JNnTixGLXsfHx/mD1/wgoNne5LRxADB8JGiVy+mX3qhsyJ6L6ZfeqCzItF7ujgDWld7BgegTwr1eqBPBArgkXofHx/mD1fwk2dOLEYtex8fH+YPX/CCg2d7ktHEAMHwkaJXL6ZfeqGzInovpl96oLMi0Xu6OANaV3sGB6BPCvV6oE8ECuCReh8fH+YPV/CTZ04sRi17Hx8f5g9f8IKDZ3uS0cQAwfCRolcvpl96obMiei+mX3qgsyLRe7o4A1pXewYHoE8K9XqgTwQK4JF6Hx8f5g9X8JNnTixGLXsfHx/mD1/wgoNne5LRxADB8JGiVy+mX3qhsyJ6L6ZfeqCzItF7ujgDWld7BgegTwr1eqBPBArgkXofHx/mD1fwk2dOLEYtex8fH+YPX/CCg2d7ktHEAMHwkaJXL6ZfeqGzInovpl96oLMi0Xu6OANaV3sGB6BPCvV6oE8ECuCReh8fH+YPV/CTZ04sRi17Hx8f5g9f8IKDZ3uS0cQAwfCRolcvpl96obMiei+mX3qgsyLRe7o4A1pXewYHoE8K9XqgTwQK4JF6Hx8f5g9X8JNnTixGLXsfHx/mD1/wgoNne5LRxADB8JGiVy+mX3qhsyJ6L6ZfeqCzItF7ujgDWld7BgegTwr1eqBPBArgkXofHx/mD1fwk2dOLEYtex8fH+YPX/CCg2d7ktHEAMHwkaJXL6ZfeqGzInovpl96oLMi0Xu6OANaV3sGB6BPCvV6oE8ECuCReh8fH+YPV/CTZ04sRi17Hx8f5g9f8IKDZ3uS0cQAwfCRolcvpl96obMiei+mX3qgsyLRe7o4A1pXewYHoE8K9XqgTwQK4JF6Hx8f5g9X8JNnTixGLXsfHx/mD1/wgoNne5LRxADB8JGiVy+mX3qhsyJ6L6ZfeqCzItF7ujgDWld7BgegTwr1eqBPBArgkXofHx/mD1fwk2dOLEYtex8fH+YPX/CCg2d7ktHEAMHwkaJXL6ZfeqGzInovpl96oLMi0Xu6OANaV3sGB6BPCvV6oE8ECuCReh8fH+YPV/CTZ04sRi17Hx8f5g9f8IKDZ3uS0cQAwfCRolcvpl96obMiei+mX3qgsyLRe7o4A1pXewYHoE8K9XqgTwQK4JF6Hx8f5g9X8JNnTixGLXsfHx/mD1/wgoNne5LRxADB8JGiVy+mX3qhsyJ6L6ZfeqCzItF7ujgDWld7BgegTwr1eqBPBArgkXofHx/mD1fwk2dOLEYtex8fH+YPX/CCg2d7ktHEAMHwkaJXL6ZfeqGzInovpl96oLMi0Xu6OANaV3sGB6BPCvV6oE8ECuCReh8fH+YPV/CTZ04sRi17Hx8f5g9f8IKDZ3uS0cQAwfCRolcvpl96obMiei+mX3qgsyLRe7o4A1pXewYHoE8K9XqgTwQK4JF6Hx8f5g9X8JNnTixGLXsfHx/mD1/wgoNne5LRxADB8JGiVy+mX3qhsyJ6L6ZfeqCzItF7ujgDWld7BgegTwr1eqBPBArgkXofHx/mD1fwk2dOLEYtex8fH+YPX/CCg2d7ktHEAMHwkaJXL6ZfeqGzInovpl96oLMi0Xu6OANaV3sGB6BPCvV6oE8ECuCReh8fH+YPV/CTZ04sRi17Hx8f5g9f8IKDZ3uS0cQAwfCRolcvpl96obMiei+mX3qgsyLRe7o4A1pXewYHoE8K9XqgTwQK4JF6Hx8f5g9X8JNnTixGLXsfHx/mD1/wgoNne5LRxADB8JGiVy+mX3qhsyJ6L6ZfeqCzItF7ujgDWld7BgegTwr1eqBPBArgkXofHx/mD1fwk2dOLEYtex8fH+YPX/CCg2d7ktHEAMHwkaJXL6ZfeqGzInovpl96oLMi0Xu6OANaV3sGB6BPCvV6oE8ECuCReh8fH+YPV/CTZ04sRi17Hx8f5g9f8IKDZ3uS0cQAwfCRolcvpl96obMiei+mX3qgsyLRe7o4A1pXewYHoE8K9XqgTwQK4JF6Hx8f5g9X8JNnTixGLXsfHx/mD1/wgoNne5LRxADB8JGiVy+mX3qhsyJ6L6ZfeqCzItF7ujgDWld7BgegTwr1eqBPBArgkXofHx/mD1fwk2dOLEYtex8fH+YPX/CCg2d7ktHEAMHwkaJXL6ZfeqGzInovpl96oLMi0Xu6OANaV3sGB6BPCvV6oE8ECuCReh8fH+YPV/CTZ04sRi17Hx8f5g9f8IKDZ3uS0cQAwfCRolcvpl96obMiei+mX3qgsyLRe7o4A1pXewYHoE8K9XqgTwQK4JF6Hx8f5g9X8JNnTixGLXsfHx/mD1/wgoNne5LRxADB8JGiVy+mX3qhsyJ6L6ZfeqCzItF7ujgDWld7BgegTwr1eqBPBArgkXofHx/mD1fwk2dOLEYtex8fH+YPX/CCg2d7ktHEAMHwkaJXL6ZfeqGzInovpl96oLMi0Xu6OANaV3sGB6BPCvV6oE8ECuCReh8fH+YPV/CTZ04sRi17Hx8f5g9f8IKDZ3uS0cQAwfCRolcvpl96obMiei+mX3qgsyLRe7o4A1pXewYHoE8K9XqgTwQK4JF6Hx8f5g9X8JNnTixGLXsfHx/mD1/wgoNne5LRxADB8JGiVy+mX3qhsyJ6L6ZfeqCzItF7ujgDWld7BgegTwr1eqBPBArgkXofHx/mD1fwk2dOLEYtex8fH+YPX/CCg2d7ktHEAMHwkaJXL6ZfeqGzInovpl96oLMi0Xu6OANaV3sGB6BPCvV6oE8ECuCReh8fH+YPV/CTZ04sRi17Hx8f5g9f8IKDZ3uS0cQAwfCRolcvpl96obMiei+mX3qgsyLRe7o4A1pXewYHoE8K9XqgTwQK4JF6Hx8f5g9X8JNnTixGLXsfHx/mD1/wgoNne5LRxADB8JGiVy+mX3qhsyJ6L6ZfeqCzItF7ujgDWld7BgegTwr1eqBPBArgkXofHx/mD1fwk2dOLEYtex8fH+YPX/CCg2d7ktHEAMHwkaJXL6ZfeqGzInovpl96oLMi0Xu6OANaV3sGB6BPCvV6oE8ECuCReh8fH+YPV/CTZ04sRi17Hx8f5g9f8IKDZ3uS0cQAwfCRolcvpl96obMiei+mX3qgsyLRe7o4A1pXewYHoE8K9XqgTwQK4JF6Hx8f5g9X8JNnTixGLXsfHx/mD1/wgoNne5LRxADB8JGiVy+mX3qhsyJ6L6ZfeqCzItF7ujgDWld7BgegTwr1eqBPBArgkXofHx/mD1fwk2dOLEYtex8fH+YPX/CCg2d7ktHEAMHwkaJXL6ZfeqGzInovpl96oLMi0Xu6OANaV3sGB6BPCvV6oE8ECuCReh8fH+YPV/CTZ04sRi17Hx8f5g9f8IKDZ3uS0cQAwfCRolcvpl96obMiei+mX3qgsyLRe7o4A1pXewYHoE8K9XqgTwQK4JF6Hx8f5g9X8JNnTixGLXsfHx/mD1/wgoNne5LRxADB8JGiVy+mX3qhsyJ6L6ZfeqCzItF7ujgDWld7BgegTwr1eqBPBArgkXofHx/mD1fwk2dOLEYtex8fH+YPX/CCg2d7ktHEAMHwkaJXL6ZfeqGzInovpl96oLMi0Xu6OANaV3sGB6BPCvV6oE8ECuCReh8fH+YPV/CTZ04sRi17Hx8f5g9f8IKDZ3uS0cQAwfCRolcvpl96obMiei+mX3qgsyLRe7o4A1pXewYHoE8K9XqgTwQK4JF6Hx8f5g9X8JNnTixGLXsfHx/mD1/wgoNne5LRxADB8JGiVy+mX3qhsyJ6L6ZfeqCzItF7ujgDWld7BgegTwr1eqBPBArgkXofHx/mD1fwk2dOLEYtex8fH+YPX/CCg2d7ktHEAMHwkaJXL6ZfeqGzInovpl96oLMi0Xu6OANaV3sGB6BPCvV6oE8ECuCReh8fH+YPV/CTZ04sRi17Hx8f5g9f8IKDZ3uS0cQAwfCRolcvpl96obMiei+mX3qgsyLRe7o4A1pXewYHoE8K9XqgTwQK4JF6Hx8f5g9X8JNnTixGLXsfHx/mD1/wgoNne5LRxADB8JGiVy+mX3qhsyJ6L6ZfeqCzItF7ujgDWld7BgegTwr1eqBPBArgkXofHx/mD1fwk2dOLEYtex8fH+YPX/CCg2d7ktHEAMHwkaJXL6ZfeqGzInovpl96oLMi0Xu6OANaV3sGB6BPCvV6oE8ECuCReh8fH+YPV/CTZ04sRi17Hx8f5g9f8IKDZ3uS0cQAwfCRolcvpl96obMiei+mX3qgsyLRe7o4A1pXewYHoE8K9XqgTwQK4JF6Hx8f5g9X8JNnTixGLXsfHx/mD1/wgoNne5LRxADB8JGiVy+mX3qhsyJ6L6ZfeqCzItF7ujgDWld7BgegTwr1eqBPBArgkXofHx/mD1fwk2dOLEYtex8fH+YPX/CCg2d7ktHEAMHwkaJXL6ZfeqGzInovpl96oLMi0Xu6OANaV3sGB6BPCvV6oE8ECuCReh8fH+YPV/CTZ04sRi17Hx8f5g9f8IKDZ3uS0cQAwfCRolcvpl96obMiei+mX3qgsyLRe7o4A1pXewYHoE8K9XqgTwQK4JF6Hx8f5g9X8JNnTixGLXsfHx/mD1/wgoNne5LRxADB8JGiVy+mX3qhsyJ6L6ZfeqCzItF7ujgDWld7BgegTwr1eqBPBArgkXofHx/mD1fwk2dOLEYtex8fH+YPX/CCg2d7ktHEAMHwkaJXL6ZfeqGzInovpl96oLMi0Xu6OANaV3sGB6BPCvV6oE8ECuCReh8fH+YPV/CTZ04sRi17Hx8f5g9f8IKDZ3uS0cQAwfCRolcvpl96obMiei+mX3qgsyLRe7o4A1pXewYHoE8K9XqgTwQK4JF6Hx8f5g9X8JNnTixGLXsfHx/mD1/wgoNne5LRxADB8JGiVy+mX3qhsyJ6L6ZfeqCzItF7ujgDWld7BgegTwr1eqBPBArgkXofHx/mD1fwk2dOLEYtex8fH+YPX/CCg2d7ktHEAMHwkaJXL6ZfeqGzInovpl96oLMi0Xu6OANaV3sGB6BPCvV6oE8ECuCReh8fH+YPV/CTZ04sRi17Hx8f5g9f8IKDZ3uS0cQAwfCRolcvpl96obMiei+mX3qgsyLRe7o4A1pXewYHoE8K9XqgTwQK4JF6Hx8f5g9X8JNnTixGLXsfHx/mD1/wgoNne5LRxADB8JGiVy+mX3qhsyJ6L6ZfeqCzItF7ujgDWld7BgegTwr1eqBPBArgkXofHx/mD1fwk2dOLEYtex8fH+YPX/CCg2d7ktHEAMHwkaJXL6ZfeqGzInovpl96oLMi0Xu6OANaV3sGB6BPCvV6oE8ECuCReh8fH+YPV/CTZ04sRi17Hx8f5g9f8IKDZ3uS0cQAwfCRolcvpl96obMiei+mX3qgsyLRe7o4A1pXewYHoE8K9XqgTwQK4JF6Hx8f5g9X8JNnTixGLXsfHx/mD1/wgoNne5LRxADB8JGiVy+mX3qhsyJ6L6ZfeqCzItF7ujgDWld7BgegTwr1eqBPBArgkXofHx/mD1fwk2dOLEYtex8fH+YPX/CCg2d7ktHEAMHwkaJXL6ZfeqGzInovpl96oLMi0Xu6OANaV3sGB6BPCvV6oE8ECuCReh8fH+YPV/CTZ04sRi17Hx8f5g9f8IKDZ3uS0cQAwfCRolcvpl96obMiei+mX3qgsyLRe7o4A1pXewYHoE8K9XqgTwQK4JF6Hx8f5g9X8JNnTixGLXsfHx/mD1/wgoNne5LRxADB8JGiVy+mX3qhsyJ6L6ZfeqCzItF7ujgDWld7BgegTwr1eqBPBArgkXofHx/mD1fwk2dOLEYtex8fH+YPX/CCg2d7ktHEAMHwkaJXL6ZfeqGzInovpl96oLMi0Xu6OANaV3sGB6BPCvV6oE8ECuCReh8fH+YPV/CTZ04sRi17Hx8f5g9f8IKDZ3uS0cQAwfCRolcvpl96obMiei+mX3qgsyLRe7o4A1pXewYHoE8K9XqgTwQK4JF6Hx8f5g9X8JNnTixGLXsfHx/mD1/wgoNne5LRxADB8JGiVy+mX3qhsyJ6L6ZfeqCzItF7ujgDWld7BgegTwr1eqBPBArgkXofHx/mD1fwk2dOLEYtex8fH+YPX/CCg2d7ktHEAMHwkaJXL6ZfeqGzInovpl96oLMi0Xu6OANaV3sGB6BPCvV6oE8ECuCReh8fH+YPV/CTZ04sRi17Hx8f5g9f8IKDZ3uS0cQAwfCRolcvpl96obMiei+mX3qgsyLRe7o4A1pXewYHoE8K9XqgTwQK4JF6Hx8f5g9X8JNnTixGLXsfHx/mD1/wgoNne5LRxADB8JGiVy+mX3qhsyJ6L6ZfeqCzItF7ujgDWld7BgegTwr1eqBPBArgkXofHx/mD1fwk2dOLEYtex8fH+YPX/CCg2d7ktHEAMHwkaJXL6ZfeqGzInovpl96oLMi0Xu6OANaV3sGB6BPCvV6oE8ECuCReh8fH+YPV/CTZ04sRi17Hx8f5g9f8IKDZ3uS0cQAwfCRolcvpl96obMiei+mX3qgsyLRe7o4A1pXewYHoE8K9XqgTwQK4JF6Hx8f5g9X8JNnTixGLXsfHx/mD1/wgoNne5LRxADB8JGiVy+mX3qhsyJ6L6ZfeqCzItF7ujgDWld7BgegTwr1eqBPBArgkXofHx/mD1fwk2dOLEYtex8fH+YPX/CCg2d7ktHEAMHwkaJXL6ZfeqGzInovpl96oLMi0Xu6OANaV3sGB6BPCvV6oE8ECuCReh8fH+YPV/CTZ04sRi17Hx8f5g9f8IKDZ3uS0cQAwfCRolcvpl96obMiei+mX3qgsyLRe7o4A1pXewYHoE8K9XqgTwQK4JF6Hx8f5g9X8JNnTixGLXsfHx/mD1/wgoNne5LRxADB8JGiVy+mX3qhsyJ6L6ZfeqCzItF7ujgDWld7BgegTwr1eqBPBArgkXofHx/mD1fwk2dOLEYtex8fH+YPX/CCg2d7ktHEAMHwkaJXL6ZfeqGzInovpl96oLMi0Xu6OANaV3sGB6BPCvV6oE8ECuCReh8fH+YPV/CTZ04sRi17Hx8f5g9f8IKDZ3uS0cQAwfCRolcvpl96obMiei+mX3qgsyLRe7o4A1pXewYHoE8K9XqgTwQK4JF6Hx8f5g9X8JNnTixGLXsfHx/mD1/wgoNne5LRxADB8JGiVy+mX3qhsyJ6L6ZfeqCzItF7ujgDWld7BgegTwr1eqBPBArgkXofHx/mD1fwk2dOLEYtex8fH+YPX/CCg2d7ktHEAMHwkaJXL6ZfeqGzInovpl96oLMi0Xu6OANaV3sGB6BPCvV6oE8ECuCReh8fH+YPV/CTZ04sRi17Hx8f5g9f8IKDZ3uS0cQAwfCRolcvpl96obMiei+mX3qgsyLRe7o4A1pXewYHoE8K9XqgTwQK4JF6Hx8f5g9X8JNnTixGLXsfHx/mD1/wgoNne5LRxADB8JGiVy+mX3qhsyJ6L6ZfeqCzItF7ujgDWld7BgegTwr1eqBPBArgkXofHx/mD1fwk2dOLEYtex8fH+YPX/CCg2d7ktHEAMHwkaJXL6ZfeqGzInovpl96oLMi0Xu6OANaV3sGB6BPCvV6oE8ECuCReh8fH+YPV/CTZ04sRi17Hx8f5g9f8IKDZ3uS0cQAwfCRolcvpl96obMiei+mX3qgsyLRe7o4A1pXewYHoE8K9XqgTwQK4JF6Hx8f5g9X8JNnTixGLXsfHx/mD1/wgoNne5LRxADB8JGiVy+mX3qhsyJ6L6ZfeqCzItF7ujgDWld7BgegTwr1eqBPBArgkXofHx/mD1fwk2dOLEYtex8fH+YPX/CCg2d7ktHEAMHwkaJXL6ZfeqGzInovpl96oLMi0Xu6OANaV3sGB6BPCvV6oE8ECuCReh8fH+YPV/CTZ04sRi17Hx8f5g9f8IKDZ3uS0cQAwfCRolcvpl96obMiei+mX3qgsyLRe7o4A1pXewYHoE8K9XqgTwQK4JF6Hx8f5g9X8JNnTixGLXsfHx/mD1/wgoNne5LRxADB8JGiVy+mX3qhsyJ6L6ZfeqCzItF7ujgDWld7BgegTwr1eqBPBArgkXofHx/mD1fwk2dOLEYtex8fH+YPX/CCg2d7ktHEAMHwkaJXL6ZfeqGzInovpl96oLMi0Xu6OANaV3sGB6BPCvV6oE8ECuCReh8fH+YPV/CTZ04sRi17Hx8f5g9f8IKDZ3uS0cQAwfCRolcvpl96obMiei+mX3qgsyLRe7o4A1pXewYHoE8K9XqgTwQK4JF6Hx8f5g9X8JNnTixGLXsfHx/mD1/wgoNne5LRxADB8JGiVy+mX3qhsyJ6L6ZfeqCzItF7ujgDWld7BgegTwr1eqBPBArgkXofHx/mD1fwk2dOLEYtex8fH+YPX/CCg2d7ktHEAMHwkaJXL6ZfeqGzInovpl96oLMi0Xu6OANaV3sGB6BPCvV6oE8ECuCReh8fH+YPV/CTZ04sRi17Hx8f5g9f8IKDZ3uS0cQAwfCRolcvpl96obMiei+mX3qgsyLRe7o4A1pXewYHoE8K9XqgTwQK4JF6Hx8f5g9X8JNnTixGLXsfHx/mD1/wgoNne5LRxADB8JGiVy+mX3qhsyJ6L6ZfeqCzItF7ujgDWld7BgegTwr1eqBPBArgkXofHx/mD1fwk2dOLEYtex8fH+YPX/CCg2d7ktHEAMHwkaJXL6ZfeqGzInovpl96oLMi0Xu6OANaV3sGB6BPCvV6oE8ECuCReh8fH+YPV/CTZ04sRi17Hx8f5g9f8IKDZ3uS0cQAwfCRolcvpl96obMiei+mX3qgsyLRe7o4A1pXewYHoE8K9XqgTwQK4JF6Hx8f5g9X8JNnTixGLXsfHx/mD1/wgoNne5LRxADB8JGiVy+mX3qhsyJ6L6ZfeqCzItF7ujgDWld7BgegTwr1eqBPBArgkXofHx/mD1fwk2dOLEYtex8fH+YPX/CCg2d7ktHEAMHwkaJXL6ZfeqGzInovpl96oLMi0Xu6OANaV3sGB6BPCvV6oE8ECuCReh8fH+YPV/CTZ04sRi17Hx8f5g9f8IKDZ3uS0cQAwfCRolcvpl96obMiei+mX3qgsyLRe7o4A1pXewYHoE8K9XqgTwQK4JF6Hx8f5g9X8JNnTixGLXsfHx/mD1/wgoNne5LRxADB8JGiVy+mX3qhsyJ6L6ZfeqCzItF7ujgDWld7BgegTwr1eqBPBArgkXofHx/mD1fwk2dOLEYtex8fH+YPX/CCg2d7ktHEAMHwkaJXL6ZfeqGzInovpl96oLMi0Xu6OANaV3sGB6BPCvV6oE8ECuCReh8fH+YPV/CTZ04sRi17Hx8f5g9f8IKDZ3uS0cQAwfCRolcvpl96obMiei+mX3qgsyLRe7o4A1pXewYHoE8K9XqgTwQK4JF6Hx8f5g9X8JNnTixGLXsfHx/mD1/wgoNne5LRxADB8JGiVy+mX3qhsyJ6L6ZfeqCzItF7ujgDWld7BgegTwr1eqBPBArgkXofHx/mD1fwk2dOLEYtex8fH+YPX/CCg2d7ktHEAMHwkaJXL6ZfeqGzInovpl96oLMi0Xu6OANaV3sGB6BPCvV6oE8ECuCReh8fH+YPV/CTZ04sRi17Hx8f5g9f8IKDZ3uS0cQAwfCRolcvpl96obMiei+mX3qgsyLRe7o4A1pXewYHoE8K9XqgTwQK4JF6Hx8f5g9X8JNnTixGLXsfHx/mD1/wgoNne5LRxADB8JGiVy+mX3qhsyJ6L6ZfeqCzItF7ujgDWld7BgegTwr1eqBPBArgkXofHx/mD1fwk2dOLEYtex8fH+YPX/CCg2d7ktHEAMHwkaJXL6ZfeqGzInovpl96oLMi0Xu6OANaV3sGB6BPCvV6oE8ECuCReh8fH+YPV/CTZ04sRi17Hx8f5g9f8IKDZ3uS0cQAwfCRolcvpl96obMiei+mX3qgsyLRe7o4A1pXewYHoE8K9XqgTwQK4JF6Hx8f5g9X8JNnTixGLXsfHx/mD1/wgoNne5LRxADB8JGiVy+mX3qhsyJ6L6ZfeqCzItF7ujgDWld7BgegTwr1eqBPBArgkXofHx/mD1fwk2dOLEYtex8fH+YPX/CCg2d7ktHEAMHwkaJXL6ZfeqGzInovpl96oLMi0Xu6OANaV3sGB6BPCvV6oE8ECuCReh8fH+YPV/CTZ04sRi17Hx8f5g9f8IKDZ3uS0cQAwfCRolcvpl96obMiei+mX3qgsyLRe7o4A1pXewYHoE8K9XqgTwQK4JF6Hx8f5g9X8JNnTixGLXsfHx/mD1/wgoNne5LRxADB8JGiVy+mX3qhsyJ6L6ZfeqCzItF7ujgDWld7BgegTwr1eqBPBArgkXofHx/mD1fwk2dOLEYtex8fH+YPX/CCg2d7ktHEAMHwkaJXL6ZfeqGzInovpl96oLMi0Xu6OANaV3sGB6BPCvV6oE8ECuCReh8fH+YPV/CTZ04sRi17Hx8f5g9f8IKDZ3uS0cQAwfCRolcvpl96obMiei+mX3qgsyLRe7o4A1pXewYHoE8K9XqgTwQK4JF6Hx8f5g9X8JNnTixGLXsfHx/mD1/wgoNne5LRxADB8JGiVy+mX3qhsyJ6L6ZfeqCzItF7ujgDWld7BgegTwr1eqBPBArgkXofHx/mD1fwk2dOLEYtex8fH+YPX/CCg2d7ktHEAMHwkaJXL6ZfeqGzInovpl96oLMi0Xu6OANaV3sGB6BPCvV6oE8ECuCReh8fH+YPV/CTZ04sRi17Hx8f5g9f8IKDZ3uS0cQAwfCRolcvpl96obMiei+mX3qgsyLRe7o4A1pXewYHoE8K9XqgTwQK4JF6Hx8f5g9X8JNnTixGLXsfHx/mD1/wgoNne5LRxADB8JGiVy+mX3qhsyJ6L6ZfeqCzItF7ujgDWld7BgegTwr1eqBPBArgkXofHx/mD1fwk2dOLEYtex8fH+YPX/CCg2d7ktHEAMHwkaJXL6ZfeqGzInovpl96oLMi0Xu6OANaV3sGB6BPCvV6oE8ECuCReh8fH+YPV/CTZ04sRi17Hx8f5g9f8IKDZ3uS0cQAwfCRolcvpl96obMiei+mX3qgsyLRe7o4A1pXewYHoE8K9XqgTwQK4JF6Hx8f5g9X8JNnTixGLXsfHx/mD1/wgoNne5LRxADB8JGiVy+mX3qhsyJ6L6ZfeqCzItF7ujgDWld7BgegTwr1eqBPBArgkXofHx/mD1fwk2dOLEYtex8fH+YPX/CCg2d7ktHEAMHwkaJXL6ZfeqGzInovpl96oLMi0Xu6OANaV3sGB6BPCvV6oE8ECuCReh8fH+YPV/CTZ04sRi17Hx8f5g9f8IKDZ3uS0cQAwfCRolcvpl96obMiei+mX3qgsyIxDsrh+eEWwxgNIf3Er+oLyuoMyiwsLPCPPcjgj14sGrcqKPDGeeCT+g3Ktygm+gvKPP4DIAI+AeoLyiAH+gzKPOoMyvoMyl8WyvCT1nkSe8bH4JMqTypHKuUmxl+Hh4M8PG8qX1Z5h4eBPDxveE4sh4eARjw8bypmb3y6OAViV31rX3y4OAVgR31pT3q4OAVQR3tZT3iU4JR8h+CV5dXFr+CSzUpifeCS0eHVzUpi0eE+AeCSzUpi8JRfPniTZy5Hr8sdMAGEH8sdMAGEH8sdMAGEH8sdMAGEH8sdMAGEH8sdMAGEH8sdMAGEH8sdMAGEH8sdxkBnCA7KMQDC5fCVb8l7vTBVfZNPepRfkTAkV3nLPy88Rz5/kU3Fh09vJgBEKSkJAfdiCcHlJsLwkm94BoDJeUtfkVd5yz8vPEc+d5FNxYdPbyYARCkpCQH4ZwnB5SbC8JJveAaAyZVPepRfkTAkV3nLPy88Rz5/kU3Fh09vJgBEKSkJAalsCcHlJsLwkm94BoDJeUtfkVd5yz8vPEc+d5FNxYdPbyYARCkpCQGqcQnB5SbC8JJveAaAyYO4MAWTgnEsLA2DuDAFk4JxLCwNg7gwBZOCcSwsDYO4MAWTgnEsLA2DuDAFk4JxLCwNg7gwBZOCcSwsDYO4MAWTgnEsLA2DuDAFk4JxLCwNg7gwBZOCcSwsDYO4MAWTgnEsLA2DuDAFk4JxLCwNg7gwBZOCcSwsDYO4MAWTgnEsLA2DuDAFk4JxLCwNg7gwBZOCcSwsDYO4MAWTgnEsLA2DuDAFk4JxLCwNg7gwBZOCcSwsDYO4MAWTgnEsLA2DuDAFk4JxLCwNg7gwBZOCcSwsDYO4MAWTgnEsLA2DuDAFk4JxLCwNg7gwBZOCcSwsDYO4MAWTgnEsLA2DuDAFk4JxLCwNg7gwBZOCcSwsDYO4MAWTgnEsLA2DuDAFk4JxLCwNg7gwBZOCcSwsDYO4MAWTgnEsLA2DuDAFk4JxLCwNg7gwBZOCcSwsDYO4MAWTgnEsLA2DuDAFk4JxLCwNg7gwBZOCcSwsDYO4MAWTgnEsLA2DuDAFk4JxLCwNg7gwBZOCcSwsDYO4MAWTgnEsLA2DuDAFk4JxLCwNg7gwBZOCcSwsDYO4MAWTgnEsLA2DuDAFk4JxLCwNg7gwBZOCcSwsDYO4MAWTgnEsLA2DuDAFk4JxLCwNg7gwBZOCcSwsDYO4MAWTgnEsLA2DuDAFk4JxLCwNg7gwBZOCcSwsDYO4MAWTgnEsLA2DuDAFk4JxLCwNg7gwBZOCcSwsDYO4MAWTgnEsLA2DuDAFk4JxLCwNg7gwBZOCcSwsDYO4MAWTgnEsLA2DuDAFk4JxLCwNg7gwBZOCcSwsDYO4MAWTgnEsLA2DuDAFk4JxLCwNg7gwBZOCcSwsDYO4MAWTgnEsLA2DuDAFk4JxLCwNg7gwBZOCcSwsDYO4MAWTgnEsLA2DuDAFk4JxLCwNg7gwBZOCcSwsDYO4MAWTgnEsLA2DuDAFk4JxLCwNg7gwBZOCcSwsDYO4MAWTgnEsLA2DuDAFk4JxLCwNg7gwBZOCcSwsDYO4MAWTgnEsLA2DuDAFk4JxLCwNg7gwBZOCcSwsDYO4MAWTgnEsLA2DuDAFk4JxLCwNg7gwBZOCcSwsDYO4MAWTgnEsLA2DuDAFk4JxLCwNg7gwBZOCcSwsDYO4MAWTgnEsLA2DuDAFk4JxLCwNg7gwBZOCcSwsDYO4MAWTgnEsLA2DuDAFk4JxLCwNg7gwBZOCcSwsDYO4MAWTgnEsLA2DuDAFk4JxLCwNg7gwBZOCcSwsDYO4MAWTgnEsLA2DuDAFk4JxLCwNg7gwBZOCcSwsDYO4MAWTgnEsLA2DuDAFk4JxLCwNg7gwBZOCcSwsDYO4MAWTgnEsLA2DuDAFk4JxLCwNg7gwBZOCcSwsDYO4MAWTgnEsLA2DuDAFk4JxLCwNg7gwBZOCcSwsDYO4MAWTgnEsLA2DuDAFk4JxLCwNg7gwBZOCcSwsDYO4MAWTgnEsLA2DuDAFk4JxLCwNg7gwBZOCcSwsDYO4MAWTgnEsLA2DuDAFk4JxLCwNg7gwBZOCcSwsDYO4MAWTgnEsLA2DuDAFk4JxLCwNg7gwBZOCcSwsDYO4MAWTgnEsLA2DuDAFk4JxLCwNg7gwBZOCcSwsDYO4MAWTgnEsLA2DuDAFk4JxLCwNg7gwBZOCcSwsDYO4MAWTgnEsLA2DuDAFk4JxLCwNg7gwBZOCcSwsDYO4MAWTgnEsLA2DuDAFk4JxLCwNyXEsLIO4MAOTgg1xLCyDuDADk4INcSwsg7gwA5OCDXEsLIO4MAOTgg1xLCyDuDADk4INcSwsg7gwA5OCDXEsLIO4MAOTgg1xLCyDuDADk4INcSwsg7gwA5OCDXEsLIO4MAOTgg1xLCyDuDADk4INcSwsg7gwA5OCDXEsLIO4MAOTgg1xLCyDuDADk4INcSwsg7gwA5OCDXEsLIO4MAOTgg1xLCyDuDADk4INcSwsg7gwA5OCDXEsLIO4MAOTgg1xLCyDuDADk4INcSwsg7gwA5OCDXEsLIO4MAOTgg1xLCyDuDADk4INcSwsg7gwA5OCDXEsLIO4MAOTgg1xLCyDuDADk4INcSwsg7gwA5OCDXEsLIO4MAOTgg1xLCyDuDADk4INcSwsg7gwA5OCDXEsLIO4MAOTgg1xLCyDuDADk4INcSwsg7gwA5OCDXEsLIO4MAOTgg1xLCyDuDADk4INcSwsg7gwA5OCDXEsLIO4MAOTgg1xLCyDuDADk4INcSwsg7gwA5OCDXEsLIO4MAOTgg1xLCyDuDADk4INcSwsg7gwA5OCDXEsLIO4MAOTgg1xLCyDuDADk4INcSwsg7gwA5OCDXEsLIO4MAOTgg1xLCyDuDADk4INcSwsg7gwA5OCDXEsLIO4MAOTgg1xLCyDuDADk4INcSwsg7gwA5OCDXEsLIO4MAOTgg1xLCyDuDADk4INcSwsg7gwA5OCDXEsLIO4MAOTgg1xLCyDuDADk4INcSwsg7gwA5OCDXEsLIO4MAOTgg1xLCyDuDADk4INcSwsg7gwA5OCDXEsLIO4MAOTgg1xLCyDuDADk4INcSwsg7gwA5OCDXEsLIO4MAOTgg1xLCyDuDADk4INcSwsg7gwA5OCDXEsLIO4MAOTgg1xLCyDuDADk4INcSwsg7gwA5OCDXEsLIO4MAOTgg1xLCyDuDADk4INcSwsg7gwA5OCDXEsLIO4MAOTgg1xLCyDuDADk4INcSwsg7gwA5OCDXEsLIO4MAOTgg1xLCyDuDADk4INcSwsg7gwA5OCDXEsLIO4MAOTgg1xLCyDuDADk4INcSwsg7gwA5OCDXEsLIO4MAOTgg1xLCyDuDADk4INcSwsg7gwA5OCDXEsLIO4MAOTgg1xLCyDuDADk4INcSwsg7gwA5OCDXEsLIO4MAOTgg1xLCyDuDADk4INcSwsg7gwA5OCDXEsLIO4MAOTgg1xLCyDuDADk4INcSwsg7gwA5OCDXEsLIO4MAOTgg1xLCyDuDADk4INcSwsg7gwA5OCDXEsLIO4MAOTgg1xLCyDuDADk4INcSwsg7gwA5OCDXEsLIO4MAOTgg1xLCyDuDADk4INcSwsg7gwA5OCDXEsLIO4MAOTgg1xLCyDuDADk4INcSwsg7gwA5OCDXEsLIO4MAOTgg1xLCyDuDADk4INcSwsg7gwA5OCDXEsLIO4MAOTgg1xLCyDuDADk4INcSwsg7gwA5OCDXEsLIO4MAOTgg1xLCyDuDADk4INcSwsg7gwA5OCDXEsLIO4MAOTgg1xLCyDuDADk4INcSwsg7gwA5OCDXEsLIO4MAOTgg1xLCyDuDADk4INcSwsg7gwA5OCDcmDuDAFk4JxLCwMg7gwBZOCcSwsDIO4MAWTgnEsLAyDuDAFk4JxLCwMg7gwBZOCcSwsDIO4MAWTgnEsLAyDuDAFk4JxLCwMg7gwBZOCcSwsDIO4MAWTgnEsLAyDuDAFk4JxLCwMg7gwBZOCcSwsDIO4MAWTgnEsLAyDuDAFk4JxLCwMg7gwBZOCcSwsDIO4MAWTgnEsLAyDuDAFk4JxLCwMg7gwBZOCcSwsDIO4MAWTgnEsLAyDuDAFk4JxLCwMg7gwBZOCcSwsDIO4MAWTgnEsLAyDuDAFk4JxLCwMg7gwBZOCcSwsDIO4MAWTgnEsLAyDuDAFk4JxLCwMg7gwBZOCcSwsDIO4MAWTgnEsLAyDuDAFk4JxLCwMg7gwBZOCcSwsDIO4MAWTgnEsLAyDuDAFk4JxLCwMg7gwBZOCcSwsDIO4MAWTgnEsLAyDuDAFk4JxLCwMg7gwBZOCcSwsDIO4MAWTgnEsLAyDuDAFk4JxLCwMg7gwBZOCcSwsDIO4MAWTgnEsLAyDuDAFk4JxLCwMg7gwBZOCcSwsDIO4MAWTgnEsLAyDuDAFk4JxLCwMg7gwBZOCcSwsDIO4MAWTgnEsLAyDuDAFk4JxLCwMg7gwBZOCcSwsDIO4MAWTgnEsLAyDuDAFk4JxLCwMg7gwBZOCcSwsDIO4MAWTgnEsLAyDuDAFk4JxLCwMg7gwBZOCcSwsDIO4MAWTgnEsLAyDuDAFk4JxLCwMg7gwBZOCcSwsDIO4MAWTgnEsLAyDuDAFk4JxLCwMg7gwBZOCcSwsDIO4MAWTgnEsLAyDuDAFk4JxLCwMg7gwBZOCcSwsDIO4MAWTgnEsLAyDuDAFk4JxLCwMg7gwBZOCcSwsDIO4MAWTgnEsLAyDuDAFk4JxLCwMg7gwBZOCcSwsDIO4MAWTgnEsLAyDuDAFk4JxLCwMg7gwBZOCcSwsDIO4MAWTgnEsLAyDuDAFk4JxLCwMg7gwBZOCcSwsDIO4MAWTgnEsLAyDuDAFk4JxLCwMg7gwBZOCcSwsDIO4MAWTgnEsLAyDuDAFk4JxLCwMg7gwBZOCcSwsDIO4MAWTgnEsLAyDuDAFk4JxLCwMg7gwBZOCcSwsDIO4MAWTgnEsLAyDuDAFk4JxLCwMg7gwBZOCcSwsDIO4MAWTgnEsLAyDuDAFk4JxLCwMg7gwBZOCcSwsDIO4MAWTgnEsLAyDuDAFk4JxLCwMg7gwBZOCcSwsDIO4MAWTgnEsLAyDuDAFk4JxLCwMg7gwBZOCcSwsDIO4MAWTgnEsLAyDuDAFk4JxLCwMg7gwBZOCcSwsDIO4MAWTgnEsLAyDuDAFk4JxLCwMg7gwBZOCcSwsDIO4MAWTgnEsLAyDuDAFk4JxLCwMg7gwBZOCcSwsDIO4MAWTgnEsLAyDuDAFk4JxLCwMg7gwBZOCcSwsDIO4MAWTgnEsLAyDuDAFk4JxLCwMg7gwBZOCcSwsDIO4MAWTgnEsLAyDuDAFk4JxLCwMg7gwBZOCcSwsDIO4MAWTgnEsLAyDuDAFk4JxLCwMg7gwBZOCcSwsDIO4MAWTgnEsLAyDuDAFk4JxLCwMg7gwBZOCcSwsDIO4MAWTgnEsLAyDuDAFk4JxLCwMg7gwBZOCcSwsDIO4MAWTgnEsLAyDuDAFk4JxLCwMg7gwBZOCcSwsDIO4MAWTgnEsLAyDuDAFk4JxLCwMg7gwBZOCcSwsDMlxLCyDuDADk4IMcSwsg7gwA5OCDHEsLIO4MAOTggxxLCyDuDADk4IMcSwsg7gwA5OCDHEsLIO4MAOTggxxLCyDuDADk4IMcSwsg7gwA5OCDHEsLIO4MAOTggxxLCyDuDADk4IMcSwsg7gwA5OCDHEsLIO4MAOTggxxLCyDuDADk4IMcSwsg7gwA5OCDHEsLIO4MAOTggxxLCyDuDADk4IMcSwsg7gwA5OCDHEsLIO4MAOTggxxLCyDuDADk4IMcSwsg7gwA5OCDHEsLIO4MAOTggxxLCyDuDADk4IMcSwsg7gwA5OCDHEsLIO4MAOTggxxLCyDuDADk4IMcSwsg7gwA5OCDHEsLIO4MAOTggxxLCyDuDADk4IMcSwsg7gwA5OCDHEsLIO4MAOTggxxLCyDuDADk4IMcSwsg7gwA5OCDHEsLIO4MAOTggxxLCyDuDADk4IMcSwsg7gwA5OCDHEsLIO4MAOTggxxLCyDuDADk4IMcSwsg7gwA5OCDHEsLIO4MAOTggxxLCyDuDADk4IMcSwsg7gwA5OCDHEsLIO4MAOTggxxLCyDuDADk4IMcSwsg7gwA5OCDHEsLIO4MAOTggxxLCyDuDADk4IMcSwsg7gwA5OCDHEsLIO4MAOTggxxLCyDuDADk4IMcSwsg7gwA5OCDHEsLIO4MAOTggxxLCyDuDADk4IMcSwsg7gwA5OCDHEsLIO4MAOTggxxLCyDuDADk4IMcSwsg7gwA5OCDHEsLIO4MAOTggxxLCyDuDADk4IMcSwsg7gwA5OCDHEsLIO4MAOTggxxLCyDuDADk4IMcSwsg7gwA5OCDHEsLIO4MAOTggxxLCyDuDADk4IMcSwsg7gwA5OCDHEsLIO4MAOTggxxLCyDuDADk4IMcSwsg7gwA5OCDHEsLIO4MAOTggxxLCyDuDADk4IMcSwsg7gwA5OCDHEsLIO4MAOTggxxLCyDuDADk4IMcSwsg7gwA5OCDHEsLIO4MAOTggxxLCyDuDADk4IMcSwsg7gwA5OCDHEsLIO4MAOTggxxLCyDuDADk4IMcSwsg7gwA5OCDHEsLIO4MAOTggxxLCyDuDADk4IMcSwsg7gwA5OCDHEsLIO4MAOTggxxLCyDuDADk4IMcSwsg7gwA5OCDHEsLIO4MAOTggxxLCyDuDADk4IMcSwsg7gwA5OCDHEsLIO4MAOTggxxLCyDuDADk4IMcSwsg7gwA5OCDHEsLIO4MAOTggxxLCyDuDADk4IMcSwsg7gwA5OCDHEsLIO4MAOTggxxLCyDuDADk4IMcSwsg7gwA5OCDHEsLIO4MAOTggxxLCyDuDADk4IMcSwsg7gwA5OCDHEsLIO4MAOTggxxLCyDuDADk4IMcSwsg7gwA5OCDHEsLIO4MAOTggxxLCyDuDADk4IMcSwsg7gwA5OCDHEsLIO4MAOTggxxLCyDuDADk4IMcSwsg7gwA5OCDHEsLIO4MAOTggxxLCyDuDADk4IMcSwsg7gwA5OCDHEsLIO4MAOTggxxLCyDuDADk4IMcSwsg7gwA5OCDHEsLIO4MAOTggxxLCyDuDADk4IMcSwsg7gwA5OCDHEsLIO4MAOTggzJxg+Hh+oawXovpl96obMiei+mX3qgszIkeRgAInAtJCJwLSQicC0kInAtJCJwLSQicC0kInAtJCJwLSQicC0kInAtJCJwLSQicC0kInAtJCJwLSQW/8n///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+qqlVVqqpVVaqqVVWqqlVVqqpVVaqqVVWqqlVVqqpVVaqqVVWqqlVVqqpVVaqqVVWqqlVVqqpVVaqqVVWqqlVVqqpVVaqqVVWqqlVVqqpVVaqqVVWqqlVVqqpVVaqqVVWqqlVVqqpVVaqqVVWqqlVVqqpVVaqqVVWqqlVVqqpVVaqqVVWqqlVVqqpVVaqqVVWqqlVVqqpVVaqqVVWqqlVVqqpVVaqqVVWqqlVVqqpVVaqqVVWqqlVVqqpVVaqqVVWqqlVVqqpVVaqqVVWqqlVVqqpVVaqqVVWqqlVVqqpVVaqqVVWqqlVVqqpVVaqqVVWqqlVVqqpVVaqqVVWqqlVVACEzDDPAABIAEjPAMwwAIQAhMwwzwAASABIzwDMMACEAITMMM8AAEgASM8AzDAAhACEzDDPAABIAEjPAMwwAIQAhMwwzwAASABIzwDMMACEAITMMM8AAEgASM8AzDAAhACEzDDPAABIAEjPAMwwAIQAhMwwzwAASABIzwDMMACEAITMMM8AAEgASM8AzDAAhACEzDDPAABIAEjPAMwwAIQAhMwwzwAASABIzwDMMACEAITMMM8AAEgASM8AzDAAhACEzDDPAABIAEjPAMwwAIQAhMwwzwAASABIzwDMMACEAITMMM8AAEgASM8AzDAAhACEzDDPAABIAEjPAMwwAIQj8GH4y/WT7wO+B50CzINkI/Bh+Mv1k+8DvgedAsyDZCPwYfjL9ZPvA74HnQLMg2Qj8GH4y/WT7wO+B50CzINkI/Bh+Mv1k+8DvgedAsyDZCPwYfjL9ZPvA74HnQLMg2Qj8GH4y/WT7wO+B50CzINkI/Bh+Mv1k+8DvgedAsyDZCPwYfjL9ZPvA74HnQLMg2Qj8GH4y/WT7wO+B50CzINkI/Bh+Mv1k+8DvgedAsyDZCPwYfjL9ZPvA74HnQLMg2Qj8GH4y/WT7wO+B50CzINkI/Bh+Mv1k+8DvgedAsyDZCPwYfjL9ZPvA74HnQLMg2Qj8GH4y/WT7wO+B50CzINnMzMzMMzMzM8zMzMwzMzMzzMzMzDMzMzPMzMzMMzMzM8zMzMwzMzMzzMzMzDMzMzPMzMzMMzMzM8zMzMwzMzMzzMzMzDMzMzPMzMzMMzMzM8zMzMwzMzMzzMzMzDMzMzPMzMzMMzMzM8zMzMwzMzMzzMzMzDMzMzPMzMzMMzMzM8zMzMwzMzMzzMzMzDMzMzPMzMzMMzMzM8zMzMwzMzMzzMzMzDMzMzPMzMzMMzMzM8zMzMwzMzMzzMzMzDMzMzPMzMzMMzMzM8zMzMwzMzMzzMzMzDMzMzPMzMzMMzMzM8zMzMwzMzMzzMzMzDMzMzPMzMzMMzMzM8zMzMwzMzMzwMDAwAwMDAzAwMDADAwMDMDAwMAMDAwMwMDAwAwMDAzAwMDADAwMDMDAwMAMDAwMwMDAwAwMDAzAwMDADAwMDMDAwMAMDAwMwMDAwAwMDAzAwMDADAwMDMDAwMAMDAwMwMDAwAwMDAzAwMDADAwMDMDAwMAMDAwMwMDAwAwMDAzAwMDADAwMDMDAwMAMDAwMwMDAwAwMDAzAwMDADAwMDMDAwMAMDAwMwMDAwAwMDAzAwMDADAwMDMDAwMAMDAwMwMDAwAwMDAzAwMDADAwMDMDAwMAMDAwMwMDAwAwMDAzAwMDADAwMDMDAwMAMDAwMwMDAwAwMDAzAwMDADAwMDPHxAQEBAQEBHx8QEBAQEBDx8QEBAQEBAR8fEBAQEBAQ8fEBAQEBAQEfHxAQEBAQEPHxAQEBAQEBHx8QEBAQEBDx8QEBAQEBAR8fEBAQEBAQ8fEBAQEBAQEfHxAQEBAQEPHxAQEBAQEBHx8QEBAQEBDx8QEBAQEBAR8fEBAQEBAQ8fEBAQEBAQEfHxAQEBAQEPHxAQEBAQEBHx8QEBAQEBDx8QEBAQEBAR8fEBAQEBAQ8fEBAQEBAQEfHxAQEBAQEPHxAQEBAQEBHx8QEBAQEBDx8QEBAQEBAR8fEBAQEBAQ8fEBAQEBAQEfHxAQEBAQEPHxAQEBAQEBHx8QEBAQEBCqqlVVqqpVVaqqVVWqqlVVqqpVVaqqVVWqqlVVqqpVVaqqVVWqqlVVqqpVVaqqVVWqqlVVqqpVVaqqVVWqqlVVqqpVVaqqVVWqqlVVqqpVVaqqVVWqqlVVqqpVVaqqVVWqqlVVqqpVVaqqVVWqqlVVqqpVVaqqVVWqqlVVqqpVVaqqVVWqqlVVqqpVVaqqVVWqqlVVqqpVVaqqVVWqqlVVqqpVVaqqVVWqqlVVqqpVVaqqVVWqqlVVqqpVVaqqVVWqqlVVqqpVVaqqVVWqqlVVqqpVVaqqVVWqqlVVqqpVVaqqVVWqqlVVqqpVVaqqVVWqqlVVqqpVVaqqVVWqqlUC4XIscAl7InAJInAJInAJInAJInAJInAJInAJInAJInAJInAJInAJInAJInAJInAJInAJLCwly2XIJGjJycnJyeEicAlyLHAJeyJwCSJwCSJwCSJwCSJwCSJwCSJwCSJwCSJwCSJwCSJwCSJwCSJwCSJwCSwsJctlyCRoycnJycnhInAJInAJcixwCXsicAkicAkicAkicAkicAkicAkicAkicAkicAkicAkicAkicAkicAksLCXLZcgkaMnJycnJ4SJwCSJwCSJwCXIscAl7InAJInAJInAJInAJInAJInAJInAJInAJInAJInAJInAJInAJLCwly2XIJGjJycnJyeEicAkicAkicAkicAlyLHAJeyJwCSJwCSJwCSJwCSJwCSJwCSJwCSJwCSJwCSJwCSJwCSwsJctlyCRoycnJycnhInAJInAJInAJInAJInAJcixwCXsicAkicAkicAkicAkicAkicAkicAkicAkicAkicAksLCXLZcgkaMnJycnJ4SJwCSJwCSJwCSJwCSJwCSJwCXIscAl7InAJInAJInAJInAJInAJInAJInAJInAJInAJLCwly2XIJGjJycnJyeEicAkicAkicAkicAkicAkicAkicAlyLHAJeyJwCSJwCSJwCSJwCSJwCSJwCSJwCSJwCSwsJctlyCRoycnJycnhInAJInAJInAJInAJInAJInAJInAJInAJcixwCXsicAkicAkicAkicAkicAkicAkicAksLCXLZcgkaMnJycnJ4SJwCSJwCSJwCSJwCSJwCSJwCSJwCSJwCSJwCXIscAl7InAJInAJInAJInAJInAJInAJLCwly2XIJGjJycnJyeEicAkicAkicAkicAkicAkicAkicAkicAkicAkicAlyLHAJeyJwCSJwCSJwCSJwCSJwCSwsJctlyCRoycnJycnhInAJInAJInAJInAJInAJInAJInAJInAJInAJInAJInAJcixwCXsicAkicAkicAkicAksLCXLZcgkaMnJycnJ4SJwCSJwCSJwCSJwCSJwCSJwCSJwCSJwCSJwCSJwCSJwCSJwCXIscAl7InAJInAJInAJLCwly2XIJGjJycnJyeEicAkicAkicAkicAkicAkicAkicAkicAkicAkicAkicAkicAkicAlyLHAJeyJwCSJwCSwsJctlyCRoycnJycnhInAJInAJInAJInAJInAJInAJInAJInAJInAJInAJInAJInAJInAJInAJcixwCXsicAksLCXLZcgkaMnJycnJ4SJwCSJwCSJwCSJwCSJwCSJwCSJwCSJwCSJwCSJwCSJwCSJwCSJwCSJwCSJwCXIscAl7LCwly2XIJGjJycnJydE+t5LI4IXmB8RSRPCFHx8focjlzTJE4XkicCwicCwicCwicCwicCwicCwicCwicCzJ+ABUXWhHeZAfyx1nATNZCfCCMQCv/qAoAzEAvwH/AOlHPgeQVF1HDjOvyxkwAYAfyxkwAYAfyxkwAYAfyxkwAYAfyxkwAYAfyxkwAYAfyxkwAYAfyxkwAYAfyxlHIbRXCeViaz7/AQ8Ayfoay2/6G8uFZ/4UIAU+/y0YBtbsIAU8LOoby3zqGsvNr2AhlEbNyhDwpMagV/Cjxn9f1SGXRs3KEPCkxqBn8KPGf2/RzTEcKAsf2hhZH9oYWcPERny6OAViV31rX+XNmkbh1Xu90sxFe9ZA4Ih9k0884Il6lF/ghjzgij2RMGvgh3nLPy88g+CF8IIBDwBvVHzWQBfLN6GFZ3rmBxdvGAjwij3KAETgivCJX/CGV/CFGASCHSgLy38g+Ffwh4LghR3NYkUY2nvgifCIg1/l5gf2CG8mB1Z7aB8fHx/LHR/LHeYDxkBnrx7/6XnghpPgh3vLPy88geCF8IIBDwBvVHzWQBfLN6GFZ3rmBxdv8Ilf8IZX8IXLfyAHV/CHgh0YAYLghc1iRfCKPcoAROCKGN171kDgiHuVTzzgiXqUX+CGPOCKPZEwa+CHecs/LzyD4IXwggEPAG9UfNZAF8s3oYVneuYHF28YCPCKPcoAROCK8Ilf8IZX8IUYBIIdKAvLfyD4V/CHguCFHc0qRhjae+CJ8IiTX+XmB/YQbyYHVntoHx8fH8sdH8sd5gPGQGc+/1jpeeCGk+CHe8s/LzyB4IXwggEPAG9UfNZAF8s3oYVneuYHF2/wiV/whlfwhct/IAdX8IeCHRgBguCFzSpG8Io9ygBE4IoY3UYAALoAAHzWQMhPHx8f5h9HeeYHKAsE/gUwBvUhylblBT4PkCHJRoRn5fCCZ69vyfCCZ69vIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIsnxAQ8APcqEVz0odj0oOj0idwkidwkidwkidwkidwkidwkidwkidwkidwkidwkidwkidwkidwkidwkidwkidwksLCXLZSgCJGgidwkidwkidwkidwkidwkidwkidwkidwkidwkidwkidwkidwkidwkidwkidwkidwksLCXLZSgCJGgidwkidwkidwkidwkidwkidwkidwkidwkidwkidwkidwkidwkidwkidwkidwkidwksLCXLZSgCJGgidwkidwkidwkidwkidwkidwkidwkidwkidwkidwkidwkidwkidwkidwkidwkid8kicAkicAkicAkicAkicAkicAkicAkicAkicAkicAkicAkicAkicAkicAkicAkicAksLCUicAkicAkicAkicAkicAkicAkicAkicAkicAkicAkicAkicAkicAkicAkicAkicAksLCUicAkicAkicAkicAkicAkicAkicAkicAkicAkicAkicAkicAkicAkicAkicAkicAksLCUicAkicAkicAkicAkicAkicAkicAkicAkicAkicAkicAkicAkicAkicAkicAkicAksLCUicAkicAkicAkicAkicAkicAkicAkicAkicAkicAkicAkicAkicAkicAkicAkicAksLCUicAkicAkicAkicAkicAkicAkicAkicAkicAkicAkicAkicAkicAkicAkicAkicAksLCUicAkicAkicAkicAkicAkicAkicAkicAkicAkicAkicAkicAkicAkicAkicAkicAloyfgAVF3wgjEAr/6gKAMxAL8B/wDFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcVia/nJJgJ+4JovPOCYfcZAb37gl+Cbr+CZ4JzgneCePkDgn8n/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////Aw==';
+
+// End of realtime.js file.
diff --git a/suite/cts/deviceTests/browserbench/assets/octane/ico/apple-touch-icon-114-precomposed.png b/suite/cts/deviceTests/browserbench/assets/octane/ico/apple-touch-icon-114-precomposed.png
new file mode 100644
index 0000000..1cf1cbd
--- /dev/null
+++ b/suite/cts/deviceTests/browserbench/assets/octane/ico/apple-touch-icon-114-precomposed.png
Binary files differ
diff --git a/suite/cts/deviceTests/browserbench/assets/octane/ico/apple-touch-icon-144-precomposed.png b/suite/cts/deviceTests/browserbench/assets/octane/ico/apple-touch-icon-144-precomposed.png
new file mode 100644
index 0000000..b791e90
--- /dev/null
+++ b/suite/cts/deviceTests/browserbench/assets/octane/ico/apple-touch-icon-144-precomposed.png
Binary files differ
diff --git a/suite/cts/deviceTests/browserbench/assets/octane/ico/apple-touch-icon-57-precomposed.png b/suite/cts/deviceTests/browserbench/assets/octane/ico/apple-touch-icon-57-precomposed.png
new file mode 100644
index 0000000..af5458b
--- /dev/null
+++ b/suite/cts/deviceTests/browserbench/assets/octane/ico/apple-touch-icon-57-precomposed.png
Binary files differ
diff --git a/suite/cts/deviceTests/browserbench/assets/octane/ico/apple-touch-icon-72-precomposed.png b/suite/cts/deviceTests/browserbench/assets/octane/ico/apple-touch-icon-72-precomposed.png
new file mode 100644
index 0000000..e5529b9
--- /dev/null
+++ b/suite/cts/deviceTests/browserbench/assets/octane/ico/apple-touch-icon-72-precomposed.png
Binary files differ
diff --git a/suite/cts/deviceTests/browserbench/assets/octane/ico/favicon.ico b/suite/cts/deviceTests/browserbench/assets/octane/ico/favicon.ico
new file mode 100644
index 0000000..8a05c14
--- /dev/null
+++ b/suite/cts/deviceTests/browserbench/assets/octane/ico/favicon.ico
Binary files differ
diff --git a/suite/cts/deviceTests/browserbench/assets/octane/index.html b/suite/cts/deviceTests/browserbench/assets/octane/index.html
new file mode 100644
index 0000000..228d1a9
--- /dev/null
+++ b/suite/cts/deviceTests/browserbench/assets/octane/index.html
@@ -0,0 +1,392 @@
+<!DOCTYPE html>
+<!-- Copyright 2012 the Octane project authors. Scroll to the end for full license -->
+<html lang="en">
+<head>
+<meta http-equiv="X-UA-Compatible" value="IE=edge"/>
+<meta charset="utf-8"/>
+<title>Octane JavaScript Benchmark</title>
+<meta name="viewport" content="width=device-width, initial-scale=1.0">
+<meta http-equiv="Content-Script-Type" content="text/javascript">
+<meta name="description"
+  content="Octane JavaScript Benchmark - the Javascript benchmark for the modern web">
+<meta name="author" content="Octane Team Google">
+<!-- twitter bootstrap code -->
+<script src="js/jquery.js"></script>
+<script src="js/bootstrap-transition.js"></script>
+<script src="js/bootstrap-collapse.js"></script>
+<!-- Octane benchmark code -->
+<!-- CTS -->
+<script type="text/javascript" src="cts_report.js"></script>
+<script type="text/javascript" src="base.js"></script>
+<script type="text/javascript" src="richards.js"></script>
+<script type="text/javascript" src="deltablue.js"></script>
+<script type="text/javascript" src="crypto.js"></script>
+<script type="text/javascript" src="raytrace.js"></script>
+<script type="text/javascript" src="earley-boyer.js"></script>
+<script type="text/javascript" src="regexp.js"></script>
+<script type="text/javascript" src="splay.js"></script>
+<script type="text/javascript" src="navier-stokes.js"></script>
+<script type="text/javascript" src="pdfjs.js"></script>
+<script type="text/javascript" src="mandreel.js"></script>
+<script type="text/javascript" src="gbemu.js"></script>
+<script type="text/javascript" src="code-load.js"></script>
+<script type="text/javascript" src="box2d.js"></script>
+
+<script type="text/javascript">
+  var completed = 0;
+  var benchmarks = BenchmarkSuite.CountBenchmarks();
+  var success = true;
+
+  function ShowBox(name) {
+    var box = document.getElementById("Box-" + name);
+    box.style.visibility = 'visible';
+    var bar = document.getElementById("progress-bar").style.width = ""
+        + ((++completed) / benchmarks) * 100 + "%";
+  }
+
+  function AddResult(name, result) {
+    //CTS
+    CtsReport(name, result, false);
+    var box = document.getElementById("Result-" + name);
+    box.innerHTML = result;
+  }
+
+  function AddError(name, error) {
+    console.log(error);
+    if (error == "TypedArrayUnsupported") {
+      AddResult(name, '<b>Unsupported<\/b>');
+    } else {
+      AddResult(name, '<b>Error</b>');
+    }
+    success = false;
+  }
+
+  function AddScore(score) {
+    var status = document.getElementById("main-banner");
+    if (success) {
+      status.innerHTML = "Octane Score: " + score;
+    } else {
+      status.innerHTML = "Octane Score (incomplete): " + score;
+    }
+    //CTS
+    CtsReport("Octane Score" + (success ? " " : "(incomplete)"), score, true);
+    document.getElementById("progress-bar-container").style.visibility = 'hidden';
+    document.getElementById("bottom-text").style.visibility = 'visible';
+    document.getElementById("inside-anchor").removeChild(document.getElementById("bar-appendix"));
+  }
+
+  function Run() {
+    document.getElementById("main-banner").innerHTML = "Running Octane...";
+    // append the progress bar elements..
+    document.getElementById("bar-appendix").innerHTML = "<br/><div class=\"progress progress-striped\" id=\"progress-bar-container\" style=\"visibility:hidden\"><div class=\"bar\"style=\"width: 0%;\" id=\"progress-bar\"></div></div>";
+    var anchor = document.getElementById("run-octane");
+    var parent = document.getElementById("main-container");
+    parent.appendChild(document.getElementById("inside-anchor"));
+    parent.removeChild(anchor);
+
+    document.getElementById("startup-text").innerHTML="";
+
+    document.getElementById("progress-bar-container").style.visibility = 'visible';
+
+    BenchmarkSuite.RunSuites({
+      NotifyStart : ShowBox,
+      NotifyError : AddError,
+      NotifyResult : AddResult,
+      NotifyScore : AddScore
+    });
+  }
+
+  function CheckCompatibility() {
+    // If no Typed Arrays support, show warning label.
+    var hasTypedArrays = typeof Uint8Array != "undefined"
+        && typeof Float64Array != "undefined"
+        && typeof (new Uint8Array(0)).subarray != "undefined";
+
+    if (!hasTypedArrays) {
+      console.log("Typed Arrays not supported");
+      document.getElementById("alertbox").style.display="block";
+    }
+    if (window.document.URL.indexOf('auto=1') >= 0)
+      Run();
+  }
+
+  function Load() {
+    setTimeout(CheckCompatibility, 200);
+  }
+</script>
+<!-- end Octane benchmark code -->
+
+<!-- Le styles -->
+<link href="css/bootstrap.css" rel="stylesheet">
+<style>
+body {
+  padding-top: 60px;
+  /* 60px to make the container go all the way to the bottom of the topbar */
+}
+</style>
+<link href="css/bootstrap-responsive.css" rel="stylesheet">
+
+<!-- Le HTML5 shim, for IE6-8 support of HTML5 elements -->
+<!--[if lt IE 9]>
+      <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
+<![endif]-->
+
+<!-- Le fav and touch icons -->
+<!-- TODO update icons -->
+<link rel="shortcut icon" href="ico/favicon.ico">
+<link rel="apple-touch-icon-precomposed" sizes="144x144"
+  href="ico/apple-touch-icon-144-precomposed.png">
+<link rel="apple-touch-icon-precomposed" sizes="114x114"
+  href="ico/apple-touch-icon-114-precomposed.png">
+<link rel="apple-touch-icon-precomposed" sizes="72x72"
+  href="ico/apple-touch-icon-72-precomposed.png">
+<link rel="apple-touch-icon-precomposed"
+  href="ico/apple-touch-icon-57-precomposed.png">
+</head>
+
+<body onLoad="Load()">
+
+  <div class="navbar navbar-fixed-top">
+    <div class="navbar-inner">
+
+      <div class="container">
+
+        <a class="brand" href="#">Octane v1</a>
+       
+        <!--/.nav-collapse -->
+      </div>
+
+    </div>
+  </div>
+
+  <div class="container">
+    <div class="alert" style="display:none" id="alertbox">
+       <strong>Warning</strong> This JavaScript engine does not support Typed Arrays. You might want to run the <a href="http://v8.googlecode.com/svn/data/benchmarks/v7/run.html">V8 benchmark v7</a> instead.
+    </div>
+    <div id="main-container">
+    <a id="run-octane" href="javascript:Run()">
+      <div class="hero-unit" id="inside-anchor">
+        <h1 align="center" id="main-banner">Start Octane</h1>
+        <div id="bar-appendix"></div>
+      </div>
+    </a>
+    </div>
+
+    <div id="startup-text" style="color:white;" align="center">
+      Welcome to Octane, a JavaScript benchmark for the modern web. For more accurate results, <a href="http://developers.google.com/octane/benchmark">start the browser anew</a> before running the test. Refer to the <a href="http://developers.google.com/octane">documentation</a> for more information on Octane.
+    </div>
+
+    <div class="header"></div>
+
+    <div class="content">
+      <div class="row">
+        <div class="span3">
+          <!-- TODO STE change all links from staging to devsite -->
+          <div class="box" id="Box-Richards" style="visibility: hidden;">
+            <a href="http://developers.google.com/octane/benchmark#richards"
+              target="_blank" style="float:left; color:#994520">Richards</a>
+   
+            <span class="p-result" id="Result-Richards" style="float:right">...</span>
+            <span class="label-simple"
+              style="position: absolute; bottom: 3px; left: 3px;">Core
+              language features</span>
+          </div>
+
+        </div>
+        <div class="span3">
+          <div class="box" id="Box-DeltaBlue" style="visibility: hidden;">
+            <a href="http://developers.google.com/octane/benchmark#deltablue"
+              target="_blank" style="float:left; color:#994520">Deltablue</a>
+           
+            <p class="p-result" id="Result-DeltaBlue" style="float:right">...</p>
+            <span class="label-simple"
+              style="position: absolute; bottom: 3px; left: 3px;">Core
+              language features</span>
+          </div>
+        </div>
+        <div class="span3">
+          <div class="box" id="Box-Crypto" style="visibility: hidden;">
+            <a href="http://developers.google.com/octane/benchmark#crypto"
+              target="_blank" style="float:left; color:#994520">Crypto</a>
+           
+            <p class="p-result" id="Result-Crypto" style="float:right">...</p>
+            <span class="label-simple"
+              style="position: absolute; bottom: 3px; left: 3px;">Bit &
+              Math operations</span>
+          </div>
+        </div>
+        <div class="span3">
+          <div class="box" id="Box-RayTrace" style="visibility: hidden;">
+            <a href="http://developers.google.com/octane/benchmark#raytrace"
+              target="_blank" style="float:left; color:#994520">Raytrace</a>
+   
+            <p class="p-result" id="Result-RayTrace" style="float:right">...</p>
+            <span class="label-simple"
+              style="position: absolute; bottom: 3px; left: 3px;">Core
+              language features</span>
+          </div>
+        </div>
+
+      </div>
+      <!-- /row -->
+
+      <div class="row">
+
+        <div class="span3">
+          <div class="box" id="Box-EarleyBoyer" style="visibility: hidden;">
+            <a
+              href="http://developers.google.com/octane/benchmark#earleyboyer"
+              target="_blank" style="float:left; color:#994520">EarleyBoyer</a>
+           
+            <p class="p-result" id="Result-EarleyBoyer" style="float:right">...</p>
+            <span class="label-simple"
+              style="position: absolute; bottom: 3px; left: 3px;">Memory
+              & GC</span>
+          </div>
+        </div>
+        <div class="span3">
+          <div class="box" id="Box-RegExp" style="visibility: hidden;">
+            <a href="http://developers.google.com/octane/benchmark#regexp"
+              target="_blank" style="float:left; color:#994520">Regexp</a>
+           
+            <p class="p-result" id="Result-RegExp" style="float:right">...</p>
+            <span class="label-simple"
+              style="position: absolute; bottom: 3px; left: 3px;">Strings
+              & arrays</span>
+          </div>
+        </div>
+        <div class="span3">
+          <div class="box" id="Box-Splay" style="visibility: hidden;">
+            <a href="http://developers.google.com/octane/benchmark#splay"
+              target="_blank" style="float:left; color:#994520">Splay</a>
+           
+            <p class="p-result" id="Result-Splay" style="float:right">...</p>
+            <span class="label-simple"
+              style="position: absolute; bottom: 3px; left: 3px;">Memory
+              & GC</span>
+          </div>
+        </div>
+        <div class="span3">
+          <div class="box" id="Box-NavierStokes" style="visibility: hidden;">
+            <a
+              href="http://developers.google.com/octane/benchmark#navierstokes"
+              target="_blank" style="float:left; color:#994520">NavierStokes</a>
+           
+            <p class="p-result" id="Result-NavierStokes" style="float:right">...</p>
+            <span class="label-simple"
+              style="position: absolute; bottom: 3px; left: 3px;">Strings
+              & arrays</span>
+          </div>
+        </div>
+
+      </div>
+      <!-- /row -->
+
+      <div class="row">
+        <div class="span3">
+          <div class="box" id="Box-PdfJS" style="visibility: hidden;">
+            <a href="http://developers.google.com/octane/benchmark#pdfjs"
+              target="_blank" style="float:left; color:#994520">pdf.js</a>
+           
+            <p class="p-result" id="Result-PdfJS" style="float:right">...</p>
+            <span class="label-simple"
+              style="position: absolute; bottom: 3px; left: 3px;">Strings
+              & arrays</span>
+          </div>
+        </div>
+        <div class="span3">
+          <div class="box" id="Box-Mandreel" style="visibility: hidden;">
+            <a href="http://developers.google.com/octane/benchmark#mandreel"
+              target="_blank" style="float:left; color:#994520">Mandreel</a>
+           
+            <p class="p-result" id="Result-Mandreel" style="float:right">...</p>
+            <span class="label-simple"
+              style="position: absolute; bottom: 3px; left: 3px;">Virtual
+              machine</span>
+          </div>
+        </div>
+        <div class="span3">
+          <div class="box" id="Box-Gameboy" style="visibility: hidden;">
+            <a
+              href="http://developers.google.com/octane/benchmark#gameboyemulator"
+              target="_blank" style="float:left; color:#994520">GB Emulator</a>
+           
+            <p class="p-result" id="Result-Gameboy" style="float:right">...</p>
+            <span class="label-simple"
+              style="position: absolute; bottom: 3px; left: 3px;">Virtual
+              machine</span>
+          </div>
+        </div>
+        <div class="span3">
+          <div class="box" id="Box-CodeLoad" style="visibility: hidden;">
+            <a href="http://developers.google.com/octane/benchmark#codeload"
+              target="_blank" style="float:left; color:#994520">CodeLoad</a>
+           
+            <p class="p-result" id="Result-CodeLoad" style="float:right">...</p>
+            <span class="label-simple"
+              style="position: absolute; bottom: 3px; left: 3px;">Loading
+              & Parsing</span>
+          </div>
+        </div>
+
+      </div>
+      <!-- /row -->
+
+      <div class="row">
+        <div class="span3">
+          <div class="box" id="Box-Box2D" style="visibility: hidden;">
+            <a href="http://developers.google.com/octane/benchmark#box2d"
+              target="_blank" style="float:left; color:#994520">Box2DWeb</a>
+           
+            <p class="p-result" id="Result-Box2D" style="float:right">...</p>
+            <span class="label-simple"
+              style="position: absolute; bottom: 3px; left: 3px;">Bit &
+              Math operations</span>
+          </div>
+        </div>
+
+      </div>
+      <!-- /row -->
+
+    </div>
+    <!-- /content -->
+
+    <div id="bottom-text" style="color:white; visibility:hidden" align="center">
+      <br></br>
+       The final score is the <a href="http://en.wikipedia.org/wiki/Geometric_mean#Properties">geometric mean</a> of the single scores. We suggest to restart the browser before repeating the test.
+    </div>
+
+  </div>
+  <!-- /container -->
+
+</body>
+</html>
+
+<!--
+// Copyright 2012 the Octane project authors. All rights reserved.
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+//       notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+//       copyright notice, this list of conditions and the following
+//       disclaimer in the documentation and/or other materials provided
+//       with the distribution.
+//     * Neither the name of Google Inc. nor the names of its
+//       contributors may be used to endorse or promote products derived
+//       from this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+-->
diff --git a/suite/cts/deviceTests/browserbench/assets/octane/js/bootstrap-collapse.js b/suite/cts/deviceTests/browserbench/assets/octane/js/bootstrap-collapse.js
new file mode 100644
index 0000000..fbc915b
--- /dev/null
+++ b/suite/cts/deviceTests/browserbench/assets/octane/js/bootstrap-collapse.js
@@ -0,0 +1,157 @@
+/* =============================================================
+ * bootstrap-collapse.js v2.0.4
+ * http://twitter.github.com/bootstrap/javascript.html#collapse
+ * =============================================================
+ * Copyright 2012 Twitter, Inc.
+ *
+ * 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.
+ * ============================================================ */
+
+
+!function ($) {
+
+  "use strict"; // jshint ;_;
+
+
+ /* COLLAPSE PUBLIC CLASS DEFINITION
+  * ================================ */
+
+  var Collapse = function (element, options) {
+    this.$element = $(element)
+    this.options = $.extend({}, $.fn.collapse.defaults, options)
+
+    if (this.options.parent) {
+      this.$parent = $(this.options.parent)
+    }
+
+    this.options.toggle && this.toggle()
+  }
+
+  Collapse.prototype = {
+
+    constructor: Collapse
+
+  , dimension: function () {
+      var hasWidth = this.$element.hasClass('width')
+      return hasWidth ? 'width' : 'height'
+    }
+
+  , show: function () {
+      var dimension
+        , scroll
+        , actives
+        , hasData
+
+      if (this.transitioning) return
+
+      dimension = this.dimension()
+      scroll = $.camelCase(['scroll', dimension].join('-'))
+      actives = this.$parent && this.$parent.find('> .accordion-group > .in')
+
+      if (actives && actives.length) {
+        hasData = actives.data('collapse')
+        if (hasData && hasData.transitioning) return
+        actives.collapse('hide')
+        hasData || actives.data('collapse', null)
+      }
+
+      this.$element[dimension](0)
+      this.transition('addClass', $.Event('show'), 'shown')
+      this.$element[dimension](this.$element[0][scroll])
+    }
+
+  , hide: function () {
+      var dimension
+      if (this.transitioning) return
+      dimension = this.dimension()
+      this.reset(this.$element[dimension]())
+      this.transition('removeClass', $.Event('hide'), 'hidden')
+      this.$element[dimension](0)
+    }
+
+  , reset: function (size) {
+      var dimension = this.dimension()
+
+      this.$element
+        .removeClass('collapse')
+        [dimension](size || 'auto')
+        [0].offsetWidth
+
+      this.$element[size !== null ? 'addClass' : 'removeClass']('collapse')
+
+      return this
+    }
+
+  , transition: function (method, startEvent, completeEvent) {
+      var that = this
+        , complete = function () {
+            if (startEvent.type == 'show') that.reset()
+            that.transitioning = 0
+            that.$element.trigger(completeEvent)
+          }
+
+      this.$element.trigger(startEvent)
+
+      if (startEvent.isDefaultPrevented()) return
+
+      this.transitioning = 1
+
+      this.$element[method]('in')
+
+      $.support.transition && this.$element.hasClass('collapse') ?
+        this.$element.one($.support.transition.end, complete) :
+        complete()
+    }
+
+  , toggle: function () {
+      this[this.$element.hasClass('in') ? 'hide' : 'show']()
+    }
+
+  }
+
+
+ /* COLLAPSIBLE PLUGIN DEFINITION
+  * ============================== */
+
+  $.fn.collapse = function (option) {
+    return this.each(function () {
+      var $this = $(this)
+        , data = $this.data('collapse')
+        , options = typeof option == 'object' && option
+      if (!data) $this.data('collapse', (data = new Collapse(this, options)))
+      if (typeof option == 'string') data[option]()
+    })
+  }
+
+  $.fn.collapse.defaults = {
+    toggle: true
+  }
+
+  $.fn.collapse.Constructor = Collapse
+
+
+ /* COLLAPSIBLE DATA-API
+  * ==================== */
+
+  $(function () {
+    $('body').on('click.collapse.data-api', '[data-toggle=collapse]', function ( e ) {
+      var $this = $(this), href
+        , target = $this.attr('data-target')
+          || e.preventDefault()
+          || (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '') //strip for ie7
+        , option = $(target).data('collapse') ? 'toggle' : $this.data()
+      $(target).collapse(option)
+    })
+  })
+
+}(window.jQuery);
\ No newline at end of file
diff --git a/suite/cts/deviceTests/browserbench/assets/octane/js/bootstrap-transition.js b/suite/cts/deviceTests/browserbench/assets/octane/js/bootstrap-transition.js
new file mode 100644
index 0000000..5341826
--- /dev/null
+++ b/suite/cts/deviceTests/browserbench/assets/octane/js/bootstrap-transition.js
@@ -0,0 +1,61 @@
+/* ===================================================
+ * bootstrap-transition.js v2.0.4
+ * http://twitter.github.com/bootstrap/javascript.html#transitions
+ * ===================================================
+ * Copyright 2012 Twitter, Inc.
+ *
+ * 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.
+ * ========================================================== */
+
+
+!function ($) {
+
+  $(function () {
+
+    "use strict"; // jshint ;_;
+
+
+    /* CSS TRANSITION SUPPORT (http://www.modernizr.com/)
+     * ======================================================= */
+
+    $.support.transition = (function () {
+
+      var transitionEnd = (function () {
+
+        var el = document.createElement('bootstrap')
+          , transEndEventNames = {
+               'WebkitTransition' : 'webkitTransitionEnd'
+            ,  'MozTransition'    : 'transitionend'
+            ,  'OTransition'      : 'oTransitionEnd'
+            ,  'msTransition'     : 'MSTransitionEnd'
+            ,  'transition'       : 'transitionend'
+            }
+          , name
+
+        for (name in transEndEventNames){
+          if (el.style[name] !== undefined) {
+            return transEndEventNames[name]
+          }
+        }
+
+      }())
+
+      return transitionEnd && {
+        end: transitionEnd
+      }
+
+    })()
+
+  })
+
+}(window.jQuery);
\ No newline at end of file
diff --git a/suite/cts/deviceTests/browserbench/assets/octane/js/jquery.js b/suite/cts/deviceTests/browserbench/assets/octane/js/jquery.js
new file mode 100644
index 0000000..00c4e23
--- /dev/null
+++ b/suite/cts/deviceTests/browserbench/assets/octane/js/jquery.js
@@ -0,0 +1,9252 @@
+/*! jQuery v1.7.1 jquery.com | jquery.org/license */
+(function( window, undefined ) {
+
+// Use the correct document accordingly with window argument (sandbox)
+var document = window.document,
+	navigator = window.navigator,
+	location = window.location;
+var jQuery = (function() {
+
+// Define a local copy of jQuery
+var jQuery = function( selector, context ) {
+		// The jQuery object is actually just the init constructor 'enhanced'
+		return new jQuery.fn.init( selector, context, rootjQuery );
+	},
+
+	// Map over jQuery in case of overwrite
+	_jQuery = window.jQuery,
+
+	// Map over the $ in case of overwrite
+	_$ = window.$,
+
+	// A central reference to the root jQuery(document)
+	rootjQuery,
+
+	// A simple way to check for HTML strings or ID strings
+	// Prioritize #id over <tag> to avoid XSS via location.hash (#9521)
+	quickExpr = /^(?:[^#<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/,
+
+	// Check if a string has a non-whitespace character in it
+	rnotwhite = /\S/,
+
+	// Used for trimming whitespace
+	trimLeft = /^\s+/,
+	trimRight = /\s+$/,
+
+	// Match a standalone tag
+	rsingleTag = /^<(\w+)\s*\/?>(?:<\/\1>)?$/,
+
+	// JSON RegExp
+	rvalidchars = /^[\],:{}\s]*$/,
+	rvalidescape = /\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,
+	rvalidtokens = /"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,
+	rvalidbraces = /(?:^|:|,)(?:\s*\[)+/g,
+
+	// Useragent RegExp
+	rwebkit = /(webkit)[ \/]([\w.]+)/,
+	ropera = /(opera)(?:.*version)?[ \/]([\w.]+)/,
+	rmsie = /(msie) ([\w.]+)/,
+	rmozilla = /(mozilla)(?:.*? rv:([\w.]+))?/,
+
+	// Matches dashed string for camelizing
+	rdashAlpha = /-([a-z]|[0-9])/ig,
+	rmsPrefix = /^-ms-/,
+
+	// Used by jQuery.camelCase as callback to replace()
+	fcamelCase = function( all, letter ) {
+		return ( letter + "" ).toUpperCase();
+	},
+
+	// Keep a UserAgent string for use with jQuery.browser
+	userAgent = navigator.userAgent,
+
+	// For matching the engine and version of the browser
+	browserMatch,
+
+	// The deferred used on DOM ready
+	readyList,
+
+	// The ready event handler
+	DOMContentLoaded,
+
+	// Save a reference to some core methods
+	toString = Object.prototype.toString,
+	hasOwn = Object.prototype.hasOwnProperty,
+	push = Array.prototype.push,
+	slice = Array.prototype.slice,
+	trim = String.prototype.trim,
+	indexOf = Array.prototype.indexOf,
+
+	// [[Class]] -> type pairs
+	class2type = {};
+
+jQuery.fn = jQuery.prototype = {
+	constructor: jQuery,
+	init: function( selector, context, rootjQuery ) {
+		var match, elem, ret, doc;
+
+		// Handle $(""), $(null), or $(undefined)
+		if ( !selector ) {
+			return this;
+		}
+
+		// Handle $(DOMElement)
+		if ( selector.nodeType ) {
+			this.context = this[0] = selector;
+			this.length = 1;
+			return this;
+		}
+
+		// The body element only exists once, optimize finding it
+		if ( selector === "body" && !context && document.body ) {
+			this.context = document;
+			this[0] = document.body;
+			this.selector = selector;
+			this.length = 1;
+			return this;
+		}
+
+		// Handle HTML strings
+		if ( typeof selector === "string" ) {
+			// Are we dealing with HTML string or an ID?
+			if ( selector.charAt(0) === "<" && selector.charAt( selector.length - 1 ) === ">" && selector.length >= 3 ) {
+				// Assume that strings that start and end with <> are HTML and skip the regex check
+				match = [ null, selector, null ];
+
+			} else {
+				match = quickExpr.exec( selector );
+			}
+
+			// Verify a match, and that no context was specified for #id
+			if ( match && (match[1] || !context) ) {
+
+				// HANDLE: $(html) -> $(array)
+				if ( match[1] ) {
+					context = context instanceof jQuery ? context[0] : context;
+					doc = ( context ? context.ownerDocument || context : document );
+
+					// If a single string is passed in and it's a single tag
+					// just do a createElement and skip the rest
+					ret = rsingleTag.exec( selector );
+
+					if ( ret ) {
+						if ( jQuery.isPlainObject( context ) ) {
+							selector = [ document.createElement( ret[1] ) ];
+							jQuery.fn.attr.call( selector, context, true );
+
+						} else {
+							selector = [ doc.createElement( ret[1] ) ];
+						}
+
+					} else {
+						ret = jQuery.buildFragment( [ match[1] ], [ doc ] );
+						selector = ( ret.cacheable ? jQuery.clone(ret.fragment) : ret.fragment ).childNodes;
+					}
+
+					return jQuery.merge( this, selector );
+
+				// HANDLE: $("#id")
+				} else {
+					elem = document.getElementById( match[2] );
+
+					// Check parentNode to catch when Blackberry 4.6 returns
+					// nodes that are no longer in the document #6963
+					if ( elem && elem.parentNode ) {
+						// Handle the case where IE and Opera return items
+						// by name instead of ID
+						if ( elem.id !== match[2] ) {
+							return rootjQuery.find( selector );
+						}
+
+						// Otherwise, we inject the element directly into the jQuery object
+						this.length = 1;
+						this[0] = elem;
+					}
+
+					this.context = document;
+					this.selector = selector;
+					return this;
+				}
+
+			// HANDLE: $(expr, $(...))
+			} else if ( !context || context.jquery ) {
+				return ( context || rootjQuery ).find( selector );
+
+			// HANDLE: $(expr, context)
+			// (which is just equivalent to: $(context).find(expr)
+			} else {
+				return this.constructor( context ).find( selector );
+			}
+
+		// HANDLE: $(function)
+		// Shortcut for document ready
+		} else if ( jQuery.isFunction( selector ) ) {
+			return rootjQuery.ready( selector );
+		}
+
+		if ( selector.selector !== undefined ) {
+			this.selector = selector.selector;
+			this.context = selector.context;
+		}
+
+		return jQuery.makeArray( selector, this );
+	},
+
+	// Start with an empty selector
+	selector: "",
+
+	// The current version of jQuery being used
+	jquery: "1.7.1",
+
+	// The default length of a jQuery object is 0
+	length: 0,
+
+	// The number of elements contained in the matched element set
+	size: function() {
+		return this.length;
+	},
+
+	toArray: function() {
+		return slice.call( this, 0 );
+	},
+
+	// Get the Nth element in the matched element set OR
+	// Get the whole matched element set as a clean array
+	get: function( num ) {
+		return num == null ?
+
+			// Return a 'clean' array
+			this.toArray() :
+
+			// Return just the object
+			( num < 0 ? this[ this.length + num ] : this[ num ] );
+	},
+
+	// Take an array of elements and push it onto the stack
+	// (returning the new matched element set)
+	pushStack: function( elems, name, selector ) {
+		// Build a new jQuery matched element set
+		var ret = this.constructor();
+
+		if ( jQuery.isArray( elems ) ) {
+			push.apply( ret, elems );
+
+		} else {
+			jQuery.merge( ret, elems );
+		}
+
+		// Add the old object onto the stack (as a reference)
+		ret.prevObject = this;
+
+		ret.context = this.context;
+
+		if ( name === "find" ) {
+			ret.selector = this.selector + ( this.selector ? " " : "" ) + selector;
+		} else if ( name ) {
+			ret.selector = this.selector + "." + name + "(" + selector + ")";
+		}
+
+		// Return the newly-formed element set
+		return ret;
+	},
+
+	// Execute a callback for every element in the matched set.
+	// (You can seed the arguments with an array of args, but this is
+	// only used internally.)
+	each: function( callback, args ) {
+		return jQuery.each( this, callback, args );
+	},
+
+	ready: function( fn ) {
+		// Attach the listeners
+		jQuery.bindReady();
+
+		// Add the callback
+		readyList.add( fn );
+
+		return this;
+	},
+
+	eq: function( i ) {
+		i = +i;
+		return i === -1 ?
+			this.slice( i ) :
+			this.slice( i, i + 1 );
+	},
+
+	first: function() {
+		return this.eq( 0 );
+	},
+
+	last: function() {
+		return this.eq( -1 );
+	},
+
+	slice: function() {
+		return this.pushStack( slice.apply( this, arguments ),
+			"slice", slice.call(arguments).join(",") );
+	},
+
+	map: function( callback ) {
+		return this.pushStack( jQuery.map(this, function( elem, i ) {
+			return callback.call( elem, i, elem );
+		}));
+	},
+
+	end: function() {
+		return this.prevObject || this.constructor(null);
+	},
+
+	// For internal use only.
+	// Behaves like an Array's method, not like a jQuery method.
+	push: push,
+	sort: [].sort,
+	splice: [].splice
+};
+
+// Give the init function the jQuery prototype for later instantiation
+jQuery.fn.init.prototype = jQuery.fn;
+
+jQuery.extend = jQuery.fn.extend = function() {
+	var options, name, src, copy, copyIsArray, clone,
+		target = arguments[0] || {},
+		i = 1,
+		length = arguments.length,
+		deep = false;
+
+	// Handle a deep copy situation
+	if ( typeof target === "boolean" ) {
+		deep = target;
+		target = arguments[1] || {};
+		// skip the boolean and the target
+		i = 2;
+	}
+
+	// Handle case when target is a string or something (possible in deep copy)
+	if ( typeof target !== "object" && !jQuery.isFunction(target) ) {
+		target = {};
+	}
+
+	// extend jQuery itself if only one argument is passed
+	if ( length === i ) {
+		target = this;
+		--i;
+	}
+
+	for ( ; i < length; i++ ) {
+		// Only deal with non-null/undefined values
+		if ( (options = arguments[ i ]) != null ) {
+			// Extend the base object
+			for ( name in options ) {
+				src = target[ name ];
+				copy = options[ name ];
+
+				// Prevent never-ending loop
+				if ( target === copy ) {
+					continue;
+				}
+
+				// Recurse if we're merging plain objects or arrays
+				if ( deep && copy && ( jQuery.isPlainObject(copy) || (copyIsArray = jQuery.isArray(copy)) ) ) {
+					if ( copyIsArray ) {
+						copyIsArray = false;
+						clone = src && jQuery.isArray(src) ? src : [];
+
+					} else {
+						clone = src && jQuery.isPlainObject(src) ? src : {};
+					}
+
+					// Never move original objects, clone them
+					target[ name ] = jQuery.extend( deep, clone, copy );
+
+				// Don't bring in undefined values
+				} else if ( copy !== undefined ) {
+					target[ name ] = copy;
+				}
+			}
+		}
+	}
+
+	// Return the modified object
+	return target;
+};
+
+jQuery.extend({
+	noConflict: function( deep ) {
+		if ( window.$ === jQuery ) {
+			window.$ = _$;
+		}
+
+		if ( deep && window.jQuery === jQuery ) {
+			window.jQuery = _jQuery;
+		}
+
+		return jQuery;
+	},
+
+	// Is the DOM ready to be used? Set to true once it occurs.
+	isReady: false,
+
+	// A counter to track how many items to wait for before
+	// the ready event fires. See #6781
+	readyWait: 1,
+
+	// Hold (or release) the ready event
+	holdReady: function( hold ) {
+		if ( hold ) {
+			jQuery.readyWait++;
+		} else {
+			jQuery.ready( true );
+		}
+	},
+
+	// Handle when the DOM is ready
+	ready: function( wait ) {
+		// Either a released hold or an DOMready/load event and not yet ready
+		if ( (wait === true && !--jQuery.readyWait) || (wait !== true && !jQuery.isReady) ) {
+			// Make sure body exists, at least, in case IE gets a little overzealous (ticket #5443).
+			if ( !document.body ) {
+				return setTimeout( jQuery.ready, 1 );
+			}
+
+			// Remember that the DOM is ready
+			jQuery.isReady = true;
+
+			// If a normal DOM Ready event fired, decrement, and wait if need be
+			if ( wait !== true && --jQuery.readyWait > 0 ) {
+				return;
+			}
+
+			// If there are functions bound, to execute
+			readyList.fireWith( document, [ jQuery ] );
+
+			// Trigger any bound ready events
+			if ( jQuery.fn.trigger ) {
+				jQuery( document ).trigger( "ready" ).off( "ready" );
+			}
+		}
+	},
+
+	bindReady: function() {
+		if ( readyList ) {
+			return;
+		}
+
+		readyList = jQuery.Callbacks( "once memory" );
+
+		// Catch cases where $(document).ready() is called after the
+		// browser event has already occurred.
+		if ( document.readyState === "complete" ) {
+			// Handle it asynchronously to allow scripts the opportunity to delay ready
+			return setTimeout( jQuery.ready, 1 );
+		}
+
+		// Mozilla, Opera and webkit nightlies currently support this event
+		if ( document.addEventListener ) {
+			// Use the handy event callback
+			document.addEventListener( "DOMContentLoaded", DOMContentLoaded, false );
+
+			// A fallback to window.onload, that will always work
+			window.addEventListener( "load", jQuery.ready, false );
+
+		// If IE event model is used
+		} else if ( document.attachEvent ) {
+			// ensure firing before onload,
+			// maybe late but safe also for iframes
+			document.attachEvent( "onreadystatechange", DOMContentLoaded );
+
+			// A fallback to window.onload, that will always work
+			window.attachEvent( "onload", jQuery.ready );
+
+			// If IE and not a frame
+			// continually check to see if the document is ready
+			var toplevel = false;
+
+			try {
+				toplevel = window.frameElement == null;
+			} catch(e) {}
+
+			if ( document.documentElement.doScroll && toplevel ) {
+				doScrollCheck();
+			}
+		}
+	},
+
+	// See test/unit/core.js for details concerning isFunction.
+	// Since version 1.3, DOM methods and functions like alert
+	// aren't supported. They return false on IE (#2968).
+	isFunction: function( obj ) {
+		return jQuery.type(obj) === "function";
+	},
+
+	isArray: Array.isArray || function( obj ) {
+		return jQuery.type(obj) === "array";
+	},
+
+	// A crude way of determining if an object is a window
+	isWindow: function( obj ) {
+		return obj && typeof obj === "object" && "setInterval" in obj;
+	},
+
+	isNumeric: function( obj ) {
+		return !isNaN( parseFloat(obj) ) && isFinite( obj );
+	},
+
+	type: function( obj ) {
+		return obj == null ?
+			String( obj ) :
+			class2type[ toString.call(obj) ] || "object";
+	},
+
+	isPlainObject: function( obj ) {
+		// Must be an Object.
+		// Because of IE, we also have to check the presence of the constructor property.
+		// Make sure that DOM nodes and window objects don't pass through, as well
+		if ( !obj || jQuery.type(obj) !== "object" || obj.nodeType || jQuery.isWindow( obj ) ) {
+			return false;
+		}
+
+		try {
+			// Not own constructor property must be Object
+			if ( obj.constructor &&
+				!hasOwn.call(obj, "constructor") &&
+				!hasOwn.call(obj.constructor.prototype, "isPrototypeOf") ) {
+				return false;
+			}
+		} catch ( e ) {
+			// IE8,9 Will throw exceptions on certain host objects #9897
+			return false;
+		}
+
+		// Own properties are enumerated firstly, so to speed up,
+		// if last one is own, then all properties are own.
+
+		var key;
+		for ( key in obj ) {}
+
+		return key === undefined || hasOwn.call( obj, key );
+	},
+
+	isEmptyObject: function( obj ) {
+		for ( var name in obj ) {
+			return false;
+		}
+		return true;
+	},
+
+	error: function( msg ) {
+		throw new Error( msg );
+	},
+
+	parseJSON: function( data ) {
+		if ( typeof data !== "string" || !data ) {
+			return null;
+		}
+
+		// Make sure leading/trailing whitespace is removed (IE can't handle it)
+		data = jQuery.trim( data );
+
+		// Attempt to parse using the native JSON parser first
+		if ( window.JSON && window.JSON.parse ) {
+			return window.JSON.parse( data );
+		}
+
+		// Make sure the incoming data is actual JSON
+		// Logic borrowed from http://json.org/json2.js
+		if ( rvalidchars.test( data.replace( rvalidescape, "@" )
+			.replace( rvalidtokens, "]" )
+			.replace( rvalidbraces, "")) ) {
+
+			return ( new Function( "return " + data ) )();
+
+		}
+		jQuery.error( "Invalid JSON: " + data );
+	},
+
+	// Cross-browser xml parsing
+	parseXML: function( data ) {
+		var xml, tmp;
+		try {
+			if ( window.DOMParser ) { // Standard
+				tmp = new DOMParser();
+				xml = tmp.parseFromString( data , "text/xml" );
+			} else { // IE
+				xml = new ActiveXObject( "Microsoft.XMLDOM" );
+				xml.async = "false";
+				xml.loadXML( data );
+			}
+		} catch( e ) {
+			xml = undefined;
+		}
+		if ( !xml || !xml.documentElement || xml.getElementsByTagName( "parsererror" ).length ) {
+			jQuery.error( "Invalid XML: " + data );
+		}
+		return xml;
+	},
+
+	noop: function() {},
+
+	// Evaluates a script in a global context
+	// Workarounds based on findings by Jim Driscoll
+	// http://weblogs.java.net/blog/driscoll/archive/2009/09/08/eval-javascript-global-context
+	globalEval: function( data ) {
+		if ( data && rnotwhite.test( data ) ) {
+			// We use execScript on Internet Explorer
+			// We use an anonymous function so that context is window
+			// rather than jQuery in Firefox
+			( window.execScript || function( data ) {
+				window[ "eval" ].call( window, data );
+			} )( data );
+		}
+	},
+
+	// Convert dashed to camelCase; used by the css and data modules
+	// Microsoft forgot to hump their vendor prefix (#9572)
+	camelCase: function( string ) {
+		return string.replace( rmsPrefix, "ms-" ).replace( rdashAlpha, fcamelCase );
+	},
+
+	nodeName: function( elem, name ) {
+		return elem.nodeName && elem.nodeName.toUpperCase() === name.toUpperCase();
+	},
+
+	// args is for internal usage only
+	each: function( object, callback, args ) {
+		var name, i = 0,
+			length = object.length,
+			isObj = length === undefined || jQuery.isFunction( object );
+
+		if ( args ) {
+			if ( isObj ) {
+				for ( name in object ) {
+					if ( callback.apply( object[ name ], args ) === false ) {
+						break;
+					}
+				}
+			} else {
+				for ( ; i < length; ) {
+					if ( callback.apply( object[ i++ ], args ) === false ) {
+						break;
+					}
+				}
+			}
+
+		// A special, fast, case for the most common use of each
+		} else {
+			if ( isObj ) {
+				for ( name in object ) {
+					if ( callback.call( object[ name ], name, object[ name ] ) === false ) {
+						break;
+					}
+				}
+			} else {
+				for ( ; i < length; ) {
+					if ( callback.call( object[ i ], i, object[ i++ ] ) === false ) {
+						break;
+					}
+				}
+			}
+		}
+
+		return object;
+	},
+
+	// Use native String.trim function wherever possible
+	trim: trim ?
+		function( text ) {
+			return text == null ?
+				"" :
+				trim.call( text );
+		} :
+
+		// Otherwise use our own trimming functionality
+		function( text ) {
+			return text == null ?
+				"" :
+				text.toString().replace( trimLeft, "" ).replace( trimRight, "" );
+		},
+
+	// results is for internal usage only
+	makeArray: function( array, results ) {
+		var ret = results || [];
+
+		if ( array != null ) {
+			// The window, strings (and functions) also have 'length'
+			// Tweaked logic slightly to handle Blackberry 4.7 RegExp issues #6930
+			var type = jQuery.type( array );
+
+			if ( array.length == null || type === "string" || type === "function" || type === "regexp" || jQuery.isWindow( array ) ) {
+				push.call( ret, array );
+			} else {
+				jQuery.merge( ret, array );
+			}
+		}
+
+		return ret;
+	},
+
+	inArray: function( elem, array, i ) {
+		var len;
+
+		if ( array ) {
+			if ( indexOf ) {
+				return indexOf.call( array, elem, i );
+			}
+
+			len = array.length;
+			i = i ? i < 0 ? Math.max( 0, len + i ) : i : 0;
+
+			for ( ; i < len; i++ ) {
+				// Skip accessing in sparse arrays
+				if ( i in array && array[ i ] === elem ) {
+					return i;
+				}
+			}
+		}
+
+		return -1;
+	},
+
+	merge: function( first, second ) {
+		var i = first.length,
+			j = 0;
+
+		if ( typeof second.length === "number" ) {
+			for ( var l = second.length; j < l; j++ ) {
+				first[ i++ ] = second[ j ];
+			}
+
+		} else {
+			while ( second[j] !== undefined ) {
+				first[ i++ ] = second[ j++ ];
+			}
+		}
+
+		first.length = i;
+
+		return first;
+	},
+
+	grep: function( elems, callback, inv ) {
+		var ret = [], retVal;
+		inv = !!inv;
+
+		// Go through the array, only saving the items
+		// that pass the validator function
+		for ( var i = 0, length = elems.length; i < length; i++ ) {
+			retVal = !!callback( elems[ i ], i );
+			if ( inv !== retVal ) {
+				ret.push( elems[ i ] );
+			}
+		}
+
+		return ret;
+	},
+
+	// arg is for internal usage only
+	map: function( elems, callback, arg ) {
+		var value, key, ret = [],
+			i = 0,
+			length = elems.length,
+			// jquery objects are treated as arrays
+			isArray = elems instanceof jQuery || length !== undefined && typeof length === "number" && ( ( length > 0 && elems[ 0 ] && elems[ length -1 ] ) || length === 0 || jQuery.isArray( elems ) ) ;
+
+		// Go through the array, translating each of the items to their
+		if ( isArray ) {
+			for ( ; i < length; i++ ) {
+				value = callback( elems[ i ], i, arg );
+
+				if ( value != null ) {
+					ret[ ret.length ] = value;
+				}
+			}
+
+		// Go through every key on the object
+		} else {
+			for ( key in elems ) {
+				value = callback( elems[ key ], key, arg );
+
+				if ( value != null ) {
+					ret[ ret.length ] = value;
+				}
+			}
+		}
+
+		// Flatten any nested arrays
+		return ret.concat.apply( [], ret );
+	},
+
+	// A global GUID counter for objects
+	guid: 1,
+
+	// Bind a function to a context, optionally partially applying any
+	// arguments.
+	proxy: function( fn, context ) {
+		if ( typeof context === "string" ) {
+			var tmp = fn[ context ];
+			context = fn;
+			fn = tmp;
+		}
+
+		// Quick check to determine if target is callable, in the spec
+		// this throws a TypeError, but we will just return undefined.
+		if ( !jQuery.isFunction( fn ) ) {
+			return undefined;
+		}
+
+		// Simulated bind
+		var args = slice.call( arguments, 2 ),
+			proxy = function() {
+				return fn.apply( context, args.concat( slice.call( arguments ) ) );
+			};
+
+		// Set the guid of unique handler to the same of original handler, so it can be removed
+		proxy.guid = fn.guid = fn.guid || proxy.guid || jQuery.guid++;
+
+		return proxy;
+	},
+
+	// Mutifunctional method to get and set values to a collection
+	// The value/s can optionally be executed if it's a function
+	access: function( elems, key, value, exec, fn, pass ) {
+		var length = elems.length;
+
+		// Setting many attributes
+		if ( typeof key === "object" ) {
+			for ( var k in key ) {
+				jQuery.access( elems, k, key[k], exec, fn, value );
+			}
+			return elems;
+		}
+
+		// Setting one attribute
+		if ( value !== undefined ) {
+			// Optionally, function values get executed if exec is true
+			exec = !pass && exec && jQuery.isFunction(value);
+
+			for ( var i = 0; i < length; i++ ) {
+				fn( elems[i], key, exec ? value.call( elems[i], i, fn( elems[i], key ) ) : value, pass );
+			}
+
+			return elems;
+		}
+
+		// Getting an attribute
+		return length ? fn( elems[0], key ) : undefined;
+	},
+
+	now: function() {
+		return ( new Date() ).getTime();
+	},
+
+	// Use of jQuery.browser is frowned upon.
+	// More details: http://docs.jquery.com/Utilities/jQuery.browser
+	uaMatch: function( ua ) {
+		ua = ua.toLowerCase();
+
+		var match = rwebkit.exec( ua ) ||
+			ropera.exec( ua ) ||
+			rmsie.exec( ua ) ||
+			ua.indexOf("compatible") < 0 && rmozilla.exec( ua ) ||
+			[];
+
+		return { browser: match[1] || "", version: match[2] || "0" };
+	},
+
+	sub: function() {
+		function jQuerySub( selector, context ) {
+			return new jQuerySub.fn.init( selector, context );
+		}
+		jQuery.extend( true, jQuerySub, this );
+		jQuerySub.superclass = this;
+		jQuerySub.fn = jQuerySub.prototype = this();
+		jQuerySub.fn.constructor = jQuerySub;
+		jQuerySub.sub = this.sub;
+		jQuerySub.fn.init = function init( selector, context ) {
+			if ( context && context instanceof jQuery && !(context instanceof jQuerySub) ) {
+				context = jQuerySub( context );
+			}
+
+			return jQuery.fn.init.call( this, selector, context, rootjQuerySub );
+		};
+		jQuerySub.fn.init.prototype = jQuerySub.fn;
+		var rootjQuerySub = jQuerySub(document);
+		return jQuerySub;
+	},
+
+	browser: {}
+});
+
+// Populate the class2type map
+jQuery.each("Boolean Number String Function Array Date RegExp Object".split(" "), function(i, name) {
+	class2type[ "[object " + name + "]" ] = name.toLowerCase();
+});
+
+browserMatch = jQuery.uaMatch( userAgent );
+if ( browserMatch.browser ) {
+	jQuery.browser[ browserMatch.browser ] = true;
+	jQuery.browser.version = browserMatch.version;
+}
+
+// Deprecated, use jQuery.browser.webkit instead
+if ( jQuery.browser.webkit ) {
+	jQuery.browser.safari = true;
+}
+
+// IE doesn't match non-breaking spaces with \s
+if ( rnotwhite.test( "\xA0" ) ) {
+	trimLeft = /^[\s\xA0]+/;
+	trimRight = /[\s\xA0]+$/;
+}
+
+// All jQuery objects should point back to these
+rootjQuery = jQuery(document);
+
+// Cleanup functions for the document ready method
+if ( document.addEventListener ) {
+	DOMContentLoaded = function() {
+		document.removeEventListener( "DOMContentLoaded", DOMContentLoaded, false );
+		jQuery.ready();
+	};
+
+} else if ( document.attachEvent ) {
+	DOMContentLoaded = function() {
+		// Make sure body exists, at least, in case IE gets a little overzealous (ticket #5443).
+		if ( document.readyState === "complete" ) {
+			document.detachEvent( "onreadystatechange", DOMContentLoaded );
+			jQuery.ready();
+		}
+	};
+}
+
+// The DOM ready check for Internet Explorer
+function doScrollCheck() {
+	if ( jQuery.isReady ) {
+		return;
+	}
+
+	try {
+		// If IE is used, use the trick by Diego Perini
+		// http://javascript.nwbox.com/IEContentLoaded/
+		document.documentElement.doScroll("left");
+	} catch(e) {
+		setTimeout( doScrollCheck, 1 );
+		return;
+	}
+
+	// and execute any waiting functions
+	jQuery.ready();
+}
+
+return jQuery;
+
+})();
+
+
+// String to Object flags format cache
+var flagsCache = {};
+
+// Convert String-formatted flags into Object-formatted ones and store in cache
+function createFlags( flags ) {
+	var object = flagsCache[ flags ] = {},
+		i, length;
+	flags = flags.split( /\s+/ );
+	for ( i = 0, length = flags.length; i < length; i++ ) {
+		object[ flags[i] ] = true;
+	}
+	return object;
+}
+
+/*
+ * Create a callback list using the following parameters:
+ *
+ *	flags:	an optional list of space-separated flags that will change how
+ *			the callback list behaves
+ *
+ * By default a callback list will act like an event callback list and can be
+ * "fired" multiple times.
+ *
+ * Possible flags:
+ *
+ *	once:			will ensure the callback list can only be fired once (like a Deferred)
+ *
+ *	memory:			will keep track of previous values and will call any callback added
+ *					after the list has been fired right away with the latest "memorized"
+ *					values (like a Deferred)
+ *
+ *	unique:			will ensure a callback can only be added once (no duplicate in the list)
+ *
+ *	stopOnFalse:	interrupt callings when a callback returns false
+ *
+ */
+jQuery.Callbacks = function( flags ) {
+
+	// Convert flags from String-formatted to Object-formatted
+	// (we check in cache first)
+	flags = flags ? ( flagsCache[ flags ] || createFlags( flags ) ) : {};
+
+	var // Actual callback list
+		list = [],
+		// Stack of fire calls for repeatable lists
+		stack = [],
+		// Last fire value (for non-forgettable lists)
+		memory,
+		// Flag to know if list is currently firing
+		firing,
+		// First callback to fire (used internally by add and fireWith)
+		firingStart,
+		// End of the loop when firing
+		firingLength,
+		// Index of currently firing callback (modified by remove if needed)
+		firingIndex,
+		// Add one or several callbacks to the list
+		add = function( args ) {
+			var i,
+				length,
+				elem,
+				type,
+				actual;
+			for ( i = 0, length = args.length; i < length; i++ ) {
+				elem = args[ i ];
+				type = jQuery.type( elem );
+				if ( type === "array" ) {
+					// Inspect recursively
+					add( elem );
+				} else if ( type === "function" ) {
+					// Add if not in unique mode and callback is not in
+					if ( !flags.unique || !self.has( elem ) ) {
+						list.push( elem );
+					}
+				}
+			}
+		},
+		// Fire callbacks
+		fire = function( context, args ) {
+			args = args || [];
+			memory = !flags.memory || [ context, args ];
+			firing = true;
+			firingIndex = firingStart || 0;
+			firingStart = 0;
+			firingLength = list.length;
+			for ( ; list && firingIndex < firingLength; firingIndex++ ) {
+				if ( list[ firingIndex ].apply( context, args ) === false && flags.stopOnFalse ) {
+					memory = true; // Mark as halted
+					break;
+				}
+			}
+			firing = false;
+			if ( list ) {
+				if ( !flags.once ) {
+					if ( stack && stack.length ) {
+						memory = stack.shift();
+						self.fireWith( memory[ 0 ], memory[ 1 ] );
+					}
+				} else if ( memory === true ) {
+					self.disable();
+				} else {
+					list = [];
+				}
+			}
+		},
+		// Actual Callbacks object
+		self = {
+			// Add a callback or a collection of callbacks to the list
+			add: function() {
+				if ( list ) {
+					var length = list.length;
+					add( arguments );
+					// Do we need to add the callbacks to the
+					// current firing batch?
+					if ( firing ) {
+						firingLength = list.length;
+					// With memory, if we're not firing then
+					// we should call right away, unless previous
+					// firing was halted (stopOnFalse)
+					} else if ( memory && memory !== true ) {
+						firingStart = length;
+						fire( memory[ 0 ], memory[ 1 ] );
+					}
+				}
+				return this;
+			},
+			// Remove a callback from the list
+			remove: function() {
+				if ( list ) {
+					var args = arguments,
+						argIndex = 0,
+						argLength = args.length;
+					for ( ; argIndex < argLength ; argIndex++ ) {
+						for ( var i = 0; i < list.length; i++ ) {
+							if ( args[ argIndex ] === list[ i ] ) {
+								// Handle firingIndex and firingLength
+								if ( firing ) {
+									if ( i <= firingLength ) {
+										firingLength--;
+										if ( i <= firingIndex ) {
+											firingIndex--;
+										}
+									}
+								}
+								// Remove the element
+								list.splice( i--, 1 );
+								// If we have some unicity property then
+								// we only need to do this once
+								if ( flags.unique ) {
+									break;
+								}
+							}
+						}
+					}
+				}
+				return this;
+			},
+			// Control if a given callback is in the list
+			has: function( fn ) {
+				if ( list ) {
+					var i = 0,
+						length = list.length;
+					for ( ; i < length; i++ ) {
+						if ( fn === list[ i ] ) {
+							return true;
+						}
+					}
+				}
+				return false;
+			},
+			// Remove all callbacks from the list
+			empty: function() {
+				list = [];
+				return this;
+			},
+			// Have the list do nothing anymore
+			disable: function() {
+				list = stack = memory = undefined;
+				return this;
+			},
+			// Is it disabled?
+			disabled: function() {
+				return !list;
+			},
+			// Lock the list in its current state
+			lock: function() {
+				stack = undefined;
+				if ( !memory || memory === true ) {
+					self.disable();
+				}
+				return this;
+			},
+			// Is it locked?
+			locked: function() {
+				return !stack;
+			},
+			// Call all callbacks with the given context and arguments
+			fireWith: function( context, args ) {
+				if ( stack ) {
+					if ( firing ) {
+						if ( !flags.once ) {
+							stack.push( [ context, args ] );
+						}
+					} else if ( !( flags.once && memory ) ) {
+						fire( context, args );
+					}
+				}
+				return this;
+			},
+			// Call all the callbacks with the given arguments
+			fire: function() {
+				self.fireWith( this, arguments );
+				return this;
+			},
+			// To know if the callbacks have already been called at least once
+			fired: function() {
+				return !!memory;
+			}
+		};
+
+	return self;
+};
+
+
+
+
+var // Static reference to slice
+	sliceDeferred = [].slice;
+
+jQuery.extend({
+
+	Deferred: function( func ) {
+		var doneList = jQuery.Callbacks( "once memory" ),
+			failList = jQuery.Callbacks( "once memory" ),
+			progressList = jQuery.Callbacks( "memory" ),
+			state = "pending",
+			lists = {
+				resolve: doneList,
+				reject: failList,
+				notify: progressList
+			},
+			promise = {
+				done: doneList.add,
+				fail: failList.add,
+				progress: progressList.add,
+
+				state: function() {
+					return state;
+				},
+
+				// Deprecated
+				isResolved: doneList.fired,
+				isRejected: failList.fired,
+
+				then: function( doneCallbacks, failCallbacks, progressCallbacks ) {
+					deferred.done( doneCallbacks ).fail( failCallbacks ).progress( progressCallbacks );
+					return this;
+				},
+				always: function() {
+					deferred.done.apply( deferred, arguments ).fail.apply( deferred, arguments );
+					return this;
+				},
+				pipe: function( fnDone, fnFail, fnProgress ) {
+					return jQuery.Deferred(function( newDefer ) {
+						jQuery.each( {
+							done: [ fnDone, "resolve" ],
+							fail: [ fnFail, "reject" ],
+							progress: [ fnProgress, "notify" ]
+						}, function( handler, data ) {
+							var fn = data[ 0 ],
+								action = data[ 1 ],
+								returned;
+							if ( jQuery.isFunction( fn ) ) {
+								deferred[ handler ](function() {
+									returned = fn.apply( this, arguments );
+									if ( returned && jQuery.isFunction( returned.promise ) ) {
+										returned.promise().then( newDefer.resolve, newDefer.reject, newDefer.notify );
+									} else {
+										newDefer[ action + "With" ]( this === deferred ? newDefer : this, [ returned ] );
+									}
+								});
+							} else {
+								deferred[ handler ]( newDefer[ action ] );
+							}
+						});
+					}).promise();
+				},
+				// Get a promise for this deferred
+				// If obj is provided, the promise aspect is added to the object
+				promise: function( obj ) {
+					if ( obj == null ) {
+						obj = promise;
+					} else {
+						for ( var key in promise ) {
+							obj[ key ] = promise[ key ];
+						}
+					}
+					return obj;
+				}
+			},
+			deferred = promise.promise({}),
+			key;
+
+		for ( key in lists ) {
+			deferred[ key ] = lists[ key ].fire;
+			deferred[ key + "With" ] = lists[ key ].fireWith;
+		}
+
+		// Handle state
+		deferred.done( function() {
+			state = "resolved";
+		}, failList.disable, progressList.lock ).fail( function() {
+			state = "rejected";
+		}, doneList.disable, progressList.lock );
+
+		// Call given func if any
+		if ( func ) {
+			func.call( deferred, deferred );
+		}
+
+		// All done!
+		return deferred;
+	},
+
+	// Deferred helper
+	when: function( firstParam ) {
+		var args = sliceDeferred.call( arguments, 0 ),
+			i = 0,
+			length = args.length,
+			pValues = new Array( length ),
+			count = length,
+			pCount = length,
+			deferred = length <= 1 && firstParam && jQuery.isFunction( firstParam.promise ) ?
+				firstParam :
+				jQuery.Deferred(),
+			promise = deferred.promise();
+		function resolveFunc( i ) {
+			return function( value ) {
+				args[ i ] = arguments.length > 1 ? sliceDeferred.call( arguments, 0 ) : value;
+				if ( !( --count ) ) {
+					deferred.resolveWith( deferred, args );
+				}
+			};
+		}
+		function progressFunc( i ) {
+			return function( value ) {
+				pValues[ i ] = arguments.length > 1 ? sliceDeferred.call( arguments, 0 ) : value;
+				deferred.notifyWith( promise, pValues );
+			};
+		}
+		if ( length > 1 ) {
+			for ( ; i < length; i++ ) {
+				if ( args[ i ] && args[ i ].promise && jQuery.isFunction( args[ i ].promise ) ) {
+					args[ i ].promise().then( resolveFunc(i), deferred.reject, progressFunc(i) );
+				} else {
+					--count;
+				}
+			}
+			if ( !count ) {
+				deferred.resolveWith( deferred, args );
+			}
+		} else if ( deferred !== firstParam ) {
+			deferred.resolveWith( deferred, length ? [ firstParam ] : [] );
+		}
+		return promise;
+	}
+});
+
+
+
+
+jQuery.support = (function() {
+
+	var support,
+		all,
+		a,
+		select,
+		opt,
+		input,
+		marginDiv,
+		fragment,
+		tds,
+		events,
+		eventName,
+		i,
+		isSupported,
+		div = document.createElement( "div" ),
+		documentElement = document.documentElement;
+
+	// Preliminary tests
+	div.setAttribute("className", "t");
+	div.innerHTML = "   <link/><table></table><a href='/a' style='top:1px;float:left;opacity:.55;'>a</a><input type='checkbox'/>";
+
+	all = div.getElementsByTagName( "*" );
+	a = div.getElementsByTagName( "a" )[ 0 ];
+
+	// Can't get basic test support
+	if ( !all || !all.length || !a ) {
+		return {};
+	}
+
+	// First batch of supports tests
+	select = document.createElement( "select" );
+	opt = select.appendChild( document.createElement("option") );
+	input = div.getElementsByTagName( "input" )[ 0 ];
+
+	support = {
+		// IE strips leading whitespace when .innerHTML is used
+		leadingWhitespace: ( div.firstChild.nodeType === 3 ),
+
+		// Make sure that tbody elements aren't automatically inserted
+		// IE will insert them into empty tables
+		tbody: !div.getElementsByTagName("tbody").length,
+
+		// Make sure that link elements get serialized correctly by innerHTML
+		// This requires a wrapper element in IE
+		htmlSerialize: !!div.getElementsByTagName("link").length,
+
+		// Get the style information from getAttribute
+		// (IE uses .cssText instead)
+		style: /top/.test( a.getAttribute("style") ),
+
+		// Make sure that URLs aren't manipulated
+		// (IE normalizes it by default)
+		hrefNormalized: ( a.getAttribute("href") === "/a" ),
+
+		// Make sure that element opacity exists
+		// (IE uses filter instead)
+		// Use a regex to work around a WebKit issue. See #5145
+		opacity: /^0.55/.test( a.style.opacity ),
+
+		// Verify style float existence
+		// (IE uses styleFloat instead of cssFloat)
+		cssFloat: !!a.style.cssFloat,
+
+		// Make sure that if no value is specified for a checkbox
+		// that it defaults to "on".
+		// (WebKit defaults to "" instead)
+		checkOn: ( input.value === "on" ),
+
+		// Make sure that a selected-by-default option has a working selected property.
+		// (WebKit defaults to false instead of true, IE too, if it's in an optgroup)
+		optSelected: opt.selected,
+
+		// Test setAttribute on camelCase class. If it works, we need attrFixes when doing get/setAttribute (ie6/7)
+		getSetAttribute: div.className !== "t",
+
+		// Tests for enctype support on a form(#6743)
+		enctype: !!document.createElement("form").enctype,
+
+		// Makes sure cloning an html5 element does not cause problems
+		// Where outerHTML is undefined, this still works
+		html5Clone: document.createElement("nav").cloneNode( true ).outerHTML !== "<:nav></:nav>",
+
+		// Will be defined later
+		submitBubbles: true,
+		changeBubbles: true,
+		focusinBubbles: false,
+		deleteExpando: true,
+		noCloneEvent: true,
+		inlineBlockNeedsLayout: false,
+		shrinkWrapBlocks: false,
+		reliableMarginRight: true
+	};
+
+	// Make sure checked status is properly cloned
+	input.checked = true;
+	support.noCloneChecked = input.cloneNode( true ).checked;
+
+	// Make sure that the options inside disabled selects aren't marked as disabled
+	// (WebKit marks them as disabled)
+	select.disabled = true;
+	support.optDisabled = !opt.disabled;
+
+	// Test to see if it's possible to delete an expando from an element
+	// Fails in Internet Explorer
+	try {
+		delete div.test;
+	} catch( e ) {
+		support.deleteExpando = false;
+	}
+
+	if ( !div.addEventListener && div.attachEvent && div.fireEvent ) {
+		div.attachEvent( "onclick", function() {
+			// Cloning a node shouldn't copy over any
+			// bound event handlers (IE does this)
+			support.noCloneEvent = false;
+		});
+		div.cloneNode( true ).fireEvent( "onclick" );
+	}
+
+	// Check if a radio maintains its value
+	// after being appended to the DOM
+	input = document.createElement("input");
+	input.value = "t";
+	input.setAttribute("type", "radio");
+	support.radioValue = input.value === "t";
+
+	input.setAttribute("checked", "checked");
+	div.appendChild( input );
+	fragment = document.createDocumentFragment();
+	fragment.appendChild( div.lastChild );
+
+	// WebKit doesn't clone checked state correctly in fragments
+	support.checkClone = fragment.cloneNode( true ).cloneNode( true ).lastChild.checked;
+
+	// Check if a disconnected checkbox will retain its checked
+	// value of true after appended to the DOM (IE6/7)
+	support.appendChecked = input.checked;
+
+	fragment.removeChild( input );
+	fragment.appendChild( div );
+
+	div.innerHTML = "";
+
+	// Check if div with explicit width and no margin-right incorrectly
+	// gets computed margin-right based on width of container. For more
+	// info see bug #3333
+	// Fails in WebKit before Feb 2011 nightlies
+	// WebKit Bug 13343 - getComputedStyle returns wrong value for margin-right
+	if ( window.getComputedStyle ) {
+		marginDiv = document.createElement( "div" );
+		marginDiv.style.width = "0";
+		marginDiv.style.marginRight = "0";
+		div.style.width = "2px";
+		div.appendChild( marginDiv );
+		support.reliableMarginRight =
+			( parseInt( ( window.getComputedStyle( marginDiv, null ) || { marginRight: 0 } ).marginRight, 10 ) || 0 ) === 0;
+	}
+
+	// Technique from Juriy Zaytsev
+	// http://perfectionkills.com/detecting-event-support-without-browser-sniffing/
+	// We only care about the case where non-standard event systems
+	// are used, namely in IE. Short-circuiting here helps us to
+	// avoid an eval call (in setAttribute) which can cause CSP
+	// to go haywire. See: https://developer.mozilla.org/en/Security/CSP
+	if ( div.attachEvent ) {
+		for( i in {
+			submit: 1,
+			change: 1,
+			focusin: 1
+		}) {
+			eventName = "on" + i;
+			isSupported = ( eventName in div );
+			if ( !isSupported ) {
+				div.setAttribute( eventName, "return;" );
+				isSupported = ( typeof div[ eventName ] === "function" );
+			}
+			support[ i + "Bubbles" ] = isSupported;
+		}
+	}
+
+	fragment.removeChild( div );
+
+	// Null elements to avoid leaks in IE
+	fragment = select = opt = marginDiv = div = input = null;
+
+	// Run tests that need a body at doc ready
+	jQuery(function() {
+		var container, outer, inner, table, td, offsetSupport,
+			conMarginTop, ptlm, vb, style, html,
+			body = document.getElementsByTagName("body")[0];
+
+		if ( !body ) {
+			// Return for frameset docs that don't have a body
+			return;
+		}
+
+		conMarginTop = 1;
+		ptlm = "position:absolute;top:0;left:0;width:1px;height:1px;margin:0;";
+		vb = "visibility:hidden;border:0;";
+		style = "style='" + ptlm + "border:5px solid #000;padding:0;'";
+		html = "<div " + style + "><div></div></div>" +
+			"<table " + style + " cellpadding='0' cellspacing='0'>" +
+			"<tr><td></td></tr></table>";
+
+		container = document.createElement("div");
+		container.style.cssText = vb + "width:0;height:0;position:static;top:0;margin-top:" + conMarginTop + "px";
+		body.insertBefore( container, body.firstChild );
+
+		// Construct the test element
+		div = document.createElement("div");
+		container.appendChild( div );
+
+		// Check if table cells still have offsetWidth/Height when they are set
+		// to display:none and there are still other visible table cells in a
+		// table row; if so, offsetWidth/Height are not reliable for use when
+		// determining if an element has been hidden directly using
+		// display:none (it is still safe to use offsets if a parent element is
+		// hidden; don safety goggles and see bug #4512 for more information).
+		// (only IE 8 fails this test)
+		div.innerHTML = "<table><tr><td style='padding:0;border:0;display:none'></td><td>t</td></tr></table>";
+		tds = div.getElementsByTagName( "td" );
+		isSupported = ( tds[ 0 ].offsetHeight === 0 );
+
+		tds[ 0 ].style.display = "";
+		tds[ 1 ].style.display = "none";
+
+		// Check if empty table cells still have offsetWidth/Height
+		// (IE <= 8 fail this test)
+		support.reliableHiddenOffsets = isSupported && ( tds[ 0 ].offsetHeight === 0 );
+
+		// Figure out if the W3C box model works as expected
+		div.innerHTML = "";
+		div.style.width = div.style.paddingLeft = "1px";
+		jQuery.boxModel = support.boxModel = div.offsetWidth === 2;
+
+		if ( typeof div.style.zoom !== "undefined" ) {
+			// Check if natively block-level elements act like inline-block
+			// elements when setting their display to 'inline' and giving
+			// them layout
+			// (IE < 8 does this)
+			div.style.display = "inline";
+			div.style.zoom = 1;
+			support.inlineBlockNeedsLayout = ( div.offsetWidth === 2 );
+
+			// Check if elements with layout shrink-wrap their children
+			// (IE 6 does this)
+			div.style.display = "";
+			div.innerHTML = "<div style='width:4px;'></div>";
+			support.shrinkWrapBlocks = ( div.offsetWidth !== 2 );
+		}
+
+		div.style.cssText = ptlm + vb;
+		div.innerHTML = html;
+
+		outer = div.firstChild;
+		inner = outer.firstChild;
+		td = outer.nextSibling.firstChild.firstChild;
+
+		offsetSupport = {
+			doesNotAddBorder: ( inner.offsetTop !== 5 ),
+			doesAddBorderForTableAndCells: ( td.offsetTop === 5 )
+		};
+
+		inner.style.position = "fixed";
+		inner.style.top = "20px";
+
+		// safari subtracts parent border width here which is 5px
+		offsetSupport.fixedPosition = ( inner.offsetTop === 20 || inner.offsetTop === 15 );
+		inner.style.position = inner.style.top = "";
+
+		outer.style.overflow = "hidden";
+		outer.style.position = "relative";
+
+		offsetSupport.subtractsBorderForOverflowNotVisible = ( inner.offsetTop === -5 );
+		offsetSupport.doesNotIncludeMarginInBodyOffset = ( body.offsetTop !== conMarginTop );
+
+		body.removeChild( container );
+		div  = container = null;
+
+		jQuery.extend( support, offsetSupport );
+	});
+
+	return support;
+})();
+
+
+
+
+var rbrace = /^(?:\{.*\}|\[.*\])$/,
+	rmultiDash = /([A-Z])/g;
+
+jQuery.extend({
+	cache: {},
+
+	// Please use with caution
+	uuid: 0,
+
+	// Unique for each copy of jQuery on the page
+	// Non-digits removed to match rinlinejQuery
+	expando: "jQuery" + ( jQuery.fn.jquery + Math.random() ).replace( /\D/g, "" ),
+
+	// The following elements throw uncatchable exceptions if you
+	// attempt to add expando properties to them.
+	noData: {
+		"embed": true,
+		// Ban all objects except for Flash (which handle expandos)
+		"object": "clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",
+		"applet": true
+	},
+
+	hasData: function( elem ) {
+		elem = elem.nodeType ? jQuery.cache[ elem[jQuery.expando] ] : elem[ jQuery.expando ];
+		return !!elem && !isEmptyDataObject( elem );
+	},
+
+	data: function( elem, name, data, pvt /* Internal Use Only */ ) {
+		if ( !jQuery.acceptData( elem ) ) {
+			return;
+		}
+
+		var privateCache, thisCache, ret,
+			internalKey = jQuery.expando,
+			getByName = typeof name === "string",
+
+			// We have to handle DOM nodes and JS objects differently because IE6-7
+			// can't GC object references properly across the DOM-JS boundary
+			isNode = elem.nodeType,
+
+			// Only DOM nodes need the global jQuery cache; JS object data is
+			// attached directly to the object so GC can occur automatically
+			cache = isNode ? jQuery.cache : elem,
+
+			// Only defining an ID for JS objects if its cache already exists allows
+			// the code to shortcut on the same path as a DOM node with no cache
+			id = isNode ? elem[ internalKey ] : elem[ internalKey ] && internalKey,
+			isEvents = name === "events";
+
+		// Avoid doing any more work than we need to when trying to get data on an
+		// object that has no data at all
+		if ( (!id || !cache[id] || (!isEvents && !pvt && !cache[id].data)) && getByName && data === undefined ) {
+			return;
+		}
+
+		if ( !id ) {
+			// Only DOM nodes need a new unique ID for each element since their data
+			// ends up in the global cache
+			if ( isNode ) {
+				elem[ internalKey ] = id = ++jQuery.uuid;
+			} else {
+				id = internalKey;
+			}
+		}
+
+		if ( !cache[ id ] ) {
+			cache[ id ] = {};
+
+			// Avoids exposing jQuery metadata on plain JS objects when the object
+			// is serialized using JSON.stringify
+			if ( !isNode ) {
+				cache[ id ].toJSON = jQuery.noop;
+			}
+		}
+
+		// An object can be passed to jQuery.data instead of a key/value pair; this gets
+		// shallow copied over onto the existing cache
+		if ( typeof name === "object" || typeof name === "function" ) {
+			if ( pvt ) {
+				cache[ id ] = jQuery.extend( cache[ id ], name );
+			} else {
+				cache[ id ].data = jQuery.extend( cache[ id ].data, name );
+			}
+		}
+
+		privateCache = thisCache = cache[ id ];
+
+		// jQuery data() is stored in a separate object inside the object's internal data
+		// cache in order to avoid key collisions between internal data and user-defined
+		// data.
+		if ( !pvt ) {
+			if ( !thisCache.data ) {
+				thisCache.data = {};
+			}
+
+			thisCache = thisCache.data;
+		}
+
+		if ( data !== undefined ) {
+			thisCache[ jQuery.camelCase( name ) ] = data;
+		}
+
+		// Users should not attempt to inspect the internal events object using jQuery.data,
+		// it is undocumented and subject to change. But does anyone listen? No.
+		if ( isEvents && !thisCache[ name ] ) {
+			return privateCache.events;
+		}
+
+		// Check for both converted-to-camel and non-converted data property names
+		// If a data property was specified
+		if ( getByName ) {
+
+			// First Try to find as-is property data
+			ret = thisCache[ name ];
+
+			// Test for null|undefined property data
+			if ( ret == null ) {
+
+				// Try to find the camelCased property
+				ret = thisCache[ jQuery.camelCase( name ) ];
+			}
+		} else {
+			ret = thisCache;
+		}
+
+		return ret;
+	},
+
+	removeData: function( elem, name, pvt /* Internal Use Only */ ) {
+		if ( !jQuery.acceptData( elem ) ) {
+			return;
+		}
+
+		var thisCache, i, l,
+
+			// Reference to internal data cache key
+			internalKey = jQuery.expando,
+
+			isNode = elem.nodeType,
+
+			// See jQuery.data for more information
+			cache = isNode ? jQuery.cache : elem,
+
+			// See jQuery.data for more information
+			id = isNode ? elem[ internalKey ] : internalKey;
+
+		// If there is already no cache entry for this object, there is no
+		// purpose in continuing
+		if ( !cache[ id ] ) {
+			return;
+		}
+
+		if ( name ) {
+
+			thisCache = pvt ? cache[ id ] : cache[ id ].data;
+
+			if ( thisCache ) {
+
+				// Support array or space separated string names for data keys
+				if ( !jQuery.isArray( name ) ) {
+
+					// try the string as a key before any manipulation
+					if ( name in thisCache ) {
+						name = [ name ];
+					} else {
+
+						// split the camel cased version by spaces unless a key with the spaces exists
+						name = jQuery.camelCase( name );
+						if ( name in thisCache ) {
+							name = [ name ];
+						} else {
+							name = name.split( " " );
+						}
+					}
+				}
+
+				for ( i = 0, l = name.length; i < l; i++ ) {
+					delete thisCache[ name[i] ];
+				}
+
+				// If there is no data left in the cache, we want to continue
+				// and let the cache object itself get destroyed
+				if ( !( pvt ? isEmptyDataObject : jQuery.isEmptyObject )( thisCache ) ) {
+					return;
+				}
+			}
+		}
+
+		// See jQuery.data for more information
+		if ( !pvt ) {
+			delete cache[ id ].data;
+
+			// Don't destroy the parent cache unless the internal data object
+			// had been the only thing left in it
+			if ( !isEmptyDataObject(cache[ id ]) ) {
+				return;
+			}
+		}
+
+		// Browsers that fail expando deletion also refuse to delete expandos on
+		// the window, but it will allow it on all other JS objects; other browsers
+		// don't care
+		// Ensure that `cache` is not a window object #10080
+		if ( jQuery.support.deleteExpando || !cache.setInterval ) {
+			delete cache[ id ];
+		} else {
+			cache[ id ] = null;
+		}
+
+		// We destroyed the cache and need to eliminate the expando on the node to avoid
+		// false lookups in the cache for entries that no longer exist
+		if ( isNode ) {
+			// IE does not allow us to delete expando properties from nodes,
+			// nor does it have a removeAttribute function on Document nodes;
+			// we must handle all of these cases
+			if ( jQuery.support.deleteExpando ) {
+				delete elem[ internalKey ];
+			} else if ( elem.removeAttribute ) {
+				elem.removeAttribute( internalKey );
+			} else {
+				elem[ internalKey ] = null;
+			}
+		}
+	},
+
+	// For internal use only.
+	_data: function( elem, name, data ) {
+		return jQuery.data( elem, name, data, true );
+	},
+
+	// A method for determining if a DOM node can handle the data expando
+	acceptData: function( elem ) {
+		if ( elem.nodeName ) {
+			var match = jQuery.noData[ elem.nodeName.toLowerCase() ];
+
+			if ( match ) {
+				return !(match === true || elem.getAttribute("classid") !== match);
+			}
+		}
+
+		return true;
+	}
+});
+
+jQuery.fn.extend({
+	data: function( key, value ) {
+		var parts, attr, name,
+			data = null;
+
+		if ( typeof key === "undefined" ) {
+			if ( this.length ) {
+				data = jQuery.data( this[0] );
+
+				if ( this[0].nodeType === 1 && !jQuery._data( this[0], "parsedAttrs" ) ) {
+					attr = this[0].attributes;
+					for ( var i = 0, l = attr.length; i < l; i++ ) {
+						name = attr[i].name;
+
+						if ( name.indexOf( "data-" ) === 0 ) {
+							name = jQuery.camelCase( name.substring(5) );
+
+							dataAttr( this[0], name, data[ name ] );
+						}
+					}
+					jQuery._data( this[0], "parsedAttrs", true );
+				}
+			}
+
+			return data;
+
+		} else if ( typeof key === "object" ) {
+			return this.each(function() {
+				jQuery.data( this, key );
+			});
+		}
+
+		parts = key.split(".");
+		parts[1] = parts[1] ? "." + parts[1] : "";
+
+		if ( value === undefined ) {
+			data = this.triggerHandler("getData" + parts[1] + "!", [parts[0]]);
+
+			// Try to fetch any internally stored data first
+			if ( data === undefined && this.length ) {
+				data = jQuery.data( this[0], key );
+				data = dataAttr( this[0], key, data );
+			}
+
+			return data === undefined && parts[1] ?
+				this.data( parts[0] ) :
+				data;
+
+		} else {
+			return this.each(function() {
+				var self = jQuery( this ),
+					args = [ parts[0], value ];
+
+				self.triggerHandler( "setData" + parts[1] + "!", args );
+				jQuery.data( this, key, value );
+				self.triggerHandler( "changeData" + parts[1] + "!", args );
+			});
+		}
+	},
+
+	removeData: function( key ) {
+		return this.each(function() {
+			jQuery.removeData( this, key );
+		});
+	}
+});
+
+function dataAttr( elem, key, data ) {
+	// If nothing was found internally, try to fetch any
+	// data from the HTML5 data-* attribute
+	if ( data === undefined && elem.nodeType === 1 ) {
+
+		var name = "data-" + key.replace( rmultiDash, "-$1" ).toLowerCase();
+
+		data = elem.getAttribute( name );
+
+		if ( typeof data === "string" ) {
+			try {
+				data = data === "true" ? true :
+				data === "false" ? false :
+				data === "null" ? null :
+				jQuery.isNumeric( data ) ? parseFloat( data ) :
+					rbrace.test( data ) ? jQuery.parseJSON( data ) :
+					data;
+			} catch( e ) {}
+
+			// Make sure we set the data so it isn't changed later
+			jQuery.data( elem, key, data );
+
+		} else {
+			data = undefined;
+		}
+	}
+
+	return data;
+}
+
+// checks a cache object for emptiness
+function isEmptyDataObject( obj ) {
+	for ( var name in obj ) {
+
+		// if the public data object is empty, the private is still empty
+		if ( name === "data" && jQuery.isEmptyObject( obj[name] ) ) {
+			continue;
+		}
+		if ( name !== "toJSON" ) {
+			return false;
+		}
+	}
+
+	return true;
+}
+
+
+
+
+function handleQueueMarkDefer( elem, type, src ) {
+	var deferDataKey = type + "defer",
+		queueDataKey = type + "queue",
+		markDataKey = type + "mark",
+		defer = jQuery._data( elem, deferDataKey );
+	if ( defer &&
+		( src === "queue" || !jQuery._data(elem, queueDataKey) ) &&
+		( src === "mark" || !jQuery._data(elem, markDataKey) ) ) {
+		// Give room for hard-coded callbacks to fire first
+		// and eventually mark/queue something else on the element
+		setTimeout( function() {
+			if ( !jQuery._data( elem, queueDataKey ) &&
+				!jQuery._data( elem, markDataKey ) ) {
+				jQuery.removeData( elem, deferDataKey, true );
+				defer.fire();
+			}
+		}, 0 );
+	}
+}
+
+jQuery.extend({
+
+	_mark: function( elem, type ) {
+		if ( elem ) {
+			type = ( type || "fx" ) + "mark";
+			jQuery._data( elem, type, (jQuery._data( elem, type ) || 0) + 1 );
+		}
+	},
+
+	_unmark: function( force, elem, type ) {
+		if ( force !== true ) {
+			type = elem;
+			elem = force;
+			force = false;
+		}
+		if ( elem ) {
+			type = type || "fx";
+			var key = type + "mark",
+				count = force ? 0 : ( (jQuery._data( elem, key ) || 1) - 1 );
+			if ( count ) {
+				jQuery._data( elem, key, count );
+			} else {
+				jQuery.removeData( elem, key, true );
+				handleQueueMarkDefer( elem, type, "mark" );
+			}
+		}
+	},
+
+	queue: function( elem, type, data ) {
+		var q;
+		if ( elem ) {
+			type = ( type || "fx" ) + "queue";
+			q = jQuery._data( elem, type );
+
+			// Speed up dequeue by getting out quickly if this is just a lookup
+			if ( data ) {
+				if ( !q || jQuery.isArray(data) ) {
+					q = jQuery._data( elem, type, jQuery.makeArray(data) );
+				} else {
+					q.push( data );
+				}
+			}
+			return q || [];
+		}
+	},
+
+	dequeue: function( elem, type ) {
+		type = type || "fx";
+
+		var queue = jQuery.queue( elem, type ),
+			fn = queue.shift(),
+			hooks = {};
+
+		// If the fx queue is dequeued, always remove the progress sentinel
+		if ( fn === "inprogress" ) {
+			fn = queue.shift();
+		}
+
+		if ( fn ) {
+			// Add a progress sentinel to prevent the fx queue from being
+			// automatically dequeued
+			if ( type === "fx" ) {
+				queue.unshift( "inprogress" );
+			}
+
+			jQuery._data( elem, type + ".run", hooks );
+			fn.call( elem, function() {
+				jQuery.dequeue( elem, type );
+			}, hooks );
+		}
+
+		if ( !queue.length ) {
+			jQuery.removeData( elem, type + "queue " + type + ".run", true );
+			handleQueueMarkDefer( elem, type, "queue" );
+		}
+	}
+});
+
+jQuery.fn.extend({
+	queue: function( type, data ) {
+		if ( typeof type !== "string" ) {
+			data = type;
+			type = "fx";
+		}
+
+		if ( data === undefined ) {
+			return jQuery.queue( this[0], type );
+		}
+		return this.each(function() {
+			var queue = jQuery.queue( this, type, data );
+
+			if ( type === "fx" && queue[0] !== "inprogress" ) {
+				jQuery.dequeue( this, type );
+			}
+		});
+	},
+	dequeue: function( type ) {
+		return this.each(function() {
+			jQuery.dequeue( this, type );
+		});
+	},
+	// Based off of the plugin by Clint Helfers, with permission.
+	// http://blindsignals.com/index.php/2009/07/jquery-delay/
+	delay: function( time, type ) {
+		time = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time;
+		type = type || "fx";
+
+		return this.queue( type, function( next, hooks ) {
+			var timeout = setTimeout( next, time );
+			hooks.stop = function() {
+				clearTimeout( timeout );
+			};
+		});
+	},
+	clearQueue: function( type ) {
+		return this.queue( type || "fx", [] );
+	},
+	// Get a promise resolved when queues of a certain type
+	// are emptied (fx is the type by default)
+	promise: function( type, object ) {
+		if ( typeof type !== "string" ) {
+			object = type;
+			type = undefined;
+		}
+		type = type || "fx";
+		var defer = jQuery.Deferred(),
+			elements = this,
+			i = elements.length,
+			count = 1,
+			deferDataKey = type + "defer",
+			queueDataKey = type + "queue",
+			markDataKey = type + "mark",
+			tmp;
+		function resolve() {
+			if ( !( --count ) ) {
+				defer.resolveWith( elements, [ elements ] );
+			}
+		}
+		while( i-- ) {
+			if (( tmp = jQuery.data( elements[ i ], deferDataKey, undefined, true ) ||
+					( jQuery.data( elements[ i ], queueDataKey, undefined, true ) ||
+						jQuery.data( elements[ i ], markDataKey, undefined, true ) ) &&
+					jQuery.data( elements[ i ], deferDataKey, jQuery.Callbacks( "once memory" ), true ) )) {
+				count++;
+				tmp.add( resolve );
+			}
+		}
+		resolve();
+		return defer.promise();
+	}
+});
+
+
+
+
+var rclass = /[\n\t\r]/g,
+	rspace = /\s+/,
+	rreturn = /\r/g,
+	rtype = /^(?:button|input)$/i,
+	rfocusable = /^(?:button|input|object|select|textarea)$/i,
+	rclickable = /^a(?:rea)?$/i,
+	rboolean = /^(?:autofocus|autoplay|async|checked|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped|selected)$/i,
+	getSetAttribute = jQuery.support.getSetAttribute,
+	nodeHook, boolHook, fixSpecified;
+
+jQuery.fn.extend({
+	attr: function( name, value ) {
+		return jQuery.access( this, name, value, true, jQuery.attr );
+	},
+
+	removeAttr: function( name ) {
+		return this.each(function() {
+			jQuery.removeAttr( this, name );
+		});
+	},
+
+	prop: function( name, value ) {
+		return jQuery.access( this, name, value, true, jQuery.prop );
+	},
+
+	removeProp: function( name ) {
+		name = jQuery.propFix[ name ] || name;
+		return this.each(function() {
+			// try/catch handles cases where IE balks (such as removing a property on window)
+			try {
+				this[ name ] = undefined;
+				delete this[ name ];
+			} catch( e ) {}
+		});
+	},
+
+	addClass: function( value ) {
+		var classNames, i, l, elem,
+			setClass, c, cl;
+
+		if ( jQuery.isFunction( value ) ) {
+			return this.each(function( j ) {
+				jQuery( this ).addClass( value.call(this, j, this.className) );
+			});
+		}
+
+		if ( value && typeof value === "string" ) {
+			classNames = value.split( rspace );
+
+			for ( i = 0, l = this.length; i < l; i++ ) {
+				elem = this[ i ];
+
+				if ( elem.nodeType === 1 ) {
+					if ( !elem.className && classNames.length === 1 ) {
+						elem.className = value;
+
+					} else {
+						setClass = " " + elem.className + " ";
+
+						for ( c = 0, cl = classNames.length; c < cl; c++ ) {
+							if ( !~setClass.indexOf( " " + classNames[ c ] + " " ) ) {
+								setClass += classNames[ c ] + " ";
+							}
+						}
+						elem.className = jQuery.trim( setClass );
+					}
+				}
+			}
+		}
+
+		return this;
+	},
+
+	removeClass: function( value ) {
+		var classNames, i, l, elem, className, c, cl;
+
+		if ( jQuery.isFunction( value ) ) {
+			return this.each(function( j ) {
+				jQuery( this ).removeClass( value.call(this, j, this.className) );
+			});
+		}
+
+		if ( (value && typeof value === "string") || value === undefined ) {
+			classNames = ( value || "" ).split( rspace );
+
+			for ( i = 0, l = this.length; i < l; i++ ) {
+				elem = this[ i ];
+
+				if ( elem.nodeType === 1 && elem.className ) {
+					if ( value ) {
+						className = (" " + elem.className + " ").replace( rclass, " " );
+						for ( c = 0, cl = classNames.length; c < cl; c++ ) {
+							className = className.replace(" " + classNames[ c ] + " ", " ");
+						}
+						elem.className = jQuery.trim( className );
+
+					} else {
+						elem.className = "";
+					}
+				}
+			}
+		}
+
+		return this;
+	},
+
+	toggleClass: function( value, stateVal ) {
+		var type = typeof value,
+			isBool = typeof stateVal === "boolean";
+
+		if ( jQuery.isFunction( value ) ) {
+			return this.each(function( i ) {
+				jQuery( this ).toggleClass( value.call(this, i, this.className, stateVal), stateVal );
+			});
+		}
+
+		return this.each(function() {
+			if ( type === "string" ) {
+				// toggle individual class names
+				var className,
+					i = 0,
+					self = jQuery( this ),
+					state = stateVal,
+					classNames = value.split( rspace );
+
+				while ( (className = classNames[ i++ ]) ) {
+					// check each className given, space seperated list
+					state = isBool ? state : !self.hasClass( className );
+					self[ state ? "addClass" : "removeClass" ]( className );
+				}
+
+			} else if ( type === "undefined" || type === "boolean" ) {
+				if ( this.className ) {
+					// store className if set
+					jQuery._data( this, "__className__", this.className );
+				}
+
+				// toggle whole className
+				this.className = this.className || value === false ? "" : jQuery._data( this, "__className__" ) || "";
+			}
+		});
+	},
+
+	hasClass: function( selector ) {
+		var className = " " + selector + " ",
+			i = 0,
+			l = this.length;
+		for ( ; i < l; i++ ) {
+			if ( this[i].nodeType === 1 && (" " + this[i].className + " ").replace(rclass, " ").indexOf( className ) > -1 ) {
+				return true;
+			}
+		}
+
+		return false;
+	},
+
+	val: function( value ) {
+		var hooks, ret, isFunction,
+			elem = this[0];
+
+		if ( !arguments.length ) {
+			if ( elem ) {
+				hooks = jQuery.valHooks[ elem.nodeName.toLowerCase() ] || jQuery.valHooks[ elem.type ];
+
+				if ( hooks && "get" in hooks && (ret = hooks.get( elem, "value" )) !== undefined ) {
+					return ret;
+				}
+
+				ret = elem.value;
+
+				return typeof ret === "string" ?
+					// handle most common string cases
+					ret.replace(rreturn, "") :
+					// handle cases where value is null/undef or number
+					ret == null ? "" : ret;
+			}
+
+			return;
+		}
+
+		isFunction = jQuery.isFunction( value );
+
+		return this.each(function( i ) {
+			var self = jQuery(this), val;
+
+			if ( this.nodeType !== 1 ) {
+				return;
+			}
+
+			if ( isFunction ) {
+				val = value.call( this, i, self.val() );
+			} else {
+				val = value;
+			}
+
+			// Treat null/undefined as ""; convert numbers to string
+			if ( val == null ) {
+				val = "";
+			} else if ( typeof val === "number" ) {
+				val += "";
+			} else if ( jQuery.isArray( val ) ) {
+				val = jQuery.map(val, function ( value ) {
+					return value == null ? "" : value + "";
+				});
+			}
+
+			hooks = jQuery.valHooks[ this.nodeName.toLowerCase() ] || jQuery.valHooks[ this.type ];
+
+			// If set returns undefined, fall back to normal setting
+			if ( !hooks || !("set" in hooks) || hooks.set( this, val, "value" ) === undefined ) {
+				this.value = val;
+			}
+		});
+	}
+});
+
+jQuery.extend({
+	valHooks: {
+		option: {
+			get: function( elem ) {
+				// attributes.value is undefined in Blackberry 4.7 but
+				// uses .value. See #6932
+				var val = elem.attributes.value;
+				return !val || val.specified ? elem.value : elem.text;
+			}
+		},
+		select: {
+			get: function( elem ) {
+				var value, i, max, option,
+					index = elem.selectedIndex,
+					values = [],
+					options = elem.options,
+					one = elem.type === "select-one";
+
+				// Nothing was selected
+				if ( index < 0 ) {
+					return null;
+				}
+
+				// Loop through all the selected options
+				i = one ? index : 0;
+				max = one ? index + 1 : options.length;
+				for ( ; i < max; i++ ) {
+					option = options[ i ];
+
+					// Don't return options that are disabled or in a disabled optgroup
+					if ( option.selected && (jQuery.support.optDisabled ? !option.disabled : option.getAttribute("disabled") === null) &&
+							(!option.parentNode.disabled || !jQuery.nodeName( option.parentNode, "optgroup" )) ) {
+
+						// Get the specific value for the option
+						value = jQuery( option ).val();
+
+						// We don't need an array for one selects
+						if ( one ) {
+							return value;
+						}
+
+						// Multi-Selects return an array
+						values.push( value );
+					}
+				}
+
+				// Fixes Bug #2551 -- select.val() broken in IE after form.reset()
+				if ( one && !values.length && options.length ) {
+					return jQuery( options[ index ] ).val();
+				}
+
+				return values;
+			},
+
+			set: function( elem, value ) {
+				var values = jQuery.makeArray( value );
+
+				jQuery(elem).find("option").each(function() {
+					this.selected = jQuery.inArray( jQuery(this).val(), values ) >= 0;
+				});
+
+				if ( !values.length ) {
+					elem.selectedIndex = -1;
+				}
+				return values;
+			}
+		}
+	},
+
+	attrFn: {
+		val: true,
+		css: true,
+		html: true,
+		text: true,
+		data: true,
+		width: true,
+		height: true,
+		offset: true
+	},
+
+	attr: function( elem, name, value, pass ) {
+		var ret, hooks, notxml,
+			nType = elem.nodeType;
+
+		// don't get/set attributes on text, comment and attribute nodes
+		if ( !elem || nType === 3 || nType === 8 || nType === 2 ) {
+			return;
+		}
+
+		if ( pass && name in jQuery.attrFn ) {
+			return jQuery( elem )[ name ]( value );
+		}
+
+		// Fallback to prop when attributes are not supported
+		if ( typeof elem.getAttribute === "undefined" ) {
+			return jQuery.prop( elem, name, value );
+		}
+
+		notxml = nType !== 1 || !jQuery.isXMLDoc( elem );
+
+		// All attributes are lowercase
+		// Grab necessary hook if one is defined
+		if ( notxml ) {
+			name = name.toLowerCase();
+			hooks = jQuery.attrHooks[ name ] || ( rboolean.test( name ) ? boolHook : nodeHook );
+		}
+
+		if ( value !== undefined ) {
+
+			if ( value === null ) {
+				jQuery.removeAttr( elem, name );
+				return;
+
+			} else if ( hooks && "set" in hooks && notxml && (ret = hooks.set( elem, value, name )) !== undefined ) {
+				return ret;
+
+			} else {
+				elem.setAttribute( name, "" + value );
+				return value;
+			}
+
+		} else if ( hooks && "get" in hooks && notxml && (ret = hooks.get( elem, name )) !== null ) {
+			return ret;
+
+		} else {
+
+			ret = elem.getAttribute( name );
+
+			// Non-existent attributes return null, we normalize to undefined
+			return ret === null ?
+				undefined :
+				ret;
+		}
+	},
+
+	removeAttr: function( elem, value ) {
+		var propName, attrNames, name, l,
+			i = 0;
+
+		if ( value && elem.nodeType === 1 ) {
+			attrNames = value.toLowerCase().split( rspace );
+			l = attrNames.length;
+
+			for ( ; i < l; i++ ) {
+				name = attrNames[ i ];
+
+				if ( name ) {
+					propName = jQuery.propFix[ name ] || name;
+
+					// See #9699 for explanation of this approach (setting first, then removal)
+					jQuery.attr( elem, name, "" );
+					elem.removeAttribute( getSetAttribute ? name : propName );
+
+					// Set corresponding property to false for boolean attributes
+					if ( rboolean.test( name ) && propName in elem ) {
+						elem[ propName ] = false;
+					}
+				}
+			}
+		}
+	},
+
+	attrHooks: {
+		type: {
+			set: function( elem, value ) {
+				// We can't allow the type property to be changed (since it causes problems in IE)
+				if ( rtype.test( elem.nodeName ) && elem.parentNode ) {
+					jQuery.error( "type property can't be changed" );
+				} else if ( !jQuery.support.radioValue && value === "radio" && jQuery.nodeName(elem, "input") ) {
+					// Setting the type on a radio button after the value resets the value in IE6-9
+					// Reset value to it's default in case type is set after value
+					// This is for element creation
+					var val = elem.value;
+					elem.setAttribute( "type", value );
+					if ( val ) {
+						elem.value = val;
+					}
+					return value;
+				}
+			}
+		},
+		// Use the value property for back compat
+		// Use the nodeHook for button elements in IE6/7 (#1954)
+		value: {
+			get: function( elem, name ) {
+				if ( nodeHook && jQuery.nodeName( elem, "button" ) ) {
+					return nodeHook.get( elem, name );
+				}
+				return name in elem ?
+					elem.value :
+					null;
+			},
+			set: function( elem, value, name ) {
+				if ( nodeHook && jQuery.nodeName( elem, "button" ) ) {
+					return nodeHook.set( elem, value, name );
+				}
+				// Does not return so that setAttribute is also used
+				elem.value = value;
+			}
+		}
+	},
+
+	propFix: {
+		tabindex: "tabIndex",
+		readonly: "readOnly",
+		"for": "htmlFor",
+		"class": "className",
+		maxlength: "maxLength",
+		cellspacing: "cellSpacing",
+		cellpadding: "cellPadding",
+		rowspan: "rowSpan",
+		colspan: "colSpan",
+		usemap: "useMap",
+		frameborder: "frameBorder",
+		contenteditable: "contentEditable"
+	},
+
+	prop: function( elem, name, value ) {
+		var ret, hooks, notxml,
+			nType = elem.nodeType;
+
+		// don't get/set properties on text, comment and attribute nodes
+		if ( !elem || nType === 3 || nType === 8 || nType === 2 ) {
+			return;
+		}
+
+		notxml = nType !== 1 || !jQuery.isXMLDoc( elem );
+
+		if ( notxml ) {
+			// Fix name and attach hooks
+			name = jQuery.propFix[ name ] || name;
+			hooks = jQuery.propHooks[ name ];
+		}
+
+		if ( value !== undefined ) {
+			if ( hooks && "set" in hooks && (ret = hooks.set( elem, value, name )) !== undefined ) {
+				return ret;
+
+			} else {
+				return ( elem[ name ] = value );
+			}
+
+		} else {
+			if ( hooks && "get" in hooks && (ret = hooks.get( elem, name )) !== null ) {
+				return ret;
+
+			} else {
+				return elem[ name ];
+			}
+		}
+	},
+
+	propHooks: {
+		tabIndex: {
+			get: function( elem ) {
+				// elem.tabIndex doesn't always return the correct value when it hasn't been explicitly set
+				// http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/
+				var attributeNode = elem.getAttributeNode("tabindex");
+
+				return attributeNode && attributeNode.specified ?
+					parseInt( attributeNode.value, 10 ) :
+					rfocusable.test( elem.nodeName ) || rclickable.test( elem.nodeName ) && elem.href ?
+						0 :
+						undefined;
+			}
+		}
+	}
+});
+
+// Add the tabIndex propHook to attrHooks for back-compat (different case is intentional)
+jQuery.attrHooks.tabindex = jQuery.propHooks.tabIndex;
+
+// Hook for boolean attributes
+boolHook = {
+	get: function( elem, name ) {
+		// Align boolean attributes with corresponding properties
+		// Fall back to attribute presence where some booleans are not supported
+		var attrNode,
+			property = jQuery.prop( elem, name );
+		return property === true || typeof property !== "boolean" && ( attrNode = elem.getAttributeNode(name) ) && attrNode.nodeValue !== false ?
+			name.toLowerCase() :
+			undefined;
+	},
+	set: function( elem, value, name ) {
+		var propName;
+		if ( value === false ) {
+			// Remove boolean attributes when set to false
+			jQuery.removeAttr( elem, name );
+		} else {
+			// value is true since we know at this point it's type boolean and not false
+			// Set boolean attributes to the same name and set the DOM property
+			propName = jQuery.propFix[ name ] || name;
+			if ( propName in elem ) {
+				// Only set the IDL specifically if it already exists on the element
+				elem[ propName ] = true;
+			}
+
+			elem.setAttribute( name, name.toLowerCase() );
+		}
+		return name;
+	}
+};
+
+// IE6/7 do not support getting/setting some attributes with get/setAttribute
+if ( !getSetAttribute ) {
+
+	fixSpecified = {
+		name: true,
+		id: true
+	};
+
+	// Use this for any attribute in IE6/7
+	// This fixes almost every IE6/7 issue
+	nodeHook = jQuery.valHooks.button = {
+		get: function( elem, name ) {
+			var ret;
+			ret = elem.getAttributeNode( name );
+			return ret && ( fixSpecified[ name ] ? ret.nodeValue !== "" : ret.specified ) ?
+				ret.nodeValue :
+				undefined;
+		},
+		set: function( elem, value, name ) {
+			// Set the existing or create a new attribute node
+			var ret = elem.getAttributeNode( name );
+			if ( !ret ) {
+				ret = document.createAttribute( name );
+				elem.setAttributeNode( ret );
+			}
+			return ( ret.nodeValue = value + "" );
+		}
+	};
+
+	// Apply the nodeHook to tabindex
+	jQuery.attrHooks.tabindex.set = nodeHook.set;
+
+	// Set width and height to auto instead of 0 on empty string( Bug #8150 )
+	// This is for removals
+	jQuery.each([ "width", "height" ], function( i, name ) {
+		jQuery.attrHooks[ name ] = jQuery.extend( jQuery.attrHooks[ name ], {
+			set: function( elem, value ) {
+				if ( value === "" ) {
+					elem.setAttribute( name, "auto" );
+					return value;
+				}
+			}
+		});
+	});
+
+	// Set contenteditable to false on removals(#10429)
+	// Setting to empty string throws an error as an invalid value
+	jQuery.attrHooks.contenteditable = {
+		get: nodeHook.get,
+		set: function( elem, value, name ) {
+			if ( value === "" ) {
+				value = "false";
+			}
+			nodeHook.set( elem, value, name );
+		}
+	};
+}
+
+
+// Some attributes require a special call on IE
+if ( !jQuery.support.hrefNormalized ) {
+	jQuery.each([ "href", "src", "width", "height" ], function( i, name ) {
+		jQuery.attrHooks[ name ] = jQuery.extend( jQuery.attrHooks[ name ], {
+			get: function( elem ) {
+				var ret = elem.getAttribute( name, 2 );
+				return ret === null ? undefined : ret;
+			}
+		});
+	});
+}
+
+if ( !jQuery.support.style ) {
+	jQuery.attrHooks.style = {
+		get: function( elem ) {
+			// Return undefined in the case of empty string
+			// Normalize to lowercase since IE uppercases css property names
+			return elem.style.cssText.toLowerCase() || undefined;
+		},
+		set: function( elem, value ) {
+			return ( elem.style.cssText = "" + value );
+		}
+	};
+}
+
+// Safari mis-reports the default selected property of an option
+// Accessing the parent's selectedIndex property fixes it
+if ( !jQuery.support.optSelected ) {
+	jQuery.propHooks.selected = jQuery.extend( jQuery.propHooks.selected, {
+		get: function( elem ) {
+			var parent = elem.parentNode;
+
+			if ( parent ) {
+				parent.selectedIndex;
+
+				// Make sure that it also works with optgroups, see #5701
+				if ( parent.parentNode ) {
+					parent.parentNode.selectedIndex;
+				}
+			}
+			return null;
+		}
+	});
+}
+
+// IE6/7 call enctype encoding
+if ( !jQuery.support.enctype ) {
+	jQuery.propFix.enctype = "encoding";
+}
+
+// Radios and checkboxes getter/setter
+if ( !jQuery.support.checkOn ) {
+	jQuery.each([ "radio", "checkbox" ], function() {
+		jQuery.valHooks[ this ] = {
+			get: function( elem ) {
+				// Handle the case where in Webkit "" is returned instead of "on" if a value isn't specified
+				return elem.getAttribute("value") === null ? "on" : elem.value;
+			}
+		};
+	});
+}
+jQuery.each([ "radio", "checkbox" ], function() {
+	jQuery.valHooks[ this ] = jQuery.extend( jQuery.valHooks[ this ], {
+		set: function( elem, value ) {
+			if ( jQuery.isArray( value ) ) {
+				return ( elem.checked = jQuery.inArray( jQuery(elem).val(), value ) >= 0 );
+			}
+		}
+	});
+});
+
+
+
+
+var rformElems = /^(?:textarea|input|select)$/i,
+	rtypenamespace = /^([^\.]*)?(?:\.(.+))?$/,
+	rhoverHack = /\bhover(\.\S+)?\b/,
+	rkeyEvent = /^key/,
+	rmouseEvent = /^(?:mouse|contextmenu)|click/,
+	rfocusMorph = /^(?:focusinfocus|focusoutblur)$/,
+	rquickIs = /^(\w*)(?:#([\w\-]+))?(?:\.([\w\-]+))?$/,
+	quickParse = function( selector ) {
+		var quick = rquickIs.exec( selector );
+		if ( quick ) {
+			//   0  1    2   3
+			// [ _, tag, id, class ]
+			quick[1] = ( quick[1] || "" ).toLowerCase();
+			quick[3] = quick[3] && new RegExp( "(?:^|\\s)" + quick[3] + "(?:\\s|$)" );
+		}
+		return quick;
+	},
+	quickIs = function( elem, m ) {
+		var attrs = elem.attributes || {};
+		return (
+			(!m[1] || elem.nodeName.toLowerCase() === m[1]) &&
+			(!m[2] || (attrs.id || {}).value === m[2]) &&
+			(!m[3] || m[3].test( (attrs[ "class" ] || {}).value ))
+		);
+	},
+	hoverHack = function( events ) {
+		return jQuery.event.special.hover ? events : events.replace( rhoverHack, "mouseenter$1 mouseleave$1" );
+	};
+
+/*
+ * Helper functions for managing events -- not part of the public interface.
+ * Props to Dean Edwards' addEvent library for many of the ideas.
+ */
+jQuery.event = {
+
+	add: function( elem, types, handler, data, selector ) {
+
+		var elemData, eventHandle, events,
+			t, tns, type, namespaces, handleObj,
+			handleObjIn, quick, handlers, special;
+
+		// Don't attach events to noData or text/comment nodes (allow plain objects tho)
+		if ( elem.nodeType === 3 || elem.nodeType === 8 || !types || !handler || !(elemData = jQuery._data( elem )) ) {
+			return;
+		}
+
+		// Caller can pass in an object of custom data in lieu of the handler
+		if ( handler.handler ) {
+			handleObjIn = handler;
+			handler = handleObjIn.handler;
+		}
+
+		// Make sure that the handler has a unique ID, used to find/remove it later
+		if ( !handler.guid ) {
+			handler.guid = jQuery.guid++;
+		}
+
+		// Init the element's event structure and main handler, if this is the first
+		events = elemData.events;
+		if ( !events ) {
+			elemData.events = events = {};
+		}
+		eventHandle = elemData.handle;
+		if ( !eventHandle ) {
+			elemData.handle = eventHandle = function( e ) {
+				// Discard the second event of a jQuery.event.trigger() and
+				// when an event is called after a page has unloaded
+				return typeof jQuery !== "undefined" && (!e || jQuery.event.triggered !== e.type) ?
+					jQuery.event.dispatch.apply( eventHandle.elem, arguments ) :
+					undefined;
+			};
+			// Add elem as a property of the handle fn to prevent a memory leak with IE non-native events
+			eventHandle.elem = elem;
+		}
+
+		// Handle multiple events separated by a space
+		// jQuery(...).bind("mouseover mouseout", fn);
+		types = jQuery.trim( hoverHack(types) ).split( " " );
+		for ( t = 0; t < types.length; t++ ) {
+
+			tns = rtypenamespace.exec( types[t] ) || [];
+			type = tns[1];
+			namespaces = ( tns[2] || "" ).split( "." ).sort();
+
+			// If event changes its type, use the special event handlers for the changed type
+			special = jQuery.event.special[ type ] || {};
+
+			// If selector defined, determine special event api type, otherwise given type
+			type = ( selector ? special.delegateType : special.bindType ) || type;
+
+			// Update special based on newly reset type
+			special = jQuery.event.special[ type ] || {};
+
+			// handleObj is passed to all event handlers
+			handleObj = jQuery.extend({
+				type: type,
+				origType: tns[1],
+				data: data,
+				handler: handler,
+				guid: handler.guid,
+				selector: selector,
+				quick: quickParse( selector ),
+				namespace: namespaces.join(".")
+			}, handleObjIn );
+
+			// Init the event handler queue if we're the first
+			handlers = events[ type ];
+			if ( !handlers ) {
+				handlers = events[ type ] = [];
+				handlers.delegateCount = 0;
+
+				// Only use addEventListener/attachEvent if the special events handler returns false
+				if ( !special.setup || special.setup.call( elem, data, namespaces, eventHandle ) === false ) {
+					// Bind the global event handler to the element
+					if ( elem.addEventListener ) {
+						elem.addEventListener( type, eventHandle, false );
+
+					} else if ( elem.attachEvent ) {
+						elem.attachEvent( "on" + type, eventHandle );
+					}
+				}
+			}
+
+			if ( special.add ) {
+				special.add.call( elem, handleObj );
+
+				if ( !handleObj.handler.guid ) {
+					handleObj.handler.guid = handler.guid;
+				}
+			}
+
+			// Add to the element's handler list, delegates in front
+			if ( selector ) {
+				handlers.splice( handlers.delegateCount++, 0, handleObj );
+			} else {
+				handlers.push( handleObj );
+			}
+
+			// Keep track of which events have ever been used, for event optimization
+			jQuery.event.global[ type ] = true;
+		}
+
+		// Nullify elem to prevent memory leaks in IE
+		elem = null;
+	},
+
+	global: {},
+
+	// Detach an event or set of events from an element
+	remove: function( elem, types, handler, selector, mappedTypes ) {
+
+		var elemData = jQuery.hasData( elem ) && jQuery._data( elem ),
+			t, tns, type, origType, namespaces, origCount,
+			j, events, special, handle, eventType, handleObj;
+
+		if ( !elemData || !(events = elemData.events) ) {
+			return;
+		}
+
+		// Once for each type.namespace in types; type may be omitted
+		types = jQuery.trim( hoverHack( types || "" ) ).split(" ");
+		for ( t = 0; t < types.length; t++ ) {
+			tns = rtypenamespace.exec( types[t] ) || [];
+			type = origType = tns[1];
+			namespaces = tns[2];
+
+			// Unbind all events (on this namespace, if provided) for the element
+			if ( !type ) {
+				for ( type in events ) {
+					jQuery.event.remove( elem, type + types[ t ], handler, selector, true );
+				}
+				continue;
+			}
+
+			special = jQuery.event.special[ type ] || {};
+			type = ( selector? special.delegateType : special.bindType ) || type;
+			eventType = events[ type ] || [];
+			origCount = eventType.length;
+			namespaces = namespaces ? new RegExp("(^|\\.)" + namespaces.split(".").sort().join("\\.(?:.*\\.)?") + "(\\.|$)") : null;
+
+			// Remove matching events
+			for ( j = 0; j < eventType.length; j++ ) {
+				handleObj = eventType[ j ];
+
+				if ( ( mappedTypes || origType === handleObj.origType ) &&
+					 ( !handler || handler.guid === handleObj.guid ) &&
+					 ( !namespaces || namespaces.test( handleObj.namespace ) ) &&
+					 ( !selector || selector === handleObj.selector || selector === "**" && handleObj.selector ) ) {
+					eventType.splice( j--, 1 );
+
+					if ( handleObj.selector ) {
+						eventType.delegateCount--;
+					}
+					if ( special.remove ) {
+						special.remove.call( elem, handleObj );
+					}
+				}
+			}
+
+			// Remove generic event handler if we removed something and no more handlers exist
+			// (avoids potential for endless recursion during removal of special event handlers)
+			if ( eventType.length === 0 && origCount !== eventType.length ) {
+				if ( !special.teardown || special.teardown.call( elem, namespaces ) === false ) {
+					jQuery.removeEvent( elem, type, elemData.handle );
+				}
+
+				delete events[ type ];
+			}
+		}
+
+		// Remove the expando if it's no longer used
+		if ( jQuery.isEmptyObject( events ) ) {
+			handle = elemData.handle;
+			if ( handle ) {
+				handle.elem = null;
+			}
+
+			// removeData also checks for emptiness and clears the expando if empty
+			// so use it instead of delete
+			jQuery.removeData( elem, [ "events", "handle" ], true );
+		}
+	},
+
+	// Events that are safe to short-circuit if no handlers are attached.
+	// Native DOM events should not be added, they may have inline handlers.
+	customEvent: {
+		"getData": true,
+		"setData": true,
+		"changeData": true
+	},
+
+	trigger: function( event, data, elem, onlyHandlers ) {
+		// Don't do events on text and comment nodes
+		if ( elem && (elem.nodeType === 3 || elem.nodeType === 8) ) {
+			return;
+		}
+
+		// Event object or event type
+		var type = event.type || event,
+			namespaces = [],
+			cache, exclusive, i, cur, old, ontype, special, handle, eventPath, bubbleType;
+
+		// focus/blur morphs to focusin/out; ensure we're not firing them right now
+		if ( rfocusMorph.test( type + jQuery.event.triggered ) ) {
+			return;
+		}
+
+		if ( type.indexOf( "!" ) >= 0 ) {
+			// Exclusive events trigger only for the exact event (no namespaces)
+			type = type.slice(0, -1);
+			exclusive = true;
+		}
+
+		if ( type.indexOf( "." ) >= 0 ) {
+			// Namespaced trigger; create a regexp to match event type in handle()
+			namespaces = type.split(".");
+			type = namespaces.shift();
+			namespaces.sort();
+		}
+
+		if ( (!elem || jQuery.event.customEvent[ type ]) && !jQuery.event.global[ type ] ) {
+			// No jQuery handlers for this event type, and it can't have inline handlers
+			return;
+		}
+
+		// Caller can pass in an Event, Object, or just an event type string
+		event = typeof event === "object" ?
+			// jQuery.Event object
+			event[ jQuery.expando ] ? event :
+			// Object literal
+			new jQuery.Event( type, event ) :
+			// Just the event type (string)
+			new jQuery.Event( type );
+
+		event.type = type;
+		event.isTrigger = true;
+		event.exclusive = exclusive;
+		event.namespace = namespaces.join( "." );
+		event.namespace_re = event.namespace? new RegExp("(^|\\.)" + namespaces.join("\\.(?:.*\\.)?") + "(\\.|$)") : null;
+		ontype = type.indexOf( ":" ) < 0 ? "on" + type : "";
+
+		// Handle a global trigger
+		if ( !elem ) {
+
+			// TODO: Stop taunting the data cache; remove global events and always attach to document
+			cache = jQuery.cache;
+			for ( i in cache ) {
+				if ( cache[ i ].events && cache[ i ].events[ type ] ) {
+					jQuery.event.trigger( event, data, cache[ i ].handle.elem, true );
+				}
+			}
+			return;
+		}
+
+		// Clean up the event in case it is being reused
+		event.result = undefined;
+		if ( !event.target ) {
+			event.target = elem;
+		}
+
+		// Clone any incoming data and prepend the event, creating the handler arg list
+		data = data != null ? jQuery.makeArray( data ) : [];
+		data.unshift( event );
+
+		// Allow special events to draw outside the lines
+		special = jQuery.event.special[ type ] || {};
+		if ( special.trigger && special.trigger.apply( elem, data ) === false ) {
+			return;
+		}
+
+		// Determine event propagation path in advance, per W3C events spec (#9951)
+		// Bubble up to document, then to window; watch for a global ownerDocument var (#9724)
+		eventPath = [[ elem, special.bindType || type ]];
+		if ( !onlyHandlers && !special.noBubble && !jQuery.isWindow( elem ) ) {
+
+			bubbleType = special.delegateType || type;
+			cur = rfocusMorph.test( bubbleType + type ) ? elem : elem.parentNode;
+			old = null;
+			for ( ; cur; cur = cur.parentNode ) {
+				eventPath.push([ cur, bubbleType ]);
+				old = cur;
+			}
+
+			// Only add window if we got to document (e.g., not plain obj or detached DOM)
+			if ( old && old === elem.ownerDocument ) {
+				eventPath.push([ old.defaultView || old.parentWindow || window, bubbleType ]);
+			}
+		}
+
+		// Fire handlers on the event path
+		for ( i = 0; i < eventPath.length && !event.isPropagationStopped(); i++ ) {
+
+			cur = eventPath[i][0];
+			event.type = eventPath[i][1];
+
+			handle = ( jQuery._data( cur, "events" ) || {} )[ event.type ] && jQuery._data( cur, "handle" );
+			if ( handle ) {
+				handle.apply( cur, data );
+			}
+			// Note that this is a bare JS function and not a jQuery handler
+			handle = ontype && cur[ ontype ];
+			if ( handle && jQuery.acceptData( cur ) && handle.apply( cur, data ) === false ) {
+				event.preventDefault();
+			}
+		}
+		event.type = type;
+
+		// If nobody prevented the default action, do it now
+		if ( !onlyHandlers && !event.isDefaultPrevented() ) {
+
+			if ( (!special._default || special._default.apply( elem.ownerDocument, data ) === false) &&
+				!(type === "click" && jQuery.nodeName( elem, "a" )) && jQuery.acceptData( elem ) ) {
+
+				// Call a native DOM method on the target with the same name name as the event.
+				// Can't use an .isFunction() check here because IE6/7 fails that test.
+				// Don't do default actions on window, that's where global variables be (#6170)
+				// IE<9 dies on focus/blur to hidden element (#1486)
+				if ( ontype && elem[ type ] && ((type !== "focus" && type !== "blur") || event.target.offsetWidth !== 0) && !jQuery.isWindow( elem ) ) {
+
+					// Don't re-trigger an onFOO event when we call its FOO() method
+					old = elem[ ontype ];
+
+					if ( old ) {
+						elem[ ontype ] = null;
+					}
+
+					// Prevent re-triggering of the same event, since we already bubbled it above
+					jQuery.event.triggered = type;
+					elem[ type ]();
+					jQuery.event.triggered = undefined;
+
+					if ( old ) {
+						elem[ ontype ] = old;
+					}
+				}
+			}
+		}
+
+		return event.result;
+	},
+
+	dispatch: function( event ) {
+
+		// Make a writable jQuery.Event from the native event object
+		event = jQuery.event.fix( event || window.event );
+
+		var handlers = ( (jQuery._data( this, "events" ) || {} )[ event.type ] || []),
+			delegateCount = handlers.delegateCount,
+			args = [].slice.call( arguments, 0 ),
+			run_all = !event.exclusive && !event.namespace,
+			handlerQueue = [],
+			i, j, cur, jqcur, ret, selMatch, matched, matches, handleObj, sel, related;
+
+		// Use the fix-ed jQuery.Event rather than the (read-only) native event
+		args[0] = event;
+		event.delegateTarget = this;
+
+		// Determine handlers that should run if there are delegated events
+		// Avoid disabled elements in IE (#6911) and non-left-click bubbling in Firefox (#3861)
+		if ( delegateCount && !event.target.disabled && !(event.button && event.type === "click") ) {
+
+			// Pregenerate a single jQuery object for reuse with .is()
+			jqcur = jQuery(this);
+			jqcur.context = this.ownerDocument || this;
+
+			for ( cur = event.target; cur != this; cur = cur.parentNode || this ) {
+				selMatch = {};
+				matches = [];
+				jqcur[0] = cur;
+				for ( i = 0; i < delegateCount; i++ ) {
+					handleObj = handlers[ i ];
+					sel = handleObj.selector;
+
+					if ( selMatch[ sel ] === undefined ) {
+						selMatch[ sel ] = (
+							handleObj.quick ? quickIs( cur, handleObj.quick ) : jqcur.is( sel )
+						);
+					}
+					if ( selMatch[ sel ] ) {
+						matches.push( handleObj );
+					}
+				}
+				if ( matches.length ) {
+					handlerQueue.push({ elem: cur, matches: matches });
+				}
+			}
+		}
+
+		// Add the remaining (directly-bound) handlers
+		if ( handlers.length > delegateCount ) {
+			handlerQueue.push({ elem: this, matches: handlers.slice( delegateCount ) });
+		}
+
+		// Run delegates first; they may want to stop propagation beneath us
+		for ( i = 0; i < handlerQueue.length && !event.isPropagationStopped(); i++ ) {
+			matched = handlerQueue[ i ];
+			event.currentTarget = matched.elem;
+
+			for ( j = 0; j < matched.matches.length && !event.isImmediatePropagationStopped(); j++ ) {
+				handleObj = matched.matches[ j ];
+
+				// Triggered event must either 1) be non-exclusive and have no namespace, or
+				// 2) have namespace(s) a subset or equal to those in the bound event (both can have no namespace).
+				if ( run_all || (!event.namespace && !handleObj.namespace) || event.namespace_re && event.namespace_re.test( handleObj.namespace ) ) {
+
+					event.data = handleObj.data;
+					event.handleObj = handleObj;
+
+					ret = ( (jQuery.event.special[ handleObj.origType ] || {}).handle || handleObj.handler )
+							.apply( matched.elem, args );
+
+					if ( ret !== undefined ) {
+						event.result = ret;
+						if ( ret === false ) {
+							event.preventDefault();
+							event.stopPropagation();
+						}
+					}
+				}
+			}
+		}
+
+		return event.result;
+	},
+
+	// Includes some event props shared by KeyEvent and MouseEvent
+	// *** attrChange attrName relatedNode srcElement  are not normalized, non-W3C, deprecated, will be removed in 1.8 ***
+	props: "attrChange attrName relatedNode srcElement altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),
+
+	fixHooks: {},
+
+	keyHooks: {
+		props: "char charCode key keyCode".split(" "),
+		filter: function( event, original ) {
+
+			// Add which for key events
+			if ( event.which == null ) {
+				event.which = original.charCode != null ? original.charCode : original.keyCode;
+			}
+
+			return event;
+		}
+	},
+
+	mouseHooks: {
+		props: "button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),
+		filter: function( event, original ) {
+			var eventDoc, doc, body,
+				button = original.button,
+				fromElement = original.fromElement;
+
+			// Calculate pageX/Y if missing and clientX/Y available
+			if ( event.pageX == null && original.clientX != null ) {
+				eventDoc = event.target.ownerDocument || document;
+				doc = eventDoc.documentElement;
+				body = eventDoc.body;
+
+				event.pageX = original.clientX + ( doc && doc.scrollLeft || body && body.scrollLeft || 0 ) - ( doc && doc.clientLeft || body && body.clientLeft || 0 );
+				event.pageY = original.clientY + ( doc && doc.scrollTop  || body && body.scrollTop  || 0 ) - ( doc && doc.clientTop  || body && body.clientTop  || 0 );
+			}
+
+			// Add relatedTarget, if necessary
+			if ( !event.relatedTarget && fromElement ) {
+				event.relatedTarget = fromElement === event.target ? original.toElement : fromElement;
+			}
+
+			// Add which for click: 1 === left; 2 === middle; 3 === right
+			// Note: button is not normalized, so don't use it
+			if ( !event.which && button !== undefined ) {
+				event.which = ( button & 1 ? 1 : ( button & 2 ? 3 : ( button & 4 ? 2 : 0 ) ) );
+			}
+
+			return event;
+		}
+	},
+
+	fix: function( event ) {
+		if ( event[ jQuery.expando ] ) {
+			return event;
+		}
+
+		// Create a writable copy of the event object and normalize some properties
+		var i, prop,
+			originalEvent = event,
+			fixHook = jQuery.event.fixHooks[ event.type ] || {},
+			copy = fixHook.props ? this.props.concat( fixHook.props ) : this.props;
+
+		event = jQuery.Event( originalEvent );
+
+		for ( i = copy.length; i; ) {
+			prop = copy[ --i ];
+			event[ prop ] = originalEvent[ prop ];
+		}
+
+		// Fix target property, if necessary (#1925, IE 6/7/8 & Safari2)
+		if ( !event.target ) {
+			event.target = originalEvent.srcElement || document;
+		}
+
+		// Target should not be a text node (#504, Safari)
+		if ( event.target.nodeType === 3 ) {
+			event.target = event.target.parentNode;
+		}
+
+		// For mouse/key events; add metaKey if it's not there (#3368, IE6/7/8)
+		if ( event.metaKey === undefined ) {
+			event.metaKey = event.ctrlKey;
+		}
+
+		return fixHook.filter? fixHook.filter( event, originalEvent ) : event;
+	},
+
+	special: {
+		ready: {
+			// Make sure the ready event is setup
+			setup: jQuery.bindReady
+		},
+
+		load: {
+			// Prevent triggered image.load events from bubbling to window.load
+			noBubble: true
+		},
+
+		focus: {
+			delegateType: "focusin"
+		},
+		blur: {
+			delegateType: "focusout"
+		},
+
+		beforeunload: {
+			setup: function( data, namespaces, eventHandle ) {
+				// We only want to do this special case on windows
+				if ( jQuery.isWindow( this ) ) {
+					this.onbeforeunload = eventHandle;
+				}
+			},
+
+			teardown: function( namespaces, eventHandle ) {
+				if ( this.onbeforeunload === eventHandle ) {
+					this.onbeforeunload = null;
+				}
+			}
+		}
+	},
+
+	simulate: function( type, elem, event, bubble ) {
+		// Piggyback on a donor event to simulate a different one.
+		// Fake originalEvent to avoid donor's stopPropagation, but if the
+		// simulated event prevents default then we do the same on the donor.
+		var e = jQuery.extend(
+			new jQuery.Event(),
+			event,
+			{ type: type,
+				isSimulated: true,
+				originalEvent: {}
+			}
+		);
+		if ( bubble ) {
+			jQuery.event.trigger( e, null, elem );
+		} else {
+			jQuery.event.dispatch.call( elem, e );
+		}
+		if ( e.isDefaultPrevented() ) {
+			event.preventDefault();
+		}
+	}
+};
+
+// Some plugins are using, but it's undocumented/deprecated and will be removed.
+// The 1.7 special event interface should provide all the hooks needed now.
+jQuery.event.handle = jQuery.event.dispatch;
+
+jQuery.removeEvent = document.removeEventListener ?
+	function( elem, type, handle ) {
+		if ( elem.removeEventListener ) {
+			elem.removeEventListener( type, handle, false );
+		}
+	} :
+	function( elem, type, handle ) {
+		if ( elem.detachEvent ) {
+			elem.detachEvent( "on" + type, handle );
+		}
+	};
+
+jQuery.Event = function( src, props ) {
+	// Allow instantiation without the 'new' keyword
+	if ( !(this instanceof jQuery.Event) ) {
+		return new jQuery.Event( src, props );
+	}
+
+	// Event object
+	if ( src && src.type ) {
+		this.originalEvent = src;
+		this.type = src.type;
+
+		// Events bubbling up the document may have been marked as prevented
+		// by a handler lower down the tree; reflect the correct value.
+		this.isDefaultPrevented = ( src.defaultPrevented || src.returnValue === false ||
+			src.getPreventDefault && src.getPreventDefault() ) ? returnTrue : returnFalse;
+
+	// Event type
+	} else {
+		this.type = src;
+	}
+
+	// Put explicitly provided properties onto the event object
+	if ( props ) {
+		jQuery.extend( this, props );
+	}
+
+	// Create a timestamp if incoming event doesn't have one
+	this.timeStamp = src && src.timeStamp || jQuery.now();
+
+	// Mark it as fixed
+	this[ jQuery.expando ] = true;
+};
+
+function returnFalse() {
+	return false;
+}
+function returnTrue() {
+	return true;
+}
+
+// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding
+// http://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html
+jQuery.Event.prototype = {
+	preventDefault: function() {
+		this.isDefaultPrevented = returnTrue;
+
+		var e = this.originalEvent;
+		if ( !e ) {
+			return;
+		}
+
+		// if preventDefault exists run it on the original event
+		if ( e.preventDefault ) {
+			e.preventDefault();
+
+		// otherwise set the returnValue property of the original event to false (IE)
+		} else {
+			e.returnValue = false;
+		}
+	},
+	stopPropagation: function() {
+		this.isPropagationStopped = returnTrue;
+
+		var e = this.originalEvent;
+		if ( !e ) {
+			return;
+		}
+		// if stopPropagation exists run it on the original event
+		if ( e.stopPropagation ) {
+			e.stopPropagation();
+		}
+		// otherwise set the cancelBubble property of the original event to true (IE)
+		e.cancelBubble = true;
+	},
+	stopImmediatePropagation: function() {
+		this.isImmediatePropagationStopped = returnTrue;
+		this.stopPropagation();
+	},
+	isDefaultPrevented: returnFalse,
+	isPropagationStopped: returnFalse,
+	isImmediatePropagationStopped: returnFalse
+};
+
+// Create mouseenter/leave events using mouseover/out and event-time checks
+jQuery.each({
+	mouseenter: "mouseover",
+	mouseleave: "mouseout"
+}, function( orig, fix ) {
+	jQuery.event.special[ orig ] = {
+		delegateType: fix,
+		bindType: fix,
+
+		handle: function( event ) {
+			var target = this,
+				related = event.relatedTarget,
+				handleObj = event.handleObj,
+				selector = handleObj.selector,
+				ret;
+
+			// For mousenter/leave call the handler if related is outside the target.
+			// NB: No relatedTarget if the mouse left/entered the browser window
+			if ( !related || (related !== target && !jQuery.contains( target, related )) ) {
+				event.type = handleObj.origType;
+				ret = handleObj.handler.apply( this, arguments );
+				event.type = fix;
+			}
+			return ret;
+		}
+	};
+});
+
+// IE submit delegation
+if ( !jQuery.support.submitBubbles ) {
+
+	jQuery.event.special.submit = {
+		setup: function() {
+			// Only need this for delegated form submit events
+			if ( jQuery.nodeName( this, "form" ) ) {
+				return false;
+			}
+
+			// Lazy-add a submit handler when a descendant form may potentially be submitted
+			jQuery.event.add( this, "click._submit keypress._submit", function( e ) {
+				// Node name check avoids a VML-related crash in IE (#9807)
+				var elem = e.target,
+					form = jQuery.nodeName( elem, "input" ) || jQuery.nodeName( elem, "button" ) ? elem.form : undefined;
+				if ( form && !form._submit_attached ) {
+					jQuery.event.add( form, "submit._submit", function( event ) {
+						// If form was submitted by the user, bubble the event up the tree
+						if ( this.parentNode && !event.isTrigger ) {
+							jQuery.event.simulate( "submit", this.parentNode, event, true );
+						}
+					});
+					form._submit_attached = true;
+				}
+			});
+			// return undefined since we don't need an event listener
+		},
+
+		teardown: function() {
+			// Only need this for delegated form submit events
+			if ( jQuery.nodeName( this, "form" ) ) {
+				return false;
+			}
+
+			// Remove delegated handlers; cleanData eventually reaps submit handlers attached above
+			jQuery.event.remove( this, "._submit" );
+		}
+	};
+}
+
+// IE change delegation and checkbox/radio fix
+if ( !jQuery.support.changeBubbles ) {
+
+	jQuery.event.special.change = {
+
+		setup: function() {
+
+			if ( rformElems.test( this.nodeName ) ) {
+				// IE doesn't fire change on a check/radio until blur; trigger it on click
+				// after a propertychange. Eat the blur-change in special.change.handle.
+				// This still fires onchange a second time for check/radio after blur.
+				if ( this.type === "checkbox" || this.type === "radio" ) {
+					jQuery.event.add( this, "propertychange._change", function( event ) {
+						if ( event.originalEvent.propertyName === "checked" ) {
+							this._just_changed = true;
+						}
+					});
+					jQuery.event.add( this, "click._change", function( event ) {
+						if ( this._just_changed && !event.isTrigger ) {
+							this._just_changed = false;
+							jQuery.event.simulate( "change", this, event, true );
+						}
+					});
+				}
+				return false;
+			}
+			// Delegated event; lazy-add a change handler on descendant inputs
+			jQuery.event.add( this, "beforeactivate._change", function( e ) {
+				var elem = e.target;
+
+				if ( rformElems.test( elem.nodeName ) && !elem._change_attached ) {
+					jQuery.event.add( elem, "change._change", function( event ) {
+						if ( this.parentNode && !event.isSimulated && !event.isTrigger ) {
+							jQuery.event.simulate( "change", this.parentNode, event, true );
+						}
+					});
+					elem._change_attached = true;
+				}
+			});
+		},
+
+		handle: function( event ) {
+			var elem = event.target;
+
+			// Swallow native change events from checkbox/radio, we already triggered them above
+			if ( this !== elem || event.isSimulated || event.isTrigger || (elem.type !== "radio" && elem.type !== "checkbox") ) {
+				return event.handleObj.handler.apply( this, arguments );
+			}
+		},
+
+		teardown: function() {
+			jQuery.event.remove( this, "._change" );
+
+			return rformElems.test( this.nodeName );
+		}
+	};
+}
+
+// Create "bubbling" focus and blur events
+if ( !jQuery.support.focusinBubbles ) {
+	jQuery.each({ focus: "focusin", blur: "focusout" }, function( orig, fix ) {
+
+		// Attach a single capturing handler while someone wants focusin/focusout
+		var attaches = 0,
+			handler = function( event ) {
+				jQuery.event.simulate( fix, event.target, jQuery.event.fix( event ), true );
+			};
+
+		jQuery.event.special[ fix ] = {
+			setup: function() {
+				if ( attaches++ === 0 ) {
+					document.addEventListener( orig, handler, true );
+				}
+			},
+			teardown: function() {
+				if ( --attaches === 0 ) {
+					document.removeEventListener( orig, handler, true );
+				}
+			}
+		};
+	});
+}
+
+jQuery.fn.extend({
+
+	on: function( types, selector, data, fn, /*INTERNAL*/ one ) {
+		var origFn, type;
+
+		// Types can be a map of types/handlers
+		if ( typeof types === "object" ) {
+			// ( types-Object, selector, data )
+			if ( typeof selector !== "string" ) {
+				// ( types-Object, data )
+				data = selector;
+				selector = undefined;
+			}
+			for ( type in types ) {
+				this.on( type, selector, data, types[ type ], one );
+			}
+			return this;
+		}
+
+		if ( data == null && fn == null ) {
+			// ( types, fn )
+			fn = selector;
+			data = selector = undefined;
+		} else if ( fn == null ) {
+			if ( typeof selector === "string" ) {
+				// ( types, selector, fn )
+				fn = data;
+				data = undefined;
+			} else {
+				// ( types, data, fn )
+				fn = data;
+				data = selector;
+				selector = undefined;
+			}
+		}
+		if ( fn === false ) {
+			fn = returnFalse;
+		} else if ( !fn ) {
+			return this;
+		}
+
+		if ( one === 1 ) {
+			origFn = fn;
+			fn = function( event ) {
+				// Can use an empty set, since event contains the info
+				jQuery().off( event );
+				return origFn.apply( this, arguments );
+			};
+			// Use same guid so caller can remove using origFn
+			fn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ );
+		}
+		return this.each( function() {
+			jQuery.event.add( this, types, fn, data, selector );
+		});
+	},
+	one: function( types, selector, data, fn ) {
+		return this.on.call( this, types, selector, data, fn, 1 );
+	},
+	off: function( types, selector, fn ) {
+		if ( types && types.preventDefault && types.handleObj ) {
+			// ( event )  dispatched jQuery.Event
+			var handleObj = types.handleObj;
+			jQuery( types.delegateTarget ).off(
+				handleObj.namespace? handleObj.type + "." + handleObj.namespace : handleObj.type,
+				handleObj.selector,
+				handleObj.handler
+			);
+			return this;
+		}
+		if ( typeof types === "object" ) {
+			// ( types-object [, selector] )
+			for ( var type in types ) {
+				this.off( type, selector, types[ type ] );
+			}
+			return this;
+		}
+		if ( selector === false || typeof selector === "function" ) {
+			// ( types [, fn] )
+			fn = selector;
+			selector = undefined;
+		}
+		if ( fn === false ) {
+			fn = returnFalse;
+		}
+		return this.each(function() {
+			jQuery.event.remove( this, types, fn, selector );
+		});
+	},
+
+	bind: function( types, data, fn ) {
+		return this.on( types, null, data, fn );
+	},
+	unbind: function( types, fn ) {
+		return this.off( types, null, fn );
+	},
+
+	live: function( types, data, fn ) {
+		jQuery( this.context ).on( types, this.selector, data, fn );
+		return this;
+	},
+	die: function( types, fn ) {
+		jQuery( this.context ).off( types, this.selector || "**", fn );
+		return this;
+	},
+
+	delegate: function( selector, types, data, fn ) {
+		return this.on( types, selector, data, fn );
+	},
+	undelegate: function( selector, types, fn ) {
+		// ( namespace ) or ( selector, types [, fn] )
+		return arguments.length == 1? this.off( selector, "**" ) : this.off( types, selector, fn );
+	},
+
+	trigger: function( type, data ) {
+		return this.each(function() {
+			jQuery.event.trigger( type, data, this );
+		});
+	},
+	triggerHandler: function( type, data ) {
+		if ( this[0] ) {
+			return jQuery.event.trigger( type, data, this[0], true );
+		}
+	},
+
+	toggle: function( fn ) {
+		// Save reference to arguments for access in closure
+		var args = arguments,
+			guid = fn.guid || jQuery.guid++,
+			i = 0,
+			toggler = function( event ) {
+				// Figure out which function to execute
+				var lastToggle = ( jQuery._data( this, "lastToggle" + fn.guid ) || 0 ) % i;
+				jQuery._data( this, "lastToggle" + fn.guid, lastToggle + 1 );
+
+				// Make sure that clicks stop
+				event.preventDefault();
+
+				// and execute the function
+				return args[ lastToggle ].apply( this, arguments ) || false;
+			};
+
+		// link all the functions, so any of them can unbind this click handler
+		toggler.guid = guid;
+		while ( i < args.length ) {
+			args[ i++ ].guid = guid;
+		}
+
+		return this.click( toggler );
+	},
+
+	hover: function( fnOver, fnOut ) {
+		return this.mouseenter( fnOver ).mouseleave( fnOut || fnOver );
+	}
+});
+
+jQuery.each( ("blur focus focusin focusout load resize scroll unload click dblclick " +
+	"mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave " +
+	"change select submit keydown keypress keyup error contextmenu").split(" "), function( i, name ) {
+
+	// Handle event binding
+	jQuery.fn[ name ] = function( data, fn ) {
+		if ( fn == null ) {
+			fn = data;
+			data = null;
+		}
+
+		return arguments.length > 0 ?
+			this.on( name, null, data, fn ) :
+			this.trigger( name );
+	};
+
+	if ( jQuery.attrFn ) {
+		jQuery.attrFn[ name ] = true;
+	}
+
+	if ( rkeyEvent.test( name ) ) {
+		jQuery.event.fixHooks[ name ] = jQuery.event.keyHooks;
+	}
+
+	if ( rmouseEvent.test( name ) ) {
+		jQuery.event.fixHooks[ name ] = jQuery.event.mouseHooks;
+	}
+});
+
+
+
+/*!
+ * Sizzle CSS Selector Engine
+ *  Copyright 2012, The Dojo Foundation
+ *  Released under the MIT, BSD, and GPL Licenses.
+ *  More information: http://sizzlejs.com/
+ */
+(function(){
+
+var chunker = /((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^\[\]]*\]|['"][^'"]*['"]|[^\[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,
+	expando = "sizcache" + (Math.random() + '').replace('.', ''),
+	done = 0,
+	toString = Object.prototype.toString,
+	hasDuplicate = false,
+	baseHasDuplicate = true,
+	rBackslash = /\\/g,
+	rReturn = /\r\n/g,
+	rNonWord = /\W/;
+
+// Here we check if the JavaScript engine is using some sort of
+// optimization where it does not always call our comparision
+// function. If that is the case, discard the hasDuplicate value.
+//   Thus far that includes Google Chrome.
+[0, 0].sort(function() {
+	baseHasDuplicate = false;
+	return 0;
+});
+
+var Sizzle = function( selector, context, results, seed ) {
+	results = results || [];
+	context = context || document;
+
+	var origContext = context;
+
+	if ( context.nodeType !== 1 && context.nodeType !== 9 ) {
+		return [];
+	}
+
+	if ( !selector || typeof selector !== "string" ) {
+		return results;
+	}
+
+	var m, set, checkSet, extra, ret, cur, pop, i,
+		prune = true,
+		contextXML = Sizzle.isXML( context ),
+		parts = [],
+		soFar = selector;
+
+	// Reset the position of the chunker regexp (start from head)
+	do {
+		chunker.exec( "" );
+		m = chunker.exec( soFar );
+
+		if ( m ) {
+			soFar = m[3];
+
+			parts.push( m[1] );
+
+			if ( m[2] ) {
+				extra = m[3];
+				break;
+			}
+		}
+	} while ( m );
+
+	if ( parts.length > 1 && origPOS.exec( selector ) ) {
+
+		if ( parts.length === 2 && Expr.relative[ parts[0] ] ) {
+			set = posProcess( parts[0] + parts[1], context, seed );
+
+		} else {
+			set = Expr.relative[ parts[0] ] ?
+				[ context ] :
+				Sizzle( parts.shift(), context );
+
+			while ( parts.length ) {
+				selector = parts.shift();
+
+				if ( Expr.relative[ selector ] ) {
+					selector += parts.shift();
+				}
+
+				set = posProcess( selector, set, seed );
+			}
+		}
+
+	} else {
+		// Take a shortcut and set the context if the root selector is an ID
+		// (but not if it'll be faster if the inner selector is an ID)
+		if ( !seed && parts.length > 1 && context.nodeType === 9 && !contextXML &&
+				Expr.match.ID.test(parts[0]) && !Expr.match.ID.test(parts[parts.length - 1]) ) {
+
+			ret = Sizzle.find( parts.shift(), context, contextXML );
+			context = ret.expr ?
+				Sizzle.filter( ret.expr, ret.set )[0] :
+				ret.set[0];
+		}
+
+		if ( context ) {
+			ret = seed ?
+				{ expr: parts.pop(), set: makeArray(seed) } :
+				Sizzle.find( parts.pop(), parts.length === 1 && (parts[0] === "~" || parts[0] === "+") && context.parentNode ? context.parentNode : context, contextXML );
+
+			set = ret.expr ?
+				Sizzle.filter( ret.expr, ret.set ) :
+				ret.set;
+
+			if ( parts.length > 0 ) {
+				checkSet = makeArray( set );
+
+			} else {
+				prune = false;
+			}
+
+			while ( parts.length ) {
+				cur = parts.pop();
+				pop = cur;
+
+				if ( !Expr.relative[ cur ] ) {
+					cur = "";
+				} else {
+					pop = parts.pop();
+				}
+
+				if ( pop == null ) {
+					pop = context;
+				}
+
+				Expr.relative[ cur ]( checkSet, pop, contextXML );
+			}
+
+		} else {
+			checkSet = parts = [];
+		}
+	}
+
+	if ( !checkSet ) {
+		checkSet = set;
+	}
+
+	if ( !checkSet ) {
+		Sizzle.error( cur || selector );
+	}
+
+	if ( toString.call(checkSet) === "[object Array]" ) {
+		if ( !prune ) {
+			results.push.apply( results, checkSet );
+
+		} else if ( context && context.nodeType === 1 ) {
+			for ( i = 0; checkSet[i] != null; i++ ) {
+				if ( checkSet[i] && (checkSet[i] === true || checkSet[i].nodeType === 1 && Sizzle.contains(context, checkSet[i])) ) {
+					results.push( set[i] );
+				}
+			}
+
+		} else {
+			for ( i = 0; checkSet[i] != null; i++ ) {
+				if ( checkSet[i] && checkSet[i].nodeType === 1 ) {
+					results.push( set[i] );
+				}
+			}
+		}
+
+	} else {
+		makeArray( checkSet, results );
+	}
+
+	if ( extra ) {
+		Sizzle( extra, origContext, results, seed );
+		Sizzle.uniqueSort( results );
+	}
+
+	return results;
+};
+
+Sizzle.uniqueSort = function( results ) {
+	if ( sortOrder ) {
+		hasDuplicate = baseHasDuplicate;
+		results.sort( sortOrder );
+
+		if ( hasDuplicate ) {
+			for ( var i = 1; i < results.length; i++ ) {
+				if ( results[i] === results[ i - 1 ] ) {
+					results.splice( i--, 1 );
+				}
+			}
+		}
+	}
+
+	return results;
+};
+
+Sizzle.matches = function( expr, set ) {
+	return Sizzle( expr, null, null, set );
+};
+
+Sizzle.matchesSelector = function( node, expr ) {
+	return Sizzle( expr, null, null, [node] ).length > 0;
+};
+
+Sizzle.find = function( expr, context, isXML ) {
+	var set, i, len, match, type, left;
+
+	if ( !expr ) {
+		return [];
+	}
+
+	for ( i = 0, len = Expr.order.length; i < len; i++ ) {
+		type = Expr.order[i];
+
+		if ( (match = Expr.leftMatch[ type ].exec( expr )) ) {
+			left = match[1];
+			match.splice( 1, 1 );
+
+			if ( left.substr( left.length - 1 ) !== "\\" ) {
+				match[1] = (match[1] || "").replace( rBackslash, "" );
+				set = Expr.find[ type ]( match, context, isXML );
+
+				if ( set != null ) {
+					expr = expr.replace( Expr.match[ type ], "" );
+					break;
+				}
+			}
+		}
+	}
+
+	if ( !set ) {
+		set = typeof context.getElementsByTagName !== "undefined" ?
+			context.getElementsByTagName( "*" ) :
+			[];
+	}
+
+	return { set: set, expr: expr };
+};
+
+Sizzle.filter = function( expr, set, inplace, not ) {
+	var match, anyFound,
+		type, found, item, filter, left,
+		i, pass,
+		old = expr,
+		result = [],
+		curLoop = set,
+		isXMLFilter = set && set[0] && Sizzle.isXML( set[0] );
+
+	while ( expr && set.length ) {
+		for ( type in Expr.filter ) {
+			if ( (match = Expr.leftMatch[ type ].exec( expr )) != null && match[2] ) {
+				filter = Expr.filter[ type ];
+				left = match[1];
+
+				anyFound = false;
+
+				match.splice(1,1);
+
+				if ( left.substr( left.length - 1 ) === "\\" ) {
+					continue;
+				}
+
+				if ( curLoop === result ) {
+					result = [];
+				}
+
+				if ( Expr.preFilter[ type ] ) {
+					match = Expr.preFilter[ type ]( match, curLoop, inplace, result, not, isXMLFilter );
+
+					if ( !match ) {
+						anyFound = found = true;
+
+					} else if ( match === true ) {
+						continue;
+					}
+				}
+
+				if ( match ) {
+					for ( i = 0; (item = curLoop[i]) != null; i++ ) {
+						if ( item ) {
+							found = filter( item, match, i, curLoop );
+							pass = not ^ found;
+
+							if ( inplace && found != null ) {
+								if ( pass ) {
+									anyFound = true;
+
+								} else {
+									curLoop[i] = false;
+								}
+
+							} else if ( pass ) {
+								result.push( item );
+								anyFound = true;
+							}
+						}
+					}
+				}
+
+				if ( found !== undefined ) {
+					if ( !inplace ) {
+						curLoop = result;
+					}
+
+					expr = expr.replace( Expr.match[ type ], "" );
+
+					if ( !anyFound ) {
+						return [];
+					}
+
+					break;
+				}
+			}
+		}
+
+		// Improper expression
+		if ( expr === old ) {
+			if ( anyFound == null ) {
+				Sizzle.error( expr );
+
+			} else {
+				break;
+			}
+		}
+
+		old = expr;
+	}
+
+	return curLoop;
+};
+
+Sizzle.error = function( msg ) {
+	throw new Error( "Syntax error, unrecognized expression: " + msg );
+};
+
+/**
+ * Utility function for retreiving the text value of an array of DOM nodes
+ * @param {Array|Element} elem
+ */
+var getText = Sizzle.getText = function( elem ) {
+    var i, node,
+		nodeType = elem.nodeType,
+		ret = "";
+
+	if ( nodeType ) {
+		if ( nodeType === 1 || nodeType === 9 ) {
+			// Use textContent || innerText for elements
+			if ( typeof elem.textContent === 'string' ) {
+				return elem.textContent;
+			} else if ( typeof elem.innerText === 'string' ) {
+				// Replace IE's carriage returns
+				return elem.innerText.replace( rReturn, '' );
+			} else {
+				// Traverse it's children
+				for ( elem = elem.firstChild; elem; elem = elem.nextSibling) {
+					ret += getText( elem );
+				}
+			}
+		} else if ( nodeType === 3 || nodeType === 4 ) {
+			return elem.nodeValue;
+		}
+	} else {
+
+		// If no nodeType, this is expected to be an array
+		for ( i = 0; (node = elem[i]); i++ ) {
+			// Do not traverse comment nodes
+			if ( node.nodeType !== 8 ) {
+				ret += getText( node );
+			}
+		}
+	}
+	return ret;
+};
+
+var Expr = Sizzle.selectors = {
+	order: [ "ID", "NAME", "TAG" ],
+
+	match: {
+		ID: /#((?:[\w\u00c0-\uFFFF\-]|\\.)+)/,
+		CLASS: /\.((?:[\w\u00c0-\uFFFF\-]|\\.)+)/,
+		NAME: /\[name=['"]*((?:[\w\u00c0-\uFFFF\-]|\\.)+)['"]*\]/,
+		ATTR: /\[\s*((?:[\w\u00c0-\uFFFF\-]|\\.)+)\s*(?:(\S?=)\s*(?:(['"])(.*?)\3|(#?(?:[\w\u00c0-\uFFFF\-]|\\.)*)|)|)\s*\]/,
+		TAG: /^((?:[\w\u00c0-\uFFFF\*\-]|\\.)+)/,
+		CHILD: /:(only|nth|last|first)-child(?:\(\s*(even|odd|(?:[+\-]?\d+|(?:[+\-]?\d*)?n\s*(?:[+\-]\s*\d+)?))\s*\))?/,
+		POS: /:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^\-]|$)/,
+		PSEUDO: /:((?:[\w\u00c0-\uFFFF\-]|\\.)+)(?:\((['"]?)((?:\([^\)]+\)|[^\(\)]*)+)\2\))?/
+	},
+
+	leftMatch: {},
+
+	attrMap: {
+		"class": "className",
+		"for": "htmlFor"
+	},
+
+	attrHandle: {
+		href: function( elem ) {
+			return elem.getAttribute( "href" );
+		},
+		type: function( elem ) {
+			return elem.getAttribute( "type" );
+		}
+	},
+
+	relative: {
+		"+": function(checkSet, part){
+			var isPartStr = typeof part === "string",
+				isTag = isPartStr && !rNonWord.test( part ),
+				isPartStrNotTag = isPartStr && !isTag;
+
+			if ( isTag ) {
+				part = part.toLowerCase();
+			}
+
+			for ( var i = 0, l = checkSet.length, elem; i < l; i++ ) {
+				if ( (elem = checkSet[i]) ) {
+					while ( (elem = elem.previousSibling) && elem.nodeType !== 1 ) {}
+
+					checkSet[i] = isPartStrNotTag || elem && elem.nodeName.toLowerCase() === part ?
+						elem || false :
+						elem === part;
+				}
+			}
+
+			if ( isPartStrNotTag ) {
+				Sizzle.filter( part, checkSet, true );
+			}
+		},
+
+		">": function( checkSet, part ) {
+			var elem,
+				isPartStr = typeof part === "string",
+				i = 0,
+				l = checkSet.length;
+
+			if ( isPartStr && !rNonWord.test( part ) ) {
+				part = part.toLowerCase();
+
+				for ( ; i < l; i++ ) {
+					elem = checkSet[i];
+
+					if ( elem ) {
+						var parent = elem.parentNode;
+						checkSet[i] = parent.nodeName.toLowerCase() === part ? parent : false;
+					}
+				}
+
+			} else {
+				for ( ; i < l; i++ ) {
+					elem = checkSet[i];
+
+					if ( elem ) {
+						checkSet[i] = isPartStr ?
+							elem.parentNode :
+							elem.parentNode === part;
+					}
+				}
+
+				if ( isPartStr ) {
+					Sizzle.filter( part, checkSet, true );
+				}
+			}
+		},
+
+		"": function(checkSet, part, isXML){
+			var nodeCheck,
+				doneName = done++,
+				checkFn = dirCheck;
+
+			if ( typeof part === "string" && !rNonWord.test( part ) ) {
+				part = part.toLowerCase();
+				nodeCheck = part;
+				checkFn = dirNodeCheck;
+			}
+
+			checkFn( "parentNode", part, doneName, checkSet, nodeCheck, isXML );
+		},
+
+		"~": function( checkSet, part, isXML ) {
+			var nodeCheck,
+				doneName = done++,
+				checkFn = dirCheck;
+
+			if ( typeof part === "string" && !rNonWord.test( part ) ) {
+				part = part.toLowerCase();
+				nodeCheck = part;
+				checkFn = dirNodeCheck;
+			}
+
+			checkFn( "previousSibling", part, doneName, checkSet, nodeCheck, isXML );
+		}
+	},
+
+	find: {
+		ID: function( match, context, isXML ) {
+			if ( typeof context.getElementById !== "undefined" && !isXML ) {
+				var m = context.getElementById(match[1]);
+				// Check parentNode to catch when Blackberry 4.6 returns
+				// nodes that are no longer in the document #6963
+				return m && m.parentNode ? [m] : [];
+			}
+		},
+
+		NAME: function( match, context ) {
+			if ( typeof context.getElementsByName !== "undefined" ) {
+				var ret = [],
+					results = context.getElementsByName( match[1] );
+
+				for ( var i = 0, l = results.length; i < l; i++ ) {
+					if ( results[i].getAttribute("name") === match[1] ) {
+						ret.push( results[i] );
+					}
+				}
+
+				return ret.length === 0 ? null : ret;
+			}
+		},
+
+		TAG: function( match, context ) {
+			if ( typeof context.getElementsByTagName !== "undefined" ) {
+				return context.getElementsByTagName( match[1] );
+			}
+		}
+	},
+	preFilter: {
+		CLASS: function( match, curLoop, inplace, result, not, isXML ) {
+			match = " " + match[1].replace( rBackslash, "" ) + " ";
+
+			if ( isXML ) {
+				return match;
+			}
+
+			for ( var i = 0, elem; (elem = curLoop[i]) != null; i++ ) {
+				if ( elem ) {
+					if ( not ^ (elem.className && (" " + elem.className + " ").replace(/[\t\n\r]/g, " ").indexOf(match) >= 0) ) {
+						if ( !inplace ) {
+							result.push( elem );
+						}
+
+					} else if ( inplace ) {
+						curLoop[i] = false;
+					}
+				}
+			}
+
+			return false;
+		},
+
+		ID: function( match ) {
+			return match[1].replace( rBackslash, "" );
+		},
+
+		TAG: function( match, curLoop ) {
+			return match[1].replace( rBackslash, "" ).toLowerCase();
+		},
+
+		CHILD: function( match ) {
+			if ( match[1] === "nth" ) {
+				if ( !match[2] ) {
+					Sizzle.error( match[0] );
+				}
+
+				match[2] = match[2].replace(/^\+|\s*/g, '');
+
+				// parse equations like 'even', 'odd', '5', '2n', '3n+2', '4n-1', '-n+6'
+				var test = /(-?)(\d*)(?:n([+\-]?\d*))?/.exec(
+					match[2] === "even" && "2n" || match[2] === "odd" && "2n+1" ||
+					!/\D/.test( match[2] ) && "0n+" + match[2] || match[2]);
+
+				// calculate the numbers (first)n+(last) including if they are negative
+				match[2] = (test[1] + (test[2] || 1)) - 0;
+				match[3] = test[3] - 0;
+			}
+			else if ( match[2] ) {
+				Sizzle.error( match[0] );
+			}
+
+			// TODO: Move to normal caching system
+			match[0] = done++;
+
+			return match;
+		},
+
+		ATTR: function( match, curLoop, inplace, result, not, isXML ) {
+			var name = match[1] = match[1].replace( rBackslash, "" );
+
+			if ( !isXML && Expr.attrMap[name] ) {
+				match[1] = Expr.attrMap[name];
+			}
+
+			// Handle if an un-quoted value was used
+			match[4] = ( match[4] || match[5] || "" ).replace( rBackslash, "" );
+
+			if ( match[2] === "~=" ) {
+				match[4] = " " + match[4] + " ";
+			}
+
+			return match;
+		},
+
+		PSEUDO: function( match, curLoop, inplace, result, not ) {
+			if ( match[1] === "not" ) {
+				// If we're dealing with a complex expression, or a simple one
+				if ( ( chunker.exec(match[3]) || "" ).length > 1 || /^\w/.test(match[3]) ) {
+					match[3] = Sizzle(match[3], null, null, curLoop);
+
+				} else {
+					var ret = Sizzle.filter(match[3], curLoop, inplace, true ^ not);
+
+					if ( !inplace ) {
+						result.push.apply( result, ret );
+					}
+
+					return false;
+				}
+
+			} else if ( Expr.match.POS.test( match[0] ) || Expr.match.CHILD.test( match[0] ) ) {
+				return true;
+			}
+
+			return match;
+		},
+
+		POS: function( match ) {
+			match.unshift( true );
+
+			return match;
+		}
+	},
+
+	filters: {
+		enabled: function( elem ) {
+			return elem.disabled === false && elem.type !== "hidden";
+		},
+
+		disabled: function( elem ) {
+			return elem.disabled === true;
+		},
+
+		checked: function( elem ) {
+			return elem.checked === true;
+		},
+
+		selected: function( elem ) {
+			// Accessing this property makes selected-by-default
+			// options in Safari work properly
+			if ( elem.parentNode ) {
+				elem.parentNode.selectedIndex;
+			}
+
+			return elem.selected === true;
+		},
+
+		parent: function( elem ) {
+			return !!elem.firstChild;
+		},
+
+		empty: function( elem ) {
+			return !elem.firstChild;
+		},
+
+		has: function( elem, i, match ) {
+			return !!Sizzle( match[3], elem ).length;
+		},
+
+		header: function( elem ) {
+			return (/h\d/i).test( elem.nodeName );
+		},
+
+		text: function( elem ) {
+			var attr = elem.getAttribute( "type" ), type = elem.type;
+			// IE6 and 7 will map elem.type to 'text' for new HTML5 types (search, etc)
+			// use getAttribute instead to test this case
+			return elem.nodeName.toLowerCase() === "input" && "text" === type && ( attr === type || attr === null );
+		},
+
+		radio: function( elem ) {
+			return elem.nodeName.toLowerCase() === "input" && "radio" === elem.type;
+		},
+
+		checkbox: function( elem ) {
+			return elem.nodeName.toLowerCase() === "input" && "checkbox" === elem.type;
+		},
+
+		file: function( elem ) {
+			return elem.nodeName.toLowerCase() === "input" && "file" === elem.type;
+		},
+
+		password: function( elem ) {
+			return elem.nodeName.toLowerCase() === "input" && "password" === elem.type;
+		},
+
+		submit: function( elem ) {
+			var name = elem.nodeName.toLowerCase();
+			return (name === "input" || name === "button") && "submit" === elem.type;
+		},
+
+		image: function( elem ) {
+			return elem.nodeName.toLowerCase() === "input" && "image" === elem.type;
+		},
+
+		reset: function( elem ) {
+			var name = elem.nodeName.toLowerCase();
+			return (name === "input" || name === "button") && "reset" === elem.type;
+		},
+
+		button: function( elem ) {
+			var name = elem.nodeName.toLowerCase();
+			return name === "input" && "button" === elem.type || name === "button";
+		},
+
+		input: function( elem ) {
+			return (/input|select|textarea|button/i).test( elem.nodeName );
+		},
+
+		focus: function( elem ) {
+			return elem === elem.ownerDocument.activeElement;
+		}
+	},
+	setFilters: {
+		first: function( elem, i ) {
+			return i === 0;
+		},
+
+		last: function( elem, i, match, array ) {
+			return i === array.length - 1;
+		},
+
+		even: function( elem, i ) {
+			return i % 2 === 0;
+		},
+
+		odd: function( elem, i ) {
+			return i % 2 === 1;
+		},
+
+		lt: function( elem, i, match ) {
+			return i < match[3] - 0;
+		},
+
+		gt: function( elem, i, match ) {
+			return i > match[3] - 0;
+		},
+
+		nth: function( elem, i, match ) {
+			return match[3] - 0 === i;
+		},
+
+		eq: function( elem, i, match ) {
+			return match[3] - 0 === i;
+		}
+	},
+	filter: {
+		PSEUDO: function( elem, match, i, array ) {
+			var name = match[1],
+				filter = Expr.filters[ name ];
+
+			if ( filter ) {
+				return filter( elem, i, match, array );
+
+			} else if ( name === "contains" ) {
+				return (elem.textContent || elem.innerText || getText([ elem ]) || "").indexOf(match[3]) >= 0;
+
+			} else if ( name === "not" ) {
+				var not = match[3];
+
+				for ( var j = 0, l = not.length; j < l; j++ ) {
+					if ( not[j] === elem ) {
+						return false;
+					}
+				}
+
+				return true;
+
+			} else {
+				Sizzle.error( name );
+			}
+		},
+
+		CHILD: function( elem, match ) {
+			var first, last,
+				doneName, parent, cache,
+				count, diff,
+				type = match[1],
+				node = elem;
+
+			switch ( type ) {
+				case "only":
+				case "first":
+					while ( (node = node.previousSibling) )	 {
+						if ( node.nodeType === 1 ) {
+							return false;
+						}
+					}
+
+					if ( type === "first" ) {
+						return true;
+					}
+
+					node = elem;
+
+				case "last":
+					while ( (node = node.nextSibling) )	 {
+						if ( node.nodeType === 1 ) {
+							return false;
+						}
+					}
+
+					return true;
+
+				case "nth":
+					first = match[2];
+					last = match[3];
+
+					if ( first === 1 && last === 0 ) {
+						return true;
+					}
+
+					doneName = match[0];
+					parent = elem.parentNode;
+
+					if ( parent && (parent[ expando ] !== doneName || !elem.nodeIndex) ) {
+						count = 0;
+
+						for ( node = parent.firstChild; node; node = node.nextSibling ) {
+							if ( node.nodeType === 1 ) {
+								node.nodeIndex = ++count;
+							}
+						}
+
+						parent[ expando ] = doneName;
+					}
+
+					diff = elem.nodeIndex - last;
+
+					if ( first === 0 ) {
+						return diff === 0;
+
+					} else {
+						return ( diff % first === 0 && diff / first >= 0 );
+					}
+			}
+		},
+
+		ID: function( elem, match ) {
+			return elem.nodeType === 1 && elem.getAttribute("id") === match;
+		},
+
+		TAG: function( elem, match ) {
+			return (match === "*" && elem.nodeType === 1) || !!elem.nodeName && elem.nodeName.toLowerCase() === match;
+		},
+
+		CLASS: function( elem, match ) {
+			return (" " + (elem.className || elem.getAttribute("class")) + " ")
+				.indexOf( match ) > -1;
+		},
+
+		ATTR: function( elem, match ) {
+			var name = match[1],
+				result = Sizzle.attr ?
+					Sizzle.attr( elem, name ) :
+					Expr.attrHandle[ name ] ?
+					Expr.attrHandle[ name ]( elem ) :
+					elem[ name ] != null ?
+						elem[ name ] :
+						elem.getAttribute( name ),
+				value = result + "",
+				type = match[2],
+				check = match[4];
+
+			return result == null ?
+				type === "!=" :
+				!type && Sizzle.attr ?
+				result != null :
+				type === "=" ?
+				value === check :
+				type === "*=" ?
+				value.indexOf(check) >= 0 :
+				type === "~=" ?
+				(" " + value + " ").indexOf(check) >= 0 :
+				!check ?
+				value && result !== false :
+				type === "!=" ?
+				value !== check :
+				type === "^=" ?
+				value.indexOf(check) === 0 :
+				type === "$=" ?
+				value.substr(value.length - check.length) === check :
+				type === "|=" ?
+				value === check || value.substr(0, check.length + 1) === check + "-" :
+				false;
+		},
+
+		POS: function( elem, match, i, array ) {
+			var name = match[2],
+				filter = Expr.setFilters[ name ];
+
+			if ( filter ) {
+				return filter( elem, i, match, array );
+			}
+		}
+	}
+};
+
+var origPOS = Expr.match.POS,
+	fescape = function(all, num){
+		return "\\" + (num - 0 + 1);
+	};
+
+for ( var type in Expr.match ) {
+	Expr.match[ type ] = new RegExp( Expr.match[ type ].source + (/(?![^\[]*\])(?![^\(]*\))/.source) );
+	Expr.leftMatch[ type ] = new RegExp( /(^(?:.|\r|\n)*?)/.source + Expr.match[ type ].source.replace(/\\(\d+)/g, fescape) );
+}
+
+var makeArray = function( array, results ) {
+	array = Array.prototype.slice.call( array, 0 );
+
+	if ( results ) {
+		results.push.apply( results, array );
+		return results;
+	}
+
+	return array;
+};
+
+// Perform a simple check to determine if the browser is capable of
+// converting a NodeList to an array using builtin methods.
+// Also verifies that the returned array holds DOM nodes
+// (which is not the case in the Blackberry browser)
+try {
+	Array.prototype.slice.call( document.documentElement.childNodes, 0 )[0].nodeType;
+
+// Provide a fallback method if it does not work
+} catch( e ) {
+	makeArray = function( array, results ) {
+		var i = 0,
+			ret = results || [];
+
+		if ( toString.call(array) === "[object Array]" ) {
+			Array.prototype.push.apply( ret, array );
+
+		} else {
+			if ( typeof array.length === "number" ) {
+				for ( var l = array.length; i < l; i++ ) {
+					ret.push( array[i] );
+				}
+
+			} else {
+				for ( ; array[i]; i++ ) {
+					ret.push( array[i] );
+				}
+			}
+		}
+
+		return ret;
+	};
+}
+
+var sortOrder, siblingCheck;
+
+if ( document.documentElement.compareDocumentPosition ) {
+	sortOrder = function( a, b ) {
+		if ( a === b ) {
+			hasDuplicate = true;
+			return 0;
+		}
+
+		if ( !a.compareDocumentPosition || !b.compareDocumentPosition ) {
+			return a.compareDocumentPosition ? -1 : 1;
+		}
+
+		return a.compareDocumentPosition(b) & 4 ? -1 : 1;
+	};
+
+} else {
+	sortOrder = function( a, b ) {
+		// The nodes are identical, we can exit early
+		if ( a === b ) {
+			hasDuplicate = true;
+			return 0;
+
+		// Fallback to using sourceIndex (in IE) if it's available on both nodes
+		} else if ( a.sourceIndex && b.sourceIndex ) {
+			return a.sourceIndex - b.sourceIndex;
+		}
+
+		var al, bl,
+			ap = [],
+			bp = [],
+			aup = a.parentNode,
+			bup = b.parentNode,
+			cur = aup;
+
+		// If the nodes are siblings (or identical) we can do a quick check
+		if ( aup === bup ) {
+			return siblingCheck( a, b );
+
+		// If no parents were found then the nodes are disconnected
+		} else if ( !aup ) {
+			return -1;
+
+		} else if ( !bup ) {
+			return 1;
+		}
+
+		// Otherwise they're somewhere else in the tree so we need
+		// to build up a full list of the parentNodes for comparison
+		while ( cur ) {
+			ap.unshift( cur );
+			cur = cur.parentNode;
+		}
+
+		cur = bup;
+
+		while ( cur ) {
+			bp.unshift( cur );
+			cur = cur.parentNode;
+		}
+
+		al = ap.length;
+		bl = bp.length;
+
+		// Start walking down the tree looking for a discrepancy
+		for ( var i = 0; i < al && i < bl; i++ ) {
+			if ( ap[i] !== bp[i] ) {
+				return siblingCheck( ap[i], bp[i] );
+			}
+		}
+
+		// We ended someplace up the tree so do a sibling check
+		return i === al ?
+			siblingCheck( a, bp[i], -1 ) :
+			siblingCheck( ap[i], b, 1 );
+	};
+
+	siblingCheck = function( a, b, ret ) {
+		if ( a === b ) {
+			return ret;
+
+		var cur = a.nextSibling;
+		}
+
+		while ( cur ) {
+			if ( cur === b ) {
+				return -1;
+			}
+
+			cur = cur.nextSibling;
+		}
+
+		return 1;
+	};
+}
+
+// Check to see if the browser returns elements by name when
+// querying by getElementById (and provide a workaround)
+(function(){
+	// We're going to inject a fake input element with a specified name
+	var form = document.createElement("div"),
+		id = "script" + (new Date()).getTime(),
+		root = document.documentElement;
+
+	form.innerHTML = "<a name='" + id + "'/>";
+
+	// Inject it into the root element, check its status, and remove it quickly
+	root.insertBefore( form, root.firstChild );
+
+	// The workaround has to do additional checks after a getElementById
+	// Which slows things down for other browsers (hence the branching)
+	if ( document.getElementById( id ) ) {
+		Expr.find.ID = function( match, context, isXML ) {
+			if ( typeof context.getElementById !== "undefined" && !isXML ) {
+				var m = context.getElementById(match[1]);
+
+				return m ?
+					m.id === match[1] || typeof m.getAttributeNode !== "undefined" && m.getAttributeNode("id").nodeValue === match[1] ?
+						[m] :
+						undefined :
+					[];
+			}
+		};
+
+		Expr.filter.ID = function( elem, match ) {
+			var node = typeof elem.getAttributeNode !== "undefined" && elem.getAttributeNode("id");
+
+			return elem.nodeType === 1 && node && node.nodeValue === match;
+		};
+	}
+
+	root.removeChild( form );
+
+	// release memory in IE
+	root = form = null;
+})();
+
+(function(){
+	// Check to see if the browser returns only elements
+	// when doing getElementsByTagName("*")
+
+	// Create a fake element
+	var div = document.createElement("div");
+	div.appendChild( document.createComment("") );
+
+	// Make sure no comments are found
+	if ( div.getElementsByTagName("*").length > 0 ) {
+		Expr.find.TAG = function( match, context ) {
+			var results = context.getElementsByTagName( match[1] );
+
+			// Filter out possible comments
+			if ( match[1] === "*" ) {
+				var tmp = [];
+
+				for ( var i = 0; results[i]; i++ ) {
+					if ( results[i].nodeType === 1 ) {
+						tmp.push( results[i] );
+					}
+				}
+
+				results = tmp;
+			}
+
+			return results;
+		};
+	}
+
+	// Check to see if an attribute returns normalized href attributes
+	div.innerHTML = "<a href='#'></a>";
+
+	if ( div.firstChild && typeof div.firstChild.getAttribute !== "undefined" &&
+			div.firstChild.getAttribute("href") !== "#" ) {
+
+		Expr.attrHandle.href = function( elem ) {
+			return elem.getAttribute( "href", 2 );
+		};
+	}
+
+	// release memory in IE
+	div = null;
+})();
+
+if ( document.querySelectorAll ) {
+	(function(){
+		var oldSizzle = Sizzle,
+			div = document.createElement("div"),
+			id = "__sizzle__";
+
+		div.innerHTML = "<p class='TEST'></p>";
+
+		// Safari can't handle uppercase or unicode characters when
+		// in quirks mode.
+		if ( div.querySelectorAll && div.querySelectorAll(".TEST").length === 0 ) {
+			return;
+		}
+
+		Sizzle = function( query, context, extra, seed ) {
+			context = context || document;
+
+			// Only use querySelectorAll on non-XML documents
+			// (ID selectors don't work in non-HTML documents)
+			if ( !seed && !Sizzle.isXML(context) ) {
+				// See if we find a selector to speed up
+				var match = /^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec( query );
+
+				if ( match && (context.nodeType === 1 || context.nodeType === 9) ) {
+					// Speed-up: Sizzle("TAG")
+					if ( match[1] ) {
+						return makeArray( context.getElementsByTagName( query ), extra );
+
+					// Speed-up: Sizzle(".CLASS")
+					} else if ( match[2] && Expr.find.CLASS && context.getElementsByClassName ) {
+						return makeArray( context.getElementsByClassName( match[2] ), extra );
+					}
+				}
+
+				if ( context.nodeType === 9 ) {
+					// Speed-up: Sizzle("body")
+					// The body element only exists once, optimize finding it
+					if ( query === "body" && context.body ) {
+						return makeArray( [ context.body ], extra );
+
+					// Speed-up: Sizzle("#ID")
+					} else if ( match && match[3] ) {
+						var elem = context.getElementById( match[3] );
+
+						// Check parentNode to catch when Blackberry 4.6 returns
+						// nodes that are no longer in the document #6963
+						if ( elem && elem.parentNode ) {
+							// Handle the case where IE and Opera return items
+							// by name instead of ID
+							if ( elem.id === match[3] ) {
+								return makeArray( [ elem ], extra );
+							}
+
+						} else {
+							return makeArray( [], extra );
+						}
+					}
+
+					try {
+						return makeArray( context.querySelectorAll(query), extra );
+					} catch(qsaError) {}
+
+				// qSA works strangely on Element-rooted queries
+				// We can work around this by specifying an extra ID on the root
+				// and working up from there (Thanks to Andrew Dupont for the technique)
+				// IE 8 doesn't work on object elements
+				} else if ( context.nodeType === 1 && context.nodeName.toLowerCase() !== "object" ) {
+					var oldContext = context,
+						old = context.getAttribute( "id" ),
+						nid = old || id,
+						hasParent = context.parentNode,
+						relativeHierarchySelector = /^\s*[+~]/.test( query );
+
+					if ( !old ) {
+						context.setAttribute( "id", nid );
+					} else {
+						nid = nid.replace( /'/g, "\\$&" );
+					}
+					if ( relativeHierarchySelector && hasParent ) {
+						context = context.parentNode;
+					}
+
+					try {
+						if ( !relativeHierarchySelector || hasParent ) {
+							return makeArray( context.querySelectorAll( "[id='" + nid + "'] " + query ), extra );
+						}
+
+					} catch(pseudoError) {
+					} finally {
+						if ( !old ) {
+							oldContext.removeAttribute( "id" );
+						}
+					}
+				}
+			}
+
+			return oldSizzle(query, context, extra, seed);
+		};
+
+		for ( var prop in oldSizzle ) {
+			Sizzle[ prop ] = oldSizzle[ prop ];
+		}
+
+		// release memory in IE
+		div = null;
+	})();
+}
+
+(function(){
+	var html = document.documentElement,
+		matches = html.matchesSelector || html.mozMatchesSelector || html.webkitMatchesSelector || html.msMatchesSelector;
+
+	if ( matches ) {
+		// Check to see if it's possible to do matchesSelector
+		// on a disconnected node (IE 9 fails this)
+		var disconnectedMatch = !matches.call( document.createElement( "div" ), "div" ),
+			pseudoWorks = false;
+
+		try {
+			// This should fail with an exception
+			// Gecko does not error, returns false instead
+			matches.call( document.documentElement, "[test!='']:sizzle" );
+
+		} catch( pseudoError ) {
+			pseudoWorks = true;
+		}
+
+		Sizzle.matchesSelector = function( node, expr ) {
+			// Make sure that attribute selectors are quoted
+			expr = expr.replace(/\=\s*([^'"\]]*)\s*\]/g, "='$1']");
+
+			if ( !Sizzle.isXML( node ) ) {
+				try {
+					if ( pseudoWorks || !Expr.match.PSEUDO.test( expr ) && !/!=/.test( expr ) ) {
+						var ret = matches.call( node, expr );
+
+						// IE 9's matchesSelector returns false on disconnected nodes
+						if ( ret || !disconnectedMatch ||
+								// As well, disconnected nodes are said to be in a document
+								// fragment in IE 9, so check for that
+								node.document && node.document.nodeType !== 11 ) {
+							return ret;
+						}
+					}
+				} catch(e) {}
+			}
+
+			return Sizzle(expr, null, null, [node]).length > 0;
+		};
+	}
+})();
+
+(function(){
+	var div = document.createElement("div");
+
+	div.innerHTML = "<div class='test e'></div><div class='test'></div>";
+
+	// Opera can't find a second classname (in 9.6)
+	// Also, make sure that getElementsByClassName actually exists
+	if ( !div.getElementsByClassName || div.getElementsByClassName("e").length === 0 ) {
+		return;
+	}
+
+	// Safari caches class attributes, doesn't catch changes (in 3.2)
+	div.lastChild.className = "e";
+
+	if ( div.getElementsByClassName("e").length === 1 ) {
+		return;
+	}
+
+	Expr.order.splice(1, 0, "CLASS");
+	Expr.find.CLASS = function( match, context, isXML ) {
+		if ( typeof context.getElementsByClassName !== "undefined" && !isXML ) {
+			return context.getElementsByClassName(match[1]);
+		}
+	};
+
+	// release memory in IE
+	div = null;
+})();
+
+function dirNodeCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) {
+	for ( var i = 0, l = checkSet.length; i < l; i++ ) {
+		var elem = checkSet[i];
+
+		if ( elem ) {
+			var match = false;
+
+			elem = elem[dir];
+
+			while ( elem ) {
+				if ( elem[ expando ] === doneName ) {
+					match = checkSet[elem.sizset];
+					break;
+				}
+
+				if ( elem.nodeType === 1 && !isXML ){
+					elem[ expando ] = doneName;
+					elem.sizset = i;
+				}
+
+				if ( elem.nodeName.toLowerCase() === cur ) {
+					match = elem;
+					break;
+				}
+
+				elem = elem[dir];
+			}
+
+			checkSet[i] = match;
+		}
+	}
+}
+
+function dirCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) {
+	for ( var i = 0, l = checkSet.length; i < l; i++ ) {
+		var elem = checkSet[i];
+
+		if ( elem ) {
+			var match = false;
+
+			elem = elem[dir];
+
+			while ( elem ) {
+				if ( elem[ expando ] === doneName ) {
+					match = checkSet[elem.sizset];
+					break;
+				}
+
+				if ( elem.nodeType === 1 ) {
+					if ( !isXML ) {
+						elem[ expando ] = doneName;
+						elem.sizset = i;
+					}
+
+					if ( typeof cur !== "string" ) {
+						if ( elem === cur ) {
+							match = true;
+							break;
+						}
+
+					} else if ( Sizzle.filter( cur, [elem] ).length > 0 ) {
+						match = elem;
+						break;
+					}
+				}
+
+				elem = elem[dir];
+			}
+
+			checkSet[i] = match;
+		}
+	}
+}
+
+if ( document.documentElement.contains ) {
+	Sizzle.contains = function( a, b ) {
+		return a !== b && (a.contains ? a.contains(b) : true);
+	};
+
+} else if ( document.documentElement.compareDocumentPosition ) {
+	Sizzle.contains = function( a, b ) {
+		return !!(a.compareDocumentPosition(b) & 16);
+	};
+
+} else {
+	Sizzle.contains = function() {
+		return false;
+	};
+}
+
+Sizzle.isXML = function( elem ) {
+	// documentElement is verified for cases where it doesn't yet exist
+	// (such as loading iframes in IE - #4833)
+	var documentElement = (elem ? elem.ownerDocument || elem : 0).documentElement;
+
+	return documentElement ? documentElement.nodeName !== "HTML" : false;
+};
+
+var posProcess = function( selector, context, seed ) {
+	var match,
+		tmpSet = [],
+		later = "",
+		root = context.nodeType ? [context] : context;
+
+	// Position selectors must be done after the filter
+	// And so must :not(positional) so we move all PSEUDOs to the end
+	while ( (match = Expr.match.PSEUDO.exec( selector )) ) {
+		later += match[0];
+		selector = selector.replace( Expr.match.PSEUDO, "" );
+	}
+
+	selector = Expr.relative[selector] ? selector + "*" : selector;
+
+	for ( var i = 0, l = root.length; i < l; i++ ) {
+		Sizzle( selector, root[i], tmpSet, seed );
+	}
+
+	return Sizzle.filter( later, tmpSet );
+};
+
+// EXPOSE
+// Override sizzle attribute retrieval
+Sizzle.attr = jQuery.attr;
+Sizzle.selectors.attrMap = {};
+jQuery.find = Sizzle;
+jQuery.expr = Sizzle.selectors;
+jQuery.expr[":"] = jQuery.expr.filters;
+jQuery.unique = Sizzle.uniqueSort;
+jQuery.text = Sizzle.getText;
+jQuery.isXMLDoc = Sizzle.isXML;
+jQuery.contains = Sizzle.contains;
+
+
+})();
+
+
+var runtil = /Until$/,
+	rparentsprev = /^(?:parents|prevUntil|prevAll)/,
+	// Note: This RegExp should be improved, or likely pulled from Sizzle
+	rmultiselector = /,/,
+	isSimple = /^.[^:#\[\.,]*$/,
+	slice = Array.prototype.slice,
+	POS = jQuery.expr.match.POS,
+	// methods guaranteed to produce a unique set when starting from a unique set
+	guaranteedUnique = {
+		children: true,
+		contents: true,
+		next: true,
+		prev: true
+	};
+
+jQuery.fn.extend({
+	find: function( selector ) {
+		var self = this,
+			i, l;
+
+		if ( typeof selector !== "string" ) {
+			return jQuery( selector ).filter(function() {
+				for ( i = 0, l = self.length; i < l; i++ ) {
+					if ( jQuery.contains( self[ i ], this ) ) {
+						return true;
+					}
+				}
+			});
+		}
+
+		var ret = this.pushStack( "", "find", selector ),
+			length, n, r;
+
+		for ( i = 0, l = this.length; i < l; i++ ) {
+			length = ret.length;
+			jQuery.find( selector, this[i], ret );
+
+			if ( i > 0 ) {
+				// Make sure that the results are unique
+				for ( n = length; n < ret.length; n++ ) {
+					for ( r = 0; r < length; r++ ) {
+						if ( ret[r] === ret[n] ) {
+							ret.splice(n--, 1);
+							break;
+						}
+					}
+				}
+			}
+		}
+
+		return ret;
+	},
+
+	has: function( target ) {
+		var targets = jQuery( target );
+		return this.filter(function() {
+			for ( var i = 0, l = targets.length; i < l; i++ ) {
+				if ( jQuery.contains( this, targets[i] ) ) {
+					return true;
+				}
+			}
+		});
+	},
+
+	not: function( selector ) {
+		return this.pushStack( winnow(this, selector, false), "not", selector);
+	},
+
+	filter: function( selector ) {
+		return this.pushStack( winnow(this, selector, true), "filter", selector );
+	},
+
+	is: function( selector ) {
+		return !!selector && (
+			typeof selector === "string" ?
+				// If this is a positional selector, check membership in the returned set
+				// so $("p:first").is("p:last") won't return true for a doc with two "p".
+				POS.test( selector ) ?
+					jQuery( selector, this.context ).index( this[0] ) >= 0 :
+					jQuery.filter( selector, this ).length > 0 :
+				this.filter( selector ).length > 0 );
+	},
+
+	closest: function( selectors, context ) {
+		var ret = [], i, l, cur = this[0];
+
+		// Array (deprecated as of jQuery 1.7)
+		if ( jQuery.isArray( selectors ) ) {
+			var level = 1;
+
+			while ( cur && cur.ownerDocument && cur !== context ) {
+				for ( i = 0; i < selectors.length; i++ ) {
+
+					if ( jQuery( cur ).is( selectors[ i ] ) ) {
+						ret.push({ selector: selectors[ i ], elem: cur, level: level });
+					}
+				}
+
+				cur = cur.parentNode;
+				level++;
+			}
+
+			return ret;
+		}
+
+		// String
+		var pos = POS.test( selectors ) || typeof selectors !== "string" ?
+				jQuery( selectors, context || this.context ) :
+				0;
+
+		for ( i = 0, l = this.length; i < l; i++ ) {
+			cur = this[i];
+
+			while ( cur ) {
+				if ( pos ? pos.index(cur) > -1 : jQuery.find.matchesSelector(cur, selectors) ) {
+					ret.push( cur );
+					break;
+
+				} else {
+					cur = cur.parentNode;
+					if ( !cur || !cur.ownerDocument || cur === context || cur.nodeType === 11 ) {
+						break;
+					}
+				}
+			}
+		}
+
+		ret = ret.length > 1 ? jQuery.unique( ret ) : ret;
+
+		return this.pushStack( ret, "closest", selectors );
+	},
+
+	// Determine the position of an element within
+	// the matched set of elements
+	index: function( elem ) {
+
+		// No argument, return index in parent
+		if ( !elem ) {
+			return ( this[0] && this[0].parentNode ) ? this.prevAll().length : -1;
+		}
+
+		// index in selector
+		if ( typeof elem === "string" ) {
+			return jQuery.inArray( this[0], jQuery( elem ) );
+		}
+
+		// Locate the position of the desired element
+		return jQuery.inArray(
+			// If it receives a jQuery object, the first element is used
+			elem.jquery ? elem[0] : elem, this );
+	},
+
+	add: function( selector, context ) {
+		var set = typeof selector === "string" ?
+				jQuery( selector, context ) :
+				jQuery.makeArray( selector && selector.nodeType ? [ selector ] : selector ),
+			all = jQuery.merge( this.get(), set );
+
+		return this.pushStack( isDisconnected( set[0] ) || isDisconnected( all[0] ) ?
+			all :
+			jQuery.unique( all ) );
+	},
+
+	andSelf: function() {
+		return this.add( this.prevObject );
+	}
+});
+
+// A painfully simple check to see if an element is disconnected
+// from a document (should be improved, where feasible).
+function isDisconnected( node ) {
+	return !node || !node.parentNode || node.parentNode.nodeType === 11;
+}
+
+jQuery.each({
+	parent: function( elem ) {
+		var parent = elem.parentNode;
+		return parent && parent.nodeType !== 11 ? parent : null;
+	},
+	parents: function( elem ) {
+		return jQuery.dir( elem, "parentNode" );
+	},
+	parentsUntil: function( elem, i, until ) {
+		return jQuery.dir( elem, "parentNode", until );
+	},
+	next: function( elem ) {
+		return jQuery.nth( elem, 2, "nextSibling" );
+	},
+	prev: function( elem ) {
+		return jQuery.nth( elem, 2, "previousSibling" );
+	},
+	nextAll: function( elem ) {
+		return jQuery.dir( elem, "nextSibling" );
+	},
+	prevAll: function( elem ) {
+		return jQuery.dir( elem, "previousSibling" );
+	},
+	nextUntil: function( elem, i, until ) {
+		return jQuery.dir( elem, "nextSibling", until );
+	},
+	prevUntil: function( elem, i, until ) {
+		return jQuery.dir( elem, "previousSibling", until );
+	},
+	siblings: function( elem ) {
+		return jQuery.sibling( elem.parentNode.firstChild, elem );
+	},
+	children: function( elem ) {
+		return jQuery.sibling( elem.firstChild );
+	},
+	contents: function( elem ) {
+		return jQuery.nodeName( elem, "iframe" ) ?
+			elem.contentDocument || elem.contentWindow.document :
+			jQuery.makeArray( elem.childNodes );
+	}
+}, function( name, fn ) {
+	jQuery.fn[ name ] = function( until, selector ) {
+		var ret = jQuery.map( this, fn, until );
+
+		if ( !runtil.test( name ) ) {
+			selector = until;
+		}
+
+		if ( selector && typeof selector === "string" ) {
+			ret = jQuery.filter( selector, ret );
+		}
+
+		ret = this.length > 1 && !guaranteedUnique[ name ] ? jQuery.unique( ret ) : ret;
+
+		if ( (this.length > 1 || rmultiselector.test( selector )) && rparentsprev.test( name ) ) {
+			ret = ret.reverse();
+		}
+
+		return this.pushStack( ret, name, slice.call( arguments ).join(",") );
+	};
+});
+
+jQuery.extend({
+	filter: function( expr, elems, not ) {
+		if ( not ) {
+			expr = ":not(" + expr + ")";
+		}
+
+		return elems.length === 1 ?
+			jQuery.find.matchesSelector(elems[0], expr) ? [ elems[0] ] : [] :
+			jQuery.find.matches(expr, elems);
+	},
+
+	dir: function( elem, dir, until ) {
+		var matched = [],
+			cur = elem[ dir ];
+
+		while ( cur && cur.nodeType !== 9 && (until === undefined || cur.nodeType !== 1 || !jQuery( cur ).is( until )) ) {
+			if ( cur.nodeType === 1 ) {
+				matched.push( cur );
+			}
+			cur = cur[dir];
+		}
+		return matched;
+	},
+
+	nth: function( cur, result, dir, elem ) {
+		result = result || 1;
+		var num = 0;
+
+		for ( ; cur; cur = cur[dir] ) {
+			if ( cur.nodeType === 1 && ++num === result ) {
+				break;
+			}
+		}
+
+		return cur;
+	},
+
+	sibling: function( n, elem ) {
+		var r = [];
+
+		for ( ; n; n = n.nextSibling ) {
+			if ( n.nodeType === 1 && n !== elem ) {
+				r.push( n );
+			}
+		}
+
+		return r;
+	}
+});
+
+// Implement the identical functionality for filter and not
+function winnow( elements, qualifier, keep ) {
+
+	// Can't pass null or undefined to indexOf in Firefox 4
+	// Set to 0 to skip string check
+	qualifier = qualifier || 0;
+
+	if ( jQuery.isFunction( qualifier ) ) {
+		return jQuery.grep(elements, function( elem, i ) {
+			var retVal = !!qualifier.call( elem, i, elem );
+			return retVal === keep;
+		});
+
+	} else if ( qualifier.nodeType ) {
+		return jQuery.grep(elements, function( elem, i ) {
+			return ( elem === qualifier ) === keep;
+		});
+
+	} else if ( typeof qualifier === "string" ) {
+		var filtered = jQuery.grep(elements, function( elem ) {
+			return elem.nodeType === 1;
+		});
+
+		if ( isSimple.test( qualifier ) ) {
+			return jQuery.filter(qualifier, filtered, !keep);
+		} else {
+			qualifier = jQuery.filter( qualifier, filtered );
+		}
+	}
+
+	return jQuery.grep(elements, function( elem, i ) {
+		return ( jQuery.inArray( elem, qualifier ) >= 0 ) === keep;
+	});
+}
+
+
+
+
+function createSafeFragment( document ) {
+	var list = nodeNames.split( "|" ),
+	safeFrag = document.createDocumentFragment();
+
+	if ( safeFrag.createElement ) {
+		while ( list.length ) {
+			safeFrag.createElement(
+				list.pop()
+			);
+		}
+	}
+	return safeFrag;
+}
+
+var nodeNames = "abbr|article|aside|audio|canvas|datalist|details|figcaption|figure|footer|" +
+		"header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",
+	rinlinejQuery = / jQuery\d+="(?:\d+|null)"/g,
+	rleadingWhitespace = /^\s+/,
+	rxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig,
+	rtagName = /<([\w:]+)/,
+	rtbody = /<tbody/i,
+	rhtml = /<|&#?\w+;/,
+	rnoInnerhtml = /<(?:script|style)/i,
+	rnocache = /<(?:script|object|embed|option|style)/i,
+	rnoshimcache = new RegExp("<(?:" + nodeNames + ")", "i"),
+	// checked="checked" or checked
+	rchecked = /checked\s*(?:[^=]|=\s*.checked.)/i,
+	rscriptType = /\/(java|ecma)script/i,
+	rcleanScript = /^\s*<!(?:\[CDATA\[|\-\-)/,
+	wrapMap = {
+		option: [ 1, "<select multiple='multiple'>", "</select>" ],
+		legend: [ 1, "<fieldset>", "</fieldset>" ],
+		thead: [ 1, "<table>", "</table>" ],
+		tr: [ 2, "<table><tbody>", "</tbody></table>" ],
+		td: [ 3, "<table><tbody><tr>", "</tr></tbody></table>" ],
+		col: [ 2, "<table><tbody></tbody><colgroup>", "</colgroup></table>" ],
+		area: [ 1, "<map>", "</map>" ],
+		_default: [ 0, "", "" ]
+	},
+	safeFragment = createSafeFragment( document );
+
+wrapMap.optgroup = wrapMap.option;
+wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;
+wrapMap.th = wrapMap.td;
+
+// IE can't serialize <link> and <script> tags normally
+if ( !jQuery.support.htmlSerialize ) {
+	wrapMap._default = [ 1, "div<div>", "</div>" ];
+}
+
+jQuery.fn.extend({
+	text: function( text ) {
+		if ( jQuery.isFunction(text) ) {
+			return this.each(function(i) {
+				var self = jQuery( this );
+
+				self.text( text.call(this, i, self.text()) );
+			});
+		}
+
+		if ( typeof text !== "object" && text !== undefined ) {
+			return this.empty().append( (this[0] && this[0].ownerDocument || document).createTextNode( text ) );
+		}
+
+		return jQuery.text( this );
+	},
+
+	wrapAll: function( html ) {
+		if ( jQuery.isFunction( html ) ) {
+			return this.each(function(i) {
+				jQuery(this).wrapAll( html.call(this, i) );
+			});
+		}
+
+		if ( this[0] ) {
+			// The elements to wrap the target around
+			var wrap = jQuery( html, this[0].ownerDocument ).eq(0).clone(true);
+
+			if ( this[0].parentNode ) {
+				wrap.insertBefore( this[0] );
+			}
+
+			wrap.map(function() {
+				var elem = this;
+
+				while ( elem.firstChild && elem.firstChild.nodeType === 1 ) {
+					elem = elem.firstChild;
+				}
+
+				return elem;
+			}).append( this );
+		}
+
+		return this;
+	},
+
+	wrapInner: function( html ) {
+		if ( jQuery.isFunction( html ) ) {
+			return this.each(function(i) {
+				jQuery(this).wrapInner( html.call(this, i) );
+			});
+		}
+
+		return this.each(function() {
+			var self = jQuery( this ),
+				contents = self.contents();
+
+			if ( contents.length ) {
+				contents.wrapAll( html );
+
+			} else {
+				self.append( html );
+			}
+		});
+	},
+
+	wrap: function( html ) {
+		var isFunction = jQuery.isFunction( html );
+
+		return this.each(function(i) {
+			jQuery( this ).wrapAll( isFunction ? html.call(this, i) : html );
+		});
+	},
+
+	unwrap: function() {
+		return this.parent().each(function() {
+			if ( !jQuery.nodeName( this, "body" ) ) {
+				jQuery( this ).replaceWith( this.childNodes );
+			}
+		}).end();
+	},
+
+	append: function() {
+		return this.domManip(arguments, true, function( elem ) {
+			if ( this.nodeType === 1 ) {
+				this.appendChild( elem );
+			}
+		});
+	},
+
+	prepend: function() {
+		return this.domManip(arguments, true, function( elem ) {
+			if ( this.nodeType === 1 ) {
+				this.insertBefore( elem, this.firstChild );
+			}
+		});
+	},
+
+	before: function() {
+		if ( this[0] && this[0].parentNode ) {
+			return this.domManip(arguments, false, function( elem ) {
+				this.parentNode.insertBefore( elem, this );
+			});
+		} else if ( arguments.length ) {
+			var set = jQuery.clean( arguments );
+			set.push.apply( set, this.toArray() );
+			return this.pushStack( set, "before", arguments );
+		}
+	},
+
+	after: function() {
+		if ( this[0] && this[0].parentNode ) {
+			return this.domManip(arguments, false, function( elem ) {
+				this.parentNode.insertBefore( elem, this.nextSibling );
+			});
+		} else if ( arguments.length ) {
+			var set = this.pushStack( this, "after", arguments );
+			set.push.apply( set, jQuery.clean(arguments) );
+			return set;
+		}
+	},
+
+	// keepData is for internal use only--do not document
+	remove: function( selector, keepData ) {
+		for ( var i = 0, elem; (elem = this[i]) != null; i++ ) {
+			if ( !selector || jQuery.filter( selector, [ elem ] ).length ) {
+				if ( !keepData && elem.nodeType === 1 ) {
+					jQuery.cleanData( elem.getElementsByTagName("*") );
+					jQuery.cleanData( [ elem ] );
+				}
+
+				if ( elem.parentNode ) {
+					elem.parentNode.removeChild( elem );
+				}
+			}
+		}
+
+		return this;
+	},
+
+	empty: function() {
+		for ( var i = 0, elem; (elem = this[i]) != null; i++ ) {
+			// Remove element nodes and prevent memory leaks
+			if ( elem.nodeType === 1 ) {
+				jQuery.cleanData( elem.getElementsByTagName("*") );
+			}
+
+			// Remove any remaining nodes
+			while ( elem.firstChild ) {
+				elem.removeChild( elem.firstChild );
+			}
+		}
+
+		return this;
+	},
+
+	clone: function( dataAndEvents, deepDataAndEvents ) {
+		dataAndEvents = dataAndEvents == null ? false : dataAndEvents;
+		deepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents;
+
+		return this.map( function () {
+			return jQuery.clone( this, dataAndEvents, deepDataAndEvents );
+		});
+	},
+
+	html: function( value ) {
+		if ( value === undefined ) {
+			return this[0] && this[0].nodeType === 1 ?
+				this[0].innerHTML.replace(rinlinejQuery, "") :
+				null;
+
+		// See if we can take a shortcut and just use innerHTML
+		} else if ( typeof value === "string" && !rnoInnerhtml.test( value ) &&
+			(jQuery.support.leadingWhitespace || !rleadingWhitespace.test( value )) &&
+			!wrapMap[ (rtagName.exec( value ) || ["", ""])[1].toLowerCase() ] ) {
+
+			value = value.replace(rxhtmlTag, "<$1></$2>");
+
+			try {
+				for ( var i = 0, l = this.length; i < l; i++ ) {
+					// Remove element nodes and prevent memory leaks
+					if ( this[i].nodeType === 1 ) {
+						jQuery.cleanData( this[i].getElementsByTagName("*") );
+						this[i].innerHTML = value;
+					}
+				}
+
+			// If using innerHTML throws an exception, use the fallback method
+			} catch(e) {
+				this.empty().append( value );
+			}
+
+		} else if ( jQuery.isFunction( value ) ) {
+			this.each(function(i){
+				var self = jQuery( this );
+
+				self.html( value.call(this, i, self.html()) );
+			});
+
+		} else {
+			this.empty().append( value );
+		}
+
+		return this;
+	},
+
+	replaceWith: function( value ) {
+		if ( this[0] && this[0].parentNode ) {
+			// Make sure that the elements are removed from the DOM before they are inserted
+			// this can help fix replacing a parent with child elements
+			if ( jQuery.isFunction( value ) ) {
+				return this.each(function(i) {
+					var self = jQuery(this), old = self.html();
+					self.replaceWith( value.call( this, i, old ) );
+				});
+			}
+
+			if ( typeof value !== "string" ) {
+				value = jQuery( value ).detach();
+			}
+
+			return this.each(function() {
+				var next = this.nextSibling,
+					parent = this.parentNode;
+
+				jQuery( this ).remove();
+
+				if ( next ) {
+					jQuery(next).before( value );
+				} else {
+					jQuery(parent).append( value );
+				}
+			});
+		} else {
+			return this.length ?
+				this.pushStack( jQuery(jQuery.isFunction(value) ? value() : value), "replaceWith", value ) :
+				this;
+		}
+	},
+
+	detach: function( selector ) {
+		return this.remove( selector, true );
+	},
+
+	domManip: function( args, table, callback ) {
+		var results, first, fragment, parent,
+			value = args[0],
+			scripts = [];
+
+		// We can't cloneNode fragments that contain checked, in WebKit
+		if ( !jQuery.support.checkClone && arguments.length === 3 && typeof value === "string" && rchecked.test( value ) ) {
+			return this.each(function() {
+				jQuery(this).domManip( args, table, callback, true );
+			});
+		}
+
+		if ( jQuery.isFunction(value) ) {
+			return this.each(function(i) {
+				var self = jQuery(this);
+				args[0] = value.call(this, i, table ? self.html() : undefined);
+				self.domManip( args, table, callback );
+			});
+		}
+
+		if ( this[0] ) {
+			parent = value && value.parentNode;
+
+			// If we're in a fragment, just use that instead of building a new one
+			if ( jQuery.support.parentNode && parent && parent.nodeType === 11 && parent.childNodes.length === this.length ) {
+				results = { fragment: parent };
+
+			} else {
+				results = jQuery.buildFragment( args, this, scripts );
+			}
+
+			fragment = results.fragment;
+
+			if ( fragment.childNodes.length === 1 ) {
+				first = fragment = fragment.firstChild;
+			} else {
+				first = fragment.firstChild;
+			}
+
+			if ( first ) {
+				table = table && jQuery.nodeName( first, "tr" );
+
+				for ( var i = 0, l = this.length, lastIndex = l - 1; i < l; i++ ) {
+					callback.call(
+						table ?
+							root(this[i], first) :
+							this[i],
+						// Make sure that we do not leak memory by inadvertently discarding
+						// the original fragment (which might have attached data) instead of
+						// using it; in addition, use the original fragment object for the last
+						// item instead of first because it can end up being emptied incorrectly
+						// in certain situations (Bug #8070).
+						// Fragments from the fragment cache must always be cloned and never used
+						// in place.
+						results.cacheable || ( l > 1 && i < lastIndex ) ?
+							jQuery.clone( fragment, true, true ) :
+							fragment
+					);
+				}
+			}
+
+			if ( scripts.length ) {
+				jQuery.each( scripts, evalScript );
+			}
+		}
+
+		return this;
+	}
+});
+
+function root( elem, cur ) {
+	return jQuery.nodeName(elem, "table") ?
+		(elem.getElementsByTagName("tbody")[0] ||
+		elem.appendChild(elem.ownerDocument.createElement("tbody"))) :
+		elem;
+}
+
+function cloneCopyEvent( src, dest ) {
+
+	if ( dest.nodeType !== 1 || !jQuery.hasData( src ) ) {
+		return;
+	}
+
+	var type, i, l,
+		oldData = jQuery._data( src ),
+		curData = jQuery._data( dest, oldData ),
+		events = oldData.events;
+
+	if ( events ) {
+		delete curData.handle;
+		curData.events = {};
+
+		for ( type in events ) {
+			for ( i = 0, l = events[ type ].length; i < l; i++ ) {
+				jQuery.event.add( dest, type + ( events[ type ][ i ].namespace ? "." : "" ) + events[ type ][ i ].namespace, events[ type ][ i ], events[ type ][ i ].data );
+			}
+		}
+	}
+
+	// make the cloned public data object a copy from the original
+	if ( curData.data ) {
+		curData.data = jQuery.extend( {}, curData.data );
+	}
+}
+
+function cloneFixAttributes( src, dest ) {
+	var nodeName;
+
+	// We do not need to do anything for non-Elements
+	if ( dest.nodeType !== 1 ) {
+		return;
+	}
+
+	// clearAttributes removes the attributes, which we don't want,
+	// but also removes the attachEvent events, which we *do* want
+	if ( dest.clearAttributes ) {
+		dest.clearAttributes();
+	}
+
+	// mergeAttributes, in contrast, only merges back on the
+	// original attributes, not the events
+	if ( dest.mergeAttributes ) {
+		dest.mergeAttributes( src );
+	}
+
+	nodeName = dest.nodeName.toLowerCase();
+
+	// IE6-8 fail to clone children inside object elements that use
+	// the proprietary classid attribute value (rather than the type
+	// attribute) to identify the type of content to display
+	if ( nodeName === "object" ) {
+		dest.outerHTML = src.outerHTML;
+
+	} else if ( nodeName === "input" && (src.type === "checkbox" || src.type === "radio") ) {
+		// IE6-8 fails to persist the checked state of a cloned checkbox
+		// or radio button. Worse, IE6-7 fail to give the cloned element
+		// a checked appearance if the defaultChecked value isn't also set
+		if ( src.checked ) {
+			dest.defaultChecked = dest.checked = src.checked;
+		}
+
+		// IE6-7 get confused and end up setting the value of a cloned
+		// checkbox/radio button to an empty string instead of "on"
+		if ( dest.value !== src.value ) {
+			dest.value = src.value;
+		}
+
+	// IE6-8 fails to return the selected option to the default selected
+	// state when cloning options
+	} else if ( nodeName === "option" ) {
+		dest.selected = src.defaultSelected;
+
+	// IE6-8 fails to set the defaultValue to the correct value when
+	// cloning other types of input fields
+	} else if ( nodeName === "input" || nodeName === "textarea" ) {
+		dest.defaultValue = src.defaultValue;
+	}
+
+	// Event data gets referenced instead of copied if the expando
+	// gets copied too
+	dest.removeAttribute( jQuery.expando );
+}
+
+jQuery.buildFragment = function( args, nodes, scripts ) {
+	var fragment, cacheable, cacheresults, doc,
+	first = args[ 0 ];
+
+	// nodes may contain either an explicit document object,
+	// a jQuery collection or context object.
+	// If nodes[0] contains a valid object to assign to doc
+	if ( nodes && nodes[0] ) {
+		doc = nodes[0].ownerDocument || nodes[0];
+	}
+
+	// Ensure that an attr object doesn't incorrectly stand in as a document object
+	// Chrome and Firefox seem to allow this to occur and will throw exception
+	// Fixes #8950
+	if ( !doc.createDocumentFragment ) {
+		doc = document;
+	}
+
+	// Only cache "small" (1/2 KB) HTML strings that are associated with the main document
+	// Cloning options loses the selected state, so don't cache them
+	// IE 6 doesn't like it when you put <object> or <embed> elements in a fragment
+	// Also, WebKit does not clone 'checked' attributes on cloneNode, so don't cache
+	// Lastly, IE6,7,8 will not correctly reuse cached fragments that were created from unknown elems #10501
+	if ( args.length === 1 && typeof first === "string" && first.length < 512 && doc === document &&
+		first.charAt(0) === "<" && !rnocache.test( first ) &&
+		(jQuery.support.checkClone || !rchecked.test( first )) &&
+		(jQuery.support.html5Clone || !rnoshimcache.test( first )) ) {
+
+		cacheable = true;
+
+		cacheresults = jQuery.fragments[ first ];
+		if ( cacheresults && cacheresults !== 1 ) {
+			fragment = cacheresults;
+		}
+	}
+
+	if ( !fragment ) {
+		fragment = doc.createDocumentFragment();
+		jQuery.clean( args, doc, fragment, scripts );
+	}
+
+	if ( cacheable ) {
+		jQuery.fragments[ first ] = cacheresults ? fragment : 1;
+	}
+
+	return { fragment: fragment, cacheable: cacheable };
+};
+
+jQuery.fragments = {};
+
+jQuery.each({
+	appendTo: "append",
+	prependTo: "prepend",
+	insertBefore: "before",
+	insertAfter: "after",
+	replaceAll: "replaceWith"
+}, function( name, original ) {
+	jQuery.fn[ name ] = function( selector ) {
+		var ret = [],
+			insert = jQuery( selector ),
+			parent = this.length === 1 && this[0].parentNode;
+
+		if ( parent && parent.nodeType === 11 && parent.childNodes.length === 1 && insert.length === 1 ) {
+			insert[ original ]( this[0] );
+			return this;
+
+		} else {
+			for ( var i = 0, l = insert.length; i < l; i++ ) {
+				var elems = ( i > 0 ? this.clone(true) : this ).get();
+				jQuery( insert[i] )[ original ]( elems );
+				ret = ret.concat( elems );
+			}
+
+			return this.pushStack( ret, name, insert.selector );
+		}
+	};
+});
+
+function getAll( elem ) {
+	if ( typeof elem.getElementsByTagName !== "undefined" ) {
+		return elem.getElementsByTagName( "*" );
+
+	} else if ( typeof elem.querySelectorAll !== "undefined" ) {
+		return elem.querySelectorAll( "*" );
+
+	} else {
+		return [];
+	}
+}
+
+// Used in clean, fixes the defaultChecked property
+function fixDefaultChecked( elem ) {
+	if ( elem.type === "checkbox" || elem.type === "radio" ) {
+		elem.defaultChecked = elem.checked;
+	}
+}
+// Finds all inputs and passes them to fixDefaultChecked
+function findInputs( elem ) {
+	var nodeName = ( elem.nodeName || "" ).toLowerCase();
+	if ( nodeName === "input" ) {
+		fixDefaultChecked( elem );
+	// Skip scripts, get other children
+	} else if ( nodeName !== "script" && typeof elem.getElementsByTagName !== "undefined" ) {
+		jQuery.grep( elem.getElementsByTagName("input"), fixDefaultChecked );
+	}
+}
+
+// Derived From: http://www.iecss.com/shimprove/javascript/shimprove.1-0-1.js
+function shimCloneNode( elem ) {
+	var div = document.createElement( "div" );
+	safeFragment.appendChild( div );
+
+	div.innerHTML = elem.outerHTML;
+	return div.firstChild;
+}
+
+jQuery.extend({
+	clone: function( elem, dataAndEvents, deepDataAndEvents ) {
+		var srcElements,
+			destElements,
+			i,
+			// IE<=8 does not properly clone detached, unknown element nodes
+			clone = jQuery.support.html5Clone || !rnoshimcache.test( "<" + elem.nodeName ) ?
+				elem.cloneNode( true ) :
+				shimCloneNode( elem );
+
+		if ( (!jQuery.support.noCloneEvent || !jQuery.support.noCloneChecked) &&
+				(elem.nodeType === 1 || elem.nodeType === 11) && !jQuery.isXMLDoc(elem) ) {
+			// IE copies events bound via attachEvent when using cloneNode.
+			// Calling detachEvent on the clone will also remove the events
+			// from the original. In order to get around this, we use some
+			// proprietary methods to clear the events. Thanks to MooTools
+			// guys for this hotness.
+
+			cloneFixAttributes( elem, clone );
+
+			// Using Sizzle here is crazy slow, so we use getElementsByTagName instead
+			srcElements = getAll( elem );
+			destElements = getAll( clone );
+
+			// Weird iteration because IE will replace the length property
+			// with an element if you are cloning the body and one of the
+			// elements on the page has a name or id of "length"
+			for ( i = 0; srcElements[i]; ++i ) {
+				// Ensure that the destination node is not null; Fixes #9587
+				if ( destElements[i] ) {
+					cloneFixAttributes( srcElements[i], destElements[i] );
+				}
+			}
+		}
+
+		// Copy the events from the original to the clone
+		if ( dataAndEvents ) {
+			cloneCopyEvent( elem, clone );
+
+			if ( deepDataAndEvents ) {
+				srcElements = getAll( elem );
+				destElements = getAll( clone );
+
+				for ( i = 0; srcElements[i]; ++i ) {
+					cloneCopyEvent( srcElements[i], destElements[i] );
+				}
+			}
+		}
+
+		srcElements = destElements = null;
+
+		// Return the cloned set
+		return clone;
+	},
+
+	clean: function( elems, context, fragment, scripts ) {
+		var checkScriptType;
+
+		context = context || document;
+
+		// !context.createElement fails in IE with an error but returns typeof 'object'
+		if ( typeof context.createElement === "undefined" ) {
+			context = context.ownerDocument || context[0] && context[0].ownerDocument || document;
+		}
+
+		var ret = [], j;
+
+		for ( var i = 0, elem; (elem = elems[i]) != null; i++ ) {
+			if ( typeof elem === "number" ) {
+				elem += "";
+			}
+
+			if ( !elem ) {
+				continue;
+			}
+
+			// Convert html string into DOM nodes
+			if ( typeof elem === "string" ) {
+				if ( !rhtml.test( elem ) ) {
+					elem = context.createTextNode( elem );
+				} else {
+					// Fix "XHTML"-style tags in all browsers
+					elem = elem.replace(rxhtmlTag, "<$1></$2>");
+
+					// Trim whitespace, otherwise indexOf won't work as expected
+					var tag = ( rtagName.exec( elem ) || ["", ""] )[1].toLowerCase(),
+						wrap = wrapMap[ tag ] || wrapMap._default,
+						depth = wrap[0],
+						div = context.createElement("div");
+
+					// Append wrapper element to unknown element safe doc fragment
+					if ( context === document ) {
+						// Use the fragment we've already created for this document
+						safeFragment.appendChild( div );
+					} else {
+						// Use a fragment created with the owner document
+						createSafeFragment( context ).appendChild( div );
+					}
+
+					// Go to html and back, then peel off extra wrappers
+					div.innerHTML = wrap[1] + elem + wrap[2];
+
+					// Move to the right depth
+					while ( depth-- ) {
+						div = div.lastChild;
+					}
+
+					// Remove IE's autoinserted <tbody> from table fragments
+					if ( !jQuery.support.tbody ) {
+
+						// String was a <table>, *may* have spurious <tbody>
+						var hasBody = rtbody.test(elem),
+							tbody = tag === "table" && !hasBody ?
+								div.firstChild && div.firstChild.childNodes :
+
+								// String was a bare <thead> or <tfoot>
+								wrap[1] === "<table>" && !hasBody ?
+									div.childNodes :
+									[];
+
+						for ( j = tbody.length - 1; j >= 0 ; --j ) {
+							if ( jQuery.nodeName( tbody[ j ], "tbody" ) && !tbody[ j ].childNodes.length ) {
+								tbody[ j ].parentNode.removeChild( tbody[ j ] );
+							}
+						}
+					}
+
+					// IE completely kills leading whitespace when innerHTML is used
+					if ( !jQuery.support.leadingWhitespace && rleadingWhitespace.test( elem ) ) {
+						div.insertBefore( context.createTextNode( rleadingWhitespace.exec(elem)[0] ), div.firstChild );
+					}
+
+					elem = div.childNodes;
+				}
+			}
+
+			// Resets defaultChecked for any radios and checkboxes
+			// about to be appended to the DOM in IE 6/7 (#8060)
+			var len;
+			if ( !jQuery.support.appendChecked ) {
+				if ( elem[0] && typeof (len = elem.length) === "number" ) {
+					for ( j = 0; j < len; j++ ) {
+						findInputs( elem[j] );
+					}
+				} else {
+					findInputs( elem );
+				}
+			}
+
+			if ( elem.nodeType ) {
+				ret.push( elem );
+			} else {
+				ret = jQuery.merge( ret, elem );
+			}
+		}
+
+		if ( fragment ) {
+			checkScriptType = function( elem ) {
+				return !elem.type || rscriptType.test( elem.type );
+			};
+			for ( i = 0; ret[i]; i++ ) {
+				if ( scripts && jQuery.nodeName( ret[i], "script" ) && (!ret[i].type || ret[i].type.toLowerCase() === "text/javascript") ) {
+					scripts.push( ret[i].parentNode ? ret[i].parentNode.removeChild( ret[i] ) : ret[i] );
+
+				} else {
+					if ( ret[i].nodeType === 1 ) {
+						var jsTags = jQuery.grep( ret[i].getElementsByTagName( "script" ), checkScriptType );
+
+						ret.splice.apply( ret, [i + 1, 0].concat( jsTags ) );
+					}
+					fragment.appendChild( ret[i] );
+				}
+			}
+		}
+
+		return ret;
+	},
+
+	cleanData: function( elems ) {
+		var data, id,
+			cache = jQuery.cache,
+			special = jQuery.event.special,
+			deleteExpando = jQuery.support.deleteExpando;
+
+		for ( var i = 0, elem; (elem = elems[i]) != null; i++ ) {
+			if ( elem.nodeName && jQuery.noData[elem.nodeName.toLowerCase()] ) {
+				continue;
+			}
+
+			id = elem[ jQuery.expando ];
+
+			if ( id ) {
+				data = cache[ id ];
+
+				if ( data && data.events ) {
+					for ( var type in data.events ) {
+						if ( special[ type ] ) {
+							jQuery.event.remove( elem, type );
+
+						// This is a shortcut to avoid jQuery.event.remove's overhead
+						} else {
+							jQuery.removeEvent( elem, type, data.handle );
+						}
+					}
+
+					// Null the DOM reference to avoid IE6/7/8 leak (#7054)
+					if ( data.handle ) {
+						data.handle.elem = null;
+					}
+				}
+
+				if ( deleteExpando ) {
+					delete elem[ jQuery.expando ];
+
+				} else if ( elem.removeAttribute ) {
+					elem.removeAttribute( jQuery.expando );
+				}
+
+				delete cache[ id ];
+			}
+		}
+	}
+});
+
+function evalScript( i, elem ) {
+	if ( elem.src ) {
+		jQuery.ajax({
+			url: elem.src,
+			async: false,
+			dataType: "script"
+		});
+	} else {
+		jQuery.globalEval( ( elem.text || elem.textContent || elem.innerHTML || "" ).replace( rcleanScript, "/*$0*/" ) );
+	}
+
+	if ( elem.parentNode ) {
+		elem.parentNode.removeChild( elem );
+	}
+}
+
+
+
+
+var ralpha = /alpha\([^)]*\)/i,
+	ropacity = /opacity=([^)]*)/,
+	// fixed for IE9, see #8346
+	rupper = /([A-Z]|^ms)/g,
+	rnumpx = /^-?\d+(?:px)?$/i,
+	rnum = /^-?\d/,
+	rrelNum = /^([\-+])=([\-+.\de]+)/,
+
+	cssShow = { position: "absolute", visibility: "hidden", display: "block" },
+	cssWidth = [ "Left", "Right" ],
+	cssHeight = [ "Top", "Bottom" ],
+	curCSS,
+
+	getComputedStyle,
+	currentStyle;
+
+jQuery.fn.css = function( name, value ) {
+	// Setting 'undefined' is a no-op
+	if ( arguments.length === 2 && value === undefined ) {
+		return this;
+	}
+
+	return jQuery.access( this, name, value, true, function( elem, name, value ) {
+		return value !== undefined ?
+			jQuery.style( elem, name, value ) :
+			jQuery.css( elem, name );
+	});
+};
+
+jQuery.extend({
+	// Add in style property hooks for overriding the default
+	// behavior of getting and setting a style property
+	cssHooks: {
+		opacity: {
+			get: function( elem, computed ) {
+				if ( computed ) {
+					// We should always get a number back from opacity
+					var ret = curCSS( elem, "opacity", "opacity" );
+					return ret === "" ? "1" : ret;
+
+				} else {
+					return elem.style.opacity;
+				}
+			}
+		}
+	},
+
+	// Exclude the following css properties to add px
+	cssNumber: {
+		"fillOpacity": true,
+		"fontWeight": true,
+		"lineHeight": true,
+		"opacity": true,
+		"orphans": true,
+		"widows": true,
+		"zIndex": true,
+		"zoom": true
+	},
+
+	// Add in properties whose names you wish to fix before
+	// setting or getting the value
+	cssProps: {
+		// normalize float css property
+		"float": jQuery.support.cssFloat ? "cssFloat" : "styleFloat"
+	},
+
+	// Get and set the style property on a DOM Node
+	style: function( elem, name, value, extra ) {
+		// Don't set styles on text and comment nodes
+		if ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) {
+			return;
+		}
+
+		// Make sure that we're working with the right name
+		var ret, type, origName = jQuery.camelCase( name ),
+			style = elem.style, hooks = jQuery.cssHooks[ origName ];
+
+		name = jQuery.cssProps[ origName ] || origName;
+
+		// Check if we're setting a value
+		if ( value !== undefined ) {
+			type = typeof value;
+
+			// convert relative number strings (+= or -=) to relative numbers. #7345
+			if ( type === "string" && (ret = rrelNum.exec( value )) ) {
+				value = ( +( ret[1] + 1) * +ret[2] ) + parseFloat( jQuery.css( elem, name ) );
+				// Fixes bug #9237
+				type = "number";
+			}
+
+			// Make sure that NaN and null values aren't set. See: #7116
+			if ( value == null || type === "number" && isNaN( value ) ) {
+				return;
+			}
+
+			// If a number was passed in, add 'px' to the (except for certain CSS properties)
+			if ( type === "number" && !jQuery.cssNumber[ origName ] ) {
+				value += "px";
+			}
+
+			// If a hook was provided, use that value, otherwise just set the specified value
+			if ( !hooks || !("set" in hooks) || (value = hooks.set( elem, value )) !== undefined ) {
+				// Wrapped to prevent IE from throwing errors when 'invalid' values are provided
+				// Fixes bug #5509
+				try {
+					style[ name ] = value;
+				} catch(e) {}
+			}
+
+		} else {
+			// If a hook was provided get the non-computed value from there
+			if ( hooks && "get" in hooks && (ret = hooks.get( elem, false, extra )) !== undefined ) {
+				return ret;
+			}
+
+			// Otherwise just get the value from the style object
+			return style[ name ];
+		}
+	},
+
+	css: function( elem, name, extra ) {
+		var ret, hooks;
+
+		// Make sure that we're working with the right name
+		name = jQuery.camelCase( name );
+		hooks = jQuery.cssHooks[ name ];
+		name = jQuery.cssProps[ name ] || name;
+
+		// cssFloat needs a special treatment
+		if ( name === "cssFloat" ) {
+			name = "float";
+		}
+
+		// If a hook was provided get the computed value from there
+		if ( hooks && "get" in hooks && (ret = hooks.get( elem, true, extra )) !== undefined ) {
+			return ret;
+
+		// Otherwise, if a way to get the computed value exists, use that
+		} else if ( curCSS ) {
+			return curCSS( elem, name );
+		}
+	},
+
+	// A method for quickly swapping in/out CSS properties to get correct calculations
+	swap: function( elem, options, callback ) {
+		var old = {};
+
+		// Remember the old values, and insert the new ones
+		for ( var name in options ) {
+			old[ name ] = elem.style[ name ];
+			elem.style[ name ] = options[ name ];
+		}
+
+		callback.call( elem );
+
+		// Revert the old values
+		for ( name in options ) {
+			elem.style[ name ] = old[ name ];
+		}
+	}
+});
+
+// DEPRECATED, Use jQuery.css() instead
+jQuery.curCSS = jQuery.css;
+
+jQuery.each(["height", "width"], function( i, name ) {
+	jQuery.cssHooks[ name ] = {
+		get: function( elem, computed, extra ) {
+			var val;
+
+			if ( computed ) {
+				if ( elem.offsetWidth !== 0 ) {
+					return getWH( elem, name, extra );
+				} else {
+					jQuery.swap( elem, cssShow, function() {
+						val = getWH( elem, name, extra );
+					});
+				}
+
+				return val;
+			}
+		},
+
+		set: function( elem, value ) {
+			if ( rnumpx.test( value ) ) {
+				// ignore negative width and height values #1599
+				value = parseFloat( value );
+
+				if ( value >= 0 ) {
+					return value + "px";
+				}
+
+			} else {
+				return value;
+			}
+		}
+	};
+});
+
+if ( !jQuery.support.opacity ) {
+	jQuery.cssHooks.opacity = {
+		get: function( elem, computed ) {
+			// IE uses filters for opacity
+			return ropacity.test( (computed && elem.currentStyle ? elem.currentStyle.filter : elem.style.filter) || "" ) ?
+				( parseFloat( RegExp.$1 ) / 100 ) + "" :
+				computed ? "1" : "";
+		},
+
+		set: function( elem, value ) {
+			var style = elem.style,
+				currentStyle = elem.currentStyle,
+				opacity = jQuery.isNumeric( value ) ? "alpha(opacity=" + value * 100 + ")" : "",
+				filter = currentStyle && currentStyle.filter || style.filter || "";
+
+			// IE has trouble with opacity if it does not have layout
+			// Force it by setting the zoom level
+			style.zoom = 1;
+
+			// if setting opacity to 1, and no other filters exist - attempt to remove filter attribute #6652
+			if ( value >= 1 && jQuery.trim( filter.replace( ralpha, "" ) ) === "" ) {
+
+				// Setting style.filter to null, "" & " " still leave "filter:" in the cssText
+				// if "filter:" is present at all, clearType is disabled, we want to avoid this
+				// style.removeAttribute is IE Only, but so apparently is this code path...
+				style.removeAttribute( "filter" );
+
+				// if there there is no filter style applied in a css rule, we are done
+				if ( currentStyle && !currentStyle.filter ) {
+					return;
+				}
+			}
+
+			// otherwise, set new filter values
+			style.filter = ralpha.test( filter ) ?
+				filter.replace( ralpha, opacity ) :
+				filter + " " + opacity;
+		}
+	};
+}
+
+jQuery(function() {
+	// This hook cannot be added until DOM ready because the support test
+	// for it is not run until after DOM ready
+	if ( !jQuery.support.reliableMarginRight ) {
+		jQuery.cssHooks.marginRight = {
+			get: function( elem, computed ) {
+				// WebKit Bug 13343 - getComputedStyle returns wrong value for margin-right
+				// Work around by temporarily setting element display to inline-block
+				var ret;
+				jQuery.swap( elem, { "display": "inline-block" }, function() {
+					if ( computed ) {
+						ret = curCSS( elem, "margin-right", "marginRight" );
+					} else {
+						ret = elem.style.marginRight;
+					}
+				});
+				return ret;
+			}
+		};
+	}
+});
+
+if ( document.defaultView && document.defaultView.getComputedStyle ) {
+	getComputedStyle = function( elem, name ) {
+		var ret, defaultView, computedStyle;
+
+		name = name.replace( rupper, "-$1" ).toLowerCase();
+
+		if ( (defaultView = elem.ownerDocument.defaultView) &&
+				(computedStyle = defaultView.getComputedStyle( elem, null )) ) {
+			ret = computedStyle.getPropertyValue( name );
+			if ( ret === "" && !jQuery.contains( elem.ownerDocument.documentElement, elem ) ) {
+				ret = jQuery.style( elem, name );
+			}
+		}
+
+		return ret;
+	};
+}
+
+if ( document.documentElement.currentStyle ) {
+	currentStyle = function( elem, name ) {
+		var left, rsLeft, uncomputed,
+			ret = elem.currentStyle && elem.currentStyle[ name ],
+			style = elem.style;
+
+		// Avoid setting ret to empty string here
+		// so we don't default to auto
+		if ( ret === null && style && (uncomputed = style[ name ]) ) {
+			ret = uncomputed;
+		}
+
+		// From the awesome hack by Dean Edwards
+		// http://erik.eae.net/archives/2007/07/27/18.54.15/#comment-102291
+
+		// If we're not dealing with a regular pixel number
+		// but a number that has a weird ending, we need to convert it to pixels
+		if ( !rnumpx.test( ret ) && rnum.test( ret ) ) {
+
+			// Remember the original values
+			left = style.left;
+			rsLeft = elem.runtimeStyle && elem.runtimeStyle.left;
+
+			// Put in the new values to get a computed value out
+			if ( rsLeft ) {
+				elem.runtimeStyle.left = elem.currentStyle.left;
+			}
+			style.left = name === "fontSize" ? "1em" : ( ret || 0 );
+			ret = style.pixelLeft + "px";
+
+			// Revert the changed values
+			style.left = left;
+			if ( rsLeft ) {
+				elem.runtimeStyle.left = rsLeft;
+			}
+		}
+
+		return ret === "" ? "auto" : ret;
+	};
+}
+
+curCSS = getComputedStyle || currentStyle;
+
+function getWH( elem, name, extra ) {
+
+	// Start with offset property
+	var val = name === "width" ? elem.offsetWidth : elem.offsetHeight,
+		which = name === "width" ? cssWidth : cssHeight,
+		i = 0,
+		len = which.length;
+
+	if ( val > 0 ) {
+		if ( extra !== "border" ) {
+			for ( ; i < len; i++ ) {
+				if ( !extra ) {
+					val -= parseFloat( jQuery.css( elem, "padding" + which[ i ] ) ) || 0;
+				}
+				if ( extra === "margin" ) {
+					val += parseFloat( jQuery.css( elem, extra + which[ i ] ) ) || 0;
+				} else {
+					val -= parseFloat( jQuery.css( elem, "border" + which[ i ] + "Width" ) ) || 0;
+				}
+			}
+		}
+
+		return val + "px";
+	}
+
+	// Fall back to computed then uncomputed css if necessary
+	val = curCSS( elem, name, name );
+	if ( val < 0 || val == null ) {
+		val = elem.style[ name ] || 0;
+	}
+	// Normalize "", auto, and prepare for extra
+	val = parseFloat( val ) || 0;
+
+	// Add padding, border, margin
+	if ( extra ) {
+		for ( ; i < len; i++ ) {
+			val += parseFloat( jQuery.css( elem, "padding" + which[ i ] ) ) || 0;
+			if ( extra !== "padding" ) {
+				val += parseFloat( jQuery.css( elem, "border" + which[ i ] + "Width" ) ) || 0;
+			}
+			if ( extra === "margin" ) {
+				val += parseFloat( jQuery.css( elem, extra + which[ i ] ) ) || 0;
+			}
+		}
+	}
+
+	return val + "px";
+}
+
+if ( jQuery.expr && jQuery.expr.filters ) {
+	jQuery.expr.filters.hidden = function( elem ) {
+		var width = elem.offsetWidth,
+			height = elem.offsetHeight;
+
+		return ( width === 0 && height === 0 ) || (!jQuery.support.reliableHiddenOffsets && ((elem.style && elem.style.display) || jQuery.css( elem, "display" )) === "none");
+	};
+
+	jQuery.expr.filters.visible = function( elem ) {
+		return !jQuery.expr.filters.hidden( elem );
+	};
+}
+
+
+
+
+var r20 = /%20/g,
+	rbracket = /\[\]$/,
+	rCRLF = /\r?\n/g,
+	rhash = /#.*$/,
+	rheaders = /^(.*?):[ \t]*([^\r\n]*)\r?$/mg, // IE leaves an \r character at EOL
+	rinput = /^(?:color|date|datetime|datetime-local|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,
+	// #7653, #8125, #8152: local protocol detection
+	rlocalProtocol = /^(?:about|app|app\-storage|.+\-extension|file|res|widget):$/,
+	rnoContent = /^(?:GET|HEAD)$/,
+	rprotocol = /^\/\//,
+	rquery = /\?/,
+	rscript = /<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi,
+	rselectTextarea = /^(?:select|textarea)/i,
+	rspacesAjax = /\s+/,
+	rts = /([?&])_=[^&]*/,
+	rurl = /^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+))?)?/,
+
+	// Keep a copy of the old load method
+	_load = jQuery.fn.load,
+
+	/* Prefilters
+	 * 1) They are useful to introduce custom dataTypes (see ajax/jsonp.js for an example)
+	 * 2) These are called:
+	 *    - BEFORE asking for a transport
+	 *    - AFTER param serialization (s.data is a string if s.processData is true)
+	 * 3) key is the dataType
+	 * 4) the catchall symbol "*" can be used
+	 * 5) execution will start with transport dataType and THEN continue down to "*" if needed
+	 */
+	prefilters = {},
+
+	/* Transports bindings
+	 * 1) key is the dataType
+	 * 2) the catchall symbol "*" can be used
+	 * 3) selection will start with transport dataType and THEN go to "*" if needed
+	 */
+	transports = {},
+
+	// Document location
+	ajaxLocation,
+
+	// Document location segments
+	ajaxLocParts,
+
+	// Avoid comment-prolog char sequence (#10098); must appease lint and evade compression
+	allTypes = ["*/"] + ["*"];
+
+// #8138, IE may throw an exception when accessing
+// a field from window.location if document.domain has been set
+try {
+	ajaxLocation = location.href;
+} catch( e ) {
+	// Use the href attribute of an A element
+	// since IE will modify it given document.location
+	ajaxLocation = document.createElement( "a" );
+	ajaxLocation.href = "";
+	ajaxLocation = ajaxLocation.href;
+}
+
+// Segment location into parts
+ajaxLocParts = rurl.exec( ajaxLocation.toLowerCase() ) || [];
+
+// Base "constructor" for jQuery.ajaxPrefilter and jQuery.ajaxTransport
+function addToPrefiltersOrTransports( structure ) {
+
+	// dataTypeExpression is optional and defaults to "*"
+	return function( dataTypeExpression, func ) {
+
+		if ( typeof dataTypeExpression !== "string" ) {
+			func = dataTypeExpression;
+			dataTypeExpression = "*";
+		}
+
+		if ( jQuery.isFunction( func ) ) {
+			var dataTypes = dataTypeExpression.toLowerCase().split( rspacesAjax ),
+				i = 0,
+				length = dataTypes.length,
+				dataType,
+				list,
+				placeBefore;
+
+			// For each dataType in the dataTypeExpression
+			for ( ; i < length; i++ ) {
+				dataType = dataTypes[ i ];
+				// We control if we're asked to add before
+				// any existing element
+				placeBefore = /^\+/.test( dataType );
+				if ( placeBefore ) {
+					dataType = dataType.substr( 1 ) || "*";
+				}
+				list = structure[ dataType ] = structure[ dataType ] || [];
+				// then we add to the structure accordingly
+				list[ placeBefore ? "unshift" : "push" ]( func );
+			}
+		}
+	};
+}
+
+// Base inspection function for prefilters and transports
+function inspectPrefiltersOrTransports( structure, options, originalOptions, jqXHR,
+		dataType /* internal */, inspected /* internal */ ) {
+
+	dataType = dataType || options.dataTypes[ 0 ];
+	inspected = inspected || {};
+
+	inspected[ dataType ] = true;
+
+	var list = structure[ dataType ],
+		i = 0,
+		length = list ? list.length : 0,
+		executeOnly = ( structure === prefilters ),
+		selection;
+
+	for ( ; i < length && ( executeOnly || !selection ); i++ ) {
+		selection = list[ i ]( options, originalOptions, jqXHR );
+		// If we got redirected to another dataType
+		// we try there if executing only and not done already
+		if ( typeof selection === "string" ) {
+			if ( !executeOnly || inspected[ selection ] ) {
+				selection = undefined;
+			} else {
+				options.dataTypes.unshift( selection );
+				selection = inspectPrefiltersOrTransports(
+						structure, options, originalOptions, jqXHR, selection, inspected );
+			}
+		}
+	}
+	// If we're only executing or nothing was selected
+	// we try the catchall dataType if not done already
+	if ( ( executeOnly || !selection ) && !inspected[ "*" ] ) {
+		selection = inspectPrefiltersOrTransports(
+				structure, options, originalOptions, jqXHR, "*", inspected );
+	}
+	// unnecessary when only executing (prefilters)
+	// but it'll be ignored by the caller in that case
+	return selection;
+}
+
+// A special extend for ajax options
+// that takes "flat" options (not to be deep extended)
+// Fixes #9887
+function ajaxExtend( target, src ) {
+	var key, deep,
+		flatOptions = jQuery.ajaxSettings.flatOptions || {};
+	for ( key in src ) {
+		if ( src[ key ] !== undefined ) {
+			( flatOptions[ key ] ? target : ( deep || ( deep = {} ) ) )[ key ] = src[ key ];
+		}
+	}
+	if ( deep ) {
+		jQuery.extend( true, target, deep );
+	}
+}
+
+jQuery.fn.extend({
+	load: function( url, params, callback ) {
+		if ( typeof url !== "string" && _load ) {
+			return _load.apply( this, arguments );
+
+		// Don't do a request if no elements are being requested
+		} else if ( !this.length ) {
+			return this;
+		}
+
+		var off = url.indexOf( " " );
+		if ( off >= 0 ) {
+			var selector = url.slice( off, url.length );
+			url = url.slice( 0, off );
+		}
+
+		// Default to a GET request
+		var type = "GET";
+
+		// If the second parameter was provided
+		if ( params ) {
+			// If it's a function
+			if ( jQuery.isFunction( params ) ) {
+				// We assume that it's the callback
+				callback = params;
+				params = undefined;
+
+			// Otherwise, build a param string
+			} else if ( typeof params === "object" ) {
+				params = jQuery.param( params, jQuery.ajaxSettings.traditional );
+				type = "POST";
+			}
+		}
+
+		var self = this;
+
+		// Request the remote document
+		jQuery.ajax({
+			url: url,
+			type: type,
+			dataType: "html",
+			data: params,
+			// Complete callback (responseText is used internally)
+			complete: function( jqXHR, status, responseText ) {
+				// Store the response as specified by the jqXHR object
+				responseText = jqXHR.responseText;
+				// If successful, inject the HTML into all the matched elements
+				if ( jqXHR.isResolved() ) {
+					// #4825: Get the actual response in case
+					// a dataFilter is present in ajaxSettings
+					jqXHR.done(function( r ) {
+						responseText = r;
+					});
+					// See if a selector was specified
+					self.html( selector ?
+						// Create a dummy div to hold the results
+						jQuery("<div>")
+							// inject the contents of the document in, removing the scripts
+							// to avoid any 'Permission Denied' errors in IE
+							.append(responseText.replace(rscript, ""))
+
+							// Locate the specified elements
+							.find(selector) :
+
+						// If not, just inject the full result
+						responseText );
+				}
+
+				if ( callback ) {
+					self.each( callback, [ responseText, status, jqXHR ] );
+				}
+			}
+		});
+
+		return this;
+	},
+
+	serialize: function() {
+		return jQuery.param( this.serializeArray() );
+	},
+
+	serializeArray: function() {
+		return this.map(function(){
+			return this.elements ? jQuery.makeArray( this.elements ) : this;
+		})
+		.filter(function(){
+			return this.name && !this.disabled &&
+				( this.checked || rselectTextarea.test( this.nodeName ) ||
+					rinput.test( this.type ) );
+		})
+		.map(function( i, elem ){
+			var val = jQuery( this ).val();
+
+			return val == null ?
+				null :
+				jQuery.isArray( val ) ?
+					jQuery.map( val, function( val, i ){
+						return { name: elem.name, value: val.replace( rCRLF, "\r\n" ) };
+					}) :
+					{ name: elem.name, value: val.replace( rCRLF, "\r\n" ) };
+		}).get();
+	}
+});
+
+// Attach a bunch of functions for handling common AJAX events
+jQuery.each( "ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split( " " ), function( i, o ){
+	jQuery.fn[ o ] = function( f ){
+		return this.on( o, f );
+	};
+});
+
+jQuery.each( [ "get", "post" ], function( i, method ) {
+	jQuery[ method ] = function( url, data, callback, type ) {
+		// shift arguments if data argument was omitted
+		if ( jQuery.isFunction( data ) ) {
+			type = type || callback;
+			callback = data;
+			data = undefined;
+		}
+
+		return jQuery.ajax({
+			type: method,
+			url: url,
+			data: data,
+			success: callback,
+			dataType: type
+		});
+	};
+});
+
+jQuery.extend({
+
+	getScript: function( url, callback ) {
+		return jQuery.get( url, undefined, callback, "script" );
+	},
+
+	getJSON: function( url, data, callback ) {
+		return jQuery.get( url, data, callback, "json" );
+	},
+
+	// Creates a full fledged settings object into target
+	// with both ajaxSettings and settings fields.
+	// If target is omitted, writes into ajaxSettings.
+	ajaxSetup: function( target, settings ) {
+		if ( settings ) {
+			// Building a settings object
+			ajaxExtend( target, jQuery.ajaxSettings );
+		} else {
+			// Extending ajaxSettings
+			settings = target;
+			target = jQuery.ajaxSettings;
+		}
+		ajaxExtend( target, settings );
+		return target;
+	},
+
+	ajaxSettings: {
+		url: ajaxLocation,
+		isLocal: rlocalProtocol.test( ajaxLocParts[ 1 ] ),
+		global: true,
+		type: "GET",
+		contentType: "application/x-www-form-urlencoded",
+		processData: true,
+		async: true,
+		/*
+		timeout: 0,
+		data: null,
+		dataType: null,
+		username: null,
+		password: null,
+		cache: null,
+		traditional: false,
+		headers: {},
+		*/
+
+		accepts: {
+			xml: "application/xml, text/xml",
+			html: "text/html",
+			text: "text/plain",
+			json: "application/json, text/javascript",
+			"*": allTypes
+		},
+
+		contents: {
+			xml: /xml/,
+			html: /html/,
+			json: /json/
+		},
+
+		responseFields: {
+			xml: "responseXML",
+			text: "responseText"
+		},
+
+		// List of data converters
+		// 1) key format is "source_type destination_type" (a single space in-between)
+		// 2) the catchall symbol "*" can be used for source_type
+		converters: {
+
+			// Convert anything to text
+			"* text": window.String,
+
+			// Text to html (true = no transformation)
+			"text html": true,
+
+			// Evaluate text as a json expression
+			"text json": jQuery.parseJSON,
+
+			// Parse text as xml
+			"text xml": jQuery.parseXML
+		},
+
+		// For options that shouldn't be deep extended:
+		// you can add your own custom options here if
+		// and when you create one that shouldn't be
+		// deep extended (see ajaxExtend)
+		flatOptions: {
+			context: true,
+			url: true
+		}
+	},
+
+	ajaxPrefilter: addToPrefiltersOrTransports( prefilters ),
+	ajaxTransport: addToPrefiltersOrTransports( transports ),
+
+	// Main method
+	ajax: function( url, options ) {
+
+		// If url is an object, simulate pre-1.5 signature
+		if ( typeof url === "object" ) {
+			options = url;
+			url = undefined;
+		}
+
+		// Force options to be an object
+		options = options || {};
+
+		var // Create the final options object
+			s = jQuery.ajaxSetup( {}, options ),
+			// Callbacks context
+			callbackContext = s.context || s,
+			// Context for global events
+			// It's the callbackContext if one was provided in the options
+			// and if it's a DOM node or a jQuery collection
+			globalEventContext = callbackContext !== s &&
+				( callbackContext.nodeType || callbackContext instanceof jQuery ) ?
+						jQuery( callbackContext ) : jQuery.event,
+			// Deferreds
+			deferred = jQuery.Deferred(),
+			completeDeferred = jQuery.Callbacks( "once memory" ),
+			// Status-dependent callbacks
+			statusCode = s.statusCode || {},
+			// ifModified key
+			ifModifiedKey,
+			// Headers (they are sent all at once)
+			requestHeaders = {},
+			requestHeadersNames = {},
+			// Response headers
+			responseHeadersString,
+			responseHeaders,
+			// transport
+			transport,
+			// timeout handle
+			timeoutTimer,
+			// Cross-domain detection vars
+			parts,
+			// The jqXHR state
+			state = 0,
+			// To know if global events are to be dispatched
+			fireGlobals,
+			// Loop variable
+			i,
+			// Fake xhr
+			jqXHR = {
+
+				readyState: 0,
+
+				// Caches the header
+				setRequestHeader: function( name, value ) {
+					if ( !state ) {
+						var lname = name.toLowerCase();
+						name = requestHeadersNames[ lname ] = requestHeadersNames[ lname ] || name;
+						requestHeaders[ name ] = value;
+					}
+					return this;
+				},
+
+				// Raw string
+				getAllResponseHeaders: function() {
+					return state === 2 ? responseHeadersString : null;
+				},
+
+				// Builds headers hashtable if needed
+				getResponseHeader: function( key ) {
+					var match;
+					if ( state === 2 ) {
+						if ( !responseHeaders ) {
+							responseHeaders = {};
+							while( ( match = rheaders.exec( responseHeadersString ) ) ) {
+								responseHeaders[ match[1].toLowerCase() ] = match[ 2 ];
+							}
+						}
+						match = responseHeaders[ key.toLowerCase() ];
+					}
+					return match === undefined ? null : match;
+				},
+
+				// Overrides response content-type header
+				overrideMimeType: function( type ) {
+					if ( !state ) {
+						s.mimeType = type;
+					}
+					return this;
+				},
+
+				// Cancel the request
+				abort: function( statusText ) {
+					statusText = statusText || "abort";
+					if ( transport ) {
+						transport.abort( statusText );
+					}
+					done( 0, statusText );
+					return this;
+				}
+			};
+
+		// Callback for when everything is done
+		// It is defined here because jslint complains if it is declared
+		// at the end of the function (which would be more logical and readable)
+		function done( status, nativeStatusText, responses, headers ) {
+
+			// Called once
+			if ( state === 2 ) {
+				return;
+			}
+
+			// State is "done" now
+			state = 2;
+
+			// Clear timeout if it exists
+			if ( timeoutTimer ) {
+				clearTimeout( timeoutTimer );
+			}
+
+			// Dereference transport for early garbage collection
+			// (no matter how long the jqXHR object will be used)
+			transport = undefined;
+
+			// Cache response headers
+			responseHeadersString = headers || "";
+
+			// Set readyState
+			jqXHR.readyState = status > 0 ? 4 : 0;
+
+			var isSuccess,
+				success,
+				error,
+				statusText = nativeStatusText,
+				response = responses ? ajaxHandleResponses( s, jqXHR, responses ) : undefined,
+				lastModified,
+				etag;
+
+			// If successful, handle type chaining
+			if ( status >= 200 && status < 300 || status === 304 ) {
+
+				// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.
+				if ( s.ifModified ) {
+
+					if ( ( lastModified = jqXHR.getResponseHeader( "Last-Modified" ) ) ) {
+						jQuery.lastModified[ ifModifiedKey ] = lastModified;
+					}
+					if ( ( etag = jqXHR.getResponseHeader( "Etag" ) ) ) {
+						jQuery.etag[ ifModifiedKey ] = etag;
+					}
+				}
+
+				// If not modified
+				if ( status === 304 ) {
+
+					statusText = "notmodified";
+					isSuccess = true;
+
+				// If we have data
+				} else {
+
+					try {
+						success = ajaxConvert( s, response );
+						statusText = "success";
+						isSuccess = true;
+					} catch(e) {
+						// We have a parsererror
+						statusText = "parsererror";
+						error = e;
+					}
+				}
+			} else {
+				// We extract error from statusText
+				// then normalize statusText and status for non-aborts
+				error = statusText;
+				if ( !statusText || status ) {
+					statusText = "error";
+					if ( status < 0 ) {
+						status = 0;
+					}
+				}
+			}
+
+			// Set data for the fake xhr object
+			jqXHR.status = status;
+			jqXHR.statusText = "" + ( nativeStatusText || statusText );
+
+			// Success/Error
+			if ( isSuccess ) {
+				deferred.resolveWith( callbackContext, [ success, statusText, jqXHR ] );
+			} else {
+				deferred.rejectWith( callbackContext, [ jqXHR, statusText, error ] );
+			}
+
+			// Status-dependent callbacks
+			jqXHR.statusCode( statusCode );
+			statusCode = undefined;
+
+			if ( fireGlobals ) {
+				globalEventContext.trigger( "ajax" + ( isSuccess ? "Success" : "Error" ),
+						[ jqXHR, s, isSuccess ? success : error ] );
+			}
+
+			// Complete
+			completeDeferred.fireWith( callbackContext, [ jqXHR, statusText ] );
+
+			if ( fireGlobals ) {
+				globalEventContext.trigger( "ajaxComplete", [ jqXHR, s ] );
+				// Handle the global AJAX counter
+				if ( !( --jQuery.active ) ) {
+					jQuery.event.trigger( "ajaxStop" );
+				}
+			}
+		}
+
+		// Attach deferreds
+		deferred.promise( jqXHR );
+		jqXHR.success = jqXHR.done;
+		jqXHR.error = jqXHR.fail;
+		jqXHR.complete = completeDeferred.add;
+
+		// Status-dependent callbacks
+		jqXHR.statusCode = function( map ) {
+			if ( map ) {
+				var tmp;
+				if ( state < 2 ) {
+					for ( tmp in map ) {
+						statusCode[ tmp ] = [ statusCode[tmp], map[tmp] ];
+					}
+				} else {
+					tmp = map[ jqXHR.status ];
+					jqXHR.then( tmp, tmp );
+				}
+			}
+			return this;
+		};
+
+		// Remove hash character (#7531: and string promotion)
+		// Add protocol if not provided (#5866: IE7 issue with protocol-less urls)
+		// We also use the url parameter if available
+		s.url = ( ( url || s.url ) + "" ).replace( rhash, "" ).replace( rprotocol, ajaxLocParts[ 1 ] + "//" );
+
+		// Extract dataTypes list
+		s.dataTypes = jQuery.trim( s.dataType || "*" ).toLowerCase().split( rspacesAjax );
+
+		// Determine if a cross-domain request is in order
+		if ( s.crossDomain == null ) {
+			parts = rurl.exec( s.url.toLowerCase() );
+			s.crossDomain = !!( parts &&
+				( parts[ 1 ] != ajaxLocParts[ 1 ] || parts[ 2 ] != ajaxLocParts[ 2 ] ||
+					( parts[ 3 ] || ( parts[ 1 ] === "http:" ? 80 : 443 ) ) !=
+						( ajaxLocParts[ 3 ] || ( ajaxLocParts[ 1 ] === "http:" ? 80 : 443 ) ) )
+			);
+		}
+
+		// Convert data if not already a string
+		if ( s.data && s.processData && typeof s.data !== "string" ) {
+			s.data = jQuery.param( s.data, s.traditional );
+		}
+
+		// Apply prefilters
+		inspectPrefiltersOrTransports( prefilters, s, options, jqXHR );
+
+		// If request was aborted inside a prefiler, stop there
+		if ( state === 2 ) {
+			return false;
+		}
+
+		// We can fire global events as of now if asked to
+		fireGlobals = s.global;
+
+		// Uppercase the type
+		s.type = s.type.toUpperCase();
+
+		// Determine if request has content
+		s.hasContent = !rnoContent.test( s.type );
+
+		// Watch for a new set of requests
+		if ( fireGlobals && jQuery.active++ === 0 ) {
+			jQuery.event.trigger( "ajaxStart" );
+		}
+
+		// More options handling for requests with no content
+		if ( !s.hasContent ) {
+
+			// If data is available, append data to url
+			if ( s.data ) {
+				s.url += ( rquery.test( s.url ) ? "&" : "?" ) + s.data;
+				// #9682: remove data so that it's not used in an eventual retry
+				delete s.data;
+			}
+
+			// Get ifModifiedKey before adding the anti-cache parameter
+			ifModifiedKey = s.url;
+
+			// Add anti-cache in url if needed
+			if ( s.cache === false ) {
+
+				var ts = jQuery.now(),
+					// try replacing _= if it is there
+					ret = s.url.replace( rts, "$1_=" + ts );
+
+				// if nothing was replaced, add timestamp to the end
+				s.url = ret + ( ( ret === s.url ) ? ( rquery.test( s.url ) ? "&" : "?" ) + "_=" + ts : "" );
+			}
+		}
+
+		// Set the correct header, if data is being sent
+		if ( s.data && s.hasContent && s.contentType !== false || options.contentType ) {
+			jqXHR.setRequestHeader( "Content-Type", s.contentType );
+		}
+
+		// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.
+		if ( s.ifModified ) {
+			ifModifiedKey = ifModifiedKey || s.url;
+			if ( jQuery.lastModified[ ifModifiedKey ] ) {
+				jqXHR.setRequestHeader( "If-Modified-Since", jQuery.lastModified[ ifModifiedKey ] );
+			}
+			if ( jQuery.etag[ ifModifiedKey ] ) {
+				jqXHR.setRequestHeader( "If-None-Match", jQuery.etag[ ifModifiedKey ] );
+			}
+		}
+
+		// Set the Accepts header for the server, depending on the dataType
+		jqXHR.setRequestHeader(
+			"Accept",
+			s.dataTypes[ 0 ] && s.accepts[ s.dataTypes[0] ] ?
+				s.accepts[ s.dataTypes[0] ] + ( s.dataTypes[ 0 ] !== "*" ? ", " + allTypes + "; q=0.01" : "" ) :
+				s.accepts[ "*" ]
+		);
+
+		// Check for headers option
+		for ( i in s.headers ) {
+			jqXHR.setRequestHeader( i, s.headers[ i ] );
+		}
+
+		// Allow custom headers/mimetypes and early abort
+		if ( s.beforeSend && ( s.beforeSend.call( callbackContext, jqXHR, s ) === false || state === 2 ) ) {
+				// Abort if not done already
+				jqXHR.abort();
+				return false;
+
+		}
+
+		// Install callbacks on deferreds
+		for ( i in { success: 1, error: 1, complete: 1 } ) {
+			jqXHR[ i ]( s[ i ] );
+		}
+
+		// Get transport
+		transport = inspectPrefiltersOrTransports( transports, s, options, jqXHR );
+
+		// If no transport, we auto-abort
+		if ( !transport ) {
+			done( -1, "No Transport" );
+		} else {
+			jqXHR.readyState = 1;
+			// Send global event
+			if ( fireGlobals ) {
+				globalEventContext.trigger( "ajaxSend", [ jqXHR, s ] );
+			}
+			// Timeout
+			if ( s.async && s.timeout > 0 ) {
+				timeoutTimer = setTimeout( function(){
+					jqXHR.abort( "timeout" );
+				}, s.timeout );
+			}
+
+			try {
+				state = 1;
+				transport.send( requestHeaders, done );
+			} catch (e) {
+				// Propagate exception as error if not done
+				if ( state < 2 ) {
+					done( -1, e );
+				// Simply rethrow otherwise
+				} else {
+					throw e;
+				}
+			}
+		}
+
+		return jqXHR;
+	},
+
+	// Serialize an array of form elements or a set of
+	// key/values into a query string
+	param: function( a, traditional ) {
+		var s = [],
+			add = function( key, value ) {
+				// If value is a function, invoke it and return its value
+				value = jQuery.isFunction( value ) ? value() : value;
+				s[ s.length ] = encodeURIComponent( key ) + "=" + encodeURIComponent( value );
+			};
+
+		// Set traditional to true for jQuery <= 1.3.2 behavior.
+		if ( traditional === undefined ) {
+			traditional = jQuery.ajaxSettings.traditional;
+		}
+
+		// If an array was passed in, assume that it is an array of form elements.
+		if ( jQuery.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) {
+			// Serialize the form elements
+			jQuery.each( a, function() {
+				add( this.name, this.value );
+			});
+
+		} else {
+			// If traditional, encode the "old" way (the way 1.3.2 or older
+			// did it), otherwise encode params recursively.
+			for ( var prefix in a ) {
+				buildParams( prefix, a[ prefix ], traditional, add );
+			}
+		}
+
+		// Return the resulting serialization
+		return s.join( "&" ).replace( r20, "+" );
+	}
+});
+
+function buildParams( prefix, obj, traditional, add ) {
+	if ( jQuery.isArray( obj ) ) {
+		// Serialize array item.
+		jQuery.each( obj, function( i, v ) {
+			if ( traditional || rbracket.test( prefix ) ) {
+				// Treat each array item as a scalar.
+				add( prefix, v );
+
+			} else {
+				// If array item is non-scalar (array or object), encode its
+				// numeric index to resolve deserialization ambiguity issues.
+				// Note that rack (as of 1.0.0) can't currently deserialize
+				// nested arrays properly, and attempting to do so may cause
+				// a server error. Possible fixes are to modify rack's
+				// deserialization algorithm or to provide an option or flag
+				// to force array serialization to be shallow.
+				buildParams( prefix + "[" + ( typeof v === "object" || jQuery.isArray(v) ? i : "" ) + "]", v, traditional, add );
+			}
+		});
+
+	} else if ( !traditional && obj != null && typeof obj === "object" ) {
+		// Serialize object item.
+		for ( var name in obj ) {
+			buildParams( prefix + "[" + name + "]", obj[ name ], traditional, add );
+		}
+
+	} else {
+		// Serialize scalar item.
+		add( prefix, obj );
+	}
+}
+
+// This is still on the jQuery object... for now
+// Want to move this to jQuery.ajax some day
+jQuery.extend({
+
+	// Counter for holding the number of active queries
+	active: 0,
+
+	// Last-Modified header cache for next request
+	lastModified: {},
+	etag: {}
+
+});
+
+/* Handles responses to an ajax request:
+ * - sets all responseXXX fields accordingly
+ * - finds the right dataType (mediates between content-type and expected dataType)
+ * - returns the corresponding response
+ */
+function ajaxHandleResponses( s, jqXHR, responses ) {
+
+	var contents = s.contents,
+		dataTypes = s.dataTypes,
+		responseFields = s.responseFields,
+		ct,
+		type,
+		finalDataType,
+		firstDataType;
+
+	// Fill responseXXX fields
+	for ( type in responseFields ) {
+		if ( type in responses ) {
+			jqXHR[ responseFields[type] ] = responses[ type ];
+		}
+	}
+
+	// Remove auto dataType and get content-type in the process
+	while( dataTypes[ 0 ] === "*" ) {
+		dataTypes.shift();
+		if ( ct === undefined ) {
+			ct = s.mimeType || jqXHR.getResponseHeader( "content-type" );
+		}
+	}
+
+	// Check if we're dealing with a known content-type
+	if ( ct ) {
+		for ( type in contents ) {
+			if ( contents[ type ] && contents[ type ].test( ct ) ) {
+				dataTypes.unshift( type );
+				break;
+			}
+		}
+	}
+
+	// Check to see if we have a response for the expected dataType
+	if ( dataTypes[ 0 ] in responses ) {
+		finalDataType = dataTypes[ 0 ];
+	} else {
+		// Try convertible dataTypes
+		for ( type in responses ) {
+			if ( !dataTypes[ 0 ] || s.converters[ type + " " + dataTypes[0] ] ) {
+				finalDataType = type;
+				break;
+			}
+			if ( !firstDataType ) {
+				firstDataType = type;
+			}
+		}
+		// Or just use first one
+		finalDataType = finalDataType || firstDataType;
+	}
+
+	// If we found a dataType
+	// We add the dataType to the list if needed
+	// and return the corresponding response
+	if ( finalDataType ) {
+		if ( finalDataType !== dataTypes[ 0 ] ) {
+			dataTypes.unshift( finalDataType );
+		}
+		return responses[ finalDataType ];
+	}
+}
+
+// Chain conversions given the request and the original response
+function ajaxConvert( s, response ) {
+
+	// Apply the dataFilter if provided
+	if ( s.dataFilter ) {
+		response = s.dataFilter( response, s.dataType );
+	}
+
+	var dataTypes = s.dataTypes,
+		converters = {},
+		i,
+		key,
+		length = dataTypes.length,
+		tmp,
+		// Current and previous dataTypes
+		current = dataTypes[ 0 ],
+		prev,
+		// Conversion expression
+		conversion,
+		// Conversion function
+		conv,
+		// Conversion functions (transitive conversion)
+		conv1,
+		conv2;
+
+	// For each dataType in the chain
+	for ( i = 1; i < length; i++ ) {
+
+		// Create converters map
+		// with lowercased keys
+		if ( i === 1 ) {
+			for ( key in s.converters ) {
+				if ( typeof key === "string" ) {
+					converters[ key.toLowerCase() ] = s.converters[ key ];
+				}
+			}
+		}
+
+		// Get the dataTypes
+		prev = current;
+		current = dataTypes[ i ];
+
+		// If current is auto dataType, update it to prev
+		if ( current === "*" ) {
+			current = prev;
+		// If no auto and dataTypes are actually different
+		} else if ( prev !== "*" && prev !== current ) {
+
+			// Get the converter
+			conversion = prev + " " + current;
+			conv = converters[ conversion ] || converters[ "* " + current ];
+
+			// If there is no direct converter, search transitively
+			if ( !conv ) {
+				conv2 = undefined;
+				for ( conv1 in converters ) {
+					tmp = conv1.split( " " );
+					if ( tmp[ 0 ] === prev || tmp[ 0 ] === "*" ) {
+						conv2 = converters[ tmp[1] + " " + current ];
+						if ( conv2 ) {
+							conv1 = converters[ conv1 ];
+							if ( conv1 === true ) {
+								conv = conv2;
+							} else if ( conv2 === true ) {
+								conv = conv1;
+							}
+							break;
+						}
+					}
+				}
+			}
+			// If we found no converter, dispatch an error
+			if ( !( conv || conv2 ) ) {
+				jQuery.error( "No conversion from " + conversion.replace(" "," to ") );
+			}
+			// If found converter is not an equivalence
+			if ( conv !== true ) {
+				// Convert with 1 or 2 converters accordingly
+				response = conv ? conv( response ) : conv2( conv1(response) );
+			}
+		}
+	}
+	return response;
+}
+
+
+
+
+var jsc = jQuery.now(),
+	jsre = /(\=)\?(&|$)|\?\?/i;
+
+// Default jsonp settings
+jQuery.ajaxSetup({
+	jsonp: "callback",
+	jsonpCallback: function() {
+		return jQuery.expando + "_" + ( jsc++ );
+	}
+});
+
+// Detect, normalize options and install callbacks for jsonp requests
+jQuery.ajaxPrefilter( "json jsonp", function( s, originalSettings, jqXHR ) {
+
+	var inspectData = s.contentType === "application/x-www-form-urlencoded" &&
+		( typeof s.data === "string" );
+
+	if ( s.dataTypes[ 0 ] === "jsonp" ||
+		s.jsonp !== false && ( jsre.test( s.url ) ||
+				inspectData && jsre.test( s.data ) ) ) {
+
+		var responseContainer,
+			jsonpCallback = s.jsonpCallback =
+				jQuery.isFunction( s.jsonpCallback ) ? s.jsonpCallback() : s.jsonpCallback,
+			previous = window[ jsonpCallback ],
+			url = s.url,
+			data = s.data,
+			replace = "$1" + jsonpCallback + "$2";
+
+		if ( s.jsonp !== false ) {
+			url = url.replace( jsre, replace );
+			if ( s.url === url ) {
+				if ( inspectData ) {
+					data = data.replace( jsre, replace );
+				}
+				if ( s.data === data ) {
+					// Add callback manually
+					url += (/\?/.test( url ) ? "&" : "?") + s.jsonp + "=" + jsonpCallback;
+				}
+			}
+		}
+
+		s.url = url;
+		s.data = data;
+
+		// Install callback
+		window[ jsonpCallback ] = function( response ) {
+			responseContainer = [ response ];
+		};
+
+		// Clean-up function
+		jqXHR.always(function() {
+			// Set callback back to previous value
+			window[ jsonpCallback ] = previous;
+			// Call if it was a function and we have a response
+			if ( responseContainer && jQuery.isFunction( previous ) ) {
+				window[ jsonpCallback ]( responseContainer[ 0 ] );
+			}
+		});
+
+		// Use data converter to retrieve json after script execution
+		s.converters["script json"] = function() {
+			if ( !responseContainer ) {
+				jQuery.error( jsonpCallback + " was not called" );
+			}
+			return responseContainer[ 0 ];
+		};
+
+		// force json dataType
+		s.dataTypes[ 0 ] = "json";
+
+		// Delegate to script
+		return "script";
+	}
+});
+
+
+
+
+// Install script dataType
+jQuery.ajaxSetup({
+	accepts: {
+		script: "text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"
+	},
+	contents: {
+		script: /javascript|ecmascript/
+	},
+	converters: {
+		"text script": function( text ) {
+			jQuery.globalEval( text );
+			return text;
+		}
+	}
+});
+
+// Handle cache's special case and global
+jQuery.ajaxPrefilter( "script", function( s ) {
+	if ( s.cache === undefined ) {
+		s.cache = false;
+	}
+	if ( s.crossDomain ) {
+		s.type = "GET";
+		s.global = false;
+	}
+});
+
+// Bind script tag hack transport
+jQuery.ajaxTransport( "script", function(s) {
+
+	// This transport only deals with cross domain requests
+	if ( s.crossDomain ) {
+
+		var script,
+			head = document.head || document.getElementsByTagName( "head" )[0] || document.documentElement;
+
+		return {
+
+			send: function( _, callback ) {
+
+				script = document.createElement( "script" );
+
+				script.async = "async";
+
+				if ( s.scriptCharset ) {
+					script.charset = s.scriptCharset;
+				}
+
+				script.src = s.url;
+
+				// Attach handlers for all browsers
+				script.onload = script.onreadystatechange = function( _, isAbort ) {
+
+					if ( isAbort || !script.readyState || /loaded|complete/.test( script.readyState ) ) {
+
+						// Handle memory leak in IE
+						script.onload = script.onreadystatechange = null;
+
+						// Remove the script
+						if ( head && script.parentNode ) {
+							head.removeChild( script );
+						}
+
+						// Dereference the script
+						script = undefined;
+
+						// Callback if not abort
+						if ( !isAbort ) {
+							callback( 200, "success" );
+						}
+					}
+				};
+				// Use insertBefore instead of appendChild  to circumvent an IE6 bug.
+				// This arises when a base node is used (#2709 and #4378).
+				head.insertBefore( script, head.firstChild );
+			},
+
+			abort: function() {
+				if ( script ) {
+					script.onload( 0, 1 );
+				}
+			}
+		};
+	}
+});
+
+
+
+
+var // #5280: Internet Explorer will keep connections alive if we don't abort on unload
+	xhrOnUnloadAbort = window.ActiveXObject ? function() {
+		// Abort all pending requests
+		for ( var key in xhrCallbacks ) {
+			xhrCallbacks[ key ]( 0, 1 );
+		}
+	} : false,
+	xhrId = 0,
+	xhrCallbacks;
+
+// Functions to create xhrs
+function createStandardXHR() {
+	try {
+		return new window.XMLHttpRequest();
+	} catch( e ) {}
+}
+
+function createActiveXHR() {
+	try {
+		return new window.ActiveXObject( "Microsoft.XMLHTTP" );
+	} catch( e ) {}
+}
+
+// Create the request object
+// (This is still attached to ajaxSettings for backward compatibility)
+jQuery.ajaxSettings.xhr = window.ActiveXObject ?
+	/* Microsoft failed to properly
+	 * implement the XMLHttpRequest in IE7 (can't request local files),
+	 * so we use the ActiveXObject when it is available
+	 * Additionally XMLHttpRequest can be disabled in IE7/IE8 so
+	 * we need a fallback.
+	 */
+	function() {
+		return !this.isLocal && createStandardXHR() || createActiveXHR();
+	} :
+	// For all other browsers, use the standard XMLHttpRequest object
+	createStandardXHR;
+
+// Determine support properties
+(function( xhr ) {
+	jQuery.extend( jQuery.support, {
+		ajax: !!xhr,
+		cors: !!xhr && ( "withCredentials" in xhr )
+	});
+})( jQuery.ajaxSettings.xhr() );
+
+// Create transport if the browser can provide an xhr
+if ( jQuery.support.ajax ) {
+
+	jQuery.ajaxTransport(function( s ) {
+		// Cross domain only allowed if supported through XMLHttpRequest
+		if ( !s.crossDomain || jQuery.support.cors ) {
+
+			var callback;
+
+			return {
+				send: function( headers, complete ) {
+
+					// Get a new xhr
+					var xhr = s.xhr(),
+						handle,
+						i;
+
+					// Open the socket
+					// Passing null username, generates a login popup on Opera (#2865)
+					if ( s.username ) {
+						xhr.open( s.type, s.url, s.async, s.username, s.password );
+					} else {
+						xhr.open( s.type, s.url, s.async );
+					}
+
+					// Apply custom fields if provided
+					if ( s.xhrFields ) {
+						for ( i in s.xhrFields ) {
+							xhr[ i ] = s.xhrFields[ i ];
+						}
+					}
+
+					// Override mime type if needed
+					if ( s.mimeType && xhr.overrideMimeType ) {
+						xhr.overrideMimeType( s.mimeType );
+					}
+
+					// X-Requested-With header
+					// For cross-domain requests, seeing as conditions for a preflight are
+					// akin to a jigsaw puzzle, we simply never set it to be sure.
+					// (it can always be set on a per-request basis or even using ajaxSetup)
+					// For same-domain requests, won't change header if already provided.
+					if ( !s.crossDomain && !headers["X-Requested-With"] ) {
+						headers[ "X-Requested-With" ] = "XMLHttpRequest";
+					}
+
+					// Need an extra try/catch for cross domain requests in Firefox 3
+					try {
+						for ( i in headers ) {
+							xhr.setRequestHeader( i, headers[ i ] );
+						}
+					} catch( _ ) {}
+
+					// Do send the request
+					// This may raise an exception which is actually
+					// handled in jQuery.ajax (so no try/catch here)
+					xhr.send( ( s.hasContent && s.data ) || null );
+
+					// Listener
+					callback = function( _, isAbort ) {
+
+						var status,
+							statusText,
+							responseHeaders,
+							responses,
+							xml;
+
+						// Firefox throws exceptions when accessing properties
+						// of an xhr when a network error occured
+						// http://helpful.knobs-dials.com/index.php/Component_returned_failure_code:_0x80040111_(NS_ERROR_NOT_AVAILABLE)
+						try {
+
+							// Was never called and is aborted or complete
+							if ( callback && ( isAbort || xhr.readyState === 4 ) ) {
+
+								// Only called once
+								callback = undefined;
+
+								// Do not keep as active anymore
+								if ( handle ) {
+									xhr.onreadystatechange = jQuery.noop;
+									if ( xhrOnUnloadAbort ) {
+										delete xhrCallbacks[ handle ];
+									}
+								}
+
+								// If it's an abort
+								if ( isAbort ) {
+									// Abort it manually if needed
+									if ( xhr.readyState !== 4 ) {
+										xhr.abort();
+									}
+								} else {
+									status = xhr.status;
+									responseHeaders = xhr.getAllResponseHeaders();
+									responses = {};
+									xml = xhr.responseXML;
+
+									// Construct response list
+									if ( xml && xml.documentElement /* #4958 */ ) {
+										responses.xml = xml;
+									}
+									responses.text = xhr.responseText;
+
+									// Firefox throws an exception when accessing
+									// statusText for faulty cross-domain requests
+									try {
+										statusText = xhr.statusText;
+									} catch( e ) {
+										// We normalize with Webkit giving an empty statusText
+										statusText = "";
+									}
+
+									// Filter status for non standard behaviors
+
+									// If the request is local and we have data: assume a success
+									// (success with no data won't get notified, that's the best we
+									// can do given current implementations)
+									if ( !status && s.isLocal && !s.crossDomain ) {
+										status = responses.text ? 200 : 404;
+									// IE - #1450: sometimes returns 1223 when it should be 204
+									} else if ( status === 1223 ) {
+										status = 204;
+									}
+								}
+							}
+						} catch( firefoxAccessException ) {
+							if ( !isAbort ) {
+								complete( -1, firefoxAccessException );
+							}
+						}
+
+						// Call complete if needed
+						if ( responses ) {
+							complete( status, statusText, responses, responseHeaders );
+						}
+					};
+
+					// if we're in sync mode or it's in cache
+					// and has been retrieved directly (IE6 & IE7)
+					// we need to manually fire the callback
+					if ( !s.async || xhr.readyState === 4 ) {
+						callback();
+					} else {
+						handle = ++xhrId;
+						if ( xhrOnUnloadAbort ) {
+							// Create the active xhrs callbacks list if needed
+							// and attach the unload handler
+							if ( !xhrCallbacks ) {
+								xhrCallbacks = {};
+								jQuery( window ).unload( xhrOnUnloadAbort );
+							}
+							// Add to list of active xhrs callbacks
+							xhrCallbacks[ handle ] = callback;
+						}
+						xhr.onreadystatechange = callback;
+					}
+				},
+
+				abort: function() {
+					if ( callback ) {
+						callback(0,1);
+					}
+				}
+			};
+		}
+	});
+}
+
+
+
+
+var elemdisplay = {},
+	iframe, iframeDoc,
+	rfxtypes = /^(?:toggle|show|hide)$/,
+	rfxnum = /^([+\-]=)?([\d+.\-]+)([a-z%]*)$/i,
+	timerId,
+	fxAttrs = [
+		// height animations
+		[ "height", "marginTop", "marginBottom", "paddingTop", "paddingBottom" ],
+		// width animations
+		[ "width", "marginLeft", "marginRight", "paddingLeft", "paddingRight" ],
+		// opacity animations
+		[ "opacity" ]
+	],
+	fxNow;
+
+jQuery.fn.extend({
+	show: function( speed, easing, callback ) {
+		var elem, display;
+
+		if ( speed || speed === 0 ) {
+			return this.animate( genFx("show", 3), speed, easing, callback );
+
+		} else {
+			for ( var i = 0, j = this.length; i < j; i++ ) {
+				elem = this[ i ];
+
+				if ( elem.style ) {
+					display = elem.style.display;
+
+					// Reset the inline display of this element to learn if it is
+					// being hidden by cascaded rules or not
+					if ( !jQuery._data(elem, "olddisplay") && display === "none" ) {
+						display = elem.style.display = "";
+					}
+
+					// Set elements which have been overridden with display: none
+					// in a stylesheet to whatever the default browser style is
+					// for such an element
+					if ( display === "" && jQuery.css(elem, "display") === "none" ) {
+						jQuery._data( elem, "olddisplay", defaultDisplay(elem.nodeName) );
+					}
+				}
+			}
+
+			// Set the display of most of the elements in a second loop
+			// to avoid the constant reflow
+			for ( i = 0; i < j; i++ ) {
+				elem = this[ i ];
+
+				if ( elem.style ) {
+					display = elem.style.display;
+
+					if ( display === "" || display === "none" ) {
+						elem.style.display = jQuery._data( elem, "olddisplay" ) || "";
+					}
+				}
+			}
+
+			return this;
+		}
+	},
+
+	hide: function( speed, easing, callback ) {
+		if ( speed || speed === 0 ) {
+			return this.animate( genFx("hide", 3), speed, easing, callback);
+
+		} else {
+			var elem, display,
+				i = 0,
+				j = this.length;
+
+			for ( ; i < j; i++ ) {
+				elem = this[i];
+				if ( elem.style ) {
+					display = jQuery.css( elem, "display" );
+
+					if ( display !== "none" && !jQuery._data( elem, "olddisplay" ) ) {
+						jQuery._data( elem, "olddisplay", display );
+					}
+				}
+			}
+
+			// Set the display of the elements in a second loop
+			// to avoid the constant reflow
+			for ( i = 0; i < j; i++ ) {
+				if ( this[i].style ) {
+					this[i].style.display = "none";
+				}
+			}
+
+			return this;
+		}
+	},
+
+	// Save the old toggle function
+	_toggle: jQuery.fn.toggle,
+
+	toggle: function( fn, fn2, callback ) {
+		var bool = typeof fn === "boolean";
+
+		if ( jQuery.isFunction(fn) && jQuery.isFunction(fn2) ) {
+			this._toggle.apply( this, arguments );
+
+		} else if ( fn == null || bool ) {
+			this.each(function() {
+				var state = bool ? fn : jQuery(this).is(":hidden");
+				jQuery(this)[ state ? "show" : "hide" ]();
+			});
+
+		} else {
+			this.animate(genFx("toggle", 3), fn, fn2, callback);
+		}
+
+		return this;
+	},
+
+	fadeTo: function( speed, to, easing, callback ) {
+		return this.filter(":hidden").css("opacity", 0).show().end()
+					.animate({opacity: to}, speed, easing, callback);
+	},
+
+	animate: function( prop, speed, easing, callback ) {
+		var optall = jQuery.speed( speed, easing, callback );
+
+		if ( jQuery.isEmptyObject( prop ) ) {
+			return this.each( optall.complete, [ false ] );
+		}
+
+		// Do not change referenced properties as per-property easing will be lost
+		prop = jQuery.extend( {}, prop );
+
+		function doAnimation() {
+			// XXX 'this' does not always have a nodeName when running the
+			// test suite
+
+			if ( optall.queue === false ) {
+				jQuery._mark( this );
+			}
+
+			var opt = jQuery.extend( {}, optall ),
+				isElement = this.nodeType === 1,
+				hidden = isElement && jQuery(this).is(":hidden"),
+				name, val, p, e,
+				parts, start, end, unit,
+				method;
+
+			// will store per property easing and be used to determine when an animation is complete
+			opt.animatedProperties = {};
+
+			for ( p in prop ) {
+
+				// property name normalization
+				name = jQuery.camelCase( p );
+				if ( p !== name ) {
+					prop[ name ] = prop[ p ];
+					delete prop[ p ];
+				}
+
+				val = prop[ name ];
+
+				// easing resolution: per property > opt.specialEasing > opt.easing > 'swing' (default)
+				if ( jQuery.isArray( val ) ) {
+					opt.animatedProperties[ name ] = val[ 1 ];
+					val = prop[ name ] = val[ 0 ];
+				} else {
+					opt.animatedProperties[ name ] = opt.specialEasing && opt.specialEasing[ name ] || opt.easing || 'swing';
+				}
+
+				if ( val === "hide" && hidden || val === "show" && !hidden ) {
+					return opt.complete.call( this );
+				}
+
+				if ( isElement && ( name === "height" || name === "width" ) ) {
+					// Make sure that nothing sneaks out
+					// Record all 3 overflow attributes because IE does not
+					// change the overflow attribute when overflowX and
+					// overflowY are set to the same value
+					opt.overflow = [ this.style.overflow, this.style.overflowX, this.style.overflowY ];
+
+					// Set display property to inline-block for height/width
+					// animations on inline elements that are having width/height animated
+					if ( jQuery.css( this, "display" ) === "inline" &&
+							jQuery.css( this, "float" ) === "none" ) {
+
+						// inline-level elements accept inline-block;
+						// block-level elements need to be inline with layout
+						if ( !jQuery.support.inlineBlockNeedsLayout || defaultDisplay( this.nodeName ) === "inline" ) {
+							this.style.display = "inline-block";
+
+						} else {
+							this.style.zoom = 1;
+						}
+					}
+				}
+			}
+
+			if ( opt.overflow != null ) {
+				this.style.overflow = "hidden";
+			}
+
+			for ( p in prop ) {
+				e = new jQuery.fx( this, opt, p );
+				val = prop[ p ];
+
+				if ( rfxtypes.test( val ) ) {
+
+					// Tracks whether to show or hide based on private
+					// data attached to the element
+					method = jQuery._data( this, "toggle" + p ) || ( val === "toggle" ? hidden ? "show" : "hide" : 0 );
+					if ( method ) {
+						jQuery._data( this, "toggle" + p, method === "show" ? "hide" : "show" );
+						e[ method ]();
+					} else {
+						e[ val ]();
+					}
+
+				} else {
+					parts = rfxnum.exec( val );
+					start = e.cur();
+
+					if ( parts ) {
+						end = parseFloat( parts[2] );
+						unit = parts[3] || ( jQuery.cssNumber[ p ] ? "" : "px" );
+
+						// We need to compute starting value
+						if ( unit !== "px" ) {
+							jQuery.style( this, p, (end || 1) + unit);
+							start = ( (end || 1) / e.cur() ) * start;
+							jQuery.style( this, p, start + unit);
+						}
+
+						// If a +=/-= token was provided, we're doing a relative animation
+						if ( parts[1] ) {
+							end = ( (parts[ 1 ] === "-=" ? -1 : 1) * end ) + start;
+						}
+
+						e.custom( start, end, unit );
+
+					} else {
+						e.custom( start, val, "" );
+					}
+				}
+			}
+
+			// For JS strict compliance
+			return true;
+		}
+
+		return optall.queue === false ?
+			this.each( doAnimation ) :
+			this.queue( optall.queue, doAnimation );
+	},
+
+	stop: function( type, clearQueue, gotoEnd ) {
+		if ( typeof type !== "string" ) {
+			gotoEnd = clearQueue;
+			clearQueue = type;
+			type = undefined;
+		}
+		if ( clearQueue && type !== false ) {
+			this.queue( type || "fx", [] );
+		}
+
+		return this.each(function() {
+			var index,
+				hadTimers = false,
+				timers = jQuery.timers,
+				data = jQuery._data( this );
+
+			// clear marker counters if we know they won't be
+			if ( !gotoEnd ) {
+				jQuery._unmark( true, this );
+			}
+
+			function stopQueue( elem, data, index ) {
+				var hooks = data[ index ];
+				jQuery.removeData( elem, index, true );
+				hooks.stop( gotoEnd );
+			}
+
+			if ( type == null ) {
+				for ( index in data ) {
+					if ( data[ index ] && data[ index ].stop && index.indexOf(".run") === index.length - 4 ) {
+						stopQueue( this, data, index );
+					}
+				}
+			} else if ( data[ index = type + ".run" ] && data[ index ].stop ){
+				stopQueue( this, data, index );
+			}
+
+			for ( index = timers.length; index--; ) {
+				if ( timers[ index ].elem === this && (type == null || timers[ index ].queue === type) ) {
+					if ( gotoEnd ) {
+
+						// force the next step to be the last
+						timers[ index ]( true );
+					} else {
+						timers[ index ].saveState();
+					}
+					hadTimers = true;
+					timers.splice( index, 1 );
+				}
+			}
+
+			// start the next in the queue if the last step wasn't forced
+			// timers currently will call their complete callbacks, which will dequeue
+			// but only if they were gotoEnd
+			if ( !( gotoEnd && hadTimers ) ) {
+				jQuery.dequeue( this, type );
+			}
+		});
+	}
+
+});
+
+// Animations created synchronously will run synchronously
+function createFxNow() {
+	setTimeout( clearFxNow, 0 );
+	return ( fxNow = jQuery.now() );
+}
+
+function clearFxNow() {
+	fxNow = undefined;
+}
+
+// Generate parameters to create a standard animation
+function genFx( type, num ) {
+	var obj = {};
+
+	jQuery.each( fxAttrs.concat.apply([], fxAttrs.slice( 0, num )), function() {
+		obj[ this ] = type;
+	});
+
+	return obj;
+}
+
+// Generate shortcuts for custom animations
+jQuery.each({
+	slideDown: genFx( "show", 1 ),
+	slideUp: genFx( "hide", 1 ),
+	slideToggle: genFx( "toggle", 1 ),
+	fadeIn: { opacity: "show" },
+	fadeOut: { opacity: "hide" },
+	fadeToggle: { opacity: "toggle" }
+}, function( name, props ) {
+	jQuery.fn[ name ] = function( speed, easing, callback ) {
+		return this.animate( props, speed, easing, callback );
+	};
+});
+
+jQuery.extend({
+	speed: function( speed, easing, fn ) {
+		var opt = speed && typeof speed === "object" ? jQuery.extend( {}, speed ) : {
+			complete: fn || !fn && easing ||
+				jQuery.isFunction( speed ) && speed,
+			duration: speed,
+			easing: fn && easing || easing && !jQuery.isFunction( easing ) && easing
+		};
+
+		opt.duration = jQuery.fx.off ? 0 : typeof opt.duration === "number" ? opt.duration :
+			opt.duration in jQuery.fx.speeds ? jQuery.fx.speeds[ opt.duration ] : jQuery.fx.speeds._default;
+
+		// normalize opt.queue - true/undefined/null -> "fx"
+		if ( opt.queue == null || opt.queue === true ) {
+			opt.queue = "fx";
+		}
+
+		// Queueing
+		opt.old = opt.complete;
+
+		opt.complete = function( noUnmark ) {
+			if ( jQuery.isFunction( opt.old ) ) {
+				opt.old.call( this );
+			}
+
+			if ( opt.queue ) {
+				jQuery.dequeue( this, opt.queue );
+			} else if ( noUnmark !== false ) {
+				jQuery._unmark( this );
+			}
+		};
+
+		return opt;
+	},
+
+	easing: {
+		linear: function( p, n, firstNum, diff ) {
+			return firstNum + diff * p;
+		},
+		swing: function( p, n, firstNum, diff ) {
+			return ( ( -Math.cos( p*Math.PI ) / 2 ) + 0.5 ) * diff + firstNum;
+		}
+	},
+
+	timers: [],
+
+	fx: function( elem, options, prop ) {
+		this.options = options;
+		this.elem = elem;
+		this.prop = prop;
+
+		options.orig = options.orig || {};
+	}
+
+});
+
+jQuery.fx.prototype = {
+	// Simple function for setting a style value
+	update: function() {
+		if ( this.options.step ) {
+			this.options.step.call( this.elem, this.now, this );
+		}
+
+		( jQuery.fx.step[ this.prop ] || jQuery.fx.step._default )( this );
+	},
+
+	// Get the current size
+	cur: function() {
+		if ( this.elem[ this.prop ] != null && (!this.elem.style || this.elem.style[ this.prop ] == null) ) {
+			return this.elem[ this.prop ];
+		}
+
+		var parsed,
+			r = jQuery.css( this.elem, this.prop );
+		// Empty strings, null, undefined and "auto" are converted to 0,
+		// complex values such as "rotate(1rad)" are returned as is,
+		// simple values such as "10px" are parsed to Float.
+		return isNaN( parsed = parseFloat( r ) ) ? !r || r === "auto" ? 0 : r : parsed;
+	},
+
+	// Start an animation from one number to another
+	custom: function( from, to, unit ) {
+		var self = this,
+			fx = jQuery.fx;
+
+		this.startTime = fxNow || createFxNow();
+		this.end = to;
+		this.now = this.start = from;
+		this.pos = this.state = 0;
+		this.unit = unit || this.unit || ( jQuery.cssNumber[ this.prop ] ? "" : "px" );
+
+		function t( gotoEnd ) {
+			return self.step( gotoEnd );
+		}
+
+		t.queue = this.options.queue;
+		t.elem = this.elem;
+		t.saveState = function() {
+			if ( self.options.hide && jQuery._data( self.elem, "fxshow" + self.prop ) === undefined ) {
+				jQuery._data( self.elem, "fxshow" + self.prop, self.start );
+			}
+		};
+
+		if ( t() && jQuery.timers.push(t) && !timerId ) {
+			timerId = setInterval( fx.tick, fx.interval );
+		}
+	},
+
+	// Simple 'show' function
+	show: function() {
+		var dataShow = jQuery._data( this.elem, "fxshow" + this.prop );
+
+		// Remember where we started, so that we can go back to it later
+		this.options.orig[ this.prop ] = dataShow || jQuery.style( this.elem, this.prop );
+		this.options.show = true;
+
+		// Begin the animation
+		// Make sure that we start at a small width/height to avoid any flash of content
+		if ( dataShow !== undefined ) {
+			// This show is picking up where a previous hide or show left off
+			this.custom( this.cur(), dataShow );
+		} else {
+			this.custom( this.prop === "width" || this.prop === "height" ? 1 : 0, this.cur() );
+		}
+
+		// Start by showing the element
+		jQuery( this.elem ).show();
+	},
+
+	// Simple 'hide' function
+	hide: function() {
+		// Remember where we started, so that we can go back to it later
+		this.options.orig[ this.prop ] = jQuery._data( this.elem, "fxshow" + this.prop ) || jQuery.style( this.elem, this.prop );
+		this.options.hide = true;
+
+		// Begin the animation
+		this.custom( this.cur(), 0 );
+	},
+
+	// Each step of an animation
+	step: function( gotoEnd ) {
+		var p, n, complete,
+			t = fxNow || createFxNow(),
+			done = true,
+			elem = this.elem,
+			options = this.options;
+
+		if ( gotoEnd || t >= options.duration + this.startTime ) {
+			this.now = this.end;
+			this.pos = this.state = 1;
+			this.update();
+
+			options.animatedProperties[ this.prop ] = true;
+
+			for ( p in options.animatedProperties ) {
+				if ( options.animatedProperties[ p ] !== true ) {
+					done = false;
+				}
+			}
+
+			if ( done ) {
+				// Reset the overflow
+				if ( options.overflow != null && !jQuery.support.shrinkWrapBlocks ) {
+
+					jQuery.each( [ "", "X", "Y" ], function( index, value ) {
+						elem.style[ "overflow" + value ] = options.overflow[ index ];
+					});
+				}
+
+				// Hide the element if the "hide" operation was done
+				if ( options.hide ) {
+					jQuery( elem ).hide();
+				}
+
+				// Reset the properties, if the item has been hidden or shown
+				if ( options.hide || options.show ) {
+					for ( p in options.animatedProperties ) {
+						jQuery.style( elem, p, options.orig[ p ] );
+						jQuery.removeData( elem, "fxshow" + p, true );
+						// Toggle data is no longer needed
+						jQuery.removeData( elem, "toggle" + p, true );
+					}
+				}
+
+				// Execute the complete function
+				// in the event that the complete function throws an exception
+				// we must ensure it won't be called twice. #5684
+
+				complete = options.complete;
+				if ( complete ) {
+
+					options.complete = false;
+					complete.call( elem );
+				}
+			}
+
+			return false;
+
+		} else {
+			// classical easing cannot be used with an Infinity duration
+			if ( options.duration == Infinity ) {
+				this.now = t;
+			} else {
+				n = t - this.startTime;
+				this.state = n / options.duration;
+
+				// Perform the easing function, defaults to swing
+				this.pos = jQuery.easing[ options.animatedProperties[this.prop] ]( this.state, n, 0, 1, options.duration );
+				this.now = this.start + ( (this.end - this.start) * this.pos );
+			}
+			// Perform the next step of the animation
+			this.update();
+		}
+
+		return true;
+	}
+};
+
+jQuery.extend( jQuery.fx, {
+	tick: function() {
+		var timer,
+			timers = jQuery.timers,
+			i = 0;
+
+		for ( ; i < timers.length; i++ ) {
+			timer = timers[ i ];
+			// Checks the timer has not already been removed
+			if ( !timer() && timers[ i ] === timer ) {
+				timers.splice( i--, 1 );
+			}
+		}
+
+		if ( !timers.length ) {
+			jQuery.fx.stop();
+		}
+	},
+
+	interval: 13,
+
+	stop: function() {
+		clearInterval( timerId );
+		timerId = null;
+	},
+
+	speeds: {
+		slow: 600,
+		fast: 200,
+		// Default speed
+		_default: 400
+	},
+
+	step: {
+		opacity: function( fx ) {
+			jQuery.style( fx.elem, "opacity", fx.now );
+		},
+
+		_default: function( fx ) {
+			if ( fx.elem.style && fx.elem.style[ fx.prop ] != null ) {
+				fx.elem.style[ fx.prop ] = fx.now + fx.unit;
+			} else {
+				fx.elem[ fx.prop ] = fx.now;
+			}
+		}
+	}
+});
+
+// Adds width/height step functions
+// Do not set anything below 0
+jQuery.each([ "width", "height" ], function( i, prop ) {
+	jQuery.fx.step[ prop ] = function( fx ) {
+		jQuery.style( fx.elem, prop, Math.max(0, fx.now) + fx.unit );
+	};
+});
+
+if ( jQuery.expr && jQuery.expr.filters ) {
+	jQuery.expr.filters.animated = function( elem ) {
+		return jQuery.grep(jQuery.timers, function( fn ) {
+			return elem === fn.elem;
+		}).length;
+	};
+}
+
+// Try to restore the default display value of an element
+function defaultDisplay( nodeName ) {
+
+	if ( !elemdisplay[ nodeName ] ) {
+
+		var body = document.body,
+			elem = jQuery( "<" + nodeName + ">" ).appendTo( body ),
+			display = elem.css( "display" );
+		elem.remove();
+
+		// If the simple way fails,
+		// get element's real default display by attaching it to a temp iframe
+		if ( display === "none" || display === "" ) {
+			// No iframe to use yet, so create it
+			if ( !iframe ) {
+				iframe = document.createElement( "iframe" );
+				iframe.frameBorder = iframe.width = iframe.height = 0;
+			}
+
+			body.appendChild( iframe );
+
+			// Create a cacheable copy of the iframe document on first call.
+			// IE and Opera will allow us to reuse the iframeDoc without re-writing the fake HTML
+			// document to it; WebKit & Firefox won't allow reusing the iframe document.
+			if ( !iframeDoc || !iframe.createElement ) {
+				iframeDoc = ( iframe.contentWindow || iframe.contentDocument ).document;
+				iframeDoc.write( ( document.compatMode === "CSS1Compat" ? "<!doctype html>" : "" ) + "<html><body>" );
+				iframeDoc.close();
+			}
+
+			elem = iframeDoc.createElement( nodeName );
+
+			iframeDoc.body.appendChild( elem );
+
+			display = jQuery.css( elem, "display" );
+			body.removeChild( iframe );
+		}
+
+		// Store the correct default display
+		elemdisplay[ nodeName ] = display;
+	}
+
+	return elemdisplay[ nodeName ];
+}
+
+
+
+
+var rtable = /^t(?:able|d|h)$/i,
+	rroot = /^(?:body|html)$/i;
+
+if ( "getBoundingClientRect" in document.documentElement ) {
+	jQuery.fn.offset = function( options ) {
+		var elem = this[0], box;
+
+		if ( options ) {
+			return this.each(function( i ) {
+				jQuery.offset.setOffset( this, options, i );
+			});
+		}
+
+		if ( !elem || !elem.ownerDocument ) {
+			return null;
+		}
+
+		if ( elem === elem.ownerDocument.body ) {
+			return jQuery.offset.bodyOffset( elem );
+		}
+
+		try {
+			box = elem.getBoundingClientRect();
+		} catch(e) {}
+
+		var doc = elem.ownerDocument,
+			docElem = doc.documentElement;
+
+		// Make sure we're not dealing with a disconnected DOM node
+		if ( !box || !jQuery.contains( docElem, elem ) ) {
+			return box ? { top: box.top, left: box.left } : { top: 0, left: 0 };
+		}
+
+		var body = doc.body,
+			win = getWindow(doc),
+			clientTop  = docElem.clientTop  || body.clientTop  || 0,
+			clientLeft = docElem.clientLeft || body.clientLeft || 0,
+			scrollTop  = win.pageYOffset || jQuery.support.boxModel && docElem.scrollTop  || body.scrollTop,
+			scrollLeft = win.pageXOffset || jQuery.support.boxModel && docElem.scrollLeft || body.scrollLeft,
+			top  = box.top  + scrollTop  - clientTop,
+			left = box.left + scrollLeft - clientLeft;
+
+		return { top: top, left: left };
+	};
+
+} else {
+	jQuery.fn.offset = function( options ) {
+		var elem = this[0];
+
+		if ( options ) {
+			return this.each(function( i ) {
+				jQuery.offset.setOffset( this, options, i );
+			});
+		}
+
+		if ( !elem || !elem.ownerDocument ) {
+			return null;
+		}
+
+		if ( elem === elem.ownerDocument.body ) {
+			return jQuery.offset.bodyOffset( elem );
+		}
+
+		var computedStyle,
+			offsetParent = elem.offsetParent,
+			prevOffsetParent = elem,
+			doc = elem.ownerDocument,
+			docElem = doc.documentElement,
+			body = doc.body,
+			defaultView = doc.defaultView,
+			prevComputedStyle = defaultView ? defaultView.getComputedStyle( elem, null ) : elem.currentStyle,
+			top = elem.offsetTop,
+			left = elem.offsetLeft;
+
+		while ( (elem = elem.parentNode) && elem !== body && elem !== docElem ) {
+			if ( jQuery.support.fixedPosition && prevComputedStyle.position === "fixed" ) {
+				break;
+			}
+
+			computedStyle = defaultView ? defaultView.getComputedStyle(elem, null) : elem.currentStyle;
+			top  -= elem.scrollTop;
+			left -= elem.scrollLeft;
+
+			if ( elem === offsetParent ) {
+				top  += elem.offsetTop;
+				left += elem.offsetLeft;
+
+				if ( jQuery.support.doesNotAddBorder && !(jQuery.support.doesAddBorderForTableAndCells && rtable.test(elem.nodeName)) ) {
+					top  += parseFloat( computedStyle.borderTopWidth  ) || 0;
+					left += parseFloat( computedStyle.borderLeftWidth ) || 0;
+				}
+
+				prevOffsetParent = offsetParent;
+				offsetParent = elem.offsetParent;
+			}
+
+			if ( jQuery.support.subtractsBorderForOverflowNotVisible && computedStyle.overflow !== "visible" ) {
+				top  += parseFloat( computedStyle.borderTopWidth  ) || 0;
+				left += parseFloat( computedStyle.borderLeftWidth ) || 0;
+			}
+
+			prevComputedStyle = computedStyle;
+		}
+
+		if ( prevComputedStyle.position === "relative" || prevComputedStyle.position === "static" ) {
+			top  += body.offsetTop;
+			left += body.offsetLeft;
+		}
+
+		if ( jQuery.support.fixedPosition && prevComputedStyle.position === "fixed" ) {
+			top  += Math.max( docElem.scrollTop, body.scrollTop );
+			left += Math.max( docElem.scrollLeft, body.scrollLeft );
+		}
+
+		return { top: top, left: left };
+	};
+}
+
+jQuery.offset = {
+
+	bodyOffset: function( body ) {
+		var top = body.offsetTop,
+			left = body.offsetLeft;
+
+		if ( jQuery.support.doesNotIncludeMarginInBodyOffset ) {
+			top  += parseFloat( jQuery.css(body, "marginTop") ) || 0;
+			left += parseFloat( jQuery.css(body, "marginLeft") ) || 0;
+		}
+
+		return { top: top, left: left };
+	},
+
+	setOffset: function( elem, options, i ) {
+		var position = jQuery.css( elem, "position" );
+
+		// set position first, in-case top/left are set even on static elem
+		if ( position === "static" ) {
+			elem.style.position = "relative";
+		}
+
+		var curElem = jQuery( elem ),
+			curOffset = curElem.offset(),
+			curCSSTop = jQuery.css( elem, "top" ),
+			curCSSLeft = jQuery.css( elem, "left" ),
+			calculatePosition = ( position === "absolute" || position === "fixed" ) && jQuery.inArray("auto", [curCSSTop, curCSSLeft]) > -1,
+			props = {}, curPosition = {}, curTop, curLeft;
+
+		// need to be able to calculate position if either top or left is auto and position is either absolute or fixed
+		if ( calculatePosition ) {
+			curPosition = curElem.position();
+			curTop = curPosition.top;
+			curLeft = curPosition.left;
+		} else {
+			curTop = parseFloat( curCSSTop ) || 0;
+			curLeft = parseFloat( curCSSLeft ) || 0;
+		}
+
+		if ( jQuery.isFunction( options ) ) {
+			options = options.call( elem, i, curOffset );
+		}
+
+		if ( options.top != null ) {
+			props.top = ( options.top - curOffset.top ) + curTop;
+		}
+		if ( options.left != null ) {
+			props.left = ( options.left - curOffset.left ) + curLeft;
+		}
+
+		if ( "using" in options ) {
+			options.using.call( elem, props );
+		} else {
+			curElem.css( props );
+		}
+	}
+};
+
+
+jQuery.fn.extend({
+
+	position: function() {
+		if ( !this[0] ) {
+			return null;
+		}
+
+		var elem = this[0],
+
+		// Get *real* offsetParent
+		offsetParent = this.offsetParent(),
+
+		// Get correct offsets
+		offset       = this.offset(),
+		parentOffset = rroot.test(offsetParent[0].nodeName) ? { top: 0, left: 0 } : offsetParent.offset();
+
+		// Subtract element margins
+		// note: when an element has margin: auto the offsetLeft and marginLeft
+		// are the same in Safari causing offset.left to incorrectly be 0
+		offset.top  -= parseFloat( jQuery.css(elem, "marginTop") ) || 0;
+		offset.left -= parseFloat( jQuery.css(elem, "marginLeft") ) || 0;
+
+		// Add offsetParent borders
+		parentOffset.top  += parseFloat( jQuery.css(offsetParent[0], "borderTopWidth") ) || 0;
+		parentOffset.left += parseFloat( jQuery.css(offsetParent[0], "borderLeftWidth") ) || 0;
+
+		// Subtract the two offsets
+		return {
+			top:  offset.top  - parentOffset.top,
+			left: offset.left - parentOffset.left
+		};
+	},
+
+	offsetParent: function() {
+		return this.map(function() {
+			var offsetParent = this.offsetParent || document.body;
+			while ( offsetParent && (!rroot.test(offsetParent.nodeName) && jQuery.css(offsetParent, "position") === "static") ) {
+				offsetParent = offsetParent.offsetParent;
+			}
+			return offsetParent;
+		});
+	}
+});
+
+
+// Create scrollLeft and scrollTop methods
+jQuery.each( ["Left", "Top"], function( i, name ) {
+	var method = "scroll" + name;
+
+	jQuery.fn[ method ] = function( val ) {
+		var elem, win;
+
+		if ( val === undefined ) {
+			elem = this[ 0 ];
+
+			if ( !elem ) {
+				return null;
+			}
+
+			win = getWindow( elem );
+
+			// Return the scroll offset
+			return win ? ("pageXOffset" in win) ? win[ i ? "pageYOffset" : "pageXOffset" ] :
+				jQuery.support.boxModel && win.document.documentElement[ method ] ||
+					win.document.body[ method ] :
+				elem[ method ];
+		}
+
+		// Set the scroll offset
+		return this.each(function() {
+			win = getWindow( this );
+
+			if ( win ) {
+				win.scrollTo(
+					!i ? val : jQuery( win ).scrollLeft(),
+					 i ? val : jQuery( win ).scrollTop()
+				);
+
+			} else {
+				this[ method ] = val;
+			}
+		});
+	};
+});
+
+function getWindow( elem ) {
+	return jQuery.isWindow( elem ) ?
+		elem :
+		elem.nodeType === 9 ?
+			elem.defaultView || elem.parentWindow :
+			false;
+}
+
+
+
+
+// Create width, height, innerHeight, innerWidth, outerHeight and outerWidth methods
+jQuery.each([ "Height", "Width" ], function( i, name ) {
+
+	var type = name.toLowerCase();
+
+	// innerHeight and innerWidth
+	jQuery.fn[ "inner" + name ] = function() {
+		var elem = this[0];
+		return elem ?
+			elem.style ?
+			parseFloat( jQuery.css( elem, type, "padding" ) ) :
+			this[ type ]() :
+			null;
+	};
+
+	// outerHeight and outerWidth
+	jQuery.fn[ "outer" + name ] = function( margin ) {
+		var elem = this[0];
+		return elem ?
+			elem.style ?
+			parseFloat( jQuery.css( elem, type, margin ? "margin" : "border" ) ) :
+			this[ type ]() :
+			null;
+	};
+
+	jQuery.fn[ type ] = function( size ) {
+		// Get window width or height
+		var elem = this[0];
+		if ( !elem ) {
+			return size == null ? null : this;
+		}
+
+		if ( jQuery.isFunction( size ) ) {
+			return this.each(function( i ) {
+				var self = jQuery( this );
+				self[ type ]( size.call( this, i, self[ type ]() ) );
+			});
+		}
+
+		if ( jQuery.isWindow( elem ) ) {
+			// Everyone else use document.documentElement or document.body depending on Quirks vs Standards mode
+			// 3rd condition allows Nokia support, as it supports the docElem prop but not CSS1Compat
+			var docElemProp = elem.document.documentElement[ "client" + name ],
+				body = elem.document.body;
+			return elem.document.compatMode === "CSS1Compat" && docElemProp ||
+				body && body[ "client" + name ] || docElemProp;
+
+		// Get document width or height
+		} else if ( elem.nodeType === 9 ) {
+			// Either scroll[Width/Height] or offset[Width/Height], whichever is greater
+			return Math.max(
+				elem.documentElement["client" + name],
+				elem.body["scroll" + name], elem.documentElement["scroll" + name],
+				elem.body["offset" + name], elem.documentElement["offset" + name]
+			);
+
+		// Get or set width or height on the element
+		} else if ( size === undefined ) {
+			var orig = jQuery.css( elem, type ),
+				ret = parseFloat( orig );
+
+			return jQuery.isNumeric( ret ) ? ret : orig;
+
+		// Set the width or height on the element (default to pixels if value is unitless)
+		} else {
+			return this.css( type, typeof size === "string" ? size : size + "px" );
+		}
+	};
+
+});
+
+
+
+
+// Expose jQuery to the global object
+window.jQuery = window.$ = jQuery;
+
+// Expose jQuery as an AMD module, but only for AMD loaders that
+// understand the issues with loading multiple versions of jQuery
+// in a page that all might call define(). The loader will indicate
+// they have special allowances for multiple jQuery versions by
+// specifying define.amd.jQuery = true. Register as a named module,
+// since jQuery can be concatenated with other files that may use define,
+// but not use a proper concatenation script that understands anonymous
+// AMD modules. A named AMD is safest and most robust way to register.
+// Lowercase jquery is used because AMD module names are derived from
+// file names, and jQuery is normally delivered in a lowercase file name.
+// Do this after creating the global so that if an AMD module wants to call
+// noConflict to hide this version of jQuery, it will work.
+if ( typeof define === "function" && define.amd && define.amd.jQuery ) {
+	define( "jquery", [], function () { return jQuery; } );
+}
+
+
+
+})( window );
diff --git a/suite/cts/deviceTests/browserbench/assets/octane/mandreel.js b/suite/cts/deviceTests/browserbench/assets/octane/mandreel.js
new file mode 100644
index 0000000..b5f3d05
--- /dev/null
+++ b/suite/cts/deviceTests/browserbench/assets/octane/mandreel.js
@@ -0,0 +1,277377 @@
+// Portions copyright 2012 Google, Inc.
+// Copyright 2012 Onan Games. All rights reserved.
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+//       notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+//       copyright notice, this list of conditions and the following
+//       disclaimer in the documentation and/or other materials provided
+//       with the distribution.
+//     * Neither the name of Google Inc. nor the names of its
+//       contributors may be used to endorse or promote products derived
+//       from this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+
+var MandreelBenchmark = new BenchmarkSuite('Mandreel', 14000000,
+                                            [new Benchmark('Mandreel',
+                                                           runMandreel,
+                                                           setupMandreel,
+                                                           tearDownMandreel,
+                                                           4)]);
+
+function setupMandreel() {
+
+  // Check for Typed Arrays support, throw error if not.
+  if (!(typeof Uint8Array != "undefined" &&
+    typeof Float64Array != "undefined" &&
+    typeof (new Uint8Array(0)).subarray != "undefined")) {
+      throw "TypedArrayUnsupported";
+  }
+
+  my_old_constructors = mandreel_call_constructors;
+  mandreel_call_constructors = my_mandreel_call_constructors;
+  startApp();
+  _mandreelAppAudioReady();
+}
+
+function runMandreel() {
+  Mandreel_currentTime = 0;
+  var sp = g_stack_pointer+800*1024;
+  for (var i=0;i<mandreel_total_memory/4;i++) {
+    heap32[i] = my_heap32[i];
+  }
+  tlsf_ptr = 0;
+  heapNewPos = my_heapNewPos;
+  my_old_constructors(llvm_2E_global_ctors,5,sp);
+  heapU32[sp>>2] = 640;
+  heapU32[(sp+4)>>2] = 480;
+  __mandreel_internal_SetResolution(sp);
+  __mandreel_internal_init(g_stack_pointer+800*1024);
+  __init(g_stack_pointer+800*1024);
+  for (var i = 0; i < 20; i++) {
+    render();
+    Mandreel_flushTimeouts();
+  }
+  Mandreel_checkState();
+}
+
+function tearDownMandreel() {
+  my_old_constructors = null;
+  my_heap = null;
+  my_heap8 = null;
+  my_heap32 = null;
+
+  heap = null;
+  heap8 = null;
+  heapU8 = null;
+  heap16 = null;
+  heapU16 = null;
+  heap32 = null;
+  heapU32 = null;
+  heapFloat = null;
+  heapDouble = null;
+  mandreelAppUsePackAsyncTexture = null;
+}
+
+// Mocks for browser functions.
+
+function Mandreel_setTimeout(cmd, delay) {
+  timeouts.push(cmd);
+}
+
+function Mandreel_flushTimeouts() {
+  while (Mandreel_timeouts.length != 0) {
+    var next = Mandreel_timeouts.pop();
+    eval(next);
+  }
+}
+
+Mandreel_timeouts = new Array();
+
+Mandreel_XMLHttpRequest = function() {
+  this.open = function(type, url, some_bool) {
+    this.url = url;
+  }
+  this.overrideMimeType = function() {
+  }
+  this.send = function() {
+    this.response = null;
+    this.readyState = 4;
+    this.status = 0;
+    this.onreadystatechange();
+  }
+};
+
+function Mandreel_Element(type) {
+  this.element_type = type;
+  this.insertBefore = function() {
+  }
+}
+
+
+function Mandreel_Context() {
+}
+
+function Mandreel_Canvas() {
+}
+
+function Mandreel_CanvasDiv() {
+}
+
+Mandreel_document = {
+  createElement : function(element_type) {
+    var element = new Mandreel_Element(element_type);
+    element.parentNode = new Mandreel_Element("dummy_parent");
+    return element;
+  },
+  getElementById : function(name) {
+    if (name === "canvas") {
+      return new Mandreel_Canvas();
+    } else if (name === "canvasDiv") {
+      return new Mandreel_CanvasDiv();
+    } else {
+      return undefined;
+    }
+  },
+  getElementsByTagName : function(element) {
+    if (element === "script") {
+      return new Array(new this.createElement(element));
+    }
+  }
+
+};
+
+Mandreel_window = {
+  WebGLRenderingContext: {},
+  Float64Array: Float64Array,
+  Float32Array: Float32Array,
+  Int32Array: Int32Array,
+  Uint32Array: Uint32Array,
+  Int16Array: Int16Array,
+  Uint16Array: Uint16Array,
+  Int8Array: Int8Array,
+  Uint8Array: Uint8Array,
+  setTimeout: Mandreel_setTimeout,
+  addEventListener : function () {},
+  document: Mandreel_document
+};
+
+function dump(x) { }
+
+alert = typeof alert != "undefined" ? alert : function(x) {
+  print(x);
+}
+
+var my_old_constructors;
+var my_heap;
+var my_heap8;
+var my_heap32;
+var my_heapNewPos;
+
+function my_mandreel_call_constructors(_ptr, size,stackPos) {
+  my_heapNewPos = heapNewPos;
+  my_heap = new ArrayBuffer(mandreel_total_memory);
+  my_heap8 = new Int8Array(my_heap);
+  my_heap32 = new Int32Array(my_heap);
+  for (var i=0;i<mandreel_total_memory/4;i++) {
+    my_heap32[i] = heap32[i];
+  }
+  my_old_constructors(_ptr,size,stackPos);
+}
+
+
+var Mandreel_currentTime = 0;
+
+function Date_now() {
+   Mandreel_currentTime += 16;
+   return Mandreel_currentTime;
+}
+
+function Mandreel_checkState() {
+  var sum = 0;
+  for (var i = 0; i < heap32.length; i += 100) {
+    sum = (sum * 3 + heap32[i]) & 0xFFFFFF;
+  }
+  if (sum != 8001026) {
+    alert("Check sum mismatch: expected ???, actual " + sum);
+  }
+}
+
+// Original Mandreel code follows.
+// Modifications for benchmarking are marked in comments.
+
+// Start of js/main.js file:
+
+////////////////////////////////////////////
+function startApp(_platform)
+{
+	// Start mandreel
+	var params =
+	{
+		platform : _platform,
+		width : 1024,
+		height : 768,
+		webglCanvas : "canvas",
+		flashCanvas : "FlashDiv",
+		workingFolderFlash : "data/as3/",
+		workingFolderWebgl : "data/js/",
+		swfFlash : "mandreel.swf",
+		log : true
+	};
+	mandreelAppStart(appStartState,params);
+}
+
+////////////////////////////////////////////
+function appStartState(state,param)
+{
+	// mandreel.js program is been loaded
+	if ( state == "loadingScript" )
+	{
+	}
+
+	// mandreel.js program has been loaded
+	if ( state == "scriptLoaded" )
+	{
+	}
+
+	// loading pack data file
+	if (state == "loadingData")
+	{
+		// param bytes loaded
+	}
+
+	// Audio system is been started
+	if ( state == "loadingAudio" )
+	{
+	}
+
+	// Audio system is ready and the default audio preloading has been done
+	if ( state == "audioLoaded" )
+	{
+	}
+
+
+
+	// Mandreel has been started, render will start automatically
+	if ( state == "ready" )
+	{
+		// Hide loading image
+		var canvasElement = Mandreel_document.getElementById('loading');
+		if ( canvasElement != null )
+			canvasElement.style.visibility = "hidden";
+	}
+
+	// An error has been produced during the start process and the app must quit
+	if ( state == "error" )
+	{
+		if ( param == "webgl_not_found" )
+		{
+			window.location = "http://get.webgl.org";
+			return;
+		}
+		alert(param);
+	}
+}
+
+// End of js/main.js file.
+
+// Start of js/mandreelapp.js file.
+
+var mandreelAppMandreelJs = "mandreel.js";
+var mandreelAppMandreelJsCompressed = false;
+var mandreelAppWorkingFolder = "data/js/";
+var mandreelAppLog = false;
+var mandreelAppLocalHost = "http://localhost";
+var mandreelAppReadDataFromLocalHost = false;
+var mandreelAppReadMandreelJsFromLocalHost = false;
+var mandreelAppHostedAudioServer = null;
+var mandreelAppHostedAudioUrl = null;
+var mandrelCurrentFatVersion = "1.4";
+var mandreelAppPlatform = "webgl";
+var mandreelAppCanvasWidth = 1024;
+var mandreelAppCanvasHeight = 768;
+var mandreelAppWidthSrc = 1024;
+var mandreelAppHeightSrc = 768;
+var mandreelAppCanvasName = "canvas";
+var mandreelAppCanvasDiv = "canvasDiv";
+var mandreelAppUseFlashSockets = false;
+var mandreelAppUsePackAsyncTexture = new Array();
+//var mandreelBufferPackAsyncTexture = null;
+var mandreelAppForceFocus = true;
+var _imandreel_pause_game = false;
+
+/* The following code was removed for benchmarking:
+navigator.pointer = navigator.pointer || navigator.webkitPointer || navigator.mozPointer || null;*/
+
+/* The following code was removed for benchmarking:
+ if (!Date_now) {
+   Date_now = function() {
+     return +new Date();
+   };
+ };*/
+
+////////////////////////////////////////////
+
+if (Mandreel_window["console"])
+{
+	if (!Mandreel_window["dump"]) Mandreel_window["dump"] = function dump(str){ if ( mandreelAppLog ) console.log(str) };
+}
+else
+{
+	if (!Mandreel_window["dump"]) Mandreel_window["dump"] = function dump(str){ };
+}
+
+/* The following code is removed for benchmarking:
+var mandreel_BrowserDetect = {
+	init: function () {
+		this.browser = this.searchString(this.dataBrowser) || "An unknown browser";
+		this.version = this.searchVersion(navigator.userAgent)
+			|| this.searchVersion(navigator.appVersion)
+			|| "an unknown version";
+		this.OS = this.searchString(this.dataOS) || "an unknown OS";
+	},
+	searchString: function (data) {
+		for (var i=0;i<data.length;i++)	{
+			var dataString = data[i].string;
+			var dataProp = data[i].prop;
+			this.versionSearchString = data[i].versionSearch || data[i].identity;
+			if (dataString) {
+				if (dataString.indexOf(data[i].subString) != -1)
+					return data[i].identity;
+			}
+			else if (dataProp)
+				return data[i].identity;
+		}
+	},
+	searchVersion: function (dataString) {
+		var index = dataString.indexOf(this.versionSearchString);
+		if (index == -1) return;
+		return parseFloat(dataString.substring(index+this.versionSearchString.length+1));
+	},
+	dataBrowser: [
+		{
+			string: navigator.userAgent,
+			subString: "Chrome",
+			identity: "Chrome"
+		},
+		{ 	string: navigator.userAgent,
+			subString: "OmniWeb",
+			versionSearch: "OmniWeb/",
+			identity: "OmniWeb"
+		},
+		{
+			string: navigator.vendor,
+			subString: "Apple",
+			identity: "Safari",
+			versionSearch: "Version"
+		},
+		{
+			prop: window.opera,
+			identity: "Opera",
+			versionSearch: "Version"
+		},
+		{
+			string: navigator.vendor,
+			subString: "iCab",
+			identity: "iCab"
+		},
+		{
+			string: navigator.vendor,
+			subString: "KDE",
+			identity: "Konqueror"
+		},
+		{
+			string: navigator.userAgent,
+			subString: "Firefox",
+			identity: "Firefox"
+		},
+		{
+			string: navigator.vendor,
+			subString: "Camino",
+			identity: "Camino"
+		},
+		{		// for newer Netscapes (6+)
+			string: navigator.userAgent,
+			subString: "Netscape",
+			identity: "Netscape"
+		},
+		{
+			string: navigator.userAgent,
+			subString: "MSIE",
+			identity: "Explorer",
+			versionSearch: "MSIE"
+		},
+		{
+			string: navigator.userAgent,
+			subString: "Gecko",
+			identity: "Mozilla",
+			versionSearch: "rv"
+		},
+		{ 		// for older Netscapes (4-)
+			string: navigator.userAgent,
+			subString: "Mozilla",
+			identity: "Netscape",
+			versionSearch: "Mozilla"
+		}
+	],
+	dataOS : [
+		{
+			string: navigator.platform,
+			subString: "Win",
+			identity: "Windows"
+		},
+		{
+			string: navigator.platform,
+			subString: "Mac",
+			identity: "Mac"
+		},
+		{
+			   string: navigator.userAgent,
+			   subString: "iPhone",
+			   identity: "iPhone/iPod"
+	    },
+		{
+			string: navigator.platform,
+			subString: "Linux",
+			identity: "Linux"
+		}
+	]
+
+};
+mandreel_BrowserDetect.init(); */
+
+////////////////////////////////////////////
+var mandreel_packfiledata_name = null;
+var mandreel_packfiledata_compressed = false;
+var mandreel_packfiledata_size = 0;
+var mandreel_total_packtexture_size = 0;
+var mandreel_total_pogfile_size = 0;
+var mandreel_loaded_packtexture_size = 0;
+var mandreel_jslzma_size = 0;
+var mandreel_swf_size = 0;
+
+var mandreelJsScriptLoaded_loaded = false;
+
+var mandreel_swf_last_total_size = 0;
+function mandreel_swf_size_updated(str)
+{
+	var params = str.split(',');
+	if ( mandreel_swf_size == 0 )
+	{
+		mandreel_swf_last_loaded_size = 0;
+	}
+	mandreel_swf_size = parseInt(params[0]);
+	var loaded = parseInt(params[1]);
+	var delta_size = loaded - mandreel_swf_last_loaded_size;
+	mandreel_swf_last_loaded_size = loaded;
+
+	var percentage = ((100*loaded)/mandreel_swf_size)|0;
+	if (percentage>100)
+		percentage = 100;
+
+	if ( mandreelAppStartStateFunc )
+		mandreelAppStartStateFunc("loadingScriptUpdate",percentage);
+
+	imandreel_update_load(delta_size,0);
+}
+
+function mandreel_swf_size_loaded(str)
+{
+	if ( mandreelAppStartStateFunc )
+		mandreelAppStartStateFunc("scriptLoaded","");
+}
+
+function mandreelNextDecompress(mandreel_result_lzma)
+{
+
+	if ( mandreelAppStartStateFunc )
+	{
+		var totalBytesLeft = mandreel_result_lzma.totalSize - mandreel_result_lzma.remainingBytes;
+
+		var percentage;
+
+		if (totalBytesLeft == 0)
+			percentage = 0;
+		else
+			percentage = ((100*totalBytesLeft)/mandreel_result_lzma.totalSize)|0;
+
+		mandreelAppStartStateFunc("uncompressingDataUpdate",percentage);
+	}
+
+	var old_result = mandreel_result_lzma;
+	mandreel_result_lzma = LZMA.decompress2(mandreel_result_lzma.inStream,mandreel_result_lzma.inStream,mandreel_result_lzma.outStream,mandreel_result_lzma);
+
+	if (mandreel_result_lzma == null)
+	{
+		//setTimeout(mandreelLoadScript,10,old_result.my_outStream.data);
+
+		//mandreel_fs_saveFile('data.bin', old_result.my_outStream.arrayBuffer);
+		//callback(old_result.my_outStream.arrayBuffer);
+		//alert('done');
+		mandreelLoadPackData(old_result.my_outStream.arrayBuffer,true);
+	}
+	else
+	{
+		Mandreel_setTimeout(mandreelNextDecompress,10,mandreel_result_lzma);
+	}
+
+
+}
+
+function mandreel_load_packfile(array_buffer)
+{
+	if (array_buffer)
+	{
+		mandreelLoadPackData(array_buffer,false);
+		return;
+	}
+
+	var working_folder = mandreelAppWorkingFolder;
+	if ( mandreelAppReadDataFromLocalHost )
+		working_folder = mandreelAppLocalHost+"/"+mandreelAppWorkingFolder;
+	var packdata_request = new XMLHttpRequest();
+	var url = working_folder+mandreel_packfiledata_name;
+
+	packdata_request.open("GET", url, true);
+
+	if("responseType" in packdata_request)
+		packdata_request.responseType="arraybuffer";
+	else
+		packdata_request.overrideMimeType('text/plain; charset=x-user-defined');
+
+	var last_loaded_size = 0;
+
+	packdata_request.onreadystatechange = function()
+	{
+		if (packdata_request.readyState != 4) return;
+
+		if (packdata_request.status == 200)
+		{
+			var buffer;
+			if (packdata_request.responseType=="arraybuffer")
+				buffer=packdata_request.response;
+			else if (packdata_request.mozResponseArrayBuffer != null)
+				buffer = packdata_request.mozResponseArrayBuffer;
+			else
+				buffer=packdata_request.response;
+
+			if (mandreel_packfiledata_compressed)
+			{
+				var inStream = {
+				  data: new Uint8Array(buffer),
+				  offset: 0,
+				  readByte: function(){
+					return this.data[this.offset ++];
+				  }
+				};
+
+				var outStream = {
+				  data: null,
+				  offset: 0,
+				  binary_mode : true,
+				  writeByte: function(value){
+					this.data[this.offset ++] = value;
+				  }
+				};
+
+
+				var result = LZMA.decompress2(inStream,inStream,outStream,null);
+
+				if (result == null)
+					mandreelLoadPackData(outStream.arrayBuffer,true);
+				else
+					Mandreel_setTimeout(mandreelNextDecompress,10,result);
+			}
+			else
+				mandreelLoadPackData(buffer,true);
+		}
+		else
+		{
+			if ( mandreelAppStartStateFunc )
+				mandreelAppStartStateFunc("error","can't load packfile data");
+		}
+	}
+	packdata_request.onprogress = function(e)
+	{
+		var delta_size = e.loaded - last_loaded_size;
+		last_loaded_size = e.loaded;
+		var percentage = ((100*e.loaded)/mandreel_packfiledata_size)|0;
+
+
+		imandreel_update_load(delta_size,0);
+
+		if (percentage>100)
+			percentage = 100;
+
+		if ( mandreelAppStartStateFunc )
+			mandreelAppStartStateFunc("loadingData",percentage);
+	}
+
+	packdata_request.send();
+}
+
+function mandreelJsScriptLoaded()
+{
+	if (mandreelJsScriptLoaded_loaded)
+		return;
+
+	if (typeof(mandreel_cache_files)=="undefined")
+	{
+		Mandreel_setTimeout(mandreelJsScriptLoaded,10);
+		return;
+	}
+
+	mandreelJsScriptLoaded_loaded = true;
+
+	if ( mandreelAppStartStateFunc )
+		mandreelAppStartStateFunc("scriptLoaded","");
+
+	if (mandreel_packfiledata_name)
+	{
+
+		mandreel_fs_load_binary(mandreel_packfiledata_name, mandreel_load_packfile);
+
+
+	}
+	else
+	{
+		mandreelCacheMandreelFat();
+		imandreelJsScriptLoaded();
+	}
+}
+
+function imandreelLoadAudio()
+{
+	g_mandreel_working_folder = mandreelAppWorkingFolder;
+	if ( mandreelAppReadDataFromLocalHost )
+		g_mandreel_working_folder = mandreelAppLocalHost+"/"+mandreelAppWorkingFolder;
+
+	// load audio
+	if ( mandreelAppStartStateFunc )
+		mandreelAppStartStateFunc("loadingAudio","");
+	mandreel_start_audio(mandreelAppHostedAudioServer,mandreelAppHostedAudioUrl,_mandreelAppAudioReady);
+}
+
+var _mandreel_currentPackTexture = '';
+
+function imandreel_packasynctexture_loaded(buffer,save_file)
+{
+	if (save_file)
+		mandreel_fs_saveFile(_mandreel_currentPackTexture,buffer);
+
+	//mandreelBufferPackAsyncTexture = buffer;
+	Mandreel_TextureAsync_PackBufferData[_mandreel_currentPackTexture] = buffer;
+
+	imandreelLoadNextTexturePack();
+}
+
+var mandreel_update_total_size = 0;
+
+function imandreel_update_load(size, total)
+{
+	if (total == 0)
+		total = mandreel_packfiledata_size + mandreel_total_packtexture_size + mandreel_total_pogfile_size + mandreel_jslzma_size + mandreel_swf_size;
+
+
+	mandreel_update_total_size+=size;
+
+	var percentage = ((100*mandreel_update_total_size)/total)|0;
+
+	if (percentage>100)
+		percentage = 100;
+	if (mandreelAppStartStateFunc)
+		mandreelAppStartStateFunc("loadingProgress",percentage);
+
+}
+
+
+function imandreel_packasynctexture_load(array_buffer)
+{
+	if (array_buffer)
+	{
+		imandreel_packasynctexture_loaded(array_buffer, false);
+		return;
+	}
+
+
+	var working_folder = mandreelAppWorkingFolder;
+	if ( mandreelAppReadDataFromLocalHost )
+		working_folder = mandreelAppLocalHost+"/"+mandreelAppWorkingFolder;
+	var packdata_request = new XMLHttpRequest();
+	var url = working_folder+_mandreel_currentPackTexture;
+
+	packdata_request.open("GET", url, true);
+
+	if("responseType" in packdata_request)
+		packdata_request.responseType="arraybuffer";
+	else
+		packdata_request.overrideMimeType('text/plain; charset=x-user-defined');
+
+	var last_loaded_size = 0;
+
+	packdata_request.onreadystatechange = function()
+	{
+		if (packdata_request.readyState != 4) return;
+
+		if (packdata_request.status == 200)
+		{
+			var buffer;
+			if (packdata_request.responseType=="arraybuffer")
+				buffer=packdata_request.response;
+			else if (packdata_request.mozResponseArrayBuffer != null)
+				buffer = packdata_request.mozResponseArrayBuffer;
+			else
+				buffer=packdata_request.response;
+
+			imandreel_packasynctexture_loaded(buffer, true);
+		}
+		else
+		{
+			if ( mandreelAppStartStateFunc )
+				mandreelAppStartStateFunc("error","can't load textureasync pack data");
+		}
+	}
+	packdata_request.onprogress = function(e)
+	{
+		var delta_size = e.loaded - last_loaded_size;
+		last_loaded_size = e.loaded;
+		mandreel_loaded_packtexture_size+=delta_size;
+
+		imandreel_update_load(delta_size,0);
+
+		var percentage = ((100*mandreel_loaded_packtexture_size)/mandreel_total_packtexture_size)|0;
+
+		if (percentage>100)
+			percentage = 100;
+
+		if ( mandreelAppStartStateFunc )
+			mandreelAppStartStateFunc("loadingTextureAsyncPack",percentage);
+	}
+
+	packdata_request.send();
+
+}
+
+function imandreelLoadNextTexturePack()
+{
+	if (mandreelAppUsePackAsyncTexture.length)
+	{
+		_mandreel_currentPackTexture = mandreelAppUsePackAsyncTexture.pop();
+		mandreel_fs_load_binary(_mandreel_currentPackTexture, imandreel_packasynctexture_load);
+	}
+	else
+		imandreelLoadAudio();
+}
+
+function imandreelJsScriptLoaded()
+{
+	imandreelLoadNextTexturePack();
+}
+
+////////////////////////////////////////////
+
+function mandreelDecompressJSReady(code, save_file)
+{
+	if (save_file)
+		mandreel_fs_saveFile(mandreelAppMandreelJs + ".lzma", code);
+
+	var ga = Mandreel_document.createElement('script');
+	ga.type = "text/javascript";
+	ga.text = code;
+	var s = Mandreel_document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
+	s.parentNode.removeChild(ga);
+	mandreelJsScriptLoaded();
+}
+
+function mandreelNextDecompressJS(mandreel_result_lzma)
+{
+
+	if ( mandreelAppStartStateFunc )
+	{
+		var totalBytesLeft = mandreel_result_lzma.totalSize - mandreel_result_lzma.remainingBytes;
+
+		var percentage;
+
+		if (totalBytesLeft == 0)
+			percentage = 0;
+		else
+			percentage = ((100*totalBytesLeft)/mandreel_result_lzma.totalSize)|0;
+
+		mandreelAppStartStateFunc("uncompressingScriptUpdate",percentage);
+	}
+
+	var old_result = mandreel_result_lzma;
+	mandreel_result_lzma = LZMA.decompress2(mandreel_result_lzma.inStream,mandreel_result_lzma.inStream,mandreel_result_lzma.outStream,mandreel_result_lzma);
+
+	if (mandreel_result_lzma == null)
+	{
+		mandreelDecompressJSReady(old_result.my_outStream.data,true);
+	}
+	else
+	{
+		Mandreel_setTimeout(mandreelNextDecompressJS,10,mandreel_result_lzma);
+	}
+
+
+}
+
+function mandreel_load_compressed_js(code_js)
+{
+	if (code_js)
+	{
+		mandreelDecompressJSReady(code_js,false);
+		return;
+	}
+	 var xmlhttp_get = new XMLHttpRequest();
+
+	 var url = mandreelAppMandreelJs + ".lzma";
+	 if ( mandreelAppReadMandreelJsFromLocalHost )
+		url = mandreelAppLocalHost+"/"+url;
+
+	 xmlhttp_get.open('GET',url);
+
+
+	if("responseType" in xmlhttp_get)
+		xmlhttp_get.responseType="arraybuffer";
+	else
+		xmlhttp_get.overrideMimeType('text/plain; charset=x-user-defined');
+
+	var last_loaded_size = 0;
+
+	xmlhttp_get.onreadystatechange = function()
+	{
+		if (xmlhttp_get.readyState==4)
+		{
+			if (xmlhttp_get.status==200 || xmlhttp_get.status==0)
+			{
+
+				var inStream = {
+				  data: new Uint8Array(xmlhttp_get.response),
+				  offset: 0,
+				  readByte: function(){
+					return this.data[this.offset ++];
+				  }
+				};
+
+				var outStream = {
+				  data: new String(""),
+				  offset: 0,
+				  binary_mode : false,
+				  writeByte: function(value){
+					this.data+=String.fromCharCode(value);
+				  }
+				};
+
+
+				var result = LZMA.decompress2(inStream,inStream,outStream,null);
+				if (result == null)
+					mandreelDecompressJSReady(outStream.data,true);
+				else
+					Mandreel_setTimeout(mandreelNextDecompressJS,10,result);
+			}
+			else
+			{
+				alert('error ' + xmlhttp_get.status);
+			}
+		}
+
+	}
+
+	xmlhttp_get.onprogress = function(e)
+	{
+		var delta_size = e.loaded - last_loaded_size;
+		last_loaded_size = e.loaded;
+
+		var percentage = ((100*e.loaded)/e.total)|0;
+
+		mandreel_jslzma_size = e.total;
+
+		imandreel_update_load(delta_size,0);
+
+		if (percentage>100)
+			percentage = 100;
+
+		if ( mandreelAppStartStateFunc )
+			mandreelAppStartStateFunc("loadingScriptUpdate",percentage);
+	}
+
+	xmlhttp_get.send();
+
+}
+
+function mandreelLoadMandreelJsScript()
+{
+	if (mandreelAppMandreelJsCompressed)
+	{
+		mandreel_fs_load_text(mandreelAppMandreelJs + ".lzma", mandreel_load_compressed_js);
+
+	}
+	else
+	{
+		var ga = Mandreel_document.createElement('script');
+		ga.type = 'text/javascript';
+		ga.async = true;
+		ga.onload = ga.onreadystatechange = mandreelJsScriptLoaded;
+		var url = mandreelAppMandreelJs;
+		if ( mandreelAppReadMandreelJsFromLocalHost )
+			ga.src = mandreelAppLocalHost+"/"+url;
+		else
+			ga.src = url;
+		var s = Mandreel_document.getElementsByTagName('script')[0];
+		if ( mandreelAppStartStateFunc )
+			mandreelAppStartStateFunc("loadingScript","");
+		s.parentNode.insertBefore(ga, s);
+	}
+}
+
+////////////////////////////////////////////
+function mandreelFatLoaded()
+{
+	if ( mandreelAppPlatform == "nacl" )
+	{
+		g_mandreel_working_folder = mandreelAppWorkingFolder;
+		if ( mandreelAppReadDataFromLocalHost )
+			g_mandreel_working_folder = mandreelAppLocalHost+"/"+mandreelAppWorkingFolder;
+
+		// load audio
+		if ( mandreelAppStartStateFunc )
+			mandreelAppStartStateFunc("loadingAudio","");
+		_mandreelAppAudioReady();
+	}
+	else
+		mandreelLoadMandreelJsScript();
+}
+
+var mandreelFatData = "";
+var mandreelFatPreloadRequest = 0;
+////////////////////////////////////////////
+
+function mandreel_chanka_fixfile(fileName)
+{
+	var fileNameNoExt = fileName.toLowerCase();
+	fileNameNoExt = fileNameNoExt.replace(/\\/g,"/");
+
+	fileNameNoExt =  fileNameNoExt.substr(1);
+
+	var new_fileName = '';
+
+	for(var j = 0; j < fileNameNoExt.length; j++)
+	{
+		var data = fileNameNoExt.charCodeAt(j);
+
+		if (data != 13)
+		{
+			 var t = String.fromCharCode(data);
+			 new_fileName+=t;
+		}
+	}
+
+	return 	new_fileName;
+}
+
+function mandreel_removecr(my_string)
+{
+	var new_string = '';
+	for(var j = 0; j < my_string.length; j++)
+	{
+		var data = my_string.charCodeAt(j);
+
+		if (data != 13)
+		{
+			 var t = String.fromCharCode(data);
+			 new_string+=t;
+		}
+	}
+
+	return 	new_string;
+}
+
+function mandreelCacheMandreelFat()
+{
+	var array_mandreel_fat = new ArrayBuffer(mandreelFatData.length+1);
+
+
+	{
+		var j;
+		var len = mandreelFatData.length;
+		var data_char;
+
+		var my_bytes = new Uint8Array(array_mandreel_fat);
+
+		for(j = 0; j < len; j++)
+		{
+			data_char = mandreelFatData.charCodeAt(j);
+
+			my_bytes[j] = data_char;
+		}
+		my_bytes[j] = 0;
+	}
+
+
+	mandreel_cache_files['mandreel.fat'] = array_mandreel_fat;
+}
+
+function mandreelLoadPackData(data, save_pack)
+{
+	var files = mandreelFatData.split('\n');
+
+	var current_dir = '';
+	var current_offset = 0;
+
+	if (save_pack)
+		mandreel_fs_saveFile(mandreel_packfiledata_name,data);
+
+
+	for (var i=0;i<files.length;++i)
+	{
+		var file_data = files[i].split(',');
+
+		if (file_data[0] == 'dir')
+		{
+			current_dir = file_data[1];
+			//current_dir = current_dir.substr(0,current_dir.lengh-1);
+		}
+		else if (file_data[0] == 'file')
+		{
+			var file_name = current_dir + file_data[1];
+			file_name = mandreel_chanka_fixfile(file_name) ;
+			//dump('new file ' + file_name + ' ' + current_offset);
+			//dump(file_name);
+			var file_size = parseInt(file_data[2]);
+
+			var my_array = new ArrayBuffer(file_size);
+
+			var my_bytes = new Uint8Array(my_array);
+
+			var data_bytes = new Uint8Array(data,current_offset,file_size);
+
+			my_bytes.set(data_bytes);
+
+			mandreel_cache_files[file_name] = my_array;
+
+
+			current_offset+=file_size;
+
+
+		}
+	}
+
+
+
+	g_mandreel_datafiles_sufix = '';
+	mandreelCacheMandreelFat();
+
+	imandreelJsScriptLoaded();
+}
+
+var preCreatedWebAudioContext = null;
+
+function mandreelLoadFat()
+{
+	mandreelFatPreloadRequest = new Mandreel_XMLHttpRequest();
+	var working_folder = mandreelAppWorkingFolder;
+	if ( mandreelAppReadDataFromLocalHost )
+		working_folder = mandreelAppLocalHost+"/"+mandreelAppWorkingFolder;
+	var url = working_folder+"mandreel.fat.dat";
+	if ( mandreelAppPlatform == "nacl" )
+		url = working_folder+"mandreel.fat";
+	mandreelFatPreloadRequest.open("GET", url, true);
+	mandreelFatPreloadRequest.onreadystatechange = function()
+	{
+		if (mandreelFatPreloadRequest.readyState != 4) return;
+		if ( mandreelFatPreloadRequest.status != 404 && mandreelFatPreloadRequest.response != null )
+		{
+			mandreelFatData = mandreelFatPreloadRequest.response;
+		}
+		if ( mandreelFatData == "" )
+		{
+			dump("error loading mandreel.fat file, Maybe the working folder is not correctly set???");
+		}
+
+		var packfiledata = null;
+		var compressed = false;
+		var packfiledata_size = 0;
+		var total_packtexture_size = 0;
+		var pogsize = 0;
+
+		// Check version
+		var FatLines = mandreelFatData.split('\n');
+		for ( var i=0;i<FatLines.length;++i )
+		{
+			var line = mandreel_removecr(FatLines[i]);
+			var params = line.split(',');
+			if ( params[0] == "version" )
+			{
+				if ( params[1] != mandrelCurrentFatVersion )
+					dump("warning: mandreel.fat version number is ("+params[1]+") and it should be ("+mandrelCurrentFatVersion+")");
+
+			}
+			else if ( params[0] == "platform" && params[1] != "js" && (mandreelAppPlatform == "webgl" || mandreelAppPlatform == "canvas")  )
+				dump("warning: mandreel.fat platform is ("+params[1]+") and it should be (js)");
+			else if ( params[0] == "platform" && params[1] != "nacl" && mandreelAppPlatform == "nacl"  )
+				dump("warning: mandreel.fat platform is ("+params[1]+") and it should be (nacl)");
+			else if (params[0] == 'packdata')
+			{
+				packfiledata = params[1];
+				compressed = params[2].charAt(0) == '1';
+				packfiledata_size =  parseInt(params[3], 10);
+			}
+			else if (params[0] == 'flashsockets')
+			{
+				mandreelAppUseFlashSockets = true;
+			}
+			else if (params[0] == 'packtexture')
+			{
+				var filename = params[1];
+				var size_packtexture = parseInt(params[3], 10);
+				total_packtexture_size+=size_packtexture;
+				mandreelAppUsePackAsyncTexture.push(filename);
+			}
+			else if (params[0] == 'audiopreloadfile')
+			{
+				pogsize = parseInt(params[2],10);
+			}
+			else if (params[0] == 'audiodriver' && params[1] == 'webaudio')
+			{
+				try	{ preCreatedWebAudioContext = new webkitAudioContext(); } catch(err) { preCreatedWebAudioContext = null; }
+			}
+		}
+
+		if ( preCreatedWebAudioContext != null )
+			mandreel_total_pogfile_size = pogsize;
+		mandreel_packfiledata_name = packfiledata;
+		mandreel_packfiledata_compressed = compressed;
+		mandreel_packfiledata_size = packfiledata_size;
+		mandreel_total_packtexture_size = total_packtexture_size;
+		mandreelFatLoaded();
+	}
+	mandreelFatPreloadRequest.send();
+}
+
+var mandreelAppStartStateFunc = 0;
+var mandreelDisableSpaceKey = true;
+////////////////////////////////////////////
+function mandreelAppStart(startStateFunc,params)
+{
+	mandreelAppStartStateFunc = startStateFunc;
+
+
+
+
+	if ( typeof(params.log) != 'undefined' )
+		mandreelAppLog = params.log;
+
+	if ( typeof(params.platform) != 'undefined' )
+		mandreelAppPlatform = params.platform;
+
+	if (typeof(params.mandreelJSCompressed) != 'undefined' )
+		mandreelAppMandreelJsCompressed = params.mandreelJSCompressed;
+
+
+/*	 The following code is removed for benchmarking:
+	if ((mandreel_BrowserDetect.browser == 'Chrome' || mandreel_BrowserDetect.browser == 'Safari') && mandreel_BrowserDetect.OS == 'Mac' && mandreelAppPlatform == "flash")
+		mandreelDisableSpaceKey = false; */
+
+	if ( mandreelAppPlatform != "webgl" && mandreelAppPlatform != "flash" && mandreelAppPlatform != "nacl" && mandreelAppPlatform != "canvas" && mandreelAppPlatform != "plugin")
+	{
+		mandreelAppStartStateFunc("error",'platform ('+mandreelAppPlatform+') not supported');
+		return;
+	}
+
+	if ( mandreelAppPlatform == "webgl" || mandreelAppPlatform == "canvas" )
+	{
+		mandreelAppWorkingFolder = "data/js/";
+		if ( typeof(params.workingFolderWebgl) != 'undefined' )
+			mandreelAppWorkingFolder = params.workingFolderWebgl;
+		// Check Float64Array availability
+		if ( !Mandreel_window["Float64Array"] )
+		{
+			mandreelAppStartStateFunc("error",'Browser unsupported: Float64Array not available');
+			return;
+		}
+
+		var flashElement = Mandreel_document.getElementById('FlashWrapper');
+		if ( flashElement != null )
+		{
+			flashElement.style.visibility = "hidden";
+			flashElement.style.width = "0px";
+			flashElement.style.height = "0px";
+		}
+		var flashElement = Mandreel_document.getElementById('FlashDiv');
+		if ( flashElement != null )
+		{
+			flashElement.style.visibility = "hidden";
+			flashElement.style.width = "0px";
+			flashElement.style.height = "0px";
+		}
+
+		// Setup WebGL
+		if ( typeof(params.webglCanvas) == 'undefined' )
+		{
+			mandreelAppStartStateFunc("error",'canvas parameter not found');
+			return;
+		}
+		var canvas = Mandreel_document.getElementById(params.webglCanvas);
+		if ( canvas == null )
+		{
+			mandreelAppStartStateFunc("error",'canvas object ('+params.webglCanvas+') not found');
+			return;
+		}
+		if ( params.width != null )
+		{
+			canvas.width = params.width;
+			mandreelAppWidthSrc = params.width;
+		}
+		if ( params.height != null )
+		{
+			canvas.height = params.height;
+			mandreelAppHeightSrc = params.height;
+		}
+		if ( mandreelAppPlatform == "webgl" )
+		{
+			// The following code is removed for benchmarking:
+			// imandreel_gl = WebGLUtils.setupWebGL(canvas,{premultipliedAlpha:false,alpha:false});
+			// if (imandreel_gl == null)
+			// {
+			//	mandreelAppStartStateFunc("error","webgl_not_found");
+			//	return;
+			// }
+		}
+
+		if ( mandreelAppPlatform == "canvas" )
+		{
+			imandreel_ctx_canvas = canvas.getContext('2d');
+			if ( imandreel_ctx_canvas == null )
+			{
+				mandreelAppStartStateFunc("error","canvas context 2d not found");
+				return;
+			}
+		}
+
+		if (params.cache != null)
+		{
+			//alert( params.cache.size + params.cache.url);
+			mandreel_fs_init(function() { if ( mandreelAppStartStateFunc )
+				mandreelAppStartStateFunc("loadingFat","");
+			mandreelLoadFat();}, params.cache.size,params.cache.url);
+		}
+		else
+		{
+			// load Fat
+			if ( mandreelAppStartStateFunc )
+				mandreelAppStartStateFunc("loadingFat","");
+			mandreelLoadFat();
+		}
+	}
+
+	if ( mandreelAppPlatform == "flash" )
+	{
+		mandreelAppWorkingFolder = "data/as3/";
+		if ( typeof(params.workingFolderFlash) != 'undefined' )
+			mandreelAppWorkingFolder = params.workingFolderFlash;
+		if (!swfobject.hasFlashPlayerVersion('11.2.0'))
+		{
+			mandreelAppStartStateFunc("error","flash 11 not found");
+			return;
+		}
+
+		if ( typeof(params.flashCanvas) == 'undefined' )
+		{
+			mandreelAppStartStateFunc("error",'canvas parameter not found');
+			return;
+		}
+
+		if ( true ) // hide webgl canvas
+		{
+			var canvas = Mandreel_document.getElementById(mandreelAppCanvasDiv);
+			if ( canvas != null )
+			{
+				canvas.style.visibility = "hidden";
+				canvas.style.width = "0px";
+				canvas.style.height = "0px";
+			}
+		}
+
+		if ( params.width != null )
+		{
+			mandreelAppCanvasWidth = params.width;
+		}
+		if ( params.height != null )
+		{
+			mandreelAppCanvasHeight = params.height;
+		}
+
+		mandreelAppCanvasDiv = params.flashCanvas;
+
+		try
+		{
+			var mandreelSocketsSwf = "mandreel.swf";
+			if ( typeof(params.swfFlash) != 'undefined' )
+				mandreelSocketsSwf = params.swfFlash;
+
+			var my_flashvars = "workingFolder=" + encodeURIComponent(mandreelAppWorkingFolder);
+			if ( typeof(params.log) != 'undefined' && params.log == true)
+			  my_flashvars += "&log=true"
+			my_flashvars += "&width=" + params.width;
+			my_flashvars += "&height=" + params.height;
+			my_flashvars += "&swfloader=" + mandreelSocketsSwf;
+
+			if (typeof(params.restore_context) != 'undefined' && params.restore_context == true)
+				my_flashvars += "&restore_context=1";
+
+			if (typeof(params.antialiasing) != 'undefined')
+				my_flashvars += "&antialiasing=" + params.antialiasing;
+
+			if (typeof(params.right_click_enable) != 'undefined' && params.right_click_enable == true)
+				my_flashvars += "&right_click=1";
+
+			if (typeof(params.disable_depth) != 'undefined' && params.disable_depth == true)
+				my_flashvars += "&disable_depth=1";
+
+			var swfname = "mandreelloader.swf";
+			if ( typeof(params.swfPreloader) != 'undefined' && params.swfPreloader == false)
+				swfname = mandreelSocketsSwf;
+
+			var swf = swfobject.createSWF({ data:swfname, width:"100%", height:"100%" }, { menu:"false",allowScriptAccess:"always",allowFullScreen:"true",wmode:"direct",scale:"noscale",salign :"tl",bgcolor:"#000000",flashvars:my_flashvars}, params.flashCanvas);
+			if ( !swf )
+			{
+				mandreelAppStartStateFunc("error","error loading " + swfname);
+				return;
+			}
+			else
+			{
+				if ( mandreelAppStartStateFunc )
+					mandreelAppStartStateFunc("loadingScript","");
+			}
+		}
+		catch(err)
+		{
+			mandreelAppStartStateFunc("error","exception " + err + " while loading " + mandreelSocketsSwf);
+			return;
+		}
+
+		appStartState('loadingScript');
+	}
+
+	if ( mandreelAppPlatform == "nacl" )
+	{
+		mandreelAppWorkingFolder = "data/nacl/";
+
+		// load Fat
+		if ( mandreelAppStartStateFunc )
+			mandreelAppStartStateFunc("loadingFat","");
+		mandreelLoadFat();
+
+	}
+
+	if ( mandreelAppPlatform == "plugin" )
+	{
+		mandreelInitPluginPlatform(params);
+	}
+}
+
+
+////////////////////////////////////////////
+function MandreelAudioStartedNacl()
+{
+	var helloWorldModule = null;
+	helloWorldModule = Mandreel_document.getElementById('hello_world');
+	helloWorldModule.postMessage('init');
+	var flashElement = Mandreel_document.getElementById('FlashWrapper');
+	if ( flashElement != null )
+		flashElement.style.visibility = "hidden";
+	mandreelAppStartStateFunc("ready",mandreelAppCanvasWidth,mandreelAppCanvasHeight);
+}
+
+////////////////////////////////////////////
+function _mandreelAppStartReady()
+{
+	if ( mandreelAppPlatform == "nacl" )
+	{
+		wa_initWebAudio();
+		mandreel_webAudio_PreloadAssets();
+	}
+	else
+	{
+		if ( mandreelAppStartStateFunc )
+		{
+			mandreelAppStartRenderWebGL();
+			mandreelAppStartStateFunc("ready",mandreelAppCanvasWidth,mandreelAppCanvasHeight);
+		}
+	}
+}
+////////////////////////////////////////////
+function _mandreelAppAudioReady()
+{
+	if ( mandreelAppStartStateFunc )
+		mandreelAppStartStateFunc("audioLoaded","");
+
+	if ( mandreelAppUseFlashSockets )
+		mandreel_flash_sockets_load_flash(_mandreelAppStartReady);
+	else
+		_mandreelAppStartReady();
+}
+
+////////////////////////////////////////////
+function mandreelAppInit()
+{
+	if ( mandreelAppPlatform == "webgl" || mandreelAppPlatform == "canvas" )
+	{
+		global_init(g_stack_pointer+800*1024);
+
+		//Mandreel_TextureAsync_PackBufferData[_mandreel_currentPackTexture] = mandreelBufferPackAsyncTexture;
+		//mandreelBufferPackAsyncTexture = null;
+		var sp = g_stack_pointer+800*1024;
+		heapU32[sp>>2] = mandreelAppCanvasWidth;
+		heapU32[(sp+4)>>2] = mandreelAppCanvasHeight;
+		__mandreel_internal_SetResolution(sp);
+		__mandreel_internal_init(g_stack_pointer+800*1024);
+		__init(g_stack_pointer+800*1024);
+	}
+}
+
+////////////////////////////////////////////
+function mandreelAppDraw(elapsed)
+{
+	if ( mandreelAppPlatform == "webgl" || mandreelAppPlatform == "canvas" )
+	{
+		if ( mandreelAppPlatform == "canvas" && imandreel_ctx_canvas != null )
+		{
+			var canvas = Mandreel_document.getElementById(mandreelAppCanvasName);
+			imandreel_ctx_canvas.clearRect(0,0,canvas.width,canvas.height);
+		}
+		var sp = g_stack_pointer+800*1024;
+		__mandreel_internal_preupdate(sp);
+		heapU32[sp>>2] = elapsed;
+		__draw(sp);
+		__mandreel_internal_update(sp);
+		__mandreel_process_async_calls();
+	}
+}
+
+////////////////////////////////////////////
+function mandreelAppMouseWheel(delta)
+{
+	if ( mandreelAppPlatform == "webgl" || mandreelAppPlatform == "canvas" )
+	{
+		var i7 = MandreelLockFrame();
+		heap32[(i7+0)>>2] = delta;
+		__mouseWheelDelta(i7);
+		MandreelUnlockFrame();
+	}
+}
+
+////////////////////////////////////////////
+function mandreelAppMouseMove(x,y)
+{
+	if ( mandreelAppPlatform == "webgl" || mandreelAppPlatform == "canvas" )
+	{
+		var i7 = MandreelLockFrame();
+		heap32[(i7+0)>>2] = x;
+		heap32[(i7+4)>>2] = y;
+		__mouseMove(i7);
+		MandreelUnlockFrame();
+	}
+}
+
+////////////////////////////////////////////
+function mandreelAppResize(x,y)
+{
+	if ( mandreelAppPlatform == "webgl" || mandreelAppPlatform == "canvas" )
+	{
+		var i7 = MandreelLockFrame();
+		heap32[(i7+0)>>2] = x;
+		heap32[(i7+4)>>2] = y;
+		__resize(i7);
+		heap32[(i7+0)>>2] = x;
+		heap32[(i7+4)>>2] = y;
+		__mandreel_internal_SetResolution(i7);
+		MandreelUnlockFrame();
+	}
+}
+
+////////////////////////////////////////////
+function mandreelAppMouseButton(down,x,y)
+{
+	if ( mandreelAppPlatform == "webgl" || mandreelAppPlatform == "canvas" )
+	{
+		var i7 = MandreelLockFrame();
+		heap32[(i7+0)>>2] = down;
+		heap32[(i7+4)>>2] = x;
+		heap32[(i7+8)>>2] = y;
+		__mouseButton(i7);
+		MandreelUnlockFrame();
+	}
+}
+
+////////////////////////////////////////////
+function mandreelAppMouseDblClick(x,y)
+{
+	if ( mandreelAppPlatform == "webgl" || mandreelAppPlatform == "canvas" )
+	{
+		var i7 = MandreelLockFrame();
+		heap32[(i7+0)>>2] = x;
+		heap32[(i7+4)>>2] = y;
+		__mouseDoubleClick(i7);
+		MandreelUnlockFrame();
+	}
+}
+
+////////////////////////////////////////////
+function mandreelAppKeyEvent(down,keyId)
+{
+	if ( mandreelAppPlatform == "webgl" || mandreelAppPlatform == "canvas" )
+	{
+		var i7 = MandreelLockFrame();
+		heap32[(i7+0)>>2] = down;
+		heap32[(i7+4)>>2] = keyId;
+		__keyEvent(i7);
+		MandreelUnlockFrame();
+	}
+}
+
+////////////////////////////////////////////
+function mandreelAppGetPlatform()
+{
+	return mandreelAppPlatform;
+}
+
+////////////////////////////////////////////
+function mandreelAppGetElementAbsolutePos(elementName)
+{
+	var element = Mandreel_document.getElementById(elementName);
+	var res = new Object();
+	res.x = 0; res.y = 0;
+	if (element !== null)
+	{
+		if (element.getBoundingClientRect)
+		{
+			var viewportElement = Mandreel_document.documentElement;
+			var box = element.getBoundingClientRect();
+			var scrollLeft = viewportElement.scrollLeft;
+			var scrollTop = viewportElement.scrollTop;
+			res.x = box.left + scrollLeft;
+			res.y = box.top + scrollTop;
+		}
+		else
+		{ //for old browsers
+			res.x = element.offsetLeft;
+			res.y = element.offsetTop;
+			var parentNode = element.parentNode;
+			var borderWidth = null;
+			while (offsetParent != null)
+			{
+				res.x += offsetParent.offsetLeft;
+				res.y += offsetParent.offsetTop;
+				var parentTagName = offsetParent.tagName.toLowerCase();
+				if ((__isIEOld && parentTagName != "table") ||
+					((__isFireFoxNew || __isChrome) &&
+						parentTagName == "td"))
+				{
+					borderWidth = kGetBorderWidth(offsetParent);
+					res.x += borderWidth.left;
+					res.y += borderWidth.top;
+				}
+
+				if (offsetParent != Mandreel_document.body &&
+				offsetParent != Mandreel_document.documentElement)
+				{
+					res.x -= offsetParent.scrollLeft;
+					res.y -= offsetParent.scrollTop;
+				}
+
+				//next lines are necessary to fix the problem
+				//with offsetParent
+				if (!__isIE && !__isOperaOld || __isIENew)
+				{
+					while (offsetParent != parentNode &&
+						parentNode !== null) {
+						res.x -= parentNode.scrollLeft;
+						res.y -= parentNode.scrollTop;
+						if (__isFireFoxOld || __isWebKit)
+						{
+						    borderWidth =
+						     kGetBorderWidth(parentNode);
+						    res.x += borderWidth.left;
+						    res.y += borderWidth.top;
+						}
+						parentNode = parentNode.parentNode;
+					}
+				}
+
+				parentNode = offsetParent.parentNode;
+				offsetParent = offsetParent.offsetParent;
+			}
+		}
+	}
+	return res;
+}
+function __getIEVersion()
+{
+	var rv = -1; // Return value assumes failure.
+	if (navigator.appName == 'Microsoft Internet Explorer')
+	{
+		var ua = navigator.userAgent;
+		var re = new RegExp("MSIE ([0-9]{1,}[\.0-9]{0,})");
+		if (re.exec(ua) != null)
+			rv = parseFloat(RegExp.$1);
+	}
+	return rv;
+}
+function __getOperaVersion()
+{
+	var rv = 0; // Default value
+	if (Mandreel_window.opera)
+	{
+		var sver = Mandreel_window.opera.version();
+		rv = parseFloat(sver);
+	}
+	return rv;
+}
+/* The following code was removed for benchmarking:
+var __userAgent = navigator.userAgent;
+var __isIE =  navigator.appVersion.match(/MSIE/) != null;
+var __IEVersion = __getIEVersion();
+var __isIENew = __isIE && __IEVersion >= 8;
+var __isIEOld = __isIE && !__isIENew;
+var __isFireFox = __userAgent.match(/firefox/i) != null;
+var __isFireFoxOld = __isFireFox && ((__userAgent.match(/firefox\/2./i) != null) || (__userAgent.match(/firefox\/1./i) != null));
+var __isFireFoxNew = __isFireFox && !__isFireFoxOld;
+var __isWebKit =  navigator.appVersion.match(/WebKit/) != null;
+var __isChrome =  navigator.appVersion.match(/Chrome/) != null;
+var __isOpera =  Mandreel_window.opera != null;
+var __operaVersion = __getOperaVersion();
+var __isOperaOld = __isOpera && (__operaVersion < 10); */
+function __parseBorderWidth(width)
+{
+	var res = 0;
+	if (typeof(width) == "string" && width != null && width != "" )
+	{
+		var p = width.indexOf("px");
+		if (p >= 0)
+		{
+			res = parseInt(width.substring(0, p));
+		}
+		else
+		{
+			//do not know how to calculate other values (such as 0.5em or 0.1cm) correctly now so just set the width to 1 pixel
+			res = 1;
+		}
+	}
+	return res;
+}
+function __getBorderWidth(element)
+{
+	var res = new Object();
+	res.left = 0; res.top = 0; res.right = 0; res.bottom = 0;
+	if (Mandreel_window.getComputedStyle)
+	{
+		//for Firefox
+		var elStyle = Mandreel_window.getComputedStyle(element, null);
+		res.left = parseInt(elStyle.borderLeftWidth.slice(0, -2));
+		res.top = parseInt(elStyle.borderTopWidth.slice(0, -2));
+		res.right = parseInt(elStyle.borderRightWidth.slice(0, -2));
+		res.bottom = parseInt(elStyle.borderBottomWidth.slice(0, -2));
+	}
+	else
+	{
+		//for other browsers
+		res.left = __parseBorderWidth(element.style.borderLeftWidth);
+		res.top = __parseBorderWidth(element.style.borderTopWidth);
+		res.right = __parseBorderWidth(element.style.borderRightWidth);
+		res.bottom = __parseBorderWidth(element.style.borderBottomWidth);
+	}
+	return res;
+}
+
+
+////////////////////////////////////////////
+// WebGL
+////////////////////////////////////////////
+	var imandreel_gl = null;
+	var imandreel_ctx_canvas = null;
+	var imandreel_is_ready = 0;
+	var imandreel_oldTime = Date_now();
+
+	function mandreel_wheel(event) { imandreel_onMouseWheel(event);event.preventDefault(); event.returnValue=false; }
+
+	////////////////////////////////////////////
+	function mandreelAppStartRenderWebGL()
+	{
+/* The following code was removed for benchmarking:
+		var canvas = document.getElementById(mandreelAppCanvasName);
+
+		mandreelAppCanvasWidth = canvas.width;
+		mandreelAppCanvasHeight = canvas.height;
+
+		// Register event handlers
+		if(window.addEventListener){ window.addEventListener('DOMMouseScroll',mandreel_wheel,false); }  window.onmousewheel=document.onmousewheel=mandreel_wheel;
+
+		window.addEventListener('mousedown',imandreel_onMouseDown,false);
+		window.addEventListener('mouseup',imandreel_onMouseUp,false);
+		window.addEventListener('mousemove',imandreel_onMouseMove,false);
+		window.addEventListener('dblclick',imandreel_onMouseDblClick,false);
+
+		document.body.oncontextmenu = function() { return false;};
+
+		var canvasDiv = document.getElementById(mandreelAppCanvasDiv);
+		canvasDiv.addEventListener('keydown',imandreel_onKeyDown,false);
+		canvasDiv.addEventListener('keyup',imandreel_onKeyUp,false);
+		canvasDiv.focus();*/
+
+		// Call mandreel app init funtion (__init())
+		mandreelAppInit();
+
+		// Start rendering
+		imandreel_is_ready = 1;
+		//imandreel_render();
+	}
+
+	////////////////////////////////////////////
+	function imandreel_render()
+	{
+		if( ABORT )
+			return;
+
+		var canvas = Mandreel_document.getElementById(mandreelAppCanvasName);
+		WebGLUtils.requestAnimationFrame(canvas, imandreel_render);
+
+
+		// Reshape
+		if (canvas.clientWidth != mandreelAppCanvasWidth || canvas.clientHeight != mandreelAppCanvasHeight)
+		{
+			mandreelAppCanvasWidth = canvas.clientWidth;
+			mandreelAppCanvasHeight = canvas.clientHeight;
+			imandreel_gl.viewport(0, 0, mandreelAppCanvasWidth, mandreelAppCanvasHeight);
+		}
+
+		// Set the focus to the canvas div
+		if (mandreelAppForceFocus)
+		{
+			var canvasDiv = Mandreel_document.getElementById(mandreelAppCanvasDiv);
+			canvasDiv.focus();
+		}
+
+		// Call mandreel app draw funtion (__draw())
+		var nowTime = Date_now();
+		if (!g_mandreel_frame_locked)
+		{
+			g_mandreel_frame_inframe = true;
+			if (!_imandreel_pause_game)
+				mandreelAppDraw(nowTime-imandreel_oldTime);
+			g_mandreel_frame_inframe = false;
+		}
+		imandreel_oldTime = nowTime;
+	}
+
+	function render()
+	{
+		// Call mandreel app draw funtion (__draw())
+		var nowTime = Date_now();
+		if (!g_mandreel_frame_locked)
+		{
+			g_mandreel_frame_inframe = true;
+			if (!_imandreel_pause_game)
+				mandreelAppDraw(nowTime-imandreel_oldTime);
+			g_mandreel_frame_inframe = false;
+		}
+		imandreel_oldTime = nowTime;
+	}
+
+	var imandreel_last_movex = 0;
+	var imandreel_last_movey = 0;
+
+	////////////////////////////////////////////
+	function imandreel_onMouseMove(e)
+	{
+		if (!imandreel_is_ready)
+			return;
+
+		if (_imandreel_pause_game)
+			return;
+
+		var pos = mandreelAppGetElementAbsolutePos(mandreelAppCanvasName);
+		var setX = e.clientX - pos.x;
+		var setY = e.clientY - pos.y;
+
+		  if(navigator.pointer && navigator.pointer.isLocked) {
+            var deltaX = event.movementX || event.webkitMovementX || event.mozMovementX || 0;
+            var deltaY = event.movementY || event.webkitMovementY || event.mozMovementX || 0;
+
+			setX = imandreel_last_movex+deltaX;
+			setY = imandreel_last_movey+deltaY;
+			}
+
+
+		imandreel_last_movex = setX;
+		imandreel_last_movey = setY;
+		mandreelAppMouseMove(setX,setY);
+	}
+
+	////////////////////////////////////////////
+	function imandreel_onMouseDblClick(e)
+	{
+		if (!imandreel_is_ready)
+			return;
+
+		if (_imandreel_pause_game)
+			return;
+
+		var pos = mandreelAppGetElementAbsolutePos(mandreelAppCanvasName);
+		var setX = e.clientX - pos.x;
+		var setY = e.clientY - pos.y;
+		mandreelAppMouseDblClick(setX,setY);
+	}
+
+	////////////////////////////////////////////
+	var mandreel_mouse_down = false;
+	var mandreel_rmouse_down = false;
+	function imandreel_onMouseDown(e)
+	{
+		if (!imandreel_is_ready)
+			return;
+
+		if (_imandreel_pause_game)
+			return;
+
+		var rightclick;
+		if (!e) var e = Mandreel_window.event;
+		if (e.which) rightclick = (e.which == 3);
+		else if (e.button) rightclick = (e.button == 2);
+
+		var pos = mandreelAppGetElementAbsolutePos(mandreelAppCanvasName);
+		var setX = e.clientX - pos.x;
+		var setY = e.clientY - pos.y;
+
+		if (!rightclick)
+		{
+			if (mandreel_mouse_down)
+				return;
+
+			mandreel_mouse_down = true;
+			mandreelAppMouseButton(1,setX,setY);
+		}
+		else
+		{
+			if (mandreel_rmouse_down)
+				return;
+
+			mandreel_rmouse_down = true;
+			mandreelAppMouseButton(3,setX,setY);
+		}
+	}
+
+	////////////////////////////////////////////
+	function imandreel_onMouseUp(e)
+	{
+		if (!imandreel_is_ready)
+			return;
+
+		if (_imandreel_pause_game)
+			return;
+
+		var rightclick;
+		if (!e) var e = Mandreel_window.event;
+		if (e.which) rightclick = (e.which == 3);
+		else if (e.button) rightclick = (e.button == 2);
+
+		var pos = mandreelAppGetElementAbsolutePos(mandreelAppCanvasName);
+		var setX = e.clientX - pos.x;
+		var setY = e.clientY - pos.y;
+
+
+		if (!rightclick)
+		{
+			if (mandreel_mouse_down == false)
+				return;
+
+			mandreel_mouse_down = false;
+			mandreelAppMouseButton(0,setX,setY);
+		}
+		else
+		{
+			if (mandreel_rmouse_down == false)
+				return;
+
+			mandreel_rmouse_down = false;
+			mandreelAppMouseButton(2,setX,setY);
+		}
+	}
+
+	////////////////////////////////////////////
+	function imandreel_onMouseWheel(e)
+	{
+		if (!imandreel_is_ready)
+			return;
+
+		if (_imandreel_pause_game)
+			return;
+
+		mandreelAppMouseWheel(e.wheelDelta);
+	}
+
+	////////////////////////////////////////////
+	function imandreel_onKeyUp(e)
+	{
+		if (!imandreel_is_ready)
+			return;
+
+		if (_imandreel_pause_game)
+			return;
+
+		var KeyID = e.keyCode;
+		mandreelAppKeyEvent(0,KeyID);
+	}
+
+	////////////////////////////////////////////
+	Mandreel_window.onkeydown = function(e)
+	{
+		if (mandreelDisableSpaceKey == false && e.keyCode == 32)
+			return;
+		return !(e.keyCode == 32 || e.keyCode == 9);
+	};
+
+	////////////////////////////////////////////
+	function imandreel_onKeyDown(e)
+	{
+		if (e.which === 8) // disable back button on browser
+        {
+	        e.preventDefault();
+	    }
+		if (!imandreel_is_ready)
+			return;
+
+		if (_imandreel_pause_game)
+			return;
+
+		var KeyID = e.keyCode;
+		mandreelAppKeyEvent(1,KeyID);
+	}
+
+
+////////////////////////////////////////////
+// Flash
+////////////////////////////////////////////
+
+(function(){
+		try {
+			// Disabling SWFObject's Autohide feature
+			if (typeof swfobject.switchOffAutoHideShow === "function") {
+				swfobject.switchOffAutoHideShow();
+			}
+		} catch(e) {}
+	})();
+
+var imandreel_flash_global_sp = 0;
+var imandreel_flash_global_sp2 = 0;
+var imandreel_flash_current_sp = 0;
+
+function MandreelInterSwfLoaded2()
+{
+}
+function MandreelInterSwfLoaded()
+{
+	appStartState('scriptLoaded');
+	var flashMovie = swfobject.getObjectById(mandreelAppCanvasDiv)
+	dump(flashMovie.width);
+	flashMovie.MandreelInit();
+
+	imandreel_flash_global_sp = MandreelInterGetSWF().MandreelInterGetGlobalStack();
+	imandreel_flash_global_sp2 = MandreelInterGetSWF().MandreelInterGetGlobalStack2();
+	if ( mandreelAppStartStateFunc )
+		mandreelAppStartStateFunc("ready",mandreelAppCanvasWidth,mandreelAppCanvasHeight);
+}
+
+
+
+var g_mandreel_swf = null;
+
+function MandreelInterGetSWF()
+{
+	if (g_mandreel_swf)
+		return g_mandreel_swf;
+
+	g_mandreel_swf = swfobject.getObjectById(mandreelAppCanvasDiv)
+	return g_mandreel_swf;
+}
+
+function MandreelInterWriteInt(ptr, value)
+{
+	MandreelInterGetSWF().MandreelInterWriteInt(ptr,value);
+}
+
+function MandreelInterWriteFloat(ptr, value)
+{
+	MandreelInterGetSWF().MandreelInterWriteFloat(ptr,value);
+}
+
+function MandreelInterWriteString(ptr, value)
+{
+	MandreelInterGetSWF().MandreelInterWriteString(ptr,value);
+}
+
+function MandreelInterWriteWString(ptr, value)
+{
+	MandreelInterGetSWF().MandreelInterWriteWString(ptr,value);
+}
+
+function MandreelInterCallFunctionRaw(sp, func_name, returnType)
+{
+	return MandreelInterGetSWF().MandreelInterCallFunctionRaw(sp,func_name,returnType);
+}
+
+
+function assert(condition, _text) {
+//console.assert(condition, _text);
+    if (!condition) {
+      var text = "Assertion failed: " + _text;
+      alert(text + ':\n' + (new Error).stack);
+      ABORT = true;
+      throw "Assertion: " + text;
+    }
+  }
+
+
+
+function MandreelLockFrame()
+{
+	MandreelInterGetSWF().MandreelLockFrame();
+
+	imandreel_flash_current_sp += 300*1024;
+
+	assert(imandreel_flash_current_sp<1024*1024);
+
+	return imandreel_flash_current_sp;
+}
+
+function MandreelPause()
+{
+	MandreelInterGetSWF().MandreelPause();
+}
+
+function MandreelResume()
+{
+	MandreelInterGetSWF().MandreelResume();
+}
+
+
+function MandreelUnlockFrame()
+{
+	imandreel_flash_current_sp -= 300*1024;
+	MandreelInterGetSWF().MandreelUnlockFrame();
+}
+
+
+
+function MandreelInterCallFunctionAsync(func_name,param)
+{
+	return MandreelInterGetSWF().MandreelInterCallFunctionAsync(func_name, param);
+}
+
+
+function MandreelInterCallFunction(returnType,func_name)
+{
+	var size_params = 0;
+
+	var i;
+	var num_params = (arguments.length-2)/2;
+	num_params|=0;
+	for (i=2;i<num_params*2+2;i+=2)
+	{
+		var type = arguments[i];
+
+		var size_arg = 0;
+		switch(type)
+		{
+			case 'int':
+				size_arg = 4;
+				break;
+			case 'float':
+				size_arg = 4;
+				break;
+			case 'string':
+				size_arg = 4;
+				size_arg += ((arguments[i+1].length + 4) & 0xfffffffc);
+				break;
+			case 'wstring':
+				size_arg = 4;
+				size_arg += ((arguments[i+1].length*2 + 4) & 0xfffffffc);
+				break;
+			default:
+				assert(false);
+		}
+
+		size_params += size_arg;
+	}
+
+	// stack always 8 byte aligned
+	size_params=((size_params+7)& 0xfffffff8);
+
+	var sp = 0;
+
+	if (i<(arguments.length))
+		sp = arguments[i];
+	else
+	{
+		assert(false);
+	}
+
+
+	sp-=size_params;
+
+	MandreelLockFrame();
+
+	var offset = 0;
+	var ptr_data = num_params*4+sp;
+    for (i=2;i<num_params*2+2;i+=2)
+	{
+		var type = arguments[i];
+
+
+		var size_arg = 0;
+		switch(type)
+		{
+			case 'int':
+				MandreelInterWriteInt((sp+offset),arguments[i+1]);
+				break;
+			case 'float':
+				MandreelInterWriteFloat((sp+offset),arguments[i+1]);
+				break;
+			case 'string':
+				{
+					MandreelInterWriteInt((sp+offset),ptr_data);
+					var string = arguments[i+1];
+					MandreelInterWriteString(ptr_data,string);
+
+					ptr_data += ((string.length + 4) & 0xfffffffc);
+				}
+				break;
+			case 'wstring':
+				{
+					MandreelInterWriteInt((sp+offset),ptr_data);
+					var string = arguments[i+1];
+					MandreelInterWriteWString(ptr_data,string);
+
+					ptr_data += ((string.length*2 + 4) & 0xfffffffc);
+				}
+				break;
+			default:
+				assert(false);
+		}
+		offset+=4;
+	}
+
+	return_value = MandreelInterCallFunctionRaw(sp, func_name, returnType);
+
+	MandreelUnlockFrame();
+
+	if (returnType == 'int')
+		return parseInt(return_value);
+	else if (returnType == 'float')
+		return parseFloat(return_value);
+
+	return;
+}
+
+
+
+// file system
+
+var g_mandreel_timestamp_fs = 0;
+var g_mandreel_fs = null;
+
+function onMandreelQuotaOk(fs)
+{
+	g_mandreel_fs = fs;
+	dump('onMandreelQuotaOk');
+}
+
+
+function MandreelFsErrorHandler(e) {
+  var msg = '';
+
+  switch (e.code) {
+    case FileError.QUOTA_EXCEEDED_ERR:
+      msg = 'QUOTA_EXCEEDED_ERR';
+      break;
+    case FileError.NOT_FOUND_ERR:
+      msg = 'NOT_FOUND_ERR';
+      break;
+    case FileError.SECURITY_ERR:
+      msg = 'SECURITY_ERR';
+      break;
+    case FileError.INVALID_MODIFICATION_ERR:
+      msg = 'INVALID_MODIFICATION_ERR';
+      break;
+    case FileError.INVALID_STATE_ERR:
+      msg = 'INVALID_STATE_ERR';
+      break;
+    default:
+      msg = 'Unknown Error';
+      break;
+  };
+
+  dump('Error: ' + msg);
+  dump(e);
+}
+
+var indexedDB = Mandreel_window.indexedDB || Mandreel_window.webkitIndexedDB ||
+                Mandreel_window.mozIndexedDB;
+
+if ('webkitIndexedDB' in Mandreel_window) {
+  Mandreel_window.IDBTransaction = Mandreel_window.webkitIDBTransaction;
+  Mandreel_window.IDBKeyRange = Mandreel_window.webkitIDBKeyRange;
+}
+
+
+var mandreel_indexedDB = {};
+mandreel_indexedDB.db = null;
+mandreel_indexedDB.callback_init = false;
+
+mandreel_indexedDB.onerror = function(e) {
+  dump(e);
+};
+
+mandreel_indexedDB.init = function(callback)
+{
+ try {
+	var request = indexedDB.open('my_cache', 2);
+
+	request.onerror = function(event) {
+		callback(false);
+		};
+	request.onupgradeneeded = function(event) {
+	dump('onupgradeneeded\n');
+	mandreel_indexedDB.db = event.target.result;
+    var db = mandreel_indexedDB.db;
+	var objectStore = db.createObjectStore("cache",{keyPath: "fileName"});
+	}
+
+  request.onsuccess = function(event) {
+  dump('onsuccess\n');
+    mandreel_indexedDB.db = event.target.result;
+    	callback(true);
+
+  };
+  }
+  catch(e)
+  {
+	callback(false);
+  }
+
+}
+
+function mandreel_fs_init(callback, size_bytes, url_time)
+{
+
+	g_mandreel_timestamp_fs = 99999999999999;
+
+
+
+
+	var aux = null;
+	try	{ aux = webkitStorageInfo; } catch(err) { aux = null; }
+	if (aux == null)
+	{
+		//callback(false);
+
+		var time_request = new XMLHttpRequest();
+	time_request.open('GET',url_time);
+	time_request.onreadystatechange = function()
+	{
+		if (time_request.readyState==4)
+		{
+			if (time_request.status==200 || time_request.status==0)
+			{
+
+				if (time_request.responseText)
+				{
+					g_mandreel_timestamp_fs = parseFloat(time_request.responseText);
+					dump('mandreel_init_fs time ' + g_mandreel_timestamp_fs);
+				}
+			}
+
+			mandreel_indexedDB.init(callback);
+		}
+	}
+	time_request.send();
+
+
+		return;
+	}
+
+	webkitStorageInfo.requestQuota(
+		webkitStorageInfo.PERSISTENT ,   // or PERSISTENT
+		size_bytes,
+		function(bytes) {  dump('request quota succeed');},
+		function () { dump('request quota failed');} );
+
+
+//	g_mandreel_timestamp_fs =0;
+
+	var time_request = new XMLHttpRequest();
+	time_request.open('GET',url_time);
+	time_request.onreadystatechange = function()
+	{
+		if (time_request.readyState==4)
+		{
+			if (time_request.status==200 || time_request.status==0)
+			{
+
+				if (time_request.responseText)
+				{
+					g_mandreel_timestamp_fs = parseFloat(time_request.responseText);
+					dump('mandreel_init_fs time ' + g_mandreel_timestamp_fs);
+				}
+			}
+
+			var my_requestFileSystem  = Mandreel_window.requestFileSystem || Mandreel_window.webkitRequestFileSystem;
+
+			my_requestFileSystem(Mandreel_window.PERSISTENT, size_bytes,
+				function(result)
+				{
+					onMandreelQuotaOk(result);
+
+
+					if (callback)
+						Mandreel_setTimeout(callback, 100, true);
+				} , function(e) { MandreelFsErrorHandler(e); if (callback) callback(false); } );
+		}
+	}
+	time_request.send();
+}
+
+
+mandreel_indexedDB.load = function(file_name, callback)
+{
+	var db = mandreel_indexedDB.db;
+	var trans = db.transaction(["cache"]);
+	var store = trans.objectStore("cache");
+
+	var key = file_name;
+
+	 var getReq = store.get(key);
+	   getReq.onsuccess = function (ev) {
+			if (getReq.result)
+	{
+	dump('chanka ' + g_mandreel_timestamp_fs + ' ' + getReq.result.timeStamp + '\n');
+				if (getReq.result.timeStamp>=g_mandreel_timestamp_fs)
+					callback(getReq.result.data);
+				else
+					callback(null);
+			}
+			else
+				callback(null);
+	   }
+	   getReq.onerror = function (ev) {
+		   console.log("index.get failed. Error: " + ev.message);
+	   }
+}
+
+function mandreel_fs_get_url(file_name, callback)
+{
+	if (mandreel_indexedDB.db)
+	{
+		callback(null);
+		return;
+	}
+
+
+	if (g_mandreel_fs == null)
+	{
+		callback(null);
+		return;
+	}
+
+	g_mandreel_fs.root.getFile(file_name, {}, function(fileEntry) {
+
+	fileEntry.getMetadata(function(metaData){
+	var my_seconds = metaData.modificationTime.getTime()/1000;
+
+	if (g_mandreel_timestamp_fs>my_seconds)
+	{
+		callback(null);
+	}
+	else
+	{
+		//alert('mandreel_fscachefile2');
+
+
+		if (Mandreel_window.localStorage.getItem(mandreel_fs_get_key(file_name)) != null)
+			callback(fileEntry.toURL());
+		else
+			callback(null);
+
+	}
+
+
+		}, MandreelFsErrorHandler);
+
+
+  }, function(error) {callback(null);});
+
+	 return;
+
+}
+
+function mandreel_fs_load_binary(file_name, callback)
+ {
+	if (mandreel_indexedDB.db)
+	{
+		mandreel_indexedDB.load(file_name,callback);
+		return;
+	}
+
+
+	if (g_mandreel_fs == null)
+	{
+		callback(null);
+		return;
+	}
+
+
+	g_mandreel_fs.root.getFile(file_name, {}, function(fileEntry) {
+
+	fileEntry.getMetadata(function(metaData){
+	var my_seconds = metaData.modificationTime.getTime()/1000;
+
+	if (g_mandreel_timestamp_fs>my_seconds)
+	{
+		dump('mandreel_fscachefile1');
+		Mandreel_window.localStorage.removeItem(mandreel_fs_get_key(file_name));
+		fileEntry.remove(function() {
+				callback(null);
+			}, MandreelFsErrorHandler);
+
+	}
+	else
+	{
+		//alert('mandreel_fscachefile2');
+		dump('mandreel_fscachefile2 ' + my_seconds);
+
+		fileEntry.file(function(file) {
+
+				var reader = new FileReader();
+
+
+			   reader.onloadend = function(e) {
+
+				   if (this.result.byteLength && Mandreel_window.localStorage.getItem(mandreel_fs_get_key(file_name)) != null)
+				   {
+						dump('mandreel_fs_loadFile ' + file_name);
+						callback(this.result);
+					}
+					else
+						callback(null);
+
+			   };
+
+
+				 reader.readAsArrayBuffer(file);
+
+
+			}, MandreelFsErrorHandler);
+
+	}
+
+
+		}, MandreelFsErrorHandler);
+
+
+  }, function(error) {dump('mandreel_fscachefile3');	callback(null);});
+
+	 return;
+ }
+
+
+ mandreel_indexedDB.save = function(file_name, data)
+{
+	var db = mandreel_indexedDB.db;
+
+
+  var trans = db.transaction(["cache"], IDBTransaction.READ_WRITE);
+  var store = trans.objectStore("cache");
+  var request = store.put({
+    "data": data,
+	"timeStamp" : Date_now()/1000,
+    "fileName" : file_name
+  });
+
+  request.onsuccess = function(e) {
+    // Re-render all the todo's
+   // html5rocks.indexedDB.getAllTodoItems();
+   dump('mandreel_indexedDB.save ok ');
+  };
+
+  request.onerror = function(e) {
+    dump('mandreel_indexedDB.save onerror ' + file_name);
+	dump(e);
+  };
+}
+
+function mandreel_fs_get_key(name)
+{
+	return 'mandreel_fs_' + name;
+}
+
+function mandreel_is_filesystem()
+{
+	if (mandreel_indexedDB.db)
+		return false;
+
+	if (!g_mandreel_fs)
+		return false;
+
+	return true;
+}
+
+function mandreel_is_indexeddb()
+{
+	if (mandreel_indexedDB.db)
+		return true;
+
+	return false;
+}
+
+ function mandreel_fs_saveFile(name, my_arrayBuffer)
+{
+	if (mandreel_indexedDB.db)
+	{
+		mandreel_indexedDB.save(name,my_arrayBuffer);
+		return;
+	}
+
+	if (!g_mandreel_fs)
+		return;
+
+	Mandreel_window.localStorage.removeItem(mandreel_fs_get_key(name));
+	g_mandreel_fs.root.getFile(name, {create: true}, function(fileEntry) {
+
+    // Create a FileWriter object for our FileEntry (log.txt).
+    fileEntry.createWriter(function(fileWriter) {
+
+      fileWriter.onwriteend = function(e) {
+		Mandreel_window.localStorage.setItem(mandreel_fs_get_key(name),'valid');
+        dump('Write completed.');
+      };
+
+      fileWriter.onerror = function(e) {
+        dump('Write failed: ' + e.toString());
+      };
+
+	  var my_BlobBuilder = Mandreel_window.MozBlobBuilder || Mandreel_window.WebKitBlobBuilder || Mandreel_window.BlobBuilder;
+
+	  var bb = new my_BlobBuilder(); // Note: window.WebKitBlobBuilder in Chrome 12.
+      bb.append(my_arrayBuffer);
+      fileWriter.write(bb.getBlob('text/plain'));
+
+
+
+    }, MandreelFsErrorHandler);
+
+  }, MandreelFsErrorHandler);
+}
+
+
+function mandreel_fs_load_text(file_name, callback)
+ {
+
+	if (mandreel_indexedDB.db)
+	{
+		mandreel_indexedDB.load(file_name,callback);
+		return;
+	}
+
+	if (g_mandreel_fs == null)
+	{
+		callback(null);
+		return;
+	}
+
+
+	g_mandreel_fs.root.getFile(file_name, {}, function(fileEntry) {
+
+	fileEntry.getMetadata(function(metaData){
+	var my_seconds = metaData.modificationTime.getTime()/1000;
+
+	if (g_mandreel_timestamp_fs>my_seconds)
+	{
+		dump('mandreel_fscachefile1');
+		Mandreel_window.localStorage.removeItem(mandreel_fs_get_key(file_name));
+		fileEntry.remove(function() {
+				callback(null);
+			}, MandreelFsErrorHandler);
+
+	}
+	else
+	{
+		//alert('mandreel_fscachefile2');
+		dump('mandreel_fscachefile2 ' + my_seconds);
+
+		fileEntry.file(function(file) {
+
+				var reader = new FileReader();
+
+
+			   reader.onloadend = function(e) {
+
+
+				   if (this.result.length && Mandreel_window.localStorage.getItem(mandreel_fs_get_key(file_name)) != null)
+				   {
+						dump('mandreel_fs_loadFile ' + file_name);
+						callback(this.result);
+					}
+					else
+						callback(null);
+
+			   };
+
+
+				 reader.readAsText(file);
+
+
+			}, MandreelFsErrorHandler);
+
+	}
+
+
+		}, MandreelFsErrorHandler);
+
+
+  }, function(error) {dump('mandreel_fscachefile3');	callback(null);});
+
+	 return;
+ }
+
+
+ // full screen
+
+
+/* The following code was removed for benchmarking:
+ var __screen = screen; */
+
+	try
+	{
+	(function(global) {
+    "use strict";
+	var elementPrototype = (global.HTMLElement || global.Element)["prototype"];
+
+	 // document.isFullScreen
+    if(!Mandreel_document.hasOwnProperty("fullscreenEnabled")) {
+        var getter = (function() {
+            // These are the functions that match the spec, and should be preferred
+            if("webkitIsFullScreen" in Mandreel_document) {
+                return function() { return Mandreel_document.webkitIsFullScreen; }
+            }
+            if("mozFullScreen" in Mandreel_document) {
+                return function() { return Mandreel_document.mozFullScreen; }
+            }
+            return function() { return false }; // not supported, never fullscreen
+        })();
+
+        Object.defineProperty(Mandreel_document, "fullscreenEnabled", {
+            enumerable: true, configurable: false, writeable: false,
+            get: getter
+        });
+    }
+
+    if(!Mandreel_document.hasOwnProperty("fullscreenElement")) {
+        var getter = (function() {
+            // These are the functions that match the spec, and should be preferred
+            if("webkitFullscreenElement" in Mandreel_document) {
+                return function() { return Mandreel_document.webkitFullscreenElement; }
+            }
+            if("mozFullscreenElemen" in Mandreel_document) {
+                return function() { return Mandreel_document.mozFullscreenElemen; }
+            }
+            return function() { return null }; // not supported
+        })();
+
+        Object.defineProperty(Mandreel_document, "fullscreenElement", {
+            enumerable: true, configurable: false, writeable: false,
+            get: getter
+        });
+    }
+
+    // Document event: fullscreenchange
+    function fullscreenchange(oldEvent) {
+        var newEvent = Mandreel_document.createEvent("CustomEvent");
+        newEvent.initCustomEvent("fullscreenchange", true, false, null);
+        // TODO: Any need for variable copy?
+        Mandreel_document.dispatchEvent(newEvent);
+    }
+    Mandreel_document.addEventListener("webkitfullscreenchange", fullscreenchange, false);
+    Mandreel_document.addEventListener("mozfullscreenchange", fullscreenchange, false);
+
+    // Document event: fullscreenerror
+    function fullscreenerror(oldEvent) {
+        var newEvent = Mandreel_document.createEvent("CustomEvent");
+        newEvent.initCustomEvent("fullscreenerror", true, false, null);
+        // TODO: Any need for variable copy?
+        Mandreel_document.dispatchEvent(newEvent);
+    }
+    Mandreel_document.addEventListener("webkitfullscreenerror", fullscreenerror, false);
+    Mandreel_document.addEventListener("mozfullscreenerror", fullscreenerror, false);
+
+    // element.requestFullScreen
+    if(!elementPrototype.requestFullScreen) {
+        elementPrototype.requestFullScreen = (function() {
+            if(elementPrototype.webkitRequestFullScreen) {
+                return function() {
+                    this.webkitRequestFullScreen(Element.ALLOW_KEYBOARD_INPUT);
+                }
+            }
+
+            return  elementPrototype.mozRequestFullScreen    ||
+                    function(){ /* unsupported, fail silently */ };
+        })();
+    }
+
+    // document.cancelFullscreen
+    if(!Mandreel_document.cancelFullScreen) {
+        Mandreel_document.cancelFullScreen = (function() {
+            return  Mandreel_document.webkitCancelFullScreen ||
+                    Mandreel_document.mozCancelFullScreen ||
+                    function(){ /* unsupported, fail silently */ };
+        })();
+    }
+	})((typeof(exports) != 'undefined') ? global : Mandreel_window);
+	}
+	catch(e)
+	{
+	}
+
+
+try
+	{
+var __onErrorFullscreen = function() {
+  dump("Mouse lock was not successful.");
+};
+
+Mandreel_document.addEventListener('fullscreenchange', function(e) {
+
+var width;
+var height;
+ var canvas = Mandreel_document.getElementById(mandreelAppCanvasName);
+ if(Mandreel_document.fullscreenEnabled) {
+
+
+            width = __screen.width;
+            height = __screen.height;
+
+        } else {
+            width = mandreelAppWidthSrc;
+            height = mandreelAppHeightSrc;
+        }
+
+		canvas.width = width;
+		canvas.height = height;
+		mandreelAppResize(width, height);
+
+  if (Mandreel_document.fullscreenEnabled && navigator.pointer) {
+    navigator.pointer.lock(Mandreel_document.body, function() {
+      // Locked and ready to play.
+    }, __onErrorFullscreen);
+  }
+}, false);
+
+}
+catch(e)
+{
+}
+
+
+
+function mandreelAppFullscreen(enable)
+{
+	var canvas = Mandreel_document.getElementById(mandreelAppCanvasName);
+	if ( mandreelAppPlatform == "webgl" || mandreelAppPlatform == "canvas" )
+	{
+		if (canvas)
+		{
+			if (enable)
+				canvas.requestFullScreen();
+			else
+				Mandreel_document.cancelFullScreen();
+		}
+	}
+}
+
+
+function mandreelAppDisableForceFocus()
+{
+	mandreelAppForceFocus = false;
+}
+
+function mandreelAppEnableForceFocus()
+{
+	mandreelAppForceFocus = true;
+}
+
+var imandreel_base64 = {};
+imandreel_base64.PADCHAR = '=';
+imandreel_base64.ALPHA = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';
+
+imandreel_base64.makeDOMException = function() {
+    // sadly in FF,Safari,Chrome you can't make a DOMException
+    var e, tmp;
+
+    try {
+        return new DOMException(DOMException.INVALID_CHARACTER_ERR);
+    } catch (tmp) {
+        // not available, just passback a duck-typed equiv
+        // https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Global_Objects/Error
+        // https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Global_Objects/Error/prototype
+        var ex = new Error("DOM Exception 5");
+
+        // ex.number and ex.description is IE-specific.
+        ex.code = ex.number = 5;
+        ex.name = ex.description = "INVALID_CHARACTER_ERR";
+
+        // Safari/Chrome output format
+        ex.toString = function() { return 'Error: ' + ex.name + ': ' + ex.message; };
+        return ex;
+    }
+}
+
+imandreel_base64.getbyte64 = function(s,i) {
+    // This is oddly fast, except on Chrome/V8.
+    //  Minimal or no improvement in performance by using a
+    //   object with properties mapping chars to value (eg. 'A': 0)
+    var idx = imandreel_base64.ALPHA.indexOf(s.charAt(i));
+    if (idx === -1) {
+        throw imandreel_base64.makeDOMException();
+    }
+    return idx;
+}
+
+imandreel_base64.decode = function(s) {
+    // convert to string
+    s = '' + s;
+    var getbyte64 = imandreel_base64.getbyte64;
+    var pads, i, b10;
+    var imax = s.length
+    if (imax === 0) {
+        return s;
+    }
+
+    if (imax % 4 !== 0) {
+        throw imandreel_base64.makeDOMException();
+    }
+
+    pads = 0
+    if (s.charAt(imax - 1) === imandreel_base64.PADCHAR) {
+        pads = 1;
+        if (s.charAt(imax - 2) === imandreel_base64.PADCHAR) {
+            pads = 2;
+        }
+        // either way, we want to ignore this last block
+        imax -= 4;
+    }
+
+    var x = [];
+    for (i = 0; i < imax; i += 4) {
+        b10 = (getbyte64(s,i) << 18) | (getbyte64(s,i+1) << 12) |
+            (getbyte64(s,i+2) << 6) | getbyte64(s,i+3);
+        x.push(String.fromCharCode(b10 >> 16, (b10 >> 8) & 0xff, b10 & 0xff));
+    }
+
+    switch (pads) {
+    case 1:
+        b10 = (getbyte64(s,i) << 18) | (getbyte64(s,i+1) << 12) | (getbyte64(s,i+2) << 6);
+        x.push(String.fromCharCode(b10 >> 16, (b10 >> 8) & 0xff));
+        break;
+    case 2:
+        b10 = (getbyte64(s,i) << 18) | (getbyte64(s,i+1) << 12);
+        x.push(String.fromCharCode(b10 >> 16));
+        break;
+    }
+    return x.join('');
+}
+
+if (!Mandreel_window.atob) {
+Mandreel_window.atob = function(a) { return  imandreel_base64.decode(a); }
+}
+
+
+function imandreel_interop_callbridge(new_method, sp)
+{
+
+	var n = new Array();
+
+	for( var i = 2; i < arguments.length; i++ )
+	{
+
+		if (typeof arguments[i] == 'string')
+			n.push(atob(arguments[i]));
+		else
+			n.push(arguments[i]);
+	}
+
+	var total_args = arguments.length-2;
+
+	switch(total_args)
+	{
+		case 0:
+			return Mandreel_window[new_method](sp);
+		case 1:
+			return Mandreel_window[new_method](sp, n[0]);
+		case 2:
+			return Mandreel_window[new_method](sp, n[0], n[1]);
+		case 3:
+			return Mandreel_window[new_method](sp, n[0], n[1], n[2]);
+		case 4:
+			return Mandreel_window[new_method](sp, n[0], n[1], n[2], n[3]);
+		case 5:
+			return Mandreel_window[new_method](sp, n[0], n[1], n[2], n[3], n[4]);
+		case 6:
+			return Mandreel_window[new_method](sp, n[0], n[1], n[2], n[3], n[4], n[5]);
+		case 7:
+			return Mandreel_window[new_method](sp, n[0], n[1], n[2], n[3], n[4], n[5], n[6]);
+		case 8:
+			return Mandreel_window[new_method](sp, n[0], n[1], n[2], n[3], n[4], n[5], n[6], n[7]);
+		case 9:
+			return Mandreel_window[new_method](sp, n[0], n[1], n[2], n[3], n[4], n[5], n[6], n[7], n[8]);
+		case 10:
+			return Mandreel_window[new_method](sp, n[0], n[1], n[2], n[3], n[4], n[5], n[6], n[7], n[8], n[9]);
+		case 11:
+			return Mandreel_window[new_method](sp, n[0], n[1], n[2], n[3], n[4], n[5], n[6], n[7], n[8], n[9], n[10]);
+		case 12:
+			return Mandreel_window[new_method](sp, n[0], n[1], n[2], n[3], n[4], n[5], n[6], n[7], n[8], n[9], n[10], n[11]);
+		case 13:
+			return Mandreel_window[new_method](sp, n[0], n[1], n[2], n[3], n[4], n[5], n[6], n[7], n[8], n[9], n[10], n[11], n[12]);
+		case 14:
+			return Mandreel_window[new_method](sp, n[0], n[1], n[2], n[3], n[4], n[5], n[6], n[7], n[8], n[9], n[10], n[11], n[12], n[13]);
+		case 15:
+			return Mandreel_window[new_method](sp, n[0], n[1], n[2], n[3], n[4], n[5], n[6], n[7], n[8], n[9], n[10], n[11], n[12], n[13], n[14]);
+		case 16:
+			return Mandreel_window[new_method](sp, n[0], n[1], n[2], n[3], n[4], n[5], n[6], n[7], n[8], n[9], n[10], n[11], n[12], n[13], n[14], n[15]);
+		break;
+	}
+
+}
+function imandreel_as3_dump(param)
+{
+	dump(atob(param));
+}
+
+
+var mandreel_embed_plugin;
+
+function PluginMandreelInterWriteInt(ptr, value)
+{
+	mandreel_embed_plugin.MandreelInterCalls("WriteInt", ptr,value);
+}
+
+function PluginMandreelInterWriteFloat(ptr, value)
+{
+	mandreel_embed_plugin.MandreelInterCalls("WriteFloat", ptr,value);
+}
+
+function PluginMandreelInterWriteString(ptr, value)
+{
+	mandreel_embed_plugin.MandreelInterCalls("WriteString", ptr,value);
+}
+
+function PluginMandreelInterWriteWString(ptr, value)
+{
+	mandreel_embed_plugin.MandreelInterCalls("WriteWString", ptr,value);
+}
+
+var mandreel_plugin_current_sp = 0;
+
+function PluginMandreelLockFrame()
+{
+	var result = mandreel_embed_plugin.MandreelInterCalls("LockFrame");
+
+	mandreel_plugin_current_sp+=300*1024;
+
+	assert(mandreel_plugin_current_sp<1024*1024);
+
+	return result+mandreel_plugin_current_sp;
+}
+
+function PluginMandreelPause()
+{
+	mandreel_embed_plugin.MandreelInterCalls("Pause");
+}
+
+function PluginMandreelResume()
+{
+	mandreel_embed_plugin.MandreelInterCalls("Resume");
+}
+
+
+function PluginMandreelUnlockFrame()
+{
+	mandreel_embed_plugin.MandreelInterCalls("UnlockFrame");
+
+	mandreel_plugin_current_sp-=300*1024;
+}
+
+function PluginMandreelInterCallFunction()
+{
+	var total_args = arguments.length;
+
+	switch(total_args)
+	{
+		case 0:
+			return mandreel_embed_plugin.MandreelInterCallFunction();
+		case 1:
+			return mandreel_embed_plugin.MandreelInterCallFunction(arguments[0]);
+		case 2:
+			return mandreel_embed_plugin.MandreelInterCallFunction(arguments[0], arguments[1]);
+		case 3:
+			return mandreel_embed_plugin.MandreelInterCallFunction(arguments[0], arguments[1], arguments[2]);
+		case 4:
+			return mandreel_embed_plugin.MandreelInterCallFunction(arguments[0], arguments[1], arguments[2], arguments[3]);
+		case 5:
+			return mandreel_embed_plugin.MandreelInterCallFunction(arguments[0], arguments[1], arguments[2], arguments[3], arguments[4]);
+		case 6:
+			return mandreel_embed_plugin.MandreelInterCallFunction(arguments[0], arguments[1], arguments[2], arguments[3], arguments[4], arguments[5]);
+		case 7:
+			return mandreel_embed_plugin.MandreelInterCallFunction(arguments[0], arguments[1], arguments[2], arguments[3], arguments[4], arguments[5], arguments[6]);
+		case 8:
+			return mandreel_embed_plugin.MandreelInterCallFunction(arguments[0], arguments[1], arguments[2], arguments[3], arguments[4], arguments[5], arguments[6], arguments[7]);
+		case 9:
+			return mandreel_embed_plugin.MandreelInterCallFunction(arguments[0], arguments[1], arguments[2], arguments[3], arguments[4], arguments[5], arguments[6], arguments[7], arguments[8]);
+		case 10:
+			return mandreel_embed_plugin.MandreelInterCallFunction(arguments[0], arguments[1], arguments[2], arguments[3], arguments[4], arguments[5], arguments[6], arguments[7], arguments[8], arguments[9]);
+		case 11:
+			return mandreel_embed_plugin.MandreelInterCallFunction(arguments[0], arguments[1], arguments[2], arguments[3], arguments[4], arguments[5], arguments[6], arguments[7], arguments[8], arguments[9], arguments[10]);
+		case 12:
+			return mandreel_embed_plugin.MandreelInterCallFunction(arguments[0], arguments[1], arguments[2], arguments[3], arguments[4], arguments[5], arguments[6], arguments[7], arguments[8], arguments[9], arguments[10], arguments[11]);
+		case 13:
+			return mandreel_embed_plugin.MandreelInterCallFunction(arguments[0], arguments[1], arguments[2], arguments[3], arguments[4], arguments[5], arguments[6], arguments[7], arguments[8], arguments[9], arguments[10], arguments[11], arguments[12]);
+		case 14:
+			return mandreel_embed_plugin.MandreelInterCallFunction(arguments[0], arguments[1], arguments[2], arguments[3], arguments[4], arguments[5], arguments[6], arguments[7], arguments[8], arguments[9], arguments[10], arguments[11], arguments[12], arguments[13]);
+		case 15:
+			return mandreel_embed_plugin.MandreelInterCallFunction(arguments[0], arguments[1], arguments[2], arguments[3], arguments[4], arguments[5], arguments[6], arguments[7], arguments[8], arguments[9], arguments[10], arguments[11], arguments[12], arguments[13], arguments[14]);
+		case 16:
+			return mandreel_embed_plugin.MandreelInterCallFunction(arguments[0], arguments[1], arguments[2], arguments[3], arguments[4], arguments[5], arguments[6], arguments[7], arguments[8], arguments[9], arguments[10], arguments[11], arguments[12], arguments[13], arguments[14], arguments[15]);
+		break;
+	}
+}
+
+function mandreel_plugin_draw()
+{
+	var canvas = Mandreel_document.getElementById('canvasDiv');
+	WebGLUtils.requestAnimationFrame(canvas, mandreel_plugin_draw);
+	mandreel_embed_plugin.MandreelInterCalls("AppDraw");
+
+}
+
+function mandreelInitPluginPlatform(params)
+{
+
+	if ( params.width != null )
+		mandreelAppWidthSrc = params.width;
+
+	if ( params.height != null )
+		mandreelAppHeightSrc = params.height;
+
+
+	mandreel_embed_plugin = Mandreel_document.createElement('embed');
+	mandreel_embed_plugin.setAttribute('width',mandreelAppWidthSrc);
+	mandreel_embed_plugin.setAttribute('height',mandreelAppHeightSrc);
+	mandreel_embed_plugin.setAttribute('type',"application/halfbrick-npruntime-scriptable-plugin");
+
+	var div = Mandreel_document.getElementById('canvasDiv');
+
+
+	var oChild=div.firstChild;
+
+	div.replaceChild(mandreel_embed_plugin, oChild);
+
+	var flashElement = Mandreel_document.getElementById('FlashWrapper');
+	if ( flashElement != null )
+	{
+		flashElement.style.visibility = "hidden";
+		flashElement.style.width = "0px";
+		flashElement.style.height = "0px";
+	}
+
+
+
+
+
+	Mandreel_window.MandreelInterWriteInt     = PluginMandreelInterWriteInt;
+	Mandreel_window.MandreelInterWriteFloat   = PluginMandreelInterWriteInt;
+	Mandreel_window.MandreelInterWriteString  = PluginMandreelInterWriteString;
+	Mandreel_window.MandreelInterWriteWString = PluginMandreelInterWriteWString;
+	Mandreel_window.MandreelLockFrame         = PluginMandreelLockFrame;
+	Mandreel_window.MandreelUnlockFrame       = PluginMandreelUnlockFrame;
+	Mandreel_window.MandreelInterCallFunction = PluginMandreelInterCallFunction;
+	Mandreel_window.MandreelPause 			 = PluginMandreelPause;
+	Mandreel_window.MandreelResume 			 = PluginMandreelResume;
+
+	Mandreel_setTimeout(function () {
+
+	if ( typeof(params.pluginSolutionName) != 'undefined' )
+		mandreel_embed_plugin.init(params.pluginDLL, params.pluginWorkingFolder,params.pluginSolutionName);
+	else
+		mandreel_embed_plugin.init(params.pluginDLL, params.pluginWorkingFolder);
+
+
+	mandreelAppStartStateFunc("ready",mandreelAppWidthSrc,mandreelAppHeightSrc);
+
+	Mandreel_setTimeout("mandreel_plugin_draw()", 16);
+	}, 100);
+
+}
+
+
+function MandreelInterSwfProgress(mode, percentage, bytes, totalbytes)
+{
+	imandreel_update_load(bytes, totalbytes);
+	if (mode == 'files')
+	{
+		if ( mandreelAppStartStateFunc )
+			mandreelAppStartStateFunc("loadingData",percentage);
+	}
+	else if (mode == 'audio')
+	{
+		if ( mandreelAppStartStateFunc )
+			mandreelAppStartStateFunc("loadingAudioUpdate",percentage);
+	}
+	else if (mode == 'textureasync')
+	{
+		if ( mandreelAppStartStateFunc )
+			mandreelAppStartStateFunc("loadingTextureAsyncPack",percentage);
+	}
+
+}
+
+function MandreelInterSwfCheckMethod(method)
+{
+	if (typeof(Mandreel_window[method])=="undefined")
+		return 0;
+	else
+		return 1;
+}
+
+// End of js/mandreelapp.js file.
+
+// Start of mandreel.js file.
+
+var mandreel_total_memory = 15908864;
+var mandreel_stack_memory = 1048576;
+var mandreel_heap_memory = 13591752; //init_memory = 744248
+/////////////////////////////////////////////
+// Heap
+/////////////////////////////////////////////
+var heap;
+var heap8;
+var heapU8;
+var heap16;
+var heapU16;
+var heap32;
+var heapU32;
+var heapFloat;
+var heapDouble;
+var heapNewPos = 512;
+
+var ABORT = false;
+
+var g_mandreel_cache_files = false;
+
+
+var g_mandreel_frame_locked = false;
+var g_mandreel_frame_inframe = false;
+
+var mandreel_cache_files = [];
+var g_mandreel_working_folder = 'DataPC/';
+var g_mandreel_datafiles_sufix = '.dat';
+var __FUNCTION_TABLE__ = [];
+var mandreel_pos_function_table = 1;
+function register_delegate(ptr_func)
+{
+	var functionId = mandreel_pos_function_table;
+	__FUNCTION_TABLE__[functionId] = ptr_func;
+
+	mandreel_pos_function_table++;
+	return functionId*4;
+}
+
+
+var g_addr_emit = 0;
+function emit_start(addr)
+{
+	g_addr_emit = addr;
+}
+
+function emit_8(data)
+{
+	heapU8[g_addr_emit] = data;
+	g_addr_emit++;
+}
+
+function emit_16(data)
+{
+	heapU16[g_addr_emit>>1] = data;
+	g_addr_emit+=2;
+}
+
+function emit_32(data)
+{
+	heapU32[g_addr_emit>>2] = data;
+	g_addr_emit+=4;
+}
+
+function emit_fill(data, size)
+{
+	var j;
+	for (j=0;j<size;j++)
+	{
+		heapU8[g_addr_emit] = data;
+		g_addr_emit++;
+	}
+}
+
+function emit_string(v)
+{
+	var j;
+	var len = v.length;
+	var data;
+
+	for(j = 0; j < len; j++)
+	{
+		data = v.charCodeAt(j);
+
+		heapU8[g_addr_emit] = data;
+		g_addr_emit++;
+	}
+}
+
+
+
+
+
+var g_stack_pointer = Malloc(mandreel_stack_memory);
+
+function assert_unalign()
+{
+	dump("fatal error: unaligned memory access detected!!!!");
+	assert(false);
+}
+
+function _assert(sp)
+{
+	var p0 = heap32[sp>>2];sp+=4;
+  var p1 = heap32[sp>>2];sp+=4;
+  var line = heap32[sp>>2];sp+=4;
+	var name = get_string_from_ptr(p0);
+	var file = get_string_from_ptr(p1);
+	assert(false, name + file + ' ' + line);
+}
+__cxa_pure_virtual.__index__ = 0;
+function __cxa_pure_virtual()
+{
+	assert(0);
+}
+
+// operator delete[]
+function _ZdaPv(sp)
+{
+	free(sp);
+}
+
+// operator delete
+function _ZdlPv(sp)
+{
+	free(sp);
+}
+
+// operator new[](unsigned int)
+function _Znaj(sp)
+{
+	malloc(sp);
+}
+// operator new[](unsigned int)
+function _Znwj(sp)
+{
+	malloc(sp);
+}
+
+function abort(sp)
+{
+	assert(0);
+}
+
+var r_g0 = 0;
+var r_g1 = 0;
+var f_g0 = 0;
+
+//isFinite(aux)
+//isNaN(aux)
+
+var tlsf_ptr = 0;
+
+
+function initHeap()
+{
+	heap = new ArrayBuffer(mandreel_total_memory);
+	heap8 = new Int8Array(heap);
+	heapU8 = new Uint8Array(heap);
+	heap16 = new Int16Array(heap);
+	heapU16 = new Uint16Array(heap);
+	heap32 = new Int32Array(heap);
+	heapU32 = new Uint32Array(heap);
+	heapFloat = new Float32Array(heap);
+	heapDouble = new Float64Array(heap);
+
+
+	for (var i=0;i<mandreel_total_memory/4;i++)
+	{
+		heapU32[i] = 0;
+	}
+}
+
+function Malloc(bytes)
+{
+	if ( heap == undefined )
+	{
+		//initHeap();
+	}
+	var newOffset = heapNewPos;
+	// Always 32 bit aligned
+	heapNewPos += ((bytes + 3) & 0xfffffffc);
+
+	if (heapNewPos>mandreel_total_memory)
+	{
+		assert(false);
+	}
+
+	return newOffset;
+}
+
+function assert(condition, _text) {
+//console.assert(condition, _text);
+    if (!condition) {
+      var text = "Assertion failed: " + _text;
+      alert(text + ':\n' + (new Error).stack);
+      ABORT = true;
+      throw "Assertion: " + text;
+    }
+  }
+
+  function my_assert(sp)
+  {
+	var p0 = heap32[sp>>2];sp+=4;
+  var p1 = heap32[sp>>2];sp+=4;
+	//var name = get_string_from_ptr(p1);
+
+	assert(false, 'hola');
+  }
+
+  function WriteHeapDouble(addr, value)
+  {
+  //assert((addr&7)==0);
+	heapDouble[addr>>3] = value;
+  }
+
+    function WriteHeapU64(addr, value)
+  {
+	heap32[addr>>2] = value.l;
+	heap32[(addr>>2)+1] = value.h;
+  }
+
+
+var arg_test_local = Malloc(8);
+function my_arg_test(sp)
+{
+	var ptr = heapU32[sp>>2];
+	var size = heapU32[(sp+4)>>2];
+
+	var arg = heapU32[ptr>>2];
+
+
+	if (size == 4)
+	{
+	heap32[ptr>>2] = arg+4;
+
+	arg = heap32[arg>>2];
+
+	heap32[arg_test_local>>2] = arg;
+
+	//dump('my_arg_test ' + arg + ' ' + ptr + '\n');
+
+	}
+	else
+	{
+		arg = (arg+7) & ~7;
+
+		heap32[ptr>>2] = arg+8;
+
+	//assert((arg&7)==0);
+	var value0 = heap32[arg>>2];
+	var value1 = heap32[(arg+4)>>2];
+	//arg = llvm_readDouble(arg);
+
+	//assert((arg_test_local&7)==0);
+
+	heap32[arg_test_local>>2] = value0;
+	heap32[(arg_test_local+4)>>2] = value1;
+
+	//llvm_writeDouble(arg_test_local,arg);
+
+	//dump('my_arg_test ' + arg + ' ' + ptr + '\n');
+
+
+	}
+
+
+
+
+	r_g0 = arg_test_local;
+}
+
+
+
+
+
+
+function uint(value) {
+    if (value >= 0) return value;
+    return 4294967296 + value;
+  }
+
+
+
+function puts(sp)
+{
+	var addr = heapU32[sp>>2];
+
+	var name = get_string_from_ptr(addr);
+
+	name+='\n';
+
+	dump(name);
+
+}
+
+function _Z11print_valued(_stack_pos, value)
+{
+	dump(value);
+	dump('\n');
+}
+
+function _Z11print_labelPKc(_stack_pos, addr)
+{
+	puts(_stack_pos,addr);
+	dump('\n');
+}
+
+
+
+
+function gettimeofday(sp)
+  {
+  var ptr = heap32[sp>>2];
+  var time_ms = Date_now();
+	heap32[ptr>>2] = time_ms/1000;
+	heap32[(ptr>>2)+1] = (time_ms%1000)*1000;
+	r_g0 = 0;
+  }
+
+
+  function free(sp)
+  {
+	var ptr = heapU32[sp>>2];
+  	sp-=8;
+
+	heap32[(sp)>>2] = tlsf_ptr;
+	heap32[(sp+4)>>2] = ptr;
+	tlsf_free(sp);
+  }
+
+  function malloc_size(sp)
+  {
+  var ptr = heapU32[sp>>2];
+
+	sp-=4;
+
+	heap32[(sp)>>2] = ptr;
+	tlsf_block_size(sp);
+  }
+
+
+  function realloc(sp)
+  {
+	var ptr = heapU32[sp>>2];
+	var size = heapU32[(sp+4)>>2];
+
+	//assert(ptr == 0);
+
+	sp-=12;
+
+	//dump('realloc ' + sp + ' ' + ptr + ' ' + size + '\n');
+
+	heap32[(sp)>>2] = tlsf_ptr;
+	heap32[(sp+4)>>2] = ptr;
+	heap32[(sp+8)>>2] = size;
+	tlsf_realloc(sp);
+
+	//dump('return ' + r_g0 + '\n');
+  }
+
+  var llvm_double_addr = Malloc(8);
+
+  function llvm_writeDouble(addr,src)
+  {
+  //assert((llvm_double_addr&7)==0);
+	heapDouble[llvm_double_addr>>3] = src;
+
+	//assert((addr&7)==0);
+
+	var val0 = heap32[(llvm_double_addr)>>2];
+	var val1 = heap32[(llvm_double_addr+4)>>2];
+
+	heap32[(addr)>>2] = val0;
+	heap32[(addr+4)>>2] = val1;
+  }
+
+  function llvm_readDouble(addr)
+  {
+  	//assert((addr&7)==0);
+
+	var val0 = heap32[(addr)>>2];
+	var val1 = heap32[(addr+4)>>2];
+
+	heap32[(llvm_double_addr)>>2] = val0;
+	heap32[(llvm_double_addr+4)>>2] = val1;
+
+
+//	assert((llvm_double_addr&7)==0);
+	var result = heapDouble[llvm_double_addr>>3];
+
+
+	return result;
+
+  }
+
+  function llvm_move_double(addr_dst, addr_src)
+  {
+
+	var val0 = heapU32[(addr_src)>>2];
+	var val1 = heapU32[(addr_src+4)>>2];
+
+	heapU32[(addr_dst)>>2] = val0;
+	heapU32[(addr_dst+4)>>2] = val1;
+
+  }
+
+  function llvm_move_float(addr_dst, addr_src)
+  {
+	heapU32[(addr_dst)] = heapU32[(addr_src)];
+  }
+
+  function malloc(sp)
+  {
+	var size = heapU32[sp>>2];
+
+	if (size == 0)
+	{
+		size = 4;
+	}
+
+
+	if (tlsf_ptr == 0)
+	{
+		var addr = Malloc(mandreel_heap_memory);
+
+		sp-=8;
+		heap32[(sp)>>2] = addr;
+		heap32[(sp+4)>>2] = mandreel_heap_memory;
+		tlsf_create(sp);
+		tlsf_ptr = r_g0;
+	}
+
+	sp-=8;
+
+	heap32[(sp)>>2] = tlsf_ptr;
+	heap32[(sp+4)>>2] = size;
+	tlsf_malloc(sp);
+
+	if (r_g0 == 0)
+	{
+		dump('malloc failed ' + size + '\n');
+		assert(false);
+	}
+  }
+
+
+   function log10f(sp)
+  {
+  var value = heapFloat[sp>>2];
+	f_g0 = Math.log(value)/Math.LN10;
+  }
+
+   function log10(sp)
+  {
+  var value = heapDouble[sp>>3];
+	f_g0 = Math.log(value)/Math.LN10;
+  }
+
+function logf(sp)
+  {
+  var value = heapFloat[sp>>2];
+	f_g0 = Math.log(value);
+  }
+
+  function log(sp)
+  {
+  var value = heapDouble[sp>>3];
+	f_g0 = Math.log(value);
+  }
+
+
+
+  function cosf(sp)
+  {
+  var value = heapFloat[sp>>2];
+	f_g0 = Math.cos(value);
+	//assert (isNaN(f_g0) == false);
+  }
+
+  function acosf(sp)
+  {
+  var value = heapFloat[sp>>2];
+	f_g0 = Math.acos(value);
+  }
+
+  function asinf(sp)
+  {
+  var value = heapFloat[sp>>2];
+	f_g0 = Math.asin(value);
+  }
+
+  function asin(sp)
+  {
+  var value = heapDouble[sp>>3];
+	f_g0 = Math.asin(value);
+  }
+
+  function acos(sp)
+  {
+  var value = heapDouble[sp>>3];
+	f_g0 = Math.acos(value);
+  }
+
+  function floor(sp)
+  {
+  var value = heapDouble[sp>>3];
+	f_g0 = Math.floor(value);
+  }
+
+  function floorf(sp)
+  {
+  var value = heapFloat[sp>>2];
+	f_g0 = Math.floor(value);
+  }
+
+  function round(sp)
+  {
+  var value = heapDouble[sp>>3];
+	f_g0 = Math.round(value);
+  }
+
+  function roundf(sp)
+  {
+  var value = heapFloat[sp>>2];
+	f_g0 = Math.round(value);
+  }
+
+  function ceilf(sp)
+  {
+  var value = heapFloat[sp>>2];
+	f_g0 = Math.ceil(value);
+  }
+
+  function ceil(sp)
+  {
+  var value = heapDouble[sp>>3];
+	f_g0 = Math.ceil(value);
+  }
+
+
+  function exp2(sp)
+  {
+  var value = heapDouble[sp>>3];
+
+	f_g0 = Math.pow(2,value);
+  }
+
+  function exp2f(sp)
+  {
+  var value = heapFloat[sp>>2];
+
+	f_g0 = Math.pow(2,value);
+  }
+
+
+
+  function pow(sp)
+  {
+  var value = heapDouble[sp>>3];
+  var value2 = heapDouble[(sp+8)>>3];
+	f_g0 = Math.pow(value,value2);
+  }
+
+  function powf(sp)
+  {
+  var value = heapFloat[sp>>2];
+  var value2 = heapFloat[(sp+4)>>2];
+	f_g0 = Math.pow(value,value2);
+  }
+
+  function cos(sp)
+  {
+  var value = heapDouble[sp>>3];
+	f_g0 = Math.cos(value);
+	//assert (isNaN(f_g0) == false);
+  }
+
+  function tan(sp)
+  {
+  var value = heapDouble[sp>>3];
+	f_g0 = Math.tan(value);
+	//assert (isNaN(f_g0) == false);
+  }
+
+   function sinf(sp)
+  {
+  var value = heapFloat[sp>>2];
+	f_g0 = Math.sin(value);
+
+	//assert (isNaN(f_g0) == false);
+  }
+
+  function expf(sp)
+  {
+  var value = heapFloat[sp>>2];
+	f_g0 = Math.exp(value);
+  }
+
+  function exp(sp)
+  {
+  var value = heapDouble[sp>>3];
+	f_g0 = Math.exp(value);
+  }
+
+  function tanf(sp)
+  {
+  var value = heapFloat[sp>>2];
+	f_g0 = Math.tan(value);
+  }
+
+ function atanf(sp)
+  {
+  var value = heapFloat[sp>>2];
+	f_g0 = Math.atan(value);
+  }
+
+  function atan(sp)
+  {
+  var value = heapDouble[sp>>3];
+	f_g0 = Math.atan(value);
+  }
+
+  function abs(sp)
+  {
+  var value = heap32[sp>>2];
+  if (value<0)
+  r_g0 = -value;
+  else
+  r_g0 = value;
+  }
+
+  function sin(sp)
+  {
+  var value = heapDouble[sp>>3];
+	f_g0 = Math.sin(value);
+  }
+
+  function sqrtf(sp)
+  {
+  var value = heapFloat[sp>>2];
+	f_g0 = Math.sqrt(value);
+  }
+
+  function sqrt(sp)
+  {
+  var value = heapDouble[sp>>3];
+	f_g0 = Math.sqrt(value);
+  }
+
+  function fmod(sp)
+  {
+  var value = heapDouble[sp>>3];sp+=8;
+  var value2 = heapDouble[sp>>3];
+	f_g0 = value % value2;
+  }
+
+   function fmodf(sp)
+  {
+  var value = heapFloat[sp>>2];sp+=4;
+  var value2 = heapFloat[sp>>2];
+	f_g0 = value % value2;
+  }
+
+
+  function atan2f(sp)
+  {
+  var x = heapFloat[sp>>2];sp+=4;
+  var y = heapFloat[sp>>2];
+	f_g0 = Math.atan2(x,y);
+  }
+
+  function atan2(sp)
+  {
+  var x = heapDouble[sp>>3];
+  var y = heapDouble[(sp+8)>>3];
+	f_g0 = Math.atan2(x,y);
+  }
+
+  function fabs(sp)
+  {
+  var value = heapDouble[sp>>3];
+	f_g0 = Math.abs(value);
+  }
+
+
+  function _Z18OutputDebugStringAPKc(sp)
+  {
+  puts(sp);
+
+  }
+
+
+  function getenv(sp)
+  {
+  r_g0 = 0;
+  }
+
+
+  function mandreel_fcmp_ord(X, Y)
+  {
+	return (X == X && Y == Y);
+  }
+
+  function mandreel_fcmp_uno(X, Y)
+{
+
+        return (X != X || Y != Y);
+}
+
+var llvm_errno = Malloc(4);
+function _errno(sp)
+{
+	r_g0 = llvm_errno;
+}
+
+
+
+
+if (!Mandreel_window["dump"])
+	Mandreel_window["dump"] = function dump(str){console.log(str)} ;
+
+
+
+
+  function get_string_from_ptr(ptr)
+  {
+	var ret = "";
+
+	if (ptr == 0)
+		return ret;
+
+	var i = 0;
+	while (1) {
+  //    if ((ptr.pos + i) >= ptr.slab.length) { return "<< Invalid read: " + (ptr.pos+i) + " : " + ptr.slab.length + " >>"; } else {}
+	if (heapU8[ptr + i] == 0)
+		break;
+
+      var t = String.fromCharCode(heapU8[ptr + i]);
+      ret += t;
+      i += 1;
+    }
+
+	return ret;
+  }
+
+  function fill_ptr_from_string(ptr, v)
+  {
+	var j;
+	var len = v.length;
+	var data;
+
+  	for(j = 0; j < len; j++)
+	{
+		data = v.charCodeAt(j);
+
+		heapU8[ptr] = data;
+		ptr++;
+	}
+		heapU8[ptr] = 0;
+	}
+
+  var file_ids = [];
+  var current_file_id = 20;
+
+  function create_file_id(buffer)
+  {
+	this.buffer = buffer;
+	this.offset = 0;
+	this.byteArray = new Uint8Array(buffer);
+  }
+
+  function mandreel_rewind(sp)
+  {
+  var file_id = heap32[sp>>2];sp+=4;
+
+  file_ids[file_id].offset = 0;
+
+	r_g0 = 0;
+
+	//return 0;
+  }
+
+
+  function mandreel_fseek(sp)
+  {
+  var file_id = heap32[sp>>2];sp+=4;
+  var pos = heap32[sp>>2];sp+=4;
+  var type = heap32[sp>>2];sp+=4;
+
+	if (type == 2)
+	{
+		file_ids[file_id].offset = file_ids[file_id].buffer.byteLength + pos;
+	}
+	else if (type == 1)
+	{
+		file_ids[file_id].offset = file_ids[file_id].offset + pos;
+
+	}
+	else if (type == 0)
+	{
+		file_ids[file_id].offset = pos;
+
+	}
+
+	r_g0 = 0;
+
+	//return 0;
+  }
+
+  function mandreel_fclose(sp)
+  {
+  var file_id = heap32[sp>>2];sp+=4;
+
+	file_ids[file_id] = null;
+	r_g0 = 0;
+	//return 0;
+  }
+
+
+
+  function mandreel_feof(sp)
+  {
+  var file_id = heap32[sp>>2];sp+=4;
+
+  var offset = file_ids[file_id].offset;
+  var total = file_ids[file_id].buffer.byteLength;
+
+  if (offset>=total)
+  r_g0 = 1;
+  else
+  r_g0 = 0;
+
+  }
+
+  function mandreel_getc(sp)
+  {
+  var file_id = heap32[sp>>2];sp+=4;
+
+
+  var offset = file_ids[file_id].offset;
+
+
+	var buffer = file_ids[file_id].buffer;
+
+	var byteArray = file_ids[file_id].byteArray;
+
+	var total = 1;
+
+	var result;
+
+	if ((offset+total)>buffer.byteLength)
+	{
+		result = -1;
+	}
+	else
+	{
+		result = byteArray[offset];
+		file_ids[file_id].offset+=total;
+	}
+
+	r_g0 = result;
+  }
+
+
+
+  function mandreel_fread(sp)
+  {
+  var ptr = heap32[sp>>2];sp+=4;
+  var size = heap32[sp>>2];sp+=4;
+  var count = heap32[sp>>2];sp+=4;
+  var file_id = heap32[sp>>2];sp+=4;
+
+  var offset = file_ids[file_id].offset;
+
+  //dump('fread ' + ptr + ' ' + size + ' ' + count + ' ' + file_id + ' ' + offset + '\n');
+
+	var buffer = file_ids[file_id].buffer;
+
+	var total = size*count;
+
+	if ((offset+total)>buffer.byteLength)
+		total = buffer.byteLength-offset;
+
+	var byteArray = file_ids[file_id].byteArray;
+
+
+	var sub_array = byteArray.subarray(offset, offset+total);
+
+	heapU8.set(sub_array,ptr);
+
+
+	//heapU8.set(byteArray, ptr);
+	//for (var i=0;i<total;++i)
+	//{
+//		heapU8[ptr+i] = byteArray[i+offset];
+//	}
+
+
+	file_ids[file_id].offset+=total;
+
+	r_g0 = total/size;
+	//return total;
+  }
+
+  function mandreel_ftell(sp)
+  {
+  var file_id = heap32[sp>>2];sp+=4;
+
+	var value = file_ids[file_id].offset;
+	//dump('offset ftell ' + value + '\n');
+	r_g0 = value;
+	//return value;
+  }
+
+  function _Z30mandreel_fopen_enable_checkfatb(sp)
+  {
+  }
+
+  function mandreel_ungetc(sp)
+  {
+	var my_char = heap32[sp>>2];sp+=4;
+	var file_id = heap32[sp>>2];sp+=4;
+
+	var offset = file_ids[file_id].offset-1;
+
+	var byteArray = file_ids[file_id].byteArray;
+
+	assert(byteArray[offset] == my_char);
+
+	file_ids[file_id].offset = offset;
+
+	return my_char;
+  }
+  function mandreel_fopen(sp)
+  {
+  var ptr_name = heap32[sp>>2];sp+=4;
+  var ptr_flags = heap32[sp>>2];sp+=4;
+
+
+	var name = get_string_from_ptr(ptr_name);
+	var flags = get_string_from_ptr(ptr_flags);
+	//dump('fopen\n');
+	//dump(name);
+	//dump('\n');
+	//dump(flags);
+	//dump('\n');
+
+	var buffer;
+
+	var full_name;
+
+	name = name.toLowerCase();
+
+	name = name.replace(/\\/g,"/");
+
+	full_name	= g_mandreel_working_folder + name + g_mandreel_datafiles_sufix;
+
+
+	buffer =mandreel_cache_files[name];
+
+	if (buffer == null)
+	{
+	r_g0 = 0;
+	return;
+	}
+
+
+
+	//dump('\nopening file ' + full_name + ' ' + buffer.byteLength + '\n');
+
+
+	file_ids[current_file_id] = new create_file_id(buffer);
+
+	var old_id = current_file_id;
+	current_file_id++;
+
+	r_g0 = old_id;
+	//return old_id;
+  }
+
+  function llvm_store_unalign32_float(addr, value)
+  {
+	heapFloat[0] = value;
+	var data = heap32[0];
+	heap8[addr] = data&0xff;
+	heap8[addr+1] = (data>>>8)&0xff;
+	heap8[addr+2] = (data>>>16)&0xff;
+	heap8[addr+3] = (data>>>24)&0xff;
+  }
+  function llvm_store_unalign32(addr, value)
+  {
+	heap8[addr] = value&0xff;
+	heap8[addr+1] = (value>>>8)&0xff;
+	heap8[addr+2] = (value>>>16)&0xff;
+	heap8[addr+3] = (value>>>24)&0xff;
+  }
+
+  function llvm_read_unalign32(addr)
+  {
+	var value;
+	value = heapU8[addr];
+	value |= heapU8[addr+1]<<8;
+	value |= heapU8[addr+2]<<16;
+	value |= heapU8[addr+3]<<24;
+	return value;
+  }
+
+  function llvm_read_unalign32_float(addr)
+  {
+	var value;
+	value = heapU8[addr];
+	value |= heapU8[addr+1]<<8;
+	value |= heapU8[addr+2]<<16;
+	value |= heapU8[addr+3]<<24;
+
+	heap32[0] = value;
+	return  heapFloat[0];
+  }
+
+  function mandreel_getlocalstorage()
+  {
+	return Mandreel_window.localStorage;
+	//return Mandreel_window.sessionStorage;
+  }
+
+  function mandreel_openls(sp)
+  {
+	var ptr_name = heap32[sp>>2];sp+=4;
+
+	var key = get_string_from_ptr(ptr_name);
+
+	var my_localStorage = mandreel_getlocalstorage();
+
+	var value = my_localStorage.getItem(key);
+
+	if (value == null)
+	{
+		r_g0 = -1;
+		return;
+	}
+
+
+	var length = my_localStorage.getItem(key + '_size');
+
+	if (length == null)
+	{
+		r_g0 = -1;
+		return;
+	}
+
+
+
+
+	dump('mandreel_openls ' + key + ' return ' + length);
+
+
+	r_g0 = parseInt(length);
+
+
+
+	return;
+
+  }
+
+  function mandreel_readls(sp)
+  {
+	var ptr_name = heap32[sp>>2];sp+=4;
+	var data_dst = heap32[sp>>2];sp+=4;
+	var data_len = heap32[sp>>2];sp+=4;
+
+	var key = get_string_from_ptr(ptr_name);
+
+	var my_localStorage = mandreel_getlocalstorage();
+
+	var value = my_localStorage.getItem(key);
+
+	var data = JSON.parse(value);
+
+
+	for (var i=0;i<data_len;++i)
+	{
+		heapU8[data_dst+i] = data[i];
+	}
+
+	r_g0 =  data_len;
+	return;
+
+}
+
+function mandreel_removels(sp)
+ {
+ var ptr_name_a = heap32[sp>>2];sp+=4;
+ var key_a = get_string_from_ptr(ptr_name_a);
+
+ var my_localStorage = mandreel_getlocalstorage();
+
+	my_localStorage.removeItem(key_a);
+	my_localStorage.removeItem(key_a + '_size');
+	r_g0 = 0;
+
+ }
+
+
+function mandreel_renamels(sp)
+ {
+ var ptr_name_a = heap32[sp>>2];sp+=4;
+  var ptr_name_b = heap32[sp>>2];sp+=4;
+
+  var key_a = get_string_from_ptr(ptr_name_a);
+  var key_b = get_string_from_ptr(ptr_name_b);
+
+  var my_localStorage = mandreel_getlocalstorage();
+
+
+  var value = my_localStorage.getItem(key_a);
+  var value2 = my_localStorage.getItem(key_a + '_size');
+
+  if (value != null && value2 != null)
+  {
+	my_localStorage.setItem(key_b, value);
+	my_localStorage.setItem(key_b + '_size', value2);
+
+	my_localStorage.removeItem(key_a);
+	my_localStorage.removeItem(key_a + '_size');
+
+
+	r_g0 = 0;
+}
+else
+ r_g0 = -1;
+ }
+
+function mandreel_writels(sp)
+  {
+	var ptr_name = heap32[sp>>2];sp+=4;
+	var data_src = heap32[sp>>2];sp+=4;
+	var data_len = heap32[sp>>2];sp+=4;
+
+	var key = get_string_from_ptr(ptr_name);
+
+
+
+	var data = new Uint8Array(heap,data_src,data_len);
+
+	var value = JSON.stringify(data);
+
+	var my_localStorage = mandreel_getlocalstorage();
+
+	try
+	{
+		my_localStorage.setItem(key, value);
+	} catch(e)
+	{
+		dump('error saving ' + key);
+		dump(e.message);
+		r_g0 =  0;
+		return;
+	}
+
+	try
+	{
+		my_localStorage.setItem(key + '_size', data_len);
+	} catch(e)
+	{
+		dump('error saving ' + key);
+		dump(e.message);
+		r_g0 =  0;
+		return;
+	}
+
+
+	r_g0 =  data_len;
+	return;
+
+}
+
+function mandreel_call_constructors(_ptr, size,stackPos)
+{
+var ptr = _ptr;
+
+ptr = ptr >> 2;
+
+for (var i=0;i<size;++i)
+{
+
+
+var tag = heap32[ptr];
+var ptr_id = heap32[ptr+1];
+
+__FUNCTION_TABLE__[(ptr_id)>>2](stackPos);
+
+ptr+=2;
+
+}
+}
+
+function get_string_from_wptr(ptr)
+  {
+	var ret = "";
+
+	if (ptr == 0)
+		return ret;
+
+	assert((ptr&1)==0);
+	ptr>>=1;
+	var i = 0;
+	while (1) {
+  //    if ((ptr.pos + i) >= ptr.slab.length) { return "<< Invalid read: " + (ptr.pos+i) + " : " + ptr.slab.length + " >>"; } else {}
+	if (heapU16[ptr + i] == 0)
+		break;
+
+      var t = String.fromCharCode(heapU16[ptr + i]);
+     // if (t == "\0") { break; } else {}
+      ret += t;
+      i += 1;
+    }
+
+	return ret;
+  }
+
+  function fill_wptr_from_string(ptr, v)
+  {
+	var j;
+	var len = v.length;
+	var data;
+
+	assert((ptr&1)==0);
+	ptr>>=1;
+
+  	for(j = 0; j < len; j++)
+	{
+		data = v.charCodeAt(j);
+
+		heapU16[ptr] = data;
+		ptr++;
+	}
+		heapU16[ptr] = 0;
+	}
+
+function mandreelInterGetParams(sp)
+{
+	var params = [];
+
+	var offset = 0;
+	for (i=1;i<arguments.length;++i)
+	{
+		var type = arguments[i];
+
+		switch(type)
+		{
+			case 'int':
+				params[i-1] = heap32[(sp+offset)>>2];
+				break;
+			case 'float':
+				params[i-1] = heapFloat[(sp+offset)>>2];
+				break;
+			case 'string':
+				params[i-1] = get_string_from_ptr(heap32[(sp+offset)>>2]);
+				break;
+			default:
+				assert(false);
+		}
+		offset+=4;
+	}
+
+	return params;
+}
+
+function mandreelInterRetParam(type, value)
+{
+	switch(type)
+	{
+		case 'int':
+			r_g0 = value;
+			break;
+		case 'float':
+			f_g0 = value;
+			break;
+		default:
+			assert(false);
+	}
+
+	return 0;
+}
+
+function MandreelInterGetFunctionPtr(value)
+{
+	return __FUNCTION_TABLE__[value >> 2];
+}
+
+
+function MandreelInterCallFunction(returnType,func_name)
+{
+	var size_params = 0;
+
+	var i;
+	var num_params = (arguments.length-2)/2;
+	num_params|=0;
+	for (i=2;i<num_params*2+2;i+=2)
+	{
+		var type = arguments[i];
+
+		var size_arg = 0;
+		switch(type)
+		{
+			case 'int':
+				size_arg = 4;
+				break;
+			case 'float':
+				size_arg = 4;
+				break;
+			case 'string':
+				size_arg = 4;
+				size_arg += ((arguments[i+1].length + 4) & 0xfffffffc);
+				break;
+			case 'wstring':
+				size_arg = 4;
+				size_arg += ((arguments[i+1].length*2 + 4) & 0xfffffffc);
+				break;
+			default:
+				assert(false);
+		}
+
+		size_params += size_arg;
+	}
+
+	// stack always 8 byte aligned
+	size_params=((size_params+7)& 0xfffffff8);
+
+	var sp = 0;
+
+	if (i<(arguments.length))
+		sp = arguments[i];
+	else
+	{
+		assert(false,"MandreelInterCallFunction missing stack pointer paramenter");
+		//assert(g_mandreel_frame_locked == true);
+		//sp = g_stack_pointer+800*1024;
+	}
+
+	sp-=size_params;
+
+	var offset = 0;
+	var ptr_data = num_params*4+sp;
+    for (i=2;i<num_params*2+2;i+=2)
+	{
+		var type = arguments[i];
+
+		var size_arg = 0;
+		switch(type)
+		{
+			case 'int':
+				heap32[(sp+offset)>>2] = arguments[i+1];
+				break;
+			case 'float':
+				heapFloat[(sp+offset)>>2] = arguments[i+1];
+				break;
+			case 'string':
+				{
+					heap32[(sp+offset)>>2] = ptr_data;
+					var string = arguments[i+1];
+					fill_ptr_from_string(ptr_data,string);
+
+					ptr_data += ((string.length + 4) & 0xfffffffc);
+				}
+				break;
+			case 'wstring':
+				{
+					MandreelInterWriteInt((sp+offset),ptr_data);
+					var string = arguments[i+1];
+					MandreelInterWriteWString(ptr_data,string);
+
+					ptr_data += ((string.length*2 + 4) & 0xfffffffc);
+				}
+				break;
+			default:
+				assert(false);
+		}
+		offset+=4;
+	}
+
+	Mandreel_window[func_name](sp);
+
+	if (returnType == 'int')
+		return r_g0;
+	else if (returnType == 'float')
+		return f_g0;
+	else
+	{
+		assert(returnType == 'void');
+		return;
+	}
+}
+
+
+function MandreelInterCallFunctionPtr(returnType,func_ptr)
+{
+	var size_params = 0;
+
+	var i;
+	var num_params = (arguments.length-2)/2;
+	num_params|=0;
+	for (i=2;i<num_params*2+2;i+=2)
+	{
+		var type = arguments[i];
+
+		var size_arg = 0;
+		switch(type)
+		{
+			case 'int':
+				size_arg = 4;
+				break;
+			case 'float':
+				size_arg = 4;
+				break;
+			case 'string':
+				size_arg = 4;
+				size_arg += ((arguments[i+1].length + 4) & 0xfffffffc);
+				break;
+			case 'wstring':
+				size_arg = 4;
+				size_arg += ((arguments[i+1].length*2 + 4) & 0xfffffffc);
+				break;
+			default:
+				assert(false);
+		}
+
+		size_params += size_arg;
+	}
+
+	// stack always 8 byte aligned
+	size_params=((size_params+7)& 0xfffffff8);
+
+	var sp = 0;
+
+	if (i<(arguments.length))
+		sp = arguments[i];
+	else
+	{
+		assert(false);
+		//assert(g_mandreel_frame_locked == true);
+		//sp = g_stack_pointer+800*1024;
+	}
+
+	sp-=size_params;
+
+	var offset = 0;
+	var ptr_data = num_params*4+sp;
+    for (i=2;i<num_params*2+2;i+=2)
+	{
+		var type = arguments[i];
+
+		var size_arg = 0;
+		switch(type)
+		{
+			case 'int':
+				heap32[(sp+offset)>>2] = arguments[i+1];
+				break;
+			case 'float':
+				heapFloat[(sp+offset)>>2] = arguments[i+1];
+				break;
+			case 'string':
+				{
+					heap32[(sp+offset)>>2] = ptr_data;
+					var string = arguments[i+1];
+					fill_ptr_from_string(ptr_data,string);
+
+					ptr_data += ((string.length + 4) & 0xfffffffc);
+				}
+				break;
+			case 'wstring':
+				{
+					MandreelInterWriteInt((sp+offset),ptr_data);
+					var string = arguments[i+1];
+					MandreelInterWriteWString(ptr_data,string);
+
+					ptr_data += ((string.length*2 + 4) & 0xfffffffc);
+				}
+				break;
+			default:
+				assert(false);
+		}
+		offset+=4;
+	}
+
+	__FUNCTION_TABLE__[(func_ptr)>>2](sp);
+
+	if (returnType == 'int')
+		return r_g0;
+	else if (returnType == 'float')
+		return f_g0;
+	else
+	{
+		assert(returnType == 'void');
+		return;
+	}
+}
+
+
+var MANDREEL_HTTP_REQUEST_MODE_GET = 0;
+var MANDREEL_HTTP_REQUEST_MODE_POST = 1;
+var MANDREEL_HTTP_REQUEST_MODE_PUT = 2;
+
+var MANDREEL_HTTP_REQUEST_STATUS_ERROR = 0;
+var MANDREEL_HTTP_REQUEST_STATUS_BUSY = 1;
+var MANDREEL_HTTP_REQUEST_STATUS_FINISHED = 2;
+var MANDREEL_HTTP_REQUEST_STATUS_INIT = 3;
+
+
+var mandreel_js_mapping_ids = [];
+var mandreel_js_mapping_ids_free = [];
+
+
+function Mandreel_HttpRequest_Create(sp)
+{
+	var ptr_url = heap32[sp>>2];sp+=4;
+	var type = heap32[sp>>2];sp+=4;
+
+
+	var url = get_string_from_ptr(ptr_url);
+
+
+	var str_type = 'GET';
+	if (type == MANDREEL_HTTP_REQUEST_MODE_GET)
+		str_type = 'GET';
+	else if (type == MANDREEL_HTTP_REQUEST_MODE_PUT)
+		str_type = 'PUT';
+	else if (type == MANDREEL_HTTP_REQUEST_MODE_POST)
+		str_type = 'POST';
+
+	var xmlhttp_get = new XMLHttpRequest();
+	xmlhttp_get.open(str_type,url);
+
+	if("responseType" in xmlhttp_get)
+		xmlhttp_get.responseType="arraybuffer";
+    else
+	{
+		xmlhttp_get.overrideMimeType('text/plain; charset=x-user-defined');
+	}
+
+	if (mandreel_js_mapping_ids_free.length == 0)
+		mandreel_js_mapping_ids_free.push(mandreel_js_mapping_ids.length);
+
+	var new_id = mandreel_js_mapping_ids_free.pop();
+
+	var my_state = {
+	buffer : null,
+	httpRequest : xmlhttp_get,
+	status : MANDREEL_HTTP_REQUEST_STATUS_INIT,
+	offset_read : 0
+  };
+
+
+
+	mandreel_js_mapping_ids[new_id] = my_state;
+
+	r_g0 = new_id+1;
+}
+
+function Mandreel_HttpRequest_Send(sp)
+{
+	var _id = heap32[sp>>2];sp+=4;
+	var ptr_data = heap32[sp>>2];sp+=4;
+	var id = _id-1;
+
+	var data;
+
+	if (ptr_data)
+		data = get_string_from_ptr(ptr_data);
+	else
+		data = null;
+
+	var my_state = mandreel_js_mapping_ids[id];
+
+
+	my_state.status = MANDREEL_HTTP_REQUEST_STATUS_BUSY;
+
+	my_state.httpRequest.onreadystatechange = function()
+	{
+		if (my_state.httpRequest.readyState==4)
+		{
+			if (my_state.httpRequest.status==200)
+			{
+				var buffer;
+
+				if (my_state.httpRequest.responseType=="arraybuffer")
+					buffer=my_state.httpRequest.response;
+				else if (my_state.httpRequest.mozResponseArrayBuffer != null)
+					buffer = my_state.httpRequest.mozResponseArrayBuffer;
+				else
+					buffer=my_state.httpRequest.response;
+
+				my_state.status = MANDREEL_HTTP_REQUEST_STATUS_FINISHED;
+				my_state.buffer =  new Uint8Array(buffer);
+				//alert(my_state.buffer.length);
+
+				//alert(mandreel_js_mapping_ids[id].buffer);
+
+			}
+			else
+				my_state.status = MANDREEL_HTTP_REQUEST_STATUS_ERROR;
+		}
+	}
+
+	my_state.httpRequest.send(data);
+}
+
+
+function Mandreel_HttpRequest_Status(sp)
+{
+	var _id = heap32[sp>>2];sp+=4;
+	var id = _id-1;
+
+
+	r_g0 = mandreel_js_mapping_ids[id].status;
+}
+
+function Mandreel_HttpRequest_Read(sp)
+{
+	var _id = heap32[sp>>2];sp+=4;
+	var ptr = heap32[sp>>2];sp+=4;
+	var size = heap32[sp>>2];sp+=4;
+	var id = _id-1;
+
+	var remaining_bytes =  mandreel_js_mapping_ids[id].buffer.length - mandreel_js_mapping_ids[id].offset_read;
+
+	if (size>remaining_bytes)
+		size = remaining_bytes;
+
+	var sub_array = mandreel_js_mapping_ids[id].buffer.subarray(mandreel_js_mapping_ids[id].offset_read, mandreel_js_mapping_ids[id].offset_read+size);
+	heapU8.set(sub_array,ptr);
+
+	mandreel_js_mapping_ids[id].offset_read+=size;
+
+	r_g0 = size;
+}
+
+function Mandreel_HttpRequest_BytesAvalable(sp)
+{
+	var _id = heap32[sp>>2];sp+=4;
+	var id = _id-1;
+
+
+	if (mandreel_js_mapping_ids[id].buffer)
+		r_g0 = mandreel_js_mapping_ids[id].buffer.length - mandreel_js_mapping_ids[id].offset_read;
+	else
+		r_g0 = 0;
+}
+
+function Mandreel_HttpRequest_Close(sp)
+{
+	var _id = heap32[sp>>2];sp+=4;
+	var id = _id-1;
+
+	mandreel_js_mapping_ids[id] = null;
+	mandreel_js_mapping_ids_free.push(id);
+}
+
+function Mandreel_HttpRequest_SetRequestHeader(sp)
+{
+	var _id = heap32[sp>>2];sp+=4;
+	var ptr_a = heap32[sp>>2];sp+=4;
+	var ptr_b = heap32[sp>>2];sp+=4;
+	var id = _id-1;
+
+	var str_a = get_string_from_ptr(ptr_a);
+	var str_b = get_string_from_ptr(ptr_b);
+
+	var my_state = mandreel_js_mapping_ids[id];
+
+	my_state.httpRequest.setRequestHeader(str_a, str_b);
+}
+
+
+var Mandreel_TextureAsync_textures = 0;
+var Mandreel_TextureAsync_textures_loaded = 0;
+
+var Mandreel_TextureAsync_PackBufferData = new Array();
+
+function Mandreel_TextureAsync_SetData(sp)
+{
+	var texture_id = heap32[sp>>2];sp+=4;
+
+	var tex = array_ids_ogl[texture_id];
+
+	if ( mandreelAppPlatform != "canvas" )
+	{
+		imandreel_gl.texImage2D(imandreel_gl.TEXTURE_2D, 0, imandreel_gl.RGBA, imandreel_gl.RGBA, imandreel_gl.UNSIGNED_BYTE, tex.image);
+		tex.image = null;
+	}
+}
+
+function Mandreel_TextureAsync_CheckPending(sp)
+{
+	r_g0 = Mandreel_TextureAsync_textures - Mandreel_TextureAsync_textures_loaded;
+}
+
+function Mandreel_TextureAsync_GetProperties(sp)
+{
+	var texture_id = heap32[sp>>2];sp+=4;
+	var ptr_width = heap32[sp>>2];sp+=4;
+	var ptr_height = heap32[sp>>2];sp+=4;
+
+	var tex = array_ids_ogl[texture_id];
+
+	if (tex == null || tex.mandreel_width == undefined)
+		r_g0 = 0;
+	else
+	{
+		heap32[ptr_width>>2] = tex.mandreel_width;
+		heap32[ptr_height>>2] = tex.mandreel_height;
+		r_g0 = 1;
+	}
+}
+
+function mandreel_arrayBufferDataUri(offset, size, buffer) {
+var bytes = new Uint8Array(buffer,offset,size)
+   var ascii = '';
+   for (var i=0; i<bytes.length; i++)
+     ascii += String.fromCharCode(bytes[i]);
+   var base64 = btoa(ascii);
+
+  if (/^\x89PNG/.test(ascii))
+    return 'data:image/png;base64,'+base64;
+  else
+    return 'data:image/jpeg;base64,'+base64;
+  }
+
+ function mandreel_texture_async_fix_name(name)
+{
+	var ascii = '';
+
+	var j;
+	var len = name.length;
+
+
+	for(j = 0; j < len; j++)
+	{
+		var my_char = name[j];
+
+		if (my_char == '/')
+			my_char = '_';
+
+		ascii+=my_char;
+
+	}
+
+   return ascii;
+}
+
+
+
+function Mandreel_TextureAsync_Load(sp)
+{
+	var ptr_name = heap32[sp>>2];sp+=4;
+	var texture_id = heap32[sp>>2];sp+=4;
+
+	var name = get_string_from_ptr(ptr_name);
+
+	var nameSrc = name;
+
+	name = name.toLowerCase();
+
+
+	var full_name	= g_mandreel_working_folder + name;
+
+	var image  = new Image();
+
+
+	Mandreel_TextureAsync_textures++;
+
+	var imgURL = null;
+
+
+
+
+	image.onerror = function() {
+          dump('error loading texture ' + image.src + '\n');
+		  Mandreel_TextureAsync_textures_loaded++;
+      }
+	image.onload = function()
+	{
+		if (imgURL)
+		{
+			var URL = Mandreel_window.URL || Mandreel_window.webkitURL;
+			URL.revokeObjectURL(imgURL);
+		}
+		if ( mandreelAppPlatform == "canvas" )
+		{
+			array_ids_ogl[texture_id] = image;
+			Mandreel_TextureAsync_textures_loaded++;
+		}
+		else
+		{
+			var tex = array_ids_ogl[texture_id];
+			if (tex)
+			{
+				tex.image = image;
+				tex.mandreel_width = image.width;
+				tex.mandreel_height = image.height;
+				Mandreel_TextureAsync_textures_loaded++;
+
+				var sp = MandreelLockFrame();
+				MandreelInterCallFunction('void',"Mandreel_TextureAsync_Loaded",'int',texture_id,'int',image.width,'int',image.height, sp);
+				MandreelUnlockFrame();
+		}
+			else
+			{
+				dump('texture not valid ' + texture_id + ' ' + name + '\n');
+				Mandreel_TextureAsync_textures_loaded++;
+			}
+		}
+
+
+	}
+
+	var new_sp = sp-4096;
+
+	var packfile = new_sp + 2048;
+	var offset_ptr = new_sp + 2048+1024;
+	var size_ptr = new_sp + 2048+1024+4;
+
+	fill_ptr_from_string(new_sp + 1024,name);
+
+	heap32[(new_sp)>>2] = new_sp + 1024;
+	heap32[(new_sp+4)>>2] = offset_ptr;
+	heap32[(new_sp+8)>>2] = size_ptr;
+	heap32[(new_sp+12)>>2] = packfile;
+	iMandreel_TextureAsync_GetPackOffset(new_sp);
+
+
+	var image_src;
+
+	var image_src_valid = true;
+
+	if (r_g0)
+	{
+		var packfilename = get_string_from_ptr(packfile);
+		image_src = mandreel_arrayBufferDataUri(heap32[offset_ptr>>2],heap32[size_ptr>>2],Mandreel_TextureAsync_PackBufferData[packfilename]);
+	}
+	else
+	{
+
+		if (nameSrc.search('http:') != -1 || nameSrc.search('https:') != -1)
+		{
+			image.crossOrigin = 'anonymous'; // no credentials flag. Same as
+			image_src = nameSrc;
+		}
+		else
+		{
+			if (mandreel_is_filesystem())
+			{
+				image_src_valid = false;
+
+				var new_name = mandreel_texture_async_fix_name(full_name);
+				mandreel_fs_get_url(new_name, function Mandreel_TextureAsync_Load_FS(data) {
+					if (data)
+					{
+						image.src = data;
+					}
+					else
+					{
+						var packdata_request = new XMLHttpRequest();
+
+						packdata_request.open("GET", full_name, true);
+
+						if("responseType" in packdata_request)
+							packdata_request.responseType="arraybuffer";
+						else
+							packdata_request.overrideMimeType('text/plain; charset=x-user-defined');
+
+						packdata_request.onreadystatechange = function()
+						{
+							if (packdata_request.readyState != 4) return;
+
+							if (packdata_request.status == 200)
+							{
+								var buffer;
+								if (packdata_request.responseType=="arraybuffer")
+									buffer=packdata_request.response;
+								else if (packdata_request.mozResponseArrayBuffer != null)
+									buffer = packdata_request.mozResponseArrayBuffer;
+								else
+									buffer=packdata_request.response;
+
+								mandreel_fs_saveFile(new_name, buffer);
+
+								var uri = mandreel_arrayBufferDataUri(0,buffer.byteLength,buffer);
+
+								image.src = uri;
+
+							}
+							else
+							{
+
+								Mandreel_TextureAsync_textures_loaded++;
+
+							}
+						}
+
+						packdata_request.send();
+
+					}
+				}
+				);
+			}
+			else if (mandreel_is_indexeddb())
+			{
+				image_src_valid = false;
+
+				var new_name = mandreel_texture_async_fix_name(full_name);
+				mandreel_indexedDB.load(new_name,function Mandreel_TextureAsync_Load_IDB(data) {
+					if (data)
+					{
+						 var URL = Mandreel_window.URL || Mandreel_window.webkitURL;
+
+
+						// Create and revoke ObjectURL
+						imgURL = URL.createObjectURL(data);
+
+						image.src = imgURL;
+					}
+					else
+					{
+						var packdata_request = new XMLHttpRequest();
+
+						packdata_request.open("GET", full_name, true);
+
+						 packdata_request.responseType = "blob";
+
+
+
+						packdata_request.onreadystatechange = function()
+						{
+							if (packdata_request.readyState != 4) return;
+
+							if (packdata_request.status == 200)
+							{
+								var buffer=packdata_request.response;
+
+								 var URL = Mandreel_window.URL || Mandreel_window.webkitURL;
+
+								// Create and revoke ObjectURL
+								imgURL = URL.createObjectURL(buffer);
+
+								image.src = imgURL;
+
+								mandreel_fs_saveFile(new_name, buffer);
+
+							}
+							else
+							{
+
+								Mandreel_TextureAsync_textures_loaded++;
+
+							}
+						}
+
+						packdata_request.send();
+					}
+
+				}
+				);
+			}
+			else
+				image_src = full_name;
+		}
+	}
+
+
+	if (image_src_valid)
+	{
+		setTimeout( function Mandreel_TextureAsync_Load_callback() {
+						image.src = image_src;
+					}, 1);
+	}
+}
+
+
+
+function __sandbox_OutputDebugString(sp)
+{
+	puts(sp);
+}
+
+
+
+
+var MANDREELCALLJS_TYPE_RETURN_VOID = 0;
+var MANDREELCALLJS_TYPE_INT = 1;
+var MANDREELCALLJS_TYPE_FLOAT =  2;
+var MANDREELCALLJS_TYPE_STRING =  3;
+var MANDREELCALLJS_TYPE_RETURN_INT =  4;
+var MANDREELCALLJS_TYPE_RETURN_FLOAT =  5;
+
+function MandreelInterWriteString(ptr, value)
+{
+	fill_ptr_from_string(ptr,value);
+}
+
+function MandreelInterWriteWString(ptr, value)
+{
+	fill_wptr_from_string(ptr, value);
+}
+
+function MandreelInterWriteFloat(ptr, value)
+{
+	heapFloat[ptr>>2] = value;
+}
+
+function MandreelPause()
+{
+	_imandreel_pause_game = true;
+}
+
+function MandreelResume()
+{
+	_imandreel_pause_game = false;
+}
+
+
+function MandreelLockFrame()
+{
+	assert(g_mandreel_frame_inframe == false, "calling lockframe during render frame");
+	assert(g_mandreel_frame_locked == false, "calling lockframe twice");
+	g_mandreel_frame_locked = true;
+
+	return g_stack_pointer+800*1024;
+}
+
+function MandreelUnlockFrame()
+{
+	assert(g_mandreel_frame_inframe == false);
+	g_mandreel_frame_locked = false;
+}
+
+
+function MandreelInterWriteInt(ptr, value)
+{
+	heap32[ptr>>2] = value;
+}
+
+function MandreelInterStringFromWPtr(ptr)
+{
+	return get_string_from_wptr(ptr);
+}
+
+function MandreelInterStringFromPtr(ptr)
+{
+	return get_string_from_ptr(ptr);
+}
+
+function mandreel_my_call_external_array(method, params)
+{
+	var result
+	var resultString;
+	try
+	{
+		switch(params.length)
+		{
+			case 1:
+				resultString = Mandreel_window[method](params[0]);
+				break;
+			case 2:
+				resultString = Mandreel_window[method](params[0],params[1]);
+				break;
+			case 3:
+				resultString = Mandreel_window[method](params[0],params[1],params[2]);
+				break;
+			case 4:
+				resultString = Mandreel_window[method](params[0],params[1],params[2],params[3]);
+				break;
+			case 5:
+				resultString = Mandreel_window[method](params[0],params[1],params[2],params[3],params[4]);
+				break;
+			case 6:
+				resultString = Mandreel_window[method](params[0],params[1],params[2],params[3],params[4],params[5]);
+				break;
+			case 7:
+				resultString = Mandreel_window[method](params[0],params[1],params[2],params[3],params[4],params[5],params[6]);
+				break;
+			case 8:
+				resultString = Mandreel_window[method](params[0],params[1],params[2],params[3],params[4],params[5],params[6],params[7]);
+				break;
+			case 9:
+				resultString = Mandreel_window[method](params[0],params[1],params[2],params[3],params[4],params[5],params[6],params[7],params[8]);
+				break;
+			case 10:
+				resultString = Mandreel_window[method](params[0],params[1],params[2],params[3],params[4],params[5],params[6],params[7],params[8],params[9]);
+				break;
+			case 11:
+				resultString = Mandreel_window[method](params[0],params[1],params[2],params[3],params[4],params[5],params[6],params[7],params[8],params[9],params[10]);
+				break;
+			case 12:
+				resultString = Mandreel_window[method](params[0],params[1],params[2],params[3],params[4],params[5],params[6],params[7],params[8],params[9],params[10],params[11]);
+				break;
+			case 13:
+				resultString = Mandreel_window[method](params[0],params[1],params[2],params[3],params[4],params[5],params[6],params[7],params[8],params[9],params[10],params[11],params[12]);
+				break;
+			case 14:
+				resultString = Mandreel_window[method](params[0],params[1],params[2],params[3],params[4],params[5],params[6],params[7],params[8],params[9],params[10],params[11],params[12],params[13]);
+				break;
+			case 15:
+				resultString = Mandreel_window[method](params[0],params[1],params[2],params[3],params[4],params[5],params[6],params[7],params[8],params[9],params[10],params[11],params[12],params[13],params[14]);
+				break;
+			default:
+				assert(false);
+		}
+		result = 0;
+	} catch(e) { dump('error calling ' + method + '\n'); dump(e); result = 1;}
+
+	return [result,resultString];
+}
+
+
+function Mandreel_InterJS_Call(sp)
+{
+	var new_sp = sp;
+	var method_ptr = heap32[sp>>2];sp+=4;
+	var method = get_string_from_ptr(method_ptr);
+
+	var params = new Array();
+
+
+	params.push(new_sp);
+
+	var var_int;
+	var var_string;
+	var var_double;
+
+	var return_type;
+	var return_ptr;
+	while (true)
+	{
+		var my_type = heap32[sp>>2];sp+=4;
+
+
+		if (my_type == MANDREELCALLJS_TYPE_RETURN_VOID)
+		{
+			return_type = my_type;
+			break;
+		}
+		else if (my_type == MANDREELCALLJS_TYPE_INT)
+		{
+			var_int = heap32[sp>>2];
+
+			params.push(var_int);
+			sp+=4;
+		}
+		else if (my_type == MANDREELCALLJS_TYPE_FLOAT)
+		{
+			sp = (sp+7) & ~7;
+
+			var_double = llvm_readDouble(sp);
+
+			params.push(var_double);
+			sp+=8;
+		}
+		else if (my_type == MANDREELCALLJS_TYPE_STRING)
+		{
+			var_int = heap32[sp>>2];
+			var_string = get_string_from_ptr(var_int);
+
+			params.push(var_string);
+			sp+=4;
+		}
+		else if (my_type == MANDREELCALLJS_TYPE_RETURN_INT)
+		{
+			return_type = my_type;
+			return_ptr = heap32[sp>>2];
+			break;
+		}
+		else if (my_type == MANDREELCALLJS_TYPE_RETURN_FLOAT)
+		{
+			return_type = my_type;
+			return_ptr = heap32[sp>>2];
+			break;
+		}
+		else
+		{
+			assert(false, "invalid arguments calling Mandreel_InterJS_Call");
+		}
+	}
+
+	var result = mandreel_my_call_external_array(method,params);
+
+	r_g0 = result[0];
+
+
+	if (r_g0 == 0)
+	{
+		if (return_type == MANDREELCALLJS_TYPE_RETURN_INT)
+		{
+			heap32[return_ptr>>2] = result[1];
+		}
+		else if (return_type == MANDREELCALLJS_TYPE_RETURN_FLOAT)
+		{
+			heapFloat[return_ptr>>2] = result[1];
+		}
+
+	}
+}
+
+function iMandreelRegisterExternalCallback()
+{
+}
+
+function __mandreel_internal_CreateWindow()
+{
+}
+
+var __mandreel_async_calls_mandreel = [];
+var __mandreel_async_calls_js = [];
+
+
+function Mandreel_InterJS_AsyncCall(sp)
+{
+	var method_ptr = heap32[sp>>2];sp+=4;
+	var _func_name = get_string_from_ptr(method_ptr);
+	var param_ptr = heap32[sp>>2];sp+=4;
+	var _param = get_string_from_ptr(param_ptr);
+
+	__mandreel_async_calls_js.push({func_name:_func_name,param:_param});
+}
+
+
+
+
+function MandreelInterCallFunctionAsync(_func_name, _param)
+{
+	__mandreel_async_calls_mandreel.push({func_name:_func_name,param:_param});
+
+
+}
+
+function __mandreel_process_async_calls()
+{
+	if (__mandreel_async_calls_mandreel.length)
+	{
+		var temp_list = __mandreel_async_calls_mandreel.slice(0);
+
+		__mandreel_async_calls_mandreel = [];
+
+		for (var i=0;i<temp_list.length;++i)
+		{
+			var param = temp_list[i].param;
+			var func_name = temp_list[i].func_name;
+
+			var size = ((param.length + 1)+7)&0xFFFFFFF8;
+
+			var sp = g_stack_pointer+800*1024;
+
+			var str_ptr = sp - size;
+			fill_ptr_from_string(str_ptr,param);
+
+			sp = str_ptr - 4;
+			heap32[sp>>2] = str_ptr;
+
+			Mandreel_window[func_name](sp);
+		}
+	}
+
+	if (__mandreel_async_calls_js.length)
+	{
+		var temp_list = __mandreel_async_calls_js.slice(0);
+
+		__mandreel_async_calls_js = [];
+
+		for (var i=0;i<temp_list.length;++i)
+		{
+			var param = temp_list[i].param;
+			var func_name = temp_list[i].func_name;
+
+			Mandreel_window[func_name](param);
+
+		}
+	}
+}
+
+function mandreel_internal_isCanvas(sp)
+{
+	if ( mandreelAppPlatform == "canvas" )
+		r_g0 = 1;
+	else
+		r_g0 = 0;
+}
+
+function Mandreel_Device_SetFullScreen(sp)
+{
+	var enable = heap32[sp>>2];sp+=4;
+	mandreelAppFullscreen(enable);
+}
+
+var array_ids_ogl = [];
+
+var max_ogl_id = 8192;
+
+var array_ids_ogl_enable = [];
+var g_current_program_id = 0;
+
+
+var uniformArrays2 = [];
+var uniformArrays3 = [];
+var uniformArrays4 = [];
+var uniformArraysCreated = 0;
+var mandreel_draw_enable = true;
+
+
+if (typeof imandreel_gl=="undefined")
+{
+	alert('using old template, update code');
+}
+
+function myglCreateUniformArrays()
+{
+	if ( uniformArraysCreated == 0 )
+	{
+		for(var i=0; i<256;i++ )
+		{
+			uniformArrays2[i] = new Float32Array(i*2);
+			uniformArrays3[i] = new Float32Array(i*3);
+			uniformArrays4[i] = new Float32Array(i*4);
+		}
+		uniformArraysCreated = 1;
+	}
+}
+
+var my_super_id = 1;
+function myglNewSlot()
+{
+	//var id = array_ids_ogl_enable.pop();
+	var id = my_super_id;
+	my_super_id++;
+	return id;
+}
+
+function myglFreeSlot(id)
+{
+	//array_ids_ogl_enable.push(id);
+}
+
+
+function myglCreateProgram(sp)
+{
+	var id = myglNewSlot();
+	var program = imandreel_gl.createProgram();
+
+	program.uniform_locations_current_id = 0;
+	program.array_uniform_locations = [];
+
+	array_ids_ogl[id] = program;
+
+
+	r_g0 = id;
+}
+
+function myglCreateShader(sp)
+{
+	var type = heap32[sp>>2];sp+=4;
+	var id = myglNewSlot();
+
+	array_ids_ogl[id] = imandreel_gl.createShader(type);
+
+	r_g0 = id;
+}
+
+function myglAttachShader(sp)
+{
+	var program_id = heap32[sp>>2];sp+=4;
+	var shader_id = heap32[sp>>2];sp+=4;
+
+	imandreel_gl.attachShader(array_ids_ogl[program_id], array_ids_ogl[shader_id]);
+}
+
+function myglBindAttribLocation(sp)
+{
+	var program_id = heap32[sp>>2];sp+=4;
+	var index = heap32[sp>>2];sp+=4;
+	var ptr_string = heap32[sp>>2];sp+=4;
+
+	var string = get_string_from_ptr(ptr_string);
+
+	imandreel_gl.bindAttribLocation(array_ids_ogl[program_id], index, string);
+}
+
+function myglLinkProgram(sp)
+{
+	var program_id = heap32[sp>>2];sp+=4;
+
+	imandreel_gl.linkProgram(array_ids_ogl[program_id]);
+}
+
+function myglShaderSource(sp)
+{
+	var id = heap32[sp>>2];sp+=4;
+	var ptr_string = heap32[sp>>2];sp+=4;
+
+	var shader = array_ids_ogl[id];
+
+	var shader_code = get_string_from_ptr(ptr_string);
+
+	//dump(shader_code);
+
+
+	imandreel_gl.shaderSource(shader, shader_code);
+}
+
+
+function myglDrawArrays(sp)
+{
+	var mode = heap32[sp>>2];sp+=4;
+	var first = heap32[sp>>2];sp+=4;
+	var count = heap32[sp>>2];sp+=4;
+
+	if (mandreel_draw_enable)
+		imandreel_gl.drawArrays(mode, first, count);
+
+
+	//dump('draw arrays ' + mode + ' ' + first + ' ' + count + '\n');
+ }
+
+function myglDrawElements(sp)
+{
+	var mode = heapU32[sp>>2]; sp+=4;
+	var count = heapU32[sp>>2]; sp+=4;
+	var type = heapU32[sp>>2]; sp+=4;
+	var offset = heapU32[sp>>2]; sp+=4;
+
+
+	if (mandreel_draw_enable)
+		imandreel_gl.drawElements(mode, count, type, offset);
+
+
+
+}
+
+function myglCreateTexture(sp)
+{
+	var id = myglNewSlot();
+	array_ids_ogl[id] = imandreel_gl.createTexture();
+
+	r_g0 = id;
+}
+
+function myglCreateRenderBuffer(sp) {
+	var id = myglNewSlot();
+    array_ids_ogl[id] = imandreel_gl.createRenderbuffer();
+
+    r_g0 = id;
+}
+
+function myglCreateFrameBuffer(sp) {
+	var id = myglNewSlot();
+    array_ids_ogl[id] = imandreel_gl.createFramebuffer();
+
+    r_g0 = id;
+}
+
+function myglBindFramebuffer(sp)
+{
+    var target = heap32[sp >> 2]; sp += 4;
+    var framebuffer_id = heap32[sp >> 2]; sp += 4;
+
+	if (framebuffer_id != 0)
+	{
+		var framebuffer = array_ids_ogl[framebuffer_id];
+		imandreel_gl.bindFramebuffer(target,framebuffer);
+	}
+	else
+		imandreel_gl.bindFramebuffer(target,null);
+
+}
+
+function myglBindRenderbuffer(sp)
+{
+    var target = heap32[sp >> 2]; sp += 4;
+    var renderbuffer_id = heap32[sp >> 2]; sp += 4;
+
+    var renderbuffer = array_ids_ogl[renderbuffer_id];
+
+    imandreel_gl.bindRenderbuffer(target,renderbuffer);
+
+}
+
+
+function myglRenderbufferStorage(sp) {
+    var target = heap32[sp >> 2]; sp += 4;
+    var internalformat = heap32[sp >> 2]; sp += 4;
+    var witdth = heap32[sp >> 2]; sp += 4;
+    var height = heap32[sp >> 2]; sp += 4;
+
+    imandreel_gl.renderbufferStorage(target, internalformat, witdth, height);
+
+}
+
+function myglFramebufferRenderbuffer (sp)
+{
+  var target = heap32[sp>>2];sp+=4;
+  var attachment = heap32[sp>>2];sp+=4;
+  var renderbuffertarget = heap32[sp>>2];sp+=4;
+  var renderbuffer_id = heap32[sp>>2];sp+=4;
+
+    var renderbuffer = array_ids_ogl[renderbuffer_id];
+
+    imandreel_gl.framebufferRenderbuffer(target, attachment, renderbuffertarget, renderbuffer);
+
+}
+
+function myglFramebufferTexture2D (sp)
+{
+  var target = heap32[sp>>2];sp+=4;
+  var attachment = heap32[sp>>2];sp+=4;
+  var textarget = heap32[sp>>2];sp+=4;
+  var texture_id = heap32[sp>>2];sp+=4;
+  var level = heap32[sp>>2];sp+=4;
+
+  var texture = array_ids_ogl[texture_id];
+
+  imandreel_gl.framebufferTexture2D(target, attachment, textarget, texture, level);
+
+
+}
+
+function myglTexImage2D(sp)
+ {
+  var target = heap32[sp>>2];sp+=4;
+  var level = heap32[sp>>2];sp+=4;
+  var internalFormat = heap32[sp>>2];sp+=4;
+  var width = heap32[sp>>2];sp+=4;
+  var height = heap32[sp>>2];sp+=4;
+  var border = heap32[sp>>2];sp+=4;
+  var format = heap32[sp>>2];sp+=4;
+  var type = heap32[sp>>2];sp+=4;
+  var data = heap32[sp>>2];sp+=4;
+
+  if (level>0 && target==imandreel_gl.TEXTURE_2D)
+	return;
+
+   if (data == 0)
+  {
+	//imandreel_gl.texImage2D(target, level, internalFormat, width, height, border, format, type, null);
+	var buffer;
+	var bufferView;
+
+	if (type == imandreel_gl.UNSIGNED_SHORT_5_6_5 || type == imandreel_gl.UNSIGNED_SHORT_4_4_4_4 || type == imandreel_gl.UNSIGNED_SHORT_5_5_5_1)
+    {
+		buffer = new ArrayBuffer(width*height*2);
+		bufferView = new Uint16Array(buffer);
+	}
+	else
+	{
+		var size;
+		if (format == imandreel_gl.LUMINANCE)
+			size = width*height;
+		else if (format == imandreel_gl.RGB)
+			size = width*height*3;
+		else if (format == imandreel_gl.RGBA)
+			size = width*height*4;
+		else if (format == imandreel_gl.ALPHA)
+			size = width*height;
+		else if (format == imandreel_gl.LUMINANCE_ALPHA)
+			size = width*height*2;
+
+		buffer = new ArrayBuffer(size);
+		bufferView = new Uint8Array(buffer);
+	}
+
+	imandreel_gl.texImage2D(target, level, internalFormat, width, height, border, format, type, bufferView);
+	return;
+  }
+
+
+  	var bufferView;
+   if (type == imandreel_gl.UNSIGNED_SHORT_5_6_5 || type == imandreel_gl.UNSIGNED_SHORT_4_4_4_4 || type == imandreel_gl.UNSIGNED_SHORT_5_5_5_1)
+   {
+		bufferView = new Uint16Array(heap,data,width*height);
+	}
+	else if (type == imandreel_gl.UNSIGNED_BYTE)
+	{
+		if (format == imandreel_gl.LUMINANCE)
+			bufferView = new Uint8Array(heap,data,width*height);
+		else if (format == imandreel_gl.RGB)
+			bufferView = new Uint8Array(heap,data,width*height*3);
+		else if (format == imandreel_gl.RGBA)
+			bufferView = new Uint8Array(heap,data,width*height*4);
+		else if (format == imandreel_gl.ALPHA)
+			bufferView = new Uint8Array(heap,data,width*height);
+		else if (format == imandreel_gl.LUMINANCE_ALPHA)
+			bufferView = new Uint8Array(heap,data,width*height*2);
+		else
+		{
+			dump('format unknown ' + format + '\n');
+			assert(false);
+		}
+	}
+	else
+	{
+	dump('type unknown ' + type + '\n');
+		assert(false);
+	}
+
+  imandreel_gl.texImage2D(target, level, internalFormat, width, height, border, format, type, bufferView);
+  if ((width&(width-1))==0 && (height&(height-1))==0)
+  {
+    if (target==imandreel_gl.TEXTURE_2D)
+	imandreel_gl.generateMipmap(target);
+}
+ }
+  function myglStencilFunc(sp)
+  {
+  var func = heap32[sp>>2];sp+=4;
+  var ref = heap32[sp>>2];sp+=4;
+  var mask = heap32[sp>>2];sp+=4;
+
+  imandreel_gl.stencilFunc(func, ref, mask);
+  }
+
+  function myglStencilFuncSeparate(sp)
+  {
+  var face = heap32[sp>>2];sp+=4;
+  var func = heap32[sp>>2];sp+=4;
+  var ref = heap32[sp>>2];sp+=4;
+  var mask = heap32[sp>>2];sp+=4;
+
+  imandreel_gl.stencilFuncSeparate(face,func,ref,mask);
+  }
+
+  function myglStencilMaskSeparate(sp)
+  {
+  var face = heap32[sp>>2];sp+=4;
+   var mask = heap32[sp>>2];sp+=4;
+
+   imandreel_gl.stencilMaskSeparate(face,mask);
+  }
+
+  function myglStencilMask(sp)
+  {
+   var mask = heap32[sp>>2];sp+=4;
+
+   imandreel_gl.stencilMask(mask);
+  }
+  function myglStencilOp (sp)
+  {
+   var fail = heap32[sp>>2];sp+=4;
+  var zfail = heap32[sp>>2];sp+=4;
+   var zpass = heap32[sp>>2];sp+=4;
+
+  imandreel_gl.stencilOp(fail, zfail, zpass);
+  }
+
+  function myglStencilOpSeparate (sp)
+  {
+  var face = heap32[sp>>2];sp+=4;
+   var fail = heap32[sp>>2];sp+=4;
+  var zfail = heap32[sp>>2];sp+=4;
+   var zpass = heap32[sp>>2];sp+=4;
+
+  imandreel_gl.stencilOpSeparate(face, fail, zfail, zpass);
+  }
+
+ function myglTexSubImage2D(sp)
+ {
+  var target = heap32[sp>>2];sp+=4;
+  var level = heap32[sp>>2];sp+=4;
+  var xoffset = heap32[sp>>2];sp+=4;
+  var yoffset = heap32[sp>>2];sp+=4;
+  var width = heap32[sp>>2];sp+=4;
+  var height = heap32[sp>>2];sp+=4;
+  var format = heap32[sp>>2];sp+=4;
+  var type = heap32[sp>>2];sp+=4;
+  var data = heap32[sp>>2];sp+=4;
+
+
+
+  	var bufferView;
+   if (type == imandreel_gl.UNSIGNED_SHORT_5_6_5 || type == imandreel_gl.UNSIGNED_SHORT_4_4_4_4 || type == imandreel_gl.UNSIGNED_SHORT_5_5_5_1)
+   {
+		bufferView = new Uint16Array(heap,data,width*height);
+	}
+	else if (type == imandreel_gl.UNSIGNED_BYTE)
+	{
+		if (format == imandreel_gl.LUMINANCE)
+			bufferView = new Uint8Array(heap,data,width*height);
+		else if (format == imandreel_gl.RGB)
+			bufferView = new Uint8Array(heap,data,width*height*3);
+		else if (format == imandreel_gl.RGBA)
+			bufferView = new Uint8Array(heap,data,width*height*4);
+		else if (format == imandreel_gl.ALPHA)
+			bufferView = new Uint8Array(heap,data,width*height);
+	}
+
+  imandreel_gl.texSubImage2D(target, level, xoffset, yoffset, width, height, format, type, bufferView);
+ }
+
+
+  function myglCreateBuffer(sp)
+{
+	var id = myglNewSlot();
+	array_ids_ogl[id] = imandreel_gl.createBuffer();
+
+	r_g0 = id;
+}
+
+var glBufferDataArray = [];
+
+function myglBufferData(sp)
+{
+	var target = heapU32[sp>>2]; sp+=4;
+	var size = heapU32[sp>>2]; sp+=4;
+	var data = heapU32[sp>>2]; sp+=4;
+	var usage = heapU32[sp>>2]; sp+=4;
+
+	if (data == 0)
+		imandreel_gl.bufferData(target, size, usage);
+	else
+	{
+		if (usage == imandreel_gl.STATIC_DRAW || true)
+		{
+			var buffer_data = new Int8Array(heap, data, size);
+			imandreel_gl.bufferData(target, buffer_data, usage);
+		}
+		else
+		{
+			var new_size = size/4;
+			var buffer_data = glBufferDataArray[new_size];
+
+			if (buffer_data == null)
+			{
+				buffer_data =  new Int32Array(new_size);
+				glBufferDataArray[new_size] = buffer_data;
+			}
+
+			var new_data = data>>2;
+
+			for ( var i = 0 ; i < new_size ; ++i )
+			{
+				buffer_data[i] = heap32[new_data+i];
+			}
+
+			imandreel_gl.bufferData(target, buffer_data, usage);
+		}
+	}
+}
+
+function myglBufferSubData(sp)
+{
+	var target = heapU32[sp>>2]; sp+=4;
+	var offset = heapU32[sp>>2]; sp+=4;
+	var size = heapU32[sp>>2]; sp+=4;
+	var data = heapU32[sp>>2]; sp+=4;
+
+
+	var buffer_data = new Int8Array(heap, data, size);
+	imandreel_gl.bufferSubData(target, offset, buffer_data);
+
+//	dump('buffer sub data ' + offset + ' ' + size + ' ' + data + '\n')
+
+}
+
+
+function myglBindBuffer(sp)
+{
+	var target = heapU32[sp>>2]; sp+=4;
+	var id = heapU32[sp>>2]; sp+=4;
+
+	imandreel_gl.bindBuffer(target, array_ids_ogl[id]);
+}
+
+
+function myglUseProgram(sp)
+{
+	var program_id = heap32[sp>>2];sp+=4;
+
+	g_current_program_id = program_id;
+
+	imandreel_gl.useProgram(array_ids_ogl[program_id]);
+
+}
+
+function myglDisableVertexAttribArray(sp)
+{
+	var idx = heapU32[sp>>2];sp+=4;
+	imandreel_gl.disableVertexAttribArray(idx);
+}
+function myglEnableVertexAttribArray(sp)
+{
+	var idx = heapU32[sp>>2];sp+=4;
+	imandreel_gl.enableVertexAttribArray(idx);
+}
+
+function myglVertexAttribPointer(sp)
+{
+	var idx = heapU32[sp>>2];sp+=4;
+	var size = heapU32[sp>>2];sp+=4;
+	var type = heapU32[sp>>2];sp+=4;
+	var normalized = heapU32[sp>>2];sp+=4;
+	var stride = heapU32[sp>>2];sp+=4;
+	var ptr = heapU32[sp>>2];sp+=4;
+
+	//dump(idx + ' ' + size + ' ' + type + ' ' + normalized + ' ' + stride + ' ' + ptr + '\n');
+
+
+	imandreel_gl.vertexAttribPointer(idx, size, type, normalized, stride, ptr);
+}
+
+function myglPolygonOffset(sp)
+{
+	var factor = heapFloat[sp>>2]; sp+=4;
+	var units = heapFloat[sp>>2]; sp+=4;
+	imandreel_gl.polygonOffset(factor, units);
+}
+
+function myglEnable(sp)
+ {
+	var value = heap32[sp>>2];sp+=4;
+
+	imandreel_gl.enable(value);
+  }
+
+function myglDisable(sp)
+ {
+	var value = heap32[sp>>2];sp+=4;
+
+	imandreel_gl.disable(value);
+  }
+
+  function myglDepthFunc(sp)
+  {
+	var func = heapU32[sp>>2];sp+=4;
+
+	imandreel_gl.depthFunc(func);
+
+  }
+
+  function myglGenerateMipmap(sp)
+  {
+	var texture_type = heap32[sp>>2];sp+=4;
+	imandreel_gl.generateMipmap(texture_type);
+  }
+
+  function myglPixelStorei (sp)
+  {
+	var pname = heap32[sp>>2];sp+=4;
+	var param = heap32[sp>>2];sp+=4;
+	imandreel_gl.pixelStorei(pname,param);
+  }
+
+
+  function myglBindTexture(sp)
+  {
+  var texture_type = heap32[sp>>2];sp+=4;
+  var texture_id = heap32[sp>>2];sp+=4;
+
+if (texture_id == 0)
+{
+	imandreel_gl.bindTexture(texture_type, null);
+}
+else
+{
+	var tex = array_ids_ogl[texture_id];
+	imandreel_gl.bindTexture(texture_type, tex);
+	}
+
+  }
+
+  function myglActiveTexture(sp)
+{
+	var param = heapU32[sp>>2];sp+=4;
+	imandreel_gl.activeTexture(param);
+}
+
+function myglCompileShader(sp)
+{
+	var id = heap32[sp>>2];sp+=4;
+
+	var shader = array_ids_ogl[id];
+
+	imandreel_gl.compileShader(shader);
+}
+
+function myglGetUniformLocation(sp)
+{
+	var program_id = heap32[sp>>2];sp+=4;
+	var ptr_string = heap32[sp>>2];sp+=4;
+
+	var string = get_string_from_ptr(ptr_string);
+	var program = array_ids_ogl[program_id];
+	var result = imandreel_gl.getUniformLocation(program, string);
+
+	if (result != null)
+	{
+		program.array_uniform_locations[program.uniform_locations_current_id] = result;
+		r_g0 = program.uniform_locations_current_id;
+		program.uniform_locations_current_id++;
+	}
+	else
+		r_g0 = -1;
+}
+
+function myglIsEnabled(sp)
+{
+	var cap = heap32[sp>>2];sp+=4;
+
+	r_g0 = imandreel_gl.isEnabled(cap);
+}
+
+
+function myglUniform1i(sp)
+{
+	var index = heap32[sp>>2];sp+=4;
+	var value = heap32[sp>>2];sp+=4;
+
+	var program = array_ids_ogl[g_current_program_id];
+
+	var uniform_value = program.array_uniform_locations[index];
+
+	imandreel_gl.uniform1i(uniform_value, value);
+}
+
+function myglUniform2i(sp)
+{
+	var index = heap32[sp>>2];sp+=4;
+	var x = heap32[sp>>2];sp+=4;
+	var y = heap32[sp>>2];sp+=4;
+
+	var program = array_ids_ogl[g_current_program_id];
+
+	var uniform_value = program.array_uniform_locations[index];
+
+	imandreel_gl.uniform2i(uniform_value, x,y);
+}
+
+function myglUniform3i(sp)
+{
+	var index = heap32[sp>>2];sp+=4;
+	var x = heap32[sp>>2];sp+=4;
+	var y = heap32[sp>>2];sp+=4;
+	var z = heap32[sp>>2];sp+=4;
+
+	var program = array_ids_ogl[g_current_program_id];
+
+	var uniform_value = program.array_uniform_locations[index];
+
+	imandreel_gl.uniform3i(uniform_value, x,y,z);
+}
+
+function myglUniform4i(sp)
+{
+	var index = heap32[sp>>2];sp+=4;
+	var x = heap32[sp>>2];sp+=4;
+	var y = heap32[sp>>2];sp+=4;
+	var z = heap32[sp>>2];sp+=4;
+	var w = heap32[sp>>2];sp+=4;
+
+	var program = array_ids_ogl[g_current_program_id];
+
+	var uniform_value = program.array_uniform_locations[index];
+
+	imandreel_gl.uniform4i(uniform_value, x,y,z,w);
+}
+
+function myglUniform1f(sp)
+{
+	var index = heap32[sp>>2];sp+=4;
+	var value = heapFloat[sp>>2];sp+=4;
+
+	var program = array_ids_ogl[g_current_program_id];
+
+	var uniform_value = program.array_uniform_locations[index];
+
+	imandreel_gl.uniform1f(uniform_value, value);
+}
+
+function myglUniform3f(sp)
+{
+	var index = heap32[sp>>2];sp+=4;
+	var x = heapFloat[sp>>2];sp+=4;
+	var y = heapFloat[sp>>2];sp+=4;
+	var z = heapFloat[sp>>2];sp+=4;
+
+	var program = array_ids_ogl[g_current_program_id];
+
+	var uniform_value = program.array_uniform_locations[index];
+
+	imandreel_gl.uniform3f(uniform_value, x,y,z);
+}
+
+function myglUniform2f(sp)
+{
+	var index = heap32[sp>>2];sp+=4;
+	var x = heapFloat[sp>>2];sp+=4;
+	var y = heapFloat[sp>>2];sp+=4;
+
+	var program = array_ids_ogl[g_current_program_id];
+
+	var uniform_value = program.array_uniform_locations[index];
+
+	imandreel_gl.uniform2f(uniform_value, x,y);
+}
+
+
+function myglUniform4f(sp)
+{
+	var index = heap32[sp>>2];sp+=4;
+	var x = heapFloat[sp>>2];sp+=4;
+	var y = heapFloat[sp>>2];sp+=4;
+	var z = heapFloat[sp>>2];sp+=4;
+	var w = heapFloat[sp>>2];sp+=4;
+
+	var program = array_ids_ogl[g_current_program_id];
+	var uniform_value = program.array_uniform_locations[index];
+
+	imandreel_gl.uniform4f(uniform_value, x,y,z,w);
+}
+
+function myglUniform1fv(sp)
+{
+	var index = heap32[sp>>2];sp+=4;
+	var count = heap32[sp>>2];sp+=4;
+	var data = heap32[sp>>2];sp+=4;
+
+	var new_data = data>>2;
+	var new_count = count;
+	var bufferView = new Float32Array(new_count);
+
+	for ( var i = 0 ; i < new_count ; ++i )
+	{
+		bufferView[i] = heapFloat[new_data+i];
+	}
+
+	var program = array_ids_ogl[g_current_program_id];
+	var uniform_value = program.array_uniform_locations[index];
+	imandreel_gl.uniform1fv(uniform_value, bufferView);
+
+
+}
+
+function myglUniform1iv(sp)
+{
+	var index = heap32[sp>>2];sp+=4;
+	var count = heap32[sp>>2];sp+=4;
+	var data = heap32[sp>>2];sp+=4;
+
+	var new_data = data>>2;
+	var new_count = count;
+	var bufferView = new Int32Array(new_count);
+
+	for ( var i = 0 ; i < new_count ; ++i )
+	{
+		bufferView[i] = heap32[new_data+i];
+	}
+
+	var program = array_ids_ogl[g_current_program_id];
+	var uniform_value = program.array_uniform_locations[index];
+	imandreel_gl.uniform1iv(uniform_value, bufferView);
+}
+
+function myglUniform2iv(sp)
+{
+	var index = heap32[sp>>2];sp+=4;
+	var count = heap32[sp>>2];sp+=4;
+	var data = heap32[sp>>2];sp+=4;
+
+	var new_data = data>>2;
+	var new_count = count*2;
+	var bufferView = new Int32Array(new_count);
+
+	for ( var i = 0 ; i < new_count ; ++i )
+	{
+		bufferView[i] = heap32[new_data+i];
+	}
+
+	var program = array_ids_ogl[g_current_program_id];
+	var uniform_value = program.array_uniform_locations[index];
+	imandreel_gl.uniform2iv(uniform_value, bufferView);
+}
+
+function myglUniform3iv(sp)
+{
+	var index = heap32[sp>>2];sp+=4;
+	var count = heap32[sp>>2];sp+=4;
+	var data = heap32[sp>>2];sp+=4;
+
+	var new_data = data>>2;
+	var new_count = count*3;
+	var bufferView = new Int32Array(new_count);
+
+	for ( var i = 0 ; i < new_count ; ++i )
+	{
+		bufferView[i] = heap32[new_data+i];
+	}
+
+	var program = array_ids_ogl[g_current_program_id];
+	var uniform_value = program.array_uniform_locations[index];
+	imandreel_gl.uniform3iv(uniform_value, bufferView);
+}
+
+function myglUniform4iv(sp)
+{
+	var index = heap32[sp>>2];sp+=4;
+	var count = heap32[sp>>2];sp+=4;
+	var data = heap32[sp>>2];sp+=4;
+
+	var new_data = data>>2;
+	var new_count = count*4;
+	var bufferView = new Int32Array(new_count);
+
+	for ( var i = 0 ; i < new_count ; ++i )
+	{
+		bufferView[i] = heap32[new_data+i];
+	}
+
+	var program = array_ids_ogl[g_current_program_id];
+	var uniform_value = program.array_uniform_locations[index];
+	imandreel_gl.uniform4iv(uniform_value, bufferView);
+}
+
+
+
+function myglUniform3fv(sp)
+{
+	myglCreateUniformArrays();
+
+	var index = heap32[sp>>2];sp+=4;
+	var count = heap32[sp>>2];sp+=4;
+	var data = heap32[sp>>2];sp+=4;
+
+	var new_data = data>>2;
+	var new_count = count*3;
+	var bufferView = uniformArrays3[count];
+
+	for ( var i = 0 ; i < new_count ; ++i )
+	{
+		bufferView[i] = heapFloat[new_data+i];
+	}
+
+	var program = array_ids_ogl[g_current_program_id];
+	var uniform_value = program.array_uniform_locations[index];
+	imandreel_gl.uniform3fv(uniform_value, bufferView);
+}
+
+function myglUniform2fv(sp)
+{
+	myglCreateUniformArrays();
+
+    var index = heap32[sp >> 2]; sp += 4;
+    var count = heap32[sp >> 2]; sp += 4;
+    var data = heap32[sp >> 2]; sp += 4;
+
+	var new_data = data>>2;
+	var new_count = count*2;
+	var bufferView = uniformArrays2[count];
+
+	for ( var i = 0 ; i < new_count ; ++i )
+	{
+		bufferView[i] = heapFloat[new_data+i];
+	}
+
+
+	var program = array_ids_ogl[g_current_program_id];
+    var uniform_value = program.array_uniform_locations[index];
+    imandreel_gl.uniform2fv(uniform_value, bufferView);
+}
+
+
+function myglUniform4fv(sp)
+{
+	myglCreateUniformArrays();
+
+	var index = heap32[sp>>2];sp+=4;
+	var count = heap32[sp>>2];sp+=4;
+	var data = heap32[sp>>2];sp+=4;
+
+
+	var new_data = data>>2;
+	var new_count = count*4;
+	var bufferView = uniformArrays4[count];
+
+	for ( var i = 0 ; i < new_count ; ++i )
+	{
+		bufferView[i] = heapFloat[new_data+i];
+	}
+
+
+	var program = array_ids_ogl[g_current_program_id];
+	var uniform_value = program.array_uniform_locations[index];
+	imandreel_gl.uniform4fv(uniform_value, bufferView);
+}
+
+
+function myglUniformMatrix4fv(sp)
+{
+	myglCreateUniformArrays();
+
+	var index = heap32[sp>>2];sp+=4;
+	var count = heap32[sp>>2];sp+=4;
+	var transpose = heap32[sp>>2];sp+=4;
+	var ptr = heap32[sp>>2];sp+=4;
+
+	var program = array_ids_ogl[g_current_program_id];
+	var uniform_value = program.array_uniform_locations[index];
+
+	//var buffer_data = new Float32Array(heap, ptr, count*16);
+	for ( var i = 0 ; i < count*16 ; ++i )
+	{
+		uniformArrays4[count*4][i] = heapFloat[(ptr>>2)+i];
+	}
+
+	//imandreel_gl.uniformMatrix4fv(uniform_value, transpose, buffer_data);
+	//imandreel_gl.uniformMatrix4fv(uniform_value, transpose, heapFloat.subarray(ptr/4,(ptr/4)+(count*16)));
+	imandreel_gl.uniformMatrix4fv(uniform_value, transpose, uniformArrays4[count*4]);
+}
+
+function myglUniformMatrix3fv(sp)
+{
+	myglCreateUniformArrays();
+
+	var index = heap32[sp>>2];sp+=4;
+	var count = heap32[sp>>2];sp+=4;
+	var transpose = heap32[sp>>2];sp+=4;
+	var ptr = heap32[sp>>2];sp+=4;
+
+	var program = array_ids_ogl[g_current_program_id];
+	var uniform_value = program.array_uniform_locations[index];
+
+	//var buffer_data = new Float32Array(heap, ptr, count*9);
+	for ( var i = 0 ; i < count*9 ; ++i )
+	{
+		uniformArrays3[count*3][i] = heapFloat[(ptr>>2)+i];
+	}
+
+	//imandreel_gl.uniformMatrix3fv(uniform_value, transpose, buffer_data);
+	//imandreel_gl.uniformMatrix3fv(uniform_value, transpose, heapFloat.subarray(ptr/4,(ptr/4)+(count*9)));
+	imandreel_gl.uniformMatrix3fv(uniform_value, transpose, uniformArrays3[count*3]);
+}
+
+
+
+function myglValidateProgram(sp)
+{
+	var program_id = heap32[sp>>2];sp+=4;
+
+	imandreel_gl.validateProgram(array_ids_ogl[program_id]);
+}
+
+function myglGetAttribLocation(sp)
+{
+	var program_id = heap32[sp>>2];sp+=4;
+	var ptr_string = heap32[sp>>2];sp+=4;
+
+	var string = get_string_from_ptr(ptr_string);
+	var result = imandreel_gl.getAttribLocation(array_ids_ogl[program_id], string);
+
+	r_g0 = result;
+}
+
+function myglGetProgramInfoLogLength(sp)
+{
+	var program_id = heap32[sp>>2];sp+=4;
+
+	var info_log = imandreel_gl.getProgramInfoLog(array_ids_ogl[program_id]);
+
+	if (info_log)
+		r_g0 = info_log.length+1;
+	else
+		r_g0 = 0;
+}
+
+
+function myglGetProgramInfoLog(sp)
+{
+	var program_id = heap32[sp>>2];sp+=4;
+	var ptr_string = heap32[sp>>2];sp+=4;
+
+	var info_log = imandreel_gl.getProgramInfoLog(array_ids_ogl[program_id]);
+
+	fill_ptr_from_string(ptr_string, info_log);
+}
+
+function myglGetShaderInfoLogLength(sp)
+{
+	var program_id = heap32[sp>>2];sp+=4;
+
+	var info_log = imandreel_gl.getShaderInfoLog(array_ids_ogl[program_id]);
+
+	if (info_log)
+		r_g0 = info_log.length+1;
+	else
+		r_g0 = 0;
+}
+
+function myglGetShaderInfoLog(sp)
+{
+	var program_id = heap32[sp>>2];sp+=4;
+	var ptr_string = heap32[sp>>2];sp+=4;
+
+	var info_log = imandreel_gl.getShaderInfoLog(array_ids_ogl[program_id]);
+
+	fill_ptr_from_string(ptr_string, info_log);
+}
+
+function myglViewport(sp) {
+    var x = heap32[sp >> 2]; sp += 4;
+    var y = heap32[sp >> 2]; sp += 4;
+    var width = heap32[sp >> 2]; sp += 4;
+    var height = heap32[sp >> 2]; sp += 4;
+
+    imandreel_gl.viewport(x,y,width,height);
+
+}
+
+function myglScissor(sp)
+{
+    var x = heap32[sp >> 2]; sp += 4;
+    var y = heap32[sp >> 2]; sp += 4;
+    var width = heap32[sp >> 2]; sp += 4;
+    var height = heap32[sp >> 2]; sp += 4;
+
+    imandreel_gl.scissor(x,y,width,height);
+}
+
+
+
+function myglClearColor(sp)
+{
+  var r = heapFloat[sp>>2];sp+=4;
+  var g = heapFloat[sp>>2];sp+=4;
+  var b = heapFloat[sp>>2];sp+=4;
+  var a = heapFloat[sp>>2];sp+=4;
+
+  imandreel_gl.clearColor(r,g,b,a);
+
+
+}
+
+function myglClearStencil(sp)
+{
+	var stencil = heap32[sp>>2];sp+=4;
+	imandreel_gl.clearStencil(stencil);
+}
+
+
+function myglClearDepthf(sp)
+{
+	var depth = heapFloat[sp>>2];sp+=4;
+	imandreel_gl.clearDepth(depth);
+}
+
+function myglClear(sp)
+  {
+  var mask = heap32[sp>>2];sp+=4;
+
+
+  //dump('clear ' + mask + '\n');
+	if (mandreel_draw_enable)
+		imandreel_gl.clear(mask);
+  }
+
+  function myglGetError(sp)
+  {
+//	r_g0 = imandreel_gl.getError();
+	r_g0 = 0;
+  }
+
+  function myglGetProgramParameter(sp)
+  {
+	var program_id = heap32[sp>>2];sp+=4;
+	var pname = heap32[sp>>2];sp+=4;
+
+	r_g0 = imandreel_gl.getProgramParameter(array_ids_ogl[program_id], pname);
+  }
+
+  function myglGetActiveAttrib (sp)
+  {
+	var program_id = heap32[sp>>2];sp+=4;
+	var index = heap32[sp>>2];sp+=4;
+	var ptr = heap32[sp>>2];sp+=4;
+
+	 var result = imandreel_gl.getActiveAttrib(array_ids_ogl[program_id], index);
+
+	 if (result != null)
+	 {
+		heap32[(ptr)>>2] = result.size;
+		heap32[(ptr+4)>>2] = result.type;
+		fill_ptr_from_string(ptr+8, result.name);
+		r_g0 = 0;
+	}
+	else
+	   r_g0 = 1;
+  }
+
+    function myglGetActiveUniform (sp)
+  {
+	var program_id = heap32[sp>>2];sp+=4;
+	var index = heap32[sp>>2];sp+=4;
+	var ptr = heap32[sp>>2];sp+=4;
+
+	 var result = imandreel_gl.getActiveUniform(array_ids_ogl[program_id], index);
+
+	 if (result != null)
+	 {
+		heap32[(ptr)>>2] = result.size;
+		heap32[(ptr+4)>>2] = result.type;
+		fill_ptr_from_string(ptr+8, result.name);
+		r_g0 = 0;
+	}
+	else
+	   r_g0 = 1;
+  }
+
+  function myglTexParameterf (sp)
+  {
+	var target = heap32[sp>>2];sp+=4;
+	var pname = heap32[sp>>2];sp+=4;
+	var value = heapFloat[sp>>2];sp+=4;
+
+	imandreel_gl.texParameterf(target,pname,value);
+}
+
+function myglTexParameteri (sp)
+  {
+	var target = heap32[sp>>2];sp+=4;
+	var pname = heap32[sp>>2];sp+=4;
+	var value = heap32[sp>>2];sp+=4;
+
+	imandreel_gl.texParameteri(target,pname,value);
+}
+
+function myglCullFace (sp)
+ {
+	var mode = heap32[sp>>2];sp+=4;
+	imandreel_gl.cullFace(mode);
+ }
+
+ function myglDepthMask (sp)
+ {
+	var flag = heap32[sp>>2];sp+=4;
+	imandreel_gl.depthMask(flag);
+ }
+
+ function myglDepthRangef (sp)
+ {
+	var zNear = heapFloat[sp>>2];sp+=4;
+	var zFar = heapFloat[sp>>2];sp+=4;
+	imandreel_gl.depthRange(zNear, zFar);
+ }
+
+function myglFrontFace (sp)
+ {
+	var mode = heap32[sp>>2];sp+=4;
+	imandreel_gl.frontFace(mode);
+ }
+
+ function myglBlendFunc (sp)
+ {
+	var sfactor = heap32[sp>>2];sp+=4;
+	var dfactor = heap32[sp>>2];sp+=4;
+	imandreel_gl.blendFunc(sfactor,dfactor);
+ }
+
+ function myglBlendColor(sp)
+ {
+	var red = heapFloat[sp>>2];sp+=4;
+	var green = heapFloat[sp>>2];sp+=4;
+	var blue = heapFloat[sp>>2];sp+=4;
+	var alpha = heapFloat[sp>>2];sp+=4;
+	imandreel_gl.blendColor(red,green,blue,alpha);
+ }
+
+ function myglBlendEquation(sp)
+ {
+	var mode = heap32[sp>>2];sp+=4;
+	imandreel_gl.blendEquation(mode);
+ }
+
+ function myglBlendEquationSeparate(sp)
+ {
+	var modeRGB = heap32[sp>>2];sp+=4;
+	var modeAlpha = heap32[sp>>2];sp+=4;
+	imandreel_gl.blendEquationSeparate(modeRGB,modeAlpha);
+ }
+
+ function myglBlendFuncSeparate(sp)
+ {
+	var srcRGB = heap32[sp>>2];sp+=4;
+	var dstRGB = heap32[sp>>2];sp+=4;
+	var srcAlpha = heap32[sp>>2];sp+=4;
+	var dstAlpha = heap32[sp>>2];sp+=4;
+
+	imandreel_gl.blendFuncSeparate(srcRGB,dstRGB,srcAlpha,dstAlpha);
+ }
+
+
+ function myglColorMask (sp)
+ {
+	var red = heap32[sp>>2];sp+=4;
+	var green = heap32[sp>>2];sp+=4;
+	var blue = heap32[sp>>2];sp+=4;
+	var alpha = heap32[sp>>2];sp+=4;
+	imandreel_gl.colorMask(red,green,blue,alpha);
+ }
+
+ function removeByElement(arrayName,arrayElement)
+ {
+    for(var i=0; i<arrayName.length;i++ )
+     {
+        if(arrayName[i]==arrayElement)
+		{
+            arrayName.splice(i,1);
+			return;
+		}
+      }
+  }
+
+
+ function mygetParameter(sp)
+ {
+	var pname = heap32[sp>>2];sp+=4;
+	r_g0 = imandreel_gl.getParameter(pname);
+ }
+
+
+ function mygetProgramParameter(sp)
+ {
+ 	var program_id = heap32[sp>>2];sp+=4;
+	var pname = heap32[sp>>2];sp+=4;
+	r_g0 = imandreel_gl.getProgramParameter(array_ids_ogl[program_id], pname);
+ }
+
+ function mygetShaderParameter(sp)
+ {
+ 	var shader_id = heap32[sp>>2];sp+=4;
+	var pname = heap32[sp>>2];sp+=4;
+	r_g0 = imandreel_gl.getShaderParameter(array_ids_ogl[shader_id], pname);
+ }
+
+ function myglVertexAttrib1f(sp)
+ {
+	var index = heap32[sp>>2];sp+=4;
+	var x = heapFloat[sp>>2];sp+=4;
+	imandreel_gl.vertexAttrib1f(index,x);
+ }
+
+  function myglVertexAttrib2f(sp)
+ {
+	var index = heap32[sp>>2];sp+=4;
+	var x = heapFloat[sp>>2];sp+=4;
+	var y = heapFloat[sp>>2];sp+=4;
+	imandreel_gl.vertexAttrib2f(index,x,y);
+ }
+
+  function myglVertexAttrib3f(sp)
+ {
+	var index = heap32[sp>>2];sp+=4;
+	var x = heapFloat[sp>>2];sp+=4;
+	var y = heapFloat[sp>>2];sp+=4;
+	var z = heapFloat[sp>>2];sp+=4;
+	imandreel_gl.vertexAttrib3f(index,x,y,z);
+ }
+
+  function myglVertexAttrib4f(sp)
+ {
+	var index = heap32[sp>>2];sp+=4;
+	var x = heapFloat[sp>>2];sp+=4;
+	var y = heapFloat[sp>>2];sp+=4;
+	var z = heapFloat[sp>>2];sp+=4;
+	var w = heapFloat[sp>>2];sp+=4;
+	imandreel_gl.vertexAttrib4f(index,x,y,z,w);
+ }
+
+ function myglVertexAttrib1fv(sp)
+ {
+	var index = heap32[sp>>2];sp+=4;
+	var ptr = heap32[sp>>2];sp+=4;
+	var x = heap32[ptr>>2];ptr+=4;
+	imandreel_gl.vertexAttrib1f(index,x);
+ }
+
+ function myglVertexAttrib2fv(sp)
+ {
+	var index = heap32[sp>>2];sp+=4;
+	var ptr = heap32[sp>>2];sp+=4;
+	var x = heap32[ptr>>2];ptr+=4;
+	var y = heap32[ptr>>2];ptr+=4;
+
+	imandreel_gl.vertexAttrib2f(index,x,y);
+ }
+
+ function myglVertexAttrib3fv(sp)
+ {
+	var index = heap32[sp>>2];sp+=4;
+	var ptr = heap32[sp>>2];sp+=4;
+	var x = heap32[ptr>>2];ptr+=4;
+	var y = heap32[ptr>>2];ptr+=4;
+	var z = heap32[ptr>>2];ptr+=4;
+
+	imandreel_gl.vertexAttrib3f(index,x,y,z);
+ }
+
+ function myglVertexAttrib4fv(sp)
+ {
+	var index = heap32[sp>>2];sp+=4;
+	var ptr = heap32[sp>>2];sp+=4;
+	var x = heap32[ptr>>2];ptr+=4;
+	var y = heap32[ptr>>2];ptr+=4;
+	var z = heap32[ptr>>2];ptr+=4;
+	var w = heap32[ptr>>2];ptr+=4;
+
+	imandreel_gl.vertexAttrib4f(index,x,y,z,w);
+ }
+
+
+ function myglDeleteTexture (sp)
+ {
+
+	var texture_id = heap32[sp>>2];sp+=4;
+
+	var texture = array_ids_ogl[texture_id];
+
+	imandreel_gl.deleteTexture(texture);
+
+	array_ids_ogl[texture_id] = null;
+
+	myglFreeSlot(texture_id);
+ }
+
+ function myglDeleteBuffer (sp)
+ {
+
+	var buffer_id = heap32[sp>>2];sp+=4;
+
+	var buffer = array_ids_ogl[buffer_id];
+
+	imandreel_gl.deleteBuffer(buffer);
+
+	array_ids_ogl[buffer_id] = null;
+
+	myglFreeSlot(buffer_id);
+ }
+
+ function myglDeleteFrameBuffer (sp)
+ {
+	var framebuffer_id = heap32[sp>>2];sp+=4;
+
+	var framebuffer = array_ids_ogl[framebuffer_id];
+
+	imandreel_gl.deleteFramebuffer(framebuffer);
+
+	array_ids_ogl[framebuffer_id] = null;
+
+	myglFreeSlot(framebuffer_id);
+ }
+
+
+ function myglDeleteProgram (sp)
+ {
+	var program_id = heap32[sp>>2];sp+=4;
+
+	var program = array_ids_ogl[program_id];
+
+	imandreel_gl.deleteProgram(program);
+
+	array_ids_ogl[program_id] = null;
+
+	myglFreeSlot(program_id);
+ }
+
+ function myglDeleteRenderBuffer (sp)
+ {
+	var renderbuffer_id = heap32[sp>>2];sp+=4;
+
+	var renderbuffer = array_ids_ogl[renderbuffer_id];
+
+	imandreel_gl.deleteRenderbuffer(renderbuffer);
+
+	array_ids_ogl[renderbuffer_id] = null;
+
+	myglFreeSlot(renderbuffer_id);
+ }
+
+ function myglDeleteShader (sp)
+ {
+	var shader_id = heap32[sp>>2];sp+=4;
+
+	var shader = array_ids_ogl[shader_id];
+
+	imandreel_gl.deleteShader(shader);
+
+	array_ids_ogl[shader_id] = null;
+
+	myglFreeSlot(shader_id);
+ }
+
+ function myglInit(sp)
+ {
+
+	for (var i=0;i<max_ogl_id;++i)
+	{
+		array_ids_ogl_enable.push(i+1);
+	}
+ }
+
+ function myglReadPixels(sp)
+ {
+  var x = heap32[sp>>2];sp+=4;
+  var y = heap32[sp>>2];sp+=4;
+  var width = heap32[sp>>2];sp+=4;
+  var height = heap32[sp>>2];sp+=4;
+  var format = heap32[sp>>2];sp+=4;
+  var type = heap32[sp>>2];sp+=4;
+  var pixels = heap32[sp>>2];sp+=4;
+
+	var bufferView = new Uint8Array(heap,pixels,width*height*4);
+  imandreel_gl.readPixels(x,y,width,height,format,type,bufferView);
+}
+
+function mandreel_internal_DrawSprite(sp)
+{
+	if ( imandreel_ctx_canvas == null )
+	{
+		console.log("Mandreel_2D_DrawSprite error: canvas context is null");
+		return;
+	}
+
+	var hw_id = heap32[sp>>2]; sp+=4;
+	var u0 = heapFloat[sp>>2]; sp+=4;
+	var u1 = heapFloat[sp>>2]; sp+=4;
+	var v0 = heapFloat[sp>>2]; sp+=4;
+	var v1 = heapFloat[sp>>2]; sp+=4;
+	//var x = heapFloat[sp>>2]; sp+=4;
+	//var y = heapFloat[sp>>2]; sp+=4;
+	var sx = heapFloat[sp>>2]; sp+=4;
+	var sy = heapFloat[sp>>2]; sp+=4;
+	//var rot = heapFloat[sp>>2]; sp+=4;
+	var m11 = heapFloat[sp>>2]; sp+=4;
+	var m12 = heapFloat[sp>>2]; sp+=4;
+	var m21 = heapFloat[sp>>2]; sp+=4;
+	var m22 = heapFloat[sp>>2]; sp+=4;
+	var tx = heapFloat[sp>>2]; sp+=4;
+	var ty = heapFloat[sp>>2]; sp+=4;
+	var color = heap32[sp>>2]; sp+=4;
+
+	//ctx_canvas.fillStyle="#FF0000";
+	//ctx_canvas.fillRect(tx,ty,sx,sy);
+	var texture = array_ids_ogl[hw_id];
+
+	if ( texture == null )
+	{
+		console.log("Mandreel_2D_DrawSprite error: texture invalid ("+hw_id+") or loading yet...");
+		return;
+	}
+
+	var width = (u1-u0)*texture.width;
+	var height = (v1-v0)*texture.height;
+
+	if (width == 0)
+		return;
+	if (height == 0)
+		return;
+
+	var x_offset = u0*texture.width;
+	var y_offset = v0*texture.height;
+
+	//dump(x_offset + ' ' + y_offset + ' ' + texture.width + ' ' + texture.height + ' ' + x + ' ' +y + ' ' + width + ' ' + height + '\n');
+
+	x_offset = x_offset % texture.width;
+	y_offset = y_offset % texture.height;
+
+	var scale_x, scale_y;
+	if (sx<0)
+		scale_x = -1;
+	else
+		scale_x = 1;
+	if (sy<0)
+		scale_y = -1;
+	else
+		scale_y = 1;
+
+	var simple_draw = false;//scale_x == 1 && scale_y == 1 && rot == 0;
+	var x_pos = (0.5*sx + tx/* + 240*/);
+	var y_pos = (/*320*/ + ((0.5*sy + ty) /*+ 160*/));
+	var new_sx = sx;
+	var new_sy = sy;
+
+	imandreel_ctx_canvas.globalAlpha = (color>>>24)/255;
+
+	if (!simple_draw)
+	{
+		imandreel_ctx_canvas.save()
+		/*ctx_canvas.translate(x_pos + new_sx/2, y_pos + new_sy/2)
+		ctx_canvas.rotate(-rot*Math.PI/180);
+		ctx_canvas.scale(scale_x, scale_y);
+		ctx_canvas.translate(-(x_pos + new_sx/2), -(y_pos + new_sy/2))*/
+		imandreel_ctx_canvas.setTransform(m11,m12,m21,m22,tx,ty);
+	}
+
+	/*if (x_offset<0 || y_offset<0 || (x_offset+width)>texture.width || (y_offset+height)>texture.height)
+	{
+		dump(x_offset + ' ' + y_offset + ' ' + texture.width + ' ' + texture.height + ' ' + x + ' ' +y + ' ' + width + ' ' + height + '\n');
+	}*/
+
+	if (new_sx<0)
+	{
+		x_pos += new_sx;
+		new_sx = -new_sx;
+	}
+	if (new_sy<0)
+	{
+		y_pos += new_sy;
+		new_sy = -new_sy;
+	}
+
+	//ctx_canvas.drawImage(texture,x_offset,y_offset, width, height, x_pos, y_pos , new_sx, new_sy);
+	imandreel_ctx_canvas.drawImage(texture,x_offset,y_offset, width, height, 0,0, 1,1);
+
+	if (!simple_draw)
+		imandreel_ctx_canvas.restore()
+}
+
+function mandreel_internal_UpdateTexture(sp)
+{
+	if ( imandreel_ctx_canvas == null )
+	{
+		console.log("Mandreel_2D_UpdateTexture error: canvas context is null");
+		return;
+	}
+
+	var hw_id = heap32[sp>>2]; sp+=4;
+	var dataptr = heap32[sp>>2]; sp+=4;
+	var width = heap32[sp>>2]; sp+=4;
+	var height = heap32[sp>>2]; sp+=4;
+
+	var imageData = imandreel_ctx_canvas.getImageData(0,0,width,height);
+	var data = imageData.data;
+	for (var y = 0; y < (height*width*4); ++y)
+	{
+		data[y] = heapU8[dataptr + y];
+	}
+	imandreel_ctx_canvas.putImageData(imageData,0,0);
+
+	var dataurl = imandreel_ctx_canvas.canvas.toDataURL();
+
+	var image = new Image();
+	image.onerror = function()
+	{
+		dump('error updating texture '+hw_id+'\n');
+    }
+	image.onload = function()
+	{
+		//dump('texture '+hw_id+' updated\n'+'width '+image.width+' height '+image.height);
+		array_ids_ogl[hw_id] = image;
+	}
+	image.src = dataurl;
+}
+
+function mandreel_internal_WriteFramebuffer(sp)
+{
+	if ( imandreel_ctx_canvas == null )
+	{
+		console.log("Mandreel_2D_UpdateTexture error: canvas context is null");
+		return;
+	}
+
+	var dataptr = heap32[sp>>2]; sp+=4;
+	var width = heap32[sp>>2]; sp+=4;
+	var height = heap32[sp>>2]; sp+=4;
+
+	var imageData = imandreel_ctx_canvas.getImageData(0,0,width,height);
+	if ( imageData != null )
+	{
+		var data = imageData.data;
+		if ( data != null )
+		{
+			var size = (height*width*4);
+			if ( typeof imageData.data.set != "undefined" )
+			{
+				var sub = heapU8.subarray(dataptr,dataptr+size);
+				imageData.data.set(sub);
+			}
+			else
+			{
+				for (var y = 0; y < size; ++y)
+				{
+					data[y] = heapU8[dataptr + y];
+				}
+			}
+
+			imandreel_ctx_canvas.putImageData(imageData,0,0);
+		}
+		else
+		{
+			dump("WriteFramebuffer canvas data null");
+		}
+	}
+	else
+	{
+		dump("WriteFramebuffer canvas imageData null");
+	}
+}
+var mandreel_audio_init = null_mandreel_audio;
+var mandreel_audio_end = null_mandreel_audio;
+var mandreel_audio_update = null_mandreel_audio;
+var mandreel_audio_createBuffer = null_mandreel_audio;
+var mandreel_audio_playChannel = null_mandreel_audio;
+var mandreel_audio_stopChannel = null_mandreel_audio;
+var mandreel_audio_setChannelVolume = null_mandreel_audio;
+var mandreel_audio_setChannelPan = null_mandreel_audio;
+var mandreel_audio_setChannelPitch = null_mandreel_audio;
+var mandreel_audio_playMusic = null_mandreel_audio;
+var mandreel_audio_stopMusic = null_mandreel_audio;
+var mandreel_audio_useMusicFunctions = _mandreel_audio_useMusicFunctions;
+var mandreel_audio_checkBuffersPending = null_mandreel_audio;
+var mandreel_audio_setMusicVol = null_mandreel_audio;
+
+var mandreel_audio_startedFunction = 0;
+
+var MandreelAudioDriver = "null";
+
+function mandreel_start_audio(audioServer, audioUrl,startedFunction)
+{
+	mandreel_audio_startedFunction = startedFunction;
+
+	// Check audio driver data availability
+	var webAudioDataAvailable = false;
+	var flashAudioDataAvailable = false;
+	var flashLiteAudioDataAvailable = false;
+	var audiotagsDataAvailable = false;
+	var FatLines = mandreelFatData.split('\n');
+	for ( var i=0;i<FatLines.length;++i )
+	{
+		var params = FatLines[i].split(',');
+		if ( params[0] == "audiodriver" )
+		{
+			var data = params[1];
+			data = data.replace('\r','');
+			if ( data == "webaudio" )
+				webAudioDataAvailable = true;
+			else if ( data == "flash" )
+				flashAudioDataAvailable = true;
+			else if ( data == "flashlite" )
+				flashLiteAudioDataAvailable = true;
+			else if ( data == "audiotag" )
+				audiotagsDataAvailable = true;
+		}
+	}
+
+
+	// Init audio driver
+	{
+		// webaudio
+		if ( webAudioDataAvailable && MandreelAudioDriver == "null" )
+		{
+			try	{ webAudioContext = new webkitAudioContext(); } catch(err) { webAudioContext = 0; }
+			if ( webAudioContext )
+			{
+				wa_MainAudioDriver();
+				MandreelAudioDriver = "webAudio";
+			}
+		}
+		// flash
+		if ( flashAudioDataAvailable && MandreelAudioDriver == "null" )
+		{
+			MandreelAudioDriver = "flash";
+			if ( audioServer == null )
+			{
+				audioServer = "";
+				audioUrl = "";
+			}
+			fl_MainAudioDriver(audioServer,audioUrl);
+		}
+		// flashlite
+		if ( flashLiteAudioDataAvailable && MandreelAudioDriver == "null" )
+		{
+			MandreelAudioDriver = "flashlite";
+			mandreel_flashaudio_lite = true;
+			fl_MainAudioDriver("","");
+		}
+		// audiotags
+		if ( audiotagsDataAvailable && MandreelAudioDriver == "null" )
+		{
+			MandreelAudioDriver = "audiotag";
+			at_MainAudioDriver();
+		}
+		// null
+		if ( MandreelAudioDriver == "null" )
+		{
+			null_MainAudioDriver();
+		}
+	}
+	dump("AudioDriver ("+MandreelAudioDriver+")");
+}
+
+function mandreel_audio_isLogEnabled(sp)
+{
+	r_g0 = 0;
+}
+
+function _mandreel_audio_useMusicFunctions(sp)
+{
+	r_g0 = 0;
+}
+
+function MandreelAudioStarted()
+{
+	setTimeout(mandreel_audio_startedFunction, 10);
+}
+
+
+function mandreel_audio_getAudioDriverName(sp)
+{
+	var name_ptr = heap32[sp>>2];sp+=4;
+	fill_ptr_from_string(name_ptr, MandreelAudioDriver);
+}
+var webAudioUseMusicFunctions = true;
+
+function wa_mandreel_audio_init(sp)
+{
+}
+
+function wa_mandreel_audio_end(sp)
+{
+}
+
+function wa_mandreel_audio_update(sp)
+{
+}
+
+function wa_mandreel_audio_checkBuffersPending(sp)
+{
+	r_g0 = wa_imp_mandreel_audio_checkBuffersPending();
+}
+
+function wa_mandreel_audio_createBuffer(sp)
+{
+	var ptr_fileName = heap32[sp>>2];sp+=4;
+	var maxChannels = heap32[sp>>2];sp+=4;
+	var fileName = get_string_from_ptr(ptr_fileName).toLowerCase();
+	wa_imp_mandreel_audio_createBuffer(fileName);
+
+	r_g0 = 0;
+}
+
+function wa_mandreel_audio_playChannel(sp)
+{
+	var ptr_fileName = heap32[sp>>2];sp+=4;
+	var channel = heap32[sp>>2];sp+=4;
+	var vol = heapFloat[sp>>2];sp+=4;
+	var loop = heap32[sp>>2];sp+=4;
+	var pitch = heapFloat[sp>>2];sp+=4;
+	var fileName = get_string_from_ptr(ptr_fileName).toLowerCase();
+	wa_imp_mandreel_audio_playChannel(fileName,channel,vol,loop,pitch);
+	r_g0 = 0;
+}
+
+function wa_mandreel_audio_stopChannel(sp)
+{
+	var ptr_fileName = heap32[sp>>2];sp+=4;
+	var channel = heap32[sp>>2];sp+=4;
+	var index = heapFloat[sp>>2];sp+=4;
+	wa_imp_mandreel_audio_stopChannel(channel);
+}
+
+function wa_mandreel_audio_setChannelVolume(sp)
+{
+	var channel = heap32[sp>>2];sp+=4;
+	var vol = heapFloat[sp>>2];sp+=4;
+	wa_imp_mandreel_audio_setChannelVolume(channel,vol);
+}
+
+function wa_mandreel_audio_setChannelPan(sp)
+{
+	var channel = heap32[sp>>2];sp+=4;
+	var pan = heapFloat[sp>>2];sp+=4;
+	wa_imp_mandreel_audio_setChannelPan(channel,pan);
+}
+
+function wa_mandreel_audio_setChannelPitch(sp)
+{
+	var channel = heap32[sp>>2];sp+=4;
+	var pitch = heapFloat[sp>>2];sp+=4;
+	wa_imp_mandreel_audio_setChannelPitch(channel,pitch);
+}
+
+function wa_mandreel_audio_useMusicFunctions(sp)
+{
+	r_g0 = webAudioUseMusicFunctions ? 1 : 0;
+}
+
+function wa_mandreel_audio_playMusic(sp)
+{
+	var ptr_fileName = heap32[sp>>2];sp+=4;
+	var fileName = get_string_from_ptr(ptr_fileName).toLowerCase();
+	wa_imp_mandreel_audio_playMusic(fileName);
+}
+
+function wa_mandreel_audio_stopMusic(sp)
+{
+	wa_imp_mandreel_audio_stopMusic();
+}
+
+function wa_mandreel_audio_setMusicVol(sp)
+{
+	var vol = heapFloat[sp>>2];sp+=4;
+	wa_imp_mandreel_audio_setMusicVol(vol);
+}
+
+function wa_MainAudioDriver()
+{
+	mandreel_audio_init = wa_mandreel_audio_init;
+	mandreel_audio_end = wa_mandreel_audio_end;
+	mandreel_audio_update = wa_mandreel_audio_update;
+	mandreel_audio_createBuffer = wa_mandreel_audio_createBuffer;
+	mandreel_audio_playChannel = wa_mandreel_audio_playChannel;
+	mandreel_audio_stopChannel = wa_mandreel_audio_stopChannel;
+	mandreel_audio_setChannelVolume = wa_mandreel_audio_setChannelVolume;
+	mandreel_audio_setChannelPan = wa_mandreel_audio_setChannelPan;
+	mandreel_audio_setChannelPitch = wa_mandreel_audio_setChannelPitch;
+	mandreel_audio_useMusicFunctions = wa_mandreel_audio_useMusicFunctions;
+	mandreel_audio_playMusic = wa_mandreel_audio_playMusic;
+	mandreel_audio_stopMusic = wa_mandreel_audio_stopMusic;
+	mandreel_audio_checkBuffersPending = wa_mandreel_audio_checkBuffersPending;
+	mandreel_audio_setMusicVol = wa_mandreel_audio_setMusicVol;
+
+	setTimeout("mandreel_webAudio_PreloadAssets()", 10);
+}
+
+
+var webAudioBuffers = new Array();
+var webAudioChannels = new Array(32);
+var webAudioGain = new Array(32);
+var webAudioContext = 0;
+
+
+function wa_initWebAudio()
+{
+	if ( preCreatedWebAudioContext != null )
+	{
+		webAudioContext = preCreatedWebAudioContext;
+	}
+	else
+	{
+		try	{ webAudioContext = new webkitAudioContext(); } catch(err) { webAudioContext = 0; }
+	}
+}
+
+function wa_imp_callfunction(params)
+{
+	if ( params[0] == "#MandreelAudio" )
+	{
+		if ( params[1] == "playChannel" )
+			wa_imp_mandreel_audio_playChannel(params[2],params[3],params[4],params[5],params[6],params[7]);
+		else if ( params[1] == "stopChannel" )
+			wa_imp_mandreel_audio_stopChannel(params[2]);
+		else if ( params[1] == "setChannelVol" )
+			wa_imp_mandreel_audio_setChannelVol(params[2],params[3]);
+		else if ( params[1] == "setChannelPan" )
+			wa_imp_mandreel_audio_setChannelPan(params[2],params[3]);
+		else if ( params[1] == "playMusic" )
+			wa_imp_mandreel_audio_playMusic(params[2]);
+		else if ( params[1] == "stopMusic" )
+			wa_imp_mandreel_audio_stopMusic(params[2]);
+		else if ( params[1] == "setMusicVol" )
+			wa_imp_mandreel_audio_setMusicVol(params[2]);
+
+		return true;
+	}
+	return false;
+}
+
+function wa_getFileNameNoExt(fileName)
+{
+	var fileNameNoExt = fileName.toLowerCase();
+	var indexDot = fileNameNoExt.lastIndexOf('.');
+	if ( indexDot != -1 )
+		fileNameNoExt = fileNameNoExt.substr(0,indexDot);
+	fileNameNoExt = fileNameNoExt.replace(/\\/g,"/");
+	if ( fileNameNoExt.length > 0 )
+	{
+		if ( fileNameNoExt.charAt(0) == "/" )
+		{
+			if (fileNameNoExt.length > 1 )
+				fileNameNoExt = fileNameNoExt.substr(1,fileNameNoExt.length-1);
+			else
+				fileNameNoExt = "";
+		}
+	}
+	return fileNameNoExt;
+}
+
+var wa_mandreel_cache_audio_files = false;
+var wa_mandreel_cache_audio_files_path = '';
+
+function mandreel_webAudio_reloadfile(fileName,callback)
+{
+	var fileNameNoExt = wa_getFileNameNoExt(fileName);
+	var url = wa_mandreel_cache_audio_files_path+fileNameNoExt+".ogg";
+	dump("webAudio: loading buffer ("+fileName+") url("+url+")");
+	var request = new XMLHttpRequest();
+	request.open("GET", url, true);
+	request.responseType = "arraybuffer";
+	request.onreadystatechange = function()
+	{
+		if (request.readyState == 4)
+		{
+
+			if (request.status == 404) callback(null);
+
+			callback(request.response);
+
+		}
+	}
+	request.send();
+}
+
+Mandreel_window.BlobBuilder = Mandreel_window.MozBlobBuilder || Mandreel_window.WebKitBlobBuilder || Mandreel_window.BlobBuilder;
+
+function mandreel_webaudio_saveFile(name, my_arrayBuffer)
+{
+	dump('mandreel_webaudio_saveFile ' + name);
+	g_mandreel_fs.root.getFile(name, {create: true}, function(fileEntry) {
+
+    // Create a FileWriter object for our FileEntry (log.txt).
+    fileEntry.createWriter(function(fileWriter) {
+
+      fileWriter.onwriteend = function(e) {
+        dump('Write completed.');
+      };
+
+      fileWriter.onerror = function(e) {
+        dump('Write failed: ' + e.toString());
+      };
+
+	  var bb = new Mandreel_window.BlobBuilder(); // Note: window.WebKitBlobBuilder in Chrome 12.
+      bb.append(my_arrayBuffer);
+      fileWriter.write(bb.getBlob('text/plain'));
+
+
+
+    }, function(e) { dump('error 1 mandreel_webaudio_saveFile ' + name);MandreelFsErrorHandler(e) });
+
+  }, function(e) { dump('error 2 mandreel_webaudio_saveFile ' + name);MandreelFsErrorHandler(e) });
+}
+
+function mandreel_webaudio_loadFile(name, callback, callback2)
+{
+	g_mandreel_fs.root.getFile(name, {}, function(fileEntry) {
+
+	fileEntry.file(function(file) {
+
+		var reader = new FileReader();
+
+
+       reader.onloadend = function(e) {
+
+	   dump('mandreel_fs_loadFile ' + name);
+	   if (this.result.byteLength)
+		callback(this.result);
+	   else
+	   callback2(this.result);
+
+       };
+
+
+	   	reader.readAsArrayBuffer(file);
+
+
+
+	}, function(e) { dump('error 1 webaudio_loadFile ' + name);MandreelFsErrorHandler(e) } );
+
+  }, function(e) { dump('error 2 webaudio_loadFile ' + name);MandreelFsErrorHandler(e) } );
+}
+
+
+function mandreel_webAudio_cacheFile(fileName, callback)
+{
+	if (!g_mandreel_fs)
+	{
+		mandreel_webAudio_reloadfile(fileName, callback);
+
+		return;
+	}
+	fileName = fileName.toLowerCase();
+
+	fileName = fileName.replace(/\\/g,"/");
+
+	if (fileName[0] == '/')
+		fileName = fileName.substring(1);
+
+	dump('chanka name ' + fileName);
+
+	g_mandreel_fs.root.getFile(fileName, {}, function(fileEntry) {
+
+	fileEntry.getMetadata(function(metaData){
+	var my_seconds = metaData.modificationTime.getTime()/1000;
+
+	if (g_mandreel_timestamp_fs>my_seconds)
+	{
+		dump('mandreel_webAudio_cacheFile1 ');
+		fileEntry.remove(function() {
+				mandreel_webAudio_reloadfile(fileName, function(response) { callback(response); if (response) mandreel_webaudio_saveFile(fileName, response); } );
+			}, function(e) { dump('error 1 mandreel_webAudio_cacheFile ' + fileName);MandreelFsErrorHandler(e); mandreel_webAudio_reloadfile(fileName, function(response) { callback(response); if (response) mandreel_webaudio_saveFile(fileName, response); } );});
+
+	}
+	else
+	{
+		//alert('mandreel_fscachefile2');
+		dump('mandreel_webAudio_cacheFile2');
+		mandreel_webaudio_loadFile(fileName, function(response) { callback(response);  } ,
+		function() {
+				mandreel_webAudio_reloadfile(fileName, function(response) { callback(response); if (response) mandreel_webaudio_saveFile(fileName, response); } );
+			}
+		);
+
+
+
+	}
+
+
+		}, function(e) { dump('error 2 mandreel_webAudio_cacheFile ' + fileName);MandreelFsErrorHandler(e) });
+
+
+  }, function(error) {dump('mandreel_webAudio_cacheFile3');	mandreel_webAudio_reloadfile(fileName, function(response) { callback(response); if (response) mandreel_webaudio_saveFile(fileName, response); });});
+}
+
+function mandreel_webAudio_queueLoadBuffer(fileName, callback)
+{
+	//dump("mandreel_webAudio_queueLoadBuffer "+fileName);
+	if ( webAudioContext )
+	{
+		var fileNameNoExt = wa_getFileNameNoExt(fileName);
+		var buffer = webAudioBuffers[fileNameNoExt];
+		if ( buffer == null && buffer != "invalid" )
+		{
+			if ( fileNameNoExt != "" )
+			{
+				if (wa_mandreel_cache_audio_files == true)
+				{
+					webAudioBuffers[fileNameNoExt] = "invalid";
+
+					mandreel_webAudio_cacheFile(fileName, function(response) {
+
+						if (callback != null)
+							callback();
+
+						if ( response != null )
+							webAudioBuffers[fileNameNoExt] = webAudioContext.createBuffer(response, false);
+						else
+							webAudioBuffers[fileNameNoExt] = "invalid";
+					} );
+					return;
+				}
+
+				var url = g_mandreel_working_folder+fileNameNoExt+".ogg";
+				dump("webAudio: loading buffer ("+fileName+") url("+url+")");
+				webAudioBuffers[fileNameNoExt] = "invalid";
+				var request = new XMLHttpRequest();
+				request.open("GET", url, true);
+				request.responseType = "arraybuffer";
+				request.onreadystatechange = function()
+				{
+					if (request.readyState == 4)
+					{
+						if (callback != null)
+							callback();
+
+						if (request.status == 404) return;
+						//dump("webAudio: loaded buffer "+request.status);
+						if ( request.response != null )
+							webAudioBuffers[fileNameNoExt] = webAudioContext.createBuffer(request.response, false);
+						else
+							webAudioBuffers[fileNameNoExt] = "invalid";
+					}
+				}
+				request.send();
+			}
+			else
+				webAudioBuffers[fileNameNoExt] = "invalid";
+		}
+	}
+}
+
+var webAudioPreloadAudioFiles = new Array();
+var webAudioPreloadBytes = null;
+var webAudioPreloadCurrentFile = 0;
+var webAudioPreloadAsync = false;
+
+function webAudioParsePreloadFile(response)
+{
+	var pos = 4;
+	var bytes = new Uint8Array(response);
+	var i = 0;
+	if ( webAudioPreloadAsync )
+		webAudioPreloadBytes = bytes;
+	while ( pos < bytes.byteLength )
+	{
+		// filename
+		var fileName = "";
+		while ( bytes[pos] != 0 )
+		{
+			fileName += String.fromCharCode(bytes[pos]);
+			pos++;
+		}
+		pos++;
+		// filesize
+		var filesize = bytes[pos] | (bytes[pos+1]<<8) | (bytes[pos+2]<<16) | (bytes[pos+3]<<24);
+		pos += 4;
+
+		// contents
+		var fileNameNoExt = wa_getFileNameNoExt(fileName);
+		if ( webAudioPreloadAsync )
+		{
+			var audioFile =
+			{
+				fileName : fileNameNoExt,
+				fileSize : filesize,
+				position : pos
+			};
+			webAudioPreloadAudioFiles[i] = audioFile;
+		}
+		else
+		{
+			var bufferdata = new Uint8Array(filesize);
+			bufferdata.set(bytes.subarray(pos,pos+filesize));
+			webAudioBuffers[fileNameNoExt] = webAudioContext.createBuffer(bufferdata.buffer, false);
+			dump("preload audio file ("+fileName+")");
+		}
+
+		pos += filesize;
+		i++;
+	}
+	if ( webAudioPreloadAsync )
+	{
+		dump("started preloading audio files async");
+		setTimeout("mandreel_webAudio_preloadNextAudioFile()",10);
+	}
+}
+
+function mandreel_webAudio_preloadNextAudioFile()
+{
+	if ( webAudioPreloadAudioFiles.length > webAudioPreloadCurrentFile )
+	{
+		var audioFile = webAudioPreloadAudioFiles[webAudioPreloadCurrentFile];
+		if ( audioFile.fileName == null )
+		{
+			webAudioPreloadCurrentFile++;
+			setTimeout("mandreel_webAudio_preloadNextAudioFile()",10);
+		}
+		else
+		{
+			var bufferdata = new Uint8Array(audioFile.fileSize);
+			bufferdata.set(webAudioPreloadBytes.subarray(audioFile.position,audioFile.position+audioFile.fileSize));
+			dump("async preload audio file ("+audioFile.fileName+")");
+			webAudioContext.decodeAudioData(bufferdata.buffer,mandreel_webAudio_preloadNextAudioFileOK,mandreel_webAudio_preloadNextAudioFileError);
+		}
+	}
+	else
+	{
+		webAudioPreloadAudioFiles = null;
+		webAudioPreloadBytes = null;
+		dump("finished preloading audio files async");
+	}
+}
+
+function mandreel_webAudio_preloadNextAudioFileOK(audioBuffer)
+{
+	var audioFile = webAudioPreloadAudioFiles[webAudioPreloadCurrentFile];
+	webAudioPreloadCurrentFile++;
+	if ( audioFile.fileName != null )
+	{
+		webAudioBuffers[audioFile.fileName] = audioBuffer;
+		setTimeout("mandreel_webAudio_preloadNextAudioFile()",10);
+	}
+}
+
+function mandreel_webAudio_preloadNextAudioFileError()
+{
+	var audioFile = webAudioPreloadAudioFiles[webAudioPreloadCurrentFile];
+	webAudioPreloadCurrentFile++;
+	if ( audioFile.fileName != null )
+		dump("FAILED async preload audio file ("+audioFile.fileName+")");
+	setTimeout("mandreel_webAudio_preloadNextAudioFile()",10);
+}
+
+function mandreel_webAudio_queueLoadPackedBuffers(fileName, callback)
+{
+	if ( webAudioContext )
+	{
+		// TODO
+		/*if (wa_mandreel_cache_audio_files == true)
+		{
+			webAudioBuffers[fileNameNoExt] = "invalid";
+
+			mandreel_webAudio_cacheFile(fileName, function(response) {
+
+				if (callback != null)
+					callback();
+
+				if ( response != null )
+					webAudioBuffers[fileNameNoExt] = webAudioContext.createBuffer(response, true);
+				else
+					webAudioBuffers[fileNameNoExt] = "invalid";
+			} );
+			return;
+		}*/
+
+		mandreel_fs_load_binary(fileName, function mandreel_webAudio_queueLoadPackedBuffers_cb(data){
+
+		if (data)
+		{
+			if (callback != null)
+				callback();
+			webAudioParsePreloadFile(data);
+		}
+		else
+		{
+			var url = g_mandreel_working_folder+fileName;
+			dump("webAudio: loading preload buffers ("+fileName+") url("+url+")");
+			var request = new XMLHttpRequest();
+			request.open("GET", url, true);
+			request.responseType = "arraybuffer";
+			var last_loaded_size = 0;
+			request.onreadystatechange = function()
+			{
+				if (request.readyState == 4)
+				{
+					if (callback != null)
+						callback();
+
+					if (request.status == 404)
+						return;
+					if ( request.response != null )
+					{
+						mandreel_fs_saveFile(fileName, request.response);
+						webAudioParsePreloadFile(request.response);
+					}
+				}
+			}
+			request.onprogress = function(e)
+			{
+				var delta_size = e.loaded - last_loaded_size;
+				last_loaded_size = e.loaded;
+
+				imandreel_update_load(delta_size,0);
+
+				var percentage = ((100*e.loaded)/mandreel_total_pogfile_size)|0;
+
+				if (percentage>100)
+					percentage = 100;
+
+				if ( mandreelAppStartStateFunc )
+					mandreelAppStartStateFunc("loadingAudioUpdate",percentage);
+			}
+			request.send();
+		}
+		});
+	}
+}
+
+
+
+var wa_mandreel_audio_buffers_num = 0;
+var wa_mandreel_audio_buffers_loaded = 0;
+
+function wa_imp_mandreel_audio_checkBuffersPending()
+{
+	return wa_mandreel_audio_buffers_num - wa_mandreel_audio_buffers_loaded;
+}
+
+function wa_imp_mandreel_audio_createBuffer(fileName)
+{
+	if ( webAudioContext )
+	{
+		var fileNameNoExt = wa_getFileNameNoExt(fileName);
+		var buffer = webAudioBuffers[fileNameNoExt];
+		if ( buffer == null && buffer != "invalid" )
+		{
+			wa_mandreel_audio_buffers_num++;
+			mandreel_webAudio_queueLoadBuffer(fileName, function () {wa_mandreel_audio_buffers_loaded++;});
+		}
+	}
+}
+
+function wa_imp_mandreel_audio_playChannel(fileName,channel,vol,loop,pitch)
+{
+	if ( webAudioContext )
+	{
+		var fileNameNoExt = wa_getFileNameNoExt(fileName);
+		var buffer = webAudioBuffers[fileNameNoExt];
+		if ( buffer == null || buffer == "invalid" )
+		{
+			if ( webAudioPreloadAudioFiles != null )
+			{
+				var i = 0;
+				while ( i < webAudioPreloadAudioFiles.length )
+				{
+					var audioFile = webAudioPreloadAudioFiles[i];
+					if ( audioFile.fileName == fileNameNoExt )
+					{
+						var bufferdata = new Uint8Array(audioFile.fileSize);
+						bufferdata.set(webAudioPreloadBytes.subarray(audioFile.position,audioFile.position+audioFile.fileSize));
+						webAudioBuffers[audioFile.fileName] = webAudioContext.createBuffer(bufferdata.buffer, false);
+						dump("**** preload audio file ("+audioFile.fileName+"), forced by playChannel");
+						audioFile.fileName = null;
+						i = webAudioPreloadAudioFiles.length;
+					}
+					else
+					{
+						++i;
+					}
+				}
+			}
+		}
+		if ( buffer == null || buffer == "invalid" )
+		{
+			mandreel_webAudio_queueLoadBuffer(fileName);
+			buffer = webAudioBuffers[fileNameNoExt];
+		}
+		if ( buffer != null && buffer != "invalid" )
+		{
+			var chn = webAudioContext.createBufferSource();
+			var gain = webAudioContext.createGainNode();
+			if ( chn && gain )
+			{
+				webAudioChannels[channel] = chn;
+				webAudioGain[channel] = gain;
+				chn.buffer = buffer;
+				chn.connect(gain);
+				gain.connect(webAudioContext.destination);
+				var bLoop = loop != 0;
+				chn.loop = bLoop;
+				gain.gain.value = vol;
+				chn.playbackRate.value = pitch;
+				chn.noteOn(0);
+				//dump("webAudio: PlayChannel "+channel+" "+fileName+" "+vol+" "+bLoop+" "+pitch);
+			}
+		}
+	}
+}
+
+function wa_imp_mandreel_audio_stopChannel(channel)
+{
+	if ( webAudioContext )
+	{
+		var chn = webAudioChannels[channel];
+		if ( chn != null )
+		{
+			//dump("webAudio: StopChannel "+channel);
+			chn.noteOff(0);
+			webAudioChannels[channel] = null;
+			webAudioGain[channel] = null;
+		}
+	}
+}
+
+function wa_imp_mandreel_audio_setChannelVolume(channel,vol)
+{
+	if ( webAudioContext )
+	{
+		var gain = webAudioGain[channel];
+		if ( gain != null )
+			gain.gain.value = vol;
+	}
+}
+
+function wa_imp_mandreel_audio_setChannelPan(channel,pan)
+{
+	if ( webAudioContext )
+	{
+	}
+}
+
+function wa_imp_mandreel_audio_setChannelPitch(channel,pitch)
+{
+	if ( webAudioContext )
+	{
+		var chn = webAudioChannels[channel];
+		if ( chn != null )
+		{
+			chn.playbackRate.value = pitch;
+		}
+	}
+}
+
+var mwebAudioPreloadState = "start";
+//var mwebAudioPreloadRequest = 0;
+var mwebAudioPreloadAssets = 0;
+var mwebAudioCurrentPreloadAsset = 0;
+var mwebAudioAsyncFiles = '';
+var mwebListAudioAsyncFiles ='';
+var mwebListAudioAsyncFilesPos = 0;
+var mwebTotalPreloadingFiles = 0;
+var mwebCurrentPreloadingFiles = 0;
+function mwebCallbackAsync()
+{
+	mwebListAudioAsyncFilesPos++;
+	if ( mwebListAudioAsyncFilesPos >= mwebListAudioAsyncFiles.length )
+	{
+		mwebListAudioAsyncFiles = null;
+		mwebAudioAsyncFiles = null;
+		return;
+	}
+
+	setTimeout("mandreel_webAudio_queueLoadBuffer(mwebListAudioAsyncFiles[mwebListAudioAsyncFilesPos], mwebCallbackAsync);",10);
+}
+
+function mwebCallbackAsyncPreload()
+{
+	mwebCurrentPreloadingFiles++;
+}
+
+function mandreel_webAudio_PreloadAssets()
+{
+	/*if ( mwebAudioPreloadState == "start" )
+	{
+		//dump("webaudio start");
+			mwebAudioPreloadRequest = new XMLHttpRequest();
+			var url = g_mandreel_working_folder+"mandreel.fat.dat";
+			mwebAudioPreloadRequest.open("GET", url, true);
+			mwebAudioPreloadRequest.onreadystatechange = function()
+			{
+				if (mwebAudioPreloadRequest.readyState != 4) return;
+				if ( mwebAudioPreloadRequest.status != 404 && mwebAudioPreloadRequest.response != null )
+					mwebAudioPreloadState = "parseFat";
+				else
+				{
+					mwebAudioPreloadState = "done";
+					dump("error pre-loading audio assets, status("+mwebAudioPreloadRequest.status+")");
+				}
+			}
+			mwebAudioPreloadState = "loadingFat";
+			mwebAudioPreloadRequest.send();
+	}
+	else if ( mwebAudioPreloadState == "parseFat" )*/
+	if ( mwebAudioPreloadState == "start" )
+	{
+		//mwebAudioPreloadAssets = mwebAudioPreloadRequest.response.split('\n');
+		//mwebAudioPreloadRequest = 0;
+		mwebAudioPreloadAssets = mandreelFatData.split('\n');
+		mwebAudioCurrentPreloadAsset = 0;
+		mwebAudioPreloadState = "preloading";
+	}
+	else if ( mwebAudioPreloadState == "preloading" )
+	{
+		//dump("webaudio preloading");
+		var queued = false;
+		while ( !queued && mwebAudioPreloadState != "done" )
+		{
+			if ( mwebAudioCurrentPreloadAsset < mwebAudioPreloadAssets.length )
+			{
+				var params = mwebAudioPreloadAssets[mwebAudioCurrentPreloadAsset].split(',');
+				if ( params[0] == "audiofile" && params[1])
+				{
+					var sync_load = true;
+					if (params[2] && (params[2]&1) == 0)
+						sync_load = false;
+
+					if (sync_load)
+					{
+						mandreel_webAudio_queueLoadBuffer(params[1],mwebCallbackAsyncPreload);
+						mwebTotalPreloadingFiles++;
+						queued = true;
+					}
+
+				}
+				else if ( params[0] == "audiopreloadfile" )
+				{
+					mandreel_webAudio_queueLoadPackedBuffers(params[1],mwebCallbackAsyncPreload);
+					var size_pog_file = parseInt(params[2], 10);
+					mandreel_total_pogfile_size = size_pog_file;
+					mwebTotalPreloadingFiles++;
+					queued = true;
+				}
+				else if ( params[0] == "audiopreloadasync" )
+				{
+					webAudioPreloadAsync = true;
+				}
+				mwebAudioCurrentPreloadAsset++;
+			}
+			else
+				queued = true;
+
+			if ( mwebAudioCurrentPreloadAsset >= mwebAudioPreloadAssets.length )
+			{
+				if (mwebCurrentPreloadingFiles == mwebTotalPreloadingFiles)
+				{
+					mwebAudioPreloadState = "done";
+					mwebAudioPreloadAssets = 0;
+				}
+			}
+		}
+	}
+
+	if ( mwebAudioPreloadState == "done" )
+	{
+		if ( mandreelAppPlatform == "nacl" )
+			setTimeout("MandreelAudioStartedNacl()", 10);
+		else
+			setTimeout("MandreelAudioStarted()", 10);
+	}
+	else
+		setTimeout("mandreel_webAudio_PreloadAssets()", 10);
+}
+
+var wa_mandreelMusicElement = null;
+var wa_mandreelMusicElementFilename = "";
+var wa_mandreelMusicElementVolume = 1.0;
+function wa_imp_mandreel_audio_playMusic(fileName)
+{
+	var fileNameNoExt = wa_getFileNameNoExt(fileName);
+	var fileNameFull = g_mandreel_working_folder + fileNameNoExt + ".ogg";
+
+	if ( wa_mandreelMusicElementFilename != fileNameFull )
+	{
+		wa_imp_mandreel_audio_stopMusic(0);
+		var audio = document.createElement("audio");
+		var type = fileNameFull.slice(fileNameFull.lastIndexOf(".")+1);
+		switch(type){
+			case "mp3" : type = "mpeg"; break;
+			case "ogg" : type = "ogg"; break;
+			case "wav" : type = "wav"; break;
+			default : throw("'" + fileNameFull + "' is not a recognized audio file");
+		}
+
+		// set correct id for lookup, loading method and data types
+		audio.setAttribute("type", "audio/" + type);
+		var is_chrome = navigator.userAgent.toLowerCase().indexOf('chrome') > -1;
+		if ( is_chrome )
+			audio.setAttribute("loop", "loop");
+		else
+			audio.addEventListener('ended', function(){this.currentTime = 0;}, false);
+		audio.volume = wa_mandreelMusicElementVolume;
+		audio.setAttribute("autoplay", "true");
+		audio.setAttribute("src", fileNameFull);
+
+
+		// include into list and document
+		document.body.appendChild(audio);
+		wa_mandreelMusicElement = audio;
+		wa_mandreelMusicElementFilename = fileNameFull;
+	}
+}
+
+function wa_imp_mandreel_audio_stopMusic()
+{
+	if ( wa_mandreelMusicElement != null )
+	{
+		document.body.removeChild(wa_mandreelMusicElement);
+		wa_mandreelMusicElement = null;
+		wa_mandreelMusicElementFilename = "";
+	}
+}
+
+function wa_imp_mandreel_audio_setMusicVol(vol)
+{
+	wa_mandreelMusicElementVolume = vol;
+	if ( wa_mandreelMusicElement != null )
+	{
+		wa_mandreelMusicElement.volume = wa_mandreelMusicElementVolume;
+	}
+}
+
+var mandreel_audio_stream_func_ptr = 0;
+function mandreel_audio_stream_process(e)
+{
+	var l = e.outputBuffer.getChannelData(0);
+	var l2 = e.outputBuffer.getChannelData(1);
+	var n = e.outputBuffer.length;
+
+	var offset2 = 0;
+	var inc = 44.1 / 48.0;
+	while ( n > 0 )
+	{
+		var n2 = ((n*inc)|0)/4;
+		if ( n2 > 1024 )
+			n2 = 1024;
+
+		var sp = g_stack_pointer+100*1024;
+		var ptr = g_stack_pointer+200*1024;
+		var _sp = sp>>2;
+		heap32[_sp]=ptr;
+		heap32[_sp+1]=n2*4;
+		__FUNCTION_TABLE__[(mandreel_audio_stream_func_ptr)>>2](sp);
+
+		var offset = ptr>>2;
+		var size = n2*4;
+		/*for (var i=0;i<size;++i)
+		{
+			l[i+offset2] = heapFloat[offset+(i*2)];
+			l2[i+offset2] = heapFloat[offset+(i*2)+1];
+		}*/
+		var i = 0;
+		var j = 0;
+		while ( i < size )
+		{
+			l[j+offset2] = heapFloat[offset+((i|0)*2)];
+			l2[j+offset2] = heapFloat[offset+((i|0)*2)+1];
+			i += inc;
+			j++;
+		}
+
+		//offset2 += n2*4;
+		//n -= n2*4;
+		offset2 += j;
+		n -= j;
+	}
+}
+
+function mandreel_Audio_requestSoundData(soundData)
+{
+	var n = soundData.length/2;
+	var offset2 = 0;
+	while ( n > 0 )
+	{
+		var n2 = n;
+		if ( n2 > 1024 )
+			n2 = 1024;
+		var sp = g_stack_pointer+100*1024;
+		var ptr = g_stack_pointer+200*1024;
+		var _sp = sp>>2;
+		heap32[_sp]=ptr;
+		heap32[_sp+1]=n2;
+		__FUNCTION_TABLE__[(mandreel_audio_stream_func_ptr)>>2](sp);
+
+		var offset = ptr>>2;
+		var size = n2*2;
+		var buf = heapFloat.subarray(offset,offset+size);
+		soundData.set(buf,offset2);
+		/*for (var i=0; i<size; i++)
+		  soundData[i+offset2] = heapFloat[offset+i];*/
+		offset2 += n2*2;
+		n -= n2;
+	}
+ }
+
+var __Mandreel_Audio_CreateStream_created = false;
+function Mandreel_Audio_CreateStream(sp)
+{
+	if ( !__Mandreel_Audio_CreateStream_created )
+	{
+		if (webAudioContext)
+		{
+			mandreel_audio_stream_func_ptr = heap32[sp>>2];
+			var source =  webAudioContext.createJavaScriptNode(1024*4, 0, 2);
+			source.connect(webAudioContext.destination);
+			source.onaudioprocess = mandreel_audio_stream_process;
+		}
+		else
+		{
+			mandreel_audio_stream_func_ptr = heap32[sp>>2];
+			AudioDataDestination(44100,mandreel_Audio_requestSoundData);
+		}
+		__Mandreel_Audio_CreateStream_created = true;
+	}
+}
+function mandreel_webAudio_dummyStream()
+{
+	var sp = g_stack_pointer+100*1024;
+	var ptr = g_stack_pointer+200*1024;
+	var _sp = sp>>2;
+	heap32[_sp]=ptr;
+	heap32[_sp+1]=4096;
+	__FUNCTION_TABLE__[(mandreel_audio_stream_func_ptr)>>2](sp);
+	setTimeout("mandreel_webAudio_dummyStream()",10);
+}
+
+function AudioDataDestination(sampleRate, readFn)
+{
+	// Initialize the audio output.
+	var audio = new Audio();
+	if ( audio.mozSetup == null )
+	{
+		setTimeout("mandreel_webAudio_dummyStream()",10);
+		return;
+	}
+	audio.mozSetup(2, sampleRate);
+
+	var currentWritePosition = 0;
+	var prebufferSize = sampleRate / 2; // buffer 500ms
+	var tail = null, tailPosition;
+
+	// The function called with regular interval to populate
+	// the audio output buffer.
+	setInterval(function() {
+	  var written;
+	  // Check if some data was not written in previous attempts.
+	  if(tail) {
+		written = audio.mozWriteAudio(tail.subarray(tailPosition));
+		currentWritePosition += written;
+		tailPosition += written;
+		if(tailPosition < tail.length) {
+		  // Not all the data was written, saving the tail...
+		  return; // ... and exit the function.
+		}
+		tail = null;
+	  }
+
+	  // Check if we need add some data to the audio output.
+	  var currentPosition = audio.mozCurrentSampleOffset();
+	  var available = currentPosition + prebufferSize - currentWritePosition;
+	  if(available > 0) {
+		// Request some sound data from the callback function.
+		var soundData = new Float32Array(available);
+		readFn(soundData);
+
+		// Writting the data.
+		written = audio.mozWriteAudio(soundData);
+		if(written < soundData.length) {
+		  // Not all the data was written, saving the tail.
+		  tail = soundData;
+		  tailPosition = written;
+		}
+		currentWritePosition += written;
+	  }
+	}, 100);
+}
+var mandreel_flashaudio_server = "";
+var mandreel_flashaudio_lite = false;
+var mandreel_flashaudio_musicaudiotag = true;
+
+function as3Error(str)
+{
+	var params = str.split(' ');
+	if ( params[0] == "createdBuffer" )
+		mandreel_audio_flash_lastBufferCreatedSwf = parseInt(params[1]);
+	dump("as3Log: "+str);
+}
+
+function mandreel_audio_getFlashMovieObject(movieName)
+{
+	if (Mandreel_window.document[movieName])
+	{
+		return Mandreel_window.document[movieName];
+	}
+	if (navigator.appName.indexOf("Microsoft Internet")==-1)
+	{
+		if (document.embeds && document.embeds[movieName])
+			return document.embeds[movieName];
+	}
+	else
+	{
+		return document.getElementById(movieName);
+	}
+}
+
+function mandreel_sendmsg_flash(msg)
+{
+	if ( mandreel_flashaudio_server != "" )
+	{
+		var iframeWin = document.getElementById("ninja-iframe").contentWindow;
+		iframeWin.postMessage(msg,mandreel_flashaudio_server);
+	}
+	else
+	{
+		var flashMovie=mandreel_audio_getFlashMovieObject("FlashDivAudio");
+		if ( flashMovie != null )
+			flashMovie.receiveMessage(msg);
+		else
+			dump("error: flashMovie not found");
+	}
+}
+
+function fl_mandreel_audio_init(sp)
+{
+	mandreel_sendmsg_flash("init "+g_mandreel_working_folder);
+}
+
+function fl_mandreel_audio_end(sp)
+{
+}
+
+function fl_mandreel_audio_update(sp)
+{
+}
+
+function mandreel_flashaudiolite_createBuffer(fileName)
+{
+	mandreel_audio_flash_lastBufferCreated++;
+	mandreel_sendmsg_flash("createBuffer "+wa_getFileNameNoExt(fileName)+" "+mandreel_audio_flash_lastBufferCreated);
+}
+
+var mandreel_audio_flash_lastBufferCreated = 0;
+function fl_mandreel_audio_createBuffer(sp)
+{
+	var ptr_fileName = heap32[sp>>2];sp+=4;
+	var fileName = get_string_from_ptr(ptr_fileName).toLowerCase();
+	mandreel_flashaudiolite_createBuffer(fileName);
+}
+
+function fl_internal_mandreel_audio_checkBuffersPending()
+{
+	return mandreel_flashaudio_lite && (mandreel_audio_flash_lastBufferCreatedSwf != mandreel_audio_flash_lastBufferCreated);
+}
+
+var mandreel_audio_flash_lastBufferCreatedSwf = 0;
+function fl_mandreel_audio_checkBuffersPending(sp)
+{
+	r_g0 = 0;
+	if ( fl_internal_mandreel_audio_checkBuffersPending() )
+		r_g0 = 1;
+	dump("fl_mandreel_audio_checkBuffersPending ("+r_g0+") ("+mandreel_audio_flash_lastBufferCreatedSwf+") ("+mandreel_audio_flash_lastBufferCreated+")");
+}
+
+
+function fl_mandreel_audio_playChannel(sp)
+{
+	var ptr_fileName = heap32[sp>>2];sp+=4;
+	var channel = heap32[sp>>2];sp+=4;
+	var vol = heapFloat[sp>>2];sp+=4;
+	var loop = heap32[sp>>2];sp+=4;
+	var pitch = heapFloat[sp>>2];sp+=4;
+	var fileName = get_string_from_ptr(ptr_fileName).toLowerCase();
+	mandreel_sendmsg_flash("playChannel "+fileName+" "+channel+" "+loop+" "+vol+" "+pitch);
+	r_g0 = 0;
+}
+
+function fl_mandreel_audio_stopChannel(sp)
+{
+	var ptr_fileName = heap32[sp>>2];sp+=4;
+	var channel = heap32[sp>>2];sp+=4;
+	var index = heapFloat[sp>>2];sp+=4;
+
+	mandreel_sendmsg_flash("stopChannel "+channel);
+}
+
+function fl_mandreel_audio_setChannelVolume(sp)
+{
+	var channel = heap32[sp>>2];sp+=4;
+	var vol = heapFloat[sp>>2];sp+=4;
+
+	mandreel_sendmsg_flash("setChannelVolume "+channel+" "+vol);
+}
+
+function fl_mandreel_audio_setChannelPan(sp)
+{
+	var channel = heap32[sp>>2];sp+=4;
+	var pan = heapFloat[sp>>2];sp+=4;
+	mandreel_sendmsg_flash("setChannelPan "+channel+" "+pan);
+}
+
+function fl_mandreel_audio_setChannelPitch(sp)
+{
+	var channel = heap32[sp>>2];sp+=4;
+	var pitch = heapFloat[sp>>2];sp+=4;
+	mandreel_sendmsg_flash("setChannelPitch "+channel+" "+pitch);
+}
+
+
+function mandreel_audio_load_flash()
+{
+	var failed = "";
+
+
+	try
+	{
+		var mandreelAudioSwf = g_mandreel_working_folder+"mandreelaudio.swf";
+		if ( mandreel_flashaudio_lite )
+			mandreelAudioSwf = g_mandreel_working_folder+"mandreelaudiolite.swf";
+		var swf = swfobject.createSWF({ data:mandreelAudioSwf, width:"0", height:"0", allowScriptAccess:"always" }, { menu:"false" }, "FlashDivAudio");
+		if ( !swf )
+			failed  = "swfobject.js not avaiable or Unable to open "+mandreelAudioSwf;
+	}
+	catch(err)
+	{
+		failed  = err;
+	}
+
+	if (failed == "" && !swfobject.hasFlashPlayerVersion("9.0.0"))
+		failed = "flash player not found";
+
+	if ( failed != "" )
+	{
+		dump("Failed to create flash audio driver ("+failed+"). Null driver will be used.");
+		MandreelAudioDriver = "null";
+		null_MainAudioDriver();
+	}
+}
+
+function fl_MainAudioDriver(audioServer, audioUrl)
+{
+	mandreel_flashaudio_server = audioServer;
+	if ( mandreel_flashaudio_lite )
+		mandreel_flashaudio_server = "";
+	if ( mandreel_flashaudio_server != "" )
+	{
+		Mandreel_window.addEventListener("message", receiveMessage2, false);
+		var el = document.createElement("iframe");
+		el.setAttribute('id', 'ninja-iframe');
+		el.setAttribute('width', '0');
+		el.setAttribute('height', '0');
+		el.setAttribute('frameborder', '0');
+		document.body.appendChild(el);
+		el.onerror = function(message) { alert(message); };
+		el.setAttribute('src', audioServer+audioUrl+"/MandreelAudio.html");
+		setTimeout("CheckNinjaFrameReady()", 1000);
+	}
+	else
+	{
+		setTimeout("mandreel_audio_load_flash()", 10);
+	}
+}
+var ninjaLoaded = false;
+function CheckNinjaFrameReady()
+{
+	try
+	{
+		mandreel_sendmsg_flash("loadFlash");
+	}
+	catch(err)
+	{
+	}
+	if ( !ninjaLoaded )
+		setTimeout("CheckNinjaFrameReady()", 1000);
+}
+
+function fl_map_mandreel_audio_functions()
+{
+	mandreel_audio_init = fl_mandreel_audio_init;
+	mandreel_audio_end = fl_mandreel_audio_end;
+	mandreel_audio_update = fl_mandreel_audio_update;
+	mandreel_audio_createBuffer = fl_mandreel_audio_createBuffer;
+	mandreel_audio_playChannel = fl_mandreel_audio_playChannel;
+	mandreel_audio_stopChannel = fl_mandreel_audio_stopChannel;
+	mandreel_audio_setChannelVolume = fl_mandreel_audio_setChannelVolume;
+	mandreel_audio_setChannelPan = fl_mandreel_audio_setChannelPan;
+	mandreel_audio_setChannelPitch = fl_mandreel_audio_setChannelPitch;
+	if ( mandreel_flashaudio_musicaudiotag )
+	{
+		mandreel_audio_useMusicFunctions = wa_mandreel_audio_useMusicFunctions;
+		mandreel_audio_playMusic = wa_mandreel_audio_playMusic;
+		mandreel_audio_stopMusic = wa_mandreel_audio_stopMusic;
+		mandreel_audio_setMusicVol = wa_mandreel_audio_setMusicVol;
+	}
+	else
+		dump("WARNING: flash music functions not supported");
+	mandreel_audio_checkBuffersPending = fl_mandreel_audio_checkBuffersPending;
+}
+
+function receiveMessage2(event)
+{
+	ninjaLoaded = true;
+	fl_map_mandreel_audio_functions();
+	setTimeout("MandreelAudioStarted()", 10);
+}
+
+function mandreel_flashlite_checkPreloadFinished()
+{
+	if ( !fl_internal_mandreel_audio_checkBuffersPending() )
+		MandreelAudioStarted();
+	else
+		setTimeout("mandreel_flashlite_checkPreloadFinished()", 10);
+}
+
+function mandreel_flashlite_startPreload()
+{
+	mandreel_sendmsg_flash("init "+g_mandreel_working_folder);
+	// preload sounds
+	var FatLines = mandreelFatData.split('\n');
+	for ( var i=0;i<FatLines.length;++i )
+	{
+		var params = FatLines[i].replace('\r','').split(',');
+		if ( params[0] == "audiofile" && params[1] )
+		{
+			var sync_load = true;
+			if (params[2] && (params[2]&1) == 0)
+				sync_load = false;
+
+			if (sync_load)
+			{
+
+				mandreel_flashaudiolite_createBuffer(params[1]);
+			}
+		}
+	}
+	setTimeout("mandreel_flashlite_checkPreloadFinished()", 10);
+}
+
+function flashReady()
+{
+	fl_map_mandreel_audio_functions();
+	setTimeout("mandreel_flashlite_startPreload()",10);
+}
+
+function null_mandreel_audio(sp)
+{
+	r_g0 = 0;
+}
+
+function null_MainAudioDriver()
+{
+	mandreel_audio_init = null_mandreel_audio;
+	mandreel_audio_end = null_mandreel_audio;
+	mandreel_audio_update = null_mandreel_audio;
+	mandreel_audio_createBuffer = null_mandreel_audio;
+	mandreel_audio_playChannel = null_mandreel_audio;
+	mandreel_audio_stopChannel = null_mandreel_audio;
+	mandreel_audio_setChannelVolume = null_mandreel_audio;
+	mandreel_audio_setChannelPan = null_mandreel_audio;
+	mandreel_audio_setChannelPitch = null_mandreel_audio;
+	mandreel_audio_useMusicFunctions = wa_mandreel_audio_useMusicFunctions;
+	mandreel_audio_playMusic = wa_mandreel_audio_playMusic;
+	mandreel_audio_stopMusic = wa_mandreel_audio_stopMusic;
+	mandreel_audio_setMusicVol = wa_mandreel_audio_setMusicVol;
+	setTimeout("MandreelAudioStarted()", 10);
+}
+function at_mandreel_audio_init(sp)
+{
+}
+
+function at_mandreel_audio_end(sp)
+{
+}
+
+function at_mandreel_audio_update(sp)
+{
+	for ( i = 0 ; i < 32 ; ++i )
+	{
+		var end = maudioChannelEnd[i];
+		if ( end != null )
+		{
+			var sound = maudiotagChannels[i];
+			if ( sound != null )
+			{
+				if ( sound.currentTime > end )
+				{
+					sound.pause();
+					maudioChannelEnd[i] = null;
+				}
+			}
+		}
+	}
+}
+
+function at_mandreel_audio_checkBuffersPending(sp)
+{
+	r_g0 = 0;//wa_imp_mandreel_audio_checkBuffersPending();
+}
+
+function at_mandreel_audio_createBuffer(sp)
+{
+	var ptr_fileName = heap32[sp>>2];sp+=4;
+	var maxChannels = heap32[sp>>2];sp+=4;
+	var fileName = get_string_from_ptr(ptr_fileName).toLowerCase();
+	//wa_imp_mandreel_audio_createBuffer(fileName);
+
+	r_g0 = 0;
+}
+
+function at_mandreel_audio_playChannel(sp)
+{
+	var ptr_fileName = heap32[sp>>2];sp+=4;
+	var channel = heap32[sp>>2];sp+=4;
+	var vol = heapFloat[sp>>2];sp+=4;
+	var loop = heap32[sp>>2];sp+=4;
+	var pitch = heapFloat[sp>>2];sp+=4;
+	var fileName = get_string_from_ptr(ptr_fileName).toLowerCase();
+	at_imp_mandreel_audio_playChannel(fileName,channel,vol,loop,pitch);
+	r_g0 = 0;
+}
+
+function at_mandreel_audio_stopChannel(sp)
+{
+	var ptr_fileName = heap32[sp>>2];sp+=4;
+	var channel = heap32[sp>>2];sp+=4;
+	var index = heapFloat[sp>>2];sp+=4;
+	at_imp_mandreel_audio_stopChannel(channel);
+}
+
+function at_mandreel_audio_setChannelVolume(sp)
+{
+	var channel = heap32[sp>>2];sp+=4;
+	var vol = heapFloat[sp>>2];sp+=4;
+	//wa_imp_mandreel_audio_setChannelVolume(channel,vol);
+}
+
+function at_mandreel_audio_setChannelPan(sp)
+{
+	var channel = heap32[sp>>2];sp+=4;
+	var pan = heapFloat[sp>>2];sp+=4;
+	//wa_imp_mandreel_audio_setChannelPan(channel,pan);
+}
+
+function at_mandreel_audio_setChannelPitch(sp)
+{
+	var channel = heap32[sp>>2];sp+=4;
+	var pitch = heapFloat[sp>>2];sp+=4;
+	//wa_imp_mandreel_audio_setChannelPitch(channel,pitch);
+}
+
+function at_mandreel_audio_useMusicFunctions(sp)
+{
+	r_g0 = 1;
+}
+
+function at_MainAudioDriver()
+{
+	mandreel_audio_init = at_mandreel_audio_init;
+	mandreel_audio_end = at_mandreel_audio_end;
+	mandreel_audio_update = at_mandreel_audio_update;
+	mandreel_audio_createBuffer = at_mandreel_audio_createBuffer;
+	mandreel_audio_playChannel = at_mandreel_audio_playChannel;
+	mandreel_audio_stopChannel = at_mandreel_audio_stopChannel;
+	mandreel_audio_setChannelVolume = at_mandreel_audio_setChannelVolume;
+	mandreel_audio_setChannelPan = at_mandreel_audio_setChannelPan;
+	mandreel_audio_setChannelPitch = at_mandreel_audio_setChannelPitch;
+	mandreel_audio_useMusicFunctions = at_mandreel_audio_useMusicFunctions;
+	mandreel_audio_playMusic = wa_mandreel_audio_playMusic;
+	mandreel_audio_stopMusic = wa_mandreel_audio_stopMusic;
+	mandreel_audio_checkBuffersPending = at_mandreel_audio_checkBuffersPending;
+	mandreel_audio_setMusicVol = wa_mandreel_audio_setMusicVol;
+
+	setTimeout("mandreel_audiotag_PreloadAssets()", 10);
+}
+
+var maudiotagPreloadState = "start";
+var maudiotagPreloadAssets = 0;
+var maudiotagCurrentPreloadAsset = 0;
+var maudiotagPreloadAsync = false;
+var maudiotagDurations = Array();
+var maudiotagChannelsCreated = 0;
+var maudiotagChannels = Array();
+var maudiotagChannelsLoaded = Array();
+var maudiotagAudioSpriteFound = false;
+var maudiotagAvailableChannels = new Array();
+var maudioSecondsPos = new Array();
+var maudioChannelEnd = new Array();
+
+function mandreel_audiotag_PreloadAssets()
+{
+	if ( maudiotagPreloadState == "start" )
+	{
+		maudiotagPreloadAssets = mandreelFatData.split('\n');
+		maudiotagCurrentPreloadAsset = 0;
+		maudiotagPreloadState = "preloading";
+	}
+	else if ( maudiotagPreloadState == "preloading" )
+	{
+		var queued = false;
+		while ( !queued && maudiotagPreloadState != "done" )
+		{
+			if ( maudiotagCurrentPreloadAsset < maudiotagPreloadAssets.length )
+			{
+				var params = maudiotagPreloadAssets[maudiotagCurrentPreloadAsset].split(',');
+				if ( params[0] == "audiofile" && params[1])
+				{
+					var duration = params[3];
+					var fileNameNoExt = wa_getFileNameNoExt(params[1]);
+					maudiotagDurations[fileNameNoExt] = duration|0;
+					dump("audiotag duration ("+params[1]+") "+duration);
+				}
+				else if ( params[0] == "audiotagfile" )
+				{
+					var type = params[1];
+					var filesize = params[3];
+					var numsounds = params[4];
+					var at = new Audio();
+					if ( !maudiotagAudioSpriteFound && at.canPlayType && at.canPlayType("audio/"+type) != "" )
+					{
+						maudiotagLoadPackFile(params[2],filesize,numsounds,type);
+						maudiotagAudioSpriteFound = true;
+						queued = true;
+					}
+				}
+				else if ( params[0] == "audiopreloadasync" )
+				{
+					maudiotagPreloadAsync = true;
+				}
+				maudiotagCurrentPreloadAsset++;
+			}
+			else
+				queued = true;
+
+			if ( maudiotagCurrentPreloadAsset >= maudiotagPreloadAssets.length )
+			{
+				maudiotagPreloadState = "done";
+				maudiotagPreloadAssets = 0;
+			}
+		}
+	}
+
+	if ( maudiotagPreloadState == "done" )
+	{
+		setTimeout("MandreelAudioStarted()", 10);
+	}
+	else
+		setTimeout("mandreel_audiotag_PreloadAssets()", 10);
+}
+
+function maudiotagLoadPackFile(filename,filesize,numsounds,atype)
+{
+	dump("audiotag packfile ("+filename+") ("+filesize+") ("+numsounds+")");
+	var url = g_mandreel_working_folder+filename;
+	dump("audiotag: loading packed data ("+filename+") url("+url+")");
+	var request = new XMLHttpRequest();
+	request.open("GET", url, true);
+	request.responseType = "arraybuffer";
+	request.onreadystatechange = function()
+	{
+		if (request.readyState == 4)
+		{
+			if (request.status == 404)
+				return;
+			if ( request.response != null )
+				audiotagParsePreloadFile(request.response,numsounds,atype);
+		}
+	}
+	request.send();
+}
+
+function audiotagParsePreloadFile(response,numsounds,atype)
+{
+	var pos = 0;
+	var bytes = new Uint8Array(response);
+	var i = 0;
+	if ( webAudioPreloadAsync )
+		webAudioPreloadBytes = bytes;
+	var secondsPos = 0.0;
+	while ( pos < bytes.byteLength && i < numsounds)
+	{
+		// filename
+		var fileName = "";
+		while ( bytes[pos] != 0 )
+		{
+			fileName += String.fromCharCode(bytes[pos]);
+			pos++;
+		}
+		pos++;
+		// filesize
+		var filesize = bytes[pos] | (bytes[pos+1]<<8) | (bytes[pos+2]<<16) | (bytes[pos+3]<<24);
+		pos += 4;
+		var fileNameNoExt = wa_getFileNameNoExt(fileName);
+		var duration = maudiotagDurations[fileNameNoExt];
+		dump("afile ("+fileName+") duration("+duration+") posseconds("+secondsPos+")");
+		maudioSecondsPos[fileNameNoExt] = secondsPos;
+		secondsPos += duration / 1000.0;
+		secondsPos += 0.25;
+		dump("second "+i+" "+secondsPos);
+
+		i++;
+	}
+
+	// contents
+	var contentSize = bytes.byteLength - pos;
+	var bufferdata = new Uint8Array(contentSize);
+	bufferdata.set(bytes.subarray(pos,pos+contentSize));
+	var ascii = '';
+	for (var i=0; i<bufferdata.length; i++)
+		ascii += String.fromCharCode(bufferdata[i]);
+	var base64 = btoa(ascii);
+	audiotagAudioSprite = "data:audio/"+atype+";base64," + base64;
+
+	if ( webAudioPreloadAsync )
+	{
+		dump("started preloading audio files async");
+		setTimeout("mandreel_webAudio_preloadNextAudioFile()",10);
+	}
+
+	audiotagCreateChannel(0);
+}
+
+function audiotagCreateChannel(index)
+{
+	console.log("audiotagCreateChannel "+index);
+	var sound = new Audio();
+	sound.addEventListener("canplaythrough",function()
+	{
+		if ( maudiotagChannelsLoaded[index] == null )
+		{
+			maudiotagChannelsLoaded[index] = sound;
+			maudiotagAvailableChannels.push(sound);
+			console.log("************** loaded channel "+index);
+			if ( index < 8 )
+				setTimeout("audiotagCreateChannel("+index+"+1)", 10);
+		}
+	}, false);
+	sound.addEventListener("error",function()
+	{
+		console.log("************** error loading channel "+index);
+	}, false);
+	//sound.src = "data:audio/mp3;base64,//uQxAAAAAAAAAAAAAAAAAAAAAAAWGluZwAAAA8AAABFAAA0igAHDBERFhsbHyIiJioqLTE1NTk8PEBEREpPT1JWWlpeYmJmaWltcXF1eXl8gISEh4yMj5OTl5qanqGlpamsrK+ysra5ub3AwMTHysrN0NDU19fa3t7h5Ofn6+7u8vX1+fv7/f8AAAA5TEFNRTMuOThyAqUAAAAALjQAABRAJAXKQgAAQAAANIqLReuqAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//uAxAAACgjJYRQhAAN1ru+3N6ADNAEAASM2QkOAABKvqQjEIQjSE+pyEJ/5znoc5znP//QgAAEachCN85/oQDB9QIAg8oCEHAQcXfKBjEAIS4IAgclAQBA5BAMZQEHfgmD4fwf5HQ6HQ6HY7HQ7GQrDQPvZToNx37zcYsbgZnqEkTWnZsm+DxpKLDUMfs3A4zHKdzz8+wAWXmmL1KaHf35z0oOjnISA5pYpJmW9w/woDIDpmTxpDRYGwmDH/rUv97+xaWZ9eZkqAiZl+xsj8pszk1ZtY73/+UhDNvTHmxgMROhU0DBzwRq/MQ1Jbn///l4FEGHFFYIElBkORAUcAEZYRjfrSuiv1rWf6/e///Z8mnLXAgFiMOwakw0OepsaDVS5RdrxqT///////8hys3t58nrFS3lWt6/uXec73+46u0oA4ZEXCYUYY+p6C4/B89FZVEYXJqaW+eGCSYJfJOnpq7WadTtuzhoUjsP/+2DEFQOPrW1oPYMAAecorQmDIaE0qGThDsZRhGCCZyF03ZkXKRPVQEMTdeftOw84ncZ4XR/ZoO3JoyPFVtHePkemlrf5f740VGbMspMynd2NrG/h8//u58dsf2jWLnygUiASkXwFfQAw7MEGiSdlDDj7wJCnkpYu+0iqRU2SIo3RAkznFnYGqMYXMtXGhsYWLKMZzg4NSb1Jepcx7ohTx6PUlnSLHuY4vRK3VtWOymoix0TSesWjbseTdsYnvHf0v/Ks8NI0+O+Ge/Z4xkpZ/1rQS4QMHvMPSieYYfONUp/9VQBOCRaIS9okqeKzDCwz2wA0pok7D0mlEAxaelsP1uRm4hT/+2DEEQOQ5XtkLCRz2h00bImEjjlpio6TEqIL4ikSEeJRY1GhlJzTySOlrtqTXhIeh5vmvJqpiXFikoyd4tXBbGHzyo6hae6OHIxuoRjkJWu+okBoZoEDZvFrFN5LiAyxW9TEnnbyz/H/erAb3Ok2y9BVcOnGOv1kzQEgZxr0spQBWdNNJtvXQak+7mL2yf92oalcRhf0oCLJoWidC+awoNrOuFDy2UYNkk+X1a3VBuuTU604pNtS082afizat2f7nunbfdAnawhbPRmEEk5BKECSI7QPXcneTeHfYcEeUrhB0ReamhSlihEAA2DNS+LCVT8zyyPk7m1ml9iLJT5RfWoABPT/+2DEAYAO0V9oTBhvSckr7ejzDaFQT7CIuu6UuevrnRqQWnrosaeHIHIghzTLiApnBWKBykEGRpeaek5WfbQUGm4HvmEc0Z1cNji/jZ03yrg3dGpBRMPChoDGxkHJHP7VZTvlNkkJWY4SOeaqpKaEcrGeaOZFjmOK2LrMLo3/rolzs58SeHt/wAEwAASk5VsmKoQpfyl60V7xyRN9YRKhDS5djhmMfOuYFuxqX1zVE5QQourDCCMeGIHAIIUbK7yOTsRCQZHMruhiQ6ubRh3gIpxYGwfA+/SXh1Viy23s9cxzoKluDQyU+GSomumKPZMdvcKttEc5lxwsFgJAEElytfKhnMr/+2DEBQANdX9u7CRnyay0L7TDDHyX4Oe3pdCccMm/2jMqn6UihdVNPrGTu/Bj9Q3PQETiWC9S8qqOeSsLMp8BQQRIyZGPw2Ps9eVdSt+n+adikmCZSatTjtnZVhEcMzIoiCjdUztJftuGf+IcKZ/6jZjP+wMK6AwjI62203Lw5K7jYUcvoY0QuV6WVTGpKZEs2rKAmBHBArQ8zhvcKbPnoh/+ikScXJArWnwz0dRH02ADU83GEKXl9LQihFi4CPca2wmlvSyLvlVzdBi6p7pDrF7FQmbwjrv8MptOSnNYpWYKAQQQS3MVRtHIskSAIxmUqsMDbMzsMz+Ni4Ffzvr5Q9yTSQj/+0DEEYAKzMty55higVaSr3RgjgSW/8JJAbI8zlbL/t2+fNvGY4PAb3QOFQvSZoLuDsswgQShTAEXHWaY4JEgipiC1WKKOXUAMGOMtMpJOa0oG2pD4UpRq0awhk4dx07DMuCOEpePVSlwuybfziMR1YtHAB8NLRSswL0EVQk9rzoiPCrQbW4qJDYFc6RPsaskKrp1KS90BHdklWipyRV/jqVF0xGGVFm2s3wcwJl9iheX1CGxlP/7QMQMAAqVAYEklG6xVp4syYMNoFoBztJLiJErk7s7/ft/L6IUjCstJlNDOLTdacOt8LO8N/PmVLTiVF8UbwKJnIRTZHo6OsibDzCcv5F7U1AADT5grCxWpvZNskfeQ3o/g3KD5kMyRY7D1zEBZmvbnG7attnJEJGyJAw8pOUUioM3JxtTvZQhc/Sp7L9/Tzm/5+qHPmMKA6WFTryqnsjHP3SP6HWFqgIAAJJSTcH0nhFugclK//tAxAcBCsyvdUWEsNlDDO1M8wzgFJ121UStsnY5UgwO1jgVbsqChv1zojMpnddXBB27nidTTezt9utjvF2+1xUPI/Ey0X9uwe7XVbfR//+tI+W1Jwmcz9Qs/3b/gABKdodQEmZN1hwSr4WFFECvsmmpI4e5kjZKXVCXwRegXNTUxg4dDjow9OCc3JvDgsMvc5wGhRx59hDPA/QUNrr2R7C9am9r3ukxrJGc7Kal1QAAVJQIJCz/+1DEA4OKwPVoZ6RowUoWbIWGGOqbqsvVUvK6OV7AWklGA+pJ7Gw4ca1RiBPhqRr2HF4D8OjfMtXi5wtOwoXW1rfSEe+r2FCXH82z8zbufoKMwSD5wMGb6nuVm6fP3veVEYrpOCSJeL3jTiPov2HAJG0MZ0b1+4SW3YGG/HkPnllc8HPrdH/9CoZM1r6snzmMxGn6WfXz7ua/X/p9JtRzBsA0rFiibYj1jRSHKg0LOGxUkzv/+PUAAaCx0Aa2HcdVkRWwH1qaQeNn33jQOkWL//tAxAyACrRrZEwwxRFULG2o9JQowvUkzUH+pKox7BX+mE4aMztJ5bLGCZsBgpkiCyRSLBsXDzhAVJLP8zWOEbC735yposneBlNZ5LLMkvt4oAECgJJbu59jTGmHsHaGFNsY/kD7qQjkS5Gs6CBju7XoJK5N3I+7I9OyWVevVHnuOyt1S7dEWR1f+nCLyvIrIdWtQyk0zNejsiWIm2nv0sUa5tj/R1IAEAykii7wAQbhWMVBhxz/+0DEB4AKiG1xRhkAIVcULqTEDGaoGHbV4Xj9pl06dhBFNDriPVZrtHz0y7DhFQmfLAYTGL0HQyhOswFXtn4uJA0TFjbU3vCWHzJNQ6H16rRhY0SNUMvu8KuBRVYWUXCpwnvmKF2V6OCa+4xBi0yfQTXPjLrjfR0XhWBi97JhmvImhlbC3oFngKAZUnElyw0xaUOlzDQQNKBQEQKJGr4dULSJux1q3SRR5mjQH5vA6AEVG2q3I//7UMQDAAqw7YejDE/xTKzvKICLFmnKCn338dXIS04/UQUr/QREYmhCdS0v0iFGhKVEZ56wzPlYRdGK2OxfeuP+zpfdW22X7AwcQH4kFEGy4pdFRj1vNAYRUsESwpLqeBfSnyiAgeqKSJBUBUChJdReku5OStSYuNo3r4iXjboq+YVCuxmhyugjzIlbR6QrpXYXZidV9tqm7bWshCyl2O0zOo+/W/6nptP/7vkzAxrGqYAj+moJOJUFyRySySSOTP0NVxWTey+N2SzvTNz0b8b/+0DEDAAKpPWLowR4cVYiLA2DCbBMcCju992OtVI9P6eYSAVCsPDMOS5/qYpE9HLWGXKebH+uZ/qVBgDDRMNeAQyHBVr7t5hjP6QggRIZ7KcSgAEByF7QCVC1nTXajAXjiGcennLpq54XiiEz19DZx1Plm59L+9rmLfLsxPH7KyXRLuw70Itl/VV2X2foqUR/7XMDU2bUrM3EkDIaOYSKBpTP9ZV//1oAkoCCii5hbhGVWlD7qv/7QMQHAAp1NWtHmEbhOxEsTYSIcHonOiRI/atyhLVmNyqKuPt1Oz76Gal6mWZLiyqnoyNq6Kyu6m1WNuQtqzU6cHFHHKrWDqOjtVddjI/fcLaKfwPFTlN1P1AAFJ2gZJIAs3QJCIrgqJmVig/PNUabt5iyI7shRZgA2H7nc3WVv28thQLlVHCwcuCwFpIhfBNpEyTFVwKbJGzYGkYJM7aECVhL7+o+v/1VAQWYVUbGsl033UaF//tQxAYAixlpcSeMR/FeoexNgwkoEPUwTQlyR7yAARPpSHdyD7JYvBIX0z5UI4YgUFsxWYLzbIiaWa97AyuqJ3S3MO0EIaRilYMioZz1pQhL2mBIyKqshdPulW7ikY3q9aU7uD6oiLejkTgeBpfEaUzIuBnKdXuupcw1NdVCWDPaqb4oh20tXdlkZzXn3dpqsWqrWnroR3vdt7pYyoU45TujlTUUbFaALO3tGLpHzqYmKHCZ87y+yJ3KFD+tJtNOUPnhqUpmVk5ZLRt1j3VhEf/7UMQLAA0JaXlGFG8xoy2t6PMVfk0plEVrRyKjwmm6mKsc0HjnlzGO26EwoVnz0+DmCE21DBxd288LT+w9kdX5V6sDyc2ACBDmp5a1PPdkKhxnyHT73kWrcrrRTigOCjXE4vPR7YeAAWcpIkJQiWt3EpIu7t+a4ce3hRyEvn5xl2TU3YlPLMumKKmM1+Ue06Z3pPGLRhA97OqlEzOVmuwwY8lkbdGPs8utGrUYjkKgwxzOUJHVjiSNrVyvInZEsW3TTVdZGDxRxRRiGyQ5nBv/+2DEAAAOXT9vRiTB8aAs65z0jSgUKtyU0inA/MQ3azBbVKY6QFrPSI1gRdH+4JpZLwkcrK5e58ry6+5Vr35Vq3KoYZRwHtHxzrhGj7mKqzQJrO940WkVMc7wb1LfZz5t6/QzLHPnnzkv7J539vpaVN0Gd0LnaCNB8AsJhYRpvDoSZMpx/QwaAEApN3csIrwaRwHqziRqYl5/MmxEGjceGpD8J3rAwG663CuwpeQ6RhwitkVBK0D75hB7BQOuctyvacP4ouiEi0WZ5E3wZq3ND3NqUUgLRdqvod6DM6X+MnV+UtmIz//+TL+wh7tDfyUAoEKWgEAlAn5a9EkjnLaTPoQFZqr/+2DECoMM+WlcbBkJ4bUiak2UjbiCpVzs2UqxZsbtdrKOUzO+3TPbip6yaP+rhdbH1RFT3E/XeQ6FqhHE33jY+4Z/nnhuP6oIlea+tZaraCO6uri7ipifRUSe0/+q5hv3slTrEfmPoAAALsILTzDf5hsOOwFh2FCEZ6cIqrO0+OJNACEo3Fd0mAMhMja9FGVyBAZ65P6pJN+yykaj53njcXnoUlJIOKPkOExjtkvDIKHVGQ5iz8wyLXaedY5NjHJzhqxgnJWlE6yTnZFI0PVZQHvDKRUJpWOOuSSOWnFDZ9CgfJfVaB+mbSzG9zPSRrNQ+GHqlRLcoDRCoUBq2RX6Zcc2hsf/+0DEGAAMVTF/pIzVsYImq52EmGSh3MGANrxh2JPvBC5sZAlp6+a3yRAZ6gyVeI/u81hNX2Zu+mtTb+UtIbS0qwDhpm63/0AhCJJLgCl0Dk9lNxQXBGzJl1CO06ZcjHWy2XTa2VlRUlpI3906cx2aNZo1859dr/s4hWpy7crXzMb7O3219Zvl3mu2/czfv3t9IApxJKW8k/md5RTZ3/fuzu7dmXgdi3WqCcdktstsku1KCrwzUf/7UMQGgAsVN4WjGGPxXyautGGb1qsjAsRbKxruCj80UsQ2vLwAE/ChFSsEHY/nwb/woievMiDEf6u9p0s+nhXRxZF95k2ZmQAGYJu+Yy0hieg3lP+lsXyAhlELzHYBuKglOJuNNtJOAAgBJ0FqQBBGEZnnUgkZvVdmZ/mtHP3ePxvL1SX78ZTtvaf8ycvXiw+/H/w3/LfI/py9K00o5K38yhcchUr6XtJVvdxWdzlp9yZ1qDAcTfPVAABYlJJShiJO2M+XUsVH7VyKNTqmLbb/+0DEC4AKmRNjR5ip0Vam7ajDDD5SgUhRxz0rlIvk/e6R6E0Uotm86XdXUVI+5sg5LyjVsm1lP9dP++owHGkGM7KJIgprGuIsYdQGQUEQfO7IBBFbtJIoqAVBKAVHxBsmxHR6qtFK1b4MXJFbQDQ4LZHyK7RQhAsvzjn+vST6XmbFHVAcQX2WTIR1GUPI3/uxGRuC9Vzpsdmfhy/nSAz6P0yE1zz+gWJKACQSU7gfMF8E82sstv/7UMQGgAtlEVbsJGlBYCet6PQNvlNDDKiT/KlFBJExEihdVd9MTRpLhH6s87wdkbKQlM28sHkacu3mfDiFOajGakZ+QRzMicfZgRlkSqeZBBZg0U/VmJ/cGakUnlh2BHr9d4qNXpppJQEUlnCE0XgS3vnsSV6F130dxidKq6RmM6LPVbt44+5OmbRZyQpXSFOTN+b7GeVcly3kM7WwWiAIQCEjFHRiL9vbuXDlrfSbv/8hqrsARYQ3jxFVBGFtqZsCJVrjiaHnOoMt+qtrLzP/+0DECgALCTNpJ5ir8V+mbGTxlnble8QU2f4Dx3ELd6Qc/zfelQ7X1HNVCIZTrLoitiREMUhSse7K2VRIyFKrbVJlERwSDgyxkYcVF0Exd5MpNUezRV7WeggAVmVRwFcBuQ9qvZdWcrSeDNet64p6b+GsvQK4CiCzB61ygzo1wfPW3gcfy5FCCj3DQw9PN/KjE9LWPmr4ilvYy37gdms+dlTRDKjd4qisrxgfEods5gwqATVZVf/7UMQCAArVM2MnjQ/xR6KspJMM/0oHAjWLLFAQ20HWojbW+aM8U4RHBRBGuCYEhYW1KqeU8YjpXyrZd65FISloCTdGGNn/d/2n/bXPd3Wk/9nBUPnHDKWDR8XbFDCDGlb59o+IgepAASLNSliMDI+GG1SaZ2gAcLQrXXievH5yMsnu3Ik50kkcUhMXghfnIcMGe28D9HPXuwUjp51Ppl/H7x34+Ween+4IUB5tmcBXmzCCbmuMvfgDujAEaSSSKgMwZRKOosc1VCDiRTVCTjP/+0DECwAKuTVnR6RgcWAmbSjDIC9RxP1zFDgLtAyubnkky6n32yLh1xYcJVBVZQyFL0EwY3POBCBJMs+VEO+6f+oci9uERfeBf//44B6ow4lBHxWwCZaym0jICsLCgVacE7XsCYuylheYelWUq9cbGk+qio0bo9lBmYhm5TlMslXcgek3umWtw1ObxdIiXGvf2Puf+fib+ix4S72eNLT4vYWENmGTeMbjn/KlmgRVWKlbAZJuQP/7UMQEgArJNWEnjLPxXKYtKMMgH4s8efDDaDBg/5ixrX3bP1BFh1WwsL4cPy4hkNbwNLh4Vy+wnoCCQ7nTgLpH1FJTM+KGMlK0cZmHh5TCn2BwdxhdnLvuoTRVWmrN1MEqgVdrTbSTgFQzLhDQzlUli4YLjWSnWoxJvUnDi8VrjersRj7xm2Zpxc8jRNb90ww+/bh7FemTmSF4/vmuKdJitV47iObYqCw4SXqma4t5qm2nle4qOcjTdQBpraSSMgFhLI9fbfq/FWNjHv2O/bb/+0DECwAKkTVpRgjT8VQia6WHoAauT4wqpQEAO4x0IZnM6F2qrVfqVvorC1VqMEAlu7FCkIrU6/Oqt9CN8yQwySviU0aXkywrCkZdn3w8t5pHEIABAJWUkHlh0ClYwQs0aZAhjXH3Ewhsz3KFy8JAioUZcNNRjBl38ySc+l3i8U1Q4+vadnehptJc8TpMa8Tj7rhc2u/2u655JHEsrO9+PnsZiLRIXt6VBumtJtJOApdJWJR7B//7QMQGgApFNWdHmGf5YaItNJMh3yRBqMIEkn2PnrJ+pTdQ/kHnUBnJoUsaIECnzp3rvHZKWc1Wgm35Dxh8i/sLTgYh4SkV6ZEWTZOTNsRLfOi0+z8iks1Bc4BDSacabbUgBvAy9tvbJQEtFJrkrgzsa7wogFI10HGHWhX35BtPMztJnPFJvf42YLJ6uYiwl1Xn9rf+2kiedZNqI7/q1rlFCAOj1MRJmkdLnERET+n7nYClAIQw//tQxAGCCsD3UqwlAvFNompFgyE2ok/uTNcYJjqYVQWKUYoiUHAJixBU35R60nOVU30P6IHIsJ3BL1xcx47+3gsoypi+zhWuElBWB9ot/xVFNh04/ZoX04uqaBMcbJsiMDjWHz4nn+k1jVAoqXJUmxSUPnGb0D0hqgfHWTnG1oleTupqraymueBuVr7mrTom/Ymvvs9z1n61luazDhU8jimhKd+LgiKGb19wWzdWNCi1T1Pc6Q0IHp1vXWoAIKck/BvmgTNb0aTrd5pESpabkf/7QMQKAApo8U7sjK2BU6KsaMGifloZiaHCgT40DAzGcKDp4xBcol7HrcSuseyahzshlcBrysSgk2r1KKnKhJ2u+6uqKvsZeqACB1g6FUHRUMO+6oEar0201GAaAeP2DJ+1aZD6w29u+y78e05Irjw1fx+B2IwQAEKbwGLvKXc6TeKIfh2FNaoM5g2MC3V5GbN4w5Bsv5y39KAEFxdDu1jPT5xKLO8gW8fVAAAJJQQEMtWdnL9W//tAxAYCCpUVUS0gT/ldnmkNthjZIlUnaeG7nI5LsqtWtaHI+6DYc2ySpJaXWuKp2Fj2xxtVrXMqRNXTKUFzChi2W5QdvBNVM9u115kHBvt2RnuhQoN0ehiP9XBq2AknMAYpNGTEqmjkNhSShhMYrAdLR8E3NmSAtLrTvKM3GY9RIVW19f2lnd4c4gpnfv/A3/L1zGm+74/Lbdm7ZbTN79nG/azzqr78/q6be+BBRaFXvv/ACgD/+1DEAIIKrRVZLCTBsVqiqI2jIeAFbqqcBCVjQkcjOrIiOScUCilTHDohtN0QHOJ+cwxXpNe7EMY9xc9Sc43/ukd+us1WKhnk6GFbPxRp7z2f8xzJ+v91Ctjv/9rP7s0lBu/PLS396xlBFpOgAoAddoMDpM/TdKZUxMAqxl6YnZduGYxGbPL7GIhQ47jnxMUDZJJVXkWhM1NLosebvPCdF078LF32K91tAiLEJxt7dVCr8f/dzU/QUmu+P26+6NUFEN4AU0OFgLmoSXiZTNNT//tAxAgACqEVQmykq4Ffoquo8yG2UUnmkTQFnx2QaBBJEbUJmF0ibG9QwWSWr7Tr6WK7YwQYzr2FbFdHRbI/oPLIx0LFipXk6IVFf0xY7rwUejPJLlalxx0qAC6tONtMA5SYqCDSXMeDqFBRhbmkxCzao7Hu55svitIPsIq6ZxaBo8u9MHB578tRZHtDQYXI2XurwANttRRimz5DwTd28ZNK1pH31stKOMVVuV+av9hhsCSTJwD/+1DEAgAKwPlEbI0zyV2f6eWRmX/3+N2lSKRzBZIxd321pZRXfu1D9apailmks5b1ShnSqzwItoZCqAcOkh0UPJ/rqW/Pift8AjypDgJidTe2ijk0HKGhF2lPIgYIbfrE5Fl5r0H7ABQYWZgNqMQmwRInJlfYjFpdHLRAgMGESxPSDOihxuNClBk1M6a5Wiv69nlsPaWZZSMI1tO/hDwRgoJlx1MiRnah8yuv3jpx9ztWPJdDH1v2NqLGcDVklQAFeKTSUAMoEoHOjJwgifjN//tAxAiCCp0VV0wZA/lsImgNpiD1oGOg0/5u0NSk4bGfKww+44Ni2Ksme+W+T7i5JO9pOg85ut9omqW4qlTrv5RvkbWPt1+EU6Y0lh5kWlprCXeciBE0vEQBRKgB6F4CviUJWpe6kVBXEDR85N2TZEceHjZFRttt67HVe/zzBsUlaKQMqZhpqBG6MiZGWfV1DzY6n2jqTLRZmLV6mLpKn7i4F6rRuJeVjrMBcnKz8c/c48dMABD/+1DEAQAK+QFPLCTF+U6WZ02zDdgcqqwI3s0Ij3oIkDBjS6NpSSuaS1s8q2lhORoZPl/P1ZJrhqan8tZi8ufn/W37aUfasyHkvkNvaxsZU5jatqnuVS2SQxf/3rjtsoCzHp75cwgqmyuncAJUlAOKNzFCoWTBZaRUL/MUjCBsanoadBypuanXHJpjUjGBRRJZp0ZBROVV+tRgYVS9YnMuNIXzNhA08paZkJrwhQuljJgJPWKB4fjxWJRCE+utFQAirKB3rFoigBi72KKtfZpE//tAxAiCChjVQsykafFTFeaNt40xLD4th43M00oYihvyUQvarZHVz1Q4VajV5XPMwiwh/1gslMJgzDoXcF0HTZDhsENvLXfDJwUYxriUDmT5l/RYSABlwAOYmQqkmBg4GNAsGp5Bgo3QLBqbxdyUhij+cj9UROV2wQ2PbDdhIY/jYi0S3g3gmYvajI0KeN+Dm15fh5BFRSVc63fIgGPuLKHZalYCO6mdoOUAILbsABu5RnOhd5T/+0DEBgIJhL8+7TBnUVgWZk3MoDjJn9di0NpwKnBWE84SXWHyQ/r72XO0HAXmVfhAjjbmAggFVjHMoS4ARmJQ4Rm+X4mHvMcSEQTscUEcB9CEOsI0AF3YAGXLeYcP52RiSCNQGRECSOsuUOas7SmqlzPGav/BXXjik+H+HIKbD2Q9VVFCBAFcY8NjM27S6Pvs2lrs3i0uFSLh+1Oi/VZpFGNMrBLOZ5RcyMQqACdAAOmWPPlOwv/7QMQFAgpssyxtMG8JUZhmHaSOSPMwXJrgiDExM0J0wYIkApfpETKRTCV9p0QOAVUWBKsHIlkAwQCGY3jJ6gqwwRJfznXamZZmAlb7qh3yI8ODfriPk+o2F2CpfH4BALnoAPx+OmzMszX0HKhpiYQUBh7E2QL8V63JcixJlH51HfizXX1tU08o4IoH1E4KKH07z2Kkjlc4cOHVIAcpul38j/3IqRhgZiDCQviBnPQdOu+mADmo//tAxAGCCmSzLm2kbsE1GGddphiyAMZZDhbFkgOPlPpZJzDQOu0RgaBbWW5l7kFFTKONniRoiiekINBkxLRcsHyx1HKANVnEIcHfUU5d6WvmAw4ZvtkVzLWmwURB3MUeeqxM+7SUFOWAA3bs9AIt4BQLIlvC4Mi2VlDrZILKmR+VG4jX1qR5C0dB2pdFVpQva76xTvT9Cu9osfq8qYb0yezuu/uMdNinvnx8udsDwI+zxNUFXfD/+0DEAYMJYLMybbBswUSX5c22DagAFyBpY+mWrxhZaVc6ETFGl08UXKwCYYXjEVhXYrvfEdI/id4YQVhMEHvcEdRfAm6eCN2EthmzVlVKtuh+OUXYMLGGsKzUYq0BS+AA/0vNjNTLWJLwaAEqgEDEwHIC9kCOShyQUYkOQVjiOyYyJ1CbQpQYdoncXQyzfupf2VOnQ5Hgx5m0W0TGX+SyGvqpEj0gMPbacMEQdRQqBU/AAPecDf/7QMQDgwoIwS5tsG1JNhdljbYJ4WiYwJECDkEBSJAOHZMttPttX7Z7DLExSAIceNVzBW7YTrMNFKL22U97QPxLJYctbHIwNkpTw5fDaaBw1BG9qDJoRIIYkdVqQTFBUmAAOzhykiM1Lh5ISgSHMTCQMJpPrdZ1D69m8h2EqOvuO4LvSSbpROIqb2IH4Ngeu3W9KJPwiAnuw6GBBUaQtjPJs6tXfOyQdkoC4lIG8AOU/jTEI5IN//tAxAUDCTCVLE2kbxk2j6TNzCRxKqHHkeUBay2JJBvczBWyIpiQKpGLBkhLmQ8bgHxaC62xOroEcYnmviTdvunWHvSygnmXowvYGZxUAmga3cu/MAOQAA4KxTFjMEjSCicisanG1Js66oWOytu8BJ7I4v5FmgtycZXk5YoOCA3bQoPitEmeapQobr0+v9qPdv+1eVFpOqTkquvtbv31+GOu1QCnAADtRVMUOUzcBDI44AZZm8r/+zDECYIKJHckbmUDyRwVpx2mGN9QESCJIGKcVSwiBToIjZpcCF7CaVqMxTxeQp2ALALFKeEoaB4RRhiBid24ZS+dPefJzydMzFU++nhJxJP+iayXGwADllB5qRG1RJArgXyvwWGK59GkQHUxMTMLhcJsZUastOC/Tf/4s8cQ001DMzBIXkogTl+E61/M5qcan2y/JsyOWMajKgD/+zDEAIBISIVLrCTH+QuP5c28GC0BDE3JdaAATILYttbu1srFrEJrscMAWhxKoTZ6cqSVbGSSCjdn2k2uSwhFVmsjjGTMTeBliVv9gkXAGRMu1f/Lg4KWnLoIk1gtAsFgyVygwUQ6bM4/FKZ1m4iAgMAgUwMVJEmmz6xfMJM3ZF+Ufz3m1WZDybpeWMT4j2+u+OvuxmLvml1VADj/+0DEAQMI/FEibmUhyVETY83cIHnAANoYoylIgxU63lOmfm0wNcBQwAnJoLBlvGKKDOe5S75toLYZlsoBgFAkaKG0S9KKyRvdqMOhesadwNNJthPrUPvR3922AZEAAY5TaCEFM6CjMQw3AwBBhENOEueONAUltI1AYScTDK7J3oYQ0V3nQ3A6nIfBwHAYCEVD84MOUNCsSNg/Raq49bFSGqWds2aeqWDqgY8VDsz9qgLAA2jh4//7QMQDAwnsfxxO6MXJMI/kDcygeDgV0zfBUeGsMBcwpC44zYUBBmUVLNuJKxoQoKgSi7DmR3ptX7sOVHKdmKkJa3sfukVjao3gZRmsDPNRmsV/pB87MX8nkRV03pugKRgAH1h2ZLFA0vjBIdHlhFSxtEcwBEP23ayrVHVBGnMrhiTtdl9PFZTkqqCKFHiQaOKIIpBg5e9jpfqHheIH2xrHgcYcAgrgvrVc+gAAgSYnLGAAB4mY//swxAWACLCHO6ywxfkbjuSNthkZg0ZUi97wVRnpCHOJhJEh1drR1ynUKpEZ0Zl140f8MpMZhsyhplPZ6NuMXemWbckcNLwSazA8CH69/6Be1AANwLD9kAvAJAqw6dKV6XaaiM4KGYDxOHFoNDcsCGWF5E4EJI6CXtwmNnyQr8xXyMmMWNZ1mI82VXLka2IqQhbfsfvSlQuQA8k7//tAxAKDCaRrGE5lg4k2kONJ3SQ4xLxGoBOZ8AI6CZkJtnCZ5MSPIMvSLByAqQgpfjTwqqwKxNzgUXLScHpmc8XmUXv+xp+/l4Gf5qGN263hpQHkRj5VH7/39f79g/ABz2yxhiHJs+pqDCNqS4BDmRIN+VQMaXOgLR1EIB4FkIfylMpl73guFQRA8M4SkM3EkoQ8Qr1s+3ubl2xcPCoyq8l3txvDqXhQc+mpACEs0AAeSDoGyJn/+0DEBYJI+IUi7jzHaSuQ4oncsGiMTCMQoDkRS25fIkQGA/TkGw8W1EX9HM7KkJGDuJ0kbK1AkXn16CFo28ckVHdu3vpQlGOUed6Wa9PbLudsHT2FWzSQFzNUCAMCxzan+4YQqRyZQJNRdWQMGkwBeBR1RB0SUIo4llgXiITxgOKeGB012Djjj5621dg/tr0GW3bUm+1tm45acStaAGpdGAAaxfERmd0POoow4vyxAHRIfLI0Av/7MMQMgggQaybt4YChMw1iidykeGPlkNAbghZYZejZ22cx2bq9tnustgtbsn6NecCJ54eCciNSaoenToBoADU6HzWkdDLQNgAIxuDl1RQ8BSC9BokMSKwUEpKEGKP8wpl6OFG20acKWPe86GaNNAmOyWz2tLXwzGalng/pCBM2Bi8rE9YiJ+xyKhuQA/acDBIZMkjEw6IgG6dJiv/7MMQJAwjEbRZOZSOBHo0iid0wKKpmEGgEOEozxcucx4axkjCWhQK0x1nzWNiEkWYe1K5N5F9ptw93mS2t7muLBWKwBnXir/UPgAHChzGsyMG8OHjmjV0HbSKSZ4YW1HBCA6HEvUGELB/OggEQCyglFgrkgYnLBbVtxKObddmC1/rHzP7bGng2DATW8iE//6YGAAM/c7MXT/GgIP/7QMQFg0nwaxBO5SPBLAuiSdwYeMGhOFUDH/EiCdEILDGZ1QwKtAUYEAl3UqUi0x3XSwlsFzz0OEIUAaaISAI04xKKcq9vqV577sOmp8PERD+39//7f/2eoGTbGTDAoojEkHgEJZ5MWAlsAyh1SXaglkxQADCSTaGxhdynUMxV7I1EJVI/I5a6l0Zdl/KaekIhwqMQEBoqwZL3Pb/////////+6h9AA8Mdkw3Kow2JMxDEwwBA//swxAiCSMBrEk7lg0EMDSLZ3LAshwC0GtCGBiIFNRNNIouq/SwDVVWkcJFSxoOLauKmQ3XT/xduRbamR413s2fiGgUJNJD9lWkK+HKorGF5mhTEAxkRpqhGIdbe9Vagla1YvGD0SFwUFM3RoR1el1l2pSGsLNWsSTvy99vot+i8kOB0gRiwT1YtbfsoAAAAAgkjAAB6LNGViYcf//swxAeCSRxrF65lIYkxDWHF3CRypEkRRCSBjpIqO6u91WYMuXyt1gELiYCkjMcjAHBEKiQ0CMY6nCKOsS7ZSnRnOEWOVkBz0w3UufZH0mMa5zM5VkMTCPMeRSMpQxhq8Nfh5dC74gFAreCKLxZq/DgQ5doGBVombOHRdEpCcqq5wdls+8hvx0hdoImT7CSqtfxF9P9nb/q///XV//tAxAACychPDk7pIcENCeHV3Jg4GgADkOnDHgMj/STUCRUABVBiBRn2RMaSLgoLgy1zDSIKyh2mIsrfeJwkgGlVzPYacxO24WicCgwRg2NKCHRNJ/Rvd8q51H7rv/6v/+n6QnnSng52T5HAI4skQMroBZSF6mDS00gYC1sMBpG71HmkLV9880ACsutaMVeQmZATUmxwqwUQl5ER3f/////9GBf9fvUAAAl4AA7XJw03CAy6Daf/+zDEB4JIrF8PLuUhgRkNYdnMIHDUCLkgIIOnJji7zYWYqTYUv2Lwa7TZkBlD4noHhNEgMG4EMVc+XP+T+k8sFiYSZCbA2Hr9aaEhPg9RlDI5JFAsEJQLeHFAoIt9CJmLYJIlyz+HZNTuZAkzDtPJlAMzDQ/pOT5NkdVe6LvD7kjD6FSRL//////q/r6f/1eQaj5AAKymYkEocAn/+0DEBQNI6F0OTukhQSoMIYnMmHCaJWLQC14oDARtHJXz7MwWd79MCADQKhQEVGloiD6y+SVtw3wI5VHHtvYSKixCTsFBdSX////7//935X9zR0PR9Y1sNwNBSgYHEMIhQASDk3LUNQNfdHBZbOY3YfGBJdFsQAD0QdGdcqNNfzPZTRvLsBigw4kc15f9Hu42i/9fV/t7f/d7uzhGYA5QTcwJB85PTGAHlTseEbaOKnTxLvn2TP/7MMQMg0k0Zwou5MHRKg0hSd0YMEgbeOJp/pPD9Hwmfg+BZb0ZeXs7CzrpmZ20+VXcnvei7vpFv9qf/sv+izWxCvo/20roPgWZBlUbhQHyFKIoQDWYNxLmuS3rMLKeLbvC7IWE4tEyiCFz3fliL+ZT/Phu6QpCQSC6bI1Hr/09FFKLLuP/1I+zq6T73X9Py9UALUgAe82GmSZiyv/7QMQFgklIOQzN5MGBN4bhSbykKKHOyWlTfAwkbUqg94Iu4bLIw8DbD4CUmq7GnicEAWFmpDkChMOjzo4GSA1gu0WYBjikft/6un/1/o39F77e+hZDZj04wLPMEchCPl6sjAgBQEwN+YmvBxaUBRsUIKFdZuqsh954WLlV3gdhkXfHrF1Jj1u1uusFiiU1/kndSW3fWnr2nEWbEI6b61MFdKoAbUAAfChHevBsG8wYpeURSQbZ//swxAmCyIA1DM3hIMELi2FBvIw4wFlROygCwYM5SPVrpkCmwyokZIiQ0YQwksiJmqc9i1zH4p6vXPf0dHu/Zb7NlXq2aDzCoxVVMTY9TSIllKvChxlT1xrUESW9JZu/Zj/cMFA3VR5mRL0sGw20aBlmwMgghALv7Gt/9m7/ovq2Xf1r+28ZZ9MZAANHxTDlIWCKHUPCxVWF7ToJ//tAxAmDSmwrCE3h4IEkDeEJvBQoRI0DLViebmFUs7a8Ax4iZBfAhEakAkyQ0qDzWGCQaYm1pmKSTsa2voFd7C59NNcczoUxl5lLmr6YpbQ2S9iGLUUhr9QauLniwHGoOhwWQoK5kFwBLYYktdsPBAVTVDKuTfO53YjXIl3S4vUhqS9XPX2JurasU+6pl70i3jmHEPSjc30+a9F9Y3JqZQADlG0x5LQAI4KrssSoQEgyQGgaGxD/+zDEC4NJdHMITaRnARULYMmmDOCspDmloyhzQ96zWWlQYjM3TnlHhQGGWlZQoh0pOXsnUUInfQ+UehNbVrFn6l00UXs7/5zqWSh9TokeIliKCgaerGHvGRPNX0nrMs8is9cjVle7tElMOJwdWi0jlg6IwMaLB4KAdpJpze3wJVK7CUbW0xv//V/0Ju/o2xjEFiqXKIb6K8SGkYT/+0DEBoNKDEEEDTBmwS2QIIW3oFBKb6J5fNIW6VBhKX6CzIEBxABBQ8aBIc4mYEYaHBNUcYFgCGRY4liwHGKSlAVl3rbIkaEE7uw9Zc+511r2rQunR7WdXjcJtliCroK5IIohxDn+YDymsKmmsZF7vWN6i3OlxUebCPUWrTVZeYl1mPFmLPrLARTj1sLNUYW7ih+XsNDWvucCB1v91nZdt/0/oUAOdeC0iQMDN0XvDSVzr1ZoFf/7QMQJAko0ZwItmGiBMJRgWaYYSCKSNP5JQWsYWlWoCXEPj+muEUWOCAwMlYjWWEQ8cTEjECQxMvSfLJ1HWHjTklUy4Xfimp86QbwlI4vvs09er1hak+0kRExoGsriy+LyBJg5wk2DZlVWbi7EeCzabvJ5IV0q1I3T9fIedIn4Rfy3MTTwxvt1refeGI0WaRdS9+V2Jo2fFF7P0v3Zj9mlOKkBQ9mzuCLZAF5iibnjhBTIWkIS//tAxAqDygx0/g0wwwEyCd9BlhiQiTSyC9cimcnE0SbtiDvMvOu23layJQHRC8JqRCRsBzKxjAdHUiyBIfONSWqKtlkVbV7RSjT23apX6m3DZCZqAtNRi8GFV4shUW3oHESCqLCZxVwTKgwk0kkdj6mAwqyChgMJOkQMfEJ5oTOPlCKhaksNBO0e/ELiiJYclNa9+y7b3V7OtPb/1CAMMEooCVMbJgMgk4dPkoVYIUQpk9zS01v/+yDEDINJzG74LCRjwIIE3ISTGBUFVVlJloCUOOVnmMHEC0sgwEBwcJRw41CjQVFSoSSxgNXLKqktCjSpo09t6NvUmxTa/+/o/awKlCaC0SQKKAiaC1JInGlgaoMShu//qmWCagxYJKX/+0xBTUUzLjk4LjJVVVVVVVVVVVVVVVVV//sQxAuDwAABpAAAACAAADSAAAAEVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVX/+xDENQPAAAGkAAAAIAAANIAAAARVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVQ==";
+	sound.src = audiotagAudioSprite;
+	sound.load();
+	console.log("--audiotagCreateChannel "+index);
+}
+
+function at_imp_mandreel_audio_playChannel(filename,channel,vol,loop,pitch)
+{
+	at_imp_mandreel_audio_stopChannel(channel);
+	var fileNameNoExt = wa_getFileNameNoExt(filename);
+	var time = maudioSecondsPos[fileNameNoExt];
+	if ( time != null )
+	{
+		console.log("play "+fileNameNoExt+" "+time);
+		if ( maudiotagAvailableChannels.length > 0 )
+		{
+			var sound = maudiotagAvailableChannels.pop();
+			var duration = maudiotagDurations[fileNameNoExt];
+			sound.currentTime = time;
+			console.log("OK "+sound.currentTime);
+			sound.play();
+			maudiotagChannels[channel] = sound;
+			maudioChannelEnd[channel] = time+(duration/1000.0);
+		}
+	}
+	else
+	{
+		console.log("not found play "+fileNameNoExt);
+	}
+}
+
+function at_imp_mandreel_audio_stopChannel(channel)
+{
+	var sound = maudiotagChannels[channel];
+	if ( sound != null )
+	{
+		sound.pause();
+		maudiotagAvailableChannels.push(sound);
+		maudiotagChannels[channel] = null;
+	}
+}
+
+var mandreel_flash_socket_callback = null
+
+function mandreel_flash_sockets_load_flash(callback)
+{
+	mandreel_flash_socket_callback = callback;
+	var failed = "";
+	try
+	{
+		var mandreelSocketsSwf = g_mandreel_working_folder+"mandreelflashsockets.swf";
+		var swf = swfobject.createSWF({ data:mandreelSocketsSwf, width:"0", height:"0", allowScriptAccess:"always" }, { menu:"false" }, "FlashDivSockets");
+		if ( !swf )
+			failed  = "Unable to open MandreelFlashSockets.swf";
+	}
+	catch(err)
+	{
+		failed  = err;
+	}
+}
+
+var js_mandreel_flash_socket_swf_loaded = false;
+
+function js_mandreel_flash_socket_ready()
+{
+	js_mandreel_flash_socket_swf_loaded = true;
+	if (mandreel_flash_socket_callback)
+		mandreel_flash_socket_callback();
+}
+
+
+function Mandreel_Socket_InitLibrary(sp)
+{
+	//mandreel_flash_sockets_load_flash();
+}
+
+
+function mandreel_flash_sockets_getFlashMovieObject(movieName)
+{
+	if (Mandreel_window.document[movieName])
+	{
+		return Mandreel_window.document[movieName];
+	}
+	if (navigator.appName.indexOf("Microsoft Internet")==-1)
+	{
+		if (document.embeds && document.embeds[movieName])
+			return document.embeds[movieName];
+	}
+	else
+	{
+		return document.getElementById(movieName);
+	}
+}
+
+function js_mandreel_flash_socket_onError(message)
+{
+	var id = parseInt(message);
+
+	var sp = g_stack_pointer+512*1024;
+
+	dump('on error ' + id);
+
+	heap32[sp>>2] = id;
+	mandreel_flash_tcp_onError(sp);
+
+}
+function js_mandreel_flash_socket_onConnect(message)
+{
+	var id = parseInt(message);
+
+	var sp = g_stack_pointer+512*1024;
+
+	dump('connected ' + id);
+
+	heap32[sp>>2] = id;
+	mandreel_flash_tcp_onConnect(sp);
+}
+
+function js_mandreel_flash_tcp_receive_callbak(message)
+{
+	var strings = message.split(' ');
+
+	var id = parseInt(strings[0]);
+	var data = strings[1];
+
+	var sp = g_stack_pointer+512*1024;
+
+	var data_ptr = sp + 1024;
+	fill_ptr_from_string(data_ptr,data);
+
+	heap32[sp>>2] = id;
+	heap32[(sp+4)>>2] = data_ptr;
+	mandreel_flash_tcp_receive_callbak(sp);
+}
+
+function js_mandreel_flash_tcp_update(sp)
+{
+	var id = heap32[sp>>2];sp+=4;
+	var size = heap32[sp>>2];sp+=4;
+
+	var flashMovie=mandreel_flash_sockets_getFlashMovieObject("FlashDivSockets");
+	flashMovie.receiveMessage("receive " + id + " " + size);
+}
+
+function js_mandreel_flash_tcp_create(sp)
+{
+	var id = heap32[sp>>2];sp+=4;
+
+	var flashMovie=mandreel_flash_sockets_getFlashMovieObject("FlashDivSockets");
+	flashMovie.receiveMessage("create " + id);
+}
+
+function js_mandreel_flash_tcp_connectTo(sp)
+{
+	var id = heap32[sp>>2];sp+=4;
+	var ptr_string = heap32[sp>>2];sp+=4;
+	var port = heap32[sp>>2];sp+=4;
+
+	var server_name = get_string_from_ptr(ptr_string);
+
+	var flashMovie=mandreel_flash_sockets_getFlashMovieObject("FlashDivSockets");
+	flashMovie.receiveMessage("connect " + id + " " + server_name + " " + port);
+}
+
+function js_mandreel_flash_tcp_close(sp)
+{
+	var id = heap32[sp>>2];sp+=4;
+
+
+	var flashMovie=mandreel_flash_sockets_getFlashMovieObject("FlashDivSockets");
+	flashMovie.receiveMessage("close " + id);
+	dump("js_mandreel_flash_tcp_close " + id);
+}
+function js_mandreel_flash_tcp_write(sp)
+{
+	var id = heap32[sp>>2];sp+=4;
+	var ptr = heap32[sp>>2];sp+=4;
+
+	var message = get_string_from_ptr(ptr);
+
+	dump('js_mandreel_flash_tcp_write ' + message);
+
+	var flashMovie=mandreel_flash_sockets_getFlashMovieObject("FlashDivSockets");
+	r_g0 = flashMovie.receiveMessage("send " + id + " " + message);
+}
+
+
+
+function js_mandreel_flash_tcp_dump(msg)
+{
+	dump(msg);
+}
+
+function _GLOBAL__I_Landscape02Vtx(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+var __label__ = 0;
+	i7 = sp + -8;var g0 = i7>>2; // save stack
+	r0 = _ZL10raycastBar;
+	heap32[(g0)] = 8;
+	r0 = r0 >> 2;
+	_Znwj(i7);
+	heap32[(r0+10006)] = r_g0;
+	heap32[(g0)] = r_g0;
+	heap32[(g0+1)] = 0;
+	gettimeofday(i7);
+	heap32[(r0+10001)] = 0;
+	heap32[(r0+10005)] = 0;
+	heap32[(r0+10004)] = 9999;
+	heap32[(r0+10003)] = 0;
+	heap32[(r0+10002)] = 0;
+	return;
+}
+
+function _GLOBAL__D_Landscape02Vtx(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+var __label__ = 0;
+	i7 = sp + -8;var g0 = i7>>2; // save stack
+	r0 = _ZL10raycastBar;
+	r0 = r0 >> 2;
+	r0 = heap32[(r0+10006)];
+	heap32[(g0)] = r0;
+	_ZdlPv(i7);
+	return;
+}
+
+function _ZN15DemoApplication6myinitEv(sp)
+{
+	var i7;
+	var fp = sp>>2;
+var __label__ = 0;
+	i7 = sp + 0;var g0 = i7>>2; // save stack
+	return;
+}
+
+function _ZN15DemoApplication16getDynamicsWorldEv(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+var __label__ = 0;
+	i7 = sp + 0;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r0 = r0 >> 2;
+	r0 = heap32[(r0+1)];
+	r_g0 = r0;
+	return;
+}
+
+function _ZNK16btCollisionWorld17RayResultCallback14needsCollisionEP17btBroadphaseProxy(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+var __label__ = 0;
+	i7 = sp + 0;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = heap32[(fp+1)];
+	r2 = heapU16[(r0+14)>>1];
+	r3 = heapU16[(r1+4)>>1];
+	r2 = r2 & r3;
+	r2 = r2 & 65535;
+	if(r2 ==0) //_LBB4_2
+{
+	r0 = 0;
+	r_g0 = r0;
+	return;
+}
+else{
+	r1 = heapU16[(r1+6)>>1];
+	r0 = heapU16[(r0+12)>>1];
+	r0 = r1 & r0;
+	r0 = r0 & 65535;
+	r1 = 0;
+	r0 = r0 != r1;
+	r0 = r0 & 1;
+	r_g0 = r0;
+	return;
+}
+}
+
+function _ZN16btCollisionWorld24ClosestRayResultCallbackD1Ev(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+var __label__ = 0;
+	i7 = sp + 0;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = _ZTVN16btCollisionWorld24ClosestRayResultCallbackE;
+	r0 = r0 >> 2;
+	r1 = (r1 + 8)|0;
+	heap32[(r0)] = r1;
+	return;
+}
+
+function _ZN16btCollisionWorld24ClosestRayResultCallbackD0Ev(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+var __label__ = 0;
+	i7 = sp + -8;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = _ZTVN16btCollisionWorld24ClosestRayResultCallbackE;
+	r2 = r0 >> 2;
+	r1 = (r1 + 8)|0;
+	heap32[(r2)] = r1;
+	heap32[(g0)] = r0;
+	_ZdlPv(i7);
+	return;
+}
+
+function _ZN16btCollisionWorld24ClosestRayResultCallback15addSingleResultERNS_14LocalRayResultEb(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var f0;
+	var f1;
+	var f2;
+	var f3;
+	var f4;
+	var f5;
+	var f6;
+	var f7;
+	var f8;
+	var f9;
+	var f10;
+	var f11;
+var __label__ = 0;
+	i7 = sp + -16;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp+1)];
+	r0 = r0 >> 2;
+	r1 = heap32[(fp)];
+	f0 = heapFloat[(r0+6)];
+	r1 = r1 >> 2;
+	f1 = heapFloat[(r1+1)];
+	if(f0 <=f1) //_LBB7_2
+{
+	r2 = heap32[(fp+2)];
+	heapFloat[(r1+1)] = f0;
+	r3 = heap32[(r0)];
+	heap32[(r1+2)] = r3;
+	if(r2 ==0) //_LBB7_4
+{
+	r2 = r3 >> 2;
+	f0 = heapFloat[(r0+2)];
+	f1 = heapFloat[(r2+1)];
+	f2 = heapFloat[(r0+3)];
+	f3 = heapFloat[(r2+2)];
+	f4 = heapFloat[(r2+5)];
+	f5 = heapFloat[(r2+6)];
+	f1 = f1*f0;
+	f3 = f3*f2;
+	f6 = heapFloat[(r0+4)];
+	f7 = heapFloat[(r2+3)];
+	f8 = heapFloat[(r2+9)];
+	f9 = heapFloat[(r2+10)];
+	f10 = heapFloat[(r2+11)];
+	f11 = heapFloat[(r2+7)];
+	f4 = f4*f0;
+	f5 = f5*f2;
+	f1 = f1+f3;
+	f3 = f7*f6;
+	f0 = f8*f0;
+	f2 = f9*f2;
+	f4 = f4+f5;
+	f5 = f11*f6;
+	f1 = f1+f3;
+	f0 = f0+f2;
+	f2 = f10*f6;
+	f3 = f4+f5;
+	heapFloat[(r1+13)] = f1;
+	f0 = f0+f2;
+	heapFloat[(r1+14)] = f3;
+	heapFloat[(r1+15)] = f0;
+	heap32[(r1+16)] = 0;
+}
+else{
+	heap32[(r1+13)] = heap32[(r0+2)];
+	heap32[(r1+14)] = heap32[(r0+3)];
+	heap32[(r1+15)] = heap32[(r0+4)];
+	heap32[(r1+16)] = heap32[(r0+5)];
+}
+	f0 =                         1;
+	f1 = heapFloat[(r0+6)];
+	f2 = heapFloat[(r1+9)];
+	f3 = heapFloat[(r1+5)];
+	f0 = f0-f1;
+	f3 = f3*f0;
+	f2 = f2*f1;
+	f2 = f3+f2;
+	heapFloat[(r1+17)] = f2;
+	f2 = heapFloat[(r1+6)];
+	f3 = heapFloat[(r1+10)];
+	f2 = f2*f0;
+	f3 = f3*f1;
+	f2 = f2+f3;
+	heapFloat[(r1+18)] = f2;
+	f2 = heapFloat[(r1+7)];
+	f3 = heapFloat[(r1+11)];
+	f0 = f2*f0;
+	f1 = f3*f1;
+	f0 = f0+f1;
+	heapFloat[(r1+19)] = f0;
+	f0 = heapFloat[(r0+6)];
+	f_g0 = f0;
+	return;
+}
+else{
+	r0 = _2E_str3;
+	r1 = _2E_str4;
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r1;
+	heap32[(g0+2)] = 250;
+	_assert(i7);
+}
+}
+
+function _ZN20btDefaultMotionStateD1Ev(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+var __label__ = 0;
+	i7 = sp + 0;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = _ZTV20btDefaultMotionState;
+	r0 = r0 >> 2;
+	r1 = (r1 + 8)|0;
+	heap32[(r0)] = r1;
+	return;
+}
+
+function _ZN20btDefaultMotionStateD0Ev(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+var __label__ = 0;
+	i7 = sp + -8;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = _ZTV20btDefaultMotionState;
+	r2 = r0 >> 2;
+	r1 = (r1 + 8)|0;
+	heap32[(r2)] = r1;
+	heap32[(g0)] = r0;
+	_ZdlPv(i7);
+	return;
+}
+
+function _ZNK20btDefaultMotionState17getWorldTransformER11btTransform(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var f0;
+	var f1;
+	var f2;
+	var f3;
+	var f4;
+	var f5;
+	var f6;
+	var f7;
+	var f8;
+	var f9;
+	var f10;
+	var f11;
+	var f12;
+	var f13;
+	var f14;
+	var f15;
+	var f16;
+	var f17;
+	var f18;
+	var f19;
+	var f20;
+	var f21;
+	var f22;
+	var f23;
+	var f24;
+	var f25;
+	var f26;
+	var f27;
+	var f28;
+	var f29;
+var __label__ = 0;
+	i7 = sp + 0;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r0 = r0 >> 2;
+	f0 = heapFloat[(r0+17)];
+	f1 = heapFloat[(r0+1)];
+	f2 = heapFloat[(r0+21)];
+	f3 = heapFloat[(r0+5)];
+	f4 = heapFloat[(r0+2)];
+	f5 = heapFloat[(r0+6)];
+	f6 = f1*f0;
+	f7 = f3*f2;
+	f8 = heapFloat[(r0+25)];
+	f9 = heapFloat[(r0+9)];
+	f10 = heapFloat[(r0+18)];
+	f11 = heapFloat[(r0+22)];
+	f12 = heapFloat[(r0+19)];
+	f13 = heapFloat[(r0+13)];
+	f14 = heapFloat[(r0+3)];
+	f15 = heapFloat[(r0+23)];
+	f16 = heapFloat[(r0+30)];
+	f17 = heapFloat[(r0+14)];
+	f18 = heapFloat[(r0+7)];
+	r1 = heap32[(fp+1)];
+	f19 = heapFloat[(r0+26)];
+	f20 = heapFloat[(r0+31)];
+	f21 = heapFloat[(r0+27)];
+	f22 = heapFloat[(r0+15)];
+	f23 = heapFloat[(r0+11)];
+	f24 = heapFloat[(r0+10)];
+	f25 = heapFloat[(r0+29)];
+	f26 = f4*f0;
+	f27 = f5*f2;
+	f6 = f6+f7;
+	f7 = f9*f8;
+	r0 = r1 >> 2;
+	f28 = f14*f0;
+	f29 = f18*f2;
+	f26 = f26+f27;
+	f27 = f24*f8;
+	f6 = f6+f7;
+	f7 = f28+f29;
+	f28 = f23*f8;
+	f26 = f26+f27;
+	heapFloat[(r0)] = f6;
+	f6 = f1*f10;
+	f27 = f3*f11;
+	f7 = f7+f28;
+	heapFloat[(r0+1)] = f26;
+	heapFloat[(r0+2)] = f7;
+	f7 = f4*f10;
+	f26 = f5*f11;
+	f6 = f6+f27;
+	f27 = f9*f19;
+	f28 = f14*f10;
+	f29 = f18*f11;
+	f7 = f7+f26;
+	f26 = f24*f19;
+	f6 = f6+f27;
+	heap32[(r0+3)] = 0;
+	f27 = f28+f29;
+	f28 = f23*f19;
+	f7 = f7+f26;
+	heapFloat[(r0+4)] = f6;
+	f1 = f1*f12;
+	f3 = f3*f15;
+	f6 = f27+f28;
+	heapFloat[(r0+5)] = f7;
+	heapFloat[(r0+6)] = f6;
+	f4 = f4*f12;
+	f5 = f5*f15;
+	f1 = f1+f3;
+	f3 = f9*f21;
+	f6 = -f25;
+	f7 = f14*f12;
+	f9 = f18*f15;
+	f4 = f4+f5;
+	f5 = f24*f21;
+	f1 = f1+f3;
+	heap32[(r0+7)] = 0;
+	f3 = f0*f13;
+	f14 = f2*f17;
+	f0 = f0*f6;
+	f2 = f2*f16;
+	f7 = f7+f9;
+	f9 = f23*f21;
+	f4 = f4+f5;
+	heapFloat[(r0+8)] = f1;
+	f1 = f10*f13;
+	f5 = f11*f17;
+	f10 = f10*f6;
+	f11 = f11*f16;
+	f3 = f3+f14;
+	f14 = f8*f22;
+	f0 = f0-f2;
+	f2 = f8*f20;
+	f7 = f7+f9;
+	heapFloat[(r0+9)] = f4;
+	heapFloat[(r0+10)] = f7;
+	f4 = f12*f13;
+	f7 = f15*f17;
+	f6 = f12*f6;
+	f8 = f15*f16;
+	f1 = f1+f5;
+	f5 = f19*f22;
+	f9 = f10-f11;
+	f10 = f19*f20;
+	f3 = f3+f14;
+	f0 = f0-f2;
+	f2 = f4+f7;
+	f4 = f21*f22;
+	f6 = f6-f8;
+	f7 = f21*f20;
+	f1 = f1+f5;
+	f5 = f9-f10;
+	f0 = f3+f0;
+	heap32[(r0+11)] = 0;
+	f2 = f2+f4;
+	f3 = f6-f7;
+	f1 = f1+f5;
+	heapFloat[(r0+12)] = f0;
+	f0 = f2+f3;
+	heapFloat[(r0+13)] = f1;
+	heapFloat[(r0+14)] = f0;
+	heap32[(r0+15)] = 0;
+	return;
+}
+
+function _ZN20btDefaultMotionState17setWorldTransformERK11btTransform(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var f0;
+	var f1;
+	var f2;
+	var f3;
+	var f4;
+	var f5;
+	var f6;
+	var f7;
+	var f8;
+	var f9;
+	var f10;
+	var f11;
+	var f12;
+	var f13;
+	var f14;
+	var f15;
+	var f16;
+	var f17;
+	var f18;
+	var f19;
+	var f20;
+	var f21;
+	var f22;
+	var f23;
+	var f24;
+	var f25;
+	var f26;
+	var f27;
+	var f28;
+	var f29;
+var __label__ = 0;
+	i7 = sp + 0;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = heap32[(fp+1)];
+	r0 = r0 >> 2;
+	r1 = r1 >> 2;
+	f0 = heapFloat[(r1)];
+	f1 = heapFloat[(r0+17)];
+	f2 = heapFloat[(r1+1)];
+	f3 = heapFloat[(r0+21)];
+	f4 = heapFloat[(r0+18)];
+	f5 = heapFloat[(r0+22)];
+	f6 = f1*f0;
+	f7 = f3*f2;
+	f8 = heapFloat[(r1+2)];
+	f9 = heapFloat[(r0+25)];
+	f10 = heapFloat[(r1+8)];
+	f11 = heapFloat[(r0+29)];
+	f12 = heapFloat[(r1+4)];
+	f13 = heapFloat[(r0+19)];
+	f14 = heapFloat[(r1+9)];
+	f15 = heapFloat[(r0+30)];
+	f16 = heapFloat[(r1+5)];
+	f17 = heapFloat[(r0+23)];
+	f18 = heapFloat[(r1+10)];
+	f19 = heapFloat[(r0+31)];
+	f20 = heapFloat[(r1+6)];
+	f21 = heapFloat[(r0+27)];
+	f22 = heapFloat[(r0+26)];
+	f23 = f4*f0;
+	f24 = f5*f2;
+	f6 = f6+f7;
+	f7 = f9*f8;
+	f25 = heapFloat[(r1+14)];
+	f26 = heapFloat[(r1+13)];
+	f27 = heapFloat[(r1+12)];
+	f28 = f13*f0;
+	f29 = f17*f2;
+	f23 = f23+f24;
+	f24 = f22*f8;
+	f6 = f6+f7;
+	f7 = f28+f29;
+	f28 = f21*f8;
+	f23 = f23+f24;
+	heapFloat[(r0+1)] = f6;
+	f6 = f1*f12;
+	f24 = f3*f16;
+	f7 = f7+f28;
+	heapFloat[(r0+2)] = f23;
+	heapFloat[(r0+3)] = f7;
+	f7 = f4*f12;
+	f23 = f5*f16;
+	f6 = f6+f24;
+	f24 = f9*f20;
+	f28 = f13*f12;
+	f29 = f17*f16;
+	f7 = f7+f23;
+	f23 = f22*f20;
+	f6 = f6+f24;
+	heap32[(r0+4)] = 0;
+	f24 = f28+f29;
+	f28 = f21*f20;
+	f7 = f7+f23;
+	heapFloat[(r0+5)] = f6;
+	f1 = f1*f10;
+	f3 = f3*f14;
+	f6 = f24+f28;
+	heapFloat[(r0+6)] = f7;
+	heapFloat[(r0+7)] = f6;
+	f4 = f4*f10;
+	f5 = f5*f14;
+	f1 = f1+f3;
+	f3 = f9*f18;
+	f6 = f13*f10;
+	f7 = f17*f14;
+	f4 = f4+f5;
+	f5 = f22*f18;
+	f1 = f1+f3;
+	heap32[(r0+8)] = 0;
+	f0 = f0*f11;
+	f2 = f2*f15;
+	f3 = f6+f7;
+	f6 = f21*f18;
+	f4 = f4+f5;
+	heapFloat[(r0+9)] = f1;
+	f1 = f12*f11;
+	f5 = f16*f15;
+	f0 = f0+f2;
+	f2 = f8*f19;
+	f3 = f3+f6;
+	heapFloat[(r0+10)] = f4;
+	f0 = f0+f2;
+	heapFloat[(r0+11)] = f3;
+	f2 = f10*f11;
+	f3 = f14*f15;
+	f1 = f1+f5;
+	f4 = f20*f19;
+	f1 = f1+f4;
+	f2 = f2+f3;
+	f3 = f18*f19;
+	f0 = f0+f27;
+	heap32[(r0+12)] = 0;
+	f2 = f2+f3;
+	f1 = f1+f26;
+	heapFloat[(r0+13)] = f0;
+	f0 = f2+f25;
+	heapFloat[(r0+14)] = f1;
+	heapFloat[(r0+15)] = f0;
+	heap32[(r0+16)] = 0;
+	return;
+}
+
+function _ZN17btTypedConstraint21setupSolverConstraintER20btAlignedObjectArrayI18btSolverConstraintEiif(sp)
+{
+	var i7;
+	var fp = sp>>2;
+var __label__ = 0;
+	i7 = sp + 0;var g0 = i7>>2; // save stack
+	return;
+}
+
+function _ZN17btTypedConstraint23solveConstraintObsoleteER11btRigidBodyS1_f(sp)
+{
+	var i7;
+	var fp = sp>>2;
+var __label__ = 0;
+	i7 = sp + 0;var g0 = i7>>2; // save stack
+	return;
+}
+
+function _ZN13BenchmarkDemo15displayCallbackEv(sp)
+{
+	var i7;
+	var fp = sp>>2;
+var __label__ = 0;
+	i7 = sp + 0;var g0 = i7>>2; // save stack
+	return;
+}
+
+function _ZN13BenchmarkDemo11exitPhysicsEv(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+var __label__ = 0;
+	i7 = sp + -8;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r0 = r0 >> 2;
+	r1 = heap32[(r0+9)];
+if(!(r1 <1)) //_LBB15_5
+{
+	r1 = 0;
+_3: while(true){
+	r2 = heap32[(r0+11)];
+	r3 = r1 << 2;
+	r2 = (r2 + r3)|0;
+	r2 = r2 >> 2;
+	r2 = heap32[(r2)];
+if(!(r2 ==0)) //_LBB15_4
+{
+	r3 = r2 >> 2;
+	r3 = heap32[(r3)];
+	r3 = r3 >> 2;
+	r3 = heap32[(r3+1)];
+	heap32[(g0)] = r2;
+	__FUNCTION_TABLE__[(r3)>>2](i7);
+}
+	r1 = (r1 + 1)|0;
+	r2 = heap32[(r0+9)];
+	if(r2 >r1) //_LBB15_2
+{
+continue _3;
+}
+else{
+break _3;
+}
+}
+}
+	r1 = heap32[(r0+1)];
+	r2 = r1 >> 2;
+	r2 = heap32[(r2+2)];
+	r3 = (r2 + -1)|0;
+_9: do {
+if(!(r3 <0)) //_LBB15_16
+{
+	r3 = 1;
+	r2 = (r3 - r2)|0;
+_11: while(true){
+	r3 = r1 >> 2;
+	r3 = heap32[(r3+4)];
+	r4 = r2 << 2;
+	r3 = (r3 - r4)|0;
+	r3 = r3 >> 2;
+	r3 = heap32[(r3)];
+	r4 = heapU8[r3+232];
+	r4 = r4 & 2;
+if(!(r4 ==0)) //_LBB15_9
+{
+	if(r3 !=0) //_LBB15_10
+{
+	r4 = r3 >> 2;
+	r4 = heap32[(r4+118)];
+if(!(r4 ==0)) //_LBB15_9
+{
+	r1 = r4 >> 2;
+	r1 = heap32[(r1)];
+	r1 = r1 >> 2;
+	r1 = heap32[(r1+1)];
+	heap32[(g0)] = r4;
+	__FUNCTION_TABLE__[(r1)>>2](i7);
+	r1 = heap32[(r0+1)];
+}
+}
+}
+	r4 = r1 >> 2;
+	r4 = heap32[(r4)];
+	r4 = r4 >> 2;
+	r4 = heap32[(r4+9)];
+	heap32[(g0)] = r1;
+	heap32[(g0+1)] = r3;
+	__FUNCTION_TABLE__[(r4)>>2](i7);
+	if(r3 !=0) //_LBB15_15
+{
+	r1 = r3 >> 2;
+	r1 = heap32[(r1)];
+	r1 = r1 >> 2;
+	r1 = heap32[(r1+2)];
+	heap32[(g0)] = r3;
+	__FUNCTION_TABLE__[(r1)>>2](i7);
+}
+	if(r2 ==0) //_LBB15_16
+{
+break _9;
+}
+else{
+	r2 = (r2 + 1)|0;
+	r1 = heap32[(r0+1)];
+continue _11;
+}
+}
+}
+} while(0);
+	r1 = heap32[(r0+4)];
+_23: do {
+if(!(r1 <1)) //_LBB15_21
+{
+	r1 = 0;
+_25: while(true){
+	r2 = heap32[(r0+6)];
+	r3 = r1 << 2;
+	r2 = (r2 + r3)|0;
+	r2 = r2 >> 2;
+	r2 = heap32[(r2)];
+if(!(r2 ==0)) //_LBB15_20
+{
+	r3 = r2 >> 2;
+	r3 = heap32[(r3)];
+	r3 = r3 >> 2;
+	r3 = heap32[(r3+1)];
+	heap32[(g0)] = r2;
+	__FUNCTION_TABLE__[(r3)>>2](i7);
+}
+	r1 = (r1 + 1)|0;
+	r2 = heap32[(r0+4)];
+	if(r2 >r1) //_LBB15_18
+{
+continue _25;
+}
+else{
+break _23;
+}
+}
+}
+} while(0);
+	r1 = heap32[(r0+1)];
+if(!(r1 ==0)) //_LBB15_23
+{
+	r2 = r1 >> 2;
+	r2 = heap32[(r2)];
+	r2 = r2 >> 2;
+	r2 = heap32[(r2+1)];
+	heap32[(g0)] = r1;
+	__FUNCTION_TABLE__[(r2)>>2](i7);
+}
+	r1 = heap32[(r0+15)];
+if(!(r1 ==0)) //_LBB15_25
+{
+	r2 = r1 >> 2;
+	r2 = heap32[(r2)];
+	r2 = r2 >> 2;
+	r2 = heap32[(r2+1)];
+	heap32[(g0)] = r1;
+	__FUNCTION_TABLE__[(r2)>>2](i7);
+}
+	r1 = heap32[(r0+13)];
+if(!(r1 ==0)) //_LBB15_27
+{
+	r2 = r1 >> 2;
+	r2 = heap32[(r2)];
+	r2 = r2 >> 2;
+	r2 = heap32[(r2+1)];
+	heap32[(g0)] = r1;
+	__FUNCTION_TABLE__[(r2)>>2](i7);
+}
+	r1 = heap32[(r0+14)];
+if(!(r1 ==0)) //_LBB15_29
+{
+	r2 = r1 >> 2;
+	r2 = heap32[(r2)];
+	r2 = r2 >> 2;
+	r2 = heap32[(r2+1)];
+	heap32[(g0)] = r1;
+	__FUNCTION_TABLE__[(r2)>>2](i7);
+}
+	r0 = heap32[(r0+16)];
+if(!(r0 ==0)) //_LBB15_31
+{
+	r1 = r0 >> 2;
+	r1 = heap32[(r1)];
+	r1 = r1 >> 2;
+	r1 = heap32[(r1+1)];
+	heap32[(g0)] = r0;
+	__FUNCTION_TABLE__[(r1)>>2](i7);
+}
+	return;
+}
+
+function _ZN7RagDollD0Ev(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+	var r6;
+	var r7;
+var __label__ = 0;
+	i7 = sp + -8;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = _ZTV7RagDoll;
+	r2 = 0;
+	r3 = r0 >> 2;
+	r1 = (r1 + 8)|0;
+	heap32[(r3)] = r1;
+	r1 = r2;
+_1: while(true){
+	r4 = heap32[(r3+1)];
+	r5 = r1 << 2;
+	r6 = r4 >> 2;
+	r5 = (r0 - r5)|0;
+	r6 = heap32[(r6)];
+	r6 = r6 >> 2;
+	r5 = r5 >> 2;
+	r6 = heap32[(r6+14)];
+	r7 = heap32[(r5+24)];
+	heap32[(g0)] = r4;
+	heap32[(g0+1)] = r7;
+	__FUNCTION_TABLE__[(r6)>>2](i7);
+	r4 = heap32[(r5+24)];
+if(!(r4 ==0)) //_LBB16_3
+{
+	r5 = r4 >> 2;
+	r5 = heap32[(r5)];
+	r5 = r5 >> 2;
+	r5 = heap32[(r5+1)];
+	heap32[(g0)] = r4;
+	__FUNCTION_TABLE__[(r5)>>2](i7);
+}
+	r4 = (r2 - r1)|0;
+	r4 = r4 << 2;
+	r4 = (r0 + r4)|0;
+	r1 = (r1 + -1)|0;
+	r4 = r4 >> 2;
+	heap32[(r4+24)] = 0;
+	if(r1 !=-10) //_LBB16_1
+{
+continue _1;
+}
+else{
+break _1;
+}
+}
+	r1 = 2;
+_7: while(true){
+	r2 = heap32[(r3+1)];
+	r4 = r2 >> 2;
+	r5 = r1 << 2;
+	r4 = heap32[(r4)];
+	r5 = (r0 + r5)|0;
+	r4 = r4 >> 2;
+	r5 = r5 >> 2;
+	r4 = heap32[(r4+21)];
+	r6 = heap32[(r5+11)];
+	heap32[(g0)] = r2;
+	heap32[(g0+1)] = r6;
+	__FUNCTION_TABLE__[(r4)>>2](i7);
+	r2 = heap32[(r5+11)];
+	r4 = r2 >> 2;
+	r4 = heap32[(r4+118)];
+	if(r4 !=0) //_LBB16_7
+{
+	r2 = r4 >> 2;
+	r2 = heap32[(r2)];
+	r2 = r2 >> 2;
+	r2 = heap32[(r2+1)];
+	heap32[(g0)] = r4;
+	__FUNCTION_TABLE__[(r2)>>2](i7);
+	r2 = heap32[(r5+11)];
+}
+if(!(r2 ==0)) //_LBB16_10
+{
+	r4 = r2 >> 2;
+	r4 = heap32[(r4)];
+	r4 = r4 >> 2;
+	r4 = heap32[(r4+2)];
+	heap32[(g0)] = r2;
+	__FUNCTION_TABLE__[(r4)>>2](i7);
+}
+	heap32[(r5+11)] = 0;
+	r2 = heap32[(r5)];
+if(!(r2 ==0)) //_LBB16_12
+{
+	r4 = r2 >> 2;
+	r4 = heap32[(r4)];
+	r4 = r4 >> 2;
+	r4 = heap32[(r4+1)];
+	heap32[(g0)] = r2;
+	__FUNCTION_TABLE__[(r4)>>2](i7);
+}
+	r1 = (r1 + 1)|0;
+	heap32[(r5)] = 0;
+	if(r1 !=13) //_LBB16_5
+{
+continue _7;
+}
+else{
+break _7;
+}
+}
+	heap32[(g0)] = r0;
+	_ZdlPv(i7);
+	return;
+}
+
+function _ZN7RagDollD1Ev(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+	var r6;
+	var r7;
+var __label__ = 0;
+	i7 = sp + -8;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = _ZTV7RagDoll;
+	r2 = 0;
+	r3 = r0 >> 2;
+	r1 = (r1 + 8)|0;
+	heap32[(r3)] = r1;
+	r1 = r2;
+_1: while(true){
+	r4 = heap32[(r3+1)];
+	r5 = r1 << 2;
+	r6 = r4 >> 2;
+	r5 = (r0 - r5)|0;
+	r6 = heap32[(r6)];
+	r6 = r6 >> 2;
+	r5 = r5 >> 2;
+	r6 = heap32[(r6+14)];
+	r7 = heap32[(r5+24)];
+	heap32[(g0)] = r4;
+	heap32[(g0+1)] = r7;
+	__FUNCTION_TABLE__[(r6)>>2](i7);
+	r4 = heap32[(r5+24)];
+if(!(r4 ==0)) //_LBB17_3
+{
+	r5 = r4 >> 2;
+	r5 = heap32[(r5)];
+	r5 = r5 >> 2;
+	r5 = heap32[(r5+1)];
+	heap32[(g0)] = r4;
+	__FUNCTION_TABLE__[(r5)>>2](i7);
+}
+	r4 = (r2 - r1)|0;
+	r4 = r4 << 2;
+	r4 = (r0 + r4)|0;
+	r1 = (r1 + -1)|0;
+	r4 = r4 >> 2;
+	heap32[(r4+24)] = 0;
+	if(r1 !=-10) //_LBB17_1
+{
+continue _1;
+}
+else{
+break _1;
+}
+}
+	r1 = 2;
+_7: while(true){
+	r2 = heap32[(r3+1)];
+	r4 = r2 >> 2;
+	r5 = r1 << 2;
+	r4 = heap32[(r4)];
+	r5 = (r0 + r5)|0;
+	r4 = r4 >> 2;
+	r5 = r5 >> 2;
+	r4 = heap32[(r4+21)];
+	r6 = heap32[(r5+11)];
+	heap32[(g0)] = r2;
+	heap32[(g0+1)] = r6;
+	__FUNCTION_TABLE__[(r4)>>2](i7);
+	r2 = heap32[(r5+11)];
+	r4 = r2 >> 2;
+	r4 = heap32[(r4+118)];
+	if(r4 !=0) //_LBB17_7
+{
+	r2 = r4 >> 2;
+	r2 = heap32[(r2)];
+	r2 = r2 >> 2;
+	r2 = heap32[(r2+1)];
+	heap32[(g0)] = r4;
+	__FUNCTION_TABLE__[(r2)>>2](i7);
+	r2 = heap32[(r5+11)];
+}
+if(!(r2 ==0)) //_LBB17_10
+{
+	r4 = r2 >> 2;
+	r4 = heap32[(r4)];
+	r4 = r4 >> 2;
+	r4 = heap32[(r4+2)];
+	heap32[(g0)] = r2;
+	__FUNCTION_TABLE__[(r4)>>2](i7);
+}
+	heap32[(r5+11)] = 0;
+	r2 = heap32[(r5)];
+if(!(r2 ==0)) //_LBB17_12
+{
+	r4 = r2 >> 2;
+	r4 = heap32[(r4)];
+	r4 = r4 >> 2;
+	r4 = heap32[(r4+1)];
+	heap32[(g0)] = r2;
+	__FUNCTION_TABLE__[(r4)>>2](i7);
+}
+	r1 = (r1 + 1)|0;
+	heap32[(r5)] = 0;
+	if(r1 !=13) //_LBB17_5
+{
+continue _7;
+}
+else{
+break _7;
+}
+}
+	return;
+}
+
+function _ZN13BenchmarkDemoD0Ev(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+var __label__ = 0;
+	i7 = sp + -8;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = _ZTV13BenchmarkDemo;
+	r2 = r0 >> 2;
+	r1 = (r1 + 8)|0;
+	heap32[(r2)] = r1;
+	heap32[(g0)] = r0;
+	_ZN13BenchmarkDemo11exitPhysicsEv(i7);
+	r1 = heap32[(r2+11)];
+if(!(r1 ==0)) //_LBB18_4
+{
+	r3 = heapU8[r0+48];
+if(!(r3 ==0)) //_LBB18_3
+{
+	r3 = gNumAlignedFree;
+	r3 = r3 >> 2;
+	r4 = heap32[(r3)];
+	r4 = (r4 + 1)|0;
+	r1 = r1 >> 2;
+	heap32[(r3)] = r4;
+	r1 = heap32[(r1+-1)];
+	heap32[(g0)] = r1;
+	free(i7);
+}
+	heap32[(r2+11)] = 0;
+}
+	r1 = 1;
+	heap8[r0+48] = r1;
+	heap32[(r2+11)] = 0;
+	heap32[(r2+9)] = 0;
+	heap32[(r2+10)] = 0;
+	r3 = heap32[(r2+6)];
+if(!(r3 ==0)) //_LBB18_8
+{
+	r4 = heapU8[r0+28];
+if(!(r4 ==0)) //_LBB18_7
+{
+	r4 = gNumAlignedFree;
+	r4 = r4 >> 2;
+	r5 = heap32[(r4)];
+	r5 = (r5 + 1)|0;
+	r3 = r3 >> 2;
+	heap32[(r4)] = r5;
+	r3 = heap32[(r3+-1)];
+	heap32[(g0)] = r3;
+	free(i7);
+}
+	heap32[(r2+6)] = 0;
+}
+	heap8[r0+28] = r1;
+	heap32[(r2+6)] = 0;
+	heap32[(r2+4)] = 0;
+	heap32[(r2+5)] = 0;
+	heap32[(g0)] = r0;
+	_ZdlPv(i7);
+	return;
+}
+
+function _ZN15DemoApplication20localCreateRigidBodyEfRK11btTransformP16btCollisionShape(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+	var r6;
+	var r7;
+	var f0;
+	var f1;
+var __label__ = 0;
+	i7 = sp + -168;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp+3)];
+if(!(r0 ==0)) //_LBB19_3
+{
+	r1 = r0 >> 2;
+	r1 = heap32[(r1+1)];
+if(!(r1 !=35)) //_LBB19_3
+{
+	r0 = _2E_str5;
+	r1 = _2E_str6;
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r1;
+	heap32[(g0+2)] = 1297;
+	_assert(i7);
+}
+}
+	f0 = heapFloat[(fp+1)];
+	r1 = sp + -152;
+	r2 = r1 >> 2;
+	heap32[(fp+-38)] = 0;
+	heap32[(r2+1)] = 0;
+	heap32[(r2+2)] = 0;
+	f1 =                         0;
+	heap32[(r2+3)] = 0;
+if(!(f0 ==f1)) //_LBB19_5
+{
+	r3 = r0 >> 2;
+	r3 = heap32[(r3)];
+	r3 = r3 >> 2;
+	r3 = heap32[(r3+8)];
+	heap32[(g0)] = r0;
+	heapFloat[(g0+1)] = f0;
+	heap32[(g0+2)] = r1;
+	__FUNCTION_TABLE__[(r3)>>2](i7);
+}
+	r1 = heap32[(fp)];
+	r3 = heap32[(fp+2)];
+	r4 = gNumAlignedAllocs;
+	r4 = r4 >> 2;
+	r5 = heap32[(r4)];
+	r5 = (r5 + 1)|0;
+	heap32[(r4)] = r5;
+	heap32[(g0)] = 627;
+	malloc(i7);
+	r4 = r_g0;
+	if(r4 !=0) //_LBB19_7
+{
+	r5 = 0;
+	r6 = (r4 + 4)|0;
+	r5 = (r5 - r6)|0;
+	r5 = r5 & 15;
+	r5 = (r4 + r5)|0;
+	r6 = (r5 + 4)|0;
+	r5 = r5 >> 2;
+	heap32[(r5)] = r4;
+	r4 = r6;
+}
+	r5 = r4 >> 2;
+	heap32[(r5+41)] = 1065353216;
+	heap32[(r5+42)] = 1065353216;
+	heap32[(r5+43)] = 1065353216;
+	heap32[(r5+44)] = 0;
+	heap32[(r5+45)] = 0;
+	heap32[(r5+46)] = 1566444395;
+	heap32[(r5+47)] = 0;
+	heap32[(r5+48)] = 0;
+	heap32[(r5+49)] = 0;
+	heap32[(r5+50)] = 0;
+	heap32[(r5+51)] = 1;
+	heap32[(r5+52)] = -1;
+	heap32[(r5+53)] = -1;
+	heap32[(r5+54)] = 1;
+	heap32[(r5+55)] = 0;
+	heap32[(r5+56)] = 1056964608;
+	heap32[(r5+57)] = 0;
+	heap32[(r5+58)] = 1;
+	heap32[(r5+59)] = 0;
+	heap32[(r5+60)] = 1065353216;
+	heap32[(r5+61)] = 0;
+	heap32[(r5+62)] = 0;
+	heap32[(r5+63)] = 0;
+	heap32[(r5+1)] = 1065353216;
+	heap32[(r5+2)] = 0;
+	heap32[(r5+3)] = 0;
+	heap32[(r5+4)] = 0;
+	heap32[(r5+5)] = 0;
+	heap32[(r5+6)] = 1065353216;
+	heap32[(r5+7)] = 0;
+	heap32[(r5+8)] = 0;
+	heap32[(r5+9)] = 0;
+	heap32[(r5+10)] = 0;
+	heap32[(r5+11)] = 1065353216;
+	heap32[(r5+12)] = 0;
+	heap32[(r5+13)] = 0;
+	heap32[(r5+14)] = 0;
+	r6 = _ZTV11btRigidBody;
+	heap32[(r5+15)] = 0;
+	r6 = (r6 + 8)|0;
+	heap32[(r5+16)] = 0;
+	r7 = 1;
+	heap32[(r5)] = r6;
+	heap8[r4+492] = r7;
+	heap32[(r5+122)] = 0;
+	heap32[(r5+120)] = 0;
+	r6 = sp + -136;
+	heap32[(r5+121)] = 0;
+	r7 = r6 >> 2;
+	heapFloat[(fp+-34)] = f0;
+	heap32[(r7+1)] = 0;
+	heap32[(r7+18)] = r0;
+	heap32[(r7+19)] = heap32[(fp+-38)];
+	heap32[(r7+20)] = heap32[(r2+1)];
+	heap32[(r7+21)] = heap32[(r2+2)];
+	heap32[(r7+22)] = heap32[(r2+3)];
+	heap32[(r7+23)] = 0;
+	heap32[(r7+24)] = 0;
+	heap32[(r7+25)] = 1056964608;
+	heap32[(r7+26)] = 0;
+	heap32[(r7+27)] = 1061997773;
+	r0 = 0;
+	heap32[(r7+28)] = 1065353216;
+	heap8[sp+-20] = r0;
+	heap32[(r7+30)] = 1000593162;
+	heap32[(r7+31)] = 1008981770;
+	heap32[(r7+32)] = 1008981770;
+	heap32[(r7+33)] = 1008981770;
+	heap32[(r7+2)] = 1065353216;
+	heap32[(r7+3)] = 0;
+	heap32[(r7+4)] = 0;
+	heap32[(r7+5)] = 0;
+	heap32[(r7+6)] = 0;
+	heap32[(r7+7)] = 1065353216;
+	heap32[(r7+8)] = 0;
+	heap32[(r7+9)] = 0;
+	heap32[(r7+10)] = 0;
+	heap32[(r7+11)] = 0;
+	heap32[(r7+12)] = 1065353216;
+	heap32[(r7+13)] = 0;
+	heap32[(r7+14)] = 0;
+	heap32[(r7+15)] = 0;
+	heap32[(r7+16)] = 0;
+	heap32[(r7+17)] = 0;
+	heap32[(g0)] = r4;
+	heap32[(g0+1)] = r6;
+	_ZN11btRigidBody14setupRigidBodyERKNS_27btRigidBodyConstructionInfoE(i7);
+	r0 = r3 >> 2;
+	heap32[(r5+1)] = heap32[(r0)];
+	heap32[(r5+2)] = heap32[(r0+1)];
+	heap32[(r5+3)] = heap32[(r0+2)];
+	heap32[(r5+4)] = heap32[(r0+3)];
+	heap32[(r5+5)] = heap32[(r0+4)];
+	heap32[(r5+6)] = heap32[(r0+5)];
+	heap32[(r5+7)] = heap32[(r0+6)];
+	heap32[(r5+8)] = heap32[(r0+7)];
+	heap32[(r5+9)] = heap32[(r0+8)];
+	heap32[(r5+10)] = heap32[(r0+9)];
+	heap32[(r5+11)] = heap32[(r0+10)];
+	heap32[(r5+12)] = heap32[(r0+11)];
+	heap32[(r5+13)] = heap32[(r0+12)];
+	heap32[(r5+14)] = heap32[(r0+13)];
+	heap32[(r5+15)] = heap32[(r0+14)];
+	r1 = r1 >> 2;
+	heap32[(r5+16)] = heap32[(r0+15)];
+	heap32[(r5+46)] = heap32[(r1+2)];
+	r0 = heap32[(r1+1)];
+	r1 = r0 >> 2;
+	r1 = heap32[(r1)];
+	r1 = r1 >> 2;
+	r1 = heap32[(r1+20)];
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r4;
+	__FUNCTION_TABLE__[(r1)>>2](i7);
+	r_g0 = r4;
+	return;
+}
+
+function _ZN13BenchmarkDemoD1Ev(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+var __label__ = 0;
+	i7 = sp + -8;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = _ZTV13BenchmarkDemo;
+	r2 = r0 >> 2;
+	r1 = (r1 + 8)|0;
+	heap32[(r2)] = r1;
+	heap32[(g0)] = r0;
+	_ZN13BenchmarkDemo11exitPhysicsEv(i7);
+	r1 = heap32[(r2+11)];
+if(!(r1 ==0)) //_LBB20_4
+{
+	r3 = heapU8[r0+48];
+if(!(r3 ==0)) //_LBB20_3
+{
+	r3 = gNumAlignedFree;
+	r3 = r3 >> 2;
+	r4 = heap32[(r3)];
+	r4 = (r4 + 1)|0;
+	r1 = r1 >> 2;
+	heap32[(r3)] = r4;
+	r1 = heap32[(r1+-1)];
+	heap32[(g0)] = r1;
+	free(i7);
+}
+	heap32[(r2+11)] = 0;
+}
+	r1 = 1;
+	heap8[r0+48] = r1;
+	heap32[(r2+11)] = 0;
+	heap32[(r2+9)] = 0;
+	heap32[(r2+10)] = 0;
+	r3 = heap32[(r2+6)];
+if(!(r3 ==0)) //_LBB20_8
+{
+	r4 = heapU8[r0+28];
+if(!(r4 ==0)) //_LBB20_7
+{
+	r4 = gNumAlignedFree;
+	r4 = r4 >> 2;
+	r5 = heap32[(r4)];
+	r5 = (r5 + 1)|0;
+	r3 = r3 >> 2;
+	heap32[(r4)] = r5;
+	r3 = heap32[(r3+-1)];
+	heap32[(g0)] = r3;
+	free(i7);
+}
+	heap32[(r2+6)] = 0;
+}
+	heap8[r0+28] = r1;
+	heap32[(r2+6)] = 0;
+	heap32[(r2+4)] = 0;
+	heap32[(r2+5)] = 0;
+	return;
+}
+
+function _ZN13BenchmarkDemo20clientMoveAndDisplayEv(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+	var r6;
+	var r7;
+	var r8;
+	var r9;
+	var r10;
+	var f0;
+	var f1;
+	var f2;
+var __label__ = 0;
+	i7 = sp + -128;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r0 = r0 >> 2;
+	r1 = heap32[(r0+1)];
+if(!(r1 ==0)) //_LBB21_2
+{
+	r2 = r1 >> 2;
+	r2 = heap32[(r2)];
+	r2 = r2 >> 2;
+	r2 = heap32[(r2+12)];
+	heap32[(g0)] = r1;
+	heap32[(g0+1)] = 1015580809;
+	heap32[(g0+2)] = 1;
+	heap32[(g0+3)] = 1015580809;
+	__FUNCTION_TABLE__[(r2)>>2](i7);
+	r1 = heap32[(r0+1)];
+	r2 = r1 >> 2;
+	r2 = heap32[(r2)];
+	r2 = r2 >> 2;
+	r2 = heap32[(r2+5)];
+	heap32[(g0)] = r1;
+	__FUNCTION_TABLE__[(r2)>>2](i7);
+}
+	r1 = heap32[(r0+17)];
+if(!(r1 !=7)) //_LBB21_10
+{
+	r1 = _ZL10raycastBar;
+	r2 = r1 >> 2;
+	r0 = heap32[(r0+1)];
+	r3 = heap32[(r2+10006)];
+	heap32[(g0)] = r3;
+	heap32[(g0+1)] = 0;
+	r3 = 0;
+	gettimeofday(i7);
+_6: while(true){
+	r4 = sp + -96;
+	r5 = r4 >> 2;
+	heap32[(r5+1)] = 1065353216;
+	r6 = 1;
+	heap32[(r5+2)] = 0;
+	r7 = -1;
+	heap16[(sp+-84)>>1] = r6;
+	r6 = _ZTVN16btCollisionWorld24ClosestRayResultCallbackE;
+	heap16[(sp+-82)>>1] = r7;
+	r7 = (r1 + r3)|0;
+	r6 = (r6 + 8)|0;
+	heap32[(r5+4)] = 0;
+	r8 = r7 >> 2;
+	heap32[(fp+-24)] = r6;
+	heap32[(r5+5)] = heap32[(r8)];
+	heap32[(r5+6)] = heap32[(r8+1)];
+	heap32[(r5+7)] = heap32[(r8+2)];
+	heap32[(r5+8)] = heap32[(r8+3)];
+	heap32[(r5+9)] = heap32[(r8+2000)];
+	heap32[(r5+10)] = heap32[(r8+2001)];
+	heap32[(r5+11)] = heap32[(r8+2002)];
+	r9 = r0 >> 2;
+	heap32[(r5+12)] = heap32[(r8+2003)];
+	r9 = heap32[(r9)];
+	r9 = r9 >> 2;
+	r9 = heap32[(r9+7)];
+	r10 = (r7 + 8000)|0;
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r7;
+	heap32[(g0+2)] = r10;
+	heap32[(g0+3)] = r4;
+	__FUNCTION_TABLE__[(r9)>>2](i7);
+	r4 = heap32[(r5+2)];
+	if(r4 ==0) //_LBB21_6
+{
+	r4 = r7 >> 2;
+	r5 = r7 >> 2;
+	r9 = r7 >> 2;
+	r10 = r7 >> 2;
+	heap32[(r4+6000)] = heap32[(r5+2000)];
+	r4 = r7 >> 2;
+	r5 = r7 >> 2;
+	heap32[(r9+6001)] = heap32[(r10+2001)];
+	r9 = r7 >> 2;
+	r10 = r7 >> 2;
+	heap32[(r4+6002)] = heap32[(r5+2002)];
+	r4 = r7 >> 2;
+	heap32[(r9+6003)] = heap32[(r10+2003)];
+	r5 = r7 >> 2;
+	heap32[(r4+8000)] = 1065353216;
+	r4 = r7 >> 2;
+	heap32[(r5+8001)] = 0;
+	heap32[(r4+8002)] = 0;
+	heap32[(r8+8003)] = 0;
+}
+else{
+	r4 = r7 >> 2;
+	r9 = r7 >> 2;
+	heap32[(r4+6000)] = heap32[(r5+17)];
+	r4 = r7 >> 2;
+	heap32[(r9+6001)] = heap32[(r5+18)];
+	r9 = r7 >> 2;
+	heap32[(r4+6002)] = heap32[(r5+19)];
+	heap32[(r9+6003)] = heap32[(r5+20)];
+	f0 = heapFloat[(r5+13)];
+	r4 = r7 >> 2;
+	heapFloat[(r4+8000)] = f0;
+	f1 = heapFloat[(r5+14)];
+	r9 = r7 >> 2;
+	heapFloat[(r9+8001)] = f1;
+	f2 = heapFloat[(r5+15)];
+	r7 = r7 >> 2;
+	f0 = f0*f0;
+	f1 = f1*f1;
+	heapFloat[(r7+8002)] = f2;
+	heap32[(r8+8003)] = heap32[(r5+16)];
+	f0 = f0+f1;
+	f1 = f2*f2;
+	f0 = f0+f1;
+	heapFloat[(g0)] = f0;
+	sqrtf(i7);
+	f1 =                         1;
+	f0 = f1/f_g0;
+	f1 = heapFloat[(r4+8000)];
+	f1 = f1*f0;
+	heapFloat[(r4+8000)] = f1;
+	f1 = heapFloat[(r9+8001)];
+	f1 = f1*f0;
+	heapFloat[(r9+8001)] = f1;
+	f1 = heapFloat[(r7+8002)];
+	f0 = f1*f0;
+	heapFloat[(r7+8002)] = f0;
+}
+	r3 = (r3 + 16)|0;
+	heap32[(fp+-24)] = r6;
+if(!(r3 !=8000)) //_LBB21_4
+{
+break _6;
+}
+}
+	r0 = heap32[(r2+10001)];
+	r1 = sp + -8;
+	heap32[(g0)] = r1;
+	heap32[(g0+1)] = 0;
+	gettimeofday(i7);
+	r3 = heap32[(r2+10006)];
+	r3 = r3 >> 2;
+	r1 = r1 >> 2;
+	r4 = heap32[(fp+-2)];
+	r5 = heap32[(r3)];
+	r1 = heap32[(r1+1)];
+	r3 = heap32[(r3+1)];
+	r1 = (r1 - r3)|0;
+	r3 = (r4 - r5)|0;
+	r1 = (r1 / 1000)|0;
+	r3 = (r3 * 1000)|0;
+	r1 = (r1 + r3)|0;
+	r0 = (r1 + r0)|0;
+	heap32[(r2+10001)] = r0;
+	r1 = heap32[(r2+10000)];
+	r1 = (r1 + 1)|0;
+	heap32[(r2+10000)] = r1;
+if(!(r1 <51)) //_LBB21_10
+{
+	r3 = heap32[(r2+10004)];
+	r3 = r0 < r3 ? r0 : r3;
+	heap32[(r2+10004)] = r3;
+	r4 = heap32[(r2+10005)];
+	r4 = r0 > r4 ? r0 : r4;
+	heap32[(r2+10005)] = r4;
+	r5 = heap32[(r2+10002)];
+	r5 = (r0 + r5)|0;
+	heap32[(r2+10002)] = r5;
+	r6 = heap32[(r2+10003)];
+	r6 = (r6 + 1)|0;
+	f0 = r5; //fitos r5, f0
+	f1 = r6; //fitos r6, f1
+	f0 = f0/f1;
+	heap32[(r2+10003)] = r6;
+	r5 = _2E_str7;
+	r1 = (r1 * 500)|0;
+	f0 = f0; //fstod f0, f0
+	heap32[(g0)] = r5;
+	heap32[(g0+1)] = r1;
+	heap32[(g0+2)] = r0;
+	heap32[(g0+3)] = r3;
+	heap32[(g0+4)] = r4;
+	llvm_writeDouble((i7+24),f0);
+	printf(i7);
+	heap32[(r2+10001)] = 0;
+	heap32[(r2+10000)] = 0;
+}
+}
+	return;
+}
+
+function _ZN13BenchmarkDemo10createWallERK9btVector3iS2_(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+	var r6;
+	var r7;
+	var f0;
+	var f1;
+	var f2;
+	var f3;
+	var f4;
+	var f5;
+	var f6;
+	var f7;
+	var f8;
+	var f9;
+var __label__ = 0;
+	i7 = sp + -96;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp+1)];
+	r1 = gNumAlignedAllocs;
+	r0 = r0 >> 2;
+	r1 = r1 >> 2;
+	r2 = heap32[(r1)];
+	f0 = heapFloat[(r0+2)];
+	f1 = heapFloat[(r0+1)];
+	f2 = heapFloat[(r0)];
+	r2 = (r2 + 1)|0;
+	heap32[(r1)] = r2;
+	heap32[(g0)] = 71;
+	malloc(i7);
+	r1 = r_g0;
+	r2 = heap32[(fp)];
+	if(r1 !=0) //_LBB22_2
+{
+	r3 = 0;
+	r4 = (r1 + 4)|0;
+	r3 = (r3 - r4)|0;
+	r3 = r3 & 15;
+	r3 = (r1 + r3)|0;
+	r4 = (r3 + 4)|0;
+	r3 = r3 >> 2;
+	heap32[(r3)] = r1;
+	r1 = r4;
+}
+	r3 = r1 >> 2;
+	heap32[(r3+2)] = 0;
+	heap32[(r3+3)] = 1065353216;
+	heap32[(r3+4)] = 1065353216;
+	heap32[(r3+5)] = 1065353216;
+	r4 = _ZTV10btBoxShape;
+	heap32[(r3+6)] = 0;
+	r4 = (r4 + 8)|0;
+	heap32[(r3+11)] = 1025758986;
+	heap32[(r3)] = r4;
+	f3 =     -0.039999999105930328;
+	f2 = f2+f3;
+	heap32[(r3+1)] = 0;
+	f1 = f1+f3;
+	heapFloat[(r3+7)] = f2;
+	f0 = f0+f3;
+	heapFloat[(r3+8)] = f1;
+	heapFloat[(r3+9)] = f0;
+	r4 = sp + -16;
+	heap32[(r3+10)] = 0;
+	r3 = r4 >> 2;
+	heap32[(fp+-4)] = 0;
+	heap32[(r3+1)] = 0;
+	heap32[(r3+2)] = 0;
+	heap32[(r3+3)] = 0;
+	heap32[(g0)] = r1;
+	heap32[(g0+1)] = 1065353216;
+	heap32[(g0+2)] = r4;
+	_ZNK10btBoxShape21calculateLocalInertiaEfR9btVector3(i7);
+	f4 = heapFloat[(r0+1)];
+	f0 = heapFloat[(r0+2)];
+	r0 = sp + -80;
+	r3 = r0 >> 2;
+	heap32[(fp+-20)] = 1065353216;
+	heap32[(r3+1)] = 0;
+	heap32[(r3+2)] = 0;
+	heap32[(r3+3)] = 0;
+	heap32[(r3+4)] = 0;
+	heap32[(r3+5)] = 1065353216;
+	heap32[(r3+6)] = 0;
+	heap32[(r3+7)] = 0;
+	heap32[(r3+8)] = 0;
+	heap32[(r3+9)] = 0;
+	heap32[(r3+10)] = 1065353216;
+	heap32[(r3+11)] = 0;
+	f1 = f0+f0;
+	f2 =                       -12;
+	heap32[(r3+12)] = 0;
+	heap32[(r3+13)] = 0;
+	f2 = f1*f2;
+	f3 =                       0.5;
+	f3 = f2*f3;
+	f2 = f4+f4;
+	r5 = 12;
+	heap32[(r3+14)] = 0;
+	heap32[(r3+15)] = 0;
+_4: while(true){
+if(!(r5 <1)) //_LBB22_4
+{
+	r4 = 0;
+_8: while(true){
+	r6 = r2 >> 2;
+	f5 = r4; //fitos r4, f5
+	f6 =                         0;
+	f7 = heapFloat[(r6)];
+	f8 = heapFloat[(r6+2)];
+	f9 = heapFloat[(r6+1)];
+	f5 = f5*f1;
+	f6 = f7+f6;
+	f5 = f5+f3;
+	f7 = f9+f4;
+	heapFloat[(r3+12)] = f6;
+	f5 = f8+f5;
+	heapFloat[(r3+13)] = f7;
+	r6 = _ZL14benchmarkDemo4;
+	heapFloat[(r3+14)] = f5;
+	r7 = r6 >> 2;
+	heap32[(r3+15)] = 0;
+	r7 = heap32[(r7)];
+	r7 = r7 >> 2;
+	r7 = heap32[(r7+2)];
+	heap32[(g0)] = r6;
+	heap32[(g0+1)] = 1065353216;
+	heap32[(g0+2)] = r0;
+	heap32[(g0+3)] = r1;
+	r4 = (r4 + 1)|0;
+	__FUNCTION_TABLE__[(r7)>>2](i7);
+	if(r5 !=r4) //_LBB22_3
+{
+continue _8;
+}
+else{
+break _8;
+}
+}
+}
+	r5 = (r5 + -1)|0;
+	f4 = f4+f2;
+	f3 = f3+f0;
+	if(r5 ==0) //_LBB22_8
+{
+break _4;
+}
+else{
+continue _4;
+}
+}
+	return;
+}
+
+function _ZN13BenchmarkDemo19createLargeMeshBodyEv(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+	var r6;
+	var r7;
+	var r8;
+	var r9;
+	var r10;
+	var r11;
+	var r12;
+	var r13;
+	var r14;
+var __label__ = 0;
+	i7 = sp + -80;var g0 = i7>>2; // save stack
+	r0 = sp + -64;
+	r1 = r0 >> 2;
+	heap32[(fp+-16)] = 1065353216;
+	heap32[(r1+1)] = 0;
+	heap32[(r1+2)] = 0;
+	heap32[(r1+3)] = 0;
+	heap32[(r1+4)] = 0;
+	heap32[(r1+5)] = 1065353216;
+	heap32[(r1+6)] = 0;
+	heap32[(r1+7)] = 0;
+	heap32[(r1+8)] = 0;
+	heap32[(r1+9)] = 0;
+	heap32[(r1+10)] = 1065353216;
+	heap32[(r1+11)] = 0;
+	heap32[(r1+12)] = 0;
+	heap32[(r1+13)] = 0;
+	r2 = 0;
+	heap32[(r1+14)] = 0;
+	heap32[(r1+15)] = 0;
+_1: while(true){
+	r3 = gNumAlignedAllocs;
+	r3 = r3 >> 2;
+	r4 = heap32[(r3)];
+	r5 = (r4 + 1)|0;
+	heap32[(r3)] = r5;
+	heap32[(g0)] = 103;
+	malloc(i7);
+	r5 = r_g0;
+	if(r5 !=0) //_LBB23_3
+{
+	r6 = 0;
+	r7 = (r5 + 4)|0;
+	r6 = (r6 - r7)|0;
+	r6 = r6 & 15;
+	r6 = (r5 + r6)|0;
+	r7 = (r6 + 4)|0;
+	r6 = r6 >> 2;
+	heap32[(r6)] = r5;
+	r5 = r7;
+}
+	r6 = r5 >> 2;
+	heap32[(r6+1)] = 1065353216;
+	heap32[(r6+2)] = 1065353216;
+	r7 = _ZTV26btTriangleIndexVertexArray;
+	heap32[(r6+3)] = 1065353216;
+	r7 = (r7 + 8)|0;
+	heap32[(r6+4)] = 0;
+	r8 = 1;
+	heap32[(r6)] = r7;
+	heap8[r5+36] = r8;
+	heap32[(r6+8)] = 0;
+	heap32[(r6+6)] = 0;
+	r7 = LandscapeVtx;
+	r9 = r2 << 2;
+	r10 = LandscapeVtxCount;
+	r11 = LandscapeIdx;
+	r12 = LandscapeIdxCount;
+	r7 = (r7 + r9)|0;
+	r10 = (r10 + r9)|0;
+	r11 = (r11 + r9)|0;
+	r9 = (r12 + r9)|0;
+	heap32[(r6+7)] = 0;
+	r7 = r7 >> 2;
+	heap32[(r6+12)] = 0;
+	r10 = r10 >> 2;
+	r11 = r11 >> 2;
+	r9 = r9 >> 2;
+	r7 = heap32[(r7)];
+	r10 = heap32[(r10)];
+	r11 = heap32[(r11)];
+	r9 = heap32[(r9)];
+	r12 = (r4 + 2)|0;
+	heap32[(r3)] = r12;
+	heap32[(g0)] = 51;
+	malloc(i7);
+	r12 = r_g0;
+	r9 = (r9 / 3)|0;
+	if(r12 !=0) //_LBB23_6
+{
+	r13 = 0;
+	r14 = (r12 + 4)|0;
+	r13 = (r13 - r14)|0;
+	r13 = r13 & 15;
+	r13 = (r12 + r13)|0;
+	r14 = (r13 + 4)|0;
+	r13 = r13 >> 2;
+	heap32[(r13)] = r12;
+	r12 = r14;
+}
+	heap8[r5+36] = r8;
+	heap32[(r6+8)] = r12;
+	heap32[(r6+7)] = 1;
+	r13 = heap32[(r6+6)];
+	r13 = r13 << 5;
+	r12 = (r12 + r13)|0;
+	r12 = r12 >> 2;
+	heap32[(r12)] = r9;
+	heap32[(r12+1)] = r11;
+	heap32[(r12+2)] = 6;
+	heap32[(r12+3)] = r10;
+	heap32[(r12+4)] = r7;
+	heap32[(r12+5)] = 12;
+	heap32[(r12+6)] = 3;
+	heap32[(r12+7)] = 0;
+	r7 = heap32[(r6+6)];
+	r9 = (r7 + 1)|0;
+	heap32[(r6+6)] = r9;
+	r7 = r7 << 5;
+	r9 = heap32[(r6+8)];
+	r7 = (r9 + r7)|0;
+	r7 = r7 >> 2;
+	r4 = (r4 + 3)|0;
+	heap32[(r7+6)] = 3;
+	heap32[(r3)] = r4;
+	heap32[(g0)] = 95;
+	malloc(i7);
+	r3 = r_g0;
+	if(r3 !=0) //_LBB23_9
+{
+	r4 = 0;
+	r7 = (r3 + 4)|0;
+	r4 = (r4 - r7)|0;
+	r4 = r4 & 15;
+	r4 = (r3 + r4)|0;
+	r7 = (r4 + 4)|0;
+	r4 = r4 >> 2;
+	heap32[(r4)] = r3;
+	r3 = r7;
+}
+	r4 = r3 >> 2;
+	r7 = _ZTV19btTriangleMeshShape;
+	heap32[(r4+2)] = 0;
+	r7 = (r7 + 8)|0;
+	heap32[(r4+3)] = 0;
+	heap32[(r4)] = r7;
+	heap32[(r4+12)] = r5;
+	heap32[(r4+1)] = 21;
+	r7 = heap32[(r6)];
+	r7 = r7 >> 2;
+	r7 = heap32[(r7+10)];
+	heap32[(g0)] = r5;
+	__FUNCTION_TABLE__[(r7)>>2](i7);
+	r7 = r_g0;
+	if(r7 ==0) //_LBB23_12
+{
+	heap32[(g0)] = r3;
+	_ZN19btTriangleMeshShape15recalcLocalAabbEv(i7);
+}
+else{
+	r6 = heap32[(r6)];
+	r6 = r6 >> 2;
+	r6 = heap32[(r6+12)];
+	r7 = (r3 + 16)|0;
+	r9 = (r3 + 32)|0;
+	heap32[(g0)] = r5;
+	heap32[(g0+1)] = r7;
+	heap32[(g0+2)] = r9;
+	__FUNCTION_TABLE__[(r6)>>2](i7);
+}
+	r5 = _ZTV22btBvhTriangleMeshShape;
+	r5 = (r5 + 8)|0;
+	heap32[(r4)] = r5;
+	heap32[(r4+13)] = 0;
+	heap32[(r4+14)] = 0;
+	r5 = 0;
+	heap8[r3+60] = r8;
+	heap8[r3+61] = r5;
+	heap32[(r4+1)] = 21;
+	heap32[(g0)] = r3;
+	_ZN22btBvhTriangleMeshShape17buildOptimizedBvhEv(i7);
+	heap32[(r1+12)] = 0;
+	heap32[(r1+13)] = -1043857408;
+	r4 = _ZL14benchmarkDemo4;
+	heap32[(r1+14)] = 0;
+	r5 = r4 >> 2;
+	heap32[(r1+15)] = 0;
+	r5 = heap32[(r5)];
+	r5 = r5 >> 2;
+	r5 = heap32[(r5+2)];
+	heap32[(g0)] = r4;
+	heap32[(g0+1)] = 0;
+	heap32[(g0+2)] = r0;
+	heap32[(g0+3)] = r3;
+	__FUNCTION_TABLE__[(r5)>>2](i7);
+	r2 = (r2 + 1)|0;
+	r3 = r_g0 >> 2;
+	heap32[(r3+56)] = 1063675494;
+	if(r2 !=8) //_LBB23_1
+{
+continue _1;
+}
+else{
+break _1;
+}
+}
+	return;
+}
+
+function _ZN13BenchmarkDemo11createTest6Ev(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+	var r6;
+	var r7;
+	var r8;
+	var f0;
+	var f1;
+	var f2;
+	var f3;
+	var f4;
+	var f5;
+	var f6;
+	var f7;
+	var f8;
+	var f9;
+var __label__ = 0;
+	i7 = sp + -112;var g0 = i7>>2; // save stack
+	r0 = gNumAlignedAllocs;
+	r0 = r0 >> 2;
+	r1 = heap32[(r0)];
+	r1 = (r1 + 1)|0;
+	heap32[(r0)] = r1;
+	heap32[(g0)] = 127;
+	malloc(i7);
+	r0 = r_g0;
+	if(r0 !=0) //_LBB24_2
+{
+	r1 = 0;
+	r2 = (r0 + 4)|0;
+	r1 = (r1 - r2)|0;
+	r1 = r1 & 15;
+	r1 = (r0 + r1)|0;
+	r2 = (r1 + 4)|0;
+	r1 = r1 >> 2;
+	heap32[(r1)] = r0;
+	r0 = r2;
+}
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = 0;
+	heap32[(g0+2)] = 0;
+	r1 = 0;
+	_ZN17btConvexHullShapeC1EPKfii(i7);
+_4: while(true){
+	r2 = (r1 * -3)|0;
+	r3 = _ZL7TaruVtx;
+	r2 = r2 << 2;
+	r2 = (r3 + r2)|0;
+	r3 = sp + -96;
+	r2 = r2 >> 2;
+	r4 = r3 >> 2;
+	heap32[(fp+-24)] = heap32[(r2)];
+	heap32[(r4+1)] = heap32[(r2+1)];
+	heap32[(r4+2)] = heap32[(r2+2)];
+	heap32[(r4+3)] = 0;
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r3;
+	r1 = (r1 + -1)|0;
+	_ZN17btConvexHullShape8addPointERK9btVector3(i7);
+	if(r1 ==-43) //_LBB24_10
+{
+break _4;
+}
+else{
+continue _4;
+}
+}
+	r1 = sp + -64;
+	r2 = r1 >> 2;
+	heap32[(fp+-16)] = 1065353216;
+	heap32[(r2+1)] = 0;
+	heap32[(r2+2)] = 0;
+	heap32[(r2+3)] = 0;
+	heap32[(r2+4)] = 0;
+	heap32[(r2+5)] = 1065353216;
+	heap32[(r2+6)] = 0;
+	heap32[(r2+7)] = 0;
+	heap32[(r2+8)] = 0;
+	heap32[(r2+9)] = 0;
+	heap32[(r2+10)] = 1065353216;
+	heap32[(r2+11)] = 0;
+	heap32[(r2+12)] = 0;
+	heap32[(r2+13)] = 0;
+	heap32[(r2+14)] = 0;
+	r3 = sp + -80;
+	heap32[(r2+15)] = 0;
+	r4 = r3 >> 2;
+	heap32[(fp+-20)] = 0;
+	heap32[(r4+1)] = 0;
+	heap32[(r4+2)] = 0;
+	r5 = r0 >> 2;
+	heap32[(r4+3)] = 0;
+	r4 = heap32[(r5)];
+	r4 = r4 >> 2;
+	r4 = heap32[(r4+8)];
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = 1065353216;
+	heap32[(g0+2)] = r3;
+	r3 = 10;
+	f0 =                        20;
+	f1 =                         2;
+	f2 =                       -25;
+	__FUNCTION_TABLE__[(r4)>>2](i7);
+	r7 = _ZL14benchmarkDemo4;
+_7: while(true){
+	f3 =                         3;
+	f4 =                        25;
+	f5 = f1+f3;
+	f4 = f0+f4;
+	r4 = 0;
+	r5 = r4;
+_9: while(true){
+	f6 = r5; //fitos r5, f6
+	f6 = f6*f5;
+	f6 = f6+f2;
+	f7 =                         5;
+	f6 = f6*f7;
+	f8 =                         0;
+	f6 = f6+f8;
+	r6 = r4;
+_11: while(true){
+	f9 = r6; //fitos r6, f9
+	f9 = f9*f5;
+	f9 = f9+f2;
+	f9 = f9*f7;
+	f9 = f9+f8;
+	heapFloat[(r2+12)] = f9;
+	heapFloat[(r2+13)] = f4;
+	heapFloat[(r2+14)] = f6;
+	r8 = r7 >> 2;
+	heap32[(r2+15)] = 0;
+	r8 = heap32[(r8)];
+	r8 = r8 >> 2;
+	r8 = heap32[(r8+2)];
+	heap32[(g0)] = r7;
+	heap32[(g0+1)] = 1065353216;
+	heap32[(g0+2)] = r1;
+	heap32[(g0+3)] = r0;
+	r6 = (r6 + 1)|0;
+	__FUNCTION_TABLE__[(r8)>>2](i7);
+	if(r6 !=10) //_LBB24_7
+{
+continue _11;
+}
+else{
+break _11;
+}
+}
+	r5 = (r5 + 1)|0;
+	if(r5 !=10) //_LBB24_6
+{
+continue _9;
+}
+else{
+break _9;
+}
+}
+	f4 =        1.1000000238418579;
+	f5 =      -0.05000000074505806;
+	f4 = f1*f4;
+	f1 = f1*f5;
+	f5 =                         9;
+	f3 = f4+f3;
+	f1 = f1*f5;
+	r3 = (r3 + -1)|0;
+	f0 = f0+f3;
+	f2 = f1+f2;
+	f1 = f4;
+	if(r3 ==0) //_LBB24_11
+{
+break _7;
+}
+else{
+continue _7;
+}
+}
+	_ZN13BenchmarkDemo19createLargeMeshBodyEv(i7);
+	return;
+}
+
+function _ZN7RagDoll20localCreateRigidBodyEfRK11btTransformP16btCollisionShape(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+	var r6;
+var __label__ = 0;
+	i7 = sp + -168;var g0 = i7>>2; // save stack
+	r0 = sp + -16;
+	r1 = r0 >> 2;
+	heap32[(fp+-4)] = 0;
+	heap32[(r1+1)] = 0;
+	r2 = heap32[(fp+2)];
+	heap32[(r1+2)] = 0;
+	r3 = r2 >> 2;
+	heap32[(r1+3)] = 0;
+	r3 = heap32[(r3)];
+	r3 = r3 >> 2;
+	r3 = heap32[(r3+8)];
+	heap32[(g0)] = r2;
+	heap32[(g0+1)] = 1065353216;
+	heap32[(g0+2)] = r0;
+	r0 = _ZGVZN11btTransform11getIdentityEvE17identityTransform;
+	__FUNCTION_TABLE__[(r3)>>2](i7);
+	r3 = heapU8[r0];
+if(!(r3 !=0)) //_LBB25_4
+{
+	r3 = _ZGVZN11btMatrix3x311getIdentityEvE14identityMatrix;
+	r4 = heapU8[r3];
+if(!(r4 !=0)) //_LBB25_3
+{
+	r4 = _ZZN11btMatrix3x311getIdentityEvE14identityMatrix_2E_0_2E_0_2E_0_2E_0;
+	r5 = _ZZN11btMatrix3x311getIdentityEvE14identityMatrix_2E_0_2E_1_2E_0_2E_1;
+	r4 = r4 >> 2;
+	r6 = _ZZN11btMatrix3x311getIdentityEvE14identityMatrix_2E_0_2E_2_2E_0_2E_2;
+	r5 = r5 >> 2;
+	heap32[(r4)] = 1065353216;
+	r4 = r6 >> 2;
+	heap32[(r5)] = 1065353216;
+	r5 = 1;
+	heap32[(r4)] = 1065353216;
+	heap8[r3] = r5;
+}
+	r3 = _ZZN11btTransform11getIdentityEvE17identityTransform;
+	r4 = _ZZN11btMatrix3x311getIdentityEvE14identityMatrix_2E_0_2E_0_2E_0_2E_0;
+	r3 = r3 >> 2;
+	r4 = r4 >> 2;
+	heap32[(r3)] = heap32[(r4)];
+	heap32[(r3+1)] = 0;
+	heap32[(r3+2)] = 0;
+	r4 = _ZZN11btMatrix3x311getIdentityEvE14identityMatrix_2E_0_2E_1_2E_0_2E_1;
+	heap32[(r3+3)] = 0;
+	r4 = r4 >> 2;
+	heap32[(r3+4)] = 0;
+	heap32[(r3+5)] = heap32[(r4)];
+	heap32[(r3+6)] = 0;
+	heap32[(r3+7)] = 0;
+	r4 = _ZZN11btMatrix3x311getIdentityEvE14identityMatrix_2E_0_2E_2_2E_0_2E_2;
+	heap32[(r3+8)] = 0;
+	r4 = r4 >> 2;
+	heap32[(r3+9)] = 0;
+	heap32[(r3+10)] = heap32[(r4)];
+	heap32[(r3+11)] = 0;
+	heap32[(r3+12)] = 0;
+	heap32[(r3+13)] = 0;
+	heap32[(r3+14)] = 0;
+	r4 = 1;
+	heap32[(r3+15)] = 0;
+	heap8[r0] = r4;
+}
+	r0 = heap32[(fp)];
+	r3 = heap32[(fp+1)];
+	heap32[(g0)] = 200;
+	r4 = _ZTV20btDefaultMotionState;
+	_Znwj(i7);
+	r6 = r_g0 >> 2;
+	r4 = (r4 + 8)|0;
+	r3 = r3 >> 2;
+	heap32[(r6)] = r4;
+	heap32[(r6+1)] = heap32[(r3)];
+	heap32[(r6+2)] = heap32[(r3+1)];
+	heap32[(r6+3)] = heap32[(r3+2)];
+	heap32[(r6+4)] = heap32[(r3+3)];
+	heap32[(r6+5)] = heap32[(r3+4)];
+	heap32[(r6+6)] = heap32[(r3+5)];
+	heap32[(r6+7)] = heap32[(r3+6)];
+	heap32[(r6+8)] = heap32[(r3+7)];
+	heap32[(r6+9)] = heap32[(r3+8)];
+	heap32[(r6+10)] = heap32[(r3+9)];
+	heap32[(r6+11)] = heap32[(r3+10)];
+	heap32[(r6+12)] = heap32[(r3+11)];
+	heap32[(r6+13)] = heap32[(r3+12)];
+	heap32[(r6+14)] = heap32[(r3+13)];
+	r4 = _ZZN11btTransform11getIdentityEvE17identityTransform;
+	heap32[(r6+15)] = heap32[(r3+14)];
+	r4 = r4 >> 2;
+	heap32[(r6+16)] = heap32[(r3+15)];
+	heap32[(r6+17)] = heap32[(r4)];
+	heap32[(r6+18)] = heap32[(r4+1)];
+	heap32[(r6+19)] = heap32[(r4+2)];
+	heap32[(r6+20)] = heap32[(r4+3)];
+	heap32[(r6+21)] = heap32[(r4+4)];
+	heap32[(r6+22)] = heap32[(r4+5)];
+	heap32[(r6+23)] = heap32[(r4+6)];
+	heap32[(r6+24)] = heap32[(r4+7)];
+	heap32[(r6+25)] = heap32[(r4+8)];
+	heap32[(r6+26)] = heap32[(r4+9)];
+	heap32[(r6+27)] = heap32[(r4+10)];
+	heap32[(r6+28)] = heap32[(r4+11)];
+	heap32[(r6+29)] = heap32[(r4+12)];
+	heap32[(r6+30)] = heap32[(r4+13)];
+	heap32[(r6+31)] = heap32[(r4+14)];
+	heap32[(r6+32)] = heap32[(r4+15)];
+	heap32[(r6+33)] = heap32[(r3)];
+	heap32[(r6+34)] = heap32[(r3+1)];
+	heap32[(r6+35)] = heap32[(r3+2)];
+	heap32[(r6+36)] = heap32[(r3+3)];
+	heap32[(r6+37)] = heap32[(r3+4)];
+	heap32[(r6+38)] = heap32[(r3+5)];
+	heap32[(r6+39)] = heap32[(r3+6)];
+	heap32[(r6+40)] = heap32[(r3+7)];
+	heap32[(r6+41)] = heap32[(r3+8)];
+	heap32[(r6+42)] = heap32[(r3+9)];
+	heap32[(r6+43)] = heap32[(r3+10)];
+	heap32[(r6+44)] = heap32[(r3+11)];
+	heap32[(r6+45)] = heap32[(r3+12)];
+	heap32[(r6+46)] = heap32[(r3+13)];
+	heap32[(r6+47)] = heap32[(r3+14)];
+	heap32[(r6+48)] = heap32[(r3+15)];
+	r3 = sp + -152;
+	heap32[(r6+49)] = 0;
+	r4 = r3 >> 2;
+	heap32[(fp+-38)] = 1065353216;
+	heap32[(r4+1)] = r_g0;
+	heap32[(r4+18)] = r2;
+	heap32[(r4+19)] = heap32[(fp+-4)];
+	heap32[(r4+20)] = heap32[(r1+1)];
+	heap32[(r4+21)] = heap32[(r1+2)];
+	heap32[(r4+22)] = heap32[(r1+3)];
+	heap32[(r4+23)] = 0;
+	heap32[(r4+24)] = 0;
+	heap32[(r4+25)] = 1056964608;
+	heap32[(r4+26)] = 0;
+	heap32[(r4+27)] = 1061997773;
+	r1 = 0;
+	heap32[(r4+28)] = 1065353216;
+	heap8[sp+-36] = r1;
+	heap32[(r4+30)] = 1000593162;
+	heap32[(r4+31)] = 1008981770;
+	heap32[(r4+32)] = 1008981770;
+	heap32[(r4+33)] = 1008981770;
+	heap32[(r4+2)] = 1065353216;
+	heap32[(r4+3)] = 0;
+	heap32[(r4+4)] = 0;
+	heap32[(r4+5)] = 0;
+	heap32[(r4+6)] = 0;
+	heap32[(r4+7)] = 1065353216;
+	heap32[(r4+8)] = 0;
+	heap32[(r4+9)] = 0;
+	heap32[(r4+10)] = 0;
+	heap32[(r4+11)] = 0;
+	heap32[(r4+12)] = 1065353216;
+	heap32[(r4+13)] = 0;
+	heap32[(r4+14)] = 0;
+	heap32[(r4+15)] = 0;
+	r2 = gNumAlignedAllocs;
+	heap32[(r4+16)] = 0;
+	r2 = r2 >> 2;
+	heap32[(r4+17)] = 0;
+	r4 = heap32[(r2)];
+	r4 = (r4 + 1)|0;
+	heap32[(r2)] = r4;
+	heap32[(g0)] = 627;
+	malloc(i7);
+	r2 = r_g0;
+	if(r2 !=0) //_LBB25_6
+{
+	r4 = (r2 + 4)|0;
+	r1 = (r1 - r4)|0;
+	r1 = r1 & 15;
+	r1 = (r2 + r1)|0;
+	r4 = (r1 + 4)|0;
+	r1 = r1 >> 2;
+	heap32[(r1)] = r2;
+	r2 = r4;
+}
+	r1 = r2 >> 2;
+	heap32[(r1+41)] = 1065353216;
+	heap32[(r1+42)] = 1065353216;
+	heap32[(r1+43)] = 1065353216;
+	heap32[(r1+44)] = 0;
+	heap32[(r1+45)] = 0;
+	heap32[(r1+46)] = 1566444395;
+	heap32[(r1+47)] = 0;
+	heap32[(r1+48)] = 0;
+	heap32[(r1+49)] = 0;
+	heap32[(r1+50)] = 0;
+	heap32[(r1+51)] = 1;
+	heap32[(r1+52)] = -1;
+	heap32[(r1+53)] = -1;
+	heap32[(r1+54)] = 1;
+	heap32[(r1+55)] = 0;
+	heap32[(r1+56)] = 1056964608;
+	heap32[(r1+57)] = 0;
+	heap32[(r1+58)] = 1;
+	heap32[(r1+59)] = 0;
+	heap32[(r1+60)] = 1065353216;
+	heap32[(r1+61)] = 0;
+	heap32[(r1+62)] = 0;
+	heap32[(r1+63)] = 0;
+	heap32[(r1+1)] = 1065353216;
+	heap32[(r1+2)] = 0;
+	heap32[(r1+3)] = 0;
+	heap32[(r1+4)] = 0;
+	heap32[(r1+5)] = 0;
+	heap32[(r1+6)] = 1065353216;
+	heap32[(r1+7)] = 0;
+	heap32[(r1+8)] = 0;
+	heap32[(r1+9)] = 0;
+	heap32[(r1+10)] = 0;
+	heap32[(r1+11)] = 1065353216;
+	heap32[(r1+12)] = 0;
+	heap32[(r1+13)] = 0;
+	heap32[(r1+14)] = 0;
+	r4 = _ZTV11btRigidBody;
+	heap32[(r1+15)] = 0;
+	r4 = (r4 + 8)|0;
+	heap32[(r1+16)] = 0;
+	r5 = 1;
+	heap32[(r1)] = r4;
+	heap8[r2+492] = r5;
+	heap32[(r1+122)] = 0;
+	heap32[(r1+120)] = 0;
+	heap32[(r1+121)] = 0;
+	heap32[(g0)] = r2;
+	heap32[(g0+1)] = r3;
+	_ZN11btRigidBody14setupRigidBodyERKNS_27btRigidBodyConstructionInfoE(i7);
+	r0 = r0 >> 2;
+	r0 = heap32[(r0+1)];
+	r1 = r0 >> 2;
+	r1 = heap32[(r1)];
+	r1 = r1 >> 2;
+	r1 = heap32[(r1+20)];
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r2;
+	__FUNCTION_TABLE__[(r1)>>2](i7);
+	r_g0 = r2;
+	return;
+}
+
+function _ZN13BenchmarkDemo11initPhysicsEv(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+	var r6;
+	var r7;
+	var r8;
+	var r9;
+	var r10;
+	var r11;
+	var r12;
+	var r13;
+	var r14;
+	var r15;
+	var f0;
+	var f1;
+	var f2;
+	var f3;
+	var f4;
+	var f5;
+	var f6;
+	var f7;
+	var f8;
+	var f9;
+	var f10;
+	var f11;
+	var f12;
+	var f13;
+	var f14;
+	var f15;
+	var f16;
+	var f17;
+	var f18;
+	var f19;
+	var f20;
+	var f21;
+var __label__ = 0;
+	i7 = sp + -41432;var g0 = i7>>2; // save stack
+	heap32[(g0)] = 88;
+	_Znwj(i7);
+	r0 = r_g0;
+	r1 = _ZTV31btDefaultCollisionConfiguration;
+	r2 = gNumAlignedAllocs;
+	r3 = r0 >> 2;
+	r1 = (r1 + 8)|0;
+	r2 = r2 >> 2;
+	heap32[(r3)] = r1;
+	r1 = heap32[(r2)];
+	r3 = (r1 + 1)|0;
+	heap32[(r2)] = r3;
+	heap32[(g0)] = 379;
+	malloc(i7);
+	r3 = r_g0;
+	if(r3 !=0) //_LBB26_2
+{
+	r4 = 0;
+	r5 = (r3 + 4)|0;
+	r4 = (r4 - r5)|0;
+	r4 = r4 & 15;
+	r4 = (r3 + r4)|0;
+	r5 = (r4 + 4)|0;
+	r4 = r4 >> 2;
+	heap32[(r4)] = r3;
+	r3 = r5;
+}
+	r4 = r3 >> 2;
+	heap32[(r4+77)] = 953267991;
+	r4 = heapU8[r3+332];
+	r4 = r4 & 240;
+	r5 = r0 >> 2;
+	heap8[r3+332] = r4;
+	r4 = (r1 + 2)|0;
+	heap32[(r5+8)] = r3;
+	heap32[(r2)] = r4;
+	heap32[(g0)] = 23;
+	malloc(i7);
+	r3 = r_g0;
+	if(r3 !=0) //_LBB26_5
+{
+	r4 = 0;
+	r6 = (r3 + 4)|0;
+	r4 = (r4 - r6)|0;
+	r4 = r4 & 15;
+	r4 = (r3 + r4)|0;
+	r6 = (r4 + 4)|0;
+	r4 = r4 >> 2;
+	heap32[(r4)] = r3;
+	r3 = r6;
+}
+	r4 = _ZTV30btGjkEpaPenetrationDepthSolver;
+	r6 = r3 >> 2;
+	r4 = (r4 + 8)|0;
+	heap32[(r6)] = r4;
+	r4 = (r1 + 3)|0;
+	heap32[(r5+9)] = r3;
+	heap32[(r2)] = r4;
+	heap32[(g0)] = 43;
+	malloc(i7);
+	r4 = r_g0;
+	if(r4 !=0) //_LBB26_8
+{
+	r3 = 0;
+	r6 = (r4 + 4)|0;
+	r3 = (r3 - r6)|0;
+	r3 = r3 & 15;
+	r3 = (r4 + r3)|0;
+	r6 = r3 >> 2;
+	heap32[(r6)] = r4;
+	r4 = (r3 + 4)|0;
+	r3 = heap32[(r5+9)];
+}
+	r6 = _ZTVN23btConvexConvexAlgorithm10CreateFuncE;
+	r7 = heap32[(r5+8)];
+	r8 = 0;
+	r9 = r4 >> 2;
+	r6 = (r6 + 8)|0;
+	heap8[r4+4] = r8;
+	heap32[(r9)] = r6;
+	heap32[(r9+4)] = 0;
+	heap32[(r9+5)] = 3;
+	heap32[(r9+3)] = r7;
+	heap32[(r9+2)] = r3;
+	r3 = (r1 + 4)|0;
+	heap32[(r5+10)] = r4;
+	heap32[(r2)] = r3;
+	heap32[(g0)] = 27;
+	malloc(i7);
+	r3 = r_g0;
+	if(r3 !=0) //_LBB26_11
+{
+	r4 = (r3 + 4)|0;
+	r4 = (r8 - r4)|0;
+	r4 = r4 & 15;
+	r4 = (r3 + r4)|0;
+	r6 = (r4 + 4)|0;
+	r4 = r4 >> 2;
+	heap32[(r4)] = r3;
+	r3 = r6;
+}
+	r4 = _ZTVN33btConvexConcaveCollisionAlgorithm10CreateFuncE;
+	r6 = r3 >> 2;
+	r4 = (r4 + 8)|0;
+	heap8[r3+4] = r8;
+	heap32[(r6)] = r4;
+	r4 = (r1 + 5)|0;
+	heap32[(r5+11)] = r3;
+	heap32[(r2)] = r4;
+	heap32[(g0)] = 27;
+	malloc(i7);
+	r3 = r_g0;
+	if(r3 !=0) //_LBB26_14
+{
+	r4 = (r3 + 4)|0;
+	r4 = (r8 - r4)|0;
+	r4 = r4 & 15;
+	r4 = (r3 + r4)|0;
+	r6 = (r4 + 4)|0;
+	r4 = r4 >> 2;
+	heap32[(r4)] = r3;
+	r3 = r6;
+}
+	r4 = _ZTVN33btConvexConcaveCollisionAlgorithm17SwappedCreateFuncE;
+	r6 = r3 >> 2;
+	r4 = (r4 + 8)|0;
+	heap8[r3+4] = r8;
+	heap32[(r6)] = r4;
+	r4 = (r1 + 6)|0;
+	heap32[(r5+12)] = r3;
+	heap32[(r2)] = r4;
+	heap32[(g0)] = 27;
+	malloc(i7);
+	r3 = r_g0;
+	if(r3 !=0) //_LBB26_17
+{
+	r4 = (r3 + 4)|0;
+	r4 = (r8 - r4)|0;
+	r4 = r4 & 15;
+	r4 = (r3 + r4)|0;
+	r6 = (r4 + 4)|0;
+	r4 = r4 >> 2;
+	heap32[(r4)] = r3;
+	r3 = r6;
+}
+	r4 = _ZTVN28btCompoundCollisionAlgorithm10CreateFuncE;
+	r6 = r3 >> 2;
+	r4 = (r4 + 8)|0;
+	heap8[r3+4] = r8;
+	heap32[(r6)] = r4;
+	r4 = (r1 + 7)|0;
+	heap32[(r5+13)] = r3;
+	heap32[(r2)] = r4;
+	heap32[(g0)] = 27;
+	malloc(i7);
+	r3 = r_g0;
+	if(r3 !=0) //_LBB26_20
+{
+	r4 = (r3 + 4)|0;
+	r4 = (r8 - r4)|0;
+	r4 = r4 & 15;
+	r4 = (r3 + r4)|0;
+	r6 = (r4 + 4)|0;
+	r4 = r4 >> 2;
+	heap32[(r4)] = r3;
+	r3 = r6;
+}
+	r4 = _ZTVN28btCompoundCollisionAlgorithm17SwappedCreateFuncE;
+	r6 = r3 >> 2;
+	r4 = (r4 + 8)|0;
+	heap8[r3+4] = r8;
+	heap32[(r6)] = r4;
+	r4 = (r1 + 8)|0;
+	heap32[(r5+14)] = r3;
+	heap32[(r2)] = r4;
+	heap32[(g0)] = 27;
+	malloc(i7);
+	r3 = r_g0;
+	if(r3 !=0) //_LBB26_23
+{
+	r4 = (r3 + 4)|0;
+	r4 = (r8 - r4)|0;
+	r4 = r4 & 15;
+	r4 = (r3 + r4)|0;
+	r6 = (r4 + 4)|0;
+	r4 = r4 >> 2;
+	heap32[(r4)] = r3;
+	r3 = r6;
+}
+	r4 = _ZTVN16btEmptyAlgorithm10CreateFuncE;
+	r6 = r3 >> 2;
+	r4 = (r4 + 8)|0;
+	heap8[r3+4] = r8;
+	heap32[(r6)] = r4;
+	r4 = (r1 + 9)|0;
+	heap32[(r5+15)] = r3;
+	heap32[(r2)] = r4;
+	heap32[(g0)] = 27;
+	malloc(i7);
+	r3 = r_g0;
+	if(r3 !=0) //_LBB26_26
+{
+	r4 = (r3 + 4)|0;
+	r4 = (r8 - r4)|0;
+	r4 = r4 & 15;
+	r4 = (r3 + r4)|0;
+	r6 = (r4 + 4)|0;
+	r4 = r4 >> 2;
+	heap32[(r4)] = r3;
+	r3 = r6;
+}
+	r4 = _ZTVN32btSphereSphereCollisionAlgorithm10CreateFuncE;
+	r6 = r3 >> 2;
+	r4 = (r4 + 8)|0;
+	heap8[r3+4] = r8;
+	heap32[(r6)] = r4;
+	r4 = (r1 + 10)|0;
+	heap32[(r5+16)] = r3;
+	heap32[(r2)] = r4;
+	heap32[(g0)] = 27;
+	malloc(i7);
+	r3 = r_g0;
+	if(r3 !=0) //_LBB26_29
+{
+	r4 = (r3 + 4)|0;
+	r4 = (r8 - r4)|0;
+	r4 = r4 & 15;
+	r4 = (r3 + r4)|0;
+	r6 = (r4 + 4)|0;
+	r4 = r4 >> 2;
+	heap32[(r4)] = r3;
+	r3 = r6;
+}
+	r4 = _ZTVN34btSphereTriangleCollisionAlgorithm10CreateFuncE;
+	r6 = r3 >> 2;
+	r4 = (r4 + 8)|0;
+	heap8[r3+4] = r8;
+	heap32[(r6)] = r4;
+	r6 = (r1 + 11)|0;
+	heap32[(r5+18)] = r3;
+	heap32[(r2)] = r6;
+	heap32[(g0)] = 27;
+	malloc(i7);
+	r3 = r_g0;
+	if(r3 !=0) //_LBB26_32
+{
+	r6 = (r3 + 4)|0;
+	r6 = (r8 - r6)|0;
+	r6 = r6 & 15;
+	r6 = (r3 + r6)|0;
+	r7 = (r6 + 4)|0;
+	r6 = r6 >> 2;
+	heap32[(r6)] = r3;
+	r3 = r7;
+}
+	r6 = r3 >> 2;
+	heap8[r3+4] = r8;
+	heap32[(r6)] = r4;
+	r4 = 1;
+	heap32[(r5+19)] = r3;
+	r6 = (r1 + 12)|0;
+	heap8[r3+4] = r4;
+	heap32[(r2)] = r6;
+	heap32[(g0)] = 27;
+	malloc(i7);
+	r3 = r_g0;
+	if(r3 !=0) //_LBB26_35
+{
+	r6 = (r3 + 4)|0;
+	r6 = (r8 - r6)|0;
+	r6 = r6 & 15;
+	r6 = (r3 + r6)|0;
+	r7 = (r6 + 4)|0;
+	r6 = r6 >> 2;
+	heap32[(r6)] = r3;
+	r3 = r7;
+}
+	r6 = _ZTVN26btBoxBoxCollisionAlgorithm10CreateFuncE;
+	r7 = r3 >> 2;
+	r6 = (r6 + 8)|0;
+	heap8[r3+4] = r8;
+	heap32[(r7)] = r6;
+	r6 = (r1 + 13)|0;
+	heap32[(r5+17)] = r3;
+	heap32[(r2)] = r6;
+	heap32[(g0)] = 35;
+	malloc(i7);
+	r3 = r_g0;
+	if(r3 !=0) //_LBB26_38
+{
+	r6 = (r3 + 4)|0;
+	r6 = (r8 - r6)|0;
+	r6 = r6 & 15;
+	r6 = (r3 + r6)|0;
+	r7 = (r6 + 4)|0;
+	r6 = r6 >> 2;
+	heap32[(r6)] = r3;
+	r3 = r7;
+}
+	r6 = _ZTVN31btConvexPlaneCollisionAlgorithm10CreateFuncE;
+	r7 = r3 >> 2;
+	r6 = (r6 + 8)|0;
+	heap8[r3+4] = r8;
+	heap32[(r7)] = r6;
+	heap32[(r7+2)] = 1;
+	heap32[(r7+3)] = 1;
+	r7 = (r1 + 14)|0;
+	heap32[(r5+21)] = r3;
+	heap32[(r2)] = r7;
+	heap32[(g0)] = 35;
+	malloc(i7);
+	r3 = r_g0;
+	if(r3 !=0) //_LBB26_41
+{
+	r7 = (r3 + 4)|0;
+	r7 = (r8 - r7)|0;
+	r7 = r7 & 15;
+	r7 = (r3 + r7)|0;
+	r9 = (r7 + 4)|0;
+	r7 = r7 >> 2;
+	heap32[(r7)] = r3;
+	r3 = r9;
+}
+	r7 = r3 >> 2;
+	heap8[r3+4] = r8;
+	heap32[(r7)] = r6;
+	heap32[(r7+2)] = 1;
+	heap32[(r7+3)] = 1;
+	heap32[(r5+20)] = r3;
+	heap8[r3+4] = r4;
+	r3 = (r1 + 15)|0;
+	heap8[r0+12] = r4;
+	heap32[(r2)] = r3;
+	heap32[(g0)] = 39;
+	malloc(i7);
+	r3 = r_g0;
+	if(r3 !=0) //_LBB26_44
+{
+	r6 = (r3 + 4)|0;
+	r6 = (r8 - r6)|0;
+	r6 = r6 & 15;
+	r6 = (r3 + r6)|0;
+	r7 = (r6 + 4)|0;
+	r6 = r6 >> 2;
+	heap32[(r6)] = r3;
+	r3 = r7;
+}
+	r6 = r3 >> 2;
+	heap32[(r6+1)] = 0;
+	heap32[(r6+3)] = 0;
+	heap8[r3+16] = r8;
+	heap32[(r6)] = 0;
+	r7 = (r1 + 16)|0;
+	heap32[(r6+2)] = 0;
+	heap32[(r2)] = r7;
+	heap32[(g0)] = 19;
+	malloc(i7);
+	r7 = r_g0;
+	if(r7 !=0) //_LBB26_47
+{
+	r9 = (r7 + 4)|0;
+	r9 = (r8 - r9)|0;
+	r9 = r9 & 15;
+	r9 = (r7 + r9)|0;
+	r10 = (r9 + 4)|0;
+	r9 = r9 >> 2;
+	heap32[(r9)] = r7;
+	r7 = r10;
+}
+	heap32[(r6)] = r7;
+	heap32[(r6+1)] = 0;
+	heap32[(r5+2)] = r3;
+	r3 = (r1 + 17)|0;
+	heap8[r0+20] = r4;
+	heap32[(r2)] = r3;
+	heap32[(g0)] = 39;
+	malloc(i7);
+	r3 = r_g0;
+	if(r3 !=0) //_LBB26_50
+{
+	r6 = (r3 + 4)|0;
+	r6 = (r8 - r6)|0;
+	r6 = r6 & 15;
+	r6 = (r3 + r6)|0;
+	r7 = (r6 + 4)|0;
+	r6 = r6 >> 2;
+	heap32[(r6)] = r3;
+	r3 = r7;
+}
+	r6 = r3 >> 2;
+	heap32[(r6)] = 1140;
+	r7 = (r1 + 18)|0;
+	heap32[(r6+1)] = 4096;
+	heap32[(r2)] = r7;
+	heap32[(g0)] = 4669459;
+	malloc(i7);
+	r7 = r_g0;
+	if(r7 !=0) //_LBB26_53
+{
+	r9 = (r7 + 4)|0;
+	r9 = (r8 - r9)|0;
+	r9 = r9 & 15;
+	r9 = (r7 + r9)|0;
+	r10 = (r9 + 4)|0;
+	r9 = r9 >> 2;
+	heap32[(r9)] = r7;
+	r7 = r10;
+}
+	heap32[(r6+4)] = r7;
+	r9 = 4095;
+	r10 = 1140;
+	heap32[(r6+3)] = r7;
+	heap32[(r6+2)] = 4096;
+	r11 = r7;
+_55: while(true){
+	r7 = r7 >> 2;
+	r10 = (r11 + r10)|0;
+	heap32[(r7)] = r10;
+	r10 = heap32[(r6)];
+	r7 = (r11 + r10)|0;
+	r9 = (r9 + -1)|0;
+	r11 = r7;
+	if(r9 !=0) //_LBB26_55
+{
+continue _55;
+}
+else{
+break _55;
+}
+}
+	r6 = r7 >> 2;
+	heap32[(r6)] = 0;
+	heap32[(r5+4)] = r3;
+	r3 = (r1 + 19)|0;
+	heap8[r0+28] = r4;
+	heap32[(r2)] = r3;
+	heap32[(g0)] = 39;
+	malloc(i7);
+	r3 = r_g0;
+	if(r3 !=0) //_LBB26_58
+{
+	r6 = (r3 + 4)|0;
+	r6 = (r8 - r6)|0;
+	r6 = r6 & 15;
+	r6 = (r3 + r6)|0;
+	r7 = (r6 + 4)|0;
+	r6 = r6 >> 2;
+	heap32[(r6)] = r3;
+	r3 = r7;
+}
+	r6 = r3 >> 2;
+	heap32[(r6)] = 80;
+	r1 = (r1 + 20)|0;
+	heap32[(r6+1)] = 4096;
+	heap32[(r2)] = r1;
+	heap32[(g0)] = 327699;
+	malloc(i7);
+	r1 = r_g0;
+	if(r1 !=0) //_LBB26_61
+{
+	r7 = (r1 + 4)|0;
+	r7 = (r8 - r7)|0;
+	r7 = r7 & 15;
+	r7 = (r1 + r7)|0;
+	r9 = (r7 + 4)|0;
+	r7 = r7 >> 2;
+	heap32[(r7)] = r1;
+	r1 = r9;
+}
+	heap32[(r6+4)] = r1;
+	r7 = 4095;
+	r9 = 80;
+	heap32[(r6+3)] = r1;
+	heap32[(r6+2)] = 4096;
+	r10 = r1;
+_64: while(true){
+	r1 = r1 >> 2;
+	r9 = (r10 + r9)|0;
+	heap32[(r1)] = r9;
+	r9 = heap32[(r6)];
+	r1 = (r10 + r9)|0;
+	r7 = (r7 + -1)|0;
+	r10 = r1;
+	if(r7 !=0) //_LBB26_63
+{
+continue _64;
+}
+else{
+break _64;
+}
+}
+	r1 = r1 >> 2;
+	r6 = _ZL14benchmarkDemo4;
+	heap32[(r1)] = 0;
+	r1 = r6 >> 2;
+	heap32[(r5+6)] = r3;
+	heap32[(r1+16)] = r0;
+	heap32[(g0)] = 5388;
+	_Znwj(i7);
+	r0 = r_g0;
+	r3 = _ZTV21btCollisionDispatcher;
+	r5 = heap32[(r1+16)];
+	r3 = (r3 + 8)|0;
+	r7 = r0 >> 2;
+	heap32[(r7)] = r3;
+	heap32[(r7+1)] = 2;
+	heap8[r0+24] = r4;
+	heap32[(r7+5)] = 0;
+	r3 = _ZTV16btManifoldResult;
+	heap32[(r7+3)] = 0;
+	r3 = (r3 + 8)|0;
+	heap32[(r7+4)] = 0;
+	heap32[(r7+7)] = r3;
+	r3 = _ZN21btCollisionDispatcher19defaultNearCallbackER16btBroadphasePairRS_RK16btDispatcherInfo__index__;
+	heap32[(r7+1346)] = r5;
+	heap32[(r7+47)] = r3;
+	r3 = r5 >> 2;
+	r9 = heap32[(r3)];
+	r9 = r9 >> 2;
+	r9 = heap32[(r9+3)];
+	heap32[(g0)] = r5;
+	__FUNCTION_TABLE__[(r9)>>2](i7);
+	heap32[(r7+48)] = r_g0;
+	r3 = heap32[(r3)];
+	r3 = r3 >> 2;
+	r3 = heap32[(r3+2)];
+	heap32[(g0)] = r5;
+	__FUNCTION_TABLE__[(r3)>>2](i7);
+	r5 = (r0 + 200)|0;
+	heap32[(r7+49)] = r_g0;
+_67: while(true){
+	if(r8 >35) //_LBB26_72
+{
+__label__ = 52;
+break _67;
+}
+else{
+	r3 = 0;
+_70: while(true){
+	if(r3 <36) //_LBB26_65
+{
+	r7 = r0 >> 2;
+	r7 = heap32[(r7+1346)];
+	r9 = r7 >> 2;
+	r9 = heap32[(r9)];
+	r9 = r9 >> 2;
+	r9 = heap32[(r9+5)];
+	r10 = r3 << 2;
+	heap32[(g0)] = r7;
+	heap32[(g0+1)] = r8;
+	heap32[(g0+2)] = r3;
+	r7 = (r5 + r10)|0;
+	r7 = r7 >> 2;
+	__FUNCTION_TABLE__[(r9)>>2](i7);
+	r9 = r_g0;
+	heap32[(r7)] = r9;
+	if(r9 !=0) //_LBB26_67
+{
+	r3 = (r3 + 1)|0;
+}
+else{
+__label__ = 46;
+break _67;
+}
+}
+else{
+break _70;
+}
+}
+	r8 = (r8 + 1)|0;
+	r5 = (r5 + 144)|0;
+continue _67;
+}
+}
+switch(__label__ ){//multiple entries
+case 52:
+	heap32[(r1+14)] = r0;
+	heap32[(g0)] = 76;
+	_Znwj(i7);
+	r0 = r_g0;
+	heap32[(g0)] = r0;
+	_ZN28btHashedOverlappingPairCacheC1Ev(i7);
+	r3 = heap32[(r2)];
+	r5 = (r3 + 1)|0;
+	heap32[(r2)] = r5;
+	heap32[(g0)] = 135;
+	malloc(i7);
+	r7 = r_g0;
+	if(r7 !=0) //_LBB26_74
+{
+	r8 = 0;
+	r9 = (r7 + 4)|0;
+	r8 = (r8 - r9)|0;
+	r8 = r8 & 15;
+	r8 = (r7 + r8)|0;
+	r9 = (r8 + 4)|0;
+	r8 = r8 >> 2;
+	heap32[(r8)] = r7;
+	r7 = r9;
+}
+	r8 = _ZTV20btAxisSweep3InternalItE;
+	r9 = r7 >> 2;
+	r8 = (r8 + 8)|0;
+	r10 = -2;
+	heap32[(r9)] = r8;
+	r8 = -1;
+	heap16[(r7+4)>>1] = r10;
+	heap16[(r7+6)>>1] = r8;
+	heap32[(r9+23)] = r0;
+	r8 = 0;
+	heap32[(r9+24)] = 0;
+	heap8[r7+100] = r8;
+	heap32[(r9+26)] = 0;
+	heap32[(r9+27)] = 0;
+	if(r0 ==0) //_LBB26_77
+{
+	r5 = (r3 + 2)|0;
+	heap32[(r2)] = r5;
+	heap32[(g0)] = 95;
+	malloc(i7);
+	r5 = r_g0;
+	if(r5 !=0) //_LBB26_79
+{
+	r0 = 0;
+	r3 = (r5 + 4)|0;
+	r0 = (r0 - r3)|0;
+	r0 = r0 & 15;
+	r0 = (r5 + r0)|0;
+	r3 = (r0 + 4)|0;
+	r0 = r0 >> 2;
+	heap32[(r0)] = r5;
+	r5 = r3;
+}
+	heap32[(g0)] = r5;
+	_ZN28btHashedOverlappingPairCacheC1Ev(i7);
+	heap32[(r9+23)] = r5;
+	heap8[r7+100] = r4;
+	r5 = heap32[(r2)];
+}
+	r0 = (r5 + 1)|0;
+	heap32[(r2)] = r0;
+	heap32[(g0)] = 43;
+	malloc(i7);
+	r0 = r_g0;
+	if(r0 !=0) //_LBB26_83
+{
+	r3 = (r0 + 4)|0;
+	r3 = (r8 - r3)|0;
+	r3 = r3 & 15;
+	r3 = (r0 + r3)|0;
+	r10 = (r3 + 4)|0;
+	r3 = r3 >> 2;
+	heap32[(r3)] = r0;
+	r0 = r10;
+}
+	r3 = _ZTV15btNullPairCache;
+	r10 = r0 >> 2;
+	r3 = (r3 + 8)|0;
+	heap32[(r10)] = r3;
+	heap8[r0+20] = r4;
+	heap32[(r10+4)] = 0;
+	heap32[(r10+2)] = 0;
+	heap32[(r10+3)] = 0;
+	r3 = (r5 + 2)|0;
+	heap32[(r9+28)] = r0;
+	heap32[(r2)] = r3;
+	heap32[(g0)] = 175;
+	malloc(i7);
+	r10 = r_g0;
+	if(r10 !=0) //_LBB26_86
+{
+	r11 = (r10 + 4)|0;
+	r11 = (r8 - r11)|0;
+	r11 = r11 & 15;
+	r11 = (r10 + r11)|0;
+	r12 = (r11 + 4)|0;
+	r11 = r11 >> 2;
+	heap32[(r11)] = r10;
+	r10 = r12;
+}
+	r11 = _ZTV16btDbvtBroadphase;
+	r12 = r10 >> 2;
+	r11 = (r11 + 8)|0;
+	heap32[(r12)] = r11;
+_92: while(true){
+	r11 = (r10 + r8)|0;
+	r13 = r11 >> 2;
+	heap8[r11+40] = r4;
+	heap32[(r13+9)] = 0;
+	heap32[(r13+7)] = 0;
+	heap32[(r13+8)] = 0;
+	heap32[(r13+1)] = 0;
+	heap32[(r13+2)] = 0;
+	heap32[(r13+3)] = -1;
+	r8 = (r8 + 40)|0;
+	heap32[(r13+4)] = 0;
+	heap32[(r13+5)] = 0;
+	if(r8 !=80) //_LBB26_88
+{
+continue _92;
+}
+else{
+break _92;
+}
+}
+	r8 = 0;
+	r11 = r0 == r8;
+	heap8[r10+153] = r8;
+	r11 = r11 & 1;
+	heap8[r10+154] = r4;
+	heap8[r10+152] = r11;
+	heap32[(r12+25)] = 0;
+	heap32[(r12+26)] = 0;
+	heap32[(r12+31)] = 0;
+	heap32[(r12+27)] = 1;
+	heap32[(r12+28)] = 0;
+	heap32[(r12+29)] = 10;
+	heap32[(r12+30)] = 1;
+	heap32[(r12+32)] = 0;
+	heap32[(r12+33)] = 0;
+	heap32[(r12+34)] = 0;
+	if(r0 ==0) //_LBB26_91
+{
+	r0 = (r5 + 3)|0;
+	heap32[(r2)] = r0;
+	heap32[(g0)] = 95;
+	malloc(i7);
+	r0 = r_g0;
+	if(r0 !=0) //_LBB26_93
+{
+	r3 = 0;
+	r5 = (r0 + 4)|0;
+	r3 = (r3 - r5)|0;
+	r3 = r3 & 15;
+	r3 = (r0 + r3)|0;
+	r5 = (r3 + 4)|0;
+	r3 = r3 >> 2;
+	heap32[(r3)] = r0;
+	r0 = r5;
+}
+	heap32[(g0)] = r0;
+	_ZN28btHashedOverlappingPairCacheC1Ev(i7);
+	r3 = heap32[(r2)];
+}
+	heap32[(r12+24)] = r0;
+	heap32[(r12+37)] = 0;
+	heap32[(r12+35)] = 0;
+	heap32[(r12+36)] = 0;
+	heap32[(r12+21)] = 0;
+	heap32[(r12+22)] = 0;
+	heap32[(r12+23)] = 0;
+	heap32[(r9+27)] = r10;
+	heap8[r10+153] = r4;
+	heap32[(r9+2)] = -998637568;
+	heap32[(r9+3)] = -998637568;
+	heap32[(r9+4)] = -998637568;
+	heap32[(r9+5)] = 0;
+	heap32[(r9+6)] = 1148846080;
+	heap32[(r9+7)] = 1148846080;
+	heap32[(r9+8)] = 1148846080;
+	heap32[(r9+9)] = 0;
+	r0 = heapU16[(r7+6)>>1];
+	f0 = uint(r0); //fuitos r0, f0
+	f1 =                      2000;
+	f0 = f0/f1;
+	heapFloat[(r9+10)] = f0;
+	heapFloat[(r9+11)] = f0;
+	heapFloat[(r9+12)] = f0;
+	r0 = (r3 + 1)|0;
+	heap32[(r9+13)] = 0;
+	heap32[(r2)] = r0;
+	heap32[(g0)] = 224083;
+	malloc(i7);
+	r0 = r_g0;
+	if(r0 !=0) //_LBB26_97
+{
+	r5 = (r0 + 4)|0;
+	r5 = (r8 - r5)|0;
+	r5 = r5 & 15;
+	r5 = (r0 + r5)|0;
+	r10 = (r5 + 4)|0;
+	r5 = r5 >> 2;
+	heap32[(r5)] = r0;
+	r0 = r10;
+}
+_103: while(true){
+	r5 = r8 << 6;
+	r5 = (r0 - r5)|0;
+	r5 = r5 >> 2;
+	r8 = (r8 + -1)|0;
+	heap32[(r5)] = 0;
+	heap32[(r5+2)] = 0;
+	if(r8 !=-3501) //_LBB26_98
+{
+continue _103;
+}
+else{
+break _103;
+}
+}
+	r5 = 3501;
+	heap32[(r9+15)] = r0;
+	r8 = 0;
+	heap16[(r7+58)>>1] = r5;
+	r5 = -112;
+	r10 = 2;
+	heap16[(r7+56)>>1] = r8;
+	heap16[(r7+64)>>1] = r4;
+_106: while(true){
+	r0 = (r0 - r5)|0;
+	heap16[(r0)>>1] = r10;
+	r5 = (r5 + -64)|0;
+	r0 = heap32[(r9+15)];
+	r10 = (r10 + 1)|0;
+	if(r5 !=-224112) //_LBB26_100
+{
+continue _106;
+}
+else{
+break _106;
+}
+}
+	r3 = (r3 + 2)|0;
+	heap16[(r0+224048)>>1] = r8;
+_109: while(true){
+	r0 = (r3 + r8)|0;
+	heap32[(r2)] = r0;
+	heap32[(g0)] = 28027;
+	malloc(i7);
+	r0 = r_g0;
+	if(r0 !=0) //_LBB26_104
+{
+	r5 = 0;
+	r10 = (r0 + 4)|0;
+	r5 = (r5 - r10)|0;
+	r5 = r5 & 15;
+	r5 = (r0 + r5)|0;
+	r10 = (r5 + 4)|0;
+	r5 = r5 >> 2;
+	heap32[(r5)] = r0;
+	r0 = r10;
+}
+	r5 = r8 << 2;
+	r5 = (r7 + r5)|0;
+	r5 = r5 >> 2;
+	r8 = (r8 + 1)|0;
+	heap32[(r5+20)] = r0;
+	heap32[(r5+17)] = r0;
+	if(r8 !=3) //_LBB26_102
+{
+continue _109;
+}
+else{
+break _109;
+}
+}
+	r0 = heap32[(r9+15)];
+	r0 = r0 >> 2;
+	heap32[(r0)] = 0;
+	r0 = heap32[(r9+15)];
+	r3 = 0;
+	heap16[(r0+48)>>1] = r3;
+	r0 = heap32[(r9+15)];
+	heap16[(r0+54)>>1] = r4;
+	r0 = heap32[(r9+17)];
+	heap16[(r0)>>1] = r3;
+	r0 = heap32[(r9+17)];
+	heap16[(r0+2)>>1] = r3;
+	r0 = heap32[(r9+17)];
+	r5 = heapU16[(r7+6)>>1];
+	heap16[(r0+4)>>1] = r5;
+	r0 = heap32[(r9+17)];
+	heap16[(r0+6)>>1] = r3;
+	r0 = heap32[(r9+15)];
+	heap16[(r0+50)>>1] = r3;
+	r0 = heap32[(r9+15)];
+	heap16[(r0+56)>>1] = r4;
+	r0 = heap32[(r9+18)];
+	heap16[(r0)>>1] = r3;
+	r0 = heap32[(r9+18)];
+	heap16[(r0+2)>>1] = r3;
+	r0 = heap32[(r9+18)];
+	r5 = heapU16[(r7+6)>>1];
+	heap16[(r0+4)>>1] = r5;
+	r0 = heap32[(r9+18)];
+	heap16[(r0+6)>>1] = r3;
+	r0 = heap32[(r9+15)];
+	heap16[(r0+52)>>1] = r3;
+	r0 = heap32[(r9+15)];
+	heap16[(r0+58)>>1] = r4;
+	r0 = heap32[(r9+19)];
+	heap16[(r0)>>1] = r3;
+	r0 = heap32[(r9+19)];
+	heap16[(r0+2)>>1] = r3;
+	r0 = heap32[(r9+19)];
+	r5 = heapU16[(r7+6)>>1];
+	heap16[(r0+4)>>1] = r5;
+	r0 = heap32[(r9+19)];
+	r5 = _ZTV12btAxisSweep3;
+	r5 = (r5 + 8)|0;
+	heap16[(r0+6)>>1] = r3;
+	heap32[(r9)] = r5;
+	heap32[(r1+13)] = r7;
+	heap32[(g0)] = 128;
+	r0 = _ZTV35btSequentialImpulseConstraintSolver;
+	_Znwj(i7);
+	r7 = r_g0 >> 2;
+	r0 = (r0 + 8)|0;
+	heap32[(r7)] = r0;
+	heap8[r_g0+20] = r4;
+	heap32[(r7+4)] = 0;
+	heap32[(r7+2)] = 0;
+	heap32[(r7+3)] = 0;
+	heap8[r_g0+40] = r4;
+	heap32[(r7+9)] = 0;
+	heap32[(r7+7)] = 0;
+	heap32[(r7+8)] = 0;
+	heap8[r_g0+60] = r4;
+	heap32[(r7+14)] = 0;
+	heap32[(r7+12)] = 0;
+	heap32[(r7+13)] = 0;
+	heap8[r_g0+80] = r4;
+	heap32[(r7+19)] = 0;
+	heap32[(r7+17)] = 0;
+	heap32[(r7+18)] = 0;
+	heap8[r_g0+100] = r4;
+	heap32[(r7+24)] = 0;
+	heap32[(r7+22)] = 0;
+	heap32[(r7+23)] = 0;
+	heap8[r_g0+120] = r4;
+	heap32[(r7+29)] = 0;
+	heap32[(r7+27)] = 0;
+	heap32[(r7+28)] = 0;
+	heap32[(r7+31)] = 0;
+	heap32[(r1+15)] = r_g0;
+	heap32[(g0)] = 272;
+	_Znwj(i7);
+	r5 = r_g0;
+	r7 = heap32[(r1+16)];
+	r8 = _ZTV16btCollisionWorld;
+	r9 = heap32[(r1+15)];
+	r10 = heap32[(r1+13)];
+	r11 = heap32[(r1+14)];
+	r8 = (r8 + 8)|0;
+	r12 = r5 >> 2;
+	heap32[(r12)] = r8;
+	heap8[r5+20] = r4;
+	heap32[(r12+4)] = 0;
+	heap32[(r12+2)] = 0;
+	heap32[(r12+3)] = 0;
+	heap32[(r12+6)] = r11;
+	heap32[(r12+7)] = 0;
+	heap32[(r12+8)] = 0;
+	heap32[(r12+9)] = 1;
+	heap32[(r12+10)] = 1065353216;
+	heap8[r5+44] = r3;
+	heap32[(r12+12)] = 0;
+	heap8[r5+52] = r3;
+	heap8[r5+53] = r4;
+	heap8[r5+54] = r4;
+	heap32[(r12+14)] = 1025758986;
+	heap8[r5+60] = r3;
+	heap32[(r12+16)] = 0;
+	heap8[r5+68] = r3;
+	heap32[(r12+18)] = 0;
+	heap32[(r12+20)] = r10;
+	heap32[(r12+21)] = 0;
+	r8 = r7 >> 2;
+	heap8[r5+88] = r4;
+	r8 = heap32[(r8)];
+	r8 = r8 >> 2;
+	r8 = heap32[(r8+4)];
+	heap32[(g0)] = r7;
+	__FUNCTION_TABLE__[(r8)>>2](i7);
+	heap32[(r12+19)] = r_g0;
+	heap32[(r12+18)] = r_g0;
+	heap32[(r12+23)] = 0;
+	heap32[(r12+24)] = 0;
+	heap32[(r12+25)] = 0;
+	heap32[(r12+26)] = 1058642330;
+	heap32[(r12+27)] = 1065353216;
+	heap32[(r12+28)] = 1050253722;
+	heap32[(r12+30)] = 0;
+	heap32[(r12+32)] = 1101004800;
+	heap32[(r12+31)] = 10;
+	heap32[(r12+34)] = 1045220557;
+	heap32[(r12+35)] = 1036831949;
+	heap32[(r12+36)] = 0;
+	heap32[(r12+33)] = 1065353216;
+	heap32[(r12+37)] = 0;
+	heap32[(r12+38)] = -1130113270;
+	heap32[(r12+39)] = 0;
+	heap32[(r12+40)] = 1062836634;
+	heap32[(r12+41)] = 260;
+	r7 = _ZTV23btDiscreteDynamicsWorld;
+	heap32[(r12+42)] = 2;
+	r7 = (r7 + 8)|0;
+	heap32[(r12+43)] = 128;
+	heap32[(r12)] = r7;
+	heap32[(r12+44)] = r9;
+	heap8[r5+200] = r4;
+	heap32[(r12+49)] = 0;
+	heap32[(r12+47)] = 0;
+	heap32[(r12+48)] = 0;
+	heap8[r5+220] = r4;
+	heap32[(r12+54)] = 0;
+	heap32[(r12+52)] = 0;
+	heap32[(r12+53)] = 0;
+	heap32[(r12+56)] = 0;
+	heap32[(r12+57)] = -1054867456;
+	heap32[(r12+58)] = 0;
+	heap32[(r12+59)] = 0;
+	heap32[(r12+60)] = 0;
+	heap8[r5+246] = r3;
+	heap8[r5+264] = r4;
+	heap32[(r12+65)] = 0;
+	heap32[(r12+63)] = 0;
+	heap32[(r12+64)] = 0;
+	heap32[(r12+67)] = 0;
+	if(r9 !=0) //_LBB26_111
+{
+	heap8[r5+245] = r3;
+	r7 = heap32[(r2)];
+}
+else{
+	r7 = heap32[(r2)];
+	r7 = (r7 + 1)|0;
+	heap32[(r2)] = r7;
+	heap32[(g0)] = 147;
+	malloc(i7);
+	r8 = r_g0;
+	if(r8 !=0) //_LBB26_109
+{
+	r9 = 0;
+	r10 = (r8 + 4)|0;
+	r9 = (r9 - r10)|0;
+	r9 = r9 & 15;
+	r9 = (r8 + r9)|0;
+	r10 = (r9 + 4)|0;
+	r9 = r9 >> 2;
+	heap32[(r9)] = r8;
+	r8 = r10;
+}
+	r9 = r8 >> 2;
+	heap32[(r9)] = r0;
+	heap8[r8+20] = r4;
+	heap32[(r9+4)] = 0;
+	heap32[(r9+2)] = 0;
+	heap32[(r9+3)] = 0;
+	heap8[r8+40] = r4;
+	heap32[(r9+9)] = 0;
+	heap32[(r9+7)] = 0;
+	heap32[(r9+8)] = 0;
+	heap8[r8+60] = r4;
+	heap32[(r9+14)] = 0;
+	heap32[(r9+12)] = 0;
+	heap32[(r9+13)] = 0;
+	heap8[r8+80] = r4;
+	heap32[(r9+19)] = 0;
+	heap32[(r9+17)] = 0;
+	heap32[(r9+18)] = 0;
+	heap8[r8+100] = r4;
+	heap32[(r9+24)] = 0;
+	heap32[(r9+22)] = 0;
+	heap32[(r9+23)] = 0;
+	heap8[r8+120] = r4;
+	heap32[(r9+29)] = 0;
+	heap32[(r9+27)] = 0;
+	heap32[(r9+28)] = 0;
+	r0 = r5 >> 2;
+	heap32[(r9+31)] = 0;
+	heap32[(r0+44)] = r8;
+	heap8[r5+245] = r4;
+}
+	r0 = (r7 + 1)|0;
+	heap32[(r2)] = r0;
+	heap32[(g0)] = 87;
+	malloc(i7);
+	r0 = r_g0;
+	if(r0 !=0) //_LBB26_114
+{
+	r7 = (r0 + 4)|0;
+	r7 = (r3 - r7)|0;
+	r7 = r7 & 15;
+	r7 = (r0 + r7)|0;
+	r8 = (r7 + 4)|0;
+	r7 = r7 >> 2;
+	heap32[(r7)] = r0;
+	r0 = r8;
+}
+	r7 = _ZTV25btSimulationIslandManager;
+	r8 = r0 >> 2;
+	r7 = (r7 + 8)|0;
+	heap32[(r8)] = r7;
+	heap8[r0+20] = r4;
+	heap32[(r8+4)] = 0;
+	heap32[(r8+2)] = 0;
+	heap32[(r8+3)] = 0;
+	heap8[r0+40] = r4;
+	heap32[(r8+9)] = 0;
+	heap32[(r8+7)] = 0;
+	heap32[(r8+8)] = 0;
+	heap8[r0+60] = r4;
+	heap32[(r8+14)] = 0;
+	heap32[(r8+12)] = 0;
+	heap32[(r8+13)] = 0;
+	r7 = r5 >> 2;
+	heap8[r0+64] = r4;
+	heap32[(r7+45)] = r0;
+	heap8[r5+244] = r4;
+	heap32[(r1+1)] = r5;
+	r0 = heap32[(r7+41)];
+	r0 = r0 | 32;
+	heap32[(r7+41)] = r0;
+	heap32[(r7+31)] = 5;
+	heap32[(r1+2)] = 0;
+	r0 = heap32[(r1+1)];
+	r5 = r0 >> 2;
+	r5 = heap32[(r5)];
+	r5 = r5 >> 2;
+	r5 = heap32[(r5+17)];
+	r7 = sp + -41280;
+	r8 = r7 >> 2;
+	heap32[(fp+-10320)] = 0;
+	heap32[(r8+1)] = -1054867456;
+	heap32[(r8+2)] = 0;
+	heap32[(r8+3)] = 0;
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r7;
+	__FUNCTION_TABLE__[(r5)>>2](i7);
+	r0 = heap32[(r1+17)];
+	if(r0 <5) //_LBB26_117
+{
+	r0 = heap32[(r2)];
+	r5 = (r0 + 1)|0;
+	heap32[(r2)] = r5;
+	heap32[(g0)] = 71;
+	malloc(i7);
+	r5 = r_g0;
+	if(r5 !=0) //_LBB26_119
+{
+	r7 = 0;
+	r8 = (r5 + 4)|0;
+	r7 = (r7 - r8)|0;
+	r7 = r7 & 15;
+	r7 = (r5 + r7)|0;
+	r8 = (r7 + 4)|0;
+	r7 = r7 >> 2;
+	heap32[(r7)] = r5;
+	r5 = r8;
+}
+	r7 = r5 >> 2;
+	heap32[(r7+2)] = 0;
+	heap32[(r7+3)] = 1065353216;
+	heap32[(r7+4)] = 1065353216;
+	heap32[(r7+5)] = 1065353216;
+	r8 = _ZTV10btBoxShape;
+	heap32[(r7+6)] = 0;
+	r8 = (r8 + 8)|0;
+	heap32[(r7+11)] = 1025758986;
+	heap32[(r7)] = r8;
+	heap32[(r7+1)] = 0;
+	heap32[(r7+7)] = 1132066243;
+	heap32[(r7+8)] = 1112004362;
+	heap32[(r7+9)] = 1132066243;
+	heap32[(r7+10)] = 0;
+	r7 = heap32[(r1+5)];
+	r8 = heap32[(r1+4)];
+	if(r7 ==r8) //_LBB26_122
+{
+	r9 = r8 << 1;
+	r9 = r8 == 0 ? r4 : r9;
+if(!(r7 >=r9)) //_LBB26_121
+{
+	if(r9 !=0) //_LBB26_125
+{
+	r7 = r9 << 2;
+	r0 = (r0 + 2)|0;
+	r7 = r7 | 3;
+	heap32[(r2)] = r0;
+	r0 = (r7 + 16)|0;
+	heap32[(g0)] = r0;
+	malloc(i7);
+	r0 = r_g0;
+	if(r0 !=0) //_LBB26_127
+{
+	r7 = 0;
+	r10 = (r0 + 4)|0;
+	r7 = (r7 - r10)|0;
+	r7 = r7 & 15;
+	r7 = (r0 + r7)|0;
+	r10 = (r7 + 4)|0;
+	r7 = r7 >> 2;
+	heap32[(r7)] = r0;
+	r0 = r10;
+}
+}
+else{
+	r0 = 0;
+}
+_138: do {
+	if(r8 <1) //_LBB26_130
+{
+	r10 = heap32[(r1+6)];
+}
+else{
+	r7 = 0;
+_141: while(true){
+	r10 = heap32[(r1+6)];
+	r11 = r7 << 2;
+	r12 = (r10 + r11)|0;
+	r12 = r12 >> 2;
+	r11 = (r0 + r11)|0;
+	r12 = heap32[(r12)];
+	r7 = (r7 + 1)|0;
+	r11 = r11 >> 2;
+	heap32[(r11)] = r12;
+if(!(r8 !=r7)) //_LBB26_131
+{
+break _138;
+}
+}
+}
+} while(0);
+	if(r10 !=0) //_LBB26_134
+{
+	r7 = heapU8[r6+28];
+	if(r7 !=0) //_LBB26_136
+{
+	r8 = gNumAlignedFree;
+	r8 = r8 >> 2;
+	r7 = heap32[(r8)];
+	r7 = (r7 + 1)|0;
+	r10 = r10 >> 2;
+	heap32[(r8)] = r7;
+	r8 = heap32[(r10+-1)];
+	heap32[(g0)] = r8;
+	free(i7);
+	r8 = heap32[(r1+4)];
+}
+	heap32[(r1+6)] = 0;
+}
+	heap8[r6+28] = r4;
+	heap32[(r1+6)] = r0;
+	heap32[(r1+5)] = r9;
+}
+}
+	r0 = r8 << 2;
+	r7 = heap32[(r1+6)];
+	r0 = (r7 + r0)|0;
+	r0 = r0 >> 2;
+	heap32[(r0)] = r5;
+	r0 = heap32[(r1+4)];
+	r0 = (r0 + 1)|0;
+	r7 = _ZGVZN11btTransform11getIdentityEvE17identityTransform;
+	heap32[(r1+4)] = r0;
+	r0 = heapU8[r7];
+if(!(r0 !=0)) //_LBB26_143
+{
+	r0 = _ZGVZN11btMatrix3x311getIdentityEvE14identityMatrix;
+	r8 = heapU8[r0];
+if(!(r8 !=0)) //_LBB26_142
+{
+	r8 = _ZZN11btMatrix3x311getIdentityEvE14identityMatrix_2E_0_2E_0_2E_0_2E_0;
+	r9 = _ZZN11btMatrix3x311getIdentityEvE14identityMatrix_2E_0_2E_1_2E_0_2E_1;
+	r8 = r8 >> 2;
+	r10 = _ZZN11btMatrix3x311getIdentityEvE14identityMatrix_2E_0_2E_2_2E_0_2E_2;
+	r9 = r9 >> 2;
+	heap32[(r8)] = 1065353216;
+	r8 = r10 >> 2;
+	heap32[(r9)] = 1065353216;
+	heap32[(r8)] = 1065353216;
+	heap8[r0] = r4;
+}
+	r0 = _ZZN11btTransform11getIdentityEvE17identityTransform;
+	r8 = _ZZN11btMatrix3x311getIdentityEvE14identityMatrix_2E_0_2E_0_2E_0_2E_0;
+	r0 = r0 >> 2;
+	r8 = r8 >> 2;
+	heap32[(r0)] = heap32[(r8)];
+	heap32[(r0+1)] = 0;
+	heap32[(r0+2)] = 0;
+	r8 = _ZZN11btMatrix3x311getIdentityEvE14identityMatrix_2E_0_2E_1_2E_0_2E_1;
+	heap32[(r0+3)] = 0;
+	r8 = r8 >> 2;
+	heap32[(r0+4)] = 0;
+	heap32[(r0+5)] = heap32[(r8)];
+	heap32[(r0+6)] = 0;
+	heap32[(r0+7)] = 0;
+	r8 = _ZZN11btMatrix3x311getIdentityEvE14identityMatrix_2E_0_2E_2_2E_0_2E_2;
+	heap32[(r0+8)] = 0;
+	r8 = r8 >> 2;
+	heap32[(r0+9)] = 0;
+	heap32[(r0+10)] = heap32[(r8)];
+	heap32[(r0+11)] = 0;
+	heap32[(r0+12)] = 0;
+	heap32[(r0+13)] = 0;
+	heap32[(r0+14)] = 0;
+	heap32[(r0+15)] = 0;
+	heap8[r7] = r4;
+}
+	heap32[(g0)] = 200;
+	r0 = _ZTV20btDefaultMotionState;
+	_Znwj(i7);
+	r8 = r_g0 >> 2;
+	r0 = (r0 + 8)|0;
+	heap32[(r8)] = r0;
+	heap32[(r8+1)] = 1065353216;
+	heap32[(r8+2)] = 0;
+	heap32[(r8+3)] = 0;
+	heap32[(r8+4)] = 0;
+	heap32[(r8+5)] = 0;
+	heap32[(r8+6)] = 1065353216;
+	heap32[(r8+7)] = 0;
+	heap32[(r8+8)] = 0;
+	heap32[(r8+9)] = 0;
+	heap32[(r8+10)] = 0;
+	heap32[(r8+11)] = 1065353216;
+	heap32[(r8+12)] = 0;
+	heap32[(r8+13)] = 0;
+	heap32[(r8+14)] = -1035468800;
+	r0 = _ZZN11btTransform11getIdentityEvE17identityTransform;
+	heap32[(r8+15)] = 0;
+	r0 = r0 >> 2;
+	heap32[(r8+16)] = 0;
+	heap32[(r8+17)] = heap32[(r0)];
+	heap32[(r8+18)] = heap32[(r0+1)];
+	heap32[(r8+19)] = heap32[(r0+2)];
+	heap32[(r8+20)] = heap32[(r0+3)];
+	heap32[(r8+21)] = heap32[(r0+4)];
+	heap32[(r8+22)] = heap32[(r0+5)];
+	heap32[(r8+23)] = heap32[(r0+6)];
+	heap32[(r8+24)] = heap32[(r0+7)];
+	heap32[(r8+25)] = heap32[(r0+8)];
+	heap32[(r8+26)] = heap32[(r0+9)];
+	heap32[(r8+27)] = heap32[(r0+10)];
+	heap32[(r8+28)] = heap32[(r0+11)];
+	heap32[(r8+29)] = heap32[(r0+12)];
+	heap32[(r8+30)] = heap32[(r0+13)];
+	heap32[(r8+31)] = heap32[(r0+14)];
+	heap32[(r8+32)] = heap32[(r0+15)];
+	heap32[(r8+33)] = 1065353216;
+	heap32[(r8+34)] = 0;
+	heap32[(r8+35)] = 0;
+	heap32[(r8+36)] = 0;
+	heap32[(r8+37)] = 0;
+	heap32[(r8+38)] = 1065353216;
+	heap32[(r8+39)] = 0;
+	heap32[(r8+40)] = 0;
+	heap32[(r8+41)] = 0;
+	heap32[(r8+42)] = 0;
+	heap32[(r8+43)] = 1065353216;
+	heap32[(r8+44)] = 0;
+	heap32[(r8+45)] = 0;
+	heap32[(r8+46)] = -1035468800;
+	heap32[(r8+47)] = 0;
+	heap32[(r8+48)] = 0;
+	r0 = sp + -41416;
+	heap32[(r8+49)] = 0;
+	r8 = r0 >> 2;
+	heap32[(fp+-10354)] = 0;
+	heap32[(r8+1)] = r_g0;
+	heap32[(r8+18)] = r5;
+	heap32[(r8+19)] = 0;
+	heap32[(r8+20)] = 0;
+	heap32[(r8+21)] = 0;
+	heap32[(r8+22)] = 0;
+	heap32[(r8+23)] = 0;
+	heap32[(r8+24)] = 0;
+	heap32[(r8+25)] = 1056964608;
+	heap32[(r8+26)] = 0;
+	heap32[(r8+27)] = 1061997773;
+	r5 = 0;
+	heap32[(r8+28)] = 1065353216;
+	heap8[sp+-41300] = r5;
+	heap32[(r8+30)] = 1000593162;
+	heap32[(r8+31)] = 1008981770;
+	heap32[(r8+32)] = 1008981770;
+	heap32[(r8+33)] = 1008981770;
+	heap32[(r8+2)] = 1065353216;
+	heap32[(r8+3)] = 0;
+	heap32[(r8+4)] = 0;
+	heap32[(r8+5)] = 0;
+	heap32[(r8+6)] = 0;
+	heap32[(r8+7)] = 1065353216;
+	heap32[(r8+8)] = 0;
+	heap32[(r8+9)] = 0;
+	heap32[(r8+10)] = 0;
+	heap32[(r8+11)] = 0;
+	heap32[(r8+12)] = 1065353216;
+	heap32[(r8+13)] = 0;
+	heap32[(r8+14)] = 0;
+	heap32[(r8+15)] = 0;
+	heap32[(r8+16)] = 0;
+	heap32[(r8+17)] = 0;
+	r7 = heap32[(r2)];
+	r7 = (r7 + 1)|0;
+	heap32[(r2)] = r7;
+	heap32[(g0)] = 627;
+	malloc(i7);
+	r7 = r_g0;
+	if(r7 !=0) //_LBB26_145
+{
+	r8 = (r7 + 4)|0;
+	r5 = (r5 - r8)|0;
+	r5 = r5 & 15;
+	r5 = (r7 + r5)|0;
+	r8 = (r5 + 4)|0;
+	r5 = r5 >> 2;
+	heap32[(r5)] = r7;
+	r7 = r8;
+}
+	r5 = r7 >> 2;
+	heap32[(r5+41)] = 1065353216;
+	heap32[(r5+42)] = 1065353216;
+	heap32[(r5+43)] = 1065353216;
+	heap32[(r5+44)] = 0;
+	heap32[(r5+45)] = 0;
+	heap32[(r5+46)] = 1566444395;
+	heap32[(r5+47)] = 0;
+	heap32[(r5+48)] = 0;
+	heap32[(r5+49)] = 0;
+	heap32[(r5+50)] = 0;
+	heap32[(r5+51)] = 1;
+	heap32[(r5+52)] = -1;
+	heap32[(r5+53)] = -1;
+	heap32[(r5+54)] = 1;
+	heap32[(r5+55)] = 0;
+	heap32[(r5+56)] = 1056964608;
+	heap32[(r5+57)] = 0;
+	heap32[(r5+58)] = 1;
+	heap32[(r5+59)] = 0;
+	heap32[(r5+60)] = 1065353216;
+	heap32[(r5+61)] = 0;
+	heap32[(r5+62)] = 0;
+	heap32[(r5+63)] = 0;
+	heap32[(r5+1)] = 1065353216;
+	heap32[(r5+2)] = 0;
+	heap32[(r5+3)] = 0;
+	heap32[(r5+4)] = 0;
+	heap32[(r5+5)] = 0;
+	heap32[(r5+6)] = 1065353216;
+	heap32[(r5+7)] = 0;
+	heap32[(r5+8)] = 0;
+	heap32[(r5+9)] = 0;
+	heap32[(r5+10)] = 0;
+	heap32[(r5+11)] = 1065353216;
+	heap32[(r5+12)] = 0;
+	heap32[(r5+13)] = 0;
+	heap32[(r5+14)] = 0;
+	r8 = _ZTV11btRigidBody;
+	heap32[(r5+15)] = 0;
+	r8 = (r8 + 8)|0;
+	heap32[(r5+16)] = 0;
+	heap32[(r5)] = r8;
+	heap8[r7+492] = r4;
+	heap32[(r5+122)] = 0;
+	heap32[(r5+120)] = 0;
+	heap32[(r5+121)] = 0;
+	heap32[(g0)] = r7;
+	heap32[(g0+1)] = r0;
+	_ZN11btRigidBody14setupRigidBodyERKNS_27btRigidBodyConstructionInfoE(i7);
+	r0 = heap32[(r1+1)];
+	r5 = r0 >> 2;
+	r5 = heap32[(r5)];
+	r5 = r5 >> 2;
+	r5 = heap32[(r5+20)];
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r7;
+	__FUNCTION_TABLE__[(r5)>>2](i7);
+	r0 = heap32[(r1+17)];
+}
+_161: do {
+	if(r0 >3) //_LBB26_151
+{
+	if(r0 >5) //_LBB26_154
+{
+	if(r0 ==6) //_LBB26_325
+{
+	_ZN13BenchmarkDemo11createTest6Ev(i7);
+	return;
+}
+else{
+	if(r0 ==7) //_LBB26_326
+{
+	_ZN13BenchmarkDemo11createTest6Ev(i7);
+	r0 = sp + -41264;
+	heap32[(g0)] = 8;
+	r1 = r0 >> 2;
+	_Znwj(i7);
+	heap32[(r1+10006)] = r_g0;
+	heap32[(g0)] = r_g0;
+	heap32[(g0+1)] = 0;
+	gettimeofday(i7);
+	heap32[(r1+10000)] = 0;
+	heap32[(r1+10001)] = 0;
+	heap32[(r1+10005)] = 0;
+	heap32[(r1+10004)] = 9999;
+	heap32[(r1+10003)] = 0;
+	heap32[(r1+10002)] = 0;
+	heap32[(r1+10007)] = 1092616192;
+	heap32[(r1+10008)] = 0;
+	heap32[(r1+10009)] = 0;
+	heap32[(r1+10010)] = 1112014848;
+	heap32[(r1+10011)] = 1065353216;
+	f3 =                         0;
+_169: while(true){
+	f0 = r3; //fitos r3, f0
+	f1 =      0.025132741779088974;
+	f0 = f0*f1;
+	f1 =                       0.5;
+	f0 = f0*f1;
+	heapFloat[(g0)] = f0;
+	sinf(i7);
+	f2 =                         1;
+	f1 = f_g0/f2;
+	f2 = f1*f3;
+	heapFloat[(g0)] = f0;
+	cosf(i7);
+	f4 = -f2;
+	f5 = f_g0*f3;
+	f6 = f2*f3;
+	f7 = f4-f2;
+	f8 = f_g0+f2;
+	f8 = f8-f6;
+	f7 = f7-f6;
+	f9 = f5+f2;
+	f9 = f9-f6;
+	f5 = f5+f6;
+	f6 = f7*f4;
+	f10 = f8*f_g0;
+	f5 = f5-f1;
+	f11 = f9*f_g0;
+	f7 = f7*f1;
+	f10 = f6+f10;
+	f4 = f9*f4;
+	r2 = r3 << 4;
+	f0 = f5*f_g0;
+	f7 = f11-f7;
+	f9 = f5*f2;
+	f10 = f10+f4;
+	f5 = f5*f1;
+	r2 = (r0 + r2)|0;
+	f0 = f6+f0;
+	f1 = f8*f1;
+	f6 = f7-f9;
+	f2 = f8*f2;
+	f5 = f10+f5;
+	f7 =                      2500;
+	f0 = f0-f1;
+	f1 = f6+f2;
+	r2 = r2 >> 2;
+	f2 = f5*f7;
+	f0 = f0-f4;
+	f1 = f1*f7;
+	heapFloat[(r2+4000)] = f2;
+	f0 = f0*f7;
+	heapFloat[(r2+4001)] = f1;
+	heapFloat[(r2+4002)] = f0;
+	heap32[(r2+4003)] = 0;
+	f1 = heapFloat[(r1+10008)];
+	heapFloat[(r2)] = f1;
+	heap32[(r2+1)] = 1112014848;
+	heap32[(r2+2)] = 0;
+	f1 = f1+f2;
+	heap32[(r2+3)] = 0;
+	f0 = f0+f3;
+	heapFloat[(r2+2000)] = f1;
+	heapFloat[(r2+2002)] = f0;
+	heap32[(r2+2003)] = 0;
+	heap32[(r2+2001)] = -998637568;
+	heap32[(r2+8000)] = 1065353216;
+	heap32[(r2+8001)] = 0;
+	r3 = (r3 + 1)|0;
+	heap32[(r2+8002)] = 0;
+	heap32[(r2+8003)] = 0;
+if(!(r3 !=500)) //_LBB26_327
+{
+break _169;
+}
+}
+	r2 = _ZL10raycastBar;
+	heap32[(g0)] = r2;
+	heap32[(g0+1)] = r0;
+	heap32[(g0+2)] = 8000;
+	memcpy(i7);
+	r3 = (r2 + 8000)|0;
+	r4 = (r0 + 8000)|0;
+	heap32[(g0)] = r3;
+	heap32[(g0+1)] = r4;
+	heap32[(g0+2)] = 8000;
+	memcpy(i7);
+	r3 = (r2 + 16000)|0;
+	r4 = (r0 + 16000)|0;
+	heap32[(g0)] = r3;
+	heap32[(g0+1)] = r4;
+	heap32[(g0+2)] = 8000;
+	memcpy(i7);
+	r3 = (r2 + 24000)|0;
+	r4 = (r0 + 24000)|0;
+	heap32[(g0)] = r3;
+	heap32[(g0+1)] = r4;
+	heap32[(g0+2)] = 8000;
+	memcpy(i7);
+	r3 = (r2 + 32000)|0;
+	r0 = (r0 + 32000)|0;
+	heap32[(g0)] = r3;
+	heap32[(g0+1)] = r0;
+	heap32[(g0+2)] = 8000;
+	memcpy(i7);
+	r0 = r2 >> 2;
+	r2 = heap32[(r1+10000)];
+	heap32[(r0+10000)] = r2;
+	r2 = heap32[(r1+10001)];
+	heap32[(r0+10001)] = r2;
+	r2 = heap32[(r1+10002)];
+	heap32[(r0+10002)] = r2;
+	r2 = heap32[(r1+10003)];
+	heap32[(r0+10003)] = r2;
+	r2 = heap32[(r1+10004)];
+	heap32[(r0+10004)] = r2;
+	r2 = heap32[(r1+10005)];
+	heap32[(r0+10005)] = r2;
+	r2 = heap32[(r1+10006)];
+	r2 = r2 >> 2;
+	r3 = heap32[(r0+10006)];
+	r4 = heap32[(r2+1)];
+	r2 = heap32[(r2)];
+	r3 = r3 >> 2;
+	heap32[(r3)] = r2;
+	heap32[(r3+1)] = r4;
+	heap32[(r0+10007)] = heap32[(r1+10007)];
+	heap32[(r0+10008)] = heap32[(r1+10008)];
+	heap32[(r0+10009)] = heap32[(r1+10009)];
+	heap32[(r0+10010)] = heap32[(r1+10010)];
+	heap32[(r0+10011)] = heap32[(r1+10011)];
+	r0 = heap32[(r1+10006)];
+	heap32[(g0)] = r0;
+	_ZdlPv(i7);
+	return;
+}
+else{
+break _161;
+}
+}
+}
+else{
+	if(r0 ==4) //_LBB26_291
+{
+	r3 = heap32[(r2)];
+	r3 = (r3 + 1)|0;
+	heap32[(r2)] = r3;
+	heap32[(g0)] = 127;
+	malloc(i7);
+	r2 = r_g0;
+	if(r2 !=0) //_LBB26_293
+{
+	r3 = 0;
+	r4 = (r2 + 4)|0;
+	r3 = (r3 - r4)|0;
+	r3 = r3 & 15;
+	r3 = (r2 + r3)|0;
+	r4 = (r3 + 4)|0;
+	r3 = r3 >> 2;
+	heap32[(r3)] = r2;
+	r2 = r4;
+}
+	heap32[(g0)] = r2;
+	heap32[(g0+1)] = 0;
+	heap32[(g0+2)] = 0;
+	r3 = r2 >> 2;
+	_ZN17btConvexHullShapeC1EPKfii(i7);
+	r4 = heap32[(r3)];
+	r4 = r4 >> 2;
+	r4 = heap32[(r4+6)];
+	r0 = sp + -96;
+	r5 = r0 >> 2;
+	heap32[(fp+-24)] = 1065353216;
+	heap32[(r5+1)] = 1065353216;
+	heap32[(r5+2)] = 1065353216;
+	heap32[(r5+3)] = 0;
+	heap32[(g0)] = r2;
+	heap32[(g0+1)] = r0;
+	r0 = 0;
+	__FUNCTION_TABLE__[(r4)>>2](i7);
+_178: while(true){
+	r4 = (r0 * -3)|0;
+	r5 = _ZL7TaruVtx;
+	r4 = r4 << 2;
+	r4 = (r5 + r4)|0;
+	r5 = sp + -80;
+	r4 = r4 >> 2;
+	r7 = r5 >> 2;
+	heap32[(fp+-20)] = heap32[(r4)];
+	heap32[(r7+1)] = heap32[(r4+1)];
+	heap32[(r7+2)] = heap32[(r4+2)];
+	heap32[(r7+3)] = 0;
+	heap32[(g0)] = r2;
+	heap32[(g0+1)] = r5;
+	r0 = (r0 + -1)|0;
+	_ZN17btConvexHullShape8addPointERK9btVector3(i7);
+	if(r0 ==-43) //_LBB26_301
+{
+break _178;
+}
+}
+	r4 = sp + -160;
+	r0 = r4 >> 2;
+	heap32[(fp+-40)] = 1065353216;
+	heap32[(r0+1)] = 0;
+	heap32[(r0+2)] = 0;
+	heap32[(r0+3)] = 0;
+	heap32[(r0+4)] = 0;
+	heap32[(r0+5)] = 1065353216;
+	heap32[(r0+6)] = 0;
+	heap32[(r0+7)] = 0;
+	heap32[(r0+8)] = 0;
+	heap32[(r0+9)] = 0;
+	heap32[(r0+10)] = 1065353216;
+	heap32[(r0+11)] = 0;
+	heap32[(r0+12)] = 0;
+	heap32[(r0+13)] = 0;
+	heap32[(r0+14)] = 0;
+	r5 = sp + -176;
+	heap32[(r0+15)] = 0;
+	r7 = r5 >> 2;
+	heap32[(fp+-44)] = 0;
+	heap32[(r7+1)] = 0;
+	heap32[(r7+2)] = 0;
+	heap32[(r7+3)] = 0;
+	r3 = heap32[(r3)];
+	r3 = r3 >> 2;
+	r7 = heap32[(r3+8)];
+	heap32[(g0)] = r2;
+	heap32[(g0+1)] = 1065353216;
+	heap32[(g0+2)] = r5;
+	r3 = 15;
+	f0 =                         3;
+	f2 =                       -18;
+	f3 =                       1.5;
+	__FUNCTION_TABLE__[(r7)>>2](i7);
+	f1 = f0;
+_181: while(true){
+	f4 = f3+f0;
+	r5 = 0;
+	r7 = r5;
+_183: while(true){
+	f5 = r7; //fitos r7, f5
+	f5 = f5*f4;
+	f5 = f5+f2;
+	r8 = r5;
+_185: while(true){
+	f6 = r8; //fitos r8, f6
+	f6 = f6*f4;
+	f6 = f6+f2;
+	heapFloat[(r0+12)] = f6;
+	heapFloat[(r0+13)] = f1;
+	heapFloat[(r0+14)] = f5;
+	heap32[(r0+15)] = 0;
+	r9 = heap32[(r1)];
+	r9 = r9 >> 2;
+	r9 = heap32[(r9+2)];
+	heap32[(g0)] = r6;
+	heap32[(g0+1)] = 1065353216;
+	heap32[(g0+2)] = r4;
+	heap32[(g0+3)] = r2;
+	r8 = (r8 + 1)|0;
+	__FUNCTION_TABLE__[(r9)>>2](i7);
+if(!(r8 !=8)) //_LBB26_298
+{
+break _185;
+}
+}
+	r7 = (r7 + 1)|0;
+if(!(r7 !=8)) //_LBB26_297
+{
+break _183;
+}
+}
+	f4 =        1.0099999904632568;
+	f5 =      -0.05000000074505806;
+	f4 = f3*f4;
+	f6 =                         3;
+	f3 = f3*f5;
+	f5 =                         7;
+	f6 = f4+f6;
+	f3 = f3*f5;
+	r3 = (r3 + -1)|0;
+	f1 = f1+f6;
+	f2 = f3+f2;
+	f3 = f4;
+	if(r3 ==0) //_LBB26_165
+{
+break _161;
+}
+else{
+continue _181;
+}
+}
+}
+else{
+	if(r0 ==5) //_LBB26_302
+{
+	r3 = 10;
+	f0 =                        20;
+	f1 =                         2;
+	f2 =                       -25;
+_191: while(true){
+	f3 =                         3;
+	f4 =                        25;
+	f5 = f1+f3;
+	f4 = f0+f4;
+	r0 = 0;
+	r5 = r0;
+_193: while(true){
+	f6 = r5; //fitos r5, f6
+	f6 = f6*f5;
+	f6 = f6+f2;
+	f7 =                         5;
+	f6 = f6*f7;
+	f8 =                         0;
+	f6 = f6+f8;
+	r7 = r0;
+_195: while(true){
+	r8 = _ZL8nextRand;
+	r8 = r8 >> 2;
+	r9 = heap32[(r8)];
+	r9 = (r9 * 214013)|0;
+	r9 = (r9 + 2531011)|0;
+	r10 = sp + -64;
+	heap32[(r8)] = r9;
+	r8 = r10 >> 2;
+	heap32[(fp+-16)] = 1065353216;
+	heap32[(r8+1)] = 0;
+	heap32[(r8+2)] = 0;
+	heap32[(r8+3)] = 0;
+	heap32[(r8+4)] = 0;
+	heap32[(r8+5)] = 1065353216;
+	heap32[(r8+6)] = 0;
+	heap32[(r8+7)] = 0;
+	f9 = r7; //fitos r7, f9
+	heap32[(r8+8)] = 0;
+	f9 = f9*f5;
+	heap32[(r8+9)] = 0;
+	f9 = f9+f2;
+	heap32[(r8+10)] = 1065353216;
+	f9 = f9*f7;
+	f9 = f9+f8;
+	heap32[(r8+11)] = 0;
+	r9 = r9 >>> 16;
+	heapFloat[(r8+12)] = f9;
+	r9 = r9 & 32767;
+	heapFloat[(r8+13)] = f4;
+	r9 = Math.floor(uint(r9) % uint(9));
+	heapFloat[(r8+14)] = f6;
+	heap32[(r8+15)] = 0;
+if(!(uint(r9) >uint(8))) //_LBB26_321
+{
+	r8 = r4 << r9;
+	r11 = r8 & 7;
+	if(r11 !=0) //_LBB26_309
+{
+	r8 = heap32[(r2)];
+	r8 = (r8 + 1)|0;
+	heap32[(r2)] = r8;
+	r9 = (r9 + 1)|0;
+	f9 = r9; //fitos r9, f9
+	f10 =                       0.5;
+	heap32[(g0)] = 71;
+	f9 = f9*f10;
+	f10 =                       1.5;
+	malloc(i7);
+	r9 = r_g0;
+	f10 = f9*f10;
+	if(r9 !=0) //_LBB26_311
+{
+	r8 = 0;
+	r11 = (r9 + 4)|0;
+	r8 = (r8 - r11)|0;
+	r8 = r8 & 15;
+	r8 = (r9 + r8)|0;
+	r11 = (r8 + 4)|0;
+	r8 = r8 >> 2;
+	heap32[(r8)] = r9;
+	r9 = r11;
+}
+	r8 = r9 >> 2;
+	heap32[(r8+2)] = 0;
+	heap32[(r8+3)] = 1065353216;
+	heap32[(r8+4)] = 1065353216;
+	heap32[(r8+5)] = 1065353216;
+	r11 = _ZTV10btBoxShape;
+	heap32[(r8+6)] = 0;
+	r11 = (r11 + 8)|0;
+	heap32[(r8+11)] = 1025758986;
+	heap32[(r8)] = r11;
+	f11 =     -0.039999999105930328;
+	f10 = f10+f11;
+	heap32[(r8+1)] = 0;
+	heapFloat[(r8+7)] = f10;
+	heapFloat[(r8+8)] = f10;
+	heapFloat[(r8+9)] = f10;
+	heap32[(r8+10)] = 0;
+	r8 = heap32[(r1)];
+	r8 = r8 >> 2;
+	r8 = heap32[(r8+2)];
+	heap32[(g0)] = r6;
+	heapFloat[(g0+1)] = f9;
+	heap32[(g0+2)] = r10;
+	heap32[(g0+3)] = r9;
+	__FUNCTION_TABLE__[(r8)>>2](i7);
+}
+else{
+	r11 = r8 & 56;
+	if(r11 !=0) //_LBB26_313
+{
+	r8 = heap32[(r2)];
+	r8 = (r8 + 1)|0;
+	heap32[(r2)] = r8;
+	r9 = (r9 + -2)|0;
+	heap32[(g0)] = 71;
+	f9 = r9; //fitos r9, f9
+	f10 =                       0.5;
+	malloc(i7);
+	r9 = r_g0;
+	f9 = f9*f10;
+	if(r9 !=0) //_LBB26_315
+{
+	r8 = 0;
+	r11 = (r9 + 4)|0;
+	r8 = (r8 - r11)|0;
+	r8 = r8 & 15;
+	r8 = (r9 + r8)|0;
+	r11 = (r8 + 4)|0;
+	r8 = r8 >> 2;
+	heap32[(r8)] = r9;
+	r9 = r11;
+}
+	r8 = r9 >> 2;
+	heap32[(r8+2)] = 0;
+	heap32[(r8+3)] = 1065353216;
+	heap32[(r8+4)] = 1065353216;
+	r11 = _ZTV13btSphereShape;
+	heap32[(r8+5)] = 1065353216;
+	r11 = (r11 + 8)|0;
+	heap32[(r8+6)] = 0;
+	heap32[(r8)] = r11;
+	f10 =                       1.5;
+	f10 = f9*f10;
+	heap32[(r8+1)] = 8;
+	heapFloat[(r8+7)] = f10;
+	heapFloat[(r8+11)] = f10;
+	r8 = heap32[(r1)];
+	r8 = r8 >> 2;
+	r8 = heap32[(r8+2)];
+	heap32[(g0)] = r6;
+	heapFloat[(g0+1)] = f9;
+	heap32[(g0+2)] = r10;
+	heap32[(g0+3)] = r9;
+	__FUNCTION_TABLE__[(r8)>>2](i7);
+}
+else{
+	r8 = r8 & 448;
+	if(r8 !=0) //_LBB26_317
+{
+	r8 = heap32[(r2)];
+	r8 = (r8 + 1)|0;
+	heap32[(r2)] = r8;
+	r8 = (r9 + -5)|0;
+	heap32[(g0)] = 75;
+	f9 = r8; //fitos r8, f9
+	f10 =                       0.5;
+	malloc(i7);
+	r8 = r_g0;
+	f9 = f9*f10;
+	if(r8 !=0) //_LBB26_319
+{
+	r9 = 0;
+	r11 = (r8 + 4)|0;
+	r9 = (r9 - r11)|0;
+	r9 = r9 & 15;
+	r9 = (r8 + r9)|0;
+	r11 = (r9 + 4)|0;
+	r9 = r9 >> 2;
+	heap32[(r9)] = r8;
+	r8 = r11;
+}
+	r9 = r8 >> 2;
+	heap32[(r9+2)] = 0;
+	heap32[(r9+3)] = 1065353216;
+	heap32[(r9+4)] = 1065353216;
+	heap32[(r9+5)] = 1065353216;
+	r11 = _ZTV14btCapsuleShape;
+	heap32[(r9+6)] = 0;
+	r11 = (r11 + 8)|0;
+	heap32[(r9+11)] = 1025758986;
+	heap32[(r9)] = r11;
+	heap32[(r9+1)] = 10;
+	heap32[(r9+13)] = 1;
+	f11 = f9+f9;
+	f10 = f11*f10;
+	heapFloat[(r9+7)] = f9;
+	heapFloat[(r9+8)] = f10;
+	heapFloat[(r9+9)] = f9;
+	heap32[(r9+10)] = 0;
+	r9 = heap32[(r1)];
+	r9 = r9 >> 2;
+	r9 = heap32[(r9+2)];
+	heap32[(g0)] = r6;
+	heapFloat[(g0+1)] = f9;
+	heap32[(g0+2)] = r10;
+	heap32[(g0+3)] = r8;
+	__FUNCTION_TABLE__[(r9)>>2](i7);
+}
+}
+}
+}
+	r7 = (r7 + 1)|0;
+if(!(r7 !=10)) //_LBB26_305
+{
+break _195;
+}
+}
+	r5 = (r5 + 1)|0;
+if(!(r5 !=10)) //_LBB26_304
+{
+break _193;
+}
+}
+	f4 =        1.1000000238418579;
+	f5 =      -0.05000000074505806;
+	f4 = f1*f4;
+	f1 = f1*f5;
+	f5 =                         9;
+	f3 = f4+f3;
+	f1 = f1*f5;
+	r3 = (r3 + -1)|0;
+	f0 = f0+f3;
+	f2 = f1+f2;
+	f1 = f4;
+if(!(r3 !=0)) //_LBB26_303
+{
+break _191;
+}
+}
+	_ZN13BenchmarkDemo19createLargeMeshBodyEv(i7);
+	return;
+}
+else{
+break _161;
+}
+}
+}
+}
+else{
+	if(r0 ==1) //_LBB26_156
+{
+	r3 = heap32[(r2)];
+	r3 = (r3 + 1)|0;
+	heap32[(r2)] = r3;
+	heap32[(g0)] = 71;
+	malloc(i7);
+	r2 = r_g0;
+	if(r2 !=0) //_LBB26_158
+{
+	r3 = 0;
+	r4 = (r2 + 4)|0;
+	r3 = (r3 - r4)|0;
+	r3 = r3 & 15;
+	r3 = (r2 + r3)|0;
+	r4 = (r3 + 4)|0;
+	r3 = r3 >> 2;
+	heap32[(r3)] = r2;
+	r2 = r4;
+}
+	r3 = r2 >> 2;
+	heap32[(r3+2)] = 0;
+	heap32[(r3+3)] = 1065353216;
+	heap32[(r3+4)] = 1065353216;
+	heap32[(r3+5)] = 1065353216;
+	r4 = _ZTV10btBoxShape;
+	heap32[(r3+6)] = 0;
+	r4 = (r4 + 8)|0;
+	heap32[(r3+11)] = 1025758986;
+	heap32[(r3)] = r4;
+	heap32[(r3+1)] = 0;
+	heap32[(r3+7)] = 1064682127;
+	heap32[(r3+8)] = 1064682127;
+	heap32[(r3+9)] = 1064682127;
+	r4 = sp + -1152;
+	heap32[(r3+10)] = 0;
+	r3 = r4 >> 2;
+	heap32[(fp+-288)] = 0;
+	heap32[(r3+1)] = 0;
+	heap32[(r3+2)] = 0;
+	heap32[(r3+3)] = 0;
+	heap32[(g0)] = r2;
+	heap32[(g0+1)] = 1073741824;
+	heap32[(g0+2)] = r4;
+	_ZNK10btBoxShape21calculateLocalInertiaEfR9btVector3(i7);
+	r3 = sp + -1216;
+	r4 = r3 >> 2;
+	heap32[(fp+-304)] = 1065353216;
+	heap32[(r4+1)] = 0;
+	heap32[(r4+2)] = 0;
+	heap32[(r4+3)] = 0;
+	heap32[(r4+4)] = 0;
+	heap32[(r4+5)] = 1065353216;
+	heap32[(r4+6)] = 0;
+	heap32[(r4+7)] = 0;
+	heap32[(r4+8)] = 0;
+	heap32[(r4+9)] = 0;
+	heap32[(r4+10)] = 1065353216;
+	heap32[(r4+11)] = 0;
+	heap32[(r4+12)] = 0;
+	heap32[(r4+13)] = 0;
+	r0 = 47;
+	f0 =                       -12;
+	f1 =                         2;
+	heap32[(r4+14)] = 0;
+	heap32[(r4+15)] = 0;
+_225: while(true){
+	r5 = 0;
+	r7 = r5;
+_227: while(true){
+	f2 = r7; //fitos r7, f2
+	f3 =                         3;
+	f2 = f2*f3;
+	f2 = f2+f0;
+	r8 = r5;
+_229: while(true){
+	f4 = r8; //fitos r8, f4
+	f4 = f4*f3;
+	f4 = f4+f0;
+	heapFloat[(r4+12)] = f4;
+	heapFloat[(r4+13)] = f1;
+	heapFloat[(r4+14)] = f2;
+	heap32[(r4+15)] = 0;
+	r9 = heap32[(r1)];
+	r9 = r9 >> 2;
+	r9 = heap32[(r9+2)];
+	heap32[(g0)] = r6;
+	heap32[(g0+1)] = 1073741824;
+	heap32[(g0+2)] = r3;
+	heap32[(g0+3)] = r2;
+	r8 = (r8 + 1)|0;
+	__FUNCTION_TABLE__[(r9)>>2](i7);
+if(!(r8 !=8)) //_LBB26_161
+{
+break _229;
+}
+}
+	r7 = (r7 + 1)|0;
+if(!(r7 !=8)) //_LBB26_160
+{
+break _227;
+}
+}
+	f2 =      -0.34999999403953552;
+	r0 = (r0 + -1)|0;
+	f1 = f1+f3;
+	f0 = f0+f2;
+	if(r0 ==0) //_LBB26_165
+{
+break _161;
+}
+else{
+continue _225;
+}
+}
+}
+else{
+	if(r0 ==2) //_LBB26_166
+{
+	r3 = heap32[(r2)];
+	r3 = (r3 + 1)|0;
+	heap32[(r2)] = r3;
+	heap32[(g0)] = 71;
+	malloc(i7);
+	r3 = r_g0;
+	if(r3 !=0) //_LBB26_168
+{
+	r4 = 0;
+	r0 = (r3 + 4)|0;
+	r4 = (r4 - r0)|0;
+	r4 = r4 & 15;
+	r4 = (r3 + r4)|0;
+	r0 = (r4 + 4)|0;
+	r4 = r4 >> 2;
+	heap32[(r4)] = r3;
+	r3 = r0;
+}
+	r4 = r3 >> 2;
+	heap32[(r4+2)] = 0;
+	heap32[(r4+3)] = 1065353216;
+	heap32[(r4+4)] = 1065353216;
+	heap32[(r4+5)] = 1065353216;
+	r0 = _ZTV10btBoxShape;
+	heap32[(r4+6)] = 0;
+	r0 = (r0 + 8)|0;
+	heap32[(r4+11)] = 1025758986;
+	heap32[(r4)] = r0;
+	heap32[(r4+1)] = 0;
+	heap32[(r4+7)] = 1064682127;
+	heap32[(r4+8)] = 1064682127;
+	heap32[(r4+9)] = 1064682127;
+	r5 = sp + -1024;
+	heap32[(r4+10)] = 0;
+	r4 = r5 >> 2;
+	heap32[(fp+-256)] = 1065353216;
+	heap32[(r4+1)] = 0;
+	heap32[(r4+2)] = 0;
+	heap32[(r4+3)] = 0;
+	heap32[(r4+4)] = 0;
+	heap32[(r4+5)] = 1065353216;
+	heap32[(r4+6)] = 0;
+	heap32[(r4+7)] = 0;
+	heap32[(r4+8)] = 0;
+	heap32[(r4+9)] = 0;
+	heap32[(r4+10)] = 1065353216;
+	heap32[(r4+11)] = 0;
+	heap32[(r4+12)] = 0;
+	heap32[(r4+13)] = 0;
+	heap32[(r4+14)] = 0;
+	r7 = sp + -1040;
+	heap32[(r4+15)] = 0;
+	r8 = r7 >> 2;
+	heap32[(fp+-260)] = 0;
+	heap32[(r8+1)] = 0;
+	heap32[(r8+2)] = 0;
+	heap32[(r8+3)] = 0;
+	heap32[(g0)] = r3;
+	heap32[(g0+1)] = 1065353216;
+	heap32[(g0+2)] = r7;
+	r7 = 12;
+	f0 =       -12.240598678588867;
+	f1 =                         1;
+	_ZNK10btBoxShape21calculateLocalInertiaEfR9btVector3(i7);
+	f2 = f0;
+	f8 =                       -20;
+_239: while(true){
+if(!(r7 <1)) //_LBB26_173
+{
+	f4 =                         0;
+	f3 = f1+f4;
+	r8 = 0;
+	r9 = r8;
+_243: while(true){
+	f5 = r9; //fitos r9, f5
+	f6 =        2.0400998592376709;
+	f5 = f5*f6;
+	f5 = f5+f0;
+	f5 = f5+f4;
+	r10 = r8;
+_245: while(true){
+	f7 = r10; //fitos r10, f7
+	f7 = f7*f6;
+	f7 = f7+f2;
+	f7 = f7+f8;
+	heapFloat[(r4+12)] = f7;
+	heapFloat[(r4+13)] = f3;
+	heapFloat[(r4+14)] = f5;
+	heap32[(r4+15)] = 0;
+	r11 = heap32[(r1)];
+	r11 = r11 >> 2;
+	r11 = heap32[(r11+2)];
+	heap32[(g0)] = r6;
+	heap32[(g0+1)] = 1065353216;
+	heap32[(g0+2)] = r5;
+	heap32[(g0+3)] = r3;
+	r10 = (r10 + 1)|0;
+	__FUNCTION_TABLE__[(r11)>>2](i7);
+if(!(r7 !=r10)) //_LBB26_171
+{
+break _245;
+}
+}
+	r9 = (r9 + 1)|0;
+if(!(r7 !=r9)) //_LBB26_170
+{
+break _243;
+}
+}
+}
+	f3 =        2.0400998592376709;
+	f4 =        1.0199999809265137;
+	r7 = (r7 + -1)|0;
+	f1 = f1+f3;
+	f0 = f0+f4;
+	f2 = f2+f4;
+	if(r7 ==0) //_LBB26_176
+{
+break _239;
+}
+}
+	r3 = sp + -1136;
+	r4 = r3 >> 2;
+	heap32[(fp+-284)] = 1065353216;
+	heap32[(r4+1)] = 1065353216;
+	heap32[(r4+2)] = 1065353216;
+	r5 = sp + -1120;
+	heap32[(r4+3)] = 0;
+	r4 = r5 >> 2;
+	heap32[(fp+-280)] = -1073741824;
+	heap32[(r4+1)] = 0;
+	heap32[(r4+2)] = 0;
+	heap32[(r4+3)] = 0;
+	heap32[(g0)] = r5;
+	heap32[(g0+1)] = r3;
+	r3 = sp + -1104;
+	_ZN13BenchmarkDemo10createWallERK9btVector3iS2_(i7);
+	r4 = r3 >> 2;
+	heap32[(fp+-276)] = 1065353216;
+	heap32[(r4+1)] = 1065353216;
+	heap32[(r4+2)] = 1065353216;
+	r5 = sp + -1088;
+	heap32[(r4+3)] = 0;
+	r4 = r5 >> 2;
+	heap32[(fp+-272)] = 1082130432;
+	heap32[(r4+1)] = 0;
+	heap32[(r4+2)] = 0;
+	heap32[(r4+3)] = 0;
+	heap32[(g0)] = r5;
+	heap32[(g0+1)] = r3;
+	r3 = sp + -1072;
+	_ZN13BenchmarkDemo10createWallERK9btVector3iS2_(i7);
+	r4 = r3 >> 2;
+	heap32[(fp+-268)] = 1065353216;
+	heap32[(r4+1)] = 1065353216;
+	heap32[(r4+2)] = 1065353216;
+	r5 = sp + -1056;
+	heap32[(r4+3)] = 0;
+	r4 = r5 >> 2;
+	heap32[(fp+-264)] = 1092616192;
+	heap32[(r4+1)] = 0;
+	heap32[(r4+2)] = 0;
+	heap32[(r4+3)] = 0;
+	heap32[(g0)] = r5;
+	heap32[(g0+1)] = r3;
+	_ZN13BenchmarkDemo10createWallERK9btVector3iS2_(i7);
+	r3 = heap32[(r2)];
+	r3 = (r3 + 1)|0;
+	heap32[(r2)] = r3;
+	heap32[(g0)] = 71;
+	malloc(i7);
+	r2 = r_g0;
+	if(r2 !=0) //_LBB26_178
+{
+	r3 = 0;
+	r4 = (r2 + 4)|0;
+	r3 = (r3 - r4)|0;
+	r3 = r3 & 15;
+	r3 = (r2 + r3)|0;
+	r4 = (r3 + 4)|0;
+	r3 = r3 >> 2;
+	heap32[(r3)] = r2;
+	r2 = r4;
+}
+	r3 = r2 >> 2;
+	heap32[(r3+2)] = 0;
+	heap32[(r3+3)] = 1065353216;
+	heap32[(r3+4)] = 1065353216;
+	heap32[(r3+5)] = 1065353216;
+	heap32[(r3+6)] = 0;
+	heap32[(r3+11)] = 1025758986;
+	heap32[(r3)] = r0;
+	heap32[(r3+1)] = 0;
+	heap32[(r3+7)] = 1064682127;
+	heap32[(r3+8)] = 1064682127;
+	heap32[(r3+9)] = 1064682127;
+	r4 = sp + -944;
+	heap32[(r3+10)] = 0;
+	r3 = r4 >> 2;
+	heap32[(fp+-236)] = 1065353216;
+	heap32[(r3+1)] = 0;
+	heap32[(r3+2)] = 0;
+	heap32[(r3+3)] = 0;
+	heap32[(r3+4)] = 0;
+	heap32[(r3+5)] = 1065353216;
+	heap32[(r3+6)] = 0;
+	heap32[(r3+7)] = 0;
+	heap32[(r3+8)] = 0;
+	heap32[(r3+9)] = 0;
+	heap32[(r3+10)] = 1065353216;
+	heap32[(r3+11)] = 0;
+	heap32[(r3+12)] = 0;
+	heap32[(r3+13)] = 0;
+	heap32[(r3+14)] = 0;
+	r0 = sp + -960;
+	heap32[(r3+15)] = 0;
+	r5 = r0 >> 2;
+	heap32[(fp+-240)] = 0;
+	heap32[(r5+1)] = 0;
+	heap32[(r5+2)] = 0;
+	heap32[(r5+3)] = 0;
+	heap32[(g0)] = r2;
+	heap32[(g0+1)] = 1065353216;
+	heap32[(g0+2)] = r0;
+	r0 = 8;
+	f0 =                         1;
+	f1 =                         0;
+	_ZNK10btBoxShape21calculateLocalInertiaEfR9btVector3(i7);
+	f2 = f1;
+	f3 = f0;
+	f4 = f1;
+_253: while(true){
+	r5 = 24;
+_255: while(true){
+	f5 =        9.9312677383422852;
+	f6 =                         0;
+	f7 = f3*f0;
+	f8 = f4*f6;
+	f9 = f3*f5;
+	f10 = f1*f6;
+	f7 = f8+f7;
+	f11 = f2*f5;
+	f9 = f10+f9;
+	f12 = f2*f0;
+	f13 = f1*f0;
+	f14 = f2*f6;
+	f7 = f7+f11;
+	f9 = f9-f12;
+	f11 = f13+f14;
+	f12 = f4*f5;
+	f5 = f1*f5;
+	f13 = f4*f0;
+	f11 = f11-f12;
+	f12 = f4*f4;
+	f15 = f3*f3;
+	f16 = f4*f7;
+	f17 = f1*f9;
+	f5 = f5+f13;
+	f13 = f3*f6;
+	f5 = f5-f13;
+	f12 = f12+f15;
+	f15 = f2*f2;
+	f18 = f3*f7;
+	f19 = f1*f11;
+	f16 = f16+f17;
+	f17 = f2*f11;
+	f12 = f12+f15;
+	f15 = f1*f1;
+	f7 = f2*f7;
+	f20 = f1*f5;
+	f18 = f18+f19;
+	f19 = f4*f5;
+	f16 = f16-f17;
+	f5 = f3*f5;
+	f17 =                         2;
+	f12 = f12+f15;
+	f7 = f7+f20;
+	f15 = f3*f9;
+	f18 = f18-f19;
+	f9 = f2*f9;
+	f5 = f16+f5;
+	f16 =                        25;
+	f12 = f17/f12;
+	f9 = f18+f9;
+	f5 = f5+f16;
+	f7 = f7-f15;
+	f11 = f4*f11;
+	f15 = f2*f12;
+	f16 = f3*f12;
+	f7 = f7+f11;
+	f9 = f9+f6;
+	heapFloat[(r3+12)] = f5;
+	f5 = f3*f16;
+	f11 = f2*f15;
+	f7 = f7+f6;
+	heapFloat[(r3+13)] = f9;
+	heapFloat[(r3+14)] = f7;
+	f7 =                         1;
+	f9 = f5+f11;
+	f18 = f4*f16;
+	f19 = f1*f15;
+	f9 = f7-f9;
+	heap32[(r3+15)] = 0;
+	f20 = f4*f15;
+	f16 = f1*f16;
+	f21 = f18-f19;
+	heapFloat[(fp+-236)] = f9;
+	f9 = f4*f12;
+	f12 = f20+f16;
+	heapFloat[(r3+1)] = f21;
+	f21 = f4*f9;
+	heapFloat[(r3+2)] = f12;
+	f11 = f21+f11;
+	f12 = f18+f19;
+	heap32[(r3+3)] = 0;
+	f15 = f3*f15;
+	f9 = f1*f9;
+	f11 = f7-f11;
+	heapFloat[(r3+4)] = f12;
+	f12 = f15-f9;
+	heapFloat[(r3+5)] = f11;
+	heapFloat[(r3+6)] = f12;
+	f11 = f20-f16;
+	heap32[(r3+7)] = 0;
+	f5 = f21+f5;
+	f9 = f15+f9;
+	heapFloat[(r3+8)] = f11;
+	f5 = f7-f5;
+	heapFloat[(r3+9)] = f9;
+	heapFloat[(r3+10)] = f5;
+	heap32[(r3+11)] = 0;
+	r7 = heap32[(r1)];
+	r7 = r7 >> 2;
+	f5 =       0.99144488573074341;
+	f7 =       0.13052619993686676;
+	r7 = heap32[(r7+2)];
+	f9 = f1*f5;
+	f11 = f2*f5;
+	f12 = f4*f5;
+	f1 = f1*f7;
+	f5 = f3*f5;
+	f1 = f1+f5;
+	f5 = f10+f12;
+	f9 = f9-f8;
+	f3 = f3*f7;
+	f10 = f10+f11;
+	f4 = f4*f7;
+	f3 = f9-f3;
+	f4 = f10+f4;
+	f9 = f1+f14;
+	heap32[(g0)] = r6;
+	heap32[(g0+1)] = 1065353216;
+	heap32[(g0+2)] = r4;
+	heap32[(g0+3)] = r2;
+	f5 = f5+f13;
+	f7 = f2*f7;
+	r5 = (r5 + -1)|0;
+	f1 = f3-f14;
+	f2 = f4-f13;
+	f3 = f9-f8;
+	f4 = f5-f7;
+	__FUNCTION_TABLE__[(r7)>>2](i7);
+if(!(r5 !=0)) //_LBB26_180
+{
+break _255;
+}
+}
+	f5 =       0.99785894155502319;
+	f7 =      0.065403133630752563;
+	f8 = f4*f5;
+	f9 = f1*f6;
+	f10 = f2*f5;
+	f11 = f1*f7;
+	f12 = f3*f5;
+	f1 = f1*f5;
+	f5 = f4*f6;
+	f8 = f9+f8;
+	f13 = f3*f6;
+	f11 = f11+f12;
+	f6 = f2*f6;
+	f9 = f9+f10;
+	f4 = f4*f7;
+	f1 = f1-f5;
+	f3 = f3*f7;
+	f10 = f11+f6;
+	f9 = f9+f4;
+	f1 = f1-f3;
+	f3 = f8+f13;
+	f2 = f2*f7;
+	r0 = (r0 + -1)|0;
+	f4 = f3-f2;
+	f3 = f10-f5;
+	f2 = f9-f13;
+	f1 = f1-f6;
+	f0 = f0+f17;
+	if(r0 ==0) //_LBB26_165
+{
+break _161;
+}
+else{
+continue _253;
+}
+}
+}
+else{
+	if(r0 ==3) //_LBB26_183
+{
+	r3 = -16;
+	r0 = 16;
+	f0 =                         0;
+	f1 =                         1;
+	f2 = f0;
+_260: while(true){
+	f3 = r3; //fitos r3, f3
+	f4 =                         6;
+	f3 = f3*f4;
+	f5 =                       0.5;
+	f6 =                       3.5;
+	f7 =        4.2000002861022949;
+	f8 =        5.5999999046325684;
+	f9 =        2.2749998569488525;
+	f10 =       0.69999998807907104;
+	f11 =        5.0750002861022949;
+	f3 = f3*f5;
+	f5 = f2+f0;
+	f6 = f1+f6;
+	f7 = f1+f7;
+	f8 = f1+f8;
+	f9 = f1+f9;
+	f10 = f1+f10;
+	f11 = f1+f11;
+	r5 = 0;
+_262: while(true){
+	heap32[(g0)] = 136;
+	_Znwj(i7);
+	r7 = r_g0;
+	r8 = _ZTV7RagDoll;
+	r9 = r7 >> 2;
+	r10 = heap32[(r1+1)];
+	r8 = (r8 + 8)|0;
+	heap32[(r9)] = r8;
+	heap32[(r9+1)] = r10;
+	r8 = heap32[(r2)];
+	r9 = (r8 + 1)|0;
+	heap32[(r2)] = r9;
+	f12 = r5; //fitos r5, f12
+	heap32[(g0)] = 75;
+	f12 = f12*f4;
+	malloc(i7);
+	r9 = r_g0;
+	f12 = f12+f3;
+	if(r9 !=0) //_LBB26_187
+{
+	r10 = 0;
+	r11 = (r9 + 4)|0;
+	r10 = (r10 - r11)|0;
+	r10 = r10 & 15;
+	r10 = (r9 + r10)|0;
+	r11 = (r10 + 4)|0;
+	r10 = r10 >> 2;
+	heap32[(r10)] = r9;
+	r9 = r11;
+}
+	r10 = r9 >> 2;
+	heap32[(r10+2)] = 0;
+	heap32[(r10+3)] = 1065353216;
+	heap32[(r10+4)] = 1065353216;
+	heap32[(r10+5)] = 1065353216;
+	r11 = _ZTV14btCapsuleShape;
+	heap32[(r10+6)] = 0;
+	r11 = (r11 + 8)|0;
+	heap32[(r10+11)] = 1025758986;
+	heap32[(r10)] = r11;
+	heap32[(r10+1)] = 10;
+	heap32[(r10+13)] = 1;
+	heap32[(r10+7)] = 1057384039;
+	heap32[(r10+8)] = 1051931443;
+	heap32[(r10+9)] = 1057384039;
+	r12 = r7 >> 2;
+	heap32[(r10+10)] = 0;
+	r10 = (r8 + 2)|0;
+	heap32[(r12+2)] = r9;
+	heap32[(r2)] = r10;
+	heap32[(g0)] = 75;
+	malloc(i7);
+	r9 = r_g0;
+	if(r9 !=0) //_LBB26_190
+{
+	r10 = 0;
+	r13 = (r9 + 4)|0;
+	r10 = (r10 - r13)|0;
+	r10 = r10 & 15;
+	r10 = (r9 + r10)|0;
+	r13 = (r10 + 4)|0;
+	r10 = r10 >> 2;
+	heap32[(r10)] = r9;
+	r9 = r13;
+}
+	r10 = r9 >> 2;
+	heap32[(r10+2)] = 0;
+	heap32[(r10+3)] = 1065353216;
+	heap32[(r10+4)] = 1065353216;
+	heap32[(r10+5)] = 1065353216;
+	heap32[(r10+6)] = 0;
+	heap32[(r10+11)] = 1025758986;
+	heap32[(r10)] = r11;
+	heap32[(r10+1)] = 10;
+	heap32[(r10+13)] = 1;
+	heap32[(r10+7)] = 1057384039;
+	heap32[(r10+8)] = 1056629064;
+	heap32[(r10+9)] = 1057384039;
+	heap32[(r10+10)] = 0;
+	r10 = (r8 + 3)|0;
+	heap32[(r12+3)] = r9;
+	heap32[(r2)] = r10;
+	heap32[(g0)] = 75;
+	malloc(i7);
+	r9 = r_g0;
+	if(r9 !=0) //_LBB26_193
+{
+	r10 = 0;
+	r13 = (r9 + 4)|0;
+	r10 = (r10 - r13)|0;
+	r10 = r10 & 15;
+	r10 = (r9 + r10)|0;
+	r13 = (r10 + 4)|0;
+	r10 = r10 >> 2;
+	heap32[(r10)] = r9;
+	r9 = r13;
+}
+	r10 = r9 >> 2;
+	heap32[(r10+2)] = 0;
+	heap32[(r10+3)] = 1065353216;
+	heap32[(r10+4)] = 1065353216;
+	heap32[(r10+5)] = 1065353216;
+	heap32[(r10+6)] = 0;
+	heap32[(r10+11)] = 1025758986;
+	heap32[(r10)] = r11;
+	heap32[(r10+1)] = 10;
+	heap32[(r10+13)] = 1;
+	heap32[(r10+7)] = 1051931443;
+	heap32[(r10+8)] = 1035154227;
+	heap32[(r10+9)] = 1051931443;
+	heap32[(r10+10)] = 0;
+	r10 = (r8 + 4)|0;
+	heap32[(r12+4)] = r9;
+	heap32[(r2)] = r10;
+	heap32[(g0)] = 75;
+	malloc(i7);
+	r9 = r_g0;
+	if(r9 !=0) //_LBB26_196
+{
+	r10 = 0;
+	r13 = (r9 + 4)|0;
+	r10 = (r10 - r13)|0;
+	r10 = r10 & 15;
+	r10 = (r9 + r10)|0;
+	r13 = (r10 + 4)|0;
+	r10 = r10 >> 2;
+	heap32[(r10)] = r9;
+	r9 = r13;
+}
+	r10 = r9 >> 2;
+	heap32[(r10+2)] = 0;
+	heap32[(r10+3)] = 1065353216;
+	heap32[(r10+4)] = 1065353216;
+	heap32[(r10+5)] = 1065353216;
+	heap32[(r10+6)] = 0;
+	heap32[(r10+11)] = 1025758986;
+	heap32[(r10)] = r11;
+	heap32[(r10+1)] = 10;
+	heap32[(r10+13)] = 1;
+	heap32[(r10+7)] = 1048240456;
+	heap32[(r10+8)] = 1061788057;
+	heap32[(r10+9)] = 1048240456;
+	heap32[(r10+10)] = 0;
+	r10 = (r8 + 5)|0;
+	heap32[(r12+5)] = r9;
+	heap32[(r2)] = r10;
+	heap32[(g0)] = 75;
+	malloc(i7);
+	r9 = r_g0;
+	if(r9 !=0) //_LBB26_199
+{
+	r10 = 0;
+	r13 = (r9 + 4)|0;
+	r10 = (r10 - r13)|0;
+	r10 = r10 & 15;
+	r10 = (r9 + r10)|0;
+	r13 = (r10 + 4)|0;
+	r10 = r10 >> 2;
+	heap32[(r10)] = r9;
+	r9 = r13;
+}
+	r10 = r9 >> 2;
+	heap32[(r10+2)] = 0;
+	heap32[(r10+3)] = 1065353216;
+	heap32[(r10+4)] = 1065353216;
+	heap32[(r10+5)] = 1065353216;
+	heap32[(r10+6)] = 0;
+	heap32[(r10+11)] = 1025758986;
+	heap32[(r10)] = r11;
+	heap32[(r10+1)] = 10;
+	heap32[(r10+13)] = 1;
+	heap32[(r10+7)] = 1043542835;
+	heap32[(r10+8)] = 1059439248;
+	heap32[(r10+9)] = 1043542835;
+	heap32[(r10+10)] = 0;
+	r10 = (r8 + 6)|0;
+	heap32[(r12+6)] = r9;
+	heap32[(r2)] = r10;
+	heap32[(g0)] = 75;
+	malloc(i7);
+	r9 = r_g0;
+	if(r9 !=0) //_LBB26_202
+{
+	r10 = 0;
+	r13 = (r9 + 4)|0;
+	r10 = (r10 - r13)|0;
+	r10 = r10 & 15;
+	r10 = (r9 + r10)|0;
+	r13 = (r10 + 4)|0;
+	r10 = r10 >> 2;
+	heap32[(r10)] = r9;
+	r9 = r13;
+}
+	r10 = r9 >> 2;
+	heap32[(r10+2)] = 0;
+	heap32[(r10+3)] = 1065353216;
+	heap32[(r10+4)] = 1065353216;
+	heap32[(r10+5)] = 1065353216;
+	heap32[(r10+6)] = 0;
+	heap32[(r10+11)] = 1025758986;
+	heap32[(r10)] = r11;
+	heap32[(r10+1)] = 10;
+	heap32[(r10+13)] = 1;
+	heap32[(r10+7)] = 1048240456;
+	heap32[(r10+8)] = 1061788057;
+	heap32[(r10+9)] = 1048240456;
+	heap32[(r10+10)] = 0;
+	r10 = (r8 + 7)|0;
+	heap32[(r12+7)] = r9;
+	heap32[(r2)] = r10;
+	heap32[(g0)] = 75;
+	malloc(i7);
+	r9 = r_g0;
+	if(r9 !=0) //_LBB26_205
+{
+	r10 = 0;
+	r13 = (r9 + 4)|0;
+	r10 = (r10 - r13)|0;
+	r10 = r10 & 15;
+	r10 = (r9 + r10)|0;
+	r13 = (r10 + 4)|0;
+	r10 = r10 >> 2;
+	heap32[(r10)] = r9;
+	r9 = r13;
+}
+	r10 = r9 >> 2;
+	heap32[(r10+2)] = 0;
+	heap32[(r10+3)] = 1065353216;
+	heap32[(r10+4)] = 1065353216;
+	heap32[(r10+5)] = 1065353216;
+	heap32[(r10+6)] = 0;
+	heap32[(r10+11)] = 1025758986;
+	heap32[(r10)] = r11;
+	heap32[(r10+1)] = 10;
+	heap32[(r10+13)] = 1;
+	heap32[(r10+7)] = 1043542835;
+	heap32[(r10+8)] = 1059439248;
+	heap32[(r10+9)] = 1043542835;
+	heap32[(r10+10)] = 0;
+	r10 = (r8 + 8)|0;
+	heap32[(r12+8)] = r9;
+	heap32[(r2)] = r10;
+	heap32[(g0)] = 75;
+	malloc(i7);
+	r9 = r_g0;
+	if(r9 !=0) //_LBB26_208
+{
+	r10 = 0;
+	r13 = (r9 + 4)|0;
+	r10 = (r10 - r13)|0;
+	r10 = r10 & 15;
+	r10 = (r9 + r10)|0;
+	r13 = (r10 + 4)|0;
+	r10 = r10 >> 2;
+	heap32[(r10)] = r9;
+	r9 = r13;
+}
+	r10 = r9 >> 2;
+	heap32[(r10+2)] = 0;
+	heap32[(r10+3)] = 1065353216;
+	heap32[(r10+4)] = 1065353216;
+	heap32[(r10+5)] = 1065353216;
+	heap32[(r10+6)] = 0;
+	heap32[(r10+11)] = 1025758986;
+	heap32[(r10)] = r11;
+	heap32[(r10+1)] = 10;
+	heap32[(r10+13)] = 1;
+	heap32[(r10+7)] = 1043542835;
+	heap32[(r10+8)] = 1058264843;
+	heap32[(r10+9)] = 1043542835;
+	heap32[(r10+10)] = 0;
+	r10 = (r8 + 9)|0;
+	heap32[(r12+9)] = r9;
+	heap32[(r2)] = r10;
+	heap32[(g0)] = 75;
+	malloc(i7);
+	r9 = r_g0;
+	if(r9 !=0) //_LBB26_211
+{
+	r10 = 0;
+	r13 = (r9 + 4)|0;
+	r10 = (r10 - r13)|0;
+	r10 = r10 & 15;
+	r10 = (r9 + r10)|0;
+	r13 = (r10 + 4)|0;
+	r10 = r10 >> 2;
+	heap32[(r10)] = r9;
+	r9 = r13;
+}
+	r10 = r9 >> 2;
+	heap32[(r10+2)] = 0;
+	heap32[(r10+3)] = 1065353216;
+	heap32[(r10+4)] = 1065353216;
+	heap32[(r10+5)] = 1065353216;
+	heap32[(r10+6)] = 0;
+	heap32[(r10+11)] = 1025758986;
+	heap32[(r10)] = r11;
+	heap32[(r10+1)] = 10;
+	heap32[(r10+13)] = 1;
+	heap32[(r10+7)] = 1041194025;
+	heap32[(r10+8)] = 1054867456;
+	heap32[(r10+9)] = 1041194025;
+	heap32[(r10+10)] = 0;
+	r10 = (r8 + 10)|0;
+	heap32[(r12+10)] = r9;
+	heap32[(r2)] = r10;
+	heap32[(g0)] = 75;
+	malloc(i7);
+	r9 = r_g0;
+	if(r9 !=0) //_LBB26_214
+{
+	r10 = 0;
+	r13 = (r9 + 4)|0;
+	r10 = (r10 - r13)|0;
+	r10 = r10 & 15;
+	r10 = (r9 + r10)|0;
+	r13 = (r10 + 4)|0;
+	r10 = r10 >> 2;
+	heap32[(r10)] = r9;
+	r9 = r13;
+}
+	r10 = r9 >> 2;
+	heap32[(r10+2)] = 0;
+	heap32[(r10+3)] = 1065353216;
+	heap32[(r10+4)] = 1065353216;
+	heap32[(r10+5)] = 1065353216;
+	heap32[(r10+6)] = 0;
+	heap32[(r10+11)] = 1025758986;
+	heap32[(r10)] = r11;
+	heap32[(r10+1)] = 10;
+	heap32[(r10+13)] = 1;
+	heap32[(r10+7)] = 1043542835;
+	heap32[(r10+8)] = 1058264843;
+	heap32[(r10+9)] = 1043542835;
+	heap32[(r10+10)] = 0;
+	r8 = (r8 + 11)|0;
+	heap32[(r12+11)] = r9;
+	heap32[(r2)] = r8;
+	heap32[(g0)] = 75;
+	malloc(i7);
+	r8 = r_g0;
+	if(r8 !=0) //_LBB26_217
+{
+	r9 = 0;
+	r10 = (r8 + 4)|0;
+	r9 = (r9 - r10)|0;
+	r9 = r9 & 15;
+	r9 = (r8 + r9)|0;
+	r10 = (r9 + 4)|0;
+	r9 = r9 >> 2;
+	heap32[(r9)] = r8;
+	r8 = r10;
+}
+	r9 = r8 >> 2;
+	heap32[(r9+2)] = 0;
+	heap32[(r9+3)] = 1065353216;
+	heap32[(r9+4)] = 1065353216;
+	heap32[(r9+5)] = 1065353216;
+	heap32[(r9+6)] = 0;
+	heap32[(r9+11)] = 1025758986;
+	heap32[(r9)] = r11;
+	heap32[(r9+1)] = 10;
+	heap32[(r9+13)] = 1;
+	heap32[(r9+7)] = 1041194025;
+	heap32[(r9+8)] = 1054867456;
+	heap32[(r9+9)] = 1041194025;
+	heap32[(r9+10)] = 0;
+	heap32[(r12+12)] = r8;
+	r8 = heap32[(r12+2)];
+	r9 = sp + -880;
+	r10 = r9 >> 2;
+	heap32[(fp+-220)] = 1065353216;
+	heap32[(r10+1)] = 0;
+	heap32[(r10+2)] = 0;
+	heap32[(r10+3)] = 0;
+	heap32[(r10+4)] = 0;
+	heap32[(r10+5)] = 1065353216;
+	heap32[(r10+6)] = 0;
+	heap32[(r10+7)] = 0;
+	heap32[(r10+8)] = 0;
+	heap32[(r10+9)] = 0;
+	heap32[(r10+10)] = 1065353216;
+	f13 =                         0;
+	f13 = f12+f13;
+	heap32[(r10+11)] = 0;
+	heapFloat[(r10+12)] = f13;
+	heapFloat[(r10+13)] = f6;
+	heapFloat[(r10+14)] = f5;
+	heap32[(r10+15)] = 0;
+	heap32[(g0)] = r7;
+	heap32[(g0+1)] = r9;
+	heap32[(g0+2)] = r8;
+	_ZN7RagDoll20localCreateRigidBodyEfRK11btTransformP16btCollisionShape(i7);
+	heap32[(r12+13)] = r_g0;
+	r8 = heap32[(r12+3)];
+	r9 = sp + -816;
+	r10 = r9 >> 2;
+	heap32[(fp+-204)] = 1065353216;
+	heap32[(r10+1)] = 0;
+	heap32[(r10+2)] = 0;
+	heap32[(r10+3)] = 0;
+	heap32[(r10+4)] = 0;
+	heap32[(r10+5)] = 1065353216;
+	heap32[(r10+6)] = 0;
+	heap32[(r10+7)] = 0;
+	heap32[(r10+8)] = 0;
+	heap32[(r10+9)] = 0;
+	heap32[(r10+10)] = 1065353216;
+	heap32[(r10+11)] = 0;
+	heapFloat[(r10+12)] = f13;
+	heapFloat[(r10+13)] = f7;
+	heapFloat[(r10+14)] = f5;
+	heap32[(r10+15)] = 0;
+	heap32[(g0)] = r7;
+	heap32[(g0+1)] = r9;
+	heap32[(g0+2)] = r8;
+	_ZN7RagDoll20localCreateRigidBodyEfRK11btTransformP16btCollisionShape(i7);
+	heap32[(r12+14)] = r_g0;
+	r8 = heap32[(r12+4)];
+	r9 = sp + -752;
+	r10 = r9 >> 2;
+	heap32[(fp+-188)] = 1065353216;
+	heap32[(r10+1)] = 0;
+	heap32[(r10+2)] = 0;
+	heap32[(r10+3)] = 0;
+	heap32[(r10+4)] = 0;
+	heap32[(r10+5)] = 1065353216;
+	heap32[(r10+6)] = 0;
+	heap32[(r10+7)] = 0;
+	heap32[(r10+8)] = 0;
+	heap32[(r10+9)] = 0;
+	heap32[(r10+10)] = 1065353216;
+	heap32[(r10+11)] = 0;
+	heapFloat[(r10+12)] = f13;
+	heapFloat[(r10+13)] = f8;
+	heapFloat[(r10+14)] = f5;
+	heap32[(r10+15)] = 0;
+	heap32[(g0)] = r7;
+	heap32[(g0+1)] = r9;
+	heap32[(g0+2)] = r8;
+	_ZN7RagDoll20localCreateRigidBodyEfRK11btTransformP16btCollisionShape(i7);
+	heap32[(r12+15)] = r_g0;
+	r8 = heap32[(r12+5)];
+	r9 = sp + -688;
+	r10 = r9 >> 2;
+	heap32[(fp+-172)] = 1065353216;
+	heap32[(r10+1)] = 0;
+	heap32[(r10+2)] = 0;
+	heap32[(r10+3)] = 0;
+	heap32[(r10+4)] = 0;
+	heap32[(r10+5)] = 1065353216;
+	heap32[(r10+6)] = 0;
+	heap32[(r10+7)] = 0;
+	heap32[(r10+8)] = 0;
+	heap32[(r10+9)] = 0;
+	f13 =      -0.62999999523162842;
+	heap32[(r10+10)] = 1065353216;
+	f13 = f12+f13;
+	heap32[(r10+11)] = 0;
+	heapFloat[(r10+12)] = f13;
+	heapFloat[(r10+13)] = f9;
+	heapFloat[(r10+14)] = f5;
+	heap32[(r10+15)] = 0;
+	heap32[(g0)] = r7;
+	heap32[(g0+1)] = r9;
+	heap32[(g0+2)] = r8;
+	_ZN7RagDoll20localCreateRigidBodyEfRK11btTransformP16btCollisionShape(i7);
+	heap32[(r12+16)] = r_g0;
+	r8 = heap32[(r12+6)];
+	r9 = sp + -624;
+	r10 = r9 >> 2;
+	heap32[(fp+-156)] = 1065353216;
+	heap32[(r10+1)] = 0;
+	heap32[(r10+2)] = 0;
+	heap32[(r10+3)] = 0;
+	heap32[(r10+4)] = 0;
+	heap32[(r10+5)] = 1065353216;
+	heap32[(r10+6)] = 0;
+	heap32[(r10+7)] = 0;
+	heap32[(r10+8)] = 0;
+	heap32[(r10+9)] = 0;
+	heap32[(r10+10)] = 1065353216;
+	heap32[(r10+11)] = 0;
+	heapFloat[(r10+12)] = f13;
+	heapFloat[(r10+13)] = f10;
+	heapFloat[(r10+14)] = f5;
+	heap32[(r10+15)] = 0;
+	heap32[(g0)] = r7;
+	heap32[(g0+1)] = r9;
+	heap32[(g0+2)] = r8;
+	_ZN7RagDoll20localCreateRigidBodyEfRK11btTransformP16btCollisionShape(i7);
+	heap32[(r12+17)] = r_g0;
+	r8 = heap32[(r12+7)];
+	r9 = sp + -560;
+	r10 = r9 >> 2;
+	heap32[(fp+-140)] = 1065353216;
+	heap32[(r10+1)] = 0;
+	heap32[(r10+2)] = 0;
+	heap32[(r10+3)] = 0;
+	heap32[(r10+4)] = 0;
+	heap32[(r10+5)] = 1065353216;
+	heap32[(r10+6)] = 0;
+	heap32[(r10+7)] = 0;
+	heap32[(r10+8)] = 0;
+	heap32[(r10+9)] = 0;
+	f13 =       0.62999999523162842;
+	heap32[(r10+10)] = 1065353216;
+	f13 = f12+f13;
+	heap32[(r10+11)] = 0;
+	heapFloat[(r10+12)] = f13;
+	heapFloat[(r10+13)] = f9;
+	heapFloat[(r10+14)] = f5;
+	heap32[(r10+15)] = 0;
+	heap32[(g0)] = r7;
+	heap32[(g0+1)] = r9;
+	heap32[(g0+2)] = r8;
+	_ZN7RagDoll20localCreateRigidBodyEfRK11btTransformP16btCollisionShape(i7);
+	heap32[(r12+18)] = r_g0;
+	r8 = heap32[(r12+8)];
+	r9 = sp + -496;
+	r10 = r9 >> 2;
+	heap32[(fp+-124)] = 1065353216;
+	heap32[(r10+1)] = 0;
+	heap32[(r10+2)] = 0;
+	heap32[(r10+3)] = 0;
+	heap32[(r10+4)] = 0;
+	heap32[(r10+5)] = 1065353216;
+	heap32[(r10+6)] = 0;
+	heap32[(r10+7)] = 0;
+	heap32[(r10+8)] = 0;
+	heap32[(r10+9)] = 0;
+	heap32[(r10+10)] = 1065353216;
+	heap32[(r10+11)] = 0;
+	heapFloat[(r10+12)] = f13;
+	heapFloat[(r10+13)] = f10;
+	heapFloat[(r10+14)] = f5;
+	heap32[(r10+15)] = 0;
+	heap32[(g0)] = r7;
+	heap32[(g0+1)] = r9;
+	heap32[(g0+2)] = r8;
+	_ZN7RagDoll20localCreateRigidBodyEfRK11btTransformP16btCollisionShape(i7);
+	heap32[(r12+19)] = r_g0;
+	r8 = heap32[(r12+9)];
+	r9 = sp + -432;
+	r10 = r9 >> 2;
+	heap32[(fp+-108)] = -1287930578;
+	heap32[(r10+1)] = -1082130432;
+	heap32[(r10+2)] = 0;
+	heap32[(r10+3)] = 0;
+	heap32[(r10+4)] = 1065353216;
+	heap32[(r10+5)] = -1287930578;
+	heap32[(r10+6)] = 0;
+	heap32[(r10+7)] = 0;
+	heap32[(r10+8)] = 0;
+	heap32[(r10+9)] = 0;
+	f13 =       -1.2250000238418579;
+	heap32[(r10+10)] = 1065353216;
+	f13 = f12+f13;
+	heap32[(r10+11)] = 0;
+	heapFloat[(r10+12)] = f13;
+	heapFloat[(r10+13)] = f11;
+	heapFloat[(r10+14)] = f5;
+	heap32[(r10+15)] = 0;
+	heap32[(g0)] = r7;
+	heap32[(g0+1)] = r9;
+	heap32[(g0+2)] = r8;
+	_ZN7RagDoll20localCreateRigidBodyEfRK11btTransformP16btCollisionShape(i7);
+	heap32[(r12+20)] = r_g0;
+	r8 = heap32[(r12+10)];
+	r9 = sp + -368;
+	r10 = r9 >> 2;
+	heap32[(fp+-92)] = -1287930578;
+	heap32[(r10+1)] = -1082130432;
+	heap32[(r10+2)] = 0;
+	heap32[(r10+3)] = 0;
+	heap32[(r10+4)] = 1065353216;
+	heap32[(r10+5)] = -1287930578;
+	heap32[(r10+6)] = 0;
+	heap32[(r10+7)] = 0;
+	heap32[(r10+8)] = 0;
+	heap32[(r10+9)] = 0;
+	f13 =       -2.4500000476837158;
+	heap32[(r10+10)] = 1065353216;
+	f13 = f12+f13;
+	heap32[(r10+11)] = 0;
+	heapFloat[(r10+12)] = f13;
+	heapFloat[(r10+13)] = f11;
+	heapFloat[(r10+14)] = f5;
+	heap32[(r10+15)] = 0;
+	heap32[(g0)] = r7;
+	heap32[(g0+1)] = r9;
+	heap32[(g0+2)] = r8;
+	_ZN7RagDoll20localCreateRigidBodyEfRK11btTransformP16btCollisionShape(i7);
+	heap32[(r12+21)] = r_g0;
+	r8 = heap32[(r12+11)];
+	r9 = sp + -304;
+	r10 = r9 >> 2;
+	heap32[(fp+-76)] = -1287930578;
+	heap32[(r10+1)] = 1065353216;
+	heap32[(r10+2)] = 0;
+	heap32[(r10+3)] = 0;
+	heap32[(r10+4)] = -1082130432;
+	heap32[(r10+5)] = -1287930578;
+	heap32[(r10+6)] = 0;
+	heap32[(r10+7)] = 0;
+	heap32[(r10+8)] = -2147483648;
+	heap32[(r10+9)] = 0;
+	f13 =        1.2250000238418579;
+	heap32[(r10+10)] = 1065353216;
+	f13 = f12+f13;
+	heap32[(r10+11)] = 0;
+	heapFloat[(r10+12)] = f13;
+	heapFloat[(r10+13)] = f11;
+	heapFloat[(r10+14)] = f5;
+	heap32[(r10+15)] = 0;
+	heap32[(g0)] = r7;
+	heap32[(g0+1)] = r9;
+	heap32[(g0+2)] = r8;
+	_ZN7RagDoll20localCreateRigidBodyEfRK11btTransformP16btCollisionShape(i7);
+	heap32[(r12+22)] = r_g0;
+	r8 = heap32[(r12+12)];
+	r9 = sp + -240;
+	r10 = r9 >> 2;
+	heap32[(fp+-60)] = -1287930578;
+	heap32[(r10+1)] = 1065353216;
+	heap32[(r10+2)] = 0;
+	heap32[(r10+3)] = 0;
+	heap32[(r10+4)] = -1082130432;
+	heap32[(r10+5)] = -1287930578;
+	heap32[(r10+6)] = 0;
+	heap32[(r10+7)] = 0;
+	heap32[(r10+8)] = -2147483648;
+	heap32[(r10+9)] = 0;
+	f13 =        2.4500000476837158;
+	heap32[(r10+10)] = 1065353216;
+	f12 = f12+f13;
+	heap32[(r10+11)] = 0;
+	heapFloat[(r10+12)] = f12;
+	heapFloat[(r10+13)] = f11;
+	heapFloat[(r10+14)] = f5;
+	heap32[(r10+15)] = 0;
+	heap32[(g0)] = r7;
+	heap32[(g0+1)] = r9;
+	heap32[(g0+2)] = r8;
+	_ZN7RagDoll20localCreateRigidBodyEfRK11btTransformP16btCollisionShape(i7);
+	r9 = 0;
+	heap32[(r12+23)] = r_g0;
+_297: while(true){
+	r8 = r9 << 2;
+	r8 = (r7 - r8)|0;
+	r8 = r8 >> 2;
+	r10 = heap32[(r8+13)];
+	r10 = r10 >> 2;
+	heap32[(r10+109)] = 1028443341;
+	heap32[(r10+110)] = 1062836634;
+	r10 = heap32[(r8+13)];
+	r10 = r10 >> 2;
+	heap32[(r10+55)] = 1061997773;
+	r8 = heap32[(r8+13)];
+	r8 = r8 >> 2;
+	r9 = (r9 + -1)|0;
+	heap32[(r8+116)] = 1070386381;
+	heap32[(r8+117)] = 1075838976;
+if(!(r9 !=-11)) //_LBB26_219
+{
+break _297;
+}
+}
+	heap32[(g0)] = 748;
+	_Znwj(i7);
+	r8 = r_g0;
+	r9 = heap32[(r12+14)];
+	r10 = heap32[(r12+13)];
+	r11 = r8 >> 2;
+	heap32[(r11+1)] = 4;
+	heap32[(r11+2)] = -1;
+	r13 = 0;
+	heap32[(r11+3)] = -1;
+	heap8[r8+16] = r13;
+	heap32[(r11+5)] = r10;
+	heap32[(r11+6)] = r9;
+	r9 = _ZTV17btHingeConstraint;
+	heap32[(r11+7)] = 0;
+	r9 = (r9 + 8)|0;
+	heap32[(r11+8)] = 1050253722;
+	heap32[(r11)] = r9;
+	heap32[(r11+135)] = -1287930578;
+	heap32[(r11+136)] = 0;
+	heap32[(r11+137)] = 1065353216;
+	heap32[(r11+138)] = 0;
+	heap32[(r11+139)] = -2147483648;
+	heap32[(r11+140)] = 1065353216;
+	heap32[(r11+141)] = 0;
+	heap32[(r11+142)] = 0;
+	heap32[(r11+143)] = -1082130432;
+	heap32[(r11+144)] = -2147483648;
+	heap32[(r11+145)] = -1287930578;
+	heap32[(r11+146)] = 0;
+	heap32[(r11+147)] = 0;
+	heap32[(r11+148)] = 1057384039;
+	heap32[(r11+149)] = 0;
+	heap32[(r11+150)] = 0;
+	heap32[(r11+151)] = -1287930578;
+	heap32[(r11+152)] = 0;
+	heap32[(r11+153)] = 1065353216;
+	heap32[(r11+154)] = 0;
+	heap32[(r11+155)] = -2147483648;
+	heap32[(r11+156)] = 1065353216;
+	heap32[(r11+157)] = 0;
+	heap32[(r11+158)] = 0;
+	heap32[(r11+159)] = -1082130432;
+	heap32[(r11+160)] = -2147483648;
+	heap32[(r11+161)] = -1287930578;
+	heap32[(r11+162)] = 0;
+	heap32[(r11+163)] = 0;
+	heap32[(r11+164)] = -1090099609;
+	heap32[(r11+165)] = 0;
+	heap32[(r11+166)] = 0;
+	heap8[r8+720] = r13;
+	heap8[r8+721] = r13;
+	heap8[r8+723] = r13;
+	heap8[r8+724] = r4;
+	heap8[r8+725] = r13;
+	heap32[(r11+183)] = 0;
+	heap32[(r11+172)] = 1065353216;
+	heap32[(r11+173)] = -1082130432;
+	heap32[(r11+170)] = 1050253722;
+	heap32[(r11+171)] = 1065353216;
+	heap32[(r11+169)] = 1063675494;
+	heap8[r8+722] = r13;
+	heap32[(r11+179)] = 1065353216;
+	heap32[(g0)] = -1085730853;
+	heap32[(g0+1)] = 1086918619;
+	fmodf(i7);
+	f12 = f_g0;
+	f13 =       -3.1415927410125732;
+	if(f12 >=f13) //_LBB26_222
+{
+	f14 =        3.1415927410125732;
+	if(f12 >f14) //_LBB26_224
+{
+	f14 =       -6.2831854820251465;
+	f12 = f12+f14;
+}
+}
+else{
+	f14 =        6.2831854820251465;
+	f12 = f12+f14;
+}
+	r10 = r8 >> 2;
+	heapFloat[(r10+172)] = f12;
+	heap32[(g0)] = 1070141403;
+	heap32[(g0+1)] = 1086918619;
+	fmodf(i7);
+	f12 = f_g0;
+	if(f12 >=f13) //_LBB26_227
+{
+	f14 =        3.1415927410125732;
+	if(f12 >f14) //_LBB26_229
+{
+	f14 =       -6.2831854820251465;
+	f12 = f12+f14;
+}
+}
+else{
+	f14 =        6.2831854820251465;
+	f12 = f12+f14;
+}
+	heapFloat[(r10+173)] = f12;
+	heap32[(r10+169)] = 1063675494;
+	heap32[(r10+170)] = 1050253722;
+	heap32[(r10+171)] = 1065353216;
+	heap32[(r12+24)] = r8;
+	r10 = heap32[(r12+1)];
+	r11 = r10 >> 2;
+	r11 = heap32[(r11)];
+	r11 = r11 >> 2;
+	r11 = heap32[(r11+13)];
+	heap32[(g0)] = r10;
+	heap32[(g0+1)] = r8;
+	heap32[(g0+2)] = 1;
+	__FUNCTION_TABLE__[(r11)>>2](i7);
+	heap32[(g0)] = 596;
+	_Znwj(i7);
+	r10 = heap32[(r12+15)];
+	r11 = heap32[(r12+14)];
+	r14 = r_g0 >> 2;
+	heap32[(r14+1)] = 5;
+	heap32[(r14+2)] = -1;
+	heap32[(r14+3)] = -1;
+	heap8[r_g0+16] = r13;
+	heap32[(r14+5)] = r11;
+	heap32[(r14+6)] = r10;
+	heap32[(r14+7)] = 0;
+	r10 = _ZTV21btConeTwistConstraint;
+	heap32[(r14+8)] = 1050253722;
+	r10 = (r10 + 8)|0;
+	heap32[(r14)] = r10;
+	heap32[(r14+72)] = -1287930578;
+	heap32[(r14+73)] = -1082130432;
+	heap32[(r14+74)] = 0;
+	heap32[(r14+75)] = 0;
+	heap32[(r14+76)] = 1065353216;
+	heap32[(r14+77)] = -1287930578;
+	heap32[(r14+78)] = 0;
+	heap32[(r14+79)] = 0;
+	heap32[(r14+80)] = -2147483648;
+	heap32[(r14+81)] = 0;
+	heap32[(r14+82)] = 1065353216;
+	heap32[(r14+83)] = 0;
+	heap32[(r14+84)] = 0;
+	heap32[(r14+85)] = 1065772647;
+	heap32[(r14+86)] = 0;
+	heap32[(r14+87)] = 0;
+	heap32[(r14+88)] = -1287930578;
+	heap32[(r14+89)] = -1082130432;
+	heap32[(r14+90)] = 0;
+	heap32[(r14+91)] = 0;
+	heap32[(r14+92)] = 1065353216;
+	heap32[(r14+93)] = -1287930578;
+	heap32[(r14+94)] = 0;
+	heap32[(r14+95)] = 0;
+	heap32[(r14+96)] = -2147483648;
+	heap32[(r14+97)] = 0;
+	heap32[(r14+98)] = 1065353216;
+	heap32[(r14+99)] = 0;
+	heap32[(r14+100)] = 0;
+	heap32[(r14+101)] = -1090854584;
+	heap32[(r14+102)] = 0;
+	heap32[(r14+103)] = 0;
+	heap8[r_g0+540] = r13;
+	heap32[(r14+128)] = 0;
+	heap32[(r14+140)] = -1082130432;
+	heap32[(r14+107)] = 1008981770;
+	heap32[(r14+111)] = 1028443341;
+	heap32[(r14+145)] = 0;
+	heap32[(r14+146)] = 0;
+	heap32[(r14+147)] = 1060320051;
+	heap32[(r14+148)] = 0;
+	heap32[(r14+108)] = 1061752795;
+	heap32[(r14+109)] = 1061752795;
+	heap32[(r14+110)] = 1070141403;
+	heap32[(r14+104)] = 1065353216;
+	heap32[(r14+105)] = 1050253722;
+	heap32[(r14+106)] = 1065353216;
+	heap32[(r12+25)] = r_g0;
+	r11 = heap32[(r12+1)];
+	r14 = r11 >> 2;
+	r14 = heap32[(r14)];
+	r14 = r14 >> 2;
+	r14 = heap32[(r14+13)];
+	heap32[(g0)] = r11;
+	heap32[(g0+1)] = r_g0;
+	heap32[(g0+2)] = 1;
+	__FUNCTION_TABLE__[(r14)>>2](i7);
+	heap32[(g0)] = 596;
+	_Znwj(i7);
+	r11 = heap32[(r12+16)];
+	r14 = heap32[(r12+13)];
+	r15 = r_g0 >> 2;
+	heap32[(r15+1)] = 5;
+	heap32[(r15+2)] = -1;
+	heap32[(r15+3)] = -1;
+	heap8[r_g0+16] = r13;
+	heap32[(r15+5)] = r14;
+	heap32[(r15+6)] = r11;
+	heap32[(r15+7)] = 0;
+	heap32[(r15+8)] = 1050253722;
+	heap32[(r15)] = r10;
+	heap32[(r15+72)] = -1087044364;
+	heap32[(r15+73)] = -1087044366;
+	heap32[(r15+74)] = 0;
+	heap32[(r15+75)] = 0;
+	heap32[(r15+76)] = 1060439282;
+	heap32[(r15+77)] = -1087044364;
+	heap32[(r15+78)] = 0;
+	heap32[(r15+79)] = 0;
+	heap32[(r15+80)] = -2147483648;
+	heap32[(r15+81)] = 0;
+	heap32[(r15+82)] = 1065353216;
+	heap32[(r15+83)] = 0;
+	heap32[(r15+84)] = -1088338002;
+	heap32[(r15+85)] = -1095552205;
+	heap32[(r15+86)] = 0;
+	heap32[(r15+87)] = 0;
+	heap32[(r15+88)] = -1087044364;
+	heap32[(r15+89)] = -1087044366;
+	heap32[(r15+90)] = 0;
+	heap32[(r15+91)] = 0;
+	heap32[(r15+92)] = 1060439282;
+	heap32[(r15+93)] = -1087044364;
+	heap32[(r15+94)] = 0;
+	heap32[(r15+95)] = 0;
+	heap32[(r15+96)] = -2147483648;
+	heap32[(r15+97)] = 0;
+	heap32[(r15+98)] = 1065353216;
+	heap32[(r15+99)] = 0;
+	heap32[(r15+100)] = 0;
+	heap32[(r15+101)] = 1061788057;
+	heap32[(r15+102)] = 0;
+	heap32[(r15+103)] = 0;
+	heap8[r_g0+540] = r13;
+	heap32[(r15+128)] = 0;
+	heap32[(r15+140)] = -1082130432;
+	heap32[(r15+107)] = 1008981770;
+	heap32[(r15+111)] = 1028443341;
+	heap32[(r15+145)] = 0;
+	heap32[(r15+146)] = 0;
+	heap32[(r15+147)] = 1060320051;
+	heap32[(r15+148)] = 0;
+	heap32[(r15+108)] = 1061752795;
+	heap32[(r15+109)] = 1061752795;
+	heap32[(r15+110)] = 0;
+	heap32[(r15+104)] = 1065353216;
+	heap32[(r15+105)] = 1050253722;
+	heap32[(r15+106)] = 1065353216;
+	heap32[(r12+26)] = r_g0;
+	r11 = heap32[(r12+1)];
+	r14 = r11 >> 2;
+	r14 = heap32[(r14)];
+	r14 = r14 >> 2;
+	r14 = heap32[(r14+13)];
+	heap32[(g0)] = r11;
+	heap32[(g0+1)] = r_g0;
+	heap32[(g0+2)] = 1;
+	__FUNCTION_TABLE__[(r14)>>2](i7);
+	heap32[(g0)] = 748;
+	_Znwj(i7);
+	r8 = r_g0;
+	r11 = heap32[(r12+17)];
+	r14 = heap32[(r12+16)];
+	r15 = r8 >> 2;
+	heap32[(r15+1)] = 4;
+	heap32[(r15+2)] = -1;
+	heap32[(r15+3)] = -1;
+	heap8[r8+16] = r13;
+	heap32[(r15+5)] = r14;
+	heap32[(r15+6)] = r11;
+	heap32[(r15+7)] = 0;
+	heap32[(r15+8)] = 1050253722;
+	heap32[(r15)] = r9;
+	heap32[(r15+135)] = -1287930578;
+	heap32[(r15+136)] = 0;
+	heap32[(r15+137)] = 1065353216;
+	heap32[(r15+138)] = 0;
+	heap32[(r15+139)] = -2147483648;
+	heap32[(r15+140)] = 1065353216;
+	heap32[(r15+141)] = 0;
+	heap32[(r15+142)] = 0;
+	heap32[(r15+143)] = -1082130432;
+	heap32[(r15+144)] = -2147483648;
+	heap32[(r15+145)] = -1287930578;
+	heap32[(r15+146)] = 0;
+	heap32[(r15+147)] = 0;
+	heap32[(r15+148)] = -1085695591;
+	heap32[(r15+149)] = 0;
+	heap32[(r15+150)] = 0;
+	heap32[(r15+151)] = -1287930578;
+	heap32[(r15+152)] = 0;
+	heap32[(r15+153)] = 1065353216;
+	heap32[(r15+154)] = 0;
+	heap32[(r15+155)] = -2147483648;
+	heap32[(r15+156)] = 1065353216;
+	heap32[(r15+157)] = 0;
+	heap32[(r15+158)] = 0;
+	heap32[(r15+159)] = -1082130432;
+	heap32[(r15+160)] = -2147483648;
+	heap32[(r15+161)] = -1287930578;
+	heap32[(r15+162)] = 0;
+	heap32[(r15+163)] = 0;
+	heap32[(r15+164)] = 1059439248;
+	heap32[(r15+165)] = 0;
+	heap32[(r15+166)] = 0;
+	heap8[r8+720] = r13;
+	heap8[r8+721] = r13;
+	heap8[r8+723] = r13;
+	heap8[r8+724] = r4;
+	heap8[r8+725] = r13;
+	heap32[(r15+183)] = 0;
+	heap32[(r15+172)] = 1065353216;
+	heap32[(r15+173)] = -1082130432;
+	heap32[(r15+170)] = 1050253722;
+	heap32[(r15+171)] = 1065353216;
+	heap32[(r15+169)] = 1063675494;
+	heap8[r8+722] = r13;
+	heap32[(r15+179)] = 1065353216;
+	heap32[(g0)] = 0;
+	heap32[(g0+1)] = 1086918619;
+	fmodf(i7);
+	f12 = f_g0;
+	if(f12 >=f13) //_LBB26_232
+{
+	f14 =        3.1415927410125732;
+	if(f12 >f14) //_LBB26_234
+{
+	f14 =       -6.2831854820251465;
+	f12 = f12+f14;
+}
+}
+else{
+	f14 =        6.2831854820251465;
+	f12 = f12+f14;
+}
+	r11 = r8 >> 2;
+	heapFloat[(r11+172)] = f12;
+	heap32[(g0)] = 1070141403;
+	heap32[(g0+1)] = 1086918619;
+	fmodf(i7);
+	f12 = f_g0;
+	if(f12 >=f13) //_LBB26_237
+{
+	f14 =        3.1415927410125732;
+	if(f12 >f14) //_LBB26_239
+{
+	f14 =       -6.2831854820251465;
+	f12 = f12+f14;
+}
+}
+else{
+	f14 =        6.2831854820251465;
+	f12 = f12+f14;
+}
+	heapFloat[(r11+173)] = f12;
+	heap32[(r11+169)] = 1063675494;
+	heap32[(r11+170)] = 1050253722;
+	heap32[(r11+171)] = 1065353216;
+	heap32[(r12+27)] = r8;
+	r11 = heap32[(r12+1)];
+	r14 = r11 >> 2;
+	r14 = heap32[(r14)];
+	r14 = r14 >> 2;
+	r14 = heap32[(r14+13)];
+	heap32[(g0)] = r11;
+	heap32[(g0+1)] = r8;
+	heap32[(g0+2)] = 1;
+	__FUNCTION_TABLE__[(r14)>>2](i7);
+	heap32[(g0)] = 596;
+	_Znwj(i7);
+	r11 = heap32[(r12+18)];
+	r14 = heap32[(r12+13)];
+	r15 = r_g0 >> 2;
+	heap32[(r15+1)] = 5;
+	heap32[(r15+2)] = -1;
+	heap32[(r15+3)] = -1;
+	heap8[r_g0+16] = r13;
+	heap32[(r15+5)] = r14;
+	heap32[(r15+6)] = r11;
+	heap32[(r15+7)] = 0;
+	heap32[(r15+8)] = 1050253722;
+	heap32[(r15)] = r10;
+	heap32[(r15+72)] = 1060439283;
+	heap32[(r15+73)] = -1087044365;
+	heap32[(r15+74)] = 0;
+	heap32[(r15+75)] = 0;
+	heap32[(r15+76)] = 1060439283;
+	heap32[(r15+77)] = 1060439283;
+	heap32[(r15+78)] = 0;
+	heap32[(r15+79)] = 0;
+	heap32[(r15+80)] = -2147483648;
+	heap32[(r15+81)] = 0;
+	heap32[(r15+82)] = 1065353216;
+	heap32[(r15+83)] = 0;
+	heap32[(r15+84)] = 1059145646;
+	heap32[(r15+85)] = -1095552205;
+	heap32[(r15+86)] = 0;
+	heap32[(r15+87)] = 0;
+	heap32[(r15+88)] = 1060439283;
+	heap32[(r15+89)] = -1087044365;
+	heap32[(r15+90)] = 0;
+	heap32[(r15+91)] = 0;
+	heap32[(r15+92)] = 1060439283;
+	heap32[(r15+93)] = 1060439283;
+	heap32[(r15+94)] = 0;
+	heap32[(r15+95)] = 0;
+	heap32[(r15+96)] = -2147483648;
+	heap32[(r15+97)] = 0;
+	heap32[(r15+98)] = 1065353216;
+	heap32[(r15+99)] = 0;
+	heap32[(r15+100)] = 0;
+	heap32[(r15+101)] = 1061788057;
+	heap32[(r15+102)] = 0;
+	heap32[(r15+103)] = 0;
+	heap8[r_g0+540] = r13;
+	heap32[(r15+128)] = 0;
+	heap32[(r15+140)] = -1082130432;
+	heap32[(r15+107)] = 1008981770;
+	heap32[(r15+111)] = 1028443341;
+	heap32[(r15+145)] = 0;
+	heap32[(r15+146)] = 0;
+	heap32[(r15+147)] = 1060320051;
+	heap32[(r15+148)] = 0;
+	heap32[(r15+108)] = 1061752795;
+	heap32[(r15+109)] = 1061752795;
+	heap32[(r15+110)] = 0;
+	heap32[(r15+104)] = 1065353216;
+	heap32[(r15+105)] = 1050253722;
+	heap32[(r15+106)] = 1065353216;
+	heap32[(r12+28)] = r_g0;
+	r11 = heap32[(r12+1)];
+	r14 = r11 >> 2;
+	r14 = heap32[(r14)];
+	r14 = r14 >> 2;
+	r14 = heap32[(r14+13)];
+	heap32[(g0)] = r11;
+	heap32[(g0+1)] = r_g0;
+	heap32[(g0+2)] = 1;
+	__FUNCTION_TABLE__[(r14)>>2](i7);
+	heap32[(g0)] = 748;
+	_Znwj(i7);
+	r8 = r_g0;
+	r11 = heap32[(r12+19)];
+	r14 = heap32[(r12+18)];
+	r15 = r8 >> 2;
+	heap32[(r15+1)] = 4;
+	heap32[(r15+2)] = -1;
+	heap32[(r15+3)] = -1;
+	heap8[r8+16] = r13;
+	heap32[(r15+5)] = r14;
+	heap32[(r15+6)] = r11;
+	heap32[(r15+7)] = 0;
+	heap32[(r15+8)] = 1050253722;
+	heap32[(r15)] = r9;
+	heap32[(r15+135)] = -1287930578;
+	heap32[(r15+136)] = 0;
+	heap32[(r15+137)] = 1065353216;
+	heap32[(r15+138)] = 0;
+	heap32[(r15+139)] = -2147483648;
+	heap32[(r15+140)] = 1065353216;
+	heap32[(r15+141)] = 0;
+	heap32[(r15+142)] = 0;
+	heap32[(r15+143)] = -1082130432;
+	heap32[(r15+144)] = -2147483648;
+	heap32[(r15+145)] = -1287930578;
+	heap32[(r15+146)] = 0;
+	heap32[(r15+147)] = 0;
+	heap32[(r15+148)] = -1085695591;
+	heap32[(r15+149)] = 0;
+	heap32[(r15+150)] = 0;
+	heap32[(r15+151)] = -1287930578;
+	heap32[(r15+152)] = 0;
+	heap32[(r15+153)] = 1065353216;
+	heap32[(r15+154)] = 0;
+	heap32[(r15+155)] = -2147483648;
+	heap32[(r15+156)] = 1065353216;
+	heap32[(r15+157)] = 0;
+	heap32[(r15+158)] = 0;
+	heap32[(r15+159)] = -1082130432;
+	heap32[(r15+160)] = -2147483648;
+	heap32[(r15+161)] = -1287930578;
+	heap32[(r15+162)] = 0;
+	heap32[(r15+163)] = 0;
+	heap32[(r15+164)] = 1059439248;
+	heap32[(r15+165)] = 0;
+	heap32[(r15+166)] = 0;
+	heap8[r8+720] = r13;
+	heap8[r8+721] = r13;
+	heap8[r8+723] = r13;
+	heap8[r8+724] = r4;
+	heap8[r8+725] = r13;
+	heap32[(r15+183)] = 0;
+	heap32[(r15+172)] = 1065353216;
+	heap32[(r15+173)] = -1082130432;
+	heap32[(r15+170)] = 1050253722;
+	heap32[(r15+171)] = 1065353216;
+	heap32[(r15+169)] = 1063675494;
+	heap8[r8+722] = r13;
+	heap32[(r15+179)] = 1065353216;
+	heap32[(g0)] = 0;
+	heap32[(g0+1)] = 1086918619;
+	fmodf(i7);
+	f12 = f_g0;
+	if(f12 >=f13) //_LBB26_242
+{
+	f14 =        3.1415927410125732;
+	if(f12 >f14) //_LBB26_244
+{
+	f14 =       -6.2831854820251465;
+	f12 = f12+f14;
+}
+}
+else{
+	f14 =        6.2831854820251465;
+	f12 = f12+f14;
+}
+	r11 = r8 >> 2;
+	heapFloat[(r11+172)] = f12;
+	heap32[(g0)] = 1070141403;
+	heap32[(g0+1)] = 1086918619;
+	fmodf(i7);
+	f12 = f_g0;
+	if(f12 >=f13) //_LBB26_247
+{
+	f14 =        3.1415927410125732;
+	if(f12 >f14) //_LBB26_249
+{
+	f14 =       -6.2831854820251465;
+	f12 = f12+f14;
+}
+}
+else{
+	f14 =        6.2831854820251465;
+	f12 = f12+f14;
+}
+	heapFloat[(r11+173)] = f12;
+	heap32[(r11+169)] = 1063675494;
+	heap32[(r11+170)] = 1050253722;
+	heap32[(r11+171)] = 1065353216;
+	heap32[(r12+29)] = r8;
+	r11 = heap32[(r12+1)];
+	r14 = r11 >> 2;
+	r14 = heap32[(r14)];
+	r14 = r14 >> 2;
+	r14 = heap32[(r14+13)];
+	heap32[(g0)] = r11;
+	heap32[(g0+1)] = r8;
+	heap32[(g0+2)] = 1;
+	__FUNCTION_TABLE__[(r14)>>2](i7);
+	heap32[(g0)] = 596;
+	_Znwj(i7);
+	r11 = heap32[(r12+20)];
+	r14 = heap32[(r12+14)];
+	r15 = r_g0 >> 2;
+	heap32[(r15+1)] = 5;
+	heap32[(r15+2)] = -1;
+	heap32[(r15+3)] = -1;
+	heap8[r_g0+16] = r13;
+	heap32[(r15+5)] = r14;
+	heap32[(r15+6)] = r11;
+	heap32[(r15+7)] = 0;
+	heap32[(r15+8)] = 1050253722;
+	heap32[(r15)] = r10;
+	heap32[(r15+72)] = -1082130432;
+	heap32[(r15+73)] = 867941678;
+	heap32[(r15+74)] = -2147483648;
+	heap32[(r15+75)] = 0;
+	heap32[(r15+76)] = -1279541970;
+	heap32[(r15+77)] = -1082130432;
+	heap32[(r15+78)] = 0;
+	heap32[(r15+79)] = 0;
+	heap32[(r15+80)] = -2147483648;
+	heap32[(r15+81)] = 0;
+	heap32[(r15+82)] = 1065353216;
+	heap32[(r15+83)] = 0;
+	heap32[(r15+84)] = -1087163597;
+	heap32[(r15+85)] = 1057384039;
+	heap32[(r15+86)] = 0;
+	heap32[(r15+87)] = 0;
+	heap32[(r15+88)] = -1287930578;
+	heap32[(r15+89)] = -1082130432;
+	heap32[(r15+90)] = 0;
+	heap32[(r15+91)] = 0;
+	heap32[(r15+92)] = 1065353216;
+	heap32[(r15+93)] = -1287930578;
+	heap32[(r15+94)] = 0;
+	heap32[(r15+95)] = 0;
+	heap32[(r15+96)] = -2147483648;
+	heap32[(r15+97)] = 0;
+	heap32[(r15+98)] = 1065353216;
+	heap32[(r15+99)] = 0;
+	heap32[(r15+100)] = 0;
+	heap32[(r15+101)] = -1088338002;
+	heap32[(r15+102)] = 0;
+	heap32[(r15+103)] = 0;
+	heap8[r_g0+540] = r13;
+	heap32[(r15+128)] = 0;
+	heap32[(r15+140)] = -1082130432;
+	heap32[(r15+107)] = 1008981770;
+	heap32[(r15+111)] = 1028443341;
+	heap32[(r15+145)] = 0;
+	heap32[(r15+146)] = 0;
+	heap32[(r15+147)] = 1060320051;
+	heap32[(r15+148)] = 0;
+	heap32[(r15+108)] = 1070141403;
+	heap32[(r15+109)] = 1070141403;
+	heap32[(r15+110)] = 0;
+	heap32[(r15+104)] = 1065353216;
+	heap32[(r15+105)] = 1050253722;
+	heap32[(r15+106)] = 1065353216;
+	heap32[(r12+30)] = r_g0;
+	r11 = heap32[(r12+1)];
+	r14 = r11 >> 2;
+	r14 = heap32[(r14)];
+	r14 = r14 >> 2;
+	r14 = heap32[(r14+13)];
+	heap32[(g0)] = r11;
+	heap32[(g0+1)] = r_g0;
+	heap32[(g0+2)] = 1;
+	__FUNCTION_TABLE__[(r14)>>2](i7);
+	heap32[(g0)] = 748;
+	_Znwj(i7);
+	r8 = r_g0;
+	r11 = heap32[(r12+21)];
+	r14 = heap32[(r12+20)];
+	r15 = r8 >> 2;
+	heap32[(r15+1)] = 4;
+	heap32[(r15+2)] = -1;
+	heap32[(r15+3)] = -1;
+	heap8[r8+16] = r13;
+	heap32[(r15+5)] = r14;
+	heap32[(r15+6)] = r11;
+	heap32[(r15+7)] = 0;
+	heap32[(r15+8)] = 1050253722;
+	heap32[(r15)] = r9;
+	heap32[(r15+135)] = -1287930578;
+	heap32[(r15+136)] = 0;
+	heap32[(r15+137)] = 1065353216;
+	heap32[(r15+138)] = 0;
+	heap32[(r15+139)] = -2147483648;
+	heap32[(r15+140)] = 1065353216;
+	heap32[(r15+141)] = 0;
+	heap32[(r15+142)] = 0;
+	heap32[(r15+143)] = -1082130432;
+	heap32[(r15+144)] = -2147483648;
+	heap32[(r15+145)] = -1287930578;
+	heap32[(r15+146)] = 0;
+	heap32[(r15+147)] = 0;
+	heap32[(r15+148)] = 1059145646;
+	heap32[(r15+149)] = 0;
+	heap32[(r15+150)] = 0;
+	heap32[(r15+151)] = -1287930578;
+	heap32[(r15+152)] = 0;
+	heap32[(r15+153)] = 1065353216;
+	heap32[(r15+154)] = 0;
+	heap32[(r15+155)] = -2147483648;
+	heap32[(r15+156)] = 1065353216;
+	heap32[(r15+157)] = 0;
+	heap32[(r15+158)] = 0;
+	heap32[(r15+159)] = -1082130432;
+	heap32[(r15+160)] = -2147483648;
+	heap32[(r15+161)] = -1287930578;
+	heap32[(r15+162)] = 0;
+	heap32[(r15+163)] = 0;
+	heap32[(r15+164)] = -1090854584;
+	heap32[(r15+165)] = 0;
+	heap32[(r15+166)] = 0;
+	heap8[r8+720] = r13;
+	heap8[r8+721] = r13;
+	heap8[r8+723] = r13;
+	heap8[r8+724] = r4;
+	heap8[r8+725] = r13;
+	heap32[(r15+183)] = 0;
+	heap32[(r15+172)] = 1065353216;
+	heap32[(r15+173)] = -1082130432;
+	heap32[(r15+170)] = 1050253722;
+	heap32[(r15+171)] = 1065353216;
+	heap32[(r15+169)] = 1063675494;
+	heap8[r8+722] = r13;
+	heap32[(r15+179)] = 1065353216;
+	heap32[(g0)] = -1077342245;
+	heap32[(g0+1)] = 1086918619;
+	fmodf(i7);
+	f12 = f_g0;
+	if(f12 >=f13) //_LBB26_252
+{
+	f14 =        3.1415927410125732;
+	if(f12 >f14) //_LBB26_254
+{
+	f14 =       -6.2831854820251465;
+	f12 = f12+f14;
+}
+}
+else{
+	f14 =        6.2831854820251465;
+	f12 = f12+f14;
+}
+	r11 = r8 >> 2;
+	heapFloat[(r11+172)] = f12;
+	heap32[(g0)] = 0;
+	heap32[(g0+1)] = 1086918619;
+	fmodf(i7);
+	f12 = f_g0;
+	if(f12 >=f13) //_LBB26_257
+{
+	f14 =        3.1415927410125732;
+	if(f12 >f14) //_LBB26_259
+{
+	f14 =       -6.2831854820251465;
+	f12 = f12+f14;
+}
+}
+else{
+	f14 =        6.2831854820251465;
+	f12 = f12+f14;
+}
+	heapFloat[(r11+173)] = f12;
+	heap32[(r11+169)] = 1063675494;
+	heap32[(r11+170)] = 1050253722;
+	heap32[(r11+171)] = 1065353216;
+	heap32[(r12+31)] = r8;
+	r11 = heap32[(r12+1)];
+	r14 = r11 >> 2;
+	r14 = heap32[(r14)];
+	r14 = r14 >> 2;
+	r14 = heap32[(r14+13)];
+	heap32[(g0)] = r11;
+	heap32[(g0+1)] = r8;
+	heap32[(g0+2)] = 1;
+	__FUNCTION_TABLE__[(r14)>>2](i7);
+	heap32[(g0)] = 596;
+	_Znwj(i7);
+	r11 = heap32[(r12+22)];
+	r14 = heap32[(r12+14)];
+	r15 = r_g0 >> 2;
+	heap32[(r15+1)] = 5;
+	heap32[(r15+2)] = -1;
+	heap32[(r15+3)] = -1;
+	heap8[r_g0+16] = r13;
+	heap32[(r15+5)] = r14;
+	heap32[(r15+6)] = r11;
+	heap32[(r15+7)] = 0;
+	heap32[(r15+8)] = 1050253722;
+	heap32[(r15)] = r10;
+	heap32[(r15+72)] = 1065353216;
+	heap32[(r15+73)] = 0;
+	heap32[(r15+74)] = 0;
+	heap32[(r15+75)] = 0;
+	heap32[(r15+76)] = 0;
+	heap32[(r15+77)] = 1065353216;
+	heap32[(r15+78)] = 0;
+	heap32[(r15+79)] = 0;
+	heap32[(r15+80)] = -2147483648;
+	heap32[(r15+81)] = 0;
+	heap32[(r15+82)] = 1065353216;
+	heap32[(r15+83)] = 0;
+	heap32[(r15+84)] = 1060320051;
+	heap32[(r15+85)] = 1057384039;
+	heap32[(r15+86)] = 0;
+	heap32[(r15+87)] = 0;
+	heap32[(r15+88)] = -1287930578;
+	heap32[(r15+89)] = -1082130432;
+	heap32[(r15+90)] = 0;
+	heap32[(r15+91)] = 0;
+	heap32[(r15+92)] = 1065353216;
+	heap32[(r15+93)] = -1287930578;
+	heap32[(r15+94)] = 0;
+	heap32[(r15+95)] = 0;
+	heap32[(r15+96)] = -2147483648;
+	heap32[(r15+97)] = 0;
+	heap32[(r15+98)] = 1065353216;
+	heap32[(r15+99)] = 0;
+	heap32[(r15+100)] = 0;
+	heap32[(r15+101)] = -1088338002;
+	heap32[(r15+102)] = 0;
+	heap32[(r15+103)] = 0;
+	heap8[r_g0+540] = r13;
+	heap32[(r15+128)] = 0;
+	heap32[(r15+140)] = -1082130432;
+	heap32[(r15+107)] = 1008981770;
+	heap32[(r15+111)] = 1028443341;
+	heap32[(r15+145)] = 0;
+	heap32[(r15+146)] = 0;
+	heap32[(r15+147)] = 1060320051;
+	heap32[(r15+148)] = 0;
+	heap32[(r15+108)] = 1070141403;
+	heap32[(r15+109)] = 1070141403;
+	heap32[(r15+110)] = 0;
+	heap32[(r15+104)] = 1065353216;
+	heap32[(r15+105)] = 1050253722;
+	heap32[(r15+106)] = 1065353216;
+	heap32[(r12+32)] = r_g0;
+	r10 = heap32[(r12+1)];
+	r11 = r10 >> 2;
+	r11 = heap32[(r11)];
+	r11 = r11 >> 2;
+	r11 = heap32[(r11+13)];
+	heap32[(g0)] = r10;
+	heap32[(g0+1)] = r_g0;
+	heap32[(g0+2)] = 1;
+	__FUNCTION_TABLE__[(r11)>>2](i7);
+	heap32[(g0)] = 748;
+	_Znwj(i7);
+	r8 = r_g0;
+	r10 = heap32[(r12+23)];
+	r11 = heap32[(r12+22)];
+	r14 = r8 >> 2;
+	heap32[(r14+1)] = 4;
+	heap32[(r14+2)] = -1;
+	heap32[(r14+3)] = -1;
+	heap8[r8+16] = r13;
+	heap32[(r14+5)] = r11;
+	heap32[(r14+6)] = r10;
+	heap32[(r14+7)] = 0;
+	heap32[(r14+8)] = 1050253722;
+	heap32[(r14)] = r9;
+	heap32[(r14+135)] = -1287930578;
+	heap32[(r14+136)] = 0;
+	heap32[(r14+137)] = 1065353216;
+	heap32[(r14+138)] = 0;
+	heap32[(r14+139)] = -2147483648;
+	heap32[(r14+140)] = 1065353216;
+	heap32[(r14+141)] = 0;
+	heap32[(r14+142)] = 0;
+	heap32[(r14+143)] = -1082130432;
+	heap32[(r14+144)] = -2147483648;
+	heap32[(r14+145)] = -1287930578;
+	heap32[(r14+146)] = 0;
+	heap32[(r14+147)] = 0;
+	heap32[(r14+148)] = 1059145646;
+	heap32[(r14+149)] = 0;
+	heap32[(r14+150)] = 0;
+	heap32[(r14+151)] = -1287930578;
+	heap32[(r14+152)] = 0;
+	heap32[(r14+153)] = 1065353216;
+	heap32[(r14+154)] = 0;
+	heap32[(r14+155)] = -2147483648;
+	heap32[(r14+156)] = 1065353216;
+	heap32[(r14+157)] = 0;
+	heap32[(r14+158)] = 0;
+	heap32[(r14+159)] = -1082130432;
+	heap32[(r14+160)] = -2147483648;
+	heap32[(r14+161)] = -1287930578;
+	heap32[(r14+162)] = 0;
+	heap32[(r14+163)] = 0;
+	heap32[(r14+164)] = -1090854584;
+	heap32[(r14+165)] = 0;
+	heap32[(r14+166)] = 0;
+	heap8[r8+720] = r13;
+	heap8[r8+721] = r13;
+	heap8[r8+723] = r13;
+	heap8[r8+724] = r4;
+	heap8[r8+725] = r13;
+	heap32[(r14+183)] = 0;
+	heap32[(r14+172)] = 1065353216;
+	heap32[(r14+173)] = -1082130432;
+	heap32[(r14+170)] = 1050253722;
+	heap32[(r14+171)] = 1065353216;
+	heap32[(r14+169)] = 1063675494;
+	heap8[r8+722] = r13;
+	heap32[(r14+179)] = 1065353216;
+	heap32[(g0)] = -1077342245;
+	heap32[(g0+1)] = 1086918619;
+	fmodf(i7);
+	f12 = f_g0;
+	if(f12 >=f13) //_LBB26_262
+{
+	f14 =        3.1415927410125732;
+	if(f12 >f14) //_LBB26_264
+{
+	f14 =       -6.2831854820251465;
+	f12 = f12+f14;
+}
+}
+else{
+	f14 =        6.2831854820251465;
+	f12 = f12+f14;
+}
+	r9 = r8 >> 2;
+	heapFloat[(r9+172)] = f12;
+	heap32[(g0)] = 0;
+	heap32[(g0+1)] = 1086918619;
+	fmodf(i7);
+	f12 = f_g0;
+	if(f12 >=f13) //_LBB26_267
+{
+	f13 =        3.1415927410125732;
+	if(f12 >f13) //_LBB26_269
+{
+	f13 =       -6.2831854820251465;
+	f12 = f12+f13;
+}
+}
+else{
+	f13 =        6.2831854820251465;
+	f12 = f12+f13;
+}
+	heapFloat[(r9+173)] = f12;
+	heap32[(r9+169)] = 1063675494;
+	heap32[(r9+170)] = 1050253722;
+	heap32[(r9+171)] = 1065353216;
+	heap32[(r12+33)] = r8;
+	r9 = heap32[(r12+1)];
+	r10 = r9 >> 2;
+	r10 = heap32[(r10)];
+	r10 = r10 >> 2;
+	r10 = heap32[(r10+13)];
+	heap32[(g0)] = r9;
+	heap32[(g0+1)] = r8;
+	heap32[(g0+2)] = 1;
+	__FUNCTION_TABLE__[(r10)>>2](i7);
+	r8 = heap32[(r1+10)];
+	r9 = heap32[(r1+9)];
+	if(r8 ==r9) //_LBB26_272
+{
+	r10 = r9 << 1;
+	r10 = r9 == 0 ? r4 : r10;
+if(!(r8 >=r10)) //_LBB26_271
+{
+	if(r10 !=0) //_LBB26_275
+{
+	r8 = heap32[(r2)];
+	r11 = r10 << 2;
+	r8 = (r8 + 1)|0;
+	r11 = r11 | 3;
+	heap32[(r2)] = r8;
+	r8 = (r11 + 16)|0;
+	heap32[(g0)] = r8;
+	malloc(i7);
+	r8 = r_g0;
+	if(r8 !=0) //_LBB26_277
+{
+	r11 = (r8 + 4)|0;
+	r11 = (r13 - r11)|0;
+	r11 = r11 & 15;
+	r11 = (r8 + r11)|0;
+	r12 = (r11 + 4)|0;
+	r11 = r11 >> 2;
+	heap32[(r11)] = r8;
+	r8 = r12;
+}
+}
+else{
+	r8 = 0;
+}
+_358: do {
+	if(r9 <1) //_LBB26_280
+{
+	r11 = heap32[(r1+11)];
+}
+else{
+_360: while(true){
+	r11 = heap32[(r1+11)];
+	r12 = r13 << 2;
+	r14 = (r11 + r12)|0;
+	r14 = r14 >> 2;
+	r12 = (r8 + r12)|0;
+	r14 = heap32[(r14)];
+	r13 = (r13 + 1)|0;
+	r12 = r12 >> 2;
+	heap32[(r12)] = r14;
+if(!(r9 !=r13)) //_LBB26_281
+{
+break _358;
+}
+}
+}
+} while(0);
+	if(r11 !=0) //_LBB26_284
+{
+	r12 = heapU8[r6+48];
+	if(r12 !=0) //_LBB26_286
+{
+	r9 = gNumAlignedFree;
+	r9 = r9 >> 2;
+	r12 = heap32[(r9)];
+	r12 = (r12 + 1)|0;
+	r11 = r11 >> 2;
+	heap32[(r9)] = r12;
+	r9 = heap32[(r11+-1)];
+	heap32[(g0)] = r9;
+	free(i7);
+	r9 = heap32[(r1+9)];
+}
+	heap32[(r1+11)] = 0;
+}
+	heap8[r6+48] = r4;
+	heap32[(r1+11)] = r8;
+	heap32[(r1+10)] = r10;
+}
+}
+	r8 = r9 << 2;
+	r9 = heap32[(r1+11)];
+	r8 = (r9 + r8)|0;
+	r8 = r8 >> 2;
+	heap32[(r8)] = r7;
+	r7 = heap32[(r1+9)];
+	r5 = (r5 + 1)|0;
+	r7 = (r7 + 1)|0;
+	heap32[(r1+9)] = r7;
+if(!(r0 !=r5)) //_LBB26_185
+{
+break _262;
+}
+}
+	f3 =                         7;
+	f4 =                        -2;
+	r0 = (r0 + -1)|0;
+	f1 = f1+f3;
+	f2 = f2+f4;
+	r3 = (r3 + 1)|0;
+	if(r0 ==0) //_LBB26_165
+{
+break _161;
+}
+else{
+continue _260;
+}
+}
+}
+}
+}
+}
+} while(0);
+	return;
+break;
+case 46:
+	r0 = _2E_str674;
+	r1 = _2E_str573;
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r1;
+	heap32[(g0+2)] = 53;
+	_assert(i7);
+break;
+}
+}
+
+function _GLOBAL__D__Z6mymainiPPc(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+var __label__ = 0;
+	i7 = sp + -8;var g0 = i7>>2; // save stack
+	r0 = _ZL14benchmarkDemo4;
+	r1 = _ZTV13BenchmarkDemo;
+	r2 = r0 >> 2;
+	r1 = (r1 + 8)|0;
+	heap32[(r2)] = r1;
+	heap32[(g0)] = r0;
+	_ZN13BenchmarkDemo11exitPhysicsEv(i7);
+	r1 = heap32[(r2+11)];
+if(!(r1 ==0)) //_LBB27_4
+{
+	r3 = heapU8[r0+48];
+if(!(r3 ==0)) //_LBB27_3
+{
+	r3 = gNumAlignedFree;
+	r3 = r3 >> 2;
+	r4 = heap32[(r3)];
+	r4 = (r4 + 1)|0;
+	r1 = r1 >> 2;
+	heap32[(r3)] = r4;
+	r1 = heap32[(r1+-1)];
+	heap32[(g0)] = r1;
+	free(i7);
+}
+	heap32[(r2+11)] = 0;
+}
+	r1 = 1;
+	heap8[r0+48] = r1;
+	heap32[(r2+11)] = 0;
+	heap32[(r2+9)] = 0;
+	heap32[(r2+10)] = 0;
+	r3 = heap32[(r2+6)];
+if(!(r3 ==0)) //_LBB27_8
+{
+	r4 = heapU8[r0+28];
+if(!(r4 ==0)) //_LBB27_7
+{
+	r4 = gNumAlignedFree;
+	r4 = r4 >> 2;
+	r5 = heap32[(r4)];
+	r5 = (r5 + 1)|0;
+	r3 = r3 >> 2;
+	heap32[(r4)] = r5;
+	r3 = heap32[(r3+-1)];
+	heap32[(g0)] = r3;
+	free(i7);
+}
+	heap32[(r2+6)] = 0;
+}
+	heap8[r0+28] = r1;
+	heap32[(r2+6)] = 0;
+	heap32[(r2+4)] = 0;
+	heap32[(r2+5)] = 0;
+	return;
+}
+
+function _ZN14BenchmarkDemo4D1Ev(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+var __label__ = 0;
+	i7 = sp + -8;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = _ZTV14BenchmarkDemo4;
+	r2 = r0 >> 2;
+	r1 = (r1 + 8)|0;
+	heap32[(r2)] = r1;
+	heap32[(g0)] = r0;
+	_ZN13BenchmarkDemoD2Ev(i7);
+	return;
+}
+
+function _ZN14BenchmarkDemo4D0Ev(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+var __label__ = 0;
+	i7 = sp + -8;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = _ZTV14BenchmarkDemo4;
+	r2 = r0 >> 2;
+	r1 = (r1 + 8)|0;
+	heap32[(r2)] = r1;
+	heap32[(g0)] = r0;
+	_ZN13BenchmarkDemoD2Ev(i7);
+	heap32[(g0)] = r0;
+	_ZdlPv(i7);
+	return;
+}
+
+function __draw(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+var __label__ = 0;
+	i7 = sp + -8;var g0 = i7>>2; // save stack
+	r0 = _ZL14benchmarkDemo4;
+	heap32[(g0)] = r0;
+	_ZN13BenchmarkDemo20clientMoveAndDisplayEv(i7);
+	return;
+}
+
+function _ZN13BenchmarkDemoD2Ev(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+var __label__ = 0;
+	i7 = sp + -8;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = _ZTV13BenchmarkDemo;
+	r2 = r0 >> 2;
+	r1 = (r1 + 8)|0;
+	heap32[(r2)] = r1;
+	heap32[(g0)] = r0;
+	_ZN13BenchmarkDemo11exitPhysicsEv(i7);
+	r1 = heap32[(r2+11)];
+if(!(r1 ==0)) //_LBB31_4
+{
+	r3 = heapU8[r0+48];
+if(!(r3 ==0)) //_LBB31_3
+{
+	r3 = gNumAlignedFree;
+	r3 = r3 >> 2;
+	r4 = heap32[(r3)];
+	r4 = (r4 + 1)|0;
+	r1 = r1 >> 2;
+	heap32[(r3)] = r4;
+	r1 = heap32[(r1+-1)];
+	heap32[(g0)] = r1;
+	free(i7);
+}
+	heap32[(r2+11)] = 0;
+}
+	r1 = 1;
+	heap8[r0+48] = r1;
+	heap32[(r2+11)] = 0;
+	heap32[(r2+9)] = 0;
+	heap32[(r2+10)] = 0;
+	r3 = heap32[(r2+6)];
+if(!(r3 ==0)) //_LBB31_8
+{
+	r4 = heapU8[r0+28];
+if(!(r4 ==0)) //_LBB31_7
+{
+	r4 = gNumAlignedFree;
+	r4 = r4 >> 2;
+	r5 = heap32[(r4)];
+	r5 = (r5 + 1)|0;
+	r3 = r3 >> 2;
+	heap32[(r4)] = r5;
+	r3 = heap32[(r3+-1)];
+	heap32[(g0)] = r3;
+	free(i7);
+}
+	heap32[(r2+6)] = 0;
+}
+	heap8[r0+28] = r1;
+	heap32[(r2+6)] = 0;
+	heap32[(r2+4)] = 0;
+	heap32[(r2+5)] = 0;
+	return;
+}
+
+function __init(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+var __label__ = 0;
+	i7 = sp + 0;var g0 = i7>>2; // save stack
+	r0 = gDisableDeactivation;
+	r1 = 1;
+	heap8[r0] = r1;
+	_ZN13BenchmarkDemo11initPhysicsEv(i7);
+	return;
+}
+
+function _ZN15btNullPairCache23getOverlappingPairArrayEv(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+var __label__ = 0;
+	i7 = sp + 0;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r0 = (r0 + 4)|0;
+	r_g0 = r0;
+	return;
+}
+
+function _ZN15btNullPairCache20cleanOverlappingPairER16btBroadphasePairP12btDispatcher(sp)
+{
+	var i7;
+	var fp = sp>>2;
+var __label__ = 0;
+	i7 = sp + 0;var g0 = i7>>2; // save stack
+	return;
+}
+
+function _ZNK15btNullPairCache22getNumOverlappingPairsEv(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+var __label__ = 0;
+	i7 = sp + 0;var g0 = i7>>2; // save stack
+	r0 = 0;
+	r_g0 = r0;
+	return;
+}
+
+function _ZN15btNullPairCache19cleanProxyFromPairsEP17btBroadphaseProxyP12btDispatcher(sp)
+{
+	var i7;
+	var fp = sp>>2;
+var __label__ = 0;
+	i7 = sp + 0;var g0 = i7>>2; // save stack
+	return;
+}
+
+function _ZN15btNullPairCache24setOverlapFilterCallbackEP23btOverlapFilterCallback(sp)
+{
+	var i7;
+	var fp = sp>>2;
+var __label__ = 0;
+	i7 = sp + 0;var g0 = i7>>2; // save stack
+	return;
+}
+
+function _ZN15btNullPairCache26processAllOverlappingPairsEP17btOverlapCallbackP12btDispatcher(sp)
+{
+	var i7;
+	var fp = sp>>2;
+var __label__ = 0;
+	i7 = sp + 0;var g0 = i7>>2; // save stack
+	return;
+}
+
+function _ZN15btNullPairCache8findPairEP17btBroadphaseProxyS1_(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+var __label__ = 0;
+	i7 = sp + 0;var g0 = i7>>2; // save stack
+	r0 = 0;
+	r_g0 = r0;
+	return;
+}
+
+function _ZN15btNullPairCache18hasDeferredRemovalEv(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+var __label__ = 0;
+	i7 = sp + 0;var g0 = i7>>2; // save stack
+	r0 = 1;
+	r_g0 = r0;
+	return;
+}
+
+function _ZN15btNullPairCache28setInternalGhostPairCallbackEP25btOverlappingPairCallback(sp)
+{
+	var i7;
+	var fp = sp>>2;
+var __label__ = 0;
+	i7 = sp + 0;var g0 = i7>>2; // save stack
+	return;
+}
+
+function _ZN15btNullPairCache18addOverlappingPairEP17btBroadphaseProxyS1_(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+var __label__ = 0;
+	i7 = sp + 0;var g0 = i7>>2; // save stack
+	r0 = 0;
+	r_g0 = r0;
+	return;
+}
+
+function _ZN15btNullPairCache21removeOverlappingPairEP17btBroadphaseProxyS1_P12btDispatcher(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+var __label__ = 0;
+	i7 = sp + 0;var g0 = i7>>2; // save stack
+	r0 = 0;
+	r_g0 = r0;
+	return;
+}
+
+function _ZN15btNullPairCache37removeOverlappingPairsContainingProxyEP17btBroadphaseProxyP12btDispatcher(sp)
+{
+	var i7;
+	var fp = sp>>2;
+var __label__ = 0;
+	i7 = sp + 0;var g0 = i7>>2; // save stack
+	return;
+}
+
+function _ZN15btNullPairCache20sortOverlappingPairsEP12btDispatcher(sp)
+{
+	var i7;
+	var fp = sp>>2;
+var __label__ = 0;
+	i7 = sp + 0;var g0 = i7>>2; // save stack
+	return;
+}
+
+function _ZN15btNullPairCache26getOverlappingPairArrayPtrEv(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+var __label__ = 0;
+	i7 = sp + 0;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r0 = r0 >> 2;
+	r0 = heap32[(r0+4)];
+	r_g0 = r0;
+	return;
+}
+
+function _ZNK15btNullPairCache26getOverlappingPairArrayPtrEv(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+var __label__ = 0;
+	i7 = sp + 0;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r0 = r0 >> 2;
+	r0 = heap32[(r0+4)];
+	r_g0 = r0;
+	return;
+}
+
+function _ZN15btNullPairCacheD1Ev(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+var __label__ = 0;
+	i7 = sp + -8;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = _ZTV15btNullPairCache;
+	r2 = r0 >> 2;
+	r1 = (r1 + 8)|0;
+	heap32[(r2)] = r1;
+	r1 = heap32[(r2+4)];
+if(!(r1 ==0)) //_LBB48_4
+{
+	r3 = heapU8[r0+20];
+if(!(r3 ==0)) //_LBB48_3
+{
+	r3 = gNumAlignedFree;
+	r3 = r3 >> 2;
+	r4 = heap32[(r3)];
+	r4 = (r4 + 1)|0;
+	r1 = r1 >> 2;
+	heap32[(r3)] = r4;
+	r1 = heap32[(r1+-1)];
+	heap32[(g0)] = r1;
+	free(i7);
+}
+	heap32[(r2+4)] = 0;
+}
+	r1 = 1;
+	heap8[r0+20] = r1;
+	heap32[(r2+4)] = 0;
+	heap32[(r2+2)] = 0;
+	heap32[(r2+3)] = 0;
+	return;
+}
+
+function _ZN15btNullPairCacheD0Ev(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+var __label__ = 0;
+	i7 = sp + -8;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = _ZTV15btNullPairCache;
+	r2 = r0 >> 2;
+	r1 = (r1 + 8)|0;
+	heap32[(r2)] = r1;
+	r1 = heap32[(r2+4)];
+if(!(r1 ==0)) //_LBB49_4
+{
+	r3 = heapU8[r0+20];
+if(!(r3 ==0)) //_LBB49_3
+{
+	r3 = gNumAlignedFree;
+	r3 = r3 >> 2;
+	r4 = heap32[(r3)];
+	r4 = (r4 + 1)|0;
+	r1 = r1 >> 2;
+	heap32[(r3)] = r4;
+	r1 = heap32[(r1+-1)];
+	heap32[(g0)] = r1;
+	free(i7);
+}
+	heap32[(r2+4)] = 0;
+}
+	r1 = 1;
+	heap8[r0+20] = r1;
+	heap32[(r2+4)] = 0;
+	heap32[(r2+2)] = 0;
+	heap32[(r2+3)] = 0;
+	heap32[(g0)] = r0;
+	_ZdlPv(i7);
+	return;
+}
+
+function _ZNK20btAxisSweep3InternalItE7getAabbEP17btBroadphaseProxyR9btVector3S4_(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+var __label__ = 0;
+	i7 = sp + 0;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp+1)];
+	r1 = heap32[(fp+2)];
+	r0 = r0 >> 2;
+	r1 = r1 >> 2;
+	heap32[(r1)] = heap32[(r0+4)];
+	heap32[(r1+1)] = heap32[(r0+5)];
+	r2 = heap32[(fp+3)];
+	heap32[(r1+2)] = heap32[(r0+6)];
+	r2 = r2 >> 2;
+	heap32[(r1+3)] = heap32[(r0+7)];
+	heap32[(r2)] = heap32[(r0+8)];
+	heap32[(r2+1)] = heap32[(r0+9)];
+	heap32[(r2+2)] = heap32[(r0+10)];
+	heap32[(r2+3)] = heap32[(r0+11)];
+	return;
+}
+
+function _ZN20btAxisSweep3InternalItE23getOverlappingPairCacheEv(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+var __label__ = 0;
+	i7 = sp + 0;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r0 = r0 >> 2;
+	r0 = heap32[(r0+23)];
+	r_g0 = r0;
+	return;
+}
+
+function _ZNK20btAxisSweep3InternalItE23getOverlappingPairCacheEv(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+var __label__ = 0;
+	i7 = sp + 0;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r0 = r0 >> 2;
+	r0 = heap32[(r0+23)];
+	r_g0 = r0;
+	return;
+}
+
+function _ZNK20btAxisSweep3InternalItE17getBroadphaseAabbER9btVector3S2_(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+var __label__ = 0;
+	i7 = sp + 0;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = heap32[(fp+1)];
+	r0 = r0 >> 2;
+	r1 = r1 >> 2;
+	heap32[(r1)] = heap32[(r0+2)];
+	heap32[(r1+1)] = heap32[(r0+3)];
+	r2 = heap32[(fp+2)];
+	heap32[(r1+2)] = heap32[(r0+4)];
+	r2 = r2 >> 2;
+	heap32[(r1+3)] = heap32[(r0+5)];
+	heap32[(r2)] = heap32[(r0+6)];
+	heap32[(r2+1)] = heap32[(r0+7)];
+	heap32[(r2+2)] = heap32[(r0+8)];
+	heap32[(r2+3)] = heap32[(r0+9)];
+	return;
+}
+
+function _ZN20btAxisSweep3InternalItE9resetPoolEP12btDispatcher(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+var __label__ = 0;
+	i7 = sp + 0;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = heapU16[(r0+56)>>1];
+if(!(r1 !=0)) //_LBB54_6
+{
+	r1 = 1;
+	heap16[(r0+64)>>1] = r1;
+	r2 = heapU16[(r0+58)>>1];
+	if(uint(r2) >uint(1)) //_LBB54_3
+{
+	r3 = 2;
+_5: while(true){
+	r2 = r1 & 65535;
+	r4 = r0 >> 2;
+	r2 = r2 << 6;
+	r4 = heap32[(r4+15)];
+	r2 = (r4 + r2)|0;
+	heap16[(r2+48)>>1] = r3;
+	r1 = (r1 + 1)|0;
+	r2 = heapU16[(r0+58)>>1];
+	r3 = (r3 + 1)|0;
+	r4 = r1 & 65535;
+if(!(uint(r2) >uint(r4))) //_LBB54_4
+{
+break _5;
+}
+}
+}
+	r1 = r2 & 65535;
+	r0 = r0 >> 2;
+	r1 = r1 << 6;
+	r0 = heap32[(r0+15)];
+	r0 = (r1 + r0)|0;
+	r1 = 0;
+	heap16[(r0+-16)>>1] = r1;
+}
+	return;
+}
+
+function _ZN20btAxisSweep3InternalItE10printStatsEv(sp)
+{
+	var i7;
+	var fp = sp>>2;
+var __label__ = 0;
+	i7 = sp + 0;var g0 = i7>>2; // save stack
+	return;
+}
+
+function _ZN20btAxisSweep3InternalItE8aabbTestERK9btVector3S3_R24btBroadphaseAabbCallback(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+	var r6;
+	var r7;
+	var r8;
+	var r9;
+	var r10;
+	var r11;
+	var f0;
+	var f1;
+var __label__ = 0;
+	i7 = sp + -16;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = r0 >> 2;
+	r2 = heap32[(r1+27)];
+	r3 = heap32[(fp+1)];
+	r4 = heap32[(fp+2)];
+	r5 = heap32[(fp+3)];
+	if(r2 !=0) //_LBB56_2
+{
+	r0 = r2 >> 2;
+	r0 = heap32[(r0)];
+	r0 = r0 >> 2;
+	r0 = heap32[(r0+7)];
+	heap32[(g0)] = r2;
+	heap32[(g0+1)] = r3;
+	heap32[(g0+2)] = r4;
+	heap32[(g0+3)] = r5;
+	__FUNCTION_TABLE__[(r0)>>2](i7);
+	return;
+}
+else{
+	r2 = heapU16[(r0+56)>>1];
+	r2 = r2 << 1;
+	r2 = r2 | 1;
+if(!(r2 ==1)) //_LBB56_18
+{
+	r2 = 1;
+	r6 = 2;
+_6: while(true){
+	r7 = r6;
+	r6 = r2 & 65535;
+	r8 = heap32[(r1+17)];
+	r6 = r6 << 2;
+	r9 = heapU8[r8+r6];
+	r9 = r9 & 1;
+if(!(r9 ==0)) //_LBB56_17
+{
+	r6 = (r8 + r6)|0;
+	r6 = heapU16[(r6+2)>>1];
+	r8 = heap32[(r1+15)];
+	r6 = r6 << 6;
+	r6 = (r8 + r6)|0;
+	r8 = r3 >> 2;
+	r9 = r6 >> 2;
+	f0 = heapFloat[(r8)];
+	f1 = heapFloat[(r9+8)];
+	if(f0 >f1) //_LBB56_8
+{
+__label__ = 8;
+}
+else{
+	r10 = r4 >> 2;
+	f0 = heapFloat[(r10)];
+	f1 = heapFloat[(r9+4)];
+	if(f0 <f1) //_LBB56_8
+{
+__label__ = 8;
+}
+else{
+	r10 = 1;
+__label__ = 9;
+}
+}
+if (__label__ == 8){
+	r10 = 0;
+}
+	f0 = heapFloat[(r8+2)];
+	f1 = heapFloat[(r9+10)];
+	if(f0 >f1) //_LBB56_12
+{
+__label__ = 11;
+}
+else{
+	r11 = r4 >> 2;
+	f0 = heapFloat[(r11+2)];
+	f1 = heapFloat[(r9+6)];
+	if(f0 <f1) //_LBB56_12
+{
+__label__ = 11;
+}
+else{
+__label__ = 12;
+}
+}
+if (__label__ == 11){
+	r10 = 0;
+}
+	f0 = heapFloat[(r8+1)];
+	f1 = heapFloat[(r9+9)];
+if(!(f0 >f1)) //_LBB56_17
+{
+	r8 = r4 >> 2;
+	f0 = heapFloat[(r8+1)];
+	f1 = heapFloat[(r9+5)];
+if(!(f0 <f1)) //_LBB56_17
+{
+	r8 = r10 & 255;
+if(!(r8 ==0)) //_LBB56_17
+{
+	r8 = r5 >> 2;
+	r8 = heap32[(r8)];
+	r8 = r8 >> 2;
+	r8 = heap32[(r8+2)];
+	heap32[(g0)] = r5;
+	heap32[(g0+1)] = r6;
+	__FUNCTION_TABLE__[(r8)>>2](i7);
+}
+}
+}
+}
+	r8 = heapU16[(r0+56)>>1];
+	r6 = (r7 + 1)|0;
+	r2 = (r2 + 1)|0;
+	r8 = r8 << 1;
+	r7 = r7 & 65535;
+	r8 = r8 | 1;
+if(!(uint(r7) <uint(r8))) //_LBB56_4
+{
+break _6;
+}
+}
+}
+	return;
+}
+}
+
+function _ZN20btAxisSweep3InternalItE7rayTestERK9btVector3S3_R23btBroadphaseRayCallbackS3_S3_(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+	var r6;
+	var r7;
+var __label__ = 0;
+	i7 = sp + -24;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = r0 >> 2;
+	r2 = heap32[(r1+27)];
+	r3 = heap32[(fp+3)];
+	if(r2 !=0) //_LBB57_2
+{
+	r0 = heap32[(fp+1)];
+	r1 = heap32[(fp+2)];
+	r4 = heap32[(fp+4)];
+	r5 = heap32[(fp+5)];
+	r6 = r2 >> 2;
+	r6 = heap32[(r6)];
+	r6 = r6 >> 2;
+	r6 = heap32[(r6+6)];
+	heap32[(g0)] = r2;
+	heap32[(g0+1)] = r0;
+	heap32[(g0+2)] = r1;
+	heap32[(g0+3)] = r3;
+	heap32[(g0+4)] = r4;
+	heap32[(g0+5)] = r5;
+	__FUNCTION_TABLE__[(r6)>>2](i7);
+	return;
+}
+else{
+	r2 = heapU16[(r0+56)>>1];
+	r2 = r2 << 1;
+	r2 = r2 | 1;
+if(!(r2 ==1)) //_LBB57_7
+{
+	r2 = 1;
+	r4 = 2;
+_6: while(true){
+	r5 = r2 & 65535;
+	r6 = heap32[(r1+17)];
+	r5 = r5 << 2;
+	r7 = heapU8[r6+r5];
+	r7 = r7 & 1;
+if(!(r7 ==0)) //_LBB57_6
+{
+	r7 = r3 >> 2;
+	r7 = heap32[(r7)];
+	r7 = r7 >> 2;
+	r5 = (r6 + r5)|0;
+	r5 = heapU16[(r5+2)>>1];
+	r6 = heap32[(r7+2)];
+	r7 = heap32[(r1+15)];
+	r5 = r5 << 6;
+	r5 = (r7 + r5)|0;
+	heap32[(g0)] = r3;
+	heap32[(g0+1)] = r5;
+	__FUNCTION_TABLE__[(r6)>>2](i7);
+}
+	r5 = heapU16[(r0+56)>>1];
+	r6 = (r4 + 1)|0;
+	r2 = (r2 + 1)|0;
+	r5 = r5 << 1;
+	r7 = r4 & 65535;
+	r5 = r5 | 1;
+	r4 = r6;
+if(!(uint(r7) <uint(r5))) //_LBB57_4
+{
+break _6;
+}
+}
+}
+	return;
+}
+}
+
+function _ZNK20btAxisSweep3InternalItE8quantizeEPtRK9btVector3i(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var f0;
+	var f1;
+	var f2;
+	var f3;
+	var f4;
+	var f5;
+var __label__ = 0;
+	i7 = sp + 0;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = r0 >> 2;
+	f0 = heapFloat[(fp+2)];
+	f1 = heapFloat[(r1+2)];
+	f2 = heapFloat[(fp+4)];
+	f3 = heapFloat[(r1+4)];
+	f4 = heapFloat[(fp+3)];
+	f5 = heapFloat[(r1+3)];
+	f0 = f0-f1;
+	f1 = heapFloat[(r1+10)];
+	f2 = f2-f3;
+	f3 = heapFloat[(r1+12)];
+	f4 = f4-f5;
+	f5 = heapFloat[(r1+11)];
+	f0 = f0*f1;
+	r1 = heap32[(fp+1)];
+	r2 = heap32[(fp+5)];
+	f1 = f2*f3;
+	f2 = f4*f5;
+	f3 =                         0;
+	if(f0 >f3) //_LBB58_2
+{
+	r3 = heapU16[(r0+6)>>1];
+	f4 = r3; //fitos r3, f4
+	if(f0 <f4) //_LBB58_4
+{
+	r3 = heapU16[(r0+4)>>1];
+	r4 = Math.floor(f0);
+	r3 = r3 & r4;
+	r3 = r3 | r2;
+}
+else{
+	r4 = heapU16[(r0+4)>>1];
+	r3 = r4 & r3;
+	r3 = r3 | r2;
+}
+}
+else{
+	r3 = r2;
+}
+	heap16[(r1)>>1] = r3;
+	if(f2 >f3) //_LBB58_7
+{
+	r3 = heapU16[(r0+6)>>1];
+	f0 = r3; //fitos r3, f0
+	if(f2 <f0) //_LBB58_9
+{
+	r3 = heapU16[(r0+4)>>1];
+	r4 = Math.floor(f2);
+	r3 = r3 & r4;
+	r3 = r3 | r2;
+}
+else{
+	r4 = heapU16[(r0+4)>>1];
+	r3 = r4 & r3;
+	r3 = r3 | r2;
+}
+}
+else{
+	r3 = r2;
+}
+	heap16[(r1+2)>>1] = r3;
+	if(f1 >f3) //_LBB58_12
+{
+	r3 = heapU16[(r0+6)>>1];
+	f0 = r3; //fitos r3, f0
+	if(f1 <f0) //_LBB58_14
+{
+	r0 = heapU16[(r0+4)>>1];
+	r3 = Math.floor(f1);
+	r0 = r0 & r3;
+	r2 = r0 | r2;
+}
+else{
+	r0 = heapU16[(r0+4)>>1];
+	r0 = r0 & r3;
+	r2 = r0 | r2;
+}
+}
+	heap16[(r1+4)>>1] = r2;
+	return;
+}
+
+function _ZN20btAlignedObjectArrayI16btBroadphasePairE17quickSortInternalI29btBroadphasePairSortPredicateEEvT_ii(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+	var r6;
+	var r7;
+	var r8;
+	var r9;
+	var r10;
+	var r11;
+	var r12;
+	var r13;
+	var r14;
+	var r15;
+	var r16;
+	var r17;
+	var r18;
+	var r19;
+	var r20;
+	var r21;
+	var r22;
+	var r23;
+	var r24;
+	var r25;
+var __label__ = 0;
+	i7 = sp + -16;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp+2)];
+	r1 = heap32[(fp+1)];
+	r2 = (r0 + r1)|0;
+	r3 = r2 >>> 31;
+	r4 = heap32[(fp)];
+	r2 = (r2 + r3)|0;
+	r3 = r4 >> 2;
+	r2 = r2 & 536870910;
+	r5 = heap32[(r3+3)];
+	r2 = r2 << 3;
+	r2 = (r5 + r2)|0;
+	r2 = r2 >> 2;
+	r5 = heap32[(r2)];
+	r6 = heap32[(r2+1)];
+	r2 = heap32[(r2+2)];
+	r7 = r1;
+	r8 = r0;
+_1: while(true){
+	r9 = heap32[(r3+3)];
+	r10 = r7 << 4;
+	r10 = (r9 + r10)|0;
+	r11 = 0;
+_3: while(true){
+	r12 = r11 << 4;
+	r12 = (r10 + r12)|0;
+	r12 = r12 >> 2;
+	r13 = r11 << 2;
+	r14 = heap32[(r12)];
+	if(r14 !=0) //_LBB59_5
+{
+	r15 = r14 >> 2;
+	r15 = heap32[(r15+3)];
+}
+else{
+	r15 = -1;
+}
+	if(r5 !=0) //_LBB59_8
+{
+	r16 = r5 >> 2;
+	r16 = heap32[(r16+3)];
+}
+else{
+	r16 = -1;
+}
+	r17 = r13 << 2;
+	r17 = (r10 + r17)|0;
+	r17 = r17 >> 2;
+	r17 = heap32[(r17+1)];
+	if(r17 !=0) //_LBB59_11
+{
+	r18 = r17 >> 2;
+	r18 = heap32[(r18+3)];
+}
+else{
+	r18 = -1;
+}
+	if(r6 !=0) //_LBB59_14
+{
+	r19 = r6 >> 2;
+	r19 = heap32[(r19+3)];
+}
+else{
+	r19 = -1;
+}
+_21: do {
+if(!(r15 >r16)) //_LBB59_2
+{
+if(!(r14 !=r5)) //_LBB59_18
+{
+	if(r18 >r19) //_LBB59_2
+{
+break _21;
+}
+}
+	if(r14 !=r5) //_LBB59_22
+{
+break _3;
+}
+else{
+	if(r17 !=r6) //_LBB59_22
+{
+break _3;
+}
+else{
+	r15 = r13 << 2;
+	r15 = (r10 + r15)|0;
+	r15 = r15 >> 2;
+	r15 = heap32[(r15+2)];
+if(!(uint(r15) >uint(r2))) //_LBB59_2
+{
+break _3;
+}
+}
+}
+}
+} while(0);
+	r11 = (r11 + 1)|0;
+continue _3;
+}
+	r18 = r8 << 4;
+	r15 = (r7 + r11)|0;
+	r9 = (r9 + r18)|0;
+	r16 = 0;
+_30: while(true){
+	r19 = r16 << 2;
+	if(r5 !=0) //_LBB59_25
+{
+	r20 = r5 >> 2;
+	r20 = heap32[(r20+3)];
+}
+else{
+	r20 = -1;
+}
+	r21 = r19 << 2;
+	r21 = (r9 + r21)|0;
+	r21 = r21 >> 2;
+	r21 = heap32[(r21)];
+	if(r21 !=0) //_LBB59_28
+{
+	r22 = r21 >> 2;
+	r22 = heap32[(r22+3)];
+}
+else{
+	r22 = -1;
+}
+	if(r6 !=0) //_LBB59_31
+{
+	r23 = r6 >> 2;
+	r23 = heap32[(r23+3)];
+}
+else{
+	r23 = -1;
+}
+	r24 = r19 << 2;
+	r24 = (r9 + r24)|0;
+	r24 = r24 >> 2;
+	r24 = heap32[(r24+1)];
+	if(r24 !=0) //_LBB59_34
+{
+	r25 = r24 >> 2;
+	r25 = heap32[(r25+3)];
+}
+else{
+	r25 = -1;
+}
+_48: do {
+if(!(r20 >r22)) //_LBB59_21
+{
+if(!(r5 !=r21)) //_LBB59_38
+{
+	if(r23 >r25) //_LBB59_21
+{
+break _48;
+}
+}
+	if(r5 !=r21) //_LBB59_41
+{
+break _30;
+}
+else{
+	if(r6 !=r24) //_LBB59_41
+{
+break _30;
+}
+else{
+	r20 = r19 << 2;
+	r20 = (r9 + r20)|0;
+	r20 = r20 >> 2;
+	r20 = heap32[(r20+2)];
+if(!(uint(r2) >uint(r20))) //_LBB59_21
+{
+break _30;
+}
+}
+}
+}
+} while(0);
+	r16 = (r16 + -1)|0;
+continue _30;
+}
+	r20 = (r8 + r16)|0;
+	if(r15 <=r20) //_LBB59_43
+{
+	r13 = r13 << 2;
+	r10 = (r10 + r13)|0;
+	r10 = r10 >> 2;
+	r13 = heap32[(r12+3)];
+	r15 = heap32[(r10+2)];
+	r19 = r19 << 2;
+	r19 = (r9 + r19)|0;
+	heap32[(r10)] = r21;
+	r20 = r16 << 4;
+	r19 = r19 >> 2;
+	heap32[(r10+1)] = r24;
+	r19 = heap32[(r19+2)];
+	r9 = (r9 + r20)|0;
+	r9 = r9 >> 2;
+	heap32[(r10+2)] = r19;
+	r9 = heap32[(r9+3)];
+	heap32[(r12+3)] = r9;
+	r9 = heap32[(r3+3)];
+	r9 = (r9 + r18)|0;
+	r9 = (r9 + r20)|0;
+	r9 = r9 >> 2;
+	heap32[(r9)] = r14;
+	r7 = (r7 + r11)|0;
+	r8 = (r8 + r16)|0;
+	heap32[(r9+1)] = r17;
+	r7 = (r7 + 1)|0;
+	r8 = (r8 + -1)|0;
+	heap32[(r9+2)] = r15;
+	heap32[(r9+3)] = r13;
+}
+else{
+	r7 = r15;
+	r8 = r20;
+}
+	if(r7 <=r8) //_LBB59_1
+{
+continue _1;
+}
+else{
+break _1;
+}
+}
+if(!(r8 <=r1)) //_LBB59_47
+{
+	heap32[(g0)] = r4;
+	heap32[(g0+1)] = r1;
+	heap32[(g0+2)] = r8;
+	_ZN20btAlignedObjectArrayI16btBroadphasePairE17quickSortInternalI29btBroadphasePairSortPredicateEEvT_ii(i7);
+}
+if(!(r7 >=r0)) //_LBB59_49
+{
+	heap32[(g0)] = r4;
+	heap32[(g0+1)] = r7;
+	heap32[(g0+2)] = r0;
+	_ZN20btAlignedObjectArrayI16btBroadphasePairE17quickSortInternalI29btBroadphasePairSortPredicateEEvT_ii(i7);
+}
+	return;
+}
+
+function _ZN20btAxisSweep3InternalItE11sortMinDownEitP12btDispatcherb(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+	var r6;
+	var r7;
+	var r8;
+	var r9;
+	var r10;
+	var r11;
+	var r12;
+	var r13;
+	var r14;
+	var r15;
+	var r16;
+	var r17;
+var __label__ = 0;
+	i7 = sp + -16;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp+1)];
+	r1 = heap32[(fp)];
+	r2 = r0 << 2;
+	r2 = (r1 + r2)|0;
+	r3 = heap32[(fp+2)];
+	r2 = r2 >> 2;
+	r2 = heap32[(r2+17)];
+	r3 = r3 << 2;
+	r4 = (r2 + r3)|0;
+	r2 = heapU16[(r2+r3)>>1];
+	r3 = heapU16[(r4+-4)>>1];
+if(!(uint(r2) >=uint(r3))) //_LBB60_14
+{
+	r1 = r1 >> 2;
+	r2 = heap32[(fp+3)];
+	r3 = heap32[(r1+15)];
+	r5 = heapU16[(r4+2)>>1];
+	r6 = 1;
+	r7 = r6 << r0;
+	r7 = r7 & 3;
+	r6 = r6 << r7;
+	r5 = r5 << 6;
+	r5 = (r3 + r5)|0;
+	r6 = r6 & 3;
+	r0 = r0 << 1;
+	r8 = (r5 + 48)|0;
+	r7 = r7 << 1;
+	r9 = (r5 + 54)|0;
+	r6 = r6 << 1;
+	r10 = (r8 + r0)|0;
+	r11 = (r9 + r7)|0;
+	r12 = (r8 + r7)|0;
+	r9 = (r9 + r6)|0;
+	r8 = (r8 + r6)|0;
+	r4 = (r4 + 2)|0;
+_3: while(true){
+	r13 = heapU8[r4+-6];
+	r14 = heapU16[(r4+-4)>>1];
+	r13 = r13 & 1;
+	if(r13 ==0) //_LBB60_11
+{
+	r13 = r14 << 6;
+	r3 = (r3 + r13)|0;
+	r3 = (r3 + r0)|0;
+	r13 = heapU16[(r3+48)>>1];
+	r13 = (r13 + 1)|0;
+	heap16[(r3+48)>>1] = r13;
+}
+else{
+if(!(r2 ==0)) //_LBB60_10
+{
+	r13 = r14 << 6;
+	r13 = (r3 + r13)|0;
+	r15 = (r13 + r7)|0;
+	r16 = heapU16[(r11)>>1];
+	r17 = heapU16[(r15+48)>>1];
+if(!(uint(r16) <uint(r17))) //_LBB60_10
+{
+	r15 = heapU16[(r15+54)>>1];
+	r16 = heapU16[(r12)>>1];
+if(!(uint(r15) <uint(r16))) //_LBB60_10
+{
+	r15 = (r13 + r6)|0;
+	r16 = heapU16[(r9)>>1];
+	r17 = heapU16[(r15+48)>>1];
+if(!(uint(r16) <uint(r17))) //_LBB60_10
+{
+	r15 = heapU16[(r15+54)>>1];
+	r16 = heapU16[(r8)>>1];
+if(!(uint(r15) <uint(r16))) //_LBB60_10
+{
+	r15 = heap32[(r1+23)];
+	r16 = r15 >> 2;
+	r16 = heap32[(r16)];
+	r16 = r16 >> 2;
+	r16 = heap32[(r16+2)];
+	heap32[(g0)] = r15;
+	heap32[(g0+1)] = r5;
+	heap32[(g0+2)] = r13;
+	__FUNCTION_TABLE__[(r16)>>2](i7);
+	r15 = heap32[(r1+24)];
+if(!(r15 ==0)) //_LBB60_10
+{
+	r16 = r15 >> 2;
+	r16 = heap32[(r16)];
+	r16 = r16 >> 2;
+	r16 = heap32[(r16+2)];
+	heap32[(g0)] = r15;
+	heap32[(g0+1)] = r5;
+	heap32[(g0+2)] = r13;
+	__FUNCTION_TABLE__[(r16)>>2](i7);
+}
+}
+}
+}
+}
+}
+	r14 = r14 << 6;
+	r3 = (r3 + r14)|0;
+	r3 = (r3 + r0)|0;
+	r14 = heapU16[(r3+54)>>1];
+	r14 = (r14 + 1)|0;
+	heap16[(r3+54)>>1] = r14;
+}
+	r3 = heapU16[(r10)>>1];
+	r3 = (r3 + -1)|0;
+	heap16[(r10)>>1] = r3;
+	r3 = heapU16[(r4+-2)>>1];
+	r13 = heapU16[(r4)>>1];
+	r14 = heapU16[(r4+-4)>>1];
+	r15 = heapU16[(r4+-6)>>1];
+	heap16[(r4+-2)>>1] = r15;
+	heap16[(r4)>>1] = r14;
+	heap16[(r4+-6)>>1] = r3;
+	heap16[(r4+-4)>>1] = r13;
+	r13 = heapU16[(r4+-10)>>1];
+	if(uint(r3) >=uint(r13)) //_LBB60_14
+{
+break _3;
+}
+else{
+	r3 = heap32[(r1+15)];
+	r4 = (r4 + -4)|0;
+continue _3;
+}
+}
+}
+	return;
+}
+
+function _ZN20btAxisSweep3InternalItE9sortMaxUpEitP12btDispatcherb(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+	var r6;
+	var r7;
+	var r8;
+	var r9;
+	var r10;
+	var r11;
+	var r12;
+	var r13;
+	var r14;
+	var r15;
+	var r16;
+var __label__ = 0;
+	i7 = sp + -16;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp+1)];
+	r1 = heap32[(fp)];
+	r2 = r0 << 2;
+	r2 = (r1 + r2)|0;
+	r2 = r2 >> 2;
+	r3 = heap32[(fp+2)];
+	r4 = 1;
+	r2 = heap32[(r2+17)];
+	r3 = r3 << 2;
+	r2 = (r2 + r3)|0;
+	r3 = r4 << r0;
+	r3 = r3 & 3;
+	r1 = r1 >> 2;
+	r5 = heapU16[(r2+2)>>1];
+	r4 = r4 << r3;
+	r6 = heap32[(r1+15)];
+	r5 = r5 << 6;
+	r4 = r4 & 3;
+	r5 = (r6 + r5)|0;
+	r3 = r3 << 1;
+	r6 = (r5 + 48)|0;
+	r4 = r4 << 1;
+	r5 = (r5 + 54)|0;
+	r0 = r0 << 1;
+	r7 = heap32[(fp+3)];
+	r8 = (r5 + r3)|0;
+	r9 = (r6 + r3)|0;
+	r10 = (r5 + r4)|0;
+	r6 = (r6 + r4)|0;
+	r5 = (r5 + r0)|0;
+	r2 = (r2 + 4)|0;
+_1: while(true){
+	r11 = heapU16[(r2+2)>>1];
+	if(r11 ==0) //_LBB61_14
+{
+break _1;
+}
+else{
+	r12 = heapU16[(r2)>>1];
+	r13 = heapU16[(r2+-4)>>1];
+	if(uint(r13) >=uint(r12)) //_LBB61_1
+{
+	r13 = heap32[(r1+15)];
+	r11 = r11 & 65535;
+	r12 = r12 & 1;
+	if(r12 != 0) //_LBB61_10
+{
+	r11 = r11 << 6;
+	r11 = (r13 + r11)|0;
+	r11 = (r11 + r0)|0;
+	r12 = heapU16[(r11+54)>>1];
+	r12 = (r12 + -1)|0;
+	heap16[(r11+54)>>1] = r12;
+}
+else{
+if(!(r7 ==0)) //_LBB61_9
+{
+	r12 = r11 << 6;
+	r12 = (r13 + r12)|0;
+	r14 = (r12 + r3)|0;
+	r15 = heapU16[(r8)>>1];
+	r16 = heapU16[(r14+48)>>1];
+if(!(uint(r15) <uint(r16))) //_LBB61_9
+{
+	r14 = heapU16[(r14+54)>>1];
+	r15 = heapU16[(r9)>>1];
+if(!(uint(r14) <uint(r15))) //_LBB61_9
+{
+	r14 = (r12 + r4)|0;
+	r15 = heapU16[(r10)>>1];
+	r16 = heapU16[(r14+48)>>1];
+if(!(uint(r15) <uint(r16))) //_LBB61_9
+{
+	r14 = heapU16[(r14+54)>>1];
+	r15 = heapU16[(r6)>>1];
+if(!(uint(r14) <uint(r15))) //_LBB61_9
+{
+	r14 = heap32[(r1+23)];
+	r15 = r14 >> 2;
+	r15 = heap32[(r15)];
+	r15 = r15 >> 2;
+	r16 = heapU16[(r2+-2)>>1];
+	r15 = heap32[(r15+2)];
+	r16 = r16 << 6;
+	r16 = (r13 + r16)|0;
+	heap32[(g0)] = r14;
+	heap32[(g0+1)] = r16;
+	heap32[(g0+2)] = r12;
+	__FUNCTION_TABLE__[(r15)>>2](i7);
+	r14 = heap32[(r1+24)];
+if(!(r14 ==0)) //_LBB61_9
+{
+	r15 = r14 >> 2;
+	r15 = heap32[(r15)];
+	r15 = r15 >> 2;
+	r15 = heap32[(r15+2)];
+	heap32[(g0)] = r14;
+	heap32[(g0+1)] = r16;
+	heap32[(g0+2)] = r12;
+	__FUNCTION_TABLE__[(r15)>>2](i7);
+}
+}
+}
+}
+}
+}
+	r11 = r11 << 6;
+	r11 = (r13 + r11)|0;
+	r11 = (r11 + r0)|0;
+	r12 = heapU16[(r11+48)>>1];
+	r12 = (r12 + -1)|0;
+	heap16[(r11+48)>>1] = r12;
+}
+	r11 = heapU16[(r5)>>1];
+	r11 = (r11 + 1)|0;
+	heap16[(r5)>>1] = r11;
+	r11 = heapU16[(r2+-2)>>1];
+	r12 = heapU16[(r2+-4)>>1];
+	r13 = heapU16[(r2+2)>>1];
+	r14 = heapU16[(r2)>>1];
+	heap16[(r2+-4)>>1] = r14;
+	heap16[(r2+-2)>>1] = r13;
+	r13 = (r2 + 4)|0;
+	heap16[(r2)>>1] = r12;
+	heap16[(r2+2)>>1] = r11;
+	r2 = r13;
+continue _1;
+}
+else{
+break _1;
+}
+}
+}
+	return;
+}
+
+function _ZN20btAxisSweep3InternalItE9sortMinUpEitP12btDispatcherb(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+	var r6;
+	var r7;
+	var r8;
+	var r9;
+	var r10;
+	var r11;
+	var r12;
+	var r13;
+	var r14;
+	var r15;
+var __label__ = 0;
+	i7 = sp + -16;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp+1)];
+	r1 = heap32[(fp)];
+	r2 = r0 << 2;
+	r2 = (r1 + r2)|0;
+	r2 = r2 >> 2;
+	r3 = heap32[(fp+2)];
+	r2 = heap32[(r2+17)];
+	r3 = r3 << 2;
+	r2 = (r2 + r3)|0;
+	r1 = r1 >> 2;
+	r3 = heapU16[(r2+2)>>1];
+	r4 = 1;
+	r5 = r4 << r0;
+	r6 = heap32[(r1+15)];
+	r3 = r3 << 6;
+	r5 = r5 & 3;
+	r3 = (r6 + r3)|0;
+	r0 = r0 << 1;
+	r3 = (r3 + r0)|0;
+	r4 = r4 << r5;
+	r6 = heap32[(fp+3)];
+	r7 = heap32[(fp+4)];
+	r3 = (r3 + 48)|0;
+	r4 = r4 & 3;
+	r2 = (r2 + 4)|0;
+_1: while(true){
+	r8 = heapU16[(r2+2)>>1];
+	if(r8 ==0) //_LBB62_14
+{
+break _1;
+}
+else{
+	r9 = heapU16[(r2)>>1];
+	r10 = heapU16[(r2+-4)>>1];
+	if(uint(r10) >=uint(r9)) //_LBB62_1
+{
+	r10 = heap32[(r1+15)];
+	r8 = r8 & 65535;
+	r9 = r9 & 1;
+	if(r9 ==0) //_LBB62_10
+{
+	r8 = r8 << 6;
+	r8 = (r10 + r8)|0;
+	r8 = (r8 + r0)|0;
+	r9 = heapU16[(r8+48)>>1];
+	r9 = (r9 + -1)|0;
+	heap16[(r8+48)>>1] = r9;
+}
+else{
+if(!(r7 ==0)) //_LBB62_9
+{
+	r9 = heapU16[(r2+-2)>>1];
+	r9 = r9 << 6;
+	r11 = r8 << 6;
+	r9 = (r10 + r9)|0;
+	r12 = r5 << 1;
+	r11 = (r10 + r11)|0;
+	r13 = (r9 + r12)|0;
+	r12 = (r11 + r12)|0;
+	r14 = heapU16[(r13+54)>>1];
+	r15 = heapU16[(r12+48)>>1];
+if(!(uint(r14) <uint(r15))) //_LBB62_9
+{
+	r12 = heapU16[(r12+54)>>1];
+	r13 = heapU16[(r13+48)>>1];
+if(!(uint(r12) <uint(r13))) //_LBB62_9
+{
+	r12 = r4 << 1;
+	r13 = (r9 + r12)|0;
+	r12 = (r11 + r12)|0;
+	r14 = heapU16[(r13+54)>>1];
+	r15 = heapU16[(r12+48)>>1];
+if(!(uint(r14) <uint(r15))) //_LBB62_9
+{
+	r12 = heapU16[(r12+54)>>1];
+	r13 = heapU16[(r13+48)>>1];
+if(!(uint(r12) <uint(r13))) //_LBB62_9
+{
+	r12 = heap32[(r1+23)];
+	r13 = r12 >> 2;
+	r13 = heap32[(r13)];
+	r13 = r13 >> 2;
+	r13 = heap32[(r13+3)];
+	heap32[(g0)] = r12;
+	heap32[(g0+1)] = r9;
+	heap32[(g0+2)] = r11;
+	heap32[(g0+3)] = r6;
+	__FUNCTION_TABLE__[(r13)>>2](i7);
+	r12 = heap32[(r1+24)];
+if(!(r12 ==0)) //_LBB62_9
+{
+	r13 = r12 >> 2;
+	r13 = heap32[(r13)];
+	r13 = r13 >> 2;
+	r13 = heap32[(r13+3)];
+	heap32[(g0)] = r12;
+	heap32[(g0+1)] = r9;
+	heap32[(g0+2)] = r11;
+	heap32[(g0+3)] = r6;
+	__FUNCTION_TABLE__[(r13)>>2](i7);
+}
+}
+}
+}
+}
+}
+	r8 = r8 << 6;
+	r8 = (r10 + r8)|0;
+	r8 = (r8 + r0)|0;
+	r9 = heapU16[(r8+54)>>1];
+	r9 = (r9 + -1)|0;
+	heap16[(r8+54)>>1] = r9;
+}
+	r8 = heapU16[(r3)>>1];
+	r8 = (r8 + 1)|0;
+	heap16[(r3)>>1] = r8;
+	r8 = heapU16[(r2+-2)>>1];
+	r9 = heapU16[(r2+-4)>>1];
+	r10 = heapU16[(r2+2)>>1];
+	r11 = heapU16[(r2)>>1];
+	heap16[(r2+-4)>>1] = r11;
+	heap16[(r2+-2)>>1] = r10;
+	r10 = (r2 + 4)|0;
+	heap16[(r2)>>1] = r9;
+	heap16[(r2+2)>>1] = r8;
+	r2 = r10;
+continue _1;
+}
+else{
+break _1;
+}
+}
+}
+	return;
+}
+
+function _ZN20btAxisSweep3InternalItE11sortMaxDownEitP12btDispatcherb(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+	var r6;
+	var r7;
+	var r8;
+	var r9;
+	var r10;
+	var r11;
+	var r12;
+	var r13;
+	var r14;
+	var r15;
+var __label__ = 0;
+	i7 = sp + -16;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp+1)];
+	r1 = heap32[(fp)];
+	r2 = r0 << 2;
+	r2 = (r1 + r2)|0;
+	r3 = heap32[(fp+2)];
+	r2 = r2 >> 2;
+	r2 = heap32[(r2+17)];
+	r4 = r3 << 2;
+	r5 = (r2 + r4)|0;
+	r4 = heapU16[(r2+r4)>>1];
+	r6 = heapU16[(r5+-4)>>1];
+if(!(uint(r4) >=uint(r6))) //_LBB63_14
+{
+	r1 = r1 >> 2;
+	r4 = heap32[(fp+3)];
+	r6 = heap32[(fp+4)];
+	r7 = heap32[(r1+15)];
+	r3 = r3 << 2;
+	r2 = (r2 + r3)|0;
+	r2 = heapU16[(r2+2)>>1];
+	r3 = 1;
+	r8 = r3 << r0;
+	r2 = r2 << 6;
+	r8 = r8 & 3;
+	r2 = (r7 + r2)|0;
+	r0 = r0 << 1;
+	r3 = r3 << r8;
+	r2 = (r2 + r0)|0;
+	r3 = r3 & 3;
+	r2 = (r2 + 54)|0;
+	r5 = (r5 + 2)|0;
+_3: while(true){
+	r9 = heapU8[r5+-6];
+	r10 = heapU16[(r5+-4)>>1];
+	r9 = r9 & 1;
+	if(r9 != 0) //_LBB63_11
+{
+	r9 = r10 << 6;
+	r7 = (r7 + r9)|0;
+	r7 = (r7 + r0)|0;
+	r9 = heapU16[(r7+54)>>1];
+	r9 = (r9 + 1)|0;
+	heap16[(r7+54)>>1] = r9;
+}
+else{
+if(!(r6 ==0)) //_LBB63_10
+{
+	r9 = heapU16[(r5)>>1];
+	r9 = r9 << 6;
+	r11 = r10 << 6;
+	r9 = (r7 + r9)|0;
+	r12 = r8 << 1;
+	r11 = (r7 + r11)|0;
+	r13 = (r9 + r12)|0;
+	r12 = (r11 + r12)|0;
+	r14 = heapU16[(r13+54)>>1];
+	r15 = heapU16[(r12+48)>>1];
+if(!(uint(r14) <uint(r15))) //_LBB63_10
+{
+	r12 = heapU16[(r12+54)>>1];
+	r13 = heapU16[(r13+48)>>1];
+if(!(uint(r12) <uint(r13))) //_LBB63_10
+{
+	r12 = r3 << 1;
+	r13 = (r9 + r12)|0;
+	r12 = (r11 + r12)|0;
+	r14 = heapU16[(r13+54)>>1];
+	r15 = heapU16[(r12+48)>>1];
+if(!(uint(r14) <uint(r15))) //_LBB63_10
+{
+	r12 = heapU16[(r12+54)>>1];
+	r13 = heapU16[(r13+48)>>1];
+if(!(uint(r12) <uint(r13))) //_LBB63_10
+{
+	r12 = heap32[(r1+23)];
+	r13 = r12 >> 2;
+	r13 = heap32[(r13)];
+	r13 = r13 >> 2;
+	r13 = heap32[(r13+3)];
+	heap32[(g0)] = r12;
+	heap32[(g0+1)] = r9;
+	heap32[(g0+2)] = r11;
+	heap32[(g0+3)] = r4;
+	__FUNCTION_TABLE__[(r13)>>2](i7);
+	r12 = heap32[(r1+24)];
+if(!(r12 ==0)) //_LBB63_10
+{
+	r13 = r12 >> 2;
+	r13 = heap32[(r13)];
+	r13 = r13 >> 2;
+	r13 = heap32[(r13+3)];
+	heap32[(g0)] = r12;
+	heap32[(g0+1)] = r9;
+	heap32[(g0+2)] = r11;
+	heap32[(g0+3)] = r4;
+	__FUNCTION_TABLE__[(r13)>>2](i7);
+}
+}
+}
+}
+}
+}
+	r10 = r10 << 6;
+	r7 = (r7 + r10)|0;
+	r7 = (r7 + r0)|0;
+	r10 = heapU16[(r7+48)>>1];
+	r10 = (r10 + 1)|0;
+	heap16[(r7+48)>>1] = r10;
+}
+	r7 = heapU16[(r2)>>1];
+	r7 = (r7 + -1)|0;
+	heap16[(r2)>>1] = r7;
+	r7 = heapU16[(r5+-2)>>1];
+	r9 = heapU16[(r5)>>1];
+	r10 = heapU16[(r5+-4)>>1];
+	r11 = heapU16[(r5+-6)>>1];
+	heap16[(r5+-2)>>1] = r11;
+	heap16[(r5)>>1] = r10;
+	heap16[(r5+-6)>>1] = r7;
+	heap16[(r5+-4)>>1] = r9;
+	r9 = heapU16[(r5+-10)>>1];
+	if(uint(r7) >=uint(r9)) //_LBB63_14
+{
+break _3;
+}
+else{
+	r7 = heap32[(r1+15)];
+	r5 = (r5 + -4)|0;
+continue _3;
+}
+}
+}
+	return;
+}
+
+function _ZN20btAxisSweep3InternalItE7setAabbEP17btBroadphaseProxyRK9btVector3S5_P12btDispatcher(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+	var r6;
+	var r7;
+	var r8;
+	var r9;
+	var r10;
+	var r11;
+	var r12;
+	var r13;
+	var r14;
+	var r15;
+	var r16;
+	var r17;
+	var r18;
+	var r19;
+	var r20;
+	var f0;
+	var f1;
+	var f2;
+var __label__ = 0;
+	i7 = sp + -40;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp+2)];
+	r1 = heap32[(fp+1)];
+	r2 = r0 >> 2;
+	r3 = r1 >> 2;
+	heap32[(r3+4)] = heap32[(r2)];
+	heap32[(r3+5)] = heap32[(r2+1)];
+	r4 = heap32[(fp+3)];
+	heap32[(r3+6)] = heap32[(r2+2)];
+	heap32[(r3+7)] = heap32[(r2+3)];
+	r5 = r4 >> 2;
+	heap32[(r3+8)] = heap32[(r5)];
+	heap32[(r3+9)] = heap32[(r5+1)];
+	r6 = heap32[(fp)];
+	heap32[(r3+10)] = heap32[(r5+2)];
+	heap32[(r3+11)] = heap32[(r5+3)];
+	r7 = r6 >> 2;
+	r1 = heapU16[(r1+12)>>1];
+	r8 = heap32[(r7+15)];
+	f0 = heapFloat[(r2)];
+	f1 = heapFloat[(r2+1)];
+	f2 = heapFloat[(r2+2)];
+	r2 = sp + -6;
+	heap32[(g0)] = r6;
+	heap32[(g0+1)] = r2;
+	heapFloat[(g0+2)] = f0;
+	heapFloat[(g0+3)] = f1;
+	heapFloat[(g0+4)] = f2;
+	heap32[(g0+5)] = 0;
+	_ZNK20btAxisSweep3InternalItE8quantizeEPtRK9btVector3i(i7);
+	f0 = heapFloat[(r5)];
+	f1 = heapFloat[(r5+1)];
+	f2 = heapFloat[(r5+2)];
+	r1 = r1 << 6;
+	r5 = sp + -12;
+	r1 = (r8 + r1)|0;
+	heap32[(g0)] = r6;
+	heap32[(g0+1)] = r5;
+	heapFloat[(g0+2)] = f0;
+	heapFloat[(g0+3)] = f1;
+	heapFloat[(g0+4)] = f2;
+	heap32[(g0+5)] = 1;
+	r8 = heap32[(fp+4)];
+	r1 = (r1 + 48)|0;
+	r9 = 0;
+	_ZNK20btAxisSweep3InternalItE8quantizeEPtRK9btVector3i(i7);
+	r10 = r9;
+_1: while(true){
+	r11 = r9 << 2;
+	r12 = r9 << 1;
+	r13 = (r1 - r12)|0;
+	r11 = (r6 - r11)|0;
+	r14 = heapU16[(r13)>>1];
+	r13 = heapU16[(r13+6)>>1];
+	r11 = r11 >> 2;
+	r15 = (r2 - r12)|0;
+	r12 = (r5 - r12)|0;
+	r16 = heap32[(r11+17)];
+	r17 = r14 << 2;
+	r18 = r13 << 2;
+	r15 = heapU16[(r15)>>1];
+	r19 = heapU16[(r16+r17)>>1];
+	r20 = heapU16[(r16+r18)>>1];
+	r12 = heapU16[(r12)>>1];
+	heap16[(r16+r17)>>1] = r15;
+	r11 = heap32[(r11+17)];
+	r15 = (r15 - r19)|0;
+	heap16[(r11+r18)>>1] = r12;
+if(!(r15 >-1)) //_LBB64_3
+{
+	heap32[(g0)] = r6;
+	heap32[(g0+1)] = r10;
+	heap32[(g0+2)] = r14;
+	heap32[(g0+3)] = 1;
+	_ZN20btAxisSweep3InternalItE11sortMinDownEitP12btDispatcherb(i7);
+}
+	r11 = (r12 - r20)|0;
+if(!(r11 <1)) //_LBB64_5
+{
+	heap32[(g0)] = r6;
+	heap32[(g0+1)] = r10;
+	heap32[(g0+2)] = r13;
+	heap32[(g0+3)] = 1;
+	_ZN20btAxisSweep3InternalItE9sortMaxUpEitP12btDispatcherb(i7);
+}
+if(!(r15 <1)) //_LBB64_7
+{
+	heap32[(g0)] = r6;
+	heap32[(g0+1)] = r10;
+	heap32[(g0+2)] = r14;
+	heap32[(g0+3)] = r8;
+	heap32[(g0+4)] = 1;
+	_ZN20btAxisSweep3InternalItE9sortMinUpEitP12btDispatcherb(i7);
+}
+if(!(r11 >-1)) //_LBB64_9
+{
+	heap32[(g0)] = r6;
+	heap32[(g0+1)] = r10;
+	heap32[(g0+2)] = r13;
+	heap32[(g0+3)] = r8;
+	heap32[(g0+4)] = 1;
+	_ZN20btAxisSweep3InternalItE11sortMaxDownEitP12btDispatcherb(i7);
+}
+	r9 = (r9 + -1)|0;
+	r10 = (r10 + 1)|0;
+	if(r9 !=-3) //_LBB64_1
+{
+continue _1;
+}
+else{
+break _1;
+}
+}
+	r1 = heap32[(r7+27)];
+if(!(r1 ==0)) //_LBB64_12
+{
+	r2 = r1 >> 2;
+	r2 = heap32[(r2)];
+	r2 = r2 >> 2;
+	r2 = heap32[(r2+4)];
+	r3 = heap32[(r3+15)];
+	heap32[(g0)] = r1;
+	heap32[(g0+1)] = r3;
+	heap32[(g0+2)] = r0;
+	heap32[(g0+3)] = r4;
+	heap32[(g0+4)] = r8;
+	__FUNCTION_TABLE__[(r2)>>2](i7);
+}
+	return;
+}
+
+function _ZN20btAxisSweep3InternalItE12destroyProxyEP17btBroadphaseProxyP12btDispatcher(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+	var r6;
+	var r7;
+	var r8;
+	var r9;
+	var r10;
+	var r11;
+	var r12;
+	var r13;
+var __label__ = 0;
+	i7 = sp + -24;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = r0 >> 2;
+	r2 = heap32[(r1+27)];
+	r3 = heap32[(fp+1)];
+	r4 = heap32[(fp+2)];
+if(!(r2 ==0)) //_LBB65_2
+{
+	r5 = r2 >> 2;
+	r5 = heap32[(r5)];
+	r5 = r5 >> 2;
+	r6 = r3 >> 2;
+	r5 = heap32[(r5+3)];
+	r6 = heap32[(r6+15)];
+	heap32[(g0)] = r2;
+	heap32[(g0+1)] = r6;
+	heap32[(g0+2)] = r4;
+	__FUNCTION_TABLE__[(r5)>>2](i7);
+}
+	r2 = heap32[(r1+23)];
+	r5 = r2 >> 2;
+	r5 = heap32[(r5)];
+	r5 = r5 >> 2;
+	r3 = r3 >> 2;
+	r3 = heap32[(r3+3)];
+	r6 = heap32[(r1+15)];
+	r5 = heap32[(r5+14)];
+	heap32[(g0)] = r2;
+	__FUNCTION_TABLE__[(r5)>>2](i7);
+	r2 = r_g0;
+if(!(r2 !=0)) //_LBB65_4
+{
+	r2 = heap32[(r1+23)];
+	r5 = r2 >> 2;
+	r5 = heap32[(r5)];
+	r5 = r5 >> 2;
+	r5 = heap32[(r5+4)];
+	r7 = r3 & 65535;
+	r7 = r7 << 6;
+	r7 = (r6 + r7)|0;
+	heap32[(g0)] = r2;
+	heap32[(g0+1)] = r7;
+	heap32[(g0+2)] = r4;
+	__FUNCTION_TABLE__[(r5)>>2](i7);
+}
+	r2 = heap32[(r1+15)];
+	r5 = heapU16[(r0+56)>>1];
+	r7 = heapU16[(r2+54)>>1];
+	r7 = (r7 + -2)|0;
+	heap16[(r2+54)>>1] = r7;
+	r2 = heap32[(r1+15)];
+	r7 = heapU16[(r2+56)>>1];
+	r7 = (r7 + -2)|0;
+	r8 = r3 & 65535;
+	heap16[(r2+56)>>1] = r7;
+	r2 = heap32[(r1+15)];
+	r7 = r8 << 6;
+	r9 = heapU16[(r2+58)>>1];
+	r6 = (r6 + r7)|0;
+	r5 = r5 << 1;
+	r6 = (r6 + 54)|0;
+	r10 = 0;
+	r9 = (r9 + -2)|0;
+	heap16[(r2+58)>>1] = r9;
+	r2 = r10;
+_7: while(true){
+	r9 = r2 << 2;
+	r9 = (r0 + r9)|0;
+	r9 = r9 >> 2;
+	r11 = heapU16[(r6)>>1];
+	r12 = heapU16[(r0+6)>>1];
+	r9 = heap32[(r9+17)];
+	r13 = r11 << 2;
+	heap16[(r9+r13)>>1] = r12;
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r2;
+	heap32[(g0+2)] = r11;
+	heap32[(g0+3)] = 0;
+	_ZN20btAxisSweep3InternalItE9sortMaxUpEitP12btDispatcherb(i7);
+	r11 = heapU16[(r6+-6)>>1];
+	r12 = heapU16[(r0+6)>>1];
+	r13 = r11 << 2;
+	heap16[(r9+r13)>>1] = r12;
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r2;
+	heap32[(g0+2)] = r11;
+	heap32[(g0+3)] = r4;
+	heap32[(g0+4)] = 0;
+	r11 = r5 << 2;
+	_ZN20btAxisSweep3InternalItE9sortMinUpEitP12btDispatcherb(i7);
+	r9 = (r9 + r11)|0;
+	heap16[(r9+-2)>>1] = r10;
+	r11 = heapU16[(r0+6)>>1];
+	r2 = (r2 + 1)|0;
+	r6 = (r6 + 2)|0;
+	heap16[(r9+-4)>>1] = r11;
+	if(r2 !=3) //_LBB65_5
+{
+continue _7;
+}
+else{
+break _7;
+}
+}
+if(!(r8 ==0)) //_LBB65_8
+{
+	r2 = heapU16[(r0+58)>>1];
+	if(uint(r2) >uint(r8)) //_LBB65_9
+{
+	r1 = heap32[(r1+15)];
+	r2 = heapU16[(r0+64)>>1];
+	r1 = (r1 + r7)|0;
+	heap16[(r1+48)>>1] = r2;
+	heap16[(r0+64)>>1] = r3;
+	r1 = heapU16[(r0+56)>>1];
+	r1 = (r1 + -1)|0;
+	heap16[(r0+56)>>1] = r1;
+	return;
+}
+}
+	r0 = _2E_str11;
+	r1 = _2E_str112;
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r1;
+	heap32[(g0+2)] = 495;
+	_assert(i7);
+}
+
+function _ZN20btAxisSweep3InternalItE11createProxyERK9btVector3S3_iPvssP12btDispatcherS4_(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+	var r6;
+	var r7;
+	var r8;
+	var r9;
+	var r10;
+	var r11;
+	var r12;
+	var r13;
+	var r14;
+	var r15;
+	var r16;
+	var r17;
+	var r18;
+	var f0;
+	var f1;
+	var f2;
+var __label__ = 0;
+	i7 = sp + -56;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp+1)];
+	r1 = r0 >> 2;
+	f0 = heapFloat[(r1)];
+	f1 = heapFloat[(r1+1)];
+	f2 = heapFloat[(r1+2)];
+	r1 = heap32[(fp)];
+	r2 = sp + -6;
+	heap32[(g0)] = r1;
+	heap32[(g0+1)] = r2;
+	heapFloat[(g0+2)] = f0;
+	heapFloat[(g0+3)] = f1;
+	heapFloat[(g0+4)] = f2;
+	heap32[(g0+5)] = 0;
+	r2 = heap32[(fp+2)];
+	_ZNK20btAxisSweep3InternalItE8quantizeEPtRK9btVector3i(i7);
+	r3 = r2 >> 2;
+	f0 = heapFloat[(r3)];
+	f1 = heapFloat[(r3+1)];
+	f2 = heapFloat[(r3+2)];
+	r3 = sp + -12;
+	heap32[(g0)] = r1;
+	heap32[(g0+1)] = r3;
+	heapFloat[(g0+2)] = f0;
+	heapFloat[(g0+3)] = f1;
+	heapFloat[(g0+4)] = f2;
+	heap32[(g0+5)] = 1;
+	_ZNK20btAxisSweep3InternalItE8quantizeEPtRK9btVector3i(i7);
+	r3 = heapU16[(r1+64)>>1];
+	if(r3 !=0) //_LBB66_2
+{
+	r4 = heap32[(fp+4)];
+	r5 = heap32[(fp+5)];
+	r6 = heap32[(fp+6)];
+	r7 = heap32[(fp+7)];
+	r8 = heap32[(fp+8)];
+	r9 = r1 >> 2;
+	r10 = r3 << 6;
+	r11 = heap32[(r9+15)];
+	r10 = (r11 + r10)|0;
+	r11 = heapU16[(r10+48)>>1];
+	heap16[(r1+64)>>1] = r11;
+	r11 = heapU16[(r1+56)>>1];
+	r11 = (r11 + 1)|0;
+	r12 = r10 >> 2;
+	heap16[(r1+56)>>1] = r11;
+	heap32[(r12+3)] = r3;
+	heap32[(r12)] = r4;
+	heap16[(r10+4)>>1] = r5;
+	heap16[(r10+6)>>1] = r6;
+	heap32[(r12+2)] = r8;
+	r8 = heap32[(r9+15)];
+	r11 = heapU16[(r1+56)>>1];
+	r11 = r11 << 1;
+	r12 = heapU16[(r8+54)>>1];
+	r13 = r11 & 65534;
+	r12 = (r12 + 2)|0;
+	r14 = (r13 + -1)|0;
+	heap16[(r8+54)>>1] = r12;
+	r8 = r14 << 2;
+	r12 = heap32[(r9+17)];
+	r14 = (r12 + r8)|0;
+	r15 = r13 | 1;
+	r14 = heapU16[(r14+2)>>1];
+	r16 = heapU16[(r12+r8)>>1];
+	r15 = r15 << 2;
+	r17 = (r12 + r15)|0;
+	heap16[(r12+r15)>>1] = r16;
+	heap16[(r17+2)>>1] = r14;
+	r12 = heap32[(r9+17)];
+	r14 = heapU16[(sp+-6)>>1];
+	heap16[(r12+r8)>>1] = r14;
+	r12 = heap32[(r9+17)];
+	r12 = (r12 + r8)|0;
+	heap16[(r12+2)>>1] = r3;
+	r12 = heap32[(r9+17)];
+	r14 = heapU16[(sp+-12)>>1];
+	r13 = r13 << 2;
+	heap16[(r12+r13)>>1] = r14;
+	r12 = heap32[(r9+17)];
+	r12 = (r12 + r13)|0;
+	r14 = (r11 + -1)|0;
+	heap16[(r12+2)>>1] = r3;
+	heap16[(r10+48)>>1] = r14;
+	heap16[(r10+54)>>1] = r11;
+	r12 = heap32[(r9+15)];
+	r16 = heapU16[(r12+56)>>1];
+	r16 = (r16 + 2)|0;
+	heap16[(r12+56)>>1] = r16;
+	r12 = heap32[(r9+18)];
+	r16 = (r12 + r8)|0;
+	r16 = heapU16[(r16+2)>>1];
+	r17 = heapU16[(r12+r8)>>1];
+	r18 = (r12 + r15)|0;
+	heap16[(r12+r15)>>1] = r17;
+	heap16[(r18+2)>>1] = r16;
+	r12 = heap32[(r9+18)];
+	r16 = heapU16[(sp+-4)>>1];
+	heap16[(r12+r8)>>1] = r16;
+	r12 = heap32[(r9+18)];
+	r12 = (r12 + r8)|0;
+	heap16[(r12+2)>>1] = r3;
+	r12 = heap32[(r9+18)];
+	r16 = heapU16[(sp+-10)>>1];
+	heap16[(r12+r13)>>1] = r16;
+	r12 = heap32[(r9+18)];
+	r12 = (r12 + r13)|0;
+	heap16[(r12+2)>>1] = r3;
+	heap16[(r10+50)>>1] = r14;
+	heap16[(r10+56)>>1] = r11;
+	r12 = heap32[(r9+15)];
+	r16 = heapU16[(r12+58)>>1];
+	r16 = (r16 + 2)|0;
+	heap16[(r12+58)>>1] = r16;
+	r12 = heap32[(r9+19)];
+	r16 = (r12 + r8)|0;
+	r16 = heapU16[(r16+2)>>1];
+	r17 = heapU16[(r12+r8)>>1];
+	r18 = (r12 + r15)|0;
+	heap16[(r12+r15)>>1] = r17;
+	heap16[(r18+2)>>1] = r16;
+	r12 = heap32[(r9+19)];
+	r15 = heapU16[(sp+-2)>>1];
+	heap16[(r12+r8)>>1] = r15;
+	r12 = heap32[(r9+19)];
+	r8 = (r12 + r8)|0;
+	heap16[(r8+2)>>1] = r3;
+	r8 = heap32[(r9+19)];
+	r12 = heapU16[(sp+-8)>>1];
+	heap16[(r8+r13)>>1] = r12;
+	r8 = heap32[(r9+19)];
+	r8 = (r8 + r13)|0;
+	heap16[(r8+2)>>1] = r3;
+	heap16[(r10+52)>>1] = r14;
+	heap16[(r10+58)>>1] = r11;
+	r8 = heapU16[(r10+48)>>1];
+	heap32[(g0)] = r1;
+	heap32[(g0+1)] = 0;
+	heap32[(g0+2)] = r8;
+	heap32[(g0+3)] = 0;
+	_ZN20btAxisSweep3InternalItE11sortMinDownEitP12btDispatcherb(i7);
+	r8 = heapU16[(r10+54)>>1];
+	heap32[(g0)] = r1;
+	heap32[(g0+1)] = 0;
+	heap32[(g0+2)] = r8;
+	heap32[(g0+3)] = r7;
+	heap32[(g0+4)] = 0;
+	_ZN20btAxisSweep3InternalItE11sortMaxDownEitP12btDispatcherb(i7);
+	r8 = heapU16[(r10+50)>>1];
+	heap32[(g0)] = r1;
+	heap32[(g0+1)] = 1;
+	heap32[(g0+2)] = r8;
+	heap32[(g0+3)] = 0;
+	_ZN20btAxisSweep3InternalItE11sortMinDownEitP12btDispatcherb(i7);
+	r8 = heapU16[(r10+56)>>1];
+	heap32[(g0)] = r1;
+	heap32[(g0+1)] = 1;
+	heap32[(g0+2)] = r8;
+	heap32[(g0+3)] = r7;
+	heap32[(g0+4)] = 0;
+	_ZN20btAxisSweep3InternalItE11sortMaxDownEitP12btDispatcherb(i7);
+	r8 = heapU16[(r10+52)>>1];
+	heap32[(g0)] = r1;
+	heap32[(g0+1)] = 2;
+	heap32[(g0+2)] = r8;
+	heap32[(g0+3)] = 1;
+	_ZN20btAxisSweep3InternalItE11sortMinDownEitP12btDispatcherb(i7);
+	r8 = heapU16[(r10+58)>>1];
+	heap32[(g0)] = r1;
+	heap32[(g0+1)] = 2;
+	heap32[(g0+2)] = r8;
+	heap32[(g0+3)] = r7;
+	heap32[(g0+4)] = 1;
+	_ZN20btAxisSweep3InternalItE11sortMaxDownEitP12btDispatcherb(i7);
+	r1 = heap32[(r9+27)];
+	r8 = heap32[(r9+15)];
+if(!(r1 ==0)) //_LBB66_4
+{
+	r9 = heap32[(fp+3)];
+	r10 = r1 >> 2;
+	r10 = heap32[(r10)];
+	r10 = r10 >> 2;
+	r10 = heap32[(r10+2)];
+	r11 = r3 << 6;
+	heap32[(g0)] = r1;
+	heap32[(g0+1)] = r0;
+	heap32[(g0+2)] = r2;
+	heap32[(g0+3)] = r9;
+	heap32[(g0+4)] = r4;
+	heap32[(g0+5)] = r5;
+	heap32[(g0+6)] = r6;
+	heap32[(g0+7)] = r7;
+	heap32[(g0+8)] = 0;
+	r0 = (r8 + r11)|0;
+	r0 = r0 >> 2;
+	__FUNCTION_TABLE__[(r10)>>2](i7);
+	heap32[(r0+15)] = r_g0;
+}
+	r0 = r3 << 6;
+	r0 = (r8 + r0)|0;
+	r_g0 = r0;
+	return;
+}
+else{
+	r0 = _2E_str213;
+	r1 = _2E_str112;
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r1;
+	heap32[(g0+2)] = 483;
+	_assert(i7);
+}
+}
+
+function _ZN20btAlignedObjectArrayI16btBroadphasePairE6resizeEiRKS0_(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+	var r6;
+	var r7;
+	var r8;
+	var r9;
+	var r10;
+	var r11;
+var __label__ = 0;
+	i7 = sp + -8;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = r0 >> 2;
+	r2 = heap32[(r1+1)];
+	r3 = heap32[(fp+1)];
+_1: do {
+if(!(r2 >r3)) //_LBB67_20
+{
+if(!(r2 >=r3)) //_LBB67_20
+{
+	r4 = heap32[(r1+2)];
+if(!(r4 >=r3)) //_LBB67_18
+{
+	if(r3 !=0) //_LBB67_5
+{
+	r4 = gNumAlignedAllocs;
+	r4 = r4 >> 2;
+	r5 = heap32[(r4)];
+	r6 = r3 << 4;
+	r5 = (r5 + 1)|0;
+	r6 = r6 | 3;
+	heap32[(r4)] = r5;
+	r4 = (r6 + 16)|0;
+	heap32[(g0)] = r4;
+	malloc(i7);
+	r4 = r_g0;
+	if(r4 !=0) //_LBB67_7
+{
+	r5 = 0;
+	r6 = (r4 + 4)|0;
+	r5 = (r5 - r6)|0;
+	r5 = r5 & 15;
+	r5 = (r4 + r5)|0;
+	r6 = (r5 + 4)|0;
+	r5 = r5 >> 2;
+	heap32[(r5)] = r4;
+	r4 = r6;
+}
+}
+else{
+	r4 = 0;
+}
+	r5 = (r0 + 12)|0;
+	if(r2 <1) //_LBB67_10
+{
+	r6 = r5 >> 2;
+	r8 = heap32[(r6)];
+}
+else{
+	r6 = 0;
+	r7 = (r6 - r2)|0;
+_14: while(true){
+	r8 = r5 >> 2;
+	r8 = heap32[(r8)];
+	r9 = r6 << 4;
+	r10 = (r8 - r9)|0;
+	r10 = r10 >> 2;
+	r9 = (r4 - r9)|0;
+	r11 = heap32[(r10)];
+	r9 = r9 >> 2;
+	heap32[(r9)] = r11;
+	r11 = heap32[(r10+1)];
+	heap32[(r9+1)] = r11;
+	r11 = heap32[(r10+2)];
+	heap32[(r9+2)] = r11;
+	r10 = heap32[(r10+3)];
+	r6 = (r6 + -1)|0;
+	heap32[(r9+3)] = r10;
+if(!(r7 !=r6)) //_LBB67_11
+{
+break _14;
+}
+}
+	r5 = (r0 + 12)|0;
+}
+if(!(r8 ==0)) //_LBB67_17
+{
+	r6 = heapU8[r0+16];
+if(!(r6 ==0)) //_LBB67_16
+{
+	r6 = gNumAlignedFree;
+	r6 = r6 >> 2;
+	r7 = heap32[(r6)];
+	r7 = (r7 + 1)|0;
+	r8 = r8 >> 2;
+	heap32[(r6)] = r7;
+	r6 = heap32[(r8+-1)];
+	heap32[(g0)] = r6;
+	free(i7);
+}
+	r6 = r5 >> 2;
+	heap32[(r6)] = 0;
+}
+	r6 = 1;
+	r5 = r5 >> 2;
+	heap8[r0+16] = r6;
+	heap32[(r5)] = r4;
+	heap32[(r1+2)] = r3;
+	if(r2 >=r3) //_LBB67_20
+{
+break _1;
+}
+}
+	r0 = heap32[(fp+2)];
+_25: while(true){
+	r4 = r0 >> 2;
+	r5 = r2 << 4;
+	r6 = heap32[(r1+3)];
+	r5 = (r6 + r5)|0;
+	r6 = heap32[(r4)];
+	r5 = r5 >> 2;
+	heap32[(r5)] = r6;
+	r6 = heap32[(r4+1)];
+	heap32[(r5+1)] = r6;
+	r6 = heap32[(r4+2)];
+	heap32[(r5+2)] = r6;
+	r4 = heap32[(r4+3)];
+	r2 = (r2 + 1)|0;
+	heap32[(r5+3)] = r4;
+	if(r3 !=r2) //_LBB67_19
+{
+continue _25;
+}
+else{
+break _1;
+}
+}
+}
+}
+} while(0);
+	heap32[(r1+1)] = r3;
+	return;
+}
+
+function _ZN20btAxisSweep3InternalItE25calculateOverlappingPairsEP12btDispatcher(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+	var r6;
+	var r7;
+	var r8;
+	var r9;
+	var r10;
+	var r11;
+	var r12;
+	var r13;
+	var r14;
+var __label__ = 0;
+	i7 = sp + -48;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r0 = r0 >> 2;
+	r1 = heap32[(r0+23)];
+	r2 = r1 >> 2;
+	r2 = heap32[(r2)];
+	r2 = r2 >> 2;
+	r2 = heap32[(r2+14)];
+	heap32[(g0)] = r1;
+	__FUNCTION_TABLE__[(r2)>>2](i7);
+	r1 = r_g0;
+if(!(r1 ==0)) //_LBB68_22
+{
+	r1 = heap32[(fp+1)];
+	r2 = heap32[(r0+23)];
+	r3 = r2 >> 2;
+	r3 = heap32[(r3)];
+	r3 = r3 >> 2;
+	r3 = heap32[(r3+7)];
+	heap32[(g0)] = r2;
+	__FUNCTION_TABLE__[(r3)>>2](i7);
+	r2 = r_g0;
+	r3 = r2 >> 2;
+	r3 = heap32[(r3+1)];
+	if(r3 >1) //_LBB68_3
+{
+	r3 = (r3 + -1)|0;
+	heap32[(g0)] = r2;
+	heap32[(g0+1)] = 0;
+	heap32[(g0+2)] = r3;
+	r3 = r2 >> 2;
+	_ZN20btAlignedObjectArrayI16btBroadphasePairE17quickSortInternalI29btBroadphasePairSortPredicateEEvT_ii(i7);
+	r3 = heap32[(r3+1)];
+}
+	r4 = sp + -32;
+	r5 = r4 >> 2;
+	heap32[(fp+-8)] = 0;
+	heap32[(r5+1)] = 0;
+	heap32[(r5+2)] = 0;
+	heap32[(r5+3)] = 0;
+	r5 = heap32[(r0+26)];
+	r3 = (r3 - r5)|0;
+	heap32[(g0)] = r2;
+	heap32[(g0+1)] = r3;
+	heap32[(g0+2)] = r4;
+	r3 = 0;
+	_ZN20btAlignedObjectArrayI16btBroadphasePairE6resizeEiRKS0_(i7);
+	heap32[(r0+26)] = 0;
+	r4 = r3;
+	r5 = r3;
+	r6 = r3;
+	r7 = r3;
+_6: while(true){
+	r8 = r2 >> 2;
+	r9 = heap32[(r8+1)];
+	if(r9 >r7) //_LBB68_5
+{
+	r8 = heap32[(r8+3)];
+	r9 = r7 << 4;
+	r9 = (r8 + r9)|0;
+	r9 = r9 >> 2;
+	r10 = heap32[(r9)];
+	r11 = r7 << 2;
+	r12 = heap32[(r9+1)];
+	if(r10 !=r5) //_LBB68_7
+{
+__label__ = 6;
+}
+else{
+	if(r12 ==r6) //_LBB68_13
+{
+	r4 = heap32[(r9+2)];
+	if(r4 ==0) //_LBB68_15
+{
+__label__ = 13;
+}
+else{
+__label__ = 12;
+break _6;
+}
+}
+else{
+__label__ = 6;
+}
+}
+if (__label__ == 6){
+	r5 = (r12 + 54)|0;
+	r6 = (r10 + 48)|0;
+	r9 = 0;
+_14: while(true){
+	if(r9 <3) //_LBB68_8
+{
+	r13 = heapU16[(r6+6)>>1];
+	r14 = heapU16[(r5+-6)>>1];
+	if(uint(r13) <uint(r14)) //_LBB68_15
+{
+__label__ = 13;
+break _14;
+}
+else{
+	r13 = heapU16[(r5)>>1];
+	r14 = heapU16[(r6)>>1];
+	if(uint(r13) <uint(r14)) //_LBB68_15
+{
+__label__ = 13;
+break _14;
+}
+else{
+	r9 = (r9 + 1)|0;
+	r5 = (r5 + 2)|0;
+	r6 = (r6 + 2)|0;
+}
+}
+}
+else{
+__label__ = 14;
+break _14;
+}
+}
+}
+if (__label__ == 13){
+	r4 = heap32[(r0+23)];
+	r5 = r4 >> 2;
+	r5 = heap32[(r5)];
+	r5 = r5 >> 2;
+	r5 = heap32[(r5+8)];
+	r6 = (r8 + r3)|0;
+	r9 = r11 << 2;
+	heap32[(g0)] = r4;
+	heap32[(g0+1)] = r6;
+	heap32[(g0+2)] = r1;
+	r4 = (r8 + r9)|0;
+	r4 = r4 >> 2;
+	__FUNCTION_TABLE__[(r5)>>2](i7);
+	heap32[(r4)] = 0;
+	heap32[(r4+1)] = 0;
+	r4 = heap32[(r0+26)];
+	r4 = (r4 + 1)|0;
+	r5 = gOverlappingPairs;
+	r5 = r5 >> 2;
+	heap32[(r0+26)] = r4;
+	r6 = heap32[(r5)];
+	r6 = (r6 + -1)|0;
+	heap32[(r5)] = r6;
+}
+	r7 = (r7 + 1)|0;
+	r3 = (r3 + 16)|0;
+	r5 = r10;
+	r6 = r12;
+}
+else{
+__label__ = 16;
+break _6;
+}
+}
+switch(__label__ ){//multiple entries
+case 16:
+	if(r9 >1) //_LBB68_20
+{
+	r4 = (r9 + -1)|0;
+	heap32[(g0)] = r2;
+	heap32[(g0+1)] = 0;
+	heap32[(g0+2)] = r4;
+	_ZN20btAlignedObjectArrayI16btBroadphasePairE17quickSortInternalI29btBroadphasePairSortPredicateEEvT_ii(i7);
+	r9 = heap32[(r8+1)];
+	r4 = heap32[(r0+26)];
+}
+	r1 = sp + -16;
+	r3 = r1 >> 2;
+	heap32[(fp+-4)] = 0;
+	heap32[(r3+1)] = 0;
+	heap32[(r3+2)] = 0;
+	heap32[(r3+3)] = 0;
+	r3 = (r9 - r4)|0;
+	heap32[(g0)] = r2;
+	heap32[(g0+1)] = r3;
+	heap32[(g0+2)] = r1;
+	_ZN20btAlignedObjectArrayI16btBroadphasePairE6resizeEiRKS0_(i7);
+	heap32[(r0+26)] = 0;
+break;
+case 12:
+	r8 = _2E_str314;
+	r0 = _2E_str112;
+	heap32[(g0)] = r8;
+	heap32[(g0+1)] = r0;
+	heap32[(g0+2)] = 687;
+	_assert(i7);
+break;
+}
+}
+	return;
+}
+
+function _ZN20btAxisSweep3InternalItED2Ev(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+var __label__ = 0;
+	i7 = sp + -8;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = _ZTV20btAxisSweep3InternalItE;
+	r2 = r0 >> 2;
+	r1 = (r1 + 8)|0;
+	heap32[(r2)] = r1;
+	r1 = heap32[(r2+27)];
+if(!(r1 ==0)) //_LBB69_5
+{
+	r1 = heap32[(r2+28)];
+	r3 = r1 >> 2;
+	r3 = heap32[(r3)];
+	r3 = r3 >> 2;
+	r3 = heap32[(r3)];
+	heap32[(g0)] = r1;
+	__FUNCTION_TABLE__[(r3)>>2](i7);
+	r1 = heap32[(r2+28)];
+if(!(r1 ==0)) //_LBB69_3
+{
+	r3 = gNumAlignedFree;
+	r3 = r3 >> 2;
+	r4 = heap32[(r3)];
+	r4 = (r4 + 1)|0;
+	r1 = r1 >> 2;
+	heap32[(r3)] = r4;
+	r1 = heap32[(r1+-1)];
+	heap32[(g0)] = r1;
+	free(i7);
+}
+	r1 = heap32[(r2+27)];
+	r3 = r1 >> 2;
+	r3 = heap32[(r3)];
+	r3 = r3 >> 2;
+	r3 = heap32[(r3)];
+	heap32[(g0)] = r1;
+	__FUNCTION_TABLE__[(r3)>>2](i7);
+	r1 = heap32[(r2+27)];
+if(!(r1 ==0)) //_LBB69_5
+{
+	r3 = gNumAlignedFree;
+	r3 = r3 >> 2;
+	r4 = heap32[(r3)];
+	r4 = (r4 + 1)|0;
+	r1 = r1 >> 2;
+	heap32[(r3)] = r4;
+	r1 = heap32[(r1+-1)];
+	heap32[(g0)] = r1;
+	free(i7);
+}
+}
+	r1 = 0;
+_8: while(true){
+	r3 = r1 << 2;
+	r3 = (r0 + r3)|0;
+	r3 = r3 >> 2;
+	r3 = heap32[(r3+22)];
+if(!(r3 ==0)) //_LBB69_8
+{
+	r4 = gNumAlignedFree;
+	r4 = r4 >> 2;
+	r5 = heap32[(r4)];
+	r5 = (r5 + 1)|0;
+	r3 = r3 >> 2;
+	heap32[(r4)] = r5;
+	r3 = heap32[(r3+-1)];
+	heap32[(g0)] = r3;
+	free(i7);
+}
+	r1 = (r1 + -1)|0;
+	if(r1 !=-3) //_LBB69_6
+{
+continue _8;
+}
+else{
+break _8;
+}
+}
+	r1 = heap32[(r2+15)];
+if(!(r1 ==0)) //_LBB69_11
+{
+	r3 = gNumAlignedFree;
+	r3 = r3 >> 2;
+	r4 = heap32[(r3)];
+	r4 = (r4 + 1)|0;
+	r1 = r1 >> 2;
+	heap32[(r3)] = r4;
+	r1 = heap32[(r1+-1)];
+	heap32[(g0)] = r1;
+	free(i7);
+}
+	r0 = heapU8[r0+100];
+if(!(r0 ==0)) //_LBB69_14
+{
+	r0 = heap32[(r2+23)];
+	r1 = r0 >> 2;
+	r1 = heap32[(r1)];
+	r1 = r1 >> 2;
+	r1 = heap32[(r1)];
+	heap32[(g0)] = r0;
+	__FUNCTION_TABLE__[(r1)>>2](i7);
+	r0 = heap32[(r2+23)];
+if(!(r0 ==0)) //_LBB69_14
+{
+	r1 = gNumAlignedFree;
+	r1 = r1 >> 2;
+	r2 = heap32[(r1)];
+	r2 = (r2 + 1)|0;
+	r0 = r0 >> 2;
+	heap32[(r1)] = r2;
+	r0 = heap32[(r0+-1)];
+	heap32[(g0)] = r0;
+	free(i7);
+}
+}
+	return;
+}
+
+function _ZN20btAxisSweep3InternalItED1Ev(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+var __label__ = 0;
+	i7 = sp + -8;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	heap32[(g0)] = r0;
+	_ZN20btAxisSweep3InternalItED2Ev(i7);
+	return;
+}
+
+function _ZN20btAxisSweep3InternalItED0Ev(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+var __label__ = 0;
+	i7 = sp + -8;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = _ZTV20btAxisSweep3InternalItE;
+	r2 = r0 >> 2;
+	r1 = (r1 + 8)|0;
+	heap32[(r2)] = r1;
+	r1 = heap32[(r2+27)];
+if(!(r1 ==0)) //_LBB71_5
+{
+	r1 = heap32[(r2+28)];
+	r3 = r1 >> 2;
+	r3 = heap32[(r3)];
+	r3 = r3 >> 2;
+	r3 = heap32[(r3)];
+	heap32[(g0)] = r1;
+	__FUNCTION_TABLE__[(r3)>>2](i7);
+	r1 = heap32[(r2+28)];
+if(!(r1 ==0)) //_LBB71_3
+{
+	r3 = gNumAlignedFree;
+	r3 = r3 >> 2;
+	r4 = heap32[(r3)];
+	r4 = (r4 + 1)|0;
+	r1 = r1 >> 2;
+	heap32[(r3)] = r4;
+	r1 = heap32[(r1+-1)];
+	heap32[(g0)] = r1;
+	free(i7);
+}
+	r1 = heap32[(r2+27)];
+	r3 = r1 >> 2;
+	r3 = heap32[(r3)];
+	r3 = r3 >> 2;
+	r3 = heap32[(r3)];
+	heap32[(g0)] = r1;
+	__FUNCTION_TABLE__[(r3)>>2](i7);
+	r1 = heap32[(r2+27)];
+if(!(r1 ==0)) //_LBB71_5
+{
+	r3 = gNumAlignedFree;
+	r3 = r3 >> 2;
+	r4 = heap32[(r3)];
+	r4 = (r4 + 1)|0;
+	r1 = r1 >> 2;
+	heap32[(r3)] = r4;
+	r1 = heap32[(r1+-1)];
+	heap32[(g0)] = r1;
+	free(i7);
+}
+}
+	r1 = 0;
+_8: while(true){
+	r3 = r1 << 2;
+	r3 = (r0 + r3)|0;
+	r3 = r3 >> 2;
+	r3 = heap32[(r3+22)];
+if(!(r3 ==0)) //_LBB71_8
+{
+	r4 = gNumAlignedFree;
+	r4 = r4 >> 2;
+	r5 = heap32[(r4)];
+	r5 = (r5 + 1)|0;
+	r3 = r3 >> 2;
+	heap32[(r4)] = r5;
+	r3 = heap32[(r3+-1)];
+	heap32[(g0)] = r3;
+	free(i7);
+}
+	r1 = (r1 + -1)|0;
+	if(r1 !=-3) //_LBB71_6
+{
+continue _8;
+}
+else{
+break _8;
+}
+}
+	r1 = heap32[(r2+15)];
+if(!(r1 ==0)) //_LBB71_11
+{
+	r3 = gNumAlignedFree;
+	r3 = r3 >> 2;
+	r4 = heap32[(r3)];
+	r4 = (r4 + 1)|0;
+	r1 = r1 >> 2;
+	heap32[(r3)] = r4;
+	r1 = heap32[(r1+-1)];
+	heap32[(g0)] = r1;
+	free(i7);
+}
+	r0 = heapU8[r0+100];
+if(!(r0 ==0)) //_LBB71_14
+{
+	r0 = heap32[(r2+23)];
+	r1 = r0 >> 2;
+	r1 = heap32[(r1)];
+	r1 = r1 >> 2;
+	r1 = heap32[(r1)];
+	heap32[(g0)] = r0;
+	__FUNCTION_TABLE__[(r1)>>2](i7);
+	r0 = heap32[(r2+23)];
+if(!(r0 ==0)) //_LBB71_14
+{
+	r1 = gNumAlignedFree;
+	r1 = r1 >> 2;
+	r3 = heap32[(r1)];
+	r3 = (r3 + 1)|0;
+	r0 = r0 >> 2;
+	heap32[(r1)] = r3;
+	r0 = heap32[(r0+-1)];
+	heap32[(g0)] = r0;
+	free(i7);
+}
+}
+	r0 = gNumAlignedFree;
+	r0 = r0 >> 2;
+	r1 = heap32[(r0)];
+	r1 = (r1 + 1)|0;
+	heap32[(r0)] = r1;
+	r0 = heap32[(r2+-1)];
+	heap32[(g0)] = r0;
+	free(i7);
+	return;
+}
+
+function _ZN12btAxisSweep3D0Ev(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+var __label__ = 0;
+	i7 = sp + -8;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = _ZTV12btAxisSweep3;
+	r2 = r0 >> 2;
+	r1 = (r1 + 8)|0;
+	heap32[(r2)] = r1;
+	heap32[(g0)] = r0;
+	_ZN20btAxisSweep3InternalItED2Ev(i7);
+if(!(r0 ==0)) //_LBB72_2
+{
+	r0 = gNumAlignedFree;
+	r0 = r0 >> 2;
+	r1 = heap32[(r0)];
+	r1 = (r1 + 1)|0;
+	heap32[(r0)] = r1;
+	r0 = heap32[(r2+-1)];
+	heap32[(g0)] = r0;
+	free(i7);
+}
+	return;
+}
+
+function _ZN12btAxisSweep3D1Ev(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+var __label__ = 0;
+	i7 = sp + -8;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = _ZTV12btAxisSweep3;
+	r2 = r0 >> 2;
+	r1 = (r1 + 8)|0;
+	heap32[(r2)] = r1;
+	heap32[(g0)] = r0;
+	_ZN20btAxisSweep3InternalItED2Ev(i7);
+	return;
+}
+
+function _ZN20btCollisionAlgorithmD1Ev(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+var __label__ = 0;
+	i7 = sp + 0;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = _ZTV20btCollisionAlgorithm;
+	r0 = r0 >> 2;
+	r1 = (r1 + 8)|0;
+	heap32[(r0)] = r1;
+	return;
+}
+
+function _ZN20btCollisionAlgorithmD0Ev(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+var __label__ = 0;
+	i7 = sp + -8;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = _ZTV20btCollisionAlgorithm;
+	r2 = r0 >> 2;
+	r1 = (r1 + 8)|0;
+	heap32[(r2)] = r1;
+	heap32[(g0)] = r0;
+	_ZdlPv(i7);
+	return;
+}
+
+function _ZN6btDbvt8ICollide7ProcessEPK10btDbvtNodeS3_(sp)
+{
+	var i7;
+	var fp = sp>>2;
+var __label__ = 0;
+	i7 = sp + 0;var g0 = i7>>2; // save stack
+	return;
+}
+
+function _ZN6btDbvt8ICollide7ProcessEPK10btDbvtNodef(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+var __label__ = 0;
+	i7 = sp + -8;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = r0 >> 2;
+	r1 = heap32[(r1)];
+	r1 = r1 >> 2;
+	r1 = heap32[(r1+3)];
+	r2 = heap32[(fp+1)];
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r2;
+	__FUNCTION_TABLE__[(r1)>>2](i7);
+	return;
+}
+
+function _ZN6btDbvt8ICollide7DescentEPK10btDbvtNode(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+var __label__ = 0;
+	i7 = sp + 0;var g0 = i7>>2; // save stack
+	r0 = 1;
+	r_g0 = r0;
+	return;
+}
+
+function _ZN6btDbvt8ICollide9AllLeavesEPK10btDbvtNode(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+var __label__ = 0;
+	i7 = sp + 0;var g0 = i7>>2; // save stack
+	r0 = 1;
+	r_g0 = r0;
+	return;
+}
+
+function _ZL10insertleafP6btDbvtP10btDbvtNodeS2_(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+	var r6;
+	var r7;
+	var f0;
+	var f1;
+	var f2;
+	var f3;
+	var f4;
+	var f5;
+	var f6;
+	var f7;
+	var f8;
+	var f9;
+	var f10;
+	var f11;
+var __label__ = 0;
+	i7 = sp + -8;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = heap32[(fp+2)];
+	r0 = r0 >> 2;
+	r2 = heap32[(r0)];
+	if(r2 !=0) //_LBB80_2
+{
+	r2 = heap32[(fp+1)];
+	r3 = r2 >> 2;
+	r3 = heap32[(r3+10)];
+	if(r3 !=0) //_LBB80_4
+{
+	r4 = r1 >> 2;
+	f0 = heapFloat[(r4+2)];
+	f1 = heapFloat[(r4+6)];
+	f2 = heapFloat[(r4+1)];
+	f3 = heapFloat[(r4+5)];
+	f4 = heapFloat[(r4)];
+	f5 = heapFloat[(r4+4)];
+	f0 = f0+f1;
+	f1 = f2+f3;
+	f2 = f4+f5;
+_5: while(true){
+	r4 = r2 >> 2;
+	r4 = heap32[(r4+9)];
+	r4 = r4 >> 2;
+	f3 = heapFloat[(r4)];
+	f4 = heapFloat[(r4+4)];
+	f5 = heapFloat[(r4+2)];
+	f6 = heapFloat[(r4+6)];
+	f7 = heapFloat[(r4+1)];
+	f8 = heapFloat[(r4+5)];
+	f3 = f3+f4;
+	f4 = f5+f6;
+	f5 = f7+f8;
+	f3 = f2-f3;
+	f4 = f0-f4;
+	f5 = f1-f5;
+	f6 =                         0;
+	if(f3 <f6) //_LBB80_7
+{
+	f3 = -f3;
+}
+	if(f5 <f6) //_LBB80_10
+{
+	f5 = -f5;
+}
+	f3 = f3+f5;
+	if(f4 <f6) //_LBB80_13
+{
+	f4 = -f4;
+}
+	r3 = r3 >> 2;
+	f5 = heapFloat[(r3)];
+	f7 = heapFloat[(r3+4)];
+	f8 = heapFloat[(r3+2)];
+	f9 = heapFloat[(r3+6)];
+	f10 = heapFloat[(r3+1)];
+	f11 = heapFloat[(r3+5)];
+	f5 = f5+f7;
+	f7 = f8+f9;
+	f8 = f10+f11;
+	f5 = f2-f5;
+	f3 = f3+f4;
+	f4 = f0-f7;
+	f7 = f1-f8;
+	if(f5 <f6) //_LBB80_16
+{
+	f5 = -f5;
+}
+	if(f7 <f6) //_LBB80_19
+{
+	f7 = -f7;
+}
+	f5 = f5+f7;
+	if(f4 <f6) //_LBB80_22
+{
+	f4 = -f4;
+}
+	f4 = f5+f4;
+	r3 = f3 >= f4;
+	r3 = r3 & 1;
+	r3 = r3 << 2;
+	r2 = (r2 + r3)|0;
+	r2 = r2 >> 2;
+	r2 = heap32[(r2+9)];
+	r3 = r2 >> 2;
+	r3 = heap32[(r3+10)];
+if(!(r3 !=0)) //_LBB80_5
+{
+break _5;
+}
+}
+}
+	r3 = r2 >> 2;
+	r4 = heap32[(r0+1)];
+	r5 = heap32[(r3+8)];
+	if(r4 ==0) //_LBB80_26
+{
+	r4 = gNumAlignedAllocs;
+	r4 = r4 >> 2;
+	r6 = heap32[(r4)];
+	r6 = (r6 + 1)|0;
+	heap32[(r4)] = r6;
+	heap32[(g0)] = 63;
+	malloc(i7);
+	r4 = r_g0;
+	if(r4 !=0) //_LBB80_28
+{
+	r6 = 0;
+	r7 = (r4 + 4)|0;
+	r6 = (r6 - r7)|0;
+	r6 = r6 & 15;
+	r6 = (r4 + r6)|0;
+	r7 = (r6 + 4)|0;
+	r6 = r6 >> 2;
+	heap32[(r6)] = r4;
+	r4 = r7;
+}
+}
+else{
+	heap32[(r0+1)] = 0;
+}
+	r6 = r4 >> 2;
+	heap32[(r6+8)] = r5;
+	heap32[(r6+9)] = 0;
+	heap32[(r6+10)] = 0;
+	r7 = r1 >> 2;
+	f0 = heapFloat[(r7)];
+	f1 = heapFloat[(r3)];
+	f0 = f0 < f1 ? f0 : f1;
+	heapFloat[(r6)] = f0;
+	f0 = heapFloat[(r7+4)];
+	f1 = heapFloat[(r3+4)];
+	f0 = f0 > f1 ? f0 : f1;
+	heapFloat[(r6+4)] = f0;
+	f0 = heapFloat[(r7+1)];
+	f1 = heapFloat[(r3+1)];
+	f0 = f0 < f1 ? f0 : f1;
+	heapFloat[(r6+1)] = f0;
+	f0 = heapFloat[(r7+5)];
+	f1 = heapFloat[(r3+5)];
+	f0 = f0 > f1 ? f0 : f1;
+	heapFloat[(r6+5)] = f0;
+	f0 = heapFloat[(r7+2)];
+	f1 = heapFloat[(r3+2)];
+	f0 = f0 < f1 ? f0 : f1;
+	heapFloat[(r6+2)] = f0;
+	f0 = heapFloat[(r7+6)];
+	f1 = heapFloat[(r3+6)];
+	f0 = f0 > f1 ? f0 : f1;
+	heapFloat[(r6+6)] = f0;
+_31: do {
+	if(r5 ==0) //_LBB80_38
+{
+	heap32[(r6+9)] = r2;
+	heap32[(r3+8)] = r4;
+	heap32[(r6+10)] = r1;
+	heap32[(r7+8)] = r4;
+	heap32[(r0)] = r4;
+}
+else{
+	r0 = heap32[(r3+8)];
+	r0 = r0 >> 2;
+	r0 = heap32[(r0+10)];
+	r0 = r0 == r2;
+	r0 = r0 & 1;
+	r0 = r0 << 2;
+	r0 = (r5 + r0)|0;
+	r0 = r0 >> 2;
+	heap32[(r0+9)] = r4;
+	heap32[(r6+9)] = r2;
+	heap32[(r3+8)] = r4;
+	heap32[(r6+10)] = r1;
+	heap32[(r7+8)] = r4;
+	f0 = heapFloat[(r6)];
+_34: while(true){
+	r0 = r5;
+	r1 = r0 >> 2;
+	f1 = heapFloat[(r1)];
+if(!(f1 >f0)) //_LBB80_37
+{
+	r2 = r4 >> 2;
+	f0 = heapFloat[(r1+1)];
+	f1 = heapFloat[(r2+1)];
+if(!(f0 >f1)) //_LBB80_37
+{
+	f0 = heapFloat[(r1+2)];
+	f1 = heapFloat[(r2+2)];
+if(!(f0 >f1)) //_LBB80_37
+{
+	f0 = heapFloat[(r1+4)];
+	f1 = heapFloat[(r2+4)];
+if(!(f0 <f1)) //_LBB80_37
+{
+	f0 = heapFloat[(r1+5)];
+	f1 = heapFloat[(r2+5)];
+if(!(f0 <f1)) //_LBB80_37
+{
+	f0 = heapFloat[(r1+6)];
+	f1 = heapFloat[(r2+6)];
+	if(f0 >=f1) //_LBB80_39
+{
+break _31;
+}
+}
+}
+}
+}
+}
+	r2 = heap32[(r1+10)];
+	r3 = heap32[(r1+9)];
+	r2 = r2 >> 2;
+	r3 = r3 >> 2;
+	f0 = heapFloat[(r3)];
+	f1 = heapFloat[(r2)];
+	f0 = f0 < f1 ? f0 : f1;
+	heapFloat[(r1)] = f0;
+	f1 = heapFloat[(r3+4)];
+	f2 = heapFloat[(r2+4)];
+	f1 = f1 > f2 ? f1 : f2;
+	heapFloat[(r1+4)] = f1;
+	f1 = heapFloat[(r3+1)];
+	f2 = heapFloat[(r2+1)];
+	f1 = f1 < f2 ? f1 : f2;
+	heapFloat[(r1+1)] = f1;
+	f1 = heapFloat[(r3+5)];
+	f2 = heapFloat[(r2+5)];
+	f1 = f1 > f2 ? f1 : f2;
+	heapFloat[(r1+5)] = f1;
+	f1 = heapFloat[(r3+2)];
+	f2 = heapFloat[(r2+2)];
+	f1 = f1 < f2 ? f1 : f2;
+	heapFloat[(r1+2)] = f1;
+	f1 = heapFloat[(r3+6)];
+	f2 = heapFloat[(r2+6)];
+	f1 = f1 > f2 ? f1 : f2;
+	heapFloat[(r1+6)] = f1;
+	r5 = heap32[(r1+8)];
+	r4 = r0;
+	if(r5 ==0) //_LBB80_39
+{
+break _31;
+}
+}
+}
+} while(0);
+	return;
+}
+else{
+	r2 = r1 >> 2;
+	heap32[(r0)] = r1;
+	heap32[(r2+8)] = 0;
+	return;
+}
+}
+
+function _ZL10removeleafP6btDbvtP10btDbvtNode(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+	var f0;
+	var f1;
+	var f2;
+	var f3;
+	var f4;
+	var f5;
+	var f6;
+	var f7;
+	var f8;
+	var f9;
+	var f10;
+	var f11;
+	var f12;
+var __label__ = 0;
+	i7 = sp + -8;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = heap32[(fp+1)];
+	r0 = r0 >> 2;
+	r2 = heap32[(r0)];
+	if(r2 !=r1) //_LBB81_2
+{
+	r2 = r1 >> 2;
+	r2 = heap32[(r2+8)];
+	r3 = r2 >> 2;
+	r4 = heap32[(r3+10)];
+	r1 = r4 != r1;
+	r1 = r1 & 1;
+	r1 = r1 << 2;
+	r1 = (r2 + r1)|0;
+	r1 = r1 >> 2;
+	r3 = heap32[(r3+8)];
+	r1 = heap32[(r1+9)];
+_3: do {
+	if(r3 ==0) //_LBB81_11
+{
+	r3 = r1 >> 2;
+	heap32[(r0)] = r1;
+	heap32[(r3+8)] = 0;
+	r3 = heap32[(r0+1)];
+if(!(r3 ==0)) //_LBB81_13
+{
+	r1 = gNumAlignedFree;
+	r1 = r1 >> 2;
+	r4 = heap32[(r1)];
+	r4 = (r4 + 1)|0;
+	r3 = r3 >> 2;
+	heap32[(r1)] = r4;
+	r3 = heap32[(r3+-1)];
+	heap32[(g0)] = r3;
+	free(i7);
+}
+	heap32[(r0+1)] = r2;
+	r3 = heap32[(r0)];
+}
+else{
+	r4 = r3 >> 2;
+	r4 = heap32[(r4+10)];
+	r4 = r4 == r2;
+	r4 = r4 & 1;
+	r4 = r4 << 2;
+	r4 = (r3 + r4)|0;
+	r4 = r4 >> 2;
+	r5 = r1 >> 2;
+	heap32[(r4+9)] = r1;
+	heap32[(r5+8)] = r3;
+	r1 = heap32[(r0+1)];
+if(!(r1 ==0)) //_LBB81_5
+{
+	r4 = gNumAlignedFree;
+	r4 = r4 >> 2;
+	r5 = heap32[(r4)];
+	r5 = (r5 + 1)|0;
+	r1 = r1 >> 2;
+	heap32[(r4)] = r5;
+	r1 = heap32[(r1+-1)];
+	heap32[(g0)] = r1;
+	free(i7);
+}
+	heap32[(r0+1)] = r2;
+_12: while(true){
+	if(r3 !=0) //_LBB81_6
+{
+	r1 = r3 >> 2;
+	r2 = heap32[(r1+10)];
+	r4 = heap32[(r1+9)];
+	r2 = r2 >> 2;
+	r4 = r4 >> 2;
+	f0 = heapFloat[(r1+6)];
+	f1 = heapFloat[(r1)];
+	f2 = heapFloat[(r1+1)];
+	f3 = heapFloat[(r1+2)];
+	f4 = heapFloat[(r1+4)];
+	f5 = heapFloat[(r1+5)];
+	f6 = heapFloat[(r4)];
+	f7 = heapFloat[(r2)];
+	f6 = f6 < f7 ? f6 : f7;
+	heapFloat[(r1)] = f6;
+	f7 = heapFloat[(r4+4)];
+	f8 = heapFloat[(r2+4)];
+	f7 = f7 > f8 ? f7 : f8;
+	heapFloat[(r1+4)] = f7;
+	f8 = heapFloat[(r4+1)];
+	f9 = heapFloat[(r2+1)];
+	f8 = f8 < f9 ? f8 : f9;
+	heapFloat[(r1+1)] = f8;
+	f9 = heapFloat[(r4+5)];
+	f10 = heapFloat[(r2+5)];
+	f9 = f9 > f10 ? f9 : f10;
+	heapFloat[(r1+5)] = f9;
+	f10 = heapFloat[(r4+2)];
+	f11 = heapFloat[(r2+2)];
+	f10 = f10 < f11 ? f10 : f11;
+	heapFloat[(r1+2)] = f10;
+	f11 = heapFloat[(r4+6)];
+	f12 = heapFloat[(r2+6)];
+	f11 = f11 > f12 ? f11 : f12;
+	heapFloat[(r1+6)] = f11;
+if(!(f0 !=f11)) //_LBB81_8
+{
+	r2 = f1 == f6;
+	r4 = f2 == f8;
+	r2 = r2 & r4;
+	r4 = f3 == f10;
+	r2 = r2 & r4;
+	r4 = f4 == f7;
+	r2 = r2 & r4;
+	r4 = f5 == f9;
+	r2 = r2 & r4;
+	if(r2 != 0) //_LBB81_14
+{
+break _3;
+}
+}
+	r3 = heap32[(r1+8)];
+}
+else{
+break _12;
+}
+}
+	r0 = heap32[(r0)];
+	r_g0 = r0;
+	return;
+}
+} while(0);
+	r_g0 = r3;
+	return;
+}
+else{
+	heap32[(r0)] = 0;
+	r0 = 0;
+	r_g0 = r0;
+	return;
+}
+}
+
+function _ZN6btDbvt6updateEP10btDbvtNodeR12btDbvtAabbMmRK9btVector3f(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+	var r6;
+	var r7;
+	var f0;
+	var f1;
+	var f2;
+	var f3;
+	var f4;
+	var f5;
+	var f6;
+	var f7;
+var __label__ = 0;
+	i7 = sp + -16;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp+2)];
+	r0 = r0 >> 2;
+	r1 = heap32[(fp+1)];
+	f0 = heapFloat[(r0)];
+	r2 = heap32[(fp)];
+	r3 = heap32[(fp+3)];
+	f1 = heapFloat[(fp+4)];
+	r4 = r1 >> 2;
+	f2 = heapFloat[(r4)];
+	if(f2 <=f0) //_LBB82_2
+{
+	f2 = heapFloat[(r0+1)];
+	f3 = heapFloat[(r4+1)];
+	if(f3 <=f2) //_LBB82_4
+{
+	f3 = heapFloat[(r4+2)];
+	f4 = heapFloat[(r0+2)];
+if(!(f3 >f4)) //_LBB82_3
+{
+	f3 = heapFloat[(r4+4)];
+	f4 = heapFloat[(r0+4)];
+if(!(f3 <f4)) //_LBB82_3
+{
+	f3 = heapFloat[(r4+5)];
+	f4 = heapFloat[(r0+5)];
+if(!(f3 <f4)) //_LBB82_3
+{
+	f3 = heapFloat[(r4+6)];
+	f4 = heapFloat[(r0+6)];
+if(!(f3 <f4)) //_LBB82_3
+{
+	r0 = 0;
+	r_g0 = r0;
+	return;
+}
+}
+}
+}
+}
+}
+else{
+	f2 = heapFloat[(r0+1)];
+}
+	f0 = f0-f1;
+	f2 = f2-f1;
+	heapFloat[(r0)] = f0;
+	heapFloat[(r0+1)] = f2;
+	f3 = heapFloat[(r0+2)];
+	f3 = f3-f1;
+	heapFloat[(r0+2)] = f3;
+	f4 = heapFloat[(r0+4)];
+	f4 = f4+f1;
+	heapFloat[(r0+4)] = f4;
+	f5 = heapFloat[(r0+5)];
+	f5 = f5+f1;
+	heapFloat[(r0+5)] = f5;
+	f6 = heapFloat[(r0+6)];
+	f1 = f6+f1;
+	r3 = r3 >> 2;
+	heapFloat[(r0+6)] = f1;
+	f6 = heapFloat[(r3)];
+	f7 =                         0;
+	if(f6 <=f7) //_LBB82_10
+{
+	f0 = f0+f6;
+	heapFloat[(r0)] = f0;
+}
+else{
+	f0 = f4+f6;
+	heapFloat[(r0+4)] = f0;
+}
+	f0 = heapFloat[(r3+1)];
+	if(f0 <=f7) //_LBB82_13
+{
+	f0 = f2+f0;
+	heapFloat[(r0+1)] = f0;
+}
+else{
+	f0 = f5+f0;
+	heapFloat[(r0+5)] = f0;
+}
+	f0 = heapFloat[(r3+2)];
+	if(f0 <=f7) //_LBB82_16
+{
+	f0 = f3+f0;
+	heapFloat[(r0+2)] = f0;
+}
+else{
+	f0 = f1+f0;
+	heapFloat[(r0+6)] = f0;
+}
+	heap32[(g0)] = r2;
+	heap32[(g0+1)] = r1;
+	_ZL10removeleafP6btDbvtP10btDbvtNode(i7);
+	r3 = r_g0;
+_22: do {
+	if(r3 !=0) //_LBB82_19
+{
+	r5 = r2 >> 2;
+	r6 = heap32[(r5+2)];
+	if(r6 <0) //_LBB82_24
+{
+	r5 = heap32[(r5)];
+}
+else{
+	r7 = -1;
+_27: while(true){
+	r5 = r3;
+	r7 = (r7 + 1)|0;
+	if(r6 >r7) //_LBB82_23
+{
+	r3 = r5 >> 2;
+	r3 = heap32[(r3+8)];
+	if(r3 ==0) //_LBB82_22
+{
+break _22;
+}
+else{
+continue _27;
+}
+}
+else{
+break _22;
+}
+}
+}
+}
+else{
+	r5 = 0;
+}
+} while(0);
+	heap32[(r4)] = heap32[(r0)];
+	heap32[(r4+1)] = heap32[(r0+1)];
+	heap32[(r4+2)] = heap32[(r0+2)];
+	heap32[(r4+3)] = heap32[(r0+3)];
+	heap32[(r4+4)] = heap32[(r0+4)];
+	heap32[(r4+5)] = heap32[(r0+5)];
+	heap32[(r4+6)] = heap32[(r0+6)];
+	heap32[(r4+7)] = heap32[(r0+7)];
+	heap32[(g0)] = r2;
+	heap32[(g0+1)] = r5;
+	heap32[(g0+2)] = r1;
+	_ZL10insertleafP6btDbvtP10btDbvtNodeS2_(i7);
+	r0 = 1;
+	r_g0 = r0;
+	return;
+}
+
+function _ZL17recursedeletenodeP6btDbvtP10btDbvtNode(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+var __label__ = 0;
+	i7 = sp + -8;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp+1)];
+	r1 = heap32[(fp)];
+	r2 = r0 >> 2;
+	r3 = heap32[(r2+10)];
+if(!(r3 ==0)) //_LBB83_2
+{
+	r3 = heap32[(r2+9)];
+	heap32[(g0)] = r1;
+	heap32[(g0+1)] = r3;
+	_ZL17recursedeletenodeP6btDbvtP10btDbvtNode(i7);
+	r2 = heap32[(r2+10)];
+	heap32[(g0)] = r1;
+	heap32[(g0+1)] = r2;
+	_ZL17recursedeletenodeP6btDbvtP10btDbvtNode(i7);
+}
+	r1 = r1 >> 2;
+	r2 = heap32[(r1)];
+if(!(r2 !=r0)) //_LBB83_4
+{
+	heap32[(r1)] = 0;
+}
+	r2 = heap32[(r1+1)];
+if(!(r2 ==0)) //_LBB83_6
+{
+	r3 = gNumAlignedFree;
+	r3 = r3 >> 2;
+	r4 = heap32[(r3)];
+	r4 = (r4 + 1)|0;
+	r2 = r2 >> 2;
+	heap32[(r3)] = r4;
+	r2 = heap32[(r2+-1)];
+	heap32[(g0)] = r2;
+	free(i7);
+}
+	heap32[(r1+1)] = r0;
+	return;
+}
+
+function _ZN6btDbvt19optimizeIncrementalEi(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+	var r6;
+	var r7;
+	var r8;
+	var r9;
+	var r10;
+	var r11;
+	var r12;
+	var f0;
+	var f1;
+	var f2;
+	var f3;
+	var f4;
+	var f5;
+	var f6;
+	var f7;
+var __label__ = 0;
+	i7 = sp + -16;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp+1)];
+	r1 = heap32[(fp)];
+	if(r0 <0) //_LBB84_2
+{
+	r0 = r1 >> 2;
+	r0 = heap32[(r0+3)];
+}
+	r2 = r1 >> 2;
+	r3 = heap32[(r2)];
+_4: do {
+if(!(r3 ==0)) //_LBB84_20
+{
+if(!(r0 <1)) //_LBB84_20
+{
+_6: while(true){
+	r3 = 0;
+	r4 = r1;
+_8: while(true){
+	r4 = r4 >> 2;
+	r4 = heap32[(r4)];
+	r5 = r4 >> 2;
+	r6 = heap32[(r5+10)];
+	if(r6 !=0) //_LBB84_6
+{
+	r6 = heap32[(r5+8)];
+	if(uint(r6) >uint(r4)) //_LBB84_8
+{
+	r7 = r6 >> 2;
+	r8 = heap32[(r7+10)];
+	r8 = r8 == r4;
+	r8 = r8 & 1;
+	r9 = (r6 + 36)|0;
+	r10 = r8 << 2;
+	r11 = (r9 + r10)|0;
+	r11 = r11 >> 2;
+	r11 = heap32[(r11)];
+	if(r11 ==r4) //_LBB84_10
+{
+	r8 = r8 ^ 1;
+	r8 = r8 << 2;
+	r9 = (r9 + r8)|0;
+	r9 = r9 >> 2;
+	r9 = heap32[(r9)];
+	r11 = heap32[(r7+8)];
+	if(r11 ==0) //_LBB84_12
+{
+	heap32[(r2)] = r4;
+}
+else{
+	r12 = r11 >> 2;
+	r12 = heap32[(r12+10)];
+	r12 = r12 == r6;
+	r12 = r12 & 1;
+	r12 = r12 << 2;
+	r12 = (r11 + r12)|0;
+	r12 = r12 >> 2;
+	heap32[(r12+9)] = r4;
+}
+	r12 = r9 >> 2;
+	heap32[(r12+8)] = r4;
+	heap32[(r7+8)] = r4;
+	heap32[(r5+8)] = r11;
+	r11 = heap32[(r5+9)];
+	heap32[(r7+9)] = r11;
+	r11 = heap32[(r5+10)];
+	heap32[(r7+10)] = r11;
+	r11 = heap32[(r5+9)];
+	r11 = r11 >> 2;
+	heap32[(r11+8)] = r6;
+	r11 = heap32[(r5+10)];
+	r4 = (r4 + 36)|0;
+	r10 = (r4 + r10)|0;
+	r11 = r11 >> 2;
+	r4 = (r4 + r8)|0;
+	r8 = r10 >> 2;
+	heap32[(r11+8)] = r6;
+	r4 = r4 >> 2;
+	heap32[(r8)] = r6;
+	heap32[(r4)] = r9;
+	f0 = heapFloat[(r7+7)];
+	f1 = heapFloat[(r7+6)];
+	f2 = heapFloat[(r7+5)];
+	f3 = heapFloat[(r7+4)];
+	f4 = heapFloat[(r7+3)];
+	f5 = heapFloat[(r7+2)];
+	f6 = heapFloat[(r7+1)];
+	f7 = heapFloat[(r7)];
+	heap32[(r7)] = heap32[(r5)];
+	heap32[(r7+1)] = heap32[(r5+1)];
+	heap32[(r7+2)] = heap32[(r5+2)];
+	heap32[(r7+3)] = heap32[(r5+3)];
+	heap32[(r7+4)] = heap32[(r5+4)];
+	heap32[(r7+5)] = heap32[(r5+5)];
+	heap32[(r7+6)] = heap32[(r5+6)];
+	heap32[(r7+7)] = heap32[(r5+7)];
+	heapFloat[(r5)] = f7;
+	heapFloat[(r5+1)] = f6;
+	heapFloat[(r5+2)] = f5;
+	heapFloat[(r5+3)] = f4;
+	heapFloat[(r5+4)] = f3;
+	heapFloat[(r5+5)] = f2;
+	heapFloat[(r5+6)] = f1;
+	heapFloat[(r5+7)] = f0;
+}
+else{
+break _6;
+}
+}
+else{
+	r6 = r4;
+}
+	r4 = heap32[(r2+4)];
+	r4 = r4 >>> r3;
+	r4 = r4 & 1;
+	r4 = r4 << 2;
+	r4 = (r6 + r4)|0;
+	r3 = (r3 + 1)|0;
+	r4 = (r4 + 36)|0;
+	r3 = r3 & 31;
+}
+else{
+break _8;
+}
+}
+	heap32[(g0)] = r1;
+	heap32[(g0+1)] = r4;
+	_ZL10removeleafP6btDbvtP10btDbvtNode(i7);
+	r3 = r_g0;
+	if(r3 !=0) //_LBB84_18
+{
+	r3 = heap32[(r2)];
+}
+else{
+	r3 = 0;
+}
+	heap32[(g0)] = r1;
+	heap32[(g0+1)] = r3;
+	heap32[(g0+2)] = r4;
+	_ZL10insertleafP6btDbvtP10btDbvtNodeS2_(i7);
+	r3 = heap32[(r2+4)];
+	r0 = (r0 + -1)|0;
+	r3 = (r3 + 1)|0;
+	heap32[(r2+4)] = r3;
+if(!(r0 !=0)) //_LBB84_5
+{
+break _4;
+}
+}
+	r4 = _2E_str22;
+	r0 = _2E_str1118;
+	heap32[(g0)] = r4;
+	heap32[(g0+1)] = r0;
+	heap32[(g0+2)] = 379;
+	_assert(i7);
+}
+}
+} while(0);
+	return;
+}
+
+function _ZN18btDbvtTreeColliderD1Ev(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+var __label__ = 0;
+	i7 = sp + 0;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = _ZTV18btDbvtTreeCollider;
+	r0 = r0 >> 2;
+	r1 = (r1 + 8)|0;
+	heap32[(r0)] = r1;
+	return;
+}
+
+function _ZN18btDbvtTreeColliderD0Ev(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+var __label__ = 0;
+	i7 = sp + -8;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = _ZTV18btDbvtTreeCollider;
+	r2 = r0 >> 2;
+	r1 = (r1 + 8)|0;
+	heap32[(r2)] = r1;
+	heap32[(g0)] = r0;
+	_ZdlPv(i7);
+	return;
+}
+
+function _ZN18btDbvtTreeCollider7ProcessEPK10btDbvtNodeS2_(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+var __label__ = 0;
+	i7 = sp + -16;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp+1)];
+	r1 = heap32[(fp+2)];
+if(!(r0 ==r1)) //_LBB87_2
+{
+	r2 = heap32[(fp)];
+	r2 = r2 >> 2;
+	r3 = heap32[(r2+1)];
+	r3 = r3 >> 2;
+	r3 = heap32[(r3+24)];
+	r4 = r3 >> 2;
+	r4 = heap32[(r4)];
+	r4 = r4 >> 2;
+	r1 = r1 >> 2;
+	r0 = r0 >> 2;
+	r4 = heap32[(r4+2)];
+	r1 = heap32[(r1+9)];
+	r0 = heap32[(r0+9)];
+	heap32[(g0)] = r3;
+	heap32[(g0+1)] = r0;
+	heap32[(g0+2)] = r1;
+	__FUNCTION_TABLE__[(r4)>>2](i7);
+	r0 = heap32[(r2+1)];
+	r0 = r0 >> 2;
+	r1 = heap32[(r0+30)];
+	r1 = (r1 + 1)|0;
+	heap32[(r0+30)] = r1;
+}
+	return;
+}
+
+function _ZN18btDbvtTreeCollider7ProcessEPK10btDbvtNode(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+var __label__ = 0;
+	i7 = sp + -16;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = r0 >> 2;
+	r2 = heap32[(r1)];
+	r1 = heap32[(r1+2)];
+	r2 = r2 >> 2;
+	r1 = r1 >> 2;
+	r2 = heap32[(r2+2)];
+	r1 = heap32[(r1+12)];
+	r3 = heap32[(fp+1)];
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r3;
+	heap32[(g0+2)] = r1;
+	__FUNCTION_TABLE__[(r2)>>2](i7);
+	return;
+}
+
+function _ZNK16btDbvtBroadphase7getAabbEP17btBroadphaseProxyR9btVector3S3_(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+var __label__ = 0;
+	i7 = sp + 0;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp+1)];
+	r1 = heap32[(fp+2)];
+	r0 = r0 >> 2;
+	r1 = r1 >> 2;
+	heap32[(r1)] = heap32[(r0+4)];
+	heap32[(r1+1)] = heap32[(r0+5)];
+	r2 = heap32[(fp+3)];
+	heap32[(r1+2)] = heap32[(r0+6)];
+	r2 = r2 >> 2;
+	heap32[(r1+3)] = heap32[(r0+7)];
+	heap32[(r2)] = heap32[(r0+8)];
+	heap32[(r2+1)] = heap32[(r0+9)];
+	heap32[(r2+2)] = heap32[(r0+10)];
+	heap32[(r2+3)] = heap32[(r0+11)];
+	return;
+}
+
+function _ZN19BroadphaseRayTesterD1Ev(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+var __label__ = 0;
+	i7 = sp + 0;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = _ZTV19BroadphaseRayTester;
+	r0 = r0 >> 2;
+	r1 = (r1 + 8)|0;
+	heap32[(r0)] = r1;
+	return;
+}
+
+function _ZN19BroadphaseRayTesterD0Ev(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+var __label__ = 0;
+	i7 = sp + -8;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = _ZTV19BroadphaseRayTester;
+	r2 = r0 >> 2;
+	r1 = (r1 + 8)|0;
+	heap32[(r2)] = r1;
+	heap32[(g0)] = r0;
+	_ZdlPv(i7);
+	return;
+}
+
+function _ZN19BroadphaseRayTester7ProcessEPK10btDbvtNode(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+var __label__ = 0;
+	i7 = sp + -8;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r0 = r0 >> 2;
+	r0 = heap32[(r0+1)];
+	r1 = r0 >> 2;
+	r2 = heap32[(fp+1)];
+	r1 = heap32[(r1)];
+	r1 = r1 >> 2;
+	r2 = r2 >> 2;
+	r1 = heap32[(r1+2)];
+	r2 = heap32[(r2+9)];
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r2;
+	__FUNCTION_TABLE__[(r1)>>2](i7);
+	return;
+}
+
+function _ZN20BroadphaseAabbTesterD1Ev(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+var __label__ = 0;
+	i7 = sp + 0;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = _ZTV20BroadphaseAabbTester;
+	r0 = r0 >> 2;
+	r1 = (r1 + 8)|0;
+	heap32[(r0)] = r1;
+	return;
+}
+
+function _ZN20BroadphaseAabbTesterD0Ev(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+var __label__ = 0;
+	i7 = sp + -8;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = _ZTV20BroadphaseAabbTester;
+	r2 = r0 >> 2;
+	r1 = (r1 + 8)|0;
+	heap32[(r2)] = r1;
+	heap32[(g0)] = r0;
+	_ZdlPv(i7);
+	return;
+}
+
+function _ZN20BroadphaseAabbTester7ProcessEPK10btDbvtNode(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+var __label__ = 0;
+	i7 = sp + -8;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r0 = r0 >> 2;
+	r0 = heap32[(r0+1)];
+	r1 = r0 >> 2;
+	r2 = heap32[(fp+1)];
+	r1 = heap32[(r1)];
+	r1 = r1 >> 2;
+	r2 = r2 >> 2;
+	r1 = heap32[(r1+2)];
+	r2 = heap32[(r2+9)];
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r2;
+	__FUNCTION_TABLE__[(r1)>>2](i7);
+	return;
+}
+
+function _ZN16btDbvtBroadphase23getOverlappingPairCacheEv(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+var __label__ = 0;
+	i7 = sp + 0;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r0 = r0 >> 2;
+	r0 = heap32[(r0+24)];
+	r_g0 = r0;
+	return;
+}
+
+function _ZNK16btDbvtBroadphase23getOverlappingPairCacheEv(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+var __label__ = 0;
+	i7 = sp + 0;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r0 = r0 >> 2;
+	r0 = heap32[(r0+24)];
+	r_g0 = r0;
+	return;
+}
+
+function _ZNK16btDbvtBroadphase17getBroadphaseAabbER9btVector3S1_(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var f0;
+	var f1;
+	var f2;
+	var f3;
+	var f4;
+	var f5;
+	var f6;
+	var f7;
+	var f8;
+	var f9;
+	var f10;
+	var f11;
+var __label__ = 0;
+	i7 = sp + 0;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r0 = r0 >> 2;
+	r1 = heap32[(r0+1)];
+	r2 = heap32[(fp+1)];
+	r3 = heap32[(fp+2)];
+	r0 = heap32[(r0+11)];
+	if(r1 ==0) //_LBB98_4
+{
+	if(r0 !=0) //_LBB98_6
+{
+	r0 = r0 >> 2;
+	f0 = heapFloat[(r0)];
+	f2 = heapFloat[(r0+1)];
+	f4 = heapFloat[(r0+2)];
+	f6 = heapFloat[(r0+3)];
+	f1 = heapFloat[(r0+4)];
+	f3 = heapFloat[(r0+5)];
+	f5 = heapFloat[(r0+6)];
+	f7 = heapFloat[(r0+7)];
+}
+else{
+	f6 =                         0;
+	f4 = f6;
+	f2 = f6;
+	f0 = f6;
+	f1 = f6;
+	f3 = f6;
+	f5 = f6;
+	f7 = f6;
+}
+}
+else{
+	if(r0 ==0) //_LBB98_3
+{
+	r0 = r1 >> 2;
+	f0 = heapFloat[(r0)];
+	f2 = heapFloat[(r0+1)];
+	f4 = heapFloat[(r0+2)];
+	f6 = heapFloat[(r0+3)];
+	f1 = heapFloat[(r0+4)];
+	f3 = heapFloat[(r0+5)];
+	f5 = heapFloat[(r0+6)];
+	f7 = heapFloat[(r0+7)];
+}
+else{
+	r1 = r1 >> 2;
+	r0 = r0 >> 2;
+	f0 = heapFloat[(r1)];
+	f1 = heapFloat[(r0)];
+	f2 = heapFloat[(r1+4)];
+	f3 = heapFloat[(r0+4)];
+	f4 = heapFloat[(r1+1)];
+	f5 = heapFloat[(r0+1)];
+	f6 = heapFloat[(r1+5)];
+	f7 = heapFloat[(r0+5)];
+	f8 = heapFloat[(r1+2)];
+	f9 = heapFloat[(r0+2)];
+	f10 = heapFloat[(r1+6)];
+	f11 = heapFloat[(r0+6)];
+	f0 = f0 < f1 ? f0 : f1;
+	f1 = f2 > f3 ? f2 : f3;
+	f2 = f4 < f5 ? f4 : f5;
+	f3 = f6 > f7 ? f6 : f7;
+	f4 = f8 < f9 ? f8 : f9;
+	f5 = f10 > f11 ? f10 : f11;
+}
+}
+	r0 = r2 >> 2;
+	heapFloat[(r0)] = f0;
+	heapFloat[(r0+1)] = f2;
+	heapFloat[(r0+2)] = f4;
+	r1 = r3 >> 2;
+	heapFloat[(r0+3)] = f6;
+	heapFloat[(r1)] = f1;
+	heapFloat[(r1+1)] = f3;
+	heapFloat[(r1+2)] = f5;
+	heapFloat[(r1+3)] = f7;
+	return;
+}
+
+function _ZN16btDbvtBroadphase10printStatsEv(sp)
+{
+	var i7;
+	var fp = sp>>2;
+var __label__ = 0;
+	i7 = sp + 0;var g0 = i7>>2; // save stack
+	return;
+}
+
+function _ZN16btDbvtBroadphase9resetPoolEP12btDispatcher(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+	var r6;
+var __label__ = 0;
+	i7 = sp + -8;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = r0 >> 2;
+	r2 = 0;
+	r3 = heap32[(r1+14)];
+	r4 = heap32[(r1+4)];
+	r3 = (r2 - r3)|0;
+if(!(r4 !=r3)) //_LBB100_18
+{
+	r3 = heap32[(r1+1)];
+if(!(r3 ==0)) //_LBB100_3
+{
+	r4 = (r0 + 4)|0;
+	heap32[(g0)] = r4;
+	heap32[(g0+1)] = r3;
+	_ZL17recursedeletenodeP6btDbvtP10btDbvtNode(i7);
+}
+	r3 = heap32[(r1+2)];
+if(!(r3 ==0)) //_LBB100_5
+{
+	r4 = gNumAlignedFree;
+	r4 = r4 >> 2;
+	r5 = heap32[(r4)];
+	r5 = (r5 + 1)|0;
+	r3 = r3 >> 2;
+	heap32[(r4)] = r5;
+	r3 = heap32[(r3+-1)];
+	heap32[(g0)] = r3;
+	free(i7);
+}
+	heap32[(r1+2)] = 0;
+	heap32[(r1+3)] = -1;
+	r3 = heap32[(r1+9)];
+if(!(r3 ==0)) //_LBB100_9
+{
+	r4 = heapU8[r0+40];
+if(!(r4 ==0)) //_LBB100_8
+{
+	r4 = gNumAlignedFree;
+	r4 = r4 >> 2;
+	r5 = heap32[(r4)];
+	r5 = (r5 + 1)|0;
+	r3 = r3 >> 2;
+	heap32[(r4)] = r5;
+	r3 = heap32[(r3+-1)];
+	heap32[(g0)] = r3;
+	free(i7);
+}
+	heap32[(r1+9)] = 0;
+}
+	r3 = 1;
+	heap8[r0+40] = r3;
+	heap32[(r1+9)] = 0;
+	heap32[(r1+7)] = 0;
+	heap32[(r1+8)] = 0;
+	heap32[(r1+5)] = 0;
+	r4 = heap32[(r1+11)];
+if(!(r4 ==0)) //_LBB100_11
+{
+	r5 = (r0 + 44)|0;
+	heap32[(g0)] = r5;
+	heap32[(g0+1)] = r4;
+	_ZL17recursedeletenodeP6btDbvtP10btDbvtNode(i7);
+}
+	r4 = heap32[(r1+12)];
+if(!(r4 ==0)) //_LBB100_13
+{
+	r5 = gNumAlignedFree;
+	r5 = r5 >> 2;
+	r6 = heap32[(r5)];
+	r6 = (r6 + 1)|0;
+	r4 = r4 >> 2;
+	heap32[(r5)] = r6;
+	r4 = heap32[(r4+-1)];
+	heap32[(g0)] = r4;
+	free(i7);
+}
+	heap32[(r1+12)] = 0;
+	heap32[(r1+13)] = -1;
+	r4 = heap32[(r1+19)];
+if(!(r4 ==0)) //_LBB100_17
+{
+	r5 = heapU8[r0+80];
+if(!(r5 ==0)) //_LBB100_16
+{
+	r5 = gNumAlignedFree;
+	r5 = r5 >> 2;
+	r6 = heap32[(r5)];
+	r6 = (r6 + 1)|0;
+	r4 = r4 >> 2;
+	heap32[(r5)] = r6;
+	r4 = heap32[(r4+-1)];
+	heap32[(g0)] = r4;
+	free(i7);
+}
+	heap32[(r1+19)] = 0;
+}
+	heap8[r0+80] = r3;
+	heap32[(r1+19)] = 0;
+	heap32[(r1+17)] = 0;
+	heap32[(r1+18)] = 0;
+	heap32[(r1+15)] = 0;
+	heap8[r0+153] = r2;
+	heap8[r0+154] = r3;
+	heap32[(r1+26)] = 0;
+	heap32[(r1+31)] = 0;
+	heap32[(r1+27)] = 1;
+	heap32[(r1+28)] = 0;
+	heap32[(r1+29)] = 10;
+	heap32[(r1+30)] = 1;
+	heap32[(r1+32)] = 0;
+	heap32[(r1+33)] = 0;
+	heap32[(r1+34)] = 0;
+	heap32[(r1+37)] = 0;
+	heap32[(r1+35)] = 0;
+	heap32[(r1+36)] = 0;
+	heap32[(r1+21)] = 0;
+	heap32[(r1+22)] = 0;
+	heap32[(r1+23)] = 0;
+}
+	return;
+}
+
+function _ZN6btDbvt24collideTTpersistentStackEPK10btDbvtNodeS2_RNS_8ICollideE(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+	var r6;
+	var r7;
+	var r8;
+	var r9;
+	var r10;
+	var r11;
+	var r12;
+	var r13;
+	var r14;
+	var r15;
+	var r16;
+	var f0;
+	var f1;
+var __label__ = 0;
+	i7 = sp + -16;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp+1)];
+_1: do {
+if(!(r0 ==0)) //_LBB101_57
+{
+	r1 = heap32[(fp+2)];
+if(!(r1 ==0)) //_LBB101_57
+{
+	r2 = heap32[(fp)];
+	r3 = r2 >> 2;
+	r4 = heap32[(r3+6)];
+if(!(r4 >127)) //_LBB101_17
+{
+	r5 = heap32[(r3+7)];
+if(!(r5 >127)) //_LBB101_17
+{
+	r5 = gNumAlignedAllocs;
+	r5 = r5 >> 2;
+	r6 = heap32[(r5)];
+	r6 = (r6 + 1)|0;
+	heap32[(r5)] = r6;
+	heap32[(g0)] = 1043;
+	malloc(i7);
+	r5 = r_g0;
+	if(r5 !=0) //_LBB101_6
+{
+	r6 = 0;
+	r7 = (r5 + 4)|0;
+	r6 = (r6 - r7)|0;
+	r6 = r6 & 15;
+	r6 = (r5 + r6)|0;
+	r7 = (r6 + 4)|0;
+	r6 = r6 >> 2;
+	heap32[(r6)] = r5;
+	r5 = r7;
+}
+	r6 = (r2 + 32)|0;
+	if(r4 <1) //_LBB101_9
+{
+	r4 = r6 >> 2;
+	r8 = heap32[(r4)];
+}
+else{
+	r7 = 0;
+_13: while(true){
+	r8 = r6 >> 2;
+	r8 = heap32[(r8)];
+	r9 = r7 << 3;
+	r10 = (r8 + r9)|0;
+	r10 = r10 >> 2;
+	r9 = (r5 + r9)|0;
+	r11 = heap32[(r10+1)];
+	r10 = heap32[(r10)];
+	r9 = r9 >> 2;
+	r7 = (r7 + 1)|0;
+	heap32[(r9)] = r10;
+	heap32[(r9+1)] = r11;
+if(!(r4 !=r7)) //_LBB101_10
+{
+break _13;
+}
+}
+	r6 = (r2 + 32)|0;
+}
+if(!(r8 ==0)) //_LBB101_16
+{
+	r4 = heapU8[r2+36];
+if(!(r4 ==0)) //_LBB101_15
+{
+	r4 = gNumAlignedFree;
+	r4 = r4 >> 2;
+	r7 = heap32[(r4)];
+	r7 = (r7 + 1)|0;
+	r8 = r8 >> 2;
+	heap32[(r4)] = r7;
+	r4 = heap32[(r8+-1)];
+	heap32[(g0)] = r4;
+	free(i7);
+}
+	r4 = r6 >> 2;
+	heap32[(r4)] = 0;
+}
+	r4 = 1;
+	r6 = r6 >> 2;
+	heap8[r2+36] = r4;
+	heap32[(r6)] = r5;
+	heap32[(r3+7)] = 128;
+}
+}
+	r4 = heap32[(fp+3)];
+	heap32[(r3+6)] = 128;
+	r5 = heap32[(r3+8)];
+	r5 = r5 >> 2;
+	r6 = 1;
+	r7 = 124;
+	heap32[(r5)] = r0;
+	heap32[(r5+1)] = r1;
+_24: while(true){
+	r0 = r6;
+	r6 = (r0 + -1)|0;
+	r1 = heap32[(r3+8)];
+	r5 = r6 << 3;
+	r5 = (r1 + r5)|0;
+	r5 = r5 >> 2;
+	r8 = heap32[(r5)];
+	r5 = heap32[(r5+1)];
+	if(r6 >r7) //_LBB101_20
+{
+	r7 = heap32[(r3+6)];
+	r9 = r7 << 1;
+_28: do {
+if(!(r7 >r9)) //_LBB101_38
+{
+if(!(r7 >=r9)) //_LBB101_38
+{
+	r10 = heap32[(r3+7)];
+	if(r10 <r9) //_LBB101_24
+{
+	if(r9 !=0) //_LBB101_26
+{
+	r10 = gNumAlignedAllocs;
+	r10 = r10 >> 2;
+	r11 = heap32[(r10)];
+	r12 = r7 << 4;
+	r11 = (r11 + 1)|0;
+	r12 = r12 | 3;
+	heap32[(r10)] = r11;
+	r10 = (r12 + 16)|0;
+	heap32[(g0)] = r10;
+	malloc(i7);
+	r10 = r_g0;
+	if(r10 !=0) //_LBB101_28
+{
+	r11 = 0;
+	r12 = (r10 + 4)|0;
+	r11 = (r11 - r12)|0;
+	r11 = r11 & 15;
+	r11 = (r10 + r11)|0;
+	r12 = (r11 + 4)|0;
+	r11 = r11 >> 2;
+	heap32[(r11)] = r10;
+	r10 = r12;
+}
+}
+else{
+	r10 = 0;
+}
+if(!(r7 <1)) //_LBB101_32
+{
+	r11 = (r1 + 4)|0;
+	r12 = (r10 + 4)|0;
+	r13 = r7;
+_40: while(true){
+	r14 = r11 >> 2;
+	r15 = heap32[(r14)];
+	r14 = heap32[(r14+-1)];
+	r16 = r12 >> 2;
+	r13 = (r13 + -1)|0;
+	r11 = (r11 + 8)|0;
+	r12 = (r12 + 8)|0;
+	heap32[(r16+-1)] = r14;
+	heap32[(r16)] = r15;
+if(!(r13 !=0)) //_LBB101_31
+{
+break _40;
+}
+}
+}
+if(!(r1 ==0)) //_LBB101_36
+{
+	r11 = heapU8[r2+36];
+if(!(r11 ==0)) //_LBB101_35
+{
+	r11 = gNumAlignedFree;
+	r11 = r11 >> 2;
+	r12 = heap32[(r11)];
+	r12 = (r12 + 1)|0;
+	r1 = r1 >> 2;
+	heap32[(r11)] = r12;
+	r1 = heap32[(r1+-1)];
+	heap32[(g0)] = r1;
+	free(i7);
+}
+	heap32[(r3+8)] = 0;
+}
+	r1 = 1;
+	heap8[r2+36] = r1;
+	heap32[(r3+8)] = r10;
+	heap32[(r3+7)] = r9;
+if(!(r7 <r9)) //_LBB101_23
+{
+break _28;
+}
+}
+_49: while(true){
+	r7 = (r7 + -1)|0;
+if(!(r7 !=0)) //_LBB101_37
+{
+break _28;
+}
+}
+}
+}
+} while(0);
+	r7 = (r9 + -4)|0;
+	heap32[(r3+6)] = r9;
+}
+	if(r8 !=r5) //_LBB101_43
+{
+	r1 = r8 >> 2;
+	r9 = r5 >> 2;
+	f0 = heapFloat[(r1)];
+	f1 = heapFloat[(r9+4)];
+if(!(f0 >f1)) //_LBB101_41
+{
+	f0 = heapFloat[(r1+4)];
+	f1 = heapFloat[(r9)];
+if(!(f0 <f1)) //_LBB101_41
+{
+	f0 = heapFloat[(r1+1)];
+	f1 = heapFloat[(r9+5)];
+if(!(f0 >f1)) //_LBB101_41
+{
+	f0 = heapFloat[(r1+5)];
+	f1 = heapFloat[(r9+1)];
+if(!(f0 <f1)) //_LBB101_41
+{
+	f0 = heapFloat[(r1+2)];
+	f1 = heapFloat[(r9+6)];
+if(!(f0 >f1)) //_LBB101_41
+{
+	f0 = heapFloat[(r1+6)];
+	f1 = heapFloat[(r9+2)];
+if(!(f0 <f1)) //_LBB101_41
+{
+	r10 = heap32[(r9+10)];
+	r11 = heap32[(r1+10)];
+	if(r11 ==0) //_LBB101_53
+{
+	if(r10 ==0) //_LBB101_55
+{
+	r0 = r4 >> 2;
+	r0 = heap32[(r0)];
+	r0 = r0 >> 2;
+	r0 = heap32[(r0+2)];
+	heap32[(g0)] = r4;
+	heap32[(g0+1)] = r8;
+	heap32[(g0+2)] = r5;
+	__FUNCTION_TABLE__[(r0)>>2](i7);
+}
+else{
+	r5 = r0 << 3;
+	r6 = heap32[(r3+8)];
+	r6 = (r6 + r5)|0;
+	r1 = heap32[(r9+9)];
+	r6 = r6 >> 2;
+	heap32[(r6+-2)] = r8;
+	heap32[(r6+-1)] = r1;
+	r6 = heap32[(r3+8)];
+	r5 = (r6 + r5)|0;
+	r1 = heap32[(r9+10)];
+	r5 = r5 >> 2;
+	r6 = (r0 + 1)|0;
+	heap32[(r5)] = r8;
+	heap32[(r5+1)] = r1;
+}
+}
+else{
+	r6 = heap32[(r3+8)];
+	if(r10 ==0) //_LBB101_52
+{
+	r8 = r0 << 3;
+	r6 = (r6 + r8)|0;
+	r6 = r6 >> 2;
+	r9 = heap32[(r1+9)];
+	heap32[(r6+-2)] = r9;
+	heap32[(r6+-1)] = r5;
+	r6 = heap32[(r3+8)];
+	r6 = (r6 + r8)|0;
+	r8 = heap32[(r1+10)];
+	r9 = r6 >> 2;
+	r6 = (r0 + 1)|0;
+	heap32[(r9)] = r8;
+	heap32[(r9+1)] = r5;
+}
+else{
+	r5 = r0 << 3;
+	r6 = (r6 + r5)|0;
+	r8 = heap32[(r9+9)];
+	r10 = heap32[(r1+9)];
+	r6 = r6 >> 2;
+	heap32[(r6+-2)] = r10;
+	heap32[(r6+-1)] = r8;
+	r6 = heap32[(r3+8)];
+	r6 = (r6 + r5)|0;
+	r8 = heap32[(r9+9)];
+	r10 = heap32[(r1+10)];
+	r6 = r6 >> 2;
+	heap32[(r6)] = r10;
+	heap32[(r6+1)] = r8;
+	r6 = heap32[(r3+8)];
+	r6 = (r5 + r6)|0;
+	r8 = heap32[(r9+10)];
+	r10 = heap32[(r1+9)];
+	r6 = r6 >> 2;
+	heap32[(r6+2)] = r10;
+	heap32[(r6+3)] = r8;
+	r6 = heap32[(r3+8)];
+	r6 = (r5 + r6)|0;
+	r5 = heap32[(r9+10)];
+	r1 = heap32[(r1+10)];
+	r8 = r6 >> 2;
+	r6 = (r0 + 3)|0;
+	heap32[(r8+4)] = r1;
+	heap32[(r8+5)] = r5;
+}
+}
+}
+}
+}
+}
+}
+}
+}
+else{
+	r5 = r8 >> 2;
+	r8 = heap32[(r5+10)];
+	if(r8 !=0) //_LBB101_42
+{
+	r6 = r0 << 3;
+	r8 = heap32[(r3+8)];
+	r8 = (r8 + r6)|0;
+	r1 = heap32[(r5+9)];
+	r8 = r8 >> 2;
+	heap32[(r8+-2)] = r1;
+	heap32[(r8+-1)] = r1;
+	r8 = heap32[(r3+8)];
+	r8 = (r8 + r6)|0;
+	r1 = heap32[(r5+10)];
+	r8 = r8 >> 2;
+	heap32[(r8)] = r1;
+	heap32[(r8+1)] = r1;
+	r8 = heap32[(r3+8)];
+	r6 = (r6 + r8)|0;
+	r8 = heap32[(r5+10)];
+	r5 = heap32[(r5+9)];
+	r1 = r6 >> 2;
+	r6 = (r0 + 2)|0;
+	heap32[(r1+2)] = r5;
+	heap32[(r1+3)] = r8;
+}
+}
+	if(r6 !=0) //_LBB101_18
+{
+continue _24;
+}
+else{
+break _1;
+}
+}
+}
+}
+} while(0);
+	return;
+}
+
+function _ZN6btDbvt9collideTVEPK10btDbvtNodeRK12btDbvtAabbMmRNS_8ICollideE(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+	var r6;
+	var r7;
+	var r8;
+	var r9;
+	var r10;
+	var r11;
+	var r12;
+	var f0;
+	var f1;
+	var f2;
+	var f3;
+	var f4;
+	var f5;
+	var f6;
+var __label__ = 0;
+	i7 = sp + -8;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+if(!(r0 ==0)) //_LBB102_46
+{
+	r1 = heap32[(fp+1)];
+	r2 = heap32[(fp+2)];
+	r3 = gNumAlignedAllocs;
+	r1 = r1 >> 2;
+	r3 = r3 >> 2;
+	r4 = heap32[(r3)];
+	f0 = heapFloat[(r1)];
+	f1 = heapFloat[(r1+1)];
+	f2 = heapFloat[(r1+2)];
+	f3 = heapFloat[(r1+4)];
+	f4 = heapFloat[(r1+5)];
+	f5 = heapFloat[(r1+6)];
+	r1 = (r4 + 1)|0;
+	heap32[(r3)] = r1;
+	heap32[(g0)] = 275;
+	malloc(i7);
+	r1 = r_g0;
+	if(r1 !=0) //_LBB102_3
+{
+	r4 = 0;
+	r5 = (r1 + 4)|0;
+	r4 = (r4 - r5)|0;
+	r4 = r4 & 15;
+	r4 = (r1 + r4)|0;
+	r5 = (r4 + 4)|0;
+	r4 = r4 >> 2;
+	heap32[(r4)] = r1;
+	r1 = r5;
+}
+	r4 = 1;
+	r5 = 64;
+	r6 = r1 >> 2;
+	heap32[(r6)] = r0;
+_6: while(true){
+	r0 = r4;
+	r4 = (r0 + -1)|0;
+	r6 = r4 << 2;
+	r6 = (r1 + r6)|0;
+	r6 = r6 >> 2;
+	r6 = heap32[(r6)];
+	r7 = r6 >> 2;
+	f6 = heapFloat[(r7)];
+	if(f6 <=f3) //_LBB102_7
+{
+	f6 = heapFloat[(r7+4)];
+if(!(f6 <f0)) //_LBB102_6
+{
+	f6 = heapFloat[(r7+1)];
+if(!(f6 >f4)) //_LBB102_6
+{
+	f6 = heapFloat[(r7+5)];
+if(!(f6 <f1)) //_LBB102_6
+{
+	f6 = heapFloat[(r7+2)];
+if(!(f6 >f5)) //_LBB102_6
+{
+	f6 = heapFloat[(r7+6)];
+if(!(f6 <f2)) //_LBB102_6
+{
+	r8 = heap32[(r7+10)];
+	if(r8 ==0) //_LBB102_42
+{
+	r0 = r2 >> 2;
+	r0 = heap32[(r0)];
+	r0 = r0 >> 2;
+	r0 = heap32[(r0+3)];
+	heap32[(g0)] = r2;
+	heap32[(g0+1)] = r6;
+	__FUNCTION_TABLE__[(r0)>>2](i7);
+}
+else{
+	r6 = heap32[(r7+9)];
+	if(r5 ==r4) //_LBB102_15
+{
+	r8 = 1;
+	r9 = r4 << 1;
+	r8 = r4 == 0 ? r8 : r9;
+if(!(r5 >=r8)) //_LBB102_14
+{
+	if(r8 !=0) //_LBB102_18
+{
+	r5 = heap32[(r3)];
+	r9 = r8 << 2;
+	r5 = (r5 + 1)|0;
+	r9 = r9 | 3;
+	heap32[(r3)] = r5;
+	r5 = (r9 + 16)|0;
+	heap32[(g0)] = r5;
+	malloc(i7);
+	r9 = r_g0;
+	if(r9 !=0) //_LBB102_20
+{
+	r5 = 0;
+	r10 = (r9 + 4)|0;
+	r5 = (r5 - r10)|0;
+	r5 = r5 & 15;
+	r5 = (r9 + r5)|0;
+	r10 = (r5 + 4)|0;
+	r5 = r5 >> 2;
+	heap32[(r5)] = r9;
+	r9 = r10;
+}
+}
+else{
+	r9 = 0;
+}
+if(!(r4 <1)) //_LBB102_24
+{
+	r4 = (r0 + -1)|0;
+	r5 = r1;
+	r10 = r9;
+_28: while(true){
+	r11 = r5 >> 2;
+	r4 = (r4 + -1)|0;
+	r12 = (r10 + 4)|0;
+	r5 = (r5 + 4)|0;
+	r10 = r10 >> 2;
+	r11 = heap32[(r11)];
+	heap32[(r10)] = r11;
+	r10 = r12;
+if(!(r4 !=0)) //_LBB102_23
+{
+break _28;
+}
+}
+}
+	if(r1 !=0) //_LBB102_26
+{
+	r4 = gNumAlignedFree;
+	r4 = r4 >> 2;
+	r5 = heap32[(r4)];
+	r5 = (r5 + 1)|0;
+	r1 = r1 >> 2;
+	heap32[(r4)] = r5;
+	r1 = heap32[(r1+-1)];
+	heap32[(g0)] = r1;
+	free(i7);
+	r5 = r8;
+	r1 = r9;
+}
+else{
+	r5 = r8;
+	r1 = r9;
+}
+}
+}
+	r4 = r0 << 2;
+	r8 = (r1 + r4)|0;
+	r8 = r8 >> 2;
+	heap32[(r8+-1)] = r6;
+	r6 = heap32[(r7+10)];
+	if(r5 ==r0) //_LBB102_29
+{
+	r7 = 1;
+	r8 = r0 << 1;
+	r7 = r0 == 0 ? r7 : r8;
+if(!(r5 >=r7)) //_LBB102_28
+{
+	if(r7 !=0) //_LBB102_32
+{
+	r5 = heap32[(r3)];
+	r8 = r7 << 2;
+	r5 = (r5 + 1)|0;
+	r8 = r8 | 3;
+	heap32[(r3)] = r5;
+	r5 = (r8 + 16)|0;
+	heap32[(g0)] = r5;
+	malloc(i7);
+	r8 = r_g0;
+	if(r8 !=0) //_LBB102_34
+{
+	r5 = 0;
+	r9 = (r8 + 4)|0;
+	r5 = (r5 - r9)|0;
+	r5 = r5 & 15;
+	r5 = (r8 + r5)|0;
+	r9 = (r5 + 4)|0;
+	r5 = r5 >> 2;
+	heap32[(r5)] = r8;
+	r8 = r9;
+}
+}
+else{
+	r8 = 0;
+}
+_43: do {
+if(!(r0 <1)) //_LBB102_38
+{
+	r5 = r1;
+	r9 = r8;
+	r10 = r0;
+_45: while(true){
+	r11 = r5 >> 2;
+	r10 = (r10 + -1)|0;
+	r12 = (r9 + 4)|0;
+	r5 = (r5 + 4)|0;
+	r9 = r9 >> 2;
+	r11 = heap32[(r11)];
+	heap32[(r9)] = r11;
+	r9 = r12;
+if(!(r10 !=0)) //_LBB102_37
+{
+break _43;
+}
+}
+}
+} while(0);
+	if(r1 !=0) //_LBB102_40
+{
+	r5 = gNumAlignedFree;
+	r5 = r5 >> 2;
+	r9 = heap32[(r5)];
+	r9 = (r9 + 1)|0;
+	r1 = r1 >> 2;
+	heap32[(r5)] = r9;
+	r1 = heap32[(r1+-1)];
+	heap32[(g0)] = r1;
+	free(i7);
+	r5 = r7;
+	r1 = r8;
+}
+else{
+	r5 = r7;
+	r1 = r8;
+}
+}
+}
+	r7 = (r1 + r4)|0;
+	r4 = (r0 + 1)|0;
+	r0 = r7 >> 2;
+	heap32[(r0)] = r6;
+}
+}
+}
+}
+}
+}
+}
+if(!(r4 >0)) //_LBB102_5
+{
+break _6;
+}
+}
+if(!(r1 ==0)) //_LBB102_46
+{
+	r0 = gNumAlignedFree;
+	r0 = r0 >> 2;
+	r2 = heap32[(r0)];
+	r2 = (r2 + 1)|0;
+	r1 = r1 >> 2;
+	heap32[(r0)] = r2;
+	r0 = heap32[(r1+-1)];
+	heap32[(g0)] = r0;
+	free(i7);
+}
+}
+	return;
+}
+
+function _ZN16btDbvtBroadphase8aabbTestERK9btVector3S2_R24btBroadphaseAabbCallback(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+var __label__ = 0;
+	i7 = sp + -56;var g0 = i7>>2; // save stack
+	r0 = _ZTV20BroadphaseAabbTester;
+	r1 = sp + -8;
+	r0 = (r0 + 8)|0;
+	r2 = heap32[(fp+1)];
+	r3 = r1 >> 2;
+	r4 = heap32[(fp+3)];
+	heap32[(fp+-2)] = r0;
+	r0 = sp + -40;
+	r2 = r2 >> 2;
+	heap32[(r3+1)] = r4;
+	r3 = r0 >> 2;
+	heap32[(fp+-10)] = heap32[(r2)];
+	heap32[(r3+1)] = heap32[(r2+1)];
+	r4 = heap32[(fp+2)];
+	heap32[(r3+2)] = heap32[(r2+2)];
+	r4 = r4 >> 2;
+	heap32[(r3+3)] = heap32[(r2+3)];
+	heap32[(r3+4)] = heap32[(r4)];
+	heap32[(r3+5)] = heap32[(r4+1)];
+	r2 = heap32[(fp)];
+	heap32[(r3+6)] = heap32[(r4+2)];
+	r2 = r2 >> 2;
+	heap32[(r3+7)] = heap32[(r4+3)];
+	r3 = heap32[(r2+1)];
+	heap32[(g0)] = r3;
+	heap32[(g0+1)] = r0;
+	heap32[(g0+2)] = r1;
+	_ZN6btDbvt9collideTVEPK10btDbvtNodeRK12btDbvtAabbMmRNS_8ICollideE(i7);
+	r2 = heap32[(r2+11)];
+	heap32[(g0)] = r2;
+	heap32[(g0+1)] = r0;
+	heap32[(g0+2)] = r1;
+	_ZN6btDbvt9collideTVEPK10btDbvtNodeRK12btDbvtAabbMmRNS_8ICollideE(i7);
+	return;
+}
+
+function _ZN16btDbvtBroadphase11createProxyERK9btVector3S2_iPvssP12btDispatcherS3_(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+	var r6;
+	var r7;
+	var r8;
+	var r9;
+	var r10;
+	var f0;
+	var f1;
+	var f2;
+	var f3;
+	var f4;
+	var f5;
+	var f6;
+	var f7;
+var __label__ = 0;
+	i7 = sp + -64;var g0 = i7>>2; // save stack
+	r0 = gNumAlignedAllocs;
+	r0 = r0 >> 2;
+	r1 = heap32[(r0)];
+	r2 = (r1 + 1)|0;
+	heap32[(r0)] = r2;
+	heap32[(g0)] = 83;
+	malloc(i7);
+	r2 = r_g0;
+	r3 = heap32[(fp)];
+	r4 = heap32[(fp+1)];
+	r5 = heap32[(fp+2)];
+	r6 = heap32[(fp+4)];
+	r7 = heap32[(fp+5)];
+	r8 = heap32[(fp+6)];
+	if(r2 !=0) //_LBB104_2
+{
+	r9 = 0;
+	r10 = (r2 + 4)|0;
+	r9 = (r9 - r10)|0;
+	r9 = r9 & 15;
+	r9 = (r2 + r9)|0;
+	r10 = (r9 + 4)|0;
+	r9 = r9 >> 2;
+	heap32[(r9)] = r2;
+	r2 = r10;
+}
+	r9 = r2 >> 2;
+	heap32[(r9)] = r6;
+	heap16[(r2+4)>>1] = r7;
+	r4 = r4 >> 2;
+	heap16[(r2+6)>>1] = r8;
+	f0 = heapFloat[(r4)];
+	heapFloat[(r9+4)] = f0;
+	f1 = heapFloat[(r4+1)];
+	heapFloat[(r9+5)] = f1;
+	f2 = heapFloat[(r4+2)];
+	heapFloat[(r9+6)] = f2;
+	f3 = heapFloat[(r4+3)];
+	r4 = r5 >> 2;
+	heapFloat[(r9+7)] = f3;
+	f4 = heapFloat[(r4)];
+	heapFloat[(r9+8)] = f4;
+	f5 = heapFloat[(r4+1)];
+	heapFloat[(r9+9)] = f5;
+	f6 = heapFloat[(r4+2)];
+	heapFloat[(r9+10)] = f6;
+	f7 = heapFloat[(r4+3)];
+	heapFloat[(r9+11)] = f7;
+	heap32[(r9+2)] = 0;
+	heap32[(r9+14)] = 0;
+	r4 = sp + -32;
+	heap32[(r9+13)] = 0;
+	r5 = r4 >> 2;
+	heapFloat[(fp+-8)] = f0;
+	heapFloat[(r5+1)] = f1;
+	heapFloat[(r5+2)] = f2;
+	heapFloat[(r5+3)] = f3;
+	heapFloat[(r5+4)] = f4;
+	heapFloat[(r5+5)] = f5;
+	heapFloat[(r5+6)] = f6;
+	r6 = r3 >> 2;
+	heapFloat[(r5+7)] = f7;
+	r5 = heap32[(r6+26)];
+	heap32[(r9+15)] = r5;
+	r5 = heap32[(r6+37)];
+	r5 = (r5 + 1)|0;
+	heap32[(r6+37)] = r5;
+	heap32[(r9+3)] = r5;
+	r5 = heap32[(r6+2)];
+	r7 = (r3 + 4)|0;
+	if(r5 ==0) //_LBB104_5
+{
+	r5 = (r1 + 2)|0;
+	heap32[(r0)] = r5;
+	heap32[(g0)] = 63;
+	malloc(i7);
+	r5 = r_g0;
+	if(r5 !=0) //_LBB104_7
+{
+	r0 = 0;
+	r1 = (r5 + 4)|0;
+	r0 = (r0 - r1)|0;
+	r0 = r0 & 15;
+	r0 = (r5 + r0)|0;
+	r1 = (r0 + 4)|0;
+	r0 = r0 >> 2;
+	heap32[(r0)] = r5;
+	r5 = r1;
+}
+}
+else{
+	heap32[(r6+2)] = 0;
+}
+	r0 = r5 >> 2;
+	heap32[(r0+8)] = 0;
+	heap32[(r0+9)] = r2;
+	heap32[(r0+10)] = 0;
+	heapFloat[(r0)] = f0;
+	heapFloat[(r0+1)] = f1;
+	heapFloat[(r0+2)] = f2;
+	heapFloat[(r0+3)] = f3;
+	heapFloat[(r0+4)] = f4;
+	heapFloat[(r0+5)] = f5;
+	heapFloat[(r0+6)] = f6;
+	heapFloat[(r0+7)] = f7;
+	r0 = heap32[(r6+1)];
+	heap32[(g0)] = r7;
+	heap32[(g0+1)] = r0;
+	heap32[(g0+2)] = r5;
+	_ZL10insertleafP6btDbvtP10btDbvtNodeS2_(i7);
+	r0 = heap32[(r6+4)];
+	r0 = (r0 + 1)|0;
+	heap32[(r6+4)] = r0;
+	heap32[(r9+12)] = r5;
+	r0 = heap32[(r6+26)];
+	r0 = r0 << 2;
+	r0 = (r3 + r0)|0;
+	r0 = r0 >> 2;
+	heap32[(r9+13)] = 0;
+	r1 = heap32[(r0+21)];
+	heap32[(r9+14)] = r1;
+if(!(r1 ==0)) //_LBB104_10
+{
+	r1 = r1 >> 2;
+	heap32[(r1+13)] = r2;
+}
+	heap32[(r0+21)] = r2;
+	r0 = heapU8[r3+153];
+if(!(r0 !=0)) //_LBB104_12
+{
+	r0 = _ZTV18btDbvtTreeCollider;
+	r0 = (r0 + 8)|0;
+	r1 = sp + -48;
+	r5 = r1 >> 2;
+	heap32[(fp+-12)] = r0;
+	heap32[(r5+1)] = r3;
+	heap32[(r5+2)] = r2;
+	r3 = heap32[(r6+1)];
+	heap32[(g0)] = r3;
+	heap32[(g0+1)] = r4;
+	heap32[(g0+2)] = r1;
+	_ZN6btDbvt9collideTVEPK10btDbvtNodeRK12btDbvtAabbMmRNS_8ICollideE(i7);
+	r3 = heap32[(r6+11)];
+	heap32[(g0)] = r3;
+	heap32[(g0+1)] = r4;
+	heap32[(g0+2)] = r1;
+	_ZN6btDbvt9collideTVEPK10btDbvtNodeRK12btDbvtAabbMmRNS_8ICollideE(i7);
+	heap32[(fp+-12)] = r0;
+}
+	r_g0 = r2;
+	return;
+}
+
+function _ZNK6btDbvt15rayTestInternalEPK10btDbvtNodeRK9btVector3S5_S5_PjfS5_S5_RNS_8ICollideE(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+	var r6;
+	var r7;
+	var r8;
+	var r9;
+	var r10;
+	var r11;
+	var r12;
+	var r13;
+	var r14;
+	var r15;
+	var r16;
+	var r17;
+	var r18;
+	var r19;
+	var r20;
+	var r21;
+	var r22;
+	var r23;
+	var f0;
+	var f1;
+	var f2;
+	var f3;
+	var f4;
+	var f5;
+	var f6;
+	var f7;
+	var f8;
+var __label__ = 0;
+	i7 = sp + -40;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+if(!(r0 ==0)) //_LBB105_43
+{
+	r1 = heap32[(fp+1)];
+	r2 = heap32[(fp+2)];
+	r3 = heap32[(fp+3)];
+	f0 = heapFloat[(fp+4)];
+	r4 = heap32[(fp+5)];
+	r5 = heap32[(fp+6)];
+	r6 = heap32[(fp+7)];
+	r7 = gNumAlignedAllocs;
+	r7 = r7 >> 2;
+	r8 = heap32[(r7)];
+	r8 = (r8 + 1)|0;
+	heap32[(r7)] = r8;
+	heap32[(g0)] = 531;
+	malloc(i7);
+	r8 = r_g0;
+	if(r8 !=0) //_LBB105_3
+{
+	r9 = 0;
+	r10 = (r8 + 4)|0;
+	r9 = (r9 - r10)|0;
+	r9 = r9 & 15;
+	r9 = (r8 + r9)|0;
+	r10 = (r9 + 4)|0;
+	r9 = r9 >> 2;
+	heap32[(r9)] = r8;
+	r8 = r10;
+}
+	r9 = 0;
+_6: while(true){
+	r10 = r9 << 2;
+	r10 = (r8 + r10)|0;
+	r9 = (r9 + 1)|0;
+	r10 = r10 >> 2;
+	heap32[(r10)] = 0;
+if(!(r9 !=128)) //_LBB105_5
+{
+break _6;
+}
+}
+	r9 = 128;
+	r10 = 1;
+	r11 = 126;
+	r12 = r8 >> 2;
+	heap32[(r12)] = r0;
+	r0 = r9;
+	r12 = r10;
+_9: while(true){
+	r13 = r12;
+	r12 = (r13 + -1)|0;
+	r14 = r12 << 2;
+	r14 = (r8 + r14)|0;
+	r14 = r14 >> 2;
+	r14 = heap32[(r14)];
+	r15 = r14 >> 2;
+	r16 = r5 >> 2;
+	f1 = heapFloat[(r15+2)];
+	f2 = heapFloat[(r16+2)];
+	f3 = heapFloat[(r15+1)];
+	f4 = heapFloat[(r16+1)];
+	f5 = heapFloat[(r15)];
+	f6 = heapFloat[(r16)];
+	r16 = sp + -32;
+	f5 = f5-f6;
+	r17 = r16 >> 2;
+	f3 = f3-f4;
+	heapFloat[(fp+-8)] = f5;
+	f1 = f1-f2;
+	heapFloat[(r17+1)] = f3;
+	heapFloat[(r17+2)] = f1;
+	heap32[(r17+3)] = 0;
+	r18 = r4 >> 2;
+	f1 = heapFloat[(r15+6)];
+	f2 = heapFloat[(r18+2)];
+	f3 = heapFloat[(r15+5)];
+	f4 = heapFloat[(r18+1)];
+	f5 = heapFloat[(r15+4)];
+	f6 = heapFloat[(r18)];
+	f5 = f5-f6;
+	f3 = f3-f4;
+	heapFloat[(r17+4)] = f5;
+	f1 = f1-f2;
+	heapFloat[(r17+5)] = f3;
+	heapFloat[(r17+6)] = f1;
+	r18 = r3 >> 2;
+	heap32[(r17+7)] = 0;
+	r17 = heap32[(r18)];
+	r19 = heap32[(r18+1)];
+	r20 = (r10 - r19)|0;
+	r21 = r17 << 4;
+	r20 = r20 << 4;
+	r21 = (r16 + r21)|0;
+	r20 = (r16 + r20)|0;
+	r22 = r1 >> 2;
+	r21 = r21 >> 2;
+	r20 = r20 >> 2;
+	r23 = r2 >> 2;
+	f1 = heapFloat[(r21)];
+	f2 = heapFloat[(r22)];
+	f3 = heapFloat[(r20+1)];
+	f4 = heapFloat[(r22+1)];
+	f1 = f1-f2;
+	f5 = heapFloat[(r23)];
+	f3 = f3-f4;
+	f6 = heapFloat[(r23+1)];
+	f1 = f1*f5;
+	f3 = f3*f6;
+if(!(f1 >f3)) //_LBB105_9
+{
+	r17 = (r10 - r17)|0;
+	r17 = r17 << 4;
+	r19 = r19 << 4;
+	r17 = (r16 + r17)|0;
+	r19 = (r16 + r19)|0;
+	r17 = r17 >> 2;
+	r19 = r19 >> 2;
+	f7 = heapFloat[(r17)];
+	f8 = heapFloat[(r19+1)];
+	f2 = f7-f2;
+	f4 = f8-f4;
+	f2 = f2*f5;
+	f4 = f4*f6;
+	if(f4 <=f2) //_LBB105_10
+{
+	r17 = heap32[(r18+2)];
+	r18 = 1;
+	r18 = (r18 - r17)|0;
+	r18 = r18 << 4;
+	r18 = (r16 + r18)|0;
+	r18 = r18 >> 2;
+	f5 = heapFloat[(r18+2)];
+	f6 = heapFloat[(r22+2)];
+	f5 = f5-f6;
+	f7 = heapFloat[(r23+2)];
+	f1 = f1 < f4 ? f4 : f1;
+	f4 = f5*f7;
+if(!(f1 >f4)) //_LBB105_9
+{
+	r17 = r17 << 4;
+	r16 = (r16 + r17)|0;
+	r16 = r16 >> 2;
+	f5 = heapFloat[(r16+2)];
+	f5 = f5-f6;
+	f2 = f3 < f2 ? f3 : f2;
+	f3 = f5*f7;
+if(!(f3 >f2)) //_LBB105_9
+{
+	f1 = f1 < f3 ? f3 : f1;
+if(!(f1 >=f0)) //_LBB105_9
+{
+	f1 = f4 < f2 ? f4 : f2;
+	f2 =                         0;
+if(!(f1 <=f2)) //_LBB105_9
+{
+	r16 = heap32[(r15+10)];
+	if(r16 ==0) //_LBB105_39
+{
+	r13 = r6 >> 2;
+	r13 = heap32[(r13)];
+	r13 = r13 >> 2;
+	r13 = heap32[(r13+3)];
+	heap32[(g0)] = r6;
+	heap32[(g0+1)] = r14;
+	__FUNCTION_TABLE__[(r13)>>2](i7);
+}
+else{
+	if(r12 >r11) //_LBB105_17
+{
+	r14 = r0 << 1;
+_23: do {
+	if(r0 <=r14) //_LBB105_19
+{
+if(!(r0 >=r14)) //_LBB105_18
+{
+	if(r9 <r14) //_LBB105_22
+{
+	if(r14 !=0) //_LBB105_24
+{
+	r9 = heap32[(r7)];
+	r11 = r0 << 3;
+	r9 = (r9 + 1)|0;
+	r11 = r11 | 3;
+	heap32[(r7)] = r9;
+	r9 = (r11 + 16)|0;
+	heap32[(g0)] = r9;
+	malloc(i7);
+	r9 = r_g0;
+	if(r9 !=0) //_LBB105_26
+{
+	r11 = 0;
+	r12 = (r9 + 4)|0;
+	r11 = (r11 - r12)|0;
+	r11 = r11 & 15;
+	r11 = (r9 + r11)|0;
+	r12 = (r11 + 4)|0;
+	r11 = r11 >> 2;
+	heap32[(r11)] = r9;
+	r9 = r12;
+}
+}
+else{
+	r9 = 0;
+}
+if(!(r0 <1)) //_LBB105_30
+{
+	r11 = r8;
+	r12 = r9;
+	r16 = r0;
+_35: while(true){
+	r17 = r11 >> 2;
+	r16 = (r16 + -1)|0;
+	r18 = (r12 + 4)|0;
+	r11 = (r11 + 4)|0;
+	r12 = r12 >> 2;
+	r17 = heap32[(r17)];
+	heap32[(r12)] = r17;
+	r12 = r18;
+if(!(r16 !=0)) //_LBB105_29
+{
+break _35;
+}
+}
+}
+if(!(r8 ==0)) //_LBB105_32
+{
+	r11 = gNumAlignedFree;
+	r11 = r11 >> 2;
+	r12 = heap32[(r11)];
+	r12 = (r12 + 1)|0;
+	r8 = r8 >> 2;
+	heap32[(r11)] = r12;
+	r8 = heap32[(r8+-1)];
+	heap32[(g0)] = r8;
+	free(i7);
+}
+	if(r0 <r14) //_LBB105_34
+{
+	r8 = r9;
+	r9 = r14;
+}
+else{
+	r8 = r9;
+	r9 = r14;
+break _23;
+}
+}
+	r11 = r0;
+_45: while(true){
+	r12 = r0 << 2;
+	r12 = (r8 + r12)|0;
+	r11 = (r11 + -1)|0;
+	r0 = (r0 + 1)|0;
+	r12 = r12 >> 2;
+	heap32[(r12)] = 0;
+if(!(r11 !=0)) //_LBB105_36
+{
+break _23;
+}
+}
+}
+}
+} while(0);
+	r11 = (r14 + -2)|0;
+}
+else{
+	r14 = r0;
+}
+	r0 = r13 << 2;
+	r0 = (r8 + r0)|0;
+	r0 = r0 >> 2;
+	r12 = heap32[(r15+9)];
+	heap32[(r0+-1)] = r12;
+	r15 = heap32[(r15+10)];
+	r12 = (r13 + 1)|0;
+	heap32[(r0)] = r15;
+	r0 = r14;
+}
+}
+}
+}
+}
+}
+}
+if(!(r12 !=0)) //_LBB105_7
+{
+break _9;
+}
+}
+if(!(r8 ==0)) //_LBB105_43
+{
+	r0 = gNumAlignedFree;
+	r0 = r0 >> 2;
+	r1 = heap32[(r0)];
+	r1 = (r1 + 1)|0;
+	r2 = r8 >> 2;
+	heap32[(r0)] = r1;
+	r0 = heap32[(r2+-1)];
+	heap32[(g0)] = r0;
+	free(i7);
+}
+}
+	return;
+}
+
+function _ZN16btDbvtBroadphase7rayTestERK9btVector3S2_R23btBroadphaseRayCallbackS2_S2_(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+	var r6;
+	var r7;
+	var r8;
+	var f0;
+var __label__ = 0;
+	i7 = sp + -40;var g0 = i7>>2; // save stack
+	r0 = _ZTV19BroadphaseRayTester;
+	r1 = sp + -8;
+	r0 = (r0 + 8)|0;
+	r2 = heap32[(fp+3)];
+	r3 = heap32[(fp)];
+	r4 = r1 >> 2;
+	heap32[(fp+-2)] = r0;
+	heap32[(r4+1)] = r2;
+	r0 = r2 >> 2;
+	r3 = r3 >> 2;
+	f0 = heapFloat[(r0+8)];
+	r4 = heap32[(r3+1)];
+	r5 = heap32[(fp+1)];
+	r6 = (r2 + 4)|0;
+	r2 = (r2 + 20)|0;
+	r7 = heap32[(fp+4)];
+	r8 = heap32[(fp+5)];
+	heap32[(g0)] = r4;
+	heap32[(g0+1)] = r5;
+	heap32[(g0+2)] = r6;
+	heap32[(g0+3)] = r2;
+	heapFloat[(g0+4)] = f0;
+	heap32[(g0+5)] = r7;
+	heap32[(g0+6)] = r8;
+	heap32[(g0+7)] = r1;
+	_ZNK6btDbvt15rayTestInternalEPK10btDbvtNodeRK9btVector3S5_S5_PjfS5_S5_RNS_8ICollideE(i7);
+	f0 = heapFloat[(r0+8)];
+	r0 = heap32[(r3+11)];
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r5;
+	heap32[(g0+2)] = r6;
+	heap32[(g0+3)] = r2;
+	heapFloat[(g0+4)] = f0;
+	heap32[(g0+5)] = r7;
+	heap32[(g0+6)] = r8;
+	heap32[(g0+7)] = r1;
+	_ZNK6btDbvt15rayTestInternalEPK10btDbvtNodeRK9btVector3S5_S5_PjfS5_S5_RNS_8ICollideE(i7);
+	return;
+}
+
+function _ZN16btDbvtBroadphase12destroyProxyEP17btBroadphaseProxyP12btDispatcher(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+	var r6;
+	var r7;
+	var r8;
+var __label__ = 0;
+	i7 = sp + -16;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp+1)];
+	r1 = r0 >> 2;
+	r2 = heap32[(fp)];
+	r3 = heap32[(fp+2)];
+	r4 = heap32[(r1+12)];
+	r5 = heap32[(r1+15)];
+	if(r5 !=2) //_LBB107_4
+{
+	r5 = (r2 + 4)|0;
+	heap32[(g0)] = r5;
+	heap32[(g0+1)] = r4;
+	r5 = r2 >> 2;
+	_ZL10removeleafP6btDbvtP10btDbvtNode(i7);
+	r6 = heap32[(r5+2)];
+if(!(r6 ==0)) //_LBB107_6
+{
+	r7 = gNumAlignedFree;
+	r7 = r7 >> 2;
+	r8 = heap32[(r7)];
+	r8 = (r8 + 1)|0;
+	r6 = r6 >> 2;
+	heap32[(r7)] = r8;
+	r6 = heap32[(r6+-1)];
+	heap32[(g0)] = r6;
+	free(i7);
+}
+	heap32[(r5+2)] = r4;
+	r4 = heap32[(r5+4)];
+	r4 = (r4 + -1)|0;
+	heap32[(r5+4)] = r4;
+}
+else{
+	r5 = (r2 + 44)|0;
+	heap32[(g0)] = r5;
+	heap32[(g0+1)] = r4;
+	r5 = r2 >> 2;
+	_ZL10removeleafP6btDbvtP10btDbvtNode(i7);
+	r6 = heap32[(r5+12)];
+if(!(r6 ==0)) //_LBB107_3
+{
+	r7 = gNumAlignedFree;
+	r7 = r7 >> 2;
+	r8 = heap32[(r7)];
+	r8 = (r8 + 1)|0;
+	r6 = r6 >> 2;
+	heap32[(r7)] = r8;
+	r6 = heap32[(r6+-1)];
+	heap32[(g0)] = r6;
+	free(i7);
+}
+	heap32[(r5+12)] = r4;
+	r4 = heap32[(r5+14)];
+	r4 = (r4 + -1)|0;
+	heap32[(r5+14)] = r4;
+}
+	r4 = heap32[(r1+13)];
+	r5 = heap32[(r1+14)];
+	if(r4 ==0) //_LBB107_9
+{
+	r4 = heap32[(r1+15)];
+	r4 = r4 << 2;
+	r4 = (r2 + r4)|0;
+	r4 = r4 >> 2;
+	heap32[(r4+21)] = r5;
+}
+else{
+	r4 = r4 >> 2;
+	heap32[(r4+14)] = r5;
+}
+	r4 = heap32[(r1+14)];
+if(!(r4 ==0)) //_LBB107_12
+{
+	r4 = r4 >> 2;
+	r5 = heap32[(r1+13)];
+	heap32[(r4+13)] = r5;
+}
+	r4 = r2 >> 2;
+	r4 = heap32[(r4+24)];
+	r5 = r4 >> 2;
+	r5 = heap32[(r5)];
+	r5 = r5 >> 2;
+	r5 = heap32[(r5+4)];
+	heap32[(g0)] = r4;
+	heap32[(g0+1)] = r0;
+	heap32[(g0+2)] = r3;
+	__FUNCTION_TABLE__[(r5)>>2](i7);
+if(!(r0 ==0)) //_LBB107_14
+{
+	r0 = gNumAlignedFree;
+	r0 = r0 >> 2;
+	r3 = heap32[(r0)];
+	r3 = (r3 + 1)|0;
+	heap32[(r0)] = r3;
+	r0 = heap32[(r1+-1)];
+	heap32[(g0)] = r0;
+	free(i7);
+}
+	r0 = 1;
+	heap8[r2+154] = r0;
+	return;
+}
+
+function _ZN16btDbvtBroadphase25calculateOverlappingPairsEP12btDispatcher(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+	var r6;
+	var r7;
+	var r8;
+	var r9;
+	var r10;
+	var r11;
+	var r12;
+	var f0;
+	var f1;
+	var f2;
+	var f3;
+	var f4;
+	var f5;
+	var f6;
+	var f7;
+var __label__ = 0;
+	i7 = sp + -48;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = r0 >> 2;
+	r2 = heap32[(r1+4)];
+	r3 = heap32[(r1+28)];
+	r2 = (r3 * r2)|0;
+	r2 = (r2 / 100)|0;
+	r3 = (r0 + 4)|0;
+	r2 = (r2 + 1)|0;
+	heap32[(g0)] = r3;
+	heap32[(g0+1)] = r2;
+	_ZN6btDbvt19optimizeIncrementalEi(i7);
+	r2 = heap32[(r1+31)];
+if(!(r2 ==0)) //_LBB108_2
+{
+	r2 = heap32[(r1+14)];
+	r4 = heap32[(r1+27)];
+	r2 = (r4 * r2)|0;
+	r4 = (r2 / 100)|0;
+	r5 = (r0 + 44)|0;
+	r4 = (r4 + 1)|0;
+	heap32[(g0)] = r5;
+	heap32[(g0+1)] = r4;
+	_ZN6btDbvt19optimizeIncrementalEi(i7);
+	r2 = (r2 / -100)|0;
+	r4 = heap32[(r1+31)];
+	r2 = (r2 + r4)|0;
+	r2 = (r2 + -1)|0;
+	r4 = 0;
+	r2 = r2 < 0 ? r4 : r2;
+	heap32[(r1+31)] = r2;
+}
+	r2 = heap32[(r1+26)];
+	r2 = (r2 + 1)|0;
+	r4 = r2 >>> 31;
+	r4 = (r2 + r4)|0;
+	r4 = r4 & -2;
+	r2 = (r2 - r4)|0;
+	r4 = r2 << 2;
+	r4 = (r0 + r4)|0;
+	r4 = r4 >> 2;
+	heap32[(r1+26)] = r2;
+	r2 = heap32[(r4+21)];
+if(!(r2 ==0)) //_LBB108_20
+{
+	r4 = (r0 + 44)|0;
+_6: while(true){
+	r5 = r2 >> 2;
+	r6 = heap32[(r5+13)];
+	r7 = heap32[(r5+14)];
+	if(r6 ==0) //_LBB108_6
+{
+	r6 = heap32[(r5+15)];
+	r6 = r6 << 2;
+	r6 = (r0 + r6)|0;
+	r6 = r6 >> 2;
+	heap32[(r6+21)] = r7;
+}
+else{
+	r6 = r6 >> 2;
+	heap32[(r6+14)] = r7;
+}
+	r6 = heap32[(r5+14)];
+if(!(r6 ==0)) //_LBB108_9
+{
+	r6 = r6 >> 2;
+	r8 = heap32[(r5+13)];
+	heap32[(r6+13)] = r8;
+}
+	heap32[(r5+13)] = 0;
+	r6 = heap32[(r1+23)];
+	heap32[(r5+14)] = r6;
+	r6 = heap32[(r1+23)];
+if(!(r6 ==0)) //_LBB108_11
+{
+	r6 = r6 >> 2;
+	heap32[(r6+13)] = r2;
+}
+	heap32[(r1+23)] = r2;
+	r6 = heap32[(r5+12)];
+	heap32[(g0)] = r3;
+	heap32[(g0+1)] = r6;
+	_ZL10removeleafP6btDbvtP10btDbvtNode(i7);
+	r8 = heap32[(r1+2)];
+if(!(r8 ==0)) //_LBB108_13
+{
+	r9 = gNumAlignedFree;
+	r9 = r9 >> 2;
+	r10 = heap32[(r9)];
+	r10 = (r10 + 1)|0;
+	r8 = r8 >> 2;
+	heap32[(r9)] = r10;
+	r8 = heap32[(r8+-1)];
+	heap32[(g0)] = r8;
+	free(i7);
+}
+	heap32[(r1+2)] = r6;
+	r6 = heap32[(r1+4)];
+	r6 = (r6 + -1)|0;
+	heap32[(r1+4)] = r6;
+	r6 = heap32[(r1+12)];
+	f0 = heapFloat[(r5+4)];
+	f1 = heapFloat[(r5+5)];
+	f2 = heapFloat[(r5+6)];
+	f3 = heapFloat[(r5+7)];
+	f4 = heapFloat[(r5+8)];
+	f5 = heapFloat[(r5+9)];
+	f6 = heapFloat[(r5+10)];
+	f7 = heapFloat[(r5+11)];
+	if(r6 ==0) //_LBB108_15
+{
+	r6 = gNumAlignedAllocs;
+	r6 = r6 >> 2;
+	r8 = heap32[(r6)];
+	r8 = (r8 + 1)|0;
+	heap32[(r6)] = r8;
+	heap32[(g0)] = 63;
+	malloc(i7);
+	r6 = r_g0;
+	if(r6 !=0) //_LBB108_17
+{
+	r8 = 0;
+	r9 = (r6 + 4)|0;
+	r8 = (r8 - r9)|0;
+	r8 = r8 & 15;
+	r8 = (r6 + r8)|0;
+	r9 = (r8 + 4)|0;
+	r8 = r8 >> 2;
+	heap32[(r8)] = r6;
+	r6 = r9;
+}
+}
+else{
+	heap32[(r1+12)] = 0;
+}
+	r8 = r6 >> 2;
+	heap32[(r8+8)] = 0;
+	heap32[(r8+9)] = r2;
+	heap32[(r8+10)] = 0;
+	heapFloat[(r8)] = f0;
+	heapFloat[(r8+1)] = f1;
+	heapFloat[(r8+2)] = f2;
+	heapFloat[(r8+3)] = f3;
+	heapFloat[(r8+4)] = f4;
+	heapFloat[(r8+5)] = f5;
+	heapFloat[(r8+6)] = f6;
+	heapFloat[(r8+7)] = f7;
+	r2 = heap32[(r1+11)];
+	heap32[(g0)] = r4;
+	heap32[(g0+1)] = r2;
+	heap32[(g0+2)] = r6;
+	_ZL10insertleafP6btDbvtP10btDbvtNodeS2_(i7);
+	r2 = heap32[(r1+14)];
+	r2 = (r2 + 1)|0;
+	heap32[(r1+14)] = r2;
+	heap32[(r5+12)] = r6;
+	heap32[(r5+15)] = 2;
+	r2 = r7;
+if(!(r7 !=0)) //_LBB108_4
+{
+break _6;
+}
+}
+	r2 = heap32[(r1+14)];
+	r4 = 1;
+	heap32[(r1+31)] = r2;
+	heap8[r0+154] = r4;
+}
+	r2 = _ZTV18btDbvtTreeCollider;
+	r4 = sp + -32;
+	r2 = (r2 + 8)|0;
+	r5 = r4 >> 2;
+	heap32[(fp+-8)] = r2;
+	heap32[(r5+1)] = r0;
+	r5 = heapU8[r0+153];
+if(!(r5 ==0)) //_LBB108_23
+{
+	r5 = heap32[(r1+11)];
+	r6 = heap32[(r1+1)];
+	heap32[(g0)] = r3;
+	heap32[(g0+1)] = r6;
+	heap32[(g0+2)] = r5;
+	heap32[(g0+3)] = r4;
+	_ZN6btDbvt24collideTTpersistentStackEPK10btDbvtNodeS2_RNS_8ICollideE(i7);
+	r5 = heapU8[r0+153];
+if(!(r5 ==0)) //_LBB108_23
+{
+	r5 = heap32[(r1+1)];
+	heap32[(g0)] = r3;
+	heap32[(g0+1)] = r5;
+	heap32[(g0+2)] = r5;
+	heap32[(g0+3)] = r4;
+	_ZN6btDbvt24collideTTpersistentStackEPK10btDbvtNodeS2_RNS_8ICollideE(i7);
+}
+}
+	r3 = heap32[(fp+1)];
+	heap32[(fp+-8)] = r2;
+	r2 = heapU8[r0+154];
+_32: do {
+if(!(r2 ==0)) //_LBB108_40
+{
+	r2 = heap32[(r1+24)];
+	r4 = r2 >> 2;
+	r4 = heap32[(r4)];
+	r4 = r4 >> 2;
+	r4 = heap32[(r4+7)];
+	heap32[(g0)] = r2;
+	__FUNCTION_TABLE__[(r4)>>2](i7);
+	r2 = r_g0;
+	r4 = r2 >> 2;
+	r4 = heap32[(r4+1)];
+if(!(r4 <1)) //_LBB108_40
+{
+	r5 = heap32[(r1+29)];
+	r5 = (r5 * r4)|0;
+	r6 = heap32[(r1+30)];
+	r5 = (r5 / 100)|0;
+	r5 = r6 > r5 ? r6 : r5;
+	r5 = r4 < r5 ? r4 : r5;
+	if(r5 >0) //_LBB108_27
+{
+	r4 = 0;
+_37: while(true){
+	r6 = r2 >> 2;
+	r7 = heap32[(r1+36)];
+	r7 = (r7 + r4)|0;
+	r8 = heap32[(r6+1)];
+	r7 = (r7 % r8)|0;
+	r8 = heap32[(r6+3)];
+	r7 = r7 << 4;
+	r7 = (r8 + r7)|0;
+	r7 = r7 >> 2;
+	r8 = heap32[(r7+1)];
+	r7 = heap32[(r7)];
+	r9 = r8 >> 2;
+	r10 = r7 >> 2;
+	r9 = heap32[(r9+12)];
+	r10 = heap32[(r10+12)];
+	r10 = r10 >> 2;
+	r9 = r9 >> 2;
+	f0 = heapFloat[(r10)];
+	f1 = heapFloat[(r9+4)];
+	if(f0 >f1) //_LBB108_35
+{
+__label__ = 32;
+}
+else{
+	f0 = heapFloat[(r10+4)];
+	f1 = heapFloat[(r9)];
+	if(f0 <f1) //_LBB108_35
+{
+__label__ = 32;
+}
+else{
+	f0 = heapFloat[(r10+1)];
+	f1 = heapFloat[(r9+5)];
+	if(f0 >f1) //_LBB108_35
+{
+__label__ = 32;
+}
+else{
+	f0 = heapFloat[(r10+5)];
+	f1 = heapFloat[(r9+1)];
+	if(f0 <f1) //_LBB108_35
+{
+__label__ = 32;
+}
+else{
+	f0 = heapFloat[(r10+2)];
+	f1 = heapFloat[(r9+6)];
+	if(f0 >f1) //_LBB108_35
+{
+__label__ = 32;
+}
+else{
+	f0 = heapFloat[(r10+6)];
+	f1 = heapFloat[(r9+2)];
+	if(f0 <f1) //_LBB108_35
+{
+__label__ = 32;
+}
+else{
+__label__ = 33;
+}
+}
+}
+}
+}
+}
+if (__label__ == 32){
+	r9 = heap32[(r1+24)];
+	r10 = r9 >> 2;
+	r10 = heap32[(r10)];
+	r10 = r10 >> 2;
+	r10 = heap32[(r10+3)];
+	heap32[(g0)] = r9;
+	heap32[(g0+1)] = r7;
+	heap32[(g0+2)] = r8;
+	heap32[(g0+3)] = r3;
+	r5 = (r5 + -1)|0;
+	r4 = (r4 + -1)|0;
+	__FUNCTION_TABLE__[(r10)>>2](i7);
+}
+	r4 = (r4 + 1)|0;
+if(!(r4 <r5)) //_LBB108_28
+{
+break _37;
+}
+}
+	r4 = heap32[(r6+1)];
+	if(r4 <1) //_LBB108_39
+{
+	heap32[(r1+36)] = 0;
+break _32;
+}
+}
+	r2 = heap32[(r1+36)];
+	r2 = (r2 + r5)|0;
+	r2 = (r2 % r4)|0;
+	heap32[(r1+36)] = r2;
+}
+}
+} while(0);
+	r2 = heap32[(r1+35)];
+	r2 = (r2 + 1)|0;
+	heap32[(r1+35)] = r2;
+	r2 = 0;
+	heap32[(r1+30)] = 1;
+	heap8[r0+154] = r2;
+	r0 = heap32[(r1+32)];
+	if(r0 ==0) //_LBB108_42
+{
+	heap32[(r1+34)] = 0;
+	r4 = heap32[(r1+33)];
+}
+else{
+	r4 = heap32[(r1+33)];
+	f0 = uint(r4); //fuitos r4, f0
+	f1 = uint(r0); //fuitos r0, f1
+	f0 = f0/f1;
+	heapFloat[(r1+34)] = f0;
+}
+	r4 = r4 >>> 1;
+	r0 = r0 >>> 1;
+	heap32[(r1+33)] = r4;
+	heap32[(r1+32)] = r0;
+	r0 = heap32[(r1+24)];
+	r4 = r0 >> 2;
+	r4 = heap32[(r4)];
+	r4 = r4 >> 2;
+	r4 = heap32[(r4+14)];
+	heap32[(g0)] = r0;
+	__FUNCTION_TABLE__[(r4)>>2](i7);
+	r0 = r_g0;
+if(!(r0 ==0)) //_LBB108_65
+{
+	r0 = heap32[(r1+24)];
+	r4 = r0 >> 2;
+	r4 = heap32[(r4)];
+	r4 = r4 >> 2;
+	r4 = heap32[(r4+7)];
+	heap32[(g0)] = r0;
+	__FUNCTION_TABLE__[(r4)>>2](i7);
+	r0 = r_g0;
+	r4 = r0 >> 2;
+	r4 = heap32[(r4+1)];
+if(!(r4 <2)) //_LBB108_46
+{
+	r4 = (r4 + -1)|0;
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = 0;
+	heap32[(g0+2)] = r4;
+	_ZN20btAlignedObjectArrayI16btBroadphasePairE17quickSortInternalI29btBroadphasePairSortPredicateEEvT_ii(i7);
+}
+	r4 = r2;
+	r5 = r2;
+	r6 = r2;
+	r7 = r2;
+_61: while(true){
+	r8 = r0 >> 2;
+	r9 = heap32[(r8+1)];
+	if(r9 >r7) //_LBB108_47
+{
+	r8 = heap32[(r8+3)];
+	r9 = r7 << 4;
+	r9 = (r8 + r9)|0;
+	r9 = r9 >> 2;
+	r10 = heap32[(r9)];
+	r11 = r7 << 2;
+	r12 = heap32[(r9+1)];
+	if(r10 !=r4) //_LBB108_49
+{
+__label__ = 46;
+}
+else{
+	if(r12 ==r5) //_LBB108_56
+{
+	r4 = heap32[(r9+2)];
+	if(r4 ==0) //_LBB108_58
+{
+__label__ = 54;
+}
+else{
+__label__ = 53;
+break _61;
+}
+}
+else{
+__label__ = 46;
+}
+}
+if (__label__ == 46){
+	r4 = r12 >> 2;
+	r5 = r10 >> 2;
+	r4 = heap32[(r4+12)];
+	r5 = heap32[(r5+12)];
+	r5 = r5 >> 2;
+	r4 = r4 >> 2;
+	f0 = heapFloat[(r5)];
+	f1 = heapFloat[(r4+4)];
+	if(f0 >f1) //_LBB108_58
+{
+__label__ = 54;
+}
+else{
+	f0 = heapFloat[(r5+4)];
+	f1 = heapFloat[(r4)];
+	if(f0 <f1) //_LBB108_58
+{
+__label__ = 54;
+}
+else{
+	f0 = heapFloat[(r5+1)];
+	f1 = heapFloat[(r4+5)];
+	if(f0 >f1) //_LBB108_58
+{
+__label__ = 54;
+}
+else{
+	f0 = heapFloat[(r5+5)];
+	f1 = heapFloat[(r4+1)];
+	if(f0 <f1) //_LBB108_58
+{
+__label__ = 54;
+}
+else{
+	f0 = heapFloat[(r5+2)];
+	f1 = heapFloat[(r4+6)];
+	if(f0 >f1) //_LBB108_58
+{
+__label__ = 54;
+}
+else{
+	f0 = heapFloat[(r5+6)];
+	f1 = heapFloat[(r4+2)];
+	if(f0 <f1) //_LBB108_58
+{
+__label__ = 54;
+}
+else{
+__label__ = 55;
+}
+}
+}
+}
+}
+}
+}
+if (__label__ == 54){
+	r4 = heap32[(r1+24)];
+	r5 = r4 >> 2;
+	r5 = heap32[(r5)];
+	r5 = r5 >> 2;
+	r5 = heap32[(r5+8)];
+	r9 = (r8 + r2)|0;
+	r11 = r11 << 2;
+	heap32[(g0)] = r4;
+	heap32[(g0+1)] = r9;
+	heap32[(g0+2)] = r3;
+	r4 = (r8 + r11)|0;
+	r4 = r4 >> 2;
+	__FUNCTION_TABLE__[(r5)>>2](i7);
+	r6 = (r6 + 1)|0;
+	heap32[(r4)] = 0;
+	heap32[(r4+1)] = 0;
+}
+	r7 = (r7 + 1)|0;
+	r2 = (r2 + 16)|0;
+	r4 = r10;
+	r5 = r12;
+}
+else{
+__label__ = 57;
+break _61;
+}
+}
+switch(__label__ ){//multiple entries
+case 57:
+	if(r9 >1) //_LBB108_63
+{
+	r9 = (r9 + -1)|0;
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = 0;
+	heap32[(g0+2)] = r9;
+	_ZN20btAlignedObjectArrayI16btBroadphasePairE17quickSortInternalI29btBroadphasePairSortPredicateEEvT_ii(i7);
+	r9 = heap32[(r8+1)];
+}
+	r1 = sp + -16;
+	r2 = r1 >> 2;
+	heap32[(fp+-4)] = 0;
+	heap32[(r2+1)] = 0;
+	heap32[(r2+2)] = 0;
+	heap32[(r2+3)] = 0;
+	r2 = (r9 - r6)|0;
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r2;
+	heap32[(g0+2)] = r1;
+	_ZN20btAlignedObjectArrayI16btBroadphasePairE6resizeEiRKS0_(i7);
+break;
+case 53:
+	r8 = _2E_str314;
+	r0 = _2E_str18;
+	heap32[(g0)] = r8;
+	heap32[(g0+1)] = r0;
+	heap32[(g0+2)] = 469;
+	_assert(i7);
+break;
+}
+}
+	return;
+}
+
+function _ZN16btDbvtBroadphase7setAabbEP17btBroadphaseProxyRK9btVector3S4_P12btDispatcher(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+	var r6;
+	var r7;
+	var r8;
+	var r9;
+	var r10;
+	var r11;
+	var r12;
+	var f0;
+	var f1;
+	var f2;
+	var f3;
+	var f4;
+	var f5;
+	var f6;
+	var f7;
+	var f8;
+	var f9;
+	var f10;
+var __label__ = 0;
+	i7 = sp + -88;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp+2)];
+	r0 = r0 >> 2;
+	f0 = heapFloat[(r0)];
+	r1 = sp + -32;
+	heapFloat[(fp+-8)] = f0;
+	f1 = heapFloat[(r0+1)];
+	r2 = r1 >> 2;
+	heapFloat[(r2+1)] = f1;
+	f2 = heapFloat[(r0+2)];
+	heapFloat[(r2+2)] = f2;
+	f3 = heapFloat[(r0+3)];
+	r3 = heap32[(fp+3)];
+	r3 = r3 >> 2;
+	heapFloat[(r2+3)] = f3;
+	f4 = heapFloat[(r3)];
+	heapFloat[(r2+4)] = f4;
+	f5 = heapFloat[(r3+1)];
+	heapFloat[(r2+5)] = f5;
+	f6 = heapFloat[(r3+2)];
+	heapFloat[(r2+6)] = f6;
+	f7 = heapFloat[(r3+3)];
+	r4 = heap32[(fp+1)];
+	r5 = heap32[(fp)];
+	r6 = r4 >> 2;
+	heapFloat[(r2+7)] = f7;
+	r7 = heap32[(r6+15)];
+_1: do {
+	if(r7 !=2) //_LBB109_9
+{
+	r2 = r5 >> 2;
+	r8 = heap32[(r2+32)];
+	r8 = (r8 + 1)|0;
+	heap32[(r2+32)] = r8;
+	r8 = heap32[(r6+12)];
+	r7 = r8 >> 2;
+	f8 = heapFloat[(r7)];
+if(!(f8 >f4)) //_LBB109_24
+{
+	f8 = heapFloat[(r7+4)];
+if(!(f8 <f0)) //_LBB109_24
+{
+	f8 = heapFloat[(r7+1)];
+if(!(f8 >f5)) //_LBB109_24
+{
+	f8 = heapFloat[(r7+5)];
+if(!(f8 <f1)) //_LBB109_24
+{
+	f8 = heapFloat[(r7+2)];
+if(!(f8 >f6)) //_LBB109_24
+{
+	f8 = heapFloat[(r7+6)];
+if(!(f8 <f2)) //_LBB109_24
+{
+	f0 = heapFloat[(r6+4)];
+	f1 = heapFloat[(r6+8)];
+	f1 = f1-f0;
+	f2 =                       0.5;
+	f3 = heapFloat[(r6+5)];
+	f4 = heapFloat[(r6+9)];
+	f4 = f4-f3;
+	f5 = heapFloat[(r0+1)];
+	f6 = heapFloat[(r0)];
+	f1 = f1*f2;
+	f7 = heapFloat[(r2+25)];
+	f8 = heapFloat[(r0+2)];
+	f9 = heapFloat[(r6+6)];
+	f10 = heapFloat[(r6+10)];
+	r7 = sp + -48;
+	f10 = f10-f9;
+	f4 = f4*f2;
+	f1 = f1*f7;
+	f2 = f10*f2;
+	f4 = f4*f7;
+	r9 = r7 >> 2;
+	heapFloat[(fp+-12)] = f1;
+	f2 = f2*f7;
+	heapFloat[(r9+1)] = f4;
+	heapFloat[(r9+2)] = f2;
+	heap32[(r9+3)] = 0;
+	f0 = f6-f0;
+	f6 =                         0;
+if(!(f0 >=f6)) //_LBB109_17
+{
+	f0 = -f1;
+	heapFloat[(fp+-12)] = f0;
+}
+	f0 = f5-f3;
+if(!(f0 >=f6)) //_LBB109_19
+{
+	f0 = -f4;
+	heapFloat[(r9+1)] = f0;
+}
+	f0 = f8-f9;
+if(!(f0 >=f6)) //_LBB109_21
+{
+	f0 = -f2;
+	heapFloat[(r9+2)] = f0;
+}
+	r9 = (r5 + 4)|0;
+	heap32[(g0)] = r9;
+	heap32[(g0+1)] = r8;
+	heap32[(g0+2)] = r1;
+	heap32[(g0+3)] = r7;
+	heap32[(g0+4)] = 1028443341;
+	_ZN6btDbvt6updateEP10btDbvtNodeR12btDbvtAabbMmRK9btVector3f(i7);
+	r8 = r_g0;
+	if(r8 !=0) //_LBB109_23
+{
+	r7 = heap32[(r2+33)];
+	r8 = 1;
+	r7 = (r7 + 1)|0;
+	heap32[(r2+33)] = r7;
+break _1;
+}
+else{
+	r8 = 0;
+break _1;
+}
+}
+}
+}
+}
+}
+}
+	r1 = (r5 + 4)|0;
+	heap32[(g0)] = r1;
+	heap32[(g0+1)] = r8;
+	_ZL10removeleafP6btDbvtP10btDbvtNode(i7);
+	r9 = r_g0;
+_23: do {
+	if(r9 !=0) //_LBB109_26
+{
+	r11 = heap32[(r2+3)];
+	if(r11 <0) //_LBB109_31
+{
+	r10 = heap32[(r2+1)];
+}
+else{
+	r12 = -1;
+_28: while(true){
+	r10 = r9;
+	r12 = (r12 + 1)|0;
+	if(r11 >r12) //_LBB109_30
+{
+	r9 = r10 >> 2;
+	r9 = heap32[(r9+8)];
+	if(r9 ==0) //_LBB109_29
+{
+break _23;
+}
+}
+else{
+break _23;
+}
+}
+}
+}
+else{
+	r10 = 0;
+}
+} while(0);
+	heapFloat[(r7)] = f0;
+	heapFloat[(r7+1)] = f1;
+	heapFloat[(r7+2)] = f2;
+	heapFloat[(r7+3)] = f3;
+	heapFloat[(r7+4)] = f4;
+	heapFloat[(r7+5)] = f5;
+	heapFloat[(r7+6)] = f6;
+	heapFloat[(r7+7)] = f7;
+	heap32[(g0)] = r1;
+	heap32[(g0+1)] = r10;
+	heap32[(g0+2)] = r8;
+	_ZL10insertleafP6btDbvtP10btDbvtNodeS2_(i7);
+	r1 = heap32[(r2+33)];
+	r8 = 1;
+	r1 = (r1 + 1)|0;
+	heap32[(r2+33)] = r1;
+}
+else{
+	r1 = heap32[(r6+12)];
+	r7 = (r5 + 44)|0;
+	heap32[(g0)] = r7;
+	heap32[(g0+1)] = r1;
+	r7 = r5 >> 2;
+	_ZL10removeleafP6btDbvtP10btDbvtNode(i7);
+	r8 = heap32[(r7+12)];
+if(!(r8 ==0)) //_LBB109_3
+{
+	r9 = gNumAlignedFree;
+	r9 = r9 >> 2;
+	r10 = heap32[(r9)];
+	r10 = (r10 + 1)|0;
+	r8 = r8 >> 2;
+	heap32[(r9)] = r10;
+	r8 = heap32[(r8+-1)];
+	heap32[(g0)] = r8;
+	free(i7);
+}
+	heap32[(r7+12)] = r1;
+	r1 = heap32[(r7+14)];
+	r1 = (r1 + -1)|0;
+	heap32[(r7+14)] = r1;
+	r1 = heap32[(r7+2)];
+	r8 = (r5 + 4)|0;
+	if(r1 ==0) //_LBB109_5
+{
+	r1 = gNumAlignedAllocs;
+	r1 = r1 >> 2;
+	r9 = heap32[(r1)];
+	r9 = (r9 + 1)|0;
+	heap32[(r1)] = r9;
+	heap32[(g0)] = 63;
+	malloc(i7);
+	r1 = r_g0;
+	if(r1 !=0) //_LBB109_7
+{
+	r9 = 0;
+	r10 = (r1 + 4)|0;
+	r9 = (r9 - r10)|0;
+	r9 = r9 & 15;
+	r9 = (r1 + r9)|0;
+	r10 = (r9 + 4)|0;
+	r9 = r9 >> 2;
+	heap32[(r9)] = r1;
+	r1 = r10;
+}
+}
+else{
+	heap32[(r7+2)] = 0;
+}
+	r9 = r1 >> 2;
+	heap32[(r9+8)] = 0;
+	heap32[(r9+9)] = r4;
+	heap32[(r9+10)] = 0;
+	heap32[(r9)] = heap32[(fp+-8)];
+	heap32[(r9+1)] = heap32[(r2+1)];
+	heap32[(r9+2)] = heap32[(r2+2)];
+	heap32[(r9+3)] = heap32[(r2+3)];
+	heapFloat[(r9+4)] = f4;
+	heapFloat[(r9+5)] = f5;
+	heapFloat[(r9+6)] = f6;
+	heapFloat[(r9+7)] = f7;
+	r2 = heap32[(r7+1)];
+	heap32[(g0)] = r8;
+	heap32[(g0+1)] = r2;
+	heap32[(g0+2)] = r1;
+	_ZL10insertleafP6btDbvtP10btDbvtNodeS2_(i7);
+	r2 = heap32[(r7+4)];
+	r2 = (r2 + 1)|0;
+	r8 = 1;
+	heap32[(r7+4)] = r2;
+	heap32[(r6+12)] = r1;
+}
+} while(0);
+	r1 = heap32[(r6+13)];
+	r2 = heap32[(r6+14)];
+	if(r1 ==0) //_LBB109_35
+{
+	r1 = heap32[(r6+15)];
+	r1 = r1 << 2;
+	r1 = (r5 + r1)|0;
+	r1 = r1 >> 2;
+	heap32[(r1+21)] = r2;
+}
+else{
+	r1 = r1 >> 2;
+	heap32[(r1+14)] = r2;
+}
+	r1 = heap32[(r6+14)];
+if(!(r1 ==0)) //_LBB109_38
+{
+	r1 = r1 >> 2;
+	r2 = heap32[(r6+13)];
+	heap32[(r1+13)] = r2;
+}
+	heap32[(r6+4)] = heap32[(r0)];
+	heap32[(r6+5)] = heap32[(r0+1)];
+	heap32[(r6+6)] = heap32[(r0+2)];
+	heap32[(r6+7)] = heap32[(r0+3)];
+	heap32[(r6+8)] = heap32[(r3)];
+	heap32[(r6+9)] = heap32[(r3+1)];
+	heap32[(r6+10)] = heap32[(r3+2)];
+	r0 = r5 >> 2;
+	heap32[(r6+11)] = heap32[(r3+3)];
+	r1 = heap32[(r0+26)];
+	heap32[(r6+15)] = r1;
+	r1 = heap32[(r0+26)];
+	r1 = r1 << 2;
+	r1 = (r5 + r1)|0;
+	r1 = r1 >> 2;
+	heap32[(r6+13)] = 0;
+	r2 = heap32[(r1+21)];
+	heap32[(r6+14)] = r2;
+	r2 = heap32[(r1+21)];
+if(!(r2 ==0)) //_LBB109_40
+{
+	r2 = r2 >> 2;
+	heap32[(r2+13)] = r4;
+}
+	r2 = r8 & 1;
+	heap32[(r1+21)] = r4;
+if(!(r2 ==0)) //_LBB109_43
+{
+	r1 = 1;
+	heap8[r5+154] = r1;
+	r1 = heapU8[r5+153];
+if(!(r1 !=0)) //_LBB109_43
+{
+	r1 = _ZTV18btDbvtTreeCollider;
+	r2 = sp + -64;
+	r1 = (r1 + 8)|0;
+	r3 = r2 >> 2;
+	heap32[(fp+-16)] = r1;
+	heap32[(r3+1)] = r5;
+	r1 = heap32[(r6+12)];
+	r3 = heap32[(r0+11)];
+	r4 = (r5 + 44)|0;
+	heap32[(g0)] = r4;
+	heap32[(g0+1)] = r3;
+	heap32[(g0+2)] = r1;
+	heap32[(g0+3)] = r2;
+	_ZN6btDbvt24collideTTpersistentStackEPK10btDbvtNodeS2_RNS_8ICollideE(i7);
+	r1 = heap32[(r6+12)];
+	r0 = heap32[(r0+1)];
+	r3 = (r5 + 4)|0;
+	heap32[(g0)] = r3;
+	heap32[(g0+1)] = r0;
+	heap32[(g0+2)] = r1;
+	heap32[(g0+3)] = r2;
+	_ZN6btDbvt24collideTTpersistentStackEPK10btDbvtNodeS2_RNS_8ICollideE(i7);
+}
+}
+	return;
+}
+
+function _ZN16btDbvtBroadphaseD0Ev(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+	var r6;
+	var r7;
+var __label__ = 0;
+	i7 = sp + -8;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = _ZTV16btDbvtBroadphase;
+	r2 = r0 >> 2;
+	r1 = (r1 + 8)|0;
+	heap32[(r2)] = r1;
+	r1 = heapU8[r0+152];
+if(!(r1 ==0)) //_LBB110_3
+{
+	r1 = heap32[(r2+24)];
+	r3 = r1 >> 2;
+	r3 = heap32[(r3)];
+	r3 = r3 >> 2;
+	r3 = heap32[(r3)];
+	heap32[(g0)] = r1;
+	__FUNCTION_TABLE__[(r3)>>2](i7);
+	r1 = heap32[(r2+24)];
+if(!(r1 ==0)) //_LBB110_3
+{
+	r2 = gNumAlignedFree;
+	r2 = r2 >> 2;
+	r3 = heap32[(r2)];
+	r3 = (r3 + 1)|0;
+	r1 = r1 >> 2;
+	heap32[(r2)] = r3;
+	r1 = heap32[(r1+-1)];
+	heap32[(g0)] = r1;
+	free(i7);
+}
+}
+	r1 = (r0 + 4)|0;
+if(!(r1 ==0)) //_LBB110_15
+{
+	r2 = (r1 + 80)|0;
+if(!(r2 ==r1)) //_LBB110_15
+{
+	r1 = (r0 + 44)|0;
+	r2 = 0;
+_8: while(true){
+	r3 = (r0 + r2)|0;
+	r4 = r3 >> 2;
+	r5 = heap32[(r4+11)];
+if(!(r5 ==0)) //_LBB110_8
+{
+	r6 = (r1 + r2)|0;
+	heap32[(g0)] = r6;
+	heap32[(g0+1)] = r5;
+	_ZL17recursedeletenodeP6btDbvtP10btDbvtNode(i7);
+}
+	r5 = heap32[(r4+12)];
+if(!(r5 ==0)) //_LBB110_10
+{
+	r6 = gNumAlignedFree;
+	r6 = r6 >> 2;
+	r7 = heap32[(r6)];
+	r7 = (r7 + 1)|0;
+	r5 = r5 >> 2;
+	heap32[(r6)] = r7;
+	r5 = heap32[(r5+-1)];
+	heap32[(g0)] = r5;
+	free(i7);
+}
+	heap32[(r4+12)] = 0;
+	heap32[(r4+13)] = -1;
+	r5 = heap32[(r4+19)];
+if(!(r5 ==0)) //_LBB110_14
+{
+	r6 = heapU8[r3+80];
+if(!(r6 ==0)) //_LBB110_13
+{
+	r6 = gNumAlignedFree;
+	r6 = r6 >> 2;
+	r7 = heap32[(r6)];
+	r7 = (r7 + 1)|0;
+	r5 = r5 >> 2;
+	heap32[(r6)] = r7;
+	r5 = heap32[(r5+-1)];
+	heap32[(g0)] = r5;
+	free(i7);
+}
+	heap32[(r4+19)] = 0;
+}
+	r5 = 1;
+	heap32[(r4+15)] = 0;
+	heap8[r3+80] = r5;
+	heap32[(r4+19)] = 0;
+	r2 = (r2 + -40)|0;
+	heap32[(r4+17)] = 0;
+	heap32[(r4+18)] = 0;
+	if(r2 !=-80) //_LBB110_6
+{
+continue _8;
+}
+else{
+break _8;
+}
+}
+}
+}
+	heap32[(g0)] = r0;
+	_ZdlPv(i7);
+	return;
+}
+
+function _ZN16btDbvtBroadphaseD1Ev(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+	var r6;
+	var r7;
+var __label__ = 0;
+	i7 = sp + -8;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = _ZTV16btDbvtBroadphase;
+	r2 = r0 >> 2;
+	r1 = (r1 + 8)|0;
+	heap32[(r2)] = r1;
+	r1 = heapU8[r0+152];
+if(!(r1 ==0)) //_LBB111_3
+{
+	r1 = heap32[(r2+24)];
+	r3 = r1 >> 2;
+	r3 = heap32[(r3)];
+	r3 = r3 >> 2;
+	r3 = heap32[(r3)];
+	heap32[(g0)] = r1;
+	__FUNCTION_TABLE__[(r3)>>2](i7);
+	r1 = heap32[(r2+24)];
+if(!(r1 ==0)) //_LBB111_3
+{
+	r2 = gNumAlignedFree;
+	r2 = r2 >> 2;
+	r3 = heap32[(r2)];
+	r3 = (r3 + 1)|0;
+	r1 = r1 >> 2;
+	heap32[(r2)] = r3;
+	r1 = heap32[(r1+-1)];
+	heap32[(g0)] = r1;
+	free(i7);
+}
+}
+	r1 = (r0 + 4)|0;
+if(!(r1 ==0)) //_LBB111_15
+{
+	r2 = (r1 + 80)|0;
+if(!(r2 ==r1)) //_LBB111_15
+{
+	r1 = (r0 + 44)|0;
+	r2 = 0;
+_8: while(true){
+	r3 = (r0 + r2)|0;
+	r4 = r3 >> 2;
+	r5 = heap32[(r4+11)];
+if(!(r5 ==0)) //_LBB111_8
+{
+	r6 = (r1 + r2)|0;
+	heap32[(g0)] = r6;
+	heap32[(g0+1)] = r5;
+	_ZL17recursedeletenodeP6btDbvtP10btDbvtNode(i7);
+}
+	r5 = heap32[(r4+12)];
+if(!(r5 ==0)) //_LBB111_10
+{
+	r6 = gNumAlignedFree;
+	r6 = r6 >> 2;
+	r7 = heap32[(r6)];
+	r7 = (r7 + 1)|0;
+	r5 = r5 >> 2;
+	heap32[(r6)] = r7;
+	r5 = heap32[(r5+-1)];
+	heap32[(g0)] = r5;
+	free(i7);
+}
+	heap32[(r4+12)] = 0;
+	heap32[(r4+13)] = -1;
+	r5 = heap32[(r4+19)];
+if(!(r5 ==0)) //_LBB111_14
+{
+	r6 = heapU8[r3+80];
+if(!(r6 ==0)) //_LBB111_13
+{
+	r6 = gNumAlignedFree;
+	r6 = r6 >> 2;
+	r7 = heap32[(r6)];
+	r7 = (r7 + 1)|0;
+	r5 = r5 >> 2;
+	heap32[(r6)] = r7;
+	r5 = heap32[(r5+-1)];
+	heap32[(g0)] = r5;
+	free(i7);
+}
+	heap32[(r4+19)] = 0;
+}
+	r5 = 1;
+	heap32[(r4+15)] = 0;
+	heap8[r3+80] = r5;
+	heap32[(r4+19)] = 0;
+	r2 = (r2 + -40)|0;
+	heap32[(r4+17)] = 0;
+	heap32[(r4+18)] = 0;
+	if(r2 !=-80) //_LBB111_6
+{
+continue _8;
+}
+else{
+break _8;
+}
+}
+}
+}
+	return;
+}
+
+function _ZN12btDispatcherD0Ev(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+var __label__ = 0;
+	i7 = sp + -8;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = _ZTV12btDispatcher;
+	r2 = r0 >> 2;
+	r1 = (r1 + 8)|0;
+	heap32[(r2)] = r1;
+	heap32[(g0)] = r0;
+	_ZdlPv(i7);
+	return;
+}
+
+function _ZN12btDispatcherD1Ev(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+var __label__ = 0;
+	i7 = sp + 0;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = _ZTV12btDispatcher;
+	r0 = r0 >> 2;
+	r1 = (r1 + 8)|0;
+	heap32[(r0)] = r1;
+	return;
+}
+
+function _ZNK14btQuantizedBvh8quantizeEPtRK9btVector3i(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var f0;
+	var f1;
+	var f2;
+	var f3;
+	var f4;
+	var f5;
+var __label__ = 0;
+	i7 = sp + -16;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = heapU8[r0+60];
+	if(r1 !=0) //_LBB114_2
+{
+	r1 = heap32[(fp+2)];
+	r1 = r1 >> 2;
+	f0 = heapFloat[(r1)];
+	r0 = r0 >> 2;
+	f1 = heapFloat[(r0+5)];
+	if(f0 <=f1) //_LBB114_4
+{
+	f1 = heapFloat[(r1+1)];
+	f2 = heapFloat[(r0+6)];
+	if(f1 <=f2) //_LBB114_6
+{
+	f2 = heapFloat[(r1+2)];
+	f3 = heapFloat[(r0+7)];
+	if(f2 <=f3) //_LBB114_8
+{
+	f3 = heapFloat[(r0+1)];
+	if(f0 >=f3) //_LBB114_10
+{
+	f4 = heapFloat[(r0+2)];
+	if(f1 >=f4) //_LBB114_12
+{
+	f5 = heapFloat[(r0+3)];
+	if(f2 >=f5) //_LBB114_14
+{
+	r1 = heap32[(fp+1)];
+	r2 = heap32[(fp+3)];
+	f2 = f2-f5;
+	f5 = heapFloat[(r0+11)];
+	f1 = f1-f4;
+	f4 = heapFloat[(r0+10)];
+	f0 = f0-f3;
+	f3 = heapFloat[(r0+9)];
+	f2 = f2*f5;
+	f1 = f1*f4;
+	f0 = f0*f3;
+	if(r2 ==0) //_LBB114_16
+{
+	r0 = Math.floor(f0);
+	r2 = Math.floor(f1);
+	r0 = r0 & 65534;
+	r3 = Math.floor(f2);
+	r2 = r2 & 65534;
+	heap16[(r1)>>1] = r0;
+	r0 = r3 & 65534;
+}
+else{
+	f3 =                         1;
+	f0 = f0+f3;
+	f1 = f1+f3;
+	r0 = Math.floor(f0);
+	f0 = f2+f3;
+	r2 = Math.floor(f1);
+	r0 = r0 | 1;
+	r3 = Math.floor(f0);
+	r2 = r2 | 1;
+	heap16[(r1)>>1] = r0;
+	r0 = r3 | 1;
+}
+	heap16[(r1+2)>>1] = r2;
+	heap16[(r1+4)>>1] = r0;
+	return;
+}
+else{
+	r0 = _2E_str9;
+	r1 = _2E_str313;
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r1;
+	heap32[(g0+2)] = 361;
+	_assert(i7);
+}
+}
+else{
+	r0 = _2E_str820;
+	r1 = _2E_str313;
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r1;
+	heap32[(g0+2)] = 360;
+	_assert(i7);
+}
+}
+else{
+	r0 = _2E_str717;
+	r1 = _2E_str313;
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r1;
+	heap32[(g0+2)] = 359;
+	_assert(i7);
+}
+}
+else{
+	r0 = _2E_str616;
+	r1 = _2E_str313;
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r1;
+	heap32[(g0+2)] = 357;
+	_assert(i7);
+}
+}
+else{
+	r0 = _2E_str515;
+	r1 = _2E_str313;
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r1;
+	heap32[(g0+2)] = 356;
+	_assert(i7);
+}
+}
+else{
+	r0 = _2E_str414;
+	r1 = _2E_str313;
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r1;
+	heap32[(g0+2)] = 355;
+	_assert(i7);
+}
+}
+else{
+	r0 = _2E_str212;
+	r1 = _2E_str313;
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r1;
+	heap32[(g0+2)] = 353;
+	_assert(i7);
+}
+}
+
+function _ZN20btAlignedObjectArrayI18btQuantizedBvhNodeE7reserveEi(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+	var r6;
+	var r7;
+	var r8;
+	var r9;
+	var r10;
+var __label__ = 0;
+	i7 = sp + -8;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = heap32[(fp+1)];
+	r2 = r0 >> 2;
+	r3 = heap32[(r2+2)];
+if(!(r3 >=r1)) //_LBB115_16
+{
+	if(r1 !=0) //_LBB115_3
+{
+	r3 = gNumAlignedAllocs;
+	r3 = r3 >> 2;
+	r4 = heap32[(r3)];
+	r5 = r1 << 4;
+	r4 = (r4 + 1)|0;
+	r5 = r5 | 3;
+	heap32[(r3)] = r4;
+	r3 = (r5 + 16)|0;
+	heap32[(g0)] = r3;
+	malloc(i7);
+	r3 = r_g0;
+	if(r3 !=0) //_LBB115_5
+{
+	r4 = 0;
+	r5 = (r3 + 4)|0;
+	r4 = (r4 - r5)|0;
+	r4 = r4 & 15;
+	r4 = (r3 + r4)|0;
+	r5 = (r4 + 4)|0;
+	r4 = r4 >> 2;
+	heap32[(r4)] = r3;
+	r3 = r5;
+}
+}
+else{
+	r3 = 0;
+}
+	r4 = heap32[(r2+1)];
+	r5 = (r0 + 12)|0;
+	if(r4 <1) //_LBB115_8
+{
+	r4 = r5 >> 2;
+	r7 = heap32[(r4)];
+}
+else{
+	r6 = 0;
+_11: while(true){
+	r7 = r5 >> 2;
+	r7 = heap32[(r7)];
+	r8 = r6 << 4;
+	r9 = heapU16[(r7+r8)>>1];
+	r10 = (r7 + r8)|0;
+	heap16[(r3+r8)>>1] = r9;
+	r8 = (r3 + r8)|0;
+	r9 = heapU16[(r10+2)>>1];
+	heap16[(r8+2)>>1] = r9;
+	r9 = heapU16[(r10+4)>>1];
+	heap16[(r8+4)>>1] = r9;
+	r9 = heapU16[(r10+6)>>1];
+	heap16[(r8+6)>>1] = r9;
+	r9 = heapU16[(r10+8)>>1];
+	heap16[(r8+8)>>1] = r9;
+	r9 = heapU16[(r10+10)>>1];
+	r10 = r10 >> 2;
+	heap16[(r8+10)>>1] = r9;
+	r6 = (r6 + 1)|0;
+	r8 = r8 >> 2;
+	r9 = heap32[(r10+3)];
+	heap32[(r8+3)] = r9;
+if(!(r4 !=r6)) //_LBB115_9
+{
+break _11;
+}
+}
+	r5 = (r0 + 12)|0;
+}
+if(!(r7 ==0)) //_LBB115_15
+{
+	r4 = heapU8[r0+16];
+if(!(r4 ==0)) //_LBB115_14
+{
+	r4 = gNumAlignedFree;
+	r4 = r4 >> 2;
+	r6 = heap32[(r4)];
+	r6 = (r6 + 1)|0;
+	r7 = r7 >> 2;
+	heap32[(r4)] = r6;
+	r4 = heap32[(r7+-1)];
+	heap32[(g0)] = r4;
+	free(i7);
+}
+	r4 = r5 >> 2;
+	heap32[(r4)] = 0;
+}
+	r4 = 1;
+	r5 = r5 >> 2;
+	heap8[r0+16] = r4;
+	heap32[(r5)] = r3;
+	heap32[(r2+2)] = r1;
+}
+	return;
+}
+
+function _ZN28btHashedOverlappingPairCache23getOverlappingPairArrayEv(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+var __label__ = 0;
+	i7 = sp + 0;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r0 = (r0 + 4)|0;
+	r_g0 = r0;
+	return;
+}
+
+function _ZN28btHashedOverlappingPairCache24setOverlapFilterCallbackEP23btOverlapFilterCallback(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+var __label__ = 0;
+	i7 = sp + 0;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r0 = r0 >> 2;
+	r1 = heap32[(fp+1)];
+	heap32[(r0+6)] = r1;
+	return;
+}
+
+function _ZN28btHashedOverlappingPairCache18hasDeferredRemovalEv(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+var __label__ = 0;
+	i7 = sp + 0;var g0 = i7>>2; // save stack
+	r0 = 0;
+	r_g0 = r0;
+	return;
+}
+
+function _ZN28btHashedOverlappingPairCache28setInternalGhostPairCallbackEP25btOverlappingPairCallback(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+var __label__ = 0;
+	i7 = sp + 0;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r0 = r0 >> 2;
+	r1 = heap32[(fp+1)];
+	heap32[(r0+18)] = r1;
+	return;
+}
+
+function _ZN28btHashedOverlappingPairCache20cleanOverlappingPairER16btBroadphasePairP12btDispatcher(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+var __label__ = 0;
+	i7 = sp + -8;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp+1)];
+	r0 = r0 >> 2;
+	r1 = heap32[(r0+2)];
+if(!(r1 ==0)) //_LBB120_2
+{
+	r2 = heap32[(fp+2)];
+	r3 = r1 >> 2;
+	r3 = heap32[(r3)];
+	r3 = r3 >> 2;
+	r3 = heap32[(r3)];
+	heap32[(g0)] = r1;
+	__FUNCTION_TABLE__[(r3)>>2](i7);
+	r1 = r2 >> 2;
+	r1 = heap32[(r1)];
+	r1 = r1 >> 2;
+	r1 = heap32[(r1+13)];
+	r3 = heap32[(r0+2)];
+	heap32[(g0)] = r2;
+	heap32[(g0+1)] = r3;
+	__FUNCTION_TABLE__[(r1)>>2](i7);
+	heap32[(r0+2)] = 0;
+}
+	return;
+}
+
+function _ZZN28btHashedOverlappingPairCache19cleanProxyFromPairsEP17btBroadphaseProxyP12btDispatcherEN17CleanPairCallbackD1Ev(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+var __label__ = 0;
+	i7 = sp + 0;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = _ZTVZN28btHashedOverlappingPairCache19cleanProxyFromPairsEP17btBroadphaseProxyP12btDispatcherE17CleanPairCallback;
+	r0 = r0 >> 2;
+	r1 = (r1 + 8)|0;
+	heap32[(r0)] = r1;
+	return;
+}
+
+function _ZZN28btHashedOverlappingPairCache19cleanProxyFromPairsEP17btBroadphaseProxyP12btDispatcherEN17CleanPairCallbackD0Ev(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+var __label__ = 0;
+	i7 = sp + -8;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = _ZTVZN28btHashedOverlappingPairCache19cleanProxyFromPairsEP17btBroadphaseProxyP12btDispatcherE17CleanPairCallback;
+	r2 = r0 >> 2;
+	r1 = (r1 + 8)|0;
+	heap32[(r2)] = r1;
+	heap32[(g0)] = r0;
+	_ZdlPv(i7);
+	return;
+}
+
+function _ZZN28btHashedOverlappingPairCache19cleanProxyFromPairsEP17btBroadphaseProxyP12btDispatcherEN17CleanPairCallback14processOverlapER16btBroadphasePair(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+var __label__ = 0;
+	i7 = sp + -16;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r0 = r0 >> 2;
+	r1 = heap32[(fp+1)];
+	r2 = heap32[(r0+1)];
+	r3 = r1 >> 2;
+	r4 = heap32[(r3)];
+	if(r4 ==r2) //_LBB123_2
+{
+__label__ = 2;
+}
+else{
+	r3 = heap32[(r3+1)];
+	if(r3 !=r2) //_LBB123_3
+{
+__label__ = 3;
+}
+else{
+__label__ = 2;
+}
+}
+if (__label__ == 2){
+	r2 = heap32[(r0+2)];
+	r3 = r2 >> 2;
+	r3 = heap32[(r3)];
+	r3 = r3 >> 2;
+	r3 = heap32[(r3+8)];
+	r0 = heap32[(r0+3)];
+	heap32[(g0)] = r2;
+	heap32[(g0+1)] = r1;
+	heap32[(g0+2)] = r0;
+	__FUNCTION_TABLE__[(r3)>>2](i7);
+}
+	r0 = 0;
+	r_g0 = r0;
+	return;
+}
+
+function _ZZN28btHashedOverlappingPairCache37removeOverlappingPairsContainingProxyEP17btBroadphaseProxyP12btDispatcherEN18RemovePairCallbackD1Ev(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+var __label__ = 0;
+	i7 = sp + 0;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = _ZTVZN28btHashedOverlappingPairCache37removeOverlappingPairsContainingProxyEP17btBroadphaseProxyP12btDispatcherE18RemovePairCallback;
+	r0 = r0 >> 2;
+	r1 = (r1 + 8)|0;
+	heap32[(r0)] = r1;
+	return;
+}
+
+function _ZZN28btHashedOverlappingPairCache37removeOverlappingPairsContainingProxyEP17btBroadphaseProxyP12btDispatcherEN18RemovePairCallbackD0Ev(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+var __label__ = 0;
+	i7 = sp + -8;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = _ZTVZN28btHashedOverlappingPairCache37removeOverlappingPairsContainingProxyEP17btBroadphaseProxyP12btDispatcherE18RemovePairCallback;
+	r2 = r0 >> 2;
+	r1 = (r1 + 8)|0;
+	heap32[(r2)] = r1;
+	heap32[(g0)] = r0;
+	_ZdlPv(i7);
+	return;
+}
+
+function _ZZN28btHashedOverlappingPairCache37removeOverlappingPairsContainingProxyEP17btBroadphaseProxyP12btDispatcherEN18RemovePairCallback14processOverlapER16btBroadphasePair(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+var __label__ = 0;
+	i7 = sp + 0;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r0 = r0 >> 2;
+	r1 = heap32[(fp+1)];
+	r0 = heap32[(r0+1)];
+	r1 = r1 >> 2;
+	r2 = heap32[(r1)];
+	if(r2 ==r0) //_LBB126_2
+{
+	r0 = 1;
+	r_g0 = r0;
+	return;
+}
+else{
+	r1 = heap32[(r1+1)];
+	r0 = r1 == r0;
+	r0 = r0 & 1;
+	r_g0 = r0;
+	return;
+}
+}
+
+function _ZN28btHashedOverlappingPairCache26getOverlappingPairArrayPtrEv(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+var __label__ = 0;
+	i7 = sp + 0;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r0 = r0 >> 2;
+	r0 = heap32[(r0+4)];
+	r_g0 = r0;
+	return;
+}
+
+function _ZNK28btHashedOverlappingPairCache26getOverlappingPairArrayPtrEv(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+var __label__ = 0;
+	i7 = sp + 0;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r0 = r0 >> 2;
+	r0 = heap32[(r0+4)];
+	r_g0 = r0;
+	return;
+}
+
+function _ZNK28btHashedOverlappingPairCache22getNumOverlappingPairsEv(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+var __label__ = 0;
+	i7 = sp + 0;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r0 = r0 >> 2;
+	r0 = heap32[(r0+2)];
+	r_g0 = r0;
+	return;
+}
+
+function _ZN28btHashedOverlappingPairCache26processAllOverlappingPairsEP17btOverlapCallbackP12btDispatcher(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+	var r6;
+	var r7;
+	var r8;
+	var r9;
+var __label__ = 0;
+	i7 = sp + -16;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = heap32[(fp+1)];
+	r2 = heap32[(fp+2)];
+	r3 = 0;
+	r4 = r3;
+_1: while(true){
+	r5 = r4 << 2;
+_3: while(true){
+	r6 = r0 >> 2;
+	r7 = heap32[(r6+2)];
+	if(r7 >r4) //_LBB130_1
+{
+	r7 = r1 >> 2;
+	r7 = heap32[(r7)];
+	r7 = r7 >> 2;
+	r8 = heap32[(r6+4)];
+	r7 = heap32[(r7+2)];
+	r9 = (r8 + r3)|0;
+	heap32[(g0)] = r1;
+	heap32[(g0+1)] = r9;
+	__FUNCTION_TABLE__[(r7)>>2](i7);
+	r7 = r_g0;
+	if(r7 ==0) //_LBB130_3
+{
+break _3;
+}
+else{
+	r7 = r5 << 2;
+	r6 = heap32[(r6)];
+	r7 = (r8 + r7)|0;
+	r7 = r7 >> 2;
+	r6 = r6 >> 2;
+	r6 = heap32[(r6+3)];
+	r8 = heap32[(r7+1)];
+	r7 = heap32[(r7)];
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r7;
+	heap32[(g0+2)] = r8;
+	heap32[(g0+3)] = r2;
+	r7 = gOverlappingPairs;
+	r7 = r7 >> 2;
+	__FUNCTION_TABLE__[(r6)>>2](i7);
+	r6 = heap32[(r7)];
+	r6 = (r6 + -1)|0;
+	heap32[(r7)] = r6;
+continue _3;
+}
+}
+else{
+break _1;
+}
+}
+	r4 = (r4 + 1)|0;
+	r3 = (r3 + 16)|0;
+continue _1;
+}
+	return;
+}
+
+function _ZN28btHashedOverlappingPairCache37removeOverlappingPairsContainingProxyEP17btBroadphaseProxyP12btDispatcher(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+var __label__ = 0;
+	i7 = sp + -24;var g0 = i7>>2; // save stack
+	r0 = _ZTVZN28btHashedOverlappingPairCache37removeOverlappingPairsContainingProxyEP17btBroadphaseProxyP12btDispatcherE18RemovePairCallback;
+	r1 = sp + -8;
+	r0 = (r0 + 8)|0;
+	r2 = heap32[(fp)];
+	r3 = r1 >> 2;
+	r4 = heap32[(fp+1)];
+	heap32[(fp+-2)] = r0;
+	r0 = r2 >> 2;
+	heap32[(r3+1)] = r4;
+	r0 = heap32[(r0)];
+	r0 = r0 >> 2;
+	r0 = heap32[(r0+12)];
+	r3 = heap32[(fp+2)];
+	heap32[(g0)] = r2;
+	heap32[(g0+1)] = r1;
+	heap32[(g0+2)] = r3;
+	__FUNCTION_TABLE__[(r0)>>2](i7);
+	return;
+}
+
+function _ZN28btHashedOverlappingPairCache19cleanProxyFromPairsEP17btBroadphaseProxyP12btDispatcher(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+var __label__ = 0;
+	i7 = sp + -32;var g0 = i7>>2; // save stack
+	r0 = _ZTVZN28btHashedOverlappingPairCache19cleanProxyFromPairsEP17btBroadphaseProxyP12btDispatcherE17CleanPairCallback;
+	r1 = sp + -16;
+	r0 = (r0 + 8)|0;
+	r2 = r1 >> 2;
+	r3 = heap32[(fp+1)];
+	heap32[(fp+-4)] = r0;
+	r0 = heap32[(fp)];
+	heap32[(r2+1)] = r3;
+	r3 = heap32[(fp+2)];
+	heap32[(r2+2)] = r0;
+	r4 = r0 >> 2;
+	heap32[(r2+3)] = r3;
+	r2 = heap32[(r4)];
+	r2 = r2 >> 2;
+	r2 = heap32[(r2+12)];
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r1;
+	heap32[(g0+2)] = r3;
+	__FUNCTION_TABLE__[(r2)>>2](i7);
+	return;
+}
+
+function _ZN28btHashedOverlappingPairCacheD0Ev(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+var __label__ = 0;
+	i7 = sp + -8;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = _ZTV28btHashedOverlappingPairCache;
+	r2 = r0 >> 2;
+	r1 = (r1 + 8)|0;
+	heap32[(r2)] = r1;
+	r1 = heap32[(r2+16)];
+if(!(r1 ==0)) //_LBB133_4
+{
+	r3 = heapU8[r0+68];
+if(!(r3 ==0)) //_LBB133_3
+{
+	r3 = gNumAlignedFree;
+	r3 = r3 >> 2;
+	r4 = heap32[(r3)];
+	r4 = (r4 + 1)|0;
+	r1 = r1 >> 2;
+	heap32[(r3)] = r4;
+	r1 = heap32[(r1+-1)];
+	heap32[(g0)] = r1;
+	free(i7);
+}
+	heap32[(r2+16)] = 0;
+}
+	r1 = 1;
+	heap8[r0+68] = r1;
+	heap32[(r2+16)] = 0;
+	heap32[(r2+14)] = 0;
+	heap32[(r2+15)] = 0;
+	r3 = heap32[(r2+11)];
+if(!(r3 ==0)) //_LBB133_8
+{
+	r4 = heapU8[r0+48];
+if(!(r4 ==0)) //_LBB133_7
+{
+	r4 = gNumAlignedFree;
+	r4 = r4 >> 2;
+	r5 = heap32[(r4)];
+	r5 = (r5 + 1)|0;
+	r3 = r3 >> 2;
+	heap32[(r4)] = r5;
+	r3 = heap32[(r3+-1)];
+	heap32[(g0)] = r3;
+	free(i7);
+}
+	heap32[(r2+11)] = 0;
+}
+	heap8[r0+48] = r1;
+	heap32[(r2+11)] = 0;
+	heap32[(r2+9)] = 0;
+	heap32[(r2+10)] = 0;
+	r3 = heap32[(r2+4)];
+if(!(r3 ==0)) //_LBB133_12
+{
+	r4 = heapU8[r0+20];
+if(!(r4 ==0)) //_LBB133_11
+{
+	r4 = gNumAlignedFree;
+	r4 = r4 >> 2;
+	r5 = heap32[(r4)];
+	r5 = (r5 + 1)|0;
+	r3 = r3 >> 2;
+	heap32[(r4)] = r5;
+	r3 = heap32[(r3+-1)];
+	heap32[(g0)] = r3;
+	free(i7);
+}
+	heap32[(r2+4)] = 0;
+}
+	heap8[r0+20] = r1;
+	heap32[(r2+4)] = 0;
+	heap32[(r2+2)] = 0;
+	heap32[(r2+3)] = 0;
+	heap32[(g0)] = r0;
+	_ZdlPv(i7);
+	return;
+}
+
+function _ZN28btHashedOverlappingPairCacheD1Ev(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+var __label__ = 0;
+	i7 = sp + -8;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = _ZTV28btHashedOverlappingPairCache;
+	r2 = r0 >> 2;
+	r1 = (r1 + 8)|0;
+	heap32[(r2)] = r1;
+	r1 = heap32[(r2+16)];
+if(!(r1 ==0)) //_LBB134_4
+{
+	r3 = heapU8[r0+68];
+if(!(r3 ==0)) //_LBB134_3
+{
+	r3 = gNumAlignedFree;
+	r3 = r3 >> 2;
+	r4 = heap32[(r3)];
+	r4 = (r4 + 1)|0;
+	r1 = r1 >> 2;
+	heap32[(r3)] = r4;
+	r1 = heap32[(r1+-1)];
+	heap32[(g0)] = r1;
+	free(i7);
+}
+	heap32[(r2+16)] = 0;
+}
+	r1 = 1;
+	heap8[r0+68] = r1;
+	heap32[(r2+16)] = 0;
+	heap32[(r2+14)] = 0;
+	heap32[(r2+15)] = 0;
+	r3 = heap32[(r2+11)];
+if(!(r3 ==0)) //_LBB134_8
+{
+	r4 = heapU8[r0+48];
+if(!(r4 ==0)) //_LBB134_7
+{
+	r4 = gNumAlignedFree;
+	r4 = r4 >> 2;
+	r5 = heap32[(r4)];
+	r5 = (r5 + 1)|0;
+	r3 = r3 >> 2;
+	heap32[(r4)] = r5;
+	r3 = heap32[(r3+-1)];
+	heap32[(g0)] = r3;
+	free(i7);
+}
+	heap32[(r2+11)] = 0;
+}
+	heap8[r0+48] = r1;
+	heap32[(r2+11)] = 0;
+	heap32[(r2+9)] = 0;
+	heap32[(r2+10)] = 0;
+	r3 = heap32[(r2+4)];
+if(!(r3 ==0)) //_LBB134_12
+{
+	r4 = heapU8[r0+20];
+if(!(r4 ==0)) //_LBB134_11
+{
+	r4 = gNumAlignedFree;
+	r4 = r4 >> 2;
+	r5 = heap32[(r4)];
+	r5 = (r5 + 1)|0;
+	r3 = r3 >> 2;
+	heap32[(r4)] = r5;
+	r3 = heap32[(r3+-1)];
+	heap32[(g0)] = r3;
+	free(i7);
+}
+	heap32[(r2+4)] = 0;
+}
+	heap8[r0+20] = r1;
+	heap32[(r2+4)] = 0;
+	heap32[(r2+2)] = 0;
+	heap32[(r2+3)] = 0;
+	return;
+}
+
+function _ZN28btHashedOverlappingPairCache18addOverlappingPairEP17btBroadphaseProxyS1_(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+	var r6;
+	var r7;
+	var r8;
+	var r9;
+	var r10;
+	var r11;
+	var r12;
+	var r13;
+	var r14;
+var __label__ = 0;
+	i7 = sp + -16;var g0 = i7>>2; // save stack
+	r0 = gAddedPairs;
+	r0 = r0 >> 2;
+	r1 = heap32[(r0)];
+	r2 = heap32[(fp)];
+	r1 = (r1 + 1)|0;
+	r3 = r2 >> 2;
+	heap32[(r0)] = r1;
+	r0 = heap32[(r3+6)];
+	r1 = heap32[(fp+1)];
+	r4 = heap32[(fp+2)];
+	if(r0 ==0) //_LBB135_2
+{
+	r0 = heapU16[(r4+6)>>1];
+	r5 = heapU16[(r1+4)>>1];
+	r0 = r0 & r5;
+	r0 = r0 & 65535;
+	if(r0 ==0) //_LBB135_25
+{
+__label__ = 23;
+}
+else{
+	r0 = heapU16[(r1+6)>>1];
+	r5 = heapU16[(r4+4)>>1];
+	r0 = r0 & r5;
+	r0 = r0 & 65535;
+	r5 = 0;
+	r0 = r0 != r5;
+	r0 = r0 & 1;
+__label__ = 4;
+}
+}
+else{
+	r5 = r0 >> 2;
+	r5 = heap32[(r5)];
+	r5 = r5 >> 2;
+	r5 = heap32[(r5+2)];
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r1;
+	heap32[(g0+2)] = r4;
+	__FUNCTION_TABLE__[(r5)>>2](i7);
+	r0 = r_g0;
+__label__ = 4;
+}
+if (__label__ == 4){
+	r0 = r0 & 255;
+if(!(r0 ==0)) //_LBB135_25
+{
+	r0 = r1 >> 2;
+	r5 = r4 >> 2;
+	r0 = heap32[(r0+3)];
+	r5 = heap32[(r5+3)];
+	r6 = r0 > r5 ? r1 : r4;
+	r0 = r0 > r5 ? r4 : r1;
+	r1 = r6 >> 2;
+	r4 = heap32[(r1+3)];
+	r5 = r0 >> 2;
+	r7 = heap32[(r5+3)];
+	r8 = r4 << 16;
+	r8 = r8 | r7;
+	r9 = r8 << 15;
+	r9 = r9 ^ -1;
+	r8 = (r8 + r9)|0;
+	r9 = r8 >> 10;
+	r8 = r9 ^ r8;
+	r8 = (r8 * 9)|0;
+	r9 = r8 >> 6;
+	r8 = r9 ^ r8;
+	r9 = r8 << 11;
+	r9 = r9 ^ -1;
+	r8 = (r8 + r9)|0;
+	r9 = heap32[(r3+3)];
+	r10 = r8 >> 16;
+	r8 = r10 ^ r8;
+	r10 = (r9 + -1)|0;
+	r10 = r8 & r10;
+	r11 = heap32[(r3+11)];
+	r12 = r10 << 2;
+	r11 = (r11 + r12)|0;
+_8: while(true){
+	r11 = r11 >> 2;
+	r11 = heap32[(r11)];
+	if(r11 ==-1) //_LBB135_14
+{
+__label__ = 13;
+break _8;
+}
+else{
+	r12 = heap32[(r3+4)];
+	r13 = r11 << 4;
+	r12 = (r12 + r13)|0;
+	r13 = r12 >> 2;
+	r14 = heap32[(r13)];
+	r14 = r14 >> 2;
+	r14 = heap32[(r14+3)];
+if(!(r14 !=r7)) //_LBB135_6
+{
+	r13 = heap32[(r13+1)];
+	r13 = r13 >> 2;
+	r13 = heap32[(r13+3)];
+if(!(r13 !=r4)) //_LBB135_6
+{
+__label__ = 10;
+break _8;
+}
+}
+	r12 = heap32[(r3+16)];
+	r11 = r11 << 2;
+	r11 = (r12 + r11)|0;
+}
+}
+_14: do {
+switch(__label__ ){//multiple entries
+case 13:
+	r4 = heap32[(r3+2)];
+__label__ = 14;
+break _14;
+break;
+case 10:
+	r4 = heap32[(r3+2)];
+	if(r4 >r11) //_LBB135_12
+{
+	if(r12 !=0) //_LBB135_24
+{
+__label__ = 22;
+}
+else{
+__label__ = 14;
+}
+}
+else{
+	r0 = _2E_str222;
+	r1 = _2E_str323;
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r1;
+	heap32[(g0+2)] = 250;
+	_assert(i7);
+}
+break;
+}
+} while(0);
+if (__label__ == 14){
+	r12 = (r2 + 4)|0;
+	heap32[(g0)] = r12;
+	_ZN20btAlignedObjectArrayI16btBroadphasePairE21expandNonInitializingEv(i7);
+	r12 = r_g0;
+	r7 = heap32[(r3+18)];
+if(!(r7 ==0)) //_LBB135_17
+{
+	r11 = r7 >> 2;
+	r11 = heap32[(r11)];
+	r11 = r11 >> 2;
+	r11 = heap32[(r11+2)];
+	heap32[(g0)] = r7;
+	heap32[(g0+1)] = r0;
+	heap32[(g0+2)] = r6;
+	__FUNCTION_TABLE__[(r11)>>2](i7);
+}
+	r7 = heap32[(r3+3)];
+	if(r9 <r7) //_LBB135_19
+{
+	heap32[(g0)] = r2;
+	_ZN28btHashedOverlappingPairCache10growTablesEv(i7);
+	r10 = heap32[(r3+3)];
+	r10 = (r10 + -1)|0;
+	r10 = r10 & r8;
+}
+	r2 = heap32[(r5+3)];
+	r1 = heap32[(r1+3)];
+	if(r2 >=r1) //_LBB135_22
+{
+	r1 = r12 >> 2;
+	heap32[(r1)] = r6;
+	heap32[(r1+1)] = r0;
+}
+else{
+	r1 = r12 >> 2;
+	heap32[(r1)] = r0;
+	heap32[(r1+1)] = r6;
+}
+	r0 = r12 >> 2;
+	heap32[(r0+2)] = 0;
+	heap32[(r0+3)] = 0;
+	r0 = r10 << 2;
+	r1 = heap32[(r3+11)];
+	r1 = (r1 + r0)|0;
+	r1 = r1 >> 2;
+	r2 = r4 << 2;
+	r5 = heap32[(r3+16)];
+	r2 = (r5 + r2)|0;
+	r1 = heap32[(r1)];
+	r2 = r2 >> 2;
+	heap32[(r2)] = r1;
+	r1 = heap32[(r3+11)];
+	r0 = (r1 + r0)|0;
+	r0 = r0 >> 2;
+	heap32[(r0)] = r4;
+}
+	r_g0 = r12;
+	return;
+}
+}
+	r0 = 0;
+	r_g0 = r0;
+	return;
+}
+
+function _ZN28btHashedOverlappingPairCache21removeOverlappingPairEP17btBroadphaseProxyS1_P12btDispatcher(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+	var r6;
+	var r7;
+	var r8;
+	var r9;
+	var r10;
+	var r11;
+var __label__ = 0;
+	i7 = sp + -16;var g0 = i7>>2; // save stack
+	r0 = gRemovePairs;
+	r0 = r0 >> 2;
+	r1 = heap32[(r0)];
+	r2 = heap32[(fp+2)];
+	r3 = heap32[(fp+1)];
+	r1 = (r1 + 1)|0;
+	r4 = r3 >> 2;
+	heap32[(r0)] = r1;
+	r0 = r2 >> 2;
+	r1 = heap32[(r4+3)];
+	r0 = heap32[(r0+3)];
+	r4 = r1 > r0 ? r3 : r2;
+	r0 = r1 > r0 ? r2 : r3;
+	r1 = r4 >> 2;
+	r1 = heap32[(r1+3)];
+	r2 = r0 >> 2;
+	r2 = heap32[(r2+3)];
+	r3 = r1 << 16;
+	r3 = r3 | r2;
+	r5 = r3 << 15;
+	r5 = r5 ^ -1;
+	r3 = (r3 + r5)|0;
+	r5 = r3 >> 10;
+	r3 = r5 ^ r3;
+	r3 = (r3 * 9)|0;
+	r5 = r3 >> 6;
+	r3 = r5 ^ r3;
+	r5 = r3 << 11;
+	r6 = heap32[(fp)];
+	r5 = r5 ^ -1;
+	r7 = r6 >> 2;
+	r3 = (r3 + r5)|0;
+	r5 = r3 >> 16;
+	r8 = heap32[(r7+3)];
+	r3 = r5 ^ r3;
+	r5 = (r8 + -1)|0;
+	r3 = r3 & r5;
+	r5 = heap32[(r7+11)];
+	r3 = r3 << 2;
+	r8 = heap32[(fp+3)];
+	r5 = (r5 + r3)|0;
+_1: while(true){
+	r5 = r5 >> 2;
+	r5 = heap32[(r5)];
+	if(r5 ==-1) //_LBB136_35
+{
+__label__ = 33;
+break _1;
+}
+else{
+	r9 = heap32[(r7+4)];
+	r10 = r5 << 4;
+	r9 = (r9 + r10)|0;
+	r10 = r9 >> 2;
+	r11 = heap32[(r10)];
+	r11 = r11 >> 2;
+	r11 = heap32[(r11+3)];
+if(!(r11 !=r2)) //_LBB136_1
+{
+	r11 = heap32[(r10+1)];
+	r11 = r11 >> 2;
+	r11 = heap32[(r11+3)];
+if(!(r11 !=r1)) //_LBB136_1
+{
+__label__ = 5;
+break _1;
+}
+}
+	r9 = heap32[(r7+16)];
+	r5 = r5 << 2;
+	r5 = (r9 + r5)|0;
+continue _1;
+}
+}
+if (__label__ == 5){
+	r11 = heap32[(r7+2)];
+	if(r11 >r5) //_LBB136_7
+{
+if(!(r9 ==0)) //_LBB136_35
+{
+	r5 = heap32[(r7)];
+	r5 = r5 >> 2;
+	r5 = heap32[(r5+8)];
+	heap32[(g0)] = r6;
+	heap32[(g0+1)] = r9;
+	heap32[(g0+2)] = r8;
+	__FUNCTION_TABLE__[(r5)>>2](i7);
+	r5 = heap32[(r10)];
+	r5 = r5 >> 2;
+	r5 = heap32[(r5+3)];
+	if(r5 ==r2) //_LBB136_10
+{
+	r2 = heap32[(r10+1)];
+	r2 = r2 >> 2;
+	r2 = heap32[(r2+3)];
+	if(r2 ==r1) //_LBB136_12
+{
+	r1 = heap32[(r7+4)];
+	r1 = (r9 - r1)|0;
+	r1 = r1 >> 4;
+	r2 = heap32[(r7+2)];
+	if(r2 >r1) //_LBB136_14
+{
+	r2 = heap32[(r7+11)];
+	r2 = (r2 + r3)|0;
+	r2 = r2 >> 2;
+	r3 = heap32[(r2)];
+	if(r3 ==-1) //_LBB136_17
+{
+	r0 = _2E_str727;
+	r1 = _2E_str121;
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r1;
+	heap32[(g0+2)] = 304;
+	_assert(i7);
+}
+else{
+	r5 = heap32[(r10+3)];
+	r6 = heap32[(r7+16)];
+	if(r3 ==r1) //_LBB136_21
+{
+__label__ = 20;
+}
+else{
+_22: while(true){
+	r9 = r3;
+	r3 = r9 << 2;
+	r3 = (r6 + r3)|0;
+	r10 = r3 >> 2;
+	r3 = heap32[(r10)];
+if(!(r3 !=r1)) //_LBB136_18
+{
+break _22;
+}
+}
+	if(r9 ==-1) //_LBB136_21
+{
+__label__ = 20;
+}
+else{
+	r2 = r1 << 2;
+	r2 = (r6 + r2)|0;
+	r2 = r2 >> 2;
+	r2 = heap32[(r2)];
+	heap32[(r10)] = r2;
+__label__ = 21;
+}
+}
+if (__label__ == 20){
+	r3 = r1 << 2;
+	r3 = (r6 + r3)|0;
+	r3 = r3 >> 2;
+	r3 = heap32[(r3)];
+	heap32[(r2)] = r3;
+}
+	r2 = heap32[(r7+2)];
+	r3 = heap32[(r7+18)];
+if(!(r3 ==0)) //_LBB136_24
+{
+	r6 = r3 >> 2;
+	r6 = heap32[(r6)];
+	r6 = r6 >> 2;
+	r6 = heap32[(r6+3)];
+	heap32[(g0)] = r3;
+	heap32[(g0+1)] = r0;
+	heap32[(g0+2)] = r4;
+	heap32[(g0+3)] = r8;
+	__FUNCTION_TABLE__[(r6)>>2](i7);
+}
+	r0 = (r2 + -1)|0;
+	if(r0 !=r1) //_LBB136_26
+{
+	r3 = heap32[(r7+4)];
+	r4 = r2 << 4;
+	r3 = (r3 + r4)|0;
+	r3 = r3 >> 2;
+	r6 = heap32[(r3+-3)];
+	r3 = heap32[(r3+-4)];
+	r6 = r6 >> 2;
+	r3 = r3 >> 2;
+	r6 = heap32[(r6+3)];
+	r3 = heap32[(r3+3)];
+	r6 = r6 << 16;
+	r3 = r3 | r6;
+	r6 = r3 << 15;
+	r6 = r6 ^ -1;
+	r3 = (r3 + r6)|0;
+	r6 = r3 >> 10;
+	r3 = r6 ^ r3;
+	r3 = (r3 * 9)|0;
+	r6 = r3 >> 6;
+	r3 = r6 ^ r3;
+	r6 = r3 << 11;
+	r6 = r6 ^ -1;
+	r3 = (r3 + r6)|0;
+	r6 = r3 >> 16;
+	r8 = heap32[(r7+3)];
+	r3 = r6 ^ r3;
+	r6 = (r8 + -1)|0;
+	r3 = r3 & r6;
+	r6 = heap32[(r7+11)];
+	r3 = r3 << 2;
+	r6 = (r6 + r3)|0;
+	r6 = r6 >> 2;
+	r8 = heap32[(r6)];
+	if(r8 ==-1) //_LBB136_29
+{
+	r0 = _2E_str727;
+	r1 = _2E_str121;
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r1;
+	heap32[(g0+2)] = 345;
+	_assert(i7);
+}
+else{
+	r9 = heap32[(r7+16)];
+	if(r8 ==r0) //_LBB136_33
+{
+__label__ = 31;
+}
+else{
+_38: while(true){
+	r10 = r8;
+	r8 = r10 << 2;
+	r8 = (r9 + r8)|0;
+	r11 = r8 >> 2;
+	r8 = heap32[(r11)];
+if(!(r8 !=r0)) //_LBB136_30
+{
+break _38;
+}
+}
+	if(r10 ==-1) //_LBB136_33
+{
+__label__ = 31;
+}
+else{
+	r2 = r2 << 2;
+	r2 = (r9 + r2)|0;
+	r2 = r2 >> 2;
+	r2 = heap32[(r2+-1)];
+	heap32[(r11)] = r2;
+__label__ = 32;
+}
+}
+if (__label__ == 31){
+	r0 = r2 << 2;
+	r0 = (r9 + r0)|0;
+	r0 = r0 >> 2;
+	r0 = heap32[(r0+-1)];
+	heap32[(r6)] = r0;
+}
+	r0 = heap32[(r7+4)];
+	r2 = (r0 + r4)|0;
+	r4 = r1 << 4;
+	r2 = r2 >> 2;
+	r0 = (r0 + r4)|0;
+	r4 = heap32[(r2+-4)];
+	r0 = r0 >> 2;
+	heap32[(r0)] = r4;
+	r4 = heap32[(r2+-3)];
+	heap32[(r0+1)] = r4;
+	r4 = heap32[(r2+-2)];
+	heap32[(r0+2)] = r4;
+	r2 = heap32[(r2+-1)];
+	heap32[(r0+3)] = r2;
+	r0 = heap32[(r7+11)];
+	r0 = (r0 + r3)|0;
+	r0 = r0 >> 2;
+	r2 = r1 << 2;
+	r4 = heap32[(r7+16)];
+	r2 = (r4 + r2)|0;
+	r0 = heap32[(r0)];
+	r2 = r2 >> 2;
+	heap32[(r2)] = r0;
+	r0 = heap32[(r7+11)];
+	r0 = (r0 + r3)|0;
+	r0 = r0 >> 2;
+	heap32[(r0)] = r1;
+}
+}
+	r0 = heap32[(r7+2)];
+	r0 = (r0 + -1)|0;
+	heap32[(r7+2)] = r0;
+	r_g0 = r5;
+	return;
+}
+}
+else{
+	r0 = _2E_str626;
+	r1 = _2E_str121;
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r1;
+	heap32[(g0+2)] = 300;
+	_assert(i7);
+}
+}
+else{
+	r0 = _2E_str525;
+	r3 = _2E_str121;
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r3;
+	heap32[(g0+2)] = 297;
+	_assert(i7);
+}
+}
+else{
+	r0 = _2E_str424;
+	r1 = _2E_str121;
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r1;
+	heap32[(g0+2)] = 296;
+	_assert(i7);
+}
+}
+}
+else{
+	r0 = _2E_str222;
+	r1 = _2E_str323;
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r1;
+	heap32[(g0+2)] = 250;
+	_assert(i7);
+}
+}
+	r0 = 0;
+	r_g0 = r0;
+	return;
+}
+
+function _ZN28btHashedOverlappingPairCache8findPairEP17btBroadphaseProxyS1_(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+	var r6;
+var __label__ = 0;
+	i7 = sp + -16;var g0 = i7>>2; // save stack
+	r0 = gFindPairs;
+	r0 = r0 >> 2;
+	r1 = heap32[(r0)];
+	r2 = heap32[(fp+1)];
+	r3 = heap32[(fp+2)];
+	r1 = (r1 + 1)|0;
+	r4 = r2 >> 2;
+	heap32[(r0)] = r1;
+	r0 = r3 >> 2;
+	r1 = heap32[(r4+3)];
+	r0 = heap32[(r0+3)];
+	r4 = r1 > r0 ? r2 : r3;
+	r0 = r1 > r0 ? r3 : r2;
+	r1 = r4 >> 2;
+	r1 = heap32[(r1+3)];
+	r0 = r0 >> 2;
+	r0 = heap32[(r0+3)];
+	r2 = r1 << 16;
+	r2 = r2 | r0;
+	r3 = r2 << 15;
+	r3 = r3 ^ -1;
+	r2 = (r2 + r3)|0;
+	r3 = r2 >> 10;
+	r2 = r3 ^ r2;
+	r2 = (r2 * 9)|0;
+	r3 = r2 >> 6;
+	r2 = r3 ^ r2;
+	r3 = r2 << 11;
+	r4 = heap32[(fp)];
+	r3 = r3 ^ -1;
+	r4 = r4 >> 2;
+	r2 = (r2 + r3)|0;
+	r3 = r2 >> 16;
+	r5 = heap32[(r4+3)];
+	r2 = r3 ^ r2;
+	r3 = (r5 + -1)|0;
+	r2 = r2 & r3;
+	r3 = heap32[(r4+9)];
+_1: do {
+if(!(r3 <=r2)) //_LBB137_9
+{
+	r3 = heap32[(r4+11)];
+	r2 = r2 << 2;
+	r2 = (r3 + r2)|0;
+_3: while(true){
+	r2 = r2 >> 2;
+	r2 = heap32[(r2)];
+	if(r2 ==-1) //_LBB137_9
+{
+break _1;
+}
+else{
+	r3 = heap32[(r4+4)];
+	r5 = r2 << 4;
+	r3 = (r3 + r5)|0;
+	r5 = r3 >> 2;
+	r6 = heap32[(r5)];
+	r6 = r6 >> 2;
+	r6 = heap32[(r6+3)];
+if(!(r6 !=r0)) //_LBB137_2
+{
+	r5 = heap32[(r5+1)];
+	r5 = r5 >> 2;
+	r5 = heap32[(r5+3)];
+if(!(r5 !=r1)) //_LBB137_2
+{
+break _3;
+}
+}
+	r3 = heap32[(r4+16)];
+	r2 = r2 << 2;
+	r2 = (r3 + r2)|0;
+}
+}
+	r0 = heap32[(r4+2)];
+	if(r0 >r2) //_LBB137_8
+{
+	r_g0 = r3;
+	return;
+}
+else{
+	r3 = _2E_str222;
+	r0 = _2E_str121;
+	heap32[(g0)] = r3;
+	heap32[(g0+1)] = r0;
+	heap32[(g0+2)] = 165;
+	_assert(i7);
+}
+}
+} while(0);
+	r0 = 0;
+	r_g0 = r0;
+	return;
+}
+
+function _ZN28btHashedOverlappingPairCache20sortOverlappingPairsEP12btDispatcher(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+	var r6;
+	var r7;
+	var r8;
+	var r9;
+	var r10;
+	var r11;
+	var r12;
+	var r13;
+	var r14;
+	var r15;
+	var r16;
+var __label__ = 0;
+	i7 = sp + -40;var g0 = i7>>2; // save stack
+	r0 = sp + -24;
+	r1 = 1;
+	r2 = r0 >> 2;
+	heap8[sp+-8] = r1;
+	heap32[(r2+3)] = 0;
+	r3 = heap32[(fp)];
+	heap32[(r2+1)] = 0;
+	r4 = r3 >> 2;
+	heap32[(r2+2)] = 0;
+	r5 = heap32[(r4+2)];
+_1: do {
+	if(r5 >0) //_LBB138_2
+{
+	r6 = heap32[(fp+1)];
+	r7 = 0;
+	r5 = r7;
+_3: while(true){
+	r8 = heap32[(r4+4)];
+	if(r7 ==r5) //_LBB138_5
+{
+	r9 = 1;
+	r10 = r5 << 1;
+	r10 = r5 == 0 ? r9 : r10;
+if(!(r7 >=r10)) //_LBB138_4
+{
+	if(r10 !=0) //_LBB138_8
+{
+	r7 = gNumAlignedAllocs;
+	r7 = r7 >> 2;
+	r11 = heap32[(r7)];
+	r12 = r10 << 4;
+	r11 = (r11 + 1)|0;
+	r12 = r12 | 3;
+	heap32[(r7)] = r11;
+	r7 = (r12 + 16)|0;
+	heap32[(g0)] = r7;
+	malloc(i7);
+	r7 = r_g0;
+	if(r7 !=0) //_LBB138_10
+{
+	r11 = 0;
+	r12 = (r7 + 4)|0;
+	r11 = (r11 - r12)|0;
+	r11 = r11 & 15;
+	r11 = (r7 + r11)|0;
+	r12 = (r11 + 4)|0;
+	r11 = r11 >> 2;
+	heap32[(r11)] = r7;
+	r7 = r12;
+}
+}
+else{
+	r7 = 0;
+}
+	if(r5 <1) //_LBB138_13
+{
+	r13 = heap32[(r2+3)];
+}
+else{
+	r11 = 0;
+	r12 = (r11 - r5)|0;
+_16: while(true){
+	r13 = heap32[(r2+3)];
+	r14 = r11 << 4;
+	r15 = (r13 - r14)|0;
+	r15 = r15 >> 2;
+	r14 = (r7 - r14)|0;
+	r16 = heap32[(r15)];
+	r14 = r14 >> 2;
+	heap32[(r14)] = r16;
+	r16 = heap32[(r15+1)];
+	heap32[(r14+1)] = r16;
+	r16 = heap32[(r15+2)];
+	heap32[(r14+2)] = r16;
+	r15 = heap32[(r15+3)];
+	r11 = (r11 + -1)|0;
+	heap32[(r14+3)] = r15;
+if(!(r12 !=r11)) //_LBB138_14
+{
+break _16;
+}
+}
+}
+	if(r13 !=0) //_LBB138_17
+{
+	r11 = heapU8[sp+-8];
+	if(r11 !=0) //_LBB138_19
+{
+	r5 = gNumAlignedFree;
+	r5 = r5 >> 2;
+	r11 = heap32[(r5)];
+	r11 = (r11 + 1)|0;
+	r12 = r13 >> 2;
+	heap32[(r5)] = r11;
+	r5 = heap32[(r12+-1)];
+	heap32[(g0)] = r5;
+	free(i7);
+	r5 = heap32[(r2+1)];
+}
+	heap32[(r2+3)] = 0;
+}
+	heap8[sp+-8] = r9;
+	heap32[(r2+3)] = r7;
+	heap32[(r2+2)] = r10;
+}
+}
+	r7 = r1 << 4;
+	r7 = (r8 + r7)|0;
+	r7 = r7 >> 2;
+	r5 = r5 << 4;
+	r8 = heap32[(r2+3)];
+	r5 = (r8 + r5)|0;
+	r8 = heap32[(r7+-4)];
+	r5 = r5 >> 2;
+	heap32[(r5)] = r8;
+	r8 = heap32[(r7+-3)];
+	heap32[(r5+1)] = r8;
+	r8 = heap32[(r7+-2)];
+	heap32[(r5+2)] = r8;
+	r7 = heap32[(r7+-1)];
+	heap32[(r5+3)] = r7;
+	r5 = heap32[(r2+1)];
+	r5 = (r5 + 1)|0;
+	heap32[(r2+1)] = r5;
+	r7 = heap32[(r4+2)];
+	if(r7 <=r1) //_LBB138_24
+{
+break _3;
+}
+else{
+	r7 = heap32[(r2+2)];
+	r1 = (r1 + 1)|0;
+}
+}
+	if(r5 >0) //_LBB138_26
+{
+	r1 = 0;
+_29: while(true){
+	r5 = heap32[(r2+3)];
+	r7 = r1 << 4;
+	r8 = heap32[(r4)];
+	r5 = (r5 + r7)|0;
+	r5 = r5 >> 2;
+	r7 = r8 >> 2;
+	r7 = heap32[(r7+3)];
+	r8 = heap32[(r5+1)];
+	r5 = heap32[(r5)];
+	heap32[(g0)] = r3;
+	heap32[(g0+1)] = r5;
+	heap32[(g0+2)] = r8;
+	heap32[(g0+3)] = r6;
+	__FUNCTION_TABLE__[(r7)>>2](i7);
+	r5 = heap32[(r2+1)];
+	r1 = (r1 + 1)|0;
+	if(r5 >r1) //_LBB138_27
+{
+continue _29;
+}
+else{
+break _1;
+}
+}
+}
+}
+else{
+	r5 = 0;
+}
+} while(0);
+	r1 = heap32[(r4+14)];
+	if(r1 >0) //_LBB138_30
+{
+	r5 = 0;
+_35: while(true){
+	r1 = r5 << 2;
+	r6 = heap32[(r4+16)];
+	r1 = (r6 + r1)|0;
+	r5 = (r5 + 1)|0;
+	r1 = r1 >> 2;
+	heap32[(r1)] = -1;
+	r1 = heap32[(r4+14)];
+if(!(r1 >r5)) //_LBB138_31
+{
+break _35;
+}
+}
+	r5 = heap32[(r2+1)];
+}
+	if(r5 >1) //_LBB138_35
+{
+	r5 = (r5 + -1)|0;
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = 0;
+	heap32[(g0+2)] = r5;
+	_ZN20btAlignedObjectArrayI16btBroadphasePairE17quickSortInternalI29btBroadphasePairSortPredicateEEvT_ii(i7);
+	r5 = heap32[(r2+1)];
+}
+_42: do {
+if(!(r5 <1)) //_LBB138_39
+{
+	r0 = 0;
+_44: while(true){
+	r1 = heap32[(r2+3)];
+	r5 = r0 << 4;
+	r6 = heap32[(r4)];
+	r1 = (r1 + r5)|0;
+	r1 = r1 >> 2;
+	r5 = r6 >> 2;
+	r5 = heap32[(r5+2)];
+	r6 = heap32[(r1+1)];
+	r1 = heap32[(r1)];
+	heap32[(g0)] = r3;
+	heap32[(g0+1)] = r1;
+	heap32[(g0+2)] = r6;
+	r0 = (r0 + 1)|0;
+	__FUNCTION_TABLE__[(r5)>>2](i7);
+	r1 = heap32[(r2+1)];
+	if(r1 >r0) //_LBB138_38
+{
+continue _44;
+}
+else{
+break _42;
+}
+}
+}
+} while(0);
+	r0 = heap32[(r2+3)];
+if(!(r0 ==0)) //_LBB138_42
+{
+	r1 = heapU8[sp+-8];
+if(!(r1 ==0)) //_LBB138_42
+{
+	r1 = gNumAlignedFree;
+	r1 = r1 >> 2;
+	r2 = heap32[(r1)];
+	r2 = (r2 + 1)|0;
+	r0 = r0 >> 2;
+	heap32[(r1)] = r2;
+	r0 = heap32[(r0+-1)];
+	heap32[(g0)] = r0;
+	free(i7);
+}
+}
+	return;
+}
+
+function _ZN20btAlignedObjectArrayI16btBroadphasePairE21expandNonInitializingEv(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+	var r6;
+	var r7;
+	var r8;
+	var r9;
+	var r10;
+	var r11;
+	var r12;
+var __label__ = 0;
+	i7 = sp + -8;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = r0 >> 2;
+	r2 = heap32[(r1+2)];
+	r3 = heap32[(r1+1)];
+	if(r2 ==r3) //_LBB139_2
+{
+	r4 = 1;
+	r5 = r3 << 1;
+	r5 = r3 == 0 ? r4 : r5;
+	if(r2 >=r5) //_LBB139_1
+{
+__label__ = 1;
+}
+else{
+	if(r5 !=0) //_LBB139_5
+{
+	r2 = gNumAlignedAllocs;
+	r2 = r2 >> 2;
+	r6 = heap32[(r2)];
+	r7 = r5 << 4;
+	r6 = (r6 + 1)|0;
+	r7 = r7 | 3;
+	heap32[(r2)] = r6;
+	r2 = (r7 + 16)|0;
+	heap32[(g0)] = r2;
+	malloc(i7);
+	r6 = r_g0;
+	if(r6 !=0) //_LBB139_7
+{
+	r2 = 0;
+	r7 = (r6 + 4)|0;
+	r2 = (r2 - r7)|0;
+	r2 = r2 & 15;
+	r2 = (r6 + r2)|0;
+	r7 = (r2 + 4)|0;
+	r2 = r2 >> 2;
+	heap32[(r2)] = r6;
+	r6 = r7;
+}
+}
+else{
+	r6 = 0;
+}
+	r7 = (r0 + 12)|0;
+	if(r3 <1) //_LBB139_10
+{
+	r2 = r7 >> 2;
+	r9 = heap32[(r2)];
+}
+else{
+	r2 = 0;
+	r8 = (r2 - r3)|0;
+_12: while(true){
+	r9 = r7 >> 2;
+	r9 = heap32[(r9)];
+	r10 = r2 << 4;
+	r11 = (r9 - r10)|0;
+	r11 = r11 >> 2;
+	r10 = (r6 - r10)|0;
+	r12 = heap32[(r11)];
+	r10 = r10 >> 2;
+	heap32[(r10)] = r12;
+	r12 = heap32[(r11+1)];
+	heap32[(r10+1)] = r12;
+	r12 = heap32[(r11+2)];
+	heap32[(r10+2)] = r12;
+	r11 = heap32[(r11+3)];
+	r2 = (r2 + -1)|0;
+	heap32[(r10+3)] = r11;
+if(!(r8 !=r2)) //_LBB139_11
+{
+break _12;
+}
+}
+	r7 = (r0 + 12)|0;
+}
+	if(r9 !=0) //_LBB139_15
+{
+	r2 = heapU8[r0+16];
+	if(r2 !=0) //_LBB139_17
+{
+	r2 = gNumAlignedFree;
+	r2 = r2 >> 2;
+	r8 = heap32[(r2)];
+	r8 = (r8 + 1)|0;
+	r9 = r9 >> 2;
+	heap32[(r2)] = r8;
+	r2 = heap32[(r9+-1)];
+	heap32[(g0)] = r2;
+	free(i7);
+	r2 = heap32[(r1+1)];
+}
+else{
+	r2 = r3;
+}
+	r8 = r7 >> 2;
+	heap32[(r8)] = 0;
+}
+else{
+	r2 = r3;
+}
+	r7 = r7 >> 2;
+	heap8[r0+16] = r4;
+	heap32[(r7)] = r6;
+	heap32[(r1+2)] = r5;
+__label__ = 19;
+}
+}
+else{
+__label__ = 1;
+}
+if (__label__ == 1){
+	r2 = r3;
+}
+	r0 = (r2 + 1)|0;
+	heap32[(r1+1)] = r0;
+	r0 = heap32[(r1+3)];
+	r1 = r3 << 4;
+	r0 = (r0 + r1)|0;
+	r_g0 = r0;
+	return;
+}
+
+function _ZN28btHashedOverlappingPairCache10growTablesEv(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+	var r6;
+	var r7;
+	var r8;
+	var r9;
+	var r10;
+var __label__ = 0;
+	i7 = sp + -8;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = r0 >> 2;
+	r2 = heap32[(r1+9)];
+	r3 = heap32[(r1+3)];
+_1: do {
+if(!(r2 >=r3)) //_LBB140_48
+{
+_3: do {
+if(!(r2 >r3)) //_LBB140_20
+{
+	r4 = heap32[(r1+10)];
+if(!(r4 >=r3)) //_LBB140_18
+{
+	if(r3 !=0) //_LBB140_5
+{
+	r4 = gNumAlignedAllocs;
+	r4 = r4 >> 2;
+	r5 = heap32[(r4)];
+	r6 = r3 << 2;
+	r5 = (r5 + 1)|0;
+	r6 = r6 | 3;
+	heap32[(r4)] = r5;
+	r4 = (r6 + 16)|0;
+	heap32[(g0)] = r4;
+	malloc(i7);
+	r4 = r_g0;
+	if(r4 !=0) //_LBB140_7
+{
+	r5 = 0;
+	r6 = (r4 + 4)|0;
+	r5 = (r5 - r6)|0;
+	r5 = r5 & 15;
+	r5 = (r4 + r5)|0;
+	r6 = (r5 + 4)|0;
+	r5 = r5 >> 2;
+	heap32[(r5)] = r4;
+	r4 = r6;
+}
+}
+else{
+	r4 = 0;
+}
+	r5 = (r0 + 44)|0;
+	if(r2 <1) //_LBB140_10
+{
+	r6 = r5 >> 2;
+	r7 = heap32[(r6)];
+}
+else{
+	r6 = 0;
+_15: while(true){
+	r7 = r5 >> 2;
+	r7 = heap32[(r7)];
+	r8 = r6 << 2;
+	r9 = (r7 + r8)|0;
+	r9 = r9 >> 2;
+	r8 = (r4 + r8)|0;
+	r9 = heap32[(r9)];
+	r6 = (r6 + 1)|0;
+	r8 = r8 >> 2;
+	heap32[(r8)] = r9;
+if(!(r2 !=r6)) //_LBB140_11
+{
+break _15;
+}
+}
+	r5 = (r0 + 44)|0;
+}
+if(!(r7 ==0)) //_LBB140_17
+{
+	r6 = heapU8[r0+48];
+if(!(r6 ==0)) //_LBB140_16
+{
+	r6 = gNumAlignedFree;
+	r6 = r6 >> 2;
+	r8 = heap32[(r6)];
+	r8 = (r8 + 1)|0;
+	r7 = r7 >> 2;
+	heap32[(r6)] = r8;
+	r6 = heap32[(r7+-1)];
+	heap32[(g0)] = r6;
+	free(i7);
+}
+	r6 = r5 >> 2;
+	heap32[(r6)] = 0;
+}
+	r6 = 1;
+	r5 = r5 >> 2;
+	heap8[r0+48] = r6;
+	heap32[(r5)] = r4;
+	heap32[(r1+10)] = r3;
+}
+	r4 = r2;
+_26: while(true){
+	r5 = r4 << 2;
+	r6 = heap32[(r1+11)];
+	r5 = (r6 + r5)|0;
+	r4 = (r4 + 1)|0;
+	r5 = r5 >> 2;
+	heap32[(r5)] = 0;
+if(!(r3 !=r4)) //_LBB140_19
+{
+break _3;
+}
+}
+}
+} while(0);
+	heap32[(r1+9)] = r3;
+	r4 = heap32[(r1+14)];
+_29: do {
+if(!(r4 >r3)) //_LBB140_39
+{
+if(!(r4 >=r3)) //_LBB140_39
+{
+	r5 = heap32[(r1+15)];
+if(!(r5 >=r3)) //_LBB140_38
+{
+	if(r3 !=0) //_LBB140_25
+{
+	r5 = gNumAlignedAllocs;
+	r5 = r5 >> 2;
+	r6 = heap32[(r5)];
+	r7 = r3 << 2;
+	r6 = (r6 + 1)|0;
+	r7 = r7 | 3;
+	heap32[(r5)] = r6;
+	r5 = (r7 + 16)|0;
+	heap32[(g0)] = r5;
+	malloc(i7);
+	r5 = r_g0;
+	if(r5 !=0) //_LBB140_27
+{
+	r6 = 0;
+	r7 = (r5 + 4)|0;
+	r6 = (r6 - r7)|0;
+	r6 = r6 & 15;
+	r6 = (r5 + r6)|0;
+	r7 = (r6 + 4)|0;
+	r6 = r6 >> 2;
+	heap32[(r6)] = r5;
+	r5 = r7;
+}
+}
+else{
+	r5 = 0;
+}
+	r6 = (r0 + 64)|0;
+	if(r4 <1) //_LBB140_30
+{
+	r7 = r6 >> 2;
+	r8 = heap32[(r7)];
+}
+else{
+	r7 = 0;
+_42: while(true){
+	r8 = r6 >> 2;
+	r8 = heap32[(r8)];
+	r9 = r7 << 2;
+	r10 = (r8 + r9)|0;
+	r10 = r10 >> 2;
+	r9 = (r5 + r9)|0;
+	r10 = heap32[(r10)];
+	r7 = (r7 + 1)|0;
+	r9 = r9 >> 2;
+	heap32[(r9)] = r10;
+if(!(r4 !=r7)) //_LBB140_31
+{
+break _42;
+}
+}
+	r6 = (r0 + 64)|0;
+}
+if(!(r8 ==0)) //_LBB140_37
+{
+	r7 = heapU8[r0+68];
+if(!(r7 ==0)) //_LBB140_36
+{
+	r7 = gNumAlignedFree;
+	r7 = r7 >> 2;
+	r9 = heap32[(r7)];
+	r9 = (r9 + 1)|0;
+	r8 = r8 >> 2;
+	heap32[(r7)] = r9;
+	r7 = heap32[(r8+-1)];
+	heap32[(g0)] = r7;
+	free(i7);
+}
+	r7 = r6 >> 2;
+	heap32[(r7)] = 0;
+}
+	r7 = 1;
+	r6 = r6 >> 2;
+	heap8[r0+68] = r7;
+	heap32[(r6)] = r5;
+	heap32[(r1+15)] = r3;
+	if(r4 >=r3) //_LBB140_39
+{
+break _29;
+}
+}
+_52: while(true){
+	r0 = r4 << 2;
+	r5 = heap32[(r1+16)];
+	r0 = (r5 + r0)|0;
+	r4 = (r4 + 1)|0;
+	r0 = r0 >> 2;
+	heap32[(r0)] = 0;
+if(!(r3 !=r4)) //_LBB140_38
+{
+break _29;
+}
+}
+}
+}
+} while(0);
+	heap32[(r1+14)] = r3;
+_55: do {
+if(!(r3 <1)) //_LBB140_45
+{
+	r0 = 0;
+_57: while(true){
+	r4 = r0 << 2;
+	r5 = heap32[(r1+11)];
+	r4 = (r5 + r4)|0;
+	r0 = (r0 + 1)|0;
+	r4 = r4 >> 2;
+	heap32[(r4)] = -1;
+if(!(r3 !=r0)) //_LBB140_41
+{
+break _57;
+}
+}
+if(!(r3 <1)) //_LBB140_45
+{
+	r0 = 0;
+_61: while(true){
+	r4 = r0 << 2;
+	r5 = heap32[(r1+16)];
+	r4 = (r5 + r4)|0;
+	r0 = (r0 + 1)|0;
+	r4 = r4 >> 2;
+	heap32[(r4)] = -1;
+if(!(r3 !=r0)) //_LBB140_44
+{
+break _55;
+}
+}
+}
+}
+} while(0);
+if(!(r2 <1)) //_LBB140_48
+{
+	r0 = 0;
+_65: while(true){
+	r3 = heap32[(r1+4)];
+	r4 = r0 << 4;
+	r3 = (r3 + r4)|0;
+	r3 = r3 >> 2;
+	r4 = heap32[(r3+1)];
+	r3 = heap32[(r3)];
+	r4 = r4 >> 2;
+	r3 = r3 >> 2;
+	r4 = heap32[(r4+3)];
+	r4 = r4 << 16;
+	r3 = heap32[(r3+3)];
+	r3 = r4 | r3;
+	r4 = r3 << 15;
+	r4 = r4 ^ -1;
+	r3 = (r3 + r4)|0;
+	r4 = r3 >> 10;
+	r3 = r4 ^ r3;
+	r3 = (r3 * 9)|0;
+	r4 = r3 >> 6;
+	r3 = r4 ^ r3;
+	r4 = r3 << 11;
+	r4 = r4 ^ -1;
+	r3 = (r3 + r4)|0;
+	r4 = r3 >> 16;
+	r5 = heap32[(r1+3)];
+	r3 = r4 ^ r3;
+	r4 = (r5 + -1)|0;
+	r3 = r3 & r4;
+	r3 = r3 << 2;
+	r4 = heap32[(r1+11)];
+	r4 = (r4 + r3)|0;
+	r4 = r4 >> 2;
+	r5 = r0 << 2;
+	r6 = heap32[(r1+16)];
+	r5 = (r6 + r5)|0;
+	r4 = heap32[(r4)];
+	r5 = r5 >> 2;
+	heap32[(r5)] = r4;
+	r4 = heap32[(r1+11)];
+	r3 = (r4 + r3)|0;
+	r4 = (r0 + 1)|0;
+	r3 = r3 >> 2;
+	heap32[(r3)] = r0;
+	r0 = r4;
+	if(r2 !=r4) //_LBB140_47
+{
+continue _65;
+}
+else{
+break _1;
+}
+}
+}
+}
+} while(0);
+	return;
+}
+
+function _ZN28btHashedOverlappingPairCacheC1Ev(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+var __label__ = 0;
+	i7 = sp + -8;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = _ZTV28btHashedOverlappingPairCache;
+	r2 = r0 >> 2;
+	r1 = (r1 + 8)|0;
+	r3 = 1;
+	heap32[(r2)] = r1;
+	heap8[r0+20] = r3;
+	heap32[(r2+4)] = 0;
+	heap32[(r2+2)] = 0;
+	heap32[(r2+3)] = 0;
+	r1 = 0;
+	heap32[(r2+6)] = 0;
+	heap8[r0+28] = r1;
+	heap8[r0+48] = r3;
+	heap32[(r2+11)] = 0;
+	heap32[(r2+9)] = 0;
+	heap32[(r2+10)] = 0;
+	heap8[r0+68] = r3;
+	heap32[(r2+16)] = 0;
+	heap32[(r2+14)] = 0;
+	r4 = gNumAlignedAllocs;
+	heap32[(r2+15)] = 0;
+	r4 = r4 >> 2;
+	heap32[(r2+18)] = 0;
+	r5 = heap32[(r4)];
+	r5 = (r5 + 1)|0;
+	heap32[(r4)] = r5;
+	heap32[(g0)] = 51;
+	malloc(i7);
+	r4 = r_g0;
+	if(r4 !=0) //_LBB141_2
+{
+	r5 = (r4 + 4)|0;
+	r1 = (r1 - r5)|0;
+	r1 = r1 & 15;
+	r1 = (r4 + r1)|0;
+	r5 = (r1 + 4)|0;
+	r1 = r1 >> 2;
+	heap32[(r1)] = r4;
+	r4 = r5;
+}
+	heap8[r0+20] = r3;
+	heap32[(r2+4)] = r4;
+	heap32[(r2+3)] = 2;
+	heap32[(g0)] = r0;
+	_ZN28btHashedOverlappingPairCache10growTablesEv(i7);
+	return;
+}
+
+function _ZNK14btQuantizedBvh31calculateSerializeBufferSizeNewEv(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+var __label__ = 0;
+	i7 = sp + 0;var g0 = i7>>2; // save stack
+	r0 = 84;
+	r_g0 = r0;
+	return;
+}
+
+function _ZNK14btQuantizedBvh9serializeEPvP12btSerializer(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+	var r6;
+	var r7;
+	var r8;
+	var r9;
+	var r10;
+	var r11;
+var __label__ = 0;
+	i7 = sp + -24;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp+1)];
+	r1 = heap32[(fp)];
+	r0 = r0 >> 2;
+	r2 = r1 >> 2;
+	heap32[(r0+4)] = heap32[(r2+5)];
+	heap32[(r0+5)] = heap32[(r2+6)];
+	heap32[(r0+6)] = heap32[(r2+7)];
+	heap32[(r0+7)] = heap32[(r2+8)];
+	heap32[(r0)] = heap32[(r2+1)];
+	heap32[(r0+1)] = heap32[(r2+2)];
+	heap32[(r0+2)] = heap32[(r2+3)];
+	heap32[(r0+3)] = heap32[(r2+4)];
+	heap32[(r0+8)] = heap32[(r2+9)];
+	heap32[(r0+9)] = heap32[(r2+10)];
+	heap32[(r0+10)] = heap32[(r2+11)];
+	heap32[(r0+11)] = heap32[(r2+12)];
+	r3 = heap32[(r2+14)];
+	heap32[(r0+12)] = r3;
+	r1 = heapU8[r1+60];
+	heap32[(r0+13)] = r1;
+	r1 = heap32[(r2+22)];
+	r3 = heap32[(fp+2)];
+	heap32[(r0+14)] = r1;
+	r1 = heap32[(r2+22)];
+	if(r1 !=0) //_LBB143_2
+{
+	r1 = r3 >> 2;
+	r4 = heap32[(r1)];
+	r4 = r4 >> 2;
+	r4 = heap32[(r4+7)];
+	r5 = heap32[(r2+24)];
+	heap32[(g0)] = r3;
+	heap32[(g0+1)] = r5;
+	__FUNCTION_TABLE__[(r4)>>2](i7);
+	r4 = r_g0;
+	heap32[(r0+16)] = r4;
+if(!(r4 ==0)) //_LBB143_7
+{
+	r4 = heap32[(r1)];
+	r4 = r4 >> 2;
+	r5 = heap32[(r2+22)];
+	r4 = heap32[(r4+4)];
+	heap32[(g0)] = r3;
+	heap32[(g0+1)] = 48;
+	heap32[(g0+2)] = r5;
+	__FUNCTION_TABLE__[(r4)>>2](i7);
+	r4 = r_g0;
+if(!(r5 <1)) //_LBB143_6
+{
+	r6 = r4 >> 2;
+	r7 = 0;
+	r6 = heap32[(r6+2)];
+	r5 = (r7 - r5)|0;
+_6: while(true){
+	r8 = (r7 * -12)|0;
+	r8 = r8 << 2;
+	r9 = r7 << 6;
+	r10 = heap32[(r2+24)];
+	r8 = (r6 + r8)|0;
+	r10 = (r10 - r9)|0;
+	r8 = r8 >> 2;
+	r10 = r10 >> 2;
+	heap32[(r8+4)] = heap32[(r10+4)];
+	heap32[(r8+5)] = heap32[(r10+5)];
+	heap32[(r8+6)] = heap32[(r10+6)];
+	heap32[(r8+7)] = heap32[(r10+7)];
+	r10 = heap32[(r2+24)];
+	r10 = (r10 - r9)|0;
+	r10 = r10 >> 2;
+	heap32[(r8)] = heap32[(r10)];
+	heap32[(r8+1)] = heap32[(r10+1)];
+	heap32[(r8+2)] = heap32[(r10+2)];
+	heap32[(r8+3)] = heap32[(r10+3)];
+	r10 = heap32[(r2+24)];
+	r10 = (r10 - r9)|0;
+	r10 = r10 >> 2;
+	r10 = heap32[(r10+8)];
+	heap32[(r8+8)] = r10;
+	r10 = heap32[(r2+24)];
+	r10 = (r10 - r9)|0;
+	r10 = r10 >> 2;
+	r10 = heap32[(r10+9)];
+	heap32[(r8+9)] = r10;
+	r10 = heap32[(r2+24)];
+	r9 = (r10 - r9)|0;
+	r9 = r9 >> 2;
+	r9 = heap32[(r9+10)];
+	r7 = (r7 + -1)|0;
+	heap32[(r8+10)] = r9;
+if(!(r5 !=r7)) //_LBB143_5
+{
+break _6;
+}
+}
+}
+	r1 = heap32[(r1)];
+	r1 = r1 >> 2;
+	r1 = heap32[(r1+5)];
+	r5 = heap32[(r2+24)];
+	r6 = _2E_str32;
+	heap32[(g0)] = r3;
+	heap32[(g0+1)] = r4;
+	heap32[(g0+2)] = r6;
+	heap32[(g0+3)] = 1497453121;
+	heap32[(g0+4)] = r5;
+	__FUNCTION_TABLE__[(r1)>>2](i7);
+}
+}
+else{
+	heap32[(r0+16)] = 0;
+}
+	r1 = heap32[(r2+32)];
+	heap32[(r0+15)] = r1;
+	r1 = heap32[(r2+32)];
+	if(r1 !=0) //_LBB143_9
+{
+	r1 = r3 >> 2;
+	r4 = heap32[(r1)];
+	r4 = r4 >> 2;
+	r4 = heap32[(r4+7)];
+	r5 = heap32[(r2+34)];
+	heap32[(g0)] = r3;
+	heap32[(g0+1)] = r5;
+	__FUNCTION_TABLE__[(r4)>>2](i7);
+	r4 = r_g0;
+	heap32[(r0+17)] = r4;
+if(!(r4 ==0)) //_LBB143_14
+{
+	r4 = heap32[(r1)];
+	r4 = r4 >> 2;
+	r5 = heap32[(r2+32)];
+	r4 = heap32[(r4+4)];
+	heap32[(g0)] = r3;
+	heap32[(g0+1)] = 16;
+	heap32[(g0+2)] = r5;
+	__FUNCTION_TABLE__[(r4)>>2](i7);
+	r4 = r_g0;
+_14: do {
+if(!(r5 <1)) //_LBB143_13
+{
+	r6 = r4 >> 2;
+	r7 = 0;
+	r6 = heap32[(r6+2)];
+	r5 = (r7 - r5)|0;
+_16: while(true){
+	r8 = r7 << 4;
+	r9 = heap32[(r2+34)];
+	r9 = (r9 - r8)|0;
+	r9 = r9 >> 2;
+	r10 = (r6 - r8)|0;
+	r9 = heap32[(r9+3)];
+	r11 = r10 >> 2;
+	heap32[(r11+3)] = r9;
+	r9 = heap32[(r2+34)];
+	r9 = (r9 - r8)|0;
+	r9 = heapU16[(r9+6)>>1];
+	heap16[(r10+6)>>1] = r9;
+	r9 = heap32[(r2+34)];
+	r9 = (r9 - r8)|0;
+	r9 = heapU16[(r9+8)>>1];
+	heap16[(r10+8)>>1] = r9;
+	r9 = heap32[(r2+34)];
+	r9 = (r9 - r8)|0;
+	r9 = heapU16[(r9+10)>>1];
+	heap16[(r10+10)>>1] = r9;
+	r9 = heap32[(r2+34)];
+	r9 = (r9 - r8)|0;
+	r9 = heapU16[(r9)>>1];
+	heap16[(r10)>>1] = r9;
+	r9 = heap32[(r2+34)];
+	r9 = (r9 - r8)|0;
+	r9 = heapU16[(r9+2)>>1];
+	heap16[(r10+2)>>1] = r9;
+	r9 = heap32[(r2+34)];
+	r8 = (r9 - r8)|0;
+	r8 = heapU16[(r8+4)>>1];
+	r7 = (r7 + -1)|0;
+	heap16[(r10+4)>>1] = r8;
+if(!(r5 !=r7)) //_LBB143_12
+{
+break _14;
+}
+}
+}
+} while(0);
+	r1 = heap32[(r1)];
+	r1 = r1 >> 2;
+	r1 = heap32[(r1+5)];
+	r5 = heap32[(r2+34)];
+	r6 = _2E_str133;
+	heap32[(g0)] = r3;
+	heap32[(g0+1)] = r4;
+	heap32[(g0+2)] = r6;
+	heap32[(g0+3)] = 1497453121;
+	heap32[(g0+4)] = r5;
+	__FUNCTION_TABLE__[(r1)>>2](i7);
+}
+}
+else{
+	heap32[(r0+17)] = 0;
+}
+	r1 = heap32[(r2+36)];
+	heap32[(r0+19)] = r1;
+	r1 = heap32[(r2+38)];
+	heap32[(r0+20)] = r1;
+	r1 = heap32[(r2+38)];
+	if(r1 !=0) //_LBB143_16
+{
+	r1 = r3 >> 2;
+	r4 = heap32[(r1)];
+	r4 = r4 >> 2;
+	r4 = heap32[(r4+7)];
+	r5 = heap32[(r2+40)];
+	heap32[(g0)] = r3;
+	heap32[(g0+1)] = r5;
+	__FUNCTION_TABLE__[(r4)>>2](i7);
+	r4 = r_g0;
+	heap32[(r0+18)] = r4;
+if(!(r4 ==0)) //_LBB143_21
+{
+	r0 = heap32[(r1)];
+	r0 = r0 >> 2;
+	r4 = heap32[(r2+38)];
+	r0 = heap32[(r0+4)];
+	heap32[(g0)] = r3;
+	heap32[(g0+1)] = 20;
+	heap32[(g0+2)] = r4;
+	__FUNCTION_TABLE__[(r0)>>2](i7);
+	r0 = r_g0;
+_24: do {
+if(!(r4 <1)) //_LBB143_20
+{
+	r5 = r0 >> 2;
+	r6 = 0;
+	r5 = heap32[(r5+2)];
+	r4 = (r6 - r4)|0;
+_26: while(true){
+	r7 = r6 << 5;
+	r8 = heap32[(r2+40)];
+	r9 = (r6 * -10)|0;
+	r8 = (r8 - r7)|0;
+	r8 = heapU16[(r8+6)>>1];
+	r9 = r9 << 1;
+	r9 = (r5 + r9)|0;
+	heap16[(r9+14)>>1] = r8;
+	r8 = heap32[(r2+40)];
+	r8 = (r8 - r7)|0;
+	r8 = heapU16[(r8+8)>>1];
+	heap16[(r9+16)>>1] = r8;
+	r8 = heap32[(r2+40)];
+	r8 = (r8 - r7)|0;
+	r8 = heapU16[(r8+10)>>1];
+	heap16[(r9+18)>>1] = r8;
+	r8 = heap32[(r2+40)];
+	r8 = (r8 - r7)|0;
+	r8 = heapU16[(r8)>>1];
+	heap16[(r9+8)>>1] = r8;
+	r8 = heap32[(r2+40)];
+	r8 = (r8 - r7)|0;
+	r8 = heapU16[(r8+2)>>1];
+	heap16[(r9+10)>>1] = r8;
+	r8 = heap32[(r2+40)];
+	r8 = (r8 - r7)|0;
+	r8 = heapU16[(r8+4)>>1];
+	heap16[(r9+12)>>1] = r8;
+	r8 = heap32[(r2+40)];
+	r9 = (r6 * -5)|0;
+	r8 = (r8 - r7)|0;
+	r9 = r9 << 2;
+	r8 = r8 >> 2;
+	r9 = (r5 + r9)|0;
+	r8 = heap32[(r8+3)];
+	r9 = r9 >> 2;
+	heap32[(r9)] = r8;
+	r8 = heap32[(r2+40)];
+	r7 = (r8 - r7)|0;
+	r7 = r7 >> 2;
+	r7 = heap32[(r7+4)];
+	r6 = (r6 + -1)|0;
+	heap32[(r9+1)] = r7;
+if(!(r4 !=r6)) //_LBB143_19
+{
+break _24;
+}
+}
+}
+} while(0);
+	r1 = heap32[(r1)];
+	r1 = r1 >> 2;
+	r1 = heap32[(r1+5)];
+	r2 = heap32[(r2+40)];
+	r4 = _2E_str234;
+	heap32[(g0)] = r3;
+	heap32[(g0+1)] = r0;
+	heap32[(g0+2)] = r4;
+	heap32[(g0+3)] = 1497453121;
+	heap32[(g0+4)] = r2;
+	__FUNCTION_TABLE__[(r1)>>2](i7);
+}
+}
+else{
+	heap32[(r0+18)] = 0;
+}
+	r0 = _2E_str335;
+	r_g0 = r0;
+	return;
+}
+
+function _ZN14btQuantizedBvhD1Ev(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+var __label__ = 0;
+	i7 = sp + -8;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	heap32[(g0)] = r0;
+	_ZN14btQuantizedBvhD2Ev(i7);
+	return;
+}
+
+function _ZN14btQuantizedBvhD0Ev(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+var __label__ = 0;
+	i7 = sp + -8;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = _ZTV14btQuantizedBvh;
+	r2 = r0 >> 2;
+	r1 = (r1 + 8)|0;
+	heap32[(r2)] = r1;
+	r1 = heap32[(r2+40)];
+if(!(r1 ==0)) //_LBB145_4
+{
+	r3 = heapU8[r0+164];
+if(!(r3 ==0)) //_LBB145_3
+{
+	r3 = gNumAlignedFree;
+	r3 = r3 >> 2;
+	r4 = heap32[(r3)];
+	r4 = (r4 + 1)|0;
+	r1 = r1 >> 2;
+	heap32[(r3)] = r4;
+	r1 = heap32[(r1+-1)];
+	heap32[(g0)] = r1;
+	free(i7);
+}
+	heap32[(r2+40)] = 0;
+}
+	r1 = 1;
+	heap8[r0+164] = r1;
+	heap32[(r2+40)] = 0;
+	heap32[(r2+38)] = 0;
+	heap32[(r2+39)] = 0;
+	r3 = heap32[(r2+34)];
+if(!(r3 ==0)) //_LBB145_8
+{
+	r4 = heapU8[r0+140];
+if(!(r4 ==0)) //_LBB145_7
+{
+	r4 = gNumAlignedFree;
+	r4 = r4 >> 2;
+	r5 = heap32[(r4)];
+	r5 = (r5 + 1)|0;
+	r3 = r3 >> 2;
+	heap32[(r4)] = r5;
+	r3 = heap32[(r3+-1)];
+	heap32[(g0)] = r3;
+	free(i7);
+}
+	heap32[(r2+34)] = 0;
+}
+	heap8[r0+140] = r1;
+	heap32[(r2+34)] = 0;
+	heap32[(r2+32)] = 0;
+	heap32[(r2+33)] = 0;
+	r3 = heap32[(r2+29)];
+if(!(r3 ==0)) //_LBB145_12
+{
+	r4 = heapU8[r0+120];
+if(!(r4 ==0)) //_LBB145_11
+{
+	r4 = gNumAlignedFree;
+	r4 = r4 >> 2;
+	r5 = heap32[(r4)];
+	r5 = (r5 + 1)|0;
+	r3 = r3 >> 2;
+	heap32[(r4)] = r5;
+	r3 = heap32[(r3+-1)];
+	heap32[(g0)] = r3;
+	free(i7);
+}
+	heap32[(r2+29)] = 0;
+}
+	heap8[r0+120] = r1;
+	heap32[(r2+29)] = 0;
+	heap32[(r2+27)] = 0;
+	heap32[(r2+28)] = 0;
+	r3 = heap32[(r2+24)];
+if(!(r3 ==0)) //_LBB145_16
+{
+	r4 = heapU8[r0+100];
+if(!(r4 ==0)) //_LBB145_15
+{
+	r4 = gNumAlignedFree;
+	r4 = r4 >> 2;
+	r5 = heap32[(r4)];
+	r5 = (r5 + 1)|0;
+	r3 = r3 >> 2;
+	heap32[(r4)] = r5;
+	r3 = heap32[(r3+-1)];
+	heap32[(g0)] = r3;
+	free(i7);
+}
+	heap32[(r2+24)] = 0;
+}
+	heap8[r0+100] = r1;
+	heap32[(r2+24)] = 0;
+	heap32[(r2+22)] = 0;
+	heap32[(r2+23)] = 0;
+	r3 = heap32[(r2+19)];
+if(!(r3 ==0)) //_LBB145_20
+{
+	r4 = heapU8[r0+80];
+if(!(r4 ==0)) //_LBB145_19
+{
+	r4 = gNumAlignedFree;
+	r4 = r4 >> 2;
+	r5 = heap32[(r4)];
+	r5 = (r5 + 1)|0;
+	r3 = r3 >> 2;
+	heap32[(r4)] = r5;
+	r3 = heap32[(r3+-1)];
+	heap32[(g0)] = r3;
+	free(i7);
+}
+	heap32[(r2+19)] = 0;
+}
+	heap8[r0+80] = r1;
+	heap32[(r2+19)] = 0;
+	heap32[(r2+17)] = 0;
+	heap32[(r2+18)] = 0;
+if(!(r0 ==0)) //_LBB145_22
+{
+	r0 = gNumAlignedFree;
+	r0 = r0 >> 2;
+	r1 = heap32[(r0)];
+	r1 = (r1 + 1)|0;
+	heap32[(r0)] = r1;
+	r0 = heap32[(r2+-1)];
+	heap32[(g0)] = r0;
+	free(i7);
+}
+	return;
+}
+
+function _ZNK14btQuantizedBvh9serializeEPvjb(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+	var r6;
+	var r7;
+	var r8;
+	var r9;
+	var r10;
+	var r11;
+	var r12;
+var __label__ = 0;
+	i7 = sp + -16;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = r0 >> 2;
+	r2 = heap32[(r1+38)];
+	r3 = heap32[(r1+42)];
+	if(r3 ==r2) //_LBB146_2
+{
+	r3 = heap32[(fp+1)];
+	r4 = heap32[(fp+3)];
+	r5 = _ZTV14btQuantizedBvh;
+	r6 = r3 >> 2;
+	r5 = (r5 + 8)|0;
+	heap32[(r1+42)] = r2;
+	heap32[(r6)] = r5;
+	r2 = 0;
+	heap32[(r6+13)] = 277;
+	r5 = 1;
+	heap8[r3+60] = r2;
+	heap8[r3+80] = r5;
+	heap32[(r6+19)] = 0;
+	heap32[(r6+17)] = 0;
+	heap32[(r6+18)] = 0;
+	heap8[r3+100] = r5;
+	heap32[(r6+24)] = 0;
+	heap32[(r6+22)] = 0;
+	heap32[(r6+23)] = 0;
+	heap8[r3+120] = r5;
+	heap32[(r6+29)] = 0;
+	heap32[(r6+27)] = 0;
+	heap32[(r6+28)] = 0;
+	heap8[r3+140] = r5;
+	heap32[(r6+34)] = 0;
+	heap32[(r6+32)] = 0;
+	heap32[(r6+33)] = 0;
+	heap32[(r6+36)] = 0;
+	heap8[r3+164] = r5;
+	heap32[(r6+40)] = 0;
+	heap32[(r6+38)] = 0;
+	heap32[(r6+39)] = 0;
+	heap32[(r6+42)] = 0;
+	heap32[(r6+1)] = -8388609;
+	heap32[(r6+2)] = -8388609;
+	heap32[(r6+3)] = -8388609;
+	heap32[(r6+4)] = 0;
+	heap32[(r6+5)] = 2139095039;
+	heap32[(r6+6)] = 2139095039;
+	heap32[(r6+7)] = 2139095039;
+	heap32[(r6+8)] = 0;
+	r7 = heap32[(r1+14)];
+	if(r4 ==0) //_LBB146_4
+{
+	heap32[(r6+14)] = r7;
+	heap32[(r6+1)] = heap32[(r1+1)];
+	heap32[(r6+2)] = heap32[(r1+2)];
+	heap32[(r6+3)] = heap32[(r1+3)];
+	heap32[(r6+4)] = heap32[(r1+4)];
+	heap32[(r6+5)] = heap32[(r1+5)];
+	heap32[(r6+6)] = heap32[(r1+6)];
+	heap32[(r6+7)] = heap32[(r1+7)];
+	heap32[(r6+8)] = heap32[(r1+8)];
+	heap32[(r6+9)] = heap32[(r1+9)];
+	heap32[(r6+10)] = heap32[(r1+10)];
+	heap32[(r6+11)] = heap32[(r1+11)];
+	heap32[(r6+12)] = heap32[(r1+12)];
+	r7 = heap32[(r1+36)];
+	heap32[(r6+36)] = r7;
+	r7 = heap32[(r1+42)];
+}
+else{
+	r8 = r7 << 8;
+	r9 = r7 >>> 8;
+	r10 = r7 << 24;
+	r8 = r8 & 16711680;
+	r9 = r9 & 65280;
+	r7 = r7 >>> 24;
+	r8 = r10 | r8;
+	r7 = r9 | r7;
+	r7 = r8 | r7;
+	heap32[(r6+14)] = r7;
+	r7 = heapU8[r0+7];
+	heap8[r3+4] = r7;
+	r7 = heapU8[r0+6];
+	heap8[r3+5] = r7;
+	r7 = heapU8[r0+5];
+	heap8[r3+6] = r7;
+	r7 = heapU8[r0+4];
+	heap8[r3+7] = r7;
+	r7 = heapU8[r0+11];
+	heap8[r3+8] = r7;
+	r7 = heapU8[r0+10];
+	heap8[r3+9] = r7;
+	r7 = heapU8[r0+9];
+	heap8[r3+10] = r7;
+	r7 = heapU8[r0+8];
+	heap8[r3+11] = r7;
+	r7 = heapU8[r0+15];
+	heap8[r3+12] = r7;
+	r7 = heapU8[r0+14];
+	heap8[r3+13] = r7;
+	r7 = heapU8[r0+13];
+	heap8[r3+14] = r7;
+	r7 = heapU8[r0+12];
+	heap8[r3+15] = r7;
+	r7 = heapU8[r0+19];
+	heap8[r3+16] = r7;
+	r7 = heapU8[r0+18];
+	heap8[r3+17] = r7;
+	r7 = heapU8[r0+17];
+	heap8[r3+18] = r7;
+	r7 = heapU8[r0+16];
+	heap8[r3+19] = r7;
+	r7 = heapU8[r0+23];
+	heap8[r3+20] = r7;
+	r7 = heapU8[r0+22];
+	heap8[r3+21] = r7;
+	r7 = heapU8[r0+21];
+	heap8[r3+22] = r7;
+	r7 = heapU8[r0+20];
+	heap8[r3+23] = r7;
+	r7 = heapU8[r0+27];
+	heap8[r3+24] = r7;
+	r7 = heapU8[r0+26];
+	heap8[r3+25] = r7;
+	r7 = heapU8[r0+25];
+	heap8[r3+26] = r7;
+	r7 = heapU8[r0+24];
+	heap8[r3+27] = r7;
+	r7 = heapU8[r0+31];
+	heap8[r3+28] = r7;
+	r7 = heapU8[r0+30];
+	heap8[r3+29] = r7;
+	r7 = heapU8[r0+29];
+	heap8[r3+30] = r7;
+	r7 = heapU8[r0+28];
+	heap8[r3+31] = r7;
+	r7 = heapU8[r0+35];
+	heap8[r3+32] = r7;
+	r7 = heapU8[r0+34];
+	heap8[r3+33] = r7;
+	r7 = heapU8[r0+33];
+	heap8[r3+34] = r7;
+	r7 = heapU8[r0+32];
+	heap8[r3+35] = r7;
+	r7 = heapU8[r0+39];
+	heap8[r3+36] = r7;
+	r7 = heapU8[r0+38];
+	heap8[r3+37] = r7;
+	r7 = heapU8[r0+37];
+	heap8[r3+38] = r7;
+	r7 = heapU8[r0+36];
+	heap8[r3+39] = r7;
+	r7 = heapU8[r0+43];
+	heap8[r3+40] = r7;
+	r7 = heapU8[r0+42];
+	heap8[r3+41] = r7;
+	r7 = heapU8[r0+41];
+	heap8[r3+42] = r7;
+	r7 = heapU8[r0+40];
+	heap8[r3+43] = r7;
+	r7 = heapU8[r0+47];
+	heap8[r3+44] = r7;
+	r7 = heapU8[r0+46];
+	heap8[r3+45] = r7;
+	r7 = heapU8[r0+45];
+	heap8[r3+46] = r7;
+	r7 = heapU8[r0+44];
+	heap8[r3+47] = r7;
+	r7 = heapU8[r0+51];
+	heap8[r3+48] = r7;
+	r7 = heapU8[r0+50];
+	heap8[r3+49] = r7;
+	r7 = heapU8[r0+49];
+	heap8[r3+50] = r7;
+	r7 = heapU8[r0+48];
+	heap8[r3+51] = r7;
+	r7 = heap32[(r1+36)];
+	r8 = r7 << 8;
+	r9 = r7 >>> 8;
+	r10 = r7 << 24;
+	r8 = r8 & 16711680;
+	r9 = r9 & 65280;
+	r7 = r7 >>> 24;
+	r8 = r10 | r8;
+	r7 = r9 | r7;
+	r7 = r8 | r7;
+	heap32[(r6+36)] = r7;
+	r7 = heap32[(r1+42)];
+	r8 = r7 << 8;
+	r9 = r7 >>> 8;
+	r10 = r7 << 24;
+	r8 = r8 & 16711680;
+	r9 = r9 & 65280;
+	r7 = r7 >>> 24;
+	r8 = r10 | r8;
+	r7 = r9 | r7;
+	r7 = r8 | r7;
+}
+	heap32[(r6+42)] = r7;
+	r7 = heapU8[r0+60];
+	heap8[r3+60] = r7;
+	r7 = (r3 + 172)|0;
+	r8 = heap32[(r1+14)];
+	r0 = heapU8[r0+60];
+	if(r0 ==0) //_LBB146_20
+{
+	r0 = 0;
+	heap8[r3+100] = r0;
+	heap32[(r6+24)] = r7;
+	heap32[(r6+22)] = r8;
+	heap32[(r6+23)] = r8;
+_9: do {
+	if(r4 !=0) //_LBB146_22
+{
+if(!(r8 <1)) //_LBB146_29
+{
+	r5 = (r5 - r8)|0;
+_12: while(true){
+	r2 = r0 << 6;
+	r9 = heap32[(r1+24)];
+	r9 = (r9 - r2)|0;
+	r10 = heapU8[r9+3];
+	r7 = (r7 - r2)|0;
+	heap8[r7] = r10;
+	r10 = heapU8[r9+2];
+	heap8[r7+1] = r10;
+	r10 = heapU8[r9+1];
+	heap8[r7+2] = r10;
+	r10 = heapU8[r9];
+	heap8[r7+3] = r10;
+	r10 = heapU8[r9+7];
+	heap8[r7+4] = r10;
+	r10 = heapU8[r9+6];
+	heap8[r7+5] = r10;
+	r10 = heapU8[r9+5];
+	heap8[r7+6] = r10;
+	r10 = heapU8[r9+4];
+	heap8[r7+7] = r10;
+	r10 = heapU8[r9+11];
+	heap8[r7+8] = r10;
+	r10 = heapU8[r9+10];
+	heap8[r7+9] = r10;
+	r10 = heapU8[r9+9];
+	heap8[r7+10] = r10;
+	r10 = heapU8[r9+8];
+	heap8[r7+11] = r10;
+	r10 = heapU8[r9+15];
+	heap8[r7+12] = r10;
+	r10 = heapU8[r9+14];
+	heap8[r7+13] = r10;
+	r10 = heapU8[r9+13];
+	heap8[r7+14] = r10;
+	r9 = heapU8[r9+12];
+	heap8[r7+15] = r9;
+	r7 = heap32[(r1+24)];
+	r7 = (r7 - r2)|0;
+	r9 = heap32[(r6+24)];
+	r10 = heapU8[r7+19];
+	r9 = (r9 - r2)|0;
+	heap8[r9+16] = r10;
+	r10 = heapU8[r7+18];
+	heap8[r9+17] = r10;
+	r10 = heapU8[r7+17];
+	heap8[r9+18] = r10;
+	r10 = heapU8[r7+16];
+	heap8[r9+19] = r10;
+	r10 = heapU8[r7+23];
+	heap8[r9+20] = r10;
+	r10 = heapU8[r7+22];
+	heap8[r9+21] = r10;
+	r10 = heapU8[r7+21];
+	heap8[r9+22] = r10;
+	r10 = heapU8[r7+20];
+	heap8[r9+23] = r10;
+	r10 = heapU8[r7+27];
+	heap8[r9+24] = r10;
+	r10 = heapU8[r7+26];
+	heap8[r9+25] = r10;
+	r10 = heapU8[r7+25];
+	heap8[r9+26] = r10;
+	r10 = heapU8[r7+24];
+	heap8[r9+27] = r10;
+	r10 = heapU8[r7+31];
+	heap8[r9+28] = r10;
+	r10 = heapU8[r7+30];
+	heap8[r9+29] = r10;
+	r10 = heapU8[r7+29];
+	heap8[r9+30] = r10;
+	r7 = heapU8[r7+28];
+	heap8[r9+31] = r7;
+	r7 = heap32[(r1+24)];
+	r7 = (r7 - r2)|0;
+	r7 = r7 >> 2;
+	r7 = heap32[(r7+8)];
+	r9 = r7 << 8;
+	r10 = r7 >>> 8;
+	r11 = heap32[(r6+24)];
+	r12 = r7 << 24;
+	r9 = r9 & 16711680;
+	r10 = r10 & 65280;
+	r7 = r7 >>> 24;
+	r11 = (r11 - r2)|0;
+	r9 = r12 | r9;
+	r7 = r10 | r7;
+	r10 = r11 >> 2;
+	r7 = r9 | r7;
+	heap32[(r10+8)] = r7;
+	r7 = heap32[(r1+24)];
+	r7 = (r7 - r2)|0;
+	r7 = r7 >> 2;
+	r7 = heap32[(r7+9)];
+	r9 = r7 << 8;
+	r10 = r7 >>> 8;
+	r11 = heap32[(r6+24)];
+	r12 = r7 << 24;
+	r9 = r9 & 16711680;
+	r10 = r10 & 65280;
+	r7 = r7 >>> 24;
+	r11 = (r11 - r2)|0;
+	r9 = r12 | r9;
+	r7 = r10 | r7;
+	r10 = r11 >> 2;
+	r7 = r9 | r7;
+	heap32[(r10+9)] = r7;
+	r7 = heap32[(r1+24)];
+	r7 = (r7 - r2)|0;
+	r7 = r7 >> 2;
+	r7 = heap32[(r7+10)];
+	r9 = r7 << 8;
+	r10 = r7 >>> 8;
+	r11 = heap32[(r6+24)];
+	r12 = r7 << 24;
+	r9 = r9 & 16711680;
+	r10 = r10 & 65280;
+	r7 = r7 >>> 24;
+	r2 = (r11 - r2)|0;
+	r9 = r12 | r9;
+	r7 = r10 | r7;
+	r2 = r2 >> 2;
+	r7 = r9 | r7;
+	heap32[(r2+10)] = r7;
+	if(r5 ==r0) //_LBB146_29
+{
+break _9;
+}
+else{
+	r7 = heap32[(r6+24)];
+	r0 = (r0 + -1)|0;
+}
+}
+}
+}
+else{
+	if(r8 >0) //_LBB146_26
+{
+	r5 = (r5 - r8)|0;
+	r0 = 0;
+_17: while(true){
+	r2 = r0 << 6;
+	r9 = heap32[(r1+24)];
+	r7 = (r7 - r2)|0;
+	r9 = (r9 - r2)|0;
+	r7 = r7 >> 2;
+	r9 = r9 >> 2;
+	heap32[(r7)] = heap32[(r9)];
+	heap32[(r7+1)] = heap32[(r9+1)];
+	heap32[(r7+2)] = heap32[(r9+2)];
+	heap32[(r7+3)] = heap32[(r9+3)];
+	r7 = heap32[(r6+24)];
+	r9 = heap32[(r1+24)];
+	r7 = (r7 - r2)|0;
+	r9 = (r9 - r2)|0;
+	r7 = r7 >> 2;
+	r9 = r9 >> 2;
+	heap32[(r7+4)] = heap32[(r9+4)];
+	heap32[(r7+5)] = heap32[(r9+5)];
+	heap32[(r7+6)] = heap32[(r9+6)];
+	heap32[(r7+7)] = heap32[(r9+7)];
+	r7 = heap32[(r1+24)];
+	r7 = (r7 - r2)|0;
+	r7 = r7 >> 2;
+	r9 = heap32[(r6+24)];
+	r9 = (r9 - r2)|0;
+	r7 = heap32[(r7+8)];
+	r9 = r9 >> 2;
+	heap32[(r9+8)] = r7;
+	r7 = heap32[(r1+24)];
+	r7 = (r7 - r2)|0;
+	r7 = r7 >> 2;
+	r9 = heap32[(r6+24)];
+	r9 = (r9 - r2)|0;
+	r7 = heap32[(r7+9)];
+	r9 = r9 >> 2;
+	heap32[(r9+9)] = r7;
+	r7 = heap32[(r1+24)];
+	r7 = (r7 - r2)|0;
+	r7 = r7 >> 2;
+	r9 = heap32[(r6+24)];
+	r2 = (r9 - r2)|0;
+	r7 = heap32[(r7+10)];
+	r2 = r2 >> 2;
+	heap32[(r2+10)] = r7;
+	if(r5 ==r0) //_LBB146_29
+{
+break _9;
+}
+else{
+	r7 = heap32[(r6+24)];
+	r0 = (r0 + -1)|0;
+}
+}
+}
+}
+} while(0);
+	r5 = heap32[(r6+24)];
+if(!(r5 ==0)) //_LBB146_33
+{
+	r0 = heapU8[r3+100];
+if(!(r0 ==0)) //_LBB146_32
+{
+	r0 = gNumAlignedFree;
+	r0 = r0 >> 2;
+	r2 = heap32[(r0)];
+	r2 = (r2 + 1)|0;
+	r5 = r5 >> 2;
+	heap32[(r0)] = r2;
+	r5 = heap32[(r5+-1)];
+	heap32[(g0)] = r5;
+	free(i7);
+}
+	heap32[(r6+24)] = 0;
+}
+	r5 = r8 << 6;
+	r0 = 0;
+	heap8[r3+100] = r0;
+	heap32[(r6+24)] = 0;
+	heap32[(r6+22)] = 0;
+	heap32[(r6+23)] = 0;
+}
+else{
+	heap8[r3+140] = r2;
+	heap32[(r6+34)] = r7;
+	heap32[(r6+32)] = r8;
+	heap32[(r6+33)] = r8;
+_28: do {
+	if(r4 !=0) //_LBB146_8
+{
+if(!(r8 <1)) //_LBB146_15
+{
+	r5 = (r5 - r8)|0;
+_31: while(true){
+	r0 = heap32[(r1+34)];
+	r9 = r2 << 4;
+	r0 = (r0 - r9)|0;
+	r0 = heapU16[(r0)>>1];
+	r10 = r0 << 8;
+	r0 = r0 << 24;
+	r10 = r10 & 16711680;
+	r0 = r0 | r10;
+	r7 = (r7 - r9)|0;
+	r0 = r0 >>> 16;
+	heap16[(r7)>>1] = r0;
+	r7 = heap32[(r1+34)];
+	r7 = (r7 - r9)|0;
+	r7 = heapU16[(r7+2)>>1];
+	r0 = r7 << 8;
+	r7 = r7 << 24;
+	r0 = r0 & 16711680;
+	r10 = heap32[(r6+34)];
+	r7 = r7 | r0;
+	r0 = (r10 - r9)|0;
+	r7 = r7 >>> 16;
+	heap16[(r0+2)>>1] = r7;
+	r7 = heap32[(r1+34)];
+	r7 = (r7 - r9)|0;
+	r7 = heapU16[(r7+4)>>1];
+	r0 = r7 << 8;
+	r7 = r7 << 24;
+	r0 = r0 & 16711680;
+	r10 = heap32[(r6+34)];
+	r7 = r7 | r0;
+	r0 = (r10 - r9)|0;
+	r7 = r7 >>> 16;
+	heap16[(r0+4)>>1] = r7;
+	r7 = heap32[(r1+34)];
+	r7 = (r7 - r9)|0;
+	r7 = heapU16[(r7+6)>>1];
+	r0 = r7 << 8;
+	r7 = r7 << 24;
+	r0 = r0 & 16711680;
+	r10 = heap32[(r6+34)];
+	r7 = r7 | r0;
+	r0 = (r10 - r9)|0;
+	r7 = r7 >>> 16;
+	heap16[(r0+6)>>1] = r7;
+	r7 = heap32[(r1+34)];
+	r7 = (r7 - r9)|0;
+	r7 = heapU16[(r7+8)>>1];
+	r0 = r7 << 8;
+	r7 = r7 << 24;
+	r0 = r0 & 16711680;
+	r10 = heap32[(r6+34)];
+	r7 = r7 | r0;
+	r0 = (r10 - r9)|0;
+	r7 = r7 >>> 16;
+	heap16[(r0+8)>>1] = r7;
+	r7 = heap32[(r1+34)];
+	r7 = (r7 - r9)|0;
+	r7 = heapU16[(r7+10)>>1];
+	r0 = r7 << 8;
+	r7 = r7 << 24;
+	r0 = r0 & 16711680;
+	r10 = heap32[(r6+34)];
+	r7 = r7 | r0;
+	r0 = (r10 - r9)|0;
+	r7 = r7 >>> 16;
+	heap16[(r0+10)>>1] = r7;
+	r7 = heap32[(r1+34)];
+	r7 = (r7 - r9)|0;
+	r7 = r7 >> 2;
+	r7 = heap32[(r7+3)];
+	r0 = r7 << 8;
+	r10 = r7 >>> 8;
+	r11 = heap32[(r6+34)];
+	r12 = r7 << 24;
+	r0 = r0 & 16711680;
+	r10 = r10 & 65280;
+	r7 = r7 >>> 24;
+	r9 = (r11 - r9)|0;
+	r0 = r12 | r0;
+	r7 = r10 | r7;
+	r9 = r9 >> 2;
+	r7 = r0 | r7;
+	heap32[(r9+3)] = r7;
+	if(r5 ==r2) //_LBB146_15
+{
+break _28;
+}
+else{
+	r7 = heap32[(r6+34)];
+	r2 = (r2 + -1)|0;
+}
+}
+}
+}
+else{
+	if(r8 >0) //_LBB146_12
+{
+	r5 = (r5 - r8)|0;
+	r0 = 0;
+_36: while(true){
+	r2 = r0 << 4;
+	r9 = heap32[(r1+34)];
+	r9 = (r9 - r2)|0;
+	r9 = heapU16[(r9)>>1];
+	r7 = (r7 - r2)|0;
+	heap16[(r7)>>1] = r9;
+	r7 = heap32[(r1+34)];
+	r7 = (r7 - r2)|0;
+	r9 = heap32[(r6+34)];
+	r7 = heapU16[(r7+2)>>1];
+	r9 = (r9 - r2)|0;
+	heap16[(r9+2)>>1] = r7;
+	r7 = heap32[(r1+34)];
+	r7 = (r7 - r2)|0;
+	r9 = heap32[(r6+34)];
+	r7 = heapU16[(r7+4)>>1];
+	r9 = (r9 - r2)|0;
+	heap16[(r9+4)>>1] = r7;
+	r7 = heap32[(r1+34)];
+	r7 = (r7 - r2)|0;
+	r9 = heap32[(r6+34)];
+	r7 = heapU16[(r7+6)>>1];
+	r9 = (r9 - r2)|0;
+	heap16[(r9+6)>>1] = r7;
+	r7 = heap32[(r1+34)];
+	r7 = (r7 - r2)|0;
+	r9 = heap32[(r6+34)];
+	r7 = heapU16[(r7+8)>>1];
+	r9 = (r9 - r2)|0;
+	heap16[(r9+8)>>1] = r7;
+	r7 = heap32[(r1+34)];
+	r7 = (r7 - r2)|0;
+	r9 = heap32[(r6+34)];
+	r7 = heapU16[(r7+10)>>1];
+	r9 = (r9 - r2)|0;
+	heap16[(r9+10)>>1] = r7;
+	r7 = heap32[(r1+34)];
+	r7 = (r7 - r2)|0;
+	r7 = r7 >> 2;
+	r9 = heap32[(r6+34)];
+	r2 = (r9 - r2)|0;
+	r7 = heap32[(r7+3)];
+	r2 = r2 >> 2;
+	heap32[(r2+3)] = r7;
+	if(r5 ==r0) //_LBB146_15
+{
+break _28;
+}
+else{
+	r7 = heap32[(r6+34)];
+	r0 = (r0 + -1)|0;
+}
+}
+}
+}
+} while(0);
+	r5 = heap32[(r6+34)];
+if(!(r5 ==0)) //_LBB146_19
+{
+	r7 = heapU8[r3+140];
+if(!(r7 ==0)) //_LBB146_18
+{
+	r7 = gNumAlignedFree;
+	r7 = r7 >> 2;
+	r0 = heap32[(r7)];
+	r0 = (r0 + 1)|0;
+	r5 = r5 >> 2;
+	heap32[(r7)] = r0;
+	r5 = heap32[(r5+-1)];
+	heap32[(g0)] = r5;
+	free(i7);
+}
+	heap32[(r6+34)] = 0;
+}
+	r5 = r8 << 4;
+	r7 = 0;
+	heap8[r3+140] = r7;
+	heap32[(r6+34)] = 0;
+	heap32[(r6+32)] = 0;
+	heap32[(r6+33)] = 0;
+}
+	r0 = heap32[(r6+40)];
+	r2 = heap32[(r1+42)];
+if(!(r0 ==0)) //_LBB146_38
+{
+	r7 = heapU8[r3+164];
+if(!(r7 ==0)) //_LBB146_37
+{
+	r7 = gNumAlignedFree;
+	r7 = r7 >> 2;
+	r8 = heap32[(r7)];
+	r8 = (r8 + 1)|0;
+	r0 = r0 >> 2;
+	heap32[(r7)] = r8;
+	r0 = heap32[(r0+-1)];
+	heap32[(g0)] = r0;
+	free(i7);
+}
+	heap32[(r6+40)] = 0;
+}
+	r0 = (r5 + r3)|0;
+	r0 = (r0 + 172)|0;
+	r5 = 0;
+	heap8[r3+164] = r5;
+	heap32[(r6+40)] = r0;
+	heap32[(r6+38)] = r2;
+	heap32[(r6+39)] = r2;
+	r2 = heap32[(r1+42)];
+_53: do {
+	if(r4 !=0) //_LBB146_40
+{
+if(!(r2 <1)) //_LBB146_46
+{
+__label__ = 41; //SET chanka
+_55: while(true){
+	r2 = r5 << 5;
+	r4 = heap32[(r1+40)];
+	r4 = heapU16[(r4+r2)>>1];
+	r7 = r4 << 8;
+	r4 = r4 << 24;
+	r7 = r7 & 16711680;
+	r4 = r4 | r7;
+	r4 = r4 >>> 16;
+	heap16[(r0+r2)>>1] = r4;
+	r0 = heap32[(r1+40)];
+	r0 = (r0 + r2)|0;
+	r0 = heapU16[(r0+2)>>1];
+	r4 = r0 << 8;
+	r0 = r0 << 24;
+	r4 = r4 & 16711680;
+	r7 = heap32[(r6+40)];
+	r0 = r0 | r4;
+	r4 = (r7 + r2)|0;
+	r0 = r0 >>> 16;
+	heap16[(r4+2)>>1] = r0;
+	r0 = heap32[(r1+40)];
+	r0 = (r0 + r2)|0;
+	r0 = heapU16[(r0+4)>>1];
+	r4 = r0 << 8;
+	r0 = r0 << 24;
+	r4 = r4 & 16711680;
+	r7 = heap32[(r6+40)];
+	r0 = r0 | r4;
+	r4 = (r7 + r2)|0;
+	r0 = r0 >>> 16;
+	heap16[(r4+4)>>1] = r0;
+	r0 = heap32[(r1+40)];
+	r0 = (r0 + r2)|0;
+	r0 = heapU16[(r0+6)>>1];
+	r4 = r0 << 8;
+	r0 = r0 << 24;
+	r4 = r4 & 16711680;
+	r7 = heap32[(r6+40)];
+	r0 = r0 | r4;
+	r4 = (r7 + r2)|0;
+	r0 = r0 >>> 16;
+	heap16[(r4+6)>>1] = r0;
+	r0 = heap32[(r1+40)];
+	r0 = (r0 + r2)|0;
+	r0 = heapU16[(r0+8)>>1];
+	r4 = r0 << 8;
+	r0 = r0 << 24;
+	r4 = r4 & 16711680;
+	r7 = heap32[(r6+40)];
+	r0 = r0 | r4;
+	r4 = (r7 + r2)|0;
+	r0 = r0 >>> 16;
+	heap16[(r4+8)>>1] = r0;
+	r0 = heap32[(r1+40)];
+	r0 = (r0 + r2)|0;
+	r0 = heapU16[(r0+10)>>1];
+	r4 = r0 << 8;
+	r0 = r0 << 24;
+	r4 = r4 & 16711680;
+	r7 = heap32[(r6+40)];
+	r0 = r0 | r4;
+	r4 = (r7 + r2)|0;
+	r0 = r0 >>> 16;
+	heap16[(r4+10)>>1] = r0;
+	r0 = heap32[(r1+40)];
+	r0 = (r0 + r2)|0;
+	r0 = r0 >> 2;
+	r0 = heap32[(r0+3)];
+	r4 = r0 << 8;
+	r7 = r0 >>> 8;
+	r8 = heap32[(r6+40)];
+	r9 = r0 << 24;
+	r4 = r4 & 16711680;
+	r7 = r7 & 65280;
+	r0 = r0 >>> 24;
+	r8 = (r8 + r2)|0;
+	r4 = r9 | r4;
+	r0 = r7 | r0;
+	r7 = r8 >> 2;
+	r0 = r4 | r0;
+	heap32[(r7+3)] = r0;
+	r0 = heap32[(r1+40)];
+	r0 = (r0 + r2)|0;
+	r0 = r0 >> 2;
+	r0 = heap32[(r0+4)];
+	r4 = r0 << 8;
+	r7 = r0 >>> 8;
+	r8 = heap32[(r6+40)];
+	r9 = r0 << 24;
+	r4 = r4 & 16711680;
+	r7 = r7 & 65280;
+	r0 = r0 >>> 24;
+	r2 = (r8 + r2)|0;
+	r4 = r9 | r4;
+	r0 = r7 | r0;
+	r5 = (r5 + 1)|0;
+	r2 = r2 >> 2;
+	r0 = r4 | r0;
+	heap32[(r2+4)] = r0;
+	r0 = heap32[(r1+42)];
+	if(r0 <=r5) //_LBB146_46
+{
+break _53;
+}
+else{
+	r0 = heap32[(r6+40)];
+}
+}
+}
+}
+else{
+	if(r2 >0) //_LBB146_43
+{
+	r2 = 0;
+_60: while(true){
+	r4 = r2 << 5;
+	r5 = heap32[(r1+40)];
+	r5 = heapU16[(r5+r4)>>1];
+	heap16[(r0+r4)>>1] = r5;
+	r0 = heap32[(r1+40)];
+	r0 = (r0 + r4)|0;
+	r5 = heap32[(r6+40)];
+	r0 = heapU16[(r0+2)>>1];
+	r5 = (r5 + r4)|0;
+	heap16[(r5+2)>>1] = r0;
+	r0 = heap32[(r1+40)];
+	r0 = (r0 + r4)|0;
+	r5 = heap32[(r6+40)];
+	r0 = heapU16[(r0+4)>>1];
+	r5 = (r5 + r4)|0;
+	heap16[(r5+4)>>1] = r0;
+	r0 = heap32[(r1+40)];
+	r0 = (r0 + r4)|0;
+	r5 = heap32[(r6+40)];
+	r0 = heapU16[(r0+6)>>1];
+	r5 = (r5 + r4)|0;
+	heap16[(r5+6)>>1] = r0;
+	r0 = heap32[(r1+40)];
+	r0 = (r0 + r4)|0;
+	r5 = heap32[(r6+40)];
+	r0 = heapU16[(r0+8)>>1];
+	r5 = (r5 + r4)|0;
+	heap16[(r5+8)>>1] = r0;
+	r0 = heap32[(r1+40)];
+	r0 = (r0 + r4)|0;
+	r5 = heap32[(r6+40)];
+	r0 = heapU16[(r0+10)>>1];
+	r5 = (r5 + r4)|0;
+	heap16[(r5+10)>>1] = r0;
+	r0 = heap32[(r1+40)];
+	r0 = (r0 + r4)|0;
+	r0 = r0 >> 2;
+	r5 = heap32[(r6+40)];
+	r5 = (r5 + r4)|0;
+	r0 = heap32[(r0+3)];
+	r5 = r5 >> 2;
+	heap32[(r5+3)] = r0;
+	r0 = heap32[(r1+40)];
+	r0 = (r0 + r4)|0;
+	r0 = r0 >> 2;
+	r5 = heap32[(r6+40)];
+	r5 = (r5 + r4)|0;
+	r0 = heap32[(r0+4)];
+	r5 = r5 >> 2;
+	heap32[(r5+4)] = r0;
+	r0 = heap32[(r6+40)];
+	r0 = (r0 + r4)|0;
+	r0 = r0 >> 2;
+	heap32[(r0+5)] = 0;
+	r0 = heap32[(r6+40)];
+	r0 = (r0 + r4)|0;
+	r0 = r0 >> 2;
+	heap32[(r0+6)] = 0;
+	r0 = heap32[(r6+40)];
+	r0 = (r0 + r4)|0;
+	r2 = (r2 + 1)|0;
+	r0 = r0 >> 2;
+	heap32[(r0+7)] = 0;
+	r0 = heap32[(r1+42)];
+	if(r0 <=r2) //_LBB146_46
+{
+break _53;
+}
+else{
+	r0 = heap32[(r6+40)];
+}
+}
+}
+}
+} while(0);
+	r0 = heap32[(r6+40)];
+if(!(r0 ==0)) //_LBB146_50
+{
+	r1 = heapU8[r3+164];
+if(!(r1 ==0)) //_LBB146_49
+{
+	r1 = gNumAlignedFree;
+	r1 = r1 >> 2;
+	r2 = heap32[(r1)];
+	r2 = (r2 + 1)|0;
+	r0 = r0 >> 2;
+	heap32[(r1)] = r2;
+	r0 = heap32[(r0+-1)];
+	heap32[(g0)] = r0;
+	free(i7);
+}
+	heap32[(r6+40)] = 0;
+}
+	r0 = 0;
+	heap8[r3+164] = r0;
+	heap32[(r6+40)] = 0;
+	heap32[(r6+38)] = 0;
+	heap32[(r6+39)] = 0;
+	heap32[(r6)] = 0;
+	r0 = 1;
+	r_g0 = r0;
+	return;
+}
+else{
+	r0 = _2E_str638;
+	r1 = _2E_str537;
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r1;
+	heap32[(g0+2)] = 847;
+	_assert(i7);
+}
+}
+
+function _ZN14btQuantizedBvh16deSerializeFloatER23btQuantizedBvhFloatData(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+	var r6;
+	var r7;
+	var r8;
+	var r9;
+	var r10;
+	var r11;
+	var r12;
+	var r13;
+	var r14;
+	var r15;
+	var r16;
+	var r17;
+	var r18;
+var __label__ = 0;
+	i7 = sp + -16;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = heap32[(fp+1)];
+	r1 = r1 >> 2;
+	r2 = r0 >> 2;
+	heap32[(r2+5)] = heap32[(r1+4)];
+	heap32[(r2+6)] = heap32[(r1+5)];
+	heap32[(r2+7)] = heap32[(r1+6)];
+	heap32[(r2+8)] = heap32[(r1+7)];
+	heap32[(r2+1)] = heap32[(r1)];
+	heap32[(r2+2)] = heap32[(r1+1)];
+	heap32[(r2+3)] = heap32[(r1+2)];
+	heap32[(r2+4)] = heap32[(r1+3)];
+	heap32[(r2+9)] = heap32[(r1+8)];
+	heap32[(r2+10)] = heap32[(r1+9)];
+	heap32[(r2+11)] = heap32[(r1+10)];
+	heap32[(r2+12)] = heap32[(r1+11)];
+	r3 = heap32[(r1+12)];
+	heap32[(r2+14)] = r3;
+	r3 = 0;
+	r4 = heap32[(r1+13)];
+	r4 = r4 != r3;
+	r4 = r4 & 1;
+	heap8[r0+60] = r4;
+	r4 = heap32[(r2+22)];
+	r5 = heap32[(r1+14)];
+if(!(r4 >=r5)) //_LBB147_17
+{
+	r6 = heap32[(r2+23)];
+if(!(r6 >=r5)) //_LBB147_17
+{
+	if(r5 !=0) //_LBB147_4
+{
+	r6 = gNumAlignedAllocs;
+	r6 = r6 >> 2;
+	r7 = heap32[(r6)];
+	r7 = (r7 + 1)|0;
+	r8 = r5 << 6;
+	heap32[(r6)] = r7;
+	r6 = r8 | 19;
+	heap32[(g0)] = r6;
+	malloc(i7);
+	r6 = r_g0;
+	if(r6 !=0) //_LBB147_6
+{
+	r7 = 0;
+	r8 = (r6 + 4)|0;
+	r7 = (r7 - r8)|0;
+	r7 = r7 & 15;
+	r7 = (r6 + r7)|0;
+	r8 = (r7 + 4)|0;
+	r7 = r7 >> 2;
+	heap32[(r7)] = r6;
+	r6 = r8;
+}
+}
+else{
+	r6 = 0;
+}
+	r7 = (r0 + 96)|0;
+	if(r4 <1) //_LBB147_9
+{
+	r4 = r7 >> 2;
+	r9 = heap32[(r4)];
+}
+else{
+	r8 = 0;
+_12: while(true){
+	r9 = r7 >> 2;
+	r9 = heap32[(r9)];
+	r10 = (r6 + r8)|0;
+	r11 = (r9 + r8)|0;
+	heap32[(g0)] = r10;
+	heap32[(g0+1)] = r11;
+	heap32[(g0+2)] = 64;
+	r4 = (r4 + -1)|0;
+	r8 = (r8 + 64)|0;
+	memcpy(i7);
+if(!(r4 !=0)) //_LBB147_10
+{
+break _12;
+}
+}
+	r7 = (r0 + 96)|0;
+}
+if(!(r9 ==0)) //_LBB147_16
+{
+	r4 = heapU8[r0+100];
+if(!(r4 ==0)) //_LBB147_15
+{
+	r4 = gNumAlignedFree;
+	r4 = r4 >> 2;
+	r8 = heap32[(r4)];
+	r8 = (r8 + 1)|0;
+	r9 = r9 >> 2;
+	heap32[(r4)] = r8;
+	r4 = heap32[(r9+-1)];
+	heap32[(g0)] = r4;
+	free(i7);
+}
+	r4 = r7 >> 2;
+	heap32[(r4)] = 0;
+}
+	r4 = 1;
+	r7 = r7 >> 2;
+	heap8[r0+100] = r4;
+	heap32[(r7)] = r6;
+	heap32[(r2+23)] = r5;
+}
+}
+	heap32[(r2+22)] = r5;
+_23: do {
+if(!(r5 <1)) //_LBB147_20
+{
+	r4 = 0;
+	r6 = heap32[(r1+16)];
+	r5 = (r4 - r5)|0;
+_25: while(true){
+	r7 = (r4 * -12)|0;
+	r7 = r7 << 2;
+	r8 = r4 << 6;
+	r9 = heap32[(r2+24)];
+	r7 = (r6 + r7)|0;
+	r9 = (r9 - r8)|0;
+	r7 = r7 >> 2;
+	r9 = r9 >> 2;
+	heap32[(r9+4)] = heap32[(r7+4)];
+	heap32[(r9+5)] = heap32[(r7+5)];
+	heap32[(r9+6)] = heap32[(r7+6)];
+	heap32[(r9+7)] = heap32[(r7+7)];
+	r9 = heap32[(r2+24)];
+	r9 = (r9 - r8)|0;
+	r9 = r9 >> 2;
+	heap32[(r9)] = heap32[(r7)];
+	heap32[(r9+1)] = heap32[(r7+1)];
+	heap32[(r9+2)] = heap32[(r7+2)];
+	heap32[(r9+3)] = heap32[(r7+3)];
+	r9 = heap32[(r2+24)];
+	r9 = (r9 - r8)|0;
+	r10 = heap32[(r7+8)];
+	r9 = r9 >> 2;
+	heap32[(r9+8)] = r10;
+	r9 = heap32[(r2+24)];
+	r9 = (r9 - r8)|0;
+	r10 = heap32[(r7+9)];
+	r9 = r9 >> 2;
+	heap32[(r9+9)] = r10;
+	r9 = heap32[(r2+24)];
+	r8 = (r9 - r8)|0;
+	r7 = heap32[(r7+10)];
+	r4 = (r4 + -1)|0;
+	r8 = r8 >> 2;
+	heap32[(r8+10)] = r7;
+	if(r5 !=r4) //_LBB147_19
+{
+continue _25;
+}
+else{
+break _23;
+}
+}
+}
+} while(0);
+	r4 = heap32[(r2+32)];
+	r5 = heap32[(r1+15)];
+_28: do {
+if(!(r4 >=r5)) //_LBB147_23
+{
+	r6 = (r0 + 124)|0;
+	heap32[(g0)] = r6;
+	heap32[(g0+1)] = r5;
+	r6 = (r5 - r4)|0;
+	r4 = r4 << 4;
+	_ZN20btAlignedObjectArrayI18btQuantizedBvhNodeE7reserveEi(i7);
+_30: while(true){
+	r7 = heap32[(r2+34)];
+	r7 = (r7 + r4)|0;
+	r7 = r7 >> 2;
+	r6 = (r6 + -1)|0;
+	r4 = (r4 + 16)|0;
+	heap32[(r7)] = 0;
+	heap32[(r7+1)] = 0;
+	heap32[(r7+2)] = 0;
+	heap32[(r7+3)] = 0;
+	if(r6 !=0) //_LBB147_22
+{
+continue _30;
+}
+else{
+break _28;
+}
+}
+}
+} while(0);
+	heap32[(r2+32)] = r5;
+_33: do {
+if(!(r5 <1)) //_LBB147_26
+{
+	r4 = 0;
+	r6 = heap32[(r1+17)];
+	r5 = (r4 - r5)|0;
+_35: while(true){
+	r7 = r4 << 4;
+	r8 = (r6 - r7)|0;
+	r9 = r8 >> 2;
+	r10 = heap32[(r2+34)];
+	r10 = (r10 - r7)|0;
+	r9 = heap32[(r9+3)];
+	r10 = r10 >> 2;
+	heap32[(r10+3)] = r9;
+	r9 = heap32[(r2+34)];
+	r10 = heapU16[(r8+6)>>1];
+	r9 = (r9 - r7)|0;
+	heap16[(r9+6)>>1] = r10;
+	r9 = heap32[(r2+34)];
+	r10 = heapU16[(r8+8)>>1];
+	r9 = (r9 - r7)|0;
+	heap16[(r9+8)>>1] = r10;
+	r9 = heap32[(r2+34)];
+	r10 = heapU16[(r8+10)>>1];
+	r9 = (r9 - r7)|0;
+	heap16[(r9+10)>>1] = r10;
+	r9 = heap32[(r2+34)];
+	r10 = heapU16[(r8)>>1];
+	r9 = (r9 - r7)|0;
+	heap16[(r9)>>1] = r10;
+	r9 = heap32[(r2+34)];
+	r10 = heapU16[(r8+2)>>1];
+	r9 = (r9 - r7)|0;
+	heap16[(r9+2)>>1] = r10;
+	r9 = heap32[(r2+34)];
+	r8 = heapU16[(r8+4)>>1];
+	r4 = (r4 + -1)|0;
+	r7 = (r9 - r7)|0;
+	heap16[(r7+4)>>1] = r8;
+	if(r5 !=r4) //_LBB147_25
+{
+continue _35;
+}
+else{
+break _33;
+}
+}
+}
+} while(0);
+	r4 = heap32[(r1+19)];
+	heap32[(r2+36)] = r4;
+	r4 = heap32[(r2+38)];
+	r5 = heap32[(r1+20)];
+if(!(r4 >=r5)) //_LBB147_43
+{
+	r6 = heap32[(r2+39)];
+if(!(r6 >=r5)) //_LBB147_43
+{
+	if(r5 !=0) //_LBB147_30
+{
+	r6 = gNumAlignedAllocs;
+	r6 = r6 >> 2;
+	r7 = heap32[(r6)];
+	r7 = (r7 + 1)|0;
+	r8 = r5 << 5;
+	heap32[(r6)] = r7;
+	r6 = r8 | 19;
+	heap32[(g0)] = r6;
+	malloc(i7);
+	r6 = r_g0;
+	if(r6 !=0) //_LBB147_32
+{
+	r7 = 0;
+	r8 = (r6 + 4)|0;
+	r7 = (r7 - r8)|0;
+	r7 = r7 & 15;
+	r7 = (r6 + r7)|0;
+	r8 = (r7 + 4)|0;
+	r7 = r7 >> 2;
+	heap32[(r7)] = r6;
+	r6 = r8;
+}
+}
+else{
+	r6 = 0;
+}
+	r7 = (r0 + 160)|0;
+	if(r4 <1) //_LBB147_35
+{
+	r4 = r7 >> 2;
+	r9 = heap32[(r4)];
+}
+else{
+	r8 = 0;
+_49: while(true){
+	r9 = r7 >> 2;
+	r9 = heap32[(r9)];
+	r10 = (r9 + r8)|0;
+	r10 = r10 >> 2;
+	r11 = (r6 + r8)|0;
+	r4 = (r4 + -1)|0;
+	r8 = (r8 + 32)|0;
+	r12 = heap32[(r10)];
+	r11 = r11 >> 2;
+	r13 = heap32[(r10+1)];
+	r14 = heap32[(r10+2)];
+	r15 = heap32[(r10+3)];
+	r16 = heap32[(r10+4)];
+	r17 = heap32[(r10+5)];
+	r18 = heap32[(r10+6)];
+	r10 = heap32[(r10+7)];
+	heap32[(r11)] = r12;
+	heap32[(r11+1)] = r13;
+	heap32[(r11+2)] = r14;
+	heap32[(r11+3)] = r15;
+	heap32[(r11+4)] = r16;
+	heap32[(r11+5)] = r17;
+	heap32[(r11+6)] = r18;
+	heap32[(r11+7)] = r10;
+if(!(r4 !=0)) //_LBB147_36
+{
+break _49;
+}
+}
+	r7 = (r0 + 160)|0;
+}
+if(!(r9 ==0)) //_LBB147_42
+{
+	r4 = heapU8[r0+164];
+if(!(r4 ==0)) //_LBB147_41
+{
+	r4 = gNumAlignedFree;
+	r4 = r4 >> 2;
+	r8 = heap32[(r4)];
+	r8 = (r8 + 1)|0;
+	r9 = r9 >> 2;
+	heap32[(r4)] = r8;
+	r4 = heap32[(r9+-1)];
+	heap32[(g0)] = r4;
+	free(i7);
+}
+	r4 = r7 >> 2;
+	heap32[(r4)] = 0;
+}
+	r4 = 1;
+	r7 = r7 >> 2;
+	heap8[r0+164] = r4;
+	heap32[(r7)] = r6;
+	heap32[(r2+39)] = r5;
+}
+}
+	heap32[(r2+38)] = r5;
+_60: do {
+if(!(r5 <1)) //_LBB147_46
+{
+	r0 = heap32[(r1+18)];
+	r1 = (r3 - r5)|0;
+_62: while(true){
+	r4 = (r3 * -10)|0;
+	r4 = r4 << 1;
+	r4 = (r0 + r4)|0;
+	r5 = r3 << 5;
+	r6 = heap32[(r2+40)];
+	r7 = heapU16[(r4+14)>>1];
+	r6 = (r6 - r5)|0;
+	heap16[(r6+6)>>1] = r7;
+	r6 = heap32[(r2+40)];
+	r7 = heapU16[(r4+16)>>1];
+	r6 = (r6 - r5)|0;
+	heap16[(r6+8)>>1] = r7;
+	r6 = heap32[(r2+40)];
+	r7 = heapU16[(r4+18)>>1];
+	r6 = (r6 - r5)|0;
+	heap16[(r6+10)>>1] = r7;
+	r6 = heap32[(r2+40)];
+	r7 = heapU16[(r4+8)>>1];
+	r6 = (r6 - r5)|0;
+	heap16[(r6)>>1] = r7;
+	r6 = heap32[(r2+40)];
+	r7 = heapU16[(r4+10)>>1];
+	r6 = (r6 - r5)|0;
+	heap16[(r6+2)>>1] = r7;
+	r6 = (r3 * -5)|0;
+	r7 = heap32[(r2+40)];
+	r4 = heapU16[(r4+12)>>1];
+	r6 = r6 << 2;
+	r7 = (r7 - r5)|0;
+	r6 = (r0 + r6)|0;
+	heap16[(r7+4)>>1] = r4;
+	r4 = r6 >> 2;
+	r6 = heap32[(r2+40)];
+	r6 = (r6 - r5)|0;
+	r7 = heap32[(r4)];
+	r6 = r6 >> 2;
+	heap32[(r6+3)] = r7;
+	r6 = heap32[(r2+40)];
+	r5 = (r6 - r5)|0;
+	r4 = heap32[(r4+1)];
+	r3 = (r3 + -1)|0;
+	r5 = r5 >> 2;
+	heap32[(r5+4)] = r4;
+	if(r1 !=r3) //_LBB147_45
+{
+continue _62;
+}
+else{
+break _60;
+}
+}
+}
+} while(0);
+	return;
+}
+
+function _ZN14btQuantizedBvh17deSerializeDoubleER24btQuantizedBvhDoubleData(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+	var r6;
+	var r7;
+	var r8;
+	var r9;
+	var r10;
+	var r11;
+	var r12;
+	var r13;
+	var r14;
+	var r15;
+	var r16;
+	var r17;
+	var r18;
+	var f0;
+var __label__ = 0;
+	i7 = sp + -16;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp+1)];
+	r1 = heap32[(fp)];
+	f0 = llvm_readDouble((r0+32));
+	r2 = r1 >> 2;
+	f0 = f0; //fdtos f0, f0
+	heapFloat[(r2+5)] = f0;
+	f0 = llvm_readDouble((r0+40));
+	f0 = f0; //fdtos f0, f0
+	heapFloat[(r2+6)] = f0;
+	f0 = llvm_readDouble((r0+48));
+	f0 = f0; //fdtos f0, f0
+	heapFloat[(r2+7)] = f0;
+	f0 = llvm_readDouble((r0+56));
+	f0 = f0; //fdtos f0, f0
+	heapFloat[(r2+8)] = f0;
+	f0 = llvm_readDouble((r0));
+	f0 = f0; //fdtos f0, f0
+	heapFloat[(r2+1)] = f0;
+	f0 = llvm_readDouble((r0+8));
+	f0 = f0; //fdtos f0, f0
+	heapFloat[(r2+2)] = f0;
+	f0 = llvm_readDouble((r0+16));
+	f0 = f0; //fdtos f0, f0
+	heapFloat[(r2+3)] = f0;
+	f0 = llvm_readDouble((r0+24));
+	f0 = f0; //fdtos f0, f0
+	heapFloat[(r2+4)] = f0;
+	f0 = llvm_readDouble((r0+64));
+	f0 = f0; //fdtos f0, f0
+	heapFloat[(r2+9)] = f0;
+	f0 = llvm_readDouble((r0+72));
+	f0 = f0; //fdtos f0, f0
+	heapFloat[(r2+10)] = f0;
+	f0 = llvm_readDouble((r0+80));
+	f0 = f0; //fdtos f0, f0
+	heapFloat[(r2+11)] = f0;
+	f0 = llvm_readDouble((r0+88));
+	f0 = f0; //fdtos f0, f0
+	r0 = r0 >> 2;
+	heapFloat[(r2+12)] = f0;
+	r3 = heap32[(r0+24)];
+	heap32[(r2+14)] = r3;
+	r3 = 0;
+	r4 = heap32[(r0+25)];
+	r4 = r4 != r3;
+	r4 = r4 & 1;
+	heap8[r1+60] = r4;
+	r4 = heap32[(r2+22)];
+	r5 = heap32[(r0+26)];
+if(!(r4 >=r5)) //_LBB148_17
+{
+	r6 = heap32[(r2+23)];
+if(!(r6 >=r5)) //_LBB148_17
+{
+	if(r5 !=0) //_LBB148_4
+{
+	r6 = gNumAlignedAllocs;
+	r6 = r6 >> 2;
+	r7 = heap32[(r6)];
+	r7 = (r7 + 1)|0;
+	r8 = r5 << 6;
+	heap32[(r6)] = r7;
+	r6 = r8 | 19;
+	heap32[(g0)] = r6;
+	malloc(i7);
+	r6 = r_g0;
+	if(r6 !=0) //_LBB148_6
+{
+	r7 = 0;
+	r8 = (r6 + 4)|0;
+	r7 = (r7 - r8)|0;
+	r7 = r7 & 15;
+	r7 = (r6 + r7)|0;
+	r8 = (r7 + 4)|0;
+	r7 = r7 >> 2;
+	heap32[(r7)] = r6;
+	r6 = r8;
+}
+}
+else{
+	r6 = 0;
+}
+	r7 = (r1 + 96)|0;
+	if(r4 <1) //_LBB148_9
+{
+	r4 = r7 >> 2;
+	r9 = heap32[(r4)];
+}
+else{
+	r8 = 0;
+_12: while(true){
+	r9 = r7 >> 2;
+	r9 = heap32[(r9)];
+	r10 = (r6 + r8)|0;
+	r11 = (r9 + r8)|0;
+	heap32[(g0)] = r10;
+	heap32[(g0+1)] = r11;
+	heap32[(g0+2)] = 64;
+	r4 = (r4 + -1)|0;
+	r8 = (r8 + 64)|0;
+	memcpy(i7);
+if(!(r4 !=0)) //_LBB148_10
+{
+break _12;
+}
+}
+	r7 = (r1 + 96)|0;
+}
+if(!(r9 ==0)) //_LBB148_16
+{
+	r4 = heapU8[r1+100];
+if(!(r4 ==0)) //_LBB148_15
+{
+	r4 = gNumAlignedFree;
+	r4 = r4 >> 2;
+	r8 = heap32[(r4)];
+	r8 = (r8 + 1)|0;
+	r9 = r9 >> 2;
+	heap32[(r4)] = r8;
+	r4 = heap32[(r9+-1)];
+	heap32[(g0)] = r4;
+	free(i7);
+}
+	r4 = r7 >> 2;
+	heap32[(r4)] = 0;
+}
+	r4 = 1;
+	r7 = r7 >> 2;
+	heap8[r1+100] = r4;
+	heap32[(r7)] = r6;
+	heap32[(r2+23)] = r5;
+}
+}
+	heap32[(r2+22)] = r5;
+_23: do {
+if(!(r5 <1)) //_LBB148_20
+{
+	r4 = 0;
+	r6 = heap32[(r0+28)];
+	r5 = (r4 - r5)|0;
+_25: while(true){
+	r7 = (r4 * -10)|0;
+	r7 = r7 << 3;
+	r8 = (r6 + r7)|0;
+	r9 = r4 << 6;
+	r10 = heap32[(r2+24)];
+	f0 = llvm_readDouble((r8+32));
+	r10 = (r10 - r9)|0;
+	r10 = r10 >> 2;
+	f0 = f0; //fdtos f0, f0
+	heapFloat[(r10+4)] = f0;
+	f0 = llvm_readDouble((r8+40));
+	f0 = f0; //fdtos f0, f0
+	heapFloat[(r10+5)] = f0;
+	f0 = llvm_readDouble((r8+48));
+	f0 = f0; //fdtos f0, f0
+	heapFloat[(r10+6)] = f0;
+	f0 = llvm_readDouble((r8+56));
+	f0 = f0; //fdtos f0, f0
+	heapFloat[(r10+7)] = f0;
+	r10 = heap32[(r2+24)];
+	f0 = llvm_readDouble((r6+r7));
+	r7 = (r10 - r9)|0;
+	r7 = r7 >> 2;
+	f0 = f0; //fdtos f0, f0
+	heapFloat[(r7)] = f0;
+	f0 = llvm_readDouble((r8+8));
+	f0 = f0; //fdtos f0, f0
+	heapFloat[(r7+1)] = f0;
+	f0 = llvm_readDouble((r8+16));
+	f0 = f0; //fdtos f0, f0
+	heapFloat[(r7+2)] = f0;
+	r10 = (r4 * -20)|0;
+	f0 = llvm_readDouble((r8+24));
+	r8 = r10 << 2;
+	f0 = f0; //fdtos f0, f0
+	r8 = (r6 + r8)|0;
+	heapFloat[(r7+3)] = f0;
+	r7 = r8 >> 2;
+	r8 = heap32[(r2+24)];
+	r8 = (r8 - r9)|0;
+	r10 = heap32[(r7+16)];
+	r8 = r8 >> 2;
+	heap32[(r8+8)] = r10;
+	r8 = heap32[(r2+24)];
+	r8 = (r8 - r9)|0;
+	r10 = heap32[(r7+17)];
+	r8 = r8 >> 2;
+	heap32[(r8+9)] = r10;
+	r8 = heap32[(r2+24)];
+	r8 = (r8 - r9)|0;
+	r7 = heap32[(r7+18)];
+	r4 = (r4 + -1)|0;
+	r8 = r8 >> 2;
+	heap32[(r8+10)] = r7;
+	if(r5 !=r4) //_LBB148_19
+{
+continue _25;
+}
+else{
+break _23;
+}
+}
+}
+} while(0);
+	r4 = heap32[(r2+32)];
+	r5 = heap32[(r0+27)];
+_28: do {
+if(!(r4 >=r5)) //_LBB148_23
+{
+	r6 = (r1 + 124)|0;
+	heap32[(g0)] = r6;
+	heap32[(g0+1)] = r5;
+	r6 = (r5 - r4)|0;
+	r4 = r4 << 4;
+	_ZN20btAlignedObjectArrayI18btQuantizedBvhNodeE7reserveEi(i7);
+_30: while(true){
+	r7 = heap32[(r2+34)];
+	r7 = (r7 + r4)|0;
+	r7 = r7 >> 2;
+	r6 = (r6 + -1)|0;
+	r4 = (r4 + 16)|0;
+	heap32[(r7)] = 0;
+	heap32[(r7+1)] = 0;
+	heap32[(r7+2)] = 0;
+	heap32[(r7+3)] = 0;
+	if(r6 !=0) //_LBB148_22
+{
+continue _30;
+}
+else{
+break _28;
+}
+}
+}
+} while(0);
+	heap32[(r2+32)] = r5;
+_33: do {
+if(!(r5 <1)) //_LBB148_26
+{
+	r4 = 0;
+	r6 = heap32[(r0+29)];
+	r5 = (r4 - r5)|0;
+_35: while(true){
+	r7 = r4 << 4;
+	r8 = (r6 - r7)|0;
+	r9 = r8 >> 2;
+	r10 = heap32[(r2+34)];
+	r10 = (r10 - r7)|0;
+	r9 = heap32[(r9+3)];
+	r10 = r10 >> 2;
+	heap32[(r10+3)] = r9;
+	r9 = heap32[(r2+34)];
+	r10 = heapU16[(r8+6)>>1];
+	r9 = (r9 - r7)|0;
+	heap16[(r9+6)>>1] = r10;
+	r9 = heap32[(r2+34)];
+	r10 = heapU16[(r8+8)>>1];
+	r9 = (r9 - r7)|0;
+	heap16[(r9+8)>>1] = r10;
+	r9 = heap32[(r2+34)];
+	r10 = heapU16[(r8+10)>>1];
+	r9 = (r9 - r7)|0;
+	heap16[(r9+10)>>1] = r10;
+	r9 = heap32[(r2+34)];
+	r10 = heapU16[(r8)>>1];
+	r9 = (r9 - r7)|0;
+	heap16[(r9)>>1] = r10;
+	r9 = heap32[(r2+34)];
+	r10 = heapU16[(r8+2)>>1];
+	r9 = (r9 - r7)|0;
+	heap16[(r9+2)>>1] = r10;
+	r9 = heap32[(r2+34)];
+	r8 = heapU16[(r8+4)>>1];
+	r4 = (r4 + -1)|0;
+	r7 = (r9 - r7)|0;
+	heap16[(r7+4)>>1] = r8;
+	if(r5 !=r4) //_LBB148_25
+{
+continue _35;
+}
+else{
+break _33;
+}
+}
+}
+} while(0);
+	r4 = heap32[(r0+30)];
+	heap32[(r2+36)] = r4;
+	r4 = heap32[(r2+38)];
+	r5 = heap32[(r0+31)];
+if(!(r4 >=r5)) //_LBB148_43
+{
+	r6 = heap32[(r2+39)];
+if(!(r6 >=r5)) //_LBB148_43
+{
+	if(r5 !=0) //_LBB148_30
+{
+	r6 = gNumAlignedAllocs;
+	r6 = r6 >> 2;
+	r7 = heap32[(r6)];
+	r7 = (r7 + 1)|0;
+	r8 = r5 << 5;
+	heap32[(r6)] = r7;
+	r6 = r8 | 19;
+	heap32[(g0)] = r6;
+	malloc(i7);
+	r6 = r_g0;
+	if(r6 !=0) //_LBB148_32
+{
+	r7 = 0;
+	r8 = (r6 + 4)|0;
+	r7 = (r7 - r8)|0;
+	r7 = r7 & 15;
+	r7 = (r6 + r7)|0;
+	r8 = (r7 + 4)|0;
+	r7 = r7 >> 2;
+	heap32[(r7)] = r6;
+	r6 = r8;
+}
+}
+else{
+	r6 = 0;
+}
+	r7 = (r1 + 160)|0;
+	if(r4 <1) //_LBB148_35
+{
+	r4 = r7 >> 2;
+	r9 = heap32[(r4)];
+}
+else{
+	r8 = 0;
+_49: while(true){
+	r9 = r7 >> 2;
+	r9 = heap32[(r9)];
+	r10 = (r9 + r8)|0;
+	r10 = r10 >> 2;
+	r11 = (r6 + r8)|0;
+	r4 = (r4 + -1)|0;
+	r8 = (r8 + 32)|0;
+	r12 = heap32[(r10)];
+	r11 = r11 >> 2;
+	r13 = heap32[(r10+1)];
+	r14 = heap32[(r10+2)];
+	r15 = heap32[(r10+3)];
+	r16 = heap32[(r10+4)];
+	r17 = heap32[(r10+5)];
+	r18 = heap32[(r10+6)];
+	r10 = heap32[(r10+7)];
+	heap32[(r11)] = r12;
+	heap32[(r11+1)] = r13;
+	heap32[(r11+2)] = r14;
+	heap32[(r11+3)] = r15;
+	heap32[(r11+4)] = r16;
+	heap32[(r11+5)] = r17;
+	heap32[(r11+6)] = r18;
+	heap32[(r11+7)] = r10;
+if(!(r4 !=0)) //_LBB148_36
+{
+break _49;
+}
+}
+	r7 = (r1 + 160)|0;
+}
+if(!(r9 ==0)) //_LBB148_42
+{
+	r4 = heapU8[r1+164];
+if(!(r4 ==0)) //_LBB148_41
+{
+	r4 = gNumAlignedFree;
+	r4 = r4 >> 2;
+	r8 = heap32[(r4)];
+	r8 = (r8 + 1)|0;
+	r9 = r9 >> 2;
+	heap32[(r4)] = r8;
+	r4 = heap32[(r9+-1)];
+	heap32[(g0)] = r4;
+	free(i7);
+}
+	r4 = r7 >> 2;
+	heap32[(r4)] = 0;
+}
+	r4 = 1;
+	r7 = r7 >> 2;
+	heap8[r1+164] = r4;
+	heap32[(r7)] = r6;
+	heap32[(r2+39)] = r5;
+}
+}
+	heap32[(r2+38)] = r5;
+_60: do {
+if(!(r5 <1)) //_LBB148_46
+{
+	r0 = heap32[(r0+32)];
+	r1 = (r3 - r5)|0;
+_62: while(true){
+	r4 = (r3 * -10)|0;
+	r4 = r4 << 1;
+	r4 = (r0 + r4)|0;
+	r5 = r3 << 5;
+	r6 = heap32[(r2+40)];
+	r7 = heapU16[(r4+14)>>1];
+	r6 = (r6 - r5)|0;
+	heap16[(r6+6)>>1] = r7;
+	r6 = heap32[(r2+40)];
+	r7 = heapU16[(r4+16)>>1];
+	r6 = (r6 - r5)|0;
+	heap16[(r6+8)>>1] = r7;
+	r6 = heap32[(r2+40)];
+	r7 = heapU16[(r4+18)>>1];
+	r6 = (r6 - r5)|0;
+	heap16[(r6+10)>>1] = r7;
+	r6 = heap32[(r2+40)];
+	r7 = heapU16[(r4+8)>>1];
+	r6 = (r6 - r5)|0;
+	heap16[(r6)>>1] = r7;
+	r6 = heap32[(r2+40)];
+	r7 = heapU16[(r4+10)>>1];
+	r6 = (r6 - r5)|0;
+	heap16[(r6+2)>>1] = r7;
+	r6 = (r3 * -5)|0;
+	r7 = heap32[(r2+40)];
+	r4 = heapU16[(r4+12)>>1];
+	r6 = r6 << 2;
+	r7 = (r7 - r5)|0;
+	r6 = (r0 + r6)|0;
+	heap16[(r7+4)>>1] = r4;
+	r4 = r6 >> 2;
+	r6 = heap32[(r2+40)];
+	r6 = (r6 - r5)|0;
+	r7 = heap32[(r4)];
+	r6 = r6 >> 2;
+	heap32[(r6+3)] = r7;
+	r6 = heap32[(r2+40)];
+	r5 = (r6 - r5)|0;
+	r4 = heap32[(r4+1)];
+	r3 = (r3 + -1)|0;
+	r5 = r5 >> 2;
+	heap32[(r5+4)] = r4;
+	if(r1 !=r3) //_LBB148_45
+{
+continue _62;
+}
+else{
+break _60;
+}
+}
+}
+} while(0);
+	return;
+}
+
+function _ZN14btQuantizedBvhD2Ev(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+var __label__ = 0;
+	i7 = sp + -8;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = _ZTV14btQuantizedBvh;
+	r2 = r0 >> 2;
+	r1 = (r1 + 8)|0;
+	heap32[(r2)] = r1;
+	r1 = heap32[(r2+40)];
+if(!(r1 ==0)) //_LBB149_4
+{
+	r3 = heapU8[r0+164];
+if(!(r3 ==0)) //_LBB149_3
+{
+	r3 = gNumAlignedFree;
+	r3 = r3 >> 2;
+	r4 = heap32[(r3)];
+	r4 = (r4 + 1)|0;
+	r1 = r1 >> 2;
+	heap32[(r3)] = r4;
+	r1 = heap32[(r1+-1)];
+	heap32[(g0)] = r1;
+	free(i7);
+}
+	heap32[(r2+40)] = 0;
+}
+	r1 = 1;
+	heap8[r0+164] = r1;
+	heap32[(r2+40)] = 0;
+	heap32[(r2+38)] = 0;
+	heap32[(r2+39)] = 0;
+	r3 = heap32[(r2+34)];
+if(!(r3 ==0)) //_LBB149_8
+{
+	r4 = heapU8[r0+140];
+if(!(r4 ==0)) //_LBB149_7
+{
+	r4 = gNumAlignedFree;
+	r4 = r4 >> 2;
+	r5 = heap32[(r4)];
+	r5 = (r5 + 1)|0;
+	r3 = r3 >> 2;
+	heap32[(r4)] = r5;
+	r3 = heap32[(r3+-1)];
+	heap32[(g0)] = r3;
+	free(i7);
+}
+	heap32[(r2+34)] = 0;
+}
+	heap8[r0+140] = r1;
+	heap32[(r2+34)] = 0;
+	heap32[(r2+32)] = 0;
+	heap32[(r2+33)] = 0;
+	r3 = heap32[(r2+29)];
+if(!(r3 ==0)) //_LBB149_12
+{
+	r4 = heapU8[r0+120];
+if(!(r4 ==0)) //_LBB149_11
+{
+	r4 = gNumAlignedFree;
+	r4 = r4 >> 2;
+	r5 = heap32[(r4)];
+	r5 = (r5 + 1)|0;
+	r3 = r3 >> 2;
+	heap32[(r4)] = r5;
+	r3 = heap32[(r3+-1)];
+	heap32[(g0)] = r3;
+	free(i7);
+}
+	heap32[(r2+29)] = 0;
+}
+	heap8[r0+120] = r1;
+	heap32[(r2+29)] = 0;
+	heap32[(r2+27)] = 0;
+	heap32[(r2+28)] = 0;
+	r3 = heap32[(r2+24)];
+if(!(r3 ==0)) //_LBB149_16
+{
+	r4 = heapU8[r0+100];
+if(!(r4 ==0)) //_LBB149_15
+{
+	r4 = gNumAlignedFree;
+	r4 = r4 >> 2;
+	r5 = heap32[(r4)];
+	r5 = (r5 + 1)|0;
+	r3 = r3 >> 2;
+	heap32[(r4)] = r5;
+	r3 = heap32[(r3+-1)];
+	heap32[(g0)] = r3;
+	free(i7);
+}
+	heap32[(r2+24)] = 0;
+}
+	heap8[r0+100] = r1;
+	heap32[(r2+24)] = 0;
+	heap32[(r2+22)] = 0;
+	heap32[(r2+23)] = 0;
+	r3 = heap32[(r2+19)];
+if(!(r3 ==0)) //_LBB149_20
+{
+	r4 = heapU8[r0+80];
+if(!(r4 ==0)) //_LBB149_19
+{
+	r4 = gNumAlignedFree;
+	r4 = r4 >> 2;
+	r5 = heap32[(r4)];
+	r5 = (r5 + 1)|0;
+	r3 = r3 >> 2;
+	heap32[(r4)] = r5;
+	r3 = heap32[(r3+-1)];
+	heap32[(g0)] = r3;
+	free(i7);
+}
+	heap32[(r2+19)] = 0;
+}
+	heap8[r0+80] = r1;
+	heap32[(r2+19)] = 0;
+	heap32[(r2+17)] = 0;
+	heap32[(r2+18)] = 0;
+	return;
+}
+
+function _ZNK14btQuantizedBvh26walkStacklessQuantizedTreeEP21btNodeOverlapCallbackPtS2_ii(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+	var r6;
+	var r7;
+	var r8;
+	var r9;
+	var r10;
+	var r11;
+	var r12;
+var __label__ = 0;
+	i7 = sp + -16;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = heapU8[r0+60];
+	if(r1 !=0) //_LBB150_2
+{
+	r1 = heap32[(fp+1)];
+	r2 = heap32[(fp+2)];
+	r3 = heap32[(fp+3)];
+	r4 = heap32[(fp+4)];
+	r5 = heap32[(fp+5)];
+	r0 = r0 >> 2;
+	r0 = heap32[(r0+34)];
+	r6 = r4 << 4;
+	r7 = (r5 - r4)|0;
+	r0 = (r0 + r6)|0;
+	r6 = 0;
+_3: while(true){
+	if(r4 <r5) //_LBB150_3
+{
+	if(r6 <r7) //_LBB150_5
+{
+	r8 = heapU16[(r2)>>1];
+	r9 = heapU16[(r0+6)>>1];
+	r10 = heapU16[(r3)>>1];
+	r11 = heapU16[(r0)>>1];
+	r8 = uint(r8) > uint(r9);
+	r9 = uint(r10) < uint(r11);
+	r10 = heapU16[(r2+4)>>1];
+	r11 = heapU16[(r0+10)>>1];
+	r8 = r8 | r9;
+	r9 = uint(r10) > uint(r11);
+	r10 = heapU16[(r3+4)>>1];
+	r11 = heapU16[(r0+4)>>1];
+	r8 = r8 | r9;
+	r9 = uint(r10) < uint(r11);
+	r10 = heapU16[(r2+2)>>1];
+	r11 = heapU16[(r0+8)>>1];
+	r8 = r8 | r9;
+	r9 = uint(r10) > uint(r11);
+	r10 = heapU16[(r3+2)>>1];
+	r11 = heapU16[(r0+2)>>1];
+	r12 = r0 >> 2;
+	r8 = r8 | r9;
+	r9 = uint(r10) < uint(r11);
+	r10 = heap32[(r12+3)];
+	r6 = (r6 + 1)|0;
+	r8 = r8 | r9;
+	if(r10 <0) //_LBB150_10
+{
+__label__ = 10;
+}
+else{
+	if(r8 != 0) //_LBB150_10
+{
+__label__ = 10;
+}
+else{
+	if(r10 >-1) //_LBB150_9
+{
+	r8 = r1 >> 2;
+	r8 = heap32[(r8)];
+	r8 = r8 >> 2;
+	r8 = heap32[(r8+2)];
+	r12 = r10 >> 21;
+	r10 = r10 & 2097151;
+	heap32[(g0)] = r1;
+	heap32[(g0+1)] = r12;
+	heap32[(g0+2)] = r10;
+	__FUNCTION_TABLE__[(r8)>>2](i7);
+__label__ = 11;
+}
+else{
+__label__ = 8;
+break _3;
+}
+}
+}
+if (__label__ == 10){
+	r9 = 0;
+	r9 = r10 < r9;
+	r8 = r9 & r8;
+	if(r8 != 0) //_LBB150_12
+{
+	r8 = heap32[(r12+3)];
+	if(r8 <0) //_LBB150_14
+{
+	r9 = r8 << 4;
+	r0 = (r0 - r9)|0;
+	r4 = (r4 - r8)|0;
+continue _3;
+}
+else{
+__label__ = 13;
+break _3;
+}
+}
+}
+	r0 = (r0 + 16)|0;
+	r4 = (r4 + 1)|0;
+}
+else{
+__label__ = 4;
+break _3;
+}
+}
+else{
+__label__ = 16;
+break _3;
+}
+}
+switch(__label__ ){//multiple entries
+case 16:
+	r0 = maxIterations;
+	r0 = r0 >> 2;
+	r1 = heap32[(r0)];
+if(!(r1 >=r6)) //_LBB150_18
+{
+	heap32[(r0)] = r6;
+}
+	return;
+break;
+case 13:
+	r0 = _2E_str941;
+	r1 = _2E_str313;
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r1;
+	heap32[(g0+2)] = 75;
+	_assert(i7);
+break;
+case 8:
+	r0 = _2E_str739;
+	r1 = _2E_str313;
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r1;
+	heap32[(g0+2)] = 80;
+	_assert(i7);
+break;
+case 4:
+	r0 = _2E_str1143;
+	r1 = _2E_str537;
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r1;
+	heap32[(g0+2)] = 703;
+	_assert(i7);
+break;
+}
+}
+else{
+	r0 = _2E_str212;
+	r1 = _2E_str537;
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r1;
+	heap32[(g0+2)] = 669;
+	_assert(i7);
+}
+}
+
+function _ZNK14btQuantizedBvh17quantizeWithClampEPtRK9btVector3i(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+	var f0;
+	var f1;
+	var f2;
+	var f3;
+	var f4;
+var __label__ = 0;
+	i7 = sp + -32;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = heapU8[r0+60];
+	if(r1 !=0) //_LBB151_2
+{
+	r1 = heap32[(fp+1)];
+	r2 = heap32[(fp+2)];
+	r3 = heap32[(fp+3)];
+	r2 = r2 >> 2;
+	f0 = heapFloat[(r2)];
+	r4 = sp + -16;
+	heapFloat[(fp+-4)] = f0;
+	f1 = heapFloat[(r2+1)];
+	r5 = r4 >> 2;
+	heapFloat[(r5+1)] = f1;
+	f2 = heapFloat[(r2+2)];
+	heapFloat[(r5+2)] = f2;
+	f3 = heapFloat[(r2+3)];
+	r2 = r0 >> 2;
+	heapFloat[(r5+3)] = f3;
+	f4 = heapFloat[(r2+1)];
+	if(f0 <f4) //_LBB151_4
+{
+	heapFloat[(fp+-4)] = f4;
+	f0 = f4;
+}
+	f4 = heapFloat[(r2+2)];
+	if(f1 <f4) //_LBB151_7
+{
+	heapFloat[(r5+1)] = f4;
+	f1 = f4;
+}
+	f4 = heapFloat[(r2+3)];
+	if(f2 <f4) //_LBB151_10
+{
+	heapFloat[(r5+2)] = f4;
+	f2 = f4;
+}
+	f4 = heapFloat[(r2+4)];
+	if(f3 <f4) //_LBB151_13
+{
+	heapFloat[(r5+3)] = f4;
+	f3 = f4;
+}
+	f4 = heapFloat[(r2+5)];
+if(!(f4 >=f0)) //_LBB151_16
+{
+	heapFloat[(fp+-4)] = f4;
+}
+	f0 = heapFloat[(r2+6)];
+if(!(f0 >=f1)) //_LBB151_18
+{
+	heapFloat[(r5+1)] = f0;
+}
+	f0 = heapFloat[(r2+7)];
+if(!(f0 >=f2)) //_LBB151_20
+{
+	heapFloat[(r5+2)] = f0;
+}
+	f0 = heapFloat[(r2+8)];
+if(!(f0 >=f3)) //_LBB151_22
+{
+	heapFloat[(r5+3)] = f0;
+}
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r1;
+	heap32[(g0+2)] = r4;
+	heap32[(g0+3)] = r3;
+	_ZNK14btQuantizedBvh8quantizeEPtRK9btVector3i(i7);
+	return;
+}
+else{
+	r0 = _2E_str212;
+	r1 = _2E_str313;
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r1;
+	heap32[(g0+2)] = 420;
+	_assert(i7);
+}
+}
+
+function _ZNK14btQuantizedBvh42walkRecursiveQuantizedTreeAgainstQueryAabbEPK18btQuantizedBvhNodeP21btNodeOverlapCallbackPtS5_(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+	var r6;
+var __label__ = 0;
+	i7 = sp + -24;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = heap32[(fp+1)];
+	r2 = heap32[(fp+2)];
+	r3 = heap32[(fp+3)];
+	r4 = heap32[(fp+4)];
+_1: while(true){
+	r5 = heapU8[r0+60];
+	if(r5 !=0) //_LBB152_3
+{
+	r5 = heapU16[(r3)>>1];
+	r6 = heapU16[(r1+6)>>1];
+	if(uint(r5) >uint(r6)) //_LBB152_14
+{
+__label__ = 14;
+break _1;
+}
+else{
+	r5 = heapU16[(r4)>>1];
+	r6 = heapU16[(r1)>>1];
+	r5 = r5 & 65535;
+	r6 = r6 & 65535;
+	if(uint(r5) <uint(r6)) //_LBB152_14
+{
+__label__ = 14;
+break _1;
+}
+else{
+	r5 = heapU16[(r3+4)>>1];
+	r6 = heapU16[(r1+10)>>1];
+	r5 = r5 & 65535;
+	r6 = r6 & 65535;
+	if(uint(r5) >uint(r6)) //_LBB152_14
+{
+__label__ = 14;
+break _1;
+}
+else{
+	r5 = heapU16[(r4+4)>>1];
+	r6 = heapU16[(r1+4)>>1];
+	r5 = r5 & 65535;
+	r6 = r6 & 65535;
+	if(uint(r5) <uint(r6)) //_LBB152_14
+{
+__label__ = 14;
+break _1;
+}
+else{
+	r5 = heapU16[(r3+2)>>1];
+	r6 = heapU16[(r1+8)>>1];
+	r5 = r5 & 65535;
+	r6 = r6 & 65535;
+	if(uint(r5) >uint(r6)) //_LBB152_14
+{
+__label__ = 14;
+break _1;
+}
+else{
+	r5 = heapU16[(r4+2)>>1];
+	r6 = heapU16[(r1+2)>>1];
+	r5 = r5 & 65535;
+	r6 = r6 & 65535;
+	if(uint(r5) <uint(r6)) //_LBB152_14
+{
+__label__ = 14;
+break _1;
+}
+else{
+	r5 = r1 >> 2;
+	r6 = heap32[(r5+3)];
+	if(r6 <0) //_LBB152_11
+{
+	r6 = (r1 + 16)|0;
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r6;
+	heap32[(g0+2)] = r2;
+	heap32[(g0+3)] = r3;
+	heap32[(g0+4)] = r4;
+	_ZNK14btQuantizedBvh42walkRecursiveQuantizedTreeAgainstQueryAabbEPK18btQuantizedBvhNodeP21btNodeOverlapCallbackPtS5_(i7);
+	r5 = heap32[(r5+7)];
+	if(r5 <0) //_LBB152_13
+{
+	r6 = 1;
+	r5 = (r6 - r5)|0;
+	r5 = r5 << 4;
+	r1 = (r1 + r5)|0;
+continue _1;
+}
+else{
+	r1 = (r1 + 32)|0;
+continue _1;
+}
+}
+else{
+__label__ = 10;
+break _1;
+}
+}
+}
+}
+}
+}
+}
+}
+else{
+__label__ = 2;
+break _1;
+}
+}
+switch(__label__ ){//multiple entries
+case 14:
+	return;
+break;
+case 2:
+	r0 = _2E_str212;
+	r1 = _2E_str537;
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r1;
+	heap32[(g0+2)] = 419;
+	_assert(i7);
+break;
+case 10:
+	r0 = r2 >> 2;
+	r0 = heap32[(r0)];
+	r0 = r0 >> 2;
+	r0 = heap32[(r0+2)];
+	r1 = r6 >> 21;
+	r3 = r6 & 2097151;
+	heap32[(g0)] = r2;
+	heap32[(g0+1)] = r1;
+	heap32[(g0+2)] = r3;
+	__FUNCTION_TABLE__[(r0)>>2](i7);
+	return;
+break;
+}
+}
+
+function _ZNK14btQuantizedBvh26reportAabbOverlappingNodexEP21btNodeOverlapCallbackRK9btVector3S4_(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+	var r6;
+	var r7;
+	var r8;
+	var r9;
+	var r10;
+	var r11;
+	var r12;
+	var f0;
+	var f1;
+var __label__ = 0;
+	i7 = sp + -40;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = heap32[(fp+1)];
+	r2 = heap32[(fp+2)];
+	r3 = heap32[(fp+3)];
+	r4 = heapU8[r0+60];
+_1: do {
+	if(r4 ==0) //_LBB153_20
+{
+	r0 = r0 >> 2;
+	r4 = heap32[(r0+24)];
+	r5 = 0;
+	r6 = r5;
+_3: while(true){
+	r7 = heap32[(r0+14)];
+	if(r7 >r5) //_LBB153_21
+{
+	if(r7 >r6) //_LBB153_23
+{
+	r7 = r2 >> 2;
+	r8 = r4 >> 2;
+	r6 = (r6 + 1)|0;
+	f0 = heapFloat[(r7)];
+	f1 = heapFloat[(r8+4)];
+	if(f0 >f1) //_LBB153_26
+{
+__label__ = 26;
+}
+else{
+	r9 = r3 >> 2;
+	f0 = heapFloat[(r9)];
+	f1 = heapFloat[(r8)];
+	if(f0 <f1) //_LBB153_26
+{
+__label__ = 26;
+}
+else{
+	r9 = 1;
+__label__ = 27;
+}
+}
+if (__label__ == 26){
+	r9 = 0;
+}
+	f0 = heapFloat[(r7+2)];
+	f1 = heapFloat[(r8+6)];
+	if(f0 >f1) //_LBB153_30
+{
+__label__ = 29;
+}
+else{
+	r10 = r3 >> 2;
+	f0 = heapFloat[(r10+2)];
+	f1 = heapFloat[(r8+2)];
+	if(f0 <f1) //_LBB153_30
+{
+__label__ = 29;
+}
+else{
+__label__ = 30;
+}
+}
+if (__label__ == 29){
+	r9 = 0;
+}
+	f0 = heapFloat[(r7+1)];
+	f1 = heapFloat[(r8+5)];
+	if(f0 <=f1) //_LBB153_33
+{
+	r7 = r3 >> 2;
+	f0 = heapFloat[(r7+1)];
+	f1 = heapFloat[(r8+1)];
+	r7 = 0;
+	r10 = heap32[(r8+8)];
+	r11 = -1;
+	r9 = f0 < f1 ? r7 : r9;
+	r7 = r10 == r11;
+	r12 = r9 & 255;
+if(!(r12 ==0)) //_LBB153_35
+{
+	r10 = r10 != r11;
+	r10 = r10 & 1;
+	if(r10 ==0) //_LBB153_36
+{
+	r10 = r1 >> 2;
+	r10 = heap32[(r10)];
+	r10 = r10 >> 2;
+	r10 = heap32[(r10+2)];
+	r11 = heap32[(r8+10)];
+	r12 = heap32[(r8+9)];
+	heap32[(g0)] = r1;
+	heap32[(g0+1)] = r12;
+	heap32[(g0+2)] = r11;
+	__FUNCTION_TABLE__[(r10)>>2](i7);
+}
+}
+}
+else{
+	r7 = heap32[(r8+8)];
+	r9 = -1;
+	r7 = r7 == r9;
+	r9 = 0;
+}
+	r9 = r9 & 255;
+if(!(r9 !=0)) //_LBB153_39
+{
+	r7 = r7 & 1;
+	if(r7 ==0) //_LBB153_40
+{
+	r7 = heap32[(r8+8)];
+	r8 = r7 << 6;
+	r4 = (r4 + r8)|0;
+	r5 = (r7 + r5)|0;
+continue _3;
+}
+}
+	r4 = (r4 + 64)|0;
+	r5 = (r5 + 1)|0;
+}
+else{
+__label__ = 22;
+break _3;
+}
+}
+else{
+__label__ = 40;
+break _3;
+}
+}
+switch(__label__ ){//multiple entries
+case 40:
+	r0 = maxIterations;
+	r0 = r0 >> 2;
+	r1 = heap32[(r0)];
+	if(r1 >=r6) //_LBB153_17
+{
+break _1;
+}
+else{
+	heap32[(r0)] = r6;
+	return;
+}
+break;
+case 22:
+	r0 = _2E_str1921;
+	r1 = _2E_str537;
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r1;
+	heap32[(g0+2)] = 367;
+	_assert(i7);
+break;
+}
+}
+else{
+	r4 = sp + -6;
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r4;
+	heap32[(g0+2)] = r2;
+	heap32[(g0+3)] = 0;
+	_ZNK14btQuantizedBvh17quantizeWithClampEPtRK9btVector3i(i7);
+	r2 = sp + -12;
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r2;
+	heap32[(g0+2)] = r3;
+	heap32[(g0+3)] = 1;
+	r3 = r0 >> 2;
+	_ZNK14btQuantizedBvh17quantizeWithClampEPtRK9btVector3i(i7);
+	r5 = heap32[(r3+36)];
+	if(r5 ==2) //_LBB153_18
+{
+	r3 = heap32[(r3+34)];
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r3;
+	heap32[(g0+2)] = r1;
+	heap32[(g0+3)] = r4;
+	heap32[(g0+4)] = r2;
+	_ZNK14btQuantizedBvh42walkRecursiveQuantizedTreeAgainstQueryAabbEPK18btQuantizedBvhNodeP21btNodeOverlapCallbackPtS5_(i7);
+	return;
+}
+else{
+	if(r5 ==1) //_LBB153_5
+{
+	r5 = heapU8[r0+60];
+	if(r5 ==0) //_LBB153_7
+{
+	r2 = _2E_str212;
+	r3 = _2E_str537;
+	heap32[(g0)] = r2;
+	heap32[(g0+1)] = r3;
+	heap32[(g0+2)] = 735;
+	_assert(i7);
+}
+else{
+	r5 = heap32[(r3+38)];
+	if(r5 >0) //_LBB153_8
+{
+	r5 = 0;
+_42: while(true){
+	r6 = heap32[(r3+40)];
+	r7 = r5 << 5;
+	r8 = (r6 + r7)|0;
+	r9 = heapU16[(sp+-6)>>1];
+	r10 = heapU16[(r8+6)>>1];
+if(!(uint(r9) >uint(r10))) //_LBB153_16
+{
+	r9 = heapU16[(sp+-12)>>1];
+	r6 = heapU16[(r6+r7)>>1];
+	r7 = r9 & 65535;
+	r6 = r6 & 65535;
+if(!(uint(r7) <uint(r6))) //_LBB153_16
+{
+	r6 = heapU16[(sp+-2)>>1];
+	r7 = heapU16[(r8+10)>>1];
+	r6 = r6 & 65535;
+	r7 = r7 & 65535;
+if(!(uint(r6) >uint(r7))) //_LBB153_16
+{
+	r6 = heapU16[(sp+-8)>>1];
+	r7 = heapU16[(r8+4)>>1];
+	r6 = r6 & 65535;
+	r7 = r7 & 65535;
+if(!(uint(r6) <uint(r7))) //_LBB153_16
+{
+	r6 = heapU16[(sp+-4)>>1];
+	r7 = heapU16[(r8+8)>>1];
+	r6 = r6 & 65535;
+	r7 = r7 & 65535;
+if(!(uint(r6) >uint(r7))) //_LBB153_16
+{
+	r6 = heapU16[(sp+-10)>>1];
+	r7 = heapU16[(r8+2)>>1];
+	r6 = r6 & 65535;
+	r7 = r7 & 65535;
+if(!(uint(r6) <uint(r7))) //_LBB153_16
+{
+	r6 = r8 >> 2;
+	r7 = heap32[(r6+3)];
+	r6 = heap32[(r6+4)];
+	r6 = (r6 + r7)|0;
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r1;
+	heap32[(g0+2)] = r4;
+	heap32[(g0+3)] = r2;
+	heap32[(g0+4)] = r7;
+	heap32[(g0+5)] = r6;
+	_ZNK14btQuantizedBvh26walkStacklessQuantizedTreeEP21btNodeOverlapCallbackPtS2_ii(i7);
+}
+}
+}
+}
+}
+}
+	r5 = (r5 + 1)|0;
+	r6 = heap32[(r3+38)];
+	if(r6 >r5) //_LBB153_9
+{
+continue _42;
+}
+else{
+break _1;
+}
+}
+}
+else{
+break _1;
+}
+}
+}
+else{
+	if(r5 !=0) //_LBB153_19
+{
+	r0 = _2E_str10;
+	r1 = _2E_str537;
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r1;
+	heap32[(g0+2)] = 341;
+	_assert(i7);
+}
+else{
+	r3 = heap32[(r3+14)];
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r1;
+	heap32[(g0+2)] = r4;
+	heap32[(g0+3)] = r2;
+	heap32[(g0+4)] = 0;
+	heap32[(g0+5)] = r3;
+	_ZNK14btQuantizedBvh26walkStacklessQuantizedTreeEP21btNodeOverlapCallbackPtS2_ii(i7);
+	return;
+}
+}
+}
+}
+} while(0);
+	return;
+}
+
+function _ZN14btQuantizedBvh9buildTreeEii(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+	var r6;
+	var r7;
+	var r8;
+	var r9;
+	var r10;
+	var r11;
+	var r12;
+	var r13;
+	var r14;
+	var r15;
+	var r16;
+	var r17;
+	var r18;
+	var r19;
+	var r20;
+	var r21;
+	var r22;
+	var r23;
+	var r24;
+	var r25;
+	var f0;
+	var f1;
+	var f2;
+	var f3;
+	var f4;
+	var f5;
+	var f6;
+	var f7;
+	var f8;
+	var f9;
+	var f10;
+	var f11;
+	var f12;
+	var f13;
+	var f14;
+	var f15;
+	var f16;
+	var f17;
+var __label__ = 0;
+	i7 = sp + -112;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp+1)];
+	r1 = heap32[(fp+2)];
+	r2 = (r1 - r0)|0;
+	if(r2 >0) //_LBB154_2
+{
+	r3 = heap32[(fp)];
+	r4 = r3 >> 2;
+	r5 = heap32[(r4+14)];
+	if(r2 !=1) //_LBB154_7
+{
+_5: do {
+	if(r0 <r1) //_LBB154_9
+{
+	r6 = heapU8[r3+60];
+	f1 =                         0;
+	r7 = r0;
+	f2 = f1;
+	f3 = f1;
+_7: while(true){
+	r8 = r6 & 255;
+	if(r8 ==0) //_LBB154_12
+{
+	r9 = heap32[(r4+19)];
+	r10 = r7 << 6;
+	r9 = (r9 + r10)|0;
+	r9 = r9 >> 2;
+	f0 = heapFloat[(r9)];
+	f5 = heapFloat[(r9+1)];
+	f8 = heapFloat[(r9+2)];
+	f4 = heapFloat[(r9+4)];
+	f6 = heapFloat[(r9+5)];
+	f7 = heapFloat[(r9+6)];
+}
+else{
+	r9 = heap32[(r4+29)];
+	r10 = r7 << 4;
+	r11 = (r9 + r10)|0;
+	r9 = heapU16[(r9+r10)>>1];
+	r10 = heapU16[(r11+2)>>1];
+	r12 = heapU16[(r11+4)>>1];
+	r13 = heapU16[(r11+6)>>1];
+	r14 = heapU16[(r11+8)>>1];
+	r11 = heapU16[(r11+10)>>1];
+	f0 = uint(r9); //fuitos r9, f0
+	f4 = heapFloat[(r4+9)];
+	f5 = uint(r13); //fuitos r13, f5
+	f6 = uint(r10); //fuitos r10, f6
+	f7 = heapFloat[(r4+10)];
+	f8 = uint(r14); //fuitos r14, f8
+	f9 = uint(r12); //fuitos r12, f9
+	f10 = heapFloat[(r4+11)];
+	f11 = uint(r11); //fuitos r11, f11
+	f0 = f0/f4;
+	f12 = heapFloat[(r4+1)];
+	f4 = f5/f4;
+	f5 = f6/f7;
+	f6 = heapFloat[(r4+2)];
+	f7 = f8/f7;
+	f8 = f9/f10;
+	f9 = heapFloat[(r4+3)];
+	f10 = f11/f10;
+	f0 = f0+f12;
+	f5 = f5+f6;
+	f8 = f8+f9;
+	f4 = f4+f12;
+	f6 = f7+f6;
+	f7 = f10+f9;
+}
+	f0 = f4+f0;
+	f4 =                       0.5;
+	f5 = f6+f5;
+	f6 = f7+f8;
+	f0 = f0*f4;
+	f5 = f5*f4;
+	f6 = f6*f4;
+	r7 = (r7 + 1)|0;
+	f3 = f3+f0;
+	f2 = f2+f5;
+	f1 = f1+f6;
+if(!(r1 !=r7)) //_LBB154_10
+{
+break _7;
+}
+}
+	f0 = r2; //fitos r2, f0
+	if(r0 <r1) //_LBB154_16
+{
+	f5 =                         1;
+	f5 = f5/f0;
+	f6 = f3*f5;
+	f7 = f2*f5;
+	f5 = f1*f5;
+	f1 =                         0;
+	r6 = r0;
+	f2 = f1;
+	f3 = f1;
+_16: while(true){
+	if(r8 ==0) //_LBB154_19
+{
+	r7 = heap32[(r4+19)];
+	r9 = r6 << 6;
+	r7 = (r7 + r9)|0;
+	r7 = r7 >> 2;
+	f8 = heapFloat[(r7)];
+	f10 = heapFloat[(r7+1)];
+	f13 = heapFloat[(r7+2)];
+	f9 = heapFloat[(r7+4)];
+	f11 = heapFloat[(r7+5)];
+	f12 = heapFloat[(r7+6)];
+}
+else{
+	r7 = heap32[(r4+29)];
+	r9 = r6 << 4;
+	r10 = (r7 + r9)|0;
+	r7 = heapU16[(r7+r9)>>1];
+	r9 = heapU16[(r10+2)>>1];
+	r11 = heapU16[(r10+4)>>1];
+	r12 = heapU16[(r10+6)>>1];
+	r13 = heapU16[(r10+8)>>1];
+	r10 = heapU16[(r10+10)>>1];
+	f8 = uint(r7); //fuitos r7, f8
+	f9 = heapFloat[(r4+9)];
+	f10 = uint(r12); //fuitos r12, f10
+	f11 = uint(r9); //fuitos r9, f11
+	f12 = heapFloat[(r4+10)];
+	f13 = uint(r13); //fuitos r13, f13
+	f14 = uint(r11); //fuitos r11, f14
+	f15 = heapFloat[(r4+11)];
+	f16 = uint(r10); //fuitos r10, f16
+	f8 = f8/f9;
+	f17 = heapFloat[(r4+1)];
+	f9 = f10/f9;
+	f10 = f11/f12;
+	f11 = heapFloat[(r4+2)];
+	f12 = f13/f12;
+	f13 = f14/f15;
+	f14 = heapFloat[(r4+3)];
+	f15 = f16/f15;
+	f8 = f8+f17;
+	f10 = f10+f11;
+	f13 = f13+f14;
+	f9 = f9+f17;
+	f11 = f12+f11;
+	f12 = f15+f14;
+}
+	f8 = f9+f8;
+	f9 = f11+f10;
+	f10 = f12+f13;
+	f8 = f8*f4;
+	f9 = f9*f4;
+	f10 = f10*f4;
+	f8 = f8-f6;
+	f9 = f9-f7;
+	f10 = f10-f5;
+	f8 = f8*f8;
+	f9 = f9*f9;
+	f10 = f10*f10;
+	r6 = (r6 + 1)|0;
+	f3 = f3+f8;
+	f2 = f2+f9;
+	f1 = f1+f10;
+if(!(r1 !=r6)) //_LBB154_17
+{
+break _5;
+}
+}
+}
+else{
+	f1 =                         0;
+	f2 = f1;
+	f3 = f1;
+}
+}
+else{
+	f0 = r2; //fitos r2, f0
+	f1 =                         0;
+	f2 = f1;
+	f3 = f1;
+}
+} while(0);
+	f4 =                        -1;
+	f5 =                         1;
+	f0 = f0+f4;
+	f0 = f5/f0;
+	f3 = f3*f0;
+	f2 = f2*f0;
+	f0 = f1*f0;
+	if(f3 >=f2) //_LBB154_23
+{
+	r6 = 2;
+	r7 = 0;
+	r6 = f3 < f0 ? r6 : r7;
+}
+else{
+	r6 = 2;
+	r7 = 1;
+	r6 = f2 < f0 ? r6 : r7;
+}
+	r7 = sp + -32;
+	r8 = r7 >> 2;
+	heap32[(fp+-8)] = 0;
+	heap32[(r8+1)] = 0;
+	heap32[(r8+2)] = 0;
+	heap32[(r8+3)] = 0;
+	if(r0 <r1) //_LBB154_26
+{
+	r9 = heapU8[r3+60];
+	f0 =                         0;
+	r10 = r0;
+	f1 = f0;
+	f2 = f0;
+_31: while(true){
+	r11 = r9 & 255;
+	if(r11 ==0) //_LBB154_29
+{
+	r11 = heap32[(r4+19)];
+	r12 = r10 << 6;
+	r11 = (r11 + r12)|0;
+	r11 = r11 >> 2;
+	f3 = heapFloat[(r11)];
+	f6 = heapFloat[(r11+1)];
+	f9 = heapFloat[(r11+2)];
+	f4 = heapFloat[(r11+4)];
+	f7 = heapFloat[(r11+5)];
+	f8 = heapFloat[(r11+6)];
+}
+else{
+	r11 = heap32[(r4+29)];
+	r12 = r10 << 4;
+	r13 = (r11 + r12)|0;
+	r11 = heapU16[(r11+r12)>>1];
+	r12 = heapU16[(r13+2)>>1];
+	r14 = heapU16[(r13+4)>>1];
+	r15 = heapU16[(r13+6)>>1];
+	r16 = heapU16[(r13+8)>>1];
+	r13 = heapU16[(r13+10)>>1];
+	f3 = uint(r11); //fuitos r11, f3
+	f4 = heapFloat[(r4+9)];
+	f6 = uint(r15); //fuitos r15, f6
+	f7 = uint(r12); //fuitos r12, f7
+	f8 = heapFloat[(r4+10)];
+	f9 = uint(r16); //fuitos r16, f9
+	f10 = uint(r14); //fuitos r14, f10
+	f11 = heapFloat[(r4+11)];
+	f12 = uint(r13); //fuitos r13, f12
+	f3 = f3/f4;
+	f13 = heapFloat[(r4+1)];
+	f4 = f6/f4;
+	f6 = f7/f8;
+	f7 = heapFloat[(r4+2)];
+	f8 = f9/f8;
+	f9 = f10/f11;
+	f10 = heapFloat[(r4+3)];
+	f11 = f12/f11;
+	f3 = f3+f13;
+	f6 = f6+f7;
+	f9 = f9+f10;
+	f4 = f4+f13;
+	f7 = f8+f7;
+	f8 = f11+f10;
+}
+	f3 = f4+f3;
+	f4 =                       0.5;
+	f6 = f7+f6;
+	f7 = f8+f9;
+	f3 = f3*f4;
+	f6 = f6*f4;
+	f4 = f7*f4;
+	r10 = (r10 + 1)|0;
+	f2 = f2+f3;
+	f1 = f1+f6;
+	f0 = f0+f4;
+if(!(r1 !=r10)) //_LBB154_27
+{
+break _31;
+}
+}
+	heapFloat[(r8+2)] = f0;
+	heapFloat[(r8+1)] = f1;
+	heapFloat[(fp+-8)] = f2;
+}
+else{
+	f0 =                         0;
+	f1 = f0;
+	f2 = f0;
+}
+	f3 = r2; //fitos r2, f3
+	f3 = f5/f3;
+	f2 = f2*f3;
+	f1 = f1*f3;
+	heapFloat[(fp+-8)] = f2;
+	f0 = f0*f3;
+	heapFloat[(r8+1)] = f1;
+	heapFloat[(r8+2)] = f0;
+_40: do {
+	if(r0 <r1) //_LBB154_34
+{
+	r8 = r6 << 2;
+	r6 = (r7 + r8)|0;
+	r6 = r6 >> 2;
+	f0 = heapFloat[(r6)];
+	r6 = r0 << 4;
+	r7 = (r0 - r1)|0;
+	r9 = r0 << 6;
+	r10 = r6 | 12;
+	r11 = 0;
+	r12 = r9;
+	r6 = r0;
+_42: while(true){
+	r13 = heapU8[r3+60];
+	if(r13 ==0) //_LBB154_37
+{
+	r14 = r11 << 4;
+	r15 = heap32[(r4+19)];
+	r15 = (r15 + r9)|0;
+	r14 = r14 << 2;
+	r14 = (r15 - r14)|0;
+	r14 = r14 >> 2;
+	f1 = heapFloat[(r14)];
+	f3 = heapFloat[(r14+1)];
+	f6 = heapFloat[(r14+2)];
+	f2 = heapFloat[(r14+4)];
+	f4 = heapFloat[(r14+5)];
+	f5 = heapFloat[(r14+6)];
+}
+else{
+	r14 = heap32[(r4+29)];
+	r14 = (r14 + r10)|0;
+	r15 = r11 << 4;
+	r14 = (r14 - r15)|0;
+	r15 = heapU16[(r14+-12)>>1];
+	r16 = heapU16[(r14+-10)>>1];
+	r17 = heapU16[(r14+-8)>>1];
+	r18 = heapU16[(r14+-6)>>1];
+	r19 = heapU16[(r14+-4)>>1];
+	r14 = heapU16[(r14+-2)>>1];
+	f1 = uint(r15); //fuitos r15, f1
+	f2 = heapFloat[(r4+9)];
+	f3 = uint(r18); //fuitos r18, f3
+	f4 = uint(r16); //fuitos r16, f4
+	f5 = heapFloat[(r4+10)];
+	f6 = uint(r19); //fuitos r19, f6
+	f7 = uint(r17); //fuitos r17, f7
+	f8 = heapFloat[(r4+11)];
+	f9 = uint(r14); //fuitos r14, f9
+	f1 = f1/f2;
+	f10 = heapFloat[(r4+1)];
+	f2 = f3/f2;
+	f3 = f4/f5;
+	f4 = heapFloat[(r4+2)];
+	f5 = f6/f5;
+	f6 = f7/f8;
+	f7 = heapFloat[(r4+3)];
+	f8 = f9/f8;
+	f1 = f1+f10;
+	f3 = f3+f4;
+	f6 = f6+f7;
+	f2 = f2+f10;
+	f4 = f5+f4;
+	f5 = f8+f7;
+}
+	f1 = f2+f1;
+	f2 =                       0.5;
+	r14 = sp + -48;
+	f3 = f4+f3;
+	f1 = f1*f2;
+	f4 = f5+f6;
+	r15 = r14 >> 2;
+	f3 = f3*f2;
+	heapFloat[(fp+-12)] = f1;
+	f1 = f4*f2;
+	heapFloat[(r15+1)] = f3;
+	r14 = (r14 + r8)|0;
+	heapFloat[(r15+2)] = f1;
+	r14 = r14 >> 2;
+	heap32[(r15+3)] = 0;
+	f1 = heapFloat[(r14)];
+	if(f1 >f0) //_LBB154_40
+{
+	if(r13 ==0) //_LBB154_42
+{
+	r13 = r11 << 4;
+	r14 = heap32[(r4+19)];
+	r15 = (r14 + r9)|0;
+	r13 = r13 << 2;
+	r13 = (r15 - r13)|0;
+	r13 = r13 >> 2;
+	r15 = heap32[(r13+15)];
+	r16 = heap32[(r13+14)];
+	r17 = heap32[(r13+13)];
+	r18 = heap32[(r13+12)];
+	r19 = heap32[(r13+11)];
+	r20 = heap32[(r13+10)];
+	r21 = heap32[(r13+9)];
+	r22 = heap32[(r13+8)];
+	f1 = heapFloat[(r13+7)];
+	f2 = heapFloat[(r13+6)];
+	f3 = heapFloat[(r13+5)];
+	f4 = heapFloat[(r13+4)];
+	f5 = heapFloat[(r13+3)];
+	f6 = heapFloat[(r13+2)];
+	f7 = heapFloat[(r13+1)];
+	f8 = heapFloat[(r13)];
+	r13 = r6 << 6;
+	r23 = (r14 + r12)|0;
+	r14 = (r14 + r13)|0;
+	heap32[(g0)] = r23;
+	heap32[(g0+1)] = r14;
+	heap32[(g0+2)] = 64;
+	memcpy(i7);
+	r14 = heap32[(r4+19)];
+	r13 = (r14 + r13)|0;
+	r13 = r13 >> 2;
+	heapFloat[(r13)] = f8;
+	heapFloat[(r13+1)] = f7;
+	heapFloat[(r13+2)] = f6;
+	heapFloat[(r13+3)] = f5;
+	heapFloat[(r13+4)] = f4;
+	heapFloat[(r13+5)] = f3;
+	heapFloat[(r13+6)] = f2;
+	heapFloat[(r13+7)] = f1;
+	heap32[(r13+8)] = r22;
+	heap32[(r13+9)] = r21;
+	heap32[(r13+10)] = r20;
+	heap32[(r13+11)] = r19;
+	heap32[(r13+12)] = r18;
+	heap32[(r13+13)] = r17;
+	heap32[(r13+14)] = r16;
+	heap32[(r13+15)] = r15;
+}
+else{
+	r13 = heap32[(r4+29)];
+	r14 = (r13 + r10)|0;
+	r15 = r11 << 4;
+	r14 = (r14 - r15)|0;
+	r15 = r6 << 4;
+	r16 = r14 >> 2;
+	r17 = heap32[(r16)];
+	r18 = heapU16[(r14+-2)>>1];
+	r19 = heapU16[(r14+-4)>>1];
+	r20 = heapU16[(r14+-6)>>1];
+	r21 = heapU16[(r14+-8)>>1];
+	r22 = heapU16[(r14+-10)>>1];
+	r23 = heapU16[(r13+r15)>>1];
+	r24 = heapU16[(r14+-12)>>1];
+	r13 = (r13 + r15)|0;
+	heap16[(r14+-12)>>1] = r23;
+	r23 = heapU16[(r13+2)>>1];
+	heap16[(r14+-10)>>1] = r23;
+	r23 = heapU16[(r13+4)>>1];
+	heap16[(r14+-8)>>1] = r23;
+	r23 = heapU16[(r13+6)>>1];
+	heap16[(r14+-6)>>1] = r23;
+	r23 = heapU16[(r13+8)>>1];
+	heap16[(r14+-4)>>1] = r23;
+	r23 = heapU16[(r13+10)>>1];
+	r13 = r13 >> 2;
+	heap16[(r14+-2)>>1] = r23;
+	r13 = heap32[(r13+3)];
+	heap32[(r16)] = r13;
+	r13 = heap32[(r4+29)];
+	r14 = (r13 + r15)|0;
+	heap16[(r13+r15)>>1] = r24;
+	heap16[(r14+2)>>1] = r22;
+	heap16[(r14+4)>>1] = r21;
+	heap16[(r14+6)>>1] = r20;
+	heap16[(r14+8)>>1] = r19;
+	r13 = r14 >> 2;
+	heap16[(r14+10)>>1] = r18;
+	heap32[(r13+3)] = r17;
+}
+	r6 = (r6 + 1)|0;
+}
+	r11 = (r11 + -1)|0;
+	r12 = (r12 + 64)|0;
+if(!(r7 !=r11)) //_LBB154_35
+{
+break _40;
+}
+}
+}
+else{
+	r6 = r0;
+}
+} while(0);
+	r7 = (r2 / 3)|0;
+	r8 = (r7 + r0)|0;
+	if(r8 >=r6) //_LBB154_48
+{
+__label__ = 46;
+}
+else{
+	r8 = (r1 + -1)|0;
+	r7 = (r8 - r7)|0;
+	if(r7 <=r6) //_LBB154_48
+{
+__label__ = 46;
+}
+else{
+__label__ = 47;
+}
+}
+if (__label__ == 46){
+	r6 = r2 >> 1;
+	r6 = (r6 + r0)|0;
+}
+if(!(r6 ==r0)) //_LBB154_51
+{
+	if(r6 !=r1) //_LBB154_52
+{
+	r2 = heap32[(r4+14)];
+	heap32[(fp+-21)] = r2;
+	r2 = heapU8[r3+60];
+	if(r2 ==0) //_LBB154_54
+{
+	r2 = heap32[(fp+-21)];
+	r2 = r2 << 6;
+	r7 = heap32[(r4+24)];
+	r2 = (r7 + r2)|0;
+	r2 = r2 >> 2;
+	heap32[(r2)] = heap32[(r4+5)];
+	heap32[(r2+1)] = heap32[(r4+6)];
+	heap32[(r2+2)] = heap32[(r4+7)];
+	heap32[(r2+3)] = heap32[(r4+8)];
+}
+else{
+	r2 = heap32[(r4+34)];
+	r7 = heap32[(fp+-21)];
+	r7 = r7 << 4;
+	r2 = (r2 + r7)|0;
+	r7 = (r3 + 20)|0;
+	heap32[(g0)] = r3;
+	heap32[(g0+1)] = r2;
+	heap32[(g0+2)] = r7;
+	heap32[(g0+3)] = 0;
+	_ZNK14btQuantizedBvh8quantizeEPtRK9btVector3i(i7);
+}
+	r2 = heap32[(r4+14)];
+	r7 = heapU8[r3+60];
+	if(r7 ==0) //_LBB154_57
+{
+	r2 = r2 << 6;
+	r7 = heap32[(r4+24)];
+	r2 = (r7 + r2)|0;
+	r2 = r2 >> 2;
+	heap32[(r2+4)] = heap32[(r4+1)];
+	heap32[(r2+5)] = heap32[(r4+2)];
+	heap32[(r2+6)] = heap32[(r4+3)];
+	heap32[(r2+7)] = heap32[(r4+4)];
+}
+else{
+	r7 = heap32[(r4+34)];
+	r2 = r2 << 4;
+	r2 = (r7 + r2)|0;
+	r2 = (r2 + 6)|0;
+	r7 = (r3 + 4)|0;
+	heap32[(g0)] = r3;
+	heap32[(g0+1)] = r2;
+	heap32[(g0+2)] = r7;
+	heap32[(g0+3)] = 1;
+	_ZNK14btQuantizedBvh8quantizeEPtRK9btVector3i(i7);
+}
+_73: do {
+if(!(r0 >=r1)) //_LBB154_95
+{
+	r2 = r0;
+_75: while(true){
+	r7 = heapU8[r3+60];
+_77: do {
+	if(r7 ==0) //_LBB154_69
+{
+	r7 = heap32[(r4+19)];
+	r8 = r2 << 6;
+	r7 = (r7 + r8)|0;
+	r7 = r7 >> 2;
+	f0 = heapFloat[(r7+4)];
+	r8 = sp + -80;
+	heapFloat[(fp+-20)] = f0;
+	f1 = heapFloat[(r7+5)];
+	r8 = r8 >> 2;
+	heapFloat[(r8+1)] = f1;
+	f2 = heapFloat[(r7+6)];
+	heapFloat[(r8+2)] = f2;
+	f3 = heapFloat[(r7+7)];
+	heapFloat[(r8+3)] = f3;
+	f4 = heapFloat[(r7)];
+	r8 = sp + -64;
+	heapFloat[(fp+-16)] = f4;
+	f5 = heapFloat[(r7+1)];
+	r8 = r8 >> 2;
+	heapFloat[(r8+1)] = f5;
+	f6 = heapFloat[(r7+2)];
+	heapFloat[(r8+2)] = f6;
+	f7 = heapFloat[(r7+3)];
+	heapFloat[(r8+3)] = f7;
+	r7 = heap32[(r4+14)];
+	r8 = heap32[(r4+24)];
+	r7 = r7 << 6;
+	r8 = (r8 + r7)|0;
+	r8 = r8 >> 2;
+	f8 = heapFloat[(r8)];
+if(!(f4 >=f8)) //_LBB154_71
+{
+	heapFloat[(r8)] = f4;
+}
+	f4 = heapFloat[(r8+1)];
+if(!(f5 >=f4)) //_LBB154_73
+{
+	heapFloat[(r8+1)] = f5;
+}
+	f4 = heapFloat[(r8+2)];
+if(!(f6 >=f4)) //_LBB154_75
+{
+	heapFloat[(r8+2)] = f6;
+}
+	f4 = heapFloat[(r8+3)];
+if(!(f7 >=f4)) //_LBB154_77
+{
+	heapFloat[(r8+3)] = f7;
+}
+	r8 = heap32[(r4+24)];
+	r7 = (r8 + r7)|0;
+	r7 = r7 >> 2;
+	f4 = heapFloat[(r7+4)];
+if(!(f4 >=f0)) //_LBB154_79
+{
+	heapFloat[(r7+4)] = f0;
+}
+	f0 = heapFloat[(r7+5)];
+if(!(f0 >=f1)) //_LBB154_81
+{
+	heapFloat[(r7+5)] = f1;
+}
+	f0 = heapFloat[(r7+6)];
+if(!(f0 >=f2)) //_LBB154_83
+{
+	heapFloat[(r7+6)] = f2;
+}
+	f0 = heapFloat[(r7+7)];
+	if(f0 >=f3) //_LBB154_94
+{
+break _77;
+}
+else{
+	heapFloat[(r7+7)] = f3;
+}
+}
+else{
+	r7 = heap32[(r4+29)];
+	r8 = r2 << 4;
+	r9 = (r7 + r8)|0;
+	r10 = sp + -80;
+	r11 = heapU16[(r9+10)>>1];
+	r12 = heapU16[(r9+8)>>1];
+	r13 = heapU16[(r9+6)>>1];
+	f0 = heapFloat[(r4+11)];
+	f1 = heapFloat[(r4+10)];
+	f2 = heapFloat[(r4+9)];
+	r14 = r10 >> 2;
+	f3 = uint(r13); //fuitos r13, f3
+	heap32[(r14+3)] = 0;
+	f3 = f3/f2;
+	f4 = heapFloat[(r4+1)];
+	f3 = f3+f4;
+	f5 = uint(r12); //fuitos r12, f5
+	heapFloat[(fp+-20)] = f3;
+	f3 = f5/f1;
+	f5 = heapFloat[(r4+2)];
+	f3 = f3+f5;
+	f6 = uint(r11); //fuitos r11, f6
+	heapFloat[(r14+1)] = f3;
+	f3 = f6/f0;
+	f6 = heapFloat[(r4+3)];
+	f3 = f3+f6;
+	heapFloat[(r14+2)] = f3;
+	r7 = heapU16[(r7+r8)>>1];
+	r8 = sp + -64;
+	f3 = uint(r7); //fuitos r7, f3
+	r7 = heapU16[(r9+4)>>1];
+	r9 = heapU16[(r9+2)>>1];
+	f7 = uint(r9); //fuitos r9, f7
+	f2 = f3/f2;
+	r9 = r8 >> 2;
+	f3 = uint(r7); //fuitos r7, f3
+	f1 = f7/f1;
+	f2 = f2+f4;
+	heap32[(r9+3)] = 0;
+	f0 = f3/f0;
+	f1 = f1+f5;
+	heapFloat[(fp+-16)] = f2;
+	f0 = f0+f6;
+	heapFloat[(r9+1)] = f1;
+	heapFloat[(r9+2)] = f0;
+	r7 = heap32[(r4+14)];
+	r9 = sp + -6;
+	heap32[(g0)] = r3;
+	heap32[(g0+1)] = r9;
+	heap32[(g0+2)] = r8;
+	heap32[(g0+3)] = 0;
+	_ZNK14btQuantizedBvh8quantizeEPtRK9btVector3i(i7);
+	r8 = sp + -12;
+	heap32[(g0)] = r3;
+	heap32[(g0+1)] = r8;
+	heap32[(g0+2)] = r10;
+	heap32[(g0+3)] = 1;
+	_ZNK14btQuantizedBvh8quantizeEPtRK9btVector3i(i7);
+	r8 = heapU16[(sp+-6)>>1];
+	r9 = heap32[(r4+34)];
+	r7 = r7 << 4;
+	r10 = heapU16[(r9+r7)>>1];
+	if(uint(r10) >uint(r8)) //_LBB154_63
+{
+	heap16[(r9+r7)>>1] = r8;
+	r9 = heap32[(r4+34)];
+}
+	r8 = (r9 + r7)|0;
+	r10 = heapU16[(sp+-12)>>1];
+	r11 = heapU16[(r8+6)>>1];
+	if(uint(r11) <uint(r10)) //_LBB154_66
+{
+	heap16[(r8+6)>>1] = r10;
+	r9 = heap32[(r4+34)];
+}
+	r8 = (r9 + r7)|0;
+	r10 = heapU16[(sp+-4)>>1];
+	r11 = heapU16[(r8+2)>>1];
+	if(uint(r11) >uint(r10)) //_LBB154_89
+{
+	heap16[(r8+2)>>1] = r10;
+	r9 = heap32[(r4+34)];
+}
+	r8 = (r9 + r7)|0;
+	r10 = heapU16[(sp+-10)>>1];
+	r11 = heapU16[(r8+8)>>1];
+	if(uint(r11) <uint(r10)) //_LBB154_90
+{
+	heap16[(r8+8)>>1] = r10;
+	r9 = heap32[(r4+34)];
+}
+	r8 = (r9 + r7)|0;
+	r10 = heapU16[(sp+-2)>>1];
+	r11 = heapU16[(r8+4)>>1];
+	if(uint(r11) >uint(r10)) //_LBB154_92
+{
+	heap16[(r8+4)>>1] = r10;
+	r9 = heap32[(r4+34)];
+}
+	r7 = (r9 + r7)|0;
+	r8 = heapU16[(sp+-8)>>1];
+	r9 = heapU16[(r7+10)>>1];
+	if(uint(r9) <uint(r8)) //_LBB154_93
+{
+	heap16[(r7+10)>>1] = r8;
+}
+}
+} while(0);
+	r2 = (r2 + 1)|0;
+if(!(r1 !=r2)) //_LBB154_60
+{
+break _73;
+}
+}
+}
+} while(0);
+	r2 = heap32[(r4+14)];
+	r7 = (r2 + 1)|0;
+	heap32[(r4+14)] = r7;
+	heap32[(g0)] = r3;
+	heap32[(g0+1)] = r0;
+	heap32[(g0+2)] = r6;
+	_ZN14btQuantizedBvh9buildTreeEii(i7);
+	r0 = heap32[(r4+14)];
+	heap32[(fp+-23)] = r0;
+	heap32[(g0)] = r3;
+	heap32[(g0+1)] = r6;
+	heap32[(g0+2)] = r1;
+	_ZN14btQuantizedBvh9buildTreeEii(i7);
+	r0 = heap32[(r4+14)];
+	r0 = (r0 - r5)|0;
+	heap32[(fp+-22)] = r0;
+	r0 = heapU8[r3+60];
+_120: do {
+if(!(r0 ==0)) //_LBB154_143
+{
+	r0 = heap32[(fp+-22)];
+	r0 = r0 << 4;
+if(!(r0 <2049)) //_LBB154_142
+{
+	r0 = heap32[(r4+34)];
+	r1 = heap32[(fp+-23)];
+	r1 = r1 << 4;
+	heap32[(fp+-24)] = r1;
+	r2 = r2 << 4;
+	r1 = (r0 + r1)|0;
+	r2 = (r0 + r2)|0;
+	r5 = r1 >> 2;
+	r6 = r2 >> 2;
+	r5 = heap32[(r5+3)];
+	r8 = 0;
+	r6 = heap32[(r6+7)];
+	r9 = 1;
+	r10 = (r8 - r6)|0;
+	r6 = r6 < 0 ? r10 : r9;
+	r10 = r6 << 4;
+if(!(r10 >2048)) //_LBB154_119
+{
+	r10 = heap32[(r4+39)];
+	r11 = heap32[(r4+38)];
+	if(r10 ==r11) //_LBB154_100
+{
+	r12 = r11 << 1;
+	r12 = r11 == 0 ? r9 : r12;
+	if(r10 >=r12) //_LBB154_99
+{
+__label__ = 92;
+}
+else{
+	if(r12 !=0) //_LBB154_103
+{
+	r10 = gNumAlignedAllocs;
+	r10 = r10 >> 2;
+	r13 = heap32[(r10)];
+	r13 = (r13 + 1)|0;
+	r14 = r12 << 5;
+	heap32[(r10)] = r13;
+	r10 = r14 | 19;
+	heap32[(g0)] = r10;
+	malloc(i7);
+	r13 = r_g0;
+	if(r13 !=0) //_LBB154_105
+{
+	r10 = 0;
+	r14 = (r13 + 4)|0;
+	r10 = (r10 - r14)|0;
+	r10 = r10 & 15;
+	r10 = (r13 + r10)|0;
+	r14 = (r10 + 4)|0;
+	r10 = r10 >> 2;
+	heap32[(r10)] = r13;
+	r13 = r14;
+}
+}
+else{
+	r13 = 0;
+}
+	r14 = (r3 + 160)|0;
+	if(r11 <1) //_LBB154_108
+{
+	r10 = r14 >> 2;
+	r16 = heap32[(r10)];
+}
+else{
+	r10 = 0;
+	r15 = r11;
+_137: while(true){
+	r16 = r14 >> 2;
+	r16 = heap32[(r16)];
+	r17 = (r16 + r10)|0;
+	r17 = r17 >> 2;
+	r18 = (r13 + r10)|0;
+	r15 = (r15 + -1)|0;
+	r10 = (r10 + 32)|0;
+	r19 = heap32[(r17)];
+	r18 = r18 >> 2;
+	r20 = heap32[(r17+1)];
+	r21 = heap32[(r17+2)];
+	r22 = heap32[(r17+3)];
+	r23 = heap32[(r17+4)];
+	r24 = heap32[(r17+5)];
+	r25 = heap32[(r17+6)];
+	r17 = heap32[(r17+7)];
+	heap32[(r18)] = r19;
+	heap32[(r18+1)] = r20;
+	heap32[(r18+2)] = r21;
+	heap32[(r18+3)] = r22;
+	heap32[(r18+4)] = r23;
+	heap32[(r18+5)] = r24;
+	heap32[(r18+6)] = r25;
+	heap32[(r18+7)] = r17;
+if(!(r15 !=0)) //_LBB154_109
+{
+break _137;
+}
+}
+	r14 = (r3 + 160)|0;
+}
+	if(r16 !=0) //_LBB154_113
+{
+	r10 = heapU8[r3+164];
+	if(r10 !=0) //_LBB154_115
+{
+	r10 = gNumAlignedFree;
+	r10 = r10 >> 2;
+	r15 = heap32[(r10)];
+	r15 = (r15 + 1)|0;
+	r16 = r16 >> 2;
+	heap32[(r10)] = r15;
+	r10 = heap32[(r16+-1)];
+	heap32[(g0)] = r10;
+	free(i7);
+	r10 = heap32[(r4+38)];
+}
+else{
+	r10 = r11;
+}
+	r15 = r14 >> 2;
+	heap32[(r15)] = 0;
+}
+else{
+	r10 = r11;
+}
+	r14 = r14 >> 2;
+	heap8[r3+164] = r9;
+	heap32[(r14)] = r13;
+	heap32[(r4+39)] = r12;
+__label__ = 110;
+}
+}
+else{
+__label__ = 92;
+}
+if (__label__ == 92){
+	r10 = r11;
+}
+	r10 = (r10 + 1)|0;
+	heap32[(r4+38)] = r10;
+	r10 = heap32[(r4+40)];
+	r12 = heapU16[(r2+16)>>1];
+	r11 = r11 << 5;
+	heap16[(r10+r11)>>1] = r12;
+	r10 = (r10 + r11)|0;
+	r11 = heapU16[(r2+18)>>1];
+	heap16[(r10+2)>>1] = r11;
+	r11 = heapU16[(r2+20)>>1];
+	heap16[(r10+4)>>1] = r11;
+	r11 = heapU16[(r2+22)>>1];
+	heap16[(r10+6)>>1] = r11;
+	r11 = heapU16[(r2+24)>>1];
+	heap16[(r10+8)>>1] = r11;
+	r2 = heapU16[(r2+26)>>1];
+	r11 = r10 >> 2;
+	heap16[(r10+10)>>1] = r2;
+	heap32[(r11+3)] = r7;
+	heap32[(r11+4)] = r6;
+}
+	r2 = (r8 - r5)|0;
+	r2 = r5 < 0 ? r2 : r9;
+	r5 = r2 << 4;
+if(!(r5 >2048)) //_LBB154_141
+{
+	r5 = heap32[(r4+39)];
+	r6 = heap32[(r4+38)];
+	if(r5 ==r6) //_LBB154_122
+{
+	r7 = r6 << 1;
+	r7 = r6 == 0 ? r9 : r7;
+	if(r5 >=r7) //_LBB154_121
+{
+__label__ = 113;
+}
+else{
+	if(r7 !=0) //_LBB154_125
+{
+	r5 = gNumAlignedAllocs;
+	r5 = r5 >> 2;
+	r10 = heap32[(r5)];
+	r10 = (r10 + 1)|0;
+	r11 = r7 << 5;
+	heap32[(r5)] = r10;
+	r5 = r11 | 19;
+	heap32[(g0)] = r5;
+	malloc(i7);
+	r10 = r_g0;
+	if(r10 !=0) //_LBB154_127
+{
+	r5 = (r10 + 4)|0;
+	r5 = (r8 - r5)|0;
+	r5 = r5 & 15;
+	r5 = (r10 + r5)|0;
+	r11 = (r5 + 4)|0;
+	r5 = r5 >> 2;
+	heap32[(r5)] = r10;
+	r10 = r11;
+}
+}
+else{
+	r10 = 0;
+}
+	r11 = (r3 + 160)|0;
+	if(r6 <1) //_LBB154_130
+{
+	r5 = r11 >> 2;
+	r12 = heap32[(r5)];
+}
+else{
+	r5 = r6;
+_166: while(true){
+	r12 = r11 >> 2;
+	r12 = heap32[(r12)];
+	r13 = (r12 + r8)|0;
+	r13 = r13 >> 2;
+	r14 = (r10 + r8)|0;
+	r5 = (r5 + -1)|0;
+	r8 = (r8 + 32)|0;
+	r15 = heap32[(r13)];
+	r14 = r14 >> 2;
+	r16 = heap32[(r13+1)];
+	r17 = heap32[(r13+2)];
+	r18 = heap32[(r13+3)];
+	r19 = heap32[(r13+4)];
+	r20 = heap32[(r13+5)];
+	r21 = heap32[(r13+6)];
+	r13 = heap32[(r13+7)];
+	heap32[(r14)] = r15;
+	heap32[(r14+1)] = r16;
+	heap32[(r14+2)] = r17;
+	heap32[(r14+3)] = r18;
+	heap32[(r14+4)] = r19;
+	heap32[(r14+5)] = r20;
+	heap32[(r14+6)] = r21;
+	heap32[(r14+7)] = r13;
+if(!(r5 !=0)) //_LBB154_131
+{
+break _166;
+}
+}
+	r11 = (r3 + 160)|0;
+}
+	if(r12 !=0) //_LBB154_135
+{
+	r5 = heapU8[r3+164];
+	if(r5 !=0) //_LBB154_137
+{
+	r5 = gNumAlignedFree;
+	r5 = r5 >> 2;
+	r8 = heap32[(r5)];
+	r8 = (r8 + 1)|0;
+	r12 = r12 >> 2;
+	heap32[(r5)] = r8;
+	r5 = heap32[(r12+-1)];
+	heap32[(g0)] = r5;
+	free(i7);
+	r5 = heap32[(r4+38)];
+}
+else{
+	r5 = r6;
+}
+	r8 = r11 >> 2;
+	heap32[(r8)] = 0;
+}
+else{
+	r5 = r6;
+}
+	r8 = r11 >> 2;
+	heap8[r3+164] = r9;
+	heap32[(r8)] = r10;
+	heap32[(r4+39)] = r7;
+__label__ = 131;
+}
+}
+else{
+__label__ = 113;
+}
+if (__label__ == 113){
+	r5 = r6;
+}
+	r5 = (r5 + 1)|0;
+	heap32[(r4+38)] = r5;
+	r5 = heap32[(r4+40)];
+	r7 = heap32[(fp+-24)];
+	r0 = heapU16[(r0+r7)>>1];
+	r6 = r6 << 5;
+	heap16[(r5+r6)>>1] = r0;
+	r0 = (r5 + r6)|0;
+	r5 = heapU16[(r1+2)>>1];
+	heap16[(r0+2)>>1] = r5;
+	r5 = heapU16[(r1+4)>>1];
+	heap16[(r0+4)>>1] = r5;
+	r5 = heapU16[(r1+6)>>1];
+	heap16[(r0+6)>>1] = r5;
+	r5 = heapU16[(r1+8)>>1];
+	heap16[(r0+8)>>1] = r5;
+	r1 = heapU16[(r1+10)>>1];
+	r5 = r0 >> 2;
+	heap16[(r0+10)>>1] = r1;
+	r0 = heap32[(fp+-23)];
+	heap32[(r5+3)] = r0;
+	heap32[(r5+4)] = r2;
+}
+	r0 = heap32[(r4+38)];
+	heap32[(r4+42)] = r0;
+	r0 = heapU8[r3+60];
+	if(r0 ==0) //_LBB154_143
+{
+break _120;
+}
+}
+	r0 = heap32[(fp+-21)];
+	r0 = r0 << 4;
+	r4 = heap32[(r4+34)];
+	r4 = (r4 + r0)|0;
+	r0 = 0;
+	r4 = r4 >> 2;
+	r1 = heap32[(fp+-22)];
+	r0 = (r0 - r1)|0;
+	heap32[(r4+3)] = r0;
+	return;
+}
+} while(0);
+	r0 = heap32[(fp+-21)];
+	r0 = r0 << 6;
+	r1 = heap32[(r4+24)];
+	r0 = (r1 + r0)|0;
+	r0 = r0 >> 2;
+	r1 = heap32[(fp+-22)];
+	heap32[(r0+8)] = r1;
+	return;
+}
+}
+	r0 = _2E_str21;
+	r1 = _2E_str537;
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r1;
+	heap32[(g0+2)] = 278;
+	_assert(i7);
+}
+else{
+	r1 = heapU8[r3+60];
+	if(r1 ==0) //_LBB154_5
+{
+	r1 = heap32[(r4+24)];
+	r2 = heap32[(r4+19)];
+	r3 = r5 << 6;
+	r0 = r0 << 6;
+	r1 = (r1 + r3)|0;
+	r0 = (r2 + r0)|0;
+	heap32[(g0)] = r1;
+	heap32[(g0+1)] = r0;
+	heap32[(g0+2)] = 64;
+	memcpy(i7);
+}
+else{
+	r0 = r0 << 4;
+	r1 = heap32[(r4+29)];
+	r2 = heap32[(r4+34)];
+	r3 = heapU16[(r1+r0)>>1];
+	r5 = r5 << 4;
+	r0 = (r1 + r0)|0;
+	heap16[(r2+r5)>>1] = r3;
+	r1 = (r2 + r5)|0;
+	r2 = heapU16[(r0+2)>>1];
+	heap16[(r1+2)>>1] = r2;
+	r2 = heapU16[(r0+4)>>1];
+	heap16[(r1+4)>>1] = r2;
+	r2 = heapU16[(r0+6)>>1];
+	heap16[(r1+6)>>1] = r2;
+	r2 = heapU16[(r0+8)>>1];
+	heap16[(r1+8)>>1] = r2;
+	r2 = heapU16[(r0+10)>>1];
+	r0 = r0 >> 2;
+	heap16[(r1+10)>>1] = r2;
+	r1 = r1 >> 2;
+	r0 = heap32[(r0+3)];
+	heap32[(r1+3)] = r0;
+}
+	r0 = heap32[(r4+14)];
+	r0 = (r0 + 1)|0;
+	heap32[(r4+14)] = r0;
+	return;
+}
+}
+else{
+	r0 = _2E_str2246;
+	r1 = _2E_str537;
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r1;
+	heap32[(g0+2)] = 127;
+	_assert(i7);
+}
+}
+
+function _ZNK14btQuantizedBvh36walkStacklessQuantizedTreeAgainstRayEP21btNodeOverlapCallbackRK9btVector3S4_S4_S4_ii(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+	var r6;
+	var r7;
+	var r8;
+	var r9;
+	var r10;
+	var r11;
+	var r12;
+	var r13;
+	var r14;
+	var r15;
+	var r16;
+	var r17;
+	var r18;
+	var r19;
+	var r20;
+	var r21;
+	var f0;
+	var f1;
+	var f2;
+	var f3;
+	var f4;
+	var f5;
+	var f6;
+	var f7;
+	var f8;
+	var f9;
+	var f10;
+	var f11;
+	var f12;
+	var f13;
+	var f14;
+	var f15;
+	var f16;
+	var f17;
+	var f18;
+	var f19;
+var __label__ = 0;
+	i7 = sp + -96;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = heapU8[r0+60];
+	if(r1 !=0) //_LBB155_2
+{
+	r1 = heap32[(fp+1)];
+	r2 = heap32[(fp+2)];
+	r3 = heap32[(fp+3)];
+	r4 = heap32[(fp+4)];
+	r5 = heap32[(fp+5)];
+	r6 = heap32[(fp+6)];
+	r3 = r3 >> 2;
+	r2 = r2 >> 2;
+	f0 = heapFloat[(r3)];
+	f1 = heapFloat[(r2)];
+	f2 = heapFloat[(r3+1)];
+	f3 = heapFloat[(r2+1)];
+	f0 = f0-f1;
+	r7 = r0 >> 2;
+	f1 = f2-f3;
+	f2 = heapFloat[(r3+2)];
+	f3 = heapFloat[(r2+2)];
+	r8 = heap32[(r7+34)];
+	f2 = f2-f3;
+	f3 = f0*f0;
+	f4 = f1*f1;
+	f3 = f3+f4;
+	f4 = f2*f2;
+	f3 = f3+f4;
+	heapFloat[(g0)] = f3;
+	sqrtf(i7);
+	f4 =                         1;
+	f3 = f4/f_g0;
+	f5 = heapFloat[(r3)];
+	f6 = heapFloat[(r2)];
+	f7 = heapFloat[(r3+1)];
+	f8 = heapFloat[(r2+1)];
+	f0 = f0*f3;
+	f9 = f5-f6;
+	f1 = f1*f3;
+	f10 = f7-f8;
+	f11 = heapFloat[(r3+2)];
+	f12 = heapFloat[(r2+2)];
+	f2 = f2*f3;
+	f3 = f11-f12;
+	f9 = f0*f9;
+	f10 = f1*f10;
+	f9 = f9+f10;
+	f3 = f2*f3;
+	f3 = f9+f3;
+	f9 =                         0;
+	if(f0 !=f9) //_LBB155_4
+{
+	f0 = f4/f0;
+}
+else{
+	f0 =        999999984306749440;
+}
+	if(f1 !=f9) //_LBB155_7
+{
+	f1 = f4/f1;
+}
+else{
+	f1 =        999999984306749440;
+}
+	if(f2 !=f9) //_LBB155_10
+{
+	f2 = f4/f2;
+}
+else{
+	f2 =        999999984306749440;
+}
+	r9 = heapU8[r0+60];
+	if(r9 !=0) //_LBB155_13
+{
+	r4 = r4 >> 2;
+	r5 = r5 >> 2;
+	r9 = f0 < f9;
+	r10 = f1 < f9;
+	r11 = f2 < f9;
+	f4 = heapFloat[(r2+3)];
+	f10 = heapFloat[(r3+3)];
+	f13 = f5 < f6 ? f5 : f6;
+	f14 = heapFloat[(r4)];
+	f15 = f7 < f8 ? f7 : f8;
+	f16 = heapFloat[(r4+1)];
+	f17 = f11 < f12 ? f11 : f12;
+	f18 = heapFloat[(r4+2)];
+	f5 = f6 < f5 ? f5 : f6;
+	f6 = heapFloat[(r5)];
+	f7 = f8 < f7 ? f7 : f8;
+	f8 = heapFloat[(r5+1)];
+	f11 = f12 < f11 ? f11 : f12;
+	f12 = heapFloat[(r5+2)];
+	r3 = r9 & 1;
+	r9 = r10 & 1;
+	r10 = r11 & 1;
+	f19 = f10 < f4 ? f10 : f4;
+	f4 = f4 < f10 ? f10 : f4;
+	f10 = f13+f14;
+	f13 = f15+f16;
+	f14 = f17+f18;
+	f5 = f5+f6;
+	f6 = f7+f8;
+	f7 = f11+f12;
+	r11 = sp + -16;
+	r12 = r11 >> 2;
+	heapFloat[(fp+-4)] = f10;
+	heapFloat[(r12+1)] = f13;
+	heapFloat[(r12+2)] = f14;
+	heapFloat[(r12+3)] = f19;
+	f8 = heapFloat[(r7+1)];
+	if(f10 <f8) //_LBB155_15
+{
+	heapFloat[(fp+-4)] = f8;
+	f10 = f8;
+}
+	f8 = heapFloat[(r7+2)];
+	if(f13 <f8) //_LBB155_18
+{
+	heapFloat[(r12+1)] = f8;
+	f13 = f8;
+}
+	f8 = heapFloat[(r7+3)];
+	if(f14 <f8) //_LBB155_21
+{
+	heapFloat[(r12+2)] = f8;
+	f14 = f8;
+}
+	f8 = heapFloat[(r7+4)];
+	if(f19 <f8) //_LBB155_24
+{
+	heapFloat[(r12+3)] = f8;
+	f19 = f8;
+}
+	f8 = heapFloat[(r7+5)];
+if(!(f8 >=f10)) //_LBB155_27
+{
+	heapFloat[(fp+-4)] = f8;
+}
+	f8 = heapFloat[(r7+6)];
+if(!(f8 >=f13)) //_LBB155_29
+{
+	heapFloat[(r12+1)] = f8;
+}
+	f8 = heapFloat[(r7+7)];
+if(!(f8 >=f14)) //_LBB155_31
+{
+	heapFloat[(r12+2)] = f8;
+}
+	f8 = heapFloat[(r7+8)];
+if(!(f8 >=f19)) //_LBB155_33
+{
+	heapFloat[(r12+3)] = f8;
+}
+	r12 = sp + -38;
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r12;
+	heap32[(g0+2)] = r11;
+	heap32[(g0+3)] = 0;
+	_ZNK14btQuantizedBvh8quantizeEPtRK9btVector3i(i7);
+	r11 = heapU8[r0+60];
+	if(r11 !=0) //_LBB155_35
+{
+	r11 = sp + -32;
+	r12 = r11 >> 2;
+	heapFloat[(fp+-8)] = f5;
+	heapFloat[(r12+1)] = f6;
+	heapFloat[(r12+2)] = f7;
+	heapFloat[(r12+3)] = f4;
+	f8 = heapFloat[(r7+1)];
+	if(f5 <f8) //_LBB155_37
+{
+	heapFloat[(fp+-8)] = f8;
+	f5 = f8;
+}
+	f8 = heapFloat[(r7+2)];
+	if(f6 <f8) //_LBB155_40
+{
+	heapFloat[(r12+1)] = f8;
+	f6 = f8;
+}
+	f8 = heapFloat[(r7+3)];
+	if(f7 <f8) //_LBB155_43
+{
+	heapFloat[(r12+2)] = f8;
+	f7 = f8;
+}
+	f8 = heapFloat[(r7+4)];
+	if(f4 <f8) //_LBB155_46
+{
+	heapFloat[(r12+3)] = f8;
+	f4 = f8;
+}
+	f8 = heapFloat[(r7+5)];
+if(!(f8 >=f5)) //_LBB155_49
+{
+	heapFloat[(fp+-8)] = f8;
+}
+	f5 = heapFloat[(r7+6)];
+if(!(f5 >=f6)) //_LBB155_51
+{
+	heapFloat[(r12+1)] = f5;
+}
+	f5 = heapFloat[(r7+7)];
+if(!(f5 >=f7)) //_LBB155_53
+{
+	heapFloat[(r12+2)] = f5;
+}
+	f5 = heapFloat[(r7+8)];
+if(!(f5 >=f4)) //_LBB155_55
+{
+	heapFloat[(r12+3)] = f5;
+}
+	r12 = sp + -44;
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r12;
+	heap32[(g0+2)] = r11;
+	heap32[(g0+3)] = 1;
+	r0 = r3 ^ 1;
+	r11 = r9 ^ 1;
+	r12 = r10 ^ 1;
+	r13 = 0;
+	_ZNK14btQuantizedBvh8quantizeEPtRK9btVector3i(i7);
+	r14 = r13;
+_66: while(true){
+	if(r13 <r6) //_LBB155_56
+{
+	if(r14 <r6) //_LBB155_58
+{
+	r15 = r8 >> 2;
+	r16 = heap32[(r15+3)];
+	r14 = (r14 + 1)|0;
+	r16 = r16 >>> 31;
+	r17 = heapU16[(sp+-38)>>1];
+	r18 = heapU16[(r8+6)>>1];
+	if(uint(r17) >uint(r18)) //_LBB155_64
+{
+__label__ = 55;
+}
+else{
+	r17 = heapU16[(r8)>>1];
+	r18 = heapU16[(sp+-44)>>1];
+	r18 = r18 & 65535;
+	r17 = r17 & 65535;
+	if(uint(r18) <uint(r17)) //_LBB155_64
+{
+__label__ = 55;
+}
+else{
+	r18 = heapU16[(sp+-34)>>1];
+	r19 = heapU16[(r8+10)>>1];
+	r18 = r18 & 65535;
+	r19 = r19 & 65535;
+	if(uint(r18) >uint(r19)) //_LBB155_64
+{
+__label__ = 55;
+}
+else{
+	r18 = heapU16[(r8+4)>>1];
+	r19 = heapU16[(sp+-40)>>1];
+	r19 = r19 & 65535;
+	r18 = r18 & 65535;
+	if(uint(r19) <uint(r18)) //_LBB155_64
+{
+__label__ = 55;
+}
+else{
+	r19 = heapU16[(sp+-36)>>1];
+	r20 = heapU16[(r8+8)>>1];
+	r19 = r19 & 65535;
+	r20 = r20 & 65535;
+	if(uint(r19) >uint(r20)) //_LBB155_64
+{
+__label__ = 55;
+}
+else{
+	r19 = heapU16[(r8+2)>>1];
+	r20 = heapU16[(sp+-42)>>1];
+	r20 = r20 & 65535;
+	r19 = r19 & 65535;
+	if(uint(r20) >=uint(r19)) //_LBB155_65
+{
+	f4 = uint(r17); //fuitos r17, f4
+	f5 = heapFloat[(r7+9)];
+	f6 = uint(r19); //fuitos r19, f6
+	f7 = heapFloat[(r7+10)];
+	f4 = f4/f5;
+	f8 = heapFloat[(r7+1)];
+	f10 = heapFloat[(r7+11)];
+	f11 = heapFloat[(r7+2)];
+	f12 = heapFloat[(r7+3)];
+	r17 = sp + -80;
+	f13 = uint(r18); //fuitos r18, f13
+	f6 = f6/f7;
+	f4 = f4+f8;
+	f13 = f13/f10;
+	r18 = r17 >> 2;
+	f6 = f6+f11;
+	heapFloat[(fp+-20)] = f4;
+	f13 = f13+f12;
+	heapFloat[(r18+1)] = f6;
+	heapFloat[(r18+2)] = f13;
+	heap32[(r18+3)] = 0;
+	r19 = heapU16[(r8+10)>>1];
+	r20 = heapU16[(r8+8)>>1];
+	r21 = heapU16[(r8+6)>>1];
+	heap32[(r18+7)] = 0;
+	f14 = heapFloat[(r5)];
+	f4 = f4-f14;
+	heapFloat[(fp+-20)] = f4;
+	f4 = heapFloat[(r5+1)];
+	f4 = f6-f4;
+	heapFloat[(r18+1)] = f4;
+	f4 = heapFloat[(r5+2)];
+	f6 = uint(r21); //fuitos r21, f6
+	f4 = f13-f4;
+	f5 = f6/f5;
+	heapFloat[(r18+2)] = f4;
+	f4 = f5+f8;
+	f5 = heapFloat[(r4)];
+	f6 = uint(r20); //fuitos r20, f6
+	f4 = f4-f5;
+	f5 = f6/f7;
+	heapFloat[(r18+4)] = f4;
+	f4 = f5+f11;
+	f5 = heapFloat[(r4+1)];
+	f6 = uint(r19); //fuitos r19, f6
+	f4 = f4-f5;
+	f5 = f6/f10;
+	heapFloat[(r18+5)] = f4;
+	r19 = r3 << 4;
+	r20 = r11 << 4;
+	f4 = f5+f12;
+	f5 = heapFloat[(r4+2)];
+	r19 = (r17 + r19)|0;
+	r20 = (r17 + r20)|0;
+	f4 = f4-f5;
+	r19 = r19 >> 2;
+	heapFloat[(r18+6)] = f4;
+	r18 = r20 >> 2;
+	f4 = heapFloat[(r19)];
+	f5 = heapFloat[(r2)];
+	f6 = heapFloat[(r18+1)];
+	f7 = heapFloat[(r2+1)];
+	f4 = f4-f5;
+	f6 = f6-f7;
+	f4 = f4*f0;
+	f6 = f6*f1;
+	if(f4 >f6) //_LBB155_64
+{
+__label__ = 55;
+}
+else{
+	r18 = r0 << 4;
+	r19 = r9 << 4;
+	r18 = (r17 + r18)|0;
+	r19 = (r17 + r19)|0;
+	r18 = r18 >> 2;
+	r19 = r19 >> 2;
+	f8 = heapFloat[(r18)];
+	f10 = heapFloat[(r19+1)];
+	f5 = f8-f5;
+	f7 = f10-f7;
+	f5 = f5*f0;
+	f7 = f7*f1;
+	if(f7 >f5) //_LBB155_64
+{
+__label__ = 55;
+}
+else{
+	r18 = r12 << 4;
+	r18 = (r17 + r18)|0;
+	r18 = r18 >> 2;
+	f8 = heapFloat[(r18+2)];
+	f10 = heapFloat[(r2+2)];
+	f8 = f8-f10;
+	f4 = f4 < f7 ? f7 : f4;
+	f7 = f8*f2;
+	if(f4 >f7) //_LBB155_64
+{
+__label__ = 55;
+}
+else{
+	r18 = r10 << 4;
+	r17 = (r17 + r18)|0;
+	r17 = r17 >> 2;
+	f8 = heapFloat[(r17+2)];
+	f8 = f8-f10;
+	f5 = f6 < f5 ? f6 : f5;
+	f6 = f8*f2;
+	if(f6 >f5) //_LBB155_64
+{
+__label__ = 55;
+}
+else{
+	f4 = f4 < f6 ? f6 : f4;
+	f5 = f7 < f5 ? f7 : f5;
+	r17 = f4 >= f3;
+	r18 = f5 <= f9;
+	r17 = r17 | r18;
+	r18 = r17 & 1;
+	r17 = r18 ^ 1;
+	if(r16 != 0) //_LBB155_71
+{
+__label__ = 65;
+}
+else{
+	if(r18 ==0) //_LBB155_72
+{
+	r18 = heap32[(r15+3)];
+	if(r18 >-1) //_LBB155_74
+{
+	r19 = r1 >> 2;
+	r19 = heap32[(r19)];
+	r19 = r19 >> 2;
+	r19 = heap32[(r19+2)];
+	r20 = r18 >> 21;
+	r18 = r18 & 2097151;
+	heap32[(g0)] = r1;
+	heap32[(g0+1)] = r20;
+	heap32[(g0+2)] = r18;
+	__FUNCTION_TABLE__[(r19)>>2](i7);
+__label__ = 65;
+}
+else{
+__label__ = 63;
+break _66;
+}
+}
+else{
+__label__ = 65;
+}
+}
+}
+}
+}
+}
+}
+else{
+__label__ = 55;
+}
+}
+}
+}
+}
+}
+if (__label__ == 55){
+	r17 = 0;
+}
+if(!(r17 !=0)) //_LBB155_77
+{
+	if(r16 != 0) //_LBB155_78
+{
+	r15 = heap32[(r15+3)];
+	if(r15 <0) //_LBB155_80
+{
+	r16 = r15 << 4;
+	r8 = (r8 - r16)|0;
+	r13 = (r13 - r15)|0;
+continue _66;
+}
+else{
+__label__ = 69;
+break _66;
+}
+}
+}
+	r8 = (r8 + 16)|0;
+	r13 = (r13 + 1)|0;
+}
+else{
+__label__ = 48;
+break _66;
+}
+}
+else{
+__label__ = 72;
+break _66;
+}
+}
+switch(__label__ ){//multiple entries
+case 72:
+	r0 = maxIterations;
+	r0 = r0 >> 2;
+	r1 = heap32[(r0)];
+if(!(r1 >=r14)) //_LBB155_84
+{
+	heap32[(r0)] = r14;
+}
+	return;
+break;
+case 69:
+	r0 = _2E_str941;
+	r1 = _2E_str313;
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r1;
+	heap32[(g0+2)] = 75;
+	_assert(i7);
+break;
+case 63:
+	r0 = _2E_str739;
+	r1 = _2E_str313;
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r1;
+	heap32[(g0+2)] = 80;
+	_assert(i7);
+break;
+case 48:
+	r0 = _2E_str1143;
+	r1 = _2E_str537;
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r1;
+	heap32[(g0+2)] = 606;
+	_assert(i7);
+break;
+}
+}
+}
+	r0 = _2E_str212;
+	r1 = _2E_str313;
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r1;
+	heap32[(g0+2)] = 420;
+	_assert(i7);
+}
+else{
+	r0 = _2E_str212;
+	r1 = _2E_str537;
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r1;
+	heap32[(g0+2)] = 543;
+	_assert(i7);
+}
+}
+
+function _ZNK14btQuantizedBvh27walkStacklessTreeAgainstRayEP21btNodeOverlapCallbackRK9btVector3S4_S4_S4_ii(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+	var r6;
+	var r7;
+	var r8;
+	var r9;
+	var r10;
+	var r11;
+	var r12;
+	var r13;
+	var r14;
+	var r15;
+	var r16;
+	var r17;
+	var r18;
+	var r19;
+	var f0;
+	var f1;
+	var f2;
+	var f3;
+	var f4;
+	var f5;
+	var f6;
+	var f7;
+	var f8;
+	var f9;
+	var f10;
+	var f11;
+	var f12;
+	var f13;
+	var f14;
+	var f15;
+	var f16;
+	var f17;
+	var f18;
+	var f19;
+	var f20;
+	var f21;
+var __label__ = 0;
+	i7 = sp + -48;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = heapU8[r0+60];
+	if(r1 ==0) //_LBB156_2
+{
+	r1 = heap32[(fp+1)];
+	r2 = heap32[(fp+2)];
+	r3 = heap32[(fp+3)];
+	r4 = heap32[(fp+4)];
+	r5 = heap32[(fp+5)];
+	r3 = r3 >> 2;
+	r2 = r2 >> 2;
+	f0 = heapFloat[(r2)];
+	f1 = heapFloat[(r3)];
+	f2 = heapFloat[(r3+1)];
+	f3 = heapFloat[(r2+1)];
+	r4 = r4 >> 2;
+	r5 = r5 >> 2;
+	f4 = f1-f0;
+	r0 = r0 >> 2;
+	f5 = f2-f3;
+	f6 = heapFloat[(r3+2)];
+	f7 = heapFloat[(r2+2)];
+	r6 = heap32[(r0+24)];
+	f8 = f6-f7;
+	f9 = f4*f4;
+	f10 = f5*f5;
+	f11 = heapFloat[(r4)];
+	f12 = heapFloat[(r4+1)];
+	f13 = heapFloat[(r4+2)];
+	f14 = heapFloat[(r5)];
+	f15 = heapFloat[(r5+1)];
+	f16 = heapFloat[(r5+2)];
+	f9 = f9+f10;
+	f10 = f8*f8;
+	f9 = f9+f10;
+	heapFloat[(g0)] = f9;
+	sqrtf(i7);
+	f10 =                         1;
+	f9 = f10/f_g0;
+	f17 = heapFloat[(r3)];
+	f18 = heapFloat[(r2)];
+	f19 = heapFloat[(r3+1)];
+	f20 = heapFloat[(r2+1)];
+	f4 = f4*f9;
+	f17 = f17-f18;
+	f5 = f5*f9;
+	f18 = f19-f20;
+	f19 = heapFloat[(r3+2)];
+	f20 = heapFloat[(r2+2)];
+	f8 = f8*f9;
+	f9 = f19-f20;
+	f17 = f4*f17;
+	f18 = f5*f18;
+	f19 = f1 < f0 ? f1 : f0;
+	f20 = f2 < f3 ? f2 : f3;
+	f21 = f6 < f7 ? f6 : f7;
+	f0 = f0 < f1 ? f1 : f0;
+	f1 = f3 < f2 ? f2 : f3;
+	f2 = f7 < f6 ? f6 : f7;
+	f3 = f17+f18;
+	f6 = f8*f9;
+	f7 = f19+f11;
+	f9 = f20+f12;
+	f11 = f21+f13;
+	f0 = f0+f14;
+	f1 = f1+f15;
+	f2 = f2+f16;
+	f3 = f3+f6;
+	f6 =                         0;
+	if(f4 !=f6) //_LBB156_4
+{
+	f4 = f10/f4;
+}
+else{
+	f4 =        999999984306749440;
+}
+	if(f5 !=f6) //_LBB156_7
+{
+	f5 = f10/f5;
+}
+else{
+	f5 =        999999984306749440;
+}
+	if(f8 !=f6) //_LBB156_10
+{
+	f8 = f10/f8;
+}
+else{
+	f8 =        999999984306749440;
+}
+	r3 = f4 < f6;
+	r7 = f5 < f6;
+	r8 = f8 < f6;
+	r3 = r3 & 1;
+	r7 = r7 & 1;
+	r8 = r8 & 1;
+	r9 = r3 ^ 1;
+	r10 = r7 ^ 1;
+	r11 = r8 ^ 1;
+	r12 = 0;
+	r13 = r12;
+_15: while(true){
+	r14 = heap32[(r0+14)];
+	if(r14 >r12) //_LBB156_12
+{
+	if(r14 >r13) //_LBB156_14
+{
+	r14 = r6 >> 2;
+	f10 = heapFloat[(r14)];
+	r15 = sp + -32;
+	heapFloat[(fp+-8)] = f10;
+	r16 = r15 >> 2;
+	f12 = heapFloat[(r14+1)];
+	heapFloat[(r16+1)] = f12;
+	f13 = heapFloat[(r14+2)];
+	heapFloat[(r16+2)] = f13;
+	heap32[(r16+3)] = heap32[(r14+3)];
+	f14 = heapFloat[(r14+4)];
+	heapFloat[(r16+4)] = f14;
+	f15 = heapFloat[(r14+5)];
+	heapFloat[(r16+5)] = f15;
+	f16 = heapFloat[(r14+6)];
+	heapFloat[(r16+6)] = f16;
+	heap32[(r16+7)] = heap32[(r14+7)];
+	f17 = heapFloat[(r5)];
+	f10 = f10-f17;
+	heapFloat[(fp+-8)] = f10;
+	f10 = heapFloat[(r5+1)];
+	f10 = f12-f10;
+	heapFloat[(r16+1)] = f10;
+	f10 = heapFloat[(r5+2)];
+	f10 = f13-f10;
+	heapFloat[(r16+2)] = f10;
+	f10 = heapFloat[(r4)];
+	f10 = f14-f10;
+	heapFloat[(r16+4)] = f10;
+	f10 = heapFloat[(r4+1)];
+	f10 = f15-f10;
+	heapFloat[(r16+5)] = f10;
+	f10 = heapFloat[(r4+2)];
+	r13 = (r13 + 1)|0;
+	f10 = f16-f10;
+	heapFloat[(r16+6)] = f10;
+	f10 = heapFloat[(r14+4)];
+	if(f7 >f10) //_LBB156_17
+{
+__label__ = 17;
+}
+else{
+	f10 = heapFloat[(r14)];
+	if(f0 <f10) //_LBB156_17
+{
+__label__ = 17;
+}
+else{
+	r16 = 1;
+__label__ = 18;
+}
+}
+if (__label__ == 17){
+	r16 = 0;
+}
+	f10 = heapFloat[(r14+6)];
+	if(f11 >f10) //_LBB156_21
+{
+__label__ = 20;
+}
+else{
+	f10 = heapFloat[(r14+2)];
+	if(f2 <f10) //_LBB156_21
+{
+__label__ = 20;
+}
+else{
+__label__ = 21;
+}
+}
+if (__label__ == 20){
+	r16 = 0;
+}
+	f10 = heapFloat[(r14+5)];
+	if(f9 >f10) //_LBB156_32
+{
+__label__ = 30;
+}
+else{
+	f10 = heapFloat[(r14+1)];
+	if(f1 <f10) //_LBB156_32
+{
+__label__ = 30;
+}
+else{
+	r16 = r16 & 255;
+	if(r16 ==0) //_LBB156_32
+{
+__label__ = 30;
+}
+else{
+	r16 = r3 << 4;
+	r17 = r10 << 4;
+	r16 = (r15 + r16)|0;
+	r17 = (r15 + r17)|0;
+	r16 = r16 >> 2;
+	r17 = r17 >> 2;
+	f10 = heapFloat[(r16)];
+	f12 = heapFloat[(r2)];
+	f13 = heapFloat[(r17+1)];
+	f14 = heapFloat[(r2+1)];
+	f10 = f10-f12;
+	f13 = f13-f14;
+	f10 = f10*f4;
+	f13 = f13*f5;
+	if(f10 >f13) //_LBB156_32
+{
+__label__ = 30;
+}
+else{
+	r16 = r9 << 4;
+	r17 = r7 << 4;
+	r16 = (r15 + r16)|0;
+	r17 = (r15 + r17)|0;
+	r16 = r16 >> 2;
+	r17 = r17 >> 2;
+	f15 = heapFloat[(r16)];
+	f16 = heapFloat[(r17+1)];
+	f12 = f15-f12;
+	f14 = f16-f14;
+	f12 = f12*f4;
+	f14 = f14*f5;
+	if(f14 >f12) //_LBB156_32
+{
+__label__ = 30;
+}
+else{
+	r16 = r11 << 4;
+	r16 = (r15 + r16)|0;
+	r16 = r16 >> 2;
+	f15 = heapFloat[(r16+2)];
+	f16 = heapFloat[(r2+2)];
+	f15 = f15-f16;
+	f10 = f10 < f14 ? f14 : f10;
+	f14 = f15*f8;
+	if(f10 >f14) //_LBB156_32
+{
+__label__ = 30;
+}
+else{
+	r16 = r8 << 4;
+	r15 = (r15 + r16)|0;
+	r15 = r15 >> 2;
+	f15 = heapFloat[(r15+2)];
+	f15 = f15-f16;
+	f12 = f13 < f12 ? f13 : f12;
+	f13 = f15*f8;
+	if(f13 >f12) //_LBB156_32
+{
+__label__ = 30;
+}
+else{
+	f10 = f10 < f13 ? f13 : f10;
+	f12 = f14 < f12 ? f14 : f12;
+	r15 = f10 >= f3;
+	r16 = f12 <= f6;
+	r15 = r15 | r16;
+	r16 = r15 & 1;
+	r17 = heap32[(r14+8)];
+	r18 = -1;
+	r16 = r16 ^ 1;
+	r19 = r17 == r18;
+	if(r15 != 0) //_LBB156_31
+{
+__label__ = 32;
+}
+else{
+	r15 = r17 != r18;
+	r15 = r15 & 1;
+	if(r15 ==0) //_LBB156_33
+{
+	r15 = r1 >> 2;
+	r15 = heap32[(r15)];
+	r15 = r15 >> 2;
+	r15 = heap32[(r15+2)];
+	r17 = heap32[(r14+10)];
+	r18 = heap32[(r14+9)];
+	heap32[(g0)] = r1;
+	heap32[(g0+1)] = r18;
+	heap32[(g0+2)] = r17;
+	__FUNCTION_TABLE__[(r15)>>2](i7);
+__label__ = 32;
+}
+else{
+__label__ = 32;
+}
+}
+}
+}
+}
+}
+}
+}
+}
+if (__label__ == 30){
+	r16 = heap32[(r14+8)];
+	r19 = -1;
+	r19 = r16 == r19;
+	r16 = 0;
+}
+if(!(r16 !=0)) //_LBB156_36
+{
+	r15 = r19 & 1;
+	if(r15 ==0) //_LBB156_37
+{
+	r14 = heap32[(r14+8)];
+	r15 = r14 << 6;
+	r6 = (r6 + r15)|0;
+	r12 = (r14 + r12)|0;
+continue _15;
+}
+}
+	r6 = (r6 + 64)|0;
+	r12 = (r12 + 1)|0;
+}
+else{
+__label__ = 13;
+break _15;
+}
+}
+else{
+__label__ = 37;
+break _15;
+}
+}
+switch(__label__ ){//multiple entries
+case 37:
+	r0 = maxIterations;
+	r0 = r0 >> 2;
+	r1 = heap32[(r0)];
+if(!(r1 >=r13)) //_LBB156_41
+{
+	heap32[(r0)] = r13;
+}
+	return;
+break;
+case 13:
+	r0 = _2E_str1921;
+	r1 = _2E_str537;
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r1;
+	heap32[(g0+2)] = 490;
+	_assert(i7);
+break;
+}
+}
+else{
+	r0 = _2E_str1844;
+	r1 = _2E_str537;
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r1;
+	heap32[(g0+2)] = 451;
+	_assert(i7);
+}
+}
+
+function _ZN30btActivatingCollisionAlgorithmD0Ev(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+var __label__ = 0;
+	i7 = sp + -8;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = _ZTV30btActivatingCollisionAlgorithm;
+	r2 = r0 >> 2;
+	r1 = (r1 + 8)|0;
+	heap32[(r2)] = r1;
+	heap32[(g0)] = r0;
+	_ZdlPv(i7);
+	return;
+}
+
+function _ZN30btActivatingCollisionAlgorithmD1Ev(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+var __label__ = 0;
+	i7 = sp + 0;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = _ZTV30btActivatingCollisionAlgorithm;
+	r0 = r0 >> 2;
+	r1 = (r1 + 8)|0;
+	heap32[(r0)] = r1;
+	return;
+}
+
+function _ZN26btBoxBoxCollisionAlgorithm21calculateTimeOfImpactEP17btCollisionObjectS1_RK16btDispatcherInfoP16btManifoldResult(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var f0;
+var __label__ = 0;
+	i7 = sp + 0;var g0 = i7>>2; // save stack
+	f0 =                         1;
+	f_g0 = f0;
+	return;
+}
+
+function _ZN26btBoxBoxCollisionAlgorithm22getAllContactManifoldsER20btAlignedObjectArrayIP20btPersistentManifoldE(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+	var r6;
+	var r7;
+	var r8;
+	var r9;
+	var r10;
+	var r11;
+var __label__ = 0;
+	i7 = sp + -8;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = r0 >> 2;
+	r2 = heap32[(r1+3)];
+if(!(r2 ==0)) //_LBB160_23
+{
+	r0 = heapU8[r0+8];
+if(!(r0 ==0)) //_LBB160_23
+{
+	r0 = heap32[(fp+1)];
+	r3 = r0 >> 2;
+	r4 = heap32[(r3+2)];
+	r5 = heap32[(r3+1)];
+	if(r4 ==r5) //_LBB160_4
+{
+	r6 = 1;
+	r7 = r5 << 1;
+	r7 = r5 == 0 ? r6 : r7;
+if(!(r4 >=r7)) //_LBB160_3
+{
+	if(r7 !=0) //_LBB160_7
+{
+	r2 = gNumAlignedAllocs;
+	r2 = r2 >> 2;
+	r4 = heap32[(r2)];
+	r8 = r7 << 2;
+	r4 = (r4 + 1)|0;
+	r8 = r8 | 3;
+	heap32[(r2)] = r4;
+	r2 = (r8 + 16)|0;
+	heap32[(g0)] = r2;
+	malloc(i7);
+	r2 = r_g0;
+	if(r2 !=0) //_LBB160_9
+{
+	r4 = 0;
+	r8 = (r2 + 4)|0;
+	r4 = (r4 - r8)|0;
+	r4 = r4 & 15;
+	r4 = (r2 + r4)|0;
+	r8 = (r4 + 4)|0;
+	r4 = r4 >> 2;
+	heap32[(r4)] = r2;
+	r2 = r8;
+}
+}
+else{
+	r2 = 0;
+}
+	r4 = (r0 + 12)|0;
+	if(r5 <1) //_LBB160_12
+{
+	r8 = r4 >> 2;
+	r9 = heap32[(r8)];
+}
+else{
+	r8 = 0;
+_15: while(true){
+	r9 = r4 >> 2;
+	r9 = heap32[(r9)];
+	r10 = r8 << 2;
+	r11 = (r9 + r10)|0;
+	r11 = r11 >> 2;
+	r10 = (r2 + r10)|0;
+	r11 = heap32[(r11)];
+	r8 = (r8 + 1)|0;
+	r10 = r10 >> 2;
+	heap32[(r10)] = r11;
+if(!(r5 !=r8)) //_LBB160_13
+{
+break _15;
+}
+}
+	r4 = (r0 + 12)|0;
+}
+	if(r9 !=0) //_LBB160_17
+{
+	r8 = heapU8[r0+16];
+	if(r8 !=0) //_LBB160_19
+{
+	r5 = gNumAlignedFree;
+	r5 = r5 >> 2;
+	r8 = heap32[(r5)];
+	r8 = (r8 + 1)|0;
+	r9 = r9 >> 2;
+	heap32[(r5)] = r8;
+	r5 = heap32[(r9+-1)];
+	heap32[(g0)] = r5;
+	free(i7);
+	r5 = heap32[(r3+1)];
+}
+	r8 = r4 >> 2;
+	heap32[(r8)] = 0;
+}
+	r4 = r4 >> 2;
+	heap8[r0+16] = r6;
+	heap32[(r4)] = r2;
+	heap32[(r3+2)] = r7;
+	r2 = heap32[(r1+3)];
+}
+}
+	r0 = r5 << 2;
+	r1 = heap32[(r3+3)];
+	r0 = (r1 + r0)|0;
+	r0 = r0 >> 2;
+	heap32[(r0)] = r2;
+	r0 = heap32[(r3+1)];
+	r0 = (r0 + 1)|0;
+	heap32[(r3+1)] = r0;
+}
+}
+	return;
+}
+
+function _ZN26btBoxBoxCollisionAlgorithm16processCollisionEP17btCollisionObjectS1_RK16btDispatcherInfoP16btManifoldResult(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+	var r6;
+	var r7;
+	var r8;
+	var r9;
+	var r10;
+var __label__ = 0;
+	i7 = sp + -176;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = r0 >> 2;
+	r1 = heap32[(r1+3)];
+if(!(r1 ==0)) //_LBB161_8
+{
+	r2 = heap32[(fp+1)];
+	r3 = heap32[(fp+2)];
+	r4 = heap32[(fp+3)];
+	r5 = heap32[(fp+4)];
+	r3 = r3 >> 2;
+	r2 = r2 >> 2;
+	r6 = heap32[(r3+48)];
+	r7 = heap32[(r2+48)];
+	r8 = sp + -136;
+	r9 = r5 >> 2;
+	r10 = r8 >> 2;
+	heap32[(r9+1)] = r1;
+	heap32[(r10+33)] = 0;
+	heap32[(r10+32)] = 1566444395;
+	heap32[(fp+-34)] = heap32[(r2+1)];
+	heap32[(r10+1)] = heap32[(r2+2)];
+	heap32[(r10+2)] = heap32[(r2+3)];
+	heap32[(r10+3)] = heap32[(r2+4)];
+	heap32[(r10+4)] = heap32[(r2+5)];
+	heap32[(r10+5)] = heap32[(r2+6)];
+	heap32[(r10+6)] = heap32[(r2+7)];
+	heap32[(r10+7)] = heap32[(r2+8)];
+	heap32[(r10+8)] = heap32[(r2+9)];
+	heap32[(r10+9)] = heap32[(r2+10)];
+	heap32[(r10+10)] = heap32[(r2+11)];
+	heap32[(r10+11)] = heap32[(r2+12)];
+	heap32[(r10+12)] = heap32[(r2+13)];
+	heap32[(r10+13)] = heap32[(r2+14)];
+	heap32[(r10+14)] = heap32[(r2+15)];
+	heap32[(r10+15)] = heap32[(r2+16)];
+	heap32[(r10+16)] = heap32[(r3+1)];
+	heap32[(r10+17)] = heap32[(r3+2)];
+	heap32[(r10+18)] = heap32[(r3+3)];
+	heap32[(r10+19)] = heap32[(r3+4)];
+	heap32[(r10+20)] = heap32[(r3+5)];
+	heap32[(r10+21)] = heap32[(r3+6)];
+	heap32[(r10+22)] = heap32[(r3+7)];
+	heap32[(r10+23)] = heap32[(r3+8)];
+	heap32[(r10+24)] = heap32[(r3+9)];
+	heap32[(r10+25)] = heap32[(r3+10)];
+	heap32[(r10+26)] = heap32[(r3+11)];
+	heap32[(r10+27)] = heap32[(r3+12)];
+	heap32[(r10+28)] = heap32[(r3+13)];
+	heap32[(r10+29)] = heap32[(r3+14)];
+	r1 = _ZTV16btBoxBoxDetector;
+	heap32[(r10+30)] = heap32[(r3+15)];
+	r2 = sp + -152;
+	r1 = (r1 + 8)|0;
+	heap32[(r10+31)] = heap32[(r3+16)];
+	r3 = r2 >> 2;
+	heap32[(fp+-38)] = r1;
+	heap32[(r3+1)] = r7;
+	r1 = r4 >> 2;
+	heap32[(r3+2)] = r6;
+	r1 = heap32[(r1+5)];
+	heap32[(g0)] = r2;
+	heap32[(g0+1)] = r8;
+	heap32[(g0+2)] = r5;
+	heap32[(g0+3)] = r1;
+	heap32[(g0+4)] = 0;
+	_ZN16btBoxBoxDetector16getClosestPointsERKN36btDiscreteCollisionDetectorInterface17ClosestPointInputERNS0_6ResultEP12btIDebugDrawb(i7);
+	r0 = heapU8[r0+8];
+if(!(r0 ==0)) //_LBB161_8
+{
+	r0 = heap32[(r9+1)];
+	if(r0 !=0) //_LBB161_4
+{
+	r1 = r0 >> 2;
+	r2 = heap32[(r1+279)];
+if(!(r2 ==0)) //_LBB161_8
+{
+	r1 = heap32[(r1+277)];
+	r2 = heap32[(r9+34)];
+	if(r1 ==r2) //_LBB161_7
+{
+	r1 = (r5 + 8)|0;
+	r2 = (r5 + 72)|0;
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r1;
+	heap32[(g0+2)] = r2;
+	_ZN20btPersistentManifold20refreshContactPointsERK11btTransformS2_(i7);
+}
+else{
+	r1 = (r5 + 72)|0;
+	r5 = (r5 + 8)|0;
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r1;
+	heap32[(g0+2)] = r5;
+	_ZN20btPersistentManifold20refreshContactPointsERK11btTransformS2_(i7);
+	return;
+}
+}
+}
+else{
+	r0 = _2E_str59;
+	r5 = _2E_str160;
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r5;
+	heap32[(g0+2)] = 101;
+	_assert(i7);
+}
+}
+}
+	return;
+}
+
+function _ZN26btBoxBoxCollisionAlgorithmD0Ev(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+var __label__ = 0;
+	i7 = sp + -8;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = _ZTV26btBoxBoxCollisionAlgorithm;
+	r2 = r0 >> 2;
+	r1 = (r1 + 8)|0;
+	heap32[(r2)] = r1;
+	r1 = heapU8[r0+8];
+if(!(r1 ==0)) //_LBB162_3
+{
+	r1 = heap32[(r2+3)];
+if(!(r1 ==0)) //_LBB162_3
+{
+	r3 = heap32[(r2+1)];
+	r4 = r3 >> 2;
+	r4 = heap32[(r4)];
+	r4 = r4 >> 2;
+	r4 = heap32[(r4+4)];
+	heap32[(g0)] = r3;
+	heap32[(g0+1)] = r1;
+	__FUNCTION_TABLE__[(r4)>>2](i7);
+}
+}
+	r1 = _ZTV30btActivatingCollisionAlgorithm;
+	r1 = (r1 + 8)|0;
+	heap32[(r2)] = r1;
+	heap32[(g0)] = r0;
+	_ZdlPv(i7);
+	return;
+}
+
+function _ZN26btBoxBoxCollisionAlgorithmD1Ev(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+var __label__ = 0;
+	i7 = sp + -8;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = _ZTV26btBoxBoxCollisionAlgorithm;
+	r2 = r0 >> 2;
+	r1 = (r1 + 8)|0;
+	heap32[(r2)] = r1;
+	r0 = heapU8[r0+8];
+if(!(r0 ==0)) //_LBB163_3
+{
+	r0 = heap32[(r2+3)];
+if(!(r0 ==0)) //_LBB163_3
+{
+	r1 = heap32[(r2+1)];
+	r3 = r1 >> 2;
+	r3 = heap32[(r3)];
+	r3 = r3 >> 2;
+	r3 = heap32[(r3+4)];
+	heap32[(g0)] = r1;
+	heap32[(g0+1)] = r0;
+	__FUNCTION_TABLE__[(r3)>>2](i7);
+}
+}
+	r0 = _ZTV30btActivatingCollisionAlgorithm;
+	r0 = (r0 + 8)|0;
+	heap32[(r2)] = r0;
+	return;
+}
+
+function _ZN16btBoxBoxDetectorD1Ev(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+var __label__ = 0;
+	i7 = sp + 0;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = _ZTV16btBoxBoxDetector;
+	r0 = r0 >> 2;
+	r1 = (r1 + 8)|0;
+	heap32[(r0)] = r1;
+	return;
+}
+
+function _ZN16btBoxBoxDetectorD0Ev(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+var __label__ = 0;
+	i7 = sp + -8;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = _ZTV16btBoxBoxDetector;
+	r2 = r0 >> 2;
+	r1 = (r1 + 8)|0;
+	heap32[(r2)] = r1;
+	heap32[(g0)] = r0;
+	_ZdlPv(i7);
+	return;
+}
+
+function _ZN16btBoxBoxDetector16getClosestPointsERKN36btDiscreteCollisionDetectorInterface17ClosestPointInputERNS0_6ResultEP12btIDebugDrawb(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+	var r6;
+	var r7;
+	var r8;
+	var r9;
+	var r10;
+	var r11;
+	var r12;
+	var r13;
+	var r14;
+	var r15;
+	var r16;
+	var r17;
+	var r18;
+	var r19;
+	var r20;
+	var r21;
+	var r22;
+	var r23;
+	var r24;
+	var r25;
+	var f0;
+	var f1;
+	var f2;
+	var f3;
+	var f4;
+	var f5;
+	var f6;
+	var f7;
+	var f8;
+	var f9;
+	var f10;
+	var f11;
+	var f12;
+	var f13;
+	var f14;
+	var f15;
+	var f16;
+	var f17;
+	var f18;
+	var f19;
+	var f20;
+	var f21;
+	var f22;
+	var f23;
+	var f24;
+	var f25;
+	var f26;
+	var f27;
+	var f28;
+	var f29;
+	var f30;
+var __label__ = 0;
+	i7 = sp + -808;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp+1)];
+	r1 = r0 >> 2;
+	r2 = sp + -640;
+	heap32[(fp+-160)] = heap32[(r1)];
+	r3 = sp + -688;
+	heap32[(fp+-172)] = heap32[(r1+16)];
+	r4 = r2 >> 2;
+	r5 = r3 >> 2;
+	heap32[(r4+1)] = heap32[(r1+1)];
+	heap32[(r5+1)] = heap32[(r1+17)];
+	heap32[(r4+2)] = heap32[(r1+2)];
+	heap32[(r5+2)] = heap32[(r1+18)];
+	heap32[(r4+4)] = heap32[(r1+4)];
+	heap32[(r5+4)] = heap32[(r1+20)];
+	heap32[(r4+5)] = heap32[(r1+5)];
+	heap32[(r5+5)] = heap32[(r1+21)];
+	heap32[(r4+6)] = heap32[(r1+6)];
+	heap32[(r5+6)] = heap32[(r1+22)];
+	heap32[(r4+8)] = heap32[(r1+8)];
+	heap32[(r5+8)] = heap32[(r1+24)];
+	heap32[(r4+9)] = heap32[(r1+9)];
+	heap32[(r5+9)] = heap32[(r1+25)];
+	r6 = heap32[(fp)];
+	heap32[(r4+10)] = heap32[(r1+10)];
+	r6 = r6 >> 2;
+	heap32[(r5+10)] = heap32[(r1+26)];
+	r7 = heap32[(r6+2)];
+	r8 = r7 >> 2;
+	r9 = heap32[(r8)];
+	r9 = r9 >> 2;
+	r9 = heap32[(r9+11)];
+	f0 = heapFloat[(r8+7)];
+	f1 = heapFloat[(r8+8)];
+	f2 = heapFloat[(r8+9)];
+	heap32[(g0)] = r7;
+	__FUNCTION_TABLE__[(r9)>>2](i7);
+	f3 = f_g0;
+	r9 = heap32[(r8)];
+	r9 = r9 >> 2;
+	r9 = heap32[(r9+11)];
+	heap32[(g0)] = r7;
+	__FUNCTION_TABLE__[(r9)>>2](i7);
+	f4 = f_g0;
+	r8 = heap32[(r8)];
+	r8 = r8 >> 2;
+	r8 = heap32[(r8+11)];
+	heap32[(g0)] = r7;
+	__FUNCTION_TABLE__[(r8)>>2](i7);
+	f5 = f_g0;
+	r6 = heap32[(r6+1)];
+	r7 = r6 >> 2;
+	r8 = heap32[(r7)];
+	r8 = r8 >> 2;
+	f6 = heapFloat[(r7+8)];
+	r8 = heap32[(r8+11)];
+	f7 = heapFloat[(r7+9)];
+	f8 = heapFloat[(r7+7)];
+	heap32[(g0)] = r6;
+	__FUNCTION_TABLE__[(r8)>>2](i7);
+	f9 = f_g0;
+	r8 = heap32[(r7)];
+	r8 = r8 >> 2;
+	r8 = heap32[(r8+11)];
+	heap32[(g0)] = r6;
+	__FUNCTION_TABLE__[(r8)>>2](i7);
+	f10 = f_g0;
+	r7 = heap32[(r7)];
+	r7 = r7 >> 2;
+	r7 = heap32[(r7+11)];
+	heap32[(g0)] = r6;
+	__FUNCTION_TABLE__[(r7)>>2](i7);
+	f8 = f8+f_g0;
+	f6 = f6+f10;
+	f8 = f8+f8;
+	f10 =                       0.5;
+	heapFloat[(fp+-187)] = f10;
+	f11 = heapFloat[(r1+30)];
+	f12 = heapFloat[(r1+14)];
+	f13 = heapFloat[(r1+29)];
+	f14 = heapFloat[(r1+13)];
+	f15 = heapFloat[(r1+28)];
+	f16 = heapFloat[(r1+12)];
+	f17 = heapFloat[(fp+-160)];
+	f18 = heapFloat[(r4+4)];
+	f19 = heapFloat[(r4+8)];
+	f20 = heapFloat[(r4+1)];
+	f21 = heapFloat[(r4+5)];
+	f22 = heapFloat[(r4+9)];
+	f23 = heapFloat[(r4+2)];
+	f24 = heapFloat[(r4+6)];
+	f25 = heapFloat[(r4+10)];
+	r4 = sp + -236;
+	f7 = f7+f9;
+	f6 = f6+f6;
+	f8 = f8*f10;
+	heapFloat[(fp+-179)] = f8;
+	f0 = f0+f5;
+	f5 = f7+f7;
+	f6 = f6*f10;
+	heapFloat[(fp+-178)] = f6;
+	r6 = r4 >> 2;
+	heapFloat[(fp+-59)] = f8;
+	f1 = f1+f4;
+	f0 = f0+f0;
+	f4 = f5*f10;
+	heapFloat[(fp+-177)] = f4;
+	heapFloat[(r6+1)] = f6;
+	r7 = sp + -248;
+	heap32[(fp+-186)] = r7;
+	f2 = f2+f3;
+	f1 = f1+f1;
+	f0 = f0*f10;
+	heapFloat[(fp+-181)] = f0;
+	heapFloat[(r6+2)] = f4;
+	f2 = f2+f2;
+	f1 = f1*f10;
+	heapFloat[(fp+-182)] = f1;
+	r6 = r7 >> 2;
+	heapFloat[(fp+-62)] = f0;
+	f0 = f2*f10;
+	heapFloat[(fp+-180)] = f0;
+	heapFloat[(r6+1)] = f1;
+	heapFloat[(r6+2)] = f0;
+	f0 = f15-f16;
+	heapFloat[(fp+-183)] = f0;
+	f1 = f13-f14;
+	heapFloat[(fp+-184)] = f1;
+	f2 = heapFloat[(fp+-172)];
+	heapFloat[(fp+-194)] = f2;
+	f3 = heapFloat[(r5+4)];
+	heapFloat[(fp+-195)] = f3;
+	f4 = heapFloat[(r5+1)];
+	heapFloat[(fp+-191)] = f4;
+	f5 = heapFloat[(r5+5)];
+	heapFloat[(fp+-192)] = f5;
+	f6 = heapFloat[(r5+2)];
+	heapFloat[(fp+-188)] = f6;
+	f7 = heapFloat[(r5+6)];
+	heapFloat[(fp+-189)] = f7;
+	f8 = f11-f12;
+	heapFloat[(fp+-185)] = f8;
+	f9 = heapFloat[(r5+8)];
+	heapFloat[(fp+-196)] = f9;
+	f10 = heapFloat[(r5+9)];
+	heapFloat[(fp+-193)] = f10;
+	f11 = heapFloat[(r5+10)];
+	heapFloat[(fp+-190)] = f11;
+	f12 = f17*f2;
+	f13 = f18*f3;
+	f14 = f17*f0;
+	f15 = f18*f1;
+	f16 = f20*f0;
+	f26 = f21*f1;
+	f0 = f23*f0;
+	heapFloat[(fp+-198)] = f0;
+	f1 = f24*f1;
+	f27 = f17*f4;
+	f28 = f18*f5;
+	f17 = f17*f6;
+	f18 = f18*f7;
+	f29 = f20*f2;
+	f30 = f21*f3;
+	f0 = f20*f4;
+	heapFloat[(fp+-197)] = f0;
+	f0 = f21*f5;
+	f20 = f20*f6;
+	f21 = f21*f7;
+	f2 = f23*f2;
+	f3 = f24*f3;
+	f4 = f23*f4;
+	f5 = f24*f5;
+	f6 = f23*f6;
+	f7 = f24*f7;
+	f12 = f12+f13;
+	f13 = f19*f9;
+	f14 = f14+f15;
+	f15 = f19*f8;
+	f16 = f16+f26;
+	f23 = f22*f8;
+	f24 = heapFloat[(fp+-198)];
+	f1 = f24+f1;
+	f8 = f25*f8;
+	f24 = f27+f28;
+	f26 = f19*f10;
+	f17 = f17+f18;
+	f18 = f19*f11;
+	f19 = f29+f30;
+	f27 = f22*f9;
+	f28 = heapFloat[(fp+-197)];
+	f0 = f28+f0;
+	f28 = f22*f10;
+	f20 = f20+f21;
+	f21 = f22*f11;
+	f2 = f2+f3;
+	f3 = f25*f9;
+	f4 = f4+f5;
+	f5 = f25*f10;
+	f6 = f6+f7;
+	f7 = f25*f11;
+	f9 = f12+f13;
+	r5 = heap32[(fp+2)];
+	r6 = (r2 + 4)|0;
+	r7 = (r3 + 4)|0;
+	r8 = (r2 + 8)|0;
+	r9 = (r3 + 8)|0;
+	r10 = (r0 + 112)|0;
+	r0 = (r0 + 48)|0;
+	f10 = f14+f15;
+	f11 = f16+f23;
+	f1 = f1+f8;
+	f8 = f24+f26;
+	f12 = f17+f18;
+	f13 = f19+f27;
+	f0 = f0+f28;
+	f14 = f20+f21;
+	f2 = f2+f3;
+	f3 = f4+f5;
+	f4 = f6+f7;
+	f5 =                         0;
+	if(f9 <f5) //_LBB166_2
+{
+	f6 = -f9;
+}
+else{
+	f6 = f9;
+}
+	if(f8 <f5) //_LBB166_5
+{
+	f7 = -f8;
+}
+else{
+	f7 = f8;
+}
+	if(f12 <f5) //_LBB166_8
+{
+	f15 = -f12;
+}
+else{
+	f15 = f12;
+}
+	if(f13 <f5) //_LBB166_11
+{
+	f16 = -f13;
+}
+else{
+	f16 = f13;
+}
+	if(f0 <f5) //_LBB166_14
+{
+	f17 = -f0;
+}
+else{
+	f17 = f0;
+}
+	if(f14 <f5) //_LBB166_17
+{
+	f18 = -f14;
+}
+else{
+	f18 = f14;
+}
+	if(f2 <f5) //_LBB166_20
+{
+	f19 = -f2;
+}
+else{
+	f19 = f2;
+}
+	if(f3 <f5) //_LBB166_23
+{
+	f20 = -f3;
+}
+else{
+	f20 = f3;
+}
+	if(f4 <f5) //_LBB166_26
+{
+	f21 = -f4;
+}
+else{
+	f21 = f4;
+}
+	if(f10 <f5) //_LBB166_29
+{
+	f22 = -f10;
+}
+else{
+	f22 = f10;
+}
+	f23 = heapFloat[(fp+-181)];
+	f23 = f23*f6;
+	f24 = heapFloat[(fp+-179)];
+	f23 = f24+f23;
+	f24 = heapFloat[(fp+-182)];
+	f24 = f24*f7;
+	f23 = f23+f24;
+	f24 = heapFloat[(fp+-180)];
+	f24 = f24*f15;
+	f23 = f23+f24;
+	f22 = f22-f23;
+_41: do {
+if(!(f22 >f5)) //_LBB166_268
+{
+	f23 =  -3.4028234663852886e+038;
+	if(f22 >f23) //_LBB166_33
+{
+	f23 =                         0;
+	r11 = f10 < f23;
+	r13 = sp + -640;
+	r11 = r11 & 1;
+	r12 = 1;
+	f23 = f22;
+}
+else{
+	r11 = 0;
+	r12 = r11;
+	r13 = r11;
+}
+	if(f11 <f5) //_LBB166_36
+{
+	f22 = -f11;
+}
+else{
+	f22 = f11;
+}
+	f24 = heapFloat[(fp+-181)];
+	f24 = f24*f16;
+	f25 = heapFloat[(fp+-178)];
+	f24 = f25+f24;
+	f25 = heapFloat[(fp+-182)];
+	f25 = f25*f17;
+	f24 = f24+f25;
+	f25 = heapFloat[(fp+-180)];
+	f25 = f25*f18;
+	f24 = f24+f25;
+	f22 = f22-f24;
+if(!(f22 >f5)) //_LBB166_268
+{
+	if(f22 >f23) //_LBB166_40
+{
+	f23 =                         0;
+	r11 = f11 < f23;
+	r11 = r11 & 1;
+	r12 = 2;
+	f23 = f22;
+	r13 = r6;
+}
+	if(f1 <f5) //_LBB166_43
+{
+	f22 = -f1;
+}
+else{
+	f22 = f1;
+}
+	f24 = heapFloat[(fp+-181)];
+	f24 = f24*f19;
+	f25 = heapFloat[(fp+-177)];
+	f24 = f25+f24;
+	f25 = heapFloat[(fp+-182)];
+	f25 = f25*f20;
+	f24 = f24+f25;
+	f25 = heapFloat[(fp+-180)];
+	f25 = f25*f21;
+	f24 = f24+f25;
+	f22 = f22-f24;
+if(!(f22 >f5)) //_LBB166_268
+{
+	if(f22 >f23) //_LBB166_47
+{
+	f23 =                         0;
+	r11 = f1 < f23;
+	r11 = r11 & 1;
+	r12 = 3;
+	f23 = f22;
+	r13 = r8;
+}
+	f24 = heapFloat[(fp+-183)];
+	f22 = heapFloat[(fp+-194)];
+	f22 = f22*f24;
+	f25 = heapFloat[(fp+-184)];
+	f24 = heapFloat[(fp+-195)];
+	f24 = f24*f25;
+	f22 = f22+f24;
+	f25 = heapFloat[(fp+-185)];
+	f24 = heapFloat[(fp+-196)];
+	f24 = f24*f25;
+	f22 = f22+f24;
+	if(f22 <f5) //_LBB166_50
+{
+	f24 = -f22;
+}
+else{
+	f24 = f22;
+}
+	f25 = heapFloat[(fp+-179)];
+	f25 = f25*f6;
+	f26 = heapFloat[(fp+-178)];
+	f26 = f26*f16;
+	f25 = f25+f26;
+	f26 = heapFloat[(fp+-177)];
+	f26 = f26*f19;
+	f25 = f25+f26;
+	f26 = heapFloat[(fp+-181)];
+	f25 = f25+f26;
+	f24 = f24-f25;
+if(!(f24 >f5)) //_LBB166_268
+{
+	if(f24 >f23) //_LBB166_54
+{
+	f23 =                         0;
+	r11 = f22 < f23;
+	r13 = sp + -688;
+	r11 = r11 & 1;
+	r12 = 4;
+	f23 = f24;
+}
+	f24 = heapFloat[(fp+-183)];
+	f22 = heapFloat[(fp+-191)];
+	f22 = f22*f24;
+	f25 = heapFloat[(fp+-184)];
+	f24 = heapFloat[(fp+-192)];
+	f24 = f24*f25;
+	f22 = f22+f24;
+	f25 = heapFloat[(fp+-185)];
+	f24 = heapFloat[(fp+-193)];
+	f24 = f24*f25;
+	f22 = f22+f24;
+	if(f22 <f5) //_LBB166_57
+{
+	f24 = -f22;
+}
+else{
+	f24 = f22;
+}
+	f25 = heapFloat[(fp+-179)];
+	f25 = f25*f7;
+	f26 = heapFloat[(fp+-178)];
+	f26 = f26*f17;
+	f25 = f25+f26;
+	f26 = heapFloat[(fp+-177)];
+	f26 = f26*f20;
+	f25 = f25+f26;
+	f26 = heapFloat[(fp+-182)];
+	f25 = f25+f26;
+	f24 = f24-f25;
+if(!(f24 >f5)) //_LBB166_268
+{
+	if(f24 >f23) //_LBB166_61
+{
+	f23 =                         0;
+	r11 = f22 < f23;
+	r11 = r11 & 1;
+	r12 = 5;
+	f23 = f24;
+	r13 = r7;
+}
+	f24 = heapFloat[(fp+-183)];
+	f22 = heapFloat[(fp+-188)];
+	f22 = f22*f24;
+	f25 = heapFloat[(fp+-184)];
+	f24 = heapFloat[(fp+-189)];
+	f24 = f24*f25;
+	f22 = f22+f24;
+	f25 = heapFloat[(fp+-185)];
+	f24 = heapFloat[(fp+-190)];
+	f24 = f24*f25;
+	f22 = f22+f24;
+	if(f22 <f5) //_LBB166_64
+{
+	f24 = -f22;
+}
+else{
+	f24 = f22;
+}
+	f25 = heapFloat[(fp+-179)];
+	f25 = f25*f15;
+	f26 = heapFloat[(fp+-178)];
+	f26 = f26*f18;
+	f25 = f25+f26;
+	f26 = heapFloat[(fp+-177)];
+	f26 = f26*f21;
+	f25 = f25+f26;
+	f26 = heapFloat[(fp+-180)];
+	f25 = f25+f26;
+	f24 = f24-f25;
+if(!(f24 >f5)) //_LBB166_268
+{
+	if(f24 >f23) //_LBB166_68
+{
+	f23 =                         0;
+	r11 = f22 < f23;
+	r11 = r11 & 1;
+	r12 = 6;
+	f23 = f24;
+	r13 = r9;
+}
+	f22 = f1*f13;
+	f24 = f11*f2;
+	f25 =   9.9999997473787516e-006;
+	f22 = f22-f24;
+	f6 = f6+f25;
+	f7 = f7+f25;
+	f15 = f15+f25;
+	heapFloat[(fp+-183)] = f15;
+	f15 = f16+f25;
+	f16 = f17+f25;
+	f17 = f18+f25;
+	f18 = f19+f25;
+	heapFloat[(fp+-184)] = f18;
+	f18 = f20+f25;
+	heapFloat[(fp+-185)] = f18;
+	f18 = f21+f25;
+	if(f22 <f5) //_LBB166_71
+{
+	f19 = -f22;
+}
+else{
+	f19 = f22;
+}
+	f21 = heapFloat[(fp+-184)];
+	f20 = heapFloat[(fp+-178)];
+	f20 = f20*f21;
+	f21 = heapFloat[(fp+-177)];
+	f21 = f21*f15;
+	f20 = f20+f21;
+	f24 = heapFloat[(fp+-183)];
+	f21 = heapFloat[(fp+-182)];
+	f21 = f21*f24;
+	f20 = f20+f21;
+	f21 = heapFloat[(fp+-180)];
+	f21 = f21*f7;
+	f20 = f20+f21;
+	f19 = f19-f20;
+	f20 =   1.1920928955078125e-007;
+if(!(f19 >f20)) //_LBB166_268
+{
+	f21 = f2*f2;
+	f21 = f21+f5;
+	f24 = f13*f13;
+	heapFloat[(fp+-188)] = f24;
+	f24 = f21+f24;
+	heapFloat[(g0)] = f24;
+	sqrtf(i7);
+	f24 = f_g0;
+	if(f24 >f20) //_LBB166_75
+{
+	f25 = f19/f24;
+	f19 =        1.0499999523162842;
+	f19 = f25*f19;
+	if(f19 <=f23) //_LBB166_74
+{
+__label__ = 69;
+}
+else{
+	f19 =                         0;
+	f23 = -f2;
+	r11 = f22 < f19;
+	f19 = f19/f24;
+	f22 = f23/f24;
+	f24 = f13/f24;
+	r11 = r11 & 1;
+	r12 = 7;
+	r13 = 0;
+	f23 = f25;
+__label__ = 72;
+}
+}
+else{
+__label__ = 69;
+}
+if (__label__ == 69){
+	f19 = f5;
+	f22 = f5;
+	f24 = f5;
+}
+	f25 = f1*f0;
+	f26 = f11*f3;
+	f25 = f25-f26;
+	if(f25 <f5) //_LBB166_79
+{
+	f5 = -f25;
+}
+else{
+	f5 = f25;
+}
+	f27 = heapFloat[(fp+-185)];
+	f26 = heapFloat[(fp+-178)];
+	f26 = f26*f27;
+	f27 = heapFloat[(fp+-177)];
+	f27 = f27*f16;
+	f26 = f26+f27;
+	f28 = heapFloat[(fp+-183)];
+	f27 = heapFloat[(fp+-181)];
+	f27 = f27*f28;
+	f26 = f26+f27;
+	f27 = heapFloat[(fp+-180)];
+	f27 = f27*f6;
+	f26 = f26+f27;
+	f5 = f5-f26;
+if(!(f5 >f20)) //_LBB166_268
+{
+	f26 = f3*f3;
+	f27 =                         0;
+	f26 = f26+f27;
+	f28 = f0*f0;
+	heapFloat[(fp+-189)] = f28;
+	f28 = f26+f28;
+	heapFloat[(g0)] = f28;
+	sqrtf(i7);
+	f28 = f_g0;
+	if(f28 >f20) //_LBB166_83
+{
+	f5 = f5/f28;
+	f29 =        1.0499999523162842;
+	f29 = f5*f29;
+if(!(f29 <=f23)) //_LBB166_82
+{
+	f19 =                         0;
+	f22 = -f3;
+	r11 = f25 < f19;
+	f19 = f19/f28;
+	f22 = f22/f28;
+	f24 = f0/f28;
+	r11 = r11 & 1;
+	r12 = 8;
+	r13 = 0;
+	f23 = f5;
+}
+}
+	f5 = f1*f14;
+	f25 = f11*f4;
+	f5 = f5-f25;
+	if(f5 <f27) //_LBB166_87
+{
+	f25 = -f5;
+}
+else{
+	f25 = f5;
+}
+	f28 = heapFloat[(fp+-178)];
+	f28 = f28*f18;
+	f29 = heapFloat[(fp+-177)];
+	f29 = f29*f17;
+	f28 = f28+f29;
+	f29 = heapFloat[(fp+-181)];
+	f29 = f29*f7;
+	f28 = f28+f29;
+	f29 = heapFloat[(fp+-182)];
+	f29 = f29*f6;
+	f28 = f28+f29;
+	f25 = f25-f28;
+if(!(f25 >f20)) //_LBB166_268
+{
+	f28 = f4*f4;
+	f28 = f28+f27;
+	f29 = f14*f14;
+	heapFloat[(fp+-190)] = f29;
+	f29 = f28+f29;
+	heapFloat[(g0)] = f29;
+	sqrtf(i7);
+	f29 = f_g0;
+	if(f29 >f20) //_LBB166_91
+{
+	f25 = f25/f29;
+	f30 =        1.0499999523162842;
+	f30 = f25*f30;
+if(!(f30 <=f23)) //_LBB166_90
+{
+	f19 =                         0;
+	f22 = -f4;
+	r11 = f5 < f19;
+	f19 = f19/f29;
+	f22 = f22/f29;
+	f24 = f14/f29;
+	r11 = r11 & 1;
+	r12 = 9;
+	r13 = 0;
+	f23 = f25;
+}
+}
+	f5 = f10*f2;
+	f25 = f1*f9;
+	f5 = f5-f25;
+	if(f5 <f27) //_LBB166_95
+{
+	f25 = -f5;
+}
+else{
+	f25 = f5;
+}
+	f30 = heapFloat[(fp+-184)];
+	f29 = heapFloat[(fp+-179)];
+	f29 = f29*f30;
+	f30 = heapFloat[(fp+-177)];
+	f30 = f30*f6;
+	f29 = f29+f30;
+	f30 = heapFloat[(fp+-182)];
+	f30 = f30*f17;
+	f29 = f29+f30;
+	f30 = heapFloat[(fp+-180)];
+	f30 = f30*f16;
+	f29 = f29+f30;
+	f25 = f25-f29;
+if(!(f25 >f20)) //_LBB166_268
+{
+	f29 = f9*f9;
+	f21 = f21+f29;
+	heapFloat[(g0)] = f21;
+	sqrtf(i7);
+	f21 = f_g0;
+	if(f21 >f20) //_LBB166_99
+{
+	f25 = f25/f21;
+	f30 =        1.0499999523162842;
+	f30 = f25*f30;
+if(!(f30 <=f23)) //_LBB166_98
+{
+	f22 =                         0;
+	f23 = -f9;
+	r11 = f5 < f22;
+	f19 = f2/f21;
+	f22 = f22/f21;
+	f24 = f23/f21;
+	r11 = r11 & 1;
+	r12 = 10;
+	r13 = 0;
+	f23 = f25;
+}
+}
+	f2 = f10*f3;
+	f5 = f1*f8;
+	f2 = f2-f5;
+	if(f2 <f27) //_LBB166_103
+{
+	f5 = -f2;
+}
+else{
+	f5 = f2;
+}
+	f25 = heapFloat[(fp+-185)];
+	f21 = heapFloat[(fp+-179)];
+	f21 = f21*f25;
+	f25 = heapFloat[(fp+-177)];
+	f25 = f25*f7;
+	f21 = f21+f25;
+	f25 = heapFloat[(fp+-181)];
+	f25 = f25*f17;
+	f21 = f21+f25;
+	f25 = heapFloat[(fp+-180)];
+	f25 = f25*f15;
+	f21 = f21+f25;
+	f5 = f5-f21;
+if(!(f5 >f20)) //_LBB166_268
+{
+	f21 = f8*f8;
+	f25 = f26+f21;
+	heapFloat[(g0)] = f25;
+	sqrtf(i7);
+	f25 = f_g0;
+	if(f25 >f20) //_LBB166_107
+{
+	f5 = f5/f25;
+	f26 =        1.0499999523162842;
+	f26 = f5*f26;
+if(!(f26 <=f23)) //_LBB166_106
+{
+	f22 =                         0;
+	f23 = -f8;
+	r11 = f2 < f22;
+	f19 = f3/f25;
+	f22 = f22/f25;
+	f24 = f23/f25;
+	r11 = r11 & 1;
+	r12 = 11;
+	r13 = 0;
+	f23 = f5;
+}
+}
+	f2 = f10*f4;
+	f1 = f1*f12;
+	f1 = f2-f1;
+	if(f1 <f27) //_LBB166_111
+{
+	f2 = -f1;
+}
+else{
+	f2 = f1;
+}
+	f3 = heapFloat[(fp+-179)];
+	f3 = f3*f18;
+	f25 = heapFloat[(fp+-183)];
+	f5 = heapFloat[(fp+-177)];
+	f5 = f5*f25;
+	f3 = f3+f5;
+	f5 = heapFloat[(fp+-181)];
+	f5 = f5*f16;
+	f3 = f3+f5;
+	f5 = heapFloat[(fp+-182)];
+	f5 = f5*f15;
+	f3 = f3+f5;
+	f2 = f2-f3;
+if(!(f2 >f20)) //_LBB166_268
+{
+	f3 = f12*f12;
+	f5 = f28+f3;
+	heapFloat[(g0)] = f5;
+	sqrtf(i7);
+	f5 = f_g0;
+	if(f5 >f20) //_LBB166_115
+{
+	f2 = f2/f5;
+	f25 =        1.0499999523162842;
+	f25 = f2*f25;
+if(!(f25 <=f23)) //_LBB166_114
+{
+	f22 =                         0;
+	f23 = -f12;
+	r11 = f1 < f22;
+	f19 = f4/f5;
+	f22 = f22/f5;
+	f24 = f23/f5;
+	r11 = r11 & 1;
+	r12 = 12;
+	r13 = 0;
+	f23 = f2;
+}
+}
+	f1 = f11*f9;
+	f2 = f10*f13;
+	f1 = f1-f2;
+	if(f1 <f27) //_LBB166_119
+{
+	f2 = -f1;
+}
+else{
+	f2 = f1;
+}
+	f4 = heapFloat[(fp+-179)];
+	f4 = f4*f15;
+	f5 = heapFloat[(fp+-178)];
+	f5 = f5*f6;
+	f4 = f4+f5;
+	f5 = heapFloat[(fp+-182)];
+	f5 = f5*f18;
+	f4 = f4+f5;
+	f6 = heapFloat[(fp+-185)];
+	f5 = heapFloat[(fp+-180)];
+	f5 = f5*f6;
+	f4 = f4+f5;
+	f2 = f2-f4;
+if(!(f2 >f20)) //_LBB166_268
+{
+	f4 = heapFloat[(fp+-188)];
+	f4 = f4+f29;
+	f4 = f4+f27;
+	heapFloat[(g0)] = f4;
+	sqrtf(i7);
+	f4 = f_g0;
+	if(f4 >f20) //_LBB166_123
+{
+	f2 = f2/f4;
+	f5 =        1.0499999523162842;
+	f5 = f2*f5;
+if(!(f5 <=f23)) //_LBB166_122
+{
+	f23 =                         0;
+	f19 = -f13;
+	r11 = f1 < f23;
+	f19 = f19/f4;
+	f22 = f9/f4;
+	f24 = f23/f4;
+	r11 = r11 & 1;
+	r12 = 13;
+	r13 = 0;
+	f23 = f2;
+}
+}
+	f1 = f11*f8;
+	f2 = f10*f0;
+	f1 = f1-f2;
+	if(f1 <f27) //_LBB166_127
+{
+	f2 = -f1;
+}
+else{
+	f2 = f1;
+}
+	f4 = heapFloat[(fp+-179)];
+	f4 = f4*f16;
+	f5 = heapFloat[(fp+-178)];
+	f5 = f5*f7;
+	f4 = f4+f5;
+	f5 = heapFloat[(fp+-181)];
+	f5 = f5*f18;
+	f4 = f4+f5;
+	f6 = heapFloat[(fp+-184)];
+	f5 = heapFloat[(fp+-180)];
+	f5 = f5*f6;
+	f4 = f4+f5;
+	f2 = f2-f4;
+if(!(f2 >f20)) //_LBB166_268
+{
+	f4 = heapFloat[(fp+-189)];
+	f4 = f4+f21;
+	f4 = f4+f27;
+	heapFloat[(g0)] = f4;
+	sqrtf(i7);
+	f4 = f_g0;
+	if(f4 >f20) //_LBB166_131
+{
+	f2 = f2/f4;
+	f5 =        1.0499999523162842;
+	f5 = f2*f5;
+if(!(f5 <=f23)) //_LBB166_130
+{
+	f23 =                         0;
+	f19 = -f0;
+	r11 = f1 < f23;
+	f19 = f19/f4;
+	f22 = f8/f4;
+	f24 = f23/f4;
+	r11 = r11 & 1;
+	r12 = 14;
+	r13 = 0;
+	f23 = f2;
+}
+}
+	f0 = f11*f12;
+	f1 = f10*f14;
+	f0 = f0-f1;
+	if(f0 <f27) //_LBB166_135
+{
+	f1 = -f0;
+}
+else{
+	f1 = f0;
+}
+	f2 = heapFloat[(fp+-179)];
+	f2 = f2*f17;
+	f5 = heapFloat[(fp+-183)];
+	f4 = heapFloat[(fp+-178)];
+	f4 = f4*f5;
+	f2 = f2+f4;
+	f5 = heapFloat[(fp+-185)];
+	f4 = heapFloat[(fp+-181)];
+	f4 = f4*f5;
+	f2 = f2+f4;
+	f5 = heapFloat[(fp+-184)];
+	f4 = heapFloat[(fp+-182)];
+	f4 = f4*f5;
+	f2 = f2+f4;
+	f1 = f1-f2;
+if(!(f1 >f20)) //_LBB166_268
+{
+	f2 = heapFloat[(fp+-190)];
+	f2 = f2+f3;
+	f2 = f2+f27;
+	heapFloat[(g0)] = f2;
+	sqrtf(i7);
+	f2 = f_g0;
+	if(f2 <=f20) //_LBB166_140
+{
+__label__ = 128;
+}
+else{
+	f1 = f1/f2;
+	heapFloat[(fp+-183)] = f1;
+	f3 =        1.0499999523162842;
+	f1 = f1*f3;
+	if(f1 <=f23) //_LBB166_140
+{
+__label__ = 128;
+}
+else{
+	f23 =                         0;
+	f19 = -f14;
+	r11 = f0 < f23;
+	f19 = f19/f2;
+	f22 = f12/f2;
+	f24 = f23/f2;
+	r11 = r11 & 1;
+	r13 = sp + -704;
+	r12 = 15;
+__label__ = 132;
+}
+}
+if (__label__ == 128){
+	if(r12 ==0) //_LBB166_268
+{
+break _41;
+}
+else{
+	if(r13 !=0) //_LBB166_143
+{
+	r13 = r13 >> 2;
+	f0 = heapFloat[(r13)];
+	r6 = sp + -704;
+	heapFloat[(fp+-176)] = f0;
+	f1 = heapFloat[(r13+4)];
+	r6 = r6 >> 2;
+	heapFloat[(r6+1)] = f1;
+	f19 = heapFloat[(r13+8)];
+	heapFloat[(r6+2)] = f19;
+	heapFloat[(fp+-183)] = f23;
+__label__ = 133;
+}
+else{
+	r13 = sp + -704;
+	heapFloat[(fp+-183)] = f23;
+__label__ = 132;
+}
+}
+}
+if (__label__ == 132){
+	r6 = sp + -640;
+	r6 = r6 >> 2;
+	f0 = heapFloat[(fp+-160)];
+	f1 = heapFloat[(r6+1)];
+	f2 = heapFloat[(r6+2)];
+	f0 = f0*f19;
+	f1 = f1*f22;
+	f0 = f0+f1;
+	f1 = f2*f24;
+	f0 = f0+f1;
+	r7 = r13 >> 2;
+	heapFloat[(r7)] = f0;
+	f1 = heapFloat[(r6+4)];
+	f2 = heapFloat[(r6+5)];
+	f3 = heapFloat[(r6+6)];
+	f1 = f1*f19;
+	f2 = f2*f22;
+	r7 = sp + -704;
+	f1 = f1+f2;
+	f2 = f3*f24;
+	f1 = f1+f2;
+	r7 = r7 >> 2;
+	heapFloat[(r7+1)] = f1;
+	f2 = heapFloat[(r6+8)];
+	f3 = heapFloat[(r6+9)];
+	f4 = heapFloat[(r6+10)];
+	f19 = f2*f19;
+	f2 = f3*f22;
+	f19 = f19+f2;
+	f2 = f4*f24;
+	f19 = f19+f2;
+	heapFloat[(r7+2)] = f19;
+}
+	if(r11 !=0) //_LBB166_147
+{
+	f0 = -f0;
+	r6 = sp + -704;
+	f1 = -f1;
+	r6 = r6 >> 2;
+	heapFloat[(fp+-176)] = f0;
+	f19 = -f19;
+	heapFloat[(r6+1)] = f1;
+	heapFloat[(r6+2)] = f19;
+}
+	if(r12 <7) //_LBB166_153
+{
+	if(r12 >3) //_LBB166_155
+{
+	f0 = -f0;
+	f1 = -f1;
+	f19 = -f19;
+	r1 = r0;
+	r0 = r10;
+}
+else{
+	r3 = sp + -640;
+	r2 = sp + -688;
+	r4 = sp + -236;
+	heap32[(fp+-186)] = r4;
+	r4 = sp + -248;
+	r1 = r10;
+}
+	r6 = r2 >> 2;
+	f2 = heapFloat[(r6)];
+	f3 = heapFloat[(r6+4)];
+	f4 = heapFloat[(r6+8)];
+	f2 = f2*f0;
+	f3 = f3*f1;
+	f2 = f2+f3;
+	f3 = f4*f19;
+	f2 = f2+f3;
+	heapFloat[(fp+-66)] = f2;
+	f3 = heapFloat[(r6+1)];
+	f4 = heapFloat[(r6+5)];
+	f5 = heapFloat[(r6+9)];
+	f3 = f3*f0;
+	f4 = f4*f1;
+	r7 = sp + -264;
+	f3 = f3+f4;
+	f4 = f5*f19;
+	f3 = f3+f4;
+	r8 = r7 >> 2;
+	heapFloat[(r8+1)] = f3;
+	f4 = heapFloat[(r6+2)];
+	f5 = heapFloat[(r6+6)];
+	f6 = heapFloat[(r6+10)];
+	f4 = f4*f0;
+	f5 = f5*f1;
+	f4 = f4+f5;
+	f5 = f6*f19;
+	f4 = f4+f5;
+	heapFloat[(r8+2)] = f4;
+	if(f2 <f27) //_LBB166_158
+{
+	f2 = -f2;
+}
+	if(f3 <f27) //_LBB166_161
+{
+	f3 = -f3;
+}
+	if(f4 <f27) //_LBB166_164
+{
+	f4 = -f4;
+}
+	if(f3 <=f2) //_LBB166_169
+{
+	if(f2 <=f4) //_LBB166_171
+{
+	r6 = 2;
+	r8 = 0;
+	r9 = 1;
+}
+else{
+	r6 = 0;
+	r8 = 1;
+	r9 = 2;
+}
+}
+else{
+	if(f3 <=f4) //_LBB166_168
+{
+	r6 = 2;
+	r8 = 0;
+	r9 = 1;
+}
+else{
+	r6 = 1;
+	r8 = 0;
+	r9 = 2;
+}
+}
+	r10 = r6 << 2;
+	r11 = (r4 + r10)|0;
+	r13 = (r2 + r10)|0;
+	r1 = r1 >> 2;
+	r0 = r0 >> 2;
+	r11 = r11 >> 2;
+	r13 = r13 >> 2;
+	f2 = heapFloat[(r11)];
+	f3 = heapFloat[(r13)];
+	f4 = heapFloat[(r1)];
+	f5 = heapFloat[(r0)];
+	r7 = (r7 + r10)|0;
+	f4 = f4-f5;
+	f3 = f2*f3;
+	r7 = r7 >> 2;
+	f5 = heapFloat[(r7)];
+	if(f5 <f27) //_LBB166_174
+{
+	r7 = r6 | 4;
+	r6 = r6 | 8;
+	r7 = r7 << 2;
+	r6 = r6 << 2;
+	r7 = (r2 + r7)|0;
+	r6 = (r2 + r6)|0;
+	r7 = r7 >> 2;
+	r6 = r6 >> 2;
+	f5 = heapFloat[(r1+1)];
+	f6 = heapFloat[(r0+1)];
+	f7 = heapFloat[(r7)];
+	f8 = heapFloat[(r6)];
+	f9 = heapFloat[(r1+2)];
+	f10 = heapFloat[(r0+2)];
+	f5 = f5-f6;
+	f6 = f2*f7;
+	f7 = f9-f10;
+	f2 = f2*f8;
+	f3 = f4+f3;
+	f4 = f5+f6;
+	f2 = f7+f2;
+}
+else{
+	r7 = r6 | 4;
+	r6 = r6 | 8;
+	r7 = r7 << 2;
+	r6 = r6 << 2;
+	r7 = (r2 + r7)|0;
+	r6 = (r2 + r6)|0;
+	r7 = r7 >> 2;
+	r6 = r6 >> 2;
+	f5 = heapFloat[(r1+1)];
+	f6 = heapFloat[(r0+1)];
+	f7 = heapFloat[(r7)];
+	f8 = heapFloat[(r6)];
+	f9 = heapFloat[(r1+2)];
+	f10 = heapFloat[(r0+2)];
+	f5 = f5-f6;
+	f6 = f2*f7;
+	f7 = f9-f10;
+	f2 = f2*f8;
+	f3 = f4-f3;
+	f4 = f5-f6;
+	f2 = f7-f2;
+}
+	r1 = -1;
+	r6 = -4;
+	r6 = r12 < 4 ? r1 : r6;
+	r6 = (r6 + r12)|0;
+	if(r6 ==1) //_LBB166_178
+{
+	r7 = 0;
+	r10 = 2;
+}
+else{
+	if(r6 !=0) //_LBB166_179
+{
+	r7 = 0;
+	r10 = 1;
+}
+else{
+	r7 = 1;
+	r10 = 2;
+}
+}
+	r11 = r8 | 4;
+	r13 = r7 | 4;
+	r14 = r8 | 8;
+	r15 = r9 | 4;
+	r16 = r7 | 8;
+	r17 = r10 | 4;
+	r7 = r7 << 2;
+	r13 = r13 << 2;
+	r11 = r11 << 2;
+	r8 = r8 << 2;
+	r18 = r9 | 8;
+	r19 = (r3 + r7)|0;
+	r13 = (r3 + r13)|0;
+	r16 = r16 << 2;
+	r20 = r10 << 2;
+	r17 = r17 << 2;
+	r10 = r10 | 8;
+	r21 = (r2 + r8)|0;
+	r11 = (r2 + r11)|0;
+	r14 = r14 << 2;
+	r15 = r15 << 2;
+	r9 = r9 << 2;
+	r19 = r19 >> 2;
+	r13 = r13 >> 2;
+	r16 = (r3 + r16)|0;
+	r22 = (r3 + r20)|0;
+	r17 = (r3 + r17)|0;
+	r10 = r10 << 2;
+	r21 = r21 >> 2;
+	heap32[(fp+-178)] = r21;
+	r11 = r11 >> 2;
+	heap32[(fp+-177)] = r11;
+	r14 = (r2 + r14)|0;
+	r23 = (r2 + r9)|0;
+	r15 = (r2 + r15)|0;
+	r18 = r18 << 2;
+	r16 = r16 >> 2;
+	r22 = r22 >> 2;
+	r17 = r17 >> 2;
+	r3 = (r3 + r10)|0;
+	r10 = r14 >> 2;
+	heap32[(fp+-179)] = r10;
+	r14 = r23 >> 2;
+	heap32[(fp+-180)] = r14;
+	r15 = r15 >> 2;
+	r2 = (r2 + r18)|0;
+	f5 = heapFloat[(r19)];
+	f6 = heapFloat[(r21)];
+	f7 = heapFloat[(r13)];
+	f8 = heapFloat[(r11)];
+	f9 = heapFloat[(r22)];
+	f10 = heapFloat[(r14)];
+	f11 = heapFloat[(r17)];
+	f12 = heapFloat[(r15)];
+	r3 = r3 >> 2;
+	r2 = r2 >> 2;
+	r8 = (r4 + r8)|0;
+	f13 = f5*f6;
+	f14 = f7*f8;
+	f15 = heapFloat[(r16)];
+	f16 = heapFloat[(r10)];
+	f17 = heapFloat[(r3)];
+	f18 = heapFloat[(r2)];
+	r3 = r8 >> 2;
+	r4 = (r4 + r9)|0;
+	f6 = f9*f6;
+	f8 = f11*f8;
+	f21 = f3*f5;
+	f22 = f4*f7;
+	f13 = f13+f14;
+	f14 = f15*f16;
+	f5 = f5*f10;
+	f7 = f7*f12;
+	f13 = f13+f14;
+	f14 = heapFloat[(r3)];
+	r3 = r4 >> 2;
+	f23 = f3*f9;
+	f24 = f4*f11;
+	f6 = f6+f8;
+	f8 = f17*f16;
+	f9 = f9*f10;
+	f10 = f11*f12;
+	f11 = f21+f22;
+	f12 = f2*f15;
+	f5 = f5+f7;
+	f7 = f15*f18;
+	f6 = f6+f8;
+	f8 = f11+f12;
+	f11 = f14*f13;
+	f5 = f5+f7;
+	f7 = heapFloat[(r3)];
+	f12 = f23+f24;
+	f15 = f2*f17;
+	f9 = f9+f10;
+	f10 = f17*f18;
+	f9 = f9+f10;
+	f10 = f12+f15;
+	f12 = f14*f6;
+	f14 = f8-f11;
+	f15 = f7*f5;
+	r3 = sp + -296;
+	f16 = f10-f12;
+	f7 = f7*f9;
+	f17 = f14-f15;
+	r4 = r3 >> 2;
+	f18 = f16-f7;
+	heapFloat[(fp+-74)] = f17;
+	f14 = f14+f15;
+	heapFloat[(r4+1)] = f18;
+	f11 = f8+f11;
+	f16 = f16+f7;
+	heapFloat[(r4+2)] = f14;
+	f12 = f10+f12;
+	f14 = f11+f15;
+	heapFloat[(r4+3)] = f16;
+	f16 = f12+f7;
+	heapFloat[(r4+4)] = f14;
+	f11 = f11-f15;
+	heapFloat[(r4+5)] = f16;
+	r8 = heap32[(fp+-186)];
+	r7 = (r8 + r7)|0;
+	f7 = f12-f7;
+	heapFloat[(r4+6)] = f11;
+	r9 = sp + -304;
+	r8 = (r8 + r20)|0;
+	r7 = r7 >> 2;
+	heapFloat[(r4+7)] = f7;
+	r4 = sp + -368;
+	r10 = 0;
+	r11 = 4;
+	r13 = r9 >> 2;
+	r8 = r8 >> 2;
+	heap32[(fp+-76)] = heap32[(r7)];
+	heap32[(r13+1)] = heap32[(r8)];
+	r7 = r10;
+_217: while(true){
+	if(r7 <2) //_LBB166_199
+{
+	r18 = 0;
+	r17 = (r18 - r7)|0;
+	r14 = r1;
+	r8 = r4;
+_220: while(true){
+	r4 = r8;
+	if(r14 >1) //_LBB166_196
+{
+break _220;
+}
+else{
+	f7 = r14; //fitos r14, f7
+	r16 = (r3 + 8)|0;
+	r8 = r18;
+	r10 = r18;
+	r13 = r4;
+_223: while(true){
+	if(r11 >0) //_LBB166_181
+{
+	r19 = (r3 + r8)|0;
+	r20 = (r16 + r8)|0;
+	r21 = r7 << 2;
+	r22 = (r9 + r21)|0;
+	r23 = (r19 + r21)|0;
+	r22 = r22 >> 2;
+	r23 = r23 >> 2;
+	f11 = heapFloat[(r22)];
+	f12 = heapFloat[(r23)];
+	f14 = f7*f12;
+	if(f14 <f11) //_LBB166_183
+{
+	r24 = r13 >> 2;
+	r25 = r19 >> 2;
+	r10 = (r10 + 1)|0;
+	heap32[(r24)] = heap32[(r25)];
+	heap32[(r24+1)] = heap32[(r25+1)];
+	r24 = r10 & 8;
+	if(r24 ==0) //_LBB166_185
+{
+	r13 = (r13 + 8)|0;
+	f12 = heapFloat[(r23)];
+	f11 = heapFloat[(r22)];
+}
+else{
+__label__ = 179;
+break _217;
+}
+}
+	r20 = r11 > 1 ? r20 : r3;
+	r23 = (r20 + r21)|0;
+	r23 = r23 >> 2;
+	f14 = heapFloat[(r23)];
+	f15 = f7*f12;
+	f16 = f7*f14;
+	r23 = f15 < f11;
+	r24 = f16 < f11;
+	r23 = r23 ^ r24;
+	if(r23 != 0) //_LBB166_188
+{
+	r23 = r17 << 2;
+	r19 = (r19 + r23)|0;
+	r20 = (r20 + r23)|0;
+	r19 = r19 >> 2;
+	r20 = r20 >> 2;
+	f15 = heapFloat[(r19+1)];
+	f16 = heapFloat[(r20+1)];
+	f11 = f7*f11;
+	f16 = f16-f15;
+	f14 = f14-f12;
+	f14 = f16/f14;
+	f11 = f11-f12;
+	r19 = (r13 + r23)|0;
+	f11 = f14*f11;
+	r19 = r19 >> 2;
+	f11 = f15+f11;
+	heapFloat[(r19+1)] = f11;
+	r19 = (r13 + r21)|0;
+	f11 = heapFloat[(r22)];
+	r10 = (r10 + 1)|0;
+	r19 = r19 >> 2;
+	f11 = f7*f11;
+	heapFloat[(r19)] = f11;
+	r19 = r10 & 8;
+	if(r19 ==0) //_LBB166_190
+{
+	r13 = (r13 + 8)|0;
+}
+else{
+__label__ = 179;
+break _217;
+}
+}
+	r11 = (r11 + -1)|0;
+	r8 = (r8 + 8)|0;
+}
+else{
+break _223;
+}
+}
+	r3 = sp + -368;
+	r8 = sp + -128;
+	r8 = r4 == r3 ? r8 : r3;
+	r14 = (r14 + 2)|0;
+	r3 = r4;
+	r11 = r10;
+}
+}
+	r7 = (r7 + 1)|0;
+}
+else{
+__label__ = 177;
+break _217;
+}
+}
+if (__label__ == 177){
+	r4 = r3;
+}
+	r1 = sp + -368;
+if(!(r4 ==r1)) //_LBB166_202
+{
+	r3 = r10 << 3;
+	heap32[(g0)] = r1;
+	heap32[(g0+1)] = r4;
+	heap32[(g0+2)] = r3;
+	memcpy(i7);
+}
+	if(r10 <1) //_LBB166_268
+{
+break _41;
+}
+else{
+	f7 = f13*f9;
+	f11 = f5*f6;
+	f12 =                         1;
+	f7 = f7-f11;
+	r3 = r6 << 2;
+	f7 = f12/f7;
+	r4 = heap32[(fp+-186)];
+	r3 = (r4 + r3)|0;
+	f6 = f6*f7;
+	r3 = r3 >> 2;
+	f11 = f13*f7;
+	f5 = f5*f7;
+	f7 = f9*f7;
+	f6 = -f6;
+	f9 = heapFloat[(r3)];
+	r3 = heap32[(fp+-178)];
+	f13 = heapFloat[(r3)];
+	r3 = heap32[(fp+-180)];
+	f14 = heapFloat[(r3)];
+	r3 = heap32[(fp+-177)];
+	f15 = heapFloat[(r3)];
+	f16 = heapFloat[(r15)];
+	r3 = heap32[(fp+-179)];
+	f17 = heapFloat[(r3)];
+	f18 = heapFloat[(r2)];
+	r2 = (r1 + 4)|0;
+	r3 = 0;
+_243: while(true){
+	r4 = r2 >> 2;
+	f21 = heapFloat[(r4+-1)];
+	f22 = heapFloat[(r4)];
+	f23 = f21-f8;
+	f24 = f22-f10;
+	f25 = f23*f7;
+	f26 = f24*f5;
+	f25 = f25-f26;
+	f23 = f23*f6;
+	f24 = f24*f11;
+	r4 = (r3 * 3)|0;
+	f26 = f15*f25;
+	f23 = f23+f24;
+	f24 = f13*f25;
+	r6 = sp + -464;
+	r4 = r4 << 2;
+	f25 = f17*f25;
+	f26 = f4+f26;
+	f28 = f16*f23;
+	f24 = f3+f24;
+	f29 = f14*f23;
+	r4 = (r6 + r4)|0;
+	f24 = f24+f29;
+	f26 = f26+f28;
+	f25 = f2+f25;
+	f23 = f18*f23;
+	f28 = f0*f24;
+	f29 = f1*f26;
+	f23 = f25+f23;
+	r4 = r4 >> 2;
+	heapFloat[(r4)] = f24;
+	f24 = f28+f29;
+	f25 = f19*f23;
+	r7 = sp + -496;
+	r8 = r3 << 2;
+	r8 = (r7 + r8)|0;
+	heapFloat[(r4+1)] = f26;
+	f24 = f24+f25;
+	f24 = f9-f24;
+	r8 = r8 >> 2;
+	heapFloat[(r4+2)] = f23;
+	heapFloat[(r8)] = f24;
+	if(f24 >=f27) //_LBB166_206
+{
+	r4 = r3 << 3;
+	r8 = r4 | 4;
+	r4 = (r1 + r4)|0;
+	r8 = (r1 + r8)|0;
+	r4 = r4 >> 2;
+	r3 = (r3 + 1)|0;
+	r8 = r8 >> 2;
+	heapFloat[(r4)] = f21;
+	heapFloat[(r8)] = f22;
+}
+	r10 = (r10 + -1)|0;
+	r2 = (r2 + 8)|0;
+if(!(r10 !=0)) //_LBB166_204
+{
+break _243;
+}
+}
+	if(r3 <1) //_LBB166_268
+{
+break _41;
+}
+else{
+	r2 = 4;
+	r2 = r3 < 4 ? r3 : r2;
+	r4 = 1;
+	r8 = r2 < 1 ? r4 : r2;
+	if(r3 >r8) //_LBB166_215
+{
+_252: do {
+	if(r3 >1) //_LBB166_217
+{
+	f0 = heapFloat[(fp+-124)];
+	r9 = 1;
+	r7 = 0;
+_254: while(true){
+	r10 = sp + -496;
+	r11 = r9 << 2;
+	r10 = (r10 + r11)|0;
+	r10 = r10 >> 2;
+	f1 = heapFloat[(r10)];
+	r10 = (r9 + 1)|0;
+	r7 = f1 > f0 ? r9 : r7;
+	f0 = f1 > f0 ? f1 : f0;
+	r9 = r10;
+if(!(r3 !=r10)) //_LBB166_218
+{
+break _252;
+}
+}
+}
+else{
+	r7 = 0;
+}
+} while(0);
+_258: do {
+	if(r3 ==1) //_LBB166_224
+{
+	r9 = r1 >> 2;
+	f0 = heapFloat[(fp+-92)];
+	f1 = heapFloat[(r9+1)];
+__label__ = 214;
+break _258;
+}
+else{
+	if(r3 ==2) //_LBB166_225
+{
+	r9 = r1 >> 2;
+	f0 = heapFloat[(fp+-92)];
+	f1 = heapFloat[(r9+2)];
+	f2 = heapFloat[(r9+1)];
+	f12 = heapFloat[(r9+3)];
+	f0 = f0+f1;
+	f1 = f2+f12;
+	f2 = heapFloat[(fp+-187)];
+	f0 = f0*f2;
+	f1 = f1*f2;
+__label__ = 214;
+break _258;
+}
+else{
+	r9 = (r3 + -1)|0;
+_264: do {
+	if(r9 >0) //_LBB166_223
+{
+	r10 = (r1 + 8)|0;
+	f0 =                         0;
+	f1 = f0;
+	f2 = f0;
+_266: while(true){
+	r11 = r10 >> 2;
+	f3 = heapFloat[(r11+-2)];
+	f4 = heapFloat[(r11+1)];
+	f5 = heapFloat[(r11)];
+	f6 = heapFloat[(r11+-1)];
+	f7 = f3*f4;
+	f8 = f5*f6;
+	f3 = f3+f5;
+	f5 = f7-f8;
+	f4 = f6+f4;
+	f3 = f3*f5;
+	f4 = f4*f5;
+	r9 = (r9 + -1)|0;
+	f2 = f2+f5;
+	f1 = f3+f1;
+	f0 = f4+f0;
+	r10 = (r10 + 8)|0;
+if(!(r9 !=0)) //_LBB166_226
+{
+break _264;
+}
+}
+}
+else{
+	f0 = f27;
+	f1 = f27;
+	f2 = f27;
+}
+} while(0);
+	r9 = r3 << 3;
+	r9 = (r9 + r1)|0;
+	r9 = r9 >> 2;
+	r10 = r1 >> 2;
+	f3 = heapFloat[(r9+-2)];
+	f4 = heapFloat[(r10+1)];
+	f5 = heapFloat[(fp+-92)];
+	f6 = heapFloat[(r9+-1)];
+	f7 = f3*f4;
+	f8 = f5*f6;
+	f7 = f7-f8;
+	f2 = f2+f7;
+	if(f2 <f27) //_LBB166_229
+{
+	f8 = -f2;
+}
+else{
+	f8 = f2;
+}
+	if(f8 >f20) //_LBB166_232
+{
+	f8 =                         3;
+	f2 = f2*f8;
+	f2 = f12/f2;
+}
+else{
+	f2 =        999999984306749440;
+}
+	if(r3 >0) //_LBB166_235
+{
+	f3 = f3+f5;
+	f4 = f6+f4;
+	f3 = f3*f7;
+	f4 = f4*f7;
+	f1 = f3+f1;
+	f3 = f4+f0;
+	f0 = f1*f2;
+	f1 = f3*f2;
+__label__ = 214;
+}
+else{
+	r1 = 0;
+__label__ = 219;
+}
+}
+}
+} while(0);
+if (__label__ == 214){
+	r1 = (r1 + 4)|0;
+	r9 = sp + -32;
+	r10 = r3;
+_283: while(true){
+	r11 = r1 >> 2;
+	f2 = heapFloat[(r11+-1)];
+	f3 = heapFloat[(r11)];
+	f3 = f3-f1;
+	f2 = f2-f0;
+	heapFloat[(g0)] = f3;
+	heapFloat[(g0+1)] = f2;
+	r10 = (r10 + -1)|0;
+	r1 = (r1 + 8)|0;
+	r11 = (r9 + 4)|0;
+	r9 = r9 >> 2;
+	atan2f(i7);
+	heapFloat[(r9)] = f_g0;
+	r9 = r11;
+if(!(r10 !=0)) //_LBB166_237
+{
+break _283;
+}
+}
+	r1 = sp + -64;
+	r9 = r3;
+_286: while(true){
+	r9 = (r9 + -1)|0;
+	r10 = (r1 + 4)|0;
+	r1 = r1 >> 2;
+	heap32[(r1)] = 1;
+	r1 = r10;
+if(!(r9 !=0)) //_LBB166_239
+{
+break _286;
+}
+}
+	r1 = 1;
+}
+	r9 = sp + -64;
+	r10 = r7 << 2;
+	r11 = (r9 + r10)|0;
+	r11 = r11 >> 2;
+	f0 =        6.2831854820251465;
+	f1 = r8; //fitos r8, f1
+	f1 = f0/f1;
+	heap32[(r11)] = 0;
+	heap32[(fp+-144)] = r7;
+	f6 =                         0;
+_290: while(true){
+	if(r4 <r8) //_LBB166_242
+{
+	r11 = sp + -32;
+	r13 = (r11 + r10)|0;
+	r13 = r13 >> 2;
+	f2 = r4; //fitos r4, f2
+	f2 = f2*f1;
+	f3 = heapFloat[(r13)];
+	f2 = f2+f3;
+	f3 =        3.1415927410125732;
+	if(f2 >f3) //_LBB166_244
+{
+	f4 =       -6.2831854820251465;
+	f2 = f2+f4;
+}
+	r13 = sp + -576;
+	r14 = r4 << 2;
+	r13 = (r13 + r14)|0;
+	r13 = r13 >> 2;
+	r14 = r1 & 1;
+	heap32[(r13)] = r7;
+	if(r14 ==0) //_LBB166_259
+{
+__label__ = 233;
+break _290;
+}
+else{
+	f4 =                1000000000;
+	r14 = 0;
+	r15 = r7;
+_297: while(true){
+	r16 = r14 << 2;
+	r17 = (r9 + r16)|0;
+	r17 = r17 >> 2;
+	r17 = heap32[(r17)];
+	if(r17 !=0) //_LBB166_249
+{
+	r16 = (r11 + r16)|0;
+	r16 = r16 >> 2;
+	f5 = heapFloat[(r16)];
+	f5 = f5-f2;
+	if(f5 <f6) //_LBB166_251
+{
+	f5 = -f5;
+}
+	if(f5 >f3) //_LBB166_254
+{
+	f5 = f0-f5;
+}
+if(!(f5 >=f4)) //_LBB166_248
+{
+	heap32[(r13)] = r14;
+	r15 = r14;
+	f4 = f5;
+}
+}
+	r14 = (r14 + 1)|0;
+if(!(r3 !=r14)) //_LBB166_247
+{
+break _297;
+}
+}
+	if(r15 !=r7) //_LBB166_260
+{
+	r11 = r15 << 2;
+	r11 = (r9 + r11)|0;
+	r4 = (r4 + 1)|0;
+	r11 = r11 >> 2;
+	heap32[(r11)] = 0;
+}
+else{
+__label__ = 233;
+break _290;
+}
+}
+}
+else{
+__label__ = 236;
+break _290;
+}
+}
+switch(__label__ ){//multiple entries
+case 233:
+	r0 = _2E_str65;
+	r1 = _2E_str166;
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r1;
+	heap32[(g0+2)] = 248;
+	_assert(i7);
+break;
+case 236:
+	if(r8 >0) //_LBB166_267
+{
+	r1 = 0;
+_315: while(true){
+	r3 = sp + -576;
+	r4 = r1 << 2;
+	r3 = (r3 + r4)|0;
+	r3 = r3 >> 2;
+	r3 = heap32[(r3)];
+	r4 = (r3 * 3)|0;
+	r4 = r4 << 2;
+	r4 = (r6 + r4)|0;
+	r4 = r4 >> 2;
+	f0 = heapFloat[(r4)];
+	f1 = heapFloat[(r0)];
+	f0 = f0+f1;
+	heapFloat[(fp+-148)] = f0;
+	r7 = sp + -592;
+	f1 = heapFloat[(r4+1)];
+	f2 = heapFloat[(r0+1)];
+	f1 = f1+f2;
+	r8 = r7 >> 2;
+	heapFloat[(r8+1)] = f1;
+	f2 = heapFloat[(r4+2)];
+	f3 = heapFloat[(r0+2)];
+	f2 = f2+f3;
+	r4 = sp + -496;
+	r3 = r3 << 2;
+	r3 = (r4 + r3)|0;
+	r4 = r5 >> 2;
+	heapFloat[(r8+2)] = f2;
+	r4 = heap32[(r4)];
+	r3 = r3 >> 2;
+	r8 = sp + -704;
+	f3 = heapFloat[(r3)];
+	r3 = r4 >> 2;
+	r4 = r8 >> 2;
+	r3 = heap32[(r3+4)];
+	f4 = -f3;
+	f5 = heapFloat[(r4+2)];
+	if(r12 >3) //_LBB166_265
+{
+	f6 = heapFloat[(fp+-176)];
+	f7 = heapFloat[(r4+1)];
+	f8 = f6*f3;
+	r4 = sp + -160;
+	f9 = f7*f3;
+	f0 = f0-f8;
+	r7 = r4 >> 2;
+	f3 = f5*f3;
+	f1 = f1-f9;
+	heapFloat[(fp+-40)] = f0;
+	f0 = f2-f3;
+	heapFloat[(r7+1)] = f1;
+	heapFloat[(r7+2)] = f0;
+	r8 = sp + -144;
+	f0 = -f6;
+	heap32[(r7+3)] = 0;
+	r7 = r8 >> 2;
+	f1 = -f7;
+	heapFloat[(fp+-36)] = f0;
+	f0 = -f5;
+	heapFloat[(r7+1)] = f1;
+	heapFloat[(r7+2)] = f0;
+	heap32[(r7+3)] = 0;
+	heap32[(g0)] = r5;
+	heap32[(g0+1)] = r8;
+	heap32[(g0+2)] = r4;
+	heapFloat[(g0+3)] = f4;
+	__FUNCTION_TABLE__[(r3)>>2](i7);
+}
+else{
+	f0 = heapFloat[(r4+1)];
+	f1 = heapFloat[(fp+-176)];
+	r4 = sp + -176;
+	f1 = -f1;
+	r8 = r4 >> 2;
+	f0 = -f0;
+	heapFloat[(fp+-44)] = f1;
+	f1 = -f5;
+	heapFloat[(r8+1)] = f0;
+	heapFloat[(r8+2)] = f1;
+	heap32[(r8+3)] = 0;
+	heap32[(g0)] = r5;
+	heap32[(g0+1)] = r4;
+	heap32[(g0+2)] = r7;
+	heapFloat[(g0+3)] = f4;
+	__FUNCTION_TABLE__[(r3)>>2](i7);
+}
+	r1 = (r1 + 1)|0;
+	if(r1 >=r2) //_LBB166_268
+{
+break _41;
+}
+else{
+continue _315;
+}
+}
+}
+else{
+break _41;
+}
+break;
+}
+}
+else{
+	if(r12 <4) //_LBB166_212
+{
+	r1 = (r6 + 8)|0;
+	r2 = sp + -496;
+_324: while(true){
+	r4 = r1 >> 2;
+	f12 = heapFloat[(r4+-2)];
+	f20 = heapFloat[(r0)];
+	f12 = f12+f20;
+	heapFloat[(fp+-132)] = f12;
+	r6 = sp + -528;
+	f12 = heapFloat[(r4+-1)];
+	f20 = heapFloat[(r0+1)];
+	r7 = r6 >> 2;
+	f12 = f12+f20;
+	heapFloat[(r7+1)] = f12;
+	f12 = heapFloat[(r4)];
+	f20 = heapFloat[(r0+2)];
+	f12 = f12+f20;
+	heapFloat[(r7+2)] = f12;
+	r4 = r5 >> 2;
+	r4 = heap32[(r4)];
+	r7 = sp + -704;
+	r7 = r7 >> 2;
+	r4 = r4 >> 2;
+	r8 = r2 >> 2;
+	f12 = heapFloat[(r8)];
+	f20 = heapFloat[(r7+2)];
+	f27 = heapFloat[(r7+1)];
+	f0 = heapFloat[(fp+-176)];
+	r4 = heap32[(r4+4)];
+	r7 = sp + -208;
+	f0 = -f0;
+	r8 = r7 >> 2;
+	f27 = -f27;
+	heapFloat[(fp+-52)] = f0;
+	f20 = -f20;
+	heapFloat[(r8+1)] = f27;
+	heapFloat[(r8+2)] = f20;
+	heap32[(r8+3)] = 0;
+	f12 = -f12;
+	heap32[(g0)] = r5;
+	heap32[(g0+1)] = r7;
+	heap32[(g0+2)] = r6;
+	heapFloat[(g0+3)] = f12;
+	r3 = (r3 + -1)|0;
+	r2 = (r2 + 4)|0;
+	r1 = (r1 + 12)|0;
+	__FUNCTION_TABLE__[(r4)>>2](i7);
+	if(r3 ==0) //_LBB166_268
+{
+break _41;
+}
+else{
+continue _324;
+}
+}
+}
+else{
+	r1 = (r6 + 8)|0;
+_327: while(true){
+	r2 = r7 >> 2;
+	r4 = r1 >> 2;
+	f12 = heapFloat[(r2)];
+	f20 = heapFloat[(fp+-176)];
+	f27 = heapFloat[(r4+-2)];
+	f0 = heapFloat[(r0)];
+	f27 = f27+f0;
+	f0 = f20*f12;
+	r2 = sp + -704;
+	f27 = f27-f0;
+	heapFloat[(fp+-136)] = f27;
+	r2 = r2 >> 2;
+	f27 = heapFloat[(r2+1)];
+	f0 = heapFloat[(r4+-1)];
+	f1 = heapFloat[(r0+1)];
+	r6 = sp + -544;
+	f0 = f0+f1;
+	f1 = f27*f12;
+	r8 = r6 >> 2;
+	f0 = f0-f1;
+	heapFloat[(r8+1)] = f0;
+	f0 = heapFloat[(r2+2)];
+	f1 = heapFloat[(r4)];
+	f2 = heapFloat[(r0+2)];
+	f1 = f1+f2;
+	f2 = f0*f12;
+	f1 = f1-f2;
+	r2 = r5 >> 2;
+	heapFloat[(r8+2)] = f1;
+	r2 = heap32[(r2)];
+	r2 = r2 >> 2;
+	r2 = heap32[(r2+4)];
+	r4 = sp + -192;
+	f20 = -f20;
+	r8 = r4 >> 2;
+	f27 = -f27;
+	heapFloat[(fp+-48)] = f20;
+	f20 = -f0;
+	heapFloat[(r8+1)] = f27;
+	heapFloat[(r8+2)] = f20;
+	heap32[(r8+3)] = 0;
+	f12 = -f12;
+	heap32[(g0)] = r5;
+	heap32[(g0+1)] = r4;
+	heap32[(g0+2)] = r6;
+	heapFloat[(g0+3)] = f12;
+	r3 = (r3 + -1)|0;
+	r7 = (r7 + 4)|0;
+	r1 = (r1 + 12)|0;
+	__FUNCTION_TABLE__[(r2)>>2](i7);
+	if(r3 ==0) //_LBB166_268
+{
+break _41;
+}
+else{
+continue _327;
+}
+}
+}
+}
+}
+}
+}
+else{
+	r0 = sp + -688;
+	r2 = r0 >> 2;
+	f20 = heapFloat[(fp+-172)];
+	f27 = heapFloat[(r2+4)];
+	f2 = heapFloat[(r2+5)];
+	f3 = heapFloat[(r2+1)];
+	f4 = f0*f20;
+	f5 = f1*f27;
+	f6 = heapFloat[(r2+8)];
+	f7 = heapFloat[(r2+9)];
+	f8 = heapFloat[(r2+6)];
+	f9 = heapFloat[(r2+2)];
+	f4 = f4+f5;
+	f5 = f19*f6;
+	f10 = f0*f3;
+	f11 = f1*f2;
+	f12 = heapFloat[(r2+10)];
+	f4 = f4+f5;
+	f5 = f10+f11;
+	f10 = f19*f7;
+	f11 = f0*f9;
+	f13 = f1*f8;
+	f14 =                         0;
+	f15 =                        -1;
+	f16 =                         1;
+	f5 = f5+f10;
+	f4 = f4 > f14 ? f15 : f16;
+	f10 = f11+f13;
+	f11 = f19*f12;
+	f13 = heapFloat[(fp+-181)];
+	f4 = f13*f4;
+	f10 = f10+f11;
+	f5 = f5 > f14 ? f15 : f16;
+	f11 = heapFloat[(fp+-182)];
+	f5 = f11*f5;
+	r2 = sp + -640;
+	f20 = f4*f20;
+	f11 = heapFloat[(r1+28)];
+	f10 = f10 > f14 ? f15 : f16;
+	r3 = r2 >> 2;
+	f13 = heapFloat[(fp+-180)];
+	f10 = f13*f10;
+	f27 = f4*f27;
+	f13 = heapFloat[(r1+29)];
+	f20 = f11+f20;
+	f3 = f5*f3;
+	r4 = (r12 + -7)|0;
+	f11 = heapFloat[(r3+4)];
+	f17 = heapFloat[(fp+-160)];
+	f18 = heapFloat[(r3+8)];
+	f21 = heapFloat[(r3+5)];
+	f22 = heapFloat[(r3+1)];
+	f23 = heapFloat[(r3+9)];
+	f24 = heapFloat[(r3+6)];
+	f25 = heapFloat[(r3+2)];
+	f26 = heapFloat[(r3+10)];
+	f4 = f4*f6;
+	f6 = heapFloat[(r1+30)];
+	f27 = f13+f27;
+	f2 = f5*f2;
+	f20 = f20+f3;
+	f3 = f10*f9;
+	f9 = heapFloat[(r1+12)];
+	heapFloat[(fp+-182)] = f9;
+	f9 = heapFloat[(r1+13)];
+	heapFloat[(fp+-181)] = f9;
+	f9 = heapFloat[(r1+14)];
+	heapFloat[(fp+-180)] = f9;
+	r3 = (r4 / 3)|0;
+	r4 = (r4 % 3)|0;
+	r10 = sp + -512;
+	f20 = f20+f3;
+	f3 = f6+f4;
+	f4 = f5*f7;
+	f27 = f27+f2;
+	f2 = f10*f8;
+	r3 = r3 << 2;
+	r4 = r4 << 2;
+	f27 = f27+f2;
+	r12 = r10 >> 2;
+	heapFloat[(fp+-128)] = f20;
+	f2 = f3+f4;
+	f3 = f10*f12;
+	r2 = (r2 + r3)|0;
+	r0 = (r0 + r4)|0;
+	f2 = f2+f3;
+	heapFloat[(r12+1)] = f27;
+	r2 = r2 >> 2;
+	heapFloat[(r12+2)] = f2;
+	r0 = r0 >> 2;
+	f3 = heapFloat[(r2)];
+	f4 = heapFloat[(r0)];
+	f5 = heapFloat[(r2+4)];
+	f6 = heapFloat[(r0+4)];
+	f7 = heapFloat[(r2+8)];
+	f8 = heapFloat[(r0+8)];
+	f9 = f3*f4;
+	f10 = f5*f6;
+	f9 = f9+f10;
+	f10 = f7*f8;
+	f9 = f9+f10;
+	f10 = f9*f9;
+	f10 = f16-f10;
+	f12 =   9.9999997473787516e-005;
+	if(f10 >f12) //_LBB166_151
+{
+	f12 = f0*f17;
+	f13 = f1*f11;
+	f12 = f12+f13;
+	f13 = f19*f18;
+	f28 = f0*f22;
+	f29 = f1*f21;
+	f12 = f12+f13;
+	f13 = f28+f29;
+	f28 = f19*f23;
+	f29 = f0*f25;
+	f30 = f1*f24;
+	f13 = f13+f28;
+	f12 = f12 > f14 ? f16 : f15;
+	f28 = f29+f30;
+	f29 = f19*f26;
+	f30 = heapFloat[(fp+-179)];
+	f12 = f30*f12;
+	f28 = f28+f29;
+	f13 = f13 > f14 ? f16 : f15;
+	f29 = heapFloat[(fp+-178)];
+	f13 = f29*f13;
+	f17 = f12*f17;
+	f11 = f12*f11;
+	f12 = f12*f18;
+	f14 = f28 > f14 ? f16 : f15;
+	f15 = heapFloat[(fp+-177)];
+	f14 = f15*f14;
+	f15 = heapFloat[(fp+-182)];
+	f15 = f15+f17;
+	f17 = f13*f22;
+	f18 = heapFloat[(fp+-181)];
+	f11 = f18+f11;
+	f18 = f13*f21;
+	f21 = heapFloat[(fp+-180)];
+	f12 = f21+f12;
+	f13 = f13*f23;
+	f15 = f15+f17;
+	f17 = f14*f25;
+	f11 = f11+f18;
+	f18 = f14*f24;
+	f12 = f12+f13;
+	f14 = f14*f26;
+	f13 = f15+f17;
+	f11 = f11+f18;
+	f14 = f12+f14;
+	f12 = f20-f13;
+	f11 = f27-f11;
+	f14 = f2-f14;
+	f3 = f3*f12;
+	f5 = f5*f11;
+	f3 = f3+f5;
+	f5 = f7*f14;
+	f7 = f4*f12;
+	f11 = f6*f11;
+	f3 = f3+f5;
+	f5 = f7+f11;
+	f14 = f8*f14;
+	f3 = f9*f3;
+	f14 = f5+f14;
+	f14 = f3-f14;
+	f3 = f16/f10;
+	f14 = f14*f3;
+}
+	f3 = f4*f14;
+	f20 = f20+f3;
+	f3 = f6*f14;
+	f4 = f8*f14;
+	f27 = f27+f3;
+	heapFloat[(fp+-128)] = f20;
+	f20 = f2+f4;
+	heapFloat[(r12+1)] = f27;
+	r0 = r5 >> 2;
+	heapFloat[(r12+2)] = f20;
+	r0 = heap32[(r0)];
+	r0 = r0 >> 2;
+	r0 = heap32[(r0+4)];
+	r2 = sp + -224;
+	f0 = -f0;
+	r3 = r2 >> 2;
+	f1 = -f1;
+	heapFloat[(fp+-56)] = f0;
+	f0 = -f19;
+	heapFloat[(r3+1)] = f1;
+	heapFloat[(r3+2)] = f0;
+	heap32[(r3+3)] = 0;
+	heap32[(g0)] = r5;
+	heap32[(g0+1)] = r2;
+	heap32[(g0+2)] = r10;
+	f0 = heapFloat[(fp+-183)];
+	heapFloat[(g0+3)] = f0;
+	__FUNCTION_TABLE__[(r0)>>2](i7);
+	return;
+}
+}
+}
+}
+}
+}
+}
+}
+}
+}
+}
+}
+}
+}
+}
+}
+} while(0);
+	return;
+}
+
+function _ZN21btCollisionDispatcher13findAlgorithmEP17btCollisionObjectS1_P20btPersistentManifold(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+	var r6;
+var __label__ = 0;
+	i7 = sp + -24;var g0 = i7>>2; // save stack
+	r0 = sp + -8;
+	r1 = heap32[(fp)];
+	r2 = heap32[(fp+1)];
+	r3 = r0 >> 2;
+	r4 = heap32[(fp+3)];
+	heap32[(fp+-2)] = r1;
+	r5 = heap32[(fp+2)];
+	r6 = r2 >> 2;
+	heap32[(r3+1)] = r4;
+	r3 = heap32[(r6+48)];
+	r4 = r5 >> 2;
+	r3 = r3 >> 2;
+	r4 = heap32[(r4+48)];
+	r3 = heap32[(r3+1)];
+	r4 = r4 >> 2;
+	r4 = heap32[(r4+1)];
+	r3 = (r3 * 144)|0;
+	r1 = (r1 + r3)|0;
+	r3 = r4 << 2;
+	r1 = (r1 + r3)|0;
+	r1 = r1 >> 2;
+	r1 = heap32[(r1+50)];
+	r3 = r1 >> 2;
+	r3 = heap32[(r3)];
+	r3 = r3 >> 2;
+	r3 = heap32[(r3+2)];
+	heap32[(g0)] = r1;
+	heap32[(g0+1)] = r0;
+	heap32[(g0+2)] = r2;
+	heap32[(g0+3)] = r5;
+	__FUNCTION_TABLE__[(r3)>>2](i7);
+	return;
+}
+
+function _ZN21btCollisionDispatcher13needsResponseEP17btCollisionObjectS1_(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+var __label__ = 0;
+	i7 = sp + 0;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp+1)];
+	r0 = r0 >> 2;
+	r0 = heap32[(r0+51)];
+	r1 = r0 & 4;
+if(!(r1 !=0)) //_LBB168_4
+{
+	r1 = heap32[(fp+2)];
+	r1 = r1 >> 2;
+	r1 = heap32[(r1+51)];
+	r2 = r1 & 4;
+if(!(r2 !=0)) //_LBB168_4
+{
+	r0 = r0 & 3;
+	if(r0 ==0) //_LBB168_5
+{
+	r0 = 1;
+	r_g0 = r0;
+	return;
+}
+else{
+	r0 = r1 & 3;
+	r1 = 0;
+	r0 = r0 == r1;
+	r0 = r0 & 1;
+	r_g0 = r0;
+	return;
+}
+}
+}
+	r0 = 0;
+	r_g0 = r0;
+	return;
+}
+
+function _ZN23btCollisionPairCallbackD1Ev(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+var __label__ = 0;
+	i7 = sp + 0;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = _ZTV23btCollisionPairCallback;
+	r0 = r0 >> 2;
+	r1 = (r1 + 8)|0;
+	heap32[(r0)] = r1;
+	return;
+}
+
+function _ZN23btCollisionPairCallbackD0Ev(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+var __label__ = 0;
+	i7 = sp + -8;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = _ZTV23btCollisionPairCallback;
+	r2 = r0 >> 2;
+	r1 = (r1 + 8)|0;
+	heap32[(r2)] = r1;
+	heap32[(g0)] = r0;
+	_ZdlPv(i7);
+	return;
+}
+
+function _ZN23btCollisionPairCallback14processOverlapER16btBroadphasePair(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+var __label__ = 0;
+	i7 = sp + -16;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r0 = r0 >> 2;
+	r1 = heap32[(r0+2)];
+	r2 = r1 >> 2;
+	r2 = heap32[(r2+47)];
+	r0 = heap32[(r0+1)];
+	r3 = heap32[(fp+1)];
+	heap32[(g0)] = r3;
+	heap32[(g0+1)] = r1;
+	heap32[(g0+2)] = r0;
+	__FUNCTION_TABLE__[(r2)>>2](i7);
+	r0 = 0;
+	r_g0 = r0;
+	return;
+}
+
+function _ZN21btCollisionDispatcher25dispatchAllCollisionPairsEP22btOverlappingPairCacheRK16btDispatcherInfoP12btDispatcher(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+var __label__ = 0;
+	i7 = sp + -32;var g0 = i7>>2; // save stack
+	r0 = _ZTV23btCollisionPairCallback;
+	r1 = sp + -16;
+	r0 = (r0 + 8)|0;
+	r2 = r1 >> 2;
+	r3 = heap32[(fp+2)];
+	heap32[(fp+-4)] = r0;
+	r0 = heap32[(fp+1)];
+	r4 = heap32[(fp)];
+	heap32[(r2+1)] = r3;
+	r3 = r0 >> 2;
+	heap32[(r2+2)] = r4;
+	r2 = heap32[(r3)];
+	r2 = r2 >> 2;
+	r2 = heap32[(r2+12)];
+	r3 = heap32[(fp+3)];
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r1;
+	heap32[(g0+2)] = r3;
+	__FUNCTION_TABLE__[(r2)>>2](i7);
+	return;
+}
+
+function _ZNK21btCollisionDispatcher15getNumManifoldsEv(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+var __label__ = 0;
+	i7 = sp + 0;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r0 = r0 >> 2;
+	r0 = heap32[(r0+3)];
+	r_g0 = r0;
+	return;
+}
+
+function _ZN21btCollisionDispatcher26getInternalManifoldPointerEv(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+var __label__ = 0;
+	i7 = sp + 0;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r0 = r0 >> 2;
+	r0 = heap32[(r0+5)];
+	r_g0 = r0;
+	return;
+}
+
+function _ZN21btCollisionDispatcher26getManifoldByIndexInternalEi(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+var __label__ = 0;
+	i7 = sp + 0;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r0 = r0 >> 2;
+	r1 = heap32[(fp+1)];
+	r0 = heap32[(r0+5)];
+	r1 = r1 << 2;
+	r0 = (r0 + r1)|0;
+	r0 = r0 >> 2;
+	r0 = heap32[(r0)];
+	r_g0 = r0;
+	return;
+}
+
+function _ZN21btCollisionDispatcher22freeCollisionAlgorithmEPv(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+var __label__ = 0;
+	i7 = sp + -8;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp+1)];
+if(!(r0 ==0)) //_LBB176_5
+{
+	r1 = heap32[(fp)];
+	r1 = r1 >> 2;
+	r1 = heap32[(r1+48)];
+	r1 = r1 >> 2;
+	r2 = heap32[(r1+4)];
+if(!(uint(r2) >uint(r0))) //_LBB176_4
+{
+	r3 = heap32[(r1)];
+	r4 = heap32[(r1+1)];
+	r3 = (r3 * r4)|0;
+	r2 = (r2 + r3)|0;
+if(!(uint(r2) <=uint(r0))) //_LBB176_4
+{
+	r2 = r0 >> 2;
+	r3 = heap32[(r1+3)];
+	heap32[(r2)] = r3;
+	heap32[(r1+3)] = r0;
+	r0 = heap32[(r1+2)];
+	r0 = (r0 + 1)|0;
+	heap32[(r1+2)] = r0;
+	return;
+}
+}
+	r1 = gNumAlignedFree;
+	r1 = r1 >> 2;
+	r2 = heap32[(r1)];
+	r2 = (r2 + 1)|0;
+	r0 = r0 >> 2;
+	heap32[(r1)] = r2;
+	r0 = heap32[(r0+-1)];
+	heap32[(g0)] = r0;
+	free(i7);
+}
+	return;
+}
+
+function _ZN21btCollisionDispatcher15releaseManifoldEP20btPersistentManifold(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+	var r6;
+	var r7;
+	var r8;
+var __label__ = 0;
+	i7 = sp + -16;var g0 = i7>>2; // save stack
+	r0 = gNumManifold;
+	r0 = r0 >> 2;
+	r1 = heap32[(r0)];
+	r2 = heap32[(fp)];
+	r1 = (r1 + -1)|0;
+	r3 = r2 >> 2;
+	heap32[(r0)] = r1;
+	r0 = heap32[(r3)];
+	r0 = r0 >> 2;
+	r0 = heap32[(r0+5)];
+	r1 = heap32[(fp+1)];
+	heap32[(g0)] = r2;
+	heap32[(g0+1)] = r1;
+	__FUNCTION_TABLE__[(r0)>>2](i7);
+	r0 = r1 >> 2;
+	r2 = heap32[(r3+3)];
+	r4 = heap32[(r0+284)];
+	if(r2 >r4) //_LBB177_2
+{
+	r2 = (r2 + -1)|0;
+	r5 = r4 << 2;
+	r6 = heap32[(r3+5)];
+	r2 = r2 << 2;
+	r7 = (r6 + r5)|0;
+	r6 = (r6 + r2)|0;
+	r7 = r7 >> 2;
+	r6 = r6 >> 2;
+	r8 = heap32[(r7)];
+	r6 = heap32[(r6)];
+	heap32[(r7)] = r6;
+	r6 = heap32[(r3+5)];
+	r2 = (r6 + r2)|0;
+	r2 = r2 >> 2;
+	heap32[(r2)] = r8;
+	r2 = heap32[(r3+5)];
+	r2 = (r2 + r5)|0;
+	r2 = r2 >> 2;
+	r2 = heap32[(r2)];
+	r2 = r2 >> 2;
+	heap32[(r2+284)] = r4;
+	r2 = heap32[(r3+3)];
+	r2 = (r2 + -1)|0;
+	heap32[(r3+3)] = r2;
+if(!(r1 ==0)) //_LBB177_7
+{
+	r2 = heap32[(r3+49)];
+	r2 = r2 >> 2;
+	r3 = heap32[(r2+4)];
+if(!(uint(r3) >uint(r1))) //_LBB177_6
+{
+	r4 = heap32[(r2)];
+	r5 = heap32[(r2+1)];
+	r4 = (r4 * r5)|0;
+	r3 = (r3 + r4)|0;
+if(!(uint(r3) <=uint(r1))) //_LBB177_6
+{
+	r3 = heap32[(r2+3)];
+	heap32[(r0)] = r3;
+	heap32[(r2+3)] = r1;
+	r0 = heap32[(r2+2)];
+	r0 = (r0 + 1)|0;
+	heap32[(r2+2)] = r0;
+	return;
+}
+}
+	r1 = gNumAlignedFree;
+	r1 = r1 >> 2;
+	r2 = heap32[(r1)];
+	r2 = (r2 + 1)|0;
+	heap32[(r1)] = r2;
+	r0 = heap32[(r0+-1)];
+	heap32[(g0)] = r0;
+	free(i7);
+}
+	return;
+}
+else{
+	r0 = _2E_str472;
+	r1 = _2E_str573;
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r1;
+	heap32[(g0+2)] = 120;
+	_assert(i7);
+}
+}
+
+function _ZN21btCollisionDispatcherD1Ev(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+var __label__ = 0;
+	i7 = sp + -8;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = _ZTV21btCollisionDispatcher;
+	r2 = _ZTV16btManifoldResult;
+	r3 = r0 >> 2;
+	r1 = (r1 + 8)|0;
+	r2 = (r2 + 8)|0;
+	heap32[(r3)] = r1;
+	heap32[(r3+7)] = r2;
+	r1 = heap32[(r3+5)];
+if(!(r1 ==0)) //_LBB178_4
+{
+	r2 = heapU8[r0+24];
+if(!(r2 ==0)) //_LBB178_3
+{
+	r2 = gNumAlignedFree;
+	r2 = r2 >> 2;
+	r4 = heap32[(r2)];
+	r4 = (r4 + 1)|0;
+	r1 = r1 >> 2;
+	heap32[(r2)] = r4;
+	r1 = heap32[(r1+-1)];
+	heap32[(g0)] = r1;
+	free(i7);
+}
+	heap32[(r3+5)] = 0;
+}
+	r1 = 1;
+	heap8[r0+24] = r1;
+	heap32[(r3+5)] = 0;
+	r0 = _ZTV12btDispatcher;
+	heap32[(r3+3)] = 0;
+	r0 = (r0 + 8)|0;
+	heap32[(r3+4)] = 0;
+	heap32[(r3)] = r0;
+	return;
+}
+
+function _ZN21btCollisionDispatcherD0Ev(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+var __label__ = 0;
+	i7 = sp + -8;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = _ZTV21btCollisionDispatcher;
+	r2 = _ZTV16btManifoldResult;
+	r3 = r0 >> 2;
+	r1 = (r1 + 8)|0;
+	r2 = (r2 + 8)|0;
+	heap32[(r3)] = r1;
+	heap32[(r3+7)] = r2;
+	r1 = heap32[(r3+5)];
+if(!(r1 ==0)) //_LBB179_4
+{
+	r2 = heapU8[r0+24];
+if(!(r2 ==0)) //_LBB179_3
+{
+	r2 = gNumAlignedFree;
+	r2 = r2 >> 2;
+	r4 = heap32[(r2)];
+	r4 = (r4 + 1)|0;
+	r1 = r1 >> 2;
+	heap32[(r2)] = r4;
+	r1 = heap32[(r1+-1)];
+	heap32[(g0)] = r1;
+	free(i7);
+}
+	heap32[(r3+5)] = 0;
+}
+	r1 = 1;
+	heap8[r0+24] = r1;
+	heap32[(r3+5)] = 0;
+	r1 = _ZTV12btDispatcher;
+	heap32[(r3+3)] = 0;
+	r1 = (r1 + 8)|0;
+	heap32[(r3+4)] = 0;
+	heap32[(r3)] = r1;
+	heap32[(g0)] = r0;
+	_ZdlPv(i7);
+	return;
+}
+
+function _ZN21btCollisionDispatcher14getNewManifoldEPvS0_(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+	var r6;
+	var r7;
+	var r8;
+	var r9;
+	var r10;
+	var r11;
+	var f0;
+	var f1;
+	var f2;
+var __label__ = 0;
+	i7 = sp + -24;var g0 = i7>>2; // save stack
+	r0 = gNumManifold;
+	r0 = r0 >> 2;
+	r1 = heap32[(r0)];
+	r1 = (r1 + 1)|0;
+	r2 = heap32[(fp)];
+	r3 = heap32[(fp+1)];
+	r4 = heap32[(fp+2)];
+	heap32[(r0)] = r1;
+	r0 = heapU8[r2+4];
+	r0 = r0 & 2;
+	if(r0 !=0) //_LBB180_2
+{
+	r0 = r4 >> 2;
+	r0 = heap32[(r0+48)];
+	r1 = r0 >> 2;
+	r1 = heap32[(r1)];
+	r1 = r1 >> 2;
+	r1 = heap32[(r1+5)];
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = 1017370378;
+	__FUNCTION_TABLE__[(r1)>>2](i7);
+	f0 = f_g0;
+	r0 = r3 >> 2;
+	heapFloat[(fp+-2)] = f0;
+	r0 = heap32[(r0+48)];
+	r1 = r0 >> 2;
+	r1 = heap32[(r1)];
+	r1 = r1 >> 2;
+	r1 = heap32[(r1+5)];
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = 1017370378;
+	__FUNCTION_TABLE__[(r1)>>2](i7);
+	r0 = sp + -4;
+	r1 = sp + -8;
+	r0 = f_g0 < f0 ? r0 : r1;
+	heapFloat[(fp+-1)] = f_g0;
+}
+else{
+	r0 = gContactBreakingThreshold;
+}
+	r1 = r2 >> 2;
+	r5 = heap32[(r1+49)];
+	r6 = r3 >> 2;
+	r7 = r4 >> 2;
+	r5 = r5 >> 2;
+	r0 = r0 >> 2;
+	f0 = heapFloat[(r6+46)];
+	f1 = heapFloat[(r7+46)];
+	r6 = heap32[(r5+2)];
+	f2 = heapFloat[(r0)];
+	f0 = f0 < f1 ? f0 : f1;
+_5: do {
+	if(r6 ==0) //_LBB180_9
+{
+	r0 = gNumAlignedAllocs;
+	r0 = r0 >> 2;
+	r5 = heap32[(r0)];
+	r5 = (r5 + 1)|0;
+	heap32[(r0)] = r5;
+	heap32[(g0)] = 1159;
+	malloc(i7);
+	r0 = r_g0;
+	if(r0 !=0) //_LBB180_11
+{
+	r5 = 0;
+	r6 = (r0 + 4)|0;
+	r5 = (r5 - r6)|0;
+	r5 = r5 & 15;
+	r5 = (r0 + r5)|0;
+	r6 = (r5 + 4)|0;
+	r5 = r5 >> 2;
+	heap32[(r5)] = r0;
+	r0 = r6;
+}
+else{
+break _5;
+}
+}
+else{
+	r0 = heap32[(r5)];
+	if(r0 >1139) //_LBB180_6
+{
+	if(r6 >0) //_LBB180_8
+{
+	r0 = heap32[(r5+3)];
+	r7 = r0 >> 2;
+	r7 = heap32[(r7)];
+	r6 = (r6 + -1)|0;
+	heap32[(r5+3)] = r7;
+	heap32[(r5+2)] = r6;
+}
+else{
+	r1 = _2E_str371;
+	r2 = _2E_str169;
+	heap32[(g0)] = r1;
+	heap32[(g0+1)] = r2;
+	heap32[(g0+2)] = 70;
+	_assert(i7);
+}
+}
+else{
+	r1 = _2E_str270;
+	r2 = _2E_str169;
+	heap32[(g0)] = r1;
+	heap32[(g0+1)] = r2;
+	heap32[(g0+2)] = 69;
+	_assert(i7);
+}
+}
+} while(0);
+	r5 = r0 >> 2;
+	heap32[(r5)] = 1;
+	heap32[(r5+28)] = 0;
+	r6 = 0;
+	heap32[(r5+29)] = 0;
+	heap8[r0+120] = r6;
+	heap32[(r5+31)] = 0;
+	heap32[(r5+32)] = 0;
+	heap32[(r5+33)] = 0;
+	heap32[(r5+34)] = 0;
+	heap32[(r5+35)] = 0;
+	heap32[(r5+36)] = 0;
+	heap32[(r5+37)] = 0;
+	heap32[(r5+97)] = 0;
+	heap32[(r5+98)] = 0;
+	heap8[r0+396] = r6;
+	heap32[(r5+100)] = 0;
+	heap32[(r5+101)] = 0;
+	heap32[(r5+102)] = 0;
+	heap32[(r5+103)] = 0;
+	heap32[(r5+104)] = 0;
+	heap32[(r5+105)] = 0;
+	heap32[(r5+106)] = 0;
+	heap32[(r5+166)] = 0;
+	heap32[(r5+167)] = 0;
+	heap8[r0+672] = r6;
+	heap32[(r5+169)] = 0;
+	heap32[(r5+170)] = 0;
+	heap32[(r5+171)] = 0;
+	heap32[(r5+172)] = 0;
+	heap32[(r5+173)] = 0;
+	heap32[(r5+174)] = 0;
+	heap32[(r5+175)] = 0;
+	heap32[(r5+235)] = 0;
+	heap32[(r5+236)] = 0;
+	heap8[r0+948] = r6;
+	heap32[(r5+238)] = 0;
+	heap32[(r5+239)] = 0;
+	heap32[(r5+240)] = 0;
+	heap32[(r5+241)] = 0;
+	heap32[(r5+242)] = 0;
+	heap32[(r5+243)] = 0;
+	heap32[(r5+244)] = 0;
+	heap32[(r5+277)] = r3;
+	heap32[(r5+278)] = r4;
+	heap32[(r5+279)] = 0;
+	heapFloat[(r5+280)] = f2;
+	heapFloat[(r5+281)] = f0;
+	r3 = heap32[(r1+3)];
+	heap32[(r5+284)] = r3;
+	r3 = heap32[(r1+4)];
+	r4 = heap32[(r1+3)];
+	if(r3 ==r4) //_LBB180_14
+{
+	r5 = 1;
+	r7 = r4 << 1;
+	r7 = r4 == 0 ? r5 : r7;
+if(!(r3 >=r7)) //_LBB180_13
+{
+	if(r7 !=0) //_LBB180_17
+{
+	r3 = gNumAlignedAllocs;
+	r3 = r3 >> 2;
+	r8 = heap32[(r3)];
+	r9 = r7 << 2;
+	r8 = (r8 + 1)|0;
+	r9 = r9 | 3;
+	heap32[(r3)] = r8;
+	r3 = (r9 + 16)|0;
+	heap32[(g0)] = r3;
+	malloc(i7);
+	r3 = r_g0;
+	if(r3 !=0) //_LBB180_19
+{
+	r8 = (r3 + 4)|0;
+	r8 = (r6 - r8)|0;
+	r8 = r8 & 15;
+	r8 = (r3 + r8)|0;
+	r9 = (r8 + 4)|0;
+	r8 = r8 >> 2;
+	heap32[(r8)] = r3;
+	r3 = r9;
+}
+}
+else{
+	r3 = 0;
+}
+	r8 = (r2 + 20)|0;
+	if(r4 <1) //_LBB180_22
+{
+	r6 = r8 >> 2;
+	r9 = heap32[(r6)];
+}
+else{
+_26: while(true){
+	r9 = r8 >> 2;
+	r9 = heap32[(r9)];
+	r10 = r6 << 2;
+	r11 = (r9 + r10)|0;
+	r11 = r11 >> 2;
+	r10 = (r3 + r10)|0;
+	r11 = heap32[(r11)];
+	r6 = (r6 + 1)|0;
+	r10 = r10 >> 2;
+	heap32[(r10)] = r11;
+if(!(r4 !=r6)) //_LBB180_23
+{
+break _26;
+}
+}
+	r8 = (r2 + 20)|0;
+}
+	if(r9 !=0) //_LBB180_27
+{
+	r6 = heapU8[r2+24];
+	if(r6 !=0) //_LBB180_29
+{
+	r4 = gNumAlignedFree;
+	r4 = r4 >> 2;
+	r6 = heap32[(r4)];
+	r6 = (r6 + 1)|0;
+	r9 = r9 >> 2;
+	heap32[(r4)] = r6;
+	r4 = heap32[(r9+-1)];
+	heap32[(g0)] = r4;
+	free(i7);
+	r4 = heap32[(r1+3)];
+}
+	r6 = r8 >> 2;
+	heap32[(r6)] = 0;
+}
+	r6 = r8 >> 2;
+	heap8[r2+24] = r5;
+	heap32[(r6)] = r3;
+	heap32[(r1+4)] = r7;
+}
+}
+	r2 = r4 << 2;
+	r3 = heap32[(r1+5)];
+	r2 = (r3 + r2)|0;
+	r2 = r2 >> 2;
+	heap32[(r2)] = r0;
+	r2 = heap32[(r1+3)];
+	r2 = (r2 + 1)|0;
+	heap32[(r1+3)] = r2;
+	r_g0 = r0;
+	return;
+}
+
+function _ZN21btCollisionDispatcher13clearManifoldEP20btPersistentManifold(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+var __label__ = 0;
+	i7 = sp + 0;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp+1)];
+	r0 = r0 >> 2;
+	r1 = heap32[(r0+279)];
+if(!(r1 <1)) //_LBB181_3
+{
+	r2 = 0;
+_3: while(true){
+	r2 = (r2 + 1)|0;
+	if(r1 >r2) //_LBB181_2
+{
+continue _3;
+}
+else{
+break _3;
+}
+}
+}
+	heap32[(r0+279)] = 0;
+	return;
+}
+
+function _ZN21btCollisionDispatcher14needsCollisionEP17btCollisionObjectS1_(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+var __label__ = 0;
+	i7 = sp + -16;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp+1)];
+	if(r0 !=0) //_LBB182_2
+{
+	r1 = heap32[(fp+2)];
+	if(r1 !=0) //_LBB182_4
+{
+	r2 = heap32[(fp)];
+	r2 = r2 >> 2;
+	r3 = heap32[(r2+1)];
+	r4 = r3 & 1;
+if(!(r4 != 0)) //_LBB182_8
+{
+	r4 = heapU8[r0+204];
+	r4 = r4 & 3;
+if(!(r4 ==0)) //_LBB182_8
+{
+	r4 = heapU8[r1+204];
+	r4 = r4 & 3;
+if(!(r4 ==0)) //_LBB182_8
+{
+	r3 = r3 | 1;
+	heap32[(r2+1)] = r3;
+	r2 = _2E_str977;
+	heap32[(g0)] = r2;
+	printf(i7);
+}
+}
+}
+	r2 = r0 >> 2;
+	r3 = heap32[(r2+54)];
+	if(r3 ==2) //_LBB182_10
+{
+__label__ = 10;
+}
+else{
+	if(r3 !=5) //_LBB182_12
+{
+__label__ = 12;
+}
+else{
+__label__ = 10;
+}
+}
+_12: do {
+if (__label__ == 10){
+	r3 = r1 >> 2;
+	r3 = heap32[(r3+54)];
+if(!(r3 ==2)) //_LBB182_16
+{
+if(!(r3 ==5)) //_LBB182_16
+{
+break _12;
+}
+}
+	r0 = 0;
+	r_g0 = r0;
+	return;
+}
+} while(0);
+	r3 = heap32[(r2+63)];
+	if(r3 !=0) //_LBB182_14
+{
+	r2 = heap32[(r2)];
+	r2 = r2 >> 2;
+	r2 = heap32[(r2)];
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r1;
+	r0 = 0;
+	__FUNCTION_TABLE__[(r2)>>2](i7);
+	r0 = r_g0 == r0;
+}
+else{
+	r0 = 0;
+}
+	r0 = r0 & 1;
+	r0 = r0 ^ 1;
+	r_g0 = r0;
+	return;
+}
+else{
+	r0 = _2E_str876;
+	r1 = _2E_str573;
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r1;
+	heap32[(g0+2)] = 167;
+	_assert(i7);
+}
+}
+else{
+	r0 = _2E_str775;
+	r1 = _2E_str573;
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r1;
+	heap32[(g0+2)] = 166;
+	_assert(i7);
+}
+}
+
+function _ZN21btCollisionDispatcher26allocateCollisionAlgorithmEi(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+var __label__ = 0;
+	i7 = sp + -16;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r0 = r0 >> 2;
+	r0 = heap32[(r0+48)];
+	r0 = r0 >> 2;
+	r1 = heap32[(r0+2)];
+	r2 = heap32[(fp+1)];
+	if(r1 ==0) //_LBB183_7
+{
+	r0 = gNumAlignedAllocs;
+	r0 = r0 >> 2;
+	r1 = heap32[(r0)];
+	r1 = (r1 + 1)|0;
+	heap32[(r0)] = r1;
+	r0 = (r2 + 19)|0;
+	heap32[(g0)] = r0;
+	malloc(i7);
+	r0 = r_g0;
+if(!(r0 ==0)) //_LBB183_9
+{
+	r1 = 0;
+	r2 = (r0 + 4)|0;
+	r1 = (r1 - r2)|0;
+	r1 = r1 & 15;
+	r1 = (r0 + r1)|0;
+	r2 = r1 >> 2;
+	heap32[(r2)] = r0;
+	r0 = (r1 + 4)|0;
+}
+	r_g0 = r0;
+	return;
+}
+else{
+if(!(r2 ==0)) //_LBB183_4
+{
+	r3 = heap32[(r0)];
+if(!(r3 >=r2)) //_LBB183_4
+{
+	r0 = _2E_str270;
+	r1 = _2E_str169;
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r1;
+	heap32[(g0+2)] = 69;
+	_assert(i7);
+}
+}
+	if(r1 >0) //_LBB183_6
+{
+	r2 = heap32[(r0+3)];
+	r3 = r2 >> 2;
+	r3 = heap32[(r3)];
+	r1 = (r1 + -1)|0;
+	heap32[(r0+3)] = r3;
+	heap32[(r0+2)] = r1;
+	r_g0 = r2;
+	return;
+}
+else{
+	r0 = _2E_str371;
+	r1 = _2E_str169;
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r1;
+	heap32[(g0+2)] = 70;
+	_assert(i7);
+}
+}
+}
+
+function _ZN21btCollisionDispatcher19defaultNearCallbackER16btBroadphasePairRS_RK16btDispatcherInfo(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+	var r6;
+	var r7;
+	var f0;
+	var f1;
+var __label__ = 0;
+	i7 = sp + -184;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp+1)];
+	r1 = heap32[(fp)];
+	r1 = r1 >> 2;
+	r2 = r0 >> 2;
+	r3 = heap32[(r2)];
+	r4 = heap32[(r1)];
+	r5 = heap32[(r1+1)];
+	r3 = r3 >> 2;
+	r4 = r4 >> 2;
+	r5 = r5 >> 2;
+	r4 = heap32[(r4)];
+	r5 = heap32[(r5)];
+	r3 = heap32[(r3+6)];
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r4;
+	heap32[(g0+2)] = r5;
+	__FUNCTION_TABLE__[(r3)>>2](i7);
+	r3 = r_g0;
+_1: do {
+if(!(r3 ==0)) //_LBB184_8
+{
+	r3 = heap32[(fp+2)];
+	r6 = heap32[(r1+2)];
+	if(r6 ==0) //_LBB184_3
+{
+	r6 = heap32[(r2)];
+	r6 = r6 >> 2;
+	r6 = heap32[(r6+2)];
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r4;
+	heap32[(g0+2)] = r5;
+	heap32[(g0+3)] = 0;
+	__FUNCTION_TABLE__[(r6)>>2](i7);
+	r6 = r_g0;
+	heap32[(r1+2)] = r6;
+	if(r6 ==0) //_LBB184_8
+{
+break _1;
+}
+}
+	r0 = _ZTV16btManifoldResult;
+	r1 = sp + -160;
+	r0 = (r0 + 8)|0;
+	r2 = r1 >> 2;
+	heap32[(fp+-40)] = r0;
+	heap32[(r2+1)] = 0;
+	heap32[(r2+34)] = r4;
+	r0 = r4 >> 2;
+	heap32[(r2+35)] = r5;
+	heap32[(r2+2)] = heap32[(r0+1)];
+	heap32[(r2+3)] = heap32[(r0+2)];
+	heap32[(r2+4)] = heap32[(r0+3)];
+	heap32[(r2+5)] = heap32[(r0+4)];
+	heap32[(r2+6)] = heap32[(r0+5)];
+	heap32[(r2+7)] = heap32[(r0+6)];
+	heap32[(r2+8)] = heap32[(r0+7)];
+	heap32[(r2+9)] = heap32[(r0+8)];
+	heap32[(r2+10)] = heap32[(r0+9)];
+	heap32[(r2+11)] = heap32[(r0+10)];
+	heap32[(r2+12)] = heap32[(r0+11)];
+	heap32[(r2+13)] = heap32[(r0+12)];
+	heap32[(r2+14)] = heap32[(r0+13)];
+	heap32[(r2+15)] = heap32[(r0+14)];
+	heap32[(r2+16)] = heap32[(r0+15)];
+	r7 = r5 >> 2;
+	heap32[(r2+17)] = heap32[(r0+16)];
+	heap32[(r2+18)] = heap32[(r7+1)];
+	heap32[(r2+19)] = heap32[(r7+2)];
+	heap32[(r2+20)] = heap32[(r7+3)];
+	heap32[(r2+21)] = heap32[(r7+4)];
+	heap32[(r2+22)] = heap32[(r7+5)];
+	heap32[(r2+23)] = heap32[(r7+6)];
+	heap32[(r2+24)] = heap32[(r7+7)];
+	heap32[(r2+25)] = heap32[(r7+8)];
+	heap32[(r2+26)] = heap32[(r7+9)];
+	heap32[(r2+27)] = heap32[(r7+10)];
+	heap32[(r2+28)] = heap32[(r7+11)];
+	heap32[(r2+29)] = heap32[(r7+12)];
+	heap32[(r2+30)] = heap32[(r7+13)];
+	heap32[(r2+31)] = heap32[(r7+14)];
+	heap32[(r2+32)] = heap32[(r7+15)];
+	r0 = r6 >> 2;
+	heap32[(r2+33)] = heap32[(r7+16)];
+	r0 = heap32[(r0)];
+	r2 = r3 >> 2;
+	r7 = heap32[(r2+2)];
+	if(r7 !=1) //_LBB184_6
+{
+	r0 = r0 >> 2;
+	r0 = heap32[(r0+3)];
+	heap32[(g0)] = r6;
+	heap32[(g0+1)] = r4;
+	heap32[(g0+2)] = r5;
+	heap32[(g0+3)] = r3;
+	heap32[(g0+4)] = r1;
+	__FUNCTION_TABLE__[(r0)>>2](i7);
+	f0 = f_g0;
+	f1 = heapFloat[(r2+3)];
+if(!(f1 <=f0)) //_LBB184_8
+{
+	heapFloat[(r2+3)] = f0;
+}
+}
+else{
+	r0 = r0 >> 2;
+	r0 = heap32[(r0+2)];
+	heap32[(g0)] = r6;
+	heap32[(g0+1)] = r4;
+	heap32[(g0+2)] = r5;
+	heap32[(g0+3)] = r3;
+	heap32[(g0+4)] = r1;
+	__FUNCTION_TABLE__[(r0)>>2](i7);
+	return;
+}
+}
+} while(0);
+	return;
+}
+
+function _ZN17btCollisionObject24checkCollideWithOverrideEPS_(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+var __label__ = 0;
+	i7 = sp + 0;var g0 = i7>>2; // save stack
+	r0 = 1;
+	r_g0 = r0;
+	return;
+}
+
+function _ZN17btCollisionObject17setCollisionShapeEP16btCollisionShape(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+var __label__ = 0;
+	i7 = sp + 0;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r0 = r0 >> 2;
+	r1 = heap32[(fp+1)];
+	heap32[(r0+48)] = r1;
+	heap32[(r0+50)] = r1;
+	return;
+}
+
+function _ZNK17btCollisionObject28calculateSerializeBufferSizeEv(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+var __label__ = 0;
+	i7 = sp + 0;var g0 = i7>>2; // save stack
+	r0 = 248;
+	r_g0 = r0;
+	return;
+}
+
+function _ZN17btCollisionObjectD1Ev(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+var __label__ = 0;
+	i7 = sp + 0;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = _ZTV17btCollisionObject;
+	r0 = r0 >> 2;
+	r1 = (r1 + 8)|0;
+	heap32[(r0)] = r1;
+	return;
+}
+
+function _ZN17btCollisionObjectD0Ev(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+var __label__ = 0;
+	i7 = sp + -8;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = _ZTV17btCollisionObject;
+	r2 = r0 >> 2;
+	r1 = (r1 + 8)|0;
+	heap32[(r2)] = r1;
+if(!(r0 ==0)) //_LBB189_2
+{
+	r0 = gNumAlignedFree;
+	r0 = r0 >> 2;
+	r1 = heap32[(r0)];
+	r1 = (r1 + 1)|0;
+	heap32[(r0)] = r1;
+	r0 = heap32[(r2+-1)];
+	heap32[(g0)] = r0;
+	free(i7);
+}
+	return;
+}
+
+function _ZNK17btCollisionObject9serializeEPvP12btSerializer(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+	var r6;
+var __label__ = 0;
+	i7 = sp + -8;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = heap32[(fp+1)];
+	r2 = r0 >> 2;
+	r1 = r1 >> 2;
+	heap32[(r1+4)] = heap32[(r2+1)];
+	heap32[(r1+5)] = heap32[(r2+2)];
+	heap32[(r1+6)] = heap32[(r2+3)];
+	heap32[(r1+7)] = heap32[(r2+4)];
+	heap32[(r1+8)] = heap32[(r2+5)];
+	heap32[(r1+9)] = heap32[(r2+6)];
+	heap32[(r1+10)] = heap32[(r2+7)];
+	heap32[(r1+11)] = heap32[(r2+8)];
+	heap32[(r1+12)] = heap32[(r2+9)];
+	heap32[(r1+13)] = heap32[(r2+10)];
+	heap32[(r1+14)] = heap32[(r2+11)];
+	heap32[(r1+15)] = heap32[(r2+12)];
+	heap32[(r1+16)] = heap32[(r2+13)];
+	heap32[(r1+17)] = heap32[(r2+14)];
+	heap32[(r1+18)] = heap32[(r2+15)];
+	heap32[(r1+19)] = heap32[(r2+16)];
+	heap32[(r1+20)] = heap32[(r2+17)];
+	heap32[(r1+21)] = heap32[(r2+18)];
+	heap32[(r1+22)] = heap32[(r2+19)];
+	heap32[(r1+23)] = heap32[(r2+20)];
+	heap32[(r1+24)] = heap32[(r2+21)];
+	heap32[(r1+25)] = heap32[(r2+22)];
+	heap32[(r1+26)] = heap32[(r2+23)];
+	heap32[(r1+27)] = heap32[(r2+24)];
+	heap32[(r1+28)] = heap32[(r2+25)];
+	heap32[(r1+29)] = heap32[(r2+26)];
+	heap32[(r1+30)] = heap32[(r2+27)];
+	heap32[(r1+31)] = heap32[(r2+28)];
+	heap32[(r1+32)] = heap32[(r2+29)];
+	heap32[(r1+33)] = heap32[(r2+30)];
+	heap32[(r1+34)] = heap32[(r2+31)];
+	heap32[(r1+35)] = heap32[(r2+32)];
+	heap32[(r1+36)] = heap32[(r2+33)];
+	heap32[(r1+37)] = heap32[(r2+34)];
+	heap32[(r1+38)] = heap32[(r2+35)];
+	heap32[(r1+39)] = heap32[(r2+36)];
+	heap32[(r1+40)] = heap32[(r2+37)];
+	heap32[(r1+41)] = heap32[(r2+38)];
+	heap32[(r1+42)] = heap32[(r2+39)];
+	heap32[(r1+43)] = heap32[(r2+40)];
+	heap32[(r1+44)] = heap32[(r2+41)];
+	heap32[(r1+45)] = heap32[(r2+42)];
+	heap32[(r1+46)] = heap32[(r2+43)];
+	heap32[(r1+47)] = heap32[(r2+44)];
+	r3 = heap32[(r2+45)];
+	heap32[(r1+55)] = r3;
+	r3 = heap32[(fp+2)];
+	heap32[(r1+48)] = heap32[(r2+46)];
+	heap32[(r1)] = 0;
+	r4 = r3 >> 2;
+	r5 = heap32[(r4)];
+	r5 = r5 >> 2;
+	r5 = heap32[(r5+7)];
+	r6 = heap32[(r2+48)];
+	heap32[(g0)] = r3;
+	heap32[(g0+1)] = r6;
+	__FUNCTION_TABLE__[(r5)>>2](i7);
+	heap32[(r1+1)] = r_g0;
+	heap32[(r1+2)] = 0;
+	r5 = heap32[(r2+51)];
+	heap32[(r1+56)] = r5;
+	r5 = heap32[(r2+52)];
+	heap32[(r1+57)] = r5;
+	r5 = heap32[(r2+53)];
+	heap32[(r1+58)] = r5;
+	r5 = heap32[(r2+54)];
+	heap32[(r1+59)] = r5;
+	r5 = heap32[(r2+54)];
+	heap32[(r1+59)] = r5;
+	heap32[(r1+49)] = heap32[(r2+55)];
+	heap32[(r1+50)] = heap32[(r2+56)];
+	heap32[(r1+51)] = heap32[(r2+57)];
+	r5 = heap32[(r2+58)];
+	heap32[(r1+60)] = r5;
+	r5 = heap32[(r4)];
+	r5 = r5 >> 2;
+	r5 = heap32[(r5+10)];
+	heap32[(g0)] = r3;
+	heap32[(g0+1)] = r0;
+	__FUNCTION_TABLE__[(r5)>>2](i7);
+	r0 = r_g0;
+	r5 = heap32[(r4)];
+	r5 = r5 >> 2;
+	r5 = heap32[(r5+7)];
+	heap32[(g0)] = r3;
+	heap32[(g0+1)] = r0;
+	__FUNCTION_TABLE__[(r5)>>2](i7);
+	r5 = r_g0;
+	heap32[(r1+3)] = r5;
+if(!(r5 ==0)) //_LBB190_2
+{
+	r4 = heap32[(r4)];
+	r4 = r4 >> 2;
+	r4 = heap32[(r4+12)];
+	heap32[(g0)] = r3;
+	heap32[(g0+1)] = r0;
+	__FUNCTION_TABLE__[(r4)>>2](i7);
+}
+	heap32[(r1+52)] = heap32[(r2+60)];
+	heap32[(r1+53)] = heap32[(r2+61)];
+	heap32[(r1+54)] = heap32[(r2+62)];
+	heap32[(r1+54)] = heap32[(r2+62)];
+	r0 = heap32[(r2+63)];
+	heap32[(r1+61)] = r0;
+	r0 = _2E_str78;
+	r_g0 = r0;
+	return;
+}
+
+function _ZNK17btCollisionObject21serializeSingleObjectEP12btSerializer(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+var __label__ = 0;
+	i7 = sp + -24;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = r0 >> 2;
+	r2 = heap32[(r1)];
+	r2 = r2 >> 2;
+	r2 = heap32[(r2+4)];
+	heap32[(g0)] = r0;
+	r3 = heap32[(fp+1)];
+	__FUNCTION_TABLE__[(r2)>>2](i7);
+	r4 = r3 >> 2;
+	r5 = heap32[(r4)];
+	r5 = r5 >> 2;
+	r5 = heap32[(r5+4)];
+	heap32[(g0)] = r3;
+	heap32[(g0+1)] = r_g0;
+	heap32[(g0+2)] = 1;
+	__FUNCTION_TABLE__[(r5)>>2](i7);
+	r2 = r_g0;
+	r1 = heap32[(r1)];
+	r1 = r1 >> 2;
+	r5 = r2 >> 2;
+	r1 = heap32[(r1+5)];
+	r5 = heap32[(r5+2)];
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r5;
+	heap32[(g0+2)] = r3;
+	__FUNCTION_TABLE__[(r1)>>2](i7);
+	r4 = heap32[(r4)];
+	r4 = r4 >> 2;
+	r4 = heap32[(r4+5)];
+	heap32[(g0)] = r3;
+	heap32[(g0+1)] = r2;
+	heap32[(g0+2)] = r_g0;
+	heap32[(g0+3)] = 1245859651;
+	heap32[(g0+4)] = r0;
+	__FUNCTION_TABLE__[(r4)>>2](i7);
+	return;
+}
+
+function _ZN16btManifoldResult20setShapeIdentifiersAEii(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+var __label__ = 0;
+	i7 = sp + 0;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r0 = r0 >> 2;
+	r1 = heap32[(fp+1)];
+	r2 = heap32[(fp+2)];
+	heap32[(r0+36)] = r1;
+	heap32[(r0+38)] = r2;
+	return;
+}
+
+function _ZN16btManifoldResult20setShapeIdentifiersBEii(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+var __label__ = 0;
+	i7 = sp + 0;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r0 = r0 >> 2;
+	r1 = heap32[(fp+1)];
+	r2 = heap32[(fp+2)];
+	heap32[(r0+37)] = r1;
+	heap32[(r0+39)] = r2;
+	return;
+}
+
+function _ZN16btCollisionWorld14setDebugDrawerEP12btIDebugDraw(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+var __label__ = 0;
+	i7 = sp + 0;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r0 = r0 >> 2;
+	r1 = heap32[(fp+1)];
+	heap32[(r0+21)] = r1;
+	return;
+}
+
+function _ZN16btCollisionWorld14getDebugDrawerEv(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+var __label__ = 0;
+	i7 = sp + 0;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r0 = r0 >> 2;
+	r0 = heap32[(r0+21)];
+	r_g0 = r0;
+	return;
+}
+
+function _ZNK16btCollisionWorld20ConvexResultCallback14needsCollisionEP17btBroadphaseProxy(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+var __label__ = 0;
+	i7 = sp + 0;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = heap32[(fp+1)];
+	r2 = heapU16[(r0+10)>>1];
+	r3 = heapU16[(r1+4)>>1];
+	r2 = r2 & r3;
+	r2 = r2 & 65535;
+	if(r2 ==0) //_LBB196_2
+{
+	r0 = 0;
+	r_g0 = r0;
+	return;
+}
+else{
+	r1 = heapU16[(r1+6)>>1];
+	r0 = heapU16[(r0+8)>>1];
+	r0 = r1 & r0;
+	r0 = r0 & 65535;
+	r1 = 0;
+	r0 = r0 != r1;
+	r0 = r0 & 1;
+	r_g0 = r0;
+	return;
+}
+}
+
+function _ZN12btConvexCast10CastResult9DebugDrawEf(sp)
+{
+	var i7;
+	var fp = sp>>2;
+var __label__ = 0;
+	i7 = sp + 0;var g0 = i7>>2; // save stack
+	return;
+}
+
+function _ZN12btConvexCast10CastResult15drawCoordSystemERK11btTransform(sp)
+{
+	var i7;
+	var fp = sp>>2;
+var __label__ = 0;
+	i7 = sp + 0;var g0 = i7>>2; // save stack
+	return;
+}
+
+function _ZN12btConvexCast10CastResultD1Ev(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+var __label__ = 0;
+	i7 = sp + 0;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = _ZTVN12btConvexCast10CastResultE;
+	r0 = r0 >> 2;
+	r1 = (r1 + 8)|0;
+	heap32[(r0)] = r1;
+	return;
+}
+
+function _ZN12btConvexCast10CastResultD0Ev(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+var __label__ = 0;
+	i7 = sp + -8;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = _ZTVN12btConvexCast10CastResultE;
+	r2 = r0 >> 2;
+	r1 = (r1 + 8)|0;
+	heap32[(r2)] = r1;
+	heap32[(g0)] = r0;
+	_ZdlPv(i7);
+	return;
+}
+
+function _ZZN16btCollisionWorld13rayTestSingleERK11btTransformS2_P17btCollisionObjectPK16btCollisionShapeS2_RNS_17RayResultCallbackEEN29BridgeTriangleRaycastCallback9reportHitERK9btVector3fii(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+	var f0;
+	var f1;
+	var f2;
+	var f3;
+	var f4;
+	var f5;
+	var f6;
+	var f7;
+	var f8;
+	var f9;
+	var f10;
+	var f11;
+var __label__ = 0;
+	i7 = sp + -56;var g0 = i7>>2; // save stack
+	r0 = sp + -8;
+	r1 = heap32[(fp+3)];
+	r2 = heap32[(fp+1)];
+	r3 = heap32[(fp)];
+	r4 = r0 >> 2;
+	r5 = heap32[(fp+4)];
+	heap32[(fp+-2)] = r1;
+	r1 = r2 >> 2;
+	heap32[(r4+1)] = r5;
+	r2 = r3 >> 2;
+	r3 = heap32[(r2+12)];
+	f0 = heapFloat[(r2+22)];
+	f1 = heapFloat[(r1)];
+	f2 = heapFloat[(r2+18)];
+	f3 = heapFloat[(r2+14)];
+	f4 = heapFloat[(r2+23)];
+	f5 = heapFloat[(r1+1)];
+	f6 = heapFloat[(r2+19)];
+	f7 = heapFloat[(r2+15)];
+	f8 = heapFloat[(r2+24)];
+	f9 = heapFloat[(r1+2)];
+	f10 = heapFloat[(r2+20)];
+	f11 = heapFloat[(r2+16)];
+	r1 = sp + -40;
+	f3 = f3*f1;
+	f7 = f7*f5;
+	r4 = r1 >> 2;
+	heap32[(fp+-10)] = r3;
+	f2 = f2*f1;
+	f6 = f6*f5;
+	f3 = f3+f7;
+	f7 = f11*f9;
+	f0 = f0*f1;
+	f1 = f4*f5;
+	f2 = f2+f6;
+	f4 = f10*f9;
+	f3 = f3+f7;
+	heap32[(r4+1)] = r0;
+	f0 = f0+f1;
+	f1 = f8*f9;
+	f2 = f2+f4;
+	heapFloat[(r4+2)] = f3;
+	f0 = f0+f1;
+	heapFloat[(r4+3)] = f2;
+	heapFloat[(r4+4)] = f0;
+	heap32[(r4+5)] = 0;
+	heap32[(r4+6)] = heap32[(fp+2)];
+	r0 = heap32[(r2+11)];
+	r2 = r0 >> 2;
+	r2 = heap32[(r2)];
+	r2 = r2 >> 2;
+	r2 = heap32[(r2+3)];
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r1;
+	heap32[(g0+2)] = 1;
+	__FUNCTION_TABLE__[(r2)>>2](i7);
+	return;
+}
+
+function _ZZN16btCollisionWorld13rayTestSingleERK11btTransformS2_P17btCollisionObjectPK16btCollisionShapeS2_RNS_17RayResultCallbackEEN29BridgeTriangleRaycastCallback9reportHitE_0RK9btVector3fii(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+	var f0;
+	var f1;
+	var f2;
+	var f3;
+	var f4;
+	var f5;
+	var f6;
+	var f7;
+	var f8;
+	var f9;
+	var f10;
+	var f11;
+var __label__ = 0;
+	i7 = sp + -56;var g0 = i7>>2; // save stack
+	r0 = sp + -8;
+	r1 = heap32[(fp+3)];
+	r2 = heap32[(fp+1)];
+	r3 = heap32[(fp)];
+	r4 = r0 >> 2;
+	r5 = heap32[(fp+4)];
+	heap32[(fp+-2)] = r1;
+	r1 = r2 >> 2;
+	heap32[(r4+1)] = r5;
+	r2 = r3 >> 2;
+	r3 = heap32[(r2+12)];
+	f0 = heapFloat[(r2+22)];
+	f1 = heapFloat[(r1)];
+	f2 = heapFloat[(r2+18)];
+	f3 = heapFloat[(r2+14)];
+	f4 = heapFloat[(r2+23)];
+	f5 = heapFloat[(r1+1)];
+	f6 = heapFloat[(r2+19)];
+	f7 = heapFloat[(r2+15)];
+	f8 = heapFloat[(r2+24)];
+	f9 = heapFloat[(r1+2)];
+	f10 = heapFloat[(r2+20)];
+	f11 = heapFloat[(r2+16)];
+	r1 = sp + -40;
+	f3 = f3*f1;
+	f7 = f7*f5;
+	r4 = r1 >> 2;
+	heap32[(fp+-10)] = r3;
+	f2 = f2*f1;
+	f6 = f6*f5;
+	f3 = f3+f7;
+	f7 = f11*f9;
+	f0 = f0*f1;
+	f1 = f4*f5;
+	f2 = f2+f6;
+	f4 = f10*f9;
+	f3 = f3+f7;
+	heap32[(r4+1)] = r0;
+	f0 = f0+f1;
+	f1 = f8*f9;
+	f2 = f2+f4;
+	heapFloat[(r4+2)] = f3;
+	f0 = f0+f1;
+	heapFloat[(r4+3)] = f2;
+	heapFloat[(r4+4)] = f0;
+	heap32[(r4+5)] = 0;
+	heap32[(r4+6)] = heap32[(fp+2)];
+	r0 = heap32[(r2+11)];
+	r2 = r0 >> 2;
+	r2 = heap32[(r2)];
+	r2 = r2 >> 2;
+	r2 = heap32[(r2+3)];
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r1;
+	heap32[(g0+2)] = 1;
+	__FUNCTION_TABLE__[(r2)>>2](i7);
+	return;
+}
+
+function _ZZN16btCollisionWorld13rayTestSingleERK11btTransformS2_P17btCollisionObjectPK16btCollisionShapeS2_RNS_17RayResultCallbackEEN15LocalInfoAdder2D1Ev(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+var __label__ = 0;
+	i7 = sp + 0;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = _ZTVZN16btCollisionWorld13rayTestSingleERK11btTransformS2_P17btCollisionObjectPK16btCollisionShapeS2_RNS_17RayResultCallbackEE15LocalInfoAdder2;
+	r0 = r0 >> 2;
+	r1 = (r1 + 8)|0;
+	heap32[(r0)] = r1;
+	return;
+}
+
+function _ZZN16btCollisionWorld13rayTestSingleERK11btTransformS2_P17btCollisionObjectPK16btCollisionShapeS2_RNS_17RayResultCallbackEEN15LocalInfoAdder2D0Ev(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+var __label__ = 0;
+	i7 = sp + -8;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = _ZTVZN16btCollisionWorld13rayTestSingleERK11btTransformS2_P17btCollisionObjectPK16btCollisionShapeS2_RNS_17RayResultCallbackEE15LocalInfoAdder2;
+	r2 = r0 >> 2;
+	r1 = (r1 + 8)|0;
+	heap32[(r2)] = r1;
+	heap32[(g0)] = r0;
+	_ZdlPv(i7);
+	return;
+}
+
+function _ZZN16btCollisionWorld13rayTestSingleERK11btTransformS2_P17btCollisionObjectPK16btCollisionShapeS2_RNS_17RayResultCallbackEEN15LocalInfoAdder215addSingleResultERNS_14LocalRayResultEb(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+var __label__ = 0;
+	i7 = sp + -24;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = sp + -8;
+	r0 = r0 >> 2;
+	heap32[(fp+-2)] = -1;
+	r2 = heap32[(fp+1)];
+	r3 = r1 >> 2;
+	r4 = heap32[(r0+6)];
+	r5 = r2 >> 2;
+	heap32[(r3+1)] = r4;
+	r3 = heap32[(r5+1)];
+if(!(r3 !=0)) //_LBB205_2
+{
+	heap32[(r5+1)] = r1;
+}
+	r1 = heap32[(fp+2)];
+	r3 = heap32[(r0+5)];
+	r4 = r3 >> 2;
+	r4 = heap32[(r4)];
+	r4 = r4 >> 2;
+	r4 = heap32[(r4+3)];
+	heap32[(g0)] = r3;
+	heap32[(g0+1)] = r2;
+	heap32[(g0+2)] = r1;
+	__FUNCTION_TABLE__[(r4)>>2](i7);
+	r1 = heap32[(r0+5)];
+	r1 = r1 >> 2;
+	heap32[(r0+1)] = heap32[(r1+1)];
+	return;
+}
+
+function _ZZN16btCollisionWorld17objectQuerySingleEPK13btConvexShapeRK11btTransformS5_P17btCollisionObjectPK16btCollisionShapeS5_RNS_20ConvexResultCallbackEfEN32BridgeTriangleConvexcastCallback9reportHitERK9btVector3SG_fii(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+	var r6;
+	var r7;
+	var f0;
+	var f1;
+var __label__ = 0;
+	i7 = sp + -72;var g0 = i7>>2; // save stack
+	r0 = sp + -8;
+	r1 = heap32[(fp+4)];
+	r2 = heap32[(fp)];
+	r3 = r0 >> 2;
+	r4 = heap32[(fp+5)];
+	heap32[(fp+-2)] = r1;
+	r1 = r2 >> 2;
+	heap32[(r3+1)] = r4;
+	r2 = heap32[(r1+52)];
+	f0 = heapFloat[(fp+3)];
+	r3 = r2 >> 2;
+	f1 = heapFloat[(r3+1)];
+	if(f1 <f0) //_LBB206_2
+{
+	f_g0 = f0;
+	return;
+}
+else{
+	r4 = heap32[(fp+1)];
+	r5 = heap32[(fp+2)];
+	r1 = heap32[(r1+53)];
+	r6 = sp + -56;
+	r7 = r6 >> 2;
+	heap32[(fp+-14)] = r1;
+	r1 = r4 >> 2;
+	heap32[(r7+1)] = r0;
+	heap32[(r7+2)] = heap32[(r1)];
+	heap32[(r7+3)] = heap32[(r1+1)];
+	heap32[(r7+4)] = heap32[(r1+2)];
+	r0 = r5 >> 2;
+	heap32[(r7+5)] = heap32[(r1+3)];
+	heap32[(r7+6)] = heap32[(r0)];
+	heap32[(r7+7)] = heap32[(r0+1)];
+	heap32[(r7+8)] = heap32[(r0+2)];
+	heap32[(r7+9)] = heap32[(r0+3)];
+	heapFloat[(r7+10)] = f0;
+	r0 = heap32[(r3)];
+	r0 = r0 >> 2;
+	r0 = heap32[(r0+3)];
+	heap32[(g0)] = r2;
+	heap32[(g0+1)] = r6;
+	heap32[(g0+2)] = 1;
+	__FUNCTION_TABLE__[(r0)>>2](i7);
+	return;
+}
+}
+
+function _ZZN16btCollisionWorld17objectQuerySingleEPK13btConvexShapeRK11btTransformS5_P17btCollisionObjectPK16btCollisionShapeS5_RNS_20ConvexResultCallbackEfEN32BridgeTriangleConvexcastCallback9reportHitE_0RK9btVector3SG_fii(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+	var r6;
+	var r7;
+	var f0;
+	var f1;
+var __label__ = 0;
+	i7 = sp + -72;var g0 = i7>>2; // save stack
+	r0 = sp + -8;
+	r1 = heap32[(fp+4)];
+	r2 = heap32[(fp)];
+	r3 = r0 >> 2;
+	r4 = heap32[(fp+5)];
+	heap32[(fp+-2)] = r1;
+	r1 = r2 >> 2;
+	heap32[(r3+1)] = r4;
+	r2 = heap32[(r1+52)];
+	f0 = heapFloat[(fp+3)];
+	r3 = r2 >> 2;
+	f1 = heapFloat[(r3+1)];
+	if(f1 <f0) //_LBB207_2
+{
+	f_g0 = f0;
+	return;
+}
+else{
+	r4 = heap32[(fp+1)];
+	r5 = heap32[(fp+2)];
+	r1 = heap32[(r1+53)];
+	r6 = sp + -56;
+	r7 = r6 >> 2;
+	heap32[(fp+-14)] = r1;
+	r1 = r4 >> 2;
+	heap32[(r7+1)] = r0;
+	heap32[(r7+2)] = heap32[(r1)];
+	heap32[(r7+3)] = heap32[(r1+1)];
+	heap32[(r7+4)] = heap32[(r1+2)];
+	r0 = r5 >> 2;
+	heap32[(r7+5)] = heap32[(r1+3)];
+	heap32[(r7+6)] = heap32[(r0)];
+	heap32[(r7+7)] = heap32[(r0+1)];
+	heap32[(r7+8)] = heap32[(r0+2)];
+	heap32[(r7+9)] = heap32[(r0+3)];
+	heapFloat[(r7+10)] = f0;
+	r0 = heap32[(r3)];
+	r0 = r0 >> 2;
+	r0 = heap32[(r0+3)];
+	heap32[(g0)] = r2;
+	heap32[(g0+1)] = r6;
+	heap32[(g0+2)] = 0;
+	__FUNCTION_TABLE__[(r0)>>2](i7);
+	return;
+}
+}
+
+function _ZZN16btCollisionWorld17objectQuerySingleEPK13btConvexShapeRK11btTransformS5_P17btCollisionObjectPK16btCollisionShapeS5_RNS_20ConvexResultCallbackEfEN14LocalInfoAdderD1Ev(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+var __label__ = 0;
+	i7 = sp + 0;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = _ZTVZN16btCollisionWorld17objectQuerySingleEPK13btConvexShapeRK11btTransformS5_P17btCollisionObjectPK16btCollisionShapeS5_RNS_20ConvexResultCallbackEfE14LocalInfoAdder;
+	r0 = r0 >> 2;
+	r1 = (r1 + 8)|0;
+	heap32[(r0)] = r1;
+	return;
+}
+
+function _ZZN16btCollisionWorld17objectQuerySingleEPK13btConvexShapeRK11btTransformS5_P17btCollisionObjectPK16btCollisionShapeS5_RNS_20ConvexResultCallbackEfEN14LocalInfoAdderD0Ev(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+var __label__ = 0;
+	i7 = sp + -8;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = _ZTVZN16btCollisionWorld17objectQuerySingleEPK13btConvexShapeRK11btTransformS5_P17btCollisionObjectPK16btCollisionShapeS5_RNS_20ConvexResultCallbackEfE14LocalInfoAdder;
+	r2 = r0 >> 2;
+	r1 = (r1 + 8)|0;
+	heap32[(r2)] = r1;
+	heap32[(g0)] = r0;
+	_ZdlPv(i7);
+	return;
+}
+
+function _ZZN16btCollisionWorld17objectQuerySingleEPK13btConvexShapeRK11btTransformS5_P17btCollisionObjectPK16btCollisionShapeS5_RNS_20ConvexResultCallbackEfEN14LocalInfoAdder15addSingleResultERNS_17LocalConvexResultEb(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+var __label__ = 0;
+	i7 = sp + -24;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = sp + -8;
+	r0 = r0 >> 2;
+	heap32[(fp+-2)] = -1;
+	r2 = heap32[(fp+1)];
+	r3 = r1 >> 2;
+	r4 = heap32[(r0+4)];
+	r5 = r2 >> 2;
+	heap32[(r3+1)] = r4;
+	r3 = heap32[(r5+1)];
+if(!(r3 !=0)) //_LBB210_2
+{
+	heap32[(r5+1)] = r1;
+}
+	r1 = heap32[(fp+2)];
+	r3 = heap32[(r0+3)];
+	r4 = r3 >> 2;
+	r4 = heap32[(r4)];
+	r4 = r4 >> 2;
+	r4 = heap32[(r4+3)];
+	heap32[(g0)] = r3;
+	heap32[(g0+1)] = r2;
+	heap32[(g0+2)] = r1;
+	__FUNCTION_TABLE__[(r4)>>2](i7);
+	r1 = heap32[(r0+3)];
+	r1 = r1 >> 2;
+	heap32[(r0+1)] = heap32[(r1+1)];
+	return;
+}
+
+function _ZN17DebugDrawcallbackD1Ev(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+var __label__ = 0;
+	i7 = sp + 0;var g0 = i7>>2; // save stack
+	r0 = _ZTV17DebugDrawcallback;
+	r1 = heap32[(fp)];
+	r1 = r1 >> 2;
+	r2 = (r0 + 8)|0;
+	r3 = _ZTV31btInternalTriangleIndexCallback;
+	r0 = (r0 + 32)|0;
+	heap32[(r1)] = r2;
+	r2 = _ZTV18btTriangleCallback;
+	r3 = (r3 + 8)|0;
+	heap32[(r1+1)] = r0;
+	r0 = (r2 + 8)|0;
+	heap32[(r1+1)] = r3;
+	heap32[(r1)] = r0;
+	return;
+}
+
+function _ZN17DebugDrawcallbackD0Ev(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+var __label__ = 0;
+	i7 = sp + -8;var g0 = i7>>2; // save stack
+	r0 = _ZTV17DebugDrawcallback;
+	r1 = heap32[(fp)];
+	r2 = r1 >> 2;
+	r3 = (r0 + 8)|0;
+	r4 = _ZTV31btInternalTriangleIndexCallback;
+	r0 = (r0 + 32)|0;
+	heap32[(r2)] = r3;
+	r3 = _ZTV18btTriangleCallback;
+	r4 = (r4 + 8)|0;
+	heap32[(r2+1)] = r0;
+	r0 = (r3 + 8)|0;
+	heap32[(r2+1)] = r4;
+	heap32[(r2)] = r0;
+	heap32[(g0)] = r1;
+	_ZdlPv(i7);
+	return;
+}
+
+function _ZN17DebugDrawcallback15processTriangleEP9btVector3ii(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+	var r6;
+	var r7;
+	var r8;
+	var r9;
+	var r10;
+	var f0;
+	var f1;
+	var f2;
+	var f3;
+	var f4;
+	var f5;
+	var f6;
+	var f7;
+	var f8;
+	var f9;
+	var f10;
+	var f11;
+	var f12;
+	var f13;
+	var f14;
+	var f15;
+	var f16;
+	var f17;
+	var f18;
+	var f19;
+	var f20;
+	var f21;
+var __label__ = 0;
+	i7 = sp + -112;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = heap32[(fp+1)];
+	r2 = r0 >> 2;
+	r1 = r1 >> 2;
+	f0 = heapFloat[(r1)];
+	f1 = heapFloat[(r2+7)];
+	f2 = heapFloat[(r1+1)];
+	f3 = heapFloat[(r2+8)];
+	f4 = heapFloat[(r2+11)];
+	f5 = heapFloat[(r2+12)];
+	f6 = f1*f0;
+	f7 = f3*f2;
+	f8 = heapFloat[(r1+2)];
+	f9 = heapFloat[(r2+9)];
+	f10 = heapFloat[(r2+15)];
+	f11 = heapFloat[(r2+16)];
+	f12 = heapFloat[(r2+13)];
+	f13 = f4*f0;
+	f14 = f5*f2;
+	f6 = f6+f7;
+	f7 = f9*f8;
+	f15 = heapFloat[(r2+17)];
+	f0 = f10*f0;
+	f2 = f11*f2;
+	f13 = f13+f14;
+	f14 = f12*f8;
+	f6 = f6+f7;
+	f7 = heapFloat[(r2+19)];
+	f16 = heapFloat[(r2+21)];
+	f17 = heapFloat[(r2+20)];
+	r3 = sp + -32;
+	f13 = f13+f14;
+	f0 = f0+f2;
+	f2 = f15*f8;
+	f6 = f6+f7;
+	f0 = f0+f2;
+	r4 = r3 >> 2;
+	f2 = f13+f17;
+	heapFloat[(fp+-8)] = f6;
+	f0 = f0+f16;
+	heapFloat[(r4+1)] = f2;
+	heapFloat[(r4+2)] = f0;
+	heap32[(r4+3)] = 0;
+	f8 = heapFloat[(r1+4)];
+	f13 = heapFloat[(r1+5)];
+	f14 = heapFloat[(r1+6)];
+	f18 = f1*f8;
+	f19 = f3*f13;
+	f20 = f4*f8;
+	f21 = f5*f13;
+	f18 = f18+f19;
+	f19 = f9*f14;
+	f18 = f18+f19;
+	f8 = f10*f8;
+	f13 = f11*f13;
+	f19 = f20+f21;
+	f20 = f12*f14;
+	f18 = f18+f7;
+	r4 = sp + -48;
+	f19 = f19+f20;
+	f8 = f8+f13;
+	f13 = f15*f14;
+	f14 = f19+f17;
+	f8 = f8+f13;
+	r5 = r4 >> 2;
+	heapFloat[(fp+-12)] = f18;
+	f8 = f8+f16;
+	heapFloat[(r5+1)] = f14;
+	heapFloat[(r5+2)] = f8;
+	heap32[(r5+3)] = 0;
+	f13 = heapFloat[(r1+8)];
+	f19 = heapFloat[(r1+9)];
+	f20 = heapFloat[(r1+10)];
+	f1 = f1*f13;
+	f3 = f3*f19;
+	f4 = f4*f13;
+	f5 = f5*f19;
+	f1 = f1+f3;
+	f3 = f9*f20;
+	f1 = f1+f3;
+	f3 = f10*f13;
+	f9 = f11*f19;
+	f4 = f4+f5;
+	f5 = f12*f20;
+	r1 = sp + -64;
+	f4 = f4+f5;
+	f1 = f1+f7;
+	f3 = f3+f9;
+	f5 = f15*f20;
+	f3 = f3+f5;
+	f4 = f4+f17;
+	r5 = r1 >> 2;
+	heapFloat[(fp+-16)] = f1;
+	f5 = f6+f18;
+	f3 = f3+f16;
+	heapFloat[(r5+1)] = f4;
+	f7 = f2+f14;
+	heapFloat[(r5+2)] = f3;
+	f5 = f5+f1;
+	f9 =        0.3333333432674408;
+	r6 = sp + -80;
+	f10 = f0+f8;
+	f7 = f7+f4;
+	f8 = f8-f0;
+	f4 = f4-f2;
+	f11 = f18-f6;
+	f0 = f3-f0;
+	f2 = f14-f2;
+	f1 = f1-f6;
+	f5 = f5*f9;
+	heap32[(r5+3)] = 0;
+	f3 = f10+f3;
+	f6 = f2*f0;
+	f10 = f8*f4;
+	f8 = f8*f1;
+	f0 = f11*f0;
+	r5 = r6 >> 2;
+	f7 = f7*f9;
+	heapFloat[(fp+-20)] = f5;
+	f5 = f6-f10;
+	f0 = f8-f0;
+	f4 = f11*f4;
+	f1 = f2*f1;
+	f2 = f3*f9;
+	heapFloat[(r5+1)] = f7;
+	f1 = f4-f1;
+	heapFloat[(r5+2)] = f2;
+	f2 = f5*f5;
+	f3 = f0*f0;
+	heap32[(r5+3)] = 0;
+	f2 = f2+f3;
+	f3 = f1*f1;
+	f2 = f2+f3;
+	heapFloat[(g0)] = f2;
+	r7 = sp + -96;
+	sqrtf(i7);
+	r8 = r7 >> 2;
+	heap32[(fp+-24)] = 1065353216;
+	heap32[(r8+1)] = 1065353216;
+	heap32[(r8+2)] = 0;
+	heap32[(r8+3)] = 0;
+	r8 = heap32[(r2+2)];
+	r9 = r8 >> 2;
+	f3 =                         1;
+	r9 = heap32[(r9)];
+	f2 = f3/f_g0;
+	r9 = r9 >> 2;
+	r9 = heap32[(r9+2)];
+	f3 = f5*f2;
+	f4 = heapFloat[(fp+-20)];
+	f5 = heapFloat[(r5+2)];
+	f6 = heapFloat[(r5+1)];
+	r5 = sp + -16;
+	f0 = f0*f2;
+	f3 = f4+f3;
+	f1 = f1*f2;
+	r10 = r5 >> 2;
+	f0 = f6+f0;
+	heapFloat[(fp+-4)] = f3;
+	f1 = f5+f1;
+	heapFloat[(r10+1)] = f0;
+	heapFloat[(r10+2)] = f1;
+	heap32[(r10+3)] = 0;
+	heap32[(g0)] = r8;
+	heap32[(g0+1)] = r6;
+	heap32[(g0+2)] = r5;
+	heap32[(g0+3)] = r7;
+	__FUNCTION_TABLE__[(r9)>>2](i7);
+	r5 = heap32[(r2+2)];
+	r6 = r5 >> 2;
+	r6 = heap32[(r6)];
+	r6 = r6 >> 2;
+	r6 = heap32[(r6+2)];
+	r0 = (r0 + 12)|0;
+	heap32[(g0)] = r5;
+	heap32[(g0+1)] = r3;
+	heap32[(g0+2)] = r4;
+	heap32[(g0+3)] = r0;
+	__FUNCTION_TABLE__[(r6)>>2](i7);
+	r5 = heap32[(r2+2)];
+	r6 = r5 >> 2;
+	r6 = heap32[(r6)];
+	r6 = r6 >> 2;
+	r6 = heap32[(r6+2)];
+	heap32[(g0)] = r5;
+	heap32[(g0+1)] = r4;
+	heap32[(g0+2)] = r1;
+	heap32[(g0+3)] = r0;
+	__FUNCTION_TABLE__[(r6)>>2](i7);
+	r2 = heap32[(r2+2)];
+	r4 = r2 >> 2;
+	r4 = heap32[(r4)];
+	r4 = r4 >> 2;
+	r4 = heap32[(r4+2)];
+	heap32[(g0)] = r2;
+	heap32[(g0+1)] = r1;
+	heap32[(g0+2)] = r3;
+	heap32[(g0+3)] = r0;
+	__FUNCTION_TABLE__[(r4)>>2](i7);
+	return;
+}
+
+function _ZN17DebugDrawcallback28internalProcessTriangleIndexEP9btVector3ii(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+var __label__ = 0;
+	i7 = sp + -16;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = r0 >> 2;
+	r1 = heap32[(r1)];
+	r1 = r1 >> 2;
+	r1 = heap32[(r1+2)];
+	r2 = heap32[(fp+1)];
+	r3 = heap32[(fp+2)];
+	r4 = heap32[(fp+3)];
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r2;
+	heap32[(g0+2)] = r3;
+	heap32[(g0+3)] = r4;
+	__FUNCTION_TABLE__[(r1)>>2](i7);
+	return;
+}
+
+function _ZThn4_N17DebugDrawcallbackD1Ev(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+var __label__ = 0;
+	i7 = sp + 0;var g0 = i7>>2; // save stack
+	r0 = _ZTV17DebugDrawcallback;
+	r1 = heap32[(fp)];
+	r1 = r1 >> 2;
+	r2 = (r0 + 8)|0;
+	r3 = _ZTV31btInternalTriangleIndexCallback;
+	r0 = (r0 + 32)|0;
+	heap32[(r1+-1)] = r2;
+	r2 = _ZTV18btTriangleCallback;
+	r3 = (r3 + 8)|0;
+	heap32[(r1)] = r0;
+	r0 = (r2 + 8)|0;
+	heap32[(r1)] = r3;
+	heap32[(r1+-1)] = r0;
+	return;
+}
+
+function _ZThn4_N17DebugDrawcallbackD0Ev(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+var __label__ = 0;
+	i7 = sp + -8;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = _ZTV17DebugDrawcallback;
+	r2 = r0 >> 2;
+	r3 = (r1 + 8)|0;
+	r4 = _ZTV31btInternalTriangleIndexCallback;
+	r1 = (r1 + 32)|0;
+	heap32[(r2+-1)] = r3;
+	r3 = _ZTV18btTriangleCallback;
+	r4 = (r4 + 8)|0;
+	heap32[(r2)] = r1;
+	r1 = (r3 + 8)|0;
+	heap32[(r2)] = r4;
+	heap32[(r2+-1)] = r1;
+	r0 = (r0 + -4)|0;
+	heap32[(g0)] = r0;
+	_ZdlPv(i7);
+	return;
+}
+
+function _ZThn4_N17DebugDrawcallback28internalProcessTriangleIndexEP9btVector3ii(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+var __label__ = 0;
+	i7 = sp + -16;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = r0 >> 2;
+	r1 = heap32[(r1+-1)];
+	r1 = r1 >> 2;
+	r1 = heap32[(r1+2)];
+	r0 = (r0 + -4)|0;
+	r2 = heap32[(fp+1)];
+	r3 = heap32[(fp+2)];
+	r4 = heap32[(fp+3)];
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r2;
+	heap32[(g0+2)] = r3;
+	heap32[(g0+3)] = r4;
+	__FUNCTION_TABLE__[(r1)>>2](i7);
+	return;
+}
+
+function _ZN16btCollisionWorldD1Ev(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+var __label__ = 0;
+	i7 = sp + -8;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	heap32[(g0)] = r0;
+	_ZN16btCollisionWorldD2Ev(i7);
+	return;
+}
+
+function _ZN16btCollisionWorldD0Ev(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+	var r6;
+	var r7;
+var __label__ = 0;
+	i7 = sp + -16;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = _ZTV16btCollisionWorld;
+	r2 = r0 >> 2;
+	r1 = (r1 + 8)|0;
+	heap32[(r2)] = r1;
+	r1 = heap32[(r2+4)];
+	r3 = heap32[(r2+2)];
+	if(r3 >0) //_LBB219_2
+{
+	r3 = 0;
+_3: while(true){
+	r4 = r3 << 2;
+	r1 = (r1 + r4)|0;
+	r1 = r1 >> 2;
+	r1 = heap32[(r1)];
+	r1 = r1 >> 2;
+	r4 = heap32[(r1+47)];
+if(!(r4 ==0)) //_LBB219_5
+{
+	r5 = heap32[(r2+20)];
+	r6 = r5 >> 2;
+	r6 = heap32[(r6)];
+	r6 = r6 >> 2;
+	r6 = heap32[(r6+9)];
+	heap32[(g0)] = r5;
+	__FUNCTION_TABLE__[(r6)>>2](i7);
+	r6 = r_g0 >> 2;
+	r6 = heap32[(r6)];
+	r6 = r6 >> 2;
+	r6 = heap32[(r6+10)];
+	r7 = heap32[(r2+6)];
+	heap32[(g0)] = r_g0;
+	heap32[(g0+1)] = r4;
+	heap32[(g0+2)] = r7;
+	__FUNCTION_TABLE__[(r6)>>2](i7);
+	r5 = heap32[(r2+20)];
+	r6 = r5 >> 2;
+	r6 = heap32[(r6)];
+	r6 = r6 >> 2;
+	r6 = heap32[(r6+3)];
+	r7 = heap32[(r2+6)];
+	heap32[(g0)] = r5;
+	heap32[(g0+1)] = r4;
+	heap32[(g0+2)] = r7;
+	__FUNCTION_TABLE__[(r6)>>2](i7);
+	heap32[(r1+47)] = 0;
+}
+	r3 = (r3 + 1)|0;
+	r1 = heap32[(r2+4)];
+	r4 = heap32[(r2+2)];
+	if(r4 >r3) //_LBB219_3
+{
+continue _3;
+}
+else{
+break _3;
+}
+}
+}
+if(!(r1 ==0)) //_LBB219_10
+{
+	r3 = heapU8[r0+20];
+if(!(r3 ==0)) //_LBB219_9
+{
+	r3 = gNumAlignedFree;
+	r3 = r3 >> 2;
+	r4 = heap32[(r3)];
+	r4 = (r4 + 1)|0;
+	r1 = r1 >> 2;
+	heap32[(r3)] = r4;
+	r1 = heap32[(r1+-1)];
+	heap32[(g0)] = r1;
+	free(i7);
+}
+	heap32[(r2+4)] = 0;
+}
+	r1 = 1;
+	heap8[r0+20] = r1;
+	heap32[(r2+4)] = 0;
+	heap32[(r2+2)] = 0;
+	heap32[(r2+3)] = 0;
+	heap32[(g0)] = r0;
+	_ZdlPv(i7);
+	return;
+}
+
+function _ZN16btCollisionWorld11updateAabbsEv(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+	var r6;
+	var r7;
+	var r8;
+	var r9;
+	var f0;
+	var f1;
+	var f2;
+	var f3;
+	var f4;
+	var f5;
+	var f6;
+var __label__ = 0;
+	i7 = sp + -64;var g0 = i7>>2; // save stack
+	r0 = _2E_str1998;
+	r1 = heap32[(fp)];
+	heap32[(g0)] = r0;
+	r0 = r1 >> 2;
+	_ZN15CProfileManager13Start_ProfileEPKc(i7);
+	r2 = heap32[(r0+2)];
+if(!(r2 <1)) //_LBB220_14
+{
+	r2 = 0;
+_3: while(true){
+	r3 = heap32[(r0+4)];
+	r4 = r2 << 2;
+	r3 = (r3 + r4)|0;
+	r3 = r3 >> 2;
+	r2 = (r2 + 1)|0;
+	r3 = heap32[(r3)];
+	r4 = heapU8[r1+88];
+	if(r4 !=0) //_LBB220_5
+{
+__label__ = 5;
+}
+else{
+	r4 = r3 >> 2;
+	r4 = heap32[(r4+54)];
+	if(r4 ==2) //_LBB220_13
+{
+__label__ = 13;
+}
+else{
+	if(r4 ==5) //_LBB220_13
+{
+__label__ = 13;
+}
+else{
+__label__ = 5;
+}
+}
+}
+_8: do {
+if (__label__ == 5){
+	r4 = r3 >> 2;
+	r5 = heap32[(r4+48)];
+	r6 = r5 >> 2;
+	r6 = heap32[(r6)];
+	r6 = r6 >> 2;
+	r6 = heap32[(r6+2)];
+	r7 = sp + -40;
+	r8 = sp + -24;
+	r9 = (r3 + 4)|0;
+	heap32[(g0)] = r5;
+	heap32[(g0+1)] = r9;
+	heap32[(g0+2)] = r8;
+	heap32[(g0+3)] = r7;
+	__FUNCTION_TABLE__[(r6)>>2](i7);
+	f0 =     -0.019999999552965164;
+	f1 = heapFloat[(fp+-6)];
+	f1 = f1+f0;
+	r5 = r8 >> 2;
+	heapFloat[(fp+-6)] = f1;
+	f2 = heapFloat[(r5+1)];
+	f2 = f2+f0;
+	heapFloat[(r5+1)] = f2;
+	f3 = heapFloat[(r5+2)];
+	f0 = f3+f0;
+	heapFloat[(r5+2)] = f0;
+	f3 =      0.019999999552965164;
+	f4 = heapFloat[(fp+-10)];
+	f4 = f4+f3;
+	r5 = r7 >> 2;
+	heapFloat[(fp+-10)] = f4;
+	f5 = heapFloat[(r5+1)];
+	f5 = f5+f3;
+	heapFloat[(r5+1)] = f5;
+	f6 = heapFloat[(r5+2)];
+	f3 = f6+f3;
+	heapFloat[(r5+2)] = f3;
+	r5 = heap32[(r0+20)];
+	r3 = heapU8[r3+204];
+	r3 = r3 & 1;
+if(!(r3 != 0)) //_LBB220_10
+{
+	f1 = f4-f1;
+	f2 = f5-f2;
+	f0 = f3-f0;
+	f1 = f1*f1;
+	f2 = f2*f2;
+	f1 = f1+f2;
+	f0 = f0*f0;
+	f0 = f1+f0;
+	f1 =              999999995904;
+if(!(f0 <f1)) //_LBB220_10
+{
+	r5 = heap32[(r4+54)];
+	r5 = (r5 + -4)|0;
+if(!(uint(r5) <uint(2))) //_LBB220_9
+{
+	heap32[(r4+54)] = 5;
+}
+	r4 = _ZZN16btCollisionWorld16updateSingleAabbEP17btCollisionObjectE8reportMe_2E_b;
+	r5 = heapU8[r4];
+	if(r5 != 0) //_LBB220_13
+{
+break _8;
+}
+else{
+	r3 = heap32[(r0+21)];
+	if(r3 ==0) //_LBB220_13
+{
+break _8;
+}
+else{
+	r5 = 1;
+	r6 = r3 >> 2;
+	heap8[r4] = r5;
+	r4 = heap32[(r6)];
+	r4 = r4 >> 2;
+	r4 = heap32[(r4+9)];
+	r5 = _2E_str1594;
+	heap32[(g0)] = r3;
+	heap32[(g0+1)] = r5;
+	__FUNCTION_TABLE__[(r4)>>2](i7);
+	r3 = heap32[(r0+21)];
+	r4 = r3 >> 2;
+	r4 = heap32[(r4)];
+	r4 = r4 >> 2;
+	r4 = heap32[(r4+9)];
+	r5 = _2E_str1695;
+	heap32[(g0)] = r3;
+	heap32[(g0+1)] = r5;
+	__FUNCTION_TABLE__[(r4)>>2](i7);
+	r3 = heap32[(r0+21)];
+	r4 = r3 >> 2;
+	r4 = heap32[(r4)];
+	r4 = r4 >> 2;
+	r4 = heap32[(r4+9)];
+	r5 = _2E_str1796;
+	heap32[(g0)] = r3;
+	heap32[(g0+1)] = r5;
+	__FUNCTION_TABLE__[(r4)>>2](i7);
+	r3 = heap32[(r0+21)];
+	r4 = r3 >> 2;
+	r4 = heap32[(r4)];
+	r4 = r4 >> 2;
+	r4 = heap32[(r4+9)];
+	r5 = _2E_str1897;
+	heap32[(g0)] = r3;
+	heap32[(g0+1)] = r5;
+	__FUNCTION_TABLE__[(r4)>>2](i7);
+break _8;
+}
+}
+}
+}
+	r3 = r5 >> 2;
+	r3 = heap32[(r3)];
+	r3 = r3 >> 2;
+	r3 = heap32[(r3+4)];
+	r6 = heap32[(r0+6)];
+	r4 = heap32[(r4+47)];
+	heap32[(g0)] = r5;
+	heap32[(g0+1)] = r4;
+	heap32[(g0+2)] = r8;
+	heap32[(g0+3)] = r7;
+	heap32[(g0+4)] = r6;
+	__FUNCTION_TABLE__[(r3)>>2](i7);
+}
+} while(0);
+	r3 = heap32[(r0+2)];
+	if(r3 >r2) //_LBB220_2
+{
+continue _3;
+}
+else{
+break _3;
+}
+}
+}
+	r0 = _ZN15CProfileManager11CurrentNodeE;
+	r0 = r0 >> 2;
+	r1 = heap32[(r0)];
+	r2 = r1 >> 2;
+	r3 = heap32[(r2+4)];
+	r3 = (r3 + -1)|0;
+	heap32[(r2+4)] = r3;
+_21: do {
+if(!(r3 !=0)) //_LBB220_20
+{
+	r3 = heap32[(r2+1)];
+	if(r3 !=0) //_LBB220_17
+{
+	r1 = sp + -8;
+	heap32[(g0)] = r1;
+	heap32[(g0+1)] = 0;
+	r3 = _ZL13gProfileClock_2E_0;
+	gettimeofday(i7);
+	r3 = r3 >> 2;
+	r3 = heap32[(r3)];
+	r3 = r3 >> 2;
+	r1 = r1 >> 2;
+	r4 = heap32[(fp+-2)];
+	r5 = heap32[(r3)];
+	r4 = (r4 - r5)|0;
+	r1 = heap32[(r1+1)];
+	r3 = heap32[(r3+1)];
+	r1 = (r1 - r3)|0;
+	r3 = (r4 * 1000000)|0;
+	r1 = (r1 + r3)|0;
+	r3 = heap32[(r2+3)];
+	r1 = (r1 - r3)|0;
+	f0 = uint(r1); //fuitos r1, f0
+	f1 =                      1000;
+	f2 = heapFloat[(r2+2)];
+	f0 = f0/f1;
+	f0 = f2+f0;
+	heapFloat[(r2+2)] = f0;
+	r1 = heap32[(r2+4)];
+	if(r1 !=0) //_LBB220_20
+{
+break _21;
+}
+else{
+	r1 = heap32[(r0)];
+}
+}
+	r1 = r1 >> 2;
+	r1 = heap32[(r1+5)];
+	heap32[(r0)] = r1;
+}
+} while(0);
+	return;
+}
+
+function _ZN16btCollisionWorld14debugDrawWorldEv(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+	var r6;
+	var r7;
+	var r8;
+	var r9;
+	var r10;
+	var r11;
+	var r12;
+	var r13;
+	var r14;
+	var r15;
+	var f0;
+var __label__ = 0;
+	i7 = sp + -104;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = r0 >> 2;
+	r2 = heap32[(r1)];
+	r2 = r2 >> 2;
+	r2 = heap32[(r2+4)];
+	heap32[(g0)] = r0;
+	__FUNCTION_TABLE__[(r2)>>2](i7);
+	r2 = r_g0;
+_1: do {
+if(!(r2 ==0)) //_LBB221_10
+{
+	r2 = heap32[(r1)];
+	r2 = r2 >> 2;
+	r2 = heap32[(r2+4)];
+	heap32[(g0)] = r0;
+	__FUNCTION_TABLE__[(r2)>>2](i7);
+	r3 = r_g0 >> 2;
+	r3 = heap32[(r3)];
+	r3 = r3 >> 2;
+	r3 = heap32[(r3+12)];
+	heap32[(g0)] = r_g0;
+	__FUNCTION_TABLE__[(r3)>>2](i7);
+	r2 = r_g0 & 8;
+if(!(r2 ==0)) //_LBB221_10
+{
+	r2 = heap32[(r1+6)];
+	r3 = r2 >> 2;
+	r3 = heap32[(r3)];
+	r3 = r3 >> 2;
+	r3 = heap32[(r3+9)];
+	heap32[(g0)] = r2;
+	__FUNCTION_TABLE__[(r3)>>2](i7);
+	r2 = r_g0;
+	r3 = sp + -16;
+	r4 = r3 >> 2;
+	heap32[(fp+-4)] = 0;
+	heap32[(r4+1)] = 0;
+	r5 = 0;
+	heap32[(r4+2)] = 0;
+	heap32[(r4+3)] = 0;
+_4: while(true){
+	if(r5 <r2) //_LBB221_3
+{
+	r4 = heap32[(r1+6)];
+	r6 = r4 >> 2;
+	r6 = heap32[(r6)];
+	r6 = r6 >> 2;
+	r6 = heap32[(r6+10)];
+	heap32[(g0)] = r4;
+	heap32[(g0+1)] = r5;
+	__FUNCTION_TABLE__[(r6)>>2](i7);
+	r4 = r_g0;
+	r6 = r4 >> 2;
+	r6 = heap32[(r6+279)];
+	r7 = 36;
+	r8 = 68;
+	r9 = 0;
+_7: while(true){
+	if(r9 <r6) //_LBB221_4
+{
+	r10 = r4 >> 2;
+	r10 = heap32[(r10+279)];
+	if(r10 >r9) //_LBB221_6
+{
+	r10 = (r9 * 69)|0;
+	r11 = (r4 + r7)|0;
+	r12 = (r4 + r8)|0;
+	r13 = heap32[(r1)];
+	r13 = r13 >> 2;
+	r13 = heap32[(r13+4)];
+	heap32[(g0)] = r0;
+	__FUNCTION_TABLE__[(r13)>>2](i7);
+	r14 = r_g0 >> 2;
+	r15 = r10 << 2;
+	r10 = r10 << 2;
+	r14 = heap32[(r14)];
+	r15 = (r4 + r15)|0;
+	r10 = (r4 + r10)|0;
+	r14 = r14 >> 2;
+	r15 = r15 >> 2;
+	r10 = r10 >> 2;
+	r14 = heap32[(r14+8)];
+	r15 = heap32[(r15+37)];
+	f0 = heapFloat[(r10+21)];
+	heap32[(g0)] = r_g0;
+	heap32[(g0+1)] = r11;
+	heap32[(g0+2)] = r12;
+	heapFloat[(g0+3)] = f0;
+	heap32[(g0+4)] = r15;
+	heap32[(g0+5)] = r3;
+	r9 = (r9 + 1)|0;
+	r8 = (r8 + 276)|0;
+	r7 = (r7 + 276)|0;
+	__FUNCTION_TABLE__[(r14)>>2](i7);
+}
+else{
+break _4;
+}
+}
+else{
+break _7;
+}
+}
+	r5 = (r5 + 1)|0;
+}
+else{
+break _1;
+}
+}
+	r0 = _2E_str382;
+	r1 = _2E_str483;
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r1;
+	heap32[(g0+2)] = 122;
+	_assert(i7);
+}
+}
+} while(0);
+	r2 = heap32[(r1)];
+	r2 = r2 >> 2;
+	r2 = heap32[(r2+4)];
+	heap32[(g0)] = r0;
+	__FUNCTION_TABLE__[(r2)>>2](i7);
+	r2 = r_g0;
+_14: do {
+if(!(r2 ==0)) //_LBB221_13
+{
+	r2 = heap32[(r1)];
+	r2 = r2 >> 2;
+	r2 = heap32[(r2+4)];
+	heap32[(g0)] = r0;
+	__FUNCTION_TABLE__[(r2)>>2](i7);
+	r3 = r_g0 >> 2;
+	r3 = heap32[(r3)];
+	r3 = r3 >> 2;
+	r3 = heap32[(r3+12)];
+	heap32[(g0)] = r_g0;
+	__FUNCTION_TABLE__[(r3)>>2](i7);
+	r2 = r_g0 & 3;
+if(!(r2 ==0)) //_LBB221_13
+{
+	r2 = heap32[(r1+2)];
+	if(r2 >0) //_LBB221_14
+{
+	r2 = 0;
+_18: while(true){
+	r3 = heap32[(r1+4)];
+	r4 = r2 << 2;
+	r3 = (r3 + r4)|0;
+	r3 = r3 >> 2;
+	r3 = heap32[(r3)];
+	r4 = heapU8[r3+204];
+	r4 = r4 & 32;
+if(!(r4 !=0)) //_LBB221_34
+{
+	r4 = heap32[(r1)];
+	r4 = r4 >> 2;
+	r4 = heap32[(r4+4)];
+	heap32[(g0)] = r0;
+	__FUNCTION_TABLE__[(r4)>>2](i7);
+	r4 = r_g0;
+if(!(r4 ==0)) //_LBB221_31
+{
+	r4 = heap32[(r1)];
+	r4 = r4 >> 2;
+	r4 = heap32[(r4+4)];
+	heap32[(g0)] = r0;
+	__FUNCTION_TABLE__[(r4)>>2](i7);
+	r5 = r_g0 >> 2;
+	r5 = heap32[(r5)];
+	r5 = r5 >> 2;
+	r5 = heap32[(r5+12)];
+	heap32[(g0)] = r_g0;
+	__FUNCTION_TABLE__[(r5)>>2](i7);
+	r4 = r_g0 & 1;
+if(!(r4 ==0)) //_LBB221_31
+{
+	r4 = sp + -32;
+	r5 = r4 >> 2;
+	heap32[(fp+-8)] = 1065353216;
+	heap32[(r5+1)] = 1065353216;
+	heap32[(r5+2)] = 1065353216;
+	r6 = r3 >> 2;
+	heap32[(r5+3)] = 0;
+	r7 = heap32[(r6+54)];
+_25: do {
+	if(r7 >2) //_LBB221_21
+{
+	if(r7 ==3) //_LBB221_26
+{
+	heap32[(fp+-8)] = 0;
+	heap32[(r5+1)] = 1065353216;
+	heap32[(r5+2)] = 1065353216;
+	heap32[(r5+3)] = 0;
+__label__ = 30;
+break _25;
+}
+else{
+	if(r7 ==4) //_LBB221_27
+{
+	heap32[(fp+-8)] = 1065353216;
+	heap32[(r5+1)] = 0;
+	heap32[(r5+2)] = 0;
+	heap32[(r5+3)] = 0;
+__label__ = 30;
+break _25;
+}
+else{
+	if(r7 ==5) //_LBB221_28
+{
+	heap32[(fp+-8)] = 1065353216;
+	heap32[(r5+1)] = 1065353216;
+	heap32[(r5+2)] = 0;
+	heap32[(r5+3)] = 0;
+__label__ = 30;
+break _25;
+}
+else{
+__label__ = 29;
+break _25;
+}
+}
+}
+}
+else{
+	if(r7 ==1) //_LBB221_24
+{
+	heap32[(fp+-8)] = 1065353216;
+	heap32[(r5+1)] = 1065353216;
+	heap32[(r5+2)] = 1065353216;
+	heap32[(r5+3)] = 0;
+__label__ = 30;
+}
+else{
+	if(r7 ==2) //_LBB221_25
+{
+	heap32[(fp+-8)] = 0;
+	heap32[(r5+1)] = 1065353216;
+	heap32[(r5+2)] = 0;
+	heap32[(r5+3)] = 0;
+__label__ = 30;
+}
+else{
+__label__ = 29;
+}
+}
+}
+} while(0);
+if (__label__ == 29){
+	heap32[(fp+-8)] = 1065353216;
+	heap32[(r5+1)] = 0;
+	heap32[(r5+2)] = 0;
+	heap32[(r5+3)] = 0;
+}
+	r5 = heap32[(r1)];
+	r5 = r5 >> 2;
+	r5 = heap32[(r5+6)];
+	r6 = heap32[(r6+48)];
+	r7 = (r3 + 4)|0;
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r7;
+	heap32[(g0+2)] = r6;
+	heap32[(g0+3)] = r4;
+	__FUNCTION_TABLE__[(r5)>>2](i7);
+}
+}
+	r4 = heap32[(r1+21)];
+if(!(r4 ==0)) //_LBB221_34
+{
+	r5 = r4 >> 2;
+	r5 = heap32[(r5)];
+	r5 = r5 >> 2;
+	r5 = heap32[(r5+12)];
+	heap32[(g0)] = r4;
+	__FUNCTION_TABLE__[(r5)>>2](i7);
+	r4 = r_g0 & 2;
+if(!(r4 ==0)) //_LBB221_34
+{
+	r4 = sp + -80;
+	r5 = r4 >> 2;
+	heap32[(fp+-20)] = 1065353216;
+	heap32[(r5+1)] = 0;
+	heap32[(r5+2)] = 0;
+	r6 = r3 >> 2;
+	heap32[(r5+3)] = 0;
+	r5 = heap32[(r6+48)];
+	r6 = r5 >> 2;
+	r6 = heap32[(r6)];
+	r6 = r6 >> 2;
+	r6 = heap32[(r6+2)];
+	r3 = (r3 + 4)|0;
+	r7 = sp + -48;
+	r8 = sp + -64;
+	heap32[(g0)] = r5;
+	heap32[(g0+1)] = r3;
+	heap32[(g0+2)] = r7;
+	heap32[(g0+3)] = r8;
+	__FUNCTION_TABLE__[(r6)>>2](i7);
+	r3 = heap32[(r1+21)];
+	r5 = r3 >> 2;
+	r5 = heap32[(r5)];
+	r5 = r5 >> 2;
+	r5 = heap32[(r5+13)];
+	heap32[(g0)] = r3;
+	heap32[(g0+1)] = r7;
+	heap32[(g0+2)] = r8;
+	heap32[(g0+3)] = r4;
+	__FUNCTION_TABLE__[(r5)>>2](i7);
+}
+}
+}
+	r2 = (r2 + 1)|0;
+	r3 = heap32[(r1+2)];
+	if(r3 >r2) //_LBB221_15
+{
+continue _18;
+}
+else{
+break _14;
+}
+}
+}
+}
+}
+} while(0);
+	return;
+}
+
+function _ZN16btCollisionWorld15debugDrawObjectERK11btTransformPK16btCollisionShapeRK9btVector3(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+	var r6;
+	var r7;
+	var r8;
+	var r9;
+	var r10;
+	var r11;
+	var r12;
+	var r13;
+	var r14;
+	var r15;
+	var f0;
+	var f1;
+	var f2;
+	var f3;
+	var f4;
+	var f5;
+	var f6;
+	var f7;
+	var f8;
+	var f9;
+	var f10;
+	var f11;
+	var f12;
+	var f13;
+	var f14;
+	var f15;
+	var f16;
+	var f17;
+	var f18;
+	var f19;
+	var f20;
+	var f21;
+	var f22;
+	var f23;
+	var f24;
+	var f25;
+	var f26;
+	var f27;
+	var f28;
+	var f29;
+var __label__ = 0;
+	i7 = sp + -1376;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = r0 >> 2;
+	r2 = heap32[(r1)];
+	r2 = r2 >> 2;
+	r2 = heap32[(r2+4)];
+	heap32[(g0)] = r0;
+	__FUNCTION_TABLE__[(r2)>>2](i7);
+	r3 = r_g0 >> 2;
+	r3 = heap32[(r3)];
+	r3 = r3 >> 2;
+	r3 = heap32[(r3+14)];
+	r4 = heap32[(fp+1)];
+	heap32[(g0)] = r_g0;
+	heap32[(g0+1)] = r4;
+	heap32[(g0+2)] = 1065353216;
+	r2 = heap32[(fp+2)];
+	r5 = r2 >> 2;
+	__FUNCTION_TABLE__[(r3)>>2](i7);
+	r3 = heap32[(r5+1)];
+	r6 = heap32[(fp+3)];
+_1: do {
+	if(r3 >10) //_LBB222_6
+{
+	if(r3 >27) //_LBB222_9
+{
+	if(r3 ==28) //_LBB222_23
+{
+	f0 = heapFloat[(r5+14)];
+	f1 = heapFloat[(r5+13)];
+	f2 = heapFloat[(r5+16)];
+	f3 = heapFloat[(r5+12)];
+	f4 = f0*f2;
+	f5 = f1*f2;
+	f2 = f3*f2;
+	f6 =                         0;
+	if(f0 <f6) //_LBB222_25
+{
+	f7 = -f0;
+}
+else{
+	f7 = f0;
+}
+	f8 =       0.70710676908493042;
+	if(f7 <=f8) //_LBB222_28
+{
+	f0 = f3*f3;
+	f1 = f1*f1;
+	f0 = f0+f1;
+	heapFloat[(g0)] = f0;
+	sqrtf(i7);
+	f3 =                         1;
+	f7 = heapFloat[(r5+13)];
+	f9 = heapFloat[(r5+14)];
+	f10 = f3/f_g0;
+	f1 = heapFloat[(r5+12)];
+	f3 = -f7;
+	f8 = f1*f10;
+	f1 = -f9;
+	f11 = f10*f3;
+	f12 =                       100;
+	f1 = f8*f1;
+	f3 = f9*f11;
+	f7 = f0*f10;
+	f0 = f11*f12;
+}
+else{
+	f1 = f1*f1;
+	f3 = f0*f0;
+	f1 = f1+f3;
+	heapFloat[(g0)] = f1;
+	sqrtf(i7);
+	f6 = heapFloat[(r5+14)];
+	f0 =                         1;
+	f7 = heapFloat[(r5+12)];
+	f3 = f0/f_g0;
+	f6 = -f6;
+	f0 = heapFloat[(r5+13)];
+	f8 = f3*f6;
+	f6 = -f7;
+	f0 = f0*f3;
+	f9 =                       100;
+	f1 = f1*f3;
+	f3 = f0*f6;
+	f7 = f7*f8;
+	f6 = f0*f9;
+	f0 =                         0;
+}
+	r2 = heap32[(r1)];
+	r2 = r2 >> 2;
+	r2 = heap32[(r2+4)];
+	heap32[(g0)] = r0;
+	f9 =                       100;
+	__FUNCTION_TABLE__[(r2)>>2](i7);
+	r3 = r4 >> 2;
+	f8 = f8*f9;
+	r4 = r_g0 >> 2;
+	f10 = f2-f0;
+	f11 = heapFloat[(r3)];
+	f12 = f5-f8;
+	f13 = heapFloat[(r3+1)];
+	r4 = heap32[(r4)];
+	f14 = heapFloat[(r3+4)];
+	f15 = heapFloat[(r3+5)];
+	f16 = f11*f10;
+	f17 = f13*f12;
+	f18 = f4-f6;
+	f19 = heapFloat[(r3+2)];
+	r4 = r4 >> 2;
+	f20 = heapFloat[(r3+8)];
+	f21 = heapFloat[(r3+9)];
+	f22 = heapFloat[(r3+6)];
+	f23 = f14*f10;
+	f24 = f15*f12;
+	f16 = f16+f17;
+	f17 = f19*f18;
+	f25 = heapFloat[(r3+10)];
+	r4 = heap32[(r4+2)];
+	f10 = f20*f10;
+	f12 = f21*f12;
+	f23 = f23+f24;
+	f24 = f22*f18;
+	f16 = f16+f17;
+	f17 = heapFloat[(r3+12)];
+	f26 = heapFloat[(r3+14)];
+	f27 = heapFloat[(r3+13)];
+	f0 = f2+f0;
+	f8 = f5+f8;
+	r5 = sp + -64;
+	f23 = f23+f24;
+	f10 = f10+f12;
+	f12 = f25*f18;
+	f16 = f16+f17;
+	f6 = f4+f6;
+	f10 = f10+f12;
+	f11 = f11*f0;
+	f12 = f13*f8;
+	r7 = r5 >> 2;
+	f13 = f23+f27;
+	heapFloat[(fp+-16)] = f16;
+	f14 = f14*f0;
+	f15 = f15*f8;
+	f11 = f11+f12;
+	f12 = f19*f6;
+	f10 = f10+f26;
+	heapFloat[(r7+1)] = f13;
+	f11 = f11+f12;
+	heapFloat[(r7+2)] = f10;
+	f0 = f20*f0;
+	f8 = f21*f8;
+	f10 = f14+f15;
+	f12 = f22*f6;
+	r8 = sp + -48;
+	f10 = f10+f12;
+	f0 = f0+f8;
+	f6 = f25*f6;
+	f8 = f11+f17;
+	heap32[(r7+3)] = 0;
+	f0 = f0+f6;
+	r7 = r8 >> 2;
+	f6 = f10+f27;
+	heapFloat[(fp+-12)] = f8;
+	f0 = f0+f26;
+	heapFloat[(r7+1)] = f6;
+	heapFloat[(r7+2)] = f0;
+	heap32[(r7+3)] = 0;
+	heap32[(g0)] = r_g0;
+	heap32[(g0+1)] = r8;
+	heap32[(g0+2)] = r5;
+	heap32[(g0+3)] = r6;
+	__FUNCTION_TABLE__[(r4)>>2](i7);
+	r1 = heap32[(r1)];
+	r1 = r1 >> 2;
+	r1 = heap32[(r1+4)];
+	heap32[(g0)] = r0;
+	__FUNCTION_TABLE__[(r1)>>2](i7);
+	f0 = f1*f9;
+	f1 = f3*f9;
+	f3 = f7*f9;
+	r1 = r_g0 >> 2;
+	f6 = f2-f0;
+	f7 = heapFloat[(r3)];
+	f8 = f5-f1;
+	f9 = heapFloat[(r3+1)];
+	r1 = heap32[(r1)];
+	f10 = heapFloat[(r3+4)];
+	f11 = heapFloat[(r3+5)];
+	f12 = f7*f6;
+	f13 = f9*f8;
+	f14 = f4-f3;
+	f15 = heapFloat[(r3+2)];
+	r1 = r1 >> 2;
+	f16 = heapFloat[(r3+8)];
+	f17 = heapFloat[(r3+9)];
+	f18 = heapFloat[(r3+6)];
+	f19 = f10*f6;
+	f20 = f11*f8;
+	f12 = f12+f13;
+	f13 = f15*f14;
+	f21 = heapFloat[(r3+10)];
+	r1 = heap32[(r1+2)];
+	f6 = f16*f6;
+	f8 = f17*f8;
+	f19 = f19+f20;
+	f20 = f18*f14;
+	f12 = f12+f13;
+	f13 = heapFloat[(r3+12)];
+	f22 = heapFloat[(r3+14)];
+	f23 = heapFloat[(r3+13)];
+	f0 = f2+f0;
+	f1 = f5+f1;
+	r2 = sp + -32;
+	f2 = f19+f20;
+	f5 = f6+f8;
+	f6 = f21*f14;
+	f8 = f12+f13;
+	f3 = f4+f3;
+	f4 = f5+f6;
+	f5 = f7*f0;
+	f6 = f9*f1;
+	r3 = r2 >> 2;
+	f2 = f2+f23;
+	heapFloat[(fp+-8)] = f8;
+	f7 = f10*f0;
+	f8 = f11*f1;
+	f5 = f5+f6;
+	f6 = f15*f3;
+	f4 = f4+f22;
+	heapFloat[(r3+1)] = f2;
+	f2 = f5+f6;
+	heapFloat[(r3+2)] = f4;
+	f0 = f16*f0;
+	f1 = f17*f1;
+	f4 = f7+f8;
+	f5 = f18*f3;
+	r4 = sp + -16;
+	f4 = f4+f5;
+	f0 = f0+f1;
+	f1 = f21*f3;
+	f2 = f2+f13;
+	heap32[(r3+3)] = 0;
+	f0 = f0+f1;
+	r3 = r4 >> 2;
+	f1 = f4+f23;
+	heapFloat[(fp+-4)] = f2;
+	f0 = f0+f22;
+	heapFloat[(r3+1)] = f1;
+	heapFloat[(r3+2)] = f0;
+	heap32[(r3+3)] = 0;
+	heap32[(g0)] = r_g0;
+	heap32[(g0+1)] = r4;
+__label__ = 30;
+break _1;
+}
+else{
+	if(r3 !=31) //_LBB222_32
+{
+__label__ = 32;
+break _1;
+}
+else{
+	r2 = heap32[(r5+4)];
+	r3 = (r2 + -1)|0;
+	if(r3 <0) //_LBB222_42
+{
+__label__ = 40;
+break _1;
+}
+else{
+	r3 = 1;
+	r2 = (r3 - r2)|0;
+_18: while(true){
+	r3 = r2;
+	r2 = (r3 * -20)|0;
+	r7 = heap32[(r5+6)];
+	r2 = r2 << 2;
+	r2 = (r7 + r2)|0;
+	r2 = r2 >> 2;
+	r7 = r4 >> 2;
+	r8 = heap32[(r1)];
+	f0 = heapFloat[(r2)];
+	f1 = heapFloat[(r7)];
+	f2 = heapFloat[(r2+4)];
+	f3 = heapFloat[(r7+1)];
+	r8 = r8 >> 2;
+	f4 = heapFloat[(r2+1)];
+	f5 = heapFloat[(r2+5)];
+	f6 = f0*f1;
+	f7 = f2*f3;
+	f8 = heapFloat[(r2+8)];
+	f9 = heapFloat[(r7+2)];
+	f10 = heapFloat[(r7+8)];
+	f11 = heapFloat[(r2+2)];
+	f12 = heapFloat[(r7+4)];
+	f13 = heapFloat[(r2+12)];
+	f14 = heapFloat[(r7+9)];
+	f15 = heapFloat[(r2+6)];
+	f16 = heapFloat[(r7+5)];
+	f17 = heapFloat[(r2+13)];
+	f18 = heapFloat[(r2+9)];
+	f19 = heapFloat[(r7+10)];
+	f20 = heapFloat[(r2+10)];
+	f21 = heapFloat[(r7+6)];
+	f22 = heapFloat[(r2+14)];
+	r8 = heap32[(r8+6)];
+	f23 = f4*f1;
+	f24 = f5*f3;
+	f6 = f6+f7;
+	f7 = f8*f9;
+	r2 = heap32[(r2+16)];
+	f25 = heapFloat[(r7+14)];
+	f26 = heapFloat[(r7+13)];
+	f27 = heapFloat[(r7+12)];
+	r7 = sp + -688;
+	f28 = f11*f1;
+	f29 = f15*f3;
+	f23 = f23+f24;
+	f24 = f18*f9;
+	f6 = f6+f7;
+	r9 = r7 >> 2;
+	f7 = f28+f29;
+	f28 = f20*f9;
+	f23 = f23+f24;
+	heapFloat[(fp+-172)] = f6;
+	f6 = f0*f12;
+	f24 = f2*f16;
+	f7 = f7+f28;
+	heapFloat[(r9+1)] = f23;
+	heapFloat[(r9+2)] = f7;
+	f7 = f4*f12;
+	f23 = f5*f16;
+	f6 = f6+f24;
+	f24 = f8*f21;
+	f28 = f11*f12;
+	f29 = f15*f16;
+	f7 = f7+f23;
+	f23 = f18*f21;
+	f6 = f6+f24;
+	heap32[(r9+3)] = 0;
+	f24 = f28+f29;
+	f28 = f20*f21;
+	f7 = f7+f23;
+	heapFloat[(r9+4)] = f6;
+	f0 = f0*f10;
+	f2 = f2*f14;
+	f6 = f24+f28;
+	heapFloat[(r9+5)] = f7;
+	heapFloat[(r9+6)] = f6;
+	f4 = f4*f10;
+	f5 = f5*f14;
+	f0 = f0+f2;
+	f2 = f8*f19;
+	f6 = f11*f10;
+	f7 = f15*f14;
+	f4 = f4+f5;
+	f5 = f18*f19;
+	f0 = f0+f2;
+	heap32[(r9+7)] = 0;
+	f1 = f1*f13;
+	f2 = f3*f17;
+	f3 = f6+f7;
+	f6 = f20*f19;
+	f4 = f4+f5;
+	heapFloat[(r9+8)] = f0;
+	f0 = f12*f13;
+	f5 = f16*f17;
+	f1 = f1+f2;
+	f2 = f9*f22;
+	f3 = f3+f6;
+	heapFloat[(r9+9)] = f4;
+	f1 = f1+f2;
+	heapFloat[(r9+10)] = f3;
+	f2 = f10*f13;
+	f3 = f14*f17;
+	f0 = f0+f5;
+	f4 = f21*f22;
+	f0 = f0+f4;
+	f2 = f2+f3;
+	f3 = f19*f22;
+	f1 = f1+f27;
+	heap32[(r9+11)] = 0;
+	f2 = f2+f3;
+	f0 = f0+f26;
+	heapFloat[(r9+12)] = f1;
+	f1 = f2+f25;
+	heapFloat[(r9+13)] = f0;
+	heapFloat[(r9+14)] = f1;
+	heap32[(r9+15)] = 0;
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r7;
+	heap32[(g0+2)] = r2;
+	heap32[(g0+3)] = r6;
+	r2 = (r3 + 1)|0;
+	__FUNCTION_TABLE__[(r8)>>2](i7);
+	if(r3 ==0) //_LBB222_42
+{
+__label__ = 40;
+break _1;
+}
+else{
+continue _18;
+}
+}
+}
+}
+}
+}
+else{
+	if(r3 ==11) //_LBB222_20
+{
+	r2 = r4 >> 2;
+	r3 = heap32[(r5+17)];
+	f0 = heapFloat[(r5+14)];
+	f1 = heapFloat[(r5+15)];
+	f2 = heapFloat[(r2+12)];
+	f3 = heapFloat[(r2+13)];
+	f4 = heapFloat[(r2+14)];
+	r4 = sp + -880;
+	r5 = r4 >> 2;
+	heap32[(fp+-220)] = 0;
+	heap32[(r5+1)] = 0;
+	r7 = r3 << 2;
+	r4 = (r4 + r7)|0;
+	f5 =                       0.5;
+	heap32[(r5+2)] = 0;
+	r4 = r4 >> 2;
+	f1 = f1*f5;
+	heap32[(r5+3)] = 0;
+	r8 = sp + -896;
+	heapFloat[(r4)] = f1;
+	r4 = (r3 + 1)|0;
+	r4 = (r4 % 3)|0;
+	r9 = r8 >> 2;
+	heap32[(fp+-224)] = 0;
+	heap32[(r9+1)] = 0;
+	r4 = r4 << 2;
+	r8 = (r8 + r4)|0;
+	heap32[(r9+2)] = 0;
+	r8 = r8 >> 2;
+	heap32[(r9+3)] = 0;
+	r3 = (r3 + 2)|0;
+	r10 = sp + -912;
+	heapFloat[(r8)] = f0;
+	r3 = (r3 % 3)|0;
+	r8 = r10 >> 2;
+	heap32[(fp+-228)] = 0;
+	r3 = r3 << 2;
+	heap32[(r8+1)] = 0;
+	r3 = (r10 + r3)|0;
+	heap32[(r8+2)] = 0;
+	r3 = r3 >> 2;
+	heap32[(r8+3)] = 0;
+	heapFloat[(r3)] = f0;
+	r3 = heap32[(r1)];
+	r3 = r3 >> 2;
+	r3 = heap32[(r3+4)];
+	heap32[(g0)] = r0;
+	__FUNCTION_TABLE__[(r3)>>2](i7);
+	f1 = heapFloat[(r5+1)];
+	f5 = heapFloat[(fp+-220)];
+	f6 = heapFloat[(r9+1)];
+	f7 = heapFloat[(fp+-224)];
+	r10 = r_g0 >> 2;
+	f8 = heapFloat[(r5+2)];
+	f9 = heapFloat[(r9+2)];
+	f10 = heapFloat[(r2)];
+	f11 = f7-f5;
+	f12 = heapFloat[(r2+1)];
+	f13 = f6-f1;
+	f14 = heapFloat[(r2+4)];
+	f15 = heapFloat[(r2+5)];
+	r5 = heap32[(r10)];
+	f16 = heapFloat[(r2+2)];
+	f17 = f9-f8;
+	f18 = f10*f11;
+	f19 = f12*f13;
+	f20 = heapFloat[(r2+8)];
+	f21 = heapFloat[(r2+9)];
+	f22 = heapFloat[(r2+6)];
+	r5 = r5 >> 2;
+	f23 = f14*f11;
+	f24 = f15*f13;
+	f18 = f18+f19;
+	f19 = f16*f17;
+	f25 = heapFloat[(r2+10)];
+	r5 = heap32[(r5+2)];
+	f18 = f18+f19;
+	f11 = f20*f11;
+	f13 = f21*f13;
+	f19 = f23+f24;
+	f23 = f22*f17;
+	r9 = sp + -416;
+	f19 = f19+f23;
+	f11 = f11+f13;
+	f13 = f25*f17;
+	f17 = f2+f18;
+	f11 = f11+f13;
+	f10 = f10*f5;
+	f12 = f12*f1;
+	r10 = r9 >> 2;
+	f13 = f3+f19;
+	heapFloat[(fp+-104)] = f17;
+	f14 = f14*f5;
+	f15 = f15*f1;
+	f10 = f10+f12;
+	f12 = f16*f8;
+	f11 = f4+f11;
+	heapFloat[(r10+1)] = f13;
+	f10 = f10+f12;
+	heapFloat[(r10+2)] = f11;
+	f11 = f20*f5;
+	f12 = f21*f1;
+	f13 = f14+f15;
+	f14 = f22*f8;
+	r11 = sp + -400;
+	f13 = f13+f14;
+	f11 = f11+f12;
+	f12 = f25*f8;
+	f10 = f2+f10;
+	heap32[(r10+3)] = 0;
+	f11 = f11+f12;
+	r10 = r11 >> 2;
+	f12 = f3+f13;
+	heapFloat[(fp+-100)] = f10;
+	f10 = f4+f11;
+	heapFloat[(r10+1)] = f12;
+	heapFloat[(r10+2)] = f10;
+	heap32[(r10+3)] = 0;
+	heap32[(g0)] = r_g0;
+	heap32[(g0+1)] = r11;
+	heap32[(g0+2)] = r9;
+	heap32[(g0+3)] = r6;
+	__FUNCTION_TABLE__[(r5)>>2](i7);
+	r3 = heap32[(r1)];
+	r3 = r3 >> 2;
+	r3 = heap32[(r3+4)];
+	heap32[(g0)] = r0;
+	__FUNCTION_TABLE__[(r3)>>2](i7);
+	f10 = -f5;
+	f11 = -f1;
+	f12 = -f8;
+	r5 = r_g0 >> 2;
+	f13 = heapFloat[(r2)];
+	f7 = f10-f7;
+	f14 = heapFloat[(r2+1)];
+	f6 = f11-f6;
+	f15 = heapFloat[(r2+4)];
+	f16 = heapFloat[(r2+5)];
+	r5 = heap32[(r5)];
+	f17 = heapFloat[(r2+2)];
+	f9 = f12-f9;
+	f18 = f13*f7;
+	f19 = f14*f6;
+	f20 = heapFloat[(r2+8)];
+	f21 = heapFloat[(r2+9)];
+	f22 = heapFloat[(r2+6)];
+	r5 = r5 >> 2;
+	f23 = f15*f7;
+	f24 = f16*f6;
+	f18 = f18+f19;
+	f19 = f17*f9;
+	f25 = heapFloat[(r2+10)];
+	r5 = heap32[(r5+2)];
+	f18 = f18+f19;
+	f7 = f20*f7;
+	f6 = f21*f6;
+	f19 = f23+f24;
+	f23 = f22*f9;
+	r9 = sp + -384;
+	f19 = f19+f23;
+	f6 = f7+f6;
+	f7 = f25*f9;
+	f9 = f2+f18;
+	f6 = f6+f7;
+	f7 = f13*f5;
+	f13 = f14*f1;
+	r10 = r9 >> 2;
+	f14 = f3+f19;
+	heapFloat[(fp+-96)] = f9;
+	f9 = f15*f5;
+	f15 = f16*f1;
+	f7 = f7+f13;
+	f13 = f17*f8;
+	f6 = f4+f6;
+	heapFloat[(r10+1)] = f14;
+	f7 = f7+f13;
+	heapFloat[(r10+2)] = f6;
+	f6 = f20*f5;
+	f13 = f21*f1;
+	f9 = f9+f15;
+	f14 = f22*f8;
+	r11 = sp + -368;
+	f9 = f9+f14;
+	f6 = f6+f13;
+	f13 = f25*f8;
+	f7 = f2+f7;
+	heap32[(r10+3)] = 0;
+	f6 = f6+f13;
+	r10 = r11 >> 2;
+	f9 = f3+f9;
+	heapFloat[(fp+-92)] = f7;
+	f6 = f4+f6;
+	heapFloat[(r10+1)] = f9;
+	heapFloat[(r10+2)] = f6;
+	heap32[(r10+3)] = 0;
+	heap32[(g0)] = r_g0;
+	heap32[(g0+1)] = r11;
+	heap32[(g0+2)] = r9;
+	heap32[(g0+3)] = r6;
+	__FUNCTION_TABLE__[(r5)>>2](i7);
+	r3 = heap32[(r1)];
+	r3 = r3 >> 2;
+	r3 = heap32[(r3+4)];
+	heap32[(g0)] = r0;
+	__FUNCTION_TABLE__[(r3)>>2](i7);
+	f6 = heapFloat[(r8+1)];
+	f7 = heapFloat[(fp+-228)];
+	f9 = heapFloat[(r8+2)];
+	r5 = r_g0 >> 2;
+	f13 = heapFloat[(r2)];
+	f14 = f7-f5;
+	f15 = heapFloat[(r2+1)];
+	f16 = f6-f1;
+	f17 = heapFloat[(r2+4)];
+	f18 = heapFloat[(r2+5)];
+	r5 = heap32[(r5)];
+	f19 = heapFloat[(r2+2)];
+	f20 = f9-f8;
+	f21 = f13*f14;
+	f22 = f15*f16;
+	f23 = heapFloat[(r2+8)];
+	f24 = heapFloat[(r2+9)];
+	f25 = heapFloat[(r2+6)];
+	r5 = r5 >> 2;
+	f26 = f17*f14;
+	f27 = f18*f16;
+	f21 = f21+f22;
+	f22 = f19*f20;
+	f28 = heapFloat[(r2+10)];
+	r5 = heap32[(r5+2)];
+	f21 = f21+f22;
+	f14 = f23*f14;
+	f16 = f24*f16;
+	f22 = f26+f27;
+	f26 = f25*f20;
+	r8 = sp + -352;
+	f22 = f22+f26;
+	f14 = f14+f16;
+	f16 = f28*f20;
+	f20 = f2+f21;
+	f14 = f14+f16;
+	f13 = f13*f5;
+	f15 = f15*f1;
+	r9 = r8 >> 2;
+	f16 = f3+f22;
+	heapFloat[(fp+-88)] = f20;
+	f17 = f17*f5;
+	f18 = f18*f1;
+	f13 = f13+f15;
+	f15 = f19*f8;
+	f14 = f4+f14;
+	heapFloat[(r9+1)] = f16;
+	f13 = f13+f15;
+	heapFloat[(r9+2)] = f14;
+	f14 = f23*f5;
+	f15 = f24*f1;
+	f16 = f17+f18;
+	f17 = f25*f8;
+	r10 = sp + -336;
+	f16 = f16+f17;
+	f14 = f14+f15;
+	f15 = f28*f8;
+	f13 = f2+f13;
+	heap32[(r9+3)] = 0;
+	f14 = f14+f15;
+	r9 = r10 >> 2;
+	f15 = f3+f16;
+	heapFloat[(fp+-84)] = f13;
+	f13 = f4+f14;
+	heapFloat[(r9+1)] = f15;
+	heapFloat[(r9+2)] = f13;
+	heap32[(r9+3)] = 0;
+	heap32[(g0)] = r_g0;
+	heap32[(g0+1)] = r10;
+	heap32[(g0+2)] = r8;
+	heap32[(g0+3)] = r6;
+	__FUNCTION_TABLE__[(r5)>>2](i7);
+	r3 = heap32[(r1)];
+	r3 = r3 >> 2;
+	r3 = heap32[(r3+4)];
+	heap32[(g0)] = r0;
+	__FUNCTION_TABLE__[(r3)>>2](i7);
+	r5 = r_g0 >> 2;
+	f13 = heapFloat[(r2)];
+	f7 = f10-f7;
+	f10 = heapFloat[(r2+1)];
+	f6 = f11-f6;
+	f11 = heapFloat[(r2+4)];
+	f14 = heapFloat[(r2+5)];
+	r5 = heap32[(r5)];
+	f15 = heapFloat[(r2+2)];
+	f9 = f12-f9;
+	f12 = f13*f7;
+	f16 = f10*f6;
+	f17 = heapFloat[(r2+8)];
+	f18 = heapFloat[(r2+9)];
+	f19 = heapFloat[(r2+6)];
+	r5 = r5 >> 2;
+	f20 = f11*f7;
+	f21 = f14*f6;
+	f12 = f12+f16;
+	f16 = f15*f9;
+	f22 = heapFloat[(r2+10)];
+	r5 = heap32[(r5+2)];
+	f12 = f12+f16;
+	f7 = f17*f7;
+	f6 = f18*f6;
+	f16 = f20+f21;
+	f20 = f19*f9;
+	r8 = sp + -320;
+	f16 = f16+f20;
+	f6 = f7+f6;
+	f7 = f22*f9;
+	f9 = f2+f12;
+	f6 = f6+f7;
+	f7 = f13*f5;
+	f10 = f10*f1;
+	r9 = r8 >> 2;
+	f12 = f3+f16;
+	heapFloat[(fp+-80)] = f9;
+	f9 = f11*f5;
+	f11 = f14*f1;
+	f7 = f7+f10;
+	f10 = f15*f8;
+	f6 = f4+f6;
+	heapFloat[(r9+1)] = f12;
+	f7 = f7+f10;
+	heapFloat[(r9+2)] = f6;
+	f6 = f17*f5;
+	f10 = f18*f1;
+	f9 = f9+f11;
+	f11 = f19*f8;
+	r10 = sp + -304;
+	f9 = f9+f11;
+	f6 = f6+f10;
+	f10 = f22*f8;
+	f7 = f2+f7;
+	heap32[(r9+3)] = 0;
+	f6 = f6+f10;
+	r9 = r10 >> 2;
+	f9 = f3+f9;
+	heapFloat[(fp+-76)] = f7;
+	f6 = f4+f6;
+	heapFloat[(r9+1)] = f9;
+	heapFloat[(r9+2)] = f6;
+	heap32[(r9+3)] = 0;
+	heap32[(g0)] = r_g0;
+	heap32[(g0+1)] = r10;
+	heap32[(g0+2)] = r8;
+	heap32[(g0+3)] = r6;
+	r3 = sp + -928;
+	__FUNCTION_TABLE__[(r5)>>2](i7);
+	r5 = r3 >> 2;
+	heap32[(fp+-232)] = 0;
+	heap32[(r5+1)] = 0;
+	r3 = (r3 + r7)|0;
+	heap32[(r5+2)] = 0;
+	r3 = r3 >> 2;
+	heap32[(r5+3)] = 0;
+	r7 = sp + -944;
+	heap32[(r3)] = 1065353216;
+	r3 = r7 >> 2;
+	heap32[(fp+-236)] = 0;
+	heap32[(r3+1)] = 0;
+	r4 = (r7 + r4)|0;
+	heap32[(r3+2)] = 0;
+	r4 = r4 >> 2;
+	heap32[(r3+3)] = 0;
+	heap32[(r4)] = 1065353216;
+	r1 = heap32[(r1)];
+	r1 = r1 >> 2;
+	r1 = heap32[(r1+4)];
+	heap32[(g0)] = r0;
+	__FUNCTION_TABLE__[(r1)>>2](i7);
+	r1 = r_g0 >> 2;
+	r1 = heap32[(r1)];
+	f6 = heapFloat[(r2)];
+	f7 = heapFloat[(fp+-236)];
+	f9 = heapFloat[(r2+1)];
+	f10 = heapFloat[(r3+1)];
+	f11 = heapFloat[(r2+4)];
+	f12 = heapFloat[(r2+5)];
+	r1 = r1 >> 2;
+	f13 = heapFloat[(r2+2)];
+	f14 = heapFloat[(r3+2)];
+	f15 = f6*f7;
+	f16 = f9*f10;
+	f17 = heapFloat[(r2+8)];
+	f18 = heapFloat[(r2+9)];
+	f19 = heapFloat[(r2+10)];
+	f20 = heapFloat[(r2+6)];
+	r1 = heap32[(r1+15)];
+	f21 = f11*f7;
+	f22 = f12*f10;
+	f15 = f15+f16;
+	f16 = f13*f14;
+	r2 = sp + -288;
+	f7 = f17*f7;
+	f10 = f18*f10;
+	f21 = f21+f22;
+	f22 = f20*f14;
+	f15 = f15+f16;
+	r3 = r2 >> 2;
+	f7 = f7+f10;
+	f10 = f19*f14;
+	f14 = f21+f22;
+	heapFloat[(fp+-72)] = f15;
+	f7 = f7+f10;
+	heapFloat[(r3+1)] = f14;
+	heapFloat[(r3+2)] = f7;
+	heap32[(r3+3)] = 0;
+	f7 = heapFloat[(fp+-232)];
+	f10 = heapFloat[(r5+1)];
+	f14 = heapFloat[(r5+2)];
+	f15 = f6*f7;
+	f16 = f9*f10;
+	f21 = f11*f7;
+	f22 = f12*f10;
+	f15 = f15+f16;
+	f16 = f13*f14;
+	r3 = sp + -272;
+	f7 = f17*f7;
+	f10 = f18*f10;
+	f21 = f21+f22;
+	f22 = f20*f14;
+	f15 = f15+f16;
+	f6 = f6*f5;
+	f9 = f9*f1;
+	r4 = r3 >> 2;
+	f7 = f7+f10;
+	f10 = f19*f14;
+	f14 = f21+f22;
+	heapFloat[(fp+-68)] = f15;
+	f11 = f11*f5;
+	f12 = f12*f1;
+	f6 = f6+f9;
+	f9 = f13*f8;
+	f7 = f7+f10;
+	heapFloat[(r4+1)] = f14;
+	f6 = f6+f9;
+	heapFloat[(r4+2)] = f7;
+	f5 = f17*f5;
+	f1 = f18*f1;
+	f7 = f11+f12;
+	f9 = f20*f8;
+	r5 = sp + -256;
+	f7 = f7+f9;
+	f1 = f5+f1;
+	f5 = f19*f8;
+	f2 = f2-f6;
+	heap32[(r4+3)] = 0;
+	f1 = f1+f5;
+	r4 = r5 >> 2;
+	f3 = f3-f7;
+	heapFloat[(fp+-64)] = f2;
+	f1 = f4-f1;
+	heapFloat[(r4+1)] = f3;
+	heapFloat[(r4+2)] = f1;
+	heap32[(r4+3)] = 0;
+	heap32[(g0)] = r_g0;
+	heap32[(g0+1)] = r5;
+	heap32[(g0+2)] = r3;
+}
+else{
+	if(r3 ==13) //_LBB222_21
+{
+	r3 = heap32[(r5)];
+	r3 = r3 >> 2;
+	r7 = heap32[(r5+13)];
+	r3 = heap32[(r3+21)];
+	heap32[(g0)] = r2;
+	__FUNCTION_TABLE__[(r3)>>2](i7);
+	f0 = f_g0;
+	r3 = sp + -240;
+	f1 = heapFloat[(r5+8)];
+	f2 = heapFloat[(r5+9)];
+	f3 = heapFloat[(r5+7)];
+	r8 = r3 >> 2;
+	heap32[(r8+3)] = heap32[(r5+10)];
+	r9 = heap32[(r5)];
+	r9 = r9 >> 2;
+	r9 = heap32[(r9+11)];
+	heap32[(g0)] = r2;
+	__FUNCTION_TABLE__[(r9)>>2](i7);
+	f4 = f_g0;
+	r9 = heap32[(r5)];
+	r9 = r9 >> 2;
+	r9 = heap32[(r9+11)];
+	heap32[(g0)] = r2;
+	__FUNCTION_TABLE__[(r9)>>2](i7);
+	f5 = f_g0;
+	r5 = heap32[(r5)];
+	r5 = r5 >> 2;
+	r5 = heap32[(r5+11)];
+	heap32[(g0)] = r2;
+	__FUNCTION_TABLE__[(r5)>>2](i7);
+	f3 = f3+f_g0;
+	r2 = r7 << 2;
+	f1 = f1+f5;
+	heapFloat[(fp+-60)] = f3;
+	r3 = (r3 + r2)|0;
+	f2 = f2+f4;
+	heapFloat[(r8+1)] = f1;
+	r3 = r3 >> 2;
+	heapFloat[(r8+2)] = f2;
+	r4 = r4 >> 2;
+	f1 = heapFloat[(r3)];
+	f2 = heapFloat[(r4+12)];
+	f3 = heapFloat[(r4+13)];
+	f4 = heapFloat[(r4+14)];
+	r3 = sp + -960;
+	r5 = r3 >> 2;
+	heap32[(fp+-240)] = 0;
+	heap32[(r5+1)] = 0;
+	r3 = (r3 + r2)|0;
+	heap32[(r5+2)] = 0;
+	r3 = r3 >> 2;
+	heap32[(r5+3)] = 0;
+	r8 = sp + -976;
+	heapFloat[(r3)] = f1;
+	r3 = (r7 + 1)|0;
+	r3 = (r3 % 3)|0;
+	r7 = r8 >> 2;
+	heap32[(fp+-244)] = 0;
+	heap32[(r7+1)] = 0;
+	r3 = r3 << 2;
+	r8 = (r8 + r3)|0;
+	heap32[(r7+2)] = 0;
+	r8 = r8 >> 2;
+	heap32[(r7+3)] = 0;
+	heapFloat[(r8)] = f0;
+	r8 = heap32[(r1)];
+	r8 = r8 >> 2;
+	r8 = heap32[(r8+4)];
+	heap32[(g0)] = r0;
+	__FUNCTION_TABLE__[(r8)>>2](i7);
+	f1 = heapFloat[(r5+1)];
+	f5 = heapFloat[(r7+1)];
+	f6 = heapFloat[(fp+-240)];
+	f7 = heapFloat[(fp+-244)];
+	r9 = r_g0 >> 2;
+	f8 = heapFloat[(r5+2)];
+	f9 = heapFloat[(r7+2)];
+	f10 = f7-f6;
+	f11 = heapFloat[(r4)];
+	f12 = f5-f1;
+	f13 = heapFloat[(r4+1)];
+	r5 = heap32[(r9)];
+	f14 = heapFloat[(r4+4)];
+	f15 = heapFloat[(r4+5)];
+	f16 = f11*f10;
+	f17 = f13*f12;
+	f18 = f9-f8;
+	f19 = heapFloat[(r4+2)];
+	r5 = r5 >> 2;
+	f20 = heapFloat[(r4+8)];
+	f21 = heapFloat[(r4+9)];
+	f22 = heapFloat[(r4+6)];
+	f23 = f14*f10;
+	f24 = f15*f12;
+	f16 = f16+f17;
+	f17 = f19*f18;
+	f16 = f16+f17;
+	f17 = heapFloat[(r4+10)];
+	r5 = heap32[(r5+2)];
+	f10 = f20*f10;
+	f12 = f21*f12;
+	f23 = f23+f24;
+	f24 = f22*f18;
+	f25 = f6+f7;
+	f26 = f1+f5;
+	r7 = sp + -224;
+	f23 = f23+f24;
+	f10 = f10+f12;
+	f12 = f17*f18;
+	f16 = f2+f16;
+	f18 = f8+f9;
+	f10 = f10+f12;
+	f11 = f11*f25;
+	f12 = f13*f26;
+	r9 = r7 >> 2;
+	f13 = f3+f23;
+	heapFloat[(fp+-56)] = f16;
+	f14 = f14*f25;
+	f15 = f15*f26;
+	f11 = f11+f12;
+	f12 = f19*f18;
+	f10 = f4+f10;
+	heapFloat[(r9+1)] = f13;
+	f11 = f11+f12;
+	heapFloat[(r9+2)] = f10;
+	f10 = f20*f25;
+	f12 = f21*f26;
+	f13 = f14+f15;
+	f14 = f22*f18;
+	r10 = sp + -208;
+	f13 = f13+f14;
+	f10 = f10+f12;
+	f12 = f17*f18;
+	f11 = f2+f11;
+	heap32[(r9+3)] = 0;
+	f10 = f10+f12;
+	r9 = r10 >> 2;
+	f12 = f3+f13;
+	heapFloat[(fp+-52)] = f11;
+	f10 = f4+f10;
+	heapFloat[(r9+1)] = f12;
+	heapFloat[(r9+2)] = f10;
+	heap32[(r9+3)] = 0;
+	heap32[(g0)] = r_g0;
+	heap32[(g0+1)] = r10;
+	heap32[(g0+2)] = r7;
+	heap32[(g0+3)] = r6;
+	__FUNCTION_TABLE__[(r5)>>2](i7);
+	r5 = heap32[(r1)];
+	r5 = r5 >> 2;
+	r5 = heap32[(r5+4)];
+	heap32[(g0)] = r0;
+	__FUNCTION_TABLE__[(r5)>>2](i7);
+	f10 = -f6;
+	f11 = -f1;
+	f12 = -f8;
+	r7 = r_g0 >> 2;
+	f10 = f10-f7;
+	f13 = heapFloat[(r4)];
+	f11 = f11-f5;
+	f14 = heapFloat[(r4+1)];
+	r7 = heap32[(r7)];
+	f15 = heapFloat[(r4+4)];
+	f16 = heapFloat[(r4+5)];
+	f17 = f13*f10;
+	f18 = f14*f11;
+	f12 = f12-f9;
+	f19 = heapFloat[(r4+2)];
+	r7 = r7 >> 2;
+	f20 = heapFloat[(r4+8)];
+	f21 = heapFloat[(r4+9)];
+	f22 = heapFloat[(r4+6)];
+	f23 = f15*f10;
+	f24 = f16*f11;
+	f17 = f17+f18;
+	f18 = f19*f12;
+	f17 = f17+f18;
+	f18 = heapFloat[(r4+10)];
+	r7 = heap32[(r7+2)];
+	f10 = f20*f10;
+	f11 = f21*f11;
+	f23 = f23+f24;
+	f24 = f22*f12;
+	f7 = f6-f7;
+	f5 = f1-f5;
+	r8 = sp + -192;
+	f23 = f23+f24;
+	f10 = f10+f11;
+	f11 = f18*f12;
+	f12 = f2+f17;
+	f9 = f8-f9;
+	f10 = f10+f11;
+	f11 = f13*f7;
+	f13 = f14*f5;
+	r9 = r8 >> 2;
+	f14 = f3+f23;
+	heapFloat[(fp+-48)] = f12;
+	f12 = f15*f7;
+	f15 = f16*f5;
+	f11 = f11+f13;
+	f13 = f19*f9;
+	f10 = f4+f10;
+	heapFloat[(r9+1)] = f14;
+	f11 = f11+f13;
+	heapFloat[(r9+2)] = f10;
+	f7 = f20*f7;
+	f5 = f21*f5;
+	f10 = f12+f15;
+	f12 = f22*f9;
+	r10 = sp + -176;
+	f10 = f10+f12;
+	f5 = f7+f5;
+	f7 = f18*f9;
+	f9 = f2+f11;
+	heap32[(r9+3)] = 0;
+	f5 = f5+f7;
+	r9 = r10 >> 2;
+	f7 = f3+f10;
+	heapFloat[(fp+-44)] = f9;
+	f5 = f4+f5;
+	heapFloat[(r9+1)] = f7;
+	heapFloat[(r9+2)] = f5;
+	heap32[(r9+3)] = 0;
+	heap32[(g0)] = r_g0;
+	heap32[(g0+1)] = r10;
+	heap32[(g0+2)] = r8;
+	heap32[(g0+3)] = r6;
+	r5 = sp + -992;
+	__FUNCTION_TABLE__[(r7)>>2](i7);
+	r7 = r5 >> 2;
+	heap32[(fp+-248)] = 0;
+	heap32[(r7+1)] = 0;
+	r2 = (r5 + r2)|0;
+	heap32[(r7+2)] = 0;
+	r2 = r2 >> 2;
+	heap32[(r7+3)] = 0;
+	r5 = sp + -1008;
+	heap32[(r2)] = 1065353216;
+	r2 = r5 >> 2;
+	heap32[(fp+-252)] = 0;
+	heap32[(r2+1)] = 0;
+	r3 = (r5 + r3)|0;
+	heap32[(r2+2)] = 0;
+	r3 = r3 >> 2;
+	heap32[(r2+3)] = 0;
+	heap32[(r3)] = 1065353216;
+	r3 = heap32[(r1)];
+	r3 = r3 >> 2;
+	r3 = heap32[(r3+4)];
+	heap32[(g0)] = r0;
+	__FUNCTION_TABLE__[(r3)>>2](i7);
+	r5 = r_g0 >> 2;
+	r5 = heap32[(r5)];
+	f5 = heapFloat[(r4)];
+	f7 = heapFloat[(fp+-252)];
+	f9 = heapFloat[(r4+1)];
+	f10 = heapFloat[(r2+1)];
+	f11 = heapFloat[(r4+4)];
+	f12 = heapFloat[(r4+5)];
+	r5 = r5 >> 2;
+	f13 = heapFloat[(r4+2)];
+	f14 = heapFloat[(r2+2)];
+	f15 = f5*f7;
+	f16 = f9*f10;
+	f17 = heapFloat[(r4+8)];
+	f18 = heapFloat[(r4+9)];
+	f19 = heapFloat[(r4+10)];
+	f20 = heapFloat[(r4+6)];
+	r2 = heap32[(r5+15)];
+	f21 = f11*f7;
+	f22 = f12*f10;
+	f15 = f15+f16;
+	f16 = f13*f14;
+	r5 = sp + -160;
+	f23 = f17*f7;
+	f24 = f18*f10;
+	f21 = f21+f22;
+	f22 = f20*f14;
+	f15 = f15+f16;
+	r8 = r5 >> 2;
+	f16 = f23+f24;
+	f23 = f19*f14;
+	f21 = f21+f22;
+	heapFloat[(fp+-40)] = f15;
+	f15 = f16+f23;
+	heapFloat[(r8+1)] = f21;
+	heapFloat[(r8+2)] = f15;
+	heap32[(r8+3)] = 0;
+	f15 = heapFloat[(fp+-248)];
+	f16 = heapFloat[(r7+1)];
+	f21 = heapFloat[(r7+2)];
+	f22 = f5*f15;
+	f23 = f9*f16;
+	f24 = f11*f15;
+	f25 = f12*f16;
+	f22 = f22+f23;
+	f23 = f13*f21;
+	r7 = sp + -144;
+	f26 = f17*f15;
+	f27 = f18*f16;
+	f24 = f24+f25;
+	f25 = f20*f21;
+	f22 = f22+f23;
+	f5 = f5*f6;
+	f9 = f9*f1;
+	r8 = r7 >> 2;
+	f23 = f26+f27;
+	f26 = f19*f21;
+	f24 = f24+f25;
+	heapFloat[(fp+-36)] = f22;
+	f11 = f11*f6;
+	f12 = f12*f1;
+	f5 = f5+f9;
+	f9 = f13*f8;
+	f13 = f23+f26;
+	heapFloat[(r8+1)] = f24;
+	f5 = f5+f9;
+	heapFloat[(r8+2)] = f13;
+	f9 = f17*f6;
+	f13 = f18*f1;
+	f11 = f11+f12;
+	f12 = f20*f8;
+	r9 = sp + -128;
+	f11 = f11+f12;
+	f9 = f9+f13;
+	f12 = f19*f8;
+	f5 = f2-f5;
+	heap32[(r8+3)] = 0;
+	f9 = f9+f12;
+	r8 = r9 >> 2;
+	f11 = f3-f11;
+	heapFloat[(fp+-32)] = f5;
+	f5 = f4-f9;
+	heapFloat[(r8+1)] = f11;
+	heapFloat[(r8+2)] = f5;
+	heap32[(r8+3)] = 0;
+	heap32[(g0)] = r_g0;
+	heap32[(g0+1)] = r9;
+	heap32[(g0+2)] = r7;
+	heap32[(g0+3)] = r5;
+	heapFloat[(g0+4)] = f0;
+	heapFloat[(g0+5)] = f0;
+	heap32[(g0+6)] = 0;
+	heap32[(g0+7)] = 1086918619;
+	heap32[(g0+8)] = r6;
+	heap32[(g0+9)] = 0;
+	heap32[(g0+10)] = 1092616192;
+	__FUNCTION_TABLE__[(r2)>>2](i7);
+	r1 = heap32[(r1)];
+	r1 = r1 >> 2;
+	r1 = heap32[(r1+4)];
+	heap32[(g0)] = r0;
+	__FUNCTION_TABLE__[(r1)>>2](i7);
+	r1 = r_g0 >> 2;
+	f5 = heapFloat[(r4)];
+	f9 = heapFloat[(r4+1)];
+	r1 = heap32[(r1)];
+	f11 = heapFloat[(r4+4)];
+	f12 = heapFloat[(r4+5)];
+	f13 = heapFloat[(r4+2)];
+	r1 = r1 >> 2;
+	f17 = f5*f7;
+	f18 = f9*f10;
+	f19 = heapFloat[(r4+8)];
+	f20 = heapFloat[(r4+9)];
+	f22 = heapFloat[(r4+10)];
+	f23 = heapFloat[(r4+6)];
+	r1 = heap32[(r1+15)];
+	f24 = f11*f7;
+	f25 = f12*f10;
+	f17 = f17+f18;
+	f18 = f13*f14;
+	r2 = sp + -112;
+	f7 = f19*f7;
+	f10 = f20*f10;
+	f24 = f24+f25;
+	f25 = f23*f14;
+	f17 = f17+f18;
+	r3 = r2 >> 2;
+	f7 = f7+f10;
+	f10 = f22*f14;
+	f14 = f24+f25;
+	heapFloat[(fp+-28)] = f17;
+	f17 = f5*f15;
+	f18 = f9*f16;
+	f7 = f7+f10;
+	heapFloat[(r3+1)] = f14;
+	heapFloat[(r3+2)] = f7;
+	f7 = f11*f15;
+	f10 = f12*f16;
+	f14 = f17+f18;
+	f17 = f13*f21;
+	r4 = sp + -96;
+	f15 = f19*f15;
+	f16 = f20*f16;
+	f7 = f7+f10;
+	f10 = f23*f21;
+	f14 = f14+f17;
+	heap32[(r3+3)] = 0;
+	f5 = f5*f6;
+	f9 = f9*f1;
+	r3 = r4 >> 2;
+	f15 = f15+f16;
+	f16 = f22*f21;
+	f7 = f7+f10;
+	heapFloat[(fp+-24)] = f14;
+	f10 = f11*f6;
+	f11 = f12*f1;
+	f5 = f5+f9;
+	f9 = f13*f8;
+	f12 = f15+f16;
+	heapFloat[(r3+1)] = f7;
+	f5 = f5+f9;
+	heapFloat[(r3+2)] = f12;
+	f6 = f19*f6;
+	f1 = f20*f1;
+	f7 = f10+f11;
+	f9 = f23*f8;
+	r5 = sp + -80;
+	f7 = f7+f9;
+	f1 = f6+f1;
+	f6 = f22*f8;
+	f2 = f2+f5;
+	heap32[(r3+3)] = 0;
+	f1 = f1+f6;
+	r3 = r5 >> 2;
+	f3 = f3+f7;
+	heapFloat[(fp+-20)] = f2;
+	f1 = f4+f1;
+	heapFloat[(r3+1)] = f3;
+	heapFloat[(r3+2)] = f1;
+	heap32[(r3+3)] = 0;
+	heap32[(g0)] = r_g0;
+	heap32[(g0+1)] = r5;
+	heap32[(g0+2)] = r4;
+}
+else{
+__label__ = 32;
+break _1;
+}
+}
+	heap32[(g0+3)] = r2;
+	heapFloat[(g0+4)] = f0;
+	heapFloat[(g0+5)] = f0;
+	heap32[(g0+6)] = 0;
+	heap32[(g0+7)] = 1086918619;
+	heap32[(g0+8)] = r6;
+	heap32[(g0+9)] = 0;
+	heap32[(g0+10)] = 1092616192;
+	__FUNCTION_TABLE__[(r1)>>2](i7);
+	return;
+}
+}
+else{
+	if(r3 >8) //_LBB222_4
+{
+	if(r3 ==9) //_LBB222_16
+{
+	r2 = heap32[(r5+23)];
+	r3 = (r2 + -1)|0;
+	if(r3 <0) //_LBB222_42
+{
+__label__ = 40;
+break _1;
+}
+else{
+	r3 = 1;
+	r2 = (r3 - r2)|0;
+_32: while(true){
+	r3 = r2;
+	r2 = heap32[(r5+25)];
+	r7 = r3 << 4;
+	r8 = heap32[(r1)];
+	r2 = (r2 - r7)|0;
+	r2 = r2 >> 2;
+	r7 = r8 >> 2;
+	r7 = heap32[(r7+4)];
+	f0 = heapFloat[(r2)];
+	f1 = heapFloat[(r2+1)];
+	f2 = heapFloat[(r2+2)];
+	heap32[(g0)] = r0;
+	__FUNCTION_TABLE__[(r7)>>2](i7);
+	r7 = r4 >> 2;
+	r8 = r_g0 >> 2;
+	r8 = heap32[(r8)];
+	f3 = heapFloat[(r7+1)];
+	f4 =                         0;
+	f5 = heapFloat[(r7)];
+	f6 = heapFloat[(r7+2)];
+	r8 = r8 >> 2;
+	f7 = f3*f4;
+	f8 = f5*f4;
+	f9 = heapFloat[(r7+8)];
+	f10 = heapFloat[(r7+9)];
+	f11 = heapFloat[(r7+10)];
+	f12 = heapFloat[(r7+4)];
+	f13 = heapFloat[(r7+5)];
+	f14 = heapFloat[(r7+6)];
+	r8 = heap32[(r8+4)];
+	f15 = f5+f7;
+	f16 = f6*f4;
+	f17 = heapFloat[(r7+14)];
+	f18 = heapFloat[(r7+13)];
+	f19 = heapFloat[(r7+12)];
+	r7 = sp + -608;
+	f20 = f8+f3;
+	f15 = f15+f16;
+	f7 = f8+f7;
+	r9 = r7 >> 2;
+	f8 = f20+f16;
+	heapFloat[(fp+-152)] = f15;
+	f15 = f13*f4;
+	f7 = f7+f6;
+	heapFloat[(r9+1)] = f8;
+	f8 = f12*f4;
+	heapFloat[(r9+2)] = f7;
+	f7 = f12+f15;
+	f16 = f14*f4;
+	f20 = f8+f13;
+	f7 = f7+f16;
+	heap32[(r9+3)] = 0;
+	f8 = f8+f15;
+	f15 = f20+f16;
+	heapFloat[(r9+4)] = f7;
+	f7 = f10*f4;
+	f8 = f8+f14;
+	heapFloat[(r9+5)] = f15;
+	f15 = f9*f4;
+	heapFloat[(r9+6)] = f8;
+	f8 = f9+f7;
+	f4 = f11*f4;
+	f16 = f15+f10;
+	f8 = f8+f4;
+	heap32[(r9+7)] = 0;
+	f7 = f15+f7;
+	f5 = f5*f0;
+	f3 = f3*f1;
+	f4 = f16+f4;
+	heapFloat[(r9+8)] = f8;
+	f8 = f12*f0;
+	f12 = f13*f1;
+	f3 = f5+f3;
+	f5 = f6*f2;
+	f6 = f7+f11;
+	heapFloat[(r9+9)] = f4;
+	f3 = f3+f5;
+	heapFloat[(r9+10)] = f6;
+	f0 = f9*f0;
+	f1 = f10*f1;
+	f4 = f8+f12;
+	f5 = f14*f2;
+	f4 = f4+f5;
+	f0 = f0+f1;
+	f1 = f11*f2;
+	f2 = f3+f19;
+	heap32[(r9+11)] = 0;
+	f0 = f0+f1;
+	f1 = f4+f18;
+	heapFloat[(r9+12)] = f2;
+	f0 = f0+f17;
+	heapFloat[(r9+13)] = f1;
+	heapFloat[(r9+14)] = f0;
+	heap32[(r9+15)] = 0;
+	r9 = heap32[(r5+30)];
+	r10 = r3 << 2;
+	r9 = (r9 - r10)|0;
+	r9 = r9 >> 2;
+	f0 = heapFloat[(r9)];
+	heap32[(g0)] = r_g0;
+	heapFloat[(g0+1)] = f0;
+	heap32[(g0+2)] = r7;
+	heap32[(g0+3)] = r6;
+	r2 = (r3 + 1)|0;
+	__FUNCTION_TABLE__[(r8)>>2](i7);
+	if(r3 ==0) //_LBB222_42
+{
+__label__ = 40;
+break _1;
+}
+else{
+continue _32;
+}
+}
+}
+}
+else{
+	if(r3 ==10) //_LBB222_19
+{
+	r3 = heap32[(r5+13)];
+	r5 = (r3 + 2)|0;
+	r5 = (r5 % 3)|0;
+	r7 = r3 << 2;
+	r2 = (r2 + 28)|0;
+	r5 = r5 << 2;
+	r8 = (r2 + r7)|0;
+	r2 = (r2 + r5)|0;
+	r8 = r8 >> 2;
+	r2 = r2 >> 2;
+	f0 = heapFloat[(r8)];
+	f1 = heapFloat[(r2)];
+	r2 = sp + -720;
+	r8 = r2 >> 2;
+	heap32[(fp+-180)] = 0;
+	heap32[(r8+1)] = 0;
+	r9 = (r2 + r7)|0;
+	heap32[(r8+2)] = 0;
+	r9 = r9 >> 2;
+	f2 = -f0;
+	heap32[(r8+3)] = 0;
+	r10 = sp + -736;
+	heapFloat[(r9)] = f2;
+	heap32[(fp+-184)] = 0;
+	r9 = r10 >> 2;
+	heap32[(r9+1)] = 0;
+	r7 = (r10 + r7)|0;
+	heap32[(r9+2)] = 0;
+	r7 = r7 >> 2;
+	heap32[(r9+3)] = 0;
+	heapFloat[(r7)] = f0;
+	r4 = r4 >> 2;
+	f0 = heapFloat[(r4)];
+	r7 = sp + -800;
+	heapFloat[(fp+-200)] = f0;
+	r11 = r7 >> 2;
+	f2 = heapFloat[(r4+1)];
+	heapFloat[(r11+1)] = f2;
+	f3 = heapFloat[(r4+2)];
+	heapFloat[(r11+2)] = f3;
+	heap32[(r11+3)] = heap32[(r4+3)];
+	f4 = heapFloat[(r4+4)];
+	heapFloat[(r11+4)] = f4;
+	f5 = heapFloat[(r4+5)];
+	heapFloat[(r11+5)] = f5;
+	f6 = heapFloat[(r4+6)];
+	heapFloat[(r11+6)] = f6;
+	heap32[(r11+7)] = heap32[(r4+7)];
+	f7 = heapFloat[(r4+8)];
+	heapFloat[(r11+8)] = f7;
+	f8 = heapFloat[(r4+9)];
+	heapFloat[(r11+9)] = f8;
+	f9 = heapFloat[(r4+10)];
+	heapFloat[(r11+10)] = f9;
+	heap32[(r11+11)] = heap32[(r4+11)];
+	f10 = heapFloat[(fp+-180)];
+	f11 = heapFloat[(r8+1)];
+	f12 = heapFloat[(r8+2)];
+	f0 = f0*f10;
+	f2 = f2*f11;
+	f4 = f4*f10;
+	f5 = f5*f11;
+	f0 = f0+f2;
+	f2 = f3*f12;
+	f3 = f7*f10;
+	f7 = f8*f11;
+	f4 = f4+f5;
+	f5 = f6*f12;
+	f0 = f0+f2;
+	f2 = heapFloat[(r4+12)];
+	f6 = heapFloat[(r4+13)];
+	f8 = heapFloat[(r4+14)];
+	f4 = f4+f5;
+	f3 = f3+f7;
+	f5 = f9*f12;
+	f0 = f0+f2;
+	f2 = f3+f5;
+	f3 = f4+f6;
+	heapFloat[(r11+12)] = f0;
+	f0 = f2+f8;
+	heapFloat[(r11+13)] = f3;
+	heapFloat[(r11+14)] = f0;
+	heap32[(r11+15)] = 0;
+	r11 = heap32[(r1)];
+	r11 = r11 >> 2;
+	r11 = heap32[(r11+4)];
+	heap32[(g0)] = r0;
+	__FUNCTION_TABLE__[(r11)>>2](i7);
+	r12 = r_g0 >> 2;
+	r12 = heap32[(r12)];
+	r12 = r12 >> 2;
+	r12 = heap32[(r12+4)];
+	heap32[(g0)] = r_g0;
+	heapFloat[(g0+1)] = f1;
+	heap32[(g0+2)] = r7;
+	heap32[(g0+3)] = r6;
+	__FUNCTION_TABLE__[(r12)>>2](i7);
+	f0 = heapFloat[(r4)];
+	r7 = sp + -864;
+	heapFloat[(fp+-216)] = f0;
+	r11 = r7 >> 2;
+	f2 = heapFloat[(r4+1)];
+	heapFloat[(r11+1)] = f2;
+	f3 = heapFloat[(r4+2)];
+	heapFloat[(r11+2)] = f3;
+	heap32[(r11+3)] = heap32[(r4+3)];
+	f4 = heapFloat[(r4+4)];
+	heapFloat[(r11+4)] = f4;
+	f5 = heapFloat[(r4+5)];
+	heapFloat[(r11+5)] = f5;
+	f6 = heapFloat[(r4+6)];
+	heapFloat[(r11+6)] = f6;
+	heap32[(r11+7)] = heap32[(r4+7)];
+	f7 = heapFloat[(r4+8)];
+	heapFloat[(r11+8)] = f7;
+	f8 = heapFloat[(r4+9)];
+	heapFloat[(r11+9)] = f8;
+	f9 = heapFloat[(r4+10)];
+	heapFloat[(r11+10)] = f9;
+	heap32[(r11+11)] = heap32[(r4+11)];
+	f10 = heapFloat[(fp+-184)];
+	f11 = heapFloat[(r9+1)];
+	f12 = heapFloat[(r9+2)];
+	f0 = f0*f10;
+	f2 = f2*f11;
+	f4 = f4*f10;
+	f5 = f5*f11;
+	f0 = f0+f2;
+	f2 = f3*f12;
+	f3 = f7*f10;
+	f7 = f8*f11;
+	f4 = f4+f5;
+	f5 = f6*f12;
+	f0 = f0+f2;
+	f2 = heapFloat[(r4+12)];
+	f6 = heapFloat[(r4+13)];
+	f8 = heapFloat[(r4+14)];
+	f4 = f4+f5;
+	f3 = f3+f7;
+	f5 = f9*f12;
+	f0 = f0+f2;
+	f2 = f3+f5;
+	f3 = f4+f6;
+	heapFloat[(r11+12)] = f0;
+	f0 = f2+f8;
+	heapFloat[(r11+13)] = f3;
+	heapFloat[(r11+14)] = f0;
+	heap32[(r11+15)] = 0;
+	r11 = heap32[(r1)];
+	r11 = r11 >> 2;
+	r11 = heap32[(r11+4)];
+	heap32[(g0)] = r0;
+	__FUNCTION_TABLE__[(r11)>>2](i7);
+	r12 = r_g0 >> 2;
+	r12 = heap32[(r12)];
+	r12 = r12 >> 2;
+	r12 = heap32[(r12+4)];
+	r3 = (r3 + 1)|0;
+	heap32[(g0)] = r_g0;
+	heapFloat[(g0+1)] = f1;
+	heap32[(g0+2)] = r7;
+	heap32[(g0+3)] = r6;
+	r3 = (r3 % 3)|0;
+	__FUNCTION_TABLE__[(r12)>>2](i7);
+	r3 = r3 << 2;
+	r7 = (r2 + r3)|0;
+	f0 = heapFloat[(r4+12)];
+	f2 = heapFloat[(r4+13)];
+	f3 = heapFloat[(r4+14)];
+	r3 = (r10 + r3)|0;
+	r7 = r7 >> 2;
+	heapFloat[(r7)] = f1;
+	r3 = r3 >> 2;
+	heapFloat[(r3)] = f1;
+	r11 = heap32[(r1)];
+	r11 = r11 >> 2;
+	r11 = heap32[(r11+4)];
+	heap32[(g0)] = r0;
+	__FUNCTION_TABLE__[(r11)>>2](i7);
+	r12 = r_g0 >> 2;
+	f4 = heapFloat[(fp+-184)];
+	f5 = heapFloat[(r4)];
+	f6 = heapFloat[(r9+1)];
+	f7 = heapFloat[(r4+1)];
+	r12 = heap32[(r12)];
+	f8 = heapFloat[(r4+4)];
+	f9 = heapFloat[(r4+5)];
+	f10 = f5*f4;
+	f11 = f7*f6;
+	f12 = heapFloat[(r9+2)];
+	f13 = heapFloat[(r4+2)];
+	r12 = r12 >> 2;
+	f14 = heapFloat[(r4+8)];
+	f15 = heapFloat[(r4+9)];
+	f16 = heapFloat[(r4+6)];
+	f17 = f8*f4;
+	f18 = f9*f6;
+	f10 = f10+f11;
+	f11 = f13*f12;
+	f10 = f10+f11;
+	f11 = heapFloat[(r4+10)];
+	r12 = heap32[(r12+2)];
+	f4 = f14*f4;
+	f6 = f15*f6;
+	f17 = f17+f18;
+	f18 = f16*f12;
+	r13 = sp + -544;
+	f17 = f17+f18;
+	f4 = f4+f6;
+	f6 = f11*f12;
+	f10 = f0+f10;
+	f4 = f4+f6;
+	r14 = r13 >> 2;
+	f6 = f2+f17;
+	heapFloat[(fp+-136)] = f10;
+	f4 = f3+f4;
+	heapFloat[(r14+1)] = f6;
+	heapFloat[(r14+2)] = f4;
+	heap32[(r14+3)] = 0;
+	f4 = heapFloat[(fp+-180)];
+	f6 = heapFloat[(r8+1)];
+	f10 = heapFloat[(r8+2)];
+	f5 = f5*f4;
+	f7 = f7*f6;
+	f8 = f8*f4;
+	f9 = f9*f6;
+	f5 = f5+f7;
+	f7 = f13*f10;
+	f5 = f5+f7;
+	f4 = f14*f4;
+	f6 = f15*f6;
+	f7 = f8+f9;
+	f8 = f16*f10;
+	r14 = sp + -528;
+	f7 = f7+f8;
+	f4 = f4+f6;
+	f6 = f11*f10;
+	f5 = f0+f5;
+	f4 = f4+f6;
+	r15 = r14 >> 2;
+	f6 = f2+f7;
+	heapFloat[(fp+-132)] = f5;
+	f4 = f3+f4;
+	heapFloat[(r15+1)] = f6;
+	heapFloat[(r15+2)] = f4;
+	heap32[(r15+3)] = 0;
+	heap32[(g0)] = r_g0;
+	heap32[(g0+1)] = r14;
+	heap32[(g0+2)] = r13;
+	heap32[(g0+3)] = r6;
+	__FUNCTION_TABLE__[(r12)>>2](i7);
+	f4 = -f1;
+	heapFloat[(r7)] = f4;
+	heapFloat[(r3)] = f4;
+	r11 = heap32[(r1)];
+	r11 = r11 >> 2;
+	r11 = heap32[(r11+4)];
+	heap32[(g0)] = r0;
+	__FUNCTION_TABLE__[(r11)>>2](i7);
+	r12 = r_g0 >> 2;
+	f5 = heapFloat[(fp+-184)];
+	f6 = heapFloat[(r4)];
+	f7 = heapFloat[(r9+1)];
+	f8 = heapFloat[(r4+1)];
+	r12 = heap32[(r12)];
+	f9 = heapFloat[(r4+4)];
+	f10 = heapFloat[(r4+5)];
+	f11 = f6*f5;
+	f12 = f8*f7;
+	f13 = heapFloat[(r9+2)];
+	f14 = heapFloat[(r4+2)];
+	r12 = r12 >> 2;
+	f15 = heapFloat[(r4+8)];
+	f16 = heapFloat[(r4+9)];
+	f17 = heapFloat[(r4+6)];
+	f18 = f9*f5;
+	f19 = f10*f7;
+	f11 = f11+f12;
+	f12 = f14*f13;
+	f11 = f11+f12;
+	f12 = heapFloat[(r4+10)];
+	r12 = heap32[(r12+2)];
+	f5 = f15*f5;
+	f7 = f16*f7;
+	f18 = f18+f19;
+	f19 = f17*f13;
+	r13 = sp + -512;
+	f18 = f18+f19;
+	f5 = f5+f7;
+	f7 = f12*f13;
+	f11 = f0+f11;
+	f5 = f5+f7;
+	r14 = r13 >> 2;
+	f7 = f2+f18;
+	heapFloat[(fp+-128)] = f11;
+	f5 = f3+f5;
+	heapFloat[(r14+1)] = f7;
+	heapFloat[(r14+2)] = f5;
+	heap32[(r14+3)] = 0;
+	f5 = heapFloat[(fp+-180)];
+	f7 = heapFloat[(r8+1)];
+	f11 = heapFloat[(r8+2)];
+	f6 = f6*f5;
+	f8 = f8*f7;
+	f9 = f9*f5;
+	f10 = f10*f7;
+	f6 = f6+f8;
+	f8 = f14*f11;
+	f6 = f6+f8;
+	f5 = f15*f5;
+	f7 = f16*f7;
+	f8 = f9+f10;
+	f9 = f17*f11;
+	r14 = sp + -496;
+	f8 = f8+f9;
+	f5 = f5+f7;
+	f7 = f12*f11;
+	f6 = f0+f6;
+	f5 = f5+f7;
+	r15 = r14 >> 2;
+	f7 = f2+f8;
+	heapFloat[(fp+-124)] = f6;
+	f5 = f3+f5;
+	heapFloat[(r15+1)] = f7;
+	heapFloat[(r15+2)] = f5;
+	heap32[(r15+3)] = 0;
+	heap32[(g0)] = r_g0;
+	heap32[(g0+1)] = r14;
+	heap32[(g0+2)] = r13;
+	heap32[(g0+3)] = r6;
+	__FUNCTION_TABLE__[(r12)>>2](i7);
+	heap32[(r7)] = 0;
+	r2 = (r2 + r5)|0;
+	r5 = (r10 + r5)|0;
+	heap32[(r3)] = 0;
+	r2 = r2 >> 2;
+	heapFloat[(r2)] = f1;
+	r3 = r5 >> 2;
+	heapFloat[(r3)] = f1;
+	r5 = heap32[(r1)];
+	r5 = r5 >> 2;
+	r5 = heap32[(r5+4)];
+	heap32[(g0)] = r0;
+	__FUNCTION_TABLE__[(r5)>>2](i7);
+	r7 = r_g0 >> 2;
+	f1 = heapFloat[(fp+-184)];
+	f5 = heapFloat[(r4)];
+	f6 = heapFloat[(r9+1)];
+	f7 = heapFloat[(r4+1)];
+	r7 = heap32[(r7)];
+	f8 = heapFloat[(r4+4)];
+	f9 = heapFloat[(r4+5)];
+	f10 = f5*f1;
+	f11 = f7*f6;
+	f12 = heapFloat[(r9+2)];
+	f13 = heapFloat[(r4+2)];
+	r7 = r7 >> 2;
+	f14 = heapFloat[(r4+8)];
+	f15 = heapFloat[(r4+9)];
+	f16 = heapFloat[(r4+6)];
+	f17 = f8*f1;
+	f18 = f9*f6;
+	f10 = f10+f11;
+	f11 = f13*f12;
+	f10 = f10+f11;
+	f11 = heapFloat[(r4+10)];
+	r7 = heap32[(r7+2)];
+	f1 = f14*f1;
+	f6 = f15*f6;
+	f17 = f17+f18;
+	f18 = f16*f12;
+	r10 = sp + -480;
+	f17 = f17+f18;
+	f1 = f1+f6;
+	f6 = f11*f12;
+	f10 = f0+f10;
+	f1 = f1+f6;
+	r11 = r10 >> 2;
+	f6 = f2+f17;
+	heapFloat[(fp+-120)] = f10;
+	f1 = f3+f1;
+	heapFloat[(r11+1)] = f6;
+	heapFloat[(r11+2)] = f1;
+	heap32[(r11+3)] = 0;
+	f1 = heapFloat[(fp+-180)];
+	f6 = heapFloat[(r8+1)];
+	f10 = heapFloat[(r8+2)];
+	f5 = f5*f1;
+	f7 = f7*f6;
+	f8 = f8*f1;
+	f9 = f9*f6;
+	f5 = f5+f7;
+	f7 = f13*f10;
+	f5 = f5+f7;
+	f1 = f14*f1;
+	f6 = f15*f6;
+	f7 = f8+f9;
+	f8 = f16*f10;
+	r11 = sp + -464;
+	f7 = f7+f8;
+	f1 = f1+f6;
+	f6 = f11*f10;
+	f5 = f0+f5;
+	f1 = f1+f6;
+	r12 = r11 >> 2;
+	f6 = f2+f7;
+	heapFloat[(fp+-116)] = f5;
+	f1 = f3+f1;
+	heapFloat[(r12+1)] = f6;
+	heapFloat[(r12+2)] = f1;
+	heap32[(r12+3)] = 0;
+	heap32[(g0)] = r_g0;
+	heap32[(g0+1)] = r11;
+	heap32[(g0+2)] = r10;
+	heap32[(g0+3)] = r6;
+	__FUNCTION_TABLE__[(r7)>>2](i7);
+	heapFloat[(r2)] = f4;
+	heapFloat[(r3)] = f4;
+	r1 = heap32[(r1)];
+	r1 = r1 >> 2;
+	r1 = heap32[(r1+4)];
+	heap32[(g0)] = r0;
+	__FUNCTION_TABLE__[(r1)>>2](i7);
+	r1 = r_g0 >> 2;
+	f1 = heapFloat[(fp+-184)];
+	f4 = heapFloat[(r4)];
+	f5 = heapFloat[(r9+1)];
+	f6 = heapFloat[(r4+1)];
+	r1 = heap32[(r1)];
+	f7 = heapFloat[(r4+4)];
+	f8 = heapFloat[(r4+5)];
+	f9 = f4*f1;
+	f10 = f6*f5;
+	f11 = heapFloat[(r9+2)];
+	f12 = heapFloat[(r4+2)];
+	r1 = r1 >> 2;
+	f13 = heapFloat[(r4+8)];
+	f14 = heapFloat[(r4+9)];
+	f15 = heapFloat[(r4+6)];
+	f16 = f7*f1;
+	f17 = f8*f5;
+	f9 = f9+f10;
+	f10 = f12*f11;
+	f9 = f9+f10;
+	f10 = heapFloat[(r4+10)];
+	r1 = heap32[(r1+2)];
+	f1 = f13*f1;
+	f5 = f14*f5;
+	f16 = f16+f17;
+	f17 = f15*f11;
+	r2 = sp + -448;
+	f16 = f16+f17;
+	f1 = f1+f5;
+	f5 = f10*f11;
+	f9 = f0+f9;
+	f1 = f1+f5;
+	r3 = r2 >> 2;
+	f5 = f2+f16;
+	heapFloat[(fp+-112)] = f9;
+	f1 = f3+f1;
+	heapFloat[(r3+1)] = f5;
+	heapFloat[(r3+2)] = f1;
+	heap32[(r3+3)] = 0;
+	f1 = heapFloat[(fp+-180)];
+	f5 = heapFloat[(r8+1)];
+	f9 = heapFloat[(r8+2)];
+	f4 = f4*f1;
+	f6 = f6*f5;
+	f7 = f7*f1;
+	f8 = f8*f5;
+	f4 = f4+f6;
+	f6 = f12*f9;
+	f4 = f4+f6;
+	f1 = f13*f1;
+	f5 = f14*f5;
+	f6 = f7+f8;
+	f7 = f15*f9;
+	r3 = sp + -432;
+	f6 = f6+f7;
+	f1 = f1+f5;
+	f5 = f10*f9;
+	f0 = f0+f4;
+	f1 = f1+f5;
+	r4 = r3 >> 2;
+	f2 = f2+f6;
+	heapFloat[(fp+-108)] = f0;
+	f0 = f3+f1;
+	heapFloat[(r4+1)] = f2;
+	heapFloat[(r4+2)] = f0;
+	heap32[(r4+3)] = 0;
+	heap32[(g0)] = r_g0;
+	heap32[(g0+1)] = r3;
+__label__ = 30;
+break _1;
+}
+else{
+__label__ = 32;
+break _1;
+}
+}
+}
+else{
+	if(r3 ==0) //_LBB222_14
+{
+	r3 = sp + -704;
+	f0 = heapFloat[(r5+8)];
+	f1 = heapFloat[(r5+9)];
+	f2 = heapFloat[(r5+7)];
+	r7 = r3 >> 2;
+	heap32[(r7+3)] = heap32[(r5+10)];
+	r8 = heap32[(r5)];
+	r8 = r8 >> 2;
+	r8 = heap32[(r8+11)];
+	heap32[(g0)] = r2;
+	__FUNCTION_TABLE__[(r8)>>2](i7);
+	f3 = f_g0;
+	r8 = heap32[(r5)];
+	r8 = r8 >> 2;
+	r8 = heap32[(r8+11)];
+	heap32[(g0)] = r2;
+	__FUNCTION_TABLE__[(r8)>>2](i7);
+	f4 = f_g0;
+	r5 = heap32[(r5)];
+	r5 = r5 >> 2;
+	r5 = heap32[(r5+11)];
+	heap32[(g0)] = r2;
+	__FUNCTION_TABLE__[(r5)>>2](i7);
+	f2 = f2+f_g0;
+	f0 = f0+f4;
+	heapFloat[(fp+-176)] = f2;
+	f1 = f1+f3;
+	heapFloat[(r7+1)] = f0;
+	heapFloat[(r7+2)] = f1;
+	r1 = heap32[(r1)];
+	r1 = r1 >> 2;
+	r1 = heap32[(r1+4)];
+	heap32[(g0)] = r0;
+	__FUNCTION_TABLE__[(r1)>>2](i7);
+	r1 = r_g0 >> 2;
+	r1 = heap32[(r1)];
+	r1 = r1 >> 2;
+	f0 = heapFloat[(r7+2)];
+	f1 = heapFloat[(r7+1)];
+	f2 = heapFloat[(fp+-176)];
+	r1 = heap32[(r1+18)];
+	r2 = sp + -624;
+	f2 = -f2;
+	r5 = r2 >> 2;
+	f1 = -f1;
+	heapFloat[(fp+-156)] = f2;
+	f0 = -f0;
+	heapFloat[(r5+1)] = f1;
+	heapFloat[(r5+2)] = f0;
+	heap32[(r5+3)] = 0;
+	heap32[(g0)] = r_g0;
+	heap32[(g0+1)] = r2;
+	heap32[(g0+2)] = r3;
+	heap32[(g0+3)] = r4;
+	heap32[(g0+4)] = r6;
+	__FUNCTION_TABLE__[(r1)>>2](i7);
+	return;
+}
+else{
+	if(r3 ==8) //_LBB222_15
+{
+	r3 = heap32[(r5)];
+	r3 = r3 >> 2;
+	r3 = heap32[(r3+11)];
+	heap32[(g0)] = r2;
+	__FUNCTION_TABLE__[(r3)>>2](i7);
+	f0 = f_g0;
+	r1 = heap32[(r1)];
+	r1 = r1 >> 2;
+	r1 = heap32[(r1+4)];
+	heap32[(g0)] = r0;
+	__FUNCTION_TABLE__[(r1)>>2](i7);
+	r1 = r_g0 >> 2;
+	r1 = heap32[(r1)];
+	r1 = r1 >> 2;
+	r1 = heap32[(r1+4)];
+	heap32[(g0)] = r_g0;
+	heapFloat[(g0+1)] = f0;
+	heap32[(g0+2)] = r4;
+__label__ = 31;
+}
+else{
+__label__ = 32;
+}
+}
+}
+}
+} while(0);
+_41: do {
+switch(__label__ ){//multiple entries
+case 30:
+	heap32[(g0+2)] = r2;
+__label__ = 31;
+break _41;
+break;
+case 32:
+	r7 = (r3 + -21)|0;
+	if(uint(r7) <uint(9)) //_LBB222_34
+{
+	r3 = sp + -1024;
+	r7 = r3 >> 2;
+	heap32[(fp+-256)] = 1566444395;
+	heap32[(r7+1)] = 1566444395;
+	heap32[(r7+2)] = 1566444395;
+	r8 = sp + -1040;
+	heap32[(r7+3)] = 0;
+	r7 = r8 >> 2;
+	heap32[(fp+-260)] = -581039253;
+	heap32[(r7+1)] = -581039253;
+	heap32[(r7+2)] = -581039253;
+	heap32[(r7+3)] = 0;
+	r7 = heap32[(r1)];
+	r7 = r7 >> 2;
+	r7 = heap32[(r7+4)];
+	r9 = _ZTV17DebugDrawcallback;
+	heap32[(g0)] = r0;
+	r10 = sp + -1136;
+	r11 = (r9 + 8)|0;
+	__FUNCTION_TABLE__[(r7)>>2](i7);
+	r12 = r10 >> 2;
+	r9 = (r9 + 32)|0;
+	heap32[(fp+-284)] = r11;
+	heap32[(r12+1)] = r9;
+	r13 = r6 >> 2;
+	heap32[(r12+2)] = r_g0;
+	heap32[(r12+3)] = heap32[(r13)];
+	heap32[(r12+4)] = heap32[(r13+1)];
+	heap32[(r12+5)] = heap32[(r13+2)];
+	r7 = r4 >> 2;
+	heap32[(r12+6)] = heap32[(r13+3)];
+	heap32[(r12+7)] = heap32[(r7)];
+	heap32[(r12+8)] = heap32[(r7+1)];
+	heap32[(r12+9)] = heap32[(r7+2)];
+	heap32[(r12+10)] = heap32[(r7+3)];
+	heap32[(r12+11)] = heap32[(r7+4)];
+	heap32[(r12+12)] = heap32[(r7+5)];
+	heap32[(r12+13)] = heap32[(r7+6)];
+	heap32[(r12+14)] = heap32[(r7+7)];
+	heap32[(r12+15)] = heap32[(r7+8)];
+	heap32[(r12+16)] = heap32[(r7+9)];
+	heap32[(r12+17)] = heap32[(r7+10)];
+	heap32[(r12+18)] = heap32[(r7+11)];
+	heap32[(r12+19)] = heap32[(r7+12)];
+	heap32[(r12+20)] = heap32[(r7+13)];
+	heap32[(r12+21)] = heap32[(r7+14)];
+	heap32[(r12+22)] = heap32[(r7+15)];
+	r7 = heap32[(r5)];
+	r7 = r7 >> 2;
+	r7 = heap32[(r7+15)];
+	heap32[(g0)] = r2;
+	heap32[(g0+1)] = r10;
+	heap32[(g0+2)] = r8;
+	heap32[(g0+3)] = r3;
+	__FUNCTION_TABLE__[(r7)>>2](i7);
+	r3 = r10 | 4;
+	r7 = _ZTV31btInternalTriangleIndexCallback;
+	heap32[(fp+-284)] = r11;
+	r8 = _ZTV18btTriangleCallback;
+	r3 = r3 >> 2;
+	r7 = (r7 + 8)|0;
+	heap32[(r12+1)] = r9;
+	r8 = (r8 + 8)|0;
+	heap32[(r3)] = r7;
+	heap32[(fp+-284)] = r8;
+	r3 = heap32[(r5+1)];
+}
+	if(r3 ==3) //_LBB222_37
+{
+	r3 = sp + -1152;
+	r7 = r3 >> 2;
+	heap32[(fp+-288)] = 1566444395;
+	heap32[(r7+1)] = 1566444395;
+	heap32[(r7+2)] = 1566444395;
+	r8 = sp + -1168;
+	heap32[(r7+3)] = 0;
+	r7 = r8 >> 2;
+	heap32[(fp+-292)] = -581039253;
+	heap32[(r7+1)] = -581039253;
+	heap32[(r7+2)] = -581039253;
+	heap32[(r7+3)] = 0;
+	r7 = heap32[(r1)];
+	r7 = r7 >> 2;
+	r7 = heap32[(r7+4)];
+	r9 = _ZTV17DebugDrawcallback;
+	heap32[(g0)] = r0;
+	r10 = sp + -1264;
+	r11 = (r9 + 8)|0;
+	__FUNCTION_TABLE__[(r7)>>2](i7);
+	r12 = r10 >> 2;
+	r9 = (r9 + 32)|0;
+	heap32[(fp+-316)] = r11;
+	heap32[(r12+1)] = r9;
+	r13 = r6 >> 2;
+	heap32[(r12+2)] = r_g0;
+	heap32[(r12+3)] = heap32[(r13)];
+	heap32[(r12+4)] = heap32[(r13+1)];
+	heap32[(r12+5)] = heap32[(r13+2)];
+	r7 = r4 >> 2;
+	heap32[(r12+6)] = heap32[(r13+3)];
+	heap32[(r12+7)] = heap32[(r7)];
+	heap32[(r12+8)] = heap32[(r7+1)];
+	heap32[(r12+9)] = heap32[(r7+2)];
+	heap32[(r12+10)] = heap32[(r7+3)];
+	heap32[(r12+11)] = heap32[(r7+4)];
+	heap32[(r12+12)] = heap32[(r7+5)];
+	heap32[(r12+13)] = heap32[(r7+6)];
+	heap32[(r12+14)] = heap32[(r7+7)];
+	heap32[(r12+15)] = heap32[(r7+8)];
+	heap32[(r12+16)] = heap32[(r7+9)];
+	heap32[(r12+17)] = heap32[(r7+10)];
+	heap32[(r12+18)] = heap32[(r7+11)];
+	heap32[(r12+19)] = heap32[(r7+12)];
+	heap32[(r12+20)] = heap32[(r7+13)];
+	heap32[(r12+21)] = heap32[(r7+14)];
+	heap32[(r12+22)] = heap32[(r7+15)];
+	r7 = heap32[(r5+22)];
+	r13 = r7 >> 2;
+	r13 = heap32[(r13)];
+	r13 = r13 >> 2;
+	r13 = heap32[(r13+2)];
+	r14 = (r10 + 4)|0;
+	heap32[(g0)] = r7;
+	heap32[(g0+1)] = r14;
+	heap32[(g0+2)] = r8;
+	heap32[(g0+3)] = r3;
+	__FUNCTION_TABLE__[(r13)>>2](i7);
+	r3 = r10 | 4;
+	r7 = _ZTV31btInternalTriangleIndexCallback;
+	heap32[(fp+-316)] = r11;
+	r8 = _ZTV18btTriangleCallback;
+	r3 = r3 >> 2;
+	r7 = (r7 + 8)|0;
+	heap32[(r12+1)] = r9;
+	r8 = (r8 + 8)|0;
+	heap32[(r3)] = r7;
+	heap32[(fp+-316)] = r8;
+	r3 = heap32[(r5+1)];
+}
+	if(r3 >6) //_LBB222_42
+{
+__label__ = 40;
+}
+else{
+	r3 = heap32[(r5)];
+	r3 = r3 >> 2;
+	r3 = heap32[(r3+22)];
+	heap32[(g0)] = r2;
+	__FUNCTION_TABLE__[(r3)>>2](i7);
+	r3 = r_g0;
+	if(r3 <1) //_LBB222_42
+{
+__label__ = 40;
+}
+else{
+	r3 = 0;
+_52: while(true){
+	r7 = heap32[(r5)];
+	r7 = r7 >> 2;
+	r7 = heap32[(r7+23)];
+	r8 = sp + -1296;
+	r9 = sp + -1280;
+	heap32[(g0)] = r2;
+	heap32[(g0+1)] = r3;
+	heap32[(g0+2)] = r9;
+	heap32[(g0+3)] = r8;
+	__FUNCTION_TABLE__[(r7)>>2](i7);
+	r7 = r4 >> 2;
+	r9 = r9 >> 2;
+	f0 = heapFloat[(fp+-320)];
+	f1 = heapFloat[(r7)];
+	f2 = heapFloat[(r9+1)];
+	f3 = heapFloat[(r7+1)];
+	f4 = heapFloat[(r7+4)];
+	f5 = heapFloat[(r7+5)];
+	f6 = f1*f0;
+	f7 = f3*f2;
+	f8 = heapFloat[(r9+2)];
+	f9 = heapFloat[(r7+2)];
+	f10 = heapFloat[(r7+8)];
+	f11 = heapFloat[(r7+9)];
+	f12 = heapFloat[(r7+6)];
+	f13 = f4*f0;
+	f14 = f5*f2;
+	f6 = f6+f7;
+	f7 = f9*f8;
+	f15 = heapFloat[(r7+10)];
+	f0 = f10*f0;
+	f2 = f11*f2;
+	f13 = f13+f14;
+	f14 = f12*f8;
+	f6 = f6+f7;
+	f7 = heapFloat[(r7+12)];
+	f16 = heapFloat[(r7+14)];
+	f17 = heapFloat[(r7+13)];
+	r7 = sp + -1312;
+	f13 = f13+f14;
+	f0 = f0+f2;
+	f2 = f15*f8;
+	f6 = f6+f7;
+	f0 = f0+f2;
+	r9 = r7 >> 2;
+	f2 = f13+f17;
+	heapFloat[(fp+-328)] = f6;
+	f0 = f0+f16;
+	heapFloat[(r9+1)] = f2;
+	heapFloat[(r9+2)] = f0;
+	heap32[(r9+3)] = 0;
+	r8 = r8 >> 2;
+	f0 = heapFloat[(fp+-324)];
+	f2 = heapFloat[(r8+1)];
+	f6 = heapFloat[(r8+2)];
+	f1 = f1*f0;
+	f3 = f3*f2;
+	f4 = f4*f0;
+	f5 = f5*f2;
+	f1 = f1+f3;
+	f3 = f9*f6;
+	f1 = f1+f3;
+	f0 = f10*f0;
+	f2 = f11*f2;
+	f3 = f4+f5;
+	f4 = f12*f6;
+	r8 = sp + -1328;
+	f3 = f3+f4;
+	f0 = f0+f2;
+	f2 = f15*f6;
+	f1 = f1+f7;
+	f0 = f0+f2;
+	r9 = r8 >> 2;
+	f2 = f3+f17;
+	heapFloat[(fp+-332)] = f1;
+	f0 = f0+f16;
+	heapFloat[(r9+1)] = f2;
+	heapFloat[(r9+2)] = f0;
+	heap32[(r9+3)] = 0;
+	r9 = heap32[(r1)];
+	r9 = r9 >> 2;
+	r9 = heap32[(r9+4)];
+	heap32[(g0)] = r0;
+	__FUNCTION_TABLE__[(r9)>>2](i7);
+	r10 = r_g0 >> 2;
+	r10 = heap32[(r10)];
+	r10 = r10 >> 2;
+	r10 = heap32[(r10+2)];
+	heap32[(g0)] = r_g0;
+	heap32[(g0+1)] = r7;
+	heap32[(g0+2)] = r8;
+	heap32[(g0+3)] = r6;
+	__FUNCTION_TABLE__[(r10)>>2](i7);
+	r7 = heap32[(r5)];
+	r7 = r7 >> 2;
+	r7 = heap32[(r7+22)];
+	r3 = (r3 + 1)|0;
+	heap32[(g0)] = r2;
+	__FUNCTION_TABLE__[(r7)>>2](i7);
+	r7 = r_g0;
+	if(r7 >r3) //_LBB222_41
+{
+continue _52;
+}
+else{
+__label__ = 40;
+break _41;
+}
+}
+}
+}
+break;
+}
+} while(0);
+switch(__label__ ){//multiple entries
+case 31:
+	heap32[(g0+3)] = r6;
+	__FUNCTION_TABLE__[(r1)>>2](i7);
+	return;
+break;
+case 40:
+	return;
+break;
+}
+}
+
+function _ZNK16btCollisionWorld7rayTestERK9btVector3S2_RNS_17RayResultCallbackE(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+	var r6;
+	var r7;
+	var f0;
+	var f1;
+	var f2;
+	var f3;
+	var f4;
+	var f5;
+	var f6;
+	var f7;
+var __label__ = 0;
+	i7 = sp + -280;var g0 = i7>>2; // save stack
+	r0 = _ZTV19btSingleRayCallback;
+	r1 = heap32[(fp+1)];
+	r0 = (r0 + 8)|0;
+	r2 = sp + -256;
+	r3 = r1 >> 2;
+	heap32[(fp+-64)] = r0;
+	r0 = r2 >> 2;
+	f0 = heapFloat[(r3)];
+	heapFloat[(r0+9)] = f0;
+	f1 = heapFloat[(r3+1)];
+	heapFloat[(r0+10)] = f1;
+	f2 = heapFloat[(r3+2)];
+	heapFloat[(r0+11)] = f2;
+	r4 = heap32[(fp+2)];
+	f3 = heapFloat[(r3+3)];
+	r3 = r4 >> 2;
+	heapFloat[(r0+12)] = f3;
+	f4 = heapFloat[(r3)];
+	heapFloat[(r0+13)] = f4;
+	f5 = heapFloat[(r3+1)];
+	heapFloat[(r0+14)] = f5;
+	f6 = heapFloat[(r3+2)];
+	heapFloat[(r0+15)] = f6;
+	f7 = heapFloat[(r3+3)];
+	r3 = heap32[(fp)];
+	heapFloat[(r0+16)] = f7;
+	r5 = heap32[(fp+3)];
+	heap32[(r0+53)] = r3;
+	heap32[(r0+54)] = r5;
+	heap32[(r0+17)] = 1065353216;
+	heap32[(r0+18)] = 0;
+	heap32[(r0+19)] = 0;
+	heap32[(r0+20)] = 0;
+	heap32[(r0+21)] = 0;
+	heap32[(r0+22)] = 1065353216;
+	heap32[(r0+23)] = 0;
+	heap32[(r0+24)] = 0;
+	heap32[(r0+25)] = 0;
+	heap32[(r0+26)] = 0;
+	heap32[(r0+27)] = 1065353216;
+	heap32[(r0+28)] = 0;
+	heapFloat[(r0+29)] = f0;
+	heapFloat[(r0+30)] = f1;
+	heapFloat[(r0+31)] = f2;
+	heapFloat[(r0+32)] = f3;
+	heap32[(r0+33)] = 1065353216;
+	heap32[(r0+34)] = 0;
+	heap32[(r0+35)] = 0;
+	heap32[(r0+36)] = 0;
+	heap32[(r0+37)] = 0;
+	heap32[(r0+38)] = 1065353216;
+	heap32[(r0+39)] = 0;
+	heap32[(r0+40)] = 0;
+	heap32[(r0+41)] = 0;
+	heap32[(r0+42)] = 0;
+	heap32[(r0+43)] = 1065353216;
+	heap32[(r0+44)] = 0;
+	heapFloat[(r0+45)] = f4;
+	f0 = f4-f0;
+	heapFloat[(r0+46)] = f5;
+	f1 = f5-f1;
+	heapFloat[(r0+47)] = f6;
+	f2 = f6-f2;
+	f3 = f0*f0;
+	f4 = f1*f1;
+	heapFloat[(r0+48)] = f7;
+	f3 = f3+f4;
+	f4 = f2*f2;
+	f3 = f3+f4;
+	heapFloat[(g0)] = f3;
+	f3 =                         1;
+	sqrtf(i7);
+	f4 = f3/f_g0;
+	f0 = f0*f4;
+	f1 = f1*f4;
+	f2 = f2*f4;
+	f4 =                         0;
+	if(f0 !=f4) //_LBB223_2
+{
+	f5 = f3/f0;
+}
+else{
+	f5 =        999999984306749440;
+}
+	heapFloat[(r0+1)] = f5;
+	if(f1 !=f4) //_LBB223_5
+{
+	f6 = f3/f1;
+}
+else{
+	f6 =        999999984306749440;
+}
+	heapFloat[(r0+2)] = f6;
+	if(f2 !=f4) //_LBB223_8
+{
+	f3 = f3/f2;
+}
+else{
+	f3 =        999999984306749440;
+}
+	r5 = f5 < f4;
+	r6 = f6 < f4;
+	r5 = r5 & 1;
+	heapFloat[(r0+3)] = f3;
+	r7 = f3 < f4;
+	r6 = r6 & 1;
+	heap32[(r0+5)] = r5;
+	r5 = r7 & 1;
+	heap32[(r0+6)] = r6;
+	heap32[(r0+7)] = r5;
+	f3 = heapFloat[(r0+14)];
+	f4 = heapFloat[(r0+10)];
+	f5 = heapFloat[(r0+13)];
+	f6 = heapFloat[(r0+9)];
+	f5 = f5-f6;
+	f3 = f3-f4;
+	f4 = heapFloat[(r0+15)];
+	f6 = heapFloat[(r0+11)];
+	f0 = f0*f5;
+	f1 = f1*f3;
+	f3 = f4-f6;
+	f0 = f0+f1;
+	f1 = f2*f3;
+	f0 = f0+f1;
+	r3 = r3 >> 2;
+	heapFloat[(r0+8)] = f0;
+	r0 = heap32[(r3+20)];
+	r3 = r0 >> 2;
+	r3 = heap32[(r3)];
+	r3 = r3 >> 2;
+	r3 = heap32[(r3+6)];
+	r5 = sp + -32;
+	r6 = r5 >> 2;
+	heap32[(fp+-8)] = 0;
+	heap32[(r6+1)] = 0;
+	heap32[(r6+2)] = 0;
+	r7 = sp + -16;
+	heap32[(r6+3)] = 0;
+	r6 = r7 >> 2;
+	heap32[(fp+-4)] = 0;
+	heap32[(r6+1)] = 0;
+	heap32[(r6+2)] = 0;
+	heap32[(r6+3)] = 0;
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r1;
+	heap32[(g0+2)] = r4;
+	heap32[(g0+3)] = r2;
+	heap32[(g0+4)] = r7;
+	heap32[(g0+5)] = r5;
+	__FUNCTION_TABLE__[(r3)>>2](i7);
+	return;
+}
+
+function _ZN16btCollisionWorld18addCollisionObjectEP17btCollisionObjectss(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+	var r6;
+	var r7;
+	var r8;
+	var r9;
+	var r10;
+	var r11;
+	var r12;
+var __label__ = 0;
+	i7 = sp + -136;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp+1)];
+	if(r0 !=0) //_LBB224_2
+{
+	r1 = heap32[(fp)];
+	r2 = heap32[(fp+2)];
+	r3 = heap32[(fp+3)];
+	r4 = r1 >> 2;
+	r5 = heap32[(r4+2)];
+	r6 = 0;
+_3: while(true){
+	if(r5 >r6) //_LBB224_3
+{
+	r7 = heap32[(r4+4)];
+	r8 = r6 << 2;
+	r7 = (r7 + r8)|0;
+	r7 = r7 >> 2;
+	r7 = heap32[(r7)];
+	if(r7 ==r0) //_LBB224_6
+{
+__label__ = 6;
+break _3;
+}
+else{
+	r6 = (r6 + 1)|0;
+}
+}
+else{
+__label__ = 8;
+break _3;
+}
+}
+if (__label__ == 6){
+if(!(r5 ==r6)) //_LBB224_8
+{
+	r0 = _2E_str988;
+	r1 = _2E_str887;
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r1;
+	heap32[(g0+2)] = 114;
+	_assert(i7);
+}
+}
+	r6 = heap32[(r4+3)];
+	if(r6 ==r5) //_LBB224_10
+{
+	r7 = 1;
+	r8 = r5 << 1;
+	r8 = r5 == 0 ? r7 : r8;
+if(!(r6 >=r8)) //_LBB224_9
+{
+	if(r8 !=0) //_LBB224_13
+{
+	r6 = gNumAlignedAllocs;
+	r6 = r6 >> 2;
+	r9 = heap32[(r6)];
+	r10 = r8 << 2;
+	r9 = (r9 + 1)|0;
+	r10 = r10 | 3;
+	heap32[(r6)] = r9;
+	r6 = (r10 + 16)|0;
+	heap32[(g0)] = r6;
+	malloc(i7);
+	r6 = r_g0;
+	if(r6 !=0) //_LBB224_15
+{
+	r9 = 0;
+	r10 = (r6 + 4)|0;
+	r9 = (r9 - r10)|0;
+	r9 = r9 & 15;
+	r9 = (r6 + r9)|0;
+	r10 = (r9 + 4)|0;
+	r9 = r9 >> 2;
+	heap32[(r9)] = r6;
+	r6 = r10;
+}
+}
+else{
+	r6 = 0;
+}
+_19: do {
+	if(r5 <1) //_LBB224_18
+{
+	r10 = heap32[(r4+4)];
+}
+else{
+	r9 = 0;
+_22: while(true){
+	r10 = heap32[(r4+4)];
+	r11 = r9 << 2;
+	r12 = (r10 + r11)|0;
+	r12 = r12 >> 2;
+	r11 = (r6 + r11)|0;
+	r12 = heap32[(r12)];
+	r9 = (r9 + 1)|0;
+	r11 = r11 >> 2;
+	heap32[(r11)] = r12;
+if(!(r5 !=r9)) //_LBB224_19
+{
+break _19;
+}
+}
+}
+} while(0);
+	if(r10 !=0) //_LBB224_22
+{
+	r9 = heapU8[r1+20];
+	if(r9 !=0) //_LBB224_24
+{
+	r5 = gNumAlignedFree;
+	r5 = r5 >> 2;
+	r9 = heap32[(r5)];
+	r9 = (r9 + 1)|0;
+	r10 = r10 >> 2;
+	heap32[(r5)] = r9;
+	r5 = heap32[(r10+-1)];
+	heap32[(g0)] = r5;
+	free(i7);
+	r5 = heap32[(r4+2)];
+}
+	heap32[(r4+4)] = 0;
+}
+	heap8[r1+20] = r7;
+	heap32[(r4+4)] = r6;
+	heap32[(r4+3)] = r8;
+}
+}
+	r1 = r5 << 2;
+	r5 = heap32[(r4+4)];
+	r1 = (r5 + r1)|0;
+	r1 = r1 >> 2;
+	heap32[(r1)] = r0;
+	r1 = heap32[(r4+2)];
+	r1 = (r1 + 1)|0;
+	r5 = sp + -64;
+	r6 = r0 >> 2;
+	heap32[(r4+2)] = r1;
+	r1 = r5 >> 2;
+	heap32[(fp+-16)] = heap32[(r6+1)];
+	heap32[(r1+1)] = heap32[(r6+2)];
+	heap32[(r1+2)] = heap32[(r6+3)];
+	heap32[(r1+3)] = heap32[(r6+4)];
+	heap32[(r1+4)] = heap32[(r6+5)];
+	heap32[(r1+5)] = heap32[(r6+6)];
+	heap32[(r1+6)] = heap32[(r6+7)];
+	heap32[(r1+7)] = heap32[(r6+8)];
+	heap32[(r1+8)] = heap32[(r6+9)];
+	heap32[(r1+9)] = heap32[(r6+10)];
+	heap32[(r1+10)] = heap32[(r6+11)];
+	heap32[(r1+11)] = heap32[(r6+12)];
+	heap32[(r1+12)] = heap32[(r6+13)];
+	heap32[(r1+13)] = heap32[(r6+14)];
+	heap32[(r1+14)] = heap32[(r6+15)];
+	heap32[(r1+15)] = heap32[(r6+16)];
+	r1 = heap32[(r6+48)];
+	r7 = r1 >> 2;
+	r7 = heap32[(r7)];
+	r7 = r7 >> 2;
+	r7 = heap32[(r7+2)];
+	r8 = sp + -80;
+	r9 = sp + -96;
+	heap32[(g0)] = r1;
+	heap32[(g0+1)] = r5;
+	heap32[(g0+2)] = r8;
+	heap32[(g0+3)] = r9;
+	__FUNCTION_TABLE__[(r7)>>2](i7);
+	r1 = heap32[(r4+20)];
+	r5 = r1 >> 2;
+	r7 = heap32[(r6+48)];
+	r5 = heap32[(r5)];
+	r5 = r5 >> 2;
+	r7 = r7 >> 2;
+	r5 = heap32[(r5+2)];
+	r7 = heap32[(r7+1)];
+	r4 = heap32[(r4+6)];
+	heap32[(g0)] = r1;
+	heap32[(g0+1)] = r8;
+	heap32[(g0+2)] = r9;
+	heap32[(g0+3)] = r7;
+	heap32[(g0+4)] = r0;
+	heap32[(g0+5)] = r2;
+	heap32[(g0+6)] = r3;
+	heap32[(g0+7)] = r4;
+	heap32[(g0+8)] = 0;
+	__FUNCTION_TABLE__[(r5)>>2](i7);
+	heap32[(r6+47)] = r_g0;
+	return;
+}
+else{
+	r0 = _2E_str786;
+	r1 = _2E_str887;
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r1;
+	heap32[(g0+2)] = 111;
+	_assert(i7);
+}
+}
+
+function _ZN16btCollisionWorld21removeCollisionObjectEP17btCollisionObject(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+	var r6;
+	var r7;
+var __label__ = 0;
+	i7 = sp + -16;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp+1)];
+	r1 = r0 >> 2;
+	r2 = heap32[(r1+47)];
+	r3 = heap32[(fp)];
+if(!(r2 ==0)) //_LBB225_2
+{
+	r4 = r3 >> 2;
+	r5 = heap32[(r4+20)];
+	r6 = r5 >> 2;
+	r6 = heap32[(r6)];
+	r6 = r6 >> 2;
+	r6 = heap32[(r6+9)];
+	heap32[(g0)] = r5;
+	__FUNCTION_TABLE__[(r6)>>2](i7);
+	r6 = r_g0 >> 2;
+	r6 = heap32[(r6)];
+	r6 = r6 >> 2;
+	r6 = heap32[(r6+10)];
+	r7 = heap32[(r4+6)];
+	heap32[(g0)] = r_g0;
+	heap32[(g0+1)] = r2;
+	heap32[(g0+2)] = r7;
+	__FUNCTION_TABLE__[(r6)>>2](i7);
+	r5 = heap32[(r4+20)];
+	r6 = r5 >> 2;
+	r6 = heap32[(r6)];
+	r6 = r6 >> 2;
+	r6 = heap32[(r6+3)];
+	r4 = heap32[(r4+6)];
+	heap32[(g0)] = r5;
+	heap32[(g0+1)] = r2;
+	heap32[(g0+2)] = r4;
+	__FUNCTION_TABLE__[(r6)>>2](i7);
+	heap32[(r1+47)] = 0;
+}
+	r1 = r3 >> 2;
+	r2 = heap32[(r1+2)];
+	r3 = 0;
+_4: while(true){
+	if(r2 >r3) //_LBB225_3
+{
+	r4 = heap32[(r1+4)];
+	r5 = r3 << 2;
+	r4 = (r4 + r5)|0;
+	r4 = r4 >> 2;
+	r4 = heap32[(r4)];
+	if(r4 !=r0) //_LBB225_5
+{
+	r3 = (r3 + 1)|0;
+continue _4;
+}
+else{
+__label__ = 7;
+break _4;
+}
+}
+else{
+__label__ = 6;
+break _4;
+}
+}
+if (__label__ == 6){
+	r3 = r2;
+}
+if(!(r2 <=r3)) //_LBB225_10
+{
+	r0 = (r2 + -1)|0;
+	r2 = r3 << 2;
+	r3 = heap32[(r1+4)];
+	r0 = r0 << 2;
+	r2 = (r3 + r2)|0;
+	r3 = (r3 + r0)|0;
+	r2 = r2 >> 2;
+	r3 = r3 >> 2;
+	r4 = heap32[(r2)];
+	r3 = heap32[(r3)];
+	heap32[(r2)] = r3;
+	r2 = heap32[(r1+4)];
+	r0 = (r2 + r0)|0;
+	r0 = r0 >> 2;
+	heap32[(r0)] = r4;
+	r0 = heap32[(r1+2)];
+	r0 = (r0 + -1)|0;
+	heap32[(r1+2)] = r0;
+}
+	return;
+}
+
+function _ZN16btCollisionWorld33performDiscreteCollisionDetectionEv(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+	var r6;
+	var r7;
+	var f0;
+	var f1;
+	var f2;
+var __label__ = 0;
+	i7 = sp + -40;var g0 = i7>>2; // save stack
+	r0 = _2E_str1190;
+	r1 = heap32[(fp)];
+	heap32[(g0)] = r0;
+	_ZN15CProfileManager13Start_ProfileEPKc(i7);
+	r0 = r1 >> 2;
+	r2 = heap32[(r0)];
+	r2 = r2 >> 2;
+	r2 = heap32[(r2+2)];
+	heap32[(g0)] = r1;
+	__FUNCTION_TABLE__[(r2)>>2](i7);
+	r2 = _2E_str1291;
+	heap32[(g0)] = r2;
+	_ZN15CProfileManager13Start_ProfileEPKc(i7);
+	r2 = heap32[(r0+20)];
+	r3 = r2 >> 2;
+	r3 = heap32[(r3)];
+	r3 = r3 >> 2;
+	r3 = heap32[(r3+8)];
+	r4 = heap32[(r0+6)];
+	heap32[(g0)] = r2;
+	heap32[(g0+1)] = r4;
+	r2 = _ZN15CProfileManager11CurrentNodeE;
+	__FUNCTION_TABLE__[(r3)>>2](i7);
+	r2 = r2 >> 2;
+	r3 = heap32[(r2)];
+	r4 = r3 >> 2;
+	r5 = heap32[(r4+4)];
+	r5 = (r5 + -1)|0;
+	heap32[(r4+4)] = r5;
+_1: do {
+if(!(r5 !=0)) //_LBB226_6
+{
+	r5 = heap32[(r4+1)];
+	if(r5 !=0) //_LBB226_3
+{
+	r3 = sp + -24;
+	heap32[(g0)] = r3;
+	heap32[(g0+1)] = 0;
+	r5 = _ZL13gProfileClock_2E_0;
+	gettimeofday(i7);
+	r5 = r5 >> 2;
+	r5 = heap32[(r5)];
+	r5 = r5 >> 2;
+	r3 = r3 >> 2;
+	r6 = heap32[(fp+-6)];
+	r7 = heap32[(r5)];
+	r6 = (r6 - r7)|0;
+	r3 = heap32[(r3+1)];
+	r5 = heap32[(r5+1)];
+	r3 = (r3 - r5)|0;
+	r5 = (r6 * 1000000)|0;
+	r3 = (r3 + r5)|0;
+	r5 = heap32[(r4+3)];
+	r3 = (r3 - r5)|0;
+	f0 = uint(r3); //fuitos r3, f0
+	f1 =                      1000;
+	f2 = heapFloat[(r4+2)];
+	f0 = f0/f1;
+	f0 = f2+f0;
+	heapFloat[(r4+2)] = f0;
+	r3 = heap32[(r4+4)];
+	if(r3 !=0) //_LBB226_6
+{
+break _1;
+}
+else{
+	r3 = heap32[(r2)];
+}
+}
+	r3 = r3 >> 2;
+	r3 = heap32[(r3+5)];
+	heap32[(r2)] = r3;
+}
+} while(0);
+	r3 = heap32[(r0+6)];
+	r4 = _2E_str1392;
+	heap32[(g0)] = r4;
+	_ZN15CProfileManager13Start_ProfileEPKc(i7);
+if(!(r3 ==0)) //_LBB226_8
+{
+	r4 = heap32[(r0+20)];
+	r5 = r3 >> 2;
+	r6 = r4 >> 2;
+	r5 = heap32[(r5)];
+	r6 = heap32[(r6)];
+	r5 = r5 >> 2;
+	r6 = r6 >> 2;
+	r5 = heap32[(r5+8)];
+	r0 = heap32[(r0+6)];
+	r6 = heap32[(r6+9)];
+	heap32[(g0)] = r4;
+	__FUNCTION_TABLE__[(r6)>>2](i7);
+	r1 = (r1 + 28)|0;
+	heap32[(g0)] = r3;
+	heap32[(g0+1)] = r_g0;
+	heap32[(g0+2)] = r1;
+	heap32[(g0+3)] = r0;
+	__FUNCTION_TABLE__[(r5)>>2](i7);
+}
+	r0 = heap32[(r2)];
+	r1 = r0 >> 2;
+	r3 = heap32[(r1+4)];
+	r3 = (r3 + -1)|0;
+	heap32[(r1+4)] = r3;
+_11: do {
+	if(r3 ==0) //_LBB226_10
+{
+	r3 = heap32[(r1+1)];
+	if(r3 !=0) //_LBB226_12
+{
+	r0 = sp + -16;
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = 0;
+	r3 = _ZL13gProfileClock_2E_0;
+	gettimeofday(i7);
+	r3 = r3 >> 2;
+	r3 = heap32[(r3)];
+	r3 = r3 >> 2;
+	r0 = r0 >> 2;
+	r4 = heap32[(fp+-4)];
+	r5 = heap32[(r3)];
+	r4 = (r4 - r5)|0;
+	r0 = heap32[(r0+1)];
+	r3 = heap32[(r3+1)];
+	r0 = (r0 - r3)|0;
+	r3 = (r4 * 1000000)|0;
+	r0 = (r0 + r3)|0;
+	r3 = heap32[(r1+3)];
+	r0 = (r0 - r3)|0;
+	f0 = uint(r0); //fuitos r0, f0
+	f1 =                      1000;
+	f2 = heapFloat[(r1+2)];
+	f0 = f0/f1;
+	f0 = f2+f0;
+	heapFloat[(r1+2)] = f0;
+	r0 = heap32[(r2)];
+	r1 = heap32[(r1+4)];
+if(!(r1 ==0)) //_LBB226_14
+{
+break _11;
+}
+}
+	r0 = r0 >> 2;
+	r0 = heap32[(r0+5)];
+	heap32[(r2)] = r0;
+}
+} while(0);
+	r1 = r0 >> 2;
+	r3 = heap32[(r1+4)];
+	r3 = (r3 + -1)|0;
+	heap32[(r1+4)] = r3;
+_17: do {
+if(!(r3 !=0)) //_LBB226_21
+{
+	r3 = heap32[(r1+1)];
+	if(r3 !=0) //_LBB226_18
+{
+	r0 = sp + -8;
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = 0;
+	r3 = _ZL13gProfileClock_2E_0;
+	gettimeofday(i7);
+	r3 = r3 >> 2;
+	r3 = heap32[(r3)];
+	r3 = r3 >> 2;
+	r0 = r0 >> 2;
+	r4 = heap32[(fp+-2)];
+	r5 = heap32[(r3)];
+	r4 = (r4 - r5)|0;
+	r0 = heap32[(r0+1)];
+	r3 = heap32[(r3+1)];
+	r0 = (r0 - r3)|0;
+	r3 = (r4 * 1000000)|0;
+	r0 = (r0 + r3)|0;
+	r3 = heap32[(r1+3)];
+	r0 = (r0 - r3)|0;
+	f0 = uint(r0); //fuitos r0, f0
+	f1 =                      1000;
+	f2 = heapFloat[(r1+2)];
+	f0 = f0/f1;
+	f0 = f2+f0;
+	heapFloat[(r1+2)] = f0;
+	r0 = heap32[(r1+4)];
+	if(r0 !=0) //_LBB226_21
+{
+break _17;
+}
+else{
+	r0 = heap32[(r2)];
+}
+}
+	r0 = r0 >> 2;
+	r0 = heap32[(r0+5)];
+	heap32[(r2)] = r0;
+}
+} while(0);
+	return;
+}
+
+function _ZN16btCollisionWorld9serializeEP12btSerializer(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+var __label__ = 0;
+	i7 = sp + -8;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp+1)];
+	r1 = r0 >> 2;
+	r2 = heap32[(r1)];
+	r2 = r2 >> 2;
+	r2 = heap32[(r2+8)];
+	heap32[(g0)] = r0;
+	__FUNCTION_TABLE__[(r2)>>2](i7);
+	r2 = heap32[(fp)];
+	heap32[(g0)] = r2;
+	heap32[(g0+1)] = r0;
+	_ZN16btCollisionWorld25serializeCollisionObjectsEP12btSerializer(i7);
+	r1 = heap32[(r1)];
+	r1 = r1 >> 2;
+	r1 = heap32[(r1+9)];
+	heap32[(g0)] = r0;
+	__FUNCTION_TABLE__[(r1)>>2](i7);
+	return;
+}
+
+function _ZN21btSingleSweepCallbackD0Ev(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+var __label__ = 0;
+	i7 = sp + -8;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = _ZTV21btSingleSweepCallback;
+	r2 = r0 >> 2;
+	r1 = (r1 + 8)|0;
+	heap32[(r2)] = r1;
+	heap32[(g0)] = r0;
+	_ZdlPv(i7);
+	return;
+}
+
+function _ZN21btSingleSweepCallbackD1Ev(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+var __label__ = 0;
+	i7 = sp + 0;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = _ZTV21btSingleSweepCallback;
+	r0 = r0 >> 2;
+	r1 = (r1 + 8)|0;
+	heap32[(r0)] = r1;
+	return;
+}
+
+function _ZN21btSingleSweepCallback7processEPK17btBroadphaseProxy(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+	var r6;
+	var f0;
+	var f1;
+var __label__ = 0;
+	i7 = sp + -32;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = r0 >> 2;
+	r2 = heap32[(r1+46)];
+	r3 = r2 >> 2;
+	f0 = heapFloat[(r3+1)];
+	f1 =                         0;
+	if(f0 !=f1) //_LBB230_2
+{
+	r4 = heap32[(fp+1)];
+	r4 = r4 >> 2;
+	r4 = heap32[(r4)];
+	r3 = heap32[(r3)];
+	r3 = r3 >> 2;
+	r5 = r4 >> 2;
+	r3 = heap32[(r3+2)];
+	r6 = heap32[(r5+47)];
+	heap32[(g0)] = r2;
+	heap32[(g0+1)] = r6;
+	__FUNCTION_TABLE__[(r3)>>2](i7);
+	r2 = r_g0;
+	if(r2 !=0) //_LBB230_4
+{
+	f0 = heapFloat[(r1+47)];
+	r2 = heap32[(r1+46)];
+	r3 = heap32[(r5+48)];
+	r1 = heap32[(r1+48)];
+	r5 = (r0 + 36)|0;
+	r0 = (r0 + 100)|0;
+	r6 = (r4 + 4)|0;
+	heap32[(g0)] = r1;
+	heap32[(g0+1)] = r5;
+	heap32[(g0+2)] = r0;
+	heap32[(g0+3)] = r4;
+	heap32[(g0+4)] = r3;
+	heap32[(g0+5)] = r6;
+	heap32[(g0+6)] = r2;
+	heapFloat[(g0+7)] = f0;
+	_ZN16btCollisionWorld17objectQuerySingleEPK13btConvexShapeRK11btTransformS5_P17btCollisionObjectPK16btCollisionShapeS5_RNS_20ConvexResultCallbackEf(i7);
+	r0 = 1;
+	r_g0 = r0;
+	return;
+}
+else{
+	r0 = 1;
+}
+}
+else{
+	r0 = 0;
+}
+	r0 = r0 & 255;
+	r_g0 = r0;
+	return;
+}
+
+function _ZN19btSingleRayCallbackD0Ev(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+var __label__ = 0;
+	i7 = sp + -8;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = _ZTV19btSingleRayCallback;
+	r2 = r0 >> 2;
+	r1 = (r1 + 8)|0;
+	heap32[(r2)] = r1;
+	heap32[(g0)] = r0;
+	_ZdlPv(i7);
+	return;
+}
+
+function _ZN19btSingleRayCallbackD1Ev(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+var __label__ = 0;
+	i7 = sp + 0;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = _ZTV19btSingleRayCallback;
+	r0 = r0 >> 2;
+	r1 = (r1 + 8)|0;
+	heap32[(r0)] = r1;
+	return;
+}
+
+function _ZN19btSingleRayCallback7processEPK17btBroadphaseProxy(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+	var r6;
+	var f0;
+	var f1;
+var __label__ = 0;
+	i7 = sp + -24;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = r0 >> 2;
+	r2 = heap32[(r1+54)];
+	r3 = r2 >> 2;
+	f0 = heapFloat[(r3+1)];
+	f1 =                         0;
+	if(f0 !=f1) //_LBB233_2
+{
+	r4 = heap32[(fp+1)];
+	r4 = r4 >> 2;
+	r4 = heap32[(r4)];
+	r3 = heap32[(r3)];
+	r3 = r3 >> 2;
+	r5 = r4 >> 2;
+	r3 = heap32[(r3+2)];
+	r6 = heap32[(r5+47)];
+	heap32[(g0)] = r2;
+	heap32[(g0+1)] = r6;
+	__FUNCTION_TABLE__[(r3)>>2](i7);
+	r2 = r_g0;
+	if(r2 !=0) //_LBB233_4
+{
+	r1 = heap32[(r1+54)];
+	r2 = heap32[(r5+48)];
+	r3 = (r0 + 68)|0;
+	r0 = (r0 + 132)|0;
+	r5 = (r4 + 4)|0;
+	heap32[(g0)] = r3;
+	heap32[(g0+1)] = r0;
+	heap32[(g0+2)] = r4;
+	heap32[(g0+3)] = r2;
+	heap32[(g0+4)] = r5;
+	heap32[(g0+5)] = r1;
+	_ZN16btCollisionWorld13rayTestSingleERK11btTransformS2_P17btCollisionObjectPK16btCollisionShapeS2_RNS_17RayResultCallbackE(i7);
+	r0 = 1;
+	r_g0 = r0;
+	return;
+}
+else{
+	r0 = 1;
+}
+}
+else{
+	r0 = 0;
+}
+	r0 = r0 & 255;
+	r_g0 = r0;
+	return;
+}
+
+function _ZN16btCollisionWorldD2Ev(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+	var r6;
+	var r7;
+var __label__ = 0;
+	i7 = sp + -16;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = _ZTV16btCollisionWorld;
+	r2 = r0 >> 2;
+	r1 = (r1 + 8)|0;
+	heap32[(r2)] = r1;
+	r1 = heap32[(r2+4)];
+	r3 = heap32[(r2+2)];
+	if(r3 >0) //_LBB234_2
+{
+	r3 = 0;
+_3: while(true){
+	r4 = r3 << 2;
+	r1 = (r1 + r4)|0;
+	r1 = r1 >> 2;
+	r1 = heap32[(r1)];
+	r1 = r1 >> 2;
+	r4 = heap32[(r1+47)];
+if(!(r4 ==0)) //_LBB234_5
+{
+	r5 = heap32[(r2+20)];
+	r6 = r5 >> 2;
+	r6 = heap32[(r6)];
+	r6 = r6 >> 2;
+	r6 = heap32[(r6+9)];
+	heap32[(g0)] = r5;
+	__FUNCTION_TABLE__[(r6)>>2](i7);
+	r6 = r_g0 >> 2;
+	r6 = heap32[(r6)];
+	r6 = r6 >> 2;
+	r6 = heap32[(r6+10)];
+	r7 = heap32[(r2+6)];
+	heap32[(g0)] = r_g0;
+	heap32[(g0+1)] = r4;
+	heap32[(g0+2)] = r7;
+	__FUNCTION_TABLE__[(r6)>>2](i7);
+	r5 = heap32[(r2+20)];
+	r6 = r5 >> 2;
+	r6 = heap32[(r6)];
+	r6 = r6 >> 2;
+	r6 = heap32[(r6+3)];
+	r7 = heap32[(r2+6)];
+	heap32[(g0)] = r5;
+	heap32[(g0+1)] = r4;
+	heap32[(g0+2)] = r7;
+	__FUNCTION_TABLE__[(r6)>>2](i7);
+	heap32[(r1+47)] = 0;
+}
+	r3 = (r3 + 1)|0;
+	r1 = heap32[(r2+4)];
+	r4 = heap32[(r2+2)];
+	if(r4 >r3) //_LBB234_3
+{
+continue _3;
+}
+else{
+break _3;
+}
+}
+}
+if(!(r1 ==0)) //_LBB234_10
+{
+	r3 = heapU8[r0+20];
+if(!(r3 ==0)) //_LBB234_9
+{
+	r3 = gNumAlignedFree;
+	r3 = r3 >> 2;
+	r4 = heap32[(r3)];
+	r4 = (r4 + 1)|0;
+	r1 = r1 >> 2;
+	heap32[(r3)] = r4;
+	r1 = heap32[(r1+-1)];
+	heap32[(g0)] = r1;
+	free(i7);
+}
+	heap32[(r2+4)] = 0;
+}
+	r1 = 1;
+	heap8[r0+20] = r1;
+	heap32[(r2+4)] = 0;
+	heap32[(r2+2)] = 0;
+	heap32[(r2+3)] = 0;
+	return;
+}
+
+function _ZN16btCollisionWorld25serializeCollisionObjectsEP12btSerializer(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+	var r6;
+	var r7;
+	var r8;
+	var r9;
+	var r10;
+	var r11;
+	var r12;
+	var r13;
+	var r14;
+	var r15;
+	var r16;
+	var r17;
+	var r18;
+	var r19;
+	var r20;
+	var r21;
+	var r22;
+	var r23;
+	var r24;
+	var r25;
+var __label__ = 0;
+	i7 = sp + -16;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r0 = r0 >> 2;
+	r1 = heap32[(r0+2)];
+if(!(r1 <1)) //_LBB235_110
+{
+	r1 = heap32[(fp+1)];
+	heap32[(fp+-2)] = r1;
+	r1 = 0;
+_3: while(true){
+	r2 = heap32[(r0+4)];
+	r3 = r1 << 2;
+	r2 = (r2 + r3)|0;
+	r2 = r2 >> 2;
+	r2 = heap32[(r2)];
+	r3 = r2 >> 2;
+	r4 = heap32[(r3+58)];
+if(!(r4 !=1)) //_LBB235_4
+{
+	r3 = heap32[(r3)];
+	r3 = r3 >> 2;
+	r3 = heap32[(r3+6)];
+	heap32[(g0)] = r2;
+	r2 = heap32[(fp+-2)];
+	heap32[(g0+1)] = r2;
+	__FUNCTION_TABLE__[(r3)>>2](i7);
+}
+	r1 = (r1 + 1)|0;
+	r2 = heap32[(r0+2)];
+if(!(r2 >r1)) //_LBB235_2
+{
+break _3;
+}
+}
+if(!(r2 <1)) //_LBB235_110
+{
+	r1 = 0;
+	r2 = r1;
+	r3 = r1;
+	r4 = r1;
+	r5 = r1;
+	r6 = r1;
+	heap32[(fp+-1)] = r1;
+	r7 = r1;
+	r8 = r1;
+	r9 = r1;
+	r10 = r1;
+	r11 = r1;
+	r12 = r1;
+_10: while(true){
+	r13 = heap32[(r0+4)];
+	r14 = r12 << 2;
+	r13 = (r13 + r14)|0;
+	r13 = r13 >> 2;
+	r13 = heap32[(r13)];
+	r13 = r13 >> 2;
+	r13 = heap32[(r13+48)];
+	r14 = r13 << 15;
+	r14 = r14 ^ -1;
+	r14 = (r13 + r14)|0;
+	r15 = r14 >> 10;
+	r14 = r15 ^ r14;
+	r14 = (r14 * 9)|0;
+	r15 = r14 >> 6;
+	r14 = r15 ^ r14;
+	r15 = r14 << 11;
+	r15 = r15 ^ -1;
+	r14 = (r14 + r15)|0;
+	r15 = r14 >> 16;
+	r14 = r15 ^ r14;
+	r15 = (r4 + -1)|0;
+	r15 = r14 & r15;
+	r12 = (r12 + 1)|0;
+_12: do {
+	if(uint(r10) <=uint(r15)) //_LBB235_20
+{
+__label__ = 19;
+}
+else{
+	r16 = r15 << 2;
+	r17 = (r8 + r16)|0;
+_14: while(true){
+	r17 = r17 >> 2;
+	r17 = heap32[(r17)];
+	if(r17 ==-1) //_LBB235_14
+{
+__label__ = 13;
+break _14;
+}
+else{
+	r18 = r17 << 3;
+	r18 = (r11 + r18)|0;
+	r18 = r18 >> 2;
+	r18 = heap32[(r18)];
+	if(r13 !=r18) //_LBB235_9
+{
+	r17 = r17 << 2;
+	r17 = (r6 + r17)|0;
+}
+else{
+__label__ = 12;
+break _14;
+}
+}
+}
+if (__label__ == 12){
+	r17 = r17 << 2;
+	r17 = (r3 + r17)|0;
+if(!(r17 ==0)) //_LBB235_14
+{
+__label__ = 89;
+break _12;
+}
+}
+	if(uint(r10) <=uint(r15)) //_LBB235_20
+{
+__label__ = 19;
+}
+else{
+	r16 = (r8 + r16)|0;
+_22: while(true){
+	r16 = r16 >> 2;
+	r16 = heap32[(r16)];
+	if(r16 ==-1) //_LBB235_20
+{
+__label__ = 19;
+break _12;
+}
+else{
+	r17 = r16 << 3;
+	r17 = (r11 + r17)|0;
+	r17 = r17 >> 2;
+	r17 = heap32[(r17)];
+	if(r13 !=r17) //_LBB235_16
+{
+	r16 = r16 << 2;
+	r16 = (r6 + r16)|0;
+}
+else{
+break _22;
+}
+}
+}
+	r14 = r16 << 2;
+	r14 = (r3 + r14)|0;
+	r14 = r14 >> 2;
+	heap32[(r14)] = r13;
+	r16 = r4;
+	r17 = r5;
+__label__ = 88;
+}
+}
+} while(0);
+if (__label__ == 19){
+	if(r4 ==r5) //_LBB235_22
+{
+	r16 = 1;
+	r17 = r5 << 1;
+	r16 = r5 == 0 ? r16 : r17;
+	if(r4 >=r16) //_LBB235_21
+{
+__label__ = 20;
+}
+else{
+	if(r16 !=0) //_LBB235_25
+{
+	r17 = gNumAlignedAllocs;
+	r17 = r17 >> 2;
+	r18 = heap32[(r17)];
+	r19 = r16 << 2;
+	r18 = (r18 + 1)|0;
+	r19 = r19 | 3;
+	heap32[(r17)] = r18;
+	r17 = (r19 + 16)|0;
+	heap32[(g0)] = r17;
+	malloc(i7);
+	r17 = r_g0;
+	if(r17 !=0) //_LBB235_27
+{
+	r18 = 0;
+	r19 = (r17 + 4)|0;
+	r18 = (r18 - r19)|0;
+	r18 = r18 & 15;
+	r18 = (r17 + r18)|0;
+	r19 = (r18 + 4)|0;
+	r18 = r18 >> 2;
+	heap32[(r18)] = r17;
+	r17 = r19;
+}
+}
+else{
+	r17 = 0;
+}
+_37: do {
+if(!(r5 <1)) //_LBB235_31
+{
+	r18 = r17;
+	r19 = r3;
+	r20 = r5;
+_39: while(true){
+	r21 = r19 >> 2;
+	r20 = (r20 + -1)|0;
+	r19 = (r19 + 4)|0;
+	r22 = (r18 + 4)|0;
+	r18 = r18 >> 2;
+	r21 = heap32[(r21)];
+	heap32[(r18)] = r21;
+	r18 = r22;
+if(!(r20 !=0)) //_LBB235_30
+{
+break _37;
+}
+}
+}
+} while(0);
+	if(r3 !=0) //_LBB235_33
+{
+	r18 = gNumAlignedFree;
+	r18 = r18 >> 2;
+	r19 = heap32[(r18)];
+	r19 = (r19 + 1)|0;
+	r3 = r3 >> 2;
+	heap32[(r18)] = r19;
+	r3 = heap32[(r3+-1)];
+	heap32[(g0)] = r3;
+	free(i7);
+	r3 = r17;
+__label__ = 32;
+}
+else{
+	r3 = r17;
+__label__ = 32;
+}
+}
+}
+else{
+__label__ = 20;
+}
+if (__label__ == 20){
+	r16 = r4;
+}
+	r18 = r5 << 2;
+	r19 = (r3 + r18)|0;
+	r17 = (r5 + 1)|0;
+	r19 = r19 >> 2;
+	heap32[(r19)] = r13;
+	if(r1 ==r2) //_LBB235_36
+{
+	r19 = 1;
+	r20 = r2 << 1;
+	r19 = r2 == 0 ? r19 : r20;
+if(!(r1 >=r19)) //_LBB235_35
+{
+	if(r19 !=0) //_LBB235_39
+{
+	r1 = gNumAlignedAllocs;
+	r1 = r1 >> 2;
+	r20 = heap32[(r1)];
+	r21 = r19 << 3;
+	r20 = (r20 + 1)|0;
+	r21 = r21 | 3;
+	heap32[(r1)] = r20;
+	r1 = (r21 + 16)|0;
+	heap32[(g0)] = r1;
+	malloc(i7);
+	r20 = r_g0;
+	if(r20 !=0) //_LBB235_41
+{
+	r1 = 0;
+	r21 = (r20 + 4)|0;
+	r1 = (r1 - r21)|0;
+	r1 = r1 & 15;
+	r1 = (r20 + r1)|0;
+	r21 = (r1 + 4)|0;
+	r1 = r1 >> 2;
+	heap32[(r1)] = r20;
+	r20 = r21;
+}
+}
+else{
+	r20 = 0;
+}
+_56: do {
+if(!(r2 <1)) //_LBB235_45
+{
+	r1 = (r11 + 4)|0;
+	r21 = (r20 + 4)|0;
+	r22 = r2;
+_58: while(true){
+	r23 = r1 >> 2;
+	r24 = heap32[(r23)];
+	r23 = heap32[(r23+-1)];
+	r25 = r21 >> 2;
+	r22 = (r22 + -1)|0;
+	r1 = (r1 + 8)|0;
+	r21 = (r21 + 8)|0;
+	heap32[(r25+-1)] = r23;
+	heap32[(r25)] = r24;
+if(!(r22 !=0)) //_LBB235_44
+{
+break _56;
+}
+}
+}
+} while(0);
+	if(r11 !=0) //_LBB235_47
+{
+	r1 = gNumAlignedFree;
+	r1 = r1 >> 2;
+	r21 = heap32[(r1)];
+	r21 = (r21 + 1)|0;
+	r11 = r11 >> 2;
+	heap32[(r1)] = r21;
+	r1 = heap32[(r11+-1)];
+	heap32[(g0)] = r1;
+	free(i7);
+	r1 = r19;
+	r11 = r20;
+}
+else{
+	r1 = r19;
+	r11 = r20;
+}
+}
+}
+	r19 = r2 << 3;
+	r19 = (r11 + r19)|0;
+	r2 = (r2 + 1)|0;
+	r19 = r19 >> 2;
+	heap32[(r19)] = r13;
+	if(r4 <r16) //_LBB235_50
+{
+	if(r10 <r16) //_LBB235_52
+{
+_69: do {
+	if(r10 <=r16) //_LBB235_54
+{
+	if(r9 <r16) //_LBB235_56
+{
+	if(r16 !=0) //_LBB235_58
+{
+	r4 = gNumAlignedAllocs;
+	r4 = r4 >> 2;
+	r9 = heap32[(r4)];
+	r15 = r16 << 2;
+	r9 = (r9 + 1)|0;
+	r15 = r15 | 3;
+	heap32[(r4)] = r9;
+	r4 = (r15 + 16)|0;
+	heap32[(g0)] = r4;
+	malloc(i7);
+	r4 = r_g0;
+	if(r4 !=0) //_LBB235_60
+{
+	r9 = 0;
+	r15 = (r4 + 4)|0;
+	r9 = (r9 - r15)|0;
+	r9 = r9 & 15;
+	r9 = (r4 + r9)|0;
+	r15 = (r9 + 4)|0;
+	r9 = r9 >> 2;
+	heap32[(r9)] = r4;
+	r4 = r15;
+}
+}
+else{
+	r4 = 0;
+}
+_78: do {
+if(!(r10 <1)) //_LBB235_64
+{
+	r9 = r4;
+	r15 = r8;
+	r19 = r10;
+_80: while(true){
+	r20 = r15 >> 2;
+	r19 = (r19 + -1)|0;
+	r15 = (r15 + 4)|0;
+	r21 = (r9 + 4)|0;
+	r9 = r9 >> 2;
+	r20 = heap32[(r20)];
+	heap32[(r9)] = r20;
+	r9 = r21;
+if(!(r19 !=0)) //_LBB235_63
+{
+break _78;
+}
+}
+}
+} while(0);
+	if(r8 !=0) //_LBB235_66
+{
+	r9 = gNumAlignedFree;
+	r9 = r9 >> 2;
+	r15 = heap32[(r9)];
+	r15 = (r15 + 1)|0;
+	r8 = r8 >> 2;
+	heap32[(r9)] = r15;
+	r8 = heap32[(r8+-1)];
+	heap32[(g0)] = r8;
+	free(i7);
+	r8 = r4;
+	r9 = r16;
+}
+else{
+	r8 = r4;
+	r9 = r16;
+}
+}
+	r4 = r10;
+_87: while(true){
+	r15 = r4 << 2;
+	r15 = (r8 + r15)|0;
+	r4 = (r4 + 1)|0;
+	r15 = r15 >> 2;
+	heap32[(r15)] = 0;
+if(!(r16 !=r4)) //_LBB235_68
+{
+break _69;
+}
+}
+}
+} while(0);
+_90: do {
+	if(r7 <=r16) //_LBB235_71
+{
+if(!(r7 >=r16)) //_LBB235_70
+{
+	r4 = heap32[(fp+-1)];
+	if(r4 <r16) //_LBB235_74
+{
+	if(r16 !=0) //_LBB235_76
+{
+	r4 = gNumAlignedAllocs;
+	r4 = r4 >> 2;
+	r15 = heap32[(r4)];
+	r19 = r16 << 2;
+	r15 = (r15 + 1)|0;
+	r19 = r19 | 3;
+	heap32[(r4)] = r15;
+	r4 = (r19 + 16)|0;
+	heap32[(g0)] = r4;
+	malloc(i7);
+	r4 = r_g0;
+	if(r4 !=0) //_LBB235_78
+{
+	r15 = 0;
+	r19 = (r4 + 4)|0;
+	r15 = (r15 - r19)|0;
+	r15 = r15 & 15;
+	r15 = (r4 + r15)|0;
+	r19 = (r15 + 4)|0;
+	r15 = r15 >> 2;
+	heap32[(r15)] = r4;
+	r4 = r19;
+}
+}
+else{
+	r4 = 0;
+}
+_100: do {
+if(!(r7 <1)) //_LBB235_82
+{
+	r15 = r4;
+	r19 = r6;
+	r20 = r7;
+_102: while(true){
+	r21 = r19 >> 2;
+	r20 = (r20 + -1)|0;
+	r19 = (r19 + 4)|0;
+	r22 = (r15 + 4)|0;
+	r15 = r15 >> 2;
+	r21 = heap32[(r21)];
+	heap32[(r15)] = r21;
+	r15 = r22;
+if(!(r20 !=0)) //_LBB235_81
+{
+break _100;
+}
+}
+}
+} while(0);
+if(!(r6 ==0)) //_LBB235_84
+{
+	r15 = gNumAlignedFree;
+	r15 = r15 >> 2;
+	r19 = heap32[(r15)];
+	r19 = (r19 + 1)|0;
+	r6 = r6 >> 2;
+	heap32[(r15)] = r19;
+	r6 = heap32[(r6+-1)];
+	heap32[(g0)] = r6;
+	free(i7);
+}
+	if(r7 <r16) //_LBB235_86
+{
+	r6 = r4;
+	heap32[(fp+-1)] = r16;
+}
+else{
+	r6 = r4;
+	heap32[(fp+-1)] = r16;
+break _90;
+}
+}
+_111: while(true){
+	r4 = r7 << 2;
+	r4 = (r6 + r4)|0;
+	r7 = (r7 + 1)|0;
+	r4 = r4 >> 2;
+	heap32[(r4)] = 0;
+if(!(r16 !=r7)) //_LBB235_87
+{
+break _90;
+}
+}
+}
+}
+} while(0);
+_114: do {
+if(!(r16 <1)) //_LBB235_94
+{
+	r4 = r8;
+	r7 = r16;
+_116: while(true){
+	r7 = (r7 + -1)|0;
+	r15 = (r4 + 4)|0;
+	r4 = r4 >> 2;
+	heap32[(r4)] = -1;
+	r4 = r15;
+if(!(r7 !=0)) //_LBB235_90
+{
+break _116;
+}
+}
+if(!(r16 <1)) //_LBB235_94
+{
+	r4 = r6;
+	r7 = r16;
+_120: while(true){
+	r7 = (r7 + -1)|0;
+	r15 = (r4 + 4)|0;
+	r4 = r4 >> 2;
+	heap32[(r4)] = -1;
+	r4 = r15;
+if(!(r7 !=0)) //_LBB235_93
+{
+break _114;
+}
+}
+}
+}
+} while(0);
+_123: do {
+	if(r10 >0) //_LBB235_96
+{
+	r4 = (r16 + -1)|0;
+	r7 = 0;
+_125: while(true){
+	r15 = r7 << 3;
+	r15 = (r11 + r15)|0;
+	r15 = r15 >> 2;
+	r15 = heap32[(r15)];
+	r19 = r15 << 15;
+	r19 = r19 ^ -1;
+	r15 = (r15 + r19)|0;
+	r19 = r15 >> 10;
+	r15 = r19 ^ r15;
+	r15 = (r15 * 9)|0;
+	r19 = r15 >> 6;
+	r15 = r19 ^ r15;
+	r19 = r15 << 11;
+	r19 = r19 ^ -1;
+	r15 = (r15 + r19)|0;
+	r19 = r15 >> 16;
+	r15 = r19 ^ r15;
+	r15 = r15 & r4;
+	r15 = r15 << 2;
+	r15 = (r8 + r15)|0;
+	r15 = r15 >> 2;
+	r19 = r7 << 2;
+	r19 = (r6 + r19)|0;
+	r20 = heap32[(r15)];
+	r19 = r19 >> 2;
+	r21 = (r7 + 1)|0;
+	heap32[(r19)] = r20;
+	heap32[(r15)] = r7;
+	r7 = r21;
+	if(r10 ==r21) //_LBB235_95
+{
+break _123;
+}
+}
+}
+} while(0);
+	r7 = r16;
+	r10 = r16;
+}
+	r4 = (r16 + -1)|0;
+	r15 = r14 & r4;
+}
+	r4 = r15 << 2;
+	r4 = (r8 + r4)|0;
+	r4 = r4 >> 2;
+	r14 = (r6 + r18)|0;
+	r14 = r14 >> 2;
+	r15 = heap32[(r4)];
+	heap32[(r14)] = r15;
+	heap32[(r4)] = r5;
+__label__ = 88;
+}
+if (__label__ == 88){
+	r4 = r13 >> 2;
+	r4 = heap32[(r4)];
+	r4 = r4 >> 2;
+	r4 = heap32[(r4+14)];
+	heap32[(g0)] = r13;
+	r5 = heap32[(fp+-2)];
+	heap32[(g0+1)] = r5;
+	__FUNCTION_TABLE__[(r4)>>2](i7);
+	r4 = r16;
+	r5 = r17;
+}
+	r13 = heap32[(r0+2)];
+if(!(r13 >r12)) //_LBB235_7
+{
+break _10;
+}
+}
+if(!(r11 ==0)) //_LBB235_104
+{
+	r0 = gNumAlignedFree;
+	r0 = r0 >> 2;
+	r1 = heap32[(r0)];
+	r1 = (r1 + 1)|0;
+	r2 = r11 >> 2;
+	heap32[(r0)] = r1;
+	r0 = heap32[(r2+-1)];
+	heap32[(g0)] = r0;
+	free(i7);
+}
+if(!(r3 ==0)) //_LBB235_106
+{
+	r0 = gNumAlignedFree;
+	r0 = r0 >> 2;
+	r1 = heap32[(r0)];
+	r1 = (r1 + 1)|0;
+	r2 = r3 >> 2;
+	heap32[(r0)] = r1;
+	r0 = heap32[(r2+-1)];
+	heap32[(g0)] = r0;
+	free(i7);
+}
+if(!(r6 ==0)) //_LBB235_108
+{
+	r0 = gNumAlignedFree;
+	r0 = r0 >> 2;
+	r1 = heap32[(r0)];
+	r1 = (r1 + 1)|0;
+	r2 = r6 >> 2;
+	heap32[(r0)] = r1;
+	r0 = heap32[(r2+-1)];
+	heap32[(g0)] = r0;
+	free(i7);
+}
+if(!(r8 ==0)) //_LBB235_110
+{
+	r0 = gNumAlignedFree;
+	r0 = r0 >> 2;
+	r1 = heap32[(r0)];
+	r1 = (r1 + 1)|0;
+	r2 = r8 >> 2;
+	heap32[(r0)] = r1;
+	r0 = heap32[(r2+-1)];
+	heap32[(g0)] = r0;
+	free(i7);
+}
+}
+}
+	return;
+}
+
+function _ZNK11btMatrix3x311getRotationER12btQuaternion(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+	var r6;
+	var r7;
+	var r8;
+	var r9;
+	var r10;
+	var f0;
+	var f1;
+	var f2;
+	var f3;
+	var f4;
+	var f5;
+var __label__ = 0;
+	i7 = sp + -24;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = r0 >> 2;
+	f0 = heapFloat[(r1)];
+	f1 = heapFloat[(r1+5)];
+	f2 = heapFloat[(r1+10)];
+	f3 = f0+f1;
+	f3 = f3+f2;
+	r2 = heap32[(fp+1)];
+	f4 =                         0;
+	if(f3 <=f4) //_LBB236_2
+{
+	if(f0 >=f1) //_LBB236_4
+{
+	r1 = 2;
+	r3 = 0;
+	r1 = f0 < f2 ? r1 : r3;
+}
+else{
+	r1 = 2;
+	r3 = 1;
+	r1 = f1 < f2 ? r1 : r3;
+}
+	r3 = (r1 + 1)|0;
+	r3 = (r3 % 3)|0;
+	r4 = (r1 + 2)|0;
+	r4 = (r4 % 3)|0;
+	r5 = r1 << 4;
+	r6 = r3 << 4;
+	r7 = r4 << 4;
+	r5 = (r0 + r5)|0;
+	r1 = r1 << 2;
+	r6 = (r0 + r6)|0;
+	r3 = r3 << 2;
+	r0 = (r0 + r7)|0;
+	r4 = r4 << 2;
+	r7 = (r5 + r1)|0;
+	r8 = (r6 + r3)|0;
+	r7 = r7 >> 2;
+	r8 = r8 >> 2;
+	r9 = (r0 + r4)|0;
+	r9 = r9 >> 2;
+	f0 = heapFloat[(r7)];
+	f1 = heapFloat[(r8)];
+	f2 = heapFloat[(r9)];
+	f0 = f0-f1;
+	f0 = f0-f2;
+	f1 =                         1;
+	f0 = f0+f1;
+	r7 = sp + -16;
+	heapFloat[(g0)] = f0;
+	r8 = (r7 + r1)|0;
+	f0 =                       0.5;
+	sqrtf(i7);
+	r9 = (r0 + r3)|0;
+	r10 = (r6 + r4)|0;
+	r8 = r8 >> 2;
+	f2 = f_g0*f0;
+	r9 = r9 >> 2;
+	heapFloat[(r8)] = f2;
+	r8 = r10 >> 2;
+	f2 = heapFloat[(r9)];
+	f3 = heapFloat[(r8)];
+	f2 = f2-f3;
+	f0 = f0/f_g0;
+	r6 = (r6 + r1)|0;
+	r8 = (r5 + r3)|0;
+	r9 = r7 >> 2;
+	f1 = f2*f0;
+	r6 = r6 >> 2;
+	heapFloat[(r9+3)] = f1;
+	r8 = r8 >> 2;
+	f1 = heapFloat[(r6)];
+	f2 = heapFloat[(r8)];
+	r3 = (r7 + r3)|0;
+	f1 = f1+f2;
+	r0 = (r0 + r1)|0;
+	r1 = (r5 + r4)|0;
+	r3 = r3 >> 2;
+	f1 = f1*f0;
+	r0 = r0 >> 2;
+	heapFloat[(r3)] = f1;
+	r1 = r1 >> 2;
+	f1 = heapFloat[(r0)];
+	f2 = heapFloat[(r1)];
+	r0 = (r7 + r4)|0;
+	f1 = f1+f2;
+	r0 = r0 >> 2;
+	f0 = f1*f0;
+	heapFloat[(r0)] = f0;
+	f1 = heapFloat[(fp+-4)];
+	f3 = heapFloat[(r9+1)];
+	f0 = heapFloat[(r9+2)];
+	f2 = heapFloat[(r9+3)];
+}
+else{
+	f0 =                         1;
+	f0 = f3+f0;
+	heapFloat[(g0)] = f0;
+	r0 = sp + -16;
+	f0 =                       0.5;
+	sqrtf(i7);
+	f2 = f_g0*f0;
+	r0 = r0 >> 2;
+	heapFloat[(r0+3)] = f2;
+	f3 = heapFloat[(r1+9)];
+	f4 = heapFloat[(r1+6)];
+	f3 = f3-f4;
+	f0 = f0/f_g0;
+	f1 = f3*f0;
+	heapFloat[(fp+-4)] = f1;
+	f3 = heapFloat[(r1+2)];
+	f4 = heapFloat[(r1+8)];
+	f3 = f3-f4;
+	f3 = f3*f0;
+	heapFloat[(r0+1)] = f3;
+	f4 = heapFloat[(r1+4)];
+	f5 = heapFloat[(r1+1)];
+	f4 = f4-f5;
+	f0 = f4*f0;
+	heapFloat[(r0+2)] = f0;
+}
+	r0 = r2 >> 2;
+	heapFloat[(r0)] = f1;
+	heapFloat[(r0+1)] = f3;
+	heapFloat[(r0+2)] = f0;
+	heapFloat[(r0+3)] = f2;
+	return;
+}
+
+function _ZZN16btCollisionWorld17objectQuerySingleEPK13btConvexShapeRK11btTransformS5_P17btCollisionObjectPK16btCollisionShapeS5_RNS_20ConvexResultCallbackEfEN32BridgeTriangleConvexcastCallbackD0E_0v(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+var __label__ = 0;
+	i7 = sp + -8;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = _ZTV18btTriangleCallback;
+	r2 = r0 >> 2;
+	r1 = (r1 + 8)|0;
+	heap32[(r2)] = r1;
+	heap32[(g0)] = r0;
+	_ZdlPv(i7);
+	return;
+}
+
+function _ZZN16btCollisionWorld17objectQuerySingleEPK13btConvexShapeRK11btTransformS5_P17btCollisionObjectPK16btCollisionShapeS5_RNS_20ConvexResultCallbackEfEN32BridgeTriangleConvexcastCallbackD1E_0v(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+var __label__ = 0;
+	i7 = sp + 0;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = _ZTV18btTriangleCallback;
+	r0 = r0 >> 2;
+	r1 = (r1 + 8)|0;
+	heap32[(r0)] = r1;
+	return;
+}
+
+function _ZZN16btCollisionWorld17objectQuerySingleEPK13btConvexShapeRK11btTransformS5_P17btCollisionObjectPK16btCollisionShapeS5_RNS_20ConvexResultCallbackEfEN32BridgeTriangleConvexcastCallbackD0Ev(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+var __label__ = 0;
+	i7 = sp + -8;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = _ZTV18btTriangleCallback;
+	r2 = r0 >> 2;
+	r1 = (r1 + 8)|0;
+	heap32[(r2)] = r1;
+	heap32[(g0)] = r0;
+	_ZdlPv(i7);
+	return;
+}
+
+function _ZZN16btCollisionWorld17objectQuerySingleEPK13btConvexShapeRK11btTransformS5_P17btCollisionObjectPK16btCollisionShapeS5_RNS_20ConvexResultCallbackEfEN32BridgeTriangleConvexcastCallbackD1Ev(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+var __label__ = 0;
+	i7 = sp + 0;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = _ZTV18btTriangleCallback;
+	r0 = r0 >> 2;
+	r1 = (r1 + 8)|0;
+	heap32[(r0)] = r1;
+	return;
+}
+
+function _ZZN16btCollisionWorld13rayTestSingleERK11btTransformS2_P17btCollisionObjectPK16btCollisionShapeS2_RNS_17RayResultCallbackEEN29BridgeTriangleRaycastCallbackD0E_0v(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+var __label__ = 0;
+	i7 = sp + -8;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = _ZTV18btTriangleCallback;
+	r2 = r0 >> 2;
+	r1 = (r1 + 8)|0;
+	heap32[(r2)] = r1;
+	heap32[(g0)] = r0;
+	_ZdlPv(i7);
+	return;
+}
+
+function _ZZN16btCollisionWorld13rayTestSingleERK11btTransformS2_P17btCollisionObjectPK16btCollisionShapeS2_RNS_17RayResultCallbackEEN29BridgeTriangleRaycastCallbackD1E_0v(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+var __label__ = 0;
+	i7 = sp + 0;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = _ZTV18btTriangleCallback;
+	r0 = r0 >> 2;
+	r1 = (r1 + 8)|0;
+	heap32[(r0)] = r1;
+	return;
+}
+
+function _ZZN16btCollisionWorld13rayTestSingleERK11btTransformS2_P17btCollisionObjectPK16btCollisionShapeS2_RNS_17RayResultCallbackEEN29BridgeTriangleRaycastCallbackD0Ev(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+var __label__ = 0;
+	i7 = sp + -8;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = _ZTV18btTriangleCallback;
+	r2 = r0 >> 2;
+	r1 = (r1 + 8)|0;
+	heap32[(r2)] = r1;
+	heap32[(g0)] = r0;
+	_ZdlPv(i7);
+	return;
+}
+
+function _ZZN16btCollisionWorld13rayTestSingleERK11btTransformS2_P17btCollisionObjectPK16btCollisionShapeS2_RNS_17RayResultCallbackEEN29BridgeTriangleRaycastCallbackD1Ev(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+var __label__ = 0;
+	i7 = sp + 0;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = _ZTV18btTriangleCallback;
+	r0 = r0 >> 2;
+	r1 = (r1 + 8)|0;
+	heap32[(r0)] = r1;
+	return;
+}
+
+function _ZN15btTransformUtil22calculateDiffAxisAngleERK11btTransformS2_R9btVector3Rf(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var f0;
+	var f1;
+	var f2;
+	var f3;
+	var f4;
+	var f5;
+	var f6;
+	var f7;
+	var f8;
+	var f9;
+	var f10;
+	var f11;
+	var f12;
+	var f13;
+	var f14;
+	var f15;
+	var f16;
+	var f17;
+	var f18;
+	var f19;
+	var f20;
+	var f21;
+	var f22;
+	var f23;
+var __label__ = 0;
+	i7 = sp + -80;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r0 = r0 >> 2;
+	f0 = heapFloat[(r0+4)];
+	f1 = heapFloat[(r0+9)];
+	f2 = heapFloat[(r0+6)];
+	f3 = heapFloat[(r0+8)];
+	f4 = heapFloat[(r0+5)];
+	f5 = heapFloat[(r0+10)];
+	f6 = f4*f5;
+	f7 = f2*f1;
+	f8 = f2*f3;
+	f9 = f0*f5;
+	f10 = heapFloat[(r0)];
+	f11 = heapFloat[(r0+1)];
+	f6 = f6-f7;
+	f7 = f8-f9;
+	f8 = f0*f1;
+	f9 = f4*f3;
+	f12 = heapFloat[(r0+2)];
+	f8 = f8-f9;
+	f9 = f10*f6;
+	f13 = f11*f7;
+	f9 = f9+f13;
+	f13 = f12*f8;
+	r0 = heap32[(fp+1)];
+	f14 =                         1;
+	f9 = f9+f13;
+	r0 = r0 >> 2;
+	f9 = f14/f9;
+	f13 = f12*f1;
+	f15 = f11*f5;
+	f5 = f10*f5;
+	f16 = f12*f3;
+	f13 = f13-f15;
+	f5 = f5-f16;
+	f15 = f11*f2;
+	f16 = f12*f4;
+	f12 = f12*f0;
+	f2 = f10*f2;
+	f3 = f11*f3;
+	f1 = f10*f1;
+	f6 = f6*f9;
+	f17 = heapFloat[(r0)];
+	f7 = f7*f9;
+	f18 = heapFloat[(r0+1)];
+	f15 = f15-f16;
+	f2 = f12-f2;
+	f12 = f13*f9;
+	f5 = f5*f9;
+	f1 = f3-f1;
+	f3 = f10*f4;
+	f0 = f11*f0;
+	f4 = f6*f17;
+	f10 = f7*f18;
+	f8 = f8*f9;
+	f11 = heapFloat[(r0+2)];
+	f13 = heapFloat[(r0+8)];
+	f15 = f15*f9;
+	f16 = heapFloat[(r0+4)];
+	f19 = heapFloat[(r0+9)];
+	f2 = f2*f9;
+	f20 = heapFloat[(r0+5)];
+	f0 = f3-f0;
+	f1 = f1*f9;
+	f3 = heapFloat[(r0+10)];
+	f21 = heapFloat[(r0+6)];
+	f22 = f12*f17;
+	f23 = f5*f18;
+	f4 = f4+f10;
+	f10 = f8*f11;
+	f0 = f0*f9;
+	r0 = sp + -48;
+	f9 = f15*f17;
+	f17 = f2*f18;
+	f18 = f22+f23;
+	f22 = f1*f11;
+	f4 = f4+f10;
+	r1 = r0 >> 2;
+	f9 = f9+f17;
+	f10 = f0*f11;
+	f11 = f18+f22;
+	heapFloat[(fp+-12)] = f4;
+	f4 = f6*f16;
+	f17 = f7*f20;
+	f9 = f9+f10;
+	heapFloat[(r1+1)] = f11;
+	heapFloat[(r1+2)] = f9;
+	f9 = f12*f16;
+	f10 = f5*f20;
+	f4 = f4+f17;
+	f11 = f8*f21;
+	f16 = f15*f16;
+	f17 = f2*f20;
+	f9 = f9+f10;
+	f10 = f1*f21;
+	f4 = f4+f11;
+	heap32[(r1+3)] = 0;
+	f11 = f16+f17;
+	f16 = f0*f21;
+	f9 = f9+f10;
+	heapFloat[(r1+4)] = f4;
+	f4 = f6*f13;
+	f6 = f7*f19;
+	f7 = f11+f16;
+	heapFloat[(r1+5)] = f9;
+	heapFloat[(r1+6)] = f7;
+	f7 = f12*f13;
+	f5 = f5*f19;
+	f4 = f4+f6;
+	f6 = f8*f3;
+	f8 = f15*f13;
+	f2 = f2*f19;
+	f5 = f7+f5;
+	f1 = f1*f3;
+	f4 = f4+f6;
+	heap32[(r1+7)] = 0;
+	f2 = f8+f2;
+	f0 = f0*f3;
+	f1 = f5+f1;
+	heapFloat[(r1+8)] = f4;
+	f0 = f2+f0;
+	heapFloat[(r1+9)] = f1;
+	heapFloat[(r1+10)] = f0;
+	heap32[(r1+11)] = 0;
+	r1 = sp + -64;
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r1;
+	_ZNK11btMatrix3x311getRotationER12btQuaternion(i7);
+	r0 = r1 >> 2;
+	f0 = heapFloat[(fp+-16)];
+	f1 = heapFloat[(r0+1)];
+	f2 = heapFloat[(r0+2)];
+	f3 = f0*f0;
+	f4 = f1*f1;
+	f5 = heapFloat[(r0+3)];
+	f3 = f3+f4;
+	f4 = f2*f2;
+	f3 = f3+f4;
+	f4 = f5*f5;
+	f3 = f3+f4;
+	heapFloat[(g0)] = f3;
+	sqrtf(i7);
+	f3 = f_g0;
+	f4 =                         0;
+	if(f3 !=f4) //_LBB245_2
+{
+	r1 = heap32[(fp+2)];
+	r2 = heap32[(fp+3)];
+	f3 = f14/f3;
+	f0 = f0*f3;
+	f1 = f1*f3;
+	heapFloat[(fp+-16)] = f0;
+	f2 = f2*f3;
+	heapFloat[(r0+1)] = f1;
+	f4 =                        -1;
+	f3 = f5*f3;
+	heapFloat[(r0+2)] = f2;
+	f4 = f3 < f4 ? f4 : f3;
+	heapFloat[(r0+3)] = f3;
+	f3 = f4 > f14 ? f14 : f4;
+	heapFloat[(g0)] = f3;
+	acosf(i7);
+	r0 = r2 >> 2;
+	f3 = f_g0+f_g0;
+	r1 = r1 >> 2;
+	heapFloat[(r0)] = f3;
+	heapFloat[(r1)] = f0;
+	f0 = f0*f0;
+	f3 = f1*f1;
+	heapFloat[(r1+1)] = f1;
+	f0 = f0+f3;
+	f1 = f2*f2;
+	f0 = f0+f1;
+	heapFloat[(r1+2)] = f2;
+	heap32[(r1+3)] = 0;
+	f1 =   1.4210854715202004e-014;
+	if(f0 >=f1) //_LBB245_4
+{
+	heapFloat[(g0)] = f0;
+	sqrtf(i7);
+	f0 = f14/f_g0;
+	f1 = heapFloat[(r1)];
+	f1 = f1*f0;
+	heapFloat[(r1)] = f1;
+	f1 = heapFloat[(r1+1)];
+	f1 = f1*f0;
+	heapFloat[(r1+1)] = f1;
+	f1 = heapFloat[(r1+2)];
+	f0 = f1*f0;
+	heapFloat[(r1+2)] = f0;
+	return;
+}
+else{
+	heap32[(r1)] = 1065353216;
+	heap32[(r1+1)] = 0;
+	heap32[(r1+2)] = 0;
+	heap32[(r1+3)] = 0;
+	return;
+}
+}
+else{
+	r0 = _2E_str584;
+	r1 = _2E_str685;
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r1;
+	heap32[(g0+2)] = 188;
+	_assert(i7);
+}
+}
+
+function _ZNK16btCollisionWorld15convexSweepTestEPK13btConvexShapeRK11btTransformS5_RNS_20ConvexResultCallbackEf(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+	var r6;
+	var r7;
+	var r8;
+	var r9;
+	var r10;
+	var f0;
+	var f1;
+	var f2;
+	var f3;
+	var f4;
+	var f5;
+	var f6;
+	var f7;
+	var f8;
+	var f9;
+	var f10;
+	var f11;
+	var f12;
+	var f13;
+var __label__ = 0;
+	i7 = sp + -528;var g0 = i7>>2; // save stack
+	r0 = _2E_str1089;
+	r1 = heap32[(fp+2)];
+	heap32[(g0)] = r0;
+	r0 = sp + -112;
+	r1 = r1 >> 2;
+	_ZN15CProfileManager13Start_ProfileEPKc(i7);
+	r2 = r0 >> 2;
+	heap32[(fp+-28)] = heap32[(r1)];
+	heap32[(r2+1)] = heap32[(r1+1)];
+	heap32[(r2+2)] = heap32[(r1+2)];
+	heap32[(r2+3)] = heap32[(r1+3)];
+	heap32[(r2+4)] = heap32[(r1+4)];
+	heap32[(r2+5)] = heap32[(r1+5)];
+	heap32[(r2+6)] = heap32[(r1+6)];
+	heap32[(r2+7)] = heap32[(r1+7)];
+	heap32[(r2+8)] = heap32[(r1+8)];
+	heap32[(r2+9)] = heap32[(r1+9)];
+	heap32[(r2+10)] = heap32[(r1+10)];
+	heap32[(r2+11)] = heap32[(r1+11)];
+	heap32[(r2+12)] = heap32[(r1+12)];
+	heap32[(r2+13)] = heap32[(r1+13)];
+	r3 = heap32[(fp+3)];
+	heap32[(r2+14)] = heap32[(r1+14)];
+	r4 = sp + -176;
+	r3 = r3 >> 2;
+	heap32[(r2+15)] = heap32[(r1+15)];
+	r2 = r4 >> 2;
+	heap32[(fp+-44)] = heap32[(r3)];
+	heap32[(r2+1)] = heap32[(r3+1)];
+	heap32[(r2+2)] = heap32[(r3+2)];
+	heap32[(r2+3)] = heap32[(r3+3)];
+	heap32[(r2+4)] = heap32[(r3+4)];
+	heap32[(r2+5)] = heap32[(r3+5)];
+	heap32[(r2+6)] = heap32[(r3+6)];
+	heap32[(r2+7)] = heap32[(r3+7)];
+	heap32[(r2+8)] = heap32[(r3+8)];
+	heap32[(r2+9)] = heap32[(r3+9)];
+	heap32[(r2+10)] = heap32[(r3+10)];
+	heap32[(r2+11)] = heap32[(r3+11)];
+	heap32[(r2+12)] = heap32[(r3+12)];
+	heap32[(r2+13)] = heap32[(r3+13)];
+	heap32[(r2+14)] = heap32[(r3+14)];
+	heap32[(r2+15)] = heap32[(r3+15)];
+	r2 = sp + -24;
+	r5 = sp + -28;
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r4;
+	heap32[(g0+2)] = r2;
+	heap32[(g0+3)] = r5;
+	_ZN15btTransformUtil22calculateDiffAxisAngleERK11btTransformS2_R9btVector3Rf(i7);
+	r2 = r2 >> 2;
+	f0 = heapFloat[(r2+2)];
+	f1 = heapFloat[(fp+-7)];
+	f2 = heapFloat[(r2+1)];
+	f3 = heapFloat[(fp+-6)];
+	r2 = sp + -424;
+	f3 = f3*f1;
+	r5 = r2 >> 2;
+	f2 = f2*f1;
+	heapFloat[(fp+-106)] = f3;
+	f0 = f0*f1;
+	heapFloat[(r5+1)] = f2;
+	heapFloat[(r5+2)] = f0;
+	r6 = sp + -440;
+	heap32[(r5+3)] = 0;
+	r5 = r6 >> 2;
+	heap32[(fp+-110)] = 0;
+	heap32[(r5+1)] = 0;
+	heap32[(r5+2)] = 0;
+	r7 = sp + -504;
+	heap32[(r5+3)] = 0;
+	r5 = r7 >> 2;
+	heap32[(fp+-126)] = 1065353216;
+	heap32[(r5+1)] = 0;
+	heap32[(r5+2)] = 0;
+	heap32[(r5+3)] = 0;
+	heap32[(r5+4)] = 0;
+	heap32[(r5+5)] = 1065353216;
+	heap32[(r5+6)] = 0;
+	heap32[(r5+7)] = 0;
+	heap32[(r5+8)] = 0;
+	heap32[(r5+9)] = 0;
+	heap32[(r5+10)] = 1065353216;
+	heap32[(r5+11)] = 0;
+	heap32[(r5+12)] = 0;
+	heap32[(r5+13)] = 0;
+	heap32[(r5+14)] = 0;
+	heap32[(r5+15)] = 0;
+	r8 = sp + -48;
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r8;
+	_ZNK11btMatrix3x311getRotationER12btQuaternion(i7);
+	r8 = r8 >> 2;
+	f0 = heapFloat[(fp+-12)];
+	f1 = heapFloat[(r8+1)];
+	f2 = heapFloat[(r8+2)];
+	f3 = f0*f0;
+	f4 = f1*f1;
+	f5 = heapFloat[(r8+3)];
+	f3 = f3+f4;
+	f4 = f2*f2;
+	f3 = f3+f4;
+	f4 = f5*f5;
+	f6 =                         2;
+	f3 = f3+f4;
+	f3 = f6/f3;
+	f4 = f2*f3;
+	f6 = f1*f3;
+	f7 = f1*f6;
+	f2 = f2*f4;
+	f8 = f7+f2;
+	f9 =                         1;
+	f10 = f0*f6;
+	f11 = f5*f4;
+	f8 = f9-f8;
+	f12 = f0*f4;
+	f6 = f5*f6;
+	f13 = f10-f11;
+	heapFloat[(fp+-126)] = f8;
+	f3 = f0*f3;
+	f8 = f12+f6;
+	heapFloat[(r5+1)] = f13;
+	f0 = f0*f3;
+	heapFloat[(r5+2)] = f8;
+	f2 = f0+f2;
+	f8 = f10+f11;
+	heap32[(r5+3)] = 0;
+	f1 = f1*f4;
+	f3 = f5*f3;
+	f2 = f9-f2;
+	heapFloat[(r5+4)] = f8;
+	f4 = f1-f3;
+	heapFloat[(r5+5)] = f2;
+	heapFloat[(r5+6)] = f4;
+	f2 = f12-f6;
+	heap32[(r5+7)] = 0;
+	f0 = f0+f7;
+	f1 = f1+f3;
+	heapFloat[(r5+8)] = f2;
+	f0 = f9-f0;
+	heapFloat[(r5+9)] = f1;
+	heapFloat[(r5+10)] = f0;
+	heap32[(r5+11)] = 0;
+	r5 = heap32[(fp+1)];
+	r8 = sp + -192;
+	r9 = sp + -208;
+	heap32[(g0)] = r5;
+	heap32[(g0+1)] = r7;
+	heap32[(g0+2)] = r6;
+	heap32[(g0+3)] = r2;
+	heap32[(g0+4)] = r8;
+	heap32[(g0+5)] = r9;
+	r2 = _ZTV21btSingleSweepCallback;
+	r6 = sp + -408;
+	r2 = (r2 + 8)|0;
+	_ZNK16btCollisionShape21calculateTemporalAabbERK11btTransformRK9btVector3S5_fRS3_S6_(i7);
+	r7 = r6 >> 2;
+	heap32[(fp+-102)] = r2;
+	heap32[(r7+9)] = heap32[(r1)];
+	heap32[(r7+10)] = heap32[(r1+1)];
+	heap32[(r7+11)] = heap32[(r1+2)];
+	heap32[(r7+12)] = heap32[(r1+3)];
+	heap32[(r7+13)] = heap32[(r1+4)];
+	heap32[(r7+14)] = heap32[(r1+5)];
+	heap32[(r7+15)] = heap32[(r1+6)];
+	heap32[(r7+16)] = heap32[(r1+7)];
+	heap32[(r7+17)] = heap32[(r1+8)];
+	heap32[(r7+18)] = heap32[(r1+9)];
+	heap32[(r7+19)] = heap32[(r1+10)];
+	heap32[(r7+20)] = heap32[(r1+11)];
+	f0 = heapFloat[(r1+12)];
+	heapFloat[(r7+21)] = f0;
+	f1 = heapFloat[(r1+13)];
+	heapFloat[(r7+22)] = f1;
+	f2 = heapFloat[(r1+14)];
+	heapFloat[(r7+23)] = f2;
+	heap32[(r7+24)] = heap32[(r1+15)];
+	heap32[(r7+25)] = heap32[(r3)];
+	heap32[(r7+26)] = heap32[(r3+1)];
+	heap32[(r7+27)] = heap32[(r3+2)];
+	heap32[(r7+28)] = heap32[(r3+3)];
+	heap32[(r7+29)] = heap32[(r3+4)];
+	heap32[(r7+30)] = heap32[(r3+5)];
+	heap32[(r7+31)] = heap32[(r3+6)];
+	heap32[(r7+32)] = heap32[(r3+7)];
+	heap32[(r7+33)] = heap32[(r3+8)];
+	heap32[(r7+34)] = heap32[(r3+9)];
+	heap32[(r7+35)] = heap32[(r3+10)];
+	heap32[(r7+36)] = heap32[(r3+11)];
+	f3 = heapFloat[(r3+12)];
+	heapFloat[(r7+37)] = f3;
+	f4 = heapFloat[(r3+13)];
+	heapFloat[(r7+38)] = f4;
+	f5 = heapFloat[(r3+14)];
+	heapFloat[(r7+39)] = f5;
+	r1 = heap32[(fp)];
+	heap32[(r7+40)] = heap32[(r3+15)];
+	r3 = heap32[(fp+4)];
+	heap32[(r7+45)] = r1;
+	heap32[(r7+46)] = r3;
+	f0 = f3-f0;
+	f1 = f4-f1;
+	heap32[(r7+47)] = heap32[(fp+5)];
+	f2 = f5-f2;
+	heap32[(r7+48)] = r5;
+	f3 = f0*f0;
+	f4 = f1*f1;
+	f3 = f3+f4;
+	f4 = f2*f2;
+	f3 = f3+f4;
+	heapFloat[(g0)] = f3;
+	sqrtf(i7);
+	f3 = f9/f_g0;
+	f4 = f0*f3;
+	f5 = f2*f3;
+	f3 = f1*f3;
+	f6 =                         0;
+	if(f4 !=f6) //_LBB246_2
+{
+	f7 = f9/f4;
+}
+else{
+	f7 =        999999984306749440;
+}
+	heapFloat[(r7+1)] = f7;
+	if(f3 !=f6) //_LBB246_5
+{
+	f8 = f9/f3;
+}
+else{
+	f8 =        999999984306749440;
+}
+	heapFloat[(r7+2)] = f8;
+	if(f5 !=f6) //_LBB246_8
+{
+	f9 = f9/f5;
+}
+else{
+	f9 =        999999984306749440;
+}
+	r3 = f7 < f6;
+	r5 = f8 < f6;
+	r3 = r3 & 1;
+	heapFloat[(r7+3)] = f9;
+	r10 = f9 < f6;
+	f0 = f4*f0;
+	f1 = f3*f1;
+	r5 = r5 & 1;
+	heap32[(r7+5)] = r3;
+	f0 = f0+f1;
+	f1 = f5*f2;
+	r3 = r10 & 1;
+	heap32[(r7+6)] = r5;
+	f0 = f0+f1;
+	heap32[(r7+7)] = r3;
+	r1 = r1 >> 2;
+	heapFloat[(r7+8)] = f0;
+	r1 = heap32[(r1+20)];
+	r3 = r1 >> 2;
+	r3 = heap32[(r3)];
+	r3 = r3 >> 2;
+	r3 = heap32[(r3+6)];
+	r0 = (r0 + 48)|0;
+	r4 = (r4 + 48)|0;
+	heap32[(g0)] = r1;
+	heap32[(g0+1)] = r0;
+	heap32[(g0+2)] = r4;
+	heap32[(g0+3)] = r6;
+	heap32[(g0+4)] = r8;
+	heap32[(g0+5)] = r9;
+	r0 = _ZN15CProfileManager11CurrentNodeE;
+	__FUNCTION_TABLE__[(r3)>>2](i7);
+	r0 = r0 >> 2;
+	heap32[(fp+-102)] = r2;
+	r1 = heap32[(r0)];
+	r2 = r1 >> 2;
+	r3 = heap32[(r2+4)];
+	r3 = (r3 + -1)|0;
+	heap32[(r2+4)] = r3;
+_13: do {
+if(!(r3 !=0)) //_LBB246_15
+{
+	r3 = heap32[(r2+1)];
+	if(r3 !=0) //_LBB246_12
+{
+	r1 = sp + -8;
+	heap32[(g0)] = r1;
+	heap32[(g0+1)] = 0;
+	r3 = _ZL13gProfileClock_2E_0;
+	gettimeofday(i7);
+	r3 = r3 >> 2;
+	r3 = heap32[(r3)];
+	r3 = r3 >> 2;
+	r1 = r1 >> 2;
+	r4 = heap32[(fp+-2)];
+	r5 = heap32[(r3)];
+	r4 = (r4 - r5)|0;
+	r1 = heap32[(r1+1)];
+	r3 = heap32[(r3+1)];
+	r1 = (r1 - r3)|0;
+	r3 = (r4 * 1000000)|0;
+	r1 = (r1 + r3)|0;
+	r3 = heap32[(r2+3)];
+	r1 = (r1 - r3)|0;
+	f0 = uint(r1); //fuitos r1, f0
+	f1 =                      1000;
+	f2 = heapFloat[(r2+2)];
+	f0 = f0/f1;
+	f0 = f2+f0;
+	heapFloat[(r2+2)] = f0;
+	r1 = heap32[(r2+4)];
+	if(r1 !=0) //_LBB246_15
+{
+break _13;
+}
+else{
+	r1 = heap32[(r0)];
+}
+}
+	r1 = r1 >> 2;
+	r1 = heap32[(r1+5)];
+	heap32[(r0)] = r1;
+}
+} while(0);
+	return;
+}
+
+function _ZN16btCollisionWorld17objectQuerySingleEPK13btConvexShapeRK11btTransformS5_P17btCollisionObjectPK16btCollisionShapeS5_RNS_20ConvexResultCallbackEf(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+	var r6;
+	var r7;
+	var r8;
+	var r9;
+	var r10;
+	var r11;
+	var r12;
+	var r13;
+	var r14;
+	var r15;
+	var f0;
+	var f1;
+	var f2;
+	var f3;
+	var f4;
+	var f5;
+	var f6;
+	var f7;
+	var f8;
+	var f9;
+	var f10;
+	var f11;
+	var f12;
+	var f13;
+	var f14;
+	var f15;
+	var f16;
+	var f17;
+	var f18;
+	var f19;
+	var f20;
+	var f21;
+	var f22;
+	var f23;
+	var f24;
+	var f25;
+	var f26;
+	var f27;
+	var f28;
+	var f29;
+	var f30;
+var __label__ = 0;
+	i7 = sp + -1472;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp+4)];
+	r1 = r0 >> 2;
+	r2 = heap32[(r1+1)];
+	r3 = heap32[(fp)];
+	r4 = heap32[(fp+1)];
+	r5 = heap32[(fp+2)];
+	r6 = heap32[(fp+3)];
+	r7 = heap32[(fp+5)];
+	r8 = heap32[(fp+6)];
+	f0 = heapFloat[(fp+7)];
+_1: do {
+	if(r2 >19) //_LBB247_6
+{
+	r9 = (r2 + -21)|0;
+	if(uint(r9) >uint(8)) //_LBB247_30
+{
+	if(r2 !=31) //_LBB247_5
+{
+break _1;
+}
+else{
+	r0 = _2E_str1493;
+	heap32[(g0)] = r0;
+	_ZN15CProfileManager13Start_ProfileEPKc(i7);
+	r0 = heap32[(r1+4)];
+if(!(r0 <1)) //_LBB247_34
+{
+	r0 = 0;
+_8: while(true){
+	r2 = (r0 * 20)|0;
+	r9 = heap32[(r1+6)];
+	r2 = r2 << 2;
+	r2 = (r9 + r2)|0;
+	r2 = r2 >> 2;
+	r9 = r7 >> 2;
+	f1 = heapFloat[(r2)];
+	f2 = heapFloat[(r9)];
+	f3 = heapFloat[(r2+4)];
+	f4 = heapFloat[(r9+1)];
+	f5 = heapFloat[(r2+1)];
+	f6 = heapFloat[(r2+5)];
+	f7 = f1*f2;
+	f8 = f3*f4;
+	f9 = heapFloat[(r2+8)];
+	f10 = heapFloat[(r9+2)];
+	f11 = heapFloat[(r9+8)];
+	f12 = heapFloat[(r2+2)];
+	f13 = heapFloat[(r9+4)];
+	f14 = heapFloat[(r2+12)];
+	f15 = heapFloat[(r9+9)];
+	f16 = heapFloat[(r2+6)];
+	f17 = heapFloat[(r9+5)];
+	f18 = heapFloat[(r2+13)];
+	f19 = heapFloat[(r2+9)];
+	f20 = heapFloat[(r9+10)];
+	f21 = heapFloat[(r2+10)];
+	f22 = heapFloat[(r9+6)];
+	f23 = heapFloat[(r2+14)];
+	f24 = f5*f2;
+	f25 = f6*f4;
+	f7 = f7+f8;
+	f8 = f9*f10;
+	r2 = heap32[(r2+16)];
+	f26 = heapFloat[(r9+14)];
+	f27 = heapFloat[(r9+13)];
+	f28 = heapFloat[(r9+12)];
+	r9 = sp + -1408;
+	f29 = f12*f2;
+	f30 = f16*f4;
+	f24 = f24+f25;
+	f25 = f19*f10;
+	f7 = f7+f8;
+	r10 = r9 >> 2;
+	f8 = f29+f30;
+	f29 = f21*f10;
+	f24 = f24+f25;
+	heapFloat[(fp+-352)] = f7;
+	f7 = f1*f13;
+	f25 = f3*f17;
+	f8 = f8+f29;
+	heapFloat[(r10+1)] = f24;
+	heapFloat[(r10+2)] = f8;
+	f8 = f5*f13;
+	f24 = f6*f17;
+	f7 = f7+f25;
+	f25 = f9*f22;
+	f29 = f12*f13;
+	f30 = f16*f17;
+	f8 = f8+f24;
+	f24 = f19*f22;
+	f7 = f7+f25;
+	heap32[(r10+3)] = 0;
+	f25 = f29+f30;
+	f29 = f21*f22;
+	f8 = f8+f24;
+	heapFloat[(r10+4)] = f7;
+	f1 = f1*f11;
+	f3 = f3*f15;
+	f7 = f25+f29;
+	heapFloat[(r10+5)] = f8;
+	heapFloat[(r10+6)] = f7;
+	f5 = f5*f11;
+	f6 = f6*f15;
+	f1 = f1+f3;
+	f3 = f9*f20;
+	f7 = f12*f11;
+	f8 = f16*f15;
+	f5 = f5+f6;
+	f6 = f19*f20;
+	f1 = f1+f3;
+	heap32[(r10+7)] = 0;
+	f2 = f2*f14;
+	f3 = f4*f18;
+	f4 = f7+f8;
+	f7 = f21*f20;
+	f5 = f5+f6;
+	heapFloat[(r10+8)] = f1;
+	f1 = f13*f14;
+	f6 = f17*f18;
+	f2 = f2+f3;
+	f3 = f10*f23;
+	f4 = f4+f7;
+	heapFloat[(r10+9)] = f5;
+	f2 = f2+f3;
+	heapFloat[(r10+10)] = f4;
+	f3 = f11*f14;
+	f4 = f15*f18;
+	f1 = f1+f6;
+	f5 = f22*f23;
+	f1 = f1+f5;
+	f3 = f3+f4;
+	f4 = f20*f23;
+	f2 = f2+f28;
+	heap32[(r10+11)] = 0;
+	f3 = f3+f4;
+	f1 = f1+f27;
+	heapFloat[(r10+12)] = f2;
+	f2 = f3+f26;
+	heapFloat[(r10+13)] = f1;
+	heapFloat[(r10+14)] = f2;
+	r11 = r6 >> 2;
+	heap32[(r10+15)] = 0;
+	r10 = heap32[(r11+48)];
+	r12 = 1;
+	heap32[(r11+48)] = r2;
+	r13 = _ZTVZN16btCollisionWorld17objectQuerySingleEPK13btConvexShapeRK11btTransformS5_P17btCollisionObjectPK16btCollisionShapeS5_RNS_20ConvexResultCallbackEfE14LocalInfoAdder;
+	r14 = -1;
+	heap16[(sp+-1424)>>1] = r12;
+	r12 = sp + -1432;
+	heap16[(sp+-1422)>>1] = r14;
+	r13 = (r13 + 8)|0;
+	r14 = r12 >> 2;
+	heap32[(fp+-358)] = r13;
+	heap32[(r14+3)] = r8;
+	r15 = r8 >> 2;
+	heap32[(r14+4)] = r0;
+	heap32[(r14+1)] = heap32[(r15+1)];
+	heap32[(g0)] = r3;
+	heap32[(g0+1)] = r4;
+	heap32[(g0+2)] = r5;
+	heap32[(g0+3)] = r6;
+	heap32[(g0+4)] = r2;
+	heap32[(g0+5)] = r9;
+	heap32[(g0+6)] = r12;
+	heapFloat[(g0+7)] = f0;
+	_ZN16btCollisionWorld17objectQuerySingleEPK13btConvexShapeRK11btTransformS5_P17btCollisionObjectPK16btCollisionShapeS5_RNS_20ConvexResultCallbackEf(i7);
+	r0 = (r0 + 1)|0;
+	heap32[(r11+48)] = r10;
+	heap32[(fp+-358)] = r13;
+	r2 = heap32[(r1+4)];
+if(!(r2 >r0)) //_LBB247_33
+{
+break _8;
+}
+}
+}
+	r0 = _ZN15CProfileManager11CurrentNodeE;
+	r0 = r0 >> 2;
+	r1 = heap32[(r0)];
+	r2 = r1 >> 2;
+	r3 = heap32[(r2+4)];
+	r3 = (r3 + -1)|0;
+	heap32[(r2+4)] = r3;
+	if(r3 !=0) //_LBB247_5
+{
+break _1;
+}
+else{
+	r3 = heap32[(r2+1)];
+	if(r3 !=0) //_LBB247_37
+{
+	r1 = sp + -24;
+	heap32[(g0)] = r1;
+	heap32[(g0+1)] = 0;
+	r3 = _ZL13gProfileClock_2E_0;
+	gettimeofday(i7);
+	r3 = r3 >> 2;
+	r3 = heap32[(r3)];
+	r3 = r3 >> 2;
+	r1 = r1 >> 2;
+	r4 = heap32[(fp+-6)];
+	r5 = heap32[(r3)];
+	r4 = (r4 - r5)|0;
+	r1 = heap32[(r1+1)];
+	r3 = heap32[(r3+1)];
+	r1 = (r1 - r3)|0;
+	r3 = (r4 * 1000000)|0;
+	r1 = (r1 + r3)|0;
+	r3 = heap32[(r2+3)];
+	r1 = (r1 - r3)|0;
+	f0 = uint(r1); //fuitos r1, f0
+	f1 =                      1000;
+	f2 = heapFloat[(r2+2)];
+	f0 = f0/f1;
+	f0 = f2+f0;
+	heapFloat[(r2+2)] = f0;
+	r1 = heap32[(r2+4)];
+	if(r1 !=0) //_LBB247_5
+{
+break _1;
+}
+else{
+	r1 = heap32[(r0)];
+}
+}
+	r1 = r1 >> 2;
+	r1 = heap32[(r1+5)];
+	heap32[(r0)] = r1;
+	return;
+}
+}
+}
+else{
+	if(r2 !=21) //_LBB247_11
+{
+	r2 = r5 >> 2;
+	r9 = r7 >> 2;
+	f0 = heapFloat[(r9)];
+	f1 = heapFloat[(r2)];
+	f2 = heapFloat[(r9+4)];
+	f3 = heapFloat[(r2+4)];
+	r10 = r4 >> 2;
+	f4 = heapFloat[(r2+1)];
+	f5 = heapFloat[(r2+5)];
+	f6 = f1*f0;
+	f7 = f3*f2;
+	f8 = heapFloat[(r9+8)];
+	f9 = heapFloat[(r2+8)];
+	f10 = heapFloat[(r9+2)];
+	f11 = heapFloat[(r2+2)];
+	f12 = heapFloat[(r9+1)];
+	f13 = heapFloat[(r2+12)];
+	f14 = heapFloat[(r10+12)];
+	f15 = heapFloat[(r9+6)];
+	f16 = heapFloat[(r2+6)];
+	f17 = heapFloat[(r9+5)];
+	f18 = heapFloat[(r2+13)];
+	f19 = heapFloat[(r10+13)];
+	f20 = heapFloat[(r9+13)];
+	f21 = heapFloat[(r2+10)];
+	f22 = heapFloat[(r9+10)];
+	f23 = heapFloat[(r2+9)];
+	f24 = heapFloat[(r9+9)];
+	f25 = heapFloat[(r2+14)];
+	heapFloat[(fp+-360)] = f25;
+	f26 = heapFloat[(r10+14)];
+	f27 = heapFloat[(r9+14)];
+	f28 = heapFloat[(r9+12)];
+	heapFloat[(fp+-359)] = f28;
+	f29 = f4*f0;
+	f30 = f5*f2;
+	f6 = f6+f7;
+	f7 = f9*f8;
+	r2 = sp + -1056;
+	f25 = f11*f0;
+	f28 = f16*f2;
+	f29 = f29+f30;
+	f30 = f23*f8;
+	f6 = f6+f7;
+	r9 = r2 >> 2;
+	f7 = f25+f28;
+	f25 = f21*f8;
+	f28 = f29+f30;
+	heapFloat[(fp+-264)] = f6;
+	f6 = f1*f12;
+	f29 = f3*f17;
+	f7 = f7+f25;
+	heapFloat[(r9+1)] = f28;
+	heapFloat[(r9+2)] = f7;
+	f7 = f4*f12;
+	f25 = f5*f17;
+	f6 = f6+f29;
+	f28 = f9*f24;
+	f29 = f11*f12;
+	f30 = f16*f17;
+	f7 = f7+f25;
+	f25 = f23*f24;
+	f6 = f6+f28;
+	heap32[(r9+3)] = 0;
+	f28 = f29+f30;
+	f29 = f21*f24;
+	f7 = f7+f25;
+	heapFloat[(r9+4)] = f6;
+	f1 = f1*f10;
+	f3 = f3*f15;
+	f6 = f28+f29;
+	heapFloat[(r9+5)] = f7;
+	heapFloat[(r9+6)] = f6;
+	f4 = f4*f10;
+	f5 = f5*f15;
+	f1 = f1+f3;
+	f3 = f9*f22;
+	f6 = f11*f10;
+	f7 = f16*f15;
+	f4 = f4+f5;
+	f5 = f23*f22;
+	f1 = f1+f3;
+	heap32[(r9+7)] = 0;
+	f3 = f6+f7;
+	f6 = f21*f22;
+	f4 = f4+f5;
+	heapFloat[(r9+8)] = f1;
+	f1 = f3+f6;
+	heapFloat[(r9+9)] = f4;
+	heapFloat[(r9+10)] = f1;
+	heap32[(r9+11)] = 0;
+	heap32[(r9+12)] = 0;
+	heap32[(r9+13)] = 0;
+	heap32[(r9+14)] = 0;
+	heap32[(r9+15)] = 0;
+	r9 = heap32[(r1)];
+	r9 = r9 >> 2;
+	r9 = heap32[(r9+11)];
+	heap32[(g0)] = r0;
+	__FUNCTION_TABLE__[(r9)>>2](i7);
+	r9 = sp + -1280;
+	heap32[(g0)] = r9;
+	heap32[(g0+1)] = r3;
+	heap32[(g0+2)] = r4;
+	heap32[(g0+3)] = r5;
+	heap32[(g0+4)] = r7;
+	heapFloat[(g0+5)] = f_g0;
+	r4 = _ZTVZN16btCollisionWorld17objectQuerySingleEPK13btConvexShapeRK11btTransformS5_P17btCollisionObjectPK16btCollisionShapeS5_RNS_20ConvexResultCallbackEfE32BridgeTriangleConvexcastCallback_0;
+	_ZN28btTriangleConvexcastCallbackC2EPK13btConvexShapeRK11btTransformS5_S5_f(i7);
+	r4 = (r4 + 8)|0;
+	r5 = r9 >> 2;
+	heap32[(fp+-320)] = r4;
+	heap32[(r5+52)] = r8;
+	heap32[(r5+53)] = r6;
+	r4 = r8 >> 2;
+	heap32[(r5+54)] = r0;
+	r6 = r3 >> 2;
+	heap32[(r5+50)] = heap32[(r4+1)];
+	r4 = heap32[(r6)];
+	r4 = r4 >> 2;
+	r4 = heap32[(r4+2)];
+	f28 = heapFloat[(fp+-359)];
+	f1 = -f28;
+	r5 = sp + -1296;
+	r6 = sp + -1312;
+	f3 = f0*f14;
+	f4 = f2*f19;
+	f5 = f0*f1;
+	f6 = f2*f20;
+	f3 = f3+f4;
+	f4 = f8*f26;
+	f5 = f5-f6;
+	f6 = f8*f27;
+	heap32[(g0)] = r3;
+	heap32[(g0+1)] = r2;
+	heap32[(g0+2)] = r5;
+	heap32[(g0+3)] = r6;
+	f7 = f12*f14;
+	f9 = f17*f19;
+	f11 = f12*f1;
+	f16 = f17*f20;
+	f3 = f3+f4;
+	f4 = f5-f6;
+	f5 = f10*f14;
+	f6 = f15*f19;
+	f1 = f10*f1;
+	f14 = f15*f20;
+	f7 = f7+f9;
+	f9 = f24*f26;
+	f11 = f11-f16;
+	f16 = f24*f27;
+	f3 = f3+f4;
+	__FUNCTION_TABLE__[(r4)>>2](i7);
+	r2 = sp + -1328;
+	f0 = f0*f13;
+	f2 = f2*f18;
+	f10 = f10*f13;
+	f15 = f15*f18;
+	f12 = f12*f13;
+	f13 = f17*f18;
+	f5 = f5+f6;
+	f6 = f22*f26;
+	f1 = f1-f14;
+	f14 = f22*f27;
+	f7 = f7+f9;
+	f9 = f11-f16;
+	f7 = f7+f9;
+	f0 = f0+f2;
+	f25 = heapFloat[(fp+-360)];
+	f2 = f8*f25;
+	f8 = f10+f15;
+	f10 = f22*f25;
+	f11 = f12+f13;
+	f12 = f24*f25;
+	r3 = r2 >> 2;
+	heapFloat[(fp+-332)] = f3;
+	f5 = f5+f6;
+	f1 = f1-f14;
+	f0 = f0+f2;
+	f2 = f8+f10;
+	f6 = f11+f12;
+	f5 = f5+f1;
+	heapFloat[(r3+1)] = f7;
+	f0 = f0+f4;
+	f1 = f2+f1;
+	f2 = f6+f9;
+	heapFloat[(r3+2)] = f5;
+	heap32[(r3+3)] = 0;
+	if(f0 <f3) //_LBB247_13
+{
+	heapFloat[(fp+-332)] = f0;
+	f4 = f0;
+}
+else{
+	f4 = f3;
+}
+	if(f2 <f7) //_LBB247_16
+{
+	heapFloat[(r3+1)] = f2;
+	f6 = f2;
+}
+else{
+	f6 = f7;
+}
+	if(f1 <f5) //_LBB247_19
+{
+	heapFloat[(r3+2)] = f1;
+	f8 = f1;
+}
+else{
+	f8 = f5;
+}
+	r4 = sp + -1344;
+	r7 = r4 >> 2;
+	heapFloat[(fp+-336)] = f3;
+	heapFloat[(r7+1)] = f7;
+	heapFloat[(r7+2)] = f5;
+	heap32[(r7+3)] = 0;
+	if(f3 <f0) //_LBB247_22
+{
+	heapFloat[(fp+-336)] = f0;
+	f3 = f0;
+}
+	if(f7 <f2) //_LBB247_25
+{
+	heapFloat[(r7+1)] = f2;
+	f7 = f2;
+}
+	if(f5 <f1) //_LBB247_28
+{
+	heapFloat[(r7+2)] = f1;
+	f5 = f1;
+}
+	f0 = heapFloat[(fp+-324)];
+	f0 = f4+f0;
+	r5 = r5 >> 2;
+	heapFloat[(fp+-332)] = f0;
+	f0 = heapFloat[(r5+1)];
+	f0 = f6+f0;
+	heapFloat[(r3+1)] = f0;
+	f0 = heapFloat[(r5+2)];
+	f0 = f8+f0;
+	heapFloat[(r3+2)] = f0;
+	f0 = heapFloat[(fp+-328)];
+	f0 = f3+f0;
+	r3 = r6 >> 2;
+	heapFloat[(fp+-336)] = f0;
+	f0 = heapFloat[(r3+1)];
+	f0 = f7+f0;
+	heapFloat[(r7+1)] = f0;
+	f0 = heapFloat[(r3+2)];
+	f0 = f5+f0;
+	heapFloat[(r7+2)] = f0;
+	r1 = heap32[(r1)];
+	r1 = r1 >> 2;
+	r1 = heap32[(r1+15)];
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r9;
+	heap32[(g0+2)] = r2;
+	heap32[(g0+3)] = r4;
+	__FUNCTION_TABLE__[(r1)>>2](i7);
+	return;
+}
+else{
+	r2 = r7 >> 2;
+	r9 = r4 >> 2;
+	f0 = heapFloat[(r2+12)];
+	f0 = -f0;
+	f1 = heapFloat[(r2)];
+	f2 = heapFloat[(r9+12)];
+	f3 = heapFloat[(r2+4)];
+	f4 = heapFloat[(r2+13)];
+	f5 = heapFloat[(r9+13)];
+	f6 = heapFloat[(r2+1)];
+	f7 = heapFloat[(r2+5)];
+	f8 = f1*f2;
+	f9 = f3*f5;
+	f10 = f1*f0;
+	f11 = f3*f4;
+	f12 = heapFloat[(r2+8)];
+	f13 = heapFloat[(r2+14)];
+	f14 = heapFloat[(r9+14)];
+	f15 = heapFloat[(r2+9)];
+	f16 = heapFloat[(r2+2)];
+	f17 = heapFloat[(r2+6)];
+	f18 = f6*f2;
+	f19 = f7*f5;
+	f20 = f6*f0;
+	f21 = f7*f4;
+	f8 = f8+f9;
+	f9 = f12*f14;
+	f10 = f10-f11;
+	f11 = f12*f13;
+	f22 = heapFloat[(r2+10)];
+	f2 = f16*f2;
+	f5 = f17*f5;
+	f0 = f16*f0;
+	f4 = f17*f4;
+	f18 = f18+f19;
+	f19 = f15*f14;
+	f20 = f20-f21;
+	f21 = f15*f13;
+	f8 = f8+f9;
+	f9 = f10-f11;
+	r2 = sp + -656;
+	f2 = f2+f5;
+	f5 = f22*f14;
+	f0 = f0-f4;
+	f4 = f22*f13;
+	f10 = f18+f19;
+	f11 = f20-f21;
+	f8 = f8+f9;
+	r9 = r2 >> 2;
+	f2 = f2+f5;
+	f0 = f0-f4;
+	f4 = f10+f11;
+	heapFloat[(fp+-164)] = f8;
+	f2 = f2+f0;
+	heapFloat[(r9+1)] = f4;
+	heapFloat[(r9+2)] = f2;
+	r10 = r5 >> 2;
+	heap32[(r9+3)] = 0;
+	f2 = heapFloat[(r10+12)];
+	f4 = heapFloat[(r10+13)];
+	f5 = heapFloat[(r10+14)];
+	f8 = f1*f2;
+	f10 = f3*f4;
+	f13 = f6*f2;
+	f14 = f7*f4;
+	f8 = f8+f10;
+	f10 = f12*f5;
+	f8 = f8+f10;
+	f2 = f16*f2;
+	f4 = f17*f4;
+	f10 = f13+f14;
+	f13 = f15*f5;
+	r9 = sp + -672;
+	f10 = f10+f13;
+	f2 = f2+f4;
+	f4 = f22*f5;
+	f5 = f8+f9;
+	f2 = f2+f4;
+	r11 = r9 >> 2;
+	f4 = f10+f11;
+	heapFloat[(fp+-168)] = f5;
+	f0 = f2+f0;
+	heapFloat[(r11+1)] = f4;
+	heapFloat[(r11+2)] = f0;
+	heap32[(r11+3)] = 0;
+	f0 = heapFloat[(r10)];
+	f2 = heapFloat[(r10+4)];
+	f4 = heapFloat[(r10+1)];
+	f5 = heapFloat[(r10+5)];
+	f8 = heapFloat[(r10+8)];
+	f9 = f0*f1;
+	f10 = f2*f3;
+	f11 = heapFloat[(r10+2)];
+	f13 = heapFloat[(r10+6)];
+	f14 = heapFloat[(r10+10)];
+	f18 = heapFloat[(r10+9)];
+	f19 = f4*f1;
+	f20 = f5*f3;
+	f9 = f9+f10;
+	f10 = f8*f12;
+	r10 = sp + -736;
+	f1 = f11*f1;
+	f3 = f13*f3;
+	f19 = f19+f20;
+	f20 = f18*f12;
+	f9 = f9+f10;
+	r11 = r10 >> 2;
+	f1 = f1+f3;
+	f3 = f14*f12;
+	f10 = f19+f20;
+	heapFloat[(fp+-184)] = f9;
+	f9 = f0*f6;
+	f12 = f2*f7;
+	f1 = f1+f3;
+	heapFloat[(r11+1)] = f10;
+	heapFloat[(r11+2)] = f1;
+	f1 = f4*f6;
+	f3 = f5*f7;
+	f9 = f9+f12;
+	f10 = f8*f15;
+	f6 = f11*f6;
+	f7 = f13*f7;
+	f1 = f1+f3;
+	f3 = f18*f15;
+	f9 = f9+f10;
+	heap32[(r11+3)] = 0;
+	f6 = f6+f7;
+	f7 = f14*f15;
+	f1 = f1+f3;
+	heapFloat[(r11+4)] = f9;
+	f0 = f0*f16;
+	f2 = f2*f17;
+	f3 = f6+f7;
+	heapFloat[(r11+5)] = f1;
+	heapFloat[(r11+6)] = f3;
+	f1 = f4*f16;
+	f3 = f5*f17;
+	f0 = f0+f2;
+	f2 = f8*f22;
+	f4 = f11*f16;
+	f5 = f13*f17;
+	f1 = f1+f3;
+	f3 = f18*f22;
+	f0 = f0+f2;
+	heap32[(r11+7)] = 0;
+	f2 = f4+f5;
+	f4 = f14*f22;
+	f1 = f1+f3;
+	heapFloat[(r11+8)] = f0;
+	f0 = f2+f4;
+	heapFloat[(r11+9)] = f1;
+	heapFloat[(r11+10)] = f0;
+	heap32[(r11+11)] = 0;
+	heap32[(r11+12)] = 0;
+	heap32[(r11+13)] = 0;
+	heap32[(r11+14)] = 0;
+	heap32[(r11+15)] = 0;
+	r11 = heap32[(r1)];
+	r11 = r11 >> 2;
+	r11 = heap32[(r11+11)];
+	heap32[(g0)] = r0;
+	__FUNCTION_TABLE__[(r11)>>2](i7);
+	r11 = sp + -960;
+	heap32[(g0)] = r11;
+	heap32[(g0+1)] = r3;
+	heap32[(g0+2)] = r4;
+	heap32[(g0+3)] = r5;
+	heap32[(g0+4)] = r7;
+	heapFloat[(g0+5)] = f_g0;
+	r4 = _ZTVZN16btCollisionWorld17objectQuerySingleEPK13btConvexShapeRK11btTransformS5_P17btCollisionObjectPK16btCollisionShapeS5_RNS_20ConvexResultCallbackEfE32BridgeTriangleConvexcastCallback;
+	_ZN28btTriangleConvexcastCallbackC2EPK13btConvexShapeRK11btTransformS5_S5_f(i7);
+	r4 = (r4 + 8)|0;
+	r5 = r11 >> 2;
+	heap32[(fp+-240)] = r4;
+	heap32[(r5+52)] = r8;
+	heap32[(r5+53)] = r6;
+	r4 = r8 >> 2;
+	heap32[(r5+54)] = r0;
+	r0 = r3 >> 2;
+	heap32[(r5+50)] = heap32[(r4+1)];
+	r0 = heap32[(r0)];
+	r0 = r0 >> 2;
+	r0 = heap32[(r0+2)];
+	r4 = sp + -976;
+	r5 = sp + -992;
+	heap32[(g0)] = r3;
+	heap32[(g0+1)] = r10;
+	heap32[(g0+2)] = r4;
+	heap32[(g0+3)] = r5;
+	__FUNCTION_TABLE__[(r0)>>2](i7);
+	r0 = _ZTVZN22btBvhTriangleMeshShape17performConvexcastEP18btTriangleCallbackRK9btVector3S4_S4_S4_E21MyNodeOverlapCallback;
+	r3 = sp + -16;
+	r6 = heap32[(r1+12)];
+	r0 = (r0 + 8)|0;
+	r7 = r3 >> 2;
+	heap32[(fp+-4)] = r0;
+	heap32[(r7+1)] = r6;
+	heap32[(r7+2)] = r11;
+	r0 = heap32[(r1+13)];
+	r1 = heapU8[r0+60];
+	if(r1 ==0) //_LBB247_10
+{
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r3;
+	heap32[(g0+2)] = r2;
+	heap32[(g0+3)] = r9;
+	heap32[(g0+4)] = r4;
+	heap32[(g0+5)] = r5;
+	_ZNK14btQuantizedBvh27walkStacklessTreeAgainstRayEP21btNodeOverlapCallbackRK9btVector3S4_S4_S4_ii(i7);
+	return;
+}
+else{
+	r1 = r0 >> 2;
+	r1 = heap32[(r1+14)];
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r3;
+	heap32[(g0+2)] = r2;
+	heap32[(g0+3)] = r9;
+	heap32[(g0+4)] = r4;
+	heap32[(g0+5)] = r5;
+	heap32[(g0+6)] = r1;
+	_ZNK14btQuantizedBvh36walkStacklessQuantizedTreeAgainstRayEP21btNodeOverlapCallbackRK9btVector3S4_S4_S4_ii(i7);
+	return;
+}
+}
+}
+}
+else{
+	r1 = _ZTVN12btConvexCast10CastResultE;
+	r2 = sp + -200;
+	r1 = (r1 + 8)|0;
+	r9 = r2 >> 2;
+	heap32[(fp+-50)] = r1;
+	heap32[(r9+42)] = 0;
+	r1 = sp + -560;
+	r10 = r8 >> 2;
+	heapFloat[(r9+43)] = f0;
+	r11 = r1 >> 2;
+	heap32[(r9+41)] = heap32[(r10+1)];
+	r12 = _ZTV30btGjkEpaPenetrationDepthSolver;
+	r13 = 0;
+	heap32[(r11+77)] = 953267991;
+	r11 = _ZTV27btContinuousConvexCollision;
+	r12 = (r12 + 8)|0;
+	heap8[sp+-228] = r13;
+	r13 = sp + -592;
+	r11 = (r11 + 8)|0;
+	heap32[(fp+-142)] = r12;
+	r12 = r13 >> 2;
+	heap32[(fp+-148)] = r11;
+	r11 = sp + -568;
+	heap32[(r12+1)] = r1;
+	heap32[(r12+2)] = r11;
+	heap32[(r12+3)] = r3;
+	heap32[(r12+4)] = r0;
+	heap32[(g0)] = r13;
+	heap32[(g0+1)] = r4;
+	heap32[(g0+2)] = r5;
+	heap32[(g0+3)] = r7;
+	heap32[(g0+4)] = r7;
+	heap32[(g0+5)] = r2;
+	_ZN27btContinuousConvexCollision16calcTimeOfImpactERK11btTransformS2_S2_S2_RN12btConvexCast10CastResultE(i7);
+	r0 = r_g0;
+if(!(r0 ==0)) //_LBB247_5
+{
+	f0 = heapFloat[(r9+33)];
+	f1 = heapFloat[(r9+34)];
+	f2 = heapFloat[(r9+35)];
+	f0 = f0*f0;
+	f1 = f1*f1;
+	f0 = f0+f1;
+	f1 = f2*f2;
+	f0 = f0+f1;
+	f1 =   9.9999997473787516e-005;
+if(!(f0 <=f1)) //_LBB247_5
+{
+	f1 = heapFloat[(r9+41)];
+	f2 = heapFloat[(r10+1)];
+if(!(f1 >=f2)) //_LBB247_5
+{
+	heapFloat[(g0)] = f0;
+	sqrtf(i7);
+	f1 =                         1;
+	f2 = heapFloat[(r9+33)];
+	f0 = f1/f_g0;
+	f1 = f2*f0;
+	heapFloat[(r9+33)] = f1;
+	f2 = heapFloat[(r9+34)];
+	f2 = f2*f0;
+	heapFloat[(r9+34)] = f2;
+	f3 = heapFloat[(r9+35)];
+	f0 = f3*f0;
+	heapFloat[(r9+35)] = f0;
+	r0 = sp + -640;
+	f3 = heapFloat[(r9+41)];
+	r1 = r0 >> 2;
+	heap32[(fp+-160)] = r6;
+	heap32[(r1+1)] = 0;
+	heapFloat[(r1+2)] = f1;
+	heapFloat[(r1+3)] = f2;
+	heapFloat[(r1+4)] = f0;
+	heap32[(r1+5)] = heap32[(r9+36)];
+	heap32[(r1+6)] = heap32[(r9+37)];
+	heap32[(r1+7)] = heap32[(r9+38)];
+	heap32[(r1+8)] = heap32[(r9+39)];
+	heap32[(r1+9)] = heap32[(r9+40)];
+	heapFloat[(r1+10)] = f3;
+	r1 = heap32[(r10)];
+	r1 = r1 >> 2;
+	r1 = heap32[(r1+3)];
+	heap32[(g0)] = r8;
+	heap32[(g0+1)] = r0;
+	heap32[(g0+2)] = 1;
+	__FUNCTION_TABLE__[(r1)>>2](i7);
+}
+}
+}
+}
+} while(0);
+	return;
+}
+
+function _ZN16btCollisionWorld13rayTestSingleERK11btTransformS2_P17btCollisionObjectPK16btCollisionShapeS2_RNS_17RayResultCallbackE(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+	var r6;
+	var r7;
+	var r8;
+	var r9;
+	var r10;
+	var r11;
+	var r12;
+	var r13;
+	var r14;
+	var f0;
+	var f1;
+	var f2;
+	var f3;
+	var f4;
+	var f5;
+	var f6;
+	var f7;
+	var f8;
+	var f9;
+	var f10;
+	var f11;
+	var f12;
+	var f13;
+	var f14;
+	var f15;
+	var f16;
+	var f17;
+	var f18;
+	var f19;
+	var f20;
+	var f21;
+	var f22;
+	var f23;
+	var f24;
+	var f25;
+	var f26;
+	var f27;
+	var f28;
+	var f29;
+var __label__ = 0;
+	i7 = sp + -1120;var g0 = i7>>2; // save stack
+	r0 = sp + -104;
+	r1 = r0 >> 2;
+	heap32[(r1+2)] = 0;
+	heap32[(r1+3)] = 1065353216;
+	heap32[(r1+4)] = 1065353216;
+	r2 = _ZTV13btSphereShape;
+	heap32[(r1+5)] = 1065353216;
+	r2 = (r2 + 8)|0;
+	heap32[(r1+6)] = 0;
+	heap32[(fp+-26)] = r2;
+	heap32[(r1+1)] = 8;
+	r2 = heap32[(fp+3)];
+	heap32[(r1+7)] = 0;
+	r3 = r2 >> 2;
+	heap32[(r1+11)] = 0;
+	r1 = heap32[(r3+1)];
+	r4 = heap32[(fp)];
+	r5 = heap32[(fp+1)];
+	r6 = heap32[(fp+2)];
+	r7 = heap32[(fp+4)];
+	r8 = heap32[(fp+5)];
+	if(r1 >19) //_LBB248_6
+{
+	r0 = (r1 + -21)|0;
+	if(uint(r0) >uint(8)) //_LBB248_25
+{
+if(!(r1 !=31)) //_LBB248_29
+{
+	r0 = heap32[(r3+4)];
+if(!(r0 <1)) //_LBB248_29
+{
+	r0 = 0;
+_8: while(true){
+	r1 = (r0 * 20)|0;
+	r2 = heap32[(r3+6)];
+	r1 = r1 << 2;
+	r1 = (r2 + r1)|0;
+	r1 = r1 >> 2;
+	r2 = r7 >> 2;
+	f0 = heapFloat[(r1)];
+	f1 = heapFloat[(r2)];
+	f2 = heapFloat[(r1+4)];
+	f3 = heapFloat[(r2+1)];
+	f4 = heapFloat[(r1+1)];
+	f5 = heapFloat[(r1+5)];
+	f6 = f0*f1;
+	f7 = f2*f3;
+	f8 = heapFloat[(r1+8)];
+	f9 = heapFloat[(r2+2)];
+	f10 = heapFloat[(r2+8)];
+	f11 = heapFloat[(r1+2)];
+	f12 = heapFloat[(r2+4)];
+	f13 = heapFloat[(r1+12)];
+	f14 = heapFloat[(r2+9)];
+	f15 = heapFloat[(r1+6)];
+	f16 = heapFloat[(r2+5)];
+	f17 = heapFloat[(r1+13)];
+	f18 = heapFloat[(r1+9)];
+	f19 = heapFloat[(r2+10)];
+	f20 = heapFloat[(r1+10)];
+	f21 = heapFloat[(r2+6)];
+	f22 = heapFloat[(r1+14)];
+	f23 = f4*f1;
+	f24 = f5*f3;
+	f6 = f6+f7;
+	f7 = f8*f9;
+	r1 = heap32[(r1+16)];
+	f25 = heapFloat[(r2+14)];
+	f26 = heapFloat[(r2+13)];
+	f27 = heapFloat[(r2+12)];
+	r2 = sp + -1056;
+	f28 = f11*f1;
+	f29 = f15*f3;
+	f23 = f23+f24;
+	f24 = f18*f9;
+	f6 = f6+f7;
+	r9 = r2 >> 2;
+	f7 = f28+f29;
+	f28 = f20*f9;
+	f23 = f23+f24;
+	heapFloat[(fp+-264)] = f6;
+	f6 = f0*f12;
+	f24 = f2*f16;
+	f7 = f7+f28;
+	heapFloat[(r9+1)] = f23;
+	heapFloat[(r9+2)] = f7;
+	f7 = f4*f12;
+	f23 = f5*f16;
+	f6 = f6+f24;
+	f24 = f8*f21;
+	f28 = f11*f12;
+	f29 = f15*f16;
+	f7 = f7+f23;
+	f23 = f18*f21;
+	f6 = f6+f24;
+	heap32[(r9+3)] = 0;
+	f24 = f28+f29;
+	f28 = f20*f21;
+	f7 = f7+f23;
+	heapFloat[(r9+4)] = f6;
+	f0 = f0*f10;
+	f2 = f2*f14;
+	f6 = f24+f28;
+	heapFloat[(r9+5)] = f7;
+	heapFloat[(r9+6)] = f6;
+	f4 = f4*f10;
+	f5 = f5*f14;
+	f0 = f0+f2;
+	f2 = f8*f19;
+	f6 = f11*f10;
+	f7 = f15*f14;
+	f4 = f4+f5;
+	f5 = f18*f19;
+	f0 = f0+f2;
+	heap32[(r9+7)] = 0;
+	f1 = f1*f13;
+	f2 = f3*f17;
+	f3 = f6+f7;
+	f6 = f20*f19;
+	f4 = f4+f5;
+	heapFloat[(r9+8)] = f0;
+	f0 = f12*f13;
+	f5 = f16*f17;
+	f1 = f1+f2;
+	f2 = f9*f22;
+	f3 = f3+f6;
+	heapFloat[(r9+9)] = f4;
+	f1 = f1+f2;
+	heapFloat[(r9+10)] = f3;
+	f2 = f10*f13;
+	f3 = f14*f17;
+	f0 = f0+f5;
+	f4 = f21*f22;
+	f0 = f0+f4;
+	f2 = f2+f3;
+	f3 = f19*f22;
+	f1 = f1+f27;
+	heap32[(r9+11)] = 0;
+	f2 = f2+f3;
+	f0 = f0+f26;
+	heapFloat[(r9+12)] = f1;
+	f1 = f2+f25;
+	heapFloat[(r9+13)] = f0;
+	heapFloat[(r9+14)] = f1;
+	r10 = r6 >> 2;
+	heap32[(r9+15)] = 0;
+	r9 = sp + -1088;
+	r11 = heap32[(r10+48)];
+	r12 = r9 >> 2;
+	heap32[(r10+48)] = r1;
+	r13 = 1;
+	heap32[(r12+2)] = 0;
+	r14 = -1;
+	heap16[(sp+-1076)>>1] = r13;
+	heap16[(sp+-1074)>>1] = r14;
+	r13 = _ZTVZN16btCollisionWorld13rayTestSingleERK11btTransformS2_P17btCollisionObjectPK16btCollisionShapeS2_RNS_17RayResultCallbackEE15LocalInfoAdder2;
+	heap32[(r12+4)] = 0;
+	r13 = (r13 + 8)|0;
+	heap32[(fp+-272)] = r13;
+	heap32[(r12+5)] = r8;
+	r14 = r8 >> 2;
+	heap32[(r12+6)] = r0;
+	heap32[(r12+1)] = heap32[(r14+1)];
+	heap32[(g0)] = r4;
+	heap32[(g0+1)] = r5;
+	heap32[(g0+2)] = r6;
+	heap32[(g0+3)] = r1;
+	heap32[(g0+4)] = r2;
+	heap32[(g0+5)] = r9;
+	_ZN16btCollisionWorld13rayTestSingleERK11btTransformS2_P17btCollisionObjectPK16btCollisionShapeS2_RNS_17RayResultCallbackE(i7);
+	r0 = (r0 + 1)|0;
+	heap32[(r10+48)] = r11;
+	heap32[(fp+-272)] = r13;
+	r1 = heap32[(r3+4)];
+if(!(r1 >r0)) //_LBB248_28
+{
+break _8;
+}
+}
+}
+}
+	return;
+}
+else{
+	if(r1 !=21) //_LBB248_12
+{
+	r1 = r7 >> 2;
+	r4 = r4 >> 2;
+	f0 = heapFloat[(r1+12)];
+	f1 = heapFloat[(r1+13)];
+	f2 = heapFloat[(r1+4)];
+	f3 = heapFloat[(r4+13)];
+	f4 = heapFloat[(r1)];
+	f5 = -f0;
+	f6 = heapFloat[(r4+12)];
+	f7 = heapFloat[(r1+5)];
+	f8 = heapFloat[(r1+1)];
+	f9 = f4*f6;
+	f10 = f2*f3;
+	f11 = f4*f5;
+	f12 = f2*f1;
+	f13 = heapFloat[(r1+14)];
+	f14 = heapFloat[(r1+8)];
+	f15 = heapFloat[(r4+14)];
+	r4 = r5 >> 2;
+	f16 = heapFloat[(r1+9)];
+	f17 = heapFloat[(r1+6)];
+	f18 = heapFloat[(r1+2)];
+	r5 = r8 >> 2;
+	f9 = f9+f10;
+	f10 = f14*f15;
+	f11 = f11-f12;
+	f12 = f14*f13;
+	f19 = f8*f6;
+	f20 = f7*f3;
+	f21 = f8*f5;
+	f22 = f7*f1;
+	f23 = heapFloat[(r4+12)];
+	f24 = heapFloat[(r4+13)];
+	f25 = heapFloat[(r1+10)];
+	f26 = heapFloat[(r4+14)];
+	r4 = sp + -960;
+	r7 = heap32[(r5+4)];
+	f9 = f9+f10;
+	f10 = f11-f12;
+	f6 = f18*f6;
+	f3 = f17*f3;
+	f11 = f19+f20;
+	f12 = f16*f15;
+	f5 = f18*f5;
+	f19 = f17*f1;
+	f20 = f21-f22;
+	f21 = f16*f13;
+	f9 = f9+f10;
+	f3 = f6+f3;
+	f6 = f25*f15;
+	f11 = f11+f12;
+	f12 = f20-f21;
+	r0 = r4 >> 2;
+	f5 = f5-f19;
+	f15 = f25*f13;
+	f11 = f11+f12;
+	heapFloat[(r0+1)] = f9;
+	f19 = f4*f23;
+	f20 = f2*f24;
+	f3 = f3+f6;
+	f5 = f5-f15;
+	f3 = f3+f5;
+	heapFloat[(r0+2)] = f11;
+	f6 = f19+f20;
+	f15 = f14*f26;
+	f19 = f8*f23;
+	f20 = f7*f24;
+	f6 = f6+f15;
+	heapFloat[(r0+3)] = f3;
+	f15 = f18*f23;
+	f21 = f17*f24;
+	f19 = f19+f20;
+	f20 = f16*f26;
+	f6 = f6+f10;
+	f10 = f19+f20;
+	heap32[(r0+4)] = 0;
+	f15 = f15+f21;
+	f19 = f25*f26;
+	f15 = f15+f19;
+	f10 = f10+f12;
+	heapFloat[(r0+5)] = f6;
+	f5 = f15+f5;
+	heapFloat[(r0+6)] = f10;
+	heapFloat[(r0+7)] = f5;
+	r9 = _ZTVZN16btCollisionWorld13rayTestSingleERK11btTransformS2_P17btCollisionObjectPK16btCollisionShapeS2_RNS_17RayResultCallbackEE29BridgeTriangleRaycastCallback_0;
+	heap32[(r0+8)] = 0;
+	r9 = (r9 + 8)|0;
+	heap32[(r0+9)] = r7;
+	heap32[(fp+-240)] = r9;
+	heap32[(r0+11)] = r8;
+	heap32[(r0+12)] = r6;
+	heap32[(r0+13)] = r2;
+	heapFloat[(r0+14)] = f4;
+	heapFloat[(r0+15)] = f8;
+	heapFloat[(r0+16)] = f18;
+	heap32[(r0+17)] = heap32[(r1+3)];
+	heapFloat[(r0+18)] = f2;
+	heapFloat[(r0+19)] = f7;
+	heapFloat[(r0+20)] = f17;
+	heap32[(r0+21)] = heap32[(r1+7)];
+	heapFloat[(r0+22)] = f14;
+	heapFloat[(r0+23)] = f16;
+	heapFloat[(r0+24)] = f25;
+	heap32[(r0+25)] = heap32[(r1+11)];
+	heapFloat[(r0+26)] = f0;
+	heapFloat[(r0+27)] = f1;
+	heapFloat[(r0+28)] = f13;
+	heap32[(r0+29)] = heap32[(r1+15)];
+	r1 = sp + -976;
+	heap32[(r0+10)] = heap32[(r5+1)];
+	r5 = r1 >> 2;
+	heapFloat[(fp+-244)] = f9;
+	heapFloat[(r5+1)] = f11;
+	heapFloat[(r5+2)] = f3;
+	heap32[(r5+3)] = 0;
+if(!(f6 >=f9)) //_LBB248_14
+{
+	heapFloat[(fp+-244)] = f6;
+}
+if(!(f10 >=f11)) //_LBB248_16
+{
+	heapFloat[(r5+1)] = f10;
+}
+if(!(f5 >=f3)) //_LBB248_18
+{
+	heapFloat[(r5+2)] = f5;
+}
+	r5 = sp + -992;
+	r6 = r5 >> 2;
+	heapFloat[(fp+-248)] = f9;
+	heapFloat[(r6+1)] = f11;
+	heapFloat[(r6+2)] = f3;
+	heap32[(r6+3)] = 0;
+if(!(f9 >=f6)) //_LBB248_20
+{
+	heapFloat[(fp+-248)] = f6;
+}
+if(!(f11 >=f10)) //_LBB248_22
+{
+	heapFloat[(r6+1)] = f10;
+}
+if(!(f3 >=f5)) //_LBB248_24
+{
+	heapFloat[(r6+2)] = f5;
+}
+	r3 = heap32[(r3)];
+	r3 = r3 >> 2;
+	r3 = heap32[(r3+15)];
+	heap32[(g0)] = r2;
+	heap32[(g0+1)] = r4;
+	heap32[(g0+2)] = r1;
+	heap32[(g0+3)] = r5;
+	r1 = _ZTV18btTriangleCallback;
+	r1 = (r1 + 8)|0;
+	__FUNCTION_TABLE__[(r3)>>2](i7);
+	heap32[(fp+-240)] = r1;
+	return;
+}
+else{
+	r1 = r7 >> 2;
+	r4 = r4 >> 2;
+	f0 = heapFloat[(r1+12)];
+	f1 = heapFloat[(r1+13)];
+	f2 = heapFloat[(r1+4)];
+	f3 = heapFloat[(r4+13)];
+	f4 = heapFloat[(r1)];
+	f5 = heapFloat[(r4+12)];
+	f6 = -f0;
+	f7 = heapFloat[(r1+5)];
+	f8 = heapFloat[(r1+1)];
+	f9 = heapFloat[(r1+14)];
+	f10 = heapFloat[(r1+8)];
+	f11 = heapFloat[(r4+14)];
+	f12 = f4*f5;
+	f13 = f2*f3;
+	f14 = f4*f6;
+	f15 = f2*f1;
+	f16 = heapFloat[(r1+9)];
+	f17 = heapFloat[(r1+6)];
+	f18 = heapFloat[(r1+2)];
+	f19 = f8*f5;
+	f20 = f7*f3;
+	f21 = f8*f6;
+	f22 = f7*f1;
+	f12 = f12+f13;
+	f13 = f10*f11;
+	f14 = f14-f15;
+	f15 = f10*f9;
+	f23 = heapFloat[(r1+10)];
+	f5 = f18*f5;
+	f3 = f17*f3;
+	f6 = f18*f6;
+	f24 = f17*f1;
+	f19 = f19+f20;
+	f20 = f16*f11;
+	f21 = f21-f22;
+	f22 = f16*f9;
+	f12 = f12+f13;
+	f13 = f14-f15;
+	r4 = sp + -704;
+	f12 = f12+f13;
+	f3 = f5+f3;
+	f5 = f23*f11;
+	f6 = f6-f24;
+	f11 = f23*f9;
+	f14 = f19+f20;
+	f15 = f21-f22;
+	r7 = r4 >> 2;
+	heapFloat[(fp+-176)] = f12;
+	f14 = f14+f15;
+	f3 = f3+f5;
+	f5 = f6-f11;
+	heapFloat[(r7+1)] = f14;
+	f3 = f3+f5;
+	heapFloat[(r7+2)] = f3;
+	r5 = r5 >> 2;
+	heap32[(r7+3)] = 0;
+	f6 = heapFloat[(r5+12)];
+	f11 = heapFloat[(r5+13)];
+	f19 = heapFloat[(r5+14)];
+	f20 = f4*f6;
+	f21 = f2*f11;
+	f22 = f8*f6;
+	f24 = f7*f11;
+	f20 = f20+f21;
+	f21 = f10*f19;
+	f20 = f20+f21;
+	f6 = f18*f6;
+	f11 = f17*f11;
+	f21 = f22+f24;
+	f22 = f16*f19;
+	r5 = sp + -720;
+	f21 = f21+f22;
+	f13 = f20+f13;
+	f6 = f6+f11;
+	f11 = f23*f19;
+	f6 = f6+f11;
+	r7 = r5 >> 2;
+	heapFloat[(fp+-180)] = f13;
+	f11 = f21+f15;
+	heapFloat[(r7+1)] = f11;
+	f5 = f6+f5;
+	heapFloat[(r7+2)] = f5;
+	r0 = sp + -840;
+	r9 = r8 >> 2;
+	heap32[(r7+3)] = 0;
+	r7 = r0 >> 2;
+	r10 = heap32[(r9+4)];
+	heapFloat[(r7+1)] = f12;
+	heapFloat[(r7+2)] = f14;
+	heapFloat[(r7+3)] = f3;
+	heap32[(r7+4)] = 0;
+	heapFloat[(r7+5)] = f13;
+	heapFloat[(r7+6)] = f11;
+	heapFloat[(r7+7)] = f5;
+	r11 = _ZTVZN16btCollisionWorld13rayTestSingleERK11btTransformS2_P17btCollisionObjectPK16btCollisionShapeS2_RNS_17RayResultCallbackEE29BridgeTriangleRaycastCallback;
+	heap32[(r7+8)] = 0;
+	r11 = (r11 + 8)|0;
+	heap32[(r7+9)] = r10;
+	heap32[(fp+-210)] = r11;
+	heap32[(r7+11)] = r8;
+	heap32[(r7+12)] = r6;
+	heap32[(r7+13)] = r2;
+	heapFloat[(r7+14)] = f4;
+	heapFloat[(r7+15)] = f8;
+	heapFloat[(r7+16)] = f18;
+	heap32[(r7+17)] = heap32[(r1+3)];
+	heapFloat[(r7+18)] = f2;
+	heapFloat[(r7+19)] = f7;
+	heapFloat[(r7+20)] = f17;
+	heap32[(r7+21)] = heap32[(r1+7)];
+	heapFloat[(r7+22)] = f10;
+	heapFloat[(r7+23)] = f16;
+	heapFloat[(r7+24)] = f23;
+	heap32[(r7+25)] = heap32[(r1+11)];
+	heapFloat[(r7+26)] = f0;
+	heapFloat[(r7+27)] = f1;
+	heapFloat[(r7+28)] = f9;
+	heap32[(r7+29)] = heap32[(r1+15)];
+	r1 = _ZTVZN22btBvhTriangleMeshShape14performRaycastEP18btTriangleCallbackRK9btVector3S4_E21MyNodeOverlapCallback;
+	heap32[(r7+10)] = heap32[(r9+1)];
+	r2 = sp + -48;
+	r6 = heap32[(r3+12)];
+	r1 = (r1 + 8)|0;
+	r7 = r2 >> 2;
+	heap32[(fp+-12)] = r1;
+	heap32[(r7+1)] = r6;
+	heap32[(r7+2)] = r0;
+	r1 = heap32[(r3+13)];
+	r3 = sp + -32;
+	r6 = r3 >> 2;
+	heap32[(fp+-8)] = 0;
+	heap32[(r6+1)] = 0;
+	heap32[(r6+2)] = 0;
+	r7 = sp + -16;
+	heap32[(r6+3)] = 0;
+	r6 = r7 >> 2;
+	heap32[(fp+-4)] = 0;
+	heap32[(r6+1)] = 0;
+	heap32[(r6+2)] = 0;
+	heap32[(r6+3)] = 0;
+	r6 = heapU8[r1+60];
+	if(r6 ==0) //_LBB248_10
+{
+	heap32[(g0)] = r1;
+	heap32[(g0+1)] = r2;
+	heap32[(g0+2)] = r4;
+	heap32[(g0+3)] = r5;
+	heap32[(g0+4)] = r7;
+	heap32[(g0+5)] = r3;
+	_ZNK14btQuantizedBvh27walkStacklessTreeAgainstRayEP21btNodeOverlapCallbackRK9btVector3S4_S4_S4_ii(i7);
+}
+else{
+	r6 = r1 >> 2;
+	r6 = heap32[(r6+14)];
+	heap32[(g0)] = r1;
+	heap32[(g0+1)] = r2;
+	heap32[(g0+2)] = r4;
+	heap32[(g0+3)] = r5;
+	heap32[(g0+4)] = r7;
+	heap32[(g0+5)] = r3;
+	heap32[(g0+6)] = r6;
+	_ZNK14btQuantizedBvh36walkStacklessQuantizedTreeAgainstRayEP21btNodeOverlapCallbackRK9btVector3S4_S4_S4_ii(i7);
+}
+	r1 = _ZTV18btTriangleCallback;
+	r1 = (r1 + 8)|0;
+	heap32[(fp+-210)] = r1;
+	return;
+}
+}
+}
+else{
+	r1 = _ZTVN12btConvexCast10CastResultE;
+	r3 = sp + -280;
+	r1 = (r1 + 8)|0;
+	r9 = r3 >> 2;
+	heap32[(fp+-70)] = r1;
+	heap32[(r9+42)] = 0;
+	r1 = sp + -640;
+	r10 = r8 >> 2;
+	heap32[(r9+43)] = 0;
+	r11 = r1 >> 2;
+	heap32[(r9+41)] = heap32[(r10+1)];
+	r12 = _ZTV22btSubsimplexConvexCast;
+	r13 = 0;
+	heap32[(r11+77)] = 953267991;
+	r11 = sp + -656;
+	r12 = (r12 + 8)|0;
+	heap8[sp+-308] = r13;
+	r13 = r11 >> 2;
+	heap32[(fp+-164)] = r12;
+	heap32[(r13+1)] = r1;
+	heap32[(r13+2)] = r0;
+	heap32[(r13+3)] = r2;
+	heap32[(g0)] = r11;
+	heap32[(g0+1)] = r4;
+	heap32[(g0+2)] = r5;
+	heap32[(g0+3)] = r7;
+	heap32[(g0+4)] = r7;
+	heap32[(g0+5)] = r3;
+	_ZN22btSubsimplexConvexCast16calcTimeOfImpactERK11btTransformS2_S2_S2_RN12btConvexCast10CastResultE(i7);
+	r1 = r_g0;
+if(!(r1 ==0)) //_LBB248_5
+{
+	f0 = heapFloat[(r9+33)];
+	f1 = heapFloat[(r9+34)];
+	f2 = heapFloat[(r9+35)];
+	f3 = f0*f0;
+	f4 = f1*f1;
+	f3 = f3+f4;
+	f4 = f2*f2;
+	f3 = f3+f4;
+	f4 =   9.9999997473787516e-005;
+if(!(f3 <=f4)) //_LBB248_5
+{
+	f3 = heapFloat[(r9+41)];
+	f4 = heapFloat[(r10+1)];
+if(!(f3 >=f4)) //_LBB248_5
+{
+	r1 = r4 >> 2;
+	f4 = heapFloat[(r1+4)];
+	f5 = heapFloat[(r1)];
+	f6 = heapFloat[(r1+5)];
+	f7 = heapFloat[(r1+1)];
+	f8 = heapFloat[(r1+8)];
+	f9 = heapFloat[(r1+9)];
+	f4 = f4*f0;
+	f6 = f6*f1;
+	f10 = heapFloat[(r1+6)];
+	f11 = heapFloat[(r1+2)];
+	f5 = f5*f0;
+	f7 = f7*f1;
+	f12 = heapFloat[(r1+10)];
+	f0 = f8*f0;
+	f1 = f9*f1;
+	f4 = f4+f6;
+	f6 = f10*f2;
+	f5 = f5+f7;
+	f7 = f11*f2;
+	f4 = f4+f6;
+	f5 = f5+f7;
+	f0 = f0+f1;
+	f1 = f12*f2;
+	f0 = f0+f1;
+	f1 = f5*f5;
+	f2 = f4*f4;
+	heap32[(r9+36)] = 0;
+	f1 = f1+f2;
+	f2 = f0*f0;
+	f1 = f1+f2;
+	heapFloat[(g0)] = f1;
+	f1 =                         1;
+	sqrtf(i7);
+	f1 = f1/f_g0;
+	f2 = f5*f1;
+	f4 = f4*f1;
+	heapFloat[(r9+33)] = f2;
+	f0 = f0*f1;
+	heapFloat[(r9+34)] = f4;
+	r1 = sp + -688;
+	heapFloat[(r9+35)] = f0;
+	r2 = r1 >> 2;
+	heap32[(fp+-172)] = r6;
+	heap32[(r2+1)] = 0;
+	heapFloat[(r2+2)] = f2;
+	heapFloat[(r2+3)] = f4;
+	heapFloat[(r2+4)] = f0;
+	heap32[(r2+5)] = 0;
+	heapFloat[(r2+6)] = f3;
+	r2 = heap32[(r10)];
+	r2 = r2 >> 2;
+	r2 = heap32[(r2+3)];
+	heap32[(g0)] = r8;
+	heap32[(g0+1)] = r1;
+	heap32[(g0+2)] = 1;
+	__FUNCTION_TABLE__[(r2)>>2](i7);
+}
+}
+}
+	r1 = _ZTV12btConvexCast;
+	r1 = (r1 + 8)|0;
+	heap32[(fp+-164)] = r1;
+	return;
+}
+}
+
+function _ZN22btCompoundLeafCallbackD1Ev(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+var __label__ = 0;
+	i7 = sp + 0;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = _ZTV22btCompoundLeafCallback;
+	r0 = r0 >> 2;
+	r1 = (r1 + 8)|0;
+	heap32[(r0)] = r1;
+	return;
+}
+
+function _ZN22btCompoundLeafCallbackD0Ev(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+var __label__ = 0;
+	i7 = sp + -8;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = _ZTV22btCompoundLeafCallback;
+	r2 = r0 >> 2;
+	r1 = (r1 + 8)|0;
+	heap32[(r2)] = r1;
+	heap32[(g0)] = r0;
+	_ZdlPv(i7);
+	return;
+}
+
+function _ZN22btCompoundLeafCallback7ProcessEPK10btDbvtNode(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+	var r6;
+	var r7;
+	var r8;
+var __label__ = 0;
+	i7 = sp + -136;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = r0 >> 2;
+	r2 = heap32[(r1+1)];
+	r3 = heap32[(fp+1)];
+	r2 = r2 >> 2;
+	r2 = heap32[(r2+48)];
+	r4 = r3 >> 2;
+	r4 = heap32[(r4+9)];
+	r2 = r2 >> 2;
+	r2 = heap32[(r2+6)];
+	r5 = (r4 * 80)|0;
+	r6 = heap32[(r1+4)];
+	r2 = (r2 + r5)|0;
+	r5 = r6 >> 2;
+	r2 = r2 >> 2;
+	r5 = heap32[(r5+5)];
+	r2 = heap32[(r2+16)];
+if(!(r5 ==0)) //_LBB251_3
+{
+	r6 = r5 >> 2;
+	r6 = heap32[(r6)];
+	r6 = r6 >> 2;
+	r6 = heap32[(r6+12)];
+	heap32[(g0)] = r5;
+	__FUNCTION_TABLE__[(r6)>>2](i7);
+	r5 = r_g0 & 2;
+if(!(r5 ==0)) //_LBB251_3
+{
+	r5 = heap32[(r1+1)];
+	r6 = sp + -112;
+	r5 = r5 >> 2;
+	r7 = r6 >> 2;
+	heap32[(fp+-28)] = heap32[(r5+1)];
+	heap32[(r7+1)] = heap32[(r5+2)];
+	heap32[(r7+2)] = heap32[(r5+3)];
+	heap32[(r7+3)] = heap32[(r5+4)];
+	heap32[(r7+4)] = heap32[(r5+5)];
+	heap32[(r7+5)] = heap32[(r5+6)];
+	heap32[(r7+6)] = heap32[(r5+7)];
+	heap32[(r7+7)] = heap32[(r5+8)];
+	heap32[(r7+8)] = heap32[(r5+9)];
+	heap32[(r7+9)] = heap32[(r5+10)];
+	heap32[(r7+10)] = heap32[(r5+11)];
+	heap32[(r7+11)] = heap32[(r5+12)];
+	heap32[(r7+12)] = heap32[(r5+13)];
+	heap32[(r7+13)] = heap32[(r5+14)];
+	heap32[(r7+14)] = heap32[(r5+15)];
+	heap32[(r7+15)] = heap32[(r5+16)];
+	r5 = (r3 + 16)|0;
+	r7 = sp + -32;
+	r8 = sp + -48;
+	heap32[(g0)] = r3;
+	heap32[(g0+1)] = r5;
+	heap32[(g0+2)] = 0;
+	heap32[(g0+3)] = r6;
+	heap32[(g0+4)] = r7;
+	heap32[(g0+5)] = r8;
+	_Z15btTransformAabbRK9btVector3S1_fRK11btTransformRS_S5_(i7);
+	r1 = heap32[(r1+4)];
+	r1 = r1 >> 2;
+	r3 = heap32[(r1+5)];
+	r3 = r3 >> 2;
+	r3 = heap32[(r3)];
+	r3 = r3 >> 2;
+	r3 = heap32[(r3+13)];
+	r5 = sp + -16;
+	r6 = r5 >> 2;
+	heap32[(fp+-4)] = 1065353216;
+	heap32[(r6+1)] = 0;
+	heap32[(r6+2)] = 0;
+	heap32[(r6+3)] = 0;
+	r1 = heap32[(r1+5)];
+	heap32[(g0)] = r1;
+	heap32[(g0+1)] = r7;
+	heap32[(g0+2)] = r8;
+	heap32[(g0+3)] = r5;
+	__FUNCTION_TABLE__[(r3)>>2](i7);
+}
+}
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r2;
+	heap32[(g0+2)] = r4;
+	_ZN22btCompoundLeafCallback17ProcessChildShapeEP16btCollisionShapei(i7);
+	return;
+}
+
+function _ZN28btCompoundCollisionAlgorithm22getAllContactManifoldsER20btAlignedObjectArrayIP20btPersistentManifoldE(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+var __label__ = 0;
+	i7 = sp + -8;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r0 = r0 >> 2;
+	r1 = heap32[(r0+3)];
+if(!(r1 <1)) //_LBB252_5
+{
+	r1 = heap32[(fp+1)];
+	r2 = 0;
+_3: while(true){
+	r3 = heap32[(r0+5)];
+	r4 = r2 << 2;
+	r3 = (r3 + r4)|0;
+	r3 = r3 >> 2;
+	r3 = heap32[(r3)];
+if(!(r3 ==0)) //_LBB252_4
+{
+	r4 = r3 >> 2;
+	r4 = heap32[(r4)];
+	r4 = r4 >> 2;
+	r4 = heap32[(r4+4)];
+	heap32[(g0)] = r3;
+	heap32[(g0+1)] = r1;
+	__FUNCTION_TABLE__[(r4)>>2](i7);
+}
+	r2 = (r2 + 1)|0;
+	r3 = heap32[(r0+3)];
+	if(r3 >r2) //_LBB252_2
+{
+continue _3;
+}
+else{
+break _3;
+}
+}
+}
+	return;
+}
+
+function _ZN28btCompoundCollisionAlgorithm21calculateTimeOfImpactEP17btCollisionObjectS1_RK16btDispatcherInfoP16btManifoldResult(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+	var r6;
+	var r7;
+	var r8;
+	var r9;
+	var r10;
+	var r11;
+	var f0;
+	var f1;
+	var f2;
+	var f3;
+	var f4;
+	var f5;
+	var f6;
+	var f7;
+	var f8;
+	var f9;
+	var f10;
+	var f11;
+	var f12;
+	var f13;
+	var f14;
+	var f15;
+	var f16;
+	var f17;
+	var f18;
+	var f19;
+	var f20;
+	var f21;
+	var f22;
+	var f23;
+	var f24;
+	var f25;
+	var f26;
+	var f27;
+	var f28;
+	var f29;
+	var f30;
+var __label__ = 0;
+	i7 = sp + -40;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = heapU8[r0+28];
+	r2 = heap32[(fp+1)];
+	r3 = heap32[(fp+2)];
+	r4 = r1 == 0 ? r2 : r3;
+	r5 = r4 >> 2;
+	r6 = heap32[(r5+48)];
+	r7 = r6 >> 2;
+	r8 = heap32[(r7+1)];
+	if(r8 ==31) //_LBB253_2
+{
+	r0 = r0 >> 2;
+	r8 = heap32[(r0+3)];
+_3: do {
+	if(r8 >0) //_LBB253_4
+{
+	r9 = heap32[(fp+3)];
+	r10 = heap32[(fp+4)];
+	r1 = r1 == 0 ? r3 : r2;
+	r2 = 0;
+	f0 =                         1;
+_5: while(true){
+	r3 = (r2 * 20)|0;
+	r11 = heap32[(r7+6)];
+	r3 = r3 << 2;
+	r3 = (r11 + r3)|0;
+	r3 = r3 >> 2;
+	f1 = heapFloat[(r3)];
+	f2 = heapFloat[(r5+1)];
+	f3 = heapFloat[(r3+4)];
+	f4 = heapFloat[(r5+2)];
+	f5 = heapFloat[(r3+1)];
+	f6 = heapFloat[(r3+5)];
+	f7 = f1*f2;
+	f8 = f3*f4;
+	f9 = heapFloat[(r3+8)];
+	f10 = heapFloat[(r5+3)];
+	f11 = heapFloat[(r5+10)];
+	f12 = heapFloat[(r3+13)];
+	f13 = heapFloat[(r5+6)];
+	f14 = heapFloat[(r3+6)];
+	f15 = heapFloat[(r5+9)];
+	f16 = heapFloat[(r3+12)];
+	f17 = heapFloat[(r5+5)];
+	f18 = heapFloat[(r3+2)];
+	f19 = heapFloat[(r3+14)];
+	f20 = heapFloat[(r5+11)];
+	f21 = heapFloat[(r3+10)];
+	f22 = heapFloat[(r5+7)];
+	f23 = heapFloat[(r3+9)];
+	r3 = heap32[(r3+16)];
+	f24 = f5*f2;
+	f25 = f6*f4;
+	f7 = f7+f8;
+	f8 = f9*f10;
+	f26 = heapFloat[(r5+16)];
+	heapFloat[(fp+-1)] = f26;
+	f27 = heapFloat[(r5+15)];
+	f28 = heapFloat[(r5+14)];
+	f29 = heapFloat[(r5+13)];
+	f26 = heapFloat[(r5+12)];
+	heapFloat[(fp+-2)] = f26;
+	f26 = heapFloat[(r5+8)];
+	heapFloat[(fp+-3)] = f26;
+	f26 = heapFloat[(r5+4)];
+	heapFloat[(fp+-4)] = f26;
+	f30 = f18*f2;
+	f26 = f14*f4;
+	f24 = f24+f25;
+	f25 = f23*f10;
+	f7 = f7+f8;
+	f8 = f30+f26;
+	f26 = f21*f10;
+	f24 = f24+f25;
+	heapFloat[(r5+1)] = f7;
+	f7 = f1*f17;
+	f25 = f3*f13;
+	f8 = f8+f26;
+	heapFloat[(r5+2)] = f24;
+	heapFloat[(r5+3)] = f8;
+	f8 = f5*f17;
+	f24 = f6*f13;
+	f7 = f7+f25;
+	f25 = f9*f22;
+	f26 = f18*f17;
+	f30 = f14*f13;
+	f8 = f8+f24;
+	f24 = f23*f22;
+	f7 = f7+f25;
+	heap32[(r5+4)] = 0;
+	f25 = f26+f30;
+	f26 = f21*f22;
+	f8 = f8+f24;
+	heapFloat[(r5+5)] = f7;
+	f1 = f1*f15;
+	f3 = f3*f11;
+	f7 = f25+f26;
+	heapFloat[(r5+6)] = f8;
+	heapFloat[(r5+7)] = f7;
+	f5 = f5*f15;
+	f6 = f6*f11;
+	f1 = f1+f3;
+	f3 = f9*f20;
+	f7 = f18*f15;
+	f8 = f14*f11;
+	f5 = f5+f6;
+	f6 = f23*f20;
+	f1 = f1+f3;
+	heap32[(r5+8)] = 0;
+	f3 = f2*f16;
+	f9 = f4*f12;
+	f7 = f7+f8;
+	f8 = f21*f20;
+	f5 = f5+f6;
+	heapFloat[(r5+9)] = f1;
+	f1 = f17*f16;
+	f6 = f13*f12;
+	f3 = f3+f9;
+	f9 = f10*f19;
+	f7 = f7+f8;
+	heapFloat[(r5+10)] = f5;
+	f3 = f3+f9;
+	heapFloat[(r5+11)] = f7;
+	f5 = f15*f16;
+	f7 = f11*f12;
+	f1 = f1+f6;
+	f6 = f22*f19;
+	f1 = f1+f6;
+	f5 = f5+f7;
+	f6 = f20*f19;
+	f3 = f3+f29;
+	heap32[(r5+12)] = 0;
+	f5 = f5+f6;
+	f1 = f1+f28;
+	heapFloat[(r5+13)] = f3;
+	f3 = f5+f27;
+	heapFloat[(r5+14)] = f1;
+	heapFloat[(r5+15)] = f3;
+	heap32[(r5+16)] = 0;
+	heap32[(r5+48)] = r3;
+	r3 = heap32[(r0+5)];
+	r11 = r2 << 2;
+	r3 = (r3 + r11)|0;
+	r3 = r3 >> 2;
+	r3 = heap32[(r3)];
+	r11 = r3 >> 2;
+	r11 = heap32[(r11)];
+	r11 = r11 >> 2;
+	r11 = heap32[(r11+3)];
+	heap32[(g0)] = r3;
+	heap32[(g0+1)] = r4;
+	heap32[(g0+2)] = r1;
+	heap32[(g0+3)] = r9;
+	heap32[(g0+4)] = r10;
+	__FUNCTION_TABLE__[(r11)>>2](i7);
+	heap32[(r5+48)] = r6;
+	heapFloat[(r5+1)] = f2;
+	heapFloat[(r5+2)] = f4;
+	heapFloat[(r5+3)] = f10;
+	f26 = heapFloat[(fp+-4)];
+	heapFloat[(r5+4)] = f26;
+	heapFloat[(r5+5)] = f17;
+	heapFloat[(r5+6)] = f13;
+	heapFloat[(r5+7)] = f22;
+	f26 = heapFloat[(fp+-3)];
+	heapFloat[(r5+8)] = f26;
+	heapFloat[(r5+9)] = f15;
+	heapFloat[(r5+10)] = f11;
+	heapFloat[(r5+11)] = f20;
+	f26 = heapFloat[(fp+-2)];
+	heapFloat[(r5+12)] = f26;
+	heapFloat[(r5+13)] = f29;
+	heapFloat[(r5+14)] = f28;
+	r2 = (r2 + 1)|0;
+	f0 = f_g0 < f0 ? f_g0 : f0;
+	heapFloat[(r5+15)] = f27;
+	f26 = heapFloat[(fp+-1)];
+	heapFloat[(r5+16)] = f26;
+if(!(r8 !=r2)) //_LBB253_5
+{
+break _3;
+}
+}
+}
+else{
+	f0 =                         1;
+}
+} while(0);
+	f_g0 = f0;
+	return;
+}
+else{
+	r0 = _2E_str99;
+	r1 = _2E_str1100;
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r1;
+	heap32[(g0+2)] = 308;
+	_assert(i7);
+}
+}
+
+function _Z15btTransformAabbRK9btVector3S1_fRK11btTransformRS_S5_(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var f0;
+	var f1;
+	var f2;
+	var f3;
+	var f4;
+	var f5;
+	var f6;
+	var f7;
+	var f8;
+	var f9;
+	var f10;
+	var f11;
+	var f12;
+	var f13;
+	var f14;
+	var f15;
+	var f16;
+	var f17;
+	var f18;
+	var f19;
+	var f20;
+	var f21;
+	var f22;
+	var f23;
+var __label__ = 0;
+	i7 = sp + -16;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = heap32[(fp+1)];
+	r0 = r0 >> 2;
+	r1 = r1 >> 2;
+	f0 = heapFloat[(r0)];
+	f1 = heapFloat[(r1)];
+	if(f0 <=f1) //_LBB254_2
+{
+	f2 = heapFloat[(r0+1)];
+	f3 = heapFloat[(r1+1)];
+	if(f2 <=f3) //_LBB254_4
+{
+	f4 = heapFloat[(r0+2)];
+	f5 = heapFloat[(r1+2)];
+	if(f4 <=f5) //_LBB254_6
+{
+	f6 = heapFloat[(fp+2)];
+	r0 = heap32[(fp+3)];
+	r1 = heap32[(fp+4)];
+	r2 = heap32[(fp+5)];
+	f7 = f1-f0;
+	f8 =                       0.5;
+	f9 = f3-f2;
+	f10 = f5-f4;
+	r0 = r0 >> 2;
+	f4 = f5+f4;
+	f2 = f3+f2;
+	f0 = f1+f0;
+	f1 = f7*f8;
+	f3 = f9*f8;
+	f5 = f10*f8;
+	f7 = heapFloat[(r0+10)];
+	f1 = f1+f6;
+	f3 = f3+f6;
+	f5 = f5+f6;
+	f4 = f4*f8;
+	f2 = f2*f8;
+	f0 = f0*f8;
+	f6 =                         0;
+	if(f7 <f6) //_LBB254_8
+{
+	f8 = -f7;
+}
+else{
+	f8 = f7;
+}
+	f9 = heapFloat[(r0+9)];
+	if(f9 <f6) //_LBB254_11
+{
+	f10 = -f9;
+}
+else{
+	f10 = f9;
+}
+	f11 = heapFloat[(r0+8)];
+	if(f11 <f6) //_LBB254_14
+{
+	f12 = -f11;
+}
+else{
+	f12 = f11;
+}
+	f13 = heapFloat[(r0+6)];
+	if(f13 <f6) //_LBB254_17
+{
+	f14 = -f13;
+}
+else{
+	f14 = f13;
+}
+	f15 = heapFloat[(r0+5)];
+	if(f15 <f6) //_LBB254_20
+{
+	f16 = -f15;
+}
+else{
+	f16 = f15;
+}
+	f17 = heapFloat[(r0+4)];
+	if(f17 <f6) //_LBB254_23
+{
+	f18 = -f17;
+}
+else{
+	f18 = f17;
+}
+	f19 = heapFloat[(r0+2)];
+	if(f19 <f6) //_LBB254_26
+{
+	f20 = -f19;
+}
+else{
+	f20 = f19;
+}
+	f21 = heapFloat[(r0+1)];
+	if(f21 <f6) //_LBB254_29
+{
+	f22 = -f21;
+}
+else{
+	f22 = f21;
+}
+	f23 = heapFloat[(r0)];
+	if(f23 <f6) //_LBB254_32
+{
+	f6 = -f23;
+}
+else{
+	f6 = f23;
+}
+	f23 = f23*f0;
+	f21 = f21*f2;
+	f17 = f17*f0;
+	f15 = f15*f2;
+	f21 = f23+f21;
+	f19 = f19*f4;
+	f6 = f6*f1;
+	f22 = f22*f3;
+	f0 = f11*f0;
+	f2 = f9*f2;
+	f9 = f17+f15;
+	f11 = f13*f4;
+	f13 = f18*f1;
+	f15 = f16*f3;
+	f16 = f21+f19;
+	f17 = heapFloat[(r0+12)];
+	f6 = f6+f22;
+	f18 = f20*f5;
+	f0 = f0+f2;
+	f2 = f7*f4;
+	f1 = f12*f1;
+	f3 = f10*f3;
+	f4 = f9+f11;
+	f7 = heapFloat[(r0+13)];
+	f9 = heapFloat[(r0+14)];
+	f10 = f13+f15;
+	f11 = f14*f5;
+	f12 = f16+f17;
+	f6 = f6+f18;
+	f0 = f0+f2;
+	r0 = r1 >> 2;
+	f1 = f1+f3;
+	f2 = f8*f5;
+	f3 = f4+f7;
+	f4 = f10+f11;
+	f5 = f12-f6;
+	f0 = f0+f9;
+	f1 = f1+f2;
+	f2 = f3-f4;
+	heapFloat[(r0)] = f5;
+	f5 = f0-f1;
+	heapFloat[(r0+1)] = f2;
+	heapFloat[(r0+2)] = f5;
+	r1 = r2 >> 2;
+	f2 = f12+f6;
+	heap32[(r0+3)] = 0;
+	f3 = f3+f4;
+	heapFloat[(r1)] = f2;
+	f0 = f0+f1;
+	heapFloat[(r1+1)] = f3;
+	heapFloat[(r1+2)] = f0;
+	heap32[(r1+3)] = 0;
+	return;
+}
+else{
+	r0 = _2E_str5104;
+	r1 = _2E_str3102;
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r1;
+	heap32[(g0+2)] = 199;
+	_assert(i7);
+}
+}
+else{
+	r0 = _2E_str4103;
+	r1 = _2E_str3102;
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r1;
+	heap32[(g0+2)] = 198;
+	_assert(i7);
+}
+}
+else{
+	r0 = _2E_str2101;
+	r1 = _2E_str3102;
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r1;
+	heap32[(g0+2)] = 197;
+	_assert(i7);
+}
+}
+
+function _ZN22btCompoundLeafCallback17ProcessChildShapeEP16btCollisionShapei(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+	var r6;
+	var r7;
+	var r8;
+	var r9;
+	var r10;
+	var r11;
+	var r12;
+	var r13;
+	var f0;
+	var f1;
+	var f2;
+	var f3;
+	var f4;
+	var f5;
+	var f6;
+	var f7;
+	var f8;
+	var f9;
+	var f10;
+	var f11;
+	var f12;
+	var f13;
+	var f14;
+	var f15;
+	var f16;
+	var f17;
+	var f18;
+	var f19;
+	var f20;
+	var f21;
+	var f22;
+	var f23;
+	var f24;
+	var f25;
+	var f26;
+	var f27;
+	var f28;
+	var f29;
+	var f30;
+var __label__ = 0;
+	i7 = sp + -264;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp+2)];
+	if(r0 >-1) //_LBB255_2
+{
+	r1 = heap32[(fp)];
+	r1 = r1 >> 2;
+	r2 = heap32[(r1+1)];
+	r2 = r2 >> 2;
+	r3 = heap32[(r2+48)];
+	r3 = r3 >> 2;
+	r4 = heap32[(r3+4)];
+	if(r4 >r0) //_LBB255_4
+{
+	r4 = heap32[(fp+1)];
+	r3 = heap32[(r3+6)];
+	r5 = (r0 * 80)|0;
+	r3 = (r3 + r5)|0;
+	r3 = r3 >> 2;
+	f0 = heapFloat[(r2+1)];
+	f1 = heapFloat[(r3)];
+	f2 = heapFloat[(r2+2)];
+	f3 = heapFloat[(r3+4)];
+	f4 = heapFloat[(r3+1)];
+	f5 = heapFloat[(r3+5)];
+	f6 = heapFloat[(r2+3)];
+	f7 = heapFloat[(r3+8)];
+	f8 = f1*f0;
+	f9 = f3*f2;
+	f10 = heapFloat[(r2+5)];
+	f11 = heapFloat[(r2+6)];
+	f12 = heapFloat[(r2+9)];
+	f13 = heapFloat[(r3+12)];
+	f14 = heapFloat[(r3+2)];
+	f15 = heapFloat[(r2+10)];
+	f16 = heapFloat[(r3+13)];
+	f17 = heapFloat[(r3+6)];
+	f18 = heapFloat[(r2+7)];
+	f19 = heapFloat[(r3+14)];
+	f20 = heapFloat[(r2+11)];
+	f21 = heapFloat[(r3+10)];
+	f22 = heapFloat[(r3+9)];
+	f23 = heapFloat[(r2+4)];
+	f24 = heapFloat[(r2+8)];
+	heapFloat[(fp+-59)] = f24;
+	f24 = heapFloat[(r2+12)];
+	heapFloat[(fp+-57)] = f24;
+	f24 = heapFloat[(r2+13)];
+	f25 = heapFloat[(r2+14)];
+	f26 = heapFloat[(r2+15)];
+	f27 = heapFloat[(r2+16)];
+	heapFloat[(fp+-58)] = f27;
+	f27 = heapFloat[(r2+17)];
+	heapFloat[(fp+-42)] = f27;
+	f27 = heapFloat[(r2+18)];
+	heapFloat[(fp+-41)] = f27;
+	f27 = heapFloat[(r2+19)];
+	heapFloat[(fp+-44)] = f27;
+	f27 = heapFloat[(r2+20)];
+	heapFloat[(fp+-43)] = f27;
+	f27 = heapFloat[(r2+21)];
+	heapFloat[(fp+-46)] = f27;
+	f27 = heapFloat[(r2+22)];
+	heapFloat[(fp+-45)] = f27;
+	f27 = heapFloat[(r2+23)];
+	heapFloat[(fp+-48)] = f27;
+	f27 = heapFloat[(r2+24)];
+	heapFloat[(fp+-47)] = f27;
+	f27 = heapFloat[(r2+25)];
+	heapFloat[(fp+-50)] = f27;
+	f27 = heapFloat[(r2+26)];
+	heapFloat[(fp+-49)] = f27;
+	f27 = heapFloat[(r2+27)];
+	heapFloat[(fp+-52)] = f27;
+	f27 = heapFloat[(r2+28)];
+	heapFloat[(fp+-51)] = f27;
+	f27 = heapFloat[(r2+29)];
+	heapFloat[(fp+-54)] = f27;
+	f27 = heapFloat[(r2+30)];
+	heapFloat[(fp+-53)] = f27;
+	f27 = heapFloat[(r2+31)];
+	heapFloat[(fp+-56)] = f27;
+	f27 = heapFloat[(r2+32)];
+	heapFloat[(fp+-55)] = f27;
+	f27 = f4*f0;
+	f28 = f5*f2;
+	f8 = f8+f9;
+	f9 = f7*f6;
+	r2 = sp + -96;
+	f29 = f14*f0;
+	f30 = f17*f2;
+	f27 = f27+f28;
+	f28 = f22*f6;
+	f8 = f8+f9;
+	r3 = r2 >> 2;
+	f9 = f29+f30;
+	f29 = f21*f6;
+	f27 = f27+f28;
+	heapFloat[(fp+-24)] = f8;
+	f8 = f1*f10;
+	f28 = f3*f11;
+	f9 = f9+f29;
+	heapFloat[(r3+1)] = f27;
+	heapFloat[(r3+2)] = f9;
+	f9 = f4*f10;
+	f27 = f5*f11;
+	f8 = f8+f28;
+	f28 = f7*f18;
+	f29 = f14*f10;
+	f30 = f17*f11;
+	f9 = f9+f27;
+	f27 = f22*f18;
+	f8 = f8+f28;
+	heap32[(r3+3)] = 0;
+	f28 = f29+f30;
+	f29 = f21*f18;
+	f9 = f9+f27;
+	heapFloat[(r3+4)] = f8;
+	f1 = f1*f12;
+	f3 = f3*f15;
+	f8 = f28+f29;
+	heapFloat[(r3+5)] = f9;
+	heapFloat[(r3+6)] = f8;
+	f4 = f4*f12;
+	f5 = f5*f15;
+	f1 = f1+f3;
+	f3 = f7*f20;
+	f7 = f14*f12;
+	f8 = f17*f15;
+	f4 = f4+f5;
+	f5 = f22*f20;
+	f1 = f1+f3;
+	heap32[(r3+7)] = 0;
+	f3 = f0*f13;
+	f9 = f2*f16;
+	f7 = f7+f8;
+	f8 = f21*f20;
+	f4 = f4+f5;
+	heapFloat[(r3+8)] = f1;
+	f1 = f10*f13;
+	f5 = f11*f16;
+	f3 = f3+f9;
+	f9 = f6*f19;
+	f7 = f7+f8;
+	heapFloat[(r3+9)] = f4;
+	f3 = f3+f9;
+	heapFloat[(r3+10)] = f7;
+	f4 = f12*f13;
+	f7 = f15*f16;
+	f1 = f1+f5;
+	f5 = f18*f19;
+	f1 = f1+f5;
+	f4 = f4+f7;
+	f5 = f20*f19;
+	f3 = f3+f24;
+	heap32[(r3+11)] = 0;
+	f4 = f4+f5;
+	f1 = f1+f25;
+	heapFloat[(r3+12)] = f3;
+	f3 = f4+f26;
+	heapFloat[(r3+13)] = f1;
+	heapFloat[(r3+14)] = f3;
+	r5 = r4 >> 2;
+	heap32[(r3+15)] = 0;
+	r5 = heap32[(r5)];
+	r5 = r5 >> 2;
+	r5 = heap32[(r5+2)];
+	r6 = sp + -112;
+	r7 = sp + -128;
+	heap32[(g0)] = r4;
+	heap32[(g0+1)] = r2;
+	heap32[(g0+2)] = r6;
+	heap32[(g0+3)] = r7;
+	__FUNCTION_TABLE__[(r5)>>2](i7);
+	r2 = heap32[(r1+2)];
+	r5 = r2 >> 2;
+	r5 = heap32[(r5+48)];
+	r8 = r5 >> 2;
+	r8 = heap32[(r8)];
+	r8 = r8 >> 2;
+	r8 = heap32[(r8+2)];
+	r2 = (r2 + 4)|0;
+	r9 = sp + -144;
+	r10 = sp + -160;
+	heap32[(g0)] = r5;
+	heap32[(g0+1)] = r2;
+	heap32[(g0+2)] = r9;
+	heap32[(g0+3)] = r10;
+	__FUNCTION_TABLE__[(r8)>>2](i7);
+	f1 = heapFloat[(fp+-28)];
+	f3 = heapFloat[(fp+-40)];
+	if(f1 >f3) //_LBB255_7
+{
+__label__ = 7;
+}
+else{
+	f1 = heapFloat[(fp+-32)];
+	f3 = heapFloat[(fp+-36)];
+	if(f1 <f3) //_LBB255_7
+{
+__label__ = 7;
+}
+else{
+	r2 = 1;
+__label__ = 8;
+}
+}
+if (__label__ == 7){
+	r2 = 0;
+}
+	r5 = r6 >> 2;
+	r8 = r10 >> 2;
+	f1 = heapFloat[(r5+2)];
+	f3 = heapFloat[(r8+2)];
+	if(f1 >f3) //_LBB255_11
+{
+__label__ = 10;
+}
+else{
+	r11 = r7 >> 2;
+	r12 = r9 >> 2;
+	f1 = heapFloat[(r11+2)];
+	f3 = heapFloat[(r12+2)];
+	if(f1 <f3) //_LBB255_11
+{
+__label__ = 10;
+}
+else{
+__label__ = 11;
+}
+}
+if (__label__ == 10){
+	r2 = 0;
+}
+	f1 = heapFloat[(r5+1)];
+	f3 = heapFloat[(r8+1)];
+if(!(f1 >f3)) //_LBB255_24
+{
+	r5 = r7 >> 2;
+	r8 = r9 >> 2;
+	f1 = heapFloat[(r5+1)];
+	f3 = heapFloat[(r8+1)];
+if(!(f1 <f3)) //_LBB255_24
+{
+	r2 = r2 & 255;
+if(!(r2 ==0)) //_LBB255_24
+{
+	r2 = heap32[(r1+1)];
+	r2 = r2 >> 2;
+	heap32[(r2+1)] = heap32[(fp+-24)];
+	heap32[(r2+2)] = heap32[(r3+1)];
+	heap32[(r2+3)] = heap32[(r3+2)];
+	heap32[(r2+4)] = heap32[(r3+3)];
+	heap32[(r2+5)] = heap32[(r3+4)];
+	heap32[(r2+6)] = heap32[(r3+5)];
+	heap32[(r2+7)] = heap32[(r3+6)];
+	heap32[(r2+8)] = heap32[(r3+7)];
+	heap32[(r2+9)] = heap32[(r3+8)];
+	heap32[(r2+10)] = heap32[(r3+9)];
+	heap32[(r2+11)] = heap32[(r3+10)];
+	heap32[(r2+12)] = heap32[(r3+11)];
+	heap32[(r2+13)] = heap32[(r3+12)];
+	heap32[(r2+14)] = heap32[(r3+13)];
+	heap32[(r2+15)] = heap32[(r3+14)];
+	heap32[(r2+16)] = heap32[(r3+15)];
+	r2 = heap32[(r1+1)];
+	r2 = r2 >> 2;
+	heap32[(r2+17)] = heap32[(fp+-24)];
+	heap32[(r2+18)] = heap32[(r3+1)];
+	heap32[(r2+19)] = heap32[(r3+2)];
+	heap32[(r2+20)] = heap32[(r3+3)];
+	heap32[(r2+21)] = heap32[(r3+4)];
+	heap32[(r2+22)] = heap32[(r3+5)];
+	heap32[(r2+23)] = heap32[(r3+6)];
+	heap32[(r2+24)] = heap32[(r3+7)];
+	heap32[(r2+25)] = heap32[(r3+8)];
+	heap32[(r2+26)] = heap32[(r3+9)];
+	heap32[(r2+27)] = heap32[(r3+10)];
+	heap32[(r2+28)] = heap32[(r3+11)];
+	heap32[(r2+29)] = heap32[(r3+12)];
+	heap32[(r2+30)] = heap32[(r3+13)];
+	heap32[(r2+31)] = heap32[(r3+14)];
+	heap32[(r2+32)] = heap32[(r3+15)];
+	r2 = heap32[(r1+1)];
+	r2 = r2 >> 2;
+	r3 = heap32[(r2+48)];
+	heap32[(r2+48)] = r4;
+	r2 = heap32[(r1+6)];
+	r4 = r0 << 2;
+	r2 = (r2 + r4)|0;
+	r2 = r2 >> 2;
+	r5 = heap32[(r2)];
+if(!(r5 !=0)) //_LBB255_17
+{
+	r5 = heap32[(r1+3)];
+	r8 = r5 >> 2;
+	r8 = heap32[(r8)];
+	r8 = r8 >> 2;
+	r8 = heap32[(r8+2)];
+	r11 = heap32[(r1+7)];
+	r12 = heap32[(r1+2)];
+	r13 = heap32[(r1+1)];
+	heap32[(g0)] = r5;
+	heap32[(g0+1)] = r13;
+	heap32[(g0+2)] = r12;
+	heap32[(g0+3)] = r11;
+	__FUNCTION_TABLE__[(r8)>>2](i7);
+	heap32[(r2)] = r_g0;
+}
+	r2 = heap32[(r1+5)];
+	r5 = r2 >> 2;
+	r8 = heap32[(r5)];
+	r5 = heap32[(r5+34)];
+	r11 = heap32[(r1+1)];
+	if(r5 !=r11) //_LBB255_19
+{
+	r5 = r8 >> 2;
+	r5 = heap32[(r5+3)];
+	heap32[(g0)] = r2;
+	heap32[(g0+1)] = -1;
+	heap32[(g0+2)] = r0;
+	__FUNCTION_TABLE__[(r5)>>2](i7);
+}
+else{
+	r8 = r8 >> 2;
+	r8 = heap32[(r8+2)];
+	heap32[(g0)] = r2;
+	heap32[(g0+1)] = -1;
+	heap32[(g0+2)] = r0;
+	__FUNCTION_TABLE__[(r8)>>2](i7);
+}
+	r0 = heap32[(r1+6)];
+	r0 = (r0 + r4)|0;
+	r0 = r0 >> 2;
+	r0 = heap32[(r0)];
+	r2 = r0 >> 2;
+	r2 = heap32[(r2)];
+	r2 = r2 >> 2;
+	r2 = heap32[(r2+2)];
+	r4 = heap32[(r1+5)];
+	r5 = heap32[(r1+4)];
+	r8 = heap32[(r1+2)];
+	r11 = heap32[(r1+1)];
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r11;
+	heap32[(g0+2)] = r8;
+	heap32[(g0+3)] = r5;
+	heap32[(g0+4)] = r4;
+	__FUNCTION_TABLE__[(r2)>>2](i7);
+	r0 = heap32[(r1+4)];
+	r0 = r0 >> 2;
+	r0 = heap32[(r0+5)];
+if(!(r0 ==0)) //_LBB255_23
+{
+	r2 = r0 >> 2;
+	r2 = heap32[(r2)];
+	r2 = r2 >> 2;
+	r2 = heap32[(r2+12)];
+	heap32[(g0)] = r0;
+	__FUNCTION_TABLE__[(r2)>>2](i7);
+	r0 = r_g0 & 2;
+if(!(r0 ==0)) //_LBB255_23
+{
+	r0 = heap32[(r1+4)];
+	r0 = r0 >> 2;
+	r2 = heap32[(r0+5)];
+	r2 = r2 >> 2;
+	r2 = heap32[(r2)];
+	r2 = r2 >> 2;
+	r2 = heap32[(r2+13)];
+	r4 = sp + -32;
+	r5 = r4 >> 2;
+	heap32[(fp+-8)] = 1065353216;
+	heap32[(r5+1)] = 1065353216;
+	heap32[(r5+2)] = 1065353216;
+	heap32[(r5+3)] = 0;
+	r0 = heap32[(r0+5)];
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r6;
+	heap32[(g0+2)] = r7;
+	heap32[(g0+3)] = r4;
+	__FUNCTION_TABLE__[(r2)>>2](i7);
+	r0 = heap32[(r1+4)];
+	r0 = r0 >> 2;
+	r2 = heap32[(r0+5)];
+	r2 = r2 >> 2;
+	r2 = heap32[(r2)];
+	r2 = r2 >> 2;
+	r2 = heap32[(r2+13)];
+	r4 = sp + -16;
+	r5 = r4 >> 2;
+	heap32[(fp+-4)] = 1065353216;
+	heap32[(r5+1)] = 1065353216;
+	heap32[(r5+2)] = 1065353216;
+	heap32[(r5+3)] = 0;
+	r0 = heap32[(r0+5)];
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r9;
+	heap32[(g0+2)] = r10;
+	heap32[(g0+3)] = r4;
+	__FUNCTION_TABLE__[(r2)>>2](i7);
+}
+}
+	r0 = heap32[(r1+1)];
+	r0 = r0 >> 2;
+	heap32[(r0+48)] = r3;
+	r0 = heap32[(r1+1)];
+	r0 = r0 >> 2;
+	heapFloat[(r0+1)] = f0;
+	heapFloat[(r0+2)] = f2;
+	heapFloat[(r0+3)] = f6;
+	heapFloat[(r0+4)] = f23;
+	heapFloat[(r0+5)] = f10;
+	heapFloat[(r0+6)] = f11;
+	heapFloat[(r0+7)] = f18;
+	f0 = heapFloat[(fp+-59)];
+	heapFloat[(r0+8)] = f0;
+	heapFloat[(r0+9)] = f12;
+	heapFloat[(r0+10)] = f15;
+	heapFloat[(r0+11)] = f20;
+	f0 = heapFloat[(fp+-57)];
+	heapFloat[(r0+12)] = f0;
+	heapFloat[(r0+13)] = f24;
+	heapFloat[(r0+14)] = f25;
+	heapFloat[(r0+15)] = f26;
+	f0 = heapFloat[(fp+-58)];
+	heapFloat[(r0+16)] = f0;
+	r0 = heap32[(r1+1)];
+	r0 = r0 >> 2;
+	f0 = heapFloat[(fp+-42)];
+	heapFloat[(r0+17)] = f0;
+	f0 = heapFloat[(fp+-41)];
+	heapFloat[(r0+18)] = f0;
+	f0 = heapFloat[(fp+-44)];
+	heapFloat[(r0+19)] = f0;
+	f0 = heapFloat[(fp+-43)];
+	heapFloat[(r0+20)] = f0;
+	f0 = heapFloat[(fp+-46)];
+	heapFloat[(r0+21)] = f0;
+	f0 = heapFloat[(fp+-45)];
+	heapFloat[(r0+22)] = f0;
+	f0 = heapFloat[(fp+-48)];
+	heapFloat[(r0+23)] = f0;
+	f0 = heapFloat[(fp+-47)];
+	heapFloat[(r0+24)] = f0;
+	f0 = heapFloat[(fp+-50)];
+	heapFloat[(r0+25)] = f0;
+	f0 = heapFloat[(fp+-49)];
+	heapFloat[(r0+26)] = f0;
+	f0 = heapFloat[(fp+-52)];
+	heapFloat[(r0+27)] = f0;
+	f0 = heapFloat[(fp+-51)];
+	heapFloat[(r0+28)] = f0;
+	f0 = heapFloat[(fp+-54)];
+	heapFloat[(r0+29)] = f0;
+	f0 = heapFloat[(fp+-53)];
+	heapFloat[(r0+30)] = f0;
+	f0 = heapFloat[(fp+-56)];
+	heapFloat[(r0+31)] = f0;
+	f0 = heapFloat[(fp+-55)];
+	heapFloat[(r0+32)] = f0;
+}
+}
+}
+	return;
+}
+else{
+	r0 = _2E_str7106;
+	r1 = _2E_str1100;
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r1;
+	heap32[(g0+2)] = 119;
+	_assert(i7);
+}
+}
+else{
+	r0 = _2E_str6105;
+	r1 = _2E_str1100;
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r1;
+	heap32[(g0+2)] = 117;
+	_assert(i7);
+}
+}
+
+function _ZN28btCompoundCollisionAlgorithm26preallocateChildAlgorithmsEP17btCollisionObjectS1_(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+	var r6;
+	var r7;
+	var r8;
+	var r9;
+	var r10;
+	var r11;
+	var r12;
+	var r13;
+	var r14;
+	var r15;
+var __label__ = 0;
+	i7 = sp + -16;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = heapU8[r0+28];
+	r2 = heap32[(fp+1)];
+	r3 = heap32[(fp+2)];
+	r4 = r1 == 0 ? r2 : r3;
+	r5 = r4 >> 2;
+	r6 = heap32[(r5+48)];
+	r6 = r6 >> 2;
+	r7 = heap32[(r6+1)];
+	if(r7 ==31) //_LBB256_2
+{
+	r7 = r0 >> 2;
+	r8 = heap32[(r7+3)];
+	r9 = heap32[(r6+4)];
+_3: do {
+if(!(r8 >r9)) //_LBB256_21
+{
+if(!(r8 >=r9)) //_LBB256_21
+{
+	r10 = heap32[(r7+4)];
+if(!(r10 >=r9)) //_LBB256_20
+{
+	if(r9 !=0) //_LBB256_7
+{
+	r10 = gNumAlignedAllocs;
+	r10 = r10 >> 2;
+	r11 = heap32[(r10)];
+	r12 = r9 << 2;
+	r11 = (r11 + 1)|0;
+	r12 = r12 | 3;
+	heap32[(r10)] = r11;
+	r10 = (r12 + 16)|0;
+	heap32[(g0)] = r10;
+	malloc(i7);
+	r10 = r_g0;
+	if(r10 !=0) //_LBB256_9
+{
+	r11 = 0;
+	r12 = (r10 + 4)|0;
+	r11 = (r11 - r12)|0;
+	r11 = r11 & 15;
+	r11 = (r10 + r11)|0;
+	r12 = (r11 + 4)|0;
+	r11 = r11 >> 2;
+	heap32[(r11)] = r10;
+	r10 = r12;
+}
+}
+else{
+	r10 = 0;
+}
+	r11 = (r0 + 20)|0;
+	if(r8 <1) //_LBB256_12
+{
+	r12 = r11 >> 2;
+	r13 = heap32[(r12)];
+}
+else{
+	r12 = 0;
+_16: while(true){
+	r13 = r11 >> 2;
+	r13 = heap32[(r13)];
+	r14 = r12 << 2;
+	r15 = (r13 + r14)|0;
+	r15 = r15 >> 2;
+	r14 = (r10 + r14)|0;
+	r15 = heap32[(r15)];
+	r12 = (r12 + 1)|0;
+	r14 = r14 >> 2;
+	heap32[(r14)] = r15;
+if(!(r8 !=r12)) //_LBB256_13
+{
+break _16;
+}
+}
+	r11 = (r0 + 20)|0;
+}
+if(!(r13 ==0)) //_LBB256_19
+{
+	r12 = heapU8[r0+24];
+if(!(r12 ==0)) //_LBB256_18
+{
+	r12 = gNumAlignedFree;
+	r12 = r12 >> 2;
+	r14 = heap32[(r12)];
+	r14 = (r14 + 1)|0;
+	r13 = r13 >> 2;
+	heap32[(r12)] = r14;
+	r12 = heap32[(r13+-1)];
+	heap32[(g0)] = r12;
+	free(i7);
+}
+	r12 = r11 >> 2;
+	heap32[(r12)] = 0;
+}
+	r12 = 1;
+	r11 = r11 >> 2;
+	heap8[r0+24] = r12;
+	heap32[(r11)] = r10;
+	heap32[(r7+4)] = r9;
+	if(r8 >=r9) //_LBB256_21
+{
+break _3;
+}
+}
+_26: while(true){
+	r0 = r8 << 2;
+	r10 = heap32[(r7+5)];
+	r0 = (r10 + r0)|0;
+	r8 = (r8 + 1)|0;
+	r0 = r0 >> 2;
+	heap32[(r0)] = 0;
+if(!(r9 !=r8)) //_LBB256_20
+{
+break _3;
+}
+}
+}
+}
+} while(0);
+	heap32[(r7+3)] = r9;
+_29: do {
+if(!(r9 <1)) //_LBB256_27
+{
+	r0 = r1 == 0 ? r3 : r2;
+	r1 = 0;
+_31: while(true){
+	r2 = heap32[(r6+16)];
+	if(r2 ==0) //_LBB256_25
+{
+	r2 = (r1 * 20)|0;
+	r2 = r2 << 2;
+	r3 = heap32[(r6+6)];
+	r2 = (r3 + r2)|0;
+	r2 = r2 >> 2;
+	r3 = heap32[(r5+48)];
+	r2 = heap32[(r2+16)];
+	heap32[(r5+48)] = r2;
+	r2 = heap32[(r7+1)];
+	r8 = r2 >> 2;
+	r8 = heap32[(r8)];
+	r8 = r8 >> 2;
+	r8 = heap32[(r8+2)];
+	r10 = heap32[(r7+8)];
+	r11 = heap32[(r7+5)];
+	r12 = r1 << 2;
+	heap32[(g0)] = r2;
+	heap32[(g0+1)] = r4;
+	heap32[(g0+2)] = r0;
+	heap32[(g0+3)] = r10;
+	r2 = (r11 + r12)|0;
+	r2 = r2 >> 2;
+	__FUNCTION_TABLE__[(r8)>>2](i7);
+	heap32[(r2)] = r_g0;
+	heap32[(r5+48)] = r3;
+}
+else{
+	r2 = r1 << 2;
+	r3 = heap32[(r7+5)];
+	r2 = (r3 + r2)|0;
+	r2 = r2 >> 2;
+	heap32[(r2)] = 0;
+}
+	r1 = (r1 + 1)|0;
+if(!(r9 !=r1)) //_LBB256_23
+{
+break _29;
+}
+}
+}
+} while(0);
+	return;
+}
+else{
+	r0 = _2E_str99;
+	r1 = _2E_str1100;
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r1;
+	heap32[(g0+2)] = 44;
+	_assert(i7);
+}
+}
+
+function _ZN28btCompoundCollisionAlgorithm16processCollisionEP17btCollisionObjectS1_RK16btDispatcherInfoP16btManifoldResult(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+	var r6;
+	var r7;
+	var r8;
+	var r9;
+	var r10;
+	var r11;
+	var r12;
+	var r13;
+	var r14;
+	var r15;
+	var r16;
+	var r17;
+	var f0;
+	var f1;
+	var f2;
+	var f3;
+	var f4;
+	var f5;
+	var f6;
+	var f7;
+	var f8;
+	var f9;
+	var f10;
+	var f11;
+	var f12;
+	var f13;
+	var f14;
+	var f15;
+	var f16;
+	var f17;
+	var f18;
+	var f19;
+	var f20;
+	var f21;
+	var f22;
+	var f23;
+	var f24;
+	var f25;
+	var f26;
+	var f27;
+	var f28;
+	var f29;
+var __label__ = 0;
+	i7 = sp + -328;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = heap32[(fp+1)];
+	r2 = heap32[(fp+2)];
+	r3 = heapU8[r0+28];
+	r4 = r3 == 0 ? r1 : r2;
+	r5 = r4 >> 2;
+	r6 = heap32[(r5+48)];
+	r6 = r6 >> 2;
+	r7 = heap32[(r6+1)];
+	if(r7 ==31) //_LBB257_2
+{
+	r7 = r0 >> 2;
+	r8 = heap32[(r6+17)];
+	r9 = heap32[(r7+10)];
+if(!(r8 ==r9)) //_LBB257_9
+{
+	r8 = heap32[(r7+3)];
+if(!(r8 <1)) //_LBB257_8
+{
+	r9 = 0;
+_7: while(true){
+	r10 = heap32[(r7+5)];
+	r11 = r9 << 2;
+	r10 = (r10 + r11)|0;
+	r10 = r10 >> 2;
+	r10 = heap32[(r10)];
+if(!(r10 ==0)) //_LBB257_7
+{
+	r12 = r10 >> 2;
+	r12 = heap32[(r12)];
+	r12 = r12 >> 2;
+	r12 = heap32[(r12)];
+	heap32[(g0)] = r10;
+	__FUNCTION_TABLE__[(r12)>>2](i7);
+	r10 = heap32[(r7+1)];
+	r12 = r10 >> 2;
+	r13 = heap32[(r7+5)];
+	r11 = (r13 + r11)|0;
+	r12 = heap32[(r12)];
+	r12 = r12 >> 2;
+	r11 = r11 >> 2;
+	r12 = heap32[(r12+13)];
+	r11 = heap32[(r11)];
+	heap32[(g0)] = r10;
+	heap32[(g0+1)] = r11;
+	__FUNCTION_TABLE__[(r12)>>2](i7);
+}
+	r9 = (r9 + 1)|0;
+if(!(r8 !=r9)) //_LBB257_5
+{
+break _7;
+}
+}
+}
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r1;
+	heap32[(g0+2)] = r2;
+	_ZN28btCompoundCollisionAlgorithm26preallocateChildAlgorithmsEP17btCollisionObjectS1_(i7);
+}
+	r0 = heap32[(fp+3)];
+	r8 = heap32[(fp+4)];
+	r1 = r3 == 0 ? r2 : r1;
+	r2 = _ZTV22btCompoundLeafCallback;
+	r3 = heap32[(r6+16)];
+	r9 = heap32[(r7+8)];
+	r10 = heap32[(r7+5)];
+	r11 = heap32[(r7+1)];
+	r12 = sp + -32;
+	r2 = (r2 + 8)|0;
+	r13 = r12 >> 2;
+	heap32[(fp+-8)] = r2;
+	heap32[(r13+1)] = r4;
+	heap32[(r13+2)] = r1;
+	heap32[(r13+3)] = r11;
+	heap32[(r13+4)] = r0;
+	heap32[(r13+5)] = r8;
+	heap32[(r13+6)] = r10;
+	r0 = sp + -56;
+	r2 = 1;
+	heap32[(r13+7)] = r9;
+	r4 = r0 >> 2;
+	heap8[sp+-40] = r2;
+	heap32[(r4+3)] = 0;
+	r9 = (r8 + 72)|0;
+	r10 = (r8 + 8)|0;
+	r11 = 0;
+	heap32[(r4+1)] = 0;
+	heap32[(r4+2)] = 0;
+_14: while(true){
+	r13 = heap32[(r7+3)];
+	if(r13 >r11) //_LBB257_10
+{
+	r13 = heap32[(r7+5)];
+	r14 = r11 << 2;
+	r13 = (r13 + r14)|0;
+	r13 = r13 >> 2;
+	r13 = heap32[(r13)];
+if(!(r13 ==0)) //_LBB257_27
+{
+	r14 = r13 >> 2;
+	r14 = heap32[(r14)];
+	r14 = r14 >> 2;
+	r14 = heap32[(r14+4)];
+	heap32[(g0)] = r13;
+	heap32[(g0+1)] = r0;
+	r13 = 0;
+	__FUNCTION_TABLE__[(r14)>>2](i7);
+_19: while(true){
+	r14 = heap32[(r4+3)];
+	r15 = heap32[(r4+1)];
+	if(r15 >r13) //_LBB257_12
+{
+	r15 = r13 << 2;
+	r14 = (r14 + r15)|0;
+	r14 = r14 >> 2;
+	r14 = heap32[(r14)];
+	r15 = r14 >> 2;
+	r16 = heap32[(r15+279)];
+if(!(r16 ==0)) //_LBB257_20
+{
+	r16 = r8 >> 2;
+	heap32[(r16+1)] = r14;
+	if(r14 !=0) //_LBB257_15
+{
+	r17 = heap32[(r15+279)];
+if(!(r17 ==0)) //_LBB257_19
+{
+	r15 = heap32[(r15+277)];
+	r17 = heap32[(r16+34)];
+	if(r15 ==r17) //_LBB257_18
+{
+	heap32[(g0)] = r14;
+	heap32[(g0+1)] = r10;
+	heap32[(g0+2)] = r9;
+	_ZN20btPersistentManifold20refreshContactPointsERK11btTransformS2_(i7);
+}
+else{
+	heap32[(g0)] = r14;
+	heap32[(g0+1)] = r9;
+	heap32[(g0+2)] = r10;
+	_ZN20btPersistentManifold20refreshContactPointsERK11btTransformS2_(i7);
+}
+}
+	heap32[(r16+1)] = 0;
+}
+else{
+__label__ = 14;
+break _14;
+}
+}
+	r13 = (r13 + 1)|0;
+}
+else{
+break _19;
+}
+}
+if(!(r14 ==0)) //_LBB257_26
+{
+	r13 = heapU8[sp+-40];
+if(!(r13 ==0)) //_LBB257_25
+{
+	r13 = gNumAlignedFree;
+	r13 = r13 >> 2;
+	r15 = heap32[(r13)];
+	r15 = (r15 + 1)|0;
+	r14 = r14 >> 2;
+	heap32[(r13)] = r15;
+	r13 = heap32[(r14+-1)];
+	heap32[(g0)] = r13;
+	free(i7);
+}
+	heap32[(r4+3)] = 0;
+}
+	r13 = 1;
+	heap8[sp+-40] = r13;
+	heap32[(r4+3)] = 0;
+	heap32[(r4+1)] = 0;
+	heap32[(r4+2)] = 0;
+}
+	r11 = (r11 + 1)|0;
+}
+else{
+__label__ = 29;
+break _14;
+}
+}
+switch(__label__ ){//multiple entries
+case 29:
+	heap8[sp+-40] = r2;
+	heap32[(r4+3)] = 0;
+	heap32[(r4+1)] = 0;
+	heap32[(r4+2)] = 0;
+_42: do {
+	if(r3 ==0) //_LBB257_31
+{
+	if(r13 <1) //_LBB257_50
+{
+__label__ = 49;
+}
+else{
+	r0 = 0;
+_45: while(true){
+	r3 = (r0 * 20)|0;
+	r4 = heap32[(r6+6)];
+	r3 = r3 << 2;
+	r3 = (r4 + r3)|0;
+	r3 = r3 >> 2;
+	r3 = heap32[(r3+16)];
+	heap32[(g0)] = r12;
+	heap32[(g0+1)] = r3;
+	heap32[(g0+2)] = r0;
+	r0 = (r0 + 1)|0;
+	_ZN22btCompoundLeafCallback17ProcessChildShapeEP16btCollisionShapei(i7);
+if(!(r13 !=r0)) //_LBB257_33
+{
+__label__ = 34;
+break _42;
+}
+}
+}
+}
+else{
+	r13 = r1 >> 2;
+	f0 = heapFloat[(r5+1)];
+	f1 = heapFloat[(r13+1)];
+	f2 = heapFloat[(r5+5)];
+	f3 = heapFloat[(r13+5)];
+	f4 = heapFloat[(r13+2)];
+	f5 = heapFloat[(r13+6)];
+	f6 = f1*f0;
+	f7 = f3*f2;
+	f8 = heapFloat[(r5+9)];
+	f9 = heapFloat[(r13+9)];
+	f10 = heapFloat[(r5+2)];
+	f11 = heapFloat[(r5+6)];
+	f12 = heapFloat[(r5+3)];
+	f13 = heapFloat[(r13+13)];
+	f14 = heapFloat[(r13+3)];
+	f15 = heapFloat[(r5+7)];
+	f16 = heapFloat[(r5+14)];
+	f17 = heapFloat[(r13+14)];
+	f18 = heapFloat[(r13+7)];
+	f19 = heapFloat[(r5+10)];
+	f20 = heapFloat[(r5+15)];
+	f21 = heapFloat[(r5+11)];
+	f22 = heapFloat[(r13+15)];
+	f23 = heapFloat[(r13+11)];
+	f24 = heapFloat[(r13+10)];
+	f25 = heapFloat[(r5+13)];
+	f26 = f4*f0;
+	f27 = f5*f2;
+	f6 = f6+f7;
+	f7 = f9*f8;
+	r0 = sp + -152;
+	f28 = f14*f0;
+	f29 = f18*f2;
+	f26 = f26+f27;
+	f27 = f24*f8;
+	f6 = f6+f7;
+	r4 = r0 >> 2;
+	f7 = f28+f29;
+	f28 = f23*f8;
+	f26 = f26+f27;
+	heapFloat[(fp+-38)] = f6;
+	f6 = f1*f10;
+	f27 = f3*f11;
+	f7 = f7+f28;
+	heapFloat[(r4+1)] = f26;
+	heapFloat[(r4+2)] = f7;
+	f7 = f4*f10;
+	f26 = f5*f11;
+	f6 = f6+f27;
+	f27 = f9*f19;
+	f28 = f14*f10;
+	f29 = f18*f11;
+	f7 = f7+f26;
+	f26 = f24*f19;
+	f6 = f6+f27;
+	heap32[(r4+3)] = 0;
+	f27 = f28+f29;
+	f28 = f23*f19;
+	f7 = f7+f26;
+	heapFloat[(r4+4)] = f6;
+	f1 = f1*f12;
+	f3 = f3*f15;
+	f6 = f27+f28;
+	heapFloat[(r4+5)] = f7;
+	heapFloat[(r4+6)] = f6;
+	f4 = f4*f12;
+	f5 = f5*f15;
+	f1 = f1+f3;
+	f3 = f9*f21;
+	f6 = -f25;
+	f7 = f14*f12;
+	f9 = f18*f15;
+	f4 = f4+f5;
+	f5 = f24*f21;
+	f1 = f1+f3;
+	heap32[(r4+7)] = 0;
+	f3 = f0*f13;
+	f14 = f2*f17;
+	f0 = f0*f6;
+	f2 = f2*f16;
+	f7 = f7+f9;
+	f9 = f23*f21;
+	f4 = f4+f5;
+	heapFloat[(r4+8)] = f1;
+	f1 = f10*f13;
+	f5 = f11*f17;
+	f10 = f10*f6;
+	f11 = f11*f16;
+	f3 = f3+f14;
+	f14 = f8*f22;
+	f0 = f0-f2;
+	f2 = f8*f20;
+	f7 = f7+f9;
+	heapFloat[(r4+9)] = f4;
+	heapFloat[(r4+10)] = f7;
+	f4 = f12*f13;
+	f7 = f15*f17;
+	f6 = f12*f6;
+	f8 = f15*f16;
+	f1 = f1+f5;
+	f5 = f19*f22;
+	f9 = f10-f11;
+	f10 = f19*f20;
+	f3 = f3+f14;
+	f0 = f0-f2;
+	f2 = f4+f7;
+	f4 = f21*f22;
+	f6 = f6-f8;
+	f7 = f21*f20;
+	f1 = f1+f5;
+	f5 = f9-f10;
+	f0 = f3+f0;
+	heap32[(r4+11)] = 0;
+	f2 = f2+f4;
+	f3 = f6-f7;
+	f1 = f1+f5;
+	heapFloat[(r4+12)] = f0;
+	f0 = f2+f3;
+	heapFloat[(r4+13)] = f1;
+	heapFloat[(r4+14)] = f0;
+	heap32[(r4+15)] = 0;
+	r13 = heap32[(r13+48)];
+	r4 = r13 >> 2;
+	r4 = heap32[(r4)];
+	r4 = r4 >> 2;
+	r4 = heap32[(r4+2)];
+	r8 = sp + -72;
+	r9 = sp + -88;
+	heap32[(g0)] = r13;
+	heap32[(g0+1)] = r0;
+	heap32[(g0+2)] = r8;
+	heap32[(g0+3)] = r9;
+	r13 = sp + -184;
+	__FUNCTION_TABLE__[(r4)>>2](i7);
+	r0 = r13 >> 2;
+	r4 = r8 >> 2;
+	heap32[(fp+-46)] = heap32[(fp+-18)];
+	heap32[(r0+1)] = heap32[(r4+1)];
+	heap32[(r0+2)] = heap32[(r4+2)];
+	heap32[(r0+3)] = heap32[(r4+3)];
+	r4 = r9 >> 2;
+	heap32[(r0+4)] = heap32[(fp+-22)];
+	heap32[(r0+5)] = heap32[(r4+1)];
+	heap32[(r0+6)] = heap32[(r4+2)];
+	r3 = r3 >> 2;
+	heap32[(r0+7)] = heap32[(r4+3)];
+	r0 = heap32[(r3)];
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r13;
+	heap32[(g0+2)] = r12;
+	_ZN6btDbvt9collideTVEPK10btDbvtNodeRK12btDbvtAabbMmRNS_8ICollideE(i7);
+__label__ = 34;
+}
+} while(0);
+_48: do {
+if (__label__ == 34){
+	r0 = heap32[(r7+3)];
+if(!(r0 <1)) //_LBB257_50
+{
+	r3 = 0;
+	r4 = (r1 + 4)|0;
+	r0 = (r3 - r0)|0;
+_51: while(true){
+	r8 = heap32[(r7+5)];
+	r9 = r3 << 2;
+	r8 = (r8 - r9)|0;
+	r8 = r8 >> 2;
+	r8 = heap32[(r8)];
+_53: do {
+if(!(r8 ==0)) //_LBB257_49
+{
+	r8 = (r3 * -20)|0;
+	r10 = heap32[(r6+6)];
+	r8 = r8 << 2;
+	r8 = (r10 + r8)|0;
+	r8 = r8 >> 2;
+	f0 = heapFloat[(r5+1)];
+	f1 = heapFloat[(r8)];
+	f2 = heapFloat[(r5+2)];
+	f3 = heapFloat[(r8+4)];
+	f4 = heapFloat[(r8+1)];
+	f5 = heapFloat[(r8+5)];
+	f6 = f1*f0;
+	f7 = f3*f2;
+	f8 = heapFloat[(r5+3)];
+	f9 = heapFloat[(r8+8)];
+	f10 = heapFloat[(r5+5)];
+	f11 = heapFloat[(r5+6)];
+	f12 = heapFloat[(r5+9)];
+	f13 = heapFloat[(r8+12)];
+	f14 = heapFloat[(r8+2)];
+	f15 = heapFloat[(r5+10)];
+	f16 = heapFloat[(r8+13)];
+	f17 = heapFloat[(r8+6)];
+	r10 = heap32[(r8+16)];
+	f18 = heapFloat[(r5+7)];
+	f19 = heapFloat[(r8+14)];
+	f20 = heapFloat[(r5+11)];
+	f21 = heapFloat[(r8+10)];
+	f22 = heapFloat[(r8+9)];
+	f23 = f4*f0;
+	f24 = f5*f2;
+	f6 = f6+f7;
+	f7 = f9*f8;
+	f25 = heapFloat[(r5+13)];
+	f26 = heapFloat[(r5+14)];
+	f27 = heapFloat[(r5+15)];
+	r8 = sp + -248;
+	f28 = f14*f0;
+	f29 = f17*f2;
+	f23 = f23+f24;
+	f24 = f22*f8;
+	f6 = f6+f7;
+	r11 = r8 >> 2;
+	f7 = f28+f29;
+	f28 = f21*f8;
+	f23 = f23+f24;
+	heapFloat[(fp+-62)] = f6;
+	f6 = f1*f10;
+	f24 = f3*f11;
+	f7 = f7+f28;
+	heapFloat[(r11+1)] = f23;
+	heapFloat[(r11+2)] = f7;
+	f7 = f4*f10;
+	f23 = f5*f11;
+	f6 = f6+f24;
+	f24 = f9*f18;
+	f28 = f14*f10;
+	f29 = f17*f11;
+	f7 = f7+f23;
+	f23 = f22*f18;
+	f6 = f6+f24;
+	heap32[(r11+3)] = 0;
+	f24 = f28+f29;
+	f28 = f21*f18;
+	f7 = f7+f23;
+	heapFloat[(r11+4)] = f6;
+	f1 = f1*f12;
+	f3 = f3*f15;
+	f6 = f24+f28;
+	heapFloat[(r11+5)] = f7;
+	heapFloat[(r11+6)] = f6;
+	f4 = f4*f12;
+	f5 = f5*f15;
+	f1 = f1+f3;
+	f3 = f9*f20;
+	f6 = f14*f12;
+	f7 = f17*f15;
+	f4 = f4+f5;
+	f5 = f22*f20;
+	f1 = f1+f3;
+	heap32[(r11+7)] = 0;
+	f0 = f0*f13;
+	f2 = f2*f16;
+	f3 = f6+f7;
+	f6 = f21*f20;
+	f4 = f4+f5;
+	heapFloat[(r11+8)] = f1;
+	f1 = f10*f13;
+	f5 = f11*f16;
+	f0 = f0+f2;
+	f2 = f8*f19;
+	f3 = f3+f6;
+	heapFloat[(r11+9)] = f4;
+	f0 = f0+f2;
+	heapFloat[(r11+10)] = f3;
+	f2 = f12*f13;
+	f3 = f15*f16;
+	f1 = f1+f5;
+	f4 = f18*f19;
+	f1 = f1+f4;
+	f2 = f2+f3;
+	f3 = f20*f19;
+	f0 = f0+f25;
+	heap32[(r11+11)] = 0;
+	f2 = f2+f3;
+	f1 = f1+f26;
+	heapFloat[(r11+12)] = f0;
+	f0 = f2+f27;
+	heapFloat[(r11+13)] = f1;
+	heapFloat[(r11+14)] = f0;
+	r12 = r10 >> 2;
+	heap32[(r11+15)] = 0;
+	r11 = heap32[(r12)];
+	r11 = r11 >> 2;
+	r11 = heap32[(r11+2)];
+	r12 = sp + -264;
+	r13 = sp + -280;
+	heap32[(g0)] = r10;
+	heap32[(g0+1)] = r8;
+	heap32[(g0+2)] = r12;
+	heap32[(g0+3)] = r13;
+	__FUNCTION_TABLE__[(r11)>>2](i7);
+	r8 = r1 >> 2;
+	r8 = heap32[(r8+48)];
+	r10 = r8 >> 2;
+	r10 = heap32[(r10)];
+	r10 = r10 >> 2;
+	r10 = heap32[(r10+2)];
+	r11 = sp + -296;
+	r14 = sp + -312;
+	heap32[(g0)] = r8;
+	heap32[(g0+1)] = r4;
+	heap32[(g0+2)] = r11;
+	heap32[(g0+3)] = r14;
+	__FUNCTION_TABLE__[(r10)>>2](i7);
+	f0 = heapFloat[(fp+-66)];
+	f1 = heapFloat[(fp+-78)];
+	if(f0 >f1) //_LBB257_40
+{
+__label__ = 40;
+}
+else{
+	f0 = heapFloat[(fp+-70)];
+	f1 = heapFloat[(fp+-74)];
+	if(f0 <f1) //_LBB257_40
+{
+__label__ = 40;
+}
+else{
+	r8 = r2;
+__label__ = 41;
+}
+}
+if (__label__ == 40){
+	r8 = 0;
+}
+	r10 = r12 >> 2;
+	r12 = r14 >> 2;
+	f0 = heapFloat[(r10+2)];
+	f1 = heapFloat[(r12+2)];
+	if(f0 >f1) //_LBB257_44
+{
+__label__ = 43;
+}
+else{
+	r14 = r13 >> 2;
+	r15 = r11 >> 2;
+	f0 = heapFloat[(r14+2)];
+	f1 = heapFloat[(r15+2)];
+	if(f0 <f1) //_LBB257_44
+{
+__label__ = 43;
+}
+else{
+__label__ = 44;
+}
+}
+if (__label__ == 43){
+	r8 = 0;
+}
+	f0 = heapFloat[(r10+1)];
+	f1 = heapFloat[(r12+1)];
+if(!(f0 >f1)) //_LBB257_48
+{
+	r10 = r13 >> 2;
+	r11 = r11 >> 2;
+	f0 = heapFloat[(r10+1)];
+	f1 = heapFloat[(r11+1)];
+if(!(f0 <f1)) //_LBB257_48
+{
+	r8 = r8 & 255;
+	if(r8 !=0) //_LBB257_49
+{
+break _53;
+}
+}
+}
+	r8 = heap32[(r7+5)];
+	r8 = (r8 - r9)|0;
+	r8 = r8 >> 2;
+	r8 = heap32[(r8)];
+	r10 = r8 >> 2;
+	r10 = heap32[(r10)];
+	r10 = r10 >> 2;
+	r10 = heap32[(r10)];
+	heap32[(g0)] = r8;
+	__FUNCTION_TABLE__[(r10)>>2](i7);
+	r8 = heap32[(r7+1)];
+	r10 = r8 >> 2;
+	r11 = heap32[(r7+5)];
+	r11 = (r11 - r9)|0;
+	r10 = heap32[(r10)];
+	r10 = r10 >> 2;
+	r11 = r11 >> 2;
+	r10 = heap32[(r10+13)];
+	r11 = heap32[(r11)];
+	heap32[(g0)] = r8;
+	heap32[(g0+1)] = r11;
+	__FUNCTION_TABLE__[(r10)>>2](i7);
+	r8 = heap32[(r7+5)];
+	r8 = (r8 - r9)|0;
+	r8 = r8 >> 2;
+	heap32[(r8)] = 0;
+}
+} while(0);
+	r3 = (r3 + -1)|0;
+if(!(r0 !=r3)) //_LBB257_36
+{
+break _48;
+}
+}
+}
+}
+} while(0);
+	return;
+break;
+case 14:
+	r14 = _2E_str59;
+	r0 = _2E_str160;
+	heap32[(g0)] = r14;
+	heap32[(g0+1)] = r0;
+	heap32[(g0+2)] = 101;
+	_assert(i7);
+break;
+}
+}
+else{
+	r0 = _2E_str99;
+	r1 = _2E_str1100;
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r1;
+	heap32[(g0+2)] = 199;
+	_assert(i7);
+}
+}
+
+function _ZN28btCompoundCollisionAlgorithmD0Ev(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+	var r6;
+	var r7;
+var __label__ = 0;
+	i7 = sp + -8;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = _ZTV28btCompoundCollisionAlgorithm;
+	r2 = r0 >> 2;
+	r1 = (r1 + 8)|0;
+	heap32[(r2)] = r1;
+	r1 = heap32[(r2+3)];
+if(!(r1 <1)) //_LBB258_5
+{
+	r3 = 0;
+_3: while(true){
+	r4 = heap32[(r2+5)];
+	r5 = r3 << 2;
+	r4 = (r4 + r5)|0;
+	r4 = r4 >> 2;
+	r4 = heap32[(r4)];
+if(!(r4 ==0)) //_LBB258_4
+{
+	r6 = r4 >> 2;
+	r6 = heap32[(r6)];
+	r6 = r6 >> 2;
+	r6 = heap32[(r6)];
+	heap32[(g0)] = r4;
+	__FUNCTION_TABLE__[(r6)>>2](i7);
+	r4 = heap32[(r2+1)];
+	r6 = r4 >> 2;
+	r7 = heap32[(r2+5)];
+	r5 = (r7 + r5)|0;
+	r6 = heap32[(r6)];
+	r6 = r6 >> 2;
+	r5 = r5 >> 2;
+	r6 = heap32[(r6+13)];
+	r5 = heap32[(r5)];
+	heap32[(g0)] = r4;
+	heap32[(g0+1)] = r5;
+	__FUNCTION_TABLE__[(r6)>>2](i7);
+}
+	r3 = (r3 + 1)|0;
+	if(r1 !=r3) //_LBB258_2
+{
+continue _3;
+}
+else{
+break _3;
+}
+}
+}
+	r1 = heap32[(r2+5)];
+if(!(r1 ==0)) //_LBB258_9
+{
+	r3 = heapU8[r0+24];
+if(!(r3 ==0)) //_LBB258_8
+{
+	r3 = gNumAlignedFree;
+	r3 = r3 >> 2;
+	r4 = heap32[(r3)];
+	r4 = (r4 + 1)|0;
+	r1 = r1 >> 2;
+	heap32[(r3)] = r4;
+	r1 = heap32[(r1+-1)];
+	heap32[(g0)] = r1;
+	free(i7);
+}
+	heap32[(r2+5)] = 0;
+}
+	r1 = 1;
+	heap8[r0+24] = r1;
+	heap32[(r2+5)] = 0;
+	r1 = _ZTV30btActivatingCollisionAlgorithm;
+	heap32[(r2+3)] = 0;
+	r1 = (r1 + 8)|0;
+	heap32[(r2+4)] = 0;
+	heap32[(r2)] = r1;
+	heap32[(g0)] = r0;
+	_ZdlPv(i7);
+	return;
+}
+
+function _ZN28btCompoundCollisionAlgorithmD1Ev(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+	var r6;
+	var r7;
+var __label__ = 0;
+	i7 = sp + -8;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = _ZTV28btCompoundCollisionAlgorithm;
+	r2 = r0 >> 2;
+	r1 = (r1 + 8)|0;
+	heap32[(r2)] = r1;
+	r1 = heap32[(r2+3)];
+if(!(r1 <1)) //_LBB259_5
+{
+	r3 = 0;
+_3: while(true){
+	r4 = heap32[(r2+5)];
+	r5 = r3 << 2;
+	r4 = (r4 + r5)|0;
+	r4 = r4 >> 2;
+	r4 = heap32[(r4)];
+if(!(r4 ==0)) //_LBB259_4
+{
+	r6 = r4 >> 2;
+	r6 = heap32[(r6)];
+	r6 = r6 >> 2;
+	r6 = heap32[(r6)];
+	heap32[(g0)] = r4;
+	__FUNCTION_TABLE__[(r6)>>2](i7);
+	r4 = heap32[(r2+1)];
+	r6 = r4 >> 2;
+	r7 = heap32[(r2+5)];
+	r5 = (r7 + r5)|0;
+	r6 = heap32[(r6)];
+	r6 = r6 >> 2;
+	r5 = r5 >> 2;
+	r6 = heap32[(r6+13)];
+	r5 = heap32[(r5)];
+	heap32[(g0)] = r4;
+	heap32[(g0+1)] = r5;
+	__FUNCTION_TABLE__[(r6)>>2](i7);
+}
+	r3 = (r3 + 1)|0;
+	if(r1 !=r3) //_LBB259_2
+{
+continue _3;
+}
+else{
+break _3;
+}
+}
+}
+	r1 = heap32[(r2+5)];
+if(!(r1 ==0)) //_LBB259_9
+{
+	r3 = heapU8[r0+24];
+if(!(r3 ==0)) //_LBB259_8
+{
+	r3 = gNumAlignedFree;
+	r3 = r3 >> 2;
+	r4 = heap32[(r3)];
+	r4 = (r4 + 1)|0;
+	r1 = r1 >> 2;
+	heap32[(r3)] = r4;
+	r1 = heap32[(r1+-1)];
+	heap32[(g0)] = r1;
+	free(i7);
+}
+	heap32[(r2+5)] = 0;
+}
+	r1 = 1;
+	heap8[r0+24] = r1;
+	heap32[(r2+5)] = 0;
+	r0 = _ZTV30btActivatingCollisionAlgorithm;
+	heap32[(r2+3)] = 0;
+	r0 = (r0 + 8)|0;
+	heap32[(r2+4)] = 0;
+	heap32[(r2)] = r0;
+	return;
+}
+
+function _ZNK21btConvexInternalShape15getLocalScalingEv(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+var __label__ = 0;
+	i7 = sp + 0;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r0 = (r0 + 12)|0;
+	r_g0 = r0;
+	return;
+}
+
+function _ZN21btConvexInternalShape9setMarginEf(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+var __label__ = 0;
+	i7 = sp + 0;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r0 = r0 >> 2;
+	heap32[(r0+11)] = heap32[(fp+1)];
+	return;
+}
+
+function _ZNK21btConvexInternalShape9getMarginEv(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var f0;
+var __label__ = 0;
+	i7 = sp + 0;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r0 = r0 >> 2;
+	f0 = heapFloat[(r0+11)];
+	f_g0 = f0;
+	return;
+}
+
+function _ZNK21btConvexInternalShape28calculateSerializeBufferSizeEv(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+var __label__ = 0;
+	i7 = sp + 0;var g0 = i7>>2; // save stack
+	r0 = 52;
+	r_g0 = r0;
+	return;
+}
+
+function _ZNK15btTriangleShape14getNumVerticesEv(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+var __label__ = 0;
+	i7 = sp + 0;var g0 = i7>>2; // save stack
+	r0 = 3;
+	r_g0 = r0;
+	return;
+}
+
+function _ZNK15btTriangleShape9getVertexEiR9btVector3(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+var __label__ = 0;
+	i7 = sp + 0;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp+1)];
+	r1 = heap32[(fp)];
+	r0 = r0 << 4;
+	r2 = heap32[(fp+2)];
+	r0 = (r1 + r0)|0;
+	r1 = r2 >> 2;
+	r0 = r0 >> 2;
+	heap32[(r1)] = heap32[(r0+13)];
+	heap32[(r1+1)] = heap32[(r0+14)];
+	heap32[(r1+2)] = heap32[(r0+15)];
+	heap32[(r1+3)] = heap32[(r0+16)];
+	return;
+}
+
+function _ZNK15btTriangleShape11getNumEdgesEv(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+var __label__ = 0;
+	i7 = sp + 0;var g0 = i7>>2; // save stack
+	r0 = 3;
+	r_g0 = r0;
+	return;
+}
+
+function _ZNK15btTriangleShape7getEdgeEiR9btVector3S1_(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+var __label__ = 0;
+	i7 = sp + -16;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = r0 >> 2;
+	r2 = heap32[(r1)];
+	r2 = r2 >> 2;
+	r2 = heap32[(r2+24)];
+	r3 = heap32[(fp+1)];
+	r4 = heap32[(fp+2)];
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r3;
+	heap32[(g0+2)] = r4;
+	__FUNCTION_TABLE__[(r2)>>2](i7);
+	r1 = heap32[(r1)];
+	r1 = r1 >> 2;
+	r1 = heap32[(r1+24)];
+	r2 = (r3 + 1)|0;
+	r2 = (r2 % 3)|0;
+	r3 = heap32[(fp+3)];
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r2;
+	heap32[(g0+2)] = r3;
+	__FUNCTION_TABLE__[(r1)>>2](i7);
+	return;
+}
+
+function _ZNK15btTriangleShape7getAabbERK11btTransformR9btVector3S4_(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+var __label__ = 0;
+	i7 = sp + -16;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = r0 >> 2;
+	r1 = heap32[(r1)];
+	r1 = r1 >> 2;
+	r1 = heap32[(r1+18)];
+	r2 = heap32[(fp+1)];
+	r3 = heap32[(fp+2)];
+	r4 = heap32[(fp+3)];
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r2;
+	heap32[(g0+2)] = r3;
+	heap32[(g0+3)] = r4;
+	__FUNCTION_TABLE__[(r1)>>2](i7);
+	return;
+}
+
+function _ZNK15btTriangleShape37localGetSupportingVertexWithoutMarginERK9btVector3(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var f0;
+	var f1;
+	var f2;
+	var f3;
+	var f4;
+	var f5;
+	var f6;
+	var f7;
+	var f8;
+	var f9;
+	var f10;
+	var f11;
+var __label__ = 0;
+	i7 = sp + 0;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp+1)];
+	r1 = heap32[(fp+2)];
+	r2 = r0 >> 2;
+	r1 = r1 >> 2;
+	f0 = heapFloat[(r2+13)];
+	f1 = heapFloat[(r1)];
+	f2 = heapFloat[(r2+17)];
+	f3 = heapFloat[(r2+21)];
+	f4 = heapFloat[(r2+14)];
+	f5 = heapFloat[(r1+1)];
+	f6 = heapFloat[(r2+18)];
+	f7 = heapFloat[(r2+22)];
+	f0 = f1*f0;
+	f4 = f5*f4;
+	f8 = heapFloat[(r2+15)];
+	f9 = heapFloat[(r1+2)];
+	f10 = heapFloat[(r2+19)];
+	f11 = heapFloat[(r2+23)];
+	f2 = f1*f2;
+	f6 = f5*f6;
+	f1 = f1*f3;
+	f3 = f5*f7;
+	f0 = f0+f4;
+	f4 = f9*f8;
+	f2 = f2+f6;
+	f5 = f9*f10;
+	f1 = f1+f3;
+	f3 = f9*f11;
+	f0 = f0+f4;
+	f2 = f2+f5;
+	r1 = heap32[(fp)];
+	f1 = f1+f3;
+	if(f0 >=f2) //_LBB269_2
+{
+	r2 = 2;
+	r3 = 0;
+	r2 = f0 < f1 ? r2 : r3;
+}
+else{
+	r2 = 2;
+	r3 = 1;
+	r2 = f2 < f1 ? r2 : r3;
+}
+	r2 = r2 << 4;
+	r0 = (r0 + r2)|0;
+	r1 = r1 >> 2;
+	r0 = r0 >> 2;
+	heap32[(r1)] = heap32[(r0+13)];
+	heap32[(r1+1)] = heap32[(r0+14)];
+	heap32[(r1+2)] = heap32[(r0+15)];
+	heap32[(r1+3)] = heap32[(r0+16)];
+	return;
+}
+
+function _ZNK15btTriangleShape49batchedUnitVectorGetSupportingVertexWithoutMarginEPK9btVector3PS0_i(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+	var f0;
+	var f1;
+	var f2;
+	var f3;
+	var f4;
+	var f5;
+	var f6;
+	var f7;
+	var f8;
+	var f9;
+	var f10;
+	var f11;
+var __label__ = 0;
+	i7 = sp + 0;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp+3)];
+if(!(r0 <1)) //_LBB270_6
+{
+	r1 = heap32[(fp)];
+	r2 = heap32[(fp+1)];
+	r3 = heap32[(fp+2)];
+	r2 = (r2 + 8)|0;
+	r3 = (r3 + 12)|0;
+_3: while(true){
+	r4 = r1 >> 2;
+	r5 = r2 >> 2;
+	f0 = heapFloat[(r4+13)];
+	f1 = heapFloat[(r5+-2)];
+	f2 = heapFloat[(r4+17)];
+	f3 = heapFloat[(r4+21)];
+	f4 = heapFloat[(r4+14)];
+	f5 = heapFloat[(r5+-1)];
+	f6 = heapFloat[(r4+18)];
+	f7 = heapFloat[(r4+22)];
+	f0 = f1*f0;
+	f4 = f5*f4;
+	f8 = heapFloat[(r4+15)];
+	f9 = heapFloat[(r5)];
+	f10 = heapFloat[(r4+19)];
+	f11 = heapFloat[(r4+23)];
+	f2 = f1*f2;
+	f6 = f5*f6;
+	f1 = f1*f3;
+	f3 = f5*f7;
+	f0 = f0+f4;
+	f4 = f9*f8;
+	f2 = f2+f6;
+	f5 = f9*f10;
+	f1 = f1+f3;
+	f3 = f9*f11;
+	f0 = f0+f4;
+	f2 = f2+f5;
+	f1 = f1+f3;
+	if(f0 >=f2) //_LBB270_4
+{
+	r4 = 2;
+	r5 = 0;
+	r4 = f0 < f1 ? r4 : r5;
+}
+else{
+	r4 = 2;
+	r5 = 1;
+	r4 = f2 < f1 ? r4 : r5;
+}
+	r4 = r4 << 4;
+	r4 = (r1 + r4)|0;
+	r5 = r3 >> 2;
+	r4 = r4 >> 2;
+	heap32[(r5+-3)] = heap32[(r4+13)];
+	heap32[(r5+-2)] = heap32[(r4+14)];
+	r0 = (r0 + -1)|0;
+	r2 = (r2 + 16)|0;
+	r3 = (r3 + 16)|0;
+	heap32[(r5+-1)] = heap32[(r4+15)];
+	heap32[(r5)] = heap32[(r4+16)];
+	if(r0 !=0) //_LBB270_2
+{
+continue _3;
+}
+else{
+break _3;
+}
+}
+}
+	return;
+}
+
+function _ZNK15btTriangleShape8getPlaneER9btVector3S1_i(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+var __label__ = 0;
+	i7 = sp + -16;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = r0 >> 2;
+	r1 = heap32[(r1)];
+	r1 = r1 >> 2;
+	r1 = heap32[(r1+28)];
+	r2 = heap32[(fp+3)];
+	r3 = heap32[(fp+1)];
+	r4 = heap32[(fp+2)];
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r2;
+	heap32[(g0+2)] = r3;
+	heap32[(g0+3)] = r4;
+	__FUNCTION_TABLE__[(r1)>>2](i7);
+	return;
+}
+
+function _ZNK15btTriangleShape12getNumPlanesEv(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+var __label__ = 0;
+	i7 = sp + 0;var g0 = i7>>2; // save stack
+	r0 = 1;
+	r_g0 = r0;
+	return;
+}
+
+function _ZNK15btTriangleShape7getNameEv(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+var __label__ = 0;
+	i7 = sp + 0;var g0 = i7>>2; // save stack
+	r0 = _2E_str109;
+	r_g0 = r0;
+	return;
+}
+
+function _ZNK15btTriangleShape36getNumPreferredPenetrationDirectionsEv(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+var __label__ = 0;
+	i7 = sp + 0;var g0 = i7>>2; // save stack
+	r0 = 2;
+	r_g0 = r0;
+	return;
+}
+
+function _ZN24btConvexTriangleCallbackD1Ev(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+var __label__ = 0;
+	i7 = sp + -8;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = _ZTV24btConvexTriangleCallback;
+	r0 = r0 >> 2;
+	r1 = (r1 + 8)|0;
+	heap32[(r0)] = r1;
+	r1 = heap32[(r0+12)];
+	r2 = r1 >> 2;
+	r2 = heap32[(r2)];
+	r2 = r2 >> 2;
+	r2 = heap32[(r2+5)];
+	r3 = heap32[(r0+16)];
+	heap32[(g0)] = r1;
+	heap32[(g0+1)] = r3;
+	__FUNCTION_TABLE__[(r2)>>2](i7);
+	r1 = heap32[(r0+12)];
+	r2 = r1 >> 2;
+	r2 = heap32[(r2)];
+	r2 = r2 >> 2;
+	r2 = heap32[(r2+4)];
+	r3 = heap32[(r0+16)];
+	heap32[(g0)] = r1;
+	heap32[(g0+1)] = r3;
+	r1 = _ZTV18btTriangleCallback;
+	r1 = (r1 + 8)|0;
+	__FUNCTION_TABLE__[(r2)>>2](i7);
+	heap32[(r0)] = r1;
+	return;
+}
+
+function _ZN24btConvexTriangleCallbackD0Ev(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+var __label__ = 0;
+	i7 = sp + -8;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = _ZTV24btConvexTriangleCallback;
+	r2 = r0 >> 2;
+	r1 = (r1 + 8)|0;
+	heap32[(r2)] = r1;
+	r1 = heap32[(r2+12)];
+	r3 = r1 >> 2;
+	r3 = heap32[(r3)];
+	r3 = r3 >> 2;
+	r3 = heap32[(r3+5)];
+	r4 = heap32[(r2+16)];
+	heap32[(g0)] = r1;
+	heap32[(g0+1)] = r4;
+	__FUNCTION_TABLE__[(r3)>>2](i7);
+	r1 = heap32[(r2+12)];
+	r3 = r1 >> 2;
+	r3 = heap32[(r3)];
+	r3 = r3 >> 2;
+	r3 = heap32[(r3+4)];
+	r4 = heap32[(r2+16)];
+	heap32[(g0)] = r1;
+	heap32[(g0+1)] = r4;
+	r1 = _ZTV18btTriangleCallback;
+	r1 = (r1 + 8)|0;
+	__FUNCTION_TABLE__[(r3)>>2](i7);
+	heap32[(r2)] = r1;
+	heap32[(g0)] = r0;
+	_ZdlPv(i7);
+	return;
+}
+
+function _ZN24btConvexTriangleCallback15processTriangleEP9btVector3ii(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+	var r6;
+	var r7;
+	var r8;
+	var r9;
+	var r10;
+	var r11;
+	var f0;
+	var f1;
+	var f2;
+	var f3;
+	var f4;
+	var f5;
+	var f6;
+	var f7;
+	var f8;
+	var f9;
+	var f10;
+var __label__ = 0;
+	i7 = sp + -240;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r0 = r0 >> 2;
+	r1 = heap32[(r0+13)];
+	r2 = heap32[(fp+1)];
+	r3 = heap32[(r0+12)];
+	r4 = heap32[(r0+2)];
+if(!(r1 ==0)) //_LBB277_4
+{
+	r1 = r1 >> 2;
+	r1 = heap32[(r1+5)];
+if(!(r1 ==0)) //_LBB277_4
+{
+	r5 = r1 >> 2;
+	r5 = heap32[(r5)];
+	r5 = r5 >> 2;
+	r5 = heap32[(r5+12)];
+	heap32[(g0)] = r1;
+	__FUNCTION_TABLE__[(r5)>>2](i7);
+	r1 = r_g0 & 1;
+if(!(r1 ==0)) //_LBB277_4
+{
+	r1 = sp + -112;
+	r5 = r1 >> 2;
+	heap32[(fp+-28)] = 1065353216;
+	heap32[(r5+1)] = 1065353216;
+	heap32[(r5+2)] = 0;
+	heap32[(r5+3)] = 0;
+	r5 = heap32[(r0+13)];
+	r5 = r5 >> 2;
+	r6 = r4 >> 2;
+	r7 = r2 >> 2;
+	r8 = heap32[(r5+5)];
+	r8 = r8 >> 2;
+	f0 = heapFloat[(r7+4)];
+	f1 = heapFloat[(r6+1)];
+	f2 = heapFloat[(r7+5)];
+	f3 = heapFloat[(r6+2)];
+	r8 = heap32[(r8)];
+	f4 = heapFloat[(r6+5)];
+	f5 = heapFloat[(r6+6)];
+	f1 = f1*f0;
+	f3 = f3*f2;
+	f6 = heapFloat[(r7+6)];
+	f7 = heapFloat[(r6+3)];
+	r8 = r8 >> 2;
+	f8 = heapFloat[(r6+9)];
+	f9 = heapFloat[(r6+10)];
+	f10 = heapFloat[(r6+7)];
+	f4 = f4*f0;
+	f5 = f5*f2;
+	f1 = f1+f3;
+	f3 = f7*f6;
+	f7 = heapFloat[(r6+11)];
+	r8 = heap32[(r8+2)];
+	f0 = f8*f0;
+	f2 = f9*f2;
+	f4 = f4+f5;
+	f5 = f10*f6;
+	f1 = f1+f3;
+	f3 = heapFloat[(r6+13)];
+	f8 = heapFloat[(r6+15)];
+	f9 = heapFloat[(r6+14)];
+	r9 = sp + -96;
+	f4 = f4+f5;
+	f0 = f0+f2;
+	f2 = f7*f6;
+	f1 = f1+f3;
+	f0 = f0+f2;
+	r10 = r9 >> 2;
+	f2 = f4+f9;
+	heapFloat[(fp+-24)] = f1;
+	f0 = f0+f8;
+	heapFloat[(r10+1)] = f2;
+	heapFloat[(r10+2)] = f0;
+	heap32[(r10+3)] = 0;
+	f0 = heapFloat[(r7)];
+	f1 = heapFloat[(r6+1)];
+	f2 = heapFloat[(r7+1)];
+	f3 = heapFloat[(r6+2)];
+	f4 = heapFloat[(r6+5)];
+	f5 = heapFloat[(r6+6)];
+	f1 = f1*f0;
+	f3 = f3*f2;
+	f6 = heapFloat[(r7+2)];
+	f7 = heapFloat[(r6+3)];
+	f8 = heapFloat[(r6+9)];
+	f9 = heapFloat[(r6+10)];
+	f10 = heapFloat[(r6+7)];
+	f4 = f4*f0;
+	f5 = f5*f2;
+	f1 = f1+f3;
+	f3 = f7*f6;
+	f7 = heapFloat[(r6+11)];
+	f0 = f8*f0;
+	f2 = f9*f2;
+	f4 = f4+f5;
+	f5 = f10*f6;
+	f1 = f1+f3;
+	f3 = heapFloat[(r6+13)];
+	f8 = heapFloat[(r6+15)];
+	f9 = heapFloat[(r6+14)];
+	r10 = sp + -80;
+	f4 = f4+f5;
+	f0 = f0+f2;
+	f2 = f7*f6;
+	f1 = f1+f3;
+	f0 = f0+f2;
+	r11 = r10 >> 2;
+	f2 = f4+f9;
+	heapFloat[(fp+-20)] = f1;
+	f0 = f0+f8;
+	heapFloat[(r11+1)] = f2;
+	heapFloat[(r11+2)] = f0;
+	heap32[(r11+3)] = 0;
+	r5 = heap32[(r5+5)];
+	heap32[(g0)] = r5;
+	heap32[(g0+1)] = r10;
+	heap32[(g0+2)] = r9;
+	heap32[(g0+3)] = r1;
+	__FUNCTION_TABLE__[(r8)>>2](i7);
+	r5 = heap32[(r0+13)];
+	r5 = r5 >> 2;
+	r8 = heap32[(r5+5)];
+	r8 = r8 >> 2;
+	f0 = heapFloat[(r7+8)];
+	f1 = heapFloat[(r6+1)];
+	f2 = heapFloat[(r7+9)];
+	f3 = heapFloat[(r6+2)];
+	r8 = heap32[(r8)];
+	f4 = heapFloat[(r6+5)];
+	f5 = heapFloat[(r6+6)];
+	f1 = f1*f0;
+	f3 = f3*f2;
+	f6 = heapFloat[(r7+10)];
+	f7 = heapFloat[(r6+3)];
+	r8 = r8 >> 2;
+	f8 = heapFloat[(r6+9)];
+	f9 = heapFloat[(r6+10)];
+	f10 = heapFloat[(r6+7)];
+	f4 = f4*f0;
+	f5 = f5*f2;
+	f1 = f1+f3;
+	f3 = f7*f6;
+	f7 = heapFloat[(r6+11)];
+	r8 = heap32[(r8+2)];
+	f0 = f8*f0;
+	f2 = f9*f2;
+	f4 = f4+f5;
+	f5 = f10*f6;
+	f1 = f1+f3;
+	f3 = heapFloat[(r6+13)];
+	f8 = heapFloat[(r6+15)];
+	f9 = heapFloat[(r6+14)];
+	r9 = sp + -64;
+	f4 = f4+f5;
+	f0 = f0+f2;
+	f2 = f7*f6;
+	f1 = f1+f3;
+	f0 = f0+f2;
+	r10 = r9 >> 2;
+	f2 = f4+f9;
+	heapFloat[(fp+-16)] = f1;
+	f0 = f0+f8;
+	heapFloat[(r10+1)] = f2;
+	heapFloat[(r10+2)] = f0;
+	heap32[(r10+3)] = 0;
+	f0 = heapFloat[(r7+4)];
+	f1 = heapFloat[(r6+1)];
+	f2 = heapFloat[(r7+5)];
+	f3 = heapFloat[(r6+2)];
+	f4 = heapFloat[(r6+5)];
+	f5 = heapFloat[(r6+6)];
+	f1 = f1*f0;
+	f3 = f3*f2;
+	f6 = heapFloat[(r7+6)];
+	f7 = heapFloat[(r6+3)];
+	f8 = heapFloat[(r6+9)];
+	f9 = heapFloat[(r6+10)];
+	f10 = heapFloat[(r6+7)];
+	f4 = f4*f0;
+	f5 = f5*f2;
+	f1 = f1+f3;
+	f3 = f7*f6;
+	f7 = heapFloat[(r6+11)];
+	f0 = f8*f0;
+	f2 = f9*f2;
+	f4 = f4+f5;
+	f5 = f10*f6;
+	f1 = f1+f3;
+	f3 = heapFloat[(r6+13)];
+	f8 = heapFloat[(r6+15)];
+	f9 = heapFloat[(r6+14)];
+	r10 = sp + -48;
+	f4 = f4+f5;
+	f0 = f0+f2;
+	f2 = f7*f6;
+	f1 = f1+f3;
+	f0 = f0+f2;
+	r11 = r10 >> 2;
+	f2 = f4+f9;
+	heapFloat[(fp+-12)] = f1;
+	f0 = f0+f8;
+	heapFloat[(r11+1)] = f2;
+	heapFloat[(r11+2)] = f0;
+	heap32[(r11+3)] = 0;
+	r5 = heap32[(r5+5)];
+	heap32[(g0)] = r5;
+	heap32[(g0+1)] = r10;
+	heap32[(g0+2)] = r9;
+	heap32[(g0+3)] = r1;
+	__FUNCTION_TABLE__[(r8)>>2](i7);
+	r5 = heap32[(r0+13)];
+	r5 = r5 >> 2;
+	r8 = heap32[(r5+5)];
+	r8 = r8 >> 2;
+	f0 = heapFloat[(r7)];
+	f1 = heapFloat[(r6+1)];
+	f2 = heapFloat[(r7+1)];
+	f3 = heapFloat[(r6+2)];
+	r8 = heap32[(r8)];
+	f4 = heapFloat[(r6+5)];
+	f5 = heapFloat[(r6+6)];
+	f1 = f1*f0;
+	f3 = f3*f2;
+	f6 = heapFloat[(r7+2)];
+	f7 = heapFloat[(r6+3)];
+	r8 = r8 >> 2;
+	f8 = heapFloat[(r6+9)];
+	f9 = heapFloat[(r6+10)];
+	f10 = heapFloat[(r6+7)];
+	f4 = f4*f0;
+	f5 = f5*f2;
+	f1 = f1+f3;
+	f3 = f7*f6;
+	f7 = heapFloat[(r6+11)];
+	r8 = heap32[(r8+2)];
+	f0 = f8*f0;
+	f2 = f9*f2;
+	f4 = f4+f5;
+	f5 = f10*f6;
+	f1 = f1+f3;
+	f3 = heapFloat[(r6+13)];
+	f8 = heapFloat[(r6+15)];
+	f9 = heapFloat[(r6+14)];
+	r9 = sp + -32;
+	f4 = f4+f5;
+	f0 = f0+f2;
+	f2 = f7*f6;
+	f1 = f1+f3;
+	f0 = f0+f2;
+	r10 = r9 >> 2;
+	f2 = f4+f9;
+	heapFloat[(fp+-8)] = f1;
+	f0 = f0+f8;
+	heapFloat[(r10+1)] = f2;
+	heapFloat[(r10+2)] = f0;
+	heap32[(r10+3)] = 0;
+	f0 = heapFloat[(r7+8)];
+	f1 = heapFloat[(r6+1)];
+	f2 = heapFloat[(r7+9)];
+	f3 = heapFloat[(r6+2)];
+	f4 = heapFloat[(r6+5)];
+	f5 = heapFloat[(r6+6)];
+	f1 = f1*f0;
+	f3 = f3*f2;
+	f6 = heapFloat[(r7+10)];
+	f7 = heapFloat[(r6+3)];
+	f8 = heapFloat[(r6+9)];
+	f9 = heapFloat[(r6+10)];
+	f10 = heapFloat[(r6+7)];
+	f4 = f4*f0;
+	f5 = f5*f2;
+	f1 = f1+f3;
+	f3 = f7*f6;
+	f7 = heapFloat[(r6+11)];
+	f0 = f8*f0;
+	f2 = f9*f2;
+	f4 = f4+f5;
+	f5 = f10*f6;
+	f1 = f1+f3;
+	f3 = heapFloat[(r6+13)];
+	f8 = heapFloat[(r6+15)];
+	f9 = heapFloat[(r6+14)];
+	r6 = sp + -16;
+	f4 = f4+f5;
+	f0 = f0+f2;
+	f2 = f7*f6;
+	f1 = f1+f3;
+	f0 = f0+f2;
+	r7 = r6 >> 2;
+	f2 = f4+f9;
+	heapFloat[(fp+-4)] = f1;
+	f0 = f0+f8;
+	heapFloat[(r7+1)] = f2;
+	heapFloat[(r7+2)] = f0;
+	heap32[(r7+3)] = 0;
+	r5 = heap32[(r5+5)];
+	heap32[(g0)] = r5;
+	heap32[(g0+1)] = r6;
+	heap32[(g0+2)] = r9;
+	heap32[(g0+3)] = r1;
+	__FUNCTION_TABLE__[(r8)>>2](i7);
+}
+}
+}
+	r1 = heap32[(r0+1)];
+	r1 = r1 >> 2;
+	r1 = heap32[(r1+48)];
+	r1 = r1 >> 2;
+	r1 = heap32[(r1+1)];
+if(!(r1 >19)) //_LBB277_9
+{
+	r1 = heap32[(fp+2)];
+	r5 = heap32[(fp+3)];
+	r6 = sp + -216;
+	r7 = r6 >> 2;
+	heap32[(r7+2)] = 0;
+	heap32[(r7+3)] = 1065353216;
+	heap32[(r7+4)] = 1065353216;
+	r8 = _ZTV15btTriangleShape;
+	heap32[(r7+5)] = 1065353216;
+	r8 = (r8 + 8)|0;
+	heap32[(r7+6)] = 0;
+	heap32[(fp+-54)] = r8;
+	r2 = r2 >> 2;
+	heap32[(r7+1)] = 1;
+	heap32[(r7+13)] = heap32[(r2)];
+	heap32[(r7+14)] = heap32[(r2+1)];
+	heap32[(r7+15)] = heap32[(r2+2)];
+	heap32[(r7+16)] = heap32[(r2+3)];
+	heap32[(r7+17)] = heap32[(r2+4)];
+	heap32[(r7+18)] = heap32[(r2+5)];
+	heap32[(r7+19)] = heap32[(r2+6)];
+	heap32[(r7+20)] = heap32[(r2+7)];
+	heap32[(r7+21)] = heap32[(r2+8)];
+	heap32[(r7+22)] = heap32[(r2+9)];
+	heap32[(r7+23)] = heap32[(r2+10)];
+	heap32[(r7+24)] = heap32[(r2+11)];
+	r2 = r4 >> 2;
+	heap32[(r7+11)] = heap32[(r0+14)];
+	r4 = heap32[(r2+48)];
+	heap32[(r2+48)] = r6;
+	r6 = r3 >> 2;
+	r7 = heap32[(r6)];
+	r7 = r7 >> 2;
+	r7 = heap32[(r7+2)];
+	r8 = heap32[(r0+16)];
+	r9 = heap32[(r0+2)];
+	r10 = heap32[(r0+1)];
+	heap32[(g0)] = r3;
+	heap32[(g0+1)] = r10;
+	heap32[(g0+2)] = r9;
+	heap32[(g0+3)] = r8;
+	__FUNCTION_TABLE__[(r7)>>2](i7);
+	r7 = r_g0;
+	r8 = heap32[(r0+11)];
+	r9 = r8 >> 2;
+	r10 = heap32[(r9)];
+	r9 = heap32[(r9+34)];
+	r11 = heap32[(r0+2)];
+	if(r9 !=r11) //_LBB277_7
+{
+	r9 = r10 >> 2;
+	r9 = heap32[(r9+3)];
+	heap32[(g0)] = r8;
+	heap32[(g0+1)] = r1;
+	heap32[(g0+2)] = r5;
+	__FUNCTION_TABLE__[(r9)>>2](i7);
+}
+else{
+	r10 = r10 >> 2;
+	r10 = heap32[(r10+2)];
+	heap32[(g0)] = r8;
+	heap32[(g0+1)] = r1;
+	heap32[(g0+2)] = r5;
+	__FUNCTION_TABLE__[(r10)>>2](i7);
+}
+	r1 = r7 >> 2;
+	r5 = heap32[(r1)];
+	r5 = r5 >> 2;
+	r5 = heap32[(r5+2)];
+	r8 = heap32[(r0+11)];
+	r9 = heap32[(r0+13)];
+	r10 = heap32[(r0+2)];
+	r0 = heap32[(r0+1)];
+	heap32[(g0)] = r7;
+	heap32[(g0+1)] = r0;
+	heap32[(g0+2)] = r10;
+	heap32[(g0+3)] = r9;
+	heap32[(g0+4)] = r8;
+	__FUNCTION_TABLE__[(r5)>>2](i7);
+	r0 = heap32[(r1)];
+	r0 = r0 >> 2;
+	r0 = heap32[(r0)];
+	heap32[(g0)] = r7;
+	__FUNCTION_TABLE__[(r0)>>2](i7);
+	r0 = heap32[(r6)];
+	r0 = r0 >> 2;
+	r0 = heap32[(r0+13)];
+	heap32[(g0)] = r3;
+	heap32[(g0+1)] = r7;
+	__FUNCTION_TABLE__[(r0)>>2](i7);
+	heap32[(r2+48)] = r4;
+}
+	return;
+}
+
+function _ZZN33btConvexConcaveCollisionAlgorithm21calculateTimeOfImpactEP17btCollisionObjectS1_RK16btDispatcherInfoP16btManifoldResultEN31LocalTriangleSphereCastCallbackD1Ev(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+var __label__ = 0;
+	i7 = sp + 0;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = _ZTV18btTriangleCallback;
+	r0 = r0 >> 2;
+	r1 = (r1 + 8)|0;
+	heap32[(r0)] = r1;
+	return;
+}
+
+function _ZZN33btConvexConcaveCollisionAlgorithm21calculateTimeOfImpactEP17btCollisionObjectS1_RK16btDispatcherInfoP16btManifoldResultEN31LocalTriangleSphereCastCallbackD0Ev(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+var __label__ = 0;
+	i7 = sp + -8;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = _ZTV18btTriangleCallback;
+	r2 = r0 >> 2;
+	r1 = (r1 + 8)|0;
+	heap32[(r2)] = r1;
+	heap32[(g0)] = r0;
+	_ZdlPv(i7);
+	return;
+}
+
+function _ZZN33btConvexConcaveCollisionAlgorithm21calculateTimeOfImpactEP17btCollisionObjectS1_RK16btDispatcherInfoP16btManifoldResultEN31LocalTriangleSphereCastCallback15processTriangleEP9btVector3ii(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+	var r6;
+	var r7;
+	var r8;
+	var r9;
+	var r10;
+	var f0;
+	var f1;
+var __label__ = 0;
+	i7 = sp + -800;var g0 = i7>>2; // save stack
+	r0 = sp + -64;
+	r1 = r0 >> 2;
+	heap32[(fp+-16)] = 1065353216;
+	heap32[(r1+1)] = 0;
+	heap32[(r1+2)] = 0;
+	heap32[(r1+3)] = 0;
+	heap32[(r1+4)] = 0;
+	heap32[(r1+5)] = 1065353216;
+	heap32[(r1+6)] = 0;
+	heap32[(r1+7)] = 0;
+	heap32[(r1+8)] = 0;
+	heap32[(r1+9)] = 0;
+	heap32[(r1+10)] = 1065353216;
+	heap32[(r1+11)] = 0;
+	heap32[(r1+12)] = 0;
+	heap32[(r1+13)] = 0;
+	r2 = _ZTVN12btConvexCast10CastResultE;
+	heap32[(r1+14)] = 0;
+	r3 = sp + -240;
+	r2 = (r2 + 8)|0;
+	heap32[(r1+15)] = 0;
+	r1 = r3 >> 2;
+	heap32[(fp+-60)] = r2;
+	r2 = heap32[(fp)];
+	heap32[(r1+42)] = 0;
+	r4 = r2 >> 2;
+	heap32[(r1+43)] = 0;
+	r5 = sp + -296;
+	heap32[(r1+41)] = heap32[(r4+50)];
+	r6 = r5 >> 2;
+	f0 = heapFloat[(r4+49)];
+	heap32[(r6+2)] = 0;
+	heap32[(r6+3)] = 1065353216;
+	heap32[(r6+4)] = 1065353216;
+	r7 = _ZTV13btSphereShape;
+	heap32[(r6+5)] = 1065353216;
+	r7 = (r7 + 8)|0;
+	heap32[(r6+6)] = 0;
+	heap32[(fp+-74)] = r7;
+	heap32[(r6+1)] = 8;
+	r7 = sp + -400;
+	heapFloat[(r6+7)] = f0;
+	r8 = r7 >> 2;
+	heapFloat[(r6+11)] = f0;
+	heap32[(r8+2)] = 0;
+	heap32[(r8+3)] = 1065353216;
+	heap32[(r8+4)] = 1065353216;
+	heap32[(r8+5)] = 1065353216;
+	r6 = _ZTV15btTriangleShape;
+	heap32[(r8+6)] = 0;
+	r6 = (r6 + 8)|0;
+	heap32[(r8+11)] = 1025758986;
+	r9 = heap32[(fp+1)];
+	heap32[(fp+-100)] = r6;
+	r6 = r9 >> 2;
+	heap32[(r8+1)] = 1;
+	heap32[(r8+13)] = heap32[(r6)];
+	heap32[(r8+14)] = heap32[(r6+1)];
+	heap32[(r8+15)] = heap32[(r6+2)];
+	heap32[(r8+16)] = heap32[(r6+3)];
+	heap32[(r8+17)] = heap32[(r6+4)];
+	heap32[(r8+18)] = heap32[(r6+5)];
+	heap32[(r8+19)] = heap32[(r6+6)];
+	heap32[(r8+20)] = heap32[(r6+7)];
+	heap32[(r8+21)] = heap32[(r6+8)];
+	heap32[(r8+22)] = heap32[(r6+9)];
+	r9 = sp + -760;
+	heap32[(r8+23)] = heap32[(r6+10)];
+	r10 = r9 >> 2;
+	heap32[(r8+24)] = heap32[(r6+11)];
+	r6 = _ZTV22btSubsimplexConvexCast;
+	r8 = 0;
+	heap32[(r10+77)] = 953267991;
+	r10 = sp + -776;
+	r6 = (r6 + 8)|0;
+	heap8[sp+-428] = r8;
+	r8 = r10 >> 2;
+	heap32[(fp+-194)] = r6;
+	heap32[(r8+1)] = r9;
+	heap32[(r8+2)] = r5;
+	heap32[(r8+3)] = r7;
+	r5 = (r2 + 4)|0;
+	r2 = (r2 + 68)|0;
+	heap32[(g0)] = r10;
+	heap32[(g0+1)] = r5;
+	heap32[(g0+2)] = r2;
+	heap32[(g0+3)] = r0;
+	heap32[(g0+4)] = r0;
+	heap32[(g0+5)] = r3;
+	_ZN22btSubsimplexConvexCast16calcTimeOfImpactERK11btTransformS2_S2_S2_RN12btConvexCast10CastResultE(i7);
+	r0 = r_g0;
+if(!(r0 ==0)) //_LBB280_3
+{
+	f0 = heapFloat[(r1+41)];
+	f1 = heapFloat[(r4+50)];
+if(!(f1 <=f0)) //_LBB280_3
+{
+	heapFloat[(r4+50)] = f0;
+}
+}
+	return;
+}
+
+function _ZN15btTriangleShapeD1Ev(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+var __label__ = 0;
+	i7 = sp + 0;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = _ZTV13btConvexShape;
+	r0 = r0 >> 2;
+	r1 = (r1 + 8)|0;
+	heap32[(r0)] = r1;
+	return;
+}
+
+function _ZN15btTriangleShapeD0Ev(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+var __label__ = 0;
+	i7 = sp + -8;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = _ZTV13btConvexShape;
+	r2 = r0 >> 2;
+	r1 = (r1 + 8)|0;
+	heap32[(r2)] = r1;
+if(!(r0 ==0)) //_LBB282_2
+{
+	r0 = gNumAlignedFree;
+	r0 = r0 >> 2;
+	r1 = heap32[(r0)];
+	r1 = (r1 + 1)|0;
+	heap32[(r0)] = r1;
+	r0 = heap32[(r2+-1)];
+	heap32[(g0)] = r0;
+	free(i7);
+}
+	return;
+}
+
+function _ZNK15btTriangleShape21calculateLocalInertiaEfR9btVector3(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+var __label__ = 0;
+	i7 = sp + -16;var g0 = i7>>2; // save stack
+	r0 = _2E_str10;
+	r1 = _2E_str3112;
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r1;
+	heap32[(g0+2)] = 125;
+	_assert(i7);
+}
+
+function _ZNK21btConvexInternalShape9serializeEPvP12btSerializer(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+var __label__ = 0;
+	i7 = sp + -8;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp+2)];
+	r1 = r0 >> 2;
+	r2 = heap32[(r1)];
+	r2 = r2 >> 2;
+	r2 = heap32[(r2+10)];
+	r3 = heap32[(fp)];
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r3;
+	__FUNCTION_TABLE__[(r2)>>2](i7);
+	r2 = r_g0;
+	r4 = heap32[(r1)];
+	r4 = r4 >> 2;
+	r4 = heap32[(r4+7)];
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r2;
+	r5 = heap32[(fp+1)];
+	__FUNCTION_TABLE__[(r4)>>2](i7);
+	r4 = r_g0;
+	r5 = r5 >> 2;
+	heap32[(r5)] = r4;
+if(!(r4 ==0)) //_LBB284_2
+{
+	r1 = heap32[(r1)];
+	r1 = r1 >> 2;
+	r1 = heap32[(r1+12)];
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r2;
+	__FUNCTION_TABLE__[(r1)>>2](i7);
+}
+	r0 = r3 >> 2;
+	r1 = heap32[(r0+1)];
+	heap32[(r5+1)] = r1;
+	heap32[(r5+7)] = heap32[(r0+7)];
+	heap32[(r5+8)] = heap32[(r0+8)];
+	heap32[(r5+9)] = heap32[(r0+9)];
+	heap32[(r5+10)] = heap32[(r0+10)];
+	heap32[(r5+3)] = heap32[(r0+3)];
+	heap32[(r5+4)] = heap32[(r0+4)];
+	heap32[(r5+5)] = heap32[(r0+5)];
+	heap32[(r5+6)] = heap32[(r0+6)];
+	heap32[(r5+11)] = heap32[(r0+11)];
+	r0 = _2E_str1110;
+	r_g0 = r0;
+	return;
+}
+
+function _ZNK15btTriangleShape32getPreferredPenetrationDirectionEiR9btVector3(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var f0;
+	var f1;
+	var f2;
+	var f3;
+	var f4;
+	var f5;
+	var f6;
+	var f7;
+var __label__ = 0;
+	i7 = sp + -8;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r0 = r0 >> 2;
+	f0 = heapFloat[(r0+23)];
+	f1 = heapFloat[(r0+15)];
+	f2 = heapFloat[(r0+19)];
+	f3 = heapFloat[(r0+22)];
+	f4 = heapFloat[(r0+14)];
+	f5 = heapFloat[(r0+18)];
+	f5 = f5-f4;
+	f0 = f0-f1;
+	f1 = f2-f1;
+	f2 = f3-f4;
+	f3 = heapFloat[(r0+21)];
+	f4 = heapFloat[(r0+13)];
+	f6 = heapFloat[(r0+17)];
+	f3 = f3-f4;
+	f4 = f6-f4;
+	r0 = heap32[(fp+2)];
+	f6 = f5*f0;
+	f7 = f1*f2;
+	f6 = f6-f7;
+	f1 = f1*f3;
+	f0 = f4*f0;
+	r0 = r0 >> 2;
+	f0 = f1-f0;
+	heapFloat[(r0)] = f6;
+	f1 = f4*f2;
+	f2 = f5*f3;
+	f1 = f1-f2;
+	heapFloat[(r0+1)] = f0;
+	heapFloat[(r0+2)] = f1;
+	f2 = f6*f6;
+	f0 = f0*f0;
+	heap32[(r0+3)] = 0;
+	f0 = f2+f0;
+	f1 = f1*f1;
+	f0 = f0+f1;
+	heapFloat[(g0)] = f0;
+	sqrtf(i7);
+	f1 =                         1;
+	f0 = f1/f_g0;
+	f1 = heapFloat[(r0)];
+	f1 = f1*f0;
+	heapFloat[(r0)] = f1;
+	f2 = heapFloat[(r0+1)];
+	f2 = f2*f0;
+	heapFloat[(r0+1)] = f2;
+	f3 = heapFloat[(r0+2)];
+	f0 = f3*f0;
+	heapFloat[(r0+2)] = f0;
+	r1 = heap32[(fp+1)];
+if(!(r1 ==0)) //_LBB285_2
+{
+	f1 = -f1;
+	f2 = -f2;
+	heapFloat[(r0)] = f1;
+	f0 = -f0;
+	heapFloat[(r0+1)] = f2;
+	heapFloat[(r0+2)] = f0;
+}
+	return;
+}
+
+function _ZNK15btTriangleShape8isInsideERK9btVector3f(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+	var r6;
+	var f0;
+	var f1;
+	var f2;
+	var f3;
+	var f4;
+	var f5;
+	var f6;
+	var f7;
+	var f8;
+	var f9;
+	var f10;
+	var f11;
+	var f12;
+	var f13;
+var __label__ = 0;
+	i7 = sp + -48;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = r0 >> 2;
+	f0 = heapFloat[(r1+19)];
+	f1 = heapFloat[(r1+15)];
+	f2 = heapFloat[(r1+23)];
+	f3 = heapFloat[(r1+17)];
+	f4 = heapFloat[(r1+13)];
+	f5 = heapFloat[(r1+21)];
+	f6 = heapFloat[(r1+22)];
+	f7 = heapFloat[(r1+14)];
+	f8 = heapFloat[(r1+18)];
+	f0 = f0-f1;
+	f6 = f6-f7;
+	f3 = f3-f4;
+	f1 = f2-f1;
+	f2 = f8-f7;
+	f4 = f5-f4;
+	f5 = f2*f1;
+	f7 = f0*f6;
+	f0 = f0*f4;
+	f1 = f3*f1;
+	f5 = f5-f7;
+	f0 = f0-f1;
+	f1 = f3*f6;
+	f2 = f2*f4;
+	f1 = f1-f2;
+	f2 = f5*f5;
+	f3 = f0*f0;
+	f2 = f2+f3;
+	f3 = f1*f1;
+	f2 = f2+f3;
+	heapFloat[(g0)] = f2;
+	sqrtf(i7);
+	r2 = heap32[(fp+1)];
+	f3 =                         1;
+	r2 = r2 >> 2;
+	f2 = f3/f_g0;
+	f4 = f5*f2;
+	f5 = heapFloat[(r2)];
+	f6 = heapFloat[(r1+13)];
+	f0 = f0*f2;
+	f7 = heapFloat[(r2+1)];
+	f8 = heapFloat[(r1+14)];
+	f1 = f1*f2;
+	f2 = heapFloat[(r2+2)];
+	f9 = heapFloat[(r1+15)];
+	f5 = f5*f4;
+	f7 = f7*f0;
+	f6 = f6*f4;
+	f8 = f8*f0;
+	f5 = f5+f7;
+	f2 = f2*f1;
+	f6 = f6+f8;
+	f7 = f9*f1;
+	f8 = heapFloat[(fp+2)];
+	f2 = f5+f2;
+	f5 = f6+f7;
+	f2 = f2-f5;
+	f5 = -f8;
+_1: do {
+	if(f2 <f5) //_LBB286_2
+{
+__label__ = 2;
+}
+else{
+	if(f2 <=f8) //_LBB286_3
+{
+	r3 = 0;
+_4: while(true){
+	if(r3 <3) //_LBB286_4
+{
+	r4 = heap32[(r1)];
+	r4 = r4 >> 2;
+	r4 = heap32[(r4+23)];
+	r5 = sp + -32;
+	r6 = sp + -16;
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r3;
+	heap32[(g0+2)] = r6;
+	heap32[(g0+3)] = r5;
+	__FUNCTION_TABLE__[(r4)>>2](i7);
+	r4 = r5 >> 2;
+	r5 = r6 >> 2;
+	f2 = heapFloat[(r4+2)];
+	f6 = heapFloat[(r5+2)];
+	f7 = heapFloat[(r4+1)];
+	f8 = heapFloat[(r5+1)];
+	f9 = heapFloat[(fp+-8)];
+	f10 = heapFloat[(fp+-4)];
+	f2 = f2-f6;
+	f6 = f9-f10;
+	f7 = f7-f8;
+	f8 = f7*f1;
+	f9 = f2*f0;
+	f2 = f2*f4;
+	f10 = f6*f1;
+	f8 = f8-f9;
+	f2 = f2-f10;
+	f6 = f6*f0;
+	f7 = f7*f4;
+	f6 = f6-f7;
+	f7 = f8*f8;
+	f9 = f2*f2;
+	f7 = f7+f9;
+	f9 = f6*f6;
+	f7 = f7+f9;
+	heapFloat[(g0)] = f7;
+	sqrtf(i7);
+	f7 = f3/f_g0;
+	f9 = heapFloat[(r2)];
+	f8 = f8*f7;
+	f10 = heapFloat[(fp+-4)];
+	f11 = heapFloat[(r2+1)];
+	f2 = f2*f7;
+	f12 = heapFloat[(r5+1)];
+	f9 = f9*f8;
+	f11 = f11*f2;
+	f13 = heapFloat[(r2+2)];
+	f6 = f6*f7;
+	f7 = heapFloat[(r5+2)];
+	f8 = f10*f8;
+	f2 = f12*f2;
+	f9 = f9+f11;
+	f10 = f13*f6;
+	f2 = f8+f2;
+	f6 = f7*f6;
+	f7 = f9+f10;
+	f2 = f2+f6;
+	f2 = f7-f2;
+	if(f2 <f5) //_LBB286_2
+{
+__label__ = 2;
+break _1;
+}
+else{
+	r3 = (r3 + 1)|0;
+}
+}
+else{
+break _4;
+}
+}
+	r0 = 1;
+__label__ = 8;
+}
+else{
+__label__ = 2;
+}
+}
+} while(0);
+if (__label__ == 2){
+	r0 = 0;
+}
+	r0 = r0 & 255;
+	r_g0 = r0;
+	return;
+}
+
+function _ZNK15btTriangleShape16getPlaneEquationEiR9btVector3S1_(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var f0;
+	var f1;
+	var f2;
+	var f3;
+	var f4;
+	var f5;
+	var f6;
+	var f7;
+var __label__ = 0;
+	i7 = sp + -8;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r0 = r0 >> 2;
+	f0 = heapFloat[(r0+23)];
+	f1 = heapFloat[(r0+15)];
+	f2 = heapFloat[(r0+19)];
+	f3 = heapFloat[(r0+22)];
+	f4 = heapFloat[(r0+14)];
+	f5 = heapFloat[(r0+18)];
+	f5 = f5-f4;
+	f0 = f0-f1;
+	f1 = f2-f1;
+	f2 = f3-f4;
+	f3 = heapFloat[(r0+21)];
+	f4 = heapFloat[(r0+13)];
+	f6 = heapFloat[(r0+17)];
+	f3 = f3-f4;
+	f4 = f6-f4;
+	r1 = heap32[(fp+2)];
+	f6 = f5*f0;
+	f7 = f1*f2;
+	f6 = f6-f7;
+	r1 = r1 >> 2;
+	f1 = f1*f3;
+	f0 = f4*f0;
+	f0 = f1-f0;
+	heapFloat[(r1)] = f6;
+	f1 = f4*f2;
+	f2 = f5*f3;
+	f1 = f1-f2;
+	heapFloat[(r1+1)] = f0;
+	heapFloat[(r1+2)] = f1;
+	f2 = f6*f6;
+	f0 = f0*f0;
+	heap32[(r1+3)] = 0;
+	f0 = f2+f0;
+	f1 = f1*f1;
+	f0 = f0+f1;
+	heapFloat[(g0)] = f0;
+	sqrtf(i7);
+	f1 =                         1;
+	f0 = f1/f_g0;
+	f1 = heapFloat[(r1)];
+	f1 = f1*f0;
+	heapFloat[(r1)] = f1;
+	f1 = heapFloat[(r1+1)];
+	f1 = f1*f0;
+	heapFloat[(r1+1)] = f1;
+	f1 = heapFloat[(r1+2)];
+	r2 = heap32[(fp+3)];
+	f0 = f1*f0;
+	r2 = r2 >> 2;
+	heapFloat[(r1+2)] = f0;
+	heap32[(r2)] = heap32[(r0+13)];
+	heap32[(r2+1)] = heap32[(r0+14)];
+	heap32[(r2+2)] = heap32[(r0+15)];
+	heap32[(r2+3)] = heap32[(r0+16)];
+	return;
+}
+
+function _ZN33btConvexConcaveCollisionAlgorithm21calculateTimeOfImpactEP17btCollisionObjectS1_RK16btDispatcherInfoP16btManifoldResult(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+	var r6;
+	var r7;
+	var f0;
+	var f1;
+	var f2;
+	var f3;
+	var f4;
+	var f5;
+	var f6;
+	var f7;
+	var f8;
+	var f9;
+	var f10;
+	var f11;
+	var f12;
+	var f13;
+	var f14;
+	var f15;
+	var f16;
+	var f17;
+	var f18;
+	var f19;
+	var f20;
+	var f21;
+	var f22;
+	var f23;
+	var f24;
+	var f25;
+	var f26;
+	var f27;
+	var f28;
+	var f29;
+	var f30;
+var __label__ = 0;
+	i7 = sp + -440;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r0 = heapU8[r0+8];
+	r1 = heap32[(fp+1)];
+	r2 = heap32[(fp+2)];
+	r3 = r0 == 0 ? r1 : r2;
+	r3 = r3 >> 2;
+	f0 = heapFloat[(r3+30)];
+	f1 = heapFloat[(r3+14)];
+	f2 = heapFloat[(r3+29)];
+	f3 = heapFloat[(r3+13)];
+	f4 = f2-f3;
+	f5 = f0-f1;
+	f6 = heapFloat[(r3+31)];
+	f7 = heapFloat[(r3+15)];
+	f8 = f6-f7;
+	f4 = f4*f4;
+	f5 = f5*f5;
+	f9 = heapFloat[(r3+62)];
+	f4 = f4+f5;
+	f5 = f8*f8;
+	f8 = f9*f9;
+	f4 = f4+f5;
+if(!(f8 >f4)) //_LBB288_23
+{
+	r0 = r0 == 0 ? r2 : r1;
+	r0 = r0 >> 2;
+	r1 = heap32[(r0+48)];
+	r2 = r1 >> 2;
+	r4 = heap32[(r2+1)];
+	r4 = (r4 + -21)|0;
+if(!(uint(r4) >uint(8))) //_LBB288_23
+{
+	f4 = heapFloat[(r0+13)];
+	f5 = heapFloat[(r0+3)];
+	f8 = heapFloat[(r0+2)];
+	f4 = -f4;
+	f9 = heapFloat[(r0+1)];
+	f10 = heapFloat[(r0+7)];
+	f11 = heapFloat[(r0+6)];
+	f12 = heapFloat[(r0+14)];
+	f13 = heapFloat[(r0+5)];
+	f14 = heapFloat[(r3+3)];
+	f15 = heapFloat[(r3+7)];
+	f16 = heapFloat[(r3+2)];
+	f17 = heapFloat[(r3+6)];
+	f18 = heapFloat[(r3+1)];
+	f19 = heapFloat[(r3+5)];
+	f20 = heapFloat[(r3+19)];
+	heapFloat[(fp+-63)] = f20;
+	f21 = heapFloat[(r3+23)];
+	f22 = heapFloat[(r3+18)];
+	f23 = heapFloat[(r3+22)];
+	f24 = heapFloat[(r3+17)];
+	f25 = heapFloat[(r3+21)];
+	f26 = f5*f3;
+	heapFloat[(fp+-65)] = f26;
+	f27 = f10*f1;
+	f28 = f8*f3;
+	heapFloat[(fp+-66)] = f28;
+	f29 = f11*f1;
+	f3 = f9*f3;
+	heapFloat[(fp+-64)] = f3;
+	f1 = f13*f1;
+	f30 = heapFloat[(r0+11)];
+	f3 = heapFloat[(r0+10)];
+	f20 = heapFloat[(r0+15)];
+	f26 = heapFloat[(r0+9)];
+	f28 = f5*f2;
+	heapFloat[(fp+-67)] = f28;
+	f28 = f10*f0;
+	heapFloat[(fp+-69)] = f28;
+	f28 = f5*f4;
+	heapFloat[(fp+-68)] = f28;
+	f28 = f10*f12;
+	heapFloat[(fp+-71)] = f28;
+	f28 = f8*f2;
+	heapFloat[(fp+-70)] = f28;
+	f28 = f11*f0;
+	heapFloat[(fp+-73)] = f28;
+	f28 = f8*f4;
+	heapFloat[(fp+-72)] = f28;
+	f28 = f11*f12;
+	heapFloat[(fp+-78)] = f28;
+	f2 = f9*f2;
+	heapFloat[(fp+-74)] = f2;
+	f0 = f13*f0;
+	heapFloat[(fp+-76)] = f0;
+	f4 = f9*f4;
+	heapFloat[(fp+-75)] = f4;
+	f12 = f13*f12;
+	heapFloat[(fp+-77)] = f12;
+	f0 = heapFloat[(r3+11)];
+	f2 = heapFloat[(r3+10)];
+	f4 = heapFloat[(r3+9)];
+	f12 = heapFloat[(r3+27)];
+	f28 = heapFloat[(r3+26)];
+	heapFloat[(fp+-62)] = f28;
+	f28 = heapFloat[(r3+25)];
+	heapFloat[(fp+-61)] = f28;
+	f28 = heapFloat[(fp+-65)];
+	f27 = f28+f27;
+	heapFloat[(fp+-65)] = f27;
+	f27 = f30*f7;
+	heapFloat[(fp+-99)] = f27;
+	f28 = heapFloat[(fp+-66)];
+	f28 = f28+f29;
+	heapFloat[(fp+-66)] = f28;
+	f29 = f3*f7;
+	heapFloat[(fp+-98)] = f29;
+	f27 = heapFloat[(fp+-64)];
+	f1 = f27+f1;
+	heapFloat[(fp+-80)] = f1;
+	f7 = f26*f7;
+	heapFloat[(fp+-97)] = f7;
+	f27 = f14*f5;
+	heapFloat[(fp+-64)] = f27;
+	f1 = f15*f10;
+	heapFloat[(fp+-82)] = f1;
+	f1 = f16*f5;
+	heapFloat[(fp+-79)] = f1;
+	f1 = f17*f10;
+	heapFloat[(fp+-84)] = f1;
+	f1 = f18*f5;
+	heapFloat[(fp+-81)] = f1;
+	f1 = f19*f10;
+	heapFloat[(fp+-86)] = f1;
+	f1 = f14*f8;
+	heapFloat[(fp+-83)] = f1;
+	f1 = f15*f11;
+	heapFloat[(fp+-88)] = f1;
+	f1 = f16*f8;
+	heapFloat[(fp+-85)] = f1;
+	f1 = f17*f11;
+	heapFloat[(fp+-92)] = f1;
+	f1 = f18*f8;
+	heapFloat[(fp+-87)] = f1;
+	f1 = f19*f11;
+	heapFloat[(fp+-93)] = f1;
+	f14 = f14*f9;
+	heapFloat[(fp+-89)] = f14;
+	f15 = f15*f13;
+	heapFloat[(fp+-94)] = f15;
+	f16 = f16*f9;
+	heapFloat[(fp+-90)] = f16;
+	f17 = f17*f13;
+	heapFloat[(fp+-95)] = f17;
+	f18 = f18*f9;
+	heapFloat[(fp+-91)] = f18;
+	f19 = f19*f13;
+	heapFloat[(fp+-96)] = f19;
+	f1 = heapFloat[(fp+-67)];
+	f7 = heapFloat[(fp+-69)];
+	f1 = f1+f7;
+	f7 = f30*f6;
+	f14 = heapFloat[(fp+-68)];
+	f15 = heapFloat[(fp+-71)];
+	f14 = f14-f15;
+	f15 = f30*f20;
+	f16 = heapFloat[(fp+-70)];
+	f17 = heapFloat[(fp+-73)];
+	f16 = f16+f17;
+	f17 = f3*f6;
+	f18 = heapFloat[(fp+-72)];
+	f19 = heapFloat[(fp+-78)];
+	f18 = f18-f19;
+	f19 = f3*f20;
+	f27 = heapFloat[(fp+-74)];
+	f28 = heapFloat[(fp+-76)];
+	f27 = f27+f28;
+	f6 = f26*f6;
+	f28 = heapFloat[(fp+-75)];
+	f29 = heapFloat[(fp+-77)];
+	f28 = f28-f29;
+	f20 = f26*f20;
+	f29 = heapFloat[(fp+-63)];
+	f29 = f29*f5;
+	heapFloat[(fp+-67)] = f29;
+	f29 = f21*f10;
+	heapFloat[(fp+-69)] = f29;
+	f29 = f22*f5;
+	heapFloat[(fp+-68)] = f29;
+	f29 = f23*f10;
+	f5 = f24*f5;
+	heapFloat[(fp+-70)] = f5;
+	f5 = f25*f10;
+	heapFloat[(fp+-101)] = f5;
+	f10 = heapFloat[(fp+-63)];
+	f5 = f10*f8;
+	heapFloat[(fp+-71)] = f5;
+	f5 = f21*f11;
+	heapFloat[(fp+-73)] = f5;
+	f5 = f22*f8;
+	heapFloat[(fp+-72)] = f5;
+	f5 = f23*f11;
+	heapFloat[(fp+-100)] = f5;
+	f8 = f24*f8;
+	heapFloat[(fp+-74)] = f8;
+	f5 = f25*f11;
+	heapFloat[(fp+-102)] = f5;
+	f8 = f10*f9;
+	heapFloat[(fp+-75)] = f8;
+	f5 = f21*f13;
+	heapFloat[(fp+-103)] = f5;
+	f8 = f22*f9;
+	heapFloat[(fp+-78)] = f8;
+	f5 = f23*f13;
+	heapFloat[(fp+-104)] = f5;
+	f8 = f24*f9;
+	heapFloat[(fp+-76)] = f8;
+	f5 = f25*f13;
+	heapFloat[(fp+-105)] = f5;
+	f8 = heapFloat[(fp+-65)];
+	f9 = heapFloat[(fp+-99)];
+	f8 = f8+f9;
+	heapFloat[(fp+-77)] = f8;
+	f9 = f14-f15;
+	f1 = f1+f7;
+	heapFloat[(fp+-63)] = f1;
+	f7 = heapFloat[(fp+-66)];
+	f10 = heapFloat[(fp+-98)];
+	f7 = f7+f10;
+	heapFloat[(fp+-98)] = f7;
+	f10 = f18-f19;
+	f11 = f16+f17;
+	heapFloat[(fp+-65)] = f11;
+	f13 = heapFloat[(fp+-80)];
+	f14 = heapFloat[(fp+-97)];
+	f1 = f13+f14;
+	heapFloat[(fp+-80)] = f1;
+	f5 = f28-f20;
+	f6 = f27+f6;
+	heapFloat[(fp+-66)] = f6;
+	f7 = heapFloat[(fp+-64)];
+	f8 = heapFloat[(fp+-82)];
+	f1 = f7+f8;
+	heapFloat[(fp+-64)] = f1;
+	f1 = f0*f30;
+	heapFloat[(fp+-82)] = f1;
+	f6 = heapFloat[(fp+-79)];
+	f7 = heapFloat[(fp+-84)];
+	f1 = f6+f7;
+	heapFloat[(fp+-79)] = f1;
+	f1 = f2*f30;
+	heapFloat[(fp+-84)] = f1;
+	f6 = heapFloat[(fp+-81)];
+	f7 = heapFloat[(fp+-86)];
+	f1 = f6+f7;
+	heapFloat[(fp+-81)] = f1;
+	f1 = f4*f30;
+	heapFloat[(fp+-86)] = f1;
+	f6 = heapFloat[(fp+-83)];
+	f7 = heapFloat[(fp+-88)];
+	f1 = f6+f7;
+	heapFloat[(fp+-83)] = f1;
+	f1 = f0*f3;
+	heapFloat[(fp+-88)] = f1;
+	f6 = heapFloat[(fp+-85)];
+	f7 = heapFloat[(fp+-92)];
+	f1 = f6+f7;
+	heapFloat[(fp+-85)] = f1;
+	f1 = f2*f3;
+	heapFloat[(fp+-92)] = f1;
+	f6 = heapFloat[(fp+-87)];
+	f7 = heapFloat[(fp+-93)];
+	f1 = f6+f7;
+	heapFloat[(fp+-87)] = f1;
+	f1 = f4*f3;
+	heapFloat[(fp+-93)] = f1;
+	f6 = heapFloat[(fp+-89)];
+	f7 = heapFloat[(fp+-94)];
+	f1 = f6+f7;
+	heapFloat[(fp+-89)] = f1;
+	f0 = f0*f26;
+	f6 = heapFloat[(fp+-90)];
+	f7 = heapFloat[(fp+-95)];
+	f6 = f6+f7;
+	f2 = f2*f26;
+	f7 = heapFloat[(fp+-91)];
+	f8 = heapFloat[(fp+-96)];
+	f7 = f7+f8;
+	f4 = f4*f26;
+	f8 = heapFloat[(fp+-67)];
+	f11 = heapFloat[(fp+-69)];
+	f8 = f8+f11;
+	f11 = f12*f30;
+	f13 = heapFloat[(fp+-68)];
+	f13 = f13+f29;
+	f28 = heapFloat[(fp+-62)];
+	f14 = f28*f30;
+	f15 = heapFloat[(fp+-70)];
+	f16 = heapFloat[(fp+-101)];
+	f15 = f15+f16;
+	f28 = heapFloat[(fp+-61)];
+	f16 = f28*f30;
+	f17 = heapFloat[(fp+-71)];
+	f18 = heapFloat[(fp+-73)];
+	f17 = f17+f18;
+	f18 = f12*f3;
+	f19 = heapFloat[(fp+-72)];
+	f20 = heapFloat[(fp+-100)];
+	f19 = f19+f20;
+	f28 = heapFloat[(fp+-62)];
+	f20 = f28*f3;
+	f21 = heapFloat[(fp+-74)];
+	f22 = heapFloat[(fp+-102)];
+	f21 = f21+f22;
+	f28 = heapFloat[(fp+-61)];
+	f3 = f28*f3;
+	f22 = heapFloat[(fp+-75)];
+	f23 = heapFloat[(fp+-103)];
+	f22 = f22+f23;
+	f12 = f12*f26;
+	f23 = heapFloat[(fp+-78)];
+	f24 = heapFloat[(fp+-104)];
+	f23 = f23+f24;
+	f28 = heapFloat[(fp+-62)];
+	f24 = f28*f26;
+	f25 = heapFloat[(fp+-76)];
+	f27 = heapFloat[(fp+-105)];
+	f25 = f25+f27;
+	f28 = heapFloat[(fp+-61)];
+	f26 = f28*f26;
+	f27 = heapFloat[(fp+-77)];
+	f27 = f27+f9;
+	f28 = heapFloat[(fp+-98)];
+	f28 = f28+f10;
+	f29 = heapFloat[(fp+-80)];
+	f29 = f29+f5;
+	f30 = heapFloat[(fp+-64)];
+	f1 = heapFloat[(fp+-82)];
+	f1 = f30+f1;
+	heapFloat[(fp+-61)] = f1;
+	f1 = heapFloat[(fp+-79)];
+	f30 = heapFloat[(fp+-84)];
+	f1 = f1+f30;
+	heapFloat[(fp+-62)] = f1;
+	f1 = heapFloat[(fp+-81)];
+	f30 = heapFloat[(fp+-86)];
+	f1 = f1+f30;
+	heapFloat[(fp+-64)] = f1;
+	f1 = heapFloat[(fp+-83)];
+	f30 = heapFloat[(fp+-88)];
+	f1 = f1+f30;
+	heapFloat[(fp+-67)] = f1;
+	f1 = heapFloat[(fp+-85)];
+	f30 = heapFloat[(fp+-92)];
+	f1 = f1+f30;
+	heapFloat[(fp+-68)] = f1;
+	f1 = heapFloat[(fp+-87)];
+	f30 = heapFloat[(fp+-93)];
+	f1 = f1+f30;
+	f30 = heapFloat[(fp+-89)];
+	f0 = f30+f0;
+	f2 = f6+f2;
+	f4 = f7+f4;
+	f6 = heapFloat[(fp+-63)];
+	f6 = f6+f9;
+	f7 = heapFloat[(fp+-65)];
+	f7 = f7+f10;
+	f9 = heapFloat[(fp+-66)];
+	f5 = f9+f5;
+	f8 = f8+f11;
+	f9 = f13+f14;
+	f10 = f15+f16;
+	f11 = f17+f18;
+	f13 = f19+f20;
+	f3 = f21+f3;
+	f12 = f22+f12;
+	f14 = f23+f24;
+	f15 = f25+f26;
+	r0 = sp + -16;
+	r4 = r0 >> 2;
+	heapFloat[(fp+-4)] = f29;
+	heapFloat[(r4+1)] = f28;
+	heapFloat[(r4+2)] = f27;
+	heap32[(r4+3)] = 0;
+	if(f5 <f29) //_LBB288_4
+{
+	heapFloat[(fp+-4)] = f5;
+	f16 = f5;
+}
+else{
+	f16 = f29;
+}
+	if(f7 <f28) //_LBB288_7
+{
+	heapFloat[(r4+1)] = f7;
+	f17 = f7;
+}
+else{
+	f17 = f28;
+}
+	if(f6 <f27) //_LBB288_10
+{
+	heapFloat[(r4+2)] = f6;
+	f18 = f6;
+}
+else{
+	f18 = f27;
+}
+	r5 = sp + -32;
+	r6 = r5 >> 2;
+	heapFloat[(fp+-8)] = f29;
+	heapFloat[(r6+1)] = f28;
+	heapFloat[(r6+2)] = f27;
+	heap32[(r6+3)] = 0;
+	if(f29 <f5) //_LBB288_13
+{
+	heapFloat[(fp+-8)] = f5;
+	f19 = f5;
+}
+else{
+	f19 = f29;
+}
+	if(f28 <f7) //_LBB288_16
+{
+	heapFloat[(r6+1)] = f7;
+	f20 = f7;
+}
+else{
+	f20 = f28;
+}
+	if(f27 <f6) //_LBB288_19
+{
+	heapFloat[(r6+2)] = f6;
+	f21 = f6;
+}
+else{
+	f21 = f27;
+}
+	f22 = heapFloat[(r3+61)];
+	f16 = f16-f22;
+	f17 = f17-f22;
+	heapFloat[(fp+-4)] = f16;
+	f16 = f18-f22;
+	heapFloat[(r4+1)] = f17;
+	f17 = f19+f22;
+	heapFloat[(r4+2)] = f16;
+	f16 = f20+f22;
+	heapFloat[(fp+-8)] = f17;
+	r4 = _ZTVZN33btConvexConcaveCollisionAlgorithm21calculateTimeOfImpactEP17btCollisionObjectS1_RK16btDispatcherInfoP16btManifoldResultE31LocalTriangleSphereCastCallback;
+	f17 = f21+f22;
+	heapFloat[(r6+1)] = f16;
+	r7 = sp + -240;
+	r4 = (r4 + 8)|0;
+	heapFloat[(r6+2)] = f17;
+	r6 = r7 >> 2;
+	heap32[(fp+-60)] = r4;
+	heapFloat[(r6+1)] = f4;
+	heapFloat[(r6+2)] = f2;
+	heapFloat[(r6+3)] = f0;
+	heap32[(r6+4)] = 0;
+	heapFloat[(r6+5)] = f1;
+	f0 = heapFloat[(fp+-68)];
+	heapFloat[(r6+6)] = f0;
+	f0 = heapFloat[(fp+-67)];
+	heapFloat[(r6+7)] = f0;
+	heap32[(r6+8)] = 0;
+	f0 = heapFloat[(fp+-64)];
+	heapFloat[(r6+9)] = f0;
+	f0 = heapFloat[(fp+-62)];
+	heapFloat[(r6+10)] = f0;
+	f0 = heapFloat[(fp+-61)];
+	heapFloat[(r6+11)] = f0;
+	heap32[(r6+12)] = 0;
+	heapFloat[(r6+13)] = f29;
+	heapFloat[(r6+14)] = f28;
+	heapFloat[(r6+15)] = f27;
+	heap32[(r6+16)] = 0;
+	heapFloat[(r6+17)] = f15;
+	heapFloat[(r6+18)] = f14;
+	heapFloat[(r6+19)] = f12;
+	heap32[(r6+20)] = 0;
+	heapFloat[(r6+21)] = f3;
+	heapFloat[(r6+22)] = f13;
+	heapFloat[(r6+23)] = f11;
+	heap32[(r6+24)] = 0;
+	heapFloat[(r6+25)] = f10;
+	heapFloat[(r6+26)] = f9;
+	heapFloat[(r6+27)] = f8;
+	heap32[(r6+28)] = 0;
+	heapFloat[(r6+29)] = f5;
+	heapFloat[(r6+30)] = f7;
+	heapFloat[(r6+31)] = f6;
+	heap32[(r6+32)] = 0;
+	heapFloat[(r6+49)] = f22;
+	heap32[(r6+50)] = heap32[(r3+60)];
+if(!(r1 ==0)) //_LBB288_23
+{
+	r2 = heap32[(r2)];
+	r2 = r2 >> 2;
+	r2 = heap32[(r2+15)];
+	heap32[(g0)] = r1;
+	heap32[(g0+1)] = r7;
+	heap32[(g0+2)] = r0;
+	heap32[(g0+3)] = r5;
+	__FUNCTION_TABLE__[(r2)>>2](i7);
+	f0 = heapFloat[(r6+50)];
+	f1 = heapFloat[(r3+60)];
+if(!(f0 >=f1)) //_LBB288_23
+{
+	heapFloat[(r3+60)] = f0;
+	f_g0 = f0;
+	return;
+}
+}
+}
+}
+	f0 =                         1;
+	f_g0 = f0;
+	return;
+}
+
+function _ZN33btConvexConcaveCollisionAlgorithm16processCollisionEP17btCollisionObjectS1_RK16btDispatcherInfoP16btManifoldResult(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+	var r6;
+	var r7;
+	var r8;
+	var r9;
+	var r10;
+	var r11;
+	var r12;
+	var f0;
+	var f1;
+	var f2;
+	var f3;
+	var f4;
+	var f5;
+	var f6;
+	var f7;
+	var f8;
+	var f9;
+	var f10;
+	var f11;
+	var f12;
+	var f13;
+	var f14;
+	var f15;
+	var f16;
+	var f17;
+	var f18;
+	var f19;
+	var f20;
+	var f21;
+	var f22;
+	var f23;
+	var f24;
+	var f25;
+	var f26;
+	var f27;
+	var f28;
+	var f29;
+	var f30;
+var __label__ = 0;
+	i7 = sp + -80;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = heapU8[r0+8];
+	r2 = heap32[(fp+2)];
+	r3 = heap32[(fp+1)];
+	r4 = r1 == 0 ? r2 : r3;
+	r5 = r4 >> 2;
+	r5 = heap32[(r5+48)];
+	r6 = r5 >> 2;
+	r7 = heap32[(r6+1)];
+	r7 = (r7 + -21)|0;
+if(!(uint(r7) >uint(8))) //_LBB289_8
+{
+	r1 = r1 == 0 ? r3 : r2;
+	r2 = r1 >> 2;
+	r2 = heap32[(r2+48)];
+	r2 = r2 >> 2;
+	r2 = heap32[(r2+1)];
+if(!(r2 >19)) //_LBB289_8
+{
+	r2 = heap32[(fp+3)];
+	r3 = heap32[(fp+4)];
+	r7 = heap32[(r6)];
+	r7 = r7 >> 2;
+	r7 = heap32[(r7+11)];
+	heap32[(g0)] = r5;
+	r8 = r0 >> 2;
+	__FUNCTION_TABLE__[(r7)>>2](i7);
+	f0 = f_g0;
+	r7 = r3 >> 2;
+	r9 = heap32[(r8+19)];
+	heap32[(r7+1)] = r9;
+	heap32[(r8+16)] = r2;
+	heapFloat[(r8+17)] = f0;
+	heap32[(r8+14)] = r3;
+	r2 = heap32[(r8+4)];
+	r9 = heap32[(r8+5)];
+	r9 = r9 >> 2;
+	r2 = r2 >> 2;
+	f1 = heapFloat[(r9+1)];
+	f2 = heapFloat[(r2+1)];
+	f3 = heapFloat[(r9+5)];
+	f4 = heapFloat[(r2+5)];
+	f5 = heapFloat[(r2+2)];
+	f6 = heapFloat[(r2+6)];
+	f7 = f2*f1;
+	f8 = f4*f3;
+	f9 = heapFloat[(r9+9)];
+	f10 = heapFloat[(r2+9)];
+	f11 = heapFloat[(r9+2)];
+	f12 = heapFloat[(r9+6)];
+	f13 = heapFloat[(r9+3)];
+	f14 = heapFloat[(r2+13)];
+	f15 = heapFloat[(r2+3)];
+	f16 = heapFloat[(r9+7)];
+	f17 = heapFloat[(r9+14)];
+	f18 = heapFloat[(r2+14)];
+	f19 = heapFloat[(r2+7)];
+	f20 = heapFloat[(r9+10)];
+	f21 = heapFloat[(r9+15)];
+	f22 = heapFloat[(r9+11)];
+	f23 = heapFloat[(r2+15)];
+	f24 = heapFloat[(r2+11)];
+	f25 = heapFloat[(r2+10)];
+	f26 = heapFloat[(r9+13)];
+	f27 = f5*f1;
+	f28 = f6*f3;
+	f7 = f7+f8;
+	f8 = f10*f9;
+	r9 = sp + -64;
+	f29 = f15*f1;
+	f30 = f19*f3;
+	f27 = f27+f28;
+	f28 = f25*f9;
+	f7 = f7+f8;
+	r10 = r9 >> 2;
+	f8 = f29+f30;
+	f29 = f24*f9;
+	f27 = f27+f28;
+	heapFloat[(fp+-16)] = f7;
+	f7 = f2*f11;
+	f28 = f4*f12;
+	f8 = f8+f29;
+	heapFloat[(r10+1)] = f27;
+	heapFloat[(r10+2)] = f8;
+	f8 = f5*f11;
+	f27 = f6*f12;
+	f7 = f7+f28;
+	f28 = f10*f20;
+	f29 = f15*f11;
+	f30 = f19*f12;
+	f8 = f8+f27;
+	f27 = f25*f20;
+	f7 = f7+f28;
+	heap32[(r10+3)] = 0;
+	f28 = f29+f30;
+	f29 = f24*f20;
+	f8 = f8+f27;
+	heapFloat[(r10+4)] = f7;
+	f2 = f2*f13;
+	f4 = f4*f16;
+	f7 = f28+f29;
+	heapFloat[(r10+5)] = f8;
+	heapFloat[(r10+6)] = f7;
+	f5 = f5*f13;
+	f6 = f6*f16;
+	f2 = f2+f4;
+	f4 = f10*f22;
+	f7 = -f26;
+	f8 = f15*f13;
+	f10 = f19*f16;
+	f5 = f5+f6;
+	f6 = f25*f22;
+	f2 = f2+f4;
+	heap32[(r10+7)] = 0;
+	f4 = f1*f14;
+	f15 = f3*f18;
+	f1 = f1*f7;
+	f3 = f3*f17;
+	f8 = f8+f10;
+	f10 = f24*f22;
+	f5 = f5+f6;
+	heapFloat[(r10+8)] = f2;
+	f2 = f11*f14;
+	f6 = f12*f18;
+	f11 = f11*f7;
+	f12 = f12*f17;
+	f4 = f4+f15;
+	f15 = f9*f23;
+	f1 = f1-f3;
+	f3 = f9*f21;
+	f8 = f8+f10;
+	heapFloat[(r10+9)] = f5;
+	heapFloat[(r10+10)] = f8;
+	f5 = f13*f14;
+	f8 = f16*f18;
+	f7 = f13*f7;
+	f9 = f16*f17;
+	f2 = f2+f6;
+	f6 = f20*f23;
+	f10 = f11-f12;
+	f11 = f20*f21;
+	f4 = f4+f15;
+	f1 = f1-f3;
+	f3 = f5+f8;
+	f5 = f22*f23;
+	f7 = f7-f9;
+	f8 = f22*f21;
+	f2 = f2+f6;
+	f6 = f10-f11;
+	f1 = f4+f1;
+	heap32[(r10+11)] = 0;
+	f3 = f3+f5;
+	f4 = f7-f8;
+	f2 = f2+f6;
+	heapFloat[(r10+12)] = f1;
+	f1 = f3+f4;
+	heapFloat[(r10+13)] = f2;
+	heapFloat[(r10+14)] = f1;
+	heap32[(r10+15)] = 0;
+	r2 = heap32[(r2+48)];
+	r10 = r2 >> 2;
+	r10 = heap32[(r10)];
+	r10 = r10 >> 2;
+	r10 = heap32[(r10+2)];
+	r11 = (r0 + 40)|0;
+	r12 = (r0 + 24)|0;
+	heap32[(g0)] = r2;
+	heap32[(g0+1)] = r9;
+	heap32[(g0+2)] = r12;
+	heap32[(g0+3)] = r11;
+	__FUNCTION_TABLE__[(r10)>>2](i7);
+	f1 = heapFloat[(r8+10)];
+	f1 = f1+f0;
+	heapFloat[(r8+10)] = f1;
+	f1 = heapFloat[(r8+11)];
+	f1 = f1+f0;
+	heapFloat[(r8+11)] = f1;
+	f1 = heapFloat[(r8+12)];
+	f1 = f1+f0;
+	heapFloat[(r8+12)] = f1;
+	f1 = heapFloat[(r8+6)];
+	f1 = f1-f0;
+	heapFloat[(r8+6)] = f1;
+	f1 = heapFloat[(r8+7)];
+	f1 = f1-f0;
+	heapFloat[(r8+7)] = f1;
+	f1 = heapFloat[(r8+8)];
+	f0 = f1-f0;
+	heapFloat[(r8+8)] = f0;
+	r2 = heap32[(r8+19)];
+	r2 = r2 >> 2;
+	heap32[(r2+277)] = r1;
+	heap32[(r2+278)] = r4;
+	r1 = heap32[(r6)];
+	r1 = r1 >> 2;
+	r1 = heap32[(r1+15)];
+	r0 = (r0 + 12)|0;
+	heap32[(g0)] = r5;
+	heap32[(g0+1)] = r0;
+	heap32[(g0+2)] = r12;
+	heap32[(g0+3)] = r11;
+	__FUNCTION_TABLE__[(r1)>>2](i7);
+	r0 = heap32[(r7+1)];
+	if(r0 !=0) //_LBB289_4
+{
+	r1 = r0 >> 2;
+	r2 = heap32[(r1+279)];
+if(!(r2 ==0)) //_LBB289_8
+{
+	r1 = heap32[(r1+277)];
+	r2 = heap32[(r7+34)];
+	if(r1 ==r2) //_LBB289_7
+{
+	r1 = (r3 + 8)|0;
+	r2 = (r3 + 72)|0;
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r1;
+	heap32[(g0+2)] = r2;
+	_ZN20btPersistentManifold20refreshContactPointsERK11btTransformS2_(i7);
+}
+else{
+	r1 = (r3 + 72)|0;
+	r3 = (r3 + 8)|0;
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r1;
+	heap32[(g0+2)] = r3;
+	_ZN20btPersistentManifold20refreshContactPointsERK11btTransformS2_(i7);
+	return;
+}
+}
+}
+else{
+	r0 = _2E_str59;
+	r3 = _2E_str160;
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r3;
+	heap32[(g0+2)] = 101;
+	_assert(i7);
+}
+}
+}
+	return;
+}
+
+function _ZN33btConvexConcaveCollisionAlgorithm22getAllContactManifoldsER20btAlignedObjectArrayIP20btPersistentManifoldE(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+	var r6;
+	var r7;
+	var r8;
+	var r9;
+	var r10;
+	var r11;
+var __label__ = 0;
+	i7 = sp + -8;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r0 = r0 >> 2;
+	r1 = heap32[(r0+19)];
+if(!(r1 ==0)) //_LBB290_22
+{
+	r2 = heap32[(fp+1)];
+	r3 = r2 >> 2;
+	r4 = heap32[(r3+2)];
+	r5 = heap32[(r3+1)];
+	if(r4 ==r5) //_LBB290_3
+{
+	r6 = 1;
+	r7 = r5 << 1;
+	r7 = r5 == 0 ? r6 : r7;
+if(!(r4 >=r7)) //_LBB290_2
+{
+	if(r7 !=0) //_LBB290_6
+{
+	r1 = gNumAlignedAllocs;
+	r1 = r1 >> 2;
+	r4 = heap32[(r1)];
+	r8 = r7 << 2;
+	r4 = (r4 + 1)|0;
+	r8 = r8 | 3;
+	heap32[(r1)] = r4;
+	r1 = (r8 + 16)|0;
+	heap32[(g0)] = r1;
+	malloc(i7);
+	r1 = r_g0;
+	if(r1 !=0) //_LBB290_8
+{
+	r4 = 0;
+	r8 = (r1 + 4)|0;
+	r4 = (r4 - r8)|0;
+	r4 = r4 & 15;
+	r4 = (r1 + r4)|0;
+	r8 = (r4 + 4)|0;
+	r4 = r4 >> 2;
+	heap32[(r4)] = r1;
+	r1 = r8;
+}
+}
+else{
+	r1 = 0;
+}
+	r4 = (r2 + 12)|0;
+	if(r5 <1) //_LBB290_11
+{
+	r8 = r4 >> 2;
+	r9 = heap32[(r8)];
+}
+else{
+	r8 = 0;
+_14: while(true){
+	r9 = r4 >> 2;
+	r9 = heap32[(r9)];
+	r10 = r8 << 2;
+	r11 = (r9 + r10)|0;
+	r11 = r11 >> 2;
+	r10 = (r1 + r10)|0;
+	r11 = heap32[(r11)];
+	r8 = (r8 + 1)|0;
+	r10 = r10 >> 2;
+	heap32[(r10)] = r11;
+if(!(r5 !=r8)) //_LBB290_12
+{
+break _14;
+}
+}
+	r4 = (r2 + 12)|0;
+}
+	if(r9 !=0) //_LBB290_16
+{
+	r8 = heapU8[r2+16];
+	if(r8 !=0) //_LBB290_18
+{
+	r5 = gNumAlignedFree;
+	r5 = r5 >> 2;
+	r8 = heap32[(r5)];
+	r8 = (r8 + 1)|0;
+	r9 = r9 >> 2;
+	heap32[(r5)] = r8;
+	r5 = heap32[(r9+-1)];
+	heap32[(g0)] = r5;
+	free(i7);
+	r5 = heap32[(r3+1)];
+}
+	r8 = r4 >> 2;
+	heap32[(r8)] = 0;
+}
+	r4 = r4 >> 2;
+	heap8[r2+16] = r6;
+	heap32[(r4)] = r1;
+	heap32[(r3+2)] = r7;
+	r1 = heap32[(r0+19)];
+}
+}
+	r0 = r5 << 2;
+	r2 = heap32[(r3+3)];
+	r0 = (r2 + r0)|0;
+	r0 = r0 >> 2;
+	heap32[(r0)] = r1;
+	r0 = heap32[(r3+1)];
+	r0 = (r0 + 1)|0;
+	heap32[(r3+1)] = r0;
+}
+	return;
+}
+
+function _ZN33btConvexConcaveCollisionAlgorithmD0Ev(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+var __label__ = 0;
+	i7 = sp + -8;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = _ZTV33btConvexConcaveCollisionAlgorithm;
+	r2 = _ZTV24btConvexTriangleCallback;
+	r1 = (r1 + 8)|0;
+	r3 = r0 >> 2;
+	r2 = (r2 + 8)|0;
+	heap32[(r3)] = r1;
+	heap32[(r3+3)] = r2;
+	r1 = heap32[(r3+15)];
+	r2 = r1 >> 2;
+	r2 = heap32[(r2)];
+	r2 = r2 >> 2;
+	r2 = heap32[(r2+5)];
+	r4 = heap32[(r3+19)];
+	heap32[(g0)] = r1;
+	heap32[(g0+1)] = r4;
+	__FUNCTION_TABLE__[(r2)>>2](i7);
+	r1 = heap32[(r3+15)];
+	r2 = r1 >> 2;
+	r2 = heap32[(r2)];
+	r2 = r2 >> 2;
+	r2 = heap32[(r2+4)];
+	r4 = heap32[(r3+19)];
+	heap32[(g0)] = r1;
+	heap32[(g0+1)] = r4;
+	r1 = _ZTV18btTriangleCallback;
+	r4 = _ZTV30btActivatingCollisionAlgorithm;
+	r1 = (r1 + 8)|0;
+	__FUNCTION_TABLE__[(r2)>>2](i7);
+	r2 = (r4 + 8)|0;
+	heap32[(r3+3)] = r1;
+	heap32[(r3)] = r2;
+	heap32[(g0)] = r0;
+	_ZdlPv(i7);
+	return;
+}
+
+function _ZN33btConvexConcaveCollisionAlgorithmD1Ev(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+var __label__ = 0;
+	i7 = sp + -8;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = _ZTV33btConvexConcaveCollisionAlgorithm;
+	r2 = _ZTV24btConvexTriangleCallback;
+	r0 = r0 >> 2;
+	r1 = (r1 + 8)|0;
+	r2 = (r2 + 8)|0;
+	heap32[(r0)] = r1;
+	heap32[(r0+3)] = r2;
+	r1 = heap32[(r0+15)];
+	r2 = r1 >> 2;
+	r2 = heap32[(r2)];
+	r2 = r2 >> 2;
+	r2 = heap32[(r2+5)];
+	r3 = heap32[(r0+19)];
+	heap32[(g0)] = r1;
+	heap32[(g0+1)] = r3;
+	__FUNCTION_TABLE__[(r2)>>2](i7);
+	r1 = heap32[(r0+15)];
+	r2 = r1 >> 2;
+	r2 = heap32[(r2)];
+	r2 = r2 >> 2;
+	r2 = heap32[(r2+4)];
+	r3 = heap32[(r0+19)];
+	heap32[(g0)] = r1;
+	heap32[(g0+1)] = r3;
+	r1 = _ZTV18btTriangleCallback;
+	r3 = _ZTV30btActivatingCollisionAlgorithm;
+	r1 = (r1 + 8)|0;
+	__FUNCTION_TABLE__[(r2)>>2](i7);
+	r2 = (r3 + 8)|0;
+	heap32[(r0+3)] = r1;
+	heap32[(r0)] = r2;
+	return;
+}
+
+function _ZN23btConvexConvexAlgorithm10CreateFuncD1Ev(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+var __label__ = 0;
+	i7 = sp + 0;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = _ZTVN23btConvexConvexAlgorithm10CreateFuncE;
+	r0 = r0 >> 2;
+	r1 = (r1 + 8)|0;
+	heap32[(r0)] = r1;
+	return;
+}
+
+function _ZN23btConvexConvexAlgorithm10CreateFuncD0Ev(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+var __label__ = 0;
+	i7 = sp + -8;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = _ZTVN23btConvexConvexAlgorithm10CreateFuncE;
+	r2 = r0 >> 2;
+	r1 = (r1 + 8)|0;
+	heap32[(r2)] = r1;
+	heap32[(g0)] = r0;
+	_ZdlPv(i7);
+	return;
+}
+
+function _ZN23btConvexConvexAlgorithm10CreateFunc24CreateCollisionAlgorithmER36btCollisionAlgorithmConstructionInfoP17btCollisionObjectS4_(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+	var r6;
+	var r7;
+	var r8;
+var __label__ = 0;
+	i7 = sp + -8;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp+1)];
+	r0 = r0 >> 2;
+	r1 = heap32[(r0)];
+	r2 = r1 >> 2;
+	r2 = heap32[(r2)];
+	r2 = r2 >> 2;
+	r2 = heap32[(r2+12)];
+	heap32[(g0)] = r1;
+	heap32[(g0+1)] = 36;
+	r1 = heap32[(fp)];
+	__FUNCTION_TABLE__[(r2)>>2](i7);
+	r1 = r1 >> 2;
+	r3 = _ZTV20btCollisionAlgorithm;
+	r4 = heap32[(r1+5)];
+	r5 = heap32[(r1+4)];
+	r6 = heap32[(r0+1)];
+	r7 = heap32[(r1+2)];
+	r1 = heap32[(r1+3)];
+	r8 = r_g0 >> 2;
+	r3 = (r3 + 8)|0;
+	heap32[(r8)] = r3;
+	r0 = heap32[(r0)];
+	r3 = _ZTV23btConvexConvexAlgorithm;
+	r3 = (r3 + 8)|0;
+	heap32[(r8+1)] = r0;
+	heap32[(r8)] = r3;
+	heap32[(r8+2)] = r1;
+	r0 = 0;
+	heap32[(r8+3)] = r7;
+	heap8[r_g0+16] = r0;
+	heap32[(r8+5)] = r6;
+	heap8[r_g0+24] = r0;
+	heap32[(r8+7)] = r5;
+	heap32[(r8+8)] = r4;
+	return;
+}
+
+function _ZN24btPerturbedContactResultD1Ev(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+var __label__ = 0;
+	i7 = sp + 0;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = _ZTV24btPerturbedContactResult;
+	r0 = r0 >> 2;
+	r1 = (r1 + 8)|0;
+	heap32[(r0)] = r1;
+	return;
+}
+
+function _ZN24btPerturbedContactResultD0Ev(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+var __label__ = 0;
+	i7 = sp + -8;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = _ZTV24btPerturbedContactResult;
+	r2 = r0 >> 2;
+	r1 = (r1 + 8)|0;
+	heap32[(r2)] = r1;
+	heap32[(g0)] = r0;
+	_ZdlPv(i7);
+	return;
+}
+
+function _ZN24btPerturbedContactResult15addContactPointERK9btVector3S2_f(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var f0;
+	var f1;
+	var f2;
+	var f3;
+	var f4;
+	var f5;
+	var f6;
+	var f7;
+	var f8;
+	var f9;
+	var f10;
+	var f11;
+	var f12;
+	var f13;
+	var f14;
+	var f15;
+	var f16;
+	var f17;
+	var f18;
+	var f19;
+	var f20;
+	var f21;
+	var f22;
+	var f23;
+	var f24;
+	var f25;
+	var f26;
+	var f27;
+	var f28;
+	var f29;
+	var f30;
+var __label__ = 0;
+	i7 = sp + -104;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp+1)];
+	r1 = r0 >> 2;
+	r2 = heap32[(fp+2)];
+	r2 = r2 >> 2;
+	f0 = heapFloat[(r1+2)];
+	heapFloat[(fp+-5)] = f0;
+	f1 = heapFloat[(r1+1)];
+	heapFloat[(fp+-6)] = f1;
+	f2 = heapFloat[(fp+3)];
+	f3 = heapFloat[(r1)];
+	heapFloat[(fp+-7)] = f3;
+	f4 = heapFloat[(r2+2)];
+	heapFloat[(fp+-11)] = f4;
+	f0 = f0*f2;
+	f5 = heapFloat[(r2+1)];
+	heapFloat[(fp+-12)] = f5;
+	f1 = f1*f2;
+	f6 = heapFloat[(r2)];
+	heapFloat[(fp+-13)] = f6;
+	f2 = f3*f2;
+	r1 = heap32[(fp)];
+	f0 = f4+f0;
+	heapFloat[(fp+-8)] = f0;
+	f0 = f5+f1;
+	heapFloat[(fp+-9)] = f0;
+	f0 = f6+f2;
+	heapFloat[(fp+-10)] = f0;
+	r2 = heapU8[r1+356];
+	if(r2 ==0) //_LBB298_2
+{
+	r2 = r1 >> 2;
+	f3 = heapFloat[(r2+69)];
+	f3 = -f3;
+	f0 = heapFloat[(r2+57)];
+	f1 = heapFloat[(r2+58)];
+	f2 = heapFloat[(r2+61)];
+	f4 = heapFloat[(r2+70)];
+	f5 = heapFloat[(r2+62)];
+	f6 = heapFloat[(r2+77)];
+	f7 = heapFloat[(r2+78)];
+	f8 = heapFloat[(r2+73)];
+	f9 = heapFloat[(r2+65)];
+	f10 = heapFloat[(r2+74)];
+	f11 = heapFloat[(r2+66)];
+	f12 = heapFloat[(r2+71)];
+	f13 = heapFloat[(r2+59)];
+	f14 = heapFloat[(r2+63)];
+	f15 = f0*f3;
+	f16 = f2*f4;
+	f17 = f1*f3;
+	f18 = f5*f4;
+	f19 = heapFloat[(r2+81)];
+	f20 = heapFloat[(r2+82)];
+	f21 = heapFloat[(r2+79)];
+	f22 = heapFloat[(r2+67)];
+	f23 = heapFloat[(r2+75)];
+	f24 = f0*f6;
+	f25 = f1*f7;
+	f26 = f2*f6;
+	f27 = f5*f7;
+	f28 = f0*f8;
+	heapFloat[(fp+-14)] = f28;
+	f28 = f1*f10;
+	heapFloat[(fp+-15)] = f28;
+	f29 = f2*f8;
+	f28 = f5*f10;
+	f15 = f15-f16;
+	f16 = f9*f12;
+	f17 = f17-f18;
+	f18 = f11*f12;
+	f3 = f13*f3;
+	heapFloat[(fp+-16)] = f3;
+	f3 = f14*f4;
+	heapFloat[(fp+-20)] = f3;
+	f4 = f15-f16;
+	f15 = f17-f18;
+	f16 = heapFloat[(r2+83)];
+	f0 = f0*f19;
+	f1 = f1*f20;
+	f2 = f2*f19;
+	f5 = f5*f20;
+	f17 = f24+f25;
+	heapFloat[(fp+-17)] = f17;
+	f3 = f13*f21;
+	heapFloat[(fp+-21)] = f3;
+	f17 = f26+f27;
+	heapFloat[(fp+-18)] = f17;
+	f18 = f14*f21;
+	f24 = f9*f6;
+	heapFloat[(fp+-19)] = f24;
+	f25 = f11*f7;
+	f26 = heapFloat[(fp+-14)];
+	f27 = heapFloat[(fp+-15)];
+	f26 = f26+f27;
+	f27 = f13*f23;
+	f28 = f29+f28;
+	f29 = f14*f23;
+	f30 = f9*f8;
+	f3 = f11*f10;
+	f17 = heapFloat[(fp+-16)];
+	f24 = heapFloat[(fp+-20)];
+	f17 = f17-f24;
+	f12 = f22*f12;
+	f12 = f17-f12;
+	f0 = f0+f1;
+	f1 = f13*f16;
+	f2 = f2+f5;
+	f5 = f14*f16;
+	f9 = f9*f19;
+	f11 = f11*f20;
+	f17 = heapFloat[(fp+-17)];
+	f13 = heapFloat[(fp+-21)];
+	f13 = f17+f13;
+	f14 = f26+f27;
+	f17 = heapFloat[(fp+-18)];
+	f17 = f17+f18;
+	f18 = f28+f29;
+	f24 = heapFloat[(fp+-19)];
+	f24 = f24+f25;
+	f25 = f22*f21;
+	f6 = f6*f4;
+	f7 = f7*f15;
+	f3 = f30+f3;
+	f26 = f22*f23;
+	f8 = f8*f4;
+	f10 = f10*f15;
+	f0 = f0+f1;
+	f1 = f2+f5;
+	f2 = f9+f11;
+	f5 = f22*f16;
+	f4 = f19*f4;
+	f9 = f20*f15;
+	f11 = heapFloat[(fp+-13)];
+	f13 = f13*f11;
+	f15 = heapFloat[(fp+-12)];
+	f17 = f17*f15;
+	f19 = f24+f25;
+	f3 = f3+f26;
+	f6 = f6+f7;
+	f7 = f21*f12;
+	f14 = f14*f11;
+	f18 = f18*f15;
+	f8 = f8+f10;
+	f10 = f23*f12;
+	f2 = f2+f5;
+	f0 = f0*f11;
+	f1 = f1*f15;
+	f4 = f4+f9;
+	f5 = f16*f12;
+	f9 = f13+f17;
+	f11 = heapFloat[(fp+-11)];
+	f12 = f19*f11;
+	f6 = f6+f7;
+	f7 = heapFloat[(r2+86)];
+	f13 = f14+f18;
+	f3 = f3*f11;
+	f8 = f8+f10;
+	f10 = heapFloat[(r2+85)];
+	f14 = heapFloat[(r2+87)];
+	f4 = f4+f5;
+	f0 = f0+f1;
+	f1 = f2*f11;
+	f2 = f9+f12;
+	f5 = f6+f7;
+	f3 = f13+f3;
+	f6 = f8+f10;
+	f3 = f3+f6;
+	f2 = f2+f5;
+	f0 = f0+f1;
+	f1 = f4+f14;
+	r2 = sp + -16;
+	f4 = heapFloat[(fp+-10)];
+	f4 = f4-f3;
+	f5 = heapFloat[(fp+-9)];
+	f5 = f5-f2;
+	f0 = f0+f1;
+	f1 = heapFloat[(fp+-7)];
+	f1 = f4*f1;
+	f4 = heapFloat[(fp+-6)];
+	f4 = f5*f4;
+	f5 = heapFloat[(fp+-8)];
+	f5 = f5-f0;
+	r2 = r2 >> 2;
+	heapFloat[(fp+-4)] = f3;
+	heapFloat[(r2+1)] = f2;
+	f3 = f1+f4;
+	f1 = heapFloat[(fp+-5)];
+	f1 = f5*f1;
+	f3 = f3+f1;
+	heapFloat[(r2+2)] = f0;
+	heap32[(r2+3)] = 0;
+}
+else{
+	r2 = r1 >> 2;
+	f0 = heapFloat[(r2+53)];
+	f0 = -f0;
+	f1 = heapFloat[(r2+41)];
+	f2 = heapFloat[(r2+42)];
+	f3 = heapFloat[(r2+45)];
+	f4 = heapFloat[(r2+54)];
+	f5 = heapFloat[(r2+46)];
+	f6 = heapFloat[(r2+77)];
+	f7 = heapFloat[(r2+78)];
+	f8 = heapFloat[(r2+73)];
+	f9 = heapFloat[(r2+49)];
+	f10 = heapFloat[(r2+74)];
+	f11 = heapFloat[(r2+50)];
+	f12 = heapFloat[(r2+55)];
+	f13 = heapFloat[(r2+43)];
+	f14 = heapFloat[(r2+47)];
+	f15 = f1*f0;
+	f16 = f3*f4;
+	f17 = f2*f0;
+	f18 = f5*f4;
+	f19 = heapFloat[(r2+81)];
+	f20 = heapFloat[(r2+82)];
+	f21 = heapFloat[(r2+79)];
+	f22 = heapFloat[(r2+51)];
+	f23 = heapFloat[(r2+75)];
+	f24 = f1*f8;
+	f25 = f2*f10;
+	f26 = f3*f8;
+	f27 = f5*f10;
+	f28 = f1*f6;
+	heapFloat[(fp+-14)] = f28;
+	f29 = f2*f7;
+	f30 = f3*f6;
+	f28 = f5*f7;
+	f15 = f15-f16;
+	f16 = f9*f12;
+	f17 = f17-f18;
+	f18 = f11*f12;
+	f0 = f13*f0;
+	heapFloat[(fp+-15)] = f0;
+	f0 = f14*f4;
+	heapFloat[(fp+-16)] = f0;
+	f4 = f15-f16;
+	f15 = f17-f18;
+	f16 = heapFloat[(r2+83)];
+	f0 = f24+f25;
+	heapFloat[(fp+-17)] = f0;
+	f17 = f13*f23;
+	f0 = f26+f27;
+	heapFloat[(fp+-18)] = f0;
+	f18 = f14*f23;
+	f24 = f9*f8;
+	f25 = f11*f10;
+	f26 = heapFloat[(fp+-14)];
+	f26 = f26+f29;
+	f27 = f13*f21;
+	f28 = f30+f28;
+	f29 = f14*f21;
+	f30 = f9*f6;
+	f0 = f11*f7;
+	f1 = f1*f19;
+	heapFloat[(fp+-14)] = f1;
+	f2 = f2*f20;
+	f1 = f3*f19;
+	heapFloat[(fp+-19)] = f1;
+	f3 = f5*f20;
+	f5 = heapFloat[(fp+-15)];
+	f1 = heapFloat[(fp+-16)];
+	f1 = f5-f1;
+	f5 = f22*f12;
+	f1 = f1-f5;
+	f5 = heapFloat[(fp+-17)];
+	f5 = f5+f17;
+	f12 = f26+f27;
+	f17 = heapFloat[(fp+-18)];
+	f17 = f17+f18;
+	f18 = f28+f29;
+	f24 = f24+f25;
+	f25 = f22*f23;
+	f8 = f8*f4;
+	f10 = f10*f15;
+	f0 = f30+f0;
+	f26 = f22*f21;
+	f6 = f6*f4;
+	f7 = f7*f15;
+	f27 = heapFloat[(fp+-14)];
+	f2 = f27+f2;
+	f13 = f13*f16;
+	f27 = heapFloat[(fp+-19)];
+	f3 = f27+f3;
+	f14 = f14*f16;
+	f9 = f9*f19;
+	f11 = f11*f20;
+	f2 = f2+f13;
+	f3 = f3+f14;
+	f13 = heapFloat[(fp+-10)];
+	f5 = f5*f13;
+	f14 = heapFloat[(fp+-9)];
+	f17 = f17*f14;
+	f24 = f24+f25;
+	f0 = f0+f26;
+	f8 = f8+f10;
+	f10 = f23*f1;
+	f12 = f12*f13;
+	f18 = f18*f14;
+	f6 = f6+f7;
+	f7 = f21*f1;
+	f9 = f9+f11;
+	f11 = f22*f16;
+	f4 = f19*f4;
+	f15 = f20*f15;
+	f9 = f9+f11;
+	f5 = f5+f17;
+	f11 = heapFloat[(fp+-8)];
+	f17 = f24*f11;
+	f8 = f8+f10;
+	f10 = heapFloat[(r2+85)];
+	f12 = f12+f18;
+	f0 = f0*f11;
+	f6 = f6+f7;
+	f7 = heapFloat[(r2+86)];
+	f2 = f2*f13;
+	f3 = f3*f14;
+	f4 = f4+f15;
+	f1 = f16*f1;
+	f13 = heapFloat[(r2+87)];
+	f1 = f4+f1;
+	f4 = f5+f17;
+	f5 = f8+f10;
+	f0 = f12+f0;
+	f6 = f6+f7;
+	f2 = f2+f3;
+	f3 = f9*f11;
+	f4 = f4+f5;
+	f0 = f0+f6;
+	f2 = f2+f3;
+	f1 = f1+f13;
+	f3 = heapFloat[(fp+-13)];
+	f3 = f4-f3;
+	f5 = heapFloat[(fp+-12)];
+	f5 = f0-f5;
+	f1 = f2+f1;
+	f2 = heapFloat[(fp+-7)];
+	f3 = f3*f2;
+	f6 = heapFloat[(fp+-6)];
+	f5 = f5*f6;
+	f7 = heapFloat[(fp+-11)];
+	f7 = f1-f7;
+	f3 = f3+f5;
+	f5 = heapFloat[(fp+-5)];
+	f7 = f7*f5;
+	f3 = f3+f7;
+	f2 = f2*f3;
+	r2 = sp + -16;
+	f6 = f6*f3;
+	f2 = f4+f2;
+	f4 = f5*f3;
+	r2 = r2 >> 2;
+	f0 = f0+f6;
+	heapFloat[(fp+-4)] = f2;
+	f1 = f1+f4;
+	heapFloat[(r2+1)] = f0;
+	heapFloat[(r2+2)] = f1;
+	heap32[(r2+3)] = 0;
+}
+	r1 = r1 >> 2;
+	r1 = heap32[(r1+40)];
+	r2 = r1 >> 2;
+	r2 = heap32[(r2)];
+	r2 = r2 >> 2;
+	r2 = heap32[(r2+4)];
+	r3 = sp + -16;
+	heap32[(g0)] = r1;
+	heap32[(g0+1)] = r0;
+	heap32[(g0+2)] = r3;
+	heapFloat[(g0+3)] = f3;
+	__FUNCTION_TABLE__[(r2)>>2](i7);
+	return;
+}
+
+function _ZN23btConvexConvexAlgorithm22getAllContactManifoldsER20btAlignedObjectArrayIP20btPersistentManifoldE(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+	var r6;
+	var r7;
+	var r8;
+	var r9;
+	var r10;
+	var r11;
+var __label__ = 0;
+	i7 = sp + -8;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = r0 >> 2;
+	r2 = heap32[(r1+5)];
+if(!(r2 ==0)) //_LBB299_23
+{
+	r0 = heapU8[r0+16];
+if(!(r0 ==0)) //_LBB299_23
+{
+	r0 = heap32[(fp+1)];
+	r3 = r0 >> 2;
+	r4 = heap32[(r3+2)];
+	r5 = heap32[(r3+1)];
+	if(r4 ==r5) //_LBB299_4
+{
+	r6 = 1;
+	r7 = r5 << 1;
+	r7 = r5 == 0 ? r6 : r7;
+if(!(r4 >=r7)) //_LBB299_3
+{
+	if(r7 !=0) //_LBB299_7
+{
+	r2 = gNumAlignedAllocs;
+	r2 = r2 >> 2;
+	r4 = heap32[(r2)];
+	r8 = r7 << 2;
+	r4 = (r4 + 1)|0;
+	r8 = r8 | 3;
+	heap32[(r2)] = r4;
+	r2 = (r8 + 16)|0;
+	heap32[(g0)] = r2;
+	malloc(i7);
+	r2 = r_g0;
+	if(r2 !=0) //_LBB299_9
+{
+	r4 = 0;
+	r8 = (r2 + 4)|0;
+	r4 = (r4 - r8)|0;
+	r4 = r4 & 15;
+	r4 = (r2 + r4)|0;
+	r8 = (r4 + 4)|0;
+	r4 = r4 >> 2;
+	heap32[(r4)] = r2;
+	r2 = r8;
+}
+}
+else{
+	r2 = 0;
+}
+	r4 = (r0 + 12)|0;
+	if(r5 <1) //_LBB299_12
+{
+	r8 = r4 >> 2;
+	r9 = heap32[(r8)];
+}
+else{
+	r8 = 0;
+_15: while(true){
+	r9 = r4 >> 2;
+	r9 = heap32[(r9)];
+	r10 = r8 << 2;
+	r11 = (r9 + r10)|0;
+	r11 = r11 >> 2;
+	r10 = (r2 + r10)|0;
+	r11 = heap32[(r11)];
+	r8 = (r8 + 1)|0;
+	r10 = r10 >> 2;
+	heap32[(r10)] = r11;
+if(!(r5 !=r8)) //_LBB299_13
+{
+break _15;
+}
+}
+	r4 = (r0 + 12)|0;
+}
+	if(r9 !=0) //_LBB299_17
+{
+	r8 = heapU8[r0+16];
+	if(r8 !=0) //_LBB299_19
+{
+	r5 = gNumAlignedFree;
+	r5 = r5 >> 2;
+	r8 = heap32[(r5)];
+	r8 = (r8 + 1)|0;
+	r9 = r9 >> 2;
+	heap32[(r5)] = r8;
+	r5 = heap32[(r9+-1)];
+	heap32[(g0)] = r5;
+	free(i7);
+	r5 = heap32[(r3+1)];
+}
+	r8 = r4 >> 2;
+	heap32[(r8)] = 0;
+}
+	r4 = r4 >> 2;
+	heap8[r0+16] = r6;
+	heap32[(r4)] = r2;
+	heap32[(r3+2)] = r7;
+	r2 = heap32[(r1+5)];
+}
+}
+	r0 = r5 << 2;
+	r1 = heap32[(r3+3)];
+	r0 = (r1 + r0)|0;
+	r0 = r0 >> 2;
+	heap32[(r0)] = r2;
+	r0 = heap32[(r3+1)];
+	r0 = (r0 + 1)|0;
+	heap32[(r3+1)] = r0;
+}
+}
+	return;
+}
+
+function _ZN23btConvexConvexAlgorithm21calculateTimeOfImpactEP17btCollisionObjectS1_RK16btDispatcherInfoP16btManifoldResult(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+	var r6;
+	var r7;
+	var r8;
+	var r9;
+	var r10;
+	var r11;
+	var r12;
+	var r13;
+	var f0;
+	var f1;
+	var f2;
+	var f3;
+	var f4;
+	var f5;
+var __label__ = 0;
+	i7 = sp + -1240;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp+1)];
+	r1 = r0 >> 2;
+	r2 = heap32[(fp+2)];
+	r3 = r2 >> 2;
+	f0 = heapFloat[(r1+29)];
+	f1 = heapFloat[(r1+13)];
+	f2 = heapFloat[(r1+30)];
+	f3 = heapFloat[(r1+14)];
+	f0 = f0-f1;
+	f1 = f2-f3;
+	f2 = heapFloat[(r1+31)];
+	f3 = heapFloat[(r1+15)];
+	f2 = f2-f3;
+	f0 = f0*f0;
+	f1 = f1*f1;
+	f3 = heapFloat[(r1+62)];
+	f0 = f0+f1;
+	f1 = f2*f2;
+	f2 = f3*f3;
+	f0 = f0+f1;
+if(!(f2 <=f0)) //_LBB300_2
+{
+	f0 = heapFloat[(r3+31)];
+	f1 = heapFloat[(r3+15)];
+	f2 = heapFloat[(r3+30)];
+	f3 = heapFloat[(r3+14)];
+	f4 = heapFloat[(r3+29)];
+	f5 = heapFloat[(r3+13)];
+	f0 = f0-f1;
+	f1 = f2-f3;
+	f2 = f4-f5;
+	f2 = f2*f2;
+	f1 = f1*f1;
+	f3 = heapFloat[(r3+62)];
+	f1 = f2+f1;
+	f0 = f0*f0;
+	f2 = f3*f3;
+	f0 = f1+f0;
+	if(f2 >f0) //_LBB300_16
+{
+	f0 =                         1;
+	f_g0 = f0;
+	return;
+}
+}
+	r4 = sp + -56;
+	r5 = heap32[(r1+48)];
+	f0 = heapFloat[(r3+61)];
+	r6 = r4 >> 2;
+	heap32[(r6+2)] = 0;
+	heap32[(r6+3)] = 1065353216;
+	heap32[(r6+4)] = 1065353216;
+	r7 = _ZTV13btSphereShape;
+	heap32[(r6+5)] = 1065353216;
+	r7 = (r7 + 8)|0;
+	heap32[(r6+6)] = 0;
+	heap32[(fp+-14)] = r7;
+	heap32[(r6+1)] = 8;
+	r8 = _ZTVN12btConvexCast10CastResultE;
+	heapFloat[(r6+7)] = f0;
+	r9 = sp + -232;
+	r8 = (r8 + 8)|0;
+	heapFloat[(r6+11)] = f0;
+	r6 = r9 >> 2;
+	heap32[(fp+-58)] = r8;
+	heap32[(r6+41)] = 1566444395;
+	r10 = sp + -592;
+	heap32[(r6+42)] = 0;
+	r11 = r10 >> 2;
+	heap32[(r6+43)] = 0;
+	r12 = _ZTV15btGjkConvexCast;
+	r13 = 0;
+	heap32[(r11+77)] = 953267991;
+	r11 = sp + -608;
+	r12 = (r12 + 8)|0;
+	heap8[sp+-260] = r13;
+	r13 = r11 >> 2;
+	heap32[(fp+-152)] = r12;
+	heap32[(r13+1)] = r10;
+	heap32[(r13+2)] = r5;
+	heap32[(r13+3)] = r4;
+	r4 = (r2 + 68)|0;
+	r2 = (r2 + 4)|0;
+	r5 = (r0 + 68)|0;
+	r0 = (r0 + 4)|0;
+	heap32[(g0)] = r11;
+	heap32[(g0+1)] = r0;
+	heap32[(g0+2)] = r5;
+	heap32[(g0+3)] = r2;
+	heap32[(g0+4)] = r4;
+	heap32[(g0+5)] = r9;
+	_ZN15btGjkConvexCast16calcTimeOfImpactERK11btTransformS2_S2_S2_RN12btConvexCast10CastResultE(i7);
+	r9 = r_g0;
+	if(r9 !=0) //_LBB300_4
+{
+	f0 = heapFloat[(r6+41)];
+	f1 = heapFloat[(r1+60)];
+if(!(f1 <=f0)) //_LBB300_6
+{
+	heapFloat[(r1+60)] = f0;
+}
+	f1 = heapFloat[(r3+60)];
+if(!(f1 <=f0)) //_LBB300_8
+{
+	heapFloat[(r3+60)] = f0;
+}
+	f1 =                         1;
+	if(f0 >=f1) //_LBB300_3
+{
+__label__ = 3;
+}
+else{
+__label__ = 9;
+}
+}
+else{
+__label__ = 3;
+}
+if (__label__ == 3){
+	f0 =                         1;
+}
+	r6 = _ZTV12btConvexCast;
+	r9 = _ZTV13btConvexShape;
+	r6 = (r6 + 8)|0;
+	r9 = (r9 + 8)|0;
+	heap32[(fp+-152)] = r6;
+	heap32[(fp+-14)] = r9;
+	r6 = sp + -664;
+	r9 = heap32[(r3+48)];
+	f1 = heapFloat[(r1+61)];
+	r10 = r6 >> 2;
+	heap32[(r10+2)] = 0;
+	heap32[(r10+3)] = 1065353216;
+	heap32[(r10+4)] = 1065353216;
+	heap32[(r10+5)] = 1065353216;
+	heap32[(r10+6)] = 0;
+	heap32[(fp+-166)] = r7;
+	heap32[(r10+1)] = 8;
+	heapFloat[(r10+7)] = f1;
+	r7 = sp + -840;
+	heapFloat[(r10+11)] = f1;
+	r10 = r7 >> 2;
+	heap32[(fp+-210)] = r8;
+	heap32[(r10+41)] = 1566444395;
+	r8 = sp + -1200;
+	heap32[(r10+42)] = 0;
+	r11 = r8 >> 2;
+	heap32[(r10+43)] = 0;
+	heap32[(r11+77)] = 953267991;
+	r11 = heapU8[sp+-868];
+	r11 = r11 & 240;
+	r13 = sp + -1216;
+	heap8[sp+-868] = r11;
+	r11 = r13 >> 2;
+	heap32[(fp+-304)] = r12;
+	heap32[(r11+1)] = r8;
+	heap32[(r11+2)] = r6;
+	heap32[(r11+3)] = r9;
+	heap32[(g0)] = r13;
+	heap32[(g0+1)] = r0;
+	heap32[(g0+2)] = r5;
+	heap32[(g0+3)] = r2;
+	heap32[(g0+4)] = r4;
+	heap32[(g0+5)] = r7;
+	_ZN15btGjkConvexCast16calcTimeOfImpactERK11btTransformS2_S2_S2_RN12btConvexCast10CastResultE(i7);
+	r0 = r_g0;
+if(!(r0 ==0)) //_LBB300_15
+{
+	f1 = heapFloat[(r10+41)];
+	f2 = heapFloat[(r1+60)];
+if(!(f2 <=f1)) //_LBB300_12
+{
+	heapFloat[(r1+60)] = f1;
+}
+	f2 = heapFloat[(r3+60)];
+if(!(f2 <=f1)) //_LBB300_14
+{
+	heapFloat[(r3+60)] = f1;
+}
+	f0 = f1 < f0 ? f1 : f0;
+}
+	f_g0 = f0;
+	return;
+}
+
+function _ZN23btConvexConvexAlgorithm16processCollisionEP17btCollisionObjectS1_RK16btDispatcherInfoP16btManifoldResult(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+	var r6;
+	var r7;
+	var r8;
+	var r9;
+	var r10;
+	var r11;
+	var r12;
+	var r13;
+	var r14;
+	var r15;
+	var r16;
+	var r17;
+	var f0;
+	var f1;
+	var f2;
+	var f3;
+	var f4;
+	var f5;
+	var f6;
+	var f7;
+	var f8;
+	var f9;
+	var f10;
+	var f11;
+	var f12;
+	var f13;
+	var f14;
+	var f15;
+	var f16;
+	var f17;
+	var f18;
+	var f19;
+	var f20;
+	var f21;
+	var f22;
+	var f23;
+	var f24;
+	var f25;
+	var f26;
+	var f27;
+	var f28;
+	var f29;
+	var f30;
+var __label__ = 0;
+	i7 = sp + -816;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = r0 >> 2;
+	r2 = heap32[(r1+5)];
+	r3 = heap32[(fp+1)];
+	r4 = heap32[(fp+2)];
+	r5 = heap32[(fp+3)];
+	r6 = heap32[(fp+4)];
+	if(r2 ==0) //_LBB301_2
+{
+	r2 = heap32[(r1+1)];
+	r7 = r2 >> 2;
+	r7 = heap32[(r7)];
+	r7 = r7 >> 2;
+	r7 = heap32[(r7+3)];
+	heap32[(g0)] = r2;
+	heap32[(g0+1)] = r3;
+	heap32[(g0+2)] = r4;
+	__FUNCTION_TABLE__[(r7)>>2](i7);
+	r2 = r_g0;
+	r7 = 1;
+	heap32[(r1+5)] = r2;
+	heap8[r0+16] = r7;
+}
+	r7 = r6 >> 2;
+	r8 = r3 >> 2;
+	heap32[(r7+1)] = r2;
+	r2 = r4 >> 2;
+	r9 = heap32[(r8+48)];
+	r10 = heap32[(r2+48)];
+	r11 = r9 >> 2;
+	r12 = heap32[(r11+1)];
+	if(r12 !=10) //_LBB301_5
+{
+__label__ = 4;
+}
+else{
+	r12 = r10 >> 2;
+	r13 = heap32[(r12+1)];
+	if(r13 ==10) //_LBB301_6
+{
+	r0 = heap32[(r11)];
+	r0 = r0 >> 2;
+	r0 = heap32[(r0+7)];
+	heap32[(g0)] = r9;
+	__FUNCTION_TABLE__[(r0)>>2](i7);
+	r0 = heap32[(r12)];
+	r0 = r0 >> 2;
+	r0 = heap32[(r0+7)];
+	heap32[(g0)] = r10;
+	__FUNCTION_TABLE__[(r0)>>2](i7);
+	r0 = heap32[(r11+13)];
+	r5 = heap32[(r12+13)];
+	r11 = r5 << 2;
+	r12 = r0 << 2;
+	r3 = (r3 + r12)|0;
+	r4 = (r4 + r11)|0;
+	r3 = r3 >> 2;
+	r4 = r4 >> 2;
+	r5 = (r5 + 2)|0;
+	r0 = (r0 + 2)|0;
+	f0 = heapFloat[(r3+1)];
+	f1 = heapFloat[(r4+1)];
+	f2 = heapFloat[(r3+5)];
+	f3 = heapFloat[(r4+5)];
+	r5 = (r5 % 3)|0;
+	r0 = (r0 % 3)|0;
+	f4 = heapFloat[(r3+9)];
+	f5 = heapFloat[(r4+9)];
+	f6 = f0*f1;
+	f7 = f2*f3;
+	f8 = heapFloat[(r2+13)];
+	f9 = heapFloat[(r8+13)];
+	f10 = heapFloat[(r2+14)];
+	f11 = heapFloat[(r8+14)];
+	f8 = f8-f9;
+	f9 = f10-f11;
+	r3 = (r10 + 28)|0;
+	r4 = r5 << 2;
+	r5 = (r9 + 28)|0;
+	r0 = r0 << 2;
+	f6 = f6+f7;
+	f7 = f4*f5;
+	f10 = heapFloat[(r2+15)];
+	f11 = heapFloat[(r8+15)];
+	f10 = f10-f11;
+	f6 = f6+f7;
+	r1 = heap32[(r1+5)];
+	r4 = (r3 + r4)|0;
+	r3 = (r3 + r11)|0;
+	r0 = (r5 + r0)|0;
+	r5 = (r5 + r12)|0;
+	f7 = f0*f8;
+	f11 = f2*f9;
+	f12 = f1*f8;
+	f13 = f3*f9;
+	r1 = r1 >> 2;
+	r4 = r4 >> 2;
+	r3 = r3 >> 2;
+	r0 = r0 >> 2;
+	r5 = r5 >> 2;
+	f14 =                         1;
+	f15 = f6*f6;
+	f7 = f7+f11;
+	f11 = f4*f10;
+	f12 = f12+f13;
+	f13 = f5*f10;
+	f15 = f14-f15;
+	f16 = heapFloat[(r1+280)];
+	f17 = heapFloat[(r4)];
+	f18 = heapFloat[(r3)];
+	f19 = heapFloat[(r0)];
+	f20 = heapFloat[(r5)];
+	f7 = f7+f11;
+	f11 = f12+f13;
+	f12 =                         0;
+	if(f15 !=f12) //_LBB301_8
+{
+	f13 = f11*f6;
+	f13 = f7-f13;
+	f13 = f13/f15;
+	f15 = -f20;
+	if(f13 >=f15) //_LBB301_10
+{
+	if(f13 >f20) //_LBB301_12
+{
+	f15 = f20;
+}
+else{
+	f15 = f13;
+}
+}
+}
+else{
+	f15 =                         0;
+}
+	f13 = f15*f6;
+	f11 = f13-f11;
+	f13 = -f18;
+	if(f11 >=f13) //_LBB301_19
+{
+	if(f11 >f18) //_LBB301_21
+{
+	f13 = f6*f18;
+	f6 = f13+f7;
+	f15 = -f20;
+	if(f6 >=f15) //_LBB301_23
+{
+	if(f6 >f20) //_LBB301_25
+{
+	f13 = f18;
+	f15 = f20;
+}
+else{
+	f13 = f18;
+	f15 = f6;
+}
+}
+else{
+	f13 = f18;
+}
+}
+else{
+	f13 = f11;
+}
+}
+else{
+	f6 = f6*f13;
+	f6 = f6+f7;
+	f15 = -f20;
+	if(f6 >=f15) //_LBB301_16
+{
+	if(f6 >f20) //_LBB301_18
+{
+	f15 = f20;
+}
+else{
+	f15 = f6;
+}
+}
+}
+	f6 = f0*f15;
+	f7 = f2*f15;
+	f1 = f1*f13;
+	f6 = f8-f6;
+	f3 = f3*f13;
+	f7 = f9-f7;
+	f8 = f4*f15;
+	f6 = f6+f1;
+	f7 = f7+f3;
+	f5 = f5*f13;
+	f8 = f10-f8;
+	f8 = f8+f5;
+	f9 = f6*f6;
+	f10 = f7*f7;
+	f9 = f9+f10;
+	f10 = f8*f8;
+	f9 = f9+f10;
+	heapFloat[(g0)] = f9;
+	sqrtf(i7);
+	f10 = f_g0-f19;
+	f10 = f10-f17;
+if(!(f10 >f16)) //_LBB301_36
+{
+	f11 =   1.4210854715202004e-014;
+	if(f9 >f11) //_LBB301_34
+{
+	heapFloat[(g0)] = f9;
+	f0 =                        -1;
+	sqrtf(i7);
+	f0 = f0/f_g0;
+	f9 = f6*f0;
+	r0 = sp + -16;
+	f6 = f7*f0;
+	r0 = r0 >> 2;
+	heapFloat[(fp+-4)] = f9;
+	f12 = f8*f0;
+	heapFloat[(r0+1)] = f6;
+	heapFloat[(r0+2)] = f12;
+	heap32[(r0+3)] = 0;
+}
+else{
+	if(f4 <f12) //_LBB301_30
+{
+	f6 = -f4;
+}
+else{
+	f6 = f4;
+}
+	f7 =       0.70710676908493042;
+	if(f6 <=f7) //_LBB301_33
+{
+	f6 = f0*f0;
+	f9 = f2*f2;
+	f6 = f6+f9;
+	heapFloat[(g0)] = f6;
+	sqrtf(i7);
+	f6 = f14/f_g0;
+	f9 = -f2;
+	f9 = f6*f9;
+	r0 = sp + -16;
+	f6 = f0*f6;
+	r0 = r0 >> 2;
+	heapFloat[(fp+-4)] = f9;
+	heapFloat[(r0+1)] = f6;
+	heap32[(r0+2)] = 0;
+}
+else{
+	f0 = f2*f2;
+	f6 = f4*f4;
+	f0 = f0+f6;
+	heapFloat[(g0)] = f0;
+	sqrtf(i7);
+	r0 = sp + -16;
+	f0 = f14/f_g0;
+	f6 = -f4;
+	f6 = f0*f6;
+	r0 = r0 >> 2;
+	heap32[(fp+-4)] = 0;
+	f9 =                         0;
+	f12 = f2*f0;
+	heapFloat[(r0+1)] = f6;
+	heapFloat[(r0+2)] = f12;
+}
+}
+	f0 = heapFloat[(r2+13)];
+	f2 = heapFloat[(r2+14)];
+	f4 = heapFloat[(r2+15)];
+	f0 = f0+f1;
+	f1 = f9*f17;
+	r0 = sp + -32;
+	f2 = f2+f3;
+	f3 = f6*f17;
+	f0 = f0+f1;
+	r0 = r0 >> 2;
+	f1 = f4+f5;
+	f4 = f12*f17;
+	f2 = f2+f3;
+	heapFloat[(fp+-8)] = f0;
+	f0 = f1+f4;
+	heapFloat[(r0+1)] = f2;
+	heapFloat[(r0+2)] = f0;
+	heap32[(r0+3)] = 0;
+}
+if(!(f10 >=f16)) //_LBB301_40
+{
+	r0 = sp + -16;
+	r1 = r0 >> 2;
+	f0 = heapFloat[(fp+-4)];
+	f1 = heapFloat[(r1+1)];
+	f2 = heapFloat[(r1+2)];
+	f0 = f0*f0;
+	f1 = f1*f1;
+	f0 = f0+f1;
+	f1 = f2*f2;
+	f0 = f0+f1;
+	f1 =   1.4210854715202004e-014;
+	if(f0 >=f1) //_LBB301_39
+{
+	r1 = heap32[(r7)];
+	r1 = r1 >> 2;
+	r1 = heap32[(r1+4)];
+	r2 = sp + -32;
+	heap32[(g0)] = r6;
+	heap32[(g0+1)] = r0;
+	heap32[(g0+2)] = r2;
+	heapFloat[(g0+3)] = f10;
+	__FUNCTION_TABLE__[(r1)>>2](i7);
+}
+else{
+	r0 = _2E_str4119;
+	r1 = _2E_str5120;
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r1;
+	heap32[(g0+2)] = 325;
+	_assert(i7);
+}
+}
+	r0 = heap32[(r7+1)];
+	if(r0 !=0) //_LBB301_42
+{
+	r1 = r0 >> 2;
+	r2 = heap32[(r1+279)];
+	if(r2 ==0) //_LBB301_47
+{
+__label__ = 44;
+}
+else{
+	r1 = heap32[(r1+277)];
+	r2 = heap32[(r7+34)];
+	if(r1 ==r2) //_LBB301_46
+{
+__label__ = 43;
+}
+else{
+	r1 = (r6 + 72)|0;
+	r2 = (r6 + 8)|0;
+__label__ = 42;
+}
+}
+}
+else{
+	r0 = _2E_str59;
+	r1 = _2E_str160;
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r1;
+	heap32[(g0+2)] = 101;
+	_assert(i7);
+}
+}
+else{
+__label__ = 4;
+}
+}
+if (__label__ == 4){
+	r3 = sp + -168;
+	r4 = r3 >> 2;
+	heap32[(r4+32)] = 1566444395;
+	heap32[(r4+33)] = 0;
+	r12 = _ZTV17btGjkPairDetector;
+	r13 = heap32[(r1+2)];
+	r14 = heap32[(r1+3)];
+	r15 = sp + -248;
+	r12 = (r12 + 8)|0;
+	heap32[(fp+-62)] = r12;
+	r12 = r15 >> 2;
+	heap32[(r12+1)] = 0;
+	heap32[(r12+2)] = 1065353216;
+	heap32[(r12+3)] = 0;
+	heap32[(r12+4)] = 0;
+	heap32[(r12+5)] = r14;
+	heap32[(r12+6)] = r13;
+	heap32[(r12+7)] = r9;
+	heap32[(r12+8)] = r10;
+	r13 = heap32[(r11+1)];
+	heap32[(r12+9)] = r13;
+	r13 = r10 >> 2;
+	r14 = heap32[(r13+1)];
+	heap32[(r12+10)] = r14;
+	r14 = heap32[(r11)];
+	r14 = r14 >> 2;
+	r14 = heap32[(r14+11)];
+	heap32[(g0)] = r9;
+	__FUNCTION_TABLE__[(r14)>>2](i7);
+	heapFloat[(r12+11)] = f_g0;
+	r14 = heap32[(r13)];
+	r14 = r14 >> 2;
+	r14 = heap32[(r14+11)];
+	heap32[(g0)] = r10;
+	__FUNCTION_TABLE__[(r14)>>2](i7);
+	r14 = 0;
+	heapFloat[(r12+12)] = f_g0;
+	heap8[sp+-196] = r14;
+	heap32[(r12+15)] = -1;
+	heap32[(r12+18)] = 1;
+	heap32[(r12+7)] = r9;
+	heap32[(r12+8)] = r10;
+	r16 = heap32[(r11)];
+	r16 = r16 >> 2;
+	r17 = heapU8[r5+40];
+	r16 = heap32[(r16+11)];
+	heap32[(g0)] = r9;
+	__FUNCTION_TABLE__[(r16)>>2](i7);
+	f0 = f_g0;
+	r16 = heap32[(r13)];
+	r16 = r16 >> 2;
+	r16 = heap32[(r16+11)];
+	heap32[(g0)] = r10;
+	__FUNCTION_TABLE__[(r16)>>2](i7);
+	f0 = f0+f_g0;
+	r16 = heap32[(r1+5)];
+	if(r17 ==0) //_LBB301_49
+{
+	r16 = (r16 + 1120)|0;
+}
+else{
+	r16 = (r16 + 1124)|0;
+}
+	r16 = r16 >> 2;
+	f1 = heapFloat[(r16)];
+	f0 = f0+f1;
+	f0 = f0*f0;
+	r5 = r5 >> 2;
+	heapFloat[(r4+32)] = f0;
+	r16 = heap32[(r5+11)];
+	heap32[(r4+33)] = r16;
+	heap32[(fp+-42)] = heap32[(r8+1)];
+	heap32[(r4+1)] = heap32[(r8+2)];
+	heap32[(r4+2)] = heap32[(r8+3)];
+	heap32[(r4+3)] = heap32[(r8+4)];
+	heap32[(r4+4)] = heap32[(r8+5)];
+	heap32[(r4+5)] = heap32[(r8+6)];
+	heap32[(r4+6)] = heap32[(r8+7)];
+	heap32[(r4+7)] = heap32[(r8+8)];
+	heap32[(r4+8)] = heap32[(r8+9)];
+	heap32[(r4+9)] = heap32[(r8+10)];
+	heap32[(r4+10)] = heap32[(r8+11)];
+	heap32[(r4+11)] = heap32[(r8+12)];
+	heap32[(r4+12)] = heap32[(r8+13)];
+	heap32[(r4+13)] = heap32[(r8+14)];
+	heap32[(r4+14)] = heap32[(r8+15)];
+	heap32[(r4+15)] = heap32[(r8+16)];
+	heap32[(r4+16)] = heap32[(r2+1)];
+	heap32[(r4+17)] = heap32[(r2+2)];
+	heap32[(r4+18)] = heap32[(r2+3)];
+	heap32[(r4+19)] = heap32[(r2+4)];
+	heap32[(r4+20)] = heap32[(r2+5)];
+	heap32[(r4+21)] = heap32[(r2+6)];
+	heap32[(r4+22)] = heap32[(r2+7)];
+	heap32[(r4+23)] = heap32[(r2+8)];
+	heap32[(r4+24)] = heap32[(r2+9)];
+	heap32[(r4+25)] = heap32[(r2+10)];
+	heap32[(r4+26)] = heap32[(r2+11)];
+	heap32[(r4+27)] = heap32[(r2+12)];
+	heap32[(r4+28)] = heap32[(r2+13)];
+	heap32[(r4+29)] = heap32[(r2+14)];
+	heap32[(r4+30)] = heap32[(r2+15)];
+	heap32[(r4+31)] = heap32[(r2+16)];
+	r16 = heap32[(r5+5)];
+	heap32[(g0)] = r15;
+	heap32[(g0+1)] = r3;
+	heap32[(g0+2)] = r6;
+	heap32[(g0+3)] = r16;
+	heap32[(g0+4)] = 0;
+	_ZN17btGjkPairDetector16getClosestPointsERKN36btDiscreteCollisionDetectorInterface17ClosestPointInputERNS0_6ResultEP12btIDebugDrawb(i7);
+	r16 = heap32[(r1+7)];
+_63: do {
+if(!(r16 ==0)) //_LBB301_73
+{
+	r16 = heap32[(r7+1)];
+	r16 = r16 >> 2;
+	r16 = heap32[(r16+279)];
+	r17 = heap32[(r1+8)];
+if(!(r16 >=r17)) //_LBB301_73
+{
+	f0 = heapFloat[(r12+1)];
+	f1 = heapFloat[(r12+2)];
+	f2 = heapFloat[(r12+3)];
+	f0 = f0*f0;
+	f1 = f1*f1;
+	f0 = f0+f1;
+	f1 = f2*f2;
+	f0 = f0+f1;
+	heapFloat[(g0)] = f0;
+	sqrtf(i7);
+	f1 =                         1;
+	heapFloat[(fp+-169)] = f1;
+	f2 = heapFloat[(r12+3)];
+	f0 = f1/f_g0;
+	f1 = heapFloat[(r12+2)];
+	f3 = heapFloat[(r12+1)];
+	f2 = f2*f0;
+	heapFloat[(fp+-171)] = f2;
+	f1 = f1*f0;
+	heapFloat[(fp+-170)] = f1;
+	f0 = f3*f0;
+	heapFloat[(fp+-174)] = f0;
+	f0 =                         0;
+	heapFloat[(fp+-175)] = f0;
+	if(f2 <f0) //_LBB301_54
+{
+	f0 = f2;
+	f0 = -f0;
+}
+else{
+	f0 = heapFloat[(fp+-171)];
+}
+	f1 =       0.70710676908493042;
+	if(f0 <=f1) //_LBB301_57
+{
+	f0 = heapFloat[(fp+-174)];
+	f1 = f0*f0;
+	f2 = heapFloat[(fp+-170)];
+	f3 = f2*f2;
+	f1 = f1+f3;
+	heapFloat[(g0)] = f1;
+	sqrtf(i7);
+	f3 = heapFloat[(fp+-169)];
+	f1 = f3/f_g0;
+	f2 = -f2;
+	f2 = f1*f2;
+	heapFloat[(fp+-173)] = f2;
+	f0 = f0*f1;
+	heapFloat[(fp+-172)] = f0;
+}
+else{
+	f0 = heapFloat[(fp+-170)];
+	f1 = f0*f0;
+	f2 = heapFloat[(fp+-171)];
+	f3 = f2*f2;
+	f1 = f1+f3;
+	heapFloat[(g0)] = f1;
+	sqrtf(i7);
+	f3 = heapFloat[(fp+-169)];
+	f1 = f3/f_g0;
+	f2 = -f2;
+	f2 = f1*f2;
+	heapFloat[(fp+-172)] = f2;
+	f0 = f0*f1;
+	heapFloat[(fp+-175)] = f0;
+	f0 =                         0;
+	heapFloat[(fp+-173)] = f0;
+}
+	r11 = heap32[(r11)];
+	r11 = r11 >> 2;
+	r11 = heap32[(r11+4)];
+	heap32[(g0)] = r9;
+	__FUNCTION_TABLE__[(r11)>>2](i7);
+	f0 = f_g0;
+	heapFloat[(fp+-194)] = f0;
+	r9 = heap32[(r13)];
+	r9 = r9 >> 2;
+	r9 = heap32[(r9+4)];
+	heap32[(g0)] = r10;
+	__FUNCTION_TABLE__[(r9)>>2](i7);
+	f1 = f_g0;
+	heapFloat[(fp+-195)] = f1;
+	r9 = f0 < f1;
+	f2 =      0.019999999552965164;
+	f3 = f0 < f1 ? f0 : f1;
+	r9 = r9 & 1;
+	f2 = f2/f3;
+	if(f0 >=f1) //_LBB301_60
+{
+	f0 = heapFloat[(r4+16)];
+	heapFloat[(fp+-176)] = f0;
+	f0 = heapFloat[(r4+17)];
+	heapFloat[(fp+-177)] = f0;
+	f0 = heapFloat[(r4+18)];
+	heapFloat[(fp+-178)] = f0;
+	f0 = heapFloat[(r4+19)];
+	heapFloat[(fp+-179)] = f0;
+	f0 = heapFloat[(r4+20)];
+	heapFloat[(fp+-180)] = f0;
+	f0 = heapFloat[(r4+21)];
+	heapFloat[(fp+-181)] = f0;
+	f0 = heapFloat[(r4+22)];
+	heapFloat[(fp+-182)] = f0;
+	f0 = heapFloat[(r4+23)];
+	heapFloat[(fp+-183)] = f0;
+	f0 = heapFloat[(r4+24)];
+	heapFloat[(fp+-184)] = f0;
+	f0 = heapFloat[(r4+25)];
+	heapFloat[(fp+-185)] = f0;
+	f0 = heapFloat[(r4+26)];
+	heapFloat[(fp+-186)] = f0;
+	f0 = heapFloat[(r4+27)];
+	heapFloat[(fp+-187)] = f0;
+	f0 = heapFloat[(r4+28)];
+	heapFloat[(fp+-188)] = f0;
+	f0 = heapFloat[(r4+29)];
+	heapFloat[(fp+-189)] = f0;
+	f0 = heapFloat[(r4+30)];
+	heapFloat[(fp+-190)] = f0;
+	f0 = heapFloat[(r4+31)];
+	heapFloat[(fp+-191)] = f0;
+}
+else{
+	f0 = heapFloat[(fp+-42)];
+	heapFloat[(fp+-176)] = f0;
+	f0 = heapFloat[(r4+1)];
+	heapFloat[(fp+-177)] = f0;
+	f0 = heapFloat[(r4+2)];
+	heapFloat[(fp+-178)] = f0;
+	f0 = heapFloat[(r4+3)];
+	heapFloat[(fp+-179)] = f0;
+	f0 = heapFloat[(r4+4)];
+	heapFloat[(fp+-180)] = f0;
+	f0 = heapFloat[(r4+5)];
+	heapFloat[(fp+-181)] = f0;
+	f0 = heapFloat[(r4+6)];
+	heapFloat[(fp+-182)] = f0;
+	f0 = heapFloat[(r4+7)];
+	heapFloat[(fp+-183)] = f0;
+	f0 = heapFloat[(r4+8)];
+	heapFloat[(fp+-184)] = f0;
+	f0 = heapFloat[(r4+9)];
+	heapFloat[(fp+-185)] = f0;
+	f0 = heapFloat[(r4+10)];
+	heapFloat[(fp+-186)] = f0;
+	f0 = heapFloat[(r4+11)];
+	heapFloat[(fp+-187)] = f0;
+	f0 = heapFloat[(r4+12)];
+	heapFloat[(fp+-188)] = f0;
+	f0 = heapFloat[(r4+13)];
+	heapFloat[(fp+-189)] = f0;
+	f0 = heapFloat[(r4+14)];
+	heapFloat[(fp+-190)] = f0;
+	f0 = heapFloat[(r4+15)];
+	heapFloat[(fp+-191)] = f0;
+}
+	f0 = heapFloat[(fp+-173)];
+	f0 = f0*f0;
+	f1 = heapFloat[(fp+-172)];
+	f1 = f1*f1;
+	f3 =                       0.5;
+	heapFloat[(fp+-193)] = f3;
+	f4 = heapFloat[(fp+-174)];
+	f4 = f4*f4;
+	f5 = heapFloat[(fp+-170)];
+	f5 = f5*f5;
+	f0 = f0+f1;
+	f1 = heapFloat[(fp+-175)];
+	f1 = f1*f1;
+	f6 =       0.39269909262657166;
+	f7 =       0.19634954631328583;
+	f3 = f2*f3;
+	f4 = f4+f5;
+	f5 = heapFloat[(fp+-171)];
+	f5 = f5*f5;
+	f0 = f0+f1;
+	heapFloat[(fp+-196)] = f0;
+	f0 = f2 > f6 ? f7 : f3;
+	heapFloat[(fp+-197)] = f0;
+	f0 = f4+f5;
+	heapFloat[(fp+-192)] = f0;
+_78: while(true){
+	r10 = heap32[(r1+7)];
+	if(r10 >r14) //_LBB301_62
+{
+	f0 =   1.1920928955078125e-007;
+	f1 = heapFloat[(fp+-196)];
+if(!(f1 <=f0)) //_LBB301_71
+{
+	f0 = f1;
+	heapFloat[(g0)] = f0;
+	sqrtf(i7);
+	f0 = f_g0;
+	f1 =                         0;
+	if(f0 !=f1) //_LBB301_65
+{
+	f2 = heapFloat[(fp+-197)];
+	heapFloat[(g0)] = f2;
+	sinf(i7);
+	f3 = f_g0;
+	heapFloat[(g0)] = f2;
+	cosf(i7);
+	f2 = f_g0;
+	r10 = heap32[(r1+7)];
+	f4 = heapFloat[(fp+-192)];
+	heapFloat[(g0)] = f4;
+	sqrtf(i7);
+	f4 = f_g0;
+	if(f4 !=f1) //_LBB301_67
+{
+	f0 = f3/f0;
+	f3 = heapFloat[(fp+-175)];
+	f3 = f3*f0;
+	f5 = heapFloat[(fp+-172)];
+	f5 = f5*f0;
+	f6 = heapFloat[(fp+-173)];
+	f0 = f6*f0;
+	f6 =        6.2831854820251465;
+	f7 = r10; //fitos r10, f7
+	f8 = r14; //fitos r14, f8
+	f6 = f6/f7;
+	f6 = f8*f6;
+	f7 = heapFloat[(fp+-193)];
+	f6 = f6*f7;
+	heapFloat[(g0)] = f6;
+	sinf(i7);
+	heapFloat[(g0)] = f6;
+	f4 = f_g0/f4;
+	f6 = heapFloat[(fp+-171)];
+	f6 = f6*f4;
+	f7 = heapFloat[(fp+-170)];
+	f7 = f7*f4;
+	f8 = heapFloat[(fp+-174)];
+	f4 = f8*f4;
+	cosf(i7);
+	f8 = f_g0;
+	f10 = heapFloat[(fp+-195)];
+	f9 = heapFloat[(fp+-194)];
+	if(f9 >=f10) //_LBB301_69
+{
+	f9 = heapFloat[(r8+1)];
+	heapFloat[(fp+-155)] = f9;
+	heapFloat[(fp+-42)] = f9;
+	f9 = heapFloat[(r8+2)];
+	heapFloat[(fp+-156)] = f9;
+	heapFloat[(r4+1)] = f9;
+	f9 = heapFloat[(r8+3)];
+	heapFloat[(fp+-157)] = f9;
+	heapFloat[(r4+2)] = f9;
+	f9 = heapFloat[(r8+4)];
+	heapFloat[(fp+-163)] = f9;
+	heapFloat[(r4+3)] = f9;
+	f9 = heapFloat[(r8+5)];
+	heapFloat[(fp+-158)] = f9;
+	heapFloat[(r4+4)] = f9;
+	f9 = heapFloat[(r8+6)];
+	heapFloat[(fp+-159)] = f9;
+	heapFloat[(r4+5)] = f9;
+	f9 = heapFloat[(r8+7)];
+	heapFloat[(fp+-160)] = f9;
+	heapFloat[(r4+6)] = f9;
+	f9 = heapFloat[(r8+8)];
+	heapFloat[(fp+-162)] = f9;
+	heapFloat[(r4+7)] = f9;
+	f9 = heapFloat[(r8+9)];
+	heapFloat[(fp+-161)] = f9;
+	f10 = f8*f2;
+	f11 = f0*f4;
+	f12 = f8*f0;
+	f13 = f2*f4;
+	f14 = f8*f5;
+	f15 = f2*f7;
+	heapFloat[(r4+8)] = f9;
+	f9 = f10+f11;
+	f10 = f5*f7;
+	f11 = f8*f3;
+	f2 = f2*f6;
+	f12 = f12-f13;
+	f13 = f3*f7;
+	f14 = f14-f15;
+	f15 = f0*f6;
+	f16 = heapFloat[(r8+10)];
+	heapFloat[(fp+-164)] = f16;
+	f9 = f9+f10;
+	f10 = f3*f6;
+	f2 = f11-f2;
+	f11 = f5*f4;
+	f12 = f12-f13;
+	f5 = f5*f6;
+	f13 = f14-f15;
+	f3 = f3*f4;
+	f9 = f9+f10;
+	f5 = f12+f5;
+	f3 = f13+f3;
+	heapFloat[(r4+9)] = f16;
+	f2 = f2-f11;
+	f0 = f0*f7;
+	f0 = f2+f0;
+	f2 = heapFloat[(r8+11)];
+	heapFloat[(fp+-166)] = f2;
+	f10 = f9*f7;
+	f11 = f3*f8;
+	f12 = f9*f4;
+	f13 = f5*f8;
+	heapFloat[(r4+10)] = f2;
+	f2 = f10+f11;
+	f10 = f0*f4;
+	f11 = f12+f13;
+	f12 = f3*f6;
+	f13 = f9*f6;
+	f14 = f0*f8;
+	f17 = heapFloat[(r8+12)];
+	f8 = f9*f8;
+	f9 = f5*f4;
+	f2 = f2+f10;
+	f10 = f5*f6;
+	f11 = f11+f12;
+	f12 = f0*f7;
+	f13 = f13+f14;
+	f5 = f5*f7;
+	f10 = f2-f10;
+	f2 = f11-f12;
+	heapFloat[(r4+11)] = f17;
+	f8 = f8-f9;
+	f7 = f3*f7;
+	f5 = f13+f5;
+	f3 = f3*f4;
+	f4 = heapFloat[(r8+13)];
+	heapFloat[(fp+-165)] = f4;
+	f3 = f5-f3;
+	f5 = f8-f7;
+	f0 = f0*f6;
+	f6 = f2*f2;
+	f7 = f10*f10;
+	f5 = f5-f0;
+	heapFloat[(r4+12)] = f4;
+	f0 = f6+f7;
+	f4 = f3*f3;
+	f6 = heapFloat[(r8+14)];
+	heapFloat[(fp+-167)] = f6;
+	f0 = f0+f4;
+	f4 = f5*f5;
+	heapFloat[(r4+13)] = f6;
+	f6 =                         2;
+	f0 = f0+f4;
+	f0 = f6/f0;
+	f4 = heapFloat[(r8+15)];
+	heapFloat[(fp+-168)] = f4;
+	f6 = f3*f0;
+	f7 = f10*f0;
+	heapFloat[(r4+14)] = f4;
+	f16 = heapFloat[(r8+16)];
+	f4 = f10*f7;
+	f3 = f3*f6;
+	f8 = f4+f3;
+	f9 = f2*f7;
+	f11 = f5*f6;
+	heapFloat[(r4+15)] = f16;
+	f12 = heapFloat[(fp+-169)];
+	f8 = f12-f8;
+	f13 = heapFloat[(r2+1)];
+	f14 = f9-f11;
+	f15 = heapFloat[(r2+5)];
+	f18 = f2*f6;
+	f7 = f5*f7;
+	f19 = f2*f0;
+	f20 = heapFloat[(r2+2)];
+	f21 = heapFloat[(r2+6)];
+	f0 = f13*f8;
+	f22 = f15*f14;
+	f23 = f18+f7;
+	f24 = heapFloat[(r2+9)];
+	f25 = f2*f19;
+	f26 = heapFloat[(r2+3)];
+	f27 = heapFloat[(r2+7)];
+	f28 = heapFloat[(r2+11)];
+	f29 = heapFloat[(r2+10)];
+	f2 = f20*f8;
+	f30 = f21*f14;
+	f0 = f0+f22;
+	f22 = f24*f23;
+	f3 = f25+f3;
+	f0 = f0+f22;
+	f8 = f26*f8;
+	f14 = f27*f14;
+	f2 = f2+f30;
+	f22 = f29*f23;
+	f9 = f9+f11;
+	f11 = f12-f3;
+	f2 = f2+f22;
+	heapFloat[(r4+16)] = f0;
+	f6 = f10*f6;
+	f10 = f5*f19;
+	f3 = f8+f14;
+	f5 = f28*f23;
+	f8 = f6-f10;
+	f3 = f3+f5;
+	heapFloat[(r4+17)] = f2;
+	f5 = f13*f9;
+	f14 = f15*f11;
+	heapFloat[(r4+18)] = f3;
+	f19 = f20*f9;
+	f22 = f21*f11;
+	f5 = f5+f14;
+	f14 = f24*f8;
+	f5 = f5+f14;
+	heap32[(r4+19)] = 0;
+	f9 = f26*f9;
+	f11 = f27*f11;
+	f14 = f19+f22;
+	f19 = f29*f8;
+	f18 = f18-f7;
+	f10 = f6+f10;
+	f4 = f25+f4;
+	f6 = f14+f19;
+	heapFloat[(r4+20)] = f5;
+	f7 = f9+f11;
+	f8 = f28*f8;
+	f4 = f12-f4;
+	f7 = f7+f8;
+	heapFloat[(r4+21)] = f6;
+	f8 = f13*f18;
+	f9 = f15*f10;
+	heapFloat[(r4+22)] = f7;
+	f11 = f20*f18;
+	f12 = f21*f10;
+	f8 = f8+f9;
+	f9 = f24*f4;
+	f9 = f8+f9;
+	heap32[(r4+23)] = 0;
+	f8 = f26*f18;
+	f13 = f27*f10;
+	f10 = f11+f12;
+	f11 = f29*f4;
+	f10 = f10+f11;
+	heapFloat[(r4+24)] = f9;
+	f8 = f8+f13;
+	f4 = f28*f4;
+	f11 = f8+f4;
+	heapFloat[(r4+25)] = f10;
+	heapFloat[(r4+26)] = f11;
+	heap32[(r4+27)] = 0;
+	f12 = heapFloat[(r4+28)];
+	f13 = heapFloat[(r4+29)];
+	f14 = heapFloat[(r4+30)];
+	f15 = heapFloat[(r4+31)];
+	f8 = f1;
+	f4 = f1;
+}
+else{
+	f1 = f8*f2;
+	f9 = f0*f4;
+	f10 = f8*f0;
+	f11 = f2*f4;
+	f12 = f8*f5;
+	f13 = f2*f7;
+	f1 = f1+f9;
+	f9 = f5*f7;
+	f14 = f8*f3;
+	f2 = f2*f6;
+	f10 = f10-f11;
+	f11 = f3*f7;
+	f12 = f12-f13;
+	f13 = f0*f6;
+	f1 = f1+f9;
+	f9 = f3*f6;
+	f2 = f14-f2;
+	f14 = f5*f4;
+	f10 = f10-f11;
+	f5 = f5*f6;
+	f11 = f12-f13;
+	f3 = f3*f4;
+	f1 = f1+f9;
+	f5 = f10+f5;
+	f3 = f11+f3;
+	f2 = f2-f14;
+	f0 = f0*f7;
+	f0 = f2+f0;
+	f2 = f1*f7;
+	f9 = f3*f8;
+	f10 = f1*f4;
+	f11 = f5*f8;
+	f2 = f2+f9;
+	f9 = f0*f4;
+	f10 = f10+f11;
+	f11 = f3*f6;
+	f12 = f1*f6;
+	f13 = f0*f8;
+	f1 = f1*f8;
+	f8 = f5*f4;
+	f2 = f2+f9;
+	f9 = f5*f6;
+	f10 = f10+f11;
+	f11 = f0*f7;
+	f12 = f12+f13;
+	f5 = f5*f7;
+	f2 = f2-f9;
+	f9 = f10-f11;
+	f1 = f1-f8;
+	f7 = f3*f7;
+	f5 = f12+f5;
+	f3 = f3*f4;
+	f3 = f5-f3;
+	f1 = f1-f7;
+	f0 = f0*f6;
+	f4 = f9*f9;
+	f5 = f2*f2;
+	f0 = f1-f0;
+	f1 = f4+f5;
+	f4 = f3*f3;
+	f1 = f1+f4;
+	f4 = f0*f0;
+	f5 =                         2;
+	f1 = f1+f4;
+	f1 = f5/f1;
+	f4 = f3*f1;
+	f5 = f2*f1;
+	f6 = f2*f5;
+	f3 = f3*f4;
+	f7 = f6+f3;
+	f8 = f9*f5;
+	f10 = f0*f4;
+	f11 = heapFloat[(fp+-169)];
+	f7 = f11-f7;
+	f12 = heapFloat[(r8+1)];
+	f13 = f8-f10;
+	f14 = heapFloat[(r8+5)];
+	f15 = f9*f4;
+	f5 = f0*f5;
+	f1 = f9*f1;
+	f16 = heapFloat[(r8+2)];
+	f17 = heapFloat[(r8+6)];
+	f18 = f12*f7;
+	f19 = f14*f13;
+	f20 = f15+f5;
+	f21 = heapFloat[(r8+9)];
+	f9 = f9*f1;
+	f22 = heapFloat[(r8+3)];
+	f23 = heapFloat[(r8+7)];
+	f24 = heapFloat[(r8+11)];
+	f25 = heapFloat[(r8+10)];
+	f26 = f16*f7;
+	f27 = f17*f13;
+	f18 = f18+f19;
+	f19 = f21*f20;
+	f3 = f9+f3;
+	f18 = f18+f19;
+	heapFloat[(fp+-155)] = f18;
+	f7 = f22*f7;
+	f13 = f23*f13;
+	f19 = f26+f27;
+	f26 = f25*f20;
+	f8 = f8+f10;
+	f3 = f11-f3;
+	f10 = f19+f26;
+	heapFloat[(fp+-156)] = f10;
+	heapFloat[(fp+-42)] = f18;
+	f2 = f2*f4;
+	f0 = f0*f1;
+	f1 = f7+f13;
+	f4 = f24*f20;
+	f7 = f2-f0;
+	f1 = f1+f4;
+	heapFloat[(fp+-157)] = f1;
+	heapFloat[(r4+1)] = f10;
+	f4 = f12*f8;
+	f10 = f14*f3;
+	heapFloat[(r4+2)] = f1;
+	f1 = f16*f8;
+	f13 = f17*f3;
+	f4 = f4+f10;
+	f10 = f21*f7;
+	f4 = f4+f10;
+	heapFloat[(fp+-158)] = f4;
+	heap32[(r4+3)] = 0;
+	f8 = f22*f8;
+	f3 = f23*f3;
+	f1 = f1+f13;
+	f10 = f25*f7;
+	f5 = f15-f5;
+	f0 = f2+f0;
+	f2 = f9+f6;
+	f1 = f1+f10;
+	heapFloat[(fp+-159)] = f1;
+	heapFloat[(r4+4)] = f4;
+	f3 = f8+f3;
+	f4 = f24*f7;
+	f2 = f11-f2;
+	f3 = f3+f4;
+	heapFloat[(fp+-160)] = f3;
+	heapFloat[(r4+5)] = f1;
+	f1 = f12*f5;
+	f4 = f14*f0;
+	heapFloat[(r4+6)] = f3;
+	f3 = f16*f5;
+	f6 = f17*f0;
+	f1 = f1+f4;
+	f4 = f21*f2;
+	f1 = f1+f4;
+	heapFloat[(fp+-161)] = f1;
+	heap32[(r4+7)] = 0;
+	f4 = f22*f5;
+	f0 = f23*f0;
+	f3 = f3+f6;
+	f5 = f25*f2;
+	f3 = f3+f5;
+	heapFloat[(fp+-164)] = f3;
+	heapFloat[(r4+8)] = f1;
+	f0 = f4+f0;
+	f1 = f24*f2;
+	f0 = f0+f1;
+	heapFloat[(fp+-166)] = f0;
+	heapFloat[(r4+9)] = f3;
+	heapFloat[(r4+10)] = f0;
+	heap32[(r4+11)] = 0;
+	f0 = heapFloat[(r2+1)];
+	heapFloat[(r4+16)] = f0;
+	f2 = heapFloat[(r2+2)];
+	heapFloat[(r4+17)] = f2;
+	f3 = heapFloat[(r2+3)];
+	heapFloat[(r4+18)] = f3;
+	f4 = heapFloat[(r2+4)];
+	heapFloat[(r4+19)] = f4;
+	f5 = heapFloat[(r2+5)];
+	heapFloat[(r4+20)] = f5;
+	f6 = heapFloat[(r2+6)];
+	heapFloat[(r4+21)] = f6;
+	f7 = heapFloat[(r2+7)];
+	heapFloat[(r4+22)] = f7;
+	f8 = heapFloat[(r2+8)];
+	heapFloat[(r4+23)] = f8;
+	f9 = heapFloat[(r2+9)];
+	heapFloat[(r4+24)] = f9;
+	f10 = heapFloat[(r2+10)];
+	heapFloat[(r4+25)] = f10;
+	f11 = heapFloat[(r2+11)];
+	heapFloat[(r4+26)] = f11;
+	f1 = heapFloat[(r2+12)];
+	heapFloat[(r4+27)] = f1;
+	f12 = heapFloat[(r2+13)];
+	heapFloat[(r4+28)] = f12;
+	f13 = heapFloat[(r2+14)];
+	heapFloat[(r4+29)] = f13;
+	f14 = heapFloat[(r2+15)];
+	heapFloat[(r4+30)] = f14;
+	f15 = heapFloat[(r2+16)];
+	heapFloat[(r4+31)] = f15;
+	f16 = heapFloat[(r4+12)];
+	heapFloat[(fp+-165)] = f16;
+	f16 = heapFloat[(r4+13)];
+	heapFloat[(fp+-167)] = f16;
+	f16 = heapFloat[(r4+14)];
+	heapFloat[(fp+-168)] = f16;
+	f16 = heapFloat[(r4+15)];
+	f17 =                         0;
+	heapFloat[(fp+-162)] = f17;
+	heapFloat[(fp+-163)] = f17;
+}
+	r10 = _ZTV24btPerturbedContactResult;
+	r11 = sp + -616;
+	r12 = heap32[(r5+5)];
+	r10 = (r10 + 8)|0;
+	r13 = r11 >> 2;
+	heap32[(fp+-154)] = r10;
+	heap32[(r13+40)] = r6;
+	f18 = heapFloat[(fp+-155)];
+	heapFloat[(r13+41)] = f18;
+	f18 = heapFloat[(fp+-156)];
+	heapFloat[(r13+42)] = f18;
+	f18 = heapFloat[(fp+-157)];
+	heapFloat[(r13+43)] = f18;
+	f22 = heapFloat[(fp+-163)];
+	heapFloat[(r13+44)] = f22;
+	f18 = heapFloat[(fp+-158)];
+	heapFloat[(r13+45)] = f18;
+	f18 = heapFloat[(fp+-159)];
+	heapFloat[(r13+46)] = f18;
+	f18 = heapFloat[(fp+-160)];
+	heapFloat[(r13+47)] = f18;
+	f22 = heapFloat[(fp+-162)];
+	heapFloat[(r13+48)] = f22;
+	f18 = heapFloat[(fp+-161)];
+	heapFloat[(r13+49)] = f18;
+	f18 = heapFloat[(fp+-164)];
+	heapFloat[(r13+50)] = f18;
+	f18 = heapFloat[(fp+-166)];
+	heapFloat[(r13+51)] = f18;
+	heapFloat[(r13+52)] = f17;
+	f17 = heapFloat[(fp+-165)];
+	heapFloat[(r13+53)] = f17;
+	f17 = heapFloat[(fp+-167)];
+	heapFloat[(r13+54)] = f17;
+	f17 = heapFloat[(fp+-168)];
+	heapFloat[(r13+55)] = f17;
+	heapFloat[(r13+56)] = f16;
+	heapFloat[(r13+57)] = f0;
+	heapFloat[(r13+58)] = f2;
+	heapFloat[(r13+59)] = f3;
+	heapFloat[(r13+60)] = f4;
+	heapFloat[(r13+61)] = f5;
+	heapFloat[(r13+62)] = f6;
+	heapFloat[(r13+63)] = f7;
+	heapFloat[(r13+64)] = f8;
+	heapFloat[(r13+65)] = f9;
+	heapFloat[(r13+66)] = f10;
+	heapFloat[(r13+67)] = f11;
+	heapFloat[(r13+68)] = f1;
+	heapFloat[(r13+69)] = f12;
+	heapFloat[(r13+70)] = f13;
+	heapFloat[(r13+71)] = f14;
+	heapFloat[(r13+72)] = f15;
+	f0 = heapFloat[(fp+-176)];
+	heapFloat[(r13+73)] = f0;
+	f0 = heapFloat[(fp+-177)];
+	heapFloat[(r13+74)] = f0;
+	f0 = heapFloat[(fp+-178)];
+	heapFloat[(r13+75)] = f0;
+	f0 = heapFloat[(fp+-179)];
+	heapFloat[(r13+76)] = f0;
+	f0 = heapFloat[(fp+-180)];
+	heapFloat[(r13+77)] = f0;
+	f0 = heapFloat[(fp+-181)];
+	heapFloat[(r13+78)] = f0;
+	f0 = heapFloat[(fp+-182)];
+	heapFloat[(r13+79)] = f0;
+	f0 = heapFloat[(fp+-183)];
+	heapFloat[(r13+80)] = f0;
+	f0 = heapFloat[(fp+-184)];
+	heapFloat[(r13+81)] = f0;
+	f0 = heapFloat[(fp+-185)];
+	heapFloat[(r13+82)] = f0;
+	f0 = heapFloat[(fp+-186)];
+	heapFloat[(r13+83)] = f0;
+	f0 = heapFloat[(fp+-187)];
+	heapFloat[(r13+84)] = f0;
+	f0 = heapFloat[(fp+-188)];
+	heapFloat[(r13+85)] = f0;
+	f0 = heapFloat[(fp+-189)];
+	heapFloat[(r13+86)] = f0;
+	f0 = heapFloat[(fp+-190)];
+	heapFloat[(r13+87)] = f0;
+	f0 = heapFloat[(fp+-191)];
+	heapFloat[(r13+88)] = f0;
+	heap8[sp+-260] = r9;
+	heap32[(r13+90)] = r12;
+	heap32[(g0)] = r15;
+	heap32[(g0+1)] = r3;
+	heap32[(g0+2)] = r11;
+	heap32[(g0+3)] = r12;
+	heap32[(g0+4)] = 0;
+	_ZN17btGjkPairDetector16getClosestPointsERKN36btDiscreteCollisionDetectorInterface17ClosestPointInputERNS0_6ResultEP12btIDebugDrawb(i7);
+}
+else{
+break _78;
+}
+}
+else{
+break _78;
+}
+}
+	r14 = (r14 + 1)|0;
+}
+else{
+break _63;
+}
+}
+	r0 = _2E_str115;
+	r1 = _2E_str685;
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r1;
+	heap32[(g0+2)] = 61;
+	_assert(i7);
+}
+}
+} while(0);
+	r0 = heapU8[r0+16];
+	if(r0 ==0) //_LBB301_47
+{
+__label__ = 44;
+}
+else{
+	r0 = heap32[(r7+1)];
+	if(r0 !=0) //_LBB301_76
+{
+	r1 = r0 >> 2;
+	r2 = heap32[(r1+279)];
+	if(r2 ==0) //_LBB301_47
+{
+__label__ = 44;
+}
+else{
+	r1 = heap32[(r1+277)];
+	r2 = heap32[(r7+34)];
+	if(r1 ==r2) //_LBB301_79
+{
+__label__ = 43;
+}
+else{
+	r1 = (r6 + 72)|0;
+	r6 = (r6 + 8)|0;
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r1;
+	heap32[(g0+2)] = r6;
+	_ZN20btPersistentManifold20refreshContactPointsERK11btTransformS2_(i7);
+	return;
+}
+}
+}
+else{
+	r0 = _2E_str59;
+	r6 = _2E_str160;
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r6;
+	heap32[(g0+2)] = 101;
+	_assert(i7);
+}
+}
+}
+switch(__label__ ){//multiple entries
+case 44:
+	return;
+break;
+case 43:
+	r1 = (r6 + 8)|0;
+	r2 = (r6 + 72)|0;
+break;
+}
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r1;
+	heap32[(g0+2)] = r2;
+	_ZN20btPersistentManifold20refreshContactPointsERK11btTransformS2_(i7);
+	return;
+}
+
+function _ZN23btConvexConvexAlgorithmD0Ev(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+var __label__ = 0;
+	i7 = sp + -8;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = _ZTV23btConvexConvexAlgorithm;
+	r2 = r0 >> 2;
+	r1 = (r1 + 8)|0;
+	heap32[(r2)] = r1;
+	r1 = heapU8[r0+16];
+if(!(r1 ==0)) //_LBB302_3
+{
+	r1 = heap32[(r2+5)];
+if(!(r1 ==0)) //_LBB302_3
+{
+	r3 = heap32[(r2+1)];
+	r4 = r3 >> 2;
+	r4 = heap32[(r4)];
+	r4 = r4 >> 2;
+	r4 = heap32[(r4+4)];
+	heap32[(g0)] = r3;
+	heap32[(g0+1)] = r1;
+	__FUNCTION_TABLE__[(r4)>>2](i7);
+}
+}
+	r1 = _ZTV30btActivatingCollisionAlgorithm;
+	r1 = (r1 + 8)|0;
+	heap32[(r2)] = r1;
+	heap32[(g0)] = r0;
+	_ZdlPv(i7);
+	return;
+}
+
+function _ZN23btConvexConvexAlgorithmD1Ev(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+var __label__ = 0;
+	i7 = sp + -8;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = _ZTV23btConvexConvexAlgorithm;
+	r2 = r0 >> 2;
+	r1 = (r1 + 8)|0;
+	heap32[(r2)] = r1;
+	r0 = heapU8[r0+16];
+if(!(r0 ==0)) //_LBB303_3
+{
+	r0 = heap32[(r2+5)];
+if(!(r0 ==0)) //_LBB303_3
+{
+	r1 = heap32[(r2+1)];
+	r3 = r1 >> 2;
+	r3 = heap32[(r3)];
+	r3 = r3 >> 2;
+	r3 = heap32[(r3+4)];
+	heap32[(g0)] = r1;
+	heap32[(g0+1)] = r0;
+	__FUNCTION_TABLE__[(r3)>>2](i7);
+}
+}
+	r0 = _ZTV30btActivatingCollisionAlgorithm;
+	r0 = (r0 + 8)|0;
+	heap32[(r2)] = r0;
+	return;
+}
+
+function _ZN31btConvexPlaneCollisionAlgorithm21calculateTimeOfImpactEP17btCollisionObjectS1_RK16btDispatcherInfoP16btManifoldResult(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var f0;
+var __label__ = 0;
+	i7 = sp + 0;var g0 = i7>>2; // save stack
+	f0 =                         1;
+	f_g0 = f0;
+	return;
+}
+
+function _ZN31btConvexPlaneCollisionAlgorithm22getAllContactManifoldsER20btAlignedObjectArrayIP20btPersistentManifoldE(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+	var r6;
+	var r7;
+	var r8;
+	var r9;
+	var r10;
+	var r11;
+var __label__ = 0;
+	i7 = sp + -8;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = r0 >> 2;
+	r2 = heap32[(r1+3)];
+if(!(r2 ==0)) //_LBB305_23
+{
+	r0 = heapU8[r0+8];
+if(!(r0 ==0)) //_LBB305_23
+{
+	r0 = heap32[(fp+1)];
+	r3 = r0 >> 2;
+	r4 = heap32[(r3+2)];
+	r5 = heap32[(r3+1)];
+	if(r4 ==r5) //_LBB305_4
+{
+	r6 = 1;
+	r7 = r5 << 1;
+	r7 = r5 == 0 ? r6 : r7;
+if(!(r4 >=r7)) //_LBB305_3
+{
+	if(r7 !=0) //_LBB305_7
+{
+	r2 = gNumAlignedAllocs;
+	r2 = r2 >> 2;
+	r4 = heap32[(r2)];
+	r8 = r7 << 2;
+	r4 = (r4 + 1)|0;
+	r8 = r8 | 3;
+	heap32[(r2)] = r4;
+	r2 = (r8 + 16)|0;
+	heap32[(g0)] = r2;
+	malloc(i7);
+	r2 = r_g0;
+	if(r2 !=0) //_LBB305_9
+{
+	r4 = 0;
+	r8 = (r2 + 4)|0;
+	r4 = (r4 - r8)|0;
+	r4 = r4 & 15;
+	r4 = (r2 + r4)|0;
+	r8 = (r4 + 4)|0;
+	r4 = r4 >> 2;
+	heap32[(r4)] = r2;
+	r2 = r8;
+}
+}
+else{
+	r2 = 0;
+}
+	r4 = (r0 + 12)|0;
+	if(r5 <1) //_LBB305_12
+{
+	r8 = r4 >> 2;
+	r9 = heap32[(r8)];
+}
+else{
+	r8 = 0;
+_15: while(true){
+	r9 = r4 >> 2;
+	r9 = heap32[(r9)];
+	r10 = r8 << 2;
+	r11 = (r9 + r10)|0;
+	r11 = r11 >> 2;
+	r10 = (r2 + r10)|0;
+	r11 = heap32[(r11)];
+	r8 = (r8 + 1)|0;
+	r10 = r10 >> 2;
+	heap32[(r10)] = r11;
+if(!(r5 !=r8)) //_LBB305_13
+{
+break _15;
+}
+}
+	r4 = (r0 + 12)|0;
+}
+	if(r9 !=0) //_LBB305_17
+{
+	r8 = heapU8[r0+16];
+	if(r8 !=0) //_LBB305_19
+{
+	r5 = gNumAlignedFree;
+	r5 = r5 >> 2;
+	r8 = heap32[(r5)];
+	r8 = (r8 + 1)|0;
+	r9 = r9 >> 2;
+	heap32[(r5)] = r8;
+	r5 = heap32[(r9+-1)];
+	heap32[(g0)] = r5;
+	free(i7);
+	r5 = heap32[(r3+1)];
+}
+	r8 = r4 >> 2;
+	heap32[(r8)] = 0;
+}
+	r4 = r4 >> 2;
+	heap8[r0+16] = r6;
+	heap32[(r4)] = r2;
+	heap32[(r3+2)] = r7;
+	r2 = heap32[(r1+3)];
+}
+}
+	r0 = r5 << 2;
+	r1 = heap32[(r3+3)];
+	r0 = (r1 + r0)|0;
+	r0 = r0 >> 2;
+	heap32[(r0)] = r2;
+	r0 = heap32[(r3+1)];
+	r0 = (r0 + 1)|0;
+	heap32[(r3+1)] = r0;
+}
+}
+	return;
+}
+
+function _ZN31btConvexPlaneCollisionAlgorithm20collideSingleContactERK12btQuaternionP17btCollisionObjectS4_RK16btDispatcherInfoP16btManifoldResult(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+	var r6;
+	var f0;
+	var f1;
+	var f2;
+	var f3;
+	var f4;
+	var f5;
+	var f6;
+	var f7;
+	var f8;
+	var f9;
+	var f10;
+	var f11;
+	var f12;
+	var f13;
+	var f14;
+	var f15;
+	var f16;
+	var f17;
+	var f18;
+	var f19;
+	var f20;
+	var f21;
+	var f22;
+	var f23;
+	var f24;
+	var f25;
+	var f26;
+	var f27;
+	var f28;
+	var f29;
+	var f30;
+var __label__ = 0;
+	i7 = sp + -136;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp+1)];
+	r0 = r0 >> 2;
+	f0 = heapFloat[(r0)];
+	f1 = heapFloat[(r0+1)];
+	f2 = heapFloat[(r0+2)];
+	f3 = f0*f0;
+	f4 = f1*f1;
+	f5 = heapFloat[(r0+3)];
+	f3 = f3+f4;
+	f4 = f2*f2;
+	f3 = f3+f4;
+	f4 = f5*f5;
+	f6 =                         2;
+	f3 = f3+f4;
+	f3 = f6/f3;
+	r0 = heap32[(fp)];
+	f4 = f2*f3;
+	f6 = f1*f3;
+	r1 = heapU8[r0+16];
+	r2 = heap32[(fp+3)];
+	r3 = heap32[(fp+2)];
+	f3 = f0*f3;
+	r4 = r1 == 0 ? r3 : r2;
+	f7 = f1*f6;
+	f2 = f2*f4;
+	r4 = r4 >> 2;
+	f8 = f0*f3;
+	f9 =                         1;
+	f10 = f7+f2;
+	f11 = f0*f6;
+	f12 = f5*f4;
+	f2 = f8+f2;
+	f10 = f9-f10;
+	f13 = heapFloat[(r4+1)];
+	heapFloat[(fp+-17)] = f13;
+	f13 = heapFloat[(r4+5)];
+	heapFloat[(fp+-18)] = f13;
+	f14 = f11+f12;
+	f13 = heapFloat[(r4+2)];
+	heapFloat[(fp+-19)] = f13;
+	f13 = heapFloat[(r4+6)];
+	heapFloat[(fp+-20)] = f13;
+	f0 = f0*f4;
+	f6 = f5*f6;
+	f11 = f11-f12;
+	f2 = f9-f2;
+	f12 = heapFloat[(r4+9)];
+	heapFloat[(fp+-24)] = f12;
+	f15 = heapFloat[(r4+10)];
+	heapFloat[(fp+-25)] = f15;
+	r1 = r1 == 0 ? r2 : r3;
+	f1 = f1*f4;
+	f3 = f5*f3;
+	f13 = heapFloat[(fp+-17)];
+	f4 = f10*f13;
+	f13 = heapFloat[(fp+-19)];
+	f5 = f14*f13;
+	f13 = heapFloat[(fp+-18)];
+	f16 = f10*f13;
+	f13 = heapFloat[(fp+-20)];
+	f17 = f14*f13;
+	f18 = f0-f6;
+	f19 = heapFloat[(r4+3)];
+	heapFloat[(fp+-26)] = f19;
+	f20 = heapFloat[(r4+7)];
+	heapFloat[(fp+-27)] = f20;
+	r1 = r1 >> 2;
+	f0 = f0+f6;
+	f6 = f1-f3;
+	f1 = f1+f3;
+	f3 = heapFloat[(r4+11)];
+	heapFloat[(fp+-21)] = f3;
+	f7 = f8+f7;
+	f13 = heapFloat[(fp+-17)];
+	f8 = f11*f13;
+	f13 = heapFloat[(fp+-19)];
+	f21 = f2*f13;
+	f13 = heapFloat[(fp+-18)];
+	f22 = f11*f13;
+	f13 = heapFloat[(fp+-20)];
+	f23 = f2*f13;
+	f4 = f4+f5;
+	f5 = f18*f19;
+	f16 = f16+f17;
+	f17 = f18*f20;
+	f10 = f10*f12;
+	f14 = f14*f15;
+	f7 = f9-f7;
+	f9 = heapFloat[(r1+2)];
+	f24 = heapFloat[(r1+6)];
+	f25 = heapFloat[(r1+1)];
+	f26 = heapFloat[(r1+5)];
+	f4 = f4+f5;
+	f5 = f16+f17;
+	r2 = heap32[(r1+48)];
+	f13 = heapFloat[(fp+-17)];
+	f16 = f0*f13;
+	f13 = heapFloat[(fp+-19)];
+	f17 = f6*f13;
+	f13 = heapFloat[(fp+-18)];
+	f27 = f0*f13;
+	f13 = heapFloat[(fp+-20)];
+	f28 = f6*f13;
+	f8 = f8+f21;
+	f21 = f1*f19;
+	f22 = f22+f23;
+	f23 = f1*f20;
+	f11 = f11*f12;
+	f2 = f2*f15;
+	f10 = f10+f14;
+	f14 = f18*f3;
+	f18 = heapFloat[(r1+3)];
+	f29 = heapFloat[(r1+7)];
+	f8 = f8+f21;
+	f21 = f22+f23;
+	f22 = heapFloat[(r1+10)];
+	f23 = heapFloat[(r1+9)];
+	r2 = r2 >> 2;
+	f10 = f10+f14;
+	r3 = heap32[(r4+48)];
+	f14 = f16+f17;
+	f16 = f7*f19;
+	f17 = f27+f28;
+	f27 = f7*f20;
+	f0 = f0*f12;
+	f6 = f6*f15;
+	f2 = f11+f2;
+	f1 = f1*f3;
+	f11 = f25*f4;
+	f28 = f26*f5;
+	f30 = f9*f4;
+	f3 = f24*f5;
+	f12 = heapFloat[(r1+11)];
+	f14 = f14+f16;
+	f16 = f17+f27;
+	f1 = f2+f1;
+	r5 = r3 >> 2;
+	f2 = heapFloat[(r2+12)];
+	f0 = f0+f6;
+	f6 = heapFloat[(fp+-21)];
+	f7 = f7*f6;
+	f17 = f25*f8;
+	f27 = f26*f21;
+	f6 = f9*f8;
+	f13 = f24*f21;
+	f11 = f11+f28;
+	f28 = f23*f10;
+	f3 = f30+f3;
+	f30 = f22*f10;
+	f4 = f18*f4;
+	f5 = f29*f5;
+	f0 = f0+f7;
+	r5 = heap32[(r5)];
+	f7 = f25*f14;
+	f15 = f26*f16;
+	f19 = f9*f14;
+	f20 = f24*f16;
+	f17 = f17+f27;
+	f27 = f23*f1;
+	f6 = f6+f13;
+	f13 = f22*f1;
+	f8 = f18*f8;
+	f21 = f29*f21;
+	f11 = f11+f28;
+	f2 = -f2;
+	f3 = f3+f30;
+	f28 = heapFloat[(r2+13)];
+	f4 = f4+f5;
+	f5 = f12*f10;
+	r5 = r5 >> 2;
+	f10 = f17+f27;
+	f6 = f6+f13;
+	f7 = f7+f15;
+	f13 = f23*f0;
+	f15 = f19+f20;
+	f17 = f22*f0;
+	f14 = f18*f14;
+	f16 = f29*f16;
+	f8 = f8+f21;
+	f1 = f12*f1;
+	f11 = f11*f2;
+	f3 = f3*f28;
+	f4 = f4+f5;
+	f5 = heapFloat[(r2+14)];
+	f19 = heapFloat[(r4+13)];
+	heapFloat[(fp+-22)] = f19;
+	f19 = heapFloat[(r4+14)];
+	heapFloat[(fp+-23)] = f19;
+	f20 = heapFloat[(r4+15)];
+	heapFloat[(fp+-28)] = f20;
+	f21 = heapFloat[(r1+14)];
+	f27 = heapFloat[(r1+15)];
+	heapFloat[(fp+-29)] = f27;
+	f7 = f7+f13;
+	f13 = f15+f17;
+	f1 = f8+f1;
+	f8 = heapFloat[(r1+13)];
+	r4 = heap32[(r5+15)];
+	f14 = f14+f16;
+	f0 = f12*f0;
+	f10 = f10*f2;
+	f6 = f6*f28;
+	f3 = f11-f3;
+	f4 = f4*f5;
+	r5 = sp + -16;
+	f0 = f14+f0;
+	f2 = f7*f2;
+	f7 = f13*f28;
+	f6 = f10-f6;
+	f1 = f1*f5;
+	f3 = f3-f4;
+	r6 = r5 >> 2;
+	f2 = f2-f7;
+	f0 = f0*f5;
+	f1 = f6-f1;
+	heapFloat[(fp+-4)] = f3;
+	f0 = f2-f0;
+	heapFloat[(r6+1)] = f1;
+	heapFloat[(r6+2)] = f0;
+	heap32[(r6+3)] = 0;
+	r6 = sp + -32;
+	heap32[(g0)] = r6;
+	heap32[(g0+1)] = r3;
+	heap32[(g0+2)] = r5;
+	f13 = heapFloat[(fp+-17)];
+	f0 = f13*f9;
+	f13 = heapFloat[(fp+-18)];
+	f1 = f13*f24;
+	f13 = heapFloat[(fp+-19)];
+	f2 = f13*f9;
+	f13 = heapFloat[(fp+-20)];
+	f3 = f13*f24;
+	f13 = heapFloat[(fp+-17)];
+	f4 = f13*f25;
+	f13 = heapFloat[(fp+-18)];
+	f5 = f13*f26;
+	f13 = heapFloat[(fp+-19)];
+	f6 = f13*f25;
+	f13 = heapFloat[(fp+-20)];
+	f7 = f13*f26;
+	__FUNCTION_TABLE__[(r4)>>2](i7);
+	f8 = -f8;
+	r3 = r6 >> 2;
+	f13 = heapFloat[(fp+-17)];
+	f10 = f13*f18;
+	f13 = heapFloat[(fp+-18)];
+	f11 = f13*f29;
+	f13 = heapFloat[(fp+-19)];
+	f13 = f13*f18;
+	f14 = heapFloat[(fp+-20)];
+	f14 = f14*f29;
+	f0 = f0+f1;
+	f1 = heapFloat[(fp+-24)];
+	f15 = f1*f22;
+	f2 = f2+f3;
+	f3 = heapFloat[(fp+-25)];
+	f16 = f3*f22;
+	f19 = heapFloat[(fp+-26)];
+	f17 = f19*f9;
+	f20 = heapFloat[(fp+-27)];
+	f28 = f20*f24;
+	f4 = f4+f5;
+	f5 = f1*f23;
+	f6 = f6+f7;
+	f7 = f3*f23;
+	f30 = f19*f25;
+	f1 = f20*f26;
+	f10 = f10+f11;
+	f11 = heapFloat[(fp+-24)];
+	f11 = f11*f12;
+	f13 = f13+f14;
+	f3 = f3*f12;
+	f14 = f19*f18;
+	f19 = f20*f29;
+	f0 = f0+f15;
+	f15 = heapFloat[(fp+-8)];
+	f4 = f4+f5;
+	f2 = f2+f16;
+	f5 = heapFloat[(r3+1)];
+	f6 = f6+f7;
+	f7 = f17+f28;
+	f16 = heapFloat[(fp+-21)];
+	f17 = f16*f22;
+	f20 = heapFloat[(fp+-22)];
+	f28 = f9*f20;
+	f16 = heapFloat[(fp+-23)];
+	f16 = f24*f16;
+	f9 = f9*f8;
+	f24 = f24*f21;
+	f1 = f30+f1;
+	f30 = heapFloat[(fp+-21)];
+	f20 = f30*f23;
+	f27 = heapFloat[(fp+-22)];
+	f27 = f25*f27;
+	f30 = heapFloat[(fp+-23)];
+	f30 = f26*f30;
+	f25 = f25*f8;
+	f26 = f26*f21;
+	f10 = f10+f11;
+	f3 = f13+f3;
+	f11 = f14+f19;
+	f13 = heapFloat[(fp+-21)];
+	f13 = f13*f12;
+	f14 = heapFloat[(fp+-22)];
+	f14 = f18*f14;
+	f19 = heapFloat[(fp+-23)];
+	f19 = f29*f19;
+	f8 = f18*f8;
+	f18 = f29*f21;
+	f0 = f0*f15;
+	f2 = f2*f5;
+	f7 = f7+f17;
+	f17 = heapFloat[(r3+2)];
+	f1 = f1+f20;
+	f16 = f28+f16;
+	f20 = heapFloat[(fp+-28)];
+	f21 = f22*f20;
+	f9 = f9-f24;
+	f24 = heapFloat[(fp+-29)];
+	f22 = f22*f24;
+	f4 = f4*f15;
+	f6 = f6*f5;
+	f27 = f27+f30;
+	f28 = f23*f20;
+	f25 = f25-f26;
+	f23 = f23*f24;
+	f11 = f11+f13;
+	f10 = f10*f15;
+	f3 = f3*f5;
+	f5 = f14+f19;
+	f13 = f12*f20;
+	f8 = f8-f18;
+	f12 = f12*f24;
+	f0 = f0+f2;
+	f2 = f7*f17;
+	f7 = f16+f21;
+	f9 = f9-f22;
+	f4 = f4+f6;
+	f1 = f1*f17;
+	f6 = f27+f28;
+	f14 = f25-f23;
+	f3 = f10+f3;
+	f10 = f11*f17;
+	f5 = f5+f13;
+	f8 = f8-f12;
+	f0 = f0+f2;
+	f2 = f7+f9;
+	f1 = f4+f1;
+	f4 = f6+f14;
+	f3 = f3+f10;
+	f5 = f5+f8;
+	f0 = f0+f2;
+	f2 = heapFloat[(r2+13)];
+	f1 = f1+f4;
+	f4 = heapFloat[(r2+12)];
+	f6 = f4*f1;
+	f7 = f2*f0;
+	f3 = f3+f5;
+	f5 = heapFloat[(r2+14)];
+	r0 = r0 >> 2;
+	f6 = f6+f7;
+	f7 = f5*f3;
+	r0 = heap32[(r0+3)];
+	f6 = f6+f7;
+	f7 = heapFloat[(r2+16)];
+	f6 = f6-f7;
+	r3 = r0 >> 2;
+	r4 = heap32[(fp+4)];
+	f7 = heapFloat[(r1+9)];
+	f8 = heapFloat[(r1+10)];
+	f9 = heapFloat[(r1+11)];
+	f10 = heapFloat[(r1+15)];
+	f11 = heapFloat[(r1+5)];
+	f12 = heapFloat[(r1+6)];
+	f13 = heapFloat[(r1+7)];
+	f14 = heapFloat[(r1+14)];
+	f15 = heapFloat[(r1+1)];
+	f16 = heapFloat[(r1+2)];
+	f17 = heapFloat[(r1+3)];
+	f18 = heapFloat[(r1+13)];
+	f19 = heapFloat[(r3+280)];
+	r3 = r4 >> 2;
+	heap32[(r3+1)] = r0;
+if(!(f19 <=f6)) //_LBB306_2
+{
+	f5 = f5*f6;
+	f2 = f2*f6;
+	f4 = f4*f6;
+	f3 = f3-f5;
+	f0 = f0-f2;
+	f1 = f1-f4;
+	f2 = heapFloat[(r2+12)];
+	f4 = heapFloat[(r1+1)];
+	f5 = heapFloat[(r2+13)];
+	f19 = heapFloat[(r1+2)];
+	f20 = heapFloat[(r1+5)];
+	f21 = heapFloat[(r1+6)];
+	f4 = f4*f2;
+	f19 = f19*f5;
+	f22 = heapFloat[(r2+14)];
+	f23 = heapFloat[(r1+3)];
+	f24 = heapFloat[(r1+9)];
+	f25 = heapFloat[(r1+10)];
+	f26 = heapFloat[(r1+11)];
+	f27 = heapFloat[(r1+7)];
+	f20 = f20*f2;
+	f21 = f21*f5;
+	f4 = f4+f19;
+	f19 = f23*f22;
+	r0 = sp + -48;
+	f2 = f24*f2;
+	f5 = f25*f5;
+	f20 = f20+f21;
+	f21 = f27*f22;
+	f4 = f4+f19;
+	f15 = f15*f1;
+	f16 = f16*f0;
+	r1 = r0 >> 2;
+	f2 = f2+f5;
+	f5 = f26*f22;
+	f19 = f20+f21;
+	heapFloat[(fp+-12)] = f4;
+	f4 = f11*f1;
+	f11 = f12*f0;
+	f12 = f15+f16;
+	f15 = f17*f3;
+	f2 = f2+f5;
+	heapFloat[(r1+1)] = f19;
+	heapFloat[(r1+2)] = f2;
+	f1 = f7*f1;
+	f0 = f8*f0;
+	f2 = f4+f11;
+	f4 = f13*f3;
+	f5 = f12+f15;
+	r2 = sp + -64;
+	f0 = f1+f0;
+	f1 = f9*f3;
+	f2 = f2+f4;
+	f3 = f5+f18;
+	heap32[(r1+3)] = 0;
+	r1 = r2 >> 2;
+	f0 = f0+f1;
+	f1 = f2+f14;
+	heapFloat[(fp+-16)] = f3;
+	f0 = f0+f10;
+	heapFloat[(r1+1)] = f1;
+	heapFloat[(r1+2)] = f0;
+	heap32[(r1+3)] = 0;
+	r1 = heap32[(r3)];
+	r1 = r1 >> 2;
+	r1 = heap32[(r1+4)];
+	heap32[(g0)] = r4;
+	heap32[(g0+1)] = r0;
+	heap32[(g0+2)] = r2;
+	heapFloat[(g0+3)] = f6;
+	__FUNCTION_TABLE__[(r1)>>2](i7);
+}
+	return;
+}
+
+function _ZN31btConvexPlaneCollisionAlgorithm16processCollisionEP17btCollisionObjectS1_RK16btDispatcherInfoP16btManifoldResult(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+	var r6;
+	var r7;
+	var r8;
+	var r9;
+	var f0;
+	var f1;
+	var f2;
+	var f3;
+	var f4;
+	var f5;
+	var f6;
+	var f7;
+	var f8;
+	var f9;
+	var f10;
+	var f11;
+	var f12;
+	var f13;
+	var f14;
+	var f15;
+	var f16;
+	var f17;
+	var f18;
+var __label__ = 0;
+	i7 = sp + -56;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = r0 >> 2;
+	r2 = heap32[(r1+3)];
+if(!(r2 ==0)) //_LBB307_23
+{
+	r2 = heap32[(fp+1)];
+	r3 = heap32[(fp+2)];
+	r4 = heap32[(fp+4)];
+	r5 = heapU8[r0+16];
+	r6 = r5 == 0 ? r2 : r3;
+	r5 = r5 == 0 ? r3 : r2;
+	r6 = r6 >> 2;
+	r5 = r5 >> 2;
+	r6 = heap32[(r6+48)];
+	r5 = heap32[(r5+48)];
+	r7 = sp + -32;
+	r8 = r7 >> 2;
+	heap32[(fp+-8)] = 0;
+	heap32[(r8+1)] = 0;
+	heap32[(r8+2)] = 0;
+	heap32[(r8+3)] = 1065353216;
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r7;
+	heap32[(g0+2)] = r2;
+	heap32[(g0+3)] = r3;
+	heap32[(g0+4)] = r4;
+	r7 = r4 >> 2;
+	_ZN31btConvexPlaneCollisionAlgorithm20collideSingleContactERK12btQuaternionP17btCollisionObjectS4_RK16btDispatcherInfoP16btManifoldResult(i7);
+	r8 = heap32[(r7+1)];
+	r8 = r8 >> 2;
+	r8 = heap32[(r8+279)];
+	r9 = heap32[(r1+6)];
+_3: do {
+if(!(r8 >=r9)) //_LBB307_15
+{
+	r5 = r5 >> 2;
+	f0 = heapFloat[(r5+14)];
+	f1 =                         0;
+	if(f0 <f1) //_LBB307_4
+{
+	f2 = -f0;
+}
+else{
+	f2 = f0;
+}
+	f3 =       0.70710676908493042;
+	if(f2 <=f3) //_LBB307_7
+{
+	f0 = heapFloat[(r5+12)];
+	f2 = heapFloat[(r5+13)];
+	f0 = f0*f0;
+	f2 = f2*f2;
+	f0 = f0+f2;
+	heapFloat[(g0)] = f0;
+	sqrtf(i7);
+	f2 = heapFloat[(r5+13)];
+	f3 =                         1;
+	f2 = -f2;
+	f0 = f3/f_g0;
+	f4 = heapFloat[(r5+12)];
+	f3 = f0*f2;
+	f2 = f4*f0;
+	f0 = f1;
+}
+else{
+	f2 = heapFloat[(r5+13)];
+	f2 = f2*f2;
+	f0 = f0*f0;
+	f0 = f2+f0;
+	heapFloat[(g0)] = f0;
+	sqrtf(i7);
+	f2 = heapFloat[(r5+14)];
+	f3 =                         1;
+	f2 = -f2;
+	f0 = f3/f_g0;
+	f3 = heapFloat[(r5+13)];
+	f2 = f0*f2;
+	f0 = f3*f0;
+	f3 =                         0;
+}
+	r8 = r6 >> 2;
+	r8 = heap32[(r8)];
+	r8 = r8 >> 2;
+	r8 = heap32[(r8+4)];
+	heap32[(g0)] = r6;
+	f4 = f3*f3;
+	f5 = f2*f2;
+	__FUNCTION_TABLE__[(r8)>>2](i7);
+	f6 = f_g0;
+	f4 = f4+f5;
+	f5 = f0*f0;
+	f4 = f4+f5;
+	heapFloat[(g0)] = f4;
+	sqrtf(i7);
+	f4 = f_g0;
+	if(f4 !=f1) //_LBB307_10
+{
+	f1 =      0.019999999552965164;
+	f1 = f1/f6;
+	f5 =                       0.5;
+	f6 =       0.39269909262657166;
+	f7 =       0.19634954631328583;
+	f8 = f1*f5;
+	f1 = f1 > f6 ? f7 : f8;
+	heapFloat[(g0)] = f1;
+	sinf(i7);
+	heapFloat[(g0)] = f1;
+	f1 = f_g0/f4;
+	f0 = f0*f1;
+	f2 = f2*f1;
+	f1 = f3*f1;
+	r6 = 0;
+	cosf(i7);
+	f3 = f_g0;
+_15: while(true){
+	r8 = heap32[(r1+5)];
+	if(r8 >r6) //_LBB307_11
+{
+	f4 = heapFloat[(r5+12)];
+	f6 = heapFloat[(r5+13)];
+	f7 = heapFloat[(r5+14)];
+	f4 = f4*f4;
+	f6 = f6*f6;
+	f4 = f4+f6;
+	f6 = f7*f7;
+	f4 = f4+f6;
+	heapFloat[(g0)] = f4;
+	sqrtf(i7);
+	f4 = f_g0;
+	f6 =                         0;
+	if(f4 !=f6) //_LBB307_13
+{
+	f6 =        6.2831854820251465;
+	f7 = r8; //fitos r8, f7
+	f8 = r6; //fitos r6, f8
+	f6 = f6/f7;
+	f6 = f8*f6;
+	f6 = f6*f5;
+	heapFloat[(g0)] = f6;
+	sinf(i7);
+	f7 = f_g0;
+	heapFloat[(g0)] = f6;
+	cosf(i7);
+	f4 = f7/f4;
+	f7 = heapFloat[(r5+12)];
+	f7 = f7*f4;
+	f8 = heapFloat[(r5+13)];
+	f8 = f8*f4;
+	f9 = heapFloat[(r5+14)];
+	f10 = f_g0*f3;
+	f11 = f1*f7;
+	f12 = f_g0*f1;
+	f13 = f3*f7;
+	f4 = f9*f4;
+	f9 = f10+f11;
+	f10 = f2*f8;
+	f11 = f12-f13;
+	f12 = f0*f8;
+	f13 = f_g0*f2;
+	f14 = f3*f8;
+	f9 = f9+f10;
+	f10 = f0*f4;
+	f11 = f11-f12;
+	f12 = f2*f4;
+	f13 = f13-f14;
+	f14 = f1*f4;
+	f15 = f_g0*f0;
+	f16 = f3*f4;
+	f9 = f9+f10;
+	f10 = f11+f12;
+	f11 = f13-f14;
+	f12 = f0*f7;
+	f13 = f15-f16;
+	f14 = f2*f7;
+	f11 = f11+f12;
+	f12 = f9*f7;
+	f15 = f10*f_g0;
+	f13 = f13-f14;
+	f14 = f1*f8;
+	f13 = f13+f14;
+	f14 = f9*f8;
+	f16 = f11*f_g0;
+	f12 = f12+f15;
+	f15 = f11*f4;
+	f17 = f9*f4;
+	f18 = f13*f_g0;
+	f14 = f14+f16;
+	f16 = f13*f7;
+	f12 = f12+f15;
+	f15 = f13*f8;
+	r8 = sp + -16;
+	f6 = f9*f_g0;
+	f9 = f10*f7;
+	f17 = f17+f18;
+	f18 = f10*f8;
+	f14 = f14+f16;
+	f10 = f10*f4;
+	f12 = f12-f15;
+	r9 = r8 >> 2;
+	f6 = f6-f9;
+	f8 = f11*f8;
+	f9 = f17+f18;
+	f7 = f11*f7;
+	f10 = f14-f10;
+	heapFloat[(fp+-4)] = f12;
+	f6 = f6-f8;
+	f4 = f13*f4;
+	f7 = f9-f7;
+	heapFloat[(r9+1)] = f10;
+	f4 = f6-f4;
+	heapFloat[(r9+2)] = f7;
+	heapFloat[(r9+3)] = f4;
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r8;
+	heap32[(g0+2)] = r2;
+	heap32[(g0+3)] = r3;
+	heap32[(g0+4)] = r4;
+	r6 = (r6 + 1)|0;
+	_ZN31btConvexPlaneCollisionAlgorithm20collideSingleContactERK12btQuaternionP17btCollisionObjectS4_RK16btDispatcherInfoP16btManifoldResult(i7);
+}
+else{
+break _15;
+}
+}
+else{
+break _3;
+}
+}
+}
+	r0 = _2E_str115;
+	r1 = _2E_str685;
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r1;
+	heap32[(g0+2)] = 61;
+	_assert(i7);
+}
+} while(0);
+	r0 = heapU8[r0+8];
+if(!(r0 ==0)) //_LBB307_23
+{
+	r0 = heap32[(r1+3)];
+	r0 = r0 >> 2;
+	r0 = heap32[(r0+279)];
+if(!(r0 ==0)) //_LBB307_23
+{
+	r0 = heap32[(r7+1)];
+	if(r0 !=0) //_LBB307_19
+{
+	r1 = r0 >> 2;
+	r2 = heap32[(r1+279)];
+if(!(r2 ==0)) //_LBB307_23
+{
+	r1 = heap32[(r1+277)];
+	r2 = heap32[(r7+34)];
+	if(r1 ==r2) //_LBB307_22
+{
+	r1 = (r4 + 8)|0;
+	r2 = (r4 + 72)|0;
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r1;
+	heap32[(g0+2)] = r2;
+	_ZN20btPersistentManifold20refreshContactPointsERK11btTransformS2_(i7);
+}
+else{
+	r1 = (r4 + 72)|0;
+	r4 = (r4 + 8)|0;
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r1;
+	heap32[(g0+2)] = r4;
+	_ZN20btPersistentManifold20refreshContactPointsERK11btTransformS2_(i7);
+	return;
+}
+}
+}
+else{
+	r0 = _2E_str59;
+	r4 = _2E_str160;
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r4;
+	heap32[(g0+2)] = 101;
+	_assert(i7);
+}
+}
+}
+}
+	return;
+}
+
+function _ZN31btConvexPlaneCollisionAlgorithmD0Ev(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+var __label__ = 0;
+	i7 = sp + -8;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = _ZTV31btConvexPlaneCollisionAlgorithm;
+	r2 = r0 >> 2;
+	r1 = (r1 + 8)|0;
+	heap32[(r2)] = r1;
+	r1 = heapU8[r0+8];
+if(!(r1 ==0)) //_LBB308_3
+{
+	r1 = heap32[(r2+3)];
+if(!(r1 ==0)) //_LBB308_3
+{
+	r2 = heap32[(r2+1)];
+	r3 = r2 >> 2;
+	r3 = heap32[(r3)];
+	r3 = r3 >> 2;
+	r3 = heap32[(r3+4)];
+	heap32[(g0)] = r2;
+	heap32[(g0+1)] = r1;
+	__FUNCTION_TABLE__[(r3)>>2](i7);
+}
+}
+	heap32[(g0)] = r0;
+	_ZdlPv(i7);
+	return;
+}
+
+function _ZN31btConvexPlaneCollisionAlgorithmD1Ev(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+var __label__ = 0;
+	i7 = sp + -8;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = _ZTV31btConvexPlaneCollisionAlgorithm;
+	r2 = r0 >> 2;
+	r1 = (r1 + 8)|0;
+	heap32[(r2)] = r1;
+	r0 = heapU8[r0+8];
+if(!(r0 ==0)) //_LBB309_3
+{
+	r0 = heap32[(r2+3)];
+if(!(r0 ==0)) //_LBB309_3
+{
+	r1 = heap32[(r2+1)];
+	r2 = r1 >> 2;
+	r2 = heap32[(r2)];
+	r2 = r2 >> 2;
+	r2 = heap32[(r2+4)];
+	heap32[(g0)] = r1;
+	heap32[(g0+1)] = r0;
+	__FUNCTION_TABLE__[(r2)>>2](i7);
+}
+}
+	return;
+}
+
+function _ZN31btDefaultCollisionConfiguration25getPersistentManifoldPoolEv(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+var __label__ = 0;
+	i7 = sp + 0;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r0 = r0 >> 2;
+	r0 = heap32[(r0+4)];
+	r_g0 = r0;
+	return;
+}
+
+function _ZN31btDefaultCollisionConfiguration25getCollisionAlgorithmPoolEv(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+var __label__ = 0;
+	i7 = sp + 0;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r0 = r0 >> 2;
+	r0 = heap32[(r0+6)];
+	r_g0 = r0;
+	return;
+}
+
+function _ZN31btDefaultCollisionConfiguration17getStackAllocatorEv(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+var __label__ = 0;
+	i7 = sp + 0;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r0 = r0 >> 2;
+	r0 = heap32[(r0+2)];
+	r_g0 = r0;
+	return;
+}
+
+function _ZN31btDefaultCollisionConfiguration16getSimplexSolverEv(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+var __label__ = 0;
+	i7 = sp + 0;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r0 = r0 >> 2;
+	r0 = heap32[(r0+8)];
+	r_g0 = r0;
+	return;
+}
+
+function _ZN31btConvexPlaneCollisionAlgorithm10CreateFuncD1Ev(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+var __label__ = 0;
+	i7 = sp + 0;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = _ZTVN31btConvexPlaneCollisionAlgorithm10CreateFuncE;
+	r0 = r0 >> 2;
+	r1 = (r1 + 8)|0;
+	heap32[(r0)] = r1;
+	return;
+}
+
+function _ZN31btConvexPlaneCollisionAlgorithm10CreateFuncD0Ev(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+var __label__ = 0;
+	i7 = sp + -8;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = _ZTVN31btConvexPlaneCollisionAlgorithm10CreateFuncE;
+	r2 = r0 >> 2;
+	r1 = (r1 + 8)|0;
+	heap32[(r2)] = r1;
+	heap32[(g0)] = r0;
+	_ZdlPv(i7);
+	return;
+}
+
+function _ZN31btConvexPlaneCollisionAlgorithm10CreateFunc24CreateCollisionAlgorithmER36btCollisionAlgorithmConstructionInfoP17btCollisionObjectS4_(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+	var r6;
+	var r7;
+	var r8;
+var __label__ = 0;
+	i7 = sp + -16;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp+1)];
+	r0 = r0 >> 2;
+	r1 = heap32[(r0)];
+	r2 = r1 >> 2;
+	r2 = heap32[(r2)];
+	r2 = r2 >> 2;
+	r2 = heap32[(r2+12)];
+	heap32[(g0)] = r1;
+	heap32[(g0+1)] = 28;
+	r1 = heap32[(fp)];
+	__FUNCTION_TABLE__[(r2)>>2](i7);
+	r2 = r_g0;
+	r3 = r1 >> 2;
+	r4 = _ZTV20btCollisionAlgorithm;
+	r5 = heap32[(r3+3)];
+	r3 = heap32[(r3+2)];
+	r1 = heapU8[r1+4];
+	r6 = r2 >> 2;
+	r4 = (r4 + 8)|0;
+	heap32[(r6)] = r4;
+	r0 = heap32[(r0)];
+	r4 = _ZTV31btConvexPlaneCollisionAlgorithm;
+	r4 = (r4 + 8)|0;
+	heap32[(r6+1)] = r0;
+	r7 = 0;
+	heap32[(r6)] = r4;
+	r4 = heap32[(fp+2)];
+	r8 = heap32[(fp+3)];
+	heap8[r2+8] = r7;
+	heap32[(r6+3)] = 0;
+	if(r1 !=0) //_LBB316_3
+{
+	r1 = 1;
+	r6 = r2 >> 2;
+	heap8[r2+16] = r1;
+	heap32[(r6+5)] = r3;
+	r3 = r0 >> 2;
+	heap32[(r6+6)] = r5;
+	r3 = heap32[(r3)];
+	r3 = r3 >> 2;
+	r3 = heap32[(r3+6)];
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r8;
+	heap32[(g0+2)] = r4;
+	__FUNCTION_TABLE__[(r3)>>2](i7);
+	r0 = r_g0;
+if(!(r0 ==0)) //_LBB316_5
+{
+	r0 = heap32[(r6+1)];
+	r3 = r0 >> 2;
+	r3 = heap32[(r3)];
+	r3 = r3 >> 2;
+	r3 = heap32[(r3+3)];
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r8;
+	heap32[(g0+2)] = r4;
+	__FUNCTION_TABLE__[(r3)>>2](i7);
+	heap32[(r6+3)] = r_g0;
+	heap8[r2+8] = r1;
+}
+}
+else{
+	r1 = r2 >> 2;
+	heap8[r2+16] = r7;
+	heap32[(r1+5)] = r3;
+	r3 = r0 >> 2;
+	heap32[(r1+6)] = r5;
+	r3 = heap32[(r3)];
+	r3 = r3 >> 2;
+	r3 = heap32[(r3+6)];
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r4;
+	heap32[(g0+2)] = r8;
+	__FUNCTION_TABLE__[(r3)>>2](i7);
+	r0 = r_g0;
+if(!(r0 ==0)) //_LBB316_5
+{
+	r0 = heap32[(r1+1)];
+	r3 = r0 >> 2;
+	r3 = heap32[(r3)];
+	r3 = r3 >> 2;
+	r3 = heap32[(r3+3)];
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r4;
+	heap32[(g0+2)] = r8;
+	__FUNCTION_TABLE__[(r3)>>2](i7);
+	r3 = 1;
+	heap32[(r1+3)] = r_g0;
+	heap8[r2+8] = r3;
+}
+}
+	r_g0 = r2;
+	return;
+}
+
+function _ZN33btConvexConcaveCollisionAlgorithm10CreateFuncD1Ev(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+var __label__ = 0;
+	i7 = sp + 0;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = _ZTVN33btConvexConcaveCollisionAlgorithm10CreateFuncE;
+	r0 = r0 >> 2;
+	r1 = (r1 + 8)|0;
+	heap32[(r0)] = r1;
+	return;
+}
+
+function _ZN33btConvexConcaveCollisionAlgorithm10CreateFuncD0Ev(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+var __label__ = 0;
+	i7 = sp + -8;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = _ZTVN33btConvexConcaveCollisionAlgorithm10CreateFuncE;
+	r2 = r0 >> 2;
+	r1 = (r1 + 8)|0;
+	heap32[(r2)] = r1;
+	heap32[(g0)] = r0;
+	_ZdlPv(i7);
+	return;
+}
+
+function _ZN33btConvexConcaveCollisionAlgorithm10CreateFunc24CreateCollisionAlgorithmER36btCollisionAlgorithmConstructionInfoP17btCollisionObjectS4_(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+var __label__ = 0;
+	i7 = sp + -16;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp+1)];
+	r0 = r0 >> 2;
+	r1 = heap32[(r0)];
+	r2 = r1 >> 2;
+	r2 = heap32[(r2)];
+	r2 = r2 >> 2;
+	r2 = heap32[(r2+12)];
+	heap32[(g0)] = r1;
+	heap32[(g0+1)] = 80;
+	r1 = _ZTV20btCollisionAlgorithm;
+	__FUNCTION_TABLE__[(r2)>>2](i7);
+	r2 = r_g0;
+	r1 = (r1 + 8)|0;
+	r3 = r2 >> 2;
+	heap32[(r3)] = r1;
+	r1 = heap32[(r0)];
+	r4 = _ZTV33btConvexConcaveCollisionAlgorithm;
+	r4 = (r4 + 8)|0;
+	heap32[(r3+1)] = r1;
+	r1 = 0;
+	heap32[(r3)] = r4;
+	heap8[r2+8] = r1;
+	r1 = _ZTV24btConvexTriangleCallback;
+	r0 = heap32[(r0)];
+	r1 = (r1 + 8)|0;
+	heap32[(r3+3)] = r1;
+	heap32[(r3+15)] = r0;
+	r1 = heap32[(fp+2)];
+	heap32[(r3+16)] = 0;
+	r4 = heap32[(fp+3)];
+	heap32[(r3+4)] = r1;
+	r5 = r0 >> 2;
+	heap32[(r3+5)] = r4;
+	r5 = heap32[(r5)];
+	r5 = r5 >> 2;
+	r5 = heap32[(r5+3)];
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r1;
+	heap32[(g0+2)] = r4;
+	__FUNCTION_TABLE__[(r5)>>2](i7);
+	heap32[(r3+19)] = r_g0;
+	r1 = heap32[(r3+15)];
+	r3 = r1 >> 2;
+	r3 = heap32[(r3)];
+	r3 = r3 >> 2;
+	r3 = heap32[(r3+5)];
+	heap32[(g0)] = r1;
+	heap32[(g0+1)] = r_g0;
+	__FUNCTION_TABLE__[(r3)>>2](i7);
+	r_g0 = r2;
+	return;
+}
+
+function _ZN33btConvexConcaveCollisionAlgorithm17SwappedCreateFuncD1Ev(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+var __label__ = 0;
+	i7 = sp + 0;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = _ZTVN33btConvexConcaveCollisionAlgorithm17SwappedCreateFuncE;
+	r0 = r0 >> 2;
+	r1 = (r1 + 8)|0;
+	heap32[(r0)] = r1;
+	return;
+}
+
+function _ZN33btConvexConcaveCollisionAlgorithm17SwappedCreateFuncD0Ev(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+var __label__ = 0;
+	i7 = sp + -8;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = _ZTVN33btConvexConcaveCollisionAlgorithm17SwappedCreateFuncE;
+	r2 = r0 >> 2;
+	r1 = (r1 + 8)|0;
+	heap32[(r2)] = r1;
+	heap32[(g0)] = r0;
+	_ZdlPv(i7);
+	return;
+}
+
+function _ZN33btConvexConcaveCollisionAlgorithm17SwappedCreateFunc24CreateCollisionAlgorithmER36btCollisionAlgorithmConstructionInfoP17btCollisionObjectS4_(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+var __label__ = 0;
+	i7 = sp + -16;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp+1)];
+	r0 = r0 >> 2;
+	r1 = heap32[(r0)];
+	r2 = r1 >> 2;
+	r2 = heap32[(r2)];
+	r2 = r2 >> 2;
+	r2 = heap32[(r2+12)];
+	heap32[(g0)] = r1;
+	heap32[(g0+1)] = 80;
+	r1 = _ZTV20btCollisionAlgorithm;
+	__FUNCTION_TABLE__[(r2)>>2](i7);
+	r2 = r_g0;
+	r1 = (r1 + 8)|0;
+	r3 = r2 >> 2;
+	heap32[(r3)] = r1;
+	r1 = heap32[(r0)];
+	r4 = _ZTV33btConvexConcaveCollisionAlgorithm;
+	r4 = (r4 + 8)|0;
+	heap32[(r3+1)] = r1;
+	r1 = 1;
+	heap32[(r3)] = r4;
+	heap8[r2+8] = r1;
+	r1 = _ZTV24btConvexTriangleCallback;
+	r0 = heap32[(r0)];
+	r1 = (r1 + 8)|0;
+	heap32[(r3+3)] = r1;
+	heap32[(r3+15)] = r0;
+	r1 = heap32[(fp+3)];
+	heap32[(r3+16)] = 0;
+	r4 = heap32[(fp+2)];
+	heap32[(r3+4)] = r1;
+	r5 = r0 >> 2;
+	heap32[(r3+5)] = r4;
+	r5 = heap32[(r5)];
+	r5 = r5 >> 2;
+	r5 = heap32[(r5+3)];
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r1;
+	heap32[(g0+2)] = r4;
+	__FUNCTION_TABLE__[(r5)>>2](i7);
+	heap32[(r3+19)] = r_g0;
+	r1 = heap32[(r3+15)];
+	r3 = r1 >> 2;
+	r3 = heap32[(r3)];
+	r3 = r3 >> 2;
+	r3 = heap32[(r3+5)];
+	heap32[(g0)] = r1;
+	heap32[(g0+1)] = r_g0;
+	__FUNCTION_TABLE__[(r3)>>2](i7);
+	r_g0 = r2;
+	return;
+}
+
+function _ZN28btCompoundCollisionAlgorithm10CreateFuncD1Ev(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+var __label__ = 0;
+	i7 = sp + 0;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = _ZTVN28btCompoundCollisionAlgorithm10CreateFuncE;
+	r0 = r0 >> 2;
+	r1 = (r1 + 8)|0;
+	heap32[(r0)] = r1;
+	return;
+}
+
+function _ZN28btCompoundCollisionAlgorithm10CreateFuncD0Ev(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+var __label__ = 0;
+	i7 = sp + -8;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = _ZTVN28btCompoundCollisionAlgorithm10CreateFuncE;
+	r2 = r0 >> 2;
+	r1 = (r1 + 8)|0;
+	heap32[(r2)] = r1;
+	heap32[(g0)] = r0;
+	_ZdlPv(i7);
+	return;
+}
+
+function _ZN28btCompoundCollisionAlgorithm10CreateFunc24CreateCollisionAlgorithmER36btCollisionAlgorithmConstructionInfoP17btCollisionObjectS4_(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+var __label__ = 0;
+	i7 = sp + -16;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp+1)];
+	r0 = r0 >> 2;
+	r1 = heap32[(r0)];
+	r2 = r1 >> 2;
+	r2 = heap32[(r2)];
+	r2 = r2 >> 2;
+	r2 = heap32[(r2+12)];
+	heap32[(g0)] = r1;
+	heap32[(g0+1)] = 44;
+	__FUNCTION_TABLE__[(r2)>>2](i7);
+	r1 = r_g0;
+	r2 = _ZTV20btCollisionAlgorithm;
+	r3 = r1 >> 2;
+	r2 = (r2 + 8)|0;
+	heap32[(r3)] = r2;
+	r2 = heap32[(r0)];
+	r4 = _ZTV28btCompoundCollisionAlgorithm;
+	r4 = (r4 + 8)|0;
+	heap32[(r3+1)] = r2;
+	r2 = 1;
+	heap32[(r3)] = r4;
+	heap8[r1+24] = r2;
+	heap32[(r3+5)] = 0;
+	heap32[(r3+3)] = 0;
+	r2 = 0;
+	heap32[(r3+4)] = 0;
+	heap8[r1+28] = r2;
+	r0 = heap32[(r0+1)];
+	r4 = heap32[(fp+2)];
+	heap32[(r3+8)] = r0;
+	r0 = r4 >> 2;
+	heap8[r1+36] = r2;
+	r0 = heap32[(r0+48)];
+	r0 = r0 >> 2;
+	r2 = heap32[(r0+1)];
+	if(r2 ==31) //_LBB325_2
+{
+	r2 = heap32[(fp+3)];
+	r3 = r1 >> 2;
+	r0 = heap32[(r0+17)];
+	heap32[(r3+10)] = r0;
+	heap32[(g0)] = r1;
+	heap32[(g0+1)] = r4;
+	heap32[(g0+2)] = r2;
+	_ZN28btCompoundCollisionAlgorithm26preallocateChildAlgorithmsEP17btCollisionObjectS1_(i7);
+	r_g0 = r1;
+	return;
+}
+else{
+	r0 = _2E_str99;
+	r1 = _2E_str1100;
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r1;
+	heap32[(g0+2)] = 32;
+	_assert(i7);
+}
+}
+
+function _ZN28btCompoundCollisionAlgorithm17SwappedCreateFuncD1Ev(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+var __label__ = 0;
+	i7 = sp + 0;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = _ZTVN28btCompoundCollisionAlgorithm17SwappedCreateFuncE;
+	r0 = r0 >> 2;
+	r1 = (r1 + 8)|0;
+	heap32[(r0)] = r1;
+	return;
+}
+
+function _ZN28btCompoundCollisionAlgorithm17SwappedCreateFuncD0Ev(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+var __label__ = 0;
+	i7 = sp + -8;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = _ZTVN28btCompoundCollisionAlgorithm17SwappedCreateFuncE;
+	r2 = r0 >> 2;
+	r1 = (r1 + 8)|0;
+	heap32[(r2)] = r1;
+	heap32[(g0)] = r0;
+	_ZdlPv(i7);
+	return;
+}
+
+function _ZN28btCompoundCollisionAlgorithm17SwappedCreateFunc24CreateCollisionAlgorithmER36btCollisionAlgorithmConstructionInfoP17btCollisionObjectS4_(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+var __label__ = 0;
+	i7 = sp + -16;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp+1)];
+	r0 = r0 >> 2;
+	r1 = heap32[(r0)];
+	r2 = r1 >> 2;
+	r2 = heap32[(r2)];
+	r2 = r2 >> 2;
+	r2 = heap32[(r2+12)];
+	heap32[(g0)] = r1;
+	heap32[(g0+1)] = 44;
+	__FUNCTION_TABLE__[(r2)>>2](i7);
+	r1 = r_g0;
+	r2 = _ZTV20btCollisionAlgorithm;
+	r3 = r1 >> 2;
+	r2 = (r2 + 8)|0;
+	heap32[(r3)] = r2;
+	r2 = heap32[(r0)];
+	r4 = _ZTV28btCompoundCollisionAlgorithm;
+	r4 = (r4 + 8)|0;
+	heap32[(r3+1)] = r2;
+	r2 = 1;
+	heap32[(r3)] = r4;
+	heap8[r1+24] = r2;
+	heap32[(r3+5)] = 0;
+	heap32[(r3+3)] = 0;
+	heap32[(r3+4)] = 0;
+	heap8[r1+28] = r2;
+	r0 = heap32[(r0+1)];
+	r2 = heap32[(fp+3)];
+	r4 = 0;
+	heap32[(r3+8)] = r0;
+	r0 = r2 >> 2;
+	heap8[r1+36] = r4;
+	r0 = heap32[(r0+48)];
+	r0 = r0 >> 2;
+	r3 = heap32[(r0+1)];
+	if(r3 ==31) //_LBB328_2
+{
+	r3 = heap32[(fp+2)];
+	r4 = r1 >> 2;
+	r0 = heap32[(r0+17)];
+	heap32[(r4+10)] = r0;
+	heap32[(g0)] = r1;
+	heap32[(g0+1)] = r3;
+	heap32[(g0+2)] = r2;
+	_ZN28btCompoundCollisionAlgorithm26preallocateChildAlgorithmsEP17btCollisionObjectS1_(i7);
+	r_g0 = r1;
+	return;
+}
+else{
+	r0 = _2E_str99;
+	r1 = _2E_str1100;
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r1;
+	heap32[(g0+2)] = 32;
+	_assert(i7);
+}
+}
+
+function _ZN16btEmptyAlgorithm10CreateFuncD1Ev(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+var __label__ = 0;
+	i7 = sp + 0;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = _ZTVN16btEmptyAlgorithm10CreateFuncE;
+	r0 = r0 >> 2;
+	r1 = (r1 + 8)|0;
+	heap32[(r0)] = r1;
+	return;
+}
+
+function _ZN16btEmptyAlgorithm10CreateFuncD0Ev(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+var __label__ = 0;
+	i7 = sp + -8;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = _ZTVN16btEmptyAlgorithm10CreateFuncE;
+	r2 = r0 >> 2;
+	r1 = (r1 + 8)|0;
+	heap32[(r2)] = r1;
+	heap32[(g0)] = r0;
+	_ZdlPv(i7);
+	return;
+}
+
+function _ZN16btEmptyAlgorithm10CreateFunc24CreateCollisionAlgorithmER36btCollisionAlgorithmConstructionInfoP17btCollisionObjectS4_(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+var __label__ = 0;
+	i7 = sp + -8;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp+1)];
+	r0 = r0 >> 2;
+	r1 = heap32[(r0)];
+	r2 = r1 >> 2;
+	r2 = heap32[(r2)];
+	r2 = r2 >> 2;
+	r2 = heap32[(r2+12)];
+	heap32[(g0)] = r1;
+	heap32[(g0+1)] = 8;
+	r1 = _ZTV20btCollisionAlgorithm;
+	__FUNCTION_TABLE__[(r2)>>2](i7);
+	r3 = r_g0 >> 2;
+	r1 = (r1 + 8)|0;
+	heap32[(r3)] = r1;
+	r0 = heap32[(r0)];
+	r1 = _ZTV16btEmptyAlgorithm;
+	r1 = (r1 + 8)|0;
+	heap32[(r3+1)] = r0;
+	heap32[(r3)] = r1;
+	return;
+}
+
+function _ZN32btSphereSphereCollisionAlgorithm10CreateFuncD1Ev(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+var __label__ = 0;
+	i7 = sp + 0;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = _ZTVN32btSphereSphereCollisionAlgorithm10CreateFuncE;
+	r0 = r0 >> 2;
+	r1 = (r1 + 8)|0;
+	heap32[(r0)] = r1;
+	return;
+}
+
+function _ZN32btSphereSphereCollisionAlgorithm10CreateFuncD0Ev(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+var __label__ = 0;
+	i7 = sp + -8;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = _ZTVN32btSphereSphereCollisionAlgorithm10CreateFuncE;
+	r2 = r0 >> 2;
+	r1 = (r1 + 8)|0;
+	heap32[(r2)] = r1;
+	heap32[(g0)] = r0;
+	_ZdlPv(i7);
+	return;
+}
+
+function _ZN32btSphereSphereCollisionAlgorithm10CreateFunc24CreateCollisionAlgorithmER36btCollisionAlgorithmConstructionInfoP17btCollisionObjectS4_(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+var __label__ = 0;
+	i7 = sp + -16;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp+1)];
+	r0 = r0 >> 2;
+	r1 = heap32[(r0)];
+	r2 = r1 >> 2;
+	r2 = heap32[(r2)];
+	r2 = r2 >> 2;
+	r2 = heap32[(r2+12)];
+	heap32[(g0)] = r1;
+	heap32[(g0+1)] = 16;
+	r1 = _ZTV20btCollisionAlgorithm;
+	__FUNCTION_TABLE__[(r2)>>2](i7);
+	r2 = r_g0;
+	r3 = r2 >> 2;
+	r1 = (r1 + 8)|0;
+	heap32[(r3)] = r1;
+	r0 = heap32[(r0)];
+	r1 = _ZTV32btSphereSphereCollisionAlgorithm;
+	r1 = (r1 + 8)|0;
+	heap32[(r3+1)] = r0;
+	r4 = 0;
+	heap32[(r3)] = r1;
+	heap8[r2+8] = r4;
+	r1 = r0 >> 2;
+	heap32[(r3+3)] = 0;
+	r1 = heap32[(r1)];
+	r1 = r1 >> 2;
+	r1 = heap32[(r1+3)];
+	r4 = heap32[(fp+2)];
+	r5 = heap32[(fp+3)];
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r4;
+	heap32[(g0+2)] = r5;
+	__FUNCTION_TABLE__[(r1)>>2](i7);
+	r1 = 1;
+	heap32[(r3+3)] = r_g0;
+	heap8[r2+8] = r1;
+	r_g0 = r2;
+	return;
+}
+
+function _ZN34btSphereTriangleCollisionAlgorithm10CreateFuncD1Ev(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+var __label__ = 0;
+	i7 = sp + 0;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = _ZTVN34btSphereTriangleCollisionAlgorithm10CreateFuncE;
+	r0 = r0 >> 2;
+	r1 = (r1 + 8)|0;
+	heap32[(r0)] = r1;
+	return;
+}
+
+function _ZN34btSphereTriangleCollisionAlgorithm10CreateFuncD0Ev(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+var __label__ = 0;
+	i7 = sp + -8;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = _ZTVN34btSphereTriangleCollisionAlgorithm10CreateFuncE;
+	r2 = r0 >> 2;
+	r1 = (r1 + 8)|0;
+	heap32[(r2)] = r1;
+	heap32[(g0)] = r0;
+	_ZdlPv(i7);
+	return;
+}
+
+function _ZN34btSphereTriangleCollisionAlgorithm10CreateFunc24CreateCollisionAlgorithmER36btCollisionAlgorithmConstructionInfoP17btCollisionObjectS4_(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+	var r6;
+var __label__ = 0;
+	i7 = sp + -16;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp+1)];
+	r0 = r0 >> 2;
+	r1 = heap32[(r0)];
+	r2 = r1 >> 2;
+	r2 = heap32[(r2)];
+	r2 = r2 >> 2;
+	r2 = heap32[(r2+12)];
+	heap32[(g0)] = r1;
+	heap32[(g0+1)] = 20;
+	__FUNCTION_TABLE__[(r2)>>2](i7);
+	r1 = r_g0;
+	r2 = heap32[(fp)];
+	r3 = _ZTV20btCollisionAlgorithm;
+	r4 = heap32[(r0+1)];
+	r2 = heapU8[r2+4];
+	r5 = r1 >> 2;
+	r3 = (r3 + 8)|0;
+	heap32[(r5)] = r3;
+	r0 = heap32[(r0)];
+	r3 = _ZTV34btSphereTriangleCollisionAlgorithm;
+	r3 = (r3 + 8)|0;
+	heap32[(r5+1)] = r0;
+	r6 = 0;
+	heap32[(r5)] = r3;
+	heap8[r1+8] = r6;
+	heap32[(r5+3)] = r4;
+	heap8[r1+16] = r2;
+if(!(r4 !=0)) //_LBB337_2
+{
+	r2 = heap32[(fp+2)];
+	r3 = heap32[(fp+3)];
+	r4 = r0 >> 2;
+	r4 = heap32[(r4)];
+	r4 = r4 >> 2;
+	r4 = heap32[(r4+3)];
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r2;
+	heap32[(g0+2)] = r3;
+	r0 = r1 >> 2;
+	__FUNCTION_TABLE__[(r4)>>2](i7);
+	r3 = 1;
+	heap32[(r0+3)] = r_g0;
+	heap8[r1+8] = r3;
+}
+	r_g0 = r1;
+	return;
+}
+
+function _ZN26btBoxBoxCollisionAlgorithm10CreateFuncD1Ev(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+var __label__ = 0;
+	i7 = sp + 0;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = _ZTVN26btBoxBoxCollisionAlgorithm10CreateFuncE;
+	r0 = r0 >> 2;
+	r1 = (r1 + 8)|0;
+	heap32[(r0)] = r1;
+	return;
+}
+
+function _ZN26btBoxBoxCollisionAlgorithm10CreateFuncD0Ev(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+var __label__ = 0;
+	i7 = sp + -8;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = _ZTVN26btBoxBoxCollisionAlgorithm10CreateFuncE;
+	r2 = r0 >> 2;
+	r1 = (r1 + 8)|0;
+	heap32[(r2)] = r1;
+	heap32[(g0)] = r0;
+	_ZdlPv(i7);
+	return;
+}
+
+function _ZN26btBoxBoxCollisionAlgorithm10CreateFunc24CreateCollisionAlgorithmER36btCollisionAlgorithmConstructionInfoP17btCollisionObjectS4_(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+var __label__ = 0;
+	i7 = sp + -16;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp+1)];
+	r0 = r0 >> 2;
+	r1 = heap32[(r0)];
+	r2 = r1 >> 2;
+	r2 = heap32[(r2)];
+	r2 = r2 >> 2;
+	r2 = heap32[(r2+12)];
+	heap32[(g0)] = r1;
+	heap32[(g0+1)] = 16;
+	__FUNCTION_TABLE__[(r2)>>2](i7);
+	r1 = r_g0;
+	r2 = _ZTV20btCollisionAlgorithm;
+	r3 = r1 >> 2;
+	r2 = (r2 + 8)|0;
+	heap32[(r3)] = r2;
+	r0 = heap32[(r0)];
+	r2 = _ZTV26btBoxBoxCollisionAlgorithm;
+	r2 = (r2 + 8)|0;
+	heap32[(r3+1)] = r0;
+	r4 = 0;
+	heap32[(r3)] = r2;
+	heap8[r1+8] = r4;
+	r2 = r0 >> 2;
+	heap32[(r3+3)] = 0;
+	r2 = heap32[(r2)];
+	r2 = r2 >> 2;
+	r2 = heap32[(r2+6)];
+	r3 = heap32[(fp+2)];
+	r4 = heap32[(fp+3)];
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r3;
+	heap32[(g0+2)] = r4;
+	__FUNCTION_TABLE__[(r2)>>2](i7);
+	r0 = r_g0;
+if(!(r0 ==0)) //_LBB340_2
+{
+	r0 = r1 >> 2;
+	r2 = heap32[(r0+1)];
+	r5 = r2 >> 2;
+	r5 = heap32[(r5)];
+	r5 = r5 >> 2;
+	r5 = heap32[(r5+3)];
+	heap32[(g0)] = r2;
+	heap32[(g0+1)] = r3;
+	heap32[(g0+2)] = r4;
+	__FUNCTION_TABLE__[(r5)>>2](i7);
+	r3 = 1;
+	heap32[(r0+3)] = r_g0;
+	heap8[r1+8] = r3;
+}
+	r_g0 = r1;
+	return;
+}
+
+function _ZN31btDefaultCollisionConfiguration31getCollisionAlgorithmCreateFuncEii(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+var __label__ = 0;
+	i7 = sp + 0;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp+1)];
+	r1 = heap32[(fp)];
+	r2 = heap32[(fp+2)];
+	if(r0 !=8) //_LBB341_3
+{
+__label__ = 3;
+}
+else{
+	if(r2 !=8) //_LBB341_3
+{
+__label__ = 3;
+}
+else{
+	r0 = (r1 + 64)|0;
+__label__ = 30;
+}
+}
+_4: do {
+if (__label__ == 3){
+if(!(r0 !=8)) //_LBB341_6
+{
+if(!(r2 !=1)) //_LBB341_6
+{
+	r0 = (r1 + 72)|0;
+break _4;
+}
+}
+if(!(r0 !=1)) //_LBB341_9
+{
+if(!(r2 !=8)) //_LBB341_9
+{
+	r0 = (r1 + 76)|0;
+break _4;
+}
+}
+	r3 = r2 | r0;
+	if(r3 !=0) //_LBB341_11
+{
+if(!(r0 >19)) //_LBB341_14
+{
+if(!(r2 !=28)) //_LBB341_14
+{
+	r0 = (r1 + 84)|0;
+break _4;
+}
+}
+if(!(r2 >19)) //_LBB341_17
+{
+if(!(r0 !=28)) //_LBB341_17
+{
+	r0 = (r1 + 80)|0;
+break _4;
+}
+}
+_24: do {
+	if(r0 >19) //_LBB341_21
+{
+	if(r2 <20) //_LBB341_23
+{
+	r3 = (r0 + -21)|0;
+	if(uint(r3) <uint(9)) //_LBB341_25
+{
+	r0 = (r1 + 48)|0;
+break _4;
+}
+}
+	if(r0 ==31) //_LBB341_26
+{
+	r0 = (r1 + 52)|0;
+break _4;
+}
+else{
+break _24;
+}
+}
+else{
+	if(r2 >19) //_LBB341_20
+{
+	r0 = (r2 + -21)|0;
+	if(uint(r0) <uint(9)) //_LBB341_22
+{
+	r0 = (r1 + 44)|0;
+break _4;
+}
+}
+else{
+	r0 = (r1 + 40)|0;
+break _4;
+}
+}
+} while(0);
+	if(r2 !=31) //_LBB341_29
+{
+	r0 = (r1 + 60)|0;
+}
+else{
+	r0 = (r1 + 56)|0;
+}
+}
+else{
+	r0 = (r1 + 68)|0;
+}
+}
+} while(0);
+	r0 = r0 >> 2;
+	r0 = heap32[(r0)];
+	r_g0 = r0;
+	return;
+}
+
+function _ZN31btDefaultCollisionConfigurationD0Ev(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+var __label__ = 0;
+	i7 = sp + -16;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = _ZTV31btDefaultCollisionConfiguration;
+	r2 = r0 >> 2;
+	r1 = (r1 + 8)|0;
+	heap32[(r2)] = r1;
+	r1 = heapU8[r0+12];
+_1: do {
+if(!(r1 ==0)) //_LBB342_13
+{
+	r1 = heap32[(r2+2)];
+	r3 = r1 >> 2;
+	r4 = heap32[(r3+2)];
+	if(r4 ==0) //_LBB342_3
+{
+	r1 = heapU8[r1+16];
+if(!(r1 !=0)) //_LBB342_6
+{
+	r1 = heap32[(r3)];
+if(!(r1 ==0)) //_LBB342_6
+{
+	r4 = gNumAlignedFree;
+	r4 = r4 >> 2;
+	r5 = heap32[(r4)];
+	r5 = (r5 + 1)|0;
+	r1 = r1 >> 2;
+	heap32[(r4)] = r5;
+	r1 = heap32[(r1+-1)];
+	heap32[(g0)] = r1;
+	free(i7);
+}
+}
+	heap32[(r3)] = 0;
+	heap32[(r3+2)] = 0;
+	r1 = heap32[(r2+2)];
+	r3 = r1 >> 2;
+	r4 = heap32[(r3+2)];
+	if(r4 ==0) //_LBB342_8
+{
+	r1 = heapU8[r1+16];
+if(!(r1 !=0)) //_LBB342_11
+{
+	r1 = heap32[(r3)];
+if(!(r1 ==0)) //_LBB342_11
+{
+	r4 = gNumAlignedFree;
+	r4 = r4 >> 2;
+	r5 = heap32[(r4)];
+	r5 = (r5 + 1)|0;
+	r1 = r1 >> 2;
+	heap32[(r4)] = r5;
+	r1 = heap32[(r1+-1)];
+	heap32[(g0)] = r1;
+	free(i7);
+}
+}
+	heap32[(r3)] = 0;
+	heap32[(r3+2)] = 0;
+	r1 = heap32[(r2+2)];
+	if(r1 ==0) //_LBB342_13
+{
+break _1;
+}
+else{
+	r3 = gNumAlignedFree;
+	r3 = r3 >> 2;
+	r4 = heap32[(r3)];
+	r4 = (r4 + 1)|0;
+	r1 = r1 >> 2;
+	heap32[(r3)] = r4;
+	r1 = heap32[(r1+-1)];
+	heap32[(g0)] = r1;
+	free(i7);
+break _1;
+}
+}
+}
+	r0 = _2E_str128;
+	r1 = _2E_str1129;
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r1;
+	heap32[(g0+2)] = 49;
+	_assert(i7);
+}
+} while(0);
+	r1 = heapU8[r0+28];
+if(!(r1 ==0)) //_LBB342_19
+{
+	r1 = heap32[(r2+6)];
+	r3 = r1 >> 2;
+	r3 = heap32[(r3+4)];
+	if(r3 !=0) //_LBB342_16
+{
+	r1 = gNumAlignedFree;
+	r1 = r1 >> 2;
+	r4 = heap32[(r1)];
+	r4 = (r4 + 1)|0;
+	r3 = r3 >> 2;
+	heap32[(r1)] = r4;
+	r1 = heap32[(r3+-1)];
+	heap32[(g0)] = r1;
+	free(i7);
+	r1 = heap32[(r2+6)];
+}
+if(!(r1 ==0)) //_LBB342_19
+{
+	r3 = gNumAlignedFree;
+	r3 = r3 >> 2;
+	r4 = heap32[(r3)];
+	r4 = (r4 + 1)|0;
+	r1 = r1 >> 2;
+	heap32[(r3)] = r4;
+	r1 = heap32[(r1+-1)];
+	heap32[(g0)] = r1;
+	free(i7);
+}
+}
+	r1 = heapU8[r0+20];
+if(!(r1 ==0)) //_LBB342_25
+{
+	r1 = heap32[(r2+4)];
+	r3 = r1 >> 2;
+	r3 = heap32[(r3+4)];
+	if(r3 !=0) //_LBB342_22
+{
+	r1 = gNumAlignedFree;
+	r1 = r1 >> 2;
+	r4 = heap32[(r1)];
+	r4 = (r4 + 1)|0;
+	r3 = r3 >> 2;
+	heap32[(r1)] = r4;
+	r1 = heap32[(r3+-1)];
+	heap32[(g0)] = r1;
+	free(i7);
+	r1 = heap32[(r2+4)];
+}
+if(!(r1 ==0)) //_LBB342_25
+{
+	r3 = gNumAlignedFree;
+	r3 = r3 >> 2;
+	r4 = heap32[(r3)];
+	r4 = (r4 + 1)|0;
+	r1 = r1 >> 2;
+	heap32[(r3)] = r4;
+	r1 = heap32[(r1+-1)];
+	heap32[(g0)] = r1;
+	free(i7);
+}
+}
+	r1 = heap32[(r2+10)];
+	r3 = r1 >> 2;
+	r3 = heap32[(r3)];
+	r3 = r3 >> 2;
+	r3 = heap32[(r3)];
+	heap32[(g0)] = r1;
+	__FUNCTION_TABLE__[(r3)>>2](i7);
+	r1 = heap32[(r2+10)];
+if(!(r1 ==0)) //_LBB342_27
+{
+	r3 = gNumAlignedFree;
+	r3 = r3 >> 2;
+	r4 = heap32[(r3)];
+	r4 = (r4 + 1)|0;
+	r1 = r1 >> 2;
+	heap32[(r3)] = r4;
+	r1 = heap32[(r1+-1)];
+	heap32[(g0)] = r1;
+	free(i7);
+}
+	r1 = heap32[(r2+11)];
+	r3 = r1 >> 2;
+	r3 = heap32[(r3)];
+	r3 = r3 >> 2;
+	r3 = heap32[(r3)];
+	heap32[(g0)] = r1;
+	__FUNCTION_TABLE__[(r3)>>2](i7);
+	r1 = heap32[(r2+11)];
+if(!(r1 ==0)) //_LBB342_29
+{
+	r3 = gNumAlignedFree;
+	r3 = r3 >> 2;
+	r4 = heap32[(r3)];
+	r4 = (r4 + 1)|0;
+	r1 = r1 >> 2;
+	heap32[(r3)] = r4;
+	r1 = heap32[(r1+-1)];
+	heap32[(g0)] = r1;
+	free(i7);
+}
+	r1 = heap32[(r2+12)];
+	r3 = r1 >> 2;
+	r3 = heap32[(r3)];
+	r3 = r3 >> 2;
+	r3 = heap32[(r3)];
+	heap32[(g0)] = r1;
+	__FUNCTION_TABLE__[(r3)>>2](i7);
+	r1 = heap32[(r2+12)];
+if(!(r1 ==0)) //_LBB342_31
+{
+	r3 = gNumAlignedFree;
+	r3 = r3 >> 2;
+	r4 = heap32[(r3)];
+	r4 = (r4 + 1)|0;
+	r1 = r1 >> 2;
+	heap32[(r3)] = r4;
+	r1 = heap32[(r1+-1)];
+	heap32[(g0)] = r1;
+	free(i7);
+}
+	r1 = heap32[(r2+13)];
+	r3 = r1 >> 2;
+	r3 = heap32[(r3)];
+	r3 = r3 >> 2;
+	r3 = heap32[(r3)];
+	heap32[(g0)] = r1;
+	__FUNCTION_TABLE__[(r3)>>2](i7);
+	r1 = heap32[(r2+13)];
+if(!(r1 ==0)) //_LBB342_33
+{
+	r3 = gNumAlignedFree;
+	r3 = r3 >> 2;
+	r4 = heap32[(r3)];
+	r4 = (r4 + 1)|0;
+	r1 = r1 >> 2;
+	heap32[(r3)] = r4;
+	r1 = heap32[(r1+-1)];
+	heap32[(g0)] = r1;
+	free(i7);
+}
+	r1 = heap32[(r2+14)];
+	r3 = r1 >> 2;
+	r3 = heap32[(r3)];
+	r3 = r3 >> 2;
+	r3 = heap32[(r3)];
+	heap32[(g0)] = r1;
+	__FUNCTION_TABLE__[(r3)>>2](i7);
+	r1 = heap32[(r2+14)];
+if(!(r1 ==0)) //_LBB342_35
+{
+	r3 = gNumAlignedFree;
+	r3 = r3 >> 2;
+	r4 = heap32[(r3)];
+	r4 = (r4 + 1)|0;
+	r1 = r1 >> 2;
+	heap32[(r3)] = r4;
+	r1 = heap32[(r1+-1)];
+	heap32[(g0)] = r1;
+	free(i7);
+}
+	r1 = heap32[(r2+15)];
+	r3 = r1 >> 2;
+	r3 = heap32[(r3)];
+	r3 = r3 >> 2;
+	r3 = heap32[(r3)];
+	heap32[(g0)] = r1;
+	__FUNCTION_TABLE__[(r3)>>2](i7);
+	r1 = heap32[(r2+15)];
+if(!(r1 ==0)) //_LBB342_37
+{
+	r3 = gNumAlignedFree;
+	r3 = r3 >> 2;
+	r4 = heap32[(r3)];
+	r4 = (r4 + 1)|0;
+	r1 = r1 >> 2;
+	heap32[(r3)] = r4;
+	r1 = heap32[(r1+-1)];
+	heap32[(g0)] = r1;
+	free(i7);
+}
+	r1 = heap32[(r2+16)];
+	r3 = r1 >> 2;
+	r3 = heap32[(r3)];
+	r3 = r3 >> 2;
+	r3 = heap32[(r3)];
+	heap32[(g0)] = r1;
+	__FUNCTION_TABLE__[(r3)>>2](i7);
+	r1 = heap32[(r2+16)];
+if(!(r1 ==0)) //_LBB342_39
+{
+	r3 = gNumAlignedFree;
+	r3 = r3 >> 2;
+	r4 = heap32[(r3)];
+	r4 = (r4 + 1)|0;
+	r1 = r1 >> 2;
+	heap32[(r3)] = r4;
+	r1 = heap32[(r1+-1)];
+	heap32[(g0)] = r1;
+	free(i7);
+}
+	r1 = heap32[(r2+18)];
+	r3 = r1 >> 2;
+	r3 = heap32[(r3)];
+	r3 = r3 >> 2;
+	r3 = heap32[(r3)];
+	heap32[(g0)] = r1;
+	__FUNCTION_TABLE__[(r3)>>2](i7);
+	r1 = heap32[(r2+18)];
+if(!(r1 ==0)) //_LBB342_41
+{
+	r3 = gNumAlignedFree;
+	r3 = r3 >> 2;
+	r4 = heap32[(r3)];
+	r4 = (r4 + 1)|0;
+	r1 = r1 >> 2;
+	heap32[(r3)] = r4;
+	r1 = heap32[(r1+-1)];
+	heap32[(g0)] = r1;
+	free(i7);
+}
+	r1 = heap32[(r2+19)];
+	r3 = r1 >> 2;
+	r3 = heap32[(r3)];
+	r3 = r3 >> 2;
+	r3 = heap32[(r3)];
+	heap32[(g0)] = r1;
+	__FUNCTION_TABLE__[(r3)>>2](i7);
+	r1 = heap32[(r2+19)];
+if(!(r1 ==0)) //_LBB342_43
+{
+	r3 = gNumAlignedFree;
+	r3 = r3 >> 2;
+	r4 = heap32[(r3)];
+	r4 = (r4 + 1)|0;
+	r1 = r1 >> 2;
+	heap32[(r3)] = r4;
+	r1 = heap32[(r1+-1)];
+	heap32[(g0)] = r1;
+	free(i7);
+}
+	r1 = heap32[(r2+17)];
+	r3 = r1 >> 2;
+	r3 = heap32[(r3)];
+	r3 = r3 >> 2;
+	r3 = heap32[(r3)];
+	heap32[(g0)] = r1;
+	__FUNCTION_TABLE__[(r3)>>2](i7);
+	r1 = heap32[(r2+17)];
+if(!(r1 ==0)) //_LBB342_45
+{
+	r3 = gNumAlignedFree;
+	r3 = r3 >> 2;
+	r4 = heap32[(r3)];
+	r4 = (r4 + 1)|0;
+	r1 = r1 >> 2;
+	heap32[(r3)] = r4;
+	r1 = heap32[(r1+-1)];
+	heap32[(g0)] = r1;
+	free(i7);
+}
+	r1 = heap32[(r2+21)];
+	r3 = r1 >> 2;
+	r3 = heap32[(r3)];
+	r3 = r3 >> 2;
+	r3 = heap32[(r3)];
+	heap32[(g0)] = r1;
+	__FUNCTION_TABLE__[(r3)>>2](i7);
+	r1 = heap32[(r2+21)];
+if(!(r1 ==0)) //_LBB342_47
+{
+	r3 = gNumAlignedFree;
+	r3 = r3 >> 2;
+	r4 = heap32[(r3)];
+	r4 = (r4 + 1)|0;
+	r1 = r1 >> 2;
+	heap32[(r3)] = r4;
+	r1 = heap32[(r1+-1)];
+	heap32[(g0)] = r1;
+	free(i7);
+}
+	r1 = heap32[(r2+20)];
+	r3 = r1 >> 2;
+	r3 = heap32[(r3)];
+	r3 = r3 >> 2;
+	r3 = heap32[(r3)];
+	heap32[(g0)] = r1;
+	__FUNCTION_TABLE__[(r3)>>2](i7);
+	r1 = heap32[(r2+20)];
+if(!(r1 ==0)) //_LBB342_49
+{
+	r3 = gNumAlignedFree;
+	r3 = r3 >> 2;
+	r4 = heap32[(r3)];
+	r4 = (r4 + 1)|0;
+	r1 = r1 >> 2;
+	heap32[(r3)] = r4;
+	r1 = heap32[(r1+-1)];
+	heap32[(g0)] = r1;
+	free(i7);
+}
+	r1 = heap32[(r2+8)];
+if(!(r1 ==0)) //_LBB342_51
+{
+	r3 = gNumAlignedFree;
+	r3 = r3 >> 2;
+	r4 = heap32[(r3)];
+	r4 = (r4 + 1)|0;
+	r1 = r1 >> 2;
+	heap32[(r3)] = r4;
+	r1 = heap32[(r1+-1)];
+	heap32[(g0)] = r1;
+	free(i7);
+}
+	r1 = heap32[(r2+9)];
+	r3 = r1 >> 2;
+	r3 = heap32[(r3)];
+	r3 = r3 >> 2;
+	r3 = heap32[(r3)];
+	heap32[(g0)] = r1;
+	__FUNCTION_TABLE__[(r3)>>2](i7);
+	r1 = heap32[(r2+9)];
+if(!(r1 ==0)) //_LBB342_53
+{
+	r2 = gNumAlignedFree;
+	r2 = r2 >> 2;
+	r3 = heap32[(r2)];
+	r3 = (r3 + 1)|0;
+	r1 = r1 >> 2;
+	heap32[(r2)] = r3;
+	r1 = heap32[(r1+-1)];
+	heap32[(g0)] = r1;
+	free(i7);
+}
+	heap32[(g0)] = r0;
+	_ZdlPv(i7);
+	return;
+}
+
+function _ZN31btDefaultCollisionConfigurationD1Ev(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+var __label__ = 0;
+	i7 = sp + -8;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	heap32[(g0)] = r0;
+	_ZN31btDefaultCollisionConfigurationD2Ev(i7);
+	return;
+}
+
+function _ZN31btDefaultCollisionConfigurationD2Ev(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+var __label__ = 0;
+	i7 = sp + -16;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = _ZTV31btDefaultCollisionConfiguration;
+	r2 = r0 >> 2;
+	r1 = (r1 + 8)|0;
+	heap32[(r2)] = r1;
+	r1 = heapU8[r0+12];
+_1: do {
+if(!(r1 ==0)) //_LBB344_13
+{
+	r1 = heap32[(r2+2)];
+	r3 = r1 >> 2;
+	r4 = heap32[(r3+2)];
+	if(r4 ==0) //_LBB344_3
+{
+	r1 = heapU8[r1+16];
+if(!(r1 !=0)) //_LBB344_6
+{
+	r1 = heap32[(r3)];
+if(!(r1 ==0)) //_LBB344_6
+{
+	r4 = gNumAlignedFree;
+	r4 = r4 >> 2;
+	r5 = heap32[(r4)];
+	r5 = (r5 + 1)|0;
+	r1 = r1 >> 2;
+	heap32[(r4)] = r5;
+	r1 = heap32[(r1+-1)];
+	heap32[(g0)] = r1;
+	free(i7);
+}
+}
+	heap32[(r3)] = 0;
+	heap32[(r3+2)] = 0;
+	r1 = heap32[(r2+2)];
+	r3 = r1 >> 2;
+	r4 = heap32[(r3+2)];
+	if(r4 ==0) //_LBB344_8
+{
+	r1 = heapU8[r1+16];
+if(!(r1 !=0)) //_LBB344_11
+{
+	r1 = heap32[(r3)];
+if(!(r1 ==0)) //_LBB344_11
+{
+	r4 = gNumAlignedFree;
+	r4 = r4 >> 2;
+	r5 = heap32[(r4)];
+	r5 = (r5 + 1)|0;
+	r1 = r1 >> 2;
+	heap32[(r4)] = r5;
+	r1 = heap32[(r1+-1)];
+	heap32[(g0)] = r1;
+	free(i7);
+}
+}
+	heap32[(r3)] = 0;
+	heap32[(r3+2)] = 0;
+	r1 = heap32[(r2+2)];
+	if(r1 ==0) //_LBB344_13
+{
+break _1;
+}
+else{
+	r3 = gNumAlignedFree;
+	r3 = r3 >> 2;
+	r4 = heap32[(r3)];
+	r4 = (r4 + 1)|0;
+	r1 = r1 >> 2;
+	heap32[(r3)] = r4;
+	r1 = heap32[(r1+-1)];
+	heap32[(g0)] = r1;
+	free(i7);
+break _1;
+}
+}
+}
+	r0 = _2E_str128;
+	r1 = _2E_str1129;
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r1;
+	heap32[(g0+2)] = 49;
+	_assert(i7);
+}
+} while(0);
+	r1 = heapU8[r0+28];
+if(!(r1 ==0)) //_LBB344_19
+{
+	r1 = heap32[(r2+6)];
+	r3 = r1 >> 2;
+	r3 = heap32[(r3+4)];
+	if(r3 !=0) //_LBB344_16
+{
+	r1 = gNumAlignedFree;
+	r1 = r1 >> 2;
+	r4 = heap32[(r1)];
+	r4 = (r4 + 1)|0;
+	r3 = r3 >> 2;
+	heap32[(r1)] = r4;
+	r1 = heap32[(r3+-1)];
+	heap32[(g0)] = r1;
+	free(i7);
+	r1 = heap32[(r2+6)];
+}
+if(!(r1 ==0)) //_LBB344_19
+{
+	r3 = gNumAlignedFree;
+	r3 = r3 >> 2;
+	r4 = heap32[(r3)];
+	r4 = (r4 + 1)|0;
+	r1 = r1 >> 2;
+	heap32[(r3)] = r4;
+	r1 = heap32[(r1+-1)];
+	heap32[(g0)] = r1;
+	free(i7);
+}
+}
+	r0 = heapU8[r0+20];
+if(!(r0 ==0)) //_LBB344_25
+{
+	r0 = heap32[(r2+4)];
+	r1 = r0 >> 2;
+	r1 = heap32[(r1+4)];
+	if(r1 !=0) //_LBB344_22
+{
+	r0 = gNumAlignedFree;
+	r0 = r0 >> 2;
+	r3 = heap32[(r0)];
+	r3 = (r3 + 1)|0;
+	r1 = r1 >> 2;
+	heap32[(r0)] = r3;
+	r0 = heap32[(r1+-1)];
+	heap32[(g0)] = r0;
+	free(i7);
+	r0 = heap32[(r2+4)];
+}
+if(!(r0 ==0)) //_LBB344_25
+{
+	r1 = gNumAlignedFree;
+	r1 = r1 >> 2;
+	r3 = heap32[(r1)];
+	r3 = (r3 + 1)|0;
+	r0 = r0 >> 2;
+	heap32[(r1)] = r3;
+	r0 = heap32[(r0+-1)];
+	heap32[(g0)] = r0;
+	free(i7);
+}
+}
+	r0 = heap32[(r2+10)];
+	r1 = r0 >> 2;
+	r1 = heap32[(r1)];
+	r1 = r1 >> 2;
+	r1 = heap32[(r1)];
+	heap32[(g0)] = r0;
+	__FUNCTION_TABLE__[(r1)>>2](i7);
+	r0 = heap32[(r2+10)];
+if(!(r0 ==0)) //_LBB344_27
+{
+	r1 = gNumAlignedFree;
+	r1 = r1 >> 2;
+	r3 = heap32[(r1)];
+	r3 = (r3 + 1)|0;
+	r0 = r0 >> 2;
+	heap32[(r1)] = r3;
+	r0 = heap32[(r0+-1)];
+	heap32[(g0)] = r0;
+	free(i7);
+}
+	r0 = heap32[(r2+11)];
+	r1 = r0 >> 2;
+	r1 = heap32[(r1)];
+	r1 = r1 >> 2;
+	r1 = heap32[(r1)];
+	heap32[(g0)] = r0;
+	__FUNCTION_TABLE__[(r1)>>2](i7);
+	r0 = heap32[(r2+11)];
+if(!(r0 ==0)) //_LBB344_29
+{
+	r1 = gNumAlignedFree;
+	r1 = r1 >> 2;
+	r3 = heap32[(r1)];
+	r3 = (r3 + 1)|0;
+	r0 = r0 >> 2;
+	heap32[(r1)] = r3;
+	r0 = heap32[(r0+-1)];
+	heap32[(g0)] = r0;
+	free(i7);
+}
+	r0 = heap32[(r2+12)];
+	r1 = r0 >> 2;
+	r1 = heap32[(r1)];
+	r1 = r1 >> 2;
+	r1 = heap32[(r1)];
+	heap32[(g0)] = r0;
+	__FUNCTION_TABLE__[(r1)>>2](i7);
+	r0 = heap32[(r2+12)];
+if(!(r0 ==0)) //_LBB344_31
+{
+	r1 = gNumAlignedFree;
+	r1 = r1 >> 2;
+	r3 = heap32[(r1)];
+	r3 = (r3 + 1)|0;
+	r0 = r0 >> 2;
+	heap32[(r1)] = r3;
+	r0 = heap32[(r0+-1)];
+	heap32[(g0)] = r0;
+	free(i7);
+}
+	r0 = heap32[(r2+13)];
+	r1 = r0 >> 2;
+	r1 = heap32[(r1)];
+	r1 = r1 >> 2;
+	r1 = heap32[(r1)];
+	heap32[(g0)] = r0;
+	__FUNCTION_TABLE__[(r1)>>2](i7);
+	r0 = heap32[(r2+13)];
+if(!(r0 ==0)) //_LBB344_33
+{
+	r1 = gNumAlignedFree;
+	r1 = r1 >> 2;
+	r3 = heap32[(r1)];
+	r3 = (r3 + 1)|0;
+	r0 = r0 >> 2;
+	heap32[(r1)] = r3;
+	r0 = heap32[(r0+-1)];
+	heap32[(g0)] = r0;
+	free(i7);
+}
+	r0 = heap32[(r2+14)];
+	r1 = r0 >> 2;
+	r1 = heap32[(r1)];
+	r1 = r1 >> 2;
+	r1 = heap32[(r1)];
+	heap32[(g0)] = r0;
+	__FUNCTION_TABLE__[(r1)>>2](i7);
+	r0 = heap32[(r2+14)];
+if(!(r0 ==0)) //_LBB344_35
+{
+	r1 = gNumAlignedFree;
+	r1 = r1 >> 2;
+	r3 = heap32[(r1)];
+	r3 = (r3 + 1)|0;
+	r0 = r0 >> 2;
+	heap32[(r1)] = r3;
+	r0 = heap32[(r0+-1)];
+	heap32[(g0)] = r0;
+	free(i7);
+}
+	r0 = heap32[(r2+15)];
+	r1 = r0 >> 2;
+	r1 = heap32[(r1)];
+	r1 = r1 >> 2;
+	r1 = heap32[(r1)];
+	heap32[(g0)] = r0;
+	__FUNCTION_TABLE__[(r1)>>2](i7);
+	r0 = heap32[(r2+15)];
+if(!(r0 ==0)) //_LBB344_37
+{
+	r1 = gNumAlignedFree;
+	r1 = r1 >> 2;
+	r3 = heap32[(r1)];
+	r3 = (r3 + 1)|0;
+	r0 = r0 >> 2;
+	heap32[(r1)] = r3;
+	r0 = heap32[(r0+-1)];
+	heap32[(g0)] = r0;
+	free(i7);
+}
+	r0 = heap32[(r2+16)];
+	r1 = r0 >> 2;
+	r1 = heap32[(r1)];
+	r1 = r1 >> 2;
+	r1 = heap32[(r1)];
+	heap32[(g0)] = r0;
+	__FUNCTION_TABLE__[(r1)>>2](i7);
+	r0 = heap32[(r2+16)];
+if(!(r0 ==0)) //_LBB344_39
+{
+	r1 = gNumAlignedFree;
+	r1 = r1 >> 2;
+	r3 = heap32[(r1)];
+	r3 = (r3 + 1)|0;
+	r0 = r0 >> 2;
+	heap32[(r1)] = r3;
+	r0 = heap32[(r0+-1)];
+	heap32[(g0)] = r0;
+	free(i7);
+}
+	r0 = heap32[(r2+18)];
+	r1 = r0 >> 2;
+	r1 = heap32[(r1)];
+	r1 = r1 >> 2;
+	r1 = heap32[(r1)];
+	heap32[(g0)] = r0;
+	__FUNCTION_TABLE__[(r1)>>2](i7);
+	r0 = heap32[(r2+18)];
+if(!(r0 ==0)) //_LBB344_41
+{
+	r1 = gNumAlignedFree;
+	r1 = r1 >> 2;
+	r3 = heap32[(r1)];
+	r3 = (r3 + 1)|0;
+	r0 = r0 >> 2;
+	heap32[(r1)] = r3;
+	r0 = heap32[(r0+-1)];
+	heap32[(g0)] = r0;
+	free(i7);
+}
+	r0 = heap32[(r2+19)];
+	r1 = r0 >> 2;
+	r1 = heap32[(r1)];
+	r1 = r1 >> 2;
+	r1 = heap32[(r1)];
+	heap32[(g0)] = r0;
+	__FUNCTION_TABLE__[(r1)>>2](i7);
+	r0 = heap32[(r2+19)];
+if(!(r0 ==0)) //_LBB344_43
+{
+	r1 = gNumAlignedFree;
+	r1 = r1 >> 2;
+	r3 = heap32[(r1)];
+	r3 = (r3 + 1)|0;
+	r0 = r0 >> 2;
+	heap32[(r1)] = r3;
+	r0 = heap32[(r0+-1)];
+	heap32[(g0)] = r0;
+	free(i7);
+}
+	r0 = heap32[(r2+17)];
+	r1 = r0 >> 2;
+	r1 = heap32[(r1)];
+	r1 = r1 >> 2;
+	r1 = heap32[(r1)];
+	heap32[(g0)] = r0;
+	__FUNCTION_TABLE__[(r1)>>2](i7);
+	r0 = heap32[(r2+17)];
+if(!(r0 ==0)) //_LBB344_45
+{
+	r1 = gNumAlignedFree;
+	r1 = r1 >> 2;
+	r3 = heap32[(r1)];
+	r3 = (r3 + 1)|0;
+	r0 = r0 >> 2;
+	heap32[(r1)] = r3;
+	r0 = heap32[(r0+-1)];
+	heap32[(g0)] = r0;
+	free(i7);
+}
+	r0 = heap32[(r2+21)];
+	r1 = r0 >> 2;
+	r1 = heap32[(r1)];
+	r1 = r1 >> 2;
+	r1 = heap32[(r1)];
+	heap32[(g0)] = r0;
+	__FUNCTION_TABLE__[(r1)>>2](i7);
+	r0 = heap32[(r2+21)];
+if(!(r0 ==0)) //_LBB344_47
+{
+	r1 = gNumAlignedFree;
+	r1 = r1 >> 2;
+	r3 = heap32[(r1)];
+	r3 = (r3 + 1)|0;
+	r0 = r0 >> 2;
+	heap32[(r1)] = r3;
+	r0 = heap32[(r0+-1)];
+	heap32[(g0)] = r0;
+	free(i7);
+}
+	r0 = heap32[(r2+20)];
+	r1 = r0 >> 2;
+	r1 = heap32[(r1)];
+	r1 = r1 >> 2;
+	r1 = heap32[(r1)];
+	heap32[(g0)] = r0;
+	__FUNCTION_TABLE__[(r1)>>2](i7);
+	r0 = heap32[(r2+20)];
+if(!(r0 ==0)) //_LBB344_49
+{
+	r1 = gNumAlignedFree;
+	r1 = r1 >> 2;
+	r3 = heap32[(r1)];
+	r3 = (r3 + 1)|0;
+	r0 = r0 >> 2;
+	heap32[(r1)] = r3;
+	r0 = heap32[(r0+-1)];
+	heap32[(g0)] = r0;
+	free(i7);
+}
+	r0 = heap32[(r2+8)];
+if(!(r0 ==0)) //_LBB344_51
+{
+	r1 = gNumAlignedFree;
+	r1 = r1 >> 2;
+	r3 = heap32[(r1)];
+	r3 = (r3 + 1)|0;
+	r0 = r0 >> 2;
+	heap32[(r1)] = r3;
+	r0 = heap32[(r0+-1)];
+	heap32[(g0)] = r0;
+	free(i7);
+}
+	r0 = heap32[(r2+9)];
+	r1 = r0 >> 2;
+	r1 = heap32[(r1)];
+	r1 = r1 >> 2;
+	r1 = heap32[(r1)];
+	heap32[(g0)] = r0;
+	__FUNCTION_TABLE__[(r1)>>2](i7);
+	r0 = heap32[(r2+9)];
+if(!(r0 ==0)) //_LBB344_53
+{
+	r1 = gNumAlignedFree;
+	r1 = r1 >> 2;
+	r2 = heap32[(r1)];
+	r2 = (r2 + 1)|0;
+	r0 = r0 >> 2;
+	heap32[(r1)] = r2;
+	r0 = heap32[(r0+-1)];
+	heap32[(g0)] = r0;
+	free(i7);
+}
+	return;
+}
+
+function _ZN16btEmptyAlgorithm22getAllContactManifoldsER20btAlignedObjectArrayIP20btPersistentManifoldE(sp)
+{
+	var i7;
+	var fp = sp>>2;
+var __label__ = 0;
+	i7 = sp + 0;var g0 = i7>>2; // save stack
+	return;
+}
+
+function _ZN16btEmptyAlgorithm16processCollisionEP17btCollisionObjectS1_RK16btDispatcherInfoP16btManifoldResult(sp)
+{
+	var i7;
+	var fp = sp>>2;
+var __label__ = 0;
+	i7 = sp + 0;var g0 = i7>>2; // save stack
+	return;
+}
+
+function _ZN16btEmptyAlgorithm21calculateTimeOfImpactEP17btCollisionObjectS1_RK16btDispatcherInfoP16btManifoldResult(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var f0;
+var __label__ = 0;
+	i7 = sp + 0;var g0 = i7>>2; // save stack
+	f0 =                         1;
+	f_g0 = f0;
+	return;
+}
+
+function _ZN16btEmptyAlgorithmD0Ev(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+var __label__ = 0;
+	i7 = sp + -8;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = _ZTV16btEmptyAlgorithm;
+	r2 = r0 >> 2;
+	r1 = (r1 + 8)|0;
+	heap32[(r2)] = r1;
+	heap32[(g0)] = r0;
+	_ZdlPv(i7);
+	return;
+}
+
+function _ZN16btEmptyAlgorithmD1Ev(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+var __label__ = 0;
+	i7 = sp + 0;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = _ZTV16btEmptyAlgorithm;
+	r0 = r0 >> 2;
+	r1 = (r1 + 8)|0;
+	heap32[(r0)] = r1;
+	return;
+}
+
+function _ZN16btManifoldResultD1Ev(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+var __label__ = 0;
+	i7 = sp + 0;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = _ZTV16btManifoldResult;
+	r0 = r0 >> 2;
+	r1 = (r1 + 8)|0;
+	heap32[(r0)] = r1;
+	return;
+}
+
+function _ZN16btManifoldResultD0Ev(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+var __label__ = 0;
+	i7 = sp + -8;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = _ZTV16btManifoldResult;
+	r2 = r0 >> 2;
+	r1 = (r1 + 8)|0;
+	heap32[(r2)] = r1;
+	heap32[(g0)] = r0;
+	_ZdlPv(i7);
+	return;
+}
+
+function _ZN16btManifoldResult15addContactPointERK9btVector3S2_f(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+	var r6;
+	var r7;
+	var r8;
+	var r9;
+	var r10;
+	var r11;
+	var f0;
+	var f1;
+	var f2;
+	var f3;
+	var f4;
+	var f5;
+	var f6;
+	var f7;
+	var f8;
+	var f9;
+	var f10;
+	var f11;
+	var f12;
+	var f13;
+	var f14;
+	var f15;
+	var f16;
+	var f17;
+	var f18;
+	var f19;
+	var f20;
+	var f21;
+	var f22;
+	var f23;
+	var f24;
+	var f25;
+	var f26;
+	var f27;
+	var f28;
+	var f29;
+	var f30;
+var __label__ = 0;
+	i7 = sp + -304;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r0 = r0 >> 2;
+	r1 = heap32[(r0+1)];
+	if(r1 !=0) //_LBB352_2
+{
+	f0 = heapFloat[(fp+3)];
+	r2 = r1 >> 2;
+	f1 = heapFloat[(r2+280)];
+if(!(f1 <f0)) //_LBB352_53
+{
+	r3 = heap32[(fp+1)];
+	r4 = heap32[(fp+2)];
+	r3 = r3 >> 2;
+	r4 = r4 >> 2;
+	f1 = heapFloat[(r3+2)];
+	heapFloat[(fp+-71)] = f1;
+	f2 = heapFloat[(r3+1)];
+	f3 = heapFloat[(r3)];
+	f4 = heapFloat[(r4+2)];
+	f1 = f1*f0;
+	f5 = heapFloat[(r4+1)];
+	f6 = f2*f0;
+	f7 = heapFloat[(r4)];
+	f8 = f3*f0;
+	r5 = heap32[(r2+277)];
+	r6 = heap32[(r0+34)];
+	f1 = f4+f1;
+	f6 = f5+f6;
+	f8 = f7+f8;
+	if(r5 ==r6) //_LBB352_5
+{
+	f9 = heapFloat[(r0+14)];
+	f10 = heapFloat[(r0+15)];
+	f11 = heapFloat[(r0+30)];
+	f13 = heapFloat[(r0+31)];
+	f14 = heapFloat[(r0+4)];
+	f9 = f8-f9;
+	f15 = heapFloat[(r0+3)];
+	f12 = heapFloat[(r0+2)];
+	f16 = heapFloat[(r0+8)];
+	f10 = f6-f10;
+	f17 = heapFloat[(r0+7)];
+	f18 = heapFloat[(r0+6)];
+	f19 = heapFloat[(r0+16)];
+	f20 = heapFloat[(r0+20)];
+	f11 = f7-f11;
+	f21 = heapFloat[(r0+19)];
+	f22 = heapFloat[(r0+18)];
+	f23 = heapFloat[(r0+24)];
+	f13 = f5-f13;
+	f24 = heapFloat[(r0+23)];
+	f25 = heapFloat[(r0+22)];
+	f26 = heapFloat[(r0+32)];
+	f14 = f14*f9;
+	f16 = f16*f10;
+	f27 = heapFloat[(r0+12)];
+	f19 = f1-f19;
+	f28 = heapFloat[(r0+11)];
+	f29 = heapFloat[(r0+10)];
+	f15 = f15*f9;
+	f17 = f17*f10;
+	f9 = f12*f9;
+	f10 = f18*f10;
+	f12 = f20*f11;
+	f18 = f23*f13;
+	f20 = heapFloat[(r0+28)];
+	f23 = f4-f26;
+	f26 = heapFloat[(r0+27)];
+	f30 = heapFloat[(r0+26)];
+	f21 = f21*f11;
+	f24 = f24*f13;
+	f11 = f22*f11;
+	f13 = f25*f13;
+	f14 = f14+f16;
+	f16 = f27*f19;
+	f15 = f15+f17;
+	f17 = f28*f19;
+	f9 = f9+f10;
+	f10 = f29*f19;
+	f12 = f12+f18;
+	f18 = f20*f23;
+	f19 = f21+f24;
+	f20 = f26*f23;
+	f11 = f11+f13;
+	f21 = f30*f23;
+	f13 = f14+f16;
+	f14 = f15+f17;
+	f9 = f9+f10;
+	f10 = f12+f18;
+	f15 = f19+f20;
+	f11 = f11+f21;
+}
+else{
+	f9 = heapFloat[(r0+30)];
+	f10 = heapFloat[(r0+31)];
+	f11 = heapFloat[(r0+14)];
+	f12 = heapFloat[(r0+15)];
+	f13 = heapFloat[(r0+20)];
+	f9 = f8-f9;
+	f14 = heapFloat[(r0+19)];
+	f15 = heapFloat[(r0+18)];
+	f16 = heapFloat[(r0+24)];
+	f10 = f6-f10;
+	f17 = heapFloat[(r0+23)];
+	f18 = heapFloat[(r0+22)];
+	f19 = heapFloat[(r0+32)];
+	f20 = heapFloat[(r0+4)];
+	f11 = f7-f11;
+	f21 = heapFloat[(r0+3)];
+	f22 = heapFloat[(r0+2)];
+	f23 = heapFloat[(r0+8)];
+	f12 = f5-f12;
+	f24 = heapFloat[(r0+7)];
+	f25 = heapFloat[(r0+6)];
+	f26 = heapFloat[(r0+16)];
+	f13 = f13*f9;
+	f16 = f16*f10;
+	f27 = heapFloat[(r0+28)];
+	f19 = f1-f19;
+	f28 = heapFloat[(r0+27)];
+	f29 = heapFloat[(r0+26)];
+	f14 = f14*f9;
+	f17 = f17*f10;
+	f9 = f15*f9;
+	f10 = f18*f10;
+	f15 = f20*f11;
+	f18 = f23*f12;
+	f20 = heapFloat[(r0+12)];
+	f23 = f4-f26;
+	f26 = heapFloat[(r0+11)];
+	f30 = heapFloat[(r0+10)];
+	f21 = f21*f11;
+	f24 = f24*f12;
+	f11 = f22*f11;
+	f12 = f25*f12;
+	f13 = f13+f16;
+	f16 = f27*f19;
+	f14 = f14+f17;
+	f17 = f28*f19;
+	f9 = f9+f10;
+	f10 = f29*f19;
+	f15 = f15+f18;
+	f18 = f20*f23;
+	f19 = f21+f24;
+	f20 = f26*f23;
+	f11 = f11+f12;
+	f12 = f30*f23;
+	f13 = f13+f16;
+	f14 = f14+f17;
+	f9 = f9+f10;
+	f10 = f15+f18;
+	f15 = f19+f20;
+	f11 = f11+f12;
+}
+	r7 = sp + -280;
+	r8 = r7 >> 2;
+	heapFloat[(fp+-70)] = f9;
+	heapFloat[(r8+1)] = f14;
+	heapFloat[(r8+2)] = f13;
+	heap32[(r8+3)] = 0;
+	heapFloat[(r8+4)] = f11;
+	heapFloat[(r8+5)] = f15;
+	heapFloat[(r8+6)] = f10;
+	heap32[(r8+7)] = 0;
+	heapFloat[(r8+16)] = f3;
+	heapFloat[(r8+17)] = f2;
+	f2 = heapFloat[(fp+-71)];
+	heapFloat[(r8+18)] = f2;
+	heap32[(r8+19)] = heap32[(r3+3)];
+	heapFloat[(r8+20)] = f0;
+	heap32[(r8+21)] = 0;
+	heap32[(r8+22)] = 0;
+	heap32[(r8+27)] = 0;
+	r3 = 0;
+	heap32[(r8+28)] = 0;
+	heap8[sp+-164] = r3;
+	heap32[(r8+30)] = 0;
+	heap32[(r8+31)] = 0;
+	heap32[(r8+32)] = 0;
+	heap32[(r8+33)] = 0;
+	heap32[(r8+34)] = 0;
+	heap32[(r8+35)] = 0;
+	heap32[(r8+36)] = 0;
+	heap32[(r8+52)] = 0;
+	heap32[(r8+60)] = 0;
+	heap32[(r8+68)] = 0;
+	heapFloat[(r8+12)] = f8;
+	heapFloat[(r8+13)] = f6;
+	heapFloat[(r8+14)] = f1;
+	heap32[(r8+15)] = 0;
+	heapFloat[(r8+8)] = f7;
+	heapFloat[(r8+9)] = f5;
+	heapFloat[(r8+10)] = f4;
+	heap32[(r8+11)] = heap32[(r4+3)];
+	r4 = heap32[(r2+279)];
+_9: do {
+	if(r4 >0) //_LBB352_8
+{
+	f1 = heapFloat[(r2+280)];
+	f1 = f1*f1;
+	r10 = 0;
+	r9 = -1;
+_11: while(true){
+	r11 = (r10 * 69)|0;
+	r11 = r11 << 2;
+	r11 = (r1 + r11)|0;
+	r11 = r11 >> 2;
+	f2 = heapFloat[(r11+1)];
+	f3 = heapFloat[(r11+2)];
+	f2 = f2-f9;
+	f3 = f3-f14;
+	f4 = heapFloat[(r11+3)];
+	f4 = f4-f13;
+	f2 = f2*f2;
+	f3 = f3*f3;
+	f2 = f2+f3;
+	f3 = f4*f4;
+	f2 = f2+f3;
+	r11 = (r10 + 1)|0;
+	r9 = f2 < f1 ? r10 : r9;
+	f1 = f2 < f1 ? f2 : f1;
+	r10 = r11;
+if(!(r4 !=r11)) //_LBB352_9
+{
+break _9;
+}
+}
+}
+else{
+	r9 = -1;
+}
+} while(0);
+	r4 = heap32[(r0+35)];
+	r4 = r4 >> 2;
+	r10 = r6 >> 2;
+	f1 = heapFloat[(r10+56)];
+	f2 = heapFloat[(r4+56)];
+	f1 = f1*f2;
+	f2 =                       -10;
+	f1 = f1 < f2 ? f2 : f1;
+	f2 =                        10;
+	f1 = f1 > f2 ? f2 : f1;
+	heapFloat[(r8+21)] = f1;
+	f1 = heapFloat[(r10+57)];
+	f2 = heapFloat[(r4+57)];
+	f1 = f1*f2;
+	heapFloat[(r8+22)] = f1;
+	if(r5 ==r6) //_LBB352_12
+{
+	r4 = heap32[(r0+36)];
+	heap32[(r8+23)] = r4;
+	r4 = heap32[(r0+37)];
+	heap32[(r8+24)] = r4;
+	r4 = heap32[(r0+38)];
+	heap32[(r8+25)] = r4;
+	r0 = heap32[(r0+39)];
+	heap32[(r8+26)] = r0;
+}
+else{
+	r4 = heap32[(r0+37)];
+	heap32[(r8+23)] = r4;
+	r4 = heap32[(r0+36)];
+	heap32[(r8+24)] = r4;
+	r4 = heap32[(r0+39)];
+	heap32[(r8+25)] = r4;
+	r0 = heap32[(r0+38)];
+	heap32[(r8+26)] = r0;
+}
+	f1 = heapFloat[(r2+280)];
+	if(r9 <0) //_LBB352_19
+{
+	if(f1 >=f0) //_LBB352_21
+{
+	r0 = heap32[(r2+279)];
+	if(r0 !=4) //_LBB352_49
+{
+	r4 = (r0 + 1)|0;
+	heap32[(r2+279)] = r4;
+}
+else{
+	f1 = heapFloat[(r2+21)];
+	r0 = -1;
+	f2 = heapFloat[(r2+90)];
+	f3 = f1 < f0 ? f1 : f0;
+	r4 = 1;
+	f4 = heapFloat[(r2+159)];
+	f5 = f2 < f3 ? f2 : f3;
+	r5 = 2;
+	f6 = heapFloat[(r2+228)];
+	f7 = f4 < f5 ? f4 : f5;
+	if(f6 >=f7) //_LBB352_24
+{
+	r6 = f1 >= f0 ? r0 : r3;
+	r6 = f2 < f3 ? r4 : r6;
+	r6 = f4 < f5 ? r5 : r6;
+	if(r6 ==0) //_LBB352_26
+{
+	f0 = heapFloat[(r2+210)];
+	f1 = heapFloat[(r2+141)];
+	f2 = heapFloat[(r2+209)];
+	f3 = heapFloat[(r2+140)];
+	f4 = heapFloat[(r2+208)];
+	f5 = heapFloat[(r2+139)];
+	f6 = heapFloat[(r2+72)];
+	f7 = heapFloat[(r2+71)];
+	f8 = heapFloat[(r2+70)];
+	f10 =                         0;
+	r6 = r3;
+__label__ = 28;
+}
+else{
+__label__ = 26;
+}
+}
+else{
+	r6 = 3;
+__label__ = 26;
+}
+if (__label__ == 26){
+	f6 = heapFloat[(r2+72)];
+	f0 = heapFloat[(r2+210)];
+	f1 = heapFloat[(r2+141)];
+	f8 = heapFloat[(r2+70)];
+	f2 = heapFloat[(r2+209)];
+	f3 = heapFloat[(r2+140)];
+	f7 = heapFloat[(r2+71)];
+	f4 = heapFloat[(r2+208)];
+	f5 = heapFloat[(r2+139)];
+	f10 = f13-f6;
+	f11 = f2-f3;
+	f12 = f9-f8;
+	f15 = f0-f1;
+	f16 = f14-f7;
+	f17 = f4-f5;
+	f18 = f16*f15;
+	f19 = f10*f11;
+	f10 = f10*f17;
+	f15 = f12*f15;
+	f18 = f18-f19;
+	f10 = f10-f15;
+	f11 = f12*f11;
+	f12 = f16*f17;
+	f11 = f11-f12;
+	f12 = f18*f18;
+	f10 = f10*f10;
+	f10 = f12+f10;
+	f11 = f11*f11;
+	f10 = f10+f11;
+	if(r6 ==1) //_LBB352_29
+{
+	f11 = heapFloat[(r2+3)];
+	f12 = heapFloat[(r2+2)];
+	f15 = heapFloat[(r2+1)];
+	f16 =                         0;
+	r6 = r4;
+__label__ = 30;
+}
+else{
+__label__ = 28;
+}
+}
+if (__label__ == 28){
+	f11 = heapFloat[(r2+3)];
+	f15 = heapFloat[(r2+1)];
+	f12 = heapFloat[(r2+2)];
+	f16 = f13-f11;
+	f17 = f2-f3;
+	f18 = f9-f15;
+	f19 = f0-f1;
+	f20 = f14-f12;
+	f21 = f4-f5;
+	f22 = f20*f19;
+	f23 = f16*f17;
+	f16 = f16*f21;
+	f19 = f18*f19;
+	f22 = f22-f23;
+	f16 = f16-f19;
+	f17 = f18*f17;
+	f18 = f20*f21;
+	f17 = f17-f18;
+	f18 = f22*f22;
+	f16 = f16*f16;
+	f16 = f18+f16;
+	f17 = f17*f17;
+	f16 = f16+f17;
+	if(r6 ==2) //_LBB352_32
+{
+	f0 =                         0;
+__label__ = 32;
+}
+else{
+__label__ = 30;
+}
+}
+if (__label__ == 30){
+	f17 = f13-f11;
+	f2 = f2-f7;
+	f18 = f9-f15;
+	f0 = f0-f6;
+	f19 = f14-f12;
+	f4 = f4-f8;
+	f20 = f19*f0;
+	f21 = f17*f2;
+	f17 = f17*f4;
+	f0 = f18*f0;
+	f20 = f20-f21;
+	f0 = f17-f0;
+	f2 = f18*f2;
+	f4 = f19*f4;
+	f2 = f2-f4;
+	f4 = f20*f20;
+	f0 = f0*f0;
+	f0 = f4+f0;
+	f2 = f2*f2;
+	f0 = f0+f2;
+	if(r6 ==3) //_LBB352_35
+{
+	f1 =                         0;
+__label__ = 34;
+}
+else{
+__label__ = 32;
+}
+}
+if (__label__ == 32){
+	f2 = f13-f11;
+	f3 = f3-f7;
+	f4 = f9-f15;
+	f1 = f1-f6;
+	f6 = f14-f12;
+	f5 = f5-f8;
+	f7 = f6*f1;
+	f8 = f2*f3;
+	f2 = f2*f5;
+	f1 = f4*f1;
+	f7 = f7-f8;
+	f1 = f2-f1;
+	f2 = f4*f3;
+	f3 = f6*f5;
+	f2 = f2-f3;
+	f3 = f7*f7;
+	f1 = f1*f1;
+	f1 = f3+f1;
+	f2 = f2*f2;
+	f1 = f1+f2;
+	f2 =                         0;
+	if(f1 <f2) //_LBB352_38
+{
+	f1 = -f1;
+}
+}
+	f2 =                         0;
+	if(f0 <f2) //_LBB352_41
+{
+	f0 = -f0;
+}
+	if(f16 <f2) //_LBB352_44
+{
+	f16 = -f16;
+}
+	if(f10 <f2) //_LBB352_47
+{
+	f10 = -f10;
+}
+	f2 =       -999999984306749440;
+	r2 = 0;
+	f3 = f10 > f2 ? f10 : f2;
+	r0 = f10 <= f2 ? r0 : r2;
+	f2 = f16 > f3 ? f16 : f3;
+	r0 = f16 > f3 ? r4 : r0;
+	f3 = f0 > f2 ? f0 : f2;
+	r2 = 3;
+	r0 = f0 > f2 ? r5 : r0;
+	r0 = f1 > f3 ? r2 : r0;
+}
+	r0 = r0 < 0 ? r3 : r0;
+	r0 = (r0 * 276)|0;
+	r0 = (r1 + r0)|0;
+	r1 = r0 >> 2;
+	r1 = heap32[(r1+28)];
+	if(r1 ==0) //_LBB352_52
+{
+	r0 = (r0 + 4)|0;
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r7;
+	heap32[(g0+2)] = 276;
+	memcpy(i7);
+}
+else{
+	r0 = _2E_str4438;
+	r7 = _2E_str3437;
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r7;
+	heap32[(g0+2)] = 190;
+	_assert(i7);
+}
+}
+else{
+	r1 = _2E_str2149;
+	r2 = _2E_str3437;
+	heap32[(g0)] = r1;
+	heap32[(g0+1)] = r2;
+	heap32[(g0+2)] = 168;
+	_assert(i7);
+}
+}
+else{
+	if(f1 >=f0) //_LBB352_16
+{
+	r2 = (r9 * 276)|0;
+	r1 = (r1 + r2)|0;
+	r2 = r1 >> 2;
+	r3 = heap32[(r2+37)];
+	if(r3 >-1) //_LBB352_18
+{
+	f0 = heapFloat[(r2+53)];
+	f1 = heapFloat[(r2+61)];
+	f9 = heapFloat[(r2+69)];
+	r0 = heap32[(r2+28)];
+	r1 = (r1 + 4)|0;
+	heap32[(g0)] = r1;
+	heap32[(g0+1)] = r7;
+	heap32[(g0+2)] = 276;
+	memcpy(i7);
+	heap32[(r2+28)] = r0;
+	heapFloat[(r2+29)] = f0;
+	heapFloat[(r2+31)] = f1;
+	heapFloat[(r2+32)] = f9;
+	heapFloat[(r2+53)] = f0;
+	heapFloat[(r2+61)] = f1;
+	heapFloat[(r2+69)] = f9;
+	heap32[(r2+37)] = r3;
+	return;
+}
+else{
+	r1 = _2E_str3150;
+	r2 = _2E_str483;
+	heap32[(g0)] = r1;
+	heap32[(g0+1)] = r2;
+	heap32[(g0+2)] = 177;
+	_assert(i7);
+}
+}
+else{
+	r1 = _2E_str2149;
+	r2 = _2E_str483;
+	heap32[(g0)] = r1;
+	heap32[(g0+1)] = r2;
+	heap32[(g0+2)] = 165;
+	_assert(i7);
+}
+}
+}
+	return;
+}
+else{
+	r0 = _2E_str59;
+	r1 = _2E_str5152;
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r1;
+	heap32[(g0+2)] = 64;
+	_assert(i7);
+}
+}
+
+function _ZN25btSimulationIslandManager26storeIslandActivationStateEP16btCollisionWorld(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+	var r6;
+	var r7;
+	var r8;
+	var r9;
+	var r10;
+var __label__ = 0;
+	i7 = sp + 0;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp+1)];
+	r0 = r0 >> 2;
+	r1 = heap32[(r0+2)];
+if(!(r1 <1)) //_LBB353_10
+{
+	r1 = heap32[(fp)];
+	r2 = 0;
+	r3 = r2;
+_3: while(true){
+	r4 = heap32[(r0+4)];
+	r5 = r2 << 2;
+	r4 = (r4 + r5)|0;
+	r4 = r4 >> 2;
+	r4 = heap32[(r4)];
+	r5 = (r2 + 1)|0;
+	r6 = heapU8[r4+204];
+	r6 = r6 & 3;
+	if(r6 !=0) //_LBB353_8
+{
+	r2 = r4 >> 2;
+	heap32[(r2+52)] = -1;
+	heap32[(r2+53)] = -2;
+}
+else{
+	r6 = r1 >> 2;
+	r7 = heap32[(r6+4)];
+	r8 = r3 << 3;
+	r9 = (r7 + r8)|0;
+	r9 = r9 >> 2;
+	r9 = heap32[(r9)];
+	if(r9 ==r3) //_LBB353_5
+{
+	r10 = r3;
+}
+else{
+	r10 = r3;
+_11: while(true){
+	r9 = r9 << 3;
+	r10 = r10 << 3;
+	r9 = (r7 + r9)|0;
+	r7 = (r7 + r10)|0;
+	r9 = r9 >> 2;
+	r7 = r7 >> 2;
+	r10 = heap32[(r9)];
+	heap32[(r7)] = r10;
+	r10 = heap32[(r9)];
+	r7 = heap32[(r6+4)];
+	r9 = r10 << 3;
+	r9 = (r7 + r9)|0;
+	r9 = r9 >> 2;
+	r9 = heap32[(r9)];
+if(!(r9 !=r10)) //_LBB353_6
+{
+break _11;
+}
+}
+}
+	r4 = r4 >> 2;
+	heap32[(r4+52)] = r10;
+	r6 = heap32[(r6+4)];
+	r6 = (r6 + r8)|0;
+	r6 = r6 >> 2;
+	r3 = (r3 + 1)|0;
+	heap32[(r6+1)] = r2;
+	heap32[(r4+53)] = -1;
+}
+	r4 = heap32[(r0+2)];
+	r2 = r5;
+	if(r4 >r5) //_LBB353_2
+{
+continue _3;
+}
+else{
+break _3;
+}
+}
+}
+	return;
+}
+
+function _ZN20btAlignedObjectArrayIP20btPersistentManifoldE17quickSortInternalI33btPersistentManifoldSortPredicateEEvT_ii(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+	var r6;
+	var r7;
+	var r8;
+	var r9;
+	var r10;
+	var r11;
+	var r12;
+	var r13;
+	var r14;
+	var r15;
+	var r16;
+var __label__ = 0;
+	i7 = sp + -16;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp+2)];
+	r1 = heap32[(fp+1)];
+	r2 = (r0 + r1)|0;
+	r3 = r2 >>> 31;
+	r4 = heap32[(fp)];
+	r2 = (r2 + r3)|0;
+	r3 = r4 >> 2;
+	r2 = r2 & 2147483646;
+	r5 = heap32[(r3+3)];
+	r2 = r2 << 1;
+	r2 = (r5 + r2)|0;
+	r2 = r2 >> 2;
+	r2 = heap32[(r2)];
+	r5 = r1;
+	r6 = r0;
+_1: while(true){
+	r7 = r2 >> 2;
+	r8 = heap32[(r7+277)];
+	r8 = r8 >> 2;
+	r9 = heap32[(r3+3)];
+	r8 = heap32[(r8+52)];
+_3: while(true){
+	r10 = r5 << 2;
+	r10 = (r9 + r10)|0;
+	r10 = r10 >> 2;
+	r11 = heap32[(r10)];
+	r12 = r11 >> 2;
+	r13 = heap32[(r12+277)];
+	r13 = r13 >> 2;
+	r13 = heap32[(r13+52)];
+	if(r13 <0) //_LBB354_5
+{
+	r13 = heap32[(r12+278)];
+	r13 = r13 >> 2;
+	r13 = heap32[(r13+52)];
+}
+	if(r8 <0) //_LBB354_8
+{
+	r12 = heap32[(r7+278)];
+	r12 = r12 >> 2;
+	r12 = heap32[(r12+52)];
+}
+else{
+	r12 = r8;
+}
+	if(r13 <r12) //_LBB354_2
+{
+	r5 = (r5 + 1)|0;
+continue _3;
+}
+else{
+break _3;
+}
+}
+_13: while(true){
+	r12 = r6 << 2;
+	r13 = (r9 + r12)|0;
+	r13 = r13 >> 2;
+	r13 = heap32[(r13)];
+	if(r8 <0) //_LBB354_13
+{
+	r14 = heap32[(r7+278)];
+	r14 = r14 >> 2;
+	r14 = heap32[(r14+52)];
+}
+else{
+	r14 = r8;
+}
+	r15 = r13 >> 2;
+	r16 = heap32[(r15+277)];
+	r16 = r16 >> 2;
+	r16 = heap32[(r16+52)];
+	if(r16 <0) //_LBB354_16
+{
+	r16 = heap32[(r15+278)];
+	r16 = r16 >> 2;
+	r16 = heap32[(r16+52)];
+}
+	if(r14 <r16) //_LBB354_10
+{
+	r6 = (r6 + -1)|0;
+continue _13;
+}
+else{
+break _13;
+}
+}
+	if(r5 <=r6) //_LBB354_20
+{
+	heap32[(r10)] = r13;
+	r7 = heap32[(r3+3)];
+	r7 = (r7 + r12)|0;
+	r5 = (r5 + 1)|0;
+	r6 = (r6 + -1)|0;
+	r7 = r7 >> 2;
+	heap32[(r7)] = r11;
+}
+	if(r5 <=r6) //_LBB354_1
+{
+continue _1;
+}
+else{
+break _1;
+}
+}
+if(!(r6 <=r1)) //_LBB354_24
+{
+	heap32[(g0)] = r4;
+	heap32[(g0+1)] = r1;
+	heap32[(g0+2)] = r6;
+	_ZN20btAlignedObjectArrayIP20btPersistentManifoldE17quickSortInternalI33btPersistentManifoldSortPredicateEEvT_ii(i7);
+}
+if(!(r5 >=r0)) //_LBB354_26
+{
+	heap32[(g0)] = r4;
+	heap32[(g0+1)] = r5;
+	heap32[(g0+2)] = r0;
+	_ZN20btAlignedObjectArrayIP20btPersistentManifoldE17quickSortInternalI33btPersistentManifoldSortPredicateEEvT_ii(i7);
+}
+	return;
+}
+
+function _ZN25btSimulationIslandManager21updateActivationStateEP16btCollisionWorldP12btDispatcher(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+	var r6;
+	var r7;
+	var r8;
+	var r9;
+	var r10;
+	var r11;
+var __label__ = 0;
+	i7 = sp + -8;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp+1)];
+	r1 = heap32[(fp)];
+	r0 = r0 >> 2;
+	r2 = heap32[(r0+2)];
+_1: do {
+	if(r2 >0) //_LBB355_2
+{
+	r3 = 0;
+	r2 = r3;
+_3: while(true){
+	r4 = heap32[(r0+4)];
+	r5 = r3 << 2;
+	r4 = (r4 + r5)|0;
+	r4 = r4 >> 2;
+	r4 = heap32[(r4)];
+	r3 = (r3 + 1)|0;
+	r5 = heapU8[r4+204];
+	r5 = r5 & 3;
+	if(r5 ==0) //_LBB355_5
+{
+	r5 = (r2 + 1)|0;
+	r6 = r4 >> 2;
+	heap32[(r6+52)] = r2;
+	r2 = r5;
+}
+	r4 = r4 >> 2;
+	heap32[(r4+53)] = -1;
+	heap32[(r4+60)] = 1065353216;
+	r4 = heap32[(r0+2)];
+	if(r4 >r3) //_LBB355_3
+{
+continue _3;
+}
+else{
+break _1;
+}
+}
+}
+else{
+	r2 = 0;
+}
+} while(0);
+	r3 = r1 >> 2;
+	r4 = heap32[(r3+2)];
+_10: do {
+if(!(r4 >r2)) //_LBB355_26
+{
+if(!(r4 >=r2)) //_LBB355_26
+{
+	r5 = heap32[(r3+3)];
+if(!(r5 >=r2)) //_LBB355_25
+{
+	if(r2 !=0) //_LBB355_12
+{
+	r5 = gNumAlignedAllocs;
+	r5 = r5 >> 2;
+	r6 = heap32[(r5)];
+	r7 = r2 << 3;
+	r6 = (r6 + 1)|0;
+	r7 = r7 | 3;
+	heap32[(r5)] = r6;
+	r5 = (r7 + 16)|0;
+	heap32[(g0)] = r5;
+	malloc(i7);
+	r5 = r_g0;
+	if(r5 !=0) //_LBB355_14
+{
+	r6 = 0;
+	r7 = (r5 + 4)|0;
+	r6 = (r6 - r7)|0;
+	r6 = r6 & 15;
+	r6 = (r5 + r6)|0;
+	r7 = (r6 + 4)|0;
+	r6 = r6 >> 2;
+	heap32[(r6)] = r5;
+	r5 = r7;
+}
+}
+else{
+	r5 = 0;
+}
+	r6 = (r1 + 16)|0;
+	if(r4 <1) //_LBB355_17
+{
+	r7 = r6 >> 2;
+	r8 = heap32[(r7)];
+}
+else{
+	r7 = 0;
+_23: while(true){
+	r8 = r6 >> 2;
+	r8 = heap32[(r8)];
+	r9 = r7 << 3;
+	r10 = (r8 + r9)|0;
+	r10 = r10 >> 2;
+	r9 = (r5 + r9)|0;
+	r11 = heap32[(r10+1)];
+	r10 = heap32[(r10)];
+	r9 = r9 >> 2;
+	r7 = (r7 + 1)|0;
+	heap32[(r9)] = r10;
+	heap32[(r9+1)] = r11;
+if(!(r4 !=r7)) //_LBB355_18
+{
+break _23;
+}
+}
+	r6 = (r1 + 16)|0;
+}
+if(!(r8 ==0)) //_LBB355_24
+{
+	r7 = heapU8[r1+20];
+if(!(r7 ==0)) //_LBB355_23
+{
+	r7 = gNumAlignedFree;
+	r7 = r7 >> 2;
+	r9 = heap32[(r7)];
+	r9 = (r9 + 1)|0;
+	r8 = r8 >> 2;
+	heap32[(r7)] = r9;
+	r7 = heap32[(r8+-1)];
+	heap32[(g0)] = r7;
+	free(i7);
+}
+	r7 = r6 >> 2;
+	heap32[(r7)] = 0;
+}
+	r7 = 1;
+	r6 = r6 >> 2;
+	heap8[r1+20] = r7;
+	heap32[(r6)] = r5;
+	heap32[(r3+3)] = r2;
+	if(r4 >=r2) //_LBB355_26
+{
+break _10;
+}
+}
+_33: while(true){
+	r1 = r4 << 3;
+	r5 = heap32[(r3+4)];
+	r1 = (r5 + r1)|0;
+	r1 = r1 >> 2;
+	r4 = (r4 + 1)|0;
+	heap32[(r1)] = 0;
+	heap32[(r1+1)] = 0;
+	if(r2 !=r4) //_LBB355_25
+{
+continue _33;
+}
+else{
+break _10;
+}
+}
+}
+}
+} while(0);
+	heap32[(r3+2)] = r2;
+_36: do {
+if(!(r2 <1)) //_LBB355_29
+{
+	r1 = 0;
+_38: while(true){
+	r4 = r1 << 3;
+	r5 = heap32[(r3+4)];
+	r5 = (r5 + r4)|0;
+	r5 = r5 >> 2;
+	heap32[(r5)] = r1;
+	r5 = heap32[(r3+4)];
+	r4 = (r5 + r4)|0;
+	r1 = (r1 + 1)|0;
+	r4 = r4 >> 2;
+	heap32[(r4+1)] = 1;
+	if(r2 !=r1) //_LBB355_28
+{
+continue _38;
+}
+else{
+break _36;
+}
+}
+}
+} while(0);
+	r0 = heap32[(r0+20)];
+	r1 = r0 >> 2;
+	r1 = heap32[(r1)];
+	r1 = r1 >> 2;
+	r1 = heap32[(r1+9)];
+	heap32[(g0)] = r0;
+	__FUNCTION_TABLE__[(r1)>>2](i7);
+	r0 = r_g0;
+	r1 = r0 >> 2;
+	r2 = heap32[(r1)];
+	r2 = r2 >> 2;
+	r2 = heap32[(r2+9)];
+	heap32[(g0)] = r0;
+	__FUNCTION_TABLE__[(r2)>>2](i7);
+	r2 = r_g0;
+	r1 = heap32[(r1)];
+	r1 = r1 >> 2;
+	r1 = heap32[(r1+5)];
+	heap32[(g0)] = r0;
+	__FUNCTION_TABLE__[(r1)>>2](i7);
+	r0 = r_g0;
+_41: do {
+if(!(r2 <1)) //_LBB355_46
+{
+	r0 = (r0 + 4)|0;
+_43: while(true){
+	r1 = r0 >> 2;
+	r4 = heap32[(r1+-1)];
+	r4 = r4 >> 2;
+	r4 = heap32[(r4)];
+if(!(r4 ==0)) //_LBB355_45
+{
+	r1 = heap32[(r1)];
+	r1 = r1 >> 2;
+	r1 = heap32[(r1)];
+if(!(r1 ==0)) //_LBB355_45
+{
+	r4 = r4 >> 2;
+	r5 = heap32[(r4+51)];
+	r5 = r5 & 7;
+if(!(r5 !=0)) //_LBB355_45
+{
+	r5 = heapU8[r1+204];
+	r5 = r5 & 7;
+if(!(r5 !=0)) //_LBB355_45
+{
+	r4 = heap32[(r4+52)];
+	r5 = heap32[(r3+4)];
+	r6 = r4 << 3;
+	r6 = (r5 + r6)|0;
+	r6 = r6 >> 2;
+	r1 = r1 >> 2;
+	r6 = heap32[(r6)];
+	r1 = heap32[(r1+52)];
+if(!(r6 ==r4)) //_LBB355_37
+{
+_51: while(true){
+	r6 = r6 << 3;
+	r4 = r4 << 3;
+	r6 = (r5 + r6)|0;
+	r4 = (r5 + r4)|0;
+	r5 = r6 >> 2;
+	r4 = r4 >> 2;
+	r6 = heap32[(r5)];
+	heap32[(r4)] = r6;
+	r4 = heap32[(r5)];
+	r5 = heap32[(r3+4)];
+	r6 = r4 << 3;
+	r6 = (r5 + r6)|0;
+	r6 = r6 >> 2;
+	r6 = heap32[(r6)];
+if(!(r6 !=r4)) //_LBB355_38
+{
+break _51;
+}
+}
+}
+	r6 = r1 << 3;
+	r6 = (r5 + r6)|0;
+	r6 = r6 >> 2;
+	r6 = heap32[(r6)];
+_54: do {
+if(!(r6 ==r1)) //_LBB355_41
+{
+_55: while(true){
+	r6 = r6 << 3;
+	r1 = r1 << 3;
+	r6 = (r5 + r6)|0;
+	r1 = (r5 + r1)|0;
+	r5 = r6 >> 2;
+	r1 = r1 >> 2;
+	r6 = heap32[(r5)];
+	heap32[(r1)] = r6;
+	r1 = heap32[(r5)];
+	r5 = heap32[(r3+4)];
+	r6 = r1 << 3;
+	r6 = (r5 + r6)|0;
+	r6 = r6 >> 2;
+	r6 = heap32[(r6)];
+if(!(r6 !=r1)) //_LBB355_42
+{
+break _54;
+}
+}
+}
+} while(0);
+if(!(r4 ==r1)) //_LBB355_45
+{
+	r4 = r4 << 3;
+	r5 = (r5 + r4)|0;
+	r5 = r5 >> 2;
+	heap32[(r5)] = r1;
+	r5 = heap32[(r3+4)];
+	r1 = r1 << 3;
+	r1 = (r5 + r1)|0;
+	r4 = (r5 + r4)|0;
+	r1 = r1 >> 2;
+	r4 = r4 >> 2;
+	r5 = heap32[(r1+1)];
+	r4 = heap32[(r4+1)];
+	r4 = (r4 + r5)|0;
+	heap32[(r1+1)] = r4;
+}
+}
+}
+}
+}
+	r2 = (r2 + -1)|0;
+	r0 = (r0 + 16)|0;
+	if(r2 !=0) //_LBB355_31
+{
+continue _43;
+}
+else{
+break _41;
+}
+}
+}
+} while(0);
+	return;
+}
+
+function _ZN25btSimulationIslandManagerD0Ev(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+var __label__ = 0;
+	i7 = sp + -8;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = _ZTV25btSimulationIslandManager;
+	r2 = r0 >> 2;
+	r1 = (r1 + 8)|0;
+	heap32[(r2)] = r1;
+	r1 = heap32[(r2+14)];
+if(!(r1 ==0)) //_LBB356_4
+{
+	r3 = heapU8[r0+60];
+if(!(r3 ==0)) //_LBB356_3
+{
+	r3 = gNumAlignedFree;
+	r3 = r3 >> 2;
+	r4 = heap32[(r3)];
+	r4 = (r4 + 1)|0;
+	r1 = r1 >> 2;
+	heap32[(r3)] = r4;
+	r1 = heap32[(r1+-1)];
+	heap32[(g0)] = r1;
+	free(i7);
+}
+	heap32[(r2+14)] = 0;
+}
+	r1 = 1;
+	heap8[r0+60] = r1;
+	heap32[(r2+14)] = 0;
+	heap32[(r2+12)] = 0;
+	heap32[(r2+13)] = 0;
+	r3 = heap32[(r2+9)];
+if(!(r3 ==0)) //_LBB356_8
+{
+	r4 = heapU8[r0+40];
+if(!(r4 ==0)) //_LBB356_7
+{
+	r4 = gNumAlignedFree;
+	r4 = r4 >> 2;
+	r5 = heap32[(r4)];
+	r5 = (r5 + 1)|0;
+	r3 = r3 >> 2;
+	heap32[(r4)] = r5;
+	r3 = heap32[(r3+-1)];
+	heap32[(g0)] = r3;
+	free(i7);
+}
+	heap32[(r2+9)] = 0;
+}
+	heap8[r0+40] = r1;
+	heap32[(r2+9)] = 0;
+	heap32[(r2+7)] = 0;
+	heap32[(r2+8)] = 0;
+	r3 = heap32[(r2+4)];
+if(!(r3 ==0)) //_LBB356_12
+{
+	r4 = heapU8[r0+20];
+if(!(r4 ==0)) //_LBB356_11
+{
+	r4 = gNumAlignedFree;
+	r4 = r4 >> 2;
+	r5 = heap32[(r4)];
+	r5 = (r5 + 1)|0;
+	r3 = r3 >> 2;
+	heap32[(r4)] = r5;
+	r3 = heap32[(r3+-1)];
+	heap32[(g0)] = r3;
+	free(i7);
+}
+	heap32[(r2+4)] = 0;
+}
+	heap8[r0+20] = r1;
+	heap32[(r2+4)] = 0;
+	heap32[(r2+2)] = 0;
+	heap32[(r2+3)] = 0;
+	heap32[(g0)] = r0;
+	_ZdlPv(i7);
+	return;
+}
+
+function _ZN25btSimulationIslandManagerD1Ev(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+var __label__ = 0;
+	i7 = sp + -8;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = _ZTV25btSimulationIslandManager;
+	r2 = r0 >> 2;
+	r1 = (r1 + 8)|0;
+	heap32[(r2)] = r1;
+	r1 = heap32[(r2+14)];
+if(!(r1 ==0)) //_LBB357_4
+{
+	r3 = heapU8[r0+60];
+if(!(r3 ==0)) //_LBB357_3
+{
+	r3 = gNumAlignedFree;
+	r3 = r3 >> 2;
+	r4 = heap32[(r3)];
+	r4 = (r4 + 1)|0;
+	r1 = r1 >> 2;
+	heap32[(r3)] = r4;
+	r1 = heap32[(r1+-1)];
+	heap32[(g0)] = r1;
+	free(i7);
+}
+	heap32[(r2+14)] = 0;
+}
+	r1 = 1;
+	heap8[r0+60] = r1;
+	heap32[(r2+14)] = 0;
+	heap32[(r2+12)] = 0;
+	heap32[(r2+13)] = 0;
+	r3 = heap32[(r2+9)];
+if(!(r3 ==0)) //_LBB357_8
+{
+	r4 = heapU8[r0+40];
+if(!(r4 ==0)) //_LBB357_7
+{
+	r4 = gNumAlignedFree;
+	r4 = r4 >> 2;
+	r5 = heap32[(r4)];
+	r5 = (r5 + 1)|0;
+	r3 = r3 >> 2;
+	heap32[(r4)] = r5;
+	r3 = heap32[(r3+-1)];
+	heap32[(g0)] = r3;
+	free(i7);
+}
+	heap32[(r2+9)] = 0;
+}
+	heap8[r0+40] = r1;
+	heap32[(r2+9)] = 0;
+	heap32[(r2+7)] = 0;
+	heap32[(r2+8)] = 0;
+	r3 = heap32[(r2+4)];
+if(!(r3 ==0)) //_LBB357_12
+{
+	r4 = heapU8[r0+20];
+if(!(r4 ==0)) //_LBB357_11
+{
+	r4 = gNumAlignedFree;
+	r4 = r4 >> 2;
+	r5 = heap32[(r4)];
+	r5 = (r5 + 1)|0;
+	r3 = r3 >> 2;
+	heap32[(r4)] = r5;
+	r3 = heap32[(r3+-1)];
+	heap32[(g0)] = r3;
+	free(i7);
+}
+	heap32[(r2+4)] = 0;
+}
+	heap8[r0+20] = r1;
+	heap32[(r2+4)] = 0;
+	heap32[(r2+2)] = 0;
+	heap32[(r2+3)] = 0;
+	return;
+}
+
+function _ZN32btSphereSphereCollisionAlgorithm21calculateTimeOfImpactEP17btCollisionObjectS1_RK16btDispatcherInfoP16btManifoldResult(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var f0;
+var __label__ = 0;
+	i7 = sp + 0;var g0 = i7>>2; // save stack
+	f0 =                         1;
+	f_g0 = f0;
+	return;
+}
+
+function _ZN32btSphereSphereCollisionAlgorithm22getAllContactManifoldsER20btAlignedObjectArrayIP20btPersistentManifoldE(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+	var r6;
+	var r7;
+	var r8;
+	var r9;
+	var r10;
+	var r11;
+var __label__ = 0;
+	i7 = sp + -8;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = r0 >> 2;
+	r2 = heap32[(r1+3)];
+if(!(r2 ==0)) //_LBB359_23
+{
+	r0 = heapU8[r0+8];
+if(!(r0 ==0)) //_LBB359_23
+{
+	r0 = heap32[(fp+1)];
+	r3 = r0 >> 2;
+	r4 = heap32[(r3+2)];
+	r5 = heap32[(r3+1)];
+	if(r4 ==r5) //_LBB359_4
+{
+	r6 = 1;
+	r7 = r5 << 1;
+	r7 = r5 == 0 ? r6 : r7;
+if(!(r4 >=r7)) //_LBB359_3
+{
+	if(r7 !=0) //_LBB359_7
+{
+	r2 = gNumAlignedAllocs;
+	r2 = r2 >> 2;
+	r4 = heap32[(r2)];
+	r8 = r7 << 2;
+	r4 = (r4 + 1)|0;
+	r8 = r8 | 3;
+	heap32[(r2)] = r4;
+	r2 = (r8 + 16)|0;
+	heap32[(g0)] = r2;
+	malloc(i7);
+	r2 = r_g0;
+	if(r2 !=0) //_LBB359_9
+{
+	r4 = 0;
+	r8 = (r2 + 4)|0;
+	r4 = (r4 - r8)|0;
+	r4 = r4 & 15;
+	r4 = (r2 + r4)|0;
+	r8 = (r4 + 4)|0;
+	r4 = r4 >> 2;
+	heap32[(r4)] = r2;
+	r2 = r8;
+}
+}
+else{
+	r2 = 0;
+}
+	r4 = (r0 + 12)|0;
+	if(r5 <1) //_LBB359_12
+{
+	r8 = r4 >> 2;
+	r9 = heap32[(r8)];
+}
+else{
+	r8 = 0;
+_15: while(true){
+	r9 = r4 >> 2;
+	r9 = heap32[(r9)];
+	r10 = r8 << 2;
+	r11 = (r9 + r10)|0;
+	r11 = r11 >> 2;
+	r10 = (r2 + r10)|0;
+	r11 = heap32[(r11)];
+	r8 = (r8 + 1)|0;
+	r10 = r10 >> 2;
+	heap32[(r10)] = r11;
+if(!(r5 !=r8)) //_LBB359_13
+{
+break _15;
+}
+}
+	r4 = (r0 + 12)|0;
+}
+	if(r9 !=0) //_LBB359_17
+{
+	r8 = heapU8[r0+16];
+	if(r8 !=0) //_LBB359_19
+{
+	r5 = gNumAlignedFree;
+	r5 = r5 >> 2;
+	r8 = heap32[(r5)];
+	r8 = (r8 + 1)|0;
+	r9 = r9 >> 2;
+	heap32[(r5)] = r8;
+	r5 = heap32[(r9+-1)];
+	heap32[(g0)] = r5;
+	free(i7);
+	r5 = heap32[(r3+1)];
+}
+	r8 = r4 >> 2;
+	heap32[(r8)] = 0;
+}
+	r4 = r4 >> 2;
+	heap8[r0+16] = r6;
+	heap32[(r4)] = r2;
+	heap32[(r3+2)] = r7;
+	r2 = heap32[(r1+3)];
+}
+}
+	r0 = r5 << 2;
+	r1 = heap32[(r3+3)];
+	r0 = (r1 + r0)|0;
+	r0 = r0 >> 2;
+	heap32[(r0)] = r2;
+	r0 = heap32[(r3+1)];
+	r0 = (r0 + 1)|0;
+	heap32[(r3+1)] = r0;
+}
+}
+	return;
+}
+
+function _ZN32btSphereSphereCollisionAlgorithm16processCollisionEP17btCollisionObjectS1_RK16btDispatcherInfoP16btManifoldResult(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var f0;
+	var f1;
+	var f2;
+	var f3;
+	var f4;
+	var f5;
+	var f6;
+	var f7;
+var __label__ = 0;
+	i7 = sp + -48;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r0 = r0 >> 2;
+	r0 = heap32[(r0+3)];
+_1: do {
+if(!(r0 ==0)) //_LBB360_10
+{
+	r1 = heap32[(fp+1)];
+	r2 = heap32[(fp+2)];
+	r3 = heap32[(fp+4)];
+	r4 = r3 >> 2;
+	r1 = r1 >> 2;
+	heap32[(r4+1)] = r0;
+	r0 = r2 >> 2;
+	f0 = heapFloat[(r1+14)];
+	f1 = heapFloat[(r0+14)];
+	f2 = heapFloat[(r1+13)];
+	f3 = heapFloat[(r0+13)];
+	f0 = f0-f1;
+	f1 = f2-f3;
+	f2 = heapFloat[(r1+15)];
+	f3 = heapFloat[(r0+15)];
+	f2 = f2-f3;
+	r1 = heap32[(r1+48)];
+	r2 = heap32[(r0+48)];
+	f3 = f1*f1;
+	f4 = f0*f0;
+	f3 = f3+f4;
+	f4 = f2*f2;
+	f3 = f3+f4;
+	heapFloat[(g0)] = f3;
+	sqrtf(i7);
+	f3 = f_g0;
+	r1 = r1 >> 2;
+	r2 = r2 >> 2;
+	f4 = heapFloat[(r1+7)];
+	f5 = heapFloat[(r1+3)];
+	f6 = heapFloat[(r2+7)];
+	f7 = heapFloat[(r2+3)];
+	f6 = f6*f7;
+	f4 = f4*f5;
+	f4 = f4+f6;
+_3: do {
+	if(f4 >=f3) //_LBB360_11
+{
+	r1 = sp + -16;
+	r2 = r1 >> 2;
+	heap32[(fp+-4)] = 1065353216;
+	heap32[(r2+1)] = 0;
+	f4 = f3-f4;
+	heap32[(r2+2)] = 0;
+	heap32[(r2+3)] = 0;
+	f5 =   1.1920928955078125e-007;
+	if(f3 >f5) //_LBB360_13
+{
+	f5 =                         1;
+	f3 = f5/f3;
+	f1 = f1*f3;
+	f0 = f0*f3;
+	heapFloat[(fp+-4)] = f1;
+	f2 = f2*f3;
+	heapFloat[(r2+1)] = f0;
+	heapFloat[(r2+2)] = f2;
+	heap32[(r2+3)] = 0;
+}
+else{
+	f1 =                         1;
+	f0 =                         0;
+	f2 = f0;
+}
+	f1 = f1*f6;
+	f3 = heapFloat[(r0+13)];
+	f5 = heapFloat[(r0+15)];
+	f7 = heapFloat[(r0+14)];
+	r0 = sp + -32;
+	f0 = f0*f6;
+	f1 = f3+f1;
+	f2 = f2*f6;
+	r2 = r0 >> 2;
+	f0 = f7+f0;
+	heapFloat[(fp+-8)] = f1;
+	f1 = f5+f2;
+	heapFloat[(r2+1)] = f0;
+	heapFloat[(r2+2)] = f1;
+	heap32[(r2+3)] = 0;
+	r2 = heap32[(r4)];
+	r2 = r2 >> 2;
+	r2 = heap32[(r2+4)];
+	heap32[(g0)] = r3;
+	heap32[(g0+1)] = r1;
+	heap32[(g0+2)] = r0;
+	heapFloat[(g0+3)] = f4;
+	__FUNCTION_TABLE__[(r2)>>2](i7);
+	r0 = heap32[(r4+1)];
+	if(r0 !=0) //_LBB360_16
+{
+	r1 = r0 >> 2;
+	r2 = heap32[(r1+279)];
+	if(r2 ==0) //_LBB360_10
+{
+break _1;
+}
+else{
+	r1 = heap32[(r1+277)];
+	r2 = heap32[(r4+34)];
+	if(r1 ==r2) //_LBB360_19
+{
+	r1 = (r3 + 8)|0;
+	r2 = (r3 + 72)|0;
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r1;
+	heap32[(g0+2)] = r2;
+	_ZN20btPersistentManifold20refreshContactPointsERK11btTransformS2_(i7);
+	return;
+}
+else{
+	r1 = (r3 + 72)|0;
+	r3 = (r3 + 8)|0;
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r1;
+__label__ = 8;
+break _3;
+}
+}
+}
+else{
+__label__ = 3;
+}
+}
+else{
+	r0 = heap32[(r4+1)];
+	if(r0 !=0) //_LBB360_4
+{
+	r1 = r0 >> 2;
+	r2 = heap32[(r1+279)];
+	if(r2 ==0) //_LBB360_10
+{
+break _1;
+}
+else{
+	r1 = heap32[(r1+277)];
+	r4 = heap32[(r4+34)];
+	if(r1 ==r4) //_LBB360_9
+{
+	r4 = (r3 + 8)|0;
+	r3 = (r3 + 72)|0;
+}
+else{
+	r4 = (r3 + 72)|0;
+	r3 = (r3 + 8)|0;
+}
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r4;
+__label__ = 8;
+}
+}
+else{
+__label__ = 3;
+}
+}
+} while(0);
+switch(__label__ ){//multiple entries
+case 8:
+	heap32[(g0+2)] = r3;
+	_ZN20btPersistentManifold20refreshContactPointsERK11btTransformS2_(i7);
+	return;
+break;
+case 3:
+	r0 = _2E_str59;
+	r3 = _2E_str160;
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r3;
+	heap32[(g0+2)] = 101;
+	_assert(i7);
+break;
+}
+}
+} while(0);
+	return;
+}
+
+function _ZN32btSphereSphereCollisionAlgorithmD0Ev(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+var __label__ = 0;
+	i7 = sp + -8;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = _ZTV32btSphereSphereCollisionAlgorithm;
+	r2 = r0 >> 2;
+	r1 = (r1 + 8)|0;
+	heap32[(r2)] = r1;
+	r1 = heapU8[r0+8];
+if(!(r1 ==0)) //_LBB361_3
+{
+	r1 = heap32[(r2+3)];
+if(!(r1 ==0)) //_LBB361_3
+{
+	r3 = heap32[(r2+1)];
+	r4 = r3 >> 2;
+	r4 = heap32[(r4)];
+	r4 = r4 >> 2;
+	r4 = heap32[(r4+4)];
+	heap32[(g0)] = r3;
+	heap32[(g0+1)] = r1;
+	__FUNCTION_TABLE__[(r4)>>2](i7);
+}
+}
+	r1 = _ZTV30btActivatingCollisionAlgorithm;
+	r1 = (r1 + 8)|0;
+	heap32[(r2)] = r1;
+	heap32[(g0)] = r0;
+	_ZdlPv(i7);
+	return;
+}
+
+function _ZN32btSphereSphereCollisionAlgorithmD1Ev(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+var __label__ = 0;
+	i7 = sp + -8;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = _ZTV32btSphereSphereCollisionAlgorithm;
+	r2 = r0 >> 2;
+	r1 = (r1 + 8)|0;
+	heap32[(r2)] = r1;
+	r0 = heapU8[r0+8];
+if(!(r0 ==0)) //_LBB362_3
+{
+	r0 = heap32[(r2+3)];
+if(!(r0 ==0)) //_LBB362_3
+{
+	r1 = heap32[(r2+1)];
+	r3 = r1 >> 2;
+	r3 = heap32[(r3)];
+	r3 = r3 >> 2;
+	r3 = heap32[(r3+4)];
+	heap32[(g0)] = r1;
+	heap32[(g0+1)] = r0;
+	__FUNCTION_TABLE__[(r3)>>2](i7);
+}
+}
+	r0 = _ZTV30btActivatingCollisionAlgorithm;
+	r0 = (r0 + 8)|0;
+	heap32[(r2)] = r0;
+	return;
+}
+
+function _ZN34btSphereTriangleCollisionAlgorithm21calculateTimeOfImpactEP17btCollisionObjectS1_RK16btDispatcherInfoP16btManifoldResult(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var f0;
+var __label__ = 0;
+	i7 = sp + 0;var g0 = i7>>2; // save stack
+	f0 =                         1;
+	f_g0 = f0;
+	return;
+}
+
+function _ZN34btSphereTriangleCollisionAlgorithm22getAllContactManifoldsER20btAlignedObjectArrayIP20btPersistentManifoldE(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+	var r6;
+	var r7;
+	var r8;
+	var r9;
+	var r10;
+	var r11;
+var __label__ = 0;
+	i7 = sp + -8;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = r0 >> 2;
+	r2 = heap32[(r1+3)];
+if(!(r2 ==0)) //_LBB364_23
+{
+	r0 = heapU8[r0+8];
+if(!(r0 ==0)) //_LBB364_23
+{
+	r0 = heap32[(fp+1)];
+	r3 = r0 >> 2;
+	r4 = heap32[(r3+2)];
+	r5 = heap32[(r3+1)];
+	if(r4 ==r5) //_LBB364_4
+{
+	r6 = 1;
+	r7 = r5 << 1;
+	r7 = r5 == 0 ? r6 : r7;
+if(!(r4 >=r7)) //_LBB364_3
+{
+	if(r7 !=0) //_LBB364_7
+{
+	r2 = gNumAlignedAllocs;
+	r2 = r2 >> 2;
+	r4 = heap32[(r2)];
+	r8 = r7 << 2;
+	r4 = (r4 + 1)|0;
+	r8 = r8 | 3;
+	heap32[(r2)] = r4;
+	r2 = (r8 + 16)|0;
+	heap32[(g0)] = r2;
+	malloc(i7);
+	r2 = r_g0;
+	if(r2 !=0) //_LBB364_9
+{
+	r4 = 0;
+	r8 = (r2 + 4)|0;
+	r4 = (r4 - r8)|0;
+	r4 = r4 & 15;
+	r4 = (r2 + r4)|0;
+	r8 = (r4 + 4)|0;
+	r4 = r4 >> 2;
+	heap32[(r4)] = r2;
+	r2 = r8;
+}
+}
+else{
+	r2 = 0;
+}
+	r4 = (r0 + 12)|0;
+	if(r5 <1) //_LBB364_12
+{
+	r8 = r4 >> 2;
+	r9 = heap32[(r8)];
+}
+else{
+	r8 = 0;
+_15: while(true){
+	r9 = r4 >> 2;
+	r9 = heap32[(r9)];
+	r10 = r8 << 2;
+	r11 = (r9 + r10)|0;
+	r11 = r11 >> 2;
+	r10 = (r2 + r10)|0;
+	r11 = heap32[(r11)];
+	r8 = (r8 + 1)|0;
+	r10 = r10 >> 2;
+	heap32[(r10)] = r11;
+if(!(r5 !=r8)) //_LBB364_13
+{
+break _15;
+}
+}
+	r4 = (r0 + 12)|0;
+}
+	if(r9 !=0) //_LBB364_17
+{
+	r8 = heapU8[r0+16];
+	if(r8 !=0) //_LBB364_19
+{
+	r5 = gNumAlignedFree;
+	r5 = r5 >> 2;
+	r8 = heap32[(r5)];
+	r8 = (r8 + 1)|0;
+	r9 = r9 >> 2;
+	heap32[(r5)] = r8;
+	r5 = heap32[(r9+-1)];
+	heap32[(g0)] = r5;
+	free(i7);
+	r5 = heap32[(r3+1)];
+}
+	r8 = r4 >> 2;
+	heap32[(r8)] = 0;
+}
+	r4 = r4 >> 2;
+	heap8[r0+16] = r6;
+	heap32[(r4)] = r2;
+	heap32[(r3+2)] = r7;
+	r2 = heap32[(r1+3)];
+}
+}
+	r0 = r5 << 2;
+	r1 = heap32[(r3+3)];
+	r0 = (r1 + r0)|0;
+	r0 = r0 >> 2;
+	heap32[(r0)] = r2;
+	r0 = heap32[(r3+1)];
+	r0 = (r0 + 1)|0;
+	heap32[(r3+1)] = r0;
+}
+}
+	return;
+}
+
+function _ZN34btSphereTriangleCollisionAlgorithm16processCollisionEP17btCollisionObjectS1_RK16btDispatcherInfoP16btManifoldResult(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+	var r6;
+	var r7;
+	var r8;
+	var r9;
+	var r10;
+	var f0;
+var __label__ = 0;
+	i7 = sp + -176;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = r0 >> 2;
+	r2 = heap32[(r1+3)];
+if(!(r2 ==0)) //_LBB365_8
+{
+	r3 = heap32[(fp+1)];
+	r4 = heap32[(fp+2)];
+	r5 = heap32[(fp+3)];
+	r6 = heap32[(fp+4)];
+	r7 = heapU8[r0+16];
+	r8 = r7 == 0 ? r4 : r3;
+	r3 = r7 == 0 ? r3 : r4;
+	r4 = r8 >> 2;
+	r3 = r3 >> 2;
+	r7 = heap32[(r4+48)];
+	r8 = heap32[(r3+48)];
+	r9 = r6 >> 2;
+	heap32[(r9+1)] = r2;
+	r1 = heap32[(r1+3)];
+	r1 = r1 >> 2;
+	f0 = heapFloat[(r1+280)];
+	r1 = _ZTV22SphereTriangleDetector;
+	r2 = sp + -16;
+	r1 = (r1 + 8)|0;
+	r10 = r2 >> 2;
+	heap32[(fp+-4)] = r1;
+	heap32[(r10+1)] = r8;
+	r1 = sp + -152;
+	heap32[(r10+2)] = r7;
+	r7 = r1 >> 2;
+	heapFloat[(r10+3)] = f0;
+	heap32[(r7+33)] = 0;
+	heap32[(r7+32)] = 1566444395;
+	heap32[(fp+-38)] = heap32[(r3+1)];
+	heap32[(r7+1)] = heap32[(r3+2)];
+	heap32[(r7+2)] = heap32[(r3+3)];
+	heap32[(r7+3)] = heap32[(r3+4)];
+	heap32[(r7+4)] = heap32[(r3+5)];
+	heap32[(r7+5)] = heap32[(r3+6)];
+	heap32[(r7+6)] = heap32[(r3+7)];
+	heap32[(r7+7)] = heap32[(r3+8)];
+	heap32[(r7+8)] = heap32[(r3+9)];
+	heap32[(r7+9)] = heap32[(r3+10)];
+	heap32[(r7+10)] = heap32[(r3+11)];
+	heap32[(r7+11)] = heap32[(r3+12)];
+	heap32[(r7+12)] = heap32[(r3+13)];
+	heap32[(r7+13)] = heap32[(r3+14)];
+	heap32[(r7+14)] = heap32[(r3+15)];
+	heap32[(r7+15)] = heap32[(r3+16)];
+	heap32[(r7+16)] = heap32[(r4+1)];
+	heap32[(r7+17)] = heap32[(r4+2)];
+	heap32[(r7+18)] = heap32[(r4+3)];
+	heap32[(r7+19)] = heap32[(r4+4)];
+	heap32[(r7+20)] = heap32[(r4+5)];
+	heap32[(r7+21)] = heap32[(r4+6)];
+	heap32[(r7+22)] = heap32[(r4+7)];
+	heap32[(r7+23)] = heap32[(r4+8)];
+	heap32[(r7+24)] = heap32[(r4+9)];
+	heap32[(r7+25)] = heap32[(r4+10)];
+	heap32[(r7+26)] = heap32[(r4+11)];
+	heap32[(r7+27)] = heap32[(r4+12)];
+	heap32[(r7+28)] = heap32[(r4+13)];
+	heap32[(r7+29)] = heap32[(r4+14)];
+	heap32[(r7+30)] = heap32[(r4+15)];
+	heap32[(r7+31)] = heap32[(r4+16)];
+	r3 = r5 >> 2;
+	r4 = heapU8[r0+16];
+	r3 = heap32[(r3+5)];
+	heap32[(g0)] = r2;
+	heap32[(g0+1)] = r1;
+	heap32[(g0+2)] = r6;
+	heap32[(g0+3)] = r3;
+	heap32[(g0+4)] = r4;
+	_ZN22SphereTriangleDetector16getClosestPointsERKN36btDiscreteCollisionDetectorInterface17ClosestPointInputERNS0_6ResultEP12btIDebugDrawb(i7);
+	r0 = heapU8[r0+8];
+if(!(r0 ==0)) //_LBB365_8
+{
+	r0 = heap32[(r9+1)];
+	if(r0 !=0) //_LBB365_4
+{
+	r1 = r0 >> 2;
+	r2 = heap32[(r1+279)];
+if(!(r2 ==0)) //_LBB365_8
+{
+	r1 = heap32[(r1+277)];
+	r2 = heap32[(r9+34)];
+	if(r1 ==r2) //_LBB365_7
+{
+	r1 = (r6 + 8)|0;
+	r2 = (r6 + 72)|0;
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r1;
+	heap32[(g0+2)] = r2;
+	_ZN20btPersistentManifold20refreshContactPointsERK11btTransformS2_(i7);
+}
+else{
+	r1 = (r6 + 72)|0;
+	r6 = (r6 + 8)|0;
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r1;
+	heap32[(g0+2)] = r6;
+	_ZN20btPersistentManifold20refreshContactPointsERK11btTransformS2_(i7);
+	return;
+}
+}
+}
+else{
+	r0 = _2E_str59;
+	r6 = _2E_str160;
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r6;
+	heap32[(g0+2)] = 101;
+	_assert(i7);
+}
+}
+}
+	return;
+}
+
+function _ZN34btSphereTriangleCollisionAlgorithmD0Ev(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+var __label__ = 0;
+	i7 = sp + -8;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = _ZTV34btSphereTriangleCollisionAlgorithm;
+	r2 = r0 >> 2;
+	r1 = (r1 + 8)|0;
+	heap32[(r2)] = r1;
+	r1 = heapU8[r0+8];
+if(!(r1 ==0)) //_LBB366_3
+{
+	r1 = heap32[(r2+3)];
+if(!(r1 ==0)) //_LBB366_3
+{
+	r3 = heap32[(r2+1)];
+	r4 = r3 >> 2;
+	r4 = heap32[(r4)];
+	r4 = r4 >> 2;
+	r4 = heap32[(r4+4)];
+	heap32[(g0)] = r3;
+	heap32[(g0+1)] = r1;
+	__FUNCTION_TABLE__[(r4)>>2](i7);
+}
+}
+	r1 = _ZTV30btActivatingCollisionAlgorithm;
+	r1 = (r1 + 8)|0;
+	heap32[(r2)] = r1;
+	heap32[(g0)] = r0;
+	_ZdlPv(i7);
+	return;
+}
+
+function _ZN34btSphereTriangleCollisionAlgorithmD1Ev(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+var __label__ = 0;
+	i7 = sp + -8;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = _ZTV34btSphereTriangleCollisionAlgorithm;
+	r2 = r0 >> 2;
+	r1 = (r1 + 8)|0;
+	heap32[(r2)] = r1;
+	r0 = heapU8[r0+8];
+if(!(r0 ==0)) //_LBB367_3
+{
+	r0 = heap32[(r2+3)];
+if(!(r0 ==0)) //_LBB367_3
+{
+	r1 = heap32[(r2+1)];
+	r3 = r1 >> 2;
+	r3 = heap32[(r3)];
+	r3 = r3 >> 2;
+	r3 = heap32[(r3+4)];
+	heap32[(g0)] = r1;
+	heap32[(g0+1)] = r0;
+	__FUNCTION_TABLE__[(r3)>>2](i7);
+}
+}
+	r0 = _ZTV30btActivatingCollisionAlgorithm;
+	r0 = (r0 + 8)|0;
+	heap32[(r2)] = r0;
+	return;
+}
+
+function _ZN20btAlignedObjectArrayI9btElementE17quickSortInternalI31btUnionFindElementSortPredicateEEvT_ii(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+	var r6;
+	var r7;
+	var r8;
+	var r9;
+	var r10;
+	var r11;
+	var r12;
+var __label__ = 0;
+	i7 = sp + -16;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp+2)];
+	r1 = heap32[(fp+1)];
+	r2 = (r0 + r1)|0;
+	r3 = r2 >>> 31;
+	r4 = heap32[(fp)];
+	r2 = (r2 + r3)|0;
+	r3 = r4 >> 2;
+	r2 = r2 & 1073741822;
+	r5 = heap32[(r3+3)];
+	r2 = r2 << 2;
+	r2 = (r5 + r2)|0;
+	r2 = r2 >> 2;
+	r2 = heap32[(r2)];
+	r5 = r1;
+	r6 = r0;
+_1: while(true){
+	r7 = heap32[(r3+3)];
+	r8 = r5 << 3;
+	r8 = (r7 + r8)|0;
+	r8 = r8 >> 2;
+	r8 = heap32[(r8)];
+	if(r8 <r2) //_LBB368_3
+{
+_4: while(true){
+	r8 = r5 << 3;
+	r8 = (r7 + r8)|0;
+	r8 = r8 >> 2;
+	r8 = heap32[(r8+2)];
+	r5 = (r5 + 1)|0;
+	if(r8 <r2) //_LBB368_3
+{
+continue _4;
+}
+else{
+break _4;
+}
+}
+}
+	r9 = r6 << 3;
+	r9 = (r7 + r9)|0;
+	r9 = r9 >> 2;
+	r9 = heap32[(r9)];
+_7: do {
+	if(r2 <r9) //_LBB368_6
+{
+_8: while(true){
+	r9 = r6 << 3;
+	r9 = (r7 + r9)|0;
+	r9 = r9 >> 2;
+	r9 = heap32[(r9+-2)];
+	r6 = (r6 + -1)|0;
+	if(r2 <r9) //_LBB368_6
+{
+continue _8;
+}
+else{
+break _7;
+}
+}
+}
+} while(0);
+	if(r5 <=r6) //_LBB368_9
+{
+	r10 = r5 << 3;
+	r11 = r6 << 3;
+	r10 = (r7 + r10)|0;
+	r7 = (r7 + r11)|0;
+	r10 = r10 >> 2;
+	r7 = r7 >> 2;
+	r12 = heap32[(r10+1)];
+	r7 = heap32[(r7+1)];
+	heap32[(r10)] = r9;
+	heap32[(r10+1)] = r7;
+	r7 = heap32[(r3+3)];
+	r7 = (r7 + r11)|0;
+	r7 = r7 >> 2;
+	r5 = (r5 + 1)|0;
+	r6 = (r6 + -1)|0;
+	heap32[(r7)] = r8;
+	heap32[(r7+1)] = r12;
+}
+	if(r5 <=r6) //_LBB368_1
+{
+continue _1;
+}
+else{
+break _1;
+}
+}
+if(!(r6 <=r1)) //_LBB368_13
+{
+	heap32[(g0)] = r4;
+	heap32[(g0+1)] = r1;
+	heap32[(g0+2)] = r6;
+	_ZN20btAlignedObjectArrayI9btElementE17quickSortInternalI31btUnionFindElementSortPredicateEEvT_ii(i7);
+}
+if(!(r5 >=r0)) //_LBB368_15
+{
+	heap32[(g0)] = r4;
+	heap32[(g0+1)] = r5;
+	heap32[(g0+2)] = r0;
+	_ZN20btAlignedObjectArrayI9btElementE17quickSortInternalI31btUnionFindElementSortPredicateEEvT_ii(i7);
+}
+	return;
+}
+
+function _ZN22SphereTriangleDetectorD1Ev(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+var __label__ = 0;
+	i7 = sp + 0;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = _ZTV22SphereTriangleDetector;
+	r0 = r0 >> 2;
+	r1 = (r1 + 8)|0;
+	heap32[(r0)] = r1;
+	return;
+}
+
+function _ZN22SphereTriangleDetectorD0Ev(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+var __label__ = 0;
+	i7 = sp + -8;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = _ZTV22SphereTriangleDetector;
+	r2 = r0 >> 2;
+	r1 = (r1 + 8)|0;
+	heap32[(r2)] = r1;
+	heap32[(g0)] = r0;
+	_ZdlPv(i7);
+	return;
+}
+
+function _ZN22SphereTriangleDetector16getClosestPointsERKN36btDiscreteCollisionDetectorInterface17ClosestPointInputERNS0_6ResultEP12btIDebugDrawb(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+	var r6;
+	var r7;
+	var r8;
+	var r9;
+	var f0;
+	var f1;
+	var f2;
+	var f3;
+	var f4;
+	var f5;
+	var f6;
+	var f7;
+	var f8;
+	var f9;
+	var f10;
+	var f11;
+	var f12;
+	var f13;
+	var f14;
+	var f15;
+	var f16;
+	var f17;
+	var f18;
+	var f19;
+	var f20;
+	var f21;
+	var f22;
+	var f23;
+	var f24;
+	var f25;
+	var f26;
+	var f27;
+	var f28;
+	var f29;
+	var f30;
+var __label__ = 0;
+	i7 = sp + -144;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r0 = r0 >> 2;
+	r1 = heap32[(r0+2)];
+	r1 = r1 >> 2;
+	f0 = heapFloat[(r1+19)];
+	f1 = heapFloat[(r1+15)];
+	f2 = heapFloat[(r1+23)];
+	f3 = heapFloat[(r1+17)];
+	f4 = heapFloat[(r1+13)];
+	f5 = heapFloat[(r1+21)];
+	f6 = heapFloat[(r1+22)];
+	f7 = heapFloat[(r1+14)];
+	f8 = heapFloat[(r1+18)];
+	f0 = f0-f1;
+	f6 = f6-f7;
+	f3 = f3-f4;
+	f1 = f2-f1;
+	f2 = f8-f7;
+	f4 = f5-f4;
+	r2 = heap32[(fp+1)];
+	r3 = heap32[(r0+1)];
+	f5 = f2*f1;
+	f7 = f0*f6;
+	f0 = f0*f4;
+	f1 = f3*f1;
+	r2 = r2 >> 2;
+	r3 = r3 >> 2;
+	f5 = f5-f7;
+	f0 = f0-f1;
+	f1 = f3*f6;
+	f2 = f2*f4;
+	f3 = heapFloat[(r0+3)];
+	f1 = f1-f2;
+	f2 = f5*f5;
+	f4 = f0*f0;
+	f6 = heapFloat[(r3+7)];
+	f7 = heapFloat[(r3+3)];
+	f8 = heapFloat[(r2+18)];
+	f9 = heapFloat[(r2+22)];
+	f10 = heapFloat[(r2+26)];
+	f11 = heapFloat[(r2+17)];
+	f12 = heapFloat[(r2+21)];
+	f13 = heapFloat[(r2+25)];
+	f14 = heapFloat[(r2+16)];
+	f15 = heapFloat[(r2+12)];
+	f16 = heapFloat[(r2+28)];
+	f17 = heapFloat[(r2+20)];
+	f18 = heapFloat[(r2+13)];
+	f19 = heapFloat[(r2+29)];
+	f20 = heapFloat[(r2+24)];
+	f21 = heapFloat[(r2+14)];
+	f22 = heapFloat[(r2+30)];
+	f2 = f2+f4;
+	f4 = f1*f1;
+	f15 = f15-f16;
+	f16 = f18-f19;
+	f2 = f2+f4;
+	f4 = f21-f22;
+	heapFloat[(g0)] = f2;
+	f2 = f11*f15;
+	f11 = f12*f16;
+	f12 = f14*f15;
+	f14 = f17*f16;
+	sqrtf(i7);
+	f18 =                         1;
+	heapFloat[(fp+-25)] = f18;
+	f8 = f8*f15;
+	f9 = f9*f16;
+	f2 = f2+f11;
+	f11 = f13*f4;
+	f12 = f12+f14;
+	f13 = f20*f4;
+	f14 = f18/f_g0;
+	f2 = f2+f11;
+	f11 = heapFloat[(r1+14)];
+	f12 = f12+f13;
+	f13 = heapFloat[(r1+13)];
+	f8 = f8+f9;
+	f4 = f10*f4;
+	f5 = f5*f14;
+	f9 = f12-f13;
+	heapFloat[(fp+-28)] = f9;
+	f0 = f0*f14;
+	f10 = f2-f11;
+	heapFloat[(fp+-29)] = f10;
+	f4 = f8+f4;
+	f8 = heapFloat[(r1+15)];
+	f1 = f1*f14;
+	f14 = f4-f8;
+	heapFloat[(fp+-27)] = f14;
+	f9 = f9*f5;
+	f10 = f10*f0;
+	f9 = f9+f10;
+	f10 = f14*f1;
+	f9 = f9+f10;
+	r3 = heap32[(fp+2)];
+	r4 = heap32[(fp+4)];
+	f6 = f6*f7;
+	heapFloat[(fp+-26)] = f6;
+	f6 =                         0;
+	if(f9 <f6) //_LBB371_2
+{
+	f9 = -f9;
+	f5 = -f5;
+	f0 = -f0;
+	f1 = -f1;
+}
+	f7 = heapFloat[(fp+-26)];
+	if(f9 <f7) //_LBB371_5
+{
+__label__ = 4;
+}
+else{
+	f7 = f5*f6;
+	f10 = f0*f6;
+	f7 = f7+f10;
+	f10 = f1*f6;
+	f7 = f7+f10;
+	if(f7 >=f6) //_LBB371_31
+{
+__label__ = 29;
+}
+else{
+__label__ = 4;
+}
+}
+_6: do {
+if (__label__ == 4){
+	f7 = heapFloat[(fp+-26)];
+	f3 = f7+f3;
+	heapFloat[(fp+-30)] = f3;
+if(!(f3 <=f9)) //_LBB371_31
+{
+	f3 = heapFloat[(r1+19)];
+	f7 = heapFloat[(r1+23)];
+	f10 = heapFloat[(r1+17)];
+	f14 = heapFloat[(r1+21)];
+	f15 = heapFloat[(r1+18)];
+	f16 = heapFloat[(r1+22)];
+	f17 = f7-f3;
+	f18 = f14-f10;
+	f19 = f3-f8;
+	f8 = f8-f7;
+	f20 = f16-f15;
+	f21 = f10-f13;
+	f22 = f15-f11;
+	f13 = f13-f14;
+	f11 = f11-f16;
+	f23 = f20*f1;
+	f24 = f17*f0;
+	f17 = f17*f5;
+	f25 = f18*f1;
+	f26 = f22*f1;
+	f27 = f19*f0;
+	f19 = f19*f5;
+	f28 = f21*f1;
+	f29 = f11*f1;
+	f30 = f8*f0;
+	f8 = f8*f5;
+	heapFloat[(fp+-31)] = f8;
+	f8 = f13*f1;
+	f23 = f23-f24;
+	f10 = f12-f10;
+	f17 = f17-f25;
+	f15 = f2-f15;
+	f18 = f18*f0;
+	f20 = f20*f5;
+	f24 = f26-f27;
+	f19 = f19-f28;
+	f21 = f21*f0;
+	f22 = f22*f5;
+	f25 = f29-f30;
+	f14 = f12-f14;
+	f26 = heapFloat[(fp+-31)];
+	f8 = f26-f8;
+	f16 = f2-f16;
+	f13 = f13*f0;
+	f11 = f11*f5;
+	f10 = f23*f10;
+	f15 = f17*f15;
+	f17 = f18-f20;
+	f3 = f4-f3;
+	f18 = heapFloat[(fp+-28)];
+	f18 = f24*f18;
+	f20 = heapFloat[(fp+-29)];
+	f19 = f19*f20;
+	f20 = f21-f22;
+	f14 = f25*f14;
+	f8 = f8*f16;
+	f11 = f13-f11;
+	f7 = f4-f7;
+	f10 = f10+f15;
+	f3 = f17*f3;
+	f13 = f18+f19;
+	f15 = heapFloat[(fp+-27)];
+	f15 = f20*f15;
+	f8 = f14+f8;
+	f7 = f11*f7;
+	f3 = f10+f3;
+	f10 = f13+f15;
+	f7 = f8+f7;
+	if(f3 <=f6) //_LBB371_9
+{
+__label__ = 8;
+}
+else{
+	f8 =                         0;
+	if(f10 <=f8) //_LBB371_9
+{
+__label__ = 8;
+}
+else{
+	if(f7 >f8) //_LBB371_12
+{
+__label__ = 11;
+}
+else{
+__label__ = 8;
+}
+}
+}
+_12: do {
+if (__label__ == 8){
+if(!(f10 >f6)) //_LBB371_13
+{
+if(!(f3 >f6)) //_LBB371_13
+{
+if(!(f7 >f6)) //_LBB371_13
+{
+__label__ = 11;
+break _12;
+}
+}
+}
+	r1 = heap32[(r0+2)];
+	r5 = r1 >> 2;
+	r5 = heap32[(r5)];
+	r5 = r5 >> 2;
+	r5 = heap32[(r5+22)];
+	heap32[(g0)] = r1;
+	__FUNCTION_TABLE__[(r5)>>2](i7);
+	r1 = r_g0;
+	if(r1 <1) //_LBB371_31
+{
+break _6;
+}
+else{
+	f0 = heapFloat[(fp+-30)];
+	f5 = f0*f0;
+	r1 = 0;
+	r5 = r1;
+_19: while(true){
+	r6 = heap32[(r0+2)];
+	r7 = r6 >> 2;
+	r7 = heap32[(r7)];
+	r7 = r7 >> 2;
+	r7 = heap32[(r7+23)];
+	r8 = sp + -32;
+	r9 = sp + -16;
+	heap32[(g0)] = r6;
+	heap32[(g0+1)] = r1;
+	heap32[(g0+2)] = r9;
+	heap32[(g0+3)] = r8;
+	__FUNCTION_TABLE__[(r7)>>2](i7);
+	r6 = r8 >> 2;
+	r7 = r9 >> 2;
+	f7 = heapFloat[(r7+1)];
+	f8 = heapFloat[(r6+1)];
+	f9 = heapFloat[(fp+-4)];
+	f10 = heapFloat[(fp+-8)];
+	f11 = f2-f7;
+	f8 = f8-f7;
+	f13 = f12-f9;
+	f10 = f10-f9;
+	f14 = heapFloat[(r7+2)];
+	f15 = heapFloat[(r6+2)];
+	f16 = f4-f14;
+	f15 = f15-f14;
+	f17 = f10*f13;
+	f18 = f8*f11;
+	f17 = f17+f18;
+	f18 = f15*f16;
+	f17 = f17+f18;
+	r1 = (r1 + 1)|0;
+	if(f17 >f6) //_LBB371_17
+{
+	f18 = f10*f10;
+	f19 = f8*f8;
+	f18 = f18+f19;
+	f19 = f15*f15;
+	f18 = f18+f19;
+	if(f17 >=f18) //_LBB371_19
+{
+	f13 = f13-f10;
+	f11 = f11-f8;
+	f16 = f16-f15;
+	f17 = heapFloat[(fp+-25)];
+}
+else{
+	f17 = f17/f18;
+	f18 = f10*f17;
+	f19 = f8*f17;
+	f20 = f15*f17;
+	f13 = f13-f18;
+	f11 = f11-f19;
+	f16 = f16-f20;
+}
+}
+else{
+	f17 = f6;
+}
+	f13 = f13*f13;
+	f11 = f11*f11;
+	f11 = f13+f11;
+	f13 = f16*f16;
+	f11 = f11+f13;
+	if(f11 <f5) //_LBB371_22
+{
+	f0 = f10*f17;
+	f3 = f8*f17;
+	f8 = f15*f17;
+	f1 = f9+f0;
+	f0 = f7+f3;
+	f3 = f14+f8;
+	r5 = 1;
+}
+	r6 = heap32[(r0+2)];
+	r7 = r6 >> 2;
+	r7 = heap32[(r7)];
+	r7 = r7 >> 2;
+	r7 = heap32[(r7+22)];
+	heap32[(g0)] = r6;
+	__FUNCTION_TABLE__[(r7)>>2](i7);
+	r6 = r_g0;
+if(!(r6 >r1)) //_LBB371_15
+{
+break _19;
+}
+}
+	r0 = r5 & 255;
+	if(r0 ==0) //_LBB371_31
+{
+break _6;
+}
+else{
+__label__ = 23;
+}
+}
+}
+} while(0);
+if (__label__ == 11){
+	f6 = f1*f9;
+	f0 = f0*f9;
+	f1 = f5*f9;
+	f3 = f4-f6;
+	f0 = f2-f0;
+	f1 = f12-f1;
+}
+	f2 = f2-f0;
+	f5 = f12-f1;
+	f4 = f4-f3;
+	f6 = f5*f5;
+	f7 = f2*f2;
+	f6 = f6+f7;
+	f7 = f4*f4;
+	f6 = f6+f7;
+	f7 = heapFloat[(fp+-26)];
+	f7 = f7*f7;
+	if(f7 <=f6) //_LBB371_27
+{
+	f6 =                         0;
+	f5 = f5*f6;
+	f2 = f2*f6;
+	f2 = f5+f2;
+	f4 = f4*f6;
+	f2 = f2+f4;
+	if(f2 >=f6) //_LBB371_31
+{
+break _6;
+}
+}
+else{
+	heapFloat[(g0)] = f6;
+	sqrtf(i7);
+	f7 = f_g0;
+	heapFloat[(g0)] = f6;
+	f6 =                         1;
+	sqrtf(i7);
+	f9 = heapFloat[(fp+-26)];
+	f7 = f9-f7;
+	f6 = f6/f_g0;
+	f5 = f5*f6;
+	f2 = f2*f6;
+	f4 = f4*f6;
+	f6 = -f7;
+}
+	if(r4 ==0) //_LBB371_30
+{
+	r0 = r3 >> 2;
+	f7 = heapFloat[(r2+16)];
+	f8 = heapFloat[(r2+17)];
+	r0 = heap32[(r0)];
+	f9 = heapFloat[(r2+20)];
+	f10 = heapFloat[(r2+21)];
+	f11 = f7*f1;
+	f12 = f8*f0;
+	f13 = heapFloat[(r2+18)];
+	r0 = r0 >> 2;
+	f14 = heapFloat[(r2+24)];
+	f15 = heapFloat[(r2+25)];
+	f16 = heapFloat[(r2+22)];
+	f17 = f9*f1;
+	f18 = f10*f0;
+	f11 = f11+f12;
+	f12 = f13*f3;
+	f19 = heapFloat[(r2+26)];
+	r0 = heap32[(r0+4)];
+	f1 = f14*f1;
+	f0 = f15*f0;
+	f17 = f17+f18;
+	f18 = f16*f3;
+	f11 = f11+f12;
+	f12 = heapFloat[(r2+28)];
+	f20 = heapFloat[(r2+30)];
+	f21 = heapFloat[(r2+29)];
+	r1 = sp + -64;
+	f17 = f17+f18;
+	f0 = f1+f0;
+	f1 = f19*f3;
+	f3 = f11+f12;
+	f0 = f0+f1;
+	r2 = r1 >> 2;
+	f1 = f17+f21;
+	heapFloat[(fp+-16)] = f3;
+	f3 = f7*f5;
+	f7 = f8*f2;
+	f0 = f0+f20;
+	heapFloat[(r2+1)] = f1;
+	heapFloat[(r2+2)] = f0;
+	f0 = f9*f5;
+	f1 = f10*f2;
+	f3 = f3+f7;
+	f7 = f13*f4;
+	r4 = sp + -48;
+	f5 = f14*f5;
+	f2 = f15*f2;
+	f0 = f0+f1;
+	f1 = f16*f4;
+	f3 = f3+f7;
+	heap32[(r2+3)] = 0;
+	r2 = r4 >> 2;
+	f2 = f5+f2;
+	f4 = f19*f4;
+	f0 = f0+f1;
+	heapFloat[(fp+-12)] = f3;
+	f1 = f2+f4;
+	heapFloat[(r2+1)] = f0;
+	heapFloat[(r2+2)] = f1;
+	heap32[(r2+3)] = 0;
+	heap32[(g0)] = r3;
+	heap32[(g0+1)] = r4;
+	heap32[(g0+2)] = r1;
+	heapFloat[(g0+3)] = f6;
+	__FUNCTION_TABLE__[(r0)>>2](i7);
+}
+else{
+	f7 = heapFloat[(r2+16)];
+	f8 = heapFloat[(r2+17)];
+	f9 = heapFloat[(r2+20)];
+	f10 = heapFloat[(r2+21)];
+	f11 = f7*f5;
+	f12 = f8*f2;
+	f13 = heapFloat[(r2+18)];
+	f14 = heapFloat[(r2+24)];
+	f15 = heapFloat[(r2+25)];
+	f16 = heapFloat[(r2+22)];
+	f17 = f9*f5;
+	f18 = f10*f2;
+	f11 = f11+f12;
+	f12 = f13*f4;
+	f19 = heapFloat[(r2+26)];
+	f11 = f11+f12;
+	f5 = f14*f5;
+	f2 = f15*f2;
+	f12 = f17+f18;
+	f17 = f16*f4;
+	r0 = sp + -80;
+	f12 = f12+f17;
+	f2 = f5+f2;
+	f4 = f19*f4;
+	f5 = -f11;
+	f2 = f2+f4;
+	r1 = r0 >> 2;
+	f4 = -f12;
+	heapFloat[(fp+-20)] = f5;
+	f5 = -f2;
+	heapFloat[(r1+1)] = f4;
+	heapFloat[(r1+2)] = f5;
+	f4 = f7*f1;
+	f5 = f8*f0;
+	heap32[(r1+3)] = 0;
+	f7 = f9*f1;
+	f8 = f10*f0;
+	f4 = f4+f5;
+	f5 = f13*f3;
+	f1 = f14*f1;
+	f0 = f15*f0;
+	f7 = f7+f8;
+	f8 = f16*f3;
+	f4 = f4+f5;
+	f5 = heapFloat[(r2+28)];
+	f0 = f1+f0;
+	f1 = f19*f3;
+	f3 = f7+f8;
+	f7 = heapFloat[(r2+29)];
+	f8 = heapFloat[(r2+30)];
+	f4 = f4+f5;
+	f5 = f11*f6;
+	r2 = sp + -96;
+	f0 = f0+f1;
+	f1 = f3+f7;
+	f3 = f12*f6;
+	f4 = f4+f5;
+	r1 = r2 >> 2;
+	f0 = f0+f8;
+	f2 = f2*f6;
+	f1 = f1+f3;
+	heapFloat[(fp+-24)] = f4;
+	f0 = f0+f2;
+	heapFloat[(r1+1)] = f1;
+	heapFloat[(r1+2)] = f0;
+	r4 = r3 >> 2;
+	heap32[(r1+3)] = 0;
+	r1 = heap32[(r4)];
+	r1 = r1 >> 2;
+	r1 = heap32[(r1+4)];
+	heap32[(g0)] = r3;
+	heap32[(g0+1)] = r0;
+	heap32[(g0+2)] = r2;
+	heapFloat[(g0+3)] = f6;
+	__FUNCTION_TABLE__[(r1)>>2](i7);
+	return;
+}
+}
+}
+} while(0);
+	return;
+}
+
+function _ZNK10btBoxShape7getAabbERK11btTransformR9btVector3S4_(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var f1;
+	var f2;
+	var f3;
+var __label__ = 0;
+	i7 = sp + -32;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = r0 >> 2;
+	r2 = heap32[(r1)];
+	r2 = r2 >> 2;
+	r2 = heap32[(r2+11)];
+	heap32[(g0)] = r0;
+	__FUNCTION_TABLE__[(r2)>>2](i7);
+	f1 = heapFloat[(r1+7)];
+	f2 = heapFloat[(r1+8)];
+	f3 = heapFloat[(r1+9)];
+	r0 = heap32[(fp+1)];
+	r1 = heap32[(fp+2)];
+	r2 = heap32[(fp+3)];
+	heapFloat[(g0)] = f1;
+	heapFloat[(g0+1)] = f2;
+	heapFloat[(g0+2)] = f3;
+	heapFloat[(g0+3)] = f_g0;
+	heap32[(g0+4)] = r0;
+	heap32[(g0+5)] = r1;
+	heap32[(g0+6)] = r2;
+	_Z15btTransformAabbRK9btVector3fRK11btTransformRS_S5_(i7);
+	return;
+}
+
+function _Z15btTransformAabbRK9btVector3fRK11btTransformRS_S5_(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var f0;
+	var f1;
+	var f2;
+	var f3;
+	var f4;
+	var f5;
+	var f6;
+	var f7;
+	var f8;
+	var f9;
+	var f10;
+	var f11;
+	var f12;
+var __label__ = 0;
+	i7 = sp + 0;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp+4)];
+	r0 = r0 >> 2;
+	f0 = heapFloat[(fp+2)];
+	f1 = heapFloat[(fp+3)];
+	f2 = heapFloat[(fp+1)];
+	f3 = heapFloat[(fp)];
+	f4 = heapFloat[(r0+10)];
+	r1 = heap32[(fp+5)];
+	r2 = heap32[(fp+6)];
+	f0 = f0+f1;
+	f2 = f2+f1;
+	f1 = f3+f1;
+	f3 =                         0;
+	if(f4 <f3) //_LBB373_2
+{
+	f4 = -f4;
+}
+	f5 = heapFloat[(r0+9)];
+	if(f5 <f3) //_LBB373_5
+{
+	f5 = -f5;
+}
+	f6 = heapFloat[(r0+8)];
+	if(f6 <f3) //_LBB373_8
+{
+	f6 = -f6;
+}
+	f7 = heapFloat[(r0+6)];
+	if(f7 <f3) //_LBB373_11
+{
+	f7 = -f7;
+}
+	f8 = heapFloat[(r0+5)];
+	if(f8 <f3) //_LBB373_14
+{
+	f8 = -f8;
+}
+	f9 = heapFloat[(r0+4)];
+	if(f9 <f3) //_LBB373_17
+{
+	f9 = -f9;
+}
+	f10 = heapFloat[(r0+2)];
+	if(f10 <f3) //_LBB373_20
+{
+	f10 = -f10;
+}
+	f11 = heapFloat[(r0+1)];
+	if(f11 <f3) //_LBB373_23
+{
+	f11 = -f11;
+}
+	f12 = heapFloat[(r0)];
+	if(f12 <f3) //_LBB373_26
+{
+	f12 = -f12;
+}
+	f3 = f12*f1;
+	f11 = f11*f2;
+	f9 = f9*f1;
+	f8 = f8*f2;
+	f3 = f3+f11;
+	f10 = f10*f0;
+	f1 = f6*f1;
+	f2 = f5*f2;
+	f5 = f9+f8;
+	f6 = f7*f0;
+	f3 = f3+f10;
+	f7 = heapFloat[(r0+12)];
+	f8 = heapFloat[(r0+13)];
+	f9 = heapFloat[(r0+14)];
+	f5 = f5+f6;
+	r0 = r1 >> 2;
+	f1 = f1+f2;
+	f0 = f4*f0;
+	f2 = f7-f3;
+	f0 = f1+f0;
+	f1 = f8-f5;
+	heapFloat[(r0)] = f2;
+	f2 = f9-f0;
+	heapFloat[(r0+1)] = f1;
+	heapFloat[(r0+2)] = f2;
+	r1 = r2 >> 2;
+	f1 = f7+f3;
+	heap32[(r0+3)] = 0;
+	f2 = f8+f5;
+	heapFloat[(r1)] = f1;
+	f0 = f9+f0;
+	heapFloat[(r1+1)] = f2;
+	heapFloat[(r1+2)] = f0;
+	heap32[(r1+3)] = 0;
+	return;
+}
+
+function _ZNK10btBoxShape24localGetSupportingVertexERK9btVector3(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var f0;
+	var f1;
+	var f2;
+	var f3;
+	var f4;
+	var f5;
+	var f6;
+	var f7;
+	var f8;
+var __label__ = 0;
+	i7 = sp + -8;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp+1)];
+	r1 = r0 >> 2;
+	r2 = heap32[(r1)];
+	r2 = r2 >> 2;
+	r2 = heap32[(r2+11)];
+	f0 = heapFloat[(r1+7)];
+	f1 = heapFloat[(r1+8)];
+	f2 = heapFloat[(r1+9)];
+	heap32[(g0)] = r0;
+	__FUNCTION_TABLE__[(r2)>>2](i7);
+	f3 = f_g0;
+	r2 = heap32[(r1)];
+	r2 = r2 >> 2;
+	r2 = heap32[(r2+11)];
+	heap32[(g0)] = r0;
+	__FUNCTION_TABLE__[(r2)>>2](i7);
+	f4 = f_g0;
+	r1 = heap32[(r1)];
+	r1 = r1 >> 2;
+	r1 = heap32[(r1+11)];
+	heap32[(g0)] = r0;
+	r0 = heap32[(fp+2)];
+	__FUNCTION_TABLE__[(r1)>>2](i7);
+	r0 = r0 >> 2;
+	f0 = f0+f_g0;
+	r1 = heap32[(fp)];
+	f1 = f1+f4;
+	f4 =                         0;
+	f5 = -f0;
+	f6 = heapFloat[(r0)];
+	f7 = heapFloat[(r0+2)];
+	f8 = heapFloat[(r0+1)];
+	f2 = f2+f3;
+	f3 = -f1;
+	r0 = r1 >> 2;
+	f0 = f6 < f4 ? f5 : f0;
+	f5 = -f2;
+	f1 = f8 < f4 ? f3 : f1;
+	heapFloat[(r0)] = f0;
+	f0 = f7 < f4 ? f5 : f2;
+	heapFloat[(r0+1)] = f1;
+	heapFloat[(r0+2)] = f0;
+	heap32[(r0+3)] = 0;
+	return;
+}
+
+function _ZNK10btBoxShape37localGetSupportingVertexWithoutMarginERK9btVector3(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var f0;
+	var f1;
+	var f2;
+	var f3;
+	var f4;
+	var f5;
+	var f6;
+	var f7;
+	var f8;
+var __label__ = 0;
+	i7 = sp + 0;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp+1)];
+	r0 = r0 >> 2;
+	r1 = heap32[(fp+2)];
+	r1 = r1 >> 2;
+	f0 = heapFloat[(r0+7)];
+	r2 = heap32[(fp)];
+	f1 = heapFloat[(r0+9)];
+	f2 = heapFloat[(r0+8)];
+	f3 =                         0;
+	f4 = -f0;
+	f5 = heapFloat[(r1)];
+	f6 = heapFloat[(r1+2)];
+	f7 = heapFloat[(r1+1)];
+	f8 = -f2;
+	r0 = r2 >> 2;
+	f0 = f5 < f3 ? f4 : f0;
+	f4 = -f1;
+	f2 = f7 < f3 ? f8 : f2;
+	heapFloat[(r0)] = f0;
+	f0 = f6 < f3 ? f4 : f1;
+	heapFloat[(r0+1)] = f2;
+	heapFloat[(r0+2)] = f0;
+	heap32[(r0+3)] = 0;
+	return;
+}
+
+function _ZNK10btBoxShape49batchedUnitVectorGetSupportingVertexWithoutMarginEPK9btVector3PS0_i(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+	var f0;
+	var f1;
+	var f2;
+	var f3;
+	var f4;
+	var f5;
+	var f6;
+	var f7;
+	var f8;
+var __label__ = 0;
+	i7 = sp + 0;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp+3)];
+if(!(r0 <1)) //_LBB376_3
+{
+	r1 = heap32[(fp)];
+	r2 = heap32[(fp+1)];
+	r3 = heap32[(fp+2)];
+	r3 = (r3 + 8)|0;
+	r2 = (r2 + 8)|0;
+	f3 =                         0;
+_3: while(true){
+	r4 = r1 >> 2;
+	r5 = r2 >> 2;
+	f0 = heapFloat[(r4+7)];
+	f1 = heapFloat[(r4+9)];
+	f2 = heapFloat[(r4+8)];
+	f4 = -f0;
+	f5 = heapFloat[(r5+-2)];
+	f6 = heapFloat[(r5)];
+	f7 = heapFloat[(r5+-1)];
+	f8 = -f2;
+	r4 = r3 >> 2;
+	f0 = f5 < f3 ? f4 : f0;
+	f4 = -f1;
+	f2 = f7 < f3 ? f8 : f2;
+	heapFloat[(r4+-2)] = f0;
+	f0 = f6 < f3 ? f4 : f1;
+	heapFloat[(r4+-1)] = f2;
+	r0 = (r0 + -1)|0;
+	r3 = (r3 + 16)|0;
+	r2 = (r2 + 16)|0;
+	heapFloat[(r4)] = f0;
+	heap32[(r4+1)] = 0;
+	if(r0 !=0) //_LBB376_2
+{
+continue _3;
+}
+else{
+break _3;
+}
+}
+}
+	return;
+}
+
+function _ZN10btBoxShape9setMarginEf(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var f0;
+	var f1;
+	var f2;
+	var f3;
+	var f4;
+	var f5;
+	var f6;
+	var f7;
+var __label__ = 0;
+	i7 = sp + -8;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = r0 >> 2;
+	r2 = heap32[(r1)];
+	r2 = r2 >> 2;
+	r2 = heap32[(r2+11)];
+	heap32[(g0)] = r0;
+	__FUNCTION_TABLE__[(r2)>>2](i7);
+	f0 = f_g0;
+	r2 = heap32[(r1)];
+	r2 = r2 >> 2;
+	r2 = heap32[(r2+11)];
+	heap32[(g0)] = r0;
+	__FUNCTION_TABLE__[(r2)>>2](i7);
+	f1 = f_g0;
+	r2 = heap32[(r1)];
+	r2 = r2 >> 2;
+	r2 = heap32[(r2+11)];
+	heap32[(g0)] = r0;
+	__FUNCTION_TABLE__[(r2)>>2](i7);
+	f2 = f_g0;
+	f3 = heapFloat[(r1+9)];
+	f4 = heapFloat[(r1+8)];
+	f5 = heapFloat[(r1+7)];
+	heap32[(r1+11)] = heap32[(fp+1)];
+	r2 = heap32[(r1)];
+	r2 = r2 >> 2;
+	r2 = heap32[(r2+11)];
+	heap32[(g0)] = r0;
+	__FUNCTION_TABLE__[(r2)>>2](i7);
+	f6 = f_g0;
+	r2 = heap32[(r1)];
+	r2 = r2 >> 2;
+	r2 = heap32[(r2+11)];
+	heap32[(g0)] = r0;
+	__FUNCTION_TABLE__[(r2)>>2](i7);
+	f7 = f_g0;
+	r2 = heap32[(r1)];
+	r2 = r2 >> 2;
+	r2 = heap32[(r2+11)];
+	heap32[(g0)] = r0;
+	f2 = f5+f2;
+	__FUNCTION_TABLE__[(r2)>>2](i7);
+	f1 = f4+f1;
+	f2 = f2-f_g0;
+	f0 = f3+f0;
+	f1 = f1-f7;
+	heapFloat[(r1+7)] = f2;
+	f0 = f0-f6;
+	heapFloat[(r1+8)] = f1;
+	heapFloat[(r1+9)] = f0;
+	heap32[(r1+10)] = 0;
+	return;
+}
+
+function _ZNK10btBoxShape8getPlaneER9btVector3S1_i(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var f0;
+	var f1;
+	var f2;
+var __label__ = 0;
+	i7 = sp + -64;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = r0 >> 2;
+	r2 = heap32[(r1)];
+	r2 = r2 >> 2;
+	r2 = heap32[(r2+28)];
+	r3 = sp + -32;
+	r4 = heap32[(fp+3)];
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r3;
+	heap32[(g0+2)] = r4;
+	__FUNCTION_TABLE__[(r2)>>2](i7);
+	r2 = r3 >> 2;
+	r3 = heap32[(fp+1)];
+	f0 = heapFloat[(r2+2)];
+	f1 = heapFloat[(r2+1)];
+	f2 = heapFloat[(fp+-8)];
+	r2 = r3 >> 2;
+	heapFloat[(r2)] = f2;
+	heapFloat[(r2+1)] = f1;
+	heapFloat[(r2+2)] = f0;
+	heap32[(r2+3)] = 0;
+	r1 = heap32[(r1)];
+	r1 = r1 >> 2;
+	r1 = heap32[(r1+15)];
+	r2 = sp + -16;
+	f2 = -f2;
+	r3 = r2 >> 2;
+	f1 = -f1;
+	heapFloat[(fp+-4)] = f2;
+	f0 = -f0;
+	heapFloat[(r3+1)] = f1;
+	heapFloat[(r3+2)] = f0;
+	heap32[(r3+3)] = 0;
+	r3 = sp + -48;
+	heap32[(g0)] = r3;
+	heap32[(g0+1)] = r0;
+	heap32[(g0+2)] = r2;
+	r0 = heap32[(fp+2)];
+	r0 = r0 >> 2;
+	__FUNCTION_TABLE__[(r1)>>2](i7);
+	r1 = r3 >> 2;
+	heap32[(r0)] = heap32[(fp+-12)];
+	heap32[(r0+1)] = heap32[(r1+1)];
+	heap32[(r0+2)] = heap32[(r1+2)];
+	heap32[(r0+3)] = heap32[(r1+3)];
+	return;
+}
+
+function _ZNK10btBoxShape12getNumPlanesEv(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+var __label__ = 0;
+	i7 = sp + 0;var g0 = i7>>2; // save stack
+	r0 = 6;
+	r_g0 = r0;
+	return;
+}
+
+function _ZNK10btBoxShape14getNumVerticesEv(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+var __label__ = 0;
+	i7 = sp + 0;var g0 = i7>>2; // save stack
+	r0 = 8;
+	r_g0 = r0;
+	return;
+}
+
+function _ZNK10btBoxShape11getNumEdgesEv(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+var __label__ = 0;
+	i7 = sp + 0;var g0 = i7>>2; // save stack
+	r0 = 12;
+	r_g0 = r0;
+	return;
+}
+
+function _ZNK10btBoxShape9getVertexEiR9btVector3(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+	var f0;
+	var f1;
+	var f2;
+	var f3;
+	var f4;
+	var f5;
+	var f6;
+	var f7;
+var __label__ = 0;
+	i7 = sp + 0;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp+1)];
+	r1 = r0 >>> 1;
+	r2 = heap32[(fp)];
+	r2 = r2 >> 2;
+	r1 = r1 & 1;
+	r3 = r0 >>> 2;
+	r0 = r0 & 1;
+	r4 = 0;
+	f0 =                         1;
+	f1 =                         0;
+	r3 = r3 & 1;
+	r5 = r1 ^ 1;
+	f0 = r0 == r4 ? f0 : f1;
+	f1 = heapFloat[(r2+7)];
+	f2 = r0; //fitos r0, f2
+	r0 = heap32[(fp+2)];
+	r4 = r3 ^ 1;
+	f3 = r5; //fitos r5, f3
+	f4 = heapFloat[(r2+8)];
+	f5 = r1; //fitos r1, f5
+	f6 = heapFloat[(r2+9)];
+	f0 = f1*f0;
+	f1 = f1*f2;
+	f2 = r4; //fitos r4, f2
+	f7 = r3; //fitos r3, f7
+	r0 = r0 >> 2;
+	f3 = f4*f3;
+	f4 = f4*f5;
+	f0 = f0-f1;
+	f1 = f6*f2;
+	f2 = f6*f7;
+	f3 = f3-f4;
+	heapFloat[(r0)] = f0;
+	f0 = f1-f2;
+	heapFloat[(r0+1)] = f3;
+	heapFloat[(r0+2)] = f0;
+	heap32[(r0+3)] = 0;
+	return;
+}
+
+function _ZNK10btBoxShape8isInsideERK9btVector3f(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var f0;
+	var f1;
+	var f2;
+	var f3;
+var __label__ = 0;
+	i7 = sp + 0;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp+1)];
+	r1 = heap32[(fp)];
+	r1 = r1 >> 2;
+	r0 = r0 >> 2;
+	f0 = heapFloat[(r0)];
+	f1 = heapFloat[(fp+2)];
+	f2 = heapFloat[(r1+7)];
+	f3 = f2+f1;
+if(!(f0 >f3)) //_LBB383_6
+{
+	f2 = -f2;
+	f2 = f2-f1;
+if(!(f0 <f2)) //_LBB383_6
+{
+	f0 = heapFloat[(r1+8)];
+	f2 = heapFloat[(r0+1)];
+	f3 = f0+f1;
+if(!(f2 >f3)) //_LBB383_6
+{
+	f0 = -f0;
+	f0 = f0-f1;
+if(!(f2 <f0)) //_LBB383_6
+{
+	f0 = heapFloat[(r1+9)];
+	f2 = heapFloat[(r0+2)];
+	f3 = f0+f1;
+if(!(f2 >f3)) //_LBB383_6
+{
+	f0 = -f0;
+	f0 = f0-f1;
+	r0 = f2 >= f0;
+	r0 = r0 & 1;
+	r_g0 = r0;
+	return;
+}
+}
+}
+}
+}
+	r0 = 0;
+	r_g0 = r0;
+	return;
+}
+
+function _ZNK10btBoxShape7getNameEv(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+var __label__ = 0;
+	i7 = sp + 0;var g0 = i7>>2; // save stack
+	r0 = _2E_str173;
+	r_g0 = r0;
+	return;
+}
+
+function _ZNK10btBoxShape36getNumPreferredPenetrationDirectionsEv(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+var __label__ = 0;
+	i7 = sp + 0;var g0 = i7>>2; // save stack
+	r0 = 6;
+	r_g0 = r0;
+	return;
+}
+
+function _ZNK10btBoxShape21calculateLocalInertiaEfR9btVector3(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var f0;
+	var f1;
+	var f2;
+	var f3;
+	var f4;
+var __label__ = 0;
+	i7 = sp + -8;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = r0 >> 2;
+	r2 = heap32[(r1)];
+	r2 = r2 >> 2;
+	r2 = heap32[(r2+11)];
+	f0 = heapFloat[(r1+7)];
+	f1 = heapFloat[(r1+8)];
+	f2 = heapFloat[(r1+9)];
+	heap32[(g0)] = r0;
+	__FUNCTION_TABLE__[(r2)>>2](i7);
+	f3 = f_g0;
+	r2 = heap32[(r1)];
+	r2 = r2 >> 2;
+	r2 = heap32[(r2+11)];
+	heap32[(g0)] = r0;
+	__FUNCTION_TABLE__[(r2)>>2](i7);
+	r1 = heap32[(r1)];
+	r1 = r1 >> 2;
+	r1 = heap32[(r1+11)];
+	heap32[(g0)] = r0;
+	f1 = f1+f_g0;
+	f2 = f2+f3;
+	__FUNCTION_TABLE__[(r1)>>2](i7);
+	f0 = f0+f_g0;
+	f1 = f1+f1;
+	f2 = f2+f2;
+	f0 = f0+f0;
+	f3 = heapFloat[(fp+1)];
+	f4 =                        12;
+	f1 = f1*f1;
+	f2 = f2*f2;
+	f0 = f0*f0;
+	r0 = heap32[(fp+2)];
+	f3 = f3/f4;
+	f4 = f1+f2;
+	f2 = f0+f2;
+	r0 = r0 >> 2;
+	f4 = f3*f4;
+	f0 = f0+f1;
+	f1 = f3*f2;
+	heapFloat[(r0)] = f4;
+	f0 = f3*f0;
+	heapFloat[(r0+1)] = f1;
+	heapFloat[(r0+2)] = f0;
+	heap32[(r0+3)] = 0;
+	return;
+}
+
+function _ZNK10btBoxShape16getPlaneEquationER9btVector4i(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var f0;
+	var f1;
+var __label__ = 0;
+	i7 = sp + -16;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r0 = r0 >> 2;
+	r1 = heap32[(fp+2)];
+	r2 = heap32[(fp+1)];
+	f0 = heapFloat[(r0+8)];
+_1: do {
+	if(r1 >2) //_LBB387_4
+{
+	if(r1 ==3) //_LBB387_13
+{
+	r2 = r2 >> 2;
+	heap32[(r2)] = 0;
+	heap32[(r2+1)] = -1082130432;
+__label__ = 11;
+break _1;
+}
+else{
+	f0 = heapFloat[(r0+9)];
+	if(r1 ==4) //_LBB387_14
+{
+	r2 = r2 >> 2;
+	heap32[(r2)] = 0;
+	heap32[(r2+1)] = 0;
+	f0 = -f0;
+	heap32[(r2+2)] = 1065353216;
+	heapFloat[(r2+3)] = f0;
+	return;
+}
+else{
+	if(r1 ==5) //_LBB387_15
+{
+	r0 = r2 >> 2;
+	heap32[(r0)] = 0;
+	heap32[(r0+1)] = 0;
+	f0 = -f0;
+	heap32[(r0+2)] = -1082130432;
+	heapFloat[(r0+3)] = f0;
+	return;
+}
+else{
+__label__ = 16;
+break _1;
+}
+}
+}
+}
+else{
+	f1 = heapFloat[(r0+7)];
+	if(r1 ==0) //_LBB387_7
+{
+	r2 = r2 >> 2;
+	heap32[(r2)] = 1065353216;
+}
+else{
+	if(r1 ==1) //_LBB387_9
+{
+	r2 = r2 >> 2;
+	heap32[(r2)] = -1082130432;
+}
+else{
+	if(r1 ==2) //_LBB387_10
+{
+	r2 = r2 >> 2;
+	heap32[(r2)] = 0;
+	heap32[(r2+1)] = 1065353216;
+__label__ = 11;
+break _1;
+}
+else{
+__label__ = 16;
+break _1;
+}
+}
+}
+	heap32[(r2+1)] = 0;
+	f0 = -f1;
+__label__ = 12;
+}
+} while(0);
+switch(__label__ ){//multiple entries
+case 11:
+	f0 = -f0;
+break;
+case 16:
+	r0 = _2E_str10;
+	r1 = _2E_str2175;
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r1;
+	heap32[(g0+2)] = 182;
+	_assert(i7);
+break;
+}
+	heap32[(r2+2)] = 0;
+	heapFloat[(r2+3)] = f0;
+	return;
+}
+
+function _ZNK10btBoxShape7getEdgeEiR9btVector3S1_(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+	var r6;
+var __label__ = 0;
+	i7 = sp + -16;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp+1)];
+	r1 = heap32[(fp)];
+	r2 = heap32[(fp+2)];
+	r3 = heap32[(fp+3)];
+_1: do {
+	if(r0 >5) //_LBB388_8
+{
+	if(r0 >8) //_LBB388_12
+{
+	if(r0 ==9) //_LBB388_24
+{
+	r0 = 4;
+	r4 = 6;
+__label__ = 28;
+break _1;
+}
+else{
+	if(r0 ==10) //_LBB388_25
+{
+	r0 = 5;
+	r4 = 7;
+__label__ = 28;
+break _1;
+}
+else{
+	if(r0 ==11) //_LBB388_26
+{
+	r0 = 6;
+	r4 = 7;
+__label__ = 28;
+break _1;
+}
+else{
+__label__ = 27;
+break _1;
+}
+}
+}
+}
+else{
+	if(r0 ==6) //_LBB388_21
+{
+	r0 = 2;
+	r4 = 6;
+__label__ = 28;
+break _1;
+}
+else{
+	if(r0 ==7) //_LBB388_22
+{
+	r0 = 3;
+	r4 = 7;
+__label__ = 28;
+break _1;
+}
+else{
+	if(r0 ==8) //_LBB388_23
+{
+	r0 = 4;
+	r4 = 5;
+__label__ = 28;
+break _1;
+}
+else{
+__label__ = 27;
+break _1;
+}
+}
+}
+}
+}
+else{
+	if(r0 >2) //_LBB388_5
+{
+	if(r0 ==3) //_LBB388_18
+{
+	r0 = 2;
+	r4 = 3;
+__label__ = 28;
+break _1;
+}
+else{
+	if(r0 ==4) //_LBB388_19
+{
+	r0 = 0;
+	r4 = 4;
+__label__ = 28;
+break _1;
+}
+else{
+	if(r0 ==5) //_LBB388_20
+{
+	r0 = 1;
+	r4 = 5;
+__label__ = 28;
+break _1;
+}
+else{
+__label__ = 27;
+break _1;
+}
+}
+}
+}
+else{
+	if(r0 ==0) //_LBB388_15
+{
+	r0 = 0;
+	r4 = 1;
+__label__ = 28;
+break _1;
+}
+else{
+	if(r0 ==1) //_LBB388_16
+{
+	r0 = 0;
+	r4 = 2;
+__label__ = 28;
+}
+else{
+	if(r0 ==2) //_LBB388_17
+{
+	r0 = 1;
+	r4 = 3;
+__label__ = 28;
+}
+else{
+__label__ = 27;
+}
+}
+}
+}
+}
+} while(0);
+switch(__label__ ){//multiple entries
+case 28:
+	r5 = r1 >> 2;
+	r6 = heap32[(r5)];
+	r6 = r6 >> 2;
+	r6 = heap32[(r6+24)];
+	heap32[(g0)] = r1;
+	heap32[(g0+1)] = r0;
+	heap32[(g0+2)] = r2;
+	__FUNCTION_TABLE__[(r6)>>2](i7);
+	r0 = heap32[(r5)];
+	r0 = r0 >> 2;
+	r0 = heap32[(r0+24)];
+	heap32[(g0)] = r1;
+	heap32[(g0+1)] = r4;
+	heap32[(g0+2)] = r3;
+	__FUNCTION_TABLE__[(r0)>>2](i7);
+	return;
+break;
+case 27:
+	r0 = _2E_str10;
+	r1 = _2E_str2175;
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r1;
+	heap32[(g0+2)] = 246;
+	_assert(i7);
+break;
+}
+}
+
+function _ZNK10btBoxShape32getPreferredPenetrationDirectionEiR9btVector3(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+var __label__ = 0;
+	i7 = sp + -16;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp+1)];
+	r1 = heap32[(fp+2)];
+_1: do {
+	if(r0 >2) //_LBB389_4
+{
+	if(r0 ==3) //_LBB389_12
+{
+	r1 = r1 >> 2;
+	heap32[(r1)] = 0;
+	heap32[(r1+1)] = -1082130432;
+__label__ = 9;
+break _1;
+}
+else{
+	if(r0 ==4) //_LBB389_13
+{
+	r1 = r1 >> 2;
+	heap32[(r1)] = 0;
+	heap32[(r1+1)] = 0;
+	heap32[(r1+2)] = 1065353216;
+	heap32[(r1+3)] = 0;
+	return;
+}
+else{
+	if(r0 ==5) //_LBB389_14
+{
+	r0 = r1 >> 2;
+	heap32[(r0)] = 0;
+	heap32[(r0+1)] = 0;
+	heap32[(r0+2)] = -1082130432;
+	heap32[(r0+3)] = 0;
+	return;
+}
+else{
+__label__ = 15;
+break _1;
+}
+}
+}
+}
+else{
+	if(r0 ==0) //_LBB389_7
+{
+	r1 = r1 >> 2;
+	heap32[(r1)] = 1065353216;
+}
+else{
+	if(r0 ==1) //_LBB389_10
+{
+	r1 = r1 >> 2;
+	heap32[(r1)] = -1082130432;
+}
+else{
+	if(r0 ==2) //_LBB389_11
+{
+	r1 = r1 >> 2;
+	heap32[(r1)] = 0;
+	heap32[(r1+1)] = 1065353216;
+__label__ = 9;
+break _1;
+}
+else{
+__label__ = 15;
+break _1;
+}
+}
+}
+	heap32[(r1+1)] = 0;
+__label__ = 9;
+}
+} while(0);
+switch(__label__ ){//multiple entries
+case 9:
+	heap32[(r1+2)] = 0;
+	heap32[(r1+3)] = 0;
+	return;
+break;
+case 15:
+	r0 = _2E_str10;
+	r1 = _2E_str2175;
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r1;
+	heap32[(g0+2)] = 309;
+	_assert(i7);
+break;
+}
+}
+
+function _ZN10btBoxShape15setLocalScalingERK9btVector3(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var f0;
+	var f1;
+	var f2;
+	var f3;
+	var f4;
+	var f5;
+	var f6;
+	var f7;
+	var f8;
+	var f9;
+var __label__ = 0;
+	i7 = sp + -8;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = r0 >> 2;
+	r2 = heap32[(r1)];
+	r2 = r2 >> 2;
+	r2 = heap32[(r2+11)];
+	heap32[(g0)] = r0;
+	__FUNCTION_TABLE__[(r2)>>2](i7);
+	f0 = f_g0;
+	r2 = heap32[(r1)];
+	r2 = r2 >> 2;
+	r2 = heap32[(r2+11)];
+	heap32[(g0)] = r0;
+	__FUNCTION_TABLE__[(r2)>>2](i7);
+	f1 = f_g0;
+	r2 = heap32[(r1)];
+	r2 = r2 >> 2;
+	r2 = heap32[(r2+11)];
+	heap32[(g0)] = r0;
+	__FUNCTION_TABLE__[(r2)>>2](i7);
+	f2 = f_g0;
+	r0 = heap32[(fp+1)];
+	f3 = heapFloat[(r1+9)];
+	f4 = heapFloat[(r1+8)];
+	f5 = heapFloat[(r1+7)];
+	r0 = r0 >> 2;
+	f3 = f3+f0;
+	f6 = heapFloat[(r1+5)];
+	f4 = f4+f1;
+	f7 = heapFloat[(r1+4)];
+	f5 = f5+f2;
+	f8 = heapFloat[(r1+3)];
+	f9 = heapFloat[(r0+2)];
+	f3 = f3/f6;
+	f4 = f4/f7;
+	f5 = f5/f8;
+	f6 =                         0;
+	if(f9 <f6) //_LBB390_2
+{
+	f9 = -f9;
+}
+	f7 = heapFloat[(r0+1)];
+	if(f7 <f6) //_LBB390_5
+{
+	f7 = -f7;
+}
+	f8 = heapFloat[(r0)];
+	if(f8 <f6) //_LBB390_8
+{
+	f8 = -f8;
+}
+	heapFloat[(r1+3)] = f8;
+	heapFloat[(r1+4)] = f7;
+	heapFloat[(r1+5)] = f9;
+	f5 = f5*f8;
+	f4 = f4*f7;
+	f2 = f5-f2;
+	heap32[(r1+6)] = 0;
+	f3 = f3*f9;
+	f1 = f4-f1;
+	heapFloat[(r1+7)] = f2;
+	f0 = f3-f0;
+	heapFloat[(r1+8)] = f1;
+	heapFloat[(r1+9)] = f0;
+	heap32[(r1+10)] = 0;
+	return;
+}
+
+function _ZN10btBoxShapeD0Ev(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+var __label__ = 0;
+	i7 = sp + -8;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = _ZTV13btConvexShape;
+	r2 = r0 >> 2;
+	r1 = (r1 + 8)|0;
+	heap32[(r2)] = r1;
+if(!(r0 ==0)) //_LBB391_2
+{
+	r0 = gNumAlignedFree;
+	r0 = r0 >> 2;
+	r1 = heap32[(r0)];
+	r1 = (r1 + 1)|0;
+	heap32[(r0)] = r1;
+	r0 = heap32[(r2+-1)];
+	heap32[(g0)] = r0;
+	free(i7);
+}
+	return;
+}
+
+function _ZN10btBoxShapeD1Ev(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+var __label__ = 0;
+	i7 = sp + 0;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = _ZTV13btConvexShape;
+	r0 = r0 >> 2;
+	r1 = (r1 + 8)|0;
+	heap32[(r0)] = r1;
+	return;
+}
+
+function _ZNK14btConcaveShape9getMarginEv(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var f0;
+var __label__ = 0;
+	i7 = sp + 0;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r0 = r0 >> 2;
+	f0 = heapFloat[(r0+3)];
+	f_g0 = f0;
+	return;
+}
+
+function _ZN14btConcaveShape9setMarginEf(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+var __label__ = 0;
+	i7 = sp + 0;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r0 = r0 >> 2;
+	heap32[(r0+3)] = heap32[(fp+1)];
+	return;
+}
+
+function _ZNK22btBvhTriangleMeshShape7getNameEv(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+var __label__ = 0;
+	i7 = sp + 0;var g0 = i7>>2; // save stack
+	r0 = _2E_str181;
+	r_g0 = r0;
+	return;
+}
+
+function _ZNK22btBvhTriangleMeshShape28calculateSerializeBufferSizeEv(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+var __label__ = 0;
+	i7 = sp + 0;var g0 = i7>>2; // save stack
+	r0 = 60;
+	r_g0 = r0;
+	return;
+}
+
+function _ZZN22btBvhTriangleMeshShape14performRaycastEP18btTriangleCallbackRK9btVector3S4_EN21MyNodeOverlapCallbackD1Ev(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+var __label__ = 0;
+	i7 = sp + 0;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = _ZTVZN22btBvhTriangleMeshShape14performRaycastEP18btTriangleCallbackRK9btVector3S4_E21MyNodeOverlapCallback;
+	r0 = r0 >> 2;
+	r1 = (r1 + 8)|0;
+	heap32[(r0)] = r1;
+	return;
+}
+
+function _ZZN22btBvhTriangleMeshShape14performRaycastEP18btTriangleCallbackRK9btVector3S4_EN21MyNodeOverlapCallbackD0Ev(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+var __label__ = 0;
+	i7 = sp + -8;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = _ZTVZN22btBvhTriangleMeshShape14performRaycastEP18btTriangleCallbackRK9btVector3S4_E21MyNodeOverlapCallback;
+	r2 = r0 >> 2;
+	r1 = (r1 + 8)|0;
+	heap32[(r2)] = r1;
+	heap32[(g0)] = r0;
+	_ZdlPv(i7);
+	return;
+}
+
+function _ZZN22btBvhTriangleMeshShape14performRaycastEP18btTriangleCallbackRK9btVector3S4_EN21MyNodeOverlapCallback11processNodeEii(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+	var r6;
+	var r7;
+	var r8;
+	var r9;
+	var r10;
+	var r11;
+	var f0;
+	var f1;
+	var f2;
+	var f3;
+	var f4;
+	var f5;
+var __label__ = 0;
+	i7 = sp + -120;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r0 = r0 >> 2;
+	r1 = heap32[(r0+1)];
+	r2 = r1 >> 2;
+	r2 = heap32[(r2)];
+	r2 = r2 >> 2;
+	r2 = heap32[(r2+4)];
+	r3 = heap32[(fp+1)];
+	r4 = sp + -52;
+	r5 = sp + -56;
+	r6 = sp + -60;
+	r7 = sp + -64;
+	r8 = sp + -68;
+	r9 = sp + -72;
+	r10 = sp + -76;
+	r11 = sp + -80;
+	heap32[(g0)] = r1;
+	heap32[(g0+1)] = r4;
+	heap32[(g0+2)] = r5;
+	heap32[(g0+3)] = r6;
+	heap32[(g0+4)] = r7;
+	heap32[(g0+5)] = r8;
+	heap32[(g0+6)] = r9;
+	heap32[(g0+7)] = r10;
+	heap32[(g0+8)] = r11;
+	heap32[(g0+9)] = r3;
+	__FUNCTION_TABLE__[(r2)>>2](i7);
+	r1 = heap32[(fp+-20)];
+	r2 = (r1 + -2)|0;
+	if(uint(r2) <uint(2)) //_LBB399_2
+{
+	r2 = heap32[(fp+2)];
+	r4 = heap32[(fp+-17)];
+	r5 = heap32[(fp+-18)];
+	r5 = (r5 * r2)|0;
+	r6 = heap32[(r0+1)];
+	r4 = (r4 + r5)|0;
+	r5 = -6;
+_3: while(true){
+	r7 = 0;
+	r8 = r5 << 1;
+	r7 = (r7 - r8)|0;
+	if(r1 !=3) //_LBB399_5
+{
+	r8 = (r4 - r8)|0;
+	r8 = r8 >> 2;
+	r8 = heap32[(r8+-1)];
+}
+else{
+	r8 = (r4 - r5)|0;
+	r8 = heapU16[(r8+-2)>>1];
+}
+	r9 = heap32[(fp+-16)];
+	r10 = heap32[(fp+-13)];
+	r8 = (r9 * r8)|0;
+	r9 = heap32[(fp+-15)];
+	if(r9 !=0) //_LBB399_8
+{
+	r9 = (r10 + r8)|0;
+	r11 = r6 >> 2;
+	f0 = llvm_readDouble((r9+16));
+	f1 = llvm_readDouble((r9+8));
+	f2 = llvm_readDouble((r10+r8));
+	f0 = f0; //fdtos f0, f0
+	f3 = heapFloat[(r11+3)];
+	f1 = f1; //fdtos f1, f1
+	f4 = heapFloat[(r11+2)];
+	f2 = f2; //fdtos f2, f2
+	f5 = heapFloat[(r11+1)];
+	f0 = f0*f3;
+	f1 = f1*f4;
+	f2 = f2*f5;
+}
+else{
+	r8 = (r10 + r8)|0;
+	r8 = r8 >> 2;
+	r10 = r6 >> 2;
+	f0 = heapFloat[(r8+2)];
+	f1 = heapFloat[(r10+3)];
+	f2 = heapFloat[(r8+1)];
+	f3 = heapFloat[(r10+2)];
+	f4 = heapFloat[(r8)];
+	f5 = heapFloat[(r10+1)];
+	f0 = f0*f1;
+	f1 = f2*f3;
+	f2 = f4*f5;
+}
+	r8 = sp + -48;
+	r9 = r7 << 2;
+	r10 = r7 << 2;
+	r9 = (r8 + r9)|0;
+	r11 = r7 << 2;
+	r10 = (r8 + r10)|0;
+	r9 = r9 >> 2;
+	r7 = r7 << 2;
+	r11 = (r8 + r11)|0;
+	r10 = r10 >> 2;
+	heapFloat[(r9+-4)] = f2;
+	r7 = (r8 + r7)|0;
+	r9 = r11 >> 2;
+	heapFloat[(r10+-3)] = f1;
+	r5 = (r5 + 2)|0;
+	r7 = r7 >> 2;
+	heapFloat[(r9+-2)] = f0;
+	heap32[(r7+-1)] = 0;
+if(!(r5 !=0)) //_LBB399_3
+{
+break _3;
+}
+}
+	r1 = heap32[(r0+2)];
+	r4 = r1 >> 2;
+	r4 = heap32[(r4)];
+	r4 = r4 >> 2;
+	r4 = heap32[(r4+2)];
+	heap32[(g0)] = r1;
+	heap32[(g0+1)] = r8;
+	heap32[(g0+2)] = r3;
+	heap32[(g0+3)] = r2;
+	__FUNCTION_TABLE__[(r4)>>2](i7);
+	r0 = heap32[(r0+1)];
+	r1 = r0 >> 2;
+	r1 = heap32[(r1)];
+	r1 = r1 >> 2;
+	r1 = heap32[(r1+6)];
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r3;
+	__FUNCTION_TABLE__[(r1)>>2](i7);
+	return;
+}
+else{
+	r0 = _2E_str6187;
+	r1 = _2E_str7188;
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r1;
+	heap32[(g0+2)] = 130;
+	_assert(i7);
+}
+}
+
+function _ZZN22btBvhTriangleMeshShape17performConvexcastEP18btTriangleCallbackRK9btVector3S4_S4_S4_EN21MyNodeOverlapCallbackD1Ev(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+var __label__ = 0;
+	i7 = sp + 0;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = _ZTVZN22btBvhTriangleMeshShape17performConvexcastEP18btTriangleCallbackRK9btVector3S4_S4_S4_E21MyNodeOverlapCallback;
+	r0 = r0 >> 2;
+	r1 = (r1 + 8)|0;
+	heap32[(r0)] = r1;
+	return;
+}
+
+function _ZZN22btBvhTriangleMeshShape17performConvexcastEP18btTriangleCallbackRK9btVector3S4_S4_S4_EN21MyNodeOverlapCallbackD0Ev(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+var __label__ = 0;
+	i7 = sp + -8;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = _ZTVZN22btBvhTriangleMeshShape17performConvexcastEP18btTriangleCallbackRK9btVector3S4_S4_S4_E21MyNodeOverlapCallback;
+	r2 = r0 >> 2;
+	r1 = (r1 + 8)|0;
+	heap32[(r2)] = r1;
+	heap32[(g0)] = r0;
+	_ZdlPv(i7);
+	return;
+}
+
+function _ZZN22btBvhTriangleMeshShape17performConvexcastEP18btTriangleCallbackRK9btVector3S4_S4_S4_EN21MyNodeOverlapCallback11processNodeEii(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+	var r6;
+	var r7;
+	var r8;
+	var r9;
+	var r10;
+	var r11;
+	var f0;
+	var f1;
+	var f2;
+	var f3;
+	var f4;
+	var f5;
+var __label__ = 0;
+	i7 = sp + -120;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r0 = r0 >> 2;
+	r1 = heap32[(r0+1)];
+	r2 = r1 >> 2;
+	r2 = heap32[(r2)];
+	r2 = r2 >> 2;
+	r2 = heap32[(r2+4)];
+	r3 = heap32[(fp+1)];
+	r4 = sp + -52;
+	r5 = sp + -56;
+	r6 = sp + -60;
+	r7 = sp + -64;
+	r8 = sp + -68;
+	r9 = sp + -72;
+	r10 = sp + -76;
+	r11 = sp + -80;
+	heap32[(g0)] = r1;
+	heap32[(g0+1)] = r4;
+	heap32[(g0+2)] = r5;
+	heap32[(g0+3)] = r6;
+	heap32[(g0+4)] = r7;
+	heap32[(g0+5)] = r8;
+	heap32[(g0+6)] = r9;
+	heap32[(g0+7)] = r10;
+	heap32[(g0+8)] = r11;
+	heap32[(g0+9)] = r3;
+	__FUNCTION_TABLE__[(r2)>>2](i7);
+	r1 = heap32[(fp+-20)];
+	r2 = (r1 + -2)|0;
+	if(uint(r2) <uint(2)) //_LBB402_2
+{
+	r2 = heap32[(fp+2)];
+	r4 = heap32[(fp+-17)];
+	r5 = heap32[(fp+-18)];
+	r5 = (r5 * r2)|0;
+	r6 = heap32[(r0+1)];
+	r4 = (r4 + r5)|0;
+	r5 = -6;
+_3: while(true){
+	r7 = 0;
+	r8 = r5 << 1;
+	r7 = (r7 - r8)|0;
+	if(r1 !=3) //_LBB402_5
+{
+	r8 = (r4 - r8)|0;
+	r8 = r8 >> 2;
+	r8 = heap32[(r8+-1)];
+}
+else{
+	r8 = (r4 - r5)|0;
+	r8 = heapU16[(r8+-2)>>1];
+}
+	r9 = heap32[(fp+-16)];
+	r10 = heap32[(fp+-13)];
+	r8 = (r9 * r8)|0;
+	r9 = heap32[(fp+-15)];
+	if(r9 !=0) //_LBB402_8
+{
+	r9 = (r10 + r8)|0;
+	r11 = r6 >> 2;
+	f0 = llvm_readDouble((r9+16));
+	f1 = llvm_readDouble((r9+8));
+	f2 = llvm_readDouble((r10+r8));
+	f0 = f0; //fdtos f0, f0
+	f3 = heapFloat[(r11+3)];
+	f1 = f1; //fdtos f1, f1
+	f4 = heapFloat[(r11+2)];
+	f2 = f2; //fdtos f2, f2
+	f5 = heapFloat[(r11+1)];
+	f0 = f0*f3;
+	f1 = f1*f4;
+	f2 = f2*f5;
+}
+else{
+	r8 = (r10 + r8)|0;
+	r8 = r8 >> 2;
+	r10 = r6 >> 2;
+	f0 = heapFloat[(r8+2)];
+	f1 = heapFloat[(r10+3)];
+	f2 = heapFloat[(r8+1)];
+	f3 = heapFloat[(r10+2)];
+	f4 = heapFloat[(r8)];
+	f5 = heapFloat[(r10+1)];
+	f0 = f0*f1;
+	f1 = f2*f3;
+	f2 = f4*f5;
+}
+	r8 = sp + -48;
+	r9 = r7 << 2;
+	r10 = r7 << 2;
+	r9 = (r8 + r9)|0;
+	r11 = r7 << 2;
+	r10 = (r8 + r10)|0;
+	r9 = r9 >> 2;
+	r7 = r7 << 2;
+	r11 = (r8 + r11)|0;
+	r10 = r10 >> 2;
+	heapFloat[(r9+-4)] = f2;
+	r7 = (r8 + r7)|0;
+	r9 = r11 >> 2;
+	heapFloat[(r10+-3)] = f1;
+	r5 = (r5 + 2)|0;
+	r7 = r7 >> 2;
+	heapFloat[(r9+-2)] = f0;
+	heap32[(r7+-1)] = 0;
+if(!(r5 !=0)) //_LBB402_3
+{
+break _3;
+}
+}
+	r1 = heap32[(r0+2)];
+	r4 = r1 >> 2;
+	r4 = heap32[(r4)];
+	r4 = r4 >> 2;
+	r4 = heap32[(r4+2)];
+	heap32[(g0)] = r1;
+	heap32[(g0+1)] = r8;
+	heap32[(g0+2)] = r3;
+	heap32[(g0+3)] = r2;
+	__FUNCTION_TABLE__[(r4)>>2](i7);
+	r0 = heap32[(r0+1)];
+	r1 = r0 >> 2;
+	r1 = heap32[(r1)];
+	r1 = r1 >> 2;
+	r1 = heap32[(r1+6)];
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r3;
+	__FUNCTION_TABLE__[(r1)>>2](i7);
+	return;
+}
+else{
+	r0 = _2E_str6187;
+	r1 = _2E_str7188;
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r1;
+	heap32[(g0+2)] = 199;
+	_assert(i7);
+}
+}
+
+function _ZZNK22btBvhTriangleMeshShape19processAllTrianglesEP18btTriangleCallbackRK9btVector3S4_EN21MyNodeOverlapCallbackD1Ev(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+var __label__ = 0;
+	i7 = sp + 0;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = _ZTVZNK22btBvhTriangleMeshShape19processAllTrianglesEP18btTriangleCallbackRK9btVector3S4_E21MyNodeOverlapCallback;
+	r0 = r0 >> 2;
+	r1 = (r1 + 8)|0;
+	heap32[(r0)] = r1;
+	return;
+}
+
+function _ZZNK22btBvhTriangleMeshShape19processAllTrianglesEP18btTriangleCallbackRK9btVector3S4_EN21MyNodeOverlapCallbackD0Ev(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+var __label__ = 0;
+	i7 = sp + -8;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = _ZTVZNK22btBvhTriangleMeshShape19processAllTrianglesEP18btTriangleCallbackRK9btVector3S4_E21MyNodeOverlapCallback;
+	r2 = r0 >> 2;
+	r1 = (r1 + 8)|0;
+	heap32[(r2)] = r1;
+	heap32[(g0)] = r0;
+	_ZdlPv(i7);
+	return;
+}
+
+function _ZZNK22btBvhTriangleMeshShape19processAllTrianglesEP18btTriangleCallbackRK9btVector3S4_EN21MyNodeOverlapCallback11processNodeEii(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+	var r6;
+	var r7;
+	var r8;
+	var r9;
+	var r10;
+	var r11;
+	var r12;
+	var r13;
+	var f0;
+	var f1;
+	var f2;
+	var f3;
+	var f4;
+	var f5;
+var __label__ = 0;
+	i7 = sp + -72;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = r0 >> 2;
+	r2 = heap32[(r1+1)];
+	r3 = r2 >> 2;
+	r3 = heap32[(r3)];
+	r3 = r3 >> 2;
+	r3 = heap32[(r3+4)];
+	r4 = heap32[(fp+1)];
+	r5 = sp + -4;
+	r6 = sp + -8;
+	r7 = sp + -12;
+	r8 = sp + -16;
+	r9 = sp + -20;
+	r10 = sp + -24;
+	r11 = sp + -28;
+	r12 = sp + -32;
+	heap32[(g0)] = r2;
+	heap32[(g0+1)] = r5;
+	heap32[(g0+2)] = r6;
+	heap32[(g0+3)] = r7;
+	heap32[(g0+4)] = r8;
+	heap32[(g0+5)] = r9;
+	heap32[(g0+6)] = r10;
+	heap32[(g0+7)] = r11;
+	heap32[(g0+8)] = r12;
+	heap32[(g0+9)] = r4;
+	__FUNCTION_TABLE__[(r3)>>2](i7);
+	r2 = heap32[(fp+-8)];
+	r3 = (r2 + -2)|0;
+	if(uint(r3) <uint(2)) //_LBB405_2
+{
+	r3 = heap32[(fp+2)];
+	r5 = heap32[(fp+-5)];
+	r6 = heap32[(fp+-6)];
+	r6 = (r6 * r3)|0;
+	r5 = (r6 + r5)|0;
+	r6 = heap32[(r1+1)];
+	r5 = (r5 + 8)|0;
+	r7 = 0;
+	r8 = r7;
+_3: while(true){
+	r9 = r8 << 1;
+	r10 = (r7 - r9)|0;
+	if(r2 !=3) //_LBB405_5
+{
+	r9 = (r5 - r9)|0;
+	r9 = r9 >> 2;
+	r9 = heap32[(r9)];
+}
+else{
+	r9 = (r5 - r8)|0;
+	r9 = heapU16[(r9+-4)>>1];
+}
+	r11 = heap32[(fp+-4)];
+	r12 = heap32[(fp+-1)];
+	r9 = (r11 * r9)|0;
+	r11 = heap32[(fp+-3)];
+	if(r11 !=0) //_LBB405_8
+{
+	r11 = (r12 + r9)|0;
+	r13 = r6 >> 2;
+	f0 = llvm_readDouble((r11+16));
+	f1 = llvm_readDouble((r11+8));
+	f2 = llvm_readDouble((r12+r9));
+	f0 = f0; //fdtos f0, f0
+	f3 = heapFloat[(r13+3)];
+	f1 = f1; //fdtos f1, f1
+	f4 = heapFloat[(r13+2)];
+	f2 = f2; //fdtos f2, f2
+	f5 = heapFloat[(r13+1)];
+	f0 = f0*f3;
+	f1 = f1*f4;
+	f2 = f2*f5;
+}
+else{
+	r9 = (r12 + r9)|0;
+	r9 = r9 >> 2;
+	r12 = r6 >> 2;
+	f0 = heapFloat[(r9+2)];
+	f1 = heapFloat[(r12+3)];
+	f2 = heapFloat[(r9+1)];
+	f3 = heapFloat[(r12+2)];
+	f4 = heapFloat[(r9)];
+	f5 = heapFloat[(r12+1)];
+	f0 = f0*f1;
+	f1 = f2*f3;
+	f2 = f4*f5;
+}
+	r9 = r10 << 2;
+	r11 = r10 << 2;
+	r9 = (r0 + r9)|0;
+	r12 = r10 << 2;
+	r11 = (r0 + r11)|0;
+	r9 = r9 >> 2;
+	r10 = r10 << 2;
+	r12 = (r0 + r12)|0;
+	r11 = r11 >> 2;
+	heapFloat[(r9+11)] = f2;
+	r9 = (r0 + r10)|0;
+	r10 = r12 >> 2;
+	heapFloat[(r11+12)] = f1;
+	r8 = (r8 + 2)|0;
+	r9 = r9 >> 2;
+	heapFloat[(r10+13)] = f0;
+	heap32[(r9+14)] = 0;
+if(!(r8 !=6)) //_LBB405_3
+{
+break _3;
+}
+}
+	r2 = heap32[(r1+2)];
+	r5 = r2 >> 2;
+	r5 = heap32[(r5)];
+	r5 = r5 >> 2;
+	r5 = heap32[(r5+2)];
+	r0 = (r0 + 12)|0;
+	heap32[(g0)] = r2;
+	heap32[(g0+1)] = r0;
+	heap32[(g0+2)] = r4;
+	heap32[(g0+3)] = r3;
+	__FUNCTION_TABLE__[(r5)>>2](i7);
+	r0 = heap32[(r1+1)];
+	r1 = r0 >> 2;
+	r1 = heap32[(r1)];
+	r1 = r1 >> 2;
+	r1 = heap32[(r1+6)];
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r4;
+	__FUNCTION_TABLE__[(r1)>>2](i7);
+	return;
+}
+else{
+	r0 = _2E_str6187;
+	r1 = _2E_str7188;
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r1;
+	heap32[(g0+2)] = 280;
+	_assert(i7);
+}
+}
+
+function _ZNK22btBvhTriangleMeshShape18serializeSingleBvhEP12btSerializer(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+	var r6;
+var __label__ = 0;
+	i7 = sp + -24;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r0 = r0 >> 2;
+	r1 = heap32[(r0+13)];
+if(!(r1 ==0)) //_LBB406_2
+{
+	r2 = heap32[(fp+1)];
+	r3 = r1 >> 2;
+	r3 = heap32[(r3)];
+	r3 = r3 >> 2;
+	r3 = heap32[(r3+3)];
+	heap32[(g0)] = r1;
+	__FUNCTION_TABLE__[(r3)>>2](i7);
+	r3 = r2 >> 2;
+	r4 = heap32[(r3)];
+	r4 = r4 >> 2;
+	r4 = heap32[(r4+4)];
+	heap32[(g0)] = r2;
+	heap32[(g0+1)] = r_g0;
+	heap32[(g0+2)] = 1;
+	__FUNCTION_TABLE__[(r4)>>2](i7);
+	r1 = r_g0;
+	r4 = heap32[(r0+13)];
+	r5 = r4 >> 2;
+	r5 = heap32[(r5)];
+	r5 = r5 >> 2;
+	r6 = r1 >> 2;
+	r5 = heap32[(r5+4)];
+	r6 = heap32[(r6+2)];
+	heap32[(g0)] = r4;
+	heap32[(g0+1)] = r6;
+	heap32[(g0+2)] = r2;
+	__FUNCTION_TABLE__[(r5)>>2](i7);
+	r3 = heap32[(r3)];
+	r3 = r3 >> 2;
+	r3 = heap32[(r3+5)];
+	r0 = heap32[(r0+13)];
+	heap32[(g0)] = r2;
+	heap32[(g0+1)] = r1;
+	heap32[(g0+2)] = r_g0;
+	heap32[(g0+3)] = 1213612625;
+	heap32[(g0+4)] = r0;
+	__FUNCTION_TABLE__[(r3)>>2](i7);
+}
+	return;
+}
+
+function _ZNK22btBvhTriangleMeshShape30serializeSingleTriangleInfoMapEP12btSerializer(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+	var r6;
+var __label__ = 0;
+	i7 = sp + -24;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r0 = r0 >> 2;
+	r1 = heap32[(r0+14)];
+if(!(r1 ==0)) //_LBB407_2
+{
+	r2 = heap32[(fp+1)];
+	r3 = r1 >> 2;
+	r3 = heap32[(r3)];
+	r3 = r3 >> 2;
+	r3 = heap32[(r3+2)];
+	heap32[(g0)] = r1;
+	__FUNCTION_TABLE__[(r3)>>2](i7);
+	r3 = r2 >> 2;
+	r4 = heap32[(r3)];
+	r4 = r4 >> 2;
+	r4 = heap32[(r4+4)];
+	heap32[(g0)] = r2;
+	heap32[(g0+1)] = r_g0;
+	heap32[(g0+2)] = 1;
+	__FUNCTION_TABLE__[(r4)>>2](i7);
+	r1 = r_g0;
+	r4 = heap32[(r0+14)];
+	r5 = r4 >> 2;
+	r5 = heap32[(r5)];
+	r5 = r5 >> 2;
+	r6 = r1 >> 2;
+	r5 = heap32[(r5+3)];
+	r6 = heap32[(r6+2)];
+	heap32[(g0)] = r4;
+	heap32[(g0+1)] = r6;
+	heap32[(g0+2)] = r2;
+	__FUNCTION_TABLE__[(r5)>>2](i7);
+	r3 = heap32[(r3)];
+	r3 = r3 >> 2;
+	r3 = heap32[(r3+5)];
+	r0 = heap32[(r0+14)];
+	heap32[(g0)] = r2;
+	heap32[(g0+1)] = r1;
+	heap32[(g0+2)] = r_g0;
+	heap32[(g0+3)] = 1346456916;
+	heap32[(g0+4)] = r0;
+	__FUNCTION_TABLE__[(r3)>>2](i7);
+}
+	return;
+}
+
+function _ZNK19btTriangleMeshShape37localGetSupportingVertexWithoutMarginERK9btVector3(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+var __label__ = 0;
+	i7 = sp + -16;var g0 = i7>>2; // save stack
+	r0 = _2E_str10;
+	r1 = _2E_str5186;
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r1;
+	heap32[(g0+2)] = 43;
+	_assert(i7);
+}
+
+function _ZNK22btBvhTriangleMeshShape9serializeEPvP12btSerializer(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+	var r6;
+	var r7;
+var __label__ = 0;
+	i7 = sp + -24;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp+2)];
+	r1 = r0 >> 2;
+	r2 = heap32[(r1)];
+	r2 = r2 >> 2;
+	r2 = heap32[(r2+10)];
+	r3 = heap32[(fp)];
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r3;
+	__FUNCTION_TABLE__[(r2)>>2](i7);
+	r2 = r_g0;
+	r4 = heap32[(r1)];
+	r4 = r4 >> 2;
+	r4 = heap32[(r4+7)];
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r2;
+	r5 = heap32[(fp+1)];
+	__FUNCTION_TABLE__[(r4)>>2](i7);
+	r4 = r_g0;
+	r6 = r5 >> 2;
+	heap32[(r6)] = r4;
+if(!(r4 ==0)) //_LBB409_2
+{
+	r4 = heap32[(r1)];
+	r4 = r4 >> 2;
+	r4 = heap32[(r4+12)];
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r2;
+	__FUNCTION_TABLE__[(r4)>>2](i7);
+}
+	r2 = r3 >> 2;
+	r3 = heap32[(r2+1)];
+	heap32[(r6+1)] = r3;
+	r3 = heap32[(r2+12)];
+	r4 = r3 >> 2;
+	r4 = heap32[(r4)];
+	r4 = r4 >> 2;
+	r4 = heap32[(r4+14)];
+	r5 = (r5 + 12)|0;
+	heap32[(g0)] = r3;
+	heap32[(g0+1)] = r5;
+	heap32[(g0+2)] = r0;
+	__FUNCTION_TABLE__[(r4)>>2](i7);
+	heap32[(r6+13)] = heap32[(r2+3)];
+	r3 = heap32[(r2+13)];
+	if(r3 ==0) //_LBB409_4
+{
+__label__ = 4;
+}
+else{
+	r3 = heap32[(r1)];
+	r3 = r3 >> 2;
+	r3 = heap32[(r3+13)];
+	heap32[(g0)] = r0;
+	__FUNCTION_TABLE__[(r3)>>2](i7);
+	r3 = r_g0 & 1;
+	if(r3 ==0) //_LBB409_5
+{
+	r3 = heap32[(r1)];
+	r3 = r3 >> 2;
+	r3 = heap32[(r3+6)];
+	r4 = heap32[(r2+13)];
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r4;
+	__FUNCTION_TABLE__[(r3)>>2](i7);
+	r3 = r_g0;
+	if(r3 ==0) //_LBB409_7
+{
+	r3 = heap32[(r1)];
+	r3 = r3 >> 2;
+	r3 = heap32[(r3+7)];
+	r4 = heap32[(r2+13)];
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r4;
+	__FUNCTION_TABLE__[(r3)>>2](i7);
+	heap32[(r6+10)] = r_g0;
+	heap32[(r6+11)] = 0;
+	r3 = heap32[(r2+13)];
+	r4 = r3 >> 2;
+	r4 = heap32[(r4)];
+	r4 = r4 >> 2;
+	r4 = heap32[(r4+3)];
+	heap32[(g0)] = r3;
+	__FUNCTION_TABLE__[(r4)>>2](i7);
+	r4 = heap32[(r1)];
+	r4 = r4 >> 2;
+	r4 = heap32[(r4+4)];
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r_g0;
+	heap32[(g0+2)] = 1;
+	__FUNCTION_TABLE__[(r4)>>2](i7);
+	r3 = r_g0;
+	r4 = heap32[(r2+13)];
+	r5 = r4 >> 2;
+	r5 = heap32[(r5)];
+	r5 = r5 >> 2;
+	r7 = r3 >> 2;
+	r5 = heap32[(r5+4)];
+	r7 = heap32[(r7+2)];
+	heap32[(g0)] = r4;
+	heap32[(g0+1)] = r7;
+	heap32[(g0+2)] = r0;
+	__FUNCTION_TABLE__[(r5)>>2](i7);
+	r5 = heap32[(r1)];
+	r5 = r5 >> 2;
+	r5 = heap32[(r5+5)];
+	r7 = heap32[(r2+13)];
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r3;
+	heap32[(g0+2)] = r_g0;
+	heap32[(g0+3)] = 1213612625;
+	heap32[(g0+4)] = r7;
+	__FUNCTION_TABLE__[(r5)>>2](i7);
+__label__ = 8;
+}
+else{
+	heap32[(r6+10)] = r3;
+	heap32[(r6+11)] = 0;
+__label__ = 8;
+}
+}
+else{
+__label__ = 4;
+}
+}
+if (__label__ == 4){
+	heap32[(r6+10)] = 0;
+	heap32[(r6+11)] = 0;
+}
+	r3 = heap32[(r2+14)];
+	if(r3 ==0) //_LBB409_10
+{
+__label__ = 10;
+}
+else{
+	r3 = heap32[(r1)];
+	r3 = r3 >> 2;
+	r3 = heap32[(r3+13)];
+	heap32[(g0)] = r0;
+	__FUNCTION_TABLE__[(r3)>>2](i7);
+	r3 = r_g0 & 2;
+	if(r3 ==0) //_LBB409_12
+{
+	r3 = heap32[(r1)];
+	r3 = r3 >> 2;
+	r3 = heap32[(r3+6)];
+	r4 = heap32[(r2+14)];
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r4;
+	__FUNCTION_TABLE__[(r3)>>2](i7);
+	r3 = r_g0;
+	if(r3 ==0) //_LBB409_14
+{
+	r3 = heap32[(r1)];
+	r3 = r3 >> 2;
+	r3 = heap32[(r3+7)];
+	r4 = heap32[(r2+14)];
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r4;
+	__FUNCTION_TABLE__[(r3)>>2](i7);
+	heap32[(r6+12)] = r_g0;
+	r3 = heap32[(r2+14)];
+	r4 = r3 >> 2;
+	r4 = heap32[(r4)];
+	r4 = r4 >> 2;
+	r4 = heap32[(r4+2)];
+	heap32[(g0)] = r3;
+	__FUNCTION_TABLE__[(r4)>>2](i7);
+	r4 = heap32[(r1)];
+	r4 = r4 >> 2;
+	r4 = heap32[(r4+4)];
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r_g0;
+	heap32[(g0+2)] = 1;
+	__FUNCTION_TABLE__[(r4)>>2](i7);
+	r3 = r_g0;
+	r4 = heap32[(r2+14)];
+	r5 = r4 >> 2;
+	r5 = heap32[(r5)];
+	r5 = r5 >> 2;
+	r6 = r3 >> 2;
+	r5 = heap32[(r5+3)];
+	r6 = heap32[(r6+2)];
+	heap32[(g0)] = r4;
+	heap32[(g0+1)] = r6;
+	heap32[(g0+2)] = r0;
+	__FUNCTION_TABLE__[(r5)>>2](i7);
+	r1 = heap32[(r1)];
+	r1 = r1 >> 2;
+	r1 = heap32[(r1+5)];
+	r2 = heap32[(r2+14)];
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r3;
+	heap32[(g0+2)] = r_g0;
+	heap32[(g0+3)] = 1346456916;
+	heap32[(g0+4)] = r2;
+	__FUNCTION_TABLE__[(r1)>>2](i7);
+__label__ = 11;
+}
+else{
+	heap32[(r6+12)] = r3;
+__label__ = 11;
+}
+}
+else{
+__label__ = 10;
+}
+}
+if (__label__ == 10){
+	heap32[(r6+12)] = 0;
+}
+	r0 = _2E_str8189;
+	r_g0 = r0;
+	return;
+}
+
+function _ZN22btBvhTriangleMeshShape17buildOptimizedBvhEv(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+	var r6;
+	var r7;
+	var r8;
+	var r9;
+	var r10;
+	var r11;
+	var f0;
+	var f1;
+	var f2;
+	var f3;
+	var f4;
+	var f5;
+	var f6;
+var __label__ = 0;
+	i7 = sp + -72;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = heapU8[r0+61];
+if(!(r1 ==0)) //_LBB410_3
+{
+	r1 = r0 >> 2;
+	r2 = heap32[(r1+13)];
+	r3 = r2 >> 2;
+	r3 = heap32[(r3)];
+	r3 = r3 >> 2;
+	r3 = heap32[(r3)];
+	heap32[(g0)] = r2;
+	__FUNCTION_TABLE__[(r3)>>2](i7);
+	r1 = heap32[(r1+13)];
+if(!(r1 ==0)) //_LBB410_3
+{
+	r2 = gNumAlignedFree;
+	r2 = r2 >> 2;
+	r3 = heap32[(r2)];
+	r3 = (r3 + 1)|0;
+	r1 = r1 >> 2;
+	heap32[(r2)] = r3;
+	r1 = heap32[(r1+-1)];
+	heap32[(g0)] = r1;
+	free(i7);
+}
+}
+	r1 = gNumAlignedAllocs;
+	r1 = r1 >> 2;
+	r2 = heap32[(r1)];
+	r2 = (r2 + 1)|0;
+	heap32[(r1)] = r2;
+	heap32[(g0)] = 191;
+	malloc(i7);
+	r2 = r_g0;
+	if(r2 !=0) //_LBB410_5
+{
+	r3 = 0;
+	r4 = (r2 + 4)|0;
+	r3 = (r3 - r4)|0;
+	r3 = r3 & 15;
+	r3 = (r2 + r3)|0;
+	r4 = (r3 + 4)|0;
+	r3 = r3 >> 2;
+	heap32[(r3)] = r2;
+	r2 = r4;
+}
+	r3 = r2 >> 2;
+	r4 = 1;
+	heap32[(r3+13)] = 277;
+	heap8[r2+80] = r4;
+	heap32[(r3+19)] = 0;
+	heap32[(r3+17)] = 0;
+	heap32[(r3+18)] = 0;
+	heap8[r2+100] = r4;
+	heap32[(r3+24)] = 0;
+	heap32[(r3+22)] = 0;
+	heap32[(r3+23)] = 0;
+	heap8[r2+120] = r4;
+	heap32[(r3+29)] = 0;
+	heap32[(r3+27)] = 0;
+	heap32[(r3+28)] = 0;
+	heap8[r2+140] = r4;
+	heap32[(r3+34)] = 0;
+	heap32[(r3+32)] = 0;
+	heap32[(r3+33)] = 0;
+	heap32[(r3+36)] = 0;
+	heap8[r2+164] = r4;
+	heap32[(r3+40)] = 0;
+	heap32[(r3+38)] = 0;
+	heap32[(r3+39)] = 0;
+	heap32[(r3+42)] = 0;
+	heap32[(r3+1)] = -8388609;
+	heap32[(r3+2)] = -8388609;
+	heap32[(r3+3)] = -8388609;
+	heap32[(r3+4)] = 0;
+	heap32[(r3+5)] = 2139095039;
+	heap32[(r3+6)] = 2139095039;
+	r5 = _ZTV14btOptimizedBvh;
+	heap32[(r3+7)] = 2139095039;
+	r5 = (r5 + 8)|0;
+	heap32[(r3+8)] = 0;
+	r6 = r0 >> 2;
+	heap32[(r3)] = r5;
+	heap32[(r6+13)] = r2;
+	r5 = heap32[(r6+12)];
+	r7 = heapU8[r0+60];
+	heap8[r2+60] = r7;
+	if(r7 ==0) //_LBB410_11
+{
+	r6 = _ZTVZN14btOptimizedBvh5buildEP23btStridingMeshInterfacebRK9btVector3S4_E20NodeTriangleCallback;
+	r7 = sp + -24;
+	r6 = (r6 + 8)|0;
+	r8 = r7 >> 2;
+	r9 = (r2 + 64)|0;
+	heap32[(fp+-6)] = r6;
+	r6 = sp + -40;
+	heap32[(r8+1)] = r9;
+	r8 = r6 >> 2;
+	heap32[(fp+-10)] = -581039253;
+	heap32[(r8+1)] = -581039253;
+	heap32[(r8+2)] = -581039253;
+	r9 = sp + -56;
+	heap32[(r8+3)] = 0;
+	r8 = r9 >> 2;
+	heap32[(fp+-14)] = 1566444395;
+	heap32[(r8+1)] = 1566444395;
+	heap32[(r8+2)] = 1566444395;
+	r10 = r5 >> 2;
+	heap32[(r8+3)] = 0;
+	r8 = heap32[(r10)];
+	r8 = r8 >> 2;
+	r8 = heap32[(r8+2)];
+	heap32[(g0)] = r5;
+	heap32[(g0+1)] = r7;
+	heap32[(g0+2)] = r6;
+	heap32[(g0+3)] = r9;
+	__FUNCTION_TABLE__[(r8)>>2](i7);
+	r5 = heap32[(r3+17)];
+	r6 = heap32[(r3+22)];
+	r7 = r5 << 1;
+if(!(r6 >=r7)) //_LBB410_26
+{
+	r8 = heap32[(r3+23)];
+if(!(r8 >=r7)) //_LBB410_26
+{
+	if(r7 !=0) //_LBB410_15
+{
+	r8 = heap32[(r1)];
+	r8 = (r8 + 1)|0;
+	r9 = r5 << 7;
+	heap32[(r1)] = r8;
+	r8 = r9 | 19;
+	heap32[(g0)] = r8;
+	malloc(i7);
+	r8 = r_g0;
+	if(r8 !=0) //_LBB410_17
+{
+	r9 = 0;
+	r10 = (r8 + 4)|0;
+	r9 = (r9 - r10)|0;
+	r9 = r9 & 15;
+	r9 = (r8 + r9)|0;
+	r10 = (r9 + 4)|0;
+	r9 = r9 >> 2;
+	heap32[(r9)] = r8;
+	r8 = r10;
+}
+}
+else{
+	r8 = 0;
+}
+if(!(r6 <1)) //_LBB410_21
+{
+	r9 = 0;
+_20: while(true){
+	r10 = heap32[(r3+24)];
+	r11 = (r8 + r9)|0;
+	r10 = (r10 + r9)|0;
+	heap32[(g0)] = r11;
+	heap32[(g0+1)] = r10;
+	heap32[(g0+2)] = 64;
+	r6 = (r6 + -1)|0;
+	r9 = (r9 + 64)|0;
+	memcpy(i7);
+if(!(r6 !=0)) //_LBB410_20
+{
+break _20;
+}
+}
+}
+	r6 = heap32[(r3+24)];
+if(!(r6 ==0)) //_LBB410_25
+{
+	r9 = heapU8[r2+100];
+if(!(r9 ==0)) //_LBB410_24
+{
+	r9 = gNumAlignedFree;
+	r9 = r9 >> 2;
+	r10 = heap32[(r9)];
+	r10 = (r10 + 1)|0;
+	r6 = r6 >> 2;
+	heap32[(r9)] = r10;
+	r6 = heap32[(r6+-1)];
+	heap32[(g0)] = r6;
+	free(i7);
+}
+	heap32[(r3+24)] = 0;
+}
+	r6 = 1;
+	heap8[r2+100] = r6;
+	heap32[(r3+24)] = r8;
+	heap32[(r3+23)] = r7;
+}
+}
+	r6 = _ZTV31btInternalTriangleIndexCallback;
+	r6 = (r6 + 8)|0;
+	heap32[(r3+22)] = r7;
+	heap32[(fp+-6)] = r6;
+}
+else{
+	r7 = (r2 + 4)|0;
+	r8 = (r2 + 20)|0;
+	f0 =                        -1;
+	f1 = heapFloat[(r6+6)];
+	f2 = heapFloat[(r6+5)];
+	f3 = heapFloat[(r6+4)];
+	f3 = f3+f0;
+	f2 = f2+f0;
+	heapFloat[(r3+1)] = f3;
+	f0 = f1+f0;
+	heapFloat[(r3+2)] = f2;
+	heapFloat[(r3+3)] = f0;
+	heap32[(r3+4)] = 0;
+	f1 =                         1;
+	f4 = heapFloat[(r6+10)];
+	f5 = heapFloat[(r6+9)];
+	f6 = heapFloat[(r6+8)];
+	f6 = f6+f1;
+	f5 = f5+f1;
+	heapFloat[(r3+5)] = f6;
+	f1 = f4+f1;
+	heapFloat[(r3+6)] = f5;
+	heapFloat[(r3+7)] = f1;
+	f4 =                     65533;
+	f3 = f6-f3;
+	f2 = f5-f2;
+	f3 = f4/f3;
+	heap32[(r3+8)] = 0;
+	f0 = f1-f0;
+	f1 = f4/f2;
+	heapFloat[(r3+9)] = f3;
+	f0 = f4/f0;
+	heapFloat[(r3+10)] = f1;
+	heapFloat[(r3+11)] = f0;
+	r6 = _ZTVZN14btOptimizedBvh5buildEP23btStridingMeshInterfacebRK9btVector3S4_E29QuantizedNodeTriangleCallback;
+	heap32[(r3+12)] = 0;
+	r9 = sp + -16;
+	r6 = (r6 + 8)|0;
+	heap8[r2+60] = r4;
+	r10 = r9 >> 2;
+	r11 = (r2 + 104)|0;
+	heap32[(fp+-4)] = r6;
+	heap32[(r10+1)] = r11;
+	r6 = r5 >> 2;
+	heap32[(r10+2)] = r2;
+	r6 = heap32[(r6)];
+	r6 = r6 >> 2;
+	r6 = heap32[(r6+2)];
+	heap32[(g0)] = r5;
+	heap32[(g0+1)] = r9;
+	heap32[(g0+2)] = r7;
+	heap32[(g0+3)] = r8;
+	__FUNCTION_TABLE__[(r6)>>2](i7);
+	r5 = heap32[(r3+27)];
+	r6 = heap32[(r3+32)];
+	r7 = r5 << 1;
+_31: do {
+if(!(r6 >=r7)) //_LBB410_10
+{
+	r8 = (r2 + 124)|0;
+	heap32[(g0)] = r8;
+	heap32[(g0+1)] = r7;
+	r8 = (r7 - r6)|0;
+	r6 = r6 << 4;
+	_ZN20btAlignedObjectArrayI18btQuantizedBvhNodeE7reserveEi(i7);
+_33: while(true){
+	r9 = heap32[(r3+34)];
+	r9 = (r9 + r6)|0;
+	r9 = r9 >> 2;
+	r8 = (r8 + -1)|0;
+	r6 = (r6 + 16)|0;
+	heap32[(r9)] = 0;
+	heap32[(r9+1)] = 0;
+	heap32[(r9+2)] = 0;
+	heap32[(r9+3)] = 0;
+if(!(r8 !=0)) //_LBB410_9
+{
+break _31;
+}
+}
+}
+} while(0);
+	r6 = _ZTV31btInternalTriangleIndexCallback;
+	r6 = (r6 + 8)|0;
+	heap32[(r3+32)] = r7;
+	heap32[(fp+-4)] = r6;
+}
+	heap32[(r3+14)] = 0;
+	heap32[(g0)] = r2;
+	heap32[(g0+1)] = 0;
+	heap32[(g0+2)] = r5;
+	_ZN14btQuantizedBvh9buildTreeEii(i7);
+	r5 = heapU8[r2+60];
+if(!(r5 ==0)) //_LBB410_41
+{
+	r5 = heap32[(r3+38)];
+if(!(r5 !=0)) //_LBB410_41
+{
+	r6 = heap32[(r3+39)];
+	if(r6 !=r5) //_LBB410_31
+{
+__label__ = 29;
+}
+else{
+	if(r6 <1) //_LBB410_32
+{
+	r6 = heap32[(r1)];
+	r6 = (r6 + 1)|0;
+	heap32[(r1)] = r6;
+	heap32[(g0)] = 51;
+	malloc(i7);
+	r1 = r_g0;
+	if(r1 !=0) //_LBB410_34
+{
+	r6 = 0;
+	r7 = (r1 + 4)|0;
+	r6 = (r6 - r7)|0;
+	r6 = r6 & 15;
+	r6 = (r1 + r6)|0;
+	r7 = (r6 + 4)|0;
+	r6 = r6 >> 2;
+	heap32[(r6)] = r1;
+	r1 = r7;
+}
+	r6 = heap32[(r3+40)];
+if(!(r6 ==0)) //_LBB410_39
+{
+	r7 = heapU8[r2+164];
+if(!(r7 ==0)) //_LBB410_38
+{
+	r7 = gNumAlignedFree;
+	r7 = r7 >> 2;
+	r8 = heap32[(r7)];
+	r8 = (r8 + 1)|0;
+	r6 = r6 >> 2;
+	heap32[(r7)] = r8;
+	r6 = heap32[(r6+-1)];
+	heap32[(g0)] = r6;
+	free(i7);
+}
+	heap32[(r3+40)] = 0;
+}
+	r6 = 1;
+	heap8[r2+164] = r6;
+	heap32[(r3+40)] = r1;
+	heap32[(r3+39)] = 1;
+	r6 = heap32[(r3+38)];
+	r6 = (r6 + 1)|0;
+__label__ = 37;
+}
+else{
+__label__ = 29;
+}
+}
+if (__label__ == 29){
+	r1 = heap32[(r3+40)];
+	r6 = r4;
+}
+	heap32[(r3+38)] = r6;
+	r6 = heap32[(r3+34)];
+	r7 = heapU16[(r6)>>1];
+	r5 = r5 << 5;
+	heap16[(r1+r5)>>1] = r7;
+	r1 = (r1 + r5)|0;
+	r5 = heapU16[(r6+2)>>1];
+	heap16[(r1+2)>>1] = r5;
+	r5 = heapU16[(r6+4)>>1];
+	heap16[(r1+4)>>1] = r5;
+	r5 = heapU16[(r6+6)>>1];
+	heap16[(r1+6)>>1] = r5;
+	r5 = heapU16[(r6+8)>>1];
+	heap16[(r1+8)>>1] = r5;
+	r5 = heapU16[(r6+10)>>1];
+	r6 = r1 >> 2;
+	heap16[(r1+10)>>1] = r5;
+	heap32[(r6+3)] = 0;
+	r1 = heap32[(r3+34)];
+	r1 = r1 >> 2;
+	r1 = heap32[(r1+3)];
+	r5 = 0;
+	r5 = (r5 - r1)|0;
+	r1 = r1 < 0 ? r5 : r4;
+	heap32[(r6+4)] = r1;
+}
+}
+	r1 = heap32[(r3+38)];
+	heap32[(r3+42)] = r1;
+	r1 = heap32[(r3+29)];
+if(!(r1 ==0)) //_LBB410_45
+{
+	r4 = heapU8[r2+120];
+if(!(r4 ==0)) //_LBB410_44
+{
+	r4 = gNumAlignedFree;
+	r4 = r4 >> 2;
+	r5 = heap32[(r4)];
+	r5 = (r5 + 1)|0;
+	r1 = r1 >> 2;
+	heap32[(r4)] = r5;
+	r1 = heap32[(r1+-1)];
+	heap32[(g0)] = r1;
+	free(i7);
+}
+	heap32[(r3+29)] = 0;
+}
+	r1 = 1;
+	heap8[r2+120] = r1;
+	heap32[(r3+29)] = 0;
+	heap32[(r3+27)] = 0;
+	heap32[(r3+28)] = 0;
+	r4 = heap32[(r3+19)];
+if(!(r4 ==0)) //_LBB410_49
+{
+	r5 = heapU8[r2+80];
+if(!(r5 ==0)) //_LBB410_48
+{
+	r5 = gNumAlignedFree;
+	r5 = r5 >> 2;
+	r6 = heap32[(r5)];
+	r6 = (r6 + 1)|0;
+	r4 = r4 >> 2;
+	heap32[(r5)] = r6;
+	r4 = heap32[(r4+-1)];
+	heap32[(g0)] = r4;
+	free(i7);
+}
+	heap32[(r3+19)] = 0;
+}
+	heap8[r2+80] = r1;
+	heap32[(r3+19)] = 0;
+	heap32[(r3+17)] = 0;
+	heap32[(r3+18)] = 0;
+	heap8[r0+61] = r1;
+	return;
+}
+
+function _ZN22btBvhTriangleMeshShape15setLocalScalingERK9btVector3(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var f0;
+	var f1;
+	var f2;
+	var f3;
+	var f4;
+var __label__ = 0;
+	i7 = sp + -8;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = r0 >> 2;
+	r2 = heap32[(r1)];
+	r2 = r2 >> 2;
+	r2 = heap32[(r2+7)];
+	heap32[(g0)] = r0;
+	r3 = heap32[(fp+1)];
+	__FUNCTION_TABLE__[(r2)>>2](i7);
+	r2 = r_g0 >> 2;
+	r3 = r3 >> 2;
+	f0 = heapFloat[(r3)];
+	f1 = heapFloat[(r2)];
+	f2 = heapFloat[(r2+1)];
+	f3 = heapFloat[(r3+1)];
+	f1 = f1-f0;
+	f2 = f2-f3;
+	f3 = heapFloat[(r2+2)];
+	f4 = heapFloat[(r3+2)];
+	f3 = f3-f4;
+	f1 = f1*f1;
+	f2 = f2*f2;
+	f1 = f1+f2;
+	f2 = f3*f3;
+	f1 = f1+f2;
+	f2 =   1.1920928955078125e-007;
+if(!(f1 <=f2)) //_LBB411_2
+{
+	r1 = heap32[(r1+12)];
+	r1 = r1 >> 2;
+	heapFloat[(r1+1)] = f0;
+	heap32[(r1+2)] = heap32[(r3+1)];
+	heap32[(r1+3)] = heap32[(r3+2)];
+	heap32[(r1+4)] = heap32[(r3+3)];
+	heap32[(g0)] = r0;
+	_ZN19btTriangleMeshShape15recalcLocalAabbEv(i7);
+	heap32[(g0)] = r0;
+	_ZN22btBvhTriangleMeshShape17buildOptimizedBvhEv(i7);
+}
+	return;
+}
+
+function _ZNK22btBvhTriangleMeshShape19processAllTrianglesEP18btTriangleCallbackRK9btVector3S4_(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+var __label__ = 0;
+	i7 = sp + -80;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r0 = r0 >> 2;
+	r1 = _ZTVZNK22btBvhTriangleMeshShape19processAllTrianglesEP18btTriangleCallbackRK9btVector3S4_E21MyNodeOverlapCallback;
+	r2 = sp + -64;
+	r3 = heap32[(r0+12)];
+	r1 = (r1 + 8)|0;
+	r4 = r2 >> 2;
+	heap32[(fp+-16)] = r1;
+	r1 = heap32[(fp+1)];
+	heap32[(r4+1)] = r3;
+	heap32[(r4+2)] = r1;
+	r0 = heap32[(r0+13)];
+	r1 = heap32[(fp+2)];
+	r3 = heap32[(fp+3)];
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r2;
+	heap32[(g0+2)] = r1;
+	heap32[(g0+3)] = r3;
+	_ZNK14btQuantizedBvh26reportAabbOverlappingNodexEP21btNodeOverlapCallbackRK9btVector3S4_(i7);
+	return;
+}
+
+function _ZN22btBvhTriangleMeshShapeD0Ev(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+var __label__ = 0;
+	i7 = sp + -8;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = _ZTV22btBvhTriangleMeshShape;
+	r2 = r0 >> 2;
+	r1 = (r1 + 8)|0;
+	heap32[(r2)] = r1;
+	r1 = heapU8[r0+61];
+	if(r1 ==0) //_LBB413_3
+{
+__label__ = 3;
+}
+else{
+	r1 = heap32[(r2+13)];
+	r3 = r1 >> 2;
+	r3 = heap32[(r3)];
+	r3 = r3 >> 2;
+	r3 = heap32[(r3)];
+	heap32[(g0)] = r1;
+	__FUNCTION_TABLE__[(r3)>>2](i7);
+	r1 = heap32[(r2+13)];
+	if(r1 ==0) //_LBB413_3
+{
+__label__ = 3;
+}
+else{
+	r0 = gNumAlignedFree;
+	r0 = r0 >> 2;
+	r3 = heap32[(r0)];
+	r3 = (r3 + 1)|0;
+	r1 = r1 >> 2;
+	heap32[(r0)] = r3;
+	r0 = heap32[(r1+-1)];
+	r1 = _ZTV14btConcaveShape;
+	heap32[(g0)] = r0;
+	r0 = (r1 + 8)|0;
+	free(i7);
+	heap32[(r2)] = r0;
+__label__ = 4;
+}
+}
+if (__label__ == 3){
+	r1 = _ZTV14btConcaveShape;
+	r1 = (r1 + 8)|0;
+	heap32[(r2)] = r1;
+	if(r0 ==0) //_LBB413_5
+{
+__label__ = 5;
+}
+else{
+__label__ = 4;
+}
+}
+if (__label__ == 4){
+	r0 = gNumAlignedFree;
+	r0 = r0 >> 2;
+	r1 = heap32[(r0)];
+	r1 = (r1 + 1)|0;
+	heap32[(r0)] = r1;
+	r0 = heap32[(r2+-1)];
+	heap32[(g0)] = r0;
+	free(i7);
+}
+	return;
+}
+
+function _ZN22btBvhTriangleMeshShapeD1Ev(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+var __label__ = 0;
+	i7 = sp + -8;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = _ZTV22btBvhTriangleMeshShape;
+	r2 = r0 >> 2;
+	r1 = (r1 + 8)|0;
+	heap32[(r2)] = r1;
+	r0 = heapU8[r0+61];
+if(!(r0 ==0)) //_LBB414_3
+{
+	r0 = heap32[(r2+13)];
+	r1 = r0 >> 2;
+	r1 = heap32[(r1)];
+	r1 = r1 >> 2;
+	r1 = heap32[(r1)];
+	heap32[(g0)] = r0;
+	__FUNCTION_TABLE__[(r1)>>2](i7);
+	r0 = heap32[(r2+13)];
+if(!(r0 ==0)) //_LBB414_3
+{
+	r1 = gNumAlignedFree;
+	r1 = r1 >> 2;
+	r3 = heap32[(r1)];
+	r3 = (r3 + 1)|0;
+	r0 = r0 >> 2;
+	heap32[(r1)] = r3;
+	r0 = heap32[(r0+-1)];
+	heap32[(g0)] = r0;
+	free(i7);
+}
+}
+	r0 = _ZTV14btConcaveShape;
+	r0 = (r0 + 8)|0;
+	heap32[(r2)] = r0;
+	return;
+}
+
+function _ZNK21btConvexInternalShape36getNumPreferredPenetrationDirectionsEv(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+var __label__ = 0;
+	i7 = sp + 0;var g0 = i7>>2; // save stack
+	r0 = 0;
+	r_g0 = r0;
+	return;
+}
+
+function _ZN14btCapsuleShape9setMarginEf(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var f0;
+	var f1;
+	var f2;
+	var f3;
+	var f4;
+	var f5;
+	var f6;
+	var f7;
+var __label__ = 0;
+	i7 = sp + -8;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = r0 >> 2;
+	r2 = heap32[(r1)];
+	r2 = r2 >> 2;
+	r2 = heap32[(r2+11)];
+	heap32[(g0)] = r0;
+	__FUNCTION_TABLE__[(r2)>>2](i7);
+	f0 = f_g0;
+	r2 = heap32[(r1)];
+	r2 = r2 >> 2;
+	r2 = heap32[(r2+11)];
+	heap32[(g0)] = r0;
+	__FUNCTION_TABLE__[(r2)>>2](i7);
+	f1 = f_g0;
+	r2 = heap32[(r1)];
+	r2 = r2 >> 2;
+	r2 = heap32[(r2+11)];
+	heap32[(g0)] = r0;
+	__FUNCTION_TABLE__[(r2)>>2](i7);
+	f2 = f_g0;
+	f3 = heapFloat[(r1+9)];
+	f4 = heapFloat[(r1+8)];
+	f5 = heapFloat[(r1+7)];
+	heap32[(r1+11)] = heap32[(fp+1)];
+	r2 = heap32[(r1)];
+	r2 = r2 >> 2;
+	r2 = heap32[(r2+11)];
+	heap32[(g0)] = r0;
+	__FUNCTION_TABLE__[(r2)>>2](i7);
+	f6 = f_g0;
+	r2 = heap32[(r1)];
+	r2 = r2 >> 2;
+	r2 = heap32[(r2+11)];
+	heap32[(g0)] = r0;
+	__FUNCTION_TABLE__[(r2)>>2](i7);
+	f7 = f_g0;
+	r2 = heap32[(r1)];
+	r2 = r2 >> 2;
+	r2 = heap32[(r2+11)];
+	heap32[(g0)] = r0;
+	f2 = f5+f2;
+	__FUNCTION_TABLE__[(r2)>>2](i7);
+	f1 = f4+f1;
+	f2 = f2-f_g0;
+	f0 = f3+f0;
+	f1 = f1-f7;
+	heapFloat[(r1+7)] = f2;
+	f0 = f0-f6;
+	heapFloat[(r1+8)] = f1;
+	heapFloat[(r1+9)] = f0;
+	heap32[(r1+10)] = 0;
+	return;
+}
+
+function _ZNK14btCapsuleShape7getNameEv(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+var __label__ = 0;
+	i7 = sp + 0;var g0 = i7>>2; // save stack
+	r0 = _2E_str194;
+	r_g0 = r0;
+	return;
+}
+
+function _ZNK14btCapsuleShape7getAabbERK11btTransformR9btVector3S4_(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+	var f0;
+	var f1;
+	var f2;
+	var f3;
+	var f4;
+	var f5;
+	var f6;
+	var f7;
+	var f8;
+	var f9;
+	var f10;
+	var f11;
+	var f12;
+var __label__ = 0;
+	i7 = sp + -24;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = r0 >> 2;
+	r2 = heap32[(r1+13)];
+	r3 = (r2 + 2)|0;
+	r3 = (r3 % 3)|0;
+	r4 = (r0 + 28)|0;
+	r3 = r3 << 2;
+	r3 = (r4 + r3)|0;
+	r3 = r3 >> 2;
+	f0 = heapFloat[(r3)];
+	r3 = sp + -16;
+	r5 = r3 >> 2;
+	heapFloat[(fp+-4)] = f0;
+	r2 = r2 << 2;
+	heapFloat[(r5+1)] = f0;
+	r4 = (r4 + r2)|0;
+	heapFloat[(r5+2)] = f0;
+	r4 = r4 >> 2;
+	heap32[(r5+3)] = 0;
+	r2 = (r3 + r2)|0;
+	f1 = heapFloat[(r4)];
+	r2 = r2 >> 2;
+	f0 = f0+f1;
+	heapFloat[(r2)] = f0;
+	r2 = heap32[(r1)];
+	r2 = r2 >> 2;
+	r2 = heap32[(r2+11)];
+	heap32[(g0)] = r0;
+	__FUNCTION_TABLE__[(r2)>>2](i7);
+	f0 = f_g0;
+	r2 = heap32[(r1)];
+	r2 = r2 >> 2;
+	r2 = heap32[(r2+11)];
+	heap32[(g0)] = r0;
+	__FUNCTION_TABLE__[(r2)>>2](i7);
+	f1 = f_g0;
+	r1 = heap32[(r1)];
+	r1 = r1 >> 2;
+	r1 = heap32[(r1+11)];
+	heap32[(g0)] = r0;
+	__FUNCTION_TABLE__[(r1)>>2](i7);
+	f3 = heapFloat[(fp+-4)];
+	f2 = f3+f_g0;
+	heapFloat[(fp+-4)] = f2;
+	f3 = heapFloat[(r5+1)];
+	f1 = f3+f1;
+	heapFloat[(r5+1)] = f1;
+	f3 = heapFloat[(r5+2)];
+	r0 = heap32[(fp+1)];
+	f0 = f3+f0;
+	r0 = r0 >> 2;
+	heapFloat[(r5+2)] = f0;
+	f3 = heapFloat[(r0+10)];
+	r1 = heap32[(fp+2)];
+	r2 = heap32[(fp+3)];
+	f4 =                         0;
+	if(f3 <f4) //_LBB418_2
+{
+	f3 = -f3;
+}
+	f5 = heapFloat[(r0+9)];
+	if(f5 <f4) //_LBB418_5
+{
+	f5 = -f5;
+}
+	f6 = heapFloat[(r0+8)];
+	if(f6 <f4) //_LBB418_8
+{
+	f6 = -f6;
+}
+	f7 = heapFloat[(r0+6)];
+	if(f7 <f4) //_LBB418_11
+{
+	f7 = -f7;
+}
+	f8 = heapFloat[(r0+5)];
+	if(f8 <f4) //_LBB418_14
+{
+	f8 = -f8;
+}
+	f9 = heapFloat[(r0+4)];
+	if(f9 <f4) //_LBB418_17
+{
+	f9 = -f9;
+}
+	f10 = heapFloat[(r0+2)];
+	if(f10 <f4) //_LBB418_20
+{
+	f10 = -f10;
+}
+	f11 = heapFloat[(r0+1)];
+	if(f11 <f4) //_LBB418_23
+{
+	f11 = -f11;
+}
+	f12 = heapFloat[(r0)];
+	if(f12 <f4) //_LBB418_26
+{
+	f12 = -f12;
+}
+	f4 = f12*f2;
+	f11 = f11*f1;
+	f9 = f9*f2;
+	f8 = f8*f1;
+	f4 = f4+f11;
+	f10 = f10*f0;
+	f2 = f6*f2;
+	f1 = f5*f1;
+	f5 = f9+f8;
+	f6 = f7*f0;
+	f4 = f4+f10;
+	f7 = heapFloat[(r0+12)];
+	f8 = heapFloat[(r0+13)];
+	f9 = heapFloat[(r0+14)];
+	f5 = f5+f6;
+	r0 = r1 >> 2;
+	f1 = f2+f1;
+	f0 = f3*f0;
+	f2 = f7-f4;
+	f0 = f1+f0;
+	f1 = f8-f5;
+	heapFloat[(r0)] = f2;
+	f2 = f9-f0;
+	heapFloat[(r0+1)] = f1;
+	heapFloat[(r0+2)] = f2;
+	r1 = r2 >> 2;
+	f1 = f7+f4;
+	heap32[(r0+3)] = 0;
+	f2 = f8+f5;
+	heapFloat[(r1)] = f1;
+	f0 = f9+f0;
+	heapFloat[(r1+1)] = f2;
+	heapFloat[(r1+2)] = f0;
+	heap32[(r1+3)] = 0;
+	return;
+}
+
+function _ZNK14btCapsuleShape28calculateSerializeBufferSizeEv(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+var __label__ = 0;
+	i7 = sp + 0;var g0 = i7>>2; // save stack
+	r0 = 60;
+	r_g0 = r0;
+	return;
+}
+
+function _ZNK14btCapsuleShape49batchedUnitVectorGetSupportingVertexWithoutMarginEPK9btVector3PS0_i(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+	var r6;
+	var r7;
+	var r8;
+	var r9;
+	var f0;
+	var f1;
+	var f2;
+	var f3;
+	var f4;
+	var f5;
+	var f6;
+	var f7;
+	var f8;
+	var f9;
+	var f10;
+	var f11;
+var __label__ = 0;
+	i7 = sp + -40;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp+3)];
+if(!(r0 <1)) //_LBB420_9
+{
+	r1 = heap32[(fp)];
+	r2 = r1 >> 2;
+	r3 = heap32[(r2+13)];
+	r4 = (r3 + 2)|0;
+	r4 = (r4 % 3)|0;
+	r4 = r4 << 2;
+	r4 = (r1 + r4)|0;
+	r4 = r4 >> 2;
+	r5 = heap32[(fp+1)];
+	r6 = heap32[(fp+2)];
+	f0 = heapFloat[(r4+7)];
+	r0 = (r0 + -1)|0;
+	r4 = (r5 + 8)|0;
+	r5 = (r6 + 8)|0;
+_3: while(true){
+	r6 = sp + -16;
+	heap32[(fp+-4)] = 0;
+	r7 = r6 >> 2;
+	r3 = r3 << 2;
+	heap32[(r7+1)] = 0;
+	r6 = (r6 + r3)|0;
+	r3 = (r1 + r3)|0;
+	heap32[(r7+2)] = 0;
+	r6 = r6 >> 2;
+	r3 = r3 >> 2;
+	heap32[(r7+3)] = 0;
+	heap32[(r6)] = heap32[(r3+7)];
+	r3 = heap32[(r2)];
+	r3 = r3 >> 2;
+	r3 = heap32[(r3+11)];
+	heap32[(g0)] = r1;
+	__FUNCTION_TABLE__[(r3)>>2](i7);
+	r3 = r4 >> 2;
+	f2 = heapFloat[(r3+-1)];
+	f3 = heapFloat[(r2+4)];
+	f4 = heapFloat[(r3+-2)];
+	f5 = heapFloat[(r2+3)];
+	f6 = heapFloat[(r3)];
+	f7 = heapFloat[(r2+5)];
+	f3 = f2*f3;
+	f5 = f4*f5;
+	f7 = f6*f7;
+	f8 = heapFloat[(r7+1)];
+	f3 = f3*f0;
+	f9 = heapFloat[(fp+-4)];
+	f5 = f5*f0;
+	f10 = heapFloat[(r7+2)];
+	f7 = f7*f0;
+	f3 = f8+f3;
+	f8 = f2*f_g0;
+	f5 = f9+f5;
+	f9 = f4*f_g0;
+	f3 = f3-f8;
+	f5 = f5-f9;
+	f7 = f10+f7;
+	f1 = f6*f_g0;
+	f1 = f7-f1;
+	f4 = f4*f5;
+	f2 = f2*f3;
+	f2 = f4+f2;
+	f4 = f6*f1;
+	f2 = f2+f4;
+	f4 =       -999999984306749440;
+	if(f2 >f4) //_LBB420_4
+{
+	r6 = r5 >> 2;
+	heapFloat[(r6+-2)] = f5;
+	heapFloat[(r6+-1)] = f3;
+	heapFloat[(r6)] = f1;
+	heap32[(r6+1)] = 0;
+	f4 = f2;
+}
+	r6 = sp + -32;
+	heap32[(fp+-8)] = 0;
+	r7 = r6 >> 2;
+	heap32[(r7+1)] = 0;
+	heap32[(r7+2)] = 0;
+	heap32[(r7+3)] = 0;
+	r8 = heap32[(r2+13)];
+	r8 = r8 << 2;
+	r9 = (r1 + r8)|0;
+	r9 = r9 >> 2;
+	f1 = heapFloat[(r9+7)];
+	r6 = (r6 + r8)|0;
+	r6 = r6 >> 2;
+	f1 = -f1;
+	heapFloat[(r6)] = f1;
+	r6 = heap32[(r2)];
+	r6 = r6 >> 2;
+	r6 = heap32[(r6+11)];
+	heap32[(g0)] = r1;
+	__FUNCTION_TABLE__[(r6)>>2](i7);
+	f2 = heapFloat[(r3+-1)];
+	f3 = heapFloat[(r2+4)];
+	f5 = heapFloat[(r3+-2)];
+	f6 = heapFloat[(r2+3)];
+	f7 = heapFloat[(r3)];
+	f8 = heapFloat[(r2+5)];
+	f3 = f2*f3;
+	f6 = f5*f6;
+	f8 = f7*f8;
+	f9 = heapFloat[(r7+1)];
+	f3 = f3*f0;
+	f10 = heapFloat[(fp+-8)];
+	f6 = f6*f0;
+	f11 = heapFloat[(r7+2)];
+	f8 = f8*f0;
+	f3 = f9+f3;
+	f9 = f2*f_g0;
+	f6 = f10+f6;
+	f10 = f5*f_g0;
+	f3 = f3-f9;
+	f6 = f6-f10;
+	f8 = f11+f8;
+	f1 = f7*f_g0;
+	f1 = f8-f1;
+	f5 = f5*f6;
+	f2 = f2*f3;
+	f2 = f5+f2;
+	f5 = f7*f1;
+	f2 = f2+f5;
+if(!(f2 <=f4)) //_LBB420_7
+{
+	r3 = r5 >> 2;
+	heapFloat[(r3+-2)] = f6;
+	heapFloat[(r3+-1)] = f3;
+	heapFloat[(r3)] = f1;
+	heap32[(r3+1)] = 0;
+}
+	if(r0 ==0) //_LBB420_9
+{
+break _3;
+}
+else{
+	r3 = heap32[(r2+13)];
+	r0 = (r0 + -1)|0;
+	r4 = (r4 + 16)|0;
+	r5 = (r5 + 16)|0;
+continue _3;
+}
+}
+}
+	return;
+}
+
+function _ZNK14btCapsuleShape21calculateLocalInertiaEfR9btVector3(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var f0;
+	var f1;
+	var f2;
+	var f3;
+	var f4;
+	var f5;
+var __label__ = 0;
+	i7 = sp + -16;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = r0 >> 2;
+	r1 = heap32[(r1+13)];
+	r2 = (r1 + 2)|0;
+	r2 = (r2 % 3)|0;
+	r0 = (r0 + 28)|0;
+	r2 = r2 << 2;
+	r2 = (r0 + r2)|0;
+	r2 = r2 >> 2;
+	f0 = heapFloat[(r2)];
+	r2 = sp + -16;
+	r3 = r2 >> 2;
+	heapFloat[(fp+-4)] = f0;
+	r1 = r1 << 2;
+	heapFloat[(r3+1)] = f0;
+	r2 = (r2 + r1)|0;
+	r0 = (r0 + r1)|0;
+	heapFloat[(r3+2)] = f0;
+	r1 = r2 >> 2;
+	heap32[(r3+3)] = 0;
+	r0 = r0 >> 2;
+	f0 = heapFloat[(r1)];
+	f1 = heapFloat[(r0)];
+	f0 = f0+f1;
+	heapFloat[(r1)] = f0;
+	f0 =      0.039999999105930328;
+	f1 = heapFloat[(r3+1)];
+	f2 = heapFloat[(r3+2)];
+	f3 = heapFloat[(fp+-4)];
+	f1 = f1+f0;
+	f2 = f2+f0;
+	f0 = f3+f0;
+	f1 = f1+f1;
+	f2 = f2+f2;
+	f0 = f0+f0;
+	f1 = f1*f1;
+	f2 = f2*f2;
+	f3 = heapFloat[(fp+1)];
+	f4 =      0.083333328366279602;
+	f0 = f0*f0;
+	r0 = heap32[(fp+2)];
+	f5 = f1+f2;
+	f3 = f3*f4;
+	f2 = f0+f2;
+	r0 = r0 >> 2;
+	f4 = f5*f3;
+	f0 = f0+f1;
+	f1 = f2*f3;
+	heapFloat[(r0)] = f4;
+	f0 = f0*f3;
+	heapFloat[(r0+1)] = f1;
+	heapFloat[(r0+2)] = f0;
+	return;
+}
+
+function _ZNK21btConvexInternalShape32getPreferredPenetrationDirectionEiR9btVector3(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+var __label__ = 0;
+	i7 = sp + -16;var g0 = i7>>2; // save stack
+	r0 = _2E_str10;
+	r1 = _2E_str4198;
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r1;
+	heap32[(g0+2)] = 110;
+	_assert(i7);
+}
+
+function _ZNK14btCapsuleShape9serializeEPvP12btSerializer(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+var __label__ = 0;
+	i7 = sp + -8;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp+2)];
+	r1 = r0 >> 2;
+	r2 = heap32[(r1)];
+	r2 = r2 >> 2;
+	r2 = heap32[(r2+10)];
+	r3 = heap32[(fp)];
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r3;
+	__FUNCTION_TABLE__[(r2)>>2](i7);
+	r2 = r_g0;
+	r4 = heap32[(r1)];
+	r4 = r4 >> 2;
+	r4 = heap32[(r4+7)];
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r2;
+	r5 = heap32[(fp+1)];
+	__FUNCTION_TABLE__[(r4)>>2](i7);
+	r4 = r_g0;
+	r5 = r5 >> 2;
+	heap32[(r5)] = r4;
+if(!(r4 ==0)) //_LBB423_2
+{
+	r1 = heap32[(r1)];
+	r1 = r1 >> 2;
+	r1 = heap32[(r1+12)];
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r2;
+	__FUNCTION_TABLE__[(r1)>>2](i7);
+}
+	r0 = r3 >> 2;
+	r1 = heap32[(r0+1)];
+	heap32[(r5+1)] = r1;
+	heap32[(r5+7)] = heap32[(r0+7)];
+	heap32[(r5+8)] = heap32[(r0+8)];
+	heap32[(r5+9)] = heap32[(r0+9)];
+	heap32[(r5+10)] = heap32[(r0+10)];
+	heap32[(r5+3)] = heap32[(r0+3)];
+	heap32[(r5+4)] = heap32[(r0+4)];
+	heap32[(r5+5)] = heap32[(r0+5)];
+	heap32[(r5+6)] = heap32[(r0+6)];
+	heap32[(r5+11)] = heap32[(r0+11)];
+	r0 = heap32[(r0+13)];
+	heap32[(r5+13)] = r0;
+	r0 = _2E_str6199;
+	r_g0 = r0;
+	return;
+}
+
+function _ZN14btCapsuleShape15setLocalScalingERK9btVector3(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var f0;
+	var f1;
+	var f2;
+	var f3;
+	var f4;
+	var f5;
+	var f6;
+	var f7;
+	var f8;
+	var f9;
+var __label__ = 0;
+	i7 = sp + -8;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = r0 >> 2;
+	r2 = heap32[(r1)];
+	r2 = r2 >> 2;
+	r2 = heap32[(r2+11)];
+	heap32[(g0)] = r0;
+	__FUNCTION_TABLE__[(r2)>>2](i7);
+	f0 = f_g0;
+	r2 = heap32[(r1)];
+	r2 = r2 >> 2;
+	r2 = heap32[(r2+11)];
+	heap32[(g0)] = r0;
+	__FUNCTION_TABLE__[(r2)>>2](i7);
+	f1 = f_g0;
+	r2 = heap32[(r1)];
+	r2 = r2 >> 2;
+	r2 = heap32[(r2+11)];
+	heap32[(g0)] = r0;
+	__FUNCTION_TABLE__[(r2)>>2](i7);
+	f2 = f_g0;
+	r0 = heap32[(fp+1)];
+	f3 = heapFloat[(r1+9)];
+	f4 = heapFloat[(r1+8)];
+	f5 = heapFloat[(r1+7)];
+	r0 = r0 >> 2;
+	f3 = f3+f0;
+	f6 = heapFloat[(r1+5)];
+	f4 = f4+f1;
+	f7 = heapFloat[(r1+4)];
+	f5 = f5+f2;
+	f8 = heapFloat[(r1+3)];
+	f9 = heapFloat[(r0+2)];
+	f3 = f3/f6;
+	f4 = f4/f7;
+	f5 = f5/f8;
+	f6 =                         0;
+	if(f9 <f6) //_LBB424_2
+{
+	f9 = -f9;
+}
+	f7 = heapFloat[(r0+1)];
+	if(f7 <f6) //_LBB424_5
+{
+	f7 = -f7;
+}
+	f8 = heapFloat[(r0)];
+	if(f8 <f6) //_LBB424_8
+{
+	f8 = -f8;
+}
+	heapFloat[(r1+3)] = f8;
+	heapFloat[(r1+4)] = f7;
+	heapFloat[(r1+5)] = f9;
+	f5 = f5*f8;
+	f4 = f4*f7;
+	f2 = f5-f2;
+	heap32[(r1+6)] = 0;
+	f3 = f3*f9;
+	f1 = f4-f1;
+	heapFloat[(r1+7)] = f2;
+	f0 = f3-f0;
+	heapFloat[(r1+8)] = f1;
+	heapFloat[(r1+9)] = f0;
+	heap32[(r1+10)] = 0;
+	return;
+}
+
+function _ZN14btCapsuleShapeD0Ev(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+var __label__ = 0;
+	i7 = sp + -8;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = _ZTV13btConvexShape;
+	r2 = r0 >> 2;
+	r1 = (r1 + 8)|0;
+	heap32[(r2)] = r1;
+if(!(r0 ==0)) //_LBB425_2
+{
+	r0 = gNumAlignedFree;
+	r0 = r0 >> 2;
+	r1 = heap32[(r0)];
+	r1 = (r1 + 1)|0;
+	heap32[(r0)] = r1;
+	r0 = heap32[(r2+-1)];
+	heap32[(g0)] = r0;
+	free(i7);
+}
+	return;
+}
+
+function _ZN14btCapsuleShapeD1Ev(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+var __label__ = 0;
+	i7 = sp + 0;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = _ZTV13btConvexShape;
+	r0 = r0 >> 2;
+	r1 = (r1 + 8)|0;
+	heap32[(r0)] = r1;
+	return;
+}
+
+function _ZNK14btCapsuleShape37localGetSupportingVertexWithoutMarginERK9btVector3(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+	var r6;
+	var f0;
+	var f1;
+	var f2;
+	var f3;
+	var f4;
+	var f5;
+	var f6;
+	var f7;
+	var f8;
+	var f9;
+	var f10;
+	var f11;
+var __label__ = 0;
+	i7 = sp + -40;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r0 = r0 >> 2;
+	heap32[(r0)] = 0;
+	heap32[(r0+1)] = 0;
+	r1 = heap32[(fp+2)];
+	heap32[(r0+2)] = 0;
+	r1 = r1 >> 2;
+	heap32[(r0+3)] = 0;
+	f0 = heapFloat[(r1)];
+	f1 = heapFloat[(r1+1)];
+	f2 = heapFloat[(r1+2)];
+	f3 = f0*f0;
+	f4 = f1*f1;
+	f3 = f3+f4;
+	f4 = f2*f2;
+	f3 = f3+f4;
+	r1 = heap32[(fp+1)];
+	f4 =   9.9999997473787516e-005;
+	if(f3 >=f4) //_LBB427_2
+{
+	heapFloat[(g0)] = f3;
+	f3 =                         1;
+	sqrtf(i7);
+	f3 = f3/f_g0;
+	f0 = f0*f3;
+	f1 = f1*f3;
+	f2 = f2*f3;
+}
+else{
+	f0 =                         1;
+	f1 =                         0;
+	f2 = f1;
+}
+	r2 = r1 >> 2;
+	r3 = heap32[(r2+13)];
+	r4 = (r3 + 2)|0;
+	r4 = (r4 % 3)|0;
+	r5 = (r1 + 28)|0;
+	r4 = r4 << 2;
+	r4 = (r5 + r4)|0;
+	r4 = r4 >> 2;
+	f3 = heapFloat[(r4)];
+	r4 = sp + -16;
+	heap32[(fp+-4)] = 0;
+	r6 = r4 >> 2;
+	r3 = r3 << 2;
+	heap32[(r6+1)] = 0;
+	r4 = (r4 + r3)|0;
+	r3 = (r5 + r3)|0;
+	heap32[(r6+2)] = 0;
+	r4 = r4 >> 2;
+	r3 = r3 >> 2;
+	heap32[(r6+3)] = 0;
+	heap32[(r4)] = heap32[(r3)];
+	r3 = heap32[(r2)];
+	r3 = r3 >> 2;
+	r3 = heap32[(r3+11)];
+	heap32[(g0)] = r1;
+	__FUNCTION_TABLE__[(r3)>>2](i7);
+	f5 = heapFloat[(r2+4)];
+	f6 = heapFloat[(r2+3)];
+	f7 = heapFloat[(r2+5)];
+	f5 = f1*f5;
+	f6 = f0*f6;
+	f7 = f2*f7;
+	f8 = heapFloat[(r6+1)];
+	f5 = f5*f3;
+	f9 = heapFloat[(fp+-4)];
+	f6 = f6*f3;
+	f10 = heapFloat[(r6+2)];
+	f7 = f7*f3;
+	f5 = f8+f5;
+	f8 = f1*f_g0;
+	f6 = f9+f6;
+	f9 = f0*f_g0;
+	f5 = f5-f8;
+	f6 = f6-f9;
+	f7 = f10+f7;
+	f4 = f2*f_g0;
+	f4 = f7-f4;
+	f7 = f0*f6;
+	f8 = f1*f5;
+	f7 = f7+f8;
+	f8 = f2*f4;
+	f7 = f7+f8;
+	f8 =       -999999984306749440;
+	if(f7 >f8) //_LBB427_5
+{
+	heapFloat[(r0)] = f6;
+	heapFloat[(r0+1)] = f5;
+	heapFloat[(r0+2)] = f4;
+	heap32[(r0+3)] = 0;
+	f8 = f7;
+}
+	r3 = sp + -32;
+	heap32[(fp+-8)] = 0;
+	r4 = r3 >> 2;
+	heap32[(r4+1)] = 0;
+	heap32[(r4+2)] = 0;
+	heap32[(r4+3)] = 0;
+	r5 = heap32[(r2+13)];
+	r5 = r5 << 2;
+	r6 = (r1 + r5)|0;
+	r6 = r6 >> 2;
+	f4 = heapFloat[(r6+7)];
+	r3 = (r3 + r5)|0;
+	r3 = r3 >> 2;
+	f4 = -f4;
+	heapFloat[(r3)] = f4;
+	r3 = heap32[(r2)];
+	r3 = r3 >> 2;
+	r3 = heap32[(r3+11)];
+	heap32[(g0)] = r1;
+	__FUNCTION_TABLE__[(r3)>>2](i7);
+	f5 = heapFloat[(r2+4)];
+	f6 = heapFloat[(r2+3)];
+	f7 = heapFloat[(r2+5)];
+	f5 = f1*f5;
+	f6 = f0*f6;
+	f7 = f2*f7;
+	f9 = heapFloat[(r4+1)];
+	f5 = f5*f3;
+	f10 = heapFloat[(fp+-8)];
+	f6 = f6*f3;
+	f11 = heapFloat[(r4+2)];
+	f3 = f7*f3;
+	f5 = f9+f5;
+	f7 = f1*f_g0;
+	f6 = f10+f6;
+	f9 = f0*f_g0;
+	f5 = f5-f7;
+	f6 = f6-f9;
+	f3 = f11+f3;
+	f4 = f2*f_g0;
+	f3 = f3-f4;
+	f0 = f0*f6;
+	f1 = f1*f5;
+	f0 = f0+f1;
+	f1 = f2*f3;
+	f0 = f0+f1;
+if(!(f0 <=f8)) //_LBB427_8
+{
+	heapFloat[(r0)] = f6;
+	heapFloat[(r0+1)] = f5;
+	heapFloat[(r0+2)] = f3;
+	heap32[(r0+3)] = 0;
+}
+	return;
+}
+
+function _ZNK16btCollisionShape28calculateSerializeBufferSizeEv(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+var __label__ = 0;
+	i7 = sp + 0;var g0 = i7>>2; // save stack
+	r0 = 12;
+	r_g0 = r0;
+	return;
+}
+
+function _ZNK16btCollisionShape27getContactBreakingThresholdEf(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var f0;
+	var f1;
+var __label__ = 0;
+	i7 = sp + -8;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = r0 >> 2;
+	r1 = heap32[(r1)];
+	r1 = r1 >> 2;
+	r1 = heap32[(r1+4)];
+	heap32[(g0)] = r0;
+	__FUNCTION_TABLE__[(r1)>>2](i7);
+	f1 = heapFloat[(fp+1)];
+	f0 = f_g0*f1;
+	f_g0 = f0;
+	return;
+}
+
+function _ZNK16btCollisionShape9serializeEPvP12btSerializer(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+var __label__ = 0;
+	i7 = sp + -8;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp+2)];
+	r1 = r0 >> 2;
+	r2 = heap32[(r1)];
+	r2 = r2 >> 2;
+	r2 = heap32[(r2+10)];
+	r3 = heap32[(fp)];
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r3;
+	__FUNCTION_TABLE__[(r2)>>2](i7);
+	r2 = r_g0;
+	r4 = heap32[(r1)];
+	r4 = r4 >> 2;
+	r4 = heap32[(r4+7)];
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r2;
+	r5 = heap32[(fp+1)];
+	__FUNCTION_TABLE__[(r4)>>2](i7);
+	r4 = r_g0;
+	r5 = r5 >> 2;
+	heap32[(r5)] = r4;
+if(!(r4 ==0)) //_LBB430_2
+{
+	r1 = heap32[(r1)];
+	r1 = r1 >> 2;
+	r1 = heap32[(r1+12)];
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r2;
+	__FUNCTION_TABLE__[(r1)>>2](i7);
+}
+	r0 = r3 >> 2;
+	r0 = heap32[(r0+1)];
+	heap32[(r5+1)] = r0;
+	r0 = _2E_str200;
+	r_g0 = r0;
+	return;
+}
+
+function _ZNK16btCollisionShape20serializeSingleShapeEP12btSerializer(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+var __label__ = 0;
+	i7 = sp + -24;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = r0 >> 2;
+	r2 = heap32[(r1)];
+	r2 = r2 >> 2;
+	r2 = heap32[(r2+12)];
+	heap32[(g0)] = r0;
+	r3 = heap32[(fp+1)];
+	__FUNCTION_TABLE__[(r2)>>2](i7);
+	r4 = r3 >> 2;
+	r5 = heap32[(r4)];
+	r5 = r5 >> 2;
+	r5 = heap32[(r5+4)];
+	heap32[(g0)] = r3;
+	heap32[(g0+1)] = r_g0;
+	heap32[(g0+2)] = 1;
+	__FUNCTION_TABLE__[(r5)>>2](i7);
+	r2 = r_g0;
+	r1 = heap32[(r1)];
+	r1 = r1 >> 2;
+	r5 = r2 >> 2;
+	r1 = heap32[(r1+13)];
+	r5 = heap32[(r5+2)];
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r5;
+	heap32[(g0+2)] = r3;
+	__FUNCTION_TABLE__[(r1)>>2](i7);
+	r4 = heap32[(r4)];
+	r4 = r4 >> 2;
+	r4 = heap32[(r4+5)];
+	heap32[(g0)] = r3;
+	heap32[(g0+1)] = r2;
+	heap32[(g0+2)] = r_g0;
+	heap32[(g0+3)] = 1346455635;
+	heap32[(g0+4)] = r0;
+	__FUNCTION_TABLE__[(r4)>>2](i7);
+	return;
+}
+
+function _ZNK16btCollisionShape17getBoundingSphereER9btVector3Rf(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var f0;
+	var f1;
+	var f2;
+	var f3;
+	var f4;
+	var f5;
+var __label__ = 0;
+	i7 = sp + -112;var g0 = i7>>2; // save stack
+	r0 = sp + -64;
+	r1 = r0 >> 2;
+	heap32[(fp+-16)] = 1065353216;
+	heap32[(r1+1)] = 0;
+	heap32[(r1+2)] = 0;
+	heap32[(r1+3)] = 0;
+	heap32[(r1+4)] = 0;
+	heap32[(r1+5)] = 1065353216;
+	heap32[(r1+6)] = 0;
+	heap32[(r1+7)] = 0;
+	heap32[(r1+8)] = 0;
+	heap32[(r1+9)] = 0;
+	heap32[(r1+10)] = 1065353216;
+	heap32[(r1+11)] = 0;
+	heap32[(r1+12)] = 0;
+	heap32[(r1+13)] = 0;
+	r2 = heap32[(fp)];
+	heap32[(r1+14)] = 0;
+	r3 = r2 >> 2;
+	heap32[(r1+15)] = 0;
+	r1 = heap32[(r3)];
+	r1 = r1 >> 2;
+	r1 = heap32[(r1+2)];
+	r3 = sp + -96;
+	r4 = sp + -80;
+	heap32[(g0)] = r2;
+	heap32[(g0+1)] = r0;
+	heap32[(g0+2)] = r4;
+	heap32[(g0+3)] = r3;
+	__FUNCTION_TABLE__[(r1)>>2](i7);
+	r0 = r3 >> 2;
+	r1 = r4 >> 2;
+	f0 = heapFloat[(r0+1)];
+	f1 = heapFloat[(r1+1)];
+	f2 = heapFloat[(fp+-24)];
+	f3 = heapFloat[(fp+-20)];
+	f2 = f2-f3;
+	f0 = f0-f1;
+	f1 = heapFloat[(r0+2)];
+	f3 = heapFloat[(r1+2)];
+	f1 = f1-f3;
+	f2 = f2*f2;
+	f0 = f0*f0;
+	f0 = f2+f0;
+	f1 = f1*f1;
+	f0 = f0+f1;
+	heapFloat[(g0)] = f0;
+	r2 = heap32[(fp+2)];
+	f0 =                       0.5;
+	sqrtf(i7);
+	r2 = r2 >> 2;
+	f1 = f_g0*f0;
+	heapFloat[(r2)] = f1;
+	f1 = heapFloat[(fp+-20)];
+	f2 = heapFloat[(fp+-24)];
+	r2 = heap32[(fp+1)];
+	f1 = f1+f2;
+	f2 = heapFloat[(r1+2)];
+	f3 = heapFloat[(r0+2)];
+	f4 = heapFloat[(r1+1)];
+	f5 = heapFloat[(r0+1)];
+	f4 = f4+f5;
+	r0 = r2 >> 2;
+	f1 = f1*f0;
+	f2 = f2+f3;
+	f3 = f4*f0;
+	heapFloat[(r0)] = f1;
+	f0 = f2*f0;
+	heapFloat[(r0+1)] = f3;
+	heapFloat[(r0+2)] = f0;
+	heap32[(r0+3)] = 0;
+	return;
+}
+
+function _ZNK16btCollisionShape20getAngularMotionDiscEv(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var f0;
+	var f1;
+	var f2;
+var __label__ = 0;
+	i7 = sp + -40;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = r0 >> 2;
+	r1 = heap32[(r1)];
+	r1 = r1 >> 2;
+	r1 = heap32[(r1+3)];
+	r2 = sp + -16;
+	r3 = sp + -20;
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r2;
+	heap32[(g0+2)] = r3;
+	__FUNCTION_TABLE__[(r1)>>2](i7);
+	r0 = r2 >> 2;
+	f0 = heapFloat[(fp+-4)];
+	f1 = heapFloat[(r0+1)];
+	f2 = heapFloat[(r0+2)];
+	f0 = f0*f0;
+	f1 = f1*f1;
+	f0 = f0+f1;
+	f1 = f2*f2;
+	f0 = f0+f1;
+	heapFloat[(g0)] = f0;
+	sqrtf(i7);
+	f1 = heapFloat[(fp+-5)];
+	f0 = f_g0+f1;
+	f_g0 = f0;
+	return;
+}
+
+function _ZNK16btCollisionShape21calculateTemporalAabbERK11btTransformRK9btVector3S5_fRS3_S6_(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+	var f0;
+	var f1;
+	var f2;
+	var f3;
+	var f4;
+	var f5;
+	var f6;
+	var f7;
+	var f8;
+	var f9;
+var __label__ = 0;
+	i7 = sp + -16;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = r0 >> 2;
+	r2 = heap32[(r1)];
+	r2 = r2 >> 2;
+	r2 = heap32[(r2+2)];
+	r3 = heap32[(fp+5)];
+	r4 = heap32[(fp+4)];
+	r5 = heap32[(fp+1)];
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r5;
+	heap32[(g0+2)] = r4;
+	heap32[(g0+3)] = r3;
+	r5 = heap32[(fp+2)];
+	__FUNCTION_TABLE__[(r2)>>2](i7);
+	r2 = r3 >> 2;
+	r3 = r4 >> 2;
+	r4 = r5 >> 2;
+	f0 = heapFloat[(r4)];
+	r5 = heap32[(fp+3)];
+	f1 = heapFloat[(r2)];
+	f2 = heapFloat[(r2+1)];
+	f3 = heapFloat[(r2+2)];
+	f4 = heapFloat[(r3)];
+	f5 = heapFloat[(r3+1)];
+	f6 = heapFloat[(r3+2)];
+	f7 = heapFloat[(r4+2)];
+	f8 = heapFloat[(r4+1)];
+	f9 =                         0;
+	if(f0 <=f9) //_LBB434_2
+{
+	f4 = f0+f4;
+}
+else{
+	f1 = f0+f1;
+}
+	if(f8 <=f9) //_LBB434_5
+{
+	f5 = f8+f5;
+}
+else{
+	f2 = f8+f2;
+}
+	if(f7 <=f9) //_LBB434_8
+{
+	f6 = f7+f6;
+}
+else{
+	f3 = f7+f3;
+}
+	r4 = r5 >> 2;
+	f0 = heapFloat[(r4)];
+	f7 = heapFloat[(r4+1)];
+	f8 = heapFloat[(r4+2)];
+	f0 = f0*f0;
+	f7 = f7*f7;
+	f0 = f0+f7;
+	f7 = f8*f8;
+	f0 = f0+f7;
+	heapFloat[(g0)] = f0;
+	sqrtf(i7);
+	f0 = f_g0;
+	r1 = heap32[(r1)];
+	r1 = r1 >> 2;
+	r1 = heap32[(r1+4)];
+	heap32[(g0)] = r0;
+	__FUNCTION_TABLE__[(r1)>>2](i7);
+	heapFloat[(r3)] = f4;
+	heapFloat[(r3+1)] = f5;
+	heapFloat[(r3+2)] = f6;
+	heap32[(r3+3)] = 0;
+	heapFloat[(r2)] = f1;
+	heapFloat[(r2+1)] = f2;
+	heapFloat[(r2+2)] = f3;
+	heap32[(r2+3)] = 0;
+	f0 = f0*f_g0;
+	f1 = heapFloat[(r3)];
+	f1 = f1-f0;
+	heapFloat[(r3)] = f1;
+	f1 = heapFloat[(r3+1)];
+	f1 = f1-f0;
+	heapFloat[(r3+1)] = f1;
+	f1 = heapFloat[(r3+2)];
+	f1 = f1-f0;
+	heapFloat[(r3+2)] = f1;
+	f1 = heapFloat[(r2)];
+	f1 = f1+f0;
+	heapFloat[(r2)] = f1;
+	f1 = heapFloat[(r2+1)];
+	f1 = f1+f0;
+	heapFloat[(r2+1)] = f1;
+	f1 = heapFloat[(r2+2)];
+	f0 = f1+f0;
+	heapFloat[(r2+2)] = f0;
+	return;
+}
+
+function _ZN14btConcaveShapeD1Ev(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+var __label__ = 0;
+	i7 = sp + 0;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = _ZTV14btConcaveShape;
+	r0 = r0 >> 2;
+	r1 = (r1 + 8)|0;
+	heap32[(r0)] = r1;
+	return;
+}
+
+function _ZN14btConcaveShapeD0Ev(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+var __label__ = 0;
+	i7 = sp + -8;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = _ZTV14btConcaveShape;
+	r2 = r0 >> 2;
+	r1 = (r1 + 8)|0;
+	heap32[(r2)] = r1;
+	heap32[(g0)] = r0;
+	_ZdlPv(i7);
+	return;
+}
+
+function _ZNK17btConvexHullShape7getNameEv(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+var __label__ = 0;
+	i7 = sp + 0;var g0 = i7>>2; // save stack
+	r0 = _2E_str219;
+	r_g0 = r0;
+	return;
+}
+
+function _ZNK17btConvexHullShape28calculateSerializeBufferSizeEv(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+var __label__ = 0;
+	i7 = sp + 0;var g0 = i7>>2; // save stack
+	r0 = 68;
+	r_g0 = r0;
+	return;
+}
+
+function _ZNK17btConvexHullShape12getNumPlanesEv(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+var __label__ = 0;
+	i7 = sp + 0;var g0 = i7>>2; // save stack
+	r0 = 0;
+	r_g0 = r0;
+	return;
+}
+
+function _ZNK17btConvexHullShape9getVertexEiR9btVector3(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var f0;
+	var f1;
+	var f2;
+	var f3;
+	var f4;
+	var f5;
+var __label__ = 0;
+	i7 = sp + 0;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r0 = r0 >> 2;
+	r1 = heap32[(fp+1)];
+	r2 = heap32[(r0+25)];
+	r1 = r1 << 4;
+	r1 = (r2 + r1)|0;
+	r1 = r1 >> 2;
+	r2 = heap32[(fp+2)];
+	f0 = heapFloat[(r1+2)];
+	f1 = heapFloat[(r0+5)];
+	f2 = heapFloat[(r1+1)];
+	f3 = heapFloat[(r0+4)];
+	f4 = heapFloat[(r1)];
+	f5 = heapFloat[(r0+3)];
+	r0 = r2 >> 2;
+	f4 = f4*f5;
+	f2 = f2*f3;
+	heapFloat[(r0)] = f4;
+	f0 = f0*f1;
+	heapFloat[(r0+1)] = f2;
+	heapFloat[(r0+2)] = f0;
+	heap32[(r0+3)] = 0;
+	return;
+}
+
+function _ZNK17btConvexHullShape7getEdgeEiR9btVector3S1_(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var f0;
+	var f1;
+	var f2;
+	var f3;
+	var f4;
+	var f5;
+var __label__ = 0;
+	i7 = sp + 0;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r0 = r0 >> 2;
+	r1 = heap32[(fp+1)];
+	r2 = heap32[(r0+23)];
+	r3 = (r1 % r2)|0;
+	r4 = heap32[(r0+25)];
+	r3 = r3 << 4;
+	r3 = (r4 + r3)|0;
+	r3 = r3 >> 2;
+	r4 = heap32[(fp+2)];
+	f0 = heapFloat[(r3+2)];
+	f1 = heapFloat[(r0+5)];
+	f2 = heapFloat[(r3+1)];
+	f3 = heapFloat[(r0+4)];
+	f4 = heapFloat[(r3)];
+	f5 = heapFloat[(r0+3)];
+	r3 = r4 >> 2;
+	f4 = f4*f5;
+	f2 = f2*f3;
+	heapFloat[(r3)] = f4;
+	f0 = f0*f1;
+	heapFloat[(r3+1)] = f2;
+	r1 = (r1 + 1)|0;
+	heapFloat[(r3+2)] = f0;
+	heap32[(r3+3)] = 0;
+	r1 = (r1 % r2)|0;
+	r2 = heap32[(r0+25)];
+	r1 = r1 << 4;
+	r1 = (r2 + r1)|0;
+	r1 = r1 >> 2;
+	r2 = heap32[(fp+3)];
+	f0 = heapFloat[(r1+2)];
+	f1 = heapFloat[(r0+5)];
+	f2 = heapFloat[(r1+1)];
+	f3 = heapFloat[(r0+4)];
+	f4 = heapFloat[(r1)];
+	f5 = heapFloat[(r0+3)];
+	r0 = r2 >> 2;
+	f4 = f4*f5;
+	f2 = f2*f3;
+	heapFloat[(r0)] = f4;
+	f0 = f0*f1;
+	heapFloat[(r0+1)] = f2;
+	heapFloat[(r0+2)] = f0;
+	heap32[(r0+3)] = 0;
+	return;
+}
+
+function _ZNK17btConvexHullShape11getNumEdgesEv(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+var __label__ = 0;
+	i7 = sp + 0;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r0 = r0 >> 2;
+	r0 = heap32[(r0+23)];
+	r_g0 = r0;
+	return;
+}
+
+function _ZNK17btConvexHullShape14getNumVerticesEv(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+var __label__ = 0;
+	i7 = sp + 0;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r0 = r0 >> 2;
+	r0 = heap32[(r0+23)];
+	r_g0 = r0;
+	return;
+}
+
+function _ZNK17btConvexHullShape49batchedUnitVectorGetSupportingVertexWithoutMarginEPK9btVector3PS0_i(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+	var r6;
+	var r7;
+	var r8;
+	var f0;
+	var f1;
+	var f2;
+	var f3;
+	var f4;
+	var f5;
+var __label__ = 0;
+	i7 = sp + 0;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp+3)];
+	r1 = heap32[(fp+2)];
+if(!(r0 <1)) //_LBB444_3
+{
+	r2 = (r1 + 12)|0;
+	r3 = r0;
+_3: while(true){
+	r3 = (r3 + -1)|0;
+	r4 = (r2 + 16)|0;
+	r2 = r2 >> 2;
+	heap32[(r2)] = -581039253;
+	r2 = r4;
+	if(r3 !=0) //_LBB444_2
+{
+continue _3;
+}
+else{
+break _3;
+}
+}
+}
+	r2 = heap32[(fp)];
+	r2 = r2 >> 2;
+	r3 = heap32[(r2+23)];
+_6: do {
+if(!(r3 <1)) //_LBB444_11
+{
+	r3 = heap32[(fp+1)];
+	r1 = (r1 + 8)|0;
+	r3 = (r3 + 8)|0;
+	r4 = 0;
+_8: while(true){
+if(!(r0 <1)) //_LBB444_10
+{
+	r5 = heap32[(r2+25)];
+	r6 = r4 << 4;
+	r5 = (r5 + r6)|0;
+	r5 = r5 >> 2;
+	f0 = heapFloat[(r5+2)];
+	f1 = heapFloat[(r2+5)];
+	f2 = heapFloat[(r5+1)];
+	f3 = heapFloat[(r2+4)];
+	f4 = heapFloat[(r5)];
+	f5 = heapFloat[(r2+3)];
+	f0 = f0*f1;
+	f1 = f2*f3;
+	f2 = f4*f5;
+	r5 = r3;
+	r6 = r1;
+	r7 = r0;
+_12: while(true){
+	r8 = r5 >> 2;
+	f3 = heapFloat[(r8+-2)];
+	f4 = heapFloat[(r8+-1)];
+	f3 = f3*f2;
+	f4 = f4*f1;
+	f5 = heapFloat[(r8)];
+	f3 = f3+f4;
+	f4 = f5*f0;
+	r8 = r6 >> 2;
+	f3 = f3+f4;
+	f4 = heapFloat[(r8+1)];
+if(!(f4 >=f3)) //_LBB444_9
+{
+	heapFloat[(r8+-2)] = f2;
+	heapFloat[(r8+-1)] = f1;
+	heapFloat[(r8)] = f0;
+	heapFloat[(r8+1)] = f3;
+}
+	r7 = (r7 + -1)|0;
+	r6 = (r6 + 16)|0;
+	r5 = (r5 + 16)|0;
+if(!(r7 !=0)) //_LBB444_7
+{
+break _12;
+}
+}
+}
+	r4 = (r4 + 1)|0;
+	r5 = heap32[(r2+23)];
+	if(r5 >r4) //_LBB444_5
+{
+continue _8;
+}
+else{
+break _6;
+}
+}
+}
+} while(0);
+	return;
+}
+
+function _ZNK17btConvexHullShape37localGetSupportingVertexWithoutMarginERK9btVector3(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var f0;
+	var f1;
+	var f2;
+	var f3;
+	var f4;
+	var f5;
+	var f6;
+	var f7;
+	var f8;
+	var f9;
+	var f10;
+	var f11;
+var __label__ = 0;
+	i7 = sp + 0;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r0 = r0 >> 2;
+	heap32[(r0)] = 0;
+	heap32[(r0+1)] = 0;
+	r1 = heap32[(fp+1)];
+	heap32[(r0+2)] = 0;
+	r1 = r1 >> 2;
+	heap32[(r0+3)] = 0;
+	r2 = heap32[(r1+23)];
+if(!(r2 <1)) //_LBB445_6
+{
+	r3 = heap32[(fp+2)];
+	r3 = r3 >> 2;
+	r4 = heap32[(r1+25)];
+	f0 = heapFloat[(r1+5)];
+	f1 = heapFloat[(r1+4)];
+	f2 = heapFloat[(r1+3)];
+	f3 = heapFloat[(r3)];
+	f4 = heapFloat[(r3+1)];
+	f5 = heapFloat[(r3+2)];
+	r1 = 0;
+	f6 =       -999999984306749440;
+_3: while(true){
+	r3 = r1 << 4;
+	r3 = (r4 + r3)|0;
+	r3 = r3 >> 2;
+	f7 = heapFloat[(r3+1)];
+	f8 = heapFloat[(r3)];
+	f7 = f7*f1;
+	f8 = f8*f2;
+	f9 = heapFloat[(r3+2)];
+	f9 = f9*f0;
+	f10 = f3*f8;
+	f11 = f4*f7;
+	f10 = f10+f11;
+	f11 = f5*f9;
+	f10 = f10+f11;
+	if(f10 >f6) //_LBB445_4
+{
+	heapFloat[(r0)] = f8;
+	heapFloat[(r0+1)] = f7;
+	heapFloat[(r0+2)] = f9;
+	heap32[(r0+3)] = 0;
+	f6 = f10;
+}
+	r1 = (r1 + 1)|0;
+	if(r1 <r2) //_LBB445_2
+{
+continue _3;
+}
+else{
+break _3;
+}
+}
+}
+	return;
+}
+
+function _ZNK17btConvexHullShape8isInsideERK9btVector3f(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+var __label__ = 0;
+	i7 = sp + -16;var g0 = i7>>2; // save stack
+	r0 = _2E_str10;
+	r1 = _2E_str3222;
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r1;
+	heap32[(g0+2)] = 173;
+	_assert(i7);
+}
+
+function _ZNK17btConvexHullShape8getPlaneER9btVector3S1_i(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+var __label__ = 0;
+	i7 = sp + -16;var g0 = i7>>2; // save stack
+	r0 = _2E_str10;
+	r1 = _2E_str3222;
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r1;
+	heap32[(g0+2)] = 167;
+	_assert(i7);
+}
+
+function _ZN17btConvexHullShapeD0Ev(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+var __label__ = 0;
+	i7 = sp + -8;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = _ZTV17btConvexHullShape;
+	r2 = r0 >> 2;
+	r1 = (r1 + 8)|0;
+	heap32[(r2)] = r1;
+	r1 = heap32[(r2+25)];
+if(!(r1 ==0)) //_LBB448_4
+{
+	r3 = heapU8[r0+104];
+if(!(r3 ==0)) //_LBB448_3
+{
+	r3 = gNumAlignedFree;
+	r3 = r3 >> 2;
+	r4 = heap32[(r3)];
+	r4 = (r4 + 1)|0;
+	r1 = r1 >> 2;
+	heap32[(r3)] = r4;
+	r1 = heap32[(r1+-1)];
+	heap32[(g0)] = r1;
+	free(i7);
+}
+	heap32[(r2+25)] = 0;
+}
+	r1 = 1;
+	heap8[r0+104] = r1;
+	heap32[(r2+25)] = 0;
+	r1 = _ZTV13btConvexShape;
+	heap32[(r2+23)] = 0;
+	r1 = (r1 + 8)|0;
+	heap32[(r2+24)] = 0;
+	heap32[(r2)] = r1;
+if(!(r0 ==0)) //_LBB448_6
+{
+	r0 = gNumAlignedFree;
+	r0 = r0 >> 2;
+	r1 = heap32[(r0)];
+	r1 = (r1 + 1)|0;
+	heap32[(r0)] = r1;
+	r0 = heap32[(r2+-1)];
+	heap32[(g0)] = r0;
+	free(i7);
+}
+	return;
+}
+
+function _ZN17btConvexHullShapeD1Ev(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+var __label__ = 0;
+	i7 = sp + -8;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = _ZTV17btConvexHullShape;
+	r2 = r0 >> 2;
+	r1 = (r1 + 8)|0;
+	heap32[(r2)] = r1;
+	r1 = heap32[(r2+25)];
+if(!(r1 ==0)) //_LBB449_4
+{
+	r3 = heapU8[r0+104];
+if(!(r3 ==0)) //_LBB449_3
+{
+	r3 = gNumAlignedFree;
+	r3 = r3 >> 2;
+	r4 = heap32[(r3)];
+	r4 = (r4 + 1)|0;
+	r1 = r1 >> 2;
+	heap32[(r3)] = r4;
+	r1 = heap32[(r1+-1)];
+	heap32[(g0)] = r1;
+	free(i7);
+}
+	heap32[(r2+25)] = 0;
+}
+	r1 = 1;
+	heap8[r0+104] = r1;
+	heap32[(r2+25)] = 0;
+	r0 = _ZTV13btConvexShape;
+	heap32[(r2+23)] = 0;
+	r0 = (r0 + 8)|0;
+	heap32[(r2+24)] = 0;
+	heap32[(r2)] = r0;
+	return;
+}
+
+function _ZN17btConvexHullShape15setLocalScalingERK9btVector3(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+var __label__ = 0;
+	i7 = sp + -8;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = heap32[(fp+1)];
+	r2 = r0 >> 2;
+	r1 = r1 >> 2;
+	heap32[(r2+3)] = heap32[(r1)];
+	heap32[(r2+4)] = heap32[(r1+1)];
+	heap32[(r2+5)] = heap32[(r1+2)];
+	heap32[(r2+6)] = heap32[(r1+3)];
+	heap32[(g0)] = r0;
+	_ZN34btPolyhedralConvexAabbCachingShape15recalcLocalAabbEv(i7);
+	return;
+}
+
+function _ZNK17btConvexHullShape9serializeEPvP12btSerializer(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+	var r6;
+	var r7;
+	var r8;
+	var r9;
+var __label__ = 0;
+	i7 = sp + -24;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp+2)];
+	r1 = r0 >> 2;
+	r2 = heap32[(r1)];
+	r2 = r2 >> 2;
+	r2 = heap32[(r2+10)];
+	r3 = heap32[(fp)];
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r3;
+	__FUNCTION_TABLE__[(r2)>>2](i7);
+	r2 = r_g0;
+	r4 = heap32[(r1)];
+	r4 = r4 >> 2;
+	r4 = heap32[(r4+7)];
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r2;
+	r5 = heap32[(fp+1)];
+	__FUNCTION_TABLE__[(r4)>>2](i7);
+	r4 = r_g0;
+	r5 = r5 >> 2;
+	heap32[(r5)] = r4;
+if(!(r4 ==0)) //_LBB451_2
+{
+	r4 = heap32[(r1)];
+	r4 = r4 >> 2;
+	r4 = heap32[(r4+12)];
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r2;
+	__FUNCTION_TABLE__[(r4)>>2](i7);
+}
+	r2 = r3 >> 2;
+	r3 = heap32[(r2+1)];
+	heap32[(r5+1)] = r3;
+	heap32[(r5+7)] = heap32[(r2+7)];
+	heap32[(r5+8)] = heap32[(r2+8)];
+	heap32[(r5+9)] = heap32[(r2+9)];
+	heap32[(r5+10)] = heap32[(r2+10)];
+	heap32[(r5+3)] = heap32[(r2+3)];
+	heap32[(r5+4)] = heap32[(r2+4)];
+	heap32[(r5+5)] = heap32[(r2+5)];
+	heap32[(r5+6)] = heap32[(r2+6)];
+	heap32[(r5+11)] = heap32[(r2+11)];
+	r3 = heap32[(r2+23)];
+	heap32[(r5+15)] = r3;
+	if(r3 ==0) //_LBB451_7
+{
+	heap32[(r5+13)] = 0;
+	heap32[(r5+14)] = 0;
+	r0 = _2E_str6224;
+	r_g0 = r0;
+	return;
+}
+else{
+	r4 = heap32[(r1)];
+	r4 = r4 >> 2;
+	r4 = heap32[(r4+7)];
+	r6 = heap32[(r2+25)];
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r6;
+	__FUNCTION_TABLE__[(r4)>>2](i7);
+	heap32[(r5+13)] = r_g0;
+	heap32[(r5+14)] = 0;
+	r5 = heap32[(r1)];
+	r5 = r5 >> 2;
+	r5 = heap32[(r5+4)];
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = 16;
+	heap32[(g0+2)] = r3;
+	__FUNCTION_TABLE__[(r5)>>2](i7);
+	r5 = r_g0;
+if(!(r3 <1)) //_LBB451_6
+{
+	r4 = r5 >> 2;
+	r4 = heap32[(r4+2)];
+	r6 = 0;
+_9: while(true){
+	r7 = r6 << 4;
+	r8 = heap32[(r2+25)];
+	r9 = (r4 + r7)|0;
+	r7 = (r8 + r7)|0;
+	r8 = r9 >> 2;
+	r7 = r7 >> 2;
+	heap32[(r8)] = heap32[(r7)];
+	heap32[(r8+1)] = heap32[(r7+1)];
+	r6 = (r6 + 1)|0;
+	heap32[(r8+2)] = heap32[(r7+2)];
+	heap32[(r8+3)] = heap32[(r7+3)];
+if(!(r3 !=r6)) //_LBB451_5
+{
+break _9;
+}
+}
+}
+	r1 = heap32[(r1)];
+	r1 = r1 >> 2;
+	r1 = heap32[(r1+5)];
+	r2 = heap32[(r2+25)];
+	r3 = _2E_str5223;
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r5;
+	heap32[(g0+2)] = r3;
+	heap32[(g0+3)] = 1497453121;
+	heap32[(g0+4)] = r2;
+	__FUNCTION_TABLE__[(r1)>>2](i7);
+	r5 = _2E_str6224;
+	r_g0 = r5;
+	return;
+}
+}
+
+function _ZNK17btConvexHullShape24localGetSupportingVertexERK9btVector3(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var f0;
+	var f1;
+	var f2;
+	var f3;
+	var f4;
+	var f5;
+var __label__ = 0;
+	i7 = sp + -16;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp+1)];
+	r1 = r0 >> 2;
+	r2 = heap32[(r1)];
+	r2 = r2 >> 2;
+	r2 = heap32[(r2+16)];
+	r3 = heap32[(fp)];
+	r4 = heap32[(fp+2)];
+	heap32[(g0)] = r3;
+	heap32[(g0+1)] = r0;
+	heap32[(g0+2)] = r4;
+	__FUNCTION_TABLE__[(r2)>>2](i7);
+	r2 = heap32[(r1)];
+	r2 = r2 >> 2;
+	r2 = heap32[(r2+11)];
+	heap32[(g0)] = r0;
+	__FUNCTION_TABLE__[(r2)>>2](i7);
+	f0 = f_g0;
+	f1 =                         0;
+if(!(f0 ==f1)) //_LBB452_2
+{
+	r2 = r4 >> 2;
+	f0 = heapFloat[(r2)];
+	f1 = heapFloat[(r2+1)];
+	f2 = heapFloat[(r2+2)];
+	f3 = f0*f0;
+	f4 = f1*f1;
+	f3 = f3+f4;
+	f4 = f2*f2;
+	f3 = f3+f4;
+	f4 =   1.4210854715202004e-014;
+	f5 =                        -1;
+	f0 = f3 < f4 ? f5 : f0;
+	f1 = f3 < f4 ? f5 : f1;
+	f2 = f3 < f4 ? f5 : f2;
+	f3 = f0*f0;
+	f4 = f1*f1;
+	f3 = f3+f4;
+	f4 = f2*f2;
+	f3 = f3+f4;
+	heapFloat[(g0)] = f3;
+	sqrtf(i7);
+	r1 = heap32[(r1)];
+	r1 = r1 >> 2;
+	r1 = heap32[(r1+11)];
+	f4 =                         1;
+	f3 = f4/f_g0;
+	heap32[(g0)] = r0;
+	r0 = r3 >> 2;
+	__FUNCTION_TABLE__[(r1)>>2](i7);
+	f0 = f0*f3;
+	f0 = f0*f_g0;
+	f5 = heapFloat[(r0)];
+	f0 = f5+f0;
+	f1 = f1*f3;
+	heapFloat[(r0)] = f0;
+	f0 = f1*f_g0;
+	f1 = heapFloat[(r0+1)];
+	f0 = f1+f0;
+	f1 = f2*f3;
+	heapFloat[(r0+1)] = f0;
+	f0 = f1*f_g0;
+	f1 = heapFloat[(r0+2)];
+	f0 = f1+f0;
+	heapFloat[(r0+2)] = f0;
+}
+	return;
+}
+
+function _ZN17btConvexHullShape8addPointERK9btVector3(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+	var r6;
+	var r7;
+	var r8;
+	var r9;
+	var r10;
+	var r11;
+var __label__ = 0;
+	i7 = sp + -8;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = r0 >> 2;
+	r2 = heap32[(r1+24)];
+	r3 = heap32[(r1+23)];
+	r4 = heap32[(fp+1)];
+	if(r2 ==r3) //_LBB453_2
+{
+	r5 = 1;
+	r6 = r3 << 1;
+	r6 = r3 == 0 ? r5 : r6;
+if(!(r2 >=r6)) //_LBB453_1
+{
+	if(r6 !=0) //_LBB453_5
+{
+	r2 = gNumAlignedAllocs;
+	r2 = r2 >> 2;
+	r7 = heap32[(r2)];
+	r8 = r6 << 4;
+	r7 = (r7 + 1)|0;
+	r8 = r8 | 3;
+	heap32[(r2)] = r7;
+	r2 = (r8 + 16)|0;
+	heap32[(g0)] = r2;
+	malloc(i7);
+	r2 = r_g0;
+	if(r2 !=0) //_LBB453_7
+{
+	r7 = 0;
+	r8 = (r2 + 4)|0;
+	r7 = (r7 - r8)|0;
+	r7 = r7 & 15;
+	r7 = (r2 + r7)|0;
+	r8 = (r7 + 4)|0;
+	r7 = r7 >> 2;
+	heap32[(r7)] = r2;
+	r2 = r8;
+}
+}
+else{
+	r2 = 0;
+}
+	r7 = (r0 + 100)|0;
+	if(r3 <1) //_LBB453_10
+{
+	r8 = r7 >> 2;
+	r9 = heap32[(r8)];
+}
+else{
+	r8 = 0;
+_12: while(true){
+	r9 = r7 >> 2;
+	r9 = heap32[(r9)];
+	r10 = r8 << 4;
+	r11 = (r2 + r10)|0;
+	r10 = (r9 + r10)|0;
+	r11 = r11 >> 2;
+	r10 = r10 >> 2;
+	heap32[(r11)] = heap32[(r10)];
+	heap32[(r11+1)] = heap32[(r10+1)];
+	r8 = (r8 + 1)|0;
+	heap32[(r11+2)] = heap32[(r10+2)];
+	heap32[(r11+3)] = heap32[(r10+3)];
+if(!(r3 !=r8)) //_LBB453_11
+{
+break _12;
+}
+}
+	r7 = (r0 + 100)|0;
+}
+	if(r9 !=0) //_LBB453_15
+{
+	r8 = heapU8[r0+104];
+	if(r8 !=0) //_LBB453_17
+{
+	r3 = gNumAlignedFree;
+	r3 = r3 >> 2;
+	r8 = heap32[(r3)];
+	r8 = (r8 + 1)|0;
+	r9 = r9 >> 2;
+	heap32[(r3)] = r8;
+	r3 = heap32[(r9+-1)];
+	heap32[(g0)] = r3;
+	free(i7);
+	r3 = heap32[(r1+23)];
+}
+	r8 = r7 >> 2;
+	heap32[(r8)] = 0;
+}
+	r7 = r7 >> 2;
+	heap8[r0+104] = r5;
+	heap32[(r7)] = r2;
+	heap32[(r1+24)] = r6;
+}
+}
+	r2 = r3 << 4;
+	r3 = heap32[(r1+25)];
+	r2 = (r3 + r2)|0;
+	r2 = r2 >> 2;
+	r3 = r4 >> 2;
+	heap32[(r2)] = heap32[(r3)];
+	heap32[(r2+1)] = heap32[(r3+1)];
+	heap32[(r2+2)] = heap32[(r3+2)];
+	heap32[(r2+3)] = heap32[(r3+3)];
+	r2 = heap32[(r1+23)];
+	r2 = (r2 + 1)|0;
+	heap32[(r1+23)] = r2;
+	heap32[(g0)] = r0;
+	_ZN34btPolyhedralConvexAabbCachingShape15recalcLocalAabbEv(i7);
+	return;
+}
+
+function _ZN20btAlignedObjectArrayI9btVector3E6resizeEiRKS0_(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+	var r6;
+	var r7;
+	var r8;
+	var r9;
+var __label__ = 0;
+	i7 = sp + -8;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = r0 >> 2;
+	r2 = heap32[(r1+1)];
+	r3 = heap32[(fp+1)];
+_1: do {
+if(!(r2 >r3)) //_LBB454_20
+{
+if(!(r2 >=r3)) //_LBB454_20
+{
+	r4 = heap32[(r1+2)];
+if(!(r4 >=r3)) //_LBB454_18
+{
+	if(r3 !=0) //_LBB454_5
+{
+	r4 = gNumAlignedAllocs;
+	r4 = r4 >> 2;
+	r5 = heap32[(r4)];
+	r6 = r3 << 4;
+	r5 = (r5 + 1)|0;
+	r6 = r6 | 3;
+	heap32[(r4)] = r5;
+	r4 = (r6 + 16)|0;
+	heap32[(g0)] = r4;
+	malloc(i7);
+	r4 = r_g0;
+	if(r4 !=0) //_LBB454_7
+{
+	r5 = 0;
+	r6 = (r4 + 4)|0;
+	r5 = (r5 - r6)|0;
+	r5 = r5 & 15;
+	r5 = (r4 + r5)|0;
+	r6 = (r5 + 4)|0;
+	r5 = r5 >> 2;
+	heap32[(r5)] = r4;
+	r4 = r6;
+}
+}
+else{
+	r4 = 0;
+}
+	r5 = (r0 + 12)|0;
+	if(r2 <1) //_LBB454_10
+{
+	r6 = r5 >> 2;
+	r7 = heap32[(r6)];
+}
+else{
+	r6 = 0;
+_14: while(true){
+	r7 = r5 >> 2;
+	r7 = heap32[(r7)];
+	r8 = r6 << 4;
+	r9 = (r4 + r8)|0;
+	r8 = (r7 + r8)|0;
+	r9 = r9 >> 2;
+	r8 = r8 >> 2;
+	heap32[(r9)] = heap32[(r8)];
+	heap32[(r9+1)] = heap32[(r8+1)];
+	r6 = (r6 + 1)|0;
+	heap32[(r9+2)] = heap32[(r8+2)];
+	heap32[(r9+3)] = heap32[(r8+3)];
+if(!(r2 !=r6)) //_LBB454_11
+{
+break _14;
+}
+}
+	r5 = (r0 + 12)|0;
+}
+if(!(r7 ==0)) //_LBB454_17
+{
+	r6 = heapU8[r0+16];
+if(!(r6 ==0)) //_LBB454_16
+{
+	r6 = gNumAlignedFree;
+	r6 = r6 >> 2;
+	r8 = heap32[(r6)];
+	r8 = (r8 + 1)|0;
+	r7 = r7 >> 2;
+	heap32[(r6)] = r8;
+	r6 = heap32[(r7+-1)];
+	heap32[(g0)] = r6;
+	free(i7);
+}
+	r6 = r5 >> 2;
+	heap32[(r6)] = 0;
+}
+	r6 = 1;
+	r5 = r5 >> 2;
+	heap8[r0+16] = r6;
+	heap32[(r5)] = r4;
+	heap32[(r1+2)] = r3;
+	if(r2 >=r3) //_LBB454_20
+{
+break _1;
+}
+}
+	r0 = heap32[(fp+2)];
+_25: while(true){
+	r4 = r2 << 4;
+	r5 = heap32[(r1+3)];
+	r4 = (r5 + r4)|0;
+	r4 = r4 >> 2;
+	r5 = r0 >> 2;
+	heap32[(r4)] = heap32[(r5)];
+	heap32[(r4+1)] = heap32[(r5+1)];
+	r2 = (r2 + 1)|0;
+	heap32[(r4+2)] = heap32[(r5+2)];
+	heap32[(r4+3)] = heap32[(r5+3)];
+	if(r3 !=r2) //_LBB454_19
+{
+continue _25;
+}
+else{
+break _1;
+}
+}
+}
+}
+} while(0);
+	heap32[(r1+1)] = r3;
+	return;
+}
+
+function _ZN17btConvexHullShapeC1EPKfii(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+	var r6;
+	var r7;
+	var f0;
+	var f1;
+var __label__ = 0;
+	i7 = sp + -32;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = r0 >> 2;
+	heap32[(r1+2)] = 0;
+	heap32[(r1+3)] = 1065353216;
+	heap32[(r1+4)] = 1065353216;
+	heap32[(r1+5)] = 1065353216;
+	heap32[(r1+6)] = 0;
+	heap32[(r1+11)] = 1025758986;
+	heap32[(r1+13)] = 1065353216;
+	heap32[(r1+14)] = 1065353216;
+	heap32[(r1+15)] = 1065353216;
+	heap32[(r1+16)] = 0;
+	heap32[(r1+17)] = -1082130432;
+	heap32[(r1+18)] = -1082130432;
+	heap32[(r1+19)] = -1082130432;
+	r2 = _ZTV17btConvexHullShape;
+	r3 = 0;
+	heap32[(r1+20)] = 0;
+	r2 = (r2 + 8)|0;
+	heap8[r0+84] = r3;
+	r4 = 1;
+	heap32[(r1)] = r2;
+	heap8[r0+104] = r4;
+	heap32[(r1+25)] = 0;
+	heap32[(r1+23)] = 0;
+	heap32[(r1+24)] = 0;
+	heap32[(r1+1)] = 4;
+	r2 = heap32[(fp+2)];
+	r4 = (r0 + 88)|0;
+	r5 = sp + -16;
+	heap32[(g0)] = r4;
+	heap32[(g0+1)] = r2;
+	heap32[(g0+2)] = r5;
+	_ZN20btAlignedObjectArrayI9btVector3E6resizeEiRKS0_(i7);
+if(!(r2 <1)) //_LBB455_3
+{
+	r4 = heap32[(fp+1)];
+_3: while(true){
+	r5 = r3 << 4;
+	r6 = (r4 + r5)|0;
+	r6 = r6 >> 2;
+	r7 = heap32[(r1+25)];
+	r5 = (r7 + r5)|0;
+	f0 = heapFloat[(r6+2)];
+	f1 = heapFloat[(r6+1)];
+	r5 = r5 >> 2;
+	heap32[(r5)] = heap32[(r6)];
+	heapFloat[(r5+1)] = f1;
+	r3 = (r3 + 1)|0;
+	heapFloat[(r5+2)] = f0;
+	heap32[(r5+3)] = 0;
+	if(r2 !=r3) //_LBB455_2
+{
+continue _3;
+}
+else{
+break _3;
+}
+}
+}
+	heap32[(g0)] = r0;
+	_ZN34btPolyhedralConvexAabbCachingShape15recalcLocalAabbEv(i7);
+	return;
+}
+
+function _ZN21btConvexInternalShape15setLocalScalingERK9btVector3(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var f0;
+	var f1;
+	var f2;
+	var f3;
+var __label__ = 0;
+	i7 = sp + 0;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp+1)];
+	r0 = r0 >> 2;
+	f0 = heapFloat[(r0+2)];
+	r1 = heap32[(fp)];
+	f1 =                         0;
+	if(f0 <f1) //_LBB456_2
+{
+	f0 = -f0;
+}
+	f2 = heapFloat[(r0+1)];
+	if(f2 <f1) //_LBB456_5
+{
+	f2 = -f2;
+}
+	f3 = heapFloat[(r0)];
+	if(f3 <f1) //_LBB456_8
+{
+	f3 = -f3;
+}
+	r0 = r1 >> 2;
+	heapFloat[(r0+3)] = f3;
+	heapFloat[(r0+4)] = f2;
+	heapFloat[(r0+5)] = f0;
+	heap32[(r0+6)] = 0;
+	return;
+}
+
+function _ZNK21btConvexInternalShape11getAabbSlowERK11btTransformR9btVector3S4_(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+	var r6;
+	var r7;
+	var r8;
+	var r9;
+	var r10;
+	var r11;
+	var r12;
+	var f0;
+	var f1;
+	var f2;
+	var f3;
+	var f4;
+	var f5;
+	var f6;
+	var f7;
+	var f8;
+	var f9;
+	var f10;
+	var f11;
+	var f12;
+var __label__ = 0;
+	i7 = sp + -112;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = r0 >> 2;
+	r2 = heap32[(r1)];
+	r2 = r2 >> 2;
+	r2 = heap32[(r2+11)];
+	heap32[(g0)] = r0;
+	r3 = heap32[(fp+1)];
+	r4 = heap32[(fp+2)];
+	r5 = heap32[(fp+3)];
+	r6 = 0;
+	__FUNCTION_TABLE__[(r2)>>2](i7);
+	f0 = f_g0;
+_1: while(true){
+	r2 = sp + -64;
+	r7 = r2 >> 2;
+	heap32[(fp+-16)] = 0;
+	heap32[(r7+1)] = 0;
+	r8 = r6 << 2;
+	r2 = (r2 - r8)|0;
+	heap32[(r7+2)] = 0;
+	r2 = r2 >> 2;
+	heap32[(r7+3)] = 0;
+	heap32[(r2)] = 1065353216;
+	r9 = r3 >> 2;
+	r10 = heap32[(r1)];
+	f1 = heapFloat[(fp+-16)];
+	f2 = heapFloat[(r9)];
+	f3 = heapFloat[(r7+1)];
+	f4 = heapFloat[(r9+4)];
+	r10 = r10 >> 2;
+	f5 = heapFloat[(r9+1)];
+	f6 = heapFloat[(r9+5)];
+	f2 = f2*f1;
+	f4 = f4*f3;
+	f7 = heapFloat[(r7+2)];
+	f8 = heapFloat[(r9+8)];
+	f9 = heapFloat[(r9+2)];
+	f10 = heapFloat[(r9+6)];
+	f11 = heapFloat[(r9+10)];
+	f12 = heapFloat[(r9+9)];
+	r10 = heap32[(r10+15)];
+	f5 = f5*f1;
+	f6 = f6*f3;
+	f2 = f2+f4;
+	f4 = f8*f7;
+	r11 = sp + -48;
+	f1 = f9*f1;
+	f3 = f10*f3;
+	f5 = f5+f6;
+	f6 = f12*f7;
+	f2 = f2+f4;
+	r12 = r11 >> 2;
+	f1 = f1+f3;
+	f3 = f11*f7;
+	f4 = f5+f6;
+	heapFloat[(fp+-12)] = f2;
+	f1 = f1+f3;
+	heapFloat[(r12+1)] = f4;
+	heapFloat[(r12+2)] = f1;
+	heap32[(r12+3)] = 0;
+	r12 = sp + -80;
+	heap32[(g0)] = r12;
+	heap32[(g0+1)] = r0;
+	heap32[(g0+2)] = r11;
+	__FUNCTION_TABLE__[(r10)>>2](i7);
+	r10 = r12 >> 2;
+	f1 = heapFloat[(fp+-20)];
+	f2 = heapFloat[(r9)];
+	f3 = heapFloat[(r10+1)];
+	f4 = heapFloat[(r9+1)];
+	f5 = heapFloat[(r9+4)];
+	f6 = heapFloat[(r9+5)];
+	f2 = f2*f1;
+	f4 = f4*f3;
+	f7 = heapFloat[(r10+2)];
+	f8 = heapFloat[(r9+2)];
+	f9 = heapFloat[(r9+8)];
+	f10 = heapFloat[(r9+9)];
+	f11 = heapFloat[(r9+6)];
+	f5 = f5*f1;
+	f6 = f6*f3;
+	f2 = f2+f4;
+	f4 = f8*f7;
+	f8 = heapFloat[(r9+10)];
+	f1 = f9*f1;
+	f3 = f10*f3;
+	f5 = f5+f6;
+	f6 = f11*f7;
+	f2 = f2+f4;
+	f4 = heapFloat[(r9+12)];
+	f9 = heapFloat[(r9+14)];
+	f10 = heapFloat[(r9+13)];
+	r10 = sp + -96;
+	f5 = f5+f6;
+	f1 = f1+f3;
+	f3 = f8*f7;
+	f2 = f2+f4;
+	f1 = f1+f3;
+	f3 = f5+f10;
+	heapFloat[(fp+-24)] = f2;
+	r11 = r10 >> 2;
+	f1 = f1+f9;
+	heapFloat[(r11+1)] = f3;
+	heapFloat[(r11+2)] = f1;
+	r10 = (r10 - r8)|0;
+	heap32[(r11+3)] = 0;
+	r10 = r10 >> 2;
+	r12 = (r5 - r8)|0;
+	f1 = heapFloat[(r10)];
+	r12 = r12 >> 2;
+	f1 = f1+f0;
+	heapFloat[(r12)] = f1;
+	heap32[(r2)] = -1082130432;
+	r2 = heap32[(r1)];
+	f1 = heapFloat[(fp+-16)];
+	f2 = heapFloat[(r9)];
+	f3 = heapFloat[(r7+1)];
+	f4 = heapFloat[(r9+4)];
+	r2 = r2 >> 2;
+	f5 = heapFloat[(r9+1)];
+	f6 = heapFloat[(r9+5)];
+	f2 = f2*f1;
+	f4 = f4*f3;
+	f7 = heapFloat[(r7+2)];
+	f8 = heapFloat[(r9+8)];
+	f9 = heapFloat[(r9+2)];
+	f10 = heapFloat[(r9+6)];
+	f11 = heapFloat[(r9+10)];
+	f12 = heapFloat[(r9+9)];
+	r2 = heap32[(r2+15)];
+	f5 = f5*f1;
+	f6 = f6*f3;
+	f2 = f2+f4;
+	f4 = f8*f7;
+	r7 = sp + -16;
+	f1 = f9*f1;
+	f3 = f10*f3;
+	f5 = f5+f6;
+	f6 = f12*f7;
+	f2 = f2+f4;
+	r12 = r7 >> 2;
+	f1 = f1+f3;
+	f3 = f11*f7;
+	f4 = f5+f6;
+	heapFloat[(fp+-4)] = f2;
+	f1 = f1+f3;
+	heapFloat[(r12+1)] = f4;
+	heapFloat[(r12+2)] = f1;
+	heap32[(r12+3)] = 0;
+	r12 = sp + -32;
+	heap32[(g0)] = r12;
+	heap32[(g0+1)] = r0;
+	heap32[(g0+2)] = r7;
+	__FUNCTION_TABLE__[(r2)>>2](i7);
+	r2 = r12 >> 2;
+	f1 = heapFloat[(fp+-8)];
+	f2 = heapFloat[(r9)];
+	f3 = heapFloat[(r2+1)];
+	f4 = heapFloat[(r9+1)];
+	f5 = heapFloat[(r9+4)];
+	f6 = heapFloat[(r9+5)];
+	f2 = f2*f1;
+	f4 = f4*f3;
+	f7 = heapFloat[(r2+2)];
+	f8 = heapFloat[(r9+2)];
+	f9 = heapFloat[(r9+8)];
+	f10 = heapFloat[(r9+9)];
+	f11 = heapFloat[(r9+6)];
+	f5 = f5*f1;
+	f6 = f6*f3;
+	f2 = f2+f4;
+	f4 = f8*f7;
+	f8 = heapFloat[(r9+10)];
+	f1 = f9*f1;
+	f3 = f10*f3;
+	f5 = f5+f6;
+	f6 = f11*f7;
+	f2 = f2+f4;
+	f4 = heapFloat[(r9+12)];
+	f9 = heapFloat[(r9+14)];
+	f10 = heapFloat[(r9+13)];
+	f5 = f5+f6;
+	f1 = f1+f3;
+	f3 = f8*f7;
+	f2 = f2+f4;
+	f1 = f1+f3;
+	f3 = f5+f10;
+	heapFloat[(fp+-24)] = f2;
+	f1 = f1+f9;
+	heapFloat[(r11+1)] = f3;
+	heapFloat[(r11+2)] = f1;
+	heap32[(r11+3)] = 0;
+	r2 = (r4 - r8)|0;
+	f1 = heapFloat[(r10)];
+	r6 = (r6 + -1)|0;
+	r2 = r2 >> 2;
+	f1 = f1-f0;
+	heapFloat[(r2)] = f1;
+	if(r6 !=-3) //_LBB457_1
+{
+continue _1;
+}
+else{
+break _1;
+}
+}
+	return;
+}
+
+function _ZNK21btConvexInternalShape24localGetSupportingVertexERK9btVector3(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var f0;
+	var f1;
+	var f2;
+	var f3;
+	var f4;
+	var f5;
+var __label__ = 0;
+	i7 = sp + -16;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp+1)];
+	r1 = r0 >> 2;
+	r2 = heap32[(r1)];
+	r2 = r2 >> 2;
+	r2 = heap32[(r2+16)];
+	r3 = heap32[(fp)];
+	r4 = heap32[(fp+2)];
+	heap32[(g0)] = r3;
+	heap32[(g0+1)] = r0;
+	heap32[(g0+2)] = r4;
+	__FUNCTION_TABLE__[(r2)>>2](i7);
+	r2 = heap32[(r1)];
+	r2 = r2 >> 2;
+	r2 = heap32[(r2+11)];
+	heap32[(g0)] = r0;
+	__FUNCTION_TABLE__[(r2)>>2](i7);
+	f0 = f_g0;
+	f1 =                         0;
+if(!(f0 ==f1)) //_LBB458_2
+{
+	r2 = r4 >> 2;
+	f0 = heapFloat[(r2)];
+	f1 = heapFloat[(r2+1)];
+	f2 = heapFloat[(r2+2)];
+	f3 = f0*f0;
+	f4 = f1*f1;
+	f3 = f3+f4;
+	f4 = f2*f2;
+	f3 = f3+f4;
+	f4 =   1.4210854715202004e-014;
+	f5 =                        -1;
+	f0 = f3 < f4 ? f5 : f0;
+	f1 = f3 < f4 ? f5 : f1;
+	f2 = f3 < f4 ? f5 : f2;
+	f3 = f0*f0;
+	f4 = f1*f1;
+	f3 = f3+f4;
+	f4 = f2*f2;
+	f3 = f3+f4;
+	heapFloat[(g0)] = f3;
+	sqrtf(i7);
+	r1 = heap32[(r1)];
+	r1 = r1 >> 2;
+	r1 = heap32[(r1+11)];
+	f4 =                         1;
+	f3 = f4/f_g0;
+	heap32[(g0)] = r0;
+	r0 = r3 >> 2;
+	__FUNCTION_TABLE__[(r1)>>2](i7);
+	f0 = f0*f3;
+	f0 = f0*f_g0;
+	f5 = heapFloat[(r0)];
+	f0 = f5+f0;
+	f1 = f1*f3;
+	heapFloat[(r0)] = f0;
+	f0 = f1*f_g0;
+	f1 = heapFloat[(r0+1)];
+	f0 = f1+f0;
+	f1 = f2*f3;
+	heapFloat[(r0+1)] = f0;
+	f0 = f1*f_g0;
+	f1 = heapFloat[(r0+2)];
+	f0 = f1+f0;
+	heapFloat[(r0+2)] = f0;
+}
+	return;
+}
+
+function _ZN13btConvexShapeD1Ev(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+var __label__ = 0;
+	i7 = sp + 0;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = _ZTV13btConvexShape;
+	r0 = r0 >> 2;
+	r1 = (r1 + 8)|0;
+	heap32[(r0)] = r1;
+	return;
+}
+
+function _ZN13btConvexShapeD0Ev(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+var __label__ = 0;
+	i7 = sp + -8;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = _ZTV13btConvexShape;
+	r2 = r0 >> 2;
+	r1 = (r1 + 8)|0;
+	heap32[(r2)] = r1;
+if(!(r0 ==0)) //_LBB460_2
+{
+	r0 = gNumAlignedFree;
+	r0 = r0 >> 2;
+	r1 = heap32[(r0)];
+	r1 = (r1 + 1)|0;
+	heap32[(r0)] = r1;
+	r0 = heap32[(r2+-1)];
+	heap32[(g0)] = r0;
+	free(i7);
+}
+	return;
+}
+
+function _ZL17convexHullSupportRK9btVector3PS0_iS1_(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+	var f0;
+	var f1;
+	var f2;
+	var f3;
+	var f4;
+	var f5;
+	var f6;
+	var f7;
+	var f8;
+	var f9;
+var __label__ = 0;
+	i7 = sp + -16;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp+5)];
+if(!(r0 <1)) //_LBB461_4
+{
+	f0 = heapFloat[(fp+8)];
+	f1 = heapFloat[(fp+3)];
+	f2 = heapFloat[(fp+7)];
+	f3 = heapFloat[(fp+2)];
+	f4 = heapFloat[(fp+6)];
+	f5 = heapFloat[(fp+1)];
+	r1 = heap32[(fp)];
+	r2 = heap32[(fp+4)];
+	f1 = f1*f0;
+	f3 = f3*f2;
+	f5 = f5*f4;
+	r3 = 0;
+	r4 = -1;
+	f6 =       -999999984306749440;
+_3: while(true){
+	r5 = r3 << 4;
+	r5 = (r2 + r5)|0;
+	r5 = r5 >> 2;
+	f7 = heapFloat[(r5)];
+	f8 = heapFloat[(r5+1)];
+	f7 = f5*f7;
+	f8 = f3*f8;
+	f9 = heapFloat[(r5+2)];
+	f7 = f7+f8;
+	f8 = f1*f9;
+	f7 = f7+f8;
+	r5 = (r3 + 1)|0;
+	r4 = f7 > f6 ? r3 : r4;
+	f6 = f7 > f6 ? f7 : f6;
+	r3 = r5;
+if(!(r0 !=r5)) //_LBB461_2
+{
+break _3;
+}
+}
+	if(r4 >-1) //_LBB461_5
+{
+	r0 = r4 << 4;
+	r0 = (r2 + r0)|0;
+	r0 = r0 >> 2;
+	f1 = heapFloat[(r0)];
+	f3 = heapFloat[(r0+2)];
+	f5 = heapFloat[(r0+1)];
+	r0 = r1 >> 2;
+	f1 = f1*f4;
+	f2 = f5*f2;
+	heapFloat[(r0)] = f1;
+	f0 = f3*f0;
+	heapFloat[(r0+1)] = f2;
+	heapFloat[(r0+2)] = f0;
+	heap32[(r0+3)] = 0;
+	return;
+}
+}
+	r1 = _2E_str6249;
+	r2 = _2E_str7250;
+	heap32[(g0)] = r1;
+	heap32[(g0+1)] = r2;
+	heap32[(g0+2)] = 108;
+	_assert(i7);
+}
+
+function _ZNK13btConvexShape44localGetSupportVertexWithoutMarginNonVirtualERK9btVector3(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+	var r6;
+	var r7;
+	var f0;
+	var f1;
+	var f2;
+	var f3;
+	var f4;
+	var f5;
+	var f6;
+	var f7;
+	var f8;
+	var f9;
+	var f10;
+	var f11;
+	var f12;
+	var f13;
+	var f14;
+	var f15;
+var __label__ = 0;
+	i7 = sp + -120;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp+1)];
+	r1 = r0 >> 2;
+	r2 = heap32[(r1+1)];
+	r3 = heap32[(fp)];
+	r4 = heap32[(fp+2)];
+_1: do {
+	if(r2 >4) //_LBB462_4
+{
+	if(r2 >9) //_LBB462_7
+{
+	if(r2 ==10) //_LBB462_32
+{
+	r2 = heap32[(r1+13)];
+	r5 = (r2 + 2)|0;
+	r4 = r4 >> 2;
+	r5 = (r5 % 3)|0;
+	f0 = heapFloat[(r4)];
+	f1 = heapFloat[(r4+1)];
+	r2 = r2 << 2;
+	r0 = (r0 + 28)|0;
+	r5 = r5 << 2;
+	f2 = heapFloat[(r4+2)];
+	r4 = (r0 + r2)|0;
+	r0 = (r0 + r5)|0;
+	f3 = f0*f0;
+	f4 = f1*f1;
+	r4 = r4 >> 2;
+	r0 = r0 >> 2;
+	f3 = f3+f4;
+	f4 = f2*f2;
+	f3 = f3+f4;
+	f4 = heapFloat[(r4)];
+	f5 = heapFloat[(r0)];
+	f6 =   9.9999997473787516e-005;
+	if(f3 >=f6) //_LBB462_34
+{
+	heapFloat[(g0)] = f3;
+	f3 =                         1;
+	sqrtf(i7);
+	f3 = f3/f_g0;
+	f0 = f0*f3;
+	f1 = f1*f3;
+	f2 = f2*f3;
+}
+else{
+	f0 =                         1;
+	f1 =                         0;
+	f2 = f1;
+}
+	r0 = sp + -64;
+	r4 = r0 >> 2;
+	heap32[(fp+-16)] = 0;
+	heap32[(r4+1)] = 0;
+	r0 = (r0 + r2)|0;
+	heap32[(r4+2)] = 0;
+	r0 = r0 >> 2;
+	heap32[(r4+3)] = 0;
+	heapFloat[(r0)] = f4;
+	f3 = heapFloat[(r1+4)];
+	f6 = heapFloat[(r1+3)];
+	f7 = heapFloat[(r1+5)];
+	f3 = f1*f3;
+	f6 = f0*f6;
+	f8 = heapFloat[(r1+11)];
+	f7 = f2*f7;
+	f3 = f3*f5;
+	f9 = heapFloat[(r4+1)];
+	f6 = f6*f5;
+	f10 = heapFloat[(fp+-16)];
+	f5 = f7*f5;
+	f7 = heapFloat[(r4+2)];
+	f11 = f1*f8;
+	f9 = f9+f3;
+	f12 = f0*f8;
+	f10 = f10+f6;
+	f9 = f9-f11;
+	f10 = f10-f12;
+	f8 = f2*f8;
+	f7 = f7+f5;
+	f7 = f7-f8;
+	f13 = f0*f10;
+	f14 = f1*f9;
+	f13 = f13+f14;
+	f14 = f2*f7;
+	f13 = f13+f14;
+	f14 =       -999999984306749440;
+	if(f13 >f14) //_LBB462_37
+{
+	f14 = f13;
+}
+else{
+	f10 =                         0;
+	f9 = f10;
+	f7 = f10;
+}
+	r0 = sp + -80;
+	r1 = r0 >> 2;
+	heap32[(fp+-20)] = 0;
+	heap32[(r1+1)] = 0;
+	r0 = (r0 + r2)|0;
+	heap32[(r1+2)] = 0;
+	r0 = r0 >> 2;
+	f4 = -f4;
+	heap32[(r1+3)] = 0;
+	heapFloat[(r0)] = f4;
+	f4 = heapFloat[(r1+1)];
+	f13 = heapFloat[(fp+-20)];
+	f15 = heapFloat[(r1+2)];
+	f3 = f4+f3;
+	f4 = f13+f6;
+	f4 = f4-f12;
+	f3 = f3-f11;
+	f5 = f15+f5;
+	f0 = f0*f4;
+	f1 = f1*f3;
+	f5 = f5-f8;
+	f0 = f0+f1;
+	f1 = f2*f5;
+	f0 = f0+f1;
+	r0 = r3 >> 2;
+	f1 = f0 > f14 ? f4 : f10;
+	f2 = f0 > f14 ? f3 : f9;
+	heapFloat[(r0)] = f1;
+	f0 = f0 > f14 ? f5 : f7;
+__label__ = 11;
+break _1;
+}
+else{
+	if(r2 ==13) //_LBB462_16
+{
+	r0 = sp + -16;
+	r2 = r0 >> 2;
+	heap32[(fp+-4)] = heap32[(r1+7)];
+	heap32[(r2+1)] = heap32[(r1+8)];
+	heap32[(r2+2)] = heap32[(r1+9)];
+	r4 = r4 >> 2;
+	heap32[(r2+3)] = heap32[(r1+10)];
+	r2 = sp + -32;
+	heap32[(fp+-8)] = heap32[(r4)];
+	f0 = heapFloat[(r4+1)];
+	r5 = r2 >> 2;
+	heapFloat[(r5+1)] = f0;
+	f1 = heapFloat[(r4+2)];
+	heapFloat[(r5+2)] = f1;
+	heap32[(r5+3)] = 0;
+	r1 = heap32[(r1+13)];
+	if(r1 ==2) //_LBB462_21
+{
+	r4 = 0;
+	r5 = 2;
+	r6 = 1;
+	f1 = f0;
+}
+else{
+	if(r1 ==1) //_LBB462_20
+{
+	r4 = 0;
+	r5 = 1;
+	r6 = 2;
+}
+else{
+	if(r1 !=0) //_LBB462_22
+{
+	r0 = _2E_str10;
+	r1 = _2E_str7250;
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r1;
+	heap32[(g0+2)] = 175;
+	_assert(i7);
+}
+else{
+	r4 = 1;
+	r5 = 0;
+	r6 = 2;
+}
+}
+}
+	r1 = r1 << 2;
+	r4 = r4 << 2;
+	r7 = (r0 + r4)|0;
+	r0 = (r0 + r1)|0;
+	r1 = (r2 + r4)|0;
+	r7 = r7 >> 2;
+	r0 = r0 >> 2;
+	r1 = r1 >> 2;
+	f0 = heapFloat[(r1)];
+	f2 = heapFloat[(r7)];
+	f3 = heapFloat[(r0)];
+	f4 = f0*f0;
+	f5 = f1*f1;
+	f4 = f4+f5;
+	heapFloat[(g0)] = f4;
+	sqrtf(i7);
+	f4 = f_g0;
+	f5 =                         0;
+	if(f4 ==f5) //_LBB462_28
+{
+	r0 = sp + -48;
+	r1 = (r0 + r4)|0;
+	r4 = r5 << 2;
+	r2 = (r2 + r4)|0;
+	r1 = r1 >> 2;
+	r2 = r2 >> 2;
+	heapFloat[(r1)] = f2;
+	f0 = heapFloat[(r2)];
+	if(f0 <f5) //_LBB462_30
+{
+	f3 = -f3;
+}
+	r1 = r6 << 2;
+	r4 = (r0 + r4)|0;
+	r1 = (r0 + r1)|0;
+	r4 = r4 >> 2;
+	r1 = r1 >> 2;
+	heapFloat[(r4)] = f3;
+	r3 = r3 >> 2;
+	heap32[(r1)] = 0;
+	r0 = r0 >> 2;
+	heap32[(r3)] = heap32[(fp+-12)];
+	heap32[(r3+1)] = heap32[(r0+1)];
+	heap32[(r3+2)] = heap32[(r0+2)];
+	heap32[(r3+3)] = 0;
+	return;
+}
+else{
+	r0 = sp + -48;
+	r4 = (r0 + r4)|0;
+	f2 = f2/f4;
+	r1 = r5 << 2;
+	r2 = (r2 + r1)|0;
+	r4 = r4 >> 2;
+	f0 = f0*f2;
+	r2 = r2 >> 2;
+	heapFloat[(r4)] = f0;
+	f0 = heapFloat[(r2)];
+	if(f0 <f5) //_LBB462_26
+{
+	f3 = -f3;
+}
+	r4 = r6 << 2;
+	r1 = (r0 + r1)|0;
+	r4 = (r0 + r4)|0;
+	r1 = r1 >> 2;
+	r4 = r4 >> 2;
+	f2 = f1*f2;
+	heapFloat[(r1)] = f3;
+	r1 = r3 >> 2;
+	heapFloat[(r4)] = f2;
+	r4 = r0 >> 2;
+	heap32[(r1)] = heap32[(fp+-12)];
+	heap32[(r1+1)] = heap32[(r4+1)];
+	heap32[(r1+2)] = heap32[(r4+2)];
+	heap32[(r1+3)] = 0;
+	return;
+}
+}
+else{
+__label__ = 40;
+break _1;
+}
+}
+}
+else{
+	if(r2 ==5) //_LBB462_39
+{
+	r0 = r4 >> 2;
+	f0 = heapFloat[(r1+5)];
+	r4 = heap32[(r1+22)];
+__label__ = 38;
+break _1;
+}
+else{
+	if(r2 ==8) //_LBB462_9
+{
+	r0 = r3 >> 2;
+	heap32[(r0)] = 0;
+	heap32[(r0+1)] = 0;
+	heap32[(r0+2)] = 0;
+	heap32[(r0+3)] = 0;
+	return;
+}
+else{
+__label__ = 40;
+break _1;
+}
+}
+}
+}
+else{
+	if(r2 ==0) //_LBB462_10
+{
+	r0 = r4 >> 2;
+	f0 = heapFloat[(r1+7)];
+	f1 = heapFloat[(r1+9)];
+	f2 = heapFloat[(r1+8)];
+	f3 =                         0;
+	f4 = -f0;
+	f5 = heapFloat[(r0)];
+	f6 = heapFloat[(r0+2)];
+	f7 = heapFloat[(r0+1)];
+	f8 = -f2;
+	r0 = r3 >> 2;
+	f0 = f5 < f3 ? f4 : f0;
+	f4 = -f1;
+	f2 = f7 < f3 ? f8 : f2;
+	heapFloat[(r0)] = f0;
+	f0 = f6 < f3 ? f4 : f1;
+__label__ = 11;
+break _1;
+}
+else{
+	if(r2 ==1) //_LBB462_12
+{
+	r4 = r4 >> 2;
+	f0 = heapFloat[(r1+13)];
+	f1 = heapFloat[(r4)];
+	f2 = heapFloat[(r1+17)];
+	f3 = heapFloat[(r1+21)];
+	f4 = heapFloat[(r1+14)];
+	f5 = heapFloat[(r4+1)];
+	f6 = heapFloat[(r1+18)];
+	f7 = heapFloat[(r1+22)];
+	f0 = f1*f0;
+	f4 = f5*f4;
+	f8 = heapFloat[(r1+15)];
+	f9 = heapFloat[(r4+2)];
+	f10 = heapFloat[(r1+19)];
+	f11 = heapFloat[(r1+23)];
+	f2 = f1*f2;
+	f6 = f5*f6;
+	f1 = f1*f3;
+	f3 = f5*f7;
+	f0 = f0+f4;
+	f4 = f9*f8;
+	f2 = f2+f6;
+	f5 = f9*f10;
+	f1 = f1+f3;
+	f3 = f9*f11;
+	f0 = f0+f4;
+	f2 = f2+f5;
+	f1 = f1+f3;
+	if(f0 >=f2) //_LBB462_14
+{
+	r1 = 2;
+	r4 = 0;
+	r1 = f0 < f1 ? r1 : r4;
+}
+else{
+	r1 = 2;
+	r4 = 1;
+	r1 = f2 < f1 ? r1 : r4;
+}
+	r1 = r1 << 4;
+	r0 = (r0 + r1)|0;
+	r0 = r0 >> 2;
+	f0 = heapFloat[(r0+15)];
+	f1 = heapFloat[(r0+14)];
+	r1 = r3 >> 2;
+	heap32[(r1)] = heap32[(r0+13)];
+	heapFloat[(r1+1)] = f1;
+	heapFloat[(r1+2)] = f0;
+	heap32[(r1+3)] = 0;
+	return;
+}
+else{
+	if(r2 ==4) //_LBB462_41
+{
+	r0 = r4 >> 2;
+	f0 = heapFloat[(r1+5)];
+	r4 = heap32[(r1+25)];
+__label__ = 38;
+}
+else{
+__label__ = 40;
+}
+}
+}
+}
+} while(0);
+switch(__label__ ){//multiple entries
+case 11:
+	heapFloat[(r0+1)] = f2;
+	heapFloat[(r0+2)] = f0;
+	heap32[(r0+3)] = 0;
+	return;
+break;
+case 40:
+	r1 = heap32[(r1)];
+	r1 = r1 >> 2;
+	r1 = heap32[(r1+16)];
+	heap32[(g0)] = r3;
+	heap32[(g0+1)] = r0;
+	heap32[(g0+2)] = r4;
+	__FUNCTION_TABLE__[(r1)>>2](i7);
+	return;
+break;
+case 38:
+	r2 = heap32[(r1+23)];
+	f1 = heapFloat[(r0)];
+	f2 = heapFloat[(r0+1)];
+	f3 = heapFloat[(r0+2)];
+	f4 = heapFloat[(r1+3)];
+	f5 = heapFloat[(r1+4)];
+	heap32[(g0)] = r3;
+	heapFloat[(g0+1)] = f1;
+	heapFloat[(g0+2)] = f2;
+	heapFloat[(g0+3)] = f3;
+	heap32[(g0+4)] = r4;
+	heap32[(g0+5)] = r2;
+	heapFloat[(g0+6)] = f4;
+	heapFloat[(g0+7)] = f5;
+	heapFloat[(g0+8)] = f0;
+	_ZL17convexHullSupportRK9btVector3PS0_iS1_(i7);
+	return;
+break;
+}
+}
+
+function _ZNK13btConvexShape31localGetSupportVertexNonVirtualERK9btVector3(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+	var f0;
+	var f1;
+	var f2;
+	var f3;
+	var f4;
+	var f5;
+	var f6;
+var __label__ = 0;
+	i7 = sp + -48;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp+2)];
+	r0 = r0 >> 2;
+	f0 = heapFloat[(r0)];
+	r1 = sp + -32;
+	heapFloat[(fp+-8)] = f0;
+	f1 = heapFloat[(r0+1)];
+	r2 = r1 >> 2;
+	heapFloat[(r2+1)] = f1;
+	f2 = heapFloat[(r0+2)];
+	r3 = heap32[(fp)];
+	r4 = heap32[(fp+1)];
+	heapFloat[(r2+2)] = f2;
+	f3 = f0*f0;
+	f4 = f1*f1;
+	f3 = f3+f4;
+	f4 = f2*f2;
+	heap32[(r2+3)] = heap32[(r0+3)];
+	f3 = f3+f4;
+	f4 =   1.4210854715202004e-014;
+	if(f3 <f4) //_LBB463_2
+{
+	heap32[(fp+-8)] = -1082130432;
+	heap32[(r2+1)] = -1082130432;
+	f2 =                        -1;
+	heap32[(r2+2)] = -1082130432;
+	heap32[(r2+3)] = 0;
+	f1 = f2;
+	f0 = f2;
+}
+	f0 = f0*f0;
+	f1 = f1*f1;
+	f0 = f0+f1;
+	f1 = f2*f2;
+	f0 = f0+f1;
+	heapFloat[(g0)] = f0;
+	sqrtf(i7);
+	f1 =                         1;
+	f0 = f1/f_g0;
+	f1 = heapFloat[(fp+-8)];
+	f1 = f1*f0;
+	heapFloat[(fp+-8)] = f1;
+	f2 = heapFloat[(r2+1)];
+	f2 = f2*f0;
+	heapFloat[(r2+1)] = f2;
+	f3 = heapFloat[(r2+2)];
+	f0 = f3*f0;
+	r0 = r4 >> 2;
+	heapFloat[(r2+2)] = f0;
+	r5 = heap32[(r0+1)];
+_4: do {
+	if(r5 >7) //_LBB463_7
+{
+	if(r5 ==13) //_LBB463_13
+{
+	f3 = heapFloat[(r0+11)];
+__label__ = 16;
+break _4;
+}
+else{
+	if(r5 ==10) //_LBB463_14
+{
+	f3 = heapFloat[(r0+11)];
+__label__ = 16;
+break _4;
+}
+else{
+	if(r5 !=8) //_LBB463_16
+{
+__label__ = 15;
+break _4;
+}
+else{
+	f3 = heapFloat[(r0+7)];
+	f4 = heapFloat[(r0+3)];
+	f3 = f3*f4;
+__label__ = 16;
+break _4;
+}
+}
+}
+}
+else{
+	if(r5 ==0) //_LBB463_11
+{
+	f3 = heapFloat[(r0+11)];
+__label__ = 16;
+break _4;
+}
+else{
+	if(r5 ==1) //_LBB463_12
+{
+	f3 = heapFloat[(r0+11)];
+__label__ = 16;
+}
+else{
+	r5 = (r5 + -4)|0;
+	if(uint(r5) <uint(2)) //_LBB463_15
+{
+	f3 = heapFloat[(r0+11)];
+__label__ = 16;
+}
+else{
+__label__ = 15;
+}
+}
+}
+}
+} while(0);
+if (__label__ == 15){
+	r0 = heap32[(r0)];
+	r0 = r0 >> 2;
+	r0 = heap32[(r0+11)];
+	heap32[(g0)] = r4;
+	__FUNCTION_TABLE__[(r0)>>2](i7);
+	f3 = f_g0;
+	f0 = heapFloat[(r2+2)];
+	f2 = heapFloat[(r2+1)];
+	f1 = heapFloat[(fp+-8)];
+}
+	r0 = sp + -16;
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r4;
+	heap32[(g0+2)] = r1;
+	_ZNK13btConvexShape44localGetSupportVertexWithoutMarginNonVirtualERK9btVector3(i7);
+	r0 = r0 >> 2;
+	f1 = f1*f3;
+	f4 = heapFloat[(fp+-4)];
+	f5 = heapFloat[(r0+2)];
+	f6 = heapFloat[(r0+1)];
+	f2 = f2*f3;
+	r0 = r3 >> 2;
+	f1 = f4+f1;
+	f0 = f0*f3;
+	f2 = f6+f2;
+	heapFloat[(r0)] = f1;
+	f0 = f5+f0;
+	heapFloat[(r0+1)] = f2;
+	heapFloat[(r0+2)] = f0;
+	heap32[(r0+3)] = 0;
+	return;
+}
+
+function _ZZN14btOptimizedBvh5buildEP23btStridingMeshInterfacebRK9btVector3S4_EN20NodeTriangleCallbackD1Ev(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+var __label__ = 0;
+	i7 = sp + 0;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = _ZTV31btInternalTriangleIndexCallback;
+	r0 = r0 >> 2;
+	r1 = (r1 + 8)|0;
+	heap32[(r0)] = r1;
+	return;
+}
+
+function _ZZN14btOptimizedBvh5buildEP23btStridingMeshInterfacebRK9btVector3S4_EN20NodeTriangleCallbackD0Ev(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+var __label__ = 0;
+	i7 = sp + -8;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = _ZTV31btInternalTriangleIndexCallback;
+	r2 = r0 >> 2;
+	r1 = (r1 + 8)|0;
+	heap32[(r2)] = r1;
+	heap32[(g0)] = r0;
+	_ZdlPv(i7);
+	return;
+}
+
+function _ZZN14btOptimizedBvh5buildEP23btStridingMeshInterfacebRK9btVector3S4_EN20NodeTriangleCallback28internalProcessTriangleIndexEPS2_ii(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+	var r6;
+	var r7;
+	var r8;
+	var r9;
+	var r10;
+	var f0;
+	var f1;
+	var f2;
+	var f3;
+	var f4;
+	var f5;
+	var f6;
+	var f7;
+	var f8;
+	var f9;
+	var f10;
+	var f11;
+	var f12;
+var __label__ = 0;
+	i7 = sp + -16;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp+1)];
+	r0 = r0 >> 2;
+	r1 = heap32[(fp)];
+	r1 = r1 >> 2;
+	f0 =        999999984306749440;
+	f1 = heapFloat[(r0)];
+	f2 = heapFloat[(r0+1)];
+	f3 =       -999999984306749440;
+	f4 = heapFloat[(r0+2)];
+	f5 = heapFloat[(r0+3)];
+	f6 =                         0;
+	r1 = heap32[(r1+1)];
+	f7 = f1 < f0 ? f1 : f0;
+	f8 = heapFloat[(r0+4)];
+	f1 = f1 > f3 ? f1 : f3;
+	f9 = f2 < f0 ? f2 : f0;
+	f10 = heapFloat[(r0+5)];
+	f2 = f2 > f3 ? f2 : f3;
+	f0 = f4 < f0 ? f4 : f0;
+	f11 = heapFloat[(r0+6)];
+	f3 = f4 > f3 ? f4 : f3;
+	f4 = f5 < f6 ? f5 : f6;
+	f12 = heapFloat[(r0+7)];
+	f5 = f5 > f6 ? f5 : f6;
+	r2 = r1 >> 2;
+	f6 = f8 < f7 ? f8 : f7;
+	f7 = heapFloat[(r0+8)];
+	f1 = f1 < f8 ? f8 : f1;
+	f8 = f10 < f9 ? f10 : f9;
+	f9 = heapFloat[(r0+9)];
+	f2 = f2 < f10 ? f10 : f2;
+	f0 = f11 < f0 ? f11 : f0;
+	f10 = heapFloat[(r0+10)];
+	f3 = f3 < f11 ? f11 : f3;
+	f4 = f12 < f4 ? f12 : f4;
+	f11 = heapFloat[(r0+11)];
+	f5 = f5 < f12 ? f12 : f5;
+	r0 = heap32[(r2+2)];
+	r3 = heap32[(r2+1)];
+	r4 = heap32[(fp+2)];
+	r5 = heap32[(fp+3)];
+	f6 = f7 < f6 ? f7 : f6;
+	f8 = f9 < f8 ? f9 : f8;
+	f0 = f10 < f0 ? f10 : f0;
+	f4 = f11 < f4 ? f11 : f4;
+	f1 = f1 < f7 ? f7 : f1;
+	f2 = f2 < f9 ? f9 : f2;
+	f3 = f3 < f10 ? f10 : f3;
+	f5 = f5 < f11 ? f11 : f5;
+	if(r0 ==r3) //_LBB466_2
+{
+	r6 = 1;
+	r7 = r3 << 1;
+	r7 = r3 == 0 ? r6 : r7;
+if(!(r0 >=r7)) //_LBB466_1
+{
+	if(r7 !=0) //_LBB466_5
+{
+	r0 = gNumAlignedAllocs;
+	r0 = r0 >> 2;
+	r8 = heap32[(r0)];
+	r8 = (r8 + 1)|0;
+	r9 = r7 << 6;
+	heap32[(r0)] = r8;
+	r0 = r9 | 19;
+	heap32[(g0)] = r0;
+	malloc(i7);
+	r0 = r_g0;
+	if(r0 !=0) //_LBB466_7
+{
+	r3 = 0;
+	r8 = (r0 + 4)|0;
+	r3 = (r3 - r8)|0;
+	r3 = r3 & 15;
+	r3 = (r0 + r3)|0;
+	r8 = r3 >> 2;
+	heap32[(r8)] = r0;
+	r0 = (r3 + 4)|0;
+	r3 = heap32[(r2+1)];
+}
+}
+else{
+	r0 = 0;
+}
+if(!(r3 <1)) //_LBB466_11
+{
+	r8 = 0;
+_11: while(true){
+	r9 = heap32[(r2+3)];
+	r10 = (r0 + r8)|0;
+	r9 = (r9 + r8)|0;
+	heap32[(g0)] = r10;
+	heap32[(g0+1)] = r9;
+	heap32[(g0+2)] = 64;
+	r3 = (r3 + -1)|0;
+	r8 = (r8 + 64)|0;
+	memcpy(i7);
+if(!(r3 !=0)) //_LBB466_10
+{
+break _11;
+}
+}
+}
+	r3 = heap32[(r2+3)];
+if(!(r3 ==0)) //_LBB466_15
+{
+	r8 = heapU8[r1+16];
+if(!(r8 ==0)) //_LBB466_14
+{
+	r8 = gNumAlignedFree;
+	r8 = r8 >> 2;
+	r9 = heap32[(r8)];
+	r9 = (r9 + 1)|0;
+	r3 = r3 >> 2;
+	heap32[(r8)] = r9;
+	r3 = heap32[(r3+-1)];
+	heap32[(g0)] = r3;
+	free(i7);
+}
+	heap32[(r2+3)] = 0;
+}
+	heap8[r1+16] = r6;
+	heap32[(r2+3)] = r0;
+	heap32[(r2+2)] = r7;
+	r3 = heap32[(r2+1)];
+}
+}
+	r0 = r3 << 6;
+	r1 = heap32[(r2+3)];
+	r0 = (r1 + r0)|0;
+	r0 = r0 >> 2;
+	heapFloat[(r0)] = f6;
+	heapFloat[(r0+1)] = f8;
+	heapFloat[(r0+2)] = f0;
+	heapFloat[(r0+3)] = f4;
+	heapFloat[(r0+4)] = f1;
+	heapFloat[(r0+5)] = f2;
+	heapFloat[(r0+6)] = f3;
+	heapFloat[(r0+7)] = f5;
+	heap32[(r0+8)] = -1;
+	heap32[(r0+9)] = r4;
+	heap32[(r0+10)] = r5;
+	r0 = heap32[(r2+1)];
+	r0 = (r0 + 1)|0;
+	heap32[(r2+1)] = r0;
+	return;
+}
+
+function _ZZN14btOptimizedBvh5buildEP23btStridingMeshInterfacebRK9btVector3S4_EN29QuantizedNodeTriangleCallbackD1Ev(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+var __label__ = 0;
+	i7 = sp + 0;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = _ZTV31btInternalTriangleIndexCallback;
+	r0 = r0 >> 2;
+	r1 = (r1 + 8)|0;
+	heap32[(r0)] = r1;
+	return;
+}
+
+function _ZZN14btOptimizedBvh5buildEP23btStridingMeshInterfacebRK9btVector3S4_EN29QuantizedNodeTriangleCallbackD0Ev(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+var __label__ = 0;
+	i7 = sp + -8;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = _ZTV31btInternalTriangleIndexCallback;
+	r2 = r0 >> 2;
+	r1 = (r1 + 8)|0;
+	heap32[(r2)] = r1;
+	heap32[(g0)] = r0;
+	_ZdlPv(i7);
+	return;
+}
+
+function _ZZN14btOptimizedBvh5buildEP23btStridingMeshInterfacebRK9btVector3S4_EN29QuantizedNodeTriangleCallback28internalProcessTriangleIndexEPS2_ii(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+	var r6;
+	var r7;
+	var f0;
+	var f1;
+	var f2;
+	var f3;
+	var f4;
+	var f5;
+	var f6;
+	var f7;
+	var f8;
+	var f9;
+	var f10;
+	var f11;
+var __label__ = 0;
+	i7 = sp + -64;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp+2)];
+	if(r0 <1024) //_LBB469_2
+{
+	r1 = heap32[(fp+3)];
+	if(r1 <2097152) //_LBB469_4
+{
+	if(r1 >-1) //_LBB469_6
+{
+	r2 = heap32[(fp)];
+	r3 = heap32[(fp+1)];
+	r4 = sp + -32;
+	r5 = r4 >> 2;
+	heap32[(fp+-8)] = 1566444395;
+	heap32[(r5+1)] = 1566444395;
+	heap32[(r5+2)] = 1566444395;
+	r6 = sp + -48;
+	heap32[(r5+3)] = 0;
+	r7 = r6 >> 2;
+	heap32[(fp+-12)] = -581039253;
+	heap32[(r7+1)] = -581039253;
+	heap32[(r7+2)] = -581039253;
+	r3 = r3 >> 2;
+	heap32[(r7+3)] = 0;
+	f0 = heapFloat[(r3)];
+	f1 =        999999984306749440;
+	if(f0 <f1) //_LBB469_8
+{
+	heapFloat[(fp+-8)] = f0;
+	f2 = f0;
+}
+else{
+	f2 = f1;
+}
+	f3 = heapFloat[(r3+1)];
+	if(f3 <f1) //_LBB469_11
+{
+	heapFloat[(r5+1)] = f3;
+	f1 = f3;
+}
+else{
+	f1 =        999999984306749440;
+}
+	f4 = heapFloat[(r3+2)];
+	f5 =        999999984306749440;
+	if(f4 <f5) //_LBB469_14
+{
+	heapFloat[(r5+2)] = f4;
+	f5 = f4;
+}
+	f6 = heapFloat[(r3+3)];
+	f7 =                         0;
+	if(f6 <f7) //_LBB469_17
+{
+	heapFloat[(r5+3)] = f6;
+	f7 = f6;
+}
+	f8 =       -999999984306749440;
+	if(f0 >f8) //_LBB469_20
+{
+	heapFloat[(fp+-12)] = f0;
+}
+else{
+	f0 = f8;
+}
+	if(f3 >f8) //_LBB469_23
+{
+	heapFloat[(r7+1)] = f3;
+}
+else{
+	f3 =       -999999984306749440;
+}
+	f8 =       -999999984306749440;
+	if(f4 >f8) //_LBB469_26
+{
+	heapFloat[(r7+2)] = f4;
+	f8 = f4;
+}
+	f4 =                         0;
+	if(f6 >f4) //_LBB469_29
+{
+	heapFloat[(r7+3)] = f6;
+	f4 = f6;
+}
+	f6 = heapFloat[(r3+4)];
+	if(f6 <f2) //_LBB469_32
+{
+	heapFloat[(fp+-8)] = f6;
+	f2 = f6;
+}
+	f9 = heapFloat[(r3+5)];
+	if(f9 <f1) //_LBB469_35
+{
+	heapFloat[(r5+1)] = f9;
+	f1 = f9;
+}
+	f10 = heapFloat[(r3+6)];
+	if(f10 <f5) //_LBB469_38
+{
+	heapFloat[(r5+2)] = f10;
+	f5 = f10;
+}
+	f11 = heapFloat[(r3+7)];
+	if(f11 <f7) //_LBB469_41
+{
+	heapFloat[(r5+3)] = f11;
+	f7 = f11;
+}
+	if(f0 <f6) //_LBB469_44
+{
+	heapFloat[(fp+-12)] = f6;
+	f0 = f6;
+}
+	if(f3 <f9) //_LBB469_47
+{
+	heapFloat[(r7+1)] = f9;
+	f3 = f9;
+}
+	if(f8 <f10) //_LBB469_50
+{
+	heapFloat[(r7+2)] = f10;
+	f8 = f10;
+}
+	if(f4 <f11) //_LBB469_53
+{
+	heapFloat[(r7+3)] = f11;
+	f4 = f11;
+}
+	f6 = heapFloat[(r3+8)];
+	if(f6 <f2) //_LBB469_56
+{
+	heapFloat[(fp+-8)] = f6;
+	f2 = f6;
+}
+	f9 = heapFloat[(r3+9)];
+	if(f9 <f1) //_LBB469_59
+{
+	heapFloat[(r5+1)] = f9;
+	f1 = f9;
+}
+	f10 = heapFloat[(r3+10)];
+	if(f10 <f5) //_LBB469_62
+{
+	heapFloat[(r5+2)] = f10;
+	f5 = f10;
+}
+	f11 = heapFloat[(r3+11)];
+if(!(f11 >=f7)) //_LBB469_65
+{
+	heapFloat[(r5+3)] = f11;
+}
+	if(f0 <f6) //_LBB469_67
+{
+	heapFloat[(fp+-12)] = f6;
+	f0 = f6;
+}
+	if(f3 <f9) //_LBB469_70
+{
+	heapFloat[(r7+1)] = f9;
+	f3 = f9;
+}
+	if(f8 <f10) //_LBB469_73
+{
+	heapFloat[(r7+2)] = f10;
+	f8 = f10;
+}
+if(!(f4 >=f11)) //_LBB469_76
+{
+	heapFloat[(r7+3)] = f11;
+}
+	f4 = f0-f2;
+	f6 =     0.0020000000949949026;
+if(!(f4 >=f6)) //_LBB469_78
+{
+	f4 =     0.0010000000474974513;
+	f0 = f0+f4;
+	f4 =    -0.0010000000474974513;
+	f2 = f2+f4;
+	heapFloat[(fp+-12)] = f0;
+	heapFloat[(fp+-8)] = f2;
+}
+	f0 = f3-f1;
+if(!(f0 >=f6)) //_LBB469_80
+{
+	f0 =     0.0010000000474974513;
+	f2 =    -0.0010000000474974513;
+	f0 = f3+f0;
+	f1 = f1+f2;
+	heapFloat[(r7+1)] = f0;
+	heapFloat[(r5+1)] = f1;
+}
+	f0 = f8-f5;
+if(!(f0 >=f6)) //_LBB469_82
+{
+	f0 =     0.0010000000474974513;
+	f1 =    -0.0010000000474974513;
+	f0 = f8+f0;
+	f1 = f5+f1;
+	heapFloat[(r7+2)] = f0;
+	heapFloat[(r5+2)] = f1;
+}
+	r2 = r2 >> 2;
+	r3 = heap32[(r2+2)];
+	r5 = sp + -16;
+	heap32[(g0)] = r3;
+	heap32[(g0+1)] = r5;
+	heap32[(g0+2)] = r4;
+	heap32[(g0+3)] = 0;
+	_ZNK14btQuantizedBvh8quantizeEPtRK9btVector3i(i7);
+	r3 = heap32[(r2+2)];
+	r4 = (r5 + 6)|0;
+	heap32[(g0)] = r3;
+	heap32[(g0+1)] = r4;
+	heap32[(g0+2)] = r6;
+	heap32[(g0+3)] = 1;
+	r0 = r0 << 21;
+	r0 = r0 | r1;
+	_ZNK14btQuantizedBvh8quantizeEPtRK9btVector3i(i7);
+	r1 = r5 >> 2;
+	heap32[(r1+3)] = r0;
+	r1 = heap32[(r2+1)];
+	r2 = r1 >> 2;
+	r3 = heap32[(r2+1)];
+	r4 = heap32[(r2+2)];
+	if(r4 ==r3) //_LBB469_84
+{
+	r4 = 1;
+	r5 = r3 << 1;
+	r3 = r3 == 0 ? r4 : r5;
+	heap32[(g0)] = r1;
+	heap32[(g0+1)] = r3;
+	_ZN20btAlignedObjectArrayI18btQuantizedBvhNodeE7reserveEi(i7);
+	r3 = heap32[(r2+1)];
+}
+	r1 = heap32[(r2+3)];
+	r4 = heapU16[(sp+-16)>>1];
+	r3 = r3 << 4;
+	heap16[(r1+r3)>>1] = r4;
+	r1 = (r1 + r3)|0;
+	r3 = heapU16[(sp+-14)>>1];
+	heap16[(r1+2)>>1] = r3;
+	r3 = heapU16[(sp+-12)>>1];
+	heap16[(r1+4)>>1] = r3;
+	r3 = heapU16[(sp+-10)>>1];
+	heap16[(r1+6)>>1] = r3;
+	r3 = heapU16[(sp+-8)>>1];
+	heap16[(r1+8)>>1] = r3;
+	r3 = heapU16[(sp+-6)>>1];
+	r4 = r1 >> 2;
+	heap16[(r1+10)>>1] = r3;
+	heap32[(r4+3)] = r0;
+	r0 = heap32[(r2+1)];
+	r0 = (r0 + 1)|0;
+	heap32[(r2+1)] = r0;
+	return;
+}
+else{
+	r0 = _2E_str20316;
+	r1 = _2E_str10306;
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r1;
+	heap32[(g0+2)] = 103;
+	_assert(i7);
+}
+}
+else{
+	r0 = _2E_str19315;
+	r1 = _2E_str10306;
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r1;
+	heap32[(g0+2)] = 101;
+	_assert(i7);
+}
+}
+else{
+	r0 = _2E_str18314;
+	r1 = _2E_str10306;
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r1;
+	heap32[(g0+2)] = 100;
+	_assert(i7);
+}
+}
+
+function _ZNK14btOptimizedBvh16serializeInPlaceEPvjb(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+var __label__ = 0;
+	i7 = sp + -16;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = heap32[(fp+1)];
+	r2 = heap32[(fp+2)];
+	r3 = heap32[(fp+3)];
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r1;
+	heap32[(g0+2)] = r2;
+	heap32[(g0+3)] = r3;
+	_ZNK14btQuantizedBvh9serializeEPvjb(i7);
+	r0 = 1;
+	r_g0 = r0;
+	return;
+}
+
+function _ZN14btOptimizedBvhD0Ev(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+var __label__ = 0;
+	i7 = sp + -8;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = _ZTV14btOptimizedBvh;
+	r2 = r0 >> 2;
+	r1 = (r1 + 8)|0;
+	heap32[(r2)] = r1;
+	heap32[(g0)] = r0;
+	_ZN14btQuantizedBvhD2Ev(i7);
+if(!(r0 ==0)) //_LBB471_2
+{
+	r0 = gNumAlignedFree;
+	r0 = r0 >> 2;
+	r1 = heap32[(r0)];
+	r1 = (r1 + 1)|0;
+	heap32[(r0)] = r1;
+	r0 = heap32[(r2+-1)];
+	heap32[(g0)] = r0;
+	free(i7);
+}
+	return;
+}
+
+function _ZN14btOptimizedBvhD1Ev(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+var __label__ = 0;
+	i7 = sp + -8;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = _ZTV14btOptimizedBvh;
+	r2 = r0 >> 2;
+	r1 = (r1 + 8)|0;
+	heap32[(r2)] = r1;
+	heap32[(g0)] = r0;
+	_ZN14btQuantizedBvhD2Ev(i7);
+	return;
+}
+
+function _ZNK23btPolyhedralConvexShape21calculateLocalInertiaEfR9btVector3(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var f0;
+	var f1;
+	var f2;
+	var f3;
+	var f4;
+	var f5;
+var __label__ = 0;
+	i7 = sp + -112;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = r0 >> 2;
+	r2 = heap32[(r1)];
+	r2 = r2 >> 2;
+	r2 = heap32[(r2+11)];
+	heap32[(g0)] = r0;
+	r3 = sp + -64;
+	__FUNCTION_TABLE__[(r2)>>2](i7);
+	f0 = f_g0;
+	r2 = r3 >> 2;
+	heap32[(fp+-16)] = 1065353216;
+	heap32[(r2+1)] = 0;
+	heap32[(r2+2)] = 0;
+	heap32[(r2+3)] = 0;
+	heap32[(r2+4)] = 0;
+	heap32[(r2+5)] = 1065353216;
+	heap32[(r2+6)] = 0;
+	heap32[(r2+7)] = 0;
+	heap32[(r2+8)] = 0;
+	heap32[(r2+9)] = 0;
+	heap32[(r2+10)] = 1065353216;
+	heap32[(r2+11)] = 0;
+	heap32[(r2+12)] = 0;
+	heap32[(r2+13)] = 0;
+	heap32[(r2+14)] = 0;
+	heap32[(r2+15)] = 0;
+	r1 = heap32[(r1)];
+	r1 = r1 >> 2;
+	r1 = heap32[(r1+2)];
+	r2 = sp + -80;
+	r4 = sp + -96;
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r3;
+	heap32[(g0+2)] = r2;
+	heap32[(g0+3)] = r4;
+	__FUNCTION_TABLE__[(r1)>>2](i7);
+	r0 = r4 >> 2;
+	r1 = r2 >> 2;
+	f1 = heapFloat[(r0+2)];
+	f2 = heapFloat[(r1+2)];
+	f3 = heapFloat[(r0+1)];
+	f4 = heapFloat[(r1+1)];
+	f3 = f3-f4;
+	f4 =                       0.5;
+	f1 = f1-f2;
+	f2 = heapFloat[(fp+-24)];
+	f5 = heapFloat[(fp+-20)];
+	f2 = f2-f5;
+	f3 = f3*f4;
+	f1 = f1*f4;
+	f2 = f2*f4;
+	f3 = f3+f0;
+	f1 = f1+f0;
+	f0 = f2+f0;
+	f2 = f3+f3;
+	f1 = f1+f1;
+	f0 = f0+f0;
+	f2 = f2*f2;
+	f1 = f1*f1;
+	f3 = heapFloat[(fp+1)];
+	f4 =      0.083333328366279602;
+	f0 = f0*f0;
+	r0 = heap32[(fp+2)];
+	f5 = f2+f1;
+	f3 = f3*f4;
+	f1 = f0+f1;
+	r0 = r0 >> 2;
+	f4 = f5*f3;
+	f0 = f0+f2;
+	f1 = f1*f3;
+	heapFloat[(r0)] = f4;
+	f0 = f0*f3;
+	heapFloat[(r0+1)] = f1;
+	heapFloat[(r0+2)] = f0;
+	heap32[(r0+3)] = 0;
+	return;
+}
+
+function _ZNK34btPolyhedralConvexAabbCachingShape7getAabbERK11btTransformR9btVector3S4_(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var f0;
+var __label__ = 0;
+	i7 = sp + -24;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = r0 >> 2;
+	r1 = heap32[(r1)];
+	r1 = r1 >> 2;
+	r1 = heap32[(r1+11)];
+	heap32[(g0)] = r0;
+	__FUNCTION_TABLE__[(r1)>>2](i7);
+	f0 = f_g0;
+	r1 = heapU8[r0+84];
+	if(r1 !=0) //_LBB474_2
+{
+	r1 = heap32[(fp+1)];
+	r2 = heap32[(fp+2)];
+	r3 = heap32[(fp+3)];
+	r4 = (r0 + 52)|0;
+	r0 = (r0 + 68)|0;
+	heap32[(g0)] = r4;
+	heap32[(g0+1)] = r0;
+	heapFloat[(g0+2)] = f0;
+	heap32[(g0+3)] = r1;
+	heap32[(g0+4)] = r2;
+	heap32[(g0+5)] = r3;
+	_Z15btTransformAabbRK9btVector3S1_fRK11btTransformRS_S5_(i7);
+	return;
+}
+else{
+	r0 = _2E_str6232;
+	r1 = _2E_str7331;
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r1;
+	heap32[(g0+2)] = 86;
+	_assert(i7);
+}
+}
+
+function _ZN34btPolyhedralConvexAabbCachingShape15recalcLocalAabbEv(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var f0;
+	var f1;
+var __label__ = 0;
+	i7 = sp + -112;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = 1;
+	r2 = _ZGVZN34btPolyhedralConvexAabbCachingShape15recalcLocalAabbEvE11_directions;
+	heap8[r0+84] = r1;
+	r3 = heapU8[r2];
+if(!(r3 !=0)) //_LBB475_2
+{
+	r3 = _ZZN34btPolyhedralConvexAabbCachingShape15recalcLocalAabbEvE11_directions;
+	r3 = r3 >> 2;
+	heap32[(r3)] = 1065353216;
+	heap32[(r3+1)] = 0;
+	heap32[(r3+2)] = 0;
+	heap32[(r3+3)] = 0;
+	heap32[(r3+4)] = 0;
+	heap32[(r3+5)] = 1065353216;
+	heap32[(r3+6)] = 0;
+	heap32[(r3+7)] = 0;
+	heap32[(r3+8)] = 0;
+	heap32[(r3+9)] = 0;
+	heap32[(r3+10)] = 1065353216;
+	heap32[(r3+11)] = 0;
+	heap32[(r3+12)] = -1082130432;
+	heap32[(r3+13)] = 0;
+	heap32[(r3+14)] = 0;
+	heap32[(r3+15)] = 0;
+	heap32[(r3+16)] = 0;
+	heap32[(r3+17)] = -1082130432;
+	heap32[(r3+18)] = 0;
+	heap32[(r3+19)] = 0;
+	heap32[(r3+20)] = 0;
+	heap32[(r3+21)] = 0;
+	heap32[(r3+22)] = -1082130432;
+	heap32[(r3+23)] = 0;
+	heap8[r2] = r1;
+}
+	r1 = sp + -96;
+	heap32[(g0)] = r1;
+	heap32[(g0+1)] = 0;
+	heap32[(g0+2)] = 96;
+	r2 = r0 >> 2;
+	memset(i7);
+	r3 = heap32[(r2)];
+	r3 = r3 >> 2;
+	r3 = heap32[(r3+17)];
+	r4 = _ZZN34btPolyhedralConvexAabbCachingShape15recalcLocalAabbEvE11_directions;
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r4;
+	heap32[(g0+2)] = r1;
+	heap32[(g0+3)] = 6;
+	__FUNCTION_TABLE__[(r3)>>2](i7);
+	f0 = heapFloat[(fp+-24)];
+	f1 = heapFloat[(r2+11)];
+	f0 = f0+f1;
+	r0 = r1 >> 2;
+	heapFloat[(r2+17)] = f0;
+	f0 = heapFloat[(r0+12)];
+	f0 = f0-f1;
+	heapFloat[(r2+13)] = f0;
+	f0 = heapFloat[(r0+5)];
+	f0 = f0+f1;
+	heapFloat[(r2+18)] = f0;
+	f0 = heapFloat[(r0+17)];
+	f0 = f0-f1;
+	heapFloat[(r2+14)] = f0;
+	f0 = heapFloat[(r0+10)];
+	f0 = f0+f1;
+	heapFloat[(r2+19)] = f0;
+	f0 = heapFloat[(r0+22)];
+	f0 = f0-f1;
+	heapFloat[(r2+15)] = f0;
+	return;
+}
+
+function _ZNK13btSphereShape37localGetSupportingVertexWithoutMarginERK9btVector3(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+var __label__ = 0;
+	i7 = sp + 0;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r0 = r0 >> 2;
+	heap32[(r0)] = 0;
+	heap32[(r0+1)] = 0;
+	heap32[(r0+2)] = 0;
+	heap32[(r0+3)] = 0;
+	return;
+}
+
+function _ZNK13btSphereShape7getNameEv(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+var __label__ = 0;
+	i7 = sp + 0;var g0 = i7>>2; // save stack
+	r0 = _2E_str342;
+	r_g0 = r0;
+	return;
+}
+
+function _ZN13btSphereShape9setMarginEf(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+var __label__ = 0;
+	i7 = sp + 0;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r0 = r0 >> 2;
+	heap32[(r0+11)] = heap32[(fp+1)];
+	return;
+}
+
+function _ZNK13btSphereShape9getMarginEv(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var f0;
+	var f1;
+var __label__ = 0;
+	i7 = sp + 0;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r0 = r0 >> 2;
+	f0 = heapFloat[(r0+7)];
+	f1 = heapFloat[(r0+3)];
+	f0 = f0*f1;
+	f_g0 = f0;
+	return;
+}
+
+function _ZNK13btSphereShape49batchedUnitVectorGetSupportingVertexWithoutMarginEPK9btVector3PS0_i(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+var __label__ = 0;
+	i7 = sp + 0;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp+3)];
+if(!(r0 <1)) //_LBB480_3
+{
+	r1 = heap32[(fp+2)];
+	r1 = (r1 + 8)|0;
+_3: while(true){
+	r2 = r1 >> 2;
+	heap32[(r2+-2)] = 0;
+	heap32[(r2+-1)] = 0;
+	r0 = (r0 + -1)|0;
+	r1 = (r1 + 16)|0;
+	heap32[(r2)] = 0;
+	heap32[(r2+1)] = 0;
+	if(r0 !=0) //_LBB480_2
+{
+continue _3;
+}
+else{
+break _3;
+}
+}
+}
+	return;
+}
+
+function _ZNK13btSphereShape7getAabbERK11btTransformR9btVector3S4_(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var f0;
+	var f1;
+	var f2;
+	var f3;
+	var f4;
+	var f5;
+var __label__ = 0;
+	i7 = sp + -8;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = r0 >> 2;
+	r2 = heap32[(r1)];
+	r2 = r2 >> 2;
+	r2 = heap32[(r2+11)];
+	heap32[(g0)] = r0;
+	__FUNCTION_TABLE__[(r2)>>2](i7);
+	f0 = f_g0;
+	r2 = heap32[(r1)];
+	r2 = r2 >> 2;
+	r2 = heap32[(r2+11)];
+	heap32[(g0)] = r0;
+	__FUNCTION_TABLE__[(r2)>>2](i7);
+	f1 = f_g0;
+	r1 = heap32[(r1)];
+	r1 = r1 >> 2;
+	r1 = heap32[(r1+11)];
+	r2 = heap32[(fp+1)];
+	heap32[(g0)] = r0;
+	r0 = r2 >> 2;
+	__FUNCTION_TABLE__[(r1)>>2](i7);
+	r1 = heap32[(fp+2)];
+	f3 = heapFloat[(r0+14)];
+	f4 = heapFloat[(r0+13)];
+	f5 = heapFloat[(r0+12)];
+	r1 = r1 >> 2;
+	f5 = f5-f_g0;
+	f4 = f4-f1;
+	heapFloat[(r1)] = f5;
+	f3 = f3-f0;
+	heapFloat[(r1+1)] = f4;
+	heapFloat[(r1+2)] = f3;
+	heap32[(r1+3)] = 0;
+	r1 = heap32[(fp+3)];
+	f3 = heapFloat[(r0+14)];
+	f4 = heapFloat[(r0+13)];
+	f5 = heapFloat[(r0+12)];
+	r0 = r1 >> 2;
+	f2 = f5+f_g0;
+	f1 = f4+f1;
+	heapFloat[(r0)] = f2;
+	f0 = f3+f0;
+	heapFloat[(r0+1)] = f1;
+	heapFloat[(r0+2)] = f0;
+	heap32[(r0+3)] = 0;
+	return;
+}
+
+function _ZNK13btSphereShape21calculateLocalInertiaEfR9btVector3(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var f0;
+	var f1;
+	var f2;
+var __label__ = 0;
+	i7 = sp + -8;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = r0 >> 2;
+	r2 = heap32[(r1)];
+	r2 = r2 >> 2;
+	r2 = heap32[(r2+11)];
+	heap32[(g0)] = r0;
+	__FUNCTION_TABLE__[(r2)>>2](i7);
+	r1 = heap32[(r1)];
+	r1 = r1 >> 2;
+	r1 = heap32[(r1+11)];
+	f1 = heapFloat[(fp+1)];
+	f2 =       0.40000000596046448;
+	f1 = f1*f2;
+	heap32[(g0)] = r0;
+	r0 = heap32[(fp+2)];
+	f0 = f1*f_g0;
+	__FUNCTION_TABLE__[(r1)>>2](i7);
+	r0 = r0 >> 2;
+	f0 = f0*f_g0;
+	heapFloat[(r0)] = f0;
+	heapFloat[(r0+1)] = f0;
+	heapFloat[(r0+2)] = f0;
+	heap32[(r0+3)] = 0;
+	return;
+}
+
+function _ZN13btSphereShapeD0Ev(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+var __label__ = 0;
+	i7 = sp + -8;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = _ZTV13btConvexShape;
+	r2 = r0 >> 2;
+	r1 = (r1 + 8)|0;
+	heap32[(r2)] = r1;
+if(!(r0 ==0)) //_LBB483_2
+{
+	r0 = gNumAlignedFree;
+	r0 = r0 >> 2;
+	r1 = heap32[(r0)];
+	r1 = (r1 + 1)|0;
+	heap32[(r0)] = r1;
+	r0 = heap32[(r2+-1)];
+	heap32[(g0)] = r0;
+	free(i7);
+}
+	return;
+}
+
+function _ZN13btSphereShapeD1Ev(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+var __label__ = 0;
+	i7 = sp + 0;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = _ZTV13btConvexShape;
+	r0 = r0 >> 2;
+	r1 = (r1 + 8)|0;
+	heap32[(r0)] = r1;
+	return;
+}
+
+function _ZNK13btSphereShape24localGetSupportingVertexERK9btVector3(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var f0;
+	var f1;
+	var f2;
+	var f3;
+	var f4;
+	var f5;
+	var f6;
+	var f7;
+	var f8;
+var __label__ = 0;
+	i7 = sp + -32;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp+1)];
+	r1 = r0 >> 2;
+	r2 = heap32[(r1)];
+	r2 = r2 >> 2;
+	r2 = heap32[(r2+16)];
+	r3 = heap32[(fp+2)];
+	r4 = sp + -16;
+	heap32[(g0)] = r4;
+	heap32[(g0+1)] = r0;
+	heap32[(g0+2)] = r3;
+	__FUNCTION_TABLE__[(r2)>>2](i7);
+	r2 = r4 >> 2;
+	r4 = heap32[(fp)];
+	f0 = heapFloat[(fp+-4)];
+	f1 = heapFloat[(r2+1)];
+	f2 = heapFloat[(r2+2)];
+	r4 = r4 >> 2;
+	r3 = r3 >> 2;
+	heap32[(r4+3)] = heap32[(r2+3)];
+	f3 = heapFloat[(r3)];
+	f4 = heapFloat[(r3+1)];
+	f5 = heapFloat[(r3+2)];
+	f6 = f3*f3;
+	f7 = f4*f4;
+	f6 = f6+f7;
+	f7 = f5*f5;
+	f6 = f6+f7;
+	f7 =   1.4210854715202004e-014;
+	f8 =                        -1;
+	f3 = f6 < f7 ? f8 : f3;
+	f4 = f6 < f7 ? f8 : f4;
+	f5 = f6 < f7 ? f8 : f5;
+	f6 = f3*f3;
+	f7 = f4*f4;
+	f6 = f6+f7;
+	f7 = f5*f5;
+	f6 = f6+f7;
+	heapFloat[(g0)] = f6;
+	sqrtf(i7);
+	r1 = heap32[(r1)];
+	r1 = r1 >> 2;
+	r1 = heap32[(r1+11)];
+	f7 =                         1;
+	f6 = f7/f_g0;
+	heap32[(g0)] = r0;
+	f3 = f3*f6;
+	__FUNCTION_TABLE__[(r1)>>2](i7);
+	f4 = f4*f6;
+	f3 = f3*f_g0;
+	f5 = f5*f6;
+	f4 = f4*f_g0;
+	f0 = f0+f3;
+	f3 = f5*f_g0;
+	f1 = f1+f4;
+	heapFloat[(r4)] = f0;
+	f0 = f2+f3;
+	heapFloat[(r4+1)] = f1;
+	heapFloat[(r4+2)] = f0;
+	return;
+}
+
+function _ZNK23btStridingMeshInterface14hasPremadeAabbEv(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+var __label__ = 0;
+	i7 = sp + 0;var g0 = i7>>2; // save stack
+	r0 = 0;
+	r_g0 = r0;
+	return;
+}
+
+function _ZNK23btStridingMeshInterface14setPremadeAabbERK9btVector3S2_(sp)
+{
+	var i7;
+	var fp = sp>>2;
+var __label__ = 0;
+	i7 = sp + 0;var g0 = i7>>2; // save stack
+	return;
+}
+
+function _ZNK23btStridingMeshInterface14getPremadeAabbEP9btVector3S1_(sp)
+{
+	var i7;
+	var fp = sp>>2;
+var __label__ = 0;
+	i7 = sp + 0;var g0 = i7>>2; // save stack
+	return;
+}
+
+function _ZNK23btStridingMeshInterface28calculateSerializeBufferSizeEv(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+var __label__ = 0;
+	i7 = sp + 0;var g0 = i7>>2; // save stack
+	r0 = 28;
+	r_g0 = r0;
+	return;
+}
+
+function _ZNK23btStridingMeshInterface9serializeEPvP12btSerializer(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+	var r6;
+	var r7;
+	var r8;
+	var r9;
+	var r10;
+	var r11;
+	var r12;
+	var r13;
+	var r14;
+	var r15;
+	var r16;
+	var r17;
+var __label__ = 0;
+	i7 = sp + -72;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = r0 >> 2;
+	r2 = heap32[(r1)];
+	r2 = r2 >> 2;
+	r2 = heap32[(r2+7)];
+	r3 = heap32[(fp+1)];
+	heap32[(g0)] = r0;
+	__FUNCTION_TABLE__[(r2)>>2](i7);
+	r2 = r_g0;
+	r3 = r3 >> 2;
+	heap32[(r3+5)] = r2;
+	heap32[(r3)] = 0;
+if(!(r2 ==0)) //_LBB490_32
+{
+	r4 = heap32[(fp+2)];
+	r5 = r4 >> 2;
+	r6 = heap32[(r5)];
+	r6 = r6 >> 2;
+	r6 = heap32[(r6+4)];
+	heap32[(g0)] = r4;
+	heap32[(g0+1)] = 28;
+	heap32[(g0+2)] = r2;
+	__FUNCTION_TABLE__[(r6)>>2](i7);
+	r2 = r_g0;
+	r6 = heap32[(r5)];
+	r6 = r6 >> 2;
+	r7 = r2 >> 2;
+	r7 = heap32[(r7+2)];
+	r6 = heap32[(r6+7)];
+	heap32[(g0)] = r4;
+	heap32[(g0+1)] = r7;
+	__FUNCTION_TABLE__[(r6)>>2](i7);
+	heap32[(r3)] = r_g0;
+	r6 = heap32[(r1)];
+	r6 = r6 >> 2;
+	r6 = heap32[(r6+7)];
+	heap32[(g0)] = r0;
+	r8 = 0;
+	__FUNCTION_TABLE__[(r6)>>2](i7);
+	r6 = r_g0;
+_3: while(true){
+	if(r8 <r6) //_LBB490_2
+{
+	r9 = heap32[(r1)];
+	r9 = r9 >> 2;
+	r9 = heap32[(r9+4)];
+	r10 = sp + -4;
+	r11 = sp + -28;
+	r12 = sp + -16;
+	r13 = sp + -24;
+	r14 = sp + -8;
+	r15 = sp + -12;
+	r16 = sp + -32;
+	r17 = sp + -20;
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r10;
+	heap32[(g0+2)] = r11;
+	heap32[(g0+3)] = r12;
+	heap32[(g0+4)] = r13;
+	heap32[(g0+5)] = r14;
+	heap32[(g0+6)] = r15;
+	heap32[(g0+7)] = r16;
+	heap32[(g0+8)] = r17;
+	heap32[(g0+9)] = r8;
+	__FUNCTION_TABLE__[(r9)>>2](i7);
+	r9 = r7 >> 2;
+	r10 = heap32[(fp+-8)];
+	heap32[(r9+5)] = r10;
+	r10 = heap32[(fp+-7)];
+	heap32[(r9+6)] = r10;
+	heap32[(r9+4)] = 0;
+	heap32[(r9+2)] = 0;
+	heap32[(r9+3)] = 0;
+	heap32[(r9)] = 0;
+	heap32[(r9+1)] = 0;
+	r10 = heap32[(fp+-5)];
+	if(r10 ==3) //_LBB490_9
+{
+	r10 = heap32[(fp+-8)];
+if(!(r10 ==0)) //_LBB490_15
+{
+	r11 = heap32[(r5)];
+	r11 = r11 >> 2;
+	r11 = heap32[(r11+4)];
+	heap32[(g0)] = r4;
+	heap32[(g0+1)] = 8;
+	heap32[(g0+2)] = r10;
+	__FUNCTION_TABLE__[(r11)>>2](i7);
+	r10 = r_g0;
+	r11 = heap32[(r5)];
+	r11 = r11 >> 2;
+	r12 = r10 >> 2;
+	r12 = heap32[(r12+2)];
+	r11 = heap32[(r11+7)];
+	heap32[(g0)] = r4;
+	heap32[(g0+1)] = r12;
+	__FUNCTION_TABLE__[(r11)>>2](i7);
+	heap32[(r9+3)] = r_g0;
+	r11 = heap32[(fp+-8)];
+if(!(r11 <1)) //_LBB490_13
+{
+	r11 = 0;
+_11: while(true){
+	r13 = heap32[(fp+-3)];
+	r13 = (r13 * r11)|0;
+	r14 = heap32[(fp+-2)];
+	r15 = heapU16[(r14+r13)>>1];
+	r16 = r11 << 3;
+	r13 = (r14 + r13)|0;
+	heap16[(r12+r16)>>1] = r15;
+	r14 = (r12 + r16)|0;
+	r15 = heapU16[(r13+2)>>1];
+	heap16[(r14+2)>>1] = r15;
+	r13 = heapU16[(r13+4)>>1];
+	r11 = (r11 + 1)|0;
+	heap16[(r14+4)>>1] = r13;
+	r13 = heap32[(fp+-8)];
+if(!(r11 <r13)) //_LBB490_12
+{
+break _11;
+}
+}
+}
+	r11 = heap32[(r5)];
+	r11 = r11 >> 2;
+	r12 = r10 >> 2;
+	r11 = heap32[(r11+5)];
+	r12 = heap32[(r12+2)];
+	r13 = _2E_str1350;
+	heap32[(g0)] = r4;
+	heap32[(g0+1)] = r10;
+	heap32[(g0+2)] = r13;
+	heap32[(g0+3)] = 1497453121;
+	heap32[(g0+4)] = r12;
+	__FUNCTION_TABLE__[(r11)>>2](i7);
+}
+}
+else{
+	if(r10 !=2) //_LBB490_14
+{
+__label__ = 14;
+break _3;
+}
+else{
+	r10 = heap32[(fp+-8)];
+	r10 = (r10 * 3)|0;
+if(!(r10 ==0)) //_LBB490_15
+{
+	r11 = heap32[(r5)];
+	r11 = r11 >> 2;
+	r11 = heap32[(r11+4)];
+	heap32[(g0)] = r4;
+	heap32[(g0+1)] = 4;
+	heap32[(g0+2)] = r10;
+	__FUNCTION_TABLE__[(r11)>>2](i7);
+	r10 = r_g0;
+	r11 = heap32[(r5)];
+	r11 = r11 >> 2;
+	r12 = r10 >> 2;
+	r12 = heap32[(r12+2)];
+	r11 = heap32[(r11+7)];
+	heap32[(g0)] = r4;
+	heap32[(g0+1)] = r12;
+	__FUNCTION_TABLE__[(r11)>>2](i7);
+	heap32[(r9+2)] = r_g0;
+	r11 = heap32[(fp+-8)];
+_17: do {
+if(!(r11 <1)) //_LBB490_8
+{
+	r11 = 0;
+_19: while(true){
+	r13 = heap32[(fp+-3)];
+	r13 = (r13 * r11)|0;
+	r14 = heap32[(fp+-2)];
+	r15 = (r11 * 3)|0;
+	r13 = (r14 + r13)|0;
+	r13 = r13 >> 2;
+	r14 = r15 << 2;
+	r14 = (r12 + r14)|0;
+	r15 = heap32[(r13)];
+	r14 = r14 >> 2;
+	heap32[(r14)] = r15;
+	r15 = heap32[(r13+1)];
+	heap32[(r14+1)] = r15;
+	r13 = heap32[(r13+2)];
+	r11 = (r11 + 1)|0;
+	heap32[(r14+2)] = r13;
+	r13 = heap32[(fp+-8)];
+if(!(r11 <r13)) //_LBB490_7
+{
+break _17;
+}
+}
+}
+} while(0);
+	r11 = heap32[(r5)];
+	r11 = r11 >> 2;
+	r12 = r10 >> 2;
+	r11 = heap32[(r11+5)];
+	r12 = heap32[(r12+2)];
+	r13 = _2E_str349;
+	heap32[(g0)] = r4;
+	heap32[(g0+1)] = r10;
+	heap32[(g0+2)] = r13;
+	heap32[(g0+3)] = 1497453121;
+	heap32[(g0+4)] = r12;
+	__FUNCTION_TABLE__[(r11)>>2](i7);
+}
+}
+}
+	r10 = heap32[(fp+-4)];
+_23: do {
+	if(r10 ==1) //_LBB490_22
+{
+	r10 = heap32[(fp+-7)];
+	if(r10 ==0) //_LBB490_29
+{
+break _23;
+}
+else{
+	r11 = heap32[(r5)];
+	r11 = r11 >> 2;
+	r11 = heap32[(r11+4)];
+	heap32[(g0)] = r4;
+	heap32[(g0+1)] = 32;
+	heap32[(g0+2)] = r10;
+	__FUNCTION_TABLE__[(r11)>>2](i7);
+	r10 = r_g0;
+	r11 = heap32[(r5)];
+	r11 = r11 >> 2;
+	r12 = r10 >> 2;
+	r12 = heap32[(r12+2)];
+	r11 = heap32[(r11+7)];
+	heap32[(g0)] = r4;
+	heap32[(g0+1)] = r12;
+	__FUNCTION_TABLE__[(r11)>>2](i7);
+	heap32[(r9+1)] = r_g0;
+	r9 = heap32[(fp+-7)];
+_26: do {
+if(!(r9 <1)) //_LBB490_26
+{
+	r11 = heap32[(fp+-1)];
+	r13 = heap32[(fp+-6)];
+	r11 = (r11 + 16)|0;
+	r14 = 0;
+_28: while(true){
+	r15 = r14 << 5;
+	r15 = (r12 + r15)|0;
+	llvm_move_double(r15,r11+-16);
+	r14 = (r14 + 1)|0;
+	r16 = (r11 + r13)|0;
+	llvm_move_double(r15+8,r11+-8);
+	llvm_move_double(r15+16,r11);
+	r11 = r16;
+if(!(r14 <r9)) //_LBB490_25
+{
+break _26;
+}
+}
+}
+} while(0);
+	r9 = heap32[(r5)];
+	r9 = r9 >> 2;
+	r11 = r10 >> 2;
+	r9 = heap32[(r9+5)];
+	r11 = heap32[(r11+2)];
+	r12 = _2E_str5354;
+	heap32[(g0)] = r4;
+	heap32[(g0+1)] = r10;
+	heap32[(g0+2)] = r12;
+	heap32[(g0+3)] = 1497453121;
+	heap32[(g0+4)] = r11;
+	__FUNCTION_TABLE__[(r9)>>2](i7);
+}
+}
+else{
+	if(r10 !=0) //_LBB490_27
+{
+if(!(uint(r10) <uint(2))) //_LBB490_29
+{
+__label__ = 28;
+break _3;
+}
+}
+else{
+	r10 = heap32[(fp+-7)];
+if(!(r10 ==0)) //_LBB490_29
+{
+	r11 = heap32[(r5)];
+	r11 = r11 >> 2;
+	r11 = heap32[(r11+4)];
+	heap32[(g0)] = r4;
+	heap32[(g0+1)] = 16;
+	heap32[(g0+2)] = r10;
+	__FUNCTION_TABLE__[(r11)>>2](i7);
+	r10 = r_g0;
+	r11 = heap32[(r5)];
+	r11 = r11 >> 2;
+	r12 = r10 >> 2;
+	r12 = heap32[(r12+2)];
+	r11 = heap32[(r11+7)];
+	heap32[(g0)] = r4;
+	heap32[(g0+1)] = r12;
+	__FUNCTION_TABLE__[(r11)>>2](i7);
+	heap32[(r9)] = r_g0;
+	r9 = heap32[(fp+-7)];
+_36: do {
+if(!(r9 <1)) //_LBB490_21
+{
+	r9 = 0;
+_38: while(true){
+	r11 = heap32[(fp+-6)];
+	r13 = heap32[(fp+-1)];
+	r11 = (r11 * r9)|0;
+	r14 = r9 << 4;
+	r14 = (r12 + r14)|0;
+	r11 = (r13 + r11)|0;
+	r13 = r14 >> 2;
+	r11 = r11 >> 2;
+	heap32[(r13)] = heap32[(r11)];
+	r9 = (r9 + 1)|0;
+	heap32[(r13+1)] = heap32[(r11+1)];
+	heap32[(r13+2)] = heap32[(r11+2)];
+	r11 = heap32[(fp+-7)];
+if(!(r9 <r11)) //_LBB490_20
+{
+break _36;
+}
+}
+}
+} while(0);
+	r9 = heap32[(r5)];
+	r9 = r9 >> 2;
+	r11 = r10 >> 2;
+	r9 = heap32[(r9+5)];
+	r11 = heap32[(r11+2)];
+	r12 = _2E_str5223;
+	heap32[(g0)] = r4;
+	heap32[(g0+1)] = r10;
+	heap32[(g0+2)] = r12;
+	heap32[(g0+3)] = 1497453121;
+	heap32[(g0+4)] = r11;
+	__FUNCTION_TABLE__[(r9)>>2](i7);
+}
+}
+}
+} while(0);
+	r9 = heap32[(r1)];
+	r9 = r9 >> 2;
+	r9 = heap32[(r9+6)];
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r8;
+	r8 = (r8 + 1)|0;
+	r7 = (r7 + 28)|0;
+	__FUNCTION_TABLE__[(r9)>>2](i7);
+}
+else{
+__label__ = 31;
+break _3;
+}
+}
+switch(__label__ ){//multiple entries
+case 31:
+	r0 = heap32[(r5)];
+	r0 = r0 >> 2;
+	r5 = r2 >> 2;
+	r0 = heap32[(r0+5)];
+	r5 = heap32[(r5+2)];
+	r6 = _2E_str7356;
+	heap32[(g0)] = r4;
+	heap32[(g0+1)] = r2;
+	heap32[(g0+2)] = r6;
+	heap32[(g0+3)] = 1497453121;
+	heap32[(g0+4)] = r5;
+	__FUNCTION_TABLE__[(r0)>>2](i7);
+break;
+case 28:
+	r0 = _2E_str6355;
+	r1 = _2E_str3352;
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r1;
+	heap32[(g0+2)] = 319;
+	_assert(i7);
+break;
+case 14:
+	r0 = _2E_str10;
+	r1 = _2E_str3352;
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r1;
+	heap32[(g0+2)] = 271;
+	_assert(i7);
+break;
+}
+}
+	heap32[(r3+1)] = heap32[(r1+1)];
+	heap32[(r3+2)] = heap32[(r1+2)];
+	heap32[(r3+3)] = heap32[(r1+3)];
+	heap32[(r3+4)] = heap32[(r1+4)];
+	r0 = _2E_str8357;
+	r_g0 = r0;
+	return;
+}
+
+function _ZNK23btStridingMeshInterface27InternalProcessAllTrianglesEP31btInternalTriangleIndexCallbackRK9btVector3S4_(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+	var r6;
+	var r7;
+	var r8;
+	var r9;
+	var r10;
+	var r11;
+	var r12;
+	var r13;
+	var f0;
+	var f1;
+	var f2;
+	var f3;
+	var f4;
+	var f5;
+var __label__ = 0;
+	i7 = sp + -120;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = r0 >> 2;
+	r2 = heap32[(r1)];
+	r2 = r2 >> 2;
+	r2 = heap32[(r2+7)];
+	heap32[(g0)] = r0;
+	__FUNCTION_TABLE__[(r2)>>2](i7);
+	r2 = r_g0;
+	r3 = heap32[(fp+1)];
+	f0 = heapFloat[(r1+1)];
+	f1 = heapFloat[(r1+2)];
+	f2 = heapFloat[(r1+3)];
+	r4 = 0;
+_1: while(true){
+	if(r4 <r2) //_LBB491_1
+{
+	r5 = heap32[(r1)];
+	r5 = r5 >> 2;
+	r5 = heap32[(r5+4)];
+	r6 = sp + -4;
+	r7 = sp + -28;
+	r8 = sp + -16;
+	r9 = sp + -24;
+	r10 = sp + -8;
+	r11 = sp + -12;
+	r12 = sp + -32;
+	r13 = sp + -20;
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r6;
+	heap32[(g0+2)] = r7;
+	heap32[(g0+3)] = r8;
+	heap32[(g0+4)] = r9;
+	heap32[(g0+5)] = r10;
+	heap32[(g0+6)] = r11;
+	heap32[(g0+7)] = r12;
+	heap32[(g0+8)] = r13;
+	heap32[(g0+9)] = r4;
+	__FUNCTION_TABLE__[(r5)>>2](i7);
+	r5 = heap32[(fp+-4)];
+_4: do {
+	if(r5 ==1) //_LBB491_13
+{
+	r5 = heap32[(fp+-5)];
+	if(r5 ==3) //_LBB491_17
+{
+	r5 = heap32[(fp+-8)];
+	if(r5 <1) //_LBB491_25
+{
+break _4;
+}
+else{
+	r5 = 0;
+_9: while(true){
+	r6 = heap32[(fp+-3)];
+	r7 = heap32[(fp+-2)];
+	r6 = (r6 * r5)|0;
+	r8 = heapU16[(r7+r6)>>1];
+	r9 = heap32[(fp+-6)];
+	r10 = heap32[(fp+-1)];
+	r8 = (r8 * r9)|0;
+	r11 = (r10 + r8)|0;
+	f3 = llvm_readDouble((r10+r8));
+	f4 = llvm_readDouble((r11+16));
+	f5 = llvm_readDouble((r11+8));
+	f3 = f3; //fdtos f3, f3
+	r8 = sp + -80;
+	f5 = f5; //fdtos f5, f5
+	f3 = f3*f0;
+	r11 = r8 >> 2;
+	f4 = f4; //fdtos f4, f4
+	f5 = f5*f1;
+	heapFloat[(fp+-20)] = f3;
+	f3 = f4*f2;
+	heapFloat[(r11+1)] = f5;
+	heapFloat[(r11+2)] = f3;
+	r6 = (r7 + r6)|0;
+	heap32[(r11+3)] = 0;
+	r7 = heapU16[(r6+2)>>1];
+	r7 = (r7 * r9)|0;
+	r12 = (r10 + r7)|0;
+	f3 = llvm_readDouble((r10+r7));
+	f3 = f3; //fdtos f3, f3
+	f4 = llvm_readDouble((r12+16));
+	f5 = llvm_readDouble((r12+8));
+	f5 = f5; //fdtos f5, f5
+	f3 = f3*f0;
+	f4 = f4; //fdtos f4, f4
+	f5 = f5*f1;
+	heapFloat[(r11+4)] = f3;
+	f3 = f4*f2;
+	heapFloat[(r11+5)] = f5;
+	heapFloat[(r11+6)] = f3;
+	heap32[(r11+7)] = 0;
+	r6 = heapU16[(r6+4)>>1];
+	r6 = (r6 * r9)|0;
+	r7 = (r10 + r6)|0;
+	f3 = llvm_readDouble((r10+r6));
+	f3 = f3; //fdtos f3, f3
+	f4 = llvm_readDouble((r7+16));
+	f5 = llvm_readDouble((r7+8));
+	f5 = f5; //fdtos f5, f5
+	f3 = f3*f0;
+	f4 = f4; //fdtos f4, f4
+	f5 = f5*f1;
+	heapFloat[(r11+8)] = f3;
+	f3 = f4*f2;
+	heapFloat[(r11+9)] = f5;
+	heapFloat[(r11+10)] = f3;
+	r6 = r3 >> 2;
+	heap32[(r11+11)] = 0;
+	r6 = heap32[(r6)];
+	r6 = r6 >> 2;
+	r6 = heap32[(r6+2)];
+	heap32[(g0)] = r3;
+	heap32[(g0+1)] = r8;
+	heap32[(g0+2)] = r4;
+	heap32[(g0+3)] = r5;
+	r5 = (r5 + 1)|0;
+	__FUNCTION_TABLE__[(r6)>>2](i7);
+	r6 = heap32[(fp+-8)];
+	if(r5 <r6) //_LBB491_20
+{
+continue _9;
+}
+else{
+break _4;
+}
+}
+}
+}
+else{
+	if(r5 !=2) //_LBB491_21
+{
+	r5 = (r5 + -2)|0;
+if(!(uint(r5) <uint(2))) //_LBB491_25
+{
+__label__ = 22;
+break _1;
+}
+}
+else{
+	r5 = heap32[(fp+-8)];
+	if(r5 <1) //_LBB491_25
+{
+break _4;
+}
+else{
+	r5 = 0;
+_16: while(true){
+	r6 = heap32[(fp+-3)];
+	r7 = heap32[(fp+-2)];
+	r6 = (r6 * r5)|0;
+	r6 = (r7 + r6)|0;
+	r6 = r6 >> 2;
+	r7 = heap32[(r6)];
+	r8 = heap32[(fp+-6)];
+	r9 = heap32[(fp+-1)];
+	r7 = (r8 * r7)|0;
+	r10 = (r9 + r7)|0;
+	f3 = llvm_readDouble((r9+r7));
+	f4 = llvm_readDouble((r10+16));
+	f5 = llvm_readDouble((r10+8));
+	f3 = f3; //fdtos f3, f3
+	r7 = sp + -80;
+	f5 = f5; //fdtos f5, f5
+	f3 = f3*f0;
+	r10 = r7 >> 2;
+	f4 = f4; //fdtos f4, f4
+	f5 = f5*f1;
+	heapFloat[(fp+-20)] = f3;
+	f3 = f4*f2;
+	heapFloat[(r10+1)] = f5;
+	heapFloat[(r10+2)] = f3;
+	heap32[(r10+3)] = 0;
+	r11 = heap32[(r6+1)];
+	r11 = (r8 * r11)|0;
+	r12 = (r9 + r11)|0;
+	f3 = llvm_readDouble((r9+r11));
+	f3 = f3; //fdtos f3, f3
+	f4 = llvm_readDouble((r12+16));
+	f5 = llvm_readDouble((r12+8));
+	f5 = f5; //fdtos f5, f5
+	f3 = f3*f0;
+	f4 = f4; //fdtos f4, f4
+	f5 = f5*f1;
+	heapFloat[(r10+4)] = f3;
+	f3 = f4*f2;
+	heapFloat[(r10+5)] = f5;
+	heapFloat[(r10+6)] = f3;
+	heap32[(r10+7)] = 0;
+	r6 = heap32[(r6+2)];
+	r6 = (r8 * r6)|0;
+	r8 = (r9 + r6)|0;
+	f3 = llvm_readDouble((r9+r6));
+	f3 = f3; //fdtos f3, f3
+	f4 = llvm_readDouble((r8+16));
+	f5 = llvm_readDouble((r8+8));
+	f5 = f5; //fdtos f5, f5
+	f3 = f3*f0;
+	f4 = f4; //fdtos f4, f4
+	f5 = f5*f1;
+	heapFloat[(r10+8)] = f3;
+	f3 = f4*f2;
+	heapFloat[(r10+9)] = f5;
+	heapFloat[(r10+10)] = f3;
+	r6 = r3 >> 2;
+	heap32[(r10+11)] = 0;
+	r6 = heap32[(r6)];
+	r6 = r6 >> 2;
+	r6 = heap32[(r6+2)];
+	heap32[(g0)] = r3;
+	heap32[(g0+1)] = r7;
+	heap32[(g0+2)] = r4;
+	heap32[(g0+3)] = r5;
+	r5 = (r5 + 1)|0;
+	__FUNCTION_TABLE__[(r6)>>2](i7);
+	r6 = heap32[(fp+-8)];
+	if(r5 <r6) //_LBB491_19
+{
+continue _16;
+}
+else{
+break _4;
+}
+}
+}
+}
+}
+}
+else{
+	if(r5 !=0) //_LBB491_23
+{
+if(!(uint(r5) <uint(2))) //_LBB491_25
+{
+__label__ = 24;
+break _1;
+}
+}
+else{
+	r5 = heap32[(fp+-5)];
+	if(r5 ==3) //_LBB491_7
+{
+	r5 = heap32[(fp+-8)];
+	if(r5 <1) //_LBB491_25
+{
+break _4;
+}
+else{
+	r5 = 0;
+_25: while(true){
+	r6 = heap32[(fp+-3)];
+	r7 = heap32[(fp+-2)];
+	r6 = (r6 * r5)|0;
+	r8 = heapU16[(r7+r6)>>1];
+	r9 = heap32[(fp+-6)];
+	r10 = heap32[(fp+-1)];
+	r8 = (r8 * r9)|0;
+	r8 = (r10 + r8)|0;
+	r8 = r8 >> 2;
+	f3 = heapFloat[(r8)];
+	f4 = heapFloat[(r8+2)];
+	f5 = heapFloat[(r8+1)];
+	r8 = sp + -80;
+	f3 = f3*f0;
+	r11 = r8 >> 2;
+	f5 = f5*f1;
+	heapFloat[(fp+-20)] = f3;
+	f3 = f4*f2;
+	heapFloat[(r11+1)] = f5;
+	heapFloat[(r11+2)] = f3;
+	r6 = (r7 + r6)|0;
+	heap32[(r11+3)] = 0;
+	r7 = heapU16[(r6+2)>>1];
+	r7 = (r7 * r9)|0;
+	r7 = (r10 + r7)|0;
+	r7 = r7 >> 2;
+	f3 = heapFloat[(r7+2)];
+	f4 = heapFloat[(r7+1)];
+	f5 = heapFloat[(r7)];
+	f5 = f5*f0;
+	f4 = f4*f1;
+	heapFloat[(r11+4)] = f5;
+	f3 = f3*f2;
+	heapFloat[(r11+5)] = f4;
+	heapFloat[(r11+6)] = f3;
+	heap32[(r11+7)] = 0;
+	r6 = heapU16[(r6+4)>>1];
+	r6 = (r6 * r9)|0;
+	r6 = (r10 + r6)|0;
+	r6 = r6 >> 2;
+	f3 = heapFloat[(r6+2)];
+	f4 = heapFloat[(r6+1)];
+	f5 = heapFloat[(r6)];
+	f5 = f5*f0;
+	f4 = f4*f1;
+	heapFloat[(r11+8)] = f5;
+	f3 = f3*f2;
+	heapFloat[(r11+9)] = f4;
+	heapFloat[(r11+10)] = f3;
+	r6 = r3 >> 2;
+	heap32[(r11+11)] = 0;
+	r6 = heap32[(r6)];
+	r6 = r6 >> 2;
+	r6 = heap32[(r6+2)];
+	heap32[(g0)] = r3;
+	heap32[(g0+1)] = r8;
+	heap32[(g0+2)] = r4;
+	heap32[(g0+3)] = r5;
+	r5 = (r5 + 1)|0;
+	__FUNCTION_TABLE__[(r6)>>2](i7);
+	r6 = heap32[(fp+-8)];
+	if(r5 <r6) //_LBB491_10
+{
+continue _25;
+}
+else{
+break _4;
+}
+}
+}
+}
+else{
+	if(r5 !=2) //_LBB491_11
+{
+	r5 = (r5 + -2)|0;
+if(!(uint(r5) <uint(2))) //_LBB491_25
+{
+__label__ = 12;
+break _1;
+}
+}
+else{
+	r5 = heap32[(fp+-8)];
+if(!(r5 <1)) //_LBB491_25
+{
+	r5 = 0;
+_32: while(true){
+	r6 = heap32[(fp+-3)];
+	r7 = heap32[(fp+-2)];
+	r6 = (r6 * r5)|0;
+	r6 = (r7 + r6)|0;
+	r6 = r6 >> 2;
+	r7 = heap32[(r6)];
+	r8 = heap32[(fp+-6)];
+	r9 = heap32[(fp+-1)];
+	r7 = (r8 * r7)|0;
+	r7 = (r9 + r7)|0;
+	r7 = r7 >> 2;
+	f3 = heapFloat[(r7)];
+	f4 = heapFloat[(r7+2)];
+	f5 = heapFloat[(r7+1)];
+	r7 = sp + -80;
+	f3 = f3*f0;
+	r10 = r7 >> 2;
+	f5 = f5*f1;
+	heapFloat[(fp+-20)] = f3;
+	f3 = f4*f2;
+	heapFloat[(r10+1)] = f5;
+	heapFloat[(r10+2)] = f3;
+	heap32[(r10+3)] = 0;
+	r11 = heap32[(r6+1)];
+	r11 = (r8 * r11)|0;
+	r11 = (r9 + r11)|0;
+	r11 = r11 >> 2;
+	f3 = heapFloat[(r11+2)];
+	f4 = heapFloat[(r11+1)];
+	f5 = heapFloat[(r11)];
+	f5 = f5*f0;
+	f4 = f4*f1;
+	heapFloat[(r10+4)] = f5;
+	f3 = f3*f2;
+	heapFloat[(r10+5)] = f4;
+	heapFloat[(r10+6)] = f3;
+	heap32[(r10+7)] = 0;
+	r6 = heap32[(r6+2)];
+	r6 = (r8 * r6)|0;
+	r6 = (r9 + r6)|0;
+	r6 = r6 >> 2;
+	f3 = heapFloat[(r6+2)];
+	f4 = heapFloat[(r6+1)];
+	f5 = heapFloat[(r6)];
+	f5 = f5*f0;
+	f4 = f4*f1;
+	heapFloat[(r10+8)] = f5;
+	f3 = f3*f2;
+	heapFloat[(r10+9)] = f4;
+	heapFloat[(r10+10)] = f3;
+	r6 = r3 >> 2;
+	heap32[(r10+11)] = 0;
+	r6 = heap32[(r6)];
+	r6 = r6 >> 2;
+	r6 = heap32[(r6+2)];
+	heap32[(g0)] = r3;
+	heap32[(g0+1)] = r7;
+	heap32[(g0+2)] = r4;
+	heap32[(g0+3)] = r5;
+	r5 = (r5 + 1)|0;
+	__FUNCTION_TABLE__[(r6)>>2](i7);
+	r6 = heap32[(fp+-8)];
+if(!(r5 <r6)) //_LBB491_9
+{
+break _4;
+}
+}
+}
+}
+}
+}
+}
+} while(0);
+	r5 = heap32[(r1)];
+	r5 = r5 >> 2;
+	r5 = heap32[(r5+6)];
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r4;
+	r4 = (r4 + 1)|0;
+	__FUNCTION_TABLE__[(r5)>>2](i7);
+continue _1;
+}
+else{
+__label__ = 27;
+break _1;
+}
+}
+switch(__label__ ){//multiple entries
+case 27:
+	return;
+break;
+case 22:
+	r0 = _2E_str9358;
+	r1 = _2E_str3352;
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r1;
+	heap32[(g0+2)] = 134;
+	_assert(i7);
+break;
+case 24:
+	r0 = _2E_str6355;
+	r1 = _2E_str3352;
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r1;
+	heap32[(g0+2)] = 139;
+	_assert(i7);
+break;
+case 12:
+	r0 = _2E_str9358;
+	r1 = _2E_str3352;
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r1;
+	heap32[(g0+2)] = 92;
+	_assert(i7);
+break;
+}
+}
+
+function _ZN23btStridingMeshInterfaceD0Ev(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+var __label__ = 0;
+	i7 = sp + -8;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = _ZTV23btStridingMeshInterface;
+	r2 = r0 >> 2;
+	r1 = (r1 + 8)|0;
+	heap32[(r2)] = r1;
+	heap32[(g0)] = r0;
+	_ZdlPv(i7);
+	return;
+}
+
+function _ZN23btStridingMeshInterfaceD1Ev(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+var __label__ = 0;
+	i7 = sp + 0;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = _ZTV23btStridingMeshInterface;
+	r0 = r0 >> 2;
+	r1 = (r1 + 8)|0;
+	heap32[(r0)] = r1;
+	return;
+}
+
+function _ZN31btInternalTriangleIndexCallbackD0Ev(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+var __label__ = 0;
+	i7 = sp + -8;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = _ZTV31btInternalTriangleIndexCallback;
+	r2 = r0 >> 2;
+	r1 = (r1 + 8)|0;
+	heap32[(r2)] = r1;
+	heap32[(g0)] = r0;
+	_ZdlPv(i7);
+	return;
+}
+
+function _ZN31btInternalTriangleIndexCallbackD1Ev(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+var __label__ = 0;
+	i7 = sp + 0;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = _ZTV31btInternalTriangleIndexCallback;
+	r0 = r0 >> 2;
+	r1 = (r1 + 8)|0;
+	heap32[(r0)] = r1;
+	return;
+}
+
+function _ZN18btTriangleCallbackD0Ev(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+var __label__ = 0;
+	i7 = sp + -8;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = _ZTV18btTriangleCallback;
+	r2 = r0 >> 2;
+	r1 = (r1 + 8)|0;
+	heap32[(r2)] = r1;
+	heap32[(g0)] = r0;
+	_ZdlPv(i7);
+	return;
+}
+
+function _ZN18btTriangleCallbackD1Ev(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+var __label__ = 0;
+	i7 = sp + 0;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = _ZTV18btTriangleCallback;
+	r0 = r0 >> 2;
+	r1 = (r1 + 8)|0;
+	heap32[(r0)] = r1;
+	return;
+}
+
+function _ZN26btTriangleIndexVertexArray16unLockVertexBaseEi(sp)
+{
+	var i7;
+	var fp = sp>>2;
+var __label__ = 0;
+	i7 = sp + 0;var g0 = i7>>2; // save stack
+	return;
+}
+
+function _ZNK26btTriangleIndexVertexArray24unLockReadOnlyVertexBaseEi(sp)
+{
+	var i7;
+	var fp = sp>>2;
+var __label__ = 0;
+	i7 = sp + 0;var g0 = i7>>2; // save stack
+	return;
+}
+
+function _ZN26btTriangleIndexVertexArray19preallocateVerticesEi(sp)
+{
+	var i7;
+	var fp = sp>>2;
+var __label__ = 0;
+	i7 = sp + 0;var g0 = i7>>2; // save stack
+	return;
+}
+
+function _ZN26btTriangleIndexVertexArray18preallocateIndicesEi(sp)
+{
+	var i7;
+	var fp = sp>>2;
+var __label__ = 0;
+	i7 = sp + 0;var g0 = i7>>2; // save stack
+	return;
+}
+
+function _ZNK26btTriangleIndexVertexArray14hasPremadeAabbEv(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+var __label__ = 0;
+	i7 = sp + 0;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r0 = r0 >> 2;
+	r0 = heap32[(r0+12)];
+	r1 = 1;
+	r0 = r0 == r1;
+	r0 = r0 & 1;
+	r_g0 = r0;
+	return;
+}
+
+function _ZNK26btTriangleIndexVertexArray14setPremadeAabbERK9btVector3S2_(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+var __label__ = 0;
+	i7 = sp + 0;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = heap32[(fp+1)];
+	r0 = r0 >> 2;
+	r1 = r1 >> 2;
+	heap32[(r0+13)] = heap32[(r1)];
+	heap32[(r0+14)] = heap32[(r1+1)];
+	r2 = heap32[(fp+2)];
+	heap32[(r0+15)] = heap32[(r1+2)];
+	r2 = r2 >> 2;
+	heap32[(r0+16)] = heap32[(r1+3)];
+	heap32[(r0+17)] = heap32[(r2)];
+	heap32[(r0+18)] = heap32[(r2+1)];
+	heap32[(r0+19)] = heap32[(r2+2)];
+	heap32[(r0+20)] = heap32[(r2+3)];
+	heap32[(r0+12)] = 1;
+	return;
+}
+
+function _ZNK26btTriangleIndexVertexArray14getPremadeAabbEP9btVector3S1_(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+var __label__ = 0;
+	i7 = sp + 0;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = heap32[(fp+1)];
+	r0 = r0 >> 2;
+	r1 = r1 >> 2;
+	heap32[(r1)] = heap32[(r0+13)];
+	heap32[(r1+1)] = heap32[(r0+14)];
+	r2 = heap32[(fp+2)];
+	heap32[(r1+2)] = heap32[(r0+15)];
+	r2 = r2 >> 2;
+	heap32[(r1+3)] = heap32[(r0+16)];
+	heap32[(r2)] = heap32[(r0+17)];
+	heap32[(r2+1)] = heap32[(r0+18)];
+	heap32[(r2+2)] = heap32[(r0+19)];
+	heap32[(r2+3)] = heap32[(r0+20)];
+	return;
+}
+
+function _ZNK26btTriangleIndexVertexArray14getNumSubPartsEv(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+var __label__ = 0;
+	i7 = sp + 0;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r0 = r0 >> 2;
+	r0 = heap32[(r0+6)];
+	r_g0 = r0;
+	return;
+}
+
+function _ZNK26btTriangleIndexVertexArray32getLockedReadOnlyVertexIndexBaseEPPKhRiR14PHY_ScalarTypeS3_S2_S3_S3_S5_i(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+var __label__ = 0;
+	i7 = sp + 0;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = heap32[(fp+9)];
+	r0 = r0 >> 2;
+	r1 = r1 << 5;
+	r0 = heap32[(r0+8)];
+	r0 = (r0 + r1)|0;
+	r0 = r0 >> 2;
+	r1 = heap32[(fp+2)];
+	r2 = heap32[(r0+3)];
+	r1 = r1 >> 2;
+	r3 = heap32[(fp+1)];
+	heap32[(r1)] = r2;
+	r1 = r3 >> 2;
+	r2 = heap32[(r0+4)];
+	r3 = heap32[(fp+3)];
+	heap32[(r1)] = r2;
+	r1 = r3 >> 2;
+	r2 = heap32[(r0+7)];
+	r3 = heap32[(fp+4)];
+	heap32[(r1)] = r2;
+	r1 = r3 >> 2;
+	r2 = heap32[(r0+5)];
+	r3 = heap32[(fp+7)];
+	heap32[(r1)] = r2;
+	r1 = r3 >> 2;
+	r2 = heap32[(r0)];
+	r3 = heap32[(fp+5)];
+	heap32[(r1)] = r2;
+	r1 = r3 >> 2;
+	r2 = heap32[(r0+1)];
+	r3 = heap32[(fp+6)];
+	heap32[(r1)] = r2;
+	r1 = r3 >> 2;
+	r2 = heap32[(r0+2)];
+	r3 = heap32[(fp+8)];
+	heap32[(r1)] = r2;
+	r1 = r3 >> 2;
+	r0 = heap32[(r0+6)];
+	heap32[(r1)] = r0;
+	return;
+}
+
+function _ZN26btTriangleIndexVertexArray24getLockedVertexIndexBaseEPPhRiR14PHY_ScalarTypeS2_S1_S2_S2_S4_i(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+	var r6;
+	var r7;
+	var r8;
+	var r9;
+var __label__ = 0;
+	i7 = sp + -16;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = r0 >> 2;
+	r2 = heap32[(r1)];
+	r2 = r2 >> 2;
+	r2 = heap32[(r2+7)];
+	r3 = heap32[(fp+9)];
+	heap32[(g0)] = r0;
+	__FUNCTION_TABLE__[(r2)>>2](i7);
+	r0 = r_g0;
+	if(r0 >r3) //_LBB507_2
+{
+	r0 = heap32[(fp+1)];
+	r2 = heap32[(fp+2)];
+	r4 = heap32[(fp+3)];
+	r5 = heap32[(fp+4)];
+	r6 = heap32[(fp+5)];
+	r7 = heap32[(fp+6)];
+	r8 = heap32[(fp+7)];
+	r9 = heap32[(fp+8)];
+	r3 = r3 << 5;
+	r1 = heap32[(r1+8)];
+	r1 = (r1 + r3)|0;
+	r1 = r1 >> 2;
+	r3 = heap32[(r1+3)];
+	r2 = r2 >> 2;
+	heap32[(r2)] = r3;
+	r0 = r0 >> 2;
+	r2 = heap32[(r1+4)];
+	heap32[(r0)] = r2;
+	r0 = r4 >> 2;
+	r2 = heap32[(r1+7)];
+	heap32[(r0)] = r2;
+	r0 = r5 >> 2;
+	r2 = heap32[(r1+5)];
+	heap32[(r0)] = r2;
+	r0 = r8 >> 2;
+	r2 = heap32[(r1)];
+	heap32[(r0)] = r2;
+	r0 = r6 >> 2;
+	r2 = heap32[(r1+1)];
+	heap32[(r0)] = r2;
+	r0 = r7 >> 2;
+	r2 = heap32[(r1+2)];
+	heap32[(r0)] = r2;
+	r0 = r9 >> 2;
+	r1 = heap32[(r1+6)];
+	heap32[(r0)] = r1;
+	return;
+}
+else{
+	r1 = _2E_str367;
+	r3 = _2E_str1368;
+	heap32[(g0)] = r1;
+	heap32[(g0+1)] = r3;
+	heap32[(g0+2)] = 41;
+	_assert(i7);
+}
+}
+
+function _ZN26btTriangleIndexVertexArrayD0Ev(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+var __label__ = 0;
+	i7 = sp + -8;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = _ZTV26btTriangleIndexVertexArray;
+	r2 = r0 >> 2;
+	r1 = (r1 + 8)|0;
+	heap32[(r2)] = r1;
+	r1 = heap32[(r2+8)];
+if(!(r1 ==0)) //_LBB508_4
+{
+	r3 = heapU8[r0+36];
+if(!(r3 ==0)) //_LBB508_3
+{
+	r3 = gNumAlignedFree;
+	r3 = r3 >> 2;
+	r4 = heap32[(r3)];
+	r4 = (r4 + 1)|0;
+	r1 = r1 >> 2;
+	heap32[(r3)] = r4;
+	r1 = heap32[(r1+-1)];
+	heap32[(g0)] = r1;
+	free(i7);
+}
+	heap32[(r2+8)] = 0;
+}
+	r1 = 1;
+	heap8[r0+36] = r1;
+	heap32[(r2+8)] = 0;
+	r1 = _ZTV23btStridingMeshInterface;
+	heap32[(r2+6)] = 0;
+	r1 = (r1 + 8)|0;
+	heap32[(r2+7)] = 0;
+	heap32[(r2)] = r1;
+if(!(r0 ==0)) //_LBB508_6
+{
+	r0 = gNumAlignedFree;
+	r0 = r0 >> 2;
+	r1 = heap32[(r0)];
+	r1 = (r1 + 1)|0;
+	heap32[(r0)] = r1;
+	r0 = heap32[(r2+-1)];
+	heap32[(g0)] = r0;
+	free(i7);
+}
+	return;
+}
+
+function _ZN26btTriangleIndexVertexArrayD1Ev(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+var __label__ = 0;
+	i7 = sp + -8;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = _ZTV26btTriangleIndexVertexArray;
+	r2 = r0 >> 2;
+	r1 = (r1 + 8)|0;
+	heap32[(r2)] = r1;
+	r1 = heap32[(r2+8)];
+if(!(r1 ==0)) //_LBB509_4
+{
+	r3 = heapU8[r0+36];
+if(!(r3 ==0)) //_LBB509_3
+{
+	r3 = gNumAlignedFree;
+	r3 = r3 >> 2;
+	r4 = heap32[(r3)];
+	r4 = (r4 + 1)|0;
+	r1 = r1 >> 2;
+	heap32[(r3)] = r4;
+	r1 = heap32[(r1+-1)];
+	heap32[(g0)] = r1;
+	free(i7);
+}
+	heap32[(r2+8)] = 0;
+}
+	r1 = 1;
+	heap8[r0+36] = r1;
+	heap32[(r2+8)] = 0;
+	r0 = _ZTV23btStridingMeshInterface;
+	heap32[(r2+6)] = 0;
+	r0 = (r0 + 8)|0;
+	heap32[(r2+7)] = 0;
+	heap32[(r2)] = r0;
+	return;
+}
+
+function _ZNK19btTriangleMeshShape7getNameEv(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+var __label__ = 0;
+	i7 = sp + 0;var g0 = i7>>2; // save stack
+	r0 = _2E_str372;
+	r_g0 = r0;
+	return;
+}
+
+function _ZNK19btTriangleMeshShape7getAabbERK11btTransformR9btVector3S4_(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var f0;
+	var f1;
+	var f2;
+	var f3;
+	var f4;
+	var f5;
+	var f6;
+	var f7;
+	var f8;
+	var f9;
+	var f10;
+	var f11;
+	var f12;
+	var f13;
+	var f14;
+	var f15;
+	var f16;
+	var f17;
+	var f18;
+	var f19;
+	var f20;
+	var f21;
+	var f22;
+	var f23;
+var __label__ = 0;
+	i7 = sp + -8;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = r0 >> 2;
+	r2 = heap32[(r1)];
+	r2 = r2 >> 2;
+	r2 = heap32[(r2+11)];
+	f0 = heapFloat[(r1+10)];
+	f1 = heapFloat[(r1+6)];
+	f2 = heapFloat[(r1+9)];
+	f3 = heapFloat[(r1+5)];
+	f4 = heapFloat[(r1+8)];
+	f5 = heapFloat[(r1+4)];
+	heap32[(g0)] = r0;
+	__FUNCTION_TABLE__[(r2)>>2](i7);
+	f6 = f_g0;
+	r2 = heap32[(r1)];
+	r2 = r2 >> 2;
+	r2 = heap32[(r2+11)];
+	heap32[(g0)] = r0;
+	__FUNCTION_TABLE__[(r2)>>2](i7);
+	f7 = f_g0;
+	r2 = heap32[(r1)];
+	r2 = r2 >> 2;
+	r2 = heap32[(r2+11)];
+	heap32[(g0)] = r0;
+	__FUNCTION_TABLE__[(r2)>>2](i7);
+	r0 = heap32[(fp+1)];
+	f4 = f4-f5;
+	f5 =                       0.5;
+	f2 = f2-f3;
+	f0 = f0-f1;
+	f1 = heapFloat[(r1+10)];
+	f3 = heapFloat[(r1+6)];
+	f9 = heapFloat[(r1+9)];
+	f10 = heapFloat[(r1+5)];
+	f11 = heapFloat[(r1+8)];
+	f12 = heapFloat[(r1+4)];
+	r0 = r0 >> 2;
+	f4 = f4*f5;
+	f2 = f2*f5;
+	f0 = f0*f5;
+	f1 = f1+f3;
+	f3 = f9+f10;
+	f9 = f11+f12;
+	f10 = heapFloat[(r0+10)];
+	r1 = heap32[(fp+2)];
+	r2 = heap32[(fp+3)];
+	f4 = f4+f_g0;
+	f2 = f2+f7;
+	f0 = f0+f6;
+	f1 = f1*f5;
+	f3 = f3*f5;
+	f5 = f9*f5;
+	f6 =                         0;
+	if(f10 <f6) //_LBB511_2
+{
+	f7 = -f10;
+}
+else{
+	f7 = f10;
+}
+	f8 = heapFloat[(r0+9)];
+	if(f8 <f6) //_LBB511_5
+{
+	f9 = -f8;
+}
+else{
+	f9 = f8;
+}
+	f11 = heapFloat[(r0+8)];
+	if(f11 <f6) //_LBB511_8
+{
+	f12 = -f11;
+}
+else{
+	f12 = f11;
+}
+	f13 = heapFloat[(r0+6)];
+	if(f13 <f6) //_LBB511_11
+{
+	f14 = -f13;
+}
+else{
+	f14 = f13;
+}
+	f15 = heapFloat[(r0+5)];
+	if(f15 <f6) //_LBB511_14
+{
+	f16 = -f15;
+}
+else{
+	f16 = f15;
+}
+	f17 = heapFloat[(r0+4)];
+	if(f17 <f6) //_LBB511_17
+{
+	f18 = -f17;
+}
+else{
+	f18 = f17;
+}
+	f19 = heapFloat[(r0+2)];
+	if(f19 <f6) //_LBB511_20
+{
+	f20 = -f19;
+}
+else{
+	f20 = f19;
+}
+	f21 = heapFloat[(r0+1)];
+	if(f21 <f6) //_LBB511_23
+{
+	f22 = -f21;
+}
+else{
+	f22 = f21;
+}
+	f23 = heapFloat[(r0)];
+	if(f23 <f6) //_LBB511_26
+{
+	f6 = -f23;
+}
+else{
+	f6 = f23;
+}
+	f23 = f23*f5;
+	f21 = f21*f3;
+	f17 = f17*f5;
+	f15 = f15*f3;
+	f21 = f23+f21;
+	f19 = f19*f1;
+	f6 = f6*f4;
+	f22 = f22*f2;
+	f5 = f11*f5;
+	f3 = f8*f3;
+	f8 = f17+f15;
+	f11 = f13*f1;
+	f13 = f18*f4;
+	f15 = f16*f2;
+	f16 = f21+f19;
+	f17 = heapFloat[(r0+12)];
+	f6 = f6+f22;
+	f18 = f20*f0;
+	f3 = f5+f3;
+	f1 = f10*f1;
+	f4 = f12*f4;
+	f2 = f9*f2;
+	f5 = f8+f11;
+	f8 = heapFloat[(r0+13)];
+	f9 = heapFloat[(r0+14)];
+	f10 = f13+f15;
+	f11 = f14*f0;
+	f12 = f16+f17;
+	f6 = f6+f18;
+	f1 = f3+f1;
+	r0 = r1 >> 2;
+	f2 = f4+f2;
+	f0 = f7*f0;
+	f3 = f5+f8;
+	f4 = f10+f11;
+	f5 = f12-f6;
+	f1 = f1+f9;
+	f0 = f2+f0;
+	f2 = f3-f4;
+	heapFloat[(r0)] = f5;
+	f5 = f1-f0;
+	heapFloat[(r0+1)] = f2;
+	heapFloat[(r0+2)] = f5;
+	r1 = r2 >> 2;
+	f2 = f12+f6;
+	heap32[(r0+3)] = 0;
+	f3 = f3+f4;
+	heapFloat[(r1)] = f2;
+	f0 = f1+f0;
+	heapFloat[(r1+1)] = f3;
+	heapFloat[(r1+2)] = f0;
+	heap32[(r1+3)] = 0;
+	return;
+}
+
+function _ZN19btTriangleMeshShape15recalcLocalAabbEv(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+	var r6;
+	var r7;
+	var r8;
+	var f0;
+	var f1;
+var __label__ = 0;
+	i7 = sp + -64;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = 0;
+_1: while(true){
+	r2 = sp + -16;
+	r3 = r2 >> 2;
+	heap32[(fp+-4)] = 0;
+	heap32[(r3+1)] = 0;
+	heap32[(r3+2)] = 0;
+	r4 = (r2 + r1)|0;
+	heap32[(r3+3)] = 0;
+	r3 = r4 >> 2;
+	heap32[(r3)] = 1065353216;
+	r4 = r0 >> 2;
+	r5 = heap32[(r4)];
+	r5 = r5 >> 2;
+	r5 = heap32[(r5+16)];
+	r6 = sp + -32;
+	heap32[(g0)] = r6;
+	heap32[(g0+1)] = r0;
+	heap32[(g0+2)] = r2;
+	r7 = (r6 + r1)|0;
+	__FUNCTION_TABLE__[(r5)>>2](i7);
+	r5 = r7 >> 2;
+	r7 = (r0 + r1)|0;
+	f0 = heapFloat[(r5)];
+	f1 = heapFloat[(r4+3)];
+	f0 = f0+f1;
+	r7 = r7 >> 2;
+	heapFloat[(r7+8)] = f0;
+	heap32[(r3)] = -1082130432;
+	r3 = heap32[(r4)];
+	r3 = r3 >> 2;
+	r3 = heap32[(r3+16)];
+	r8 = sp + -48;
+	heap32[(g0)] = r8;
+	heap32[(g0+1)] = r0;
+	heap32[(g0+2)] = r2;
+	__FUNCTION_TABLE__[(r3)>>2](i7);
+	r2 = r6 >> 2;
+	r3 = r8 >> 2;
+	heap32[(fp+-8)] = heap32[(fp+-12)];
+	heap32[(r2+1)] = heap32[(r3+1)];
+	heap32[(r2+2)] = heap32[(r3+2)];
+	heap32[(r2+3)] = heap32[(r3+3)];
+	f0 = heapFloat[(r5)];
+	f1 = heapFloat[(r4+3)];
+	r1 = (r1 + 4)|0;
+	f0 = f0-f1;
+	heapFloat[(r7+4)] = f0;
+	if(r1 !=12) //_LBB512_1
+{
+continue _1;
+}
+else{
+break _1;
+}
+}
+	return;
+}
+
+function _ZN21SupportVertexCallbackD1Ev(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+var __label__ = 0;
+	i7 = sp + 0;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = _ZTV18btTriangleCallback;
+	r0 = r0 >> 2;
+	r1 = (r1 + 8)|0;
+	heap32[(r0)] = r1;
+	return;
+}
+
+function _ZN21SupportVertexCallbackD0Ev(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+var __label__ = 0;
+	i7 = sp + -8;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = _ZTV18btTriangleCallback;
+	r2 = r0 >> 2;
+	r1 = (r1 + 8)|0;
+	heap32[(r2)] = r1;
+	heap32[(g0)] = r0;
+	_ZdlPv(i7);
+	return;
+}
+
+function _ZN21SupportVertexCallback15processTriangleEP9btVector3ii(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var f0;
+	var f1;
+	var f2;
+	var f3;
+	var f4;
+	var f5;
+	var f6;
+var __label__ = 0;
+	i7 = sp + 0;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp+1)];
+	r1 = heap32[(fp)];
+	r1 = r1 >> 2;
+	r0 = r0 >> 2;
+	f0 = heapFloat[(r1+22)];
+	f1 = heapFloat[(r0)];
+	f2 = heapFloat[(r1+23)];
+	f3 = heapFloat[(r0+1)];
+	f4 = heapFloat[(r1+24)];
+	f5 = heapFloat[(r0+2)];
+	f1 = f0*f1;
+	f3 = f2*f3;
+	f1 = f1+f3;
+	f3 = f4*f5;
+	f5 = heapFloat[(r1+21)];
+	f1 = f1+f3;
+	if(f5 <f1) //_LBB515_2
+{
+	heapFloat[(r1+21)] = f1;
+	heap32[(r1+1)] = heap32[(r0)];
+	heap32[(r1+2)] = heap32[(r0+1)];
+	heap32[(r1+3)] = heap32[(r0+2)];
+	heap32[(r1+4)] = heap32[(r0+3)];
+	f5 = f1;
+}
+	f1 = heapFloat[(r0+4)];
+	f3 = heapFloat[(r0+5)];
+	f1 = f0*f1;
+	f3 = f2*f3;
+	f6 = heapFloat[(r0+6)];
+	f1 = f1+f3;
+	f3 = f4*f6;
+	f1 = f1+f3;
+	if(f5 <f1) //_LBB515_7
+{
+	heapFloat[(r1+21)] = f1;
+	heap32[(r1+1)] = heap32[(r0+4)];
+	heap32[(r1+2)] = heap32[(r0+5)];
+	heap32[(r1+3)] = heap32[(r0+6)];
+	heap32[(r1+4)] = heap32[(r0+7)];
+	f5 = f1;
+}
+	f1 = heapFloat[(r0+8)];
+	f3 = heapFloat[(r0+9)];
+	f0 = f0*f1;
+	f1 = f2*f3;
+	f2 = heapFloat[(r0+10)];
+	f0 = f0+f1;
+	f1 = f4*f2;
+	f0 = f0+f1;
+	if(f5 <f0) //_LBB515_8
+{
+	heapFloat[(r1+21)] = f0;
+	heap32[(r1+1)] = heap32[(r0+8)];
+	heap32[(r1+2)] = heap32[(r0+9)];
+	heap32[(r1+3)] = heap32[(r0+10)];
+	heap32[(r1+4)] = heap32[(r0+11)];
+	return;
+}
+else{
+	return;
+}
+}
+
+function _ZN19btTriangleMeshShape15setLocalScalingERK9btVector3(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+var __label__ = 0;
+	i7 = sp + -8;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = r0 >> 2;
+	r2 = heap32[(fp+1)];
+	r1 = heap32[(r1+12)];
+	r1 = r1 >> 2;
+	r2 = r2 >> 2;
+	heap32[(r1+1)] = heap32[(r2)];
+	heap32[(r1+2)] = heap32[(r2+1)];
+	heap32[(r1+3)] = heap32[(r2+2)];
+	heap32[(r1+4)] = heap32[(r2+3)];
+	heap32[(g0)] = r0;
+	_ZN19btTriangleMeshShape15recalcLocalAabbEv(i7);
+	return;
+}
+
+function _ZNK19btTriangleMeshShape15getLocalScalingEv(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+var __label__ = 0;
+	i7 = sp + 0;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r0 = r0 >> 2;
+	r0 = heap32[(r0+12)];
+	r0 = (r0 + 4)|0;
+	r_g0 = r0;
+	return;
+}
+
+function _ZZNK19btTriangleMeshShape19processAllTrianglesEP18btTriangleCallbackRK9btVector3S4_EN16FilteredCallbackD1Ev(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+var __label__ = 0;
+	i7 = sp + 0;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = _ZTV31btInternalTriangleIndexCallback;
+	r0 = r0 >> 2;
+	r1 = (r1 + 8)|0;
+	heap32[(r0)] = r1;
+	return;
+}
+
+function _ZZNK19btTriangleMeshShape19processAllTrianglesEP18btTriangleCallbackRK9btVector3S4_EN16FilteredCallbackD0Ev(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+var __label__ = 0;
+	i7 = sp + -8;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = _ZTV31btInternalTriangleIndexCallback;
+	r2 = r0 >> 2;
+	r1 = (r1 + 8)|0;
+	heap32[(r2)] = r1;
+	heap32[(g0)] = r0;
+	_ZdlPv(i7);
+	return;
+}
+
+function _ZZNK19btTriangleMeshShape19processAllTrianglesEP18btTriangleCallbackRK9btVector3S4_EN16FilteredCallback28internalProcessTriangleIndexEPS2_ii(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var f0;
+	var f1;
+	var f2;
+	var f3;
+	var f4;
+var __label__ = 0;
+	i7 = sp + -16;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp+1)];
+	r1 = r0 >> 2;
+	r2 = heap32[(fp)];
+	f0 = heapFloat[(r1)];
+	f1 = heapFloat[(r1+4)];
+	f2 = heapFloat[(r1+8)];
+	f3 = f0 < f1 ? f0 : f1;
+	r2 = r2 >> 2;
+	f3 = f3 < f2 ? f3 : f2;
+	f4 = heapFloat[(r2+6)];
+if(!(f3 >f4)) //_LBB520_7
+{
+	f0 = f0 > f1 ? f0 : f1;
+	f0 = f0 > f2 ? f0 : f2;
+	f1 = heapFloat[(r2+2)];
+if(!(f0 <f1)) //_LBB520_7
+{
+	f0 = heapFloat[(r1+2)];
+	f1 = heapFloat[(r1+6)];
+	f2 = heapFloat[(r1+10)];
+	f3 = f0 < f1 ? f0 : f1;
+	f3 = f3 < f2 ? f3 : f2;
+	f4 = heapFloat[(r2+8)];
+if(!(f3 >f4)) //_LBB520_7
+{
+	f0 = f0 > f1 ? f0 : f1;
+	f0 = f0 > f2 ? f0 : f2;
+	f1 = heapFloat[(r2+4)];
+if(!(f0 <f1)) //_LBB520_7
+{
+	f0 = heapFloat[(r1+1)];
+	f1 = heapFloat[(r1+5)];
+	f2 = heapFloat[(r1+9)];
+	f3 = f0 < f1 ? f0 : f1;
+	f3 = f3 < f2 ? f3 : f2;
+	f4 = heapFloat[(r2+7)];
+if(!(f3 >f4)) //_LBB520_7
+{
+	f0 = f0 > f1 ? f0 : f1;
+	f0 = f0 > f2 ? f0 : f2;
+	f1 = heapFloat[(r2+3)];
+if(!(f0 <f1)) //_LBB520_7
+{
+	r1 = heap32[(fp+2)];
+	r3 = heap32[(fp+3)];
+	r2 = heap32[(r2+1)];
+	r4 = r2 >> 2;
+	r4 = heap32[(r4)];
+	r4 = r4 >> 2;
+	r4 = heap32[(r4+2)];
+	heap32[(g0)] = r2;
+	heap32[(g0+1)] = r0;
+	heap32[(g0+2)] = r1;
+	heap32[(g0+3)] = r3;
+	__FUNCTION_TABLE__[(r4)>>2](i7);
+}
+}
+}
+}
+}
+}
+	return;
+}
+
+function _ZNK19btTriangleMeshShape21calculateLocalInertiaEfR9btVector3(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+var __label__ = 0;
+	i7 = sp + -16;var g0 = i7>>2; // save stack
+	r0 = _2E_str10;
+	r1 = _2E_str3375;
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r1;
+	heap32[(g0+2)] = 188;
+	_assert(i7);
+}
+
+function _ZNK19btTriangleMeshShape24localGetSupportingVertexERK9btVector3(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+	var r6;
+	var f0;
+	var f1;
+	var f2;
+	var f3;
+	var f4;
+	var f5;
+var __label__ = 0;
+	i7 = sp + -152;var g0 = i7>>2; // save stack
+	r0 = _ZTV21SupportVertexCallback;
+	r1 = sp + -120;
+	r0 = (r0 + 8)|0;
+	r2 = r1 >> 2;
+	heap32[(fp+-30)] = r0;
+	heap32[(r2+1)] = 0;
+	heap32[(r2+2)] = 0;
+	heap32[(r2+3)] = 0;
+	heap32[(r2+4)] = 0;
+	heap32[(r2+5)] = 1065353216;
+	heap32[(r2+6)] = 0;
+	heap32[(r2+7)] = 0;
+	heap32[(r2+8)] = 0;
+	heap32[(r2+9)] = 0;
+	heap32[(r2+10)] = 1065353216;
+	heap32[(r2+11)] = 0;
+	heap32[(r2+12)] = 0;
+	heap32[(r2+13)] = 0;
+	heap32[(r2+14)] = 0;
+	heap32[(r2+15)] = 1065353216;
+	heap32[(r2+16)] = 0;
+	heap32[(r2+17)] = 0;
+	heap32[(r2+18)] = 0;
+	heap32[(r2+19)] = 0;
+	r0 = heap32[(fp+2)];
+	heap32[(r2+20)] = 0;
+	r0 = r0 >> 2;
+	heap32[(r2+21)] = -581039253;
+	f0 =                         0;
+	f1 = heapFloat[(r0+1)];
+	f2 = heapFloat[(r0)];
+	f3 = heapFloat[(r0+2)];
+	f4 = f1*f0;
+	f5 = f2*f0;
+	f2 = f2+f4;
+	f0 = f3*f0;
+	f1 = f5+f1;
+	f2 = f2+f0;
+	f4 = f5+f4;
+	f0 = f1+f0;
+	heapFloat[(r2+22)] = f2;
+	f1 = f4+f3;
+	heapFloat[(r2+23)] = f0;
+	heapFloat[(r2+24)] = f1;
+	r0 = sp + -136;
+	heap32[(r2+25)] = 0;
+	r3 = r0 >> 2;
+	heap32[(fp+-34)] = 1566444395;
+	heap32[(r3+1)] = 1566444395;
+	r4 = heap32[(fp+1)];
+	heap32[(r3+2)] = 1566444395;
+	r5 = r4 >> 2;
+	heap32[(r3+3)] = 0;
+	r3 = heap32[(r5)];
+	r3 = r3 >> 2;
+	r3 = heap32[(r3+15)];
+	r5 = sp + -16;
+	r6 = r5 >> 2;
+	heap32[(fp+-4)] = -581039253;
+	heap32[(r6+1)] = -581039253;
+	heap32[(r6+2)] = -581039253;
+	heap32[(r6+3)] = 0;
+	heap32[(g0)] = r4;
+	heap32[(g0+1)] = r1;
+	heap32[(g0+2)] = r5;
+	heap32[(g0+3)] = r0;
+	__FUNCTION_TABLE__[(r3)>>2](i7);
+	r0 = heap32[(fp)];
+	f0 = heapFloat[(r2+4)];
+	f1 = heapFloat[(r2+3)];
+	f2 = heapFloat[(r2+2)];
+	r0 = r0 >> 2;
+	heap32[(r0)] = heap32[(r2+1)];
+	heapFloat[(r0+1)] = f2;
+	heapFloat[(r0+2)] = f1;
+	heapFloat[(r0+3)] = f0;
+	return;
+}
+
+function _ZNK19btTriangleMeshShape19processAllTrianglesEP18btTriangleCallbackRK9btVector3S4_(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+var __label__ = 0;
+	i7 = sp + -56;var g0 = i7>>2; // save stack
+	r0 = _ZTVZNK19btTriangleMeshShape19processAllTrianglesEP18btTriangleCallbackRK9btVector3S4_E16FilteredCallback;
+	r1 = sp + -40;
+	r0 = (r0 + 8)|0;
+	r2 = heap32[(fp+2)];
+	r3 = r1 >> 2;
+	r4 = heap32[(fp+1)];
+	heap32[(fp+-10)] = r0;
+	r0 = r2 >> 2;
+	heap32[(r3+1)] = r4;
+	heap32[(r3+2)] = heap32[(r0)];
+	heap32[(r3+3)] = heap32[(r0+1)];
+	r4 = heap32[(fp+3)];
+	heap32[(r3+4)] = heap32[(r0+2)];
+	r5 = r4 >> 2;
+	heap32[(r3+5)] = heap32[(r0+3)];
+	heap32[(r3+6)] = heap32[(r5)];
+	heap32[(r3+7)] = heap32[(r5+1)];
+	r0 = heap32[(fp)];
+	heap32[(r3+8)] = heap32[(r5+2)];
+	r0 = r0 >> 2;
+	heap32[(r3+9)] = heap32[(r5+3)];
+	r0 = heap32[(r0+12)];
+	r3 = r0 >> 2;
+	r3 = heap32[(r3)];
+	r3 = r3 >> 2;
+	r3 = heap32[(r3+2)];
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r1;
+	heap32[(g0+2)] = r2;
+	heap32[(g0+3)] = r4;
+	__FUNCTION_TABLE__[(r3)>>2](i7);
+	return;
+}
+
+function _ZN19btTriangleMeshShapeD0Ev(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+var __label__ = 0;
+	i7 = sp + -8;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = _ZTV14btConcaveShape;
+	r2 = r0 >> 2;
+	r1 = (r1 + 8)|0;
+	heap32[(r2)] = r1;
+	heap32[(g0)] = r0;
+	_ZdlPv(i7);
+	return;
+}
+
+function _ZN19btTriangleMeshShapeD1Ev(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+var __label__ = 0;
+	i7 = sp + 0;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = _ZTV14btConcaveShape;
+	r0 = r0 >> 2;
+	r1 = (r1 + 8)|0;
+	heap32[(r0)] = r1;
+	return;
+}
+
+function _GLOBAL__D__ZN19btGenericMemoryPool24allocate_from_free_nodesEj(sp)
+{
+	var i7;
+	var fp = sp>>2;
+var __label__ = 0;
+	i7 = sp + 0;var g0 = i7>>2; // save stack
+	return;
+}
+
+function _ZN16btPointCollectorD1Ev(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+var __label__ = 0;
+	i7 = sp + 0;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = _ZTV16btPointCollector;
+	r0 = r0 >> 2;
+	r1 = (r1 + 8)|0;
+	heap32[(r0)] = r1;
+	return;
+}
+
+function _ZN16btPointCollectorD0Ev(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+var __label__ = 0;
+	i7 = sp + -8;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = _ZTV16btPointCollector;
+	r2 = r0 >> 2;
+	r1 = (r1 + 8)|0;
+	heap32[(r2)] = r1;
+	heap32[(g0)] = r0;
+	_ZdlPv(i7);
+	return;
+}
+
+function _ZN16btPointCollector20setShapeIdentifiersAEii(sp)
+{
+	var i7;
+	var fp = sp>>2;
+var __label__ = 0;
+	i7 = sp + 0;var g0 = i7>>2; // save stack
+	return;
+}
+
+function _ZN16btPointCollector20setShapeIdentifiersBEii(sp)
+{
+	var i7;
+	var fp = sp>>2;
+var __label__ = 0;
+	i7 = sp + 0;var g0 = i7>>2; // save stack
+	return;
+}
+
+function _ZN16btPointCollector15addContactPointERK9btVector3S2_f(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var f0;
+	var f1;
+var __label__ = 0;
+	i7 = sp + 0;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	f0 = heapFloat[(fp+3)];
+	r1 = r0 >> 2;
+	f1 = heapFloat[(r1+9)];
+if(!(f1 <=f0)) //_LBB531_2
+{
+	r2 = heap32[(fp+1)];
+	r3 = heap32[(fp+2)];
+	r4 = 1;
+	r2 = r2 >> 2;
+	heap8[r0+40] = r4;
+	heap32[(r1+1)] = heap32[(r2)];
+	heap32[(r1+2)] = heap32[(r2+1)];
+	heap32[(r1+3)] = heap32[(r2+2)];
+	r0 = r3 >> 2;
+	heap32[(r1+4)] = heap32[(r2+3)];
+	heap32[(r1+5)] = heap32[(r0)];
+	heap32[(r1+6)] = heap32[(r0+1)];
+	heap32[(r1+7)] = heap32[(r0+2)];
+	heap32[(r1+8)] = heap32[(r0+3)];
+	heapFloat[(r1+9)] = f0;
+}
+	return;
+}
+
+function _ZN27btContinuousConvexCollisionD1Ev(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+var __label__ = 0;
+	i7 = sp + 0;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = _ZTV12btConvexCast;
+	r0 = r0 >> 2;
+	r1 = (r1 + 8)|0;
+	heap32[(r0)] = r1;
+	return;
+}
+
+function _ZN27btContinuousConvexCollisionD0Ev(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+var __label__ = 0;
+	i7 = sp + -8;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = _ZTV12btConvexCast;
+	r2 = r0 >> 2;
+	r1 = (r1 + 8)|0;
+	heap32[(r2)] = r1;
+	heap32[(g0)] = r0;
+	_ZdlPv(i7);
+	return;
+}
+
+function _ZN27btContinuousConvexCollision16calcTimeOfImpactERK11btTransformS2_S2_S2_RN12btConvexCast10CastResultE(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+	var r6;
+	var r7;
+	var r8;
+	var r9;
+	var r10;
+	var r11;
+	var r12;
+	var r13;
+	var r14;
+	var r15;
+	var r16;
+	var r17;
+	var r18;
+	var r19;
+	var r20;
+	var r21;
+	var r22;
+	var r23;
+	var r24;
+	var r25;
+	var f0;
+	var f1;
+	var f2;
+	var f3;
+	var f4;
+	var f5;
+	var f6;
+	var f7;
+	var f8;
+	var f9;
+	var f10;
+	var f11;
+	var f12;
+	var f13;
+	var f14;
+	var f15;
+	var f16;
+	var f17;
+	var f18;
+	var f19;
+	var f20;
+	var f21;
+var __label__ = 0;
+	i7 = sp + -816;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r0 = r0 >> 2;
+	r1 = heap32[(r0+1)];
+	r2 = 0;
+	r3 = r1 >> 2;
+	heap8[r1+312] = r2;
+	r4 = 1;
+	heap32[(r3)] = 0;
+	heap8[r1+356] = r4;
+	heap32[(r3+73)] = 1566444395;
+	heap32[(r3+74)] = 1566444395;
+	heap32[(r3+75)] = 1566444395;
+	heap32[(r3+76)] = 0;
+	heap8[r1+352] = r2;
+	heap32[(r3+84)] = 0;
+	heap32[(r3+85)] = 0;
+	heap32[(r3+86)] = 0;
+	heap32[(r3+87)] = 0;
+	r3 = heapU8[r1+332];
+	r5 = heap32[(fp+1)];
+	r6 = heap32[(fp+2)];
+	r3 = r3 & 240;
+	r7 = r6 >> 2;
+	heap8[r1+332] = r3;
+	r1 = r5 >> 2;
+	f0 = heapFloat[(r7+14)];
+	f1 = heapFloat[(r1+14)];
+	f2 = heapFloat[(r7+13)];
+	f3 = heapFloat[(r1+13)];
+	f4 = heapFloat[(r7+12)];
+	f5 = heapFloat[(r1+12)];
+	r3 = sp + -40;
+	r7 = sp + -44;
+	heap32[(g0)] = r5;
+	heap32[(g0+1)] = r6;
+	heap32[(g0+2)] = r3;
+	heap32[(g0+3)] = r7;
+	_ZN15btTransformUtil22calculateDiffAxisAngleERK11btTransformS2_R9btVector3Rf(i7);
+	r3 = r3 >> 2;
+	f6 = heapFloat[(r3+2)];
+	f7 = heapFloat[(fp+-11)];
+	f8 = heapFloat[(r3+1)];
+	f9 = heapFloat[(fp+-10)];
+	r3 = sp + -96;
+	f9 = f9*f7;
+	f8 = f8*f7;
+	r6 = r3 >> 2;
+	heapFloat[(fp+-24)] = f9;
+	f6 = f6*f7;
+	heapFloat[(r6+1)] = f8;
+	r7 = heap32[(fp+3)];
+	r8 = heap32[(fp+4)];
+	heapFloat[(r6+2)] = f6;
+	r9 = r8 >> 2;
+	heap32[(r6+3)] = 0;
+	r6 = r7 >> 2;
+	f7 = heapFloat[(r9+14)];
+	f10 = heapFloat[(r6+14)];
+	f11 = heapFloat[(r9+13)];
+	f12 = heapFloat[(r6+13)];
+	f13 = heapFloat[(r9+12)];
+	f14 = heapFloat[(r6+12)];
+	r9 = sp + -16;
+	r10 = sp + -20;
+	heap32[(g0)] = r7;
+	heap32[(g0+1)] = r8;
+	heap32[(g0+2)] = r9;
+	heap32[(g0+3)] = r10;
+	_ZN15btTransformUtil22calculateDiffAxisAngleERK11btTransformS2_R9btVector3Rf(i7);
+	r8 = r9 >> 2;
+	f15 = heapFloat[(r8+2)];
+	f16 = heapFloat[(fp+-5)];
+	f17 = heapFloat[(r8+1)];
+	f18 = heapFloat[(fp+-4)];
+	r8 = sp + -112;
+	f18 = f18*f16;
+	f17 = f17*f16;
+	r9 = r8 >> 2;
+	heapFloat[(fp+-28)] = f18;
+	f15 = f15*f16;
+	heapFloat[(r9+1)] = f17;
+	heapFloat[(r9+2)] = f15;
+	heap32[(r9+3)] = 0;
+	r9 = heap32[(r0+3)];
+	r10 = r9 >> 2;
+	r10 = heap32[(r10)];
+	r10 = r10 >> 2;
+	r10 = heap32[(r10+4)];
+	heap32[(g0)] = r9;
+	__FUNCTION_TABLE__[(r10)>>2](i7);
+	f16 = f_g0;
+	r9 = heap32[(r0+4)];
+	r10 = r9 >> 2;
+	r10 = heap32[(r10)];
+	r10 = r10 >> 2;
+	r10 = heap32[(r10+4)];
+	heap32[(g0)] = r9;
+	f9 = f9*f9;
+	f8 = f8*f8;
+	__FUNCTION_TABLE__[(r10)>>2](i7);
+	f19 = f_g0;
+	f8 = f9+f8;
+	f6 = f6*f6;
+	f6 = f8+f6;
+	heapFloat[(g0)] = f6;
+	f6 = f18*f18;
+	f8 = f17*f17;
+	sqrtf(i7);
+	f9 = f_g0;
+	f11 = f11-f12;
+	f2 = f2-f3;
+	f3 = f13-f14;
+	f4 = f4-f5;
+	f5 = f6+f8;
+	f6 = f15*f15;
+	f8 = f11-f2;
+	f12 = f3-f4;
+	f7 = f7-f10;
+	f0 = f0-f1;
+	f1 = f5+f6;
+	f5 = f7-f0;
+	heapFloat[(g0)] = f1;
+	f1 = f12*f12;
+	f6 = f8*f8;
+	sqrtf(i7);
+	f1 = f1+f6;
+	f6 = f5*f5;
+	f1 = f1+f6;
+	f6 = f9*f16;
+	f9 = f_g0*f19;
+	heapFloat[(g0)] = f1;
+	f1 = f6+f9;
+	sqrtf(i7);
+	f6 = f_g0+f1;
+	f9 =                         0;
+_1: do {
+if(!(f6 ==f9)) //_LBB534_21
+{
+	r9 = _ZTV16btPointCollector;
+	r9 = (r9 + 8)|0;
+	r10 = sp + -176;
+	heap32[(fp+-44)] = r9;
+	r11 = r10 >> 2;
+	heap32[(r11+9)] = 1566444395;
+	heap8[sp+-136] = r2;
+	r12 = heap32[(r0+4)];
+	r13 = r12 >> 2;
+	r13 = heap32[(r13)];
+	r13 = r13 >> 2;
+	r13 = heap32[(r13+11)];
+	r14 = heap32[(r0+2)];
+	r15 = heap32[(r0+1)];
+	heap32[(g0)] = r12;
+	__FUNCTION_TABLE__[(r13)>>2](i7);
+	f6 = f_g0;
+	r12 = heap32[(r0+3)];
+	r13 = r12 >> 2;
+	r13 = heap32[(r13)];
+	r13 = r13 >> 2;
+	r13 = heap32[(r13+11)];
+	heap32[(g0)] = r12;
+	__FUNCTION_TABLE__[(r13)>>2](i7);
+	r12 = heap32[(r0+4)];
+	r13 = heap32[(r0+3)];
+	r16 = r12 >> 2;
+	r17 = r13 >> 2;
+	r18 = _ZTV17btGjkPairDetector;
+	r16 = heap32[(r16+1)];
+	r17 = heap32[(r17+1)];
+	r19 = sp + -256;
+	r18 = (r18 + 8)|0;
+	r20 = r19 >> 2;
+	heap32[(fp+-64)] = r18;
+	heap32[(r20+1)] = 0;
+	heap32[(r20+2)] = 1065353216;
+	heap32[(r20+3)] = 0;
+	heap32[(r20+4)] = 0;
+	heap32[(r20+5)] = r14;
+	heap32[(r20+6)] = r15;
+	heap32[(r20+7)] = r13;
+	heap32[(r20+8)] = r12;
+	heap32[(r20+9)] = r17;
+	heap32[(r20+10)] = r16;
+	heapFloat[(r20+11)] = f_g0;
+	heapFloat[(r20+12)] = f6;
+	heap8[sp+-204] = r2;
+	r12 = sp + -392;
+	heap32[(r20+15)] = -1;
+	r13 = r12 >> 2;
+	heap32[(r20+18)] = 1;
+	heap32[(r13+32)] = 1566444395;
+	heap32[(r13+33)] = 0;
+	heap32[(fp+-98)] = heap32[(r1)];
+	heap32[(r13+1)] = heap32[(r1+1)];
+	heap32[(r13+2)] = heap32[(r1+2)];
+	heap32[(r13+3)] = heap32[(r1+3)];
+	heap32[(r13+4)] = heap32[(r1+4)];
+	heap32[(r13+5)] = heap32[(r1+5)];
+	heap32[(r13+6)] = heap32[(r1+6)];
+	heap32[(r13+7)] = heap32[(r1+7)];
+	heap32[(r13+8)] = heap32[(r1+8)];
+	heap32[(r13+9)] = heap32[(r1+9)];
+	heap32[(r13+10)] = heap32[(r1+10)];
+	heap32[(r13+11)] = heap32[(r1+11)];
+	heap32[(r13+12)] = heap32[(r1+12)];
+	heap32[(r13+13)] = heap32[(r1+13)];
+	heap32[(r13+14)] = heap32[(r1+14)];
+	heap32[(r13+15)] = heap32[(r1+15)];
+	heap32[(r13+16)] = heap32[(r6)];
+	heap32[(r13+17)] = heap32[(r6+1)];
+	heap32[(r13+18)] = heap32[(r6+2)];
+	heap32[(r13+19)] = heap32[(r6+3)];
+	heap32[(r13+20)] = heap32[(r6+4)];
+	heap32[(r13+21)] = heap32[(r6+5)];
+	heap32[(r13+22)] = heap32[(r6+6)];
+	heap32[(r13+23)] = heap32[(r6+7)];
+	heap32[(r13+24)] = heap32[(r6+8)];
+	heap32[(r13+25)] = heap32[(r6+9)];
+	heap32[(r13+26)] = heap32[(r6+10)];
+	heap32[(r13+27)] = heap32[(r6+11)];
+	heap32[(r13+28)] = heap32[(r6+12)];
+	heap32[(r13+29)] = heap32[(r6+13)];
+	heap32[(r13+30)] = heap32[(r6+14)];
+	heap32[(r13+31)] = heap32[(r6+15)];
+	heap32[(g0)] = r19;
+	heap32[(g0+1)] = r12;
+	heap32[(g0+2)] = r10;
+	heap32[(g0+3)] = 0;
+	heap32[(g0+4)] = 0;
+	_ZN17btGjkPairDetector16getClosestPointsERKN36btDiscreteCollisionDetectorInterface17ClosestPointInputERNS0_6ResultEP12btIDebugDrawb(i7);
+	f6 = heapFloat[(r11+5)];
+	r1 = heapU8[sp+-136];
+	r6 = sp + -128;
+	heapFloat[(fp+-32)] = f6;
+	f10 = heapFloat[(r11+6)];
+	r10 = r6 >> 2;
+	heapFloat[(r10+1)] = f10;
+	f13 = heapFloat[(r11+7)];
+	heapFloat[(r10+2)] = f13;
+	f14 = heapFloat[(r11+8)];
+	heapFloat[(r10+3)] = f14;
+if(!(r1 ==0)) //_LBB534_21
+{
+	r1 = heap32[(fp+5)];
+	f15 = heapFloat[(r11+1)];
+	f16 = heapFloat[(r11+2)];
+	f17 = heapFloat[(r11+3)];
+	f18 = f12*f15;
+	f19 = f8*f16;
+	r12 = sp + -456;
+	f18 = f18+f19;
+	f19 = f5*f17;
+	f20 = heapFloat[(r11+9)];
+	f21 = heapFloat[(r11+4)];
+	f18 = f18+f19;
+	r11 = (r12 + 48)|0;
+_4: while(true){
+	f19 =     0.0010000000474974513;
+	if(f20 >f19) //_LBB534_3
+{
+	r13 = r1 >> 2;
+	r14 = heap32[(r13+42)];
+if(!(r14 ==0)) //_LBB534_5
+{
+	r15 = r14 >> 2;
+	r15 = heap32[(r15)];
+	r15 = r15 >> 2;
+	r15 = heap32[(r15+5)];
+	r16 = sp + -80;
+	r17 = r16 >> 2;
+	heap32[(fp+-20)] = 1065353216;
+	heap32[(r17+1)] = 1065353216;
+	heap32[(r17+2)] = 1065353216;
+	heap32[(r17+3)] = 0;
+	heap32[(g0)] = r14;
+	heap32[(g0+1)] = r6;
+	heap32[(g0+2)] = 1045220557;
+	heap32[(g0+3)] = r16;
+	__FUNCTION_TABLE__[(r15)>>2](i7);
+}
+	r2 = (r2 + 1)|0;
+	if(r2 >64) //_LBB534_21
+{
+break _1;
+}
+else{
+	f6 = f12*f15;
+	f10 = f8*f16;
+	f6 = f6+f10;
+	f10 = f5*f17;
+	f18 = f6+f10;
+	f6 = f18+f1;
+	f10 =   1.1920928955078125e-007;
+	if(f6 <=f10) //_LBB534_21
+{
+break _1;
+}
+else{
+	f6 = f20/f6;
+	f19 = f9+f6;
+	f6 =                         0;
+	if(f19 <f6) //_LBB534_21
+{
+break _1;
+}
+else{
+	f10 =                         1;
+	if(f19 >f10) //_LBB534_21
+{
+break _1;
+}
+else{
+	if(f19 <=f9) //_LBB534_21
+{
+break _1;
+}
+else{
+	heap32[(g0)] = r5;
+	heapFloat[(g0+1)] = f4;
+	heapFloat[(g0+2)] = f2;
+	heapFloat[(g0+3)] = f0;
+	heap32[(g0+4)] = r3;
+	heapFloat[(g0+5)] = f19;
+	heap32[(g0+6)] = r12;
+	_ZN15btTransformUtil18integrateTransformERK11btTransformRK9btVector3S5_fRS0_(i7);
+	r14 = sp + -520;
+	heap32[(g0)] = r7;
+	heapFloat[(g0+1)] = f3;
+	heapFloat[(g0+2)] = f11;
+	heapFloat[(g0+3)] = f7;
+	heap32[(g0+4)] = r8;
+	heapFloat[(g0+5)] = f19;
+	heap32[(g0+6)] = r14;
+	_ZN15btTransformUtil18integrateTransformERK11btTransformRK9btVector3S5_fRS0_(i7);
+	r15 = heap32[(r13+42)];
+if(!(r15 ==0)) //_LBB534_12
+{
+	r16 = r15 >> 2;
+	r16 = heap32[(r16)];
+	r16 = r16 >> 2;
+	r16 = heap32[(r16+5)];
+	r17 = sp + -64;
+	r19 = r17 >> 2;
+	heap32[(fp+-16)] = 1065353216;
+	heap32[(r19+1)] = 0;
+	heap32[(r19+2)] = 0;
+	heap32[(r19+3)] = 0;
+	heap32[(g0)] = r15;
+	heap32[(g0+1)] = r11;
+	heap32[(g0+2)] = 1045220557;
+	heap32[(g0+3)] = r17;
+	__FUNCTION_TABLE__[(r16)>>2](i7);
+}
+	r15 = heap32[(r13)];
+	r15 = r15 >> 2;
+	r15 = heap32[(r15)];
+	heap32[(g0)] = r1;
+	heapFloat[(g0+1)] = f19;
+	r16 = sp + -568;
+	__FUNCTION_TABLE__[(r15)>>2](i7);
+	r15 = r16 >> 2;
+	heap32[(fp+-142)] = r9;
+	r17 = 0;
+	heap32[(r15+9)] = 1566444395;
+	heap8[sp+-528] = r17;
+	r19 = heap32[(r0+4)];
+	r20 = heap32[(r0+3)];
+	r21 = heap32[(r0+1)];
+	r22 = heap32[(r0+2)];
+	r23 = sp + -648;
+	heap32[(fp+-162)] = r18;
+	r24 = r23 >> 2;
+	heap32[(r24+1)] = 0;
+	heap32[(r24+2)] = 1065353216;
+	heap32[(r24+3)] = 0;
+	heap32[(r24+4)] = 0;
+	heap32[(r24+5)] = r22;
+	heap32[(r24+6)] = r21;
+	heap32[(r24+7)] = r20;
+	r21 = r20 >> 2;
+	heap32[(r24+8)] = r19;
+	r22 = heap32[(r21+1)];
+	heap32[(r24+9)] = r22;
+	r22 = r19 >> 2;
+	r25 = heap32[(r22+1)];
+	heap32[(r24+10)] = r25;
+	r21 = heap32[(r21)];
+	r21 = r21 >> 2;
+	r21 = heap32[(r21+11)];
+	heap32[(g0)] = r20;
+	__FUNCTION_TABLE__[(r21)>>2](i7);
+	heapFloat[(r24+11)] = f_g0;
+	r20 = heap32[(r22)];
+	r20 = r20 >> 2;
+	r20 = heap32[(r20+11)];
+	heap32[(g0)] = r19;
+	__FUNCTION_TABLE__[(r20)>>2](i7);
+	heapFloat[(r24+12)] = f_g0;
+	heap8[sp+-596] = r17;
+	r19 = sp + -784;
+	heap32[(r24+15)] = -1;
+	r20 = r19 >> 2;
+	heap32[(r24+18)] = 1;
+	heap32[(r20+32)] = 1566444395;
+	heap32[(r20+33)] = 0;
+	r21 = r12 >> 2;
+	heap32[(fp+-196)] = heap32[(fp+-114)];
+	heap32[(r20+1)] = heap32[(r21+1)];
+	heap32[(r20+2)] = heap32[(r21+2)];
+	heap32[(r20+3)] = heap32[(r21+3)];
+	heap32[(r20+4)] = heap32[(r21+4)];
+	heap32[(r20+5)] = heap32[(r21+5)];
+	heap32[(r20+6)] = heap32[(r21+6)];
+	heap32[(r20+7)] = heap32[(r21+7)];
+	heap32[(r20+8)] = heap32[(r21+8)];
+	heap32[(r20+9)] = heap32[(r21+9)];
+	heap32[(r20+10)] = heap32[(r21+10)];
+	heap32[(r20+11)] = heap32[(r21+11)];
+	heap32[(r20+12)] = heap32[(r21+12)];
+	heap32[(r20+13)] = heap32[(r21+13)];
+	heap32[(r20+14)] = heap32[(r21+14)];
+	heap32[(r20+15)] = heap32[(r21+15)];
+	r14 = r14 >> 2;
+	heap32[(r20+16)] = heap32[(fp+-130)];
+	heap32[(r20+17)] = heap32[(r14+1)];
+	heap32[(r20+18)] = heap32[(r14+2)];
+	heap32[(r20+19)] = heap32[(r14+3)];
+	heap32[(r20+20)] = heap32[(r14+4)];
+	heap32[(r20+21)] = heap32[(r14+5)];
+	heap32[(r20+22)] = heap32[(r14+6)];
+	heap32[(r20+23)] = heap32[(r14+7)];
+	heap32[(r20+24)] = heap32[(r14+8)];
+	heap32[(r20+25)] = heap32[(r14+9)];
+	heap32[(r20+26)] = heap32[(r14+10)];
+	heap32[(r20+27)] = heap32[(r14+11)];
+	heap32[(r20+28)] = heap32[(r14+12)];
+	heap32[(r20+29)] = heap32[(r14+13)];
+	heap32[(r20+30)] = heap32[(r14+14)];
+	heap32[(r20+31)] = heap32[(r14+15)];
+	heap32[(g0)] = r23;
+	heap32[(g0+1)] = r19;
+	heap32[(g0+2)] = r16;
+	heap32[(g0+3)] = 0;
+	heap32[(g0+4)] = 0;
+	_ZN17btGjkPairDetector16getClosestPointsERKN36btDiscreteCollisionDetectorInterface17ClosestPointInputERNS0_6ResultEP12btIDebugDrawb(i7);
+	r14 = heapU8[sp+-528];
+	if(r14 !=0) //_LBB534_14
+{
+	f20 = heapFloat[(r15+9)];
+	if(f20 >=f6) //_LBB534_17
+{
+	f6 = heapFloat[(r15+5)];
+	heapFloat[(fp+-32)] = f6;
+	f10 = heapFloat[(r15+6)];
+	heapFloat[(r10+1)] = f10;
+	f13 = heapFloat[(r15+7)];
+	heapFloat[(r10+2)] = f13;
+	f14 = heapFloat[(r15+8)];
+	heapFloat[(r10+3)] = f14;
+	f15 = heapFloat[(r15+1)];
+	f16 = heapFloat[(r15+2)];
+	f17 = heapFloat[(r15+3)];
+	f21 = heapFloat[(r15+4)];
+	heap32[(fp+-142)] = r9;
+	f9 = f19;
+}
+else{
+__label__ = 14;
+break _4;
+}
+}
+else{
+__label__ = 15;
+break _4;
+}
+}
+}
+}
+}
+}
+}
+else{
+__label__ = 18;
+break _4;
+}
+}
+switch(__label__ ){//multiple entries
+case 18:
+	r0 = r1 >> 2;
+	f0 = f18+f1;
+	f1 = heapFloat[(r0+43)];
+	if(f0 <=f1) //_LBB534_21
+{
+break _1;
+}
+else{
+	heapFloat[(r0+41)] = f9;
+	heapFloat[(r0+33)] = f15;
+	heapFloat[(r0+34)] = f16;
+	heapFloat[(r0+35)] = f17;
+	heapFloat[(r0+36)] = f21;
+	heapFloat[(r0+37)] = f6;
+	heapFloat[(r0+38)] = f10;
+	heapFloat[(r0+39)] = f13;
+	heapFloat[(r0+40)] = f14;
+	r0 = 1;
+	r_g0 = r0;
+	return;
+}
+break;
+case 14:
+	heapFloat[(r13+41)] = f19;
+	f0 = heapFloat[(r15+4)];
+	f1 = heapFloat[(r15+3)];
+	f2 = heapFloat[(r15+2)];
+	heap32[(r13+33)] = heap32[(r15+1)];
+	heapFloat[(r13+34)] = f2;
+	heapFloat[(r13+35)] = f1;
+	heapFloat[(r13+36)] = f0;
+	heap32[(r13+37)] = heap32[(r15+5)];
+	heap32[(r13+38)] = heap32[(r15+6)];
+	heap32[(r13+39)] = heap32[(r15+7)];
+	heap32[(r13+40)] = heap32[(r15+8)];
+	r17 = r4;
+break;
+}
+	heap32[(fp+-142)] = r9;
+	r0 = r17 & 255;
+	r_g0 = r0;
+	return;
+}
+}
+} while(0);
+	r0 = 0;
+	r_g0 = r0;
+	return;
+}
+
+function _ZN15btTransformUtil18integrateTransformERK11btTransformRK9btVector3S5_fRS0_(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var f0;
+	var f1;
+	var f2;
+	var f3;
+	var f4;
+	var f5;
+	var f6;
+	var f7;
+	var f8;
+	var f9;
+	var f10;
+	var f11;
+	var f12;
+	var f13;
+var __label__ = 0;
+	i7 = sp + -32;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = r0 >> 2;
+	f0 = heapFloat[(fp+5)];
+	f1 = heapFloat[(fp+1)];
+	r2 = heap32[(fp+6)];
+	f2 = heapFloat[(fp+2)];
+	f1 = f1*f0;
+	f3 = heapFloat[(r1+12)];
+	f4 = heapFloat[(r1+14)];
+	f5 = heapFloat[(r1+13)];
+	f6 = heapFloat[(fp+3)];
+	f2 = f2*f0;
+	r1 = r2 >> 2;
+	f1 = f3+f1;
+	f3 = f6*f0;
+	f2 = f5+f2;
+	heapFloat[(r1+12)] = f1;
+	f1 = f4+f3;
+	heapFloat[(r1+13)] = f2;
+	r2 = heap32[(fp+4)];
+	heapFloat[(r1+14)] = f1;
+	r2 = r2 >> 2;
+	heap32[(r1+15)] = 0;
+	f1 = heapFloat[(r2)];
+	f2 = heapFloat[(r2+1)];
+	f3 = heapFloat[(r2+2)];
+	f1 = f1*f1;
+	f2 = f2*f2;
+	f1 = f1+f2;
+	f2 = f3*f3;
+	f1 = f1+f2;
+	heapFloat[(g0)] = f1;
+	sqrtf(i7);
+	f1 = f_g0;
+	f2 = f1*f0;
+	f3 =       0.78539818525314331;
+	if(f2 >f3) //_LBB535_2
+{
+	f1 = f3/f0;
+}
+	f2 =     0.0010000000474974513;
+	if(f1 >=f2) //_LBB535_5
+{
+	f2 =                       0.5;
+	f2 = f1*f2;
+	f2 = f2*f0;
+	heapFloat[(g0)] = f2;
+	sinf(i7);
+	f3 = heapFloat[(r2+2)];
+	f2 = f_g0/f1;
+	f5 = heapFloat[(r2+1)];
+	f6 = heapFloat[(r2)];
+	f4 = f3*f2;
+	f3 = f5*f2;
+	f2 = f6*f2;
+}
+else{
+	f2 = f0*f0;
+	f2 = f2*f0;
+	f3 =      -0.02083333395421505;
+	f2 = f2*f3;
+	f3 =                       0.5;
+	f2 = f2*f1;
+	f3 = f0*f3;
+	f2 = f2*f1;
+	f4 = heapFloat[(r2+2)];
+	f2 = f3+f2;
+	f3 = heapFloat[(r2+1)];
+	f5 = heapFloat[(r2)];
+	f4 = f4*f2;
+	f3 = f3*f2;
+	f2 = f5*f2;
+}
+	f0 = f1*f0;
+	f1 =                       0.5;
+	f0 = f0*f1;
+	heapFloat[(g0)] = f0;
+	cosf(i7);
+	f0 = f_g0;
+	r2 = sp + -16;
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r2;
+	_ZNK11btMatrix3x311getRotationER12btQuaternion(i7);
+	r0 = r2 >> 2;
+	f1 = heapFloat[(fp+-4)];
+	f5 = heapFloat[(r0+3)];
+	f6 = heapFloat[(r0+1)];
+	f7 = heapFloat[(r0+2)];
+	f8 = f0*f6;
+	f9 = f3*f5;
+	f10 = f0*f1;
+	f11 = f2*f5;
+	f12 = f0*f7;
+	f13 = f4*f5;
+	f8 = f8+f9;
+	f9 = f4*f1;
+	f10 = f10+f11;
+	f11 = f3*f7;
+	f0 = f0*f5;
+	f5 = f2*f1;
+	f12 = f12+f13;
+	f13 = f2*f6;
+	f8 = f8+f9;
+	f2 = f2*f7;
+	f9 = f10+f11;
+	f10 = f4*f6;
+	f2 = f8-f2;
+	f8 = f9-f10;
+	f0 = f0-f5;
+	f5 = f3*f6;
+	f6 = f12+f13;
+	f1 = f3*f1;
+	f1 = f6-f1;
+	f3 = f8*f8;
+	f6 = f2*f2;
+	f0 = f0-f5;
+	f4 = f4*f7;
+	f0 = f0-f4;
+	f3 = f3+f6;
+	f4 = f1*f1;
+	f3 = f3+f4;
+	f4 = f0*f0;
+	f3 = f3+f4;
+	heapFloat[(g0)] = f3;
+	sqrtf(i7);
+	f3 = f_g0;
+	f4 =                         0;
+	if(f3 !=f4) //_LBB535_8
+{
+	f4 =                         1;
+	f3 = f4/f3;
+	f5 = f8*f3;
+	f2 = f2*f3;
+	f1 = f1*f3;
+	f6 = f5*f5;
+	f7 = f2*f2;
+	f0 = f0*f3;
+	f3 = f6+f7;
+	f6 = f1*f1;
+	f3 = f3+f6;
+	f6 = f0*f0;
+	f7 =                         2;
+	f3 = f3+f6;
+	f3 = f7/f3;
+	f6 = f1*f3;
+	f7 = f2*f3;
+	f8 = f2*f7;
+	f1 = f1*f6;
+	f9 = f8+f1;
+	f9 = f4-f9;
+	f10 = f5*f7;
+	f11 = f0*f6;
+	f12 = f5*f6;
+	f7 = f0*f7;
+	f13 = f10-f11;
+	heapFloat[(r1)] = f9;
+	f3 = f5*f3;
+	f9 = f12+f7;
+	heapFloat[(r1+1)] = f13;
+	f5 = f5*f3;
+	heapFloat[(r1+2)] = f9;
+	f1 = f5+f1;
+	f9 = f10+f11;
+	heap32[(r1+3)] = 0;
+	f2 = f2*f6;
+	f0 = f0*f3;
+	f1 = f4-f1;
+	heapFloat[(r1+4)] = f9;
+	f3 = f2-f0;
+	heapFloat[(r1+5)] = f1;
+	heapFloat[(r1+6)] = f3;
+	f1 = f12-f7;
+	heap32[(r1+7)] = 0;
+	f3 = f5+f8;
+	f0 = f2+f0;
+	heapFloat[(r1+8)] = f1;
+	f1 = f4-f3;
+	heapFloat[(r1+9)] = f0;
+	heapFloat[(r1+10)] = f1;
+	heap32[(r1+11)] = 0;
+	return;
+}
+else{
+	r1 = _2E_str584;
+	r0 = _2E_str685;
+	heap32[(g0)] = r1;
+	heap32[(g0+1)] = r0;
+	heap32[(g0+2)] = 188;
+	_assert(i7);
+}
+}
+
+function _ZN12btConvexCastD0Ev(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+var __label__ = 0;
+	i7 = sp + -8;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = _ZTV12btConvexCast;
+	r2 = r0 >> 2;
+	r1 = (r1 + 8)|0;
+	heap32[(r2)] = r1;
+	heap32[(g0)] = r0;
+	_ZdlPv(i7);
+	return;
+}
+
+function _ZN12btConvexCastD1Ev(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+var __label__ = 0;
+	i7 = sp + 0;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = _ZTV12btConvexCast;
+	r0 = r0 >> 2;
+	r1 = (r1 + 8)|0;
+	heap32[(r0)] = r1;
+	return;
+}
+
+function _ZN15btGjkConvexCastD1Ev(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+var __label__ = 0;
+	i7 = sp + 0;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = _ZTV12btConvexCast;
+	r0 = r0 >> 2;
+	r1 = (r1 + 8)|0;
+	heap32[(r0)] = r1;
+	return;
+}
+
+function _ZN15btGjkConvexCastD0Ev(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+var __label__ = 0;
+	i7 = sp + -8;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = _ZTV12btConvexCast;
+	r2 = r0 >> 2;
+	r1 = (r1 + 8)|0;
+	heap32[(r2)] = r1;
+	heap32[(g0)] = r0;
+	_ZdlPv(i7);
+	return;
+}
+
+function _ZN15btGjkConvexCast16calcTimeOfImpactERK11btTransformS2_S2_S2_RN12btConvexCast10CastResultE(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+	var r6;
+	var r7;
+	var r8;
+	var r9;
+	var r10;
+	var r11;
+	var r12;
+	var r13;
+	var f0;
+	var f1;
+	var f2;
+	var f3;
+	var f4;
+	var f5;
+	var f6;
+	var f7;
+	var f8;
+	var f9;
+	var f10;
+	var f11;
+	var f12;
+	var f13;
+var __label__ = 0;
+	i7 = sp + -288;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r0 = r0 >> 2;
+	r1 = heap32[(r0+1)];
+	r2 = 0;
+	r3 = r1 >> 2;
+	heap8[r1+312] = r2;
+	r4 = 1;
+	heap32[(r3)] = 0;
+	heap8[r1+356] = r4;
+	heap32[(r3+73)] = 1566444395;
+	heap32[(r3+74)] = 1566444395;
+	heap32[(r3+75)] = 1566444395;
+	heap32[(r3+76)] = 0;
+	heap8[r1+352] = r2;
+	heap32[(r3+84)] = 0;
+	heap32[(r3+85)] = 0;
+	heap32[(r3+86)] = 0;
+	heap32[(r3+87)] = 0;
+	r3 = heapU8[r1+332];
+	r4 = heap32[(fp+2)];
+	r5 = heap32[(fp+1)];
+	r6 = heap32[(fp+4)];
+	r7 = heap32[(fp+3)];
+	r3 = r3 & 240;
+	r4 = r4 >> 2;
+	heap8[r1+332] = r3;
+	r1 = r5 >> 2;
+	r3 = r6 >> 2;
+	r5 = r7 >> 2;
+	r6 = _ZTV16btPointCollector;
+	f0 = heapFloat[(r4+14)];
+	f1 = heapFloat[(r1+14)];
+	f2 = heapFloat[(r3+14)];
+	f3 = heapFloat[(r5+14)];
+	f4 = heapFloat[(r4+13)];
+	f5 = heapFloat[(r1+13)];
+	f6 = heapFloat[(r3+13)];
+	f7 = heapFloat[(r5+13)];
+	f8 = heapFloat[(r4+12)];
+	f9 = heapFloat[(r1+12)];
+	f10 = heapFloat[(r3+12)];
+	f11 = heapFloat[(r5+12)];
+	r7 = sp + -48;
+	r6 = (r6 + 8)|0;
+	r8 = r7 >> 2;
+	heap32[(fp+-12)] = r6;
+	heap32[(r8+9)] = 1566444395;
+	heap8[sp+-8] = r2;
+	r6 = heap32[(r0+3)];
+	r9 = heap32[(r0+2)];
+	r0 = heap32[(r0+1)];
+	r10 = _ZTV17btGjkPairDetector;
+	r11 = sp + -128;
+	r10 = (r10 + 8)|0;
+	heap32[(fp+-32)] = r10;
+	r10 = r11 >> 2;
+	heap32[(r10+1)] = 0;
+	heap32[(r10+2)] = 1065353216;
+	heap32[(r10+3)] = 0;
+	heap32[(r10+4)] = 0;
+	heap32[(r10+5)] = 0;
+	heap32[(r10+6)] = r0;
+	heap32[(r10+7)] = r9;
+	r0 = r9 >> 2;
+	heap32[(r10+8)] = r6;
+	r12 = heap32[(r0+1)];
+	heap32[(r10+9)] = r12;
+	r12 = r6 >> 2;
+	r13 = heap32[(r12+1)];
+	heap32[(r10+10)] = r13;
+	r0 = heap32[(r0)];
+	r0 = r0 >> 2;
+	r0 = heap32[(r0+11)];
+	heap32[(g0)] = r9;
+	__FUNCTION_TABLE__[(r0)>>2](i7);
+	heapFloat[(r10+11)] = f_g0;
+	r0 = heap32[(r12)];
+	r0 = r0 >> 2;
+	r0 = heap32[(r0+11)];
+	heap32[(g0)] = r6;
+	__FUNCTION_TABLE__[(r0)>>2](i7);
+	heapFloat[(r10+12)] = f_g0;
+	heap8[sp+-76] = r2;
+	r0 = sp + -264;
+	heap32[(r10+15)] = -1;
+	r6 = r0 >> 2;
+	heap32[(r10+18)] = 1;
+	heap32[(r6+32)] = 1566444395;
+	heap32[(r6+33)] = 0;
+	heap32[(fp+-66)] = heap32[(r1)];
+	heap32[(r6+1)] = heap32[(r1+1)];
+	heap32[(r6+2)] = heap32[(r1+2)];
+	heap32[(r6+3)] = heap32[(r1+3)];
+	heap32[(r6+4)] = heap32[(r1+4)];
+	heap32[(r6+5)] = heap32[(r1+5)];
+	heap32[(r6+6)] = heap32[(r1+6)];
+	heap32[(r6+7)] = heap32[(r1+7)];
+	heap32[(r6+8)] = heap32[(r1+8)];
+	heap32[(r6+9)] = heap32[(r1+9)];
+	heap32[(r6+10)] = heap32[(r1+10)];
+	heap32[(r6+11)] = heap32[(r1+11)];
+	heap32[(r6+12)] = heap32[(r1+12)];
+	heap32[(r6+13)] = heap32[(r1+13)];
+	heap32[(r6+14)] = heap32[(r1+14)];
+	heap32[(r6+15)] = heap32[(r1+15)];
+	heap32[(r6+16)] = heap32[(r5)];
+	heap32[(r6+17)] = heap32[(r5+1)];
+	heap32[(r6+18)] = heap32[(r5+2)];
+	heap32[(r6+19)] = heap32[(r5+3)];
+	heap32[(r6+20)] = heap32[(r5+4)];
+	heap32[(r6+21)] = heap32[(r5+5)];
+	heap32[(r6+22)] = heap32[(r5+6)];
+	heap32[(r6+23)] = heap32[(r5+7)];
+	heap32[(r6+24)] = heap32[(r5+8)];
+	heap32[(r6+25)] = heap32[(r5+9)];
+	heap32[(r6+26)] = heap32[(r5+10)];
+	heap32[(r6+27)] = heap32[(r5+11)];
+	heap32[(r6+28)] = heap32[(r5+12)];
+	heap32[(r6+29)] = heap32[(r5+13)];
+	heap32[(r6+30)] = heap32[(r5+14)];
+	heap32[(r6+31)] = heap32[(r5+15)];
+	heap32[(g0)] = r11;
+	heap32[(g0+1)] = r0;
+	heap32[(g0+2)] = r7;
+	heap32[(g0+3)] = 0;
+	heap32[(g0+4)] = 0;
+	_ZN17btGjkPairDetector16getClosestPointsERKN36btDiscreteCollisionDetectorInterface17ClosestPointInputERNS0_6ResultEP12btIDebugDrawb(i7);
+	r9 = heapU8[sp+-8];
+_1: do {
+if(!(r9 ==0)) //_LBB540_14
+{
+	f0 = f0-f1;
+	f1 = f2-f3;
+	f2 = f4-f5;
+	f3 = f6-f7;
+	f4 = f8-f9;
+	f5 = f10-f11;
+	r9 = heap32[(fp+5)];
+	f0 = f0-f1;
+	f1 = f2-f3;
+	f2 = f4-f5;
+	f3 = heapFloat[(r8+8)];
+	f4 = heapFloat[(r8+7)];
+	f5 = heapFloat[(r8+6)];
+	f6 = heapFloat[(r8+5)];
+	f7 = heapFloat[(r8+9)];
+	f8 = heapFloat[(r8+1)];
+	f9 = heapFloat[(r8+2)];
+	f10 = heapFloat[(r8+3)];
+	f11 = heapFloat[(r8+4)];
+	f12 =                         0;
+_3: while(true){
+	f13 =     0.0010000000474974513;
+	if(f7 >f13) //_LBB540_2
+{
+	r2 = (r2 + 1)|0;
+	if(r2 >32) //_LBB540_14
+{
+break _1;
+}
+else{
+	f3 = f2*f8;
+	f4 = f1*f9;
+	f3 = f3+f4;
+	f4 = f0*f10;
+	f3 = f3+f4;
+	f3 = f7/f3;
+	f13 = f12-f3;
+	f3 =                         0;
+	if(f13 <f3) //_LBB540_14
+{
+break _1;
+}
+else{
+	f4 =                         1;
+	if(f13 >f4) //_LBB540_14
+{
+break _1;
+}
+else{
+	if(f13 <=f12) //_LBB540_14
+{
+break _1;
+}
+else{
+	r10 = r9 >> 2;
+	r12 = heap32[(r10)];
+	r12 = r12 >> 2;
+	r12 = heap32[(r12)];
+	heap32[(g0)] = r9;
+	heapFloat[(g0+1)] = f13;
+	__FUNCTION_TABLE__[(r12)>>2](i7);
+	f5 = heapFloat[(r4+12)];
+	f6 = heapFloat[(r1+12)];
+	f4 = f4-f13;
+	f6 = f6*f4;
+	f5 = f5*f13;
+	f5 = f6+f5;
+	heapFloat[(r6+12)] = f5;
+	f5 = heapFloat[(r1+13)];
+	f6 = heapFloat[(r4+13)];
+	f5 = f5*f4;
+	f6 = f6*f13;
+	f5 = f5+f6;
+	heapFloat[(r6+13)] = f5;
+	f5 = heapFloat[(r1+14)];
+	f6 = heapFloat[(r4+14)];
+	f5 = f5*f4;
+	f6 = f6*f13;
+	f5 = f5+f6;
+	heapFloat[(r6+14)] = f5;
+	f5 = heapFloat[(r5+12)];
+	f6 = heapFloat[(r3+12)];
+	f5 = f5*f4;
+	f6 = f6*f13;
+	f5 = f5+f6;
+	heapFloat[(r6+28)] = f5;
+	f5 = heapFloat[(r5+13)];
+	f6 = heapFloat[(r3+13)];
+	f5 = f5*f4;
+	f6 = f6*f13;
+	f5 = f5+f6;
+	heapFloat[(r6+29)] = f5;
+	f5 = heapFloat[(r5+14)];
+	f6 = heapFloat[(r3+14)];
+	f4 = f5*f4;
+	f5 = f6*f13;
+	f4 = f4+f5;
+	heapFloat[(r6+30)] = f4;
+	heap32[(g0)] = r11;
+	heap32[(g0+1)] = r0;
+	heap32[(g0+2)] = r7;
+	heap32[(g0+3)] = 0;
+	heap32[(g0+4)] = 0;
+	_ZN17btGjkPairDetector16getClosestPointsERKN36btDiscreteCollisionDetectorInterface17ClosestPointInputERNS0_6ResultEP12btIDebugDrawb(i7);
+	r12 = heapU8[sp+-8];
+	if(r12 ==0) //_LBB540_14
+{
+break _1;
+}
+else{
+	f7 = heapFloat[(r8+9)];
+	if(f7 >=f3) //_LBB540_9
+{
+	f6 = heapFloat[(r8+5)];
+	f5 = heapFloat[(r8+6)];
+	f4 = heapFloat[(r8+7)];
+	f3 = heapFloat[(r8+8)];
+	f8 = heapFloat[(r8+1)];
+	f9 = heapFloat[(r8+2)];
+	f10 = heapFloat[(r8+3)];
+	f11 = heapFloat[(r8+4)];
+	f12 = f13;
+}
+else{
+__label__ = 8;
+break _3;
+}
+}
+}
+}
+}
+}
+}
+else{
+__label__ = 11;
+break _3;
+}
+}
+switch(__label__ ){//multiple entries
+case 11:
+	r0 = r9 >> 2;
+	f2 = f8*f2;
+	f1 = f9*f1;
+	f7 = heapFloat[(r0+43)];
+	f1 = f2+f1;
+	f0 = f10*f0;
+	f0 = f1+f0;
+	f1 = -f7;
+	if(f0 >=f1) //_LBB540_14
+{
+break _1;
+}
+else{
+	heapFloat[(r0+41)] = f12;
+	heapFloat[(r0+33)] = f8;
+	heapFloat[(r0+34)] = f9;
+	heapFloat[(r0+35)] = f10;
+	heapFloat[(r0+36)] = f11;
+	heapFloat[(r0+37)] = f6;
+	heapFloat[(r0+38)] = f5;
+	heapFloat[(r0+39)] = f4;
+	heapFloat[(r0+40)] = f3;
+}
+break;
+case 8:
+	heapFloat[(r10+41)] = f13;
+	f0 = heapFloat[(r8+4)];
+	f1 = heapFloat[(r8+3)];
+	f2 = heapFloat[(r8+2)];
+	heap32[(r10+33)] = heap32[(r8+1)];
+	heapFloat[(r10+34)] = f2;
+	heapFloat[(r10+35)] = f1;
+	heapFloat[(r10+36)] = f0;
+	heap32[(r10+37)] = heap32[(r8+5)];
+	heap32[(r10+38)] = heap32[(r8+6)];
+	heap32[(r10+39)] = heap32[(r8+7)];
+	heap32[(r10+40)] = heap32[(r8+8)];
+break;
+}
+	r0 = 1;
+	r_g0 = r0;
+	return;
+}
+} while(0);
+	r0 = 0;
+	r_g0 = r0;
+	return;
+}
+
+function _ZN12gjkepa2_impl3GJK13projectoriginERK9btVector3S3_PfRj(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var f0;
+	var f1;
+	var f2;
+	var f3;
+	var f4;
+	var f5;
+	var f6;
+	var f7;
+var __label__ = 0;
+	i7 = sp + 0;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp+1)];
+	r1 = heap32[(fp)];
+	r0 = r0 >> 2;
+	r1 = r1 >> 2;
+	f0 = heapFloat[(r1+1)];
+	f1 = heapFloat[(r0+1)];
+	f2 = heapFloat[(r1)];
+	f3 = heapFloat[(r0)];
+	f1 = f1-f0;
+	f3 = f3-f2;
+	f4 = heapFloat[(r1+2)];
+	f5 = heapFloat[(r0+2)];
+	f5 = f5-f4;
+	f6 = f3*f3;
+	f7 = f1*f1;
+	f6 = f6+f7;
+	f7 = f5*f5;
+	f6 = f6+f7;
+	f7 =                         0;
+	if(f6 <=f7) //_LBB541_7
+{
+	f0 =                        -1;
+	f_g0 = f0;
+	return;
+}
+else{
+	r2 = heap32[(fp+2)];
+	r3 = heap32[(fp+3)];
+	f2 = f2*f3;
+	f0 = f0*f1;
+	f0 = f2+f0;
+	f2 = f4*f5;
+	f0 = f0+f2;
+	f0 = -f0;
+	f0 = f0/f6;
+	f2 =                         1;
+	if(f0 <f2) //_LBB541_4
+{
+	if(f0 >f7) //_LBB541_6
+{
+	r0 = r2 >> 2;
+	f2 = f2-f0;
+	heapFloat[(r0+1)] = f0;
+	r2 = r3 >> 2;
+	heapFloat[(r0)] = f2;
+	heap32[(r2)] = 3;
+	f2 = heapFloat[(r1)];
+	f3 = f3*f0;
+	f4 = heapFloat[(r1+1)];
+	f1 = f1*f0;
+	f2 = f2+f3;
+	f1 = f4+f1;
+	f3 = heapFloat[(r1+2)];
+	f0 = f5*f0;
+	f0 = f3+f0;
+	f2 = f2*f2;
+	f1 = f1*f1;
+	f1 = f2+f1;
+	f0 = f0*f0;
+	f0 = f1+f0;
+	f_g0 = f0;
+	return;
+}
+else{
+	r2 = r2 >> 2;
+	heap32[(r2)] = 1065353216;
+	r3 = r3 >> 2;
+	heap32[(r2+1)] = 0;
+	heap32[(r3)] = 1;
+	f0 = heapFloat[(r1)];
+	f1 = heapFloat[(r1+1)];
+	f2 = heapFloat[(r1+2)];
+}
+}
+else{
+	r1 = r2 >> 2;
+	heap32[(r1)] = 0;
+	r2 = r3 >> 2;
+	heap32[(r1+1)] = 1065353216;
+	heap32[(r2)] = 2;
+	f0 = heapFloat[(r0)];
+	f1 = heapFloat[(r0+1)];
+	f2 = heapFloat[(r0+2)];
+}
+	f0 = f0*f0;
+	f1 = f1*f1;
+	f0 = f0+f1;
+	f1 = f2*f2;
+	f0 = f0+f1;
+	f_g0 = f0;
+	return;
+}
+}
+
+function _ZN12gjkepa2_implL10InitializeEPK13btConvexShapeRK11btTransformS2_S5_RN15btGjkEpaSolver28sResultsERNS_13MinkowskiDiffEb(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var f0;
+	var f1;
+	var f2;
+	var f3;
+	var f4;
+	var f5;
+	var f6;
+	var f7;
+	var f8;
+	var f9;
+	var f10;
+	var f11;
+	var f12;
+	var f13;
+	var f14;
+	var f15;
+	var f16;
+	var f17;
+	var f18;
+	var f19;
+	var f20;
+	var f21;
+	var f22;
+	var f23;
+	var f24;
+	var f25;
+	var f26;
+	var f27;
+	var f28;
+	var f29;
+var __label__ = 0;
+	i7 = sp + 0;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp+4)];
+	r0 = r0 >> 2;
+	r1 = heap32[(fp+5)];
+	heap32[(r0)] = 0;
+	heap32[(r0+1)] = 0;
+	heap32[(r0+2)] = 0;
+	heap32[(r0+3)] = 0;
+	heap32[(r0+4)] = 0;
+	heap32[(r0+5)] = 0;
+	heap32[(r0+6)] = 0;
+	heap32[(r0+7)] = 0;
+	heap32[(r0+8)] = 0;
+	r0 = r1 >> 2;
+	r1 = heap32[(fp)];
+	r2 = heap32[(fp+3)];
+	r3 = heap32[(fp+1)];
+	r4 = heap32[(fp+2)];
+	heap32[(r0)] = r1;
+	r1 = r2 >> 2;
+	heap32[(r0+1)] = r4;
+	r2 = r3 >> 2;
+	f0 = heapFloat[(r2)];
+	f1 = heapFloat[(r1)];
+	f2 = heapFloat[(r2+4)];
+	f3 = heapFloat[(r1+4)];
+	f4 = heapFloat[(r2+1)];
+	f5 = heapFloat[(r2+5)];
+	f6 = f1*f0;
+	f7 = f3*f2;
+	f8 = heapFloat[(r2+8)];
+	f9 = heapFloat[(r1+8)];
+	f10 = heapFloat[(r1+2)];
+	f11 = heapFloat[(r2+2)];
+	f12 = heapFloat[(r1+1)];
+	f13 = heapFloat[(r1+6)];
+	f14 = heapFloat[(r2+6)];
+	f15 = heapFloat[(r1+5)];
+	f16 = heapFloat[(r1+10)];
+	f17 = heapFloat[(r2+10)];
+	f18 = heapFloat[(r2+9)];
+	f19 = heapFloat[(r1+9)];
+	f20 = f1*f4;
+	f21 = f3*f5;
+	f6 = f6+f7;
+	f7 = f9*f8;
+	f1 = f1*f11;
+	f3 = f3*f14;
+	f20 = f20+f21;
+	f21 = f9*f18;
+	f6 = f6+f7;
+	f1 = f1+f3;
+	f3 = f9*f17;
+	f7 = f20+f21;
+	heapFloat[(r0+2)] = f6;
+	f6 = f12*f0;
+	f9 = f15*f2;
+	f1 = f1+f3;
+	heapFloat[(r0+3)] = f7;
+	heapFloat[(r0+4)] = f1;
+	f1 = f12*f4;
+	f3 = f15*f5;
+	f6 = f6+f9;
+	f7 = f19*f8;
+	f9 = f12*f11;
+	f12 = f15*f14;
+	f1 = f1+f3;
+	f3 = f19*f18;
+	f6 = f6+f7;
+	heap32[(r0+5)] = 0;
+	f7 = f9+f12;
+	f9 = f19*f17;
+	f1 = f1+f3;
+	heapFloat[(r0+6)] = f6;
+	f0 = f10*f0;
+	f2 = f13*f2;
+	f3 = f7+f9;
+	heapFloat[(r0+7)] = f1;
+	heapFloat[(r0+8)] = f3;
+	f1 = f10*f4;
+	f3 = f13*f5;
+	f0 = f0+f2;
+	f2 = f16*f8;
+	f4 = f10*f11;
+	f5 = f13*f14;
+	f1 = f1+f3;
+	f3 = f16*f18;
+	f0 = f0+f2;
+	heap32[(r0+9)] = 0;
+	f2 = f4+f5;
+	f4 = f16*f17;
+	f1 = f1+f3;
+	heapFloat[(r0+10)] = f0;
+	f0 = f2+f4;
+	heapFloat[(r0+11)] = f1;
+	heapFloat[(r0+12)] = f0;
+	heap32[(r0+13)] = 0;
+	f0 = heapFloat[(r2)];
+	f1 = heapFloat[(r1)];
+	f2 = heapFloat[(r2+4)];
+	f3 = heapFloat[(r1+4)];
+	f4 = heapFloat[(r1+1)];
+	f5 = heapFloat[(r1+5)];
+	f6 = f0*f1;
+	f7 = f2*f3;
+	f8 = heapFloat[(r2+8)];
+	f9 = heapFloat[(r1+8)];
+	f10 = heapFloat[(r2+2)];
+	f11 = heapFloat[(r2+6)];
+	f12 = heapFloat[(r2+1)];
+	f13 = heapFloat[(r1+2)];
+	f14 = heapFloat[(r2+5)];
+	f15 = heapFloat[(r1+6)];
+	f16 = heapFloat[(r2+10)];
+	f17 = heapFloat[(r1+10)];
+	f18 = heapFloat[(r2+9)];
+	f19 = heapFloat[(r1+9)];
+	f20 = f0*f4;
+	f21 = f2*f5;
+	f6 = f6+f7;
+	f7 = f8*f9;
+	f22 = heapFloat[(r1+14)];
+	f23 = heapFloat[(r2+14)];
+	f24 = heapFloat[(r1+13)];
+	f25 = heapFloat[(r2+13)];
+	f26 = heapFloat[(r1+12)];
+	f27 = heapFloat[(r2+12)];
+	f28 = f0*f13;
+	f29 = f2*f15;
+	f20 = f20+f21;
+	f21 = f8*f19;
+	f6 = f6+f7;
+	f7 = f28+f29;
+	f28 = f8*f17;
+	f20 = f20+f21;
+	heapFloat[(r0+14)] = f6;
+	f6 = f12*f1;
+	f21 = f14*f3;
+	f7 = f7+f28;
+	heapFloat[(r0+15)] = f20;
+	heapFloat[(r0+16)] = f7;
+	f7 = f12*f4;
+	f20 = f14*f5;
+	f6 = f6+f21;
+	f21 = f18*f9;
+	f28 = f12*f13;
+	f29 = f14*f15;
+	f7 = f7+f20;
+	f20 = f18*f19;
+	f6 = f6+f21;
+	heap32[(r0+17)] = 0;
+	f21 = f28+f29;
+	f28 = f18*f17;
+	f7 = f7+f20;
+	heapFloat[(r0+18)] = f6;
+	f1 = f10*f1;
+	f3 = f11*f3;
+	f6 = f21+f28;
+	heapFloat[(r0+19)] = f7;
+	heapFloat[(r0+20)] = f6;
+	f4 = f10*f4;
+	f5 = f11*f5;
+	f1 = f1+f3;
+	f3 = f16*f9;
+	f6 = f10*f13;
+	f7 = f11*f15;
+	f4 = f4+f5;
+	f5 = f16*f19;
+	f1 = f1+f3;
+	heap32[(r0+21)] = 0;
+	f3 = f26-f27;
+	f9 = f24-f25;
+	f6 = f6+f7;
+	f7 = f16*f17;
+	f4 = f4+f5;
+	heapFloat[(r0+22)] = f1;
+	f1 = f22-f23;
+	f0 = f0*f3;
+	f2 = f2*f9;
+	f5 = f6+f7;
+	heapFloat[(r0+23)] = f4;
+	heapFloat[(r0+24)] = f5;
+	f4 = f12*f3;
+	f5 = f14*f9;
+	f0 = f0+f2;
+	f2 = f8*f1;
+	f3 = f10*f3;
+	f6 = f11*f9;
+	f4 = f4+f5;
+	f5 = f18*f1;
+	f0 = f0+f2;
+	heap32[(r0+25)] = 0;
+	f2 = f3+f6;
+	f1 = f16*f1;
+	f3 = f4+f5;
+	heapFloat[(r0+26)] = f0;
+	f0 = f2+f1;
+	heapFloat[(r0+27)] = f3;
+	heapFloat[(r0+28)] = f0;
+	heap32[(r0+29)] = 0;
+	r1 = heap32[(fp+6)];
+	if(r1 ==0) //_LBB542_3
+{
+	r1 = _ZNK13btConvexShape44localGetSupportVertexWithoutMarginNonVirtualERK9btVector3__index__;
+}
+else{
+	r1 = _ZNK13btConvexShape31localGetSupportVertexNonVirtualERK9btVector3__index__;
+}
+	heap32[(r0+30)] = r1;
+	heap32[(r0+31)] = 0;
+	return;
+}
+
+function _ZNK12gjkepa2_impl3GJK10getsupportERK9btVector3RNS0_3sSVE(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+	var r6;
+	var r7;
+	var f0;
+	var f1;
+	var f2;
+	var f3;
+	var f4;
+	var f5;
+	var f6;
+	var f7;
+	var f8;
+	var f9;
+	var f10;
+	var f11;
+var __label__ = 0;
+	i7 = sp + -64;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp+1)];
+	r0 = r0 >> 2;
+	f0 = heapFloat[(r0)];
+	f1 = heapFloat[(r0+1)];
+	f2 = heapFloat[(r0+2)];
+	f0 = f0*f0;
+	f1 = f1*f1;
+	f0 = f0+f1;
+	f1 = f2*f2;
+	f0 = f0+f1;
+	heapFloat[(g0)] = f0;
+	sqrtf(i7);
+	f1 =                         1;
+	r1 = heap32[(fp+2)];
+	f0 = f1/f_g0;
+	f1 = heapFloat[(r0+2)];
+	f2 = heapFloat[(r0+1)];
+	f3 = heapFloat[(r0)];
+	f3 = f3*f0;
+	r0 = r1 >> 2;
+	f2 = f2*f0;
+	heapFloat[(r0)] = f3;
+	f0 = f1*f0;
+	heapFloat[(r0+1)] = f2;
+	r2 = heap32[(fp)];
+	heapFloat[(r0+2)] = f0;
+	r2 = r2 >> 2;
+	heap32[(r0+3)] = 0;
+	r3 = heap32[(r2+30)];
+	f0 = -f0;
+	f1 = -f2;
+	f2 = -f3;
+	r4 = heap32[(r2+1)];
+	r5 = heap32[(r2+31)];
+	r6 = r3 & 1;
+	if(r6 != 0) //_LBB543_2
+{
+	r6 = (r4 + r5)|0;
+	r6 = r6 >> 2;
+	r6 = heap32[(r6)];
+	r3 = (r6 + r3)|0;
+	r3 = (r3 + -1)|0;
+	r3 = r3 >> 2;
+	r3 = heap32[(r3)];
+}
+	f3 = heapFloat[(r2+2)];
+	f4 = heapFloat[(r2+3)];
+	f5 = heapFloat[(r2+6)];
+	f6 = heapFloat[(r2+7)];
+	f3 = f3*f2;
+	f4 = f4*f1;
+	f7 = heapFloat[(r2+4)];
+	f8 = heapFloat[(r2+10)];
+	f9 = heapFloat[(r2+11)];
+	f10 = heapFloat[(r2+12)];
+	f11 = heapFloat[(r2+8)];
+	f5 = f5*f2;
+	f6 = f6*f1;
+	f3 = f3+f4;
+	f4 = f7*f0;
+	r6 = sp + -16;
+	f2 = f8*f2;
+	f1 = f9*f1;
+	f5 = f5+f6;
+	f6 = f11*f0;
+	f3 = f3+f4;
+	r7 = r6 >> 2;
+	f1 = f2+f1;
+	f0 = f10*f0;
+	f2 = f5+f6;
+	heapFloat[(fp+-4)] = f3;
+	f0 = f1+f0;
+	heapFloat[(r7+1)] = f2;
+	heapFloat[(r7+2)] = f0;
+	heap32[(r7+3)] = 0;
+	r7 = sp + -32;
+	r4 = (r4 + r5)|0;
+	heap32[(g0)] = r7;
+	heap32[(g0+1)] = r4;
+	heap32[(g0+2)] = r6;
+	__FUNCTION_TABLE__[(r3)>>2](i7);
+	r3 = r7 >> 2;
+	f0 = heapFloat[(r2+22)];
+	f1 = heapFloat[(fp+-8)];
+	f2 = heapFloat[(r2+18)];
+	f3 = heapFloat[(r2+14)];
+	f4 = heapFloat[(r2+23)];
+	f5 = heapFloat[(r3+1)];
+	f6 = heapFloat[(r2+19)];
+	f7 = heapFloat[(r2+15)];
+	f0 = f0*f1;
+	f4 = f4*f5;
+	f8 = heapFloat[(r2+24)];
+	f9 = heapFloat[(r3+2)];
+	f10 = heapFloat[(r2+20)];
+	f11 = heapFloat[(r2+16)];
+	f2 = f2*f1;
+	f6 = f6*f5;
+	f1 = f3*f1;
+	f3 = f7*f5;
+	f0 = f0+f4;
+	f4 = f8*f9;
+	f2 = f2+f6;
+	f5 = f10*f9;
+	f1 = f1+f3;
+	f3 = f11*f9;
+	f0 = f0+f4;
+	f4 = heapFloat[(r2+28)];
+	f2 = f2+f5;
+	f5 = heapFloat[(r2+27)];
+	f1 = f1+f3;
+	f3 = heapFloat[(r2+26)];
+	r3 = heap32[(r2+30)];
+	f0 = f0+f4;
+	f2 = f2+f5;
+	f1 = f1+f3;
+	r4 = heap32[(r2)];
+	r2 = heap32[(r2+31)];
+	r5 = r3 & 1;
+	if(r5 != 0) //_LBB543_5
+{
+	r5 = (r4 + r2)|0;
+	r5 = r5 >> 2;
+	r5 = heap32[(r5)];
+	r3 = (r3 + r5)|0;
+	r3 = (r3 + -1)|0;
+	r3 = r3 >> 2;
+	r3 = heap32[(r3)];
+}
+	r5 = sp + -48;
+	r2 = (r4 + r2)|0;
+	heap32[(g0)] = r5;
+	heap32[(g0+1)] = r2;
+	heap32[(g0+2)] = r1;
+	__FUNCTION_TABLE__[(r3)>>2](i7);
+	r1 = r5 >> 2;
+	f3 = heapFloat[(fp+-12)];
+	f4 = heapFloat[(r1+2)];
+	f5 = heapFloat[(r1+1)];
+	f1 = f3-f1;
+	f2 = f5-f2;
+	heapFloat[(r0+4)] = f1;
+	f0 = f4-f0;
+	heapFloat[(r0+5)] = f2;
+	heapFloat[(r0+6)] = f0;
+	heap32[(r0+7)] = 0;
+	return;
+}
+
+function _ZN12gjkepa2_impl3GJK13EncloseOriginEv(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+	var r6;
+	var r7;
+	var r8;
+	var r9;
+	var f0;
+	var f1;
+	var f2;
+	var f3;
+	var f4;
+	var f5;
+	var f6;
+	var f7;
+	var f8;
+	var f9;
+	var f10;
+	var f11;
+	var f12;
+var __label__ = 0;
+	i7 = sp + -128;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = r0 >> 2;
+	r2 = heap32[(r1+93)];
+	r3 = r2 >> 2;
+	r4 = heap32[(r3+8)];
+_1: do {
+	if(r4 >2) //_LBB544_3
+{
+	if(r4 ==3) //_LBB544_17
+{
+	r5 = heap32[(r3)];
+	r6 = heap32[(r3+2)];
+	r7 = heap32[(r3+1)];
+	r6 = r6 >> 2;
+	r5 = r5 >> 2;
+	r7 = r7 >> 2;
+	f0 = heapFloat[(r6+6)];
+	f1 = heapFloat[(r5+6)];
+	f2 = heapFloat[(r7+6)];
+	f3 = heapFloat[(r6+5)];
+	f4 = heapFloat[(r5+5)];
+	f5 = heapFloat[(r7+5)];
+	f5 = f5-f4;
+	f0 = f0-f1;
+	f1 = f2-f1;
+	f2 = f3-f4;
+	f3 = heapFloat[(r6+4)];
+	f4 = heapFloat[(r5+4)];
+	f6 = heapFloat[(r7+4)];
+	f3 = f3-f4;
+	f4 = f6-f4;
+	f6 = f5*f0;
+	f7 = f1*f2;
+	r5 = sp + -112;
+	f6 = f6-f7;
+	f1 = f1*f3;
+	f0 = f4*f0;
+	f0 = f1-f0;
+	r6 = r5 >> 2;
+	heapFloat[(fp+-28)] = f6;
+	f1 = f4*f2;
+	f2 = f5*f3;
+	f1 = f1-f2;
+	heapFloat[(r6+1)] = f0;
+	f2 = f6*f6;
+	f0 = f0*f0;
+	heapFloat[(r6+2)] = f1;
+	f0 = f2+f0;
+	f1 = f1*f1;
+	f0 = f0+f1;
+	f1 =                         0;
+	heap32[(r6+3)] = 0;
+	if(f0 <=f1) //_LBB544_25
+{
+__label__ = 24;
+break _1;
+}
+else{
+	r4 = r4 << 2;
+	r4 = (r2 + r4)|0;
+	r4 = r4 >> 2;
+	heap32[(r4+4)] = 0;
+	r4 = heap32[(r1+91)];
+	r4 = (r4 + -1)|0;
+	r7 = heap32[(r3+8)];
+	r8 = r4 << 2;
+	r7 = r7 << 2;
+	r8 = (r0 + r8)|0;
+	r7 = (r2 + r7)|0;
+	r8 = r8 >> 2;
+	heap32[(r1+91)] = r4;
+	r4 = r7 >> 2;
+	r7 = heap32[(r8+87)];
+	heap32[(r4)] = r7;
+	r4 = heap32[(r3+8)];
+	r7 = r4 << 2;
+	r2 = (r2 + r7)|0;
+	r2 = r2 >> 2;
+	r2 = heap32[(r2)];
+	r4 = (r4 + 1)|0;
+	heap32[(r3+8)] = r4;
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r5;
+	heap32[(g0+2)] = r2;
+	_ZNK12gjkepa2_impl3GJK10getsupportERK9btVector3RNS0_3sSVE(i7);
+	heap32[(g0)] = r0;
+	_ZN12gjkepa2_impl3GJK13EncloseOriginEv(i7);
+	r3 = r_g0;
+	if(r3 !=0) //_LBB544_26
+{
+__label__ = 25;
+break _1;
+}
+else{
+	r3 = heap32[(r1+93)];
+	r2 = r3 >> 2;
+	r4 = heap32[(r2+8)];
+	r4 = (r4 + -1)|0;
+	r5 = heap32[(r1+91)];
+	r7 = r4 << 2;
+	r3 = (r3 + r7)|0;
+	r7 = (r0 + 348)|0;
+	r8 = r5 << 2;
+	r8 = (r7 + r8)|0;
+	r3 = r3 >> 2;
+	heap32[(r2+8)] = r4;
+	r2 = r8 >> 2;
+	r3 = heap32[(r3)];
+	r4 = (r5 + 1)|0;
+	heap32[(r2)] = r3;
+	heap32[(r1+91)] = r4;
+	f0 = heapFloat[(r6+2)];
+	f1 = heapFloat[(r6+1)];
+	f2 = heapFloat[(fp+-28)];
+	r3 = sp + -16;
+	f2 = -f2;
+	r2 = r3 >> 2;
+	f1 = -f1;
+	heapFloat[(fp+-4)] = f2;
+	f0 = -f0;
+	heapFloat[(r2+1)] = f1;
+	heapFloat[(r2+2)] = f0;
+	heap32[(r2+3)] = 0;
+	r2 = heap32[(r1+93)];
+	r4 = r2 >> 2;
+	r5 = heap32[(r4+8)];
+	r5 = r5 << 2;
+	r5 = (r2 + r5)|0;
+	r5 = r5 >> 2;
+	heap32[(r5+4)] = 0;
+	r5 = heap32[(r1+91)];
+	r5 = (r5 + -1)|0;
+	r6 = heap32[(r4+8)];
+	r8 = r5 << 2;
+	r6 = r6 << 2;
+	r7 = (r7 + r8)|0;
+	r6 = (r2 + r6)|0;
+	r7 = r7 >> 2;
+	heap32[(r1+91)] = r5;
+	r5 = r6 >> 2;
+	r6 = heap32[(r7)];
+	heap32[(r5)] = r6;
+	r5 = heap32[(r4+8)];
+	r6 = r5 << 2;
+	r2 = (r2 + r6)|0;
+	r2 = r2 >> 2;
+	r2 = heap32[(r2)];
+	r5 = (r5 + 1)|0;
+	heap32[(r4+8)] = r5;
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r3;
+	heap32[(g0+2)] = r2;
+	_ZNK12gjkepa2_impl3GJK10getsupportERK9btVector3RNS0_3sSVE(i7);
+	heap32[(g0)] = r0;
+	_ZN12gjkepa2_impl3GJK13EncloseOriginEv(i7);
+	r3 = r_g0;
+	if(r3 !=0) //_LBB544_26
+{
+__label__ = 25;
+break _1;
+}
+else{
+	r3 = heap32[(r1+93)];
+	r2 = r3 >> 2;
+	r4 = heap32[(r2+8)];
+	r4 = (r4 + -1)|0;
+	r5 = heap32[(r1+91)];
+	r6 = r4 << 2;
+	r7 = r5 << 2;
+	r3 = (r3 + r6)|0;
+	r0 = (r0 + r7)|0;
+	r3 = r3 >> 2;
+	heap32[(r2+8)] = r4;
+	r0 = r0 >> 2;
+	r3 = heap32[(r3)];
+	r2 = (r5 + 1)|0;
+	heap32[(r0+87)] = r3;
+	heap32[(r1+91)] = r2;
+	r3 = 0;
+	r_g0 = r3;
+	return;
+}
+}
+}
+}
+else{
+	if(r4 ==4) //_LBB544_21
+{
+	r0 = heap32[(r3)];
+	r1 = heap32[(r3+1)];
+	r2 = heap32[(r3+3)];
+	r0 = r0 >> 2;
+	r1 = r1 >> 2;
+	r2 = r2 >> 2;
+	r3 = heap32[(r3+2)];
+	r3 = r3 >> 2;
+	f0 = heapFloat[(r1+6)];
+	f1 = heapFloat[(r2+6)];
+	f2 = heapFloat[(r0+6)];
+	f3 = heapFloat[(r0+5)];
+	f4 = heapFloat[(r2+5)];
+	f5 = heapFloat[(r1+4)];
+	f6 = heapFloat[(r2+4)];
+	f7 = heapFloat[(r3+5)];
+	f8 = heapFloat[(r0+4)];
+	f9 = heapFloat[(r3+4)];
+	f0 = f0-f1;
+	f3 = f3-f4;
+	f5 = f5-f6;
+	f2 = f2-f1;
+	f8 = f8-f6;
+	f10 = f3*f0;
+	f6 = f9-f6;
+	f9 = f2*f5;
+	f7 = f7-f4;
+	f0 = f8*f0;
+	f11 = heapFloat[(r3+6)];
+	f12 = heapFloat[(r1+5)];
+	f10 = f10*f6;
+	f9 = f9*f7;
+	f4 = f12-f4;
+	f9 = f10+f9;
+	f0 = f0*f7;
+	f3 = f3*f5;
+	f1 = f11-f1;
+	f5 = f8*f4;
+	f0 = f9-f0;
+	f3 = f3*f1;
+	f2 = f2*f4;
+	f0 = f0-f3;
+	f1 = f5*f1;
+	f0 = f0+f1;
+	f1 = f2*f6;
+	f0 = f0-f1;
+	f1 =                         0;
+	if(f0 <f1) //_LBB544_23
+{
+	f0 = -f0;
+}
+	r0 = f0 > f1;
+	r0 = r0 & 1;
+	r_g0 = r0;
+	return;
+}
+else{
+__label__ = 24;
+break _1;
+}
+}
+}
+else{
+	if(r4 ==1) //_LBB544_5
+{
+	r2 = 0;
+_16: while(true){
+	if(uint(r2) <uint(3)) //_LBB544_6
+{
+	r3 = sp + -64;
+	r4 = r3 >> 2;
+	heap32[(fp+-16)] = 0;
+	r5 = r2 << 2;
+	heap32[(r4+1)] = 0;
+	r5 = (r3 + r5)|0;
+	heap32[(r4+2)] = 0;
+	r5 = r5 >> 2;
+	heap32[(r4+3)] = 0;
+	heap32[(r5)] = 1065353216;
+	r5 = heap32[(r1+93)];
+	r6 = r5 >> 2;
+	r7 = heap32[(r6+8)];
+	r7 = r7 << 2;
+	r7 = (r5 + r7)|0;
+	r7 = r7 >> 2;
+	heap32[(r7+4)] = 0;
+	r7 = heap32[(r1+91)];
+	r7 = (r7 + -1)|0;
+	r8 = heap32[(r6+8)];
+	r9 = r7 << 2;
+	r8 = r8 << 2;
+	r9 = (r0 + r9)|0;
+	r8 = (r5 + r8)|0;
+	r9 = r9 >> 2;
+	heap32[(r1+91)] = r7;
+	r7 = r8 >> 2;
+	r8 = heap32[(r9+87)];
+	heap32[(r7)] = r8;
+	r7 = heap32[(r6+8)];
+	r8 = r7 << 2;
+	r5 = (r5 + r8)|0;
+	r5 = r5 >> 2;
+	r5 = heap32[(r5)];
+	r7 = (r7 + 1)|0;
+	heap32[(r6+8)] = r7;
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r3;
+	heap32[(g0+2)] = r5;
+	_ZNK12gjkepa2_impl3GJK10getsupportERK9btVector3RNS0_3sSVE(i7);
+	heap32[(g0)] = r0;
+	_ZN12gjkepa2_impl3GJK13EncloseOriginEv(i7);
+	r3 = r_g0;
+	if(r3 !=0) //_LBB544_26
+{
+__label__ = 25;
+break _1;
+}
+else{
+	r3 = heap32[(r1+93)];
+	r5 = r3 >> 2;
+	r6 = heap32[(r5+8)];
+	r6 = (r6 + -1)|0;
+	r7 = heap32[(r1+91)];
+	r8 = r6 << 2;
+	r3 = (r3 + r8)|0;
+	r8 = (r0 + 348)|0;
+	r9 = r7 << 2;
+	r9 = (r8 + r9)|0;
+	r3 = r3 >> 2;
+	heap32[(r5+8)] = r6;
+	r5 = r9 >> 2;
+	r3 = heap32[(r3)];
+	r6 = (r7 + 1)|0;
+	heap32[(r5)] = r3;
+	heap32[(r1+91)] = r6;
+	f0 = heapFloat[(r4+2)];
+	f1 = heapFloat[(r4+1)];
+	f2 = heapFloat[(fp+-16)];
+	r3 = sp + -48;
+	f2 = -f2;
+	r4 = r3 >> 2;
+	f1 = -f1;
+	heapFloat[(fp+-12)] = f2;
+	f0 = -f0;
+	heapFloat[(r4+1)] = f1;
+	heapFloat[(r4+2)] = f0;
+	heap32[(r4+3)] = 0;
+	r4 = heap32[(r1+93)];
+	r5 = r4 >> 2;
+	r6 = heap32[(r5+8)];
+	r6 = r6 << 2;
+	r6 = (r4 + r6)|0;
+	r6 = r6 >> 2;
+	heap32[(r6+4)] = 0;
+	r6 = heap32[(r1+91)];
+	r6 = (r6 + -1)|0;
+	r7 = heap32[(r5+8)];
+	r9 = r6 << 2;
+	r7 = r7 << 2;
+	r8 = (r8 + r9)|0;
+	r7 = (r4 + r7)|0;
+	r8 = r8 >> 2;
+	heap32[(r1+91)] = r6;
+	r6 = r7 >> 2;
+	r7 = heap32[(r8)];
+	heap32[(r6)] = r7;
+	r6 = heap32[(r5+8)];
+	r7 = r6 << 2;
+	r4 = (r4 + r7)|0;
+	r4 = r4 >> 2;
+	r4 = heap32[(r4)];
+	r6 = (r6 + 1)|0;
+	heap32[(r5+8)] = r6;
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r3;
+	heap32[(g0+2)] = r4;
+	_ZNK12gjkepa2_impl3GJK10getsupportERK9btVector3RNS0_3sSVE(i7);
+	heap32[(g0)] = r0;
+	_ZN12gjkepa2_impl3GJK13EncloseOriginEv(i7);
+	r3 = r_g0;
+	if(r3 !=0) //_LBB544_26
+{
+__label__ = 25;
+break _1;
+}
+else{
+	r3 = heap32[(r1+93)];
+	r4 = r3 >> 2;
+	r5 = heap32[(r4+8)];
+	r5 = (r5 + -1)|0;
+	r6 = heap32[(r1+91)];
+	r7 = r5 << 2;
+	r8 = r6 << 2;
+	r3 = (r3 + r7)|0;
+	r7 = (r0 + r8)|0;
+	r3 = r3 >> 2;
+	heap32[(r4+8)] = r5;
+	r4 = r7 >> 2;
+	r3 = heap32[(r3)];
+	r2 = (r2 + 1)|0;
+	r5 = (r6 + 1)|0;
+	heap32[(r4+87)] = r3;
+	heap32[(r1+91)] = r5;
+continue _16;
+}
+}
+}
+else{
+__label__ = 24;
+break _1;
+}
+}
+}
+else{
+	if(r4 ==2) //_LBB544_10
+{
+	r2 = heap32[(r3+1)];
+	r3 = heap32[(r3)];
+	r2 = r2 >> 2;
+	r3 = r3 >> 2;
+	f0 = heapFloat[(r2+6)];
+	f1 = heapFloat[(r3+6)];
+	f2 = heapFloat[(r2+5)];
+	f3 = heapFloat[(r3+5)];
+	f4 = heapFloat[(r2+4)];
+	f5 = heapFloat[(r3+4)];
+	f0 = f0-f1;
+	f1 = f2-f3;
+	f2 = f4-f5;
+	r2 = 0;
+_23: while(true){
+	if(uint(r2) <uint(3)) //_LBB544_11
+{
+	r3 = sp + -80;
+	r4 = r3 >> 2;
+	heap32[(fp+-20)] = 0;
+	r5 = r2 << 2;
+	heap32[(r4+1)] = 0;
+	r3 = (r3 + r5)|0;
+	heap32[(r4+2)] = 0;
+	r3 = r3 >> 2;
+	heap32[(r4+3)] = 0;
+	heap32[(r3)] = 1065353216;
+	f3 = heapFloat[(r4+2)];
+	f4 = heapFloat[(r4+1)];
+	f5 = heapFloat[(fp+-20)];
+	f6 = f1*f3;
+	f7 = f0*f4;
+	r3 = sp + -96;
+	f6 = f6-f7;
+	f7 = f0*f5;
+	f3 = f2*f3;
+	f3 = f7-f3;
+	r4 = r3 >> 2;
+	heapFloat[(fp+-24)] = f6;
+	f4 = f2*f4;
+	f5 = f1*f5;
+	f4 = f4-f5;
+	heapFloat[(r4+1)] = f3;
+	f5 = f6*f6;
+	f3 = f3*f3;
+	heapFloat[(r4+2)] = f4;
+	f3 = f5+f3;
+	f4 = f4*f4;
+	f3 = f3+f4;
+	f4 =                         0;
+	heap32[(r4+3)] = 0;
+if(!(f3 <=f4)) //_LBB544_15
+{
+	r5 = heap32[(r1+93)];
+	r6 = r5 >> 2;
+	r7 = heap32[(r6+8)];
+	r7 = r7 << 2;
+	r7 = (r5 + r7)|0;
+	r7 = r7 >> 2;
+	heap32[(r7+4)] = 0;
+	r7 = heap32[(r1+91)];
+	r7 = (r7 + -1)|0;
+	r8 = heap32[(r6+8)];
+	r9 = r7 << 2;
+	r8 = r8 << 2;
+	r9 = (r0 + r9)|0;
+	r8 = (r5 + r8)|0;
+	r9 = r9 >> 2;
+	heap32[(r1+91)] = r7;
+	r7 = r8 >> 2;
+	r8 = heap32[(r9+87)];
+	heap32[(r7)] = r8;
+	r7 = heap32[(r6+8)];
+	r8 = r7 << 2;
+	r5 = (r5 + r8)|0;
+	r5 = r5 >> 2;
+	r5 = heap32[(r5)];
+	r7 = (r7 + 1)|0;
+	heap32[(r6+8)] = r7;
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r3;
+	heap32[(g0+2)] = r5;
+	_ZNK12gjkepa2_impl3GJK10getsupportERK9btVector3RNS0_3sSVE(i7);
+	heap32[(g0)] = r0;
+	_ZN12gjkepa2_impl3GJK13EncloseOriginEv(i7);
+	r3 = r_g0;
+	if(r3 !=0) //_LBB544_26
+{
+__label__ = 25;
+break _1;
+}
+else{
+	r3 = heap32[(r1+93)];
+	r5 = r3 >> 2;
+	r6 = heap32[(r5+8)];
+	r6 = (r6 + -1)|0;
+	r7 = heap32[(r1+91)];
+	r8 = r6 << 2;
+	r3 = (r3 + r8)|0;
+	r8 = (r0 + 348)|0;
+	r9 = r7 << 2;
+	r9 = (r8 + r9)|0;
+	r3 = r3 >> 2;
+	heap32[(r5+8)] = r6;
+	r5 = r9 >> 2;
+	r3 = heap32[(r3)];
+	r6 = (r7 + 1)|0;
+	heap32[(r5)] = r3;
+	heap32[(r1+91)] = r6;
+	f3 = heapFloat[(r4+2)];
+	f4 = heapFloat[(r4+1)];
+	f5 = heapFloat[(fp+-24)];
+	r3 = sp + -32;
+	f5 = -f5;
+	r4 = r3 >> 2;
+	f4 = -f4;
+	heapFloat[(fp+-8)] = f5;
+	f3 = -f3;
+	heapFloat[(r4+1)] = f4;
+	heapFloat[(r4+2)] = f3;
+	heap32[(r4+3)] = 0;
+	r4 = heap32[(r1+93)];
+	r5 = r4 >> 2;
+	r6 = heap32[(r5+8)];
+	r6 = r6 << 2;
+	r6 = (r4 + r6)|0;
+	r6 = r6 >> 2;
+	heap32[(r6+4)] = 0;
+	r6 = heap32[(r1+91)];
+	r6 = (r6 + -1)|0;
+	r7 = heap32[(r5+8)];
+	r9 = r6 << 2;
+	r7 = r7 << 2;
+	r8 = (r8 + r9)|0;
+	r7 = (r4 + r7)|0;
+	r8 = r8 >> 2;
+	heap32[(r1+91)] = r6;
+	r6 = r7 >> 2;
+	r7 = heap32[(r8)];
+	heap32[(r6)] = r7;
+	r6 = heap32[(r5+8)];
+	r7 = r6 << 2;
+	r4 = (r4 + r7)|0;
+	r4 = r4 >> 2;
+	r4 = heap32[(r4)];
+	r6 = (r6 + 1)|0;
+	heap32[(r5+8)] = r6;
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r3;
+	heap32[(g0+2)] = r4;
+	_ZNK12gjkepa2_impl3GJK10getsupportERK9btVector3RNS0_3sSVE(i7);
+	heap32[(g0)] = r0;
+	_ZN12gjkepa2_impl3GJK13EncloseOriginEv(i7);
+	r3 = r_g0;
+	if(r3 !=0) //_LBB544_26
+{
+__label__ = 25;
+break _1;
+}
+else{
+	r3 = heap32[(r1+93)];
+	r4 = r3 >> 2;
+	r5 = heap32[(r4+8)];
+	r5 = (r5 + -1)|0;
+	r6 = heap32[(r1+91)];
+	r7 = r5 << 2;
+	r8 = r6 << 2;
+	r3 = (r3 + r7)|0;
+	r7 = (r0 + r8)|0;
+	r3 = r3 >> 2;
+	heap32[(r4+8)] = r5;
+	r4 = r7 >> 2;
+	r3 = heap32[(r3)];
+	r5 = (r6 + 1)|0;
+	heap32[(r4+87)] = r3;
+	heap32[(r1+91)] = r5;
+}
+}
+}
+	r2 = (r2 + 1)|0;
+continue _23;
+}
+else{
+__label__ = 24;
+break _1;
+}
+}
+}
+else{
+__label__ = 24;
+}
+}
+}
+} while(0);
+switch(__label__ ){//multiple entries
+case 24:
+	r0 = 0;
+	r_g0 = r0;
+	return;
+break;
+case 25:
+	r0 = 1;
+	r_g0 = r0;
+	return;
+break;
+}
+}
+
+function _ZN12gjkepa2_impl3GJK13projectoriginERK9btVector3S3_S3_PfRj(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+	var r6;
+	var r7;
+	var r8;
+	var r9;
+	var r10;
+	var r11;
+	var r12;
+	var r13;
+	var r14;
+	var r15;
+	var r16;
+	var r17;
+	var r18;
+	var f0;
+	var f1;
+	var f2;
+	var f3;
+	var f4;
+	var f5;
+	var f6;
+	var f7;
+	var f8;
+	var f9;
+	var f10;
+	var f11;
+	var f12;
+	var f13;
+	var f14;
+	var f15;
+	var f16;
+	var f17;
+	var f18;
+	var f19;
+	var f20;
+var __label__ = 0;
+	i7 = sp + -96;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = sp + -12;
+	r2 = heap32[(fp+1)];
+	r3 = r1 >> 2;
+	heap32[(fp+-3)] = r0;
+	r4 = heap32[(fp+2)];
+	heap32[(r3+1)] = r2;
+	r5 = r0 >> 2;
+	heap32[(r3+2)] = r4;
+	r2 = r2 >> 2;
+	f0 = heapFloat[(r5+2)];
+	f1 = heapFloat[(r2+2)];
+	f2 = heapFloat[(r5+1)];
+	f3 = heapFloat[(r2+1)];
+	f4 = heapFloat[(r5)];
+	f5 = heapFloat[(r2)];
+	r3 = sp + -64;
+	f6 = f4-f5;
+	f7 = f2-f3;
+	r6 = r3 >> 2;
+	heapFloat[(fp+-16)] = f6;
+	f8 = f0-f1;
+	heapFloat[(r6+1)] = f7;
+	heapFloat[(r6+2)] = f8;
+	r4 = r4 >> 2;
+	heap32[(r6+3)] = 0;
+	f9 = heapFloat[(r4+2)];
+	f10 = heapFloat[(r4+1)];
+	f11 = heapFloat[(r4)];
+	f5 = f5-f11;
+	f3 = f3-f10;
+	heapFloat[(r6+4)] = f5;
+	f1 = f1-f9;
+	heapFloat[(r6+5)] = f3;
+	heapFloat[(r6+6)] = f1;
+	f12 = f8*f5;
+	f13 = f6*f1;
+	f14 = f7*f1;
+	f15 = f8*f3;
+	f12 = f12-f13;
+	f13 = f14-f15;
+	f11 = f11-f4;
+	heap32[(r6+7)] = 0;
+	f14 = f6*f3;
+	f15 = f7*f5;
+	f14 = f14-f15;
+	f10 = f10-f2;
+	heapFloat[(r6+8)] = f11;
+	f15 = f13*f13;
+	f16 = f12*f12;
+	f9 = f9-f0;
+	heapFloat[(r6+9)] = f10;
+	f15 = f15+f16;
+	f16 = f14*f14;
+	f15 = f15+f16;
+	heapFloat[(r6+10)] = f9;
+	heap32[(r6+11)] = 0;
+	f16 =                         0;
+	if(f15 >f16) //_LBB545_2
+{
+	r6 = heap32[(fp+3)];
+	r7 = heap32[(fp+4)];
+	r8 = sp + -72;
+	r9 = r8 >> 2;
+	heap32[(fp+-18)] = 0;
+	r10 = 0;
+	f17 =                        -1;
+	heap32[(r9+1)] = 0;
+	heap32[(fp+-19)] = 0;
+	r18 = 0;
+_3: while(true){
+	f18 = f7*f14;
+	f19 = f8*f12;
+	f8 = f8*f13;
+	f20 = f6*f14;
+	f18 = f18-f19;
+	f8 = f8-f20;
+	f6 = f6*f12;
+	f7 = f7*f13;
+	f4 = f4*f18;
+	f2 = f2*f8;
+	f6 = f6-f7;
+	f2 = f4+f2;
+	f0 = f0*f6;
+	f0 = f2+f0;
+_5: do {
+	if(f0 >f16) //_LBB545_5
+{
+	r11 = _ZZN12gjkepa2_impl3GJK13projectoriginERK9btVector3S3_S3_PfRjE4imd3;
+	r12 = r10 << 2;
+	r13 = (r11 + r12)|0;
+	r13 = r13 >> 2;
+	r13 = heap32[(r13)];
+	r14 = r13 << 2;
+	r15 = (r1 + r14)|0;
+	r15 = r15 >> 2;
+	r15 = heap32[(r15)];
+	r16 = sp + -76;
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r15;
+	heap32[(g0+2)] = r8;
+	heap32[(g0+3)] = r16;
+	_ZN12gjkepa2_impl3GJK13projectoriginERK9btVector3S3_PfRj(i7);
+	f0 = f_g0;
+if(!(f17 <f16)) //_LBB545_7
+{
+	if(f0 >=f17) //_LBB545_4
+{
+break _5;
+}
+}
+	r0 = heap32[(fp+-19)];
+	r15 = 1;
+	r11 = (r11 + r14)|0;
+	r16 = r0 & 1;
+	r17 = r15 << r10;
+	r0 = r0 & 2;
+	r13 = r15 << r13;
+	r11 = r11 >> 2;
+	r15 = r16 == 0 ? r18 : r17;
+	r0 = r0 == 0 ? r18 : r13;
+	r11 = heap32[(r11)];
+	r12 = (r6 + r12)|0;
+	r13 = r7 >> 2;
+	r0 = (r15 + r0)|0;
+	r11 = r11 << 2;
+	r14 = (r6 + r14)|0;
+	r12 = r12 >> 2;
+	heap32[(r13)] = r0;
+	r0 = (r6 + r11)|0;
+	r11 = r14 >> 2;
+	heap32[(r12)] = heap32[(fp+-18)];
+	r0 = r0 >> 2;
+	heap32[(r11)] = heap32[(r9+1)];
+	heap32[(r0)] = 0;
+	f17 = f0;
+}
+} while(0);
+	if(r10 ==2) //_LBB545_10
+{
+break _3;
+}
+else{
+	r11 = (r10 + 1)|0;
+	r0 = r10 << 2;
+	r0 = (r1 + r0)|0;
+	r0 = r0 >> 2;
+	r10 = r10 << 4;
+	r0 = heap32[(r0+1)];
+	r10 = (r3 + r10)|0;
+	r10 = r10 >> 2;
+	r12 = r0 >> 2;
+	f6 = heapFloat[(r10+4)];
+	f7 = heapFloat[(r10+5)];
+	f8 = heapFloat[(r10+6)];
+	f4 = heapFloat[(r12)];
+	f2 = heapFloat[(r12+1)];
+	f0 = heapFloat[(r12+2)];
+	r10 = r11;
+}
+}
+	if(f17 <f16) //_LBB545_12
+{
+	f17 = heapFloat[(r5)];
+	f0 = heapFloat[(r5+1)];
+	f2 = heapFloat[(r5+2)];
+	f17 = f17*f13;
+	f0 = f0*f12;
+	heapFloat[(g0)] = f15;
+	f17 = f17+f0;
+	f0 = f2*f14;
+	f17 = f17+f0;
+	r0 = r7 >> 2;
+	sqrtf(i7);
+	f0 = f_g0;
+	f17 = f17/f15;
+	heap32[(r0)] = 7;
+	f2 = f13*f17;
+	f4 = heapFloat[(r2)];
+	f6 = f12*f17;
+	f7 = heapFloat[(r2+1)];
+	f8 = heapFloat[(r2+2)];
+	f17 = f14*f17;
+	f7 = f7-f6;
+	f8 = f8-f17;
+	f4 = f4-f2;
+	f12 = f3*f8;
+	f13 = f1*f7;
+	f1 = f1*f4;
+	f8 = f5*f8;
+	f12 = f12-f13;
+	f1 = f1-f8;
+	f5 = f5*f7;
+	f3 = f3*f4;
+	f3 = f5-f3;
+	f4 = f12*f12;
+	f1 = f1*f1;
+	f1 = f4+f1;
+	f3 = f3*f3;
+	f1 = f1+f3;
+	heapFloat[(g0)] = f1;
+	sqrtf(i7);
+	r0 = r6 >> 2;
+	f1 = f_g0/f0;
+	heapFloat[(r0)] = f1;
+	f1 = heapFloat[(r4+2)];
+	f3 = heapFloat[(r4+1)];
+	f4 = heapFloat[(r4)];
+	f3 = f3-f6;
+	f1 = f1-f17;
+	f4 = f4-f2;
+	f5 = f10*f1;
+	f7 = f9*f3;
+	f8 = f9*f4;
+	f1 = f11*f1;
+	f5 = f5-f7;
+	f1 = f8-f1;
+	f3 = f11*f3;
+	f4 = f10*f4;
+	f3 = f3-f4;
+	f4 = f5*f5;
+	f1 = f1*f1;
+	f1 = f4+f1;
+	f3 = f3*f3;
+	f1 = f1+f3;
+	heapFloat[(g0)] = f1;
+	sqrtf(i7);
+	f0 = f_g0/f0;
+	heapFloat[(r0+1)] = f0;
+	f1 = heapFloat[(r0)];
+	f3 =                         1;
+	f0 = f1+f0;
+	f1 = f2*f2;
+	f2 = f6*f6;
+	f0 = f3-f0;
+	f1 = f1+f2;
+	f17 = f17*f17;
+	heapFloat[(r0+2)] = f0;
+	f17 = f1+f17;
+}
+}
+else{
+	f17 =                        -1;
+}
+	f_g0 = f17;
+	return;
+}
+
+function _ZN12gjkepa2_impl3GJK8EvaluateERKNS_13MinkowskiDiffERK9btVector3(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+	var r6;
+	var r7;
+	var r8;
+	var r9;
+	var r10;
+	var r11;
+	var r12;
+	var r13;
+	var r14;
+	var r15;
+	var r16;
+	var r17;
+	var r18;
+	var r19;
+	var r20;
+	var r21;
+	var r22;
+	var r23;
+	var r24;
+	var r25;
+	var f0;
+	var f1;
+	var f2;
+	var f3;
+	var f4;
+	var f5;
+	var f6;
+	var f7;
+	var f8;
+	var f9;
+	var f10;
+	var f11;
+	var f12;
+	var f13;
+	var f14;
+	var f15;
+	var f16;
+	var f17;
+	var f18;
+	var f19;
+	var f20;
+	var f21;
+	var f22;
+	var f23;
+var __label__ = 0;
+	i7 = sp + -240;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = r0 >> 2;
+	r2 = (r0 + 220)|0;
+	r3 = (r0 + 252)|0;
+	heap32[(r1+87)] = r2;
+	r2 = (r0 + 284)|0;
+	heap32[(r1+88)] = r3;
+	r3 = (r0 + 316)|0;
+	heap32[(r1+89)] = r2;
+	heap32[(r1+90)] = r3;
+	heap32[(r1+91)] = 4;
+	r2 = heap32[(fp+1)];
+	heap32[(r1+92)] = 0;
+	r2 = r2 >> 2;
+	heap32[(r1+94)] = 0;
+	r4 = heap32[(r2+1)];
+	r5 = heap32[(r2)];
+	heap32[(r1)] = r5;
+	heap32[(r1+1)] = r4;
+	heap32[(r1+2)] = heap32[(r2+2)];
+	heap32[(r1+3)] = heap32[(r2+3)];
+	heap32[(r1+4)] = heap32[(r2+4)];
+	heap32[(r1+5)] = heap32[(r2+5)];
+	heap32[(r1+6)] = heap32[(r2+6)];
+	heap32[(r1+7)] = heap32[(r2+7)];
+	heap32[(r1+8)] = heap32[(r2+8)];
+	heap32[(r1+9)] = heap32[(r2+9)];
+	heap32[(r1+10)] = heap32[(r2+10)];
+	heap32[(r1+11)] = heap32[(r2+11)];
+	heap32[(r1+12)] = heap32[(r2+12)];
+	heap32[(r1+13)] = heap32[(r2+13)];
+	heap32[(r1+14)] = heap32[(r2+14)];
+	heap32[(r1+15)] = heap32[(r2+15)];
+	heap32[(r1+16)] = heap32[(r2+16)];
+	heap32[(r1+17)] = heap32[(r2+17)];
+	heap32[(r1+18)] = heap32[(r2+18)];
+	heap32[(r1+19)] = heap32[(r2+19)];
+	heap32[(r1+20)] = heap32[(r2+20)];
+	heap32[(r1+21)] = heap32[(r2+21)];
+	heap32[(r1+22)] = heap32[(r2+22)];
+	heap32[(r1+23)] = heap32[(r2+23)];
+	heap32[(r1+24)] = heap32[(r2+24)];
+	heap32[(r1+25)] = heap32[(r2+25)];
+	heap32[(r1+26)] = heap32[(r2+26)];
+	heap32[(r1+27)] = heap32[(r2+27)];
+	heap32[(r1+28)] = heap32[(r2+28)];
+	heap32[(r1+29)] = heap32[(r2+29)];
+	r4 = heap32[(r2+31)];
+	r2 = heap32[(r2+30)];
+	heap32[(r1+30)] = r2;
+	heap32[(r1+31)] = r4;
+	r2 = heap32[(fp+2)];
+	heap32[(r1+36)] = 0;
+	r2 = r2 >> 2;
+	heap32[(r1+45)] = 0;
+	f0 = heapFloat[(r2)];
+	heapFloat[(r1+32)] = f0;
+	f1 = heapFloat[(r2+1)];
+	heapFloat[(r1+33)] = f1;
+	f2 = heapFloat[(r2+2)];
+	f3 = f0*f0;
+	f4 = f1*f1;
+	f3 = f3+f4;
+	f4 = f2*f2;
+	f3 = f3+f4;
+	heapFloat[(r1+34)] = f2;
+	heap32[(r1+35)] = heap32[(r2+3)];
+	f4 =                         0;
+	if(f3 <=f4) //_LBB546_2
+{
+	r2 = sp + -112;
+	r2 = r2 >> 2;
+	heap32[(fp+-28)] = 1065353216;
+	heap32[(r2+1)] = 0;
+	heap32[(r2+2)] = 0;
+	heap32[(r2+3)] = 0;
+}
+else{
+	r2 = sp + -112;
+	f0 = -f0;
+	r2 = r2 >> 2;
+	f1 = -f1;
+	heapFloat[(fp+-28)] = f0;
+	f0 = -f2;
+	heapFloat[(r2+1)] = f1;
+	heapFloat[(r2+2)] = f0;
+	heap32[(r2+3)] = 0;
+}
+	heap32[(r1+41)] = 0;
+	heap32[(r1+91)] = 3;
+	heap32[(r1+37)] = r3;
+	heap32[(r1+45)] = 1;
+	r2 = sp + -112;
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r2;
+	heap32[(g0+2)] = r3;
+	_ZNK12gjkepa2_impl3GJK10getsupportERK9btVector3RNS0_3sSVE(i7);
+	heap32[(r1+41)] = 1065353216;
+	r2 = heap32[(r1+37)];
+	r2 = r2 >> 2;
+	f0 = heapFloat[(r2+4)];
+	heapFloat[(r1+32)] = f0;
+	f1 = heapFloat[(r2+5)];
+	heapFloat[(r1+33)] = f1;
+	f2 = heapFloat[(r2+6)];
+	heapFloat[(r1+34)] = f2;
+	f5 = heapFloat[(r2+7)];
+	r2 = sp + -176;
+	r3 = r2 >> 2;
+	heapFloat[(r1+35)] = f5;
+	heapFloat[(r3+12)] = f0;
+	heapFloat[(r3+13)] = f1;
+	heapFloat[(r3+14)] = f2;
+	heapFloat[(r3+15)] = f5;
+	heapFloat[(r3+8)] = f0;
+	heapFloat[(r3+9)] = f1;
+	heapFloat[(r3+10)] = f2;
+	heapFloat[(r3+11)] = f5;
+	heapFloat[(r3+4)] = f0;
+	heapFloat[(r3+5)] = f1;
+	heapFloat[(r3+6)] = f2;
+	heapFloat[(r3+7)] = f5;
+	heapFloat[(fp+-44)] = f0;
+	heapFloat[(r3+1)] = f1;
+	r4 = (r0 + 148)|0;
+	heap32[(fp+-52)] = r4;
+	r4 = 0;
+	r5 = 1;
+	heap32[(fp+-53)] = r5;
+	heapFloat[(r3+2)] = f2;
+	heapFloat[(r3+3)] = f5;
+	heap32[(fp+-50)] = r5;
+	r24 = 0;
+_5: while(true){
+	f0 = f0*f0;
+	f1 = f1*f1;
+	r3 = heap32[(r1+92)];
+	f0 = f0+f1;
+	f1 = f2*f2;
+	f0 = f0+f1;
+	heapFloat[(g0)] = f0;
+	sqrtf(i7);
+	f0 = f_g0;
+	f1 =   9.9999997473787516e-005;
+	if(f0 >=f1) //_LBB546_6
+{
+	r5 = heap32[(fp+-53)];
+	r5 = (r5 - r3)|0;
+	heap32[(fp+-51)] = r5;
+	f2 = heapFloat[(r1+34)];
+	f5 = heapFloat[(r1+33)];
+	f6 = heapFloat[(r1+32)];
+	r5 = sp + -96;
+	f6 = -f6;
+	r6 = r5 >> 2;
+	f5 = -f5;
+	heapFloat[(fp+-24)] = f6;
+	r3 = (r3 * 36)|0;
+	f2 = -f2;
+	heapFloat[(r6+1)] = f5;
+	r7 = (r0 + r3)|0;
+	heapFloat[(r6+2)] = f2;
+	heap32[(r6+3)] = 0;
+	r6 = r7 >> 2;
+	r8 = heap32[(r6+45)];
+	r8 = r8 << 2;
+	r8 = (r7 + r8)|0;
+	r8 = r8 >> 2;
+	heap32[(r8+41)] = 0;
+	r8 = heap32[(r1+91)];
+	r8 = (r8 + -1)|0;
+	r9 = heap32[(r6+45)];
+	r10 = r8 << 2;
+	r10 = (r0 + r10)|0;
+	r9 = r9 << 2;
+	r7 = (r7 + 148)|0;
+	r9 = (r7 + r9)|0;
+	r10 = r10 >> 2;
+	heap32[(r1+91)] = r8;
+	r8 = r9 >> 2;
+	r9 = heap32[(r10+87)];
+	heap32[(r8)] = r9;
+	r8 = heap32[(r6+45)];
+	r9 = r8 << 2;
+	r9 = (r7 + r9)|0;
+	r9 = r9 >> 2;
+	r9 = heap32[(r9)];
+	r8 = (r8 + 1)|0;
+	heap32[(r6+45)] = r8;
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r5;
+	heap32[(g0+2)] = r9;
+	_ZNK12gjkepa2_impl3GJK10getsupportERK9btVector3RNS0_3sSVE(i7);
+	r5 = heap32[(r6+45)];
+	r8 = r5 << 2;
+	r7 = (r8 + r7)|0;
+	r7 = r7 >> 2;
+	r7 = heap32[(r7+-1)];
+	r8 = 0;
+_8: while(true){
+	if(uint(r8) <uint(4)) //_LBB546_7
+{
+	r9 = r8 << 4;
+	r9 = (r2 + r9)|0;
+	r10 = r7 >> 2;
+	r9 = r9 >> 2;
+	f2 = heapFloat[(r10+4)];
+	f5 = heapFloat[(r9)];
+	f6 = heapFloat[(r10+5)];
+	f7 = heapFloat[(r9+1)];
+	f2 = f2-f5;
+	f5 = f6-f7;
+	f6 = heapFloat[(r10+6)];
+	f7 = heapFloat[(r9+2)];
+	f6 = f6-f7;
+	f2 = f2*f2;
+	f5 = f5*f5;
+	f2 = f2+f5;
+	f5 = f6*f6;
+	f2 = f2+f5;
+	if(f2 <f1) //_LBB546_10
+{
+__label__ = 10;
+break _5;
+}
+else{
+	r8 = (r8 + 1)|0;
+}
+}
+else{
+break _8;
+}
+}
+	r8 = heap32[(fp+-50)];
+	r8 = r8 << 4;
+	r8 = (r2 + r8)|0;
+	r8 = r8 >> 2;
+	r7 = r7 >> 2;
+	heap32[(r8)] = heap32[(r7+4)];
+	heap32[(r8+1)] = heap32[(r7+5)];
+	heap32[(r8+2)] = heap32[(r7+6)];
+	heap32[(r8+3)] = heap32[(r7+7)];
+	f1 = heapFloat[(r1+32)];
+	f2 = heapFloat[(r7+4)];
+	f5 = heapFloat[(r1+33)];
+	f6 = heapFloat[(r7+5)];
+	f1 = f1*f2;
+	f2 = f5*f6;
+	f5 = heapFloat[(r1+34)];
+	f6 = heapFloat[(r7+6)];
+	f1 = f1+f2;
+	f2 = f5*f6;
+	f1 = f1+f2;
+	f1 = f1/f0;
+	f4 = f1 > f4 ? f1 : f4;
+	f1 =  -9.9999997473787516e-005;
+	f2 = f0-f4;
+	f0 = f0*f1;
+	f0 = f2+f0;
+	f5 =                         0;
+	if(f0 >f5) //_LBB546_13
+{
+	heap32[(fp+-49)] = 0;
+_14: do {
+	if(r5 ==2) //_LBB546_17
+{
+	r5 = heap32[(r6+38)];
+	r7 = heap32[(r6+37)];
+	r7 = (r7 + 16)|0;
+	r5 = (r5 + 16)|0;
+	r8 = sp + -192;
+	r9 = sp + -196;
+	heap32[(g0)] = r7;
+	heap32[(g0+1)] = r5;
+	heap32[(g0+2)] = r8;
+	heap32[(g0+3)] = r9;
+	_ZN12gjkepa2_impl3GJK13projectoriginERK9btVector3S3_PfRj(i7);
+	f3 = f_g0;
+__label__ = 32;
+break _14;
+}
+else{
+	if(r5 ==3) //_LBB546_18
+{
+	r5 = heap32[(r6+39)];
+	r7 = heap32[(r6+38)];
+	r8 = heap32[(r6+37)];
+	r8 = (r8 + 16)|0;
+	r7 = (r7 + 16)|0;
+	r5 = (r5 + 16)|0;
+	r9 = sp + -192;
+	r10 = sp + -196;
+	heap32[(g0)] = r8;
+	heap32[(g0+1)] = r7;
+	heap32[(g0+2)] = r5;
+	heap32[(g0+3)] = r9;
+	heap32[(g0+4)] = r10;
+	_ZN12gjkepa2_impl3GJK13projectoriginERK9btVector3S3_S3_PfRj(i7);
+	f3 = f_g0;
+__label__ = 32;
+}
+else{
+	if(r5 ==4) //_LBB546_19
+{
+	r5 = heap32[(r6+40)];
+	r7 = heap32[(r6+39)];
+	r8 = heap32[(r6+38)];
+	r9 = heap32[(r6+37)];
+	r10 = sp + -16;
+	r11 = (r9 + 16)|0;
+	r12 = r10 >> 2;
+	r13 = (r8 + 16)|0;
+	heap32[(fp+-4)] = r11;
+	r11 = (r7 + 16)|0;
+	heap32[(r12+1)] = r13;
+	r13 = (r5 + 16)|0;
+	heap32[(r12+2)] = r11;
+	r9 = r9 >> 2;
+	heap32[(r12+3)] = r13;
+	r5 = r5 >> 2;
+	f0 = heapFloat[(r9+6)];
+	f1 = heapFloat[(r5+6)];
+	f2 = heapFloat[(r9+5)];
+	f3 = heapFloat[(r5+5)];
+	f6 = heapFloat[(r9+4)];
+	f7 = heapFloat[(r5+4)];
+	r11 = sp + -64;
+	f8 = f6-f7;
+	f9 = f2-f3;
+	r12 = r11 >> 2;
+	heapFloat[(fp+-16)] = f8;
+	f10 = f0-f1;
+	heapFloat[(r12+1)] = f9;
+	heapFloat[(r12+2)] = f10;
+	r8 = r8 >> 2;
+	heap32[(r12+3)] = 0;
+	f11 = heapFloat[(r8+6)];
+	f12 = heapFloat[(r8+5)];
+	f13 = heapFloat[(r8+4)];
+	f14 = f13-f7;
+	f15 = f12-f3;
+	heapFloat[(r12+4)] = f14;
+	f16 = f11-f1;
+	heapFloat[(r12+5)] = f15;
+	heapFloat[(r12+6)] = f16;
+	r7 = r7 >> 2;
+	heap32[(r12+7)] = 0;
+	f17 = heapFloat[(r7+5)];
+	f18 = heapFloat[(r7+4)];
+	f19 = f9*f16;
+	f7 = f18-f7;
+	f20 = f10*f14;
+	f3 = f17-f3;
+	f21 = heapFloat[(r7+6)];
+	f16 = f8*f16;
+	f19 = f19*f7;
+	f20 = f20*f3;
+	f22 = f11-f21;
+	f23 = f2-f12;
+	f18 = f13-f18;
+	f11 = f0-f11;
+	f12 = f12-f17;
+	f13 = f6-f13;
+	f17 = f19+f20;
+	f16 = f16*f3;
+	f14 = f9*f14;
+	f1 = f21-f1;
+	f19 = f8*f15;
+	f20 = f12*f11;
+	f21 = f22*f23;
+	f22 = f22*f13;
+	f11 = f18*f11;
+	f16 = f17-f16;
+	f14 = f14*f1;
+	f17 = f20-f21;
+	f11 = f22-f11;
+	f15 = f10*f15;
+	heapFloat[(r12+8)] = f7;
+	f18 = f18*f23;
+	f12 = f12*f13;
+	f13 = f16-f14;
+	f14 = f19*f1;
+	f12 = f18-f12;
+	heapFloat[(r12+9)] = f3;
+	f3 = f6*f17;
+	f2 = f2*f11;
+	f6 = f13+f14;
+	f7 = f15*f7;
+	f6 = f6-f7;
+	heapFloat[(r12+10)] = f1;
+	f1 = f3+f2;
+	f0 = f0*f12;
+	f0 = f1+f0;
+	heap32[(r12+11)] = 0;
+	f0 = f0*f6;
+	if(f0 >f5) //_LBB546_45
+{
+__label__ = 42;
+break _5;
+}
+else{
+	if(f6 <f5) //_LBB546_22
+{
+	f0 = -f6;
+}
+else{
+	f0 = f6;
+}
+	if(f0 <=f5) //_LBB546_45
+{
+__label__ = 42;
+break _5;
+}
+else{
+	r12 = sp + -76;
+	r14 = r12 >> 2;
+	heap32[(fp+-19)] = 0;
+	heap32[(r14+1)] = 0;
+	r15 = 0;
+	f3 =                        -1;
+	heap32[(r14+2)] = 0;
+	heap32[(fp+-20)] = 0;
+_27: while(true){
+	r16 = _ZZN12gjkepa2_impl3GJK13projectoriginERK9btVector3S3_S3_PfRjE4imd3;
+	r17 = r15 << 2;
+	r18 = (r16 + r17)|0;
+	r18 = r18 >> 2;
+	r18 = heap32[(r18)];
+	r19 = r18 << 4;
+	r19 = (r11 + r19)|0;
+	r19 = r19 >> 2;
+	f0 = heapFloat[(r19+1)];
+	f1 = heapFloat[(r19+2)];
+	f2 = heapFloat[(r19)];
+	f7 = f9*f1;
+	f11 = f10*f0;
+	f10 = f10*f2;
+	f1 = f8*f1;
+	f12 = heapFloat[(r5+4)];
+	f7 = f7-f11;
+	f11 = heapFloat[(r5+5)];
+	f1 = f10-f1;
+	f0 = f8*f0;
+	f2 = f9*f2;
+	f8 = f12*f7;
+	f1 = f11*f1;
+	f9 = heapFloat[(r5+6)];
+	f0 = f0-f2;
+	f1 = f8+f1;
+	f0 = f9*f0;
+	f0 = f1+f0;
+	f0 = f0*f6;
+_29: do {
+	if(f0 >f5) //_LBB546_27
+{
+	r19 = r18 << 2;
+	r20 = (r10 + r19)|0;
+	r21 = (r10 + r17)|0;
+	r20 = r20 >> 2;
+	r21 = r21 >> 2;
+	r20 = heap32[(r20)];
+	r21 = heap32[(r21)];
+	r22 = sp + -80;
+	heap32[(g0)] = r21;
+	heap32[(g0+1)] = r20;
+	heap32[(g0+2)] = r13;
+	heap32[(g0+3)] = r12;
+	heap32[(g0+4)] = r22;
+	_ZN12gjkepa2_impl3GJK13projectoriginERK9btVector3S3_S3_PfRj(i7);
+	f0 = f_g0;
+	f1 =                         0;
+if(!(f3 <f1)) //_LBB546_29
+{
+	if(f0 >=f3) //_LBB546_26
+{
+break _29;
+}
+}
+	r20 = heap32[(fp+-20)];
+	r21 = 1;
+	r22 = r20 & 1;
+	r23 = r21 << r15;
+	r25 = r20 & 2;
+	r18 = r21 << r18;
+	r16 = (r16 + r19)|0;
+	r21 = r22 == 0 ? r24 : r23;
+	r18 = r25 == 0 ? r24 : r18;
+	r20 = r20 & 4;
+	r22 = 8;
+	r23 = sp + -192;
+	r16 = r16 >> 2;
+	r18 = (r21 + r18)|0;
+	r20 = r20 == 0 ? r24 : r22;
+	r16 = heap32[(r16)];
+	r17 = (r23 + r17)|0;
+	r18 = (r18 + r20)|0;
+	r16 = r16 << 2;
+	r19 = (r23 + r19)|0;
+	r17 = r17 >> 2;
+	heap32[(fp+-49)] = r18;
+	r16 = (r23 + r16)|0;
+	r18 = r19 >> 2;
+	heap32[(r17)] = heap32[(fp+-19)];
+	r16 = r16 >> 2;
+	heap32[(r18)] = heap32[(r14+1)];
+	r17 = r23 >> 2;
+	heap32[(r16)] = 0;
+	heap32[(r17+3)] = heap32[(r14+2)];
+	f3 = f0;
+}
+} while(0);
+	if(r15 ==2) //_LBB546_32
+{
+break _27;
+}
+else{
+	r16 = (r15 + 1)|0;
+	r15 = r15 << 4;
+	r15 = (r11 + r15)|0;
+	r15 = r15 >> 2;
+	f8 = heapFloat[(r15+4)];
+	f9 = heapFloat[(r15+5)];
+	f10 = heapFloat[(r15+6)];
+	r15 = r16;
+}
+}
+	if(f3 <f5) //_LBB546_34
+{
+	heap32[(fp+-49)] = 15;
+	f0 = heapFloat[(r7+5)];
+	f1 = heapFloat[(r8+6)];
+	f2 = heapFloat[(r8+4)];
+	f3 = heapFloat[(r7+6)];
+	f7 = heapFloat[(r7+4)];
+	f8 = f0*f1;
+	f9 = heapFloat[(r5+4)];
+	f10 = f3*f2;
+	f11 = heapFloat[(r5+5)];
+	f12 = f7*f1;
+	f8 = f8*f9;
+	f10 = f10*f11;
+	f13 = heapFloat[(r8+5)];
+	f14 = heapFloat[(r5+6)];
+	f15 = f0*f2;
+	f8 = f8+f10;
+	f10 = f12*f11;
+	f12 = f7*f13;
+	f8 = f8-f10;
+	f10 = f15*f14;
+	f15 = f3*f13;
+	f8 = f8-f10;
+	f10 = f12*f14;
+	f8 = f8+f10;
+	f10 = f15*f9;
+	f8 = f8-f10;
+	f8 = f8/f6;
+	heapFloat[(fp+-48)] = f8;
+	f10 = heapFloat[(r9+5)];
+	f12 = heapFloat[(r9+6)];
+	f15 = heapFloat[(r9+4)];
+	f16 = f10*f3;
+	f17 = f12*f7;
+	f18 = f13*f12;
+	f19 = f1*f15;
+	f3 = f15*f3;
+	f16 = f16*f9;
+	f17 = f17*f11;
+	f20 = f2*f12;
+	f7 = f10*f7;
+	f18 = f18*f9;
+	f19 = f19*f11;
+	f16 = f16+f17;
+	f3 = f3*f11;
+	f13 = f13*f15;
+	f15 = f15*f0;
+	f17 = f18+f19;
+	f11 = f20*f11;
+	f3 = f16-f3;
+	f7 = f7*f14;
+	f2 = f2*f10;
+	f0 = f12*f0;
+	f11 = f17-f11;
+	f12 = f13*f14;
+	f3 = f3-f7;
+	f7 = f15*f14;
+	f1 = f1*f10;
+	f10 = f11-f12;
+	f2 = f2*f14;
+	f3 = f3+f7;
+	f0 = f0*f9;
+	f0 = f3-f0;
+	f2 = f10+f2;
+	f1 = f1*f9;
+	r5 = sp + -192;
+	f1 = f2-f1;
+	f0 = f0/f6;
+	r5 = r5 >> 2;
+	f2 = f8+f0;
+	f1 = f1/f6;
+	heapFloat[(r5+1)] = f0;
+	f0 =                         1;
+	f2 = f2+f1;
+	r7 = 15;
+	f0 = f0-f2;
+	heapFloat[(r5+2)] = f1;
+	heapFloat[(r5+3)] = f0;
+__label__ = 34;
+}
+else{
+__label__ = 32;
+}
+}
+}
+}
+else{
+__label__ = 32;
+}
+}
+}
+} while(0);
+if (__label__ == 32){
+	f0 =                         0;
+	if(f3 <f0) //_LBB546_45
+{
+__label__ = 42;
+break _5;
+}
+else{
+	r7 = heap32[(fp+-49)];
+	f5 = f3;
+}
+}
+	r5 = heap32[(fp+-51)];
+	r8 = (r5 * 36)|0;
+	r8 = (r0 + r8)|0;
+	r9 = r8 >> 2;
+	heap32[(r9+45)] = 0;
+	heap32[(r1+32)] = 0;
+	heap32[(r1+33)] = 0;
+	heap32[(r1+34)] = 0;
+	heap32[(r1+35)] = 0;
+	heap32[(r1+92)] = r5;
+	r5 = heap32[(r6+45)];
+_42: do {
+if(!(r5 ==0)) //_LBB546_43
+{
+	r6 = heap32[(fp+-52)];
+	r3 = (r6 + r3)|0;
+	r6 = 0;
+_44: while(true){
+	r10 = 1;
+	r10 = r10 << r6;
+	r10 = r7 & r10;
+	if(r10 ==0) //_LBB546_41
+{
+	r10 = r6 << 2;
+	r11 = heap32[(r1+91)];
+	r10 = (r3 + r10)|0;
+	r12 = r11 << 2;
+	r10 = r10 >> 2;
+	r12 = (r0 + r12)|0;
+	r10 = heap32[(r10)];
+	r12 = r12 >> 2;
+	r11 = (r11 + 1)|0;
+	heap32[(r12+87)] = r10;
+	heap32[(r1+91)] = r11;
+}
+else{
+	r10 = r6 << 2;
+	r11 = (r3 + r10)|0;
+	r12 = heap32[(r9+45)];
+	r11 = r11 >> 2;
+	r13 = (r8 + 148)|0;
+	r12 = r12 << 2;
+	r12 = (r13 + r12)|0;
+	r14 = heap32[(r11)];
+	r12 = r12 >> 2;
+	r15 = sp + -192;
+	heap32[(r12)] = r14;
+	r12 = heap32[(r9+45)];
+	r10 = (r15 + r10)|0;
+	r14 = r12 << 2;
+	r10 = r10 >> 2;
+	r13 = (r13 + r14)|0;
+	f0 = heapFloat[(r10)];
+	r10 = r13 >> 2;
+	r12 = (r12 + 1)|0;
+	heapFloat[(r10+4)] = f0;
+	heap32[(r9+45)] = r12;
+	r10 = heap32[(r11)];
+	r10 = r10 >> 2;
+	f1 = heapFloat[(r10+4)];
+	f2 = heapFloat[(r10+6)];
+	f3 = heapFloat[(r10+5)];
+	f6 = heapFloat[(r1+32)];
+	f1 = f1*f0;
+	f1 = f6+f1;
+	heapFloat[(r1+32)] = f1;
+	f1 = f3*f0;
+	f3 = heapFloat[(r1+33)];
+	f1 = f3+f1;
+	heapFloat[(r1+33)] = f1;
+	f0 = f2*f0;
+	f1 = heapFloat[(r1+34)];
+	f0 = f1+f0;
+	heapFloat[(r1+34)] = f0;
+}
+	r6 = (r6 + 1)|0;
+if(!(r5 !=r6)) //_LBB546_39
+{
+break _42;
+}
+}
+}
+} while(0);
+if(!(r7 !=15)) //_LBB546_46
+{
+	heap32[(r1+94)] = 1;
+}
+	r4 = (r4 + 1)|0;
+	if(uint(r4) <uint(128)) //_LBB546_48
+{
+	r3 = heap32[(r1+94)];
+	if(r3 !=0) //_LBB546_50
+{
+__label__ = 47;
+break _5;
+}
+else{
+	r5 = heap32[(fp+-50)];
+	r3 = (r5 + 1)|0;
+	f0 = heapFloat[(r1+32)];
+	f1 = heapFloat[(r1+33)];
+	f2 = heapFloat[(r1+34)];
+	r5 = r3 & 3;
+	heap32[(fp+-50)] = r5;
+	f3 = f5;
+continue _5;
+}
+}
+else{
+__label__ = 44;
+break _5;
+}
+}
+else{
+__label__ = 12;
+break _5;
+}
+}
+else{
+__label__ = 5;
+break _5;
+}
+}
+switch(__label__ ){//multiple entries
+case 10:
+	r2 = heap32[(r1+92)];
+	r2 = (r2 * 36)|0;
+	r2 = (r0 + r2)|0;
+	r3 = r2 >> 2;
+	r4 = heap32[(r3+45)];
+	r4 = (r4 + -1)|0;
+	r5 = r4 << 2;
+	r6 = heap32[(r1+91)];
+	r2 = (r2 + r5)|0;
+	r5 = r6 << 2;
+	r2 = (r2 + 148)|0;
+	r5 = (r0 + r5)|0;
+	r2 = r2 >> 2;
+	heap32[(r3+45)] = r4;
+	r3 = r5 >> 2;
+	r2 = heap32[(r2)];
+	r4 = (r6 + 1)|0;
+	heap32[(r3+87)] = r2;
+	heap32[(r1+91)] = r4;
+break;
+case 42:
+	r2 = heap32[(r1+92)];
+	r2 = (r2 * 36)|0;
+	r2 = (r0 + r2)|0;
+	r4 = r2 >> 2;
+	r3 = heap32[(r4+45)];
+	r3 = (r3 + -1)|0;
+	r5 = r3 << 2;
+	r6 = heap32[(r1+91)];
+	r2 = (r2 + r5)|0;
+	r5 = r6 << 2;
+	r2 = (r2 + 148)|0;
+	r5 = (r0 + r5)|0;
+	r2 = r2 >> 2;
+	heap32[(r4+45)] = r3;
+	r4 = r5 >> 2;
+	r2 = heap32[(r2)];
+	r3 = (r6 + 1)|0;
+	heap32[(r4+87)] = r2;
+	heap32[(r1+91)] = r3;
+break;
+case 5:
+	heap32[(r1+94)] = 1;
+break;
+case 44:
+	heap32[(r1+94)] = 2;
+break;
+case 12:
+	r2 = heap32[(r1+92)];
+	r2 = (r2 * 36)|0;
+	r2 = (r0 + r2)|0;
+	r3 = r2 >> 2;
+	r4 = heap32[(r3+45)];
+	r4 = (r4 + -1)|0;
+	r5 = r4 << 2;
+	r6 = heap32[(r1+91)];
+	r2 = (r2 + r5)|0;
+	r5 = r6 << 2;
+	r2 = (r2 + 148)|0;
+	r5 = (r0 + r5)|0;
+	r2 = r2 >> 2;
+	heap32[(r3+45)] = r4;
+	r3 = r5 >> 2;
+	r2 = heap32[(r2)];
+	r4 = (r6 + 1)|0;
+	heap32[(r3+87)] = r2;
+	heap32[(r1+91)] = r4;
+break;
+}
+	r2 = heap32[(r1+92)];
+	r2 = (r2 * 36)|0;
+	r0 = (r0 + r2)|0;
+	r0 = (r0 + 148)|0;
+	heap32[(r1+93)] = r0;
+	r0 = heap32[(r1+94)];
+	if(r0 ==1) //_LBB546_53
+{
+	heap32[(r1+36)] = 0;
+	r0 = 1;
+}
+else{
+if(!(r0 !=0)) //_LBB546_54
+{
+	f0 = heapFloat[(r1+32)];
+	f1 = heapFloat[(r1+33)];
+	f2 = heapFloat[(r1+34)];
+	f0 = f0*f0;
+	f1 = f1*f1;
+	f0 = f0+f1;
+	f1 = f2*f2;
+	f0 = f0+f1;
+	heapFloat[(g0)] = f0;
+	sqrtf(i7);
+	heapFloat[(r1+36)] = f_g0;
+	r0 = heap32[(r1+94)];
+	r_g0 = r0;
+	return;
+}
+}
+	r_g0 = r0;
+	return;
+}
+
+function _ZN12gjkepa2_impl3EPA7newfaceEPNS_3GJK3sSVES3_S3_b(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+	var r6;
+	var r7;
+	var f0;
+	var f1;
+	var f2;
+	var f3;
+	var f4;
+	var f5;
+	var f6;
+	var f7;
+	var f8;
+	var f9;
+	var f10;
+	var f11;
+	var f12;
+	var f13;
+	var f14;
+	var f15;
+	var f16;
+	var f17;
+	var f18;
+	var f19;
+	var f20;
+	var f21;
+	var f22;
+	var f23;
+	var f24;
+	var f25;
+	var f26;
+	var f27;
+var __label__ = 0;
+	i7 = sp + -8;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r0 = r0 >> 2;
+	r1 = heap32[(r0+2450)];
+_1: do {
+	if(r1 ==0) //_LBB547_23
+{
+	heap32[(r0)] = 5;
+	r1 = 0;
+}
+else{
+	r2 = r1 >> 2;
+	r3 = heap32[(r2+13)];
+if(!(r3 ==0)) //_LBB547_3
+{
+	r3 = r3 >> 2;
+	r4 = heap32[(r2+12)];
+	heap32[(r3+12)] = r4;
+}
+	r3 = heap32[(r2+12)];
+if(!(r3 ==0)) //_LBB547_5
+{
+	r3 = r3 >> 2;
+	r4 = heap32[(r2+13)];
+	heap32[(r3+13)] = r4;
+}
+	r3 = heap32[(r0+2450)];
+if(!(r3 !=r1)) //_LBB547_7
+{
+	r3 = heap32[(r2+13)];
+	heap32[(r0+2450)] = r3;
+}
+	r3 = heap32[(r0+2451)];
+	r3 = (r3 + -1)|0;
+	heap32[(r0+2451)] = r3;
+	heap32[(r2+12)] = 0;
+	r3 = heap32[(r0+2448)];
+	heap32[(r2+13)] = r3;
+	r3 = heap32[(r0+2448)];
+if(!(r3 ==0)) //_LBB547_9
+{
+	r3 = r3 >> 2;
+	heap32[(r3+12)] = r1;
+}
+	r3 = heap32[(fp+1)];
+	r4 = heap32[(fp+2)];
+	r5 = heap32[(fp+3)];
+	heap32[(r0+2448)] = r1;
+	r6 = heap32[(r0+2449)];
+	r6 = (r6 + 1)|0;
+	r7 = 0;
+	heap32[(r0+2449)] = r6;
+	heap8[r1+59] = r7;
+	heap32[(r2+6)] = r3;
+	heap32[(r2+7)] = r4;
+	heap32[(r2+8)] = r5;
+	r5 = r5 >> 2;
+	r3 = r3 >> 2;
+	r4 = r4 >> 2;
+	f0 = heapFloat[(r5+6)];
+	f1 = heapFloat[(r3+6)];
+	f2 = heapFloat[(r4+6)];
+	f3 = heapFloat[(r5+5)];
+	f4 = heapFloat[(r3+5)];
+	f5 = heapFloat[(r4+5)];
+	f5 = f5-f4;
+	f0 = f0-f1;
+	f1 = f2-f1;
+	f2 = f3-f4;
+	f3 = heapFloat[(r5+4)];
+	f4 = heapFloat[(r3+4)];
+	f6 = heapFloat[(r4+4)];
+	f3 = f3-f4;
+	f4 = f6-f4;
+	f6 = f5*f0;
+	f7 = f1*f2;
+	f6 = f6-f7;
+	f1 = f1*f3;
+	f0 = f4*f0;
+	f0 = f1-f0;
+	heapFloat[(r2)] = f6;
+	f1 = f4*f2;
+	f2 = f5*f3;
+	f1 = f1-f2;
+	heapFloat[(r2+1)] = f0;
+	heapFloat[(r2+2)] = f1;
+	f2 = f6*f6;
+	f0 = f0*f0;
+	heap32[(r2+3)] = 0;
+	f0 = f2+f0;
+	f1 = f1*f1;
+	f0 = f0+f1;
+	heapFloat[(g0)] = f0;
+	sqrtf(i7);
+	f0 = f_g0;
+	f1 = heapFloat[(r5+6)];
+	f2 = heapFloat[(r3+6)];
+	f3 = heapFloat[(r4+6)];
+	f4 = heapFloat[(r5+5)];
+	f5 = heapFloat[(r3+5)];
+	f6 = heapFloat[(r4+5)];
+	f7 = heapFloat[(r5+4)];
+	f8 = heapFloat[(r3+4)];
+	f9 = heapFloat[(r4+4)];
+	f10 = heapFloat[(r2)];
+	f11 = f2-f3;
+	f12 = heapFloat[(r2+1)];
+	f13 = f3-f1;
+	f14 = heapFloat[(r2+2)];
+	f15 = f5-f6;
+	f16 = f8-f9;
+	f17 = f6-f4;
+	f18 = f9-f7;
+	f19 = f1-f2;
+	f20 = f4-f5;
+	f21 = f7-f8;
+	f22 = f12*f11;
+	f23 = f14*f15;
+	f24 = f14*f16;
+	f11 = f10*f11;
+	f25 = f12*f13;
+	f26 = f14*f17;
+	f27 = f14*f18;
+	f13 = f10*f13;
+	f22 = f22-f23;
+	f11 = f24-f11;
+	f23 = f25-f26;
+	f13 = f27-f13;
+	f15 = f10*f15;
+	f16 = f12*f16;
+	f17 = f10*f17;
+	f18 = f12*f18;
+	f24 = f12*f19;
+	f25 = f14*f20;
+	f26 = f14*f21;
+	f19 = f10*f19;
+	f15 = f15-f16;
+	f16 = f17-f18;
+	f17 = f24-f25;
+	f18 = f26-f19;
+	f8 = f8*f22;
+	f5 = f5*f11;
+	f9 = f9*f23;
+	f6 = f6*f13;
+	f11 = f10*f20;
+	f13 = f12*f21;
+	f11 = f11-f13;
+	f5 = f8+f5;
+	f2 = f2*f15;
+	f6 = f9+f6;
+	f3 = f3*f16;
+	f7 = f7*f17;
+	f4 = f4*f18;
+	f2 = f5+f2;
+	f3 = f6+f3;
+	f4 = f7+f4;
+	f1 = f1*f11;
+	f5 =   9.9999997473787516e-005;
+	f6 =                         1;
+	f2 = f2 < f3 ? f2 : f3;
+	f1 = f4+f1;
+	f1 = f2 < f1 ? f2 : f1;
+	f2 = f0 > f5 ? f0 : f6;
+	f1 = f1/f2;
+	f2 =    -0.0099999997764825821;
+	f3 =                         0;
+	f1 = f1 < f2 ? f1 : f3;
+	heapFloat[(r2+5)] = f1;
+	if(f0 <=f5) //_LBB547_13
+{
+	heap32[(r0)] = 2;
+}
+else{
+	r4 = heap32[(fp+4)];
+	f1 = heapFloat[(r3+4)];
+	f2 = heapFloat[(r3+5)];
+	f3 = heapFloat[(r3+6)];
+	f1 = f1*f10;
+	f2 = f2*f12;
+	f1 = f1+f2;
+	f2 = f3*f14;
+	f1 = f1+f2;
+	f2 = f6/f0;
+	f0 = f1/f0;
+	f1 = f10*f2;
+	heapFloat[(r2+4)] = f0;
+	f3 = f12*f2;
+	heapFloat[(r2)] = f1;
+	f1 = f14*f2;
+	heapFloat[(r2+1)] = f3;
+	heapFloat[(r2+2)] = f1;
+	if(r4 !=0) //_LBB547_24
+{
+break _1;
+}
+else{
+	f1 =  -9.9999997473787516e-006;
+	if(f0 >=f1) //_LBB547_24
+{
+break _1;
+}
+else{
+	heap32[(r0)] = 3;
+}
+}
+}
+	r3 = heap32[(r2+13)];
+if(!(r3 ==0)) //_LBB547_16
+{
+	r3 = r3 >> 2;
+	r4 = heap32[(r2+12)];
+	heap32[(r3+12)] = r4;
+}
+	r3 = heap32[(r2+12)];
+if(!(r3 ==0)) //_LBB547_18
+{
+	r3 = r3 >> 2;
+	r4 = heap32[(r2+13)];
+	heap32[(r3+13)] = r4;
+}
+	r3 = heap32[(r0+2448)];
+if(!(r3 !=r1)) //_LBB547_20
+{
+	r3 = heap32[(r2+13)];
+	heap32[(r0+2448)] = r3;
+}
+	r3 = heap32[(r0+2449)];
+	r3 = (r3 + -1)|0;
+	heap32[(r0+2449)] = r3;
+	heap32[(r2+12)] = 0;
+	r3 = heap32[(r0+2450)];
+	heap32[(r2+13)] = r3;
+	r2 = heap32[(r0+2450)];
+if(!(r2 ==0)) //_LBB547_22
+{
+	r2 = r2 >> 2;
+	heap32[(r2+12)] = r1;
+}
+	heap32[(r0+2450)] = r1;
+	r1 = heap32[(r0+2451)];
+	r1 = (r1 + 1)|0;
+	heap32[(r0+2451)] = r1;
+	r0 = 0;
+	r_g0 = r0;
+	return;
+}
+} while(0);
+	r_g0 = r1;
+	return;
+}
+
+function _ZN12gjkepa2_impl3EPA6expandEjPNS_3GJK3sSVEPNS0_5sFaceEjRNS0_8sHorizonE(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+	var r6;
+	var r7;
+	var r8;
+	var r9;
+	var f0;
+	var f1;
+	var f2;
+	var f3;
+var __label__ = 0;
+	i7 = sp + -24;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp+3)];
+	r1 = heap32[(fp+1)];
+	r2 = heapU8[r0+59];
+_1: do {
+if(!(r2 ==r1)) //_LBB548_10
+{
+	r2 = heap32[(fp)];
+	r3 = heap32[(fp+2)];
+	r4 = heap32[(fp+4)];
+	r5 = heap32[(fp+5)];
+	r6 = r0 >> 2;
+	r7 = r3 >> 2;
+	f0 = heapFloat[(r6)];
+	f1 = heapFloat[(r7+4)];
+	f2 = heapFloat[(r6+1)];
+	f3 = heapFloat[(r7+5)];
+	r8 = _ZZN12gjkepa2_impl3GJK13projectoriginERK9btVector3S3_S3_PfRjE4imd3;
+	r9 = r4 << 2;
+	r8 = (r8 + r9)|0;
+	f0 = f0*f1;
+	f1 = f2*f3;
+	f2 = heapFloat[(r6+2)];
+	f3 = heapFloat[(r7+6)];
+	r7 = r8 >> 2;
+	f0 = f0+f1;
+	f1 = f2*f3;
+	r7 = heap32[(r7)];
+	f0 = f0+f1;
+	f1 = heapFloat[(r6+4)];
+	f0 = f0-f1;
+	f1 =  -9.9999997473787516e-006;
+	if(f0 >=f1) //_LBB548_8
+{
+	r4 = r7 << 2;
+	r4 = (r0 + r4)|0;
+	r7 = (r0 + r7)|0;
+	heap8[r0+59] = r1;
+	r4 = r4 >> 2;
+	r7 = heapU8[r7+56];
+	r4 = heap32[(r4+9)];
+	r8 = _ZZN12gjkepa2_impl3EPA6expandEjPNS_3GJK3sSVEPNS0_5sFaceEjRNS0_8sHorizonEE4i2m3;
+	r8 = (r8 + r9)|0;
+	r8 = r8 >> 2;
+	heap32[(g0)] = r2;
+	heap32[(g0+1)] = r1;
+	heap32[(g0+2)] = r3;
+	heap32[(g0+3)] = r4;
+	heap32[(g0+4)] = r7;
+	heap32[(g0+5)] = r5;
+	r4 = heap32[(r8)];
+	_ZN12gjkepa2_impl3EPA6expandEjPNS_3GJK3sSVEPNS0_5sFaceEjRNS0_8sHorizonE(i7);
+	r7 = r_g0;
+	if(r7 ==0) //_LBB548_10
+{
+break _1;
+}
+else{
+	r7 = r4 << 2;
+	r7 = (r0 + r7)|0;
+	r4 = (r0 + r4)|0;
+	r7 = r7 >> 2;
+	r4 = heapU8[r4+56];
+	r7 = heap32[(r7+9)];
+	heap32[(g0)] = r2;
+	heap32[(g0+1)] = r1;
+	heap32[(g0+2)] = r3;
+	heap32[(g0+3)] = r7;
+	heap32[(g0+4)] = r4;
+	heap32[(g0+5)] = r5;
+	_ZN12gjkepa2_impl3EPA6expandEjPNS_3GJK3sSVEPNS0_5sFaceEjRNS0_8sHorizonE(i7);
+	r1 = r_g0;
+	if(r1 !=0) //_LBB548_11
+{
+	r1 = heap32[(r6+13)];
+if(!(r1 ==0)) //_LBB548_13
+{
+	r1 = r1 >> 2;
+	r3 = heap32[(r6+12)];
+	heap32[(r1+12)] = r3;
+}
+	r1 = heap32[(r6+12)];
+if(!(r1 ==0)) //_LBB548_15
+{
+	r1 = r1 >> 2;
+	r3 = heap32[(r6+13)];
+	heap32[(r1+13)] = r3;
+}
+	r1 = r2 >> 2;
+	r2 = heap32[(r1+2448)];
+if(!(r2 !=r0)) //_LBB548_17
+{
+	r2 = heap32[(r6+13)];
+	heap32[(r1+2448)] = r2;
+}
+	r2 = heap32[(r1+2449)];
+	r2 = (r2 + -1)|0;
+	heap32[(r1+2449)] = r2;
+	heap32[(r6+12)] = 0;
+	r2 = heap32[(r1+2450)];
+	heap32[(r6+13)] = r2;
+	r2 = heap32[(r1+2450)];
+if(!(r2 ==0)) //_LBB548_19
+{
+	r2 = r2 >> 2;
+	heap32[(r2+12)] = r0;
+}
+	heap32[(r1+2450)] = r0;
+	r0 = heap32[(r1+2451)];
+	r0 = (r0 + 1)|0;
+	heap32[(r1+2451)] = r0;
+}
+else{
+break _1;
+}
+}
+}
+else{
+	r1 = (r0 + 24)|0;
+	r6 = r7 << 2;
+	r7 = (r1 + r9)|0;
+	r1 = (r1 + r6)|0;
+	r6 = r7 >> 2;
+	r1 = r1 >> 2;
+	r6 = heap32[(r6)];
+	r1 = heap32[(r1)];
+	heap32[(g0)] = r2;
+	heap32[(g0+1)] = r1;
+	heap32[(g0+2)] = r6;
+	heap32[(g0+3)] = r3;
+	heap32[(g0+4)] = 0;
+	_ZN12gjkepa2_impl3EPA7newfaceEPNS_3GJK3sSVES3_S3_b(i7);
+	r1 = r_g0;
+	if(r1 ==0) //_LBB548_10
+{
+break _1;
+}
+else{
+	r2 = r1 >> 2;
+	heap8[r1+56] = r4;
+	r3 = (r0 + r9)|0;
+	r6 = (r0 + r4)|0;
+	r7 = 0;
+	heap32[(r2+9)] = r0;
+	r0 = r3 >> 2;
+	heap8[r6+56] = r7;
+	r3 = r5 >> 2;
+	heap32[(r0+9)] = r1;
+	r0 = heap32[(r3)];
+	if(r0 ==0) //_LBB548_5
+{
+	heap32[(r3+1)] = r1;
+}
+else{
+	r5 = 2;
+	r6 = r0 >> 2;
+	heap8[r0+57] = r5;
+	r5 = 1;
+	heap32[(r6+10)] = r1;
+	heap8[r1+58] = r5;
+	heap32[(r2+11)] = r0;
+}
+	heap32[(r3)] = r1;
+	r0 = heap32[(r3+2)];
+	r0 = (r0 + 1)|0;
+	heap32[(r3+2)] = r0;
+}
+}
+	r0 = 1;
+	r_g0 = r0;
+	return;
+}
+} while(0);
+	r0 = 0;
+	r_g0 = r0;
+	return;
+}
+
+function _ZN15btGjkEpaSolver211PenetrationEPK13btConvexShapeRK11btTransformS2_S5_RK9btVector3RNS_8sResultsEb(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+	var r6;
+	var r7;
+	var r8;
+	var r9;
+	var r10;
+	var r11;
+	var r12;
+	var r13;
+	var r14;
+	var r15;
+	var r16;
+	var r17;
+	var r18;
+	var r19;
+	var r20;
+	var r21;
+	var r22;
+	var f0;
+	var f1;
+	var f2;
+	var f3;
+	var f4;
+	var f5;
+	var f6;
+	var f7;
+	var f8;
+	var f9;
+	var f10;
+	var f11;
+	var f12;
+	var f13;
+	var f14;
+	var f15;
+var __label__ = 0;
+	i7 = sp + -10400;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp+1)];
+	r1 = heap32[(fp+5)];
+	r2 = heap32[(fp)];
+	r3 = heap32[(fp+2)];
+	r4 = heap32[(fp+3)];
+	r5 = sp + -176;
+	r6 = heap32[(fp+6)];
+	heap32[(g0)] = r2;
+	heap32[(g0+1)] = r0;
+	heap32[(g0+2)] = r3;
+	heap32[(g0+3)] = r4;
+	heap32[(g0+4)] = r1;
+	heap32[(g0+5)] = r5;
+	heap32[(g0+6)] = r6;
+	r2 = sp + -560;
+	r3 = r2 >> 2;
+	_ZN12gjkepa2_implL10InitializeEPK13btConvexShapeRK11btTransformS2_S5_RN15btGjkEpaSolver28sResultsERNS_13MinkowskiDiffEb(i7);
+	heap32[(r3+32)] = 0;
+	heap32[(r3+33)] = 0;
+	heap32[(r3+34)] = 0;
+	heap32[(r3+35)] = 0;
+	heap32[(r3+91)] = 0;
+	heap32[(r3+94)] = 2;
+	r4 = heap32[(fp+4)];
+	heap32[(r3+92)] = 0;
+	r4 = r4 >> 2;
+	heap32[(r3+36)] = 0;
+	f0 = heapFloat[(r4+2)];
+	f1 = heapFloat[(r4+1)];
+	f2 = heapFloat[(r4)];
+	r6 = sp + -48;
+	f2 = -f2;
+	r7 = r6 >> 2;
+	f1 = -f1;
+	heapFloat[(fp+-12)] = f2;
+	f0 = -f0;
+	heapFloat[(r7+1)] = f1;
+	heapFloat[(r7+2)] = f0;
+	heap32[(r7+3)] = 0;
+	heap32[(g0)] = r2;
+	heap32[(g0+1)] = r5;
+	heap32[(g0+2)] = r6;
+	_ZN12gjkepa2_impl3GJK8EvaluateERKNS_13MinkowskiDiffERK9btVector3(i7);
+	r6 = r_g0;
+	if(r6 ==2) //_LBB549_71
+{
+	r0 = r1 >> 2;
+	heap32[(r0)] = 2;
+}
+else{
+if(!(r6 !=1)) //_LBB549_72
+{
+	r6 = sp + -10368;
+	r7 = r6 >> 2;
+	heap32[(r7+2448)] = 0;
+	heap32[(r7+2449)] = 0;
+	heap32[(r7+2450)] = 0;
+	heap32[(r7+2451)] = 0;
+	heap32[(fp+-2592)] = 9;
+	heap32[(r7+10)] = 0;
+	heap32[(r7+11)] = 0;
+	heap32[(r7+12)] = 0;
+	heap32[(r7+13)] = 0;
+	r8 = 0;
+	r9 = (r6 + 9780)|0;
+	r10 = (r6 + 9728)|0;
+	heap32[(r7+14)] = 0;
+	heap32[(r7+2447)] = 0;
+	r11 = r8;
+	r12 = r8;
+	r13 = r8;
+_5: while(true){
+	r14 = 127;
+	r14 = (r14 - r13)|0;
+	r15 = (r9 + r8)|0;
+	r14 = (r14 * 60)|0;
+	r14 = (r6 + r14)|0;
+	r15 = r15 >> 2;
+	r14 = (r14 + 2108)|0;
+	r16 = (r10 + r8)|0;
+	heap32[(r15+-1)] = 0;
+	heap32[(r15)] = r12;
+	if(r12 !=0) //_LBB549_5
+{
+	r11 = r12 >> 2;
+	heap32[(r11+12)] = r16;
+	r11 = heap32[(r7+2451)];
+}
+	r8 = (r8 + -60)|0;
+	r13 = (r13 + 1)|0;
+	r11 = (r11 + 1)|0;
+	heap32[(r7+2450)] = r16;
+	heap32[(r7+2451)] = r11;
+	r12 = r14;
+if(!(r8 !=-7680)) //_LBB549_3
+{
+break _5;
+}
+}
+	r3 = heap32[(r3+93)];
+	f0 = heapFloat[(r4+2)];
+	f1 = heapFloat[(r4+1)];
+	f2 = heapFloat[(r4)];
+	r3 = r3 >> 2;
+	r4 = heap32[(r3+8)];
+	if(uint(r4) <uint(2)) //_LBB549_57
+{
+__label__ = 56;
+}
+else{
+	heap32[(g0)] = r2;
+	_ZN12gjkepa2_impl3GJK13EncloseOriginEv(i7);
+	r4 = r_g0;
+	if(r4 ==0) //_LBB549_57
+{
+__label__ = 56;
+}
+else{
+	r4 = heap32[(r7+2448)];
+_14: do {
+if(!(r4 ==0)) //_LBB549_19
+{
+_15: while(true){
+	r8 = r4 >> 2;
+	r9 = heap32[(r8+13)];
+if(!(r9 ==0)) //_LBB549_12
+{
+	r9 = r9 >> 2;
+	r10 = heap32[(r8+12)];
+	heap32[(r9+12)] = r10;
+}
+	r9 = heap32[(r8+12)];
+if(!(r9 ==0)) //_LBB549_14
+{
+	r9 = r9 >> 2;
+	r10 = heap32[(r8+13)];
+	heap32[(r9+13)] = r10;
+}
+	r9 = heap32[(r7+2448)];
+if(!(r9 !=r4)) //_LBB549_16
+{
+	r9 = heap32[(r8+13)];
+	heap32[(r7+2448)] = r9;
+}
+	r9 = heap32[(r7+2449)];
+	r9 = (r9 + -1)|0;
+	heap32[(r7+2449)] = r9;
+	heap32[(r8+12)] = 0;
+	r9 = heap32[(r7+2450)];
+	heap32[(r8+13)] = r9;
+	r8 = heap32[(r7+2450)];
+if(!(r8 ==0)) //_LBB549_18
+{
+	r8 = r8 >> 2;
+	heap32[(r8+12)] = r4;
+}
+	heap32[(r7+2450)] = r4;
+	r4 = heap32[(r7+2451)];
+	r4 = (r4 + 1)|0;
+	heap32[(r7+2451)] = r4;
+	r4 = heap32[(r7+2448)];
+if(!(r4 !=0)) //_LBB549_10
+{
+break _14;
+}
+}
+}
+} while(0);
+	heap32[(fp+-2592)] = 0;
+	heap32[(r7+2447)] = 0;
+	r4 = heap32[(r3+1)];
+	r8 = heap32[(r3)];
+	r9 = heap32[(r3+3)];
+	r10 = r8 >> 2;
+	r11 = r4 >> 2;
+	r9 = r9 >> 2;
+	r12 = heap32[(r3+2)];
+	r13 = r12 >> 2;
+	f3 = heapFloat[(r11+6)];
+	f4 = heapFloat[(r9+6)];
+	f5 = heapFloat[(r10+6)];
+	f6 = heapFloat[(r10+5)];
+	f7 = heapFloat[(r9+5)];
+	f8 = heapFloat[(r11+4)];
+	f9 = heapFloat[(r9+4)];
+	f10 = heapFloat[(r13+5)];
+	f11 = heapFloat[(r10+4)];
+	f12 = heapFloat[(r13+4)];
+	f3 = f3-f4;
+	f6 = f6-f7;
+	f8 = f8-f9;
+	f5 = f5-f4;
+	f11 = f11-f9;
+	f13 = f6*f3;
+	f9 = f12-f9;
+	f12 = f5*f8;
+	f10 = f10-f7;
+	f3 = f11*f3;
+	f14 = heapFloat[(r13+6)];
+	f15 = heapFloat[(r11+5)];
+	f13 = f13*f9;
+	f12 = f12*f10;
+	f7 = f15-f7;
+	f12 = f13+f12;
+	f3 = f3*f10;
+	f6 = f6*f8;
+	f4 = f14-f4;
+	f8 = f11*f7;
+	f3 = f12-f3;
+	f6 = f6*f4;
+	f5 = f5*f7;
+	f3 = f3-f6;
+	f4 = f8*f4;
+	f3 = f3+f4;
+	f4 = f5*f9;
+	f3 = f3-f4;
+	f4 =                         0;
+	if(f3 <f4) //_LBB549_21
+{
+	heap32[(r3)] = r4;
+	heap32[(r3+1)] = r8;
+	f3 = heapFloat[(r3+4)];
+	heap32[(r3+4)] = heap32[(r3+5)];
+	heapFloat[(r3+5)] = f3;
+	r9 = r4;
+	r4 = r8;
+}
+else{
+	r9 = r8;
+}
+	heap32[(g0)] = r6;
+	heap32[(g0+1)] = r9;
+	heap32[(g0+2)] = r4;
+	heap32[(g0+3)] = r12;
+	heap32[(g0+4)] = 1;
+	_ZN12gjkepa2_impl3EPA7newfaceEPNS_3GJK3sSVES3_S3_b(i7);
+	r4 = r_g0;
+	r8 = heap32[(r3+3)];
+	r9 = heap32[(r3)];
+	r10 = heap32[(r3+1)];
+	heap32[(g0)] = r6;
+	heap32[(g0+1)] = r10;
+	heap32[(g0+2)] = r9;
+	heap32[(g0+3)] = r8;
+	heap32[(g0+4)] = 1;
+	_ZN12gjkepa2_impl3EPA7newfaceEPNS_3GJK3sSVES3_S3_b(i7);
+	r8 = r_g0;
+	r9 = heap32[(r3+3)];
+	r10 = heap32[(r3+1)];
+	r11 = heap32[(r3+2)];
+	heap32[(g0)] = r6;
+	heap32[(g0+1)] = r11;
+	heap32[(g0+2)] = r10;
+	heap32[(g0+3)] = r9;
+	heap32[(g0+4)] = 1;
+	_ZN12gjkepa2_impl3EPA7newfaceEPNS_3GJK3sSVES3_S3_b(i7);
+	r9 = r_g0;
+	r10 = heap32[(r3+3)];
+	r11 = heap32[(r3+2)];
+	r12 = heap32[(r3)];
+	heap32[(g0)] = r6;
+	heap32[(g0+1)] = r12;
+	heap32[(g0+2)] = r11;
+	heap32[(g0+3)] = r10;
+	heap32[(g0+4)] = 1;
+	_ZN12gjkepa2_impl3EPA7newfaceEPNS_3GJK3sSVES3_S3_b(i7);
+	r10 = r_g0;
+	r11 = heap32[(r7+2449)];
+	if(r11 !=4) //_LBB549_57
+{
+__label__ = 56;
+}
+else{
+	r3 = heap32[(r7+2448)];
+	r11 = r3 >> 2;
+	f0 = heapFloat[(r11+4)];
+	f0 = f0*f0;
+	f1 = heapFloat[(r11+5)];
+_35: while(true){
+	f2 = f1;
+	r11 = r3;
+	f3 = f0;
+_37: while(true){
+	r3 = r3 >> 2;
+	r3 = heap32[(r3+13)];
+	if(r3 !=0) //_LBB549_24
+{
+	r12 = r3 >> 2;
+	f1 = heapFloat[(r12+5)];
+if(!(f1 <f2)) //_LBB549_27
+{
+	f0 = heapFloat[(r12+4)];
+	f0 = f0*f0;
+if(!(f0 >=f3)) //_LBB549_27
+{
+continue _35;
+}
+}
+}
+else{
+break _35;
+}
+}
+}
+	r3 = r11 >> 2;
+	f0 = heapFloat[(r3)];
+	f1 = heapFloat[(r3+1)];
+	f2 = heapFloat[(r3+2)];
+	f3 = heapFloat[(r3+3)];
+	f4 = heapFloat[(r3+4)];
+	f5 = heapFloat[(r3+5)];
+	r12 = heap32[(r3+6)];
+	r13 = heap32[(r3+7)];
+	r3 = heap32[(r3+8)];
+	r14 = 0;
+	r15 = r4 >> 2;
+	heap8[r4+56] = r14;
+	heap32[(r15+9)] = r8;
+	r16 = r8 >> 2;
+	heap8[r8+56] = r14;
+	heap32[(r16+9)] = r4;
+	heap8[r4+57] = r14;
+	r17 = 1;
+	heap32[(r15+10)] = r9;
+	r18 = r9 >> 2;
+	heap8[r9+56] = r17;
+	heap32[(r18+9)] = r4;
+	heap8[r4+58] = r14;
+	r19 = 2;
+	heap32[(r15+11)] = r10;
+	r15 = r10 >> 2;
+	heap8[r10+56] = r19;
+	heap32[(r15+9)] = r4;
+	heap8[r8+57] = r19;
+	heap32[(r16+10)] = r10;
+	heap8[r10+58] = r17;
+	heap32[(r15+11)] = r8;
+	heap8[r8+58] = r17;
+	heap32[(r16+11)] = r9;
+	heap8[r9+57] = r19;
+	heap32[(r18+10)] = r8;
+	heap8[r9+58] = r17;
+	heap32[(r18+11)] = r10;
+	heap8[r10+57] = r19;
+	heap32[(r15+10)] = r9;
+	heap32[(fp+-2592)] = 0;
+_42: while(true){
+	r4 = (r14 + 1)|0;
+_44: while(true){
+	if(uint(r14) <uint(255)) //_LBB549_30
+{
+	r8 = heap32[(r7+2447)];
+	if(uint(r8) >uint(63)) //_LBB549_54
+{
+__label__ = 53;
+break _42;
+}
+else{
+	r9 = sp + -16;
+	r10 = r9 >> 2;
+	heap32[(fp+-4)] = 0;
+	heap32[(r10+1)] = 0;
+	r15 = (r8 + 1)|0;
+	heap32[(r10+2)] = 0;
+	r8 = r8 << 5;
+	heap32[(r7+2447)] = r15;
+	r8 = (r6 + r8)|0;
+	heap8[r11+59] = r4;
+	r15 = (r8 + 60)|0;
+	heap32[(g0)] = r2;
+	heap32[(g0+1)] = r11;
+	heap32[(g0+2)] = r15;
+	r8 = r8 >> 2;
+	_ZNK12gjkepa2_impl3GJK10getsupportERK9btVector3RNS0_3sSVE(i7);
+	r16 = r11 >> 2;
+	f6 = heapFloat[(r16)];
+	f7 = heapFloat[(r8+19)];
+	f8 = heapFloat[(r16+1)];
+	f9 = heapFloat[(r8+20)];
+	f6 = f6*f7;
+	f7 = f8*f9;
+	f8 = heapFloat[(r16+2)];
+	f9 = heapFloat[(r8+21)];
+	f6 = f6+f7;
+	f7 = f8*f9;
+	f6 = f6+f7;
+	f7 = heapFloat[(r16+4)];
+	f6 = f6-f7;
+	f7 =   9.9999997473787516e-005;
+	if(f6 <=f7) //_LBB549_53
+{
+__label__ = 52;
+break _42;
+}
+else{
+	r14 = (r14 + 1)|0;
+	r8 = (r11 + 1)|0;
+	r18 = 0;
+	r20 = r17;
+_49: while(true){
+	r21 = r18 << 2;
+	r21 = (r11 + r21)|0;
+	r22 = (r8 + r18)|0;
+	r21 = r21 >> 2;
+	r22 = heapU8[r22+55];
+	r21 = heap32[(r21+9)];
+	heap32[(g0)] = r6;
+	heap32[(g0+1)] = r14;
+	heap32[(g0+2)] = r15;
+	heap32[(g0+3)] = r21;
+	heap32[(g0+4)] = r22;
+	heap32[(g0+5)] = r9;
+	_ZN12gjkepa2_impl3EPA6expandEjPNS_3GJK3sSVEPNS0_5sFaceEjRNS0_8sHorizonE(i7);
+	r18 = (r18 + 1)|0;
+	r20 = r_g0 & r20;
+	if(uint(r18) >uint(2)) //_LBB549_35
+{
+break _49;
+}
+else{
+if(!(r20 !=0)) //_LBB549_33
+{
+break _49;
+}
+}
+}
+	if(r20 !=1) //_LBB549_52
+{
+__label__ = 51;
+break _42;
+}
+else{
+	r8 = heap32[(r10+2)];
+	if(uint(r8) <uint(3)) //_LBB549_52
+{
+__label__ = 51;
+break _42;
+}
+else{
+	r8 = heap32[(fp+-4)];
+	r9 = heap32[(r10+1)];
+	r10 = r8 >> 2;
+	heap8[r8+57] = r19;
+	r15 = 1;
+	heap32[(r10+10)] = r9;
+	r10 = r9 >> 2;
+	heap8[r9+58] = r15;
+	heap32[(r10+11)] = r8;
+	r8 = heap32[(r16+13)];
+if(!(r8 ==0)) //_LBB549_39
+{
+	r8 = r8 >> 2;
+	r9 = heap32[(r16+12)];
+	heap32[(r8+12)] = r9;
+}
+	r8 = heap32[(r16+12)];
+if(!(r8 ==0)) //_LBB549_41
+{
+	r8 = r8 >> 2;
+	r9 = heap32[(r16+13)];
+	heap32[(r8+13)] = r9;
+}
+	r8 = heap32[(r7+2448)];
+if(!(r8 !=r11)) //_LBB549_43
+{
+	r8 = heap32[(r16+13)];
+	heap32[(r7+2448)] = r8;
+}
+	r8 = heap32[(r7+2449)];
+	r8 = (r8 + -1)|0;
+	heap32[(r7+2449)] = r8;
+	heap32[(r16+12)] = 0;
+	r8 = heap32[(r7+2450)];
+	heap32[(r16+13)] = r8;
+	r8 = heap32[(r7+2450)];
+if(!(r8 ==0)) //_LBB549_45
+{
+	r8 = r8 >> 2;
+	heap32[(r8+12)] = r11;
+}
+	heap32[(r7+2450)] = r11;
+	r11 = heap32[(r7+2451)];
+	r11 = (r11 + 1)|0;
+	heap32[(r7+2451)] = r11;
+	r8 = heap32[(r7+2448)];
+	r11 = r8 >> 2;
+	f6 = heapFloat[(r11+4)];
+	f6 = f6*f6;
+	f7 = heapFloat[(r11+5)];
+_67: while(true){
+	f8 = f7;
+	r11 = r8;
+	f9 = f6;
+_69: while(true){
+	r8 = r8 >> 2;
+	r8 = heap32[(r8+13)];
+	if(r8 !=0) //_LBB549_46
+{
+	r9 = r8 >> 2;
+	f7 = heapFloat[(r9+5)];
+if(!(f7 <f8)) //_LBB549_49
+{
+	f6 = heapFloat[(r9+4)];
+	f6 = f6*f6;
+if(!(f6 >=f9)) //_LBB549_49
+{
+continue _67;
+}
+}
+}
+else{
+break _67;
+}
+}
+}
+	r8 = r11 >> 2;
+	f6 = heapFloat[(r8+5)];
+	r4 = (r4 + 1)|0;
+if(!(f6 <f5)) //_LBB549_55
+{
+break _44;
+}
+}
+}
+}
+}
+}
+else{
+__label__ = 55;
+break _42;
+}
+}
+	f0 = heapFloat[(r8)];
+	f1 = heapFloat[(r8+1)];
+	f2 = heapFloat[(r8+2)];
+	f3 = heapFloat[(r8+3)];
+	f4 = heapFloat[(r8+4)];
+	r12 = heap32[(r8+6)];
+	r13 = heap32[(r8+7)];
+	r3 = heap32[(r8+8)];
+	f5 = f6;
+}
+switch(__label__ ){//multiple entries
+case 53:
+	heap32[(fp+-2592)] = 6;
+break;
+case 52:
+	heap32[(fp+-2592)] = 7;
+break;
+case 51:
+	heap32[(fp+-2592)] = 4;
+break;
+}
+	heapFloat[(r7+10)] = f0;
+	heapFloat[(r7+11)] = f1;
+	heapFloat[(r7+12)] = f2;
+	heapFloat[(r7+13)] = f3;
+	heapFloat[(r7+14)] = f4;
+	heap32[(r7+9)] = 3;
+	heap32[(r7+1)] = r12;
+	heap32[(r7+2)] = r13;
+	heap32[(r7+3)] = r3;
+	r3 = r3 >> 2;
+	r2 = r13 >> 2;
+	f2 = f2*f4;
+	f3 = heapFloat[(r3+6)];
+	f5 = heapFloat[(r2+6)];
+	f1 = f1*f4;
+	f6 = heapFloat[(r3+5)];
+	f7 = heapFloat[(r2+5)];
+	f0 = f0*f4;
+	f4 = heapFloat[(r3+4)];
+	f8 = heapFloat[(r2+4)];
+	f5 = f5-f2;
+	f6 = f6-f1;
+	f8 = f8-f0;
+	f3 = f3-f2;
+	f7 = f7-f1;
+	f4 = f4-f0;
+	f9 = f7*f3;
+	f10 = f5*f6;
+	f5 = f5*f4;
+	f3 = f8*f3;
+	f9 = f9-f10;
+	f3 = f5-f3;
+	f5 = f8*f6;
+	f4 = f7*f4;
+	f4 = f5-f4;
+	f5 = f9*f9;
+	f3 = f3*f3;
+	f3 = f5+f3;
+	f4 = f4*f4;
+	f3 = f3+f4;
+	heapFloat[(g0)] = f3;
+	sqrtf(i7);
+	heapFloat[(r7+5)] = f_g0;
+	r4 = r12 >> 2;
+	f3 = heapFloat[(r4+6)];
+	f4 = heapFloat[(r4+5)];
+	f5 = heapFloat[(r4+4)];
+	f6 = heapFloat[(r3+6)];
+	f7 = heapFloat[(r3+5)];
+	f8 = heapFloat[(r3+4)];
+	f6 = f6-f2;
+	f4 = f4-f1;
+	f8 = f8-f0;
+	f3 = f3-f2;
+	f7 = f7-f1;
+	f5 = f5-f0;
+	f9 = f7*f3;
+	f10 = f6*f4;
+	f6 = f6*f5;
+	f3 = f8*f3;
+	f9 = f9-f10;
+	f3 = f6-f3;
+	f4 = f8*f4;
+	f5 = f7*f5;
+	f4 = f4-f5;
+	f5 = f9*f9;
+	f3 = f3*f3;
+	f3 = f5+f3;
+	f4 = f4*f4;
+	f3 = f3+f4;
+	heapFloat[(g0)] = f3;
+	sqrtf(i7);
+	heapFloat[(r7+6)] = f_g0;
+	f3 = heapFloat[(r2+6)];
+	f4 = heapFloat[(r2+5)];
+	f5 = heapFloat[(r2+4)];
+	f6 = heapFloat[(r4+6)];
+	f7 = heapFloat[(r4+5)];
+	f8 = heapFloat[(r4+4)];
+	f6 = f6-f2;
+	f4 = f4-f1;
+	f8 = f8-f0;
+	f2 = f3-f2;
+	f1 = f7-f1;
+	f0 = f5-f0;
+	f3 = f1*f2;
+	f5 = f6*f4;
+	f6 = f6*f0;
+	f2 = f8*f2;
+	f3 = f3-f5;
+	f2 = f6-f2;
+	f4 = f8*f4;
+	f0 = f1*f0;
+	f0 = f4-f0;
+	f1 = f3*f3;
+	f2 = f2*f2;
+	f1 = f1+f2;
+	f0 = f0*f0;
+	f0 = f1+f0;
+	heapFloat[(g0)] = f0;
+	sqrtf(i7);
+	f1 = heapFloat[(r7+5)];
+	f2 = heapFloat[(r7+6)];
+	f3 = f1+f2;
+	f3 = f3+f_g0;
+	f1 = f1/f3;
+	f2 = f2/f3;
+	heapFloat[(r7+5)] = f1;
+	f0 = f_g0/f3;
+	heapFloat[(r7+6)] = f2;
+	heapFloat[(r7+7)] = f0;
+__label__ = 60;
+}
+}
+}
+if (__label__ == 56){
+	heap32[(fp+-2592)] = 8;
+	heapFloat[(r7+10)] = f2;
+	heapFloat[(r7+11)] = f1;
+	heapFloat[(r7+12)] = f0;
+	f2 = f2*f2;
+	f1 = f1*f1;
+	heap32[(r7+13)] = 0;
+	f1 = f2+f1;
+	f0 = f0*f0;
+	f0 = f1+f0;
+	heapFloat[(g0)] = f0;
+	sqrtf(i7);
+	f0 = f_g0;
+	f1 =                         0;
+	if(f0 >f1) //_LBB549_59
+{
+	f1 =                         1;
+	f2 = heapFloat[(r7+12)];
+	f0 = f1/f0;
+	f1 = heapFloat[(r7+11)];
+	f3 = heapFloat[(r7+10)];
+	f2 = f2*f0;
+	f1 = f1*f0;
+	f0 = f3*f0;
+}
+else{
+	f0 =                         1;
+	f2 = f1;
+}
+	heapFloat[(r7+10)] = f0;
+	heapFloat[(r7+11)] = f1;
+	heapFloat[(r7+12)] = f2;
+	heap32[(r7+13)] = 0;
+	heap32[(r7+14)] = 0;
+	heap32[(r7+9)] = 1;
+	r2 = heap32[(r3)];
+	heap32[(r7+1)] = r2;
+	heap32[(r7+5)] = 1065353216;
+}
+	r2 = heap32[(fp+-2592)];
+	if(r2 ==9) //_LBB549_70
+{
+	r1 = r1 >> 2;
+	heap32[(r1)] = 3;
+	r1 = 0;
+	r_g0 = r1;
+	return;
+}
+else{
+	r2 = heap32[(r7+9)];
+_90: do {
+	if(r2 !=0) //_LBB549_64
+{
+	r2 = 0;
+	f0 =                         0;
+	f1 = f0;
+	f2 = f0;
+_92: while(true){
+	r3 = r2 << 2;
+	r3 = (r6 + r3)|0;
+	r4 = r5 >> 2;
+	r3 = r3 >> 2;
+	r8 = heap32[(r4+30)];
+	r2 = (r2 + 1)|0;
+	r9 = heap32[(r3+1)];
+	r10 = heap32[(fp+-44)];
+	r4 = heap32[(r4+31)];
+	r11 = r8 & 1;
+	if(r11 != 0) //_LBB549_67
+{
+	r11 = (r10 + r4)|0;
+	r11 = r11 >> 2;
+	r11 = heap32[(r11)];
+	r8 = (r8 + r11)|0;
+	r8 = (r8 + -1)|0;
+	r8 = r8 >> 2;
+	r8 = heap32[(r8)];
+}
+	r11 = sp + -32;
+	r4 = (r10 + r4)|0;
+	heap32[(g0)] = r11;
+	heap32[(g0+1)] = r4;
+	heap32[(g0+2)] = r9;
+	__FUNCTION_TABLE__[(r8)>>2](i7);
+	r4 = r11 >> 2;
+	f3 = heapFloat[(fp+-8)];
+	f4 = heapFloat[(r3+5)];
+	f5 = heapFloat[(r4+1)];
+	f6 = heapFloat[(r4+2)];
+	f3 = f3*f4;
+	f5 = f5*f4;
+	f4 = f6*f4;
+	f2 = f2+f3;
+	f1 = f1+f5;
+	f0 = f0+f4;
+	r3 = heap32[(r7+9)];
+if(!(uint(r3) >uint(r2))) //_LBB549_65
+{
+break _90;
+}
+}
+}
+else{
+	f0 =                         0;
+	f1 = f0;
+	f2 = f0;
+}
+} while(0);
+	r1 = r1 >> 2;
+	r0 = r0 >> 2;
+	heap32[(r1)] = 1;
+	f3 = heapFloat[(r0)];
+	f4 = heapFloat[(r0+1)];
+	f5 = heapFloat[(r0+4)];
+	f6 = heapFloat[(r0+5)];
+	f3 = f3*f2;
+	f4 = f4*f1;
+	f7 = heapFloat[(r0+2)];
+	f8 = heapFloat[(r0+8)];
+	f9 = heapFloat[(r0+9)];
+	f10 = heapFloat[(r0+6)];
+	f5 = f5*f2;
+	f6 = f6*f1;
+	f3 = f3+f4;
+	f4 = f7*f0;
+	f7 = heapFloat[(r0+10)];
+	f8 = f8*f2;
+	f9 = f9*f1;
+	f5 = f5+f6;
+	f6 = f10*f0;
+	f3 = f3+f4;
+	f4 = heapFloat[(r0+12)];
+	f10 = heapFloat[(r0+14)];
+	f11 = heapFloat[(r0+13)];
+	f5 = f5+f6;
+	f6 = f8+f9;
+	f7 = f7*f0;
+	f3 = f3+f4;
+	f4 = f6+f7;
+	f5 = f5+f11;
+	heapFloat[(r1+1)] = f3;
+	f3 = f4+f10;
+	heapFloat[(r1+2)] = f5;
+	heapFloat[(r1+3)] = f3;
+	heap32[(r1+4)] = 0;
+	f3 = heapFloat[(r7+14)];
+	f4 = heapFloat[(r7+11)];
+	f5 = heapFloat[(r7+10)];
+	f6 = heapFloat[(r7+12)];
+	f7 = f5*f3;
+	f8 = f4*f3;
+	f9 = f6*f3;
+	f2 = f2-f7;
+	f7 = heapFloat[(r0)];
+	f1 = f1-f8;
+	f8 = heapFloat[(r0+1)];
+	f10 = heapFloat[(r0+4)];
+	f11 = heapFloat[(r0+5)];
+	f7 = f7*f2;
+	f8 = f8*f1;
+	f0 = f0-f9;
+	f9 = heapFloat[(r0+2)];
+	f12 = heapFloat[(r0+8)];
+	f13 = heapFloat[(r0+9)];
+	f14 = heapFloat[(r0+6)];
+	f10 = f10*f2;
+	f11 = f11*f1;
+	f7 = f7+f8;
+	f8 = f9*f0;
+	f9 = heapFloat[(r0+10)];
+	f2 = f12*f2;
+	f1 = f13*f1;
+	f10 = f10+f11;
+	f11 = f14*f0;
+	f7 = f7+f8;
+	f8 = heapFloat[(r0+12)];
+	f12 = heapFloat[(r0+14)];
+	f13 = heapFloat[(r0+13)];
+	f10 = f10+f11;
+	f1 = f2+f1;
+	f0 = f9*f0;
+	f2 = f7+f8;
+	f0 = f1+f0;
+	f1 = f10+f13;
+	heapFloat[(r1+5)] = f2;
+	f0 = f0+f12;
+	heapFloat[(r1+6)] = f1;
+	heapFloat[(r1+7)] = f0;
+	f0 = -f5;
+	heap32[(r1+8)] = 0;
+	f1 = -f4;
+	heapFloat[(r1+9)] = f0;
+	f0 = -f6;
+	heapFloat[(r1+10)] = f1;
+	heapFloat[(r1+11)] = f0;
+	f0 = -f3;
+	heap32[(r1+12)] = 0;
+	heapFloat[(r1+13)] = f0;
+	r1 = 1;
+	r_g0 = r1;
+	return;
+}
+}
+}
+	r0 = 0;
+	r_g0 = r0;
+	return;
+}
+
+function _ZN15btGjkEpaSolver28DistanceEPK13btConvexShapeRK11btTransformS2_S5_RK9btVector3RNS_8sResultsE(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+	var r6;
+	var r7;
+	var r8;
+	var r9;
+	var r10;
+	var r11;
+	var f0;
+	var f1;
+	var f2;
+	var f3;
+	var f4;
+	var f5;
+	var f6;
+	var f7;
+	var f8;
+	var f9;
+	var f10;
+	var f11;
+	var f12;
+	var f13;
+	var f14;
+	var f15;
+	var f16;
+	var f17;
+	var f18;
+var __label__ = 0;
+	i7 = sp + -592;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp+1)];
+	r1 = heap32[(fp+5)];
+	r2 = heap32[(fp)];
+	r3 = heap32[(fp+2)];
+	r4 = heap32[(fp+3)];
+	r5 = sp + -176;
+	heap32[(g0)] = r2;
+	heap32[(g0+1)] = r0;
+	heap32[(g0+2)] = r3;
+	heap32[(g0+3)] = r4;
+	heap32[(g0+4)] = r1;
+	heap32[(g0+5)] = r5;
+	heap32[(g0+6)] = 0;
+	r2 = sp + -560;
+	r3 = r2 >> 2;
+	_ZN12gjkepa2_implL10InitializeEPK13btConvexShapeRK11btTransformS2_S5_RN15btGjkEpaSolver28sResultsERNS_13MinkowskiDiffEb(i7);
+	heap32[(r3+32)] = 0;
+	heap32[(r3+33)] = 0;
+	heap32[(r3+34)] = 0;
+	heap32[(r3+35)] = 0;
+	heap32[(r3+91)] = 0;
+	heap32[(r3+94)] = 2;
+	heap32[(r3+92)] = 0;
+	heap32[(r3+36)] = 0;
+	r4 = heap32[(fp+4)];
+	heap32[(g0)] = r2;
+	heap32[(g0+1)] = r5;
+	heap32[(g0+2)] = r4;
+	_ZN12gjkepa2_impl3GJK8EvaluateERKNS_13MinkowskiDiffERK9btVector3(i7);
+	r2 = r_g0;
+	if(r2 ==0) //_LBB550_3
+{
+	r2 = heap32[(r3+93)];
+	r4 = r2 >> 2;
+	r4 = heap32[(r4+8)];
+_3: do {
+	if(r4 !=0) //_LBB550_5
+{
+	r4 = 0;
+	f0 =                         0;
+	f1 = f0;
+	f2 = f0;
+	f3 = f0;
+	f4 = f0;
+	f5 = f0;
+_5: while(true){
+	r6 = r4 << 2;
+	r2 = (r2 + r6)|0;
+	r2 = r2 >> 2;
+	r7 = r5 >> 2;
+	r8 = heap32[(r7+30)];
+	r4 = (r4 + 1)|0;
+	f6 = heapFloat[(r2+4)];
+	r2 = heap32[(r2)];
+	r9 = heap32[(fp+-44)];
+	r10 = heap32[(r7+31)];
+	r11 = r8 & 1;
+	if(r11 != 0) //_LBB550_8
+{
+	r11 = (r9 + r10)|0;
+	r11 = r11 >> 2;
+	r11 = heap32[(r11)];
+	r8 = (r8 + r11)|0;
+	r8 = (r8 + -1)|0;
+	r8 = r8 >> 2;
+	r8 = heap32[(r8)];
+}
+	r11 = sp + -48;
+	r9 = (r9 + r10)|0;
+	heap32[(g0)] = r11;
+	heap32[(g0+1)] = r9;
+	heap32[(g0+2)] = r2;
+	__FUNCTION_TABLE__[(r8)>>2](i7);
+	r2 = heap32[(r3+93)];
+	r2 = (r2 + r6)|0;
+	r2 = r2 >> 2;
+	r6 = r11 >> 2;
+	r2 = heap32[(r2)];
+	r2 = r2 >> 2;
+	f7 = heapFloat[(fp+-12)];
+	f8 = heapFloat[(r6+1)];
+	f9 = heapFloat[(r6+2)];
+	f10 = heapFloat[(r2+2)];
+	f11 = heapFloat[(r2+1)];
+	f12 = heapFloat[(r2)];
+	f7 = f7*f6;
+	f8 = f8*f6;
+	f9 = f9*f6;
+	r2 = heap32[(r7+30)];
+	f5 = f5+f7;
+	f4 = f4+f8;
+	f3 = f3+f9;
+	f7 = -f10;
+	f8 = -f11;
+	f9 = -f12;
+	r6 = heap32[(r7+1)];
+	r8 = heap32[(r7+31)];
+	r9 = r2 & 1;
+	if(r9 != 0) //_LBB550_11
+{
+	r9 = (r6 + r8)|0;
+	r9 = r9 >> 2;
+	r9 = heap32[(r9)];
+	r2 = (r2 + r9)|0;
+	r2 = (r2 + -1)|0;
+	r2 = r2 >> 2;
+	r2 = heap32[(r2)];
+}
+	f10 = heapFloat[(r7+2)];
+	f11 = heapFloat[(r7+3)];
+	f12 = heapFloat[(r7+6)];
+	f13 = heapFloat[(r7+7)];
+	f10 = f10*f9;
+	f11 = f11*f8;
+	f14 = heapFloat[(r7+4)];
+	f15 = heapFloat[(r7+10)];
+	f16 = heapFloat[(r7+11)];
+	f17 = heapFloat[(r7+12)];
+	f18 = heapFloat[(r7+8)];
+	f12 = f12*f9;
+	f13 = f13*f8;
+	f10 = f10+f11;
+	f11 = f14*f7;
+	r9 = sp + -16;
+	f9 = f15*f9;
+	f8 = f16*f8;
+	f12 = f12+f13;
+	f13 = f18*f7;
+	f10 = f10+f11;
+	r10 = r9 >> 2;
+	f8 = f9+f8;
+	f7 = f17*f7;
+	f9 = f12+f13;
+	heapFloat[(fp+-4)] = f10;
+	f7 = f8+f7;
+	heapFloat[(r10+1)] = f9;
+	heapFloat[(r10+2)] = f7;
+	heap32[(r10+3)] = 0;
+	r10 = sp + -32;
+	r6 = (r6 + r8)|0;
+	heap32[(g0)] = r10;
+	heap32[(g0+1)] = r6;
+	heap32[(g0+2)] = r9;
+	__FUNCTION_TABLE__[(r2)>>2](i7);
+	r2 = r10 >> 2;
+	f7 = heapFloat[(r7+14)];
+	f8 = heapFloat[(fp+-8)];
+	f9 = heapFloat[(r7+18)];
+	f10 = heapFloat[(r7+22)];
+	f11 = heapFloat[(r7+15)];
+	f12 = heapFloat[(r2+1)];
+	f13 = heapFloat[(r7+19)];
+	f14 = heapFloat[(r7+23)];
+	f7 = f7*f8;
+	f11 = f11*f12;
+	f15 = heapFloat[(r7+16)];
+	f16 = heapFloat[(r2+2)];
+	f17 = heapFloat[(r7+20)];
+	f18 = heapFloat[(r7+24)];
+	f9 = f9*f8;
+	f13 = f13*f12;
+	f8 = f10*f8;
+	f10 = f14*f12;
+	f7 = f7+f11;
+	f11 = f15*f16;
+	f9 = f9+f13;
+	f12 = f17*f16;
+	f8 = f8+f10;
+	f10 = f18*f16;
+	f7 = f7+f11;
+	f11 = heapFloat[(r7+26)];
+	f9 = f9+f12;
+	f12 = heapFloat[(r7+27)];
+	f8 = f8+f10;
+	f10 = heapFloat[(r7+28)];
+	f7 = f7+f11;
+	f9 = f9+f12;
+	f8 = f8+f10;
+	f7 = f7*f6;
+	f9 = f9*f6;
+	f6 = f8*f6;
+	r2 = heap32[(r3+93)];
+	f2 = f2+f7;
+	f1 = f1+f9;
+	f0 = f0+f6;
+	r6 = r2 >> 2;
+	r6 = heap32[(r6+8)];
+if(!(uint(r6) >uint(r4))) //_LBB550_6
+{
+break _3;
+}
+}
+}
+else{
+	f0 =                         0;
+	f1 = f0;
+	f2 = f0;
+	f3 = f0;
+	f4 = f0;
+	f5 = f0;
+}
+} while(0);
+	r0 = r0 >> 2;
+	f6 = heapFloat[(r0)];
+	f7 = heapFloat[(r0+1)];
+	f8 = heapFloat[(r0+4)];
+	f9 = heapFloat[(r0+5)];
+	f6 = f6*f5;
+	f7 = f7*f4;
+	f10 = heapFloat[(r0+2)];
+	f11 = heapFloat[(r0+8)];
+	f12 = heapFloat[(r0+9)];
+	f13 = heapFloat[(r0+6)];
+	f8 = f8*f5;
+	f9 = f9*f4;
+	f6 = f6+f7;
+	f7 = f10*f3;
+	f10 = heapFloat[(r0+10)];
+	f11 = f11*f5;
+	f12 = f12*f4;
+	f8 = f8+f9;
+	f9 = f13*f3;
+	f6 = f6+f7;
+	f7 = heapFloat[(r0+12)];
+	f13 = heapFloat[(r0+14)];
+	f14 = heapFloat[(r0+13)];
+	f8 = f8+f9;
+	r1 = r1 >> 2;
+	f9 = f11+f12;
+	f10 = f10*f3;
+	f6 = f6+f7;
+	f7 = f9+f10;
+	f8 = f8+f14;
+	heapFloat[(r1+1)] = f6;
+	f6 = f7+f13;
+	heapFloat[(r1+2)] = f8;
+	heapFloat[(r1+3)] = f6;
+	heap32[(r1+4)] = 0;
+	f6 = heapFloat[(r0)];
+	f7 = heapFloat[(r0+1)];
+	f8 = heapFloat[(r0+4)];
+	f9 = heapFloat[(r0+5)];
+	f10 = heapFloat[(r0+2)];
+	f6 = f6*f2;
+	f7 = f7*f1;
+	f11 = heapFloat[(r0+8)];
+	f12 = heapFloat[(r0+9)];
+	f13 = heapFloat[(r0+6)];
+	f8 = f8*f2;
+	f9 = f9*f1;
+	f6 = f6+f7;
+	f7 = f10*f0;
+	f10 = heapFloat[(r0+10)];
+	f11 = f11*f2;
+	f12 = f12*f1;
+	f8 = f8+f9;
+	f9 = f13*f0;
+	f6 = f6+f7;
+	f7 = heapFloat[(r0+12)];
+	f13 = heapFloat[(r0+14)];
+	f14 = heapFloat[(r0+13)];
+	f8 = f8+f9;
+	f9 = f11+f12;
+	f10 = f10*f0;
+	f6 = f6+f7;
+	f7 = f9+f10;
+	f8 = f8+f14;
+	heapFloat[(r1+5)] = f6;
+	f6 = f7+f13;
+	heapFloat[(r1+6)] = f8;
+	heapFloat[(r1+7)] = f6;
+	f2 = f5-f2;
+	heap32[(r1+8)] = 0;
+	f1 = f4-f1;
+	heapFloat[(r1+9)] = f2;
+	f0 = f3-f0;
+	heapFloat[(r1+10)] = f1;
+	heapFloat[(r1+11)] = f0;
+	f2 = f2*f2;
+	f1 = f1*f1;
+	heap32[(r1+12)] = 0;
+	f1 = f2+f1;
+	f0 = f0*f0;
+	f0 = f1+f0;
+	heapFloat[(g0)] = f0;
+	sqrtf(i7);
+	f1 =                         1;
+	f2 =   9.9999997473787516e-005;
+	f2 = f_g0 > f2 ? f_g0 : f1;
+	heapFloat[(r1+13)] = f_g0;
+	f0 = f1/f2;
+	f1 = heapFloat[(r1+9)];
+	f1 = f1*f0;
+	heapFloat[(r1+9)] = f1;
+	f1 = heapFloat[(r1+10)];
+	f1 = f1*f0;
+	heapFloat[(r1+10)] = f1;
+	f1 = heapFloat[(r1+11)];
+	f0 = f1*f0;
+	heapFloat[(r1+11)] = f0;
+	r0 = 1;
+	r_g0 = r0;
+	return;
+}
+else{
+	if(r2 !=1) //_LBB550_14
+{
+	r0 = 2;
+}
+else{
+	r0 = 1;
+}
+	r1 = r1 >> 2;
+	heap32[(r1)] = r0;
+	r0 = 0;
+	r_g0 = r0;
+	return;
+}
+}
+
+function _ZN30btGjkEpaPenetrationDepthSolver12calcPenDepthER22btVoronoiSimplexSolverPK13btConvexShapeS4_RK11btTransformS7_R9btVector3S9_S9_P12btIDebugDrawP12btStackAlloc(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+	var r6;
+	var r7;
+	var r8;
+	var r9;
+	var f0;
+	var f1;
+	var f2;
+	var f3;
+	var f4;
+	var f5;
+var __label__ = 0;
+	i7 = sp + -104;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp+4)];
+	r1 = heap32[(fp+5)];
+	r2 = r0 >> 2;
+	r3 = r1 >> 2;
+	f0 = heapFloat[(r2+14)];
+	f1 = heapFloat[(r3+14)];
+	f2 = heapFloat[(r2+13)];
+	f3 = heapFloat[(r3+13)];
+	f4 = heapFloat[(r2+12)];
+	f5 = heapFloat[(r3+12)];
+	r2 = sp + -16;
+	f4 = f4-f5;
+	r3 = r2 >> 2;
+	f2 = f2-f3;
+	heapFloat[(fp+-4)] = f4;
+	f0 = f0-f1;
+	heapFloat[(r3+1)] = f2;
+	heapFloat[(r3+2)] = f0;
+	heap32[(r3+3)] = 0;
+	r3 = heap32[(fp+2)];
+	r4 = heap32[(fp+3)];
+	r5 = sp + -72;
+	heap32[(g0)] = r3;
+	heap32[(g0+1)] = r0;
+	heap32[(g0+2)] = r4;
+	heap32[(g0+3)] = r1;
+	heap32[(g0+4)] = r2;
+	heap32[(g0+5)] = r5;
+	heap32[(g0+6)] = 1;
+	r6 = heap32[(fp+6)];
+	r7 = heap32[(fp+7)];
+	r8 = heap32[(fp+8)];
+	_ZN15btGjkEpaSolver211PenetrationEPK13btConvexShapeRK11btTransformS2_S5_RK9btVector3RNS_8sResultsEb(i7);
+	r9 = r_g0;
+	if(r9 ==0) //_LBB551_2
+{
+	heap32[(g0)] = r3;
+	heap32[(g0+1)] = r0;
+	heap32[(g0+2)] = r4;
+	heap32[(g0+3)] = r1;
+	heap32[(g0+4)] = r2;
+	heap32[(g0+5)] = r5;
+	_ZN15btGjkEpaSolver28DistanceEPK13btConvexShapeRK11btTransformS2_S5_RK9btVector3RNS_8sResultsE(i7);
+	r0 = r_g0;
+if(!(r0 ==0)) //_LBB551_4
+{
+	r0 = r5 >> 2;
+	r1 = r7 >> 2;
+	heap32[(r1)] = heap32[(r0+1)];
+	heap32[(r1+1)] = heap32[(r0+2)];
+	heap32[(r1+2)] = heap32[(r0+3)];
+	r2 = r8 >> 2;
+	heap32[(r1+3)] = heap32[(r0+4)];
+	heap32[(r2)] = heap32[(r0+5)];
+	heap32[(r2+1)] = heap32[(r0+6)];
+	heap32[(r2+2)] = heap32[(r0+7)];
+	r1 = r6 >> 2;
+	heap32[(r2+3)] = heap32[(r0+8)];
+	heap32[(r1)] = heap32[(r0+9)];
+	heap32[(r1+1)] = heap32[(r0+10)];
+	heap32[(r1+2)] = heap32[(r0+11)];
+	heap32[(r1+3)] = heap32[(r0+12)];
+}
+	r0 = 0;
+	r_g0 = r0;
+	return;
+}
+else{
+	r0 = r5 >> 2;
+	r1 = r7 >> 2;
+	heap32[(r1)] = heap32[(r0+1)];
+	heap32[(r1+1)] = heap32[(r0+2)];
+	heap32[(r1+2)] = heap32[(r0+3)];
+	r2 = r8 >> 2;
+	heap32[(r1+3)] = heap32[(r0+4)];
+	heap32[(r2)] = heap32[(r0+5)];
+	heap32[(r2+1)] = heap32[(r0+6)];
+	heap32[(r2+2)] = heap32[(r0+7)];
+	r1 = r6 >> 2;
+	heap32[(r2+3)] = heap32[(r0+8)];
+	heap32[(r1)] = heap32[(r0+9)];
+	heap32[(r1+1)] = heap32[(r0+10)];
+	heap32[(r1+2)] = heap32[(r0+11)];
+	heap32[(r1+3)] = heap32[(r0+12)];
+	r0 = 1;
+	r_g0 = r0;
+	return;
+}
+}
+
+function _ZN30btGjkEpaPenetrationDepthSolverD0Ev(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+var __label__ = 0;
+	i7 = sp + -8;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = _ZTV30btGjkEpaPenetrationDepthSolver;
+	r2 = r0 >> 2;
+	r1 = (r1 + 8)|0;
+	heap32[(r2)] = r1;
+	heap32[(g0)] = r0;
+	_ZdlPv(i7);
+	return;
+}
+
+function _ZN30btGjkEpaPenetrationDepthSolverD1Ev(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+var __label__ = 0;
+	i7 = sp + 0;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = _ZTV30btGjkEpaPenetrationDepthSolver;
+	r0 = r0 >> 2;
+	r1 = (r1 + 8)|0;
+	heap32[(r0)] = r1;
+	return;
+}
+
+function _ZN17btGjkPairDetectorD1Ev(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+var __label__ = 0;
+	i7 = sp + 0;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = _ZTV17btGjkPairDetector;
+	r0 = r0 >> 2;
+	r1 = (r1 + 8)|0;
+	heap32[(r0)] = r1;
+	return;
+}
+
+function _ZN17btGjkPairDetectorD0Ev(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+var __label__ = 0;
+	i7 = sp + -8;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = _ZTV17btGjkPairDetector;
+	r2 = r0 >> 2;
+	r1 = (r1 + 8)|0;
+	heap32[(r2)] = r1;
+	heap32[(g0)] = r0;
+	_ZdlPv(i7);
+	return;
+}
+
+function _ZN17btGjkPairDetector16getClosestPointsERKN36btDiscreteCollisionDetectorInterface17ClosestPointInputERNS0_6ResultEP12btIDebugDrawb(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+	var r6;
+	var r7;
+	var r8;
+	var r9;
+	var r10;
+	var r11;
+	var r12;
+	var r13;
+	var r14;
+	var r15;
+	var r16;
+	var r17;
+	var r18;
+	var r19;
+	var r20;
+	var r21;
+	var r22;
+	var r23;
+	var r24;
+	var r25;
+	var f0;
+	var f1;
+	var f2;
+	var f3;
+	var f4;
+	var f5;
+	var f6;
+	var f7;
+	var f8;
+	var f9;
+	var f10;
+	var f11;
+	var f12;
+	var f13;
+	var f14;
+	var f15;
+	var f16;
+	var f17;
+	var f18;
+	var f19;
+	var f20;
+	var f21;
+	var f22;
+	var f23;
+	var f24;
+	var f25;
+	var f26;
+	var f27;
+	var f28;
+	var f29;
+	var f30;
+var __label__ = 0;
+	i7 = sp + -304;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = r0 >> 2;
+	r2 = sp + -32;
+	heap32[(r1+14)] = 0;
+	r3 = r2 >> 2;
+	heap32[(fp+-8)] = 0;
+	heap32[(r3+1)] = 0;
+	r4 = heap32[(fp+1)];
+	heap32[(r3+2)] = 0;
+	r5 = sp + -96;
+	r4 = r4 >> 2;
+	heap32[(r3+3)] = 0;
+	r6 = r5 >> 2;
+	heap32[(fp+-24)] = heap32[(r4)];
+	heap32[(r6+1)] = heap32[(r4+1)];
+	heap32[(r6+2)] = heap32[(r4+2)];
+	heap32[(r6+3)] = heap32[(r4+3)];
+	heap32[(r6+4)] = heap32[(r4+4)];
+	heap32[(r6+5)] = heap32[(r4+5)];
+	heap32[(r6+6)] = heap32[(r4+6)];
+	heap32[(r6+7)] = heap32[(r4+7)];
+	heap32[(r6+8)] = heap32[(r4+8)];
+	heap32[(r6+9)] = heap32[(r4+9)];
+	heap32[(r6+10)] = heap32[(r4+10)];
+	heap32[(r6+11)] = heap32[(r4+11)];
+	f0 = heapFloat[(r4+12)];
+	f1 = heapFloat[(r4+13)];
+	f2 = heapFloat[(r4+14)];
+	r7 = sp + -160;
+	heap32[(r6+15)] = heap32[(r4+15)];
+	r8 = r7 >> 2;
+	heap32[(fp+-40)] = heap32[(r4+16)];
+	heap32[(r8+1)] = heap32[(r4+17)];
+	heap32[(r8+2)] = heap32[(r4+18)];
+	heap32[(r8+3)] = heap32[(r4+19)];
+	heap32[(r8+4)] = heap32[(r4+20)];
+	heap32[(r8+5)] = heap32[(r4+21)];
+	heap32[(r8+6)] = heap32[(r4+22)];
+	heap32[(r8+7)] = heap32[(r4+23)];
+	heap32[(r8+8)] = heap32[(r4+24)];
+	heap32[(r8+9)] = heap32[(r4+25)];
+	heap32[(r8+10)] = heap32[(r4+26)];
+	heap32[(r8+11)] = heap32[(r4+27)];
+	f3 = heapFloat[(r4+28)];
+	f4 = heapFloat[(r4+29)];
+	f5 = heapFloat[(r4+30)];
+	f6 = f0+f3;
+	f7 =                       0.5;
+	f6 = f6*f7;
+	f8 = f1+f4;
+	f8 = f8*f7;
+	f9 = f2+f5;
+	f0 = f0-f6;
+	heap32[(r8+15)] = heap32[(r4+31)];
+	f7 = f9*f7;
+	f1 = f1-f8;
+	heapFloat[(r6+12)] = f0;
+	f0 = f2-f7;
+	heapFloat[(r6+13)] = f1;
+	f1 = f3-f6;
+	heapFloat[(r6+14)] = f0;
+	f0 = f4-f8;
+	heapFloat[(r8+12)] = f1;
+	f1 = f5-f7;
+	heapFloat[(r8+13)] = f0;
+	heapFloat[(r8+14)] = f1;
+	r9 = heap32[(r1+7)];
+	r9 = r9 >> 2;
+	r10 = heap32[(fp+2)];
+	r11 = heap32[(fp+3)];
+	r9 = heap32[(r9+1)];
+	r9 = (r9 + -17)|0;
+	if(uint(r9) >uint(1)) //_LBB556_3
+{
+__label__ = 3;
+}
+else{
+	r9 = heap32[(r1+8)];
+	r9 = r9 >> 2;
+	r9 = heap32[(r9+1)];
+	r9 = (r9 + -17)|0;
+	if(uint(r9) >uint(1)) //_LBB556_3
+{
+__label__ = 3;
+}
+else{
+	r9 = (r0 + 32)|0;
+	r12 = 0;
+__label__ = 4;
+}
+}
+if (__label__ == 3){
+	r9 = (r0 + 32)|0;
+	r12 = 1;
+}
+	r13 = gNumGjkChecks;
+	r13 = r13 >> 2;
+	r14 = heap32[(r13)];
+	f0 = heapFloat[(r1+11)];
+	f1 = heapFloat[(r1+12)];
+	r14 = (r14 + 1)|0;
+	heap32[(r13)] = r14;
+	r13 = heapU8[r0+52];
+	heap32[(r1+16)] = 0;
+	heap32[(r1+1)] = 0;
+	heap32[(r1+2)] = 1065353216;
+	heap32[(r1+3)] = 0;
+	heap32[(r1+4)] = 0;
+	heap32[(r1+17)] = 0;
+	heap32[(r1+15)] = -1;
+	r14 = heap32[(r1+6)];
+	r15 = 0;
+	r16 = r14 >> 2;
+	heap8[r14+312] = r15;
+	r17 = 1;
+	heap32[(r16)] = 0;
+	heap8[r14+356] = r17;
+	heap32[(r16+73)] = 1566444395;
+	heap32[(r16+74)] = 1566444395;
+	heap32[(r16+75)] = 1566444395;
+	heap32[(r16+76)] = 0;
+	heap8[r14+352] = r15;
+	heap32[(r16+84)] = 0;
+	heap32[(r16+85)] = 0;
+	heap32[(r16+86)] = 0;
+	heap32[(r16+87)] = 0;
+	r16 = heapU8[r14+332];
+	f2 =                         0;
+	r16 = r16 & 240;
+	heap8[r14+332] = r16;
+	f1 = r13 == r15 ? f1 : f2;
+	f0 = r13 == r15 ? f0 : f2;
+	f0 = f0+f1;
+	f3 = heapFloat[(r1+3)];
+	f4 = heapFloat[(r1+2)];
+	f5 = heapFloat[(r1+1)];
+	f9 =        999999984306749440;
+_7: while(true){
+	f10 = -f5;
+	f11 = heapFloat[(r4)];
+	f12 = heapFloat[(r4+4)];
+	f13 = heapFloat[(r4+1)];
+	f14 = heapFloat[(r4+5)];
+	f11 = f11*f10;
+	f12 = f12*f4;
+	f15 = heapFloat[(r4+8)];
+	f16 = heapFloat[(r4+2)];
+	f17 = heapFloat[(r4+6)];
+	f18 = heapFloat[(r4+10)];
+	f19 = heapFloat[(r4+9)];
+	f13 = f13*f10;
+	f14 = f14*f4;
+	f11 = f11-f12;
+	f12 = f15*f3;
+	r13 = sp + -176;
+	f10 = f16*f10;
+	f15 = f17*f4;
+	f13 = f13-f14;
+	f14 = f19*f3;
+	f11 = f11-f12;
+	r14 = r13 >> 2;
+	f10 = f10-f15;
+	f12 = f18*f3;
+	f13 = f13-f14;
+	heapFloat[(fp+-44)] = f11;
+	f10 = f10-f12;
+	heapFloat[(r14+1)] = f13;
+	heapFloat[(r14+2)] = f10;
+	heap32[(r14+3)] = 0;
+	f10 = heapFloat[(r4+16)];
+	f11 = heapFloat[(r4+20)];
+	f12 = heapFloat[(r4+17)];
+	f13 = heapFloat[(r4+21)];
+	f14 = heapFloat[(r4+24)];
+	f10 = f10*f5;
+	f11 = f11*f4;
+	f15 = heapFloat[(r4+18)];
+	f16 = heapFloat[(r4+22)];
+	f17 = heapFloat[(r4+26)];
+	f18 = heapFloat[(r4+25)];
+	f12 = f12*f5;
+	f13 = f13*f4;
+	f10 = f10+f11;
+	f11 = f14*f3;
+	r14 = sp + -192;
+	f5 = f15*f5;
+	f4 = f16*f4;
+	f12 = f12+f13;
+	f13 = f18*f3;
+	f10 = f10+f11;
+	r16 = r14 >> 2;
+	f4 = f5+f4;
+	f3 = f17*f3;
+	f5 = f12+f13;
+	heapFloat[(fp+-48)] = f10;
+	f3 = f4+f3;
+	heapFloat[(r16+1)] = f5;
+	heapFloat[(r16+2)] = f3;
+	heap32[(r16+3)] = 0;
+	r16 = heap32[(r1+7)];
+	r18 = sp + -208;
+	heap32[(g0)] = r18;
+	heap32[(g0+1)] = r16;
+	heap32[(g0+2)] = r13;
+	r13 = r9 >> 2;
+	_ZNK13btConvexShape44localGetSupportVertexWithoutMarginNonVirtualERK9btVector3(i7);
+	r16 = heap32[(r13)];
+	r19 = sp + -224;
+	heap32[(g0)] = r19;
+	heap32[(g0+1)] = r16;
+	heap32[(g0+2)] = r14;
+	_ZNK13btConvexShape44localGetSupportVertexWithoutMarginNonVirtualERK9btVector3(i7);
+	r14 = r18 >> 2;
+	r16 = r19 >> 2;
+	f3 = heapFloat[(r6+8)];
+	f4 = heapFloat[(fp+-52)];
+	f5 = heapFloat[(r6+4)];
+	f10 = heapFloat[(fp+-24)];
+	f11 = heapFloat[(r6+9)];
+	f12 = heapFloat[(r14+1)];
+	f13 = heapFloat[(r6+5)];
+	f14 = heapFloat[(r6+1)];
+	f15 = heapFloat[(r8+8)];
+	f16 = heapFloat[(fp+-56)];
+	f17 = heapFloat[(r8+4)];
+	f18 = heapFloat[(fp+-40)];
+	f19 = heapFloat[(r8+9)];
+	f20 = heapFloat[(r16+1)];
+	f21 = heapFloat[(r8+5)];
+	f22 = heapFloat[(r8+1)];
+	f3 = f3*f4;
+	f11 = f11*f12;
+	f23 = heapFloat[(r6+10)];
+	f24 = heapFloat[(r14+2)];
+	f25 = heapFloat[(r6+6)];
+	f26 = heapFloat[(r6+2)];
+	f15 = f15*f16;
+	f19 = f19*f20;
+	f27 = heapFloat[(r8+10)];
+	f28 = heapFloat[(r16+2)];
+	f29 = heapFloat[(r8+6)];
+	f30 = heapFloat[(r8+2)];
+	f5 = f5*f4;
+	f13 = f13*f12;
+	f17 = f17*f16;
+	f21 = f21*f20;
+	f4 = f10*f4;
+	f10 = f14*f12;
+	f12 = f18*f16;
+	f14 = f22*f20;
+	f3 = f3+f11;
+	f11 = f23*f24;
+	f15 = f15+f19;
+	f16 = f27*f28;
+	f5 = f5+f13;
+	f13 = f25*f24;
+	f17 = f17+f21;
+	f18 = f29*f28;
+	f4 = f4+f10;
+	f10 = f26*f24;
+	f12 = f12+f14;
+	f14 = f30*f28;
+	f3 = f3+f11;
+	f11 = heapFloat[(r6+14)];
+	f15 = f15+f16;
+	f16 = heapFloat[(r8+14)];
+	f5 = f5+f13;
+	f13 = heapFloat[(r6+13)];
+	f17 = f17+f18;
+	f18 = heapFloat[(r8+13)];
+	f4 = f4+f10;
+	f10 = heapFloat[(r6+12)];
+	f12 = f12+f14;
+	f14 = heapFloat[(r8+12)];
+	f5 = f5+f13;
+	f13 = f17+f18;
+	f4 = f4+f10;
+	f10 = f12+f14;
+	f3 = f3+f11;
+	f11 = f15+f16;
+	f3 = r12 != r15 ? f3 : f2;
+	f11 = r12 != r15 ? f11 : f2;
+	f12 = f5-f13;
+	f14 = heapFloat[(r1+2)];
+	f15 = f4-f10;
+	f16 = heapFloat[(r1+1)];
+	f17 = f3-f11;
+	f18 = heapFloat[(r1+3)];
+	f16 = f16*f15;
+	f14 = f14*f12;
+	f14 = f16+f14;
+	f16 = f18*f17;
+	f14 = f14+f16;
+if(!(f14 <=f2)) //_LBB556_8
+{
+	f16 = heapFloat[(r4+32)];
+	f18 = f14*f14;
+	f16 = f16*f9;
+if(!(f18 <=f16)) //_LBB556_8
+{
+__label__ = 7;
+break _7;
+}
+}
+	r14 = heap32[(r1+6)];
+	r16 = r14 >> 2;
+	r18 = heap32[(r16)];
+_12: do {
+	if(r18 >0) //_LBB556_10
+{
+	r19 = -12;
+	f16 = heapFloat[(r16+77)];
+	r20 = (r19 - r14)|0;
+	r21 = 0;
+	r22 = r18;
+	r19 = r21;
+_14: while(true){
+	r23 = -8;
+	r24 = -4;
+	r23 = (r23 - r20)|0;
+	r24 = (r24 - r20)|0;
+	r23 = r23 >> 2;
+	r24 = r24 >> 2;
+	r25 = (r21 - r20)|0;
+	r25 = r25 >> 2;
+	f18 = heapFloat[(r23)];
+	f19 = heapFloat[(r24)];
+	f18 = f15-f18;
+	f19 = f12-f19;
+	f20 = heapFloat[(r25)];
+	f20 = f17-f20;
+	f18 = f18*f18;
+	f19 = f19*f19;
+	f18 = f18+f19;
+	f19 = f20*f20;
+	f18 = f18+f19;
+	r22 = (r22 + -1)|0;
+	r19 = f18 > f16 ? r19 : r17;
+	r20 = (r20 + -16)|0;
+	if(r22 !=0) //_LBB556_11
+{
+continue _14;
+}
+else{
+break _12;
+}
+}
+}
+else{
+	r19 = r15;
+}
+} while(0);
+	f16 = heapFloat[(r16+76)];
+	if(f16 ==f2) //_LBB556_14
+{
+	f16 = heapFloat[(r16+75)];
+if(!(f17 !=f16)) //_LBB556_13
+{
+	f16 = heapFloat[(r16+74)];
+if(!(f12 !=f16)) //_LBB556_13
+{
+	f16 = heapFloat[(r16+73)];
+	r19 = f15 != f16 ? r19 : r17;
+}
+}
+}
+	r19 = r19 & 255;
+	if(r19 ==0) //_LBB556_19
+{
+	f14 = f9-f14;
+	f16 =   9.9999999747524271e-007;
+	f18 = f9*f16;
+	if(f14 >f18) //_LBB556_21
+{
+	heapFloat[(r16+73)] = f15;
+	heapFloat[(r16+74)] = f12;
+	r18 = r18 << 4;
+	heapFloat[(r16+75)] = f17;
+	r18 = (r14 + r18)|0;
+	heap32[(r16+76)] = 0;
+	r18 = r18 >> 2;
+	heap8[r14+356] = r17;
+	heapFloat[(r18+1)] = f15;
+	heapFloat[(r18+2)] = f12;
+	heapFloat[(r18+3)] = f17;
+	heap32[(r18+4)] = 0;
+	r18 = heap32[(r16)];
+	r18 = r18 << 4;
+	r18 = (r14 + r18)|0;
+	r18 = r18 >> 2;
+	heapFloat[(r18+21)] = f4;
+	heapFloat[(r18+22)] = f5;
+	heapFloat[(r18+23)] = f3;
+	heap32[(r18+24)] = 0;
+	r18 = heap32[(r16)];
+	r18 = r18 << 4;
+	r14 = (r14 + r18)|0;
+	r14 = r14 >> 2;
+	heapFloat[(r14+41)] = f10;
+	heapFloat[(r14+42)] = f13;
+	heapFloat[(r14+43)] = f11;
+	heap32[(r14+44)] = 0;
+	r14 = heap32[(r16)];
+	r14 = (r14 + 1)|0;
+	heap32[(r16)] = r14;
+	r14 = heap32[(r1+6)];
+	heap32[(g0)] = r14;
+	_ZN22btVoronoiSimplexSolver28updateClosestVectorAndPointsEv(i7);
+	r16 = r_g0;
+	if(r16 !=0) //_LBB556_23
+{
+	r14 = r14 >> 2;
+	f5 = heapFloat[(r14+69)];
+	f4 = heapFloat[(r14+70)];
+	f3 = heapFloat[(r14+71)];
+	f10 = heapFloat[(r14+72)];
+	heapFloat[(r1+1)] = f5;
+	f11 = f5*f5;
+	f12 = f4*f4;
+	heapFloat[(r1+2)] = f4;
+	f11 = f11+f12;
+	f12 = f3*f3;
+	f11 = f11+f12;
+	heapFloat[(r1+3)] = f3;
+	heapFloat[(r1+4)] = f10;
+	if(f11 >=f16) //_LBB556_25
+{
+	f10 =   1.1920928955078125e-007;
+	f12 = f9-f11;
+	f9 = f9*f10;
+	if(f12 >f9) //_LBB556_27
+{
+	r14 = heap32[(r1+16)];
+	r16 = (r14 + 1)|0;
+	heap32[(r1+16)] = r16;
+	if(r14 <1001) //_LBB556_29
+{
+	r14 = heap32[(r1+6)];
+	r14 = r14 >> 2;
+	r16 = heap32[(r14)];
+	f9 = f11;
+	if(r16 !=4) //_LBB556_5
+{
+continue _7;
+}
+else{
+__label__ = 29;
+break _7;
+}
+}
+else{
+__label__ = 27;
+break _7;
+}
+}
+else{
+__label__ = 25;
+break _7;
+}
+}
+else{
+__label__ = 23;
+break _7;
+}
+}
+else{
+__label__ = 21;
+break _7;
+}
+}
+else{
+__label__ = 19;
+break _7;
+}
+}
+else{
+__label__ = 17;
+break _7;
+}
+}
+_29: do {
+switch(__label__ ){//multiple entries
+case 7:
+	heap32[(r1+17)] = 10;
+__label__ = 30;
+break _29;
+break;
+case 29:
+	heap32[(r1+1)] = heap32[(r14+69)];
+	heap32[(r1+2)] = heap32[(r14+70)];
+	heap32[(r1+3)] = heap32[(r14+71)];
+	r17 = 0;
+	heap32[(r1+4)] = heap32[(r14+72)];
+	heap32[(r1+17)] = 13;
+__label__ = 37;
+break _29;
+break;
+case 27:
+	r6 = _2E_str425;
+	heap32[(g0)] = r6;
+	heap32[(g0+1)] = r16;
+	printf(i7);
+	r6 = heap32[(r13)];
+	r8 = heap32[(r1+7)];
+	r6 = r6 >> 2;
+	r8 = r8 >> 2;
+	f2 = heapFloat[(r1+3)];
+	f3 = heapFloat[(r1+2)];
+	f4 = heapFloat[(r1+1)];
+	r6 = heap32[(r6+1)];
+	r8 = heap32[(r8+1)];
+	r9 = _2E_str1426;
+	f4 = f4; //fstod f4, f4
+	f3 = f3; //fstod f3, f3
+	f2 = f2; //fstod f2, f2
+	f5 = f11; //fstod f11, f5
+	heap32[(g0)] = r9;
+	llvm_writeDouble((i7+8),f4);
+	llvm_writeDouble((i7+16),f3);
+	llvm_writeDouble((i7+24),f2);
+	llvm_writeDouble((i7+32),f5);
+	heap32[(g0+10)] = r8;
+	heap32[(g0+11)] = r6;
+	f2 =                         0;
+	r17 = 0;
+	printf(i7);
+__label__ = 37;
+break _29;
+break;
+case 25:
+	r6 = heap32[(r1+6)];
+	r6 = r6 >> 2;
+	heap32[(r1+1)] = heap32[(r6+69)];
+	heap32[(r1+2)] = heap32[(r6+70)];
+	heap32[(r1+3)] = heap32[(r6+71)];
+	heap32[(r1+4)] = heap32[(r6+72)];
+	heap32[(r1+17)] = 12;
+	f9 = f11;
+__label__ = 30;
+break _29;
+break;
+case 23:
+	heap32[(r1+17)] = 6;
+__label__ = 30;
+break _29;
+break;
+case 21:
+	heap32[(r1+17)] = 3;
+__label__ = 30;
+break _29;
+break;
+case 19:
+	r6 = 11;
+	r8 = 2;
+	r6 = f14 > f2 ? r6 : r8;
+	heap32[(r1+17)] = r6;
+__label__ = 30;
+break _29;
+break;
+case 17:
+	heap32[(r1+17)] = 1;
+__label__ = 30;
+break;
+}
+} while(0);
+if (__label__ == 30){
+	r6 = heap32[(r1+6)];
+	heap32[(g0)] = r6;
+	r6 = r6 >> 2;
+	_ZN22btVoronoiSimplexSolver28updateClosestVectorAndPointsEv(i7);
+	f3 = heapFloat[(r6+65)];
+	f2 = heapFloat[(r6+61)];
+	f4 = heapFloat[(r6+66)];
+	f5 = heapFloat[(r6+62)];
+	f10 = heapFloat[(r6+67)];
+	f11 = heapFloat[(r6+63)];
+	f2 = f2-f3;
+	f5 = f5-f4;
+	heapFloat[(fp+-8)] = f2;
+	f2 = f11-f10;
+	heapFloat[(r3+1)] = f5;
+	heapFloat[(r3+2)] = f2;
+	heap32[(r3+3)] = 0;
+	f2 = heapFloat[(r1+1)];
+	f5 = heapFloat[(r1+2)];
+	f11 = heapFloat[(r1+3)];
+	f2 = f2*f2;
+	f5 = f5*f5;
+	f2 = f2+f5;
+	f5 = f11*f11;
+	f2 = f2+f5;
+	f5 = f2; //fstod f2, f5
+	f11 =                    0.0001;
+if(!(f5 >=f11)) //_LBB556_33
+{
+	heap32[(r1+17)] = 5;
+}
+	f5 =   1.4210854715202004e-014;
+	if(f2 <=f5) //_LBB556_37
+{
+	f2 =                         0;
+	r17 = 0;
+	heap32[(r1+15)] = 2;
+}
+else{
+	heapFloat[(g0)] = f2;
+	sqrtf(i7);
+	f5 =                         1;
+	f2 = f5/f_g0;
+	f11 = heapFloat[(fp+-8)];
+	f11 = f11*f2;
+	heapFloat[(fp+-8)] = f11;
+	f11 = heapFloat[(r3+1)];
+	f11 = f11*f2;
+	heapFloat[(r3+1)] = f11;
+	f11 = heapFloat[(r3+2)];
+	f11 = f11*f2;
+	heapFloat[(r3+2)] = f11;
+	heapFloat[(g0)] = f9;
+	sqrtf(i7);
+	f9 = f_g0;
+	f11 =                         0;
+	if(f9 >f11) //_LBB556_36
+{
+	f9 = f1/f9;
+	f11 = heapFloat[(r1+3)];
+	f12 = heapFloat[(r1+2)];
+	f13 = heapFloat[(r1+1)];
+	f13 = f13*f9;
+	f12 = f12*f9;
+	f9 = f11*f9;
+	f2 = f5/f2;
+	f3 = f3+f13;
+	f4 = f4+f12;
+	f10 = f10+f9;
+	f2 = f2-f0;
+	heap32[(r1+15)] = 1;
+}
+else{
+	r0 = _2E_str2427;
+	r1 = _2E_str3428;
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r1;
+	heap32[(g0+2)] = 320;
+	_assert(i7);
+}
+}
+}
+	r6 = heap32[(r1+18)];
+	if(r6 ==0) //_LBB556_45
+{
+__label__ = 42;
+}
+else{
+	r6 = heap32[(r1+5)];
+	if(r6 ==0) //_LBB556_45
+{
+__label__ = 42;
+}
+else{
+	r8 = heap32[(r1+17)];
+	if(r8 ==0) //_LBB556_45
+{
+__label__ = 42;
+}
+else{
+	f5 = f2+f0;
+	f5 = f5; //fstod f5, f5
+	f9 =                      0.01;
+	if(f5 <f9) //_LBB556_43
+{
+__label__ = 44;
+}
+else{
+	r8 = r17 & 255;
+	if(r8 ==1) //_LBB556_44
+{
+__label__ = 60;
+}
+else{
+__label__ = 44;
+}
+}
+}
+}
+}
+if (__label__ == 42){
+	r6 = r17 & 255;
+	if(r6 ==1) //_LBB556_44
+{
+__label__ = 60;
+}
+else{
+	r6 = heap32[(r1+5)];
+	if(r6 ==0) //_LBB556_62
+{
+__label__ = 59;
+}
+else{
+__label__ = 44;
+}
+}
+}
+_58: do {
+if (__label__ == 44){
+	r8 = gNumDeepPenetrationChecks;
+	r8 = r8 >> 2;
+	r9 = heap32[(r8)];
+	r9 = (r9 + 1)|0;
+	heap32[(r8)] = r9;
+	heap32[(r1+1)] = 0;
+	heap32[(r1+2)] = 0;
+	heap32[(r1+3)] = 0;
+	heap32[(r1+4)] = 0;
+	r8 = r6 >> 2;
+	r8 = heap32[(r8)];
+	r8 = r8 >> 2;
+	r8 = heap32[(r8+2)];
+	r9 = heap32[(r4+33)];
+	r12 = heap32[(r13)];
+	r13 = heap32[(r1+7)];
+	r14 = heap32[(r1+6)];
+	r0 = (r0 + 4)|0;
+	r15 = sp + -240;
+	r16 = sp + -256;
+	heap32[(g0)] = r6;
+	heap32[(g0+1)] = r14;
+	heap32[(g0+2)] = r13;
+	heap32[(g0+3)] = r12;
+	heap32[(g0+4)] = r5;
+	heap32[(g0+5)] = r7;
+	heap32[(g0+6)] = r0;
+	heap32[(g0+7)] = r15;
+	heap32[(g0+8)] = r16;
+	heap32[(g0+9)] = r11;
+	heap32[(g0+10)] = r9;
+	__FUNCTION_TABLE__[(r8)>>2](i7);
+	r0 = r_g0;
+	if(r0 ==0) //_LBB556_57
+{
+	f5 = heapFloat[(r1+1)];
+	f9 = heapFloat[(r1+2)];
+	f11 = heapFloat[(r1+3)];
+	f5 = f5*f5;
+	f9 = f9*f9;
+	f5 = f5+f9;
+	f9 = f11*f11;
+	f5 = f5+f9;
+	f9 =                         0;
+	if(f5 <=f9) //_LBB556_62
+{
+__label__ = 59;
+break _58;
+}
+else{
+	r0 = r15 >> 2;
+	r5 = r16 >> 2;
+	f5 = heapFloat[(r0+1)];
+	f9 = heapFloat[(r5+1)];
+	f11 = heapFloat[(fp+-60)];
+	f12 = heapFloat[(fp+-64)];
+	f11 = f11-f12;
+	f5 = f5-f9;
+	f9 = heapFloat[(r0+2)];
+	f12 = heapFloat[(r5+2)];
+	f9 = f9-f12;
+	f11 = f11*f11;
+	f5 = f5*f5;
+	f5 = f11+f5;
+	f9 = f9*f9;
+	f5 = f5+f9;
+	heapFloat[(g0)] = f5;
+	sqrtf(i7);
+	f0 = f_g0-f0;
+	r0 = r17 & 255;
+if(!(r0 !=1)) //_LBB556_60
+{
+	if(f0 >=f2) //_LBB556_61
+{
+	heap32[(r1+15)] = 5;
+__label__ = 59;
+break _58;
+}
+}
+	f2 = heapFloat[(r1+1)];
+	f3 = heapFloat[(r1+2)];
+	f4 = heapFloat[(r1+3)];
+	f10 = heapFloat[(fp+-64)];
+	f5 = heapFloat[(r5+1)];
+	f9 = heapFloat[(r5+2)];
+	heapFloat[(fp+-8)] = f2;
+	heapFloat[(r3+1)] = f3;
+	heapFloat[(r3+2)] = f4;
+	f11 = f2*f2;
+	f12 = f3*f3;
+	heap32[(r3+3)] = heap32[(r1+4)];
+	f11 = f11+f12;
+	f12 = f4*f4;
+	f11 = f11+f12;
+	heapFloat[(g0)] = f11;
+	sqrtf(i7);
+	f12 =                         1;
+	f11 = f12/f_g0;
+	f12 = heapFloat[(fp+-8)];
+	f12 = f12*f11;
+	heapFloat[(fp+-8)] = f12;
+	f12 = heapFloat[(r3+1)];
+	f12 = f12*f11;
+	heapFloat[(r3+1)] = f12;
+	f12 = heapFloat[(r3+2)];
+	f2 = f2*f1;
+	f13 = f3*f1;
+	f1 = f4*f1;
+	f11 = f12*f11;
+	f3 = f10+f2;
+	f4 = f5+f13;
+	f10 = f9+f1;
+	heapFloat[(r3+2)] = f11;
+	heap32[(r1+15)] = 6;
+	f2 = f0;
+__label__ = 60;
+break _58;
+}
+}
+else{
+	r16 = r16 >> 2;
+	r15 = r15 >> 2;
+	f0 = heapFloat[(r16+1)];
+	f1 = heapFloat[(r15+1)];
+	f5 = heapFloat[(fp+-64)];
+	f9 = heapFloat[(fp+-60)];
+	f0 = f0-f1;
+	f1 = f5-f9;
+	f5 = heapFloat[(r16+2)];
+	f9 = heapFloat[(r15+2)];
+	f5 = f5-f9;
+	f9 = f1*f1;
+	f11 = f0*f0;
+	f9 = f9+f11;
+	f11 = f5*f5;
+	f9 = f9+f11;
+	f11 =   1.4210854715202004e-014;
+	if(f9 <=f11) //_LBB556_50
+{
+	f1 = heapFloat[(r1+1)];
+	f0 = heapFloat[(r1+2)];
+	f5 = heapFloat[(r1+3)];
+	f9 = f1*f1;
+	f12 = f0*f0;
+	f9 = f9+f12;
+	f13 = f5*f5;
+	f12 = heapFloat[(r1+4)];
+	f9 = f9+f13;
+}
+else{
+	f12 =                         0;
+}
+	if(f9 <=f11) //_LBB556_56
+{
+	heap32[(r1+15)] = 9;
+__label__ = 59;
+break _58;
+}
+else{
+	heapFloat[(g0)] = f9;
+	sqrtf(i7);
+	f9 = f_g0;
+	f11 = heapFloat[(r15+1)];
+	f13 = heapFloat[(r16+1)];
+	f14 = heapFloat[(fp+-60)];
+	f15 = heapFloat[(fp+-64)];
+	f14 = f14-f15;
+	f11 = f11-f13;
+	f13 = heapFloat[(r15+2)];
+	f15 = heapFloat[(r16+2)];
+	f13 = f13-f15;
+	f14 = f14*f14;
+	f11 = f11*f11;
+	f11 = f14+f11;
+	f13 = f13*f13;
+	f11 = f11+f13;
+	heapFloat[(g0)] = f11;
+	sqrtf(i7);
+	f11 = -f_g0;
+	r15 = r17 & 255;
+if(!(r15 !=1)) //_LBB556_54
+{
+	if(f2 <=f11) //_LBB556_55
+{
+	heap32[(r1+15)] = 8;
+__label__ = 59;
+break _58;
+}
+}
+	f2 =                         1;
+	f2 = f2/f9;
+	f3 = heapFloat[(fp+-64)];
+	f4 = heapFloat[(r16+1)];
+	f10 = heapFloat[(r16+2)];
+	f1 = f1*f2;
+	f0 = f0*f2;
+	heapFloat[(fp+-8)] = f1;
+	f1 = f5*f2;
+	heapFloat[(r3+1)] = f0;
+	heapFloat[(r3+2)] = f1;
+	heapFloat[(r3+3)] = f12;
+	heap32[(r1+15)] = 3;
+	f2 = f11;
+__label__ = 60;
+}
+}
+}
+} while(0);
+if (__label__ == 59){
+	r0 = r17 & 255;
+	if(r0 ==0) //_LBB556_66
+{
+__label__ = 63;
+}
+else{
+__label__ = 60;
+}
+}
+_81: do {
+if (__label__ == 60){
+	f0 =                         0;
+if(!(f2 <f0)) //_LBB556_65
+{
+	f0 = f2*f2;
+	f1 = heapFloat[(r4+32)];
+	if(f0 >=f1) //_LBB556_66
+{
+break _81;
+}
+}
+	heap32[(r1+1)] = heap32[(fp+-8)];
+	heap32[(r1+2)] = heap32[(r3+1)];
+	heap32[(r1+3)] = heap32[(r3+2)];
+	heap32[(r1+4)] = heap32[(r3+3)];
+	r0 = r10 >> 2;
+	heapFloat[(r1+14)] = f2;
+	r0 = heap32[(r0)];
+	r0 = r0 >> 2;
+	r0 = heap32[(r0+4)];
+	r1 = sp + -16;
+	f0 = f3+f6;
+	r3 = r1 >> 2;
+	f1 = f4+f8;
+	heapFloat[(fp+-4)] = f0;
+	f0 = f10+f7;
+	heapFloat[(r3+1)] = f1;
+	heapFloat[(r3+2)] = f0;
+	heap32[(r3+3)] = 0;
+	heap32[(g0)] = r10;
+	heap32[(g0+1)] = r2;
+	heap32[(g0+2)] = r1;
+	heapFloat[(g0+3)] = f2;
+	__FUNCTION_TABLE__[(r0)>>2](i7);
+}
+} while(0);
+	return;
+}
+
+function _ZN20btPersistentManifold18removeContactPointEi(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+var __label__ = 0;
+	i7 = sp + -16;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = r0 >> 2;
+	r2 = heap32[(r1+279)];
+	r3 = (r2 + -1)|0;
+	r4 = heap32[(fp+1)];
+	if(r3 ==r4) //_LBB557_2
+{
+	r3 = (r2 * 276)|0;
+	r0 = (r0 + r3)|0;
+	r0 = r0 >> 2;
+	r0 = heap32[(r0+-41)];
+	if(r0 !=0) //_LBB557_4
+{
+	r1 = _2E_str434;
+	r2 = _2E_str483;
+	heap32[(g0)] = r1;
+	heap32[(g0+1)] = r2;
+	heap32[(g0+2)] = 160;
+	_assert(i7);
+}
+}
+else{
+	r4 = (r4 * 276)|0;
+	r5 = (r0 + 4)|0;
+	r3 = (r3 * 276)|0;
+	r4 = (r5 + r4)|0;
+	r3 = (r5 + r3)|0;
+	r2 = (r2 * 276)|0;
+	heap32[(g0)] = r4;
+	heap32[(g0+1)] = r3;
+	heap32[(g0+2)] = 276;
+	r0 = (r0 + r2)|0;
+	memcpy(i7);
+	r2 = r0 >> 2;
+	heap32[(r2+-41)] = 0;
+	heap32[(r2+-16)] = 0;
+	heap32[(r2+-8)] = 0;
+	heap32[(r2)] = 0;
+	r3 = 0;
+	heap32[(r2+-40)] = 0;
+	heap8[r0+-156] = r3;
+	heap32[(r2+-38)] = 0;
+	heap32[(r2+-37)] = 0;
+	heap32[(r2+-32)] = 0;
+	r2 = heap32[(r1+279)];
+}
+	r0 = (r2 + -1)|0;
+	heap32[(r1+279)] = r0;
+	return;
+}
+
+function _ZN20btPersistentManifold20refreshContactPointsERK11btTransformS2_(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+	var r6;
+	var f0;
+	var f1;
+	var f2;
+	var f3;
+	var f4;
+	var f5;
+	var f6;
+	var f7;
+	var f8;
+	var f9;
+	var f10;
+var __label__ = 0;
+	i7 = sp + -8;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = r0 >> 2;
+	r2 = heap32[(r1+279)];
+	r3 = (r2 + -1)|0;
+	if(r3 >-1) //_LBB558_2
+{
+	r3 = heap32[(fp+1)];
+	r4 = heap32[(fp+2)];
+_3: while(true){
+	r5 = (r2 * 69)|0;
+	r5 = r5 << 2;
+	r5 = (r0 + r5)|0;
+	r6 = r3 >> 2;
+	r5 = r5 >> 2;
+	f0 = heapFloat[(r5+-68)];
+	f1 = heapFloat[(r6)];
+	f2 = heapFloat[(r5+-67)];
+	f3 = heapFloat[(r6+1)];
+	f4 = heapFloat[(r6+4)];
+	f5 = heapFloat[(r6+5)];
+	f1 = f1*f0;
+	f3 = f3*f2;
+	f6 = heapFloat[(r5+-66)];
+	f7 = heapFloat[(r6+2)];
+	f8 = heapFloat[(r6+8)];
+	f9 = heapFloat[(r6+9)];
+	f10 = heapFloat[(r6+6)];
+	f4 = f4*f0;
+	f5 = f5*f2;
+	f1 = f1+f3;
+	f3 = f7*f6;
+	f7 = heapFloat[(r6+10)];
+	f0 = f8*f0;
+	f2 = f9*f2;
+	f4 = f4+f5;
+	f5 = f10*f6;
+	f1 = f1+f3;
+	f3 = heapFloat[(r6+12)];
+	f8 = heapFloat[(r6+14)];
+	f9 = heapFloat[(r6+13)];
+	f4 = f4+f5;
+	f0 = f0+f2;
+	f2 = f7*f6;
+	f1 = f1+f3;
+	f0 = f0+f2;
+	f2 = f4+f9;
+	heapFloat[(r5+-56)] = f1;
+	f0 = f0+f8;
+	heapFloat[(r5+-55)] = f2;
+	heapFloat[(r5+-54)] = f0;
+	heap32[(r5+-53)] = 0;
+	r6 = r4 >> 2;
+	f0 = heapFloat[(r5+-64)];
+	f1 = heapFloat[(r6)];
+	f2 = heapFloat[(r5+-63)];
+	f3 = heapFloat[(r6+1)];
+	f4 = heapFloat[(r6+4)];
+	f5 = heapFloat[(r6+5)];
+	f1 = f1*f0;
+	f3 = f3*f2;
+	f6 = heapFloat[(r5+-62)];
+	f7 = heapFloat[(r6+2)];
+	f8 = heapFloat[(r6+8)];
+	f9 = heapFloat[(r6+9)];
+	f10 = heapFloat[(r6+6)];
+	f4 = f4*f0;
+	f5 = f5*f2;
+	f1 = f1+f3;
+	f3 = f7*f6;
+	f7 = heapFloat[(r6+10)];
+	f0 = f8*f0;
+	f2 = f9*f2;
+	f4 = f4+f5;
+	f5 = f10*f6;
+	f1 = f1+f3;
+	f3 = heapFloat[(r6+12)];
+	f8 = heapFloat[(r6+14)];
+	f9 = heapFloat[(r6+13)];
+	f4 = f4+f5;
+	f0 = f0+f2;
+	f2 = f7*f6;
+	f1 = f1+f3;
+	f0 = f0+f2;
+	f2 = f4+f9;
+	heapFloat[(r5+-60)] = f1;
+	f0 = f0+f8;
+	heapFloat[(r5+-59)] = f2;
+	heapFloat[(r5+-58)] = f0;
+	heap32[(r5+-57)] = 0;
+	f0 = heapFloat[(r5+-55)];
+	f1 = heapFloat[(r5+-59)];
+	f2 = heapFloat[(r5+-56)];
+	f3 = heapFloat[(r5+-60)];
+	f2 = f2-f3;
+	f3 = heapFloat[(r5+-52)];
+	f0 = f0-f1;
+	f1 = heapFloat[(r5+-51)];
+	f4 = heapFloat[(r5+-54)];
+	f5 = heapFloat[(r5+-58)];
+	f6 = heapFloat[(r5+-50)];
+	f4 = f4-f5;
+	f2 = f2*f3;
+	f0 = f0*f1;
+	f0 = f2+f0;
+	f1 = f4*f6;
+	f0 = f0+f1;
+	heapFloat[(r5+-48)] = f0;
+	r6 = heap32[(r5+-32)];
+	r2 = (r2 + -1)|0;
+	r6 = (r6 + 1)|0;
+	heap32[(r5+-32)] = r6;
+if(!(r2 !=0)) //_LBB558_3
+{
+break _3;
+}
+}
+	r2 = heap32[(r1+279)];
+}
+	r2 = (r2 + -1)|0;
+_7: do {
+if(!(r2 <0)) //_LBB558_11
+{
+_8: while(true){
+	r3 = r2;
+	r2 = (r3 * 69)|0;
+	r2 = r2 << 2;
+	r2 = (r0 + r2)|0;
+	r2 = r2 >> 2;
+	f0 = heapFloat[(r2+21)];
+	f1 = heapFloat[(r1+280)];
+	if(f0 <=f1) //_LBB558_8
+{
+	f2 = heapFloat[(r2+17)];
+	f3 = heapFloat[(r2+18)];
+	f4 = heapFloat[(r2+19)];
+	f5 = heapFloat[(r2+13)];
+	f2 = f2*f0;
+	f6 = heapFloat[(r2+14)];
+	f3 = f3*f0;
+	f7 = heapFloat[(r2+9)];
+	f2 = f5-f2;
+	f5 = heapFloat[(r2+10)];
+	f3 = f6-f3;
+	f6 = heapFloat[(r2+15)];
+	f0 = f4*f0;
+	f2 = f7-f2;
+	f3 = f5-f3;
+	f4 = heapFloat[(r2+11)];
+	f0 = f6-f0;
+	f0 = f4-f0;
+	f2 = f2*f2;
+	f3 = f3*f3;
+	f2 = f2+f3;
+	f0 = f0*f0;
+	f1 = f1*f1;
+	f0 = f2+f0;
+if(!(f1 >=f0)) //_LBB558_10
+{
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r3;
+	_ZN20btPersistentManifold18removeContactPointEi(i7);
+}
+}
+else{
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r3;
+	_ZN20btPersistentManifold18removeContactPointEi(i7);
+}
+	r2 = (r3 + -1)|0;
+	if(r3 !=0) //_LBB558_6
+{
+continue _8;
+}
+else{
+break _7;
+}
+}
+}
+} while(0);
+	return;
+}
+
+function _ZN25btTriangleRaycastCallback15processTriangleEP9btVector3ii(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+	var r6;
+	var f0;
+	var f1;
+	var f2;
+	var f3;
+	var f4;
+	var f5;
+	var f6;
+	var f7;
+	var f8;
+	var f9;
+	var f10;
+	var f11;
+	var f12;
+	var f13;
+	var f14;
+	var f15;
+	var f16;
+	var f17;
+	var f18;
+	var f19;
+	var f20;
+	var f21;
+	var f22;
+	var f23;
+	var f24;
+var __label__ = 0;
+	i7 = sp + -56;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp+1)];
+	r0 = r0 >> 2;
+	f0 = heapFloat[(r0+6)];
+	f1 = heapFloat[(r0+2)];
+	f2 = heapFloat[(r0+10)];
+	f3 = heapFloat[(r0+5)];
+	f4 = heapFloat[(r0+1)];
+	f5 = heapFloat[(r0+9)];
+	f6 = heapFloat[(r0+4)];
+	f7 = heapFloat[(r0)];
+	f8 = heapFloat[(r0+8)];
+	f9 = f3-f4;
+	f10 = f2-f1;
+	f11 = f0-f1;
+	f12 = f5-f4;
+	f13 = f8-f7;
+	f14 = f6-f7;
+	f15 = f9*f10;
+	f16 = f11*f12;
+	f15 = f15-f16;
+	r0 = sp + -32;
+	f11 = f11*f13;
+	f10 = f14*f10;
+	f10 = f11-f10;
+	r1 = r0 >> 2;
+	heapFloat[(fp+-8)] = f15;
+	f11 = f14*f12;
+	f9 = f9*f13;
+	f9 = f11-f9;
+	heapFloat[(r1+1)] = f10;
+	r2 = heap32[(fp)];
+	heapFloat[(r1+2)] = f9;
+	r3 = r2 >> 2;
+	heap32[(r1+3)] = 0;
+	f11 = heapFloat[(r3+1)];
+	f12 = heapFloat[(r3+2)];
+	f13 = heapFloat[(r3+5)];
+	f14 = heapFloat[(r3+6)];
+	f16 = heapFloat[(r3+3)];
+	f17 = heapFloat[(r3+7)];
+	f18 = f15*f11;
+	f19 = f10*f12;
+	f20 = f15*f13;
+	f21 = f10*f14;
+	f22 = f7*f15;
+	f23 = f4*f10;
+	f18 = f18+f19;
+	f19 = f9*f16;
+	f20 = f20+f21;
+	f21 = f9*f17;
+	f22 = f22+f23;
+	f23 = f1*f9;
+	f18 = f18+f19;
+	f19 = f22+f23;
+	f20 = f20+f21;
+	f18 = f18-f19;
+	f19 = f20-f19;
+	f20 = f18*f19;
+	f21 =                         0;
+_1: do {
+if(!(f20 >=f21)) //_LBB559_11
+{
+	r4 = heap32[(r3+9)];
+	r4 = r4 & 1;
+if(!(r4 ==0)) //_LBB559_3
+{
+	if(f18 >f21) //_LBB559_11
+{
+break _1;
+}
+}
+	f19 = f18-f19;
+	f19 = f18/f19;
+	f20 = heapFloat[(r3+10)];
+if(!(f20 <=f19)) //_LBB559_11
+{
+	f20 =                         1;
+	f22 = f20-f19;
+	f16 = f16*f22;
+	f17 = f17*f19;
+	f12 = f12*f22;
+	f14 = f14*f19;
+	f11 = f11*f22;
+	f13 = f13*f19;
+	f16 = f16+f17;
+	f12 = f12+f14;
+	f11 = f11+f13;
+	f1 = f1-f16;
+	f3 = f3-f12;
+	f7 = f7-f11;
+	f0 = f0-f16;
+	f4 = f4-f12;
+	f6 = f6-f11;
+	f13 = f15*f15;
+	f14 = f10*f10;
+	f17 = f4*f0;
+	f22 = f1*f3;
+	f23 = f1*f6;
+	f24 = f7*f0;
+	f13 = f13+f14;
+	f14 = f9*f9;
+	f17 = f17-f22;
+	f22 = f23-f24;
+	f13 = f13+f14;
+	f14 =  -9.9999997473787516e-005;
+	f23 = f7*f3;
+	f24 = f4*f6;
+	f23 = f23-f24;
+	f14 = f13*f14;
+	f17 = f17*f15;
+	f22 = f22*f10;
+	f17 = f17+f22;
+	f22 = f23*f9;
+	f17 = f17+f22;
+if(!(f17 <f14)) //_LBB559_11
+{
+	f2 = f2-f16;
+	f5 = f5-f12;
+	f8 = f8-f11;
+	f11 = f3*f2;
+	f12 = f0*f5;
+	f0 = f0*f8;
+	f16 = f6*f2;
+	f11 = f11-f12;
+	f0 = f0-f16;
+	f6 = f6*f5;
+	f3 = f3*f8;
+	f11 = f11*f15;
+	f0 = f0*f10;
+	f3 = f6-f3;
+	f0 = f11+f0;
+	f3 = f3*f9;
+	f0 = f0+f3;
+if(!(f0 <f14)) //_LBB559_11
+{
+	f0 = f5*f1;
+	f3 = f2*f4;
+	f2 = f2*f7;
+	f1 = f8*f1;
+	f0 = f0-f3;
+	f1 = f2-f1;
+	f2 = f8*f4;
+	f3 = f5*f7;
+	f0 = f0*f15;
+	f1 = f1*f10;
+	f2 = f2-f3;
+	f0 = f0+f1;
+	f1 = f2*f9;
+	f0 = f0+f1;
+if(!(f0 <f14)) //_LBB559_11
+{
+	r4 = heap32[(fp+2)];
+	r5 = heap32[(fp+3)];
+	heapFloat[(g0)] = f13;
+	sqrtf(i7);
+	f0 = f20/f_g0;
+	f1 = heapFloat[(fp+-8)];
+	f1 = f1*f0;
+	heapFloat[(fp+-8)] = f1;
+	f2 = heapFloat[(r1+1)];
+	f2 = f2*f0;
+	heapFloat[(r1+1)] = f2;
+	f3 = heapFloat[(r1+2)];
+	f0 = f3*f0;
+	heapFloat[(r1+2)] = f0;
+	r1 = heap32[(r3)];
+	r1 = r1 >> 2;
+	r1 = heap32[(r1+3)];
+	r6 = heap32[(r3+9)];
+	r6 = r6 & 2;
+	if(r6 !=0) //_LBB559_9
+{
+__label__ = 9;
+}
+else{
+	if(f18 >f21) //_LBB559_10
+{
+__label__ = 10;
+}
+else{
+__label__ = 9;
+}
+}
+if (__label__ == 9){
+	r0 = sp + -16;
+	f1 = -f1;
+	r6 = r0 >> 2;
+	f2 = -f2;
+	heapFloat[(fp+-4)] = f1;
+	f0 = -f0;
+	heapFloat[(r6+1)] = f2;
+	heapFloat[(r6+2)] = f0;
+	heap32[(r6+3)] = 0;
+}
+	heap32[(g0)] = r2;
+	heap32[(g0+1)] = r0;
+	heapFloat[(g0+2)] = f19;
+	heap32[(g0+3)] = r4;
+	heap32[(g0+4)] = r5;
+	__FUNCTION_TABLE__[(r1)>>2](i7);
+	heapFloat[(r3+10)] = f_g0;
+}
+}
+}
+}
+}
+} while(0);
+	return;
+}
+
+function _ZN28btTriangleConvexcastCallbackC2EPK13btConvexShapeRK11btTransformS5_S5_f(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+var __label__ = 0;
+	i7 = sp + 0;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = _ZTV28btTriangleConvexcastCallback;
+	r0 = r0 >> 2;
+	r1 = (r1 + 8)|0;
+	r2 = heap32[(fp+2)];
+	r3 = heap32[(fp+1)];
+	heap32[(r0)] = r1;
+	r1 = r2 >> 2;
+	heap32[(r0+1)] = r3;
+	heap32[(r0+2)] = heap32[(r1)];
+	heap32[(r0+3)] = heap32[(r1+1)];
+	heap32[(r0+4)] = heap32[(r1+2)];
+	heap32[(r0+5)] = heap32[(r1+3)];
+	heap32[(r0+6)] = heap32[(r1+4)];
+	heap32[(r0+7)] = heap32[(r1+5)];
+	heap32[(r0+8)] = heap32[(r1+6)];
+	heap32[(r0+9)] = heap32[(r1+7)];
+	heap32[(r0+10)] = heap32[(r1+8)];
+	heap32[(r0+11)] = heap32[(r1+9)];
+	heap32[(r0+12)] = heap32[(r1+10)];
+	heap32[(r0+13)] = heap32[(r1+11)];
+	heap32[(r0+14)] = heap32[(r1+12)];
+	heap32[(r0+15)] = heap32[(r1+13)];
+	r2 = heap32[(fp+3)];
+	heap32[(r0+16)] = heap32[(r1+14)];
+	r2 = r2 >> 2;
+	heap32[(r0+17)] = heap32[(r1+15)];
+	heap32[(r0+18)] = heap32[(r2)];
+	heap32[(r0+19)] = heap32[(r2+1)];
+	heap32[(r0+20)] = heap32[(r2+2)];
+	heap32[(r0+21)] = heap32[(r2+3)];
+	heap32[(r0+22)] = heap32[(r2+4)];
+	heap32[(r0+23)] = heap32[(r2+5)];
+	heap32[(r0+24)] = heap32[(r2+6)];
+	heap32[(r0+25)] = heap32[(r2+7)];
+	heap32[(r0+26)] = heap32[(r2+8)];
+	heap32[(r0+27)] = heap32[(r2+9)];
+	heap32[(r0+28)] = heap32[(r2+10)];
+	heap32[(r0+29)] = heap32[(r2+11)];
+	heap32[(r0+30)] = heap32[(r2+12)];
+	heap32[(r0+31)] = heap32[(r2+13)];
+	r1 = heap32[(fp+4)];
+	heap32[(r0+32)] = heap32[(r2+14)];
+	r1 = r1 >> 2;
+	heap32[(r0+33)] = heap32[(r2+15)];
+	heap32[(r0+34)] = heap32[(r1)];
+	heap32[(r0+35)] = heap32[(r1+1)];
+	heap32[(r0+36)] = heap32[(r1+2)];
+	heap32[(r0+37)] = heap32[(r1+3)];
+	heap32[(r0+38)] = heap32[(r1+4)];
+	heap32[(r0+39)] = heap32[(r1+5)];
+	heap32[(r0+40)] = heap32[(r1+6)];
+	heap32[(r0+41)] = heap32[(r1+7)];
+	heap32[(r0+42)] = heap32[(r1+8)];
+	heap32[(r0+43)] = heap32[(r1+9)];
+	heap32[(r0+44)] = heap32[(r1+10)];
+	heap32[(r0+45)] = heap32[(r1+11)];
+	heap32[(r0+46)] = heap32[(r1+12)];
+	heap32[(r0+47)] = heap32[(r1+13)];
+	heap32[(r0+48)] = heap32[(r1+14)];
+	heap32[(r0+49)] = heap32[(r1+15)];
+	heap32[(r0+50)] = 1065353216;
+	heap32[(r0+51)] = heap32[(fp+5)];
+	return;
+}
+
+function _ZN28btTriangleConvexcastCallbackD1Ev(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+var __label__ = 0;
+	i7 = sp + 0;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = _ZTV18btTriangleCallback;
+	r0 = r0 >> 2;
+	r1 = (r1 + 8)|0;
+	heap32[(r0)] = r1;
+	return;
+}
+
+function _ZN28btTriangleConvexcastCallbackD0Ev(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+var __label__ = 0;
+	i7 = sp + -8;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = _ZTV18btTriangleCallback;
+	r2 = r0 >> 2;
+	r1 = (r1 + 8)|0;
+	heap32[(r2)] = r1;
+	heap32[(g0)] = r0;
+	_ZdlPv(i7);
+	return;
+}
+
+function _ZN28btTriangleConvexcastCallback15processTriangleEP9btVector3ii(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+	var r6;
+	var r7;
+	var f0;
+	var f1;
+	var f2;
+var __label__ = 0;
+	i7 = sp + -696;var g0 = i7>>2; // save stack
+	r0 = sp + -104;
+	r1 = r0 >> 2;
+	heap32[(r1+2)] = 0;
+	heap32[(r1+3)] = 1065353216;
+	heap32[(r1+4)] = 1065353216;
+	r2 = _ZTV15btTriangleShape;
+	heap32[(r1+5)] = 1065353216;
+	r2 = (r2 + 8)|0;
+	heap32[(r1+6)] = 0;
+	r3 = heap32[(fp+1)];
+	heap32[(fp+-26)] = r2;
+	r2 = r3 >> 2;
+	heap32[(r1+1)] = 1;
+	heap32[(r1+13)] = heap32[(r2)];
+	heap32[(r1+14)] = heap32[(r2+1)];
+	heap32[(r1+15)] = heap32[(r2+2)];
+	heap32[(r1+16)] = heap32[(r2+3)];
+	heap32[(r1+17)] = heap32[(r2+4)];
+	heap32[(r1+18)] = heap32[(r2+5)];
+	heap32[(r1+19)] = heap32[(r2+6)];
+	heap32[(r1+20)] = heap32[(r2+7)];
+	heap32[(r1+21)] = heap32[(r2+8)];
+	heap32[(r1+22)] = heap32[(r2+9)];
+	r3 = heap32[(fp)];
+	heap32[(r1+23)] = heap32[(r2+10)];
+	r4 = sp + -464;
+	r5 = r3 >> 2;
+	heap32[(r1+24)] = heap32[(r2+11)];
+	r2 = r4 >> 2;
+	heap32[(r1+11)] = heap32[(r5+51)];
+	r1 = _ZTV30btGjkEpaPenetrationDepthSolver;
+	r6 = 0;
+	heap32[(r2+77)] = 953267991;
+	r1 = (r1 + 8)|0;
+	heap8[sp+-132] = r6;
+	heap32[(fp+-118)] = r1;
+	r1 = _ZTV27btContinuousConvexCollision;
+	r2 = sp + -496;
+	r6 = heap32[(r5+1)];
+	r1 = (r1 + 8)|0;
+	r7 = r2 >> 2;
+	heap32[(fp+-124)] = r1;
+	r1 = sp + -472;
+	heap32[(r7+1)] = r4;
+	heap32[(r7+2)] = r1;
+	r1 = _ZTVN12btConvexCast10CastResultE;
+	heap32[(r7+3)] = r6;
+	r4 = sp + -672;
+	r1 = (r1 + 8)|0;
+	heap32[(r7+4)] = r0;
+	r0 = r4 >> 2;
+	heap32[(fp+-168)] = r1;
+	heap32[(r0+42)] = 0;
+	heap32[(r0+43)] = 0;
+	heap32[(r0+41)] = 1065353216;
+	r1 = (r3 + 136)|0;
+	r6 = (r3 + 8)|0;
+	r7 = (r3 + 72)|0;
+	heap32[(g0)] = r2;
+	heap32[(g0+1)] = r6;
+	heap32[(g0+2)] = r7;
+	heap32[(g0+3)] = r1;
+	heap32[(g0+4)] = r1;
+	heap32[(g0+5)] = r4;
+	_ZN27btContinuousConvexCollision16calcTimeOfImpactERK11btTransformS2_S2_S2_RN12btConvexCast10CastResultE(i7);
+	r1 = r_g0;
+if(!(r1 ==0)) //_LBB563_4
+{
+	f0 = heapFloat[(r0+33)];
+	f1 = heapFloat[(r0+34)];
+	f2 = heapFloat[(r0+35)];
+	f0 = f0*f0;
+	f1 = f1*f1;
+	f0 = f0+f1;
+	f1 = f2*f2;
+	f0 = f0+f1;
+	f1 =   9.9999997473787516e-005;
+if(!(f0 <=f1)) //_LBB563_4
+{
+	f1 = heapFloat[(r0+41)];
+	f2 = heapFloat[(r5+50)];
+if(!(f1 >=f2)) //_LBB563_4
+{
+	r1 = heap32[(fp+2)];
+	r2 = heap32[(fp+3)];
+	heapFloat[(g0)] = f0;
+	sqrtf(i7);
+	f1 =                         1;
+	f0 = f1/f_g0;
+	f1 = heapFloat[(r0+33)];
+	f1 = f1*f0;
+	heapFloat[(r0+33)] = f1;
+	f1 = heapFloat[(r0+34)];
+	f1 = f1*f0;
+	heapFloat[(r0+34)] = f1;
+	f1 = heapFloat[(r0+35)];
+	f0 = f1*f0;
+	heapFloat[(r0+35)] = f0;
+	r5 = heap32[(r5)];
+	r5 = r5 >> 2;
+	r5 = heap32[(r5+3)];
+	f0 = heapFloat[(r0+41)];
+	r0 = (r4 + 132)|0;
+	r4 = (r4 + 148)|0;
+	heap32[(g0)] = r3;
+	heap32[(g0+1)] = r0;
+	heap32[(g0+2)] = r4;
+	heapFloat[(g0+3)] = f0;
+	heap32[(g0+4)] = r1;
+	heap32[(g0+5)] = r2;
+	__FUNCTION_TABLE__[(r5)>>2](i7);
+}
+}
+}
+	return;
+}
+
+function _ZN22btSubsimplexConvexCastD1Ev(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+var __label__ = 0;
+	i7 = sp + 0;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = _ZTV12btConvexCast;
+	r0 = r0 >> 2;
+	r1 = (r1 + 8)|0;
+	heap32[(r0)] = r1;
+	return;
+}
+
+function _ZN22btSubsimplexConvexCastD0Ev(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+var __label__ = 0;
+	i7 = sp + -8;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = _ZTV12btConvexCast;
+	r2 = r0 >> 2;
+	r1 = (r1 + 8)|0;
+	heap32[(r2)] = r1;
+	heap32[(g0)] = r0;
+	_ZdlPv(i7);
+	return;
+}
+
+function _ZN22btSubsimplexConvexCast16calcTimeOfImpactERK11btTransformS2_S2_S2_RN12btConvexCast10CastResultE(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+	var r6;
+	var r7;
+	var r8;
+	var r9;
+	var r10;
+	var r11;
+	var r12;
+	var r13;
+	var r14;
+	var r15;
+	var r16;
+	var r17;
+	var r18;
+	var f0;
+	var f1;
+	var f2;
+	var f3;
+	var f4;
+	var f5;
+	var f6;
+	var f7;
+	var f8;
+	var f9;
+	var f10;
+	var f11;
+	var f12;
+	var f13;
+	var f14;
+	var f15;
+	var f16;
+	var f17;
+	var f18;
+	var f19;
+	var f20;
+	var f21;
+	var f22;
+	var f23;
+	var f24;
+	var f25;
+	var f26;
+	var f27;
+	var f28;
+	var f29;
+	var f30;
+var __label__ = 0;
+	i7 = sp + -240;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r0 = r0 >> 2;
+	r1 = heap32[(r0+1)];
+	r2 = 0;
+	r3 = r1 >> 2;
+	heap8[r1+312] = r2;
+	r4 = 1;
+	heap32[(r3)] = 0;
+	heap8[r1+356] = r4;
+	heap32[(r3+73)] = 1566444395;
+	heap32[(r3+74)] = 1566444395;
+	heap32[(r3+75)] = 1566444395;
+	heap32[(r3+76)] = 0;
+	heap8[r1+352] = r2;
+	heap32[(r3+84)] = 0;
+	heap32[(r3+85)] = 0;
+	heap32[(r3+86)] = 0;
+	heap32[(r3+87)] = 0;
+	r3 = heapU8[r1+332];
+	r5 = heap32[(fp+1)];
+	r6 = heap32[(fp+2)];
+	r7 = heap32[(fp+4)];
+	r8 = heap32[(fp+3)];
+	r3 = r3 & 240;
+	heap8[r1+332] = r3;
+	r1 = r5 >> 2;
+	r3 = r8 >> 2;
+	r5 = r6 >> 2;
+	r6 = r7 >> 2;
+	f0 = heapFloat[(r1+12)];
+	f1 = heapFloat[(r5+12)];
+	f2 = heapFloat[(r3+12)];
+	f3 = heapFloat[(r6+12)];
+	f4 = heapFloat[(r1+13)];
+	f5 = heapFloat[(r5+13)];
+	f6 = heapFloat[(r3+13)];
+	f7 = heapFloat[(r6+13)];
+	r7 = heap32[(r0+2)];
+	f1 = f1-f0;
+	f3 = f3-f2;
+	f1 = f1-f3;
+	heapFloat[(fp+-50)] = f1;
+	f3 = heapFloat[(r1+14)];
+	f8 = heapFloat[(r5+14)];
+	f9 = heapFloat[(r3+14)];
+	f10 = heapFloat[(r6+14)];
+	r8 = r7 >> 2;
+	f5 = f5-f4;
+	f7 = f7-f6;
+	f5 = f5-f7;
+	heapFloat[(fp+-51)] = f5;
+	f7 = heapFloat[(r1+4)];
+	heapFloat[(fp+-42)] = f7;
+	f11 = heapFloat[(r1)];
+	heapFloat[(fp+-43)] = f11;
+	f12 = -f1;
+	r8 = heap32[(r8)];
+	f8 = f8-f3;
+	f10 = f10-f9;
+	f13 = heapFloat[(r1+1)];
+	heapFloat[(fp+-44)] = f13;
+	f14 = heapFloat[(r1+5)];
+	heapFloat[(fp+-45)] = f14;
+	r8 = r8 >> 2;
+	f8 = f8-f10;
+	heapFloat[(fp+-52)] = f8;
+	f10 = heapFloat[(r1+8)];
+	heapFloat[(fp+-46)] = f10;
+	f11 = f11*f12;
+	f7 = f7*f5;
+	f15 = heapFloat[(r1+2)];
+	heapFloat[(fp+-47)] = f15;
+	f16 = heapFloat[(r1+6)];
+	f17 = heapFloat[(r1+9)];
+	f18 = heapFloat[(r1+10)];
+	f19 = heapFloat[(r3)];
+	heapFloat[(fp+-33)] = f19;
+	f19 = heapFloat[(r3+1)];
+	heapFloat[(fp+-34)] = f19;
+	f19 = heapFloat[(r3+2)];
+	heapFloat[(fp+-35)] = f19;
+	f19 = heapFloat[(r3+4)];
+	heapFloat[(fp+-36)] = f19;
+	f19 = heapFloat[(r3+5)];
+	heapFloat[(fp+-37)] = f19;
+	f19 = heapFloat[(r3+6)];
+	heapFloat[(fp+-38)] = f19;
+	f19 = heapFloat[(r3+8)];
+	heapFloat[(fp+-39)] = f19;
+	f19 = heapFloat[(r3+9)];
+	heapFloat[(fp+-40)] = f19;
+	f19 = heapFloat[(r3+10)];
+	heapFloat[(fp+-41)] = f19;
+	r8 = heap32[(r8+15)];
+	f13 = f13*f12;
+	f14 = f14*f5;
+	f7 = f11-f7;
+	f10 = f10*f8;
+	r9 = sp + -112;
+	f11 = f15*f12;
+	f12 = f16*f5;
+	f13 = f13-f14;
+	f14 = f17*f8;
+	f7 = f7-f10;
+	r10 = r9 >> 2;
+	f10 = f11-f12;
+	f11 = f18*f8;
+	f12 = f13-f14;
+	heapFloat[(fp+-28)] = f7;
+	f7 = f10-f11;
+	heapFloat[(r10+1)] = f12;
+	heapFloat[(r10+2)] = f7;
+	heap32[(r10+3)] = 0;
+	r10 = sp + -128;
+	heap32[(g0)] = r10;
+	heap32[(g0+1)] = r7;
+	heap32[(g0+2)] = r9;
+	__FUNCTION_TABLE__[(r8)>>2](i7);
+	r7 = heap32[(r0+3)];
+	r8 = r7 >> 2;
+	r8 = heap32[(r8)];
+	f7 = heapFloat[(r3)];
+	f10 = heapFloat[(r3+4)];
+	r9 = r10 >> 2;
+	r8 = r8 >> 2;
+	f11 = heapFloat[(r3+1)];
+	f12 = heapFloat[(r3+5)];
+	f13 = heapFloat[(r3+8)];
+	f7 = f7*f1;
+	f10 = f10*f5;
+	f14 = heapFloat[(r3+2)];
+	f15 = heapFloat[(r3+6)];
+	f19 = heapFloat[(r3+10)];
+	f20 = heapFloat[(r3+9)];
+	r8 = heap32[(r8+15)];
+	f11 = f11*f1;
+	f12 = f12*f5;
+	f7 = f7+f10;
+	f10 = f13*f8;
+	f13 = heapFloat[(r1)];
+	heapFloat[(fp+-48)] = f13;
+	f21 = heapFloat[(fp+-32)];
+	f22 = heapFloat[(r1+4)];
+	f23 = heapFloat[(r1+8)];
+	heapFloat[(fp+-49)] = f23;
+	f24 = heapFloat[(r1+1)];
+	f25 = heapFloat[(r9+1)];
+	f26 = heapFloat[(r1+5)];
+	f27 = heapFloat[(r1+9)];
+	f28 = heapFloat[(r1+2)];
+	f29 = heapFloat[(r9+2)];
+	f30 = heapFloat[(r1+6)];
+	f13 = heapFloat[(r1+10)];
+	heapFloat[(fp+-54)] = f13;
+	f13 = heapFloat[(r1+12)];
+	heapFloat[(fp+-53)] = f13;
+	f13 = heapFloat[(r1+13)];
+	heapFloat[(fp+-56)] = f13;
+	f13 = heapFloat[(r1+14)];
+	heapFloat[(fp+-55)] = f13;
+	r9 = sp + -80;
+	f1 = f14*f1;
+	f5 = f15*f5;
+	f11 = f11+f12;
+	f12 = f20*f8;
+	f7 = f7+f10;
+	r10 = r9 >> 2;
+	f1 = f1+f5;
+	f5 = f19*f8;
+	f8 = f11+f12;
+	heapFloat[(fp+-20)] = f7;
+	f1 = f1+f5;
+	heapFloat[(r10+1)] = f8;
+	heapFloat[(r10+2)] = f1;
+	heap32[(r10+3)] = 0;
+	r10 = sp + -96;
+	heap32[(g0)] = r10;
+	heap32[(g0+1)] = r7;
+	heap32[(g0+2)] = r9;
+	__FUNCTION_TABLE__[(r8)>>2](i7);
+	r7 = r10 >> 2;
+	f1 = heapFloat[(r3)];
+	f5 = heapFloat[(fp+-24)];
+	f7 = heapFloat[(r3+4)];
+	f8 = heapFloat[(r3+1)];
+	f10 = heapFloat[(r7+1)];
+	f11 = heapFloat[(r3+5)];
+	f12 = heapFloat[(r3+8)];
+	f14 = heapFloat[(r3+9)];
+	f13 = heapFloat[(fp+-48)];
+	f13 = f13*f21;
+	f15 = f24*f25;
+	f1 = f1*f5;
+	f8 = f8*f10;
+	f19 = heapFloat[(r3+2)];
+	f20 = heapFloat[(r7+2)];
+	f24 = heapFloat[(r3+6)];
+	f22 = f22*f21;
+	f26 = f26*f25;
+	f7 = f7*f5;
+	f11 = f11*f10;
+	f23 = heapFloat[(r3+10)];
+	f13 = f13+f15;
+	f15 = f28*f29;
+	f1 = f1+f8;
+	f8 = f19*f20;
+	f19 = f22+f26;
+	f22 = f30*f29;
+	f7 = f7+f11;
+	f11 = f24*f20;
+	f24 = heapFloat[(fp+-49)];
+	f21 = f24*f21;
+	f24 = f27*f25;
+	f5 = f12*f5;
+	f10 = f14*f10;
+	f12 = f13+f15;
+	f13 = f19+f22;
+	f1 = f1+f8;
+	f8 = heapFloat[(r3+12)];
+	f7 = f7+f11;
+	f11 = heapFloat[(r3+13)];
+	f14 = f21+f24;
+	f15 = heapFloat[(fp+-54)];
+	f15 = f15*f29;
+	f5 = f5+f10;
+	f10 = f23*f20;
+	f14 = f14+f15;
+	f15 = heapFloat[(fp+-53)];
+	f12 = f12+f15;
+	f1 = f1+f8;
+	f8 = heapFloat[(fp+-56)];
+	f8 = f13+f8;
+	f7 = f7+f11;
+	f5 = f5+f10;
+	f10 = heapFloat[(r3+14)];
+	f1 = f12-f1;
+	f7 = f8-f7;
+	f13 = heapFloat[(fp+-55)];
+	f8 = f14+f13;
+	f5 = f5+f10;
+	f5 = f8-f5;
+	f8 = f1*f1;
+	f10 = f7*f7;
+	f8 = f8+f10;
+	f10 = f5*f5;
+	r7 = heap32[(fp+5)];
+	f8 = f8+f10;
+	r8 = -33;
+	f10 =                         0;
+	heapFloat[(fp+-48)] = f10;
+	heapFloat[(fp+-49)] = f10;
+	f11 = f10;
+_1: while(true){
+	f12 =   9.9999997473787516e-005;
+	if(f8 <=f12) //_LBB566_22
+{
+__label__ = 19;
+break _1;
+}
+else{
+	r8 = (r8 + 1)|0;
+	if(r8 !=0) //_LBB566_1
+{
+	r9 = heap32[(r0+2)];
+	r10 = r9 >> 2;
+	r10 = heap32[(r10)];
+	f8 = -f1;
+	r10 = r10 >> 2;
+	f12 = heapFloat[(fp+-43)];
+	f12 = f12*f8;
+	f13 = heapFloat[(fp+-42)];
+	f13 = f13*f7;
+	r10 = heap32[(r10+15)];
+	f14 = heapFloat[(fp+-44)];
+	f14 = f14*f8;
+	f15 = heapFloat[(fp+-45)];
+	f15 = f15*f7;
+	f12 = f12-f13;
+	f13 = heapFloat[(fp+-46)];
+	f13 = f13*f5;
+	r11 = sp + -48;
+	f19 = heapFloat[(fp+-47)];
+	f8 = f19*f8;
+	f19 = f16*f7;
+	f14 = f14-f15;
+	f15 = f17*f5;
+	f12 = f12-f13;
+	r12 = r11 >> 2;
+	f8 = f8-f19;
+	f13 = f18*f5;
+	f14 = f14-f15;
+	heapFloat[(fp+-12)] = f12;
+	f8 = f8-f13;
+	heapFloat[(r12+1)] = f14;
+	heapFloat[(r12+2)] = f8;
+	heap32[(r12+3)] = 0;
+	r12 = sp + -64;
+	heap32[(g0)] = r12;
+	heap32[(g0+1)] = r9;
+	heap32[(g0+2)] = r11;
+	__FUNCTION_TABLE__[(r10)>>2](i7);
+	r9 = heap32[(r0+3)];
+	r10 = r9 >> 2;
+	r10 = heap32[(r10)];
+	r11 = r12 >> 2;
+	r10 = r10 >> 2;
+	f8 = heapFloat[(fp+-33)];
+	f8 = f8*f1;
+	f12 = heapFloat[(fp+-36)];
+	f12 = f12*f7;
+	f13 = heapFloat[(fp+-16)];
+	f14 = heapFloat[(r11+1)];
+	f15 = heapFloat[(r11+2)];
+	r10 = heap32[(r10+15)];
+	f19 = heapFloat[(fp+-34)];
+	f19 = f19*f1;
+	f20 = heapFloat[(fp+-37)];
+	f20 = f20*f7;
+	f8 = f8+f12;
+	f12 = heapFloat[(fp+-39)];
+	f12 = f12*f5;
+	r11 = sp + -16;
+	f21 = heapFloat[(fp+-35)];
+	f21 = f21*f1;
+	f22 = heapFloat[(fp+-38)];
+	f22 = f22*f7;
+	f19 = f19+f20;
+	f20 = heapFloat[(fp+-40)];
+	f20 = f20*f5;
+	f8 = f8+f12;
+	r12 = r11 >> 2;
+	f12 = f21+f22;
+	f21 = heapFloat[(fp+-41)];
+	f21 = f21*f5;
+	f19 = f19+f20;
+	heapFloat[(fp+-4)] = f8;
+	f8 = f12+f21;
+	heapFloat[(r12+1)] = f19;
+	heapFloat[(r12+2)] = f8;
+	heap32[(r12+3)] = 0;
+	r12 = sp + -32;
+	heap32[(g0)] = r12;
+	heap32[(g0+1)] = r9;
+	heap32[(g0+2)] = r11;
+	__FUNCTION_TABLE__[(r10)>>2](i7);
+	f12 =                         1;
+	if(f11 >f12) //_LBB566_27
+{
+__label__ = 24;
+break _1;
+}
+else{
+	r9 = r12 >> 2;
+	f8 = heapFloat[(fp+-8)];
+	f19 = heapFloat[(r9+1)];
+	f20 = heapFloat[(r9+2)];
+	f21 = heapFloat[(fp+-43)];
+	f21 = f21*f13;
+	f22 = heapFloat[(fp+-44)];
+	f22 = f22*f14;
+	f23 = heapFloat[(fp+-33)];
+	f23 = f23*f8;
+	f24 = heapFloat[(fp+-34)];
+	f24 = f24*f19;
+	f25 = heapFloat[(fp+-42)];
+	f25 = f25*f13;
+	f26 = heapFloat[(fp+-45)];
+	f26 = f26*f14;
+	f27 = heapFloat[(fp+-36)];
+	f27 = f27*f8;
+	f28 = heapFloat[(fp+-37)];
+	f28 = f28*f19;
+	f21 = f21+f22;
+	f22 = heapFloat[(fp+-47)];
+	f22 = f22*f15;
+	f23 = f23+f24;
+	f24 = heapFloat[(fp+-35)];
+	f24 = f24*f20;
+	f25 = f25+f26;
+	f26 = f16*f15;
+	f27 = f27+f28;
+	f28 = heapFloat[(fp+-38)];
+	f28 = f28*f20;
+	f29 = heapFloat[(fp+-46)];
+	f13 = f29*f13;
+	f14 = f17*f14;
+	f29 = heapFloat[(fp+-39)];
+	f8 = f29*f8;
+	f29 = heapFloat[(fp+-40)];
+	f19 = f29*f19;
+	f21 = f21+f22;
+	f22 = f23+f24;
+	f23 = f25+f26;
+	f24 = f27+f28;
+	f13 = f13+f14;
+	f14 = f18*f15;
+	f8 = f8+f19;
+	f15 = heapFloat[(fp+-41)];
+	f15 = f15*f20;
+	f19 = f21+f0;
+	f20 = f22+f2;
+	f21 = f23+f4;
+	f22 = f24+f6;
+	f13 = f13+f14;
+	f8 = f8+f15;
+	f14 = f19-f20;
+	f15 = f21-f22;
+	f13 = f13+f3;
+	f23 = f8+f9;
+	f24 = f13-f23;
+	f8 = f1*f14;
+	f25 = f7*f15;
+	f8 = f8+f25;
+	f25 = f5*f24;
+	f25 = f8+f25;
+	f8 =                         0;
+	if(f25 >f8) //_LBB566_4
+{
+	f0 = heapFloat[(fp+-50)];
+	f0 = f1*f0;
+	f2 = heapFloat[(fp+-51)];
+	f2 = f7*f2;
+	f0 = f0+f2;
+	f2 = heapFloat[(fp+-52)];
+	f2 = f5*f2;
+	f0 = f0+f2;
+	f2 =  -1.4210854715202004e-014;
+	if(f0 >=f2) //_LBB566_27
+{
+__label__ = 24;
+break _1;
+}
+else{
+	f0 = f25/f0;
+	f11 = f11-f0;
+	f0 = heapFloat[(r5+12)];
+	f2 = heapFloat[(r5+13)];
+	f3 = heapFloat[(r5+14)];
+	f4 = heapFloat[(r6+12)];
+	f6 = heapFloat[(r6+13)];
+	f9 = heapFloat[(r6+14)];
+	f10 = heapFloat[(r1+12)];
+	f12 = f12-f11;
+	f25 = heapFloat[(r1+13)];
+	f26 = heapFloat[(r1+14)];
+	f27 = heapFloat[(r3+12)];
+	f28 = heapFloat[(r3+13)];
+	f29 = heapFloat[(r3+14)];
+	f10 = f10*f12;
+	f0 = f0*f11;
+	f25 = f25*f12;
+	f2 = f2*f11;
+	f26 = f26*f12;
+	f3 = f3*f11;
+	f27 = f27*f12;
+	f30 = f4*f11;
+	f28 = f28*f12;
+	f6 = f6*f11;
+	f12 = f29*f12;
+	f9 = f9*f11;
+	f0 = f10+f0;
+	f4 = f25+f2;
+	f3 = f26+f3;
+	f2 = f27+f30;
+	f6 = f28+f6;
+	f9 = f12+f9;
+	f10 = f1;
+	heapFloat[(fp+-48)] = f7;
+	heapFloat[(fp+-49)] = f5;
+}
+}
+	r9 = heap32[(r0+1)];
+	r10 = r9 >> 2;
+	r11 = heap32[(r10)];
+_10: do {
+	if(r11 >0) //_LBB566_8
+{
+	r12 = -12;
+	f1 = heapFloat[(r10+77)];
+	r13 = (r12 - r9)|0;
+	r14 = 0;
+	r15 = r11;
+	r12 = r14;
+_12: while(true){
+	r16 = -8;
+	r17 = -4;
+	r16 = (r16 - r13)|0;
+	r17 = (r17 - r13)|0;
+	r16 = r16 >> 2;
+	r17 = r17 >> 2;
+	r18 = (r14 - r13)|0;
+	r18 = r18 >> 2;
+	f5 = heapFloat[(r16)];
+	f7 = heapFloat[(r17)];
+	f5 = f14-f5;
+	f7 = f15-f7;
+	f12 = heapFloat[(r18)];
+	f12 = f24-f12;
+	f5 = f5*f5;
+	f7 = f7*f7;
+	f5 = f5+f7;
+	f7 = f12*f12;
+	f5 = f5+f7;
+	r15 = (r15 + -1)|0;
+	r12 = f5 > f1 ? r12 : r4;
+	r13 = (r13 + -16)|0;
+if(!(r15 !=0)) //_LBB566_9
+{
+break _10;
+}
+}
+}
+else{
+	r12 = r2;
+}
+} while(0);
+	f1 = heapFloat[(r10+76)];
+	if(f1 ==f8) //_LBB566_12
+{
+	f1 = heapFloat[(r10+75)];
+if(!(f24 !=f1)) //_LBB566_11
+{
+	f1 = heapFloat[(r10+74)];
+if(!(f15 !=f1)) //_LBB566_11
+{
+	f1 = heapFloat[(r10+73)];
+	r12 = f14 != f1 ? r12 : r4;
+}
+}
+}
+	r12 = r12 & 255;
+	if(r12 ==0) //_LBB566_17
+{
+	heapFloat[(r10+73)] = f14;
+	heapFloat[(r10+74)] = f15;
+	r11 = r11 << 4;
+	heapFloat[(r10+75)] = f24;
+	r11 = (r9 + r11)|0;
+	heap32[(r10+76)] = 0;
+	r11 = r11 >> 2;
+	heap8[r9+356] = r4;
+	heapFloat[(r11+1)] = f14;
+	heapFloat[(r11+2)] = f15;
+	heapFloat[(r11+3)] = f24;
+	heap32[(r11+4)] = 0;
+	r11 = heap32[(r10)];
+	r11 = r11 << 4;
+	r11 = (r9 + r11)|0;
+	r11 = r11 >> 2;
+	heapFloat[(r11+21)] = f19;
+	heapFloat[(r11+22)] = f21;
+	heapFloat[(r11+23)] = f13;
+	heap32[(r11+24)] = 0;
+	r11 = heap32[(r10)];
+	r11 = r11 << 4;
+	r9 = (r9 + r11)|0;
+	r9 = r9 >> 2;
+	heapFloat[(r9+41)] = f20;
+	heapFloat[(r9+42)] = f22;
+	heapFloat[(r9+43)] = f23;
+	heap32[(r9+44)] = 0;
+	r9 = heap32[(r10)];
+	r9 = (r9 + 1)|0;
+	heap32[(r10)] = r9;
+	r9 = heap32[(r0+1)];
+}
+	heap32[(g0)] = r9;
+	_ZN22btVoronoiSimplexSolver28updateClosestVectorAndPointsEv(i7);
+	r10 = r_g0;
+	r9 = r9 >> 2;
+	f1 = heapFloat[(r9+69)];
+	f7 = heapFloat[(r9+70)];
+	f5 = heapFloat[(r9+71)];
+	if(r10 ==0) //_LBB566_20
+{
+continue _1;
+}
+else{
+	f8 = f1*f1;
+	f12 = f7*f7;
+	f8 = f8+f12;
+	f12 = f5*f5;
+	f8 = f8+f12;
+continue _1;
+}
+}
+}
+else{
+__label__ = 19;
+break _1;
+}
+}
+}
+if (__label__ == 19){
+	f0 = f10*f10;
+	f7 = heapFloat[(fp+-48)];
+	f1 = f7*f7;
+	f0 = f0+f1;
+	f1 = heapFloat[(fp+-49)];
+	f1 = f1*f1;
+	f0 = f0+f1;
+	r1 = r7 >> 2;
+	heapFloat[(r1+41)] = f11;
+	f1 =   1.4210854715202004e-014;
+	if(f0 <f1) //_LBB566_24
+{
+	heap32[(r1+33)] = 0;
+	heap32[(r1+34)] = 0;
+	f0 =                         0;
+	heap32[(r1+35)] = 0;
+	heap32[(r1+36)] = 0;
+	f2 = f0;
+	f1 = f0;
+}
+else{
+	heapFloat[(g0)] = f0;
+	f0 =                         1;
+	sqrtf(i7);
+	f0 = f0/f_g0;
+	f1 = f10*f0;
+	f7 = heapFloat[(fp+-48)];
+	f2 = f7*f0;
+	heapFloat[(r1+33)] = f1;
+	f11 = heapFloat[(fp+-49)];
+	f0 = f11*f0;
+	heapFloat[(r1+34)] = f2;
+	heapFloat[(r1+35)] = f0;
+	heap32[(r1+36)] = 0;
+}
+	f3 = heapFloat[(fp+-50)];
+	f1 = f1*f3;
+	f3 = heapFloat[(fp+-51)];
+	f2 = f2*f3;
+	f3 = heapFloat[(r1+43)];
+	f1 = f1+f2;
+	f2 = heapFloat[(fp+-52)];
+	f0 = f0*f2;
+	f0 = f1+f0;
+	f1 = -f3;
+if(!(f0 >=f1)) //_LBB566_27
+{
+	r0 = heap32[(r0+1)];
+	heap32[(g0)] = r0;
+	r0 = r0 >> 2;
+	_ZN22btVoronoiSimplexSolver28updateClosestVectorAndPointsEv(i7);
+	f0 = heapFloat[(r0+68)];
+	f1 = heapFloat[(r0+67)];
+	f2 = heapFloat[(r0+66)];
+	heap32[(r1+37)] = heap32[(r0+65)];
+	heapFloat[(r1+38)] = f2;
+	heapFloat[(r1+39)] = f1;
+	heapFloat[(r1+40)] = f0;
+	r0 = 1;
+	r_g0 = r0;
+	return;
+}
+}
+	r0 = 0;
+	r_g0 = r0;
+	return;
+}
+
+function _ZN22btVoronoiSimplexSolver12removeVertexEi(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+	var r6;
+var __label__ = 0;
+	i7 = sp + -16;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = r0 >> 2;
+	r2 = heap32[(r1)];
+	if(r2 >0) //_LBB567_2
+{
+	r3 = heap32[(fp+1)];
+	r2 = (r2 + -1)|0;
+	r3 = r3 << 4;
+	r4 = (r0 + 4)|0;
+	r5 = r2 << 4;
+	r6 = (r4 + r3)|0;
+	r4 = (r4 + r5)|0;
+	r5 = r6 >> 2;
+	r4 = r4 >> 2;
+	heap32[(r1)] = r2;
+	heap32[(r5)] = heap32[(r4)];
+	heap32[(r5+1)] = heap32[(r4+1)];
+	heap32[(r5+2)] = heap32[(r4+2)];
+	heap32[(r5+3)] = heap32[(r4+3)];
+	r2 = heap32[(r1)];
+	r4 = (r0 + 84)|0;
+	r2 = r2 << 4;
+	r5 = (r4 + r3)|0;
+	r2 = (r4 + r2)|0;
+	r4 = r5 >> 2;
+	r2 = r2 >> 2;
+	heap32[(r4)] = heap32[(r2)];
+	heap32[(r4+1)] = heap32[(r2+1)];
+	heap32[(r4+2)] = heap32[(r2+2)];
+	heap32[(r4+3)] = heap32[(r2+3)];
+	r1 = heap32[(r1)];
+	r0 = (r0 + 164)|0;
+	r1 = r1 << 4;
+	r2 = (r0 + r3)|0;
+	r0 = (r0 + r1)|0;
+	r1 = r2 >> 2;
+	r0 = r0 >> 2;
+	heap32[(r1)] = heap32[(r0)];
+	heap32[(r1+1)] = heap32[(r0+1)];
+	heap32[(r1+2)] = heap32[(r0+2)];
+	heap32[(r1+3)] = heap32[(r0+3)];
+	return;
+}
+else{
+	r0 = _2E_str457;
+	r1 = _2E_str1458;
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r1;
+	heap32[(g0+2)] = 38;
+	_assert(i7);
+}
+}
+
+function _ZN22btVoronoiSimplexSolver22closestPtPointTriangleERK9btVector3S2_S2_S2_R25btSubSimplexClosestResult(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+	var f0;
+	var f1;
+	var f2;
+	var f3;
+	var f4;
+	var f5;
+	var f6;
+	var f7;
+	var f8;
+	var f9;
+	var f10;
+	var f11;
+	var f12;
+	var f13;
+	var f14;
+	var f15;
+	var f16;
+	var f17;
+	var f18;
+	var f19;
+	var f20;
+	var f21;
+	var f22;
+	var f23;
+	var f24;
+	var f25;
+var __label__ = 0;
+	i7 = sp + 0;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp+4)];
+	r1 = heapU8[r0+16];
+	r2 = heap32[(fp+2)];
+	r3 = heap32[(fp+3)];
+	r4 = heap32[(fp+1)];
+	r1 = r1 & -16;
+	r5 = heap32[(fp)];
+	r2 = r2 >> 2;
+	heap8[r0+16] = r1;
+	r3 = r3 >> 2;
+	r5 = r5 >> 2;
+	r4 = r4 >> 2;
+	f0 = heapFloat[(r2+1)];
+	f1 = heapFloat[(r4+1)];
+	f2 = heapFloat[(r3+1)];
+	f3 = heapFloat[(r5+1)];
+	f4 = heapFloat[(r2)];
+	f5 = heapFloat[(r4)];
+	f6 = heapFloat[(r3)];
+	f7 = heapFloat[(r5)];
+	f8 = heapFloat[(r2+2)];
+	f9 = heapFloat[(r4+2)];
+	f10 = heapFloat[(r3+2)];
+	f11 = heapFloat[(r5+2)];
+	f12 = f0-f1;
+	f13 = f4-f5;
+	f14 = f6-f5;
+	f15 = f7-f5;
+	f16 = f2-f1;
+	f17 = f3-f1;
+	f18 = f8-f9;
+	f19 = f10-f9;
+	f20 = f11-f9;
+	f21 = f13*f15;
+	f22 = f12*f17;
+	f15 = f14*f15;
+	f17 = f16*f17;
+	f21 = f21+f22;
+	f22 = f18*f20;
+	f15 = f15+f17;
+	f17 = f19*f20;
+	f20 = f21+f22;
+	f15 = f15+f17;
+	f17 =                         0;
+if(!(f20 >f17)) //_LBB568_3
+{
+if(!(f15 >f17)) //_LBB568_3
+{
+	r2 = r0 >> 2;
+	heapFloat[(r2)] = f5;
+	heap32[(r2+1)] = heap32[(r4+1)];
+	heap32[(r2+2)] = heap32[(r4+2)];
+	r1 = r1 | 1;
+	heap32[(r2+3)] = heap32[(r4+3)];
+	heap8[r0+16] = r1;
+	heap32[(r2+5)] = 1065353216;
+	heap32[(r2+6)] = 0;
+	heap32[(r2+7)] = 0;
+	heap32[(r2+8)] = 0;
+	return;
+}
+}
+	f21 = f7-f4;
+	f22 = f3-f0;
+	f23 = f13*f21;
+	f24 = f12*f22;
+	f25 = f11-f8;
+	f21 = f14*f21;
+	f22 = f16*f22;
+	f23 = f23+f24;
+	f24 = f18*f25;
+	f21 = f21+f22;
+	f22 = f19*f25;
+	f23 = f23+f24;
+	f21 = f21+f22;
+	if(f23 <f17) //_LBB568_7
+{
+__label__ = 7;
+}
+else{
+	if(f21 >f23) //_LBB568_7
+{
+__label__ = 7;
+}
+else{
+	r3 = r0 >> 2;
+	heapFloat[(r3)] = f4;
+	heap32[(r3+1)] = heap32[(r2+1)];
+	heap32[(r3+2)] = heap32[(r2+2)];
+	r1 = r1 | 2;
+	heap32[(r3+3)] = heap32[(r2+3)];
+	heap8[r0+16] = r1;
+	heap32[(r3+5)] = 0;
+	heap32[(r3+6)] = 1065353216;
+__label__ = 6;
+}
+}
+_8: do {
+if (__label__ == 7){
+	f22 = f20*f21;
+	f24 = f23*f15;
+	f22 = f22-f24;
+if(!(f22 >f17)) //_LBB568_11
+{
+if(!(f20 <f17)) //_LBB568_11
+{
+if(!(f23 >f17)) //_LBB568_11
+{
+	f0 = f20-f23;
+	f0 = f20/f0;
+	f2 = f13*f0;
+	r3 = r0 >> 2;
+	f2 = f5+f2;
+	f3 = f12*f0;
+	f4 = f18*f0;
+	f1 = f1+f3;
+	heapFloat[(r3)] = f2;
+	f2 = f9+f4;
+	heapFloat[(r3+1)] = f1;
+	heapFloat[(r3+2)] = f2;
+	f1 =                         1;
+	r1 = r1 | 3;
+	heap32[(r3+3)] = 0;
+	f1 = f1-f0;
+	heap8[r0+16] = r1;
+	heapFloat[(r3+5)] = f1;
+	heapFloat[(r3+6)] = f0;
+break _8;
+}
+}
+}
+	f7 = f7-f6;
+	f3 = f3-f2;
+	f24 = f14*f7;
+	f25 = f16*f3;
+	f11 = f11-f10;
+	f7 = f13*f7;
+	f3 = f12*f3;
+	f24 = f24+f25;
+	f25 = f19*f11;
+	f3 = f7+f3;
+	f7 = f18*f11;
+	f11 = f24+f25;
+	f3 = f3+f7;
+if(!(f11 <f17)) //_LBB568_14
+{
+if(!(f3 >f11)) //_LBB568_14
+{
+	r2 = r0 >> 2;
+	heapFloat[(r2)] = f6;
+	heap32[(r2+1)] = heap32[(r3+1)];
+	heap32[(r2+2)] = heap32[(r3+2)];
+	r1 = r1 | 4;
+	heap32[(r2+3)] = heap32[(r3+3)];
+	heap8[r0+16] = r1;
+	heap32[(r2+5)] = 0;
+	heap32[(r2+6)] = 0;
+	heap32[(r2+7)] = 1065353216;
+	heap32[(r2+8)] = 0;
+	return;
+}
+}
+	f7 = f3*f15;
+	f20 = f20*f11;
+	f7 = f7-f20;
+	if(f7 >f17) //_LBB568_19
+{
+__label__ = 19;
+}
+else{
+	if(f15 <f17) //_LBB568_19
+{
+__label__ = 19;
+}
+else{
+	if(f11 >f17) //_LBB568_19
+{
+__label__ = 19;
+}
+else{
+	f0 = f15-f11;
+	f0 = f15/f0;
+	f2 = f14*f0;
+	r2 = r0 >> 2;
+	f2 = f5+f2;
+	f3 = f16*f0;
+	f4 = f19*f0;
+	f1 = f1+f3;
+	heapFloat[(r2)] = f2;
+	f2 = f9+f4;
+	heapFloat[(r2+1)] = f1;
+	heapFloat[(r2+2)] = f2;
+	f1 =                         1;
+	r1 = r1 | 5;
+	heap32[(r2+3)] = 0;
+	f1 = f1-f0;
+	heap8[r0+16] = r1;
+	heapFloat[(r2+5)] = f1;
+	heap32[(r2+6)] = 0;
+__label__ = 18;
+}
+}
+}
+if (__label__ == 19){
+	f15 = f23*f11;
+	f20 = f3*f21;
+	f15 = f15-f20;
+if(!(f15 >f17)) //_LBB568_23
+{
+	f20 = f21-f23;
+if(!(f20 <f17)) //_LBB568_23
+{
+	f3 = f3-f11;
+if(!(f3 <f17)) //_LBB568_23
+{
+	f1 = f20+f3;
+	f1 = f20/f1;
+	f5 = f6-f4;
+	f7 = f2-f0;
+	f5 = f5*f1;
+	f9 = f10-f8;
+	f7 = f7*f1;
+	r2 = r0 >> 2;
+	f5 = f4+f5;
+	f9 = f9*f1;
+	f7 = f0+f7;
+	heapFloat[(r2)] = f5;
+	f5 = f8+f9;
+	heapFloat[(r2+1)] = f7;
+	heapFloat[(r2+2)] = f5;
+	r1 = r1 | 6;
+	heap32[(r2+3)] = 0;
+	f5 =                         1;
+	heap8[r0+16] = r1;
+	f5 = f5-f1;
+	heap32[(r2+5)] = 0;
+	heapFloat[(r2+6)] = f5;
+	heapFloat[(r2+7)] = f1;
+	heap32[(r2+8)] = 0;
+	return;
+}
+}
+}
+	f0 = f15+f7;
+	f0 = f0+f22;
+	f2 =                         1;
+	f0 = f2/f0;
+	f3 = f7*f0;
+	f0 = f22*f0;
+	f4 = f13*f3;
+	f6 = f12*f3;
+	f4 = f5+f4;
+	f5 = f14*f0;
+	r2 = r0 >> 2;
+	f4 = f4+f5;
+	f5 = f18*f3;
+	f1 = f1+f6;
+	f6 = f16*f0;
+	f5 = f9+f5;
+	f7 = f19*f0;
+	f1 = f1+f6;
+	heapFloat[(r2)] = f4;
+	f4 = f5+f7;
+	heapFloat[(r2+1)] = f1;
+	heapFloat[(r2+2)] = f4;
+	f1 = f2-f3;
+	r1 = r1 | 7;
+	heap32[(r2+3)] = 0;
+	f1 = f1-f0;
+	heap8[r0+16] = r1;
+	heapFloat[(r2+5)] = f1;
+	heapFloat[(r2+6)] = f3;
+}
+	heapFloat[(r2+7)] = f0;
+	heap32[(r2+8)] = 0;
+	return;
+}
+} while(0);
+	heap32[(r3+7)] = 0;
+	heap32[(r3+8)] = 0;
+	return;
+}
+
+function _ZN22btVoronoiSimplexSolver19pointOutsideOfPlaneERK9btVector3S2_S2_S2_S2_(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var f0;
+	var f1;
+	var f2;
+	var f3;
+	var f4;
+	var f5;
+	var f6;
+	var f7;
+	var f8;
+	var f9;
+	var f10;
+	var f11;
+	var f12;
+var __label__ = 0;
+	i7 = sp + 0;var g0 = i7>>2; // save stack
+	f0 = heapFloat[(fp+5)];
+	f1 = heapFloat[(fp+8)];
+	f2 = heapFloat[(fp+11)];
+	f3 = heapFloat[(fp+4)];
+	f4 = heapFloat[(fp+10)];
+	f5 = heapFloat[(fp+7)];
+	f6 = heapFloat[(fp+3)];
+	f7 = heapFloat[(fp+6)];
+	f8 = heapFloat[(fp+9)];
+	f1 = f1-f0;
+	f4 = f4-f3;
+	f7 = f7-f6;
+	f2 = f2-f0;
+	f5 = f5-f3;
+	f8 = f8-f6;
+	f9 = heapFloat[(fp+12)];
+	f10 = heapFloat[(fp+13)];
+	f11 = f5*f2;
+	f12 = f1*f4;
+	f1 = f1*f8;
+	f2 = f7*f2;
+	f11 = f11-f12;
+	f9 = f9-f6;
+	f1 = f1-f2;
+	f2 = f10-f3;
+	f10 = heapFloat[(fp+14)];
+	f4 = f7*f4;
+	f5 = f5*f8;
+	f4 = f4-f5;
+	f5 = f10-f0;
+	f7 = f9*f11;
+	f2 = f2*f1;
+	f2 = f7+f2;
+	f5 = f5*f4;
+	f2 = f2+f5;
+	f5 = f2*f2;
+	f7 =   9.9999990510468706e-009;
+	if(f5 <f7) //_LBB569_2
+{
+	r0 = -1;
+	r_g0 = r0;
+	return;
+}
+else{
+	f5 = heapFloat[(fp)];
+	f7 = heapFloat[(fp+1)];
+	f8 = heapFloat[(fp+2)];
+	f5 = f5-f6;
+	f3 = f7-f3;
+	f5 = f5*f11;
+	f1 = f3*f1;
+	f0 = f8-f0;
+	f1 = f5+f1;
+	f0 = f0*f4;
+	f0 = f1+f0;
+	f0 = f0*f2;
+	f1 =                         0;
+	r0 = f0 < f1;
+	r0 = r0 & 1;
+	r_g0 = r0;
+	return;
+}
+}
+
+function _ZN22btVoronoiSimplexSolver14reduceVerticesERK15btUsageBitfield(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+var __label__ = 0;
+	i7 = sp + -8;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = r0 >> 2;
+	r2 = heap32[(r1)];
+	r3 = heap32[(fp+1)];
+	if(r2 >3) //_LBB570_2
+{
+	r2 = heapU8[r3];
+	r4 = r2 & 8;
+	if(r4 ==0) //_LBB570_4
+{
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = 3;
+	_ZN22btVoronoiSimplexSolver12removeVertexEi(i7);
+	r2 = heap32[(r1)];
+__label__ = 3;
+}
+else{
+__label__ = 5;
+}
+}
+else{
+__label__ = 3;
+}
+if (__label__ == 3){
+	if(r2 >2) //_LBB570_7
+{
+	r2 = heapU8[r3];
+__label__ = 5;
+}
+else{
+__label__ = 7;
+}
+}
+if (__label__ == 5){
+	r4 = r2 & 4;
+	if(r4 ==0) //_LBB570_10
+{
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = 2;
+	_ZN22btVoronoiSimplexSolver12removeVertexEi(i7);
+	r2 = heap32[(r1)];
+__label__ = 7;
+}
+else{
+__label__ = 9;
+}
+}
+if (__label__ == 7){
+	if(r2 >1) //_LBB570_13
+{
+	r2 = heapU8[r3];
+__label__ = 9;
+}
+else{
+__label__ = 11;
+}
+}
+if (__label__ == 9){
+	r4 = r2 & 2;
+	if(r4 ==0) //_LBB570_16
+{
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = 1;
+	_ZN22btVoronoiSimplexSolver12removeVertexEi(i7);
+	r2 = heap32[(r1)];
+__label__ = 11;
+}
+else{
+__label__ = 13;
+}
+}
+if (__label__ == 11){
+	if(r2 <1) //_LBB570_20
+{
+__label__ = 14;
+}
+else{
+	r2 = heapU8[r3];
+__label__ = 13;
+}
+}
+if (__label__ == 13){
+	r1 = r2 & 1;
+	if(r1 ==0) //_LBB570_21
+{
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = 0;
+	_ZN22btVoronoiSimplexSolver12removeVertexEi(i7);
+	return;
+}
+}
+	return;
+}
+
+function _ZN22btVoronoiSimplexSolver28updateClosestVectorAndPointsEv(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+	var r6;
+	var r7;
+	var r8;
+	var r9;
+	var r10;
+	var r11;
+	var r12;
+	var r13;
+	var r14;
+	var r15;
+	var f0;
+	var f1;
+	var f2;
+	var f3;
+	var f4;
+	var f5;
+	var f6;
+	var f7;
+	var f8;
+	var f9;
+	var f10;
+	var f11;
+	var f12;
+	var f13;
+	var f14;
+	var f15;
+	var f16;
+	var f17;
+var __label__ = 0;
+	i7 = sp + -136;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = heapU8[r0+356];
+	if(r1 !=0) //_LBB571_2
+{
+	r1 = 0;
+	r2 = r0 >> 2;
+	heap8[r0+352] = r1;
+	heap32[(r2+84)] = 0;
+	heap32[(r2+85)] = 0;
+	heap32[(r2+86)] = 0;
+	heap32[(r2+87)] = 0;
+	r3 = heapU8[r0+332];
+	r4 = r3 & -16;
+	heap8[r0+332] = r4;
+	heap8[r0+356] = r1;
+	r5 = heap32[(r2)];
+_3: do {
+	if(r5 >1) //_LBB571_5
+{
+_5: do {
+	if(r5 ==2) //_LBB571_11
+{
+	f0 =                         0;
+	f1 = heapFloat[(r2+2)];
+	f2 = heapFloat[(r2+6)];
+	f3 = heapFloat[(r2+1)];
+	f4 = heapFloat[(r2+5)];
+	f5 = heapFloat[(r2+3)];
+	f6 = heapFloat[(r2+7)];
+	f2 = f2-f1;
+	f1 = f0-f1;
+	f4 = f4-f3;
+	f3 = f0-f3;
+	f6 = f6-f5;
+	f5 = f0-f5;
+	f3 = f4*f3;
+	f1 = f2*f1;
+	f1 = f3+f1;
+	f3 = f6*f5;
+	f1 = f1+f3;
+	if(f1 <=f0) //_LBB571_15
+{
+	r1 = r4 | 1;
+	heap8[r0+332] = r1;
+	f1 = f0;
+}
+else{
+	f3 = f4*f4;
+	f2 = f2*f2;
+	f2 = f3+f2;
+	f3 = f6*f6;
+	f2 = f2+f3;
+	if(f1 >=f2) //_LBB571_14
+{
+	f1 =                         1;
+	r1 = r4 | 2;
+	heap8[r0+332] = r1;
+}
+else{
+	f1 = f1/f2;
+	r1 = r4 | 3;
+	heap8[r0+332] = r1;
+}
+}
+	f2 =                         1;
+	f2 = f2-f1;
+	heapFloat[(r2+84)] = f2;
+	heapFloat[(r2+85)] = f1;
+	heap32[(r2+86)] = 0;
+	heap32[(r2+87)] = 0;
+	f2 = heapFloat[(r2+25)];
+	f3 = heapFloat[(r2+21)];
+	f2 = f2-f3;
+	f4 = heapFloat[(r2+26)];
+	f5 = heapFloat[(r2+22)];
+	f4 = f4-f5;
+	f2 = f2*f1;
+	f6 = heapFloat[(r2+27)];
+	f7 = heapFloat[(r2+23)];
+	f6 = f6-f7;
+	f4 = f4*f1;
+	f2 = f3+f2;
+	f3 = f6*f1;
+	f4 = f5+f4;
+	heapFloat[(r2+61)] = f2;
+	f3 = f7+f3;
+	heapFloat[(r2+62)] = f4;
+	heapFloat[(r2+63)] = f3;
+	heap32[(r2+64)] = 0;
+	f5 = heapFloat[(r2+45)];
+	f6 = heapFloat[(r2+41)];
+	f5 = f5-f6;
+	f7 = heapFloat[(r2+46)];
+	f8 = heapFloat[(r2+42)];
+	f7 = f7-f8;
+	f5 = f5*f1;
+	f9 = heapFloat[(r2+47)];
+	f10 = heapFloat[(r2+43)];
+	f9 = f9-f10;
+	f7 = f7*f1;
+	f5 = f6+f5;
+	f1 = f9*f1;
+	f6 = f8+f7;
+	heapFloat[(r2+65)] = f5;
+	f1 = f10+f1;
+	heapFloat[(r2+66)] = f6;
+	heapFloat[(r2+67)] = f1;
+	f2 = f2-f5;
+	heap32[(r2+68)] = 0;
+	f4 = f4-f6;
+	heapFloat[(r2+69)] = f2;
+	f1 = f3-f1;
+	heapFloat[(r2+70)] = f4;
+	heapFloat[(r2+71)] = f1;
+	heap32[(r2+72)] = 0;
+	r1 = (r0 + 332)|0;
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r1;
+	_ZN22btVoronoiSimplexSolver14reduceVerticesERK15btUsageBitfield(i7);
+	f1 = heapFloat[(r2+84)];
+	if(f1 >=f0) //_LBB571_18
+{
+	f0 = heapFloat[(r2+85)];
+	f1 =                         0;
+if(!(f0 <f1)) //_LBB571_17
+{
+	f0 = heapFloat[(r2+86)];
+if(!(f0 <f1)) //_LBB571_17
+{
+	f0 = heapFloat[(r2+87)];
+	r1 = f0 >= f1;
+	r1 = r1 & 1;
+break _5;
+}
+}
+}
+	r1 = 0;
+}
+else{
+	if(r5 ==3) //_LBB571_22
+{
+	r1 = sp + -56;
+	r3 = r1 >> 2;
+	heap32[(fp+-14)] = 0;
+	heap32[(r3+1)] = 0;
+	heap32[(r3+2)] = 0;
+	heap32[(r3+3)] = 0;
+	r3 = (r0 + 4)|0;
+	r4 = (r0 + 20)|0;
+	r5 = (r0 + 36)|0;
+	r6 = (r0 + 316)|0;
+	heap32[(g0)] = r1;
+	heap32[(g0+1)] = r3;
+	heap32[(g0+2)] = r4;
+	heap32[(g0+3)] = r5;
+	heap32[(g0+4)] = r6;
+	_ZN22btVoronoiSimplexSolver22closestPtPointTriangleERK9btVector3S2_S2_S2_R25btSubSimplexClosestResult(i7);
+	f0 = heapFloat[(r2+85)];
+	f1 = heapFloat[(r2+25)];
+	f2 = heapFloat[(r2+84)];
+	f3 = heapFloat[(r2+21)];
+	f4 = heapFloat[(r2+26)];
+	f5 = heapFloat[(r2+22)];
+	f3 = f3*f2;
+	f1 = f1*f0;
+	f6 = heapFloat[(r2+86)];
+	f7 = heapFloat[(r2+29)];
+	f8 = heapFloat[(r2+31)];
+	f9 = heapFloat[(r2+30)];
+	f10 = heapFloat[(r2+27)];
+	f11 = heapFloat[(r2+23)];
+	f5 = f5*f2;
+	f4 = f4*f0;
+	f1 = f3+f1;
+	f3 = f7*f6;
+	f7 = f11*f2;
+	f10 = f10*f0;
+	f4 = f5+f4;
+	f5 = f9*f6;
+	f1 = f1+f3;
+	f3 = f7+f10;
+	f7 = f8*f6;
+	f4 = f4+f5;
+	heapFloat[(r2+61)] = f1;
+	f3 = f3+f7;
+	heapFloat[(r2+62)] = f4;
+	heapFloat[(r2+63)] = f3;
+	heap32[(r2+64)] = 0;
+	f5 = heapFloat[(r2+45)];
+	f7 = heapFloat[(r2+41)];
+	f8 = heapFloat[(r2+49)];
+	f9 = heapFloat[(r2+46)];
+	f10 = heapFloat[(r2+42)];
+	f7 = f7*f2;
+	f5 = f5*f0;
+	f11 = heapFloat[(r2+51)];
+	f12 = heapFloat[(r2+50)];
+	f13 = heapFloat[(r2+47)];
+	f14 = heapFloat[(r2+43)];
+	f10 = f10*f2;
+	f9 = f9*f0;
+	f5 = f7+f5;
+	f7 = f8*f6;
+	f5 = f5+f7;
+	f2 = f14*f2;
+	f0 = f13*f0;
+	f7 = f10+f9;
+	f8 = f12*f6;
+	f7 = f7+f8;
+	heapFloat[(r2+65)] = f5;
+	f0 = f2+f0;
+	f2 = f11*f6;
+	f0 = f0+f2;
+	heapFloat[(r2+66)] = f7;
+	heapFloat[(r2+67)] = f0;
+	f1 = f1-f5;
+	heap32[(r2+68)] = 0;
+	f2 = f4-f7;
+	heapFloat[(r2+69)] = f1;
+	f0 = f3-f0;
+	heapFloat[(r2+70)] = f2;
+	heapFloat[(r2+71)] = f0;
+	heap32[(r2+72)] = 0;
+	r1 = (r0 + 332)|0;
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r1;
+	_ZN22btVoronoiSimplexSolver14reduceVerticesERK15btUsageBitfield(i7);
+	f0 = heapFloat[(r2+84)];
+	f1 =                         0;
+	if(f0 >=f1) //_LBB571_24
+{
+	f0 = heapFloat[(r2+85)];
+if(!(f0 <f1)) //_LBB571_23
+{
+	f0 = heapFloat[(r2+86)];
+if(!(f0 <f1)) //_LBB571_23
+{
+	f0 = heapFloat[(r2+87)];
+	r1 = f0 >= f1;
+	r1 = r1 & 1;
+break _5;
+}
+}
+}
+	r1 = 0;
+}
+else{
+	if(r5 ==4) //_LBB571_28
+{
+	r4 = sp + -72;
+	r5 = r4 >> 2;
+	heap32[(fp+-18)] = 0;
+	heap32[(r5+1)] = 0;
+	heap32[(r5+2)] = 0;
+	heap32[(r5+3)] = 0;
+	heap8[sp+-24] = r1;
+	heap32[(r2+79)] = 0;
+	heap32[(r2+80)] = 0;
+	heap32[(r2+81)] = 0;
+	r3 = r3 | 15;
+	heap32[(r2+82)] = 0;
+	heap8[r0+332] = r3;
+	f0 = heapFloat[(r2+11)];
+	f1 = heapFloat[(r2+7)];
+	f2 = heapFloat[(r2+15)];
+	f3 = heapFloat[(r2+1)];
+	f4 = heapFloat[(r2+2)];
+	f5 = heapFloat[(r2+3)];
+	f6 = heapFloat[(r2+5)];
+	f7 = heapFloat[(r2+6)];
+	f8 = heapFloat[(r2+9)];
+	f9 = heapFloat[(r2+10)];
+	f10 = heapFloat[(r2+13)];
+	f11 = heapFloat[(r2+14)];
+	heap32[(g0)] = 0;
+	heap32[(g0+1)] = 0;
+	heap32[(g0+2)] = 0;
+	heapFloat[(g0+3)] = f3;
+	heapFloat[(g0+4)] = f4;
+	heapFloat[(g0+5)] = f5;
+	heapFloat[(g0+6)] = f6;
+	heapFloat[(g0+7)] = f7;
+	heapFloat[(g0+8)] = f1;
+	heapFloat[(g0+9)] = f8;
+	heapFloat[(g0+10)] = f9;
+	heapFloat[(g0+11)] = f0;
+	heapFloat[(g0+12)] = f10;
+	heapFloat[(g0+13)] = f11;
+	heapFloat[(g0+14)] = f2;
+	_ZN22btVoronoiSimplexSolver19pointOutsideOfPlaneERK9btVector3S2_S2_S2_S2_(i7);
+	r3 = r_g0;
+	heap32[(g0)] = 0;
+	heap32[(g0+1)] = 0;
+	heap32[(g0+2)] = 0;
+	heapFloat[(g0+3)] = f3;
+	heapFloat[(g0+4)] = f4;
+	heapFloat[(g0+5)] = f5;
+	heapFloat[(g0+6)] = f8;
+	heapFloat[(g0+7)] = f9;
+	heapFloat[(g0+8)] = f0;
+	heapFloat[(g0+9)] = f10;
+	heapFloat[(g0+10)] = f11;
+	heapFloat[(g0+11)] = f2;
+	heapFloat[(g0+12)] = f6;
+	heapFloat[(g0+13)] = f7;
+	heapFloat[(g0+14)] = f1;
+	_ZN22btVoronoiSimplexSolver19pointOutsideOfPlaneERK9btVector3S2_S2_S2_S2_(i7);
+	r6 = r_g0;
+	heap32[(g0)] = 0;
+	heap32[(g0+1)] = 0;
+	heap32[(g0+2)] = 0;
+	heapFloat[(g0+3)] = f3;
+	heapFloat[(g0+4)] = f4;
+	heapFloat[(g0+5)] = f5;
+	heapFloat[(g0+6)] = f10;
+	heapFloat[(g0+7)] = f11;
+	heapFloat[(g0+8)] = f2;
+	heapFloat[(g0+9)] = f6;
+	heapFloat[(g0+10)] = f7;
+	heapFloat[(g0+11)] = f1;
+	heapFloat[(g0+12)] = f8;
+	heapFloat[(g0+13)] = f9;
+	heapFloat[(g0+14)] = f0;
+	_ZN22btVoronoiSimplexSolver19pointOutsideOfPlaneERK9btVector3S2_S2_S2_S2_(i7);
+	r7 = r_g0;
+	heap32[(g0)] = 0;
+	heap32[(g0+1)] = 0;
+	heap32[(g0+2)] = 0;
+	heapFloat[(g0+3)] = f6;
+	heapFloat[(g0+4)] = f7;
+	heapFloat[(g0+5)] = f1;
+	heapFloat[(g0+6)] = f10;
+	heapFloat[(g0+7)] = f11;
+	heapFloat[(g0+8)] = f2;
+	heapFloat[(g0+9)] = f8;
+	heapFloat[(g0+10)] = f9;
+	heapFloat[(g0+11)] = f0;
+	heapFloat[(g0+12)] = f3;
+	heapFloat[(g0+13)] = f4;
+	heapFloat[(g0+14)] = f5;
+	r8 = r6 | r3;
+	_ZN22btVoronoiSimplexSolver19pointOutsideOfPlaneERK9btVector3S2_S2_S2_S2_(i7);
+	r9 = r_g0;
+if(!(r8 <0)) //_LBB571_52
+{
+	r10 = r9 | r7;
+if(!(r10 <0)) //_LBB571_52
+{
+	r8 = r8 | r7;
+	r8 = r8 | r9;
+	if(r8 ==0) //_LBB571_53
+{
+	r1 = 1;
+	heap8[r0+312] = r1;
+	heap32[(r2+69)] = 0;
+	heap32[(r2+70)] = 0;
+	heap32[(r2+71)] = 0;
+	heap32[(r2+72)] = 0;
+	r_g0 = r1;
+	return;
+}
+else{
+	r8 = (r0 + 4)|0;
+	r10 = (r0 + 20)|0;
+	r11 = (r0 + 36)|0;
+	r12 = (r0 + 52)|0;
+	if(r3 !=0) //_LBB571_33
+{
+	r3 = sp + -40;
+	heap32[(g0)] = r4;
+	heap32[(g0+1)] = r8;
+	heap32[(g0+2)] = r10;
+	heap32[(g0+3)] = r11;
+	heap32[(g0+4)] = r3;
+	_ZN22btVoronoiSimplexSolver22closestPtPointTriangleERK9btVector3S2_S2_S2_R25btSubSimplexClosestResult(i7);
+	r3 = r3 >> 2;
+	f1 = heapFloat[(fp+-10)];
+	f0 = heapFloat[(fp+-18)];
+	f2 = heapFloat[(r3+1)];
+	f3 = heapFloat[(r5+1)];
+	f0 = f1-f0;
+	f3 = f2-f3;
+	f4 = heapFloat[(r3+2)];
+	f5 = heapFloat[(r5+2)];
+	f5 = f4-f5;
+	f0 = f0*f0;
+	f3 = f3*f3;
+	f0 = f0+f3;
+	f3 = f5*f5;
+	f0 = f0+f3;
+	f3 =   3.4028234663852886e+038;
+	if(f0 >=f3) //_LBB571_32
+{
+__label__ = 31;
+}
+else{
+	f3 = heapFloat[(r3+3)];
+	heapFloat[(r2+79)] = f1;
+	heapFloat[(r2+80)] = f2;
+	heapFloat[(r2+81)] = f4;
+	heapFloat[(r2+82)] = f3;
+	r13 = heapU8[sp+-24];
+	r14 = heapU8[r0+332];
+	r15 = r13 & 1;
+	r14 = r14 & 240;
+	r14 = r15 | r14;
+	r15 = r13 & 2;
+	r14 = r14 | r15;
+	r13 = r13 & 4;
+	r13 = r14 | r13;
+	heap8[r0+332] = r13;
+	f1 = heapFloat[(r3+7)];
+	f2 = heapFloat[(r3+6)];
+	heap32[(r2+84)] = heap32[(r3+5)];
+	heapFloat[(r2+85)] = f2;
+	heapFloat[(r2+86)] = f1;
+	heap32[(r2+87)] = 0;
+__label__ = 34;
+}
+}
+else{
+__label__ = 31;
+}
+if (__label__ == 31){
+	f0 =   3.4028234663852886e+038;
+}
+	if(r6 !=0) //_LBB571_37
+{
+	r3 = sp + -40;
+	heap32[(g0)] = r4;
+	heap32[(g0+1)] = r8;
+	heap32[(g0+2)] = r11;
+	heap32[(g0+3)] = r12;
+	heap32[(g0+4)] = r3;
+	_ZN22btVoronoiSimplexSolver22closestPtPointTriangleERK9btVector3S2_S2_S2_R25btSubSimplexClosestResult(i7);
+	r3 = r3 >> 2;
+	f1 = heapFloat[(fp+-10)];
+	f2 = heapFloat[(fp+-18)];
+	f3 = heapFloat[(r3+1)];
+	f4 = heapFloat[(r5+1)];
+	f2 = f1-f2;
+	f4 = f3-f4;
+	f5 = heapFloat[(r3+2)];
+	f6 = heapFloat[(r5+2)];
+	f6 = f5-f6;
+	f2 = f2*f2;
+	f4 = f4*f4;
+	f2 = f2+f4;
+	f4 = f6*f6;
+	f2 = f2+f4;
+if(!(f2 >=f0)) //_LBB571_36
+{
+	f0 = heapFloat[(r3+3)];
+	heapFloat[(r2+79)] = f1;
+	heapFloat[(r2+80)] = f3;
+	heapFloat[(r2+81)] = f5;
+	heapFloat[(r2+82)] = f0;
+	r6 = heapU8[sp+-24];
+	r13 = heapU8[r0+332];
+	r14 = r6 << 1;
+	r6 = r6 & 1;
+	r13 = r13 & 240;
+	r6 = r6 | r13;
+	r13 = r14 & 4;
+	r6 = r6 | r13;
+	r13 = r14 & 8;
+	r6 = r6 | r13;
+	heap8[r0+332] = r6;
+	f0 = heapFloat[(r3+7)];
+	f1 = heapFloat[(r3+6)];
+	heap32[(r2+84)] = heap32[(r3+5)];
+	heap32[(r2+85)] = 0;
+	heapFloat[(r2+86)] = f1;
+	heapFloat[(r2+87)] = f0;
+	f0 = f2;
+}
+}
+	if(r7 !=0) //_LBB571_41
+{
+	r3 = sp + -40;
+	heap32[(g0)] = r4;
+	heap32[(g0+1)] = r8;
+	heap32[(g0+2)] = r12;
+	heap32[(g0+3)] = r10;
+	heap32[(g0+4)] = r3;
+	_ZN22btVoronoiSimplexSolver22closestPtPointTriangleERK9btVector3S2_S2_S2_R25btSubSimplexClosestResult(i7);
+	r3 = r3 >> 2;
+	f1 = heapFloat[(fp+-10)];
+	f2 = heapFloat[(fp+-18)];
+	f3 = heapFloat[(r3+1)];
+	f4 = heapFloat[(r5+1)];
+	f2 = f1-f2;
+	f4 = f3-f4;
+	f5 = heapFloat[(r3+2)];
+	f6 = heapFloat[(r5+2)];
+	f6 = f5-f6;
+	f2 = f2*f2;
+	f4 = f4*f4;
+	f2 = f2+f4;
+	f4 = f6*f6;
+	f2 = f2+f4;
+if(!(f2 >=f0)) //_LBB571_40
+{
+	f0 = heapFloat[(r3+3)];
+	heapFloat[(r2+79)] = f1;
+	heapFloat[(r2+80)] = f3;
+	heapFloat[(r2+81)] = f5;
+	heapFloat[(r2+82)] = f0;
+	r6 = heapU8[sp+-24];
+	r7 = heapU8[r0+332];
+	r8 = r6 >>> 1;
+	r13 = r6 & 1;
+	r7 = r7 & 240;
+	r6 = r6 << 2;
+	r7 = r13 | r7;
+	r8 = r8 & 2;
+	r7 = r7 | r8;
+	r6 = r6 & 8;
+	r6 = r7 | r6;
+	heap8[r0+332] = r6;
+	f0 = heapFloat[(r3+6)];
+	f1 = heapFloat[(r3+7)];
+	heap32[(r2+84)] = heap32[(r3+5)];
+	heapFloat[(r2+85)] = f1;
+	heap32[(r2+86)] = 0;
+	heapFloat[(r2+87)] = f0;
+	f0 = f2;
+}
+}
+if(!(r9 ==0)) //_LBB571_46
+{
+	r3 = sp + -40;
+	heap32[(g0)] = r4;
+	heap32[(g0+1)] = r10;
+	heap32[(g0+2)] = r12;
+	heap32[(g0+3)] = r11;
+	heap32[(g0+4)] = r3;
+	_ZN22btVoronoiSimplexSolver22closestPtPointTriangleERK9btVector3S2_S2_S2_R25btSubSimplexClosestResult(i7);
+	r3 = r3 >> 2;
+	f1 = heapFloat[(fp+-10)];
+	f2 = heapFloat[(fp+-18)];
+	f3 = heapFloat[(r3+1)];
+	f4 = heapFloat[(r5+1)];
+	f2 = f1-f2;
+	f4 = f3-f4;
+	f5 = heapFloat[(r3+2)];
+	f6 = heapFloat[(r5+2)];
+	f6 = f5-f6;
+	f2 = f2*f2;
+	f4 = f4*f4;
+	f2 = f2+f4;
+	f4 = f6*f6;
+	f2 = f2+f4;
+if(!(f2 >=f0)) //_LBB571_46
+{
+	f0 = heapFloat[(r3+3)];
+	heapFloat[(r2+79)] = f1;
+	heapFloat[(r2+80)] = f3;
+	heapFloat[(r2+81)] = f5;
+	heapFloat[(r2+82)] = f0;
+	r4 = heapU8[sp+-24];
+	r5 = heapU8[r0+332];
+	r6 = r4 << 1;
+	r6 = r6 & 2;
+	r5 = r5 & 240;
+	r7 = r4 << 2;
+	r5 = r6 | r5;
+	r4 = r4 & 4;
+	r4 = r5 | r4;
+	r5 = r7 & 8;
+	r4 = r4 | r5;
+	heap8[r0+332] = r4;
+	f0 = heapFloat[(r3+6)];
+	f1 = heapFloat[(r3+7)];
+	f2 = heapFloat[(r3+5)];
+	heap32[(r2+84)] = 0;
+	heapFloat[(r2+85)] = f2;
+	heapFloat[(r2+86)] = f1;
+	heapFloat[(r2+87)] = f0;
+}
+}
+	f0 = heapFloat[(r2+85)];
+	f1 = heapFloat[(r2+25)];
+	f2 = heapFloat[(r2+84)];
+	f3 = heapFloat[(r2+21)];
+	f4 = heapFloat[(r2+26)];
+	f5 = heapFloat[(r2+22)];
+	f3 = f3*f2;
+	f1 = f1*f0;
+	f6 = heapFloat[(r2+86)];
+	f7 = heapFloat[(r2+29)];
+	f8 = heapFloat[(r2+30)];
+	f9 = heapFloat[(r2+27)];
+	f10 = heapFloat[(r2+23)];
+	f5 = f5*f2;
+	f4 = f4*f0;
+	f1 = f3+f1;
+	f3 = f7*f6;
+	f7 = heapFloat[(r2+87)];
+	f11 = heapFloat[(r2+33)];
+	f12 = heapFloat[(r2+35)];
+	f13 = heapFloat[(r2+34)];
+	f14 = heapFloat[(r2+31)];
+	f10 = f10*f2;
+	f9 = f9*f0;
+	f4 = f5+f4;
+	f5 = f8*f6;
+	f1 = f1+f3;
+	f3 = f11*f7;
+	f8 = f10+f9;
+	f9 = f14*f6;
+	f4 = f4+f5;
+	f5 = f13*f7;
+	f1 = f1+f3;
+	f3 = f8+f9;
+	f8 = f12*f7;
+	f4 = f4+f5;
+	heapFloat[(r2+61)] = f1;
+	f3 = f3+f8;
+	heapFloat[(r2+62)] = f4;
+	heapFloat[(r2+63)] = f3;
+	heap32[(r2+64)] = 0;
+	f5 = heapFloat[(r2+45)];
+	f8 = heapFloat[(r2+41)];
+	f9 = heapFloat[(r2+49)];
+	f10 = heapFloat[(r2+46)];
+	f11 = heapFloat[(r2+42)];
+	f8 = f8*f2;
+	f5 = f5*f0;
+	f12 = heapFloat[(r2+53)];
+	f13 = heapFloat[(r2+50)];
+	f14 = heapFloat[(r2+47)];
+	f15 = heapFloat[(r2+43)];
+	f11 = f11*f2;
+	f10 = f10*f0;
+	f5 = f8+f5;
+	f8 = f9*f6;
+	f9 = heapFloat[(r2+55)];
+	f16 = heapFloat[(r2+54)];
+	f17 = heapFloat[(r2+51)];
+	f2 = f15*f2;
+	f0 = f14*f0;
+	f10 = f11+f10;
+	f11 = f13*f6;
+	f5 = f5+f8;
+	f8 = f12*f7;
+	f5 = f5+f8;
+	f0 = f2+f0;
+	f2 = f17*f6;
+	f6 = f10+f11;
+	f8 = f16*f7;
+	f6 = f6+f8;
+	heapFloat[(r2+65)] = f5;
+	f0 = f0+f2;
+	f2 = f9*f7;
+	f0 = f0+f2;
+	heapFloat[(r2+66)] = f6;
+	heapFloat[(r2+67)] = f0;
+	f1 = f1-f5;
+	heap32[(r2+68)] = 0;
+	f2 = f4-f6;
+	heapFloat[(r2+69)] = f1;
+	f0 = f3-f0;
+	heapFloat[(r2+70)] = f2;
+	heapFloat[(r2+71)] = f0;
+	heap32[(r2+72)] = 0;
+	r3 = (r0 + 332)|0;
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r3;
+	_ZN22btVoronoiSimplexSolver14reduceVerticesERK15btUsageBitfield(i7);
+	f0 = heapFloat[(r2+84)];
+	f1 =                         0;
+	if(f0 >=f1) //_LBB571_48
+{
+	f0 = heapFloat[(r2+85)];
+	if(f0 <f1) //_LBB571_47
+{
+break _5;
+}
+else{
+	f0 = heapFloat[(r2+86)];
+	if(f0 <f1) //_LBB571_47
+{
+break _5;
+}
+else{
+	f0 = heapFloat[(r2+87)];
+	r1 = f0 >= f1;
+	r1 = r1 & 1;
+break _5;
+}
+}
+}
+else{
+break _5;
+}
+}
+}
+}
+	r2 = 1;
+	heap8[r0+352] = r2;
+	r2 = 0;
+	heap8[r0+312] = r2;
+	r_g0 = r2;
+	return;
+}
+else{
+__label__ = 8;
+break _3;
+}
+}
+}
+} while(0);
+	heap8[r0+312] = r1;
+	r0 = r1 & 255;
+	r_g0 = r0;
+	return;
+}
+else{
+	if(r5 ==0) //_LBB571_8
+{
+__label__ = 8;
+}
+else{
+	if(r5 ==1) //_LBB571_10
+{
+	f0 = heapFloat[(r2+21)];
+	heapFloat[(r2+61)] = f0;
+	f1 = heapFloat[(r2+22)];
+	heapFloat[(r2+62)] = f1;
+	f2 = heapFloat[(r2+23)];
+	heapFloat[(r2+63)] = f2;
+	heap32[(r2+64)] = heap32[(r2+24)];
+	f3 = heapFloat[(r2+41)];
+	heapFloat[(r2+65)] = f3;
+	f4 = heapFloat[(r2+42)];
+	heapFloat[(r2+66)] = f4;
+	f5 = heapFloat[(r2+43)];
+	heapFloat[(r2+67)] = f5;
+	f0 = f0-f3;
+	heap32[(r2+68)] = heap32[(r2+44)];
+	f1 = f1-f4;
+	heapFloat[(r2+69)] = f0;
+	f0 = f2-f5;
+	heapFloat[(r2+70)] = f1;
+	heapFloat[(r2+71)] = f0;
+	r1 = 0;
+	heap32[(r2+72)] = 0;
+	heap8[r0+352] = r1;
+	heap8[r0+332] = r4;
+	heap32[(r2+84)] = 1065353216;
+	heap32[(r2+85)] = 0;
+	heap32[(r2+86)] = 0;
+	heap32[(r2+87)] = 0;
+	r1 = 1;
+__label__ = 9;
+}
+else{
+__label__ = 8;
+}
+}
+}
+} while(0);
+if (__label__ == 8){
+	r1 = 0;
+}
+	heap8[r0+312] = r1;
+	r_g0 = r1;
+	return;
+}
+else{
+	r0 = heapU8[r0+312];
+	r_g0 = r0;
+	return;
+}
+}
+
+function _ZN16btCollisionWorld27ClosestConvexResultCallbackD1Ev(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+var __label__ = 0;
+	i7 = sp + 0;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = _ZTVN16btCollisionWorld27ClosestConvexResultCallbackE;
+	r0 = r0 >> 2;
+	r1 = (r1 + 8)|0;
+	heap32[(r0)] = r1;
+	return;
+}
+
+function _ZN16btCollisionWorld27ClosestConvexResultCallbackD0Ev(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+var __label__ = 0;
+	i7 = sp + -8;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = _ZTVN16btCollisionWorld27ClosestConvexResultCallbackE;
+	r2 = r0 >> 2;
+	r1 = (r1 + 8)|0;
+	heap32[(r2)] = r1;
+	heap32[(g0)] = r0;
+	_ZdlPv(i7);
+	return;
+}
+
+function _ZN16btCollisionWorld27ClosestConvexResultCallback15addSingleResultERNS_17LocalConvexResultEb(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var f0;
+	var f1;
+	var f2;
+	var f3;
+	var f4;
+	var f5;
+	var f6;
+	var f7;
+	var f8;
+	var f9;
+	var f10;
+	var f11;
+var __label__ = 0;
+	i7 = sp + -16;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp+1)];
+	r0 = r0 >> 2;
+	r1 = heap32[(fp)];
+	f0 = heapFloat[(r0+10)];
+	r1 = r1 >> 2;
+	f1 = heapFloat[(r1+1)];
+	if(f0 <=f1) //_LBB574_2
+{
+	r2 = heap32[(fp+2)];
+	heapFloat[(r1+1)] = f0;
+	r3 = heap32[(r0)];
+	heap32[(r1+19)] = r3;
+	if(r2 ==0) //_LBB574_4
+{
+	r2 = r3 >> 2;
+	f0 = heapFloat[(r0+2)];
+	f1 = heapFloat[(r2+1)];
+	f2 = heapFloat[(r0+3)];
+	f3 = heapFloat[(r2+2)];
+	f4 = heapFloat[(r2+5)];
+	f5 = heapFloat[(r2+6)];
+	f1 = f1*f0;
+	f3 = f3*f2;
+	f6 = heapFloat[(r0+4)];
+	f7 = heapFloat[(r2+3)];
+	f8 = heapFloat[(r2+9)];
+	f9 = heapFloat[(r2+10)];
+	f10 = heapFloat[(r2+11)];
+	f11 = heapFloat[(r2+7)];
+	f4 = f4*f0;
+	f5 = f5*f2;
+	f1 = f1+f3;
+	f3 = f7*f6;
+	f0 = f8*f0;
+	f2 = f9*f2;
+	f4 = f4+f5;
+	f5 = f11*f6;
+	f1 = f1+f3;
+	f0 = f0+f2;
+	f2 = f10*f6;
+	f3 = f4+f5;
+	heapFloat[(r1+11)] = f1;
+	f0 = f0+f2;
+	heapFloat[(r1+12)] = f3;
+	heapFloat[(r1+13)] = f0;
+	heap32[(r1+14)] = 0;
+}
+else{
+	heap32[(r1+11)] = heap32[(r0+2)];
+	heap32[(r1+12)] = heap32[(r0+3)];
+	heap32[(r1+13)] = heap32[(r0+4)];
+	heap32[(r1+14)] = heap32[(r0+5)];
+}
+	heap32[(r1+15)] = heap32[(r0+6)];
+	heap32[(r1+16)] = heap32[(r0+7)];
+	heap32[(r1+17)] = heap32[(r0+8)];
+	heap32[(r1+18)] = heap32[(r0+9)];
+	f0 = heapFloat[(r0+10)];
+	f_g0 = f0;
+	return;
+}
+else{
+	r0 = _2E_str36;
+	r1 = _2E_str4;
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r1;
+	heap32[(g0+2)] = 384;
+	_assert(i7);
+}
+}
+
+function _ZNK21btConeTwistConstraint28calculateSerializeBufferSizeEv(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+var __label__ = 0;
+	i7 = sp + 0;var g0 = i7>>2; // save stack
+	r0 = 204;
+	r_g0 = r0;
+	return;
+}
+
+function _ZNK21btConeTwistConstraint9serializeEPvP12btSerializer(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+var __label__ = 0;
+	i7 = sp + -16;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = heap32[(fp+1)];
+	r2 = heap32[(fp+2)];
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r1;
+	heap32[(g0+2)] = r2;
+	r1 = r1 >> 2;
+	r0 = r0 >> 2;
+	_ZNK17btTypedConstraint9serializeEPvP12btSerializer(i7);
+	heap32[(r1+11)] = heap32[(r0+72)];
+	heap32[(r1+12)] = heap32[(r0+73)];
+	heap32[(r1+13)] = heap32[(r0+74)];
+	heap32[(r1+14)] = heap32[(r0+75)];
+	heap32[(r1+15)] = heap32[(r0+76)];
+	heap32[(r1+16)] = heap32[(r0+77)];
+	heap32[(r1+17)] = heap32[(r0+78)];
+	heap32[(r1+18)] = heap32[(r0+79)];
+	heap32[(r1+19)] = heap32[(r0+80)];
+	heap32[(r1+20)] = heap32[(r0+81)];
+	heap32[(r1+21)] = heap32[(r0+82)];
+	heap32[(r1+22)] = heap32[(r0+83)];
+	heap32[(r1+23)] = heap32[(r0+84)];
+	heap32[(r1+24)] = heap32[(r0+85)];
+	heap32[(r1+25)] = heap32[(r0+86)];
+	heap32[(r1+26)] = heap32[(r0+87)];
+	heap32[(r1+27)] = heap32[(r0+88)];
+	heap32[(r1+28)] = heap32[(r0+89)];
+	heap32[(r1+29)] = heap32[(r0+90)];
+	heap32[(r1+30)] = heap32[(r0+91)];
+	heap32[(r1+31)] = heap32[(r0+92)];
+	heap32[(r1+32)] = heap32[(r0+93)];
+	heap32[(r1+33)] = heap32[(r0+94)];
+	heap32[(r1+34)] = heap32[(r0+95)];
+	heap32[(r1+35)] = heap32[(r0+96)];
+	heap32[(r1+36)] = heap32[(r0+97)];
+	heap32[(r1+37)] = heap32[(r0+98)];
+	heap32[(r1+38)] = heap32[(r0+99)];
+	heap32[(r1+39)] = heap32[(r0+100)];
+	heap32[(r1+40)] = heap32[(r0+101)];
+	heap32[(r1+41)] = heap32[(r0+102)];
+	heap32[(r1+42)] = heap32[(r0+103)];
+	heap32[(r1+43)] = heap32[(r0+108)];
+	heap32[(r1+44)] = heap32[(r0+109)];
+	heap32[(r1+45)] = heap32[(r0+110)];
+	heap32[(r1+46)] = heap32[(r0+104)];
+	heap32[(r1+47)] = heap32[(r0+105)];
+	heap32[(r1+48)] = heap32[(r0+106)];
+	heap32[(r1+49)] = heap32[(r0+107)];
+	r0 = _2E_str239;
+	r_g0 = r0;
+	return;
+}
+
+function _ZN21btConeTwistConstraintD0Ev(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+var __label__ = 0;
+	i7 = sp + -8;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = _ZTV21btConeTwistConstraint;
+	r2 = r0 >> 2;
+	r1 = (r1 + 8)|0;
+	heap32[(r2)] = r1;
+	heap32[(g0)] = r0;
+	_ZdlPv(i7);
+	return;
+}
+
+function _ZN21btConeTwistConstraintD1Ev(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+var __label__ = 0;
+	i7 = sp + 0;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = _ZTV21btConeTwistConstraint;
+	r0 = r0 >> 2;
+	r1 = (r1 + 8)|0;
+	heap32[(r0)] = r1;
+	return;
+}
+
+function _ZN21btConeTwistConstraint13buildJacobianEv(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+	var r6;
+	var r7;
+	var r8;
+	var r9;
+	var r10;
+	var r11;
+	var r12;
+	var f0;
+	var f1;
+	var f2;
+	var f3;
+	var f4;
+	var f5;
+	var f6;
+	var f7;
+	var f8;
+	var f9;
+	var f10;
+	var f11;
+	var f12;
+	var f13;
+	var f14;
+	var f15;
+	var f16;
+	var f17;
+	var f18;
+	var f19;
+	var f20;
+	var f21;
+	var f22;
+	var f23;
+var __label__ = 0;
+	i7 = sp + -216;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = heapU8[r0+515];
+if(!(r1 ==0)) //_LBB579_14
+{
+	r1 = r0 >> 2;
+	heap32[(r1+7)] = 0;
+	heap32[(r1+127)] = 0;
+	heap32[(r1+126)] = 0;
+	heap32[(r1+141)] = 0;
+	heap32[(r1+142)] = 0;
+	heap32[(r1+143)] = 0;
+	heap32[(r1+144)] = 0;
+	r2 = heapU8[r0+512];
+if(!(r2 !=0)) //_LBB579_13
+{
+	r2 = heap32[(r1+6)];
+	r3 = heap32[(r1+5)];
+	r2 = r2 >> 2;
+	r3 = r3 >> 2;
+	f0 = heapFloat[(r2+5)];
+	f1 = heapFloat[(r1+100)];
+	f2 = heapFloat[(r2+1)];
+	f3 = heapFloat[(r2+6)];
+	f4 = heapFloat[(r1+101)];
+	f5 = heapFloat[(r2+2)];
+	f6 = heapFloat[(r3+5)];
+	f7 = heapFloat[(r1+84)];
+	f8 = heapFloat[(r3+1)];
+	f9 = heapFloat[(r3+6)];
+	f10 = heapFloat[(r1+85)];
+	f11 = heapFloat[(r3+2)];
+	f12 = heapFloat[(r2+9)];
+	f13 = heapFloat[(r2+10)];
+	f14 = heapFloat[(r3+9)];
+	f15 = heapFloat[(r3+10)];
+	f0 = f0*f1;
+	f3 = f3*f4;
+	f16 = heapFloat[(r2+7)];
+	f17 = heapFloat[(r1+102)];
+	f18 = heapFloat[(r2+3)];
+	f6 = f6*f7;
+	f9 = f9*f10;
+	f19 = heapFloat[(r3+7)];
+	f20 = heapFloat[(r1+86)];
+	f21 = heapFloat[(r3+3)];
+	f2 = f2*f1;
+	f5 = f5*f4;
+	f8 = f8*f7;
+	f11 = f11*f10;
+	f22 = heapFloat[(r2+11)];
+	f23 = heapFloat[(r3+11)];
+	f1 = f12*f1;
+	f4 = f13*f4;
+	f7 = f14*f7;
+	f10 = f15*f10;
+	f0 = f0+f3;
+	f3 = f16*f17;
+	f6 = f6+f9;
+	f9 = f19*f20;
+	f2 = f2+f5;
+	f5 = f18*f17;
+	f8 = f8+f11;
+	f11 = f21*f20;
+	f1 = f1+f4;
+	f4 = f22*f17;
+	f7 = f7+f10;
+	f10 = f23*f20;
+	f0 = f0+f3;
+	f3 = heapFloat[(r2+14)];
+	f6 = f6+f9;
+	f9 = heapFloat[(r3+14)];
+	f2 = f2+f5;
+	f5 = heapFloat[(r2+13)];
+	f8 = f8+f11;
+	f11 = heapFloat[(r3+13)];
+	f0 = f0+f3;
+	f3 = f6+f9;
+	f2 = f2+f5;
+	f5 = f8+f11;
+	f1 = f1+f4;
+	f4 = heapFloat[(r2+15)];
+	f6 = f7+f10;
+	f7 = heapFloat[(r3+15)];
+	f8 = f0-f3;
+	f9 = f2-f5;
+	f1 = f1+f4;
+	f4 = f6+f7;
+	f6 = f1-f4;
+	f7 = f9*f9;
+	f10 = f8*f8;
+	f7 = f7+f10;
+	f10 = f6*f6;
+	f7 = f7+f10;
+	f10 =   1.1920928955078125e-007;
+	if(f7 >f10) //_LBB579_4
+{
+	heapFloat[(g0)] = f7;
+	f10 =                         1;
+	sqrtf(i7);
+	f11 = f10/f_g0;
+	r2 = sp + -176;
+	f7 = f9*f11;
+	f8 = f8*f11;
+	r3 = r2 >> 2;
+	heapFloat[(fp+-44)] = f7;
+	f6 = f6*f11;
+	heapFloat[(r3+1)] = f8;
+	r2 = (r2 + 8)|0;
+	heapFloat[(r3+2)] = f6;
+	heap32[(r3+3)] = 0;
+	f9 =                         0;
+	if(f6 <f9) //_LBB579_6
+{
+	f9 = -f6;
+}
+else{
+	f9 = f6;
+}
+	f11 =       0.70710676908493042;
+	if(f9 >f11) //_LBB579_9
+{
+	f7 = f8*f8;
+	f8 = f6*f6;
+	f7 = f7+f8;
+	heapFloat[(g0)] = f7;
+	sqrtf(i7);
+	heap32[(r3+4)] = 0;
+	f6 = heapFloat[(r3+2)];
+	f8 = f10/f_g0;
+	f6 = -f6;
+	f6 = f8*f6;
+	heapFloat[(r3+5)] = f6;
+	f9 = heapFloat[(r3+1)];
+	f9 = f9*f8;
+	f7 = f7*f8;
+	heapFloat[(r3+6)] = f9;
+	heapFloat[(r3+8)] = f7;
+	f7 = heapFloat[(fp+-44)];
+	f8 = -f7;
+	f8 = f9*f8;
+	f7 = f7*f6;
+	heapFloat[(r3+9)] = f8;
+	heapFloat[(r3+10)] = f7;
+__label__ = 10;
+}
+else{
+__label__ = 9;
+}
+}
+else{
+	r2 = sp + -176;
+	r3 = r2 >> 2;
+	heap32[(fp+-44)] = 1065353216;
+	heap32[(r3+1)] = 0;
+	r2 = (r2 + 8)|0;
+	f7 =                         1;
+	f8 =                         0;
+	heap32[(r3+2)] = 0;
+	heap32[(r3+3)] = 0;
+__label__ = 9;
+}
+if (__label__ == 9){
+	f6 = f7*f7;
+	f7 = f8*f8;
+	f6 = f6+f7;
+	r3 = sp + -176;
+	heapFloat[(g0)] = f6;
+	r3 = r3 >> 2;
+	sqrtf(i7);
+	f8 =                         1;
+	f9 = heapFloat[(r3+1)];
+	f7 = f8/f_g0;
+	f8 = -f9;
+	f8 = f7*f8;
+	heapFloat[(r3+4)] = f8;
+	f9 = heapFloat[(fp+-44)];
+	f9 = f9*f7;
+	heapFloat[(r3+5)] = f9;
+	r2 = r2 >> 2;
+	heap32[(r3+6)] = 0;
+	f10 = heapFloat[(r2)];
+	f11 = -f10;
+	f9 = f9*f11;
+	f8 = f10*f8;
+	heapFloat[(r3+8)] = f9;
+	f6 = f6*f7;
+	heapFloat[(r3+9)] = f8;
+	heapFloat[(r3+10)] = f6;
+}
+	r2 = (r0 + 36)|0;
+	r3 = 0;
+_16: while(true){
+	r4 = heap32[(r1+5)];
+	r5 = r4 >> 2;
+	r6 = sp + -128;
+	r7 = r6 >> 2;
+	heap32[(fp+-32)] = heap32[(r5+1)];
+	heap32[(r7+1)] = heap32[(r5+5)];
+	heap32[(r7+2)] = heap32[(r5+9)];
+	heap32[(r7+3)] = 0;
+	heap32[(r7+4)] = heap32[(r5+2)];
+	heap32[(r7+5)] = heap32[(r5+6)];
+	heap32[(r7+6)] = heap32[(r5+10)];
+	heap32[(r7+7)] = 0;
+	heap32[(r7+8)] = heap32[(r5+3)];
+	heap32[(r7+9)] = heap32[(r5+7)];
+	heap32[(r7+10)] = heap32[(r5+11)];
+	heap32[(r7+11)] = 0;
+	r7 = heap32[(r1+6)];
+	r8 = sp + -80;
+	r9 = r7 >> 2;
+	r10 = r8 >> 2;
+	heap32[(fp+-20)] = heap32[(r9+1)];
+	heap32[(r10+1)] = heap32[(r9+5)];
+	heap32[(r10+2)] = heap32[(r9+9)];
+	heap32[(r10+3)] = 0;
+	heap32[(r10+4)] = heap32[(r9+2)];
+	heap32[(r10+5)] = heap32[(r9+6)];
+	heap32[(r10+6)] = heap32[(r9+10)];
+	heap32[(r10+7)] = 0;
+	heap32[(r10+8)] = heap32[(r9+3)];
+	heap32[(r10+9)] = heap32[(r9+7)];
+	heap32[(r10+10)] = heap32[(r9+11)];
+	heap32[(r10+11)] = 0;
+	f6 = heapFloat[(r5+13)];
+	f7 = heapFloat[(r5+15)];
+	f8 = heapFloat[(r5+14)];
+	r10 = sp + -32;
+	f6 = f5-f6;
+	r11 = r10 >> 2;
+	f8 = f3-f8;
+	heapFloat[(fp+-8)] = f6;
+	f6 = f4-f7;
+	heapFloat[(r11+1)] = f8;
+	heapFloat[(r11+2)] = f6;
+	heap32[(r11+3)] = 0;
+	f6 = heapFloat[(r9+13)];
+	f7 = heapFloat[(r9+15)];
+	f8 = heapFloat[(r9+14)];
+	r11 = sp + -16;
+	f6 = f2-f6;
+	r12 = r11 >> 2;
+	f8 = f0-f8;
+	heapFloat[(fp+-4)] = f6;
+	f6 = f1-f7;
+	heapFloat[(r12+1)] = f8;
+	heapFloat[(r12+2)] = f6;
+	heap32[(r12+3)] = 0;
+	f6 = heapFloat[(r9+84)];
+	f7 = heapFloat[(r5+84)];
+	r5 = sp + -176;
+	r5 = (r5 + r3)|0;
+	r4 = (r4 + 388)|0;
+	r7 = (r7 + 388)|0;
+	heap32[(g0)] = r2;
+	heap32[(g0+1)] = r6;
+	heap32[(g0+2)] = r8;
+	heap32[(g0+3)] = r10;
+	heap32[(g0+4)] = r11;
+	heap32[(g0+5)] = r5;
+	heap32[(g0+6)] = r4;
+	heapFloat[(g0+7)] = f7;
+	heap32[(g0+8)] = r7;
+	heapFloat[(g0+9)] = f6;
+	r3 = (r3 + 16)|0;
+	r2 = (r2 + 84)|0;
+	_ZN15btJacobianEntryC2ERK11btMatrix3x3S2_RK9btVector3S5_S5_S5_fS5_f(i7);
+if(!(r3 !=48)) //_LBB579_12
+{
+break _16;
+}
+}
+}
+	r2 = heap32[(r1+6)];
+	r1 = heap32[(r1+5)];
+	r3 = (r1 + 4)|0;
+	r4 = (r2 + 4)|0;
+	r1 = (r1 + 256)|0;
+	r2 = (r2 + 256)|0;
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r3;
+	heap32[(g0+2)] = r4;
+	heap32[(g0+3)] = r1;
+	heap32[(g0+4)] = r2;
+	_ZN21btConeTwistConstraint14calcAngleInfo2ERK11btTransformS2_RK11btMatrix3x3S5_(i7);
+}
+	return;
+}
+
+function _ZN21btConeTwistConstraint8getInfo1EPN17btTypedConstraint17btConstraintInfo1E(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+	var r6;
+	var f0;
+	var f1;
+var __label__ = 0;
+	i7 = sp + -24;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = heap32[(fp+1)];
+	r2 = heapU8[r0+515];
+	if(r2 ==0) //_LBB580_2
+{
+	r1 = r1 >> 2;
+	heap32[(r1)] = 3;
+	r2 = r0 >> 2;
+	heap32[(r1+1)] = 3;
+	r3 = heap32[(r2+6)];
+	r4 = heap32[(r2+5)];
+	r5 = (r4 + 4)|0;
+	r6 = (r3 + 4)|0;
+	r4 = (r4 + 256)|0;
+	r3 = (r3 + 256)|0;
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r5;
+	heap32[(g0+2)] = r6;
+	heap32[(g0+3)] = r4;
+	heap32[(g0+4)] = r3;
+	_ZN21btConeTwistConstraint14calcAngleInfo2ERK11btTransformS2_RK11btMatrix3x3S5_(i7);
+	r3 = heapU8[r0+514];
+if(!(r3 ==0)) //_LBB580_6
+{
+	r3 = heap32[(r1)];
+	r4 = (r3 + 1)|0;
+	heap32[(r1)] = r4;
+	r4 = heap32[(r1+1)];
+	r5 = (r4 + -1)|0;
+	heap32[(r1+1)] = r5;
+	f0 = heapFloat[(r2+111)];
+	f1 = heapFloat[(r2+108)];
+if(!(f1 >=f0)) //_LBB580_6
+{
+	f1 = heapFloat[(r2+109)];
+if(!(f1 >=f0)) //_LBB580_6
+{
+	r2 = (r3 + 2)|0;
+	r3 = (r4 + -2)|0;
+	heap32[(r1)] = r2;
+	heap32[(r1+1)] = r3;
+}
+}
+}
+	r0 = heapU8[r0+513];
+if(!(r0 ==0)) //_LBB580_8
+{
+	r0 = heap32[(r1)];
+	r0 = (r0 + 1)|0;
+	heap32[(r1)] = r0;
+	r0 = heap32[(r1+1)];
+	r0 = (r0 + -1)|0;
+	heap32[(r1+1)] = r0;
+}
+	return;
+}
+else{
+	r0 = r1 >> 2;
+	heap32[(r0)] = 0;
+	heap32[(r0+1)] = 0;
+	return;
+}
+}
+
+function _ZN21btConeTwistConstraint8getInfo2EPN17btTypedConstraint17btConstraintInfo2E(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+	var r6;
+	var r7;
+	var r8;
+	var r9;
+	var r10;
+	var r11;
+	var r12;
+	var r13;
+	var r14;
+	var f0;
+	var f1;
+	var f2;
+	var f3;
+	var f4;
+	var f5;
+	var f6;
+	var f7;
+	var f8;
+	var f9;
+	var f10;
+	var f11;
+	var f12;
+	var f13;
+	var f14;
+	var f15;
+	var f16;
+	var f17;
+	var f18;
+var __label__ = 0;
+	i7 = sp + -24;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = r0 >> 2;
+	r2 = heap32[(r1+6)];
+	r3 = heap32[(r1+5)];
+	r4 = (r3 + 4)|0;
+	r5 = (r2 + 4)|0;
+	r6 = (r3 + 256)|0;
+	r7 = (r2 + 256)|0;
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r4;
+	heap32[(g0+2)] = r5;
+	heap32[(g0+3)] = r6;
+	heap32[(g0+4)] = r7;
+	_ZN21btConeTwistConstraint14calcAngleInfo2ERK11btTransformS2_RK11btMatrix3x3S5_(i7);
+	r4 = heapU8[r0+515];
+	if(r4 ==0) //_LBB581_2
+{
+	r4 = heap32[(fp+1)];
+	r5 = r4 >> 2;
+	r6 = heap32[(r5+2)];
+	r6 = r6 >> 2;
+	heap32[(r6)] = 1065353216;
+	r6 = heap32[(r5+6)];
+	r7 = heap32[(r5+2)];
+	r6 = r6 << 2;
+	r6 = (r6 + r7)|0;
+	r6 = r6 >> 2;
+	heap32[(r6+1)] = 1065353216;
+	r6 = heap32[(r5+6)];
+	r7 = heap32[(r5+2)];
+	r6 = r6 << 3;
+	r6 = (r6 + r7)|0;
+	r6 = r6 >> 2;
+	heap32[(r6+2)] = 1065353216;
+	r3 = r3 >> 2;
+	f0 = heapFloat[(r3+9)];
+	f1 = heapFloat[(r1+84)];
+	f2 = heapFloat[(r3+5)];
+	f3 = heapFloat[(r3+10)];
+	f4 = heapFloat[(r1+85)];
+	f5 = heapFloat[(r3+6)];
+	r6 = heap32[(r5+6)];
+	f6 = heapFloat[(r3+1)];
+	f7 = heapFloat[(r3+2)];
+	r7 = heap32[(r5+3)];
+	f2 = f2*f1;
+	f5 = f5*f4;
+	f0 = f0*f1;
+	f3 = f3*f4;
+	f8 = heapFloat[(r3+11)];
+	f9 = heapFloat[(r1+86)];
+	f10 = heapFloat[(r3+7)];
+	f11 = heapFloat[(r3+3)];
+	f2 = f2+f5;
+	f5 = f10*f9;
+	r8 = r7 >> 2;
+	f0 = f0+f3;
+	f3 = f8*f9;
+	f2 = f2+f5;
+	f0 = f0+f3;
+	heap32[(r8)] = 0;
+	r9 = r6 << 2;
+	f3 = -f2;
+	heapFloat[(r8+1)] = f0;
+	r9 = (r7 + r9)|0;
+	heapFloat[(r8+2)] = f3;
+	r9 = r9 >> 2;
+	f1 = f6*f1;
+	f3 = f7*f4;
+	f4 = -f0;
+	heap32[(r8+3)] = 0;
+	heapFloat[(r9)] = f4;
+	f1 = f1+f3;
+	f3 = f11*f9;
+	r6 = r6 << 3;
+	f1 = f1+f3;
+	heap32[(r9+1)] = 0;
+	r8 = (r6 + r7)|0;
+	r6 = r6 | 4;
+	heapFloat[(r9+2)] = f1;
+	r6 = (r7 + r6)|0;
+	r7 = r8 >> 2;
+	heap32[(r9+3)] = 0;
+	r6 = r6 >> 2;
+	f3 = -f1;
+	heapFloat[(r7)] = f2;
+	heapFloat[(r6)] = f3;
+	heap32[(r7+2)] = 0;
+	heap32[(r7+3)] = 0;
+	r2 = r2 >> 2;
+	f3 = heapFloat[(r2+9)];
+	f4 = heapFloat[(r1+100)];
+	f5 = heapFloat[(r2+10)];
+	f6 = heapFloat[(r1+101)];
+	f3 = f3*f4;
+	f5 = f5*f6;
+	f7 = heapFloat[(r2+11)];
+	f8 = heapFloat[(r1+102)];
+	r6 = heap32[(r5+6)];
+	f9 = heapFloat[(r2+5)];
+	f10 = heapFloat[(r2+6)];
+	f11 = heapFloat[(r2+7)];
+	f12 = heapFloat[(r2+1)];
+	f13 = heapFloat[(r2+2)];
+	f14 = heapFloat[(r2+3)];
+	r7 = heap32[(r5+5)];
+	f3 = f3+f5;
+	f5 = f7*f8;
+	f3 = f3+f5;
+	r8 = r7 >> 2;
+	f5 = f9*f4;
+	f7 = f10*f6;
+	f5 = f5+f7;
+	f7 = f11*f8;
+	f9 = -f3;
+	heap32[(r8)] = 0;
+	f5 = f5+f7;
+	r9 = r6 << 2;
+	heapFloat[(r8+1)] = f9;
+	r9 = (r7 + r9)|0;
+	heapFloat[(r8+2)] = f5;
+	f4 = f12*f4;
+	f6 = f13*f6;
+	f4 = f4+f6;
+	f6 = f14*f8;
+	r9 = r9 >> 2;
+	heap32[(r8+3)] = 0;
+	f4 = f4+f6;
+	heapFloat[(r9)] = f3;
+	r6 = r6 << 3;
+	f6 = -f4;
+	heap32[(r9+1)] = 0;
+	r8 = (r6 + r7)|0;
+	r6 = r6 | 4;
+	heapFloat[(r9+2)] = f6;
+	r6 = (r7 + r6)|0;
+	r7 = r8 >> 2;
+	f6 = -f5;
+	heap32[(r9+3)] = 0;
+	r6 = r6 >> 2;
+	heapFloat[(r7)] = f6;
+	heapFloat[(r6)] = f4;
+	heap32[(r7+2)] = 0;
+	heap32[(r7+3)] = 0;
+	r6 = heapU8[r0+580];
+	r6 = r6 & 2;
+	if(r6 ==0) //_LBB581_4
+{
+	r4 = (r4 + 4)|0;
+}
+else{
+	r4 = (r0 + 588)|0;
+}
+	f6 = heapFloat[(r2+13)];
+	r4 = r4 >> 2;
+	f4 = f4+f6;
+	f1 = f4-f1;
+	f4 = heapFloat[(r3+13)];
+	f6 = heapFloat[(r4)];
+	f7 = heapFloat[(r5)];
+	r4 = heap32[(r5+7)];
+	f6 = f7*f6;
+	f1 = f1-f4;
+	r4 = r4 >> 2;
+	f1 = f1*f6;
+	heapFloat[(r4)] = f1;
+	r4 = heap32[(r5+9)];
+	r4 = r4 >> 2;
+	heap32[(r4)] = -8388609;
+	r4 = heap32[(r5+10)];
+	r4 = r4 >> 2;
+	heap32[(r4)] = 2139095039;
+	r4 = heapU8[r0+580];
+	r4 = r4 & 1;
+if(!(r4 ==0)) //_LBB581_7
+{
+	r4 = heap32[(r5+8)];
+	r4 = r4 >> 2;
+	heap32[(r4)] = heap32[(r1+146)];
+}
+	f1 = heapFloat[(r2+14)];
+	r4 = heap32[(r5+6)];
+	f1 = f5+f1;
+	r4 = r4 << 2;
+	r6 = heap32[(r5+7)];
+	f4 = heapFloat[(r3+14)];
+	f1 = f1-f2;
+	r4 = (r6 + r4)|0;
+	f1 = f1-f4;
+	r4 = r4 >> 2;
+	f1 = f1*f6;
+	heapFloat[(r4)] = f1;
+	r4 = heap32[(r5+6)];
+	r6 = heap32[(r5+9)];
+	r4 = r4 << 2;
+	r4 = (r6 + r4)|0;
+	r4 = r4 >> 2;
+	heap32[(r4)] = -8388609;
+	r4 = heap32[(r5+6)];
+	r6 = heap32[(r5+10)];
+	r4 = r4 << 2;
+	r4 = (r6 + r4)|0;
+	r4 = r4 >> 2;
+	heap32[(r4)] = 2139095039;
+	r4 = heapU8[r0+580];
+	r4 = r4 & 1;
+if(!(r4 ==0)) //_LBB581_25
+{
+	r4 = heap32[(r5+6)];
+	r6 = heap32[(r5+8)];
+	r4 = r4 << 2;
+	r4 = (r6 + r4)|0;
+	r4 = r4 >> 2;
+	heap32[(r4)] = heap32[(r1+146)];
+}
+	f1 = heapFloat[(r2+15)];
+	r2 = heap32[(r5+6)];
+	f3 = f3+f1;
+	r2 = r2 << 3;
+	r4 = heap32[(r5+7)];
+	f1 = heapFloat[(r3+15)];
+	f0 = f3-f0;
+	r2 = (r4 + r2)|0;
+	f0 = f0-f1;
+	r2 = r2 >> 2;
+	f0 = f0*f6;
+	heapFloat[(r2)] = f0;
+	r2 = heap32[(r5+6)];
+	r4 = heap32[(r5+9)];
+	r2 = r2 << 3;
+	r2 = (r4 + r2)|0;
+	r2 = r2 >> 2;
+	heap32[(r2)] = -8388609;
+	r2 = heap32[(r5+6)];
+	r4 = heap32[(r5+10)];
+	r2 = r2 << 3;
+	r2 = (r4 + r2)|0;
+	r2 = r2 >> 2;
+	heap32[(r2)] = 2139095039;
+	r2 = heapU8[r0+580];
+	r2 = r2 & 1;
+if(!(r2 ==0)) //_LBB581_8
+{
+	r2 = heap32[(r5+6)];
+	r4 = heap32[(r5+8)];
+	r2 = r2 << 3;
+	r2 = (r4 + r2)|0;
+	r2 = r2 >> 2;
+	heap32[(r2)] = heap32[(r1+146)];
+}
+	r2 = heap32[(r5+6)];
+	r4 = (r2 * 3)|0;
+	r6 = heapU8[r0+514];
+_16: do {
+	if(r6 !=0) //_LBB581_10
+{
+	f0 = heapFloat[(r1+111)];
+	r6 = heap32[(r5+3)];
+	r7 = heap32[(r5+5)];
+	f3 = heapFloat[(r1+108)];
+if(!(f3 >=f0)) //_LBB581_13
+{
+	f3 = heapFloat[(r1+109)];
+if(!(f3 >=f0)) //_LBB581_13
+{
+	f0 = heapFloat[(r3+1)];
+	f3 = heapFloat[(r1+73)];
+	f6 = heapFloat[(r3+2)];
+	f1 = heapFloat[(r1+77)];
+	r8 = (r4 + 1)|0;
+	f2 = heapFloat[(r3+5)];
+	f4 = heapFloat[(r3+6)];
+	r9 = r4 << 2;
+	f5 = f3*f0;
+	f7 = f1*f6;
+	f8 = heapFloat[(r3+3)];
+	f9 = heapFloat[(r1+81)];
+	f10 = heapFloat[(r1+74)];
+	f11 = heapFloat[(r3+9)];
+	f12 = heapFloat[(r1+78)];
+	f13 = heapFloat[(r3+10)];
+	r10 = (r4 + 2)|0;
+	r8 = r8 << 2;
+	r11 = (r6 + r9)|0;
+	f14 = heapFloat[(r3+11)];
+	f15 = heapFloat[(r1+82)];
+	f16 = heapFloat[(r3+7)];
+	f17 = f3*f2;
+	f18 = f1*f4;
+	f5 = f5+f7;
+	f7 = f9*f8;
+	r2 = (r2 + r4)|0;
+	r3 = r10 << 2;
+	r4 = (r6 + r8)|0;
+	f5 = f5+f7;
+	f3 = f3*f11;
+	f1 = f1*f13;
+	f7 = f17+f18;
+	f17 = f9*f16;
+	r10 = r11 >> 2;
+	r11 = (r2 + 1)|0;
+	r12 = r2 << 2;
+	r13 = (r6 + r3)|0;
+	f7 = f7+f17;
+	f0 = f10*f0;
+	f6 = f12*f6;
+	f3 = f3+f1;
+	f1 = f9*f14;
+	r4 = r4 >> 2;
+	heapFloat[(r10)] = f5;
+	r10 = (r2 + 2)|0;
+	r11 = r11 << 2;
+	r14 = (r6 + r12)|0;
+	f3 = f3+f1;
+	f1 = f10*f2;
+	f2 = f12*f4;
+	f0 = f0+f6;
+	f6 = f15*f8;
+	r13 = r13 >> 2;
+	heapFloat[(r4)] = f7;
+	r4 = r10 << 2;
+	r10 = (r6 + r11)|0;
+	f0 = f0+f6;
+	f6 = f10*f11;
+	f4 = f12*f13;
+	f1 = f1+f2;
+	f2 = f15*f16;
+	r14 = r14 >> 2;
+	heapFloat[(r13)] = f3;
+	r6 = (r6 + r4)|0;
+	f1 = f1+f2;
+	f6 = f6+f4;
+	f2 = f15*f14;
+	r10 = r10 >> 2;
+	heapFloat[(r14)] = f0;
+	r13 = (r7 + r9)|0;
+	f6 = f6+f2;
+	r6 = r6 >> 2;
+	heapFloat[(r10)] = f1;
+	r8 = (r7 + r8)|0;
+	r10 = r13 >> 2;
+	f2 = -f5;
+	heapFloat[(r6)] = f6;
+	r3 = (r7 + r3)|0;
+	r6 = r8 >> 2;
+	f4 = -f7;
+	heapFloat[(r10)] = f2;
+	r8 = (r7 + r12)|0;
+	r3 = r3 >> 2;
+	f2 = -f3;
+	heapFloat[(r6)] = f4;
+	r6 = (r7 + r11)|0;
+	r8 = r8 >> 2;
+	f4 = -f0;
+	heapFloat[(r3)] = f2;
+	r3 = (r7 + r4)|0;
+	r4 = r6 >> 2;
+	f2 = -f1;
+	heapFloat[(r8)] = f4;
+	r3 = r3 >> 2;
+	f4 = -f6;
+	heapFloat[(r4)] = f2;
+	heapFloat[(r3)] = f4;
+	f2 = heapFloat[(r1+112)];
+	f4 = heapFloat[(r1+113)];
+	f8 = heapFloat[(r1+114)];
+	f2 = f2*f5;
+	f4 = f4*f7;
+	r3 = heap32[(r5+7)];
+	f2 = f2+f4;
+	f3 = f8*f3;
+	f4 = heapFloat[(r5)];
+	f5 = heapFloat[(r1+106)];
+	r3 = (r3 + r9)|0;
+	f3 = f2+f3;
+	f2 = f4*f5;
+	r3 = r3 >> 2;
+	f3 = f3*f2;
+	heapFloat[(r3)] = f3;
+	f3 = heapFloat[(r1+112)];
+	f4 = heapFloat[(r1+113)];
+	f5 = heapFloat[(r1+114)];
+	f0 = f3*f0;
+	f3 = f4*f1;
+	r3 = heap32[(r5+7)];
+	f0 = f0+f3;
+	f3 = f5*f6;
+	r3 = (r3 + r12)|0;
+	f0 = f0+f3;
+	r3 = r3 >> 2;
+	f0 = f0*f2;
+	heapFloat[(r3)] = f0;
+	r3 = heap32[(r5+9)];
+	r3 = (r3 + r9)|0;
+	r3 = r3 >> 2;
+	heap32[(r3)] = -8388609;
+	r3 = heap32[(r5+10)];
+	r3 = (r3 + r9)|0;
+	r3 = r3 >> 2;
+	heap32[(r3)] = 2139095039;
+	r3 = heap32[(r5+9)];
+	r3 = (r3 + r12)|0;
+	r3 = r3 >> 2;
+	heap32[(r3)] = -8388609;
+	r3 = heap32[(r5+10)];
+	r3 = (r3 + r12)|0;
+	r3 = r3 >> 2;
+	heap32[(r3)] = 2139095039;
+	r3 = heap32[(r5+6)];
+	r4 = (r3 + r2)|0;
+break _16;
+}
+}
+	r2 = (r4 + 1)|0;
+	r3 = r4 << 2;
+	f0 = heapFloat[(r1+106)];
+	f3 = heapFloat[(r1+112)];
+	r8 = (r4 + 2)|0;
+	r2 = r2 << 2;
+	r9 = (r6 + r3)|0;
+	f3 = f3*f0;
+	f6 = heapFloat[(r1+114)];
+	f1 = heapFloat[(r1+113)];
+	r8 = r8 << 2;
+	r10 = (r6 + r2)|0;
+	f1 = f1*f0;
+	f3 = f3*f0;
+	r9 = r9 >> 2;
+	r6 = (r6 + r8)|0;
+	f6 = f6*f0;
+	f1 = f1*f0;
+	r10 = r10 >> 2;
+	heapFloat[(r9)] = f3;
+	r9 = (r7 + r3)|0;
+	f0 = f6*f0;
+	r6 = r6 >> 2;
+	heapFloat[(r10)] = f1;
+	r2 = (r7 + r2)|0;
+	r9 = r9 >> 2;
+	f3 = -f3;
+	heapFloat[(r6)] = f0;
+	r6 = (r7 + r8)|0;
+	r2 = r2 >> 2;
+	f6 = -f1;
+	heapFloat[(r9)] = f3;
+	r6 = r6 >> 2;
+	f0 = -f0;
+	heapFloat[(r2)] = f6;
+	heapFloat[(r6)] = f0;
+	r2 = heap32[(r5+7)];
+	f0 = heapFloat[(r5)];
+	f3 = heapFloat[(r1+105)];
+	r2 = (r2 + r3)|0;
+	f6 = heapFloat[(r1+123)];
+	f0 = f0*f3;
+	r2 = r2 >> 2;
+	f0 = f6*f0;
+	heapFloat[(r2)] = f0;
+	r2 = heapU8[r0+580];
+	r2 = r2 & 4;
+if(!(r2 ==0)) //_LBB581_15
+{
+	r2 = heap32[(r5+8)];
+	r2 = (r2 + r3)|0;
+	r2 = r2 >> 2;
+	heap32[(r2)] = heap32[(r1+148)];
+}
+	r2 = heap32[(r5+9)];
+	r2 = (r2 + r3)|0;
+	r2 = r2 >> 2;
+	heap32[(r2)] = 0;
+	r2 = heap32[(r5+10)];
+	r2 = (r2 + r3)|0;
+	r2 = r2 >> 2;
+	heap32[(r2)] = 2139095039;
+	r2 = heap32[(r5+6)];
+	r4 = (r2 + r4)|0;
+}
+} while(0);
+	r2 = heapU8[r0+513];
+	if(r2 ==0) //_LBB581_28
+{
+	return;
+}
+else{
+	r2 = (r4 + 1)|0;
+	r3 = r4 << 2;
+	r6 = heap32[(r5+3)];
+	f0 = heapFloat[(r1+106)];
+	f3 = heapFloat[(r1+116)];
+	r4 = (r4 + 2)|0;
+	r2 = r2 << 2;
+	r7 = heap32[(r5+5)];
+	r8 = (r6 + r3)|0;
+	f3 = f3*f0;
+	f6 = heapFloat[(r1+118)];
+	f1 = heapFloat[(r1+117)];
+	r4 = r4 << 2;
+	r9 = (r6 + r2)|0;
+	f1 = f1*f0;
+	f3 = f3*f0;
+	r8 = r8 >> 2;
+	r6 = (r6 + r4)|0;
+	f6 = f6*f0;
+	f1 = f1*f0;
+	r9 = r9 >> 2;
+	heapFloat[(r8)] = f3;
+	r8 = (r7 + r3)|0;
+	f0 = f6*f0;
+	r6 = r6 >> 2;
+	heapFloat[(r9)] = f1;
+	r2 = (r7 + r2)|0;
+	r8 = r8 >> 2;
+	f3 = -f3;
+	heapFloat[(r6)] = f0;
+	r4 = (r7 + r4)|0;
+	r2 = r2 >> 2;
+	f6 = -f1;
+	heapFloat[(r8)] = f3;
+	r4 = r4 >> 2;
+	f0 = -f0;
+	heapFloat[(r2)] = f6;
+	heapFloat[(r4)] = f0;
+	r2 = heap32[(r5+7)];
+	f0 = heapFloat[(r5)];
+	f3 = heapFloat[(r1+105)];
+	r2 = (r2 + r3)|0;
+	f6 = heapFloat[(r1+124)];
+	f0 = f0*f3;
+	r2 = r2 >> 2;
+	f0 = f6*f0;
+	heapFloat[(r2)] = f0;
+	r0 = heapU8[r0+580];
+	r0 = r0 & 4;
+if(!(r0 ==0)) //_LBB581_19
+{
+	r0 = heap32[(r5+8)];
+	r0 = (r0 + r3)|0;
+	r0 = r0 >> 2;
+	heap32[(r0)] = heap32[(r1+148)];
+}
+	f0 = heapFloat[(r1+110)];
+	f3 =                         0;
+	if(f0 <=f3) //_LBB581_24
+{
+	r0 = heap32[(r5+9)];
+	r0 = (r0 + r3)|0;
+	r0 = r0 >> 2;
+	heap32[(r0)] = -8388609;
+}
+else{
+	r0 = heap32[(r5+9)];
+	f0 = heapFloat[(r1+124)];
+	if(f0 <=f3) //_LBB581_23
+{
+	r0 = (r0 + r3)|0;
+	r0 = r0 >> 2;
+	heap32[(r0)] = -8388609;
+	r0 = heap32[(r5+10)];
+	r3 = (r0 + r3)|0;
+	r3 = r3 >> 2;
+	heap32[(r3)] = 0;
+	return;
+}
+else{
+	r0 = (r0 + r3)|0;
+	r0 = r0 >> 2;
+	heap32[(r0)] = 0;
+}
+}
+	r0 = heap32[(r5+10)];
+	r0 = (r0 + r3)|0;
+	r0 = r0 >> 2;
+	heap32[(r0)] = 2139095039;
+	return;
+}
+}
+else{
+	r0 = _2E_str1149;
+	r1 = _2E_str24;
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r1;
+	heap32[(g0+2)] = 126;
+	_assert(i7);
+}
+}
+
+function _ZN21btConeTwistConstraint23solveConstraintObsoleteER11btRigidBodyS1_f(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+	var r6;
+	var r7;
+	var r8;
+	var r9;
+	var r10;
+	var r11;
+	var r12;
+	var r13;
+	var f0;
+	var f1;
+	var f2;
+	var f3;
+	var f4;
+	var f5;
+	var f6;
+	var f7;
+	var f8;
+	var f9;
+	var f10;
+	var f11;
+	var f12;
+	var f13;
+	var f14;
+	var f15;
+	var f16;
+	var f17;
+	var f18;
+	var f19;
+	var f20;
+	var f21;
+	var f22;
+	var f23;
+	var f24;
+	var f25;
+	var f26;
+	var f27;
+	var f28;
+	var f29;
+	var f30;
+var __label__ = 0;
+	i7 = sp + -624;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = heapU8[r0+515];
+if(!(r1 ==0)) //_LBB582_52
+{
+	r1 = heap32[(fp+1)];
+	r2 = heap32[(fp+2)];
+	f0 = heapFloat[(fp+3)];
+	heapFloat[(fp+-117)] = f0;
+	r3 = r0 >> 2;
+	r4 = heapU8[r0+512];
+if(!(r4 !=0)) //_LBB582_8
+{
+	r4 = heap32[(r3+5)];
+	r5 = heap32[(r3+6)];
+	r4 = r4 >> 2;
+	r5 = r5 >> 2;
+	f0 = heapFloat[(r4+9)];
+	f1 = heapFloat[(r3+84)];
+	f2 = heapFloat[(r4+5)];
+	f3 = heapFloat[(r4+1)];
+	f4 = heapFloat[(r4+10)];
+	f5 = heapFloat[(r3+85)];
+	f6 = heapFloat[(r4+6)];
+	f7 = heapFloat[(r4+2)];
+	f8 = heapFloat[(r5+9)];
+	f9 = heapFloat[(r3+100)];
+	f10 = heapFloat[(r5+5)];
+	f11 = heapFloat[(r5+1)];
+	f12 = heapFloat[(r5+10)];
+	f13 = heapFloat[(r3+101)];
+	f14 = heapFloat[(r5+6)];
+	f15 = heapFloat[(r5+2)];
+	f0 = f0*f1;
+	f4 = f4*f5;
+	f16 = heapFloat[(r4+11)];
+	f17 = heapFloat[(r3+86)];
+	f18 = heapFloat[(r4+7)];
+	f19 = heapFloat[(r4+3)];
+	f2 = f2*f1;
+	f6 = f6*f5;
+	f1 = f3*f1;
+	f3 = f7*f5;
+	f5 = f8*f9;
+	f7 = f12*f13;
+	f8 = heapFloat[(r5+11)];
+	f12 = heapFloat[(r3+102)];
+	f20 = heapFloat[(r5+7)];
+	f21 = heapFloat[(r5+3)];
+	f10 = f10*f9;
+	f14 = f14*f13;
+	f9 = f11*f9;
+	f11 = f15*f13;
+	f0 = f0+f4;
+	f4 = f16*f17;
+	f2 = f2+f6;
+	f6 = f18*f17;
+	f1 = f1+f3;
+	f3 = f19*f17;
+	f5 = f5+f7;
+	f7 = f8*f12;
+	f8 = f10+f14;
+	f10 = f20*f12;
+	f9 = f9+f11;
+	f11 = f21*f12;
+	f12 = heapFloat[(r4+15)];
+	f0 = f0+f4;
+	f4 = heapFloat[(r4+14)];
+	f2 = f2+f6;
+	f6 = heapFloat[(r4+13)];
+	f1 = f1+f3;
+	f3 = heapFloat[(r5+15)];
+	f5 = f5+f7;
+	f7 = heapFloat[(r5+14)];
+	f8 = f8+f10;
+	f10 = heapFloat[(r5+13)];
+	f9 = f9+f11;
+	f0 = f0+f12;
+	heapFloat[(fp+-119)] = f0;
+	f0 = f2+f4;
+	heapFloat[(fp+-121)] = f0;
+	f1 = f1+f6;
+	heapFloat[(fp+-120)] = f1;
+	f0 = f5+f3;
+	heapFloat[(fp+-122)] = f0;
+	f0 = f8+f7;
+	heapFloat[(fp+-123)] = f0;
+	f1 = f9+f10;
+	r4 = r1 >> 2;
+	r5 = r2 >> 2;
+	f2 = heapFloat[(r4+80)];
+	f5 = heapFloat[(r4+130)];
+	f8 = heapFloat[(r5+80)];
+	f9 = heapFloat[(r5+130)];
+	f11 = heapFloat[(r4+81)];
+	f13 = heapFloat[(r4+131)];
+	f14 = heapFloat[(r4+82)];
+	f15 = heapFloat[(r4+132)];
+	f16 = heapFloat[(r5+81)];
+	f17 = heapFloat[(r5+131)];
+	f18 = heapFloat[(r5+82)];
+	f19 = heapFloat[(r5+132)];
+	f20 = heapFloat[(fp+-120)];
+	f6 = f20-f6;
+	f10 = f1-f10;
+	f11 = f11+f13;
+	f0 = heapFloat[(fp+-119)];
+	f12 = f0-f12;
+	f2 = f2+f5;
+	f0 = heapFloat[(fp+-121)];
+	f4 = f0-f4;
+	f5 = f14+f15;
+	f13 = f16+f17;
+	f0 = heapFloat[(fp+-122)];
+	f3 = f0-f3;
+	f8 = f8+f9;
+	f0 = heapFloat[(fp+-123)];
+	f7 = f0-f7;
+	f9 = f18+f19;
+	f14 = heapFloat[(r4+78)];
+	f15 = heapFloat[(r4+128)];
+	f16 = f2*f4;
+	f17 = f11*f6;
+	f18 = heapFloat[(r5+78)];
+	f19 = heapFloat[(r5+128)];
+	f21 = f8*f7;
+	f22 = f13*f10;
+	f23 = heapFloat[(r4+77)];
+	f24 = heapFloat[(r4+127)];
+	f25 = f5*f6;
+	f2 = f2*f12;
+	f26 = heapFloat[(r5+77)];
+	f27 = heapFloat[(r5+127)];
+	f28 = f9*f10;
+	f8 = f8*f3;
+	f29 = heapFloat[(r4+76)];
+	f30 = heapFloat[(r4+126)];
+	f11 = f11*f12;
+	f5 = f5*f4;
+	f0 = heapFloat[(r5+76)];
+	f20 = heapFloat[(r5+126)];
+	f13 = f13*f3;
+	f9 = f9*f7;
+	f14 = f14+f15;
+	f15 = f16-f17;
+	f16 = f18+f19;
+	f17 = f21-f22;
+	f18 = f23+f24;
+	f2 = f25-f2;
+	f19 = f26+f27;
+	f8 = f28-f8;
+	f21 = f29+f30;
+	f5 = f11-f5;
+	f0 = f0+f20;
+	f9 = f13-f9;
+	f11 = f14+f15;
+	f13 = f16+f17;
+	f2 = f18+f2;
+	f8 = f19+f8;
+	f5 = f21+f5;
+	f0 = f0+f9;
+	f9 = f11-f13;
+	f2 = f2-f8;
+	heapFloat[(fp+-118)] = f2;
+	f0 = f5-f0;
+	f2 = heapFloat[(fp+-119)];
+	f5 = heapFloat[(fp+-122)];
+	f2 = f2-f5;
+	f5 = heapFloat[(fp+-121)];
+	f8 = heapFloat[(fp+-123)];
+	f5 = f5-f8;
+	f8 = heapFloat[(fp+-120)];
+	f1 = f8-f1;
+	r6 = 0;
+_5: while(true){
+	r7 = (r6 * -21)|0;
+	r8 = r7 << 2;
+	r8 = (r0 + r8)|0;
+	r8 = r8 >> 2;
+	f8 = heapFloat[(r8+9)];
+	f11 = heapFloat[(r8+10)];
+	f13 = heapFloat[(r8+11)];
+	f14 = f1*f8;
+	f15 = f5*f11;
+	f14 = f14+f15;
+	f15 = f2*f13;
+	f14 = f14+f15;
+	f15 =      -0.30000001192092896;
+	f16 = f8*f0;
+	f17 = heapFloat[(fp+-118)];
+	f17 = f11*f17;
+	f14 = f14*f15;
+	f15 = f16+f17;
+	f16 = f13*f9;
+	f17 =                         1;
+	f18 = heapFloat[(r8+29)];
+	f19 = heapFloat[(fp+-117)];
+	f14 = f14/f19;
+	f17 = f17/f18;
+	f15 = f15+f16;
+	f14 = f14*f17;
+	f15 = f15*f17;
+	f14 = f14-f15;
+	f15 = heapFloat[(r3+7)];
+	f15 = f15+f14;
+	heapFloat[(r3+7)] = f15;
+	f15 = heapFloat[(r4+84)];
+	f16 =                         0;
+if(!(f15 ==f16)) //_LBB582_5
+{
+	r9 = heap32[(r3+5)];
+	r9 = r9 >> 2;
+	f15 = f6*f11;
+	f17 = f4*f8;
+	f18 = f12*f8;
+	f19 = f6*f13;
+	f20 = f4*f13;
+	f21 = f12*f11;
+	f15 = f15-f17;
+	f17 = f18-f19;
+	f18 = f20-f21;
+	f19 = heapFloat[(r9+84)];
+	f20 = f8*f19;
+	f20 = f20*f14;
+	f21 = heapFloat[(r4+126)];
+	f22 = heapFloat[(r9+65)];
+	f23 = heapFloat[(r9+64)];
+	f24 = heapFloat[(r9+69)];
+	f25 = heapFloat[(r9+68)];
+	f26 = heapFloat[(r9+73)];
+	f27 = heapFloat[(r9+72)];
+	f28 = heapFloat[(r9+66)];
+	f29 = heapFloat[(r9+70)];
+	f30 = heapFloat[(r9+74)];
+	f20 = f21+f20;
+	f21 = f11*f19;
+	heapFloat[(r4+126)] = f20;
+	f20 = f21*f14;
+	f21 = heapFloat[(r4+127)];
+	f20 = f21+f20;
+	f19 = f13*f19;
+	heapFloat[(r4+127)] = f20;
+	f19 = f19*f14;
+	f20 = heapFloat[(r4+128)];
+	f19 = f20+f19;
+	heapFloat[(r4+128)] = f19;
+	f19 = f23*f18;
+	f20 = f22*f17;
+	f21 = heapFloat[(r4+134)];
+	f19 = f19+f20;
+	f20 = f28*f15;
+	f19 = f19+f20;
+	f20 = f21*f14;
+	f21 = heapFloat[(r4+136)];
+	f22 = heapFloat[(r4+135)];
+	f23 = heapFloat[(r4+130)];
+	f19 = f19*f20;
+	f20 = f25*f18;
+	f24 = f24*f17;
+	f20 = f20+f24;
+	f24 = f29*f15;
+	f19 = f23+f19;
+	heapFloat[(r4+130)] = f19;
+	f19 = f20+f24;
+	f20 = f22*f14;
+	f18 = f27*f18;
+	f17 = f26*f17;
+	f19 = f19*f20;
+	f20 = heapFloat[(r4+131)];
+	f19 = f20+f19;
+	f17 = f18+f17;
+	f15 = f30*f15;
+	heapFloat[(r4+131)] = f19;
+	f15 = f17+f15;
+	f17 = f21*f14;
+	f15 = f15*f17;
+	f17 = heapFloat[(r4+132)];
+	f15 = f17+f15;
+	heapFloat[(r4+132)] = f15;
+}
+	f15 = heapFloat[(r5+84)];
+if(!(f15 ==f16)) //_LBB582_7
+{
+	f15 = f10*f11;
+	f16 = f7*f8;
+	f8 = f3*f8;
+	f17 = f10*f13;
+	f13 = f7*f13;
+	f11 = f3*f11;
+	f15 = f15-f16;
+	f8 = f8-f17;
+	f11 = f13-f11;
+	r9 = heap32[(r3+6)];
+	r9 = r9 >> 2;
+	f13 = -f14;
+	f14 = heapFloat[(r9+84)];
+	r10 = r7 << 2;
+	r10 = (r0 + r10)|0;
+	r10 = r10 >> 2;
+	r7 = r7 << 2;
+	r7 = (r0 + r7)|0;
+	f16 = heapFloat[(r10+9)];
+	r7 = r7 >> 2;
+	f16 = f16*f14;
+	f17 = heapFloat[(r7+10)];
+	f18 = heapFloat[(r8+11)];
+	f16 = f16*f13;
+	f19 = heapFloat[(r5+126)];
+	f20 = heapFloat[(r9+65)];
+	f21 = heapFloat[(r9+64)];
+	f22 = heapFloat[(r9+69)];
+	f23 = heapFloat[(r9+68)];
+	f24 = heapFloat[(r9+73)];
+	f25 = heapFloat[(r9+72)];
+	f26 = heapFloat[(r9+66)];
+	f27 = heapFloat[(r9+70)];
+	f28 = heapFloat[(r9+74)];
+	f16 = f19+f16;
+	f17 = f17*f14;
+	heapFloat[(r5+126)] = f16;
+	f16 = f17*f13;
+	f17 = heapFloat[(r5+127)];
+	f16 = f17+f16;
+	f14 = f18*f14;
+	heapFloat[(r5+127)] = f16;
+	f14 = f14*f13;
+	f16 = heapFloat[(r5+128)];
+	f14 = f16+f14;
+	heapFloat[(r5+128)] = f14;
+	f14 = f21*f11;
+	f16 = f20*f8;
+	f17 = heapFloat[(r5+134)];
+	f14 = f14+f16;
+	f16 = f26*f15;
+	f14 = f14+f16;
+	f16 = f17*f13;
+	f17 = heapFloat[(r5+136)];
+	f18 = heapFloat[(r5+135)];
+	f19 = heapFloat[(r5+130)];
+	f14 = f14*f16;
+	f16 = f23*f11;
+	f20 = f22*f8;
+	f16 = f16+f20;
+	f20 = f27*f15;
+	f14 = f19+f14;
+	heapFloat[(r5+130)] = f14;
+	f14 = f16+f20;
+	f16 = f18*f13;
+	f11 = f25*f11;
+	f8 = f24*f8;
+	f14 = f14*f16;
+	f16 = heapFloat[(r5+131)];
+	f14 = f16+f14;
+	f8 = f11+f8;
+	f11 = f28*f15;
+	heapFloat[(r5+131)] = f14;
+	f8 = f8+f11;
+	f11 = f17*f13;
+	f8 = f8*f11;
+	f11 = heapFloat[(r5+132)];
+	f8 = f11+f8;
+	heapFloat[(r5+132)] = f8;
+}
+	r6 = (r6 + -1)|0;
+if(!(r6 !=-3)) //_LBB582_3
+{
+break _5;
+}
+}
+}
+	r4 = heapU8[r0+540];
+_14: do {
+	if(r4 ==0) //_LBB582_29
+{
+	f0 = heapFloat[(r3+107)];
+	f1 =   1.1920928955078125e-007;
+	if(f0 <=f1) //_LBB582_35
+{
+break _14;
+}
+else{
+	r4 = r2 >> 2;
+	r5 = r1 >> 2;
+	f0 = heapFloat[(r4+81)];
+	f2 = heapFloat[(r4+131)];
+	f3 = heapFloat[(r5+81)];
+	f4 = heapFloat[(r5+131)];
+	f5 = heapFloat[(r4+80)];
+	f6 = heapFloat[(r4+130)];
+	f7 = heapFloat[(r5+80)];
+	f8 = heapFloat[(r5+130)];
+	f9 = heapFloat[(r4+82)];
+	f10 = heapFloat[(r4+132)];
+	f11 = heapFloat[(r5+82)];
+	f12 = heapFloat[(r5+132)];
+	f0 = f0+f2;
+	f2 = f3+f4;
+	f3 = f5+f6;
+	f4 = f7+f8;
+	f0 = f0-f2;
+	f2 = f3-f4;
+	f3 = f9+f10;
+	f4 = f11+f12;
+	f3 = f3-f4;
+	f4 = f2*f2;
+	f5 = f0*f0;
+	f4 = f4+f5;
+	f5 = f3*f3;
+	f4 = f4+f5;
+	if(f4 <=f1) //_LBB582_35
+{
+break _14;
+}
+else{
+	heapFloat[(g0)] = f4;
+	sqrtf(i7);
+	r6 = heap32[(r3+5)];
+	r7 = heap32[(r3+6)];
+	f4 =                         1;
+	r6 = r6 >> 2;
+	r7 = r7 >> 2;
+	f1 = f4/f_g0;
+	f5 = heapFloat[(r6+64)];
+	f6 = f2*f1;
+	f7 = heapFloat[(r6+65)];
+	f8 = heapFloat[(r7+64)];
+	f9 = heapFloat[(r7+65)];
+	f10 = heapFloat[(r6+68)];
+	f11 = f0*f1;
+	f12 = heapFloat[(r6+69)];
+	f13 = heapFloat[(r7+68)];
+	f14 = heapFloat[(r7+69)];
+	f15 = heapFloat[(r6+66)];
+	f16 = heapFloat[(r6+70)];
+	f17 = heapFloat[(r7+66)];
+	f18 = heapFloat[(r7+70)];
+	f5 = f5*f6;
+	f10 = f10*f11;
+	f19 = heapFloat[(r6+72)];
+	f1 = f3*f1;
+	f20 = heapFloat[(r6+73)];
+	f21 = heapFloat[(r7+72)];
+	f22 = heapFloat[(r7+73)];
+	f7 = f7*f6;
+	f12 = f12*f11;
+	f8 = f8*f6;
+	f13 = f13*f11;
+	f9 = f9*f6;
+	f14 = f14*f11;
+	f23 = heapFloat[(r6+74)];
+	f24 = heapFloat[(r7+74)];
+	f5 = f5+f10;
+	f10 = f19*f1;
+	f7 = f7+f12;
+	f12 = f20*f1;
+	f15 = f15*f6;
+	f16 = f16*f11;
+	f8 = f8+f13;
+	f13 = f21*f1;
+	f9 = f9+f14;
+	f14 = f22*f1;
+	f17 = f17*f6;
+	f18 = f18*f11;
+	f5 = f5+f10;
+	f7 = f7+f12;
+	f8 = f8+f13;
+	f9 = f9+f14;
+	f10 = f15+f16;
+	f12 = f23*f1;
+	f13 = f17+f18;
+	f14 = f24*f1;
+	f10 = f10+f12;
+	f12 = f13+f14;
+	f5 = f6*f5;
+	f7 = f11*f7;
+	f6 = f6*f8;
+	f8 = f11*f9;
+	f5 = f5+f7;
+	f7 = f1*f10;
+	f6 = f6+f8;
+	f1 = f1*f12;
+	f5 = f5+f7;
+	f1 = f6+f1;
+	f1 = f5+f1;
+	f5 = heapFloat[(r3+107)];
+	f1 = f4/f1;
+	f1 = f5*f1;
+	f0 = f0*f1;
+	f2 = f2*f1;
+	f1 = f3*f1;
+	f3 = f2*f2;
+	f5 = f0*f0;
+	f3 = f3+f5;
+	f5 = f1*f1;
+	f3 = f3+f5;
+	heapFloat[(g0)] = f3;
+	sqrtf(i7);
+	f3 = f_g0;
+	f4 = f4/f3;
+	f1 = f1*f4;
+	f0 = f0*f4;
+	f2 = f2*f4;
+	f4 = heapFloat[(r5+84)];
+	f5 =                         0;
+if(!(f4 ==f5)) //_LBB582_33
+{
+	r6 = heap32[(r3+5)];
+	r6 = r6 >> 2;
+	f4 = f3*f5;
+	f6 = heapFloat[(r5+126)];
+	f7 = heapFloat[(r6+65)];
+	f8 = heapFloat[(r6+64)];
+	f9 = heapFloat[(r6+69)];
+	f10 = heapFloat[(r6+68)];
+	f11 = heapFloat[(r6+73)];
+	f12 = heapFloat[(r6+72)];
+	f13 = heapFloat[(r6+66)];
+	f14 = heapFloat[(r6+70)];
+	f15 = heapFloat[(r6+74)];
+	f6 = f6+f4;
+	heapFloat[(r5+126)] = f6;
+	f6 = heapFloat[(r5+127)];
+	f6 = f6+f4;
+	heapFloat[(r5+127)] = f6;
+	f6 = heapFloat[(r5+128)];
+	f4 = f6+f4;
+	heapFloat[(r5+128)] = f4;
+	f4 = f8*f2;
+	f6 = f7*f0;
+	f7 = heapFloat[(r5+134)];
+	f4 = f4+f6;
+	f6 = f13*f1;
+	f4 = f4+f6;
+	f6 = f7*f3;
+	f7 = heapFloat[(r5+136)];
+	f8 = heapFloat[(r5+135)];
+	f13 = heapFloat[(r5+130)];
+	f4 = f4*f6;
+	f6 = f10*f2;
+	f9 = f9*f0;
+	f6 = f6+f9;
+	f9 = f14*f1;
+	f4 = f13+f4;
+	heapFloat[(r5+130)] = f4;
+	f4 = f6+f9;
+	f6 = f8*f3;
+	f8 = f12*f2;
+	f9 = f11*f0;
+	f4 = f4*f6;
+	f6 = heapFloat[(r5+131)];
+	f4 = f6+f4;
+	f6 = f8+f9;
+	f8 = f15*f1;
+	heapFloat[(r5+131)] = f4;
+	f4 = f6+f8;
+	f6 = f7*f3;
+	f4 = f4*f6;
+	f6 = heapFloat[(r5+132)];
+	f4 = f6+f4;
+	heapFloat[(r5+132)] = f4;
+}
+	f4 = heapFloat[(r4+84)];
+	if(f4 ==f5) //_LBB582_35
+{
+break _14;
+}
+else{
+	f4 = -f3;
+	r5 = heap32[(r3+6)];
+	r5 = r5 >> 2;
+	f5 =                        -0;
+	f3 = f3*f5;
+	f5 = heapFloat[(r4+126)];
+	f6 = heapFloat[(r5+65)];
+	f7 = heapFloat[(r5+64)];
+	f8 = heapFloat[(r5+69)];
+	f9 = heapFloat[(r5+68)];
+	f10 = heapFloat[(r5+73)];
+	f11 = heapFloat[(r5+72)];
+	f12 = heapFloat[(r5+66)];
+	f13 = heapFloat[(r5+70)];
+	f14 = heapFloat[(r5+74)];
+	f5 = f5+f3;
+	heapFloat[(r4+126)] = f5;
+	f5 = heapFloat[(r4+127)];
+	f5 = f5+f3;
+	heapFloat[(r4+127)] = f5;
+	f5 = heapFloat[(r4+128)];
+	f3 = f5+f3;
+	heapFloat[(r4+128)] = f3;
+	f3 = f7*f2;
+	f5 = f6*f0;
+	f3 = f3+f5;
+	f5 = f12*f1;
+	f6 = heapFloat[(r4+134)];
+	f3 = f3+f5;
+	f5 = f6*f4;
+	f6 = heapFloat[(r4+136)];
+	f7 = heapFloat[(r4+135)];
+	f12 = heapFloat[(r4+130)];
+	f3 = f3*f5;
+	f5 = f9*f2;
+	f8 = f8*f0;
+	f5 = f5+f8;
+	f8 = f13*f1;
+	f3 = f12+f3;
+	heapFloat[(r4+130)] = f3;
+	f3 = f5+f8;
+	f5 = f7*f4;
+	f2 = f11*f2;
+	f0 = f10*f0;
+	f3 = f3*f5;
+	f5 = heapFloat[(r4+131)];
+	f3 = f5+f3;
+	f0 = f2+f0;
+	f1 = f14*f1;
+	heapFloat[(r4+131)] = f3;
+	f0 = f0+f1;
+	f1 = f6*f4;
+	f0 = f0*f1;
+	f1 = heapFloat[(r4+132)];
+	f0 = f1+f0;
+	heapFloat[(r4+132)] = f0;
+}
+}
+}
+}
+else{
+	r4 = heap32[(r3+5)];
+	r5 = sp + -112;
+	r4 = r4 >> 2;
+	r6 = r5 >> 2;
+	heap32[(fp+-28)] = heap32[(r4+1)];
+	heap32[(r6+1)] = heap32[(r4+2)];
+	heap32[(r6+2)] = heap32[(r4+3)];
+	heap32[(r6+3)] = heap32[(r4+4)];
+	heap32[(r6+4)] = heap32[(r4+5)];
+	heap32[(r6+5)] = heap32[(r4+6)];
+	heap32[(r6+6)] = heap32[(r4+7)];
+	heap32[(r6+7)] = heap32[(r4+8)];
+	heap32[(r6+8)] = heap32[(r4+9)];
+	heap32[(r6+9)] = heap32[(r4+10)];
+	heap32[(r6+10)] = heap32[(r4+11)];
+	heap32[(r6+11)] = heap32[(r4+12)];
+	heap32[(r6+12)] = heap32[(r4+13)];
+	heap32[(r6+13)] = heap32[(r4+14)];
+	heap32[(r6+14)] = heap32[(r4+15)];
+	heap32[(r6+15)] = heap32[(r4+16)];
+	r4 = heap32[(r3+6)];
+	r6 = sp + -176;
+	r4 = r4 >> 2;
+	r7 = r6 >> 2;
+	heap32[(fp+-44)] = heap32[(r4+1)];
+	heap32[(r7+1)] = heap32[(r4+2)];
+	heap32[(r7+2)] = heap32[(r4+3)];
+	heap32[(r7+3)] = heap32[(r4+4)];
+	heap32[(r7+4)] = heap32[(r4+5)];
+	heap32[(r7+5)] = heap32[(r4+6)];
+	heap32[(r7+6)] = heap32[(r4+7)];
+	heap32[(r7+7)] = heap32[(r4+8)];
+	heap32[(r7+8)] = heap32[(r4+9)];
+	heap32[(r7+9)] = heap32[(r4+10)];
+	heap32[(r7+10)] = heap32[(r4+11)];
+	heap32[(r7+11)] = heap32[(r4+12)];
+	heap32[(r7+12)] = heap32[(r4+13)];
+	heap32[(r7+13)] = heap32[(r4+14)];
+	heap32[(r7+14)] = heap32[(r4+15)];
+	r8 = r1 >> 2;
+	heap32[(r7+15)] = heap32[(r4+16)];
+	f0 = heapFloat[(r8+82)];
+	f1 = heapFloat[(r8+132)];
+	f2 = heapFloat[(r8+81)];
+	f3 = heapFloat[(r8+131)];
+	f4 = heapFloat[(r8+80)];
+	f5 = heapFloat[(r8+130)];
+	r4 = sp + -192;
+	f4 = f4+f5;
+	r7 = r4 >> 2;
+	f2 = f2+f3;
+	heapFloat[(fp+-48)] = f4;
+	f0 = f0+f1;
+	heapFloat[(r7+1)] = f2;
+	heapFloat[(r7+2)] = f0;
+	r9 = r2 >> 2;
+	heap32[(r7+3)] = 0;
+	f0 = heapFloat[(r9+82)];
+	f1 = heapFloat[(r9+132)];
+	f2 = heapFloat[(r9+81)];
+	f3 = heapFloat[(r9+131)];
+	f4 = heapFloat[(r9+80)];
+	f5 = heapFloat[(r9+130)];
+	r10 = sp + -208;
+	f4 = f4+f5;
+	f2 = f2+f3;
+	heapFloat[(fp+-52)] = f4;
+	r11 = r10 >> 2;
+	f0 = f0+f1;
+	heapFloat[(r11+1)] = f2;
+	heapFloat[(r11+2)] = f0;
+	r12 = sp + -272;
+	heap32[(r11+3)] = 0;
+	r13 = r12 >> 2;
+	heap32[(fp+-68)] = 1065353216;
+	heap32[(r13+1)] = 0;
+	heap32[(r13+2)] = 0;
+	heap32[(r13+3)] = 0;
+	heap32[(r13+4)] = 0;
+	heap32[(r13+5)] = 1065353216;
+	heap32[(r13+6)] = 0;
+	heap32[(r13+7)] = 0;
+	heap32[(r13+8)] = 0;
+	heap32[(r13+9)] = 0;
+	heap32[(r13+10)] = 1065353216;
+	heap32[(r13+11)] = 0;
+	heap32[(r13+12)] = 0;
+	heap32[(r13+13)] = 0;
+	heap32[(r13+14)] = 0;
+	heap32[(r13+15)] = 0;
+	heap32[(g0)] = r5;
+	heap32[(g0+1)] = 0;
+	heap32[(g0+2)] = 0;
+	heap32[(g0+3)] = 0;
+	heap32[(g0+4)] = r4;
+	f0 = heapFloat[(fp+-117)];
+	heapFloat[(g0+5)] = f0;
+	heap32[(g0+6)] = r12;
+	r4 = sp + -336;
+	_ZN15btTransformUtil18integrateTransformERK11btTransformRK9btVector3S5_fRS0_(i7);
+	r12 = r4 >> 2;
+	heap32[(fp+-84)] = 1065353216;
+	heap32[(r12+1)] = 0;
+	heap32[(r12+2)] = 0;
+	heap32[(r12+3)] = 0;
+	heap32[(r12+4)] = 0;
+	heap32[(r12+5)] = 1065353216;
+	heap32[(r12+6)] = 0;
+	heap32[(r12+7)] = 0;
+	heap32[(r12+8)] = 0;
+	heap32[(r12+9)] = 0;
+	heap32[(r12+10)] = 1065353216;
+	heap32[(r12+11)] = 0;
+	heap32[(r12+12)] = 0;
+	heap32[(r12+13)] = 0;
+	heap32[(r12+14)] = 0;
+	heap32[(r12+15)] = 0;
+	heap32[(g0)] = r6;
+	heap32[(g0+1)] = 0;
+	heap32[(g0+2)] = 0;
+	heap32[(g0+3)] = 0;
+	heap32[(g0+4)] = r10;
+	heapFloat[(g0+5)] = f0;
+	heap32[(g0+6)] = r4;
+	_ZN15btTransformUtil18integrateTransformERK11btTransformRK9btVector3S5_fRS0_(i7);
+	f1 = heapFloat[(r3+136)];
+	f2 = heapFloat[(r3+137)];
+	f3 = heapFloat[(r3+138)];
+	f4 = f1*f1;
+	f5 = f2*f2;
+	f6 = heapFloat[(r3+139)];
+	f4 = f4+f5;
+	f5 = f3*f3;
+	f4 = f4+f5;
+	f5 = f6*f6;
+	f7 =                         2;
+	f4 = f4+f5;
+	f4 = f7/f4;
+	f5 = f3*f4;
+	f7 = f2*f4;
+	f4 = f1*f4;
+	f3 = f3*f5;
+	f8 = f1*f4;
+	f9 = f2*f7;
+	f0 =                         1;
+	heapFloat[(fp+-118)] = f0;
+	f10 = f9+f3;
+	f3 = f8+f3;
+	f11 = f1*f7;
+	f12 = f6*f5;
+	f10 = f0-f10;
+	f0 = heapFloat[(r3+92)];
+	heapFloat[(fp+-131)] = f0;
+	f13 = f11-f12;
+	f0 = heapFloat[(r3+88)];
+	heapFloat[(fp+-120)] = f0;
+	f11 = f11+f12;
+	f12 = heapFloat[(r3+93)];
+	heapFloat[(fp+-132)] = f12;
+	f0 = heapFloat[(fp+-118)];
+	f3 = f0-f3;
+	f0 = heapFloat[(r3+89)];
+	heapFloat[(fp+-121)] = f0;
+	f1 = f1*f5;
+	f7 = f6*f7;
+	f2 = f2*f5;
+	f4 = f6*f4;
+	f5 = f1+f7;
+	f6 = heapFloat[(r3+96)];
+	heapFloat[(fp+-129)] = f6;
+	f12 = f2-f4;
+	f14 = heapFloat[(r3+97)];
+	heapFloat[(fp+-136)] = f14;
+	f8 = f8+f9;
+	f0 = heapFloat[(fp+-120)];
+	f9 = f10*f0;
+	f0 = heapFloat[(fp+-121)];
+	f15 = f11*f0;
+	f0 = heapFloat[(fp+-120)];
+	f16 = f13*f0;
+	f0 = heapFloat[(fp+-121)];
+	f17 = f3*f0;
+	f0 = heapFloat[(fp+-131)];
+	f18 = f10*f0;
+	f19 = heapFloat[(fp+-132)];
+	f20 = f11*f19;
+	f21 = f13*f0;
+	f22 = f3*f19;
+	f1 = f1-f7;
+	f7 = heapFloat[(r3+94)];
+	heapFloat[(fp+-137)] = f7;
+	f2 = f2+f4;
+	f0 = heapFloat[(r3+90)];
+	heapFloat[(fp+-133)] = f0;
+	f0 = heapFloat[(fp+-118)];
+	f4 = f0-f8;
+	f6 = heapFloat[(r3+98)];
+	heapFloat[(fp+-130)] = f6;
+	f7 = f9+f15;
+	f0 = heapFloat[(fp+-133)];
+	f8 = f1*f0;
+	f9 = f16+f17;
+	f14 = f2*f0;
+	f0 = heapFloat[(fp+-120)];
+	f15 = f5*f0;
+	f0 = heapFloat[(fp+-121)];
+	f16 = f12*f0;
+	f17 = f18+f20;
+	f18 = heapFloat[(fp+-137)];
+	f19 = f1*f18;
+	f20 = f21+f22;
+	f21 = f2*f18;
+	f0 = heapFloat[(fp+-131)];
+	f22 = f5*f0;
+	f23 = heapFloat[(fp+-132)];
+	f24 = f12*f23;
+	f6 = heapFloat[(fp+-129)];
+	f10 = f10*f6;
+	f25 = heapFloat[(fp+-136)];
+	f11 = f11*f25;
+	f13 = f13*f6;
+	f3 = f3*f25;
+	f0 = f7+f8;
+	heapFloat[(fp+-124)] = f0;
+	f6 = heapFloat[(r3+72)];
+	f7 = f17+f19;
+	heapFloat[(fp+-134)] = f7;
+	f0 = f9+f14;
+	heapFloat[(fp+-125)] = f0;
+	f7 = heapFloat[(r3+73)];
+	f8 = f20+f21;
+	heapFloat[(fp+-139)] = f8;
+	f9 = f15+f16;
+	f0 = heapFloat[(fp+-133)];
+	f14 = f4*f0;
+	f15 = f22+f24;
+	f16 = f4*f18;
+	f10 = f10+f11;
+	f11 = heapFloat[(fp+-130)];
+	f1 = f1*f11;
+	f3 = f13+f3;
+	f2 = f2*f11;
+	f13 = heapFloat[(fp+-129)];
+	f5 = f5*f13;
+	f12 = f12*f25;
+	f17 = heapFloat[(r3+76)];
+	f1 = f10+f1;
+	heapFloat[(fp+-138)] = f1;
+	f10 = heapFloat[(r3+77)];
+	f2 = f3+f2;
+	heapFloat[(fp+-123)] = f2;
+	f0 = heapFloat[(fp+-124)];
+	f3 = f6*f0;
+	f0 = heapFloat[(fp+-125)];
+	f19 = f7*f0;
+	f0 = f9+f14;
+	heapFloat[(fp+-126)] = f0;
+	f1 = heapFloat[(r3+74)];
+	f0 = f15+f16;
+	heapFloat[(fp+-127)] = f0;
+	f2 = heapFloat[(fp+-134)];
+	f8 = f6*f2;
+	f9 = heapFloat[(fp+-139)];
+	f11 = f7*f9;
+	f5 = f5+f12;
+	f12 = heapFloat[(fp+-130)];
+	f4 = f4*f12;
+	f13 = heapFloat[(r3+80)];
+	f14 = heapFloat[(r3+81)];
+	f15 = heapFloat[(r3+78)];
+	f4 = f5+f4;
+	heapFloat[(fp+-122)] = f4;
+	f0 = heapFloat[(fp+-124)];
+	f5 = f17*f0;
+	f0 = heapFloat[(fp+-125)];
+	f16 = f10*f0;
+	f18 = f17*f2;
+	f20 = f10*f9;
+	f3 = f3+f19;
+	f0 = heapFloat[(fp+-126)];
+	f19 = f1*f0;
+	f8 = f8+f11;
+	f0 = heapFloat[(fp+-127)];
+	f11 = f1*f0;
+	f21 = heapFloat[(fp+-138)];
+	f22 = f6*f21;
+	f2 = heapFloat[(fp+-123)];
+	f23 = f7*f2;
+	f24 = heapFloat[(r3+82)];
+	f0 = heapFloat[(fp+-124)];
+	f25 = f13*f0;
+	f0 = heapFloat[(fp+-125)];
+	f26 = f14*f0;
+	f2 = heapFloat[(fp+-134)];
+	f27 = f13*f2;
+	f28 = f14*f9;
+	f5 = f5+f16;
+	f0 = heapFloat[(fp+-126)];
+	f16 = f15*f0;
+	f18 = f18+f20;
+	f0 = heapFloat[(fp+-127)];
+	f20 = f15*f0;
+	f29 = f17*f21;
+	f2 = heapFloat[(fp+-123)];
+	f30 = f10*f2;
+	f3 = f3+f19;
+	f19 = heapFloat[(fp+-84)];
+	heapFloat[(fp+-140)] = f19;
+	f0 = f8+f11;
+	heapFloat[(fp+-135)] = f0;
+	f2 = heapFloat[(r12+1)];
+	heapFloat[(fp+-128)] = f2;
+	f4 = f22+f23;
+	f8 = heapFloat[(fp+-122)];
+	f9 = f1*f8;
+	f5 = f5+f16;
+	f0 = f18+f20;
+	heapFloat[(fp+-119)] = f0;
+	f2 = f25+f26;
+	f0 = heapFloat[(fp+-126)];
+	f8 = f24*f0;
+	f11 = f27+f28;
+	f0 = heapFloat[(fp+-127)];
+	f12 = f24*f0;
+	f16 = f13*f21;
+	f18 = heapFloat[(fp+-123)];
+	f19 = f14*f18;
+	f20 = f29+f30;
+	f22 = heapFloat[(fp+-122)];
+	f23 = f15*f22;
+	f25 = heapFloat[(fp+-140)];
+	f26 = f3*f25;
+	f0 = heapFloat[(fp+-135)];
+	f27 = heapFloat[(fp+-128)];
+	f28 = f0*f27;
+	f4 = f4+f9;
+	f9 = heapFloat[(r12+2)];
+	f29 = heapFloat[(r3+86)];
+	f30 = heapFloat[(r3+85)];
+	f0 = heapFloat[(r12+8)];
+	heapFloat[(fp+-141)] = f0;
+	f2 = f2+f8;
+	f8 = heapFloat[(r12+4)];
+	f0 = heapFloat[(r12+9)];
+	f11 = f11+f12;
+	f12 = heapFloat[(r12+5)];
+	f20 = f20+f23;
+	f18 = heapFloat[(r12+10)];
+	heapFloat[(fp+-148)] = f18;
+	f21 = heapFloat[(r12+6)];
+	f22 = heapFloat[(r3+84)];
+	f16 = f16+f19;
+	f19 = heapFloat[(fp+-122)];
+	f23 = f24*f19;
+	f27 = f5*f25;
+	f19 = heapFloat[(fp+-119)];
+	f18 = heapFloat[(fp+-128)];
+	f18 = f19*f18;
+	f26 = f26+f28;
+	f28 = f4*f9;
+	f19 = heapFloat[(r3+102)];
+	heapFloat[(fp+-142)] = f19;
+	f19 = heapFloat[(r3+101)];
+	heapFloat[(fp+-143)] = f19;
+	f19 = heapFloat[(r3+100)];
+	heapFloat[(fp+-145)] = f19;
+	f19 = heapFloat[(r12+14)];
+	heapFloat[(fp+-144)] = f19;
+	f19 = heapFloat[(r12+13)];
+	heapFloat[(fp+-146)] = f19;
+	f19 = heapFloat[(r12+12)];
+	heapFloat[(fp+-147)] = f19;
+	f16 = f16+f23;
+	r4 = sp + -400;
+	f23 = f2*f25;
+	f19 = heapFloat[(fp+-128)];
+	f19 = f11*f19;
+	f18 = f27+f18;
+	f27 = f20*f9;
+	f26 = f26+f28;
+	f22 = -f22;
+	r10 = r4 >> 2;
+	f19 = f23+f19;
+	f23 = f16*f9;
+	f18 = f18+f27;
+	heapFloat[(fp+-100)] = f26;
+	f6 = f6*f22;
+	f17 = f17*f30;
+	f7 = f7*f22;
+	f10 = f10*f30;
+	f26 = f3*f8;
+	f27 = heapFloat[(fp+-135)];
+	f28 = f27*f12;
+	f19 = f19+f23;
+	heapFloat[(r10+1)] = f18;
+	f18 =                         0;
+	heapFloat[(r10+2)] = f19;
+	f6 = f6-f17;
+	f13 = f13*f29;
+	f7 = f7-f10;
+	f10 = f14*f29;
+	f1 = f1*f22;
+	f14 = f15*f30;
+	f15 = f5*f8;
+	f19 = heapFloat[(fp+-119)];
+	f17 = f19*f12;
+	f22 = f26+f28;
+	f23 = f4*f21;
+	f6 = f6-f13;
+	f7 = f7-f10;
+	f10 = heapFloat[(fp+-120)];
+	f10 = f10*f18;
+	f13 = heapFloat[(fp+-121)];
+	f13 = f13*f18;
+	f26 = heapFloat[(fp+-131)];
+	f26 = f26*f18;
+	f28 = heapFloat[(fp+-132)];
+	f28 = f28*f18;
+	f1 = f1-f14;
+	f14 = f24*f29;
+	f24 = f2*f8;
+	f29 = f11*f12;
+	f15 = f15+f17;
+	f17 = f20*f21;
+	f22 = f22+f23;
+	heap32[(r10+3)] = 0;
+	f1 = f1-f14;
+	f14 = heapFloat[(fp+-124)];
+	f14 = f14*f6;
+	f23 = heapFloat[(fp+-125)];
+	f23 = f23*f7;
+	f10 = f10+f13;
+	f13 = heapFloat[(fp+-133)];
+	f13 = f13*f18;
+	f30 = heapFloat[(fp+-134)];
+	f30 = f30*f6;
+	f19 = heapFloat[(fp+-139)];
+	f19 = f19*f7;
+	f26 = f26+f28;
+	f28 = heapFloat[(fp+-137)];
+	f28 = f28*f18;
+	f25 = heapFloat[(fp+-129)];
+	f25 = f25*f18;
+	f27 = heapFloat[(fp+-136)];
+	f27 = f27*f18;
+	f24 = f24+f29;
+	f29 = f16*f21;
+	f15 = f15+f17;
+	heapFloat[(r10+4)] = f22;
+	f10 = f10+f13;
+	f13 = f26+f28;
+	f14 = f14+f23;
+	f17 = heapFloat[(fp+-126)];
+	f17 = f17*f1;
+	f19 = f30+f19;
+	f22 = heapFloat[(fp+-127)];
+	f22 = f22*f1;
+	f23 = heapFloat[(fp+-138)];
+	f6 = f23*f6;
+	f23 = heapFloat[(fp+-123)];
+	f7 = f23*f7;
+	f23 = f25+f27;
+	f25 = heapFloat[(fp+-130)];
+	f25 = f25*f18;
+	f26 = heapFloat[(fp+-141)];
+	f27 = f3*f26;
+	f28 = heapFloat[(fp+-135)];
+	f30 = f28*f0;
+	f24 = f24+f29;
+	heapFloat[(r10+5)] = f15;
+	f15 = f23+f25;
+	heapFloat[(r10+6)] = f24;
+	f14 = f14+f17;
+	f17 = heapFloat[(fp+-145)];
+	f10 = f10+f17;
+	f17 = f19+f22;
+	f19 = heapFloat[(fp+-143)];
+	f13 = f13+f19;
+	f6 = f6+f7;
+	f19 = heapFloat[(fp+-122)];
+	f1 = f19*f1;
+	f7 = f5*f26;
+	f19 = heapFloat[(fp+-119)];
+	f22 = f19*f0;
+	f23 = f27+f30;
+	f24 = heapFloat[(fp+-148)];
+	f25 = f4*f24;
+	f13 = f17+f13;
+	f10 = f14+f10;
+	f1 = f6+f1;
+	f19 = heapFloat[(fp+-142)];
+	f6 = f15+f19;
+	f14 = f2*f26;
+	f15 = f11*f0;
+	f7 = f7+f22;
+	f17 = f20*f24;
+	f19 = f23+f25;
+	heap32[(r10+7)] = 0;
+	f1 = f1+f6;
+	f25 = heapFloat[(fp+-140)];
+	f6 = f25*f10;
+	f22 = heapFloat[(fp+-128)];
+	f22 = f22*f13;
+	f14 = f14+f15;
+	f15 = f16*f24;
+	f7 = f7+f17;
+	heapFloat[(r10+8)] = f19;
+	f8 = f8*f10;
+	f12 = f12*f13;
+	f6 = f6+f22;
+	f9 = f9*f1;
+	f14 = f14+f15;
+	heapFloat[(r10+9)] = f7;
+	f6 = f6+f9;
+	heapFloat[(r10+10)] = f14;
+	f7 = f26*f10;
+	f0 = f0*f13;
+	f8 = f8+f12;
+	f9 = f21*f1;
+	f8 = f8+f9;
+	f0 = f7+f0;
+	f7 = f24*f1;
+	f19 = heapFloat[(fp+-147)];
+	f6 = f6+f19;
+	heap32[(r10+11)] = 0;
+	f0 = f0+f7;
+	f19 = heapFloat[(fp+-146)];
+	f7 = f8+f19;
+	heapFloat[(r10+12)] = f6;
+	f19 = heapFloat[(fp+-144)];
+	f0 = f0+f19;
+	heapFloat[(r10+13)] = f7;
+	heapFloat[(r10+14)] = f0;
+	heap32[(r10+15)] = 0;
+	f0 = heapFloat[(fp+-68)];
+	f6 = heapFloat[(r13+1)];
+	f7 = heapFloat[(r13+2)];
+	f8 = f3*f0;
+	f9 = f5*f6;
+	f12 = heapFloat[(r13+8)];
+	f14 = heapFloat[(r13+9)];
+	f15 = heapFloat[(r13+10)];
+	f17 = heapFloat[(r13+4)];
+	f19 = heapFloat[(r13+5)];
+	f21 = heapFloat[(r13+6)];
+	f22 = f28*f0;
+	f23 = heapFloat[(fp+-119)];
+	f24 = f23*f6;
+	f8 = f8+f9;
+	f9 = f2*f7;
+	f25 = heapFloat[(r13+14)];
+	f26 = heapFloat[(r13+13)];
+	f27 = heapFloat[(r13+12)];
+	r10 = sp + -464;
+	f29 = f4*f0;
+	f30 = f20*f6;
+	f22 = f22+f24;
+	f24 = f11*f7;
+	f8 = f8+f9;
+	r12 = r10 >> 2;
+	f9 = f29+f30;
+	f29 = f16*f7;
+	f22 = f22+f24;
+	heapFloat[(fp+-116)] = f8;
+	f8 = f3*f17;
+	f24 = f5*f19;
+	f9 = f9+f29;
+	heapFloat[(r12+1)] = f22;
+	heapFloat[(r12+2)] = f9;
+	f9 = f28*f17;
+	f22 = f23*f19;
+	f8 = f8+f24;
+	f24 = f2*f21;
+	f29 = f4*f17;
+	f30 = f20*f19;
+	f9 = f9+f22;
+	f22 = f11*f21;
+	f8 = f8+f24;
+	heap32[(r12+3)] = 0;
+	f10 = -f10;
+	f24 = f29+f30;
+	f29 = f16*f21;
+	f9 = f9+f22;
+	heapFloat[(r12+4)] = f8;
+	f8 = f3*f10;
+	f22 = f28*f13;
+	f30 = f5*f10;
+	f23 = f23*f13;
+	f3 = f3*f12;
+	f5 = f5*f14;
+	f24 = f24+f29;
+	heapFloat[(r12+5)] = f9;
+	heapFloat[(r12+6)] = f24;
+	f8 = f8-f22;
+	f9 = f4*f1;
+	f22 = f30-f23;
+	f23 = f20*f1;
+	f10 = f2*f10;
+	f13 = f11*f13;
+	f24 = f28*f12;
+	f28 = heapFloat[(fp+-119)];
+	f28 = f28*f14;
+	f3 = f3+f5;
+	f2 = f2*f15;
+	f5 = f8-f9;
+	f8 = f22-f23;
+	f9 = f10-f13;
+	f1 = f16*f1;
+	f4 = f4*f12;
+	f10 = f20*f14;
+	f13 = f24+f28;
+	f11 = f11*f15;
+	f2 = f3+f2;
+	heap32[(r12+7)] = 0;
+	f1 = f9-f1;
+	f0 = f0*f5;
+	f3 = f6*f8;
+	f4 = f4+f10;
+	f6 = f16*f15;
+	f9 = f13+f11;
+	heapFloat[(r12+8)] = f2;
+	f2 = f17*f5;
+	f10 = f19*f8;
+	f0 = f0+f3;
+	f3 = f7*f1;
+	f4 = f4+f6;
+	heapFloat[(r12+9)] = f9;
+	f0 = f0+f3;
+	heapFloat[(r12+10)] = f4;
+	f3 = f12*f5;
+	f4 = f14*f8;
+	f2 = f2+f10;
+	f5 = f21*f1;
+	f2 = f2+f5;
+	f3 = f3+f4;
+	f1 = f15*f1;
+	f0 = f0+f27;
+	heap32[(r12+11)] = 0;
+	f1 = f3+f1;
+	f2 = f2+f26;
+	heapFloat[(r12+12)] = f0;
+	f0 = f1+f25;
+	heapFloat[(r12+13)] = f2;
+	heapFloat[(r12+14)] = f0;
+	heap32[(r12+15)] = 0;
+	r12 = sp + -16;
+	r13 = sp + -20;
+	heap32[(g0)] = r5;
+	heap32[(g0+1)] = r4;
+	heap32[(g0+2)] = r12;
+	heap32[(g0+3)] = r13;
+	_ZN15btTransformUtil22calculateDiffAxisAngleERK11btTransformS2_R9btVector3Rf(i7);
+	r4 = r12 >> 2;
+	f0 = heapFloat[(r4+2)];
+	f1 = heapFloat[(fp+-5)];
+	f2 = heapFloat[(r4+1)];
+	f3 = heapFloat[(fp+-4)];
+	r4 = sp + -40;
+	r5 = sp + -44;
+	heap32[(g0)] = r6;
+	heap32[(g0+1)] = r10;
+	heap32[(g0+2)] = r4;
+	heap32[(g0+3)] = r5;
+	_ZN15btTransformUtil22calculateDiffAxisAngleERK11btTransformS2_R9btVector3Rf(i7);
+	f2 = f2*f1;
+	f5 = heapFloat[(fp+-118)];
+	f4 = heapFloat[(fp+-117)];
+	f4 = f5/f4;
+	f3 = f3*f1;
+	r4 = r4 >> 2;
+	f0 = f0*f1;
+	f1 = f2*f4;
+	f2 = heapFloat[(r7+1)];
+	f3 = f3*f4;
+	f5 = heapFloat[(fp+-48)];
+	f1 = f1-f2;
+	f2 = f3-f5;
+	f0 = f0*f4;
+	f3 = heapFloat[(r7+2)];
+	f5 = heapFloat[(r4+2)];
+	f6 = heapFloat[(fp+-11)];
+	f7 = heapFloat[(r4+1)];
+	f8 = heapFloat[(fp+-10)];
+	f0 = f0-f3;
+	f3 = f5*f6;
+	f5 = f7*f6;
+	f6 = f8*f6;
+	f7 = f2*f2;
+	f8 = f1*f1;
+	f7 = f7+f8;
+	f8 = f0*f0;
+	f3 = f3*f4;
+	f9 = heapFloat[(r11+2)];
+	f5 = f5*f4;
+	f10 = heapFloat[(r11+1)];
+	f4 = f6*f4;
+	f6 = heapFloat[(fp+-52)];
+	f7 = f7+f8;
+	f3 = f3-f9;
+	f5 = f5-f10;
+	f4 = f4-f6;
+	f6 =   1.1920928955078125e-007;
+	if(f7 >f6) //_LBB582_11
+{
+	heapFloat[(g0)] = f7;
+	sqrtf(i7);
+	r4 = heap32[(r3+5)];
+	r4 = r4 >> 2;
+	f7 = heapFloat[(fp+-118)];
+	f18 = f7/f_g0;
+	f7 = f2*f18;
+	f8 = heapFloat[(r4+64)];
+	f9 = heapFloat[(r4+65)];
+	f10 = f1*f18;
+	f11 = heapFloat[(r4+68)];
+	f12 = heapFloat[(r4+69)];
+	f13 = f0*f18;
+	f18 = heapFloat[(r4+72)];
+	f14 = heapFloat[(r4+73)];
+	f15 = heapFloat[(r4+66)];
+	f16 = heapFloat[(r4+70)];
+	f8 = f8*f7;
+	f11 = f11*f10;
+	f9 = f9*f7;
+	f12 = f12*f10;
+	f17 = heapFloat[(r4+74)];
+	f8 = f8+f11;
+	f18 = f18*f13;
+	f9 = f9+f12;
+	f11 = f14*f13;
+	f12 = f15*f7;
+	f14 = f16*f10;
+	f18 = f8+f18;
+	f8 = f9+f11;
+	f9 = f12+f14;
+	f11 = f17*f13;
+	f9 = f9+f11;
+	f18 = f7*f18;
+	f8 = f10*f8;
+	f18 = f18+f8;
+	f8 = f13*f9;
+	f18 = f18+f8;
+}
+	f8 = f4*f4;
+	f9 = f5*f5;
+	f8 = f8+f9;
+	f9 = f3*f3;
+	f8 = f8+f9;
+	if(f8 >f6) //_LBB582_14
+{
+	heapFloat[(g0)] = f8;
+	sqrtf(i7);
+	r4 = heap32[(r3+6)];
+	r4 = r4 >> 2;
+	f9 = heapFloat[(fp+-118)];
+	f8 = f9/f_g0;
+	f9 = f4*f8;
+	f11 = heapFloat[(r4+64)];
+	f12 = heapFloat[(r4+65)];
+	f14 = f5*f8;
+	f15 = heapFloat[(r4+68)];
+	f16 = heapFloat[(r4+69)];
+	f17 = f3*f8;
+	f8 = heapFloat[(r4+72)];
+	f19 = heapFloat[(r4+73)];
+	f20 = heapFloat[(r4+66)];
+	f21 = heapFloat[(r4+70)];
+	f11 = f11*f9;
+	f15 = f15*f14;
+	f12 = f12*f9;
+	f16 = f16*f14;
+	f22 = heapFloat[(r4+74)];
+	f11 = f11+f15;
+	f8 = f8*f17;
+	f12 = f12+f16;
+	f15 = f19*f17;
+	f16 = f20*f9;
+	f19 = f21*f14;
+	f8 = f11+f8;
+	f11 = f12+f15;
+	f12 = f16+f19;
+	f15 = f22*f17;
+	f12 = f12+f15;
+	f8 = f9*f8;
+	f11 = f14*f11;
+	f8 = f8+f11;
+	f11 = f17*f12;
+	f8 = f8+f11;
+}
+else{
+	f8 =                         0;
+}
+	f10 = f10*f18;
+	f11 = f14*f8;
+	f7 = f7*f18;
+	f9 = f9*f8;
+	f10 = f10+f11;
+	f7 = f7+f9;
+	f9 = f13*f18;
+	f8 = f17*f8;
+	f8 = f9+f8;
+	f9 = f7*f7;
+	f11 = f10*f10;
+	f9 = f9+f11;
+	f11 = f8*f8;
+	f9 = f9+f11;
+if(!(f9 <=f6)) //_LBB582_35
+{
+	heapFloat[(g0)] = f9;
+	sqrtf(i7);
+	r4 = heap32[(r3+5)];
+	r5 = heap32[(r3+6)];
+	r4 = r4 >> 2;
+	r5 = r5 >> 2;
+	f9 = heapFloat[(fp+-118)];
+	f6 = f9/f_g0;
+	f11 = heapFloat[(r4+64)];
+	f7 = f7*f6;
+	f12 = heapFloat[(r4+65)];
+	f13 = heapFloat[(r5+64)];
+	f14 = heapFloat[(r5+65)];
+	f15 = heapFloat[(r4+68)];
+	f10 = f10*f6;
+	f16 = heapFloat[(r4+69)];
+	f17 = heapFloat[(r5+68)];
+	f18 = heapFloat[(r5+69)];
+	f19 = heapFloat[(r4+66)];
+	f20 = heapFloat[(r4+70)];
+	f21 = heapFloat[(r5+66)];
+	f22 = heapFloat[(r5+70)];
+	f11 = f11*f7;
+	f15 = f15*f10;
+	f23 = heapFloat[(r4+72)];
+	f6 = f8*f6;
+	f8 = heapFloat[(r4+73)];
+	f24 = heapFloat[(r5+72)];
+	f25 = heapFloat[(r5+73)];
+	f12 = f12*f7;
+	f16 = f16*f10;
+	f13 = f13*f7;
+	f17 = f17*f10;
+	f14 = f14*f7;
+	f18 = f18*f10;
+	f26 = heapFloat[(r4+74)];
+	f27 = heapFloat[(r5+74)];
+	f11 = f11+f15;
+	f15 = f23*f6;
+	f12 = f12+f16;
+	f8 = f8*f6;
+	f16 = f19*f7;
+	f19 = f20*f10;
+	f13 = f13+f17;
+	f17 = f24*f6;
+	f14 = f14+f18;
+	f18 = f25*f6;
+	f20 = f21*f7;
+	f21 = f22*f10;
+	f11 = f11+f15;
+	f8 = f12+f8;
+	f12 = f13+f17;
+	f13 = f14+f18;
+	f14 = f16+f19;
+	f15 = f26*f6;
+	f16 = f20+f21;
+	f17 = f27*f6;
+	f14 = f14+f15;
+	f15 = f16+f17;
+	f11 = f7*f11;
+	f8 = f10*f8;
+	f7 = f7*f12;
+	f10 = f10*f13;
+	f8 = f11+f8;
+	f11 = f6*f14;
+	f7 = f7+f10;
+	f6 = f6*f15;
+	f8 = f8+f11;
+	f6 = f7+f6;
+	f7 = f8+f6;
+	f7 = f7*f7;
+	f0 = f0*f8;
+	f3 = f3*f6;
+	f1 = f1*f8;
+	f5 = f5*f6;
+	f2 = f2*f8;
+	f4 = f4*f6;
+	f0 = f0-f3;
+	f3 = f9/f7;
+	f1 = f1-f5;
+	f2 = f2-f4;
+	f4 = heapFloat[(r3+140)];
+	f0 = f0*f3;
+	f1 = f1*f3;
+	f2 = f2*f3;
+	f3 =                         0;
+	if(f4 >=f3) //_LBB582_18
+{
+	r4 = heapU8[r0+541];
+	if(r4 !=0) //_LBB582_20
+{
+	f4 = f4/f8;
+}
+	f5 = heapFloat[(r3+141)];
+	f6 = heapFloat[(r3+142)];
+	f5 = f5+f2;
+	f6 = f6+f1;
+	f7 = heapFloat[(r3+143)];
+	f7 = f7+f0;
+	f8 = f5*f5;
+	f9 = f6*f6;
+	f8 = f8+f9;
+	f9 = f7*f7;
+	f8 = f8+f9;
+	heapFloat[(g0)] = f8;
+	sqrtf(i7);
+	f9 = f_g0;
+	if(f9 >f4) //_LBB582_23
+{
+	heapFloat[(g0)] = f8;
+	sqrtf(i7);
+	f1 = heapFloat[(fp+-118)];
+	f0 = f1/f_g0;
+	f1 = f7*f0;
+	f2 = f6*f0;
+	f0 = f5*f0;
+	f7 = heapFloat[(r3+143)];
+	f1 = f1*f4;
+	f6 = heapFloat[(r3+142)];
+	f2 = f2*f4;
+	f5 = heapFloat[(r3+141)];
+	f4 = f0*f4;
+	f0 = f1-f7;
+	f1 = f2-f6;
+	f2 = f4-f5;
+}
+else{
+	f5 = heapFloat[(r3+141)];
+	f6 = heapFloat[(r3+142)];
+	f7 = heapFloat[(r3+143)];
+}
+	f4 = f5+f2;
+	f5 = f6+f1;
+	heapFloat[(r3+141)] = f4;
+	f4 = f7+f0;
+	heapFloat[(r3+142)] = f5;
+	heapFloat[(r3+143)] = f4;
+}
+	f4 = f2*f2;
+	f5 = f1*f1;
+	f4 = f4+f5;
+	f5 = f0*f0;
+	f4 = f4+f5;
+	heapFloat[(g0)] = f4;
+	sqrtf(i7);
+	f4 = f_g0;
+	f5 = heapFloat[(fp+-118)];
+	f5 = f5/f4;
+	f0 = f0*f5;
+	f1 = f1*f5;
+	f2 = f2*f5;
+	f5 = heapFloat[(r8+84)];
+if(!(f5 ==f3)) //_LBB582_27
+{
+	r4 = heap32[(r3+5)];
+	r4 = r4 >> 2;
+	f5 = f4*f3;
+	f6 = heapFloat[(r8+126)];
+	f7 = heapFloat[(r4+65)];
+	f8 = heapFloat[(r4+64)];
+	f9 = heapFloat[(r4+69)];
+	f10 = heapFloat[(r4+68)];
+	f11 = heapFloat[(r4+73)];
+	f12 = heapFloat[(r4+72)];
+	f13 = heapFloat[(r4+66)];
+	f14 = heapFloat[(r4+70)];
+	f15 = heapFloat[(r4+74)];
+	f6 = f6+f5;
+	heapFloat[(r8+126)] = f6;
+	f6 = heapFloat[(r8+127)];
+	f6 = f6+f5;
+	heapFloat[(r8+127)] = f6;
+	f6 = heapFloat[(r8+128)];
+	f5 = f6+f5;
+	heapFloat[(r8+128)] = f5;
+	f5 = f8*f2;
+	f6 = f7*f1;
+	f7 = heapFloat[(r8+134)];
+	f5 = f5+f6;
+	f6 = f13*f0;
+	f5 = f5+f6;
+	f6 = f7*f4;
+	f7 = heapFloat[(r8+136)];
+	f8 = heapFloat[(r8+135)];
+	f13 = heapFloat[(r8+130)];
+	f5 = f5*f6;
+	f6 = f10*f2;
+	f9 = f9*f1;
+	f6 = f6+f9;
+	f9 = f14*f0;
+	f5 = f13+f5;
+	heapFloat[(r8+130)] = f5;
+	f5 = f6+f9;
+	f6 = f8*f4;
+	f8 = f12*f2;
+	f9 = f11*f1;
+	f5 = f5*f6;
+	f6 = heapFloat[(r8+131)];
+	f5 = f6+f5;
+	f6 = f8+f9;
+	f8 = f15*f0;
+	heapFloat[(r8+131)] = f5;
+	f5 = f6+f8;
+	f6 = f7*f4;
+	f5 = f5*f6;
+	f6 = heapFloat[(r8+132)];
+	f5 = f6+f5;
+	heapFloat[(r8+132)] = f5;
+}
+	f5 = heapFloat[(r9+84)];
+if(!(f5 ==f3)) //_LBB582_35
+{
+	f3 = -f4;
+	r4 = heap32[(r3+6)];
+	r4 = r4 >> 2;
+	f5 =                        -0;
+	f4 = f4*f5;
+	f5 = heapFloat[(r9+126)];
+	f6 = heapFloat[(r4+65)];
+	f7 = heapFloat[(r4+64)];
+	f8 = heapFloat[(r4+69)];
+	f9 = heapFloat[(r4+68)];
+	f10 = heapFloat[(r4+73)];
+	f11 = heapFloat[(r4+72)];
+	f12 = heapFloat[(r4+66)];
+	f13 = heapFloat[(r4+70)];
+	f14 = heapFloat[(r4+74)];
+	f5 = f5+f4;
+	heapFloat[(r9+126)] = f5;
+	f5 = heapFloat[(r9+127)];
+	f5 = f5+f4;
+	heapFloat[(r9+127)] = f5;
+	f5 = heapFloat[(r9+128)];
+	f4 = f5+f4;
+	heapFloat[(r9+128)] = f4;
+	f4 = f7*f2;
+	f5 = f6*f1;
+	f4 = f4+f5;
+	f5 = f12*f0;
+	f6 = heapFloat[(r9+134)];
+	f4 = f4+f5;
+	f5 = f6*f3;
+	f6 = heapFloat[(r9+136)];
+	f7 = heapFloat[(r9+135)];
+	f12 = heapFloat[(r9+130)];
+	f4 = f4*f5;
+	f5 = f9*f2;
+	f8 = f8*f1;
+	f5 = f5+f8;
+	f8 = f13*f0;
+	f4 = f12+f4;
+	heapFloat[(r9+130)] = f4;
+	f4 = f5+f8;
+	f5 = f7*f3;
+	f2 = f11*f2;
+	f1 = f10*f1;
+	f4 = f4*f5;
+	f5 = heapFloat[(r9+131)];
+	f4 = f5+f4;
+	f1 = f2+f1;
+	f0 = f14*f0;
+	heapFloat[(r9+131)] = f4;
+	f0 = f1+f0;
+	f1 = f6*f3;
+	f0 = f0*f1;
+	f1 = heapFloat[(r9+132)];
+	f0 = f1+f0;
+	heapFloat[(r9+132)] = f0;
+}
+}
+}
+} while(0);
+	r1 = r1 >> 2;
+	r2 = r2 >> 2;
+	f0 = heapFloat[(r1+82)];
+	f1 = heapFloat[(r1+132)];
+	f2 = heapFloat[(r1+81)];
+	f3 = heapFloat[(r1+131)];
+	f4 = heapFloat[(r1+80)];
+	f5 = heapFloat[(r1+130)];
+	f6 = heapFloat[(r2+82)];
+	f7 = heapFloat[(r2+132)];
+	f8 = heapFloat[(r2+81)];
+	f9 = heapFloat[(r2+131)];
+	f10 = heapFloat[(r2+80)];
+	f11 = heapFloat[(r2+130)];
+	f0 = f0+f1;
+	f1 = f2+f3;
+	f2 = f4+f5;
+	f3 = f6+f7;
+	f4 = f8+f9;
+	f5 = f10+f11;
+	r4 = heapU8[r0+514];
+if(!(r4 ==0)) //_LBB582_43
+{
+	f6 = heapFloat[(r3+129)];
+	f7 = heapFloat[(r3+123)];
+	f8 = heapFloat[(r3+112)];
+	f9 = f5-f2;
+	f10 = heapFloat[(r3+113)];
+	f11 = f4-f1;
+	f12 = heapFloat[(r3+114)];
+	f13 = f3-f0;
+	f9 = f9*f8;
+	f11 = f11*f10;
+	f7 = f6*f7;
+	f14 = heapFloat[(r3+105)];
+	f9 = f9+f11;
+	f11 = f13*f12;
+	f7 = f7*f14;
+	f9 = f9+f11;
+	f11 = heapFloat[(fp+-117)];
+	f7 = f7/f11;
+	f11 =                         0;
+	if(f9 >f11) //_LBB582_38
+{
+	f6 = f6*f9;
+	f9 = heapFloat[(r3+106)];
+	f6 = f6*f9;
+	f7 = f6+f7;
+}
+	f6 = heapFloat[(r3+120)];
+	f9 = heapFloat[(r3+126)];
+	f6 = f6*f7;
+	f6 = f9+f6;
+	f6 = f6 > f11 ? f6 : f11;
+	heapFloat[(r3+126)] = f6;
+	f6 = f6-f9;
+	f7 = f8*f6;
+	f8 = heapFloat[(r3+131)];
+	f9 = f10*f6;
+	f10 = heapFloat[(r3+132)];
+	f13 = heapFloat[(r3+133)];
+	f6 = f12*f6;
+	f12 = f7*f8;
+	f14 = f9*f10;
+	f12 = f12+f14;
+	f14 = f6*f13;
+	f12 = f12+f14;
+	f10 = f10*f12;
+	f8 = f8*f12;
+	f12 = f13*f12;
+	f9 = f9-f10;
+	f7 = f7-f8;
+	f6 = f6-f12;
+	f8 = f7*f7;
+	f10 = f9*f9;
+	f8 = f8+f10;
+	f10 = f6*f6;
+	f8 = f8+f10;
+	heapFloat[(g0)] = f8;
+	sqrtf(i7);
+	f8 = f_g0;
+	f10 =                         1;
+	f10 = f10/f8;
+	f6 = f6*f10;
+	f9 = f9*f10;
+	f7 = f7*f10;
+	f10 = heapFloat[(r1+84)];
+if(!(f10 ==f11)) //_LBB582_41
+{
+	r4 = heap32[(r3+5)];
+	r4 = r4 >> 2;
+	f10 = f8*f11;
+	f12 = heapFloat[(r1+126)];
+	f13 = heapFloat[(r4+65)];
+	f14 = heapFloat[(r4+64)];
+	f15 = heapFloat[(r4+69)];
+	f16 = heapFloat[(r4+68)];
+	f17 = heapFloat[(r4+73)];
+	f18 = heapFloat[(r4+72)];
+	f19 = heapFloat[(r4+66)];
+	f20 = heapFloat[(r4+70)];
+	f21 = heapFloat[(r4+74)];
+	f12 = f12+f10;
+	heapFloat[(r1+126)] = f12;
+	f12 = heapFloat[(r1+127)];
+	f12 = f12+f10;
+	heapFloat[(r1+127)] = f12;
+	f12 = heapFloat[(r1+128)];
+	f10 = f12+f10;
+	heapFloat[(r1+128)] = f10;
+	f10 = f14*f7;
+	f12 = f13*f9;
+	f13 = heapFloat[(r1+134)];
+	f10 = f10+f12;
+	f12 = f19*f6;
+	f10 = f10+f12;
+	f12 = f13*f8;
+	f13 = heapFloat[(r1+136)];
+	f14 = heapFloat[(r1+135)];
+	f19 = heapFloat[(r1+130)];
+	f10 = f10*f12;
+	f12 = f16*f7;
+	f15 = f15*f9;
+	f12 = f12+f15;
+	f15 = f20*f6;
+	f10 = f19+f10;
+	heapFloat[(r1+130)] = f10;
+	f10 = f12+f15;
+	f12 = f14*f8;
+	f14 = f18*f7;
+	f15 = f17*f9;
+	f10 = f10*f12;
+	f12 = heapFloat[(r1+131)];
+	f10 = f12+f10;
+	f12 = f14+f15;
+	f14 = f21*f6;
+	heapFloat[(r1+131)] = f10;
+	f10 = f12+f14;
+	f12 = f13*f8;
+	f10 = f10*f12;
+	f12 = heapFloat[(r1+132)];
+	f10 = f12+f10;
+	heapFloat[(r1+132)] = f10;
+}
+	f10 = heapFloat[(r2+84)];
+if(!(f10 ==f11)) //_LBB582_43
+{
+	f10 = -f8;
+	r4 = heap32[(r3+6)];
+	r4 = r4 >> 2;
+	f11 =                        -0;
+	f8 = f8*f11;
+	f11 = heapFloat[(r2+126)];
+	f12 = heapFloat[(r4+65)];
+	f13 = heapFloat[(r4+64)];
+	f14 = heapFloat[(r4+69)];
+	f15 = heapFloat[(r4+68)];
+	f16 = heapFloat[(r4+73)];
+	f17 = heapFloat[(r4+72)];
+	f18 = heapFloat[(r4+66)];
+	f19 = heapFloat[(r4+70)];
+	f20 = heapFloat[(r4+74)];
+	f11 = f11+f8;
+	heapFloat[(r2+126)] = f11;
+	f11 = heapFloat[(r2+127)];
+	f11 = f11+f8;
+	heapFloat[(r2+127)] = f11;
+	f11 = heapFloat[(r2+128)];
+	f8 = f11+f8;
+	heapFloat[(r2+128)] = f8;
+	f8 = f13*f7;
+	f11 = f12*f9;
+	f8 = f8+f11;
+	f11 = f18*f6;
+	f12 = heapFloat[(r2+134)];
+	f8 = f8+f11;
+	f11 = f12*f10;
+	f12 = heapFloat[(r2+136)];
+	f13 = heapFloat[(r2+135)];
+	f18 = heapFloat[(r2+130)];
+	f8 = f8*f11;
+	f11 = f15*f7;
+	f14 = f14*f9;
+	f11 = f11+f14;
+	f14 = f19*f6;
+	f8 = f18+f8;
+	heapFloat[(r2+130)] = f8;
+	f8 = f11+f14;
+	f11 = f13*f10;
+	f7 = f17*f7;
+	f9 = f16*f9;
+	f8 = f8*f11;
+	f11 = heapFloat[(r2+131)];
+	f8 = f11+f8;
+	f7 = f7+f9;
+	f6 = f20*f6;
+	heapFloat[(r2+131)] = f8;
+	f6 = f7+f6;
+	f7 = f12*f10;
+	f6 = f6*f7;
+	f7 = heapFloat[(r2+132)];
+	f6 = f7+f6;
+	heapFloat[(r2+132)] = f6;
+}
+}
+	r0 = heapU8[r0+513];
+if(!(r0 ==0)) //_LBB582_52
+{
+	f6 = heapFloat[(r3+130)];
+	f7 = heapFloat[(r3+124)];
+	f8 = heapFloat[(r3+116)];
+	f2 = f5-f2;
+	f5 = heapFloat[(r3+117)];
+	f1 = f4-f1;
+	f4 = heapFloat[(r3+118)];
+	f0 = f3-f0;
+	f2 = f2*f8;
+	f1 = f1*f5;
+	f3 = f6*f7;
+	f7 = heapFloat[(r3+105)];
+	f1 = f2+f1;
+	f0 = f0*f4;
+	f2 = f3*f7;
+	f0 = f1+f0;
+	f1 = heapFloat[(fp+-117)];
+	f1 = f2/f1;
+	f2 =                         0;
+	if(f0 >f2) //_LBB582_46
+{
+	f0 = f6*f0;
+	f3 = heapFloat[(r3+106)];
+	f0 = f0*f3;
+	f1 = f0+f1;
+}
+	f0 = heapFloat[(r3+121)];
+	f3 = heapFloat[(r3+127)];
+	f0 = f0*f1;
+	f0 = f3+f0;
+	f0 = f0 > f2 ? f0 : f2;
+	heapFloat[(r3+127)] = f0;
+	f0 = f0-f3;
+	f1 = heapFloat[(r1+84)];
+	if(f1 !=f2) //_LBB582_49
+{
+	r0 = heap32[(r3+5)];
+	r0 = r0 >> 2;
+	f1 = f0*f2;
+	f3 = heapFloat[(r1+126)];
+	f6 = heapFloat[(r0+65)];
+	f7 = heapFloat[(r0+64)];
+	f9 = heapFloat[(r0+69)];
+	f10 = heapFloat[(r0+68)];
+	f11 = heapFloat[(r0+73)];
+	f12 = heapFloat[(r0+72)];
+	f13 = heapFloat[(r0+66)];
+	f14 = heapFloat[(r0+70)];
+	f15 = heapFloat[(r0+74)];
+	f3 = f3+f1;
+	heapFloat[(r1+126)] = f3;
+	f3 = heapFloat[(r1+127)];
+	f3 = f3+f1;
+	heapFloat[(r1+127)] = f3;
+	f3 = heapFloat[(r1+128)];
+	f1 = f3+f1;
+	heapFloat[(r1+128)] = f1;
+	f1 = f7*f8;
+	f3 = f6*f5;
+	f6 = heapFloat[(r1+134)];
+	f1 = f1+f3;
+	f3 = f13*f4;
+	f1 = f1+f3;
+	f3 = f6*f0;
+	f6 = heapFloat[(r1+136)];
+	f7 = heapFloat[(r1+135)];
+	f13 = heapFloat[(r1+130)];
+	f1 = f1*f3;
+	f3 = f10*f8;
+	f9 = f9*f5;
+	f3 = f3+f9;
+	f9 = f14*f4;
+	f1 = f13+f1;
+	heapFloat[(r1+130)] = f1;
+	f1 = f3+f9;
+	f3 = f7*f0;
+	f8 = f12*f8;
+	f5 = f11*f5;
+	f1 = f1*f3;
+	f3 = heapFloat[(r1+131)];
+	f1 = f3+f1;
+	f5 = f8+f5;
+	f4 = f15*f4;
+	heapFloat[(r1+131)] = f1;
+	f4 = f5+f4;
+	f5 = f6*f0;
+	f4 = f4*f5;
+	f5 = heapFloat[(r1+132)];
+	f4 = f5+f4;
+	heapFloat[(r1+132)] = f4;
+	f8 = heapFloat[(r3+116)];
+	f5 = heapFloat[(r3+117)];
+	f4 = heapFloat[(r3+118)];
+}
+	f1 = heapFloat[(r2+84)];
+if(!(f1 ==f2)) //_LBB582_52
+{
+	f1 = -f0;
+	r0 = heap32[(r3+6)];
+	r0 = r0 >> 2;
+	f2 =                        -0;
+	f0 = f0*f2;
+	f2 = heapFloat[(r2+126)];
+	f3 = heapFloat[(r0+65)];
+	f6 = heapFloat[(r0+64)];
+	f7 = heapFloat[(r0+69)];
+	f9 = heapFloat[(r0+68)];
+	f10 = heapFloat[(r0+73)];
+	f11 = heapFloat[(r0+72)];
+	f12 = heapFloat[(r0+66)];
+	f13 = heapFloat[(r0+70)];
+	f14 = heapFloat[(r0+74)];
+	f2 = f2+f0;
+	heapFloat[(r2+126)] = f2;
+	f2 = heapFloat[(r2+127)];
+	f2 = f2+f0;
+	heapFloat[(r2+127)] = f2;
+	f2 = heapFloat[(r2+128)];
+	f0 = f2+f0;
+	heapFloat[(r2+128)] = f0;
+	f0 = f6*f8;
+	f2 = f3*f5;
+	f0 = f0+f2;
+	f2 = f12*f4;
+	f3 = heapFloat[(r2+134)];
+	f0 = f0+f2;
+	f2 = f3*f1;
+	f3 = heapFloat[(r2+136)];
+	f6 = heapFloat[(r2+135)];
+	f12 = heapFloat[(r2+130)];
+	f0 = f0*f2;
+	f2 = f9*f8;
+	f7 = f7*f5;
+	f2 = f2+f7;
+	f7 = f13*f4;
+	f0 = f12+f0;
+	heapFloat[(r2+130)] = f0;
+	f0 = f2+f7;
+	f2 = f6*f1;
+	f6 = f11*f8;
+	f5 = f10*f5;
+	f0 = f0*f2;
+	f2 = heapFloat[(r2+131)];
+	f0 = f2+f0;
+	f2 = f6+f5;
+	f4 = f14*f4;
+	heapFloat[(r2+131)] = f0;
+	f0 = f2+f4;
+	f1 = f3*f1;
+	f0 = f0*f1;
+	f1 = heapFloat[(r2+132)];
+	f0 = f1+f0;
+	heapFloat[(r2+132)] = f0;
+}
+}
+}
+	return;
+}
+
+function _ZN21btConeTwistConstraint8setParamEifi(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var f0;
+var __label__ = 0;
+	i7 = sp + -16;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp+1)];
+	r1 = heap32[(fp)];
+	f0 = heapFloat[(fp+2)];
+	r2 = heap32[(fp+3)];
+	r3 = (r0 + -3)|0;
+	if(uint(r3) <uint(2)) //_LBB583_5
+{
+	if(uint(r2) >uint(2)) //_LBB583_7
+{
+	r0 = r1 >> 2;
+	heapFloat[(r0+148)] = f0;
+	r1 = heap32[(r0+145)];
+	r1 = r1 | 4;
+	heap32[(r0+145)] = r1;
+	return;
+}
+else{
+	r1 = r1 >> 2;
+	heapFloat[(r1+146)] = f0;
+	r0 = heap32[(r1+145)];
+	r0 = r0 | 1;
+	heap32[(r1+145)] = r0;
+	return;
+}
+}
+else{
+	r0 = (r0 + -1)|0;
+	if(uint(r0) >uint(1)) //_LBB583_8
+{
+	r0 = _2E_str10;
+	r1 = _2E_str24;
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r1;
+	heap32[(g0+2)] = 1066;
+	_assert(i7);
+}
+else{
+	if(uint(r2) >uint(2)) //_LBB583_4
+{
+	r1 = r1 >> 2;
+	heapFloat[(r1+105)] = f0;
+	return;
+}
+else{
+	r1 = r1 >> 2;
+	heapFloat[(r1+147)] = f0;
+	r2 = heap32[(r1+145)];
+	r2 = r2 | 2;
+	heap32[(r1+145)] = r2;
+	return;
+}
+}
+}
+}
+
+function _ZNK21btConeTwistConstraint8getParamEii(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var f0;
+var __label__ = 0;
+	i7 = sp + -16;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp+1)];
+	r1 = heap32[(fp)];
+	r2 = heap32[(fp+2)];
+	r3 = (r0 + -3)|0;
+	if(uint(r3) <uint(2)) //_LBB584_9
+{
+	if(uint(r2) >uint(2)) //_LBB584_13
+{
+	r0 = (r2 + -3)|0;
+	if(uint(r0) >uint(2)) //_LBB584_17
+{
+	r1 = _2E_str10;
+	r0 = _2E_str24;
+	heap32[(g0)] = r1;
+	heap32[(g0+1)] = r0;
+	heap32[(g0+2)] = 1107;
+	_assert(i7);
+}
+else{
+	r0 = heapU8[r1+580];
+	r0 = r0 & 4;
+	if(r0 !=0) //_LBB584_16
+{
+	r1 = (r1 + 592)|0;
+}
+else{
+	r1 = _2E_str543;
+	r0 = _2E_str24;
+	heap32[(g0)] = r1;
+	heap32[(g0+1)] = r0;
+	heap32[(g0+2)] = 1102;
+	_assert(i7);
+}
+}
+}
+else{
+	r2 = heapU8[r1+580];
+	r2 = r2 & 1;
+	if(r2 != 0) //_LBB584_12
+{
+	r1 = (r1 + 584)|0;
+}
+else{
+	r1 = _2E_str442;
+	r2 = _2E_str24;
+	heap32[(g0)] = r1;
+	heap32[(g0+1)] = r2;
+	heap32[(g0+2)] = 1097;
+	_assert(i7);
+}
+}
+}
+else{
+	r0 = (r0 + -1)|0;
+	if(uint(r0) >uint(1)) //_LBB584_18
+{
+	r1 = _2E_str10;
+	r0 = _2E_str24;
+	heap32[(g0)] = r1;
+	heap32[(g0+1)] = r0;
+	heap32[(g0+2)] = 1111;
+	_assert(i7);
+}
+else{
+	if(uint(r2) >uint(2)) //_LBB584_6
+{
+	r2 = (r2 + -3)|0;
+	if(uint(r2) >uint(2)) //_LBB584_8
+{
+	r1 = _2E_str10;
+	r2 = _2E_str24;
+	heap32[(g0)] = r1;
+	heap32[(g0+1)] = r2;
+	heap32[(g0+2)] = 1090;
+	_assert(i7);
+}
+else{
+	r1 = (r1 + 420)|0;
+}
+}
+else{
+	r2 = heapU8[r1+580];
+	r2 = r2 & 2;
+	if(r2 !=0) //_LBB584_5
+{
+	r1 = (r1 + 588)|0;
+}
+else{
+	r1 = _2E_str1340;
+	r2 = _2E_str24;
+	heap32[(g0)] = r1;
+	heap32[(g0+1)] = r2;
+	heap32[(g0+2)] = 1081;
+	_assert(i7);
+}
+}
+}
+}
+	r0 = r1 >> 2;
+	f0 = heapFloat[(r0)];
+	f_g0 = f0;
+	return;
+}
+
+function _ZN15btJacobianEntryC2ERK11btMatrix3x3S2_RK9btVector3S5_S5_S5_fS5_f(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var f0;
+	var f1;
+	var f2;
+	var f3;
+	var f4;
+	var f5;
+	var f6;
+	var f7;
+	var f8;
+	var f9;
+	var f10;
+	var f11;
+	var f12;
+	var f13;
+	var f14;
+var __label__ = 0;
+	i7 = sp + -16;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp+5)];
+	r1 = heap32[(fp)];
+	r0 = r0 >> 2;
+	r1 = r1 >> 2;
+	f0 = heapFloat[(r0)];
+	heapFloat[(r1)] = f0;
+	f1 = heapFloat[(r0+1)];
+	heapFloat[(r1+1)] = f1;
+	f2 = heapFloat[(r0+2)];
+	r2 = heap32[(fp+3)];
+	heapFloat[(r1+2)] = f2;
+	r2 = r2 >> 2;
+	heap32[(r1+3)] = heap32[(r0+3)];
+	f3 = heapFloat[(r2)];
+	f4 = heapFloat[(r2+1)];
+	f5 = heapFloat[(r2+2)];
+	r0 = heap32[(fp+1)];
+	r0 = r0 >> 2;
+	f6 = f4*f2;
+	f7 = f5*f1;
+	f5 = f5*f0;
+	f8 = f3*f2;
+	f6 = f6-f7;
+	f7 = heapFloat[(r0)];
+	f5 = f5-f8;
+	f8 = heapFloat[(r0+1)];
+	f3 = f3*f1;
+	f4 = f4*f0;
+	f9 = heapFloat[(r0+4)];
+	f10 = heapFloat[(r0+5)];
+	f7 = f7*f6;
+	f8 = f8*f5;
+	f3 = f3-f4;
+	f4 = heapFloat[(r0+2)];
+	f11 = heapFloat[(r0+8)];
+	f12 = heapFloat[(r0+9)];
+	f13 = heapFloat[(r0+10)];
+	f14 = heapFloat[(r0+6)];
+	f9 = f9*f6;
+	f10 = f10*f5;
+	f7 = f7+f8;
+	f4 = f4*f3;
+	f6 = f11*f6;
+	f5 = f12*f5;
+	f8 = f9+f10;
+	f9 = f14*f3;
+	f4 = f7+f4;
+	f5 = f6+f5;
+	f3 = f13*f3;
+	f6 = f8+f9;
+	heapFloat[(r1+4)] = f4;
+	f3 = f5+f3;
+	heapFloat[(r1+5)] = f6;
+	r0 = heap32[(fp+4)];
+	heapFloat[(r1+6)] = f3;
+	r0 = r0 >> 2;
+	heap32[(r1+7)] = 0;
+	f5 = heapFloat[(r0)];
+	f7 = heapFloat[(r0+1)];
+	f8 = heapFloat[(r0+2)];
+	r0 = heap32[(fp+2)];
+	r0 = r0 >> 2;
+	f9 = f8*f1;
+	f10 = f7*f2;
+	f2 = f5*f2;
+	f8 = f8*f0;
+	f9 = f9-f10;
+	f10 = heapFloat[(r0)];
+	f2 = f2-f8;
+	f8 = heapFloat[(r0+1)];
+	f0 = f7*f0;
+	f1 = f5*f1;
+	f5 = heapFloat[(r0+4)];
+	f7 = heapFloat[(r0+5)];
+	f10 = f10*f9;
+	f8 = f8*f2;
+	f0 = f0-f1;
+	f1 = heapFloat[(r0+2)];
+	f11 = heapFloat[(r0+8)];
+	f12 = heapFloat[(r0+9)];
+	f13 = heapFloat[(r0+10)];
+	f14 = heapFloat[(r0+6)];
+	f5 = f5*f9;
+	f7 = f7*f2;
+	f8 = f10+f8;
+	f1 = f1*f0;
+	f9 = f11*f9;
+	f2 = f12*f2;
+	f5 = f5+f7;
+	f7 = f14*f0;
+	f1 = f8+f1;
+	f2 = f9+f2;
+	f0 = f13*f0;
+	f5 = f5+f7;
+	heapFloat[(r1+8)] = f1;
+	f0 = f2+f0;
+	heapFloat[(r1+9)] = f5;
+	r0 = heap32[(fp+6)];
+	heapFloat[(r1+10)] = f0;
+	r0 = r0 >> 2;
+	heap32[(r1+11)] = 0;
+	f2 = heapFloat[(r0+2)];
+	f7 = heapFloat[(r0+1)];
+	f8 = heapFloat[(r0)];
+	f8 = f8*f4;
+	f7 = f7*f6;
+	heapFloat[(r1+12)] = f8;
+	f2 = f2*f3;
+	heapFloat[(r1+13)] = f7;
+	r0 = heap32[(fp+8)];
+	heapFloat[(r1+14)] = f2;
+	r0 = r0 >> 2;
+	heap32[(r1+15)] = 0;
+	f9 = heapFloat[(r0+2)];
+	f10 = heapFloat[(r0+1)];
+	f11 = heapFloat[(r0)];
+	f4 = f8*f4;
+	f6 = f7*f6;
+	f7 = f10*f5;
+	f8 = f11*f1;
+	f4 = f4+f6;
+	f2 = f2*f3;
+	f3 = f9*f0;
+	heapFloat[(r1+16)] = f8;
+	f2 = f4+f2;
+	f4 = heapFloat[(fp+7)];
+	f1 = f8*f1;
+	f5 = f7*f5;
+	heapFloat[(r1+17)] = f7;
+	f2 = f2+f4;
+	f4 = heapFloat[(fp+9)];
+	f1 = f1+f5;
+	f0 = f3*f0;
+	heapFloat[(r1+18)] = f3;
+	f2 = f2+f4;
+	f0 = f1+f0;
+	f0 = f2+f0;
+	heap32[(r1+19)] = 0;
+	f1 =                         0;
+	heapFloat[(r1+20)] = f0;
+	if(f0 >f1) //_LBB585_2
+{
+	return;
+}
+else{
+	r0 = _2E_str846;
+	r1 = _2E_str947;
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r1;
+	heap32[(g0+2)] = 53;
+	_assert(i7);
+}
+}
+
+function _ZNK21btConeTwistConstraint16GetPointForAngleEff(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var f0;
+	var f1;
+	var f2;
+	var f3;
+	var f4;
+	var f5;
+	var f6;
+	var f7;
+	var f8;
+	var f9;
+	var f10;
+	var f11;
+var __label__ = 0;
+	i7 = sp + -16;var g0 = i7>>2; // save stack
+	f0 = heapFloat[(fp+2)];
+	heapFloat[(g0)] = f0;
+	cosf(i7);
+	f1 = f_g0;
+	r0 = heap32[(fp+1)];
+	heapFloat[(g0)] = f0;
+	sinf(i7);
+	f0 = f_g0;
+	r0 = r0 >> 2;
+	r1 = heap32[(fp)];
+	f2 = heapFloat[(fp+3)];
+	f3 = f1; //fstod f1, f3
+	f3 = Math.abs(f3);
+	f4 =   1.1920928955078125e-007;
+	if(f3 >f4) //_LBB586_2
+{
+	f3 = heapFloat[(r0+109)];
+	f4 = heapFloat[(r0+108)];
+	f5 = f0*f0;
+	f6 = f1*f1;
+	f5 = f5/f6;
+	f4 = f4*f4;
+	f6 =                         1;
+	f3 = f3*f3;
+	f4 = f5/f4;
+	f3 = f6/f3;
+	f5 = f5+f6;
+	f3 = f4+f3;
+	f3 = f5/f3;
+	heapFloat[(g0)] = f3;
+	sqrtf(i7);
+	f3 = f_g0;
+}
+else{
+	f3 = heapFloat[(r0+108)];
+}
+	f4 =                         0;
+	f5 = f1*f1;
+	f5 = f5+f4;
+	f6 = f0*f0;
+	f5 = f5+f6;
+	heapFloat[(g0)] = f5;
+	sqrtf(i7);
+	f5 = f_g0;
+	if(f5 !=f4) //_LBB586_5
+{
+	f6 =                       0.5;
+	f3 = f3*f6;
+	heapFloat[(g0)] = f3;
+	sinf(i7);
+	f5 = f_g0/f5;
+	f6 = f5*f4;
+	heapFloat[(g0)] = f3;
+	f0 = -f0;
+	f1 = f1*f5;
+	cosf(i7);
+	f7 = -f6;
+	f0 = f5*f0;
+	f5 = f_g0*f2;
+	f8 = f1*f4;
+	f7 = f2*f7;
+	f5 = f5+f8;
+	f9 = f0*f4;
+	f7 = f7-f8;
+	f8 = f0*f2;
+	f10 = f_g0*f4;
+	f5 = f5-f9;
+	f7 = f7-f9;
+	f4 = f6*f4;
+	f8 = f10+f8;
+	f8 = f8-f4;
+	f9 = f5*f_g0;
+	f11 = f7*f6;
+	f4 = f10+f4;
+	f2 = f1*f2;
+	f2 = f4-f2;
+	f4 = f8*f_g0;
+	f10 = f7*f1;
+	f9 = f9-f11;
+	f11 = f8*f0;
+	f3 = f2*f_g0;
+	f7 = f7*f0;
+	f4 = f4-f10;
+	f10 = f2*f6;
+	f9 = f9-f11;
+	f2 = f2*f1;
+	r0 = r1 >> 2;
+	f2 = f9+f2;
+	f3 = f3-f7;
+	f1 = f5*f1;
+	f4 = f4-f10;
+	f0 = f5*f0;
+	f1 = f3-f1;
+	f3 = f8*f6;
+	f0 = f4+f0;
+	heapFloat[(r0)] = f2;
+	f1 = f1+f3;
+	heapFloat[(r0+1)] = f0;
+	heapFloat[(r0+2)] = f1;
+	heap32[(r0+3)] = 0;
+	return;
+}
+else{
+	r1 = _2E_str115;
+	r0 = _2E_str685;
+	heap32[(g0)] = r1;
+	heap32[(g0+1)] = r0;
+	heap32[(g0+2)] = 61;
+	_assert(i7);
+}
+}
+
+function _ZN21btConeTwistConstraint14calcAngleInfo2ERK11btTransformS2_RK11btMatrix3x3S5_(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+	var r6;
+	var r7;
+	var f0;
+	var f1;
+	var f2;
+	var f3;
+	var f4;
+	var f5;
+	var f6;
+	var f7;
+	var f8;
+	var f9;
+	var f10;
+	var f11;
+	var f12;
+	var f13;
+	var f14;
+	var f15;
+	var f16;
+	var f17;
+	var f18;
+	var f19;
+	var f20;
+	var f21;
+	var f22;
+	var f23;
+	var f24;
+	var f25;
+	var f26;
+	var f27;
+	var f28;
+	var f29;
+	var f30;
+var __label__ = 0;
+	i7 = sp + -384;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = r0 >> 2;
+	heap32[(r1+123)] = 0;
+	r2 = 0;
+	heap32[(r1+122)] = 0;
+	r3 = heap32[(fp+1)];
+	r4 = heap32[(fp+2)];
+	heap8[r0+513] = r2;
+	heap8[r0+514] = r2;
+	r2 = heapU8[r0+540];
+	if(r2 ==0) //_LBB587_7
+{
+__label__ = 6;
+}
+else{
+	r2 = heapU8[r0+515];
+	if(r2 !=0) //_LBB587_7
+{
+__label__ = 6;
+}
+else{
+	f0 = heapFloat[(r1+136)];
+	f1 = heapFloat[(r1+137)];
+	f2 = heapFloat[(r1+138)];
+	f3 = f0*f0;
+	f4 = f1*f1;
+	f5 = heapFloat[(r1+139)];
+	f3 = f3+f4;
+	f4 = f2*f2;
+	f3 = f3+f4;
+	f4 = f5*f5;
+	f6 =                         2;
+	f3 = f3+f4;
+	r4 = r4 >> 2;
+	f3 = f6/f3;
+	f4 = f2*f3;
+	f6 = f1*f3;
+	f3 = f0*f3;
+	f7 = heapFloat[(r4)];
+	heapFloat[(fp+-48)] = f7;
+	f7 = heapFloat[(r1+89)];
+	heapFloat[(fp+-64)] = f7;
+	f7 = heapFloat[(r1+88)];
+	heapFloat[(fp+-66)] = f7;
+	f8 = heapFloat[(r4+1)];
+	heapFloat[(fp+-49)] = f8;
+	f9 = heapFloat[(r1+93)];
+	heapFloat[(fp+-65)] = f9;
+	f7 = heapFloat[(r1+92)];
+	heapFloat[(fp+-67)] = f7;
+	f8 = heapFloat[(r1+90)];
+	heapFloat[(fp+-54)] = f8;
+	f9 = heapFloat[(r1+94)];
+	heapFloat[(fp+-55)] = f9;
+	f2 = f2*f4;
+	f10 = f0*f3;
+	f11 = f1*f6;
+	f12 = heapFloat[(fp+-66)];
+	f7 = heapFloat[(fp+-48)];
+	f13 = f12*f7;
+	f7 = heapFloat[(fp+-67)];
+	f8 = heapFloat[(fp+-49)];
+	f14 = f7*f8;
+	f15 = heapFloat[(fp+-64)];
+	f7 = heapFloat[(fp+-48)];
+	f16 = f15*f7;
+	f9 = heapFloat[(fp+-65)];
+	f17 = f9*f8;
+	f18 = heapFloat[(r4+2)];
+	heapFloat[(fp+-83)] = f18;
+	f19 = heapFloat[(r1+97)];
+	heapFloat[(fp+-80)] = f19;
+	f20 = heapFloat[(r1+96)];
+	heapFloat[(fp+-81)] = f20;
+	r3 = r3 >> 2;
+	f21 = heapFloat[(r1+98)];
+	heapFloat[(fp+-77)] = f21;
+	f22 = f11+f2;
+	f23 =                         1;
+	heapFloat[(fp+-76)] = f23;
+	f2 = f10+f2;
+	f24 = f0*f6;
+	f25 = f5*f4;
+	f13 = f13+f14;
+	f14 = f20*f18;
+	f16 = f16+f17;
+	f17 = f19*f18;
+	f8 = heapFloat[(fp+-54)];
+	f26 = f8*f7;
+	f9 = heapFloat[(fp+-55)];
+	f8 = heapFloat[(fp+-49)];
+	f27 = f9*f8;
+	f22 = f23-f22;
+	heapFloat[(fp+-78)] = f22;
+	f13 = f13+f14;
+	heapFloat[(fp+-50)] = f13;
+	f14 = f24-f25;
+	heapFloat[(fp+-52)] = f14;
+	f24 = f24+f25;
+	heapFloat[(fp+-79)] = f24;
+	f16 = f16+f17;
+	heapFloat[(fp+-51)] = f16;
+	f2 = f23-f2;
+	heapFloat[(fp+-53)] = f2;
+	f0 = f0*f4;
+	f6 = f5*f6;
+	f1 = f1*f4;
+	f3 = f5*f3;
+	f4 = f26+f27;
+	f5 = f21*f18;
+	f2 = heapFloat[(r3)];
+	heapFloat[(fp+-40)] = f2;
+	f7 = heapFloat[(r1+73)];
+	f8 = heapFloat[(r1+72)];
+	f2 = heapFloat[(r3+1)];
+	heapFloat[(fp+-41)] = f2;
+	f9 = heapFloat[(r1+77)];
+	f12 = heapFloat[(r1+76)];
+	f13 = heapFloat[(r4+4)];
+	heapFloat[(fp+-59)] = f13;
+	f14 = heapFloat[(r4+5)];
+	heapFloat[(fp+-60)] = f14;
+	f15 = heapFloat[(r3+4)];
+	heapFloat[(fp+-68)] = f15;
+	f16 = heapFloat[(r3+5)];
+	heapFloat[(fp+-69)] = f16;
+	f17 = heapFloat[(r1+74)];
+	f18 = heapFloat[(r1+78)];
+	f19 = f0+f6;
+	heapFloat[(fp+-56)] = f19;
+	f20 = f1-f3;
+	heapFloat[(fp+-58)] = f20;
+	f10 = f10+f11;
+	f2 = heapFloat[(fp+-40)];
+	f11 = f8*f2;
+	f2 = heapFloat[(fp+-41)];
+	f21 = f12*f2;
+	f13 = heapFloat[(fp+-50)];
+	f23 = f22*f13;
+	f16 = heapFloat[(fp+-51)];
+	f25 = f24*f16;
+	f0 = f0-f6;
+	heapFloat[(fp+-61)] = f0;
+	f4 = f4+f5;
+	heapFloat[(fp+-57)] = f4;
+	f1 = f1+f3;
+	heapFloat[(fp+-62)] = f1;
+	f2 = heapFloat[(fp+-40)];
+	f3 = f7*f2;
+	f2 = heapFloat[(fp+-41)];
+	f5 = f9*f2;
+	f14 = heapFloat[(fp+-52)];
+	f6 = f14*f13;
+	f2 = heapFloat[(fp+-53)];
+	f26 = f2*f16;
+	f0 = heapFloat[(r3+2)];
+	heapFloat[(fp+-71)] = f0;
+	f1 = heapFloat[(r1+81)];
+	f2 = heapFloat[(r1+80)];
+	f4 = heapFloat[(r3+8)];
+	heapFloat[(fp+-38)] = f4;
+	f13 = heapFloat[(r3+9)];
+	heapFloat[(fp+-39)] = f13;
+	f14 = heapFloat[(r4+6)];
+	heapFloat[(fp+-37)] = f14;
+	f15 = heapFloat[(r3+6)];
+	heapFloat[(fp+-70)] = f15;
+	f0 = heapFloat[(r1+82)];
+	heapFloat[(fp+-82)] = f0;
+	f4 = heapFloat[(fp+-76)];
+	f10 = f4-f10;
+	heapFloat[(fp+-63)] = f10;
+	f14 = heapFloat[(fp+-66)];
+	f13 = heapFloat[(fp+-59)];
+	f15 = f14*f13;
+	f16 = heapFloat[(fp+-67)];
+	f14 = heapFloat[(fp+-60)];
+	f19 = f16*f14;
+	f20 = heapFloat[(fp+-64)];
+	f22 = f20*f13;
+	f24 = heapFloat[(fp+-65)];
+	f27 = f24*f14;
+	f28 = heapFloat[(fp+-68)];
+	f29 = f8*f28;
+	f16 = heapFloat[(fp+-69)];
+	f30 = f12*f16;
+	f0 = f7*f28;
+	f4 = f9*f16;
+	f11 = f11+f21;
+	heapFloat[(fp+-42)] = f11;
+	f21 = heapFloat[(fp+-71)];
+	f10 = f2*f21;
+	heapFloat[(fp+-43)] = f10;
+	f10 = f23+f25;
+	heapFloat[(fp+-44)] = f10;
+	f13 = heapFloat[(fp+-61)];
+	f11 = heapFloat[(fp+-57)];
+	f14 = f13*f11;
+	f3 = f3+f5;
+	f5 = f1*f21;
+	f6 = f6+f26;
+	f16 = heapFloat[(fp+-62)];
+	f20 = f16*f11;
+	f23 = heapFloat[(fp+-40)];
+	f24 = f17*f23;
+	f25 = heapFloat[(fp+-41)];
+	f26 = f18*f25;
+	f28 = heapFloat[(fp+-56)];
+	f13 = heapFloat[(fp+-50)];
+	f10 = f28*f13;
+	f11 = heapFloat[(fp+-58)];
+	f16 = heapFloat[(fp+-51)];
+	f11 = f11*f16;
+	f13 = heapFloat[(r3+10)];
+	heapFloat[(fp+-72)] = f13;
+	f15 = f15+f19;
+	f13 = heapFloat[(fp+-81)];
+	f19 = heapFloat[(fp+-37)];
+	f13 = f13*f19;
+	f22 = f22+f27;
+	f19 = heapFloat[(fp+-80)];
+	f27 = heapFloat[(fp+-37)];
+	f16 = f19*f27;
+	f19 = heapFloat[(fp+-54)];
+	f21 = heapFloat[(fp+-59)];
+	f19 = f19*f21;
+	f21 = heapFloat[(fp+-55)];
+	f23 = heapFloat[(fp+-60)];
+	f21 = f21*f23;
+	f23 = heapFloat[(fp+-38)];
+	f8 = f8*f23;
+	f23 = heapFloat[(fp+-39)];
+	f12 = f12*f23;
+	f23 = heapFloat[(fp+-38)];
+	f7 = f7*f23;
+	f23 = heapFloat[(fp+-39)];
+	f9 = f9*f23;
+	f29 = f29+f30;
+	f30 = heapFloat[(fp+-70)];
+	f23 = f2*f30;
+	f0 = f0+f4;
+	f4 = f1*f30;
+	f28 = heapFloat[(fp+-68)];
+	f25 = f17*f28;
+	f27 = heapFloat[(fp+-69)];
+	f27 = f18*f27;
+	f28 = heapFloat[(fp+-42)];
+	f30 = heapFloat[(fp+-43)];
+	f28 = f28+f30;
+	f30 = heapFloat[(fp+-44)];
+	f14 = f30+f14;
+	heapFloat[(fp+-73)] = f14;
+	f3 = f3+f5;
+	f5 = f6+f20;
+	heapFloat[(fp+-42)] = f5;
+	f6 = f24+f26;
+	f20 = heapFloat[(fp+-82)];
+	f14 = heapFloat[(fp+-71)];
+	f24 = f20*f14;
+	f10 = f10+f11;
+	f26 = heapFloat[(fp+-63)];
+	f11 = heapFloat[(fp+-57)];
+	f30 = f26*f11;
+	f5 = f15+f13;
+	heapFloat[(fp+-44)] = f5;
+	f5 = f22+f16;
+	heapFloat[(fp+-45)] = f5;
+	f11 = f29+f23;
+	f0 = f0+f4;
+	f4 = f19+f21;
+	f21 = heapFloat[(fp+-77)];
+	f13 = heapFloat[(fp+-37)];
+	f14 = f21*f13;
+	f8 = f8+f12;
+	f13 = heapFloat[(fp+-72)];
+	f2 = f2*f13;
+	f7 = f7+f9;
+	f1 = f1*f13;
+	f23 = heapFloat[(fp+-38)];
+	f9 = f17*f23;
+	f23 = heapFloat[(fp+-39)];
+	f12 = f18*f23;
+	f15 = f25+f27;
+	f16 = heapFloat[(fp+-70)];
+	f17 = f20*f16;
+	f18 = heapFloat[(fp+-73)];
+	f19 = f28*f18;
+	f5 = heapFloat[(fp+-42)];
+	f22 = f3*f5;
+	f6 = f6+f24;
+	f10 = f10+f30;
+	heapFloat[(fp+-43)] = f10;
+	f4 = f4+f14;
+	heapFloat[(fp+-74)] = f4;
+	f14 = heapFloat[(r1+84)];
+	f24 = heapFloat[(r1+85)];
+	f25 = heapFloat[(r1+86)];
+	f4 = heapFloat[(r4+8)];
+	heapFloat[(fp+-46)] = f4;
+	f5 = heapFloat[(r1+100)];
+	heapFloat[(fp+-85)] = f5;
+	f4 = heapFloat[(r4+9)];
+	heapFloat[(fp+-47)] = f4;
+	f5 = heapFloat[(r1+101)];
+	heapFloat[(fp+-86)] = f5;
+	f10 = heapFloat[(r4+10)];
+	heapFloat[(fp+-75)] = f10;
+	f13 = heapFloat[(r1+102)];
+	heapFloat[(fp+-84)] = f13;
+	f2 = f8+f2;
+	f1 = f7+f1;
+	f7 = f15+f17;
+	f8 = heapFloat[(fp+-78)];
+	f5 = heapFloat[(fp+-44)];
+	f15 = f8*f5;
+	f16 = heapFloat[(fp+-79)];
+	f5 = heapFloat[(fp+-45)];
+	f17 = f16*f5;
+	f18 = heapFloat[(fp+-52)];
+	f5 = heapFloat[(fp+-44)];
+	f20 = f18*f5;
+	f21 = heapFloat[(fp+-53)];
+	f5 = heapFloat[(fp+-45)];
+	f23 = f21*f5;
+	f9 = f9+f12;
+	f12 = heapFloat[(fp+-82)];
+	f13 = heapFloat[(fp+-72)];
+	f12 = f12*f13;
+	f18 = heapFloat[(fp+-73)];
+	f26 = f11*f18;
+	f5 = heapFloat[(fp+-42)];
+	f27 = f0*f5;
+	f19 = f19+f22;
+	f10 = heapFloat[(fp+-43)];
+	f22 = f6*f10;
+	f29 = heapFloat[(r3+14)];
+	heapFloat[(fp+-82)] = f29;
+	f30 = heapFloat[(r3+13)];
+	heapFloat[(fp+-87)] = f30;
+	f4 = heapFloat[(r3+12)];
+	heapFloat[(fp+-89)] = f4;
+	f4 = heapFloat[(r4+14)];
+	heapFloat[(fp+-88)] = f4;
+	f4 = heapFloat[(r4+13)];
+	heapFloat[(fp+-90)] = f4;
+	f4 = heapFloat[(r4+12)];
+	heapFloat[(fp+-91)] = f4;
+	r3 = sp + -128;
+	f9 = f9+f12;
+	f12 = heapFloat[(fp+-66)];
+	f4 = heapFloat[(fp+-46)];
+	f12 = f12*f4;
+	f4 = heapFloat[(fp+-67)];
+	f5 = heapFloat[(fp+-47)];
+	f4 = f4*f5;
+	f5 = heapFloat[(fp+-64)];
+	f8 = heapFloat[(fp+-46)];
+	f5 = f5*f8;
+	f8 = heapFloat[(fp+-65)];
+	f10 = heapFloat[(fp+-47)];
+	f8 = f8*f10;
+	f15 = f15+f17;
+	f13 = heapFloat[(fp+-61)];
+	f17 = heapFloat[(fp+-74)];
+	f10 = f13*f17;
+	f20 = f20+f23;
+	f16 = heapFloat[(fp+-62)];
+	f23 = f16*f17;
+	f13 = heapFloat[(fp+-56)];
+	f16 = heapFloat[(fp+-44)];
+	f13 = f13*f16;
+	f16 = heapFloat[(fp+-58)];
+	f17 = heapFloat[(fp+-45)];
+	f16 = f16*f17;
+	f17 = f2*f18;
+	f18 = heapFloat[(fp+-42)];
+	f18 = f1*f18;
+	f26 = f26+f27;
+	f27 = heapFloat[(fp+-43)];
+	f21 = f7*f27;
+	f19 = f19+f22;
+	f10 = f15+f10;
+	f15 = f20+f23;
+	r4 = r3 >> 2;
+	f20 = heapFloat[(fp+-40)];
+	f20 = f20*f14;
+	f22 = heapFloat[(fp+-41)];
+	f22 = f22*f24;
+	f4 = f12+f4;
+	f12 = heapFloat[(fp+-81)];
+	f23 = heapFloat[(fp+-75)];
+	f12 = f12*f23;
+	f5 = f5+f8;
+	f8 = heapFloat[(fp+-80)];
+	f8 = f8*f23;
+	f23 = heapFloat[(fp+-54)];
+	f27 = heapFloat[(fp+-46)];
+	f23 = f23*f27;
+	f27 = heapFloat[(fp+-55)];
+	f29 = heapFloat[(fp+-47)];
+	f27 = f27*f29;
+	f13 = f13+f16;
+	f16 = heapFloat[(fp+-63)];
+	f29 = heapFloat[(fp+-74)];
+	f16 = f16*f29;
+	f17 = f17+f18;
+	f18 = heapFloat[(fp+-43)];
+	f18 = f9*f18;
+	f21 = f26+f21;
+	heapFloat[(fp+-32)] = f19;
+	f4 = f4+f12;
+	f5 = f5+f8;
+	f8 = f13+f16;
+	f12 = f20+f22;
+	f13 = heapFloat[(fp+-71)];
+	f13 = f13*f25;
+	f16 = heapFloat[(fp+-68)];
+	f16 = f16*f14;
+	f19 = heapFloat[(fp+-69)];
+	f19 = f19*f24;
+	f20 = f23+f27;
+	f22 = heapFloat[(fp+-77)];
+	f23 = heapFloat[(fp+-75)];
+	f22 = f22*f23;
+	f26 = f28*f10;
+	f27 = f3*f15;
+	f17 = f17+f18;
+	heapFloat[(r4+1)] = f21;
+	f18 = f20+f22;
+	f12 = f12+f13;
+	heapFloat[(r4+2)] = f17;
+	f13 = f16+f19;
+	f16 = heapFloat[(fp+-70)];
+	f16 = f16*f25;
+	f17 = heapFloat[(fp+-38)];
+	f14 = f17*f14;
+	f17 = heapFloat[(fp+-39)];
+	f17 = f17*f24;
+	f19 = heapFloat[(fp+-78)];
+	f19 = f19*f4;
+	f20 = heapFloat[(fp+-79)];
+	f20 = f20*f5;
+	f21 = heapFloat[(fp+-52)];
+	f21 = f21*f4;
+	f22 = heapFloat[(fp+-53)];
+	f22 = f22*f5;
+	f24 = f11*f10;
+	f23 = f0*f15;
+	f26 = f26+f27;
+	f27 = f6*f8;
+	f29 = heapFloat[(fp+-89)];
+	f12 = f12+f29;
+	f13 = f13+f16;
+	f14 = f14+f17;
+	f16 = heapFloat[(fp+-72)];
+	f16 = f16*f25;
+	f17 = f19+f20;
+	f19 = heapFloat[(fp+-61)];
+	f19 = f19*f18;
+	f20 = f21+f22;
+	f21 = heapFloat[(fp+-62)];
+	f21 = f21*f18;
+	f22 = heapFloat[(fp+-56)];
+	f22 = f22*f4;
+	f25 = heapFloat[(fp+-58)];
+	f25 = f25*f5;
+	f29 = f2*f10;
+	f30 = f1*f15;
+	f23 = f24+f23;
+	f24 = f7*f8;
+	f26 = f26+f27;
+	heap32[(r4+3)] = 0;
+	f12 = -f12;
+	f27 = heapFloat[(fp+-87)];
+	f13 = f13+f27;
+	f17 = f17+f19;
+	f19 = f20+f21;
+	f14 = f14+f16;
+	f16 = f22+f25;
+	f20 = heapFloat[(fp+-63)];
+	f20 = f20*f18;
+	f21 = f29+f30;
+	f22 = f9*f8;
+	f23 = f23+f24;
+	heapFloat[(r4+4)] = f26;
+	f29 = heapFloat[(fp+-82)];
+	f14 = f14+f29;
+	f16 = f16+f20;
+	f20 = f28*f12;
+	f24 = f11*f13;
+	f25 = f3*f12;
+	f26 = f0*f13;
+	f27 = f28*f17;
+	f3 = f3*f19;
+	f21 = f21+f22;
+	heapFloat[(r4+5)] = f23;
+	f22 =                         0;
+	heapFloat[(r4+6)] = f21;
+	f20 = f20-f24;
+	f21 = f2*f14;
+	f23 = f25-f26;
+	f24 = f1*f14;
+	f12 = f6*f12;
+	f13 = f7*f13;
+	f25 = heapFloat[(fp+-48)];
+	f26 = heapFloat[(fp+-85)];
+	f25 = f25*f26;
+	f28 = heapFloat[(fp+-49)];
+	f29 = heapFloat[(fp+-86)];
+	f28 = f28*f29;
+	f11 = f11*f17;
+	f0 = f0*f19;
+	f3 = f27+f3;
+	f6 = f6*f16;
+	f20 = f20-f21;
+	f21 = f23-f24;
+	f23 = heapFloat[(fp+-59)];
+	f23 = f23*f26;
+	f24 = heapFloat[(fp+-60)];
+	f24 = f24*f29;
+	f12 = f12-f13;
+	f13 = f9*f14;
+	f14 = heapFloat[(fp+-50)];
+	f14 = f14*f22;
+	f27 = heapFloat[(fp+-51)];
+	f27 = f27*f22;
+	f25 = f25+f28;
+	f28 = heapFloat[(fp+-83)];
+	f30 = heapFloat[(fp+-84)];
+	f28 = f28*f30;
+	f2 = f2*f17;
+	f1 = f1*f19;
+	f0 = f11+f0;
+	f7 = f7*f16;
+	f3 = f3+f6;
+	heap32[(r4+7)] = 0;
+	f6 = f12-f13;
+	f11 = f25+f28;
+	f12 = heapFloat[(fp+-46)];
+	f12 = f12*f26;
+	f13 = heapFloat[(fp+-47)];
+	f13 = f13*f29;
+	f25 = heapFloat[(fp+-44)];
+	f25 = f25*f22;
+	f26 = heapFloat[(fp+-45)];
+	f26 = f26*f22;
+	f23 = f23+f24;
+	f24 = heapFloat[(fp+-37)];
+	f24 = f24*f30;
+	f28 = heapFloat[(fp+-73)];
+	f28 = f28*f20;
+	f29 = heapFloat[(fp+-42)];
+	f29 = f29*f21;
+	f14 = f14+f27;
+	f27 = heapFloat[(fp+-57)];
+	f27 = f27*f22;
+	f1 = f2+f1;
+	f2 = f9*f16;
+	f0 = f0+f7;
+	heapFloat[(r4+8)] = f3;
+	f3 = f23+f24;
+	f4 = f4*f22;
+	f5 = f5*f22;
+	f7 = f12+f13;
+	f23 = heapFloat[(fp+-75)];
+	f9 = f23*f30;
+	f10 = f10*f20;
+	f12 = f15*f21;
+	f13 = f25+f26;
+	f15 = heapFloat[(fp+-74)];
+	f15 = f15*f22;
+	f23 = f28+f29;
+	f24 = heapFloat[(fp+-43)];
+	f24 = f24*f6;
+	f14 = f14+f27;
+	f25 = heapFloat[(fp+-91)];
+	f11 = f11+f25;
+	f1 = f1+f2;
+	heapFloat[(r4+9)] = f0;
+	f0 = f7+f9;
+	heapFloat[(r4+10)] = f1;
+	f1 = f17*f20;
+	f2 = f19*f21;
+	f4 = f4+f5;
+	f5 = f18*f22;
+	f7 = f10+f12;
+	f8 = f8*f6;
+	f9 = f13+f15;
+	f10 = heapFloat[(fp+-90)];
+	f3 = f3+f10;
+	f10 = f23+f24;
+	f11 = f14+f11;
+	f1 = f1+f2;
+	f2 = f16*f6;
+	f4 = f4+f5;
+	f5 = heapFloat[(fp+-88)];
+	f0 = f0+f5;
+	f5 = f7+f8;
+	f3 = f9+f3;
+	f6 = f10+f11;
+	heap32[(r4+11)] = 0;
+	f1 = f1+f2;
+	f0 = f4+f0;
+	f2 = f5+f3;
+	heapFloat[(r4+12)] = f6;
+	f0 = f1+f0;
+	heapFloat[(r4+13)] = f2;
+	heapFloat[(r4+14)] = f0;
+	heap32[(r4+15)] = 0;
+	r4 = sp + -144;
+	heap32[(g0)] = r3;
+	heap32[(g0+1)] = r4;
+	_ZNK11btMatrix3x311getRotationER12btQuaternion(i7);
+	r3 = r4 >> 2;
+	f0 = heapFloat[(r3+2)];
+	f1 = heapFloat[(r3+1)];
+	f2 = heapFloat[(fp+-36)];
+	heapFloat[(r1+112)] = f2;
+	heapFloat[(r1+113)] = f1;
+	heapFloat[(r1+114)] = f0;
+	heap32[(r1+115)] = 0;
+	f2 = f2*f2;
+	f1 = f1*f1;
+	f1 = f2+f1;
+	f0 = f0*f0;
+	f0 = f1+f0;
+	heapFloat[(g0)] = f0;
+	sqrtf(i7);
+	f4 = heapFloat[(fp+-76)];
+	f0 = f4/f_g0;
+	f1 = heapFloat[(r1+112)];
+	f1 = f1*f0;
+	heapFloat[(r1+112)] = f1;
+	f1 = heapFloat[(r1+113)];
+	f1 = f1*f0;
+	heapFloat[(r1+113)] = f1;
+	f1 = heapFloat[(r1+114)];
+	f0 = f1*f0;
+	heapFloat[(r1+114)] = f0;
+	f0 = heapFloat[(r3+3)];
+	f1 =                        -1;
+	f0 = f0 < f1 ? f1 : f0;
+	f0 = f0 > f4 ? f4 : f0;
+	heapFloat[(g0)] = f0;
+	acosf(i7);
+	f0 = f_g0+f_g0;
+	heapFloat[(r1+123)] = f0;
+	if(f0 <f22) //_LBB587_4
+{
+	f0 = -f0;
+}
+	f1 =   1.1920928955078125e-007;
+	if(f0 <f1) //_LBB587_83
+{
+__label__ = 72;
+}
+else{
+	r1 = 1;
+	heap8[r0+514] = r1;
+	return;
+}
+}
+}
+_8: do {
+if (__label__ == 6){
+	r2 = heap32[(fp+3)];
+	r5 = heap32[(fp+4)];
+	r6 = sp + -64;
+	r7 = (r0 + 288)|0;
+	heap32[(g0)] = r7;
+	heap32[(g0+1)] = r6;
+	_ZNK11btMatrix3x311getRotationER12btQuaternion(i7);
+	r7 = sp + -48;
+	heap32[(g0)] = r3;
+	heap32[(g0+1)] = r7;
+	_ZNK11btMatrix3x311getRotationER12btQuaternion(i7);
+	r7 = r7 >> 2;
+	r6 = r6 >> 2;
+	f0 = heapFloat[(r7+3)];
+	f1 = heapFloat[(r6+3)];
+	f2 = heapFloat[(fp+-12)];
+	f3 = heapFloat[(fp+-16)];
+	f4 = heapFloat[(r7+1)];
+	f5 = heapFloat[(r6+1)];
+	f6 = heapFloat[(r7+2)];
+	f7 = heapFloat[(r6+2)];
+	r6 = sp + -32;
+	r7 = (r0 + 352)|0;
+	heap32[(g0)] = r7;
+	heap32[(g0+1)] = r6;
+	_ZNK11btMatrix3x311getRotationER12btQuaternion(i7);
+	r7 = sp + -16;
+	heap32[(g0)] = r4;
+	heap32[(g0+1)] = r7;
+	_ZNK11btMatrix3x311getRotationER12btQuaternion(i7);
+	r6 = r6 >> 2;
+	r7 = r7 >> 2;
+	f8 = heapFloat[(r7+3)];
+	f9 = heapFloat[(r6+3)];
+	f10 = heapFloat[(fp+-4)];
+	f11 = heapFloat[(r6+1)];
+	f12 = heapFloat[(r7+1)];
+	f13 = heapFloat[(fp+-8)];
+	f14 = heapFloat[(r6+2)];
+	f15 = heapFloat[(r7+2)];
+	f16 = f8*f9;
+	f17 = f10*f13;
+	f18 = f0*f3;
+	f19 = f2*f1;
+	f20 = f0*f1;
+	f21 = f2*f3;
+	f22 = f8*f13;
+	f23 = f10*f9;
+	f24 = f8*f11;
+	f25 = f12*f9;
+	f26 = f0*f5;
+	f27 = f4*f1;
+	f16 = f16-f17;
+	f17 = f12*f11;
+	f18 = f18+f19;
+	f19 = f4*f7;
+	f20 = f20-f21;
+	f21 = f4*f5;
+	f22 = f22+f23;
+	f23 = f12*f14;
+	f0 = f0*f7;
+	f1 = f6*f1;
+	f24 = f24+f25;
+	f25 = f15*f13;
+	f26 = f26+f27;
+	f27 = f6*f3;
+	f8 = f8*f14;
+	f9 = f15*f9;
+	f16 = f16-f17;
+	f17 = f15*f14;
+	f18 = f18+f19;
+	f19 = f6*f5;
+	f20 = f20-f21;
+	f6 = f6*f7;
+	f21 = f22+f23;
+	f15 = f15*f11;
+	f0 = f0+f1;
+	f1 = f2*f5;
+	f5 = f24+f25;
+	f14 = f10*f14;
+	f22 = f26+f27;
+	f2 = f2*f7;
+	f7 = f8+f9;
+	f8 = f10*f11;
+	f9 = f21-f15;
+	heapFloat[(fp+-46)] = f9;
+	f10 = f18-f19;
+	heapFloat[(fp+-49)] = f10;
+	f5 = f5-f14;
+	heapFloat[(fp+-45)] = f5;
+	f6 = f20-f6;
+	heapFloat[(fp+-52)] = f6;
+	f11 = f16-f17;
+	heapFloat[(fp+-48)] = f11;
+	f2 = f22-f2;
+	heapFloat[(fp+-50)] = f2;
+	f0 = f0+f1;
+	f1 = f4*f3;
+	f3 = f7+f8;
+	f4 = f12*f13;
+	f3 = f3-f4;
+	heapFloat[(fp+-47)] = f3;
+	f0 = f0-f1;
+	heapFloat[(fp+-51)] = f0;
+	f1 = f11*f2;
+	f4 = f6*f5;
+	f7 = f11*f6;
+	f8 = f10*f9;
+	f12 = f11*f10;
+	f13 = f6*f9;
+	f1 = f1-f4;
+	f4 = f10*f3;
+	f7 = f7+f8;
+	f8 = f2*f5;
+	f11 = f11*f0;
+	f6 = f6*f3;
+	f12 = f12-f13;
+	f13 = f0*f5;
+	f1 = f1-f4;
+	f4 = f0*f9;
+	f7 = f7+f8;
+	f0 = f0*f3;
+	f6 = f11-f6;
+	f8 = f2*f9;
+	f11 = f12-f13;
+	f2 = f2*f3;
+	f2 = f11+f2;
+	f1 = f1+f4;
+	f4 =                         0;
+	f0 = f7+f0;
+	f6 = f6-f8;
+	f7 = f10*f5;
+	f6 = f6+f7;
+	f7 = f1*f4;
+	f8 = -f2;
+	f10 = f0*f4;
+	f11 = f2*f4;
+	f12 = f10+f6;
+	f8 = f8-f7;
+	f13 = f6*f4;
+	f7 = f0+f7;
+	f8 = f8-f13;
+	f7 = f7-f13;
+	f12 = f12-f11;
+	f10 = f10+f11;
+	f10 = f10-f1;
+	f11 = f7*f0;
+	f13 = f8*f2;
+	f14 = f12*f0;
+	f15 = f8*f1;
+	f11 = f11-f13;
+	f13 = f12*f6;
+	f14 = f14-f15;
+	f15 = f10*f2;
+	f16 = f10*f0;
+	f8 = f8*f6;
+	f11 = f11-f13;
+	f10 = f10*f1;
+	f13 = f14-f15;
+	f14 = f7*f6;
+	f8 = f16-f8;
+	f7 = f7*f1;
+	f10 = f11+f10;
+	f11 = f13+f14;
+	f7 = f8-f7;
+	f8 = f12*f2;
+	f7 = f7+f8;
+	f8 = f10*f10;
+	f12 = f11*f11;
+	f8 = f8+f12;
+	f12 = f7*f7;
+	f8 = f8+f12;
+	heapFloat[(g0)] = f8;
+	f8 =                         1;
+	sqrtf(i7);
+	f12 = f8/f_g0;
+	f11 = f11*f12;
+	f7 = f7*f12;
+	f10 = f10*f12;
+	f12 = f11*f4;
+	f13 = f7*f4;
+	f14 = f10+f12;
+	f14 = f14+f13;
+	f3 = -f3;
+	heapFloat[(fp+-43)] = f3;
+	f3 = -f5;
+	heapFloat[(fp+-44)] = f3;
+	f3 = -f9;
+	heapFloat[(fp+-42)] = f3;
+	f3 =      -0.99999988079071045;
+	if(f14 >=f3) //_LBB587_9
+{
+	f3 = f14+f8;
+	f3 = f3+f3;
+	heapFloat[(g0)] = f3;
+	sqrtf(i7);
+	f10 = f10*f4;
+	f5 =                       0.5;
+	f11 = f11-f10;
+	f9 = f8/f_g0;
+	f7 = f10-f7;
+	f13 = f13-f12;
+	f12 = f_g0*f5;
+	f11 = f11*f9;
+	f10 = f7*f9;
+	f7 = f13*f9;
+}
+else{
+	f7 =                        -0;
+	f10 =                         1;
+	f11 =                         0;
+	f12 = f11;
+}
+	f3 = f7*f7;
+	f5 = f10*f10;
+	f3 = f3+f5;
+	f5 = f11*f11;
+	f3 = f3+f5;
+	f5 = f12*f12;
+	f3 = f3+f5;
+	heapFloat[(g0)] = f3;
+	sqrtf(i7);
+	f3 = f_g0;
+	if(f3 !=f4) //_LBB587_12
+{
+	f3 = f8/f3;
+	f5 = f12*f3;
+	f7 = f7*f3;
+	f9 = f10*f3;
+	f3 = f11*f3;
+	f10 = f5*f1;
+	f11 = f0*f9;
+	f12 = f5*f2;
+	f13 = f0*f7;
+	f14 = f5*f6;
+	f15 = f0*f3;
+	f10 = f10-f11;
+	f11 = f2*f3;
+	f12 = f12-f13;
+	f13 = f6*f9;
+	f0 = f5*f0;
+	f16 = f2*f7;
+	f14 = f14-f15;
+	f15 = f1*f7;
+	f10 = f10-f11;
+	f11 = f6*f7;
+	f12 = f12-f13;
+	f13 = f1*f3;
+	f10 = f10+f11;
+	f11 = f12+f13;
+	f0 = f0+f16;
+	f1 = f1*f9;
+	f12 = f14-f15;
+	f2 = f2*f9;
+	f2 = f12+f2;
+	f12 = f11*f11;
+	f13 = f10*f10;
+	f0 = f0+f1;
+	f1 = f6*f3;
+	f0 = f0+f1;
+	f1 = f12+f13;
+	f6 = f2*f2;
+	f1 = f1+f6;
+	f6 = f0*f0;
+	f1 = f1+f6;
+	heapFloat[(g0)] = f1;
+	sqrtf(i7);
+	f1 = f_g0;
+	if(f1 !=f4) //_LBB587_14
+{
+	f1 = f8/f1;
+	f6 = heapFloat[(r1+108)];
+	heapFloat[(fp+-40)] = f6;
+	f12 = heapFloat[(r1+111)];
+	f11 = f11*f1;
+	heapFloat[(fp+-37)] = f11;
+	f10 = f10*f1;
+	heapFloat[(fp+-38)] = f10;
+	f2 = f2*f1;
+	heapFloat[(fp+-39)] = f2;
+	f0 = f0*f1;
+	heapFloat[(fp+-41)] = f0;
+	if(f6 <f12) //_LBB587_33
+{
+__label__ = 27;
+}
+else{
+	f0 = heapFloat[(r1+109)];
+	if(f0 <f12) //_LBB587_33
+{
+__label__ = 27;
+}
+else{
+	f12 =                        -1;
+	f12 = f5 < f12 ? f12 : f5;
+	f12 = f12 > f8 ? f8 : f12;
+	heapFloat[(g0)] = f12;
+	acosf(i7);
+	f12 = f_g0+f_g0;
+	f0 =   1.1920928955078125e-007;
+	if(f12 >f0) //_LBB587_18
+{
+	f4 = f7*f7;
+	f0 = f9*f9;
+	f4 = f4+f0;
+	f0 = f3*f3;
+	f4 = f4+f0;
+	heapFloat[(g0)] = f4;
+	f4 =                         1;
+	sqrtf(i7);
+	f0 = f4/f_g0;
+	f1 = f9*f0;
+	f2 = f7*f0;
+	f0 = f3*f0;
+	f3 = f1; //fstod f1, f3
+	f3 = Math.abs(f3);
+	f5 =   1.1920928955078125e-007;
+	if(f3 >f5) //_LBB587_20
+{
+	f3 = heapFloat[(r1+109)];
+	f5 = heapFloat[(r1+108)];
+	f6 = f0*f0;
+	f7 = f1*f1;
+	f6 = f6/f7;
+	f5 = f5*f5;
+	f3 = f3*f3;
+	f5 = f6/f5;
+	f3 = f4/f3;
+	f4 = f6+f4;
+	f3 = f5+f3;
+	f4 = f4/f3;
+	heapFloat[(g0)] = f4;
+	sqrtf(i7);
+	f4 = f_g0;
+}
+else{
+	f4 = heapFloat[(r1+108)];
+}
+}
+	f3 = heapFloat[(r1+104)];
+	f5 = f3*f4;
+	if(f5 >=f12) //_LBB587_67
+{
+__label__ = 58;
+}
+else{
+	r3 = 1;
+	heap8[r0+514] = r3;
+if(!(f12 >=f4)) //_LBB587_24
+{
+	f6 =       0.99999988079071045;
+	if(f3 <f6) //_LBB587_25
+{
+	f8 = f12-f5;
+	f3 = f4-f5;
+	f8 = f8/f3;
+}
+}
+	f12 = f12-f5;
+	heapFloat[(r1+129)] = f8;
+	f3 = f1; //fstod f1, f3
+	heapFloat[(r1+123)] = f12;
+	f12 = Math.abs(f3);
+	f3 =   1.1920928955078125e-007;
+	if(f12 >f3) //_LBB587_28
+{
+	f0 = -f0;
+	f12 = heapFloat[(r1+109)];
+	f3 = heapFloat[(r1+108)];
+	f12 = f12/f3;
+	f3 = f0/f1;
+	f12 = f12*f3;
+	f12 = f12*f1;
+	f12 = f12; //fstod f12, f12
+	f12 = Math.abs(f12);
+	f12 = f12; //fdtos f12, f12
+	f3 =                         0;
+	if(f0 <=f3) //_LBB587_30
+{
+	f12 = -f12;
+}
+	f0 = f2*f2;
+	f3 = f1*f1;
+	f0 = f0+f3;
+	f3 = f12*f12;
+	f0 = f0+f3;
+	heapFloat[(g0)] = f0;
+	f0 =                         1;
+	sqrtf(i7);
+	f0 = f0/f_g0;
+	f12 = -f12;
+	f2 = f2*f0;
+	f1 = f1*f0;
+	f0 = f0*f12;
+}
+	f12 = -f2;
+	f3 = -f1;
+	f4 = heapFloat[(fp+-46)];
+	f5 = f2*f4;
+	f6 = heapFloat[(fp+-45)];
+	f7 = f6*f1;
+	f8 = heapFloat[(fp+-48)];
+	f12 = f8*f12;
+	f9 = f6*f0;
+	f10 = -f0;
+	f5 = f5+f7;
+	f7 = heapFloat[(fp+-47)];
+	f11 = f7*f0;
+	f12 = f12-f9;
+	f9 = f7*f1;
+	f3 = f8*f3;
+	f7 = f7*f2;
+	f12 = f12+f9;
+	f5 = f5+f11;
+	f3 = f3-f7;
+	f0 = f4*f0;
+	f7 = f8*f10;
+	f1 = f4*f1;
+	f0 = f3+f0;
+	f3 = heapFloat[(fp+-42)];
+	f4 = f5*f3;
+	f9 = f12*f8;
+	f1 = f7-f1;
+	f2 = f6*f2;
+	f1 = f1+f2;
+	f2 = heapFloat[(fp+-44)];
+	f6 = f5*f2;
+	f7 = f0*f8;
+	f4 = f4+f9;
+	f9 = heapFloat[(fp+-43)];
+	f10 = f0*f9;
+	f5 = f5*f9;
+	f8 = f1*f8;
+	f6 = f6+f7;
+	f7 = f1*f3;
+	f4 = f4+f10;
+	f1 = f1*f2;
+	f1 = f4-f1;
+	f4 = f5+f8;
+	f2 = f12*f2;
+	f5 = f6+f7;
+	f12 = f12*f9;
+	f2 = f4+f2;
+	f0 = f0*f3;
+	f12 = f5-f12;
+	heapFloat[(r1+112)] = f1;
+	f0 = f2-f0;
+	heapFloat[(r1+113)] = f12;
+	heapFloat[(r1+114)] = f0;
+	heap32[(r1+115)] = 0;
+	heap32[(r1+131)] = 0;
+	heap32[(r1+132)] = 0;
+	heap32[(r1+133)] = 0;
+	r3 = r2 >> 2;
+	heap32[(r1+134)] = 0;
+	r4 = r5 >> 2;
+	f2 = heapFloat[(r3+1)];
+	f3 = heapFloat[(r3+5)];
+	f4 = heapFloat[(r3)];
+	f5 = heapFloat[(r3+4)];
+	f6 = heapFloat[(r4+1)];
+	f7 = heapFloat[(r4+5)];
+	f8 = heapFloat[(r4)];
+	f9 = heapFloat[(r4+4)];
+	f10 = heapFloat[(r3+2)];
+	f11 = heapFloat[(r3+6)];
+	f13 = heapFloat[(r3+9)];
+	f14 = heapFloat[(r3+8)];
+	f15 = heapFloat[(r4+2)];
+	f16 = heapFloat[(r4+6)];
+	f17 = heapFloat[(r4+9)];
+	f18 = heapFloat[(r4+8)];
+	f4 = f4*f1;
+	f5 = f5*f12;
+	f2 = f2*f1;
+	f3 = f3*f12;
+	f8 = f8*f1;
+	f9 = f9*f12;
+	f6 = f6*f1;
+	f7 = f7*f12;
+	f19 = heapFloat[(r3+10)];
+	f20 = heapFloat[(r4+10)];
+	f4 = f4+f5;
+	f5 = f14*f0;
+	f2 = f2+f3;
+	f3 = f13*f0;
+	f10 = f10*f1;
+	f11 = f11*f12;
+	f8 = f8+f9;
+	f9 = f18*f0;
+	f6 = f6+f7;
+	f7 = f17*f0;
+	f13 = f15*f1;
+	f14 = f16*f12;
+	f4 = f4+f5;
+	f2 = f2+f3;
+	f3 = f8+f9;
+	f5 = f6+f7;
+	f6 = f10+f11;
+	f7 = f19*f0;
+	f8 = f13+f14;
+	f9 = f20*f0;
+	f6 = f6+f7;
+	f7 = f8+f9;
+	f4 = f1*f4;
+	f2 = f12*f2;
+	f1 = f1*f3;
+	f12 = f12*f5;
+	f2 = f4+f2;
+	f3 = f0*f6;
+	f12 = f1+f12;
+	f0 = f0*f7;
+	f1 = f2+f3;
+	f12 = f12+f0;
+	f0 =                         1;
+	f12 = f1+f12;
+	f12 = f0/f12;
+	heapFloat[(r1+120)] = f12;
+__label__ = 58;
+}
+}
+}
+_37: do {
+if (__label__ == 27){
+	r4 = r4 >> 2;
+	r3 = r3 >> 2;
+	f0 = heapFloat[(r1+72)];
+	f1 = heapFloat[(r3)];
+	f2 = heapFloat[(r1+73)];
+	f3 = heapFloat[(r3+4)];
+	f4 = heapFloat[(r1+74)];
+	f5 = heapFloat[(r1+76)];
+	f6 = heapFloat[(r3+1)];
+	f7 = heapFloat[(r1+77)];
+	f8 = heapFloat[(r3+5)];
+	f9 = heapFloat[(r1+78)];
+	f10 = heapFloat[(r4)];
+	f11 = heapFloat[(r1+88)];
+	f13 = heapFloat[(r4+4)];
+	heapFloat[(fp+-55)] = f13;
+	f14 = heapFloat[(r4+1)];
+	f15 = heapFloat[(r1+92)];
+	f13 = heapFloat[(r4+5)];
+	heapFloat[(fp+-56)] = f13;
+	f16 = heapFloat[(r3+8)];
+	f17 = heapFloat[(r3+9)];
+	f18 = heapFloat[(r4+8)];
+	heapFloat[(fp+-53)] = f18;
+	f19 = heapFloat[(r4+9)];
+	heapFloat[(fp+-54)] = f19;
+	f13 = f1*f0;
+	heapFloat[(fp+-57)] = f13;
+	f13 = f6*f5;
+	heapFloat[(fp+-61)] = f13;
+	f18 = f3*f0;
+	heapFloat[(fp+-59)] = f18;
+	f13 = f8*f5;
+	heapFloat[(fp+-62)] = f13;
+	f18 = heapFloat[(r1+80)];
+	f19 = heapFloat[(r3+2)];
+	f20 = heapFloat[(r1+81)];
+	f21 = heapFloat[(r3+6)];
+	f22 = heapFloat[(r1+82)];
+	f23 = f1*f2;
+	f24 = f6*f7;
+	f25 = f3*f2;
+	f26 = f8*f7;
+	f10 = f10*f11;
+	heapFloat[(fp+-60)] = f10;
+	f10 = f14*f15;
+	heapFloat[(fp+-63)] = f10;
+	f10 = heapFloat[(r4+2)];
+	heapFloat[(fp+-64)] = f10;
+	f13 = heapFloat[(r1+96)];
+	f14 = heapFloat[(r4+6)];
+	heapFloat[(fp+-58)] = f14;
+	f1 = f1*f4;
+	f6 = f6*f9;
+	f27 = heapFloat[(fp+-55)];
+	f27 = f27*f11;
+	f28 = heapFloat[(fp+-56)];
+	f28 = f28*f15;
+	f3 = f3*f4;
+	f8 = f8*f9;
+	f29 = heapFloat[(r3+10)];
+	f30 = heapFloat[(r4+10)];
+	heapFloat[(fp+-55)] = f30;
+	f10 = heapFloat[(fp+-57)];
+	f14 = heapFloat[(fp+-61)];
+	f10 = f10+f14;
+	heapFloat[(fp+-56)] = f10;
+	f14 = f19*f18;
+	f10 = heapFloat[(fp+-59)];
+	f30 = heapFloat[(fp+-62)];
+	f10 = f10+f30;
+	f30 = f21*f18;
+	f0 = f16*f0;
+	heapFloat[(fp+-57)] = f0;
+	f0 = f17*f5;
+	heapFloat[(fp+-59)] = f0;
+	f5 = f23+f24;
+	f23 = f19*f20;
+	f24 = f25+f26;
+	f25 = f21*f20;
+	f2 = f16*f2;
+	f7 = f17*f7;
+	f26 = heapFloat[(fp+-60)];
+	f0 = heapFloat[(fp+-63)];
+	f0 = f26+f0;
+	f26 = heapFloat[(fp+-64)];
+	f26 = f26*f13;
+	f1 = f1+f6;
+	f6 = f19*f22;
+	f19 = f27+f28;
+	f27 = heapFloat[(fp+-58)];
+	f27 = f27*f13;
+	f3 = f3+f8;
+	f8 = f21*f22;
+	f21 = heapFloat[(fp+-53)];
+	f11 = f21*f11;
+	f21 = heapFloat[(fp+-54)];
+	f15 = f21*f15;
+	f4 = f16*f4;
+	f9 = f17*f9;
+	f16 = heapFloat[(fp+-56)];
+	f14 = f16+f14;
+	f0 = f0+f26;
+	f5 = f5+f23;
+	f1 = f1+f6;
+	f6 = f10+f30;
+	f10 = f19+f27;
+	f16 = f24+f25;
+	f3 = f3+f8;
+	f8 = heapFloat[(fp+-57)];
+	f17 = heapFloat[(fp+-59)];
+	f8 = f8+f17;
+	f17 = f29*f18;
+	f2 = f2+f7;
+	f7 = f29*f20;
+	f11 = f11+f15;
+	f30 = heapFloat[(fp+-55)];
+	f13 = f30*f13;
+	f4 = f4+f9;
+	f9 = f29*f22;
+	f8 = f8+f17;
+	f11 = f11+f13;
+	f2 = f2+f7;
+	f4 = f4+f9;
+	f7 = f0*f5;
+	f9 = f10*f16;
+	f13 = f0*f1;
+	f15 = f10*f3;
+	f7 = f7+f9;
+	f9 = f11*f2;
+	f13 = f13+f15;
+	f15 = f11*f4;
+	f7 = f7+f9;
+	f9 = f13+f15;
+	f13 = heapFloat[(fp+-40)];
+if(!(f13 >=f12)) //_LBB587_44
+{
+	f13 = heapFloat[(r1+109)];
+if(!(f13 >=f12)) //_LBB587_44
+{
+	f1 =                         0;
+	if(f7 <f1) //_LBB587_37
+{
+	f7 = -f7;
+}
+	f2 =   1.1920928955078125e-007;
+if(!(f7 >=f2)) //_LBB587_43
+{
+	if(f9 <f1) //_LBB587_41
+{
+	f9 = -f9;
+}
+	if(f9 <f2) //_LBB587_67
+{
+break _37;
+}
+}
+	f1 = f10*f8;
+	f2 = f11*f6;
+	f1 = f1-f2;
+	r3 = 1;
+	f2 = f11*f14;
+	f3 = f0*f8;
+	f2 = f2-f3;
+	f0 = f0*f6;
+	f3 = f10*f14;
+	f1 = -f1;
+	heap8[r0+514] = r3;
+	f0 = f0-f3;
+	f2 = -f2;
+	heapFloat[(r1+112)] = f1;
+	f0 = -f0;
+	heapFloat[(r1+113)] = f2;
+	heapFloat[(r1+114)] = f0;
+	heap32[(r1+115)] = 0;
+break _37;
+}
+}
+	f13 = f0*f14;
+	f15 = f10*f6;
+	f13 = f13+f15;
+	f15 = f11*f8;
+	f13 = f13+f15;
+	f15 = heapFloat[(fp+-40)];
+_52: do {
+	if(f15 >=f12) //_LBB587_56
+{
+	f15 =                         0;
+	if(f9 <f15) //_LBB587_58
+{
+	f17 = -f9;
+}
+else{
+	f17 = f9;
+}
+	f18 =   1.1920928955078125e-007;
+	if(f17 <f18) //_LBB587_49
+{
+break _52;
+}
+else{
+	r3 = 1;
+	heap8[r0+514] = r3;
+	f17 = heapFloat[(fp+-40)];
+	if(f17 <f12) //_LBB587_49
+{
+break _52;
+}
+else{
+	heapFloat[(g0)] = f7;
+	heapFloat[(g0+1)] = f13;
+	atan2f(i7);
+	f9 = f_g0;
+	f12 = heapFloat[(r1+108)];
+	if(f12 >=f9) //_LBB587_63
+{
+	f17 = -f12;
+	if(f9 <f17) //_LBB587_65
+{
+	heapFloat[(g0)] = f12;
+	cosf(i7);
+	f13 = f_g0;
+	f7 = heapFloat[(r1+108)];
+	heapFloat[(g0)] = f7;
+	sinf(i7);
+	f7 = -f_g0;
+	f9 =                         0;
+}
+else{
+	f9 = f15;
+}
+}
+else{
+	heapFloat[(g0)] = f12;
+	cosf(i7);
+	f13 = f_g0;
+	f9 = heapFloat[(r1+108)];
+	heapFloat[(g0)] = f9;
+	f9 =                         0;
+	sinf(i7);
+	f7 = f_g0;
+}
+}
+}
+}
+else{
+	f15 =                         0;
+	if(f7 <f15) //_LBB587_47
+{
+	f17 = -f7;
+}
+else{
+	f17 = f7;
+}
+	f18 =   1.1920928955078125e-007;
+	if(f17 >=f18) //_LBB587_50
+{
+	r3 = 1;
+	heap8[r0+514] = r3;
+	f17 = heapFloat[(r1+109)];
+if(!(f17 <f12)) //_LBB587_49
+{
+	heapFloat[(g0)] = f9;
+	heapFloat[(g0+1)] = f13;
+	atan2f(i7);
+	f7 = f_g0;
+	f12 = heapFloat[(r1+109)];
+	if(f12 >=f7) //_LBB587_53
+{
+	f17 = -f12;
+	if(f7 <f17) //_LBB587_55
+{
+	heapFloat[(g0)] = f12;
+	cosf(i7);
+	f13 = f_g0;
+	f7 = heapFloat[(r1+109)];
+	heapFloat[(g0)] = f7;
+	sinf(i7);
+	f9 = -f_g0;
+	f7 =                         0;
+}
+else{
+	f7 = f15;
+}
+}
+else{
+	heapFloat[(g0)] = f12;
+	cosf(i7);
+	f13 = f_g0;
+	f7 = heapFloat[(r1+109)];
+	heapFloat[(g0)] = f7;
+	f7 =                         0;
+	sinf(i7);
+	f9 = f_g0;
+}
+}
+}
+}
+} while(0);
+	f12 = f14*f13;
+	f5 = f5*f7;
+	f6 = f6*f13;
+	f14 = f16*f7;
+	f5 = f12+f5;
+	f1 = f1*f9;
+	f6 = f6+f14;
+	f3 = f3*f9;
+	f8 = f8*f13;
+	f2 = f2*f7;
+	f1 = f5+f1;
+	f3 = f6+f3;
+	f2 = f8+f2;
+	f4 = f4*f9;
+	f2 = f2+f4;
+	f4 = f1*f1;
+	f5 = f3*f3;
+	f4 = f4+f5;
+	f5 = f2*f2;
+	f4 = f4+f5;
+	heapFloat[(g0)] = f4;
+	f4 =                         1;
+	sqrtf(i7);
+	f5 = f4/f_g0;
+	f2 = f2*f5;
+	f3 = f3*f5;
+	f1 = f1*f5;
+	f5 = f10*f2;
+	f6 = f11*f3;
+	f5 = f5-f6;
+	f6 = f11*f1;
+	f2 = f0*f2;
+	f2 = f6-f2;
+	f6 = -f5;
+	f0 = f0*f3;
+	f1 = f10*f1;
+	f0 = f0-f1;
+	f1 = -f2;
+	heapFloat[(r1+112)] = f6;
+	f3 = -f0;
+	heapFloat[(r1+113)] = f1;
+	heapFloat[(r1+114)] = f3;
+	heap32[(r1+115)] = 0;
+	f1 = f5*f5;
+	f2 = f2*f2;
+	f1 = f1+f2;
+	f0 = f0*f0;
+	f0 = f1+f0;
+	heapFloat[(g0)] = f0;
+	sqrtf(i7);
+	heapFloat[(r1+123)] = f_g0;
+	f0 = heapFloat[(r1+112)];
+	f1 = heapFloat[(r1+113)];
+	f2 = heapFloat[(r1+114)];
+	f0 = f0*f0;
+	f1 = f1*f1;
+	f0 = f0+f1;
+	f1 = f2*f2;
+	f0 = f0+f1;
+	heapFloat[(g0)] = f0;
+	sqrtf(i7);
+	f0 = f4/f_g0;
+	f1 = heapFloat[(r1+112)];
+	f1 = f1*f0;
+	heapFloat[(r1+112)] = f1;
+	f1 = heapFloat[(r1+113)];
+	f1 = f1*f0;
+	heapFloat[(r1+113)] = f1;
+	f1 = heapFloat[(r1+114)];
+	f0 = f1*f0;
+	heapFloat[(r1+114)] = f0;
+}
+} while(0);
+	f0 = heapFloat[(r1+110)];
+	f1 =                         0;
+	if(f0 <f1) //_LBB587_82
+{
+	heap32[(r1+125)] = 0;
+break _8;
+}
+else{
+	f0 =                        -1;
+	f1 = heapFloat[(fp+-41)];
+	f1 = f1 < f0 ? f0 : f1;
+	f2 =                         1;
+	f1 = f1 > f2 ? f2 : f1;
+	heapFloat[(g0)] = f1;
+	acosf(i7);
+	f1 = f_g0+f_g0;
+	heapFloat[(r1+125)] = f1;
+	f3 =        3.1415927410125732;
+	if(f1 >f3) //_LBB587_70
+{
+	f1 = heapFloat[(fp+-41)];
+	f1 = -f1;
+	f1 = f1 < f0 ? f0 : f1;
+	f0 =                         1;
+	f1 = f1 > f0 ? f0 : f1;
+	heapFloat[(g0)] = f1;
+	acosf(i7);
+	f0 = heapFloat[(fp+-39)];
+	f0 = -f0;
+	heapFloat[(fp+-39)] = f0;
+	f0 = heapFloat[(fp+-38)];
+	f0 = -f0;
+	heapFloat[(fp+-38)] = f0;
+	f0 = heapFloat[(fp+-37)];
+	f0 = -f0;
+	heapFloat[(fp+-37)] = f0;
+	f1 = f_g0+f_g0;
+	heapFloat[(r1+125)] = f1;
+}
+	f0 =   1.1920928955078125e-007;
+	if(f1 >f0) //_LBB587_73
+{
+	f1 = heapFloat[(fp+-37)];
+	f0 = f1*f1;
+	f3 = heapFloat[(fp+-38)];
+	f4 = f3*f3;
+	f0 = f0+f4;
+	f4 = heapFloat[(fp+-39)];
+	f5 = f4*f4;
+	f0 = f0+f5;
+	heapFloat[(g0)] = f0;
+	f0 =                         1;
+	sqrtf(i7);
+	f0 = f0/f_g0;
+	f1 = f1*f0;
+	heapFloat[(fp+-37)] = f1;
+	f3 = f3*f0;
+	heapFloat[(fp+-38)] = f3;
+	f4 = f4*f0;
+	heapFloat[(fp+-39)] = f4;
+	f1 = heapFloat[(r1+125)];
+}
+	f0 = heapFloat[(r1+110)];
+	f3 = heapFloat[(r1+104)];
+	f4 = f0*f3;
+if(!(f1 <=f4)) //_LBB587_80
+{
+	r3 = 1;
+	heap8[r0+513] = r3;
+	if(f1 >=f0) //_LBB587_77
+{
+__label__ = 66;
+}
+else{
+	f5 =       0.99999988079071045;
+	if(f3 <f5) //_LBB587_78
+{
+	f3 = f1-f4;
+	f0 = f0-f4;
+	f0 = f3/f0;
+__label__ = 68;
+}
+else{
+__label__ = 66;
+}
+}
+if (__label__ == 66){
+	f0 = f2;
+}
+	f3 = heapFloat[(fp+-37)];
+	f5 = -f3;
+	f6 = heapFloat[(fp+-38)];
+	f7 = -f6;
+	f8 = heapFloat[(fp+-46)];
+	f9 = f3*f8;
+	f10 = heapFloat[(fp+-45)];
+	f11 = f10*f6;
+	f12 = heapFloat[(fp+-48)];
+	f5 = f12*f5;
+	f13 = heapFloat[(fp+-39)];
+	f14 = f10*f13;
+	f15 = -f13;
+	f9 = f9+f11;
+	f11 = heapFloat[(fp+-47)];
+	f16 = f11*f13;
+	f5 = f5-f14;
+	f14 = f11*f6;
+	f7 = f12*f7;
+	f11 = f11*f3;
+	f5 = f5+f14;
+	f9 = f9+f16;
+	f7 = f7-f11;
+	f11 = f8*f13;
+	f13 = f12*f15;
+	f6 = f8*f6;
+	f7 = f7+f11;
+	f8 = heapFloat[(fp+-42)];
+	f11 = f9*f8;
+	f14 = f5*f12;
+	f6 = f13-f6;
+	f3 = f10*f3;
+	f3 = f6+f3;
+	f6 = heapFloat[(fp+-44)];
+	f10 = f9*f6;
+	f13 = f7*f12;
+	f11 = f11+f14;
+	f14 = heapFloat[(fp+-43)];
+	f15 = f7*f14;
+	f9 = f9*f14;
+	f12 = f3*f12;
+	f10 = f10+f13;
+	f13 = f3*f8;
+	f11 = f11+f15;
+	f3 = f3*f6;
+	f1 = f1-f4;
+	heapFloat[(r1+130)] = f0;
+	f0 = f9+f12;
+	f4 = f5*f6;
+	f6 = f10+f13;
+	f5 = f5*f14;
+	f3 = f11-f3;
+	heapFloat[(r1+124)] = f1;
+	f0 = f0+f4;
+	f1 = f7*f8;
+	f4 = f6-f5;
+	heapFloat[(r1+116)] = f3;
+	f0 = f0-f1;
+	heapFloat[(r1+117)] = f4;
+	heapFloat[(r1+118)] = f0;
+	r2 = r2 >> 2;
+	heap32[(r1+119)] = 0;
+	r3 = r5 >> 2;
+	f1 = heapFloat[(r2+1)];
+	f5 = heapFloat[(r2+5)];
+	f6 = heapFloat[(r2)];
+	f7 = heapFloat[(r2+4)];
+	f8 = heapFloat[(r3+1)];
+	f9 = heapFloat[(r3+5)];
+	f10 = heapFloat[(r3)];
+	f11 = heapFloat[(r3+4)];
+	f12 = heapFloat[(r2+2)];
+	f13 = heapFloat[(r2+6)];
+	f14 = heapFloat[(r2+9)];
+	f15 = heapFloat[(r2+8)];
+	f16 = heapFloat[(r3+2)];
+	f17 = heapFloat[(r3+6)];
+	f18 = heapFloat[(r3+9)];
+	f19 = heapFloat[(r3+8)];
+	f6 = f6*f3;
+	f7 = f7*f4;
+	f1 = f1*f3;
+	f5 = f5*f4;
+	f10 = f10*f3;
+	f11 = f11*f4;
+	f8 = f8*f3;
+	f9 = f9*f4;
+	f20 = heapFloat[(r2+10)];
+	f21 = heapFloat[(r3+10)];
+	f6 = f6+f7;
+	f7 = f15*f0;
+	f1 = f1+f5;
+	f5 = f14*f0;
+	f12 = f12*f3;
+	f13 = f13*f4;
+	f10 = f10+f11;
+	f11 = f19*f0;
+	f8 = f8+f9;
+	f9 = f18*f0;
+	f14 = f16*f3;
+	f15 = f17*f4;
+	f6 = f6+f7;
+	f1 = f1+f5;
+	f5 = f10+f11;
+	f7 = f8+f9;
+	f8 = f12+f13;
+	f9 = f20*f0;
+	f10 = f14+f15;
+	f11 = f21*f0;
+	f8 = f8+f9;
+	f9 = f10+f11;
+	f6 = f3*f6;
+	f1 = f4*f1;
+	f3 = f3*f5;
+	f4 = f4*f7;
+	f1 = f6+f1;
+	f5 = f0*f8;
+	f3 = f3+f4;
+	f0 = f0*f9;
+	f1 = f1+f5;
+	f0 = f3+f0;
+	f0 = f1+f0;
+	f0 = f2/f0;
+	heapFloat[(r1+121)] = f0;
+}
+	r0 = heapU8[r0+514];
+	if(r0 ==0) //_LBB587_83
+{
+break _8;
+}
+else{
+	f0 = heapFloat[(fp+-37)];
+	f1 = -f0;
+	f2 = heapFloat[(fp+-38)];
+	f3 = -f2;
+	f4 = heapFloat[(fp+-52)];
+	f1 = f4*f1;
+	f6 = heapFloat[(fp+-39)];
+	f5 = heapFloat[(fp+-50)];
+	f7 = f5*f6;
+	f8 = heapFloat[(fp+-49)];
+	f9 = f0*f8;
+	f10 = f5*f2;
+	f11 = -f6;
+	f1 = f1-f7;
+	f7 = heapFloat[(fp+-51)];
+	f12 = f7*f2;
+	f9 = f9+f10;
+	f10 = f7*f6;
+	f3 = f4*f3;
+	f13 = f7*f0;
+	f1 = f1+f12;
+	f9 = f9+f10;
+	f3 = f3-f13;
+	f6 = f8*f6;
+	f10 = f4*f11;
+	f2 = f8*f2;
+	f3 = f3+f6;
+	f6 = f1*f4;
+	f11 = f9*f8;
+	f2 = f10-f2;
+	f0 = f5*f0;
+	f0 = f2+f0;
+	f2 = f3*f4;
+	f10 = f9*f5;
+	f6 = f6-f11;
+	f11 = f3*f7;
+	f4 = f0*f4;
+	f9 = f9*f7;
+	f2 = f2-f10;
+	f10 = f0*f8;
+	f6 = f6-f11;
+	f0 = f0*f5;
+	f0 = f6+f0;
+	f4 = f4-f9;
+	f5 = f1*f5;
+	f2 = f2-f10;
+	f1 = f1*f7;
+	f4 = f4-f5;
+	f3 = f3*f8;
+	f1 = f2+f1;
+	heapFloat[(r1+131)] = f0;
+	f0 = f4+f3;
+	heapFloat[(r1+132)] = f1;
+	heapFloat[(r1+133)] = f0;
+	heap32[(r1+134)] = 0;
+	return;
+}
+}
+}
+}
+	r0 = _2E_str584;
+	r1 = _2E_str685;
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r1;
+	heap32[(g0+2)] = 188;
+	_assert(i7);
+}
+} while(0);
+	return;
+}
+
+function _ZN15btJacobianEntryC2ERK9btVector3RK11btMatrix3x3S5_S2_S2_(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var f0;
+	var f1;
+	var f2;
+	var f3;
+	var f4;
+	var f5;
+	var f6;
+	var f7;
+	var f8;
+	var f9;
+	var f10;
+	var f11;
+	var f12;
+	var f13;
+	var f14;
+var __label__ = 0;
+	i7 = sp + -16;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r0 = r0 >> 2;
+	heap32[(r0)] = 0;
+	heap32[(r0+1)] = 0;
+	r1 = heap32[(fp+1)];
+	r2 = heap32[(fp+2)];
+	heap32[(r0+2)] = 0;
+	r1 = r1 >> 2;
+	heap32[(r0+3)] = 0;
+	r2 = r2 >> 2;
+	f0 = heapFloat[(r1)];
+	f1 = heapFloat[(r2)];
+	f2 = heapFloat[(r1+1)];
+	f3 = heapFloat[(r2+1)];
+	f4 = heapFloat[(r2+4)];
+	f5 = heapFloat[(r2+5)];
+	f1 = f1*f0;
+	f3 = f3*f2;
+	f6 = heapFloat[(r1+2)];
+	f7 = heapFloat[(r2+2)];
+	f8 = heapFloat[(r2+8)];
+	f9 = heapFloat[(r2+9)];
+	f10 = heapFloat[(r2+10)];
+	f11 = heapFloat[(r2+6)];
+	f4 = f4*f0;
+	f5 = f5*f2;
+	f1 = f1+f3;
+	f3 = f7*f6;
+	f0 = f8*f0;
+	f2 = f9*f2;
+	f4 = f4+f5;
+	f5 = f11*f6;
+	f1 = f1+f3;
+	f0 = f0+f2;
+	f2 = f10*f6;
+	f3 = f4+f5;
+	heapFloat[(r0+4)] = f1;
+	f0 = f0+f2;
+	heapFloat[(r0+5)] = f3;
+	heapFloat[(r0+6)] = f0;
+	heap32[(r0+7)] = 0;
+	r2 = heap32[(fp+3)];
+	r2 = r2 >> 2;
+	f2 = heapFloat[(r1)];
+	f2 = -f2;
+	f4 = heapFloat[(r2)];
+	f5 = heapFloat[(r1+1)];
+	f6 = heapFloat[(r2+1)];
+	f7 = heapFloat[(r2+4)];
+	f8 = heapFloat[(r2+5)];
+	f4 = f4*f2;
+	f6 = f6*f5;
+	f9 = heapFloat[(r1+2)];
+	f10 = heapFloat[(r2+2)];
+	f11 = heapFloat[(r2+8)];
+	f12 = heapFloat[(r2+9)];
+	f13 = heapFloat[(r2+10)];
+	f14 = heapFloat[(r2+6)];
+	f7 = f7*f2;
+	f8 = f8*f5;
+	f4 = f4-f6;
+	f6 = f10*f9;
+	f2 = f11*f2;
+	f5 = f12*f5;
+	f7 = f7-f8;
+	f8 = f14*f9;
+	f4 = f4-f6;
+	f2 = f2-f5;
+	f5 = f13*f9;
+	f6 = f7-f8;
+	heapFloat[(r0+8)] = f4;
+	f2 = f2-f5;
+	heapFloat[(r0+9)] = f6;
+	r1 = heap32[(fp+4)];
+	heapFloat[(r0+10)] = f2;
+	r1 = r1 >> 2;
+	heap32[(r0+11)] = 0;
+	f5 = heapFloat[(r1+2)];
+	f7 = heapFloat[(r1+1)];
+	f8 = heapFloat[(r1)];
+	f8 = f8*f1;
+	f7 = f7*f3;
+	heapFloat[(r0+12)] = f8;
+	f5 = f5*f0;
+	heapFloat[(r0+13)] = f7;
+	r1 = heap32[(fp+5)];
+	heapFloat[(r0+14)] = f5;
+	r1 = r1 >> 2;
+	heap32[(r0+15)] = 0;
+	f9 = heapFloat[(r1+2)];
+	f10 = heapFloat[(r1+1)];
+	f11 = heapFloat[(r1)];
+	f10 = f10*f6;
+	f11 = f11*f4;
+	f9 = f9*f2;
+	heapFloat[(r0+16)] = f11;
+	f1 = f8*f1;
+	f3 = f7*f3;
+	f4 = f11*f4;
+	f6 = f10*f6;
+	heapFloat[(r0+17)] = f10;
+	f1 = f1+f3;
+	f0 = f5*f0;
+	f3 = f4+f6;
+	f2 = f9*f2;
+	heapFloat[(r0+18)] = f9;
+	f0 = f1+f0;
+	f1 = f3+f2;
+	f0 = f0+f1;
+	heap32[(r0+19)] = 0;
+	f1 =                         0;
+	heapFloat[(r0+20)] = f0;
+	if(f0 >f1) //_LBB588_2
+{
+	return;
+}
+else{
+	r0 = _2E_str846;
+	r1 = _2E_str947;
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r1;
+	heap32[(g0+2)] = 70;
+	_assert(i7);
+}
+}
+
+function _Z21btAdjustAngleToLimitsfff(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var f0;
+	var f1;
+	var f2;
+	var f3;
+	var f4;
+var __label__ = 0;
+	i7 = sp + -8;var g0 = i7>>2; // save stack
+	f0 = heapFloat[(fp+1)];
+	f1 = heapFloat[(fp+2)];
+	f2 = heapFloat[(fp)];
+_1: do {
+if(!(f0 >=f1)) //_LBB589_39
+{
+	if(f2 >=f0) //_LBB589_20
+{
+	if(f2 <=f1) //_LBB589_39
+{
+break _1;
+}
+else{
+	f1 = f2-f1;
+	heapFloat[(g0)] = f1;
+	heap32[(g0+1)] = 1086918619;
+	fmodf(i7);
+	f1 = f_g0;
+	f3 =       -3.1415927410125732;
+	if(f1 >=f3) //_LBB589_23
+{
+	f4 =        3.1415927410125732;
+	if(f1 >f4) //_LBB589_25
+{
+	f4 =       -6.2831854820251465;
+	f1 = f1+f4;
+}
+}
+else{
+	f4 =        6.2831854820251465;
+	f1 = f1+f4;
+}
+	f4 =                         0;
+	if(f1 <f4) //_LBB589_28
+{
+	f1 = -f1;
+}
+	f0 = f2-f0;
+	heapFloat[(g0)] = f0;
+	heap32[(g0+1)] = 1086918619;
+	fmodf(i7);
+	f0 = f_g0;
+	if(f0 >=f3) //_LBB589_31
+{
+	f3 =        3.1415927410125732;
+	if(f0 >f3) //_LBB589_33
+{
+	f3 =       -6.2831854820251465;
+	f0 = f0+f3;
+}
+}
+else{
+	f3 =        6.2831854820251465;
+	f0 = f0+f3;
+}
+	if(f0 <f4) //_LBB589_36
+{
+	f0 = -f0;
+}
+	if(f0 >=f1) //_LBB589_39
+{
+break _1;
+}
+else{
+	f0 =       -6.2831854820251465;
+	f2 = f2+f0;
+}
+}
+}
+else{
+	f0 = f0-f2;
+	heapFloat[(g0)] = f0;
+	heap32[(g0+1)] = 1086918619;
+	fmodf(i7);
+	f0 = f_g0;
+	f3 =       -3.1415927410125732;
+	if(f0 >=f3) //_LBB589_4
+{
+	f4 =        3.1415927410125732;
+	if(f0 >f4) //_LBB589_6
+{
+	f4 =       -6.2831854820251465;
+	f0 = f0+f4;
+}
+}
+else{
+	f4 =        6.2831854820251465;
+	f0 = f0+f4;
+}
+	f4 =                         0;
+	if(f0 <f4) //_LBB589_9
+{
+	f0 = -f0;
+}
+	f1 = f1-f2;
+	heapFloat[(g0)] = f1;
+	heap32[(g0+1)] = 1086918619;
+	fmodf(i7);
+	f1 = f_g0;
+	if(f1 >=f3) //_LBB589_12
+{
+	f3 =        3.1415927410125732;
+	if(f1 >f3) //_LBB589_14
+{
+	f3 =       -6.2831854820251465;
+	f1 = f1+f3;
+}
+}
+else{
+	f3 =        6.2831854820251465;
+	f1 = f1+f3;
+}
+	if(f1 <f4) //_LBB589_17
+{
+	f1 = -f1;
+}
+if(!(f0 <f1)) //_LBB589_39
+{
+	f0 =        6.2831854820251465;
+	f0 = f2+f0;
+	f_g0 = f0;
+	return;
+}
+}
+}
+} while(0);
+	f_g0 = f2;
+	return;
+}
+
+function _ZNK17btHingeConstraint28calculateSerializeBufferSizeEv(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+var __label__ = 0;
+	i7 = sp + 0;var g0 = i7>>2; // save stack
+	r0 = 212;
+	r_g0 = r0;
+	return;
+}
+
+function _ZNK17btHingeConstraint9serializeEPvP12btSerializer(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+var __label__ = 0;
+	i7 = sp + -16;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = heap32[(fp+1)];
+	r2 = heap32[(fp+2)];
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r1;
+	heap32[(g0+2)] = r2;
+	r1 = r1 >> 2;
+	r2 = r0 >> 2;
+	_ZNK17btTypedConstraint9serializeEPvP12btSerializer(i7);
+	heap32[(r1+11)] = heap32[(r2+135)];
+	heap32[(r1+12)] = heap32[(r2+136)];
+	heap32[(r1+13)] = heap32[(r2+137)];
+	heap32[(r1+14)] = heap32[(r2+138)];
+	heap32[(r1+15)] = heap32[(r2+139)];
+	heap32[(r1+16)] = heap32[(r2+140)];
+	heap32[(r1+17)] = heap32[(r2+141)];
+	heap32[(r1+18)] = heap32[(r2+142)];
+	heap32[(r1+19)] = heap32[(r2+143)];
+	heap32[(r1+20)] = heap32[(r2+144)];
+	heap32[(r1+21)] = heap32[(r2+145)];
+	heap32[(r1+22)] = heap32[(r2+146)];
+	heap32[(r1+23)] = heap32[(r2+147)];
+	heap32[(r1+24)] = heap32[(r2+148)];
+	heap32[(r1+25)] = heap32[(r2+149)];
+	heap32[(r1+26)] = heap32[(r2+150)];
+	heap32[(r1+27)] = heap32[(r2+151)];
+	heap32[(r1+28)] = heap32[(r2+152)];
+	heap32[(r1+29)] = heap32[(r2+153)];
+	heap32[(r1+30)] = heap32[(r2+154)];
+	heap32[(r1+31)] = heap32[(r2+155)];
+	heap32[(r1+32)] = heap32[(r2+156)];
+	heap32[(r1+33)] = heap32[(r2+157)];
+	heap32[(r1+34)] = heap32[(r2+158)];
+	heap32[(r1+35)] = heap32[(r2+159)];
+	heap32[(r1+36)] = heap32[(r2+160)];
+	heap32[(r1+37)] = heap32[(r2+161)];
+	heap32[(r1+38)] = heap32[(r2+162)];
+	heap32[(r1+39)] = heap32[(r2+163)];
+	heap32[(r1+40)] = heap32[(r2+164)];
+	heap32[(r1+41)] = heap32[(r2+165)];
+	heap32[(r1+42)] = heap32[(r2+166)];
+	r3 = heapU8[r0+720];
+	heap32[(r1+44)] = r3;
+	r3 = heapU8[r0+721];
+	heap32[(r1+45)] = r3;
+	heap32[(r1+47)] = heap32[(r2+168)];
+	heap32[(r1+46)] = heap32[(r2+167)];
+	r0 = heapU8[r0+725];
+	heap32[(r1+43)] = r0;
+	heap32[(r1+48)] = heap32[(r2+172)];
+	heap32[(r1+49)] = heap32[(r2+173)];
+	heap32[(r1+50)] = heap32[(r2+169)];
+	heap32[(r1+51)] = heap32[(r2+170)];
+	heap32[(r1+52)] = heap32[(r2+171)];
+	r0 = _2E_str29;
+	r_g0 = r0;
+	return;
+}
+
+function _ZN17btHingeConstraintD0Ev(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+var __label__ = 0;
+	i7 = sp + -8;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = _ZTV17btHingeConstraint;
+	r2 = r0 >> 2;
+	r1 = (r1 + 8)|0;
+	heap32[(r2)] = r1;
+	heap32[(g0)] = r0;
+	_ZdlPv(i7);
+	return;
+}
+
+function _ZN17btHingeConstraintD1Ev(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+var __label__ = 0;
+	i7 = sp + 0;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = _ZTV17btHingeConstraint;
+	r0 = r0 >> 2;
+	r1 = (r1 + 8)|0;
+	heap32[(r0)] = r1;
+	return;
+}
+
+function _ZN17btHingeConstraint13buildJacobianEv(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+	var r6;
+	var r7;
+	var r8;
+	var r9;
+	var r10;
+	var r11;
+	var r12;
+	var f0;
+	var f1;
+	var f2;
+	var f3;
+	var f4;
+	var f5;
+	var f6;
+	var f7;
+	var f8;
+	var f9;
+	var f10;
+	var f11;
+	var f12;
+	var f13;
+	var f14;
+	var f15;
+	var f16;
+	var f17;
+	var f18;
+	var f19;
+	var f20;
+	var f21;
+	var f22;
+	var f23;
+var __label__ = 0;
+	i7 = sp + -552;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = heapU8[r0+723];
+if(!(r1 ==0)) //_LBB594_25
+{
+	r1 = r0 >> 2;
+	heap32[(r1+7)] = 0;
+	heap32[(r1+182)] = 0;
+	r2 = heapU8[r0+720];
+if(!(r2 !=0)) //_LBB594_13
+{
+	r2 = heap32[(r1+6)];
+	r3 = heap32[(r1+5)];
+	r2 = r2 >> 2;
+	r3 = r3 >> 2;
+	f0 = heapFloat[(r2+5)];
+	f1 = heapFloat[(r1+163)];
+	f2 = heapFloat[(r2+1)];
+	f3 = heapFloat[(r2+6)];
+	f4 = heapFloat[(r1+164)];
+	f5 = heapFloat[(r2+2)];
+	f6 = heapFloat[(r3+5)];
+	f7 = heapFloat[(r1+147)];
+	f8 = heapFloat[(r3+1)];
+	f9 = heapFloat[(r3+6)];
+	f10 = heapFloat[(r1+148)];
+	f11 = heapFloat[(r3+2)];
+	f12 = heapFloat[(r2+9)];
+	f13 = heapFloat[(r2+10)];
+	f14 = heapFloat[(r3+9)];
+	f15 = heapFloat[(r3+10)];
+	f0 = f0*f1;
+	f3 = f3*f4;
+	f16 = heapFloat[(r2+7)];
+	f17 = heapFloat[(r1+165)];
+	f18 = heapFloat[(r2+3)];
+	f6 = f6*f7;
+	f9 = f9*f10;
+	f19 = heapFloat[(r3+7)];
+	f20 = heapFloat[(r1+149)];
+	f21 = heapFloat[(r3+3)];
+	f2 = f2*f1;
+	f5 = f5*f4;
+	f8 = f8*f7;
+	f11 = f11*f10;
+	f22 = heapFloat[(r2+11)];
+	f23 = heapFloat[(r3+11)];
+	f1 = f12*f1;
+	f4 = f13*f4;
+	f7 = f14*f7;
+	f10 = f15*f10;
+	f0 = f0+f3;
+	f3 = f16*f17;
+	f6 = f6+f9;
+	f9 = f19*f20;
+	f2 = f2+f5;
+	f5 = f18*f17;
+	f8 = f8+f11;
+	f11 = f21*f20;
+	f1 = f1+f4;
+	f4 = f22*f17;
+	f7 = f7+f10;
+	f10 = f23*f20;
+	f0 = f0+f3;
+	f3 = heapFloat[(r2+14)];
+	f6 = f6+f9;
+	f9 = heapFloat[(r3+14)];
+	f2 = f2+f5;
+	f5 = heapFloat[(r2+13)];
+	f8 = f8+f11;
+	f11 = heapFloat[(r3+13)];
+	f0 = f0+f3;
+	f3 = f6+f9;
+	f2 = f2+f5;
+	f5 = f8+f11;
+	f1 = f1+f4;
+	f4 = heapFloat[(r2+15)];
+	f6 = f7+f10;
+	f7 = heapFloat[(r3+15)];
+	f8 = f0-f3;
+	f9 = f2-f5;
+	f1 = f1+f4;
+	f4 = f6+f7;
+	f6 = f1-f4;
+	f7 = f9*f9;
+	f10 = f8*f8;
+	f7 = f7+f10;
+	f10 = f6*f6;
+	f7 = f7+f10;
+	f10 =   1.1920928955078125e-007;
+	if(f7 >f10) //_LBB594_4
+{
+	heapFloat[(g0)] = f7;
+	f10 =                         1;
+	sqrtf(i7);
+	f11 = f10/f_g0;
+	r2 = sp + -512;
+	f7 = f9*f11;
+	f8 = f8*f11;
+	r3 = r2 >> 2;
+	heapFloat[(fp+-128)] = f7;
+	f6 = f6*f11;
+	heapFloat[(r3+1)] = f8;
+	r2 = (r2 + 8)|0;
+	heapFloat[(r3+2)] = f6;
+	heap32[(r3+3)] = 0;
+	f9 =                         0;
+	if(f6 <f9) //_LBB594_6
+{
+	f9 = -f6;
+}
+else{
+	f9 = f6;
+}
+	f11 =       0.70710676908493042;
+	if(f9 >f11) //_LBB594_9
+{
+	f7 = f8*f8;
+	f8 = f6*f6;
+	f7 = f7+f8;
+	heapFloat[(g0)] = f7;
+	sqrtf(i7);
+	heap32[(r3+4)] = 0;
+	f6 = heapFloat[(r3+2)];
+	f8 = f10/f_g0;
+	f6 = -f6;
+	f6 = f8*f6;
+	heapFloat[(r3+5)] = f6;
+	f9 = heapFloat[(r3+1)];
+	f9 = f9*f8;
+	f7 = f7*f8;
+	heapFloat[(r3+6)] = f9;
+	heapFloat[(r3+8)] = f7;
+	f7 = heapFloat[(fp+-128)];
+	f8 = -f7;
+	f8 = f9*f8;
+	f7 = f7*f6;
+	heapFloat[(r3+9)] = f8;
+	heapFloat[(r3+10)] = f7;
+__label__ = 10;
+}
+else{
+__label__ = 9;
+}
+}
+else{
+	r2 = sp + -512;
+	r3 = r2 >> 2;
+	heap32[(fp+-128)] = 1065353216;
+	heap32[(r3+1)] = 0;
+	r2 = (r2 + 8)|0;
+	f7 =                         1;
+	f8 =                         0;
+	heap32[(r3+2)] = 0;
+	heap32[(r3+3)] = 0;
+__label__ = 9;
+}
+if (__label__ == 9){
+	f6 = f7*f7;
+	f7 = f8*f8;
+	f6 = f6+f7;
+	r3 = sp + -512;
+	heapFloat[(g0)] = f6;
+	r3 = r3 >> 2;
+	sqrtf(i7);
+	f8 =                         1;
+	f9 = heapFloat[(r3+1)];
+	f7 = f8/f_g0;
+	f8 = -f9;
+	f8 = f7*f8;
+	heapFloat[(r3+4)] = f8;
+	f9 = heapFloat[(fp+-128)];
+	f9 = f9*f7;
+	heapFloat[(r3+5)] = f9;
+	r2 = r2 >> 2;
+	heap32[(r3+6)] = 0;
+	f10 = heapFloat[(r2)];
+	f11 = -f10;
+	f9 = f9*f11;
+	f8 = f10*f8;
+	heapFloat[(r3+8)] = f9;
+	f6 = f6*f7;
+	heapFloat[(r3+9)] = f8;
+	heapFloat[(r3+10)] = f6;
+}
+	r2 = (r0 + 36)|0;
+	r3 = 0;
+_16: while(true){
+	r4 = heap32[(r1+5)];
+	r5 = r4 >> 2;
+	r6 = sp + -416;
+	r7 = r6 >> 2;
+	heap32[(fp+-104)] = heap32[(r5+1)];
+	heap32[(r7+1)] = heap32[(r5+5)];
+	heap32[(r7+2)] = heap32[(r5+9)];
+	heap32[(r7+3)] = 0;
+	heap32[(r7+4)] = heap32[(r5+2)];
+	heap32[(r7+5)] = heap32[(r5+6)];
+	heap32[(r7+6)] = heap32[(r5+10)];
+	heap32[(r7+7)] = 0;
+	heap32[(r7+8)] = heap32[(r5+3)];
+	heap32[(r7+9)] = heap32[(r5+7)];
+	heap32[(r7+10)] = heap32[(r5+11)];
+	heap32[(r7+11)] = 0;
+	r7 = heap32[(r1+6)];
+	r8 = sp + -368;
+	r9 = r7 >> 2;
+	r10 = r8 >> 2;
+	heap32[(fp+-92)] = heap32[(r9+1)];
+	heap32[(r10+1)] = heap32[(r9+5)];
+	heap32[(r10+2)] = heap32[(r9+9)];
+	heap32[(r10+3)] = 0;
+	heap32[(r10+4)] = heap32[(r9+2)];
+	heap32[(r10+5)] = heap32[(r9+6)];
+	heap32[(r10+6)] = heap32[(r9+10)];
+	heap32[(r10+7)] = 0;
+	heap32[(r10+8)] = heap32[(r9+3)];
+	heap32[(r10+9)] = heap32[(r9+7)];
+	heap32[(r10+10)] = heap32[(r9+11)];
+	heap32[(r10+11)] = 0;
+	f6 = heapFloat[(r5+13)];
+	f7 = heapFloat[(r5+15)];
+	f8 = heapFloat[(r5+14)];
+	r10 = sp + -320;
+	f6 = f5-f6;
+	r11 = r10 >> 2;
+	f8 = f3-f8;
+	heapFloat[(fp+-80)] = f6;
+	f6 = f4-f7;
+	heapFloat[(r11+1)] = f8;
+	heapFloat[(r11+2)] = f6;
+	heap32[(r11+3)] = 0;
+	f6 = heapFloat[(r9+13)];
+	f7 = heapFloat[(r9+15)];
+	f8 = heapFloat[(r9+14)];
+	r11 = sp + -304;
+	f6 = f2-f6;
+	r12 = r11 >> 2;
+	f8 = f0-f8;
+	heapFloat[(fp+-76)] = f6;
+	f6 = f1-f7;
+	heapFloat[(r12+1)] = f8;
+	heapFloat[(r12+2)] = f6;
+	heap32[(r12+3)] = 0;
+	f6 = heapFloat[(r9+84)];
+	f7 = heapFloat[(r5+84)];
+	r5 = sp + -512;
+	r5 = (r5 + r3)|0;
+	r4 = (r4 + 388)|0;
+	r7 = (r7 + 388)|0;
+	heap32[(g0)] = r2;
+	heap32[(g0+1)] = r6;
+	heap32[(g0+2)] = r8;
+	heap32[(g0+3)] = r10;
+	heap32[(g0+4)] = r11;
+	heap32[(g0+5)] = r5;
+	heap32[(g0+6)] = r4;
+	heapFloat[(g0+7)] = f7;
+	heap32[(g0+8)] = r7;
+	heapFloat[(g0+9)] = f6;
+	r3 = (r3 + 16)|0;
+	r2 = (r2 + 84)|0;
+	_ZN15btJacobianEntryC2ERK11btMatrix3x3S2_RK9btVector3S5_S5_S5_fS5_f(i7);
+if(!(r3 !=48)) //_LBB594_12
+{
+break _16;
+}
+}
+}
+	f0 = heapFloat[(r1+145)];
+	f1 = heapFloat[(r1+137)];
+	f2 = heapFloat[(r1+141)];
+	f3 =                         0;
+	if(f0 <f3) //_LBB594_15
+{
+	f4 = -f0;
+}
+else{
+	f4 = f0;
+}
+	f5 =       0.70710676908493042;
+	if(f4 <=f5) //_LBB594_18
+{
+	f4 = f1*f1;
+	f6 = f2*f2;
+	f5 = f4+f6;
+	heapFloat[(g0)] = f5;
+	f4 =                         1;
+	sqrtf(i7);
+	f7 = f4/f_g0;
+	f2 = -f2;
+	f4 = f7*f2;
+	f6 = f1*f7;
+	f1 = -f0;
+	f2 = f6*f1;
+	f0 = f0*f4;
+	f1 = f5*f7;
+}
+else{
+	f3 = f2*f2;
+	f4 = f0*f0;
+	f4 = f3+f4;
+	heapFloat[(g0)] = f4;
+	f3 =                         1;
+	sqrtf(i7);
+	f5 = f3/f_g0;
+	f0 = -f0;
+	f6 = f5*f0;
+	f3 = f2*f5;
+	f0 = -f1;
+	f2 = f4*f5;
+	f0 = f3*f0;
+	f1 = f1*f6;
+	f4 =                         0;
+}
+	r2 = heap32[(r1+5)];
+	r3 = r2 >> 2;
+	f5 = heapFloat[(r3+2)];
+	f7 = heapFloat[(r3+1)];
+	f8 = heapFloat[(r3+6)];
+	f9 = heapFloat[(r3+5)];
+	f10 = heapFloat[(r3+3)];
+	f11 = f7*f4;
+	f12 = f5*f6;
+	f13 = heapFloat[(r3+11)];
+	f14 = heapFloat[(r3+7)];
+	f15 = heapFloat[(r3+10)];
+	f16 = heapFloat[(r3+9)];
+	f17 = f9*f4;
+	f18 = f8*f6;
+	f11 = f11+f12;
+	f12 = f10*f3;
+	r3 = sp + -432;
+	f4 = f16*f4;
+	f6 = f15*f6;
+	f17 = f17+f18;
+	f18 = f14*f3;
+	f11 = f11+f12;
+	r4 = r3 >> 2;
+	f4 = f4+f6;
+	f3 = f13*f3;
+	f6 = f17+f18;
+	heapFloat[(fp+-108)] = f11;
+	f11 = f7*f2;
+	f12 = f5*f0;
+	f3 = f4+f3;
+	heapFloat[(r4+1)] = f6;
+	heapFloat[(r4+2)] = f3;
+	f3 = f9*f2;
+	f4 = f8*f0;
+	f6 = f11+f12;
+	f11 = f10*f1;
+	r5 = sp + -448;
+	f2 = f16*f2;
+	f0 = f15*f0;
+	f3 = f3+f4;
+	f4 = f14*f1;
+	f6 = f6+f11;
+	heap32[(r4+3)] = 0;
+	r4 = r5 >> 2;
+	f0 = f2+f0;
+	f1 = f13*f1;
+	f2 = f3+f4;
+	heapFloat[(fp+-112)] = f6;
+	f0 = f0+f1;
+	heapFloat[(r4+1)] = f2;
+	heapFloat[(r4+2)] = f0;
+	heap32[(r4+3)] = 0;
+	f0 = heapFloat[(r1+137)];
+	f1 = heapFloat[(r1+141)];
+	f2 = heapFloat[(r1+145)];
+	f3 = f7*f0;
+	f4 = f5*f1;
+	f6 = f9*f0;
+	f11 = f8*f1;
+	f3 = f3+f4;
+	f4 = f10*f2;
+	r4 = sp + -464;
+	f0 = f16*f0;
+	f1 = f15*f1;
+	f6 = f6+f11;
+	f11 = f14*f2;
+	f3 = f3+f4;
+	r6 = r4 >> 2;
+	f0 = f0+f1;
+	f1 = f13*f2;
+	f2 = f6+f11;
+	heapFloat[(fp+-116)] = f3;
+	f0 = f0+f1;
+	heapFloat[(r6+1)] = f2;
+	heapFloat[(r6+2)] = f0;
+	r7 = sp + -288;
+	heap32[(r6+3)] = 0;
+	r6 = r7 >> 2;
+	heapFloat[(fp+-72)] = f7;
+	heapFloat[(r6+1)] = f9;
+	heapFloat[(r6+2)] = f16;
+	heap32[(r6+3)] = 0;
+	heapFloat[(r6+4)] = f5;
+	heapFloat[(r6+5)] = f8;
+	heapFloat[(r6+6)] = f15;
+	heap32[(r6+7)] = 0;
+	heapFloat[(r6+8)] = f10;
+	heapFloat[(r6+9)] = f14;
+	heapFloat[(r6+10)] = f13;
+	heap32[(r6+11)] = 0;
+	r6 = heap32[(r1+6)];
+	r8 = sp + -240;
+	r9 = r6 >> 2;
+	r10 = r8 >> 2;
+	heap32[(fp+-60)] = heap32[(r9+1)];
+	heap32[(r10+1)] = heap32[(r9+5)];
+	heap32[(r10+2)] = heap32[(r9+9)];
+	heap32[(r10+3)] = 0;
+	heap32[(r10+4)] = heap32[(r9+2)];
+	heap32[(r10+5)] = heap32[(r9+6)];
+	heap32[(r10+6)] = heap32[(r9+10)];
+	heap32[(r10+7)] = 0;
+	heap32[(r10+8)] = heap32[(r9+3)];
+	heap32[(r10+9)] = heap32[(r9+7)];
+	heap32[(r10+10)] = heap32[(r9+11)];
+	heap32[(r10+11)] = 0;
+	r9 = (r0 + 288)|0;
+	r2 = (r2 + 388)|0;
+	r6 = (r6 + 388)|0;
+	heap32[(g0)] = r9;
+	heap32[(g0+1)] = r3;
+	heap32[(g0+2)] = r7;
+	heap32[(g0+3)] = r8;
+	heap32[(g0+4)] = r2;
+	heap32[(g0+5)] = r6;
+	_ZN15btJacobianEntryC2ERK9btVector3RK11btMatrix3x3S5_S2_S2_(i7);
+	r2 = heap32[(r1+5)];
+	r3 = sp + -192;
+	r6 = r2 >> 2;
+	r7 = r3 >> 2;
+	heap32[(fp+-48)] = heap32[(r6+1)];
+	heap32[(r7+1)] = heap32[(r6+5)];
+	heap32[(r7+2)] = heap32[(r6+9)];
+	heap32[(r7+3)] = 0;
+	heap32[(r7+4)] = heap32[(r6+2)];
+	heap32[(r7+5)] = heap32[(r6+6)];
+	heap32[(r7+6)] = heap32[(r6+10)];
+	heap32[(r7+7)] = 0;
+	heap32[(r7+8)] = heap32[(r6+3)];
+	heap32[(r7+9)] = heap32[(r6+7)];
+	heap32[(r7+10)] = heap32[(r6+11)];
+	heap32[(r7+11)] = 0;
+	r6 = heap32[(r1+6)];
+	r7 = sp + -144;
+	r8 = r6 >> 2;
+	r9 = r7 >> 2;
+	heap32[(fp+-36)] = heap32[(r8+1)];
+	heap32[(r9+1)] = heap32[(r8+5)];
+	heap32[(r9+2)] = heap32[(r8+9)];
+	heap32[(r9+3)] = 0;
+	heap32[(r9+4)] = heap32[(r8+2)];
+	heap32[(r9+5)] = heap32[(r8+6)];
+	heap32[(r9+6)] = heap32[(r8+10)];
+	heap32[(r9+7)] = 0;
+	heap32[(r9+8)] = heap32[(r8+3)];
+	heap32[(r9+9)] = heap32[(r8+7)];
+	heap32[(r9+10)] = heap32[(r8+11)];
+	heap32[(r9+11)] = 0;
+	r8 = (r0 + 372)|0;
+	r2 = (r2 + 388)|0;
+	r6 = (r6 + 388)|0;
+	heap32[(g0)] = r8;
+	heap32[(g0+1)] = r5;
+	heap32[(g0+2)] = r3;
+	heap32[(g0+3)] = r7;
+	heap32[(g0+4)] = r2;
+	heap32[(g0+5)] = r6;
+	_ZN15btJacobianEntryC2ERK9btVector3RK11btMatrix3x3S5_S2_S2_(i7);
+	r2 = heap32[(r1+5)];
+	r3 = sp + -96;
+	r5 = r2 >> 2;
+	r6 = r3 >> 2;
+	heap32[(fp+-24)] = heap32[(r5+1)];
+	heap32[(r6+1)] = heap32[(r5+5)];
+	heap32[(r6+2)] = heap32[(r5+9)];
+	heap32[(r6+3)] = 0;
+	heap32[(r6+4)] = heap32[(r5+2)];
+	heap32[(r6+5)] = heap32[(r5+6)];
+	heap32[(r6+6)] = heap32[(r5+10)];
+	heap32[(r6+7)] = 0;
+	heap32[(r6+8)] = heap32[(r5+3)];
+	heap32[(r6+9)] = heap32[(r5+7)];
+	heap32[(r6+10)] = heap32[(r5+11)];
+	heap32[(r6+11)] = 0;
+	r5 = heap32[(r1+6)];
+	r6 = sp + -48;
+	r7 = r5 >> 2;
+	r8 = r6 >> 2;
+	heap32[(fp+-12)] = heap32[(r7+1)];
+	heap32[(r8+1)] = heap32[(r7+5)];
+	heap32[(r8+2)] = heap32[(r7+9)];
+	heap32[(r8+3)] = 0;
+	heap32[(r8+4)] = heap32[(r7+2)];
+	heap32[(r8+5)] = heap32[(r7+6)];
+	heap32[(r8+6)] = heap32[(r7+10)];
+	heap32[(r8+7)] = 0;
+	heap32[(r8+8)] = heap32[(r7+3)];
+	heap32[(r8+9)] = heap32[(r7+7)];
+	heap32[(r8+10)] = heap32[(r7+11)];
+	heap32[(r8+11)] = 0;
+	r7 = (r0 + 456)|0;
+	r2 = (r2 + 388)|0;
+	r5 = (r5 + 388)|0;
+	heap32[(g0)] = r7;
+	heap32[(g0+1)] = r4;
+	heap32[(g0+2)] = r3;
+	heap32[(g0+3)] = r6;
+	heap32[(g0+4)] = r2;
+	heap32[(g0+5)] = r5;
+	_ZN15btJacobianEntryC2ERK9btVector3RK11btMatrix3x3S5_S2_S2_(i7);
+	heap32[(r1+177)] = 0;
+	r2 = heap32[(r1+6)];
+	r3 = heap32[(r1+5)];
+	r3 = (r3 + 4)|0;
+	r2 = (r2 + 4)|0;
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r3;
+	heap32[(g0+2)] = r2;
+	_ZN17btHingeConstraint13getHingeAngleERK11btTransformS2_(i7);
+	f0 = f_g0;
+	heapFloat[(r1+178)] = f0;
+	heap32[(r1+176)] = 0;
+	r2 = 0;
+	heap32[(r1+175)] = 0;
+	heap8[r0+722] = r2;
+	f1 = heapFloat[(r1+172)];
+	f2 = heapFloat[(r1+173)];
+if(!(f1 >f2)) //_LBB594_24
+{
+	heapFloat[(g0)] = f0;
+	heapFloat[(g0+1)] = f1;
+	heapFloat[(g0+2)] = f2;
+	_Z21btAdjustAngleToLimitsfff(i7);
+	f0 = f_g0;
+	heapFloat[(r1+178)] = f0;
+	f1 = heapFloat[(r1+172)];
+	if(f0 >f1) //_LBB594_22
+{
+	f1 = heapFloat[(r1+173)];
+if(!(f0 <f1)) //_LBB594_24
+{
+	f0 = f1-f0;
+	heapFloat[(r1+176)] = f0;
+	r2 = 1;
+	heap32[(r1+175)] = -1082130432;
+	heap8[r0+722] = r2;
+}
+}
+else{
+	f0 = f1-f0;
+	heapFloat[(r1+176)] = f0;
+	r2 = 1;
+	heap32[(r1+175)] = 1065353216;
+	heap8[r0+722] = r2;
+}
+}
+	r0 = heap32[(r1+5)];
+	r0 = r0 >> 2;
+	f0 = heapFloat[(r1+137)];
+	f1 = heapFloat[(r0+5)];
+	f2 = heapFloat[(r0+1)];
+	f3 = heapFloat[(r1+141)];
+	f4 = heapFloat[(r0+6)];
+	f5 = heapFloat[(r0+2)];
+	f6 = heapFloat[(r0+9)];
+	f7 = heapFloat[(r0+10)];
+	r2 = heap32[(r1+6)];
+	f2 = f2*f0;
+	f5 = f5*f3;
+	f1 = f1*f0;
+	f4 = f4*f3;
+	f8 = heapFloat[(r1+145)];
+	f9 = heapFloat[(r0+7)];
+	f10 = heapFloat[(r0+3)];
+	r2 = r2 >> 2;
+	f11 = heapFloat[(r0+11)];
+	f0 = f6*f0;
+	f3 = f7*f3;
+	f2 = f2+f5;
+	f5 = f10*f8;
+	f1 = f1+f4;
+	f4 = f9*f8;
+	f0 = f0+f3;
+	f3 = f11*f8;
+	f2 = f2+f5;
+	f5 = heapFloat[(r0+65)];
+	f6 = heapFloat[(r0+64)];
+	f7 = heapFloat[(r2+65)];
+	f8 = heapFloat[(r2+64)];
+	f1 = f1+f4;
+	f4 = heapFloat[(r0+69)];
+	f9 = heapFloat[(r0+68)];
+	f10 = heapFloat[(r2+69)];
+	f11 = heapFloat[(r2+68)];
+	f12 = heapFloat[(r0+66)];
+	f13 = heapFloat[(r0+70)];
+	f14 = heapFloat[(r2+66)];
+	f15 = heapFloat[(r2+70)];
+	f6 = f6*f2;
+	f9 = f9*f1;
+	f5 = f5*f2;
+	f4 = f4*f1;
+	f8 = f8*f2;
+	f11 = f11*f1;
+	f7 = f7*f2;
+	f10 = f10*f1;
+	f0 = f0+f3;
+	f3 = heapFloat[(r0+73)];
+	f16 = heapFloat[(r0+72)];
+	f17 = heapFloat[(r2+73)];
+	f18 = heapFloat[(r2+72)];
+	f19 = heapFloat[(r0+74)];
+	f20 = heapFloat[(r2+74)];
+	f6 = f6+f9;
+	f9 = f16*f0;
+	f4 = f5+f4;
+	f3 = f3*f0;
+	f5 = f12*f2;
+	f12 = f13*f1;
+	f8 = f8+f11;
+	f11 = f18*f0;
+	f7 = f7+f10;
+	f10 = f17*f0;
+	f13 = f14*f2;
+	f14 = f15*f1;
+	f6 = f6+f9;
+	f3 = f4+f3;
+	f4 = f8+f11;
+	f7 = f7+f10;
+	f5 = f5+f12;
+	f8 = f19*f0;
+	f9 = f13+f14;
+	f10 = f20*f0;
+	f5 = f5+f8;
+	f8 = f9+f10;
+	f6 = f2*f6;
+	f3 = f1*f3;
+	f2 = f2*f4;
+	f1 = f1*f7;
+	f3 = f6+f3;
+	f4 = f0*f5;
+	f1 = f2+f1;
+	f0 = f0*f8;
+	f2 = f3+f4;
+	f0 = f1+f0;
+	f1 =                         1;
+	f0 = f2+f0;
+	f0 = f1/f0;
+	heapFloat[(r1+174)] = f0;
+}
+	return;
+}
+
+function _ZN17btHingeConstraint8getInfo1EPN17btTypedConstraint17btConstraintInfo1E(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var f0;
+	var f1;
+	var f2;
+var __label__ = 0;
+	i7 = sp + -16;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = heap32[(fp+1)];
+	r2 = heapU8[r0+723];
+	if(r2 ==0) //_LBB595_2
+{
+	r1 = r1 >> 2;
+	heap32[(r1)] = 5;
+	heap32[(r1+1)] = 1;
+	r2 = r0 >> 2;
+	r3 = heap32[(r2+6)];
+	r4 = heap32[(r2+5)];
+	r4 = (r4 + 4)|0;
+	r3 = (r3 + 4)|0;
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r4;
+	heap32[(g0+2)] = r3;
+	_ZN17btHingeConstraint13getHingeAngleERK11btTransformS2_(i7);
+	f0 = f_g0;
+	heapFloat[(r2+178)] = f0;
+	heap32[(r2+176)] = 0;
+	r3 = 0;
+	heap32[(r2+175)] = 0;
+	heap8[r0+722] = r3;
+	f1 = heapFloat[(r2+172)];
+	f2 = heapFloat[(r2+173)];
+	if(f1 >f2) //_LBB595_8
+{
+__label__ = 8;
+}
+else{
+	heapFloat[(g0)] = f0;
+	heapFloat[(g0+1)] = f1;
+	heapFloat[(g0+2)] = f2;
+	_Z21btAdjustAngleToLimitsfff(i7);
+	f0 = f_g0;
+	heapFloat[(r2+178)] = f0;
+	f1 = heapFloat[(r2+172)];
+	if(f0 >f1) //_LBB595_5
+{
+	f1 = heapFloat[(r2+173)];
+	if(f0 <f1) //_LBB595_7
+{
+	r2 = heapU8[r0+722];
+	if(r2 !=0) //_LBB595_10
+{
+__label__ = 10;
+}
+else{
+__label__ = 8;
+}
+}
+else{
+	f0 = f1-f0;
+	heapFloat[(r2+176)] = f0;
+	r3 = 1;
+	heap32[(r2+175)] = -1082130432;
+	heap8[r0+722] = r3;
+__label__ = 10;
+}
+}
+else{
+	f0 = f1-f0;
+	heapFloat[(r2+176)] = f0;
+	r3 = 1;
+	heap32[(r2+175)] = 1065353216;
+	heap8[r0+722] = r3;
+__label__ = 10;
+}
+}
+if (__label__ == 8){
+	r0 = heapU8[r0+721];
+if(!(r0 !=0)) //_LBB595_10
+{
+	return;
+}
+}
+	r0 = heap32[(r1)];
+	r0 = (r0 + 1)|0;
+	heap32[(r1)] = r0;
+	r0 = heap32[(r1+1)];
+	r0 = (r0 + -1)|0;
+	heap32[(r1+1)] = r0;
+	return;
+}
+else{
+	r0 = r1 >> 2;
+	heap32[(r0)] = 0;
+	heap32[(r0+1)] = 0;
+	return;
+}
+}
+
+function _ZN17btHingeConstraint8getInfo2EPN17btTypedConstraint17btConstraintInfo2E(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+	var r6;
+	var r7;
+	var r8;
+	var r9;
+	var r10;
+	var r11;
+	var r12;
+	var r13;
+	var r14;
+	var r15;
+	var r16;
+	var r17;
+	var r18;
+	var f0;
+	var f1;
+	var f2;
+	var f3;
+	var f4;
+	var f5;
+	var f6;
+	var f7;
+	var f8;
+	var f9;
+	var f10;
+	var f11;
+	var f12;
+	var f13;
+	var f14;
+	var f15;
+	var f16;
+	var f17;
+	var f18;
+	var f19;
+	var f20;
+	var f21;
+	var f22;
+	var f23;
+	var f24;
+	var f25;
+	var f26;
+	var f27;
+	var f28;
+	var f29;
+	var f30;
+var __label__ = 0;
+	i7 = sp + -136;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = r0 >> 2;
+	r2 = heap32[(fp+1)];
+	r3 = heap32[(r1+6)];
+	r4 = heap32[(r1+5)];
+	r5 = heapU8[r0+723];
+	r6 = heapU8[r0+724];
+_1: do {
+	if(r6 ==0) //_LBB596_60
+{
+	r5 = r5 & 255;
+	if(r5 ==0) //_LBB596_62
+{
+	r4 = r4 >> 2;
+	r3 = r3 >> 2;
+	f0 = heapFloat[(r1+147)];
+	f1 = heapFloat[(r4+9)];
+	f2 = heapFloat[(r4+5)];
+	f3 = heapFloat[(r4+1)];
+	f4 = heapFloat[(r1+148)];
+	f5 = heapFloat[(r4+10)];
+	f6 = heapFloat[(r4+6)];
+	f7 = heapFloat[(r4+2)];
+	f8 = heapFloat[(r1+163)];
+	f9 = heapFloat[(r3+9)];
+	heapFloat[(fp+-3)] = f9;
+	f10 = heapFloat[(r3+5)];
+	heapFloat[(fp+-2)] = f10;
+	f11 = heapFloat[(r3+1)];
+	heapFloat[(fp+-1)] = f11;
+	f12 = heapFloat[(r1+164)];
+	f13 = heapFloat[(r3+10)];
+	f14 = heapFloat[(r3+6)];
+	f9 = heapFloat[(r3+2)];
+	heapFloat[(fp+-7)] = f9;
+	f10 = heapFloat[(r1+137)];
+	f11 = heapFloat[(r1+141)];
+	f15 = heapFloat[(r1+136)];
+	f16 = heapFloat[(r1+140)];
+	f17 = heapFloat[(r1+135)];
+	f18 = heapFloat[(r1+139)];
+	f19 = heapFloat[(r1+153)];
+	f20 = heapFloat[(r1+157)];
+	f21 = f1*f0;
+	f22 = f5*f4;
+	f23 = f2*f0;
+	f24 = f6*f4;
+	f0 = f3*f0;
+	f4 = f7*f4;
+	f25 = heapFloat[(r1+149)];
+	f26 = heapFloat[(r4+11)];
+	f27 = heapFloat[(r4+7)];
+	f28 = heapFloat[(r4+3)];
+	f9 = heapFloat[(fp+-3)];
+	f29 = f9*f8;
+	heapFloat[(fp+-8)] = f29;
+	f30 = f13*f12;
+	heapFloat[(fp+-10)] = f30;
+	f9 = heapFloat[(fp+-2)];
+	f9 = f9*f8;
+	heapFloat[(fp+-9)] = f9;
+	f9 = f14*f12;
+	heapFloat[(fp+-12)] = f9;
+	f9 = heapFloat[(fp+-1)];
+	f8 = f9*f8;
+	heapFloat[(fp+-11)] = f8;
+	f9 = heapFloat[(fp+-7)];
+	f12 = f9*f12;
+	heapFloat[(fp+-13)] = f12;
+	f8 = heapFloat[(r1+165)];
+	f9 = heapFloat[(r3+11)];
+	heapFloat[(fp+-4)] = f9;
+	f9 = heapFloat[(r3+7)];
+	heapFloat[(fp+-6)] = f9;
+	f9 = heapFloat[(r3+3)];
+	heapFloat[(fp+-5)] = f9;
+	f9 = heapFloat[(r1+145)];
+	f12 = heapFloat[(r1+144)];
+	f29 = heapFloat[(r1+143)];
+	f30 = heapFloat[(r1+161)];
+	f21 = f21+f22;
+	heapFloat[(fp+-15)] = f21;
+	f22 = f26*f25;
+	f21 = f23+f24;
+	heapFloat[(fp+-16)] = f21;
+	f23 = f27*f25;
+	f0 = f0+f4;
+	heapFloat[(fp+-14)] = f0;
+	f0 = f28*f25;
+	heapFloat[(fp+-23)] = f0;
+	f0 = f10*f1;
+	heapFloat[(fp+-24)] = f0;
+	f4 = f11*f5;
+	f21 = f15*f1;
+	heapFloat[(fp+-18)] = f21;
+	f24 = f16*f5;
+	f1 = f17*f1;
+	heapFloat[(fp+-20)] = f1;
+	f5 = f18*f5;
+	f25 = f10*f2;
+	heapFloat[(fp+-17)] = f25;
+	f0 = f11*f6;
+	f1 = f15*f2;
+	heapFloat[(fp+-19)] = f1;
+	f1 = f16*f6;
+	heapFloat[(fp+-28)] = f1;
+	f2 = f17*f2;
+	heapFloat[(fp+-21)] = f2;
+	f1 = f18*f6;
+	heapFloat[(fp+-29)] = f1;
+	f2 = f10*f3;
+	heapFloat[(fp+-25)] = f2;
+	f6 = f11*f7;
+	f10 = f15*f3;
+	heapFloat[(fp+-26)] = f10;
+	f11 = f16*f7;
+	f3 = f17*f3;
+	heapFloat[(fp+-22)] = f3;
+	f7 = f18*f7;
+	f15 = heapFloat[(fp+-8)];
+	f16 = heapFloat[(fp+-10)];
+	f15 = f15+f16;
+	heapFloat[(fp+-27)] = f15;
+	f16 = heapFloat[(fp+-4)];
+	f17 = f16*f8;
+	f18 = heapFloat[(fp+-9)];
+	f21 = heapFloat[(fp+-12)];
+	f18 = f18+f21;
+	heapFloat[(fp+-8)] = f18;
+	f21 = heapFloat[(fp+-6)];
+	f25 = f21*f8;
+	f1 = heapFloat[(fp+-11)];
+	f2 = heapFloat[(fp+-13)];
+	f1 = f1+f2;
+	heapFloat[(fp+-9)] = f1;
+	f2 = heapFloat[(fp+-5)];
+	f1 = f2*f8;
+	heapFloat[(fp+-11)] = f1;
+	f2 = heapFloat[(fp+-3)];
+	f2 = f19*f2;
+	heapFloat[(fp+-3)] = f2;
+	f1 = f20*f13;
+	heapFloat[(fp+-12)] = f1;
+	f2 = heapFloat[(fp+-2)];
+	f2 = f19*f2;
+	heapFloat[(fp+-10)] = f2;
+	f1 = f20*f14;
+	heapFloat[(fp+-13)] = f1;
+	f2 = heapFloat[(fp+-1)];
+	f2 = f19*f2;
+	heapFloat[(fp+-2)] = f2;
+	f3 = heapFloat[(fp+-7)];
+	f1 = f20*f3;
+	heapFloat[(fp+-30)] = f1;
+	r5 = r2 >> 2;
+	f2 = heapFloat[(r4+15)];
+	f3 = heapFloat[(fp+-15)];
+	f3 = f3+f22;
+	heapFloat[(fp+-7)] = f3;
+	f8 = heapFloat[(r4+14)];
+	f10 = heapFloat[(fp+-16)];
+	f1 = f10+f23;
+	heapFloat[(fp+-15)] = f1;
+	f1 = heapFloat[(r4+13)];
+	heapFloat[(fp+-1)] = f1;
+	f3 = heapFloat[(fp+-14)];
+	f10 = heapFloat[(fp+-23)];
+	f3 = f3+f10;
+	heapFloat[(fp+-16)] = f3;
+	f10 = heapFloat[(fp+-24)];
+	f4 = f10+f4;
+	heapFloat[(fp+-14)] = f4;
+	f1 = f9*f26;
+	heapFloat[(fp+-23)] = f1;
+	f3 = heapFloat[(fp+-18)];
+	f1 = f3+f24;
+	heapFloat[(fp+-18)] = f1;
+	f3 = f12*f26;
+	f4 = heapFloat[(fp+-20)];
+	f4 = f4+f5;
+	f5 = f29*f26;
+	f10 = heapFloat[(fp+-17)];
+	f0 = f10+f0;
+	f10 = f9*f27;
+	f13 = heapFloat[(fp+-19)];
+	f14 = heapFloat[(fp+-28)];
+	f13 = f13+f14;
+	f14 = f12*f27;
+	f15 = heapFloat[(fp+-21)];
+	f16 = heapFloat[(fp+-29)];
+	f15 = f15+f16;
+	f16 = f29*f27;
+	f18 = heapFloat[(fp+-25)];
+	f6 = f18+f6;
+	f9 = f9*f28;
+	f18 = heapFloat[(fp+-26)];
+	f11 = f18+f11;
+	f12 = f12*f28;
+	f18 = heapFloat[(fp+-22)];
+	f7 = f18+f7;
+	f18 = f29*f28;
+	f19 = heapFloat[(fp+-27)];
+	f17 = f19+f17;
+	f19 = heapFloat[(r3+15)];
+	f20 = heapFloat[(fp+-8)];
+	f20 = f20+f25;
+	f21 = heapFloat[(r3+14)];
+	f22 = heapFloat[(fp+-9)];
+	f23 = heapFloat[(fp+-11)];
+	f22 = f22+f23;
+	f23 = heapFloat[(r3+13)];
+	f24 = heapFloat[(fp+-3)];
+	f25 = heapFloat[(fp+-12)];
+	f24 = f24+f25;
+	f25 = heapFloat[(fp+-4)];
+	f25 = f30*f25;
+	f26 = heapFloat[(fp+-10)];
+	f27 = heapFloat[(fp+-13)];
+	f26 = f26+f27;
+	f27 = heapFloat[(fp+-6)];
+	f27 = f30*f27;
+	f28 = heapFloat[(fp+-2)];
+	f29 = heapFloat[(fp+-30)];
+	f28 = f28+f29;
+	f29 = heapFloat[(fp+-5)];
+	f29 = f30*f29;
+	r6 = heap32[(r5+6)];
+	f30 = heapFloat[(fp+-7)];
+	f30 = f30+f2;
+	heapFloat[(fp+-2)] = f30;
+	f30 = heapFloat[(fp+-15)];
+	f30 = f30+f8;
+	heapFloat[(fp+-3)] = f30;
+	f30 = heapFloat[(fp+-16)];
+	f1 = heapFloat[(fp+-1)];
+	f1 = f30+f1;
+	heapFloat[(fp+-4)] = f1;
+	f1 = heapFloat[(fp+-14)];
+	f30 = heapFloat[(fp+-23)];
+	f1 = f1+f30;
+	f30 = heapFloat[(fp+-18)];
+	f3 = f30+f3;
+	f4 = f4+f5;
+	f0 = f0+f10;
+	f5 = f13+f14;
+	f10 = f15+f16;
+	f6 = f6+f9;
+	f9 = f11+f12;
+	f7 = f7+f18;
+	f11 = f17+f19;
+	f12 = f20+f21;
+	f13 = f22+f23;
+	f14 = f24+f25;
+	f15 = f26+f27;
+	f16 = f28+f29;
+	r7 = heapU8[r0+720];
+	if(r7 ==0) //_LBB596_64
+{
+	r7 = heap32[(r5+2)];
+	r7 = r7 >> 2;
+	heap32[(r7)] = 1065353216;
+	r7 = r6 << 2;
+	r8 = heap32[(r5+2)];
+	r7 = (r7 + r8)|0;
+	r7 = r7 >> 2;
+	heap32[(r7+1)] = 1065353216;
+	r7 = r6 << 3;
+	r8 = heap32[(r5+2)];
+	r7 = (r7 + r8)|0;
+	r7 = r7 >> 2;
+	heap32[(r7+2)] = 1065353216;
+	f2 = heapFloat[(r4+15)];
+	f8 = heapFloat[(r4+14)];
+	f17 = heapFloat[(r4+13)];
+	heapFloat[(fp+-1)] = f17;
+}
+	r7 = heap32[(r5+3)];
+	r8 = r7 >> 2;
+	f17 = heapFloat[(fp+-3)];
+	f8 = f17-f8;
+	f17 = heapFloat[(fp+-2)];
+	f2 = f17-f2;
+	heap32[(r8)] = 0;
+	r9 = (r6 + 1)|0;
+	r10 = r6 << 2;
+	f17 = -f8;
+	heapFloat[(r8+1)] = f2;
+	r11 = (r6 + 2)|0;
+	r9 = r9 << 2;
+	r12 = (r7 + r10)|0;
+	heapFloat[(r8+2)] = f17;
+	r13 = (r6 + 3)|0;
+	r11 = r11 << 2;
+	r14 = (r7 + r9)|0;
+	r12 = r12 >> 2;
+	f2 = -f2;
+	heap32[(r8+3)] = 0;
+	r8 = r13 << 2;
+	r13 = (r7 + r11)|0;
+	r14 = r14 >> 2;
+	heapFloat[(r12)] = f2;
+	r12 = r6 << 3;
+	r15 = (r7 + r8)|0;
+	f17 = heapFloat[(fp+-4)];
+	f2 = heapFloat[(fp+-1)];
+	f2 = f17-f2;
+	r13 = r13 >> 2;
+	heap32[(r14)] = 0;
+	r14 = r12 | 4;
+	r16 = (r7 + r12)|0;
+	r15 = r15 >> 2;
+	heapFloat[(r13)] = f2;
+	r13 = (r12 + 8)|0;
+	r17 = (r7 + r14)|0;
+	r16 = r16 >> 2;
+	heap32[(r15)] = 0;
+	r15 = (r12 + 12)|0;
+	r18 = (r7 + r13)|0;
+	r17 = r17 >> 2;
+	f2 = -f2;
+	heapFloat[(r16)] = f8;
+	r7 = (r7 + r15)|0;
+	r16 = r18 >> 2;
+	heapFloat[(r17)] = f2;
+	r7 = r7 >> 2;
+	heap32[(r16)] = 0;
+	heap32[(r7)] = 0;
+	r7 = heap32[(r5+5)];
+	f2 = heapFloat[(r3+15)];
+	f8 = heapFloat[(r3+14)];
+	f17 = heapFloat[(r3+13)];
+	f2 = f11-f2;
+	r16 = r7 >> 2;
+	f18 = -f2;
+	heap32[(r16)] = 0;
+	f8 = f12-f8;
+	heapFloat[(r16+1)] = f18;
+	r17 = (r7 + r10)|0;
+	heapFloat[(r16+2)] = f8;
+	r9 = (r7 + r9)|0;
+	r17 = r17 >> 2;
+	heap32[(r16+3)] = 0;
+	f17 = f13-f17;
+	r11 = (r7 + r11)|0;
+	r9 = r9 >> 2;
+	heapFloat[(r17)] = f2;
+	r8 = (r7 + r8)|0;
+	r11 = r11 >> 2;
+	f2 = -f17;
+	heap32[(r9)] = 0;
+	r9 = (r7 + r12)|0;
+	r8 = r8 >> 2;
+	heapFloat[(r11)] = f2;
+	r11 = (r7 + r14)|0;
+	r9 = r9 >> 2;
+	f2 = -f8;
+	heap32[(r8)] = 0;
+	r8 = (r7 + r13)|0;
+	r11 = r11 >> 2;
+	heapFloat[(r9)] = f2;
+	r7 = (r7 + r15)|0;
+	r8 = r8 >> 2;
+	heapFloat[(r11)] = f17;
+	r7 = r7 >> 2;
+	heap32[(r8)] = 0;
+	heap32[(r7)] = 0;
+	f2 = heapFloat[(r5)];
+	f8 = heapFloat[(r5+1)];
+	f2 = f2*f8;
+	r7 = heapU8[r0+720];
+if(!(r7 !=0)) //_LBB596_67
+{
+	r6 = r6 << 1;
+	r7 = heap32[(r5+7)];
+	f8 = heapFloat[(fp+-4)];
+	f8 = f13-f8;
+	r7 = r7 >> 2;
+	f8 = f8*f2;
+	heapFloat[(r7)] = f8;
+	r7 = heap32[(r5+7)];
+	r7 = (r7 + r10)|0;
+	f8 = heapFloat[(fp+-3)];
+	f8 = f12-f8;
+	r7 = r7 >> 2;
+	f8 = f8*f2;
+	heapFloat[(r7)] = f8;
+	r6 = r6 << 2;
+	r7 = heap32[(r5+7)];
+	r6 = (r7 + r6)|0;
+	f8 = heapFloat[(fp+-2)];
+	f8 = f11-f8;
+	r6 = r6 >> 2;
+	f8 = f8*f2;
+	heapFloat[(r6)] = f8;
+}
+	r2 = (r2 + 4)|0;
+	r6 = heap32[(r5+6)];
+	r7 = (r6 * 3)|0;
+	r8 = heap32[(r5+3)];
+	r9 = r7 << 2;
+	r8 = (r8 + r9)|0;
+	r8 = r8 >> 2;
+	r10 = (r7 + 1)|0;
+	heapFloat[(r8)] = f7;
+	r8 = r10 << 2;
+	r10 = heap32[(r5+3)];
+	r10 = (r10 + r8)|0;
+	r10 = r10 >> 2;
+	r7 = (r7 + 2)|0;
+	heapFloat[(r10)] = f10;
+	r7 = r7 << 2;
+	r10 = heap32[(r5+3)];
+	r10 = (r10 + r7)|0;
+	r10 = r10 >> 2;
+	heapFloat[(r10)] = f4;
+	r6 = r6 << 4;
+	r10 = heap32[(r5+3)];
+	r10 = (r10 + r6)|0;
+	r10 = r10 >> 2;
+	heapFloat[(r10)] = f9;
+	r10 = r6 | 4;
+	r11 = heap32[(r5+3)];
+	r11 = (r11 + r10)|0;
+	r11 = r11 >> 2;
+	heapFloat[(r11)] = f5;
+	r11 = r6 | 8;
+	r12 = heap32[(r5+3)];
+	r12 = (r12 + r11)|0;
+	r12 = r12 >> 2;
+	heapFloat[(r12)] = f3;
+	r12 = heap32[(r5+5)];
+	r12 = (r12 + r9)|0;
+	r12 = r12 >> 2;
+	f8 = -f7;
+	heapFloat[(r12)] = f8;
+	r12 = heap32[(r5+5)];
+	r8 = (r12 + r8)|0;
+	r8 = r8 >> 2;
+	f8 = -f10;
+	heapFloat[(r8)] = f8;
+	r8 = heap32[(r5+5)];
+	r7 = (r8 + r7)|0;
+	r7 = r7 >> 2;
+	f8 = -f4;
+	heapFloat[(r7)] = f8;
+	r7 = heap32[(r5+5)];
+	r7 = (r7 + r6)|0;
+	r7 = r7 >> 2;
+	f8 = -f9;
+	heapFloat[(r7)] = f8;
+	r7 = heap32[(r5+5)];
+	r7 = (r7 + r10)|0;
+	r7 = r7 >> 2;
+	f8 = -f5;
+	heapFloat[(r7)] = f8;
+	r7 = heap32[(r5+5)];
+	r7 = (r7 + r11)|0;
+	f8 = f0*f14;
+	f11 = f1*f15;
+	f12 = f1*f16;
+	f13 = f6*f14;
+	f8 = f8-f11;
+	f11 = f12-f13;
+	f12 = f6*f15;
+	f13 = f0*f16;
+	r7 = r7 >> 2;
+	f14 = -f3;
+	f12 = f12-f13;
+	heapFloat[(r7)] = f14;
+	f7 = f8*f7;
+	f10 = f11*f10;
+	r7 = heap32[(r5+7)];
+	f7 = f7+f10;
+	f4 = f12*f4;
+	r7 = (r7 + r9)|0;
+	f4 = f7+f4;
+	r7 = r7 >> 2;
+	f4 = f4*f2;
+	heapFloat[(r7)] = f4;
+	f4 = f8*f9;
+	f5 = f11*f5;
+	r7 = heap32[(r5+7)];
+	f4 = f4+f5;
+	f3 = f12*f3;
+	r6 = (r7 + r6)|0;
+	f3 = f4+f3;
+	r6 = r6 >> 2;
+	f2 = f3*f2;
+	heapFloat[(r6)] = f2;
+	r6 = heapU8[r0+722];
+	if(r6 !=0) //_LBB596_69
+{
+	f2 = heapFloat[(r1+176)];
+	f3 = heapFloat[(r1+179)];
+	f2 = f2*f3;
+	f3 =                         0;
+	r6 = 1;
+	r7 = 2;
+	r6 = f2 > f3 ? r6 : r7;
+}
+else{
+	f2 =                         0;
+	r6 = 0;
+}
+	r7 = heapU8[r0+721];
+	r8 = 0;
+	r9 = r7 != r8;
+	r9 = r9 & 1;
+	r9 = r9 | r6;
+	if(r9 ==0) //_LBB596_59
+{
+__label__ = 54;
+break _1;
+}
+else{
+	r9 = heap32[(r5+6)];
+	r9 = (r9 * 5)|0;
+	r10 = heap32[(r5+3)];
+	r11 = r9 << 2;
+	r10 = (r10 + r11)|0;
+	r10 = r10 >> 2;
+	r12 = (r9 + 1)|0;
+	heapFloat[(r10)] = f6;
+	r10 = r12 << 2;
+	r12 = heap32[(r5+3)];
+	r12 = (r12 + r10)|0;
+	r12 = r12 >> 2;
+	r9 = (r9 + 2)|0;
+	heapFloat[(r12)] = f0;
+	r9 = r9 << 2;
+	r12 = heap32[(r5+3)];
+	r12 = (r12 + r9)|0;
+	r12 = r12 >> 2;
+	heapFloat[(r12)] = f1;
+	r12 = heap32[(r5+5)];
+	r12 = (r12 + r11)|0;
+	r12 = r12 >> 2;
+	f3 = -f6;
+	heapFloat[(r12)] = f3;
+	r12 = heap32[(r5+5)];
+	r10 = (r12 + r10)|0;
+	r10 = r10 >> 2;
+	f3 = -f0;
+	heapFloat[(r10)] = f3;
+	r10 = heap32[(r5+5)];
+	r9 = (r10 + r9)|0;
+	r9 = r9 >> 2;
+	f3 = -f1;
+	heapFloat[(r9)] = f3;
+	r9 = heap32[(r5+7)];
+	r9 = (r9 + r11)|0;
+	f3 = heapFloat[(r1+172)];
+	f4 = heapFloat[(r1+173)];
+	r9 = r9 >> 2;
+	heap32[(r9)] = 0;
+	r9 = r6 != r8;
+	r10 = f3 == f4;
+	r12 = heap32[(r1+183)];
+	r9 = r9 & r10;
+	r10 = r12 & 2;
+	if(r10 !=0) //_LBB596_73
+{
+	r2 = (r0 + 744)|0;
+}
+	r2 = r2 >> 2;
+	f5 = heapFloat[(r2)];
+	r2 = r7 == r8;
+	r2 = r9 | r2;
+if(!(r2 != 0)) //_LBB596_91
+{
+	r2 = r12 & 4;
+if(!(r2 ==0)) //_LBB596_77
+{
+	r2 = heap32[(r5+8)];
+	r2 = (r2 + r11)|0;
+	r2 = r2 >> 2;
+	heap32[(r2)] = heap32[(r1+184)];
+}
+	f7 =                         1;
+	f8 =                         0;
+	f9 = heapFloat[(r1+167)];
+_24: do {
+	if(f3 <f4) //_LBB596_79
+{
+	f10 = heapFloat[(r1+178)];
+	f11 = heapFloat[(r5)];
+	f11 = f11*f5;
+	f11 = f9/f11;
+	if(f11 >=f8) //_LBB596_84
+{
+	if(f11 >f8) //_LBB596_86
+{
+if(!(f10 >f4)) //_LBB596_89
+{
+	f8 = f4-f11;
+if(!(f8 >=f10)) //_LBB596_89
+{
+	f7 = f4-f10;
+	f8 = f7/f11;
+break _24;
+}
+}
+	f8 =                         0;
+	f8 = f10 > f4 ? f8 : f7;
+}
+else{
+break _24;
+}
+}
+else{
+if(!(f10 <f3)) //_LBB596_83
+{
+	f8 = f3-f11;
+if(!(f8 <=f10)) //_LBB596_83
+{
+	f7 = f3-f10;
+	f8 = f7/f11;
+break _24;
+}
+}
+	f8 =                         0;
+	f8 = f10 < f3 ? f8 : f7;
+}
+}
+else{
+	f8 = f3 > f4 ? f7 : f8;
+}
+} while(0);
+	r2 = heap32[(r5+7)];
+	r2 = (r2 + r11)|0;
+	r2 = r2 >> 2;
+	f7 = f9*f8;
+	f8 = heapFloat[(r1+179)];
+	f9 = heapFloat[(r2)];
+	f7 = f7*f8;
+	f7 = f9+f7;
+	heapFloat[(r2)] = f7;
+	r2 = heap32[(r5+9)];
+	f7 = heapFloat[(r1+168)];
+	r2 = (r2 + r11)|0;
+	r2 = r2 >> 2;
+	f7 = -f7;
+	heapFloat[(r2)] = f7;
+	r2 = heap32[(r5+10)];
+	r2 = (r2 + r11)|0;
+	r2 = r2 >> 2;
+	heap32[(r2)] = heap32[(r1+168)];
+}
+	if(r6 ==0) //_LBB596_59
+{
+__label__ = 54;
+break _1;
+}
+else{
+	r2 = heap32[(r5+7)];
+	r2 = (r2 + r11)|0;
+	f7 = heapFloat[(r5)];
+	r2 = r2 >> 2;
+	f5 = f7*f5;
+	f7 = heapFloat[(r2)];
+	f2 = f5*f2;
+	f2 = f7+f2;
+	heapFloat[(r2)] = f2;
+	r0 = heapU8[r0+732];
+	r0 = r0 & 1;
+if(!(r0 ==0)) //_LBB596_94
+{
+	r0 = heap32[(r5+8)];
+	r0 = (r0 + r11)|0;
+	r0 = r0 >> 2;
+	heap32[(r0)] = heap32[(r1+185)];
+}
+	if(f3 !=f4) //_LBB596_96
+{
+	r0 = heap32[(r5+9)];
+	if(r6 !=1) //_LBB596_98
+{
+	r0 = (r0 + r11)|0;
+	r0 = r0 >> 2;
+	heap32[(r0)] = -8388609;
+	r0 = heap32[(r5+10)];
+	r0 = (r0 + r11)|0;
+	r0 = r0 >> 2;
+	heap32[(r0)] = 0;
+}
+else{
+	r0 = (r0 + r11)|0;
+	r0 = r0 >> 2;
+	heap32[(r0)] = 0;
+	r0 = heap32[(r5+10)];
+	r0 = (r0 + r11)|0;
+	r0 = r0 >> 2;
+	heap32[(r0)] = 2139095039;
+}
+}
+else{
+	r0 = heap32[(r5+9)];
+	r0 = (r0 + r11)|0;
+	r0 = r0 >> 2;
+	heap32[(r0)] = -8388609;
+	r0 = heap32[(r5+10)];
+	r0 = (r0 + r11)|0;
+	r0 = r0 >> 2;
+	heap32[(r0)] = 2139095039;
+}
+	f2 = heapFloat[(r1+171)];
+	f3 =                         0;
+	if(f2 <=f3) //_LBB596_107
+{
+__label__ = 53;
+break _1;
+}
+else{
+	f4 = heapFloat[(r4+80)];
+	f5 = heapFloat[(r3+80)];
+	f7 = heapFloat[(r4+81)];
+	f8 = heapFloat[(r3+81)];
+	f4 = f4*f6;
+	f7 = f7*f0;
+	f9 = heapFloat[(r4+82)];
+	f10 = heapFloat[(r3+82)];
+	f5 = f5*f6;
+	f0 = f8*f0;
+	f4 = f4+f7;
+	f6 = f9*f1;
+	f0 = f5+f0;
+	f1 = f10*f1;
+	f4 = f4+f6;
+	f0 = f0+f1;
+	f0 = f4-f0;
+	if(r6 !=1) //_LBB596_104
+{
+	if(f0 <=f3) //_LBB596_107
+{
+__label__ = 53;
+break _1;
+}
+else{
+	r0 = heap32[(r5+7)];
+	f1 = -f2;
+	r0 = (r0 + r11)|0;
+	f0 = f0*f1;
+	r0 = r0 >> 2;
+	f1 = heapFloat[(r0)];
+	if(f1 <=f0) //_LBB596_107
+{
+__label__ = 53;
+break _1;
+}
+else{
+	heapFloat[(r0)] = f0;
+__label__ = 53;
+break _1;
+}
+}
+}
+else{
+	if(f0 >=f3) //_LBB596_107
+{
+__label__ = 53;
+break _1;
+}
+else{
+	r0 = heap32[(r5+7)];
+	f2 = -f2;
+	r0 = (r0 + r11)|0;
+	f0 = f0*f2;
+	r0 = r0 >> 2;
+	f2 = heapFloat[(r0)];
+	if(f2 >=f0) //_LBB596_107
+{
+__label__ = 53;
+break _1;
+}
+else{
+	heapFloat[(r0)] = f0;
+__label__ = 53;
+break _1;
+}
+}
+}
+}
+}
+}
+}
+else{
+	r0 = _2E_str1149;
+	r1 = _2E_str231;
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r1;
+	heap32[(g0+2)] = 331;
+	_assert(i7);
+}
+}
+else{
+	r5 = r5 & 255;
+	if(r5 ==0) //_LBB596_3
+{
+	r4 = r4 >> 2;
+	r3 = r3 >> 2;
+	f0 = heapFloat[(r3+9)];
+	heapFloat[(fp+-5)] = f0;
+	f1 = heapFloat[(r1+163)];
+	f0 = heapFloat[(r3+5)];
+	heapFloat[(fp+-6)] = f0;
+	f2 = heapFloat[(r3+1)];
+	heapFloat[(fp+-4)] = f2;
+	f0 = heapFloat[(r3+10)];
+	heapFloat[(fp+-7)] = f0;
+	f2 = heapFloat[(r1+164)];
+	f0 = heapFloat[(r3+6)];
+	heapFloat[(fp+-8)] = f0;
+	f3 = heapFloat[(r3+2)];
+	heapFloat[(fp+-9)] = f3;
+	f4 = heapFloat[(r4+9)];
+	f5 = heapFloat[(r1+147)];
+	f6 = heapFloat[(r4+5)];
+	f7 = heapFloat[(r4+1)];
+	f8 = heapFloat[(r4+10)];
+	f9 = heapFloat[(r1+148)];
+	f10 = heapFloat[(r4+6)];
+	f11 = heapFloat[(r4+2)];
+	f0 = heapFloat[(fp+-5)];
+	f12 = f0*f1;
+	f0 = heapFloat[(fp+-7)];
+	f13 = f0*f2;
+	f14 = heapFloat[(r3+11)];
+	heapFloat[(fp+-2)] = f14;
+	f15 = heapFloat[(r1+165)];
+	f16 = heapFloat[(r3+7)];
+	heapFloat[(fp+-3)] = f16;
+	f17 = heapFloat[(r3+3)];
+	heapFloat[(fp+-1)] = f17;
+	f18 = f4*f5;
+	f19 = f8*f9;
+	f20 = heapFloat[(r4+11)];
+	f21 = heapFloat[(r1+149)];
+	f22 = heapFloat[(r4+7)];
+	f23 = heapFloat[(r4+3)];
+	f0 = heapFloat[(fp+-6)];
+	f24 = f0*f1;
+	f0 = heapFloat[(fp+-8)];
+	f25 = f0*f2;
+	f26 = f6*f5;
+	f27 = f10*f9;
+	f28 = heapFloat[(fp+-4)];
+	f1 = f28*f1;
+	f2 = f3*f2;
+	f5 = f7*f5;
+	f9 = f11*f9;
+	f29 = heapFloat[(r1+137)];
+	f30 = heapFloat[(r1+141)];
+	f0 = heapFloat[(r1+136)];
+	f3 = heapFloat[(r1+140)];
+	f14 = heapFloat[(r1+153)];
+	f16 = heapFloat[(r1+157)];
+	f12 = f12+f13;
+	heapFloat[(fp+-14)] = f12;
+	f13 = heapFloat[(fp+-2)];
+	f17 = f13*f15;
+	f18 = f18+f19;
+	f19 = f20*f21;
+	f24 = f24+f25;
+	f25 = heapFloat[(fp+-3)];
+	f28 = f25*f15;
+	f26 = f26+f27;
+	f27 = f22*f21;
+	f1 = f1+f2;
+	heapFloat[(fp+-10)] = f1;
+	f2 = heapFloat[(fp+-1)];
+	f15 = f2*f15;
+	f5 = f5+f9;
+	heapFloat[(fp+-12)] = f5;
+	f9 = f23*f21;
+	f21 = heapFloat[(r1+145)];
+	f1 = heapFloat[(r1+144)];
+	f2 = heapFloat[(r1+161)];
+	f5 = heapFloat[(r3+84)];
+	f12 = heapFloat[(r4+84)];
+	f13 =   1.1920928955078125e-007;
+	heapFloat[(fp+-11)] = f13;
+	f25 = f29*f4;
+	heapFloat[(fp+-13)] = f25;
+	f25 = f30*f8;
+	f4 = f0*f4;
+	heapFloat[(fp+-16)] = f4;
+	f8 = f3*f8;
+	f4 = f29*f6;
+	heapFloat[(fp+-15)] = f4;
+	f4 = f30*f10;
+	f6 = f0*f6;
+	heapFloat[(fp+-18)] = f6;
+	f10 = f3*f10;
+	f29 = f29*f7;
+	f30 = f30*f11;
+	f0 = f0*f7;
+	heapFloat[(fp+-17)] = f0;
+	f3 = f3*f11;
+	f7 = heapFloat[(fp+-5)];
+	f0 = f14*f7;
+	heapFloat[(fp+-19)] = f0;
+	f6 = heapFloat[(fp+-7)];
+	f6 = f16*f6;
+	f7 = heapFloat[(fp+-6)];
+	f7 = f14*f7;
+	heapFloat[(fp+-5)] = f7;
+	f11 = heapFloat[(fp+-8)];
+	f11 = f16*f11;
+	f0 = heapFloat[(fp+-4)];
+	f0 = f14*f0;
+	heapFloat[(fp+-4)] = f0;
+	f14 = heapFloat[(fp+-9)];
+	f14 = f16*f14;
+	f16 = heapFloat[(fp+-14)];
+	f16 = f16+f17;
+	f17 = heapFloat[(r3+15)];
+	f18 = f18+f19;
+	f19 = heapFloat[(r4+15)];
+	f24 = f24+f28;
+	f28 = heapFloat[(r3+14)];
+	f26 = f26+f27;
+	f27 = heapFloat[(r4+14)];
+	f0 = heapFloat[(fp+-10)];
+	f0 = f0+f15;
+	f15 = heapFloat[(r3+13)];
+	f7 = heapFloat[(fp+-12)];
+	f7 = f7+f9;
+	f9 = heapFloat[(r4+13)];
+	r5 = r2 >> 2;
+	f16 = f16+f17;
+	f17 = f18+f19;
+	f18 = f24+f28;
+	f19 = f26+f27;
+	f0 = f0+f15;
+	f7 = f7+f9;
+	f9 = heapFloat[(fp+-13)];
+	f9 = f9+f25;
+	f15 = f21*f20;
+	f24 = heapFloat[(fp+-16)];
+	f8 = f24+f8;
+	f20 = f1*f20;
+	f24 = heapFloat[(fp+-15)];
+	f4 = f24+f4;
+	f24 = f21*f22;
+	f25 = heapFloat[(fp+-18)];
+	f10 = f25+f10;
+	f22 = f1*f22;
+	f25 = f29+f30;
+	f21 = f21*f23;
+	f26 = heapFloat[(fp+-17)];
+	f3 = f26+f3;
+	f1 = f1*f23;
+	f23 = heapFloat[(fp+-19)];
+	f6 = f23+f6;
+	f23 = heapFloat[(fp+-2)];
+	f23 = f2*f23;
+	f26 = heapFloat[(fp+-5)];
+	f11 = f26+f11;
+	f26 = heapFloat[(fp+-3)];
+	f26 = f2*f26;
+	f27 = heapFloat[(fp+-4)];
+	f14 = f27+f14;
+	f27 = heapFloat[(fp+-1)];
+	f2 = f2*f27;
+	r6 = f12 < f13;
+	r7 = f5 < f13;
+	f12 = f12+f5;
+	r8 = heap32[(r5+6)];
+	f9 = f9+f15;
+	heapFloat[(fp+-3)] = f9;
+	f8 = f8+f20;
+	f4 = f4+f24;
+	heapFloat[(fp+-2)] = f4;
+	f4 = f10+f22;
+	f9 = f25+f21;
+	heapFloat[(fp+-4)] = f9;
+	f1 = f3+f1;
+	f3 = f6+f23;
+	heapFloat[(fp+-7)] = f3;
+	f3 = f11+f26;
+	heapFloat[(fp+-6)] = f3;
+	f2 = f14+f2;
+	heapFloat[(fp+-5)] = f2;
+	f2 = f16-f17;
+	heapFloat[(fp+-8)] = f2;
+	f2 = f18-f19;
+	heapFloat[(fp+-9)] = f2;
+	f2 = f0-f7;
+	heapFloat[(fp+-10)] = f2;
+	r6 = r6 | r7;
+	f2 =                         0;
+	if(f12 >f2) //_LBB596_5
+{
+	f5 = f5/f12;
+}
+else{
+	f5 =                       0.5;
+}
+	f3 =                         1;
+	heapFloat[(fp+-1)] = f3;
+	f6 = f3-f5;
+	f9 = heapFloat[(fp+-4)];
+	f9 = f9*f5;
+	f10 = heapFloat[(fp+-5)];
+	f10 = f10*f6;
+	f11 = heapFloat[(fp+-2)];
+	f11 = f11*f5;
+	f12 = heapFloat[(fp+-6)];
+	f12 = f12*f6;
+	f9 = f9+f10;
+	f10 = f11+f12;
+	f11 = heapFloat[(fp+-3)];
+	f11 = f11*f5;
+	f12 = heapFloat[(fp+-7)];
+	f12 = f12*f6;
+	f11 = f11+f12;
+	f12 = f9*f9;
+	f13 = f10*f10;
+	f12 = f12+f13;
+	f13 = f11*f11;
+	f12 = f12+f13;
+	heapFloat[(g0)] = f12;
+	sqrtf(i7);
+	f3 = f3/f_g0;
+	f12 = heapFloat[(r3+13)];
+	f13 = heapFloat[(r3+14)];
+	f14 = heapFloat[(r4+13)];
+	f15 = heapFloat[(r4+14)];
+	f9 = f9*f3;
+	f0 = f0-f12;
+	f7 = f7-f14;
+	f10 = f10*f3;
+	f12 = f18-f13;
+	f13 = f19-f15;
+	f14 = heapFloat[(r3+15)];
+	f15 = heapFloat[(r4+15)];
+	f3 = f11*f3;
+	f11 = f16-f14;
+	f14 = f17-f15;
+	f15 = f0*f9;
+	f16 = f12*f10;
+	f17 = f7*f9;
+	f18 = f13*f10;
+	f15 = f15+f16;
+	f16 = f11*f3;
+	f17 = f17+f18;
+	f18 = f14*f3;
+	f15 = f15+f16;
+	f16 = f17+f18;
+	f17 = f10*f15;
+	f18 = f10*f16;
+	f19 = f9*f15;
+	f20 = f9*f16;
+	f15 = f3*f15;
+	f16 = f3*f16;
+	f12 = f12-f17;
+	f13 = f13-f18;
+	f0 = f0-f19;
+	f7 = f7-f20;
+	f11 = f11-f15;
+	f14 = f14-f16;
+	f21 = f12*f5;
+	f22 = f13*f6;
+	f23 = f0*f5;
+	f24 = f7*f6;
+	f21 = f21+f22;
+	f22 = f23+f24;
+	f23 = f11*f5;
+	f24 = f14*f6;
+	f15 = f16-f15;
+	f16 = f18-f17;
+	f17 = f20-f19;
+	f18 = f23+f24;
+	f19 = f22*f22;
+	f20 = f21*f21;
+	f23 = f15*f5;
+	f24 = f16*f5;
+	f25 = f17*f5;
+	f15 = f15*f6;
+	f16 = f16*f6;
+	f17 = f17*f6;
+	f19 = f19+f20;
+	f20 = f18*f18;
+	f19 = f19+f20;
+	r7 = r8 << 1;
+	f14 = f14+f23;
+	f13 = f13+f24;
+	f7 = f7+f25;
+	f11 = f11-f15;
+	f12 = f12-f16;
+	f0 = f0-f17;
+	f15 = heapFloat[(fp+-11)];
+	if(f19 >f15) //_LBB596_8
+{
+	heapFloat[(g0)] = f19;
+	sqrtf(i7);
+	f4 = heapFloat[(fp+-1)];
+	f8 = f4/f_g0;
+	f1 = f22*f8;
+	f4 = f21*f8;
+	f8 = f18*f8;
+}
+	r9 = heap32[(r5+3)];
+	f15 = f13*f8;
+	f16 = f14*f4;
+	r9 = r9 >> 2;
+	f15 = f15-f16;
+	heapFloat[(r9)] = f15;
+	r9 = heap32[(r5+3)];
+	f15 = f14*f1;
+	f16 = f7*f8;
+	r9 = r9 >> 2;
+	f15 = f15-f16;
+	heapFloat[(r9+1)] = f15;
+	r9 = heap32[(r5+3)];
+	f15 = f7*f4;
+	f16 = f13*f1;
+	r9 = r9 >> 2;
+	f15 = f15-f16;
+	heapFloat[(r9+2)] = f15;
+	f15 = f12*f8;
+	f16 = f11*f4;
+	f15 = f15-f16;
+	r9 = heap32[(r5+5)];
+	r9 = r9 >> 2;
+	f15 = -f15;
+	heapFloat[(r9)] = f15;
+	f15 = f11*f1;
+	f16 = f0*f8;
+	f15 = f15-f16;
+	r9 = heap32[(r5+5)];
+	f16 = f10*f8;
+	f17 = f3*f4;
+	f18 = f9*f4;
+	f19 = f10*f1;
+	f20 = f3*f1;
+	f21 = f9*f8;
+	r9 = r9 >> 2;
+	f15 = -f15;
+	f16 = f16-f17;
+	f17 = f18-f19;
+	f18 = f20-f21;
+	heapFloat[(r9+1)] = f15;
+	f15 = f0*f4;
+	f19 = f12*f1;
+	f15 = f15-f19;
+	r9 = heap32[(r5+5)];
+	f19 = f7*f18;
+	f20 = f13*f16;
+	f21 = f14*f16;
+	f22 = f7*f17;
+	f23 = f13*f17;
+	f24 = f14*f18;
+	f25 = f0*f18;
+	f26 = f12*f16;
+	f27 = f11*f16;
+	f28 = f0*f17;
+	f29 = f12*f17;
+	f30 = f11*f18;
+	f19 = f19-f20;
+	f20 = f21-f22;
+	f21 = f23-f24;
+	f22 = f25-f26;
+	f23 = f27-f28;
+	f24 = f29-f30;
+	r9 = r9 >> 2;
+	f15 = -f15;
+	heapFloat[(r9+2)] = f15;
+	if(r6 != 0) //_LBB596_11
+{
+	r9 = heapU8[r0+722];
+if(!(r9 ==0)) //_LBB596_10
+{
+	f24 = f24*f6;
+	f23 = f23*f6;
+	f22 = f22*f6;
+	f21 = f21*f5;
+	f20 = f20*f5;
+	f19 = f19*f5;
+}
+}
+	r9 = r8 << 2;
+	r10 = heap32[(r5+3)];
+	r10 = (r10 + r9)|0;
+	r10 = r10 >> 2;
+	r11 = (r8 + 1)|0;
+	heapFloat[(r10)] = f21;
+	r10 = r11 << 2;
+	r11 = heap32[(r5+3)];
+	r11 = (r11 + r10)|0;
+	r11 = r11 >> 2;
+	r12 = (r8 + 2)|0;
+	heapFloat[(r11)] = f20;
+	r11 = r12 << 2;
+	r12 = heap32[(r5+3)];
+	r12 = (r12 + r11)|0;
+	r12 = r12 >> 2;
+	heapFloat[(r12)] = f19;
+	r12 = heap32[(r5+5)];
+	r12 = (r12 + r9)|0;
+	r12 = r12 >> 2;
+	f15 = -f24;
+	heapFloat[(r12)] = f15;
+	r12 = heap32[(r5+5)];
+	r10 = (r12 + r10)|0;
+	r10 = r10 >> 2;
+	f15 = -f23;
+	heapFloat[(r10)] = f15;
+	r10 = heap32[(r5+5)];
+	r10 = (r10 + r11)|0;
+	f15 = f7*f10;
+	f19 = f13*f9;
+	f20 = f14*f9;
+	f7 = f7*f3;
+	f13 = f13*f3;
+	f14 = f14*f10;
+	f21 = f0*f10;
+	f23 = f12*f9;
+	f24 = f11*f9;
+	f0 = f0*f3;
+	f12 = f12*f3;
+	f11 = f11*f10;
+	f15 = f15-f19;
+	f7 = f20-f7;
+	f13 = f13-f14;
+	f14 = f21-f23;
+	f0 = f24-f0;
+	f11 = f12-f11;
+	r10 = r10 >> 2;
+	f12 = -f22;
+	heapFloat[(r10)] = f12;
+	if(r6 != 0) //_LBB596_15
+{
+	f11 = f11*f6;
+	f0 = f0*f6;
+	f14 = f14*f6;
+	f13 = f13*f5;
+	f7 = f7*f5;
+	f15 = f15*f5;
+}
+	r6 = r7 << 2;
+	r10 = heap32[(r5+3)];
+	r10 = (r10 + r6)|0;
+	r10 = r10 >> 2;
+	r11 = r7 | 1;
+	heapFloat[(r10)] = f13;
+	r10 = r11 << 2;
+	r11 = heap32[(r5+3)];
+	r11 = (r11 + r10)|0;
+	r11 = r11 >> 2;
+	r7 = (r7 + 2)|0;
+	heapFloat[(r11)] = f7;
+	r7 = r7 << 2;
+	r11 = heap32[(r5+3)];
+	r11 = (r11 + r7)|0;
+	r11 = r11 >> 2;
+	heapFloat[(r11)] = f15;
+	r11 = heap32[(r5+5)];
+	r11 = (r11 + r6)|0;
+	r11 = r11 >> 2;
+	f5 = -f11;
+	heapFloat[(r11)] = f5;
+	r11 = heap32[(r5+5)];
+	r11 = (r11 + r10)|0;
+	r11 = r11 >> 2;
+	f0 = -f0;
+	heapFloat[(r11)] = f0;
+	r11 = heap32[(r5+5)];
+	r7 = (r11 + r7)|0;
+	r7 = r7 >> 2;
+	f0 = -f14;
+	heapFloat[(r7)] = f0;
+	r7 = heapU8[r0+720];
+if(!(r7 !=0)) //_LBB596_18
+{
+	f0 = heapFloat[(r5)];
+	f5 = heapFloat[(r5+1)];
+	f0 = f0*f5;
+	r7 = heap32[(r5+2)];
+	r7 = r7 >> 2;
+	heapFloat[(r7)] = f1;
+	r7 = heap32[(r5+2)];
+	r7 = r7 >> 2;
+	heapFloat[(r7+1)] = f4;
+	r7 = heap32[(r5+2)];
+	r7 = r7 >> 2;
+	heapFloat[(r7+2)] = f8;
+	r7 = heap32[(r5+2)];
+	r7 = (r7 + r9)|0;
+	r7 = r7 >> 2;
+	heapFloat[(r7)] = f16;
+	r7 = heap32[(r5+2)];
+	r7 = (r7 + r9)|0;
+	r7 = r7 >> 2;
+	heapFloat[(r7+1)] = f18;
+	r7 = heap32[(r5+2)];
+	r7 = (r7 + r9)|0;
+	r7 = r7 >> 2;
+	heapFloat[(r7+2)] = f17;
+	r7 = heap32[(r5+2)];
+	r7 = (r7 + r6)|0;
+	r7 = r7 >> 2;
+	heapFloat[(r7)] = f9;
+	r7 = heap32[(r5+2)];
+	r7 = (r7 + r10)|0;
+	r7 = r7 >> 2;
+	heapFloat[(r7)] = f10;
+	r7 = heap32[(r5+2)];
+	r7 = (r7 + r6)|0;
+	r7 = r7 >> 2;
+	f5 = heapFloat[(fp+-10)];
+	f6 = f1*f5;
+	f7 = heapFloat[(fp+-9)];
+	f11 = f4*f7;
+	heapFloat[(r7+2)] = f3;
+	f6 = f6+f11;
+	f11 = heapFloat[(fp+-8)];
+	f12 = f8*f11;
+	r7 = heap32[(r5+7)];
+	f6 = f6+f12;
+	r7 = r7 >> 2;
+	f6 = f6*f0;
+	heapFloat[(r7)] = f6;
+	f6 = f16*f5;
+	f12 = f18*f7;
+	r7 = heap32[(r5+7)];
+	f6 = f6+f12;
+	f12 = f17*f11;
+	r7 = (r7 + r9)|0;
+	f6 = f6+f12;
+	r7 = r7 >> 2;
+	f6 = f6*f0;
+	heapFloat[(r7)] = f6;
+	f5 = f9*f5;
+	f6 = f10*f7;
+	r7 = heap32[(r5+7)];
+	f5 = f5+f6;
+	f6 = f3*f11;
+	r6 = (r7 + r6)|0;
+	f5 = f5+f6;
+	r6 = r6 >> 2;
+	f0 = f5*f0;
+	heapFloat[(r6)] = f0;
+}
+	r2 = (r2 + 4)|0;
+	r6 = (r8 * 3)|0;
+	r7 = r6 << 2;
+	r9 = heap32[(r5+3)];
+	r9 = (r9 + r7)|0;
+	r9 = r9 >> 2;
+	r10 = (r6 + 1)|0;
+	heapFloat[(r9)] = f1;
+	r9 = r10 << 2;
+	r10 = heap32[(r5+3)];
+	r10 = (r10 + r9)|0;
+	r10 = r10 >> 2;
+	r6 = (r6 + 2)|0;
+	heapFloat[(r10)] = f4;
+	r6 = r6 << 2;
+	r10 = heap32[(r5+3)];
+	r10 = (r10 + r6)|0;
+	r10 = r10 >> 2;
+	heapFloat[(r10)] = f8;
+	r8 = r8 << 4;
+	r10 = heap32[(r5+3)];
+	r10 = (r10 + r8)|0;
+	r10 = r10 >> 2;
+	heapFloat[(r10)] = f16;
+	r10 = r8 | 4;
+	r11 = heap32[(r5+3)];
+	r11 = (r11 + r10)|0;
+	r11 = r11 >> 2;
+	heapFloat[(r11)] = f18;
+	r11 = r8 | 8;
+	r12 = heap32[(r5+3)];
+	r12 = (r12 + r11)|0;
+	r12 = r12 >> 2;
+	heapFloat[(r12)] = f17;
+	r12 = heap32[(r5+5)];
+	r12 = (r12 + r7)|0;
+	r12 = r12 >> 2;
+	f0 = -f1;
+	heapFloat[(r12)] = f0;
+	r12 = heap32[(r5+5)];
+	r9 = (r12 + r9)|0;
+	r9 = r9 >> 2;
+	f0 = -f4;
+	heapFloat[(r9)] = f0;
+	r9 = heap32[(r5+5)];
+	r6 = (r9 + r6)|0;
+	r6 = r6 >> 2;
+	f0 = -f8;
+	heapFloat[(r6)] = f0;
+	r6 = heap32[(r5+5)];
+	r6 = (r6 + r8)|0;
+	r6 = r6 >> 2;
+	f0 = -f16;
+	heapFloat[(r6)] = f0;
+	r6 = heap32[(r5+5)];
+	r6 = (r6 + r10)|0;
+	r6 = r6 >> 2;
+	f0 = -f18;
+	heapFloat[(r6)] = f0;
+	r6 = heap32[(r5+5)];
+	r6 = (r6 + r11)|0;
+	f5 = heapFloat[(fp+-7)];
+	f0 = heapFloat[(fp+-2)];
+	f6 = f0*f5;
+	f11 = heapFloat[(fp+-6)];
+	f7 = heapFloat[(fp+-3)];
+	f12 = f7*f11;
+	f13 = heapFloat[(fp+-5)];
+	f7 = f7*f13;
+	f14 = heapFloat[(fp+-4)];
+	f5 = f14*f5;
+	f6 = f6-f12;
+	f5 = f7-f5;
+	f7 = f14*f11;
+	f0 = f0*f13;
+	r6 = r6 >> 2;
+	f11 = -f17;
+	heapFloat[(r6)] = f11;
+	f0 = f7-f0;
+	f1 = f6*f1;
+	f4 = f5*f4;
+	r6 = heap32[(r5+7)];
+	f1 = f1+f4;
+	f4 = f0*f8;
+	f7 = heapFloat[(r5)];
+	f8 = heapFloat[(r5+1)];
+	r6 = (r6 + r7)|0;
+	f1 = f1+f4;
+	f4 = f7*f8;
+	r6 = r6 >> 2;
+	f1 = f1*f4;
+	heapFloat[(r6)] = f1;
+	f1 = f6*f16;
+	f5 = f5*f18;
+	r6 = heap32[(r5+7)];
+	f1 = f1+f5;
+	f0 = f0*f17;
+	r6 = (r6 + r8)|0;
+	f0 = f1+f0;
+	r6 = r6 >> 2;
+	f0 = f0*f4;
+	heapFloat[(r6)] = f0;
+	r6 = heapU8[r0+722];
+	if(r6 !=0) //_LBB596_20
+{
+	f0 = heapFloat[(r1+176)];
+	f1 = heapFloat[(r1+179)];
+	f0 = f0*f1;
+	r6 = 1;
+	r7 = 2;
+	r6 = f0 > f2 ? r6 : r7;
+}
+else{
+	f0 =                         0;
+	r6 = 0;
+}
+	r7 = heapU8[r0+721];
+	r8 = 0;
+	r9 = r7 != r8;
+	r9 = r9 & 1;
+	r9 = r9 | r6;
+	if(r9 ==0) //_LBB596_59
+{
+__label__ = 54;
+}
+else{
+	r9 = heap32[(r5+6)];
+	r9 = (r9 * 5)|0;
+	r10 = heap32[(r5+3)];
+	r11 = r9 << 2;
+	r10 = (r10 + r11)|0;
+	r10 = r10 >> 2;
+	r12 = (r9 + 1)|0;
+	heapFloat[(r10)] = f9;
+	r10 = r12 << 2;
+	r12 = heap32[(r5+3)];
+	r12 = (r12 + r10)|0;
+	r12 = r12 >> 2;
+	r9 = (r9 + 2)|0;
+	heapFloat[(r12)] = f10;
+	r9 = r9 << 2;
+	r12 = heap32[(r5+3)];
+	r12 = (r12 + r9)|0;
+	r12 = r12 >> 2;
+	heapFloat[(r12)] = f3;
+	r12 = heap32[(r5+5)];
+	r12 = (r12 + r11)|0;
+	r12 = r12 >> 2;
+	f1 = -f9;
+	heapFloat[(r12)] = f1;
+	r12 = heap32[(r5+5)];
+	r10 = (r12 + r10)|0;
+	r10 = r10 >> 2;
+	f1 = -f10;
+	heapFloat[(r10)] = f1;
+	r10 = heap32[(r5+5)];
+	r9 = (r10 + r9)|0;
+	r9 = r9 >> 2;
+	f1 = -f3;
+	heapFloat[(r9)] = f1;
+	r9 = heap32[(r5+7)];
+	r9 = (r9 + r11)|0;
+	f1 = heapFloat[(r1+172)];
+	f4 = heapFloat[(r1+173)];
+	r9 = r9 >> 2;
+	heap32[(r9)] = 0;
+	r9 = r6 != r8;
+	r10 = f1 == f4;
+	r12 = heap32[(r1+183)];
+	r9 = r9 & r10;
+	r10 = r12 & 2;
+	if(r10 !=0) //_LBB596_24
+{
+	r2 = (r0 + 744)|0;
+}
+	r2 = r2 >> 2;
+	f5 = heapFloat[(r2)];
+	r2 = r7 == r8;
+	r2 = r9 | r2;
+if(!(r2 != 0)) //_LBB596_42
+{
+	r2 = r12 & 4;
+if(!(r2 ==0)) //_LBB596_28
+{
+	r2 = heap32[(r5+8)];
+	r2 = (r2 + r11)|0;
+	r2 = r2 >> 2;
+	heap32[(r2)] = heap32[(r1+184)];
+}
+	f6 = heapFloat[(r1+167)];
+_94: do {
+	if(f1 <f4) //_LBB596_30
+{
+	f7 = heapFloat[(r1+178)];
+	f8 = heapFloat[(r5)];
+	f8 = f8*f5;
+	f8 = f6/f8;
+	if(f8 >=f2) //_LBB596_35
+{
+	if(f8 >f2) //_LBB596_37
+{
+if(!(f7 >f4)) //_LBB596_40
+{
+	f2 = f4-f8;
+if(!(f2 >=f7)) //_LBB596_40
+{
+	f2 = f4-f7;
+	f2 = f2/f8;
+break _94;
+}
+}
+	f2 =                         0;
+	f8 = heapFloat[(fp+-1)];
+	f2 = f7 > f4 ? f2 : f8;
+}
+else{
+break _94;
+}
+}
+else{
+if(!(f7 <f1)) //_LBB596_34
+{
+	f2 = f1-f8;
+if(!(f2 <=f7)) //_LBB596_34
+{
+	f2 = f1-f7;
+	f2 = f2/f8;
+break _94;
+}
+}
+	f2 =                         0;
+	f8 = heapFloat[(fp+-1)];
+	f2 = f7 < f1 ? f2 : f8;
+}
+}
+else{
+	f7 = heapFloat[(fp+-1)];
+	f2 = f1 > f4 ? f7 : f2;
+}
+} while(0);
+	r2 = heap32[(r5+7)];
+	r2 = (r2 + r11)|0;
+	r2 = r2 >> 2;
+	f2 = f6*f2;
+	f6 = heapFloat[(r1+179)];
+	f7 = heapFloat[(r2)];
+	f2 = f2*f6;
+	f2 = f7+f2;
+	heapFloat[(r2)] = f2;
+	r2 = heap32[(r5+9)];
+	f2 = heapFloat[(r1+168)];
+	r2 = (r2 + r11)|0;
+	r2 = r2 >> 2;
+	f2 = -f2;
+	heapFloat[(r2)] = f2;
+	r2 = heap32[(r5+10)];
+	r2 = (r2 + r11)|0;
+	r2 = r2 >> 2;
+	heap32[(r2)] = heap32[(r1+168)];
+}
+	if(r6 ==0) //_LBB596_59
+{
+__label__ = 54;
+}
+else{
+	r2 = heap32[(r5+7)];
+	r2 = (r2 + r11)|0;
+	f2 = heapFloat[(r5)];
+	r2 = r2 >> 2;
+	f2 = f2*f5;
+	f5 = heapFloat[(r2)];
+	f0 = f2*f0;
+	f0 = f5+f0;
+	heapFloat[(r2)] = f0;
+	r0 = heapU8[r0+732];
+	r0 = r0 & 1;
+if(!(r0 ==0)) //_LBB596_45
+{
+	r0 = heap32[(r5+8)];
+	r0 = (r0 + r11)|0;
+	r0 = r0 >> 2;
+	heap32[(r0)] = heap32[(r1+185)];
+}
+	if(f1 !=f4) //_LBB596_47
+{
+	r0 = heap32[(r5+9)];
+	if(r6 !=1) //_LBB596_49
+{
+	r0 = (r0 + r11)|0;
+	r0 = r0 >> 2;
+	heap32[(r0)] = -8388609;
+	r0 = heap32[(r5+10)];
+	r0 = (r0 + r11)|0;
+	r0 = r0 >> 2;
+	heap32[(r0)] = 0;
+}
+else{
+	r0 = (r0 + r11)|0;
+	r0 = r0 >> 2;
+	heap32[(r0)] = 0;
+	r0 = heap32[(r5+10)];
+	r0 = (r0 + r11)|0;
+	r0 = r0 >> 2;
+	heap32[(r0)] = 2139095039;
+}
+}
+else{
+	r0 = heap32[(r5+9)];
+	r0 = (r0 + r11)|0;
+	r0 = r0 >> 2;
+	heap32[(r0)] = -8388609;
+	r0 = heap32[(r5+10)];
+	r0 = (r0 + r11)|0;
+	r0 = r0 >> 2;
+	heap32[(r0)] = 2139095039;
+}
+	f0 = heapFloat[(r1+171)];
+	f1 =                         0;
+	if(f0 <=f1) //_LBB596_58
+{
+__label__ = 53;
+}
+else{
+	f2 = heapFloat[(r4+80)];
+	f4 = heapFloat[(r3+80)];
+	f5 = heapFloat[(r4+81)];
+	f6 = heapFloat[(r3+81)];
+	f2 = f2*f9;
+	f5 = f5*f10;
+	f7 = heapFloat[(r4+82)];
+	f8 = heapFloat[(r3+82)];
+	f4 = f4*f9;
+	f6 = f6*f10;
+	f2 = f2+f5;
+	f5 = f7*f3;
+	f4 = f4+f6;
+	f3 = f8*f3;
+	f2 = f2+f5;
+	f3 = f4+f3;
+	f2 = f2-f3;
+	if(r6 !=1) //_LBB596_55
+{
+	if(f2 <=f1) //_LBB596_58
+{
+__label__ = 53;
+}
+else{
+	r0 = heap32[(r5+7)];
+	f0 = -f0;
+	r0 = (r0 + r11)|0;
+	f0 = f2*f0;
+	r0 = r0 >> 2;
+	f1 = heapFloat[(r0)];
+	if(f1 <=f0) //_LBB596_58
+{
+__label__ = 53;
+}
+else{
+	heapFloat[(r0)] = f0;
+__label__ = 53;
+}
+}
+}
+else{
+	if(f2 >=f1) //_LBB596_58
+{
+__label__ = 53;
+}
+else{
+	r0 = heap32[(r5+7)];
+	f0 = -f0;
+	r0 = (r0 + r11)|0;
+	f0 = f2*f0;
+	r0 = r0 >> 2;
+	f1 = heapFloat[(r0)];
+	if(f1 >=f0) //_LBB596_58
+{
+__label__ = 53;
+}
+else{
+	heapFloat[(r0)] = f0;
+__label__ = 53;
+}
+}
+}
+}
+}
+}
+}
+else{
+	r0 = _2E_str1149;
+	r1 = _2E_str231;
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r1;
+	heap32[(g0+2)] = 682;
+	_assert(i7);
+}
+}
+} while(0);
+if (__label__ == 53){
+	r0 = heap32[(r5+7)];
+	r0 = (r0 + r11)|0;
+	r0 = r0 >> 2;
+	f0 = heapFloat[(r0)];
+	f1 = heapFloat[(r1+170)];
+	f0 = f0*f1;
+	heapFloat[(r0)] = f0;
+}
+	return;
+}
+
+function _ZN17btHingeConstraint8setParamEifi(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var f0;
+var __label__ = 0;
+	i7 = sp + -16;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp+3)];
+if(!(r0 ==-1)) //_LBB597_2
+{
+	if(r0 !=5) //_LBB597_9
+{
+	r0 = _2E_str10;
+	r1 = _2E_str231;
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r1;
+	heap32[(g0+2)] = 969;
+	_assert(i7);
+}
+}
+	r0 = heap32[(fp)];
+	r1 = heap32[(fp+1)];
+	f0 = heapFloat[(fp+2)];
+	if(r1 ==4) //_LBB597_6
+{
+	r0 = r0 >> 2;
+	heapFloat[(r0+185)] = f0;
+	r1 = heap32[(r0+183)];
+	r1 = r1 | 1;
+	heap32[(r0+183)] = r1;
+	return;
+}
+else{
+	if(r1 ==3) //_LBB597_7
+{
+	r0 = r0 >> 2;
+	heapFloat[(r0+184)] = f0;
+	r1 = heap32[(r0+183)];
+	r1 = r1 | 4;
+	heap32[(r0+183)] = r1;
+	return;
+}
+else{
+	if(r1 !=2) //_LBB597_8
+{
+	r0 = _2E_str10;
+	r1 = _2E_str231;
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r1;
+	heap32[(g0+2)] = 964;
+	_assert(i7);
+}
+else{
+	r0 = r0 >> 2;
+	heapFloat[(r0+186)] = f0;
+	r1 = heap32[(r0+183)];
+	r1 = r1 | 2;
+	heap32[(r0+183)] = r1;
+	return;
+}
+}
+}
+}
+
+function _ZNK17btHingeConstraint8getParamEii(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var f0;
+var __label__ = 0;
+	i7 = sp + -16;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp+2)];
+if(!(r0 ==-1)) //_LBB598_2
+{
+	if(r0 !=5) //_LBB598_15
+{
+	r0 = _2E_str10;
+	r1 = _2E_str231;
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r1;
+	heap32[(g0+2)] = 999;
+	_assert(i7);
+}
+}
+	r0 = heap32[(fp)];
+	r1 = heap32[(fp+1)];
+	if(r1 ==4) //_LBB598_8
+{
+	r1 = heapU8[r0+732];
+	r1 = r1 & 1;
+	if(r1 != 0) //_LBB598_10
+{
+	r0 = (r0 + 740)|0;
+}
+else{
+	r0 = _2E_str332;
+	r1 = _2E_str231;
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r1;
+	heap32[(g0+2)] = 986;
+	_assert(i7);
+}
+}
+else{
+	if(r1 ==3) //_LBB598_11
+{
+	r1 = heapU8[r0+732];
+	r1 = r1 & 4;
+	if(r1 !=0) //_LBB598_13
+{
+	r0 = (r0 + 736)|0;
+}
+else{
+	r0 = _2E_str433;
+	r1 = _2E_str231;
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r1;
+	heap32[(g0+2)] = 990;
+	_assert(i7);
+}
+}
+else{
+	if(r1 !=2) //_LBB598_14
+{
+	r0 = _2E_str10;
+	r1 = _2E_str231;
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r1;
+	heap32[(g0+2)] = 994;
+	_assert(i7);
+}
+else{
+	r1 = heapU8[r0+732];
+	r1 = r1 & 2;
+	if(r1 !=0) //_LBB598_7
+{
+	r0 = (r0 + 744)|0;
+}
+else{
+	r0 = _2E_str130;
+	r1 = _2E_str231;
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r1;
+	heap32[(g0+2)] = 982;
+	_assert(i7);
+}
+}
+}
+}
+	r0 = r0 >> 2;
+	f0 = heapFloat[(r0)];
+	f_g0 = f0;
+	return;
+}
+
+function _ZN17btHingeConstraint13getHingeAngleERK11btTransformS2_(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var f0;
+	var f1;
+	var f2;
+	var f3;
+	var f4;
+	var f5;
+	var f6;
+	var f7;
+	var f8;
+	var f9;
+	var f10;
+	var f11;
+	var f12;
+	var f13;
+	var f14;
+	var f15;
+	var f16;
+	var f17;
+	var f18;
+	var f19;
+	var f20;
+	var f21;
+	var f22;
+	var f23;
+	var f24;
+	var f25;
+	var f26;
+	var f27;
+	var f28;
+	var f29;
+	var f30;
+var __label__ = 0;
+	i7 = sp + -8;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp+1)];
+	r1 = heap32[(fp+2)];
+	r2 = heap32[(fp)];
+	r0 = r0 >> 2;
+	r1 = r1 >> 2;
+	r2 = r2 >> 2;
+	f0 = heapFloat[(r2+135)];
+	f1 = heapFloat[(r0+4)];
+	f2 = heapFloat[(r0)];
+	f3 = heapFloat[(r2+136)];
+	f4 = heapFloat[(r2+139)];
+	f5 = heapFloat[(r0+5)];
+	f6 = heapFloat[(r0+1)];
+	f7 = heapFloat[(r2+140)];
+	f8 = heapFloat[(r2+152)];
+	f9 = heapFloat[(r1+4)];
+	f10 = heapFloat[(r1)];
+	f11 = heapFloat[(r2+156)];
+	f12 = heapFloat[(r1+5)];
+	f13 = heapFloat[(r1+1)];
+	f14 = heapFloat[(r0+8)];
+	f15 = heapFloat[(r0+9)];
+	f16 = heapFloat[(r1+8)];
+	f17 = heapFloat[(r1+9)];
+	f18 = f2*f0;
+	f19 = f6*f4;
+	f20 = f1*f0;
+	f21 = f5*f4;
+	f10 = f10*f8;
+	f13 = f13*f11;
+	f2 = f2*f3;
+	f6 = f6*f7;
+	f9 = f9*f8;
+	f12 = f12*f11;
+	f1 = f1*f3;
+	f5 = f5*f7;
+	f22 = heapFloat[(r2+143)];
+	f23 = heapFloat[(r0+6)];
+	f24 = heapFloat[(r0+2)];
+	f25 = heapFloat[(r2+144)];
+	f26 = heapFloat[(r2+160)];
+	f27 = heapFloat[(r1+6)];
+	f28 = heapFloat[(r1+2)];
+	f29 = heapFloat[(r0+10)];
+	f30 = heapFloat[(r1+10)];
+	f18 = f18+f19;
+	f19 = f24*f22;
+	f20 = f20+f21;
+	f21 = f23*f22;
+	f0 = f14*f0;
+	f4 = f15*f4;
+	f10 = f10+f13;
+	f13 = f28*f26;
+	f2 = f2+f6;
+	f6 = f24*f25;
+	f9 = f9+f12;
+	f12 = f27*f26;
+	f1 = f1+f5;
+	f5 = f23*f25;
+	f8 = f16*f8;
+	f11 = f17*f11;
+	f3 = f14*f3;
+	f7 = f15*f7;
+	f14 = f18+f19;
+	f10 = f10+f13;
+	f2 = f2+f6;
+	f6 = f20+f21;
+	f9 = f9+f12;
+	f1 = f1+f5;
+	f0 = f0+f4;
+	f4 = f29*f22;
+	f5 = f8+f11;
+	f8 = f30*f26;
+	f3 = f3+f7;
+	f7 = f29*f25;
+	f11 = f10*f14;
+	f6 = f9*f6;
+	f0 = f0+f4;
+	f4 = f5+f8;
+	f3 = f3+f7;
+	f2 = f10*f2;
+	f1 = f9*f1;
+	f5 = f11+f6;
+	f0 = f4*f0;
+	f1 = f2+f1;
+	f2 = f4*f3;
+	f0 = f5+f0;
+	f1 = f1+f2;
+	heapFloat[(g0)] = f0;
+	heapFloat[(g0+1)] = f1;
+	atan2f(i7);
+	f1 = heapFloat[(r2+179)];
+	f0 = f1*f_g0;
+	f_g0 = f0;
+	return;
+}
+
+function _ZN18btConstraintSolver12prepareSolveEii(sp)
+{
+	var i7;
+	var fp = sp>>2;
+var __label__ = 0;
+	i7 = sp + 0;var g0 = i7>>2; // save stack
+	return;
+}
+
+function _ZN18btConstraintSolver9allSolvedERK19btContactSolverInfoP12btIDebugDrawP12btStackAlloc(sp)
+{
+	var i7;
+	var fp = sp>>2;
+var __label__ = 0;
+	i7 = sp + 0;var g0 = i7>>2; // save stack
+	return;
+}
+
+function _ZN35btSequentialImpulseConstraintSolver33resolveSingleConstraintRowGenericER11btRigidBodyS1_RK18btSolverConstraint(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var f0;
+	var f1;
+	var f2;
+	var f3;
+	var f4;
+	var f5;
+	var f6;
+	var f7;
+	var f8;
+	var f9;
+	var f10;
+	var f11;
+	var f12;
+	var f13;
+	var f14;
+	var f15;
+	var f16;
+var __label__ = 0;
+	i7 = sp + 0;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = heap32[(fp+2)];
+	r1 = r1 >> 2;
+	r0 = r0 >> 2;
+	r2 = heap32[(fp+1)];
+	r2 = r2 >> 2;
+	f0 = heapFloat[(r1+4)];
+	f1 = heapFloat[(r0+126)];
+	f2 = heapFloat[(r1+5)];
+	f3 = heapFloat[(r0+127)];
+	f4 = heapFloat[(r1)];
+	f5 = heapFloat[(r0+130)];
+	f6 = heapFloat[(r1+1)];
+	f7 = heapFloat[(r0+131)];
+	f8 = heapFloat[(r2+126)];
+	f9 = heapFloat[(r2+127)];
+	f10 = heapFloat[(r1+6)];
+	f11 = heapFloat[(r0+128)];
+	f1 = f0*f1;
+	f3 = f2*f3;
+	f4 = f4*f5;
+	f5 = f6*f7;
+	f6 = heapFloat[(r1+2)];
+	f7 = heapFloat[(r0+132)];
+	f12 = heapFloat[(r1+8)];
+	f13 = heapFloat[(r2+130)];
+	f14 = heapFloat[(r1+9)];
+	f15 = heapFloat[(r2+131)];
+	f16 = heapFloat[(r2+128)];
+	f1 = f1+f3;
+	f3 = f10*f11;
+	f4 = f4+f5;
+	f5 = f6*f7;
+	f6 = f12*f13;
+	f7 = f14*f15;
+	f11 = heapFloat[(r1+10)];
+	f12 = heapFloat[(r2+132)];
+	f8 = f0*f8;
+	f9 = f2*f9;
+	f13 = heapFloat[(r1+21)];
+	f14 = heapFloat[(r1+30)];
+	f1 = f1+f3;
+	f3 = f4+f5;
+	f4 = f6+f7;
+	f5 = f11*f12;
+	f6 = f8+f9;
+	f7 = f10*f16;
+	f8 = heapFloat[(r1+29)];
+	f9 = f13*f14;
+	f1 = f1+f3;
+	f3 = heapFloat[(r1+23)];
+	f4 = f4+f5;
+	f5 = f6+f7;
+	f4 = f4-f5;
+	f5 = f8-f9;
+	f1 = f3*f1;
+	f1 = f5-f1;
+	f3 = f3*f4;
+	f1 = f1-f3;
+	f3 = heapFloat[(r1+31)];
+	f4 = f13+f1;
+	if(f3 <=f4) //_LBB602_2
+{
+	f3 = heapFloat[(r1+32)];
+	if(f3 >=f4) //_LBB602_4
+{
+	heapFloat[(r1+21)] = f4;
+}
+else{
+	f1 = f3-f13;
+	heapFloat[(r1+21)] = f3;
+}
+}
+else{
+	f1 = f3-f13;
+	heapFloat[(r1+21)] = f3;
+}
+	f3 = heapFloat[(r0+84)];
+	f4 =                         0;
+if(!(f3 ==f4)) //_LBB602_7
+{
+	f3 = heapFloat[(r0+138)];
+	f0 = f0*f3;
+	f0 = f0*f1;
+	f3 = heapFloat[(r0+126)];
+	f5 = heapFloat[(r0+139)];
+	f6 = heapFloat[(r0+140)];
+	f0 = f3+f0;
+	f2 = f2*f5;
+	heapFloat[(r0+126)] = f0;
+	f0 = f2*f1;
+	f2 = heapFloat[(r0+127)];
+	f0 = f2+f0;
+	f2 = f10*f6;
+	heapFloat[(r0+127)] = f0;
+	f0 = f2*f1;
+	f2 = heapFloat[(r0+128)];
+	f0 = f2+f0;
+	heapFloat[(r0+128)] = f0;
+	f0 = heapFloat[(r0+134)];
+	f0 = f0*f1;
+	f2 = heapFloat[(r1+12)];
+	f3 = heapFloat[(r0+136)];
+	f5 = heapFloat[(r0+135)];
+	f0 = f2*f0;
+	f2 = heapFloat[(r0+130)];
+	f6 = heapFloat[(r1+14)];
+	f7 = heapFloat[(r1+13)];
+	f0 = f2+f0;
+	f2 = f5*f1;
+	heapFloat[(r0+130)] = f0;
+	f0 = f7*f2;
+	f2 = heapFloat[(r0+131)];
+	f0 = f2+f0;
+	f2 = f3*f1;
+	heapFloat[(r0+131)] = f0;
+	f0 = f6*f2;
+	f2 = heapFloat[(r0+132)];
+	f0 = f2+f0;
+	heapFloat[(r0+132)] = f0;
+}
+	f0 = heapFloat[(r2+84)];
+if(!(f0 ==f4)) //_LBB602_9
+{
+	f0 = heapFloat[(r1+4)];
+	f2 = heapFloat[(r2+138)];
+	f0 = f2*f0;
+	f0 = f0*f1;
+	f2 = heapFloat[(r2+126)];
+	f3 = heapFloat[(r1+5)];
+	f4 = heapFloat[(r2+139)];
+	f5 = heapFloat[(r1+6)];
+	f6 = heapFloat[(r2+140)];
+	f0 = f2-f0;
+	f2 = f4*f3;
+	heapFloat[(r2+126)] = f0;
+	f0 = f2*f1;
+	f2 = heapFloat[(r2+127)];
+	f0 = f2-f0;
+	f2 = f6*f5;
+	heapFloat[(r2+127)] = f0;
+	f0 = f2*f1;
+	f2 = heapFloat[(r2+128)];
+	f0 = f2-f0;
+	heapFloat[(r2+128)] = f0;
+	f0 = heapFloat[(r2+134)];
+	f0 = f0*f1;
+	f2 = heapFloat[(r1+16)];
+	f3 = heapFloat[(r2+136)];
+	f4 = heapFloat[(r2+135)];
+	f0 = f2*f0;
+	f2 = heapFloat[(r2+130)];
+	f5 = heapFloat[(r1+18)];
+	f6 = heapFloat[(r1+17)];
+	f0 = f2+f0;
+	f2 = f4*f1;
+	heapFloat[(r2+130)] = f0;
+	f0 = f6*f2;
+	f2 = heapFloat[(r2+131)];
+	f0 = f2+f0;
+	f1 = f3*f1;
+	heapFloat[(r2+131)] = f0;
+	f0 = f5*f1;
+	f1 = heapFloat[(r2+132)];
+	f0 = f1+f0;
+	heapFloat[(r2+132)] = f0;
+}
+	return;
+}
+
+function _ZN35btSequentialImpulseConstraintSolver36resolveSingleConstraintRowLowerLimitER11btRigidBodyS1_RK18btSolverConstraint(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var f0;
+	var f1;
+	var f2;
+	var f3;
+	var f4;
+	var f5;
+	var f6;
+	var f7;
+	var f8;
+	var f9;
+	var f10;
+	var f11;
+	var f12;
+	var f13;
+	var f14;
+	var f15;
+	var f16;
+var __label__ = 0;
+	i7 = sp + 0;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = heap32[(fp+2)];
+	r1 = r1 >> 2;
+	r0 = r0 >> 2;
+	r2 = heap32[(fp+1)];
+	r2 = r2 >> 2;
+	f0 = heapFloat[(r1+4)];
+	f1 = heapFloat[(r0+126)];
+	f2 = heapFloat[(r1+5)];
+	f3 = heapFloat[(r0+127)];
+	f4 = heapFloat[(r1)];
+	f5 = heapFloat[(r0+130)];
+	f6 = heapFloat[(r1+1)];
+	f7 = heapFloat[(r0+131)];
+	f8 = heapFloat[(r2+126)];
+	f9 = heapFloat[(r2+127)];
+	f10 = heapFloat[(r1+6)];
+	f11 = heapFloat[(r0+128)];
+	f1 = f0*f1;
+	f3 = f2*f3;
+	f4 = f4*f5;
+	f5 = f6*f7;
+	f6 = heapFloat[(r1+2)];
+	f7 = heapFloat[(r0+132)];
+	f12 = heapFloat[(r1+8)];
+	f13 = heapFloat[(r2+130)];
+	f14 = heapFloat[(r1+9)];
+	f15 = heapFloat[(r2+131)];
+	f16 = heapFloat[(r2+128)];
+	f1 = f1+f3;
+	f3 = f10*f11;
+	f4 = f4+f5;
+	f5 = f6*f7;
+	f6 = f12*f13;
+	f7 = f14*f15;
+	f11 = heapFloat[(r1+10)];
+	f12 = heapFloat[(r2+132)];
+	f8 = f0*f8;
+	f9 = f2*f9;
+	f13 = heapFloat[(r1+21)];
+	f14 = heapFloat[(r1+30)];
+	f1 = f1+f3;
+	f3 = f4+f5;
+	f4 = f6+f7;
+	f5 = f11*f12;
+	f6 = f8+f9;
+	f7 = f10*f16;
+	f8 = heapFloat[(r1+29)];
+	f9 = f13*f14;
+	f1 = f1+f3;
+	f3 = heapFloat[(r1+23)];
+	f4 = f4+f5;
+	f5 = f6+f7;
+	f4 = f4-f5;
+	f5 = f8-f9;
+	f1 = f3*f1;
+	f1 = f5-f1;
+	f3 = f3*f4;
+	f1 = f1-f3;
+	f3 = heapFloat[(r1+31)];
+	f4 = f13+f1;
+	if(f3 >f4) //_LBB603_2
+{
+	f1 = f3-f13;
+	f4 = f3;
+}
+	heapFloat[(r1+21)] = f4;
+	f3 = heapFloat[(r0+84)];
+	f4 =                         0;
+if(!(f3 ==f4)) //_LBB603_5
+{
+	f3 = heapFloat[(r0+138)];
+	f0 = f0*f3;
+	f0 = f0*f1;
+	f3 = heapFloat[(r0+126)];
+	f5 = heapFloat[(r0+139)];
+	f6 = heapFloat[(r0+140)];
+	f0 = f3+f0;
+	f2 = f2*f5;
+	heapFloat[(r0+126)] = f0;
+	f0 = f2*f1;
+	f2 = heapFloat[(r0+127)];
+	f0 = f2+f0;
+	f2 = f10*f6;
+	heapFloat[(r0+127)] = f0;
+	f0 = f2*f1;
+	f2 = heapFloat[(r0+128)];
+	f0 = f2+f0;
+	heapFloat[(r0+128)] = f0;
+	f0 = heapFloat[(r0+134)];
+	f0 = f0*f1;
+	f2 = heapFloat[(r1+12)];
+	f3 = heapFloat[(r0+136)];
+	f5 = heapFloat[(r0+135)];
+	f0 = f2*f0;
+	f2 = heapFloat[(r0+130)];
+	f6 = heapFloat[(r1+14)];
+	f7 = heapFloat[(r1+13)];
+	f0 = f2+f0;
+	f2 = f5*f1;
+	heapFloat[(r0+130)] = f0;
+	f0 = f7*f2;
+	f2 = heapFloat[(r0+131)];
+	f0 = f2+f0;
+	f2 = f3*f1;
+	heapFloat[(r0+131)] = f0;
+	f0 = f6*f2;
+	f2 = heapFloat[(r0+132)];
+	f0 = f2+f0;
+	heapFloat[(r0+132)] = f0;
+}
+	f0 = heapFloat[(r2+84)];
+if(!(f0 ==f4)) //_LBB603_7
+{
+	f0 = heapFloat[(r1+4)];
+	f2 = heapFloat[(r2+138)];
+	f0 = f2*f0;
+	f0 = f0*f1;
+	f2 = heapFloat[(r2+126)];
+	f3 = heapFloat[(r1+5)];
+	f4 = heapFloat[(r2+139)];
+	f5 = heapFloat[(r1+6)];
+	f6 = heapFloat[(r2+140)];
+	f0 = f2-f0;
+	f2 = f4*f3;
+	heapFloat[(r2+126)] = f0;
+	f0 = f2*f1;
+	f2 = heapFloat[(r2+127)];
+	f0 = f2-f0;
+	f2 = f6*f5;
+	heapFloat[(r2+127)] = f0;
+	f0 = f2*f1;
+	f2 = heapFloat[(r2+128)];
+	f0 = f2-f0;
+	heapFloat[(r2+128)] = f0;
+	f0 = heapFloat[(r2+134)];
+	f0 = f0*f1;
+	f2 = heapFloat[(r1+16)];
+	f3 = heapFloat[(r2+136)];
+	f4 = heapFloat[(r2+135)];
+	f0 = f2*f0;
+	f2 = heapFloat[(r2+130)];
+	f5 = heapFloat[(r1+18)];
+	f6 = heapFloat[(r1+17)];
+	f0 = f2+f0;
+	f2 = f4*f1;
+	heapFloat[(r2+130)] = f0;
+	f0 = f6*f2;
+	f2 = heapFloat[(r2+131)];
+	f0 = f2+f0;
+	f1 = f3*f1;
+	heapFloat[(r2+131)] = f0;
+	f0 = f5*f1;
+	f1 = heapFloat[(r2+132)];
+	f0 = f1+f0;
+	heapFloat[(r2+132)] = f0;
+}
+	return;
+}
+
+function _ZN35btSequentialImpulseConstraintSolver43resolveSplitPenetrationImpulseCacheFriendlyER11btRigidBodyS1_RK18btSolverConstraint(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var f0;
+	var f1;
+	var f2;
+	var f3;
+	var f4;
+	var f5;
+	var f6;
+	var f7;
+	var f8;
+	var f9;
+	var f10;
+	var f11;
+	var f12;
+	var f13;
+	var f14;
+	var f15;
+	var f16;
+	var f17;
+	var f18;
+var __label__ = 0;
+	i7 = sp + 0;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp+2)];
+	r0 = r0 >> 2;
+	f0 = heapFloat[(r0+33)];
+	f1 =                         0;
+if(!(f0 ==f1)) //_LBB604_8
+{
+	r1 = heap32[(fp)];
+	r2 = heap32[(fp+1)];
+	r3 = gNumSplitImpulseRecoveries;
+	r3 = r3 >> 2;
+	r4 = heap32[(r3)];
+	r4 = (r4 + 1)|0;
+	r1 = r1 >> 2;
+	heap32[(r3)] = r4;
+	r2 = r2 >> 2;
+	f2 = heapFloat[(r0+4)];
+	f3 = heapFloat[(r1+142)];
+	f4 = heapFloat[(r0+5)];
+	f5 = heapFloat[(r1+143)];
+	f6 = heapFloat[(r0)];
+	f7 = heapFloat[(r1+146)];
+	f8 = heapFloat[(r0+1)];
+	f9 = heapFloat[(r1+147)];
+	f10 = heapFloat[(r2+142)];
+	f11 = heapFloat[(r2+143)];
+	f12 = heapFloat[(r0+6)];
+	f13 = heapFloat[(r1+144)];
+	f3 = f2*f3;
+	f5 = f4*f5;
+	f6 = f6*f7;
+	f7 = f8*f9;
+	f8 = heapFloat[(r0+2)];
+	f9 = heapFloat[(r1+148)];
+	f14 = heapFloat[(r0+8)];
+	f15 = heapFloat[(r2+146)];
+	f16 = heapFloat[(r0+9)];
+	f17 = heapFloat[(r2+147)];
+	f18 = heapFloat[(r2+144)];
+	f3 = f3+f5;
+	f5 = f12*f13;
+	f6 = f6+f7;
+	f7 = f8*f9;
+	f8 = f14*f15;
+	f9 = f16*f17;
+	f13 = heapFloat[(r0+10)];
+	f14 = heapFloat[(r2+148)];
+	f10 = f2*f10;
+	f11 = f4*f11;
+	f15 = heapFloat[(r0+20)];
+	f16 = heapFloat[(r0+30)];
+	f3 = f3+f5;
+	f5 = f6+f7;
+	f6 = f8+f9;
+	f7 = f13*f14;
+	f8 = f10+f11;
+	f9 = f12*f18;
+	f10 = f15*f16;
+	f3 = f3+f5;
+	f5 = heapFloat[(r0+23)];
+	f6 = f6+f7;
+	f7 = f8+f9;
+	f6 = f6-f7;
+	f0 = f0-f10;
+	f3 = f5*f3;
+	f0 = f0-f3;
+	f3 = f5*f6;
+	f0 = f0-f3;
+	f3 = heapFloat[(r0+31)];
+	f5 = f15+f0;
+	if(f3 >f5) //_LBB604_3
+{
+	f0 = f3-f15;
+	f5 = f3;
+}
+	heapFloat[(r0+20)] = f5;
+	f3 = heapFloat[(r1+84)];
+if(!(f3 ==f1)) //_LBB604_6
+{
+	f3 = heapFloat[(r1+138)];
+	f2 = f2*f3;
+	f2 = f2*f0;
+	f3 = heapFloat[(r1+142)];
+	f5 = heapFloat[(r1+139)];
+	f6 = heapFloat[(r1+140)];
+	f2 = f3+f2;
+	f3 = f4*f5;
+	heapFloat[(r1+142)] = f2;
+	f2 = f3*f0;
+	f3 = heapFloat[(r1+143)];
+	f2 = f3+f2;
+	f3 = f12*f6;
+	heapFloat[(r1+143)] = f2;
+	f2 = f3*f0;
+	f3 = heapFloat[(r1+144)];
+	f2 = f3+f2;
+	heapFloat[(r1+144)] = f2;
+	f2 = heapFloat[(r1+134)];
+	f2 = f2*f0;
+	f3 = heapFloat[(r0+12)];
+	f4 = heapFloat[(r1+136)];
+	f5 = heapFloat[(r1+135)];
+	f2 = f3*f2;
+	f3 = heapFloat[(r1+146)];
+	f6 = heapFloat[(r0+14)];
+	f7 = heapFloat[(r0+13)];
+	f2 = f3+f2;
+	f3 = f5*f0;
+	heapFloat[(r1+146)] = f2;
+	f2 = f7*f3;
+	f3 = heapFloat[(r1+147)];
+	f2 = f3+f2;
+	f3 = f4*f0;
+	heapFloat[(r1+147)] = f2;
+	f2 = f6*f3;
+	f3 = heapFloat[(r1+148)];
+	f2 = f3+f2;
+	heapFloat[(r1+148)] = f2;
+}
+	f2 = heapFloat[(r2+84)];
+if(!(f2 ==f1)) //_LBB604_8
+{
+	f1 = heapFloat[(r0+4)];
+	f2 = heapFloat[(r2+138)];
+	f1 = f2*f1;
+	f1 = f1*f0;
+	f2 = heapFloat[(r2+142)];
+	f3 = heapFloat[(r0+5)];
+	f4 = heapFloat[(r2+139)];
+	f5 = heapFloat[(r0+6)];
+	f6 = heapFloat[(r2+140)];
+	f1 = f2-f1;
+	f2 = f4*f3;
+	heapFloat[(r2+142)] = f1;
+	f1 = f2*f0;
+	f2 = heapFloat[(r2+143)];
+	f1 = f2-f1;
+	f2 = f6*f5;
+	heapFloat[(r2+143)] = f1;
+	f1 = f2*f0;
+	f2 = heapFloat[(r2+144)];
+	f1 = f2-f1;
+	heapFloat[(r2+144)] = f1;
+	f1 = heapFloat[(r2+134)];
+	f1 = f1*f0;
+	f2 = heapFloat[(r0+16)];
+	f3 = heapFloat[(r2+136)];
+	f4 = heapFloat[(r2+135)];
+	f1 = f2*f1;
+	f2 = heapFloat[(r2+146)];
+	f5 = heapFloat[(r0+18)];
+	f6 = heapFloat[(r0+17)];
+	f1 = f2+f1;
+	f2 = f4*f0;
+	heapFloat[(r2+146)] = f1;
+	f1 = f6*f2;
+	f2 = heapFloat[(r2+147)];
+	f1 = f2+f1;
+	f0 = f3*f0;
+	heapFloat[(r2+147)] = f1;
+	f0 = f5*f0;
+	f1 = heapFloat[(r2+148)];
+	f0 = f1+f0;
+	heapFloat[(r2+148)] = f0;
+}
+}
+	return;
+}
+
+function _Z24applyAnisotropicFrictionP17btCollisionObjectR9btVector3(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var f0;
+	var f1;
+	var f2;
+	var f3;
+	var f4;
+	var f5;
+	var f6;
+	var f7;
+	var f8;
+	var f9;
+	var f10;
+	var f11;
+	var f12;
+	var f13;
+	var f14;
+	var f15;
+var __label__ = 0;
+	i7 = sp + 0;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+if(!(r0 ==0)) //_LBB605_2
+{
+	r0 = r0 >> 2;
+	r1 = heap32[(r0+45)];
+	if(r1 !=0) //_LBB605_3
+{
+	r1 = heap32[(fp+1)];
+	r1 = r1 >> 2;
+	f0 = heapFloat[(r1)];
+	f1 = heapFloat[(r0+2)];
+	f2 = heapFloat[(r0+1)];
+	f3 = heapFloat[(r1+1)];
+	f4 = heapFloat[(r0+6)];
+	f5 = heapFloat[(r0+5)];
+	f6 = heapFloat[(r0+3)];
+	f7 = heapFloat[(r0+7)];
+	f8 = f2*f0;
+	f9 = f5*f3;
+	f10 = f1*f0;
+	f11 = f4*f3;
+	f12 = heapFloat[(r1+2)];
+	f13 = heapFloat[(r0+10)];
+	f14 = heapFloat[(r0+9)];
+	f15 = heapFloat[(r0+11)];
+	f8 = f8+f9;
+	f9 = f14*f12;
+	f10 = f10+f11;
+	f11 = f13*f12;
+	f0 = f6*f0;
+	f3 = f7*f3;
+	f8 = f8+f9;
+	f9 = heapFloat[(r0+41)];
+	f10 = f10+f11;
+	f11 = heapFloat[(r0+42)];
+	f0 = f0+f3;
+	f3 = f15*f12;
+	f8 = f8*f9;
+	f9 = f10*f11;
+	f10 = heapFloat[(r0+43)];
+	f0 = f0+f3;
+	f0 = f0*f10;
+	f2 = f2*f8;
+	f1 = f1*f9;
+	f3 = f5*f8;
+	f4 = f4*f9;
+	f1 = f2+f1;
+	f2 = f6*f0;
+	f5 = f14*f8;
+	f6 = f13*f9;
+	f3 = f3+f4;
+	f4 = f7*f0;
+	f1 = f1+f2;
+	f2 = f5+f6;
+	f0 = f15*f0;
+	f3 = f3+f4;
+	heapFloat[(r1)] = f1;
+	f0 = f2+f0;
+	heapFloat[(r1+1)] = f3;
+	heapFloat[(r1+2)] = f0;
+	heap32[(r1+3)] = 0;
+	return;
+}
+}
+	return;
+}
+
+function _ZN35btSequentialImpulseConstraintSolver5resetEv(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+var __label__ = 0;
+	i7 = sp + 0;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r0 = r0 >> 2;
+	heap32[(r0+31)] = 0;
+	return;
+}
+
+function _ZN35btSequentialImpulseConstraintSolver45solveGroupCacheFriendlySplitImpulseIterationsEPP17btCollisionObjectiPP20btPersistentManifoldiPP17btTypedConstraintiRK19btContactSolverInfoP12btIDebugDrawP12btStackAlloc(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+	var r6;
+	var r7;
+	var r8;
+var __label__ = 0;
+	i7 = sp + -16;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp+7)];
+	r1 = r0 >> 2;
+	r2 = heap32[(r1+11)];
+_1: do {
+if(!(r2 ==0)) //_LBB607_14
+{
+	r2 = heap32[(fp)];
+	r0 = heapU8[r0+61];
+	r3 = heap32[(r1+5)];
+	r0 = r0 & 1;
+	if(r0 != 0) //_LBB607_3
+{
+if(!(r3 <1)) //_LBB607_14
+{
+	r0 = 0;
+_6: while(true){
+	r3 = r2 >> 2;
+	r4 = heap32[(r3+2)];
+if(!(r4 <1)) //_LBB607_8
+{
+	r5 = 0;
+_10: while(true){
+	r6 = heap32[(r3+19)];
+	r7 = r5 << 2;
+	r6 = (r6 + r7)|0;
+	r6 = r6 >> 2;
+	r6 = heap32[(r6)];
+	r6 = (r6 * 136)|0;
+	r7 = heap32[(r3+4)];
+	r6 = (r7 + r6)|0;
+	r7 = r6 >> 2;
+	r8 = heap32[(r7+27)];
+	r7 = heap32[(r7+26)];
+	heap32[(g0)] = r7;
+	heap32[(g0+1)] = r8;
+	heap32[(g0+2)] = r6;
+	r5 = (r5 + 1)|0;
+	_ZN35btSequentialImpulseConstraintSolver43resolveSplitPenetrationImpulseCacheFriendlyER11btRigidBodyS1_RK18btSolverConstraint(i7);
+if(!(r4 !=r5)) //_LBB607_7
+{
+break _10;
+}
+}
+}
+	r0 = (r0 + 1)|0;
+	r3 = heap32[(r1+5)];
+	if(r3 >r0) //_LBB607_5
+{
+continue _6;
+}
+else{
+break _1;
+}
+}
+}
+}
+else{
+	if(r3 >0) //_LBB607_9
+{
+	r0 = 0;
+_15: while(true){
+	r3 = r2 >> 2;
+	r4 = heap32[(r3+2)];
+if(!(r4 <1)) //_LBB607_13
+{
+	r5 = 0;
+_19: while(true){
+	r6 = heap32[(r3+19)];
+	r7 = r5 << 2;
+	r6 = (r6 + r7)|0;
+	r6 = r6 >> 2;
+	r6 = heap32[(r6)];
+	r6 = (r6 * 136)|0;
+	r7 = heap32[(r3+4)];
+	r6 = (r7 + r6)|0;
+	r7 = r6 >> 2;
+	r8 = heap32[(r7+27)];
+	r7 = heap32[(r7+26)];
+	heap32[(g0)] = r7;
+	heap32[(g0+1)] = r8;
+	heap32[(g0+2)] = r6;
+	r5 = (r5 + 1)|0;
+	_ZN35btSequentialImpulseConstraintSolver43resolveSplitPenetrationImpulseCacheFriendlyER11btRigidBodyS1_RK18btSolverConstraint(i7);
+if(!(r4 !=r5)) //_LBB607_12
+{
+break _19;
+}
+}
+}
+	r0 = (r0 + 1)|0;
+	r3 = heap32[(r1+5)];
+	if(r3 >r0) //_LBB607_10
+{
+continue _15;
+}
+else{
+break _1;
+}
+}
+}
+}
+}
+} while(0);
+	return;
+}
+
+function _ZN35btSequentialImpulseConstraintSolverD1Ev(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+var __label__ = 0;
+	i7 = sp + -8;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = _ZTV35btSequentialImpulseConstraintSolver;
+	r2 = r0 >> 2;
+	r1 = (r1 + 8)|0;
+	heap32[(r2)] = r1;
+	r1 = heap32[(r2+29)];
+if(!(r1 ==0)) //_LBB608_4
+{
+	r3 = heapU8[r0+120];
+if(!(r3 ==0)) //_LBB608_3
+{
+	r3 = gNumAlignedFree;
+	r3 = r3 >> 2;
+	r4 = heap32[(r3)];
+	r4 = (r4 + 1)|0;
+	r1 = r1 >> 2;
+	heap32[(r3)] = r4;
+	r1 = heap32[(r1+-1)];
+	heap32[(g0)] = r1;
+	free(i7);
+}
+	heap32[(r2+29)] = 0;
+}
+	r1 = 1;
+	heap8[r0+120] = r1;
+	heap32[(r2+29)] = 0;
+	heap32[(r2+27)] = 0;
+	heap32[(r2+28)] = 0;
+	r3 = heap32[(r2+24)];
+if(!(r3 ==0)) //_LBB608_8
+{
+	r4 = heapU8[r0+100];
+if(!(r4 ==0)) //_LBB608_7
+{
+	r4 = gNumAlignedFree;
+	r4 = r4 >> 2;
+	r5 = heap32[(r4)];
+	r5 = (r5 + 1)|0;
+	r3 = r3 >> 2;
+	heap32[(r4)] = r5;
+	r3 = heap32[(r3+-1)];
+	heap32[(g0)] = r3;
+	free(i7);
+}
+	heap32[(r2+24)] = 0;
+}
+	heap8[r0+100] = r1;
+	heap32[(r2+24)] = 0;
+	heap32[(r2+22)] = 0;
+	heap32[(r2+23)] = 0;
+	r3 = heap32[(r2+19)];
+if(!(r3 ==0)) //_LBB608_12
+{
+	r4 = heapU8[r0+80];
+if(!(r4 ==0)) //_LBB608_11
+{
+	r4 = gNumAlignedFree;
+	r4 = r4 >> 2;
+	r5 = heap32[(r4)];
+	r5 = (r5 + 1)|0;
+	r3 = r3 >> 2;
+	heap32[(r4)] = r5;
+	r3 = heap32[(r3+-1)];
+	heap32[(g0)] = r3;
+	free(i7);
+}
+	heap32[(r2+19)] = 0;
+}
+	heap8[r0+80] = r1;
+	heap32[(r2+19)] = 0;
+	heap32[(r2+17)] = 0;
+	heap32[(r2+18)] = 0;
+	r3 = heap32[(r2+14)];
+if(!(r3 ==0)) //_LBB608_16
+{
+	r4 = heapU8[r0+60];
+if(!(r4 ==0)) //_LBB608_15
+{
+	r4 = gNumAlignedFree;
+	r4 = r4 >> 2;
+	r5 = heap32[(r4)];
+	r5 = (r5 + 1)|0;
+	r3 = r3 >> 2;
+	heap32[(r4)] = r5;
+	r3 = heap32[(r3+-1)];
+	heap32[(g0)] = r3;
+	free(i7);
+}
+	heap32[(r2+14)] = 0;
+}
+	heap8[r0+60] = r1;
+	heap32[(r2+14)] = 0;
+	heap32[(r2+12)] = 0;
+	heap32[(r2+13)] = 0;
+	r3 = heap32[(r2+9)];
+if(!(r3 ==0)) //_LBB608_20
+{
+	r4 = heapU8[r0+40];
+if(!(r4 ==0)) //_LBB608_19
+{
+	r4 = gNumAlignedFree;
+	r4 = r4 >> 2;
+	r5 = heap32[(r4)];
+	r5 = (r5 + 1)|0;
+	r3 = r3 >> 2;
+	heap32[(r4)] = r5;
+	r3 = heap32[(r3+-1)];
+	heap32[(g0)] = r3;
+	free(i7);
+}
+	heap32[(r2+9)] = 0;
+}
+	heap8[r0+40] = r1;
+	heap32[(r2+9)] = 0;
+	heap32[(r2+7)] = 0;
+	heap32[(r2+8)] = 0;
+	r3 = heap32[(r2+4)];
+if(!(r3 ==0)) //_LBB608_24
+{
+	r4 = heapU8[r0+20];
+if(!(r4 ==0)) //_LBB608_23
+{
+	r4 = gNumAlignedFree;
+	r4 = r4 >> 2;
+	r5 = heap32[(r4)];
+	r5 = (r5 + 1)|0;
+	r3 = r3 >> 2;
+	heap32[(r4)] = r5;
+	r3 = heap32[(r3+-1)];
+	heap32[(g0)] = r3;
+	free(i7);
+}
+	heap32[(r2+4)] = 0;
+}
+	heap8[r0+20] = r1;
+	heap32[(r2+4)] = 0;
+	heap32[(r2+2)] = 0;
+	heap32[(r2+3)] = 0;
+	return;
+}
+
+function _ZN35btSequentialImpulseConstraintSolverD0Ev(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+var __label__ = 0;
+	i7 = sp + -8;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = _ZTV35btSequentialImpulseConstraintSolver;
+	r2 = r0 >> 2;
+	r1 = (r1 + 8)|0;
+	heap32[(r2)] = r1;
+	r1 = heap32[(r2+29)];
+if(!(r1 ==0)) //_LBB609_4
+{
+	r3 = heapU8[r0+120];
+if(!(r3 ==0)) //_LBB609_3
+{
+	r3 = gNumAlignedFree;
+	r3 = r3 >> 2;
+	r4 = heap32[(r3)];
+	r4 = (r4 + 1)|0;
+	r1 = r1 >> 2;
+	heap32[(r3)] = r4;
+	r1 = heap32[(r1+-1)];
+	heap32[(g0)] = r1;
+	free(i7);
+}
+	heap32[(r2+29)] = 0;
+}
+	r1 = 1;
+	heap8[r0+120] = r1;
+	heap32[(r2+29)] = 0;
+	heap32[(r2+27)] = 0;
+	heap32[(r2+28)] = 0;
+	r3 = heap32[(r2+24)];
+if(!(r3 ==0)) //_LBB609_8
+{
+	r4 = heapU8[r0+100];
+if(!(r4 ==0)) //_LBB609_7
+{
+	r4 = gNumAlignedFree;
+	r4 = r4 >> 2;
+	r5 = heap32[(r4)];
+	r5 = (r5 + 1)|0;
+	r3 = r3 >> 2;
+	heap32[(r4)] = r5;
+	r3 = heap32[(r3+-1)];
+	heap32[(g0)] = r3;
+	free(i7);
+}
+	heap32[(r2+24)] = 0;
+}
+	heap8[r0+100] = r1;
+	heap32[(r2+24)] = 0;
+	heap32[(r2+22)] = 0;
+	heap32[(r2+23)] = 0;
+	r3 = heap32[(r2+19)];
+if(!(r3 ==0)) //_LBB609_12
+{
+	r4 = heapU8[r0+80];
+if(!(r4 ==0)) //_LBB609_11
+{
+	r4 = gNumAlignedFree;
+	r4 = r4 >> 2;
+	r5 = heap32[(r4)];
+	r5 = (r5 + 1)|0;
+	r3 = r3 >> 2;
+	heap32[(r4)] = r5;
+	r3 = heap32[(r3+-1)];
+	heap32[(g0)] = r3;
+	free(i7);
+}
+	heap32[(r2+19)] = 0;
+}
+	heap8[r0+80] = r1;
+	heap32[(r2+19)] = 0;
+	heap32[(r2+17)] = 0;
+	heap32[(r2+18)] = 0;
+	r3 = heap32[(r2+14)];
+if(!(r3 ==0)) //_LBB609_16
+{
+	r4 = heapU8[r0+60];
+if(!(r4 ==0)) //_LBB609_15
+{
+	r4 = gNumAlignedFree;
+	r4 = r4 >> 2;
+	r5 = heap32[(r4)];
+	r5 = (r5 + 1)|0;
+	r3 = r3 >> 2;
+	heap32[(r4)] = r5;
+	r3 = heap32[(r3+-1)];
+	heap32[(g0)] = r3;
+	free(i7);
+}
+	heap32[(r2+14)] = 0;
+}
+	heap8[r0+60] = r1;
+	heap32[(r2+14)] = 0;
+	heap32[(r2+12)] = 0;
+	heap32[(r2+13)] = 0;
+	r3 = heap32[(r2+9)];
+if(!(r3 ==0)) //_LBB609_20
+{
+	r4 = heapU8[r0+40];
+if(!(r4 ==0)) //_LBB609_19
+{
+	r4 = gNumAlignedFree;
+	r4 = r4 >> 2;
+	r5 = heap32[(r4)];
+	r5 = (r5 + 1)|0;
+	r3 = r3 >> 2;
+	heap32[(r4)] = r5;
+	r3 = heap32[(r3+-1)];
+	heap32[(g0)] = r3;
+	free(i7);
+}
+	heap32[(r2+9)] = 0;
+}
+	heap8[r0+40] = r1;
+	heap32[(r2+9)] = 0;
+	heap32[(r2+7)] = 0;
+	heap32[(r2+8)] = 0;
+	r3 = heap32[(r2+4)];
+if(!(r3 ==0)) //_LBB609_24
+{
+	r4 = heapU8[r0+20];
+if(!(r4 ==0)) //_LBB609_23
+{
+	r4 = gNumAlignedFree;
+	r4 = r4 >> 2;
+	r5 = heap32[(r4)];
+	r5 = (r5 + 1)|0;
+	r3 = r3 >> 2;
+	heap32[(r4)] = r5;
+	r3 = heap32[(r3+-1)];
+	heap32[(g0)] = r3;
+	free(i7);
+}
+	heap32[(r2+4)] = 0;
+}
+	heap8[r0+20] = r1;
+	heap32[(r2+4)] = 0;
+	heap32[(r2+2)] = 0;
+	heap32[(r2+3)] = 0;
+	heap32[(g0)] = r0;
+	_ZdlPv(i7);
+	return;
+}
+
+function _ZN35btSequentialImpulseConstraintSolver10solveGroupEPP17btCollisionObjectiPP20btPersistentManifoldiPP17btTypedConstraintiRK19btContactSolverInfoP12btIDebugDrawP12btStackAllocP12btDispatcher(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+	var r6;
+	var r7;
+	var r8;
+	var r9;
+	var r10;
+	var r11;
+	var f0;
+	var f1;
+	var f2;
+var __label__ = 0;
+	i7 = sp + -48;var g0 = i7>>2; // save stack
+	r0 = _2E_str450;
+	r1 = heap32[(fp+1)];
+	heap32[(g0)] = r0;
+	_ZN15CProfileManager13Start_ProfileEPKc(i7);
+	if(r1 !=0) //_LBB610_2
+{
+	r0 = heap32[(fp+2)];
+	if(r0 !=0) //_LBB610_4
+{
+	r2 = heap32[(fp)];
+	r3 = heap32[(fp+3)];
+	r4 = heap32[(fp+4)];
+	r5 = heap32[(fp+5)];
+	r6 = heap32[(fp+6)];
+	r7 = heap32[(fp+7)];
+	r8 = heap32[(fp+8)];
+	r9 = heap32[(fp+9)];
+	r10 = r2 >> 2;
+	r11 = heap32[(r10)];
+	r11 = r11 >> 2;
+	r11 = heap32[(r11+8)];
+	heap32[(g0)] = r2;
+	heap32[(g0+1)] = r1;
+	heap32[(g0+2)] = r0;
+	heap32[(g0+3)] = r3;
+	heap32[(g0+4)] = r4;
+	heap32[(g0+5)] = r5;
+	heap32[(g0+6)] = r6;
+	heap32[(g0+7)] = r7;
+	heap32[(g0+8)] = r8;
+	heap32[(g0+9)] = r9;
+	__FUNCTION_TABLE__[(r11)>>2](i7);
+	r11 = heap32[(r10)];
+	r11 = r11 >> 2;
+	r11 = heap32[(r11+9)];
+	heap32[(g0)] = r2;
+	heap32[(g0+1)] = r1;
+	heap32[(g0+2)] = r0;
+	heap32[(g0+3)] = r3;
+	heap32[(g0+4)] = r4;
+	heap32[(g0+5)] = r5;
+	heap32[(g0+6)] = r6;
+	heap32[(g0+7)] = r7;
+	heap32[(g0+8)] = r8;
+	heap32[(g0+9)] = r9;
+	__FUNCTION_TABLE__[(r11)>>2](i7);
+	r10 = heap32[(r10)];
+	r10 = r10 >> 2;
+	r10 = heap32[(r10+7)];
+	heap32[(g0)] = r2;
+	heap32[(g0+1)] = r1;
+	heap32[(g0+2)] = r0;
+	heap32[(g0+3)] = r3;
+	heap32[(g0+4)] = r4;
+	heap32[(g0+5)] = r5;
+	heap32[(g0+6)] = r6;
+	heap32[(g0+7)] = r7;
+	heap32[(g0+8)] = r8;
+	heap32[(g0+9)] = r9;
+	r0 = _ZN15CProfileManager11CurrentNodeE;
+	r0 = r0 >> 2;
+	__FUNCTION_TABLE__[(r10)>>2](i7);
+	r1 = heap32[(r0)];
+	r2 = r1 >> 2;
+	r3 = heap32[(r2+4)];
+	r3 = (r3 + -1)|0;
+	heap32[(r2+4)] = r3;
+_5: do {
+if(!(r3 !=0)) //_LBB610_10
+{
+	r3 = heap32[(r2+1)];
+	if(r3 !=0) //_LBB610_7
+{
+	r1 = sp + -8;
+	heap32[(g0)] = r1;
+	heap32[(g0+1)] = 0;
+	r3 = _ZL13gProfileClock_2E_0;
+	gettimeofday(i7);
+	r3 = r3 >> 2;
+	r3 = heap32[(r3)];
+	r3 = r3 >> 2;
+	r1 = r1 >> 2;
+	r4 = heap32[(fp+-2)];
+	r5 = heap32[(r3)];
+	r4 = (r4 - r5)|0;
+	r1 = heap32[(r1+1)];
+	r3 = heap32[(r3+1)];
+	r1 = (r1 - r3)|0;
+	r3 = (r4 * 1000000)|0;
+	r1 = (r1 + r3)|0;
+	r3 = heap32[(r2+3)];
+	r1 = (r1 - r3)|0;
+	f0 = uint(r1); //fuitos r1, f0
+	f1 =                      1000;
+	f2 = heapFloat[(r2+2)];
+	f0 = f0/f1;
+	f0 = f2+f0;
+	heapFloat[(r2+2)] = f0;
+	r1 = heap32[(r2+4)];
+	if(r1 !=0) //_LBB610_10
+{
+break _5;
+}
+else{
+	r1 = heap32[(r0)];
+}
+}
+	r1 = r1 >> 2;
+	r1 = heap32[(r1+5)];
+	heap32[(r0)] = r1;
+}
+} while(0);
+	f0 =                         0;
+	f_g0 = f0;
+	return;
+}
+else{
+	r0 = _2E_str753;
+	r1 = _2E_str652;
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r1;
+	heap32[(g0+2)] = 1186;
+	_assert(i7);
+}
+}
+else{
+	r1 = _2E_str551;
+	r0 = _2E_str652;
+	heap32[(g0)] = r1;
+	heap32[(g0+1)] = r0;
+	heap32[(g0+2)] = 1185;
+	_assert(i7);
+}
+}
+
+function _ZN35btSequentialImpulseConstraintSolver29solveGroupCacheFriendlyFinishEPP17btCollisionObjectiPP20btPersistentManifoldiPP17btTypedConstraintiRK19btContactSolverInfoP12btIDebugDrawP12btStackAlloc(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+	var r6;
+	var r7;
+	var r8;
+	var r9;
+	var r10;
+	var f0;
+	var f1;
+	var f2;
+	var f3;
+	var f4;
+	var f5;
+	var f6;
+var __label__ = 0;
+	i7 = sp + -504;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = r0 >> 2;
+	r2 = heap32[(fp+1)];
+	r3 = heap32[(fp+2)];
+	r4 = heap32[(fp+7)];
+	r5 = heap32[(r1+2)];
+	r6 = 0;
+_1: while(true){
+	if(r6 <r5) //_LBB611_1
+{
+	r7 = (r6 * 34)|0;
+	r8 = heap32[(r1+4)];
+	r7 = r7 << 2;
+	r7 = (r8 + r7)|0;
+	r7 = r7 >> 2;
+	r8 = heap32[(r7+28)];
+	if(r8 !=0) //_LBB611_3
+{
+	r8 = r8 >> 2;
+	heap32[(r8+28)] = heap32[(r7+21)];
+	r9 = heapU8[r4+60];
+	r9 = r9 & 8;
+if(!(r9 ==0)) //_LBB611_5
+{
+	r9 = heap32[(r7+25)];
+	r10 = heap32[(r1+14)];
+	r9 = (r9 * 136)|0;
+	r9 = (r10 + r9)|0;
+	r9 = r9 >> 2;
+	heap32[(r8+30)] = heap32[(r9+21)];
+	r7 = heap32[(r7+25)];
+	r9 = heap32[(r1+14)];
+	r7 = (r7 * 136)|0;
+	r7 = (r7 + r9)|0;
+	r7 = r7 >> 2;
+	heap32[(r8+31)] = heap32[(r7+55)];
+}
+	r6 = (r6 + 1)|0;
+continue _1;
+}
+else{
+__label__ = 2;
+break _1;
+}
+}
+else{
+__label__ = 7;
+break _1;
+}
+}
+switch(__label__ ){//multiple entries
+case 7:
+	r5 = heap32[(r1+7)];
+_10: do {
+if(!(r5 <1)) //_LBB611_10
+{
+	r6 = 0;
+_12: while(true){
+	r7 = (r6 * 34)|0;
+	r8 = heap32[(r1+9)];
+	r7 = r7 << 2;
+	r7 = (r8 + r7)|0;
+	r7 = r7 >> 2;
+	r8 = heap32[(r7+28)];
+	r8 = r8 >> 2;
+	f0 = heapFloat[(r8+7)];
+	f1 = heapFloat[(r7+21)];
+	r6 = (r6 + 1)|0;
+	f0 = f1+f0;
+	heapFloat[(r8+7)] = f0;
+	if(r5 !=r6) //_LBB611_9
+{
+continue _12;
+}
+else{
+break _10;
+}
+}
+}
+} while(0);
+	r4 = r4 >> 2;
+	r5 = heap32[(r4+11)];
+_15: do {
+	if(r5 !=0) //_LBB611_13
+{
+if(!(r3 <1)) //_LBB611_24
+{
+__label__ = 13; //SET chanka
+_17: while(true){
+	r5 = r2 >> 2;
+	r5 = heap32[(r5)];
+	r6 = heapU8[r5+232];
+	r6 = r6 & 2;
+if(!(r6 ==0)) //_LBB611_18
+{
+if(!(r5 ==0)) //_LBB611_18
+{
+	r6 = r5 >> 2;
+	f0 = heapFloat[(r6+84)];
+	f1 =                         0;
+if(!(f0 ==f1)) //_LBB611_18
+{
+	f0 = heapFloat[(r4+3)];
+	f1 = heapFloat[(r6+78)];
+	f2 = heapFloat[(r6+128)];
+	f3 = heapFloat[(r6+77)];
+	f4 = heapFloat[(r6+127)];
+	f5 = heapFloat[(r6+76)];
+	f6 = heapFloat[(r6+126)];
+	f5 = f5+f6;
+	f3 = f3+f4;
+	heapFloat[(r6+76)] = f5;
+	f1 = f1+f2;
+	heapFloat[(r6+77)] = f3;
+	heapFloat[(r6+78)] = f1;
+	heap32[(r6+79)] = 0;
+	f1 = heapFloat[(r6+82)];
+	f2 = heapFloat[(r6+132)];
+	f3 = heapFloat[(r6+81)];
+	f4 = heapFloat[(r6+131)];
+	f5 = heapFloat[(r6+80)];
+	f6 = heapFloat[(r6+130)];
+	f5 = f5+f6;
+	f3 = f3+f4;
+	heapFloat[(r6+80)] = f5;
+	f1 = f1+f2;
+	heapFloat[(r6+81)] = f3;
+	heapFloat[(r6+82)] = f1;
+	heap32[(r6+83)] = 0;
+	f1 = heapFloat[(r6+142)];
+	f2 = heapFloat[(r6+143)];
+	f3 = heapFloat[(r6+144)];
+	r7 = sp + -64;
+	r8 = (r5 + 4)|0;
+	r5 = (r5 + 584)|0;
+	heap32[(g0)] = r8;
+	heapFloat[(g0+1)] = f1;
+	heapFloat[(g0+2)] = f2;
+	heapFloat[(g0+3)] = f3;
+	heap32[(g0+4)] = r5;
+	heapFloat[(g0+5)] = f0;
+	heap32[(g0+6)] = r7;
+	_ZN15btTransformUtil18integrateTransformERK11btTransformRK9btVector3S5_fRS0_(i7);
+	r5 = r7 >> 2;
+	heap32[(r6+1)] = heap32[(fp+-16)];
+	heap32[(r6+2)] = heap32[(r5+1)];
+	heap32[(r6+3)] = heap32[(r5+2)];
+	heap32[(r6+4)] = heap32[(r5+3)];
+	heap32[(r6+5)] = heap32[(r5+4)];
+	heap32[(r6+6)] = heap32[(r5+5)];
+	heap32[(r6+7)] = heap32[(r5+6)];
+	heap32[(r6+8)] = heap32[(r5+7)];
+	heap32[(r6+9)] = heap32[(r5+8)];
+	heap32[(r6+10)] = heap32[(r5+9)];
+	heap32[(r6+11)] = heap32[(r5+10)];
+	heap32[(r6+12)] = heap32[(r5+11)];
+	heap32[(r6+13)] = heap32[(r5+12)];
+	heap32[(r6+14)] = heap32[(r5+13)];
+	heap32[(r6+15)] = heap32[(r5+14)];
+	heap32[(r6+16)] = heap32[(r5+15)];
+}
+}
+}
+	r3 = (r3 + -1)|0;
+	r2 = (r2 + 4)|0;
+	if(r3 ==0) //_LBB611_24
+{
+break _15;
+}
+else{
+continue _17;
+}
+}
+}
+}
+else{
+if(!(r3 <1)) //_LBB611_24
+{
+__label__ = 18; //SET chanka
+_25: while(true){
+	r4 = r2 >> 2;
+	r4 = heap32[(r4)];
+	r5 = heapU8[r4+232];
+	r5 = r5 & 2;
+if(!(r5 ==0)) //_LBB611_23
+{
+if(!(r4 ==0)) //_LBB611_23
+{
+	r4 = r4 >> 2;
+	f0 = heapFloat[(r4+84)];
+	f1 =                         0;
+if(!(f0 ==f1)) //_LBB611_23
+{
+	f0 = heapFloat[(r4+78)];
+	f1 = heapFloat[(r4+128)];
+	f2 = heapFloat[(r4+77)];
+	f3 = heapFloat[(r4+127)];
+	f4 = heapFloat[(r4+76)];
+	f5 = heapFloat[(r4+126)];
+	f4 = f4+f5;
+	f2 = f2+f3;
+	heapFloat[(r4+76)] = f4;
+	f0 = f0+f1;
+	heapFloat[(r4+77)] = f2;
+	heapFloat[(r4+78)] = f0;
+	heap32[(r4+79)] = 0;
+	f0 = heapFloat[(r4+82)];
+	f1 = heapFloat[(r4+132)];
+	f2 = heapFloat[(r4+81)];
+	f3 = heapFloat[(r4+131)];
+	f4 = heapFloat[(r4+80)];
+	f5 = heapFloat[(r4+130)];
+	f4 = f4+f5;
+	f2 = f2+f3;
+	heapFloat[(r4+80)] = f4;
+	f0 = f0+f1;
+	heapFloat[(r4+81)] = f2;
+	heapFloat[(r4+82)] = f0;
+	heap32[(r4+83)] = 0;
+}
+}
+}
+	r3 = (r3 + -1)|0;
+	r2 = (r2 + 4)|0;
+	if(r3 !=0) //_LBB611_19
+{
+continue _25;
+}
+else{
+break _15;
+}
+}
+}
+}
+} while(0);
+	r2 = heap32[(r1+2)];
+_33: do {
+if(!(r2 >-1)) //_LBB611_33
+{
+	r3 = heap32[(r1+3)];
+if(!(r3 >-1)) //_LBB611_31
+{
+	r3 = heap32[(r1+4)];
+if(!(r3 ==0)) //_LBB611_30
+{
+	r4 = heapU8[r0+20];
+if(!(r4 ==0)) //_LBB611_29
+{
+	r4 = gNumAlignedFree;
+	r4 = r4 >> 2;
+	r5 = heap32[(r4)];
+	r5 = (r5 + 1)|0;
+	r3 = r3 >> 2;
+	heap32[(r4)] = r5;
+	r3 = heap32[(r3+-1)];
+	heap32[(g0)] = r3;
+	free(i7);
+}
+	heap32[(r1+4)] = 0;
+}
+	r3 = 1;
+	heap8[r0+20] = r3;
+	heap32[(r1+4)] = 0;
+	heap32[(r1+3)] = 0;
+}
+	r3 = (r2 * 136)|0;
+_44: while(true){
+	r4 = heap32[(r1+4)];
+	r4 = (r4 + r3)|0;
+	r5 = sp + -472;
+	heap32[(g0)] = r4;
+	heap32[(g0+1)] = r5;
+	heap32[(g0+2)] = 136;
+	r2 = (r2 + 1)|0;
+	r3 = (r3 + 136)|0;
+	memcpy(i7);
+	if(r2 !=0) //_LBB611_32
+{
+continue _44;
+}
+else{
+break _33;
+}
+}
+}
+} while(0);
+	heap32[(r1+2)] = 0;
+	r2 = heap32[(r1+7)];
+_47: do {
+if(!(r2 >-1)) //_LBB611_42
+{
+	r3 = heap32[(r1+8)];
+if(!(r3 >-1)) //_LBB611_40
+{
+	r3 = heap32[(r1+9)];
+if(!(r3 ==0)) //_LBB611_39
+{
+	r4 = heapU8[r0+40];
+if(!(r4 ==0)) //_LBB611_38
+{
+	r4 = gNumAlignedFree;
+	r4 = r4 >> 2;
+	r5 = heap32[(r4)];
+	r5 = (r5 + 1)|0;
+	r3 = r3 >> 2;
+	heap32[(r4)] = r5;
+	r3 = heap32[(r3+-1)];
+	heap32[(g0)] = r3;
+	free(i7);
+}
+	heap32[(r1+9)] = 0;
+}
+	r3 = 1;
+	heap8[r0+40] = r3;
+	heap32[(r1+9)] = 0;
+	heap32[(r1+8)] = 0;
+}
+	r3 = (r2 * 136)|0;
+_58: while(true){
+	r4 = heap32[(r1+9)];
+	r4 = (r4 + r3)|0;
+	r5 = sp + -336;
+	heap32[(g0)] = r4;
+	heap32[(g0+1)] = r5;
+	heap32[(g0+2)] = 136;
+	r2 = (r2 + 1)|0;
+	r3 = (r3 + 136)|0;
+	memcpy(i7);
+	if(r2 !=0) //_LBB611_41
+{
+continue _58;
+}
+else{
+break _47;
+}
+}
+}
+} while(0);
+	heap32[(r1+7)] = 0;
+	r2 = heap32[(r1+12)];
+_61: do {
+if(!(r2 >-1)) //_LBB611_51
+{
+	r3 = heap32[(r1+13)];
+if(!(r3 >-1)) //_LBB611_49
+{
+	r3 = heap32[(r1+14)];
+if(!(r3 ==0)) //_LBB611_48
+{
+	r4 = heapU8[r0+60];
+if(!(r4 ==0)) //_LBB611_47
+{
+	r4 = gNumAlignedFree;
+	r4 = r4 >> 2;
+	r5 = heap32[(r4)];
+	r5 = (r5 + 1)|0;
+	r3 = r3 >> 2;
+	heap32[(r4)] = r5;
+	r3 = heap32[(r3+-1)];
+	heap32[(g0)] = r3;
+	free(i7);
+}
+	heap32[(r1+14)] = 0;
+}
+	r3 = 1;
+	heap8[r0+60] = r3;
+	heap32[(r1+14)] = 0;
+	heap32[(r1+13)] = 0;
+}
+	r0 = (r2 * 136)|0;
+_72: while(true){
+	r3 = heap32[(r1+14)];
+	r3 = (r3 + r0)|0;
+	r4 = sp + -200;
+	heap32[(g0)] = r3;
+	heap32[(g0+1)] = r4;
+	heap32[(g0+2)] = 136;
+	r2 = (r2 + 1)|0;
+	r0 = (r0 + 136)|0;
+	memcpy(i7);
+	if(r2 !=0) //_LBB611_50
+{
+continue _72;
+}
+else{
+break _61;
+}
+}
+}
+} while(0);
+	heap32[(r1+12)] = 0;
+	f0 =                         0;
+	f_g0 = f0;
+	return;
+break;
+case 2:
+	r0 = _2E_str955;
+	r1 = _2E_str652;
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r1;
+	heap32[(g0+2)] = 1129;
+	_assert(i7);
+break;
+}
+}
+
+function _ZN35btSequentialImpulseConstraintSolver28solveGroupCacheFriendlySetupEPP17btCollisionObjectiPP20btPersistentManifoldiPP17btTypedConstraintiRK19btContactSolverInfoP12btIDebugDrawP12btStackAlloc(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+	var r6;
+	var r7;
+	var r8;
+	var r9;
+	var r10;
+	var r11;
+	var r12;
+	var r13;
+	var r14;
+	var r15;
+	var r16;
+	var r17;
+	var r18;
+	var r19;
+	var r20;
+	var r21;
+	var r22;
+	var r23;
+	var r24;
+	var r25;
+	var f0;
+	var f1;
+	var f2;
+	var f3;
+	var f4;
+	var f5;
+	var f6;
+	var f7;
+	var f8;
+	var f9;
+	var f10;
+	var f11;
+	var f12;
+	var f13;
+	var f14;
+	var f15;
+	var f16;
+	var f17;
+	var f18;
+	var f19;
+	var f20;
+	var f21;
+	var f22;
+	var f23;
+	var f24;
+	var f25;
+	var f26;
+	var f27;
+	var f28;
+var __label__ = 0;
+	i7 = sp + -584;var g0 = i7>>2; // save stack
+	r0 = _2E_str1056;
+	r1 = heap32[(fp+6)];
+	heap32[(g0)] = r0;
+	r0 = heap32[(fp+4)];
+	heap32[(fp+-133)] = r0;
+	r2 = 0;
+	_ZN15CProfileManager13Start_ProfileEPKc(i7);
+	r0 = (r2 - r0)|0;
+_1: do {
+if(!(r1 ==r0)) //_LBB612_269
+{
+	r0 = heap32[(fp)];
+	r3 = heap32[(fp+1)];
+	r4 = heap32[(fp+2)];
+	r5 = heap32[(fp+3)];
+	heap32[(fp+-132)] = r5;
+	r5 = heap32[(fp+5)];
+	heap32[(fp+-127)] = r5;
+	r5 = heap32[(fp+7)];
+	r6 = r5 >> 2;
+	r7 = heap32[(r6+11)];
+_3: do {
+	if(r7 !=0) //_LBB612_4
+{
+if(!(r4 <1)) //_LBB612_14
+{
+__label__ = 4; //SET chanka
+_5: while(true){
+	r7 = r3 >> 2;
+	r7 = heap32[(r7)];
+	r8 = heapU8[r7+232];
+	r8 = r8 & 2;
+if(!(r8 ==0)) //_LBB612_8
+{
+if(!(r7 ==0)) //_LBB612_8
+{
+	r7 = r7 >> 2;
+	heap32[(r7+126)] = 0;
+	heap32[(r7+127)] = 0;
+	heap32[(r7+128)] = 0;
+	heap32[(r7+129)] = 0;
+	heap32[(r7+130)] = 0;
+	heap32[(r7+131)] = 0;
+	heap32[(r7+132)] = 0;
+	heap32[(r7+133)] = 0;
+	heap32[(r7+142)] = 0;
+	heap32[(r7+143)] = 0;
+	heap32[(r7+144)] = 0;
+	heap32[(r7+145)] = 0;
+	heap32[(r7+146)] = 0;
+	heap32[(r7+147)] = 0;
+	heap32[(r7+148)] = 0;
+	heap32[(r7+149)] = 0;
+}
+}
+	r4 = (r4 + -1)|0;
+	r3 = (r3 + 4)|0;
+	if(r4 ==0) //_LBB612_14
+{
+break _3;
+}
+else{
+continue _5;
+}
+}
+}
+}
+else{
+if(!(r4 <1)) //_LBB612_14
+{
+__label__ = 8; //SET chanka
+_12: while(true){
+	r7 = r3 >> 2;
+	r7 = heap32[(r7)];
+	r8 = heapU8[r7+232];
+	r8 = r8 & 2;
+if(!(r8 ==0)) //_LBB612_12
+{
+if(!(r7 ==0)) //_LBB612_12
+{
+	r7 = r7 >> 2;
+	heap32[(r7+126)] = 0;
+	heap32[(r7+127)] = 0;
+	heap32[(r7+128)] = 0;
+	heap32[(r7+129)] = 0;
+	heap32[(r7+130)] = 0;
+	heap32[(r7+131)] = 0;
+	heap32[(r7+132)] = 0;
+	heap32[(r7+133)] = 0;
+}
+}
+	r4 = (r4 + -1)|0;
+	r3 = (r3 + 4)|0;
+	if(r4 ==0) //_LBB612_14
+{
+break _3;
+}
+}
+}
+}
+} while(0);
+_19: do {
+	if(r1 <1) //_LBB612_40
+{
+	r4 = r0 >> 2;
+	r3 = heap32[(r4+27)];
+_21: do {
+if(!(r3 >r1)) //_LBB612_59
+{
+if(!(r3 >=r1)) //_LBB612_59
+{
+	r7 = heap32[(r4+28)];
+if(!(r7 >=r1)) //_LBB612_58
+{
+	if(r1 !=0) //_LBB612_45
+{
+	r7 = gNumAlignedAllocs;
+	r7 = r7 >> 2;
+	r8 = heap32[(r7)];
+	r9 = r1 << 3;
+	r8 = (r8 + 1)|0;
+	r9 = r9 | 3;
+	heap32[(r7)] = r8;
+	r7 = (r9 + 16)|0;
+	heap32[(g0)] = r7;
+	malloc(i7);
+	r7 = r_g0;
+	if(r7 !=0) //_LBB612_47
+{
+	r8 = (r7 + 4)|0;
+	r8 = (r2 - r8)|0;
+	r8 = r8 & 15;
+	r8 = (r7 + r8)|0;
+	r9 = (r8 + 4)|0;
+	r8 = r8 >> 2;
+	heap32[(r8)] = r7;
+	r7 = r9;
+}
+}
+else{
+	r7 = 0;
+}
+	r8 = (r0 + 116)|0;
+	if(r3 <1) //_LBB612_50
+{
+	r2 = r8 >> 2;
+	r9 = heap32[(r2)];
+}
+else{
+_33: while(true){
+	r9 = r8 >> 2;
+	r9 = heap32[(r9)];
+	r10 = r2 << 3;
+	r11 = (r9 + r10)|0;
+	r11 = r11 >> 2;
+	r10 = (r7 + r10)|0;
+	r12 = heap32[(r11+1)];
+	r11 = heap32[(r11)];
+	r10 = r10 >> 2;
+	r2 = (r2 + 1)|0;
+	heap32[(r10)] = r11;
+	heap32[(r10+1)] = r12;
+if(!(r3 !=r2)) //_LBB612_51
+{
+break _33;
+}
+}
+	r8 = (r0 + 116)|0;
+}
+if(!(r9 ==0)) //_LBB612_57
+{
+	r2 = heapU8[r0+120];
+if(!(r2 ==0)) //_LBB612_56
+{
+	r2 = gNumAlignedFree;
+	r2 = r2 >> 2;
+	r10 = heap32[(r2)];
+	r10 = (r10 + 1)|0;
+	r9 = r9 >> 2;
+	heap32[(r2)] = r10;
+	r2 = heap32[(r9+-1)];
+	heap32[(g0)] = r2;
+	free(i7);
+}
+	r2 = r8 >> 2;
+	heap32[(r2)] = 0;
+}
+	r2 = 1;
+	r8 = r8 >> 2;
+	heap8[r0+120] = r2;
+	heap32[(r8)] = r7;
+	heap32[(r4+28)] = r1;
+	if(r3 >=r1) //_LBB612_59
+{
+break _21;
+}
+}
+_43: while(true){
+	r2 = r3 << 3;
+	r7 = heap32[(r4+29)];
+	r2 = (r7 + r2)|0;
+	r2 = r2 >> 2;
+	r3 = (r3 + 1)|0;
+	heap32[(r2)] = 0;
+	heap32[(r2+1)] = 0;
+if(!(r1 !=r3)) //_LBB612_58
+{
+break _21;
+}
+}
+}
+}
+} while(0);
+	r3 = 0;
+	heap32[(r4+27)] = r1;
+}
+else{
+	r2 = 0;
+_47: while(true){
+	r3 = r2 << 2;
+	r4 = heap32[(fp+-127)];
+	r3 = (r4 + r3)|0;
+	r3 = r3 >> 2;
+	r3 = heap32[(r3)];
+	r4 = r3 >> 2;
+	r4 = heap32[(r4)];
+	r4 = r4 >> 2;
+	r4 = heap32[(r4+2)];
+	r2 = (r2 + 1)|0;
+	heap32[(g0)] = r3;
+	__FUNCTION_TABLE__[(r4)>>2](i7);
+	if(r1 ==r2) //_LBB612_16
+{
+break _47;
+}
+}
+	r2 = r0 >> 2;
+	r3 = heap32[(r2+27)];
+_50: do {
+if(!(r3 >r1)) //_LBB612_35
+{
+if(!(r3 >=r1)) //_LBB612_35
+{
+	r4 = heap32[(r2+28)];
+if(!(r4 >=r1)) //_LBB612_34
+{
+	if(r1 !=0) //_LBB612_21
+{
+	r4 = gNumAlignedAllocs;
+	r4 = r4 >> 2;
+	r7 = heap32[(r4)];
+	r8 = r1 << 3;
+	r7 = (r7 + 1)|0;
+	r8 = r8 | 3;
+	heap32[(r4)] = r7;
+	r4 = (r8 + 16)|0;
+	heap32[(g0)] = r4;
+	malloc(i7);
+	r4 = r_g0;
+	if(r4 !=0) //_LBB612_23
+{
+	r7 = 0;
+	r8 = (r4 + 4)|0;
+	r7 = (r7 - r8)|0;
+	r7 = r7 & 15;
+	r7 = (r4 + r7)|0;
+	r8 = (r7 + 4)|0;
+	r7 = r7 >> 2;
+	heap32[(r7)] = r4;
+	r4 = r8;
+}
+}
+else{
+	r4 = 0;
+}
+	r7 = (r0 + 116)|0;
+	if(r3 <1) //_LBB612_26
+{
+	r8 = r7 >> 2;
+	r9 = heap32[(r8)];
+}
+else{
+	r8 = 0;
+_63: while(true){
+	r9 = r7 >> 2;
+	r9 = heap32[(r9)];
+	r10 = r8 << 3;
+	r11 = (r9 + r10)|0;
+	r11 = r11 >> 2;
+	r10 = (r4 + r10)|0;
+	r12 = heap32[(r11+1)];
+	r11 = heap32[(r11)];
+	r10 = r10 >> 2;
+	r8 = (r8 + 1)|0;
+	heap32[(r10)] = r11;
+	heap32[(r10+1)] = r12;
+if(!(r3 !=r8)) //_LBB612_27
+{
+break _63;
+}
+}
+	r7 = (r0 + 116)|0;
+}
+if(!(r9 ==0)) //_LBB612_33
+{
+	r8 = heapU8[r0+120];
+if(!(r8 ==0)) //_LBB612_32
+{
+	r8 = gNumAlignedFree;
+	r8 = r8 >> 2;
+	r10 = heap32[(r8)];
+	r10 = (r10 + 1)|0;
+	r9 = r9 >> 2;
+	heap32[(r8)] = r10;
+	r8 = heap32[(r9+-1)];
+	heap32[(g0)] = r8;
+	free(i7);
+}
+	r8 = r7 >> 2;
+	heap32[(r8)] = 0;
+}
+	r8 = 1;
+	r7 = r7 >> 2;
+	heap8[r0+120] = r8;
+	heap32[(r7)] = r4;
+	heap32[(r2+28)] = r1;
+	if(r3 >=r1) //_LBB612_35
+{
+break _50;
+}
+}
+_73: while(true){
+	r4 = r3 << 3;
+	r7 = heap32[(r2+29)];
+	r4 = (r7 + r4)|0;
+	r4 = r4 >> 2;
+	r3 = (r3 + 1)|0;
+	heap32[(r4)] = 0;
+	heap32[(r4+1)] = 0;
+if(!(r1 !=r3)) //_LBB612_34
+{
+break _50;
+}
+}
+}
+}
+} while(0);
+	heap32[(r2+27)] = r1;
+	if(r1 >0) //_LBB612_37
+{
+	r4 = 0;
+	r7 = heap32[(fp+-127)];
+	r8 = r1;
+	r3 = r4;
+_78: while(true){
+	r9 = r7 >> 2;
+	r9 = heap32[(r9)];
+	r10 = r9 >> 2;
+	r10 = heap32[(r10)];
+	r10 = r10 >> 2;
+	r10 = heap32[(r10+4)];
+	r11 = heap32[(r2+29)];
+	r11 = (r11 + r4)|0;
+	heap32[(g0)] = r9;
+	heap32[(g0+1)] = r11;
+	__FUNCTION_TABLE__[(r10)>>2](i7);
+	r9 = r11 >> 2;
+	r9 = heap32[(r9)];
+	r8 = (r8 + -1)|0;
+	r3 = (r9 + r3)|0;
+	r4 = (r4 + 8)|0;
+	r7 = (r7 + 4)|0;
+if(!(r8 !=0)) //_LBB612_38
+{
+break _19;
+}
+}
+}
+else{
+	r3 = 0;
+}
+}
+} while(0);
+	r2 = r0 >> 2;
+	r4 = heap32[(r2+7)];
+_82: do {
+if(!(r4 >r3)) //_LBB612_80
+{
+if(!(r4 >=r3)) //_LBB612_80
+{
+	r7 = heap32[(r2+8)];
+if(!(r7 >=r3)) //_LBB612_78
+{
+	if(r3 !=0) //_LBB612_65
+{
+	r7 = gNumAlignedAllocs;
+	r7 = r7 >> 2;
+	r8 = heap32[(r7)];
+	r9 = (r3 * 136)|0;
+	r8 = (r8 + 1)|0;
+	r9 = r9 | 3;
+	heap32[(r7)] = r8;
+	r7 = (r9 + 16)|0;
+	heap32[(g0)] = r7;
+	malloc(i7);
+	r7 = r_g0;
+	if(r7 !=0) //_LBB612_67
+{
+	r8 = 0;
+	r9 = (r7 + 4)|0;
+	r8 = (r8 - r9)|0;
+	r8 = r8 & 15;
+	r8 = (r7 + r8)|0;
+	r9 = (r8 + 4)|0;
+	r8 = r8 >> 2;
+	heap32[(r8)] = r7;
+	r7 = r9;
+}
+}
+else{
+	r7 = 0;
+}
+	r8 = (r0 + 36)|0;
+	if(r4 <1) //_LBB612_70
+{
+	r9 = r8 >> 2;
+	r11 = heap32[(r9)];
+}
+else{
+	r9 = 0;
+	r10 = r4;
+_95: while(true){
+	r11 = r8 >> 2;
+	r11 = heap32[(r11)];
+	r12 = (r7 + r9)|0;
+	r13 = (r11 + r9)|0;
+	heap32[(g0)] = r12;
+	heap32[(g0+1)] = r13;
+	heap32[(g0+2)] = 136;
+	r10 = (r10 + -1)|0;
+	r9 = (r9 + 136)|0;
+	memcpy(i7);
+if(!(r10 !=0)) //_LBB612_71
+{
+break _95;
+}
+}
+	r8 = (r0 + 36)|0;
+}
+if(!(r11 ==0)) //_LBB612_77
+{
+	r9 = heapU8[r0+40];
+if(!(r9 ==0)) //_LBB612_76
+{
+	r9 = gNumAlignedFree;
+	r9 = r9 >> 2;
+	r10 = heap32[(r9)];
+	r10 = (r10 + 1)|0;
+	r11 = r11 >> 2;
+	heap32[(r9)] = r10;
+	r9 = heap32[(r11+-1)];
+	heap32[(g0)] = r9;
+	free(i7);
+}
+	r9 = r8 >> 2;
+	heap32[(r9)] = 0;
+}
+	r9 = 1;
+	r8 = r8 >> 2;
+	heap8[r0+40] = r9;
+	heap32[(r8)] = r7;
+	heap32[(r2+8)] = r3;
+	if(r4 >=r3) //_LBB612_80
+{
+break _82;
+}
+}
+	r7 = (r3 - r4)|0;
+	r4 = (r4 * 136)|0;
+_106: while(true){
+	r8 = heap32[(r2+9)];
+	r8 = (r8 + r4)|0;
+	r9 = sp + -448;
+	heap32[(g0)] = r8;
+	heap32[(g0+1)] = r9;
+	heap32[(g0+2)] = 136;
+	r7 = (r7 + -1)|0;
+	r4 = (r4 + 136)|0;
+	memcpy(i7);
+if(!(r7 !=0)) //_LBB612_79
+{
+break _82;
+}
+}
+}
+}
+} while(0);
+	r4 = 0;
+	heap32[(r2+7)] = r3;
+	r7 = r4;
+_109: while(true){
+	if(r4 <r1) //_LBB612_81
+{
+	r8 = heap32[(r2+29)];
+	r9 = r4 << 3;
+	r10 = (r8 + r9)|0;
+	r10 = r10 >> 2;
+	r10 = heap32[(r10)];
+	if(r10 !=0) //_LBB612_83
+{
+	if(r7 <r3) //_LBB612_85
+{
+	r11 = r4 << 1;
+	r12 = r4 << 2;
+	r13 = heap32[(fp+-127)];
+	r12 = (r13 + r12)|0;
+	r12 = r12 >> 2;
+	r13 = heap32[(r12)];
+	r14 = r13 >> 2;
+	r15 = heap32[(r2+9)];
+	r16 = heap32[(r14+5)];
+	r17 = heap32[(r14+6)];
+if(!(r10 <1)) //_LBB612_90
+{
+	r10 = (r7 * 136)|0;
+	r10 = (r15 + r10)|0;
+	r18 = 0;
+	r19 = r18;
+_117: while(true){
+	r20 = (r19 * 34)|0;
+	r21 = 136;
+	r22 = r18;
+_119: while(true){
+	r21 = (r21 + -1)|0;
+	r23 = (r22 + 1)|0;
+	r22 = (r10 + r22)|0;
+	r24 = (r19 * 136)|0;
+	heap8[r22+r24] = r18;
+	r22 = r23;
+if(!(r21 !=0)) //_LBB612_88
+{
+break _119;
+}
+}
+	r21 = r20 << 2;
+	r22 = r20 << 2;
+	r21 = (r10 + r21)|0;
+	r23 = r20 << 2;
+	r22 = (r10 + r22)|0;
+	r21 = r21 >> 2;
+	r24 = r20 << 2;
+	r23 = (r10 + r23)|0;
+	r22 = r22 >> 2;
+	heap32[(r21+31)] = -8388609;
+	r21 = r20 << 2;
+	r24 = (r10 + r24)|0;
+	r23 = r23 >> 2;
+	heap32[(r22+32)] = 2139095039;
+	r20 = r20 << 2;
+	r21 = (r10 + r21)|0;
+	r22 = r24 >> 2;
+	heap32[(r23+21)] = 0;
+	r20 = (r10 + r20)|0;
+	r23 = r11 << 2;
+	r21 = r21 >> 2;
+	heap32[(r22+20)] = 0;
+	r22 = (r8 + r23)|0;
+	r19 = (r19 + 1)|0;
+	r20 = r20 >> 2;
+	heap32[(r21+26)] = r16;
+	r21 = r22 >> 2;
+	heap32[(r20+27)] = r17;
+	r20 = heap32[(r21)];
+if(!(r20 >r19)) //_LBB612_87
+{
+break _117;
+}
+}
+}
+	r10 = r16 >> 2;
+	heap32[(r10+126)] = 0;
+	heap32[(r10+127)] = 0;
+	heap32[(r10+128)] = 0;
+	heap32[(r10+129)] = 0;
+	heap32[(r10+130)] = 0;
+	heap32[(r10+131)] = 0;
+	heap32[(r10+132)] = 0;
+	heap32[(r10+133)] = 0;
+	r16 = r17 >> 2;
+	heap32[(r16+126)] = 0;
+	heap32[(r16+127)] = 0;
+	heap32[(r16+128)] = 0;
+	heap32[(r16+129)] = 0;
+	heap32[(r16+130)] = 0;
+	heap32[(r16+131)] = 0;
+	heap32[(r16+132)] = 0;
+	heap32[(r16+133)] = 0;
+	f0 =                         1;
+	f1 = heapFloat[(r6+3)];
+	r17 = sp + -504;
+	f1 = f0/f1;
+	r18 = (r7 * 136)|0;
+	r15 = (r15 + r18)|0;
+	r18 = r17 >> 2;
+	heapFloat[(fp+-126)] = f1;
+	r19 = (r15 + 16)|0;
+	heap32[(r18+1)] = heap32[(r6+8)];
+	heap32[(r18+2)] = r19;
+	heap32[(r18+3)] = r15;
+	r19 = (r15 + 32)|0;
+	heap32[(r18+4)] = 0;
+	heap32[(r18+5)] = r19;
+	r19 = (r15 + 116)|0;
+	heap32[(r18+6)] = 34;
+	r20 = r15 >> 2;
+	heap32[(r18+7)] = r19;
+	heap32[(r20+30)] = heap32[(r6+10)];
+	r19 = (r15 + 120)|0;
+	heap32[(r18+13)] = heap32[(r6+1)];
+	r20 = (r15 + 124)|0;
+	heap32[(r18+8)] = r19;
+	r19 = (r15 + 128)|0;
+	heap32[(r18+9)] = r20;
+	heap32[(r18+10)] = r19;
+	r19 = heap32[(r6+5)];
+	heap32[(r18+12)] = r19;
+	r12 = heap32[(r12)];
+	r19 = r12 >> 2;
+	r19 = heap32[(r19)];
+	r19 = r19 >> 2;
+	r19 = heap32[(r19+5)];
+	r11 = r11 << 2;
+	heap32[(g0)] = r12;
+	heap32[(g0+1)] = r17;
+	r8 = (r8 + r11)|0;
+	r8 = r8 >> 2;
+	__FUNCTION_TABLE__[(r19)>>2](i7);
+	r11 = heap32[(r8)];
+_123: do {
+if(!(r11 <1)) //_LBB612_93
+{
+	r11 = 0;
+_125: while(true){
+	r12 = (r11 * 34)|0;
+	r12 = r12 << 2;
+	r12 = (r15 + r12)|0;
+	r12 = r12 >> 2;
+	heap32[(r12+28)] = r13;
+	r17 = heap32[(r14+5)];
+	r17 = r17 >> 2;
+	f1 = heapFloat[(r12)];
+	f2 = heapFloat[(r17+64)];
+	f3 = heapFloat[(r12+1)];
+	f4 = heapFloat[(r17+65)];
+	f5 = heapFloat[(r17+68)];
+	f6 = heapFloat[(r17+69)];
+	f2 = f2*f1;
+	f4 = f4*f3;
+	f7 = heapFloat[(r12+2)];
+	f8 = heapFloat[(r17+66)];
+	f9 = heapFloat[(r17+72)];
+	f10 = heapFloat[(r17+73)];
+	f11 = heapFloat[(r17+70)];
+	f5 = f5*f1;
+	f6 = f6*f3;
+	f2 = f2+f4;
+	f4 = f8*f7;
+	f8 = heapFloat[(r17+74)];
+	f9 = f9*f1;
+	f10 = f10*f3;
+	f5 = f5+f6;
+	f6 = f11*f7;
+	f2 = f2+f4;
+	f4 = heapFloat[(r17+134)];
+	f11 = heapFloat[(r17+136)];
+	f12 = heapFloat[(r17+135)];
+	f5 = f5+f6;
+	f6 = f9+f10;
+	f8 = f8*f7;
+	f2 = f2*f4;
+	f4 = f6+f8;
+	f5 = f5*f12;
+	heapFloat[(r12+12)] = f2;
+	f2 = f4*f11;
+	heapFloat[(r12+13)] = f5;
+	heapFloat[(r12+14)] = f2;
+	heap32[(r12+15)] = 0;
+	r17 = heap32[(r14+6)];
+	r17 = r17 >> 2;
+	f2 = heapFloat[(r12+8)];
+	f4 = heapFloat[(r17+64)];
+	f5 = heapFloat[(r12+9)];
+	f6 = heapFloat[(r17+65)];
+	f8 = heapFloat[(r17+68)];
+	f9 = heapFloat[(r17+69)];
+	f4 = f4*f2;
+	f6 = f6*f5;
+	f10 = heapFloat[(r12+10)];
+	f11 = heapFloat[(r17+66)];
+	f12 = heapFloat[(r17+72)];
+	f13 = heapFloat[(r17+73)];
+	f14 = heapFloat[(r17+70)];
+	f8 = f8*f2;
+	f9 = f9*f5;
+	f4 = f4+f6;
+	f6 = f11*f10;
+	f11 = heapFloat[(r17+74)];
+	f12 = f12*f2;
+	f13 = f13*f5;
+	f8 = f8+f9;
+	f9 = f14*f10;
+	f4 = f4+f6;
+	f6 = heapFloat[(r17+134)];
+	f14 = heapFloat[(r17+136)];
+	f15 = heapFloat[(r17+135)];
+	f8 = f8+f9;
+	f9 = f12+f13;
+	f11 = f11*f10;
+	f4 = f4*f6;
+	f6 = f9+f11;
+	f8 = f8*f15;
+	heapFloat[(r12+16)] = f4;
+	f4 = f6*f14;
+	heapFloat[(r12+17)] = f8;
+	heapFloat[(r12+18)] = f4;
+	heap32[(r12+19)] = 0;
+	f4 = heapFloat[(r10+68)];
+	f6 = heapFloat[(r10+69)];
+	f8 = heapFloat[(r10+64)];
+	f9 = heapFloat[(r10+65)];
+	f11 = heapFloat[(r10+72)];
+	f12 = heapFloat[(r10+73)];
+	f13 = heapFloat[(r10+70)];
+	f14 = heapFloat[(r10+66)];
+	f8 = f8*f1;
+	f9 = f9*f3;
+	f4 = f4*f1;
+	f6 = f6*f3;
+	f15 = heapFloat[(r10+74)];
+	f16 = heapFloat[(r16+68)];
+	f17 = heapFloat[(r16+69)];
+	f18 = heapFloat[(r16+64)];
+	f19 = heapFloat[(r16+65)];
+	f8 = f8+f9;
+	f9 = f14*f7;
+	f4 = f4+f6;
+	f6 = f13*f7;
+	f11 = f11*f1;
+	f12 = f12*f3;
+	f13 = heapFloat[(r10+84)];
+	f14 = heapFloat[(r12+5)];
+	f20 = heapFloat[(r12+4)];
+	f21 = heapFloat[(r16+84)];
+	f22 = heapFloat[(r12+6)];
+	f8 = f8+f9;
+	f4 = f4+f6;
+	f6 = f20*f13;
+	f9 = f14*f13;
+	f23 = heapFloat[(r16+72)];
+	f24 = heapFloat[(r16+73)];
+	f25 = heapFloat[(r16+70)];
+	f26 = heapFloat[(r16+66)];
+	f18 = f18*f2;
+	f19 = f19*f5;
+	f16 = f16*f2;
+	f17 = f17*f5;
+	f11 = f11+f12;
+	f12 = f15*f7;
+	f15 = heapFloat[(r16+74)];
+	f27 = f20*f21;
+	f28 = f14*f21;
+	f11 = f11+f12;
+	f12 = f22*f13;
+	f13 = f18+f19;
+	f18 = f26*f10;
+	f16 = f16+f17;
+	f17 = f25*f10;
+	f19 = f23*f2;
+	f23 = f24*f5;
+	f8 = f8*f1;
+	f4 = f4*f3;
+	f6 = f6*f20;
+	f9 = f9*f14;
+	f13 = f13+f18;
+	f16 = f16+f17;
+	f17 = f22*f21;
+	f18 = f19+f23;
+	f15 = f15*f10;
+	f19 = f27*f20;
+	f21 = f28*f14;
+	f4 = f8+f4;
+	f8 = f11*f7;
+	f6 = f6+f9;
+	f9 = f12*f22;
+	f11 = f18+f15;
+	f12 = f13*f2;
+	f13 = f16*f5;
+	f15 = f19+f21;
+	f16 = f17*f22;
+	f4 = f4+f8;
+	f6 = f6+f9;
+	f8 = f12+f13;
+	f9 = f11*f10;
+	f11 = f15+f16;
+	f4 = f4+f6;
+	f6 = f8+f9;
+	f4 = f11+f4;
+	f4 = f6+f4;
+	f4 = f0/f4;
+	heapFloat[(r12+23)] = f4;
+	f6 = heapFloat[(r10+76)];
+	f8 = heapFloat[(r10+77)];
+	f9 = heapFloat[(r10+80)];
+	f11 = heapFloat[(r10+81)];
+	f12 = heapFloat[(r16+80)];
+	f13 = heapFloat[(r16+81)];
+	f15 = heapFloat[(r16+76)];
+	f16 = heapFloat[(r16+77)];
+	f17 = heapFloat[(r10+78)];
+	f18 = heapFloat[(r10+82)];
+	f19 = heapFloat[(r16+82)];
+	f21 = heapFloat[(r16+78)];
+	f6 = f20*f6;
+	f8 = f14*f8;
+	f1 = f1*f9;
+	f3 = f3*f11;
+	f2 = f2*f12;
+	f5 = f5*f13;
+	f9 = f20*f15;
+	f11 = f14*f16;
+	f6 = f6+f8;
+	f8 = f22*f17;
+	f1 = f1+f3;
+	f3 = f7*f18;
+	f2 = f2+f5;
+	f5 = f10*f19;
+	f7 = f9+f11;
+	f9 = f22*f21;
+	f6 = f6+f8;
+	f1 = f1+f3;
+	f2 = f2+f5;
+	f3 = f7+f9;
+	f1 = f6+f1;
+	f2 = f2-f3;
+	f1 = f1+f2;
+	f2 = heapFloat[(r18+13)];
+	f3 =                         0;
+	f1 = f2*f1;
+	f2 = heapFloat[(r12+29)];
+	f1 = f3-f1;
+	f2 = f4*f2;
+	f1 = f4*f1;
+	f1 = f2+f1;
+	r11 = (r11 + 1)|0;
+	heapFloat[(r12+29)] = f1;
+	heap32[(r12+21)] = 0;
+	r12 = heap32[(r8)];
+if(!(r12 >r11)) //_LBB612_92
+{
+break _123;
+}
+}
+}
+} while(0);
+	r8 = heap32[(r2+29)];
+	r8 = (r8 + r9)|0;
+	r8 = r8 >> 2;
+	r8 = heap32[(r8)];
+}
+else{
+__label__ = 78;
+break _109;
+}
+}
+else{
+	r8 = 0;
+}
+	r7 = (r8 + r7)|0;
+	r4 = (r4 + 1)|0;
+}
+else{
+__label__ = 90;
+break _109;
+}
+}
+switch(__label__ ){//multiple entries
+case 90:
+	r1 = heap32[(fp+-133)];
+_132: do {
+if(!(r1 <1)) //_LBB612_225
+{
+_133: while(true){
+	r1 = heap32[(fp+-132)];
+	r1 = r1 >> 2;
+	r1 = heap32[(r1)];
+	heap32[(fp+-128)] = r1;
+	r1 = r1 >> 2;
+	heap32[(fp+-127)] = r1;
+	r3 = heap32[(r1+277)];
+	r1 = heap32[(r1+278)];
+	r4 = heapU8[r3+232];
+	r4 = r4 & 2;
+	if(r4 !=0) //_LBB612_99
+{
+	r4 = r3;
+}
+else{
+	r4 = 0;
+}
+	r7 = heapU8[r1+232];
+	r7 = r7 & 2;
+	if(r7 !=0) //_LBB612_102
+{
+	r7 = r1;
+}
+else{
+	r7 = 0;
+}
+	if(r4 ==0) //_LBB612_105
+{
+__label__ = 99;
+}
+else{
+	r4 = r4 >> 2;
+	f0 = heapFloat[(r4+84)];
+	f1 =                         0;
+	if(f0 !=f1) //_LBB612_107
+{
+__label__ = 101;
+}
+else{
+__label__ = 99;
+}
+}
+if (__label__ == 99){
+	if(r7 ==0) //_LBB612_224
+{
+__label__ = 216;
+}
+else{
+	r4 = r7 >> 2;
+	f0 = heapFloat[(r4+84)];
+	f1 =                         0;
+	if(f0 ==f1) //_LBB612_224
+{
+__label__ = 216;
+}
+else{
+__label__ = 101;
+}
+}
+}
+if (__label__ == 101){
+	r4 = heap32[(fp+-128)];
+	r7 = (r4 + 4)|0;
+	heap32[(fp+-129)] = r7;
+	r7 = (r4 + 152)|0;
+	heap32[(fp+-130)] = r7;
+	r4 = (r4 + 168)|0;
+	heap32[(fp+-131)] = r4;
+	r4 = 0;
+	r7 = r4;
+_150: while(true){
+	r8 = heap32[(fp+-127)];
+	r8 = heap32[(r8+279)];
+	if(r8 >r7) //_LBB612_108
+{
+	r8 = heap32[(fp+-128)];
+	r8 = (r8 + r4)|0;
+	r9 = r8 >> 2;
+	f0 = heapFloat[(r9+21)];
+	r10 = heap32[(fp+-127)];
+	f1 = heapFloat[(r10+281)];
+_153: do {
+if(!(f0 >f1)) //_LBB612_222
+{
+	r10 = heap32[(fp+-129)];
+	r10 = (r10 + r4)|0;
+	r11 = heap32[(fp+-131)];
+	r11 = (r11 + r4)|0;
+	r12 = heap32[(fp+-130)];
+	r12 = (r12 + r4)|0;
+	r13 = heap32[(r2+3)];
+	r14 = heap32[(r2+2)];
+	if(r13 ==r14) //_LBB612_111
+{
+	r15 = 1;
+	r16 = r14 << 1;
+	r16 = r14 == 0 ? r15 : r16;
+	if(r13 >=r16) //_LBB612_110
+{
+__label__ = 104;
+}
+else{
+	if(r16 !=0) //_LBB612_114
+{
+	r13 = gNumAlignedAllocs;
+	r13 = r13 >> 2;
+	r17 = heap32[(r13)];
+	r18 = (r16 * 136)|0;
+	r17 = (r17 + 1)|0;
+	r18 = r18 | 3;
+	heap32[(r13)] = r17;
+	r13 = (r18 + 16)|0;
+	heap32[(g0)] = r13;
+	malloc(i7);
+	r17 = r_g0;
+	if(r17 !=0) //_LBB612_116
+{
+	r13 = 0;
+	r18 = (r17 + 4)|0;
+	r13 = (r13 - r18)|0;
+	r13 = r13 & 15;
+	r13 = (r17 + r13)|0;
+	r18 = (r13 + 4)|0;
+	r13 = r13 >> 2;
+	heap32[(r13)] = r17;
+	r17 = r18;
+}
+}
+else{
+	r17 = 0;
+}
+	if(r14 <1) //_LBB612_119
+{
+	r19 = heap32[(r2+4)];
+}
+else{
+	r13 = 0;
+	r18 = r14;
+_166: while(true){
+	r19 = heap32[(r2+4)];
+	r20 = (r17 + r13)|0;
+	r21 = (r19 + r13)|0;
+	heap32[(g0)] = r20;
+	heap32[(g0+1)] = r21;
+	heap32[(g0+2)] = 136;
+	r18 = (r18 + -1)|0;
+	r13 = (r13 + 136)|0;
+	memcpy(i7);
+if(!(r18 !=0)) //_LBB612_120
+{
+break _166;
+}
+}
+}
+	if(r19 !=0) //_LBB612_123
+{
+	r13 = heapU8[r0+20];
+	if(r13 !=0) //_LBB612_125
+{
+	r13 = gNumAlignedFree;
+	r13 = r13 >> 2;
+	r18 = heap32[(r13)];
+	r18 = (r18 + 1)|0;
+	r19 = r19 >> 2;
+	heap32[(r13)] = r18;
+	r13 = heap32[(r19+-1)];
+	heap32[(g0)] = r13;
+	free(i7);
+	r13 = heap32[(r2+2)];
+}
+else{
+	r13 = r14;
+}
+	heap32[(r2+4)] = 0;
+}
+else{
+	r13 = r14;
+}
+	heap8[r0+20] = r15;
+	heap32[(r2+4)] = r17;
+	heap32[(r2+3)] = r16;
+__label__ = 121;
+}
+}
+else{
+__label__ = 104;
+}
+if (__label__ == 104){
+	r13 = r14;
+}
+	r13 = (r13 + 1)|0;
+	heap32[(r2+2)] = r13;
+	r13 = heapU8[r3+232];
+	r15 = heapU8[r1+232];
+	r13 = r13 & 2;
+	r16 = 0;
+	r15 = r15 & 2;
+	r13 = r13 == 0 ? r16 : r3;
+	r17 = heap32[(r2+4)];
+	r15 = r15 == 0 ? r16 : r1;
+	if(r13 ==0) //_LBB612_130
+{
+	r18 = _ZGVZN35btSequentialImpulseConstraintSolver12getFixedBodyEvE7s_fixed;
+	r19 = heapU8[r18];
+if(!(r19 !=0)) //_LBB612_132
+{
+	r19 = _ZZN35btSequentialImpulseConstraintSolver12getFixedBodyEvE7s_fixed;
+	r20 = r19 >> 2;
+	heap32[(r20+41)] = 1065353216;
+	heap32[(r20+42)] = 1065353216;
+	heap32[(r20+43)] = 1065353216;
+	heap32[(r20+44)] = 0;
+	heap32[(r20+45)] = 0;
+	heap32[(r20+46)] = 1566444395;
+	heap32[(r20+47)] = 0;
+	heap32[(r20+48)] = 0;
+	heap32[(r20+49)] = 0;
+	heap32[(r20+50)] = 0;
+	heap32[(r20+51)] = 1;
+	heap32[(r20+52)] = -1;
+	heap32[(r20+53)] = -1;
+	heap32[(r20+54)] = 1;
+	heap32[(r20+55)] = 0;
+	heap32[(r20+56)] = 1056964608;
+	heap32[(r20+57)] = 0;
+	heap32[(r20+58)] = 1;
+	heap32[(r20+59)] = 0;
+	heap32[(r20+60)] = 1065353216;
+	heap32[(r20+61)] = 0;
+	heap32[(r20+62)] = 0;
+	heap32[(r20+63)] = 0;
+	heap32[(r20+1)] = 1065353216;
+	heap32[(r20+2)] = 0;
+	heap32[(r20+3)] = 0;
+	heap32[(r20+4)] = 0;
+	heap32[(r20+5)] = 0;
+	heap32[(r20+6)] = 1065353216;
+	heap32[(r20+7)] = 0;
+	heap32[(r20+8)] = 0;
+	heap32[(r20+9)] = 0;
+	heap32[(r20+10)] = 0;
+	heap32[(r20+11)] = 1065353216;
+	heap32[(r20+12)] = 0;
+	heap32[(r20+13)] = 0;
+	heap32[(r20+14)] = 0;
+	r21 = _ZTV11btRigidBody;
+	heap32[(r20+15)] = 0;
+	r21 = (r21 + 8)|0;
+	heap32[(r20+16)] = 0;
+	r22 = 1;
+	heap32[(r20)] = r21;
+	heap8[r19+492] = r22;
+	heap32[(r20+122)] = 0;
+	heap32[(r20+120)] = 0;
+	r21 = sp + -280;
+	heap32[(r20+121)] = 0;
+	r20 = r21 >> 2;
+	heap32[(fp+-70)] = 0;
+	heap32[(r20+1)] = 0;
+	heap32[(r20+18)] = 0;
+	heap32[(r20+19)] = 0;
+	heap32[(r20+20)] = 0;
+	heap32[(r20+21)] = 0;
+	heap32[(r20+22)] = 0;
+	heap32[(r20+23)] = 0;
+	heap32[(r20+24)] = 0;
+	heap32[(r20+25)] = 1056964608;
+	heap32[(r20+26)] = 0;
+	heap32[(r20+27)] = 1061997773;
+	heap32[(r20+28)] = 1065353216;
+	heap8[sp+-164] = r16;
+	heap32[(r20+30)] = 1000593162;
+	heap32[(r20+31)] = 1008981770;
+	heap32[(r20+32)] = 1008981770;
+	heap32[(r20+33)] = 1008981770;
+	heap32[(r20+2)] = 1065353216;
+	heap32[(r20+3)] = 0;
+	heap32[(r20+4)] = 0;
+	heap32[(r20+5)] = 0;
+	heap32[(r20+6)] = 0;
+	heap32[(r20+7)] = 1065353216;
+	heap32[(r20+8)] = 0;
+	heap32[(r20+9)] = 0;
+	heap32[(r20+10)] = 0;
+	heap32[(r20+11)] = 0;
+	heap32[(r20+12)] = 1065353216;
+	heap32[(r20+13)] = 0;
+	heap32[(r20+14)] = 0;
+	heap32[(r20+15)] = 0;
+	heap32[(r20+16)] = 0;
+	heap32[(r20+17)] = 0;
+	heap32[(g0)] = r19;
+	heap32[(g0+1)] = r21;
+	_ZN11btRigidBody14setupRigidBodyERKNS_27btRigidBodyConstructionInfoE(i7);
+	heap8[r18] = r22;
+}
+	r18 = _ZZN35btSequentialImpulseConstraintSolver12getFixedBodyEvE7s_fixed;
+	r19 = r18 >> 2;
+	r20 = heap32[(r19+51)];
+	r20 = r20 | 1;
+	heap32[(r19+51)] = r20;
+	heap32[(r19+84)] = 0;
+	f0 =                         0;
+	f1 = heapFloat[(r19+95)];
+	f2 = heapFloat[(r19+94)];
+	f3 = heapFloat[(r19+93)];
+	f3 = f3*f0;
+	f2 = f2*f0;
+	heapFloat[(r19+89)] = f3;
+	f1 = f1*f0;
+	heapFloat[(r19+90)] = f2;
+	heapFloat[(r19+91)] = f1;
+	heap32[(r19+92)] = 0;
+	heap32[(r19+97)] = 0;
+	heap32[(r19+98)] = 0;
+	heap32[(r19+99)] = 0;
+	heap32[(r19+100)] = 0;
+	f1 = heapFloat[(r19+87)];
+	f2 = heapFloat[(r19+86)];
+	f3 = heapFloat[(r19+85)];
+	f3 = f3*f0;
+	f2 = f2*f0;
+	heapFloat[(r19+138)] = f3;
+	f0 = f1*f0;
+	heapFloat[(r19+139)] = f2;
+	heapFloat[(r19+140)] = f0;
+	heap32[(r19+141)] = 0;
+}
+else{
+	r18 = r13;
+}
+	r19 = (r14 * 136)|0;
+	r17 = (r17 + r19)|0;
+	r17 = r17 >> 2;
+	heap32[(r17+26)] = r18;
+	if(r15 ==0) //_LBB612_135
+{
+	r18 = _ZGVZN35btSequentialImpulseConstraintSolver12getFixedBodyEvE7s_fixed;
+	r19 = heapU8[r18];
+if(!(r19 !=0)) //_LBB612_137
+{
+	r19 = _ZZN35btSequentialImpulseConstraintSolver12getFixedBodyEvE7s_fixed;
+	r20 = r19 >> 2;
+	heap32[(r20+41)] = 1065353216;
+	heap32[(r20+42)] = 1065353216;
+	heap32[(r20+43)] = 1065353216;
+	heap32[(r20+44)] = 0;
+	heap32[(r20+45)] = 0;
+	heap32[(r20+46)] = 1566444395;
+	heap32[(r20+47)] = 0;
+	heap32[(r20+48)] = 0;
+	heap32[(r20+49)] = 0;
+	heap32[(r20+50)] = 0;
+	heap32[(r20+51)] = 1;
+	heap32[(r20+52)] = -1;
+	heap32[(r20+53)] = -1;
+	heap32[(r20+54)] = 1;
+	heap32[(r20+55)] = 0;
+	heap32[(r20+56)] = 1056964608;
+	heap32[(r20+57)] = 0;
+	heap32[(r20+58)] = 1;
+	heap32[(r20+59)] = 0;
+	heap32[(r20+60)] = 1065353216;
+	heap32[(r20+61)] = 0;
+	heap32[(r20+62)] = 0;
+	heap32[(r20+63)] = 0;
+	heap32[(r20+1)] = 1065353216;
+	heap32[(r20+2)] = 0;
+	heap32[(r20+3)] = 0;
+	heap32[(r20+4)] = 0;
+	heap32[(r20+5)] = 0;
+	heap32[(r20+6)] = 1065353216;
+	heap32[(r20+7)] = 0;
+	heap32[(r20+8)] = 0;
+	heap32[(r20+9)] = 0;
+	heap32[(r20+10)] = 0;
+	heap32[(r20+11)] = 1065353216;
+	heap32[(r20+12)] = 0;
+	heap32[(r20+13)] = 0;
+	heap32[(r20+14)] = 0;
+	r21 = _ZTV11btRigidBody;
+	heap32[(r20+15)] = 0;
+	r21 = (r21 + 8)|0;
+	heap32[(r20+16)] = 0;
+	r22 = 1;
+	heap32[(r20)] = r21;
+	heap8[r19+492] = r22;
+	heap32[(r20+122)] = 0;
+	heap32[(r20+120)] = 0;
+	r21 = sp + -144;
+	heap32[(r20+121)] = 0;
+	r20 = r21 >> 2;
+	heap32[(fp+-36)] = 0;
+	heap32[(r20+1)] = 0;
+	heap32[(r20+18)] = 0;
+	heap32[(r20+19)] = 0;
+	heap32[(r20+20)] = 0;
+	heap32[(r20+21)] = 0;
+	heap32[(r20+22)] = 0;
+	heap32[(r20+23)] = 0;
+	heap32[(r20+24)] = 0;
+	heap32[(r20+25)] = 1056964608;
+	heap32[(r20+26)] = 0;
+	heap32[(r20+27)] = 1061997773;
+	heap32[(r20+28)] = 1065353216;
+	heap8[sp+-28] = r16;
+	heap32[(r20+30)] = 1000593162;
+	heap32[(r20+31)] = 1008981770;
+	heap32[(r20+32)] = 1008981770;
+	heap32[(r20+33)] = 1008981770;
+	heap32[(r20+2)] = 1065353216;
+	heap32[(r20+3)] = 0;
+	heap32[(r20+4)] = 0;
+	heap32[(r20+5)] = 0;
+	heap32[(r20+6)] = 0;
+	heap32[(r20+7)] = 1065353216;
+	heap32[(r20+8)] = 0;
+	heap32[(r20+9)] = 0;
+	heap32[(r20+10)] = 0;
+	heap32[(r20+11)] = 0;
+	heap32[(r20+12)] = 1065353216;
+	heap32[(r20+13)] = 0;
+	heap32[(r20+14)] = 0;
+	heap32[(r20+15)] = 0;
+	heap32[(r20+16)] = 0;
+	heap32[(r20+17)] = 0;
+	heap32[(g0)] = r19;
+	heap32[(g0+1)] = r21;
+	_ZN11btRigidBody14setupRigidBodyERKNS_27btRigidBodyConstructionInfoE(i7);
+	heap8[r18] = r22;
+}
+	r18 = _ZZN35btSequentialImpulseConstraintSolver12getFixedBodyEvE7s_fixed;
+	r19 = r18 >> 2;
+	r20 = heap32[(r19+51)];
+	r20 = r20 | 1;
+	heap32[(r19+51)] = r20;
+	heap32[(r19+84)] = 0;
+	f0 =                         0;
+	f1 = heapFloat[(r19+95)];
+	f2 = heapFloat[(r19+94)];
+	f3 = heapFloat[(r19+93)];
+	f3 = f3*f0;
+	f2 = f2*f0;
+	heapFloat[(r19+89)] = f3;
+	f1 = f1*f0;
+	heapFloat[(r19+90)] = f2;
+	heapFloat[(r19+91)] = f1;
+	heap32[(r19+92)] = 0;
+	heap32[(r19+97)] = 0;
+	heap32[(r19+98)] = 0;
+	heap32[(r19+99)] = 0;
+	heap32[(r19+100)] = 0;
+	f1 = heapFloat[(r19+87)];
+	f2 = heapFloat[(r19+86)];
+	f3 = heapFloat[(r19+85)];
+	f3 = f3*f0;
+	f2 = f2*f0;
+	heapFloat[(r19+138)] = f3;
+	f0 = f1*f0;
+	heapFloat[(r19+139)] = f2;
+	heapFloat[(r19+140)] = f0;
+	heap32[(r19+141)] = 0;
+}
+else{
+	r18 = r15;
+}
+	heap32[(r17+27)] = r18;
+	r18 = r1 >> 2;
+	heap32[(r17+28)] = r10;
+	r19 = r3 >> 2;
+	r20 = heap32[(r19+58)];
+	r21 = heap32[(r18+58)];
+	f0 = heapFloat[(r9+15)];
+	f1 = heapFloat[(r19+15)];
+	f2 = heapFloat[(r9+14)];
+	f3 = heapFloat[(r19+14)];
+	f4 = heapFloat[(r9+13)];
+	f5 = heapFloat[(r19+13)];
+	r19 = sp + -296;
+	f4 = f4-f5;
+	f2 = f2-f3;
+	r22 = r19 >> 2;
+	heapFloat[(fp+-74)] = f4;
+	f0 = f0-f1;
+	heapFloat[(r22+1)] = f2;
+	heapFloat[(r22+2)] = f0;
+	heap32[(r22+3)] = 0;
+	f1 = heapFloat[(r9+11)];
+	f3 = heapFloat[(r18+15)];
+	f5 = heapFloat[(r9+10)];
+	f6 = heapFloat[(r18+14)];
+	f7 = heapFloat[(r9+9)];
+	f8 = heapFloat[(r18+13)];
+	r18 = sp + -312;
+	f7 = f7-f8;
+	f5 = f5-f6;
+	r22 = r18 >> 2;
+	heapFloat[(fp+-78)] = f7;
+	f1 = f1-f3;
+	heapFloat[(r22+1)] = f5;
+	heapFloat[(r22+2)] = f1;
+	r23 = r8 >> 2;
+	heap32[(r22+3)] = 0;
+	r22 = r8 >> 2;
+	r24 = r8 >> 2;
+	r20 = r20 & 2;
+	r21 = r21 & 2;
+	r20 = r20 == 0 ? r16 : r3;
+	r16 = r21 == 0 ? r16 : r1;
+	if(r20 ==0) //_LBB612_140
+{
+	heap32[(r17+12)] = 0;
+	heap32[(r17+13)] = 0;
+	f3 =                         0;
+	heap32[(r17+14)] = 0;
+	heap32[(r17+15)] = 0;
+	f6 = f3;
+	f8 = f3;
+}
+else{
+	f3 = heapFloat[(r23+17)];
+	f6 = heapFloat[(r22+19)];
+	f8 = heapFloat[(r24+18)];
+	f9 = f4*f8;
+	f10 = f2*f3;
+	f3 = f0*f3;
+	f11 = f4*f6;
+	f6 = f2*f6;
+	f8 = f0*f8;
+	f9 = f9-f10;
+	f3 = f3-f11;
+	f6 = f6-f8;
+	r21 = r20 >> 2;
+	f8 = heapFloat[(r21+64)];
+	f10 = heapFloat[(r21+65)];
+	f11 = heapFloat[(r21+68)];
+	f12 = heapFloat[(r21+69)];
+	f8 = f8*f6;
+	f10 = f10*f3;
+	f13 = heapFloat[(r21+66)];
+	f14 = heapFloat[(r21+72)];
+	f15 = heapFloat[(r21+73)];
+	f16 = heapFloat[(r21+70)];
+	f11 = f11*f6;
+	f12 = f12*f3;
+	f8 = f8+f10;
+	f10 = f13*f9;
+	f13 = heapFloat[(r21+74)];
+	f6 = f14*f6;
+	f3 = f15*f3;
+	f11 = f11+f12;
+	f12 = f16*f9;
+	f8 = f8+f10;
+	f10 = heapFloat[(r21+134)];
+	f14 = heapFloat[(r21+136)];
+	f15 = heapFloat[(r21+135)];
+	f11 = f11+f12;
+	f8 = f8*f10;
+	f3 = f6+f3;
+	f6 = f13*f9;
+	f3 = f3+f6;
+	f6 = f11*f15;
+	heapFloat[(r17+12)] = f8;
+	f3 = f3*f14;
+	heapFloat[(r17+13)] = f6;
+	heapFloat[(r17+14)] = f3;
+	heap32[(r17+15)] = 0;
+}
+	if(r16 ==0) //_LBB612_143
+{
+	heap32[(r17+16)] = 0;
+	heap32[(r17+17)] = 0;
+	f10 =                         0;
+	heap32[(r17+18)] = 0;
+	heap32[(r17+19)] = 0;
+	f11 = f10;
+	f9 = f10;
+}
+else{
+	f9 = heapFloat[(r24+18)];
+	f10 = heapFloat[(r23+17)];
+	f11 = heapFloat[(r22+19)];
+	f12 = f5*f11;
+	f13 = f1*f9;
+	r21 = r16 >> 2;
+	f12 = f12-f13;
+	f13 = f1*f10;
+	f11 = f7*f11;
+	f12 = -f12;
+	f14 = heapFloat[(r21+64)];
+	f11 = f13-f11;
+	f13 = heapFloat[(r21+65)];
+	f9 = f7*f9;
+	f10 = f5*f10;
+	f15 = heapFloat[(r21+68)];
+	f16 = heapFloat[(r21+69)];
+	f14 = f14*f12;
+	f13 = f13*f11;
+	f9 = f9-f10;
+	f10 = heapFloat[(r21+66)];
+	f17 = heapFloat[(r21+72)];
+	f18 = heapFloat[(r21+73)];
+	f19 = heapFloat[(r21+70)];
+	f15 = f15*f12;
+	f16 = f16*f11;
+	f13 = f14-f13;
+	f10 = f10*f9;
+	f14 = heapFloat[(r21+74)];
+	f12 = f17*f12;
+	f11 = f18*f11;
+	f15 = f15-f16;
+	f16 = f19*f9;
+	f10 = f13-f10;
+	f13 = heapFloat[(r21+134)];
+	f17 = heapFloat[(r21+136)];
+	f18 = heapFloat[(r21+135)];
+	f15 = f15-f16;
+	f10 = f10*f13;
+	f11 = f12-f11;
+	f9 = f14*f9;
+	f9 = f11-f9;
+	f11 = f15*f18;
+	heapFloat[(r17+16)] = f10;
+	f9 = f9*f17;
+	heapFloat[(r17+17)] = f11;
+	heapFloat[(r17+18)] = f9;
+	heap32[(r17+19)] = 0;
+}
+	if(r20 !=0) //_LBB612_146
+{
+	f12 = f6*f0;
+	f13 = f3*f2;
+	f3 = f3*f4;
+	f14 = f8*f0;
+	f15 = heapFloat[(r23+17)];
+	f12 = f12-f13;
+	f13 = heapFloat[(r24+18)];
+	f3 = f3-f14;
+	f8 = f8*f2;
+	f6 = f6*f4;
+	f12 = f15*f12;
+	f3 = f13*f3;
+	f13 = heapFloat[(r22+19)];
+	f6 = f8-f6;
+	r21 = r20 >> 2;
+	f3 = f12+f3;
+	f6 = f13*f6;
+	f8 = heapFloat[(r21+84)];
+	f3 = f3+f6;
+	f3 = f8+f3;
+}
+else{
+	f3 =                         0;
+}
+	if(r16 !=0) //_LBB612_149
+{
+	f6 = f5*f9;
+	f8 = f1*f11;
+	f12 = f1*f10;
+	f9 = f7*f9;
+	f13 = heapFloat[(r23+17)];
+	f6 = f6-f8;
+	f8 = heapFloat[(r24+18)];
+	f9 = f12-f9;
+	f11 = f7*f11;
+	f10 = f5*f10;
+	f6 = f13*f6;
+	f9 = f8*f9;
+	f8 = heapFloat[(r22+19)];
+	f10 = f11-f10;
+	r21 = r16 >> 2;
+	f9 = f6+f9;
+	f6 = f8*f10;
+	f8 = heapFloat[(r21+84)];
+	f9 = f9+f6;
+	f9 = f8+f9;
+}
+else{
+	f9 =                         0;
+}
+	f6 =                         1;
+	f3 = f3+f9;
+	f3 = f6/f3;
+	heapFloat[(r17+23)] = f3;
+	f3 = heapFloat[(r23+17)];
+	heapFloat[(r17+4)] = f3;
+	f8 = heapFloat[(r24+18)];
+	heapFloat[(r17+5)] = f8;
+	f9 = heapFloat[(r22+19)];
+	heapFloat[(r17+6)] = f9;
+	heap32[(r17+7)] = heap32[(r9+20)];
+	f10 = heapFloat[(r22+19)];
+	f11 = heapFloat[(r24+18)];
+	f12 = heapFloat[(r23+17)];
+	f13 = f2*f10;
+	f14 = f0*f11;
+	f15 = f0*f12;
+	f10 = f4*f10;
+	f13 = f13-f14;
+	f11 = f4*f11;
+	f12 = f2*f12;
+	f10 = f15-f10;
+	heapFloat[(r17)] = f13;
+	f11 = f11-f12;
+	heapFloat[(r17+1)] = f10;
+	heapFloat[(r17+2)] = f11;
+	heap32[(r17+3)] = 0;
+	f10 = heapFloat[(r24+18)];
+	f11 = heapFloat[(r22+19)];
+	f12 = heapFloat[(r23+17)];
+	f13 = f1*f10;
+	f14 = f5*f11;
+	f11 = f7*f11;
+	f15 = f1*f12;
+	f13 = f13-f14;
+	f12 = f5*f12;
+	f10 = f7*f10;
+	f11 = f11-f15;
+	heapFloat[(r17+8)] = f13;
+	f10 = f12-f10;
+	heapFloat[(r17+9)] = f11;
+	heapFloat[(r17+10)] = f10;
+	heap32[(r17+11)] = 0;
+	if(r20 !=0) //_LBB612_152
+{
+	r21 = r20 >> 2;
+	f10 = heapFloat[(r21+81)];
+	f11 = heapFloat[(r21+80)];
+	f12 = heapFloat[(r21+82)];
+	f13 = f11*f2;
+	f14 = f10*f4;
+	f4 = f12*f4;
+	f11 = f11*f0;
+	f0 = f10*f0;
+	f2 = f12*f2;
+	f10 = heapFloat[(r21+78)];
+	f12 = f13-f14;
+	f13 = heapFloat[(r21+77)];
+	f11 = f4-f11;
+	f14 = heapFloat[(r21+76)];
+	f0 = f0-f2;
+	f4 = f10+f12;
+	f2 = f13+f11;
+	f0 = f14+f0;
+}
+else{
+	f0 =                         0;
+	f2 = f0;
+	f4 = f0;
+}
+	if(r16 !=0) //_LBB612_155
+{
+	r21 = r16 >> 2;
+	f10 = heapFloat[(r21+81)];
+	f11 = heapFloat[(r21+80)];
+	f12 = heapFloat[(r21+82)];
+	f13 = f11*f5;
+	f14 = f10*f7;
+	f7 = f12*f7;
+	f11 = f11*f1;
+	f1 = f10*f1;
+	f5 = f12*f5;
+	f10 = heapFloat[(r21+78)];
+	f12 = f13-f14;
+	f13 = heapFloat[(r21+77)];
+	f11 = f7-f11;
+	f14 = heapFloat[(r21+76)];
+	f1 = f1-f5;
+	f7 = f10+f12;
+	f5 = f13+f11;
+	f1 = f14+f1;
+}
+else{
+	f1 =                         0;
+	f5 = f1;
+	f7 = f1;
+}
+	f0 = f0-f1;
+	f1 = f2-f5;
+	f2 = heapFloat[(r23+17)];
+	f5 = heapFloat[(r24+18)];
+	f4 = f4-f7;
+	f7 = heapFloat[(r22+19)];
+	f2 = f2*f0;
+	f5 = f5*f1;
+	f2 = f2+f5;
+	f5 = f7*f4;
+	f7 = heapFloat[(r9+21)];
+	f10 = heapFloat[(r6+13)];
+	f2 = f2+f5;
+	f5 = f7+f10;
+	heap32[(r17+22)] = heap32[(r9+22)];
+	r21 = heap32[(r9+37)];
+	r25 = heap32[(r6+16)];
+	if(r21 >r25) //_LBB612_159
+{
+__label__ = 151;
+}
+else{
+	f7 = heapFloat[(r9+23)];
+	f10 = -f2;
+	f7 = f7*f10;
+	f10 =                         0;
+	if(f7 <=f10) //_LBB612_159
+{
+__label__ = 151;
+}
+else{
+__label__ = 152;
+}
+}
+if (__label__ == 151){
+	f7 =                         0;
+}
+	r21 = heapU8[r5+60];
+	r21 = r21 & 4;
+	if(r21 ==0) //_LBB612_167
+{
+	heap32[(r17+21)] = 0;
+}
+else{
+	f10 = heapFloat[(r9+29)];
+	f11 = heapFloat[(r6+14)];
+	f10 = f10*f11;
+	heapFloat[(r17+21)] = f10;
+if(!(r20 ==0)) //_LBB612_164
+{
+	r21 = r20 >> 2;
+	f11 = heapFloat[(r21+84)];
+	f12 =                         0;
+if(!(f11 ==f12)) //_LBB612_164
+{
+	f3 = f3*f11;
+	f12 = heapFloat[(r21+85)];
+	f3 = f3*f12;
+	f3 = f3*f10;
+	f12 = heapFloat[(r21+126)];
+	f13 = heapFloat[(r21+86)];
+	f14 = heapFloat[(r21+87)];
+	f8 = f8*f11;
+	f3 = f12+f3;
+	f8 = f8*f13;
+	heapFloat[(r21+126)] = f3;
+	f3 = f8*f10;
+	f8 = heapFloat[(r21+127)];
+	f9 = f9*f11;
+	f3 = f8+f3;
+	f8 = f9*f14;
+	heapFloat[(r21+127)] = f3;
+	f3 = f8*f10;
+	f8 = heapFloat[(r21+128)];
+	f3 = f8+f3;
+	heapFloat[(r21+128)] = f3;
+	f3 = heapFloat[(r21+134)];
+	f3 = f3*f10;
+	f8 = heapFloat[(r17+12)];
+	f9 = heapFloat[(r21+136)];
+	f11 = heapFloat[(r21+135)];
+	f3 = f8*f3;
+	f8 = heapFloat[(r21+130)];
+	f12 = heapFloat[(r17+14)];
+	f13 = heapFloat[(r17+13)];
+	f3 = f8+f3;
+	f8 = f11*f10;
+	heapFloat[(r21+130)] = f3;
+	f3 = f13*f8;
+	f8 = heapFloat[(r21+131)];
+	f3 = f8+f3;
+	f8 = f9*f10;
+	heapFloat[(r21+131)] = f3;
+	f3 = f12*f8;
+	f8 = heapFloat[(r21+132)];
+	f3 = f8+f3;
+	heapFloat[(r21+132)] = f3;
+}
+}
+if(!(r16 ==0)) //_LBB612_168
+{
+	r21 = r16 >> 2;
+	f3 = heapFloat[(r21+84)];
+	f8 =                         0;
+if(!(f3 ==f8)) //_LBB612_168
+{
+	f8 = heapFloat[(r17+21)];
+	f8 = -f8;
+	f9 = heapFloat[(r17+4)];
+	f9 = f9*f3;
+	f10 = heapFloat[(r21+85)];
+	f9 = f9*f10;
+	f10 = heapFloat[(r17+5)];
+	f11 = heapFloat[(r17+6)];
+	f9 = f9*f8;
+	f12 = heapFloat[(r21+126)];
+	f13 = heapFloat[(r21+86)];
+	f14 = heapFloat[(r21+87)];
+	f15 = heapFloat[(r17+16)];
+	f16 = heapFloat[(r17+17)];
+	f17 = heapFloat[(r17+18)];
+	f10 = f10*f3;
+	f9 = f12+f9;
+	f10 = f10*f13;
+	heapFloat[(r21+126)] = f9;
+	f9 = f10*f8;
+	f10 = heapFloat[(r21+127)];
+	f3 = f11*f3;
+	f9 = f10+f9;
+	f3 = f3*f14;
+	heapFloat[(r21+127)] = f9;
+	f3 = f3*f8;
+	f9 = heapFloat[(r21+128)];
+	f3 = f9+f3;
+	heapFloat[(r21+128)] = f3;
+	f3 = heapFloat[(r21+134)];
+	f3 = f3*f8;
+	f9 = heapFloat[(r21+136)];
+	f10 = heapFloat[(r21+135)];
+	f11 = heapFloat[(r21+130)];
+	f3 = f3*f15;
+	f3 = f11-f3;
+	f10 = f10*f8;
+	heapFloat[(r21+130)] = f3;
+	f3 = f10*f16;
+	f10 = heapFloat[(r21+131)];
+	f3 = f10-f3;
+	f8 = f9*f8;
+	heapFloat[(r21+131)] = f3;
+	f3 = f8*f17;
+	f8 = heapFloat[(r21+132)];
+	f3 = f8-f3;
+	heapFloat[(r21+132)] = f3;
+}
+}
+}
+	heap32[(r17+20)] = 0;
+	if(r20 !=0) //_LBB612_170
+{
+	r21 = r20 >> 2;
+	f9 = heapFloat[(r21+76)];
+	f8 = heapFloat[(r21+77)];
+	f3 = heapFloat[(r21+78)];
+}
+else{
+	f3 =                         0;
+	f8 = f3;
+	f9 = f3;
+}
+	f10 = heapFloat[(r17+4)];
+	f11 = heapFloat[(r17+5)];
+	f12 = heapFloat[(r17+6)];
+	f9 = f10*f9;
+	f8 = f11*f8;
+	f8 = f9+f8;
+	f3 = f12*f3;
+	f3 = f8+f3;
+	if(r20 !=0) //_LBB612_173
+{
+	r20 = r20 >> 2;
+	f13 = heapFloat[(r20+80)];
+	f9 = heapFloat[(r20+81)];
+	f8 = heapFloat[(r20+82)];
+}
+else{
+	f8 =                         0;
+	f9 = f8;
+	f13 = f8;
+}
+	f14 = heapFloat[(r17)];
+	f15 = heapFloat[(r17+1)];
+	f13 = f14*f13;
+	f9 = f15*f9;
+	f14 = heapFloat[(r17+2)];
+	f9 = f13+f9;
+	f8 = f14*f8;
+	f8 = f9+f8;
+	f3 = f3+f8;
+	if(r16 !=0) //_LBB612_176
+{
+	r20 = r16 >> 2;
+	f13 = heapFloat[(r20+80)];
+	f9 = heapFloat[(r20+81)];
+	f8 = heapFloat[(r20+82)];
+}
+else{
+	f8 =                         0;
+	f9 = f8;
+	f13 = f8;
+}
+	f14 = heapFloat[(r17+8)];
+	f15 = heapFloat[(r17+9)];
+	f13 = f14*f13;
+	f9 = f15*f9;
+	f14 = heapFloat[(r17+10)];
+	f9 = f13+f9;
+	f8 = f14*f8;
+	f8 = f9+f8;
+	if(r16 !=0) //_LBB612_179
+{
+	r16 = r16 >> 2;
+	f14 = heapFloat[(r16+76)];
+	f13 = heapFloat[(r16+77)];
+	f9 = heapFloat[(r16+78)];
+}
+else{
+	f9 =                         0;
+	f13 = f9;
+	f14 = f9;
+}
+	f10 = f10*f14;
+	f11 = f11*f13;
+	f10 = f10+f11;
+	f9 = f12*f9;
+	f9 = f10+f9;
+	f10 = heapFloat[(r6+8)];
+	f11 = -f5;
+	f8 = f8-f9;
+	f9 = f10*f11;
+	f10 = heapFloat[(r6+3)];
+	f3 = f3+f8;
+	f8 = f9/f10;
+	f9 = heapFloat[(r17+23)];
+	f3 = f7-f3;
+	f7 = f9*f8;
+	f3 = f9*f3;
+	r16 = heap32[(r6+11)];
+	if(r16 ==0) //_LBB612_182
+{
+__label__ = 174;
+}
+else{
+	f8 = heapFloat[(r6+12)];
+	if(f8 >=f5) //_LBB612_183
+{
+	heapFloat[(r17+29)] = f3;
+	heapFloat[(r17+33)] = f7;
+__label__ = 176;
+}
+else{
+__label__ = 174;
+}
+}
+if (__label__ == 174){
+	f3 = f7+f3;
+	heapFloat[(r17+29)] = f3;
+	heap32[(r17+33)] = 0;
+}
+	heap32[(r17+30)] = 0;
+	heap32[(r17+31)] = 0;
+	heap32[(r17+32)] = 1343554297;
+	r16 = heap32[(r2+12)];
+	heap32[(r17+25)] = r16;
+	r16 = heapU8[r5+60];
+	r16 = r16 & 32;
+	if(r16 ==0) //_LBB612_186
+{
+__label__ = 178;
+}
+else{
+	r16 = heapU8[r8+120];
+	if(r16 !=0) //_LBB612_200
+{
+	r16 = r8 >> 2;
+	f0 = heapFloat[(r9+35)];
+	f1 = heapFloat[(r16+33)];
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r12;
+	heap32[(g0+2)] = r14;
+	heap32[(g0+3)] = r10;
+	heap32[(g0+4)] = r19;
+	heap32[(g0+5)] = r18;
+	heap32[(g0+6)] = r3;
+	heap32[(g0+7)] = r1;
+	heap32[(g0+8)] = 1065353216;
+	heapFloat[(g0+9)] = f1;
+	heapFloat[(g0+10)] = f0;
+	_ZN35btSequentialImpulseConstraintSolver21addFrictionConstraintERK9btVector3P11btRigidBodyS4_iR15btManifoldPointS2_S2_P17btCollisionObjectS8_fff(i7);
+	r12 = heapU8[r5+60];
+	r12 = r12 & 16;
+	if(r12 ==0) //_LBB612_202
+{
+__label__ = 194;
+}
+else{
+	r12 = r8 >> 2;
+	r8 = r8 >> 2;
+	f0 = heapFloat[(r12+36)];
+	f1 = heapFloat[(r8+34)];
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r11;
+	heap32[(g0+2)] = r14;
+	heap32[(g0+3)] = r10;
+	heap32[(g0+4)] = r19;
+	heap32[(g0+5)] = r18;
+	heap32[(g0+6)] = r3;
+	heap32[(g0+7)] = r1;
+	heap32[(g0+8)] = 1065353216;
+	heapFloat[(g0+9)] = f1;
+	heapFloat[(g0+10)] = f0;
+	_ZN35btSequentialImpulseConstraintSolver21addFrictionConstraintERK9btVector3P11btRigidBodyS4_iR15btManifoldPointS2_S2_P17btCollisionObjectS8_fff(i7);
+__label__ = 194;
+}
+}
+else{
+__label__ = 178;
+}
+}
+_259: do {
+if (__label__ == 178){
+	f3 = heapFloat[(r23+17)];
+	f5 = heapFloat[(r22+19)];
+	f7 = heapFloat[(r24+18)];
+	f8 = f3*f2;
+	f0 = f0-f8;
+	f8 = f7*f2;
+	r16 = r8 >> 2;
+	f1 = f1-f8;
+	f2 = f5*f2;
+	r20 = r8 >> 2;
+	heapFloat[(r16+38)] = f0;
+	f2 = f4-f2;
+	r21 = r8 >> 2;
+	heapFloat[(r20+39)] = f1;
+	r25 = r8 >> 2;
+	heapFloat[(r21+40)] = f2;
+	heap32[(r25+41)] = 0;
+	r25 = heapU8[r5+60];
+	r25 = r25 & 64;
+if(!(r25 !=0)) //_LBB612_191
+{
+	f0 = f0*f0;
+	f1 = f1*f1;
+	f0 = f0+f1;
+	f1 = f2*f2;
+	f0 = f0+f1;
+	f1 =   1.1920928955078125e-007;
+if(!(f0 <=f1)) //_LBB612_191
+{
+	heapFloat[(g0)] = f0;
+	sqrtf(i7);
+	f3 = f6/f_g0;
+	f5 = heapFloat[(r16+38)];
+	f5 = f5*f3;
+	heapFloat[(r16+38)] = f5;
+	f7 = heapFloat[(r20+39)];
+	f7 = f7*f3;
+	heapFloat[(r20+39)] = f7;
+	f0 = heapFloat[(r21+40)];
+	f3 = f0*f3;
+	heapFloat[(r21+40)] = f3;
+	r16 = heapU8[r5+60];
+	r16 = r16 & 16;
+if(!(r16 ==0)) //_LBB612_190
+{
+	f0 = heapFloat[(r22+19)];
+	f1 = heapFloat[(r24+18)];
+	f2 = heapFloat[(r23+17)];
+	f4 = f7*f0;
+	f8 = f3*f1;
+	f4 = f4-f8;
+	f3 = f3*f2;
+	f0 = f5*f0;
+	r16 = r8 >> 2;
+	f3 = f3-f0;
+	f5 = f5*f1;
+	f7 = f7*f2;
+	r20 = r8 >> 2;
+	heapFloat[(r16+42)] = f4;
+	f5 = f5-f7;
+	r21 = r8 >> 2;
+	heapFloat[(r20+43)] = f3;
+	f7 = f4*f4;
+	f3 = f3*f3;
+	r22 = r8 >> 2;
+	heapFloat[(r21+44)] = f5;
+	heap32[(r22+45)] = 0;
+	f3 = f7+f3;
+	f5 = f5*f5;
+	f3 = f3+f5;
+	heapFloat[(g0)] = f3;
+	sqrtf(i7);
+	f3 = f6/f_g0;
+	f5 = heapFloat[(r16+42)];
+	f5 = f5*f3;
+	heapFloat[(r16+42)] = f5;
+	f5 = heapFloat[(r20+43)];
+	f5 = f5*f3;
+	heapFloat[(r20+43)] = f5;
+	f5 = heapFloat[(r21+44)];
+	f3 = f5*f3;
+	heapFloat[(r21+44)] = f3;
+	heap32[(g0)] = r3;
+	heap32[(g0+1)] = r11;
+	_Z24applyAnisotropicFrictionP17btCollisionObjectR9btVector3(i7);
+	heap32[(g0)] = r1;
+	heap32[(g0+1)] = r11;
+	_Z24applyAnisotropicFrictionP17btCollisionObjectR9btVector3(i7);
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r11;
+	heap32[(g0+2)] = r14;
+	heap32[(g0+3)] = r10;
+	heap32[(g0+4)] = r19;
+	heap32[(g0+5)] = r18;
+	heap32[(g0+6)] = r3;
+	heap32[(g0+7)] = r1;
+	heap32[(g0+8)] = 1065353216;
+	heap32[(g0+9)] = 0;
+	heap32[(g0+10)] = 0;
+	_ZN35btSequentialImpulseConstraintSolver21addFrictionConstraintERK9btVector3P11btRigidBodyS4_iR15btManifoldPointS2_S2_P17btCollisionObjectS8_fff(i7);
+}
+	heap32[(g0)] = r3;
+	heap32[(g0+1)] = r12;
+	_Z24applyAnisotropicFrictionP17btCollisionObjectR9btVector3(i7);
+	heap32[(g0)] = r1;
+	heap32[(g0+1)] = r12;
+	_Z24applyAnisotropicFrictionP17btCollisionObjectR9btVector3(i7);
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r12;
+	heap32[(g0+2)] = r14;
+	heap32[(g0+3)] = r10;
+	heap32[(g0+4)] = r19;
+	heap32[(g0+5)] = r18;
+	heap32[(g0+6)] = r3;
+	heap32[(g0+7)] = r1;
+	heap32[(g0+8)] = 1065353216;
+	heap32[(g0+9)] = 0;
+	heap32[(g0+10)] = 0;
+	r10 = 1;
+	_ZN35btSequentialImpulseConstraintSolver21addFrictionConstraintERK9btVector3P11btRigidBodyS4_iR15btManifoldPointS2_S2_P17btCollisionObjectS8_fff(i7);
+	heap8[r8+120] = r10;
+break _259;
+}
+}
+	f0 =                         0;
+	if(f5 <f0) //_LBB612_193
+{
+	f0 = -f5;
+}
+else{
+	f0 = f5;
+}
+	f1 =       0.70710676908493042;
+	if(f0 <=f1) //_LBB612_196
+{
+	f3 = f3*f3;
+	f0 = f7*f7;
+	f3 = f3+f0;
+	heapFloat[(g0)] = f3;
+	sqrtf(i7);
+	f1 = heapFloat[(r24+18)];
+	f0 = f6/f_g0;
+	f1 = -f1;
+	f1 = f0*f1;
+	heapFloat[(r16+38)] = f1;
+	f2 = heapFloat[(r23+17)];
+	f2 = f2*f0;
+	heapFloat[(r20+39)] = f2;
+	heap32[(r21+40)] = 0;
+	f4 = heapFloat[(r22+19)];
+	f5 = -f4;
+	r16 = r8 >> 2;
+	f2 = f2*f5;
+	f3 = f3*f0;
+	r20 = r8 >> 2;
+	f0 = f4*f1;
+	heapFloat[(r16+42)] = f2;
+	heapFloat[(r20+43)] = f0;
+}
+else{
+	f3 = f7*f7;
+	f7 = f5*f5;
+	f3 = f3+f7;
+	heapFloat[(g0)] = f3;
+	sqrtf(i7);
+	heap32[(r16+38)] = 0;
+	f0 = heapFloat[(r22+19)];
+	f6 = f6/f_g0;
+	f7 = -f0;
+	f7 = f6*f7;
+	heapFloat[(r20+39)] = f7;
+	f0 = heapFloat[(r24+18)];
+	f0 = f0*f6;
+	r16 = r8 >> 2;
+	f3 = f3*f6;
+	heapFloat[(r21+40)] = f0;
+	heapFloat[(r16+42)] = f3;
+	f3 = heapFloat[(r23+17)];
+	f6 = -f3;
+	f3 = f3*f7;
+	r16 = r8 >> 2;
+	f6 = f0*f6;
+	heapFloat[(r16+43)] = f6;
+}
+	r16 = r8 >> 2;
+	heapFloat[(r16+44)] = f3;
+	r16 = heapU8[r5+60];
+	r16 = r16 & 16;
+if(!(r16 ==0)) //_LBB612_199
+{
+	heap32[(g0)] = r3;
+	heap32[(g0+1)] = r11;
+	_Z24applyAnisotropicFrictionP17btCollisionObjectR9btVector3(i7);
+	heap32[(g0)] = r1;
+	heap32[(g0+1)] = r11;
+	_Z24applyAnisotropicFrictionP17btCollisionObjectR9btVector3(i7);
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r11;
+	heap32[(g0+2)] = r14;
+	heap32[(g0+3)] = r10;
+	heap32[(g0+4)] = r19;
+	heap32[(g0+5)] = r18;
+	heap32[(g0+6)] = r3;
+	heap32[(g0+7)] = r1;
+	heap32[(g0+8)] = 1065353216;
+	heap32[(g0+9)] = 0;
+	heap32[(g0+10)] = 0;
+	_ZN35btSequentialImpulseConstraintSolver21addFrictionConstraintERK9btVector3P11btRigidBodyS4_iR15btManifoldPointS2_S2_P17btCollisionObjectS8_fff(i7);
+}
+	heap32[(g0)] = r3;
+	heap32[(g0+1)] = r12;
+	_Z24applyAnisotropicFrictionP17btCollisionObjectR9btVector3(i7);
+	heap32[(g0)] = r1;
+	heap32[(g0+1)] = r12;
+	_Z24applyAnisotropicFrictionP17btCollisionObjectR9btVector3(i7);
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r12;
+	heap32[(g0+2)] = r14;
+	heap32[(g0+3)] = r10;
+	heap32[(g0+4)] = r19;
+	heap32[(g0+5)] = r18;
+	heap32[(g0+6)] = r3;
+	heap32[(g0+7)] = r1;
+	heap32[(g0+8)] = 1065353216;
+	heap32[(g0+9)] = 0;
+	heap32[(g0+10)] = 0;
+	r10 = 1;
+	_ZN35btSequentialImpulseConstraintSolver21addFrictionConstraintERK9btVector3P11btRigidBodyS4_iR15btManifoldPointS2_S2_P17btCollisionObjectS8_fff(i7);
+	heap8[r8+120] = r10;
+}
+} while(0);
+	r8 = heap32[(r6+15)];
+	r10 = heap32[(r17+25)];
+	r11 = heap32[(r2+14)];
+	r12 = r8 & 8;
+	if(r12 ==0) //_LBB612_220
+{
+	r8 = (r10 * 136)|0;
+	r8 = (r11 + r8)|0;
+	r8 = r8 >> 2;
+	heap32[(r8+21)] = 0;
+	r8 = heapU8[r5+60];
+	r8 = r8 & 16;
+	if(r8 ==0) //_LBB612_222
+{
+break _153;
+}
+else{
+	r8 = heap32[(r17+25)];
+	r9 = heap32[(r2+14)];
+	r8 = (r8 * 136)|0;
+	r8 = (r8 + r9)|0;
+	r8 = r8 >> 2;
+	heap32[(r8+55)] = 0;
+}
+}
+else{
+	r8 = r8 & 4;
+	if(r8 ==0) //_LBB612_210
+{
+	r10 = (r10 * 136)|0;
+	r10 = (r11 + r10)|0;
+	r10 = r10 >> 2;
+	heap32[(r10+21)] = 0;
+}
+else{
+	r10 = (r10 * 136)|0;
+	r10 = (r11 + r10)|0;
+	f0 = heapFloat[(r9+31)];
+	f1 = heapFloat[(r6+14)];
+	f0 = f0*f1;
+	r10 = r10 >> 2;
+	heapFloat[(r10+21)] = f0;
+if(!(r13 ==0)) //_LBB612_207
+{
+	r11 = r13 >> 2;
+	f1 = heapFloat[(r11+84)];
+	f2 =                         0;
+if(!(f1 ==f2)) //_LBB612_207
+{
+	f2 = heapFloat[(r10+4)];
+	f2 = f2*f1;
+	f3 = heapFloat[(r11+85)];
+	f2 = f2*f3;
+	f3 = heapFloat[(r10+5)];
+	f4 = heapFloat[(r10+6)];
+	f2 = f2*f0;
+	f5 = heapFloat[(r11+126)];
+	f6 = heapFloat[(r11+86)];
+	f7 = heapFloat[(r11+87)];
+	f3 = f3*f1;
+	f2 = f5+f2;
+	f3 = f3*f6;
+	heapFloat[(r11+126)] = f2;
+	f2 = f3*f0;
+	f3 = heapFloat[(r11+127)];
+	f1 = f4*f1;
+	f2 = f3+f2;
+	f1 = f1*f7;
+	heapFloat[(r11+127)] = f2;
+	f1 = f1*f0;
+	f2 = heapFloat[(r11+128)];
+	f1 = f2+f1;
+	heapFloat[(r11+128)] = f1;
+	f1 = heapFloat[(r11+134)];
+	f1 = f1*f0;
+	f2 = heapFloat[(r10+12)];
+	f3 = heapFloat[(r11+136)];
+	f4 = heapFloat[(r11+135)];
+	f1 = f2*f1;
+	f2 = heapFloat[(r11+130)];
+	f5 = heapFloat[(r10+14)];
+	f6 = heapFloat[(r10+13)];
+	f1 = f2+f1;
+	f2 = f4*f0;
+	heapFloat[(r11+130)] = f1;
+	f1 = f6*f2;
+	f2 = heapFloat[(r11+131)];
+	f1 = f2+f1;
+	f0 = f3*f0;
+	heapFloat[(r11+131)] = f1;
+	f0 = f5*f0;
+	f1 = heapFloat[(r11+132)];
+	f0 = f1+f0;
+	heapFloat[(r11+132)] = f0;
+}
+}
+if(!(r15 ==0)) //_LBB612_211
+{
+	r11 = r15 >> 2;
+	f0 = heapFloat[(r11+84)];
+	f1 =                         0;
+if(!(f0 ==f1)) //_LBB612_211
+{
+	f1 = heapFloat[(r10+21)];
+	f1 = -f1;
+	f2 = heapFloat[(r10+4)];
+	f2 = f2*f0;
+	f3 = heapFloat[(r11+85)];
+	f2 = f2*f3;
+	f3 = heapFloat[(r10+5)];
+	f4 = heapFloat[(r10+6)];
+	f2 = f2*f1;
+	f5 = heapFloat[(r11+126)];
+	f6 = heapFloat[(r11+86)];
+	f7 = heapFloat[(r11+87)];
+	f8 = heapFloat[(r10+16)];
+	f9 = heapFloat[(r10+17)];
+	f10 = heapFloat[(r10+18)];
+	f3 = f3*f0;
+	f2 = f5+f2;
+	f3 = f3*f6;
+	heapFloat[(r11+126)] = f2;
+	f2 = f3*f1;
+	f3 = heapFloat[(r11+127)];
+	f0 = f4*f0;
+	f2 = f3+f2;
+	f0 = f0*f7;
+	heapFloat[(r11+127)] = f2;
+	f0 = f0*f1;
+	f2 = heapFloat[(r11+128)];
+	f0 = f2+f0;
+	heapFloat[(r11+128)] = f0;
+	f0 = heapFloat[(r11+134)];
+	f0 = f0*f1;
+	f2 = heapFloat[(r11+136)];
+	f3 = heapFloat[(r11+135)];
+	f4 = heapFloat[(r11+130)];
+	f0 = f0*f8;
+	f0 = f4-f0;
+	f3 = f3*f1;
+	heapFloat[(r11+130)] = f0;
+	f0 = f3*f9;
+	f3 = heapFloat[(r11+131)];
+	f0 = f3-f0;
+	f1 = f2*f1;
+	heapFloat[(r11+131)] = f0;
+	f0 = f1*f10;
+	f1 = heapFloat[(r11+132)];
+	f0 = f1-f0;
+	heapFloat[(r11+132)] = f0;
+}
+}
+}
+	r10 = heap32[(r6+15)];
+	r11 = r10 & 16;
+if(!(r11 ==0)) //_LBB612_222
+{
+	r11 = heap32[(r17+25)];
+	r17 = heap32[(r2+14)];
+	r10 = r10 & 4;
+	if(r10 ==0) //_LBB612_219
+{
+	r10 = (r11 * 136)|0;
+	r10 = (r17 + r10)|0;
+	r10 = r10 >> 2;
+	heap32[(r10+55)] = 0;
+}
+else{
+	r11 = (r11 * 136)|0;
+	r11 = (r17 + r11)|0;
+	f0 = heapFloat[(r9+32)];
+	f1 = heapFloat[(r6+14)];
+	f0 = f0*f1;
+	r11 = r11 >> 2;
+	heapFloat[(r11+55)] = f0;
+if(!(r13 ==0)) //_LBB612_216
+{
+	r17 = r13 >> 2;
+	f1 = heapFloat[(r17+84)];
+	f2 =                         0;
+if(!(f1 ==f2)) //_LBB612_216
+{
+	f2 = heapFloat[(r11+38)];
+	f2 = f2*f1;
+	f3 = heapFloat[(r11+39)];
+	f4 = heapFloat[(r11+40)];
+	f5 = heapFloat[(r17+126)];
+	f2 = f2*f0;
+	f2 = f5+f2;
+	f3 = f3*f1;
+	heapFloat[(r17+126)] = f2;
+	f2 = f3*f0;
+	f3 = heapFloat[(r17+127)];
+	f2 = f3+f2;
+	f1 = f4*f1;
+	heapFloat[(r17+127)] = f2;
+	f1 = f1*f0;
+	f2 = heapFloat[(r17+128)];
+	f1 = f2+f1;
+	heapFloat[(r17+128)] = f1;
+	f1 = heapFloat[(r17+134)];
+	f1 = f1*f0;
+	f2 = heapFloat[(r11+46)];
+	f3 = heapFloat[(r17+136)];
+	f4 = heapFloat[(r17+135)];
+	f1 = f2*f1;
+	f2 = heapFloat[(r17+130)];
+	f5 = heapFloat[(r11+48)];
+	f6 = heapFloat[(r11+47)];
+	f1 = f2+f1;
+	f2 = f4*f0;
+	heapFloat[(r17+130)] = f1;
+	f1 = f6*f2;
+	f2 = heapFloat[(r17+131)];
+	f1 = f2+f1;
+	f0 = f3*f0;
+	heapFloat[(r17+131)] = f1;
+	f0 = f5*f0;
+	f1 = heapFloat[(r17+132)];
+	f0 = f1+f0;
+	heapFloat[(r17+132)] = f0;
+}
+}
+if(!(r15 ==0)) //_LBB612_222
+{
+	r17 = r15 >> 2;
+	f0 = heapFloat[(r17+84)];
+	f1 =                         0;
+if(!(f0 ==f1)) //_LBB612_222
+{
+	f1 = heapFloat[(r11+55)];
+	f1 = -f1;
+	f2 = heapFloat[(r11+38)];
+	f2 = f2*f0;
+	f3 = heapFloat[(r11+39)];
+	f4 = heapFloat[(r11+40)];
+	f2 = f2*f1;
+	f5 = heapFloat[(r17+126)];
+	f6 = heapFloat[(r11+50)];
+	f7 = heapFloat[(r11+51)];
+	f8 = heapFloat[(r11+52)];
+	f2 = f5+f2;
+	f3 = f3*f0;
+	heapFloat[(r17+126)] = f2;
+	f2 = f3*f1;
+	f3 = heapFloat[(r17+127)];
+	f2 = f3+f2;
+	f0 = f4*f0;
+	heapFloat[(r17+127)] = f2;
+	f0 = f0*f1;
+	f2 = heapFloat[(r17+128)];
+	f0 = f2+f0;
+	heapFloat[(r17+128)] = f0;
+	f0 = heapFloat[(r17+134)];
+	f0 = f0*f1;
+	f2 = heapFloat[(r17+136)];
+	f3 = heapFloat[(r17+135)];
+	f4 = heapFloat[(r17+130)];
+	f0 = f0*f6;
+	f0 = f4-f0;
+	f3 = f3*f1;
+	heapFloat[(r17+130)] = f0;
+	f0 = f3*f7;
+	f3 = heapFloat[(r17+131)];
+	f0 = f3-f0;
+	f1 = f2*f1;
+	heapFloat[(r17+131)] = f0;
+	f0 = f1*f8;
+	f1 = heapFloat[(r17+132)];
+	f0 = f1-f0;
+	heapFloat[(r17+132)] = f0;
+}
+}
+}
+}
+}
+}
+} while(0);
+	r7 = (r7 + 1)|0;
+	r4 = (r4 + 276)|0;
+}
+else{
+break _150;
+}
+}
+}
+	r1 = heap32[(fp+-133)];
+	r1 = (r1 + -1)|0;
+	heap32[(fp+-133)] = r1;
+	r3 = heap32[(fp+-132)];
+	r3 = (r3 + 4)|0;
+	heap32[(fp+-132)] = r3;
+if(!(r1 !=0)) //_LBB612_97
+{
+break _132;
+}
+}
+}
+} while(0);
+	r1 = heap32[(r2+17)];
+	r3 = heap32[(r2+2)];
+	r4 = heap32[(r2+12)];
+_307: do {
+if(!(r1 >r3)) //_LBB612_244
+{
+if(!(r1 >=r3)) //_LBB612_244
+{
+	r5 = heap32[(r2+18)];
+if(!(r5 >=r3)) //_LBB612_243
+{
+	if(r3 !=0) //_LBB612_230
+{
+	r5 = gNumAlignedAllocs;
+	r5 = r5 >> 2;
+	r6 = heap32[(r5)];
+	r7 = r3 << 2;
+	r6 = (r6 + 1)|0;
+	r7 = r7 | 3;
+	heap32[(r5)] = r6;
+	r5 = (r7 + 16)|0;
+	heap32[(g0)] = r5;
+	malloc(i7);
+	r5 = r_g0;
+	if(r5 !=0) //_LBB612_232
+{
+	r6 = 0;
+	r7 = (r5 + 4)|0;
+	r6 = (r6 - r7)|0;
+	r6 = r6 & 15;
+	r6 = (r5 + r6)|0;
+	r7 = (r6 + 4)|0;
+	r6 = r6 >> 2;
+	heap32[(r6)] = r5;
+	r5 = r7;
+}
+}
+else{
+	r5 = 0;
+}
+	r6 = (r0 + 76)|0;
+	if(r1 <1) //_LBB612_235
+{
+	r7 = r6 >> 2;
+	r8 = heap32[(r7)];
+}
+else{
+	r7 = 0;
+_320: while(true){
+	r8 = r6 >> 2;
+	r8 = heap32[(r8)];
+	r9 = r7 << 2;
+	r10 = (r8 + r9)|0;
+	r10 = r10 >> 2;
+	r9 = (r5 + r9)|0;
+	r10 = heap32[(r10)];
+	r7 = (r7 + 1)|0;
+	r9 = r9 >> 2;
+	heap32[(r9)] = r10;
+if(!(r1 !=r7)) //_LBB612_236
+{
+break _320;
+}
+}
+	r6 = (r0 + 76)|0;
+}
+if(!(r8 ==0)) //_LBB612_242
+{
+	r7 = heapU8[r0+80];
+if(!(r7 ==0)) //_LBB612_241
+{
+	r7 = gNumAlignedFree;
+	r7 = r7 >> 2;
+	r9 = heap32[(r7)];
+	r9 = (r9 + 1)|0;
+	r8 = r8 >> 2;
+	heap32[(r7)] = r9;
+	r7 = heap32[(r8+-1)];
+	heap32[(g0)] = r7;
+	free(i7);
+}
+	r7 = r6 >> 2;
+	heap32[(r7)] = 0;
+}
+	r7 = 1;
+	r6 = r6 >> 2;
+	heap8[r0+80] = r7;
+	heap32[(r6)] = r5;
+	heap32[(r2+18)] = r3;
+	if(r1 >=r3) //_LBB612_244
+{
+break _307;
+}
+}
+_330: while(true){
+	r5 = r1 << 2;
+	r6 = heap32[(r2+19)];
+	r5 = (r6 + r5)|0;
+	r1 = (r1 + 1)|0;
+	r5 = r5 >> 2;
+	heap32[(r5)] = 0;
+if(!(r3 !=r1)) //_LBB612_243
+{
+break _307;
+}
+}
+}
+}
+} while(0);
+	heap32[(r2+17)] = r3;
+	r1 = heap32[(r2+22)];
+_333: do {
+if(!(r1 >r4)) //_LBB612_263
+{
+if(!(r1 >=r4)) //_LBB612_263
+{
+	r5 = heap32[(r2+23)];
+if(!(r5 >=r4)) //_LBB612_262
+{
+	if(r4 !=0) //_LBB612_249
+{
+	r5 = gNumAlignedAllocs;
+	r5 = r5 >> 2;
+	r6 = heap32[(r5)];
+	r7 = r4 << 2;
+	r6 = (r6 + 1)|0;
+	r7 = r7 | 3;
+	heap32[(r5)] = r6;
+	r5 = (r7 + 16)|0;
+	heap32[(g0)] = r5;
+	malloc(i7);
+	r5 = r_g0;
+	if(r5 !=0) //_LBB612_251
+{
+	r6 = 0;
+	r7 = (r5 + 4)|0;
+	r6 = (r6 - r7)|0;
+	r6 = r6 & 15;
+	r6 = (r5 + r6)|0;
+	r7 = (r6 + 4)|0;
+	r6 = r6 >> 2;
+	heap32[(r6)] = r5;
+	r5 = r7;
+}
+}
+else{
+	r5 = 0;
+}
+	r6 = (r0 + 96)|0;
+	if(r1 <1) //_LBB612_254
+{
+	r7 = r6 >> 2;
+	r8 = heap32[(r7)];
+}
+else{
+	r7 = 0;
+_346: while(true){
+	r8 = r6 >> 2;
+	r8 = heap32[(r8)];
+	r9 = r7 << 2;
+	r10 = (r8 + r9)|0;
+	r10 = r10 >> 2;
+	r9 = (r5 + r9)|0;
+	r10 = heap32[(r10)];
+	r7 = (r7 + 1)|0;
+	r9 = r9 >> 2;
+	heap32[(r9)] = r10;
+if(!(r1 !=r7)) //_LBB612_255
+{
+break _346;
+}
+}
+	r6 = (r0 + 96)|0;
+}
+if(!(r8 ==0)) //_LBB612_261
+{
+	r7 = heapU8[r0+100];
+if(!(r7 ==0)) //_LBB612_260
+{
+	r7 = gNumAlignedFree;
+	r7 = r7 >> 2;
+	r9 = heap32[(r7)];
+	r9 = (r9 + 1)|0;
+	r8 = r8 >> 2;
+	heap32[(r7)] = r9;
+	r7 = heap32[(r8+-1)];
+	heap32[(g0)] = r7;
+	free(i7);
+}
+	r7 = r6 >> 2;
+	heap32[(r7)] = 0;
+}
+	r7 = 1;
+	r6 = r6 >> 2;
+	heap8[r0+100] = r7;
+	heap32[(r6)] = r5;
+	heap32[(r2+23)] = r4;
+	if(r1 >=r4) //_LBB612_263
+{
+break _333;
+}
+}
+_356: while(true){
+	r0 = r1 << 2;
+	r5 = heap32[(r2+24)];
+	r0 = (r5 + r0)|0;
+	r1 = (r1 + 1)|0;
+	r0 = r0 >> 2;
+	heap32[(r0)] = 0;
+if(!(r4 !=r1)) //_LBB612_262
+{
+break _333;
+}
+}
+}
+}
+} while(0);
+	heap32[(r2+22)] = r4;
+_359: do {
+if(!(r3 <1)) //_LBB612_266
+{
+	r0 = 0;
+_361: while(true){
+	r1 = r0 << 2;
+	r5 = heap32[(r2+19)];
+	r1 = (r5 + r1)|0;
+	r5 = (r0 + 1)|0;
+	r1 = r1 >> 2;
+	heap32[(r1)] = r0;
+	r0 = r5;
+if(!(r3 !=r5)) //_LBB612_265
+{
+break _359;
+}
+}
+}
+} while(0);
+	if(r4 <1) //_LBB612_269
+{
+break _1;
+}
+else{
+	r0 = 0;
+_365: while(true){
+	r1 = r0 << 2;
+	r3 = heap32[(r2+24)];
+	r1 = (r3 + r1)|0;
+	r3 = (r0 + 1)|0;
+	r1 = r1 >> 2;
+	heap32[(r1)] = r0;
+	r0 = r3;
+if(!(r4 !=r3)) //_LBB612_268
+{
+break _1;
+}
+}
+}
+break;
+case 78:
+	r8 = _2E_str1157;
+	r0 = _2E_str652;
+	heap32[(g0)] = r8;
+	heap32[(g0+1)] = r0;
+	heap32[(g0+2)] = 813;
+	_assert(i7);
+break;
+}
+}
+} while(0);
+	r0 = _ZN15CProfileManager11CurrentNodeE;
+	r0 = r0 >> 2;
+	r1 = heap32[(r0)];
+	r2 = r1 >> 2;
+	r3 = heap32[(r2+4)];
+	r3 = (r3 + -1)|0;
+	heap32[(r2+4)] = r3;
+_369: do {
+if(!(r3 !=0)) //_LBB612_275
+{
+	r3 = heap32[(r2+1)];
+	if(r3 !=0) //_LBB612_272
+{
+	r1 = sp + -8;
+	heap32[(g0)] = r1;
+	heap32[(g0+1)] = 0;
+	r3 = _ZL13gProfileClock_2E_0;
+	gettimeofday(i7);
+	r3 = r3 >> 2;
+	r3 = heap32[(r3)];
+	r3 = r3 >> 2;
+	r1 = r1 >> 2;
+	r4 = heap32[(fp+-2)];
+	r5 = heap32[(r3)];
+	r4 = (r4 - r5)|0;
+	r1 = heap32[(r1+1)];
+	r3 = heap32[(r3+1)];
+	r1 = (r1 - r3)|0;
+	r3 = (r4 * 1000000)|0;
+	r1 = (r1 + r3)|0;
+	r3 = heap32[(r2+3)];
+	r1 = (r1 - r3)|0;
+	f0 = uint(r1); //fuitos r1, f0
+	f1 =                      1000;
+	f2 = heapFloat[(r2+2)];
+	f0 = f0/f1;
+	f0 = f2+f0;
+	heapFloat[(r2+2)] = f0;
+	r1 = heap32[(r2+4)];
+	if(r1 !=0) //_LBB612_275
+{
+break _369;
+}
+else{
+	r1 = heap32[(r0)];
+}
+}
+	r1 = r1 >> 2;
+	r1 = heap32[(r1+5)];
+	heap32[(r0)] = r1;
+}
+} while(0);
+	f0 =                         0;
+	f_g0 = f0;
+	return;
+}
+
+function _ZN35btSequentialImpulseConstraintSolver33solveGroupCacheFriendlyIterationsEPP17btCollisionObjectiPP20btPersistentManifoldiPP17btTypedConstraintiRK19btContactSolverInfoP12btIDebugDrawP12btStackAlloc(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+	var r6;
+	var r7;
+	var r8;
+	var r9;
+	var r10;
+	var r11;
+	var r12;
+	var r13;
+	var r14;
+	var f0;
+	var f1;
+	var f2;
+var __label__ = 0;
+	i7 = sp + -48;var g0 = i7>>2; // save stack
+	r0 = _2E_str854;
+	r1 = heap32[(fp+7)];
+	heap32[(g0)] = r0;
+	r0 = heap32[(fp)];
+	r2 = heap32[(fp+5)];
+	r3 = heap32[(fp+6)];
+	r4 = r1 >> 2;
+	_ZN15CProfileManager13Start_ProfileEPKc(i7);
+	r5 = heap32[(r4+5)];
+if(!(r5 <1)) //_LBB613_64
+{
+	r5 = 0;
+_3: while(true){
+	r6 = r0 >> 2;
+	r7 = heap32[(r4+15)];
+	r8 = r7 & 1;
+	if(r8 != 0) //_LBB613_4
+{
+	r8 = r5 & 7;
+if(!(r8 !=0)) //_LBB613_3
+{
+	r7 = heap32[(r6+2)];
+	r8 = heap32[(r6+12)];
+if(!(r7 <1)) //_LBB613_19
+{
+	r9 = 0;
+	r7 = (r9 - r7)|0;
+	r9 = 1;
+_10: while(true){
+	r10 = heap32[(r6+19)];
+	r11 = r9 << 2;
+	r11 = (r10 + r11)|0;
+	r11 = r11 >> 2;
+	r12 = heap32[(r6+31)];
+	r13 = heap32[(r11+-1)];
+	r12 = (r12 * 1664525)|0;
+	r12 = (r12 + 1013904223)|0;
+	heap32[(r6+31)] = r12;
+	if(uint(r9) <uint(65537)) //_LBB613_9
+{
+	r14 = r12 >>> 16;
+	r12 = r14 ^ r12;
+	if(uint(r9) <uint(257)) //_LBB613_11
+{
+	r14 = r12 >>> 8;
+	r12 = r14 ^ r12;
+	if(uint(r9) <uint(17)) //_LBB613_13
+{
+	r14 = r12 >>> 4;
+	r12 = r14 ^ r12;
+	if(uint(r9) <uint(5)) //_LBB613_15
+{
+	r14 = r12 >>> 2;
+	r12 = r14 ^ r12;
+	if(uint(r9) <uint(3)) //_LBB613_17
+{
+	r14 = r12 >>> 1;
+	r12 = r14 ^ r12;
+}
+}
+}
+}
+}
+	r12 = Math.floor(uint(r12) % uint(r9));
+	r12 = r12 << 2;
+	r10 = (r10 + r12)|0;
+	r10 = r10 >> 2;
+	r10 = heap32[(r10)];
+	heap32[(r11+-1)] = r10;
+	r10 = heap32[(r6+19)];
+	r10 = (r10 + r12)|0;
+	r9 = (r9 + 1)|0;
+	r10 = r10 >> 2;
+	heap32[(r10)] = r13;
+	r10 = (r7 + r9)|0;
+if(!(r10 !=1)) //_LBB613_7
+{
+break _10;
+}
+}
+}
+_20: do {
+if(!(r8 <1)) //_LBB613_33
+{
+	r7 = 0;
+	r7 = (r7 - r8)|0;
+	r8 = 1;
+_22: while(true){
+	r9 = heap32[(r6+24)];
+	r10 = r8 << 2;
+	r10 = (r9 + r10)|0;
+	r10 = r10 >> 2;
+	r11 = heap32[(r6+31)];
+	r12 = heap32[(r10+-1)];
+	r11 = (r11 * 1664525)|0;
+	r11 = (r11 + 1013904223)|0;
+	heap32[(r6+31)] = r11;
+	if(uint(r8) <uint(65537)) //_LBB613_23
+{
+	r13 = r11 >>> 16;
+	r11 = r13 ^ r11;
+	if(uint(r8) <uint(257)) //_LBB613_25
+{
+	r13 = r11 >>> 8;
+	r11 = r13 ^ r11;
+	if(uint(r8) <uint(17)) //_LBB613_27
+{
+	r13 = r11 >>> 4;
+	r11 = r13 ^ r11;
+	if(uint(r8) <uint(5)) //_LBB613_29
+{
+	r13 = r11 >>> 2;
+	r11 = r13 ^ r11;
+	if(uint(r8) <uint(3)) //_LBB613_31
+{
+	r13 = r11 >>> 1;
+	r11 = r13 ^ r11;
+}
+}
+}
+}
+}
+	r11 = Math.floor(uint(r11) % uint(r8));
+	r11 = r11 << 2;
+	r9 = (r9 + r11)|0;
+	r9 = r9 >> 2;
+	r9 = heap32[(r9)];
+	heap32[(r10+-1)] = r9;
+	r9 = heap32[(r6+24)];
+	r9 = (r9 + r11)|0;
+	r8 = (r8 + 1)|0;
+	r9 = r9 >> 2;
+	heap32[(r9)] = r12;
+	r9 = (r7 + r8)|0;
+if(!(r9 !=1)) //_LBB613_21
+{
+break _20;
+}
+}
+}
+} while(0);
+	r7 = heap32[(r4+15)];
+}
+}
+	r8 = heap32[(r6+7)];
+	r7 = r7 & 256;
+_33: do {
+	if(r7 !=0) //_LBB613_37
+{
+_35: do {
+if(!(r8 <1)) //_LBB613_40
+{
+	r7 = 0;
+	r8 = r7;
+_37: while(true){
+	r9 = (r8 * 34)|0;
+	r10 = heap32[(r6+9)];
+	r9 = r9 << 2;
+	r9 = (r10 + r9)|0;
+	r9 = r9 >> 2;
+	r11 = heap32[(r9+27)];
+	r9 = heap32[(r9+26)];
+	r10 = (r10 + r7)|0;
+	heap32[(g0)] = r9;
+	heap32[(g0+1)] = r11;
+	heap32[(g0+2)] = r10;
+	r8 = (r8 + 1)|0;
+	r7 = (r7 + 136)|0;
+	_ZN35btSequentialImpulseConstraintSolver33resolveSingleConstraintRowGenericER11btRigidBodyS1_RK18btSolverConstraint(i7);
+	r9 = heap32[(r6+7)];
+if(!(r9 >r8)) //_LBB613_39
+{
+break _35;
+}
+}
+}
+} while(0);
+_40: do {
+if(!(r3 <1)) //_LBB613_43
+{
+	r7 = r2;
+	r8 = r3;
+_42: while(true){
+	r9 = r7 >> 2;
+	r9 = heap32[(r9)];
+	r10 = r9 >> 2;
+	r11 = heap32[(r10)];
+	r11 = r11 >> 2;
+	r11 = heap32[(r11+6)];
+	f0 = heapFloat[(r4+3)];
+	r12 = heap32[(r10+6)];
+	r10 = heap32[(r10+5)];
+	heap32[(g0)] = r9;
+	heap32[(g0+1)] = r10;
+	heap32[(g0+2)] = r12;
+	heapFloat[(g0+3)] = f0;
+	r8 = (r8 + -1)|0;
+	r7 = (r7 + 4)|0;
+	__FUNCTION_TABLE__[(r11)>>2](i7);
+if(!(r8 !=0)) //_LBB613_42
+{
+break _40;
+}
+}
+}
+} while(0);
+	r7 = heap32[(r6+2)];
+_45: do {
+if(!(r7 <1)) //_LBB613_46
+{
+	r8 = 0;
+_47: while(true){
+	r9 = heap32[(r6+19)];
+	r10 = r8 << 2;
+	r9 = (r9 + r10)|0;
+	r9 = r9 >> 2;
+	r9 = heap32[(r9)];
+	r9 = (r9 * 136)|0;
+	r10 = heap32[(r6+4)];
+	r9 = (r10 + r9)|0;
+	r10 = r9 >> 2;
+	r11 = heap32[(r10+27)];
+	r10 = heap32[(r10+26)];
+	heap32[(g0)] = r10;
+	heap32[(g0+1)] = r11;
+	heap32[(g0+2)] = r9;
+	r8 = (r8 + 1)|0;
+	_ZN35btSequentialImpulseConstraintSolver36resolveSingleConstraintRowLowerLimitER11btRigidBodyS1_RK18btSolverConstraint(i7);
+if(!(r7 !=r8)) //_LBB613_45
+{
+break _45;
+}
+}
+}
+} while(0);
+	r7 = heap32[(r6+12)];
+	if(r7 <1) //_LBB613_63
+{
+break _33;
+}
+else{
+	r8 = 0;
+_51: while(true){
+	r9 = heap32[(r6+24)];
+	r10 = r8 << 2;
+	r9 = (r9 + r10)|0;
+	r9 = r9 >> 2;
+	r9 = heap32[(r9)];
+	r10 = heap32[(r6+14)];
+	r9 = (r9 * 136)|0;
+	r9 = (r10 + r9)|0;
+	r10 = r9 >> 2;
+	r11 = heap32[(r10+25)];
+	r12 = heap32[(r6+4)];
+	r11 = (r11 * 136)|0;
+	r11 = (r12 + r11)|0;
+	r11 = r11 >> 2;
+	f0 = heapFloat[(r11+21)];
+	f1 =                         0;
+if(!(f0 <=f1)) //_LBB613_50
+{
+	f1 = heapFloat[(r10+22)];
+	f0 = f1*f0;
+	f1 = -f0;
+	heapFloat[(r10+31)] = f1;
+	heapFloat[(r10+32)] = f0;
+	r11 = heap32[(r10+27)];
+	r10 = heap32[(r10+26)];
+	heap32[(g0)] = r10;
+	heap32[(g0+1)] = r11;
+	heap32[(g0+2)] = r9;
+	_ZN35btSequentialImpulseConstraintSolver33resolveSingleConstraintRowGenericER11btRigidBodyS1_RK18btSolverConstraint(i7);
+}
+	r8 = (r8 + 1)|0;
+	if(r7 ==r8) //_LBB613_63
+{
+break _33;
+}
+else{
+continue _51;
+}
+}
+}
+}
+else{
+_57: do {
+if(!(r8 <1)) //_LBB613_52
+{
+	r8 = 0;
+	r7 = r8;
+_59: while(true){
+	r9 = (r7 * 34)|0;
+	r10 = heap32[(r6+9)];
+	r9 = r9 << 2;
+	r9 = (r10 + r9)|0;
+	r9 = r9 >> 2;
+	r11 = heap32[(r9+27)];
+	r9 = heap32[(r9+26)];
+	r10 = (r10 + r8)|0;
+	heap32[(g0)] = r9;
+	heap32[(g0+1)] = r11;
+	heap32[(g0+2)] = r10;
+	r7 = (r7 + 1)|0;
+	r8 = (r8 + 136)|0;
+	_ZN35btSequentialImpulseConstraintSolver33resolveSingleConstraintRowGenericER11btRigidBodyS1_RK18btSolverConstraint(i7);
+	r9 = heap32[(r6+7)];
+if(!(r9 >r7)) //_LBB613_51
+{
+break _57;
+}
+}
+}
+} while(0);
+_62: do {
+if(!(r3 <1)) //_LBB613_55
+{
+	r7 = r2;
+	r8 = r3;
+_64: while(true){
+	r9 = r7 >> 2;
+	r9 = heap32[(r9)];
+	r10 = r9 >> 2;
+	r11 = heap32[(r10)];
+	r11 = r11 >> 2;
+	r11 = heap32[(r11+6)];
+	f0 = heapFloat[(r4+3)];
+	r12 = heap32[(r10+6)];
+	r10 = heap32[(r10+5)];
+	heap32[(g0)] = r9;
+	heap32[(g0+1)] = r10;
+	heap32[(g0+2)] = r12;
+	heapFloat[(g0+3)] = f0;
+	r8 = (r8 + -1)|0;
+	r7 = (r7 + 4)|0;
+	__FUNCTION_TABLE__[(r11)>>2](i7);
+if(!(r8 !=0)) //_LBB613_54
+{
+break _62;
+}
+}
+}
+} while(0);
+	r7 = heap32[(r6+2)];
+_67: do {
+if(!(r7 <1)) //_LBB613_58
+{
+	r8 = 0;
+_69: while(true){
+	r9 = heap32[(r6+19)];
+	r10 = r8 << 2;
+	r9 = (r9 + r10)|0;
+	r9 = r9 >> 2;
+	r9 = heap32[(r9)];
+	r9 = (r9 * 136)|0;
+	r10 = heap32[(r6+4)];
+	r9 = (r10 + r9)|0;
+	r10 = r9 >> 2;
+	r11 = heap32[(r10+27)];
+	r10 = heap32[(r10+26)];
+	heap32[(g0)] = r10;
+	heap32[(g0+1)] = r11;
+	heap32[(g0+2)] = r9;
+	r8 = (r8 + 1)|0;
+	_ZN35btSequentialImpulseConstraintSolver36resolveSingleConstraintRowLowerLimitER11btRigidBodyS1_RK18btSolverConstraint(i7);
+if(!(r7 !=r8)) //_LBB613_57
+{
+break _67;
+}
+}
+}
+} while(0);
+	r7 = heap32[(r6+12)];
+if(!(r7 <1)) //_LBB613_63
+{
+	r8 = 0;
+_73: while(true){
+	r9 = heap32[(r6+24)];
+	r10 = r8 << 2;
+	r9 = (r9 + r10)|0;
+	r9 = r9 >> 2;
+	r9 = heap32[(r9)];
+	r10 = heap32[(r6+14)];
+	r9 = (r9 * 136)|0;
+	r9 = (r10 + r9)|0;
+	r10 = r9 >> 2;
+	r11 = heap32[(r10+25)];
+	r12 = heap32[(r6+4)];
+	r11 = (r11 * 136)|0;
+	r11 = (r12 + r11)|0;
+	r11 = r11 >> 2;
+	f0 = heapFloat[(r11+21)];
+	f1 =                         0;
+if(!(f0 <=f1)) //_LBB613_62
+{
+	f1 = heapFloat[(r10+22)];
+	f0 = f1*f0;
+	f1 = -f0;
+	heapFloat[(r10+31)] = f1;
+	heapFloat[(r10+32)] = f0;
+	r11 = heap32[(r10+27)];
+	r10 = heap32[(r10+26)];
+	heap32[(g0)] = r10;
+	heap32[(g0+1)] = r11;
+	heap32[(g0+2)] = r9;
+	_ZN35btSequentialImpulseConstraintSolver33resolveSingleConstraintRowGenericER11btRigidBodyS1_RK18btSolverConstraint(i7);
+}
+	r8 = (r8 + 1)|0;
+if(!(r7 !=r8)) //_LBB613_60
+{
+break _33;
+}
+}
+}
+}
+} while(0);
+	r5 = (r5 + 1)|0;
+	r6 = heap32[(r4+5)];
+	if(r6 >r5) //_LBB613_2
+{
+continue _3;
+}
+else{
+break _3;
+}
+}
+}
+	r4 = heap32[(fp+1)];
+	r5 = heap32[(fp+2)];
+	r6 = heap32[(fp+3)];
+	r7 = heap32[(fp+4)];
+	r8 = heap32[(fp+8)];
+	r9 = heap32[(fp+9)];
+	r10 = r0 >> 2;
+	r10 = heap32[(r10)];
+	r10 = r10 >> 2;
+	r10 = heap32[(r10+6)];
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r4;
+	heap32[(g0+2)] = r5;
+	heap32[(g0+3)] = r6;
+	heap32[(g0+4)] = r7;
+	heap32[(g0+5)] = r2;
+	heap32[(g0+6)] = r3;
+	heap32[(g0+7)] = r1;
+	heap32[(g0+8)] = r8;
+	heap32[(g0+9)] = r9;
+	r0 = _ZN15CProfileManager11CurrentNodeE;
+	__FUNCTION_TABLE__[(r10)>>2](i7);
+	r0 = r0 >> 2;
+	r1 = heap32[(r0)];
+	r2 = r1 >> 2;
+	r3 = heap32[(r2+4)];
+	r3 = (r3 + -1)|0;
+	heap32[(r2+4)] = r3;
+_80: do {
+if(!(r3 !=0)) //_LBB613_70
+{
+	r3 = heap32[(r2+1)];
+	if(r3 !=0) //_LBB613_67
+{
+	r1 = sp + -8;
+	heap32[(g0)] = r1;
+	heap32[(g0+1)] = 0;
+	r3 = _ZL13gProfileClock_2E_0;
+	gettimeofday(i7);
+	r3 = r3 >> 2;
+	r3 = heap32[(r3)];
+	r3 = r3 >> 2;
+	r1 = r1 >> 2;
+	r4 = heap32[(fp+-2)];
+	r5 = heap32[(r3)];
+	r4 = (r4 - r5)|0;
+	r1 = heap32[(r1+1)];
+	r3 = heap32[(r3+1)];
+	r1 = (r1 - r3)|0;
+	r3 = (r4 * 1000000)|0;
+	r1 = (r1 + r3)|0;
+	r3 = heap32[(r2+3)];
+	r1 = (r1 - r3)|0;
+	f0 = uint(r1); //fuitos r1, f0
+	f1 =                      1000;
+	f2 = heapFloat[(r2+2)];
+	f0 = f0/f1;
+	f0 = f2+f0;
+	heapFloat[(r2+2)] = f0;
+	r1 = heap32[(r2+4)];
+	if(r1 !=0) //_LBB613_70
+{
+break _80;
+}
+else{
+	r1 = heap32[(r0)];
+}
+}
+	r1 = r1 >> 2;
+	r1 = heap32[(r1+5)];
+	heap32[(r0)] = r1;
+}
+} while(0);
+	f0 =                         0;
+	f_g0 = f0;
+	return;
+}
+
+function _ZN35btSequentialImpulseConstraintSolver21addFrictionConstraintERK9btVector3P11btRigidBodyS4_iR15btManifoldPointS2_S2_P17btCollisionObjectS8_fff(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+	var r6;
+	var r7;
+	var r8;
+	var r9;
+	var r10;
+	var r11;
+	var r12;
+	var r13;
+	var r14;
+	var r15;
+	var r16;
+	var r17;
+	var r18;
+	var f0;
+	var f1;
+	var f2;
+	var f3;
+	var f4;
+	var f5;
+	var f6;
+	var f7;
+	var f8;
+	var f9;
+	var f10;
+	var f11;
+	var f12;
+	var f13;
+	var f14;
+	var f15;
+	var f16;
+	var f17;
+	var f18;
+	var f19;
+	var f20;
+	var f21;
+	var f22;
+	var f23;
+var __label__ = 0;
+	i7 = sp + -288;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = r0 >> 2;
+	r2 = heap32[(r1+13)];
+	r3 = heap32[(r1+12)];
+	r4 = heap32[(fp+1)];
+	r5 = heap32[(fp+2)];
+	r6 = heap32[(fp+3)];
+	r7 = heap32[(fp+4)];
+	r8 = heap32[(fp+5)];
+	r9 = heap32[(fp+6)];
+	r10 = heap32[(fp+7)];
+	f0 = heapFloat[(fp+8)];
+	f1 = heapFloat[(fp+9)];
+	f2 = heapFloat[(fp+10)];
+	if(r2 ==r3) //_LBB614_2
+{
+	r11 = 1;
+	r12 = r3 << 1;
+	r12 = r3 == 0 ? r11 : r12;
+	if(r2 >=r12) //_LBB614_1
+{
+__label__ = 1;
+}
+else{
+	if(r12 !=0) //_LBB614_5
+{
+	r2 = gNumAlignedAllocs;
+	r2 = r2 >> 2;
+	r13 = heap32[(r2)];
+	r14 = (r12 * 136)|0;
+	r13 = (r13 + 1)|0;
+	r14 = r14 | 3;
+	heap32[(r2)] = r13;
+	r2 = (r14 + 16)|0;
+	heap32[(g0)] = r2;
+	malloc(i7);
+	r13 = r_g0;
+	if(r13 !=0) //_LBB614_7
+{
+	r2 = 0;
+	r14 = (r13 + 4)|0;
+	r2 = (r2 - r14)|0;
+	r2 = r2 & 15;
+	r2 = (r13 + r2)|0;
+	r14 = (r2 + 4)|0;
+	r2 = r2 >> 2;
+	heap32[(r2)] = r13;
+	r13 = r14;
+}
+}
+else{
+	r13 = 0;
+}
+	r14 = (r0 + 56)|0;
+	if(r3 <1) //_LBB614_10
+{
+	r2 = r14 >> 2;
+	r16 = heap32[(r2)];
+}
+else{
+	r2 = 0;
+	r15 = r3;
+_12: while(true){
+	r16 = r14 >> 2;
+	r16 = heap32[(r16)];
+	r17 = (r13 + r2)|0;
+	r18 = (r16 + r2)|0;
+	heap32[(g0)] = r17;
+	heap32[(g0+1)] = r18;
+	heap32[(g0+2)] = 136;
+	r15 = (r15 + -1)|0;
+	r2 = (r2 + 136)|0;
+	memcpy(i7);
+if(!(r15 !=0)) //_LBB614_11
+{
+break _12;
+}
+}
+	r14 = (r0 + 56)|0;
+}
+	if(r16 !=0) //_LBB614_15
+{
+	r2 = heapU8[r0+60];
+	if(r2 !=0) //_LBB614_17
+{
+	r2 = gNumAlignedFree;
+	r2 = r2 >> 2;
+	r15 = heap32[(r2)];
+	r15 = (r15 + 1)|0;
+	r16 = r16 >> 2;
+	heap32[(r2)] = r15;
+	r2 = heap32[(r16+-1)];
+	heap32[(g0)] = r2;
+	free(i7);
+	r2 = heap32[(r1+12)];
+}
+else{
+	r2 = r3;
+}
+	r15 = r14 >> 2;
+	heap32[(r15)] = 0;
+}
+else{
+	r2 = r3;
+}
+	r14 = r14 >> 2;
+	heap8[r0+60] = r11;
+	heap32[(r14)] = r13;
+	heap32[(r1+13)] = r12;
+__label__ = 19;
+}
+}
+else{
+__label__ = 1;
+}
+if (__label__ == 1){
+	r2 = r3;
+}
+	r0 = (r2 + 1)|0;
+	heap32[(r1+12)] = r0;
+	r0 = heap32[(r1+14)];
+	r1 = (r3 * 136)|0;
+	r0 = (r0 + r1)|0;
+	r0 = r0 >> 2;
+	heap32[(r0+25)] = r5;
+	r1 = heapU8[r9+232];
+	r1 = r1 & 2;
+if(!(r1 !=0)) //_LBB614_22
+{
+	r9 = 0;
+}
+	r1 = heapU8[r10+232];
+	r1 = r1 & 2;
+if(!(r1 !=0)) //_LBB614_24
+{
+	r10 = 0;
+}
+	r1 = r4 >> 2;
+	heap32[(r0+4)] = heap32[(r1)];
+	heap32[(r0+5)] = heap32[(r1+1)];
+	heap32[(r0+6)] = heap32[(r1+2)];
+	heap32[(r0+7)] = heap32[(r1+3)];
+	if(r9 ==0) //_LBB614_26
+{
+	r2 = _ZGVZN35btSequentialImpulseConstraintSolver12getFixedBodyEvE7s_fixed;
+	r3 = heapU8[r2];
+if(!(r3 !=0)) //_LBB614_28
+{
+	r3 = _ZZN35btSequentialImpulseConstraintSolver12getFixedBodyEvE7s_fixed;
+	r4 = r3 >> 2;
+	heap32[(r4+41)] = 1065353216;
+	heap32[(r4+42)] = 1065353216;
+	heap32[(r4+43)] = 1065353216;
+	heap32[(r4+44)] = 0;
+	heap32[(r4+45)] = 0;
+	heap32[(r4+46)] = 1566444395;
+	heap32[(r4+47)] = 0;
+	heap32[(r4+48)] = 0;
+	heap32[(r4+49)] = 0;
+	heap32[(r4+50)] = 0;
+	heap32[(r4+51)] = 1;
+	heap32[(r4+52)] = -1;
+	heap32[(r4+53)] = -1;
+	heap32[(r4+54)] = 1;
+	heap32[(r4+55)] = 0;
+	heap32[(r4+56)] = 1056964608;
+	heap32[(r4+57)] = 0;
+	heap32[(r4+58)] = 1;
+	heap32[(r4+59)] = 0;
+	heap32[(r4+60)] = 1065353216;
+	heap32[(r4+61)] = 0;
+	heap32[(r4+62)] = 0;
+	heap32[(r4+63)] = 0;
+	heap32[(r4+1)] = 1065353216;
+	heap32[(r4+2)] = 0;
+	heap32[(r4+3)] = 0;
+	heap32[(r4+4)] = 0;
+	heap32[(r4+5)] = 0;
+	heap32[(r4+6)] = 1065353216;
+	heap32[(r4+7)] = 0;
+	heap32[(r4+8)] = 0;
+	heap32[(r4+9)] = 0;
+	heap32[(r4+10)] = 0;
+	heap32[(r4+11)] = 1065353216;
+	heap32[(r4+12)] = 0;
+	heap32[(r4+13)] = 0;
+	heap32[(r4+14)] = 0;
+	r5 = _ZTV11btRigidBody;
+	heap32[(r4+15)] = 0;
+	r5 = (r5 + 8)|0;
+	heap32[(r4+16)] = 0;
+	r11 = 1;
+	heap32[(r4)] = r5;
+	heap8[r3+492] = r11;
+	heap32[(r4+122)] = 0;
+	heap32[(r4+120)] = 0;
+	r5 = sp + -272;
+	heap32[(r4+121)] = 0;
+	r4 = r5 >> 2;
+	heap32[(fp+-68)] = 0;
+	heap32[(r4+1)] = 0;
+	heap32[(r4+18)] = 0;
+	heap32[(r4+19)] = 0;
+	heap32[(r4+20)] = 0;
+	heap32[(r4+21)] = 0;
+	heap32[(r4+22)] = 0;
+	heap32[(r4+23)] = 0;
+	heap32[(r4+24)] = 0;
+	heap32[(r4+25)] = 1056964608;
+	heap32[(r4+26)] = 0;
+	heap32[(r4+27)] = 1061997773;
+	r12 = 0;
+	heap32[(r4+28)] = 1065353216;
+	heap8[sp+-156] = r12;
+	heap32[(r4+30)] = 1000593162;
+	heap32[(r4+31)] = 1008981770;
+	heap32[(r4+32)] = 1008981770;
+	heap32[(r4+33)] = 1008981770;
+	heap32[(r4+2)] = 1065353216;
+	heap32[(r4+3)] = 0;
+	heap32[(r4+4)] = 0;
+	heap32[(r4+5)] = 0;
+	heap32[(r4+6)] = 0;
+	heap32[(r4+7)] = 1065353216;
+	heap32[(r4+8)] = 0;
+	heap32[(r4+9)] = 0;
+	heap32[(r4+10)] = 0;
+	heap32[(r4+11)] = 0;
+	heap32[(r4+12)] = 1065353216;
+	heap32[(r4+13)] = 0;
+	heap32[(r4+14)] = 0;
+	heap32[(r4+15)] = 0;
+	heap32[(r4+16)] = 0;
+	heap32[(r4+17)] = 0;
+	heap32[(g0)] = r3;
+	heap32[(g0+1)] = r5;
+	_ZN11btRigidBody14setupRigidBodyERKNS_27btRigidBodyConstructionInfoE(i7);
+	heap8[r2] = r11;
+}
+	r2 = _ZZN35btSequentialImpulseConstraintSolver12getFixedBodyEvE7s_fixed;
+	r3 = r2 >> 2;
+	r4 = heap32[(r3+51)];
+	r4 = r4 | 1;
+	heap32[(r3+51)] = r4;
+	heap32[(r3+84)] = 0;
+	f3 =                         0;
+	f4 = heapFloat[(r3+95)];
+	f5 = heapFloat[(r3+94)];
+	f6 = heapFloat[(r3+93)];
+	f6 = f6*f3;
+	f5 = f5*f3;
+	heapFloat[(r3+89)] = f6;
+	f4 = f4*f3;
+	heapFloat[(r3+90)] = f5;
+	heapFloat[(r3+91)] = f4;
+	heap32[(r3+92)] = 0;
+	heap32[(r3+97)] = 0;
+	heap32[(r3+98)] = 0;
+	heap32[(r3+99)] = 0;
+	heap32[(r3+100)] = 0;
+	f4 = heapFloat[(r3+87)];
+	f5 = heapFloat[(r3+86)];
+	f6 = heapFloat[(r3+85)];
+	f6 = f6*f3;
+	f5 = f5*f3;
+	heapFloat[(r3+138)] = f6;
+	f3 = f4*f3;
+	heapFloat[(r3+139)] = f5;
+	heapFloat[(r3+140)] = f3;
+	heap32[(r3+141)] = 0;
+}
+else{
+	r2 = r9;
+}
+	heap32[(r0+26)] = r2;
+	if(r10 ==0) //_LBB614_31
+{
+	r2 = _ZGVZN35btSequentialImpulseConstraintSolver12getFixedBodyEvE7s_fixed;
+	r3 = heapU8[r2];
+if(!(r3 !=0)) //_LBB614_33
+{
+	r3 = _ZZN35btSequentialImpulseConstraintSolver12getFixedBodyEvE7s_fixed;
+	r4 = r3 >> 2;
+	heap32[(r4+41)] = 1065353216;
+	heap32[(r4+42)] = 1065353216;
+	heap32[(r4+43)] = 1065353216;
+	heap32[(r4+44)] = 0;
+	heap32[(r4+45)] = 0;
+	heap32[(r4+46)] = 1566444395;
+	heap32[(r4+47)] = 0;
+	heap32[(r4+48)] = 0;
+	heap32[(r4+49)] = 0;
+	heap32[(r4+50)] = 0;
+	heap32[(r4+51)] = 1;
+	heap32[(r4+52)] = -1;
+	heap32[(r4+53)] = -1;
+	heap32[(r4+54)] = 1;
+	heap32[(r4+55)] = 0;
+	heap32[(r4+56)] = 1056964608;
+	heap32[(r4+57)] = 0;
+	heap32[(r4+58)] = 1;
+	heap32[(r4+59)] = 0;
+	heap32[(r4+60)] = 1065353216;
+	heap32[(r4+61)] = 0;
+	heap32[(r4+62)] = 0;
+	heap32[(r4+63)] = 0;
+	heap32[(r4+1)] = 1065353216;
+	heap32[(r4+2)] = 0;
+	heap32[(r4+3)] = 0;
+	heap32[(r4+4)] = 0;
+	heap32[(r4+5)] = 0;
+	heap32[(r4+6)] = 1065353216;
+	heap32[(r4+7)] = 0;
+	heap32[(r4+8)] = 0;
+	heap32[(r4+9)] = 0;
+	heap32[(r4+10)] = 0;
+	heap32[(r4+11)] = 1065353216;
+	heap32[(r4+12)] = 0;
+	heap32[(r4+13)] = 0;
+	heap32[(r4+14)] = 0;
+	r5 = _ZTV11btRigidBody;
+	heap32[(r4+15)] = 0;
+	r5 = (r5 + 8)|0;
+	heap32[(r4+16)] = 0;
+	r11 = 1;
+	heap32[(r4)] = r5;
+	heap8[r3+492] = r11;
+	heap32[(r4+122)] = 0;
+	heap32[(r4+120)] = 0;
+	r5 = sp + -136;
+	heap32[(r4+121)] = 0;
+	r4 = r5 >> 2;
+	heap32[(fp+-34)] = 0;
+	heap32[(r4+1)] = 0;
+	heap32[(r4+18)] = 0;
+	heap32[(r4+19)] = 0;
+	heap32[(r4+20)] = 0;
+	heap32[(r4+21)] = 0;
+	heap32[(r4+22)] = 0;
+	heap32[(r4+23)] = 0;
+	heap32[(r4+24)] = 0;
+	heap32[(r4+25)] = 1056964608;
+	heap32[(r4+26)] = 0;
+	heap32[(r4+27)] = 1061997773;
+	r12 = 0;
+	heap32[(r4+28)] = 1065353216;
+	heap8[sp+-20] = r12;
+	heap32[(r4+30)] = 1000593162;
+	heap32[(r4+31)] = 1008981770;
+	heap32[(r4+32)] = 1008981770;
+	heap32[(r4+33)] = 1008981770;
+	heap32[(r4+2)] = 1065353216;
+	heap32[(r4+3)] = 0;
+	heap32[(r4+4)] = 0;
+	heap32[(r4+5)] = 0;
+	heap32[(r4+6)] = 0;
+	heap32[(r4+7)] = 1065353216;
+	heap32[(r4+8)] = 0;
+	heap32[(r4+9)] = 0;
+	heap32[(r4+10)] = 0;
+	heap32[(r4+11)] = 0;
+	heap32[(r4+12)] = 1065353216;
+	heap32[(r4+13)] = 0;
+	heap32[(r4+14)] = 0;
+	heap32[(r4+15)] = 0;
+	heap32[(r4+16)] = 0;
+	heap32[(r4+17)] = 0;
+	heap32[(g0)] = r3;
+	heap32[(g0+1)] = r5;
+	_ZN11btRigidBody14setupRigidBodyERKNS_27btRigidBodyConstructionInfoE(i7);
+	heap8[r2] = r11;
+}
+	r2 = _ZZN35btSequentialImpulseConstraintSolver12getFixedBodyEvE7s_fixed;
+	r3 = r2 >> 2;
+	r4 = heap32[(r3+51)];
+	r4 = r4 | 1;
+	heap32[(r3+51)] = r4;
+	heap32[(r3+84)] = 0;
+	f3 =                         0;
+	f4 = heapFloat[(r3+95)];
+	f5 = heapFloat[(r3+94)];
+	f6 = heapFloat[(r3+93)];
+	f6 = f6*f3;
+	f5 = f5*f3;
+	heapFloat[(r3+89)] = f6;
+	f4 = f4*f3;
+	heapFloat[(r3+90)] = f5;
+	heapFloat[(r3+91)] = f4;
+	heap32[(r3+92)] = 0;
+	heap32[(r3+97)] = 0;
+	heap32[(r3+98)] = 0;
+	heap32[(r3+99)] = 0;
+	heap32[(r3+100)] = 0;
+	f4 = heapFloat[(r3+87)];
+	f5 = heapFloat[(r3+86)];
+	f6 = heapFloat[(r3+85)];
+	f6 = f6*f3;
+	f5 = f5*f3;
+	heapFloat[(r3+138)] = f6;
+	f3 = f4*f3;
+	heapFloat[(r3+139)] = f5;
+	heapFloat[(r3+140)] = f3;
+	heap32[(r3+141)] = 0;
+}
+else{
+	r2 = r10;
+}
+	r3 = r6 >> 2;
+	heap32[(r0+27)] = r2;
+	heap32[(r0+22)] = heap32[(r3+21)];
+	heap32[(r0+28)] = 0;
+	heap32[(r0+21)] = 0;
+	heap32[(r0+20)] = 0;
+	r2 = r7 >> 2;
+	f3 = heapFloat[(r0+5)];
+	f4 = heapFloat[(r2+2)];
+	f5 = heapFloat[(r0+6)];
+	f6 = heapFloat[(r2+1)];
+	f7 = heapFloat[(r0+4)];
+	f8 = heapFloat[(r2)];
+	f9 = f6*f5;
+	f10 = f4*f3;
+	f9 = f9-f10;
+	f4 = f4*f7;
+	f10 = f8*f5;
+	f4 = f4-f10;
+	heapFloat[(r0)] = f9;
+	f8 = f8*f3;
+	f6 = f6*f7;
+	f6 = f8-f6;
+	heapFloat[(r0+1)] = f4;
+	heapFloat[(r0+2)] = f6;
+	heap32[(r0+3)] = 0;
+	if(r9 ==0) //_LBB614_36
+{
+	heap32[(r0+12)] = 0;
+	heap32[(r0+13)] = 0;
+	f10 =                         0;
+	heap32[(r0+14)] = 0;
+	heap32[(r0+15)] = 0;
+	f11 = f10;
+	f8 = f10;
+}
+else{
+	r3 = r9 >> 2;
+	f8 = heapFloat[(r3+64)];
+	f10 = heapFloat[(r3+65)];
+	f11 = heapFloat[(r3+68)];
+	f12 = heapFloat[(r3+69)];
+	f8 = f8*f9;
+	f10 = f10*f4;
+	f13 = heapFloat[(r3+66)];
+	f14 = heapFloat[(r3+72)];
+	f15 = heapFloat[(r3+73)];
+	f16 = heapFloat[(r3+70)];
+	f11 = f11*f9;
+	f12 = f12*f4;
+	f8 = f8+f10;
+	f10 = f13*f6;
+	f13 = heapFloat[(r3+74)];
+	f14 = f14*f9;
+	f15 = f15*f4;
+	f11 = f11+f12;
+	f12 = f16*f6;
+	f8 = f8+f10;
+	f10 = heapFloat[(r3+134)];
+	f16 = heapFloat[(r3+136)];
+	f17 = heapFloat[(r3+135)];
+	f11 = f11+f12;
+	f8 = f8*f10;
+	f10 = f14+f15;
+	f12 = f13*f6;
+	f10 = f10+f12;
+	f11 = f11*f17;
+	heapFloat[(r0+12)] = f8;
+	f10 = f10*f16;
+	heapFloat[(r0+13)] = f11;
+	heapFloat[(r0+14)] = f10;
+	heap32[(r0+15)] = 0;
+}
+	r3 = r8 >> 2;
+	f12 = heapFloat[(r3+2)];
+	f13 = heapFloat[(r3+1)];
+	f14 = heapFloat[(r3)];
+	f15 = f12*f3;
+	f16 = f13*f5;
+	f15 = f15-f16;
+	f16 = f14*f5;
+	f12 = f12*f7;
+	f12 = f16-f12;
+	heapFloat[(r0+8)] = f15;
+	f13 = f13*f7;
+	f14 = f14*f3;
+	f13 = f13-f14;
+	heapFloat[(r0+9)] = f12;
+	heapFloat[(r0+10)] = f13;
+	heap32[(r0+11)] = 0;
+	if(r10 ==0) //_LBB614_39
+{
+	heap32[(r0+16)] = 0;
+	heap32[(r0+17)] = 0;
+	f14 =                         0;
+	heap32[(r0+18)] = 0;
+	heap32[(r0+19)] = 0;
+	f17 = f14;
+	f16 = f14;
+}
+else{
+	r4 = r10 >> 2;
+	f14 = heapFloat[(r4+64)];
+	f16 = heapFloat[(r4+65)];
+	f17 = heapFloat[(r4+68)];
+	f18 = heapFloat[(r4+69)];
+	f14 = f14*f15;
+	f16 = f16*f12;
+	f19 = heapFloat[(r4+66)];
+	f20 = heapFloat[(r4+72)];
+	f21 = heapFloat[(r4+73)];
+	f22 = heapFloat[(r4+70)];
+	f17 = f17*f15;
+	f18 = f18*f12;
+	f14 = f14+f16;
+	f16 = f19*f13;
+	f19 = heapFloat[(r4+74)];
+	f20 = f20*f15;
+	f21 = f21*f12;
+	f17 = f17+f18;
+	f18 = f22*f13;
+	f14 = f14+f16;
+	f16 = heapFloat[(r4+134)];
+	f22 = heapFloat[(r4+136)];
+	f23 = heapFloat[(r4+135)];
+	f17 = f17+f18;
+	f14 = f14*f16;
+	f16 = f20+f21;
+	f18 = f19*f13;
+	f16 = f16+f18;
+	f17 = f17*f23;
+	heapFloat[(r0+16)] = f14;
+	f16 = f16*f22;
+	heapFloat[(r0+17)] = f17;
+	heapFloat[(r0+18)] = f16;
+	heap32[(r0+19)] = 0;
+}
+	if(r9 !=0) //_LBB614_42
+{
+	f18 = heapFloat[(r2+1)];
+	f19 = heapFloat[(r2+2)];
+	f20 = heapFloat[(r2)];
+	f21 = f11*f19;
+	f22 = f10*f18;
+	f10 = f10*f20;
+	f19 = f8*f19;
+	f23 = heapFloat[(r1)];
+	f21 = f21-f22;
+	f22 = heapFloat[(r1+1)];
+	f10 = f10-f19;
+	f8 = f8*f18;
+	f11 = f11*f20;
+	f18 = f23*f21;
+	f10 = f22*f10;
+	f19 = heapFloat[(r1+2)];
+	f8 = f8-f11;
+	r2 = r9 >> 2;
+	f10 = f18+f10;
+	f8 = f19*f8;
+	f11 = heapFloat[(r2+84)];
+	f8 = f10+f8;
+	f8 = f11+f8;
+}
+else{
+	f8 =                         0;
+}
+	if(r10 !=0) //_LBB614_45
+{
+	f10 = heapFloat[(r3+2)];
+	f11 = heapFloat[(r3)];
+	f18 = heapFloat[(r3+1)];
+	f19 = f18*f16;
+	f20 = f10*f17;
+	f10 = f10*f14;
+	f16 = f11*f16;
+	f21 = heapFloat[(r1)];
+	f19 = f19-f20;
+	f20 = heapFloat[(r1+1)];
+	f10 = f10-f16;
+	f11 = f11*f17;
+	f14 = f18*f14;
+	f16 = f21*f19;
+	f10 = f20*f10;
+	f17 = heapFloat[(r1+2)];
+	f14 = f11-f14;
+	r1 = r10 >> 2;
+	f10 = f16+f10;
+	f14 = f17*f14;
+	f11 = heapFloat[(r1+84)];
+	f14 = f10+f14;
+	f14 = f11+f14;
+}
+else{
+	f14 =                         0;
+}
+	f8 = f8+f14;
+	f0 = f0/f8;
+	heapFloat[(r0+23)] = f0;
+	if(r9 !=0) //_LBB614_48
+{
+	r1 = r9 >> 2;
+	f8 = heapFloat[(r1+76)];
+	f10 = heapFloat[(r1+77)];
+	f8 = f7*f8;
+	f10 = f3*f10;
+	f11 = heapFloat[(r1+78)];
+	f8 = f8+f10;
+	f10 = f5*f11;
+	f10 = f8+f10;
+	f14 = heapFloat[(r1+80)];
+	f11 = heapFloat[(r1+81)];
+	f8 = heapFloat[(r1+82)];
+}
+else{
+	f8 =                         0;
+	f10 = f7*f8;
+	f11 = f3*f8;
+	f10 = f10+f11;
+	f11 = f5*f8;
+	f10 = f10+f11;
+	f11 = f8;
+	f14 = f8;
+}
+	f9 = f9*f14;
+	f4 = f4*f11;
+	f4 = f9+f4;
+	f6 = f6*f8;
+	f4 = f4+f6;
+	f4 = f10+f4;
+	if(r10 !=0) //_LBB614_51
+{
+	r1 = r10 >> 2;
+	f6 = heapFloat[(r1+80)];
+	f8 = heapFloat[(r1+81)];
+	f6 = f15*f6;
+	f12 = f12*f8;
+	f15 = heapFloat[(r1+82)];
+	f6 = f6+f12;
+	f12 = f13*f15;
+	f12 = f6+f12;
+	f15 = heapFloat[(r1+76)];
+	f13 = heapFloat[(r1+77)];
+	f6 = heapFloat[(r1+78)];
+}
+else{
+	f6 =                         0;
+	f15 = f15*f6;
+	f12 = f12*f6;
+	f12 = f15+f12;
+	f13 = f13*f6;
+	f12 = f12+f13;
+	f13 = f6;
+	f15 = f6;
+}
+	f7 = f7*f15;
+	f3 = f3*f13;
+	f3 = f7+f3;
+	f5 = f5*f6;
+	f3 = f3+f5;
+	f3 = f12-f3;
+	f3 = f4+f3;
+	f1 = f1-f3;
+	f0 = f0*f1;
+	heapFloat[(r0+29)] = f0;
+	heapFloat[(r0+30)] = f2;
+	heap32[(r0+31)] = 0;
+	heap32[(r0+32)] = 1343554297;
+	return;
+}
+
+function _ZNK17btTypedConstraint9serializeEPvP12btSerializer(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+	var r6;
+var __label__ = 0;
+	i7 = sp + -8;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp+2)];
+	r1 = r0 >> 2;
+	r2 = heap32[(fp)];
+	r3 = heap32[(r1)];
+	r3 = r3 >> 2;
+	r4 = r2 >> 2;
+	r3 = heap32[(r3+7)];
+	r5 = heap32[(r4+5)];
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r5;
+	r5 = heap32[(fp+1)];
+	__FUNCTION_TABLE__[(r3)>>2](i7);
+	r5 = r5 >> 2;
+	heap32[(r5)] = r_g0;
+	r3 = heap32[(r1)];
+	r3 = r3 >> 2;
+	r3 = heap32[(r3+7)];
+	r6 = heap32[(r4+6)];
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r6;
+	__FUNCTION_TABLE__[(r3)>>2](i7);
+	heap32[(r5+1)] = r_g0;
+	r3 = heap32[(r1)];
+	r3 = r3 >> 2;
+	r3 = heap32[(r3+10)];
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r2;
+	__FUNCTION_TABLE__[(r3)>>2](i7);
+	r3 = r_g0;
+	r6 = heap32[(r1)];
+	r6 = r6 >> 2;
+	r6 = heap32[(r6+7)];
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r3;
+	__FUNCTION_TABLE__[(r6)>>2](i7);
+	r6 = r_g0;
+	heap32[(r5+2)] = r6;
+if(!(r6 ==0)) //_LBB615_2
+{
+	r1 = heap32[(r1)];
+	r1 = r1 >> 2;
+	r1 = heap32[(r1+12)];
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r3;
+	__FUNCTION_TABLE__[(r1)>>2](i7);
+}
+	r0 = heap32[(r4+1)];
+	heap32[(r5+3)] = r0;
+	r0 = heapU8[r2+16];
+	heap32[(r5+6)] = r0;
+	r0 = heap32[(r4+3)];
+	heap32[(r5+5)] = r0;
+	r0 = heap32[(r4+2)];
+	heap32[(r5+4)] = r0;
+	heap32[(r5+7)] = heap32[(r4+7)];
+	heap32[(r5+8)] = heap32[(r4+8)];
+	heap32[(r5+9)] = 0;
+	r0 = heap32[(r4+5)];
+	r1 = r0 >> 2;
+	r1 = heap32[(r1+120)];
+if(!(r1 <1)) //_LBB615_7
+{
+	r1 = 0;
+_6: while(true){
+	r0 = r0 >> 2;
+	r0 = heap32[(r0+122)];
+	r3 = r1 << 2;
+	r0 = (r0 + r3)|0;
+	r0 = r0 >> 2;
+	r0 = heap32[(r0)];
+if(!(r0 !=r2)) //_LBB615_6
+{
+	heap32[(r5+9)] = 1;
+}
+	r1 = (r1 + 1)|0;
+	r0 = heap32[(r4+5)];
+	r3 = r0 >> 2;
+	r3 = heap32[(r3+120)];
+	if(r3 >r1) //_LBB615_4
+{
+continue _6;
+}
+else{
+break _6;
+}
+}
+}
+	r0 = heap32[(r4+6)];
+	r1 = r0 >> 2;
+	r1 = heap32[(r1+120)];
+_12: do {
+if(!(r1 <1)) //_LBB615_12
+{
+	r1 = 0;
+_14: while(true){
+	r0 = r0 >> 2;
+	r0 = heap32[(r0+122)];
+	r3 = r1 << 2;
+	r0 = (r0 + r3)|0;
+	r0 = r0 >> 2;
+	r0 = heap32[(r0)];
+if(!(r0 !=r2)) //_LBB615_11
+{
+	heap32[(r5+9)] = 1;
+}
+	r1 = (r1 + 1)|0;
+	r0 = heap32[(r4+6)];
+	r3 = r0 >> 2;
+	r3 = heap32[(r3+120)];
+	if(r3 >r1) //_LBB615_9
+{
+continue _14;
+}
+else{
+break _12;
+}
+}
+}
+} while(0);
+	r0 = _2E_str76;
+	r_g0 = r0;
+	return;
+}
+
+function _ZN23btDiscreteDynamicsWorld11setNumTasksEi(sp)
+{
+	var i7;
+	var fp = sp>>2;
+var __label__ = 0;
+	i7 = sp + 0;var g0 = i7>>2; // save stack
+	return;
+}
+
+function _ZN23btDiscreteDynamicsWorld14updateVehiclesEf(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+	var f0;
+	var f1;
+	var f2;
+var __label__ = 0;
+	i7 = sp + -24;var g0 = i7>>2; // save stack
+	r0 = _2E_str289;
+	r1 = heap32[(fp)];
+	heap32[(g0)] = r0;
+	r0 = r1 >> 2;
+	_ZN15CProfileManager13Start_ProfileEPKc(i7);
+	r2 = heap32[(r0+63)];
+if(!(r2 <1)) //_LBB617_3
+{
+	f0 = heapFloat[(fp+1)];
+	r2 = 0;
+_3: while(true){
+	r3 = heap32[(r0+65)];
+	r4 = r2 << 2;
+	r3 = (r3 + r4)|0;
+	r3 = r3 >> 2;
+	r3 = heap32[(r3)];
+	r4 = r3 >> 2;
+	r4 = heap32[(r4)];
+	r4 = r4 >> 2;
+	r4 = heap32[(r4+2)];
+	heap32[(g0)] = r3;
+	heap32[(g0+1)] = r1;
+	heapFloat[(g0+2)] = f0;
+	r2 = (r2 + 1)|0;
+	__FUNCTION_TABLE__[(r4)>>2](i7);
+	r3 = heap32[(r0+63)];
+	if(r3 >r2) //_LBB617_2
+{
+continue _3;
+}
+else{
+break _3;
+}
+}
+}
+	r0 = _ZN15CProfileManager11CurrentNodeE;
+	r0 = r0 >> 2;
+	r1 = heap32[(r0)];
+	r2 = r1 >> 2;
+	r3 = heap32[(r2+4)];
+	r3 = (r3 + -1)|0;
+	heap32[(r2+4)] = r3;
+_6: do {
+if(!(r3 !=0)) //_LBB617_9
+{
+	r3 = heap32[(r2+1)];
+	if(r3 !=0) //_LBB617_6
+{
+	r1 = sp + -8;
+	heap32[(g0)] = r1;
+	heap32[(g0+1)] = 0;
+	r3 = _ZL13gProfileClock_2E_0;
+	gettimeofday(i7);
+	r3 = r3 >> 2;
+	r3 = heap32[(r3)];
+	r3 = r3 >> 2;
+	r1 = r1 >> 2;
+	r4 = heap32[(fp+-2)];
+	r5 = heap32[(r3)];
+	r4 = (r4 - r5)|0;
+	r1 = heap32[(r1+1)];
+	r3 = heap32[(r3+1)];
+	r1 = (r1 - r3)|0;
+	r3 = (r4 * 1000000)|0;
+	r1 = (r1 + r3)|0;
+	r3 = heap32[(r2+3)];
+	r1 = (r1 - r3)|0;
+	f0 = uint(r1); //fuitos r1, f0
+	f1 =                      1000;
+	f2 = heapFloat[(r2+2)];
+	f0 = f0/f1;
+	f0 = f2+f0;
+	heapFloat[(r2+2)] = f0;
+	r1 = heap32[(r2+4)];
+	if(r1 !=0) //_LBB617_9
+{
+break _6;
+}
+else{
+	r1 = heap32[(r0)];
+}
+}
+	r1 = r1 >> 2;
+	r1 = heap32[(r1+5)];
+	heap32[(r0)] = r1;
+}
+} while(0);
+	return;
+}
+
+function _ZN15btDynamicsWorld13addConstraintEP17btTypedConstraintb(sp)
+{
+	var i7;
+	var fp = sp>>2;
+var __label__ = 0;
+	i7 = sp + 0;var g0 = i7>>2; // save stack
+	return;
+}
+
+function _ZN15btDynamicsWorld16removeConstraintEP17btTypedConstraint(sp)
+{
+	var i7;
+	var fp = sp>>2;
+var __label__ = 0;
+	i7 = sp + 0;var g0 = i7>>2; // save stack
+	return;
+}
+
+function _ZNK15btDynamicsWorld17getNumConstraintsEv(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+var __label__ = 0;
+	i7 = sp + 0;var g0 = i7>>2; // save stack
+	r0 = 0;
+	r_g0 = r0;
+	return;
+}
+
+function _ZN15btDynamicsWorld13getConstraintEi(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+var __label__ = 0;
+	i7 = sp + 0;var g0 = i7>>2; // save stack
+	r0 = 0;
+	r_g0 = r0;
+	return;
+}
+
+function _ZNK15btDynamicsWorld13getConstraintEi(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+var __label__ = 0;
+	i7 = sp + 0;var g0 = i7>>2; // save stack
+	r0 = 0;
+	r_g0 = r0;
+	return;
+}
+
+function _ZN15btDynamicsWorld10addVehicleEP17btActionInterface(sp)
+{
+	var i7;
+	var fp = sp>>2;
+var __label__ = 0;
+	i7 = sp + 0;var g0 = i7>>2; // save stack
+	return;
+}
+
+function _ZN15btDynamicsWorld13removeVehicleEP17btActionInterface(sp)
+{
+	var i7;
+	var fp = sp>>2;
+var __label__ = 0;
+	i7 = sp + 0;var g0 = i7>>2; // save stack
+	return;
+}
+
+function _ZN15btDynamicsWorld12addCharacterEP17btActionInterface(sp)
+{
+	var i7;
+	var fp = sp>>2;
+var __label__ = 0;
+	i7 = sp + 0;var g0 = i7>>2; // save stack
+	return;
+}
+
+function _ZN15btDynamicsWorld15removeCharacterEP17btActionInterface(sp)
+{
+	var i7;
+	var fp = sp>>2;
+var __label__ = 0;
+	i7 = sp + 0;var g0 = i7>>2; // save stack
+	return;
+}
+
+function _ZNK23btDiscreteDynamicsWorld12getWorldTypeEv(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+var __label__ = 0;
+	i7 = sp + 0;var g0 = i7>>2; // save stack
+	r0 = 2;
+	r_g0 = r0;
+	return;
+}
+
+function _ZNK23btDiscreteDynamicsWorld10getGravityEv(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+var __label__ = 0;
+	i7 = sp + 0;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = heap32[(fp+1)];
+	r0 = r0 >> 2;
+	r1 = r1 >> 2;
+	heap32[(r0)] = heap32[(r1+56)];
+	heap32[(r0+1)] = heap32[(r1+57)];
+	heap32[(r0+2)] = heap32[(r1+58)];
+	heap32[(r0+3)] = heap32[(r1+59)];
+	return;
+}
+
+function _ZN23btDiscreteDynamicsWorld10addVehicleEP17btActionInterface(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+var __label__ = 0;
+	i7 = sp + -8;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = r0 >> 2;
+	r1 = heap32[(r1)];
+	r1 = r1 >> 2;
+	r1 = heap32[(r1+15)];
+	r2 = heap32[(fp+1)];
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r2;
+	__FUNCTION_TABLE__[(r1)>>2](i7);
+	return;
+}
+
+function _ZN23btDiscreteDynamicsWorld13removeVehicleEP17btActionInterface(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+var __label__ = 0;
+	i7 = sp + -8;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = r0 >> 2;
+	r1 = heap32[(r1)];
+	r1 = r1 >> 2;
+	r1 = heap32[(r1+16)];
+	r2 = heap32[(fp+1)];
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r2;
+	__FUNCTION_TABLE__[(r1)>>2](i7);
+	return;
+}
+
+function _ZN23btDiscreteDynamicsWorld12addCharacterEP17btActionInterface(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+var __label__ = 0;
+	i7 = sp + -8;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = r0 >> 2;
+	r1 = heap32[(r1)];
+	r1 = r1 >> 2;
+	r1 = heap32[(r1+15)];
+	r2 = heap32[(fp+1)];
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r2;
+	__FUNCTION_TABLE__[(r1)>>2](i7);
+	return;
+}
+
+function _ZN23btDiscreteDynamicsWorld15removeCharacterEP17btActionInterface(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+var __label__ = 0;
+	i7 = sp + -8;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = r0 >> 2;
+	r1 = heap32[(r1)];
+	r1 = r1 >> 2;
+	r1 = heap32[(r1+16)];
+	r2 = heap32[(fp+1)];
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r2;
+	__FUNCTION_TABLE__[(r1)>>2](i7);
+	return;
+}
+
+function _ZN34btClosestNotMeConvexResultCallbackD1Ev(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+var __label__ = 0;
+	i7 = sp + 0;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = _ZTVN16btCollisionWorld27ClosestConvexResultCallbackE;
+	r0 = r0 >> 2;
+	r1 = (r1 + 8)|0;
+	heap32[(r0)] = r1;
+	return;
+}
+
+function _ZN34btClosestNotMeConvexResultCallbackD0Ev(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+var __label__ = 0;
+	i7 = sp + -8;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = _ZTVN16btCollisionWorld27ClosestConvexResultCallbackE;
+	r2 = r0 >> 2;
+	r1 = (r1 + 8)|0;
+	heap32[(r2)] = r1;
+	heap32[(g0)] = r0;
+	_ZdlPv(i7);
+	return;
+}
+
+function _ZNK34btClosestNotMeConvexResultCallback14needsCollisionEP17btBroadphaseProxy(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+	var r6;
+	var r7;
+var __label__ = 0;
+	i7 = sp + -40;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = heap32[(fp+1)];
+	r2 = r1 >> 2;
+	r3 = r0 >> 2;
+	r2 = heap32[(r2)];
+	r4 = heap32[(r3+20)];
+	if(r2 !=r4) //_LBB635_2
+{
+	r5 = heapU16[(r0+10)>>1];
+	r6 = heapU16[(r1+4)>>1];
+	r5 = r5 & r6;
+	r5 = r5 & 65535;
+	if(r5 ==0) //_LBB635_1
+{
+__label__ = 1;
+}
+else{
+	r5 = heapU16[(r1+6)>>1];
+	r0 = heapU16[(r0+8)>>1];
+	r0 = r5 & r0;
+	r0 = r0 & 65535;
+	if(r0 ==0) //_LBB635_1
+{
+__label__ = 1;
+}
+else{
+	r0 = heap32[(r3+23)];
+	r5 = r0 >> 2;
+	r5 = heap32[(r5)];
+	r5 = r5 >> 2;
+	r5 = heap32[(r5+7)];
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r4;
+	heap32[(g0+2)] = r2;
+	__FUNCTION_TABLE__[(r5)>>2](i7);
+	r0 = r_g0;
+	if(r0 !=0) //_LBB635_6
+{
+	r0 = sp + -24;
+	r2 = 1;
+	r4 = r0 >> 2;
+	heap8[sp+-8] = r2;
+	heap32[(r4+3)] = 0;
+	heap32[(r4+1)] = 0;
+	heap32[(r4+2)] = 0;
+	r5 = heap32[(r3+22)];
+	r6 = r5 >> 2;
+	r6 = heap32[(r6)];
+	r3 = heap32[(r3+20)];
+	r6 = r6 >> 2;
+	r3 = r3 >> 2;
+	r6 = heap32[(r6+13)];
+	r3 = heap32[(r3+47)];
+	heap32[(g0)] = r5;
+	heap32[(g0+1)] = r3;
+	heap32[(g0+2)] = r1;
+	__FUNCTION_TABLE__[(r6)>>2](i7);
+	r1 = r_g0;
+_7: do {
+if(!(r1 ==0)) //_LBB635_21
+{
+	r1 = r1 >> 2;
+	r3 = heap32[(r1+2)];
+if(!(r3 ==0)) //_LBB635_21
+{
+	r3 = heap32[(r4+1)];
+if(!(r3 >-1)) //_LBB635_17
+{
+	r5 = heap32[(r4+2)];
+	if(r5 <0) //_LBB635_11
+{
+	r5 = heap32[(r4+3)];
+if(!(r5 ==0)) //_LBB635_15
+{
+	r6 = heapU8[sp+-8];
+if(!(r6 ==0)) //_LBB635_14
+{
+	r6 = gNumAlignedFree;
+	r6 = r6 >> 2;
+	r7 = heap32[(r6)];
+	r7 = (r7 + 1)|0;
+	r5 = r5 >> 2;
+	heap32[(r6)] = r7;
+	r5 = heap32[(r5+-1)];
+	heap32[(g0)] = r5;
+	free(i7);
+}
+	heap32[(r4+3)] = 0;
+}
+	heap8[sp+-8] = r2;
+	heap32[(r4+3)] = 0;
+	heap32[(r4+2)] = 0;
+}
+_20: while(true){
+	r2 = r3 << 2;
+	r5 = heap32[(r4+3)];
+	r2 = (r5 + r2)|0;
+	r3 = (r3 + 1)|0;
+	r2 = r2 >> 2;
+	heap32[(r2)] = 0;
+if(!(r3 !=0)) //_LBB635_16
+{
+break _20;
+}
+}
+}
+	heap32[(r4+1)] = 0;
+	r1 = heap32[(r1+2)];
+	r2 = r1 >> 2;
+	r2 = heap32[(r2)];
+	r2 = r2 >> 2;
+	r2 = heap32[(r2+4)];
+	heap32[(g0)] = r1;
+	heap32[(g0+1)] = r0;
+	__FUNCTION_TABLE__[(r2)>>2](i7);
+	r0 = heap32[(r4+1)];
+	r1 = 0;
+_23: while(true){
+	if(r0 >r1) //_LBB635_18
+{
+	r2 = heap32[(r4+3)];
+	r3 = r1 << 2;
+	r3 = (r2 + r3)|0;
+	r3 = r3 >> 2;
+	r3 = heap32[(r3)];
+	r3 = r3 >> 2;
+	r3 = heap32[(r3+279)];
+	if(r3 >0) //_LBB635_25
+{
+break _23;
+}
+else{
+	r1 = (r1 + 1)|0;
+}
+}
+else{
+break _7;
+}
+}
+if(!(r2 ==0)) //_LBB635_29
+{
+	r0 = heapU8[sp+-8];
+if(!(r0 ==0)) //_LBB635_28
+{
+	r0 = gNumAlignedFree;
+	r0 = r0 >> 2;
+	r1 = heap32[(r0)];
+	r1 = (r1 + 1)|0;
+	r2 = r2 >> 2;
+	heap32[(r0)] = r1;
+	r0 = heap32[(r2+-1)];
+	heap32[(g0)] = r0;
+	free(i7);
+}
+}
+	r0 = 0;
+	r_g0 = r0;
+	return;
+}
+}
+} while(0);
+	r0 = heap32[(r4+3)];
+if(!(r0 ==0)) //_LBB635_24
+{
+	r2 = heapU8[sp+-8];
+if(!(r2 ==0)) //_LBB635_24
+{
+	r2 = gNumAlignedFree;
+	r2 = r2 >> 2;
+	r1 = heap32[(r2)];
+	r1 = (r1 + 1)|0;
+	r0 = r0 >> 2;
+	heap32[(r2)] = r1;
+	r0 = heap32[(r0+-1)];
+	heap32[(g0)] = r0;
+	free(i7);
+}
+}
+	r0 = 1;
+	r_g0 = r0;
+	return;
+}
+else{
+	r0 = 1;
+__label__ = 28;
+}
+}
+}
+}
+else{
+__label__ = 1;
+}
+if (__label__ == 1){
+	r0 = 0;
+}
+	r0 = r0 & 255;
+	r_g0 = r0;
+	return;
+}
+
+function _ZN34btClosestNotMeConvexResultCallback15addSingleResultERN16btCollisionWorld17LocalConvexResultEb(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+	var f0;
+	var f1;
+	var f2;
+	var f3;
+	var f4;
+	var f5;
+var __label__ = 0;
+	i7 = sp + -16;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp+1)];
+	r1 = r0 >> 2;
+	r2 = heap32[(fp)];
+	r3 = heap32[(r1)];
+	r4 = r2 >> 2;
+	r5 = heap32[(r4+20)];
+if(!(r3 ==r5)) //_LBB636_4
+{
+	r3 = heapU8[r3+204];
+	r3 = r3 & 4;
+if(!(r3 !=0)) //_LBB636_4
+{
+	f0 = heapFloat[(r4+7)];
+	f1 = heapFloat[(r4+3)];
+	f2 = heapFloat[(r4+8)];
+	f3 = heapFloat[(r4+4)];
+	f4 = heapFloat[(r1+2)];
+	f0 = f0-f1;
+	f1 = heapFloat[(r1+3)];
+	f2 = f2-f3;
+	f3 = heapFloat[(r4+9)];
+	f5 = heapFloat[(r4+5)];
+	f0 = f4*f0;
+	f1 = f1*f2;
+	f2 = heapFloat[(r1+4)];
+	f3 = f3-f5;
+	f4 = heapFloat[(r4+21)];
+	f0 = f0+f1;
+	f1 = f2*f3;
+	f0 = f0+f1;
+	f1 = -f4;
+if(!(f0 >=f1)) //_LBB636_4
+{
+	r1 = heap32[(fp+2)];
+	heap32[(g0)] = r2;
+	heap32[(g0+1)] = r0;
+	heap32[(g0+2)] = r1;
+	_ZN16btCollisionWorld27ClosestConvexResultCallback15addSingleResultERNS_17LocalConvexResultEb(i7);
+	return;
+}
+}
+}
+	f0 =                         1;
+	f_g0 = f0;
+	return;
+}
+
+function _ZN23btDiscreteDynamicsWorld19getConstraintSolverEv(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+var __label__ = 0;
+	i7 = sp + 0;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r0 = r0 >> 2;
+	r0 = heap32[(r0+44)];
+	r_g0 = r0;
+	return;
+}
+
+function _ZNK23btDiscreteDynamicsWorld17getNumConstraintsEv(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+var __label__ = 0;
+	i7 = sp + 0;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r0 = r0 >> 2;
+	r0 = heap32[(r0+47)];
+	r_g0 = r0;
+	return;
+}
+
+function _ZN23btDiscreteDynamicsWorld13getConstraintEi(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+var __label__ = 0;
+	i7 = sp + 0;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r0 = r0 >> 2;
+	r1 = heap32[(fp+1)];
+	r0 = heap32[(r0+49)];
+	r1 = r1 << 2;
+	r0 = (r0 + r1)|0;
+	r0 = r0 >> 2;
+	r0 = heap32[(r0)];
+	r_g0 = r0;
+	return;
+}
+
+function _ZN23btDiscreteDynamicsWorld11clearForcesEv(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+var __label__ = 0;
+	i7 = sp + 0;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r0 = r0 >> 2;
+	r1 = heap32[(r0+52)];
+if(!(r1 <1)) //_LBB640_3
+{
+	r1 = 0;
+_3: while(true){
+	r2 = heap32[(r0+54)];
+	r3 = r1 << 2;
+	r2 = (r2 + r3)|0;
+	r2 = r2 >> 2;
+	r2 = heap32[(r2)];
+	r2 = r2 >> 2;
+	r1 = (r1 + 1)|0;
+	heap32[(r2+101)] = 0;
+	heap32[(r2+102)] = 0;
+	heap32[(r2+103)] = 0;
+	heap32[(r2+104)] = 0;
+	heap32[(r2+105)] = 0;
+	heap32[(r2+106)] = 0;
+	heap32[(r2+107)] = 0;
+	heap32[(r2+108)] = 0;
+	r2 = heap32[(r0+52)];
+	if(r2 >r1) //_LBB640_2
+{
+continue _3;
+}
+else{
+break _3;
+}
+}
+}
+	return;
+}
+
+function _ZNK23btDiscreteDynamicsWorld13getConstraintEi(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+var __label__ = 0;
+	i7 = sp + 0;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r0 = r0 >> 2;
+	r1 = heap32[(fp+1)];
+	r0 = heap32[(r0+49)];
+	r1 = r1 << 2;
+	r0 = (r0 + r1)|0;
+	r0 = r0 >> 2;
+	r0 = heap32[(r0)];
+	r_g0 = r0;
+	return;
+}
+
+function _ZN23btDiscreteDynamicsWorld12removeActionEP17btActionInterface(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+var __label__ = 0;
+	i7 = sp + 0;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r0 = r0 >> 2;
+	r1 = heap32[(fp+1)];
+	r2 = heap32[(r0+63)];
+	r3 = 0;
+_1: while(true){
+	if(r2 >r3) //_LBB642_1
+{
+	r4 = heap32[(r0+65)];
+	r5 = r3 << 2;
+	r4 = (r4 + r5)|0;
+	r4 = r4 >> 2;
+	r4 = heap32[(r4)];
+	if(r4 !=r1) //_LBB642_3
+{
+	r3 = (r3 + 1)|0;
+continue _1;
+}
+else{
+__label__ = 5;
+break _1;
+}
+}
+else{
+__label__ = 4;
+break _1;
+}
+}
+if (__label__ == 4){
+	r3 = r2;
+}
+if(!(r2 <=r3)) //_LBB642_8
+{
+	r1 = (r2 + -1)|0;
+	r2 = r3 << 2;
+	r3 = heap32[(r0+65)];
+	r1 = r1 << 2;
+	r2 = (r3 + r2)|0;
+	r3 = (r3 + r1)|0;
+	r2 = r2 >> 2;
+	r3 = r3 >> 2;
+	r4 = heap32[(r2)];
+	r3 = heap32[(r3)];
+	heap32[(r2)] = r3;
+	r2 = heap32[(r0+65)];
+	r1 = (r2 + r1)|0;
+	r1 = r1 >> 2;
+	heap32[(r1)] = r4;
+	r1 = heap32[(r0+63)];
+	r1 = (r1 + -1)|0;
+	heap32[(r0+63)] = r1;
+}
+	return;
+}
+
+function _ZZN23btDiscreteDynamicsWorld16solveConstraintsER19btContactSolverInfoEN27InplaceSolverIslandCallbackD1Ev(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+var __label__ = 0;
+	i7 = sp + -8;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = _ZTVZN23btDiscreteDynamicsWorld16solveConstraintsER19btContactSolverInfoE27InplaceSolverIslandCallback;
+	r2 = r0 >> 2;
+	r1 = (r1 + 8)|0;
+	heap32[(r2)] = r1;
+	r1 = heap32[(r2+21)];
+if(!(r1 ==0)) //_LBB643_4
+{
+	r3 = heapU8[r0+88];
+if(!(r3 ==0)) //_LBB643_3
+{
+	r3 = gNumAlignedFree;
+	r3 = r3 >> 2;
+	r4 = heap32[(r3)];
+	r4 = (r4 + 1)|0;
+	r1 = r1 >> 2;
+	heap32[(r3)] = r4;
+	r1 = heap32[(r1+-1)];
+	heap32[(g0)] = r1;
+	free(i7);
+}
+	heap32[(r2+21)] = 0;
+}
+	r1 = 1;
+	heap8[r0+88] = r1;
+	heap32[(r2+21)] = 0;
+	heap32[(r2+19)] = 0;
+	heap32[(r2+20)] = 0;
+	r3 = heap32[(r2+16)];
+if(!(r3 ==0)) //_LBB643_8
+{
+	r4 = heapU8[r0+68];
+if(!(r4 ==0)) //_LBB643_7
+{
+	r4 = gNumAlignedFree;
+	r4 = r4 >> 2;
+	r5 = heap32[(r4)];
+	r5 = (r5 + 1)|0;
+	r3 = r3 >> 2;
+	heap32[(r4)] = r5;
+	r3 = heap32[(r3+-1)];
+	heap32[(g0)] = r3;
+	free(i7);
+}
+	heap32[(r2+16)] = 0;
+}
+	heap8[r0+68] = r1;
+	heap32[(r2+16)] = 0;
+	heap32[(r2+14)] = 0;
+	heap32[(r2+15)] = 0;
+	r3 = heap32[(r2+11)];
+if(!(r3 ==0)) //_LBB643_12
+{
+	r4 = heapU8[r0+48];
+if(!(r4 ==0)) //_LBB643_11
+{
+	r4 = gNumAlignedFree;
+	r4 = r4 >> 2;
+	r5 = heap32[(r4)];
+	r5 = (r5 + 1)|0;
+	r3 = r3 >> 2;
+	heap32[(r4)] = r5;
+	r3 = heap32[(r3+-1)];
+	heap32[(g0)] = r3;
+	free(i7);
+}
+	heap32[(r2+11)] = 0;
+}
+	heap8[r0+48] = r1;
+	heap32[(r2+11)] = 0;
+	heap32[(r2+9)] = 0;
+	heap32[(r2+10)] = 0;
+	return;
+}
+
+function _ZZN23btDiscreteDynamicsWorld16solveConstraintsER19btContactSolverInfoEN27InplaceSolverIslandCallbackD0Ev(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+var __label__ = 0;
+	i7 = sp + -8;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = _ZTVZN23btDiscreteDynamicsWorld16solveConstraintsER19btContactSolverInfoE27InplaceSolverIslandCallback;
+	r2 = r0 >> 2;
+	r1 = (r1 + 8)|0;
+	heap32[(r2)] = r1;
+	r1 = heap32[(r2+21)];
+if(!(r1 ==0)) //_LBB644_4
+{
+	r3 = heapU8[r0+88];
+if(!(r3 ==0)) //_LBB644_3
+{
+	r3 = gNumAlignedFree;
+	r3 = r3 >> 2;
+	r4 = heap32[(r3)];
+	r4 = (r4 + 1)|0;
+	r1 = r1 >> 2;
+	heap32[(r3)] = r4;
+	r1 = heap32[(r1+-1)];
+	heap32[(g0)] = r1;
+	free(i7);
+}
+	heap32[(r2+21)] = 0;
+}
+	r1 = 1;
+	heap8[r0+88] = r1;
+	heap32[(r2+21)] = 0;
+	heap32[(r2+19)] = 0;
+	heap32[(r2+20)] = 0;
+	r3 = heap32[(r2+16)];
+if(!(r3 ==0)) //_LBB644_8
+{
+	r4 = heapU8[r0+68];
+if(!(r4 ==0)) //_LBB644_7
+{
+	r4 = gNumAlignedFree;
+	r4 = r4 >> 2;
+	r5 = heap32[(r4)];
+	r5 = (r5 + 1)|0;
+	r3 = r3 >> 2;
+	heap32[(r4)] = r5;
+	r3 = heap32[(r3+-1)];
+	heap32[(g0)] = r3;
+	free(i7);
+}
+	heap32[(r2+16)] = 0;
+}
+	heap8[r0+68] = r1;
+	heap32[(r2+16)] = 0;
+	heap32[(r2+14)] = 0;
+	heap32[(r2+15)] = 0;
+	r3 = heap32[(r2+11)];
+if(!(r3 ==0)) //_LBB644_12
+{
+	r4 = heapU8[r0+48];
+if(!(r4 ==0)) //_LBB644_11
+{
+	r4 = gNumAlignedFree;
+	r4 = r4 >> 2;
+	r5 = heap32[(r4)];
+	r5 = (r5 + 1)|0;
+	r3 = r3 >> 2;
+	heap32[(r4)] = r5;
+	r3 = heap32[(r3+-1)];
+	heap32[(g0)] = r3;
+	free(i7);
+}
+	heap32[(r2+11)] = 0;
+}
+	heap8[r0+48] = r1;
+	heap32[(r2+11)] = 0;
+	heap32[(r2+9)] = 0;
+	heap32[(r2+10)] = 0;
+	heap32[(g0)] = r0;
+	_ZdlPv(i7);
+	return;
+}
+
+function _ZZN23btDiscreteDynamicsWorld16solveConstraintsER19btContactSolverInfoEN27InplaceSolverIslandCallback13ProcessIslandEPP17btCollisionObjectiPP20btPersistentManifoldii(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+	var r6;
+	var r7;
+	var r8;
+	var r9;
+	var r10;
+	var r11;
+	var r12;
+	var r13;
+	var r14;
+	var r15;
+var __label__ = 0;
+	i7 = sp + -48;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = r0 >> 2;
+	r2 = heap32[(fp+5)];
+	r3 = heap32[(fp+1)];
+	r4 = heap32[(fp+2)];
+	r5 = heap32[(fp+3)];
+	r6 = heap32[(fp+4)];
+	r7 = heap32[(r1+4)];
+_1: do {
+	if(r2 <0) //_LBB645_2
+{
+	r0 = 0;
+	r0 = (r0 - r6)|0;
+	if(r7 ==r0) //_LBB645_87
+{
+break _1;
+}
+else{
+	r0 = heap32[(r1+2)];
+	r2 = r0 >> 2;
+	r2 = heap32[(r2)];
+	r2 = r2 >> 2;
+	r2 = heap32[(r2+3)];
+	r8 = heap32[(r1+7)];
+	r9 = heap32[(r1+6)];
+	r10 = heap32[(r1+5)];
+	r11 = heap32[(r1+1)];
+	r1 = heap32[(r1+3)];
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r3;
+	heap32[(g0+2)] = r4;
+	heap32[(g0+3)] = r5;
+	heap32[(g0+4)] = r6;
+	heap32[(g0+5)] = r1;
+	heap32[(g0+6)] = r7;
+	heap32[(g0+7)] = r11;
+	heap32[(g0+8)] = r10;
+	heap32[(g0+9)] = r9;
+	heap32[(g0+10)] = r8;
+	__FUNCTION_TABLE__[(r2)>>2](i7);
+	return;
+}
+}
+else{
+	r8 = 1;
+	r9 = 4;
+	r10 = 0;
+_5: while(true){
+	if(r7 >r10) //_LBB645_4
+{
+	r11 = heap32[(r1+3)];
+	r12 = r10 << 2;
+	r12 = (r11 + r12)|0;
+	r12 = r12 >> 2;
+	r12 = heap32[(r12)];
+	r12 = r12 >> 2;
+	r13 = heap32[(r12+5)];
+	r13 = r13 >> 2;
+	r13 = heap32[(r13+52)];
+	if(r13 <0) //_LBB645_6
+{
+	r13 = heap32[(r12+6)];
+	r13 = r13 >> 2;
+	r13 = heap32[(r13+52)];
+}
+	r10 = (r10 + 1)|0;
+	r9 = (r9 + -4)|0;
+	r8 = (r8 + -1)|0;
+	if(r13 ==r2) //_LBB645_10
+{
+__label__ = 9;
+break _5;
+}
+else{
+__label__ = 7;
+}
+}
+else{
+__label__ = 8;
+break _5;
+}
+}
+_11: do {
+switch(__label__ ){//multiple entries
+case 9:
+	r10 = r7 > r10 ? r7 : r10;
+	r7 = (r11 - r9)|0;
+	r9 = (r10 + r8)|0;
+	r8 = 0;
+	r10 = r7;
+_13: while(true){
+	r11 = r10 >> 2;
+	r11 = heap32[(r11)];
+	r11 = r11 >> 2;
+	r12 = heap32[(r11+5)];
+	r12 = r12 >> 2;
+	r12 = heap32[(r12+52)];
+	if(r12 <0) //_LBB645_13
+{
+	r12 = heap32[(r11+6)];
+	r12 = r12 >> 2;
+	r12 = heap32[(r12+52)];
+}
+	r11 = r12 == r2;
+	r11 = r11 & 1;
+	r9 = (r9 + -1)|0;
+	r8 = (r11 + r8)|0;
+	r10 = (r10 + 4)|0;
+if(!(r9 !=0)) //_LBB645_11
+{
+break _11;
+}
+}
+break;
+case 8:
+	r7 = 0;
+	r8 = r7;
+break;
+}
+} while(0);
+	r2 = heap32[(r1+1)];
+	r9 = r2 >> 2;
+	r9 = heap32[(r9+17)];
+	if(r9 <2) //_LBB645_17
+{
+	r0 = 0;
+	r0 = (r0 - r6)|0;
+	if(r8 ==r0) //_LBB645_87
+{
+break _1;
+}
+else{
+	r0 = heap32[(r1+2)];
+	r9 = r0 >> 2;
+	r9 = heap32[(r9)];
+	r9 = r9 >> 2;
+	r9 = heap32[(r9+3)];
+	r10 = heap32[(r1+7)];
+	r11 = heap32[(r1+6)];
+	r1 = heap32[(r1+5)];
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r3;
+	heap32[(g0+2)] = r4;
+	heap32[(g0+3)] = r5;
+	heap32[(g0+4)] = r6;
+	heap32[(g0+5)] = r7;
+	heap32[(g0+6)] = r8;
+	heap32[(g0+7)] = r2;
+	heap32[(g0+8)] = r1;
+	heap32[(g0+9)] = r11;
+	heap32[(g0+10)] = r10;
+	__FUNCTION_TABLE__[(r9)>>2](i7);
+	return;
+}
+}
+else{
+_24: do {
+	if(r4 >0) //_LBB645_19
+{
+	r2 = heap32[(r1+9)];
+_26: while(true){
+	r9 = heap32[(r1+10)];
+	if(r9 ==r2) //_LBB645_22
+{
+	r10 = 1;
+	r11 = r2 << 1;
+	r11 = r2 == 0 ? r10 : r11;
+if(!(r9 >=r11)) //_LBB645_21
+{
+	if(r11 !=0) //_LBB645_25
+{
+	r9 = gNumAlignedAllocs;
+	r9 = r9 >> 2;
+	r12 = heap32[(r9)];
+	r13 = r11 << 2;
+	r12 = (r12 + 1)|0;
+	r13 = r13 | 3;
+	heap32[(r9)] = r12;
+	r9 = (r13 + 16)|0;
+	heap32[(g0)] = r9;
+	malloc(i7);
+	r9 = r_g0;
+	if(r9 !=0) //_LBB645_27
+{
+	r12 = 0;
+	r13 = (r9 + 4)|0;
+	r12 = (r12 - r13)|0;
+	r12 = r12 & 15;
+	r12 = (r9 + r12)|0;
+	r13 = (r12 + 4)|0;
+	r12 = r12 >> 2;
+	heap32[(r12)] = r9;
+	r9 = r13;
+}
+}
+else{
+	r9 = 0;
+}
+	if(r2 <1) //_LBB645_30
+{
+	r13 = heap32[(r1+11)];
+}
+else{
+	r12 = 0;
+_39: while(true){
+	r13 = heap32[(r1+11)];
+	r14 = r12 << 2;
+	r15 = (r13 + r14)|0;
+	r15 = r15 >> 2;
+	r14 = (r9 + r14)|0;
+	r15 = heap32[(r15)];
+	r12 = (r12 + 1)|0;
+	r14 = r14 >> 2;
+	heap32[(r14)] = r15;
+if(!(r2 !=r12)) //_LBB645_31
+{
+break _39;
+}
+}
+}
+	if(r13 !=0) //_LBB645_34
+{
+	r12 = heapU8[r0+48];
+	if(r12 !=0) //_LBB645_36
+{
+	r2 = gNumAlignedFree;
+	r2 = r2 >> 2;
+	r12 = heap32[(r2)];
+	r12 = (r12 + 1)|0;
+	r13 = r13 >> 2;
+	heap32[(r2)] = r12;
+	r2 = heap32[(r13+-1)];
+	heap32[(g0)] = r2;
+	free(i7);
+	r2 = heap32[(r1+9)];
+}
+	heap32[(r1+11)] = 0;
+}
+	heap8[r0+48] = r10;
+	heap32[(r1+11)] = r9;
+	heap32[(r1+10)] = r11;
+}
+}
+	r9 = r3 >> 2;
+	r2 = r2 << 2;
+	r10 = heap32[(r1+11)];
+	r2 = (r10 + r2)|0;
+	r9 = heap32[(r9)];
+	r2 = r2 >> 2;
+	heap32[(r2)] = r9;
+	r2 = heap32[(r1+9)];
+	r2 = (r2 + 1)|0;
+	r4 = (r4 + -1)|0;
+	r3 = (r3 + 4)|0;
+	heap32[(r1+9)] = r2;
+if(!(r4 !=0)) //_LBB645_20
+{
+break _24;
+}
+}
+}
+} while(0);
+_50: do {
+if(!(r6 <1)) //_LBB645_62
+{
+	r2 = heap32[(r1+14)];
+_52: while(true){
+	r3 = heap32[(r1+15)];
+	if(r3 ==r2) //_LBB645_44
+{
+	r4 = 1;
+	r9 = r2 << 1;
+	r9 = r2 == 0 ? r4 : r9;
+if(!(r3 >=r9)) //_LBB645_43
+{
+	if(r9 !=0) //_LBB645_47
+{
+	r3 = gNumAlignedAllocs;
+	r3 = r3 >> 2;
+	r10 = heap32[(r3)];
+	r11 = r9 << 2;
+	r10 = (r10 + 1)|0;
+	r11 = r11 | 3;
+	heap32[(r3)] = r10;
+	r3 = (r11 + 16)|0;
+	heap32[(g0)] = r3;
+	malloc(i7);
+	r3 = r_g0;
+	if(r3 !=0) //_LBB645_49
+{
+	r10 = 0;
+	r11 = (r3 + 4)|0;
+	r10 = (r10 - r11)|0;
+	r10 = r10 & 15;
+	r10 = (r3 + r10)|0;
+	r11 = (r10 + 4)|0;
+	r10 = r10 >> 2;
+	heap32[(r10)] = r3;
+	r3 = r11;
+}
+}
+else{
+	r3 = 0;
+}
+	if(r2 <1) //_LBB645_52
+{
+	r11 = heap32[(r1+16)];
+}
+else{
+	r10 = 0;
+_65: while(true){
+	r11 = heap32[(r1+16)];
+	r12 = r10 << 2;
+	r13 = (r11 + r12)|0;
+	r13 = r13 >> 2;
+	r12 = (r3 + r12)|0;
+	r13 = heap32[(r13)];
+	r10 = (r10 + 1)|0;
+	r12 = r12 >> 2;
+	heap32[(r12)] = r13;
+if(!(r2 !=r10)) //_LBB645_53
+{
+break _65;
+}
+}
+}
+	if(r11 !=0) //_LBB645_56
+{
+	r10 = heapU8[r0+68];
+	if(r10 !=0) //_LBB645_58
+{
+	r2 = gNumAlignedFree;
+	r2 = r2 >> 2;
+	r10 = heap32[(r2)];
+	r10 = (r10 + 1)|0;
+	r11 = r11 >> 2;
+	heap32[(r2)] = r10;
+	r2 = heap32[(r11+-1)];
+	heap32[(g0)] = r2;
+	free(i7);
+	r2 = heap32[(r1+14)];
+}
+	heap32[(r1+16)] = 0;
+}
+	heap8[r0+68] = r4;
+	heap32[(r1+16)] = r3;
+	heap32[(r1+15)] = r9;
+}
+}
+	r3 = r5 >> 2;
+	r2 = r2 << 2;
+	r4 = heap32[(r1+16)];
+	r2 = (r4 + r2)|0;
+	r3 = heap32[(r3)];
+	r2 = r2 >> 2;
+	heap32[(r2)] = r3;
+	r2 = heap32[(r1+14)];
+	r2 = (r2 + 1)|0;
+	r6 = (r6 + -1)|0;
+	r5 = (r5 + 4)|0;
+	heap32[(r1+14)] = r2;
+if(!(r6 !=0)) //_LBB645_42
+{
+break _50;
+}
+}
+}
+} while(0);
+_76: do {
+	if(r8 >0) //_LBB645_64
+{
+	r2 = heap32[(r1+19)];
+_78: while(true){
+	r3 = heap32[(r1+20)];
+	if(r3 ==r2) //_LBB645_67
+{
+	r4 = 1;
+	r5 = r2 << 1;
+	r5 = r2 == 0 ? r4 : r5;
+if(!(r3 >=r5)) //_LBB645_66
+{
+	if(r5 !=0) //_LBB645_70
+{
+	r3 = gNumAlignedAllocs;
+	r3 = r3 >> 2;
+	r6 = heap32[(r3)];
+	r9 = r5 << 2;
+	r6 = (r6 + 1)|0;
+	r9 = r9 | 3;
+	heap32[(r3)] = r6;
+	r3 = (r9 + 16)|0;
+	heap32[(g0)] = r3;
+	malloc(i7);
+	r3 = r_g0;
+	if(r3 !=0) //_LBB645_72
+{
+	r6 = 0;
+	r9 = (r3 + 4)|0;
+	r6 = (r6 - r9)|0;
+	r6 = r6 & 15;
+	r6 = (r3 + r6)|0;
+	r9 = (r6 + 4)|0;
+	r6 = r6 >> 2;
+	heap32[(r6)] = r3;
+	r3 = r9;
+}
+}
+else{
+	r3 = 0;
+}
+	if(r2 <1) //_LBB645_75
+{
+	r9 = heap32[(r1+21)];
+}
+else{
+	r6 = 0;
+_91: while(true){
+	r9 = heap32[(r1+21)];
+	r10 = r6 << 2;
+	r11 = (r9 + r10)|0;
+	r11 = r11 >> 2;
+	r10 = (r3 + r10)|0;
+	r11 = heap32[(r11)];
+	r6 = (r6 + 1)|0;
+	r10 = r10 >> 2;
+	heap32[(r10)] = r11;
+if(!(r2 !=r6)) //_LBB645_76
+{
+break _91;
+}
+}
+}
+	if(r9 !=0) //_LBB645_79
+{
+	r6 = heapU8[r0+88];
+	if(r6 !=0) //_LBB645_81
+{
+	r2 = gNumAlignedFree;
+	r2 = r2 >> 2;
+	r6 = heap32[(r2)];
+	r6 = (r6 + 1)|0;
+	r9 = r9 >> 2;
+	heap32[(r2)] = r6;
+	r2 = heap32[(r9+-1)];
+	heap32[(g0)] = r2;
+	free(i7);
+	r2 = heap32[(r1+19)];
+}
+	heap32[(r1+21)] = 0;
+}
+	heap8[r0+88] = r4;
+	heap32[(r1+21)] = r3;
+	heap32[(r1+20)] = r5;
+}
+}
+	r3 = r7 >> 2;
+	r2 = r2 << 2;
+	r4 = heap32[(r1+21)];
+	r2 = (r4 + r2)|0;
+	r3 = heap32[(r3)];
+	r2 = r2 >> 2;
+	heap32[(r2)] = r3;
+	r2 = heap32[(r1+19)];
+	r2 = (r2 + 1)|0;
+	r8 = (r8 + -1)|0;
+	r7 = (r7 + 4)|0;
+	heap32[(r1+19)] = r2;
+if(!(r8 !=0)) //_LBB645_65
+{
+break _76;
+}
+}
+}
+else{
+	r2 = heap32[(r1+19)];
+}
+} while(0);
+	r3 = heap32[(r1+1)];
+	r3 = r3 >> 2;
+	r1 = heap32[(r1+14)];
+	r1 = (r1 + r2)|0;
+	r2 = heap32[(r3+17)];
+if(!(r1 <=r2)) //_LBB645_87
+{
+	heap32[(g0)] = r0;
+	_ZZN23btDiscreteDynamicsWorld16solveConstraintsER19btContactSolverInfoEN27InplaceSolverIslandCallback18processConstraintsEv(i7);
+}
+}
+}
+} while(0);
+	return;
+}
+
+function _ZN20btAlignedObjectArrayIP17btTypedConstraintE17quickSortInternalI33btSortConstraintOnIslandPredicateEEvT_ii(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+	var r6;
+	var r7;
+	var r8;
+	var r9;
+	var r10;
+	var r11;
+	var r12;
+	var r13;
+	var r14;
+	var r15;
+var __label__ = 0;
+	i7 = sp + -16;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp+2)];
+	r1 = heap32[(fp+1)];
+	r2 = (r0 + r1)|0;
+	r3 = r2 >>> 31;
+	r4 = heap32[(fp)];
+	r2 = (r2 + r3)|0;
+	r3 = r4 >> 2;
+	r2 = r2 & 2147483646;
+	r5 = heap32[(r3+3)];
+	r2 = r2 << 1;
+	r2 = (r5 + r2)|0;
+	r2 = r2 >> 2;
+	r2 = heap32[(r2)];
+	r5 = r1;
+	r6 = r0;
+_1: while(true){
+	r7 = r2 >> 2;
+	r8 = heap32[(r7+5)];
+	r8 = r8 >> 2;
+	r9 = heap32[(r3+3)];
+	r8 = heap32[(r8+52)];
+_3: while(true){
+	r10 = r5 << 2;
+	r10 = (r9 + r10)|0;
+	r10 = r10 >> 2;
+	r11 = heap32[(r10)];
+	if(r8 <0) //_LBB646_5
+{
+	r12 = heap32[(r7+6)];
+	r12 = r12 >> 2;
+	r12 = heap32[(r12+52)];
+}
+else{
+	r12 = r8;
+}
+	r13 = r11 >> 2;
+	r14 = heap32[(r13+5)];
+	r14 = r14 >> 2;
+	r14 = heap32[(r14+52)];
+	if(r14 <0) //_LBB646_8
+{
+	r14 = heap32[(r13+6)];
+	r14 = r14 >> 2;
+	r14 = heap32[(r14+52)];
+}
+	if(r14 <r12) //_LBB646_2
+{
+	r5 = (r5 + 1)|0;
+continue _3;
+}
+else{
+break _3;
+}
+}
+_13: while(true){
+	r12 = r6 << 2;
+	r13 = (r9 + r12)|0;
+	r13 = r13 >> 2;
+	r13 = heap32[(r13)];
+	r14 = r13 >> 2;
+	r15 = heap32[(r14+5)];
+	r15 = r15 >> 2;
+	r15 = heap32[(r15+52)];
+	if(r15 <0) //_LBB646_13
+{
+	r15 = heap32[(r14+6)];
+	r15 = r15 >> 2;
+	r15 = heap32[(r15+52)];
+}
+	if(r8 <0) //_LBB646_16
+{
+	r14 = heap32[(r7+6)];
+	r14 = r14 >> 2;
+	r14 = heap32[(r14+52)];
+}
+else{
+	r14 = r8;
+}
+	if(r14 <r15) //_LBB646_10
+{
+	r6 = (r6 + -1)|0;
+continue _13;
+}
+else{
+break _13;
+}
+}
+	if(r5 <=r6) //_LBB646_20
+{
+	heap32[(r10)] = r13;
+	r7 = heap32[(r3+3)];
+	r7 = (r7 + r12)|0;
+	r5 = (r5 + 1)|0;
+	r6 = (r6 + -1)|0;
+	r7 = r7 >> 2;
+	heap32[(r7)] = r11;
+}
+	if(r5 <=r6) //_LBB646_1
+{
+continue _1;
+}
+else{
+break _1;
+}
+}
+if(!(r6 <=r1)) //_LBB646_24
+{
+	heap32[(g0)] = r4;
+	heap32[(g0+1)] = r1;
+	heap32[(g0+2)] = r6;
+	_ZN20btAlignedObjectArrayIP17btTypedConstraintE17quickSortInternalI33btSortConstraintOnIslandPredicateEEvT_ii(i7);
+}
+if(!(r5 >=r0)) //_LBB646_26
+{
+	heap32[(g0)] = r4;
+	heap32[(g0+1)] = r5;
+	heap32[(g0+2)] = r0;
+	_ZN20btAlignedObjectArrayIP17btTypedConstraintE17quickSortInternalI33btSortConstraintOnIslandPredicateEEvT_ii(i7);
+}
+	return;
+}
+
+function _ZN23btDiscreteDynamicsWorld9serializeEP12btSerializer(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+	var r6;
+	var r7;
+	var r8;
+var __label__ = 0;
+	i7 = sp + -24;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp+1)];
+	r1 = r0 >> 2;
+	r2 = heap32[(r1)];
+	r2 = r2 >> 2;
+	r2 = heap32[(r2+8)];
+	r3 = heap32[(fp)];
+	heap32[(g0)] = r0;
+	r4 = r3 >> 2;
+	__FUNCTION_TABLE__[(r2)>>2](i7);
+	r2 = heap32[(r4+2)];
+if(!(r2 <1)) //_LBB647_5
+{
+	r2 = 0;
+_3: while(true){
+	r5 = heap32[(r4+4)];
+	r6 = r2 << 2;
+	r5 = (r5 + r6)|0;
+	r5 = r5 >> 2;
+	r5 = heap32[(r5)];
+	r6 = heapU8[r5+232];
+	r6 = r6 & 2;
+if(!(r6 ==0)) //_LBB647_4
+{
+	r6 = r5 >> 2;
+	r7 = heap32[(r6)];
+	r7 = r7 >> 2;
+	r7 = heap32[(r7+4)];
+	heap32[(g0)] = r5;
+	__FUNCTION_TABLE__[(r7)>>2](i7);
+	r8 = heap32[(r1)];
+	r8 = r8 >> 2;
+	r8 = heap32[(r8+4)];
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r_g0;
+	heap32[(g0+2)] = 1;
+	__FUNCTION_TABLE__[(r8)>>2](i7);
+	r7 = r_g0;
+	r6 = heap32[(r6)];
+	r6 = r6 >> 2;
+	r8 = r7 >> 2;
+	r6 = heap32[(r6+5)];
+	r8 = heap32[(r8+2)];
+	heap32[(g0)] = r5;
+	heap32[(g0+1)] = r8;
+	heap32[(g0+2)] = r0;
+	__FUNCTION_TABLE__[(r6)>>2](i7);
+	r8 = heap32[(r1)];
+	r8 = r8 >> 2;
+	r8 = heap32[(r8+5)];
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r7;
+	heap32[(g0+2)] = r_g0;
+	heap32[(g0+3)] = 1497645650;
+	heap32[(g0+4)] = r5;
+	__FUNCTION_TABLE__[(r8)>>2](i7);
+}
+	r2 = (r2 + 1)|0;
+	r5 = heap32[(r4+2)];
+	if(r5 >r2) //_LBB647_2
+{
+continue _3;
+}
+else{
+break _3;
+}
+}
+}
+	r2 = heap32[(r4+47)];
+_9: do {
+if(!(r2 <1)) //_LBB647_8
+{
+	r2 = 0;
+_11: while(true){
+	r5 = r2 << 2;
+	r6 = heap32[(r4+49)];
+	r5 = (r6 + r5)|0;
+	r5 = r5 >> 2;
+	r5 = heap32[(r5)];
+	r6 = r5 >> 2;
+	r7 = heap32[(r6)];
+	r7 = r7 >> 2;
+	r7 = heap32[(r7+9)];
+	heap32[(g0)] = r5;
+	__FUNCTION_TABLE__[(r7)>>2](i7);
+	r8 = heap32[(r1)];
+	r8 = r8 >> 2;
+	r8 = heap32[(r8+4)];
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r_g0;
+	heap32[(g0+2)] = 1;
+	__FUNCTION_TABLE__[(r8)>>2](i7);
+	r7 = r_g0;
+	r6 = heap32[(r6)];
+	r6 = r6 >> 2;
+	r8 = r7 >> 2;
+	r6 = heap32[(r6+10)];
+	r8 = heap32[(r8+2)];
+	heap32[(g0)] = r5;
+	heap32[(g0+1)] = r8;
+	heap32[(g0+2)] = r0;
+	__FUNCTION_TABLE__[(r6)>>2](i7);
+	r8 = heap32[(r1)];
+	r8 = r8 >> 2;
+	r8 = heap32[(r8+5)];
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r7;
+	heap32[(g0+2)] = r_g0;
+	heap32[(g0+3)] = 1397641027;
+	heap32[(g0+4)] = r5;
+	r2 = (r2 + 1)|0;
+	__FUNCTION_TABLE__[(r8)>>2](i7);
+	r5 = heap32[(r4+47)];
+	if(r5 >r2) //_LBB647_7
+{
+continue _11;
+}
+else{
+break _9;
+}
+}
+}
+} while(0);
+	heap32[(g0)] = r3;
+	heap32[(g0+1)] = r0;
+	_ZN16btCollisionWorld25serializeCollisionObjectsEP12btSerializer(i7);
+	r1 = heap32[(r1)];
+	r1 = r1 >> 2;
+	r1 = heap32[(r1+9)];
+	heap32[(g0)] = r0;
+	__FUNCTION_TABLE__[(r1)>>2](i7);
+	return;
+}
+
+function _ZN23btDiscreteDynamicsWorld19setConstraintSolverEP18btConstraintSolver(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+var __label__ = 0;
+	i7 = sp + -8;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = heapU8[r0+245];
+if(!(r1 ==0)) //_LBB648_3
+{
+	r1 = r0 >> 2;
+	r1 = heap32[(r1+44)];
+if(!(r1 ==0)) //_LBB648_3
+{
+	r2 = gNumAlignedFree;
+	r2 = r2 >> 2;
+	r3 = heap32[(r2)];
+	r3 = (r3 + 1)|0;
+	r1 = r1 >> 2;
+	heap32[(r2)] = r3;
+	r1 = heap32[(r1+-1)];
+	heap32[(g0)] = r1;
+	free(i7);
+}
+}
+	r1 = heap32[(fp+1)];
+	r2 = 0;
+	r3 = r0 >> 2;
+	heap8[r0+245] = r2;
+	heap32[(r3+44)] = r1;
+	return;
+}
+
+function _ZN23btDiscreteDynamicsWorld25predictUnconstraintMotionEf(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+	var f0;
+	var f1;
+	var f2;
+	var f3;
+var __label__ = 0;
+	i7 = sp + -40;var g0 = i7>>2; // save stack
+	r0 = _2E_str87;
+	r1 = heap32[(fp)];
+	heap32[(g0)] = r0;
+	r0 = r1 >> 2;
+	_ZN15CProfileManager13Start_ProfileEPKc(i7);
+	r1 = heap32[(r0+52)];
+if(!(r1 <1)) //_LBB649_5
+{
+	f0 = heapFloat[(fp+1)];
+	r1 = 0;
+_3: while(true){
+	r2 = heap32[(r0+54)];
+	r3 = r1 << 2;
+	r2 = (r2 + r3)|0;
+	r2 = r2 >> 2;
+	r2 = heap32[(r2)];
+	r3 = heapU8[r2+204];
+	r3 = r3 & 3;
+if(!(r3 !=0)) //_LBB649_4
+{
+	heap32[(g0)] = r2;
+	heapFloat[(g0+1)] = f0;
+	_ZN11btRigidBody19integrateVelocitiesEf(i7);
+	heap32[(g0)] = r2;
+	heapFloat[(g0+1)] = f0;
+	_ZN11btRigidBody12applyDampingEf(i7);
+	r3 = r2 >> 2;
+	f1 = heapFloat[(r3+76)];
+	f2 = heapFloat[(r3+77)];
+	f3 = heapFloat[(r3+78)];
+	r3 = (r2 + 4)|0;
+	r4 = (r2 + 320)|0;
+	r2 = (r2 + 68)|0;
+	heap32[(g0)] = r3;
+	heapFloat[(g0+1)] = f1;
+	heapFloat[(g0+2)] = f2;
+	heapFloat[(g0+3)] = f3;
+	heap32[(g0+4)] = r4;
+	heapFloat[(g0+5)] = f0;
+	heap32[(g0+6)] = r2;
+	_ZN15btTransformUtil18integrateTransformERK11btTransformRK9btVector3S5_fRS0_(i7);
+}
+	r1 = (r1 + 1)|0;
+	r2 = heap32[(r0+52)];
+	if(r2 >r1) //_LBB649_2
+{
+continue _3;
+}
+else{
+break _3;
+}
+}
+}
+	r0 = _ZN15CProfileManager11CurrentNodeE;
+	r0 = r0 >> 2;
+	r1 = heap32[(r0)];
+	r2 = r1 >> 2;
+	r3 = heap32[(r2+4)];
+	r3 = (r3 + -1)|0;
+	heap32[(r2+4)] = r3;
+_9: do {
+if(!(r3 !=0)) //_LBB649_11
+{
+	r3 = heap32[(r2+1)];
+	if(r3 !=0) //_LBB649_8
+{
+	r1 = sp + -8;
+	heap32[(g0)] = r1;
+	heap32[(g0+1)] = 0;
+	r3 = _ZL13gProfileClock_2E_0;
+	gettimeofday(i7);
+	r3 = r3 >> 2;
+	r3 = heap32[(r3)];
+	r3 = r3 >> 2;
+	r1 = r1 >> 2;
+	r4 = heap32[(fp+-2)];
+	r5 = heap32[(r3)];
+	r4 = (r4 - r5)|0;
+	r1 = heap32[(r1+1)];
+	r3 = heap32[(r3+1)];
+	r1 = (r1 - r3)|0;
+	r3 = (r4 * 1000000)|0;
+	r1 = (r1 + r3)|0;
+	r3 = heap32[(r2+3)];
+	r1 = (r1 - r3)|0;
+	f0 = uint(r1); //fuitos r1, f0
+	f1 =                      1000;
+	f2 = heapFloat[(r2+2)];
+	f0 = f0/f1;
+	f0 = f2+f0;
+	heapFloat[(r2+2)] = f0;
+	r1 = heap32[(r2+4)];
+	if(r1 !=0) //_LBB649_11
+{
+break _9;
+}
+else{
+	r1 = heap32[(r0)];
+}
+}
+	r1 = r1 >> 2;
+	r1 = heap32[(r1+5)];
+	heap32[(r0)] = r1;
+}
+} while(0);
+	return;
+}
+
+function _ZN23btDiscreteDynamicsWorld26calculateSimulationIslandsEv(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+	var r6;
+	var r7;
+	var r8;
+	var f0;
+	var f1;
+	var f2;
+var __label__ = 0;
+	i7 = sp + -24;var g0 = i7>>2; // save stack
+	r0 = _2E_str188;
+	r1 = heap32[(fp)];
+	heap32[(g0)] = r0;
+	_ZN15CProfileManager13Start_ProfileEPKc(i7);
+	r0 = r1 >> 2;
+	r2 = heap32[(r0+45)];
+	r3 = r2 >> 2;
+	r3 = heap32[(r3)];
+	r3 = r3 >> 2;
+	r3 = heap32[(r3+2)];
+	r4 = heap32[(r0+6)];
+	heap32[(g0)] = r2;
+	heap32[(g0+1)] = r1;
+	heap32[(g0+2)] = r4;
+	__FUNCTION_TABLE__[(r3)>>2](i7);
+	r2 = heap32[(r0+47)];
+if(!(r2 <1)) //_LBB650_21
+{
+	r3 = 0;
+_3: while(true){
+	r4 = heap32[(r0+49)];
+	r5 = r3 << 2;
+	r4 = (r4 + r5)|0;
+	r4 = r4 >> 2;
+	r4 = heap32[(r4)];
+	r4 = r4 >> 2;
+	r5 = heap32[(r4+5)];
+_5: do {
+if(!(r5 ==0)) //_LBB650_20
+{
+	r6 = heapU8[r5+204];
+	r6 = r6 & 3;
+if(!(r6 !=0)) //_LBB650_20
+{
+	r4 = heap32[(r4+6)];
+if(!(r4 ==0)) //_LBB650_20
+{
+	r6 = heapU8[r4+204];
+	r6 = r6 & 3;
+if(!(r6 !=0)) //_LBB650_20
+{
+	r5 = r5 >> 2;
+	r6 = heap32[(r5+54)];
+	if(r6 ==2) //_LBB650_8
+{
+__label__ = 8;
+}
+else{
+	if(r6 !=5) //_LBB650_10
+{
+__label__ = 10;
+}
+else{
+__label__ = 8;
+}
+}
+if (__label__ == 8){
+	r6 = r4 >> 2;
+	r6 = heap32[(r6+54)];
+	if(r6 ==2) //_LBB650_20
+{
+break _5;
+}
+else{
+	if(r6 ==5) //_LBB650_20
+{
+break _5;
+}
+}
+}
+	r6 = heap32[(r0+45)];
+	r5 = heap32[(r5+52)];
+	r6 = r6 >> 2;
+	r7 = heap32[(r6+4)];
+	r8 = r5 << 3;
+	r8 = (r7 + r8)|0;
+	r8 = r8 >> 2;
+	r4 = r4 >> 2;
+	r8 = heap32[(r8)];
+	r4 = heap32[(r4+52)];
+if(!(r8 ==r5)) //_LBB650_12
+{
+_17: while(true){
+	r8 = r8 << 3;
+	r5 = r5 << 3;
+	r8 = (r7 + r8)|0;
+	r5 = (r7 + r5)|0;
+	r7 = r8 >> 2;
+	r5 = r5 >> 2;
+	r8 = heap32[(r7)];
+	heap32[(r5)] = r8;
+	r5 = heap32[(r7)];
+	r7 = heap32[(r6+4)];
+	r8 = r5 << 3;
+	r8 = (r7 + r8)|0;
+	r8 = r8 >> 2;
+	r8 = heap32[(r8)];
+if(!(r8 !=r5)) //_LBB650_13
+{
+break _17;
+}
+}
+}
+	r8 = r4 << 3;
+	r8 = (r7 + r8)|0;
+	r8 = r8 >> 2;
+	r8 = heap32[(r8)];
+_20: do {
+if(!(r8 ==r4)) //_LBB650_16
+{
+_21: while(true){
+	r8 = r8 << 3;
+	r4 = r4 << 3;
+	r8 = (r7 + r8)|0;
+	r4 = (r7 + r4)|0;
+	r7 = r8 >> 2;
+	r4 = r4 >> 2;
+	r8 = heap32[(r7)];
+	heap32[(r4)] = r8;
+	r4 = heap32[(r7)];
+	r7 = heap32[(r6+4)];
+	r8 = r4 << 3;
+	r8 = (r7 + r8)|0;
+	r8 = r8 >> 2;
+	r8 = heap32[(r8)];
+if(!(r8 !=r4)) //_LBB650_17
+{
+break _20;
+}
+}
+}
+} while(0);
+if(!(r5 ==r4)) //_LBB650_20
+{
+	r5 = r5 << 3;
+	r7 = (r7 + r5)|0;
+	r7 = r7 >> 2;
+	heap32[(r7)] = r4;
+	r6 = heap32[(r6+4)];
+	r4 = r4 << 3;
+	r4 = (r6 + r4)|0;
+	r5 = (r6 + r5)|0;
+	r4 = r4 >> 2;
+	r5 = r5 >> 2;
+	r6 = heap32[(r4+1)];
+	r5 = heap32[(r5+1)];
+	r5 = (r5 + r6)|0;
+	heap32[(r4+1)] = r5;
+}
+}
+}
+}
+}
+} while(0);
+	r3 = (r3 + 1)|0;
+	if(r2 !=r3) //_LBB650_2
+{
+continue _3;
+}
+else{
+break _3;
+}
+}
+}
+	r0 = heap32[(r0+45)];
+	r2 = r0 >> 2;
+	r2 = heap32[(r2)];
+	r2 = r2 >> 2;
+	r2 = heap32[(r2+3)];
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r1;
+	r0 = _ZN15CProfileManager11CurrentNodeE;
+	__FUNCTION_TABLE__[(r2)>>2](i7);
+	r0 = r0 >> 2;
+	r1 = heap32[(r0)];
+	r2 = r1 >> 2;
+	r3 = heap32[(r2+4)];
+	r3 = (r3 + -1)|0;
+	heap32[(r2+4)] = r3;
+_27: do {
+if(!(r3 !=0)) //_LBB650_27
+{
+	r3 = heap32[(r2+1)];
+	if(r3 !=0) //_LBB650_24
+{
+	r1 = sp + -8;
+	heap32[(g0)] = r1;
+	heap32[(g0+1)] = 0;
+	r3 = _ZL13gProfileClock_2E_0;
+	gettimeofday(i7);
+	r3 = r3 >> 2;
+	r3 = heap32[(r3)];
+	r3 = r3 >> 2;
+	r1 = r1 >> 2;
+	r4 = heap32[(fp+-2)];
+	r5 = heap32[(r3)];
+	r4 = (r4 - r5)|0;
+	r1 = heap32[(r1+1)];
+	r3 = heap32[(r3+1)];
+	r1 = (r1 - r3)|0;
+	r3 = (r4 * 1000000)|0;
+	r1 = (r1 + r3)|0;
+	r3 = heap32[(r2+3)];
+	r1 = (r1 - r3)|0;
+	f0 = uint(r1); //fuitos r1, f0
+	f1 =                      1000;
+	f2 = heapFloat[(r2+2)];
+	f0 = f0/f1;
+	f0 = f2+f0;
+	heapFloat[(r2+2)] = f0;
+	r1 = heap32[(r2+4)];
+	if(r1 !=0) //_LBB650_27
+{
+break _27;
+}
+else{
+	r1 = heap32[(r0)];
+}
+}
+	r1 = r1 >> 2;
+	r1 = heap32[(r1+5)];
+	heap32[(r0)] = r1;
+}
+} while(0);
+	return;
+}
+
+function _ZZN23btDiscreteDynamicsWorld16solveConstraintsER19btContactSolverInfoEN27InplaceSolverIslandCallback18processConstraintsEv(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+	var r6;
+	var r7;
+	var r8;
+	var r9;
+	var r10;
+	var r11;
+	var r12;
+	var r13;
+var __label__ = 0;
+	i7 = sp + -48;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = r0 >> 2;
+	r2 = heap32[(r1+14)];
+	r3 = heap32[(r1+19)];
+	r4 = (r3 + r2)|0;
+if(!(r4 <1)) //_LBB651_2
+{
+	r4 = heap32[(r1+2)];
+	r5 = r4 >> 2;
+	r5 = heap32[(r5)];
+	r5 = r5 >> 2;
+	r5 = heap32[(r5+3)];
+	r6 = heap32[(r1+7)];
+	r7 = heap32[(r1+6)];
+	r8 = heap32[(r1+5)];
+	r9 = heap32[(r1+1)];
+	r10 = heap32[(r1+21)];
+	r11 = heap32[(r1+16)];
+	r12 = heap32[(r1+9)];
+	r13 = heap32[(r1+11)];
+	heap32[(g0)] = r4;
+	heap32[(g0+1)] = r13;
+	heap32[(g0+2)] = r12;
+	heap32[(g0+3)] = r11;
+	heap32[(g0+4)] = r2;
+	heap32[(g0+5)] = r10;
+	heap32[(g0+6)] = r3;
+	heap32[(g0+7)] = r9;
+	heap32[(g0+8)] = r8;
+	heap32[(g0+9)] = r7;
+	heap32[(g0+10)] = r6;
+	__FUNCTION_TABLE__[(r5)>>2](i7);
+}
+	r2 = heap32[(r1+9)];
+if(!(r2 >-1)) //_LBB651_10
+{
+	r3 = heap32[(r1+10)];
+if(!(r3 >-1)) //_LBB651_9
+{
+	r3 = heap32[(r1+11)];
+if(!(r3 ==0)) //_LBB651_8
+{
+	r4 = heapU8[r0+48];
+if(!(r4 ==0)) //_LBB651_7
+{
+	r4 = gNumAlignedFree;
+	r4 = r4 >> 2;
+	r5 = heap32[(r4)];
+	r5 = (r5 + 1)|0;
+	r3 = r3 >> 2;
+	heap32[(r4)] = r5;
+	r3 = heap32[(r3+-1)];
+	heap32[(g0)] = r3;
+	free(i7);
+}
+	heap32[(r1+11)] = 0;
+}
+	r3 = 1;
+	heap8[r0+48] = r3;
+	heap32[(r1+11)] = 0;
+	heap32[(r1+10)] = 0;
+}
+_14: while(true){
+	r3 = r2 << 2;
+	r4 = heap32[(r1+11)];
+	r3 = (r4 + r3)|0;
+	r2 = (r2 + 1)|0;
+	r3 = r3 >> 2;
+	heap32[(r3)] = 0;
+	if(r2 !=0) //_LBB651_9
+{
+continue _14;
+}
+else{
+break _14;
+}
+}
+}
+	heap32[(r1+9)] = 0;
+	r2 = heap32[(r1+14)];
+_17: do {
+if(!(r2 >-1)) //_LBB651_18
+{
+	r3 = heap32[(r1+15)];
+if(!(r3 >-1)) //_LBB651_17
+{
+	r3 = heap32[(r1+16)];
+if(!(r3 ==0)) //_LBB651_16
+{
+	r4 = heapU8[r0+68];
+if(!(r4 ==0)) //_LBB651_15
+{
+	r4 = gNumAlignedFree;
+	r4 = r4 >> 2;
+	r5 = heap32[(r4)];
+	r5 = (r5 + 1)|0;
+	r3 = r3 >> 2;
+	heap32[(r4)] = r5;
+	r3 = heap32[(r3+-1)];
+	heap32[(g0)] = r3;
+	free(i7);
+}
+	heap32[(r1+16)] = 0;
+}
+	r3 = 1;
+	heap8[r0+68] = r3;
+	heap32[(r1+16)] = 0;
+	heap32[(r1+15)] = 0;
+}
+_27: while(true){
+	r3 = r2 << 2;
+	r4 = heap32[(r1+16)];
+	r3 = (r4 + r3)|0;
+	r2 = (r2 + 1)|0;
+	r3 = r3 >> 2;
+	heap32[(r3)] = 0;
+	if(r2 !=0) //_LBB651_17
+{
+continue _27;
+}
+else{
+break _17;
+}
+}
+}
+} while(0);
+	heap32[(r1+14)] = 0;
+	r2 = heap32[(r1+19)];
+_30: do {
+if(!(r2 >-1)) //_LBB651_26
+{
+	r3 = heap32[(r1+20)];
+if(!(r3 >-1)) //_LBB651_25
+{
+	r3 = heap32[(r1+21)];
+if(!(r3 ==0)) //_LBB651_24
+{
+	r4 = heapU8[r0+88];
+if(!(r4 ==0)) //_LBB651_23
+{
+	r4 = gNumAlignedFree;
+	r4 = r4 >> 2;
+	r5 = heap32[(r4)];
+	r5 = (r5 + 1)|0;
+	r3 = r3 >> 2;
+	heap32[(r4)] = r5;
+	r3 = heap32[(r3+-1)];
+	heap32[(g0)] = r3;
+	free(i7);
+}
+	heap32[(r1+21)] = 0;
+}
+	r3 = 1;
+	heap8[r0+88] = r3;
+	heap32[(r1+21)] = 0;
+	heap32[(r1+20)] = 0;
+}
+_40: while(true){
+	r0 = r2 << 2;
+	r3 = heap32[(r1+21)];
+	r0 = (r3 + r0)|0;
+	r2 = (r2 + 1)|0;
+	r0 = r0 >> 2;
+	heap32[(r0)] = 0;
+	if(r2 !=0) //_LBB651_25
+{
+continue _40;
+}
+else{
+break _30;
+}
+}
+}
+} while(0);
+	heap32[(r1+19)] = 0;
+	return;
+}
+
+function _ZN23btDiscreteDynamicsWorld9addActionEP17btActionInterface(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+	var r6;
+	var r7;
+	var r8;
+	var r9;
+	var r10;
+	var r11;
+var __label__ = 0;
+	i7 = sp + -8;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = r0 >> 2;
+	r2 = heap32[(r1+64)];
+	r3 = heap32[(r1+63)];
+	r4 = heap32[(fp+1)];
+	if(r2 ==r3) //_LBB652_2
+{
+	r5 = 1;
+	r6 = r3 << 1;
+	r6 = r3 == 0 ? r5 : r6;
+if(!(r2 >=r6)) //_LBB652_1
+{
+	if(r6 !=0) //_LBB652_5
+{
+	r2 = gNumAlignedAllocs;
+	r2 = r2 >> 2;
+	r7 = heap32[(r2)];
+	r8 = r6 << 2;
+	r7 = (r7 + 1)|0;
+	r8 = r8 | 3;
+	heap32[(r2)] = r7;
+	r2 = (r8 + 16)|0;
+	heap32[(g0)] = r2;
+	malloc(i7);
+	r2 = r_g0;
+	if(r2 !=0) //_LBB652_7
+{
+	r7 = 0;
+	r8 = (r2 + 4)|0;
+	r7 = (r7 - r8)|0;
+	r7 = r7 & 15;
+	r7 = (r2 + r7)|0;
+	r8 = (r7 + 4)|0;
+	r7 = r7 >> 2;
+	heap32[(r7)] = r2;
+	r2 = r8;
+}
+}
+else{
+	r2 = 0;
+}
+	r7 = (r0 + 260)|0;
+	if(r3 <1) //_LBB652_10
+{
+	r8 = r7 >> 2;
+	r9 = heap32[(r8)];
+}
+else{
+	r8 = 0;
+_12: while(true){
+	r9 = r7 >> 2;
+	r9 = heap32[(r9)];
+	r10 = r8 << 2;
+	r11 = (r9 + r10)|0;
+	r11 = r11 >> 2;
+	r10 = (r2 + r10)|0;
+	r11 = heap32[(r11)];
+	r8 = (r8 + 1)|0;
+	r10 = r10 >> 2;
+	heap32[(r10)] = r11;
+if(!(r3 !=r8)) //_LBB652_11
+{
+break _12;
+}
+}
+	r7 = (r0 + 260)|0;
+}
+	if(r9 !=0) //_LBB652_15
+{
+	r8 = heapU8[r0+264];
+	if(r8 !=0) //_LBB652_17
+{
+	r3 = gNumAlignedFree;
+	r3 = r3 >> 2;
+	r8 = heap32[(r3)];
+	r8 = (r8 + 1)|0;
+	r9 = r9 >> 2;
+	heap32[(r3)] = r8;
+	r3 = heap32[(r9+-1)];
+	heap32[(g0)] = r3;
+	free(i7);
+	r3 = heap32[(r1+63)];
+}
+	r8 = r7 >> 2;
+	heap32[(r8)] = 0;
+}
+	r7 = r7 >> 2;
+	heap8[r0+264] = r5;
+	heap32[(r7)] = r2;
+	heap32[(r1+64)] = r6;
+}
+}
+	r0 = r3 << 2;
+	r2 = heap32[(r1+65)];
+	r0 = (r2 + r0)|0;
+	r0 = r0 >> 2;
+	heap32[(r0)] = r4;
+	r0 = heap32[(r1+63)];
+	r0 = (r0 + 1)|0;
+	heap32[(r1+63)] = r0;
+	return;
+}
+
+function _ZN23btDiscreteDynamicsWorld19integrateTransformsEf(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+	var r6;
+	var r7;
+	var r8;
+	var r9;
+	var r10;
+	var r11;
+	var r12;
+	var r13;
+	var r14;
+	var r15;
+	var f0;
+	var f1;
+	var f2;
+	var f3;
+	var f4;
+	var f5;
+	var f6;
+	var f7;
+var __label__ = 0;
+	i7 = sp + -264;var g0 = i7>>2; // save stack
+	r0 = _2E_str794;
+	r1 = heap32[(fp)];
+	heap32[(g0)] = r0;
+	r0 = r1 >> 2;
+	_ZN15CProfileManager13Start_ProfileEPKc(i7);
+	r2 = heap32[(r0+52)];
+if(!(r2 <1)) //_LBB653_19
+{
+	f0 = heapFloat[(fp+1)];
+	r2 = 0;
+	r15 = -1;
+_3: while(true){
+	r3 = heap32[(r0+54)];
+	r4 = r2 << 2;
+	r3 = (r3 + r4)|0;
+	r3 = r3 >> 2;
+	r3 = heap32[(r3)];
+	r4 = r3 >> 2;
+	heap32[(r4+60)] = 1065353216;
+	r5 = heap32[(r4+54)];
+if(!(r5 ==2)) //_LBB653_18
+{
+if(!(r5 ==5)) //_LBB653_18
+{
+	r5 = heapU8[r3+204];
+	r5 = r5 & 3;
+if(!(r5 !=0)) //_LBB653_18
+{
+	f1 = heapFloat[(r4+76)];
+	f2 = heapFloat[(r4+77)];
+	f3 = heapFloat[(r4+78)];
+	r5 = (r3 + 320)|0;
+	r6 = (r3 + 4)|0;
+	r7 = sp + -80;
+	heap32[(g0)] = r6;
+	heapFloat[(g0+1)] = f1;
+	heapFloat[(g0+2)] = f2;
+	heapFloat[(g0+3)] = f3;
+	heap32[(g0+4)] = r5;
+	heapFloat[(g0+5)] = f0;
+	heap32[(g0+6)] = r7;
+	_ZN15btTransformUtil18integrateTransformERK11btTransformRK9btVector3S5_fRS0_(i7);
+	f1 = heapFloat[(r4+62)];
+	f1 = f1*f1;
+	f2 =                         0;
+_9: do {
+if(!(f1 ==f2)) //_LBB653_17
+{
+	r8 = r7 >> 2;
+	f2 = heapFloat[(r8+14)];
+	f3 = heapFloat[(r4+15)];
+	f4 = heapFloat[(r8+13)];
+	f5 = heapFloat[(r4+14)];
+	f6 = heapFloat[(r8+12)];
+	f7 = heapFloat[(r4+13)];
+	f2 = f2-f3;
+	f3 = f4-f5;
+	f4 = f6-f7;
+	f4 = f4*f4;
+	f3 = f3*f3;
+	f3 = f4+f3;
+	f2 = f2*f2;
+	f2 = f3+f2;
+if(!(f1 >=f2)) //_LBB653_17
+{
+	r9 = _2E_str895;
+	heap32[(g0)] = r9;
+	_ZN15CProfileManager13Start_ProfileEPKc(i7);
+	r9 = heap32[(r4+48)];
+	r9 = r9 >> 2;
+	r9 = heap32[(r9+1)];
+if(!(r9 >19)) //_LBB653_11
+{
+	r9 = gNumClampedCcdMotions;
+	r9 = r9 >> 2;
+	r10 = heap32[(r9)];
+	r10 = (r10 + 1)|0;
+	heap32[(r9)] = r10;
+	r9 = heap32[(r0+20)];
+	r10 = r9 >> 2;
+	r10 = heap32[(r10)];
+	r10 = r10 >> 2;
+	r10 = heap32[(r10+9)];
+	r11 = heap32[(r0+6)];
+	r12 = sp + -176;
+	heap32[(g0)] = r9;
+	r9 = r12 >> 2;
+	__FUNCTION_TABLE__[(r10)>>2](i7);
+	r13 = 1;
+	heap32[(r9+1)] = 1065353216;
+	r14 = _ZTVN16btCollisionWorld27ClosestConvexResultCallbackE;
+	heap16[(sp+-168)>>1] = r13;
+	r13 = (r14 + 8)|0;
+	heap16[(sp+-166)>>1] = r15;
+	heap32[(fp+-44)] = r13;
+	heap32[(r9+3)] = heap32[(r4+13)];
+	heap32[(r9+4)] = heap32[(r4+14)];
+	heap32[(r9+5)] = heap32[(r4+15)];
+	heap32[(r9+6)] = heap32[(r4+16)];
+	heap32[(r9+7)] = heap32[(r8+12)];
+	heap32[(r9+8)] = heap32[(r8+13)];
+	heap32[(r9+9)] = heap32[(r8+14)];
+	r14 = _ZTV34btClosestNotMeConvexResultCallback;
+	heap32[(r9+10)] = heap32[(r8+15)];
+	r8 = (r14 + 8)|0;
+	heap32[(r9+19)] = 0;
+	heap32[(fp+-44)] = r8;
+	heap32[(r9+20)] = r3;
+	heap32[(r9+21)] = 0;
+	heap32[(r9+22)] = r_g0;
+	r8 = sp + -232;
+	heap32[(r9+23)] = r11;
+	r10 = r8 >> 2;
+	f1 = heapFloat[(r4+61)];
+	heap32[(r10+2)] = 0;
+	heap32[(r10+3)] = 1065353216;
+	heap32[(r10+4)] = 1065353216;
+	r11 = _ZTV13btSphereShape;
+	heap32[(r10+5)] = 1065353216;
+	r11 = (r11 + 8)|0;
+	heap32[(r10+6)] = 0;
+	heap32[(fp+-58)] = r11;
+	heap32[(r10+1)] = 8;
+	heapFloat[(r10+7)] = f1;
+	heapFloat[(r10+11)] = f1;
+	r10 = heap32[(r4+47)];
+	r10 = heapU16[(r10+4)>>1];
+	heap16[(sp+-168)>>1] = r10;
+	r10 = heap32[(r4+47)];
+	r10 = heapU16[(r10+6)>>1];
+	heap16[(sp+-166)>>1] = r10;
+	heap32[(g0)] = r1;
+	heap32[(g0+1)] = r8;
+	heap32[(g0+2)] = r6;
+	heap32[(g0+3)] = r7;
+	heap32[(g0+4)] = r12;
+	heap32[(g0+5)] = 0;
+	_ZNK16btCollisionWorld15convexSweepTestEPK13btConvexShapeRK11btTransformS5_RNS_20ConvexResultCallbackEf(i7);
+	f1 = heapFloat[(r9+1)];
+	f2 =                         1;
+if(!(f1 >=f2)) //_LBB653_10
+{
+	heapFloat[(r4+60)] = f1;
+	f2 = heapFloat[(r4+76)];
+	f3 = heapFloat[(r4+77)];
+	f4 = heapFloat[(r4+78)];
+	f1 = f1*f0;
+	heap32[(g0)] = r6;
+	heapFloat[(g0+1)] = f2;
+	heapFloat[(g0+2)] = f3;
+	heapFloat[(g0+3)] = f4;
+	heap32[(g0+4)] = r5;
+	heapFloat[(g0+5)] = f1;
+	heap32[(g0+6)] = r7;
+	_ZN15btTransformUtil18integrateTransformERK11btTransformRK9btVector3S5_fRS0_(i7);
+	heap32[(r4+60)] = 0;
+}
+	r4 = _ZTV13btConvexShape;
+	r4 = (r4 + 8)|0;
+	heap32[(fp+-58)] = r4;
+	heap32[(fp+-44)] = r13;
+}
+	r4 = _ZN15CProfileManager11CurrentNodeE;
+	r4 = r4 >> 2;
+	r5 = heap32[(r4)];
+	r6 = r5 >> 2;
+	r8 = heap32[(r6+4)];
+	r8 = (r8 + -1)|0;
+	heap32[(r6+4)] = r8;
+if(!(r8 !=0)) //_LBB653_17
+{
+	r8 = heap32[(r6+1)];
+	if(r8 !=0) //_LBB653_14
+{
+	r5 = sp + -8;
+	heap32[(g0)] = r5;
+	heap32[(g0+1)] = 0;
+	r8 = _ZL13gProfileClock_2E_0;
+	gettimeofday(i7);
+	r8 = r8 >> 2;
+	r8 = heap32[(r8)];
+	r8 = r8 >> 2;
+	r5 = r5 >> 2;
+	r9 = heap32[(fp+-2)];
+	r10 = heap32[(r8)];
+	r9 = (r9 - r10)|0;
+	r5 = heap32[(r5+1)];
+	r8 = heap32[(r8+1)];
+	r5 = (r5 - r8)|0;
+	r8 = (r9 * 1000000)|0;
+	r5 = (r5 + r8)|0;
+	r8 = heap32[(r6+3)];
+	r5 = (r5 - r8)|0;
+	f1 = uint(r5); //fuitos r5, f1
+	f2 =                      1000;
+	f3 = heapFloat[(r6+2)];
+	f1 = f1/f2;
+	f1 = f3+f1;
+	heapFloat[(r6+2)] = f1;
+	r5 = heap32[(r6+4)];
+	if(r5 !=0) //_LBB653_17
+{
+break _9;
+}
+else{
+	r5 = heap32[(r4)];
+}
+}
+	r5 = r5 >> 2;
+	r5 = heap32[(r5+5)];
+	heap32[(r4)] = r5;
+}
+}
+}
+} while(0);
+	heap32[(g0)] = r3;
+	heap32[(g0+1)] = r7;
+	_ZN11btRigidBody18proceedToTransformERK11btTransform(i7);
+}
+}
+}
+	r2 = (r2 + 1)|0;
+	r3 = heap32[(r0+52)];
+	if(r3 >r2) //_LBB653_2
+{
+continue _3;
+}
+else{
+break _3;
+}
+}
+}
+	r0 = _ZN15CProfileManager11CurrentNodeE;
+	r0 = r0 >> 2;
+	r1 = heap32[(r0)];
+	r2 = r1 >> 2;
+	r3 = heap32[(r2+4)];
+	r3 = (r3 + -1)|0;
+	heap32[(r2+4)] = r3;
+_26: do {
+if(!(r3 !=0)) //_LBB653_25
+{
+	r3 = heap32[(r2+1)];
+	if(r3 !=0) //_LBB653_22
+{
+	r1 = sp + -16;
+	heap32[(g0)] = r1;
+	heap32[(g0+1)] = 0;
+	r3 = _ZL13gProfileClock_2E_0;
+	gettimeofday(i7);
+	r3 = r3 >> 2;
+	r3 = heap32[(r3)];
+	r3 = r3 >> 2;
+	r1 = r1 >> 2;
+	r4 = heap32[(fp+-4)];
+	r5 = heap32[(r3)];
+	r4 = (r4 - r5)|0;
+	r1 = heap32[(r1+1)];
+	r3 = heap32[(r3+1)];
+	r1 = (r1 - r3)|0;
+	r3 = (r4 * 1000000)|0;
+	r1 = (r1 + r3)|0;
+	r3 = heap32[(r2+3)];
+	r1 = (r1 - r3)|0;
+	f0 = uint(r1); //fuitos r1, f0
+	f1 =                      1000;
+	f2 = heapFloat[(r2+2)];
+	f0 = f0/f1;
+	f0 = f2+f0;
+	heapFloat[(r2+2)] = f0;
+	r1 = heap32[(r2+4)];
+	if(r1 !=0) //_LBB653_25
+{
+break _26;
+}
+else{
+	r1 = heap32[(r0)];
+}
+}
+	r1 = r1 >> 2;
+	r1 = heap32[(r1+5)];
+	heap32[(r0)] = r1;
+}
+} while(0);
+	return;
+}
+
+function _ZN23btDiscreteDynamicsWorld16solveConstraintsER19btContactSolverInfo(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+	var r6;
+	var r7;
+	var r8;
+	var r9;
+	var r10;
+	var r11;
+	var r12;
+	var r13;
+	var r14;
+	var r15;
+	var r16;
+	var r17;
+	var r18;
+	var r19;
+	var r20;
+	var r21;
+	var r22;
+	var r23;
+	var r24;
+	var f0;
+	var f1;
+	var f2;
+var __label__ = 0;
+	i7 = sp + -168;var g0 = i7>>2; // save stack
+	r0 = _2E_str996;
+	heap32[(g0)] = r0;
+	r0 = sp + -48;
+	_ZN15CProfileManager13Start_ProfileEPKc(i7);
+	r1 = 1;
+	r2 = r0 >> 2;
+	heap8[sp+-32] = r1;
+	heap32[(r2+3)] = 0;
+	r3 = heap32[(fp)];
+	heap32[(r2+1)] = 0;
+	r4 = r3 >> 2;
+	heap32[(r2+2)] = 0;
+	r5 = heap32[(r4+47)];
+if(!(r5 <1)) //_LBB654_7
+{
+	r6 = gNumAlignedAllocs;
+	r6 = r6 >> 2;
+	r7 = heap32[(r6)];
+	r8 = r5 << 2;
+	r7 = (r7 + 1)|0;
+	r8 = r8 | 3;
+	heap32[(r6)] = r7;
+	r6 = (r8 + 16)|0;
+	heap32[(g0)] = r6;
+	malloc(i7);
+	r6 = r_g0;
+	if(r6 !=0) //_LBB654_3
+{
+	r7 = 0;
+	r8 = (r6 + 4)|0;
+	r7 = (r7 - r8)|0;
+	r7 = r7 & 15;
+	r7 = (r6 + r7)|0;
+	r8 = (r7 + 4)|0;
+	r7 = r7 >> 2;
+	heap32[(r7)] = r6;
+	r6 = r8;
+}
+	r7 = 1;
+	heap8[sp+-32] = r7;
+	r7 = (r7 - r5)|0;
+	r8 = 0;
+	heap32[(r2+3)] = r6;
+	heap32[(r2+2)] = r5;
+_6: while(true){
+	r9 = r8 << 2;
+	r6 = (r6 - r9)|0;
+	r6 = r6 >> 2;
+	heap32[(r6)] = 0;
+	if(r7 ==r8) //_LBB654_7
+{
+break _6;
+}
+else{
+	r6 = heap32[(r2+3)];
+	r8 = (r8 + -1)|0;
+continue _6;
+}
+}
+}
+	heap32[(r2+1)] = r5;
+	r5 = heap32[(r4)];
+	r5 = r5 >> 2;
+	r5 = heap32[(r5+24)];
+	heap32[(g0)] = r3;
+	__FUNCTION_TABLE__[(r5)>>2](i7);
+	r5 = r_g0;
+_10: do {
+if(!(r5 <1)) //_LBB654_10
+{
+	r5 = 0;
+_12: while(true){
+	r6 = r5 << 2;
+	r7 = heap32[(r4+49)];
+	r7 = (r7 + r6)|0;
+	r7 = r7 >> 2;
+	r8 = heap32[(r2+3)];
+	r6 = (r8 + r6)|0;
+	r7 = heap32[(r7)];
+	r6 = r6 >> 2;
+	heap32[(r6)] = r7;
+	r6 = heap32[(r4)];
+	r6 = r6 >> 2;
+	r6 = heap32[(r6+24)];
+	r5 = (r5 + 1)|0;
+	heap32[(g0)] = r3;
+	__FUNCTION_TABLE__[(r6)>>2](i7);
+	r6 = r_g0;
+	if(r6 >r5) //_LBB654_9
+{
+continue _12;
+}
+else{
+break _10;
+}
+}
+}
+} while(0);
+	r5 = heap32[(r2+1)];
+if(!(r5 <2)) //_LBB654_12
+{
+	r5 = (r5 + -1)|0;
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = 0;
+	heap32[(g0+2)] = r5;
+	_ZN20btAlignedObjectArrayIP17btTypedConstraintE17quickSortInternalI33btSortConstraintOnIslandPredicateEEvT_ii(i7);
+}
+	r0 = heap32[(fp+1)];
+	r5 = heap32[(r4)];
+	r5 = r5 >> 2;
+	r5 = heap32[(r5+24)];
+	heap32[(g0)] = r3;
+	__FUNCTION_TABLE__[(r5)>>2](i7);
+	r3 = r_g0;
+	if(r3 !=0) //_LBB654_14
+{
+	r3 = heap32[(r2+3)];
+}
+else{
+	r3 = 0;
+}
+	r5 = heap32[(r4+6)];
+	r6 = heap32[(r4+44)];
+	r7 = _ZTVZN23btDiscreteDynamicsWorld16solveConstraintsER19btContactSolverInfoE27InplaceSolverIslandCallback;
+	r8 = heap32[(r4+19)];
+	r9 = heap32[(r4+21)];
+	r10 = heap32[(r2+1)];
+	r11 = sp + -144;
+	r7 = (r7 + 8)|0;
+	r12 = r11 >> 2;
+	heap32[(fp+-36)] = r7;
+	heap32[(r12+1)] = r0;
+	heap32[(r12+2)] = r6;
+	heap32[(r12+3)] = r3;
+	heap32[(r12+4)] = r10;
+	heap32[(r12+5)] = r9;
+	heap32[(r12+6)] = r8;
+	heap32[(r12+7)] = r5;
+	heap8[sp+-96] = r1;
+	heap32[(r12+11)] = 0;
+	heap32[(r12+9)] = 0;
+	heap32[(r12+10)] = 0;
+	heap8[sp+-76] = r1;
+	heap32[(r12+16)] = 0;
+	heap32[(r12+14)] = 0;
+	heap32[(r12+15)] = 0;
+	heap8[sp+-56] = r1;
+	heap32[(r12+21)] = 0;
+	heap32[(r12+19)] = 0;
+	r3 = r6 >> 2;
+	heap32[(r12+20)] = 0;
+	r6 = r5 >> 2;
+	r3 = heap32[(r3)];
+	r6 = heap32[(r6)];
+	r3 = r3 >> 2;
+	r6 = r6 >> 2;
+	r3 = heap32[(r3+2)];
+	r6 = heap32[(r6+9)];
+	heap32[(g0)] = r5;
+	__FUNCTION_TABLE__[(r6)>>2](i7);
+	r6 = heap32[(r4+2)];
+	r8 = heap32[(r4+44)];
+	heap32[(g0)] = r8;
+	heap32[(g0+1)] = r6;
+	heap32[(g0+2)] = r_g0;
+	__FUNCTION_TABLE__[(r3)>>2](i7);
+	r3 = heap32[(r4+45)];
+	r5 = heap32[(r4+6)];
+	r6 = _2E_str155;
+	heap32[(g0)] = r6;
+	r6 = r3 >> 2;
+	_ZN15CProfileManager13Start_ProfileEPKc(i7);
+	r8 = heap32[(r6+7)];
+_22: do {
+if(!(r8 >-1)) //_LBB654_23
+{
+	r9 = heap32[(r6+8)];
+if(!(r9 >-1)) //_LBB654_22
+{
+	r9 = heap32[(r6+9)];
+if(!(r9 ==0)) //_LBB654_21
+{
+	r10 = heapU8[r3+40];
+if(!(r10 ==0)) //_LBB654_20
+{
+	r10 = gNumAlignedFree;
+	r10 = r10 >> 2;
+	r13 = heap32[(r10)];
+	r13 = (r13 + 1)|0;
+	r9 = r9 >> 2;
+	heap32[(r10)] = r13;
+	r9 = heap32[(r9+-1)];
+	heap32[(g0)] = r9;
+	free(i7);
+}
+	heap32[(r6+9)] = 0;
+}
+	r9 = 1;
+	heap8[r3+40] = r9;
+	heap32[(r6+9)] = 0;
+	heap32[(r6+8)] = 0;
+}
+_32: while(true){
+	r9 = r8 << 2;
+	r10 = heap32[(r6+9)];
+	r9 = (r10 + r9)|0;
+	r8 = (r8 + 1)|0;
+	r9 = r9 >> 2;
+	heap32[(r9)] = 0;
+	if(r8 !=0) //_LBB654_22
+{
+continue _32;
+}
+else{
+break _22;
+}
+}
+}
+} while(0);
+	heap32[(r6+7)] = 0;
+	r8 = heap32[(r6+2)];
+	if(r8 >0) //_LBB654_25
+{
+	r9 = 0;
+_37: while(true){
+	r10 = heap32[(r6+4)];
+	r13 = r9 << 3;
+	r13 = (r10 + r13)|0;
+	r13 = r13 >> 2;
+	r13 = heap32[(r13)];
+	r14 = r9 << 1;
+	if(r9 ==r13) //_LBB654_28
+{
+	r16 = r9;
+}
+else{
+	r15 = r10;
+	r16 = r9;
+_42: while(true){
+	r13 = r13 << 3;
+	r16 = r16 << 3;
+	r13 = (r15 + r13)|0;
+	r15 = (r15 + r16)|0;
+	r13 = r13 >> 2;
+	r15 = r15 >> 2;
+	r16 = heap32[(r13)];
+	heap32[(r15)] = r16;
+	r16 = heap32[(r13)];
+	r15 = heap32[(r6+4)];
+	r13 = r16 << 3;
+	r13 = (r15 + r13)|0;
+	r13 = r13 >> 2;
+	r13 = heap32[(r13)];
+if(!(r13 !=r16)) //_LBB654_29
+{
+break _42;
+}
+}
+}
+	r13 = r14 << 2;
+	r10 = (r10 + r13)|0;
+	r9 = (r9 + 1)|0;
+	r10 = r10 >> 2;
+	heap32[(r10)] = r16;
+if(!(r8 !=r9)) //_LBB654_26
+{
+break _37;
+}
+}
+	r8 = heap32[(r6+2)];
+	if(r8 >1) //_LBB654_33
+{
+	r9 = (r3 + 4)|0;
+	r8 = (r8 + -1)|0;
+	heap32[(g0)] = r9;
+	heap32[(g0+1)] = 0;
+	heap32[(g0+2)] = r8;
+	_ZN20btAlignedObjectArrayI9btElementE17quickSortInternalI31btUnionFindElementSortPredicateEEvT_ii(i7);
+	r8 = heap32[(r6+2)];
+}
+}
+	r9 = 0;
+_48: while(true){
+	r10 = r9;
+	if(r10 <r8) //_LBB654_35
+{
+	r13 = heap32[(r6+4)];
+	r9 = r10 << 3;
+	r9 = (r13 + r9)|0;
+	r9 = r9 >> 2;
+	r14 = heap32[(r9)];
+	r15 = (r10 + 1)|0;
+_51: while(true){
+	r9 = r15;
+	if(r9 >=r8) //_LBB654_46
+{
+break _51;
+}
+else{
+	r15 = r9 << 3;
+	r15 = (r13 + r15)|0;
+	r16 = r15 >> 2;
+	r15 = (r9 + 1)|0;
+	r16 = heap32[(r16)];
+if(!(r16 ==r14)) //_LBB654_36
+{
+break _51;
+}
+}
+}
+	r16 = 1;
+	r15 = r10;
+_55: while(true){
+	if(r15 <r9) //_LBB654_38
+{
+	r17 = r15 << 3;
+	r17 = (r13 + r17)|0;
+	r17 = r17 >> 2;
+	r17 = heap32[(r17+1)];
+	r18 = heap32[(r4+4)];
+	r17 = r17 << 2;
+	r17 = (r18 + r17)|0;
+	r17 = r17 >> 2;
+	r17 = heap32[(r17)];
+	r17 = r17 >> 2;
+	r18 = heap32[(r17+52)];
+	if(r18 ==r14) //_LBB654_42
+{
+	r17 = heap32[(r17+54)];
+	r18 = 0;
+	if(r17 ==4) //_LBB654_44
+{
+	r16 = r18;
+}
+else{
+	r16 = r17 == 1 ? r18 : r16;
+}
+}
+else{
+	if(r18 !=-1) //_LBB654_41
+{
+__label__ = 37;
+break _48;
+}
+}
+	r15 = (r15 + 1)|0;
+}
+else{
+break _55;
+}
+}
+	r13 = r16 & 255;
+	if(r13 ==0) //_LBB654_50
+{
+_67: while(true){
+	if(r10 <r9) //_LBB654_58
+{
+	r13 = heap32[(r6+4)];
+	r15 = r10 << 3;
+	r13 = (r13 + r15)|0;
+	r13 = r13 >> 2;
+	r13 = heap32[(r13+1)];
+	r15 = heap32[(r4+4)];
+	r13 = r13 << 2;
+	r13 = (r15 + r13)|0;
+	r13 = r13 >> 2;
+	r13 = heap32[(r13)];
+	r13 = r13 >> 2;
+	r15 = heap32[(r13+52)];
+	if(r15 ==r14) //_LBB654_61
+{
+	r15 = heap32[(r13+54)];
+if(!(r15 !=2)) //_LBB654_63
+{
+	heap32[(r13+54)] = 3;
+	heap32[(r13+55)] = 0;
+}
+}
+else{
+if(!(r15 ==-1)) //_LBB654_63
+{
+__label__ = 54;
+break _48;
+}
+}
+	r10 = (r10 + 1)|0;
+continue _67;
+}
+else{
+continue _48;
+}
+}
+}
+else{
+_75: while(true){
+	if(r10 <r9) //_LBB654_51
+{
+	r13 = heap32[(r6+4)];
+	r15 = r10 << 3;
+	r13 = (r13 + r15)|0;
+	r13 = r13 >> 2;
+	r13 = heap32[(r13+1)];
+	r15 = heap32[(r4+4)];
+	r13 = r13 << 2;
+	r13 = (r15 + r13)|0;
+	r13 = r13 >> 2;
+	r13 = heap32[(r13)];
+	r13 = r13 >> 2;
+	r15 = heap32[(r13+52)];
+	if(r15 ==r14) //_LBB654_54
+{
+	r15 = heap32[(r13+54)];
+	r15 = (r15 + -4)|0;
+if(!(uint(r15) <uint(2))) //_LBB654_56
+{
+	heap32[(r13+54)] = 2;
+}
+}
+else{
+if(!(r15 ==-1)) //_LBB654_56
+{
+__label__ = 47;
+break _48;
+}
+}
+	r10 = (r10 + 1)|0;
+continue _75;
+}
+else{
+continue _48;
+}
+}
+}
+}
+else{
+__label__ = 60;
+break _48;
+}
+}
+switch(__label__ ){//multiple entries
+case 37:
+	r0 = _2E_str1156;
+	r1 = _2E_str2157;
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r1;
+	heap32[(g0+2)] = 242;
+	_assert(i7);
+break;
+case 54:
+	r0 = _2E_str1156;
+	r1 = _2E_str2157;
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r1;
+	heap32[(g0+2)] = 290;
+	_assert(i7);
+break;
+case 60:
+	r8 = r5 >> 2;
+	r9 = heap32[(r8)];
+	r9 = r9 >> 2;
+	r9 = heap32[(r9+9)];
+	heap32[(g0)] = r5;
+	__FUNCTION_TABLE__[(r9)>>2](i7);
+	r9 = r_g0;
+_87: do {
+if(!(r9 <1)) //_LBB654_104
+{
+	r10 = 0;
+_89: while(true){
+	r13 = heap32[(r8)];
+	r13 = r13 >> 2;
+	r13 = heap32[(r13+10)];
+	heap32[(g0)] = r5;
+	heap32[(g0+1)] = r10;
+	__FUNCTION_TABLE__[(r13)>>2](i7);
+	r13 = r_g0;
+	r14 = r13 >> 2;
+	r15 = heap32[(r14+277)];
+	r14 = heap32[(r14+278)];
+	if(r15 ==0) //_LBB654_70
+{
+__label__ = 64;
+}
+else{
+	r16 = r15 >> 2;
+	r16 = heap32[(r16+54)];
+	if(r16 !=2) //_LBB654_72
+{
+__label__ = 66;
+}
+else{
+__label__ = 64;
+}
+}
+if (__label__ == 64){
+	if(r14 ==0) //_LBB654_103
+{
+__label__ = 95;
+}
+else{
+	r16 = r14 >> 2;
+	r16 = heap32[(r16+54)];
+	if(r16 ==2) //_LBB654_103
+{
+__label__ = 95;
+}
+else{
+__label__ = 66;
+}
+}
+}
+if (__label__ == 66){
+	r16 = heapU8[r15+204];
+	r16 = r16 & 2;
+if(!(r16 ==0)) //_LBB654_78
+{
+	r16 = r15 >> 2;
+	r16 = heap32[(r16+54)];
+if(!(r16 ==2)) //_LBB654_78
+{
+	r16 = heapU8[r14+204];
+	r16 = r16 & 3;
+if(!(r16 !=0)) //_LBB654_78
+{
+	r16 = r14 >> 2;
+	r17 = heap32[(r16+54)];
+	r17 = (r17 + -4)|0;
+if(!(uint(r17) <uint(2))) //_LBB654_77
+{
+	heap32[(r16+54)] = 1;
+}
+	heap32[(r16+55)] = 0;
+}
+}
+}
+	r16 = heapU8[r14+204];
+	r16 = r16 & 2;
+if(!(r16 ==0)) //_LBB654_84
+{
+	r16 = r14 >> 2;
+	r16 = heap32[(r16+54)];
+if(!(r16 ==2)) //_LBB654_84
+{
+	r16 = heapU8[r15+204];
+	r16 = r16 & 3;
+if(!(r16 !=0)) //_LBB654_84
+{
+	r16 = r15 >> 2;
+	r17 = heap32[(r16+54)];
+	r17 = (r17 + -4)|0;
+if(!(uint(r17) <uint(2))) //_LBB654_83
+{
+	heap32[(r16+54)] = 1;
+}
+	heap32[(r16+55)] = 0;
+}
+}
+}
+	r16 = heapU8[r3+64];
+if(!(r16 ==0)) //_LBB654_103
+{
+	r16 = heap32[(r8)];
+	r16 = r16 >> 2;
+	r16 = heap32[(r16+7)];
+	heap32[(g0)] = r5;
+	heap32[(g0+1)] = r15;
+	heap32[(g0+2)] = r14;
+	__FUNCTION_TABLE__[(r16)>>2](i7);
+	r14 = r_g0;
+if(!(r14 ==0)) //_LBB654_103
+{
+	r14 = heap32[(r6+8)];
+	r15 = heap32[(r6+7)];
+	if(r14 ==r15) //_LBB654_88
+{
+	r16 = 1;
+	r17 = r15 << 1;
+	r17 = r15 == 0 ? r16 : r17;
+if(!(r14 >=r17)) //_LBB654_87
+{
+	if(r17 !=0) //_LBB654_91
+{
+	r14 = gNumAlignedAllocs;
+	r14 = r14 >> 2;
+	r18 = heap32[(r14)];
+	r19 = r17 << 2;
+	r18 = (r18 + 1)|0;
+	r19 = r19 | 3;
+	heap32[(r14)] = r18;
+	r14 = (r19 + 16)|0;
+	heap32[(g0)] = r14;
+	malloc(i7);
+	r14 = r_g0;
+	if(r14 !=0) //_LBB654_93
+{
+	r15 = 0;
+	r18 = (r14 + 4)|0;
+	r15 = (r15 - r18)|0;
+	r15 = r15 & 15;
+	r15 = (r14 + r15)|0;
+	r18 = r15 >> 2;
+	heap32[(r18)] = r14;
+	r14 = (r15 + 4)|0;
+	r15 = heap32[(r6+7)];
+}
+}
+else{
+	r14 = 0;
+}
+if(!(r15 <1)) //_LBB654_97
+{
+	r18 = 0;
+_126: while(true){
+	r19 = r18 << 2;
+	r20 = heap32[(r6+9)];
+	r20 = (r20 + r19)|0;
+	r20 = r20 >> 2;
+	r19 = (r14 + r19)|0;
+	r20 = heap32[(r20)];
+	r18 = (r18 + 1)|0;
+	r19 = r19 >> 2;
+	heap32[(r19)] = r20;
+if(!(r15 !=r18)) //_LBB654_96
+{
+break _126;
+}
+}
+}
+	r15 = heap32[(r6+9)];
+if(!(r15 ==0)) //_LBB654_101
+{
+	r18 = heapU8[r3+40];
+if(!(r18 ==0)) //_LBB654_100
+{
+	r18 = gNumAlignedFree;
+	r18 = r18 >> 2;
+	r19 = heap32[(r18)];
+	r19 = (r19 + 1)|0;
+	r15 = r15 >> 2;
+	heap32[(r18)] = r19;
+	r15 = heap32[(r15+-1)];
+	heap32[(g0)] = r15;
+	free(i7);
+}
+	heap32[(r6+9)] = 0;
+}
+	heap8[r3+40] = r16;
+	heap32[(r6+9)] = r14;
+	heap32[(r6+8)] = r17;
+	r15 = heap32[(r6+7)];
+}
+}
+	r14 = r15 << 2;
+	r15 = heap32[(r6+9)];
+	r14 = (r15 + r14)|0;
+	r14 = r14 >> 2;
+	heap32[(r14)] = r13;
+	r13 = heap32[(r6+7)];
+	r13 = (r13 + 1)|0;
+	heap32[(r6+7)] = r13;
+}
+}
+}
+	r10 = (r10 + 1)|0;
+	if(r9 !=r10) //_LBB654_68
+{
+continue _89;
+}
+else{
+break _87;
+}
+}
+}
+} while(0);
+	r9 = _ZN15CProfileManager11CurrentNodeE;
+	r9 = r9 >> 2;
+	r10 = heap32[(r9)];
+	r13 = r10 >> 2;
+	r14 = heap32[(r13+4)];
+	r14 = (r14 + -1)|0;
+	heap32[(r13+4)] = r14;
+_138: do {
+if(!(r14 !=0)) //_LBB654_110
+{
+	r14 = heap32[(r13+1)];
+	if(r14 !=0) //_LBB654_107
+{
+	r10 = sp + -24;
+	heap32[(g0)] = r10;
+	heap32[(g0+1)] = 0;
+	r14 = _ZL13gProfileClock_2E_0;
+	gettimeofday(i7);
+	r14 = r14 >> 2;
+	r14 = heap32[(r14)];
+	r14 = r14 >> 2;
+	r10 = r10 >> 2;
+	r15 = heap32[(fp+-6)];
+	r16 = heap32[(r14)];
+	r15 = (r15 - r16)|0;
+	r10 = heap32[(r10+1)];
+	r14 = heap32[(r14+1)];
+	r10 = (r10 - r14)|0;
+	r14 = (r15 * 1000000)|0;
+	r10 = (r10 + r14)|0;
+	r14 = heap32[(r13+3)];
+	r10 = (r10 - r14)|0;
+	f0 = uint(r10); //fuitos r10, f0
+	f1 =                      1000;
+	f2 = heapFloat[(r13+2)];
+	f0 = f0/f1;
+	f0 = f2+f0;
+	heapFloat[(r13+2)] = f0;
+	r10 = heap32[(r13+4)];
+	if(r10 !=0) //_LBB654_110
+{
+break _138;
+}
+else{
+	r10 = heap32[(r9)];
+}
+}
+	r10 = r10 >> 2;
+	r10 = heap32[(r10+5)];
+	heap32[(r9)] = r10;
+}
+} while(0);
+	r10 = heap32[(r6+2)];
+	r13 = _2E_str3158;
+	heap32[(g0)] = r13;
+	_ZN15CProfileManager13Start_ProfileEPKc(i7);
+	r13 = heapU8[r3+64];
+_145: do {
+	if(r13 !=0) //_LBB654_112
+{
+	r5 = heap32[(r6+7)];
+if(!(r5 <2)) //_LBB654_114
+{
+	r8 = (r3 + 24)|0;
+	r13 = (r5 + -1)|0;
+	heap32[(g0)] = r8;
+	heap32[(g0+1)] = 0;
+	heap32[(g0+2)] = r13;
+	_ZN20btAlignedObjectArrayIP20btPersistentManifoldE17quickSortInternalI33btPersistentManifoldSortPredicateEEvT_ii(i7);
+}
+if(!(r10 <1)) //_LBB654_163
+{
+	r8 = 0;
+	r13 = r8;
+	r14 = r8;
+_151: while(true){
+	r15 = heap32[(r6+4)];
+	r16 = r14 << 3;
+	r15 = (r15 + r16)|0;
+	r15 = r15 >> 2;
+	r15 = heap32[(r15)];
+	r16 = r8;
+_153: while(true){
+	if(r14 >=r10) //_LBB654_139
+{
+break _153;
+}
+else{
+	r17 = heap32[(r6+4)];
+	r18 = r14 << 3;
+	r17 = (r17 + r18)|0;
+	r17 = r17 >> 2;
+	r18 = heap32[(r17)];
+	if(r18 ==r15) //_LBB654_117
+{
+	r17 = heap32[(r17+1)];
+	r18 = heap32[(r4+4)];
+	r17 = r17 << 2;
+	r17 = (r18 + r17)|0;
+	r17 = r17 >> 2;
+	r18 = heap32[(r6+13)];
+	r19 = heap32[(r6+12)];
+	r17 = heap32[(r17)];
+	if(r18 ==r19) //_LBB654_119
+{
+	r20 = 1;
+	r21 = r19 << 1;
+	r21 = r19 == 0 ? r20 : r21;
+if(!(r18 >=r21)) //_LBB654_118
+{
+	if(r21 !=0) //_LBB654_122
+{
+	r18 = gNumAlignedAllocs;
+	r18 = r18 >> 2;
+	r22 = heap32[(r18)];
+	r23 = r21 << 2;
+	r22 = (r22 + 1)|0;
+	r23 = r23 | 3;
+	heap32[(r18)] = r22;
+	r18 = (r23 + 16)|0;
+	heap32[(g0)] = r18;
+	malloc(i7);
+	r18 = r_g0;
+	if(r18 !=0) //_LBB654_124
+{
+	r19 = 0;
+	r22 = (r18 + 4)|0;
+	r19 = (r19 - r22)|0;
+	r19 = r19 & 15;
+	r19 = (r18 + r19)|0;
+	r22 = r19 >> 2;
+	heap32[(r22)] = r18;
+	r18 = (r19 + 4)|0;
+	r19 = heap32[(r6+12)];
+}
+}
+else{
+	r18 = 0;
+}
+if(!(r19 <1)) //_LBB654_128
+{
+	r22 = 0;
+_167: while(true){
+	r23 = r22 << 2;
+	r24 = heap32[(r6+14)];
+	r24 = (r24 + r23)|0;
+	r24 = r24 >> 2;
+	r23 = (r18 + r23)|0;
+	r24 = heap32[(r24)];
+	r22 = (r22 + 1)|0;
+	r23 = r23 >> 2;
+	heap32[(r23)] = r24;
+if(!(r19 !=r22)) //_LBB654_127
+{
+break _167;
+}
+}
+}
+	r19 = heap32[(r6+14)];
+if(!(r19 ==0)) //_LBB654_132
+{
+	r22 = heapU8[r3+60];
+if(!(r22 ==0)) //_LBB654_131
+{
+	r22 = gNumAlignedFree;
+	r22 = r22 >> 2;
+	r23 = heap32[(r22)];
+	r23 = (r23 + 1)|0;
+	r19 = r19 >> 2;
+	heap32[(r22)] = r23;
+	r19 = heap32[(r19+-1)];
+	heap32[(g0)] = r19;
+	free(i7);
+}
+	heap32[(r6+14)] = 0;
+}
+	heap8[r3+60] = r20;
+	heap32[(r6+14)] = r18;
+	heap32[(r6+13)] = r21;
+	r19 = heap32[(r6+12)];
+}
+}
+	r18 = r19 << 2;
+	r19 = heap32[(r6+14)];
+	r18 = (r19 + r18)|0;
+	r18 = r18 >> 2;
+	heap32[(r18)] = r17;
+	r18 = heap32[(r6+12)];
+	r18 = (r18 + 1)|0;
+	r17 = r17 >> 2;
+	heap32[(r6+12)] = r18;
+	r17 = heap32[(r17+54)];
+	if(r17 !=2) //_LBB654_135
+{
+	r18 = 1;
+	r16 = r17 == 5 ? r18 : r16;
+}
+else{
+	r16 = 1;
+}
+	r14 = (r14 + 1)|0;
+}
+else{
+break _153;
+}
+}
+}
+_182: do {
+	if(r13 <r5) //_LBB654_141
+{
+	r17 = heap32[(r6+9)];
+	r19 = r13 << 2;
+	r18 = (r17 + r19)|0;
+	r20 = r18 >> 2;
+	r20 = heap32[(r20)];
+	r20 = r20 >> 2;
+	r21 = heap32[(r20+277)];
+	r21 = r21 >> 2;
+	r21 = heap32[(r21+52)];
+	if(r21 <0) //_LBB654_143
+{
+	r21 = heap32[(r20+278)];
+	r21 = r21 >> 2;
+	r21 = heap32[(r21+52)];
+}
+	if(r21 !=r15) //_LBB654_140
+{
+__label__ = 129;
+}
+else{
+	r19 = (r17 + r19)|0;
+	r20 = 1;
+_188: while(true){
+	r17 = r20;
+	r1 = (r13 + r17)|0;
+	if(r1 >=r5) //_LBB654_151
+{
+__label__ = 138;
+break _182;
+}
+else{
+	r20 = r17 << 2;
+	r20 = (r19 + r20)|0;
+	r20 = r20 >> 2;
+	r20 = heap32[(r20)];
+	r20 = r20 >> 2;
+	r21 = heap32[(r20+277)];
+	r21 = r21 >> 2;
+	r21 = heap32[(r21+52)];
+	if(r21 <0) //_LBB654_149
+{
+	r20 = heap32[(r20+278)];
+	r20 = r20 >> 2;
+	r21 = heap32[(r20+52)];
+}
+	r20 = (r17 + 1)|0;
+if(!(r21 ==r15)) //_LBB654_146
+{
+__label__ = 138;
+break _182;
+}
+}
+}
+}
+}
+else{
+__label__ = 129;
+}
+} while(0);
+if (__label__ == 129){
+	r17 = 0;
+	r18 = r17;
+}
+	r16 = r16 & 255;
+if(!(r16 !=0)) //_LBB654_153
+{
+	r16 = heap32[(fp+-36)];
+	r16 = r16 >> 2;
+	r16 = heap32[(r16+2)];
+	r19 = heap32[(r6+12)];
+	r20 = heap32[(r6+14)];
+	heap32[(g0)] = r11;
+	heap32[(g0+1)] = r20;
+	heap32[(g0+2)] = r19;
+	heap32[(g0+3)] = r18;
+	heap32[(g0+4)] = r17;
+	heap32[(g0+5)] = r15;
+	__FUNCTION_TABLE__[(r16)>>2](i7);
+}
+	r15 = heap32[(r6+12)];
+_200: do {
+if(!(r15 >-1)) //_LBB654_162
+{
+	r16 = heap32[(r6+13)];
+	if(r16 <0) //_LBB654_156
+{
+	r16 = heap32[(r6+14)];
+if(!(r16 ==0)) //_LBB654_160
+{
+	r18 = heapU8[r3+60];
+if(!(r18 ==0)) //_LBB654_159
+{
+	r18 = gNumAlignedFree;
+	r18 = r18 >> 2;
+	r19 = heap32[(r18)];
+	r19 = (r19 + 1)|0;
+	r16 = r16 >> 2;
+	heap32[(r18)] = r19;
+	r16 = heap32[(r16+-1)];
+	heap32[(g0)] = r16;
+	free(i7);
+}
+	heap32[(r6+14)] = 0;
+}
+	r16 = 1;
+	heap8[r3+60] = r16;
+	heap32[(r6+14)] = 0;
+	heap32[(r6+13)] = 0;
+}
+_210: while(true){
+	r16 = r15 << 2;
+	r18 = heap32[(r6+14)];
+	r16 = (r18 + r16)|0;
+	r15 = (r15 + 1)|0;
+	r16 = r16 >> 2;
+	heap32[(r16)] = 0;
+if(!(r15 !=0)) //_LBB654_161
+{
+break _200;
+}
+}
+}
+} while(0);
+	r13 = r17 == 0 ? r13 : r1;
+	heap32[(r6+12)] = 0;
+	if(r14 <r10) //_LBB654_116
+{
+continue _151;
+}
+else{
+break _145;
+}
+}
+}
+}
+else{
+	r1 = heap32[(r8)];
+	r1 = r1 >> 2;
+	r1 = heap32[(r1+11)];
+	heap32[(g0)] = r5;
+	__FUNCTION_TABLE__[(r1)>>2](i7);
+	r1 = r_g0;
+	r3 = heap32[(r8)];
+	r3 = r3 >> 2;
+	r3 = heap32[(r3+9)];
+	heap32[(g0)] = r5;
+	__FUNCTION_TABLE__[(r3)>>2](i7);
+	r6 = heap32[(fp+-36)];
+	r6 = r6 >> 2;
+	r6 = heap32[(r6+2)];
+	r10 = heap32[(r4+2)];
+	r5 = heap32[(r4+4)];
+	heap32[(g0)] = r11;
+	heap32[(g0+1)] = r5;
+	heap32[(g0+2)] = r10;
+	heap32[(g0+3)] = r1;
+	heap32[(g0+4)] = r_g0;
+	heap32[(g0+5)] = -1;
+	__FUNCTION_TABLE__[(r6)>>2](i7);
+}
+} while(0);
+	r1 = heap32[(r9)];
+	r3 = r1 >> 2;
+	r5 = heap32[(r3+4)];
+	r5 = (r5 + -1)|0;
+	heap32[(r3+4)] = r5;
+_215: do {
+if(!(r5 !=0)) //_LBB654_169
+{
+	r5 = heap32[(r3+1)];
+	if(r5 !=0) //_LBB654_166
+{
+	r1 = sp + -16;
+	heap32[(g0)] = r1;
+	heap32[(g0+1)] = 0;
+	r5 = _ZL13gProfileClock_2E_0;
+	gettimeofday(i7);
+	r5 = r5 >> 2;
+	r5 = heap32[(r5)];
+	r5 = r5 >> 2;
+	r1 = r1 >> 2;
+	r6 = heap32[(fp+-4)];
+	r8 = heap32[(r5)];
+	r6 = (r6 - r8)|0;
+	r1 = heap32[(r1+1)];
+	r5 = heap32[(r5+1)];
+	r1 = (r1 - r5)|0;
+	r5 = (r6 * 1000000)|0;
+	r1 = (r1 + r5)|0;
+	r5 = heap32[(r3+3)];
+	r1 = (r1 - r5)|0;
+	f0 = uint(r1); //fuitos r1, f0
+	f1 =                      1000;
+	f2 = heapFloat[(r3+2)];
+	f0 = f0/f1;
+	f0 = f2+f0;
+	heapFloat[(r3+2)] = f0;
+	r1 = heap32[(r3+4)];
+	if(r1 !=0) //_LBB654_169
+{
+break _215;
+}
+else{
+	r1 = heap32[(r9)];
+}
+}
+	r1 = r1 >> 2;
+	r1 = heap32[(r1+5)];
+	heap32[(r9)] = r1;
+}
+} while(0);
+	heap32[(g0)] = r11;
+	_ZZN23btDiscreteDynamicsWorld16solveConstraintsER19btContactSolverInfoEN27InplaceSolverIslandCallback18processConstraintsEv(i7);
+	r1 = heap32[(r4+44)];
+	r3 = r1 >> 2;
+	r3 = heap32[(r3)];
+	r3 = r3 >> 2;
+	r3 = heap32[(r3+4)];
+	r5 = heap32[(r4+19)];
+	r4 = heap32[(r4+21)];
+	heap32[(g0)] = r1;
+	heap32[(g0+1)] = r0;
+	heap32[(g0+2)] = r4;
+	heap32[(g0+3)] = r5;
+	__FUNCTION_TABLE__[(r3)>>2](i7);
+	heap32[(fp+-36)] = r7;
+	r0 = heap32[(r12+21)];
+if(!(r0 ==0)) //_LBB654_173
+{
+	r1 = heapU8[sp+-56];
+if(!(r1 ==0)) //_LBB654_172
+{
+	r1 = gNumAlignedFree;
+	r1 = r1 >> 2;
+	r3 = heap32[(r1)];
+	r3 = (r3 + 1)|0;
+	r0 = r0 >> 2;
+	heap32[(r1)] = r3;
+	r0 = heap32[(r0+-1)];
+	heap32[(g0)] = r0;
+	free(i7);
+}
+	heap32[(r12+21)] = 0;
+}
+	r0 = 1;
+	heap8[sp+-56] = r0;
+	heap32[(r12+21)] = 0;
+	heap32[(r12+19)] = 0;
+	heap32[(r12+20)] = 0;
+	r1 = heap32[(r12+16)];
+if(!(r1 ==0)) //_LBB654_177
+{
+	r3 = heapU8[sp+-76];
+if(!(r3 ==0)) //_LBB654_176
+{
+	r3 = gNumAlignedFree;
+	r3 = r3 >> 2;
+	r4 = heap32[(r3)];
+	r4 = (r4 + 1)|0;
+	r1 = r1 >> 2;
+	heap32[(r3)] = r4;
+	r1 = heap32[(r1+-1)];
+	heap32[(g0)] = r1;
+	free(i7);
+}
+	heap32[(r12+16)] = 0;
+}
+	heap8[sp+-76] = r0;
+	heap32[(r12+16)] = 0;
+	heap32[(r12+14)] = 0;
+	heap32[(r12+15)] = 0;
+	r1 = heap32[(r12+11)];
+if(!(r1 ==0)) //_LBB654_181
+{
+	r3 = heapU8[sp+-96];
+if(!(r3 ==0)) //_LBB654_180
+{
+	r3 = gNumAlignedFree;
+	r3 = r3 >> 2;
+	r4 = heap32[(r3)];
+	r4 = (r4 + 1)|0;
+	r1 = r1 >> 2;
+	heap32[(r3)] = r4;
+	r1 = heap32[(r1+-1)];
+	heap32[(g0)] = r1;
+	free(i7);
+}
+	heap32[(r12+11)] = 0;
+}
+	heap8[sp+-96] = r0;
+	heap32[(r12+11)] = 0;
+	heap32[(r12+9)] = 0;
+	heap32[(r12+10)] = 0;
+	r1 = heap32[(r2+3)];
+if(!(r1 ==0)) //_LBB654_185
+{
+	r3 = heapU8[sp+-32];
+if(!(r3 ==0)) //_LBB654_184
+{
+	r3 = gNumAlignedFree;
+	r3 = r3 >> 2;
+	r4 = heap32[(r3)];
+	r4 = (r4 + 1)|0;
+	r1 = r1 >> 2;
+	heap32[(r3)] = r4;
+	r1 = heap32[(r1+-1)];
+	heap32[(g0)] = r1;
+	free(i7);
+}
+	heap32[(r2+3)] = 0;
+}
+	heap8[sp+-32] = r0;
+	heap32[(r2+3)] = 0;
+	heap32[(r2+1)] = 0;
+	heap32[(r2+2)] = 0;
+	r0 = heap32[(r9)];
+	r1 = r0 >> 2;
+	r2 = heap32[(r1+4)];
+	r2 = (r2 + -1)|0;
+	heap32[(r1+4)] = r2;
+_246: do {
+if(!(r2 !=0)) //_LBB654_191
+{
+	r2 = heap32[(r1+1)];
+	if(r2 !=0) //_LBB654_188
+{
+	r0 = sp + -8;
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = 0;
+	r2 = _ZL13gProfileClock_2E_0;
+	gettimeofday(i7);
+	r2 = r2 >> 2;
+	r2 = heap32[(r2)];
+	r2 = r2 >> 2;
+	r0 = r0 >> 2;
+	r3 = heap32[(fp+-2)];
+	r4 = heap32[(r2)];
+	r3 = (r3 - r4)|0;
+	r0 = heap32[(r0+1)];
+	r2 = heap32[(r2+1)];
+	r0 = (r0 - r2)|0;
+	r2 = (r3 * 1000000)|0;
+	r0 = (r0 + r2)|0;
+	r2 = heap32[(r1+3)];
+	r0 = (r0 - r2)|0;
+	f0 = uint(r0); //fuitos r0, f0
+	f1 =                      1000;
+	f2 = heapFloat[(r1+2)];
+	f0 = f0/f1;
+	f0 = f2+f0;
+	heapFloat[(r1+2)] = f0;
+	r0 = heap32[(r1+4)];
+	if(r0 !=0) //_LBB654_191
+{
+break _246;
+}
+else{
+	r0 = heap32[(r9)];
+}
+}
+	r0 = r0 >> 2;
+	r0 = heap32[(r0+5)];
+	heap32[(r9)] = r0;
+}
+} while(0);
+	return;
+break;
+case 47:
+	r0 = _2E_str1156;
+	r1 = _2E_str2157;
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r1;
+	heap32[(g0+2)] = 269;
+	_assert(i7);
+break;
+}
+}
+
+function _ZN23btDiscreteDynamicsWorld16removeConstraintEP17btTypedConstraint(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+	var r6;
+var __label__ = 0;
+	i7 = sp + 0;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r0 = r0 >> 2;
+	r1 = heap32[(fp+1)];
+	r2 = heap32[(r0+47)];
+	r3 = 0;
+_1: while(true){
+	if(r2 >r3) //_LBB655_1
+{
+	r4 = heap32[(r0+49)];
+	r5 = r3 << 2;
+	r4 = (r4 + r5)|0;
+	r4 = r4 >> 2;
+	r4 = heap32[(r4)];
+	if(r4 !=r1) //_LBB655_3
+{
+	r3 = (r3 + 1)|0;
+continue _1;
+}
+else{
+__label__ = 5;
+break _1;
+}
+}
+else{
+__label__ = 4;
+break _1;
+}
+}
+if (__label__ == 4){
+	r3 = r2;
+}
+if(!(r2 <=r3)) //_LBB655_8
+{
+	r2 = (r2 + -1)|0;
+	r3 = r3 << 2;
+	r4 = heap32[(r0+49)];
+	r2 = r2 << 2;
+	r3 = (r4 + r3)|0;
+	r4 = (r4 + r2)|0;
+	r3 = r3 >> 2;
+	r4 = r4 >> 2;
+	r5 = heap32[(r3)];
+	r4 = heap32[(r4)];
+	heap32[(r3)] = r4;
+	r3 = heap32[(r0+49)];
+	r2 = (r3 + r2)|0;
+	r2 = r2 >> 2;
+	heap32[(r2)] = r5;
+	r2 = heap32[(r0+47)];
+	r2 = (r2 + -1)|0;
+	heap32[(r0+47)] = r2;
+}
+	r0 = r1 >> 2;
+	r2 = heap32[(r0+5)];
+	r2 = r2 >> 2;
+	r3 = heap32[(r2+120)];
+	r4 = 0;
+_11: while(true){
+	if(r3 >r4) //_LBB655_9
+{
+	r5 = heap32[(r2+122)];
+	r6 = r4 << 2;
+	r5 = (r5 + r6)|0;
+	r5 = r5 >> 2;
+	r5 = heap32[(r5)];
+	if(r5 !=r1) //_LBB655_11
+{
+	r4 = (r4 + 1)|0;
+continue _11;
+}
+else{
+__label__ = 12;
+break _11;
+}
+}
+else{
+__label__ = 11;
+break _11;
+}
+}
+if (__label__ == 11){
+	r4 = r3;
+}
+	if(r3 >r4) //_LBB655_16
+{
+	r3 = (r3 + -1)|0;
+	r4 = r4 << 2;
+	r5 = heap32[(r2+122)];
+	r3 = r3 << 2;
+	r4 = (r5 + r4)|0;
+	r5 = (r5 + r3)|0;
+	r4 = r4 >> 2;
+	r5 = r5 >> 2;
+	r6 = heap32[(r4)];
+	r5 = heap32[(r5)];
+	heap32[(r4)] = r5;
+	r4 = heap32[(r2+122)];
+	r3 = (r4 + r3)|0;
+	r3 = r3 >> 2;
+	heap32[(r3)] = r6;
+	r3 = heap32[(r2+120)];
+	r3 = (r3 + -1)|0;
+	heap32[(r2+120)] = r3;
+}
+	r4 = 0;
+	r3 = r3 > r4;
+	r3 = r3 & 1;
+	heap32[(r2+63)] = r3;
+	r0 = heap32[(r0+6)];
+	r0 = r0 >> 2;
+	r2 = heap32[(r0+120)];
+_21: while(true){
+	if(r2 >r4) //_LBB655_18
+{
+	r3 = heap32[(r0+122)];
+	r5 = r4 << 2;
+	r3 = (r3 + r5)|0;
+	r3 = r3 >> 2;
+	r3 = heap32[(r3)];
+	if(r3 !=r1) //_LBB655_20
+{
+	r4 = (r4 + 1)|0;
+continue _21;
+}
+else{
+__label__ = 19;
+break _21;
+}
+}
+else{
+__label__ = 18;
+break _21;
+}
+}
+if (__label__ == 18){
+	r4 = r2;
+}
+	if(r2 >r4) //_LBB655_25
+{
+	r2 = (r2 + -1)|0;
+	r1 = r4 << 2;
+	r3 = heap32[(r0+122)];
+	r2 = r2 << 2;
+	r1 = (r3 + r1)|0;
+	r3 = (r3 + r2)|0;
+	r1 = r1 >> 2;
+	r3 = r3 >> 2;
+	r4 = heap32[(r1)];
+	r3 = heap32[(r3)];
+	heap32[(r1)] = r3;
+	r1 = heap32[(r0+122)];
+	r2 = (r1 + r2)|0;
+	r2 = r2 >> 2;
+	heap32[(r2)] = r4;
+	r2 = heap32[(r0+120)];
+	r2 = (r2 + -1)|0;
+	heap32[(r0+120)] = r2;
+}
+	r1 = 0;
+	r1 = r2 > r1;
+	r1 = r1 & 1;
+	heap32[(r0+63)] = r1;
+	return;
+}
+
+function _ZN23btDiscreteDynamicsWorld13addConstraintEP17btTypedConstraintb(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+	var r6;
+	var r7;
+	var r8;
+	var r9;
+	var r10;
+	var r11;
+	var r12;
+var __label__ = 0;
+	i7 = sp + -8;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = r0 >> 2;
+	r2 = heap32[(r1+48)];
+	r3 = heap32[(r1+47)];
+	r4 = heap32[(fp+1)];
+	r5 = heap32[(fp+2)];
+	if(r2 ==r3) //_LBB656_2
+{
+	r6 = 1;
+	r7 = r3 << 1;
+	r7 = r3 == 0 ? r6 : r7;
+if(!(r2 >=r7)) //_LBB656_1
+{
+	if(r7 !=0) //_LBB656_5
+{
+	r2 = gNumAlignedAllocs;
+	r2 = r2 >> 2;
+	r8 = heap32[(r2)];
+	r9 = r7 << 2;
+	r8 = (r8 + 1)|0;
+	r9 = r9 | 3;
+	heap32[(r2)] = r8;
+	r2 = (r9 + 16)|0;
+	heap32[(g0)] = r2;
+	malloc(i7);
+	r2 = r_g0;
+	if(r2 !=0) //_LBB656_7
+{
+	r8 = 0;
+	r9 = (r2 + 4)|0;
+	r8 = (r8 - r9)|0;
+	r8 = r8 & 15;
+	r8 = (r2 + r8)|0;
+	r9 = (r8 + 4)|0;
+	r8 = r8 >> 2;
+	heap32[(r8)] = r2;
+	r2 = r9;
+}
+}
+else{
+	r2 = 0;
+}
+	r8 = (r0 + 196)|0;
+	if(r3 <1) //_LBB656_10
+{
+	r9 = r8 >> 2;
+	r10 = heap32[(r9)];
+}
+else{
+	r9 = 0;
+_12: while(true){
+	r10 = r8 >> 2;
+	r10 = heap32[(r10)];
+	r11 = r9 << 2;
+	r12 = (r10 + r11)|0;
+	r12 = r12 >> 2;
+	r11 = (r2 + r11)|0;
+	r12 = heap32[(r12)];
+	r9 = (r9 + 1)|0;
+	r11 = r11 >> 2;
+	heap32[(r11)] = r12;
+if(!(r3 !=r9)) //_LBB656_11
+{
+break _12;
+}
+}
+	r8 = (r0 + 196)|0;
+}
+	if(r10 !=0) //_LBB656_15
+{
+	r9 = heapU8[r0+200];
+	if(r9 !=0) //_LBB656_17
+{
+	r3 = gNumAlignedFree;
+	r3 = r3 >> 2;
+	r9 = heap32[(r3)];
+	r9 = (r9 + 1)|0;
+	r10 = r10 >> 2;
+	heap32[(r3)] = r9;
+	r3 = heap32[(r10+-1)];
+	heap32[(g0)] = r3;
+	free(i7);
+	r3 = heap32[(r1+47)];
+}
+	r9 = r8 >> 2;
+	heap32[(r9)] = 0;
+}
+	r8 = r8 >> 2;
+	heap8[r0+200] = r6;
+	heap32[(r8)] = r2;
+	heap32[(r1+48)] = r7;
+}
+}
+	r0 = r3 << 2;
+	r2 = heap32[(r1+49)];
+	r0 = (r2 + r0)|0;
+	r0 = r0 >> 2;
+	heap32[(r0)] = r4;
+	r0 = heap32[(r1+47)];
+	r0 = (r0 + 1)|0;
+	heap32[(r1+47)] = r0;
+if(!(r5 ==0)) //_LBB656_22
+{
+	r0 = r4 >> 2;
+	r1 = heap32[(r0+5)];
+	heap32[(g0)] = r1;
+	heap32[(g0+1)] = r4;
+	_ZN11btRigidBody16addConstraintRefEP17btTypedConstraint(i7);
+	r0 = heap32[(r0+6)];
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r4;
+	_ZN11btRigidBody16addConstraintRefEP17btTypedConstraint(i7);
+}
+	return;
+}
+
+function _ZN23btDiscreteDynamicsWorld21updateActivationStateEf(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+	var r6;
+	var f0;
+	var f1;
+	var f2;
+	var f3;
+	var f4;
+var __label__ = 0;
+	i7 = sp + -16;var g0 = i7>>2; // save stack
+	r0 = _2E_str1097;
+	r1 = heap32[(fp)];
+	heap32[(g0)] = r0;
+	r0 = r1 >> 2;
+	_ZN15CProfileManager13Start_ProfileEPKc(i7);
+	r1 = heap32[(r0+52)];
+if(!(r1 <1)) //_LBB657_25
+{
+	f0 = heapFloat[(fp+1)];
+	r1 = gDisableDeactivation;
+	r1 = heapU8[r1];
+	r2 = 0;
+_3: while(true){
+	r3 = heap32[(r0+54)];
+	r4 = r2 << 2;
+	r3 = (r3 + r4)|0;
+	r3 = r3 >> 2;
+	r3 = heap32[(r3)];
+_5: do {
+if(!(r3 ==0)) //_LBB657_24
+{
+	r4 = r3 >> 2;
+	r5 = heap32[(r4+54)];
+if(!(r5 ==4)) //_LBB657_24
+{
+_8: do {
+	if(r5 !=2) //_LBB657_6
+{
+	f1 = heapFloat[(r4+76)];
+	f2 = heapFloat[(r4+77)];
+	f3 = heapFloat[(r4+78)];
+	f1 = f1*f1;
+	f2 = f2*f2;
+	f4 = heapFloat[(r4+116)];
+	f1 = f1+f2;
+	f2 = f3*f3;
+	f1 = f1+f2;
+	f2 = f4*f4;
+	if(f1 >=f2) //_LBB657_9
+{
+__label__ = 8;
+}
+else{
+	f1 = heapFloat[(r4+80)];
+	f2 = heapFloat[(r4+81)];
+	f3 = heapFloat[(r4+82)];
+	f1 = f1*f1;
+	f2 = f2*f2;
+	f4 = heapFloat[(r4+117)];
+	f1 = f1+f2;
+	f2 = f3*f3;
+	f1 = f1+f2;
+	f2 = f4*f4;
+	if(f1 >=f2) //_LBB657_9
+{
+__label__ = 8;
+}
+else{
+	f1 = heapFloat[(r4+55)];
+	f1 = f1+f0;
+	heapFloat[(r4+55)] = f1;
+__label__ = 10;
+}
+}
+if (__label__ == 8){
+	r6 = (r5 + -4)|0;
+	heap32[(r4+55)] = 0;
+if(!(uint(r6) <uint(2))) //_LBB657_11
+{
+	r5 = 0;
+	heap32[(r4+54)] = 0;
+break _8;
+}
+}
+	if(r5 ==4) //_LBB657_24
+{
+break _5;
+}
+}
+} while(0);
+	r6 = r1 & 255;
+_18: do {
+if(!(r6 !=0)) //_LBB657_22
+{
+	r6 = (r5 + -2)|0;
+if(!(uint(r6) <uint(2))) //_LBB657_15
+{
+	f1 = heapFloat[(r4+55)];
+	f2 =                         2;
+	if(f1 <=f2) //_LBB657_22
+{
+break _18;
+}
+}
+	r3 = heapU8[r3+204];
+	r3 = r3 & 3;
+	if(r3 ==0) //_LBB657_18
+{
+	if(r5 ==2) //_LBB657_21
+{
+	heap32[(r4+76)] = 0;
+	heap32[(r4+77)] = 0;
+	heap32[(r4+78)] = 0;
+	heap32[(r4+79)] = 0;
+	heap32[(r4+80)] = 0;
+	heap32[(r4+81)] = 0;
+	heap32[(r4+82)] = 0;
+	heap32[(r4+83)] = 0;
+break _5;
+}
+else{
+	if(r5 !=1) //_LBB657_24
+{
+break _5;
+}
+else{
+	heap32[(r4+54)] = 3;
+break _5;
+}
+}
+}
+else{
+	r5 = (r5 + -4)|0;
+	if(uint(r5) <uint(2)) //_LBB657_24
+{
+break _5;
+}
+else{
+	heap32[(r4+54)] = 2;
+break _5;
+}
+}
+}
+} while(0);
+	r3 = (r5 + -4)|0;
+if(!(uint(r3) <uint(2))) //_LBB657_24
+{
+	heap32[(r4+54)] = 1;
+}
+}
+}
+} while(0);
+	r2 = (r2 + 1)|0;
+	r3 = heap32[(r0+52)];
+	if(r3 >r2) //_LBB657_2
+{
+continue _3;
+}
+else{
+break _3;
+}
+}
+}
+	r0 = _ZN15CProfileManager11CurrentNodeE;
+	r0 = r0 >> 2;
+	r1 = heap32[(r0)];
+	r2 = r1 >> 2;
+	r3 = heap32[(r2+4)];
+	r3 = (r3 + -1)|0;
+	heap32[(r2+4)] = r3;
+_35: do {
+if(!(r3 !=0)) //_LBB657_31
+{
+	r3 = heap32[(r2+1)];
+	if(r3 !=0) //_LBB657_28
+{
+	r1 = sp + -8;
+	heap32[(g0)] = r1;
+	heap32[(g0+1)] = 0;
+	r3 = _ZL13gProfileClock_2E_0;
+	gettimeofday(i7);
+	r3 = r3 >> 2;
+	r3 = heap32[(r3)];
+	r3 = r3 >> 2;
+	r1 = r1 >> 2;
+	r4 = heap32[(fp+-2)];
+	r5 = heap32[(r3)];
+	r4 = (r4 - r5)|0;
+	r1 = heap32[(r1+1)];
+	r3 = heap32[(r3+1)];
+	r1 = (r1 - r3)|0;
+	r3 = (r4 * 1000000)|0;
+	r1 = (r1 + r3)|0;
+	r3 = heap32[(r2+3)];
+	r1 = (r1 - r3)|0;
+	f0 = uint(r1); //fuitos r1, f0
+	f1 =                      1000;
+	f2 = heapFloat[(r2+2)];
+	f0 = f0/f1;
+	f0 = f2+f0;
+	heapFloat[(r2+2)] = f0;
+	r1 = heap32[(r2+4)];
+	if(r1 !=0) //_LBB657_31
+{
+break _35;
+}
+else{
+	r1 = heap32[(r0)];
+}
+}
+	r1 = r1 >> 2;
+	r1 = heap32[(r1+5)];
+	heap32[(r0)] = r1;
+}
+} while(0);
+	return;
+}
+
+function _ZN23btDiscreteDynamicsWorld28internalSingleStepSimulationEf(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+	var r6;
+	var r7;
+	var f0;
+	var f1;
+	var f2;
+	var f3;
+var __label__ = 0;
+	i7 = sp + -32;var g0 = i7>>2; // save stack
+	r0 = _2E_str1198;
+	r1 = heap32[(fp)];
+	heap32[(g0)] = r0;
+	r0 = r1 >> 2;
+	_ZN15CProfileManager13Start_ProfileEPKc(i7);
+	r2 = heap32[(r0+24)];
+	f0 = heapFloat[(fp+1)];
+if(!(r2 ==0)) //_LBB658_2
+{
+	heap32[(g0)] = r1;
+	heapFloat[(g0+1)] = f0;
+	__FUNCTION_TABLE__[(r2)>>2](i7);
+}
+	r2 = heap32[(r0)];
+	r2 = r2 >> 2;
+	r2 = heap32[(r2+33)];
+	heap32[(g0)] = r1;
+	heapFloat[(g0+1)] = f0;
+	__FUNCTION_TABLE__[(r2)>>2](i7);
+	heapFloat[(r0+7)] = f0;
+	heap32[(r0+8)] = 0;
+	r2 = heap32[(r0)];
+	r2 = r2 >> 2;
+	r2 = heap32[(r2+4)];
+	heap32[(g0)] = r1;
+	__FUNCTION_TABLE__[(r2)>>2](i7);
+	heap32[(r0+12)] = r_g0;
+	r2 = heap32[(r0)];
+	r2 = r2 >> 2;
+	r2 = heap32[(r2+10)];
+	heap32[(g0)] = r1;
+	__FUNCTION_TABLE__[(r2)>>2](i7);
+	r2 = heap32[(r0)];
+	r2 = r2 >> 2;
+	r2 = heap32[(r2+35)];
+	heap32[(g0)] = r1;
+	__FUNCTION_TABLE__[(r2)>>2](i7);
+	heapFloat[(r0+29)] = f0;
+	r2 = heap32[(r0)];
+	r2 = r2 >> 2;
+	r2 = heap32[(r2+36)];
+	r3 = (r1 + 104)|0;
+	heap32[(g0)] = r1;
+	heap32[(g0+1)] = r3;
+	__FUNCTION_TABLE__[(r2)>>2](i7);
+	r2 = heap32[(r0)];
+	r2 = r2 >> 2;
+	r2 = heap32[(r2+34)];
+	heap32[(g0)] = r1;
+	heapFloat[(g0+1)] = f0;
+	__FUNCTION_TABLE__[(r2)>>2](i7);
+	r2 = _2E_str289;
+	heap32[(g0)] = r2;
+	_ZN15CProfileManager13Start_ProfileEPKc(i7);
+	r2 = heap32[(r0+63)];
+if(!(r2 <1)) //_LBB658_5
+{
+	r2 = 0;
+_6: while(true){
+	r3 = heap32[(r0+65)];
+	r4 = r2 << 2;
+	r3 = (r3 + r4)|0;
+	r3 = r3 >> 2;
+	r3 = heap32[(r3)];
+	r4 = r3 >> 2;
+	r4 = heap32[(r4)];
+	r4 = r4 >> 2;
+	r4 = heap32[(r4+2)];
+	heap32[(g0)] = r3;
+	heap32[(g0+1)] = r1;
+	heapFloat[(g0+2)] = f0;
+	r2 = (r2 + 1)|0;
+	__FUNCTION_TABLE__[(r4)>>2](i7);
+	r3 = heap32[(r0+63)];
+	if(r3 >r2) //_LBB658_4
+{
+continue _6;
+}
+else{
+break _6;
+}
+}
+}
+	r2 = _ZN15CProfileManager11CurrentNodeE;
+	r2 = r2 >> 2;
+	r3 = heap32[(r2)];
+	r4 = r3 >> 2;
+	r5 = heap32[(r4+4)];
+	r5 = (r5 + -1)|0;
+	heap32[(r4+4)] = r5;
+_9: do {
+if(!(r5 !=0)) //_LBB658_11
+{
+	r5 = heap32[(r4+1)];
+	if(r5 !=0) //_LBB658_8
+{
+	r3 = sp + -16;
+	heap32[(g0)] = r3;
+	heap32[(g0+1)] = 0;
+	r5 = _ZL13gProfileClock_2E_0;
+	gettimeofday(i7);
+	r5 = r5 >> 2;
+	r5 = heap32[(r5)];
+	r5 = r5 >> 2;
+	r3 = r3 >> 2;
+	r6 = heap32[(fp+-4)];
+	r7 = heap32[(r5)];
+	r6 = (r6 - r7)|0;
+	r3 = heap32[(r3+1)];
+	r5 = heap32[(r5+1)];
+	r3 = (r3 - r5)|0;
+	r5 = (r6 * 1000000)|0;
+	r3 = (r3 + r5)|0;
+	r5 = heap32[(r4+3)];
+	r3 = (r3 - r5)|0;
+	f1 = uint(r3); //fuitos r3, f1
+	f2 =                      1000;
+	f3 = heapFloat[(r4+2)];
+	f1 = f1/f2;
+	f1 = f3+f1;
+	heapFloat[(r4+2)] = f1;
+	r3 = heap32[(r4+4)];
+	if(r3 !=0) //_LBB658_11
+{
+break _9;
+}
+else{
+	r3 = heap32[(r2)];
+}
+}
+	r3 = r3 >> 2;
+	r3 = heap32[(r3+5)];
+	heap32[(r2)] = r3;
+}
+} while(0);
+	heap32[(g0)] = r1;
+	heapFloat[(g0+1)] = f0;
+	_ZN23btDiscreteDynamicsWorld21updateActivationStateEf(i7);
+	r0 = heap32[(r0+23)];
+if(!(r0 ==0)) //_LBB658_13
+{
+	heap32[(g0)] = r1;
+	heapFloat[(g0+1)] = f0;
+	__FUNCTION_TABLE__[(r0)>>2](i7);
+}
+	r0 = heap32[(r2)];
+	r1 = r0 >> 2;
+	r3 = heap32[(r1+4)];
+	r3 = (r3 + -1)|0;
+	heap32[(r1+4)] = r3;
+_19: do {
+if(!(r3 !=0)) //_LBB658_19
+{
+	r3 = heap32[(r1+1)];
+	if(r3 !=0) //_LBB658_16
+{
+	r0 = sp + -8;
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = 0;
+	r3 = _ZL13gProfileClock_2E_0;
+	gettimeofday(i7);
+	r3 = r3 >> 2;
+	r3 = heap32[(r3)];
+	r3 = r3 >> 2;
+	r0 = r0 >> 2;
+	r4 = heap32[(fp+-2)];
+	r5 = heap32[(r3)];
+	r4 = (r4 - r5)|0;
+	r0 = heap32[(r0+1)];
+	r3 = heap32[(r3+1)];
+	r0 = (r0 - r3)|0;
+	r3 = (r4 * 1000000)|0;
+	r0 = (r0 + r3)|0;
+	r3 = heap32[(r1+3)];
+	r0 = (r0 - r3)|0;
+	f0 = uint(r0); //fuitos r0, f0
+	f1 =                      1000;
+	f2 = heapFloat[(r1+2)];
+	f0 = f0/f1;
+	f0 = f2+f0;
+	heapFloat[(r1+2)] = f0;
+	r0 = heap32[(r1+4)];
+	if(r0 !=0) //_LBB658_19
+{
+break _19;
+}
+else{
+	r0 = heap32[(r2)];
+}
+}
+	r0 = r0 >> 2;
+	r0 = heap32[(r0+5)];
+	heap32[(r2)] = r0;
+}
+} while(0);
+	return;
+}
+
+function _ZN23btDiscreteDynamicsWorld12addRigidBodyEP11btRigidBodyss(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+	var r6;
+	var r7;
+	var r8;
+	var r9;
+	var r10;
+	var r11;
+	var r12;
+	var r13;
+	var f0;
+	var f1;
+	var f2;
+	var f3;
+var __label__ = 0;
+	i7 = sp + -16;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp+1)];
+	r1 = r0 >> 2;
+	r2 = heap32[(r1+51)];
+	r3 = heap32[(fp)];
+	r4 = r2 & 3;
+if(!(r4 !=0)) //_LBB659_5
+{
+	r4 = heapU8[r0+496];
+	r4 = r4 & 1;
+if(!(r4 != 0)) //_LBB659_5
+{
+	f0 = heapFloat[(r1+84)];
+	f1 =                         0;
+if(!(f0 ==f1)) //_LBB659_4
+{
+	r4 = r3 >> 2;
+	f1 =                         1;
+	f0 = f1/f0;
+	f1 = heapFloat[(r4+58)];
+	f2 = heapFloat[(r4+57)];
+	f3 = heapFloat[(r4+56)];
+	f3 = f3*f0;
+	f2 = f2*f0;
+	heapFloat[(r1+89)] = f3;
+	f0 = f1*f0;
+	heapFloat[(r1+90)] = f2;
+	heapFloat[(r1+91)] = f0;
+	heap32[(r1+92)] = 0;
+}
+	r4 = r3 >> 2;
+	heap32[(r1+93)] = heap32[(r4+56)];
+	heap32[(r1+94)] = heap32[(r4+57)];
+	heap32[(r1+95)] = heap32[(r4+58)];
+	heap32[(r1+96)] = heap32[(r4+59)];
+}
+}
+	r4 = heap32[(r1+48)];
+if(!(r4 ==0)) //_LBB659_31
+{
+	r4 = heap32[(fp+2)];
+	r5 = heap32[(fp+3)];
+	r2 = r2 & 1;
+_10: do {
+	if(r2 != 0) //_LBB659_28
+{
+	r2 = heap32[(r1+54)];
+	r2 = (r2 + -4)|0;
+	if(uint(r2) <uint(2)) //_LBB659_30
+{
+break _10;
+}
+else{
+	heap32[(r1+54)] = 2;
+}
+}
+else{
+	r1 = r3 >> 2;
+	r2 = heap32[(r1+53)];
+	r6 = heap32[(r1+52)];
+	if(r2 ==r6) //_LBB659_9
+{
+	r7 = 1;
+	r8 = r6 << 1;
+	r8 = r6 == 0 ? r7 : r8;
+if(!(r2 >=r8)) //_LBB659_8
+{
+	if(r8 !=0) //_LBB659_12
+{
+	r2 = gNumAlignedAllocs;
+	r2 = r2 >> 2;
+	r9 = heap32[(r2)];
+	r10 = r8 << 2;
+	r9 = (r9 + 1)|0;
+	r10 = r10 | 3;
+	heap32[(r2)] = r9;
+	r2 = (r10 + 16)|0;
+	heap32[(g0)] = r2;
+	malloc(i7);
+	r2 = r_g0;
+	if(r2 !=0) //_LBB659_14
+{
+	r9 = 0;
+	r10 = (r2 + 4)|0;
+	r9 = (r9 - r10)|0;
+	r9 = r9 & 15;
+	r9 = (r2 + r9)|0;
+	r10 = (r9 + 4)|0;
+	r9 = r9 >> 2;
+	heap32[(r9)] = r2;
+	r2 = r10;
+}
+}
+else{
+	r2 = 0;
+}
+	r9 = (r3 + 216)|0;
+	if(r6 <1) //_LBB659_17
+{
+	r10 = r9 >> 2;
+	r11 = heap32[(r10)];
+}
+else{
+	r10 = 0;
+_25: while(true){
+	r11 = r9 >> 2;
+	r11 = heap32[(r11)];
+	r12 = r10 << 2;
+	r13 = (r11 + r12)|0;
+	r13 = r13 >> 2;
+	r12 = (r2 + r12)|0;
+	r13 = heap32[(r13)];
+	r10 = (r10 + 1)|0;
+	r12 = r12 >> 2;
+	heap32[(r12)] = r13;
+if(!(r6 !=r10)) //_LBB659_18
+{
+break _25;
+}
+}
+	r9 = (r3 + 216)|0;
+}
+	if(r11 !=0) //_LBB659_22
+{
+	r10 = heapU8[r3+220];
+	if(r10 !=0) //_LBB659_24
+{
+	r6 = gNumAlignedFree;
+	r6 = r6 >> 2;
+	r10 = heap32[(r6)];
+	r10 = (r10 + 1)|0;
+	r11 = r11 >> 2;
+	heap32[(r6)] = r10;
+	r6 = heap32[(r11+-1)];
+	heap32[(g0)] = r6;
+	free(i7);
+	r6 = heap32[(r1+52)];
+}
+	r10 = r9 >> 2;
+	heap32[(r10)] = 0;
+}
+	r9 = r9 >> 2;
+	heap8[r3+220] = r7;
+	heap32[(r9)] = r2;
+	heap32[(r1+53)] = r8;
+}
+}
+	r2 = r6 << 2;
+	r6 = heap32[(r1+54)];
+	r2 = (r6 + r2)|0;
+	r2 = r2 >> 2;
+	heap32[(r2)] = r0;
+	r2 = heap32[(r1+52)];
+	r2 = (r2 + 1)|0;
+	heap32[(r1+52)] = r2;
+}
+} while(0);
+	r1 = r3 >> 2;
+	r1 = heap32[(r1)];
+	r1 = r1 >> 2;
+	r1 = heap32[(r1+8)];
+	heap32[(g0)] = r3;
+	heap32[(g0+1)] = r0;
+	heap32[(g0+2)] = r4;
+	heap32[(g0+3)] = r5;
+	__FUNCTION_TABLE__[(r1)>>2](i7);
+}
+	return;
+}
+
+function _ZN23btDiscreteDynamicsWorld12addRigidBodyEP11btRigidBody(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+	var r6;
+	var r7;
+	var r8;
+	var r9;
+	var r10;
+	var r11;
+	var r12;
+	var f0;
+	var f1;
+	var f2;
+	var f3;
+var __label__ = 0;
+	i7 = sp + -16;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp+1)];
+	r1 = r0 >> 2;
+	r2 = heap32[(r1+51)];
+	r3 = heap32[(fp)];
+	r4 = r2 & 3;
+if(!(r4 !=0)) //_LBB660_5
+{
+	r4 = heapU8[r0+496];
+	r4 = r4 & 1;
+if(!(r4 != 0)) //_LBB660_5
+{
+	f0 = heapFloat[(r1+84)];
+	f1 =                         0;
+if(!(f0 ==f1)) //_LBB660_4
+{
+	r4 = r3 >> 2;
+	f1 =                         1;
+	f0 = f1/f0;
+	f1 = heapFloat[(r4+58)];
+	f2 = heapFloat[(r4+57)];
+	f3 = heapFloat[(r4+56)];
+	f3 = f3*f0;
+	f2 = f2*f0;
+	heapFloat[(r1+89)] = f3;
+	f0 = f1*f0;
+	heapFloat[(r1+90)] = f2;
+	heapFloat[(r1+91)] = f0;
+	heap32[(r1+92)] = 0;
+}
+	r4 = r3 >> 2;
+	heap32[(r1+93)] = heap32[(r4+56)];
+	heap32[(r1+94)] = heap32[(r4+57)];
+	heap32[(r1+95)] = heap32[(r4+58)];
+	heap32[(r1+96)] = heap32[(r4+59)];
+}
+}
+	r4 = heap32[(r1+48)];
+if(!(r4 ==0)) //_LBB660_32
+{
+	r4 = r2 & 1;
+_10: do {
+	if(r4 != 0) //_LBB660_28
+{
+	r4 = heap32[(r1+54)];
+	r4 = (r4 + -4)|0;
+	if(uint(r4) >uint(1)) //_LBB660_30
+{
+	heap32[(r1+54)] = 2;
+}
+else{
+break _10;
+}
+}
+else{
+	r2 = r3 >> 2;
+	r4 = heap32[(r2+53)];
+	r5 = heap32[(r2+52)];
+	if(r4 ==r5) //_LBB660_9
+{
+	r6 = 1;
+	r7 = r5 << 1;
+	r7 = r5 == 0 ? r6 : r7;
+if(!(r4 >=r7)) //_LBB660_8
+{
+	if(r7 !=0) //_LBB660_12
+{
+	r4 = gNumAlignedAllocs;
+	r4 = r4 >> 2;
+	r8 = heap32[(r4)];
+	r9 = r7 << 2;
+	r8 = (r8 + 1)|0;
+	r9 = r9 | 3;
+	heap32[(r4)] = r8;
+	r4 = (r9 + 16)|0;
+	heap32[(g0)] = r4;
+	malloc(i7);
+	r4 = r_g0;
+	if(r4 !=0) //_LBB660_14
+{
+	r8 = 0;
+	r9 = (r4 + 4)|0;
+	r8 = (r8 - r9)|0;
+	r8 = r8 & 15;
+	r8 = (r4 + r8)|0;
+	r9 = (r8 + 4)|0;
+	r8 = r8 >> 2;
+	heap32[(r8)] = r4;
+	r4 = r9;
+}
+}
+else{
+	r4 = 0;
+}
+	r8 = (r3 + 216)|0;
+	if(r5 <1) //_LBB660_17
+{
+	r9 = r8 >> 2;
+	r10 = heap32[(r9)];
+}
+else{
+	r9 = 0;
+_25: while(true){
+	r10 = r8 >> 2;
+	r10 = heap32[(r10)];
+	r11 = r9 << 2;
+	r12 = (r10 + r11)|0;
+	r12 = r12 >> 2;
+	r11 = (r4 + r11)|0;
+	r12 = heap32[(r12)];
+	r9 = (r9 + 1)|0;
+	r11 = r11 >> 2;
+	heap32[(r11)] = r12;
+if(!(r5 !=r9)) //_LBB660_18
+{
+break _25;
+}
+}
+	r8 = (r3 + 216)|0;
+}
+	if(r10 !=0) //_LBB660_22
+{
+	r9 = heapU8[r3+220];
+	if(r9 !=0) //_LBB660_24
+{
+	r5 = gNumAlignedFree;
+	r5 = r5 >> 2;
+	r9 = heap32[(r5)];
+	r9 = (r9 + 1)|0;
+	r10 = r10 >> 2;
+	heap32[(r5)] = r9;
+	r5 = heap32[(r10+-1)];
+	heap32[(g0)] = r5;
+	free(i7);
+	r5 = heap32[(r2+52)];
+}
+	r9 = r8 >> 2;
+	heap32[(r9)] = 0;
+}
+	r8 = r8 >> 2;
+	heap8[r3+220] = r6;
+	heap32[(r8)] = r4;
+	heap32[(r2+53)] = r7;
+}
+}
+	r4 = r5 << 2;
+	r5 = heap32[(r2+54)];
+	r4 = (r5 + r4)|0;
+	r4 = r4 >> 2;
+	heap32[(r4)] = r0;
+	r4 = heap32[(r2+52)];
+	r4 = (r4 + 1)|0;
+	heap32[(r2+52)] = r4;
+	r2 = heap32[(r1+51)];
+}
+} while(0);
+	r1 = r3 >> 2;
+	r1 = heap32[(r1)];
+	r1 = r1 >> 2;
+	r1 = heap32[(r1+8)];
+	r4 = 2;
+	r5 = 1;
+	r2 = r2 & 3;
+	r6 = -3;
+	r7 = -1;
+	r4 = r2 != 0 ? r4 : r5;
+	r2 = r2 != 0 ? r6 : r7;
+	heap32[(g0)] = r3;
+	heap32[(g0+1)] = r0;
+	heap32[(g0+2)] = r4;
+	heap32[(g0+3)] = r2;
+	__FUNCTION_TABLE__[(r1)>>2](i7);
+}
+	return;
+}
+
+function _ZN23btDiscreteDynamicsWorld10setGravityERK9btVector3(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+	var f0;
+	var f1;
+	var f2;
+	var f3;
+var __label__ = 0;
+	i7 = sp + 0;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = heap32[(fp+1)];
+	r0 = r0 >> 2;
+	r1 = r1 >> 2;
+	heap32[(r0+56)] = heap32[(r1)];
+	heap32[(r0+57)] = heap32[(r1+1)];
+	heap32[(r0+58)] = heap32[(r1+2)];
+	heap32[(r0+59)] = heap32[(r1+3)];
+	r2 = heap32[(r0+52)];
+if(!(r2 <1)) //_LBB661_9
+{
+	r2 = 0;
+_3: while(true){
+	r3 = heap32[(r0+54)];
+	r4 = r2 << 2;
+	r3 = (r3 + r4)|0;
+	r3 = r3 >> 2;
+	r3 = heap32[(r3)];
+	r4 = r3 >> 2;
+	r5 = heap32[(r4+54)];
+if(!(r5 ==2)) //_LBB661_8
+{
+if(!(r5 ==5)) //_LBB661_8
+{
+	r3 = heapU8[r3+496];
+	r3 = r3 & 1;
+if(!(r3 != 0)) //_LBB661_8
+{
+	f0 = heapFloat[(r4+84)];
+	f1 =                         0;
+if(!(f0 ==f1)) //_LBB661_7
+{
+	f1 =                         1;
+	f0 = f1/f0;
+	f1 = heapFloat[(r1+2)];
+	f2 = heapFloat[(r1+1)];
+	f3 = heapFloat[(r1)];
+	f3 = f3*f0;
+	f2 = f2*f0;
+	heapFloat[(r4+89)] = f3;
+	f0 = f1*f0;
+	heapFloat[(r4+90)] = f2;
+	heapFloat[(r4+91)] = f0;
+	heap32[(r4+92)] = 0;
+}
+	heap32[(r4+93)] = heap32[(r1)];
+	heap32[(r4+94)] = heap32[(r1+1)];
+	heap32[(r4+95)] = heap32[(r1+2)];
+	heap32[(r4+96)] = heap32[(r1+3)];
+}
+}
+}
+	r2 = (r2 + 1)|0;
+	r3 = heap32[(r0+52)];
+	if(r3 >r2) //_LBB661_2
+{
+continue _3;
+}
+else{
+break _3;
+}
+}
+}
+	return;
+}
+
+function _ZN23btDiscreteDynamicsWorld15removeRigidBodyEP11btRigidBody(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+	var r6;
+var __label__ = 0;
+	i7 = sp + -8;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = r0 >> 2;
+	r2 = heap32[(fp+1)];
+	r3 = heap32[(r1+52)];
+	r4 = 0;
+_1: while(true){
+	if(r3 >r4) //_LBB662_1
+{
+	r5 = heap32[(r1+54)];
+	r6 = r4 << 2;
+	r5 = (r5 + r6)|0;
+	r5 = r5 >> 2;
+	r5 = heap32[(r5)];
+	if(r5 !=r2) //_LBB662_3
+{
+	r4 = (r4 + 1)|0;
+continue _1;
+}
+else{
+__label__ = 5;
+break _1;
+}
+}
+else{
+__label__ = 4;
+break _1;
+}
+}
+if (__label__ == 4){
+	r4 = r3;
+}
+if(!(r3 <=r4)) //_LBB662_8
+{
+	r3 = (r3 + -1)|0;
+	r4 = r4 << 2;
+	r5 = heap32[(r1+54)];
+	r3 = r3 << 2;
+	r4 = (r5 + r4)|0;
+	r5 = (r5 + r3)|0;
+	r4 = r4 >> 2;
+	r5 = r5 >> 2;
+	r6 = heap32[(r4)];
+	r5 = heap32[(r5)];
+	heap32[(r4)] = r5;
+	r4 = heap32[(r1+54)];
+	r3 = (r4 + r3)|0;
+	r3 = r3 >> 2;
+	heap32[(r3)] = r6;
+	r3 = heap32[(r1+52)];
+	r3 = (r3 + -1)|0;
+	heap32[(r1+52)] = r3;
+}
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r2;
+	_ZN16btCollisionWorld21removeCollisionObjectEP17btCollisionObject(i7);
+	return;
+}
+
+function _ZN23btDiscreteDynamicsWorld21removeCollisionObjectEP17btCollisionObject(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+var __label__ = 0;
+	i7 = sp + -8;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp+1)];
+	r1 = heap32[(fp)];
+	r2 = heapU8[r0+232];
+	r2 = r2 & 2;
+if(!(r2 ==0)) //_LBB663_3
+{
+if(!(r0 ==0)) //_LBB663_3
+{
+	r2 = r1 >> 2;
+	r2 = heap32[(r2)];
+	r2 = r2 >> 2;
+	r2 = heap32[(r2+21)];
+	heap32[(g0)] = r1;
+	heap32[(g0+1)] = r0;
+	__FUNCTION_TABLE__[(r2)>>2](i7);
+	return;
+}
+}
+	heap32[(g0)] = r1;
+	heap32[(g0+1)] = r0;
+	_ZN16btCollisionWorld21removeCollisionObjectEP17btCollisionObject(i7);
+	return;
+}
+
+function _ZN23btDiscreteDynamicsWorld18addCollisionObjectEP17btCollisionObjectss(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+var __label__ = 0;
+	i7 = sp + -16;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = heap32[(fp+1)];
+	r2 = heap32[(fp+2)];
+	r3 = heap32[(fp+3)];
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r1;
+	heap32[(g0+2)] = r2;
+	heap32[(g0+3)] = r3;
+	_ZN16btCollisionWorld18addCollisionObjectEP17btCollisionObjectss(i7);
+	return;
+}
+
+function _ZN23btDiscreteDynamicsWorld14stepSimulationEfif(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+	var r6;
+	var f0;
+	var f1;
+	var f2;
+var __label__ = 0;
+	i7 = sp + -16;var g0 = i7>>2; // save stack
+	_ZN15CProfileManager5ResetEv(i7);
+	r0 = _2E_str1299;
+	r1 = heap32[(fp+2)];
+	heap32[(g0)] = r0;
+	r0 = heap32[(fp)];
+	f0 = heapFloat[(fp+1)];
+	_ZN15CProfileManager13Start_ProfileEPKc(i7);
+	if(r1 ==0) //_LBB665_4
+{
+	r1 = r0 >> 2;
+	f1 =                         0;
+	heapFloat[(r1+60)] = f0;
+	if(f0 <f1) //_LBB665_6
+{
+	f1 = -f0;
+}
+else{
+	f1 = f0;
+}
+	f2 =   1.1920928955078125e-007;
+	if(f1 >=f2) //_LBB665_9
+{
+	r1 = 1;
+	f1 = f0;
+	r3 = r1;
+}
+else{
+	r1 = 0;
+	f1 = f0;
+	r3 = r1;
+}
+}
+else{
+	f1 = heapFloat[(fp+3)];
+	r2 = r0 >> 2;
+	f2 = heapFloat[(r2+60)];
+	f0 = f2+f0;
+	heapFloat[(r2+60)] = f0;
+	if(f0 >=f1) //_LBB665_3
+{
+	f2 = f0/f1;
+	r3 = f2|0;
+	f2 = r3; //fitos r3, f2
+	f2 = f2*f1;
+	f0 = f0-f2;
+	heapFloat[(r2+60)] = f0;
+}
+else{
+	r3 = 0;
+}
+}
+	r2 = r0 >> 2;
+	r4 = heap32[(r2)];
+	r4 = r4 >> 2;
+	r4 = heap32[(r4+4)];
+	heap32[(g0)] = r0;
+	__FUNCTION_TABLE__[(r4)>>2](i7);
+	r4 = r_g0;
+if(!(r4 ==0)) //_LBB665_12
+{
+	r4 = heap32[(r2)];
+	r4 = r4 >> 2;
+	r4 = heap32[(r4+4)];
+	heap32[(g0)] = r0;
+	__FUNCTION_TABLE__[(r4)>>2](i7);
+	r5 = r_g0 >> 2;
+	r5 = heap32[(r5)];
+	r5 = r5 >> 2;
+	r5 = heap32[(r5+12)];
+	heap32[(g0)] = r_g0;
+	__FUNCTION_TABLE__[(r5)>>2](i7);
+	r4 = r_g0 >>> 4;
+	r5 = gDisableDeactivation;
+	r4 = r4 & 1;
+	heap8[r5] = r4;
+}
+	if(r3 ==0) //_LBB665_16
+{
+	r1 = heap32[(r2)];
+	r1 = r1 >> 2;
+	r1 = heap32[(r1+19)];
+	heap32[(g0)] = r0;
+	__FUNCTION_TABLE__[(r1)>>2](i7);
+}
+else{
+	r4 = heap32[(r2)];
+	r4 = r4 >> 2;
+	r5 = r3 > r1 ? r1 : r3;
+	r4 = heap32[(r4+38)];
+	f0 = r5; //fitos r5, f0
+	f0 = f0*f1;
+	heap32[(g0)] = r0;
+	heapFloat[(g0+1)] = f0;
+	__FUNCTION_TABLE__[(r4)>>2](i7);
+	r4 = heap32[(r2)];
+	r4 = r4 >> 2;
+	r4 = heap32[(r4+40)];
+	heap32[(g0)] = r0;
+	__FUNCTION_TABLE__[(r4)>>2](i7);
+if(!(r5 <1)) //_LBB665_17
+{
+	r4 = r3 ^ -1;
+	r1 = r1 ^ -1;
+	r1 = r4 > r1 ? r4 : r1;
+	r1 = r1 ^ -1;
+_22: while(true){
+	r4 = heap32[(r2)];
+	r4 = r4 >> 2;
+	r4 = heap32[(r4+37)];
+	heap32[(g0)] = r0;
+	heapFloat[(g0+1)] = f1;
+	__FUNCTION_TABLE__[(r4)>>2](i7);
+	r4 = heap32[(r2)];
+	r4 = r4 >> 2;
+	r4 = heap32[(r4+19)];
+	r1 = (r1 + -1)|0;
+	heap32[(g0)] = r0;
+	__FUNCTION_TABLE__[(r4)>>2](i7);
+	if(r1 ==0) //_LBB665_17
+{
+break _22;
+}
+else{
+continue _22;
+}
+}
+}
+}
+	r1 = heap32[(r2)];
+	r1 = r1 >> 2;
+	r1 = heap32[(r1+28)];
+	heap32[(g0)] = r0;
+	r0 = _ZN15CProfileManager12FrameCounterE;
+	__FUNCTION_TABLE__[(r1)>>2](i7);
+	r0 = r0 >> 2;
+	r1 = heap32[(r0)];
+	r2 = _ZN15CProfileManager11CurrentNodeE;
+	r1 = (r1 + 1)|0;
+	r2 = r2 >> 2;
+	heap32[(r0)] = r1;
+	r0 = heap32[(r2)];
+	r1 = r0 >> 2;
+	r4 = heap32[(r1+4)];
+	r4 = (r4 + -1)|0;
+	heap32[(r1+4)] = r4;
+_25: do {
+if(!(r4 !=0)) //_LBB665_23
+{
+	r4 = heap32[(r1+1)];
+	if(r4 !=0) //_LBB665_20
+{
+	r0 = sp + -8;
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = 0;
+	r4 = _ZL13gProfileClock_2E_0;
+	gettimeofday(i7);
+	r4 = r4 >> 2;
+	r4 = heap32[(r4)];
+	r4 = r4 >> 2;
+	r0 = r0 >> 2;
+	r5 = heap32[(fp+-2)];
+	r6 = heap32[(r4)];
+	r5 = (r5 - r6)|0;
+	r0 = heap32[(r0+1)];
+	r4 = heap32[(r4+1)];
+	r0 = (r0 - r4)|0;
+	r4 = (r5 * 1000000)|0;
+	r0 = (r0 + r4)|0;
+	r4 = heap32[(r1+3)];
+	r0 = (r0 - r4)|0;
+	f0 = uint(r0); //fuitos r0, f0
+	f1 =                      1000;
+	f2 = heapFloat[(r1+2)];
+	f0 = f0/f1;
+	f0 = f2+f0;
+	heapFloat[(r1+2)] = f0;
+	r0 = heap32[(r1+4)];
+	if(r0 !=0) //_LBB665_23
+{
+break _25;
+}
+else{
+	r0 = heap32[(r2)];
+}
+}
+	r0 = r0 >> 2;
+	r0 = heap32[(r0+5)];
+	heap32[(r2)] = r0;
+}
+} while(0);
+	r_g0 = r3;
+	return;
+}
+
+function _ZN23btDiscreteDynamicsWorld28synchronizeSingleMotionStateEP11btRigidBody(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var f0;
+	var f1;
+	var f2;
+	var f3;
+	var f4;
+var __label__ = 0;
+	i7 = sp + -96;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp+1)];
+	if(r0 !=0) //_LBB666_2
+{
+	r1 = r0 >> 2;
+	r2 = heap32[(r1+118)];
+if(!(r2 ==0)) //_LBB666_4
+{
+	r2 = heapU8[r0+204];
+	r2 = r2 & 3;
+	if(r2 ==0) //_LBB666_5
+{
+	r2 = heap32[(fp)];
+	r2 = r2 >> 2;
+	f0 = heapFloat[(r2+60)];
+	f1 = heapFloat[(r1+60)];
+	f2 = heapFloat[(r1+33)];
+	f3 = heapFloat[(r1+34)];
+	f4 = heapFloat[(r1+35)];
+	r2 = sp + -64;
+	r3 = (r0 + 68)|0;
+	r0 = (r0 + 148)|0;
+	f0 = f0*f1;
+	heap32[(g0)] = r3;
+	heapFloat[(g0+1)] = f2;
+	heapFloat[(g0+2)] = f3;
+	heapFloat[(g0+3)] = f4;
+	heap32[(g0+4)] = r0;
+	heapFloat[(g0+5)] = f0;
+	heap32[(g0+6)] = r2;
+	_ZN15btTransformUtil18integrateTransformERK11btTransformRK9btVector3S5_fRS0_(i7);
+	r0 = heap32[(r1+118)];
+	r1 = r0 >> 2;
+	r1 = heap32[(r1)];
+	r1 = r1 >> 2;
+	r1 = heap32[(r1+3)];
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r2;
+	__FUNCTION_TABLE__[(r1)>>2](i7);
+	return;
+}
+}
+	return;
+}
+else{
+	r0 = _2E_str13100;
+	r1 = _2E_str1461;
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r1;
+	heap32[(g0+2)] = 184;
+	_assert(i7);
+}
+}
+
+function _ZN23btDiscreteDynamicsWorld23synchronizeMotionStatesEv(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+	var f0;
+	var f1;
+	var f2;
+var __label__ = 0;
+	i7 = sp + -16;var g0 = i7>>2; // save stack
+	r0 = _2E_str1562;
+	heap32[(g0)] = r0;
+	r0 = heap32[(fp)];
+	_ZN15CProfileManager13Start_ProfileEPKc(i7);
+	r1 = heapU8[r0+246];
+_1: do {
+	if(r1 !=0) //_LBB667_2
+{
+	r1 = r0 >> 2;
+	r2 = heap32[(r1+2)];
+if(!(r2 <1)) //_LBB667_13
+{
+	r2 = 0;
+_4: while(true){
+	r3 = heap32[(r1+4)];
+	r4 = r2 << 2;
+	r3 = (r3 + r4)|0;
+	r3 = r3 >> 2;
+	r3 = heap32[(r3)];
+	r4 = heapU8[r3+232];
+	r4 = r4 & 2;
+if(!(r4 ==0)) //_LBB667_7
+{
+if(!(r3 ==0)) //_LBB667_7
+{
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r3;
+	_ZN23btDiscreteDynamicsWorld28synchronizeSingleMotionStateEP11btRigidBody(i7);
+}
+}
+	r2 = (r2 + 1)|0;
+	r3 = heap32[(r1+2)];
+	if(r3 >r2) //_LBB667_4
+{
+continue _4;
+}
+else{
+break _1;
+}
+}
+}
+}
+else{
+	r1 = r0 >> 2;
+	r2 = heap32[(r1+52)];
+	if(r2 >0) //_LBB667_8
+{
+	r2 = 0;
+_12: while(true){
+	r3 = heap32[(r1+54)];
+	r4 = r2 << 2;
+	r3 = (r3 + r4)|0;
+	r3 = r3 >> 2;
+	r3 = heap32[(r3)];
+	r4 = r3 >> 2;
+	r4 = heap32[(r4+54)];
+if(!(r4 ==2)) //_LBB667_12
+{
+if(!(r4 ==5)) //_LBB667_12
+{
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r3;
+	_ZN23btDiscreteDynamicsWorld28synchronizeSingleMotionStateEP11btRigidBody(i7);
+}
+}
+	r2 = (r2 + 1)|0;
+	r3 = heap32[(r1+52)];
+	if(r3 >r2) //_LBB667_9
+{
+continue _12;
+}
+else{
+break _1;
+}
+}
+}
+}
+} while(0);
+	r0 = _ZN15CProfileManager11CurrentNodeE;
+	r0 = r0 >> 2;
+	r1 = heap32[(r0)];
+	r2 = r1 >> 2;
+	r3 = heap32[(r2+4)];
+	r3 = (r3 + -1)|0;
+	heap32[(r2+4)] = r3;
+_19: do {
+if(!(r3 !=0)) //_LBB667_19
+{
+	r3 = heap32[(r2+1)];
+	if(r3 !=0) //_LBB667_16
+{
+	r1 = sp + -8;
+	heap32[(g0)] = r1;
+	heap32[(g0+1)] = 0;
+	r3 = _ZL13gProfileClock_2E_0;
+	gettimeofday(i7);
+	r3 = r3 >> 2;
+	r3 = heap32[(r3)];
+	r3 = r3 >> 2;
+	r1 = r1 >> 2;
+	r4 = heap32[(fp+-2)];
+	r5 = heap32[(r3)];
+	r4 = (r4 - r5)|0;
+	r1 = heap32[(r1+1)];
+	r3 = heap32[(r3+1)];
+	r1 = (r1 - r3)|0;
+	r3 = (r4 * 1000000)|0;
+	r1 = (r1 + r3)|0;
+	r3 = heap32[(r2+3)];
+	r1 = (r1 - r3)|0;
+	f0 = uint(r1); //fuitos r1, f0
+	f1 =                      1000;
+	f2 = heapFloat[(r2+2)];
+	f0 = f0/f1;
+	f0 = f2+f0;
+	heapFloat[(r2+2)] = f0;
+	r1 = heap32[(r2+4)];
+	if(r1 !=0) //_LBB667_19
+{
+break _19;
+}
+else{
+	r1 = heap32[(r0)];
+}
+}
+	r1 = r1 >> 2;
+	r1 = heap32[(r1+5)];
+	heap32[(r0)] = r1;
+}
+} while(0);
+	return;
+}
+
+function _ZN23btDiscreteDynamicsWorld12applyGravityEv(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var f0;
+	var f1;
+	var f2;
+	var f3;
+	var f4;
+	var f5;
+var __label__ = 0;
+	i7 = sp + 0;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r0 = r0 >> 2;
+	r1 = heap32[(r0+52)];
+if(!(r1 <1)) //_LBB668_7
+{
+	r1 = 0;
+_3: while(true){
+	r2 = heap32[(r0+54)];
+	r3 = r1 << 2;
+	r2 = (r2 + r3)|0;
+	r2 = r2 >> 2;
+	r2 = heap32[(r2)];
+	r3 = r2 >> 2;
+	r4 = heap32[(r3+54)];
+if(!(r4 ==2)) //_LBB668_6
+{
+if(!(r4 ==5)) //_LBB668_6
+{
+	r2 = heapU8[r2+204];
+	r2 = r2 & 3;
+if(!(r2 !=0)) //_LBB668_6
+{
+	f0 = heapFloat[(r3+89)];
+	f1 = heapFloat[(r3+85)];
+	f0 = f0*f1;
+	f1 = heapFloat[(r3+101)];
+	f2 = heapFloat[(r3+91)];
+	f3 = heapFloat[(r3+87)];
+	f4 = heapFloat[(r3+90)];
+	f5 = heapFloat[(r3+86)];
+	f0 = f1+f0;
+	heapFloat[(r3+101)] = f0;
+	f0 = f4*f5;
+	f1 = heapFloat[(r3+102)];
+	f0 = f1+f0;
+	heapFloat[(r3+102)] = f0;
+	f0 = f2*f3;
+	f1 = heapFloat[(r3+103)];
+	f0 = f1+f0;
+	heapFloat[(r3+103)] = f0;
+}
+}
+}
+	r1 = (r1 + 1)|0;
+	r2 = heap32[(r0+52)];
+	if(r2 >r1) //_LBB668_2
+{
+continue _3;
+}
+else{
+break _3;
+}
+}
+}
+	return;
+}
+
+function _ZN23btDiscreteDynamicsWorld14debugDrawWorldEv(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+	var r6;
+	var r7;
+	var r8;
+	var r9;
+	var r10;
+	var r11;
+	var r12;
+	var r13;
+	var r14;
+	var r15;
+	var r16;
+	var r17;
+	var r18;
+	var f0;
+	var f1;
+	var f2;
+	var f3;
+	var f4;
+	var f5;
+	var f6;
+	var f7;
+	var f8;
+	var f9;
+	var f10;
+	var f11;
+	var f12;
+	var f13;
+	var f14;
+	var f15;
+	var f16;
+	var f17;
+	var f18;
+	var f19;
+	var f20;
+	var f21;
+	var f22;
+	var f23;
+	var f24;
+	var f25;
+	var f26;
+	var f27;
+	var f28;
+	var f29;
+	var f30;
+var __label__ = 0;
+	i7 = sp + -824;var g0 = i7>>2; // save stack
+	r0 = _2E_str16101;
+	heap32[(g0)] = r0;
+	_ZN15CProfileManager13Start_ProfileEPKc(i7);
+	r0 = heap32[(fp)];
+	heap32[(g0)] = r0;
+	_ZN16btCollisionWorld14debugDrawWorldEv(i7);
+	r1 = r0 >> 2;
+	r2 = heap32[(r1)];
+	r2 = r2 >> 2;
+	r2 = heap32[(r2+4)];
+	heap32[(g0)] = r0;
+	__FUNCTION_TABLE__[(r2)>>2](i7);
+	r2 = r_g0;
+if(!(r2 ==0)) //_LBB669_53
+{
+	r2 = heap32[(r1)];
+	r2 = r2 >> 2;
+	r2 = heap32[(r2+4)];
+	heap32[(g0)] = r0;
+	__FUNCTION_TABLE__[(r2)>>2](i7);
+	r3 = r_g0 >> 2;
+	r3 = heap32[(r3)];
+	r3 = r3 >> 2;
+	r3 = heap32[(r3+12)];
+	heap32[(g0)] = r_g0;
+	__FUNCTION_TABLE__[(r3)>>2](i7);
+	r2 = r_g0 & 6144;
+if(!(r2 ==0)) //_LBB669_53
+{
+	r2 = heap32[(r1)];
+	r2 = r2 >> 2;
+	r2 = heap32[(r2+24)];
+	heap32[(g0)] = r0;
+	__FUNCTION_TABLE__[(r2)>>2](i7);
+	r2 = r_g0;
+	r3 = (r2 + -1)|0;
+if(!(r3 <0)) //_LBB669_53
+{
+	r3 = sp + -296;
+	r4 = sp + -392;
+	r5 = (r3 + 48)|0;
+	r6 = (r4 + 48)|0;
+	r2 = (r2 + -1)|0;
+_5: while(true){
+	r7 = r2;
+	r2 = heap32[(r1)];
+	r2 = r2 >> 2;
+	r2 = heap32[(r2+25)];
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r7;
+	__FUNCTION_TABLE__[(r2)>>2](i7);
+	r2 = r_g0;
+	r8 = heap32[(r1)];
+	r8 = r8 >> 2;
+	r8 = heap32[(r8+4)];
+	heap32[(g0)] = r0;
+	__FUNCTION_TABLE__[(r8)>>2](i7);
+	r9 = r_g0 >> 2;
+	r9 = heap32[(r9)];
+	r9 = r9 >> 2;
+	r9 = heap32[(r9+12)];
+	heap32[(g0)] = r_g0;
+	__FUNCTION_TABLE__[(r9)>>2](i7);
+	r8 = r_g0;
+	r9 = heap32[(r1)];
+	r9 = r9 >> 2;
+	r9 = heap32[(r9+4)];
+	heap32[(g0)] = r0;
+	__FUNCTION_TABLE__[(r9)>>2](i7);
+	r10 = r_g0 >> 2;
+	r10 = heap32[(r10)];
+	r10 = r10 >> 2;
+	r10 = heap32[(r10+12)];
+	heap32[(g0)] = r_g0;
+	__FUNCTION_TABLE__[(r10)>>2](i7);
+	r9 = r_g0;
+	r10 = r2 >> 2;
+	f0 = heapFloat[(r10+8)];
+	heapFloat[(fp+-191)] = f0;
+	f1 =                         0;
+	heapFloat[(fp+-192)] = f1;
+_7: do {
+if(!(f0 <=f1)) //_LBB669_52
+{
+	r8 = r8 >>> 11;
+	r9 = r9 >>> 12;
+	r8 = r8 & 1;
+	r9 = r9 & 1;
+	r10 = r2 >> 2;
+	r11 = heap32[(r10+1)];
+	if(r11 >4) //_LBB669_8
+{
+	if(r11 ==5) //_LBB669_20
+{
+	r11 = heap32[(r10+5)];
+	r11 = r11 >> 2;
+	f0 = heapFloat[(r11+1)];
+	f1 = heapFloat[(r10+72)];
+	f2 = heapFloat[(r11+2)];
+	f3 = heapFloat[(r10+76)];
+	f4 = heapFloat[(r10+73)];
+	f5 = heapFloat[(r10+77)];
+	f6 = f1*f0;
+	f7 = f3*f2;
+	f8 = heapFloat[(r11+3)];
+	f9 = heapFloat[(r10+80)];
+	f10 = heapFloat[(r11+9)];
+	f11 = heapFloat[(r10+84)];
+	f12 = heapFloat[(r11+5)];
+	f13 = heapFloat[(r10+74)];
+	f14 = heapFloat[(r11+10)];
+	f15 = heapFloat[(r10+85)];
+	f16 = heapFloat[(r11+6)];
+	f17 = heapFloat[(r10+78)];
+	f18 = heapFloat[(r11+11)];
+	f19 = heapFloat[(r10+86)];
+	f20 = heapFloat[(r11+7)];
+	f21 = heapFloat[(r10+82)];
+	f22 = heapFloat[(r10+81)];
+	f23 = f4*f0;
+	f24 = f5*f2;
+	f6 = f6+f7;
+	f7 = f9*f8;
+	f25 = heapFloat[(r11+15)];
+	f26 = heapFloat[(r11+14)];
+	f27 = heapFloat[(r11+13)];
+	f28 = f13*f0;
+	f29 = f17*f2;
+	f23 = f23+f24;
+	f24 = f22*f8;
+	f6 = f6+f7;
+	r11 = r4 >> 2;
+	f7 = f28+f29;
+	f28 = f21*f8;
+	f23 = f23+f24;
+	heapFloat[(fp+-98)] = f6;
+	f6 = f1*f12;
+	f24 = f3*f16;
+	f7 = f7+f28;
+	heapFloat[(r11+1)] = f23;
+	heapFloat[(r11+2)] = f7;
+	f7 = f4*f12;
+	f23 = f5*f16;
+	f6 = f6+f24;
+	f24 = f9*f20;
+	f28 = f13*f12;
+	f29 = f17*f16;
+	f7 = f7+f23;
+	f23 = f22*f20;
+	f6 = f6+f24;
+	heap32[(r11+3)] = 0;
+	f24 = f28+f29;
+	f28 = f21*f20;
+	f7 = f7+f23;
+	heapFloat[(r11+4)] = f6;
+	f1 = f1*f10;
+	f3 = f3*f14;
+	f6 = f24+f28;
+	heapFloat[(r11+5)] = f7;
+	heapFloat[(r11+6)] = f6;
+	f4 = f4*f10;
+	f5 = f5*f14;
+	f1 = f1+f3;
+	f3 = f9*f18;
+	f6 = f13*f10;
+	f7 = f17*f14;
+	f4 = f4+f5;
+	f5 = f22*f18;
+	f1 = f1+f3;
+	heap32[(r11+7)] = 0;
+	f0 = f0*f11;
+	f2 = f2*f15;
+	f3 = f6+f7;
+	f6 = f21*f18;
+	f4 = f4+f5;
+	heapFloat[(r11+8)] = f1;
+	f1 = f12*f11;
+	f5 = f16*f15;
+	f0 = f0+f2;
+	f2 = f8*f19;
+	f3 = f3+f6;
+	heapFloat[(r11+9)] = f4;
+	f0 = f0+f2;
+	heapFloat[(r11+10)] = f3;
+	f2 = f10*f11;
+	f3 = f14*f15;
+	f1 = f1+f5;
+	f4 = f20*f19;
+	f1 = f1+f4;
+	f2 = f2+f3;
+	f3 = f18*f19;
+	f0 = f0+f27;
+	heap32[(r11+11)] = 0;
+	f2 = f2+f3;
+	f1 = f1+f26;
+	heapFloat[(r11+12)] = f0;
+	f0 = f2+f25;
+	heapFloat[(r11+13)] = f1;
+	heapFloat[(r11+14)] = f0;
+	heap32[(r11+15)] = 0;
+if(!(r8 ==0)) //_LBB669_22
+{
+	r12 = heap32[(r1)];
+	r12 = r12 >> 2;
+	r12 = heap32[(r12+4)];
+	heap32[(g0)] = r0;
+	__FUNCTION_TABLE__[(r12)>>2](i7);
+	r13 = r_g0 >> 2;
+	r13 = heap32[(r13)];
+	r13 = r13 >> 2;
+	r13 = heap32[(r13+14)];
+	heap32[(g0)] = r_g0;
+	heap32[(g0+1)] = r4;
+	f0 = heapFloat[(fp+-191)];
+	heapFloat[(g0+2)] = f0;
+	__FUNCTION_TABLE__[(r13)>>2](i7);
+}
+	r12 = heap32[(r10+6)];
+	r12 = r12 >> 2;
+	f0 = heapFloat[(r12+1)];
+	f1 = heapFloat[(r10+88)];
+	f2 = heapFloat[(r12+2)];
+	f3 = heapFloat[(r10+92)];
+	f4 = heapFloat[(r10+89)];
+	f5 = heapFloat[(r10+93)];
+	f6 = f1*f0;
+	f7 = f3*f2;
+	f8 = heapFloat[(r12+3)];
+	f9 = heapFloat[(r10+96)];
+	f10 = heapFloat[(r12+9)];
+	f11 = heapFloat[(r10+100)];
+	f12 = heapFloat[(r12+5)];
+	f13 = heapFloat[(r10+90)];
+	f14 = heapFloat[(r12+10)];
+	f15 = heapFloat[(r10+101)];
+	f16 = heapFloat[(r12+6)];
+	f17 = heapFloat[(r10+94)];
+	f18 = heapFloat[(r12+11)];
+	f19 = heapFloat[(r10+102)];
+	f20 = heapFloat[(r12+7)];
+	f21 = heapFloat[(r10+98)];
+	f22 = heapFloat[(r10+97)];
+	f23 = f4*f0;
+	f24 = f5*f2;
+	f6 = f6+f7;
+	f7 = f9*f8;
+	f25 = heapFloat[(r12+15)];
+	f26 = heapFloat[(r12+14)];
+	f27 = heapFloat[(r12+13)];
+	f28 = f13*f0;
+	f29 = f17*f2;
+	f23 = f23+f24;
+	f24 = f22*f8;
+	f6 = f6+f7;
+	f7 = f28+f29;
+	f28 = f21*f8;
+	f23 = f23+f24;
+	heapFloat[(fp+-98)] = f6;
+	f6 = f1*f12;
+	f24 = f3*f16;
+	f7 = f7+f28;
+	heapFloat[(r11+1)] = f23;
+	heapFloat[(r11+2)] = f7;
+	f7 = f4*f12;
+	f23 = f5*f16;
+	f6 = f6+f24;
+	f24 = f9*f20;
+	f28 = f13*f12;
+	f29 = f17*f16;
+	f7 = f7+f23;
+	f23 = f22*f20;
+	f6 = f6+f24;
+	heap32[(r11+3)] = 0;
+	f24 = f28+f29;
+	f28 = f21*f20;
+	f7 = f7+f23;
+	heapFloat[(r11+4)] = f6;
+	f1 = f1*f10;
+	f3 = f3*f14;
+	f6 = f24+f28;
+	heapFloat[(r11+5)] = f7;
+	heapFloat[(r11+6)] = f6;
+	f4 = f4*f10;
+	f5 = f5*f14;
+	f1 = f1+f3;
+	f3 = f9*f18;
+	f6 = f13*f10;
+	f7 = f17*f14;
+	f4 = f4+f5;
+	f5 = f22*f18;
+	f1 = f1+f3;
+	heap32[(r11+7)] = 0;
+	f0 = f0*f11;
+	f2 = f2*f15;
+	f3 = f6+f7;
+	f6 = f21*f18;
+	f4 = f4+f5;
+	heapFloat[(r11+8)] = f1;
+	f1 = f12*f11;
+	f5 = f16*f15;
+	f0 = f0+f2;
+	f2 = f8*f19;
+	f3 = f3+f6;
+	heapFloat[(r11+9)] = f4;
+	f0 = f0+f2;
+	heapFloat[(r11+10)] = f3;
+	f2 = f10*f11;
+	f3 = f14*f15;
+	f1 = f1+f5;
+	f4 = f20*f19;
+	f1 = f1+f4;
+	f2 = f2+f3;
+	f3 = f18*f19;
+	f0 = f0+f27;
+	heap32[(r11+11)] = 0;
+	f2 = f2+f3;
+	f1 = f1+f26;
+	heapFloat[(r11+12)] = f0;
+	f0 = f2+f25;
+	heapFloat[(r11+13)] = f1;
+	heapFloat[(r11+14)] = f0;
+	heap32[(r11+15)] = 0;
+if(!(r8 ==0)) //_LBB669_24
+{
+	r8 = heap32[(r1)];
+	r8 = r8 >> 2;
+	r8 = heap32[(r8+4)];
+	heap32[(g0)] = r0;
+	__FUNCTION_TABLE__[(r8)>>2](i7);
+	r12 = r_g0 >> 2;
+	r12 = heap32[(r12)];
+	r12 = r12 >> 2;
+	r12 = heap32[(r12+14)];
+	heap32[(g0)] = r_g0;
+	heap32[(g0+1)] = r4;
+	f0 = heapFloat[(fp+-191)];
+	heapFloat[(g0+2)] = f0;
+	__FUNCTION_TABLE__[(r12)>>2](i7);
+}
+	if(r9 ==0) //_LBB669_52
+{
+break _7;
+}
+else{
+	r8 = sp + -408;
+	heap32[(g0)] = r8;
+	heap32[(g0+1)] = r2;
+	heap32[(g0+2)] = 1086506843;
+	f0 = heapFloat[(fp+-191)];
+	heapFloat[(g0+3)] = f0;
+	_ZNK21btConeTwistConstraint16GetPointForAngleEff(i7);
+	r9 = r8 >> 2;
+	f0 = heapFloat[(fp+-102)];
+	f1 = heapFloat[(fp+-98)];
+	f2 = heapFloat[(r9+1)];
+	f3 = heapFloat[(r11+1)];
+	f4 = heapFloat[(r11+4)];
+	f5 = heapFloat[(r11+5)];
+	f1 = f1*f0;
+	f3 = f3*f2;
+	f6 = heapFloat[(r9+2)];
+	f7 = heapFloat[(r11+2)];
+	f8 = heapFloat[(r11+8)];
+	f9 = heapFloat[(r11+9)];
+	f10 = heapFloat[(r11+6)];
+	f4 = f4*f0;
+	f5 = f5*f2;
+	f1 = f1+f3;
+	f3 = f7*f6;
+	f7 = heapFloat[(r11+10)];
+	f0 = f8*f0;
+	f2 = f9*f2;
+	f4 = f4+f5;
+	f5 = f10*f6;
+	f1 = f1+f3;
+	f3 = heapFloat[(r11+12)];
+	f8 = heapFloat[(r11+14)];
+	f9 = heapFloat[(r11+13)];
+	f4 = f4+f5;
+	f0 = f0+f2;
+	f2 = f7*f6;
+	f1 = f1+f3;
+	f0 = f0+f2;
+	f2 = f4+f9;
+	heapFloat[(fp+-102)] = f1;
+	f0 = f0+f8;
+	heapFloat[(r9+1)] = f2;
+	r12 = 0;
+	heapFloat[(r9+2)] = f0;
+	heap32[(r9+3)] = 0;
+_20: while(true){
+	f0 = r12; //fitos r12, f0
+	f1 =        6.2831850051879883;
+	f0 = f0*f1;
+	f1 =                        32;
+	r13 = sp + -472;
+	f0 = f0/f1;
+	heap32[(g0)] = r13;
+	heap32[(g0+1)] = r2;
+	heapFloat[(g0+2)] = f0;
+	f0 = heapFloat[(fp+-191)];
+	heapFloat[(g0+3)] = f0;
+	_ZNK21btConeTwistConstraint16GetPointForAngleEff(i7);
+	r14 = r13 >> 2;
+	f0 = heapFloat[(fp+-118)];
+	f1 = heapFloat[(fp+-98)];
+	f2 = heapFloat[(r14+1)];
+	f3 = heapFloat[(r11+1)];
+	f4 = heapFloat[(r11+4)];
+	f5 = heapFloat[(r11+5)];
+	f1 = f1*f0;
+	f3 = f3*f2;
+	f6 = heapFloat[(r14+2)];
+	f7 = heapFloat[(r11+2)];
+	f8 = heapFloat[(r11+8)];
+	f9 = heapFloat[(r11+9)];
+	f10 = heapFloat[(r11+6)];
+	f4 = f4*f0;
+	f5 = f5*f2;
+	f1 = f1+f3;
+	f3 = f7*f6;
+	f7 = heapFloat[(r11+10)];
+	f0 = f8*f0;
+	f2 = f9*f2;
+	f4 = f4+f5;
+	f5 = f10*f6;
+	f1 = f1+f3;
+	f3 = heapFloat[(r11+12)];
+	f8 = heapFloat[(r11+14)];
+	f9 = heapFloat[(r11+13)];
+	f4 = f4+f5;
+	f0 = f0+f2;
+	f2 = f7*f6;
+	f1 = f1+f3;
+	f0 = f0+f2;
+	f2 = f4+f9;
+	heapFloat[(fp+-118)] = f1;
+	f0 = f0+f8;
+	heapFloat[(r14+1)] = f2;
+	heapFloat[(r14+2)] = f0;
+	heap32[(r14+3)] = 0;
+	r15 = heap32[(r1)];
+	r15 = r15 >> 2;
+	r15 = heap32[(r15+4)];
+	heap32[(g0)] = r0;
+	__FUNCTION_TABLE__[(r15)>>2](i7);
+	r16 = r_g0 >> 2;
+	r16 = heap32[(r16)];
+	r16 = r16 >> 2;
+	r16 = heap32[(r16+2)];
+	r17 = sp + -152;
+	r18 = r17 >> 2;
+	heap32[(fp+-38)] = 0;
+	heap32[(r18+1)] = 0;
+	heap32[(r18+2)] = 0;
+	heap32[(r18+3)] = 0;
+	heap32[(g0)] = r_g0;
+	heap32[(g0+1)] = r8;
+	heap32[(g0+2)] = r13;
+	heap32[(g0+3)] = r17;
+	r15 = r12 & 3;
+	__FUNCTION_TABLE__[(r16)>>2](i7);
+if(!(r15 !=0)) //_LBB669_28
+{
+	r15 = heap32[(r1)];
+	r15 = r15 >> 2;
+	r15 = heap32[(r15+4)];
+	heap32[(g0)] = r0;
+	__FUNCTION_TABLE__[(r15)>>2](i7);
+	r16 = r_g0 >> 2;
+	r16 = heap32[(r16)];
+	r16 = r16 >> 2;
+	r16 = heap32[(r16+2)];
+	r17 = sp + -136;
+	r18 = r17 >> 2;
+	heap32[(fp+-34)] = 0;
+	heap32[(r18+1)] = 0;
+	heap32[(r18+2)] = 0;
+	heap32[(r18+3)] = 0;
+	heap32[(g0)] = r_g0;
+	heap32[(g0+1)] = r6;
+	heap32[(g0+2)] = r13;
+	heap32[(g0+3)] = r17;
+	__FUNCTION_TABLE__[(r16)>>2](i7);
+}
+	heap32[(fp+-102)] = heap32[(fp+-118)];
+	heap32[(r9+1)] = heap32[(r14+1)];
+	r12 = (r12 + 1)|0;
+	heap32[(r9+2)] = heap32[(r14+2)];
+	heap32[(r9+3)] = heap32[(r14+3)];
+if(!(r12 !=32)) //_LBB669_26
+{
+break _20;
+}
+}
+	r2 = heap32[(r10+6)];
+	f0 = heapFloat[(r10+110)];
+	heapFloat[(fp+-193)] = f0;
+	f0 = heapFloat[(r10+125)];
+	heapFloat[(fp+-194)] = f0;
+	r2 = r2 >> 2;
+	f0 = heapFloat[(r2+84)];
+	f1 = heapFloat[(fp+-192)];
+	if(f0 <=f1) //_LBB669_31
+{
+	r2 = heap32[(r10+5)];
+	r2 = r2 >> 2;
+	f0 = heapFloat[(r10+84)];
+	f1 = heapFloat[(r2+9)];
+	f2 = heapFloat[(r2+5)];
+	f3 = heapFloat[(r2+1)];
+	f4 = heapFloat[(r10+85)];
+	f5 = heapFloat[(r2+10)];
+	f6 = heapFloat[(r2+6)];
+	f8 = heapFloat[(r2+2)];
+	f12 = heapFloat[(r10+74)];
+	f13 = heapFloat[(r10+78)];
+	f14 = heapFloat[(r10+73)];
+	f15 = heapFloat[(r10+77)];
+	f7 = heapFloat[(r10+72)];
+	f9 = heapFloat[(r10+76)];
+	f10 = f1*f0;
+	f11 = f5*f4;
+	f16 = f2*f0;
+	f17 = f6*f4;
+	f0 = f3*f0;
+	f4 = f8*f4;
+	f18 = heapFloat[(r10+86)];
+	f19 = heapFloat[(r2+11)];
+	f20 = heapFloat[(r2+7)];
+	f21 = heapFloat[(r2+3)];
+	f22 = heapFloat[(r10+82)];
+	f23 = heapFloat[(r10+81)];
+	f24 = heapFloat[(r10+80)];
+	f10 = f10+f11;
+	f11 = f19*f18;
+	f16 = f16+f17;
+	f17 = f20*f18;
+	f0 = f0+f4;
+	heapFloat[(fp+-192)] = f0;
+	f4 = f21*f18;
+	f18 = f12*f1;
+	f25 = f13*f5;
+	f26 = f14*f1;
+	f27 = f15*f5;
+	f1 = f7*f1;
+	f5 = f9*f5;
+	f28 = f12*f2;
+	f29 = f13*f6;
+	f30 = f14*f2;
+	f0 = f15*f6;
+	f2 = f7*f2;
+	f6 = f9*f6;
+	f12 = f12*f3;
+	f13 = f13*f8;
+	f14 = f14*f3;
+	f15 = f15*f8;
+	f3 = f7*f3;
+	f8 = f9*f8;
+	f7 = f10+f11;
+	f9 = heapFloat[(r2+15)];
+	f10 = f16+f17;
+	f11 = heapFloat[(r2+14)];
+	f16 = heapFloat[(fp+-192)];
+	f4 = f16+f4;
+	f16 = heapFloat[(r2+13)];
+	f17 = f18+f25;
+	f18 = f22*f19;
+	f25 = f26+f27;
+	f26 = f23*f19;
+	f1 = f1+f5;
+	f5 = f24*f19;
+	f19 = f28+f29;
+	f27 = f22*f20;
+	f0 = f30+f0;
+	f28 = f23*f20;
+	f2 = f2+f6;
+	f6 = f24*f20;
+	f20 = f12+f13;
+	f22 = f22*f21;
+	f29 = f14+f15;
+	f23 = f23*f21;
+	f3 = f3+f8;
+	f21 = f24*f21;
+	f12 = f7+f9;
+	f13 = f10+f11;
+	f4 = f4+f16;
+	f14 = f17+f18;
+	f15 = f25+f26;
+	f1 = f1+f5;
+	f5 = f19+f27;
+	f0 = f0+f28;
+	f2 = f2+f6;
+	f6 = f20+f22;
+	f8 = f29+f23;
+	f3 = f3+f21;
+}
+else{
+	f0 = heapFloat[(r10+100)];
+	f1 = heapFloat[(r2+9)];
+	f2 = heapFloat[(r2+5)];
+	f3 = heapFloat[(r2+1)];
+	f4 = heapFloat[(r10+101)];
+	f5 = heapFloat[(r2+10)];
+	f6 = heapFloat[(r2+6)];
+	f7 = heapFloat[(r2+2)];
+	f8 = heapFloat[(r10+90)];
+	f9 = heapFloat[(r10+94)];
+	f10 = heapFloat[(r10+89)];
+	f11 = heapFloat[(r10+93)];
+	f12 = heapFloat[(r10+88)];
+	f13 = heapFloat[(r10+92)];
+	f14 = f1*f0;
+	f15 = f5*f4;
+	f16 = f2*f0;
+	f17 = f6*f4;
+	f0 = f3*f0;
+	f4 = f7*f4;
+	f18 = heapFloat[(r10+102)];
+	f19 = heapFloat[(r2+11)];
+	f20 = heapFloat[(r2+7)];
+	f21 = heapFloat[(r2+3)];
+	f22 = heapFloat[(r10+98)];
+	f23 = heapFloat[(r10+97)];
+	f24 = heapFloat[(r10+96)];
+	f14 = f14+f15;
+	f15 = f19*f18;
+	f16 = f16+f17;
+	f17 = f20*f18;
+	f0 = f0+f4;
+	heapFloat[(fp+-192)] = f0;
+	f4 = f21*f18;
+	f18 = f8*f1;
+	f25 = f9*f5;
+	f26 = f10*f1;
+	f27 = f11*f5;
+	f1 = f12*f1;
+	f5 = f13*f5;
+	f28 = f8*f2;
+	f29 = f9*f6;
+	f30 = f10*f2;
+	f0 = f11*f6;
+	f2 = f12*f2;
+	f6 = f13*f6;
+	f8 = f8*f3;
+	f9 = f9*f7;
+	f10 = f10*f3;
+	f11 = f11*f7;
+	f3 = f12*f3;
+	f7 = f13*f7;
+	f12 = f14+f15;
+	f13 = heapFloat[(r2+15)];
+	f14 = f16+f17;
+	f15 = heapFloat[(r2+14)];
+	f16 = heapFloat[(fp+-192)];
+	f4 = f16+f4;
+	f16 = heapFloat[(r2+13)];
+	f17 = f18+f25;
+	f18 = f22*f19;
+	f25 = f26+f27;
+	f26 = f23*f19;
+	f1 = f1+f5;
+	f5 = f24*f19;
+	f19 = f28+f29;
+	f27 = f22*f20;
+	f0 = f30+f0;
+	f28 = f23*f20;
+	f2 = f2+f6;
+	f6 = f24*f20;
+	f8 = f8+f9;
+	f9 = f22*f21;
+	f10 = f10+f11;
+	f11 = f23*f21;
+	f3 = f3+f7;
+	f7 = f24*f21;
+	f12 = f12+f13;
+	f13 = f14+f15;
+	f4 = f4+f16;
+	f14 = f17+f18;
+	f15 = f25+f26;
+	f1 = f1+f5;
+	f5 = f19+f27;
+	f0 = f0+f28;
+	f2 = f2+f6;
+	f6 = f8+f9;
+	f8 = f10+f11;
+	f3 = f3+f7;
+}
+	heapFloat[(fp+-98)] = f3;
+	heapFloat[(r11+1)] = f8;
+	heapFloat[(r11+2)] = f6;
+	heap32[(r11+3)] = 0;
+	heapFloat[(r11+4)] = f2;
+	heapFloat[(r11+5)] = f0;
+	heapFloat[(r11+6)] = f5;
+	heap32[(r11+7)] = 0;
+	heapFloat[(r11+8)] = f1;
+	heapFloat[(r11+9)] = f15;
+	heapFloat[(r11+10)] = f14;
+	heap32[(r11+11)] = 0;
+	heapFloat[(r11+12)] = f4;
+	heapFloat[(r11+13)] = f13;
+	heapFloat[(r11+14)] = f12;
+	r2 = sp + -424;
+	heap32[(r11+15)] = 0;
+	r8 = r2 >> 2;
+	heapFloat[(fp+-106)] = f4;
+	heapFloat[(r8+1)] = f13;
+	heapFloat[(r8+2)] = f12;
+	r9 = sp + -440;
+	heap32[(r8+3)] = 0;
+	r8 = r9 >> 2;
+	heapFloat[(fp+-110)] = f3;
+	heapFloat[(r8+1)] = f2;
+	heapFloat[(r8+2)] = f1;
+	r10 = sp + -456;
+	heap32[(r8+3)] = 0;
+	r8 = r10 >> 2;
+	heapFloat[(fp+-114)] = f8;
+	heapFloat[(r8+1)] = f0;
+	heapFloat[(r8+2)] = f15;
+	heap32[(r8+3)] = 0;
+	r8 = heap32[(r1)];
+	r8 = r8 >> 2;
+	r8 = heap32[(r8+4)];
+	heap32[(g0)] = r0;
+	__FUNCTION_TABLE__[(r8)>>2](i7);
+	r11 = r_g0 >> 2;
+	r11 = heap32[(r11)];
+	r11 = r11 >> 2;
+	r11 = heap32[(r11+15)];
+	r12 = sp + -120;
+	r13 = r12 >> 2;
+	heap32[(fp+-30)] = 0;
+	heap32[(r13+1)] = 0;
+	heap32[(r13+2)] = 0;
+	heap32[(r13+3)] = 0;
+	f0 = heapFloat[(fp+-194)];
+	f1 = -f0;
+	f2 = heapFloat[(fp+-193)];
+	f1 = f1-f2;
+	f0 = f2-f0;
+	heap32[(g0)] = r_g0;
+	heap32[(g0+1)] = r2;
+	heap32[(g0+2)] = r9;
+	heap32[(g0+3)] = r10;
+	f2 = heapFloat[(fp+-191)];
+	heapFloat[(g0+4)] = f2;
+	heapFloat[(g0+5)] = f2;
+	heapFloat[(g0+6)] = f1;
+	heapFloat[(g0+7)] = f0;
+	heap32[(g0+8)] = r12;
+	heap32[(g0+9)] = 1;
+	heap32[(g0+10)] = 1092616192;
+	__FUNCTION_TABLE__[(r11)>>2](i7);
+}
+}
+else{
+	if(r11 ==6) //_LBB669_33
+{
+	r11 = sp + -536;
+	r12 = r11 >> 2;
+	heap32[(fp+-134)] = heap32[(r10+263)];
+	heap32[(r12+1)] = heap32[(r10+264)];
+	heap32[(r12+2)] = heap32[(r10+265)];
+	heap32[(r12+3)] = heap32[(r10+266)];
+	heap32[(r12+4)] = heap32[(r10+267)];
+	heap32[(r12+5)] = heap32[(r10+268)];
+	heap32[(r12+6)] = heap32[(r10+269)];
+	heap32[(r12+7)] = heap32[(r10+270)];
+	heap32[(r12+8)] = heap32[(r10+271)];
+	heap32[(r12+9)] = heap32[(r10+272)];
+	heap32[(r12+10)] = heap32[(r10+273)];
+	heap32[(r12+11)] = heap32[(r10+274)];
+	heap32[(r12+12)] = heap32[(r10+275)];
+	heap32[(r12+13)] = heap32[(r10+276)];
+	heap32[(r12+14)] = heap32[(r10+277)];
+	heap32[(r12+15)] = heap32[(r10+278)];
+if(!(r8 ==0)) //_LBB669_35
+{
+	r13 = heap32[(r1)];
+	r13 = r13 >> 2;
+	r13 = heap32[(r13+4)];
+	heap32[(g0)] = r0;
+	__FUNCTION_TABLE__[(r13)>>2](i7);
+	r14 = r_g0 >> 2;
+	r14 = heap32[(r14)];
+	r14 = r14 >> 2;
+	r14 = heap32[(r14+14)];
+	heap32[(g0)] = r_g0;
+	heap32[(g0+1)] = r11;
+	f0 = heapFloat[(fp+-191)];
+	heapFloat[(g0+2)] = f0;
+	__FUNCTION_TABLE__[(r14)>>2](i7);
+}
+	heap32[(fp+-134)] = heap32[(r10+279)];
+	heap32[(r12+1)] = heap32[(r10+280)];
+	heap32[(r12+2)] = heap32[(r10+281)];
+	heap32[(r12+3)] = heap32[(r10+282)];
+	heap32[(r12+4)] = heap32[(r10+283)];
+	heap32[(r12+5)] = heap32[(r10+284)];
+	heap32[(r12+6)] = heap32[(r10+285)];
+	heap32[(r12+7)] = heap32[(r10+286)];
+	heap32[(r12+8)] = heap32[(r10+287)];
+	heap32[(r12+9)] = heap32[(r10+288)];
+	heap32[(r12+10)] = heap32[(r10+289)];
+	heap32[(r12+11)] = heap32[(r10+290)];
+	heap32[(r12+12)] = heap32[(r10+291)];
+	heap32[(r12+13)] = heap32[(r10+292)];
+	heap32[(r12+14)] = heap32[(r10+293)];
+	heap32[(r12+15)] = heap32[(r10+294)];
+if(!(r8 ==0)) //_LBB669_37
+{
+	r8 = heap32[(r1)];
+	r8 = r8 >> 2;
+	r8 = heap32[(r8+4)];
+	heap32[(g0)] = r0;
+	__FUNCTION_TABLE__[(r8)>>2](i7);
+	r13 = r_g0 >> 2;
+	r13 = heap32[(r13)];
+	r13 = r13 >> 2;
+	r13 = heap32[(r13+14)];
+	heap32[(g0)] = r_g0;
+	heap32[(g0+1)] = r11;
+	f0 = heapFloat[(fp+-191)];
+	heapFloat[(g0+2)] = f0;
+	__FUNCTION_TABLE__[(r13)>>2](i7);
+}
+	if(r9 ==0) //_LBB669_52
+{
+break _7;
+}
+else{
+	r2 = (r2 + 1164)|0;
+	f0 = heapFloat[(r10+263)];
+	heapFloat[(fp+-134)] = f0;
+	heap32[(r12+1)] = heap32[(r10+264)];
+	f1 = heapFloat[(r10+265)];
+	heapFloat[(r12+2)] = f1;
+	heap32[(r12+3)] = heap32[(r10+266)];
+	f2 = heapFloat[(r10+267)];
+	heapFloat[(r12+4)] = f2;
+	heap32[(r12+5)] = heap32[(r10+268)];
+	f3 = heapFloat[(r10+269)];
+	heapFloat[(r12+6)] = f3;
+	heap32[(r12+7)] = heap32[(r10+270)];
+	f4 = heapFloat[(r10+271)];
+	heapFloat[(r12+8)] = f4;
+	heap32[(r12+9)] = heap32[(r10+272)];
+	f5 = heapFloat[(r10+273)];
+	heapFloat[(r12+10)] = f5;
+	heap32[(r12+11)] = heap32[(r10+274)];
+	heap32[(r12+12)] = heap32[(r10+275)];
+	heap32[(r12+13)] = heap32[(r10+276)];
+	heap32[(r12+14)] = heap32[(r10+277)];
+	r8 = sp + -552;
+	heap32[(r12+15)] = heap32[(r10+278)];
+	r9 = r8 >> 2;
+	heapFloat[(fp+-138)] = f1;
+	heapFloat[(r9+1)] = f3;
+	heapFloat[(r9+2)] = f5;
+	heap32[(r9+3)] = 0;
+	r9 = sp + -568;
+	heapFloat[(fp+-142)] = f0;
+	r13 = r9 >> 2;
+	heapFloat[(r13+1)] = f2;
+	heapFloat[(r13+2)] = f4;
+	heap32[(r13+3)] = 0;
+	r14 = heap32[(r1)];
+	r14 = r14 >> 2;
+	r14 = heap32[(r14+4)];
+	f0 = heapFloat[(r10+230)];
+	f1 = heapFloat[(r10+231)];
+	f2 = heapFloat[(r10+246)];
+	f3 = heapFloat[(r10+247)];
+	heap32[(g0)] = r0;
+	__FUNCTION_TABLE__[(r14)>>2](i7);
+	r15 = r_g0 >> 2;
+	r15 = heap32[(r15)];
+	r15 = r15 >> 2;
+	r15 = heap32[(r15+16)];
+	r16 = sp + -104;
+	r17 = r16 >> 2;
+	heap32[(fp+-26)] = 0;
+	heap32[(r17+1)] = 0;
+	heap32[(r17+2)] = 0;
+	heap32[(r17+3)] = 0;
+	f4 =       0.89999997615814209;
+	f5 = heapFloat[(fp+-191)];
+	f4 = f5*f4;
+	heap32[(g0)] = r_g0;
+	heap32[(g0+1)] = r2;
+	heap32[(g0+2)] = r8;
+	heap32[(g0+3)] = r9;
+	heapFloat[(g0+4)] = f4;
+	heapFloat[(g0+5)] = f0;
+	heapFloat[(g0+6)] = f1;
+	heapFloat[(g0+7)] = f2;
+	heapFloat[(g0+8)] = f3;
+	heap32[(g0+9)] = r16;
+	heap32[(g0+10)] = 1092616192;
+	__FUNCTION_TABLE__[(r15)>>2](i7);
+	f0 = heapFloat[(r12+9)];
+	f1 = heapFloat[(r12+5)];
+	heap32[(fp+-142)] = heap32[(r12+1)];
+	heapFloat[(r13+1)] = f1;
+	heapFloat[(r13+2)] = f0;
+	heap32[(r13+3)] = 0;
+	f0 = heapFloat[(r10+296)];
+	f1 = heapFloat[(r10+297)];
+	heapFloat[(g0)] = f0;
+	cosf(i7);
+	f2 = f_g0;
+	heapFloat[(g0)] = f0;
+	sinf(i7);
+	f0 = f_g0;
+	heapFloat[(g0)] = f1;
+	cosf(i7);
+	f3 = f_g0;
+	heapFloat[(g0)] = f1;
+	sinf(i7);
+	f4 = heapFloat[(fp+-142)];
+	f5 = f2*f3;
+	f6 = heapFloat[(r13+1)];
+	f7 = f2*f_g0;
+	f8 = heapFloat[(r13+2)];
+	f5 = f5*f4;
+	f7 = f7*f6;
+	f9 = f3*f0;
+	f10 = f_g0*f0;
+	f5 = f5+f7;
+	f0 = f8*f0;
+	r8 = sp + -584;
+	f7 = f9*f4;
+	f9 = f10*f6;
+	f3 = f6*f3;
+	f1 = f4*f_g0;
+	f0 = f5-f0;
+	r9 = r8 >> 2;
+	f4 = f7+f9;
+	f2 = f8*f2;
+	f1 = f3-f1;
+	heapFloat[(fp+-146)] = f0;
+	f0 = f4+f2;
+	heapFloat[(r9+1)] = f1;
+	heapFloat[(r9+2)] = f0;
+	f0 = heapFloat[(r10+279)];
+	heapFloat[(fp+-134)] = f0;
+	heap32[(r12+1)] = heap32[(r10+280)];
+	heap32[(r12+2)] = heap32[(r10+281)];
+	heap32[(r12+3)] = heap32[(r10+282)];
+	f1 = heapFloat[(r10+283)];
+	heapFloat[(r12+4)] = f1;
+	heap32[(r12+5)] = heap32[(r10+284)];
+	heap32[(r12+6)] = heap32[(r10+285)];
+	heap32[(r12+7)] = heap32[(r10+286)];
+	f2 = heapFloat[(r10+287)];
+	heapFloat[(r12+8)] = f2;
+	heap32[(r12+9)] = heap32[(r10+288)];
+	heap32[(r12+10)] = heap32[(r10+289)];
+	heap32[(r12+11)] = heap32[(r10+290)];
+	heap32[(r12+12)] = heap32[(r10+291)];
+	heap32[(r12+13)] = heap32[(r10+292)];
+	heap32[(r12+14)] = heap32[(r10+293)];
+	r9 = sp + -600;
+	f0 = -f0;
+	heap32[(r12+15)] = heap32[(r10+294)];
+	r13 = r9 >> 2;
+	f1 = -f1;
+	heapFloat[(fp+-150)] = f0;
+	f0 = -f2;
+	heapFloat[(r13+1)] = f1;
+	heapFloat[(r13+2)] = f0;
+	heap32[(r13+3)] = 0;
+	f0 = heapFloat[(r10+214)];
+	f1 = heapFloat[(r10+215)];
+	if(f0 <=f1) //_LBB669_40
+{
+if(!(f0 >=f1)) //_LBB669_42
+{
+	r13 = heap32[(r1)];
+	r13 = r13 >> 2;
+	r13 = heap32[(r13+4)];
+	heap32[(g0)] = r0;
+	__FUNCTION_TABLE__[(r13)>>2](i7);
+	r14 = r_g0 >> 2;
+	r14 = heap32[(r14)];
+	r14 = r14 >> 2;
+	r14 = heap32[(r14+15)];
+	r15 = sp + -72;
+	r16 = r15 >> 2;
+	heap32[(fp+-18)] = 0;
+	heap32[(r16+1)] = 0;
+	heap32[(r16+2)] = 0;
+	heap32[(r16+3)] = 0;
+	heap32[(g0)] = r_g0;
+	heap32[(g0+1)] = r2;
+	heap32[(g0+2)] = r9;
+	heap32[(g0+3)] = r8;
+	f2 = heapFloat[(fp+-191)];
+	heapFloat[(g0+4)] = f2;
+	heapFloat[(g0+5)] = f2;
+	heapFloat[(g0+6)] = f0;
+	heapFloat[(g0+7)] = f1;
+	heap32[(g0+8)] = r15;
+	heap32[(g0+9)] = 1;
+	heap32[(g0+10)] = 1092616192;
+	__FUNCTION_TABLE__[(r14)>>2](i7);
+}
+}
+else{
+	r13 = heap32[(r1)];
+	r13 = r13 >> 2;
+	r13 = heap32[(r13+4)];
+	heap32[(g0)] = r0;
+	__FUNCTION_TABLE__[(r13)>>2](i7);
+	r14 = r_g0 >> 2;
+	r14 = heap32[(r14)];
+	r14 = r14 >> 2;
+	r14 = heap32[(r14+15)];
+	r15 = sp + -88;
+	r16 = r15 >> 2;
+	heap32[(fp+-22)] = 0;
+	heap32[(r16+1)] = 0;
+	heap32[(r16+2)] = 0;
+	heap32[(r16+3)] = 0;
+	heap32[(g0)] = r_g0;
+	heap32[(g0+1)] = r2;
+	heap32[(g0+2)] = r9;
+	heap32[(g0+3)] = r8;
+	f0 = heapFloat[(fp+-191)];
+	heapFloat[(g0+4)] = f0;
+	heapFloat[(g0+5)] = f0;
+	heap32[(g0+6)] = -1068953637;
+	heap32[(g0+7)] = 1078530011;
+	heap32[(g0+8)] = r15;
+	heap32[(g0+9)] = 0;
+	heap32[(g0+10)] = 1092616192;
+	__FUNCTION_TABLE__[(r14)>>2](i7);
+}
+	heap32[(fp+-134)] = heap32[(r10+263)];
+	heap32[(r12+1)] = heap32[(r10+264)];
+	heap32[(r12+2)] = heap32[(r10+265)];
+	heap32[(r12+3)] = heap32[(r10+266)];
+	heap32[(r12+4)] = heap32[(r10+267)];
+	heap32[(r12+5)] = heap32[(r10+268)];
+	heap32[(r12+6)] = heap32[(r10+269)];
+	heap32[(r12+7)] = heap32[(r10+270)];
+	heap32[(r12+8)] = heap32[(r10+271)];
+	heap32[(r12+9)] = heap32[(r10+272)];
+	heap32[(r12+10)] = heap32[(r10+273)];
+	heap32[(r12+11)] = heap32[(r10+274)];
+	heap32[(r12+12)] = heap32[(r10+275)];
+	heap32[(r12+13)] = heap32[(r10+276)];
+	heap32[(r12+14)] = heap32[(r10+277)];
+	r2 = sp + -616;
+	heap32[(r12+15)] = heap32[(r10+278)];
+	r8 = r2 >> 2;
+	heap32[(fp+-154)] = heap32[(r10+167)];
+	heap32[(r8+1)] = heap32[(r10+168)];
+	heap32[(r8+2)] = heap32[(r10+169)];
+	r9 = sp + -632;
+	heap32[(r8+3)] = heap32[(r10+170)];
+	r8 = r9 >> 2;
+	heap32[(fp+-158)] = heap32[(r10+171)];
+	heap32[(r8+1)] = heap32[(r10+172)];
+	heap32[(r8+2)] = heap32[(r10+173)];
+	heap32[(r8+3)] = heap32[(r10+174)];
+	r8 = heap32[(r1)];
+	r8 = r8 >> 2;
+	r8 = heap32[(r8+4)];
+	heap32[(g0)] = r0;
+	__FUNCTION_TABLE__[(r8)>>2](i7);
+	r10 = r_g0 >> 2;
+	r10 = heap32[(r10)];
+	r10 = r10 >> 2;
+	r10 = heap32[(r10+18)];
+	r12 = sp + -56;
+	r13 = r12 >> 2;
+	heap32[(fp+-14)] = 0;
+	heap32[(r13+1)] = 0;
+	heap32[(r13+2)] = 0;
+	heap32[(r13+3)] = 0;
+	heap32[(g0)] = r_g0;
+	heap32[(g0+1)] = r2;
+	heap32[(g0+2)] = r9;
+	heap32[(g0+3)] = r11;
+	heap32[(g0+4)] = r12;
+	__FUNCTION_TABLE__[(r10)>>2](i7);
+}
+}
+else{
+	if(r11 ==7) //_LBB669_43
+{
+	r11 = sp + -696;
+	r12 = r11 >> 2;
+	heap32[(fp+-174)] = heap32[(r10+203)];
+	heap32[(r12+1)] = heap32[(r10+204)];
+	heap32[(r12+2)] = heap32[(r10+205)];
+	heap32[(r12+3)] = heap32[(r10+206)];
+	heap32[(r12+4)] = heap32[(r10+207)];
+	heap32[(r12+5)] = heap32[(r10+208)];
+	heap32[(r12+6)] = heap32[(r10+209)];
+	heap32[(r12+7)] = heap32[(r10+210)];
+	heap32[(r12+8)] = heap32[(r10+211)];
+	heap32[(r12+9)] = heap32[(r10+212)];
+	heap32[(r12+10)] = heap32[(r10+213)];
+	heap32[(r12+11)] = heap32[(r10+214)];
+	heap32[(r12+12)] = heap32[(r10+215)];
+	heap32[(r12+13)] = heap32[(r10+216)];
+	heap32[(r12+14)] = heap32[(r10+217)];
+	heap32[(r12+15)] = heap32[(r10+218)];
+if(!(r8 ==0)) //_LBB669_45
+{
+	r13 = heap32[(r1)];
+	r13 = r13 >> 2;
+	r13 = heap32[(r13+4)];
+	heap32[(g0)] = r0;
+	__FUNCTION_TABLE__[(r13)>>2](i7);
+	r14 = r_g0 >> 2;
+	r14 = heap32[(r14)];
+	r14 = r14 >> 2;
+	r14 = heap32[(r14+14)];
+	heap32[(g0)] = r_g0;
+	heap32[(g0+1)] = r11;
+	f0 = heapFloat[(fp+-191)];
+	heapFloat[(g0+2)] = f0;
+	__FUNCTION_TABLE__[(r14)>>2](i7);
+}
+	heap32[(fp+-174)] = heap32[(r10+219)];
+	heap32[(r12+1)] = heap32[(r10+220)];
+	heap32[(r12+2)] = heap32[(r10+221)];
+	heap32[(r12+3)] = heap32[(r10+222)];
+	heap32[(r12+4)] = heap32[(r10+223)];
+	heap32[(r12+5)] = heap32[(r10+224)];
+	heap32[(r12+6)] = heap32[(r10+225)];
+	heap32[(r12+7)] = heap32[(r10+226)];
+	heap32[(r12+8)] = heap32[(r10+227)];
+	heap32[(r12+9)] = heap32[(r10+228)];
+	heap32[(r12+10)] = heap32[(r10+229)];
+	heap32[(r12+11)] = heap32[(r10+230)];
+	heap32[(r12+12)] = heap32[(r10+231)];
+	heap32[(r12+13)] = heap32[(r10+232)];
+	heap32[(r12+14)] = heap32[(r10+233)];
+	heap32[(r12+15)] = heap32[(r10+234)];
+if(!(r8 ==0)) //_LBB669_47
+{
+	r8 = heap32[(r1)];
+	r8 = r8 >> 2;
+	r8 = heap32[(r8+4)];
+	heap32[(g0)] = r0;
+	__FUNCTION_TABLE__[(r8)>>2](i7);
+	r12 = r_g0 >> 2;
+	r12 = heap32[(r12)];
+	r12 = r12 >> 2;
+	r12 = heap32[(r12+14)];
+	heap32[(g0)] = r_g0;
+	heap32[(g0+1)] = r11;
+	f0 = heapFloat[(fp+-191)];
+	heapFloat[(g0+2)] = f0;
+	__FUNCTION_TABLE__[(r12)>>2](i7);
+}
+	if(r9 ==0) //_LBB669_52
+{
+break _7;
+}
+else{
+	r8 = (r2 + 924)|0;
+	r9 = heapU8[r2+168];
+	if(r9 ==0) //_LBB669_50
+{
+	r2 = (r2 + 876)|0;
+}
+else{
+	r2 = (r2 + 812)|0;
+}
+	r2 = r2 >> 2;
+	f0 = heapFloat[(r2+1)];
+	f1 = heapFloat[(r10+43)];
+	f2 = heapFloat[(r2)];
+	f3 = heapFloat[(r2+2)];
+	f4 = heapFloat[(r2+5)];
+	f5 = heapFloat[(r2+4)];
+	f6 = f2*f1;
+	f7 = heapFloat[(fp+-192)];
+	f8 = f0*f7;
+	f9 = heapFloat[(r2+6)];
+	f10 = heapFloat[(r2+9)];
+	f11 = heapFloat[(r2+8)];
+	f12 = f5*f1;
+	f13 = f4*f7;
+	f6 = f6+f8;
+	f3 = f3*f7;
+	f14 = heapFloat[(r2+10)];
+	f1 = f11*f1;
+	f15 = f10*f7;
+	f12 = f12+f13;
+	f9 = f9*f7;
+	f6 = f6+f3;
+	f16 = heapFloat[(r2+12)];
+	f17 = heapFloat[(r2+13)];
+	f18 = heapFloat[(r2+14)];
+	r2 = sp + -712;
+	f12 = f12+f9;
+	f1 = f1+f15;
+	f7 = f14*f7;
+	f6 = f6+f16;
+	f1 = f1+f7;
+	r9 = r2 >> 2;
+	f12 = f12+f17;
+	heapFloat[(fp+-178)] = f6;
+	f1 = f1+f18;
+	heapFloat[(r9+1)] = f12;
+	heapFloat[(r9+2)] = f1;
+	heap32[(r9+3)] = 0;
+	f1 = heapFloat[(r10+44)];
+	f6 = f2*f1;
+	f12 = f5*f1;
+	f6 = f6+f8;
+	f1 = f11*f1;
+	f8 = f12+f13;
+	f3 = f6+f3;
+	r9 = sp + -728;
+	f1 = f1+f15;
+	f6 = f8+f9;
+	f3 = f3+f16;
+	f1 = f1+f7;
+	r11 = r9 >> 2;
+	f6 = f6+f17;
+	heapFloat[(fp+-182)] = f3;
+	f1 = f1+f18;
+	heapFloat[(r11+1)] = f6;
+	heapFloat[(r11+2)] = f1;
+	heap32[(r11+3)] = 0;
+	r11 = heap32[(r1)];
+	r11 = r11 >> 2;
+	r11 = heap32[(r11+4)];
+	heap32[(g0)] = r0;
+	__FUNCTION_TABLE__[(r11)>>2](i7);
+	r12 = r_g0 >> 2;
+	r12 = heap32[(r12)];
+	r12 = r12 >> 2;
+	r12 = heap32[(r12+2)];
+	r13 = sp + -40;
+	r14 = r13 >> 2;
+	heap32[(fp+-10)] = 0;
+	heap32[(r14+1)] = 0;
+	heap32[(r14+2)] = 0;
+	heap32[(r14+3)] = 0;
+	heap32[(g0)] = r_g0;
+	heap32[(g0+1)] = r2;
+	heap32[(g0+2)] = r9;
+	heap32[(g0+3)] = r13;
+	__FUNCTION_TABLE__[(r12)>>2](i7);
+	r2 = sp + -744;
+	r9 = r2 >> 2;
+	heapFloat[(fp+-186)] = f2;
+	heapFloat[(r9+1)] = f5;
+	heapFloat[(r9+2)] = f11;
+	r11 = sp + -760;
+	heap32[(r9+3)] = 0;
+	r9 = r11 >> 2;
+	heapFloat[(fp+-190)] = f0;
+	heapFloat[(r9+1)] = f4;
+	heapFloat[(r9+2)] = f10;
+	heap32[(r9+3)] = 0;
+	r9 = heap32[(r1)];
+	r9 = r9 >> 2;
+	r9 = heap32[(r9+4)];
+	f0 = heapFloat[(r10+45)];
+	f1 = heapFloat[(r10+46)];
+	heap32[(g0)] = r0;
+	__FUNCTION_TABLE__[(r9)>>2](i7);
+	r10 = r_g0 >> 2;
+	r10 = heap32[(r10)];
+	r10 = r10 >> 2;
+	r10 = heap32[(r10+15)];
+	r12 = sp + -24;
+	r13 = r12 >> 2;
+	heap32[(fp+-6)] = 0;
+	heap32[(r13+1)] = 0;
+	heap32[(r13+2)] = 0;
+	heap32[(r13+3)] = 0;
+	heap32[(g0)] = r_g0;
+	heap32[(g0+1)] = r8;
+	heap32[(g0+2)] = r2;
+	heap32[(g0+3)] = r11;
+	f2 = heapFloat[(fp+-191)];
+	heapFloat[(g0+4)] = f2;
+	heapFloat[(g0+5)] = f2;
+	heapFloat[(g0+6)] = f0;
+	heapFloat[(g0+7)] = f1;
+	heap32[(g0+8)] = r12;
+	heap32[(g0+9)] = 1;
+	heap32[(g0+10)] = 1092616192;
+	__FUNCTION_TABLE__[(r10)>>2](i7);
+}
+}
+else{
+break _7;
+}
+}
+}
+}
+else{
+	if(r11 ==3) //_LBB669_11
+{
+	r2 = sp + -232;
+	r9 = r2 >> 2;
+	heap32[(fp+-58)] = 1065353216;
+	heap32[(r9+1)] = 0;
+	heap32[(r9+2)] = 0;
+	heap32[(r9+3)] = 0;
+	heap32[(r9+4)] = 0;
+	heap32[(r9+5)] = 1065353216;
+	heap32[(r9+6)] = 0;
+	heap32[(r9+7)] = 0;
+	heap32[(r9+8)] = 0;
+	heap32[(r9+9)] = 0;
+	heap32[(r9+10)] = 1065353216;
+	heap32[(r9+11)] = 0;
+	heap32[(r9+12)] = 0;
+	heap32[(r9+13)] = 0;
+	heap32[(r9+14)] = 0;
+	heap32[(r9+15)] = 0;
+	r11 = heap32[(r10+5)];
+	r11 = r11 >> 2;
+	f0 = heapFloat[(r10+72)];
+	f1 = heapFloat[(r11+1)];
+	f2 = heapFloat[(r10+73)];
+	f3 = heapFloat[(r11+2)];
+	f4 = heapFloat[(r11+5)];
+	f5 = heapFloat[(r11+6)];
+	f1 = f1*f0;
+	f3 = f3*f2;
+	f6 = heapFloat[(r10+74)];
+	f7 = heapFloat[(r11+3)];
+	f8 = heapFloat[(r11+9)];
+	f9 = heapFloat[(r11+10)];
+	f10 = heapFloat[(r11+7)];
+	f4 = f4*f0;
+	f5 = f5*f2;
+	f1 = f1+f3;
+	f3 = f7*f6;
+	f7 = heapFloat[(r11+11)];
+	f0 = f8*f0;
+	f2 = f9*f2;
+	f4 = f4+f5;
+	f5 = f10*f6;
+	f1 = f1+f3;
+	f3 = heapFloat[(r11+13)];
+	f8 = heapFloat[(r11+15)];
+	f9 = heapFloat[(r11+14)];
+	f4 = f4+f5;
+	f0 = f0+f2;
+	f2 = f7*f6;
+	f1 = f1+f3;
+	f0 = f0+f2;
+	f2 = f4+f9;
+	heapFloat[(r9+12)] = f1;
+	f0 = f0+f8;
+	heapFloat[(r9+13)] = f2;
+	heapFloat[(r9+14)] = f0;
+	heap32[(r9+15)] = 0;
+	r11 = heap32[(r1)];
+	r11 = r11 >> 2;
+	r11 = heap32[(r11+4)];
+	heap32[(g0)] = r0;
+	__FUNCTION_TABLE__[(r11)>>2](i7);
+	r12 = r_g0 >> 2;
+	r12 = heap32[(r12)];
+	r12 = r12 >> 2;
+	r12 = heap32[(r12+14)];
+	heap32[(g0)] = r_g0;
+	heap32[(g0+1)] = r2;
+	f0 = heapFloat[(fp+-191)];
+	heapFloat[(g0+2)] = f0;
+	__FUNCTION_TABLE__[(r12)>>2](i7);
+	r11 = heap32[(r10+6)];
+	r11 = r11 >> 2;
+	f0 = heapFloat[(r10+76)];
+	f1 = heapFloat[(r11+1)];
+	f2 = heapFloat[(r10+77)];
+	f3 = heapFloat[(r11+2)];
+	f4 = heapFloat[(r11+5)];
+	f5 = heapFloat[(r11+6)];
+	f1 = f1*f0;
+	f3 = f3*f2;
+	f6 = heapFloat[(r10+78)];
+	f7 = heapFloat[(r11+3)];
+	f8 = heapFloat[(r11+9)];
+	f9 = heapFloat[(r11+10)];
+	f10 = heapFloat[(r11+7)];
+	f4 = f4*f0;
+	f5 = f5*f2;
+	f1 = f1+f3;
+	f3 = f7*f6;
+	f7 = heapFloat[(r11+11)];
+	f0 = f8*f0;
+	f2 = f9*f2;
+	f4 = f4+f5;
+	f5 = f10*f6;
+	f1 = f1+f3;
+	f3 = heapFloat[(r11+13)];
+	f8 = heapFloat[(r11+15)];
+	f9 = heapFloat[(r11+14)];
+	f4 = f4+f5;
+	f0 = f0+f2;
+	f2 = f7*f6;
+	f1 = f1+f3;
+	f0 = f0+f2;
+	f2 = f4+f9;
+	heapFloat[(r9+12)] = f1;
+	f0 = f0+f8;
+	heapFloat[(r9+13)] = f2;
+	heapFloat[(r9+14)] = f0;
+	heap32[(r9+15)] = 0;
+if(!(r8 ==0)) //_LBB669_52
+{
+	r8 = heap32[(r1)];
+	r8 = r8 >> 2;
+	r8 = heap32[(r8+4)];
+	heap32[(g0)] = r0;
+	__FUNCTION_TABLE__[(r8)>>2](i7);
+	r9 = r_g0 >> 2;
+	r9 = heap32[(r9)];
+	r9 = r9 >> 2;
+	r9 = heap32[(r9+14)];
+	heap32[(g0)] = r_g0;
+	heap32[(g0+1)] = r2;
+	f0 = heapFloat[(fp+-191)];
+	heapFloat[(g0+2)] = f0;
+	__FUNCTION_TABLE__[(r9)>>2](i7);
+}
+}
+else{
+	if(r11 ==4) //_LBB669_13
+{
+	r2 = heap32[(r10+5)];
+	r2 = r2 >> 2;
+	f0 = heapFloat[(r2+1)];
+	f1 = heapFloat[(r10+135)];
+	f2 = heapFloat[(r2+2)];
+	f3 = heapFloat[(r10+139)];
+	f4 = heapFloat[(r10+136)];
+	f5 = heapFloat[(r10+140)];
+	f6 = f1*f0;
+	f7 = f3*f2;
+	f8 = heapFloat[(r2+3)];
+	f9 = heapFloat[(r10+143)];
+	f10 = heapFloat[(r2+9)];
+	f11 = heapFloat[(r10+147)];
+	f12 = heapFloat[(r2+5)];
+	f13 = heapFloat[(r10+137)];
+	f14 = heapFloat[(r2+10)];
+	f15 = heapFloat[(r10+148)];
+	f16 = heapFloat[(r2+6)];
+	f17 = heapFloat[(r10+141)];
+	f18 = heapFloat[(r2+11)];
+	f19 = heapFloat[(r10+149)];
+	f20 = heapFloat[(r2+7)];
+	f21 = heapFloat[(r10+145)];
+	f22 = heapFloat[(r10+144)];
+	f23 = f4*f0;
+	f24 = f5*f2;
+	f6 = f6+f7;
+	f7 = f9*f8;
+	f25 = heapFloat[(r2+15)];
+	f26 = heapFloat[(r2+14)];
+	f27 = heapFloat[(r2+13)];
+	f28 = f13*f0;
+	f29 = f17*f2;
+	f23 = f23+f24;
+	f24 = f22*f8;
+	f6 = f6+f7;
+	r2 = r3 >> 2;
+	f7 = f28+f29;
+	f28 = f21*f8;
+	f23 = f23+f24;
+	heapFloat[(fp+-74)] = f6;
+	f6 = f1*f12;
+	f24 = f3*f16;
+	f7 = f7+f28;
+	heapFloat[(r2+1)] = f23;
+	heapFloat[(r2+2)] = f7;
+	f7 = f4*f12;
+	f23 = f5*f16;
+	f6 = f6+f24;
+	f24 = f9*f20;
+	f28 = f13*f12;
+	f29 = f17*f16;
+	f7 = f7+f23;
+	f23 = f22*f20;
+	f6 = f6+f24;
+	heap32[(r2+3)] = 0;
+	f24 = f28+f29;
+	f28 = f21*f20;
+	f7 = f7+f23;
+	heapFloat[(r2+4)] = f6;
+	f1 = f1*f10;
+	f3 = f3*f14;
+	f6 = f24+f28;
+	heapFloat[(r2+5)] = f7;
+	heapFloat[(r2+6)] = f6;
+	f4 = f4*f10;
+	f5 = f5*f14;
+	f1 = f1+f3;
+	f3 = f9*f18;
+	f6 = f13*f10;
+	f7 = f17*f14;
+	f4 = f4+f5;
+	f5 = f22*f18;
+	f1 = f1+f3;
+	heap32[(r2+7)] = 0;
+	f0 = f0*f11;
+	f2 = f2*f15;
+	f3 = f6+f7;
+	f6 = f21*f18;
+	f4 = f4+f5;
+	heapFloat[(r2+8)] = f1;
+	f1 = f12*f11;
+	f5 = f16*f15;
+	f0 = f0+f2;
+	f2 = f8*f19;
+	f3 = f3+f6;
+	heapFloat[(r2+9)] = f4;
+	f0 = f0+f2;
+	heapFloat[(r2+10)] = f3;
+	f2 = f10*f11;
+	f3 = f14*f15;
+	f1 = f1+f5;
+	f4 = f20*f19;
+	f1 = f1+f4;
+	f2 = f2+f3;
+	f3 = f18*f19;
+	f0 = f0+f27;
+	heap32[(r2+11)] = 0;
+	f2 = f2+f3;
+	f1 = f1+f26;
+	heapFloat[(r2+12)] = f0;
+	f0 = f2+f25;
+	heapFloat[(r2+13)] = f1;
+	heapFloat[(r2+14)] = f0;
+	heap32[(r2+15)] = 0;
+if(!(r8 ==0)) //_LBB669_15
+{
+	r11 = heap32[(r1)];
+	r11 = r11 >> 2;
+	r11 = heap32[(r11+4)];
+	heap32[(g0)] = r0;
+	__FUNCTION_TABLE__[(r11)>>2](i7);
+	r12 = r_g0 >> 2;
+	r12 = heap32[(r12)];
+	r12 = r12 >> 2;
+	r12 = heap32[(r12+14)];
+	heap32[(g0)] = r_g0;
+	heap32[(g0+1)] = r3;
+	f0 = heapFloat[(fp+-191)];
+	heapFloat[(g0+2)] = f0;
+	__FUNCTION_TABLE__[(r12)>>2](i7);
+}
+	r11 = heap32[(r10+6)];
+	r11 = r11 >> 2;
+	f0 = heapFloat[(r11+1)];
+	f1 = heapFloat[(r10+151)];
+	f2 = heapFloat[(r11+2)];
+	f3 = heapFloat[(r10+155)];
+	f4 = heapFloat[(r10+152)];
+	f5 = heapFloat[(r10+156)];
+	f6 = f1*f0;
+	f7 = f3*f2;
+	f8 = heapFloat[(r11+3)];
+	f9 = heapFloat[(r10+159)];
+	f10 = heapFloat[(r11+9)];
+	f11 = heapFloat[(r10+163)];
+	f12 = heapFloat[(r11+5)];
+	f13 = heapFloat[(r10+153)];
+	f14 = heapFloat[(r11+10)];
+	f15 = heapFloat[(r10+164)];
+	f16 = heapFloat[(r11+6)];
+	f17 = heapFloat[(r10+157)];
+	f18 = heapFloat[(r11+11)];
+	f19 = heapFloat[(r10+165)];
+	f20 = heapFloat[(r11+7)];
+	f21 = heapFloat[(r10+161)];
+	f22 = heapFloat[(r10+160)];
+	f23 = f4*f0;
+	f24 = f5*f2;
+	f6 = f6+f7;
+	f7 = f9*f8;
+	f25 = heapFloat[(r11+15)];
+	f26 = heapFloat[(r11+14)];
+	f27 = heapFloat[(r11+13)];
+	f28 = f13*f0;
+	f29 = f17*f2;
+	f23 = f23+f24;
+	f24 = f22*f8;
+	f6 = f6+f7;
+	f7 = f28+f29;
+	f28 = f21*f8;
+	f23 = f23+f24;
+	heapFloat[(fp+-74)] = f6;
+	f6 = f1*f12;
+	f24 = f3*f16;
+	f7 = f7+f28;
+	heapFloat[(r2+1)] = f23;
+	heapFloat[(r2+2)] = f7;
+	f7 = f4*f12;
+	f23 = f5*f16;
+	f6 = f6+f24;
+	f24 = f9*f20;
+	f28 = f13*f12;
+	f29 = f17*f16;
+	f7 = f7+f23;
+	f23 = f22*f20;
+	f6 = f6+f24;
+	heap32[(r2+3)] = 0;
+	f24 = f28+f29;
+	f28 = f21*f20;
+	f7 = f7+f23;
+	heapFloat[(r2+4)] = f6;
+	f1 = f1*f10;
+	f3 = f3*f14;
+	f6 = f24+f28;
+	heapFloat[(r2+5)] = f7;
+	heapFloat[(r2+6)] = f6;
+	f4 = f4*f10;
+	f5 = f5*f14;
+	f1 = f1+f3;
+	f3 = f9*f18;
+	f6 = f13*f10;
+	f7 = f17*f14;
+	f4 = f4+f5;
+	f5 = f22*f18;
+	f1 = f1+f3;
+	heap32[(r2+7)] = 0;
+	f0 = f0*f11;
+	f2 = f2*f15;
+	f3 = f6+f7;
+	f6 = f21*f18;
+	f4 = f4+f5;
+	heapFloat[(r2+8)] = f1;
+	f1 = f12*f11;
+	f5 = f16*f15;
+	f0 = f0+f2;
+	f2 = f8*f19;
+	f3 = f3+f6;
+	heapFloat[(r2+9)] = f4;
+	f0 = f0+f2;
+	heapFloat[(r2+10)] = f3;
+	f2 = f10*f11;
+	f3 = f14*f15;
+	f1 = f1+f5;
+	f4 = f20*f19;
+	f1 = f1+f4;
+	f2 = f2+f3;
+	f3 = f18*f19;
+	f0 = f0+f27;
+	heap32[(r2+11)] = 0;
+	f2 = f2+f3;
+	f1 = f1+f26;
+	heapFloat[(r2+12)] = f0;
+	f0 = f2+f25;
+	heapFloat[(r2+13)] = f1;
+	heapFloat[(r2+14)] = f0;
+	heap32[(r2+15)] = 0;
+if(!(r8 ==0)) //_LBB669_17
+{
+	r8 = heap32[(r1)];
+	r8 = r8 >> 2;
+	r8 = heap32[(r8+4)];
+	heap32[(g0)] = r0;
+	__FUNCTION_TABLE__[(r8)>>2](i7);
+	r11 = r_g0 >> 2;
+	r11 = heap32[(r11)];
+	r11 = r11 >> 2;
+	r11 = heap32[(r11+14)];
+	heap32[(g0)] = r_g0;
+	heap32[(g0+1)] = r3;
+	f0 = heapFloat[(fp+-191)];
+	heapFloat[(g0+2)] = f0;
+	__FUNCTION_TABLE__[(r11)>>2](i7);
+}
+	f0 = heapFloat[(r10+172)];
+	f1 = heapFloat[(r10+173)];
+if(!(f0 ==f1)) //_LBB669_52
+{
+if(!(r9 ==0)) //_LBB669_52
+{
+	r8 = sp + -312;
+	r9 = r8 >> 2;
+	heap32[(fp+-78)] = heap32[(r2+2)];
+	heap32[(r9+1)] = heap32[(r2+6)];
+	heap32[(r9+2)] = heap32[(r2+10)];
+	r10 = sp + -328;
+	heap32[(r9+3)] = 0;
+	r9 = r10 >> 2;
+	heap32[(fp+-82)] = heap32[(fp+-74)];
+	heap32[(r9+1)] = heap32[(r2+4)];
+	heap32[(r9+2)] = heap32[(r2+8)];
+	heap32[(r9+3)] = 0;
+	r2 = heap32[(r1)];
+	r2 = r2 >> 2;
+	r2 = heap32[(r2+4)];
+	heap32[(g0)] = r0;
+	__FUNCTION_TABLE__[(r2)>>2](i7);
+	r9 = r_g0 >> 2;
+	r9 = heap32[(r9)];
+	r9 = r9 >> 2;
+	r9 = heap32[(r9+15)];
+	r11 = sp + -168;
+	r12 = r11 >> 2;
+	heap32[(fp+-42)] = 0;
+	heap32[(r12+1)] = 0;
+	heap32[(r12+2)] = 0;
+	heap32[(r12+3)] = 0;
+	f2 =        6.2831854820251465;
+	r12 = f0 <= f1;
+	f3 = heapFloat[(fp+-192)];
+	f3 = f0 > f1 ? f3 : f0;
+	f0 = f0 > f1 ? f2 : f1;
+	r12 = r12 & 1;
+	heap32[(g0)] = r_g0;
+	heap32[(g0+1)] = r5;
+	heap32[(g0+2)] = r8;
+	heap32[(g0+3)] = r10;
+	f1 = heapFloat[(fp+-191)];
+	heapFloat[(g0+4)] = f1;
+	heapFloat[(g0+5)] = f1;
+	heapFloat[(g0+6)] = f3;
+	heapFloat[(g0+7)] = f0;
+	heap32[(g0+8)] = r11;
+	heap32[(g0+9)] = r12;
+	heap32[(g0+10)] = 1092616192;
+	__FUNCTION_TABLE__[(r9)>>2](i7);
+}
+}
+}
+}
+}
+}
+} while(0);
+	r2 = (r7 + -1)|0;
+	if(r7 !=0) //_LBB669_4
+{
+continue _5;
+}
+else{
+break _5;
+}
+}
+}
+}
+}
+	r2 = heap32[(r1)];
+	r2 = r2 >> 2;
+	r2 = heap32[(r2+4)];
+	heap32[(g0)] = r0;
+	__FUNCTION_TABLE__[(r2)>>2](i7);
+	r2 = r_g0;
+_74: do {
+if(!(r2 ==0)) //_LBB669_60
+{
+	r2 = heap32[(r1)];
+	r2 = r2 >> 2;
+	r2 = heap32[(r2+4)];
+	heap32[(g0)] = r0;
+	__FUNCTION_TABLE__[(r2)>>2](i7);
+	r3 = r_g0 >> 2;
+	r3 = heap32[(r3)];
+	r3 = r3 >> 2;
+	r3 = heap32[(r3+12)];
+	heap32[(g0)] = r_g0;
+	__FUNCTION_TABLE__[(r3)>>2](i7);
+	r2 = r_g0 & 3;
+if(!(r2 ==0)) //_LBB669_60
+{
+	r2 = heap32[(r1)];
+	r2 = r2 >> 2;
+	r2 = heap32[(r2+4)];
+	heap32[(g0)] = r0;
+	__FUNCTION_TABLE__[(r2)>>2](i7);
+	r2 = r_g0;
+if(!(r2 ==0)) //_LBB669_60
+{
+	r2 = heap32[(r1)];
+	r2 = r2 >> 2;
+	r2 = heap32[(r2+4)];
+	heap32[(g0)] = r0;
+	__FUNCTION_TABLE__[(r2)>>2](i7);
+	r2 = r_g0 >> 2;
+	r2 = heap32[(r2)];
+	r2 = r2 >> 2;
+	r2 = heap32[(r2+12)];
+	heap32[(g0)] = r_g0;
+	__FUNCTION_TABLE__[(r2)>>2](i7);
+	r0 = r_g0;
+if(!(r0 ==0)) //_LBB669_60
+{
+	r0 = heap32[(r1+63)];
+if(!(r0 <1)) //_LBB669_60
+{
+	r0 = 0;
+_80: while(true){
+	r2 = heap32[(r1+65)];
+	r3 = r0 << 2;
+	r2 = (r2 + r3)|0;
+	r2 = r2 >> 2;
+	r2 = heap32[(r2)];
+	r3 = r2 >> 2;
+	r3 = heap32[(r3)];
+	r3 = r3 >> 2;
+	r3 = heap32[(r3+3)];
+	r4 = heap32[(r1+21)];
+	heap32[(g0)] = r2;
+	heap32[(g0+1)] = r4;
+	r0 = (r0 + 1)|0;
+	__FUNCTION_TABLE__[(r3)>>2](i7);
+	r2 = heap32[(r1+63)];
+	if(r2 >r0) //_LBB669_59
+{
+continue _80;
+}
+else{
+break _74;
+}
+}
+}
+}
+}
+}
+}
+} while(0);
+	r0 = _ZN15CProfileManager11CurrentNodeE;
+	r0 = r0 >> 2;
+	r1 = heap32[(r0)];
+	r2 = r1 >> 2;
+	r3 = heap32[(r2+4)];
+	r3 = (r3 + -1)|0;
+	heap32[(r2+4)] = r3;
+_83: do {
+if(!(r3 !=0)) //_LBB669_66
+{
+	r3 = heap32[(r2+1)];
+	if(r3 !=0) //_LBB669_63
+{
+	r1 = sp + -8;
+	heap32[(g0)] = r1;
+	heap32[(g0+1)] = 0;
+	r3 = _ZL13gProfileClock_2E_0;
+	gettimeofday(i7);
+	r3 = r3 >> 2;
+	r3 = heap32[(r3)];
+	r3 = r3 >> 2;
+	r1 = r1 >> 2;
+	r4 = heap32[(fp+-2)];
+	r5 = heap32[(r3)];
+	r4 = (r4 - r5)|0;
+	r1 = heap32[(r1+1)];
+	r3 = heap32[(r3+1)];
+	r1 = (r1 - r3)|0;
+	r3 = (r4 * 1000000)|0;
+	r1 = (r1 + r3)|0;
+	r3 = heap32[(r2+3)];
+	r1 = (r1 - r3)|0;
+	f0 = uint(r1); //fuitos r1, f0
+	f1 =                      1000;
+	f2 = heapFloat[(r2+2)];
+	f0 = f0/f1;
+	f0 = f2+f0;
+	heapFloat[(r2+2)] = f0;
+	r1 = heap32[(r2+4)];
+	if(r1 !=0) //_LBB669_66
+{
+break _83;
+}
+else{
+	r1 = heap32[(r0)];
+}
+}
+	r1 = r1 >> 2;
+	r1 = heap32[(r1+5)];
+	heap32[(r0)] = r1;
+}
+} while(0);
+	return;
+}
+
+function _ZN23btDiscreteDynamicsWorld18saveKinematicStateEf(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+	var r6;
+	var f0;
+	var f1;
+	var f2;
+	var f3;
+	var f4;
+	var f5;
+	var f6;
+var __label__ = 0;
+	i7 = sp + -40;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r0 = r0 >> 2;
+	r1 = heap32[(r0+2)];
+if(!(r1 <1)) //_LBB670_11
+{
+	f0 = heapFloat[(fp+1)];
+	f1 =                         1;
+	f1 = f1/f0;
+	r1 = 0;
+_3: while(true){
+	r2 = heap32[(r0+4)];
+	r3 = r1 << 2;
+	r2 = (r2 + r3)|0;
+	r2 = r2 >> 2;
+	r2 = heap32[(r2)];
+	r3 = heapU8[r2+232];
+	r3 = r3 & 2;
+if(!(r3 ==0)) //_LBB670_10
+{
+if(!(r2 ==0)) //_LBB670_10
+{
+	r3 = r2 >> 2;
+	r4 = heap32[(r3+54)];
+if(!(r4 ==2)) //_LBB670_10
+{
+	r4 = heapU8[r2+204];
+	r4 = r4 & 2;
+if(!(r4 ==0)) //_LBB670_10
+{
+	f2 =                         0;
+if(!(f0 ==f2)) //_LBB670_10
+{
+	r4 = heap32[(r3+118)];
+if(!(r4 ==0)) //_LBB670_9
+{
+	r5 = r4 >> 2;
+	r5 = heap32[(r5)];
+	r5 = r5 >> 2;
+	r5 = heap32[(r5+2)];
+	r6 = (r2 + 4)|0;
+	heap32[(g0)] = r4;
+	heap32[(g0+1)] = r6;
+	__FUNCTION_TABLE__[(r5)>>2](i7);
+}
+	f2 = heapFloat[(r3+13)];
+	f3 = heapFloat[(r3+29)];
+	f2 = f2-f3;
+	f3 = heapFloat[(r3+15)];
+	f4 = heapFloat[(r3+31)];
+	f5 = heapFloat[(r3+14)];
+	f6 = heapFloat[(r3+30)];
+	f5 = f5-f6;
+	f2 = f2*f1;
+	f3 = f3-f4;
+	f4 = f5*f1;
+	heapFloat[(r3+76)] = f2;
+	f2 = f3*f1;
+	heapFloat[(r3+77)] = f4;
+	heapFloat[(r3+78)] = f2;
+	heap32[(r3+79)] = 0;
+	r4 = sp + -16;
+	r5 = (r2 + 68)|0;
+	r2 = (r2 + 4)|0;
+	r6 = sp + -20;
+	heap32[(g0)] = r5;
+	heap32[(g0+1)] = r2;
+	heap32[(g0+2)] = r4;
+	heap32[(g0+3)] = r6;
+	_ZN15btTransformUtil22calculateDiffAxisAngleERK11btTransformS2_R9btVector3Rf(i7);
+	r2 = r4 >> 2;
+	f2 = heapFloat[(fp+-5)];
+	f3 = heapFloat[(fp+-4)];
+	f3 = f3*f2;
+	f4 = heapFloat[(r2+2)];
+	f5 = heapFloat[(r2+1)];
+	f5 = f5*f2;
+	f3 = f3*f1;
+	f2 = f4*f2;
+	f4 = f5*f1;
+	heapFloat[(r3+80)] = f3;
+	f2 = f2*f1;
+	heapFloat[(r3+81)] = f4;
+	heapFloat[(r3+82)] = f2;
+	heap32[(r3+83)] = 0;
+	heap32[(r3+33)] = heap32[(r3+76)];
+	heap32[(r3+34)] = heap32[(r3+77)];
+	heap32[(r3+35)] = heap32[(r3+78)];
+	heap32[(r3+36)] = heap32[(r3+79)];
+	heapFloat[(r3+37)] = f3;
+	heapFloat[(r3+38)] = f4;
+	heapFloat[(r3+39)] = f2;
+	heap32[(r3+40)] = 0;
+	heap32[(r3+17)] = heap32[(r3+1)];
+	heap32[(r3+18)] = heap32[(r3+2)];
+	heap32[(r3+19)] = heap32[(r3+3)];
+	heap32[(r3+20)] = heap32[(r3+4)];
+	heap32[(r3+21)] = heap32[(r3+5)];
+	heap32[(r3+22)] = heap32[(r3+6)];
+	heap32[(r3+23)] = heap32[(r3+7)];
+	heap32[(r3+24)] = heap32[(r3+8)];
+	heap32[(r3+25)] = heap32[(r3+9)];
+	heap32[(r3+26)] = heap32[(r3+10)];
+	heap32[(r3+27)] = heap32[(r3+11)];
+	heap32[(r3+28)] = heap32[(r3+12)];
+	heap32[(r3+29)] = heap32[(r3+13)];
+	heap32[(r3+30)] = heap32[(r3+14)];
+	heap32[(r3+31)] = heap32[(r3+15)];
+	heap32[(r3+32)] = heap32[(r3+16)];
+}
+}
+}
+}
+}
+	r1 = (r1 + 1)|0;
+	r2 = heap32[(r0+2)];
+	if(r2 >r1) //_LBB670_2
+{
+continue _3;
+}
+else{
+break _3;
+}
+}
+}
+	return;
+}
+
+function _ZN15btDynamicsWorldD1Ev(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+var __label__ = 0;
+	i7 = sp + -8;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = _ZTV15btDynamicsWorld;
+	r2 = r0 >> 2;
+	r1 = (r1 + 8)|0;
+	heap32[(r2)] = r1;
+	heap32[(g0)] = r0;
+	_ZN16btCollisionWorldD2Ev(i7);
+	return;
+}
+
+function _ZN15btDynamicsWorldD0Ev(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+var __label__ = 0;
+	i7 = sp + -8;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = _ZTV15btDynamicsWorld;
+	r2 = r0 >> 2;
+	r1 = (r1 + 8)|0;
+	heap32[(r2)] = r1;
+	heap32[(g0)] = r0;
+	_ZN16btCollisionWorldD2Ev(i7);
+	heap32[(g0)] = r0;
+	_ZdlPv(i7);
+	return;
+}
+
+function _ZN23btDiscreteDynamicsWorldD0Ev(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+var __label__ = 0;
+	i7 = sp + -8;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = _ZTV23btDiscreteDynamicsWorld;
+	r2 = r0 >> 2;
+	r1 = (r1 + 8)|0;
+	heap32[(r2)] = r1;
+	r1 = heapU8[r0+244];
+if(!(r1 ==0)) //_LBB673_3
+{
+	r1 = heap32[(r2+45)];
+	r3 = r1 >> 2;
+	r3 = heap32[(r3)];
+	r3 = r3 >> 2;
+	r3 = heap32[(r3)];
+	heap32[(g0)] = r1;
+	__FUNCTION_TABLE__[(r3)>>2](i7);
+	r1 = heap32[(r2+45)];
+if(!(r1 ==0)) //_LBB673_3
+{
+	r3 = gNumAlignedFree;
+	r3 = r3 >> 2;
+	r4 = heap32[(r3)];
+	r4 = (r4 + 1)|0;
+	r1 = r1 >> 2;
+	heap32[(r3)] = r4;
+	r1 = heap32[(r1+-1)];
+	heap32[(g0)] = r1;
+	free(i7);
+}
+}
+	r1 = heapU8[r0+245];
+if(!(r1 ==0)) //_LBB673_6
+{
+	r1 = heap32[(r2+44)];
+	r3 = r1 >> 2;
+	r3 = heap32[(r3)];
+	r3 = r3 >> 2;
+	r3 = heap32[(r3)];
+	heap32[(g0)] = r1;
+	__FUNCTION_TABLE__[(r3)>>2](i7);
+	r1 = heap32[(r2+44)];
+if(!(r1 ==0)) //_LBB673_6
+{
+	r3 = gNumAlignedFree;
+	r3 = r3 >> 2;
+	r4 = heap32[(r3)];
+	r4 = (r4 + 1)|0;
+	r1 = r1 >> 2;
+	heap32[(r3)] = r4;
+	r1 = heap32[(r1+-1)];
+	heap32[(g0)] = r1;
+	free(i7);
+}
+}
+	r1 = heap32[(r2+65)];
+if(!(r1 ==0)) //_LBB673_10
+{
+	r3 = heapU8[r0+264];
+if(!(r3 ==0)) //_LBB673_9
+{
+	r3 = gNumAlignedFree;
+	r3 = r3 >> 2;
+	r4 = heap32[(r3)];
+	r4 = (r4 + 1)|0;
+	r1 = r1 >> 2;
+	heap32[(r3)] = r4;
+	r1 = heap32[(r1+-1)];
+	heap32[(g0)] = r1;
+	free(i7);
+}
+	heap32[(r2+65)] = 0;
+}
+	r1 = 1;
+	heap8[r0+264] = r1;
+	heap32[(r2+65)] = 0;
+	heap32[(r2+63)] = 0;
+	heap32[(r2+64)] = 0;
+	r3 = heap32[(r2+54)];
+if(!(r3 ==0)) //_LBB673_14
+{
+	r4 = heapU8[r0+220];
+if(!(r4 ==0)) //_LBB673_13
+{
+	r4 = gNumAlignedFree;
+	r4 = r4 >> 2;
+	r5 = heap32[(r4)];
+	r5 = (r5 + 1)|0;
+	r3 = r3 >> 2;
+	heap32[(r4)] = r5;
+	r3 = heap32[(r3+-1)];
+	heap32[(g0)] = r3;
+	free(i7);
+}
+	heap32[(r2+54)] = 0;
+}
+	heap8[r0+220] = r1;
+	heap32[(r2+54)] = 0;
+	heap32[(r2+52)] = 0;
+	heap32[(r2+53)] = 0;
+	r3 = heap32[(r2+49)];
+if(!(r3 ==0)) //_LBB673_18
+{
+	r4 = heapU8[r0+200];
+if(!(r4 ==0)) //_LBB673_17
+{
+	r4 = gNumAlignedFree;
+	r4 = r4 >> 2;
+	r5 = heap32[(r4)];
+	r5 = (r5 + 1)|0;
+	r3 = r3 >> 2;
+	heap32[(r4)] = r5;
+	r3 = heap32[(r3+-1)];
+	heap32[(g0)] = r3;
+	free(i7);
+}
+	heap32[(r2+49)] = 0;
+}
+	heap8[r0+200] = r1;
+	heap32[(r2+49)] = 0;
+	r1 = _ZTV15btDynamicsWorld;
+	heap32[(r2+47)] = 0;
+	r1 = (r1 + 8)|0;
+	heap32[(r2+48)] = 0;
+	heap32[(r2)] = r1;
+	heap32[(g0)] = r0;
+	_ZN16btCollisionWorldD2Ev(i7);
+	heap32[(g0)] = r0;
+	_ZdlPv(i7);
+	return;
+}
+
+function _ZN23btDiscreteDynamicsWorldD1Ev(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+var __label__ = 0;
+	i7 = sp + -8;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	heap32[(g0)] = r0;
+	_ZN23btDiscreteDynamicsWorldD2Ev(i7);
+	return;
+}
+
+function _ZN23btDiscreteDynamicsWorldD2Ev(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+var __label__ = 0;
+	i7 = sp + -8;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = _ZTV23btDiscreteDynamicsWorld;
+	r2 = r0 >> 2;
+	r1 = (r1 + 8)|0;
+	heap32[(r2)] = r1;
+	r1 = heapU8[r0+244];
+if(!(r1 ==0)) //_LBB675_3
+{
+	r1 = heap32[(r2+45)];
+	r3 = r1 >> 2;
+	r3 = heap32[(r3)];
+	r3 = r3 >> 2;
+	r3 = heap32[(r3)];
+	heap32[(g0)] = r1;
+	__FUNCTION_TABLE__[(r3)>>2](i7);
+	r1 = heap32[(r2+45)];
+if(!(r1 ==0)) //_LBB675_3
+{
+	r3 = gNumAlignedFree;
+	r3 = r3 >> 2;
+	r4 = heap32[(r3)];
+	r4 = (r4 + 1)|0;
+	r1 = r1 >> 2;
+	heap32[(r3)] = r4;
+	r1 = heap32[(r1+-1)];
+	heap32[(g0)] = r1;
+	free(i7);
+}
+}
+	r1 = heapU8[r0+245];
+if(!(r1 ==0)) //_LBB675_6
+{
+	r1 = heap32[(r2+44)];
+	r3 = r1 >> 2;
+	r3 = heap32[(r3)];
+	r3 = r3 >> 2;
+	r3 = heap32[(r3)];
+	heap32[(g0)] = r1;
+	__FUNCTION_TABLE__[(r3)>>2](i7);
+	r1 = heap32[(r2+44)];
+if(!(r1 ==0)) //_LBB675_6
+{
+	r3 = gNumAlignedFree;
+	r3 = r3 >> 2;
+	r4 = heap32[(r3)];
+	r4 = (r4 + 1)|0;
+	r1 = r1 >> 2;
+	heap32[(r3)] = r4;
+	r1 = heap32[(r1+-1)];
+	heap32[(g0)] = r1;
+	free(i7);
+}
+}
+	r1 = heap32[(r2+65)];
+if(!(r1 ==0)) //_LBB675_10
+{
+	r3 = heapU8[r0+264];
+if(!(r3 ==0)) //_LBB675_9
+{
+	r3 = gNumAlignedFree;
+	r3 = r3 >> 2;
+	r4 = heap32[(r3)];
+	r4 = (r4 + 1)|0;
+	r1 = r1 >> 2;
+	heap32[(r3)] = r4;
+	r1 = heap32[(r1+-1)];
+	heap32[(g0)] = r1;
+	free(i7);
+}
+	heap32[(r2+65)] = 0;
+}
+	r1 = 1;
+	heap8[r0+264] = r1;
+	heap32[(r2+65)] = 0;
+	heap32[(r2+63)] = 0;
+	heap32[(r2+64)] = 0;
+	r3 = heap32[(r2+54)];
+if(!(r3 ==0)) //_LBB675_14
+{
+	r4 = heapU8[r0+220];
+if(!(r4 ==0)) //_LBB675_13
+{
+	r4 = gNumAlignedFree;
+	r4 = r4 >> 2;
+	r5 = heap32[(r4)];
+	r5 = (r5 + 1)|0;
+	r3 = r3 >> 2;
+	heap32[(r4)] = r5;
+	r3 = heap32[(r3+-1)];
+	heap32[(g0)] = r3;
+	free(i7);
+}
+	heap32[(r2+54)] = 0;
+}
+	heap8[r0+220] = r1;
+	heap32[(r2+54)] = 0;
+	heap32[(r2+52)] = 0;
+	heap32[(r2+53)] = 0;
+	r3 = heap32[(r2+49)];
+if(!(r3 ==0)) //_LBB675_18
+{
+	r4 = heapU8[r0+200];
+if(!(r4 ==0)) //_LBB675_17
+{
+	r4 = gNumAlignedFree;
+	r4 = r4 >> 2;
+	r5 = heap32[(r4)];
+	r5 = (r5 + 1)|0;
+	r3 = r3 >> 2;
+	heap32[(r4)] = r5;
+	r3 = heap32[(r3+-1)];
+	heap32[(g0)] = r3;
+	free(i7);
+}
+	heap32[(r2+49)] = 0;
+}
+	heap8[r0+200] = r1;
+	heap32[(r2+49)] = 0;
+	r1 = _ZTV15btDynamicsWorld;
+	heap32[(r2+47)] = 0;
+	r1 = (r1 + 8)|0;
+	heap32[(r2+48)] = 0;
+	heap32[(r2)] = r1;
+	heap32[(g0)] = r0;
+	_ZN16btCollisionWorldD2Ev(i7);
+	return;
+}
+
+function _ZN11btRigidBody12setMassPropsEfRK9btVector3(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var f0;
+	var f1;
+	var f2;
+	var f3;
+	var f4;
+	var f5;
+var __label__ = 0;
+	i7 = sp + 0;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r0 = r0 >> 2;
+	f0 = heapFloat[(fp+1)];
+	r1 = heap32[(fp+2)];
+	r2 = heap32[(r0+51)];
+	f1 =                         0;
+	if(f0 !=f1) //_LBB676_2
+{
+	r2 = r2 & -2;
+	f2 =                         1;
+	f2 = f2/f0;
+	heap32[(r0+51)] = r2;
+	heapFloat[(r0+84)] = f2;
+}
+else{
+	r2 = r2 | 1;
+	f2 =                         0;
+	heap32[(r0+51)] = r2;
+	heap32[(r0+84)] = 0;
+}
+	f3 = heapFloat[(r0+95)];
+	f4 = heapFloat[(r0+94)];
+	f5 = heapFloat[(r0+93)];
+	f5 = f5*f0;
+	f4 = f4*f0;
+	heapFloat[(r0+89)] = f5;
+	f0 = f3*f0;
+	heapFloat[(r0+90)] = f4;
+	heapFloat[(r0+91)] = f0;
+	r1 = r1 >> 2;
+	heap32[(r0+92)] = 0;
+	f0 = heapFloat[(r1+2)];
+	if(f0 !=f1) //_LBB676_5
+{
+	f3 =                         1;
+	f0 = f3/f0;
+}
+else{
+	f0 = f1;
+}
+	f3 = heapFloat[(r1+1)];
+	if(f3 !=f1) //_LBB676_8
+{
+	f1 =                         1;
+	f3 = f1/f3;
+}
+else{
+	f3 =                         0;
+}
+	f1 = heapFloat[(r1)];
+	f4 =                         0;
+	if(f1 !=f4) //_LBB676_11
+{
+	f4 =                         1;
+	f4 = f4/f1;
+}
+	heapFloat[(r0+97)] = f4;
+	heapFloat[(r0+98)] = f3;
+	heapFloat[(r0+99)] = f0;
+	heap32[(r0+100)] = 0;
+	f0 = heapFloat[(r0+87)];
+	f1 = heapFloat[(r0+86)];
+	f3 = heapFloat[(r0+85)];
+	f3 = f3*f2;
+	f1 = f1*f2;
+	heapFloat[(r0+138)] = f3;
+	f0 = f0*f2;
+	heapFloat[(r0+139)] = f1;
+	heapFloat[(r0+140)] = f0;
+	heap32[(r0+141)] = 0;
+	return;
+}
+
+function _ZN11btRigidBody19updateInertiaTensorEv(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var f0;
+	var f1;
+	var f2;
+	var f3;
+	var f4;
+	var f5;
+	var f6;
+	var f7;
+	var f8;
+	var f9;
+	var f10;
+	var f11;
+	var f12;
+	var f13;
+	var f14;
+	var f15;
+	var f16;
+	var f17;
+	var f18;
+	var f19;
+var __label__ = 0;
+	i7 = sp + 0;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r0 = r0 >> 2;
+	f0 = heapFloat[(r0+1)];
+	f1 = heapFloat[(r0+97)];
+	f2 = heapFloat[(r0+2)];
+	f3 = heapFloat[(r0+98)];
+	f4 = f0*f1;
+	f5 = f2*f3;
+	f6 = heapFloat[(r0+3)];
+	f7 = heapFloat[(r0+99)];
+	f8 = heapFloat[(r0+5)];
+	f9 = heapFloat[(r0+6)];
+	f10 = f6*f7;
+	f11 = f0*f4;
+	f12 = f2*f5;
+	f13 = heapFloat[(r0+9)];
+	f14 = heapFloat[(r0+10)];
+	f15 = heapFloat[(r0+7)];
+	f16 = heapFloat[(r0+11)];
+	f17 = f8*f4;
+	f18 = f9*f5;
+	f11 = f11+f12;
+	f12 = f6*f10;
+	f4 = f13*f4;
+	f5 = f14*f5;
+	f17 = f17+f18;
+	f18 = f15*f10;
+	f11 = f11+f12;
+	f12 = f8*f1;
+	f19 = f9*f3;
+	f4 = f4+f5;
+	f5 = f16*f10;
+	f10 = f17+f18;
+	heapFloat[(r0+64)] = f11;
+	f11 = f15*f7;
+	f17 = f0*f12;
+	f18 = f2*f19;
+	f4 = f4+f5;
+	heapFloat[(r0+65)] = f10;
+	heapFloat[(r0+66)] = f4;
+	f4 = f8*f12;
+	f5 = f9*f19;
+	f10 = f17+f18;
+	f17 = f6*f11;
+	f12 = f13*f12;
+	f18 = f14*f19;
+	f4 = f4+f5;
+	f5 = f15*f11;
+	f10 = f10+f17;
+	heap32[(r0+67)] = 0;
+	f1 = f13*f1;
+	f3 = f14*f3;
+	f12 = f12+f18;
+	f11 = f16*f11;
+	f4 = f4+f5;
+	heapFloat[(r0+68)] = f10;
+	f5 = f16*f7;
+	f0 = f0*f1;
+	f2 = f2*f3;
+	f7 = f12+f11;
+	heapFloat[(r0+69)] = f4;
+	heapFloat[(r0+70)] = f7;
+	f4 = f8*f1;
+	f7 = f9*f3;
+	f0 = f0+f2;
+	f2 = f6*f5;
+	f1 = f13*f1;
+	f3 = f14*f3;
+	f4 = f4+f7;
+	f6 = f15*f5;
+	f0 = f0+f2;
+	heap32[(r0+71)] = 0;
+	f1 = f1+f3;
+	f2 = f16*f5;
+	f3 = f4+f6;
+	heapFloat[(r0+72)] = f0;
+	f0 = f1+f2;
+	heapFloat[(r0+73)] = f3;
+	heapFloat[(r0+74)] = f0;
+	heap32[(r0+75)] = 0;
+	return;
+}
+
+function _ZN11btRigidBody18proceedToTransformERK11btTransform(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+	var r6;
+	var r7;
+	var r8;
+	var r9;
+	var r10;
+	var r11;
+	var r12;
+	var r13;
+	var r14;
+	var r15;
+	var r16;
+	var r17;
+	var r18;
+	var r19;
+	var r20;
+	var r21;
+	var r22;
+	var r23;
+	var r24;
+	var r25;
+var __label__ = 0;
+	i7 = sp + -48;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = heap32[(fp+1)];
+	r2 = heapU8[r0+204];
+	r2 = r2 & 3;
+	if(r2 ==0) //_LBB678_2
+{
+	r2 = r0 >> 2;
+	r24 = r1 >> 2;
+	heap32[(r2+17)] = heap32[(r24)];
+	heap32[(r2+18)] = heap32[(r24+1)];
+	heap32[(r2+19)] = heap32[(r24+2)];
+	heap32[(r2+20)] = heap32[(r24+3)];
+	heap32[(r2+21)] = heap32[(r24+4)];
+	heap32[(r2+22)] = heap32[(r24+5)];
+	heap32[(r2+23)] = heap32[(r24+6)];
+	heap32[(r2+24)] = heap32[(r24+7)];
+	heap32[(r2+25)] = heap32[(r24+8)];
+	heap32[(r2+26)] = heap32[(r24+9)];
+	heap32[(r2+27)] = heap32[(r24+10)];
+	heap32[(r2+28)] = heap32[(r24+11)];
+	heap32[(r2+29)] = heap32[(r24+12)];
+	heap32[(r2+30)] = heap32[(r24+13)];
+	r15 = (r1 + 4)|0;
+	r16 = (r1 + 8)|0;
+	r17 = (r1 + 12)|0;
+	r18 = (r1 + 16)|0;
+	r19 = (r1 + 20)|0;
+	r20 = (r1 + 24)|0;
+	r21 = (r1 + 28)|0;
+	r22 = (r1 + 32)|0;
+	r23 = (r1 + 36)|0;
+	r3 = (r1 + 40)|0;
+	heap32[(fp+-10)] = r3;
+	r3 = (r1 + 44)|0;
+	heap32[(fp+-4)] = r3;
+	r3 = (r1 + 48)|0;
+	heap32[(fp+-7)] = r3;
+	r3 = (r1 + 52)|0;
+	heap32[(fp+-6)] = r3;
+	r3 = (r1 + 56)|0;
+	heap32[(fp+-9)] = r3;
+	r3 = (r1 + 60)|0;
+	heap32[(fp+-8)] = r3;
+	r3 = (r0 + 4)|0;
+	r4 = (r0 + 8)|0;
+	r5 = (r0 + 12)|0;
+	r6 = (r0 + 16)|0;
+	r7 = (r0 + 20)|0;
+	r8 = (r0 + 24)|0;
+	r9 = (r0 + 28)|0;
+	r10 = (r0 + 32)|0;
+	r11 = (r0 + 36)|0;
+	r12 = (r0 + 40)|0;
+	r13 = (r0 + 44)|0;
+	r14 = (r0 + 48)|0;
+	r25 = (r0 + 52)|0;
+	heap32[(fp+-5)] = r25;
+	r25 = (r0 + 56)|0;
+	heap32[(fp+-3)] = r25;
+	r25 = (r0 + 60)|0;
+	heap32[(fp+-2)] = r25;
+	r25 = (r0 + 64)|0;
+	heap32[(fp+-1)] = r25;
+	heap32[(r2+31)] = heap32[(r24+14)];
+	heap32[(r2+32)] = heap32[(r24+15)];
+}
+else{
+	r2 = r0 >> 2;
+	heap32[(r2+17)] = heap32[(r2+1)];
+	heap32[(r2+18)] = heap32[(r2+2)];
+	heap32[(r2+19)] = heap32[(r2+3)];
+	heap32[(r2+20)] = heap32[(r2+4)];
+	heap32[(r2+21)] = heap32[(r2+5)];
+	heap32[(r2+22)] = heap32[(r2+6)];
+	heap32[(r2+23)] = heap32[(r2+7)];
+	heap32[(r2+24)] = heap32[(r2+8)];
+	heap32[(r2+25)] = heap32[(r2+9)];
+	heap32[(r2+26)] = heap32[(r2+10)];
+	heap32[(r2+27)] = heap32[(r2+11)];
+	heap32[(r2+28)] = heap32[(r2+12)];
+	heap32[(r2+29)] = heap32[(r2+13)];
+	heap32[(r2+30)] = heap32[(r2+14)];
+	r3 = (r0 + 4)|0;
+	r4 = (r0 + 8)|0;
+	r5 = (r0 + 12)|0;
+	r6 = (r0 + 16)|0;
+	r7 = (r0 + 20)|0;
+	r8 = (r0 + 24)|0;
+	r9 = (r0 + 28)|0;
+	r10 = (r0 + 32)|0;
+	r11 = (r0 + 36)|0;
+	r12 = (r0 + 40)|0;
+	r13 = (r0 + 44)|0;
+	r14 = (r0 + 48)|0;
+	r15 = (r0 + 52)|0;
+	heap32[(fp+-5)] = r15;
+	r15 = (r0 + 56)|0;
+	heap32[(fp+-3)] = r15;
+	r15 = (r0 + 60)|0;
+	heap32[(fp+-2)] = r15;
+	r15 = (r0 + 64)|0;
+	heap32[(fp+-1)] = r15;
+	r15 = (r1 + 4)|0;
+	r16 = (r1 + 8)|0;
+	r17 = (r1 + 12)|0;
+	r18 = (r1 + 16)|0;
+	r19 = (r1 + 20)|0;
+	r20 = (r1 + 24)|0;
+	r21 = (r1 + 28)|0;
+	r22 = (r1 + 32)|0;
+	r23 = (r1 + 36)|0;
+	r24 = (r1 + 40)|0;
+	heap32[(fp+-10)] = r24;
+	r24 = (r1 + 44)|0;
+	heap32[(fp+-4)] = r24;
+	r24 = (r1 + 48)|0;
+	heap32[(fp+-7)] = r24;
+	r24 = (r1 + 52)|0;
+	heap32[(fp+-6)] = r24;
+	r24 = (r1 + 56)|0;
+	heap32[(fp+-9)] = r24;
+	r24 = (r1 + 60)|0;
+	heap32[(fp+-8)] = r24;
+	heap32[(r2+31)] = heap32[(r2+15)];
+	heap32[(r2+32)] = heap32[(r2+16)];
+}
+	r2 = r0 >> 2;
+	heap32[(r2+33)] = heap32[(r2+76)];
+	heap32[(r2+34)] = heap32[(r2+77)];
+	heap32[(r2+35)] = heap32[(r2+78)];
+	heap32[(r2+36)] = heap32[(r2+79)];
+	heap32[(r2+37)] = heap32[(r2+80)];
+	heap32[(r2+38)] = heap32[(r2+81)];
+	heap32[(r2+39)] = heap32[(r2+82)];
+	r3 = r3 >> 2;
+	r1 = r1 >> 2;
+	heap32[(r2+40)] = heap32[(r2+83)];
+	r2 = r4 >> 2;
+	r4 = r15 >> 2;
+	heap32[(r3)] = heap32[(r1)];
+	r1 = r5 >> 2;
+	r3 = r16 >> 2;
+	heap32[(r2)] = heap32[(r4)];
+	r2 = r6 >> 2;
+	r4 = r17 >> 2;
+	heap32[(r1)] = heap32[(r3)];
+	r1 = r7 >> 2;
+	r3 = r18 >> 2;
+	heap32[(r2)] = heap32[(r4)];
+	r2 = r8 >> 2;
+	r4 = r19 >> 2;
+	heap32[(r1)] = heap32[(r3)];
+	r1 = r9 >> 2;
+	r3 = r20 >> 2;
+	heap32[(r2)] = heap32[(r4)];
+	r2 = r10 >> 2;
+	r4 = r21 >> 2;
+	heap32[(r1)] = heap32[(r3)];
+	r1 = r11 >> 2;
+	r3 = r22 >> 2;
+	heap32[(r2)] = heap32[(r4)];
+	r2 = r12 >> 2;
+	r4 = r23 >> 2;
+	heap32[(r1)] = heap32[(r3)];
+	r1 = r13 >> 2;
+	r3 = heap32[(fp+-10)];
+	r3 = r3 >> 2;
+	heap32[(r2)] = heap32[(r4)];
+	r2 = r14 >> 2;
+	r4 = heap32[(fp+-4)];
+	r4 = r4 >> 2;
+	heap32[(r1)] = heap32[(r3)];
+	r1 = heap32[(fp+-5)];
+	r1 = r1 >> 2;
+	r3 = heap32[(fp+-7)];
+	r3 = r3 >> 2;
+	heap32[(r2)] = heap32[(r4)];
+	r2 = heap32[(fp+-3)];
+	r2 = r2 >> 2;
+	r4 = heap32[(fp+-6)];
+	r4 = r4 >> 2;
+	heap32[(r1)] = heap32[(r3)];
+	r1 = heap32[(fp+-2)];
+	r1 = r1 >> 2;
+	r3 = heap32[(fp+-9)];
+	r3 = r3 >> 2;
+	heap32[(r2)] = heap32[(r4)];
+	r2 = heap32[(fp+-1)];
+	r2 = r2 >> 2;
+	r4 = heap32[(fp+-8)];
+	r4 = r4 >> 2;
+	heap32[(r1)] = heap32[(r3)];
+	heap32[(r2)] = heap32[(r4)];
+	heap32[(g0)] = r0;
+	_ZN11btRigidBody19updateInertiaTensorEv(i7);
+	return;
+}
+
+function _ZNK11btRigidBody28calculateSerializeBufferSizeEv(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+var __label__ = 0;
+	i7 = sp + 0;var g0 = i7>>2; // save stack
+	r0 = 480;
+	r_g0 = r0;
+	return;
+}
+
+function _ZNK11btRigidBody21serializeSingleObjectEP12btSerializer(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+var __label__ = 0;
+	i7 = sp + -24;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = heap32[(fp+1)];
+	r2 = r0 >> 2;
+	r3 = r1 >> 2;
+	r4 = heap32[(r3)];
+	r5 = heap32[(r2)];
+	r4 = r4 >> 2;
+	r5 = r5 >> 2;
+	r4 = heap32[(r4+4)];
+	r5 = heap32[(r5+4)];
+	heap32[(g0)] = r0;
+	__FUNCTION_TABLE__[(r5)>>2](i7);
+	heap32[(g0)] = r1;
+	heap32[(g0+1)] = r_g0;
+	heap32[(g0+2)] = 1;
+	__FUNCTION_TABLE__[(r4)>>2](i7);
+	r4 = r_g0;
+	r2 = heap32[(r2)];
+	r2 = r2 >> 2;
+	r5 = r4 >> 2;
+	r2 = heap32[(r2+5)];
+	r5 = heap32[(r5+2)];
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r5;
+	heap32[(g0+2)] = r1;
+	__FUNCTION_TABLE__[(r2)>>2](i7);
+	r3 = heap32[(r3)];
+	r3 = r3 >> 2;
+	r3 = heap32[(r3+5)];
+	heap32[(g0)] = r1;
+	heap32[(g0+1)] = r4;
+	heap32[(g0+2)] = r_g0;
+	heap32[(g0+3)] = 1497645650;
+	heap32[(g0+4)] = r0;
+	__FUNCTION_TABLE__[(r3)>>2](i7);
+	return;
+}
+
+function _ZN11btRigidBody24checkCollideWithOverrideEP17btCollisionObject(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+var __label__ = 0;
+	i7 = sp + 0;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp+1)];
+	r1 = heapU8[r0+232];
+	r1 = r1 & 2;
+_1: do {
+	if(r1 !=0) //_LBB681_2
+{
+	if(r0 ==0) //_LBB681_1
+{
+__label__ = 1;
+}
+else{
+	r1 = heap32[(fp)];
+	r1 = r1 >> 2;
+	r2 = heap32[(r1+120)];
+	r3 = 0;
+_4: while(true){
+	if(r2 >r3) //_LBB681_4
+{
+	r4 = heap32[(r1+122)];
+	r5 = r3 << 2;
+	r4 = (r4 + r5)|0;
+	r4 = r4 >> 2;
+	r4 = heap32[(r4)];
+	r4 = r4 >> 2;
+	r5 = heap32[(r4+5)];
+	if(r5 !=r0) //_LBB681_6
+{
+	r4 = heap32[(r4+6)];
+	if(r4 ==r0) //_LBB681_5
+{
+break _4;
+}
+else{
+	r3 = (r3 + 1)|0;
+}
+}
+else{
+break _4;
+}
+}
+else{
+__label__ = 1;
+break _1;
+}
+}
+	r0 = 0;
+__label__ = 9;
+}
+}
+else{
+__label__ = 1;
+}
+} while(0);
+if (__label__ == 1){
+	r0 = 1;
+}
+	r0 = r0 & 255;
+	r_g0 = r0;
+	return;
+}
+
+function _ZN11btRigidBody14setupRigidBodyERKNS_27btRigidBodyConstructionInfoE(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+	var r6;
+	var f0;
+	var f1;
+	var f2;
+	var f3;
+	var f4;
+	var f5;
+	var f6;
+	var f7;
+	var f8;
+	var f9;
+	var f10;
+	var f11;
+	var f12;
+	var f13;
+	var f14;
+	var f15;
+var __label__ = 0;
+	i7 = sp + -16;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = r0 >> 2;
+	heap32[(r1+58)] = 2;
+	heap32[(r1+76)] = 0;
+	heap32[(r1+77)] = 0;
+	heap32[(r1+78)] = 0;
+	heap32[(r1+79)] = 0;
+	heap32[(r1+80)] = 0;
+	heap32[(r1+81)] = 0;
+	heap32[(r1+82)] = 0;
+	heap32[(r1+83)] = 0;
+	heap32[(r1+134)] = 1065353216;
+	heap32[(r1+135)] = 1065353216;
+	heap32[(r1+136)] = 1065353216;
+	heap32[(r1+137)] = 0;
+	heap32[(r1+85)] = 1065353216;
+	heap32[(r1+86)] = 1065353216;
+	heap32[(r1+87)] = 1065353216;
+	heap32[(r1+88)] = 0;
+	heap32[(r1+89)] = 0;
+	heap32[(r1+90)] = 0;
+	heap32[(r1+91)] = 0;
+	heap32[(r1+92)] = 0;
+	heap32[(r1+93)] = 0;
+	heap32[(r1+94)] = 0;
+	heap32[(r1+95)] = 0;
+	heap32[(r1+96)] = 0;
+	heap32[(r1+101)] = 0;
+	heap32[(r1+102)] = 0;
+	heap32[(r1+103)] = 0;
+	heap32[(r1+104)] = 0;
+	heap32[(r1+105)] = 0;
+	heap32[(r1+106)] = 0;
+	heap32[(r1+107)] = 0;
+	heap32[(r1+108)] = 0;
+	heap32[(r1+109)] = 0;
+	r2 = heap32[(fp+1)];
+	heap32[(r1+110)] = 1056964608;
+	r3 = r2 >> 2;
+	heap32[(r1+116)] = heap32[(r3+27)];
+	heap32[(r1+117)] = heap32[(r3+28)];
+	r4 = heap32[(r3+1)];
+	heap32[(r1+118)] = r4;
+	heap32[(r1+150)] = 0;
+	heap32[(r1+151)] = 0;
+	r5 = heapU8[r2+116];
+	heap8[r0+444] = r5;
+	heap32[(r1+112)] = heap32[(r3+30)];
+	heap32[(r1+113)] = heap32[(r3+31)];
+	heap32[(r1+114)] = heap32[(r3+32)];
+	heap32[(r1+115)] = heap32[(r3+33)];
+	if(r4 ==0) //_LBB682_2
+{
+	f0 = heapFloat[(r3+2)];
+	heapFloat[(r1+1)] = f0;
+	f1 = heapFloat[(r3+3)];
+	heapFloat[(r1+2)] = f1;
+	f2 = heapFloat[(r3+4)];
+	heapFloat[(r1+3)] = f2;
+	f3 = heapFloat[(r3+5)];
+	heapFloat[(r1+4)] = f3;
+	f4 = heapFloat[(r3+6)];
+	heapFloat[(r1+5)] = f4;
+	f5 = heapFloat[(r3+7)];
+	heapFloat[(r1+6)] = f5;
+	f6 = heapFloat[(r3+8)];
+	heapFloat[(r1+7)] = f6;
+	f7 = heapFloat[(r3+9)];
+	heapFloat[(r1+8)] = f7;
+	f8 = heapFloat[(r3+10)];
+	heapFloat[(r1+9)] = f8;
+	f9 = heapFloat[(r3+11)];
+	heapFloat[(r1+10)] = f9;
+	f10 = heapFloat[(r3+12)];
+	heapFloat[(r1+11)] = f10;
+	f11 = heapFloat[(r3+13)];
+	heapFloat[(r1+12)] = f11;
+	f12 = heapFloat[(r3+14)];
+	heapFloat[(r1+13)] = f12;
+	f13 = heapFloat[(r3+15)];
+	heapFloat[(r1+14)] = f13;
+	f14 = heapFloat[(r3+16)];
+	heapFloat[(r1+15)] = f14;
+	f15 = heapFloat[(r3+17)];
+	heapFloat[(r1+16)] = f15;
+}
+else{
+	r5 = r4 >> 2;
+	r5 = heap32[(r5)];
+	r5 = r5 >> 2;
+	r5 = heap32[(r5+2)];
+	r6 = (r0 + 4)|0;
+	heap32[(g0)] = r4;
+	heap32[(g0+1)] = r6;
+	__FUNCTION_TABLE__[(r5)>>2](i7);
+	f0 = heapFloat[(r1+1)];
+	f1 = heapFloat[(r1+2)];
+	f2 = heapFloat[(r1+3)];
+	f3 = heapFloat[(r1+4)];
+	f4 = heapFloat[(r1+5)];
+	f5 = heapFloat[(r1+6)];
+	f6 = heapFloat[(r1+7)];
+	f7 = heapFloat[(r1+8)];
+	f8 = heapFloat[(r1+9)];
+	f9 = heapFloat[(r1+10)];
+	f10 = heapFloat[(r1+11)];
+	f11 = heapFloat[(r1+12)];
+	f12 = heapFloat[(r1+13)];
+	f13 = heapFloat[(r1+14)];
+	f14 = heapFloat[(r1+15)];
+	f15 = heapFloat[(r1+16)];
+}
+	heapFloat[(r1+17)] = f0;
+	heapFloat[(r1+18)] = f1;
+	heapFloat[(r1+19)] = f2;
+	heapFloat[(r1+20)] = f3;
+	heapFloat[(r1+21)] = f4;
+	heapFloat[(r1+22)] = f5;
+	heapFloat[(r1+23)] = f6;
+	heapFloat[(r1+24)] = f7;
+	heapFloat[(r1+25)] = f8;
+	heapFloat[(r1+26)] = f9;
+	heapFloat[(r1+27)] = f10;
+	heapFloat[(r1+28)] = f11;
+	heapFloat[(r1+29)] = f12;
+	heapFloat[(r1+30)] = f13;
+	heapFloat[(r1+31)] = f14;
+	heapFloat[(r1+32)] = f15;
+	heap32[(r1+33)] = 0;
+	heap32[(r1+34)] = 0;
+	heap32[(r1+35)] = 0;
+	heap32[(r1+36)] = 0;
+	heap32[(r1+37)] = 0;
+	heap32[(r1+38)] = 0;
+	heap32[(r1+39)] = 0;
+	heap32[(r1+40)] = 0;
+	heap32[(r1+56)] = heap32[(r3+25)];
+	heap32[(r1+57)] = heap32[(r3+26)];
+	r4 = heap32[(r1)];
+	r4 = r4 >> 2;
+	r4 = heap32[(r4+3)];
+	r5 = heap32[(r3+18)];
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r5;
+	r5 = _ZL8uniqueId;
+	r5 = r5 >> 2;
+	__FUNCTION_TABLE__[(r4)>>2](i7);
+	r4 = heap32[(r5)];
+	r6 = (r4 + 1)|0;
+	heap32[(r1+125)] = r4;
+	heap32[(r5)] = r6;
+	f0 = heapFloat[(r3)];
+	r2 = (r2 + 76)|0;
+	heap32[(g0)] = r0;
+	heapFloat[(g0+1)] = f0;
+	heap32[(g0+2)] = r2;
+	_ZN11btRigidBody12setMassPropsEfRK9btVector3(i7);
+	f0 = heapFloat[(r3+23)];
+	f1 = heapFloat[(r3+24)];
+	f2 =                         0;
+	if(f0 >=f2) //_LBB682_5
+{
+	f3 =                         1;
+	f0 = f0 > f3 ? f3 : f0;
+}
+else{
+	f0 = f2;
+}
+	heapFloat[(r1+109)] = f0;
+	if(f1 >=f2) //_LBB682_8
+{
+	f0 =                         1;
+	f1 = f1 > f0 ? f0 : f1;
+}
+else{
+	f1 =                         0;
+}
+	heapFloat[(r1+110)] = f1;
+	heap32[(g0)] = r0;
+	_ZN11btRigidBody19updateInertiaTensorEv(i7);
+	heap32[(r1+124)] = 0;
+	heap32[(r1+126)] = 0;
+	heap32[(r1+127)] = 0;
+	heap32[(r1+128)] = 0;
+	heap32[(r1+129)] = 0;
+	heap32[(r1+130)] = 0;
+	heap32[(r1+131)] = 0;
+	heap32[(r1+132)] = 0;
+	heap32[(r1+133)] = 0;
+	f0 = heapFloat[(r1+87)];
+	f1 = heapFloat[(r1+84)];
+	f2 = heapFloat[(r1+86)];
+	f3 = heapFloat[(r1+85)];
+	f3 = f3*f1;
+	f2 = f2*f1;
+	heapFloat[(r1+138)] = f3;
+	f0 = f0*f1;
+	heapFloat[(r1+139)] = f2;
+	heapFloat[(r1+140)] = f0;
+	heap32[(r1+141)] = 0;
+	heap32[(r1+142)] = 0;
+	heap32[(r1+143)] = 0;
+	heap32[(r1+144)] = 0;
+	heap32[(r1+145)] = 0;
+	heap32[(r1+146)] = 0;
+	heap32[(r1+147)] = 0;
+	heap32[(r1+148)] = 0;
+	heap32[(r1+149)] = 0;
+	return;
+}
+
+function _ZN11btRigidBodyD0Ev(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+var __label__ = 0;
+	i7 = sp + -16;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = _ZTV11btRigidBody;
+	r2 = r0 >> 2;
+	r1 = (r1 + 8)|0;
+	heap32[(r2)] = r1;
+	r1 = heap32[(r2+120)];
+	if(r1 ==0) //_LBB683_2
+{
+	r1 = heap32[(r2+122)];
+if(!(r1 ==0)) //_LBB683_6
+{
+	r3 = heapU8[r0+492];
+if(!(r3 ==0)) //_LBB683_5
+{
+	r3 = gNumAlignedFree;
+	r3 = r3 >> 2;
+	r4 = heap32[(r3)];
+	r4 = (r4 + 1)|0;
+	r1 = r1 >> 2;
+	heap32[(r3)] = r4;
+	r1 = heap32[(r1+-1)];
+	heap32[(g0)] = r1;
+	free(i7);
+}
+	heap32[(r2+122)] = 0;
+}
+	r1 = 1;
+	heap8[r0+492] = r1;
+	heap32[(r2+122)] = 0;
+	r1 = _ZTV17btCollisionObject;
+	heap32[(r2+120)] = 0;
+	r1 = (r1 + 8)|0;
+	heap32[(r2+121)] = 0;
+	heap32[(r2)] = r1;
+if(!(r0 ==0)) //_LBB683_8
+{
+	r0 = gNumAlignedFree;
+	r0 = r0 >> 2;
+	r1 = heap32[(r0)];
+	r1 = (r1 + 1)|0;
+	heap32[(r0)] = r1;
+	r0 = heap32[(r2+-1)];
+	heap32[(g0)] = r0;
+	free(i7);
+}
+	return;
+}
+else{
+	r0 = _2E_str248;
+	r2 = _2E_str34955;
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r2;
+	heap32[(g0+2)] = 175;
+	_assert(i7);
+}
+}
+
+function _ZN11btRigidBodyD1Ev(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+var __label__ = 0;
+	i7 = sp + -16;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = _ZTV11btRigidBody;
+	r2 = r0 >> 2;
+	r1 = (r1 + 8)|0;
+	heap32[(r2)] = r1;
+	r1 = heap32[(r2+120)];
+	if(r1 ==0) //_LBB684_2
+{
+	r1 = heap32[(r2+122)];
+if(!(r1 ==0)) //_LBB684_6
+{
+	r3 = heapU8[r0+492];
+if(!(r3 ==0)) //_LBB684_5
+{
+	r3 = gNumAlignedFree;
+	r3 = r3 >> 2;
+	r4 = heap32[(r3)];
+	r4 = (r4 + 1)|0;
+	r1 = r1 >> 2;
+	heap32[(r3)] = r4;
+	r1 = heap32[(r1+-1)];
+	heap32[(g0)] = r1;
+	free(i7);
+}
+	heap32[(r2+122)] = 0;
+}
+	r1 = 1;
+	heap8[r0+492] = r1;
+	heap32[(r2+122)] = 0;
+	r0 = _ZTV17btCollisionObject;
+	heap32[(r2+120)] = 0;
+	r0 = (r0 + 8)|0;
+	heap32[(r2+121)] = 0;
+	heap32[(r2)] = r0;
+	return;
+}
+else{
+	r0 = _2E_str248;
+	r2 = _2E_str34955;
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r2;
+	heap32[(g0+2)] = 175;
+	_assert(i7);
+}
+}
+
+function _ZNK11btRigidBody9serializeEPvP12btSerializer(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+var __label__ = 0;
+	i7 = sp + -16;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = heap32[(fp+1)];
+	r2 = heap32[(fp+2)];
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r1;
+	heap32[(g0+2)] = r2;
+	r1 = r1 >> 2;
+	r2 = r0 >> 2;
+	_ZNK17btCollisionObject9serializeEPvP12btSerializer(i7);
+	heap32[(r1+62)] = heap32[(r2+64)];
+	heap32[(r1+63)] = heap32[(r2+65)];
+	heap32[(r1+64)] = heap32[(r2+66)];
+	heap32[(r1+65)] = heap32[(r2+67)];
+	heap32[(r1+66)] = heap32[(r2+68)];
+	heap32[(r1+67)] = heap32[(r2+69)];
+	heap32[(r1+68)] = heap32[(r2+70)];
+	heap32[(r1+69)] = heap32[(r2+71)];
+	heap32[(r1+70)] = heap32[(r2+72)];
+	heap32[(r1+71)] = heap32[(r2+73)];
+	heap32[(r1+72)] = heap32[(r2+74)];
+	heap32[(r1+73)] = heap32[(r2+75)];
+	heap32[(r1+74)] = heap32[(r2+76)];
+	heap32[(r1+75)] = heap32[(r2+77)];
+	heap32[(r1+76)] = heap32[(r2+78)];
+	heap32[(r1+77)] = heap32[(r2+79)];
+	heap32[(r1+78)] = heap32[(r2+80)];
+	heap32[(r1+79)] = heap32[(r2+81)];
+	heap32[(r1+80)] = heap32[(r2+82)];
+	heap32[(r1+81)] = heap32[(r2+83)];
+	heap32[(r1+110)] = heap32[(r2+84)];
+	heap32[(r1+82)] = heap32[(r2+134)];
+	heap32[(r1+83)] = heap32[(r2+135)];
+	heap32[(r1+84)] = heap32[(r2+136)];
+	heap32[(r1+85)] = heap32[(r2+137)];
+	heap32[(r1+86)] = heap32[(r2+85)];
+	heap32[(r1+87)] = heap32[(r2+86)];
+	heap32[(r1+88)] = heap32[(r2+87)];
+	heap32[(r1+89)] = heap32[(r2+88)];
+	heap32[(r1+90)] = heap32[(r2+89)];
+	heap32[(r1+91)] = heap32[(r2+90)];
+	heap32[(r1+92)] = heap32[(r2+91)];
+	heap32[(r1+93)] = heap32[(r2+92)];
+	heap32[(r1+94)] = heap32[(r2+93)];
+	heap32[(r1+95)] = heap32[(r2+94)];
+	heap32[(r1+96)] = heap32[(r2+95)];
+	heap32[(r1+97)] = heap32[(r2+96)];
+	heap32[(r1+98)] = heap32[(r2+97)];
+	heap32[(r1+99)] = heap32[(r2+98)];
+	heap32[(r1+100)] = heap32[(r2+99)];
+	heap32[(r1+101)] = heap32[(r2+100)];
+	heap32[(r1+102)] = heap32[(r2+101)];
+	heap32[(r1+103)] = heap32[(r2+102)];
+	heap32[(r1+104)] = heap32[(r2+103)];
+	heap32[(r1+105)] = heap32[(r2+104)];
+	heap32[(r1+106)] = heap32[(r2+105)];
+	heap32[(r1+107)] = heap32[(r2+106)];
+	heap32[(r1+108)] = heap32[(r2+107)];
+	heap32[(r1+109)] = heap32[(r2+108)];
+	heap32[(r1+111)] = heap32[(r2+109)];
+	heap32[(r1+112)] = heap32[(r2+110)];
+	r0 = heapU8[r0+444];
+	heap32[(r1+119)] = r0;
+	heap32[(r1+113)] = heap32[(r2+112)];
+	heap32[(r1+114)] = heap32[(r2+113)];
+	heap32[(r1+115)] = heap32[(r2+114)];
+	heap32[(r1+116)] = heap32[(r2+115)];
+	heap32[(r1+117)] = heap32[(r2+116)];
+	heap32[(r1+118)] = heap32[(r2+117)];
+	r0 = _2E_str4144;
+	r_g0 = r0;
+	return;
+}
+
+function _ZN11btRigidBody16addConstraintRefEP17btTypedConstraint(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+	var r6;
+	var r7;
+	var r8;
+	var r9;
+	var r10;
+var __label__ = 0;
+	i7 = sp + -8;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = r0 >> 2;
+	r2 = heap32[(fp+1)];
+	r3 = heap32[(r1+120)];
+	r4 = 0;
+_1: while(true){
+	if(r3 >r4) //_LBB686_1
+{
+	r5 = heap32[(r1+122)];
+	r6 = r4 << 2;
+	r5 = (r5 + r6)|0;
+	r5 = r5 >> 2;
+	r5 = heap32[(r5)];
+	if(r5 !=r2) //_LBB686_3
+{
+	r4 = (r4 + 1)|0;
+continue _1;
+}
+else{
+__label__ = 5;
+break _1;
+}
+}
+else{
+__label__ = 4;
+break _1;
+}
+}
+if (__label__ == 4){
+	r4 = r3;
+}
+if(!(r3 !=r4)) //_LBB686_27
+{
+	r4 = heap32[(r1+121)];
+	if(r4 ==r3) //_LBB686_9
+{
+	r5 = 1;
+	r6 = r3 << 1;
+	r6 = r3 == 0 ? r5 : r6;
+if(!(r4 >=r6)) //_LBB686_8
+{
+	if(r6 !=0) //_LBB686_12
+{
+	r4 = gNumAlignedAllocs;
+	r4 = r4 >> 2;
+	r7 = heap32[(r4)];
+	r8 = r6 << 2;
+	r7 = (r7 + 1)|0;
+	r8 = r8 | 3;
+	heap32[(r4)] = r7;
+	r4 = (r8 + 16)|0;
+	heap32[(g0)] = r4;
+	malloc(i7);
+	r4 = r_g0;
+	if(r4 !=0) //_LBB686_14
+{
+	r7 = 0;
+	r8 = (r4 + 4)|0;
+	r7 = (r7 - r8)|0;
+	r7 = r7 & 15;
+	r7 = (r4 + r7)|0;
+	r8 = (r7 + 4)|0;
+	r7 = r7 >> 2;
+	heap32[(r7)] = r4;
+	r4 = r8;
+}
+}
+else{
+	r4 = 0;
+}
+_18: do {
+	if(r3 <1) //_LBB686_17
+{
+	r8 = heap32[(r1+122)];
+}
+else{
+	r7 = 0;
+_21: while(true){
+	r8 = heap32[(r1+122)];
+	r9 = r7 << 2;
+	r10 = (r8 + r9)|0;
+	r10 = r10 >> 2;
+	r9 = (r4 + r9)|0;
+	r10 = heap32[(r10)];
+	r7 = (r7 + 1)|0;
+	r9 = r9 >> 2;
+	heap32[(r9)] = r10;
+if(!(r3 !=r7)) //_LBB686_18
+{
+break _18;
+}
+}
+}
+} while(0);
+	if(r8 !=0) //_LBB686_21
+{
+	r7 = heapU8[r0+492];
+	if(r7 !=0) //_LBB686_23
+{
+	r3 = gNumAlignedFree;
+	r3 = r3 >> 2;
+	r7 = heap32[(r3)];
+	r7 = (r7 + 1)|0;
+	r8 = r8 >> 2;
+	heap32[(r3)] = r7;
+	r3 = heap32[(r8+-1)];
+	heap32[(g0)] = r3;
+	free(i7);
+	r3 = heap32[(r1+120)];
+}
+	heap32[(r1+122)] = 0;
+}
+	heap8[r0+492] = r5;
+	heap32[(r1+122)] = r4;
+	heap32[(r1+121)] = r6;
+}
+}
+	r0 = r3 << 2;
+	r3 = heap32[(r1+122)];
+	r0 = (r3 + r0)|0;
+	r0 = r0 >> 2;
+	heap32[(r0)] = r2;
+	r0 = heap32[(r1+120)];
+	r0 = (r0 + 1)|0;
+	heap32[(r1+120)] = r0;
+}
+	heap32[(r1+63)] = 1;
+	return;
+}
+
+function _ZN11btRigidBody19integrateVelocitiesEf(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var f0;
+	var f1;
+	var f2;
+	var f3;
+	var f4;
+	var f5;
+	var f6;
+	var f7;
+	var f8;
+	var f9;
+	var f10;
+	var f11;
+var __label__ = 0;
+	i7 = sp + -8;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = heapU8[r0+204];
+	r1 = r1 & 3;
+if(!(r1 !=0)) //_LBB687_3
+{
+	f0 = heapFloat[(fp+1)];
+	r0 = r0 >> 2;
+	f1 = heapFloat[(r0+84)];
+	f1 = f1*f0;
+	f2 = heapFloat[(r0+101)];
+	f3 = heapFloat[(r0+103)];
+	f4 = heapFloat[(r0+102)];
+	f5 = heapFloat[(r0+76)];
+	f2 = f2*f1;
+	f2 = f5+f2;
+	heapFloat[(r0+76)] = f2;
+	f2 = f4*f1;
+	f4 = heapFloat[(r0+77)];
+	f2 = f4+f2;
+	heapFloat[(r0+77)] = f2;
+	f1 = f3*f1;
+	f2 = heapFloat[(r0+78)];
+	f1 = f2+f1;
+	heapFloat[(r0+78)] = f1;
+	f1 = heapFloat[(r0+105)];
+	f2 = heapFloat[(r0+64)];
+	f3 = heapFloat[(r0+106)];
+	f4 = heapFloat[(r0+65)];
+	f2 = f2*f1;
+	f4 = f4*f3;
+	f5 = heapFloat[(r0+107)];
+	f6 = heapFloat[(r0+66)];
+	f2 = f2+f4;
+	f4 = f6*f5;
+	f2 = f2+f4;
+	f4 = heapFloat[(r0+68)];
+	f6 = heapFloat[(r0+69)];
+	f7 = heapFloat[(r0+72)];
+	f8 = heapFloat[(r0+73)];
+	f9 = heapFloat[(r0+74)];
+	f10 = heapFloat[(r0+70)];
+	f11 = heapFloat[(r0+80)];
+	f2 = f2*f0;
+	f4 = f4*f1;
+	f6 = f6*f3;
+	f2 = f11+f2;
+	f4 = f4+f6;
+	f6 = f10*f5;
+	f4 = f4+f6;
+	heapFloat[(r0+80)] = f2;
+	f1 = f7*f1;
+	f3 = f8*f3;
+	f4 = f4*f0;
+	f6 = heapFloat[(r0+81)];
+	f4 = f6+f4;
+	f1 = f1+f3;
+	f3 = f9*f5;
+	f1 = f1+f3;
+	heapFloat[(r0+81)] = f4;
+	f1 = f1*f0;
+	f3 = heapFloat[(r0+82)];
+	f1 = f3+f1;
+	f2 = f2*f2;
+	f3 = f4*f4;
+	heapFloat[(r0+82)] = f1;
+	f2 = f2+f3;
+	f1 = f1*f1;
+	f1 = f2+f1;
+	heapFloat[(g0)] = f1;
+	sqrtf(i7);
+	f1 = f_g0;
+	f2 = f1*f0;
+	f3 =        1.5707963705062866;
+if(!(f2 <=f3)) //_LBB687_3
+{
+	f0 = f3/f0;
+	f0 = f0/f1;
+	f1 = heapFloat[(r0+80)];
+	f1 = f1*f0;
+	heapFloat[(r0+80)] = f1;
+	f1 = heapFloat[(r0+81)];
+	f1 = f1*f0;
+	heapFloat[(r0+81)] = f1;
+	f1 = heapFloat[(r0+82)];
+	f0 = f1*f0;
+	heapFloat[(r0+82)] = f0;
+}
+}
+	return;
+}
+
+function _ZN11btRigidBody12applyDampingEf(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var f0;
+	var f1;
+	var f2;
+	var f3;
+	var f4;
+	var f5;
+	var f6;
+	var f7;
+	var f8;
+var __label__ = 0;
+	i7 = sp + -8;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = r0 >> 2;
+	f0 = heapFloat[(r1+109)];
+	f1 =                         1;
+	f2 = heapFloat[(fp+1)];
+	f0 = f1-f0;
+	heapFloat[(g0)] = f0;
+	heapFloat[(g0+1)] = f2;
+	powf(i7);
+	f3 = heapFloat[(r1+76)];
+	f3 = f3*f_g0;
+	heapFloat[(r1+76)] = f3;
+	f3 = heapFloat[(r1+77)];
+	f3 = f3*f_g0;
+	heapFloat[(r1+77)] = f3;
+	f3 = heapFloat[(r1+78)];
+	f0 = f3*f_g0;
+	heapFloat[(r1+78)] = f0;
+	f0 = heapFloat[(r1+110)];
+	f0 = f1-f0;
+	heapFloat[(g0)] = f0;
+	heapFloat[(g0+1)] = f2;
+	powf(i7);
+	f2 = heapFloat[(r1+80)];
+	f2 = f2*f_g0;
+	heapFloat[(r1+80)] = f2;
+	f3 = heapFloat[(r1+81)];
+	f3 = f3*f_g0;
+	heapFloat[(r1+81)] = f3;
+	f4 = heapFloat[(r1+82)];
+	f0 = f4*f_g0;
+	heapFloat[(r1+82)] = f0;
+	r0 = heapU8[r0+444];
+if(!(r0 ==0)) //_LBB688_14
+{
+	f4 = f2*f2;
+	f5 = f3*f3;
+	f6 = heapFloat[(r1+76)];
+	f4 = f4+f5;
+	f5 = f0*f0;
+	f4 = f4+f5;
+	f5 = heapFloat[(r1+114)];
+	if(f4 <f5) //_LBB688_3
+{
+	f4 = heapFloat[(r1+77)];
+	f5 = heapFloat[(r1+78)];
+	f7 = f6*f6;
+	f8 = f4*f4;
+	f7 = f7+f8;
+	f8 = f5*f5;
+	f7 = f7+f8;
+	f8 = heapFloat[(r1+113)];
+	if(f7 <f8) //_LBB688_5
+{
+	f7 = heapFloat[(r1+112)];
+	f2 = f2*f7;
+	f3 = f3*f7;
+	heapFloat[(r1+80)] = f2;
+	f0 = f0*f7;
+	heapFloat[(r1+81)] = f3;
+	f6 = f6*f7;
+	heapFloat[(r1+82)] = f0;
+	f4 = f4*f7;
+	heapFloat[(r1+76)] = f6;
+	f5 = f5*f7;
+	heapFloat[(r1+77)] = f4;
+	heapFloat[(r1+78)] = f5;
+}
+}
+else{
+	f4 = heapFloat[(r1+77)];
+	f5 = heapFloat[(r1+78)];
+}
+	f0 = f6*f6;
+	f2 = f4*f4;
+	f0 = f0+f2;
+	f2 = f5*f5;
+	f0 = f0+f2;
+	heapFloat[(g0)] = f0;
+	sqrtf(i7);
+	f0 = f_g0;
+	f2 = heapFloat[(r1+109)];
+if(!(f2 <=f0)) //_LBB688_10
+{
+	f2 =      0.004999999888241291;
+	if(f0 <=f2) //_LBB688_9
+{
+	heap32[(r1+76)] = 0;
+	heap32[(r1+77)] = 0;
+	heap32[(r1+78)] = 0;
+	heap32[(r1+79)] = 0;
+}
+else{
+	f0 = heapFloat[(r1+76)];
+	f3 = heapFloat[(r1+77)];
+	f4 = heapFloat[(r1+78)];
+	f0 = f0*f0;
+	f3 = f3*f3;
+	f0 = f0+f3;
+	f3 = f4*f4;
+	f0 = f0+f3;
+	heapFloat[(g0)] = f0;
+	sqrtf(i7);
+	f0 = f1/f_g0;
+	f3 = heapFloat[(r1+76)];
+	f4 = heapFloat[(r1+77)];
+	f5 = f3*f0;
+	f6 = heapFloat[(r1+78)];
+	f7 = f4*f0;
+	f5 = f5*f2;
+	f0 = f6*f0;
+	f7 = f7*f2;
+	f3 = f3-f5;
+	f0 = f0*f2;
+	f2 = f4-f7;
+	heapFloat[(r1+76)] = f3;
+	f0 = f6-f0;
+	heapFloat[(r1+77)] = f2;
+	heapFloat[(r1+78)] = f0;
+}
+}
+	f0 = heapFloat[(r1+80)];
+	f2 = heapFloat[(r1+81)];
+	f3 = heapFloat[(r1+82)];
+	f0 = f0*f0;
+	f2 = f2*f2;
+	f0 = f0+f2;
+	f2 = f3*f3;
+	f0 = f0+f2;
+	heapFloat[(g0)] = f0;
+	sqrtf(i7);
+	f0 = f_g0;
+	f2 = heapFloat[(r1+110)];
+if(!(f2 <=f0)) //_LBB688_14
+{
+	f2 =      0.004999999888241291;
+	if(f0 <=f2) //_LBB688_13
+{
+	heap32[(r1+80)] = 0;
+	heap32[(r1+81)] = 0;
+	heap32[(r1+82)] = 0;
+	heap32[(r1+83)] = 0;
+}
+else{
+	f0 = heapFloat[(r1+80)];
+	f3 = heapFloat[(r1+81)];
+	f4 = heapFloat[(r1+82)];
+	f0 = f0*f0;
+	f3 = f3*f3;
+	f0 = f0+f3;
+	f3 = f4*f4;
+	f0 = f0+f3;
+	heapFloat[(g0)] = f0;
+	sqrtf(i7);
+	f0 = f1/f_g0;
+	f1 = heapFloat[(r1+80)];
+	f3 = heapFloat[(r1+81)];
+	f4 = f1*f0;
+	f5 = heapFloat[(r1+82)];
+	f6 = f3*f0;
+	f4 = f4*f2;
+	f0 = f5*f0;
+	f6 = f6*f2;
+	f1 = f1-f4;
+	f0 = f0*f2;
+	f2 = f3-f6;
+	heapFloat[(r1+80)] = f1;
+	f0 = f5-f0;
+	heapFloat[(r1+81)] = f2;
+	heapFloat[(r1+82)] = f0;
+	return;
+}
+}
+}
+	return;
+}
+
+function _GLOBAL__I__ZN7btClockC2Ev(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+var __label__ = 0;
+	i7 = sp + -8;var g0 = i7>>2; // save stack
+	r0 = _ZL13gProfileClock_2E_0;
+	heap32[(g0)] = 8;
+	r0 = r0 >> 2;
+	_Znwj(i7);
+	heap32[(r0)] = r_g0;
+	heap32[(g0)] = r_g0;
+	heap32[(g0+1)] = 0;
+	r0 = _ZN15CProfileManager4RootE;
+	r1 = r0 >> 2;
+	r2 = _2E_str729;
+	gettimeofday(i7);
+	heap32[(r1)] = r2;
+	heap32[(r1+1)] = 0;
+	heap32[(r1+2)] = 0;
+	heap32[(r1+3)] = 0;
+	heap32[(r1+4)] = 0;
+	heap32[(r1+5)] = 0;
+	heap32[(r1+6)] = 0;
+	heap32[(r1+7)] = 0;
+	heap32[(g0)] = r0;
+	_ZN12CProfileNode5ResetEv(i7);
+	return;
+}
+
+function _GLOBAL__D__ZN7btClockC2Ev(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+var __label__ = 0;
+	i7 = sp + -8;var g0 = i7>>2; // save stack
+	r0 = _ZN15CProfileManager4RootE;
+	r1 = _ZL13gProfileClock_2E_0;
+	heap32[(g0)] = r0;
+	r0 = r1 >> 2;
+	_ZN12CProfileNodeD1Ev(i7);
+	r0 = heap32[(r0)];
+	heap32[(g0)] = r0;
+	_ZdlPv(i7);
+	return;
+}
+
+function _ZN12CProfileNode5ResetEv(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+var __label__ = 0;
+	i7 = sp + -8;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+_1: while(true){
+	r0 = r0 >> 2;
+	heap32[(r0+1)] = 0;
+	heap32[(r0+2)] = 0;
+	r1 = heap32[(r0+6)];
+if(!(r1 ==0)) //_LBB691_3
+{
+	heap32[(g0)] = r1;
+	_ZN12CProfileNode5ResetEv(i7);
+}
+	r0 = heap32[(r0+7)];
+	if(r0 !=0) //_LBB691_1
+{
+continue _1;
+}
+else{
+break _1;
+}
+}
+	return;
+}
+
+function _ZN12CProfileNodeD1Ev(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+var __label__ = 0;
+	i7 = sp + -8;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r0 = r0 >> 2;
+	r1 = heap32[(r0+6)];
+if(!(r1 ==0)) //_LBB692_2
+{
+	heap32[(g0)] = r1;
+	_ZN12CProfileNodeD1Ev(i7);
+	heap32[(g0)] = r1;
+	_ZdlPv(i7);
+}
+	r0 = heap32[(r0+7)];
+if(!(r0 ==0)) //_LBB692_4
+{
+	heap32[(g0)] = r0;
+	_ZN12CProfileNodeD1Ev(i7);
+	heap32[(g0)] = r0;
+	_ZdlPv(i7);
+}
+	return;
+}
+
+function _ZN15CProfileManager13Start_ProfileEPKc(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+var __label__ = 0;
+	i7 = sp + -16;var g0 = i7>>2; // save stack
+	r0 = _ZN15CProfileManager11CurrentNodeE;
+	r0 = r0 >> 2;
+	r1 = heap32[(r0)];
+	r2 = heap32[(fp)];
+	r3 = r1 >> 2;
+	r4 = heap32[(r3)];
+	if(r4 !=r2) //_LBB693_2
+{
+	r4 = (r1 + 24)|0;
+_3: while(true){
+	r4 = r4 >> 2;
+	r4 = heap32[(r4)];
+	if(r4 !=0) //_LBB693_3
+{
+	r5 = r4 >> 2;
+	r5 = heap32[(r5)];
+	if(r5 !=r2) //_LBB693_5
+{
+	r4 = (r4 + 28)|0;
+}
+else{
+__label__ = 3;
+break _3;
+}
+}
+else{
+__label__ = 6;
+break _3;
+}
+}
+switch(__label__ ){//multiple entries
+case 6:
+	heap32[(g0)] = 32;
+	_Znwj(i7);
+	r4 = r_g0;
+	r5 = r4 >> 2;
+	heap32[(r5)] = r2;
+	heap32[(r5+1)] = 0;
+	heap32[(r5+2)] = 0;
+	heap32[(r5+3)] = 0;
+	heap32[(r5+4)] = 0;
+	heap32[(r5+5)] = r1;
+	heap32[(r5+6)] = 0;
+	heap32[(r5+7)] = 0;
+	heap32[(g0)] = r4;
+	_ZN12CProfileNode5ResetEv(i7);
+	r1 = heap32[(r3+6)];
+	heap32[(r5+7)] = r1;
+	heap32[(r3+6)] = r4;
+	r1 = r4;
+break;
+case 3:
+	r1 = r4;
+break;
+}
+	heap32[(r0)] = r1;
+}
+	r0 = r1 >> 2;
+	r1 = heap32[(r0+1)];
+	r1 = (r1 + 1)|0;
+	heap32[(r0+1)] = r1;
+	r1 = heap32[(r0+4)];
+	r2 = (r1 + 1)|0;
+	heap32[(r0+4)] = r2;
+if(!(r1 !=0)) //_LBB693_11
+{
+	r1 = sp + -8;
+	heap32[(g0)] = r1;
+	heap32[(g0+1)] = 0;
+	r2 = _ZL13gProfileClock_2E_0;
+	gettimeofday(i7);
+	r2 = r2 >> 2;
+	r2 = heap32[(r2)];
+	r2 = r2 >> 2;
+	r1 = r1 >> 2;
+	r3 = heap32[(fp+-2)];
+	r4 = heap32[(r2)];
+	r3 = (r3 - r4)|0;
+	r1 = heap32[(r1+1)];
+	r2 = heap32[(r2+1)];
+	r1 = (r1 - r2)|0;
+	r2 = (r3 * 1000000)|0;
+	r1 = (r1 + r2)|0;
+	heap32[(r0+3)] = r1;
+}
+	return;
+}
+
+function _ZN15CProfileManager5ResetEv(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+var __label__ = 0;
+	i7 = sp + -24;var g0 = i7>>2; // save stack
+	r0 = _ZL13gProfileClock_2E_0;
+	r0 = r0 >> 2;
+	r1 = heap32[(r0)];
+	heap32[(g0)] = r1;
+	heap32[(g0+1)] = 0;
+	gettimeofday(i7);
+	r1 = _ZN15CProfileManager4RootE;
+	heap32[(g0)] = r1;
+	r1 = r1 >> 2;
+	_ZN12CProfileNode5ResetEv(i7);
+	r2 = heap32[(r1+1)];
+	r2 = (r2 + 1)|0;
+	heap32[(r1+1)] = r2;
+	r2 = heap32[(r1+4)];
+	r3 = (r2 + 1)|0;
+	heap32[(r1+4)] = r3;
+if(!(r2 !=0)) //_LBB694_2
+{
+	r2 = sp + -16;
+	heap32[(g0)] = r2;
+	heap32[(g0+1)] = 0;
+	gettimeofday(i7);
+	r0 = heap32[(r0)];
+	r0 = r0 >> 2;
+	r2 = r2 >> 2;
+	r3 = heap32[(fp+-4)];
+	r4 = heap32[(r0)];
+	r3 = (r3 - r4)|0;
+	r2 = heap32[(r2+1)];
+	r0 = heap32[(r0+1)];
+	r0 = (r2 - r0)|0;
+	r2 = (r3 * 1000000)|0;
+	r0 = (r0 + r2)|0;
+	heap32[(r1+3)] = r0;
+}
+	r0 = _ZN15CProfileManager12FrameCounterE;
+	r0 = r0 >> 2;
+	heap32[(r0)] = 0;
+	r0 = sp + -8;
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = 0;
+	gettimeofday(i7);
+	return;
+}
+
+function _GLOBAL__I__ZN4__rw9__catfindEPNS_8__rw_catE(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+	var r6;
+	var r7;
+	var r8;
+	var r9;
+var __label__ = 0;
+	i7 = sp + -8;var g0 = i7>>2; // save stack
+	r0 = _ZN4__rwL12__rw_catlistE_2E_0;
+	r1 = _ZN4__rwL12__rw_catlistE_2E_1;
+	r0 = r0 >> 2;
+	r2 = _ZN4__rwL12__rw_catlistE_2E_2;
+	r1 = r1 >> 2;
+	heap32[(r0)] = 0;
+	r2 = r2 >> 2;
+	heap32[(r1)] = 0;
+	heap32[(r2)] = 0;
+	heap32[(g0)] = 136;
+	_Znwj(i7);
+	r3 = r_g0;
+if(!(r3 !=0)) //_LBB695_3
+{
+	heap32[(g0)] = 3;
+	_ZN4__rw10__rw_throwEiz(i7);
+}
+	r4 = (r3 + 136)|0;
+	heap32[(g0)] = 0;
+	_ZdlPv(i7);
+	r5 = heap32[(r0)];
+	if(r5 ==0) //_LBB695_6
+{
+	r8 = r3;
+}
+else{
+	r6 = r5;
+	r7 = r3;
+_9: while(true){
+	r9 = r6 >> 2;
+	r6 = (r6 + 4)|0;
+	r8 = (r7 + 4)|0;
+	r7 = r7 >> 2;
+	r9 = heap32[(r9)];
+	heap32[(r7)] = r9;
+	r7 = r8;
+	if(r6 !=0) //_LBB695_7
+{
+continue _9;
+}
+else{
+break _9;
+}
+}
+}
+	r6 = 0;
+_12: while(true){
+	r7 = r6 << 2;
+	r7 = (r8 + r7)|0;
+	r6 = (r6 + 1)|0;
+	r7 = r7 >> 2;
+	heap32[(r7)] = 0;
+	if(r6 !=2) //_LBB695_9
+{
+continue _12;
+}
+else{
+break _12;
+}
+}
+	r6 = heap32[(r1)];
+	if(r6 ==0) //_LBB695_12
+{
+	r6 = (r8 + 8)|0;
+	heap32[(r0)] = r3;
+	heap32[(r1)] = r6;
+	heap32[(r2)] = r4;
+	heap32[(g0)] = r5;
+	_ZdlPv(i7);
+	return;
+}
+else{
+	abort(i7);
+}
+}
+
+function _GLOBAL__D__ZN4__rw9__catfindEPNS_8__rw_catE(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+var __label__ = 0;
+	i7 = sp + -8;var g0 = i7>>2; // save stack
+	r0 = _ZN4__rwL12__rw_catlistE_2E_0;
+	r1 = _ZN4__rwL12__rw_catlistE_2E_1;
+	r0 = r0 >> 2;
+	r1 = r1 >> 2;
+	r0 = heap32[(r0)];
+	r2 = heap32[(r1)];
+	r3 = (r2 - r0)|0;
+	r3 = r3 >> 2;
+if(!(r3 ==0)) //_LBB696_2
+{
+	r3 = r3 << 2;
+	r2 = (r2 - r3)|0;
+	heap32[(r1)] = r2;
+}
+	heap32[(g0)] = r0;
+	_ZdlPv(i7);
+	return;
+}
+
+function _ZN4__rwL13__rw_vfmtwhatEPcjPKcS0_(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+	var r6;
+	var r7;
+	var r8;
+	var r9;
+	var r10;
+	var r11;
+	var r12;
+var __label__ = 0;
+	i7 = sp + -48;var g0 = i7>>2; // save stack
+	r0 = _ZN4__rwL16__rw_what_refcntE;
+	r0 = r0 >> 2;
+	r1 = heap32[(r0)];
+	r2 = heap32[(fp)];
+	r3 = heap32[(fp+1)];
+	r4 = (r1 + 1)|0;
+	heap32[(r0)] = r4;
+	if(r1 !=0) //_LBB697_2
+{
+	heap32[(g0)] = 256;
+	_Znaj(i7);
+	r1 = r_g0;
+	r4 = heap32[(r0)];
+	r4 = (r4 + -1)|0;
+	heap32[(r0)] = r4;
+}
+else{
+	r1 = _ZN4__rwL13__rw_what_bufE;
+}
+	r4 = 256;
+	r12 = swrite__index__;
+_5: while(true){
+	r5 = sp + -16;
+	heap32[(fp+-8)] = r3;
+	r6 = r5 >> 2;
+	heap32[(fp+-7)] = r3;
+	r7 = (r4 + -1)|0;
+	r8 = 0;
+	heap32[(r6+1)] = 0;
+	r9 = sp + -24;
+	r10 = r4 == 0 ? r8 : r7;
+	heap32[(fp+-4)] = r1;
+	r11 = r9 >> 2;
+	heap32[(r6+2)] = r10;
+	heap32[(r11+1)] = r12;
+	heap32[(fp+-6)] = r5;
+	heap32[(g0)] = r9;
+	heap32[(g0+1)] = r2;
+	heap32[(g0+2)] = r3;
+	__v_printf(i7);
+	r5 = r_g0;
+_7: do {
+if(!(r1 ==0)) //_LBB697_11
+{
+if(!(r4 ==0)) //_LBB697_11
+{
+if(!(r5 <0)) //_LBB697_11
+{
+if(!(r4 ==-1)) //_LBB697_10
+{
+if(!(uint(r5) <uint(r4))) //_LBB697_10
+{
+	heap8[r1+r7] = r8;
+break _7;
+}
+}
+	heap8[r1+r5] = r8;
+}
+}
+}
+} while(0);
+	r5 = r5 < 0 ? r8 : r5;
+	r5 = r7 > r5 ? r5 : r8;
+	if(r5 !=0) //_LBB697_13
+{
+	if(r4 >r5) //_LBB697_20
+{
+break _5;
+}
+else{
+	r4 = (r5 + 1)|0;
+}
+}
+else{
+	r4 = r4 << 1;
+}
+	r5 = _ZN4__rwL13__rw_what_bufE;
+	if(r1 !=r5) //_LBB697_17
+{
+if(!(r1 ==0)) //_LBB697_19
+{
+	heap32[(g0)] = r1;
+	_ZdaPv(i7);
+}
+}
+else{
+	r1 = heap32[(r0)];
+	r1 = (r1 + -1)|0;
+	heap32[(r0)] = r1;
+}
+	heap32[(g0)] = r4;
+	_Znaj(i7);
+	r1 = r_g0;
+continue _5;
+}
+	r_g0 = r1;
+	return;
+}
+
+function _ZN4__rw10__rw_throwEiz(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+	var r6;
+	var r7;
+	var r8;
+var __label__ = 0;
+	i7 = sp + -64;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	if(r0 >4) //_LBB698_9
+{
+	r1 = (sp + 4)|0;
+	heap32[(fp+-7)] = r1;
+	r2 = _ZZN4__rwL13__rw_vfmtwhatEPcjiS0_E7__fname;
+	heap32[(fp+-9)] = r1;
+	r2 = r2 >> 2;
+	heap32[(fp+-8)] = r1;
+	r3 = heap32[(r2)];
+if(!(r3 !=0)) //_LBB698_41
+{
+	r3 = _ZZN4__rwL13__rw_vfmtwhatEPcjiS0_E6buffer;
+	r4 = 0;
+_5: while(true){
+	r5 = heapU8[r3];
+	r4 = r5 == 58 ? r3 : r4;
+	if(r5 !=0) //_LBB698_13
+{
+	r5 = (r3 + 1)|0;
+	r6 = heapU8[r3+1];
+	r4 = r6 == 58 ? r5 : r4;
+	if(r6 !=0) //_LBB698_15
+{
+	r5 = (r3 + 2)|0;
+	r6 = heapU8[r3+2];
+	r4 = r6 == 58 ? r5 : r4;
+	if(r6 !=0) //_LBB698_17
+{
+	r5 = (r3 + 3)|0;
+	r6 = heapU8[r3+3];
+	r4 = r6 == 58 ? r5 : r4;
+	if(r6 !=0) //_LBB698_19
+{
+	r3 = (r3 + 4)|0;
+}
+else{
+break _5;
+}
+}
+else{
+break _5;
+}
+}
+else{
+break _5;
+}
+}
+else{
+break _5;
+}
+}
+_12: do {
+if(!(r4 ==0)) //_LBB698_24
+{
+	r3 = 0;
+	heap8[r4] = r3;
+	r3 = _ZZN4__rwL13__rw_vfmtwhatEPcjiS0_E8__catset;
+	r4 = (r4 + 1)|0;
+	heap32[(g0)] = r4;
+	heap32[(g0+1)] = r3;
+	sscanf(i7);
+	r4 = r_g0;
+	r3 = r3 >> 2;
+if(!(r4 !=1)) //_LBB698_23
+{
+	r4 = heap32[(r3)];
+	if(r4 >0) //_LBB698_24
+{
+break _12;
+}
+}
+	heap32[(r3)] = 1;
+}
+} while(0);
+	r3 = _ZZN4__rwL13__rw_vfmtwhatEPcjiS0_E4msgs;
+	r4 = r3 >> 2;
+	heap32[(r4+1)] = 0;
+	heap32[(r4+2)] = 0;
+	heap32[(r4+3)] = 0;
+	heap32[(r4+4)] = 0;
+	heap32[(r4+5)] = 0;
+	r5 = _ZTVSt8messagesIcE;
+	heap32[(r4+6)] = 0;
+	r5 = (r5 + 8)|0;
+	heap32[(r4+7)] = 0;
+	r6 = _ZN4__rwL22__rw_classic_once_initE_2E_0_2E_b;
+	heap32[(r4)] = r5;
+	r5 = heapU8[r6];
+if(!(r5 != 0)) //_LBB698_29
+{
+	_ZN4__rw11__rw_locale11_C_get_bodyEPS0_S1_PKciPKNS_10__rw_facetE(i7);
+	r5 = r_g0;
+	r7 = _ZN4__rwL12__rw_classicE;
+	r7 = r7 >> 2;
+	heap32[(r7)] = r5;
+if(!(r5 !=0)) //_LBB698_28
+{
+	r5 = _2E_str12102177;
+	r7 = _2E_str10100175;
+	r8 = _2E_str538;
+	heap32[(g0)] = 19;
+	heap32[(g0+1)] = r5;
+	heap32[(g0+2)] = r7;
+	heap32[(g0+3)] = r8;
+	_ZN4__rw10__rw_throwEiz(i7);
+}
+	r5 = 1;
+	heap8[r6] = r5;
+}
+	r5 = _ZZN4__rwL13__rw_vfmtwhatEPcjiS0_E6buffer;
+	r6 = heapU8[r5];
+	if(r6 ==0) //_LBB698_31
+{
+	r6 = _ZNSs11_C_null_refE;
+	r7 = 0;
+	r6 = (r6 + 12)|0;
+}
+else{
+	r6 = 0;
+_28: while(true){
+	r7 = (r5 - r6)|0;
+	r6 = (r6 + -1)|0;
+	r7 = heapU8[r7+1];
+if(!(r7 !=0)) //_LBB698_32
+{
+break _28;
+}
+}
+	r7 = 0;
+	r7 = (r7 - r6)|0;
+	if(r6 !=0) //_LBB698_35
+{
+	r6 = 32;
+	r6 = uint(r7) > uint(r6) ? r7 : r6;
+	heap32[(g0)] = r6;
+	heap32[(g0+1)] = r7;
+	_ZNSs10_C_get_repEjj(i7);
+	r6 = (r_g0 + 12)|0;
+}
+else{
+	r6 = _ZNSs11_C_null_refE;
+	r6 = (r6 + 12)|0;
+}
+}
+	heap32[(fp+-4)] = r6;
+	heap32[(g0)] = r6;
+	heap32[(g0+1)] = r5;
+	heap32[(g0+2)] = r7;
+	memcpy(i7);
+	r4 = heap32[(r4)];
+	r4 = r4 >> 2;
+	r4 = heap32[(r4+2)];
+	r6 = sp + -16;
+	r7 = _ZN4__rwL12__rw_classicE;
+	heap32[(g0)] = r3;
+	heap32[(g0+1)] = r6;
+	heap32[(g0+2)] = r7;
+	__FUNCTION_TABLE__[(r4)>>2](i7);
+	r3 = r_g0;
+	r4 = _ZZN4__rwL13__rw_vfmtwhatEPcjiS0_E5__cat;
+	r4 = r4 >> 2;
+	heap32[(r4)] = r3;
+	r3 = heap32[(fp+-4)];
+	r3 = (r3 + -12)|0;
+	r4 = _ZNSs11_C_null_refE;
+if(!(r3 ==r4)) //_LBB698_40
+{
+	r3 = r3 >> 2;
+	r4 = heap32[(r3)];
+	r6 = (r4 + -1)|0;
+	heap32[(r3)] = r6;
+if(!(r4 >0)) //_LBB698_40
+{
+	r3 = heap32[(fp+-4)];
+	r3 = (r3 + -12)|0;
+	heap32[(g0)] = r3;
+	_ZdlPv(i7);
+}
+}
+	heap32[(fp+-4)] = 0;
+	heap32[(r2)] = r5;
+}
+	r2 = _ZZN4__rwL13__rw_vfmtwhatEPcjiS0_E5__cat;
+	r2 = r2 >> 2;
+	r2 = heap32[(r2)];
+	if(r2 !=-1) //_LBB698_43
+{
+	r3 = _ZNSs11_C_null_refE;
+	r4 = _ZZN4__rwL13__rw_vfmtwhatEPcjiS0_E4msgs;
+	r5 = (r3 + 12)|0;
+	r6 = r4 >> 2;
+	heap32[(fp+-2)] = r5;
+	r5 = _ZZN4__rwL13__rw_vfmtwhatEPcjiS0_E8__catset;
+	r6 = heap32[(r6)];
+	r6 = r6 >> 2;
+	r5 = r5 >> 2;
+	r6 = heap32[(r6+3)];
+	r5 = heap32[(r5)];
+	r7 = sp + -24;
+	r8 = sp + -8;
+	heap32[(g0)] = r7;
+	heap32[(g0+1)] = r4;
+	heap32[(g0+2)] = r2;
+	heap32[(g0+3)] = r5;
+	heap32[(g0+4)] = r0;
+	heap32[(g0+5)] = r8;
+	__FUNCTION_TABLE__[(r6)>>2](i7);
+	r2 = heap32[(fp+-2)];
+	r2 = (r2 + -12)|0;
+if(!(r2 ==r3)) //_LBB698_47
+{
+	r2 = r2 >> 2;
+	r4 = heap32[(r2)];
+	r5 = (r4 + -1)|0;
+	heap32[(r2)] = r5;
+if(!(r4 >0)) //_LBB698_47
+{
+	r2 = heap32[(fp+-2)];
+	r2 = (r2 + -12)|0;
+	heap32[(g0)] = r2;
+	_ZdlPv(i7);
+}
+}
+	heap32[(fp+-2)] = 0;
+	r2 = heap32[(fp+-6)];
+	r4 = r2 >> 2;
+	r4 = heap32[(r4+-1)];
+	if(r4 !=0) //_LBB698_49
+{
+	heap32[(g0)] = r2;
+	heap32[(g0+1)] = r1;
+	_ZN4__rwL13__rw_vfmtwhatEPcjPKcS0_(i7);
+	r1 = r_g0;
+	r2 = heap32[(fp+-6)];
+}
+else{
+	r1 = 0;
+}
+	r2 = (r2 + -12)|0;
+if(!(r2 ==r3)) //_LBB698_54
+{
+	r2 = r2 >> 2;
+	r3 = heap32[(r2)];
+	r4 = (r3 + -1)|0;
+	heap32[(r2)] = r4;
+if(!(r3 >0)) //_LBB698_54
+{
+	r2 = heap32[(fp+-6)];
+	r2 = (r2 + -12)|0;
+	heap32[(g0)] = r2;
+	_ZdlPv(i7);
+}
+}
+	heap32[(fp+-6)] = 0;
+	if(r1 ==0) //_LBB698_56
+{
+__label__ = 50;
+}
+else{
+__label__ = 51;
+}
+}
+else{
+__label__ = 50;
+}
+if (__label__ == 50){
+	r1 = 24;
+	r2 = 0;
+	r0 = uint(r0) > uint(r1) ? r2 : r0;
+	r1 = _ZZN4__rw10__rw_throwEizE6errors;
+	r2 = r0 << 2;
+	r1 = (r1 + r2)|0;
+	r1 = r1 >> 2;
+	r2 = heap32[(fp+-7)];
+	r1 = heap32[(r1)];
+	heap32[(g0)] = r1;
+	heap32[(g0+1)] = r2;
+	_ZN4__rwL13__rw_vfmtwhatEPcjPKcS0_(i7);
+	r1 = r_g0;
+	if(r1 ==0) //_LBB698_60
+{
+	if(r0 ==2) //_LBB698_65
+{
+	r0 = _2E_str47;
+}
+else{
+	if(r0 ==1) //_LBB698_64
+{
+	r0 = _2E_str15132;
+}
+else{
+	if(r0 !=0) //_LBB698_66
+{
+	r0 = _2E_str5134;
+}
+else{
+	r0 = _2E_str4131;
+}
+}
+}
+	heap32[(g0)] = r0;
+	fprintf(i7);
+__label__ = 62;
+}
+else{
+__label__ = 51;
+}
+}
+if (__label__ == 51){
+	heap32[(g0)] = r1;
+	r0 = _ZN4__rwL13__rw_what_bufE;
+	fprintf(i7);
+	if(r1 !=r0) //_LBB698_59
+{
+	heap32[(g0)] = r1;
+	_ZdaPv(i7);
+}
+else{
+	r0 = _ZN4__rwL16__rw_what_refcntE;
+	r0 = r0 >> 2;
+	r1 = heap32[(r0)];
+	r1 = (r1 + -1)|0;
+	heap32[(r0)] = r1;
+}
+}
+	abort(i7);
+}
+else{
+	if(r0 ==2) //_LBB698_6
+{
+	r0 = _2E_str47;
+}
+else{
+	if(r0 ==1) //_LBB698_5
+{
+	r0 = _2E_str15132;
+}
+else{
+	if(r0 !=0) //_LBB698_7
+{
+	r0 = _2E_str5134;
+}
+else{
+	r0 = _2E_str4131;
+}
+}
+}
+	heap32[(g0)] = r0;
+	fprintf(i7);
+	abort(i7);
+}
+}
+
+function _ZN4__rw10__rw_facetD1Ev(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+var __label__ = 0;
+	i7 = sp + -8;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = _ZTVN4__rw10__rw_facetE;
+	r0 = r0 >> 2;
+	r1 = (r1 + 8)|0;
+	heap32[(r0)] = r1;
+	heap32[(r0+5)] = -1;
+	r1 = heap32[(r0+1)];
+	r2 = heap32[(r0+2)];
+if(!(r1 ==r2)) //_LBB699_3
+{
+if(!(r1 ==0)) //_LBB699_3
+{
+	heap32[(g0)] = r1;
+	_ZdaPv(i7);
+}
+}
+	r1 = _ZZN4__rw10__rw_facetD4EvE9destroyed;
+	heap32[(r0+1)] = r1;
+	r1 = heap32[(r0+4)];
+if(!(r1 !=-1)) //_LBB699_5
+{
+	r0 = heap32[(r0+3)];
+	heap32[(g0)] = r0;
+	_ZdlPv(i7);
+}
+	return;
+}
+
+function _ZN4__rw10__rw_facetD0Ev(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+var __label__ = 0;
+	i7 = sp + -8;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = _ZTVN4__rw10__rw_facetE;
+	r2 = r0 >> 2;
+	r1 = (r1 + 8)|0;
+	heap32[(r2)] = r1;
+	heap32[(r2+5)] = -1;
+	r1 = heap32[(r2+1)];
+	r3 = heap32[(r2+2)];
+if(!(r1 ==r3)) //_LBB700_3
+{
+if(!(r1 ==0)) //_LBB700_3
+{
+	heap32[(g0)] = r1;
+	_ZdaPv(i7);
+}
+}
+	r1 = _ZZN4__rw10__rw_facetD4EvE9destroyed;
+	heap32[(r2+1)] = r1;
+	r1 = heap32[(r2+4)];
+if(!(r1 !=-1)) //_LBB700_5
+{
+	r1 = heap32[(r2+3)];
+	heap32[(g0)] = r1;
+	_ZdlPv(i7);
+}
+	heap32[(g0)] = r0;
+	_ZdlPv(i7);
+	return;
+}
+
+function _ZN4__rw10__rw_facet9_C_manageEPS0_NS0_13_C_facet_typeEPKcPFS1_jS4_E(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+	var r6;
+	var r7;
+	var r8;
+	var r9;
+	var r10;
+	var r11;
+	var r12;
+	var r13;
+	var r14;
+	var r15;
+var __label__ = 0;
+	i7 = sp + -16;var g0 = i7>>2; // save stack
+	r0 = _ZZN4__rw10__rw_facet9_C_manageEPS0_NS0_13_C_facet_typeEPKcPFS1_jS4_EE12n_std_facets;
+	r1 = _ZZN4__rw10__rw_facet9_C_manageEPS0_NS0_13_C_facet_typeEPKcPFS1_jS4_EE10std_facets;
+	r0 = r0 >> 2;
+	r1 = r1 >> 2;
+	r2 = heap32[(fp)];
+	r3 = heap32[(r0)];
+	r4 = heap32[(r1)];
+_1: do {
+	if(r2 ==0) //_LBB701_24
+{
+	r5 = heap32[(fp+1)];
+	r2 = heap32[(fp+2)];
+	r6 = heap32[(fp+3)];
+	r7 = _2E_str538;
+	r8 = r2 == 0 ? r7 : r2;
+	r9 = r3;
+_3: while(true){
+	r10 = r9;
+	if(r10 ==0) //_LBB701_34
+{
+__label__ = 34;
+break _3;
+}
+else{
+	r9 = r10 << 1;
+	r11 = r9 & -4;
+	r12 = (r4 + r11)|0;
+	r9 = r12 >> 2;
+	r13 = heap32[(r9)];
+	r14 = r13 >> 2;
+	r15 = heap32[(r14+5)];
+	r9 = r10 >>> 1;
+	if(r15 !=r5) //_LBB701_27
+{
+	r15 = (r15 - r5)|0;
+}
+else{
+	r15 = heap32[(r14+1)];
+	r15 = r15 == 0 ? r7 : r15;
+	heap32[(g0)] = r8;
+	heap32[(g0+1)] = r15;
+	strcmp(i7);
+	r15 = r_g0;
+}
+	if(r15 <0) //_LBB701_31
+{
+__label__ = 31;
+}
+else{
+	if(r15 <1) //_LBB701_32
+{
+__label__ = 32;
+break _3;
+}
+else{
+	r4 = (r11 + r4)|0;
+	r10 = (r10 + -1)|0;
+	r4 = (r4 + 4)|0;
+	r9 = (r10 - r9)|0;
+}
+}
+}
+}
+if (__label__ == 32){
+if(!(r12 ==0)) //_LBB701_34
+{
+	r2 = heap32[(r14+6)];
+	r2 = (r2 + 1)|0;
+	heap32[(r14+6)] = r2;
+	r_g0 = r13;
+	return;
+}
+}
+	r4 = _ZZN4__rw10__rw_facet9_C_manageEPS0_NS0_13_C_facet_typeEPKcPFS1_jS4_EE17std_facet_bufsize;
+	r4 = r4 >> 2;
+	r7 = heap32[(r4)];
+if(!(r3 !=r7)) //_LBB701_39
+{
+	r3 = r3 << 3;
+	heap32[(g0)] = r3;
+	_Znaj(i7);
+	r3 = r_g0;
+	r7 = heap32[(r1)];
+	r8 = heap32[(r0)];
+	r8 = r8 << 2;
+	heap32[(g0)] = r3;
+	heap32[(g0+1)] = r7;
+	heap32[(g0+2)] = r8;
+	memcpy(i7);
+	r8 = _ZZN4__rw10__rw_facet9_C_manageEPS0_NS0_13_C_facet_typeEPKcPFS1_jS4_EE13std_facet_buf;
+if(!(r7 ==r8)) //_LBB701_38
+{
+if(!(r7 ==0)) //_LBB701_38
+{
+	heap32[(g0)] = r7;
+	_ZdaPv(i7);
+}
+}
+	heap32[(r1)] = r3;
+	r3 = heap32[(r4)];
+	r3 = r3 << 1;
+	heap32[(r4)] = r3;
+}
+	r3 = r5 & 1;
+	r4 = 0;
+	r2 = r3 == 0 ? r2 : r4;
+	heap32[(g0)] = 1;
+	heap32[(g0+1)] = r2;
+	__FUNCTION_TABLE__[(r6)>>2](i7);
+	r2 = r_g0;
+	r3 = (r5 + 1)|0;
+	r4 = r3 >>> 31;
+	r6 = r2 >> 2;
+	r3 = (r3 + r4)|0;
+	r4 = heap32[(r6+7)];
+	r4 = r4 >> 2;
+	r3 = r3 >> 1;
+	heap32[(r4)] = r3;
+	r3 = heap32[(r6+5)];
+if(!(r3 ==r5)) //_LBB701_41
+{
+	r3 = r2 >> 2;
+	heap32[(r3+5)] = r5;
+}
+	r3 = r2 >> 2;
+	r4 = heap32[(r3+6)];
+if(!(r4 ==1)) //_LBB701_43
+{
+	heap32[(r3+6)] = 1;
+}
+	r3 = heap32[(r0)];
+	r1 = heap32[(r1)];
+	r4 = r3 << 2;
+	r4 = (r1 + r4)|0;
+	r4 = r4 >> 2;
+	r5 = (r3 + 1)|0;
+	heap32[(r4)] = r2;
+	heap32[(r0)] = r5;
+	r0 = (r3 + -1)|0;
+	if(uint(r0) <uint(2147483645)) //_LBB701_45
+{
+	r0 = cmpfacets__index__;
+	heap32[(g0)] = r1;
+	heap32[(g0+1)] = 0;
+	heap32[(g0+2)] = r3;
+	heap32[(g0+3)] = r0;
+	quicksort(i7);
+}
+}
+else{
+	r5 = r3;
+	r6 = r4;
+_31: while(true){
+	r7 = r5;
+	if(r7 ==0) //_LBB701_23
+{
+__label__ = 23;
+break _31;
+}
+else{
+	r5 = r7 << 1;
+	r8 = r5 & -4;
+	r9 = (r6 + r8)|0;
+	r5 = r9 >> 2;
+	r5 = heap32[(r5)];
+	r10 = r2 >> 2;
+	r11 = r5 >> 2;
+	r12 = heap32[(r10+5)];
+	r13 = heap32[(r11+5)];
+	r5 = r7 >>> 1;
+	if(r12 !=r13) //_LBB701_4
+{
+	r12 = (r13 - r12)|0;
+}
+else{
+	r12 = heap32[(r11+1)];
+	r13 = heap32[(r10+1)];
+	r10 = _2E_str538;
+	r13 = r13 == 0 ? r10 : r13;
+	r12 = r12 == 0 ? r10 : r12;
+	heap32[(g0)] = r13;
+	heap32[(g0+1)] = r12;
+	strcmp(i7);
+	r12 = r_g0;
+}
+	if(r12 <0) //_LBB701_8
+{
+__label__ = 8;
+}
+else{
+	if(r12 <1) //_LBB701_9
+{
+__label__ = 9;
+break _31;
+}
+else{
+	r6 = (r8 + r6)|0;
+	r7 = (r7 + -1)|0;
+	r6 = (r6 + 4)|0;
+	r5 = (r7 - r5)|0;
+}
+}
+}
+}
+if (__label__ == 9){
+if(!(r9 ==0)) //_LBB701_23
+{
+	r2 = (r9 - r4)|0;
+	r5 = r2 & -4;
+	r6 = (r4 + r5)|0;
+	r6 = r6 >> 2;
+	r6 = heap32[(r6)];
+	r7 = r6 >> 2;
+	r8 = heap32[(r7+6)];
+	r8 = (r8 + -1)|0;
+	heap32[(r7+6)] = r8;
+	if(r8 ==0) //_LBB701_12
+{
+	r2 = r2 >> 2;
+	r8 = (r3 + -1)|0;
+	heap32[(r0)] = r8;
+	if(uint(r8) >uint(207)) //_LBB701_17
+{
+__label__ = 17;
+}
+else{
+	r0 = _ZZN4__rw10__rw_facet9_C_manageEPS0_NS0_13_C_facet_typeEPKcPFS1_jS4_EE13std_facet_buf;
+	if(r4 ==r0) //_LBB701_17
+{
+__label__ = 17;
+}
+else{
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r4;
+	heap32[(g0+2)] = r5;
+	r3 = r2 << 2;
+	r5 = (r3 + r4)|0;
+	r2 = (r8 - r2)|0;
+	memcpy(i7);
+	r3 = (r0 + r3)|0;
+	r8 = (r5 + 4)|0;
+	r2 = r2 << 2;
+	heap32[(g0)] = r3;
+	heap32[(g0+1)] = r8;
+	heap32[(g0+2)] = r2;
+	memcpy(i7);
+if(!(r4 ==0)) //_LBB701_16
+{
+	heap32[(g0)] = r4;
+	_ZdaPv(i7);
+}
+	heap32[(r1)] = r0;
+__label__ = 20;
+}
+}
+_51: do {
+if (__label__ == 17){
+	r0 = (r8 - r2)|0;
+	r0 = r0 << 2;
+if(!(r0 ==0)) //_LBB701_20
+{
+	r0 = r3 << 2;
+	r2 = r2 << 2;
+	r0 = (r0 + -4)|0;
+	r1 = (r2 + r4)|0;
+	r2 = (r0 - r2)|0;
+	r0 = (r1 + 4)|0;
+_54: while(true){
+	r1 = heapU8[r0];
+	r2 = (r2 + -1)|0;
+	r3 = (r0 + 1)|0;
+	heap8[r0+-4] = r1;
+	r0 = r3;
+if(!(r2 !=0)) //_LBB701_19
+{
+break _51;
+}
+}
+}
+}
+} while(0);
+	r2 = heap32[(r7+1)];
+if(!(r2 ==0)) //_LBB701_11
+{
+if(!(r6 ==0)) //_LBB701_11
+{
+	r2 = heap32[(r7)];
+	r2 = r2 >> 2;
+	r2 = heap32[(r2+1)];
+	heap32[(g0)] = r6;
+	__FUNCTION_TABLE__[(r2)>>2](i7);
+	r2 = 0;
+	r_g0 = r2;
+	return;
+}
+}
+}
+	r2 = 0;
+break _1;
+}
+}
+	r0 = r2 >> 2;
+	r1 = heap32[(r0+6)];
+	r1 = (r1 + -1)|0;
+	heap32[(r0+6)] = r1;
+	r0 = 0;
+	r_g0 = r0;
+	return;
+}
+} while(0);
+	r_g0 = r2;
+	return;
+}
+
+function cmpfacets(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+var __label__ = 0;
+	i7 = sp + -8;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = heap32[(fp+1)];
+	r0 = r0 >> 2;
+	r1 = r1 >> 2;
+	r0 = heap32[(r0)];
+	r1 = heap32[(r1)];
+	r0 = r0 >> 2;
+	r1 = r1 >> 2;
+	r2 = heap32[(r0+5)];
+	r3 = heap32[(r1+5)];
+	if(r2 !=r3) //_LBB702_2
+{
+	r0 = (r3 - r2)|0;
+	r_g0 = r0;
+	return;
+}
+else{
+	r2 = heap32[(r1+1)];
+	r3 = heap32[(r0+1)];
+	r0 = _2E_str538;
+	r3 = r3 == 0 ? r0 : r3;
+	r2 = r2 == 0 ? r0 : r2;
+	heap32[(g0)] = r3;
+	heap32[(g0+1)] = r2;
+	strcmp(i7);
+	return;
+}
+}
+
+function _ZN4__rwL16__rw_expand_nameERNS_14__rw_pod_arrayIcLj256EEEPKc(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+	var r6;
+	var r7;
+	var r8;
+	var r9;
+	var r10;
+	var r11;
+	var r12;
+	var r13;
+	var r14;
+	var r15;
+	var r16;
+	var r17;
+	var r18;
+	var r19;
+var __label__ = 0;
+	i7 = sp + -640;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = heap32[(fp+1)];
+	r2 = 0;
+	r3 = r1;
+_1: while(true){
+	r4 = r2 << 2;
+	r5 = heapU8[r3];
+	if(r5 !=59) //_LBB703_3
+{
+	if(r5 !=0) //_LBB703_5
+{
+	r5 = heapU8[r3+1];
+	if(r5 ==59) //_LBB703_14
+{
+__label__ = 14;
+break _1;
+}
+else{
+	if(r5 ==0) //_LBB703_4
+{
+__label__ = 4;
+break _1;
+}
+else{
+	r5 = heapU8[r3+2];
+	if(r5 !=59) //_LBB703_9
+{
+	if(r5 ==0) //_LBB703_4
+{
+__label__ = 4;
+break _1;
+}
+else{
+	r5 = heapU8[r3+3];
+	if(r5 !=59) //_LBB703_12
+{
+	if(r5 ==0) //_LBB703_4
+{
+__label__ = 4;
+break _1;
+}
+else{
+	r2 = (r2 + 1)|0;
+	r3 = (r3 + 4)|0;
+continue _1;
+}
+}
+else{
+__label__ = 11;
+break _1;
+}
+}
+}
+else{
+__label__ = 8;
+break _1;
+}
+}
+}
+}
+else{
+__label__ = 4;
+break _1;
+}
+}
+else{
+__label__ = 2;
+break _1;
+}
+}
+switch(__label__ ){//multiple entries
+case 14:
+	r2 = (r3 + 1)|0;
+break;
+case 4:
+	r2 = 0;
+break;
+case 2:
+	r2 = (r1 + r4)|0;
+break;
+case 11:
+	r2 = r4 | 3;
+	r2 = (r1 + r2)|0;
+break;
+case 8:
+	r2 = r4 | 2;
+	r2 = (r1 + r2)|0;
+break;
+}
+_18: do {
+	if(r2 ==r1) //_LBB703_17
+{
+	r3 = (r1 + 1)|0;
+	r4 = (r1 + 3)|0;
+	r5 = 0;
+	r2 = r3;
+_20: while(true){
+	r6 = heapU8[r4+-2];
+	if(r6 ==59) //_LBB703_21
+{
+__label__ = 19;
+break _20;
+}
+else{
+	if(r6 !=0) //_LBB703_22
+{
+	r6 = heapU8[r4+-1];
+	if(r6 ==0) //_LBB703_20
+{
+__label__ = 90;
+break _18;
+}
+else{
+	r7 = r5 << 2;
+	if(r6 !=59) //_LBB703_25
+{
+	r6 = heapU8[r4];
+	if(r6 ==0) //_LBB703_20
+{
+__label__ = 90;
+break _18;
+}
+else{
+	if(r6 !=59) //_LBB703_28
+{
+	r6 = heapU8[r4+1];
+	if(r6 ==0) //_LBB703_20
+{
+__label__ = 90;
+break _18;
+}
+else{
+	if(r6 !=59) //_LBB703_31
+{
+	r5 = (r5 + 1)|0;
+	r4 = (r4 + 4)|0;
+	r2 = (r2 + 4)|0;
+}
+else{
+__label__ = 27;
+break _20;
+}
+}
+}
+else{
+__label__ = 32;
+break _18;
+}
+}
+}
+else{
+__label__ = 22;
+break _20;
+}
+}
+}
+else{
+__label__ = 90;
+break _18;
+}
+}
+}
+switch(__label__ ){//multiple entries
+case 19:
+	r1 = r3;
+__label__ = 29;
+break _18;
+break;
+case 27:
+	r2 = r7 | 3;
+	r1 = (r2 + r1)|0;
+	r4 = (r1 + 1)|0;
+__label__ = 32;
+break _18;
+break;
+case 22:
+	r2 = r7 | 1;
+	r1 = (r2 + r1)|0;
+	r4 = (r1 + 1)|0;
+__label__ = 32;
+break;
+}
+}
+else{
+__label__ = 29;
+}
+} while(0);
+if (__label__ == 29){
+	if(r2 ==0) //_LBB703_34
+{
+	r3 = r1;
+__label__ = 90;
+}
+else{
+	r4 = r2;
+	r3 = r1;
+__label__ = 32;
+}
+}
+_39: do {
+switch(__label__ ){//multiple entries
+case 90:
+	r7 = heapU8[r3];
+	if(r7 ==0) //_LBB703_98
+{
+	r0 = sp + -624;
+	r0 = r0 >> 2;
+	heap32[(r0+20)] = 0;
+	heap32[(r0+22)] = 0;
+	heap32[(r0+21)] = 0;
+__label__ = 73;
+break _39;
+}
+else{
+	r7 = 1;
+__label__ = 93;
+break _39;
+}
+break;
+case 32:
+	r1 = sp + -264;
+	r2 = sp + -528;
+	r5 = (r1 + 8)|0;
+	r6 = (r2 + 8)|0;
+	r7 = 1;
+	r8 = 0;
+_45: while(true){
+	if(r4 ==0) //_LBB703_39
+{
+	r4 = heapU8[r3];
+_49: do {
+	if(r4 !=0) //_LBB703_41
+{
+	r9 = (r3 + 1)|0;
+	r10 = 0;
+_51: while(true){
+	r4 = (r10 + 1)|0;
+	r11 = heapU8[r9+r10];
+	r10 = r4;
+if(!(r11 !=0)) //_LBB703_42
+{
+break _49;
+}
+}
+}
+else{
+	r4 = 0;
+}
+} while(0);
+	r4 = (r3 + r4)|0;
+}
+	r9 = (r4 - r3)|0;
+	heap32[(fp+-66)] = r9;
+	if(uint(r9) >uint(255)) //_LBB703_46
+{
+	r10 = (r9 + 1)|0;
+	heap32[(g0)] = r10;
+	_Znaj(i7);
+	r10 = r_g0;
+}
+else{
+	r10 = r5;
+}
+	r11 = r1 >> 2;
+	heap32[(r11+1)] = r10;
+	heap32[(g0)] = r10;
+	heap32[(g0+1)] = r3;
+	heap32[(g0+2)] = r9;
+	memcpy(i7);
+	r9 = heap32[(r11+1)];
+	r10 = heap32[(fp+-66)];
+	r12 = 0;
+	heap8[r9+r10] = r12;
+	r9 = r2 >> 2;
+	heap32[(fp+-132)] = 0;
+	heap32[(r9+1)] = r6;
+	heap8[sp+-520] = r12;
+	r10 = _ZN4__rw9__rw_catsE;
+	r13 = (r8 * 12)|0;
+	r10 = (r10 + r13)|0;
+	r13 = heap32[(r11+1)];
+	r10 = r10 >> 2;
+	r10 = heap32[(r10)];
+	heap32[(g0)] = r10;
+	heap32[(g0+1)] = r13;
+	heap32[(g0+2)] = r2;
+	_ZN4__rw16__rw_locale_nameEiPKcRNS_14__rw_pod_arrayIcLj256EEE(i7);
+	r10 = r_g0;
+	if(r10 !=0) //_LBB703_50
+{
+	r13 = heapU8[r10];
+_63: do {
+	if(r13 !=0) //_LBB703_52
+{
+	r14 = (r10 + 1)|0;
+_65: while(true){
+	r13 = (r12 + 1)|0;
+	r15 = heapU8[r14+r12];
+	r12 = r13;
+if(!(r15 !=0)) //_LBB703_53
+{
+break _63;
+}
+}
+}
+else{
+	r13 = 0;
+}
+} while(0);
+	r12 = r7 & 255;
+_69: do {
+if(!(r12 ==0)) //_LBB703_56
+{
+	if(r8 !=0) //_LBB703_57
+{
+	r7 = r0 >> 2;
+	r7 = heap32[(r7+1)];
+	r12 = r7;
+	r14 = r10;
+	r15 = r13;
+_72: while(true){
+	if(r15 !=0) //_LBB703_58
+{
+	r15 = (r15 + -1)|0;
+	r16 = (r14 + 1)|0;
+	r17 = (r12 + 1)|0;
+	r18 = heapU8[r12];
+	r19 = heapU8[r14];
+	r12 = r17;
+	r14 = r16;
+	if(r18 !=r19) //_LBB703_62
+{
+__label__ = 57;
+break _72;
+}
+else{
+__label__ = 54;
+}
+}
+else{
+__label__ = 55;
+break _72;
+}
+}
+if (__label__ == 55){
+	r7 = heapU8[r7+r13];
+if(!(r7 !=59)) //_LBB703_62
+{
+	r7 = 1;
+break _69;
+}
+}
+	r7 = 0;
+}
+}
+} while(0);
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r10;
+	heap32[(g0+2)] = r13;
+	_ZN4__rw14__rw_pod_arrayIcLj256EE6appendEPKcj(i7);
+	r8 = (r8 + 1)|0;
+	if(r8 !=6) //_LBB703_66
+{
+	r10 = heapU8[r4];
+	if(r10 !=0) //_LBB703_68
+{
+	r3 = _2E_str785;
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r3;
+	heap32[(g0+2)] = 1;
+	_ZN4__rw14__rw_pod_arrayIcLj256EE6appendEPKcj(i7);
+	r3 = (r4 + 1)|0;
+	r4 = 2;
+}
+else{
+	r4 = 1;
+}
+}
+else{
+	r4 = 1;
+	r8 = 6;
+}
+}
+else{
+	r4 = 0;
+}
+	r9 = heap32[(r9+1)];
+if(!(r9 ==r6)) //_LBB703_73
+{
+if(!(r9 ==0)) //_LBB703_73
+{
+	heap32[(g0)] = r9;
+	_ZdaPv(i7);
+}
+}
+	if(r4 ==1) //_LBB703_79
+{
+__label__ = 74;
+break _45;
+}
+else{
+	if(r4 !=0) //_LBB703_83
+{
+	r4 = heap32[(r11+1)];
+	if(r4 ==r5) //_LBB703_85
+{
+__label__ = 79;
+}
+else{
+	if(r4 !=0) //_LBB703_86
+{
+	r10 = 0;
+	heap32[(g0)] = r4;
+	_ZdaPv(i7);
+	r9 = r3;
+__label__ = 81;
+}
+else{
+__label__ = 79;
+}
+}
+if (__label__ == 79){
+	r10 = 0;
+	r9 = r3;
+}
+_101: while(true){
+	r4 = r10 << 2;
+	r11 = r4 | 3;
+	r12 = r4 | 2;
+	r13 = heapU8[r9];
+	r4 = (r3 + r4)|0;
+	r11 = (r3 + r11)|0;
+	r12 = (r3 + r12)|0;
+	if(r13 ==59) //_LBB703_37
+{
+continue _45;
+}
+else{
+	r4 = 0;
+	if(r13 ==0) //_LBB703_37
+{
+continue _45;
+}
+else{
+	r13 = heapU8[r9+1];
+	if(r13 ==59) //_LBB703_36
+{
+break _101;
+}
+else{
+	r4 = 0;
+	if(r13 ==0) //_LBB703_37
+{
+continue _45;
+}
+else{
+	r13 = heapU8[r9+2];
+	r4 = r12;
+	if(r13 ==59) //_LBB703_37
+{
+continue _45;
+}
+else{
+	r4 = 0;
+	if(r13 ==0) //_LBB703_37
+{
+continue _45;
+}
+else{
+	r12 = heapU8[r9+3];
+	r4 = r11;
+	if(r12 ==59) //_LBB703_37
+{
+continue _45;
+}
+else{
+	r4 = 0;
+	if(r12 ==0) //_LBB703_37
+{
+continue _45;
+}
+else{
+	r10 = (r10 + 1)|0;
+	r9 = (r9 + 4)|0;
+}
+}
+}
+}
+}
+}
+}
+}
+}
+	r4 = (r9 + 1)|0;
+continue _45;
+}
+else{
+__label__ = 70;
+break _45;
+}
+}
+}
+switch(__label__ ){//multiple entries
+case 74:
+	r1 = heap32[(r11+1)];
+	if(r1 ==r5) //_LBB703_81
+{
+__label__ = 93;
+break _39;
+}
+else{
+	if(r1 !=0) //_LBB703_82
+{
+	heap32[(g0)] = r1;
+	_ZdaPv(i7);
+__label__ = 93;
+break _39;
+}
+else{
+__label__ = 93;
+break _39;
+}
+}
+break;
+case 70:
+	r0 = heap32[(r11+1)];
+	if(r0 ==r5) //_LBB703_78
+{
+__label__ = 73;
+}
+else{
+	if(r0 ==0) //_LBB703_78
+{
+__label__ = 73;
+}
+else{
+	heap32[(g0)] = r0;
+	_ZdaPv(i7);
+__label__ = 73;
+}
+}
+break;
+}
+break;
+}
+} while(0);
+_119: do {
+if (__label__ == 93){
+	r1 = r0 >> 2;
+	r2 = heap32[(r1+1)];
+	r4 = heapU8[r2];
+	if(r4 ==0) //_LBB703_117
+{
+	heap32[(g0)] = 0;
+	heap32[(g0+1)] = r3;
+	heap32[(g0+2)] = r0;
+	_ZN4__rw16__rw_locale_nameEiPKcRNS_14__rw_pod_arrayIcLj256EEE(i7);
+	r0 = r_g0;
+	if(r0 ==0) //_LBB703_78
+{
+break _119;
+}
+}
+else{
+	r3 = r7 & 255;
+if(!(r3 ==0)) //_LBB703_118
+{
+	r3 = 0;
+	r4 = r2;
+_125: while(true){
+	r5 = r3 << 2;
+	r6 = heapU8[r4];
+	if(r6 !=59) //_LBB703_104
+{
+	if(r6 !=0) //_LBB703_106
+{
+	r6 = heapU8[r4+1];
+	if(r6 ==59) //_LBB703_115
+{
+__label__ = 109;
+break _125;
+}
+else{
+	if(r6 ==0) //_LBB703_105
+{
+__label__ = 99;
+break _125;
+}
+else{
+	r6 = heapU8[r4+2];
+	if(r6 !=59) //_LBB703_110
+{
+	if(r6 ==0) //_LBB703_105
+{
+__label__ = 99;
+break _125;
+}
+else{
+	r6 = heapU8[r4+3];
+	if(r6 !=59) //_LBB703_113
+{
+	if(r6 ==0) //_LBB703_105
+{
+__label__ = 99;
+break _125;
+}
+else{
+	r3 = (r3 + 1)|0;
+	r4 = (r4 + 4)|0;
+}
+}
+else{
+__label__ = 106;
+break _125;
+}
+}
+}
+else{
+__label__ = 103;
+break _125;
+}
+}
+}
+}
+else{
+__label__ = 99;
+break _125;
+}
+}
+else{
+__label__ = 97;
+break _125;
+}
+}
+switch(__label__ ){//multiple entries
+case 109:
+	r3 = (r4 + 1)|0;
+break;
+case 99:
+	r3 = 0;
+break;
+case 97:
+	r3 = (r2 + r5)|0;
+break;
+case 106:
+	r3 = r5 | 3;
+	r3 = (r2 + r3)|0;
+break;
+case 103:
+	r3 = r5 | 2;
+	r3 = (r2 + r3)|0;
+break;
+}
+	r3 = (r3 - r2)|0;
+	heap32[(r1+1)] = r2;
+	heap32[(r1)] = r3;
+	r3 = _2E_str26;
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r3;
+	heap32[(g0+2)] = 1;
+	_ZN4__rw14__rw_pod_arrayIcLj256EE6appendEPKcj(i7);
+}
+}
+	r0 = heap32[(r1+1)];
+	r_g0 = r0;
+	return;
+}
+} while(0);
+	r0 = 0;
+	r_g0 = r0;
+	return;
+}
+
+function cmplocales(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+var __label__ = 0;
+	i7 = sp + -8;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = heap32[(fp+1)];
+	r0 = r0 >> 2;
+	r1 = r1 >> 2;
+	r0 = heap32[(r0)];
+	r1 = heap32[(r1)];
+	r1 = r1 >> 2;
+	r0 = r0 >> 2;
+	r1 = heap32[(r1+38)];
+	r0 = heap32[(r0+38)];
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r1;
+	strcmp(i7);
+	return;
+}
+
+function _ZN4__rw11__rw_localeD2Ev(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+	var r6;
+var __label__ = 0;
+	i7 = sp + -16;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = r0 >> 2;
+	r2 = heap32[(r1+38)];
+	r3 = (r0 + 112)|0;
+	if(r2 ==r3) //_LBB705_2
+{
+__label__ = 2;
+}
+else{
+	if(r2 !=0) //_LBB705_3
+{
+	r3 = 0;
+	heap32[(g0)] = r2;
+	_ZdaPv(i7);
+__label__ = 4;
+}
+else{
+__label__ = 2;
+}
+}
+if (__label__ == 2){
+	r3 = 0;
+}
+_6: while(true){
+	r2 = r3 << 2;
+	r2 = (r0 - r2)|0;
+	r2 = r2 >> 2;
+	r4 = 0;
+	r2 = heap32[(r2)];
+if(!(r2 ==0)) //_LBB705_10
+{
+	r5 = r2 >> 2;
+	r6 = heap32[(r5+5)];
+	if(r6 ==0) //_LBB705_7
+{
+	r2 = heap32[(r5+6)];
+	r2 = (r2 + -1)|0;
+	heap32[(r5+6)] = r2;
+if(!(r2 !=0)) //_LBB705_10
+{
+	r2 = (r4 - r3)|0;
+	r2 = r2 << 2;
+	r2 = (r0 + r2)|0;
+	r2 = r2 >> 2;
+	r2 = heap32[(r2)];
+if(!(r2 ==0)) //_LBB705_10
+{
+	r5 = r2 >> 2;
+	r5 = heap32[(r5)];
+	r5 = r5 >> 2;
+	r5 = heap32[(r5+1)];
+	heap32[(g0)] = r2;
+	__FUNCTION_TABLE__[(r5)>>2](i7);
+}
+}
+}
+else{
+	r5 = heap32[(r5+1)];
+	heap32[(g0)] = r2;
+	heap32[(g0+1)] = r6;
+	heap32[(g0+2)] = r5;
+	heap32[(g0+3)] = 0;
+	_ZN4__rw10__rw_facet9_C_manageEPS0_NS0_13_C_facet_typeEPKcPFS1_jS4_E(i7);
+}
+}
+	r3 = (r3 + -1)|0;
+	if(r3 !=-26) //_LBB705_4
+{
+continue _6;
+}
+else{
+break _6;
+}
+}
+	r0 = heap32[(r1+26)];
+	r2 = heap32[(r1+27)];
+_17: do {
+if(!(r2 ==0)) //_LBB705_13
+{
+_18: while(true){
+	r2 = r4 << 2;
+	r0 = (r0 + r2)|0;
+	r0 = r0 >> 2;
+	r0 = heap32[(r0)];
+	r0 = r0 >> 2;
+	r3 = heap32[(r0+6)];
+	r3 = (r3 + -1)|0;
+	heap32[(r0+6)] = r3;
+if(!(r3 !=0)) //_LBB705_17
+{
+	r0 = heap32[(r1+26)];
+	r0 = (r0 + r2)|0;
+	r0 = r0 >> 2;
+	r0 = heap32[(r0)];
+if(!(r0 ==0)) //_LBB705_17
+{
+	r2 = r0 >> 2;
+	r2 = heap32[(r2)];
+	r2 = r2 >> 2;
+	r2 = heap32[(r2+1)];
+	heap32[(g0)] = r0;
+	__FUNCTION_TABLE__[(r2)>>2](i7);
+}
+}
+	r4 = (r4 + 1)|0;
+	r0 = heap32[(r1+26)];
+	r2 = heap32[(r1+27)];
+	if(r4 !=r2) //_LBB705_14
+{
+continue _18;
+}
+else{
+break _17;
+}
+}
+}
+} while(0);
+if(!(r0 ==0)) //_LBB705_20
+{
+	heap32[(g0)] = r0;
+	_ZdaPv(i7);
+}
+	return;
+}
+
+function _ZN4__rw11__rw_localeC2EPKc(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+	var r6;
+	var r7;
+	var r8;
+var __label__ = 0;
+	i7 = sp + -280;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = r0 >> 2;
+	heap32[(r1+26)] = 0;
+	heap32[(r1+27)] = 0;
+	heap32[(r1+39)] = 1;
+	r2 = heap32[(fp+1)];
+	heap32[(r1+40)] = 0;
+	heap32[(r1+41)] = 0;
+	r3 = heapU8[r2];
+	if(r3 ==0) //_LBB706_2
+{
+	r3 = sp + -264;
+	r4 = 0;
+	r5 = r3 >> 2;
+	r6 = (r0 + 112)|0;
+	heap8[sp+-256] = r4;
+	heap32[(r5+1)] = r6;
+	heap32[(fp+-66)] = 0;
+	heap32[(g0)] = r3;
+	heap32[(g0+1)] = r2;
+	r2 = (r3 + 8)|0;
+	_ZN4__rwL16__rw_expand_nameERNS_14__rw_pod_arrayIcLj256EEEPKc(i7);
+	r3 = r_g0;
+	heap32[(r1+38)] = r3;
+	heap32[(r5+1)] = r2;
+}
+else{
+	r3 = 1;
+_5: while(true){
+	r4 = (r3 + 1)|0;
+	r5 = heapU8[r2+r3];
+	r3 = r4;
+if(!(r5 !=0)) //_LBB706_4
+{
+break _5;
+}
+}
+	if(uint(r4) >uint(39)) //_LBB706_7
+{
+	heap32[(g0)] = r4;
+	_Znaj(i7);
+	r3 = r_g0;
+}
+else{
+	r3 = (r0 + 112)|0;
+}
+	heap32[(g0)] = r3;
+	heap32[(g0+1)] = r2;
+	heap32[(g0+2)] = r4;
+	memcpy(i7);
+	heap32[(r1+38)] = r3;
+}
+	r2 = 0;
+	heap32[(r1+40)] = 67108863;
+	heap32[(r1+41)] = 0;
+_13: while(true){
+	r4 = (r3 - r2)|0;
+	r5 = heapU8[r4];
+	if(r5 ==0) //_LBB706_43
+{
+__label__ = 41;
+break _13;
+}
+else{
+	if(r5 ==59) //_LBB706_20
+{
+__label__ = 20;
+break _13;
+}
+else{
+	r5 = heapU8[r4+1];
+	if(r5 ==0) //_LBB706_43
+{
+__label__ = 41;
+break _13;
+}
+else{
+	if(r5 !=59) //_LBB706_15
+{
+	r5 = heapU8[r4+2];
+	if(r5 ==0) //_LBB706_43
+{
+__label__ = 41;
+break _13;
+}
+else{
+	if(r5 ==59) //_LBB706_14
+{
+__label__ = 14;
+break _13;
+}
+else{
+	r4 = heapU8[r4+3];
+	if(r4 ==0) //_LBB706_43
+{
+__label__ = 41;
+break _13;
+}
+else{
+	if(r4 ==59) //_LBB706_14
+{
+__label__ = 14;
+break _13;
+}
+else{
+	r2 = (r2 + -4)|0;
+continue _13;
+}
+}
+}
+}
+}
+else{
+__label__ = 14;
+break _13;
+}
+}
+}
+}
+}
+if (__label__ == 20){
+	if(r3 ==r2) //_LBB706_43
+{
+__label__ = 41;
+}
+else{
+__label__ = 14;
+}
+}
+_25: do {
+switch(__label__ ){//multiple entries
+case 41:
+	r2 = heapU8[r3];
+if(!(r2 !=67)) //_LBB706_45
+{
+	r2 = heapU8[r3+1];
+	if(r2 ==0) //_LBB706_46
+{
+break _25;
+}
+}
+	heap32[(r1+41)] = 67108863;
+break;
+case 14:
+	r2 = 0;
+	r4 = r2;
+_31: while(true){
+	r5 = heapU8[r3];
+	if(r5 ==0) //_LBB706_46
+{
+break _25;
+}
+else{
+	if(r2 !=-6) //_LBB706_21
+{
+	r5 = r5 & 255;
+	if(r5 !=67) //_LBB706_24
+{
+__label__ = 23;
+}
+else{
+	r5 = heapU8[r3+1];
+	if(r5 !=59) //_LBB706_24
+{
+__label__ = 23;
+}
+else{
+__label__ = 24;
+}
+}
+if (__label__ == 23){
+	r5 = (r2 * -3)|0;
+	r6 = _ZN4__rw9__rw_catsE;
+	r5 = r5 << 2;
+	r5 = (r6 + r5)|0;
+	r5 = r5 >> 2;
+	r5 = heap32[(r5+2)];
+	r4 = r5 | r4;
+	heap32[(r1+41)] = r4;
+}
+	r5 = 0;
+	r6 = r3;
+_40: while(true){
+	r7 = heapU8[r6];
+	if(r7 ==0) //_LBB706_46
+{
+break _25;
+}
+else{
+	if(r7 ==59) //_LBB706_37
+{
+__label__ = 36;
+break _40;
+}
+else{
+	r7 = heapU8[r6+1];
+	if(r7 ==0) //_LBB706_46
+{
+break _25;
+}
+else{
+	if(r7 ==59) //_LBB706_39
+{
+__label__ = 37;
+break _40;
+}
+else{
+	r7 = heapU8[r6+2];
+	if(r7 ==0) //_LBB706_46
+{
+break _25;
+}
+else{
+	r8 = r5 << 2;
+	if(r7 !=59) //_LBB706_33
+{
+	r7 = heapU8[r6+3];
+	if(r7 ==0) //_LBB706_46
+{
+break _25;
+}
+else{
+	if(r7 !=59) //_LBB706_36
+{
+	r5 = (r5 + 1)|0;
+	r6 = (r6 + 4)|0;
+}
+else{
+__label__ = 34;
+break _40;
+}
+}
+}
+else{
+__label__ = 31;
+break _40;
+}
+}
+}
+}
+}
+}
+}
+switch(__label__ ){//multiple entries
+case 36:
+	if(r6 ==0) //_LBB706_46
+{
+break _25;
+}
+break;
+case 37:
+	r6 = (r6 + 1)|0;
+break;
+case 34:
+	r5 = r8 | 3;
+	r6 = (r3 + r5)|0;
+break;
+case 31:
+	r5 = r8 | 2;
+	r6 = (r3 + r5)|0;
+break;
+}
+	r3 = (r6 + 1)|0;
+	r2 = (r2 + -1)|0;
+continue _31;
+}
+else{
+break _25;
+}
+}
+}
+break;
+}
+} while(0);
+	r1 = 104;
+	r3 = 0;
+_57: while(true){
+	r2 = (r1 + -1)|0;
+	r1 = (r0 - r1)|0;
+	heap8[r1+104] = r3;
+	r1 = r2;
+	if(r2 !=0) //_LBB706_47
+{
+continue _57;
+}
+else{
+break _57;
+}
+}
+	return;
+}
+
+function _ZN4__rw11__rw_locale9_C_manageEPS0_PKc(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+	var r6;
+	var r7;
+	var r8;
+	var r9;
+	var r10;
+	var r11;
+	var r12;
+	var r13;
+	var r14;
+var __label__ = 0;
+	i7 = sp + -280;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp+1)];
+	r1 = heap32[(fp)];
+	if(r0 !=0) //_LBB707_9
+{
+	r2 = heapU8[r0];
+	if(r2 ==67) //_LBB707_11
+{
+	r2 = heapU8[r0+1];
+	r3 = 0;
+	r2 = r2 != r3;
+}
+else{
+	r2 = 1;
+}
+	r3 = sp + -264;
+	r4 = (r3 + 8)|0;
+	r5 = _2E_str538;
+	r6 = r3 >> 2;
+	heap32[(fp+-66)] = 0;
+	r0 = r2 != 0 ? r0 : r5;
+	r7 = 0;
+	heap32[(r6+1)] = r4;
+	heap8[sp+-256] = r7;
+	if(r1 !=0) //_LBB707_14
+{
+__label__ = 19;
+}
+else{
+	if(r2 != 0) //_LBB707_15
+{
+	heap32[(g0)] = r3;
+	heap32[(g0+1)] = r0;
+	_ZN4__rwL16__rw_expand_nameERNS_14__rw_pod_arrayIcLj256EEEPKc(i7);
+	r0 = r_g0;
+	if(r0 !=0) //_LBB707_18
+{
+	r2 = heapU8[r0];
+	if(r2 ==67) //_LBB707_20
+{
+	r2 = heapU8[r0+1];
+	if(r2 !=0) //_LBB707_19
+{
+__label__ = 19;
+}
+else{
+	r0 = r5;
+__label__ = 19;
+}
+}
+else{
+__label__ = 19;
+}
+}
+else{
+__label__ = 15;
+}
+}
+else{
+__label__ = 19;
+}
+}
+_14: do {
+if (__label__ == 19){
+	r2 = _ZZN4__rw11__rw_locale9_C_manageEPS0_PKcE9n_locales;
+	r3 = _ZZN4__rw11__rw_locale9_C_manageEPS0_PKcE7locales;
+	r2 = r2 >> 2;
+	r3 = r3 >> 2;
+	r5 = heap32[(r2)];
+	r8 = heap32[(r3)];
+	if(r1 ==0) //_LBB707_24
+{
+	r7 = r5;
+_18: while(true){
+	r9 = r7;
+	if(r9 ==0) //_LBB707_53
+{
+__label__ = 49;
+break _18;
+}
+else{
+	r1 = r9 << 1;
+	r10 = r1 & -4;
+	r11 = (r8 + r10)|0;
+	r1 = r11 >> 2;
+	r1 = heap32[(r1)];
+	r12 = r1 >> 2;
+	r7 = heap32[(r12+38)];
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r7;
+	strcmp(i7);
+	r13 = r_g0;
+	r7 = r9 >>> 1;
+	if(r13 <0) //_LBB707_50
+{
+__label__ = 46;
+}
+else{
+	if(r13 <1) //_LBB707_51
+{
+__label__ = 47;
+break _18;
+}
+else{
+	r1 = (r10 + r8)|0;
+	r9 = (r9 + -1)|0;
+	r8 = (r1 + 4)|0;
+	r7 = (r9 - r7)|0;
+}
+}
+}
+}
+if (__label__ == 47){
+if(!(r11 ==0)) //_LBB707_53
+{
+	r0 = heap32[(r12+39)];
+	r0 = (r0 + 1)|0;
+	heap32[(r12+39)] = r0;
+__label__ = 65;
+break _14;
+}
+}
+	r1 = _ZZN4__rw11__rw_locale9_C_manageEPS0_PKcE14locale_bufsize;
+	r1 = r1 >> 2;
+	r7 = heap32[(r1)];
+if(!(r5 !=r7)) //_LBB707_59
+{
+	r5 = r5 << 3;
+	heap32[(g0)] = r5;
+	_Znaj(i7);
+	r5 = r_g0;
+	r7 = heap32[(r3)];
+	r8 = heap32[(r2)];
+	r8 = r8 << 2;
+	heap32[(g0)] = r5;
+	heap32[(g0+1)] = r7;
+	heap32[(g0+2)] = r8;
+	memcpy(i7);
+	r8 = _ZZN4__rw11__rw_locale9_C_manageEPS0_PKcE10locale_buf;
+if(!(r7 ==r8)) //_LBB707_58
+{
+if(!(r7 ==0)) //_LBB707_58
+{
+	heap32[(g0)] = r7;
+	_ZdaPv(i7);
+}
+}
+	heap32[(r3)] = r5;
+	r5 = heap32[(r1)];
+	r5 = r5 << 1;
+	heap32[(r1)] = r5;
+}
+	r1 = heapU8[r0];
+	if(r1 !=67) //_LBB707_65
+{
+__label__ = 61;
+}
+else{
+	r1 = heapU8[r0+1];
+	if(r1 !=0) //_LBB707_65
+{
+__label__ = 61;
+}
+else{
+	r1 = _ZZN4__rw11__rw_locale9_C_manageEPS0_PKcE7classic;
+	r5 = r1 >> 2;
+	r1 = heap32[(r5)];
+	if(r1 !=0) //_LBB707_64
+{
+	r0 = _ZZN4__rw11__rw_locale9_C_manageEPS0_PKcE12classic_body;
+	r0 = r0 >> 2;
+	r5 = heap32[(r0+39)];
+	r5 = (r5 + 1)|0;
+	heap32[(r0+39)] = r5;
+__label__ = 63;
+}
+else{
+	r1 = _ZZN4__rw11__rw_locale9_C_manageEPS0_PKcE12classic_body;
+	heap32[(g0)] = r1;
+	heap32[(g0+1)] = r0;
+	_ZN4__rw11__rw_localeC2EPKc(i7);
+	heap32[(r5)] = r1;
+__label__ = 63;
+}
+}
+}
+if (__label__ == 61){
+	heap32[(g0)] = 172;
+	_Znwj(i7);
+	r1 = r_g0;
+	heap32[(g0)] = r1;
+	heap32[(g0+1)] = r0;
+	_ZN4__rw11__rw_localeC2EPKc(i7);
+}
+	r0 = heap32[(r2)];
+	r3 = heap32[(r3)];
+	r5 = r0 << 2;
+	r5 = (r3 + r5)|0;
+	r5 = r5 >> 2;
+	r7 = (r0 + 1)|0;
+	heap32[(r5)] = r1;
+	heap32[(r2)] = r7;
+	r2 = (r0 + -1)|0;
+	if(uint(r2) <uint(2147483645)) //_LBB707_69
+{
+	r2 = cmplocales__index__;
+	heap32[(g0)] = r3;
+	heap32[(g0+1)] = 0;
+	heap32[(g0+2)] = r0;
+	heap32[(g0+3)] = r2;
+	quicksort(i7);
+__label__ = 65;
+}
+else{
+__label__ = 65;
+}
+}
+else{
+	r9 = r5;
+	r10 = r8;
+_48: while(true){
+	r11 = r9;
+	if(r11 ==0) //_LBB707_46
+{
+__label__ = 42;
+break _48;
+}
+else{
+	r9 = r11 << 1;
+	r12 = r9 & -4;
+	r13 = (r10 + r12)|0;
+	r9 = r13 >> 2;
+	r9 = heap32[(r9)];
+	r9 = r9 >> 2;
+	r9 = heap32[(r9+38)];
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r9;
+	strcmp(i7);
+	r14 = r_g0;
+	r9 = r11 >>> 1;
+	if(r14 <0) //_LBB707_28
+{
+__label__ = 25;
+}
+else{
+	if(r14 <1) //_LBB707_29
+{
+__label__ = 26;
+break _48;
+}
+else{
+	r10 = (r12 + r10)|0;
+	r11 = (r11 + -1)|0;
+	r10 = (r10 + 4)|0;
+	r9 = (r11 - r9)|0;
+}
+}
+}
+}
+if (__label__ == 26){
+if(!(r13 ==0)) //_LBB707_46
+{
+	r1 = (r13 - r8)|0;
+	r0 = r1 & -4;
+	r9 = (r8 + r0)|0;
+	r9 = r9 >> 2;
+	r9 = heap32[(r9)];
+	r10 = r9 >> 2;
+	r11 = heap32[(r10+39)];
+	r11 = (r11 + -1)|0;
+	heap32[(r10+39)] = r11;
+	if(r11 !=0) //_LBB707_17
+{
+__label__ = 15;
+break _14;
+}
+else{
+	r1 = r1 >> 2;
+	r11 = (r5 + -1)|0;
+	heap32[(r2)] = r11;
+	if(uint(r11) >uint(3)) //_LBB707_36
+{
+__label__ = 33;
+}
+else{
+	r2 = _ZZN4__rw11__rw_locale9_C_manageEPS0_PKcE10locale_buf;
+	if(r8 ==r2) //_LBB707_36
+{
+__label__ = 33;
+}
+else{
+	heap32[(g0)] = r2;
+	heap32[(g0+1)] = r8;
+	heap32[(g0+2)] = r0;
+	r0 = r1 << 2;
+	r5 = (r0 + r8)|0;
+	r1 = (r11 - r1)|0;
+	memcpy(i7);
+	r0 = (r2 + r0)|0;
+	r5 = (r5 + 4)|0;
+	r1 = r1 << 2;
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r5;
+	heap32[(g0+2)] = r1;
+	memcpy(i7);
+if(!(r8 ==0)) //_LBB707_35
+{
+	heap32[(g0)] = r8;
+	_ZdaPv(i7);
+}
+	r1 = _ZZN4__rw11__rw_locale9_C_manageEPS0_PKcE14locale_bufsize;
+	r1 = r1 >> 2;
+	heap32[(r3)] = r2;
+	heap32[(r1)] = 8;
+__label__ = 36;
+}
+}
+_63: do {
+if (__label__ == 33){
+	r0 = (r11 - r1)|0;
+	r0 = r0 << 2;
+if(!(r0 ==0)) //_LBB707_39
+{
+	r0 = r5 << 2;
+	r1 = r1 << 2;
+	r0 = (r0 + -4)|0;
+	r2 = (r1 + r8)|0;
+	r1 = (r0 - r1)|0;
+	r0 = (r2 + 4)|0;
+_66: while(true){
+	r2 = heapU8[r0];
+	r1 = (r1 + -1)|0;
+	r3 = (r0 + 1)|0;
+	heap8[r0+-4] = r2;
+	r0 = r3;
+if(!(r1 !=0)) //_LBB707_38
+{
+break _63;
+}
+}
+}
+}
+} while(0);
+	r1 = heap32[(r10+38)];
+	r0 = heapU8[r1];
+	if(r0 ==67) //_LBB707_41
+{
+	r1 = heapU8[r1+1];
+	r7 = 0;
+	r7 = r1 == r7;
+}
+	if(r7 != 0) //_LBB707_17
+{
+__label__ = 15;
+break _14;
+}
+else{
+	if(r9 ==0) //_LBB707_17
+{
+__label__ = 15;
+break _14;
+}
+else{
+	heap32[(g0)] = r9;
+	_ZN4__rw11__rw_localeD2Ev(i7);
+	heap32[(g0)] = r9;
+	r1 = 0;
+	_ZdlPv(i7);
+__label__ = 65;
+break _14;
+}
+}
+}
+}
+}
+	r0 = r1 >> 2;
+	r2 = heap32[(r0+39)];
+	r1 = 0;
+	r2 = (r2 + -1)|0;
+	heap32[(r0+39)] = r2;
+__label__ = 65;
+}
+}
+} while(0);
+if (__label__ == 15){
+	r1 = 0;
+}
+	r0 = heap32[(r6+1)];
+if(!(r0 ==r4)) //_LBB707_73
+{
+if(!(r0 ==0)) //_LBB707_73
+{
+	heap32[(g0)] = r0;
+	_ZdaPv(i7);
+}
+}
+	r_g0 = r1;
+	return;
+}
+else{
+	r0 = _ZZN4__rw11__rw_locale9_C_manageEPS0_PKcE6global;
+	r0 = r0 >> 2;
+	r2 = heap32[(r0)];
+_84: do {
+	if(r2 ==0) //_LBB707_3
+{
+	r3 = _ZZN4__rw11__rw_locale9_C_manageEPS0_PKcE5ginit;
+	r3 = r3 >> 2;
+	r4 = heap32[(r3)];
+	if(r4 !=0) //_LBB707_5
+{
+_87: while(true){
+	r4 = heap32[(r3)];
+if(!(r4 <1000)) //_LBB707_5
+{
+break _84;
+}
+}
+}
+else{
+	r2 = (r4 + 1)|0;
+	heap32[(r3)] = r2;
+	r2 = _2E_str538;
+	heap32[(g0)] = 0;
+	heap32[(g0+1)] = r2;
+	_ZN4__rw11__rw_locale9_C_manageEPS0_PKc(i7);
+	r2 = r_g0;
+	heap32[(r0)] = r2;
+	r4 = heap32[(r3)];
+	r4 = (r4 + 1000)|0;
+	heap32[(r3)] = r4;
+}
+}
+} while(0);
+	if(r1 ==0) //_LBB707_8
+{
+	r0 = r2 >> 2;
+	r1 = heap32[(r0+39)];
+	r1 = (r1 + 1)|0;
+	heap32[(r0+39)] = r1;
+	r_g0 = r2;
+	return;
+}
+else{
+	r3 = r1 >> 2;
+	r4 = heap32[(r3+39)];
+	r4 = (r4 + 1)|0;
+	heap32[(r3+39)] = r4;
+	heap32[(r0)] = r1;
+	r_g0 = r2;
+	return;
+}
+}
+}
+
+function _ZN4__rw11__rw_locale11_C_get_bodyEPS0_S1_PKciPKNS_10__rw_facetE(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+	var r6;
+	var r7;
+	var r8;
+	var r9;
+	var r10;
+	var r11;
+var __label__ = 0;
+	i7 = sp + -304;var g0 = i7>>2; // save stack
+	r0 = sp + -264;
+	r1 = (r0 + 8)|0;
+	r2 = r0 >> 2;
+	heap32[(fp+-66)] = 0;
+	r3 = 0;
+	heap32[(r2+1)] = r1;
+	heap8[sp+-256] = r3;
+	r4 = _2E_str538;
+	r5 = _2E_str292167;
+	heap32[(g0)] = r4;
+	heap32[(g0+1)] = r5;
+	heap32[(g0+2)] = 3;
+	strncmp(i7);
+	r5 = r_g0;
+_1: do {
+	if(r5 ==0) //_LBB708_2
+{
+	r4 = sp + -288;
+	r5 = r4 >> 2;
+	heap32[(fp+-72)] = 0;
+	heap32[(r5+1)] = 0;
+	heap32[(r5+2)] = 0;
+	heap32[(r5+3)] = 0;
+	r6 = 4;
+	heap32[(r5+4)] = 0;
+	heap32[(r5+5)] = 0;
+_3: while(true){
+	r6 = (r6 + -4)|0;
+if(!(r6 !=0)) //_LBB708_3
+{
+break _3;
+}
+}
+	r5 = _2E_str538;
+_6: while(true){
+	r6 = heapU8[r5];
+	if(r6 ==0) //_LBB708_48
+{
+__label__ = 44;
+break _6;
+}
+else{
+	r6 = r3;
+	r7 = r3;
+_9: while(true){
+	r8 = (r5 + r6)|0;
+	r9 = heapU8[r5+r6];
+	if(r9 ==59) //_LBB708_17
+{
+__label__ = 16;
+break _9;
+}
+else{
+	if(r9 !=0) //_LBB708_8
+{
+	r9 = heapU8[r8+1];
+	if(r9 ==0) //_LBB708_7
+{
+__label__ = 6;
+break _9;
+}
+else{
+	if(r9 ==59) //_LBB708_21
+{
+__label__ = 18;
+break _9;
+}
+else{
+	r9 = heapU8[r8+2];
+	if(r9 ==0) //_LBB708_7
+{
+__label__ = 6;
+break _9;
+}
+else{
+	r10 = r7 << 2;
+	if(r9 !=59) //_LBB708_13
+{
+	r8 = heapU8[r8+3];
+	if(r8 ==0) //_LBB708_7
+{
+__label__ = 6;
+break _9;
+}
+else{
+	if(r8 !=59) //_LBB708_16
+{
+	r7 = (r7 + 1)|0;
+	r6 = (r6 + 4)|0;
+}
+else{
+__label__ = 14;
+break _9;
+}
+}
+}
+else{
+__label__ = 11;
+break _9;
+}
+}
+}
+}
+}
+else{
+__label__ = 6;
+break _9;
+}
+}
+}
+_19: do {
+switch(__label__ ){//multiple entries
+case 16:
+	if(r8 ==0) //_LBB708_7
+{
+__label__ = 6;
+break _19;
+}
+else{
+__label__ = 19;
+break _19;
+}
+break;
+case 18:
+	r8 = (r8 + 1)|0;
+__label__ = 19;
+break _19;
+break;
+case 14:
+	r6 = r10 | 3;
+	r8 = (r5 + r6)|0;
+__label__ = 19;
+break _19;
+break;
+case 11:
+	r6 = r10 | 2;
+	r8 = (r5 + r6)|0;
+__label__ = 19;
+break;
+}
+} while(0);
+_24: do {
+if (__label__ == 6){
+	r6 = r5;
+_26: while(true){
+	r8 = (r6 + 1)|0;
+	r7 = heapU8[r6+1];
+	r6 = r8;
+if(!(r7 !=0)) //_LBB708_19
+{
+break _24;
+}
+}
+}
+} while(0);
+	r6 = 0;
+	r7 = r6;
+_29: while(true){
+	r9 = (r5 + r6)|0;
+	r10 = heapU8[r5+r6];
+	if(r10 ==61) //_LBB708_35
+{
+__label__ = 32;
+break _29;
+}
+else{
+	if(r10 !=0) //_LBB708_26
+{
+	r10 = heapU8[r9+1];
+	if(r10 ==0) //_LBB708_25
+{
+__label__ = 22;
+break _6;
+}
+else{
+	if(r10 ==61) //_LBB708_37
+{
+__label__ = 33;
+break _29;
+}
+else{
+	r10 = heapU8[r9+2];
+	if(r10 ==0) //_LBB708_25
+{
+__label__ = 22;
+break _6;
+}
+else{
+	r11 = r7 << 2;
+	if(r10 !=61) //_LBB708_31
+{
+	r9 = heapU8[r9+3];
+	if(r9 ==0) //_LBB708_25
+{
+__label__ = 22;
+break _6;
+}
+else{
+	if(r9 !=61) //_LBB708_34
+{
+	r7 = (r7 + 1)|0;
+	r6 = (r6 + 4)|0;
+}
+else{
+__label__ = 30;
+break _29;
+}
+}
+}
+else{
+__label__ = 27;
+break _29;
+}
+}
+}
+}
+}
+else{
+__label__ = 22;
+break _6;
+}
+}
+}
+switch(__label__ ){//multiple entries
+case 32:
+	if(r9 ==0) //_LBB708_25
+{
+__label__ = 22;
+break _6;
+}
+break;
+case 33:
+	r9 = (r9 + 1)|0;
+break;
+case 30:
+	r6 = r11 | 3;
+	r9 = (r5 + r6)|0;
+break;
+case 27:
+	r6 = r11 | 2;
+	r9 = (r5 + r6)|0;
+break;
+}
+	r6 = (r9 - r5)|0;
+	r7 = 0;
+_45: while(true){
+	if(r7 !=-6) //_LBB708_39
+{
+	r10 = (r7 * -3)|0;
+	r11 = _ZN4__rw9__rw_catsE;
+	r10 = r10 << 2;
+	r10 = (r11 + r10)|0;
+	r10 = r10 >> 2;
+	r10 = heap32[(r10+1)];
+	heap32[(g0)] = r10;
+	heap32[(g0+1)] = r5;
+	heap32[(g0+2)] = r6;
+	strncmp(i7);
+	r10 = r_g0;
+	if(r10 !=0) //_LBB708_42
+{
+	r7 = (r7 + -1)|0;
+}
+else{
+__label__ = 36;
+break _45;
+}
+}
+else{
+__label__ = 40;
+break _45;
+}
+}
+if (__label__ == 36){
+	r6 = r7 << 2;
+	r6 = (r4 - r6)|0;
+	r6 = r6 >> 2;
+	r6 = heap32[(r6)];
+	if(r6 !=0) //_LBB708_25
+{
+__label__ = 22;
+break _6;
+}
+else{
+	r6 = 0;
+	r6 = (r6 - r7)|0;
+	r6 = r6 << 2;
+	r6 = (r4 + r6)|0;
+	r6 = r6 >> 2;
+	r7 = (r9 + 1)|0;
+	heap32[(r6)] = r7;
+}
+}
+	r6 = heapU8[r8];
+	r5 = r8;
+	if(r6 ==0) //_LBB708_46
+{
+__label__ = 42;
+}
+else{
+	r5 = (r8 + 1)|0;
+}
+}
+}
+switch(__label__ ){//multiple entries
+case 44:
+	r3 = 0;
+	r5 = r3;
+_56: while(true){
+	if(r5 !=-6) //_LBB708_49
+{
+	r6 = (r3 - r5)|0;
+	r6 = r6 << 2;
+	r6 = (r4 + r6)|0;
+	r6 = r6 >> 2;
+	r7 = heap32[(r6)];
+	if(r7 ==0) //_LBB708_51
+{
+	r7 = _2E_str538;
+	heap32[(r6)] = r7;
+}
+	r6 = 0;
+	r8 = r6;
+_62: while(true){
+	r9 = heapU8[r7+r6];
+	if(r9 ==0) //_LBB708_66
+{
+__label__ = 60;
+break _62;
+}
+else{
+	r10 = (r7 + r6)|0;
+	if(r9 ==59) //_LBB708_64
+{
+__label__ = 59;
+break _62;
+}
+else{
+	r9 = heapU8[r10+1];
+	if(r9 ==0) //_LBB708_66
+{
+__label__ = 60;
+break _62;
+}
+else{
+	if(r9 ==59) //_LBB708_71
+{
+__label__ = 65;
+break _62;
+}
+else{
+	r9 = heapU8[r10+2];
+	if(r9 ==0) //_LBB708_66
+{
+__label__ = 60;
+break _62;
+}
+else{
+	r11 = r8 << 2;
+	if(r9 !=59) //_LBB708_60
+{
+	r10 = heapU8[r10+3];
+	if(r10 ==0) //_LBB708_66
+{
+__label__ = 60;
+break _62;
+}
+else{
+	if(r10 !=59) //_LBB708_63
+{
+	r8 = (r8 + 1)|0;
+	r6 = (r6 + 4)|0;
+}
+else{
+__label__ = 57;
+break _62;
+}
+}
+}
+else{
+__label__ = 54;
+break _62;
+}
+}
+}
+}
+}
+}
+}
+_72: do {
+switch(__label__ ){//multiple entries
+case 59:
+	if(r10 ==0) //_LBB708_66
+{
+__label__ = 60;
+break _72;
+}
+else{
+__label__ = 66;
+break _72;
+}
+break;
+case 65:
+	r10 = (r10 + 1)|0;
+__label__ = 66;
+break _72;
+break;
+case 57:
+	r6 = r11 | 3;
+	r10 = (r7 + r6)|0;
+__label__ = 66;
+break _72;
+break;
+case 54:
+	r6 = r11 | 2;
+	r10 = (r7 + r6)|0;
+__label__ = 66;
+break;
+}
+} while(0);
+if (__label__ == 60){
+	r10 = heapU8[r7];
+_79: do {
+	if(r10 !=0) //_LBB708_68
+{
+	r6 = (r7 + 1)|0;
+	r8 = 0;
+_81: while(true){
+	r10 = (r8 + 1)|0;
+	r9 = heapU8[r6+r8];
+	r8 = r10;
+if(!(r9 !=0)) //_LBB708_69
+{
+break _79;
+}
+}
+}
+else{
+	r10 = 0;
+}
+} while(0);
+	r10 = (r7 + r10)|0;
+}
+	r6 = (r10 - r7)|0;
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r7;
+	heap32[(g0+2)] = r6;
+	_ZN4__rw14__rw_pod_arrayIcLj256EE6appendEPKcj(i7);
+	r6 = _2E_str785;
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r6;
+	heap32[(g0+2)] = 1;
+	_ZN4__rw14__rw_pod_arrayIcLj256EE6appendEPKcj(i7);
+	r5 = (r5 + -1)|0;
+}
+else{
+break _56;
+}
+}
+	r4 = heap32[(r2+1)];
+	if(r4 ==0) //_LBB708_78
+{
+	heap32[(g0)] = 0;
+	heap32[(g0+1)] = 0;
+	_ZN4__rw11__rw_locale9_C_manageEPS0_PKc(i7);
+	r4 = r_g0;
+__label__ = 73;
+break _1;
+}
+else{
+__label__ = 72;
+break _1;
+}
+break;
+case 22:
+	r4 = 0;
+__label__ = 73;
+break;
+}
+}
+else{
+__label__ = 72;
+}
+} while(0);
+if (__label__ == 72){
+	heap32[(g0)] = 0;
+	heap32[(g0+1)] = r4;
+	_ZN4__rw11__rw_locale9_C_manageEPS0_PKc(i7);
+	r4 = r_g0;
+}
+	r0 = heap32[(r2+1)];
+if(!(r0 ==r1)) //_LBB708_83
+{
+if(!(r0 ==0)) //_LBB708_83
+{
+	heap32[(g0)] = r0;
+	_ZdaPv(i7);
+}
+}
+	r_g0 = r4;
+	return;
+}
+
+function _ZNSt6localeD1Ev(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+	var r6;
+	var r7;
+	var r8;
+	var r9;
+	var r10;
+	var r11;
+	var r12;
+	var r13;
+	var r14;
+	var r15;
+var __label__ = 0;
+	i7 = sp + -8;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r0 = r0 >> 2;
+	r1 = heap32[(r0)];
+	r2 = r1 >> 2;
+	r3 = heap32[(r2+27)];
+_1: do {
+if(!(r3 !=0)) //_LBB709_86
+{
+	r3 = heap32[(r2+40)];
+	r3 = r3 & 67108863;
+if(!(r3 !=67108863)) //_LBB709_86
+{
+	r3 = heap32[(r2+41)];
+	r4 = r3 & 8193;
+if(!(r4 ==0)) //_LBB709_4
+{
+	if(r4 !=8193) //_LBB709_86
+{
+break _1;
+}
+}
+	r4 = r3 & 49158;
+if(!(r4 ==0)) //_LBB709_6
+{
+	if(r4 !=49158) //_LBB709_86
+{
+break _1;
+}
+}
+	r4 = r3 & 983160;
+if(!(r4 ==0)) //_LBB709_8
+{
+	if(r4 !=983160) //_LBB709_86
+{
+break _1;
+}
+}
+	r4 = r3 & 7340928;
+if(!(r4 ==0)) //_LBB709_10
+{
+	if(r4 !=7340928) //_LBB709_86
+{
+break _1;
+}
+}
+	r4 = r3 & 25168896;
+if(!(r4 ==0)) //_LBB709_12
+{
+	if(r4 !=25168896) //_LBB709_86
+{
+break _1;
+}
+}
+	r3 = r3 & 33558528;
+if(!(r3 ==0)) //_LBB709_14
+{
+	if(r3 !=33558528) //_LBB709_86
+{
+break _1;
+}
+}
+	r3 = heap32[(r2+38)];
+	r4 = _2E_str538;
+	r5 = r3 == 0 ? r4 : r3;
+	r6 = heapU8[r5];
+	if(r6 ==59) //_LBB709_16
+{
+	r5 = (r5 + 1)|0;
+}
+	r6 = 0;
+	r7 = r6;
+_25: while(true){
+	r8 = heapU8[r5+r6];
+	if(r8 ==0) //_LBB709_33
+{
+__label__ = 31;
+break _25;
+}
+else{
+	r9 = (r5 + r6)|0;
+	if(r8 ==59) //_LBB709_29
+{
+__label__ = 28;
+break _25;
+}
+else{
+	r8 = heapU8[r9+1];
+	if(r8 ==0) //_LBB709_33
+{
+__label__ = 31;
+break _25;
+}
+else{
+	if(r8 ==59) //_LBB709_31
+{
+__label__ = 29;
+break _25;
+}
+else{
+	r8 = heapU8[r9+2];
+	if(r8 ==0) //_LBB709_33
+{
+__label__ = 31;
+break _25;
+}
+else{
+	r10 = r7 << 2;
+	if(r8 !=59) //_LBB709_25
+{
+	r9 = heapU8[r9+3];
+	if(r9 ==0) //_LBB709_33
+{
+__label__ = 31;
+break _25;
+}
+else{
+	if(r9 !=59) //_LBB709_28
+{
+	r7 = (r7 + 1)|0;
+	r6 = (r6 + 4)|0;
+}
+else{
+__label__ = 26;
+break _25;
+}
+}
+}
+else{
+__label__ = 23;
+break _25;
+}
+}
+}
+}
+}
+}
+}
+_35: do {
+switch(__label__ ){//multiple entries
+case 28:
+	if(r9 ==0) //_LBB709_33
+{
+__label__ = 31;
+break _35;
+}
+else{
+__label__ = 30;
+break _35;
+}
+break;
+case 29:
+	r9 = (r9 + 1)|0;
+__label__ = 30;
+break _35;
+break;
+case 26:
+	r6 = r10 | 3;
+	r9 = (r5 + r6)|0;
+__label__ = 30;
+break _35;
+break;
+case 23:
+	r6 = r10 | 2;
+	r9 = (r5 + r6)|0;
+__label__ = 30;
+break;
+}
+} while(0);
+switch(__label__ ){//multiple entries
+case 31:
+	r6 = heapU8[r5];
+	if(r6 !=0) //_LBB709_35
+{
+	r7 = (r5 + 1)|0;
+	r8 = 0;
+_44: while(true){
+	r6 = (r8 + 1)|0;
+	r9 = heapU8[r7+r8];
+	r8 = r6;
+if(!(r9 !=0)) //_LBB709_36
+{
+break _44;
+}
+}
+	r9 = 0;
+	r7 = r9;
+	r8 = r9;
+}
+else{
+	r9 = 0;
+	r6 = r9;
+	r7 = r9;
+	r8 = r9;
+}
+break;
+case 30:
+	r6 = (r9 - r5)|0;
+	r7 = 0;
+	r8 = r7;
+break;
+}
+_49: while(true){
+	if(r7 !=26) //_LBB709_38
+{
+	r10 = r7 << 2;
+	r10 = (r1 + r10)|0;
+	r10 = r10 >> 2;
+	r10 = heap32[(r10)];
+_52: do {
+	if(r10 !=0) //_LBB709_40
+{
+	r10 = r10 >> 2;
+	r11 = heap32[(r10+7)];
+	r11 = r11 >> 2;
+	r10 = heap32[(r10+1)];
+	r12 = 0;
+	r13 = r10 != r12;
+	r11 = heap32[(r11)];
+	r13 = r13 & 1;
+	r11 = r11 << 1;
+	r11 = r13 | r11;
+	r11 = (r11 + -1)|0;
+	r13 = 53;
+	r11 = uint(r11) < uint(r13) ? r11 : r12;
+	if(r11 >36) //_LBB709_43
+{
+	r11 = (r11 + -37)|0;
+if(!(uint(r11) >uint(8))) //_LBB709_45
+{
+	r13 = 1;
+	r11 = r13 << r11;
+	r11 = r11 & 325;
+	if(r11 !=0) //_LBB709_39
+{
+break _52;
+}
+}
+}
+else{
+if(!(uint(r11) >uint(19))) //_LBB709_45
+{
+	r13 = 1;
+	r11 = r13 << r11;
+	r11 = r11 & 665600;
+	if(r11 !=0) //_LBB709_39
+{
+break _52;
+}
+}
+}
+	r11 = 1;
+	r11 = r11 << r7;
+_60: while(true){
+	if(r9 ==0) //_LBB709_75
+{
+break _60;
+}
+else{
+	r13 = _ZN4__rw9__rw_catsE;
+	r14 = (r8 * 12)|0;
+	r13 = (r13 + r14)|0;
+	r13 = r13 >> 2;
+	r13 = heap32[(r13+2)];
+	r13 = r13 & r11;
+	if(r13 ==0) //_LBB709_46
+{
+	r5 = heapU8[r9];
+	if(r5 ==0) //_LBB709_48
+{
+	if(r3 !=0) //_LBB709_50
+{
+	r8 = 0;
+	r5 = r3;
+}
+else{
+	r8 = 0;
+	r5 = r4;
+}
+}
+else{
+	r5 = (r9 + 1)|0;
+	r8 = (r8 + 1)|0;
+}
+	r6 = heapU8[r5];
+	if(r6 ==59) //_LBB709_53
+{
+	r5 = (r5 + 1)|0;
+}
+	r6 = r12;
+	r13 = r12;
+_74: while(true){
+	r14 = heapU8[r5+r6];
+	if(r14 ==0) //_LBB709_70
+{
+__label__ = 65;
+break _74;
+}
+else{
+	r9 = (r5 + r6)|0;
+	if(r14 ==59) //_LBB709_66
+{
+__label__ = 62;
+break _74;
+}
+else{
+	r14 = heapU8[r9+1];
+	if(r14 ==0) //_LBB709_70
+{
+__label__ = 65;
+break _74;
+}
+else{
+	if(r14 ==59) //_LBB709_68
+{
+__label__ = 63;
+break _74;
+}
+else{
+	r14 = heapU8[r9+2];
+	if(r14 ==0) //_LBB709_70
+{
+__label__ = 65;
+break _74;
+}
+else{
+	r15 = r13 << 2;
+	if(r14 !=59) //_LBB709_62
+{
+	r9 = heapU8[r9+3];
+	if(r9 ==0) //_LBB709_70
+{
+__label__ = 65;
+break _74;
+}
+else{
+	if(r9 !=59) //_LBB709_65
+{
+	r13 = (r13 + 1)|0;
+	r6 = (r6 + 4)|0;
+}
+else{
+__label__ = 60;
+break _74;
+}
+}
+}
+else{
+__label__ = 57;
+break _74;
+}
+}
+}
+}
+}
+}
+}
+_84: do {
+switch(__label__ ){//multiple entries
+case 62:
+	if(r9 ==0) //_LBB709_70
+{
+__label__ = 65;
+break _84;
+}
+else{
+__label__ = 64;
+break _84;
+}
+break;
+case 63:
+	r9 = (r9 + 1)|0;
+__label__ = 64;
+break _84;
+break;
+case 60:
+	r6 = r15 | 3;
+	r9 = (r5 + r6)|0;
+__label__ = 64;
+break _84;
+break;
+case 57:
+	r6 = r15 | 2;
+	r9 = (r5 + r6)|0;
+__label__ = 64;
+break;
+}
+} while(0);
+switch(__label__ ){//multiple entries
+case 65:
+	r9 = _2E_str26;
+	r6 = 0;
+	r13 = heapU8[r5];
+	if(r13 ==0) //_LBB709_73
+{
+continue _60;
+}
+else{
+	r13 = (r5 + 1)|0;
+	r14 = 0;
+_92: while(true){
+	r6 = (r14 + 1)|0;
+	r9 = _2E_str26;
+	r15 = heapU8[r13+r14];
+	r14 = r6;
+if(!(r15 !=0)) //_LBB709_72
+{
+continue _60;
+}
+}
+}
+break;
+case 64:
+	r6 = (r9 - r5)|0;
+break;
+}
+}
+else{
+break _60;
+}
+}
+}
+	r11 = _2E_str538;
+	r10 = r10 == 0 ? r11 : r10;
+	r11 = heapU8[r10];
+_96: do {
+	if(r11 !=0) //_LBB709_77
+{
+	r12 = (r10 + 1)|0;
+	r13 = 0;
+_98: while(true){
+	r11 = (r13 + 1)|0;
+	r14 = heapU8[r12+r13];
+	r13 = r11;
+if(!(r14 !=0)) //_LBB709_78
+{
+break _96;
+}
+}
+}
+else{
+	r11 = 0;
+}
+} while(0);
+	if(r11 !=r6) //_LBB709_86
+{
+break _1;
+}
+else{
+	r11 = 0;
+_103: while(true){
+	r12 = (r6 + r11)|0;
+	if(r12 !=0) //_LBB709_81
+{
+	r12 = (r5 - r11)|0;
+	r13 = (r10 - r11)|0;
+	r11 = (r11 + -1)|0;
+	r12 = heapU8[r12];
+	r13 = heapU8[r13];
+	if(r12 !=r13) //_LBB709_86
+{
+break _1;
+}
+}
+else{
+break _52;
+}
+}
+}
+}
+} while(0);
+	r7 = (r7 + 1)|0;
+}
+else{
+break _49;
+}
+}
+	heap32[(g0)] = r1;
+	heap32[(g0+1)] = r3;
+	_ZN4__rw11__rw_locale9_C_manageEPS0_PKc(i7);
+	return;
+}
+}
+} while(0);
+	r1 = heap32[(r2+39)];
+	r1 = (r1 + -1)|0;
+	heap32[(r2+39)] = r1;
+if(!(r1 !=0)) //_LBB709_89
+{
+	r0 = heap32[(r0)];
+if(!(r0 ==0)) //_LBB709_89
+{
+	heap32[(g0)] = r0;
+	_ZN4__rw11__rw_localeD2Ev(i7);
+	heap32[(g0)] = r0;
+	_ZdlPv(i7);
+}
+}
+	return;
+}
+
+function _ZN4__rwL20__rw_manage_cat_dataERiPNS_18__rw_open_cat_dataE(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+	var r6;
+	var r7;
+	var r8;
+var __label__ = 0;
+	i7 = sp + -16;var g0 = i7>>2; // save stack
+	r0 = _ZZN4__rwL20__rw_manage_cat_dataERiPNS_18__rw_open_cat_dataEE4init_2E_b;
+	r1 = heapU8[r0];
+if(!(r1 != 0)) //_LBB710_5
+{
+	r1 = _ZZN4__rwL20__rw_manage_cat_dataERiPNS_18__rw_open_cat_dataEE15catalog_bufsize;
+	r1 = r1 >> 2;
+	r1 = heap32[(r1)];
+if(!(r1 ==0)) //_LBB710_4
+{
+	r2 = 0;
+_5: while(true){
+	r3 = _ZZN4__rwL20__rw_manage_cat_dataERiPNS_18__rw_open_cat_dataEE8catalogs;
+	r3 = r3 >> 2;
+	r4 = r2 << 3;
+	r3 = heap32[(r3)];
+	r3 = (r3 + r4)|0;
+	r2 = (r2 + 1)|0;
+	r3 = r3 >> 2;
+	heap32[(r3)] = -1;
+if(!(uint(r2) <uint(r1))) //_LBB710_3
+{
+break _5;
+}
+}
+}
+	r1 = 1;
+	heap8[r0] = r1;
+}
+	r0 = heap32[(fp)];
+	r1 = heap32[(fp+1)];
+	r0 = r0 >> 2;
+	r2 = heap32[(r0)];
+_9: do {
+	if(r2 !=-1) //_LBB710_27
+{
+	if(r1 !=0) //_LBB710_30
+{
+	r3 = _ZZN4__rwL20__rw_manage_cat_dataERiPNS_18__rw_open_cat_dataEE10n_catalogs;
+	r3 = r3 >> 2;
+	r4 = heap32[(r3)];
+	r5 = _ZZN4__rwL20__rw_manage_cat_dataERiPNS_18__rw_open_cat_dataEE8catalogs;
+	r4 = (r4 + -1)|0;
+	r5 = r5 >> 2;
+	heap32[(r3)] = r4;
+	r3 = heap32[(r5)];
+	r2 = r2 << 3;
+	r2 = (r3 + r2)|0;
+	r4 = _ZZN4__rwL20__rw_manage_cat_dataERiPNS_18__rw_open_cat_dataEE11largest_cat;
+	r2 = r2 >> 2;
+	heap32[(r2)] = -1;
+	r2 = r4 >> 2;
+	r0 = heap32[(r0)];
+	r4 = heap32[(r2)];
+	if(r0 ==r4) //_LBB710_32
+{
+__label__ = 33; //SET chanka
+_13: while(true){
+	if(r0 >-1) //_LBB710_33
+{
+	r6 = r0 << 3;
+	r6 = (r3 + r6)|0;
+	r6 = r6 >> 2;
+	r6 = heap32[(r6)];
+	if(r6 ==-1) //_LBB710_35
+{
+	r0 = (r0 + -1)|0;
+}
+else{
+__label__ = 31;
+break _13;
+}
+}
+else{
+__label__ = 34;
+break _13;
+}
+}
+switch(__label__ ){//multiple entries
+case 34:
+	r0 = r4;
+break;
+case 31:
+	heap32[(r2)] = r0;
+break;
+}
+	if(uint(r0) >uint(3)) //_LBB710_31
+{
+__label__ = 40;
+break _9;
+}
+else{
+	r0 = _ZZN4__rwL20__rw_manage_cat_dataERiPNS_18__rw_open_cat_dataEE11catalog_buf;
+	if(r3 ==r0) //_LBB710_31
+{
+__label__ = 40;
+break _9;
+}
+else{
+	r2 = _ZZN4__rwL20__rw_manage_cat_dataERiPNS_18__rw_open_cat_dataEE15catalog_bufsize;
+	r2 = r2 >> 2;
+	heap32[(r2)] = 8;
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r3;
+	heap32[(g0+2)] = 64;
+	memcpy(i7);
+if(!(r3 ==0)) //_LBB710_42
+{
+	heap32[(g0)] = r3;
+	_ZdaPv(i7);
+}
+	heap32[(r5)] = r0;
+__label__ = 40;
+break _9;
+}
+}
+}
+else{
+__label__ = 40;
+break _9;
+}
+}
+else{
+	r0 = _ZZN4__rwL20__rw_manage_cat_dataERiPNS_18__rw_open_cat_dataEE15catalog_bufsize;
+	r0 = r0 >> 2;
+	r0 = heap32[(r0)];
+	if(uint(r2) >=uint(r0)) //_LBB710_7
+{
+__label__ = 7;
+break _9;
+}
+else{
+	r0 = _ZZN4__rwL20__rw_manage_cat_dataERiPNS_18__rw_open_cat_dataEE8catalogs;
+	r0 = r0 >> 2;
+	r0 = heap32[(r0)];
+	r1 = r2 << 3;
+	r0 = (r0 + r1)|0;
+	r_g0 = r0;
+	return;
+}
+}
+}
+else{
+	if(r1 !=0) //_LBB710_8
+{
+	r2 = _ZZN4__rwL20__rw_manage_cat_dataERiPNS_18__rw_open_cat_dataEE10n_catalogs;
+	r2 = r2 >> 2;
+	r3 = _ZZN4__rwL20__rw_manage_cat_dataERiPNS_18__rw_open_cat_dataEE15catalog_bufsize;
+	r4 = heap32[(r2)];
+	r3 = r3 >> 2;
+	r5 = heap32[(r3)];
+	if(r4 ==r5) //_LBB710_12
+{
+	r4 = r4 << 4;
+	r5 = _ZZN4__rwL20__rw_manage_cat_dataERiPNS_18__rw_open_cat_dataEE8catalogs;
+	heap32[(g0)] = r4;
+	_Znaj(i7);
+	r4 = r_g0;
+	r5 = r5 >> 2;
+	r6 = heap32[(r2)];
+	r7 = heap32[(r5)];
+	r8 = r6 << 3;
+	heap32[(g0)] = r4;
+	heap32[(g0+1)] = r7;
+	heap32[(g0+2)] = r8;
+	memcpy(i7);
+	r8 = _ZZN4__rwL20__rw_manage_cat_dataERiPNS_18__rw_open_cat_dataEE11catalog_buf;
+if(!(r7 ==r8)) //_LBB710_14
+{
+	if(r7 !=0) //_LBB710_15
+{
+	heap32[(g0)] = r7;
+	_ZdaPv(i7);
+	r6 = heap32[(r2)];
+}
+}
+	heap32[(r5)] = r4;
+	r5 = heap32[(r3)];
+	r5 = r5 << 1;
+	heap32[(r3)] = r5;
+_36: do {
+if(!(uint(r6) >=uint(r5))) //_LBB710_20
+{
+	r3 = (r6 + 1)|0;
+_38: while(true){
+	r7 = r3 << 3;
+	r7 = (r4 + r7)|0;
+	r7 = r7 >> 2;
+	heap32[(r7+-2)] = -1;
+	if(uint(r3) >=uint(r5)) //_LBB710_20
+{
+break _36;
+}
+else{
+	r3 = (r3 + 1)|0;
+}
+}
+}
+} while(0);
+	r3 = r6 << 3;
+	r3 = (r4 + r3)|0;
+	heap32[(r0)] = r6;
+	r3 = (r3 + 4)|0;
+	r5 = (r1 + 4)|0;
+	heap32[(g0)] = r3;
+	heap32[(g0+1)] = r5;
+	heap32[(g0+2)] = 4;
+	memcpy(i7);
+	r3 = heap32[(r0)];
+	r3 = r3 << 3;
+	r5 = r1 >> 2;
+	r3 = (r4 + r3)|0;
+	r4 = heap32[(r5)];
+	r3 = r3 >> 2;
+	heap32[(r3)] = r4;
+	r0 = heap32[(r0)];
+	r3 = _ZZN4__rwL20__rw_manage_cat_dataERiPNS_18__rw_open_cat_dataEE11largest_cat;
+	r3 = r3 >> 2;
+	r4 = heap32[(r3)];
+if(!(uint(r0) <=uint(r4))) //_LBB710_22
+{
+	heap32[(r3)] = r0;
+}
+	r0 = (r6 + 1)|0;
+	heap32[(r2)] = r0;
+	r_g0 = r1;
+	return;
+}
+else{
+	r3 = _ZZN4__rwL20__rw_manage_cat_dataERiPNS_18__rw_open_cat_dataEE8catalogs;
+	r3 = r3 >> 2;
+	heap32[(r0)] = 0;
+	r3 = heap32[(r3)];
+	r5 = r3 >> 2;
+	r5 = heap32[(r5)];
+_46: do {
+	if(r5 !=-1) //_LBB710_11
+{
+	r5 = 0;
+_48: while(true){
+	r6 = r5 << 3;
+	r6 = (r3 + r6)|0;
+	r5 = (r5 + 1)|0;
+	r6 = r6 >> 2;
+	heap32[(r0)] = r5;
+	r6 = heap32[(r6+2)];
+if(!(r6 !=-1)) //_LBB710_23
+{
+break _46;
+}
+}
+}
+else{
+	r5 = 0;
+}
+} while(0);
+	r6 = _ZZN4__rwL20__rw_manage_cat_dataERiPNS_18__rw_open_cat_dataEE11largest_cat;
+	r6 = r6 >> 2;
+	r7 = heap32[(r6)];
+if(!(uint(r5) <=uint(r7))) //_LBB710_26
+{
+	heap32[(r6)] = r5;
+}
+	r5 = r5 << 3;
+	r5 = (r3 + r5)|0;
+	r5 = (r5 + 4)|0;
+	r6 = (r1 + 4)|0;
+	heap32[(g0)] = r5;
+	heap32[(g0+1)] = r6;
+	heap32[(g0+2)] = 4;
+	memcpy(i7);
+	r0 = heap32[(r0)];
+	r0 = r0 << 3;
+	r5 = r1 >> 2;
+	r0 = (r3 + r0)|0;
+	r3 = heap32[(r5)];
+	r0 = r0 >> 2;
+	r4 = (r4 + 1)|0;
+	heap32[(r0)] = r3;
+	heap32[(r2)] = r4;
+	r_g0 = r1;
+	return;
+}
+}
+else{
+__label__ = 7;
+}
+}
+} while(0);
+if (__label__ == 7){
+	r1 = 0;
+}
+	r_g0 = r1;
+	return;
+}
+
+function _ZN4__rw14__rw_cat_closeEi(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+	var r6;
+	var r7;
+	var r8;
+var __label__ = 0;
+	i7 = sp + -24;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	heap32[(fp+-1)] = r0;
+if(!(r0 <0)) //_LBB711_20
+{
+	r0 = sp + -4;
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = 0;
+	_ZN4__rwL20__rw_manage_cat_dataERiPNS_18__rw_open_cat_dataE(i7);
+	r1 = r_g0;
+if(!(r1 ==0)) //_LBB711_20
+{
+	r2 = r1 >> 2;
+	r2 = heap32[(r2)];
+if(!(r2 ==-1)) //_LBB711_20
+{
+	r3 = _ZN4__rwL12__rw_catlistE_2E_1;
+	r4 = _ZN4__rwL12__rw_catlistE_2E_0;
+	r3 = r3 >> 2;
+	r4 = r4 >> 2;
+	r5 = heap32[(r4)];
+	r6 = heap32[(r3)];
+	r6 = (r6 - r5)|0;
+	r6 = r6 >> 2;
+	r7 = 0;
+_5: while(true){
+	if(uint(r6) >uint(r7)) //_LBB711_9
+{
+	r8 = r7 << 2;
+	r8 = (r5 + r8)|0;
+	r8 = r8 >> 2;
+	r8 = heap32[(r8)];
+	if(r8 ==0) //_LBB711_8
+{
+__label__ = 7;
+break _5;
+}
+else{
+	if(r8 !=r2) //_LBB711_6
+{
+	r7 = (r7 + 1)|0;
+}
+else{
+__label__ = 9;
+break _5;
+}
+}
+}
+else{
+__label__ = 7;
+break _5;
+}
+}
+if (__label__ == 7){
+	r7 = r6;
+}
+_13: do {
+if(!(uint(r6) <=uint(r7))) //_LBB711_19
+{
+	r2 = r7 << 2;
+	r6 = (r5 + r2)|0;
+	r6 = r6 >> 2;
+	r6 = heap32[(r6)];
+	if(r6 !=0) //_LBB711_13
+{
+	heap32[(g0)] = r6;
+	_ZdlPv(i7);
+	r5 = heap32[(r4)];
+}
+	r2 = (r5 + r2)|0;
+	r4 = (r7 + 1)|0;
+	r2 = r2 >> 2;
+	heap32[(r2)] = 0;
+_18: while(true){
+	r2 = heap32[(r3)];
+	r2 = (r2 - r5)|0;
+	r2 = r2 >> 2;
+	if(uint(r2) <=uint(r4)) //_LBB711_19
+{
+break _13;
+}
+else{
+	r2 = r4 << 2;
+	r2 = (r5 + r2)|0;
+	r6 = r2 >> 2;
+	r2 = heap32[(r6)];
+	if(r2 !=0) //_LBB711_15
+{
+	r4 = (r4 + 1)|0;
+	heap32[(r6+-1)] = r2;
+}
+else{
+break _18;
+}
+}
+}
+	heap32[(r6)] = 0;
+}
+} while(0);
+	r2 = (r1 + 4)|0;
+	heap32[(g0)] = r2;
+	_ZNSt6localeD1Ev(i7);
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r1;
+	_ZN4__rwL20__rw_manage_cat_dataERiPNS_18__rw_open_cat_dataE(i7);
+	return;
+}
+}
+}
+	r0 = _2E_str115180;
+	r1 = _2E_str1116181;
+	heap32[(g0)] = 7;
+	heap32[(g0+1)] = r0;
+	heap32[(g0+2)] = r1;
+	_ZN4__rw10__rw_throwEiz(i7);
+	return;
+}
+
+function _ZN4__rw16__rw_locale_nameEiPKcRNS_14__rw_pod_arrayIcLj256EEE(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+	var r6;
+	var r7;
+	var r8;
+var __label__ = 0;
+	i7 = sp + -368;var g0 = i7>>2; // save stack
+	r0 = _ZZN4__rw16__rw_locale_nameEiPKcRNS_14__rw_pod_arrayIcLj256EEEE11locale_root;
+	r1 = heap32[(fp)];
+	r2 = heap32[(fp+1)];
+	r3 = heap32[(fp+2)];
+	r4 = heapU8[r0];
+	r5 = 0;
+	heap8[sp+-259] = r5;
+	r6 = heapU8[r2];
+_1: do {
+	if(r6 !=0) //_LBB712_2
+{
+	r7 = (r2 + 1)|0;
+_3: while(true){
+	r6 = (r5 + 1)|0;
+	r8 = heapU8[r7+r5];
+	r5 = r6;
+	if(r8 !=0) //_LBB712_3
+{
+continue _3;
+}
+else{
+break _1;
+}
+}
+}
+else{
+	r6 = 0;
+}
+} while(0);
+	r4 = r4 & 255;
+_7: do {
+	if(r4 !=0) //_LBB712_6
+{
+	r4 = (r6 + 1)|0;
+	r5 = (r0 + 1)|0;
+_9: while(true){
+	r4 = (r4 + 1)|0;
+	r7 = (r5 + 1)|0;
+	r8 = heapU8[r5];
+	r5 = r7;
+if(!(r8 !=0)) //_LBB712_7
+{
+break _9;
+}
+}
+	if(uint(r4) >uint(258)) //_LBB712_5
+{
+__label__ = 5;
+}
+else{
+	r4 = sp + -259;
+	heap32[(g0)] = r4;
+	heap32[(g0+1)] = r0;
+	strcpy(i7);
+	r0 = heapU8[sp+-259];
+_13: do {
+	if(r0 !=0) //_LBB712_11
+{
+	r0 = (r4 + 1)|0;
+	r7 = 0;
+_15: while(true){
+	r5 = (r7 + 1)|0;
+	r8 = heapU8[r0+r7];
+	r7 = r5;
+if(!(r8 !=0)) //_LBB712_12
+{
+break _13;
+}
+}
+}
+else{
+	r5 = 0;
+}
+} while(0);
+	r7 = 47;
+	r0 = (r5 + 1)|0;
+	r8 = 0;
+	heap8[r4+r5] = r7;
+	heap8[r4+r0] = r8;
+	r5 = heapU8[sp+-259];
+	if(r5 !=0) //_LBB712_15
+{
+	r5 = (r4 + 1)|0;
+_21: while(true){
+	r4 = (r8 + 1)|0;
+	r7 = heapU8[r5+r8];
+	r8 = r4;
+	if(r7 !=0) //_LBB712_16
+{
+continue _21;
+}
+else{
+__label__ = 17;
+break _7;
+}
+}
+}
+else{
+	r4 = 0;
+__label__ = 17;
+}
+}
+}
+else{
+__label__ = 5;
+}
+} while(0);
+if (__label__ == 5){
+	r0 = 0;
+	r4 = r0;
+}
+	r4 = (r4 + r6)|0;
+if(!(uint(r4) >uint(258))) //_LBB712_33
+{
+	r4 = sp + -259;
+	r0 = (r4 + r0)|0;
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r2;
+	strcpy(i7);
+	r0 = _2E_str37683;
+	heap32[(g0)] = r4;
+	heap32[(g0+1)] = r0;
+	strcmp(i7);
+	r0 = r_g0;
+	if(r0 ==0) //_LBB712_28
+{
+	r1 = heapU8[r2];
+_31: do {
+	if(r1 !=0) //_LBB712_30
+{
+	r0 = (r2 + 1)|0;
+	r4 = 0;
+_33: while(true){
+	r1 = (r4 + 1)|0;
+	r5 = heapU8[r0+r4];
+	r4 = r1;
+if(!(r5 !=0)) //_LBB712_31
+{
+break _31;
+}
+}
+}
+else{
+	r1 = 0;
+}
+} while(0);
+	r0 = r3 >> 2;
+	heap32[(r0)] = 0;
+	heap32[(g0)] = r3;
+	heap32[(g0+1)] = r2;
+	heap32[(g0+2)] = r1;
+	_ZN4__rw14__rw_pod_arrayIcLj256EE6appendEPKcj(i7);
+	r1 = heap32[(r0+1)];
+	r_g0 = r1;
+	return;
+}
+else{
+	r2 = _2E_str1648;
+	heap32[(g0)] = r4;
+	heap32[(g0+1)] = r2;
+	fopen(i7);
+	r2 = r_g0;
+if(!(r2 ==0)) //_LBB712_33
+{
+	if(uint(r2) <uint(10)) //_LBB712_22
+{
+	r3 = _ZL13s_file_stdout;
+	r0 = r3 >> 2;
+	r0 = heap32[(r0)];
+	r0 = r0 >> 2;
+	r0 = heap32[(r0+7)];
+	heap32[(g0)] = r3;
+	heap32[(g0+1)] = 0;
+	heap32[(g0+2)] = 2;
+	__FUNCTION_TABLE__[(r0)>>2](i7);
+}
+else{
+	r3 = r2 >> 2;
+	r3 = heap32[(r3)];
+	r3 = r3 >> 2;
+	r3 = heap32[(r3+7)];
+	heap32[(g0)] = r2;
+	heap32[(g0+1)] = 0;
+	heap32[(g0+2)] = 2;
+	__FUNCTION_TABLE__[(r3)>>2](i7);
+	r3 = r2;
+}
+	r0 = r3 >> 2;
+	r0 = heap32[(r0)];
+	r0 = r0 >> 2;
+	r0 = heap32[(r0+5)];
+	heap32[(g0)] = r3;
+	__FUNCTION_TABLE__[(r0)>>2](i7);
+	if(uint(r2) >uint(9)) //_LBB712_25
+{
+	r3 = r2;
+}
+else{
+	r3 = _ZL13s_file_stdout;
+}
+	r0 = r3 >> 2;
+	r0 = heap32[(r0)];
+	r0 = r0 >> 2;
+	r0 = heap32[(r0+4)];
+	heap32[(g0)] = r3;
+	__FUNCTION_TABLE__[(r0)>>2](i7);
+if(!(uint(r2) <uint(10))) //_LBB712_33
+{
+	heap32[(g0)] = r3;
+	_ZdlPv(i7);
+}
+}
+}
+}
+	r0 = sp + -352;
+	r0 = r0 >> 2;
+	heap32[(r0+20)] = 0;
+	heap32[(r0+22)] = r1;
+	heap32[(r0+21)] = 0;
+	r0 = 0;
+	r_g0 = r0;
+	return;
+}
+
+function _ZNKSt8messagesIcE8do_closeEi(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+var __label__ = 0;
+	i7 = sp + -8;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp+1)];
+	heap32[(g0)] = r0;
+	_ZN4__rw14__rw_cat_closeEi(i7);
+	return;
+}
+
+function _ZNKSt8messagesIcE6do_getEiiiRKSs(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+var __label__ = 0;
+	i7 = sp + -24;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp+2)];
+	heap32[(fp+-1)] = r0;
+if(!(r0 <0)) //_LBB714_8
+{
+	r0 = sp + -4;
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = 0;
+	_ZN4__rwL20__rw_manage_cat_dataERiPNS_18__rw_open_cat_dataE(i7);
+	r0 = r_g0;
+if(!(r0 ==0)) //_LBB714_8
+{
+	r0 = r0 >> 2;
+	r0 = heap32[(r0)];
+if(!(r0 ==-1)) //_LBB714_8
+{
+	r1 = _ZN4__rwL12__rw_catlistE_2E_1;
+	r2 = _ZN4__rwL12__rw_catlistE_2E_0;
+	r1 = r1 >> 2;
+	r2 = r2 >> 2;
+	r2 = heap32[(r2)];
+	r1 = heap32[(r1)];
+	r1 = (r1 - r2)|0;
+	r1 = r1 >> 2;
+	r3 = 0;
+_5: while(true){
+	if(uint(r1) <=uint(r3)) //_LBB714_8
+{
+break _5;
+}
+else{
+	r4 = r3 << 2;
+	r4 = (r2 + r4)|0;
+	r4 = r4 >> 2;
+	r4 = heap32[(r4)];
+	if(r4 ==0) //_LBB714_8
+{
+break _5;
+}
+else{
+	if(r4 !=r0) //_LBB714_4
+{
+	r3 = (r3 + 1)|0;
+continue _5;
+}
+else{
+break _5;
+}
+}
+}
+}
+}
+}
+}
+	r0 = heap32[(fp)];
+	r1 = heap32[(fp+5)];
+	r1 = r1 >> 2;
+	r2 = heap32[(r1)];
+	r3 = r2 >> 2;
+	r4 = heap32[(r3+-3)];
+	if(r4 ==-1) //_LBB714_11
+{
+	r2 = heap32[(r3+-1)];
+	heap32[(g0)] = r2;
+	heap32[(g0+1)] = r2;
+	_ZNSs10_C_get_repEjj(i7);
+	r0 = r0 >> 2;
+	r3 = (r_g0 + 12)|0;
+	heap32[(r0)] = r3;
+	r0 = heap32[(r1)];
+	heap32[(g0)] = r3;
+	heap32[(g0+1)] = r0;
+	heap32[(g0+2)] = r2;
+	memcpy(i7);
+}
+else{
+	r1 = (r2 + -12)|0;
+	r0 = r0 >> 2;
+	r3 = _ZNSs11_C_null_refE;
+	heap32[(r0)] = r2;
+if(!(r1 ==r3)) //_LBB714_12
+{
+	r0 = r1 >> 2;
+	r1 = (r4 + 1)|0;
+	heap32[(r0)] = r1;
+	return;
+}
+}
+	return;
+}
+
+function _ZNKSt8messagesIcE7do_openERKSsRKSt6locale(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+var __label__ = 0;
+	i7 = sp + -8;var g0 = i7>>2; // save stack
+	heap32[(g0)] = 1;
+	_Znwj(i7);
+	r0 = r_g0;
+if(!(r0 ==0)) //_LBB715_2
+{
+	heap32[(g0)] = r0;
+	_ZdlPv(i7);
+}
+	r0 = -1;
+	r_g0 = r0;
+	return;
+}
+
+function _ZNSt8messagesIcED0Ev(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+var __label__ = 0;
+	i7 = sp + -8;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = _ZTVN4__rw10__rw_facetE;
+	r2 = r0 >> 2;
+	r1 = (r1 + 8)|0;
+	heap32[(r2)] = r1;
+	heap32[(r2+5)] = -1;
+	r1 = heap32[(r2+1)];
+	r3 = heap32[(r2+2)];
+if(!(r1 ==r3)) //_LBB716_3
+{
+if(!(r1 ==0)) //_LBB716_3
+{
+	heap32[(g0)] = r1;
+	_ZdaPv(i7);
+}
+}
+	r1 = _ZZN4__rw10__rw_facetD4EvE9destroyed;
+	heap32[(r2+1)] = r1;
+	r1 = heap32[(r2+4)];
+if(!(r1 !=-1)) //_LBB716_5
+{
+	r1 = heap32[(r2+3)];
+	heap32[(g0)] = r1;
+	_ZdlPv(i7);
+}
+	heap32[(g0)] = r0;
+	_ZdlPv(i7);
+	return;
+}
+
+function _ZNSt8messagesIcED1Ev(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+var __label__ = 0;
+	i7 = sp + -8;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = _ZTVN4__rw10__rw_facetE;
+	r0 = r0 >> 2;
+	r1 = (r1 + 8)|0;
+	heap32[(r0)] = r1;
+	heap32[(r0+5)] = -1;
+	r1 = heap32[(r0+1)];
+	r2 = heap32[(r0+2)];
+if(!(r1 ==r2)) //_LBB717_3
+{
+if(!(r1 ==0)) //_LBB717_3
+{
+	heap32[(g0)] = r1;
+	_ZdaPv(i7);
+}
+}
+	r1 = _ZZN4__rw10__rw_facetD4EvE9destroyed;
+	heap32[(r0+1)] = r1;
+	r1 = heap32[(r0+4)];
+if(!(r1 !=-1)) //_LBB717_5
+{
+	r0 = heap32[(r0+3)];
+	heap32[(g0)] = r0;
+	_ZdlPv(i7);
+}
+	return;
+}
+
+function _ZN4__rw14__rw_pod_arrayIcLj256EE6appendEPKcj(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+	var r6;
+	var r7;
+var __label__ = 0;
+	i7 = sp + -16;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = r0 >> 2;
+	r2 = heap32[(fp+2)];
+	r3 = heap32[(r1)];
+	r4 = (r3 + r2)|0;
+	r5 = heap32[(fp+1)];
+	if(uint(r4) >uint(255)) //_LBB718_2
+{
+	r3 = (r4 + 1)|0;
+	heap32[(g0)] = r3;
+	_Znaj(i7);
+	r7 = r_g0;
+	r3 = heap32[(r1)];
+	r6 = heap32[(r1+1)];
+	heap32[(g0)] = r7;
+	heap32[(g0+1)] = r6;
+	heap32[(g0+2)] = r3;
+	memcpy(i7);
+	r3 = heap32[(r1+1)];
+	r6 = (r0 + 8)|0;
+if(!(r3 ==r6)) //_LBB718_5
+{
+if(!(r3 ==0)) //_LBB718_5
+{
+	heap32[(g0)] = r3;
+	_ZdaPv(i7);
+}
+}
+	r6 = (r0 + 4)|0;
+	heap32[(r1+1)] = r7;
+	r3 = heap32[(r1)];
+}
+else{
+	r6 = (r0 + 4)|0;
+	r7 = heap32[(r1+1)];
+}
+	r3 = (r7 + r3)|0;
+	heap32[(g0)] = r3;
+	heap32[(g0+1)] = r5;
+	heap32[(g0+2)] = r2;
+	memcpy(i7);
+	r2 = r6 >> 2;
+	heap32[(r1)] = r4;
+	r1 = heap32[(r2)];
+	r2 = 0;
+	heap8[r1+r4] = r2;
+	r_g0 = r0;
+	return;
+}
+
+function _ZNSs10_C_get_repEjj(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+var __label__ = 0;
+	i7 = sp + -24;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = heap32[(fp+1)];
+_1: do {
+	if(uint(r0) <uint(-13)) //_LBB719_4
+{
+	if(uint(r0) <uint(r1)) //_LBB719_6
+{
+	r2 = _2E_str4362;
+	r3 = _2E_str3361;
+	heap32[(g0)] = 8;
+	heap32[(g0+1)] = r2;
+	heap32[(g0+2)] = r3;
+	heap32[(g0+3)] = r1;
+	heap32[(g0+4)] = r0;
+	_ZN4__rw10__rw_throwEiz(i7);
+__label__ = 6;
+break _1;
+}
+else{
+__label__ = 6;
+break _1;
+}
+}
+else{
+	if(uint(r1) >uint(-14)) //_LBB719_3
+{
+	r0 = _2E_str2360;
+	r2 = _2E_str3361;
+	heap32[(g0)] = 8;
+	heap32[(g0+1)] = r0;
+	heap32[(g0+2)] = r2;
+	heap32[(g0+3)] = r1;
+	heap32[(g0+4)] = -14;
+	_ZN4__rw10__rw_throwEiz(i7);
+	r0 = r1;
+__label__ = 8;
+}
+else{
+	r0 = r1;
+__label__ = 6;
+}
+}
+} while(0);
+if (__label__ == 6){
+	if(r0 ==0) //_LBB719_9
+{
+	r0 = _ZNSs11_C_null_refE;
+	r_g0 = r0;
+	return;
+}
+}
+	r2 = (r0 + 14)|0;
+	heap32[(g0)] = r2;
+	_Znwj(i7);
+	r2 = r_g0;
+if(!(r2 !=0)) //_LBB719_12
+{
+	heap32[(g0)] = 3;
+	_ZN4__rw10__rw_throwEiz(i7);
+}
+	r3 = r2 >> 2;
+	heap32[(r3)] = 0;
+	heap32[(r3+1)] = r0;
+	r0 = (r1 + r2)|0;
+	r4 = 0;
+	heap32[(r3+2)] = r1;
+	heap8[r0+12] = r4;
+	r_g0 = r2;
+	return;
+}
+
+function _ZNKSt9type_info15__is_function_pEv(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+var __label__ = 0;
+	i7 = sp + 0;var g0 = i7>>2; // save stack
+	r0 = 0;
+	r_g0 = r0;
+	return;
+}
+
+function _ZNSt9type_infoD0Ev(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+var __label__ = 0;
+	i7 = sp + -8;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = _ZTVSt9type_info;
+	r2 = r0 >> 2;
+	r1 = (r1 + 8)|0;
+	heap32[(r2)] = r1;
+	heap32[(g0)] = r0;
+	_ZdlPv(i7);
+	return;
+}
+
+function _ZNSt9type_infoD1Ev(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+var __label__ = 0;
+	i7 = sp + 0;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = _ZTVSt9type_info;
+	r0 = r0 >> 2;
+	r1 = (r1 + 8)|0;
+	heap32[(r0)] = r1;
+	return;
+}
+
+function block_merge_next(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+	var r6;
+	var r7;
+	var r8;
+	var r9;
+	var r10;
+	var r11;
+	var r12;
+var __label__ = 0;
+	i7 = sp + 0;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp+1)];
+	r1 = r0 >> 2;
+	r2 = heap32[(r1+1)];
+	r2 = (r2 + -4)|0;
+	r2 = r2 & -4;
+	r3 = (r0 + 8)|0;
+	r4 = (r2 + 4)|0;
+	r4 = (r3 + r4)|0;
+	r4 = r4 >> 2;
+	r5 = heap32[(r4)];
+	r6 = r5 & 1;
+if(!(r6 ==0)) //_LBB723_9
+{
+	r6 = heap32[(fp)];
+	r7 = (r3 + r2)|0;
+	r8 = r5 & -4;
+	if(uint(r8) >uint(255)) //_LBB723_3
+{
+	r5 = r8 >>> 1;
+	r5 = r8 | r5;
+	r9 = r5 >>> 2;
+	r5 = r5 | r9;
+	r9 = r5 >>> 4;
+	r5 = r5 | r9;
+	r9 = r5 >>> 8;
+	r5 = r5 | r9;
+	r9 = r5 >>> 16;
+	r5 = r5 | r9;
+	r9 = r5 ^ -1;
+	r10 = 1431655765;
+	r9 = r9 >>> 1;
+	r5 = r10 & (~r5);
+	r9 = r9 & 1431655765;
+	r5 = (r5 + r9)|0;
+	r9 = r5 >>> 2;
+	r5 = r5 & 858993459;
+	r9 = r9 & 858993459;
+	r5 = (r5 + r9)|0;
+	r9 = r5 >>> 4;
+	r5 = r5 & 252645135;
+	r9 = r9 & 252645135;
+	r5 = (r5 + r9)|0;
+	r9 = r5 >>> 8;
+	r5 = r5 & 16711935;
+	r9 = r9 & 16711935;
+	r5 = (r5 + r9)|0;
+	r9 = r5 & 65535;
+	r5 = r5 >>> 16;
+	r10 = 26;
+	r5 = (r9 + r5)|0;
+	r9 = (r10 - r5)|0;
+	r8 = r8 >>> r9;
+	r9 = 24;
+	r8 = r8 ^ 32;
+	r5 = (r9 - r5)|0;
+}
+else{
+	r8 = r5 >>> 3;
+	r5 = 0;
+}
+	r2 = (r2 + r3)|0;
+	r2 = r2 >> 2;
+	r9 = r5 << 7;
+	r10 = heap32[(r2+2)];
+	r2 = heap32[(r2+3)];
+	r9 = (r6 + r9)|0;
+	r11 = r8 << 2;
+	r9 = (r9 + r11)|0;
+	r11 = r10 >> 2;
+	r12 = r2 >> 2;
+	heap32[(r11+3)] = r2;
+	r2 = r9 >> 2;
+	heap32[(r12+2)] = r10;
+	r2 = heap32[(r2+24)];
+if(!(r2 !=r7)) //_LBB723_8
+{
+	r2 = (r9 + 96)|0;
+	r2 = r2 >> 2;
+	r7 = block_null;
+	heap32[(r2)] = r10;
+if(!(r10 !=r7)) //_LBB723_8
+{
+	r2 = r5 << 2;
+	r2 = (r6 + r2)|0;
+	r2 = r2 >> 2;
+	r7 = 1;
+	r8 = r7 << r8;
+	r9 = heap32[(r2+1)];
+	r8 = r9 & (~r8);
+	heap32[(r2+1)] = r8;
+if(!(r8 !=0)) //_LBB723_8
+{
+	r2 = r6 >> 2;
+	r5 = r7 << r5;
+	r6 = heap32[(r2)];
+	r5 = r6 & (~r5);
+	heap32[(r2)] = r5;
+}
+}
+}
+	r2 = heap32[(r4)];
+	r4 = heap32[(r1+1)];
+	r2 = r2 & -4;
+	r2 = (r2 + r4)|0;
+	r4 = r2 & -4;
+	r3 = (r3 + r4)|0;
+	r2 = (r2 + 4)|0;
+	r3 = r3 >> 2;
+	heap32[(r1+1)] = r2;
+	heap32[(r3)] = r0;
+}
+	r_g0 = r0;
+	return;
+}
+
+function tlsf_free(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+	var r6;
+	var r7;
+	var r8;
+	var r9;
+	var r10;
+var __label__ = 0;
+	i7 = sp + -8;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp+1)];
+if(!(r0 ==0)) //_LBB724_15
+{
+	r1 = heap32[(fp)];
+	r2 = r0 >> 2;
+	r3 = heap32[(r2+-1)];
+	r4 = s_current_memory;
+	r5 = (r3 + -4)|0;
+	r4 = r4 >> 2;
+	r5 = r5 & -4;
+	r6 = heap32[(r4)];
+	r3 = r3 & -4;
+	r5 = (r0 + r5)|0;
+	r3 = (r6 - r3)|0;
+	r0 = (r0 + -8)|0;
+	r5 = r5 >> 2;
+	heap32[(r4)] = r3;
+	heap32[(r5)] = r0;
+	r3 = heap32[(r5+1)];
+	r3 = r3 | 2;
+	heap32[(r5+1)] = r3;
+	r3 = heap32[(r2+-1)];
+	r4 = r3 | 1;
+	heap32[(r2+-1)] = r4;
+	r3 = r3 & 2;
+	if(r3 !=0) //_LBB724_3
+{
+	r0 = r0 >> 2;
+	r0 = heap32[(r0)];
+	r3 = r0 >> 2;
+	r4 = heap32[(r3+1)];
+	r5 = r4 & -4;
+	if(uint(r5) >uint(255)) //_LBB724_5
+{
+	r4 = r5 >>> 1;
+	r4 = r5 | r4;
+	r6 = r4 >>> 2;
+	r4 = r4 | r6;
+	r6 = r4 >>> 4;
+	r4 = r4 | r6;
+	r6 = r4 >>> 8;
+	r4 = r4 | r6;
+	r6 = r4 >>> 16;
+	r4 = r4 | r6;
+	r6 = r4 ^ -1;
+	r7 = 1431655765;
+	r6 = r6 >>> 1;
+	r4 = r7 & (~r4);
+	r6 = r6 & 1431655765;
+	r4 = (r4 + r6)|0;
+	r6 = r4 >>> 2;
+	r4 = r4 & 858993459;
+	r6 = r6 & 858993459;
+	r4 = (r4 + r6)|0;
+	r6 = r4 >>> 4;
+	r4 = r4 & 252645135;
+	r6 = r6 & 252645135;
+	r4 = (r4 + r6)|0;
+	r6 = r4 >>> 8;
+	r4 = r4 & 16711935;
+	r6 = r6 & 16711935;
+	r4 = (r4 + r6)|0;
+	r6 = r4 & 65535;
+	r4 = r4 >>> 16;
+	r7 = 26;
+	r4 = (r6 + r4)|0;
+	r6 = (r7 - r4)|0;
+	r5 = r5 >>> r6;
+	r6 = 24;
+	r5 = r5 ^ 32;
+	r4 = (r6 - r4)|0;
+}
+else{
+	r5 = r4 >>> 3;
+	r4 = 0;
+}
+	r6 = r4 << 7;
+	r7 = heap32[(r3+2)];
+	r8 = heap32[(r3+3)];
+	r6 = (r1 + r6)|0;
+	r9 = r5 << 2;
+	r6 = (r6 + r9)|0;
+	r9 = r7 >> 2;
+	r10 = r8 >> 2;
+	heap32[(r9+3)] = r8;
+	r8 = r6 >> 2;
+	heap32[(r10+2)] = r7;
+	r8 = heap32[(r8+24)];
+if(!(r8 !=r0)) //_LBB724_10
+{
+	r6 = (r6 + 96)|0;
+	r6 = r6 >> 2;
+	r8 = block_null;
+	heap32[(r6)] = r7;
+if(!(r7 !=r8)) //_LBB724_10
+{
+	r6 = r4 << 2;
+	r6 = (r1 + r6)|0;
+	r6 = r6 >> 2;
+	r7 = 1;
+	r5 = r7 << r5;
+	r8 = heap32[(r6+1)];
+	r5 = r8 & (~r5);
+	heap32[(r6+1)] = r5;
+if(!(r5 !=0)) //_LBB724_10
+{
+	r5 = r1 >> 2;
+	r4 = r7 << r4;
+	r6 = heap32[(r5)];
+	r4 = r6 & (~r4);
+	heap32[(r5)] = r4;
+}
+}
+}
+	r4 = (r0 + 8)|0;
+	r2 = heap32[(r2+-1)];
+	r5 = heap32[(r3+1)];
+	r2 = r2 & -4;
+	r2 = (r2 + r5)|0;
+	r5 = r2 & -4;
+	r4 = (r4 + r5)|0;
+	r2 = (r2 + 4)|0;
+	r4 = r4 >> 2;
+	heap32[(r3+1)] = r2;
+	heap32[(r4)] = r0;
+}
+	heap32[(g0)] = r1;
+	heap32[(g0+1)] = r0;
+	block_merge_next(i7);
+	r0 = r_g0;
+	r2 = r0 >> 2;
+	r2 = heap32[(r2+1)];
+	r3 = r2 & -4;
+	if(uint(r3) >uint(255)) //_LBB724_13
+{
+	r2 = r3 >>> 1;
+	r2 = r3 | r2;
+	r4 = r2 >>> 2;
+	r2 = r2 | r4;
+	r4 = r2 >>> 4;
+	r2 = r2 | r4;
+	r4 = r2 >>> 8;
+	r2 = r2 | r4;
+	r4 = r2 >>> 16;
+	r2 = r2 | r4;
+	r4 = r2 ^ -1;
+	r5 = 1431655765;
+	r4 = r4 >>> 1;
+	r2 = r5 & (~r2);
+	r4 = r4 & 1431655765;
+	r2 = (r2 + r4)|0;
+	r4 = r2 >>> 2;
+	r2 = r2 & 858993459;
+	r4 = r4 & 858993459;
+	r2 = (r2 + r4)|0;
+	r4 = r2 >>> 4;
+	r2 = r2 & 252645135;
+	r4 = r4 & 252645135;
+	r2 = (r2 + r4)|0;
+	r4 = r2 >>> 8;
+	r2 = r2 & 16711935;
+	r4 = r4 & 16711935;
+	r2 = (r2 + r4)|0;
+	r4 = r2 & 65535;
+	r2 = r2 >>> 16;
+	r5 = 26;
+	r2 = (r4 + r2)|0;
+	r4 = (r5 - r2)|0;
+	r3 = r3 >>> r4;
+	r4 = 24;
+	r3 = r3 ^ 32;
+	r2 = (r4 - r2)|0;
+}
+else{
+	r3 = r2 >>> 3;
+	r2 = 0;
+}
+	r4 = r2 << 7;
+	r4 = (r1 + r4)|0;
+	r5 = r3 << 2;
+	r4 = (r4 + r5)|0;
+	r4 = r4 >> 2;
+	r5 = heap32[(r4+24)];
+	r6 = r0 >> 2;
+	r7 = block_null;
+	heap32[(r6+2)] = r5;
+	r5 = r5 >> 2;
+	heap32[(r6+3)] = r7;
+	heap32[(r5+3)] = r0;
+	r5 = 1;
+	r6 = r1 >> 2;
+	heap32[(r4+24)] = r0;
+	r0 = r2 << 2;
+	r2 = r5 << r2;
+	r4 = heap32[(r6)];
+	r0 = (r1 + r0)|0;
+	r1 = r4 | r2;
+	r0 = r0 >> 2;
+	heap32[(r6)] = r1;
+	r1 = r5 << r3;
+	r2 = heap32[(r0+1)];
+	r1 = r2 | r1;
+	heap32[(r0+1)] = r1;
+}
+	return;
+}
+
+function block_prepare_used(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+	var r6;
+	var r7;
+	var r8;
+	var r9;
+	var r10;
+var __label__ = 0;
+	i7 = sp + 0;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp+1)];
+	if(r0 ==0) //_LBB725_8
+{
+	r0 = 0;
+	r_g0 = r0;
+	return;
+}
+else{
+	r1 = heap32[(fp+2)];
+	r2 = r0 >> 2;
+	r3 = heap32[(r2+1)];
+	r4 = r3 & -4;
+	r5 = (r1 + 16)|0;
+	if(uint(r4) >=uint(r5)) //_LBB725_3
+{
+	r3 = heap32[(fp)];
+	r5 = (r0 + 8)|0;
+	r6 = (r5 + r1)|0;
+	r7 = r6 >> 2;
+	r8 = -4;
+	r9 = heap32[(r7)];
+	r8 = (r8 - r1)|0;
+	r9 = r9 & 3;
+	r4 = (r8 + r4)|0;
+	r4 = r9 | r4;
+	heap32[(r7)] = r4;
+	r4 = heap32[(r2+1)];
+	r4 = r4 & 3;
+	r4 = r4 | r1;
+	heap32[(r2+1)] = r4;
+	r4 = heap32[(r7)];
+	r4 = (r4 + -4)|0;
+	r8 = (r1 + 4)|0;
+	r4 = r4 & -4;
+	r1 = (r1 + 8)|0;
+	r9 = (r4 + r8)|0;
+	r4 = (r4 + r1)|0;
+	r9 = (r5 + r9)|0;
+	r4 = (r5 + r4)|0;
+	r6 = (r6 + -4)|0;
+	r9 = r9 >> 2;
+	r4 = r4 >> 2;
+	heap32[(r9)] = r6;
+	r9 = heap32[(r4)];
+	r9 = r9 | 2;
+	heap32[(r4)] = r9;
+	r4 = heap32[(r7)];
+	r4 = r4 | 1;
+	heap32[(r7)] = r4;
+	r4 = heap32[(r2+1)];
+	r4 = (r4 + -4)|0;
+	r4 = r4 & -4;
+	r4 = (r5 + r4)|0;
+	r4 = r4 >> 2;
+	heap32[(r4)] = r0;
+	r4 = heap32[(r7)];
+	r9 = r4 & -4;
+	r10 = r4 | 2;
+	heap32[(r7)] = r10;
+	if(uint(r9) >uint(255)) //_LBB725_5
+{
+	r4 = r9 >>> 1;
+	r4 = r9 | r4;
+	r7 = r4 >>> 2;
+	r4 = r4 | r7;
+	r7 = r4 >>> 4;
+	r4 = r4 | r7;
+	r7 = r4 >>> 8;
+	r4 = r4 | r7;
+	r7 = r4 >>> 16;
+	r4 = r4 | r7;
+	r7 = r4 ^ -1;
+	r10 = 1431655765;
+	r7 = r7 >>> 1;
+	r4 = r10 & (~r4);
+	r7 = r7 & 1431655765;
+	r4 = (r4 + r7)|0;
+	r7 = r4 >>> 2;
+	r4 = r4 & 858993459;
+	r7 = r7 & 858993459;
+	r4 = (r4 + r7)|0;
+	r7 = r4 >>> 4;
+	r4 = r4 & 252645135;
+	r7 = r7 & 252645135;
+	r4 = (r4 + r7)|0;
+	r7 = r4 >>> 8;
+	r4 = r4 & 16711935;
+	r7 = r7 & 16711935;
+	r4 = (r4 + r7)|0;
+	r7 = r4 & 65535;
+	r4 = r4 >>> 16;
+	r10 = 26;
+	r4 = (r7 + r4)|0;
+	r7 = (r10 - r4)|0;
+	r9 = r9 >>> r7;
+	r7 = 24;
+	r9 = r9 ^ 32;
+	r4 = (r7 - r4)|0;
+}
+else{
+	r9 = r4 >>> 3;
+	r4 = 0;
+}
+	r7 = r4 << 7;
+	r7 = (r3 + r7)|0;
+	r10 = r9 << 2;
+	r7 = (r7 + r10)|0;
+	r7 = r7 >> 2;
+	r8 = (r5 + r8)|0;
+	r1 = (r5 + r1)|0;
+	r5 = heap32[(r7+24)];
+	r8 = r8 >> 2;
+	r1 = r1 >> 2;
+	r10 = block_null;
+	heap32[(r8)] = r5;
+	r5 = r5 >> 2;
+	heap32[(r1)] = r10;
+	heap32[(r5+3)] = r6;
+	r1 = 1;
+	r5 = r3 >> 2;
+	heap32[(r7+24)] = r6;
+	r6 = r4 << 2;
+	r4 = r1 << r4;
+	r7 = heap32[(r5)];
+	r3 = (r3 + r6)|0;
+	r4 = r7 | r4;
+	r3 = r3 >> 2;
+	heap32[(r5)] = r4;
+	r1 = r1 << r9;
+	r4 = heap32[(r3+1)];
+	r1 = r4 | r1;
+	heap32[(r3+1)] = r1;
+	r3 = heap32[(r2+1)];
+}
+	r1 = r3 & -4;
+	r0 = (r0 + 8)|0;
+	r1 = (r0 + r1)|0;
+	r1 = r1 >> 2;
+	r3 = heap32[(r1)];
+	r3 = r3 & -3;
+	heap32[(r1)] = r3;
+	r1 = heap32[(r2+1)];
+	r1 = r1 & -2;
+	heap32[(r2+1)] = r1;
+	r_g0 = r0;
+	return;
+}
+}
+
+function block_locate_free(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+	var r6;
+	var r7;
+	var r8;
+var __label__ = 0;
+	i7 = sp + 0;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp+1)];
+_1: do {
+if(!(r0 ==0)) //_LBB726_16
+{
+	r1 = heap32[(fp)];
+	if(uint(r0) >uint(31)) //_LBB726_3
+{
+	r2 = r0 >>> 1;
+	r2 = r0 | r2;
+	r3 = r2 >>> 2;
+	r2 = r2 | r3;
+	r3 = r2 >>> 4;
+	r2 = r2 | r3;
+	r3 = r2 >>> 8;
+	r2 = r2 | r3;
+	r3 = r2 >>> 16;
+	r2 = r2 | r3;
+	r3 = r2 ^ -1;
+	r4 = 1431655765;
+	r3 = r3 >>> 1;
+	r2 = r4 & (~r2);
+	r3 = r3 & 1431655765;
+	r2 = (r2 + r3)|0;
+	r3 = r2 >>> 2;
+	r2 = r2 & 858993459;
+	r3 = r3 & 858993459;
+	r2 = (r2 + r3)|0;
+	r3 = r2 >>> 4;
+	r2 = r2 & 252645135;
+	r3 = r3 & 252645135;
+	r2 = (r2 + r3)|0;
+	r3 = r2 >>> 8;
+	r2 = r2 & 16711935;
+	r3 = r3 & 16711935;
+	r2 = (r2 + r3)|0;
+	r3 = r2 & 65535;
+	r2 = r2 >>> 16;
+	r5 = 26;
+	r2 = (r3 + r2)|0;
+	r3 = 1;
+	r2 = (r5 - r2)|0;
+	r2 = r3 << r2;
+	r0 = (r0 + r2)|0;
+	r0 = (r0 + -1)|0;
+	if(uint(r0) >uint(255)) //_LBB726_5
+{
+	r2 = r0 >>> 1;
+	r2 = r0 | r2;
+	r3 = r2 >>> 2;
+	r2 = r2 | r3;
+	r3 = r2 >>> 4;
+	r2 = r2 | r3;
+	r3 = r2 >>> 8;
+	r2 = r2 | r3;
+	r3 = r2 >>> 16;
+	r2 = r2 | r3;
+	r3 = r2 ^ -1;
+	r3 = r3 >>> 1;
+	r4 = r4 & (~r2);
+	r2 = r3 & 1431655765;
+	r4 = (r4 + r2)|0;
+	r2 = r4 >>> 2;
+	r4 = r4 & 858993459;
+	r2 = r2 & 858993459;
+	r4 = (r4 + r2)|0;
+	r2 = r4 >>> 4;
+	r4 = r4 & 252645135;
+	r2 = r2 & 252645135;
+	r4 = (r4 + r2)|0;
+	r2 = r4 >>> 8;
+	r4 = r4 & 16711935;
+	r2 = r2 & 16711935;
+	r4 = (r4 + r2)|0;
+	r2 = r4 & 65535;
+	r4 = r4 >>> 16;
+	r4 = (r2 + r4)|0;
+	r2 = (r5 - r4)|0;
+	r0 = r0 >>> r2;
+	r2 = 24;
+	r0 = r0 ^ 32;
+	r4 = (r2 - r4)|0;
+__label__ = 5;
+}
+else{
+__label__ = 3;
+}
+}
+else{
+__label__ = 3;
+}
+if (__label__ == 3){
+	r0 = r0 >>> 3;
+	r4 = 0;
+}
+	r2 = r4 << 2;
+	r2 = (r1 + r2)|0;
+	r2 = r2 >> 2;
+	r3 = -1;
+	r2 = heap32[(r2+1)];
+	r0 = r3 << r0;
+	r0 = r2 & r0;
+	if(r0 ==0) //_LBB726_8
+{
+	r0 = r1 >> 2;
+	r4 = (r4 + 1)|0;
+	r0 = heap32[(r0)];
+	r4 = r3 << r4;
+	r0 = r0 & r4;
+	if(r0 ==0) //_LBB726_16
+{
+break _1;
+}
+else{
+	r4 = (r0 + -1)|0;
+	r0 = r4 & (~r0);
+	r4 = r0 >>> 1;
+	r0 = r0 & 1431655765;
+	r4 = r4 & 1431655765;
+	r0 = (r0 + r4)|0;
+	r4 = r0 >>> 2;
+	r0 = r0 & 858993459;
+	r4 = r4 & 858993459;
+	r0 = (r0 + r4)|0;
+	r4 = r0 >>> 4;
+	r0 = r0 & 252645135;
+	r4 = r4 & 252645135;
+	r0 = (r0 + r4)|0;
+	r4 = r0 >>> 8;
+	r0 = r0 & 16711935;
+	r4 = r4 & 16711935;
+	r0 = (r0 + r4)|0;
+	r4 = r0 & 65535;
+	r0 = r0 >>> 16;
+	r4 = (r4 + r0)|0;
+	r0 = r4 << 2;
+	r0 = (r1 + r0)|0;
+	r0 = r0 >> 2;
+	r0 = heap32[(r0+1)];
+}
+}
+	r2 = (r0 + -1)|0;
+	r2 = r2 & (~r0);
+	r5 = r2 >>> 1;
+	r2 = r2 & 1431655765;
+	r5 = r5 & 1431655765;
+	r2 = (r2 + r5)|0;
+	r5 = r2 >>> 2;
+	r2 = r2 & 858993459;
+	r5 = r5 & 858993459;
+	r2 = (r2 + r5)|0;
+	r5 = r2 >>> 4;
+	r2 = r2 & 252645135;
+	r5 = r5 & 252645135;
+	r2 = (r2 + r5)|0;
+	r5 = r2 >>> 8;
+	r2 = r2 & 16711935;
+	r5 = r5 & 16711935;
+	r2 = (r2 + r5)|0;
+	r5 = r2 & 65535;
+	r2 = r2 >>> 16;
+	r2 = (r5 + r2)|0;
+	r0 = r0 == 0 ? r3 : r2;
+	r2 = r4 << 7;
+	r2 = (r1 + r2)|0;
+	r3 = r0 << 2;
+	r2 = (r2 + r3)|0;
+	r3 = r2 >> 2;
+	r3 = heap32[(r3+24)];
+if(!(r3 ==0)) //_LBB726_16
+{
+	r2 = (r2 + 96)|0;
+	r5 = r3 >> 2;
+	r6 = heap32[(r5+2)];
+	r5 = heap32[(r5+3)];
+	r7 = r6 >> 2;
+	r8 = r5 >> 2;
+	heap32[(r7+3)] = r5;
+	r2 = r2 >> 2;
+	heap32[(r8+2)] = r6;
+	r5 = heap32[(r2)];
+if(!(r5 !=r3)) //_LBB726_15
+{
+	r5 = block_null;
+	heap32[(r2)] = r6;
+if(!(r6 !=r5)) //_LBB726_15
+{
+	r2 = r4 << 2;
+	r2 = (r1 + r2)|0;
+	r2 = r2 >> 2;
+	r5 = 1;
+	r0 = r5 << r0;
+	r6 = heap32[(r2+1)];
+	r0 = r6 & (~r0);
+	heap32[(r2+1)] = r0;
+if(!(r0 !=0)) //_LBB726_15
+{
+	r0 = r1 >> 2;
+	r1 = r5 << r4;
+	r2 = heap32[(r0)];
+	r1 = r2 & (~r1);
+	heap32[(r0)] = r1;
+}
+}
+}
+	r_g0 = r3;
+	return;
+}
+}
+} while(0);
+	r0 = 0;
+	r_g0 = r0;
+	return;
+}
+
+function tlsf_malloc(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+var __label__ = 0;
+	i7 = sp + -16;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp+1)];
+	r1 = heap32[(fp)];
+	r2 = (r0 + -1)|0;
+	if(uint(r2) <uint(1073741823)) //_LBB727_2
+{
+	r0 = (r0 + 7)|0;
+	r0 = r0 & -8;
+	r2 = 12;
+	r0 = uint(r0) < uint(r2) ? r2 : r0;
+}
+else{
+	r0 = 0;
+}
+	heap32[(g0)] = r1;
+	heap32[(g0+1)] = r0;
+	block_locate_free(i7);
+	r2 = r_g0;
+	heap32[(g0)] = r1;
+	heap32[(g0+1)] = r2;
+	heap32[(g0+2)] = r0;
+	r0 = s_current_memory;
+	block_prepare_used(i7);
+	r1 = r_g0;
+	r2 = r2 >> 2;
+	r0 = r0 >> 2;
+	r2 = heap32[(r2+1)];
+	r3 = heap32[(r0)];
+	r2 = r2 & -4;
+	r2 = (r3 + r2)|0;
+	r3 = s_max_memory;
+	r3 = r3 >> 2;
+	heap32[(r0)] = r2;
+	r0 = heap32[(r3)];
+if(!(uint(r2) <=uint(r0))) //_LBB727_5
+{
+	heap32[(r3)] = r2;
+}
+	r_g0 = r1;
+	return;
+}
+
+function tlsf_realloc(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+	var r6;
+	var r7;
+	var r8;
+	var r9;
+	var r10;
+	var r11;
+var __label__ = 0;
+	i7 = sp + -16;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp+1)];
+	r1 = heap32[(fp)];
+	r2 = heap32[(fp+2)];
+if(!(r0 ==0)) //_LBB728_3
+{
+if(!(r2 !=0)) //_LBB728_3
+{
+	heap32[(g0)] = r1;
+	heap32[(g0+1)] = r0;
+	tlsf_free(i7);
+	r0 = 0;
+	r_g0 = r0;
+	return;
+}
+}
+	if(r0 !=0) //_LBB728_10
+{
+	r3 = r0 >> 2;
+	r4 = heap32[(r3+-1)];
+	r5 = r4 & -4;
+	r6 = (r0 + r5)|0;
+	r6 = r6 >> 2;
+	r6 = heap32[(r6)];
+	r7 = r6 & -4;
+	r7 = (r5 + r7)|0;
+	r8 = (r2 + -1)|0;
+	r9 = (r0 + -8)|0;
+	r7 = (r7 + 4)|0;
+	if(uint(r8) <uint(1073741823)) //_LBB728_12
+{
+	r10 = (r2 + 7)|0;
+	r10 = r10 & -8;
+	r11 = 12;
+	r10 = uint(r10) < uint(r11) ? r11 : r10;
+}
+else{
+	r10 = 0;
+}
+_11: do {
+	if(uint(r10) >uint(r5)) //_LBB728_15
+{
+	r4 = r6 & 1;
+if(!(r4 ==0)) //_LBB728_17
+{
+	if(uint(r10) <=uint(r7)) //_LBB728_24
+{
+	heap32[(g0)] = r1;
+	heap32[(g0+1)] = r9;
+	block_merge_next(i7);
+	r4 = heap32[(r3+-1)];
+	r4 = r4 & -4;
+	r4 = (r0 + r4)|0;
+	r4 = r4 >> 2;
+	r9 = heap32[(r4)];
+	r9 = r9 & -3;
+	heap32[(r4)] = r9;
+	r4 = heap32[(r3+-1)];
+	r4 = r4 & -2;
+	heap32[(r3+-1)] = r4;
+break _11;
+}
+}
+	if(uint(r8) <uint(1073741823)) //_LBB728_19
+{
+	r3 = (r2 + 7)|0;
+	r3 = r3 & -8;
+	r4 = 12;
+	r3 = uint(r3) < uint(r4) ? r4 : r3;
+}
+else{
+	r3 = 0;
+}
+	heap32[(g0)] = r1;
+	heap32[(g0+1)] = r3;
+	block_locate_free(i7);
+	r4 = r_g0;
+	heap32[(g0)] = r1;
+	heap32[(g0+1)] = r4;
+	heap32[(g0+2)] = r3;
+	r3 = s_current_memory;
+	block_prepare_used(i7);
+	r9 = r_g0;
+	r4 = r4 >> 2;
+	r3 = r3 >> 2;
+	r4 = heap32[(r4+1)];
+	r10 = heap32[(r3)];
+	r4 = r4 & -4;
+	r4 = (r10 + r4)|0;
+	r10 = s_max_memory;
+	r10 = r10 >> 2;
+	heap32[(r3)] = r4;
+	r3 = heap32[(r10)];
+if(!(uint(r4) <=uint(r3))) //_LBB728_22
+{
+	heap32[(r10)] = r4;
+}
+	if(r9 ==0) //_LBB728_34
+{
+	r_g0 = r9;
+	return;
+}
+else{
+	r3 = uint(r5) >= uint(r2) ? r2 : r5;
+	heap32[(g0)] = r9;
+	heap32[(g0+1)] = r0;
+	heap32[(g0+2)] = r3;
+	memcpy(i7);
+	heap32[(g0)] = r1;
+	heap32[(g0+1)] = r0;
+	tlsf_free(i7);
+	r_g0 = r9;
+	return;
+}
+}
+} while(0);
+	r9 = s_current_memory;
+	r9 = r9 >> 2;
+	r2 = heap32[(r9)];
+	r2 = (r2 - r5)|0;
+	r5 = r4 & -4;
+	heap32[(r9)] = r2;
+	r6 = (r10 + 16)|0;
+	if(uint(r5) >=uint(r6)) //_LBB728_27
+{
+	r4 = (r0 + r10)|0;
+	r6 = r4 >> 2;
+	r7 = -4;
+	r8 = heap32[(r6)];
+	r7 = (r7 - r10)|0;
+	r8 = r8 & 3;
+	r5 = (r7 + r5)|0;
+	r5 = r8 | r5;
+	heap32[(r6)] = r5;
+	r5 = heap32[(r3+-1)];
+	r5 = r5 & 3;
+	r5 = r5 | r10;
+	heap32[(r3+-1)] = r5;
+	r5 = heap32[(r6)];
+	r5 = (r5 + -4)|0;
+	r5 = r5 & -4;
+	r5 = (r10 + r5)|0;
+	r5 = (r5 + r0)|0;
+	r4 = (r4 + -4)|0;
+	r5 = r5 >> 2;
+	heap32[(r5+1)] = r4;
+	r7 = heap32[(r5+2)];
+	r7 = r7 | 2;
+	heap32[(r5+2)] = r7;
+	r5 = heap32[(r6)];
+	r5 = r5 | 1;
+	r5 = r5 & -3;
+	heap32[(r6)] = r5;
+	heap32[(g0)] = r1;
+	heap32[(g0+1)] = r4;
+	block_merge_next(i7);
+	r4 = r_g0;
+	r5 = r4 >> 2;
+	r5 = heap32[(r5+1)];
+	r6 = r5 & -4;
+	if(uint(r6) >uint(255)) //_LBB728_29
+{
+	r5 = r6 >>> 1;
+	r5 = r6 | r5;
+	r7 = r5 >>> 2;
+	r5 = r5 | r7;
+	r7 = r5 >>> 4;
+	r5 = r5 | r7;
+	r7 = r5 >>> 8;
+	r5 = r5 | r7;
+	r7 = r5 >>> 16;
+	r5 = r5 | r7;
+	r7 = r5 ^ -1;
+	r8 = 1431655765;
+	r7 = r7 >>> 1;
+	r5 = r8 & (~r5);
+	r7 = r7 & 1431655765;
+	r5 = (r5 + r7)|0;
+	r7 = r5 >>> 2;
+	r5 = r5 & 858993459;
+	r7 = r7 & 858993459;
+	r5 = (r5 + r7)|0;
+	r7 = r5 >>> 4;
+	r5 = r5 & 252645135;
+	r7 = r7 & 252645135;
+	r5 = (r5 + r7)|0;
+	r7 = r5 >>> 8;
+	r5 = r5 & 16711935;
+	r7 = r7 & 16711935;
+	r5 = (r5 + r7)|0;
+	r7 = r5 & 65535;
+	r5 = r5 >>> 16;
+	r8 = 26;
+	r5 = (r7 + r5)|0;
+	r7 = (r8 - r5)|0;
+	r6 = r6 >>> r7;
+	r7 = 24;
+	r6 = r6 ^ 32;
+	r5 = (r7 - r5)|0;
+}
+else{
+	r6 = r5 >>> 3;
+	r5 = 0;
+}
+	r7 = r5 << 7;
+	r7 = (r1 + r7)|0;
+	r8 = r6 << 2;
+	r7 = (r7 + r8)|0;
+	r7 = r7 >> 2;
+	r8 = heap32[(r7+24)];
+	r10 = r4 >> 2;
+	r11 = block_null;
+	heap32[(r10+2)] = r8;
+	r8 = r8 >> 2;
+	heap32[(r10+3)] = r11;
+	heap32[(r8+3)] = r4;
+	r8 = 1;
+	r10 = r1 >> 2;
+	heap32[(r7+24)] = r4;
+	r4 = r5 << 2;
+	r5 = r8 << r5;
+	r7 = heap32[(r10)];
+	r4 = (r1 + r4)|0;
+	r1 = r7 | r5;
+	r4 = r4 >> 2;
+	heap32[(r10)] = r1;
+	r1 = r8 << r6;
+	r5 = heap32[(r4+1)];
+	r1 = r5 | r1;
+	heap32[(r4+1)] = r1;
+	r4 = heap32[(r3+-1)];
+}
+	r1 = r4 & -4;
+	r1 = (r2 + r1)|0;
+	r2 = s_max_memory;
+	r2 = r2 >> 2;
+	heap32[(r9)] = r1;
+	r9 = heap32[(r2)];
+if(!(uint(r1) <=uint(r9))) //_LBB728_33
+{
+	heap32[(r2)] = r1;
+}
+	r_g0 = r0;
+	return;
+}
+else{
+	r0 = (r2 + -1)|0;
+	if(uint(r0) <uint(1073741823)) //_LBB728_6
+{
+	r0 = (r2 + 7)|0;
+	r0 = r0 & -8;
+	r2 = 12;
+	r0 = uint(r0) < uint(r2) ? r2 : r0;
+}
+else{
+	r0 = 0;
+}
+	heap32[(g0)] = r1;
+	heap32[(g0+1)] = r0;
+	block_locate_free(i7);
+	r2 = r_g0;
+	heap32[(g0)] = r1;
+	heap32[(g0+1)] = r2;
+	heap32[(g0+2)] = r0;
+	r0 = s_current_memory;
+	block_prepare_used(i7);
+	r1 = r_g0;
+	r2 = r2 >> 2;
+	r0 = r0 >> 2;
+	r2 = heap32[(r2+1)];
+	r3 = heap32[(r0)];
+	r2 = r2 & -4;
+	r2 = (r3 + r2)|0;
+	r3 = s_max_memory;
+	r3 = r3 >> 2;
+	heap32[(r0)] = r2;
+	r0 = heap32[(r3)];
+if(!(uint(r2) <=uint(r0))) //_LBB728_9
+{
+	heap32[(r3)] = r2;
+}
+	r_g0 = r1;
+	return;
+}
+}
+
+function tlsf_create(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+	var r6;
+	var r7;
+var __label__ = 0;
+	i7 = sp + -16;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp+1)];
+	r0 = (r0 + -3048)|0;
+	r1 = r0 & -8;
+	r2 = (r1 + -12)|0;
+	if(uint(r2) <uint(1073741813)) //_LBB729_2
+{
+	r2 = heap32[(fp)];
+	r3 = block_null;
+	r4 = r3 >> 2;
+	heap32[(r4+2)] = r3;
+	r5 = -1;
+	r6 = r2 >> 2;
+	heap32[(r4+3)] = r3;
+	heap32[(r6)] = 0;
+_3: while(true){
+	r4 = r5 << 2;
+	r7 = r5 << 7;
+	r4 = (r2 - r4)|0;
+	r7 = (r2 - r7)|0;
+	r4 = r4 >> 2;
+	r7 = r7 >> 2;
+	heap32[(r4)] = 0;
+	heap32[(r7+-8)] = r3;
+	heap32[(r7+-7)] = r3;
+	heap32[(r7+-6)] = r3;
+	heap32[(r7+-5)] = r3;
+	heap32[(r7+-4)] = r3;
+	heap32[(r7+-3)] = r3;
+	heap32[(r7+-2)] = r3;
+	heap32[(r7+-1)] = r3;
+	heap32[(r7)] = r3;
+	heap32[(r7+1)] = r3;
+	heap32[(r7+2)] = r3;
+	heap32[(r7+3)] = r3;
+	heap32[(r7+4)] = r3;
+	heap32[(r7+5)] = r3;
+	heap32[(r7+6)] = r3;
+	heap32[(r7+7)] = r3;
+	heap32[(r7+8)] = r3;
+	heap32[(r7+9)] = r3;
+	heap32[(r7+10)] = r3;
+	heap32[(r7+11)] = r3;
+	heap32[(r7+12)] = r3;
+	heap32[(r7+13)] = r3;
+	heap32[(r7+14)] = r3;
+	heap32[(r7+15)] = r3;
+	heap32[(r7+16)] = r3;
+	heap32[(r7+17)] = r3;
+	heap32[(r7+18)] = r3;
+	heap32[(r7+19)] = r3;
+	heap32[(r7+20)] = r3;
+	heap32[(r7+21)] = r3;
+	r5 = (r5 + -1)|0;
+	heap32[(r7+22)] = r3;
+	heap32[(r7+23)] = r3;
+if(!(r5 !=-24)) //_LBB729_3
+{
+break _3;
+}
+}
+	r4 = r0 | 1;
+	r5 = (r2 + 3036)|0;
+	r4 = r4 & -7;
+	heap32[(r6+760)] = r4;
+	if(uint(r1) >uint(255)) //_LBB729_6
+{
+	r0 = r1 >>> 1;
+	r0 = r1 | r0;
+	r4 = r0 >>> 2;
+	r0 = r0 | r4;
+	r4 = r0 >>> 4;
+	r0 = r0 | r4;
+	r4 = r0 >>> 8;
+	r0 = r0 | r4;
+	r4 = r0 >>> 16;
+	r0 = r0 | r4;
+	r4 = r0 ^ -1;
+	r7 = 1431655765;
+	r4 = r4 >>> 1;
+	r0 = r7 & (~r0);
+	r4 = r4 & 1431655765;
+	r0 = (r0 + r4)|0;
+	r4 = r0 >>> 2;
+	r0 = r0 & 858993459;
+	r4 = r4 & 858993459;
+	r0 = (r0 + r4)|0;
+	r4 = r0 >>> 4;
+	r0 = r0 & 252645135;
+	r4 = r4 & 252645135;
+	r0 = (r0 + r4)|0;
+	r4 = r0 >>> 8;
+	r0 = r0 & 16711935;
+	r4 = r4 & 16711935;
+	r0 = (r0 + r4)|0;
+	r4 = r0 & 65535;
+	r0 = r0 >>> 16;
+	r7 = 26;
+	r0 = (r4 + r0)|0;
+	r4 = (r7 - r0)|0;
+	r1 = r1 >>> r4;
+	r4 = 24;
+	r1 = r1 ^ 32;
+	r0 = (r4 - r0)|0;
+}
+else{
+	r1 = r0 >>> 3;
+	r0 = 0;
+}
+	r4 = r0 << 7;
+	r4 = (r2 + r4)|0;
+	r7 = r1 << 2;
+	r4 = (r4 + r7)|0;
+	r4 = r4 >> 2;
+	r7 = heap32[(r4+24)];
+	heap32[(r6+761)] = r7;
+	r7 = r7 >> 2;
+	heap32[(r6+762)] = r3;
+	heap32[(r7+3)] = r5;
+	r3 = 1;
+	heap32[(r4+24)] = r5;
+	r4 = r0 << 2;
+	r0 = r3 << r0;
+	r7 = heap32[(r6)];
+	r4 = (r2 + r4)|0;
+	r0 = r7 | r0;
+	r4 = r4 >> 2;
+	heap32[(r6)] = r0;
+	r0 = r3 << r1;
+	r1 = heap32[(r4+1)];
+	r0 = r1 | r0;
+	heap32[(r4+1)] = r0;
+	r0 = heap32[(r6+760)];
+	r0 = (r0 + 3040)|0;
+	r0 = r0 & -4;
+	r0 = (r2 + r0)|0;
+	r0 = r0 >> 2;
+	heap32[(r0)] = r5;
+	heap32[(r0+1)] = 2;
+	r_g0 = r2;
+	return;
+}
+else{
+	r0 = _2E_str643;
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = 3060;
+	heap32[(g0+2)] = 1073744872;
+	printf(i7);
+	r0 = 0;
+	r_g0 = r0;
+	return;
+}
+}
+
+function _stricmp(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+	var r6;
+var __label__ = 0;
+	i7 = sp + 0;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = heap32[(fp+1)];
+	r5 = 26;
+_1: while(true){
+	r2 = heap8[r1];
+	r3 = heap8[r0];
+	r4 = (r2 + -65)|0;
+	r2 = (r2 + -33)|0;
+	r6 = (r3 + -65)|0;
+	r3 = (r3 + -33)|0;
+	r2 = uint(r4) < uint(r5) ? r2 : r4;
+	r3 = uint(r6) < uint(r5) ? r3 : r6;
+	if(r2 !=r3) //_LBB730_3
+{
+break _1;
+}
+else{
+	r0 = (r0 + 1)|0;
+	r1 = (r1 + 1)|0;
+	if(r3 !=-65) //_LBB730_1
+{
+continue _1;
+}
+else{
+break _1;
+}
+}
+}
+	r0 = (r3 - r2)|0;
+	r_g0 = r0;
+	return;
+}
+
+function strcasecmp(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+	var r6;
+var __label__ = 0;
+	i7 = sp + 0;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = heap32[(fp+1)];
+	r5 = 26;
+_1: while(true){
+	r2 = heap8[r1];
+	r3 = heap8[r0];
+	r4 = (r2 + -65)|0;
+	r2 = (r2 + -33)|0;
+	r6 = (r3 + -65)|0;
+	r3 = (r3 + -33)|0;
+	r2 = uint(r4) < uint(r5) ? r2 : r4;
+	r3 = uint(r6) < uint(r5) ? r3 : r6;
+	if(r2 !=r3) //_LBB731_3
+{
+break _1;
+}
+else{
+	r1 = (r1 + 1)|0;
+	r0 = (r0 + 1)|0;
+	if(r3 !=-65) //_LBB731_1
+{
+continue _1;
+}
+else{
+break _1;
+}
+}
+}
+	r0 = (r3 - r2)|0;
+	r_g0 = r0;
+	return;
+}
+
+function strcpy(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+var __label__ = 0;
+	i7 = sp + 0;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = heap32[(fp+1)];
+	r2 = r1 ^ r0;
+	r2 = r2 & 3;
+_1: do {
+	if(r2 ==0) //_LBB732_2
+{
+	r2 = r0 & 3;
+	if(r2 !=0) //_LBB732_4
+{
+	r2 = r0 | -4;
+_5: while(true){
+	if(r2 !=0) //_LBB732_7
+{
+	r3 = heapU8[r1];
+	r4 = (r0 + 1)|0;
+	r1 = (r1 + 1)|0;
+	r2 = (r2 + 1)|0;
+	heap8[r0] = r3;
+	r0 = r4;
+if(!(r3 !=0)) //_LBB732_5
+{
+break _1;
+}
+}
+else{
+break _5;
+}
+}
+}
+	r2 = r1 >> 2;
+	r2 = heap32[(r2)];
+	r3 = r2 & -2139062144;
+	r3 = r3 ^ -2139062144;
+	r4 = (r2 + -16843009)|0;
+	r3 = r3 & r4;
+_9: do {
+	if(r3 ==0) //_LBB732_11
+{
+	r1 = (r1 + 4)|0;
+_11: while(true){
+	r3 = r0 >> 2;
+	r4 = r1 >> 2;
+	heap32[(r3)] = r2;
+	r2 = heap32[(r4)];
+	r3 = r2 & -2139062144;
+	r0 = (r0 + 4)|0;
+	r1 = (r1 + 4)|0;
+	r3 = r3 ^ -2139062144;
+	r4 = (r2 + -16843009)|0;
+	r3 = r3 & r4;
+if(!(r3 ==0)) //_LBB732_15
+{
+break _9;
+}
+}
+}
+} while(0);
+	r1 = r2 & 255;
+	heap8[r0] = r2;
+if(!(r1 ==0)) //_LBB732_8
+{
+	r0 = (r0 + 1)|0;
+_15: while(true){
+	r2 = r2 >>> 8;
+	r1 = (r0 + 1)|0;
+	heap8[r0] = r2;
+	r3 = r2 & 255;
+	r0 = r1;
+	if(r3 ==0) //_LBB732_8
+{
+break _1;
+}
+else{
+continue _15;
+}
+}
+}
+}
+else{
+_17: while(true){
+	r2 = heapU8[r1];
+	r3 = (r0 + 1)|0;
+	r1 = (r1 + 1)|0;
+	heap8[r0] = r2;
+	r0 = r3;
+	if(r2 ==0) //_LBB732_8
+{
+break _1;
+}
+else{
+continue _17;
+}
+}
+}
+} while(0);
+	return;
+}
+
+function strcmp(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+var __label__ = 0;
+	i7 = sp + 0;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = heap32[(fp+1)];
+	r2 = r1 ^ r0;
+	r2 = r2 & 3;
+_1: do {
+	if(r2 ==0) //_LBB733_7
+{
+	r2 = r0 & 3;
+_3: do {
+	if(r2 !=0) //_LBB733_9
+{
+	r2 = r0 | -4;
+_5: while(true){
+	if(r2 !=0) //_LBB733_10
+{
+	r3 = heapU8[r0];
+	r4 = heapU8[r1];
+	if(r3 ==0) //_LBB733_12
+{
+break _5;
+}
+else{
+	r5 = r4 & 255;
+	if(r3 ==r5) //_LBB733_13
+{
+	r0 = (r0 + 1)|0;
+	r1 = (r1 + 1)|0;
+	r2 = (r2 + 1)|0;
+}
+else{
+break _5;
+}
+}
+}
+else{
+break _3;
+}
+}
+	r0 = r3 << 24;
+	r1 = r4 << 24;
+break _1;
+}
+} while(0);
+_11: while(true){
+	r2 = r0 >> 2;
+	r2 = heap32[(r2)];
+	r3 = r1 >> 2;
+	r4 = r2 & -2139062144;
+	r3 = heap32[(r3)];
+	r4 = r4 ^ -2139062144;
+	r5 = (r2 + -16843009)|0;
+	r4 = r4 & r5;
+	if(r4 !=0) //_LBB733_18
+{
+break _11;
+}
+else{
+	r4 = r3 & -2139062144;
+	r4 = r4 ^ -2139062144;
+	r5 = (r3 + -16843009)|0;
+	r4 = r4 & r5;
+	if(r4 !=0) //_LBB733_18
+{
+break _11;
+}
+else{
+	r0 = (r0 + 4)|0;
+	r1 = (r1 + 4)|0;
+if(!(r2 ==r3)) //_LBB733_15
+{
+break _11;
+}
+}
+}
+}
+	r0 = r2 & 255;
+_16: do {
+if(!(r0 ==0)) //_LBB733_21
+{
+	r0 = r2 & 255;
+	r1 = r3 & 255;
+if(!(r0 !=r1)) //_LBB733_21
+{
+__label__ = 19; //SET chanka
+_18: while(true){
+	r2 = r2 >>> 8;
+	r3 = r3 >>> 8;
+	r0 = r2 & 255;
+	if(r0 ==0) //_LBB733_24
+{
+break _16;
+}
+else{
+	r1 = r3 & 255;
+if(!(r0 ==r1)) //_LBB733_22
+{
+break _16;
+}
+}
+}
+}
+}
+} while(0);
+	r2 = r2 & 255;
+	r3 = r3 & 255;
+	r2 = (r2 - r3)|0;
+	r_g0 = r2;
+	return;
+}
+else{
+_22: while(true){
+	r2 = heapU8[r0];
+	r3 = heapU8[r1];
+	if(r2 ==0) //_LBB733_5
+{
+break _22;
+}
+else{
+	r4 = r3 & 255;
+	if(r2 ==r4) //_LBB733_2
+{
+	r0 = (r0 + 1)|0;
+	r1 = (r1 + 1)|0;
+}
+else{
+break _22;
+}
+}
+}
+	r0 = r2 << 24;
+	r1 = r3 << 24;
+}
+} while(0);
+	r0 = r0 >> 24;
+	r1 = r1 >> 24;
+	r0 = (r0 - r1)|0;
+	r_g0 = r0;
+	return;
+}
+
+function memmove(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+var __label__ = 0;
+	i7 = sp + 0;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp+1)];
+	r1 = heap32[(fp)];
+_1: do {
+if(!(r0 ==r1)) //_LBB734_8
+{
+	r2 = heap32[(fp+2)];
+	if(uint(r0) <=uint(r1)) //_LBB734_5
+{
+if(!(r2 ==0)) //_LBB734_8
+{
+	r3 = 0;
+	r2 = (r3 - r2)|0;
+_6: while(true){
+	r3 = (r0 - r2)|0;
+	r4 = (r2 + 1)|0;
+	r2 = (r1 - r2)|0;
+	r3 = heapU8[r3+-1];
+	heap8[r2+-1] = r3;
+	r2 = r4;
+	if(r4 !=0) //_LBB734_7
+{
+continue _6;
+}
+else{
+break _1;
+}
+}
+}
+}
+else{
+if(!(r2 ==0)) //_LBB734_8
+{
+	r3 = r1;
+_10: while(true){
+	r4 = heapU8[r0];
+	r2 = (r2 + -1)|0;
+	r5 = (r3 + 1)|0;
+	r0 = (r0 + 1)|0;
+	heap8[r3] = r4;
+	r3 = r5;
+	if(r2 ==0) //_LBB734_8
+{
+break _1;
+}
+else{
+continue _10;
+}
+}
+}
+}
+}
+} while(0);
+	r_g0 = r1;
+	return;
+}
+
+function strncasecmp(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+	var r6;
+	var r7;
+	var r8;
+var __label__ = 0;
+	i7 = sp + 0;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = heap32[(fp+1)];
+	r2 = heap32[(fp+2)];
+	r3 = 0;
+	r7 = 26;
+_1: while(true){
+	if(r3 >=r2) //_LBB735_5
+{
+__label__ = 5;
+break _1;
+}
+else{
+	r4 = heap8[r1+r3];
+	r5 = heap8[r0+r3];
+	r6 = (r4 + -65)|0;
+	r4 = (r4 + -33)|0;
+	r8 = (r5 + -65)|0;
+	r5 = (r5 + -33)|0;
+	r4 = uint(r6) < uint(r7) ? r4 : r6;
+	r5 = uint(r8) < uint(r7) ? r5 : r8;
+	if(r4 !=r5) //_LBB735_4
+{
+__label__ = 4;
+break _1;
+}
+else{
+	r3 = (r3 + 1)|0;
+	if(r5 !=-65) //_LBB735_1
+{
+continue _1;
+}
+else{
+__label__ = 4;
+break _1;
+}
+}
+}
+}
+switch(__label__ ){//multiple entries
+case 5:
+	r0 = 0;
+	r_g0 = r0;
+	return;
+break;
+case 4:
+	r0 = (r5 - r4)|0;
+	r_g0 = r0;
+	return;
+break;
+}
+}
+
+function strncmp(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+	var r6;
+var __label__ = 0;
+	i7 = sp + 0;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp+2)];
+	r1 = heap32[(fp)];
+	r2 = heap32[(fp+1)];
+	if(uint(r0) >uint(3)) //_LBB736_2
+{
+	r5 = r0 >>> 2;
+	r1 = (r1 + 2)|0;
+_3: while(true){
+	r3 = heapU8[r1+-2];
+	r4 = heapU8[r2];
+	if(r3 ==0) //_LBB736_5
+{
+__label__ = 5;
+break _3;
+}
+else{
+	r6 = r4 & 255;
+	if(r3 ==r6) //_LBB736_6
+{
+	r3 = heapU8[r1+-1];
+	r4 = heapU8[r2+1];
+	if(r3 ==0) //_LBB736_8
+{
+__label__ = 5;
+break _3;
+}
+else{
+	r6 = r4 & 255;
+	if(r3 ==r6) //_LBB736_9
+{
+	r3 = heapU8[r1];
+	r4 = heapU8[r2+2];
+	if(r3 ==0) //_LBB736_11
+{
+__label__ = 5;
+break _3;
+}
+else{
+	r6 = r4 & 255;
+	if(r3 ==r6) //_LBB736_12
+{
+	r3 = heapU8[r1+1];
+	r4 = heapU8[r2+3];
+	if(r3 ==0) //_LBB736_14
+{
+__label__ = 5;
+break _3;
+}
+else{
+	r6 = r4 & 255;
+	if(r3 ==r6) //_LBB736_15
+{
+	r5 = (r5 + -1)|0;
+	r1 = (r1 + 4)|0;
+	r2 = (r2 + 4)|0;
+	if(r5 !=0) //_LBB736_3
+{
+__label__ = 3;
+}
+else{
+__label__ = 13;
+break _3;
+}
+}
+else{
+__label__ = 5;
+break _3;
+}
+}
+}
+else{
+__label__ = 5;
+break _3;
+}
+}
+}
+else{
+__label__ = 5;
+break _3;
+}
+}
+}
+else{
+__label__ = 5;
+break _3;
+}
+}
+}
+switch(__label__ ){//multiple entries
+case 5:
+	r1 = r4 & 255;
+	r1 = (r3 - r1)|0;
+	r_g0 = r1;
+	return;
+break;
+case 13:
+	r0 = r0 & 3;
+	r1 = (r1 + -2)|0;
+break;
+}
+}
+else{
+	r3 = 0;
+	r4 = r3;
+}
+_17: while(true){
+	if(r0 !=0) //_LBB736_17
+{
+	r3 = heapU8[r1];
+	r4 = heapU8[r2];
+	if(r3 ==0) //_LBB736_19
+{
+__label__ = 16;
+break _17;
+}
+else{
+	r5 = r4 & 255;
+	if(r3 ==r5) //_LBB736_20
+{
+	r0 = (r0 + -1)|0;
+	r1 = (r1 + 1)|0;
+	r2 = (r2 + 1)|0;
+continue _17;
+}
+else{
+__label__ = 16;
+break _17;
+}
+}
+}
+else{
+__label__ = 19;
+break _17;
+}
+}
+switch(__label__ ){//multiple entries
+case 16:
+	r0 = r4 & 255;
+	r0 = (r3 - r0)|0;
+	r_g0 = r0;
+	return;
+break;
+case 19:
+	r0 = r3 & 255;
+	r1 = r4 & 255;
+	r0 = (r0 - r1)|0;
+	r_g0 = r0;
+	return;
+break;
+}
+}
+
+function quicksort(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+	var r6;
+	var r7;
+	var r8;
+	var r9;
+	var r10;
+	var r11;
+	var r12;
+	var r13;
+	var r14;
+	var r15;
+	var r16;
+	var r17;
+	var r18;
+	var r19;
+	var r20;
+	var r21;
+	var r22;
+	var r23;
+	var r24;
+	var r25;
+var __label__ = 0;
+	i7 = sp + -40;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp+2)];
+	heap32[(fp+-4)] = r0;
+	r1 = heap32[(fp+1)];
+	heap32[(fp+-3)] = r1;
+if(!(r0 <=r1)) //_LBB737_37
+{
+	r0 = heap32[(fp)];
+	r1 = heap32[(fp+3)];
+	r2 = 4;
+	r3 = heap32[(fp+-4)];
+	r4 = r3 << 2;
+	r5 = (r0 + r4)|0;
+	r6 = -4;
+	r7 = -8;
+	r2 = (r2 - r0)|0;
+	r3 = (r3 + -1)|0;
+	r8 = (r0 + 4)|0;
+	r6 = (r6 - r0)|0;
+	heap32[(fp+-1)] = r6;
+	r6 = (r5 + -4)|0;
+	heap32[(fp+-2)] = r6;
+	r6 = (r7 - r0)|0;
+	r2 = (r2 - r4)|0;
+	heap32[(fp+-6)] = r2;
+_3: while(true){
+	r2 = heap32[(fp+-3)];
+	r4 = (r2 + -1)|0;
+	r7 = (r2 + 1)|0;
+	r9 = -1;
+	r10 = -2;
+	heap32[(fp+-5)] = r2;
+	r2 = heap32[(fp+-4)];
+	r11 = r4;
+_5: while(true){
+	r12 = r4 << 2;
+	r13 = (r0 + r12)|0;
+	r14 = (r12 + 4)|0;
+	r15 = heap32[(fp+-1)];
+	r15 = (r15 - r12)|0;
+	r16 = (r8 + r12)|0;
+	r12 = (r6 - r12)|0;
+_7: while(true){
+	r17 = r12;
+	r18 = r16;
+	r19 = r15;
+	r20 = r14;
+	r21 = r4;
+	r22 = r13;
+	if(r3 ==r21) //_LBB737_6
+{
+break _7;
+}
+else{
+	r4 = (r0 + r20)|0;
+	heap32[(g0)] = r4;
+	heap32[(g0+1)] = r5;
+	r13 = (r22 + 4)|0;
+	r4 = (r21 + 1)|0;
+	r14 = (r20 + 4)|0;
+	r15 = (r19 + -4)|0;
+	r16 = (r18 + 4)|0;
+	r12 = (r17 + -4)|0;
+	__FUNCTION_TABLE__[(r1)>>2](i7);
+	r23 = r_g0;
+if(!(r23 <0)) //_LBB737_4
+{
+break _7;
+}
+}
+}
+	r4 = r2 << 2;
+	r12 = (r0 + r4)|0;
+	r13 = 0;
+	r14 = (r13 - r12)|0;
+	r4 = (r21 + 1)|0;
+	r15 = (r12 + -4)|0;
+	r16 = r14;
+_11: while(true){
+	r23 = r14;
+	r24 = r16;
+	r25 = r2;
+	r2 = (r15 + r13)|0;
+	heap32[(g0)] = r5;
+	heap32[(g0+1)] = r2;
+	r13 = (r13 + -4)|0;
+	r2 = (r25 + -1)|0;
+	__FUNCTION_TABLE__[(r1)>>2](i7);
+	r14 = r_g0;
+	if(r14 >-1) //_LBB737_9
+{
+break _11;
+}
+else{
+	r16 = (r24 + 4)|0;
+	r14 = (r23 + 4)|0;
+if(!(r7 !=r25)) //_LBB737_7
+{
+break _11;
+}
+}
+}
+	if(r4 >=r2) //_LBB737_20
+{
+break _5;
+}
+else{
+	r17 = 0;
+_16: while(true){
+	r22 = (r17 - r19)|0;
+	r14 = (r17 - r24)|0;
+	r15 = heapU8[r22];
+	r14 = heapU8[r14+-4];
+	r16 = (r17 + 1)|0;
+	r17 = (r17 - r23)|0;
+	heap8[r22] = r14;
+	heap8[r17+-4] = r15;
+	r17 = r16;
+if(!(r16 !=4)) //_LBB737_11
+{
+break _16;
+}
+}
+	r17 = (r0 + r20)|0;
+	heap32[(g0)] = r17;
+	heap32[(g0+1)] = r5;
+	__FUNCTION_TABLE__[(r1)>>2](i7);
+	r17 = r_g0;
+_19: do {
+	if(r17 ==0) //_LBB737_14
+{
+	r17 = r11 << 2;
+	r11 = (r11 + 1)|0;
+	r17 = (r8 + r17)|0;
+	r22 = 0;
+_21: while(true){
+	r14 = (r18 - r22)|0;
+	r15 = (r17 - r22)|0;
+	r16 = heapU8[r15];
+	r19 = heapU8[r14];
+	r22 = (r22 + -1)|0;
+	heap8[r15] = r19;
+	heap8[r14] = r16;
+if(!(r22 !=-4)) //_LBB737_15
+{
+break _19;
+}
+}
+}
+} while(0);
+	r17 = (r12 + r13)|0;
+	heap32[(g0)] = r5;
+	heap32[(g0+1)] = r17;
+	__FUNCTION_TABLE__[(r1)>>2](i7);
+	r17 = r_g0;
+if(!(r17 !=0)) //_LBB737_3
+{
+	r4 = (r21 + 1)|0;
+	r17 = 0;
+_25: while(true){
+	r18 = heap32[(fp+-2)];
+	r18 = (r17 + r18)|0;
+	r21 = r10 << 2;
+	r18 = (r18 - r21)|0;
+	r21 = (r17 + r12)|0;
+	r21 = heapU8[r21+r13];
+	r22 = heapU8[r18+-8];
+	r14 = (r17 + r12)|0;
+	r17 = (r17 + 1)|0;
+	heap8[r14+r13] = r22;
+	heap8[r18+-8] = r21;
+	if(r17 ==4) //_LBB737_18
+{
+break _25;
+}
+}
+	r10 = (r10 + 1)|0;
+	r9 = (r9 + 1)|0;
+}
+}
+}
+	r2 = heap32[(fp+-4)];
+	r2 = (r2 - r10)|0;
+	r4 = 0;
+	r2 = (r2 + -2)|0;
+	r7 = (r4 - r22)|0;
+_29: while(true){
+	r12 = (r5 - r4)|0;
+	r13 = (r18 - r4)|0;
+	r14 = heapU8[r13];
+	r15 = heapU8[r12];
+	r4 = (r4 + -1)|0;
+	heap8[r13] = r15;
+	heap8[r12] = r14;
+if(!(r4 !=-4)) //_LBB737_21
+{
+break _29;
+}
+}
+	r4 = (r21 + 2)|0;
+	r12 = heap32[(fp+-3)];
+	if(r12 <r11) //_LBB737_24
+{
+	r13 = r12 << 2;
+	r14 = 0;
+	r13 = (r0 + r13)|0;
+	r13 = (r14 - r13)|0;
+	r12 = (r11 - r12)|0;
+_34: while(true){
+	r15 = r14;
+_36: while(true){
+	r16 = (r15 - r7)|0;
+	r18 = (r15 - r13)|0;
+	r19 = heapU8[r18];
+	r20 = heapU8[r16];
+	r15 = (r15 + 1)|0;
+	heap8[r18] = r20;
+	heap8[r16] = r19;
+if(!(r15 !=4)) //_LBB737_26
+{
+break _36;
+}
+}
+	r12 = (r12 + -1)|0;
+	r13 = (r13 + -4)|0;
+	r7 = (r7 + 4)|0;
+if(!(r12 !=0)) //_LBB737_25
+{
+break _34;
+}
+}
+	r7 = heap32[(fp+-3)];
+	r7 = (r7 - r11)|0;
+	r7 = (r7 + r21)|0;
+}
+else{
+	r7 = r21;
+}
+	if(r3 >r2) //_LBB737_35
+{
+	r2 = heap32[(fp+-6)];
+_44: while(true){
+	r4 = 0;
+_46: while(true){
+	r11 = (r4 - r2)|0;
+	r12 = (r4 - r17)|0;
+	r13 = heapU8[r12];
+	r14 = heapU8[r11];
+	r4 = (r4 + 1)|0;
+	heap8[r12] = r14;
+	heap8[r11] = r13;
+if(!(r4 !=4)) //_LBB737_30
+{
+break _46;
+}
+}
+	r9 = (r9 + -1)|0;
+	r17 = (r17 + -4)|0;
+	r2 = (r2 + 4)|0;
+if(!(r9 !=0)) //_LBB737_29
+{
+break _44;
+}
+}
+	r2 = (r10 + r21)|0;
+	r2 = (r2 + 3)|0;
+	heap32[(fp+-3)] = r2;
+}
+else{
+	heap32[(fp+-3)] = r4;
+}
+	heap32[(g0)] = r0;
+	r2 = heap32[(fp+-5)];
+	heap32[(g0+1)] = r2;
+	heap32[(g0+2)] = r7;
+	heap32[(g0+3)] = r1;
+	quicksort(i7);
+	r4 = heap32[(fp+-3)];
+	r2 = heap32[(fp+-4)];
+	if(r4 <r2) //_LBB737_2
+{
+continue _3;
+}
+else{
+break _3;
+}
+}
+}
+	return;
+}
+
+function __dtostr(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+	var r6;
+	var r7;
+	var r8;
+	var r9;
+	var f0;
+	var f1;
+	var f2;
+	var f3;
+var __label__ = 0;
+	i7 = sp + -40;var g0 = i7>>2; // save stack
+	f0 = llvm_readDouble((sp));
+	r0 = sp + -8;
+	llvm_writeDouble((sp+-8),f0);
+	r0 = r0 >> 2;
+	r0 = heap32[(r0+1)];
+	r1 = heap32[(fp+2)];
+	r2 = heap32[(fp+3)];
+	r3 = heap32[(fp+4)];
+	r4 = heap32[(fp+5)];
+	r5 = heap32[(fp+6)];
+	r6 = heap32[(fp+-2)];
+	if(r0 >2146435071) //_LBB738_3
+{
+	r7 = r0 ^ 2146959360;
+	r7 = r6 | r7;
+	if(r7 ==0) //_LBB738_13
+{
+__label__ = 13;
+}
+else{
+	r7 = r0 ^ 2146435072;
+	r6 = r6 | r7;
+	if(r6 !=0) //_LBB738_21
+{
+__label__ = 20;
+}
+else{
+__label__ = 5;
+}
+}
+}
+else{
+	r7 = r0 ^ -1048576;
+	r7 = r6 | r7;
+	if(r7 ==0) //_LBB738_5
+{
+__label__ = 5;
+}
+else{
+	r7 = r0 ^ -524288;
+	r6 = r6 | r7;
+	if(r6 ==0) //_LBB738_13
+{
+__label__ = 13;
+}
+else{
+__label__ = 20;
+}
+}
+}
+_6: do {
+switch(__label__ ){//multiple entries
+case 13:
+	if(r2 >0) //_LBB738_15
+{
+	r0 = (r2 + -1)|0;
+	r3 = 2;
+	r4 = 0;
+	r5 = (r2 + 2)|0;
+	r0 = uint(r0) > uint(r3) ? r0 : r3;
+	r3 = (r4 - r2)|0;
+	r0 = (r5 - r0)|0;
+	r4 = _2E_str9655;
+	r5 = r1;
+_10: while(true){
+	r6 = heapU8[r4];
+	r0 = (r0 + -1)|0;
+	r7 = (r5 + 1)|0;
+	r4 = (r4 + 1)|0;
+	heap8[r5] = r6;
+	r5 = r7;
+if(!(r0 !=0)) //_LBB738_16
+{
+break _10;
+}
+}
+	r0 = -3;
+	r4 = 3;
+	r0 = uint(r3) > uint(r0) ? r2 : r4;
+}
+else{
+	r0 = 0;
+}
+	if(r0 >=r2) //_LBB738_20
+{
+	r_g0 = r0;
+	return;
+}
+else{
+__label__ = 11;
+break _6;
+}
+break;
+case 20:
+	f1 =                         0;
+	if(f0 !=f1) //_LBB738_32
+{
+	r0 = r0 >>> 20;
+	r0 = r0 & 2047;
+	r0 = (r0 + -1023)|0;
+	f2 = r0; //fitod r0, f2
+	f3 =        0.3010299956639812;
+	f2 = f2*f3;
+	r0 = f2|0;
+	r6 = (r0 + 1)|0;
+	if(f0 <f1) //_LBB738_34
+{
+	f1 = -f0;
+	r2 = (r2 + -1)|0;
+	r7 = (r1 + 1)|0;
+	r8 = 45;
+	heap8[r1] = r8;
+}
+else{
+	r7 = r1;
+	f1 = f0;
+}
+_23: do {
+	if(r4 ==0) //_LBB738_37
+{
+	f2 =                       0.5;
+}
+else{
+	f2 =                       0.5;
+	r8 = r4;
+	f3 =       0.10000000000000001;
+_26: while(true){
+	r8 = (r8 + -1)|0;
+	f2 = f2*f3;
+if(!(r8 !=0)) //_LBB738_38
+{
+break _23;
+}
+}
+}
+} while(0);
+	f1 = f1+f2;
+	f2 =                         1;
+	if(f1 <f2) //_LBB738_41
+{
+	r2 = (r2 + -1)|0;
+	r8 = (r7 + 1)|0;
+	r9 = 48;
+	heap8[r7] = r9;
+	r7 = r8;
+}
+_32: do {
+	if(r6 >0) //_LBB738_44
+{
+_34: do {
+	if(uint(r6) >uint(10)) //_LBB738_46
+{
+	r0 = (r0 + 1)|0;
+	f2 =                        10;
+	f3 =               10000000000;
+_36: while(true){
+	r0 = (r0 + -10)|0;
+	f2 = f2*f3;
+if(!(uint(r0) >uint(10))) //_LBB738_47
+{
+break _34;
+}
+}
+}
+else{
+	f2 =                        10;
+	r0 = r6;
+}
+} while(0);
+	if(uint(r0) >uint(1)) //_LBB738_50
+{
+	r0 = (r0 + -1)|0;
+	f3 =                        10;
+_42: while(true){
+	r0 = (r0 + -1)|0;
+	f2 = f2*f3;
+if(!(r0 !=0)) //_LBB738_51
+{
+break _42;
+}
+}
+	r0 = 1;
+}
+else{
+	r0 = 1;
+}
+_46: while(true){
+	f3 =       0.90000000000000002;
+	if(f2 >f3) //_LBB738_53
+{
+	f3 = f1/f2;
+	r8 = f3|0;
+	if(r0 ==0) //_LBB738_56
+{
+__label__ = 52;
+}
+else{
+	r9 = r8 & 255;
+	if(r9 !=0) //_LBB738_56
+{
+__label__ = 52;
+}
+else{
+__label__ = 64;
+}
+}
+if (__label__ == 52){
+	r0 = (r8 + 48)|0;
+	heap8[r7] = r0;
+	if(r2 !=0) //_LBB738_70
+{
+	r0 = r8 << 24;
+	r0 = r0 >> 24;
+	f3 = r0; //fitod r0, f3
+	f3 = f3*f2;
+	r7 = (r7 + 1)|0;
+	f1 = f1-f3;
+	r2 = (r2 + -1)|0;
+	r0 = 0;
+}
+else{
+break _46;
+}
+}
+	f3 =                        10;
+	f2 = f2/f3;
+}
+else{
+__label__ = 66;
+break _32;
+}
+}
+	f0 = f0/f2;
+	llvm_writeDouble((i7),f0);
+	heap32[(g0+2)] = r1;
+	heap32[(g0+3)] = r2;
+	heap32[(g0+4)] = r3;
+	heap32[(g0+5)] = r4;
+	heap32[(g0+6)] = 0;
+	__dtostr(i7);
+	r0 = r_g0;
+	if(r0 ==0) //_LBB738_92
+{
+__label__ = 83;
+}
+else{
+	r3 = (r0 + r7)|0;
+	r7 = (r3 + 1)|0;
+	if(r2 !=r0) //_LBB738_60
+{
+	r3 = (r3 + 2)|0;
+	r4 = 101;
+	heap8[r7] = r4;
+	r7 = r3;
+}
+	r2 = (r2 + -1)|0;
+	r3 = (r2 - r0)|0;
+_60: do {
+	if(r6 <1000) //_LBB738_66
+{
+	if(r6 <100) //_LBB738_93
+{
+	if(r6 >9) //_LBB738_95
+{
+__label__ = 90;
+break _60;
+}
+else{
+__label__ = 91;
+break _60;
+}
+}
+else{
+__label__ = 87;
+break _60;
+}
+}
+else{
+	if(r2 !=r0) //_LBB738_64
+{
+	r0 = (r6 / 1000)|0;
+	r2 = (r7 + 1)|0;
+	r0 = (r0 + 48)|0;
+	heap8[r7] = r0;
+	r7 = r2;
+}
+	r3 = (r3 + -1)|0;
+	r6 = (r6 % 1000)|0;
+__label__ = 87;
+}
+} while(0);
+if (__label__ == 87){
+	if(r3 !=0) //_LBB738_97
+{
+	r0 = (r6 / 100)|0;
+	r2 = (r7 + 1)|0;
+	r0 = (r0 + 48)|0;
+	heap8[r7] = r0;
+	r7 = r2;
+}
+	r3 = (r3 + -1)|0;
+	r6 = (r6 % 100)|0;
+__label__ = 90;
+}
+if (__label__ == 90){
+	if(r3 !=0) //_LBB738_101
+{
+	r0 = (r6 / 10)|0;
+	r2 = (r7 + 1)|0;
+	r0 = (r0 + 48)|0;
+	heap8[r7] = r0;
+	r7 = r2;
+}
+	r3 = (r3 + -1)|0;
+	r6 = (r6 % 10)|0;
+}
+	if(r3 !=0) //_LBB738_68
+{
+	r0 = (r6 + 48)|0;
+	heap8[r7] = r0;
+	if(r3 ==1) //_LBB738_92
+{
+__label__ = 83;
+}
+else{
+	r7 = (r7 + 1)|0;
+__label__ = 82;
+}
+}
+else{
+__label__ = 82;
+}
+}
+}
+else{
+	f2 =       0.10000000000000001;
+__label__ = 66;
+}
+} while(0);
+_81: do {
+if (__label__ == 66){
+	if(r7 ==r1) //_LBB738_75
+{
+	if(r2 ==0) //_LBB738_92
+{
+__label__ = 83;
+break _81;
+}
+else{
+	r2 = (r2 + -1)|0;
+	r6 = (r7 + 1)|0;
+	r0 = 48;
+	heap8[r7] = r0;
+	r7 = r6;
+}
+}
+if(!(r4 !=0)) //_LBB738_80
+{
+	r6 = 1;
+	r6 = (r6 - r1)|0;
+	r6 = (r6 + r7)|0;
+if(!(uint(r6) <uint(r3))) //_LBB738_80
+{
+__label__ = 82;
+break _81;
+}
+}
+	if(r2 ==0) //_LBB738_92
+{
+__label__ = 83;
+}
+else{
+	r6 = (r2 + -1)|0;
+	r0 = (r7 + 1)|0;
+	r2 = 46;
+	heap8[r7] = r2;
+	if(r5 ==0) //_LBB738_83
+{
+if(!(r4 !=0)) //_LBB738_85
+{
+	r3 = (r1 + r3)|0;
+	r3 = (r3 + 1)|0;
+	r4 = (r3 - r0)|0;
+}
+}
+else{
+	r3 = r4 == 0 ? r3 : r4;
+	r3 = (r1 + r3)|0;
+	r3 = (r3 + 1)|0;
+	r4 = (r3 - r0)|0;
+}
+	if(uint(r4) >uint(r6)) //_LBB738_92
+{
+__label__ = 83;
+}
+else{
+	if(r4 !=0) //_LBB738_88
+{
+	r3 = (r4 + 1)|0;
+	r6 = (r7 + 1)|0;
+	f3 =                        10;
+_99: while(true){
+	f0 = f1/f2;
+	r0 = f0|0;
+	r2 = r0 << 24;
+	r2 = r2 >> 24;
+	f0 = r2; //fitod r2, f0
+	f0 = f0*f2;
+	r4 = (r4 + -1)|0;
+	f2 = f2/f3;
+	f1 = f1-f0;
+	r2 = (r6 + 1)|0;
+	r0 = (r0 + 48)|0;
+	heap8[r6] = r0;
+	r6 = r2;
+if(!(r4 !=0)) //_LBB738_89
+{
+break _99;
+}
+}
+	r7 = (r7 + r3)|0;
+__label__ = 82;
+}
+else{
+	r7 = r0;
+__label__ = 82;
+}
+}
+}
+}
+} while(0);
+switch(__label__ ){//multiple entries
+case 83:
+	r1 = 0;
+	r_g0 = r1;
+	return;
+break;
+case 82:
+	r3 = 0;
+	heap8[r7] = r3;
+	r1 = (r7 - r1)|0;
+	r_g0 = r1;
+	return;
+break;
+}
+}
+else{
+	r3 = 1;
+	r5 = (r4 + 2)|0;
+	r4 = r4 == 0 ? r3 : r5;
+	r5 = 8;
+	r2 = uint(r4) > uint(r2) ? r5 : r4;
+	if(r2 ==0) //_LBB738_24
+{
+__label__ = 23;
+}
+else{
+	if(r0 <0) //_LBB738_25
+{
+	r0 = 45;
+	heap8[r1] = r0;
+	r0 = r3;
+__label__ = 25;
+}
+else{
+__label__ = 23;
+}
+}
+if (__label__ == 23){
+	r0 = 0;
+}
+	if(uint(r0) <uint(r2)) //_LBB738_28
+{
+	r5 = 48;
+_115: while(true){
+	r4 = (r0 + 1)|0;
+	heap8[r1+r0] = r5;
+	r0 = r4;
+if(!(r2 !=r4)) //_LBB738_29
+{
+break _115;
+}
+}
+	r0 = r2;
+}
+	r2 = 2;
+	r4 = heapU8[r1];
+	r2 = r4 == 48 ? r3 : r2;
+	r3 = 46;
+	r4 = 0;
+	heap8[r1+r2] = r3;
+	heap8[r1+r0] = r4;
+	r_g0 = r0;
+	return;
+}
+break;
+case 5:
+	if(r2 >0) //_LBB738_7
+{
+	r0 = (r2 + -1)|0;
+	r3 = 2;
+	r4 = 0;
+	r5 = (r2 + 2)|0;
+	r0 = uint(r0) > uint(r3) ? r0 : r3;
+	r3 = (r4 - r2)|0;
+	r0 = (r5 - r0)|0;
+	r4 = _2E_str7654;
+	r5 = r1;
+_122: while(true){
+	r6 = heapU8[r4];
+	r0 = (r0 + -1)|0;
+	r7 = (r5 + 1)|0;
+	r4 = (r4 + 1)|0;
+	heap8[r5] = r6;
+	r5 = r7;
+if(!(r0 !=0)) //_LBB738_8
+{
+break _122;
+}
+}
+	r0 = -3;
+	r4 = 3;
+	r0 = uint(r3) > uint(r0) ? r2 : r4;
+}
+else{
+	r0 = 0;
+}
+	if(r0 >=r2) //_LBB738_12
+{
+__label__ = 12;
+}
+else{
+__label__ = 11;
+}
+break;
+}
+} while(0);
+if (__label__ == 11){
+	r2 = 0;
+	heap8[r1+r0] = r2;
+	r0 = (r0 + 1)|0;
+}
+	r_g0 = r0;
+	return;
+}
+
+function write_pad(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+	var r6;
+	var r7;
+var __label__ = 0;
+	i7 = sp + -16;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp+2)];
+	if(r0 >0) //_LBB739_2
+{
+	r1 = heap32[(fp)];
+	r1 = r1 >> 2;
+	r2 = heap32[(r1)];
+	r2 = (r2 + r0)|0;
+	if(uint(r2) >=uint(r0)) //_LBB739_4
+{
+	r2 = heap32[(fp+1)];
+	r3 = heap32[(fp+3)];
+	if(uint(r0) >uint(15)) //_LBB739_6
+{
+	r4 = 48;
+	r4 = r3 == r4;
+	r4 = r4 & 1;
+	r5 = _ZL8pad_line;
+	r4 = r4 << 5;
+	r4 = (r5 + r4)|0;
+	r5 = 0;
+_7: while(true){
+	r6 = r2 >> 2;
+	r7 = heap32[(r6+1)];
+	r6 = heap32[(r6)];
+	heap32[(g0)] = r4;
+	heap32[(g0+1)] = 16;
+	heap32[(g0+2)] = r6;
+	r5 = (r5 + -16)|0;
+	__FUNCTION_TABLE__[(r7)>>2](i7);
+	r6 = (r0 + r5)|0;
+if(!(uint(r6) >uint(15))) //_LBB739_7
+{
+break _7;
+}
+}
+	r0 = 0;
+	r4 = (r0 - r5)|0;
+	if(r6 ==0) //_LBB739_10
+{
+__label__ = 11;
+}
+else{
+	r0 = r6;
+__label__ = 10;
+}
+}
+else{
+	r4 = 0;
+__label__ = 10;
+}
+if (__label__ == 10){
+	r5 = 48;
+	r2 = r2 >> 2;
+	r3 = r3 == r5;
+	r3 = r3 & 1;
+	r5 = heap32[(r2+1)];
+	r2 = heap32[(r2)];
+	r6 = _ZL8pad_line;
+	r3 = r3 << 5;
+	r3 = (r6 + r3)|0;
+	heap32[(g0)] = r3;
+	heap32[(g0+1)] = r0;
+	heap32[(g0+2)] = r2;
+	r4 = (r4 + r0)|0;
+	__FUNCTION_TABLE__[(r5)>>2](i7);
+}
+	r0 = heap32[(r1)];
+	r0 = (r0 + r4)|0;
+	heap32[(r1)] = r0;
+	r0 = 0;
+}
+else{
+	r0 = -1;
+}
+}
+else{
+	r0 = 0;
+}
+	r_g0 = r0;
+	return;
+}
+
+function sgetc(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+var __label__ = 0;
+	i7 = sp + 0;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r0 = r0 >> 2;
+	r1 = heap32[(r0)];
+	r2 = heapU8[r1];
+	r1 = (r1 + 1)|0;
+	heap32[(r0)] = r1;
+	if(r2 ==0) //_LBB740_2
+{
+	r0 = -1;
+	r_g0 = r0;
+	return;
+}
+else{
+	r_g0 = r2;
+	return;
+}
+}
+
+function sputc(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+var __label__ = 0;
+	i7 = sp + 0;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp+1)];
+	r0 = r0 >> 2;
+	r1 = heap32[(r0)];
+	r2 = (r1 + -1)|0;
+	heap32[(r0)] = r2;
+	r0 = heapU8[r1+-1];
+	r1 = heap32[(fp)];
+	r2 = -1;
+	r0 = r0 == r1 ? r1 : r2;
+	r_g0 = r0;
+	return;
+}
+
+function memset(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+var __label__ = 0;
+	i7 = sp + 0;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp+2)];
+	r1 = heap32[(fp)];
+if(!(r0 ==0)) //_LBB742_3
+{
+	r2 = heap32[(fp+1)];
+	r3 = r1;
+_3: while(true){
+	r0 = (r0 + -1)|0;
+	r4 = (r3 + 1)|0;
+	heap8[r3] = r2;
+	r3 = r4;
+	if(r0 !=0) //_LBB742_2
+{
+continue _3;
+}
+else{
+break _3;
+}
+}
+}
+	r_g0 = r1;
+	return;
+}
+
+function memcpy(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+	var r6;
+	var r7;
+	var r8;
+	var r9;
+var __label__ = 0;
+	i7 = sp + 0;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = heap32[(fp+1)];
+	r2 = heap32[(fp+2)];
+	r3 = r1 ^ r0;
+	r3 = r3 & 3;
+_1: do {
+	if(r3 !=0) //_LBB743_2
+{
+__label__ = 2;
+}
+else{
+	if(uint(r2) >uint(4)) //_LBB743_3
+{
+	r3 = r0 & 3;
+	if(r3 !=0) //_LBB743_5
+{
+	r3 = (r3 + -5)|0;
+	r4 = r2 ^ -1;
+	r3 = uint(r3) < uint(r4) ? r4 : r3;
+	r4 = (r3 + r2)|0;
+	r3 = r3 ^ -1;
+	r4 = (r4 + 1)|0;
+	r6 = (r1 + r3)|0;
+	r5 = (r0 + r3)|0;
+	r3 = r0 | -4;
+	r7 = r0;
+_6: while(true){
+	if(r3 ==0) //_LBB743_9
+{
+break _6;
+}
+else{
+	if(r2 ==0) //_LBB743_20
+{
+__label__ = 19;
+break _1;
+}
+else{
+	r8 = heapU8[r1];
+	r2 = (r2 + -1)|0;
+	r3 = (r3 + 1)|0;
+	r1 = (r1 + 1)|0;
+	r9 = (r7 + 1)|0;
+	heap8[r7] = r8;
+	r7 = r9;
+}
+}
+}
+	if(r4 ==-1) //_LBB743_20
+{
+__label__ = 19;
+break _1;
+}
+else{
+	r2 = r4;
+	r1 = r6;
+}
+}
+else{
+	r5 = r0;
+}
+	if(uint(r2) >uint(3)) //_LBB743_13
+{
+	r6 = r5;
+	r4 = r1;
+_16: while(true){
+	r7 = r4 >> 2;
+	r2 = (r2 + -4)|0;
+	r4 = (r4 + 4)|0;
+	r3 = (r6 + 4)|0;
+	r6 = r6 >> 2;
+	r7 = heap32[(r7)];
+	heap32[(r6)] = r7;
+	r6 = r3;
+	if(uint(r2) >uint(3)) //_LBB743_14
+{
+continue _16;
+}
+else{
+__label__ = 15;
+break _1;
+}
+}
+}
+else{
+	r4 = r1;
+	r3 = r5;
+__label__ = 15;
+}
+}
+else{
+__label__ = 2;
+}
+}
+} while(0);
+if (__label__ == 2){
+	r3 = 0;
+	r4 = r3;
+	r5 = r0;
+__label__ = 15;
+}
+_21: do {
+if (__label__ == 15){
+if(!(r2 ==0)) //_LBB743_20
+{
+	if(r3 !=0) //_LBB743_18
+{
+	r1 = r4;
+	r5 = r3;
+}
+_26: while(true){
+	r3 = heapU8[r1];
+	r2 = (r2 + -1)|0;
+	r4 = (r5 + 1)|0;
+	r1 = (r1 + 1)|0;
+	heap8[r5] = r3;
+	r5 = r4;
+	if(r2 !=0) //_LBB743_19
+{
+continue _26;
+}
+else{
+break _21;
+}
+}
+}
+}
+} while(0);
+	r_g0 = r0;
+	return;
+}
+
+function swrite(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+var __label__ = 0;
+	i7 = sp + -16;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp+2)];
+	r0 = r0 >> 2;
+	r1 = heap32[(r0+1)];
+	r2 = heap32[(r0+2)];
+	r3 = heap32[(fp+1)];
+if(!(r2 ==r1)) //_LBB744_5
+{
+	r2 = (r2 - r1)|0;
+	r4 = heap32[(r0)];
+	r2 = uint(r2) < uint(r3) ? r2 : r3;
+	if(r4 !=0) //_LBB744_3
+{
+	r5 = heap32[(fp)];
+	r1 = (r4 + r1)|0;
+	heap32[(g0)] = r1;
+	heap32[(g0+1)] = r5;
+	heap32[(g0+2)] = r2;
+	memcpy(i7);
+	r1 = heap32[(r0+1)];
+	r4 = heap32[(r0)];
+	r1 = (r1 + r2)|0;
+	r5 = 0;
+	heap8[r4+r1] = r5;
+	r1 = heap32[(r0+1)];
+}
+	r1 = (r1 + r2)|0;
+	heap32[(r0+1)] = r1;
+}
+	r_g0 = r3;
+	return;
+}
+
+function __sync_fetch_and_add_4(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+var __label__ = 0;
+	i7 = sp + 0;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r0 = r0 >> 2;
+	r1 = heap32[(fp+1)];
+	r2 = heap32[(r0)];
+	r1 = (r2 + r1)|0;
+	heap32[(r0)] = r1;
+	r_g0 = r2;
+	return;
+}
+
+function __muldi3(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+	var r6;
+	var r7;
+	var r8;
+	var r9;
+	var r10;
+	var r11;
+	var r12;
+	var r13;
+	var r14;
+	var r15;
+var __label__ = 0;
+	i7 = sp + 0;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp+1)];
+	r1 = heap32[(fp)];
+	r2 = heap32[(fp+2)];
+	r3 = heap32[(fp+3)];
+	if(r0 <0) //_LBB746_2
+{
+	r5 = 0;
+	r4 = 1;
+	r0 = (r5 - r0)|0;
+	r6 = r1 != 0 ? r4 : r5;
+	r1 = (r5 - r1)|0;
+	r0 = (r0 - r6)|0;
+}
+else{
+	r4 = 0;
+}
+	if(r3 <0) //_LBB746_5
+{
+	r5 = 0;
+	r6 = 1;
+	r3 = (r5 - r3)|0;
+	r6 = r2 != 0 ? r6 : r5;
+	r4 = r4 ^ 1;
+	r2 = (r5 - r2)|0;
+	r3 = (r3 - r6)|0;
+}
+	r5 = r2 & 65535;
+	r6 = r1 & 65535;
+	r7 = r3 | r0;
+	r8 = (r5 * r6)|0;
+	r9 = r2 | r1;
+	r9 = r9 >>> 16;
+	if(r9 !=0) //_LBB746_8
+{
+	r9 = r1 >>> 16;
+	r10 = r2 >>> 16;
+	r11 = (r10 - r5)|0;
+	r12 = (r5 - r10)|0;
+	r13 = (r6 - r9)|0;
+	r14 = (r9 - r6)|0;
+	r15 = (r10 * r9)|0;
+	r11 = uint(r5) < uint(r10) ? r11 : r12;
+	r12 = uint(r9) < uint(r6) ? r13 : r14;
+	r11 = (r11 * r12)|0;
+	r12 = r15 >>> 16;
+	r12 = (r12 + r15)|0;
+	r13 = r15 << 16;
+	r14 = r11 << 16;
+	r6 = uint(r9) < uint(r6);
+	r5 = uint(r5) < uint(r10);
+	r5 = r6 ^ r5;
+	r5 = r5 & 1;
+	if(r5 ==0) //_LBB746_10
+{
+	r5 = (r14 + r13)|0;
+	r6 = uint(r5) < uint(r13);
+	r11 = r11 >>> 16;
+	r11 = (r11 + r12)|0;
+	r6 = r6 & 1;
+	r11 = (r11 + r6)|0;
+}
+else{
+	r5 = (r13 - r14)|0;
+	r11 = r11 >>> 16;
+	r14 = -1;
+	r6 = 0;
+	r11 = (r12 - r11)|0;
+	r12 = uint(r5) > uint(r13) ? r14 : r6;
+	r11 = (r11 + r12)|0;
+}
+	r6 = r8 << 16;
+	r6 = (r5 + r6)|0;
+	r9 = (r6 + r8)|0;
+	r5 = uint(r6) < uint(r5);
+	r6 = r8 >>> 16;
+	r8 = uint(r9) < uint(r8);
+	r6 = (r11 + r6)|0;
+	r5 = r5 & 1;
+	r5 = (r6 + r5)|0;
+	r8 = r8 & 1;
+	r5 = (r5 + r8)|0;
+	r8 = r9;
+}
+else{
+	r5 = 0;
+}
+	if(r7 !=0) //_LBB746_14
+{
+	r6 = (r3 - r2)|0;
+	r7 = (r2 - r3)|0;
+	r9 = (r1 - r0)|0;
+	r10 = (r0 - r1)|0;
+	r6 = uint(r2) < uint(r3) ? r6 : r7;
+	r7 = uint(r0) < uint(r1) ? r9 : r10;
+	r1 = uint(r0) < uint(r1);
+	r2 = uint(r2) < uint(r3);
+	r9 = 0;
+	r6 = (r6 * r7)|0;
+	r1 = r1 ^ r2;
+	r2 = (r9 - r6)|0;
+	r1 = r1 != 0 ? r2 : r6;
+	r0 = (r3 * r0)|0;
+	r0 = (r1 + r0)|0;
+	r0 = (r0 + r8)|0;
+	r5 = (r0 + r5)|0;
+}
+	r0 = 0;
+	r1 = 1;
+	r2 = (r0 - r5)|0;
+	r1 = r8 != 0 ? r1 : r0;
+	r0 = (r0 - r8)|0;
+	r1 = (r2 - r1)|0;
+	r0 = r4 == 0 ? r8 : r0;
+	r1 = r4 == 0 ? r5 : r1;
+	r_g0 = r0;
+	r_g1 = r1;
+	return;
+}
+
+function __fixdfdi(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+var __label__ = 0;
+	i7 = sp + -16;var g0 = i7>>2; // save stack
+	r0 = sp + 0;
+	r0 = r0 >> 2;
+	r0 = heap32[(r0+1)];
+	r1 = r0 >>> 20;
+	r1 = r1 & 2047;
+	r2 = (r1 + -1023)|0;
+	if(r2 <0) //_LBB747_5
+{
+	r0 = 0;
+	r_g0 = r0;
+	r_g1 = r0;
+	return;
+}
+else{
+	r3 = heap32[(fp)];
+	r4 = r0 & 1048575;
+	r0 = r0 >> 31;
+	r4 = r4 | 1048576;
+	if(r2 <53) //_LBB747_3
+{
+	r2 = 1075;
+	r1 = (r2 - r1)|0;
+	heap32[(g0)] = r3;
+	heap32[(g0+1)] = r4;
+	heap32[(g0+2)] = r1;
+	__lshrdi3(i7);
+	r1 = r_g0;
+	r3 = r_g1;
+}
+else{
+	r1 = (r1 + -1075)|0;
+	heap32[(g0)] = r3;
+	heap32[(g0+1)] = r4;
+	heap32[(g0+2)] = r1;
+	__ashldi3(i7);
+	r1 = r_g0;
+	r3 = r_g1;
+}
+	r2 = r3 ^ r0;
+	r1 = r1 ^ r0;
+	r3 = 1;
+	r4 = 0;
+	r2 = (r2 - r0)|0;
+	r3 = uint(r1) < uint(r0) ? r3 : r4;
+	r0 = (r1 - r0)|0;
+	r1 = (r2 - r3)|0;
+	r_g0 = r0;
+	r_g1 = r1;
+	return;
+}
+}
+
+function __floatdidf(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var f0;
+	var f1;
+	var f2;
+var __label__ = 0;
+	i7 = sp + 0;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp+1)];
+	r1 = heap32[(fp)];
+	f0 = r0; //fitod r0, f0
+	f1 =                4294967296;
+	f2 = uint(r1); //fuitod r1, f2
+	f0 = f0*f1;
+	f0 = f2+f0;
+	f_g0 = f0;
+	return;
+}
+
+function __lshrdi3(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+var __label__ = 0;
+	i7 = sp + 0;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp+2)];
+	r1 = heap32[(fp+1)];
+	r2 = r0 & 32;
+	if(r2 ==0) //_LBB749_2
+{
+	r2 = heap32[(fp)];
+if(!(r0 ==0)) //_LBB749_4
+{
+	r3 = 32;
+	r3 = (r3 - r0)|0;
+	r3 = r1 << r3;
+	r2 = r2 >>> r0;
+	r2 = r3 | r2;
+	r1 = r1 >>> r0;
+}
+	r_g0 = r2;
+	r_g1 = r1;
+	return;
+}
+else{
+	r0 = (r0 + -32)|0;
+	r0 = r1 >>> r0;
+	r1 = 0;
+	r_g0 = r0;
+	r_g1 = r1;
+	return;
+}
+}
+
+function __fixsfdi(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+var __label__ = 0;
+	i7 = sp + -16;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = r0 >>> 23;
+	r1 = r1 & 255;
+	r2 = (r1 + -127)|0;
+	if(r2 <0) //_LBB750_5
+{
+	r0 = 0;
+	r_g0 = r0;
+	r_g1 = r0;
+	return;
+}
+else{
+	r3 = r0 & 8388607;
+	r0 = r0 >> 31;
+	r3 = r3 | 8388608;
+	r4 = 0;
+	if(r2 <24) //_LBB750_3
+{
+	r2 = 150;
+	r1 = (r2 - r1)|0;
+	heap32[(g0)] = r3;
+	heap32[(g0+1)] = r4;
+	heap32[(g0+2)] = r1;
+	__lshrdi3(i7);
+	r1 = r_g0;
+	r3 = r_g1;
+}
+else{
+	r1 = (r1 + -150)|0;
+	heap32[(g0)] = r3;
+	heap32[(g0+1)] = r4;
+	heap32[(g0+2)] = r1;
+	__ashldi3(i7);
+	r1 = r_g0;
+	r3 = r_g1;
+}
+	r2 = r3 ^ r0;
+	r1 = r1 ^ r0;
+	r3 = 1;
+	r2 = (r2 - r0)|0;
+	r3 = uint(r1) < uint(r0) ? r3 : r4;
+	r0 = (r1 - r0)|0;
+	r1 = (r2 - r3)|0;
+	r_g0 = r0;
+	r_g1 = r1;
+	return;
+}
+}
+
+function __ashldi3(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+var __label__ = 0;
+	i7 = sp + 0;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp+2)];
+	r1 = heap32[(fp)];
+	r2 = r0 & 32;
+	if(r2 ==0) //_LBB751_2
+{
+	r2 = heap32[(fp+1)];
+if(!(r0 ==0)) //_LBB751_4
+{
+	r3 = 32;
+	r3 = (r3 - r0)|0;
+	r2 = r2 << r0;
+	r3 = r1 >>> r3;
+	r1 = r1 << r0;
+	r2 = r2 | r3;
+}
+	r_g0 = r1;
+	r_g1 = r2;
+	return;
+}
+else{
+	r0 = (r0 + -32)|0;
+	r2 = 0;
+	r0 = r1 << r0;
+	r_g0 = r2;
+	r_g1 = r0;
+	return;
+}
+}
+
+function __ashrdi3(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+var __label__ = 0;
+	i7 = sp + 0;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp+2)];
+	r1 = heap32[(fp+1)];
+	r2 = r0 & 32;
+	if(r2 ==0) //_LBB752_2
+{
+	r2 = heap32[(fp)];
+if(!(r0 ==0)) //_LBB752_4
+{
+	r3 = 32;
+	r3 = (r3 - r0)|0;
+	r3 = r1 << r3;
+	r2 = r2 >>> r0;
+	r2 = r3 | r2;
+	r1 = r1 >> r0;
+}
+	r_g0 = r2;
+	r_g1 = r1;
+	return;
+}
+else{
+	r0 = (r0 + -32)|0;
+	r0 = r1 >> r0;
+	r1 = r1 >> 31;
+	r_g0 = r0;
+	r_g1 = r1;
+	return;
+}
+}
+
+function __fixunsdfdi(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+var __label__ = 0;
+	i7 = sp + -16;var g0 = i7>>2; // save stack
+	r0 = sp + 0;
+	r0 = r0 >> 2;
+	r0 = heap32[(r0+1)];
+	r1 = r0 >>> 20;
+	r1 = r1 & 2047;
+	r2 = (r1 + -1023)|0;
+if(!(r2 <0)) //_LBB753_5
+{
+if(!(r0 <0)) //_LBB753_5
+{
+	r3 = heap32[(fp)];
+	r0 = r0 & 1048575;
+	r0 = r0 | 1048576;
+	if(r2 <53) //_LBB753_4
+{
+	r2 = 1075;
+	r1 = (r2 - r1)|0;
+	heap32[(g0)] = r3;
+	heap32[(g0+1)] = r0;
+	heap32[(g0+2)] = r1;
+	__lshrdi3(i7);
+	return;
+}
+else{
+	r1 = (r1 + -1075)|0;
+	heap32[(g0)] = r3;
+	heap32[(g0+1)] = r0;
+	heap32[(g0+2)] = r1;
+	__ashldi3(i7);
+	return;
+}
+}
+}
+	r0 = 0;
+	r_g0 = r0;
+	r_g1 = r0;
+	return;
+}
+
+function __fixunssfdi(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+var __label__ = 0;
+	i7 = sp + -16;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = r0 >>> 23;
+	r1 = r1 & 255;
+	r2 = (r1 + -127)|0;
+if(!(r2 <0)) //_LBB754_5
+{
+if(!(r0 <0)) //_LBB754_5
+{
+	r0 = r0 & 8388607;
+	r0 = r0 | 8388608;
+	r3 = 0;
+	if(r2 <24) //_LBB754_4
+{
+	r2 = 150;
+	r1 = (r2 - r1)|0;
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r3;
+	heap32[(g0+2)] = r1;
+	__lshrdi3(i7);
+	return;
+}
+else{
+	r1 = (r1 + -150)|0;
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r3;
+	heap32[(g0+2)] = r1;
+	__ashldi3(i7);
+	return;
+}
+}
+}
+	r0 = 0;
+	r_g0 = r0;
+	r_g1 = r0;
+	return;
+}
+
+function _ZNK14CFileInterface12IsFileSystemEv(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+var __label__ = 0;
+	i7 = sp + 0;var g0 = i7>>2; // save stack
+	r0 = 0;
+	r_g0 = r0;
+	return;
+}
+
+function _ZN11CFileStdout5freadEPvjj(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+var __label__ = 0;
+	i7 = sp + 0;var g0 = i7>>2; // save stack
+	r0 = -1;
+	r_g0 = r0;
+	return;
+}
+
+function _ZN11CFileStdout5ftellEv(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+var __label__ = 0;
+	i7 = sp + 0;var g0 = i7>>2; // save stack
+	r0 = 0;
+	r_g0 = r0;
+	return;
+}
+
+function _ZN11CFileStdout4feofEv(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+var __label__ = 0;
+	i7 = sp + 0;var g0 = i7>>2; // save stack
+	r0 = 0;
+	r_g0 = r0;
+	return;
+}
+
+function _ZN11CFileStdout5fseekEli(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+var __label__ = 0;
+	i7 = sp + 0;var g0 = i7>>2; // save stack
+	r0 = 0;
+	r_g0 = r0;
+	return;
+}
+
+function _ZN11CFileStdout6ungetcEi(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+var __label__ = 0;
+	i7 = sp + 0;var g0 = i7>>2; // save stack
+	r0 = 0;
+	r_g0 = r0;
+	return;
+}
+
+function _ZN11CFileStdout6fflushEv(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+var __label__ = 0;
+	i7 = sp + 0;var g0 = i7>>2; // save stack
+	r0 = 0;
+	r_g0 = r0;
+	return;
+}
+
+function _ZN11CFileStdout6fcloseEv(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+var __label__ = 0;
+	i7 = sp + 0;var g0 = i7>>2; // save stack
+	r0 = 0;
+	r_g0 = r0;
+	return;
+}
+
+function _ZNK11CFileSystem12IsFileSystemEv(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+var __label__ = 0;
+	i7 = sp + 0;var g0 = i7>>2; // save stack
+	r0 = 1;
+	r_g0 = r0;
+	return;
+}
+
+function _ZN11CFileSystem5freadEPvjj(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+var __label__ = 0;
+	i7 = sp + -16;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r0 = r0 >> 2;
+	r0 = heap32[(r0+1)];
+	r1 = heap32[(fp+1)];
+	r2 = heap32[(fp+2)];
+	r3 = heap32[(fp+3)];
+	heap32[(g0)] = r1;
+	heap32[(g0+1)] = r2;
+	heap32[(g0+2)] = r3;
+	heap32[(g0+3)] = r0;
+	mandreel_fread(i7);
+	return;
+}
+
+function _ZN11CFileSystem6fwriteEPKvjj(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+var __label__ = 0;
+	i7 = sp + 0;var g0 = i7>>2; // save stack
+	r0 = -1;
+	r_g0 = r0;
+	return;
+}
+
+function _ZN11CFileSystem6fflushEv(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+var __label__ = 0;
+	i7 = sp + 0;var g0 = i7>>2; // save stack
+	r0 = 0;
+	r_g0 = r0;
+	return;
+}
+
+function _ZN11CFileSystem6fcloseEv(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+var __label__ = 0;
+	i7 = sp + -8;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r0 = r0 >> 2;
+	r0 = heap32[(r0+1)];
+	heap32[(g0)] = r0;
+	mandreel_fclose(i7);
+	return;
+}
+
+function _ZN11CFileSystem5ftellEv(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+var __label__ = 0;
+	i7 = sp + -8;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r0 = r0 >> 2;
+	r0 = heap32[(r0+1)];
+	heap32[(g0)] = r0;
+	mandreel_ftell(i7);
+	return;
+}
+
+function _ZN11CFileSystem4feofEv(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+var __label__ = 0;
+	i7 = sp + -8;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r0 = r0 >> 2;
+	r0 = heap32[(r0+1)];
+	heap32[(g0)] = r0;
+	mandreel_feof(i7);
+	return;
+}
+
+function _ZN11CFileSystem5fseekEli(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+var __label__ = 0;
+	i7 = sp + -16;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r0 = r0 >> 2;
+	r0 = heap32[(r0+1)];
+	r1 = heap32[(fp+1)];
+	r2 = heap32[(fp+2)];
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r1;
+	heap32[(g0+2)] = r2;
+	mandreel_fseek(i7);
+	return;
+}
+
+function _ZN11CFileSystem6ungetcEi(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+var __label__ = 0;
+	i7 = sp + -8;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r0 = r0 >> 2;
+	r0 = heap32[(r0+1)];
+	r1 = heap32[(fp+1)];
+	heap32[(g0)] = r1;
+	heap32[(g0+1)] = r0;
+	mandreel_ungetc(i7);
+	return;
+}
+
+function _ZN7CFileLS5freadEPvjj(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+	var r6;
+var __label__ = 0;
+	i7 = sp + -16;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r0 = r0 >> 2;
+	r1 = heap32[(fp+2)];
+	r2 = heap32[(fp+3)];
+	r3 = heap32[(r0+4)];
+	r4 = heap32[(r0+2)];
+	r2 = (r2 * r1)|0;
+	r5 = (r3 + r2)|0;
+	r6 = (r4 - r3)|0;
+	r2 = r5 > r4 ? r6 : r2;
+	if(r2 <0) //_LBB772_2
+{
+	r0 = -1;
+	r_g0 = r0;
+	return;
+}
+else{
+	r4 = heap32[(fp+1)];
+	r5 = heap32[(r0+6)];
+	r3 = (r5 + r3)|0;
+	heap32[(g0)] = r4;
+	heap32[(g0+1)] = r3;
+	heap32[(g0+2)] = r2;
+	memcpy(i7);
+	r3 = heap32[(r0+4)];
+	r3 = (r3 + r2)|0;
+	heap32[(r0+4)] = r3;
+	r0 = Math.floor(uint(r2) /uint(r1));
+	r_g0 = r0;
+	return;
+}
+}
+
+function _ZN7CFileLS5ftellEv(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+var __label__ = 0;
+	i7 = sp + 0;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r0 = r0 >> 2;
+	r0 = heap32[(r0+4)];
+	r_g0 = r0;
+	return;
+}
+
+function _ZN7CFileLS4feofEv(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+var __label__ = 0;
+	i7 = sp + 0;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r0 = r0 >> 2;
+	r1 = heap32[(r0+4)];
+	r0 = heap32[(r0+2)];
+	r0 = r1 >= r0;
+	r0 = r0 & 1;
+	r_g0 = r0;
+	return;
+}
+
+function _ZN7CFileLS5fseekEli(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+var __label__ = 0;
+	i7 = sp + 0;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp+2)];
+	r1 = heap32[(fp)];
+	r2 = heap32[(fp+1)];
+_1: do {
+	if(r0 ==0) //_LBB775_4
+{
+	r1 = r1 >> 2;
+}
+else{
+	if(r0 ==1) //_LBB775_6
+{
+	r0 = r1 >> 2;
+	r1 = heap32[(r0+4)];
+	r1 = (r1 + r2)|0;
+	heap32[(r0+4)] = r1;
+}
+else{
+if(!(r0 !=2)) //_LBB775_7
+{
+	r1 = r1 >> 2;
+	r0 = heap32[(r1+2)];
+	r2 = (r0 + r2)|0;
+break _1;
+}
+}
+	r0 = 0;
+	r_g0 = r0;
+	return;
+}
+} while(0);
+	heap32[(r1+4)] = r2;
+	r1 = 0;
+	r_g0 = r1;
+	return;
+}
+
+function _ZN7CFileLS6ungetcEi(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+var __label__ = 0;
+	i7 = sp + 0;var g0 = i7>>2; // save stack
+	r0 = -1;
+	r_g0 = r0;
+	return;
+}
+
+function _ZN10CFileCloud5freadEPvjj(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+	var r6;
+var __label__ = 0;
+	i7 = sp + -16;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r0 = r0 >> 2;
+	r1 = heap32[(fp+2)];
+	r2 = heap32[(fp+3)];
+	r3 = heap32[(r0+4)];
+	r4 = heap32[(r0+2)];
+	r2 = (r2 * r1)|0;
+	r5 = (r3 + r2)|0;
+	r6 = (r4 - r3)|0;
+	r2 = r5 > r4 ? r6 : r2;
+	if(r2 <0) //_LBB777_2
+{
+	r0 = -1;
+	r_g0 = r0;
+	return;
+}
+else{
+	r4 = heap32[(fp+1)];
+	r5 = heap32[(r0+6)];
+	r3 = (r5 + r3)|0;
+	heap32[(g0)] = r4;
+	heap32[(g0+1)] = r3;
+	heap32[(g0+2)] = r2;
+	memcpy(i7);
+	r3 = heap32[(r0+4)];
+	r3 = (r3 + r2)|0;
+	heap32[(r0+4)] = r3;
+	r0 = Math.floor(uint(r2) /uint(r1));
+	r_g0 = r0;
+	return;
+}
+}
+
+function _ZN10CFileCloud5ftellEv(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+var __label__ = 0;
+	i7 = sp + 0;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r0 = r0 >> 2;
+	r0 = heap32[(r0+4)];
+	r_g0 = r0;
+	return;
+}
+
+function _ZN10CFileCloud4feofEv(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+var __label__ = 0;
+	i7 = sp + 0;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r0 = r0 >> 2;
+	r1 = heap32[(r0+4)];
+	r0 = heap32[(r0+2)];
+	r0 = r1 >= r0;
+	r0 = r0 & 1;
+	r_g0 = r0;
+	return;
+}
+
+function _ZN10CFileCloud5fseekEli(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+var __label__ = 0;
+	i7 = sp + 0;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp+2)];
+	r1 = heap32[(fp)];
+	r2 = heap32[(fp+1)];
+_1: do {
+	if(r0 ==0) //_LBB780_4
+{
+	r1 = r1 >> 2;
+}
+else{
+	if(r0 ==1) //_LBB780_6
+{
+	r0 = r1 >> 2;
+	r1 = heap32[(r0+4)];
+	r1 = (r1 + r2)|0;
+	heap32[(r0+4)] = r1;
+}
+else{
+if(!(r0 !=2)) //_LBB780_7
+{
+	r1 = r1 >> 2;
+	r0 = heap32[(r1+2)];
+	r2 = (r0 + r2)|0;
+break _1;
+}
+}
+	r0 = 0;
+	r_g0 = r0;
+	return;
+}
+} while(0);
+	heap32[(r1+4)] = r2;
+	r1 = 0;
+	r_g0 = r1;
+	return;
+}
+
+function _ZN10CFileCloud6ungetcEi(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+var __label__ = 0;
+	i7 = sp + 0;var g0 = i7>>2; // save stack
+	r0 = -1;
+	r_g0 = r0;
+	return;
+}
+
+function __fwrite(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+var __label__ = 0;
+	i7 = sp + -16;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp+2)];
+	r1 = heap32[(fp)];
+	r2 = heap32[(fp+1)];
+if(!(uint(r0) >uint(9))) //_LBB782_2
+{
+	r0 = _ZL13s_file_stdout;
+}
+	r3 = r0 >> 2;
+	r3 = heap32[(r3)];
+	r3 = r3 >> 2;
+	r3 = heap32[(r3+2)];
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r1;
+	heap32[(g0+2)] = 1;
+	heap32[(g0+3)] = r2;
+	__FUNCTION_TABLE__[(r3)>>2](i7);
+	return;
+}
+
+function _ZN7CFileLS6fwriteEPKvjj(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+	var r6;
+var __label__ = 0;
+	i7 = sp + -16;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r0 = r0 >> 2;
+	r1 = heap32[(fp+3)];
+	r2 = heap32[(fp+2)];
+	r3 = heap32[(fp+1)];
+	r2 = (r1 * r2)|0;
+	r4 = heap32[(r0+4)];
+	r5 = (r4 + r2)|0;
+	r6 = heap32[(r0+3)];
+	if(r5 >r6) //_LBB783_2
+{
+	r4 = (r2 + r4)|0;
+	r4 = (r4 + 131072)|0;
+	heap32[(r0+3)] = r4;
+	r5 = heap32[(r0+6)];
+	heap32[(g0)] = r5;
+	heap32[(g0+1)] = r4;
+	realloc(i7);
+	r5 = r_g0;
+	heap32[(r0+6)] = r5;
+	r4 = heap32[(r0+4)];
+}
+else{
+	r5 = heap32[(r0+6)];
+}
+	r4 = (r5 + r4)|0;
+	heap32[(g0)] = r4;
+	heap32[(g0+1)] = r3;
+	heap32[(g0+2)] = r2;
+	memcpy(i7);
+	r3 = heap32[(r0+4)];
+	r2 = (r3 + r2)|0;
+	heap32[(r0+4)] = r2;
+	r3 = heap32[(r0+5)];
+if(!(r2 <=r3)) //_LBB783_5
+{
+	heap32[(r0+5)] = r2;
+}
+	r_g0 = r1;
+	return;
+}
+
+function _ZN7CFileLS6fflushEv(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+var __label__ = 0;
+	i7 = sp + -16;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = heapU8[r0+5];
+if(!(r1 ==0)) //_LBB784_2
+{
+	r1 = r0 >> 2;
+	r2 = heap32[(r1+5)];
+	r1 = heap32[(r1+6)];
+	r0 = (r0 + 28)|0;
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r1;
+	heap32[(g0+2)] = r2;
+	mandreel_writels(i7);
+}
+	r0 = 0;
+	r_g0 = r0;
+	return;
+}
+
+function _ZN7CFileLS6fcloseEv(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+var __label__ = 0;
+	i7 = sp + -16;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = heapU8[r0+5];
+if(!(r1 ==0)) //_LBB785_2
+{
+	r1 = r0 >> 2;
+	r2 = heap32[(r1+5)];
+	r1 = heap32[(r1+6)];
+	r3 = (r0 + 28)|0;
+	heap32[(g0)] = r3;
+	heap32[(g0+1)] = r1;
+	heap32[(g0+2)] = r2;
+	mandreel_writels(i7);
+}
+	r1 = 0;
+	r2 = r0 >> 2;
+	heap8[r0+4] = r1;
+	r0 = heap32[(r2+6)];
+	heap32[(g0)] = r0;
+	free(i7);
+	r_g0 = r1;
+	return;
+}
+
+function _ZN10CFileCloud6fwriteEPKvjj(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+	var r6;
+var __label__ = 0;
+	i7 = sp + -16;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r0 = r0 >> 2;
+	r1 = heap32[(fp+3)];
+	r2 = heap32[(fp+2)];
+	r3 = heap32[(fp+1)];
+	r2 = (r1 * r2)|0;
+	r4 = heap32[(r0+4)];
+	r5 = (r4 + r2)|0;
+	r6 = heap32[(r0+3)];
+	if(r5 >r6) //_LBB786_2
+{
+	r4 = (r2 + r4)|0;
+	r4 = (r4 + 131072)|0;
+	heap32[(r0+3)] = r4;
+	r5 = heap32[(r0+6)];
+	heap32[(g0)] = r5;
+	heap32[(g0+1)] = r4;
+	realloc(i7);
+	r5 = r_g0;
+	heap32[(r0+6)] = r5;
+	r4 = heap32[(r0+4)];
+}
+else{
+	r5 = heap32[(r0+6)];
+}
+	r4 = (r5 + r4)|0;
+	heap32[(g0)] = r4;
+	heap32[(g0+1)] = r3;
+	heap32[(g0+2)] = r2;
+	memcpy(i7);
+	r3 = heap32[(r0+4)];
+	r2 = (r3 + r2)|0;
+	heap32[(r0+4)] = r2;
+	r3 = heap32[(r0+5)];
+if(!(r2 <=r3)) //_LBB786_5
+{
+	heap32[(r0+5)] = r2;
+}
+	r_g0 = r1;
+	return;
+}
+
+function _ZN10CFileCloud6fflushEv(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+var __label__ = 0;
+	i7 = sp + -32;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = heapU8[r0+5];
+if(!(r1 ==0)) //_LBB787_2
+{
+	r1 = r0 >> 2;
+	r2 = heap32[(r1+5)];
+	r3 = r2 << 1;
+	heap32[(g0)] = r3;
+	malloc(i7);
+	r4 = r_g0;
+	r1 = heap32[(r1+6)];
+	r5 = sp + -4;
+	heap32[(g0)] = r1;
+	heap32[(g0+1)] = r2;
+	heap32[(g0+2)] = r4;
+	heap32[(g0+3)] = r3;
+	heap32[(g0+4)] = r5;
+	_ZN12mandreel_b64L11b64_encode_EPKhjPcjjPNS_6B64_RCE(i7);
+	r0 = (r0 + 28)|0;
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r4;
+	heap32[(g0+2)] = r_g0;
+	mandreel_writecloud(i7);
+	heap32[(g0)] = r4;
+	free(i7);
+}
+	r0 = 0;
+	r_g0 = r0;
+	return;
+}
+
+function _ZN10CFileCloud6fcloseEv(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+var __label__ = 0;
+	i7 = sp + -32;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = heapU8[r0+5];
+if(!(r1 ==0)) //_LBB788_2
+{
+	r1 = r0 >> 2;
+	r2 = heap32[(r1+5)];
+	r3 = r2 << 1;
+	heap32[(g0)] = r3;
+	malloc(i7);
+	r4 = r_g0;
+	r1 = heap32[(r1+6)];
+	r5 = sp + -4;
+	heap32[(g0)] = r1;
+	heap32[(g0+1)] = r2;
+	heap32[(g0+2)] = r4;
+	heap32[(g0+3)] = r3;
+	heap32[(g0+4)] = r5;
+	_ZN12mandreel_b64L11b64_encode_EPKhjPcjjPNS_6B64_RCE(i7);
+	r2 = (r0 + 28)|0;
+	heap32[(g0)] = r2;
+	heap32[(g0+1)] = r4;
+	heap32[(g0+2)] = r_g0;
+	mandreel_writecloud(i7);
+	heap32[(g0)] = r4;
+	free(i7);
+}
+	r1 = 0;
+	r2 = r0 >> 2;
+	heap8[r0+4] = r1;
+	r0 = heap32[(r2+6)];
+	heap32[(g0)] = r0;
+	free(i7);
+	r_g0 = r1;
+	return;
+}
+
+function __sync_val_compare_and_swap_4(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+var __label__ = 0;
+	i7 = sp + 0;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r0 = r0 >> 2;
+	r1 = heap32[(r0)];
+	r2 = heap32[(fp+1)];
+if(!(r1 !=r2)) //_LBB789_2
+{
+	r2 = heap32[(fp+2)];
+	heap32[(r0)] = r2;
+}
+	r_g0 = r1;
+	return;
+}
+
+function _ZN11CFileStdout6fwriteEPKvjj(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+	var r6;
+var __label__ = 0;
+	i7 = sp + -16392;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp+2)];
+	r1 = heap32[(fp+3)];
+	r0 = (r1 * r0)|0;
+	if(r0 !=0) //_LBB790_2
+{
+	r2 = heap32[(fp+1)];
+	r3 = sp + -16384;
+	r4 = r0;
+_3: while(true){
+	r5 = heapU8[r2];
+	r4 = (r4 + -1)|0;
+	r2 = (r2 + 1)|0;
+	r6 = (r3 + 1)|0;
+	heap8[r3] = r5;
+	r3 = r6;
+if(!(r4 !=0)) //_LBB790_3
+{
+break _3;
+}
+}
+	r2 = sp + -16384;
+	r0 = (r2 + r0)|0;
+}
+else{
+	r0 = sp + -16384;
+}
+	r2 = 0;
+	heap8[r0] = r2;
+	r0 = sp + -16384;
+	heap32[(g0)] = r0;
+	puts(i7);
+	r_g0 = r1;
+	return;
+}
+
+function fopen(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+	var r6;
+	var r7;
+	var r8;
+	var r9;
+	var r10;
+var __label__ = 0;
+	i7 = sp + -2064;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = heapU8[r0];
+	r2 = 46;
+	r3 = 92;
+	r4 = heapU8[r0+1];
+	r5 = 47;
+	r1 = r1 == r2;
+	r2 = r4 == r3;
+	r1 = r1 & r2;
+	r2 = r4 == r5;
+	r1 = r1 | r2;
+	r2 = (r0 + 1)|0;
+	r1 = r1 != 0 ? r2 : r0;
+	r2 = heapU8[r1];
+	r3 = heap32[(fp+1)];
+_1: do {
+	if(r2 !=0) //_LBB791_2
+{
+	r4 = sp + -2048;
+	r1 = (r1 + 1)|0;
+	r6 = 0;
+	r8 = 26;
+_3: while(true){
+	r7 = r2 & 255;
+	if(r7 ==47) //_LBB791_5
+{
+__label__ = 5;
+}
+else{
+	if(r7 !=92) //_LBB791_8
+{
+	r6 = r2 << 24;
+	r6 = r6 >> 24;
+	r7 = (r6 + -65)|0;
+	r9 = (r2 + 32)|0;
+	r10 = (r4 + 1)|0;
+	r6 = 0;
+	r2 = uint(r7) < uint(r8) ? r9 : r2;
+	heap8[r4] = r2;
+	r4 = r10;
+__label__ = 9;
+}
+else{
+__label__ = 5;
+}
+}
+if (__label__ == 5){
+	r2 = r6 & 255;
+	heap8[r4] = r5;
+	if(r2 ==0) //_LBB791_7
+{
+	r4 = (r4 + 1)|0;
+	r6 = 1;
+}
+else{
+	r6 = 1;
+}
+}
+	r2 = heapU8[r1];
+	if(r2 !=0) //_LBB791_11
+{
+	r1 = (r1 + 1)|0;
+continue _3;
+}
+else{
+break _1;
+}
+}
+}
+else{
+	r4 = sp + -2048;
+}
+} while(0);
+	r1 = 0;
+	heap8[r4] = r1;
+	r2 = sp + -2048;
+	r4 = _2E_str33679;
+	heap32[(g0)] = r2;
+	heap32[(g0+1)] = r4;
+	heap32[(g0+2)] = 4;
+	strncmp(i7);
+	r4 = r_g0;
+_17: do {
+	if(r4 !=0) //_LBB791_29
+{
+	r4 = _2E_str34680;
+	heap32[(g0)] = r2;
+	heap32[(g0+1)] = r4;
+	heap32[(g0+2)] = 4;
+	strncmp(i7);
+	r4 = r_g0;
+	if(r4 ==0) //_LBB791_31
+{
+	heap32[(g0)] = 0;
+	_Z30mandreel_fopen_enable_checkfatb(i7);
+	r0 = _2E_str31677;
+	heap32[(g0)] = r3;
+	heap32[(g0+1)] = r0;
+	strcmp(i7);
+	r0 = r_g0;
+_21: do {
+	if(r0 !=0) //_LBB791_33
+{
+	r0 = _2E_str4651;
+	heap32[(g0)] = r3;
+	heap32[(g0+1)] = r0;
+	strcmp(i7);
+	r0 = r_g0;
+	if(r0 ==0) //_LBB791_32
+{
+__label__ = 30;
+}
+else{
+	r0 = _2E_str5652;
+	heap32[(g0)] = r3;
+	heap32[(g0+1)] = r0;
+	strcmp(i7);
+	r0 = r_g0;
+	if(r0 !=0) //_LBB791_36
+{
+	r0 = _2E_str32678;
+	heap32[(g0)] = r3;
+	heap32[(g0+1)] = r0;
+	strcmp(i7);
+	r0 = r_g0;
+if(!(r0 ==0)) //_LBB791_35
+{
+	r4 = heapU8[r3];
+	r0 = 119;
+	r3 = 114;
+	r0 = r4 == r0;
+	r5 = r4 == r3;
+	r3 = r0 & 1;
+	r0 = r5 & 1;
+	if(r4 ==114) //_LBB791_39
+{
+__label__ = 36;
+break _21;
+}
+else{
+__label__ = 38;
+break _21;
+}
+}
+}
+	r0 = 1;
+	r1 = 0;
+	r3 = r0;
+__label__ = 38;
+}
+}
+else{
+__label__ = 30;
+}
+} while(0);
+if (__label__ == 30){
+	r0 = 1;
+	r3 = r0;
+__label__ = 36;
+}
+if (__label__ == 36){
+	heap32[(g0)] = r2;
+	mandreel_opencloud(i7);
+	r1 = r_g0;
+	if(r1 ==-1) //_LBB791_41
+{
+	r4 = 0;
+break _17;
+}
+}
+	heap32[(g0)] = 284;
+	_Znwj(i7);
+	r4 = r_g0;
+	r5 = _ZTV10CFileCloud;
+	r6 = r4 >> 2;
+	r5 = (r5 + 8)|0;
+	r7 = 1;
+	heap32[(r6)] = r5;
+	heap8[r4+4] = r7;
+	heap32[(r6+4)] = 0;
+	heap32[(r6+6)] = 0;
+	heap32[(r6+2)] = r1;
+	heap8[r4+5] = r3;
+	heap8[r4+6] = r0;
+	heap32[(r6+5)] = 0;
+	r0 = (r4 + 28)|0;
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r2;
+	strcpy(i7);
+	if(r1 ==0) //_LBB791_44
+{
+	r0 = r3 & 255;
+	if(r0 ==0) //_LBB791_46
+{
+break _17;
+}
+else{
+	r0 = r4 >> 2;
+	heap32[(r0+3)] = 131072;
+	heap32[(g0)] = 131072;
+	malloc(i7);
+	heap32[(r0+6)] = r_g0;
+}
+}
+else{
+	r3 = (r1 + 131072)|0;
+	r2 = r4 >> 2;
+	heap32[(r2+3)] = r3;
+	heap32[(g0)] = r3;
+	malloc(i7);
+	heap32[(r2+6)] = r_g0;
+	r3 = (r1 + 4)|0;
+	heap32[(g0)] = r3;
+	malloc(i7);
+	r3 = r_g0;
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r3;
+	heap32[(g0+2)] = r1;
+	mandreel_readcloud(i7);
+	r0 = heap32[(r2+3)];
+	r5 = heap32[(r2+6)];
+	heap32[(g0)] = r3;
+	heap32[(g0+1)] = r1;
+	heap32[(g0+2)] = r5;
+	heap32[(g0+3)] = r0;
+	_ZN12mandreel_b6410b64_decodeEPKcjPvj(i7);
+	r0 = r_g0;
+	heap32[(g0)] = r3;
+	free(i7);
+	heap32[(r2+2)] = r0;
+	heap32[(r2+5)] = r0;
+}
+}
+else{
+	r1 = r3;
+_39: while(true){
+	r4 = heapU8[r1];
+	if(r4 ==0) //_LBB791_51
+{
+__label__ = 46;
+break _39;
+}
+else{
+	if(r4 ==87) //_LBB791_50
+{
+__label__ = 45;
+break _39;
+}
+else{
+	r1 = (r1 + 1)|0;
+	if(r4 !=119) //_LBB791_47
+{
+__label__ = 42;
+}
+else{
+__label__ = 45;
+break _39;
+}
+}
+}
+}
+switch(__label__ ){//multiple entries
+case 46:
+	r0 = heapU8[sp+-2048];
+	if(r0 !=47) //_LBB791_53
+{
+	heap32[(g0)] = r2;
+	heap32[(g0+1)] = r3;
+	mandreel_fopen(i7);
+	r2 = r_g0;
+}
+else{
+	r2 = (r2 + 1)|0;
+	heap32[(g0)] = r2;
+	heap32[(g0+1)] = r3;
+	mandreel_fopen(i7);
+	r2 = r_g0;
+}
+	if(r2 ==0) //_LBB791_56
+{
+	r0 = 0;
+	r_g0 = r0;
+	return;
+}
+else{
+	heap32[(g0)] = 8;
+	r0 = _ZTV11CFileSystem;
+	_Znwj(i7);
+	r3 = r_g0 >> 2;
+	r0 = (r0 + 8)|0;
+	heap32[(r3)] = r0;
+	heap32[(r3+1)] = r2;
+	return;
+}
+break;
+case 45:
+	r2 = _2E_str35681;
+	heap32[(g0)] = r2;
+	heap32[(g0+1)] = r0;
+	heap32[(g0+2)] = r3;
+	printf(i7);
+	r2 = 0;
+	r_g0 = r2;
+	return;
+break;
+}
+}
+}
+else{
+	heap32[(g0)] = 0;
+	_Z30mandreel_fopen_enable_checkfatb(i7);
+	r0 = _2E_str31677;
+	heap32[(g0)] = r3;
+	heap32[(g0+1)] = r0;
+	strcmp(i7);
+	r0 = r_g0;
+_54: do {
+	if(r0 !=0) //_LBB791_15
+{
+	r0 = _2E_str4651;
+	heap32[(g0)] = r3;
+	heap32[(g0+1)] = r0;
+	strcmp(i7);
+	r0 = r_g0;
+	if(r0 ==0) //_LBB791_14
+{
+__label__ = 13;
+}
+else{
+	r0 = _2E_str5652;
+	heap32[(g0)] = r3;
+	heap32[(g0+1)] = r0;
+	strcmp(i7);
+	r0 = r_g0;
+	if(r0 !=0) //_LBB791_18
+{
+	r0 = _2E_str32678;
+	heap32[(g0)] = r3;
+	heap32[(g0+1)] = r0;
+	strcmp(i7);
+	r0 = r_g0;
+if(!(r0 ==0)) //_LBB791_17
+{
+	r3 = heapU8[r3];
+	r0 = 119;
+	r1 = 114;
+	r0 = r3 == r0;
+	r4 = r3 == r1;
+	r1 = r0 & 1;
+	r0 = r4 & 1;
+	if(r3 ==114) //_LBB791_21
+{
+__label__ = 20;
+break _54;
+}
+else{
+	r3 = 0;
+__label__ = 22;
+break _54;
+}
+}
+}
+	r0 = 1;
+	r3 = 0;
+	r1 = r0;
+__label__ = 22;
+}
+}
+else{
+__label__ = 13;
+}
+} while(0);
+if (__label__ == 13){
+	r0 = 1;
+	r1 = r0;
+__label__ = 20;
+}
+if (__label__ == 20){
+	heap32[(g0)] = r2;
+	mandreel_openls(i7);
+	r3 = r_g0;
+	if(r3 ==-1) //_LBB791_23
+{
+	r4 = 0;
+break _17;
+}
+}
+	heap32[(g0)] = 284;
+	_Znwj(i7);
+	r4 = r_g0;
+	r5 = _ZTV7CFileLS;
+	r6 = r4 >> 2;
+	r5 = (r5 + 8)|0;
+	r7 = 1;
+	heap32[(r6)] = r5;
+	heap8[r4+4] = r7;
+	heap32[(r6+4)] = 0;
+	heap32[(r6+6)] = 0;
+	heap32[(r6+2)] = r3;
+	heap8[r4+5] = r1;
+	heap8[r4+6] = r0;
+	heap32[(r6+5)] = 0;
+	r0 = (r4 + 28)|0;
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r2;
+	strcpy(i7);
+	if(r3 ==0) //_LBB791_26
+{
+	r0 = r1 & 255;
+if(!(r0 ==0)) //_LBB791_28
+{
+	r0 = r4 >> 2;
+	heap32[(r0+3)] = 131072;
+	heap32[(g0)] = 131072;
+	malloc(i7);
+	heap32[(r0+6)] = r_g0;
+}
+}
+else{
+	r1 = (r3 + 131072)|0;
+	r2 = r4 >> 2;
+	heap32[(r2+3)] = r1;
+	heap32[(g0)] = r1;
+	malloc(i7);
+	heap32[(r2+6)] = r_g0;
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r_g0;
+	heap32[(g0+2)] = r3;
+	mandreel_readls(i7);
+	heap32[(r2+5)] = r3;
+}
+}
+} while(0);
+	heap32[(g0)] = 1;
+	_Z30mandreel_fopen_enable_checkfatb(i7);
+	r_g0 = r4;
+	return;
+}
+
+function strtoul(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+	var r6;
+	var r7;
+	var r8;
+	var r9;
+	var r10;
+	var r11;
+var __label__ = 0;
+	i7 = sp + 0;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = heap8[r0];
+	r2 = r1 << 2;
+	r3 = my_ctype;
+	r2 = (r2 + r3)|0;
+	r4 = heap32[(fp+1)];
+	r2 = heapU8[r2+4];
+	r2 = r2 & 8;
+	if(r2 ==0) //_LBB792_2
+{
+	r2 = r0;
+}
+else{
+	r2 = r0;
+_4: while(true){
+	r1 = heap8[r2+1];
+	r5 = r1 << 2;
+	r5 = (r5 + r3)|0;
+	r2 = (r2 + 1)|0;
+	r5 = heapU8[r5+4];
+	r5 = r5 & 8;
+	if(r5 !=0) //_LBB792_3
+{
+continue _4;
+}
+else{
+break _4;
+}
+}
+}
+	r1 = r1 & 255;
+	if(r1 ==43) //_LBB792_8
+{
+	r2 = (r2 + 1)|0;
+	r1 = 0;
+}
+else{
+	if(r1 ==45) //_LBB792_7
+{
+	r2 = (r2 + 1)|0;
+	r1 = 1;
+}
+else{
+	r1 = 0;
+}
+}
+	r3 = 0;
+	r5 = r3;
+	r6 = r3;
+	r11 = -1;
+_14: while(true){
+	r8 = (r2 - r3)|0;
+	r7 = heapU8[r8];
+	if(r7 ==0) //_LBB792_14
+{
+break _14;
+}
+else{
+	if(uint(r7) <uint(65)) //_LBB792_10
+{
+	r9 = r7 & 255;
+	r10 = 58;
+	r7 = (r7 + -48)|0;
+	r7 = uint(r9) < uint(r10) ? r7 : r11;
+	r7 = r7 & 255;
+	if(uint(r7) >uint(9)) //_LBB792_14
+{
+break _14;
+}
+else{
+	r8 = r6 & 255;
+	r8 = (r8 * 10)|0;
+	r7 = (r7 + r8)|0;
+	r6 = r6 >>> 8;
+	r8 = r7 >>> 8;
+	r6 = (r6 * 10)|0;
+	r6 = (r8 + r6)|0;
+	r8 = 16777215;
+	r9 = 1;
+	r10 = r6 << 8;
+	r7 = r7 & 255;
+	r5 = uint(r6) > uint(r8) ? r9 : r5;
+	r6 = r10 | r7;
+	r3 = (r3 + -1)|0;
+continue _14;
+}
+}
+else{
+break _14;
+}
+}
+}
+	if(r3 ==0) //_LBB792_16
+{
+	_errno(i7);
+	r6 = 0;
+	r8 = r_g0 >> 2;
+	heap32[(r8)] = 22;
+	r8 = r0;
+}
+if(!(r4 ==0)) //_LBB792_19
+{
+	r0 = r4 >> 2;
+	heap32[(r0)] = r8;
+}
+	if(r5 ==0) //_LBB792_21
+{
+	r0 = 0;
+	r0 = (r0 - r6)|0;
+	r0 = r1 == 0 ? r6 : r0;
+	r_g0 = r0;
+	return;
+}
+else{
+	_errno(i7);
+	r1 = r_g0 >> 2;
+	heap32[(r1)] = 34;
+	r1 = -1;
+	r_g0 = r1;
+	return;
+}
+}
+
+function strtol(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+var __label__ = 0;
+	i7 = sp + -8;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = heap8[r0];
+	r2 = r1 << 2;
+	r3 = my_ctype;
+	r2 = (r2 + r3)|0;
+	r4 = heap32[(fp+1)];
+	r2 = heapU8[r2+4];
+	r2 = r2 & 8;
+	if(r2 ==0) //_LBB793_2
+{
+	r2 = r0;
+}
+else{
+	r2 = r0;
+_4: while(true){
+	r1 = heap8[r2+1];
+	r5 = r1 << 2;
+	r5 = (r5 + r3)|0;
+	r2 = (r2 + 1)|0;
+	r5 = heapU8[r5+4];
+	r5 = r5 & 8;
+	if(r5 !=0) //_LBB793_3
+{
+continue _4;
+}
+else{
+break _4;
+}
+}
+}
+	r1 = r1 & 255;
+	if(r1 ==45) //_LBB793_6
+{
+	r1 = heap8[r2+1];
+	r1 = r1 << 2;
+	r3 = (r1 + r3)|0;
+	r3 = heapU16[(r3+4)>>1];
+	r3 = r3 & 263;
+	if(r3 ==0) //_LBB793_5
+{
+__label__ = 5;
+}
+else{
+	r2 = (r2 + 1)|0;
+	r3 = -1;
+__label__ = 8;
+}
+}
+else{
+__label__ = 5;
+}
+if (__label__ == 5){
+	r3 = 0;
+}
+	heap32[(g0)] = r2;
+	heap32[(g0+1)] = r4;
+	strtoul(i7);
+	r1 = r_g0;
+if(!(r4 ==0)) //_LBB793_11
+{
+	r4 = r4 >> 2;
+	r5 = heap32[(r4)];
+if(!(r5 !=r2)) //_LBB793_11
+{
+	heap32[(r4)] = r0;
+}
+}
+	if(r1 >-1) //_LBB793_16
+{
+	r0 = 0;
+	r0 = (r0 - r1)|0;
+	r0 = r3 == 0 ? r1 : r0;
+	r_g0 = r0;
+	return;
+}
+else{
+	_errno(i7);
+	r0 = r_g0;
+if(!(r1 !=-2147483648)) //_LBB793_15
+{
+if(!(r3 ==0)) //_LBB793_15
+{
+	r0 = r0 >> 2;
+	heap32[(r0)] = 0;
+	r_g0 = r1;
+	return;
+}
+}
+	r1 = r0 >> 2;
+	r0 = 2147483647;
+	r2 = -2147483648;
+	heap32[(r1)] = 34;
+	r1 = r3 == 0 ? r0 : r2;
+	r_g0 = r1;
+	return;
+}
+}
+
+function __floatundidf(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+	var r6;
+	var f0;
+var __label__ = 0;
+	i7 = sp + -24;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = heap32[(fp+1)];
+	r2 = r0 | r1;
+	if(r2 ==0) //_LBB794_12
+{
+	f0 =                         0;
+	f_g0 = f0;
+	return;
+}
+else{
+	r2 = r0 >>> 1;
+	r3 = r1 >>> 1;
+	r2 = r0 | r2;
+	r3 = r1 | r3;
+	r4 = r2 >>> 2;
+	r5 = r3 >>> 2;
+	r2 = r2 | r4;
+	r3 = r3 | r5;
+	r4 = r2 >>> 4;
+	r5 = r3 >>> 4;
+	r2 = r2 | r4;
+	r3 = r3 | r5;
+	r4 = r2 >>> 8;
+	r5 = r3 >>> 8;
+	r2 = r2 | r4;
+	r3 = r3 | r5;
+	r4 = r2 >>> 16;
+	r5 = r3 >>> 16;
+	r2 = r2 | r4;
+	r3 = r3 | r5;
+	r4 = r2 ^ -1;
+	r5 = 1431655765;
+	r6 = r3 ^ -1;
+	r4 = r4 >>> 1;
+	r6 = r6 >>> 1;
+	r2 = r5 & (~r2);
+	r4 = r4 & 1431655765;
+	r2 = (r2 + r4)|0;
+	r3 = r5 & (~r3);
+	r4 = r6 & 1431655765;
+	r3 = (r3 + r4)|0;
+	r4 = r2 >>> 2;
+	r5 = r3 >>> 2;
+	r2 = r2 & 858993459;
+	r4 = r4 & 858993459;
+	r2 = (r2 + r4)|0;
+	r3 = r3 & 858993459;
+	r4 = r5 & 858993459;
+	r3 = (r3 + r4)|0;
+	r4 = r2 >>> 4;
+	r5 = r3 >>> 4;
+	r2 = r2 & 252645135;
+	r4 = r4 & 252645135;
+	r2 = (r2 + r4)|0;
+	r3 = r3 & 252645135;
+	r4 = r5 & 252645135;
+	r3 = (r3 + r4)|0;
+	r4 = r2 >>> 8;
+	r5 = r3 >>> 8;
+	r2 = r2 & 16711935;
+	r4 = r4 & 16711935;
+	r2 = (r2 + r4)|0;
+	r3 = r3 & 16711935;
+	r4 = r5 & 16711935;
+	r3 = (r3 + r4)|0;
+	r4 = r2 & 65535;
+	r2 = r2 >>> 16;
+	r2 = (r4 + r2)|0;
+	r4 = r3 & 65535;
+	r3 = r3 >>> 16;
+	r3 = (r4 + r3)|0;
+	r2 = (r2 + 32)|0;
+	r4 = 64;
+	r2 = r1 != 0 ? r3 : r2;
+	r3 = 63;
+	r4 = (r4 - r2)|0;
+	r2 = (r3 - r2)|0;
+	if(r4 <54) //_LBB794_10
+{
+	r3 = 53;
+	r3 = (r3 - r4)|0;
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r1;
+	heap32[(g0+2)] = r3;
+	__ashldi3(i7);
+	r3 = r_g0;
+	r1 = r_g1;
+}
+else{
+	if(r4 ==54) //_LBB794_5
+{
+	r1 = r1 << 1;
+	r3 = r0 >>> 31;
+	r0 = r0 << 1;
+	r1 = r1 | r3;
+}
+else{
+	if(r4 !=55) //_LBB794_6
+{
+	r3 = (r4 + -55)|0;
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r1;
+	heap32[(g0+2)] = r3;
+	__lshrdi3(i7);
+	r3 = r_g0;
+	r5 = r_g1;
+	r6 = 119;
+	r6 = (r6 - r4)|0;
+	heap32[(g0)] = -1;
+	heap32[(g0+1)] = -1;
+	heap32[(g0+2)] = r6;
+	__lshrdi3(i7);
+	r0 = r_g0 & r0;
+	r1 = r_g1 & r1;
+	r0 = r0 | r1;
+	r1 = 0;
+	r0 = r0 != r1;
+	r0 = r0 & 1;
+	r0 = r0 | r3;
+	r1 = r5;
+}
+}
+	r3 = r0 >>> 2;
+	r3 = r3 & 1;
+	r0 = r3 | r0;
+	r3 = (r0 + 1)|0;
+	r5 = 1;
+	r6 = 0;
+	r0 = uint(r3) < uint(r0) ? r5 : r6;
+	r0 = r3 == 0 ? r5 : r0;
+	r0 = (r1 + r0)|0;
+	r1 = r0 >>> 2;
+	r5 = r1 & 2097152;
+	if(r5 !=0) //_LBB794_9
+{
+	r1 = r3 >>> 3;
+	r2 = r0 << 29;
+	r3 = r1 | r2;
+	r1 = r0 >>> 3;
+	r2 = r4;
+}
+else{
+	r3 = r3 >>> 2;
+	r0 = r0 << 30;
+	r3 = r3 | r0;
+}
+}
+	r0 = r2 << 20;
+	r2 = sp + -8;
+	r1 = r1 & 1048575;
+	r0 = (r0 + 1072693248)|0;
+	r2 = r2 >> 2;
+	r0 = r1 | r0;
+	heap32[(fp+-2)] = r3;
+	heap32[(r2+1)] = r0;
+	f0 = llvm_readDouble((sp+-8));
+	f_g0 = f0;
+	return;
+}
+}
+
+function __udivmoddi4(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+	var r6;
+	var r7;
+	var r8;
+	var r9;
+	var r10;
+	var r11;
+	var r12;
+	var r13;
+	var r14;
+	var r15;
+	var r16;
+	var r17;
+	var r18;
+var __label__ = 0;
+	i7 = sp + 0;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp+1)];
+	r1 = heap32[(fp+4)];
+	r2 = heap32[(fp)];
+	r3 = heap32[(fp+2)];
+	r4 = heap32[(fp+3)];
+_1: do {
+	if(r0 !=0) //_LBB795_10
+{
+_3: do {
+	if(r3 !=0) //_LBB795_27
+{
+	if(r4 !=0) //_LBB795_34
+{
+	r5 = r4 >>> 1;
+	r6 = r0 >>> 1;
+	r5 = r4 | r5;
+	r6 = r0 | r6;
+	r7 = r5 >>> 2;
+	r9 = r6 >>> 2;
+	r5 = r5 | r7;
+	r6 = r6 | r9;
+	r7 = r5 >>> 4;
+	r9 = r6 >>> 4;
+	r5 = r5 | r7;
+	r6 = r6 | r9;
+	r7 = r5 >>> 8;
+	r9 = r6 >>> 8;
+	r5 = r5 | r7;
+	r6 = r6 | r9;
+	r7 = r5 >>> 16;
+	r9 = r6 >>> 16;
+	r5 = r5 | r7;
+	r6 = r6 | r9;
+	r7 = r5 ^ -1;
+	r9 = r6 ^ -1;
+	r8 = 1431655765;
+	r7 = r7 >>> 1;
+	r9 = r9 >>> 1;
+	r5 = r8 & (~r5);
+	r7 = r7 & 1431655765;
+	r6 = r8 & (~r6);
+	r9 = r9 & 1431655765;
+	r5 = (r5 + r7)|0;
+	r6 = (r6 + r9)|0;
+	r7 = r5 >>> 2;
+	r9 = r6 >>> 2;
+	r5 = r5 & 858993459;
+	r7 = r7 & 858993459;
+	r6 = r6 & 858993459;
+	r9 = r9 & 858993459;
+	r5 = (r5 + r7)|0;
+	r6 = (r6 + r9)|0;
+	r7 = r5 >>> 4;
+	r9 = r6 >>> 4;
+	r5 = r5 & 252645135;
+	r7 = r7 & 252645135;
+	r6 = r6 & 252645135;
+	r9 = r9 & 252645135;
+	r5 = (r5 + r7)|0;
+	r6 = (r6 + r9)|0;
+	r7 = r5 >>> 8;
+	r9 = r6 >>> 8;
+	r5 = r5 & 16711935;
+	r7 = r7 & 16711935;
+	r6 = r6 & 16711935;
+	r9 = r9 & 16711935;
+	r5 = (r5 + r7)|0;
+	r6 = (r6 + r9)|0;
+	r7 = r5 & 65535;
+	r5 = r5 >>> 16;
+	r9 = r6 & 65535;
+	r6 = r6 >>> 16;
+	r5 = (r7 + r5)|0;
+	r6 = (r9 + r6)|0;
+	r5 = (r5 - r6)|0;
+	if(uint(r5) <uint(32)) //_LBB795_37
+{
+	r6 = 31;
+	r7 = (r5 + 1)|0;
+	r9 = (r5 + -31)|0;
+	r5 = (r6 - r5)|0;
+	r6 = r2 >>> r7;
+	r8 = r9 >> 31;
+	r10 = r0 >>> r7;
+	r6 = r6 & r8;
+	r0 = r0 << r5;
+	r9 = 0;
+	r2 = r2 << r5;
+	r5 = r6 | r0;
+	r6 = r10 & r8;
+__label__ = 39;
+break _3;
+}
+else{
+	if(r1 ==0) //_LBB795_7
+{
+__label__ = 7;
+break _1;
+}
+else{
+	r5 = r1 >> 2;
+	heap32[(r5)] = r2;
+	heap32[(r5+1)] = r0;
+	r2 = 0;
+	r_g0 = r2;
+	r_g1 = r2;
+	return;
+}
+}
+}
+else{
+	r5 = (r3 + -1)|0;
+	r6 = r5 & r3;
+	if(r6 !=0) //_LBB795_38
+{
+	r5 = r3 >>> 1;
+	r6 = r0 >>> 1;
+	r5 = r3 | r5;
+	r6 = r0 | r6;
+	r7 = r5 >>> 2;
+	r9 = r6 >>> 2;
+	r5 = r5 | r7;
+	r6 = r6 | r9;
+	r7 = r5 >>> 4;
+	r9 = r6 >>> 4;
+	r5 = r5 | r7;
+	r6 = r6 | r9;
+	r7 = r5 >>> 8;
+	r9 = r6 >>> 8;
+	r5 = r5 | r7;
+	r6 = r6 | r9;
+	r7 = r5 >>> 16;
+	r9 = r6 >>> 16;
+	r5 = r5 | r7;
+	r6 = r6 | r9;
+	r7 = r5 ^ -1;
+	r9 = r6 ^ -1;
+	r8 = 1431655765;
+	r7 = r7 >>> 1;
+	r9 = r9 >>> 1;
+	r5 = r8 & (~r5);
+	r7 = r7 & 1431655765;
+	r6 = r8 & (~r6);
+	r9 = r9 & 1431655765;
+	r5 = (r5 + r7)|0;
+	r6 = (r6 + r9)|0;
+	r7 = r5 >>> 2;
+	r9 = r6 >>> 2;
+	r5 = r5 & 858993459;
+	r7 = r7 & 858993459;
+	r6 = r6 & 858993459;
+	r9 = r9 & 858993459;
+	r5 = (r5 + r7)|0;
+	r6 = (r6 + r9)|0;
+	r7 = r5 >>> 4;
+	r9 = r6 >>> 4;
+	r5 = r5 & 252645135;
+	r7 = r7 & 252645135;
+	r6 = r6 & 252645135;
+	r9 = r9 & 252645135;
+	r5 = (r5 + r7)|0;
+	r6 = (r6 + r9)|0;
+	r7 = r5 >>> 8;
+	r9 = r6 >>> 8;
+	r5 = r5 & 16711935;
+	r7 = r7 & 16711935;
+	r6 = r6 & 16711935;
+	r9 = r9 & 16711935;
+	r5 = (r5 + r7)|0;
+	r6 = (r6 + r9)|0;
+	r7 = r5 & 65535;
+	r5 = r5 >>> 16;
+	r9 = r6 & 65535;
+	r6 = r6 >>> 16;
+	r5 = (r7 + r5)|0;
+	r6 = (r9 + r6)|0;
+	r5 = (r5 - r6)|0;
+	r6 = 31;
+	r7 = (r5 + 33)|0;
+	r9 = r5 ^ -1;
+	r8 = (r5 + 1)|0;
+	r6 = (r6 - r5)|0;
+	r10 = -2;
+	r10 = (r10 - r5)|0;
+	r11 = r0 << r6;
+	r12 = r2 >>> r8;
+	r13 = r2 >>> r7;
+	r14 = r0 << r9;
+	r11 = r11 | r12;
+	r12 = r9 >> 31;
+	r9 = r2 << r9;
+	r5 = r5 >> 31;
+	r13 = r13 | r14;
+	r14 = r8 >> 31;
+	r8 = r0 >>> r8;
+	r10 = r10 >> 31;
+	r2 = r2 << r6;
+	r0 = r0 >>> r7;
+	r6 = r11 & r12;
+	r5 = r9 & r5;
+	r11 = r13 & r14;
+	r8 = r8 & r10;
+	r9 = r2 & r12;
+	r2 = r6 | r5;
+	r5 = r11 | r8;
+	r6 = r0 & r14;
+	if(r7 ==0) //_LBB795_40
+{
+	r0 = 0;
+	r3 = r0;
+__label__ = 42;
+break _3;
+}
+else{
+__label__ = 39;
+break _3;
+}
+}
+else{
+if(!(r1 ==0)) //_LBB795_31
+{
+	r1 = r1 >> 2;
+	r4 = r5 & r2;
+	heap32[(r1)] = r4;
+	heap32[(r1+1)] = 0;
+}
+	if(r3 !=1) //_LBB795_33
+{
+	r1 = r5 & (~r3);
+	r3 = r1 >>> 1;
+	r1 = r1 & 1431655765;
+	r3 = r3 & 1431655765;
+	r1 = (r1 + r3)|0;
+	r3 = r1 >>> 2;
+	r1 = r1 & 858993459;
+	r3 = r3 & 858993459;
+	r1 = (r1 + r3)|0;
+	r3 = r1 >>> 4;
+	r1 = r1 & 252645135;
+	r3 = r3 & 252645135;
+	r1 = (r1 + r3)|0;
+	r3 = r1 >>> 8;
+	r1 = r1 & 16711935;
+	r3 = r3 & 16711935;
+	r1 = (r1 + r3)|0;
+	r3 = r1 & 65535;
+	r1 = r1 >>> 16;
+	r1 = (r3 + r1)|0;
+	r3 = 32;
+	r3 = (r3 - r1)|0;
+	r3 = r0 << r3;
+	r2 = r2 >>> r1;
+	r2 = r3 | r2;
+	r0 = r0 >>> r1;
+__label__ = 44;
+break _1;
+}
+else{
+__label__ = 44;
+break _1;
+}
+}
+}
+}
+else{
+	if(r4 !=0) //_LBB795_15
+{
+	if(r2 !=0) //_LBB795_19
+{
+	r5 = (r4 + -1)|0;
+	r6 = r5 & r4;
+	if(r6 !=0) //_LBB795_23
+{
+	r5 = r4 >>> 1;
+	r6 = r0 >>> 1;
+	r5 = r4 | r5;
+	r6 = r0 | r6;
+	r7 = r5 >>> 2;
+	r8 = r6 >>> 2;
+	r5 = r5 | r7;
+	r6 = r6 | r8;
+	r7 = r5 >>> 4;
+	r8 = r6 >>> 4;
+	r5 = r5 | r7;
+	r6 = r6 | r8;
+	r7 = r5 >>> 8;
+	r8 = r6 >>> 8;
+	r5 = r5 | r7;
+	r6 = r6 | r8;
+	r7 = r5 >>> 16;
+	r8 = r6 >>> 16;
+	r5 = r5 | r7;
+	r6 = r6 | r8;
+	r7 = r5 ^ -1;
+	r8 = r6 ^ -1;
+	r9 = 1431655765;
+	r7 = r7 >>> 1;
+	r8 = r8 >>> 1;
+	r5 = r9 & (~r5);
+	r7 = r7 & 1431655765;
+	r6 = r9 & (~r6);
+	r8 = r8 & 1431655765;
+	r5 = (r5 + r7)|0;
+	r6 = (r6 + r8)|0;
+	r7 = r5 >>> 2;
+	r8 = r6 >>> 2;
+	r5 = r5 & 858993459;
+	r7 = r7 & 858993459;
+	r6 = r6 & 858993459;
+	r8 = r8 & 858993459;
+	r5 = (r5 + r7)|0;
+	r6 = (r6 + r8)|0;
+	r7 = r5 >>> 4;
+	r8 = r6 >>> 4;
+	r5 = r5 & 252645135;
+	r7 = r7 & 252645135;
+	r6 = r6 & 252645135;
+	r8 = r8 & 252645135;
+	r5 = (r5 + r7)|0;
+	r6 = (r6 + r8)|0;
+	r7 = r5 >>> 8;
+	r8 = r6 >>> 8;
+	r5 = r5 & 16711935;
+	r7 = r7 & 16711935;
+	r6 = r6 & 16711935;
+	r8 = r8 & 16711935;
+	r5 = (r5 + r7)|0;
+	r6 = (r6 + r8)|0;
+	r7 = r5 & 65535;
+	r5 = r5 >>> 16;
+	r8 = r6 & 65535;
+	r6 = r6 >>> 16;
+	r5 = (r7 + r5)|0;
+	r6 = (r8 + r6)|0;
+	r5 = (r5 - r6)|0;
+	if(uint(r5) <uint(31)) //_LBB795_26
+{
+	r6 = 31;
+	r7 = (r5 + 1)|0;
+	r5 = (r6 - r5)|0;
+	r6 = r0 << r5;
+	r8 = r2 >>> r7;
+	r9 = 0;
+	r2 = r2 << r5;
+	r5 = r6 | r8;
+	r6 = r0 >>> r7;
+__label__ = 39;
+break _3;
+}
+else{
+	if(r1 ==0) //_LBB795_7
+{
+__label__ = 7;
+break _1;
+}
+else{
+	r1 = r1 >> 2;
+	heap32[(r1)] = r2;
+	heap32[(r1+1)] = r0;
+__label__ = 9;
+break _1;
+}
+}
+}
+else{
+if(!(r1 ==0)) //_LBB795_22
+{
+	r1 = r1 >> 2;
+	r3 = r5 & r0;
+	heap32[(r1)] = r2;
+	heap32[(r1+1)] = r3;
+}
+	r1 = (r4 + -1)|0;
+	r1 = r1 & (~r4);
+	r2 = r1 >>> 1;
+	r1 = r1 & 1431655765;
+	r2 = r2 & 1431655765;
+	r1 = (r1 + r2)|0;
+	r2 = r1 >>> 2;
+	r1 = r1 & 858993459;
+	r2 = r2 & 858993459;
+	r1 = (r1 + r2)|0;
+	r2 = r1 >>> 4;
+	r1 = r1 & 252645135;
+	r2 = r2 & 252645135;
+	r1 = (r1 + r2)|0;
+	r2 = r1 >>> 8;
+	r1 = r1 & 16711935;
+	r2 = r2 & 16711935;
+	r1 = (r1 + r2)|0;
+	r2 = r1 & 65535;
+	r1 = r1 >>> 16;
+	r1 = (r2 + r1)|0;
+	r0 = r0 >>> r1;
+__label__ = 5;
+break _1;
+}
+}
+else{
+if(!(r1 ==0)) //_LBB795_18
+{
+	r1 = r1 >> 2;
+	r2 = Math.floor(uint(r0) % uint(r4));
+	heap32[(r1)] = 0;
+	heap32[(r1+1)] = r2;
+}
+	r0 = Math.floor(uint(r0) /uint(r4));
+__label__ = 5;
+break _1;
+}
+}
+else{
+if(!(r1 ==0)) //_LBB795_14
+{
+	r1 = r1 >> 2;
+	r2 = Math.floor(uint(r0) % uint(r3));
+	heap32[(r1)] = r2;
+	heap32[(r1+1)] = 0;
+}
+	r0 = Math.floor(uint(r0) /uint(r3));
+__label__ = 5;
+break _1;
+}
+}
+} while(0);
+if (__label__ == 39){
+	r8 = (r3 + -1)|0;
+	r10 = 0;
+	r11 = 1;
+	r0 = uint(r8) < uint(r3) ? r11 : r10;
+	r0 = r3 != 0 ? r11 : r0;
+	r0 = (r4 + r0)|0;
+	r12 = (r0 + -1)|0;
+	r13 = r10;
+_45: while(true){
+	r0 = r5 << 1;
+	r14 = r2 >>> 31;
+	r6 = r6 << 1;
+	r5 = r5 >>> 31;
+	r14 = r0 | r14;
+	r0 = r6 | r5;
+	r5 = (r12 - r0)|0;
+	r6 = uint(r8) < uint(r14) ? r11 : r10;
+	r5 = (r5 - r6)|0;
+	r5 = r5 >> 31;
+	r6 = r5 & r3;
+	r15 = r5 & r4;
+	r16 = r9 << 1;
+	r2 = r2 << 1;
+	r17 = r9 >>> 31;
+	r15 = (r0 - r15)|0;
+	r18 = uint(r14) < uint(r6) ? r11 : r10;
+	r7 = (r7 + -1)|0;
+	r0 = r5 & 1;
+	r9 = r13 | r16;
+	r2 = r2 | r17;
+	r5 = (r14 - r6)|0;
+	r6 = (r15 - r18)|0;
+	r13 = r0;
+if(!(r7 !=0)) //_LBB795_42
+{
+break _45;
+}
+}
+	r3 = 0;
+}
+	r2 = r2 << 1;
+	r4 = r9 >>> 31;
+	r7 = r9 << 1;
+	r4 = r2 | r4;
+	r2 = r0 | r7;
+	r0 = r3 | r4;
+	if(r1 !=0) //_LBB795_46
+{
+	r1 = r1 >> 2;
+	heap32[(r1)] = r5;
+	heap32[(r1+1)] = r6;
+__label__ = 44;
+break _1;
+}
+else{
+__label__ = 44;
+break _1;
+}
+}
+else{
+	if(r4 !=0) //_LBB795_6
+{
+	if(r1 !=0) //_LBB795_8
+{
+	r0 = r1 >> 2;
+	heap32[(r0)] = r2;
+	heap32[(r0+1)] = 0;
+__label__ = 9;
+break _1;
+}
+else{
+__label__ = 7;
+break _1;
+}
+}
+else{
+if(!(r1 ==0)) //_LBB795_4
+{
+	r0 = r1 >> 2;
+	r1 = Math.floor(uint(r2) % uint(r3));
+	heap32[(r0)] = r1;
+	heap32[(r0+1)] = 0;
+}
+	r0 = Math.floor(uint(r2) /uint(r3));
+__label__ = 5;
+}
+}
+} while(0);
+switch(__label__ ){//multiple entries
+case 7:
+	r2 = 0;
+	r0 = r2;
+break;
+case 9:
+	r0 = 0;
+	r_g0 = r0;
+	r_g1 = r0;
+	return;
+break;
+case 5:
+	r1 = 0;
+	r_g0 = r0;
+	r_g1 = r1;
+	return;
+break;
+}
+	r_g0 = r2;
+	r_g1 = r0;
+	return;
+}
+
+function __umoddi3(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+var __label__ = 0;
+	i7 = sp + -32;var g0 = i7>>2; // save stack
+	r0 = sp + -8;
+	r1 = heap32[(fp)];
+	r2 = heap32[(fp+1)];
+	r3 = heap32[(fp+2)];
+	r4 = heap32[(fp+3)];
+	heap32[(g0)] = r1;
+	heap32[(g0+1)] = r2;
+	heap32[(g0+2)] = r3;
+	heap32[(g0+3)] = r4;
+	heap32[(g0+4)] = r0;
+	__udivmoddi4(i7);
+	r0 = r0 >> 2;
+	r1 = heap32[(fp+-2)];
+	r0 = heap32[(r0+1)];
+	r_g0 = r1;
+	r_g1 = r0;
+	return;
+}
+
+function __moddi3(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+	var r6;
+	var r7;
+	var r8;
+	var r9;
+	var r10;
+var __label__ = 0;
+	i7 = sp + -32;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp+3)];
+	r1 = heap32[(fp+1)];
+	r2 = r0 >> 31;
+	r3 = heap32[(fp+2)];
+	r4 = r1 >> 31;
+	r5 = heap32[(fp)];
+	r1 = r4 ^ r1;
+	r5 = r4 ^ r5;
+	r0 = r2 ^ r0;
+	r3 = r2 ^ r3;
+	r6 = 1;
+	r7 = 0;
+	r1 = (r1 - r4)|0;
+	r8 = uint(r5) < uint(r4) ? r6 : r7;
+	r0 = (r0 - r2)|0;
+	r9 = uint(r3) < uint(r2) ? r6 : r7;
+	r10 = sp + -8;
+	r5 = (r5 - r4)|0;
+	r1 = (r1 - r8)|0;
+	r2 = (r3 - r2)|0;
+	r0 = (r0 - r9)|0;
+	heap32[(g0)] = r5;
+	heap32[(g0+1)] = r1;
+	heap32[(g0+2)] = r2;
+	heap32[(g0+3)] = r0;
+	heap32[(g0+4)] = r10;
+	__udivmoddi4(i7);
+	r0 = r10 >> 2;
+	r0 = heap32[(r0+1)];
+	r1 = heap32[(fp+-2)];
+	r1 = r1 ^ r4;
+	r0 = r0 ^ r4;
+	r0 = (r0 - r4)|0;
+	r2 = uint(r1) < uint(r4) ? r6 : r7;
+	r1 = (r1 - r4)|0;
+	r0 = (r0 - r2)|0;
+	r_g0 = r1;
+	r_g1 = r0;
+	return;
+}
+
+function __divdi3(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+	var r6;
+	var r7;
+	var r8;
+	var r9;
+	var r10;
+	var r11;
+var __label__ = 0;
+	i7 = sp + -24;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp+3)];
+	r1 = heap32[(fp+1)];
+	r2 = r1 >> 31;
+	r3 = heap32[(fp)];
+	r4 = r0 >> 31;
+	r5 = heap32[(fp+2)];
+	r6 = r2 ^ r1;
+	r3 = r2 ^ r3;
+	r7 = r4 ^ r0;
+	r5 = r4 ^ r5;
+	r8 = 1;
+	r9 = 0;
+	r6 = (r6 - r2)|0;
+	r10 = uint(r3) < uint(r2) ? r8 : r9;
+	r7 = (r7 - r4)|0;
+	r11 = uint(r5) < uint(r4) ? r8 : r9;
+	r2 = (r3 - r2)|0;
+	r3 = (r6 - r10)|0;
+	r4 = (r5 - r4)|0;
+	r5 = (r7 - r11)|0;
+	heap32[(g0)] = r2;
+	heap32[(g0+1)] = r3;
+	heap32[(g0+2)] = r4;
+	heap32[(g0+3)] = r5;
+	heap32[(g0+4)] = 0;
+	r0 = r0 ^ r1;
+	__udivmoddi4(i7);
+	r0 = r0 >> 31;
+	r1 = r_g0 ^ r0;
+	r2 = r_g1 ^ r0;
+	r2 = (r2 - r0)|0;
+	r3 = uint(r1) < uint(r0) ? r8 : r9;
+	r0 = (r1 - r0)|0;
+	r1 = (r2 - r3)|0;
+	r_g0 = r0;
+	r_g1 = r1;
+	return;
+}
+
+function __udivdi3(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+var __label__ = 0;
+	i7 = sp + -24;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = heap32[(fp+1)];
+	r2 = heap32[(fp+2)];
+	r3 = heap32[(fp+3)];
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r1;
+	heap32[(g0+2)] = r2;
+	heap32[(g0+3)] = r3;
+	heap32[(g0+4)] = 0;
+	__udivmoddi4(i7);
+	return;
+}
+
+function sscanf(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+	var r6;
+	var r7;
+	var r8;
+	var r9;
+	var r10;
+	var r11;
+	var r12;
+	var r13;
+	var r14;
+	var r15;
+	var r16;
+	var r17;
+	var r18;
+	var r19;
+	var r20;
+	var f0;
+	var f1;
+	var f2;
+	var f3;
+var __label__ = 0;
+	i7 = sp + -40;var g0 = i7>>2; // save stack
+	r0 = (sp + 4)|0;
+	r1 = heap32[(fp)];
+	heap32[(fp+-5)] = r0;
+	heap32[(fp+-4)] = r1;
+	heap32[(fp+-1)] = r0;
+	r0 = sp + -16;
+	heap32[(g0)] = r0;
+	r1 = 1;
+	r2 = 0;
+	r3 = _2E_str7136;
+	sgetc(i7);
+	r4 = r_g0;
+	f3 =                        10;
+	r20 = 255;
+_1: while(true){
+	r5 = heapU8[r3];
+	if(r5 !=0) //_LBB800_1
+{
+	r5 = r5 << 24;
+	r5 = r5 >> 24;
+	r6 = (r3 + 1)|0;
+	if(r5 >31) //_LBB800_4
+{
+	if(r5 ==32) //_LBB800_7
+{
+__label__ = 7;
+}
+else{
+	if(r5 ==37) //_LBB800_8
+{
+	r5 = -1;
+	r7 = 0;
+	r8 = r7;
+	r9 = r7;
+	r10 = r7;
+	r11 = r7;
+_8: while(true){
+	r12 = heap8[r6];
+if(!(r12 ==110)) //_LBB800_17
+{
+	if(r4 ==-1) //_LBB800_187
+{
+__label__ = 168;
+break _1;
+}
+}
+	if(r12 >103) //_LBB800_31
+{
+	if(r12 >111) //_LBB800_38
+{
+	if(r12 >114) //_LBB800_41
+{
+__label__ = 40;
+break _8;
+}
+else{
+	if(r12 ==112) //_LBB800_59
+{
+__label__ = 52;
+break _8;
+}
+else{
+if(!(r12 ==113)) //_LBB800_45
+{
+__label__ = 168;
+break _1;
+}
+}
+}
+}
+else{
+	if(r12 >107) //_LBB800_35
+{
+	if(r12 ==108) //_LBB800_55
+{
+	r3 = 1;
+	r10 = r10 & 255;
+	r11 = r10 == 0 ? r11 : r3;
+	r6 = (r6 + 1)|0;
+	r10 = r3;
+continue _8;
+}
+else{
+__label__ = 35;
+break _8;
+}
+}
+else{
+	if(r12 ==104) //_LBB800_53
+{
+	r6 = (r6 + 1)|0;
+	r9 = 1;
+continue _8;
+}
+else{
+__label__ = 33;
+break _8;
+}
+}
+}
+}
+else{
+	if(r12 >75) //_LBB800_25
+{
+	if(r12 >98) //_LBB800_28
+{
+__label__ = 27;
+break _8;
+}
+else{
+if(!(r12 ==76)) //_LBB800_45
+{
+__label__ = 26;
+break _8;
+}
+}
+}
+else{
+	if(r12 >41) //_LBB800_22
+{
+	if(r12 ==42) //_LBB800_46
+{
+	r6 = (r6 + 1)|0;
+	r8 = 1;
+continue _8;
+}
+else{
+	r5 = (r12 + -48)|0;
+	if(uint(r5) <uint(10)) //_LBB800_57
+{
+	r5 = sp + -8;
+	heap32[(g0)] = r6;
+	heap32[(g0+1)] = r5;
+	strtol(i7);
+	r5 = r_g0;
+	r6 = heap32[(fp+-2)];
+	r7 = 1;
+continue _8;
+}
+else{
+__label__ = 23;
+break _8;
+}
+}
+}
+else{
+__label__ = 19;
+break _8;
+}
+}
+}
+	r6 = (r6 + 1)|0;
+	r11 = 1;
+}
+_36: do {
+switch(__label__ ){//multiple entries
+case 40:
+	if(r12 ==115) //_LBB800_165
+{
+	r8 = r8 & 255;
+if(!(r8 !=0)) //_LBB800_167
+{
+	r3 = sp + -4;
+	heap32[(g0)] = r3;
+	heap32[(g0+1)] = 4;
+	my_arg_test(i7);
+	r3 = r_g0 >> 2;
+	r3 = heap32[(r3)];
+	heap32[(fp+-2)] = r3;
+}
+	r3 = (r6 + 1)|0;
+	r6 = r4 << 2;
+	r7 = my_ctype;
+	r6 = (r6 + r7)|0;
+	r6 = heapU8[r6+4];
+	r6 = r6 & 8;
+_43: do {
+	if(r6 ==0) //_LBB800_169
+{
+	r6 = r4;
+}
+else{
+_45: while(true){
+	heap32[(g0)] = r0;
+	sgetc(i7);
+	r6 = r_g0;
+	r4 = r6 << 2;
+	r4 = (r4 + r7)|0;
+	r1 = (r1 + 1)|0;
+	r4 = heapU8[r4+4];
+	r4 = r4 & 8;
+if(!(r4 !=0)) //_LBB800_170
+{
+break _43;
+}
+}
+}
+} while(0);
+	r4 = -1;
+	if(r6 ==-1) //_LBB800_186
+{
+continue _1;
+}
+else{
+	r4 = r6;
+_49: while(true){
+	if(r4 ==-1) //_LBB800_180
+{
+break _49;
+}
+else{
+	if(r5 ==0) //_LBB800_180
+{
+break _49;
+}
+else{
+	r6 = r4 << 2;
+	r6 = (r6 + r7)|0;
+	r6 = heapU8[r6+4];
+	r6 = r6 & 8;
+	if(r6 ==0) //_LBB800_173
+{
+if(!(r8 !=0)) //_LBB800_175
+{
+	r6 = heap32[(fp+-2)];
+	heap8[r6] = r4;
+}
+	if(r4 ==0) //_LBB800_180
+{
+break _49;
+}
+else{
+	r4 = heap32[(fp+-2)];
+	r4 = (r4 + 1)|0;
+	heap32[(fp+-2)] = r4;
+	heap32[(g0)] = r0;
+	r1 = (r1 + 1)|0;
+	r5 = (r5 + -1)|0;
+	sgetc(i7);
+	r4 = r_g0;
+}
+}
+else{
+break _49;
+}
+}
+}
+}
+	if(r8 !=0) //_LBB800_186
+{
+continue _1;
+}
+else{
+	r2 = (r2 + 1)|0;
+	r5 = heap32[(fp+-2)];
+	r6 = 0;
+	heap8[r5] = r6;
+continue _1;
+}
+}
+}
+else{
+	if(r12 ==117) //_LBB800_60
+{
+__label__ = 53;
+break _36;
+}
+else{
+	if(r12 ==120) //_LBB800_59
+{
+__label__ = 52;
+break _36;
+}
+else{
+__label__ = 168;
+break _1;
+}
+}
+}
+break;
+case 35:
+	if(r12 ==110) //_LBB800_182
+{
+	r3 = (r6 + 1)|0;
+	r5 = r8 & 255;
+	if(r5 !=0) //_LBB800_186
+{
+continue _1;
+}
+else{
+	r5 = sp + -4;
+	heap32[(g0)] = r5;
+	heap32[(g0+1)] = 4;
+	my_arg_test(i7);
+	r5 = r_g0 >> 2;
+	r5 = heap32[(r5)];
+	r5 = r5 >> 2;
+	r6 = (r1 + -1)|0;
+	heap32[(r5)] = r6;
+continue _1;
+}
+}
+else{
+	if(r12 ==111) //_LBB800_44
+{
+	r13 = 8;
+__label__ = 55;
+break _36;
+}
+else{
+__label__ = 168;
+break _1;
+}
+}
+break;
+case 33:
+	if(r12 ==105) //_LBB800_60
+{
+__label__ = 53;
+break _36;
+}
+else{
+__label__ = 168;
+break _1;
+}
+break;
+case 27:
+	if(r12 ==99) //_LBB800_155
+{
+	r3 = (r6 + 1)|0;
+	r6 = r8 & 255;
+	if(r6 ==0) //_LBB800_157
+{
+	r8 = sp + -4;
+	heap32[(g0)] = r8;
+	heap32[(g0+1)] = 4;
+	my_arg_test(i7);
+	r8 = r_g0 >> 2;
+	r8 = heap32[(r8)];
+	r2 = (r2 + 1)|0;
+	heap32[(fp+-2)] = r8;
+}
+	r8 = r7 & 255;
+	r7 = 1;
+	r5 = r8 == 0 ? r7 : r5;
+	if(r5 ==0) //_LBB800_186
+{
+continue _1;
+}
+else{
+	if(r4 ==-1) //_LBB800_186
+{
+continue _1;
+}
+else{
+	r5 = (r5 + -1)|0;
+_77: while(true){
+if(!(r6 !=0)) //_LBB800_163
+{
+	r8 = heap32[(fp+-2)];
+	r7 = (r8 + 1)|0;
+	heap8[r8] = r4;
+	heap32[(fp+-2)] = r7;
+}
+	heap32[(g0)] = r0;
+	r1 = (r1 + 1)|0;
+	sgetc(i7);
+	r4 = r_g0;
+	if(r5 ==0) //_LBB800_186
+{
+continue _1;
+}
+else{
+	r5 = (r5 + -1)|0;
+	if(r4 !=-1) //_LBB800_161
+{
+continue _77;
+}
+else{
+continue _1;
+}
+}
+}
+}
+}
+}
+else{
+	if(r12 ==100) //_LBB800_61
+{
+	r13 = 10;
+__label__ = 55;
+break _36;
+}
+else{
+	r5 = (r12 + -101)|0;
+	if(uint(r5) <uint(3)) //_LBB800_48
+{
+__label__ = 46;
+break _36;
+}
+else{
+__label__ = 168;
+break _1;
+}
+}
+}
+break;
+case 26:
+	if(r12 ==88) //_LBB800_59
+{
+__label__ = 52;
+break _36;
+}
+else{
+__label__ = 168;
+break _1;
+}
+break;
+case 23:
+	if(r12 ==69) //_LBB800_48
+{
+__label__ = 46;
+break _36;
+}
+else{
+__label__ = 168;
+break _1;
+}
+break;
+case 19:
+	if(r12 ==0) //_LBB800_6
+{
+__label__ = 6;
+break _1;
+}
+else{
+	if(r12 ==37) //_LBB800_51
+{
+	r5 = r4 & 255;
+	if(r5 !=r12) //_LBB800_187
+{
+__label__ = 168;
+break _1;
+}
+else{
+	heap32[(g0)] = r0;
+	r1 = (r1 + 1)|0;
+	r3 = (r6 + 1)|0;
+	sgetc(i7);
+	r4 = r_g0;
+continue _1;
+}
+}
+else{
+__label__ = 168;
+break _1;
+}
+}
+break;
+}
+} while(0);
+switch(__label__ ){//multiple entries
+case 53:
+	r13 = 0;
+break;
+case 52:
+	r13 = 16;
+break;
+case 46:
+	r5 = r4 << 2;
+	r7 = my_ctype;
+	r5 = (r5 + r7)|0;
+	r5 = heapU8[r5+4];
+	r3 = (r6 + 1)|0;
+	r5 = r5 & 8;
+_97: do {
+if(!(r5 ==0)) //_LBB800_50
+{
+_98: while(true){
+	heap32[(g0)] = r0;
+	sgetc(i7);
+	r4 = r_g0;
+	r5 = r4 << 2;
+	r5 = (r5 + r7)|0;
+	r1 = (r1 + 1)|0;
+	r5 = heapU8[r5+4];
+	r5 = r5 & 8;
+if(!(r5 !=0)) //_LBB800_111
+{
+break _97;
+}
+}
+}
+} while(0);
+	if(r4 ==45) //_LBB800_114
+{
+	heap32[(g0)] = r0;
+	r1 = (r1 + 1)|0;
+	r5 = 1;
+	sgetc(i7);
+	r4 = r_g0;
+}
+else{
+	r5 = 0;
+}
+	if(r4 ==43) //_LBB800_117
+{
+	heap32[(g0)] = r0;
+	r1 = (r1 + 1)|0;
+	sgetc(i7);
+	r4 = r_g0;
+}
+	r6 = (r4 + -48)|0;
+_108: do {
+	if(uint(r6) >uint(9)) //_LBB800_120
+{
+	f0 =                         0;
+	r6 = r1;
+}
+else{
+	f0 =                         0;
+	r6 = r1;
+_111: while(true){
+	r4 = (r4 + -48)|0;
+	f1 =                        10;
+	heap32[(g0)] = r0;
+	f0 = f0*f1;
+	f1 = r4; //fitod r4, f1
+	sgetc(i7);
+	r4 = r_g0;
+	f0 = f0+f1;
+	r6 = (r6 + 1)|0;
+	r7 = (r4 + -48)|0;
+if(!(uint(r7) <uint(10))) //_LBB800_121
+{
+break _108;
+}
+}
+}
+} while(0);
+_114: do {
+	if(r4 ==46) //_LBB800_124
+{
+	heap32[(g0)] = r0;
+	sgetc(i7);
+	r4 = r_g0;
+	r1 = (r1 + 1)|0;
+	r7 = (r4 + -48)|0;
+	if(uint(r7) <uint(10)) //_LBB800_126
+{
+	r6 = (r6 + 1)|0;
+	f1 =       0.10000000000000001;
+_118: while(true){
+	r4 = (r4 + -48)|0;
+	f2 = r4; //fitod r4, f2
+	heap32[(g0)] = r0;
+	f2 = f2*f1;
+	sgetc(i7);
+	r4 = r_g0;
+	f0 = f2+f0;
+	f1 = f1/f3;
+	r6 = (r6 + 1)|0;
+	r7 = (r4 + -48)|0;
+if(!(uint(r7) <uint(10))) //_LBB800_127
+{
+break _114;
+}
+}
+}
+else{
+	r6 = (r6 + 1)|0;
+}
+}
+} while(0);
+	if(r1 ==r6) //_LBB800_73
+{
+__label__ = 172;
+break _1;
+}
+else{
+	r1 = r4 | 32;
+_123: do {
+	if(r1 ==101) //_LBB800_131
+{
+	heap32[(g0)] = r0;
+	sgetc(i7);
+	r1 = r_g0;
+	if(r1 ==45) //_LBB800_135
+{
+	heap32[(g0)] = r0;
+	f1 =       0.10000000000000001;
+	sgetc(i7);
+	r4 = r_g0;
+}
+else{
+	if(r1 ==43) //_LBB800_136
+{
+	heap32[(g0)] = r0;
+	f1 =                        10;
+	sgetc(i7);
+	r4 = r_g0;
+}
+else{
+	if(r1 !=-1) //_LBB800_137
+{
+	heap32[(g0)] = r1;
+	heap32[(g0+1)] = r0;
+	f0 =                         0;
+	sputc(i7);
+	r1 = r6;
+break _123;
+}
+else{
+	r1 = (r6 + 1)|0;
+	f0 =                         0;
+break _123;
+}
+}
+}
+	r7 = (r6 + 2)|0;
+	r1 = (r4 + -48)|0;
+_135: do {
+	if(uint(r1) <uint(10)) //_LBB800_140
+{
+	r1 = (r6 + 2)|0;
+	r6 = 0;
+_137: while(true){
+	r6 = (r6 * 10)|0;
+	heap32[(g0)] = r0;
+	r6 = (r4 + r6)|0;
+	sgetc(i7);
+	r4 = r_g0;
+	r6 = (r6 + -48)|0;
+	r1 = (r1 + 1)|0;
+	r9 = (r4 + -48)|0;
+if(!(uint(r9) <uint(10))) //_LBB800_141
+{
+break _135;
+}
+}
+}
+else{
+	r6 = 0;
+	r1 = r7;
+}
+} while(0);
+	if(r7 ==r1) //_LBB800_73
+{
+__label__ = 172;
+break _1;
+}
+else{
+if(!(r6 ==0)) //_LBB800_145
+{
+__label__ = 130; //SET chanka
+_142: while(true){
+	r6 = (r6 + -1)|0;
+	f0 = f0*f1;
+if(!(r6 !=0)) //_LBB800_146
+{
+break _123;
+}
+}
+}
+}
+}
+else{
+	r1 = r6;
+}
+} while(0);
+	if(r5 !=0) //_LBB800_149
+{
+	f0 = -f0;
+}
+	r5 = r8 & 255;
+	if(r5 !=0) //_LBB800_186
+{
+continue _1;
+}
+else{
+	r5 = sp + -4;
+	heap32[(g0)] = r5;
+	heap32[(g0+1)] = 4;
+	my_arg_test(i7);
+	r5 = r_g0;
+	r6 = r10 & 255;
+	if(r6 ==0) //_LBB800_153
+{
+	r5 = r5 >> 2;
+	r5 = heap32[(r5)];
+	r5 = r5 >> 2;
+	f0 = f0; //fdtos f0, f0
+	heapFloat[(r5)] = f0;
+}
+else{
+	r5 = r5 >> 2;
+	r5 = heap32[(r5)];
+	llvm_writeDouble((r5),f0);
+}
+	r2 = (r2 + 1)|0;
+continue _1;
+}
+}
+break;
+}
+	r3 = r4 << 2;
+	r14 = my_ctype;
+	r3 = (r3 + r14)|0;
+	r15 = heapU8[r3+4];
+	r3 = (r6 + 1)|0;
+	r6 = r15 & 8;
+_155: do {
+if(!(r6 ==0)) //_LBB800_64
+{
+_156: while(true){
+	heap32[(g0)] = r0;
+	sgetc(i7);
+	r4 = r_g0;
+	r6 = r4 << 2;
+	r6 = (r6 + r14)|0;
+	r1 = (r1 + 1)|0;
+	r6 = heapU8[r6+4];
+	r6 = r6 & 8;
+if(!(r6 !=0)) //_LBB800_65
+{
+break _155;
+}
+}
+}
+} while(0);
+	if(r4 ==45) //_LBB800_68
+{
+	heap32[(g0)] = r0;
+	r1 = (r1 + 1)|0;
+	r6 = 1;
+	sgetc(i7);
+	r4 = r_g0;
+}
+else{
+	r6 = 0;
+}
+	if(r4 ==43) //_LBB800_71
+{
+	heap32[(g0)] = r0;
+	r14 = (r1 + 1)|0;
+	sgetc(i7);
+	r4 = r_g0;
+}
+else{
+	r14 = r1;
+}
+	if(r4 !=-1) //_LBB800_74
+{
+	r7 = r7 & 255;
+_168: do {
+	if(r7 ==0) //_LBB800_76
+{
+	if(r13 !=16) //_LBB800_79
+{
+__label__ = 68;
+}
+else{
+	if(r4 !=48) //_LBB800_79
+{
+__label__ = 68;
+}
+else{
+__label__ = 72;
+}
+}
+_172: do {
+if (__label__ == 68){
+if(!(r13 !=0)) //_LBB800_82
+{
+	r7 = 48;
+	r7 = r4 != r7;
+if(!(r7 != 0)) //_LBB800_82
+{
+	r13 = 8;
+break _172;
+}
+}
+	r7 = 10;
+	r13 = r13 != 0 ? r13 : r7;
+	r1 = r14;
+break _168;
+}
+} while(0);
+	heap32[(g0)] = r0;
+	sgetc(i7);
+	r4 = r_g0;
+	r7 = r4 | 32;
+	if(r7 ==120) //_LBB800_85
+{
+	heap32[(g0)] = r0;
+	r1 = (r14 + 2)|0;
+	r13 = 16;
+	sgetc(i7);
+	r4 = r_g0;
+}
+else{
+	r1 = (r14 + 1)|0;
+}
+}
+else{
+	r1 = r14;
+}
+} while(0);
+	r7 = 0;
+	r15 = r7;
+	r16 = r7;
+_184: while(true){
+	if(r5 ==0) //_LBB800_97
+{
+break _184;
+}
+else{
+	if(r4 !=-1) //_LBB800_87
+{
+	r17 = r4 & 255;
+	r18 = r17 | 32;
+	if(uint(r18) <uint(97)) //_LBB800_89
+{
+	r18 = 58;
+	r19 = (r17 + -48)|0;
+	r17 = uint(r17) < uint(r18) ? r19 : r20;
+}
+else{
+	r17 = (r18 + -87)|0;
+}
+	if(uint(r17) >=uint(r13)) //_LBB800_97
+{
+break _184;
+}
+else{
+	heap32[(g0)] = r15;
+	heap32[(g0+1)] = r16;
+	heap32[(g0+2)] = r13;
+	heap32[(g0+3)] = r7;
+	__muldi3(i7);
+	r4 = r_g0;
+	r18 = r_g1;
+	r15 = uint(r4) >= uint(r15);
+	r19 = uint(r18) >= uint(r16);
+	r15 = r18 == r16 ? r15 : r19;
+	if(r15 != 0) //_LBB800_93
+{
+	r15 = (r17 + r4)|0;
+	r16 = 1;
+	r17 = uint(r15) < uint(r17) ? r16 : r7;
+	r4 = uint(r15) < uint(r4) ? r16 : r17;
+	r16 = (r18 + r4)|0;
+}
+else{
+	r15 = -1;
+	r16 = r15;
+}
+	heap32[(g0)] = r0;
+	r1 = (r1 + 1)|0;
+	r5 = (r5 + -1)|0;
+	sgetc(i7);
+	r4 = r_g0;
+}
+}
+else{
+break _184;
+}
+}
+}
+	if(r14 ==r1) //_LBB800_73
+{
+__label__ = 172;
+break _1;
+}
+else{
+	r5 = r12 | 32;
+if(!(uint(r5) >uint(111))) //_LBB800_100
+{
+	if(r16 >-1) //_LBB800_101
+{
+	r5 = 1;
+	r12 = (r7 - r16)|0;
+	r5 = r15 != 0 ? r5 : r7;
+	r7 = (r7 - r15)|0;
+	r5 = (r12 - r5)|0;
+	r15 = r6 != 0 ? r7 : r15;
+	r16 = r6 != 0 ? r5 : r16;
+}
+}
+	r5 = r8 & 255;
+	if(r5 !=0) //_LBB800_186
+{
+continue _1;
+}
+else{
+	r5 = r11 & 255;
+	if(r5 ==0) //_LBB800_105
+{
+	r5 = r10 & 255;
+	if(r5 ==0) //_LBB800_107
+{
+	r5 = sp + -4;
+	heap32[(g0)] = r5;
+	heap32[(g0+1)] = 4;
+	my_arg_test(i7);
+	r5 = r_g0;
+	r7 = r9 & 255;
+	if(r7 ==0) //_LBB800_109
+{
+	r5 = r5 >> 2;
+	r5 = heap32[(r5)];
+	r5 = r5 >> 2;
+	heap32[(r5)] = r15;
+}
+else{
+	r5 = r5 >> 2;
+	r5 = heap32[(r5)];
+	heap16[(r5)>>1] = r15;
+}
+}
+else{
+	r5 = sp + -4;
+	heap32[(g0)] = r5;
+	heap32[(g0+1)] = 4;
+	my_arg_test(i7);
+	r5 = r_g0 >> 2;
+	r5 = heap32[(r5)];
+	r5 = r5 >> 2;
+	heap32[(r5)] = r15;
+}
+}
+else{
+	r5 = sp + -4;
+	heap32[(g0)] = r5;
+	heap32[(g0+1)] = 4;
+	my_arg_test(i7);
+	r5 = r_g0 >> 2;
+	r5 = heap32[(r5)];
+	r5 = r5 >> 2;
+	heap32[(r5)] = r15;
+	heap32[(r5+1)] = r16;
+}
+	r5 = uint(r14) < uint(r1);
+	r5 = r5 & 1;
+	r2 = (r5 + r2)|0;
+continue _1;
+}
+}
+}
+else{
+__label__ = 172;
+break _1;
+}
+}
+else{
+__label__ = 165;
+}
+}
+}
+else{
+	if(r5 ==0) //_LBB800_6
+{
+__label__ = 6;
+break _1;
+}
+else{
+	r7 = (r5 + -9)|0;
+	if(uint(r7) <uint(5)) //_LBB800_7
+{
+__label__ = 7;
+}
+else{
+__label__ = 165;
+}
+}
+}
+switch(__label__ ){//multiple entries
+case 7:
+	r3 = (r3 + 1)|0;
+_218: while(true){
+	r5 = heapU8[r3];
+	if(r5 ==0) //_LBB800_13
+{
+break _218;
+}
+else{
+	r5 = r5 << 24;
+	r5 = r5 >> 24;
+	r5 = r5 << 2;
+	r6 = my_ctype;
+	r5 = (r5 + r6)|0;
+	r5 = heapU8[r5+4];
+	r5 = r5 & 8;
+	if(r5 ==0) //_LBB800_13
+{
+break _218;
+}
+else{
+	r3 = (r3 + 1)|0;
+}
+}
+}
+	r6 = r4 << 2;
+	r5 = my_ctype;
+	r6 = (r6 + r5)|0;
+	r6 = heapU8[r6+4];
+	r6 = r6 & 8;
+	if(r6 ==0) //_LBB800_186
+{
+continue _1;
+}
+else{
+__label__ = 12; //SET chanka
+_223: while(true){
+	heap32[(g0)] = r0;
+	sgetc(i7);
+	r4 = r_g0;
+	r6 = r4 << 2;
+	r6 = (r6 + r5)|0;
+	r1 = (r1 + 1)|0;
+	r6 = heapU8[r6+4];
+	r6 = r6 & 8;
+	if(r6 ==0) //_LBB800_186
+{
+continue _1;
+}
+}
+}
+break;
+case 165:
+	r3 = r4 & 255;
+	if(r3 !=r5) //_LBB800_187
+{
+__label__ = 168;
+break _1;
+}
+else{
+	heap32[(g0)] = r0;
+	r1 = (r1 + 1)|0;
+	sgetc(i7);
+	r4 = r_g0;
+	r3 = r6;
+continue _1;
+}
+break;
+}
+}
+else{
+__label__ = 168;
+break _1;
+}
+}
+_227: do {
+switch(__label__ ){//multiple entries
+case 168:
+if(!(r4 >-1)) //_LBB800_190
+{
+if(!(r2 !=0)) //_LBB800_190
+{
+	r2 = -1;
+break _227;
+}
+}
+	heap32[(g0)] = r4;
+	heap32[(g0+1)] = r0;
+	sputc(i7);
+break;
+case 6:
+	r2 = 0;
+break;
+}
+} while(0);
+	r_g0 = r2;
+	return;
+}
+
+function __v_printf(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+	var r6;
+	var r7;
+	var r8;
+	var r9;
+	var r10;
+	var r11;
+	var r12;
+	var r13;
+	var r14;
+	var r15;
+	var r16;
+	var r17;
+	var r18;
+	var r19;
+	var r20;
+	var r21;
+	var r22;
+	var r23;
+	var f0;
+	var f1;
+var __label__ = 0;
+	i7 = sp + -184;var g0 = i7>>2; // save stack
+	r0 = sp + -136;
+	r1 = heap32[(fp+2)];
+	r2 = heap32[(fp)];
+	r3 = heap32[(fp+1)];
+	r0 = (r0 + 1)|0;
+	heap32[(fp+-1)] = r1;
+	heap32[(fp+-2)] = 0;
+_1: while(true){
+	r4 = heapU8[r3];
+	if(r4 ==0) //_LBB801_209
+{
+__label__ = 197;
+break _1;
+}
+else{
+	r1 = 0;
+	r5 = r4;
+_4: while(true){
+	r5 = r5 & 255;
+	if(r5 ==0) //_LBB801_4
+{
+break _4;
+}
+else{
+	if(r5 !=37) //_LBB801_1
+{
+	r5 = (r3 - r1)|0;
+	r5 = heapU8[r5+1];
+	r1 = (r1 + -1)|0;
+}
+else{
+break _4;
+}
+}
+}
+	r5 = 0;
+	if(r1 !=0) //_LBB801_6
+{
+	r4 = (r5 - r1)|0;
+	if(r4 <0) //_LBB801_210
+{
+__label__ = 198;
+break _1;
+}
+else{
+	r6 = heap32[(fp+-2)];
+	r7 = (r6 - r1)|0;
+	if(uint(r7) <uint(r6)) //_LBB801_210
+{
+__label__ = 198;
+break _1;
+}
+else{
+	r6 = (r3 - r1)|0;
+	r7 = r2 >> 2;
+	r8 = heap32[(r7+1)];
+	r7 = heap32[(r7)];
+	heap32[(g0)] = r3;
+	heap32[(g0+1)] = r4;
+	heap32[(g0+2)] = r7;
+	__FUNCTION_TABLE__[(r8)>>2](i7);
+	r4 = heap32[(fp+-2)];
+	r4 = (r4 - r1)|0;
+	r1 = (r3 - r1)|0;
+	heap32[(fp+-2)] = r4;
+	r4 = heapU8[r1];
+	r3 = r6;
+}
+}
+}
+	r1 = r4 & 255;
+	if(r1 !=37) //_LBB801_207
+{
+continue _1;
+}
+else{
+	r3 = (r3 + 1)|0;
+	r1 = 32;
+	r4 = r5;
+	r6 = r5;
+	r7 = r5;
+	r8 = r5;
+	r9 = r5;
+	r10 = r5;
+	r11 = r5;
+_15: while(true){
+	r12 = r4;
+	r13 = r3;
+	r14 = heapU8[r13];
+	r3 = (r13 + 1)|0;
+	heap8[sp+-145] = r14;
+_17: do {
+	if(r14 >99) //_LBB801_29
+{
+	if(r14 >110) //_LBB801_37
+{
+	if(r14 >114) //_LBB801_41
+{
+	if(r14 >119) //_LBB801_44
+{
+	if(r14 ==122) //_LBB801_47
+{
+__label__ = 50;
+break _17;
+}
+else{
+__label__ = 44;
+break _15;
+}
+}
+else{
+__label__ = 41;
+break _15;
+}
+}
+else{
+	if(r14 ==111) //_LBB801_105
+{
+__label__ = 99;
+break _15;
+}
+else{
+	if(r14 ==112) //_LBB801_97
+{
+__label__ = 91;
+break _15;
+}
+else{
+	if(r14 ==113) //_LBB801_53
+{
+__label__ = 49;
+break _17;
+}
+else{
+continue _1;
+}
+}
+}
+}
+}
+else{
+	if(r14 >104) //_LBB801_34
+{
+	if(r14 ==105) //_LBB801_108
+{
+__label__ = 102;
+break _15;
+}
+else{
+	if(r14 ==106) //_LBB801_53
+{
+__label__ = 49;
+break _17;
+}
+else{
+	if(r14 ==108) //_LBB801_47
+{
+__label__ = 50;
+break _17;
+}
+else{
+continue _1;
+}
+}
+}
+}
+else{
+	if(r14 ==100) //_LBB801_108
+{
+__label__ = 102;
+break _15;
+}
+else{
+	r4 = (r14 + -102)|0;
+	if(uint(r4) <uint(2)) //_LBB801_135
+{
+__label__ = 129;
+break _15;
+}
+else{
+	if(r14 ==104) //_LBB801_48
+{
+__label__ = 48;
+break _17;
+}
+else{
+continue _1;
+}
+}
+}
+}
+}
+}
+else{
+	if(r14 >44) //_LBB801_20
+{
+	if(r14 >75) //_LBB801_24
+{
+	if(r14 >97) //_LBB801_27
+{
+__label__ = 26;
+break _15;
+}
+else{
+	if(r14 ==76) //_LBB801_53
+{
+__label__ = 49;
+break _17;
+}
+else{
+__label__ = 25;
+break _15;
+}
+}
+}
+else{
+	r4 = 1;
+	if(r14 ==45) //_LBB801_11
+{
+continue _15;
+}
+else{
+	if(r14 ==46) //_LBB801_61
+{
+	r4 = heapU8[r3];
+	if(r4 !=42) //_LBB801_63
+{
+	r4 = sp + -144;
+	heap32[(g0)] = r3;
+	heap32[(g0+1)] = r4;
+	strtol(i7);
+	r14 = 0;
+	r11 = r_g0 < 0 ? r14 : r_g0;
+	r3 = heap32[(fp+-36)];
+}
+else{
+	r4 = sp + -4;
+	heap32[(g0)] = r4;
+	heap32[(g0+1)] = 4;
+	my_arg_test(i7);
+	r4 = r_g0 >> 2;
+	r4 = heap32[(r4)];
+	r14 = 0;
+	r11 = r4 < 0 ? r14 : r4;
+	r3 = (r13 + 2)|0;
+}
+	r8 = 1;
+	r4 = r12;
+	if(uint(r11) >uint(10240)) //_LBB801_210
+{
+__label__ = 198;
+break _1;
+}
+else{
+continue _15;
+}
+}
+else{
+	r4 = (r14 + -48)|0;
+	if(uint(r4) <uint(10)) //_LBB801_57
+{
+	r4 = r8 & 255;
+	if(r4 !=0) //_LBB801_210
+{
+__label__ = 198;
+break _1;
+}
+else{
+	r4 = sp + -144;
+	heap32[(g0)] = r13;
+	heap32[(g0+1)] = r4;
+	strtoul(i7);
+	r10 = r_g0;
+	if(uint(r10) >uint(10240)) //_LBB801_210
+{
+__label__ = 198;
+break _1;
+}
+else{
+	r8 = 0;
+	r4 = r12 & 255;
+	r13 = heapU8[sp+-145];
+	r14 = 48;
+	r13 = r13 == r14;
+	r4 = r4 == r8;
+	r4 = r13 & r4;
+	r1 = r4 != 0 ? r14 : r1;
+	r3 = heap32[(fp+-36)];
+	r4 = r12;
+continue _15;
+}
+}
+}
+else{
+continue _1;
+}
+}
+}
+}
+}
+else{
+	if(r14 >36) //_LBB801_17
+{
+	if(r14 ==37) //_LBB801_66
+{
+__label__ = 62;
+break _15;
+}
+else{
+	if(r14 ==42) //_LBB801_60
+{
+	r4 = sp + -4;
+	heap32[(g0)] = r4;
+	heap32[(g0+1)] = 4;
+	my_arg_test(i7);
+	r4 = r_g0 >> 2;
+	r4 = heap32[(r4)];
+	r13 = r4 >> 31;
+	r14 = (r4 + r13)|0;
+	r15 = 1;
+	r10 = r14 ^ r13;
+	r4 = r4 < 0 ? r15 : r12;
+	if(uint(r10) >uint(10240)) //_LBB801_210
+{
+__label__ = 198;
+break _1;
+}
+else{
+continue _15;
+}
+}
+else{
+	if(r14 ==43) //_LBB801_56
+{
+	r7 = 1;
+	r4 = r12;
+continue _15;
+}
+else{
+continue _1;
+}
+}
+}
+}
+else{
+	if(r14 ==0) //_LBB801_210
+{
+__label__ = 198;
+break _1;
+}
+else{
+	if(r14 ==32) //_LBB801_55
+{
+	r6 = 1;
+	r4 = r12;
+continue _15;
+}
+else{
+	if(r14 ==35) //_LBB801_51
+{
+	r5 = 255;
+__label__ = 48;
+}
+else{
+continue _1;
+}
+}
+}
+}
+}
+}
+} while(0);
+switch(__label__ ){//multiple entries
+case 49:
+	r9 = (r9 + 1)|0;
+break;
+case 48:
+	r9 = (r9 + -1)|0;
+	r4 = r12;
+continue _15;
+break;
+}
+	r9 = (r9 + 1)|0;
+	r4 = r12;
+}
+_71: do {
+switch(__label__ ){//multiple entries
+case 26:
+	if(r14 ==98) //_LBB801_49
+{
+	r4 = 0;
+	r13 = 2;
+	r14 = r4;
+	r15 = r4;
+__label__ = 104;
+break _71;
+}
+else{
+	if(r14 ==99) //_LBB801_65
+{
+	r1 = sp + -4;
+	heap32[(g0)] = r1;
+	heap32[(g0+1)] = 4;
+	my_arg_test(i7);
+	r1 = r_g0 >> 2;
+	r1 = heap32[(r1)];
+	heap8[sp+-145] = r1;
+__label__ = 62;
+break _71;
+}
+else{
+continue _1;
+}
+}
+break;
+case 25:
+	if(r14 ==88) //_LBB801_50
+{
+__label__ = 92;
+break _71;
+}
+else{
+continue _1;
+}
+break;
+case 44:
+	if(r14 !=120) //_LBB801_207
+{
+continue _1;
+}
+else{
+	r4 = 0;
+__label__ = 93;
+break _71;
+}
+break;
+case 41:
+	if(r14 ==115) //_LBB801_68
+{
+	r1 = sp + -4;
+	heap32[(g0)] = r1;
+	heap32[(g0+1)] = 4;
+	my_arg_test(i7);
+	r1 = r_g0 >> 2;
+	r4 = _2E_str38684;
+	r1 = heap32[(r1)];
+	r1 = r1 == 0 ? r4 : r1;
+	heap32[(fp+-36)] = r1;
+	r4 = heapU8[r1];
+_83: do {
+	if(r4 !=0) //_LBB801_70
+{
+	r4 = (r1 + 1)|0;
+	r14 = 0;
+_85: while(true){
+	r1 = (r14 + 1)|0;
+	r6 = heapU8[r4+r14];
+	r14 = r1;
+if(!(r6 !=0)) //_LBB801_71
+{
+break _83;
+}
+}
+}
+else{
+	r1 = 0;
+}
+} while(0);
+	r16 = 0;
+	r4 = r8 & 255;
+	r4 = r4 != r16;
+	r14 = uint(r1) > uint(r11);
+	r4 = r4 & r14;
+	r14 = 32;
+	r4 = r4 != 0 ? r11 : r1;
+	r1 = r14;
+	r8 = r16;
+	r11 = r16;
+__label__ = 69;
+break _71;
+}
+else{
+	if(r14 ==117) //_LBB801_109
+{
+	r4 = 0;
+	r13 = 10;
+	r14 = r4;
+	r15 = r4;
+__label__ = 104;
+break _71;
+}
+else{
+continue _1;
+}
+}
+break;
+case 99:
+	r4 = r5 & 255;
+	if(r4 !=0) //_LBB801_107
+{
+	r5 = 1;
+	r4 = 0;
+	r13 = 8;
+	r14 = 48;
+	heap8[sp+-135] = r14;
+	r14 = r4;
+	r15 = r5;
+__label__ = 104;
+break _71;
+}
+else{
+	r4 = 0;
+	r13 = 8;
+	r14 = r4;
+	r5 = r4;
+	r15 = r4;
+__label__ = 104;
+break _71;
+}
+break;
+case 91:
+	r14 = 120;
+	r5 = 2;
+	r9 = 1;
+	heap8[sp+-145] = r14;
+__label__ = 92;
+break _71;
+break;
+case 102:
+	r4 = 0;
+	r14 = 1;
+	r13 = 10;
+	r15 = r4;
+__label__ = 104;
+break _71;
+break;
+case 129:
+	r4 = sp + -4;
+	heap32[(g0)] = r4;
+	heap32[(g0+1)] = 8;
+	my_arg_test(i7);
+	f0 = llvm_readDouble((r_g0));
+	heap32[(fp+-36)] = r0;
+	r4 = 103;
+	r4 = r14 == r4;
+	r8 = r8 & 255;
+	r16 = 1;
+	r9 = 6;
+	r10 = r10 == 0 ? r16 : r10;
+	r11 = r8 == 0 ? r9 : r11;
+	r4 = r4 & 1;
+	f1 =                         0;
+	r9 = r7 & 255;
+	r13 = 0;
+	llvm_writeDouble((i7),f0);
+	heap32[(g0+2)] = r0;
+	heap32[(g0+3)] = 127;
+	heap32[(g0+4)] = r10;
+	heap32[(g0+5)] = r11;
+	heap32[(g0+6)] = r4;
+	r4 = r9 != r13;
+	r16 = f0 < f1;
+	r4 = r4 | r16;
+	r16 = r4 & 1;
+	__dtostr(i7);
+	r4 = r_g0;
+_98: do {
+	if(r8 !=0) //_LBB801_137
+{
+	r8 = heap32[(fp+-36)];
+	r15 = r13;
+_100: while(true){
+	r17 = heapU8[r8+r13];
+	if(r17 ==0) //_LBB801_161
+{
+__label__ = 151;
+break _100;
+}
+else{
+	r18 = (r8 + r13)|0;
+	if(r17 ==46) //_LBB801_149
+{
+__label__ = 142;
+break _100;
+}
+else{
+	r17 = heapU8[r18+1];
+	if(r17 ==0) //_LBB801_161
+{
+__label__ = 151;
+break _100;
+}
+else{
+	r19 = r15 << 2;
+	if(r17 !=46) //_LBB801_143
+{
+	r17 = heapU8[r18+2];
+	if(r17 ==0) //_LBB801_161
+{
+__label__ = 151;
+break _100;
+}
+else{
+	if(r17 !=46) //_LBB801_146
+{
+	r17 = heapU8[r18+3];
+	if(r17 ==0) //_LBB801_161
+{
+__label__ = 151;
+break _100;
+}
+else{
+	if(r17 ==46) //_LBB801_151
+{
+__label__ = 143;
+break _100;
+}
+else{
+	r15 = (r15 + 1)|0;
+	r13 = (r13 + 4)|0;
+}
+}
+}
+else{
+__label__ = 138;
+break _100;
+}
+}
+}
+else{
+__label__ = 135;
+break _100;
+}
+}
+}
+}
+}
+_110: do {
+switch(__label__ ){//multiple entries
+case 142:
+	if(r18 ==0) //_LBB801_161
+{
+__label__ = 151;
+break _110;
+}
+else{
+__label__ = 144;
+break _110;
+}
+break;
+case 143:
+	r18 = (r18 + 3)|0;
+__label__ = 144;
+break _110;
+break;
+case 138:
+	r4 = r19 | 2;
+	r18 = (r8 + r4)|0;
+__label__ = 144;
+break _110;
+break;
+case 135:
+	r4 = r19 | 1;
+	r18 = (r8 + r4)|0;
+__label__ = 144;
+break;
+}
+} while(0);
+switch(__label__ ){//multiple entries
+case 151:
+	r5 = r5 & 255;
+	if(r5 ==0) //_LBB801_136
+{
+break _98;
+}
+else{
+	r5 = 46;
+	heap8[r8+r4] = r5;
+	r5 = heap32[(fp+-36)];
+	r4 = (r4 + r5)|0;
+	r5 = 0;
+	heap8[r4+1] = r5;
+}
+break;
+case 144:
+	if(r11 !=0) //_LBB801_155
+{
+__label__ = 146;
+}
+else{
+	r4 = r5 & 255;
+	if(r4 !=0) //_LBB801_155
+{
+__label__ = 146;
+}
+else{
+__label__ = 147;
+}
+}
+if (__label__ == 146){
+	r18 = (r18 + 1)|0;
+}
+_123: while(true){
+	r4 = r11;
+	if(r4 !=0) //_LBB801_158
+{
+	r11 = (r4 + -1)|0;
+	r5 = (r18 + 1)|0;
+	r8 = heapU8[r18+1];
+	r18 = r5;
+	if(r8 !=0) //_LBB801_156
+{
+__label__ = 147;
+}
+else{
+__label__ = 149;
+break _123;
+}
+}
+else{
+__label__ = 150;
+break _123;
+}
+}
+if (__label__ == 149){
+	r18 = r5;
+}
+	r5 = 0;
+	heap8[r18] = r5;
+	r11 = r4;
+break;
+}
+}
+} while(0);
+_130: do {
+if(!(r14 !=103)) //_LBB801_199
+{
+	r4 = heap32[(fp+-36)];
+	r5 = 0;
+	r8 = r5;
+_132: while(true){
+	r14 = heapU8[r4+r5];
+	if(r14 ==0) //_LBB801_199
+{
+break _130;
+}
+else{
+	r13 = (r4 + r5)|0;
+	if(r14 ==46) //_LBB801_176
+{
+__label__ = 166;
+break _132;
+}
+else{
+	r14 = heapU8[r13+1];
+	if(r14 ==0) //_LBB801_199
+{
+break _130;
+}
+else{
+	r15 = r8 << 2;
+	if(r14 !=46) //_LBB801_170
+{
+	r14 = heapU8[r13+2];
+	if(r14 ==0) //_LBB801_199
+{
+break _130;
+}
+else{
+	if(r14 !=46) //_LBB801_173
+{
+	r14 = heapU8[r13+3];
+	if(r14 ==0) //_LBB801_199
+{
+break _130;
+}
+else{
+	if(r14 ==46) //_LBB801_178
+{
+__label__ = 167;
+break _132;
+}
+else{
+	r8 = (r8 + 1)|0;
+	r5 = (r5 + 4)|0;
+}
+}
+}
+else{
+__label__ = 162;
+break _132;
+}
+}
+}
+else{
+__label__ = 159;
+break _132;
+}
+}
+}
+}
+}
+switch(__label__ ){//multiple entries
+case 166:
+	if(r13 ==0) //_LBB801_199
+{
+break _130;
+}
+break;
+case 167:
+	r13 = (r13 + 3)|0;
+break;
+case 162:
+	r5 = r15 | 2;
+	r13 = (r4 + r5)|0;
+break;
+case 159:
+	r5 = r15 | 1;
+	r13 = (r4 + r5)|0;
+break;
+}
+	r4 = 0;
+	r5 = r13;
+_148: while(true){
+	r8 = heapU8[r5];
+	if(r8 !=101) //_LBB801_182
+{
+	if(r8 !=0) //_LBB801_184
+{
+	r8 = r4 << 2;
+	r14 = heapU8[r5+1];
+	if(r14 !=101) //_LBB801_186
+{
+	if(r14 ==0) //_LBB801_183
+{
+__label__ = 171;
+break _148;
+}
+else{
+	r14 = heapU8[r5+2];
+	if(r14 !=101) //_LBB801_189
+{
+	if(r14 ==0) //_LBB801_183
+{
+__label__ = 171;
+break _148;
+}
+else{
+	r14 = heapU8[r5+3];
+	if(r14 !=101) //_LBB801_192
+{
+	if(r14 ==0) //_LBB801_183
+{
+__label__ = 171;
+break _148;
+}
+else{
+	r4 = (r4 + 1)|0;
+	r5 = (r5 + 4)|0;
+}
+}
+else{
+__label__ = 179;
+break _148;
+}
+}
+}
+else{
+__label__ = 176;
+break _148;
+}
+}
+}
+else{
+__label__ = 173;
+break _148;
+}
+}
+else{
+__label__ = 171;
+break _148;
+}
+}
+else{
+__label__ = 182;
+break _148;
+}
+}
+switch(__label__ ){//multiple entries
+case 171:
+	r5 = 0;
+break;
+case 179:
+	r4 = r8 | 3;
+	r5 = (r13 + r4)|0;
+break;
+case 176:
+	r4 = r8 | 2;
+	r5 = (r13 + r4)|0;
+break;
+case 173:
+	r4 = r8 | 1;
+	r5 = (r13 + r4)|0;
+break;
+}
+_163: while(true){
+	r4 = (r13 + 1)|0;
+	r8 = heapU8[r13+1];
+	r13 = r4;
+if(!(r8 !=0)) //_LBB801_194
+{
+break _163;
+}
+}
+	r4 = r5 == 0 ? r4 : r5;
+_166: while(true){
+	r8 = heapU8[r4+-1];
+	r4 = (r4 + -1)|0;
+if(!(r8 ==48)) //_LBB801_196
+{
+break _166;
+}
+}
+	r14 = (r4 + 1)|0;
+	r4 = r8 == 46 ? r4 : r14;
+	r8 = 0;
+	heap8[r4] = r8;
+if(!(r5 ==0)) //_LBB801_199
+{
+	heap32[(g0)] = r4;
+	heap32[(g0+1)] = r5;
+	strcpy(i7);
+}
+}
+} while(0);
+	r4 = r7 | r6;
+	r4 = r4 & 255;
+if(!(r4 ==0)) //_LBB801_202
+{
+if(!(f0 <f1)) //_LBB801_202
+{
+	r4 = heap32[(fp+-36)];
+	r5 = (r4 + -1)|0;
+	r8 = 32;
+	r14 = 43;
+	r8 = r9 == 0 ? r8 : r14;
+	heap32[(fp+-36)] = r5;
+	heap8[r4+-1] = r8;
+}
+}
+	r4 = heap32[(fp+-36)];
+	r5 = heapU8[r4];
+_175: do {
+	if(r5 !=0) //_LBB801_204
+{
+	r5 = (r4 + 1)|0;
+	r8 = 0;
+_177: while(true){
+	r4 = (r8 + 1)|0;
+	r14 = heapU8[r5+r8];
+	r8 = r4;
+if(!(r14 !=0)) //_LBB801_205
+{
+break _175;
+}
+}
+}
+else{
+	r4 = 0;
+}
+} while(0);
+	r10 = uint(r10) < uint(r4) ? r4 : r10;
+	r14 = 48;
+	r5 = 0;
+	r8 = r5;
+__label__ = 69;
+break;
+}
+} while(0);
+switch(__label__ ){//multiple entries
+case 62:
+	r1 = heap32[(fp+-2)];
+	if(r1 ==-1) //_LBB801_210
+{
+__label__ = 198;
+break _1;
+}
+else{
+	r1 = r2 >> 2;
+	r4 = heap32[(r1+1)];
+	r1 = heap32[(r1)];
+	r5 = sp + -145;
+	heap32[(g0)] = r5;
+	heap32[(g0+1)] = 1;
+	heap32[(g0+2)] = r1;
+	__FUNCTION_TABLE__[(r4)>>2](i7);
+	r1 = heap32[(fp+-2)];
+	r1 = (r1 + 1)|0;
+	heap32[(fp+-2)] = r1;
+continue _1;
+}
+break;
+case 92:
+	r4 = r14 & 255;
+	r13 = 88;
+	r4 = r4 == r13;
+	r4 = r4 & 1;
+__label__ = 93;
+break;
+}
+if (__label__ == 93){
+	r5 = r5 & 255;
+	if(r5 !=0) //_LBB801_101
+{
+	r13 = 48;
+	r5 = 2;
+	heap8[sp+-135] = r13;
+	heap8[sp+-134] = r14;
+	r15 = r5;
+}
+else{
+	r5 = 0;
+	r15 = r5;
+}
+	if(uint(r11) >uint(r10)) //_LBB801_104
+{
+	r14 = 0;
+	r13 = 16;
+	r10 = r11;
+__label__ = 104;
+}
+else{
+	r14 = 0;
+	r13 = 16;
+__label__ = 104;
+}
+}
+_194: do {
+if (__label__ == 104){
+	heap32[(fp+-36)] = r0;
+	r16 = sp + -4;
+	heap32[(g0)] = r16;
+	heap32[(g0+1)] = 4;
+	my_arg_test(i7);
+	r17 = r_g0 >> 2;
+	r18 = r14 & 255;
+	r16 = 0;
+	r17 = heap32[(r17)];
+	r18 = r18 != r16;
+	r19 = r17 < r16;
+	r20 = (r16 - r17)|0;
+	r18 = r18 & r19;
+	r9 = r9 << 24;
+	r17 = r18 != 0 ? r20 : r17;
+	r9 = r9 >> 24;
+	r19 = r17 & 65535;
+	r17 = r9 < 0 ? r19 : r17;
+	r19 = heap32[(fp+-36)];
+	r20 = r17 & 255;
+	r21 = 2;
+	r9 = r9 < -1 ? r20 : r17;
+	r17 = r18 != 0 ? r21 : r14;
+	r14 = (r19 + r15)|0;
+	heap8[r14+122] = r16;
+	if(r9 !=0) //_LBB801_112
+{
+	r18 = (r13 + -1)|0;
+	r19 = 35;
+	r20 = 10;
+	r18 = uint(r18) > uint(r19) ? r20 : r13;
+	r4 = r4 & 255;
+	r13 = 39;
+	r19 = 7;
+	r4 = r4 == 0 ? r13 : r19;
+	r19 = (r15 + 121)|0;
+	r20 = -122;
+_198: while(true){
+	r13 = Math.floor(uint(r9) % uint(r18));
+	r13 = (r13 + 48)|0;
+	r22 = r13 & 255;
+	r23 = 57;
+	r22 = uint(r22) > uint(r23) ? r4 : r16;
+	r23 = (r20 + 1)|0;
+	r13 = (r13 + r22)|0;
+	r20 = (r14 - r20)|0;
+	heap8[r20+-1] = r13;
+	if(r19 <=r15) //_LBB801_115
+{
+break _198;
+}
+else{
+	r9 = Math.floor(uint(r9) /uint(r18));
+	r19 = (r19 + -1)|0;
+	r20 = r23;
+if(!(r9 !=0)) //_LBB801_113
+{
+break _198;
+}
+}
+}
+	r18 = (r23 + 122)|0;
+	r9 = (r14 - r23)|0;
+}
+else{
+	r4 = (r15 + r19)|0;
+	r13 = 48;
+	r9 = (r4 + 121)|0;
+	r18 = 1;
+	heap8[r4+121] = r13;
+}
+_204: do {
+if(!(r9 ==r14)) //_LBB801_125
+{
+	if(uint(r9) <=uint(r14)) //_LBB801_122
+{
+if(!(r18 ==-1)) //_LBB801_125
+{
+	r4 = (r16 - r18)|0;
+_209: while(true){
+	r13 = r4;
+	r19 = (r9 - r13)|0;
+	r4 = (r13 + 1)|0;
+	r20 = (r14 - r13)|0;
+	r19 = heapU8[r19];
+	heap8[r20] = r19;
+if(!(r13 !=0)) //_LBB801_124
+{
+break _204;
+}
+}
+}
+}
+else{
+if(!(r18 ==-1)) //_LBB801_125
+{
+	r4 = (r9 + 1)|0;
+	r9 = r18;
+_213: while(true){
+	heap8[r14] = r13;
+	if(r9 ==0) //_LBB801_125
+{
+break _204;
+}
+else{
+	r13 = heapU8[r4];
+	r4 = (r4 + 1)|0;
+	r9 = (r9 + -1)|0;
+	r14 = (r14 + 1)|0;
+}
+}
+}
+}
+}
+} while(0);
+	r4 = 1;
+	r4 = r18 != r4;
+	r4 = r4 & 1;
+	r14 = r8 ^ 1;
+	r4 = r4 | r14;
+	r4 = r4 & 255;
+	if(r4 !=0) //_LBB801_128
+{
+__label__ = 122;
+}
+else{
+	r4 = heap32[(fp+-36)];
+	r4 = heapU8[r4+r15];
+	if(r4 !=48) //_LBB801_128
+{
+__label__ = 122;
+}
+else{
+	r4 = r5 << 24;
+	r5 = 0;
+	r4 = r4 >> 24;
+	r14 = r11 == r5;
+	r4 = r4 > r5;
+	r4 = r14 | r4;
+	r4 = r4 != 0 ? r5 : r15;
+__label__ = 123;
+}
+}
+if (__label__ == 122){
+	r4 = (r18 + r15)|0;
+}
+	r14 = r17 & 255;
+	if(r14 ==2) //_LBB801_132
+{
+	r6 = heap32[(fp+-36)];
+	r7 = (r6 + -1)|0;
+	r4 = (r4 + 1)|0;
+	r14 = 48;
+	r16 = 45;
+	heap32[(fp+-36)] = r7;
+	heap8[r6+-1] = r16;
+	r16 = r21;
+}
+else{
+	if(r14 !=0) //_LBB801_133
+{
+	r14 = r7 | r6;
+	r14 = r14 & 255;
+if(!(r14 ==0)) //_LBB801_131
+{
+	r6 = heap32[(fp+-36)];
+	r16 = (r6 + -1)|0;
+	r7 = r7 & 255;
+	r9 = 32;
+	r13 = 43;
+	r4 = (r4 + 1)|0;
+	r14 = 48;
+	r7 = r7 == 0 ? r9 : r13;
+	heap32[(fp+-36)] = r16;
+	heap8[r6+-1] = r7;
+	r16 = r17;
+break _194;
+}
+}
+	r14 = 48;
+}
+}
+} while(0);
+	r6 = heap32[(fp+-36)];
+	r7 = r11 | r10;
+	if(r7 !=0) //_LBB801_77
+{
+	r7 = 0;
+	r5 = r5 << 24;
+	r5 = r5 >> 24;
+	if(r5 <1) //_LBB801_79
+{
+	r9 = r16 & 255;
+	r5 = r9 != r7;
+	r5 = r5 & 1;
+	if(r9 !=0) //_LBB801_81
+{
+__label__ = 75;
+}
+else{
+__label__ = 76;
+}
+}
+else{
+__label__ = 75;
+}
+if (__label__ == 75){
+	r4 = (r4 - r5)|0;
+	r10 = (r10 - r5)|0;
+	r9 = (r6 + r5)|0;
+	heap32[(fp+-36)] = r9;
+}
+	r8 = r8 & 255;
+	r9 = r8 != r7;
+	r7 = r10 == r7;
+	r7 = r9 & r7;
+	r7 = r7 != 0 ? r11 : r10;
+	r8 = r8 == 0 ? r4 : r11;
+	r9 = r12 & 255;
+if(!(r9 !=0)) //_LBB801_85
+{
+	r10 = r1 & 255;
+if(!(r10 !=32)) //_LBB801_85
+{
+	r11 = sp + -8;
+	r12 = (r7 - r8)|0;
+	heap32[(g0)] = r11;
+	heap32[(g0+1)] = r2;
+	heap32[(g0+2)] = r12;
+	heap32[(g0+3)] = r10;
+	write_pad(i7);
+	r10 = r_g0;
+	if(r10 !=0) //_LBB801_210
+{
+__label__ = 198;
+break _1;
+}
+}
+}
+if(!(r5 ==0)) //_LBB801_89
+{
+	if(r5 <0) //_LBB801_210
+{
+__label__ = 198;
+break _1;
+}
+else{
+	r10 = heap32[(fp+-2)];
+	r11 = (r10 + r5)|0;
+	if(uint(r11) <uint(r10)) //_LBB801_210
+{
+__label__ = 198;
+break _1;
+}
+else{
+	r10 = r2 >> 2;
+	r11 = heap32[(r10+1)];
+	r10 = heap32[(r10)];
+	heap32[(g0)] = r6;
+	heap32[(g0+1)] = r5;
+	heap32[(g0+2)] = r10;
+	__FUNCTION_TABLE__[(r11)>>2](i7);
+	r6 = heap32[(fp+-2)];
+	r5 = (r6 + r5)|0;
+	heap32[(fp+-2)] = r5;
+}
+}
+}
+if(!(r9 !=0)) //_LBB801_92
+{
+	r5 = r1 & 255;
+if(!(r5 ==32)) //_LBB801_92
+{
+	r6 = sp + -8;
+	r10 = (r7 - r8)|0;
+	heap32[(g0)] = r6;
+	heap32[(g0+1)] = r2;
+	heap32[(g0+2)] = r10;
+	heap32[(g0+3)] = r5;
+	write_pad(i7);
+	r5 = r_g0;
+	if(r5 !=0) //_LBB801_210
+{
+__label__ = 198;
+break _1;
+}
+}
+}
+	r5 = sp + -8;
+	r6 = (r8 - r4)|0;
+	heap32[(g0)] = r5;
+	heap32[(g0+1)] = r2;
+	heap32[(g0+2)] = r6;
+	heap32[(g0+3)] = r14;
+	write_pad(i7);
+	r14 = r_g0;
+	if(r14 !=0) //_LBB801_210
+{
+__label__ = 198;
+break _1;
+}
+else{
+	if(r4 <0) //_LBB801_210
+{
+__label__ = 198;
+break _1;
+}
+else{
+	r14 = heap32[(fp+-2)];
+	r6 = (r14 + r4)|0;
+	if(uint(r6) <uint(r14)) //_LBB801_210
+{
+__label__ = 198;
+break _1;
+}
+else{
+	r14 = r2 >> 2;
+	r6 = heap32[(r14+1)];
+	r14 = heap32[(r14)];
+	r10 = heap32[(fp+-36)];
+	heap32[(g0)] = r10;
+	heap32[(g0+1)] = r4;
+	heap32[(g0+2)] = r14;
+	__FUNCTION_TABLE__[(r6)>>2](i7);
+	r14 = heap32[(fp+-2)];
+	r4 = (r14 + r4)|0;
+	heap32[(fp+-2)] = r4;
+	if(r9 ==0) //_LBB801_207
+{
+continue _1;
+}
+else{
+	r4 = (r7 - r8)|0;
+	r14 = r1 & 255;
+	heap32[(g0)] = r5;
+	heap32[(g0+1)] = r2;
+	heap32[(g0+2)] = r4;
+	heap32[(g0+3)] = r14;
+	write_pad(i7);
+	r4 = r_g0;
+	if(r4 ==0) //_LBB801_207
+{
+continue _1;
+}
+else{
+__label__ = 198;
+break _1;
+}
+}
+}
+}
+}
+}
+else{
+	if(r4 <0) //_LBB801_210
+{
+__label__ = 198;
+break _1;
+}
+else{
+	r14 = heap32[(fp+-2)];
+	r1 = (r14 + r4)|0;
+	if(uint(r1) <uint(r14)) //_LBB801_210
+{
+__label__ = 198;
+break _1;
+}
+else{
+	r14 = r2 >> 2;
+	r1 = heap32[(r14+1)];
+	r14 = heap32[(r14)];
+	heap32[(g0)] = r6;
+	heap32[(g0+1)] = r4;
+	heap32[(g0+2)] = r14;
+	__FUNCTION_TABLE__[(r1)>>2](i7);
+	r14 = heap32[(fp+-2)];
+	r4 = (r14 + r4)|0;
+	heap32[(fp+-2)] = r4;
+continue _1;
+}
+}
+}
+}
+}
+}
+switch(__label__ ){//multiple entries
+case 197:
+	r0 = heap32[(fp+-2)];
+	r_g0 = r0;
+	return;
+break;
+case 198:
+	r0 = -1;
+	r_g0 = r0;
+	return;
+break;
+}
+}
+
+function fprintf(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+var __label__ = 0;
+	i7 = sp + -32;var g0 = i7>>2; // save stack
+	r0 = sp + -8;
+	r1 = r0 >> 2;
+	r2 = __fwrite__index__;
+	heap32[(fp+-3)] = sp;
+	heap32[(r1+1)] = r2;
+	heap32[(fp+-2)] = 3;
+	r1 = _2E_str3133;
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r1;
+	heap32[(g0+2)] = sp;
+	__v_printf(i7);
+	return;
+}
+
+function vsnprintf(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+	var r6;
+	var r7;
+	var r8;
+	var r9;
+var __label__ = 0;
+	i7 = sp + -40;var g0 = i7>>2; // save stack
+	r0 = sp + -16;
+	r1 = heap32[(fp+1)];
+	r2 = r0 >> 2;
+	r3 = heap32[(fp)];
+	heap32[(r2+1)] = 0;
+	r4 = (r1 + -1)|0;
+	r5 = 0;
+	r6 = sp + -24;
+	r7 = r1 == 0 ? r5 : r4;
+	heap32[(fp+-4)] = r3;
+	r8 = r6 >> 2;
+	r9 = swrite__index__;
+	heap32[(r2+2)] = r7;
+	heap32[(r8+1)] = r9;
+	heap32[(fp+-6)] = r0;
+	r0 = heap32[(fp+2)];
+	r2 = heap32[(fp+3)];
+	heap32[(g0)] = r6;
+	heap32[(g0+1)] = r0;
+	heap32[(g0+2)] = r2;
+	__v_printf(i7);
+	r0 = r_g0;
+if(!(r3 ==0)) //_LBB803_7
+{
+if(!(r1 ==0)) //_LBB803_7
+{
+if(!(r0 <0)) //_LBB803_7
+{
+if(!(r1 ==-1)) //_LBB803_6
+{
+if(!(uint(r0) <uint(r1))) //_LBB803_6
+{
+	heap8[r3+r4] = r5;
+	r_g0 = r0;
+	return;
+}
+}
+	heap8[r3+r0] = r5;
+}
+}
+}
+	r_g0 = r0;
+	return;
+}
+
+function sprintf(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+	var r6;
+var __label__ = 0;
+	i7 = sp + -48;var g0 = i7>>2; // save stack
+	r0 = (sp + 8)|0;
+	r1 = sp + -16;
+	r2 = r1 >> 2;
+	heap32[(fp+-7)] = r0;
+	r3 = heap32[(fp)];
+	heap32[(r2+1)] = 0;
+	r4 = sp + -24;
+	heap32[(fp+-4)] = r3;
+	r5 = r4 >> 2;
+	r6 = swrite__index__;
+	heap32[(r2+2)] = -2;
+	heap32[(r5+1)] = r6;
+	heap32[(fp+-6)] = r1;
+	r1 = heap32[(fp+1)];
+	heap32[(g0)] = r4;
+	heap32[(g0+1)] = r1;
+	heap32[(g0+2)] = r0;
+	__v_printf(i7);
+	r0 = r_g0;
+if(!(r3 ==0)) //_LBB804_3
+{
+if(!(r0 <0)) //_LBB804_3
+{
+	r1 = 0;
+	heap8[r3+r0] = r1;
+}
+}
+	r_g0 = r0;
+	return;
+}
+
+function _ZN12mandreel_b64L11b64_encode_EPKhjPcjjPNS_6B64_RCE(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+	var r6;
+	var r7;
+	var r8;
+	var r9;
+	var r10;
+	var r11;
+	var r12;
+var __label__ = 0;
+	i7 = sp + -32;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp+1)];
+	r1 = (r0 + 2)|0;
+	r2 = heap32[(fp+4)];
+	r1 = Math.floor(uint(r1) / uint(3));
+	r3 = heap32[(fp+2)];
+	r1 = r1 << 2;
+	r4 = r2 >> 2;
+	heap32[(r4)] = 0;
+_1: do {
+if(!(r3 ==0)) //_LBB805_20
+{
+	r5 = heap32[(fp+3)];
+	if(uint(r1) <=uint(r5)) //_LBB805_3
+{
+	r4 = heap32[(fp)];
+	if(uint(r0) >uint(2)) //_LBB805_5
+{
+	r5 = (r3 + r5)|0;
+	r6 = 0;
+	r12 = _ZN12mandreel_b64L9b64_charsE;
+_7: while(true){
+	r7 = heapU8[r4];
+	r8 = heapU8[r4+1];
+	r9 = r7 << 4;
+	r10 = heapU8[r4+2];
+	r11 = r8 << 2;
+	r9 = r9 & 48;
+	r8 = r8 >>> 4;
+	r7 = r7 >>> 2;
+	r8 = r9 | r8;
+	r9 = r11 & 60;
+	r11 = r10 >>> 6;
+	r7 = heapU8[r12+r7];
+	r9 = r9 | r11;
+	r8 = heapU8[r12+r8];
+	heap8[r3] = r7;
+	r7 = r10 & 63;
+	r9 = heapU8[r12+r9];
+	heap8[r3+1] = r8;
+	r8 = (r3 + 4)|0;
+	r6 = (r6 + 4)|0;
+	r7 = heapU8[r12+r7];
+	heap8[r3+2] = r9;
+	heap8[r3+3] = r7;
+	if(r8 ==r5) //_LBB805_8
+{
+__label__ = 7;
+}
+else{
+	if(r6 ==0) //_LBB805_9
+{
+	r7 = 13;
+	r8 = (r3 + 6)|0;
+	r6 = 0;
+	r9 = 10;
+	heap8[r3+4] = r7;
+	heap8[r3+5] = r9;
+	r3 = r8;
+__label__ = 9;
+}
+else{
+__label__ = 7;
+}
+}
+if (__label__ == 7){
+	r3 = r8;
+}
+	r0 = (r0 + -3)|0;
+	r4 = (r4 + 3)|0;
+if(!(uint(r0) >uint(2))) //_LBB805_6
+{
+break _7;
+}
+}
+}
+if(!(r0 ==0)) //_LBB805_20
+{
+	r5 = 0;
+_17: while(true){
+	r6 = sp + -3;
+	r7 = (r4 - r5)|0;
+	r8 = (r5 + -1)|0;
+	r5 = (r6 - r5)|0;
+	r7 = heapU8[r7];
+	heap8[r5] = r7;
+	r7 = (r0 + r8)|0;
+	r5 = r8;
+if(!(r7 !=0)) //_LBB805_13
+{
+break _17;
+}
+}
+	if(r0 !=3) //_LBB805_16
+{
+	r4 = 3;
+	r5 = (r4 - r0)|0;
+	r8 = 0;
+_22: while(true){
+	r7 = (r5 + -1)|0;
+	r5 = (r6 - r5)|0;
+	heap8[r5+3] = r8;
+	r5 = r7;
+if(!(r7 !=0)) //_LBB805_17
+{
+break _22;
+}
+}
+	heap32[(g0)] = r6;
+	heap32[(g0+1)] = 3;
+	heap32[(g0+2)] = r3;
+	heap32[(g0+3)] = 12;
+	heap32[(g0+4)] = r2;
+	r0 = (r4 - r0)|0;
+	_ZN12mandreel_b64L11b64_encode_EPKhjPcjjPNS_6B64_RCE(i7);
+	r4 = 61;
+_25: while(true){
+	r2 = (r0 + -1)|0;
+	r0 = (r3 - r0)|0;
+	heap8[r0+4] = r4;
+	r0 = r2;
+	if(r2 !=0) //_LBB805_19
+{
+continue _25;
+}
+else{
+break _1;
+}
+}
+}
+else{
+	heap32[(g0)] = r6;
+	heap32[(g0+1)] = 3;
+	heap32[(g0+2)] = r3;
+	heap32[(g0+3)] = 12;
+	heap32[(g0+4)] = r2;
+	_ZN12mandreel_b64L11b64_encode_EPKhjPcjjPNS_6B64_RCE(i7);
+	r_g0 = r1;
+	return;
+}
+}
+}
+else{
+	heap32[(r4)] = 1;
+	r0 = 0;
+	r_g0 = r0;
+	return;
+}
+}
+} while(0);
+	r_g0 = r1;
+	return;
+}
+
+function _ZN12mandreel_b6410b64_decodeEPKcjPvj(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+	var r6;
+	var r7;
+var __label__ = 0;
+	i7 = sp + -8;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp+1)];
+	r1 = r0 & 3;
+	r2 = 0;
+	r1 = r1 != r2;
+	r1 = r1 & 1;
+	r3 = r0 >>> 2;
+	r1 = (r1 + r3)|0;
+	r3 = heap32[(fp+2)];
+	r1 = (r1 * 3)|0;
+	if(r3 !=0) //_LBB806_2
+{
+	r4 = heap32[(fp+3)];
+	if(uint(r1) <=uint(r4)) //_LBB806_4
+{
+	r1 = heap32[(fp)];
+	r4 = r3;
+	r5 = r2;
+_5: while(true){
+	if(r0 !=0) //_LBB806_5
+{
+	r6 = heapU8[r1];
+	if(r6 !=61) //_LBB806_7
+{
+	r7 = _ZN12mandreel_b64L11b64_indexesE;
+	r6 = heapU8[r7+r6];
+	if(r6 !=255) //_LBB806_9
+{
+	r5 = 0;
+	r7 = sp + -4;
+	heap8[r7+r2] = r6;
+__label__ = 8;
+}
+else{
+__label__ = 15;
+}
+}
+else{
+	r5 = (r5 + 1)|0;
+	r6 = sp + -4;
+	r7 = 0;
+	heap8[r6+r2] = r7;
+__label__ = 8;
+}
+if (__label__ == 8){
+	r2 = (r2 + 1)|0;
+	if(r2 ==4) //_LBB806_12
+{
+	r2 = heapU8[sp+-3];
+	r6 = heapU8[sp+-4];
+	r2 = r2 >>> 4;
+	r2 = r2 & 3;
+	r6 = r6 << 2;
+	r2 = r2 | r6;
+	heap8[r4] = r2;
+	if(r5 !=2) //_LBB806_14
+{
+	r2 = heapU8[sp+-2];
+	r6 = heapU8[sp+-3];
+	r2 = r2 >>> 2;
+	r2 = r2 & 15;
+	r6 = r6 << 4;
+	r2 = r2 | r6;
+	heap8[r4+1] = r2;
+	if(r5 !=1) //_LBB806_16
+{
+	r2 = heapU8[sp+-2];
+	r7 = heapU8[sp+-1];
+	r2 = r2 << 6;
+	r6 = (r4 + 3)|0;
+	r2 = (r2 + r7)|0;
+	heap8[r4+2] = r2;
+	if(r5 ==0) //_LBB806_18
+{
+	r2 = 0;
+	r4 = r6;
+	r5 = r2;
+}
+else{
+__label__ = 18;
+break _5;
+}
+}
+else{
+__label__ = 12;
+break _5;
+}
+}
+else{
+__label__ = 10;
+break _5;
+}
+}
+}
+	r0 = (r0 + -1)|0;
+	r1 = (r1 + 1)|0;
+}
+else{
+__label__ = 17;
+break _5;
+}
+}
+switch(__label__ ){//multiple entries
+case 17:
+	r6 = r4;
+break;
+case 12:
+	r6 = (r4 + 2)|0;
+break;
+case 10:
+	r6 = (r4 + 1)|0;
+break;
+}
+	r1 = (r6 - r3)|0;
+}
+else{
+	r1 = 0;
+}
+}
+	r_g0 = r1;
+	return;
+}
+
+function __mandreel_internal_SetResolution(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+var __label__ = 0;
+	i7 = sp + 0;var g0 = i7>>2; // save stack
+	r0 = _ZL25s_mandreel_internal_width;
+	r1 = _ZL26s_mandreel_internal_height;
+	r0 = r0 >> 2;
+	r2 = heap32[(fp)];
+	r1 = r1 >> 2;
+	r3 = heap32[(fp+1)];
+	heap32[(r0)] = r2;
+	heap32[(r1)] = r3;
+	return;
+}
+
+function __keyEvent(sp)
+{
+	var i7;
+	var fp = sp>>2;
+var __label__ = 0;
+	i7 = sp + 0;var g0 = i7>>2; // save stack
+	return;
+}
+
+function __mouseDoubleClick(sp)
+{
+	var i7;
+	var fp = sp>>2;
+var __label__ = 0;
+	i7 = sp + 0;var g0 = i7>>2; // save stack
+	return;
+}
+
+function __mouseMove(sp)
+{
+	var i7;
+	var fp = sp>>2;
+var __label__ = 0;
+	i7 = sp + 0;var g0 = i7>>2; // save stack
+	return;
+}
+
+function __resize(sp)
+{
+	var i7;
+	var fp = sp>>2;
+var __label__ = 0;
+	i7 = sp + 0;var g0 = i7>>2; // save stack
+	return;
+}
+
+function __mouseButton(sp)
+{
+	var i7;
+	var fp = sp>>2;
+var __label__ = 0;
+	i7 = sp + 0;var g0 = i7>>2; // save stack
+	return;
+}
+
+function __mouseWheelDelta(sp)
+{
+	var i7;
+	var fp = sp>>2;
+var __label__ = 0;
+	i7 = sp + 0;var g0 = i7>>2; // save stack
+	return;
+}
+
+function iMandreel_TextureAsync_IsCompressed(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+	var r6;
+	var r7;
+	var r8;
+var __label__ = 0;
+	i7 = sp + -1032;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = heap32[(fp+1)];
+	r2 = heap32[(fp+2)];
+	r3 = sp + -1024;
+	r4 = 0;
+_1: while(true){
+	r5 = heapU8[r0];
+	if(r5 ==0) //_LBB814_5
+{
+break _1;
+}
+else{
+	r6 = r5 << 24;
+	r6 = r6 >> 24;
+	r6 = (r6 + -65)|0;
+	r7 = 26;
+	r8 = (r5 + 32)|0;
+	r5 = uint(r6) < uint(r7) ? r8 : r5;
+	r6 = r5 & 255;
+	r7 = 47;
+	r5 = r6 == 92 ? r7 : r5;
+	r0 = (r0 + 1)|0;
+	r6 = r5 & 255;
+if(!(r6 !=47)) //_LBB814_4
+{
+	r6 = r4 & 255;
+	r4 = r5;
+	if(r6 ==47) //_LBB814_1
+{
+continue _1;
+}
+}
+	r4 = (r3 + 1)|0;
+	heap8[r3] = r5;
+	r3 = r4;
+	r4 = r5;
+continue _1;
+}
+}
+	r0 = _ZL24g_pFirstTextureAsyncInfo;
+	r4 = 0;
+	heap8[r3] = r4;
+_8: while(true){
+	r0 = r0 >> 2;
+	r0 = heap32[(r0)];
+	if(r0 !=0) //_LBB814_6
+{
+	r3 = sp + -1024;
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r3;
+	strcmp(i7);
+	r3 = r_g0;
+	if(r3 !=0) //_LBB814_8
+{
+	r0 = (r0 + 280)|0;
+continue _8;
+}
+else{
+__label__ = 7;
+break _8;
+}
+}
+else{
+__label__ = 10;
+break _8;
+}
+}
+switch(__label__ ){//multiple entries
+case 10:
+	r0 = -1;
+	r_g0 = r0;
+	return;
+break;
+case 7:
+	r0 = r0 >> 2;
+	r1 = r1 >> 2;
+	r3 = heap32[(r0+65)];
+	heap32[(r1)] = r3;
+	r1 = r2 >> 2;
+	r2 = heap32[(r0+66)];
+	heap32[(r1)] = r2;
+	r0 = heap32[(r0+67)];
+	r_g0 = r0;
+	return;
+break;
+}
+}
+
+function iMandreel_TextureAsync_GetPackOffset(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+	var r6;
+	var r7;
+	var r8;
+	var r9;
+var __label__ = 0;
+	i7 = sp + -1032;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = heap32[(fp+1)];
+	r2 = heap32[(fp+2)];
+	r3 = heap32[(fp+3)];
+	r4 = sp + -1024;
+	r5 = 0;
+_1: while(true){
+	r6 = heapU8[r0];
+	if(r6 ==0) //_LBB815_5
+{
+break _1;
+}
+else{
+	r7 = r6 << 24;
+	r7 = r7 >> 24;
+	r7 = (r7 + -65)|0;
+	r8 = 26;
+	r9 = (r6 + 32)|0;
+	r6 = uint(r7) < uint(r8) ? r9 : r6;
+	r7 = r6 & 255;
+	r8 = 47;
+	r6 = r7 == 92 ? r8 : r6;
+	r0 = (r0 + 1)|0;
+	r7 = r6 & 255;
+if(!(r7 !=47)) //_LBB815_4
+{
+	r7 = r5 & 255;
+	r5 = r6;
+	if(r7 ==47) //_LBB815_1
+{
+continue _1;
+}
+}
+	r5 = (r4 + 1)|0;
+	heap8[r4] = r6;
+	r4 = r5;
+	r5 = r6;
+continue _1;
+}
+}
+	r0 = _ZL24g_pFirstTextureAsyncInfo;
+	r5 = 0;
+	heap8[r4] = r5;
+_8: while(true){
+	r0 = r0 >> 2;
+	r0 = heap32[(r0)];
+	if(r0 !=0) //_LBB815_6
+{
+	r4 = sp + -1024;
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r4;
+	strcmp(i7);
+	r4 = r_g0;
+if(!(r4 !=0)) //_LBB815_9
+{
+	r4 = r0 >> 2;
+	r5 = heap32[(r4+64)];
+if(!(r5 ==-1)) //_LBB815_9
+{
+__label__ = 8;
+break _8;
+}
+}
+	r0 = (r0 + 280)|0;
+continue _8;
+}
+else{
+__label__ = 11;
+break _8;
+}
+}
+switch(__label__ ){//multiple entries
+case 11:
+	r0 = 0;
+	r_g0 = r0;
+	return;
+break;
+case 8:
+	r0 = r1 >> 2;
+	r1 = heap32[(r4+68)];
+	heap32[(r0)] = r1;
+	r0 = r2 >> 2;
+	r1 = heap32[(r4+69)];
+	heap32[(r0)] = r1;
+	r0 = heap32[(r4+64)];
+	r1 = _ZL17g_apPackFileNames;
+	r0 = r0 << 2;
+	r0 = (r1 + r0)|0;
+	r0 = r0 >> 2;
+	r0 = heap32[(r0)];
+	heap32[(g0)] = r3;
+	heap32[(g0+1)] = r0;
+	strcpy(i7);
+	r0 = 1;
+	r_g0 = r0;
+	return;
+break;
+}
+}
+
+function _Z31MandreelDefaultDebugMsgCallbackiPKc(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+var __label__ = 0;
+	i7 = sp + -8;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp+1)];
+	heap32[(g0)] = r0;
+	__sandbox_OutputDebugString(i7);
+	return;
+}
+
+function printf(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+var __label__ = 0;
+	i7 = sp + -16408;var g0 = i7>>2; // save stack
+	r0 = (sp + 4)|0;
+	heap32[(fp+-4097)] = r0;
+	r1 = sp + -16384;
+	r2 = heap32[(fp)];
+	heap32[(g0)] = r1;
+	heap32[(g0+1)] = 16384;
+	heap32[(g0+2)] = r2;
+	heap32[(g0+3)] = r0;
+	r0 = g_msgcallback;
+	r0 = r0 >> 2;
+	vsnprintf(i7);
+	r0 = heap32[(r0)];
+if(!(r0 ==0)) //_LBB817_2
+{
+	heap32[(g0)] = r1;
+	__sandbox_OutputDebugString(i7);
+}
+	return;
+}
+
+function _printf_error(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+var __label__ = 0;
+	i7 = sp + -16408;var g0 = i7>>2; // save stack
+	r0 = (sp + 4)|0;
+	heap32[(fp+-4097)] = r0;
+	r1 = sp + -16384;
+	r2 = heap32[(fp)];
+	heap32[(g0)] = r1;
+	heap32[(g0+1)] = 16384;
+	heap32[(g0+2)] = r2;
+	heap32[(g0+3)] = r0;
+	r0 = g_msgcallback;
+	r0 = r0 >> 2;
+	vsnprintf(i7);
+	r0 = heap32[(r0)];
+if(!(r0 ==0)) //_LBB818_2
+{
+	heap32[(g0)] = r1;
+	__sandbox_OutputDebugString(i7);
+}
+	return;
+}
+
+function _printf_warning(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+var __label__ = 0;
+	i7 = sp + -16408;var g0 = i7>>2; // save stack
+	r0 = (sp + 4)|0;
+	heap32[(fp+-4097)] = r0;
+	r1 = sp + -16384;
+	r2 = heap32[(fp)];
+	heap32[(g0)] = r1;
+	heap32[(g0+1)] = 16384;
+	heap32[(g0+2)] = r2;
+	heap32[(g0+3)] = r0;
+	r0 = g_msgcallback;
+	r0 = r0 >> 2;
+	vsnprintf(i7);
+	r0 = heap32[(r0)];
+if(!(r0 ==0)) //_LBB819_2
+{
+	heap32[(g0)] = r1;
+	__sandbox_OutputDebugString(i7);
+}
+	return;
+}
+
+function __mandreel_internal_preupdate(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+	var r6;
+	var r7;
+var __label__ = 0;
+	i7 = sp + -24;var g0 = i7>>2; // save stack
+	r0 = sp + -8;
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = 0;
+	r1 = _ZGVZ21Mandreel_GetTickCountE7s_first;
+	gettimeofday(i7);
+	r2 = heapU8[r1];
+if(!(r2 !=0)) //_LBB820_2
+{
+	r2 = heap32[(fp+-2)];
+	r3 = r2 >> 31;
+	heap32[(g0)] = r2;
+	heap32[(g0+1)] = r3;
+	heap32[(g0+2)] = 1000000;
+	heap32[(g0+3)] = 0;
+	r0 = r0 >> 2;
+	r0 = heap32[(r0+1)];
+	__muldi3(i7);
+	r4 = 1;
+	r5 = (r_g0 + r0)|0;
+	r6 = 0;
+	r7 = r0 >> 31;
+	r2 = uint(r5) < uint(r_g0) ? r4 : r6;
+	r6 = _ZZ21Mandreel_GetTickCountE7s_first;
+	r3 = (r_g1 + r7)|0;
+	r0 = uint(r5) < uint(r0) ? r4 : r2;
+	r2 = r6 >> 2;
+	r0 = (r3 + r0)|0;
+	heap32[(r2)] = r5;
+	heap32[(r2+1)] = r0;
+	heap8[r1] = r4;
+}
+	r0 = _ZZ29__mandreel_internal_preupdateE8s_bfirst_2E_b;
+	r1 = heapU8[r0];
+if(!(r1 != 0)) //_LBB820_4
+{
+	r1 = 1;
+	heap8[r0] = r1;
+}
+	return;
+}
+
+function __mandreel_internal_update(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+	var r6;
+	var r7;
+	var r8;
+	var r9;
+var __label__ = 0;
+	i7 = sp + -24;var g0 = i7>>2; // save stack
+	r0 = -32788;
+_1: while(true){
+	r1 = _ZL10s_aSockets;
+	r1 = (r1 - r0)|0;
+	r2 = heapU8[r1];
+if(!(r2 ==0)) //_LBB821_3
+{
+	r1 = r1 >> 2;
+	r1 = heap32[(r1+-1)];
+	heap32[(g0)] = r1;
+	heap32[(g0+1)] = 2048;
+	js_mandreel_flash_tcp_update(i7);
+}
+	r0 = (r0 + -32792)|0;
+	if(r0 !=-295124) //_LBB821_1
+{
+continue _1;
+}
+else{
+break _1;
+}
+}
+	r0 = _ZL7g_bInit_2E_b;
+	r1 = heapU8[r0];
+	if(r1 != 0) //_LBB821_6
+{
+	mandreel_audio_update(i7);
+	r1 = sp + -8;
+	heap32[(g0)] = r1;
+	heap32[(g0+1)] = 0;
+	gettimeofday(i7);
+	r2 = heap32[(fp+-2)];
+	r3 = r2 >> 31;
+	heap32[(g0)] = r2;
+	heap32[(g0+1)] = r3;
+	heap32[(g0+2)] = 1000000;
+	heap32[(g0+3)] = 0;
+	r1 = r1 >> 2;
+	r1 = heap32[(r1+1)];
+	__muldi3(i7);
+	r4 = (r_g0 + r1)|0;
+	r5 = 1;
+	r6 = 0;
+	r7 = r1 >> 31;
+	r2 = uint(r4) < uint(r_g0) ? r5 : r6;
+	r3 = (r_g1 + r7)|0;
+	r1 = uint(r4) < uint(r1) ? r5 : r2;
+	r1 = (r3 + r1)|0;
+	r2 = _ZGVZ21Mandreel_GetTickCountE7s_first;
+	r3 = heapU8[r2];
+if(!(r3 !=0)) //_LBB821_8
+{
+	r3 = _ZZ21Mandreel_GetTickCountE7s_first;
+	r3 = r3 >> 2;
+	heap32[(r3)] = r4;
+	heap32[(r3+1)] = r1;
+	heap8[r2] = r5;
+}
+	r2 = _ZZ21Mandreel_GetTickCountE7s_first;
+	r2 = r2 >> 2;
+	r3 = heap32[(r2)];
+	r2 = heap32[(r2+1)];
+	r1 = (r1 - r2)|0;
+	r2 = uint(r4) < uint(r3) ? r5 : r6;
+	r3 = (r4 - r3)|0;
+	r1 = (r1 - r2)|0;
+	heap32[(g0)] = r3;
+	heap32[(g0+1)] = r1;
+	heap32[(g0+2)] = 1000;
+	heap32[(g0+3)] = 0;
+	__udivdi3(i7);
+	r1 = r_g0;
+	r2 = _ZL11g_aChannels;
+_12: while(true){
+	if(r6 <32) //_LBB821_9
+{
+	r3 = r2 >> 2;
+	r4 = heap32[(r3+72)];
+if(!(r4 !=1)) //_LBB821_33
+{
+	r4 = _ZL11g_aChannels;
+	r7 = (r6 * 292)|0;
+	r4 = (r4 + r7)|0;
+	r7 = heapU8[r4+268];
+if(!(r7 !=0)) //_LBB821_33
+{
+	r7 = heap32[(r3+71)];
+	if(r7 ==-1) //_LBB821_13
+{
+	r7 = heapU8[r0];
+	if(r7 !=1) //_LBB821_15
+{
+__label__ = 14;
+break _12;
+}
+else{
+	r7 = _ZL21g_pFirstSoundDuration;
+_21: while(true){
+	r7 = r7 >> 2;
+	r7 = heap32[(r7)];
+	if(r7 !=0) //_LBB821_16
+{
+	heap32[(g0)] = r7;
+	heap32[(g0+1)] = r2;
+	strcmp(i7);
+	r8 = r_g0;
+	if(r8 !=0) //_LBB821_18
+{
+	r7 = (r7 + 260)|0;
+}
+else{
+__label__ = 16;
+break _21;
+}
+}
+else{
+__label__ = 19;
+break _21;
+}
+}
+switch(__label__ ){//multiple entries
+case 19:
+	r7 = _2E_str3224;
+	heap32[(g0)] = r7;
+	heap32[(g0+1)] = r2;
+	r7 = 0;
+	_printf_warning(i7);
+break;
+case 16:
+	r7 = r7 >> 2;
+	r7 = heap32[(r7+64)];
+break;
+}
+	heap32[(r3+71)] = r7;
+}
+}
+	r8 = heap32[(r3+70)];
+	r7 = (r8 + r7)|0;
+if(!(uint(r7) >uint(r1))) //_LBB821_33
+{
+	r7 = heapU8[r0];
+	if(r7 != 0) //_LBB821_25
+{
+	r7 = (r6 + -1)|0;
+if(!(uint(r7) >uint(30))) //_LBB821_33
+{
+	r7 = heapU8[r4+269];
+if(!(r7 !=0)) //_LBB821_33
+{
+if(!(uint(r6) >uint(31))) //_LBB821_29
+{
+	r7 = heap32[(r3+68)];
+	r8 = heap32[(r3+69)];
+	heap32[(g0)] = r2;
+	heap32[(g0+1)] = r8;
+	heap32[(g0+2)] = r7;
+	mandreel_audio_stopChannel(i7);
+	heap32[(r3+72)] = 0;
+	heap32[(r3+68)] = -1;
+}
+	r3 = _ZL15g_iFreeChannels;
+	r3 = r3 >> 2;
+	heap8[r4+269] = r5;
+	r4 = heap32[(r3)];
+	r7 = (r4 + -1)|0;
+_37: do {
+if(!(r7 <0)) //_LBB821_32
+{
+	r7 = r4;
+_39: while(true){
+	r8 = _ZL15g_aFreeChannels;
+	r9 = r7 << 2;
+	r8 = (r8 + r9)|0;
+	r8 = r8 >> 2;
+	r9 = heap32[(r8+-1)];
+	r7 = (r7 + -1)|0;
+	heap32[(r8)] = r9;
+if(!(r7 !=0)) //_LBB821_31
+{
+break _37;
+}
+}
+}
+} while(0);
+	r7 = _ZL15g_aFreeChannels;
+	r7 = r7 >> 2;
+	r4 = (r4 + 1)|0;
+	heap32[(r7)] = r6;
+	heap32[(r3)] = r4;
+}
+}
+}
+else{
+__label__ = 23;
+break _12;
+}
+}
+}
+}
+	r6 = (r6 + 1)|0;
+	r2 = (r2 + 292)|0;
+}
+else{
+__label__ = 34;
+break _12;
+}
+}
+switch(__label__ ){//multiple entries
+case 34:
+	return;
+break;
+case 14:
+	r7 = _2E_str221;
+	r0 = _2E_str1222;
+	heap32[(g0)] = r7;
+	heap32[(g0+1)] = r0;
+	heap32[(g0+2)] = 341;
+	_assert(i7);
+break;
+case 23:
+	r0 = _2E_str221;
+	r1 = _2E_str1222;
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r1;
+	heap32[(g0+2)] = 621;
+	_assert(i7);
+break;
+}
+}
+else{
+	r0 = _2E_str221;
+	r1 = _2E_str1222;
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r1;
+	heap32[(g0+2)] = 361;
+	_assert(i7);
+}
+}
+
+function __mandreel_internal_init(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+	var r6;
+	var r7;
+	var r8;
+	var r9;
+	var r10;
+	var r11;
+	var r12;
+	var r13;
+	var r14;
+	var r15;
+	var r16;
+	var r17;
+	var r18;
+	var r19;
+	var r20;
+	var r21;
+var __label__ = 0;
+	i7 = sp + -2456;var g0 = i7>>2; // save stack
+	r0 = __mandreel_internal_SetResolution__index__;
+	r1 = _ZZ24__mandreel_internal_initE54s_723478567_mandreel___mandreel_internal_SetResolution;
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r1;
+	iMandreelRegisterExternalCallback(i7);
+	r0 = iMandreel_TextureAsync_IsCompressed__index__;
+	r1 = _ZZ24__mandreel_internal_initE56s_723478567_mandreel_iMandreel_TextureAsync_IsCompressed;
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r1;
+	iMandreelRegisterExternalCallback(i7);
+	r0 = iMandreel_TextureAsync_GetPackOffset__index__;
+	r1 = _ZZ24__mandreel_internal_initE57s_723478567_mandreel_iMandreel_TextureAsync_GetPackOffset;
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r1;
+	iMandreelRegisterExternalCallback(i7);
+	r0 = __resize__index__;
+	r1 = _ZZ24__mandreel_internal_initE29s_723478567_mandreel___resize;
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r1;
+	iMandreelRegisterExternalCallback(i7);
+	r0 = imandreel_restore_glcontext__index__;
+	r1 = _ZZ24__mandreel_internal_initE48s_723478567_mandreel_imandreel_restore_glcontext;
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r1;
+	iMandreelRegisterExternalCallback(i7);
+	r0 = imandreel_viewport_resize__index__;
+	r1 = _ZZ24__mandreel_internal_initE46s_723478567_mandreel_imandreel_viewport_resize;
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r1;
+	r0 = g_msgcallback;
+	r0 = r0 >> 2;
+	r1 = _Z31MandreelDefaultDebugMsgCallbackiPKc__index__;
+	iMandreelRegisterExternalCallback(i7);
+	r2 = _ZL7g_bInit_2E_b;
+	heap32[(r0)] = r1;
+	r0 = heapU8[r2];
+	if(r0 !=1) //_LBB822_2
+{
+	r0 = 1;
+	heap8[r2] = r0;
+	r1 = 0;
+	mandreel_audio_isLogEnabled(i7);
+	r2 = r_g0 != r1;
+	r3 = _ZL6g_bLog;
+	r2 = r2 & 1;
+	heap8[r3] = r2;
+	mandreel_audio_useMusicFunctions(i7);
+	r2 = heapU8[r3];
+	if(r2 !=0) //_LBB822_4
+{
+	r2 = _2E_str35256;
+	heap32[(g0)] = r2;
+	printf(i7);
+}
+else{
+	r1 = 0;
+}
+_6: while(true){
+	r2 = (r1 * 73)|0;
+	r3 = _ZL11g_aChannels;
+	r2 = r2 << 2;
+	r2 = (r3 + r2)|0;
+	r4 = (r1 * 292)|0;
+	r2 = r2 >> 2;
+	r5 = _ZL15g_aFreeChannels;
+	r6 = r1 << 2;
+	r5 = (r5 + r6)|0;
+	r3 = (r3 + r4)|0;
+	heap32[(r2+69)] = r1;
+	r2 = (r1 + 1)|0;
+	r4 = r5 >> 2;
+	heap8[r3+269] = r0;
+	heap32[(r4)] = r1;
+	r1 = r2;
+if(!(r2 !=32)) //_LBB822_5
+{
+break _6;
+}
+}
+	r1 = _ZL15g_iFreeChannels;
+	r1 = r1 >> 2;
+	heap32[(r1)] = 32;
+	mandreel_audio_init(i7);
+	r1 = _2E_str22243;
+	heap32[(g0)] = r1;
+	printf(i7);
+	heap32[(g0)] = 0;
+	_Z30mandreel_fopen_enable_checkfatb(i7);
+	r1 = _2E_str779;
+	r2 = _2E_str1648;
+	heap32[(g0)] = r1;
+	heap32[(g0+1)] = r2;
+	fopen(i7);
+	r3 = r_g0;
+	heap32[(g0)] = 1;
+	_Z30mandreel_fopen_enable_checkfatb(i7);
+	if(r3 ==0) //_LBB822_19
+{
+	r4 = _2E_str24245;
+	r5 = 0;
+	heap32[(g0)] = r4;
+	_printf_error(i7);
+	r4 = r5;
+}
+else{
+	if(uint(r3) <uint(10)) //_LBB822_9
+{
+	r4 = _ZL13s_file_stdout;
+	r5 = r4 >> 2;
+	r5 = heap32[(r5)];
+	r5 = r5 >> 2;
+	r5 = heap32[(r5+7)];
+	heap32[(g0)] = r4;
+	heap32[(g0+1)] = 0;
+	heap32[(g0+2)] = 2;
+	__FUNCTION_TABLE__[(r5)>>2](i7);
+}
+else{
+	r4 = r3 >> 2;
+	r4 = heap32[(r4)];
+	r4 = r4 >> 2;
+	r4 = heap32[(r4+7)];
+	heap32[(g0)] = r3;
+	heap32[(g0+1)] = 0;
+	heap32[(g0+2)] = 2;
+	__FUNCTION_TABLE__[(r4)>>2](i7);
+	r4 = r3;
+}
+	r5 = r4 >> 2;
+	r5 = heap32[(r5)];
+	r5 = r5 >> 2;
+	r5 = heap32[(r5+5)];
+	heap32[(g0)] = r4;
+	__FUNCTION_TABLE__[(r5)>>2](i7);
+	r4 = r_g0;
+	if(uint(r3) >uint(9)) //_LBB822_12
+{
+	r5 = r3;
+}
+else{
+	r5 = _ZL13s_file_stdout;
+}
+	r6 = r5 >> 2;
+	r6 = heap32[(r6)];
+	r6 = r6 >> 2;
+	r6 = heap32[(r6+7)];
+	heap32[(g0)] = r5;
+	heap32[(g0+1)] = 0;
+	heap32[(g0+2)] = 0;
+	__FUNCTION_TABLE__[(r6)>>2](i7);
+	r5 = (r4 + 1)|0;
+	heap32[(g0)] = r5;
+	malloc(i7);
+	r5 = r_g0;
+	if(uint(r3) <uint(10)) //_LBB822_15
+{
+	r6 = _ZL13s_file_stdout;
+	r7 = r6 >> 2;
+	r7 = heap32[(r7)];
+	r7 = r7 >> 2;
+	r7 = heap32[(r7+1)];
+	heap32[(g0)] = r6;
+	heap32[(g0+1)] = r5;
+	heap32[(g0+2)] = 1;
+	heap32[(g0+3)] = r4;
+	r8 = 0;
+	__FUNCTION_TABLE__[(r7)>>2](i7);
+	heap8[r5+r4] = r8;
+}
+else{
+	r6 = r3 >> 2;
+	r6 = heap32[(r6)];
+	r6 = r6 >> 2;
+	r6 = heap32[(r6+1)];
+	heap32[(g0)] = r3;
+	heap32[(g0+1)] = r5;
+	heap32[(g0+2)] = 1;
+	heap32[(g0+3)] = r4;
+	r7 = 0;
+	__FUNCTION_TABLE__[(r6)>>2](i7);
+	heap8[r5+r4] = r7;
+	r6 = r3;
+}
+	r7 = r6 >> 2;
+	r7 = heap32[(r7)];
+	r7 = r7 >> 2;
+	r7 = heap32[(r7+4)];
+	heap32[(g0)] = r6;
+	__FUNCTION_TABLE__[(r7)>>2](i7);
+	if(uint(r3) >uint(9)) //_LBB822_18
+{
+	heap32[(g0)] = r6;
+	_ZdlPv(i7);
+}
+}
+	r3 = sp + -128;
+	heap32[(g0)] = r3;
+	mandreel_audio_getAudioDriverName(i7);
+	r6 = _2E_str4225;
+	heap32[(g0)] = r3;
+	heap32[(g0+1)] = r6;
+	strcmp(i7);
+	r3 = r_g0;
+if(!(r5 ==0)) //_LBB822_198
+{
+_28: do {
+if(!(r4 <1)) //_LBB822_197
+{
+	r6 = sp + -1408;
+	r7 = (r6 + 1)|0;
+	r8 = (r5 + 1)|0;
+	r9 = 0;
+_30: while(true){
+	r10 = (r5 + r9)|0;
+	r11 = heapU8[r5+r9];
+if(!(r11 ==13)) //_LBB822_25
+{
+	if(r9 <r4) //_LBB822_26
+{
+	r11 = r9;
+_35: while(true){
+	r9 = (r11 + 1)|0;
+	r11 = heapU8[r8+r11];
+	if(r11 ==13) //_LBB822_29
+{
+break _35;
+}
+else{
+	r11 = r9;
+if(!(r9 <r4)) //_LBB822_27
+{
+break _35;
+}
+}
+}
+}
+}
+	r11 = _ZL10strtok_pos;
+	r12 = 0;
+	r11 = r11 >> 2;
+	heap8[r5+r9] = r12;
+	r13 = heap32[(r11)];
+	r9 = (r9 + 2)|0;
+	r10 = r10 == 0 ? r13 : r10;
+_39: while(true){
+	r13 = heapU8[r10];
+	if(r13 ==0) //_LBB822_47
+{
+__label__ = 44;
+break _39;
+}
+else{
+	r14 = r12;
+_42: while(true){
+	if(r14 ==-1) //_LBB822_36
+{
+__label__ = 34;
+break _39;
+}
+else{
+	r15 = _2E_str4133;
+	r15 = (r15 - r14)|0;
+	r16 = r13 & 255;
+	r15 = heapU8[r15];
+	if(r16 !=r15) //_LBB822_30
+{
+	r14 = (r14 + -1)|0;
+}
+else{
+break _42;
+}
+}
+}
+	r10 = (r10 + 1)|0;
+}
+}
+_47: do {
+if (__label__ == 34){
+	if(r13 ==0) //_LBB822_47
+{
+__label__ = 44;
+}
+else{
+	r12 = r10;
+_50: while(true){
+	r13 = heapU8[r12];
+	if(r13 ==0) //_LBB822_44
+{
+break _50;
+}
+else{
+	r14 = r0;
+_53: while(true){
+	if(r14 !=0) //_LBB822_38
+{
+	r15 = _2E_str4133;
+	r15 = (r15 - r14)|0;
+	r16 = r13 & 255;
+	r15 = heapU8[r15+1];
+	if(r16 ==r15) //_LBB822_44
+{
+break _50;
+}
+else{
+	r14 = (r14 + -1)|0;
+}
+}
+else{
+break _53;
+}
+}
+	r12 = (r12 + 1)|0;
+}
+}
+	r13 = heapU8[r12];
+	if(r13 !=0) //_LBB822_46
+{
+	r13 = (r12 + 1)|0;
+	r14 = 0;
+	heap8[r12] = r14;
+	r12 = r13;
+}
+	heap32[(r11)] = r12;
+	r13 = _2E_str26247;
+	heap32[(g0)] = r13;
+	heap32[(g0+1)] = r10;
+	strcmp(i7);
+	r13 = r_g0;
+	if(r13 !=0) //_LBB822_71
+{
+	r13 = _2E_str29250;
+	heap32[(g0)] = r13;
+	heap32[(g0+1)] = r10;
+	strcmp(i7);
+	r13 = r_g0;
+	if(r13 !=0) //_LBB822_154
+{
+	if(r3 !=0) //_LBB822_70
+{
+__label__ = 66;
+break _47;
+}
+else{
+	r13 = _2E_str32253;
+	heap32[(g0)] = r13;
+	heap32[(g0+1)] = r10;
+	strcmp(i7);
+	r13 = r_g0;
+	if(r13 !=0) //_LBB822_176
+{
+	r13 = _2E_str33254;
+	heap32[(g0)] = r13;
+	heap32[(g0+1)] = r10;
+	strcmp(i7);
+	r10 = r_g0;
+	if(r10 !=0) //_LBB822_70
+{
+__label__ = 66;
+break _47;
+}
+else{
+__label__ = 173; //SET chanka
+_69: while(true){
+	r10 = heapU8[r12];
+	if(r10 ==0) //_LBB822_184
+{
+__label__ = 175;
+break _69;
+}
+else{
+	r13 = 0;
+_72: while(true){
+	if(r13 ==-1) //_LBB822_185
+{
+__label__ = 176;
+break _69;
+}
+else{
+	r14 = _2E_str4133;
+	r14 = (r14 - r13)|0;
+	r15 = r10 & 255;
+	r14 = heapU8[r14];
+	if(r15 !=r14) //_LBB822_178
+{
+	r13 = (r13 + -1)|0;
+}
+else{
+break _72;
+}
+}
+}
+	r12 = (r12 + 1)|0;
+}
+}
+if (__label__ == 176){
+	if(r10 ==0) //_LBB822_184
+{
+__label__ = 175;
+}
+else{
+	r13 = r12;
+_80: while(true){
+	r10 = heapU8[r13];
+	if(r10 ==0) //_LBB822_193
+{
+break _80;
+}
+else{
+	r14 = 1;
+_83: while(true){
+	if(r14 !=0) //_LBB822_187
+{
+	r15 = _2E_str4133;
+	r15 = (r15 - r14)|0;
+	r16 = r10 & 255;
+	r15 = heapU8[r15+1];
+	if(r16 ==r15) //_LBB822_193
+{
+break _80;
+}
+else{
+	r14 = (r14 + -1)|0;
+}
+}
+else{
+break _83;
+}
+}
+	r13 = (r13 + 1)|0;
+}
+}
+	r10 = heapU8[r13];
+	if(r10 !=0) //_LBB822_195
+{
+	r14 = (r13 + 1)|0;
+	r10 = 0;
+	heap8[r13] = r10;
+	r10 = r12;
+	r12 = r14;
+__label__ = 187;
+}
+else{
+	r10 = r12;
+	r12 = r13;
+__label__ = 187;
+}
+}
+}
+if (__label__ == 175){
+	r10 = 0;
+}
+	heap32[(r11)] = r12;
+	r11 = sp + -384;
+	heap32[(g0)] = r11;
+	heap32[(g0+1)] = r10;
+	strcpy(i7);
+__label__ = 66;
+break _47;
+}
+}
+else{
+_95: while(true){
+	r10 = heapU8[r12];
+	if(r10 ==0) //_LBB822_163
+{
+__label__ = 155;
+break _95;
+}
+else{
+	r13 = 0;
+_98: while(true){
+	if(r13 ==-1) //_LBB822_164
+{
+__label__ = 156;
+break _95;
+}
+else{
+	r14 = _2E_str4133;
+	r14 = (r14 - r13)|0;
+	r15 = r10 & 255;
+	r14 = heapU8[r14];
+	if(r15 !=r14) //_LBB822_157
+{
+	r13 = (r13 + -1)|0;
+}
+else{
+break _98;
+}
+}
+}
+	r12 = (r12 + 1)|0;
+}
+}
+if (__label__ == 156){
+	if(r10 ==0) //_LBB822_163
+{
+__label__ = 155;
+}
+else{
+	r13 = r12;
+_106: while(true){
+	r10 = heapU8[r13];
+	if(r10 ==0) //_LBB822_172
+{
+break _106;
+}
+else{
+	r14 = 1;
+_109: while(true){
+	if(r14 !=0) //_LBB822_166
+{
+	r15 = _2E_str4133;
+	r15 = (r15 - r14)|0;
+	r16 = r10 & 255;
+	r15 = heapU8[r15+1];
+	if(r16 ==r15) //_LBB822_172
+{
+break _106;
+}
+else{
+	r14 = (r14 + -1)|0;
+}
+}
+else{
+break _109;
+}
+}
+	r13 = (r13 + 1)|0;
+}
+}
+	r10 = heapU8[r13];
+	if(r10 !=0) //_LBB822_174
+{
+	r14 = (r13 + 1)|0;
+	r10 = 0;
+	heap8[r13] = r10;
+	r10 = r12;
+	r12 = r14;
+__label__ = 167;
+}
+else{
+	r10 = r12;
+	r12 = r13;
+__label__ = 167;
+}
+}
+}
+if (__label__ == 155){
+	r10 = 0;
+}
+	heap32[(r11)] = r12;
+	r11 = sp + -2432;
+	r12 = _2E_str12233;
+	r13 = sp + -384;
+	heap32[(g0)] = r11;
+	heap32[(g0+1)] = r12;
+	heap32[(g0+2)] = r13;
+	heap32[(g0+3)] = r10;
+	sprintf(i7);
+	heap32[(g0)] = r11;
+	mandreel_add_valid_fopenfile(i7);
+__label__ = 66;
+break _47;
+}
+}
+}
+else{
+	r10 = (r12 + 1)|0;
+	r13 = 0;
+	r14 = r12;
+_122: while(true){
+	r15 = heapU8[r12+r13];
+	if(r15 ==0) //_LBB822_90
+{
+__label__ = 85;
+break _122;
+}
+else{
+	r16 = 0;
+_125: while(true){
+	if(r16 ==-1) //_LBB822_79
+{
+__label__ = 75;
+break _122;
+}
+else{
+	r17 = _2E_str4133;
+	r17 = (r17 - r16)|0;
+	r18 = r15 & 255;
+	r17 = heapU8[r17];
+	if(r18 !=r17) //_LBB822_73
+{
+	r16 = (r16 + -1)|0;
+}
+else{
+break _125;
+}
+}
+}
+	r13 = (r13 + 1)|0;
+	r14 = (r14 + 1)|0;
+	r10 = (r10 + 1)|0;
+}
+}
+_130: do {
+if (__label__ == 75){
+	if(r15 ==0) //_LBB822_90
+{
+__label__ = 85;
+}
+else{
+	r15 = (r12 + r13)|0;
+_133: while(true){
+	r16 = heapU8[r14];
+	if(r16 ==0) //_LBB822_87
+{
+break _133;
+}
+else{
+	r17 = 1;
+_136: while(true){
+	if(r17 !=0) //_LBB822_81
+{
+	r18 = _2E_str4133;
+	r18 = (r18 - r17)|0;
+	r19 = r16 & 255;
+	r18 = heapU8[r18+1];
+	if(r19 ==r18) //_LBB822_87
+{
+break _133;
+}
+else{
+	r17 = (r17 + -1)|0;
+}
+}
+else{
+break _136;
+}
+}
+	r14 = (r14 + 1)|0;
+}
+}
+	r16 = heapU8[r14];
+	if(r16 !=0) //_LBB822_89
+{
+	r16 = (r14 + 1)|0;
+	r17 = 0;
+	heap8[r14] = r17;
+	r14 = r16;
+}
+	r17 = 0;
+	r16 = r15 == r17;
+	heap32[(r11)] = r14;
+_145: while(true){
+	r18 = heapU8[r14];
+	if(r18 ==0) //_LBB822_109
+{
+__label__ = 103;
+break _145;
+}
+else{
+	r19 = r17;
+_148: while(true){
+	if(r19 ==-1) //_LBB822_98
+{
+__label__ = 93;
+break _145;
+}
+else{
+	r20 = _2E_str4133;
+	r20 = (r20 - r19)|0;
+	r21 = r18 & 255;
+	r20 = heapU8[r20];
+	if(r21 !=r20) //_LBB822_92
+{
+	r19 = (r19 + -1)|0;
+}
+else{
+break _148;
+}
+}
+}
+	r14 = (r14 + 1)|0;
+}
+}
+if (__label__ == 93){
+if(!(r18 ==0)) //_LBB822_109
+{
+	r17 = r14;
+_156: while(true){
+	r18 = heapU8[r17];
+	if(r18 ==0) //_LBB822_106
+{
+break _156;
+}
+else{
+	r19 = 1;
+_159: while(true){
+	if(r19 !=0) //_LBB822_100
+{
+	r20 = _2E_str4133;
+	r20 = (r20 - r19)|0;
+	r21 = r18 & 255;
+	r20 = heapU8[r20+1];
+	if(r21 ==r20) //_LBB822_106
+{
+break _156;
+}
+else{
+	r19 = (r19 + -1)|0;
+}
+}
+else{
+break _159;
+}
+}
+	r17 = (r17 + 1)|0;
+}
+}
+	r18 = heapU8[r17];
+	if(r18 !=0) //_LBB822_108
+{
+	r18 = (r17 + 1)|0;
+	r19 = 0;
+	heap8[r17] = r19;
+	r17 = r18;
+}
+	heap32[(r11)] = r17;
+_168: while(true){
+	r18 = heapU8[r17];
+	if(r18 ==0) //_LBB822_128
+{
+__label__ = 121;
+break _168;
+}
+else{
+	r19 = 0;
+_171: while(true){
+	if(r19 ==-1) //_LBB822_117
+{
+__label__ = 111;
+break _168;
+}
+else{
+	r20 = _2E_str4133;
+	r20 = (r20 - r19)|0;
+	r21 = r18 & 255;
+	r20 = heapU8[r20];
+	if(r21 !=r20) //_LBB822_111
+{
+	r19 = (r19 + -1)|0;
+}
+else{
+break _171;
+}
+}
+}
+	r17 = (r17 + 1)|0;
+}
+}
+if (__label__ == 111){
+if(!(r18 ==0)) //_LBB822_128
+{
+	r15 = r17;
+_179: while(true){
+	r16 = heapU8[r15];
+	if(r16 ==0) //_LBB822_125
+{
+break _179;
+}
+else{
+	r18 = 1;
+_182: while(true){
+	if(r18 !=0) //_LBB822_119
+{
+	r19 = _2E_str4133;
+	r19 = (r19 - r18)|0;
+	r20 = r16 & 255;
+	r19 = heapU8[r19+1];
+	if(r20 ==r19) //_LBB822_125
+{
+break _179;
+}
+else{
+	r18 = (r18 + -1)|0;
+}
+}
+else{
+break _182;
+}
+}
+	r15 = (r15 + 1)|0;
+}
+}
+	r16 = heapU8[r15];
+	if(r16 !=0) //_LBB822_127
+{
+	r16 = (r15 + 1)|0;
+	r18 = 0;
+	heap8[r15] = r18;
+	r15 = r16;
+}
+	heap32[(r11)] = r15;
+	heap32[(g0)] = 264;
+	_Znwj(i7);
+	r11 = r_g0;
+	heap32[(g0)] = r17;
+	heap32[(g0+1)] = 0;
+	r15 = 0;
+	r16 = -1;
+	r17 = r11 >> 2;
+	strtol(i7);
+	heap32[(r17+64)] = r_g0;
+_191: while(true){
+	r17 = r15;
+	r18 = heapU8[r10+r17];
+	if(r18 !=46) //_LBB822_133
+{
+	if(r18 ==0) //_LBB822_137
+{
+break _191;
+}
+else{
+if(!(r18 ==47)) //_LBB822_136
+{
+	r15 = (r17 + 1)|0;
+	if(r18 !=92) //_LBB822_131
+{
+continue _191;
+}
+}
+	r16 = -1;
+}
+}
+else{
+	r16 = r17;
+}
+	r15 = (r17 + 1)|0;
+}
+	if(r16 ==-1) //_LBB822_143
+{
+	r10 = (r12 + r13)|0;
+	r12 = _2E_str12233;
+	r10 = (r10 + 1)|0;
+	r15 = _2E_str2131;
+	heap32[(g0)] = r6;
+	heap32[(g0+1)] = r12;
+	heap32[(g0+2)] = r10;
+	heap32[(g0+3)] = r15;
+	sprintf(i7);
+}
+else{
+_205: do {
+	if(r16 >0) //_LBB822_140
+{
+	r10 = (r12 + 1)|0;
+	r12 = 0;
+_207: while(true){
+	r15 = (r12 + r10)|0;
+	r17 = (r12 + 1)|0;
+	r15 = heapU8[r15+r13];
+	heap8[r6+r12] = r15;
+	r12 = r17;
+if(!(r16 !=r17)) //_LBB822_141
+{
+break _205;
+}
+}
+}
+else{
+	r16 = 0;
+}
+} while(0);
+	r10 = (r6 + r16)|0;
+	r12 = _2E_str2131;
+	heap32[(g0)] = r10;
+	heap32[(g0+1)] = r12;
+	strcpy(i7);
+}
+	r10 = heapU8[sp+-1408];
+_212: do {
+	if(r10 ==0) //_LBB822_146
+{
+	r15 = r11;
+}
+else{
+	r12 = r7;
+	r15 = r11;
+_215: while(true){
+	r16 = r10 & 255;
+	if(r16 !=92) //_LBB822_149
+{
+	r16 = r10 << 24;
+	r16 = r16 >> 24;
+	r16 = (r16 + -65)|0;
+	r13 = 26;
+	r17 = (r10 + 32)|0;
+	r10 = uint(r16) < uint(r13) ? r17 : r10;
+}
+else{
+	r10 = 47;
+}
+	heap8[r15] = r10;
+	r10 = heapU8[r12];
+	r15 = (r15 + 1)|0;
+	r12 = (r12 + 1)|0;
+if(!(r10 !=0)) //_LBB822_147
+{
+break _212;
+}
+}
+}
+} while(0);
+	r10 = _ZL21g_pFirstSoundDuration;
+	r12 = 0;
+	r10 = r10 >> 2;
+	heap8[r15] = r12;
+	r12 = r11 >> 2;
+	r15 = heap32[(r10)];
+	heap32[(r12+65)] = r15;
+	heap32[(r10)] = r11;
+	r10 = heapU8[r14];
+	if(r10 ==48) //_LBB822_70
+{
+__label__ = 66;
+break _47;
+}
+else{
+	heap32[(g0)] = r11;
+	heap32[(g0+1)] = 0;
+	mandreel_audio_createBuffer(i7);
+__label__ = 66;
+break _47;
+}
+}
+}
+	heap32[(r11)] = r17;
+__label__ = 146;
+break _130;
+}
+}
+	heap32[(r11)] = r14;
+__label__ = 146;
+}
+}
+} while(0);
+if (__label__ == 85){
+	r16 = 1;
+	r15 = 0;
+	r10 = (r12 + r13)|0;
+	heap32[(r11)] = r10;
+}
+	r10 = _2E_str30251;
+	r11 = _2E_str31252;
+	r10 = r16 != 0 ? r10 : r15;
+	heap32[(g0)] = r11;
+	heap32[(g0+1)] = r10;
+	_printf_warning(i7);
+__label__ = 66;
+break _47;
+}
+}
+else{
+_228: while(true){
+	r10 = heapU8[r12];
+	if(r10 ==0) //_LBB822_56
+{
+__label__ = 52;
+break _228;
+}
+else{
+	r13 = 0;
+_231: while(true){
+	if(r13 ==-1) //_LBB822_57
+{
+__label__ = 53;
+break _228;
+}
+else{
+	r14 = _2E_str4133;
+	r14 = (r14 - r13)|0;
+	r15 = r10 & 255;
+	r14 = heapU8[r14];
+	if(r15 !=r14) //_LBB822_50
+{
+	r13 = (r13 + -1)|0;
+}
+else{
+break _231;
+}
+}
+}
+	r12 = (r12 + 1)|0;
+}
+}
+if (__label__ == 53){
+	if(r10 ==0) //_LBB822_56
+{
+__label__ = 52;
+}
+else{
+	r13 = r12;
+_239: while(true){
+	r10 = heapU8[r13];
+	if(r10 ==0) //_LBB822_65
+{
+break _239;
+}
+else{
+	r14 = 1;
+_242: while(true){
+	if(r14 !=0) //_LBB822_59
+{
+	r15 = _2E_str4133;
+	r15 = (r15 - r14)|0;
+	r16 = r10 & 255;
+	r15 = heapU8[r15+1];
+	if(r16 ==r15) //_LBB822_65
+{
+break _239;
+}
+else{
+	r14 = (r14 + -1)|0;
+}
+}
+else{
+break _242;
+}
+}
+	r13 = (r13 + 1)|0;
+}
+}
+	r10 = heapU8[r13];
+	if(r10 !=0) //_LBB822_67
+{
+	r14 = (r13 + 1)|0;
+	r10 = 0;
+	heap8[r13] = r10;
+	r10 = r12;
+	r12 = r14;
+__label__ = 64;
+}
+else{
+	r10 = r12;
+	r12 = r13;
+__label__ = 64;
+}
+}
+}
+if (__label__ == 52){
+	r10 = 0;
+}
+	heap32[(r11)] = r12;
+	r11 = _2E_str27248;
+	heap32[(g0)] = r10;
+	heap32[(g0+1)] = r11;
+	strcmp(i7);
+	r12 = r_g0;
+	if(r12 ==0) //_LBB822_70
+{
+__label__ = 66;
+}
+else{
+	r12 = _2E_str28249;
+	heap32[(g0)] = r12;
+	heap32[(g0+1)] = r10;
+	heap32[(g0+2)] = r11;
+	_printf_error(i7);
+__label__ = 66;
+}
+}
+}
+}
+} while(0);
+if (__label__ == 44){
+	heap32[(r11)] = r10;
+}
+if(!(r9 <r4)) //_LBB822_23
+{
+break _28;
+}
+}
+}
+} while(0);
+	heap32[(g0)] = r5;
+	free(i7);
+}
+	__mandreel_internal_CreateWindow(i7);
+	heap32[(g0)] = 0;
+	_Z30mandreel_fopen_enable_checkfatb(i7);
+	heap32[(g0)] = r1;
+	heap32[(g0+1)] = r2;
+	fopen(i7);
+	r0 = r_g0;
+	heap32[(g0)] = 1;
+	_Z30mandreel_fopen_enable_checkfatb(i7);
+if(!(r0 ==0)) //_LBB822_389
+{
+	if(uint(r0) <uint(10)) //_LBB822_201
+{
+	r1 = _ZL13s_file_stdout;
+	r2 = r1 >> 2;
+	r2 = heap32[(r2)];
+	r2 = r2 >> 2;
+	r2 = heap32[(r2+7)];
+	heap32[(g0)] = r1;
+	heap32[(g0+1)] = 0;
+	heap32[(g0+2)] = 2;
+	__FUNCTION_TABLE__[(r2)>>2](i7);
+}
+else{
+	r1 = r0 >> 2;
+	r1 = heap32[(r1)];
+	r1 = r1 >> 2;
+	r1 = heap32[(r1+7)];
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = 0;
+	heap32[(g0+2)] = 2;
+	__FUNCTION_TABLE__[(r1)>>2](i7);
+	r1 = r0;
+}
+	r2 = r1 >> 2;
+	r2 = heap32[(r2)];
+	r2 = r2 >> 2;
+	r2 = heap32[(r2+5)];
+	heap32[(g0)] = r1;
+	__FUNCTION_TABLE__[(r2)>>2](i7);
+	r1 = r_g0;
+	if(uint(r0) >uint(9)) //_LBB822_204
+{
+	r2 = r0;
+}
+else{
+	r2 = _ZL13s_file_stdout;
+}
+	r3 = r2 >> 2;
+	r3 = heap32[(r3)];
+	r3 = r3 >> 2;
+	r3 = heap32[(r3+7)];
+	heap32[(g0)] = r2;
+	heap32[(g0+1)] = 0;
+	heap32[(g0+2)] = 0;
+	__FUNCTION_TABLE__[(r3)>>2](i7);
+	r2 = (r1 + 1)|0;
+	heap32[(g0)] = r2;
+	malloc(i7);
+	r2 = r_g0;
+	if(uint(r0) <uint(10)) //_LBB822_207
+{
+	r3 = _ZL13s_file_stdout;
+	r4 = r3 >> 2;
+	r4 = heap32[(r4)];
+	r4 = r4 >> 2;
+	r4 = heap32[(r4+1)];
+	heap32[(g0)] = r3;
+	heap32[(g0+1)] = r2;
+	heap32[(g0+2)] = 1;
+	heap32[(g0+3)] = r1;
+	r5 = 0;
+	__FUNCTION_TABLE__[(r4)>>2](i7);
+	heap8[r2+r1] = r5;
+}
+else{
+	r3 = r0 >> 2;
+	r3 = heap32[(r3)];
+	r3 = r3 >> 2;
+	r3 = heap32[(r3+1)];
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r2;
+	heap32[(g0+2)] = 1;
+	heap32[(g0+3)] = r1;
+	r4 = 0;
+	__FUNCTION_TABLE__[(r3)>>2](i7);
+	heap8[r2+r1] = r4;
+	r3 = r0;
+}
+	r4 = r3 >> 2;
+	r4 = heap32[(r4)];
+	r4 = r4 >> 2;
+	r4 = heap32[(r4+4)];
+	heap32[(g0)] = r3;
+	__FUNCTION_TABLE__[(r4)>>2](i7);
+if(!(uint(r0) <uint(10))) //_LBB822_210
+{
+	heap32[(g0)] = r3;
+	_ZdlPv(i7);
+}
+if(!(r2 ==0)) //_LBB822_389
+{
+	r0 = (r2 + 1)|0;
+	r3 = -1;
+	r4 = 0;
+	r5 = r4;
+_278: while(true){
+	r6 = r3;
+_280: while(true){
+	if(r5 <r1) //_LBB822_212
+{
+	r3 = (r2 + r5)|0;
+	r7 = heapU8[r2+r5];
+	if(r7 ==13) //_LBB822_214
+{
+	r7 = r5;
+}
+else{
+_285: while(true){
+	r7 = (r5 + 1)|0;
+	r5 = heapU8[r0+r5];
+	if(r5 ==13) //_LBB822_217
+{
+break _285;
+}
+else{
+	r5 = r7;
+if(!(r7 <r1)) //_LBB822_215
+{
+break _285;
+}
+}
+}
+}
+	r5 = _ZL10strtok_pos;
+	r8 = 0;
+	r9 = r5 >> 2;
+	heap8[r2+r7] = r8;
+	r10 = heap32[(r9)];
+	r5 = (r7 + 2)|0;
+	r3 = r3 == 0 ? r10 : r3;
+_289: while(true){
+	r7 = heapU8[r3];
+	if(r7 ==0) //_LBB822_235
+{
+__label__ = 224;
+break _289;
+}
+else{
+	r10 = r8;
+_292: while(true){
+	if(r10 ==-1) //_LBB822_224
+{
+__label__ = 214;
+break _289;
+}
+else{
+	r11 = _2E_str4133;
+	r11 = (r11 - r10)|0;
+	r12 = r7 & 255;
+	r11 = heapU8[r11];
+	if(r12 !=r11) //_LBB822_218
+{
+	r10 = (r10 + -1)|0;
+}
+else{
+break _292;
+}
+}
+}
+	r3 = (r3 + 1)|0;
+}
+}
+if (__label__ == 214){
+if(!(r7 ==0)) //_LBB822_235
+{
+	r7 = r3;
+_300: while(true){
+	r8 = heapU8[r7];
+	if(r8 ==0) //_LBB822_232
+{
+break _300;
+}
+else{
+	r10 = 1;
+_303: while(true){
+	if(r10 !=0) //_LBB822_226
+{
+	r11 = _2E_str4133;
+	r11 = (r11 - r10)|0;
+	r12 = r8 & 255;
+	r11 = heapU8[r11+1];
+	if(r12 ==r11) //_LBB822_232
+{
+break _300;
+}
+else{
+	r10 = (r10 + -1)|0;
+}
+}
+else{
+break _303;
+}
+}
+	r7 = (r7 + 1)|0;
+}
+}
+	r8 = heapU8[r7];
+	if(r8 !=0) //_LBB822_234
+{
+	r8 = (r7 + 1)|0;
+	r10 = 0;
+	heap8[r7] = r10;
+	r7 = r8;
+}
+	heap32[(r9)] = r7;
+	r8 = _2E_str3782;
+	heap32[(g0)] = r8;
+	heap32[(g0+1)] = r3;
+	strcmp(i7);
+	r8 = r_g0;
+	if(r8 !=0) //_LBB822_341
+{
+	r8 = _2E_str5784;
+	heap32[(g0)] = r8;
+	heap32[(g0+1)] = r3;
+	strcmp(i7);
+	r8 = r_g0;
+	if(r8 !=0) //_LBB822_385
+{
+	r7 = _2E_str6785;
+	heap32[(g0)] = r7;
+	heap32[(g0+1)] = r3;
+	r3 = -1;
+	strcmp(i7);
+	r7 = r_g0;
+	if(r7 !=0) //_LBB822_387
+{
+continue _280;
+}
+else{
+continue _278;
+}
+}
+else{
+break _280;
+}
+}
+else{
+_315: while(true){
+	r3 = heapU8[r7];
+	if(r3 ==0) //_LBB822_255
+{
+__label__ = 242;
+break _315;
+}
+else{
+	r8 = 0;
+_318: while(true){
+	if(r8 ==-1) //_LBB822_244
+{
+__label__ = 232;
+break _315;
+}
+else{
+	r10 = _2E_str4133;
+	r10 = (r10 - r8)|0;
+	r11 = r3 & 255;
+	r10 = heapU8[r10];
+	if(r11 !=r10) //_LBB822_238
+{
+	r8 = (r8 + -1)|0;
+}
+else{
+break _318;
+}
+}
+}
+	r7 = (r7 + 1)|0;
+}
+}
+_323: do {
+if (__label__ == 232){
+	if(r3 ==0) //_LBB822_255
+{
+__label__ = 242;
+}
+else{
+	r3 = r7;
+_326: while(true){
+	r8 = heapU8[r3];
+	if(r8 ==0) //_LBB822_252
+{
+break _326;
+}
+else{
+	r10 = 1;
+_329: while(true){
+	if(r10 !=0) //_LBB822_246
+{
+	r11 = _2E_str4133;
+	r11 = (r11 - r10)|0;
+	r12 = r8 & 255;
+	r11 = heapU8[r11+1];
+	if(r12 ==r11) //_LBB822_252
+{
+break _326;
+}
+else{
+	r10 = (r10 + -1)|0;
+}
+}
+else{
+break _329;
+}
+}
+	r3 = (r3 + 1)|0;
+}
+}
+	r8 = heapU8[r3];
+	if(r8 !=0) //_LBB822_254
+{
+	r8 = (r3 + 1)|0;
+	r10 = 0;
+	heap8[r3] = r10;
+	r3 = r8;
+}
+	heap32[(r9)] = r3;
+_338: while(true){
+	r8 = heapU8[r3];
+	if(r8 ==0) //_LBB822_274
+{
+__label__ = 260;
+break _338;
+}
+else{
+	r10 = 0;
+_341: while(true){
+	if(r10 ==-1) //_LBB822_263
+{
+__label__ = 250;
+break _338;
+}
+else{
+	r11 = _2E_str4133;
+	r11 = (r11 - r10)|0;
+	r12 = r8 & 255;
+	r11 = heapU8[r11];
+	if(r12 !=r11) //_LBB822_257
+{
+	r10 = (r10 + -1)|0;
+}
+else{
+break _341;
+}
+}
+}
+	r3 = (r3 + 1)|0;
+}
+}
+if (__label__ == 250){
+if(!(r8 ==0)) //_LBB822_274
+{
+	r8 = r3;
+_349: while(true){
+	r10 = heapU8[r8];
+	if(r10 ==0) //_LBB822_271
+{
+break _349;
+}
+else{
+	r11 = 1;
+_352: while(true){
+	if(r11 !=0) //_LBB822_265
+{
+	r12 = _2E_str4133;
+	r12 = (r12 - r11)|0;
+	r13 = r10 & 255;
+	r12 = heapU8[r12+1];
+	if(r13 ==r12) //_LBB822_271
+{
+break _349;
+}
+else{
+	r11 = (r11 + -1)|0;
+}
+}
+else{
+break _352;
+}
+}
+	r8 = (r8 + 1)|0;
+}
+}
+	r10 = heapU8[r8];
+	if(r10 !=0) //_LBB822_273
+{
+	r10 = (r8 + 1)|0;
+	r11 = 0;
+	heap8[r8] = r11;
+	r8 = r10;
+}
+	heap32[(r9)] = r8;
+_361: while(true){
+	r10 = heapU8[r8];
+	if(r10 ==0) //_LBB822_293
+{
+__label__ = 278;
+break _361;
+}
+else{
+	r11 = 0;
+_364: while(true){
+	if(r11 ==-1) //_LBB822_282
+{
+__label__ = 268;
+break _361;
+}
+else{
+	r12 = _2E_str4133;
+	r12 = (r12 - r11)|0;
+	r13 = r10 & 255;
+	r12 = heapU8[r12];
+	if(r13 !=r12) //_LBB822_276
+{
+	r11 = (r11 + -1)|0;
+}
+else{
+break _364;
+}
+}
+}
+	r8 = (r8 + 1)|0;
+}
+}
+if (__label__ == 268){
+if(!(r10 ==0)) //_LBB822_293
+{
+	r10 = r8;
+_372: while(true){
+	r11 = heapU8[r10];
+	if(r11 ==0) //_LBB822_290
+{
+break _372;
+}
+else{
+	r12 = 1;
+_375: while(true){
+	if(r12 !=0) //_LBB822_284
+{
+	r13 = _2E_str4133;
+	r13 = (r13 - r12)|0;
+	r14 = r11 & 255;
+	r13 = heapU8[r13+1];
+	if(r14 ==r13) //_LBB822_290
+{
+break _372;
+}
+else{
+	r12 = (r12 + -1)|0;
+}
+}
+else{
+break _375;
+}
+}
+	r10 = (r10 + 1)|0;
+}
+}
+	r11 = heapU8[r10];
+	if(r11 !=0) //_LBB822_292
+{
+	r11 = (r10 + 1)|0;
+	r12 = 0;
+	heap8[r10] = r12;
+	r10 = r11;
+}
+	heap32[(r9)] = r10;
+_384: while(true){
+	r11 = heapU8[r10];
+	if(r11 ==0) //_LBB822_312
+{
+__label__ = 296;
+break _384;
+}
+else{
+	r12 = 0;
+_387: while(true){
+	if(r12 ==-1) //_LBB822_301
+{
+__label__ = 286;
+break _384;
+}
+else{
+	r13 = _2E_str4133;
+	r13 = (r13 - r12)|0;
+	r14 = r11 & 255;
+	r13 = heapU8[r13];
+	if(r14 !=r13) //_LBB822_295
+{
+	r12 = (r12 + -1)|0;
+}
+else{
+break _387;
+}
+}
+}
+	r10 = (r10 + 1)|0;
+}
+}
+if (__label__ == 286){
+if(!(r11 ==0)) //_LBB822_312
+{
+	r11 = r10;
+_395: while(true){
+	r12 = heapU8[r11];
+	if(r12 ==0) //_LBB822_309
+{
+break _395;
+}
+else{
+	r13 = 1;
+_398: while(true){
+	if(r13 !=0) //_LBB822_303
+{
+	r14 = _2E_str4133;
+	r14 = (r14 - r13)|0;
+	r15 = r12 & 255;
+	r14 = heapU8[r14+1];
+	if(r15 ==r14) //_LBB822_309
+{
+break _395;
+}
+else{
+	r13 = (r13 + -1)|0;
+}
+}
+else{
+break _398;
+}
+}
+	r11 = (r11 + 1)|0;
+}
+}
+	r12 = heapU8[r11];
+	if(r12 !=0) //_LBB822_311
+{
+	r12 = (r11 + 1)|0;
+	r13 = 0;
+	heap8[r11] = r13;
+	r11 = r12;
+}
+	heap32[(r9)] = r11;
+_407: while(true){
+	r12 = heapU8[r11];
+	if(r12 ==0) //_LBB822_331
+{
+__label__ = 314;
+break _407;
+}
+else{
+	r13 = 0;
+_410: while(true){
+	if(r13 ==-1) //_LBB822_320
+{
+__label__ = 304;
+break _407;
+}
+else{
+	r14 = _2E_str4133;
+	r14 = (r14 - r13)|0;
+	r15 = r12 & 255;
+	r14 = heapU8[r14];
+	if(r15 !=r14) //_LBB822_314
+{
+	r13 = (r13 + -1)|0;
+}
+else{
+break _410;
+}
+}
+}
+	r11 = (r11 + 1)|0;
+}
+}
+if (__label__ == 304){
+if(!(r12 ==0)) //_LBB822_331
+{
+	r12 = r11;
+_418: while(true){
+	r13 = heapU8[r12];
+	if(r13 ==0) //_LBB822_328
+{
+break _418;
+}
+else{
+	r14 = 1;
+_421: while(true){
+	if(r14 !=0) //_LBB822_322
+{
+	r15 = _2E_str4133;
+	r15 = (r15 - r14)|0;
+	r16 = r13 & 255;
+	r15 = heapU8[r15+1];
+	if(r16 ==r15) //_LBB822_328
+{
+break _418;
+}
+else{
+	r14 = (r14 + -1)|0;
+}
+}
+else{
+break _421;
+}
+}
+	r12 = (r12 + 1)|0;
+}
+}
+	r13 = heapU8[r12];
+	if(r13 !=0) //_LBB822_330
+{
+	r13 = (r12 + 1)|0;
+	r14 = 0;
+	heap8[r12] = r14;
+	r12 = r13;
+}
+	heap32[(r9)] = r12;
+	if(r8 ==0) //_LBB822_340
+{
+__label__ = 323;
+break _323;
+}
+else{
+	if(r11 ==0) //_LBB822_340
+{
+__label__ = 323;
+break _323;
+}
+else{
+	heap32[(g0)] = 284;
+	_Znwj(i7);
+	r9 = r_g0;
+	heap32[(g0)] = r3;
+	heap32[(g0+1)] = 0;
+	r3 = r9 >> 2;
+	strtol(i7);
+	heap32[(r3+65)] = r_g0;
+	heap32[(g0)] = r8;
+	heap32[(g0+1)] = 0;
+	strtol(i7);
+	heap32[(r3+66)] = r_g0;
+	heap32[(g0)] = r10;
+	heap32[(g0+1)] = 0;
+	strtol(i7);
+	heap32[(r3+67)] = r_g0;
+	heap32[(g0)] = r11;
+	heap32[(g0+1)] = 0;
+	strtol(i7);
+	heap32[(r3+69)] = r_g0;
+	r7 = (r7 + 1)|0;
+	r8 = 0;
+	heap32[(r3+68)] = r4;
+	heap32[(r3+64)] = r6;
+	r3 = r9;
+_432: while(true){
+	r10 = heapU8[r7];
+	if(r10 ==0) //_LBB822_339
+{
+break _432;
+}
+else{
+	r11 = r10 << 24;
+	r11 = r11 >> 24;
+	r11 = (r11 + -65)|0;
+	r12 = 26;
+	r13 = (r10 + 32)|0;
+	r10 = uint(r11) < uint(r12) ? r13 : r10;
+	r11 = r10 & 255;
+	r12 = 47;
+	r10 = r11 == 92 ? r12 : r10;
+	r7 = (r7 + 1)|0;
+	r11 = r10 & 255;
+if(!(r11 !=47)) //_LBB822_338
+{
+	r11 = r8 & 255;
+	r8 = r10;
+	if(r11 ==47) //_LBB822_335
+{
+continue _432;
+}
+}
+	r8 = (r3 + 1)|0;
+	heap8[r3] = r10;
+	r3 = r8;
+	r8 = r10;
+}
+}
+	r7 = _ZL24g_pFirstTextureAsyncInfo;
+	r8 = 0;
+	r7 = r7 >> 2;
+	heap8[r3] = r8;
+	r3 = r9 >> 2;
+	r8 = heap32[(r7)];
+	heap32[(r3+70)] = r8;
+	heap32[(r7)] = r9;
+	r3 = heap32[(r3+69)];
+	r4 = (r3 + r4)|0;
+continue _280;
+}
+}
+}
+}
+	heap32[(r9)] = r11;
+__label__ = 323;
+break _323;
+}
+}
+	heap32[(r9)] = r10;
+__label__ = 323;
+break _323;
+}
+}
+	heap32[(r9)] = r8;
+__label__ = 323;
+break _323;
+}
+}
+	heap32[(r9)] = r3;
+__label__ = 323;
+}
+}
+} while(0);
+if (__label__ == 242){
+	heap32[(r9)] = r7;
+}
+	r3 = _2E_str4783;
+	heap32[(g0)] = r3;
+	_printf_warning(i7);
+continue _280;
+}
+}
+}
+	heap32[(r9)] = r3;
+}
+else{
+break _278;
+}
+}
+_447: while(true){
+	r3 = heapU8[r7];
+	if(r3 ==0) //_LBB822_349
+{
+__label__ = 331;
+break _447;
+}
+else{
+	r4 = 0;
+_450: while(true){
+	if(r4 ==-1) //_LBB822_350
+{
+__label__ = 332;
+break _447;
+}
+else{
+	r8 = _2E_str4133;
+	r8 = (r8 - r4)|0;
+	r10 = r3 & 255;
+	r8 = heapU8[r8];
+	if(r10 !=r8) //_LBB822_343
+{
+	r4 = (r4 + -1)|0;
+}
+else{
+break _450;
+}
+}
+}
+	r7 = (r7 + 1)|0;
+}
+}
+if (__label__ == 332){
+	if(r3 ==0) //_LBB822_349
+{
+__label__ = 331;
+}
+else{
+	r3 = r7;
+_458: while(true){
+	r4 = heapU8[r3];
+	if(r4 ==0) //_LBB822_358
+{
+break _458;
+}
+else{
+	r8 = 1;
+_461: while(true){
+	if(r8 !=0) //_LBB822_352
+{
+	r10 = _2E_str4133;
+	r10 = (r10 - r8)|0;
+	r11 = r4 & 255;
+	r10 = heapU8[r10+1];
+	if(r11 ==r10) //_LBB822_358
+{
+break _458;
+}
+else{
+	r8 = (r8 + -1)|0;
+}
+}
+else{
+break _461;
+}
+}
+	r3 = (r3 + 1)|0;
+}
+}
+	r4 = heapU8[r3];
+	if(r4 !=0) //_LBB822_360
+{
+	r8 = (r3 + 1)|0;
+	r4 = 0;
+	heap8[r3] = r4;
+	r4 = r7;
+	r7 = r8;
+__label__ = 343;
+}
+else{
+	r4 = r7;
+	r7 = r3;
+__label__ = 343;
+}
+}
+}
+if (__label__ == 331){
+	r4 = 0;
+}
+	heap32[(r9)] = r7;
+_473: while(true){
+	r3 = heapU8[r7];
+	if(r3 ==0) //_LBB822_368
+{
+__label__ = 359;
+break _473;
+}
+else{
+	r8 = 0;
+_476: while(true){
+	if(r8 ==-1) //_LBB822_369
+{
+__label__ = 350;
+break _473;
+}
+else{
+	r10 = _2E_str4133;
+	r10 = (r10 - r8)|0;
+	r11 = r3 & 255;
+	r10 = heapU8[r10];
+	if(r11 !=r10) //_LBB822_362
+{
+	r8 = (r8 + -1)|0;
+}
+else{
+break _476;
+}
+}
+}
+	r7 = (r7 + 1)|0;
+}
+}
+if (__label__ == 350){
+if(!(r3 ==0)) //_LBB822_368
+{
+_483: while(true){
+	r3 = heapU8[r7];
+	if(r3 ==0) //_LBB822_377
+{
+break _483;
+}
+else{
+	r8 = 1;
+_486: while(true){
+	if(r8 !=0) //_LBB822_371
+{
+	r10 = _2E_str4133;
+	r10 = (r10 - r8)|0;
+	r11 = r3 & 255;
+	r10 = heapU8[r10+1];
+	if(r11 ==r10) //_LBB822_377
+{
+break _483;
+}
+else{
+	r8 = (r8 + -1)|0;
+}
+}
+else{
+break _486;
+}
+}
+	r7 = (r7 + 1)|0;
+}
+}
+	r3 = heapU8[r7];
+	if(r3 !=0) //_LBB822_379
+{
+	r3 = (r7 + 1)|0;
+	r8 = 0;
+	heap8[r7] = r8;
+	r7 = r3;
+}
+}
+}
+	r3 = (r6 + 1)|0;
+	heap32[(r9)] = r7;
+	r7 = heapU8[r4];
+_494: do {
+	if(r7 ==0) //_LBB822_382
+{
+	r8 = 1;
+}
+else{
+	r7 = 1;
+_497: while(true){
+	r8 = (r7 + 1)|0;
+	r9 = heapU8[r4+r7];
+	r7 = r8;
+if(!(r9 !=0)) //_LBB822_383
+{
+break _494;
+}
+}
+}
+} while(0);
+	r7 = _ZL17g_apPackFileNames;
+	r6 = r6 << 2;
+	r6 = (r7 + r6)|0;
+	heap32[(g0)] = r8;
+	r6 = r6 >> 2;
+	_Znaj(i7);
+	heap32[(r6+1)] = r_g0;
+	heap32[(g0)] = r_g0;
+	heap32[(g0+1)] = r4;
+	r4 = 0;
+	strcpy(i7);
+}
+	heap32[(g0)] = r2;
+	free(i7);
+}
+}
+	r0 = sp + -2440;
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = 0;
+	r1 = _ZGVZ21Mandreel_GetTickCountE7s_first;
+	gettimeofday(i7);
+	r2 = heapU8[r1];
+if(!(r2 !=0)) //_LBB822_391
+{
+	r2 = heap32[(fp+-610)];
+	r3 = r2 >> 31;
+	heap32[(g0)] = r2;
+	heap32[(g0+1)] = r3;
+	heap32[(g0+2)] = 1000000;
+	heap32[(g0+3)] = 0;
+	r0 = r0 >> 2;
+	r0 = heap32[(r0+1)];
+	__muldi3(i7);
+	r4 = 1;
+	r5 = (r_g0 + r0)|0;
+	r6 = 0;
+	r7 = r0 >> 31;
+	r2 = uint(r5) < uint(r_g0) ? r4 : r6;
+	r6 = _ZZ21Mandreel_GetTickCountE7s_first;
+	r3 = (r_g1 + r7)|0;
+	r0 = uint(r5) < uint(r0) ? r4 : r2;
+	r2 = r6 >> 2;
+	r0 = (r3 + r0)|0;
+	heap32[(r2)] = r5;
+	heap32[(r2+1)] = r0;
+	heap8[r1] = r4;
+}
+	return;
+}
+else{
+	r2 = _2E_str34255;
+	r0 = _2E_str1222;
+	heap32[(g0)] = r2;
+	heap32[(g0+1)] = r0;
+	heap32[(g0+2)] = 307;
+	_assert(i7);
+}
+}
+
+function __forceSuperLink(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+	var r6;
+	var r7;
+var __label__ = 0;
+	i7 = sp + -24;var g0 = i7>>2; // save stack
+	__mandreel_internal_init(i7);
+	r0 = sp + -8;
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = 0;
+	r1 = _ZGVZ21Mandreel_GetTickCountE7s_first;
+	gettimeofday(i7);
+	r2 = heapU8[r1];
+if(!(r2 !=0)) //_LBB823_2
+{
+	r2 = heap32[(fp+-2)];
+	r3 = r2 >> 31;
+	heap32[(g0)] = r2;
+	heap32[(g0+1)] = r3;
+	heap32[(g0+2)] = 1000000;
+	heap32[(g0+3)] = 0;
+	r0 = r0 >> 2;
+	r0 = heap32[(r0+1)];
+	__muldi3(i7);
+	r4 = 1;
+	r5 = (r_g0 + r0)|0;
+	r6 = 0;
+	r7 = r0 >> 31;
+	r2 = uint(r5) < uint(r_g0) ? r4 : r6;
+	r6 = _ZZ21Mandreel_GetTickCountE7s_first;
+	r3 = (r_g1 + r7)|0;
+	r0 = uint(r5) < uint(r0) ? r4 : r2;
+	r2 = r6 >> 2;
+	r0 = (r3 + r0)|0;
+	heap32[(r2)] = r5;
+	heap32[(r2+1)] = r0;
+	heap8[r1] = r4;
+}
+	r0 = _ZZ29__mandreel_internal_preupdateE8s_bfirst_2E_b;
+	r1 = heapU8[r0];
+if(!(r1 != 0)) //_LBB823_4
+{
+	r1 = 1;
+	heap8[r0] = r1;
+}
+	return;
+}
+
+function _ZNK10__cxxabiv117__class_type_info11__do_upcastEPKS0_PPv(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+	var r6;
+var __label__ = 0;
+	i7 = sp + -32;var g0 = i7>>2; // save stack
+	r0 = sp + -16;
+	r1 = r0 >> 2;
+	heap32[(fp+-4)] = 0;
+	heap32[(r1+1)] = 0;
+	r2 = heap32[(fp)];
+	heap32[(r1+2)] = 16;
+	r3 = r2 >> 2;
+	heap32[(r1+3)] = 0;
+	r4 = heap32[(fp+2)];
+	r3 = heap32[(r3)];
+	r3 = r3 >> 2;
+	r4 = r4 >> 2;
+	r3 = heap32[(r3+5)];
+	r5 = heap32[(r4)];
+	r6 = heap32[(fp+1)];
+	heap32[(g0)] = r2;
+	heap32[(g0+1)] = r6;
+	heap32[(g0+2)] = r5;
+	heap32[(g0+3)] = r0;
+	__FUNCTION_TABLE__[(r3)>>2](i7);
+	r0 = heap32[(r1+1)];
+	r0 = r0 & 6;
+	if(r0 !=6) //_LBB824_2
+{
+	r0 = 0;
+	r_g0 = r0;
+	return;
+}
+else{
+	r0 = heap32[(fp+-4)];
+	heap32[(r4)] = r0;
+	r0 = 1;
+	r_g0 = r0;
+	return;
+}
+}
+
+function _ZNK10__cxxabiv117__class_type_info20__do_find_public_srcEiPKvPKS0_S2_(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+var __label__ = 0;
+	i7 = sp + 0;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp+4)];
+	r1 = heap32[(fp+2)];
+	r2 = 6;
+	r3 = 1;
+	r0 = r0 == r1 ? r2 : r3;
+	r_g0 = r0;
+	return;
+}
+
+function _ZNKSt9type_info10__do_catchEPKS_PPvj(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+var __label__ = 0;
+	i7 = sp + -8;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp+1)];
+	r1 = heap32[(fp)];
+	r0 = r0 >> 2;
+	r1 = r1 >> 2;
+	r0 = heap32[(r0+1)];
+	r1 = heap32[(r1+1)];
+	r2 = _2E_str26;
+	r0 = r0 == 0 ? r2 : r0;
+	r1 = r1 == 0 ? r2 : r1;
+	heap32[(g0)] = r1;
+	heap32[(g0+1)] = r0;
+	strcmp(i7);
+	r2 = r_g0;
+	if(r2 <0) //_LBB826_2
+{
+	r0 = 0;
+	r_g0 = r0;
+	return;
+}
+else{
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r1;
+	strcmp(i7);
+	r0 = r_g0 >>> 31;
+	r0 = r0 ^ 1;
+	r_g0 = r0;
+	return;
+}
+}
+
+function _ZN10__cxxabiv117__class_type_infoD1Ev(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+var __label__ = 0;
+	i7 = sp + 0;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = _ZTVSt9type_info;
+	r0 = r0 >> 2;
+	r1 = (r1 + 8)|0;
+	heap32[(r0)] = r1;
+	return;
+}
+
+function _ZN10__cxxabiv117__class_type_infoD0Ev(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+var __label__ = 0;
+	i7 = sp + -8;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = _ZTVSt9type_info;
+	r2 = r0 >> 2;
+	r1 = (r1 + 8)|0;
+	heap32[(r2)] = r1;
+	heap32[(g0)] = r0;
+	_ZdlPv(i7);
+	return;
+}
+
+function _ZNK10__cxxabiv117__class_type_info10__do_catchEPKSt9type_infoPPvj(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+var __label__ = 0;
+	i7 = sp + -8;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp+1)];
+	r1 = heap32[(fp)];
+	r0 = r0 >> 2;
+	r1 = r1 >> 2;
+	r0 = heap32[(r0+1)];
+	r1 = heap32[(r1+1)];
+	r2 = _2E_str26;
+	r0 = r0 == 0 ? r2 : r0;
+	r1 = r1 == 0 ? r2 : r1;
+	heap32[(g0)] = r1;
+	heap32[(g0+1)] = r0;
+	strcmp(i7);
+	r2 = r_g0;
+	if(r2 >-1) //_LBB829_2
+{
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r1;
+	r0 = -1;
+	strcmp(i7);
+	r0 = r_g0 > r0;
+}
+else{
+	r0 = 0;
+}
+	r0 = r0 & 1;
+	r_g0 = r0;
+	return;
+}
+
+function _ZNK10__cxxabiv117__class_type_info11__do_upcastEPKS0_PKvRNS0_15__upcast_resultE(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+var __label__ = 0;
+	i7 = sp + -8;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp+1)];
+	r1 = heap32[(fp)];
+	r0 = r0 >> 2;
+	r1 = r1 >> 2;
+	r0 = heap32[(r0+1)];
+	r1 = heap32[(r1+1)];
+	r2 = _2E_str26;
+	r0 = r0 == 0 ? r2 : r0;
+	r1 = r1 == 0 ? r2 : r1;
+	heap32[(g0)] = r1;
+	heap32[(g0+1)] = r0;
+	strcmp(i7);
+	r2 = r_g0;
+if(!(r2 <0)) //_LBB830_3
+{
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r1;
+	strcmp(i7);
+	r0 = r_g0;
+if(!(r0 <0)) //_LBB830_3
+{
+	r0 = heap32[(fp+2)];
+	r1 = heap32[(fp+3)];
+	r1 = r1 >> 2;
+	heap32[(r1)] = r0;
+	heap32[(r1+3)] = 8;
+	heap32[(r1+1)] = 6;
+	r0 = 1;
+	r_g0 = r0;
+	return;
+}
+}
+	r0 = 0;
+	r_g0 = r0;
+	return;
+}
+
+function _ZNK10__cxxabiv117__class_type_info12__do_dyncastEiNS0_10__sub_kindEPKS0_PKvS3_S5_RNS0_16__dyncast_resultE(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+	var r6;
+var __label__ = 0;
+	i7 = sp + -8;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r0 = r0 >> 2;
+	r1 = heap32[(fp+4)];
+	r2 = heap32[(fp+2)];
+	r3 = heap32[(fp+7)];
+	r0 = heap32[(r0+1)];
+	r4 = heap32[(fp+6)];
+if(!(r1 !=r4)) //_LBB831_3
+{
+	r4 = heap32[(fp+5)];
+	r4 = r4 >> 2;
+	r4 = heap32[(r4+1)];
+	r5 = _2E_str26;
+	r4 = r4 == 0 ? r5 : r4;
+	r5 = r0 == 0 ? r5 : r0;
+	heap32[(g0)] = r5;
+	heap32[(g0+1)] = r4;
+	strcmp(i7);
+	r6 = r_g0;
+if(!(r6 <0)) //_LBB831_3
+{
+	heap32[(g0)] = r4;
+	heap32[(g0+1)] = r5;
+	strcmp(i7);
+	r4 = r_g0;
+	if(r4 >-1) //_LBB831_5
+{
+	r1 = r3 >> 2;
+	heap32[(r1+2)] = r2;
+	r1 = 0;
+	r_g0 = r1;
+	return;
+}
+}
+}
+	r4 = heap32[(fp+3)];
+	r4 = r4 >> 2;
+	r4 = heap32[(r4+1)];
+	r5 = _2E_str26;
+	r4 = r4 == 0 ? r5 : r4;
+	r0 = r0 == 0 ? r5 : r0;
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r4;
+	strcmp(i7);
+	r5 = r_g0;
+if(!(r5 <0)) //_LBB831_7
+{
+	heap32[(g0)] = r4;
+	heap32[(g0+1)] = r0;
+	strcmp(i7);
+	r0 = r_g0;
+if(!(r0 <0)) //_LBB831_7
+{
+	r0 = r3 >> 2;
+	heap32[(r0)] = r1;
+	heap32[(r0+1)] = r2;
+	heap32[(r0+3)] = 1;
+}
+}
+	r0 = 0;
+	r_g0 = r0;
+	return;
+}
+
+function _ZN10__cxxabiv120__si_class_type_infoD1Ev(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+var __label__ = 0;
+	i7 = sp + 0;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = _ZTVSt9type_info;
+	r0 = r0 >> 2;
+	r1 = (r1 + 8)|0;
+	heap32[(r0)] = r1;
+	return;
+}
+
+function _ZN10__cxxabiv120__si_class_type_infoD0Ev(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+var __label__ = 0;
+	i7 = sp + -8;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = _ZTVSt9type_info;
+	r2 = r0 >> 2;
+	r1 = (r1 + 8)|0;
+	heap32[(r2)] = r1;
+	heap32[(g0)] = r0;
+	_ZdlPv(i7);
+	return;
+}
+
+function _ZNK10__cxxabiv120__si_class_type_info11__do_upcastEPKNS_17__class_type_infoEPKvRNS1_15__upcast_resultE(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+	var r6;
+var __label__ = 0;
+	i7 = sp + -16;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp+1)];
+	r1 = heap32[(fp)];
+	r2 = r0 >> 2;
+	r1 = r1 >> 2;
+	r2 = heap32[(r2+1)];
+	r3 = heap32[(r1+1)];
+	r4 = _2E_str26;
+	r2 = r2 == 0 ? r4 : r2;
+	r3 = r3 == 0 ? r4 : r3;
+	heap32[(g0)] = r3;
+	heap32[(g0+1)] = r2;
+	r4 = heap32[(fp+2)];
+	r5 = heap32[(fp+3)];
+	strcmp(i7);
+	r6 = r_g0;
+if(!(r6 <0)) //_LBB834_2
+{
+	heap32[(g0)] = r2;
+	heap32[(g0+1)] = r3;
+	strcmp(i7);
+	r2 = r_g0;
+	if(r2 >-1) //_LBB834_3
+{
+	r0 = r5 >> 2;
+	heap32[(r0)] = r4;
+	heap32[(r0+3)] = 8;
+	heap32[(r0+1)] = 6;
+	r0 = 1;
+	r_g0 = r0;
+	return;
+}
+}
+	r1 = heap32[(r1+2)];
+	r2 = r1 >> 2;
+	r2 = heap32[(r2)];
+	r2 = r2 >> 2;
+	r2 = heap32[(r2+5)];
+	heap32[(g0)] = r1;
+	heap32[(g0+1)] = r0;
+	heap32[(g0+2)] = r4;
+	heap32[(g0+3)] = r5;
+	__FUNCTION_TABLE__[(r2)>>2](i7);
+	return;
+}
+
+function _ZNK10__cxxabiv120__si_class_type_info12__do_dyncastEiNS_17__class_type_info10__sub_kindEPKS1_PKvS4_S6_RNS1_16__dyncast_resultE(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+	var r6;
+	var r7;
+	var r8;
+	var r9;
+	var r10;
+var __label__ = 0;
+	i7 = sp + -32;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp+3)];
+	r1 = heap32[(fp)];
+	r2 = r0 >> 2;
+	r1 = r1 >> 2;
+	r2 = heap32[(r2+1)];
+	r3 = heap32[(r1+1)];
+	r4 = _2E_str26;
+	r2 = r2 == 0 ? r4 : r2;
+	r3 = r3 == 0 ? r4 : r3;
+	heap32[(g0)] = r3;
+	heap32[(g0+1)] = r2;
+	r5 = heap32[(fp+1)];
+	r6 = heap32[(fp+2)];
+	r7 = heap32[(fp+4)];
+	r8 = heap32[(fp+6)];
+	r9 = heap32[(fp+7)];
+	strcmp(i7);
+	r10 = r_g0;
+	if(r10 <0) //_LBB835_6
+{
+__label__ = 6;
+}
+else{
+	heap32[(g0)] = r2;
+	heap32[(g0+1)] = r3;
+	strcmp(i7);
+	r2 = r_g0;
+	if(r2 <0) //_LBB835_6
+{
+__label__ = 6;
+}
+else{
+	r0 = r9 >> 2;
+	heap32[(r0)] = r7;
+	heap32[(r0+1)] = r6;
+	if(r5 <0) //_LBB835_4
+{
+	if(r5 !=-2) //_LBB835_11
+{
+__label__ = 11;
+}
+else{
+	heap32[(r0+3)] = 1;
+__label__ = 11;
+}
+}
+else{
+	r1 = (r7 + r5)|0;
+	r3 = 6;
+	r4 = 1;
+	r1 = r1 == r8 ? r3 : r4;
+	heap32[(r0+3)] = r1;
+__label__ = 11;
+}
+}
+}
+_8: do {
+if (__label__ == 6){
+	r2 = heap32[(fp+5)];
+if(!(r7 !=r8)) //_LBB835_9
+{
+	r10 = r2 >> 2;
+	r10 = heap32[(r10+1)];
+	r4 = r10 == 0 ? r4 : r10;
+	heap32[(g0)] = r3;
+	heap32[(g0+1)] = r4;
+	strcmp(i7);
+	r10 = r_g0;
+if(!(r10 <0)) //_LBB835_9
+{
+	heap32[(g0)] = r4;
+	heap32[(g0+1)] = r3;
+	strcmp(i7);
+	r3 = r_g0;
+	if(r3 >-1) //_LBB835_10
+{
+	r0 = r9 >> 2;
+	heap32[(r0+2)] = r6;
+break _8;
+}
+}
+}
+	r1 = heap32[(r1+2)];
+	r3 = r1 >> 2;
+	r3 = heap32[(r3)];
+	r3 = r3 >> 2;
+	r3 = heap32[(r3+6)];
+	heap32[(g0)] = r1;
+	heap32[(g0+1)] = r5;
+	heap32[(g0+2)] = r6;
+	heap32[(g0+3)] = r0;
+	heap32[(g0+4)] = r7;
+	heap32[(g0+5)] = r2;
+	heap32[(g0+6)] = r8;
+	heap32[(g0+7)] = r9;
+	__FUNCTION_TABLE__[(r3)>>2](i7);
+	return;
+}
+} while(0);
+	r0 = 0;
+	r_g0 = r0;
+	return;
+}
+
+function _ZNK10__cxxabiv120__si_class_type_info20__do_find_public_srcEiPKvPKNS_17__class_type_infoES2_(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+	var r6;
+var __label__ = 0;
+	i7 = sp + -24;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp+4)];
+	r1 = heap32[(fp+2)];
+	r2 = heap32[(fp)];
+	r3 = heap32[(fp+3)];
+if(!(r0 !=r1)) //_LBB836_3
+{
+	r4 = r3 >> 2;
+	r5 = r2 >> 2;
+	r4 = heap32[(r4+1)];
+	r5 = heap32[(r5+1)];
+	r6 = _2E_str26;
+	r4 = r4 == 0 ? r6 : r4;
+	r5 = r5 == 0 ? r6 : r5;
+	heap32[(g0)] = r5;
+	heap32[(g0+1)] = r4;
+	strcmp(i7);
+	r6 = r_g0;
+if(!(r6 <0)) //_LBB836_3
+{
+	heap32[(g0)] = r4;
+	heap32[(g0+1)] = r5;
+	strcmp(i7);
+	r4 = r_g0;
+	if(r4 >-1) //_LBB836_4
+{
+	r0 = 6;
+	r_g0 = r0;
+	return;
+}
+}
+}
+	r4 = heap32[(fp+1)];
+	r2 = r2 >> 2;
+	r2 = heap32[(r2+2)];
+	r5 = r2 >> 2;
+	r5 = heap32[(r5)];
+	r5 = r5 >> 2;
+	r5 = heap32[(r5+7)];
+	heap32[(g0)] = r2;
+	heap32[(g0+1)] = r4;
+	heap32[(g0+2)] = r1;
+	heap32[(g0+3)] = r3;
+	heap32[(g0+4)] = r0;
+	__FUNCTION_TABLE__[(r5)>>2](i7);
+	return;
+}
+
+function _ZNK10__cxxabiv121__vmi_class_type_info11__do_upcastEPKNS_17__class_type_infoEPKvRNS1_15__upcast_resultE(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+	var r6;
+	var r7;
+	var r8;
+	var r9;
+	var r10;
+	var r11;
+	var r12;
+	var r13;
+	var r14;
+	var r15;
+var __label__ = 0;
+	i7 = sp + -32;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp+1)];
+	r1 = heap32[(fp)];
+	r2 = r0 >> 2;
+	r3 = r1 >> 2;
+	r2 = heap32[(r2+1)];
+	r4 = heap32[(r3+1)];
+	r5 = _2E_str26;
+	r2 = r2 == 0 ? r5 : r2;
+	r4 = r4 == 0 ? r5 : r4;
+	heap32[(g0)] = r4;
+	heap32[(g0+1)] = r2;
+	r6 = heap32[(fp+2)];
+	r7 = heap32[(fp+3)];
+	strcmp(i7);
+	r8 = r_g0;
+	if(r8 <0) //_LBB837_3
+{
+__label__ = 3;
+}
+else{
+	heap32[(g0)] = r2;
+	heap32[(g0+1)] = r4;
+	strcmp(i7);
+	r2 = r_g0;
+	if(r2 <0) //_LBB837_3
+{
+__label__ = 3;
+}
+else{
+	r0 = r7 >> 2;
+	heap32[(r0)] = r6;
+	heap32[(r0+3)] = 8;
+	heap32[(r0+1)] = 6;
+__label__ = 39;
+}
+}
+_4: do {
+if (__label__ == 3){
+	r2 = r7 >> 2;
+	r4 = heap32[(r2+2)];
+	r7 = r4 & 16;
+	if(r7 !=0) //_LBB837_5
+{
+	r4 = heap32[(r3+2)];
+}
+	r3 = heap32[(r3+3)];
+	r7 = r4 & 1;
+	r3 = (r3 + 1)|0;
+_9: while(true){
+	if(r3 !=1) //_LBB837_7
+{
+	r8 = sp + -16;
+	r9 = r8 >> 2;
+	heap32[(fp+-4)] = 0;
+	r10 = r3 << 3;
+	heap32[(r9+1)] = 0;
+	r10 = (r1 + r10)|0;
+	heap32[(r9+2)] = r4;
+	r10 = r10 >> 2;
+	heap32[(r9+3)] = 0;
+	r10 = heap32[(r10+1)];
+	r11 = r10 & 2;
+	if(r7 !=0) //_LBB837_10
+{
+__label__ = 9;
+}
+else{
+	r12 = r11 >>> 1;
+	if(r12 != 0) //_LBB837_10
+{
+__label__ = 9;
+}
+else{
+__label__ = 8;
+}
+}
+if (__label__ == 9){
+	r12 = r3 << 1;
+	r13 = r10 & 1;
+	if(r6 !=0) //_LBB837_12
+{
+	r10 = r10 >> 8;
+	if(r13 != 0) //_LBB837_14
+{
+	r14 = r6 >> 2;
+	r14 = heap32[(r14)];
+	r10 = (r14 + r10)|0;
+	r10 = r10 >> 2;
+	r10 = heap32[(r10)];
+}
+	r10 = (r6 + r10)|0;
+}
+else{
+	r10 = 0;
+}
+	r12 = r12 << 2;
+	r12 = (r1 + r12)|0;
+	r12 = r12 >> 2;
+	r14 = heap32[(r12)];
+	r15 = r14 >> 2;
+	r15 = heap32[(r15)];
+	r15 = r15 >> 2;
+	r15 = heap32[(r15+5)];
+	heap32[(g0)] = r14;
+	heap32[(g0+1)] = r0;
+	heap32[(g0+2)] = r10;
+	heap32[(g0+3)] = r8;
+	__FUNCTION_TABLE__[(r15)>>2](i7);
+	r8 = r_g0;
+if(!(r8 ==0)) //_LBB837_9
+{
+	r8 = heap32[(r9+3)];
+if(!(r8 !=8)) //_LBB837_19
+{
+	if(r13 != 0) //_LBB837_20
+{
+	r8 = heap32[(r12)];
+	heap32[(r9+3)] = r8;
+}
+}
+	r10 = heap32[(r9+1)];
+if(!(r10 <4)) //_LBB837_23
+{
+	if(r11 ==0) //_LBB837_24
+{
+	r10 = r10 & -3;
+	heap32[(r9+1)] = r10;
+}
+}
+	r11 = heap32[(r2+3)];
+	if(r11 !=0) //_LBB837_31
+{
+	r9 = heap32[(r2)];
+	r12 = heap32[(fp+-4)];
+	if(r9 ==r12) //_LBB837_33
+{
+	if(r9 ==0) //_LBB837_35
+{
+	if(r8 ==8) //_LBB837_39
+{
+__label__ = 35;
+break _9;
+}
+else{
+	if(r11 ==8) //_LBB837_39
+{
+__label__ = 35;
+break _9;
+}
+else{
+	r9 = r11 >> 2;
+	r8 = r8 >> 2;
+	r9 = heap32[(r9+1)];
+	r8 = heap32[(r8+1)];
+	r9 = r9 == 0 ? r5 : r9;
+	r8 = r8 == 0 ? r5 : r8;
+	heap32[(g0)] = r8;
+	heap32[(g0+1)] = r9;
+	strcmp(i7);
+	r11 = r_g0;
+	if(r11 <0) //_LBB837_39
+{
+__label__ = 35;
+break _9;
+}
+else{
+	heap32[(g0)] = r9;
+	heap32[(g0+1)] = r8;
+	strcmp(i7);
+	r8 = r_g0;
+	if(r8 >-1) //_LBB837_40
+{
+	r8 = heap32[(r2+1)];
+	r8 = r10 | r8;
+	heap32[(r2+1)] = r8;
+}
+else{
+__label__ = 35;
+break _9;
+}
+}
+}
+}
+}
+else{
+	r8 = heap32[(r2+1)];
+	r8 = r10 | r8;
+	heap32[(r2+1)] = r8;
+}
+}
+else{
+__label__ = 28;
+break _9;
+}
+}
+else{
+	r11 = heap32[(fp+-4)];
+	heap32[(r2)] = r11;
+	heap32[(r2+1)] = r10;
+	r11 = heap32[(r9+2)];
+	heap32[(r2+2)] = r11;
+	heap32[(r2+3)] = r8;
+	if(r10 <4) //_LBB837_43
+{
+break _4;
+}
+else{
+	r8 = r10 & 2;
+	if(r8 ==0) //_LBB837_29
+{
+	r8 = r10 & 1;
+	if(r8 ==0) //_LBB837_43
+{
+break _4;
+}
+else{
+	r8 = heapU8[r1+8];
+	r8 = r8 & 2;
+	if(r8 ==0) //_LBB837_43
+{
+break _4;
+}
+}
+}
+else{
+	r8 = heapU8[r1+8];
+	r8 = r8 & 1;
+	if(r8 ==0) //_LBB837_43
+{
+break _4;
+}
+}
+}
+}
+}
+}
+	r3 = (r3 + -1)|0;
+continue _9;
+}
+else{
+__label__ = 38;
+break _9;
+}
+}
+switch(__label__ ){//multiple entries
+case 38:
+	r0 = heap32[(r2+1)];
+	r1 = 0;
+	r0 = r0 != r1;
+	r0 = r0 & 1;
+	r_g0 = r0;
+	return;
+break;
+case 28:
+	heap32[(r2)] = 0;
+break;
+}
+	heap32[(r2+1)] = 2;
+}
+} while(0);
+	r0 = 1;
+	r_g0 = r0;
+	return;
+}
+
+function _ZNK10__cxxabiv121__vmi_class_type_info12__do_dyncastEiNS_17__class_type_info10__sub_kindEPKS1_PKvS4_S6_RNS1_16__dyncast_resultE(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+	var r6;
+	var r7;
+	var r8;
+	var r9;
+	var r10;
+	var r11;
+	var r12;
+	var r13;
+	var r14;
+	var r15;
+	var r16;
+	var r17;
+	var r18;
+	var r19;
+	var r20;
+	var r21;
+	var r22;
+	var r23;
+var __label__ = 0;
+	i7 = sp + -56;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp+7)];
+	r0 = r0 >> 2;
+	r1 = heap32[(r0+4)];
+	r2 = heap32[(fp)];
+	r3 = heap32[(fp+1)];
+	r4 = heap32[(fp+2)];
+	r5 = heap32[(fp+3)];
+	r6 = heap32[(fp+4)];
+	r7 = heap32[(fp+5)];
+	r8 = heap32[(fp+6)];
+	r9 = r1 & 16;
+	if(r9 !=0) //_LBB838_2
+{
+	r1 = r2 >> 2;
+	r1 = heap32[(r1+2)];
+	heap32[(r0+4)] = r1;
+}
+	r9 = r2 >> 2;
+	r10 = heap32[(r9+1)];
+	if(r6 !=r8) //_LBB838_6
+{
+__label__ = 5;
+}
+else{
+	r11 = r7 >> 2;
+	r11 = heap32[(r11+1)];
+	r12 = _2E_str26;
+	r11 = r11 == 0 ? r12 : r11;
+	r12 = r10 == 0 ? r12 : r10;
+	heap32[(g0)] = r12;
+	heap32[(g0+1)] = r11;
+	strcmp(i7);
+	r13 = r_g0;
+	if(r13 <0) //_LBB838_6
+{
+__label__ = 5;
+}
+else{
+	heap32[(g0)] = r11;
+	heap32[(g0+1)] = r12;
+	strcmp(i7);
+	r11 = r_g0;
+	if(r11 >-1) //_LBB838_8
+{
+	heap32[(r0+2)] = r4;
+__label__ = 8;
+}
+else{
+__label__ = 5;
+}
+}
+}
+_8: do {
+if (__label__ == 5){
+	r11 = r5 >> 2;
+	r12 = heap32[(r11+1)];
+	r13 = _2E_str26;
+	r12 = r12 == 0 ? r13 : r12;
+	r10 = r10 == 0 ? r13 : r10;
+	heap32[(g0)] = r10;
+	heap32[(g0+1)] = r12;
+	strcmp(i7);
+	r13 = r_g0;
+	if(r13 <0) //_LBB838_15
+{
+__label__ = 14;
+}
+else{
+	heap32[(g0)] = r12;
+	heap32[(g0+1)] = r10;
+	strcmp(i7);
+	r10 = r_g0;
+	if(r10 <0) //_LBB838_15
+{
+__label__ = 14;
+}
+else{
+	heap32[(r0)] = r6;
+	heap32[(r0+1)] = r4;
+	if(r3 <0) //_LBB838_12
+{
+	if(r3 ==-2) //_LBB838_14
+{
+	heap32[(r0+3)] = 1;
+	r9 = 0;
+	r_g0 = r9;
+	return;
+}
+else{
+__label__ = 12;
+}
+}
+else{
+	r1 = (r6 + r3)|0;
+	r2 = 6;
+	r3 = 1;
+	r1 = r1 == r8 ? r2 : r3;
+	heap32[(r0+3)] = r1;
+break _8;
+}
+}
+}
+_17: do {
+if (__label__ == 14){
+	r10 = heap32[(r9+3)];
+	r12 = r1 & 2;
+	r9 = 0;
+	r13 = r1;
+_19: while(true){
+	r14 = r13 & 3;
+_21: while(true){
+	r15 = r9;
+	r9 = r10 << 3;
+	r9 = (r2 + r9)|0;
+	r20 = 0;
+_23: while(true){
+	r16 = r20;
+	if(r10 !=r16) //_LBB838_16
+{
+	r17 = sp + -24;
+	r18 = r17 >> 2;
+	heap32[(fp+-6)] = 0;
+	heap32[(r18+1)] = 0;
+	heap32[(r18+2)] = 0;
+	r19 = r16 << 3;
+	r19 = (r9 - r19)|0;
+	heap32[(r18+3)] = 0;
+	r19 = r19 >> 2;
+	heap32[(r18+4)] = r13;
+	r20 = heap32[(r19+3)];
+	r21 = r20 & 1;
+	r22 = r20 >> 8;
+	if(r21 != 0) //_LBB838_18
+{
+	r23 = r6 >> 2;
+	r23 = heap32[(r23)];
+	r22 = (r23 + r22)|0;
+	r22 = r22 >> 2;
+	r22 = heap32[(r22)];
+}
+	r20 = r20 & 2;
+	if(r20 ==0) //_LBB838_21
+{
+	if(r3 !=-2) //_LBB838_23
+{
+__label__ = 21;
+break _23;
+}
+else{
+	r20 = (r16 + 1)|0;
+	if(r14 ==0) //_LBB838_88
+{
+continue _23;
+}
+else{
+__label__ = 21;
+break _23;
+}
+}
+}
+else{
+__label__ = 18;
+break _23;
+}
+}
+else{
+__label__ = 77;
+break _19;
+}
+}
+switch(__label__ ){//multiple entries
+case 21:
+	r9 = r4 & -3;
+break;
+case 18:
+	r9 = r4;
+break;
+}
+	r20 = heap32[(r19+2)];
+	r19 = r20 >> 2;
+	r19 = heap32[(r19)];
+	r19 = r19 >> 2;
+	r19 = heap32[(r19+6)];
+	r9 = r21 | r9;
+	r21 = (r6 + r22)|0;
+	heap32[(g0)] = r20;
+	heap32[(g0+1)] = r3;
+	heap32[(g0+2)] = r9;
+	heap32[(g0+3)] = r5;
+	heap32[(g0+4)] = r21;
+	heap32[(g0+5)] = r7;
+	heap32[(g0+6)] = r8;
+	heap32[(g0+7)] = r17;
+	__FUNCTION_TABLE__[(r19)>>2](i7);
+	r9 = r_g0;
+	r20 = heap32[(r0+2)];
+	r17 = heap32[(r18+2)];
+	r20 = r17 | r20;
+	heap32[(r0+2)] = r20;
+	r17 = heap32[(r18+3)];
+	if(r17 ==2) //_LBB838_26
+{
+__label__ = 24;
+break _19;
+}
+else{
+	if(r17 !=6) //_LBB838_27
+{
+	r19 = (r10 + -1)|0;
+	r10 = heap32[(r0)];
+	r21 = r15 & 255;
+	if(r21 !=0) //_LBB838_34
+{
+__label__ = 30;
+break _21;
+}
+else{
+	if(r10 !=0) //_LBB838_35
+{
+__label__ = 31;
+break _21;
+}
+else{
+	r10 = heap32[(fp+-6)];
+	heap32[(r0)] = r10;
+	r15 = heap32[(r18+1)];
+	heap32[(r0+1)] = r15;
+	if(r10 !=0) //_LBB838_31
+{
+	r10 = (r19 - r16)|0;
+	if(r20 ==0) //_LBB838_87
+{
+continue _21;
+}
+else{
+__label__ = 29;
+break _21;
+}
+}
+else{
+__label__ = 73;
+break _21;
+}
+}
+}
+}
+else{
+__label__ = 24;
+break _19;
+}
+}
+}
+_40: do {
+switch(__label__ ){//multiple entries
+case 30:
+	if(r10 ==0) //_LBB838_37
+{
+	r14 = heap32[(fp+-6)];
+	r10 = 0;
+__label__ = 36;
+break _40;
+}
+else{
+__label__ = 31;
+break _40;
+}
+break;
+case 29:
+	r10 = heapU8[r2+8];
+	r10 = r10 & 1;
+	if(r10 != 0) //_LBB838_30
+{
+__label__ = 73;
+}
+else{
+__label__ = 78;
+break _17;
+}
+break;
+}
+} while(0);
+if (__label__ == 31){
+	r14 = heap32[(fp+-6)];
+	if(r10 !=r14) //_LBB838_38
+{
+	if(r14 !=0) //_LBB838_40
+{
+__label__ = 39;
+}
+else{
+	if(r9 ==0) //_LBB838_41
+{
+__label__ = 36;
+}
+else{
+__label__ = 39;
+}
+}
+}
+else{
+	r9 = heap32[(r0+1)];
+	r10 = heap32[(r18+1)];
+	r9 = r10 | r9;
+	heap32[(r0+1)] = r9;
+	r9 = r15;
+__label__ = 73;
+}
+}
+_50: do {
+if (__label__ == 36){
+if(!(r14 ==0)) //_LBB838_44
+{
+if(!(r21 ==0)) //_LBB838_44
+{
+__label__ = 39;
+break _50;
+}
+}
+	r9 = r15;
+__label__ = 73;
+}
+} while(0);
+if (__label__ == 39){
+	r9 = heap32[(r0+3)];
+_57: do {
+	if(r20 >3) //_LBB838_47
+{
+	r14 = r20 & 1;
+if(!(r14 ==0)) //_LBB838_52
+{
+if(!(r12 ==0)) //_LBB838_52
+{
+	r13 = r1;
+__label__ = 43;
+break _57;
+}
+}
+	r13 = r14 == 0 ? r13 : r1;
+	r10 = 1;
+	r9 = r9 == 0 ? r10 : r9;
+	if(r17 ==0) //_LBB838_54
+{
+	r17 = r10;
+__label__ = 64;
+}
+else{
+__label__ = 64;
+}
+}
+else{
+__label__ = 43;
+}
+} while(0);
+_64: do {
+if (__label__ == 43){
+	if(r9 <1) //_LBB838_55
+{
+_68: do {
+if(!(r17 <4)) //_LBB838_59
+{
+	r9 = r17 & 1;
+	if(r9 != 0) //_LBB838_58
+{
+	r9 = heapU8[r2+8];
+	r9 = r9 & 2;
+if(!(r9 ==0)) //_LBB838_57
+{
+break _68;
+}
+}
+	r9 = 1;
+break _64;
+}
+} while(0);
+	if(r3 <0) //_LBB838_61
+{
+	if(r3 !=-2) //_LBB838_63
+{
+	r9 = heap32[(r11)];
+	r9 = r9 >> 2;
+	r9 = heap32[(r9+7)];
+	heap32[(g0)] = r5;
+	heap32[(g0+1)] = r3;
+	heap32[(g0+2)] = r10;
+	heap32[(g0+3)] = r7;
+	heap32[(g0+4)] = r8;
+	__FUNCTION_TABLE__[(r9)>>2](i7);
+	r9 = r_g0;
+}
+else{
+	r9 = 1;
+}
+}
+else{
+	r9 = (r10 + r3)|0;
+	r10 = 6;
+	r14 = 1;
+	r9 = r9 == r8 ? r10 : r14;
+}
+}
+	if(r17 <1) //_LBB838_66
+{
+	if(r9 <4) //_LBB838_70
+{
+__label__ = 60;
+}
+else{
+	r10 = r9 & 1;
+	if(r10 != 0) //_LBB838_69
+{
+	r10 = heapU8[r2+8];
+	r10 = r10 & 2;
+	if(r10 ==0) //_LBB838_68
+{
+__label__ = 58;
+}
+else{
+__label__ = 60;
+}
+}
+else{
+__label__ = 58;
+}
+}
+if (__label__ == 60){
+	r10 = heap32[(fp+-6)];
+	if(r3 <0) //_LBB838_72
+{
+if(!(r3 ==-2)) //_LBB838_68
+{
+	r14 = heap32[(r11)];
+	r14 = r14 >> 2;
+	r14 = heap32[(r14+7)];
+	heap32[(g0)] = r5;
+	heap32[(g0+1)] = r3;
+	heap32[(g0+2)] = r10;
+	heap32[(g0+3)] = r7;
+	heap32[(g0+4)] = r8;
+	__FUNCTION_TABLE__[(r14)>>2](i7);
+	r17 = r_g0;
+break _64;
+}
+}
+else{
+	r10 = (r10 + r3)|0;
+	r14 = 6;
+	r17 = 1;
+	r17 = r10 == r8 ? r14 : r17;
+break _64;
+}
+}
+	r17 = 1;
+}
+}
+} while(0);
+	r10 = r9 ^ r17;
+	if(r10 <4) //_LBB838_81
+{
+	r9 = r9 & r17;
+	heap32[(r0)] = 0;
+	if(r9 <4) //_LBB838_83
+{
+	r9 = 1;
+	heap32[(r0+3)] = 1;
+}
+else{
+__label__ = 71;
+break _19;
+}
+}
+else{
+	if(r17 >3) //_LBB838_77
+{
+	r9 = heap32[(fp+-6)];
+	heap32[(r0)] = r9;
+	r9 = heap32[(r18+1)];
+	r15 = 0;
+	heap32[(r0+1)] = r9;
+	r9 = r17;
+}
+	heap32[(r0+3)] = r9;
+	r10 = r9 & 2;
+	if(r10 !=0) //_LBB838_13
+{
+__label__ = 12;
+break _17;
+}
+else{
+	r9 = r9 & 1;
+	if(r9 ==0) //_LBB838_13
+{
+__label__ = 12;
+break _17;
+}
+else{
+	r9 = r15;
+}
+}
+}
+}
+	r10 = (r19 - r16)|0;
+	if(r20 !=4) //_LBB838_86
+{
+continue _19;
+}
+else{
+__label__ = 78;
+break _17;
+}
+}
+switch(__label__ ){//multiple entries
+case 24:
+	r20 = heap32[(fp+-6)];
+	heap32[(r0)] = r20;
+	r20 = heap32[(r18+1)];
+	heap32[(r0+1)] = r20;
+	heap32[(r0+3)] = r17;
+	r_g0 = r9;
+	return;
+break;
+case 71:
+	heap32[(r0+3)] = 2;
+	r9 = 1;
+	r_g0 = r9;
+	return;
+break;
+case 77:
+	r9 = r15;
+__label__ = 78;
+break;
+}
+}
+} while(0);
+if (__label__ == 12){
+	r9 = 0;
+}
+	r0 = r9 & 255;
+	r_g0 = r0;
+	return;
+}
+} while(0);
+	r0 = 0;
+	r_g0 = r0;
+	return;
+}
+
+function _ZNK10__cxxabiv121__vmi_class_type_info20__do_find_public_srcEiPKvPKNS_17__class_type_infoES2_(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+	var r6;
+	var r7;
+	var r8;
+	var r9;
+var __label__ = 0;
+	i7 = sp + -24;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp+2)];
+	r1 = heap32[(fp+4)];
+	r2 = heap32[(fp)];
+	r3 = heap32[(fp+3)];
+	if(r0 !=r1) //_LBB839_4
+{
+__label__ = 4;
+}
+else{
+	r4 = r3 >> 2;
+	r5 = r2 >> 2;
+	r4 = heap32[(r4+1)];
+	r5 = heap32[(r5+1)];
+	r6 = _2E_str26;
+	r4 = r4 == 0 ? r6 : r4;
+	r5 = r5 == 0 ? r6 : r5;
+	heap32[(g0)] = r5;
+	heap32[(g0+1)] = r4;
+	strcmp(i7);
+	r6 = r_g0;
+	if(r6 <0) //_LBB839_4
+{
+__label__ = 4;
+}
+else{
+	heap32[(g0)] = r4;
+	heap32[(g0+1)] = r5;
+	strcmp(i7);
+	r4 = r_g0;
+	if(r4 <0) //_LBB839_4
+{
+__label__ = 4;
+}
+else{
+	r0 = 6;
+__label__ = 15;
+}
+}
+}
+if (__label__ == 4){
+	r4 = heap32[(fp+1)];
+	r5 = r2 >> 2;
+	r5 = heap32[(r5+3)];
+	r5 = (r5 + 1)|0;
+_7: while(true){
+	if(r5 !=1) //_LBB839_5
+{
+	r6 = r5 << 3;
+	r6 = (r2 + r6)|0;
+	r6 = r6 >> 2;
+	r6 = heap32[(r6+1)];
+	r7 = r6 & 2;
+_10: do {
+	if(r7 !=0) //_LBB839_7
+{
+	r7 = r6 & 1;
+if(!(r7 ==0)) //_LBB839_9
+{
+	if(r4 ==-3) //_LBB839_6
+{
+break _10;
+}
+}
+	r8 = r5 << 1;
+	r6 = r6 >> 8;
+	if(r7 != 0) //_LBB839_11
+{
+	r9 = r0 >> 2;
+	r9 = heap32[(r9)];
+	r6 = (r9 + r6)|0;
+	r6 = r6 >> 2;
+	r6 = heap32[(r6)];
+}
+	r8 = r8 << 2;
+	r8 = (r2 + r8)|0;
+	r8 = r8 >> 2;
+	r8 = heap32[(r8)];
+	r9 = r8 >> 2;
+	r9 = heap32[(r9)];
+	r9 = r9 >> 2;
+	r9 = heap32[(r9+7)];
+	r6 = (r0 + r6)|0;
+	heap32[(g0)] = r8;
+	heap32[(g0+1)] = r4;
+	heap32[(g0+2)] = r6;
+	heap32[(g0+3)] = r3;
+	heap32[(g0+4)] = r1;
+	__FUNCTION_TABLE__[(r9)>>2](i7);
+	r6 = r_g0;
+if(!(r6 <4)) //_LBB839_6
+{
+__label__ = 12;
+break _7;
+}
+}
+} while(0);
+	r5 = (r5 + -1)|0;
+continue _7;
+}
+else{
+__label__ = 14;
+break _7;
+}
+}
+switch(__label__ ){//multiple entries
+case 14:
+	r0 = 1;
+break;
+case 12:
+	r0 = r6 | r7;
+	r_g0 = r0;
+	return;
+break;
+}
+}
+	r_g0 = r0;
+	return;
+}
+
+function _ZN10__cxxabiv121__vmi_class_type_infoD0Ev(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+var __label__ = 0;
+	i7 = sp + -8;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = _ZTVSt9type_info;
+	r2 = r0 >> 2;
+	r1 = (r1 + 8)|0;
+	heap32[(r2)] = r1;
+	heap32[(g0)] = r0;
+	_ZdlPv(i7);
+	return;
+}
+
+function _ZN10__cxxabiv121__vmi_class_type_infoD1Ev(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+var __label__ = 0;
+	i7 = sp + 0;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = _ZTVSt9type_info;
+	r0 = r0 >> 2;
+	r1 = (r1 + 8)|0;
+	heap32[(r0)] = r1;
+	return;
+}
+
+function __extendsfdf2(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var f0;
+var __label__ = 0;
+	i7 = sp + -24;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = r0 & 2147483647;
+	r2 = r0 & -2147483648;
+	r3 = (r1 + -8388608)|0;
+	if(uint(r3) >uint(2130706431)) //_LBB842_2
+{
+	if(uint(r1) <uint(2139095040)) //_LBB842_4
+{
+	if(r1 !=0) //_LBB842_6
+{
+	r0 = r1 >>> 1;
+	r0 = r1 | r0;
+	r3 = r0 >>> 2;
+	r0 = r0 | r3;
+	r3 = r0 >>> 4;
+	r0 = r0 | r3;
+	r3 = r0 >>> 8;
+	r0 = r0 | r3;
+	r3 = r0 >>> 16;
+	r0 = r0 | r3;
+	r3 = r0 ^ -1;
+	r4 = 1431655765;
+	r3 = r3 >>> 1;
+	r0 = r4 & (~r0);
+	r3 = r3 & 1431655765;
+	r0 = (r0 + r3)|0;
+	r3 = r0 >>> 2;
+	r0 = r0 & 858993459;
+	r3 = r3 & 858993459;
+	r0 = (r0 + r3)|0;
+	r3 = r0 >>> 4;
+	r0 = r0 & 252645135;
+	r3 = r3 & 252645135;
+	r0 = (r0 + r3)|0;
+	r3 = r0 >>> 8;
+	r0 = r0 & 16711935;
+	r3 = r3 & 16711935;
+	r0 = (r0 + r3)|0;
+	r3 = r0 & 65535;
+	r0 = r0 >>> 16;
+	r0 = (r3 + r0)|0;
+	r3 = (r0 + 21)|0;
+	heap32[(g0)] = r1;
+	heap32[(g0+1)] = 0;
+	heap32[(g0+2)] = r3;
+	r3 = 905;
+	__ashldi3(i7);
+	r1 = r_g0;
+	r0 = (r3 - r0)|0;
+	r3 = r_g1 ^ 1048576;
+	r0 = r0 << 20;
+	r0 = r3 | r0;
+}
+else{
+	r1 = 0;
+	r0 = r1;
+}
+}
+else{
+	r1 = r0 >>> 3;
+	r3 = r1 & 524288;
+	r1 = r0 & 4194303;
+	r0 = r3 | 2146435072;
+}
+}
+else{
+	r0 = r1 >>> 3;
+	r1 = r1 << 29;
+	r0 = (r0 + 939524096)|0;
+}
+	r3 = sp + -8;
+	r3 = r3 >> 2;
+	r0 = r0 | r2;
+	heap32[(fp+-2)] = r1;
+	heap32[(r3+1)] = r0;
+	f0 = llvm_readDouble((sp+-8));
+	f_g0 = f0;
+	return;
+}
+
+function __fixdfsi(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+var __label__ = 0;
+	i7 = sp + -16;var g0 = i7>>2; // save stack
+	r0 = sp + 0;
+	r0 = r0 >> 2;
+	r0 = heap32[(r0+1)];
+	r1 = r0 >>> 20;
+	r1 = r1 & 2047;
+	r2 = r0 & 1048575;
+	r3 = -1;
+	r4 = 1;
+	r5 = (r1 + -1023)|0;
+	r0 = r0 < 0 ? r3 : r4;
+	r3 = heap32[(fp)];
+	r2 = r2 | 1048576;
+	if(uint(r5) >uint(51)) //_LBB843_2
+{
+	if(r5 <0) //_LBB843_5
+{
+	r0 = 0;
+	r_g0 = r0;
+	return;
+}
+else{
+	r1 = (r1 + -1075)|0;
+	heap32[(g0)] = r3;
+	heap32[(g0+1)] = r2;
+	heap32[(g0+2)] = r1;
+	__ashldi3(i7);
+}
+}
+else{
+	r5 = 1075;
+	r1 = (r5 - r1)|0;
+	heap32[(g0)] = r3;
+	heap32[(g0+1)] = r2;
+	heap32[(g0+2)] = r1;
+	__lshrdi3(i7);
+}
+	heap32[(g0)] = r_g0;
+	heap32[(g0+1)] = r_g1;
+	heap32[(g0+2)] = r0;
+	heap32[(g0+3)] = r0;
+	__muldi3(i7);
+	return;
+}
+
+function __floatsidf(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var f0;
+var __label__ = 0;
+	i7 = sp + -24;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	if(r0 !=0) //_LBB844_2
+{
+	r1 = r0 >> 31;
+	r2 = (r0 + r1)|0;
+	r1 = r2 ^ r1;
+	r2 = r1 >>> 1;
+	r2 = r1 | r2;
+	r3 = r2 >>> 2;
+	r2 = r2 | r3;
+	r3 = r2 >>> 4;
+	r2 = r2 | r3;
+	r3 = r2 >>> 8;
+	r2 = r2 | r3;
+	r3 = r2 >>> 16;
+	r2 = r2 | r3;
+	r3 = r2 ^ -1;
+	r4 = 1431655765;
+	r3 = r3 >>> 1;
+	r2 = r4 & (~r2);
+	r3 = r3 & 1431655765;
+	r2 = (r2 + r3)|0;
+	r3 = r2 >>> 2;
+	r2 = r2 & 858993459;
+	r3 = r3 & 858993459;
+	r2 = (r2 + r3)|0;
+	r3 = r2 >>> 4;
+	r2 = r2 & 252645135;
+	r3 = r3 & 252645135;
+	r2 = (r2 + r3)|0;
+	r3 = r2 >>> 8;
+	r2 = r2 & 16711935;
+	r3 = r3 & 16711935;
+	r2 = (r2 + r3)|0;
+	r3 = r2 & 65535;
+	r2 = r2 >>> 16;
+	r4 = 31;
+	r2 = (r3 + r2)|0;
+	r3 = 52;
+	r4 = (r4 - r2)|0;
+	r3 = (r3 - r4)|0;
+	heap32[(g0)] = r1;
+	heap32[(g0+1)] = 0;
+	heap32[(g0+2)] = r3;
+	r1 = 1054;
+	__ashldi3(i7);
+	r1 = (r1 - r2)|0;
+	r2 = r_g1 ^ 1048576;
+	r1 = r1 << 20;
+	r4 = sp + -8;
+	r1 = (r2 + r1)|0;
+	r0 = r0 & -2147483648;
+	r2 = r4 >> 2;
+	r0 = r1 | r0;
+	heap32[(fp+-2)] = r_g0;
+	heap32[(r2+1)] = r0;
+	f0 = llvm_readDouble((sp+-8));
+	f_g0 = f0;
+	return;
+}
+else{
+	f0 =                         0;
+	f_g0 = f0;
+	return;
+}
+}
+
+function __floatunsidf(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var f0;
+var __label__ = 0;
+	i7 = sp + -24;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	if(r0 !=0) //_LBB845_2
+{
+	r1 = r0 >>> 1;
+	r1 = r0 | r1;
+	r2 = r1 >>> 2;
+	r1 = r1 | r2;
+	r2 = r1 >>> 4;
+	r1 = r1 | r2;
+	r2 = r1 >>> 8;
+	r1 = r1 | r2;
+	r2 = r1 >>> 16;
+	r1 = r1 | r2;
+	r2 = r1 ^ -1;
+	r3 = 1431655765;
+	r2 = r2 >>> 1;
+	r1 = r3 & (~r1);
+	r2 = r2 & 1431655765;
+	r1 = (r1 + r2)|0;
+	r2 = r1 >>> 2;
+	r1 = r1 & 858993459;
+	r2 = r2 & 858993459;
+	r1 = (r1 + r2)|0;
+	r2 = r1 >>> 4;
+	r1 = r1 & 252645135;
+	r2 = r2 & 252645135;
+	r1 = (r1 + r2)|0;
+	r2 = r1 >>> 8;
+	r1 = r1 & 16711935;
+	r2 = r2 & 16711935;
+	r1 = (r1 + r2)|0;
+	r2 = r1 & 65535;
+	r1 = r1 >>> 16;
+	r3 = 31;
+	r1 = (r2 + r1)|0;
+	r2 = 52;
+	r3 = (r3 - r1)|0;
+	r2 = (r2 - r3)|0;
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = 0;
+	heap32[(g0+2)] = r2;
+	r0 = 1054;
+	__ashldi3(i7);
+	r0 = (r0 - r1)|0;
+	r1 = sp + -8;
+	r3 = r_g1 ^ 1048576;
+	r0 = r0 << 20;
+	r1 = r1 >> 2;
+	r0 = (r3 + r0)|0;
+	heap32[(fp+-2)] = r_g0;
+	heap32[(r1+1)] = r0;
+	f0 = llvm_readDouble((sp+-8));
+	f_g0 = f0;
+	return;
+}
+else{
+	f0 =                         0;
+	f_g0 = f0;
+	return;
+}
+}
+
+function __truncdfsf2(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+	var r6;
+	var r7;
+	var f0;
+var __label__ = 0;
+	i7 = sp + -24;var g0 = i7>>2; // save stack
+	r0 = sp + 0;
+	r0 = r0 >> 2;
+	r0 = heap32[(r0+1)];
+	r1 = r0 & 2147483647;
+	r2 = heap32[(fp)];
+	r3 = (r1 + -940572672)|0;
+	r4 = (r1 + -1206910976)|0;
+_1: do {
+	if(uint(r3) >=uint(r4)) //_LBB846_6
+{
+	r3 = 0;
+	r4 = 2146435072;
+	r5 = r2 == r3;
+	r4 = uint(r1) < uint(r4);
+	r4 = r1 == 2146435072 ? r5 : r4;
+	if(r4 != 0) //_LBB846_8
+{
+	r4 = 1206910976;
+	r4 = uint(r1) < uint(r4);
+	r4 = r1 == 1206910976 ? r5 : r4;
+	if(r4 != 0) //_LBB846_10
+{
+	r4 = 897;
+	r1 = r1 >>> 20;
+	r1 = (r4 - r1)|0;
+	if(r1 <53) //_LBB846_12
+{
+	r4 = r0 & 1048575;
+	r4 = r4 | 1048576;
+	heap32[(g0)] = r2;
+	heap32[(g0+1)] = r4;
+	heap32[(g0+2)] = r1;
+	__lshrdi3(i7);
+	r5 = r_g0;
+	r6 = r_g1;
+	r7 = 64;
+	r1 = (r7 - r1)|0;
+	heap32[(g0)] = r2;
+	heap32[(g0+1)] = r4;
+	heap32[(g0+2)] = r1;
+	__ashldi3(i7);
+	r1 = r_g0 | r_g1;
+	r1 = r1 != r3;
+	r1 = r1 & 1;
+	r2 = r5 & 536870911;
+	r4 = r5 >>> 29;
+	r5 = r6 << 3;
+	r1 = r1 | r2;
+	r2 = r4 | r5;
+	if(uint(r1) <uint(268435457)) //_LBB846_14
+{
+	r1 = r1 ^ 268435456;
+	r3 = r1 | r3;
+	if(r3 ==0) //_LBB846_16
+{
+	r3 = r2 & 1;
+	r3 = (r3 + r2)|0;
+}
+else{
+	r3 = r2;
+}
+}
+else{
+	r3 = (r2 + 1)|0;
+}
+}
+else{
+break _1;
+}
+}
+else{
+	r3 = 2139095040;
+}
+}
+else{
+	r1 = r2 & 4194303;
+	r3 = r1 | 2143289344;
+}
+}
+else{
+	r1 = r2 >>> 29;
+	r3 = r0 << 3;
+	r1 = r1 | r3;
+	r2 = r2 & 536870911;
+	if(uint(r2) <uint(268435457)) //_LBB846_3
+{
+	r3 = (r1 + 1073741824)|0;
+	r1 = 0;
+	r2 = r2 ^ 268435456;
+	r1 = r2 | r1;
+	if(r1 ==0) //_LBB846_5
+{
+	r1 = r3 & 1;
+	r3 = (r1 + r3)|0;
+}
+}
+else{
+	r3 = (r1 + 1073741825)|0;
+}
+}
+} while(0);
+	r0 = r0 & -2147483648;
+	r0 = r3 | r0;
+	heap32[(fp+-1)] = r0;
+	f0 = heapFloat[(fp+-1)];
+	f_g0 = f0;
+	return;
+}
+
+function __fixunsdfsi(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+var __label__ = 0;
+	i7 = sp + 0;var g0 = i7>>2; // save stack
+	r0 = sp + 0;
+	r0 = r0 >> 2;
+	r0 = heap32[(r0+1)];
+	r1 = r0 >>> 20;
+	r1 = r1 & 2047;
+	r2 = (r1 + -1023)|0;
+if(!(r2 <0)) //_LBB847_3
+{
+if(!(r0 <0)) //_LBB847_3
+{
+	r2 = heap32[(fp)];
+	r2 = r2 >>> 21;
+	r0 = r0 << 11;
+	r0 = r2 | r0;
+	r2 = 1054;
+	r0 = r0 | -2147483648;
+	r1 = (r2 - r1)|0;
+	r0 = r0 >>> r1;
+	r_g0 = r0;
+	return;
+}
+}
+	r0 = 0;
+	r_g0 = r0;
+	return;
+}
+
+function __floatundisf(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+	var r6;
+	var f0;
+var __label__ = 0;
+	i7 = sp + -24;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = heap32[(fp+1)];
+	r2 = r0 | r1;
+	if(r2 ==0) //_LBB848_12
+{
+	f0 =                         0;
+	f_g0 = f0;
+	return;
+}
+else{
+	r2 = r0 >>> 1;
+	r3 = r1 >>> 1;
+	r2 = r0 | r2;
+	r3 = r1 | r3;
+	r4 = r2 >>> 2;
+	r5 = r3 >>> 2;
+	r2 = r2 | r4;
+	r3 = r3 | r5;
+	r4 = r2 >>> 4;
+	r5 = r3 >>> 4;
+	r2 = r2 | r4;
+	r3 = r3 | r5;
+	r4 = r2 >>> 8;
+	r5 = r3 >>> 8;
+	r2 = r2 | r4;
+	r3 = r3 | r5;
+	r4 = r2 >>> 16;
+	r5 = r3 >>> 16;
+	r2 = r2 | r4;
+	r3 = r3 | r5;
+	r4 = r2 ^ -1;
+	r5 = 1431655765;
+	r6 = r3 ^ -1;
+	r4 = r4 >>> 1;
+	r6 = r6 >>> 1;
+	r2 = r5 & (~r2);
+	r4 = r4 & 1431655765;
+	r2 = (r2 + r4)|0;
+	r3 = r5 & (~r3);
+	r4 = r6 & 1431655765;
+	r3 = (r3 + r4)|0;
+	r4 = r2 >>> 2;
+	r5 = r3 >>> 2;
+	r2 = r2 & 858993459;
+	r4 = r4 & 858993459;
+	r2 = (r2 + r4)|0;
+	r3 = r3 & 858993459;
+	r4 = r5 & 858993459;
+	r3 = (r3 + r4)|0;
+	r4 = r2 >>> 4;
+	r5 = r3 >>> 4;
+	r2 = r2 & 252645135;
+	r4 = r4 & 252645135;
+	r2 = (r2 + r4)|0;
+	r3 = r3 & 252645135;
+	r4 = r5 & 252645135;
+	r3 = (r3 + r4)|0;
+	r4 = r2 >>> 8;
+	r5 = r3 >>> 8;
+	r2 = r2 & 16711935;
+	r4 = r4 & 16711935;
+	r2 = (r2 + r4)|0;
+	r3 = r3 & 16711935;
+	r4 = r5 & 16711935;
+	r3 = (r3 + r4)|0;
+	r4 = r2 & 65535;
+	r2 = r2 >>> 16;
+	r2 = (r4 + r2)|0;
+	r4 = r3 & 65535;
+	r3 = r3 >>> 16;
+	r3 = (r4 + r3)|0;
+	r2 = (r2 + 32)|0;
+	r4 = 64;
+	r2 = r1 != 0 ? r3 : r2;
+	r3 = 63;
+	r4 = (r4 - r2)|0;
+	r2 = (r3 - r2)|0;
+	if(r4 <25) //_LBB848_10
+{
+	r3 = 24;
+	r3 = (r3 - r4)|0;
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r1;
+	heap32[(g0+2)] = r3;
+	__ashldi3(i7);
+	r1 = r_g0;
+}
+else{
+	if(r4 ==25) //_LBB848_5
+{
+	r1 = r1 << 1;
+	r3 = r0 >>> 31;
+	r0 = r0 << 1;
+	r1 = r1 | r3;
+}
+else{
+	if(r4 !=26) //_LBB848_6
+{
+	r3 = (r4 + -26)|0;
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r1;
+	heap32[(g0+2)] = r3;
+	__lshrdi3(i7);
+	r3 = r_g0;
+	r5 = r_g1;
+	r6 = 90;
+	r6 = (r6 - r4)|0;
+	heap32[(g0)] = -1;
+	heap32[(g0+1)] = -1;
+	heap32[(g0+2)] = r6;
+	__lshrdi3(i7);
+	r0 = r_g0 & r0;
+	r1 = r_g1 & r1;
+	r0 = r0 | r1;
+	r1 = 0;
+	r0 = r0 != r1;
+	r0 = r0 & 1;
+	r0 = r0 | r3;
+	r1 = r5;
+}
+}
+	r3 = r0 >>> 2;
+	r3 = r3 & 1;
+	r0 = r3 | r0;
+	r3 = (r0 + 1)|0;
+	r5 = 1;
+	r6 = 0;
+	r0 = uint(r3) < uint(r0) ? r5 : r6;
+	r0 = r3 == 0 ? r5 : r0;
+	r0 = (r1 + r0)|0;
+	r1 = r3 >>> 2;
+	r5 = r0 << 30;
+	r1 = r1 | r5;
+	r5 = r1 & 16777216;
+	if(r5 !=0) //_LBB848_9
+{
+	r1 = r3 >>> 3;
+	r0 = r0 << 29;
+	r1 = r1 | r0;
+	r2 = r4;
+}
+}
+	r0 = r2 << 23;
+	r0 = (r0 + 1065353216)|0;
+	r1 = r1 & 8388607;
+	r0 = r0 | r1;
+	heap32[(fp+-1)] = r0;
+	f0 = heapFloat[(fp+-1)];
+	f_g0 = f0;
+	return;
+}
+}
+
+function __floatdisf(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+	var r6;
+	var r7;
+	var r8;
+	var r9;
+	var f0;
+var __label__ = 0;
+	i7 = sp + -24;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = heap32[(fp+1)];
+	r2 = r0 | r1;
+	if(r2 ==0) //_LBB849_12
+{
+	f0 =                         0;
+	f_g0 = f0;
+	return;
+}
+else{
+	r2 = r1 >> 31;
+	r1 = r2 ^ r1;
+	r0 = r2 ^ r0;
+	r3 = 1;
+	r4 = 0;
+	r5 = (r0 - r2)|0;
+	r1 = (r1 - r2)|0;
+	r0 = uint(r0) < uint(r2) ? r3 : r4;
+	r0 = (r1 - r0)|0;
+	r1 = r5 >>> 1;
+	r6 = r0 >>> 1;
+	r1 = r5 | r1;
+	r6 = r0 | r6;
+	r7 = r1 >>> 2;
+	r8 = r6 >>> 2;
+	r1 = r1 | r7;
+	r6 = r6 | r8;
+	r7 = r1 >>> 4;
+	r8 = r6 >>> 4;
+	r1 = r1 | r7;
+	r6 = r6 | r8;
+	r7 = r1 >>> 8;
+	r8 = r6 >>> 8;
+	r1 = r1 | r7;
+	r6 = r6 | r8;
+	r7 = r1 >>> 16;
+	r8 = r6 >>> 16;
+	r1 = r1 | r7;
+	r6 = r6 | r8;
+	r7 = r1 ^ -1;
+	r8 = 1431655765;
+	r9 = r6 ^ -1;
+	r7 = r7 >>> 1;
+	r9 = r9 >>> 1;
+	r1 = r8 & (~r1);
+	r7 = r7 & 1431655765;
+	r1 = (r1 + r7)|0;
+	r6 = r8 & (~r6);
+	r7 = r9 & 1431655765;
+	r6 = (r6 + r7)|0;
+	r7 = r1 >>> 2;
+	r8 = r6 >>> 2;
+	r1 = r1 & 858993459;
+	r7 = r7 & 858993459;
+	r1 = (r1 + r7)|0;
+	r6 = r6 & 858993459;
+	r7 = r8 & 858993459;
+	r6 = (r6 + r7)|0;
+	r7 = r1 >>> 4;
+	r8 = r6 >>> 4;
+	r1 = r1 & 252645135;
+	r7 = r7 & 252645135;
+	r1 = (r1 + r7)|0;
+	r6 = r6 & 252645135;
+	r7 = r8 & 252645135;
+	r6 = (r6 + r7)|0;
+	r7 = r1 >>> 8;
+	r8 = r6 >>> 8;
+	r1 = r1 & 16711935;
+	r7 = r7 & 16711935;
+	r1 = (r1 + r7)|0;
+	r6 = r6 & 16711935;
+	r7 = r8 & 16711935;
+	r6 = (r6 + r7)|0;
+	r7 = r1 & 65535;
+	r1 = r1 >>> 16;
+	r1 = (r7 + r1)|0;
+	r7 = r6 & 65535;
+	r6 = r6 >>> 16;
+	r6 = (r7 + r6)|0;
+	r1 = (r1 + 32)|0;
+	r7 = 64;
+	r1 = r0 != 0 ? r6 : r1;
+	r6 = 63;
+	r7 = (r7 - r1)|0;
+	r1 = (r6 - r1)|0;
+	if(r7 <25) //_LBB849_10
+{
+	r3 = 24;
+	r3 = (r3 - r7)|0;
+	heap32[(g0)] = r5;
+	heap32[(g0+1)] = r0;
+	heap32[(g0+2)] = r3;
+	__ashldi3(i7);
+	r5 = r_g0;
+}
+else{
+	if(r7 ==25) //_LBB849_5
+{
+	r0 = r0 << 1;
+	r6 = r5 >>> 31;
+	r5 = r5 << 1;
+	r0 = r0 | r6;
+}
+else{
+	if(r7 !=26) //_LBB849_6
+{
+	r6 = (r7 + -26)|0;
+	heap32[(g0)] = r5;
+	heap32[(g0+1)] = r0;
+	heap32[(g0+2)] = r6;
+	__lshrdi3(i7);
+	r6 = r_g0;
+	r8 = r_g1;
+	r9 = 90;
+	r9 = (r9 - r7)|0;
+	heap32[(g0)] = -1;
+	heap32[(g0+1)] = -1;
+	heap32[(g0+2)] = r9;
+	__lshrdi3(i7);
+	r5 = r_g0 & r5;
+	r0 = r_g1 & r0;
+	r0 = r5 | r0;
+	r0 = r0 != r4;
+	r0 = r0 & 1;
+	r5 = r0 | r6;
+	r0 = r8;
+}
+}
+	r6 = r5 >>> 2;
+	r6 = r6 & 1;
+	r5 = r6 | r5;
+	r6 = (r5 + 1)|0;
+	r5 = uint(r6) < uint(r5) ? r3 : r4;
+	r5 = r6 == 0 ? r3 : r5;
+	r0 = (r0 + r5)|0;
+	r5 = r6 >>> 2;
+	r3 = r0 << 30;
+	r5 = r5 | r3;
+	r3 = r5 & 16777216;
+	if(r3 !=0) //_LBB849_9
+{
+	r0 = r0 >> 2;
+	r5 = r5 >>> 1;
+	r0 = r0 << 31;
+	r5 = r5 | r0;
+	r1 = r7;
+}
+}
+	r0 = r1 << 23;
+	r1 = r5 & 8388607;
+	r2 = r2 & -2147483648;
+	r1 = r1 | r2;
+	r0 = (r0 + 1065353216)|0;
+	r0 = r1 | r0;
+	heap32[(fp+-1)] = r0;
+	f0 = heapFloat[(fp+-1)];
+	f_g0 = f0;
+	return;
+}
+}
+
+function _GLOBAL__I__mandreel_create_tcp_socket(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+var __label__ = 0;
+	i7 = sp + -8;var g0 = i7>>2; // save stack
+	r0 = mandreel_flash_tcp_onError__index__;
+	r1 = _ZZL32_mandreel_init_tcp_socket_librayvE47s_723478567_mandreel_mandreel_flash_tcp_onError;
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r1;
+	iMandreelRegisterExternalCallback(i7);
+	return;
+}
+
+function mandreel_flash_tcp_onConnect(sp)
+{
+	var i7;
+	var fp = sp>>2;
+var __label__ = 0;
+	i7 = sp + 0;var g0 = i7>>2; // save stack
+	return;
+}
+
+function mandreel_flash_tcp_onError(sp)
+{
+	var i7;
+	var fp = sp>>2;
+var __label__ = 0;
+	i7 = sp + 0;var g0 = i7>>2; // save stack
+	return;
+}
+
+function mandreel_flash_tcp_receive_callbak(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+	var r6;
+	var r7;
+var __label__ = 0;
+	i7 = sp + -32784;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp+1)];
+	r1 = heap32[(fp)];
+	r2 = heapU8[r0];
+_1: do {
+	if(r2 !=0) //_LBB853_2
+{
+	r3 = (r0 + 1)|0;
+	r4 = 0;
+_3: while(true){
+	r2 = (r4 + 1)|0;
+	r5 = heapU8[r3+r4];
+	r4 = r2;
+	if(r5 !=0) //_LBB853_3
+{
+continue _3;
+}
+else{
+break _1;
+}
+}
+}
+else{
+	r2 = 0;
+}
+} while(0);
+	r3 = sp + -32768;
+	heap32[(g0)] = r0;
+	heap32[(g0+1)] = r2;
+	heap32[(g0+2)] = r3;
+	heap32[(g0+3)] = 32768;
+	r0 = _ZL10s_aSockets;
+	r2 = 0;
+	_ZN12mandreel_b6410b64_decodeEPKcjPvj(i7);
+	r4 = r_g0;
+	r6 = _ZL10s_aSockets;
+_7: while(true){
+	if(uint(r2) <uint(8)) //_LBB853_5
+{
+	r5 = (r2 * 8198)|0;
+	r5 = r5 << 2;
+	r5 = (r6 + r5)|0;
+	r5 = r5 >> 2;
+	r5 = heap32[(r5+8196)];
+	if(r5 !=r1) //_LBB853_7
+{
+	r2 = (r2 + 1)|0;
+	r0 = (r0 + 32792)|0;
+continue _7;
+}
+else{
+__label__ = 9;
+break _7;
+}
+}
+else{
+__label__ = 8;
+break _7;
+}
+}
+if (__label__ == 8){
+	r0 = 0;
+}
+	r1 = r0 >> 2;
+	r2 = heap32[(r1+8194)];
+	if(r4 >0) //_LBB853_12
+{
+	r5 = r4;
+_16: while(true){
+	r6 = (r2 + 1)|0;
+	r5 = (r5 + -1)|0;
+	r6 = r6 & 32767;
+	r7 = (r3 + 1)|0;
+	r3 = heapU8[r3];
+	heap8[r0+r2] = r3;
+	r3 = r7;
+	r2 = r6;
+if(!(r5 !=0)) //_LBB853_13
+{
+break _16;
+}
+}
+	r2 = r6;
+}
+	heap32[(r1+8194)] = r2;
+	r0 = heap32[(r1+8192)];
+	r0 = (r0 + r4)|0;
+	heap32[(r1+8192)] = r0;
+	return;
+}
+
+function _GLOBAL__D__ZN8OpenGLES12OpenGLESUtil15getCurrentErrorEv(sp)
+{
+	var i7;
+	var fp = sp>>2;
+var __label__ = 0;
+	i7 = sp + -8;var g0 = i7>>2; // save stack
+	heap32[(g0)] = 0;
+	_Z41__static_initialization_and_destruction_0ii(i7);
+	return;
+}
+
+function _ZNSt5dequeIjSaIjEE5eraseESt15__rw_deque_iterIjiPjRjS0_ES5_(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+	var r6;
+	var r7;
+	var r8;
+	var r9;
+	var r10;
+	var r11;
+	var r12;
+	var r13;
+	var r14;
+	var r15;
+	var r16;
+var __label__ = 0;
+	i7 = sp + -8;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp+4)];
+	r0 = r0 >> 2;
+	r1 = heap32[(fp)];
+	r2 = heap32[(fp+1)];
+	r3 = heap32[(fp+2)];
+	r4 = heap32[(r0)];
+	r5 = heap32[(fp+3)];
+	r6 = heap32[(r0+1)];
+	r7 = r4 | r3;
+	if(r7 !=0) //_LBB855_2
+{
+	r7 = r6 >> 2;
+	r8 = (r6 - r5)|0;
+	r9 = r5 >> 2;
+	r8 = r8 << 3;
+	r9 = heap32[(r9)];
+	r7 = heap32[(r7)];
+	r7 = (r4 - r7)|0;
+	r8 = (r8 + -32)|0;
+	r9 = (r9 + 128)|0;
+	r9 = (r9 - r3)|0;
+	r7 = r7 >> 2;
+	r8 = r8 & -32;
+	r7 = (r7 + r8)|0;
+	r8 = r9 >> 2;
+	r7 = (r7 + r8)|0;
+}
+else{
+	r7 = (r4 - r3)|0;
+	r7 = r7 >> 2;
+}
+	r8 = r2 >> 2;
+	r9 = heap32[(r8)];
+	r10 = heap32[(r8+1)];
+	r11 = r3 | r9;
+	if(r11 !=0) //_LBB855_5
+{
+	r11 = (r5 - r10)|0;
+	r12 = r5 >> 2;
+	r13 = r10 >> 2;
+	r11 = r11 << 3;
+	r13 = heap32[(r13)];
+	r12 = heap32[(r12)];
+	r11 = (r11 + -32)|0;
+	r12 = (r3 - r12)|0;
+	r13 = (r13 + 128)|0;
+	r13 = (r13 - r9)|0;
+	r11 = r11 & -32;
+	r12 = r12 >> 2;
+	r11 = (r11 + r12)|0;
+	r12 = r13 >> 2;
+	r11 = (r11 + r12)|0;
+}
+else{
+	r11 = (r3 - r9)|0;
+	r11 = r11 >> 2;
+}
+	r2 = (r2 + 8)|0;
+	r12 = heap32[(r8+2)];
+	r13 = heap32[(r8+3)];
+	r14 = r12 | r4;
+	if(r14 !=0) //_LBB855_8
+{
+	r14 = (r13 - r6)|0;
+	r15 = r13 >> 2;
+	r16 = r6 >> 2;
+	r14 = r14 << 3;
+	r16 = heap32[(r16)];
+	r15 = heap32[(r15)];
+	r14 = (r14 + -32)|0;
+	r15 = (r12 - r15)|0;
+	r16 = (r16 + 128)|0;
+	r16 = (r16 - r4)|0;
+	r14 = r14 & -32;
+	r15 = r15 >> 2;
+	r14 = (r14 + r15)|0;
+	r15 = r16 >> 2;
+	r14 = (r14 + r15)|0;
+}
+else{
+	r14 = (r12 - r4)|0;
+	r14 = r14 >> 2;
+}
+	if(r11 >=r14) //_LBB855_36
+{
+	r0 = (r5 + 4)|0;
+	r9 = r3;
+_15: while(true){
+	r10 = r4 | r12;
+	if(r10 !=0) //_LBB855_44
+{
+	r10 = r6 >> 2;
+	r11 = (r6 - r13)|0;
+	r14 = r13 >> 2;
+	r11 = r11 << 3;
+	r14 = heap32[(r14)];
+	r10 = heap32[(r10)];
+	r10 = (r4 - r10)|0;
+	r11 = (r11 + -32)|0;
+	r14 = (r14 + 128)|0;
+	r14 = (r14 - r12)|0;
+	r10 = r10 >> 2;
+	r11 = r11 & -32;
+	r10 = (r10 + r11)|0;
+	r11 = r14 >> 2;
+	r10 = (r10 + r11)|0;
+}
+else{
+	r10 = (r4 - r12)|0;
+	r10 = r10 >> 2;
+}
+	if(r10 !=0) //_LBB855_37
+{
+	r10 = r4 >> 2;
+	r11 = r9 >> 2;
+	r10 = heap32[(r10)];
+	r4 = (r4 + 4)|0;
+	r14 = r6 >> 2;
+	heap32[(r11)] = r10;
+	r10 = heap32[(r14)];
+	r10 = (r10 + 128)|0;
+	if(r4 ==r10) //_LBB855_39
+{
+	r6 = (r6 + 4)|0;
+	r4 = heap32[(r14+1)];
+}
+	r10 = r0 >> 2;
+	r9 = (r9 + 4)|0;
+	r11 = heap32[(r10+-1)];
+	r11 = (r11 + 128)|0;
+if(!(r9 !=r11)) //_LBB855_42
+{
+	r9 = heap32[(r10)];
+	r0 = (r0 + 4)|0;
+}
+}
+else{
+break _15;
+}
+}
+_27: do {
+if(!(r7 ==0)) //_LBB855_59
+{
+	r0 = heap32[(r8+2)];
+_29: while(true){
+	r0 = (r0 + -4)|0;
+	heap32[(r8+2)] = r0;
+	r4 = heap32[(r8+3)];
+	r6 = heap32[(r8+1)];
+	if(r6 !=r4) //_LBB855_51
+{
+__label__ = 45;
+}
+else{
+	r6 = heap32[(r8)];
+	if(r6 !=r0) //_LBB855_51
+{
+__label__ = 45;
+}
+else{
+	r0 = r4 >> 2;
+	r4 = heap32[(r0)];
+__label__ = 47;
+}
+}
+if (__label__ == 45){
+	r4 = r4 >> 2;
+	r4 = heap32[(r4)];
+	if(r0 ==r4) //_LBB855_53
+{
+__label__ = 47;
+}
+else{
+__label__ = 46;
+}
+}
+_36: do {
+if (__label__ == 47){
+	heap32[(g0)] = r4;
+	_ZdlPv(i7);
+	r0 = heap32[(r8+3)];
+	r4 = heap32[(r8+1)];
+if(!(r4 !=r0)) //_LBB855_58
+{
+	r4 = heap32[(r8)];
+	r6 = heap32[(r8+2)];
+if(!(r4 !=r6)) //_LBB855_58
+{
+	r0 = heap32[(r8+4)];
+	r0 = (r0 + -4)|0;
+	heap32[(g0)] = r0;
+	_ZdlPv(i7);
+	heap32[(r8+2)] = 0;
+	heap32[(r8+3)] = r2;
+	heap32[(r8)] = 0;
+	heap32[(r8+1)] = r2;
+	r0 = 0;
+	heap32[(r8+4)] = 0;
+	heap32[(r8+5)] = 0;
+break _36;
+}
+}
+	r4 = r0 >> 2;
+	r6 = (r0 + -4)|0;
+	heap32[(r4)] = 0;
+	heap32[(r8+3)] = r6;
+	r0 = heap32[(r4+-1)];
+	r0 = (r0 + 128)|0;
+	heap32[(r8+2)] = r0;
+	heap32[(r8+3)] = r6;
+}
+} while(0);
+	r7 = (r7 + -1)|0;
+	if(r7 ==0) //_LBB855_59
+{
+break _27;
+}
+}
+}
+} while(0);
+	r0 = r1 >> 2;
+	heap32[(r0)] = r3;
+	heap32[(r0+1)] = r5;
+	return;
+}
+else{
+_44: while(true){
+	r12 = r9 | r3;
+	if(r12 !=0) //_LBB855_20
+{
+	r12 = r10 >> 2;
+	r13 = (r10 - r5)|0;
+	r11 = r5 >> 2;
+	r13 = r13 << 3;
+	r11 = heap32[(r11)];
+	r12 = heap32[(r12)];
+	r12 = (r9 - r12)|0;
+	r13 = (r13 + -32)|0;
+	r11 = (r11 + 128)|0;
+	r11 = (r11 - r3)|0;
+	r12 = r12 >> 2;
+	r13 = r13 & -32;
+	r12 = (r12 + r13)|0;
+	r13 = r11 >> 2;
+	r12 = (r12 + r13)|0;
+}
+else{
+	r12 = (r9 - r3)|0;
+	r12 = r12 >> 2;
+}
+	if(r12 !=0) //_LBB855_11
+{
+	r12 = r6 >> 2;
+	r13 = heap32[(r12)];
+	if(r4 ==r13) //_LBB855_13
+{
+	r4 = heap32[(r12+-1)];
+	r6 = (r6 + -4)|0;
+	r4 = (r4 + 128)|0;
+}
+	r12 = r5 >> 2;
+	r4 = (r4 + -4)|0;
+	r13 = heap32[(r12)];
+	if(r3 ==r13) //_LBB855_16
+{
+	r3 = heap32[(r12+-1)];
+	r5 = (r5 + -4)|0;
+	r3 = (r3 + 128)|0;
+}
+	r12 = r3 >> 2;
+	r3 = (r3 + -4)|0;
+	r13 = r4 >> 2;
+	r12 = heap32[(r12+-1)];
+	heap32[(r13)] = r12;
+}
+else{
+break _44;
+}
+}
+_58: do {
+if(!(r7 ==0)) //_LBB855_35
+{
+	r3 = heap32[(r8)];
+_60: while(true){
+	r3 = (r3 + 4)|0;
+	heap32[(r8)] = r3;
+	r4 = heap32[(r8+1)];
+	r5 = heap32[(r8+3)];
+	if(r4 !=r5) //_LBB855_27
+{
+__label__ = 24;
+}
+else{
+	r5 = r2 >> 2;
+	r5 = heap32[(r5)];
+	if(r3 !=r5) //_LBB855_27
+{
+__label__ = 24;
+}
+else{
+	r3 = r4 >> 2;
+	r4 = heap32[(r3)];
+__label__ = 26;
+}
+}
+if (__label__ == 24){
+	r4 = r4 >> 2;
+	r4 = heap32[(r4)];
+	r5 = (r4 + 128)|0;
+	if(r3 ==r5) //_LBB855_29
+{
+__label__ = 26;
+}
+else{
+__label__ = 25;
+}
+}
+_67: do {
+if (__label__ == 26){
+	heap32[(g0)] = r4;
+	_ZdlPv(i7);
+	r3 = heap32[(r8+1)];
+	r4 = heap32[(r8+3)];
+if(!(r3 !=r4)) //_LBB855_34
+{
+	r4 = heap32[(r8)];
+	r5 = heap32[(r8+2)];
+if(!(r4 !=r5)) //_LBB855_34
+{
+	r3 = heap32[(r8+4)];
+	r3 = (r3 + -4)|0;
+	heap32[(g0)] = r3;
+	_ZdlPv(i7);
+	heap32[(r8+2)] = 0;
+	heap32[(r8+3)] = r2;
+	heap32[(r8)] = 0;
+	heap32[(r8+1)] = r2;
+	r3 = 0;
+	heap32[(r8+4)] = 0;
+	heap32[(r8+5)] = 0;
+break _67;
+}
+}
+	r4 = r3 >> 2;
+	r5 = (r3 + 4)|0;
+	heap32[(r4)] = 0;
+	heap32[(r8+1)] = r5;
+	r3 = heap32[(r4+1)];
+	heap32[(r8)] = r3;
+	heap32[(r8+1)] = r5;
+}
+} while(0);
+	r7 = (r7 + -1)|0;
+	if(r7 ==0) //_LBB855_35
+{
+break _58;
+}
+}
+}
+} while(0);
+	r1 = r1 >> 2;
+	r2 = heap32[(r0)];
+	heap32[(r1)] = r2;
+	r2 = heap32[(r0+1)];
+	heap32[(r1+1)] = r2;
+	return;
+}
+}
+
+function _Z41__static_initialization_and_destruction_0ii(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+	var r6;
+	var r7;
+	var r8;
+	var r9;
+	var r10;
+	var r11;
+var __label__ = 0;
+	i7 = sp + -80;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	if(r0 ==0) //_LBB856_16
+{
+	r0 = _ZL13s_fifo_errors;
+	r1 = r0 >> 2;
+	r2 = heap32[(r1+2)];
+	r3 = sp + -24;
+	heap32[(fp+-6)] = r2;
+	r2 = r3 >> 2;
+	r4 = heap32[(r1+3)];
+	heap32[(r2+1)] = r4;
+	r2 = heap32[(r1)];
+	r1 = heap32[(r1+1)];
+	r4 = sp + -32;
+}
+else{
+	if(r0 !=1) //_LBB856_17
+{
+	return;
+}
+else{
+	r0 = sp + -56;
+	r1 = r0 >> 2;
+	r2 = (r0 + 8)|0;
+	heap32[(r1+2)] = 0;
+	heap32[(r1+3)] = r2;
+	heap32[(fp+-14)] = 0;
+	heap32[(r1+1)] = r2;
+	r2 = _ZL13s_fifo_errors;
+	heap32[(r1+4)] = 0;
+	r3 = r2 >> 2;
+	heap32[(r1+5)] = 0;
+	r4 = (r2 + 8)|0;
+	heap32[(r3+2)] = 0;
+	heap32[(r3+3)] = r4;
+	heap32[(r3)] = 0;
+	heap32[(r3+1)] = r4;
+	r5 = 0;
+	heap32[(r3+4)] = 0;
+	heap32[(r3+5)] = 0;
+	r6 = r4;
+	r7 = r5;
+_7: while(true){
+	if(r7 !=0) //_LBB856_12
+{
+	r8 = (r2 + 8)|0;
+	r8 = (r8 - r6)|0;
+	r9 = r6 >> 2;
+	r8 = r8 << 3;
+	r9 = heap32[(r9)];
+	r10 = 0;
+	r11 = heap32[(r3+2)];
+	r10 = (r10 - r11)|0;
+	r8 = (r8 + -32)|0;
+	r9 = (r9 + 128)|0;
+	r9 = (r9 - r7)|0;
+	r10 = r10 >> 2;
+	r8 = r8 & -32;
+	r8 = (r10 + r8)|0;
+	r9 = r9 >> 2;
+	r8 = (r8 + r9)|0;
+}
+else{
+	r8 = 0;
+	r8 = (r8 - r7)|0;
+	r8 = r8 >> 2;
+}
+	if(r8 !=0) //_LBB856_3
+{
+	r8 = r4 >> 2;
+	r9 = heap32[(r8)];
+	if(r5 ==r9) //_LBB856_5
+{
+	r5 = heap32[(r8+-1)];
+	r4 = (r4 + -4)|0;
+	r5 = (r5 + 128)|0;
+}
+	r8 = r6 >> 2;
+	r5 = (r5 + -4)|0;
+	r9 = heap32[(r8)];
+	if(r7 ==r9) //_LBB856_8
+{
+	r7 = heap32[(r8+-1)];
+	r6 = (r6 + -4)|0;
+	r7 = (r7 + 128)|0;
+}
+	r8 = r7 >> 2;
+	r7 = (r7 + -4)|0;
+	r9 = r5 >> 2;
+	r8 = heap32[(r8+-1)];
+	heap32[(r9)] = r8;
+}
+else{
+break _7;
+}
+}
+	r2 = heap32[(r1+2)];
+	r3 = sp + -8;
+	heap32[(fp+-2)] = r2;
+	r2 = r3 >> 2;
+	r4 = heap32[(r1+3)];
+	heap32[(r2+1)] = r4;
+	r2 = heap32[(fp+-14)];
+	r1 = heap32[(r1+1)];
+	r4 = sp + -16;
+}
+}
+	heap32[(g0)] = r4;
+	heap32[(g0+1)] = r0;
+	heap32[(g0+2)] = r2;
+	heap32[(g0+3)] = r1;
+	heap32[(g0+4)] = r3;
+	_ZNSt5dequeIjSaIjEE5eraseESt15__rw_deque_iterIjiPjRjS0_ES5_(i7);
+	return;
+}
+
+function _GLOBAL__I__ZN5my_gl14glAttachShaderEjj(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+var __label__ = 0;
+	i7 = sp + 0;var g0 = i7>>2; // save stack
+	r0 = _ZN5my_glL9m_contextE;
+	r1 = r0 >> 2;
+	heap32[(r1+62)] = 0;
+	heap32[(r1+63)] = 0;
+	heap32[(r1+64)] = 0;
+	heap32[(r1+65)] = 0;
+	heap32[(r1+66)] = 0;
+	heap32[(r1+67)] = 0;
+	heap32[(r1+78)] = 0;
+	heap32[(r1+79)] = 0;
+	heap32[(r1+74)] = 0;
+	heap32[(r1+77)] = 0;
+	heap32[(r1+76)] = 0;
+	heap32[(r1+75)] = 0;
+	_ZN4__rw9__rb_treeIjSt4pairIKjPN5my_gl12TIndexBufferEENS_11__select1stIS6_jEESt4lessIjESaIS6_EE11_C_get_linkEv(i7);
+	r2 = r_g0;
+	r3 = r2 >> 2;
+	heap32[(r1+78)] = r2;
+	heap32[(r3+1)] = 0;
+	heap32[(r3+3)] = r2;
+	heap32[(r3+2)] = r2;
+	heap32[(r1)] = 0;
+	heap32[(r1+3)] = 0;
+	heap32[(r1+61)] = 0;
+	heap32[(r1+4)] = 0;
+	heap32[(r1+68)] = 0;
+	heap32[(r1+69)] = 0;
+	r2 = _ZL26s_mandreel_internal_height;
+	r3 = _ZL25s_mandreel_internal_width;
+	heap32[(r1+1)] = 0;
+	r2 = r2 >> 2;
+	heap32[(r1+2)] = 1;
+	r3 = r3 >> 2;
+	r2 = heap32[(r2)];
+	r3 = heap32[(r3)];
+	heap32[(r1+70)] = 0;
+	heap32[(r1+71)] = 0;
+	r4 = 224;
+	heap32[(r1+72)] = r3;
+	heap32[(r1+73)] = r2;
+	r2 = 0;
+_2: while(true){
+	r1 = (r4 + -1)|0;
+	r4 = (r0 - r4)|0;
+	heap8[r4+244] = r2;
+	r4 = r1;
+	if(r1 !=0) //_LBB857_2
+{
+continue _2;
+}
+else{
+break _2;
+}
+}
+	return;
+}
+
+function _GLOBAL__D__ZN5my_gl14glAttachShaderEjj(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+	var r6;
+var __label__ = 0;
+	i7 = sp + -16;var g0 = i7>>2; // save stack
+	r0 = _ZN5my_glL9m_contextE;
+	r0 = r0 >> 2;
+	r1 = heap32[(r0+78)];
+_1: do {
+if(!(r1 ==0)) //_LBB858_26
+{
+	r2 = r1 >> 2;
+	r3 = heap32[(r0+79)];
+	if(r3 !=0) //_LBB858_5
+{
+	r1 = heap32[(r2+1)];
+	heap32[(g0)] = r1;
+	_ZN4__rw9__rb_treeIjSt4pairIKjPN5my_gl12TIndexBufferEENS_11__select1stIS6_jEESt4lessIjESaIS6_EE8_C_eraseEPNS_17__rw_rb_tree_nodeISB_S6_jS8_EE(i7);
+	r1 = heap32[(r0+78)];
+	r2 = r1 >> 2;
+	heap32[(r2+1)] = 0;
+	heap32[(r2+3)] = r1;
+	heap32[(r2+2)] = r1;
+	heap32[(r0+79)] = 0;
+}
+else{
+	r2 = heap32[(r2+2)];
+if(!(r2 ==r1)) //_LBB858_4
+{
+_6: while(true){
+	r3 = r2;
+	r4 = r3 >> 2;
+	r2 = heap32[(r4+3)];
+_8: do {
+	if(r2 !=0) //_LBB858_10
+{
+	r4 = r2 >> 2;
+	r4 = heap32[(r4+2)];
+	if(r4 ==0) //_LBB858_12
+{
+break _8;
+}
+else{
+__label__ = 8; //SET chanka
+_10: while(true){
+	r2 = r4;
+	r4 = r2 >> 2;
+	r4 = heap32[(r4+2)];
+	if(r4 !=0) //_LBB858_13
+{
+continue _10;
+}
+else{
+break _8;
+}
+}
+}
+}
+else{
+	r4 = heap32[(r4+1)];
+	r2 = r4 >> 2;
+	r2 = heap32[(r2+3)];
+	if(r3 ==r2) //_LBB858_9
+{
+_14: while(true){
+	r2 = r4;
+	r5 = r2 >> 2;
+	r4 = heap32[(r5+1)];
+	r6 = r4 >> 2;
+	r6 = heap32[(r6+3)];
+if(!(r2 ==r6)) //_LBB858_15
+{
+break _14;
+}
+}
+	r5 = heap32[(r5+3)];
+}
+else{
+	r5 = 0;
+	r2 = r3;
+}
+	if(r5 !=r4) //_LBB858_19
+{
+	r2 = r4;
+}
+}
+} while(0);
+	r4 = sp + -8;
+	heap32[(g0)] = r4;
+	heap32[(g0+1)] = r3;
+	_ZN4__rw9__rb_treeIjSt4pairIKjPN5my_gl12TIndexBufferEENS_11__select1stIS6_jEESt4lessIjESaIS6_EE5eraseENS_14__rw_tree_iterIS6_iPS6_RS6_NS_17__rw_rb_tree_nodeISB_S6_jS8_EEEE(i7);
+if(!(r2 !=r1)) //_LBB858_6
+{
+break _6;
+}
+}
+	r1 = heap32[(r0+78)];
+}
+}
+	r2 = r1 >> 2;
+	r3 = heap32[(r0+75)];
+	heap32[(r2+3)] = r3;
+	heap32[(r0+75)] = r1;
+	r1 = heap32[(r0+74)];
+if(!(r1 ==0)) //_LBB858_26
+{
+__label__ = 16; //SET chanka
+_23: while(true){
+	r2 = r1 >> 2;
+	r3 = heap32[(r2)];
+	heap32[(r0+74)] = r3;
+	r2 = heap32[(r2+2)];
+	heap32[(g0)] = r2;
+	_ZdlPv(i7);
+	heap32[(g0)] = r1;
+	_ZdlPv(i7);
+	r1 = heap32[(r0+74)];
+	if(r1 !=0) //_LBB858_23
+{
+continue _23;
+}
+else{
+break _1;
+}
+}
+}
+}
+} while(0);
+	r1 = heap32[(r0+65)];
+	r2 = heap32[(r0+66)];
+	r3 = (r2 - r1)|0;
+	r3 = r3 >> 5;
+	if(r3 !=0) //_LBB858_28
+{
+	r1 = (r2 + -32)|0;
+	heap32[(r0+66)] = r1;
+	r1 = (r2 + -28)|0;
+	heap32[(g0)] = r1;
+	_ZN4__rw9__rb_treeISsSt4pairIKSsiENS_11__select1stIS3_SsEESt4lessISsESaIS3_EED2Ev(i7);
+_31: do {
+if(!(r3 ==1)) //_LBB858_33
+{
+	r1 = (r3 + -1)|0;
+_33: while(true){
+	r2 = heap32[(r0+66)];
+	r3 = (r2 + -32)|0;
+	heap32[(r0+66)] = r3;
+	r2 = (r2 + -28)|0;
+	heap32[(g0)] = r2;
+	_ZN4__rw9__rb_treeISsSt4pairIKSsiENS_11__select1stIS3_SsEESt4lessISsESaIS3_EED2Ev(i7);
+	r1 = (r1 + -1)|0;
+if(!(r1 !=0)) //_LBB858_31
+{
+break _31;
+}
+}
+}
+} while(0);
+	r1 = heap32[(r0+65)];
+}
+	heap32[(g0)] = r1;
+	_ZdlPv(i7);
+	r1 = heap32[(r0+63)];
+	r2 = heap32[(r0+62)];
+	r3 = (r1 - r2)|0;
+	r4 = (r3 + 11)|0;
+if(!(uint(r4) <uint(23))) //_LBB858_37
+{
+	r3 = (r3 / -12)|0;
+	r3 = (r3 * 12)|0;
+	r1 = (r1 + r3)|0;
+	heap32[(r0+63)] = r1;
+}
+	heap32[(g0)] = r2;
+	_ZdlPv(i7);
+	return;
+}
+
+function imandreel_restore_glcontext(sp)
+{
+	var i7;
+	var fp = sp>>2;
+var __label__ = 0;
+	i7 = sp + 0;var g0 = i7>>2; // save stack
+	return;
+}
+
+function imandreel_viewport_resize(sp)
+{
+	var i7;
+	var fp = sp>>2;
+var __label__ = 0;
+	i7 = sp + 0;var g0 = i7>>2; // save stack
+	return;
+}
+
+function _ZN4__rw9__rb_treeIjSt4pairIKjPN5my_gl12TIndexBufferEENS_11__select1stIS6_jEESt4lessIjESaIS6_EE8_C_eraseEPNS_17__rw_rb_tree_nodeISB_S6_jS8_EE(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+var __label__ = 0;
+	i7 = sp + -8;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+if(!(r0 ==0)) //_LBB861_2
+{
+_2: while(true){
+	r1 = r0 >> 2;
+	r2 = heap32[(r1+3)];
+	heap32[(g0)] = r2;
+	r2 = _ZN5my_glL9m_contextE;
+	_ZN4__rw9__rb_treeIjSt4pairIKjPN5my_gl12TIndexBufferEENS_11__select1stIS6_jEESt4lessIjESaIS6_EE8_C_eraseEPNS_17__rw_rb_tree_nodeISB_S6_jS8_EE(i7);
+	r2 = r2 >> 2;
+	r3 = heap32[(r1+2)];
+	r4 = heap32[(r2+75)];
+	heap32[(r1+3)] = r4;
+	heap32[(r2+75)] = r0;
+	r0 = r3;
+	if(r3 !=0) //_LBB861_1
+{
+continue _2;
+}
+else{
+break _2;
+}
+}
+}
+	return;
+}
+
+function _ZN4__rw9__rb_treeISsSt4pairIKSsiENS_11__select1stIS3_SsEESt4lessISsESaIS3_EE8_C_eraseEPNS_17__rw_rb_tree_nodeIS8_S3_SsS5_EE(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+	var r6;
+	var r7;
+var __label__ = 0;
+	i7 = sp + -8;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp+1)];
+if(!(r0 ==0)) //_LBB862_6
+{
+	r1 = heap32[(fp)];
+_3: while(true){
+	r2 = r0;
+	r3 = r2 >> 2;
+	r0 = heap32[(r3+3)];
+	heap32[(g0)] = r1;
+	heap32[(g0+1)] = r0;
+	_ZN4__rw9__rb_treeISsSt4pairIKSsiENS_11__select1stIS3_SsEESt4lessISsESaIS3_EE8_C_eraseEPNS_17__rw_rb_tree_nodeIS8_S3_SsS5_EE(i7);
+	r4 = r1 >> 2;
+	r0 = heap32[(r3+2)];
+	r5 = heap32[(r4+1)];
+	heap32[(r3+3)] = r5;
+	r5 = heap32[(r3+4)];
+	r5 = (r5 + -12)|0;
+	r6 = _ZNSs11_C_null_refE;
+if(!(r5 ==r6)) //_LBB862_5
+{
+	r5 = r5 >> 2;
+	r6 = heap32[(r5)];
+	r7 = (r6 + -1)|0;
+	heap32[(r5)] = r7;
+if(!(r6 >0)) //_LBB862_5
+{
+	r5 = heap32[(r3+4)];
+	r5 = (r5 + -12)|0;
+	heap32[(g0)] = r5;
+	_ZdlPv(i7);
+}
+}
+	heap32[(r3+4)] = 0;
+	heap32[(r4+1)] = r2;
+	if(r0 !=0) //_LBB862_2
+{
+continue _3;
+}
+else{
+break _3;
+}
+}
+}
+	return;
+}
+
+function _ZN4__rw9__rb_treeISsSt4pairIKSsiENS_11__select1stIS3_SsEESt4lessISsESaIS3_EE5eraseENS_14__rw_tree_iterIS3_iPS3_RS3_NS_17__rw_rb_tree_nodeIS8_S3_SsS5_EEEESF_(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+	var r6;
+	var r7;
+	var r8;
+	var r9;
+	var r10;
+	var r11;
+	var r12;
+	var r13;
+	var r14;
+	var r15;
+	var r16;
+var __label__ = 0;
+	i7 = sp + -8;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp+2)];
+	r1 = heap32[(fp+1)];
+	r0 = r0 >> 2;
+	r2 = r1 >> 2;
+	r3 = heap32[(r2+4)];
+	r4 = heap32[(r0)];
+	r5 = heap32[(fp)];
+	r6 = heap32[(fp+3)];
+	r7 = r3 >> 2;
+	r8 = heap32[(r7+2)];
+if(!(r4 !=r8)) //_LBB863_3
+{
+if(!(r3 !=r6)) //_LBB863_3
+{
+	r8 = heap32[(r2+5)];
+	if(r8 !=0) //_LBB863_4
+{
+	r0 = heap32[(r7+1)];
+	heap32[(g0)] = r1;
+	heap32[(g0+1)] = r0;
+	_ZN4__rw9__rb_treeISsSt4pairIKSsiENS_11__select1stIS3_SsEESt4lessISsESaIS3_EE8_C_eraseEPNS_17__rw_rb_tree_nodeIS8_S3_SsS5_EE(i7);
+	r0 = heap32[(r2+4)];
+	r0 = r0 >> 2;
+	heap32[(r0+1)] = 0;
+	r0 = heap32[(r2+4)];
+	r1 = r0 >> 2;
+	heap32[(r1+3)] = r0;
+	heap32[(r1+2)] = r0;
+	heap32[(r2+5)] = 0;
+	r0 = r5 >> 2;
+	r1 = heap32[(r2+4)];
+	heap32[(r0)] = r1;
+	return;
+}
+}
+}
+	r1 = r5 >> 2;
+	heap32[(r1)] = r3;
+if(!(r4 ==r6)) //_LBB863_165
+{
+_7: while(true){
+	r3 = r4 >> 2;
+	r5 = heap32[(r3+3)];
+	if(r5 !=0) //_LBB863_9
+{
+	r7 = r5 >> 2;
+	r7 = heap32[(r7+2)];
+if(!(r7 ==0)) //_LBB863_11
+{
+_12: while(true){
+	r5 = r7;
+	r7 = r5 >> 2;
+	r7 = heap32[(r7+2)];
+if(!(r7 !=0)) //_LBB863_12
+{
+break _12;
+}
+}
+}
+	heap32[(r0)] = r5;
+}
+else{
+	r7 = heap32[(r3+1)];
+	r5 = r7 >> 2;
+	r5 = heap32[(r5+3)];
+	if(r4 ==r5) //_LBB863_8
+{
+_17: while(true){
+	r5 = r7;
+	r8 = r5 >> 2;
+	r7 = heap32[(r8+1)];
+	r9 = r7 >> 2;
+	r9 = heap32[(r9+3)];
+if(!(r5 ==r9)) //_LBB863_14
+{
+break _17;
+}
+}
+	heap32[(r0)] = r5;
+	r8 = heap32[(r8+3)];
+}
+else{
+	r8 = 0;
+	r5 = r4;
+}
+	if(r8 !=r7) //_LBB863_18
+{
+	heap32[(r0)] = r7;
+	r5 = r7;
+}
+}
+	r7 = heap32[(r2+4)];
+	if(r4 !=r7) //_LBB863_21
+{
+	r9 = heap32[(r3+3)];
+_26: do {
+	if(r9 !=0) //_LBB863_25
+{
+	r8 = r9 >> 2;
+	r10 = heap32[(r8+2)];
+	if(r10 ==0) //_LBB863_27
+{
+	r8 = r9;
+}
+else{
+_30: while(true){
+	r8 = r10;
+	r10 = r8 >> 2;
+	r10 = heap32[(r10+2)];
+	if(r10 !=0) //_LBB863_28
+{
+continue _30;
+}
+else{
+break _26;
+}
+}
+}
+}
+else{
+	r8 = heap32[(r3+1)];
+	r10 = r8 >> 2;
+	r10 = heap32[(r10+3)];
+	if(r4 ==r10) //_LBB863_24
+{
+_34: while(true){
+	r11 = r8;
+	r10 = r11 >> 2;
+	r8 = heap32[(r10+1)];
+	r12 = r8 >> 2;
+	r12 = heap32[(r12+3)];
+if(!(r11 ==r12)) //_LBB863_30
+{
+break _34;
+}
+}
+	r10 = heap32[(r10+3)];
+}
+else{
+	r10 = 0;
+	r11 = r4;
+}
+	if(r10 ==r8) //_LBB863_34
+{
+	r8 = r11;
+}
+}
+} while(0);
+	r10 = heap32[(r3+2)];
+	if(r10 !=0) //_LBB863_37
+{
+	if(r9 !=0) //_LBB863_39
+{
+	r11 = r9 >> 2;
+	r12 = heap32[(r11+2)];
+_45: do {
+	if(r12 ==0) //_LBB863_41
+{
+	r11 = r9;
+}
+else{
+_47: while(true){
+	r11 = r12;
+	r12 = r11 >> 2;
+	r12 = heap32[(r12+2)];
+if(!(r12 !=0)) //_LBB863_42
+{
+break _45;
+}
+}
+}
+} while(0);
+	r13 = r11 >> 2;
+	r9 = heap32[(r13+3)];
+	if(r11 !=r4) //_LBB863_45
+{
+	r7 = r10 >> 2;
+	heap32[(r7+1)] = r11;
+	r7 = heap32[(r3+2)];
+	heap32[(r13+2)] = r7;
+	r7 = heap32[(r3+3)];
+	if(r7 !=r11) //_LBB863_47
+{
+	r12 = heap32[(r13+1)];
+	if(r9 !=0) //_LBB863_49
+{
+	r7 = r9 >> 2;
+	heap32[(r7+1)] = r12;
+	r7 = heap32[(r13+1)];
+}
+else{
+	r7 = r12;
+}
+	r7 = r7 >> 2;
+	heap32[(r7+2)] = r9;
+	r7 = heap32[(r3+3)];
+	heap32[(r13+3)] = r7;
+	r7 = heap32[(r3+3)];
+	r7 = r7 >> 2;
+	heap32[(r7+1)] = r11;
+}
+else{
+	r12 = r11;
+}
+	r7 = heap32[(r2+4)];
+	r7 = r7 >> 2;
+	r10 = heap32[(r7+1)];
+	if(r10 !=r4) //_LBB863_53
+{
+	r7 = heap32[(r3+1)];
+	r10 = r7 >> 2;
+	r10 = heap32[(r10+2)];
+	r10 = r10 != r4;
+	r10 = r10 & 1;
+	r10 = r10 << 2;
+	r7 = (r7 + r10)|0;
+	r7 = (r7 + 8)|0;
+	r10 = (r4 + 4)|0;
+	r7 = r7 >> 2;
+	heap32[(r7)] = r11;
+}
+else{
+	r10 = (r4 + 4)|0;
+	heap32[(r7+1)] = r11;
+}
+	r7 = r10 >> 2;
+	r7 = heap32[(r7)];
+	heap32[(r13+1)] = r7;
+	r7 = heap32[(r13)];
+	r11 = heap32[(r3)];
+	heap32[(r13)] = r11;
+	heap32[(r3)] = r7;
+__label__ = 66;
+}
+else{
+__label__ = 45;
+}
+}
+else{
+	r12 = heap32[(r3+1)];
+	r11 = r4;
+	r9 = r10;
+__label__ = 47;
+}
+}
+else{
+	r11 = r4;
+__label__ = 45;
+}
+if (__label__ == 45){
+	r12 = r11 >> 2;
+	r12 = heap32[(r12+1)];
+	if(r9 ==0) //_LBB863_57
+{
+	r9 = 0;
+__label__ = 48;
+}
+else{
+__label__ = 47;
+}
+}
+if (__label__ == 47){
+	r7 = r9 >> 2;
+	heap32[(r7+1)] = r12;
+	r7 = heap32[(r2+4)];
+__label__ = 48;
+}
+if (__label__ == 48){
+	r7 = r7 >> 2;
+	r10 = heap32[(r7+1)];
+	if(r10 !=r4) //_LBB863_61
+{
+	r7 = heap32[(r3+1)];
+	r10 = r7 >> 2;
+	r10 = heap32[(r10+2)];
+	r10 = r10 != r4;
+	r10 = r10 & 1;
+	r10 = r10 << 2;
+	r7 = (r7 + r10)|0;
+	r7 = (r7 + 8)|0;
+	r7 = r7 >> 2;
+	heap32[(r7)] = r9;
+}
+else{
+	heap32[(r7+1)] = r9;
+}
+	r7 = heap32[(r2+4)];
+	r7 = r7 >> 2;
+	r10 = heap32[(r7+2)];
+if(!(r10 !=r4)) //_LBB863_70
+{
+	r10 = heap32[(r3+3)];
+	if(r10 !=0) //_LBB863_65
+{
+	r10 = r9 >> 2;
+	r10 = heap32[(r10+2)];
+_80: do {
+	if(r10 ==0) //_LBB863_67
+{
+	r13 = r9;
+}
+else{
+_82: while(true){
+	r13 = r10;
+	r10 = r13 >> 2;
+	r10 = heap32[(r10+2)];
+if(!(r10 !=0)) //_LBB863_68
+{
+break _80;
+}
+}
+}
+} while(0);
+	heap32[(r7+2)] = r13;
+}
+else{
+	r10 = heap32[(r3+1)];
+	heap32[(r7+2)] = r10;
+}
+}
+	r7 = heap32[(r2+4)];
+	r7 = r7 >> 2;
+	r10 = heap32[(r7+3)];
+	if(r10 ==r4) //_LBB863_72
+{
+	r4 = heap32[(r3+2)];
+	if(r4 !=0) //_LBB863_74
+{
+	r4 = r9 >> 2;
+	r4 = heap32[(r4+3)];
+_91: do {
+	if(r4 ==0) //_LBB863_76
+{
+	r3 = r9;
+}
+else{
+_93: while(true){
+	r3 = r4;
+	r4 = r3 >> 2;
+	r4 = heap32[(r4+3)];
+if(!(r4 !=0)) //_LBB863_77
+{
+break _91;
+}
+}
+}
+} while(0);
+	heap32[(r7+3)] = r3;
+	r4 = r11;
+}
+else{
+	r4 = heap32[(r3+1)];
+	heap32[(r7+3)] = r4;
+	r4 = r11;
+}
+}
+else{
+	r4 = r11;
+}
+}
+	r3 = r4 >> 2;
+	r7 = heap32[(r3)];
+_99: do {
+if(!(r7 ==0)) //_LBB863_160
+{
+_100: while(true){
+	r7 = heap32[(r2+4)];
+	r7 = r7 >> 2;
+	r7 = heap32[(r7+1)];
+	if(r7 ==r9) //_LBB863_158
+{
+__label__ = 140;
+break _100;
+}
+else{
+if(!(r9 ==0)) //_LBB863_81
+{
+	r7 = r9 >> 2;
+	r7 = heap32[(r7)];
+if(!(r7 ==1)) //_LBB863_81
+{
+__label__ = 141;
+break _100;
+}
+}
+	r7 = r12 >> 2;
+	r10 = heap32[(r7+2)];
+	if(r10 !=r9) //_LBB863_119
+{
+	r11 = r10 >> 2;
+	r13 = heap32[(r11)];
+	if(r13 ==0) //_LBB863_121
+{
+	heap32[(r11)] = 1;
+	heap32[(r7)] = 0;
+	r10 = heap32[(r7+2)];
+	r11 = r10 >> 2;
+	r13 = heap32[(r11+3)];
+	heap32[(r7+2)] = r13;
+	r13 = heap32[(r11+3)];
+if(!(r13 ==0)) //_LBB863_123
+{
+	r13 = r13 >> 2;
+	heap32[(r13+1)] = r12;
+}
+	r13 = heap32[(r7+1)];
+	heap32[(r11+1)] = r13;
+	r13 = heap32[(r2+4)];
+	r13 = r13 >> 2;
+	r14 = heap32[(r13+1)];
+	if(r14 !=r12) //_LBB863_125
+{
+	r13 = heap32[(r7+1)];
+	r13 = r13 >> 2;
+	r14 = heap32[(r13+3)];
+	if(r14 !=r12) //_LBB863_127
+{
+	heap32[(r13+2)] = r10;
+}
+else{
+	heap32[(r13+3)] = r10;
+}
+}
+else{
+	heap32[(r13+1)] = r10;
+}
+	heap32[(r11+3)] = r12;
+	heap32[(r7+1)] = r10;
+	r10 = heap32[(r7+2)];
+}
+	r11 = r10 >> 2;
+	r13 = heap32[(r11+3)];
+if(!(r13 ==0)) //_LBB863_131
+{
+	r13 = r13 >> 2;
+	r14 = heap32[(r13)];
+	if(r14 !=1) //_LBB863_135
+{
+__label__ = 117;
+break _100;
+}
+}
+	r13 = heap32[(r11+2)];
+if(!(r13 ==0)) //_LBB863_134
+{
+	r13 = r13 >> 2;
+	r13 = heap32[(r13)];
+if(!(r13 ==1)) //_LBB863_134
+{
+__label__ = 127;
+break _100;
+}
+}
+	heap32[(r11)] = 0;
+}
+else{
+	r10 = heap32[(r7+3)];
+	r11 = r10 >> 2;
+	r13 = heap32[(r11)];
+	if(r13 ==0) //_LBB863_84
+{
+	heap32[(r11)] = 1;
+	heap32[(r7)] = 0;
+	r10 = heap32[(r7+3)];
+	r11 = r10 >> 2;
+	r13 = heap32[(r11+2)];
+	heap32[(r7+3)] = r13;
+	r13 = heap32[(r11+2)];
+if(!(r13 ==0)) //_LBB863_86
+{
+	r13 = r13 >> 2;
+	heap32[(r13+1)] = r12;
+}
+	r13 = heap32[(r7+1)];
+	heap32[(r11+1)] = r13;
+	r13 = heap32[(r2+4)];
+	r13 = r13 >> 2;
+	r14 = heap32[(r13+1)];
+	if(r14 !=r12) //_LBB863_88
+{
+	r13 = heap32[(r7+1)];
+	r13 = r13 >> 2;
+	r14 = heap32[(r13+2)];
+	if(r14 !=r12) //_LBB863_90
+{
+	heap32[(r13+3)] = r10;
+}
+else{
+	heap32[(r13+2)] = r10;
+}
+}
+else{
+	heap32[(r13+1)] = r10;
+}
+	heap32[(r11+2)] = r12;
+	heap32[(r7+1)] = r10;
+	r10 = heap32[(r7+3)];
+}
+	r11 = r10 >> 2;
+	r13 = heap32[(r11+2)];
+if(!(r13 ==0)) //_LBB863_94
+{
+	r13 = r13 >> 2;
+	r14 = heap32[(r13)];
+	if(r14 !=1) //_LBB863_99
+{
+__label__ = 83;
+break _100;
+}
+}
+	r13 = heap32[(r11+3)];
+if(!(r13 ==0)) //_LBB863_97
+{
+	r13 = r13 >> 2;
+	r13 = heap32[(r13)];
+if(!(r13 ==1)) //_LBB863_97
+{
+__label__ = 93;
+break _100;
+}
+}
+	heap32[(r11)] = 0;
+}
+	r10 = heap32[(r7+1)];
+	r9 = r12;
+	r12 = r10;
+}
+}
+_148: do {
+switch(__label__ ){//multiple entries
+case 117:
+	r14 = heap32[(r11+2)];
+if(!(r14 ==0)) //_LBB863_137
+{
+	r14 = r14 >> 2;
+	r14 = heap32[(r14)];
+	if(r14 !=1) //_LBB863_133
+{
+__label__ = 127;
+break _148;
+}
+}
+	heap32[(r13)] = 1;
+	r13 = heap32[(r11+3)];
+	r14 = r13 >> 2;
+	heap32[(r11)] = 0;
+	r15 = heap32[(r14+2)];
+	heap32[(r11+3)] = r15;
+	r15 = heap32[(r14+2)];
+if(!(r15 ==0)) //_LBB863_139
+{
+	r15 = r15 >> 2;
+	heap32[(r15+1)] = r10;
+}
+	r15 = heap32[(r11+1)];
+	heap32[(r14+1)] = r15;
+	r15 = heap32[(r2+4)];
+	r15 = r15 >> 2;
+	r16 = heap32[(r15+1)];
+	if(r16 !=r10) //_LBB863_141
+{
+	r15 = heap32[(r11+1)];
+	r15 = r15 >> 2;
+	r16 = heap32[(r15+2)];
+	if(r16 !=r10) //_LBB863_143
+{
+	heap32[(r15+3)] = r13;
+}
+else{
+	heap32[(r15+2)] = r13;
+}
+}
+else{
+	heap32[(r15+1)] = r13;
+}
+	heap32[(r14+2)] = r10;
+	heap32[(r11+1)] = r13;
+	r10 = heap32[(r7+2)];
+__label__ = 127;
+break _148;
+break;
+case 83:
+	r14 = heap32[(r11+3)];
+if(!(r14 ==0)) //_LBB863_101
+{
+	r14 = r14 >> 2;
+	r14 = heap32[(r14)];
+	if(r14 !=1) //_LBB863_96
+{
+__label__ = 93;
+break _148;
+}
+}
+	heap32[(r13)] = 1;
+	r13 = heap32[(r11+2)];
+	r14 = r13 >> 2;
+	heap32[(r11)] = 0;
+	r15 = heap32[(r14+3)];
+	heap32[(r11+2)] = r15;
+	r15 = heap32[(r14+3)];
+if(!(r15 ==0)) //_LBB863_103
+{
+	r15 = r15 >> 2;
+	heap32[(r15+1)] = r10;
+}
+	r15 = heap32[(r11+1)];
+	heap32[(r14+1)] = r15;
+	r15 = heap32[(r2+4)];
+	r15 = r15 >> 2;
+	r16 = heap32[(r15+1)];
+	if(r16 !=r10) //_LBB863_105
+{
+	r15 = heap32[(r11+1)];
+	r15 = r15 >> 2;
+	r16 = heap32[(r15+3)];
+	if(r16 !=r10) //_LBB863_107
+{
+	heap32[(r15+2)] = r13;
+}
+else{
+	heap32[(r15+3)] = r13;
+}
+}
+else{
+	heap32[(r15+1)] = r13;
+}
+	heap32[(r14+3)] = r10;
+	heap32[(r11+1)] = r13;
+	r10 = heap32[(r7+3)];
+__label__ = 93;
+break;
+}
+} while(0);
+_177: do {
+switch(__label__ ){//multiple entries
+case 127:
+	r10 = r10 >> 2;
+	r11 = heap32[(r7)];
+	heap32[(r10)] = r11;
+	heap32[(r7)] = 1;
+	r10 = heap32[(r10+2)];
+if(!(r10 ==0)) //_LBB863_147
+{
+	r10 = r10 >> 2;
+	heap32[(r10)] = 1;
+}
+	r10 = heap32[(r7+2)];
+	r11 = r10 >> 2;
+	r13 = heap32[(r11+3)];
+	heap32[(r7+2)] = r13;
+	r13 = heap32[(r11+3)];
+if(!(r13 ==0)) //_LBB863_149
+{
+	r13 = r13 >> 2;
+	heap32[(r13+1)] = r12;
+}
+	r13 = heap32[(r7+1)];
+	heap32[(r11+1)] = r13;
+	r13 = heap32[(r2+4)];
+	r13 = r13 >> 2;
+	r14 = heap32[(r13+1)];
+	if(r14 !=r12) //_LBB863_151
+{
+	r13 = heap32[(r7+1)];
+	r13 = r13 >> 2;
+	r14 = heap32[(r13+3)];
+	if(r14 !=r12) //_LBB863_153
+{
+	heap32[(r13+2)] = r10;
+}
+else{
+	heap32[(r13+3)] = r10;
+}
+}
+else{
+	heap32[(r13+1)] = r10;
+}
+	heap32[(r11+3)] = r12;
+	heap32[(r7+1)] = r10;
+__label__ = 140;
+break _177;
+break;
+case 93:
+	r10 = r10 >> 2;
+	r11 = heap32[(r7)];
+	heap32[(r10)] = r11;
+	heap32[(r7)] = 1;
+	r10 = heap32[(r10+3)];
+if(!(r10 ==0)) //_LBB863_111
+{
+	r10 = r10 >> 2;
+	heap32[(r10)] = 1;
+}
+	r10 = heap32[(r7+3)];
+	r11 = r10 >> 2;
+	r13 = heap32[(r11+2)];
+	heap32[(r7+3)] = r13;
+	r13 = heap32[(r11+2)];
+if(!(r13 ==0)) //_LBB863_113
+{
+	r13 = r13 >> 2;
+	heap32[(r13+1)] = r12;
+}
+	r13 = heap32[(r7+1)];
+	heap32[(r11+1)] = r13;
+	r13 = heap32[(r2+4)];
+	r13 = r13 >> 2;
+	r14 = heap32[(r13+1)];
+	if(r14 !=r12) //_LBB863_115
+{
+	r13 = heap32[(r7+1)];
+	r13 = r13 >> 2;
+	r14 = heap32[(r13+2)];
+	if(r14 !=r12) //_LBB863_117
+{
+	heap32[(r13+3)] = r10;
+}
+else{
+	heap32[(r13+2)] = r10;
+}
+}
+else{
+	heap32[(r13+1)] = r10;
+}
+	heap32[(r11+2)] = r12;
+	heap32[(r7+1)] = r10;
+__label__ = 140;
+break;
+}
+} while(0);
+if (__label__ == 140){
+	if(r9 ==0) //_LBB863_160
+{
+break _99;
+}
+}
+	r7 = r9 >> 2;
+	heap32[(r7)] = 1;
+}
+} while(0);
+	r7 = heap32[(r2+1)];
+	heap32[(r3+3)] = r7;
+	r7 = heap32[(r3+4)];
+	r7 = (r7 + -12)|0;
+	r9 = _ZNSs11_C_null_refE;
+if(!(r7 ==r9)) //_LBB863_163
+{
+	r7 = r7 >> 2;
+	r9 = heap32[(r7)];
+	r10 = (r9 + -1)|0;
+	heap32[(r7)] = r10;
+if(!(r9 >0)) //_LBB863_163
+{
+	r7 = heap32[(r3+4)];
+	r7 = (r7 + -12)|0;
+	heap32[(g0)] = r7;
+	_ZdlPv(i7);
+}
+}
+	heap32[(r3+4)] = 0;
+	heap32[(r2+1)] = r4;
+	r4 = heap32[(r2+5)];
+	r4 = (r4 + -1)|0;
+	heap32[(r2+5)] = r4;
+}
+else{
+	r8 = r7;
+}
+	heap32[(r1)] = r8;
+	r4 = r5;
+	if(r5 !=r6) //_LBB863_5
+{
+continue _7;
+}
+else{
+break _7;
+}
+}
+}
+	return;
+}
+
+function _ZN4__rw9__rb_treeIjSt4pairIKjPN5my_gl12TIndexBufferEENS_11__select1stIS6_jEESt4lessIjESaIS6_EE5eraseENS_14__rw_tree_iterIS6_iPS6_RS6_NS_17__rw_rb_tree_nodeISB_S6_jS8_EEEE(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+	var r6;
+	var r7;
+	var r8;
+	var r9;
+	var r10;
+	var r11;
+	var r12;
+	var r13;
+	var r14;
+var __label__ = 0;
+	i7 = sp + 0;var g0 = i7>>2; // save stack
+	r0 = _ZN5my_glL9m_contextE;
+	r0 = r0 >> 2;
+	r1 = heap32[(r0+78)];
+	r2 = heap32[(fp+1)];
+	r3 = heap32[(fp)];
+	if(r1 !=r2) //_LBB864_2
+{
+	r4 = r2 >> 2;
+	r5 = heap32[(r4+3)];
+_3: do {
+	if(r5 !=0) //_LBB864_6
+{
+	r6 = r5 >> 2;
+	r7 = heap32[(r6+2)];
+	if(r7 ==0) //_LBB864_8
+{
+	r6 = r5;
+}
+else{
+_7: while(true){
+	r6 = r7;
+	r7 = r6 >> 2;
+	r7 = heap32[(r7+2)];
+	if(r7 !=0) //_LBB864_9
+{
+continue _7;
+}
+else{
+break _3;
+}
+}
+}
+}
+else{
+	r6 = heap32[(r4+1)];
+	r7 = r6 >> 2;
+	r7 = heap32[(r7+3)];
+	if(r7 ==r2) //_LBB864_5
+{
+_11: while(true){
+	r8 = r6;
+	r7 = r8 >> 2;
+	r6 = heap32[(r7+1)];
+	r9 = r6 >> 2;
+	r9 = heap32[(r9+3)];
+if(!(r8 ==r9)) //_LBB864_11
+{
+break _11;
+}
+}
+	r7 = heap32[(r7+3)];
+}
+else{
+	r7 = 0;
+	r8 = r2;
+}
+	if(r7 ==r6) //_LBB864_15
+{
+	r6 = r8;
+}
+}
+} while(0);
+	r7 = heap32[(r4+2)];
+	if(r7 !=0) //_LBB864_18
+{
+	if(r5 !=0) //_LBB864_20
+{
+	r8 = r5 >> 2;
+	r9 = heap32[(r8+2)];
+_22: do {
+	if(r9 ==0) //_LBB864_22
+{
+	r8 = r5;
+}
+else{
+_24: while(true){
+	r8 = r9;
+	r9 = r8 >> 2;
+	r9 = heap32[(r9+2)];
+if(!(r9 !=0)) //_LBB864_23
+{
+break _22;
+}
+}
+}
+} while(0);
+	r10 = r8 >> 2;
+	r5 = heap32[(r10+3)];
+	if(r8 !=r2) //_LBB864_26
+{
+	r9 = r7 >> 2;
+	heap32[(r9+1)] = r8;
+	r9 = heap32[(r4+2)];
+	heap32[(r10+2)] = r9;
+	r9 = heap32[(r4+3)];
+	if(r9 !=r8) //_LBB864_28
+{
+	r9 = heap32[(r10+1)];
+	if(r5 !=0) //_LBB864_30
+{
+	r7 = r5 >> 2;
+	heap32[(r7+1)] = r9;
+	r7 = heap32[(r10+1)];
+}
+else{
+	r7 = r9;
+}
+	r7 = r7 >> 2;
+	heap32[(r7+2)] = r5;
+	r7 = heap32[(r4+3)];
+	heap32[(r10+3)] = r7;
+	r7 = heap32[(r4+3)];
+	r7 = r7 >> 2;
+	heap32[(r7+1)] = r8;
+}
+else{
+	r9 = r8;
+}
+	r7 = r1 >> 2;
+	r11 = heap32[(r7+1)];
+	if(r11 !=r2) //_LBB864_34
+{
+	r11 = heap32[(r4+1)];
+	r7 = r11 >> 2;
+	r7 = heap32[(r7+2)];
+	r7 = r7 != r2;
+	r7 = r7 & 1;
+	r7 = r7 << 2;
+	r11 = (r11 + r7)|0;
+	r7 = (r11 + 8)|0;
+	r11 = (r2 + 4)|0;
+	r7 = r7 >> 2;
+	heap32[(r7)] = r8;
+}
+else{
+	r11 = (r2 + 4)|0;
+	heap32[(r7+1)] = r8;
+}
+	r8 = r11 >> 2;
+	r8 = heap32[(r8)];
+	heap32[(r10+1)] = r8;
+	r8 = heap32[(r10)];
+	r7 = heap32[(r4)];
+	heap32[(r10)] = r7;
+	heap32[(r4)] = r8;
+__label__ = 51;
+}
+else{
+__label__ = 30;
+}
+}
+else{
+	r9 = heap32[(r4+1)];
+	r8 = r2;
+	r5 = r7;
+__label__ = 32;
+}
+}
+else{
+	r8 = r2;
+__label__ = 30;
+}
+if (__label__ == 30){
+	r9 = r8 >> 2;
+	r9 = heap32[(r9+1)];
+	if(r5 ==0) //_LBB864_38
+{
+	r5 = 0;
+__label__ = 33;
+}
+else{
+__label__ = 32;
+}
+}
+if (__label__ == 32){
+	r7 = r5 >> 2;
+	heap32[(r7+1)] = r9;
+__label__ = 33;
+}
+if (__label__ == 33){
+	r7 = r1 >> 2;
+	r10 = heap32[(r7+1)];
+	if(r10 !=r2) //_LBB864_42
+{
+	r10 = heap32[(r4+1)];
+	r11 = r10 >> 2;
+	r11 = heap32[(r11+2)];
+	r11 = r11 != r2;
+	r11 = r11 & 1;
+	r11 = r11 << 2;
+	r10 = (r10 + r11)|0;
+	r10 = (r10 + 8)|0;
+	r10 = r10 >> 2;
+	heap32[(r10)] = r5;
+}
+else{
+	heap32[(r7+1)] = r5;
+}
+	r10 = heap32[(r7+2)];
+if(!(r10 !=r2)) //_LBB864_51
+{
+	r10 = heap32[(r4+3)];
+	if(r10 !=0) //_LBB864_46
+{
+	r10 = r5 >> 2;
+	r10 = heap32[(r10+2)];
+_57: do {
+	if(r10 ==0) //_LBB864_48
+{
+	r11 = r5;
+}
+else{
+_59: while(true){
+	r11 = r10;
+	r10 = r11 >> 2;
+	r10 = heap32[(r10+2)];
+if(!(r10 !=0)) //_LBB864_49
+{
+break _57;
+}
+}
+}
+} while(0);
+	heap32[(r7+2)] = r11;
+}
+else{
+	r10 = heap32[(r4+1)];
+	heap32[(r7+2)] = r10;
+}
+}
+	r10 = heap32[(r7+3)];
+	if(r10 ==r2) //_LBB864_53
+{
+	r2 = heap32[(r4+2)];
+	if(r2 !=0) //_LBB864_55
+{
+	r2 = r5 >> 2;
+	r2 = heap32[(r2+3)];
+_68: do {
+	if(r2 ==0) //_LBB864_57
+{
+	r4 = r5;
+}
+else{
+_70: while(true){
+	r4 = r2;
+	r2 = r4 >> 2;
+	r2 = heap32[(r2+3)];
+if(!(r2 !=0)) //_LBB864_58
+{
+break _68;
+}
+}
+}
+} while(0);
+	heap32[(r7+3)] = r4;
+	r2 = r8;
+}
+else{
+	r2 = heap32[(r4+1)];
+	heap32[(r7+3)] = r2;
+	r2 = r8;
+}
+}
+else{
+	r2 = r8;
+}
+}
+	r4 = r2 >> 2;
+	r7 = heap32[(r4)];
+_76: do {
+if(!(r7 ==0)) //_LBB864_141
+{
+_77: while(true){
+	r7 = r1 >> 2;
+	r8 = heap32[(r7+1)];
+	if(r8 ==r5) //_LBB864_139
+{
+__label__ = 125;
+break _77;
+}
+else{
+if(!(r5 ==0)) //_LBB864_62
+{
+	r8 = r5 >> 2;
+	r8 = heap32[(r8)];
+if(!(r8 ==1)) //_LBB864_62
+{
+__label__ = 126;
+break _77;
+}
+}
+	r8 = r9 >> 2;
+	r10 = heap32[(r8+2)];
+	if(r10 !=r5) //_LBB864_100
+{
+	r11 = r10 >> 2;
+	r12 = heap32[(r11)];
+	if(r12 ==0) //_LBB864_102
+{
+	heap32[(r11)] = 1;
+	heap32[(r8)] = 0;
+	r10 = heap32[(r8+2)];
+	r11 = r10 >> 2;
+	r12 = heap32[(r11+3)];
+	heap32[(r8+2)] = r12;
+	r12 = heap32[(r11+3)];
+if(!(r12 ==0)) //_LBB864_104
+{
+	r12 = r12 >> 2;
+	heap32[(r12+1)] = r9;
+}
+	r12 = heap32[(r8+1)];
+	heap32[(r11+1)] = r12;
+	r12 = heap32[(r7+1)];
+	if(r12 !=r9) //_LBB864_106
+{
+	r12 = heap32[(r8+1)];
+	r12 = r12 >> 2;
+	r13 = heap32[(r12+3)];
+	if(r13 !=r9) //_LBB864_108
+{
+	heap32[(r12+2)] = r10;
+}
+else{
+	heap32[(r12+3)] = r10;
+}
+}
+else{
+	heap32[(r7+1)] = r10;
+}
+	heap32[(r11+3)] = r9;
+	heap32[(r8+1)] = r10;
+	r10 = heap32[(r8+2)];
+}
+	r11 = r10 >> 2;
+	r12 = heap32[(r11+3)];
+if(!(r12 ==0)) //_LBB864_112
+{
+	r12 = r12 >> 2;
+	r13 = heap32[(r12)];
+	if(r13 !=1) //_LBB864_116
+{
+__label__ = 102;
+break _77;
+}
+}
+	r12 = heap32[(r11+2)];
+if(!(r12 ==0)) //_LBB864_115
+{
+	r12 = r12 >> 2;
+	r12 = heap32[(r12)];
+if(!(r12 ==1)) //_LBB864_115
+{
+__label__ = 112;
+break _77;
+}
+}
+	heap32[(r11)] = 0;
+}
+else{
+	r10 = heap32[(r8+3)];
+	r11 = r10 >> 2;
+	r12 = heap32[(r11)];
+	if(r12 ==0) //_LBB864_65
+{
+	heap32[(r11)] = 1;
+	heap32[(r8)] = 0;
+	r10 = heap32[(r8+3)];
+	r11 = r10 >> 2;
+	r12 = heap32[(r11+2)];
+	heap32[(r8+3)] = r12;
+	r12 = heap32[(r11+2)];
+if(!(r12 ==0)) //_LBB864_67
+{
+	r12 = r12 >> 2;
+	heap32[(r12+1)] = r9;
+}
+	r12 = heap32[(r8+1)];
+	heap32[(r11+1)] = r12;
+	r12 = heap32[(r7+1)];
+	if(r12 !=r9) //_LBB864_69
+{
+	r12 = heap32[(r8+1)];
+	r12 = r12 >> 2;
+	r13 = heap32[(r12+2)];
+	if(r13 !=r9) //_LBB864_71
+{
+	heap32[(r12+3)] = r10;
+}
+else{
+	heap32[(r12+2)] = r10;
+}
+}
+else{
+	heap32[(r7+1)] = r10;
+}
+	heap32[(r11+2)] = r9;
+	heap32[(r8+1)] = r10;
+	r10 = heap32[(r8+3)];
+}
+	r11 = r10 >> 2;
+	r12 = heap32[(r11+2)];
+if(!(r12 ==0)) //_LBB864_75
+{
+	r12 = r12 >> 2;
+	r13 = heap32[(r12)];
+	if(r13 !=1) //_LBB864_80
+{
+__label__ = 68;
+break _77;
+}
+}
+	r12 = heap32[(r11+3)];
+if(!(r12 ==0)) //_LBB864_78
+{
+	r12 = r12 >> 2;
+	r12 = heap32[(r12)];
+if(!(r12 ==1)) //_LBB864_78
+{
+__label__ = 78;
+break _77;
+}
+}
+	heap32[(r11)] = 0;
+}
+	r10 = heap32[(r8+1)];
+	r5 = r9;
+	r9 = r10;
+}
+}
+_125: do {
+switch(__label__ ){//multiple entries
+case 102:
+	r1 = heap32[(r11+2)];
+if(!(r1 ==0)) //_LBB864_118
+{
+	r1 = r1 >> 2;
+	r1 = heap32[(r1)];
+	if(r1 !=1) //_LBB864_114
+{
+__label__ = 112;
+break _125;
+}
+}
+	heap32[(r12)] = 1;
+	r1 = heap32[(r11+3)];
+	r12 = r1 >> 2;
+	heap32[(r11)] = 0;
+	r13 = heap32[(r12+2)];
+	heap32[(r11+3)] = r13;
+	r13 = heap32[(r12+2)];
+if(!(r13 ==0)) //_LBB864_120
+{
+	r13 = r13 >> 2;
+	heap32[(r13+1)] = r10;
+}
+	r13 = heap32[(r11+1)];
+	heap32[(r12+1)] = r13;
+	r13 = heap32[(r7+1)];
+	if(r13 !=r10) //_LBB864_122
+{
+	r13 = heap32[(r11+1)];
+	r13 = r13 >> 2;
+	r14 = heap32[(r13+2)];
+	if(r14 !=r10) //_LBB864_124
+{
+	heap32[(r13+3)] = r1;
+}
+else{
+	heap32[(r13+2)] = r1;
+}
+}
+else{
+	heap32[(r7+1)] = r1;
+}
+	heap32[(r12+2)] = r10;
+	heap32[(r11+1)] = r1;
+	r10 = heap32[(r8+2)];
+__label__ = 112;
+break _125;
+break;
+case 68:
+	r1 = heap32[(r11+3)];
+if(!(r1 ==0)) //_LBB864_82
+{
+	r1 = r1 >> 2;
+	r1 = heap32[(r1)];
+	if(r1 !=1) //_LBB864_77
+{
+__label__ = 78;
+break _125;
+}
+}
+	heap32[(r12)] = 1;
+	r1 = heap32[(r11+2)];
+	r12 = r1 >> 2;
+	heap32[(r11)] = 0;
+	r13 = heap32[(r12+3)];
+	heap32[(r11+2)] = r13;
+	r13 = heap32[(r12+3)];
+if(!(r13 ==0)) //_LBB864_84
+{
+	r13 = r13 >> 2;
+	heap32[(r13+1)] = r10;
+}
+	r13 = heap32[(r11+1)];
+	heap32[(r12+1)] = r13;
+	r13 = heap32[(r7+1)];
+	if(r13 !=r10) //_LBB864_86
+{
+	r13 = heap32[(r11+1)];
+	r13 = r13 >> 2;
+	r14 = heap32[(r13+3)];
+	if(r14 !=r10) //_LBB864_88
+{
+	heap32[(r13+2)] = r1;
+}
+else{
+	heap32[(r13+3)] = r1;
+}
+}
+else{
+	heap32[(r7+1)] = r1;
+}
+	heap32[(r12+3)] = r10;
+	heap32[(r11+1)] = r1;
+	r10 = heap32[(r8+3)];
+__label__ = 78;
+break;
+}
+} while(0);
+_154: do {
+switch(__label__ ){//multiple entries
+case 112:
+	r1 = r10 >> 2;
+	r10 = heap32[(r8)];
+	heap32[(r1)] = r10;
+	heap32[(r8)] = 1;
+	r1 = heap32[(r1+2)];
+if(!(r1 ==0)) //_LBB864_128
+{
+	r1 = r1 >> 2;
+	heap32[(r1)] = 1;
+}
+	r1 = heap32[(r8+2)];
+	r10 = r1 >> 2;
+	r11 = heap32[(r10+3)];
+	heap32[(r8+2)] = r11;
+	r11 = heap32[(r10+3)];
+if(!(r11 ==0)) //_LBB864_130
+{
+	r11 = r11 >> 2;
+	heap32[(r11+1)] = r9;
+}
+	r11 = heap32[(r8+1)];
+	heap32[(r10+1)] = r11;
+	r11 = heap32[(r7+1)];
+	if(r11 !=r9) //_LBB864_132
+{
+	r7 = heap32[(r8+1)];
+	r7 = r7 >> 2;
+	r11 = heap32[(r7+3)];
+	if(r11 !=r9) //_LBB864_134
+{
+	heap32[(r7+2)] = r1;
+}
+else{
+	heap32[(r7+3)] = r1;
+}
+}
+else{
+	heap32[(r7+1)] = r1;
+}
+	heap32[(r10+3)] = r9;
+	heap32[(r8+1)] = r1;
+__label__ = 125;
+break _154;
+break;
+case 78:
+	r1 = r10 >> 2;
+	r10 = heap32[(r8)];
+	heap32[(r1)] = r10;
+	heap32[(r8)] = 1;
+	r1 = heap32[(r1+3)];
+if(!(r1 ==0)) //_LBB864_92
+{
+	r1 = r1 >> 2;
+	heap32[(r1)] = 1;
+}
+	r1 = heap32[(r8+3)];
+	r10 = r1 >> 2;
+	r11 = heap32[(r10+2)];
+	heap32[(r8+3)] = r11;
+	r11 = heap32[(r10+2)];
+if(!(r11 ==0)) //_LBB864_94
+{
+	r11 = r11 >> 2;
+	heap32[(r11+1)] = r9;
+}
+	r11 = heap32[(r8+1)];
+	heap32[(r10+1)] = r11;
+	r11 = heap32[(r7+1)];
+	if(r11 !=r9) //_LBB864_96
+{
+	r7 = heap32[(r8+1)];
+	r7 = r7 >> 2;
+	r11 = heap32[(r7+2)];
+	if(r11 !=r9) //_LBB864_98
+{
+	heap32[(r7+3)] = r1;
+}
+else{
+	heap32[(r7+2)] = r1;
+}
+}
+else{
+	heap32[(r7+1)] = r1;
+}
+	heap32[(r10+2)] = r9;
+	heap32[(r8+1)] = r1;
+__label__ = 125;
+break;
+}
+} while(0);
+if (__label__ == 125){
+	if(r5 ==0) //_LBB864_141
+{
+break _76;
+}
+}
+	r1 = r5 >> 2;
+	heap32[(r1)] = 1;
+}
+} while(0);
+	r1 = heap32[(r0+75)];
+	heap32[(r4+3)] = r1;
+	heap32[(r0+75)] = r2;
+	r1 = heap32[(r0+79)];
+	r1 = (r1 + -1)|0;
+	r2 = r3 >> 2;
+	heap32[(r0+79)] = r1;
+	heap32[(r2)] = r6;
+	return;
+}
+else{
+	r0 = r3 >> 2;
+	heap32[(r0)] = r1;
+	return;
+}
+}
+
+function _ZN4__rw9__rb_treeIjSt4pairIKjPN5my_gl12TIndexBufferEENS_11__select1stIS6_jEESt4lessIjESaIS6_EE11_C_get_linkEv(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+	var r5;
+	var r6;
+var __label__ = 0;
+	i7 = sp + -8;var g0 = i7>>2; // save stack
+	r0 = _ZN5my_glL9m_contextE;
+	r0 = r0 >> 2;
+	r1 = heap32[(r0+75)];
+	if(r1 ==0) //_LBB865_2
+{
+	r1 = heap32[(r0+76)];
+	r2 = heap32[(r0+77)];
+	if(r1 !=r2) //_LBB865_11
+{
+	r2 = (r1 + 24)|0;
+	heap32[(r0+76)] = r2;
+}
+else{
+	r1 = heap32[(r0+74)];
+	if(r1 !=0) //_LBB865_5
+{
+	r1 = r1 >> 2;
+	r1 = heap32[(r1+1)];
+}
+else{
+	r1 = 0;
+}
+	heap32[(g0)] = 12;
+	_Znwj(i7);
+	r2 = r_g0;
+if(!(r2 !=0)) //_LBB865_8
+{
+	heap32[(g0)] = 3;
+	_ZN4__rw10__rw_throwEiz(i7);
+}
+	r3 = r1 & 1023;
+	r3 = (r3 * 1656)|0;
+	r4 = r1 >>> 10;
+	r3 = r3 >>> 10;
+	r4 = (r4 * 1656)|0;
+	r5 = (r1 + 32)|0;
+	r3 = (r3 + r4)|0;
+	r3 = uint(r5) > uint(r3) ? r5 : r3;
+	r4 = (r1 + 1)|0;
+	r3 = uint(r3) > uint(r1) ? r3 : r4;
+	r4 = (r3 * 24)|0;
+	heap32[(g0)] = r4;
+	_Znwj(i7);
+	r1 = r_g0;
+if(!(r1 !=0)) //_LBB865_10
+{
+	heap32[(g0)] = 3;
+	_ZN4__rw10__rw_throwEiz(i7);
+}
+	r5 = r2 >> 2;
+	heap32[(r5+2)] = r1;
+	r6 = heap32[(r0+74)];
+	heap32[(r5)] = r6;
+	heap32[(r5+1)] = r3;
+	r3 = (r1 + r4)|0;
+	heap32[(r0+74)] = r2;
+	r2 = (r1 + 24)|0;
+	heap32[(r0+77)] = r3;
+	heap32[(r0+76)] = r2;
+}
+}
+else{
+	r2 = r1 >> 2;
+	r2 = heap32[(r2+3)];
+	heap32[(r0+75)] = r2;
+}
+	r0 = r1 >> 2;
+	heap32[(r0+1)] = 0;
+	heap32[(r0+2)] = 0;
+	heap32[(r0+3)] = 0;
+	heap32[(r0)] = 0;
+	r_g0 = r1;
+	return;
+}
+
+function _ZN4__rw9__rb_treeISsSt4pairIKSsiENS_11__select1stIS3_SsEESt4lessISsESaIS3_EED2Ev(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+	var r4;
+var __label__ = 0;
+	i7 = sp + -32;var g0 = i7>>2; // save stack
+	r0 = heap32[(fp)];
+	r1 = r0 >> 2;
+	r2 = heap32[(r1+4)];
+if(!(r2 ==0)) //_LBB866_3
+{
+	r3 = r2 >> 2;
+	r3 = heap32[(r3+2)];
+	heap32[(fp+-2)] = r3;
+	r3 = sp + -16;
+	r4 = sp + -8;
+	heap32[(g0)] = r3;
+	heap32[(g0+1)] = r0;
+	heap32[(g0+2)] = r4;
+	heap32[(g0+3)] = r2;
+	_ZN4__rw9__rb_treeISsSt4pairIKSsiENS_11__select1stIS3_SsEESt4lessISsESaIS3_EE5eraseENS_14__rw_tree_iterIS3_iPS3_RS3_NS_17__rw_rb_tree_nodeIS8_S3_SsS5_EEEESF_(i7);
+	r0 = heap32[(r1+4)];
+	r2 = heap32[(r1+1)];
+	r3 = r0 >> 2;
+	heap32[(r3+3)] = r2;
+	heap32[(r1+1)] = r0;
+	r0 = heap32[(r1)];
+if(!(r0 ==0)) //_LBB866_3
+{
+__label__ = 2; //SET chanka
+_3: while(true){
+	r2 = r0 >> 2;
+	r3 = heap32[(r2)];
+	heap32[(r1)] = r3;
+	r2 = heap32[(r2+2)];
+	heap32[(g0)] = r2;
+	_ZdlPv(i7);
+	heap32[(g0)] = r0;
+	_ZdlPv(i7);
+	r0 = heap32[(r1)];
+	if(r0 !=0) //_LBB866_2
+{
+continue _3;
+}
+else{
+break _3;
+}
+}
+}
+}
+	return;
+}
+
+function Mandreel_TextureAsync_Loaded(sp)
+{
+	var i7;
+	var fp = sp>>2;
+	var r0;
+	var r1;
+	var r2;
+	var r3;
+var __label__ = 0;
+	i7 = sp + -40;var g0 = i7>>2; // save stack
+	r0 = 5;
+	r0 = heap32[(r0)];
+	r1 = heap32[(fp)];
+	heap32[(g0)] = 0;
+	heap32[(g0+1)] = 3553;
+	heap32[(g0+2)] = r1;
+	r2 = 100;
+	__FUNCTION_TABLE__[(r0)>>2](i7);
+	r0 = heap32[(r2)];
+	r2 = heap32[(fp+1)];
+	r3 = heap32[(fp+2)];
+	heap32[(g0)] = 0;
+	heap32[(g0+1)] = 3553;
+	heap32[(g0+2)] = 0;
+	heap32[(g0+3)] = 6408;
+	heap32[(g0+4)] = r2;
+	heap32[(g0+5)] = r3;
+	heap32[(g0+6)] = 0;
+	heap32[(g0+7)] = 6408;
+	heap32[(g0+8)] = 5121;
+	heap32[(g0+9)] = 0;
+	__FUNCTION_TABLE__[(r0)>>2](i7);
+	heap32[(g0)] = r1;
+	Mandreel_TextureAsync_SetData(i7);
+	return;
+}
+
+var _ZGVZN11btMatrix3x311getIdentityEvE14identityMatrix = Malloc(8);
+var _ZGVZN11btTransform11getIdentityEvE17identityTransform = Malloc(8);
+var Landscape02Vtx = Malloc(23760);
+var _ZTIN16btCollisionWorld17RayResultCallbackE = Malloc(8);
+var _ZTSN16btCollisionWorld17RayResultCallbackE = Malloc(40);
+var _ZTVN16btCollisionWorld24ClosestRayResultCallbackE = Malloc(24);
+var _ZTIN16btCollisionWorld24ClosestRayResultCallbackE = Malloc(12);
+var _ZTSN16btCollisionWorld24ClosestRayResultCallbackE = Malloc(47);
+var _ZTI13btMotionState = Malloc(8);
+var _ZTS13btMotionState = Malloc(16);
+var _ZTV20btDefaultMotionState = Malloc(24);
+var _ZTI20btDefaultMotionState = Malloc(12);
+var _ZTS20btDefaultMotionState = Malloc(23);
+var _ZTI17btTypedConstraint = Malloc(24);
+var _ZTS17btTypedConstraint = Malloc(20);
+var _ZTI13btTypedObject = Malloc(8);
+var _ZTS13btTypedObject = Malloc(16);
+var _ZTV7RagDoll = Malloc(16);
+var _ZTI7RagDoll = Malloc(8);
+var _ZTS7RagDoll = Malloc(9);
+var _ZTV13BenchmarkDemo = Malloc(36);
+var _ZTI13BenchmarkDemo = Malloc(12);
+var _ZTS13BenchmarkDemo = Malloc(16);
+var _ZTI15DemoApplication = Malloc(8);
+var _ZTS15DemoApplication = Malloc(18);
+var _ZL10raycastBar = Malloc(40048);
+var _2E_str3 = Malloc(48);
+var _2E_str4 = Malloc(69);
+var _2E_str5 = Malloc(61);
+var _2E_str6 = Malloc(50);
+var _2E_str7 = Malloc(27);
+var _ZL7TaruVtx = Malloc(516);
+var LandscapeVtx = Malloc(32);
+var Landscape01Vtx = Malloc(24576);
+var Landscape03Vtx = Malloc(24576);
+var Landscape04Vtx = Malloc(25344);
+var Landscape05Vtx = Malloc(26928);
+var Landscape06Vtx = Malloc(27720);
+var Landscape07Vtx = Malloc(26880);
+var Landscape08Vtx = Malloc(26136);
+var LandscapeVtxCount = Malloc(32);
+var LandscapeIdx = Malloc(32);
+var Landscape01Idx = Malloc(23436);
+var Landscape02Idx = Malloc(22620);
+var Landscape03Idx = Malloc(23436);
+var Landscape04Idx = Malloc(24192);
+var Landscape05Idx = Malloc(25740);
+var Landscape06Idx = Malloc(26520);
+var Landscape07Idx = Malloc(25704);
+var Landscape08Idx = Malloc(24960);
+var LandscapeIdxCount = Malloc(32);
+var _ZZN11btMatrix3x311getIdentityEvE14identityMatrix_2E_0_2E_0_2E_0_2E_0 = Malloc(4);
+var _ZZN11btMatrix3x311getIdentityEvE14identityMatrix_2E_0_2E_1_2E_0_2E_1 = Malloc(4);
+var _ZZN11btMatrix3x311getIdentityEvE14identityMatrix_2E_0_2E_2_2E_0_2E_2 = Malloc(4);
+var _ZZN11btTransform11getIdentityEvE17identityTransform = Malloc(64);
+var _ZTV14BenchmarkDemo4 = Malloc(36);
+var _ZTI14BenchmarkDemo4 = Malloc(12);
+var _ZTS14BenchmarkDemo4 = Malloc(17);
+var _ZL14benchmarkDemo4 = Malloc(80);
+var _ZTI21btBroadphaseInterface = Malloc(8);
+var _ZTS21btBroadphaseInterface = Malloc(24);
+var _ZTI25btOverlappingPairCallback = Malloc(8);
+var _ZTS25btOverlappingPairCallback = Malloc(28);
+var _ZTI22btOverlappingPairCache = Malloc(12);
+var _ZTS22btOverlappingPairCache = Malloc(25);
+var _ZTV15btNullPairCache = Malloc(76);
+var _ZTI15btNullPairCache = Malloc(12);
+var _ZTS15btNullPairCache = Malloc(18);
+var _2E_str11 = Malloc(36);
+var _2E_str112 = Malloc(67);
+var _2E_str213 = Malloc(18);
+var _2E_str314 = Malloc(18);
+var _ZTV20btAxisSweep3InternalItE = Malloc(64);
+var _ZTI20btAxisSweep3InternalItE = Malloc(12);
+var _ZTS20btAxisSweep3InternalItE = Malloc(26);
+var _ZTV12btAxisSweep3 = Malloc(64);
+var _ZTI12btAxisSweep3 = Malloc(12);
+var _ZTS12btAxisSweep3 = Malloc(15);
+var _ZTV20btCollisionAlgorithm = Malloc(28);
+var _ZTI20btCollisionAlgorithm = Malloc(8);
+var _ZTS20btCollisionAlgorithm = Malloc(23);
+var _ZTIN6btDbvt8ICollideE = Malloc(8);
+var _ZTSN6btDbvt8ICollideE = Malloc(19);
+var _2E_str1118 = Malloc(63);
+var _2E_str22 = Malloc(16);
+var _ZTV18btDbvtTreeCollider = Malloc(36);
+var _ZTI18btDbvtTreeCollider = Malloc(12);
+var _ZTS18btDbvtTreeCollider = Malloc(21);
+var _ZTV19BroadphaseRayTester = Malloc(36);
+var _ZTI19BroadphaseRayTester = Malloc(12);
+var _ZTS19BroadphaseRayTester = Malloc(22);
+var _ZTV20BroadphaseAabbTester = Malloc(36);
+var _ZTI20BroadphaseAabbTester = Malloc(12);
+var _ZTS20BroadphaseAabbTester = Malloc(23);
+var _2E_str18 = Malloc(73);
+var _ZTV16btDbvtBroadphase = Malloc(64);
+var _ZTI16btDbvtBroadphase = Malloc(12);
+var _ZTS16btDbvtBroadphase = Malloc(19);
+var _ZTV12btDispatcher = Malloc(64);
+var _ZTI12btDispatcher = Malloc(8);
+var _ZTS12btDispatcher = Malloc(15);
+var _ZTI21btNodeOverlapCallback = Malloc(8);
+var _ZTS21btNodeOverlapCallback = Malloc(24);
+var _2E_str10 = Malloc(2);
+var _2E_str212 = Malloc(18);
+var _2E_str313 = Malloc(69);
+var _2E_str414 = Malloc(36);
+var _2E_str515 = Malloc(36);
+var _2E_str616 = Malloc(36);
+var _2E_str717 = Malloc(36);
+var _2E_str820 = Malloc(36);
+var _2E_str9 = Malloc(36);
+var gOverlappingPairs = Malloc(4);
+var _ZTI17btOverlapCallback = Malloc(8);
+var _ZTS17btOverlapCallback = Malloc(20);
+var _ZTVZN28btHashedOverlappingPairCache19cleanProxyFromPairsEP17btBroadphaseProxyP12btDispatcherE17CleanPairCallback = Malloc(20);
+var _ZTIZN28btHashedOverlappingPairCache19cleanProxyFromPairsEP17btBroadphaseProxyP12btDispatcherE17CleanPairCallback = Malloc(12);
+var _ZTSZN28btHashedOverlappingPairCache19cleanProxyFromPairsEP17btBroadphaseProxyP12btDispatcherE17CleanPairCallback = Malloc(110);
+var _ZTVZN28btHashedOverlappingPairCache37removeOverlappingPairsContainingProxyEP17btBroadphaseProxyP12btDispatcherE18RemovePairCallback = Malloc(20);
+var _ZTIZN28btHashedOverlappingPairCache37removeOverlappingPairsContainingProxyEP17btBroadphaseProxyP12btDispatcherE18RemovePairCallback = Malloc(12);
+var _ZTSZN28btHashedOverlappingPairCache37removeOverlappingPairsContainingProxyEP17btBroadphaseProxyP12btDispatcherE18RemovePairCallback = Malloc(129);
+var gRemovePairs = Malloc(4);
+var _ZTV28btHashedOverlappingPairCache = Malloc(76);
+var _ZTI28btHashedOverlappingPairCache = Malloc(12);
+var _ZTS28btHashedOverlappingPairCache = Malloc(31);
+var _2E_str121 = Malloc(79);
+var gAddedPairs = Malloc(4);
+var _2E_str222 = Malloc(38);
+var _2E_str323 = Malloc(77);
+var _2E_str424 = Malloc(38);
+var _2E_str525 = Malloc(38);
+var _2E_str626 = Malloc(42);
+var _2E_str727 = Malloc(22);
+var gFindPairs = Malloc(4);
+var _2E_str32 = Malloc(23);
+var _2E_str133 = Malloc(23);
+var _2E_str234 = Malloc(21);
+var _2E_str335 = Malloc(24);
+var _ZTV14btQuantizedBvh = Malloc(36);
+var _ZTI14btQuantizedBvh = Malloc(8);
+var _ZTS14btQuantizedBvh = Malloc(17);
+var _2E_str537 = Malloc(71);
+var _2E_str638 = Malloc(48);
+var _2E_str739 = Malloc(13);
+var _2E_str941 = Malloc(14);
+var _2E_str1143 = Malloc(29);
+var maxIterations = Malloc(4);
+var _2E_str1844 = Malloc(19);
+var _2E_str1921 = Malloc(32);
+var _2E_str21 = Malloc(7);
+var _2E_str2246 = Malloc(13);
+var _ZTV30btActivatingCollisionAlgorithm = Malloc(28);
+var _ZTI30btActivatingCollisionAlgorithm = Malloc(12);
+var _ZTS30btActivatingCollisionAlgorithm = Malloc(33);
+var _2E_str59 = Malloc(14);
+var _2E_str160 = Malloc(69);
+var _ZTV26btBoxBoxCollisionAlgorithm = Malloc(28);
+var _ZTI26btBoxBoxCollisionAlgorithm = Malloc(12);
+var _ZTS26btBoxBoxCollisionAlgorithm = Malloc(29);
+var _ZTI36btDiscreteCollisionDetectorInterface = Malloc(8);
+var _ZTS36btDiscreteCollisionDetectorInterface = Malloc(39);
+var _ZTV16btBoxBoxDetector = Malloc(20);
+var _ZTI16btBoxBoxDetector = Malloc(12);
+var _ZTS16btBoxBoxDetector = Malloc(19);
+var _2E_str65 = Malloc(12);
+var _2E_str166 = Malloc(71);
+var gNumManifold = Malloc(4);
+var _ZTIN36btDiscreteCollisionDetectorInterface6ResultE = Malloc(8);
+var _ZTSN36btDiscreteCollisionDetectorInterface6ResultE = Malloc(48);
+var _ZTV23btCollisionPairCallback = Malloc(20);
+var _ZTI23btCollisionPairCallback = Malloc(12);
+var _ZTS23btCollisionPairCallback = Malloc(26);
+var _2E_str169 = Malloc(45);
+var _2E_str270 = Malloc(26);
+var _2E_str371 = Malloc(14);
+var _2E_str472 = Malloc(34);
+var _2E_str573 = Malloc(76);
+var _ZTV21btCollisionDispatcher = Malloc(64);
+var _ZTI21btCollisionDispatcher = Malloc(12);
+var _ZTS21btCollisionDispatcher = Malloc(24);
+var _2E_str674 = Malloc(23);
+var _2E_str775 = Malloc(6);
+var _2E_str876 = Malloc(6);
+var _2E_str977 = Malloc(73);
+var _ZTV17btCollisionObject = Malloc(36);
+var _ZTI17btCollisionObject = Malloc(8);
+var _ZTS17btCollisionObject = Malloc(20);
+var _2E_str78 = Malloc(27);
+var _ZTIN16btCollisionWorld20ConvexResultCallbackE = Malloc(8);
+var _ZTSN16btCollisionWorld20ConvexResultCallbackE = Malloc(43);
+var _ZTI30btConvexPenetrationDepthSolver = Malloc(8);
+var _ZTS30btConvexPenetrationDepthSolver = Malloc(33);
+var _ZTVN12btConvexCast10CastResultE = Malloc(24);
+var _ZTIN12btConvexCast10CastResultE = Malloc(8);
+var _ZTSN12btConvexCast10CastResultE = Malloc(29);
+var _ZTVZN16btCollisionWorld13rayTestSingleERK11btTransformS2_P17btCollisionObjectPK16btCollisionShapeS2_RNS_17RayResultCallbackEE15LocalInfoAdder2 = Malloc(24);
+var _ZTIZN16btCollisionWorld13rayTestSingleERK11btTransformS2_P17btCollisionObjectPK16btCollisionShapeS2_RNS_17RayResultCallbackEE15LocalInfoAdder2 = Malloc(12);
+var _ZTSZN16btCollisionWorld13rayTestSingleERK11btTransformS2_P17btCollisionObjectPK16btCollisionShapeS2_RNS_17RayResultCallbackEE15LocalInfoAdder2 = Malloc(140);
+var _ZTVZN16btCollisionWorld17objectQuerySingleEPK13btConvexShapeRK11btTransformS5_P17btCollisionObjectPK16btCollisionShapeS5_RNS_20ConvexResultCallbackEfE14LocalInfoAdder = Malloc(24);
+var _ZTIZN16btCollisionWorld17objectQuerySingleEPK13btConvexShapeRK11btTransformS5_P17btCollisionObjectPK16btCollisionShapeS5_RNS_20ConvexResultCallbackEfE14LocalInfoAdder = Malloc(12);
+var _ZTSZN16btCollisionWorld17objectQuerySingleEPK13btConvexShapeRK11btTransformS5_P17btCollisionObjectPK16btCollisionShapeS5_RNS_20ConvexResultCallbackEfE14LocalInfoAdder = Malloc(164);
+var _ZTI24btBroadphaseAabbCallback = Malloc(8);
+var _ZTS24btBroadphaseAabbCallback = Malloc(27);
+var _ZTI23btBroadphaseRayCallback = Malloc(12);
+var _ZTS23btBroadphaseRayCallback = Malloc(26);
+var _ZTV17DebugDrawcallback = Malloc(44);
+var _ZTI17DebugDrawcallback = Malloc(32);
+var _ZTS17DebugDrawcallback = Malloc(20);
+var _ZTI18btTriangleCallback = Malloc(8);
+var _ZTS18btTriangleCallback = Malloc(21);
+var _ZTI31btInternalTriangleIndexCallback = Malloc(8);
+var _ZTS31btInternalTriangleIndexCallback = Malloc(34);
+var _ZTV16btCollisionWorld = Malloc(56);
+var _ZTI16btCollisionWorld = Malloc(8);
+var _ZTS16btCollisionWorld = Malloc(19);
+var _ZTI16btManifoldResult = Malloc(12);
+var _ZTS16btManifoldResult = Malloc(19);
+var _ZTV21btSingleSweepCallback = Malloc(20);
+var _ZTI21btSingleSweepCallback = Malloc(12);
+var _ZTS21btSingleSweepCallback = Malloc(24);
+var _ZTV19btSingleRayCallback = Malloc(20);
+var _ZTI19btSingleRayCallback = Malloc(12);
+var _ZTS19btSingleRayCallback = Malloc(22);
+var _2E_str382 = Malloc(23);
+var _2E_str483 = Malloc(76);
+var _2E_str584 = Malloc(19);
+var _2E_str685 = Malloc(42);
+var _2E_str786 = Malloc(16);
+var _2E_str887 = Malloc(71);
+var _2E_str988 = Malloc(82);
+var _ZTVZN16btCollisionWorld17objectQuerySingleEPK13btConvexShapeRK11btTransformS5_P17btCollisionObjectPK16btCollisionShapeS5_RNS_20ConvexResultCallbackEfE32BridgeTriangleConvexcastCallback_0 = Malloc(24);
+var _ZTIZN16btCollisionWorld17objectQuerySingleEPK13btConvexShapeRK11btTransformS5_P17btCollisionObjectPK16btCollisionShapeS5_RNS_20ConvexResultCallbackEfE32BridgeTriangleConvexcastCallback_0 = Malloc(12);
+var _ZTSZN16btCollisionWorld17objectQuerySingleEPK13btConvexShapeRK11btTransformS5_P17btCollisionObjectPK16btCollisionShapeS5_RNS_20ConvexResultCallbackEfE32BridgeTriangleConvexcastCallback_0 = Malloc(184);
+var _ZTI28btTriangleConvexcastCallback = Malloc(12);
+var _ZTS28btTriangleConvexcastCallback = Malloc(31);
+var _ZTVZN16btCollisionWorld17objectQuerySingleEPK13btConvexShapeRK11btTransformS5_P17btCollisionObjectPK16btCollisionShapeS5_RNS_20ConvexResultCallbackEfE32BridgeTriangleConvexcastCallback = Malloc(24);
+var _ZTIZN16btCollisionWorld17objectQuerySingleEPK13btConvexShapeRK11btTransformS5_P17btCollisionObjectPK16btCollisionShapeS5_RNS_20ConvexResultCallbackEfE32BridgeTriangleConvexcastCallback = Malloc(12);
+var _ZTSZN16btCollisionWorld17objectQuerySingleEPK13btConvexShapeRK11btTransformS5_P17btCollisionObjectPK16btCollisionShapeS5_RNS_20ConvexResultCallbackEfE32BridgeTriangleConvexcastCallback = Malloc(182);
+var _ZTVZN16btCollisionWorld13rayTestSingleERK11btTransformS2_P17btCollisionObjectPK16btCollisionShapeS2_RNS_17RayResultCallbackEE29BridgeTriangleRaycastCallback_0 = Malloc(24);
+var _ZTIZN16btCollisionWorld13rayTestSingleERK11btTransformS2_P17btCollisionObjectPK16btCollisionShapeS2_RNS_17RayResultCallbackEE29BridgeTriangleRaycastCallback_0 = Malloc(12);
+var _ZTSZN16btCollisionWorld13rayTestSingleERK11btTransformS2_P17btCollisionObjectPK16btCollisionShapeS2_RNS_17RayResultCallbackEE29BridgeTriangleRaycastCallback_0 = Malloc(156);
+var _ZTI25btTriangleRaycastCallback = Malloc(12);
+var _ZTS25btTriangleRaycastCallback = Malloc(28);
+var _ZTVZN16btCollisionWorld13rayTestSingleERK11btTransformS2_P17btCollisionObjectPK16btCollisionShapeS2_RNS_17RayResultCallbackEE29BridgeTriangleRaycastCallback = Malloc(24);
+var _ZTIZN16btCollisionWorld13rayTestSingleERK11btTransformS2_P17btCollisionObjectPK16btCollisionShapeS2_RNS_17RayResultCallbackEE29BridgeTriangleRaycastCallback = Malloc(12);
+var _ZTSZN16btCollisionWorld13rayTestSingleERK11btTransformS2_P17btCollisionObjectPK16btCollisionShapeS2_RNS_17RayResultCallbackEE29BridgeTriangleRaycastCallback = Malloc(154);
+var _2E_str1089 = Malloc(16);
+var _2E_str1190 = Malloc(34);
+var _2E_str1291 = Malloc(26);
+var _2E_str1392 = Malloc(26);
+var _2E_str1493 = Malloc(20);
+var _ZZN16btCollisionWorld16updateSingleAabbEP17btCollisionObjectE8reportMe_2E_b = Malloc(1);
+var _2E_str1594 = Malloc(49);
+var _2E_str1695 = Malloc(68);
+var _2E_str1796 = Malloc(65);
+var _2E_str1897 = Malloc(9);
+var _2E_str1998 = Malloc(12);
+var _ZTV22btCompoundLeafCallback = Malloc(36);
+var _ZTI22btCompoundLeafCallback = Malloc(12);
+var _ZTS22btCompoundLeafCallback = Malloc(25);
+var _2E_str99 = Malloc(42);
+var _2E_str1100 = Malloc(83);
+var _2E_str2101 = Malloc(43);
+var _2E_str3102 = Malloc(41);
+var _2E_str4103 = Malloc(43);
+var _2E_str5104 = Malloc(43);
+var _2E_str6105 = Malloc(9);
+var _2E_str7106 = Malloc(41);
+var _ZTV28btCompoundCollisionAlgorithm = Malloc(28);
+var _ZTI28btCompoundCollisionAlgorithm = Malloc(12);
+var _ZTS28btCompoundCollisionAlgorithm = Malloc(31);
+var _2E_str109 = Malloc(9);
+var _ZTV24btConvexTriangleCallback = Malloc(20);
+var _ZTI24btConvexTriangleCallback = Malloc(12);
+var _ZTS24btConvexTriangleCallback = Malloc(27);
+var _ZTVZN33btConvexConcaveCollisionAlgorithm21calculateTimeOfImpactEP17btCollisionObjectS1_RK16btDispatcherInfoP16btManifoldResultE31LocalTriangleSphereCastCallback = Malloc(20);
+var _ZTIZN33btConvexConcaveCollisionAlgorithm21calculateTimeOfImpactEP17btCollisionObjectS1_RK16btDispatcherInfoP16btManifoldResultE31LocalTriangleSphereCastCallback = Malloc(12);
+var _ZTSZN33btConvexConcaveCollisionAlgorithm21calculateTimeOfImpactEP17btCollisionObjectS1_RK16btDispatcherInfoP16btManifoldResultE31LocalTriangleSphereCastCallback = Malloc(158);
+var _ZTV15btTriangleShape = Malloc(124);
+var _ZTI15btTriangleShape = Malloc(12);
+var _ZTS15btTriangleShape = Malloc(18);
+var _ZTI23btPolyhedralConvexShape = Malloc(12);
+var _ZTS23btPolyhedralConvexShape = Malloc(26);
+var _ZTI21btConvexInternalShape = Malloc(12);
+var _ZTS21btConvexInternalShape = Malloc(24);
+var _ZTI13btConvexShape = Malloc(12);
+var _ZTS13btConvexShape = Malloc(16);
+var _ZTI16btCollisionShape = Malloc(8);
+var _ZTS16btCollisionShape = Malloc(19);
+var _2E_str1110 = Malloc(26);
+var _2E_str3112 = Malloc(66);
+var _ZTV33btConvexConcaveCollisionAlgorithm = Malloc(28);
+var _ZTI33btConvexConcaveCollisionAlgorithm = Malloc(12);
+var _ZTS33btConvexConcaveCollisionAlgorithm = Malloc(36);
+var _ZTI30btCollisionAlgorithmCreateFunc = Malloc(8);
+var _ZTS30btCollisionAlgorithmCreateFunc = Malloc(33);
+var _ZTVN23btConvexConvexAlgorithm10CreateFuncE = Malloc(20);
+var _ZTIN23btConvexConvexAlgorithm10CreateFuncE = Malloc(12);
+var _ZTSN23btConvexConvexAlgorithm10CreateFuncE = Malloc(40);
+var _ZTV24btPerturbedContactResult = Malloc(28);
+var _ZTI24btPerturbedContactResult = Malloc(12);
+var _ZTS24btPerturbedContactResult = Malloc(27);
+var _2E_str115 = Malloc(19);
+var _2E_str4119 = Malloc(49);
+var _2E_str5120 = Malloc(78);
+var _ZTV23btConvexConvexAlgorithm = Malloc(28);
+var _ZTI23btConvexConvexAlgorithm = Malloc(12);
+var _ZTS23btConvexConvexAlgorithm = Malloc(26);
+var _ZTV31btConvexPlaneCollisionAlgorithm = Malloc(28);
+var _ZTI31btConvexPlaneCollisionAlgorithm = Malloc(12);
+var _ZTS31btConvexPlaneCollisionAlgorithm = Malloc(34);
+var _ZTVN31btConvexPlaneCollisionAlgorithm10CreateFuncE = Malloc(20);
+var _ZTIN31btConvexPlaneCollisionAlgorithm10CreateFuncE = Malloc(12);
+var _ZTSN31btConvexPlaneCollisionAlgorithm10CreateFuncE = Malloc(48);
+var _ZTI24btCollisionConfiguration = Malloc(8);
+var _ZTS24btCollisionConfiguration = Malloc(27);
+var _ZTVN33btConvexConcaveCollisionAlgorithm10CreateFuncE = Malloc(20);
+var _ZTIN33btConvexConcaveCollisionAlgorithm10CreateFuncE = Malloc(12);
+var _ZTSN33btConvexConcaveCollisionAlgorithm10CreateFuncE = Malloc(50);
+var _ZTVN33btConvexConcaveCollisionAlgorithm17SwappedCreateFuncE = Malloc(20);
+var _ZTIN33btConvexConcaveCollisionAlgorithm17SwappedCreateFuncE = Malloc(12);
+var _ZTSN33btConvexConcaveCollisionAlgorithm17SwappedCreateFuncE = Malloc(57);
+var _ZTVN28btCompoundCollisionAlgorithm10CreateFuncE = Malloc(20);
+var _ZTIN28btCompoundCollisionAlgorithm10CreateFuncE = Malloc(12);
+var _ZTSN28btCompoundCollisionAlgorithm10CreateFuncE = Malloc(45);
+var _ZTVN28btCompoundCollisionAlgorithm17SwappedCreateFuncE = Malloc(20);
+var _ZTIN28btCompoundCollisionAlgorithm17SwappedCreateFuncE = Malloc(12);
+var _ZTSN28btCompoundCollisionAlgorithm17SwappedCreateFuncE = Malloc(52);
+var _ZTVN16btEmptyAlgorithm10CreateFuncE = Malloc(20);
+var _ZTIN16btEmptyAlgorithm10CreateFuncE = Malloc(12);
+var _ZTSN16btEmptyAlgorithm10CreateFuncE = Malloc(33);
+var _ZTVN32btSphereSphereCollisionAlgorithm10CreateFuncE = Malloc(20);
+var _ZTIN32btSphereSphereCollisionAlgorithm10CreateFuncE = Malloc(12);
+var _ZTSN32btSphereSphereCollisionAlgorithm10CreateFuncE = Malloc(49);
+var _ZTVN34btSphereTriangleCollisionAlgorithm10CreateFuncE = Malloc(20);
+var _ZTIN34btSphereTriangleCollisionAlgorithm10CreateFuncE = Malloc(12);
+var _ZTSN34btSphereTriangleCollisionAlgorithm10CreateFuncE = Malloc(51);
+var _ZTVN26btBoxBoxCollisionAlgorithm10CreateFuncE = Malloc(20);
+var _ZTIN26btBoxBoxCollisionAlgorithm10CreateFuncE = Malloc(12);
+var _ZTSN26btBoxBoxCollisionAlgorithm10CreateFuncE = Malloc(43);
+var _2E_str128 = Malloc(12);
+var _2E_str1129 = Malloc(42);
+var _ZTV31btDefaultCollisionConfiguration = Malloc(36);
+var _ZTI31btDefaultCollisionConfiguration = Malloc(12);
+var _ZTS31btDefaultCollisionConfiguration = Malloc(34);
+var _ZTV16btEmptyAlgorithm = Malloc(28);
+var _ZTI16btEmptyAlgorithm = Malloc(12);
+var _ZTS16btEmptyAlgorithm = Malloc(19);
+var _ZTV16btManifoldResult = Malloc(28);
+var _2E_str2149 = Malloc(31);
+var _2E_str3150 = Malloc(12);
+var _2E_str5152 = Malloc(71);
+var _2E_str155 = Malloc(28);
+var _2E_str1156 = Malloc(73);
+var _2E_str2157 = Malloc(80);
+var _2E_str3158 = Malloc(15);
+var _ZTV25btSimulationIslandManager = Malloc(24);
+var _ZTI25btSimulationIslandManager = Malloc(8);
+var _ZTS25btSimulationIslandManager = Malloc(28);
+var _ZTV32btSphereSphereCollisionAlgorithm = Malloc(28);
+var _ZTI32btSphereSphereCollisionAlgorithm = Malloc(12);
+var _ZTS32btSphereSphereCollisionAlgorithm = Malloc(35);
+var _ZTV34btSphereTriangleCollisionAlgorithm = Malloc(28);
+var _ZTI34btSphereTriangleCollisionAlgorithm = Malloc(12);
+var _ZTS34btSphereTriangleCollisionAlgorithm = Malloc(37);
+var _ZTV22SphereTriangleDetector = Malloc(20);
+var _ZTI22SphereTriangleDetector = Malloc(12);
+var _ZTS22SphereTriangleDetector = Malloc(25);
+var _2E_str173 = Malloc(4);
+var _2E_str2175 = Malloc(61);
+var _ZTV10btBoxShape = Malloc(124);
+var _ZTI10btBoxShape = Malloc(12);
+var _ZTS10btBoxShape = Malloc(13);
+var _2E_str181 = Malloc(16);
+var _ZTVZN22btBvhTriangleMeshShape14performRaycastEP18btTriangleCallbackRK9btVector3S4_E21MyNodeOverlapCallback = Malloc(20);
+var _ZTIZN22btBvhTriangleMeshShape14performRaycastEP18btTriangleCallbackRK9btVector3S4_E21MyNodeOverlapCallback = Malloc(12);
+var _ZTSZN22btBvhTriangleMeshShape14performRaycastEP18btTriangleCallbackRK9btVector3S4_E21MyNodeOverlapCallback = Malloc(104);
+var _ZTVZN22btBvhTriangleMeshShape17performConvexcastEP18btTriangleCallbackRK9btVector3S4_S4_S4_E21MyNodeOverlapCallback = Malloc(20);
+var _ZTIZN22btBvhTriangleMeshShape17performConvexcastEP18btTriangleCallbackRK9btVector3S4_S4_S4_E21MyNodeOverlapCallback = Malloc(12);
+var _ZTSZN22btBvhTriangleMeshShape17performConvexcastEP18btTriangleCallbackRK9btVector3S4_S4_S4_E21MyNodeOverlapCallback = Malloc(113);
+var _ZTVZNK22btBvhTriangleMeshShape19processAllTrianglesEP18btTriangleCallbackRK9btVector3S4_E21MyNodeOverlapCallback = Malloc(20);
+var _ZTIZNK22btBvhTriangleMeshShape19processAllTrianglesEP18btTriangleCallbackRK9btVector3S4_E21MyNodeOverlapCallback = Malloc(12);
+var _ZTSZNK22btBvhTriangleMeshShape19processAllTrianglesEP18btTriangleCallbackRK9btVector3S4_E21MyNodeOverlapCallback = Malloc(110);
+var _2E_str5186 = Malloc(70);
+var _2E_str6187 = Malloc(49);
+var _2E_str7188 = Malloc(75);
+var _2E_str8189 = Malloc(24);
+var _ZTV22btBvhTriangleMeshShape = Malloc(88);
+var _ZTI22btBvhTriangleMeshShape = Malloc(12);
+var _ZTS22btBvhTriangleMeshShape = Malloc(25);
+var _ZTI19btTriangleMeshShape = Malloc(12);
+var _ZTS19btTriangleMeshShape = Malloc(22);
+var _ZTI14btConcaveShape = Malloc(12);
+var _ZTS14btConcaveShape = Malloc(17);
+var _2E_str194 = Malloc(13);
+var _2E_str4198 = Malloc(72);
+var _2E_str6199 = Malloc(19);
+var _ZTV14btCapsuleShape = Malloc(92);
+var _ZTI14btCapsuleShape = Malloc(12);
+var _ZTS14btCapsuleShape = Malloc(17);
+var _2E_str200 = Malloc(21);
+var _ZTV14btConcaveShape = Malloc(72);
+var _2E_str219 = Malloc(7);
+var _2E_str3222 = Malloc(70);
+var _ZTV17btConvexHullShape = Malloc(120);
+var _ZTI17btConvexHullShape = Malloc(12);
+var _ZTS17btConvexHullShape = Malloc(20);
+var _ZTI34btPolyhedralConvexAabbCachingShape = Malloc(12);
+var _ZTS34btPolyhedralConvexAabbCachingShape = Malloc(37);
+var _2E_str5223 = Malloc(19);
+var _2E_str6224 = Malloc(22);
+var _2E_str6232 = Malloc(19);
+var _ZTV13btConvexShape = Malloc(92);
+var _2E_str6249 = Malloc(13);
+var _2E_str7250 = Malloc(66);
+var _ZTVZN14btOptimizedBvh5buildEP23btStridingMeshInterfacebRK9btVector3S4_E20NodeTriangleCallback = Malloc(20);
+var _ZTIZN14btOptimizedBvh5buildEP23btStridingMeshInterfacebRK9btVector3S4_E20NodeTriangleCallback = Malloc(12);
+var _ZTSZN14btOptimizedBvh5buildEP23btStridingMeshInterfacebRK9btVector3S4_E20NodeTriangleCallback = Malloc(91);
+var _ZTVZN14btOptimizedBvh5buildEP23btStridingMeshInterfacebRK9btVector3S4_E29QuantizedNodeTriangleCallback = Malloc(20);
+var _ZTIZN14btOptimizedBvh5buildEP23btStridingMeshInterfacebRK9btVector3S4_E29QuantizedNodeTriangleCallback = Malloc(12);
+var _ZTSZN14btOptimizedBvh5buildEP23btStridingMeshInterfacebRK9btVector3S4_E29QuantizedNodeTriangleCallback = Malloc(100);
+var _2E_str10306 = Malloc(67);
+var _2E_str18314 = Malloc(36);
+var _2E_str19315 = Malloc(48);
+var _2E_str20316 = Malloc(17);
+var _ZTV14btOptimizedBvh = Malloc(40);
+var _ZTI14btOptimizedBvh = Malloc(12);
+var _ZTS14btOptimizedBvh = Malloc(17);
+var _2E_str7331 = Malloc(74);
+var _ZGVZN34btPolyhedralConvexAabbCachingShape15recalcLocalAabbEvE11_directions = Malloc(8);
+var _ZZN34btPolyhedralConvexAabbCachingShape15recalcLocalAabbEvE11_directions = Malloc(96);
+var _2E_str342 = Malloc(7);
+var _ZTV13btSphereShape = Malloc(92);
+var _ZTI13btSphereShape = Malloc(12);
+var _ZTS13btSphereShape = Malloc(16);
+var _2E_str349 = Malloc(15);
+var _2E_str1350 = Malloc(27);
+var _2E_str3352 = Malloc(76);
+var _2E_str5354 = Malloc(20);
+var _2E_str6355 = Malloc(44);
+var _2E_str7356 = Malloc(15);
+var _2E_str8357 = Malloc(28);
+var _2E_str9358 = Malloc(61);
+var _ZTV23btStridingMeshInterface = Malloc(68);
+var _ZTI23btStridingMeshInterface = Malloc(8);
+var _ZTS23btStridingMeshInterface = Malloc(26);
+var _ZTV31btInternalTriangleIndexCallback = Malloc(20);
+var _ZTV18btTriangleCallback = Malloc(20);
+var _2E_str367 = Malloc(26);
+var _2E_str1368 = Malloc(79);
+var _ZTV26btTriangleIndexVertexArray = Malloc(68);
+var _ZTI26btTriangleIndexVertexArray = Malloc(12);
+var _ZTS26btTriangleIndexVertexArray = Malloc(29);
+var _2E_str372 = Malloc(13);
+var _ZTV21SupportVertexCallback = Malloc(20);
+var _ZTI21SupportVertexCallback = Malloc(12);
+var _ZTS21SupportVertexCallback = Malloc(24);
+var _ZTVZNK19btTriangleMeshShape19processAllTrianglesEP18btTriangleCallbackRK9btVector3S4_E16FilteredCallback = Malloc(20);
+var _ZTIZNK19btTriangleMeshShape19processAllTrianglesEP18btTriangleCallbackRK9btVector3S4_E16FilteredCallback = Malloc(12);
+var _ZTSZNK19btTriangleMeshShape19processAllTrianglesEP18btTriangleCallbackRK9btVector3S4_E16FilteredCallback = Malloc(102);
+var _2E_str3375 = Malloc(72);
+var _ZTV19btTriangleMeshShape = Malloc(80);
+var _ZTV16btPointCollector = Malloc(28);
+var _ZTI16btPointCollector = Malloc(12);
+var _ZTS16btPointCollector = Malloc(19);
+var _ZTV27btContinuousConvexCollision = Malloc(20);
+var _ZTI27btContinuousConvexCollision = Malloc(12);
+var _ZTS27btContinuousConvexCollision = Malloc(30);
+var _ZTI12btConvexCast = Malloc(8);
+var _ZTS12btConvexCast = Malloc(15);
+var _ZTV12btConvexCast = Malloc(20);
+var _ZTV15btGjkConvexCast = Malloc(20);
+var _ZTI15btGjkConvexCast = Malloc(12);
+var _ZTS15btGjkConvexCast = Malloc(18);
+var _ZZN12gjkepa2_impl3GJK13projectoriginERK9btVector3S3_S3_PfRjE4imd3 = Malloc(12);
+var _ZZN12gjkepa2_impl3EPA6expandEjPNS_3GJK3sSVEPNS0_5sFaceEjRNS0_8sHorizonEE4i2m3 = Malloc(12);
+var _ZTV30btGjkEpaPenetrationDepthSolver = Malloc(20);
+var _ZTI30btGjkEpaPenetrationDepthSolver = Malloc(12);
+var _ZTS30btGjkEpaPenetrationDepthSolver = Malloc(33);
+var gNumDeepPenetrationChecks = Malloc(4);
+var _ZTV17btGjkPairDetector = Malloc(20);
+var _ZTI17btGjkPairDetector = Malloc(12);
+var _ZTS17btGjkPairDetector = Malloc(20);
+var gNumGjkChecks = Malloc(4);
+var _2E_str425 = Malloc(39);
+var _2E_str1426 = Malloc(71);
+var _2E_str2427 = Malloc(18);
+var _2E_str3428 = Malloc(75);
+var gContactBreakingThreshold = Malloc(4);
+var _2E_str434 = Malloc(52);
+var _2E_str3437 = Malloc(78);
+var _2E_str4438 = Malloc(50);
+var _ZTV28btTriangleConvexcastCallback = Malloc(24);
+var _ZTV22btSubsimplexConvexCast = Malloc(20);
+var _ZTI22btSubsimplexConvexCast = Malloc(12);
+var _ZTS22btSubsimplexConvexCast = Malloc(25);
+var _2E_str457 = Malloc(16);
+var _2E_str1458 = Malloc(80);
+var _ZTVN16btCollisionWorld27ClosestConvexResultCallbackE = Malloc(24);
+var _ZTIN16btCollisionWorld27ClosestConvexResultCallbackE = Malloc(12);
+var _ZTSN16btCollisionWorld27ClosestConvexResultCallbackE = Malloc(50);
+var _2E_str36 = Malloc(51);
+var _2E_str239 = Malloc(26);
+var _ZTV21btConeTwistConstraint = Malloc(52);
+var _ZTI21btConeTwistConstraint = Malloc(12);
+var _ZTS21btConeTwistConstraint = Malloc(24);
+var _2E_str1340 = Malloc(37);
+var _2E_str24 = Malloc(74);
+var _2E_str442 = Malloc(37);
+var _2E_str543 = Malloc(37);
+var _2E_str846 = Malloc(24);
+var _2E_str947 = Malloc(66);
+var _2E_str1149 = Malloc(30);
+var _2E_str29 = Malloc(27);
+var _ZTV17btHingeConstraint = Malloc(52);
+var _ZTI17btHingeConstraint = Malloc(12);
+var _ZTS17btHingeConstraint = Malloc(20);
+var _2E_str130 = Malloc(34);
+var _2E_str231 = Malloc(70);
+var _2E_str332 = Malloc(34);
+var _2E_str433 = Malloc(34);
+var gNumSplitImpulseRecoveries = Malloc(4);
+var _ZTI18btConstraintSolver = Malloc(8);
+var _ZTS18btConstraintSolver = Malloc(21);
+var _ZTV35btSequentialImpulseConstraintSolver = Malloc(48);
+var _ZTI35btSequentialImpulseConstraintSolver = Malloc(12);
+var _ZTS35btSequentialImpulseConstraintSolver = Malloc(38);
+var _ZGVZN35btSequentialImpulseConstraintSolver12getFixedBodyEvE7s_fixed = Malloc(8);
+var _ZZN35btSequentialImpulseConstraintSolver12getFixedBodyEvE7s_fixed = Malloc(608);
+var _2E_str248 = Malloc(27);
+var _2E_str34955 = Malloc(54);
+var _2E_str450 = Malloc(11);
+var _2E_str551 = Malloc(7);
+var _2E_str652 = Malloc(88);
+var _2E_str753 = Malloc(10);
+var _2E_str854 = Malloc(34);
+var _2E_str955 = Malloc(3);
+var _2E_str1056 = Malloc(29);
+var _2E_str1157 = Malloc(24);
+var _2E_str76 = Malloc(22);
+var _ZTI23btDiscreteDynamicsWorld = Malloc(12);
+var _ZTS23btDiscreteDynamicsWorld = Malloc(26);
+var _ZTI15btDynamicsWorld = Malloc(12);
+var _ZTS15btDynamicsWorld = Malloc(18);
+var _ZTIN25btSimulationIslandManager14IslandCallbackE = Malloc(8);
+var _ZTSN25btSimulationIslandManager14IslandCallbackE = Malloc(46);
+var _ZTV34btClosestNotMeConvexResultCallback = Malloc(24);
+var _ZTI34btClosestNotMeConvexResultCallback = Malloc(12);
+var _ZTS34btClosestNotMeConvexResultCallback = Malloc(37);
+var _ZTVZN23btDiscreteDynamicsWorld16solveConstraintsER19btContactSolverInfoE27InplaceSolverIslandCallback = Malloc(20);
+var _ZTIZN23btDiscreteDynamicsWorld16solveConstraintsER19btContactSolverInfoE27InplaceSolverIslandCallback = Malloc(12);
+var _ZTSZN23btDiscreteDynamicsWorld16solveConstraintsER19btContactSolverInfoE27InplaceSolverIslandCallback = Malloc(99);
+var _2E_str87 = Malloc(26);
+var _2E_str188 = Malloc(27);
+var _2E_str289 = Malloc(14);
+var _2E_str794 = Malloc(20);
+var _2E_str895 = Malloc(20);
+var gNumClampedCcdMotions = Malloc(4);
+var _2E_str996 = Malloc(17);
+var _2E_str1097 = Malloc(22);
+var _2E_str1198 = Malloc(29);
+var _2E_str1299 = Malloc(15);
+var _2E_str13100 = Malloc(5);
+var _2E_str1461 = Malloc(68);
+var _2E_str1562 = Malloc(24);
+var _2E_str16101 = Malloc(15);
+var _ZTV15btDynamicsWorld = Malloc(140);
+var _ZTV23btDiscreteDynamicsWorld = Malloc(180);
+var _ZL8uniqueId = Malloc(4);
+var _ZTV11btRigidBody = Malloc(36);
+var _ZTI11btRigidBody = Malloc(12);
+var _ZTS11btRigidBody = Malloc(14);
+var _2E_str4144 = Malloc(21);
+var gDisableDeactivation = Malloc(1);
+var gNumAlignedAllocs = Malloc(4);
+var gNumAlignedFree = Malloc(4);
+var _ZN15CProfileManager12FrameCounterE = Malloc(4);
+var _ZN15CProfileManager4RootE = Malloc(32);
+var _ZL13gProfileClock_2E_0 = Malloc(4);
+var _ZN15CProfileManager11CurrentNodeE = Malloc(4);
+var _2E_str729 = Malloc(5);
+var _ZN4__rwL12__rw_catlistE_2E_0 = Malloc(4);
+var _ZN4__rwL12__rw_catlistE_2E_1 = Malloc(4);
+var _ZN4__rwL12__rw_catlistE_2E_2 = Malloc(4);
+var llvm_2E_eh_2E_catch_2E_all_2E_value = Malloc(4);
+var _ZTIN4__rw10__rw_facetE = Malloc(12);
+var _ZTSN4__rw10__rw_facetE = Malloc(20);
+var _ZTIN4__rw17__rw_synchronizedE = Malloc(8);
+var _ZTSN4__rw17__rw_synchronizedE = Malloc(27);
+var _2E_str4131 = Malloc(10);
+var _2E_str15132 = Malloc(21);
+var _2E_str26 = Malloc(1);
+var _ZN4__rwL13__rw_what_bufE = Malloc(256);
+var _ZN4__rwL16__rw_what_refcntE = Malloc(4);
+var _2E_str3133 = Malloc(16);
+var _2E_str47 = Malloc(25);
+var _2E_str5134 = Malloc(18);
+var _ZZN4__rwL13__rw_vfmtwhatEPcjiS0_E7__fname = Malloc(4);
+var _ZZN4__rwL13__rw_vfmtwhatEPcjiS0_E6buffer = Malloc(11);
+var _2E_str7136 = Malloc(3);
+var _ZZN4__rwL13__rw_vfmtwhatEPcjiS0_E8__catset = Malloc(4);
+var _ZZN4__rwL13__rw_vfmtwhatEPcjiS0_E4msgs = Malloc(32);
+var _ZZN4__rwL13__rw_vfmtwhatEPcjiS0_E5__cat = Malloc(4);
+var _ZZN4__rw10__rw_throwEizE6errors = Malloc(100);
+var _2E_str8137 = Malloc(26);
+var _2E_str9138 = Malloc(18);
+var _2E_str10139 = Malloc(29);
+var _2E_str11140 = Malloc(33);
+var _2E_str12141 = Malloc(17);
+var _2E_str138142 = Malloc(20);
+var _2E_str14143 = Malloc(21);
+var _2E_str159144 = Malloc(25);
+var _2E_str16145 = Malloc(51);
+var _2E_str17146 = Malloc(47);
+var _2E_str18147 = Malloc(22);
+var _2E_str19148 = Malloc(44);
+var _2E_str20149 = Malloc(23);
+var _2E_str21150 = Malloc(24);
+var _2E_str22151 = Malloc(39);
+var _2E_str23152 = Malloc(38);
+var _2E_str24153 = Malloc(38);
+var _2E_str25154 = Malloc(29);
+var _2E_str2610 = Malloc(44);
+var _2E_str27 = Malloc(30);
+var _2E_str28155 = Malloc(40);
+var _2E_str29156 = Malloc(26);
+var _2E_str30 = Malloc(27);
+var _2E_str31 = Malloc(30);
+var _2E_str32157 = Malloc(32);
+var _2E_str33 = Malloc(11);
+var _2E_str134 = Malloc(9);
+var _2E_str235 = Malloc(12);
+var _2E_str336 = Malloc(11);
+var _2E_str437 = Malloc(8);
+var _ZTVN4__rw10__rw_facetE = Malloc(16);
+var _2E_str538 = Malloc(2);
+var _ZZN4__rw10__rw_facet9_C_manageEPS0_NS0_13_C_facet_typeEPKcPFS1_jS4_EE12n_std_facets = Malloc(4);
+var _ZZN4__rw10__rw_facet9_C_manageEPS0_NS0_13_C_facet_typeEPKcPFS1_jS4_EE10std_facets = Malloc(4);
+var _ZZN4__rw10__rw_facet9_C_manageEPS0_NS0_13_C_facet_typeEPKcPFS1_jS4_EE13std_facet_buf = Malloc(1664);
+var _ZZN4__rw10__rw_facet9_C_manageEPS0_NS0_13_C_facet_typeEPKcPFS1_jS4_EE17std_facet_bufsize = Malloc(4);
+var _ZZN4__rw10__rw_facetD4EvE9destroyed = Malloc(24);
+var _ZN4__rw9__rw_catsE = Malloc(72);
+var _2E_str785 = Malloc(2);
+var _ZZN4__rw11__rw_locale9_C_manageEPS0_PKcE6global = Malloc(4);
+var _ZZN4__rw11__rw_locale9_C_manageEPS0_PKcE5ginit = Malloc(4);
+var _ZZN4__rw11__rw_locale9_C_manageEPS0_PKcE9n_locales = Malloc(4);
+var _ZZN4__rw11__rw_locale9_C_manageEPS0_PKcE7locales = Malloc(4);
+var _ZZN4__rw11__rw_locale9_C_manageEPS0_PKcE10locale_buf = Malloc(32);
+var _ZZN4__rw11__rw_locale9_C_manageEPS0_PKcE14locale_bufsize = Malloc(4);
+var _ZZN4__rw11__rw_locale9_C_manageEPS0_PKcE7classic = Malloc(4);
+var _ZZN4__rw11__rw_locale9_C_manageEPS0_PKcE12classic_body = Malloc(172);
+var _ZN4__rwL22__rw_classic_once_initE_2E_0_2E_b = Malloc(1);
+var _ZN4__rwL12__rw_classicE = Malloc(4);
+var _2E_str292167 = Malloc(4);
+var _2E_str10100175 = Malloc(29);
+var _2E_str12102177 = Malloc(33);
+var _ZZN4__rwL20__rw_manage_cat_dataERiPNS_18__rw_open_cat_dataEE4init_2E_b = Malloc(1);
+var _ZZN4__rwL20__rw_manage_cat_dataERiPNS_18__rw_open_cat_dataEE8catalogs = Malloc(4);
+var _ZZN4__rwL20__rw_manage_cat_dataERiPNS_18__rw_open_cat_dataEE11catalog_buf = Malloc(64);
+var _ZZN4__rwL20__rw_manage_cat_dataERiPNS_18__rw_open_cat_dataEE15catalog_bufsize = Malloc(4);
+var _ZZN4__rwL20__rw_manage_cat_dataERiPNS_18__rw_open_cat_dataEE10n_catalogs = Malloc(4);
+var _ZZN4__rwL20__rw_manage_cat_dataERiPNS_18__rw_open_cat_dataEE11largest_cat = Malloc(4);
+var _2E_str115180 = Malloc(27);
+var _2E_str1116181 = Malloc(25);
+var _2E_str2131 = Malloc(2);
+var _2E_str4133 = Malloc(2);
+var _ZZN4__rw16__rw_locale_nameEiPKcRNS_14__rw_pod_arrayIcLj256EEEE11locale_root = Malloc(259);
+var _ZNSs11_C_null_refE = Malloc(16);
+var _ZTVSt8messagesIcE = Malloc(28);
+var _ZTISt8messagesIcE = Malloc(32);
+var _ZTSSt8messagesIcE = Malloc(15);
+var _ZTISt13messages_base = Malloc(8);
+var _ZTSSt13messages_base = Malloc(18);
+var _2E_str2360 = Malloc(31);
+var _2E_str3361 = Malloc(48);
+var _2E_str4362 = Malloc(31);
+var _ZTVSt9type_info = Malloc(24);
+var _ZTISt9type_info = Malloc(8);
+var _ZTSSt9type_info = Malloc(13);
+var s_max_memory = Malloc(4);
+var s_current_memory = Malloc(4);
+var block_null = Malloc(16);
+var _2E_str643 = Malloc(57);
+var _2E_str1648 = Malloc(3);
+var _2E_str4651 = Malloc(4);
+var _2E_str5652 = Malloc(4);
+var my_ctype = Malloc(1028);
+var _ZL8nextRand = Malloc(4);
+var _2E_str7654 = Malloc(4);
+var _2E_str9655 = Malloc(4);
+var _ZL8pad_line = Malloc(64);
+var _ZL10strtok_pos = Malloc(4);
+var _ZTI14CFileInterface = Malloc(8);
+var _ZTS14CFileInterface = Malloc(17);
+var _ZTV11CFileSystem = Malloc(44);
+var _ZTI11CFileSystem = Malloc(12);
+var _ZTS11CFileSystem = Malloc(14);
+var _ZL13s_file_stdout = Malloc(4);
+var _ZTV7CFileLS = Malloc(44);
+var _ZTI7CFileLS = Malloc(12);
+var _ZTS7CFileLS = Malloc(9);
+var _ZTV10CFileCloud = Malloc(44);
+var _ZTI10CFileCloud = Malloc(12);
+var _ZTS10CFileCloud = Malloc(13);
+var _ZL10s_aSockets = Malloc(262336);
+var _ZTV11CFileStdout = Malloc(44);
+var _ZTI11CFileStdout = Malloc(12);
+var _ZTS11CFileStdout = Malloc(14);
+var _2E_str31677 = Malloc(4);
+var _2E_str32678 = Malloc(4);
+var _2E_str33679 = Malloc(5);
+var _2E_str34680 = Malloc(8);
+var _2E_str35681 = Malloc(53);
+var _2E_str37683 = Malloc(4);
+var _2E_str38684 = Malloc(7);
+var _ZN12mandreel_b64L9b64_charsE = Malloc(65);
+var _ZN12mandreel_b64L11b64_indexesE = Malloc(256);
+var _ZL25s_mandreel_internal_width = Malloc(4);
+var _ZL26s_mandreel_internal_height = Malloc(4);
+var g_msgcallback = Malloc(4);
+var _ZL24g_pFirstTextureAsyncInfo = Malloc(4);
+var _ZL17g_apPackFileNames = Malloc(1024);
+var _ZGVZ21Mandreel_GetTickCountE7s_first = Malloc(8);
+var _ZZ21Mandreel_GetTickCountE7s_first = Malloc(8);
+var _ZZ29__mandreel_internal_preupdateE8s_bfirst_2E_b = Malloc(1);
+var _2E_str779 = Malloc(13);
+var _2E_str3782 = Malloc(13);
+var _2E_str4783 = Malloc(37);
+var _2E_str5784 = Malloc(12);
+var _2E_str6785 = Malloc(17);
+var _ZZ24__mandreel_internal_initE54s_723478567_mandreel___mandreel_internal_SetResolution = Malloc(4);
+var _ZZ24__mandreel_internal_initE56s_723478567_mandreel_iMandreel_TextureAsync_IsCompressed = Malloc(4);
+var _ZZ24__mandreel_internal_initE57s_723478567_mandreel_iMandreel_TextureAsync_GetPackOffset = Malloc(4);
+var _ZZ24__mandreel_internal_initE29s_723478567_mandreel___resize = Malloc(4);
+var _ZZ24__mandreel_internal_initE48s_723478567_mandreel_imandreel_restore_glcontext = Malloc(4);
+var _ZZ24__mandreel_internal_initE46s_723478567_mandreel_imandreel_viewport_resize = Malloc(4);
+var _ZTVN10__cxxabiv120__si_class_type_infoE = Malloc(40);
+var _ZTIN10__cxxabiv120__si_class_type_infoE = Malloc(12);
+var _ZTSN10__cxxabiv120__si_class_type_infoE = Malloc(37);
+var _ZTIN10__cxxabiv117__class_type_infoE = Malloc(12);
+var _ZTSN10__cxxabiv117__class_type_infoE = Malloc(34);
+var _ZTVN10__cxxabiv117__class_type_infoE = Malloc(40);
+var _ZTVN10__cxxabiv121__vmi_class_type_infoE = Malloc(40);
+var _ZTIN10__cxxabiv121__vmi_class_type_infoE = Malloc(12);
+var _ZTSN10__cxxabiv121__vmi_class_type_infoE = Malloc(38);
+var _ZL11g_aChannels = Malloc(9344);
+var _ZL7g_bInit_2E_b = Malloc(1);
+var _2E_str221 = Malloc(8);
+var _2E_str1222 = Malloc(21);
+var _ZL21g_pFirstSoundDuration = Malloc(4);
+var _2E_str3224 = Malloc(71);
+var _2E_str4225 = Malloc(8);
+var _ZL15g_iFreeChannels = Malloc(4);
+var _ZL15g_aFreeChannels = Malloc(128);
+var _ZL6g_bLog = Malloc(1);
+var _2E_str12233 = Malloc(5);
+var _2E_str22243 = Malloc(21);
+var _2E_str24245 = Malloc(86);
+var _2E_str26247 = Malloc(8);
+var _2E_str27248 = Malloc(4);
+var _2E_str28249 = Malloc(60);
+var _2E_str29250 = Malloc(10);
+var _2E_str30251 = Malloc(3);
+var _2E_str31252 = Malloc(75);
+var _2E_str32253 = Malloc(5);
+var _2E_str33254 = Malloc(4);
+var _2E_str34255 = Malloc(9);
+var _2E_str35256 = Malloc(22);
+var _ZZL32_mandreel_init_tcp_socket_librayvE47s_723478567_mandreel_mandreel_flash_tcp_onError = Malloc(4);
+var _ZL13s_fifo_errors = Malloc(24);
+var _ZN5my_glL9m_contextE = Malloc(324);
+var llvm_2E_global_ctors = Malloc(40);
+var llvm_2E_global_dtors = Malloc(56);
+var llvm_2E_used = Malloc(300);
+function global_init(stackPos)
+{
+initHeap();
+emit_start(Landscape02Vtx)
+emit_32(3279552512);
+emit_32(1077902238);
+emit_32(1122144223);
+emit_32(3279552512);
+emit_32(1074513450);
+emit_32(1122656322);
+emit_32(3279296528);
+emit_32(1070576131);
+emit_32(1122144223);
+emit_32(3279296528);
+emit_32(1069684087);
+emit_32(1122656322);
+emit_32(3279040545);
+emit_32(1062793197);
+emit_32(1122144223);
+emit_32(3279040545);
+emit_32(1059117578);
+emit_32(1122656322);
+emit_32(3278784496);
+emit_32(3207760682);
+emit_32(1122144223);
+emit_32(3278784496);
+emit_32(3205587983);
+emit_32(1122656322);
+emit_32(3278528512);
+emit_32(3223956593);
+emit_32(1122144223);
+emit_32(3278528512);
+emit_32(3221291239);
+emit_32(1122656322);
+emit_32(3278272528);
+emit_32(3228867536);
+emit_32(1122144223);
+emit_32(3278272528);
+emit_32(3227143174);
+emit_32(1122656322);
+emit_32(3278016545);
+emit_32(3229577925);
+emit_32(1122144223);
+emit_32(3278016545);
+emit_32(3228890898);
+emit_32(1122656322);
+emit_32(3277760496);
+emit_32(3232782164);
+emit_32(1122144223);
+emit_32(3277760496);
+emit_32(3231744493);
+emit_32(1122656322);
+emit_32(3277504512);
+emit_32(3233030424);
+emit_32(1122144223);
+emit_32(3277504512);
+emit_32(3231183211);
+emit_32(1122656322);
+emit_32(3277248528);
+emit_32(3231512296);
+emit_32(1122144223);
+emit_32(3277248528);
+emit_32(3226713845);
+emit_32(1122656322);
+emit_32(3276992545);
+emit_32(3225240260);
+emit_32(1122144223);
+emit_32(3276992545);
+emit_32(3222588579);
+emit_32(1122656322);
+emit_32(3276736496);
+emit_32(3223081116);
+emit_32(1122144223);
+emit_32(3276736496);
+emit_32(3218835474);
+emit_32(1122656322);
+emit_32(3276480512);
+emit_32(3217103310);
+emit_32(1122144223);
+emit_32(3276480512);
+emit_32(3214447728);
+emit_32(1122656322);
+emit_32(3276224528);
+emit_32(3188062822);
+emit_32(1122144223);
+emit_32(3276224528);
+emit_32(1046529045);
+emit_32(1122656322);
+emit_32(3275968545);
+emit_32(1065108554);
+emit_32(1122144223);
+emit_32(3275968545);
+emit_32(1070915199);
+emit_32(1122656322);
+emit_32(3275712496);
+emit_32(1078777673);
+emit_32(1122144223);
+emit_32(3275712496);
+emit_32(1082866637);
+emit_32(1122656322);
+emit_32(3275456512);
+emit_32(1083552091);
+emit_32(1122144223);
+emit_32(3275456512);
+emit_32(1087021578);
+emit_32(1122656322);
+emit_32(3275200528);
+emit_32(1086679197);
+emit_32(1122144223);
+emit_32(3275200528);
+emit_32(1090529232);
+emit_32(1122656322);
+emit_32(3274944545);
+emit_32(1090716539);
+emit_32(1122144223);
+emit_32(3274944545);
+emit_32(1092317201);
+emit_32(1122656322);
+emit_32(3274688496);
+emit_32(1091935477);
+emit_32(1122144223);
+emit_32(3274688496);
+emit_32(1093426427);
+emit_32(1122656322);
+emit_32(3274432512);
+emit_32(1092098877);
+emit_32(1122144223);
+emit_32(3274432512);
+emit_32(1094040158);
+emit_32(1122656322);
+emit_32(3274176528);
+emit_32(1094849764);
+emit_32(1122144223);
+emit_32(3274176528);
+emit_32(1095262693);
+emit_32(1122656322);
+emit_32(3273920545);
+emit_32(1097725693);
+emit_32(1122144223);
+emit_32(3273920545);
+emit_32(1097468792);
+emit_32(1122656322);
+emit_32(3273664496);
+emit_32(1099104833);
+emit_32(1122144223);
+emit_32(3273664496);
+emit_32(1099540411);
+emit_32(1122656322);
+emit_32(3273408512);
+emit_32(1100237609);
+emit_32(1122144223);
+emit_32(3273408512);
+emit_32(1100993213);
+emit_32(1122656322);
+emit_32(3273152528);
+emit_32(1102296436);
+emit_32(1122144223);
+emit_32(3273152528);
+emit_32(1102819203);
+emit_32(1122656322);
+emit_32(3272896545);
+emit_32(1104227022);
+emit_32(1122144223);
+emit_32(3272896545);
+emit_32(1104470763);
+emit_32(1122656322);
+emit_32(3272640496);
+emit_32(1105517399);
+emit_32(1122144223);
+emit_32(3272640496);
+emit_32(1105442111);
+emit_32(1122656322);
+emit_32(3272384512);
+emit_32(1106394218);
+emit_32(1122144223);
+emit_32(3272384512);
+emit_32(1106127356);
+emit_32(1122656322);
+emit_32(3272128528);
+emit_32(1107354688);
+emit_32(1122144223);
+emit_32(3272128528);
+emit_32(1106807829);
+emit_32(1122656322);
+emit_32(3271872545);
+emit_32(1107530062);
+emit_32(1122144223);
+emit_32(3271872545);
+emit_32(1107212108);
+emit_32(1122656322);
+emit_32(3271616496);
+emit_32(1107693221);
+emit_32(1122144223);
+emit_32(3271616496);
+emit_32(1107339719);
+emit_32(1122656322);
+emit_32(3271163904);
+emit_32(1108003075);
+emit_32(1122144223);
+emit_32(3271163904);
+emit_32(1108016575);
+emit_32(1122656322);
+emit_32(3270651937);
+emit_32(1108711703);
+emit_32(1122144223);
+emit_32(3270651937);
+emit_32(1108361190);
+emit_32(1122656322);
+emit_32(3270139970);
+emit_32(1108881283);
+emit_32(1122144223);
+emit_32(3270139970);
+emit_32(1108677807);
+emit_32(1122656322);
+emit_32(3269627871);
+emit_32(1108829956);
+emit_32(1122144223);
+emit_32(3269627871);
+emit_32(1108698045);
+emit_32(1122656322);
+emit_32(3269115904);
+emit_32(1108842486);
+emit_32(1122144223);
+emit_32(3269115904);
+emit_32(1108670415);
+emit_32(1122656322);
+emit_32(3268603937);
+emit_32(1108356995);
+emit_32(1122144223);
+emit_32(3268603937);
+emit_32(1108385307);
+emit_32(1122656322);
+emit_32(3268091970);
+emit_32(1107850324);
+emit_32(1122144223);
+emit_32(3268091970);
+emit_32(1107664044);
+emit_32(1122656322);
+emit_32(3267579911);
+emit_32(1107320504);
+emit_32(1122144223);
+emit_32(3267579911);
+emit_32(1106926109);
+emit_32(1122656322);
+emit_32(3267067904);
+emit_32(1106158866);
+emit_32(1122144223);
+emit_32(3267067904);
+emit_32(1105983491);
+emit_32(1122656322);
+emit_32(3266555911);
+emit_32(1106326271);
+emit_32(1122144223);
+emit_32(3266555911);
+emit_32(1105752542);
+emit_32(1122656322);
+emit_32(3266043904);
+emit_32(1105638300);
+emit_32(1122144223);
+emit_32(3266043904);
+emit_32(1105343650);
+emit_32(1122656322);
+emit_32(3265531911);
+emit_32(1104660451);
+emit_32(1122144223);
+emit_32(3265531911);
+emit_32(1104481983);
+emit_32(1122656322);
+emit_32(3265019904);
+emit_32(1103867255);
+emit_32(1122144223);
+emit_32(3265019904);
+emit_32(1103536377);
+emit_32(1122656322);
+emit_32(3264507911);
+emit_32(1102764940);
+emit_32(1122144223);
+emit_32(3264507911);
+emit_32(1102421374);
+emit_32(1122656322);
+emit_32(3263995904);
+emit_32(1101613761);
+emit_32(1122144223);
+emit_32(3263995904);
+emit_32(1101252526);
+emit_32(1122656322);
+emit_32(3263483911);
+emit_32(1100019768);
+emit_32(1122144223);
+emit_32(3263483911);
+emit_32(1099947835);
+emit_32(1122656322);
+emit_32(3262775296);
+emit_32(1099086483);
+emit_32(1122144223);
+emit_32(3262775296);
+emit_32(1099066665);
+emit_32(1122656322);
+emit_32(3261751309);
+emit_32(1097937715);
+emit_32(1122144223);
+emit_32(3261751309);
+emit_32(1097029334);
+emit_32(1122656322);
+emit_32(3260727296);
+emit_32(1097070753);
+emit_32(1122144223);
+emit_32(3260727296);
+emit_32(1095561223);
+emit_32(1122656322);
+emit_32(3259703309);
+emit_32(1096595014);
+emit_32(1122144223);
+emit_32(3259703309);
+emit_32(1095286181);
+emit_32(1122656322);
+emit_32(3258679296);
+emit_32(1095456365);
+emit_32(1122144223);
+emit_32(3258679296);
+emit_32(1094900095);
+emit_32(1122656322);
+emit_32(3257655309);
+emit_32(1093219752);
+emit_32(1122144223);
+emit_32(3257655309);
+emit_32(1093810625);
+emit_32(1122656322);
+emit_32(3256631296);
+emit_32(1092609303);
+emit_32(1122144223);
+emit_32(3256631296);
+emit_32(1093100949);
+emit_32(1122656322);
+emit_32(3255607309);
+emit_32(1093762915);
+emit_32(1122144223);
+emit_32(3255607309);
+emit_32(1093720133);
+emit_32(1122656322);
+emit_32(3254386688);
+emit_32(1094666473);
+emit_32(1122144223);
+emit_32(3254386688);
+emit_32(1094140822);
+emit_32(1122656322);
+emit_32(3252338714);
+emit_32(1094266021);
+emit_32(1122144223);
+emit_32(3252338714);
+emit_32(1093200983);
+emit_32(1122656322);
+emit_32(3250290688);
+emit_32(1093706396);
+emit_32(1122144223);
+emit_32(3250290688);
+emit_32(1093279731);
+emit_32(1122656322);
+emit_32(3248242714);
+emit_32(1095255038);
+emit_32(1122144223);
+emit_32(3248242714);
+emit_32(1095297296);
+emit_32(1122656322);
+emit_32(3245998080);
+emit_32(1096659501);
+emit_32(1122144223);
+emit_32(3245998080);
+emit_32(1096326998);
+emit_32(1122656322);
+emit_32(3241902132);
+emit_32(1097360998);
+emit_32(1122144223);
+emit_32(3241902132);
+emit_32(1097208116);
+emit_32(1122656322);
+emit_32(3237609472);
+emit_32(1097602590);
+emit_32(1122144223);
+emit_32(3237609472);
+emit_32(1098363332);
+emit_32(1122656322);
+emit_32(3229220864);
+emit_32(1098820406);
+emit_32(1122144223);
+emit_32(3229220864);
+emit_32(1098960496);
+emit_32(1122656322);
+emit_32(0);
+emit_32(1099470104);
+emit_32(1122144223);
+emit_32(0);
+emit_32(1099624612);
+emit_32(1122656322);
+emit_32(1081737216);
+emit_32(1100139620);
+emit_32(1122144223);
+emit_32(1081737216);
+emit_32(1100438045);
+emit_32(1122656322);
+emit_32(3279552512);
+emit_32(1083519019);
+emit_32(1121632256);
+emit_32(3279296528);
+emit_32(1074813133);
+emit_32(1121632256);
+emit_32(3279040545);
+emit_32(1064894426);
+emit_32(1121632256);
+emit_32(3278784496);
+emit_32(3220842029);
+emit_32(1121632256);
+emit_32(3278528512);
+emit_32(3224334626);
+emit_32(1121632256);
+emit_32(3278272528);
+emit_32(3228042265);
+emit_32(1121632256);
+emit_32(3278016545);
+emit_32(3230773910);
+emit_32(1121632256);
+emit_32(3277760496);
+emit_32(3234673249);
+emit_32(1121632256);
+emit_32(3277504512);
+emit_32(3235346205);
+emit_32(1121632256);
+emit_32(3277248528);
+emit_32(3233634383);
+emit_32(1121632256);
+emit_32(3276992545);
+emit_32(3231165889);
+emit_32(1121632256);
+emit_32(3276736496);
+emit_32(3226724414);
+emit_32(1121632256);
+emit_32(3276480512);
+emit_32(3221509175);
+emit_32(1121632256);
+emit_32(3276224528);
+emit_32(3212320830);
+emit_32(1121632256);
+emit_32(3275968545);
+emit_32(1049206085);
+emit_32(1121632256);
+emit_32(3275712496);
+emit_32(1073305532);
+emit_32(1121632256);
+emit_32(3275456512);
+emit_32(1077128892);
+emit_32(1121632256);
+emit_32(3275200528);
+emit_32(1082594553);
+emit_32(1121632256);
+emit_32(3274944545);
+emit_32(1084662177);
+emit_32(1121632256);
+emit_32(3274688496);
+emit_32(1089411681);
+emit_32(1121632256);
+emit_32(3274432512);
+emit_32(1092042275);
+emit_32(1121632256);
+emit_32(3274176528);
+emit_32(1095387054);
+emit_32(1121632256);
+emit_32(3273920545);
+emit_32(1097794270);
+emit_32(1121632256);
+emit_32(3273664496);
+emit_32(1099325348);
+emit_32(1121632256);
+emit_32(3273408512);
+emit_32(1100750678);
+emit_32(1121632256);
+emit_32(3273152528);
+emit_32(1101739065);
+emit_32(1121632256);
+emit_32(3272896545);
+emit_32(1103692248);
+emit_32(1121632256);
+emit_32(3272640496);
+emit_32(1105414167);
+emit_32(1121632256);
+emit_32(3272384512);
+emit_32(1106644671);
+emit_32(1121632256);
+emit_32(3272128528);
+emit_32(1107563486);
+emit_32(1121632256);
+emit_32(3271872545);
+emit_32(1107577274);
+emit_32(1121632256);
+emit_32(3271616496);
+emit_32(1107593999);
+emit_32(1121632256);
+emit_32(3271163904);
+emit_32(1108097080);
+emit_32(1121632256);
+emit_32(3270651937);
+emit_32(1108460883);
+emit_32(1121632256);
+emit_32(3270139970);
+emit_32(1108954710);
+emit_32(1121632256);
+emit_32(3269627871);
+emit_32(1109009079);
+emit_32(1121632256);
+emit_32(3269115904);
+emit_32(1108610279);
+emit_32(1121632256);
+emit_32(3268603937);
+emit_32(1108058125);
+emit_32(1121632256);
+emit_32(3268091970);
+emit_32(1107555412);
+emit_32(1121632256);
+emit_32(3267579911);
+emit_32(1106717652);
+emit_32(1121632256);
+emit_32(3267067904);
+emit_32(1106512341);
+emit_32(1121632256);
+emit_32(3266555911);
+emit_32(1106506836);
+emit_32(1121632256);
+emit_32(3266043904);
+emit_32(1105659534);
+emit_32(1121632256);
+emit_32(3265531911);
+emit_32(1105302179);
+emit_32(1121632256);
+emit_32(3265019904);
+emit_32(1104106698);
+emit_32(1121632256);
+emit_32(3264507911);
+emit_32(1102757390);
+emit_32(1121632256);
+emit_32(3263995904);
+emit_32(1101520647);
+emit_32(1121632256);
+emit_32(3263483911);
+emit_32(1100159910);
+emit_32(1121632256);
+emit_32(3262775296);
+emit_32(1099381290);
+emit_32(1121632256);
+emit_32(3261751309);
+emit_32(1098131911);
+emit_32(1121632256);
+emit_32(3260727296);
+emit_32(1097148452);
+emit_32(1121632256);
+emit_32(3259703309);
+emit_32(1096156919);
+emit_32(1121632256);
+emit_32(3258679296);
+emit_32(1095321308);
+emit_32(1121632256);
+emit_32(3257655309);
+emit_32(1094008281);
+emit_32(1121632256);
+emit_32(3256631296);
+emit_32(1093682489);
+emit_32(1121632256);
+emit_32(3255607309);
+emit_32(1094449313);
+emit_32(1121632256);
+emit_32(3254386688);
+emit_32(1095241512);
+emit_32(1121632256);
+emit_32(3252338714);
+emit_32(1095115158);
+emit_32(1121632256);
+emit_32(3250290688);
+emit_32(1095038088);
+emit_32(1121632256);
+emit_32(3248242714);
+emit_32(1095359791);
+emit_32(1121632256);
+emit_32(3245998080);
+emit_32(1096573937);
+emit_32(1121632256);
+emit_32(3241902132);
+emit_32(1097191129);
+emit_32(1121632256);
+emit_32(3237609472);
+emit_32(1097678717);
+emit_32(1121632256);
+emit_32(3229220864);
+emit_32(1098487169);
+emit_32(1121632256);
+emit_32(0);
+emit_32(1099111334);
+emit_32(1121632256);
+emit_32(1081737216);
+emit_32(1099957115);
+emit_32(1121632256);
+emit_32(3279552512);
+emit_32(1084728636);
+emit_32(1121120289);
+emit_32(3279296528);
+emit_32(1077536872);
+emit_32(1121120289);
+emit_32(3279040545);
+emit_32(1049067472);
+emit_32(1121120289);
+emit_32(3278784496);
+emit_32(3197365821);
+emit_32(1121120289);
+emit_32(3278528512);
+emit_32(3211331864);
+emit_32(1121120289);
+emit_32(3278272528);
+emit_32(3222095455);
+emit_32(1121120289);
+emit_32(3278016545);
+emit_32(3228342367);
+emit_32(1121120289);
+emit_32(3277760496);
+emit_32(3232161071);
+emit_32(1121120289);
+emit_32(3277504512);
+emit_32(3233959337);
+emit_32(1121120289);
+emit_32(3277248528);
+emit_32(3232603256);
+emit_32(1121120289);
+emit_32(3276992545);
+emit_32(3231337561);
+emit_32(1121120289);
+emit_32(3276736496);
+emit_32(3226343236);
+emit_32(1121120289);
+emit_32(3276480512);
+emit_32(3222401429);
+emit_32(1121120289);
+emit_32(3276224528);
+emit_32(3217196088);
+emit_32(1121120289);
+emit_32(3275968545);
+emit_32(3174963708);
+emit_32(1121120289);
+emit_32(3275712496);
+emit_32(1071520772);
+emit_32(1121120289);
+emit_32(3275456512);
+emit_32(1076782233);
+emit_32(1121120289);
+emit_32(3275200528);
+emit_32(1082969209);
+emit_32(1121120289);
+emit_32(3274944545);
+emit_32(1085234364);
+emit_32(1121120289);
+emit_32(3274688496);
+emit_32(1089004246);
+emit_32(1121120289);
+emit_32(3274432512);
+emit_32(1092733108);
+emit_32(1121120289);
+emit_32(3274176528);
+emit_32(1095820326);
+emit_32(1121120289);
+emit_32(3273920545);
+emit_32(1098604085);
+emit_32(1121120289);
+emit_32(3273664496);
+emit_32(1099874855);
+emit_32(1121120289);
+emit_32(3273408512);
+emit_32(1100920809);
+emit_32(1121120289);
+emit_32(3273152528);
+emit_32(1101878893);
+emit_32(1121120289);
+emit_32(3272896545);
+emit_32(1103179284);
+emit_32(1121120289);
+emit_32(3272640496);
+emit_32(1105420196);
+emit_32(1121120289);
+emit_32(3272384512);
+emit_32(1107134828);
+emit_32(1121120289);
+emit_32(3272128528);
+emit_32(1107920526);
+emit_32(1121120289);
+emit_32(3271872545);
+emit_32(1108056762);
+emit_32(1121120289);
+emit_32(3271616496);
+emit_32(1107769583);
+emit_32(1121120289);
+emit_32(3271163904);
+emit_32(1107905112);
+emit_32(1121120289);
+emit_32(3270651937);
+emit_32(1108241573);
+emit_32(1121120289);
+emit_32(3270139970);
+emit_32(1108859578);
+emit_32(1121120289);
+emit_32(3269627871);
+emit_32(1109044049);
+emit_32(1121120289);
+emit_32(3269115904);
+emit_32(1108576331);
+emit_32(1121120289);
+emit_32(3268603937);
+emit_32(1107973793);
+emit_32(1121120289);
+emit_32(3268091970);
+emit_32(1107354478);
+emit_32(1121120289);
+emit_32(3267579911);
+emit_32(1106448273);
+emit_32(1121120289);
+emit_32(3267067904);
+emit_32(1106470135);
+emit_32(1121120289);
+emit_32(3266555911);
+emit_32(1106654580);
+emit_32(1121120289);
+emit_32(3266043904);
+emit_32(1106160386);
+emit_32(1121120289);
+emit_32(3265531911);
+emit_32(1105210009);
+emit_32(1121120289);
+emit_32(3265019904);
+emit_32(1104004514);
+emit_32(1121120289);
+emit_32(3264507911);
+emit_32(1102526231);
+emit_32(1121120289);
+emit_32(3263995904);
+emit_32(1101481692);
+emit_32(1121120289);
+emit_32(3263483911);
+emit_32(1100090337);
+emit_32(1121120289);
+emit_32(3262775296);
+emit_32(1099268882);
+emit_32(1121120289);
+emit_32(3261751309);
+emit_32(1098701288);
+emit_32(1121120289);
+emit_32(3260727296);
+emit_32(1097681968);
+emit_32(1121120289);
+emit_32(3259703309);
+emit_32(1096561774);
+emit_32(1121120289);
+emit_32(3258679296);
+emit_32(1095766953);
+emit_32(1121120289);
+emit_32(3257655309);
+emit_32(1094631765);
+emit_32(1121120289);
+emit_32(3256631296);
+emit_32(1094735364);
+emit_32(1121120289);
+emit_32(3255607309);
+emit_32(1094999291);
+emit_32(1121120289);
+emit_32(3254386688);
+emit_32(1095377722);
+emit_32(1121120289);
+emit_32(3252338714);
+emit_32(1095433191);
+emit_32(1121120289);
+emit_32(3250290688);
+emit_32(1095107399);
+emit_32(1121120289);
+emit_32(3248242714);
+emit_32(1095777544);
+emit_32(1121120289);
+emit_32(3245998080);
+emit_32(1096857472);
+emit_32(1121120289);
+emit_32(3241902132);
+emit_32(1097446352);
+emit_32(1121120289);
+emit_32(3237609472);
+emit_32(1097974940);
+emit_32(1121120289);
+emit_32(3229220864);
+emit_32(1098736416);
+emit_32(1121120289);
+emit_32(0);
+emit_32(1099338613);
+emit_32(1121120289);
+emit_32(1081737216);
+emit_32(1099935672);
+emit_32(1121120289);
+emit_32(3279552512);
+emit_32(1082712497);
+emit_32(1120608322);
+emit_32(3279296528);
+emit_32(1077291841);
+emit_32(1120608322);
+emit_32(3279040545);
+emit_32(1073741866);
+emit_32(1120608322);
+emit_32(3278784496);
+emit_32(1070338230);
+emit_32(1120608322);
+emit_32(3278528512);
+emit_32(1056781669);
+emit_32(1120608322);
+emit_32(3278272528);
+emit_32(3219431904);
+emit_32(1120608322);
+emit_32(3278016545);
+emit_32(3224861095);
+emit_32(1120608322);
+emit_32(3277760496);
+emit_32(3231719746);
+emit_32(1120608322);
+emit_32(3277504512);
+emit_32(3233844476);
+emit_32(1120608322);
+emit_32(3277248528);
+emit_32(3232334736);
+emit_32(1120608322);
+emit_32(3276992545);
+emit_32(3229801544);
+emit_32(1120608322);
+emit_32(3276736496);
+emit_32(3228638233);
+emit_32(1120608322);
+emit_32(3276480512);
+emit_32(3223489306);
+emit_32(1120608322);
+emit_32(3276224528);
+emit_32(3213418446);
+emit_32(1120608322);
+emit_32(3275968545);
+emit_32(3202678964);
+emit_32(1120608322);
+emit_32(3275712496);
+emit_32(1069745659);
+emit_32(1120608322);
+emit_32(3275456512);
+emit_32(1079646691);
+emit_32(1120608322);
+emit_32(3275200528);
+emit_32(1083145831);
+emit_32(1120608322);
+emit_32(3274944545);
+emit_32(1087983583);
+emit_32(1120608322);
+emit_32(3274688496);
+emit_32(1091238804);
+emit_32(1120608322);
+emit_32(3274432512);
+emit_32(1093823208);
+emit_32(1120608322);
+emit_32(3274176528);
+emit_32(1097286130);
+emit_32(1120608322);
+emit_32(3273920545);
+emit_32(1099742472);
+emit_32(1120608322);
+emit_32(3273664496);
+emit_32(1100695890);
+emit_32(1120608322);
+emit_32(3273408512);
+emit_32(1101406876);
+emit_32(1120608322);
+emit_32(3273152528);
+emit_32(1102194042);
+emit_32(1120608322);
+emit_32(3272896545);
+emit_32(1103115112);
+emit_32(1120608322);
+emit_32(3272640496);
+emit_32(1105064414);
+emit_32(1120608322);
+emit_32(3272384512);
+emit_32(1107025042);
+emit_32(1120608322);
+emit_32(3272128528);
+emit_32(1107923960);
+emit_32(1120608322);
+emit_32(3271872545);
+emit_32(1108173154);
+emit_32(1120608322);
+emit_32(3271616496);
+emit_32(1108080381);
+emit_32(1120608322);
+emit_32(3271163904);
+emit_32(1107879605);
+emit_32(1120608322);
+emit_32(3270651937);
+emit_32(1108128956);
+emit_32(1120608322);
+emit_32(3270139970);
+emit_32(1108688110);
+emit_32(1120608322);
+emit_32(3269627871);
+emit_32(1108797188);
+emit_32(1120608322);
+emit_32(3269115904);
+emit_32(1108405938);
+emit_32(1120608322);
+emit_32(3268603937);
+emit_32(1107934577);
+emit_32(1120608322);
+emit_32(3268091970);
+emit_32(1107323021);
+emit_32(1120608322);
+emit_32(3267579911);
+emit_32(1106810136);
+emit_32(1120608322);
+emit_32(3267067904);
+emit_32(1106638904);
+emit_32(1120608322);
+emit_32(3266555911);
+emit_32(1106673664);
+emit_32(1120608322);
+emit_32(3266043904);
+emit_32(1106080013);
+emit_32(1120608322);
+emit_32(3265531911);
+emit_32(1104833308);
+emit_32(1120608322);
+emit_32(3265019904);
+emit_32(1103684593);
+emit_32(1120608322);
+emit_32(3264507911);
+emit_32(1102392852);
+emit_32(1120608322);
+emit_32(3263995904);
+emit_32(1101073744);
+emit_32(1120608322);
+emit_32(3263483911);
+emit_32(1099963145);
+emit_32(1120608322);
+emit_32(3262775296);
+emit_32(1099506070);
+emit_32(1120608322);
+emit_32(3261751309);
+emit_32(1099320997);
+emit_32(1120608322);
+emit_32(3260727296);
+emit_32(1098604295);
+emit_32(1120608322);
+emit_32(3259703309);
+emit_32(1097529295);
+emit_32(1120608322);
+emit_32(3258679296);
+emit_32(1096142134);
+emit_32(1120608322);
+emit_32(3257655309);
+emit_32(1094301568);
+emit_32(1120608322);
+emit_32(3256631296);
+emit_32(1094016985);
+emit_32(1120608322);
+emit_32(3255607309);
+emit_32(1095156577);
+emit_32(1120608322);
+emit_32(3254386688);
+emit_32(1095833223);
+emit_32(1120608322);
+emit_32(3252338714);
+emit_32(1095183630);
+emit_32(1120608322);
+emit_32(3250290688);
+emit_32(1094555114);
+emit_32(1120608322);
+emit_32(3248242714);
+emit_32(1096488059);
+emit_32(1120608322);
+emit_32(3245998080);
+emit_32(1097556453);
+emit_32(1120608322);
+emit_32(3241902132);
+emit_32(1097820275);
+emit_32(1120608322);
+emit_32(3237609472);
+emit_32(1097925237);
+emit_32(1120608322);
+emit_32(3229220864);
+emit_32(1098971297);
+emit_32(1120608322);
+emit_32(0);
+emit_32(1099474823);
+emit_32(1120608322);
+emit_32(1081737216);
+emit_32(1099802817);
+emit_32(1120608322);
+emit_32(3279552512);
+emit_32(1082649645);
+emit_32(1120096263);
+emit_32(3279296528);
+emit_32(1081824919);
+emit_32(1120096263);
+emit_32(3279040545);
+emit_32(1078459284);
+emit_32(1120096263);
+emit_32(3278784496);
+emit_32(1074050399);
+emit_32(1120096263);
+emit_32(3278528512);
+emit_32(1053874077);
+emit_32(1120096263);
+emit_32(3278272528);
+emit_32(3211237089);
+emit_32(1120096263);
+emit_32(3278016545);
+emit_32(3223833574);
+emit_32(1120096263);
+emit_32(3277760496);
+emit_32(3229161263);
+emit_32(1120096263);
+emit_32(3277504512);
+emit_32(3233010292);
+emit_32(1120096263);
+emit_32(3277248528);
+emit_32(3229615695);
+emit_32(1120096263);
+emit_32(3276992545);
+emit_32(3222904913);
+emit_32(1120096263);
+emit_32(3276736496);
+emit_32(3222905752);
+emit_32(1120096263);
+emit_32(3276480512);
+emit_32(3220913919);
+emit_32(1120096263);
+emit_32(3276224528);
+emit_32(3216868597);
+emit_32(1120096263);
+emit_32(3275968545);
+emit_32(3184537459);
+emit_32(1120096263);
+emit_32(3275712496);
+emit_32(1071525805);
+emit_32(1120096263);
+emit_32(3275456512);
+emit_32(1080770303);
+emit_32(1120096263);
+emit_32(3275200528);
+emit_32(1084483709);
+emit_32(1120096263);
+emit_32(3274944545);
+emit_32(1089756453);
+emit_32(1120096263);
+emit_32(3274688496);
+emit_32(1092796967);
+emit_32(1120096263);
+emit_32(3274432512);
+emit_32(1095008204);
+emit_32(1120096263);
+emit_32(3274176528);
+emit_32(1098158021);
+emit_32(1120096263);
+emit_32(3273920545);
+emit_32(1100073298);
+emit_32(1120096263);
+emit_32(3273664496);
+emit_32(1101265424);
+emit_32(1120096263);
+emit_32(3273408512);
+emit_32(1101989413);
+emit_32(1120096263);
+emit_32(3273152528);
+emit_32(1102698565);
+emit_32(1120096263);
+emit_32(3272896545);
+emit_32(1103242776);
+emit_32(1120096263);
+emit_32(3272640496);
+emit_32(1105297356);
+emit_32(1120096263);
+emit_32(3272384512);
+emit_32(1106908126);
+emit_32(1120096263);
+emit_32(3272128528);
+emit_32(1107640530);
+emit_32(1120096263);
+emit_32(3271872545);
+emit_32(1108166312);
+emit_32(1120096263);
+emit_32(3271616496);
+emit_32(1108109138);
+emit_32(1120096263);
+emit_32(3271163904);
+emit_32(1108037206);
+emit_32(1120096263);
+emit_32(3270651937);
+emit_32(1107897483);
+emit_32(1120096263);
+emit_32(3270139970);
+emit_32(1108473492);
+emit_32(1120096263);
+emit_32(3269627871);
+emit_32(1108658461);
+emit_32(1120096263);
+emit_32(3269115904);
+emit_32(1108380326);
+emit_32(1120096263);
+emit_32(3268603937);
+emit_32(1107921522);
+emit_32(1120096263);
+emit_32(3268091970);
+emit_32(1106710574);
+emit_32(1120096263);
+emit_32(3267579911);
+emit_32(1106304880);
+emit_32(1120096263);
+emit_32(3267067904);
+emit_32(1106736788);
+emit_32(1120096263);
+emit_32(3266555911);
+emit_32(1106706484);
+emit_32(1120096263);
+emit_32(3266043904);
+emit_32(1105732829);
+emit_32(1120096263);
+emit_32(3265531911);
+emit_32(1104837607);
+emit_32(1120096263);
+emit_32(3265019904);
+emit_32(1103630801);
+emit_32(1120096263);
+emit_32(3264507911);
+emit_32(1101868093);
+emit_32(1120096263);
+emit_32(3263995904);
+emit_32(1100220622);
+emit_32(1120096263);
+emit_32(3263483911);
+emit_32(1100302254);
+emit_32(1120096263);
+emit_32(3262775296);
+emit_32(1100039691);
+emit_32(1120096263);
+emit_32(3261751309);
+emit_32(1099705090);
+emit_32(1120096263);
+emit_32(3260727296);
+emit_32(1099085329);
+emit_32(1120096263);
+emit_32(3259703309);
+emit_32(1097718982);
+emit_32(1120096263);
+emit_32(3258679296);
+emit_32(1096390122);
+emit_32(1120096263);
+emit_32(3257655309);
+emit_32(1094580175);
+emit_32(1120096263);
+emit_32(3256631296);
+emit_32(1094186959);
+emit_32(1120096263);
+emit_32(3255607309);
+emit_32(1094206987);
+emit_32(1120096263);
+emit_32(3254386688);
+emit_32(1095299288);
+emit_32(1120096263);
+emit_32(3252338714);
+emit_32(1094941095);
+emit_32(1120096263);
+emit_32(3250290688);
+emit_32(1093925968);
+emit_32(1120096263);
+emit_32(3248242714);
+emit_32(1096010747);
+emit_32(1120096263);
+emit_32(3245998080);
+emit_32(1096357826);
+emit_32(1120096263);
+emit_32(3241902132);
+emit_32(1096902246);
+emit_32(1120096263);
+emit_32(3237609472);
+emit_32(1097501612);
+emit_32(1120096263);
+emit_32(3229220864);
+emit_32(1097992765);
+emit_32(1120096263);
+emit_32(0);
+emit_32(1098723413);
+emit_32(1120096263);
+emit_32(1081737216);
+emit_32(1099965451);
+emit_32(1120096263);
+emit_32(3279552512);
+emit_32(1084093765);
+emit_32(1119584256);
+emit_32(3279296528);
+emit_32(1080036510);
+emit_32(1119584256);
+emit_32(3279040545);
+emit_32(1077455125);
+emit_32(1119584256);
+emit_32(3278784496);
+emit_32(1074567724);
+emit_32(1119584256);
+emit_32(3278528512);
+emit_32(1069156863);
+emit_32(1119584256);
+emit_32(3278272528);
+emit_32(3189431842);
+emit_32(1119584256);
+emit_32(3278016545);
+emit_32(3213554929);
+emit_32(1119584256);
+emit_32(3277760496);
+emit_32(3222450418);
+emit_32(1119584256);
+emit_32(3277504512);
+emit_32(3228929486);
+emit_32(1119584256);
+emit_32(3277248528);
+emit_32(3224323217);
+emit_32(1119584256);
+emit_32(3276992545);
+emit_32(3222046465);
+emit_32(1119584256);
+emit_32(3276736496);
+emit_32(3194181137);
+emit_32(1119584256);
+emit_32(3276480512);
+emit_32(3186726281);
+emit_32(1119584256);
+emit_32(3276224528);
+emit_32(3191098290);
+emit_32(1119584256);
+emit_32(3275968545);
+emit_32(1068055354);
+emit_32(1119584256);
+emit_32(3275712496);
+emit_32(1076438426);
+emit_32(1119584256);
+emit_32(3275456512);
+emit_32(1080984464);
+emit_32(1119584256);
+emit_32(3275200528);
+emit_32(1085878651);
+emit_32(1119584256);
+emit_32(3274944545);
+emit_32(1091668447);
+emit_32(1119584256);
+emit_32(3274688496);
+emit_32(1094171545);
+emit_32(1119584256);
+emit_32(3274432512);
+emit_32(1095963561);
+emit_32(1119584256);
+emit_32(3274176528);
+emit_32(1098572104);
+emit_32(1119584256);
+emit_32(3273920545);
+emit_32(1099948045);
+emit_32(1119584256);
+emit_32(3273664496);
+emit_32(1101407873);
+emit_32(1119584256);
+emit_32(3273408512);
+emit_32(1102835876);
+emit_32(1119584256);
+emit_32(3273152528);
+emit_32(1103744310);
+emit_32(1119584256);
+emit_32(3272896545);
+emit_32(1104117655);
+emit_32(1119584256);
+emit_32(3272640496);
+emit_32(1105300868);
+emit_32(1119584256);
+emit_32(3272384512);
+emit_32(1107290803);
+emit_32(1119584256);
+emit_32(3272128528);
+emit_32(1107707508);
+emit_32(1119584256);
+emit_32(3271872545);
+emit_32(1108008685);
+emit_32(1119584256);
+emit_32(3271616496);
+emit_32(1108120935);
+emit_32(1119584256);
+emit_32(3271163904);
+emit_32(1108077052);
+emit_32(1119584256);
+emit_32(3270651937);
+emit_32(1107924641);
+emit_32(1119584256);
+emit_32(3270139970);
+emit_32(1108147044);
+emit_32(1119584256);
+emit_32(3269627871);
+emit_32(1108350311);
+emit_32(1119584256);
+emit_32(3269115904);
+emit_32(1108146651);
+emit_32(1119584256);
+emit_32(3268603937);
+emit_32(1107677466);
+emit_32(1119584256);
+emit_32(3268091970);
+emit_32(1106442034);
+emit_32(1119584256);
+emit_32(3267579911);
+emit_32(1106619400);
+emit_32(1119584256);
+emit_32(3267067904);
+emit_32(1106902463);
+emit_32(1119584256);
+emit_32(3266555911);
+emit_32(1106534780);
+emit_32(1119584256);
+emit_32(3266043904);
+emit_32(1105512733);
+emit_32(1119584256);
+emit_32(3265531911);
+emit_32(1104509036);
+emit_32(1119584256);
+emit_32(3265019904);
+emit_32(1103188250);
+emit_32(1119584256);
+emit_32(3264507911);
+emit_32(1101665927);
+emit_32(1119584256);
+emit_32(3263995904);
+emit_32(1100910743);
+emit_32(1119584256);
+emit_32(3263483911);
+emit_32(1100740139);
+emit_32(1119584256);
+emit_32(3262775296);
+emit_32(1100127981);
+emit_32(1119584256);
+emit_32(3261751309);
+emit_32(1100010121);
+emit_32(1119584256);
+emit_32(3260727296);
+emit_32(1099477968);
+emit_32(1119584256);
+emit_32(3259703309);
+emit_32(1097874171);
+emit_32(1119584256);
+emit_32(3258679296);
+emit_32(1096345453);
+emit_32(1119584256);
+emit_32(3257655309);
+emit_32(1093686893);
+emit_32(1119584256);
+emit_32(3256631296);
+emit_32(1093873015);
+emit_32(1119584256);
+emit_32(3255607309);
+emit_32(1093045794);
+emit_32(1119584256);
+emit_32(3254386688);
+emit_32(1093896189);
+emit_32(1119584256);
+emit_32(3252338714);
+emit_32(1094140717);
+emit_32(1119584256);
+emit_32(3250290688);
+emit_32(1094085666);
+emit_32(1119584256);
+emit_32(3248242714);
+emit_32(1094959130);
+emit_32(1119584256);
+emit_32(3245998080);
+emit_32(1096322698);
+emit_32(1119584256);
+emit_32(3241902132);
+emit_32(1097101161);
+emit_32(1119584256);
+emit_32(3237609472);
+emit_32(1096857367);
+emit_32(1119584256);
+emit_32(3229220864);
+emit_32(1096976905);
+emit_32(1119584256);
+emit_32(0);
+emit_32(1098201537);
+emit_32(1119584256);
+emit_32(1081737216);
+emit_32(1099519545);
+emit_32(1119584256);
+emit_32(3279552512);
+emit_32(1085076910);
+emit_32(1119072263);
+emit_32(3279296528);
+emit_32(1081809987);
+emit_32(1119072263);
+emit_32(3279040545);
+emit_32(1077014597);
+emit_32(1119072263);
+emit_32(3278784496);
+emit_32(1075155304);
+emit_32(1119072263);
+emit_32(3278528512);
+emit_32(1069179596);
+emit_32(1119072263);
+emit_32(3278272528);
+emit_32(1056541889);
+emit_32(1119072263);
+emit_32(3278016545);
+emit_32(1062243693);
+emit_32(1119072263);
+emit_32(3277760496);
+emit_32(3195663773);
+emit_32(1119072263);
+emit_32(3277504512);
+emit_32(3221620659);
+emit_32(1119072263);
+emit_32(3277248528);
+emit_32(3216900390);
+emit_32(1119072263);
+emit_32(3276992545);
+emit_32(3207733134);
+emit_32(1119072263);
+emit_32(3276736496);
+emit_32(1061029962);
+emit_32(1119072263);
+emit_32(3276480512);
+emit_32(1067919627);
+emit_32(1119072263);
+emit_32(3276224528);
+emit_32(1069464557);
+emit_32(1119072263);
+emit_32(3275968545);
+emit_32(1076127125);
+emit_32(1119072263);
+emit_32(3275712496);
+emit_32(1080969365);
+emit_32(1119072263);
+emit_32(3275456512);
+emit_32(1083510358);
+emit_32(1119072263);
+emit_32(3275200528);
+emit_32(1088854216);
+emit_32(1119072263);
+emit_32(3274944545);
+emit_32(1092461118);
+emit_32(1119072263);
+emit_32(3274688496);
+emit_32(1095602746);
+emit_32(1119072263);
+emit_32(3274432512);
+emit_32(1097477495);
+emit_32(1119072263);
+emit_32(3274176528);
+emit_32(1099224108);
+emit_32(1119072263);
+emit_32(3273920545);
+emit_32(1100863662);
+emit_32(1119072263);
+emit_32(3273664496);
+emit_32(1102423943);
+emit_32(1119072263);
+emit_32(3273408512);
+emit_32(1103322677);
+emit_32(1119072263);
+emit_32(3273152528);
+emit_32(1104096054);
+emit_32(1119072263);
+emit_32(3272896545);
+emit_32(1104740300);
+emit_32(1119072263);
+emit_32(3272640496);
+emit_32(1105730627);
+emit_32(1119072263);
+emit_32(3272384512);
+emit_32(1107106673);
+emit_32(1119072263);
+emit_32(3272128528);
+emit_32(1107798052);
+emit_32(1119072263);
+emit_32(3271872545);
+emit_32(1107907497);
+emit_32(1119072263);
+emit_32(3271616496);
+emit_32(1108367272);
+emit_32(1119072263);
+emit_32(3271163904);
+emit_32(1108217273);
+emit_32(1119072263);
+emit_32(3270651937);
+emit_32(1108004962);
+emit_32(1119072263);
+emit_32(3270139970);
+emit_32(1107737890);
+emit_32(1119072263);
+emit_32(3269627871);
+emit_32(1107889331);
+emit_32(1119072263);
+emit_32(3269115904);
+emit_32(1107876826);
+emit_32(1119072263);
+emit_32(3268603937);
+emit_32(1107372933);
+emit_32(1119072263);
+emit_32(3268091970);
+emit_32(1106504004);
+emit_32(1119072263);
+emit_32(3267579911);
+emit_32(1106696575);
+emit_32(1119072263);
+emit_32(3267067904);
+emit_32(1107019275);
+emit_32(1119072263);
+emit_32(3266555911);
+emit_32(1106385201);
+emit_32(1119072263);
+emit_32(3266043904);
+emit_32(1105441482);
+emit_32(1119072263);
+emit_32(3265531911);
+emit_32(1104471235);
+emit_32(1119072263);
+emit_32(3265019904);
+emit_32(1103193965);
+emit_32(1119072263);
+emit_32(3264507911);
+emit_32(1102302518);
+emit_32(1119072263);
+emit_32(3263995904);
+emit_32(1101174984);
+emit_32(1119072263);
+emit_32(3263483911);
+emit_32(1100736365);
+emit_32(1119072263);
+emit_32(3262775296);
+emit_32(1100294232);
+emit_32(1119072263);
+emit_32(3261751309);
+emit_32(1099900282);
+emit_32(1119072263);
+emit_32(3260727296);
+emit_32(1099000447);
+emit_32(1119072263);
+emit_32(3259703309);
+emit_32(1098125096);
+emit_32(1119072263);
+emit_32(3258679296);
+emit_32(1096310535);
+emit_32(1119072263);
+emit_32(3257655309);
+emit_32(1094547669);
+emit_32(1119072263);
+emit_32(3256631296);
+emit_32(1092850024);
+emit_32(1119072263);
+emit_32(3255607309);
+emit_32(1092138471);
+emit_32(1119072263);
+emit_32(3254386688);
+emit_32(1092338194);
+emit_32(1119072263);
+emit_32(3252338714);
+emit_32(1093356172);
+emit_32(1119072263);
+emit_32(3250290688);
+emit_32(1094627885);
+emit_32(1119072263);
+emit_32(3248242714);
+emit_32(1095982750);
+emit_32(1119072263);
+emit_32(3245998080);
+emit_32(1095846540);
+emit_32(1119072263);
+emit_32(3241902132);
+emit_32(1095563949);
+emit_32(1119072263);
+emit_32(3237609472);
+emit_32(1095549269);
+emit_32(1119072263);
+emit_32(3229220864);
+emit_32(1096920492);
+emit_32(1119072263);
+emit_32(0);
+emit_32(1097824888);
+emit_32(1119072263);
+emit_32(1081737216);
+emit_32(1098532992);
+emit_32(1119072263);
+emit_32(3279552512);
+emit_32(1086774827);
+emit_32(1118560256);
+emit_32(3279296528);
+emit_32(1083515077);
+emit_32(1118560256);
+emit_32(3279040545);
+emit_32(1079457780);
+emit_32(1118560256);
+emit_32(3278784496);
+emit_32(1073525901);
+emit_32(1118560256);
+emit_32(3278528512);
+emit_32(1058489607);
+emit_32(1118560256);
+emit_32(3278272528);
+emit_32(1073793078);
+emit_32(1118560256);
+emit_32(3278016545);
+emit_32(1074379023);
+emit_32(1118560256);
+emit_32(3277760496);
+emit_32(1061663235);
+emit_32(1118560256);
+emit_32(3277504512);
+emit_32(3201930600);
+emit_32(1118560256);
+emit_32(3277248528);
+emit_32(3204664162);
+emit_32(1118560256);
+emit_32(3276992545);
+emit_32(995186421);
+emit_32(1118560256);
+emit_32(3276736496);
+emit_32(1065832625);
+emit_32(1118560256);
+emit_32(3276480512);
+emit_32(1074242037);
+emit_32(1118560256);
+emit_32(3276224528);
+emit_32(1075791245);
+emit_32(1118560256);
+emit_32(3275968545);
+emit_32(1081708653);
+emit_32(1118560256);
+emit_32(3275712496);
+emit_32(1085735415);
+emit_32(1118560256);
+emit_32(3275456512);
+emit_32(1087198703);
+emit_32(1118560256);
+emit_32(3275200528);
+emit_32(1090399397);
+emit_32(1118560256);
+emit_32(3274944545);
+emit_32(1093618840);
+emit_32(1118560256);
+emit_32(3274688496);
+emit_32(1095966497);
+emit_32(1118560256);
+emit_32(3274432512);
+emit_32(1098679792);
+emit_32(1118560256);
+emit_32(3274176528);
+emit_32(1099796369);
+emit_32(1118560256);
+emit_32(3273920545);
+emit_32(1101123342);
+emit_32(1118560256);
+emit_32(3273664496);
+emit_32(1102326582);
+emit_32(1118560256);
+emit_32(3273408512);
+emit_32(1103526783);
+emit_32(1118560256);
+emit_32(3273152528);
+emit_32(1104500018);
+emit_32(1118560256);
+emit_32(3272896545);
+emit_32(1105044544);
+emit_32(1118560256);
+emit_32(3272640496);
+emit_32(1105840518);
+emit_32(1118560256);
+emit_32(3272384512);
+emit_32(1107014661);
+emit_32(1118560256);
+emit_32(3272128528);
+emit_32(1107845579);
+emit_32(1118560256);
+emit_32(3271872545);
+emit_32(1108007295);
+emit_32(1118560256);
+emit_32(3271616496);
+emit_32(1108389711);
+emit_32(1118560256);
+emit_32(3271163904);
+emit_32(1108469167);
+emit_32(1118560256);
+emit_32(3270651937);
+emit_32(1108186681);
+emit_32(1118560256);
+emit_32(3270139970);
+emit_32(1107912425);
+emit_32(1118560256);
+emit_32(3269627871);
+emit_32(1107694060);
+emit_32(1118560256);
+emit_32(3269115904);
+emit_32(1107557771);
+emit_32(1118560256);
+emit_32(3268603937);
+emit_32(1107185212);
+emit_32(1118560256);
+emit_32(3268091970);
+emit_32(1106863509);
+emit_32(1118560256);
+emit_32(3267579911);
+emit_32(1106786176);
+emit_32(1118560256);
+emit_32(3267067904);
+emit_32(1107049998);
+emit_32(1118560256);
+emit_32(3266555911);
+emit_32(1106706117);
+emit_32(1118560256);
+emit_32(3266043904);
+emit_32(1105274287);
+emit_32(1118560256);
+emit_32(3265531911);
+emit_32(1104108375);
+emit_32(1118560256);
+emit_32(3265019904);
+emit_32(1103313974);
+emit_32(1118560256);
+emit_32(3264507911);
+emit_32(1102052537);
+emit_32(1118560256);
+emit_32(3263995904);
+emit_32(1101026348);
+emit_32(1118560256);
+emit_32(3263483911);
+emit_32(1100975912);
+emit_32(1118560256);
+emit_32(3262775296);
+emit_32(1100160329);
+emit_32(1118560256);
+emit_32(3261751309);
+emit_32(1099423862);
+emit_32(1118560256);
+emit_32(3260727296);
+emit_32(1098504471);
+emit_32(1118560256);
+emit_32(3259703309);
+emit_32(1097455580);
+emit_32(1118560256);
+emit_32(3258679296);
+emit_32(1095484886);
+emit_32(1118560256);
+emit_32(3257655309);
+emit_32(1094881011);
+emit_32(1118560256);
+emit_32(3256631296);
+emit_32(1092725768);
+emit_32(1118560256);
+emit_32(3255607309);
+emit_32(1092211609);
+emit_32(1118560256);
+emit_32(3254386688);
+emit_32(1092698400);
+emit_32(1118560256);
+emit_32(3252338714);
+emit_32(1092845620);
+emit_32(1118560256);
+emit_32(3250290688);
+emit_32(1094266651);
+emit_32(1118560256);
+emit_32(3248242714);
+emit_32(1094578287);
+emit_32(1118560256);
+emit_32(3245998080);
+emit_32(1094619916);
+emit_32(1118560256);
+emit_32(3241902132);
+emit_32(1094198493);
+emit_32(1118560256);
+emit_32(3237609472);
+emit_32(1096808294);
+emit_32(1118560256);
+emit_32(3229220864);
+emit_32(1097696857);
+emit_32(1118560256);
+emit_32(0);
+emit_32(1097643170);
+emit_32(1118560256);
+emit_32(1081737216);
+emit_32(1098479410);
+emit_32(1118560256);
+emit_32(3279552512);
+emit_32(1088302854);
+emit_32(1118048263);
+emit_32(3279296528);
+emit_32(1083747986);
+emit_32(1118048263);
+emit_32(3279040545);
+emit_32(1080542594);
+emit_32(1118048263);
+emit_32(3278784496);
+emit_32(1075852566);
+emit_32(1118048263);
+emit_32(3278528512);
+emit_32(1068737600);
+emit_32(1118048263);
+emit_32(3278272528);
+emit_32(1073988491);
+emit_32(1118048263);
+emit_32(3278016545);
+emit_32(1075493743);
+emit_32(1118048263);
+emit_32(3277760496);
+emit_32(1067344336);
+emit_32(1118048263);
+emit_32(3277504512);
+emit_32(1070348213);
+emit_32(1118048263);
+emit_32(3277248528);
+emit_32(1067476624);
+emit_32(1118048263);
+emit_32(3276992545);
+emit_32(1069849007);
+emit_32(1118048263);
+emit_32(3276736496);
+emit_32(1075129006);
+emit_32(1118048263);
+emit_32(3276480512);
+emit_32(1076245656);
+emit_32(1118048263);
+emit_32(3276224528);
+emit_32(1082664933);
+emit_32(1118048263);
+emit_32(3275968545);
+emit_32(1086033987);
+emit_32(1118048263);
+emit_32(3275712496);
+emit_32(1089567583);
+emit_32(1118048263);
+emit_32(3275456512);
+emit_32(1091286073);
+emit_32(1118048263);
+emit_32(3275200528);
+emit_32(1092256918);
+emit_32(1118048263);
+emit_32(3274944545);
+emit_32(1094223449);
+emit_32(1118048263);
+emit_32(3274688496);
+emit_32(1097132304);
+emit_32(1118048263);
+emit_32(3274432512);
+emit_32(1099059115);
+emit_32(1118048263);
+emit_32(3274176528);
+emit_32(1099766379);
+emit_32(1118048263);
+emit_32(3273920545);
+emit_32(1101236640);
+emit_32(1118048263);
+emit_32(3273664496);
+emit_32(1102554438);
+emit_32(1118048263);
+emit_32(3273408512);
+emit_32(1103664565);
+emit_32(1118048263);
+emit_32(3273152528);
+emit_32(1104878292);
+emit_32(1118048263);
+emit_32(3272896545);
+emit_32(1105616175);
+emit_32(1118048263);
+emit_32(3272640496);
+emit_32(1106382684);
+emit_32(1118048263);
+emit_32(3272384512);
+emit_32(1107450606);
+emit_32(1118048263);
+emit_32(3272128528);
+emit_32(1107817503);
+emit_32(1118048263);
+emit_32(3271872545);
+emit_32(1107947369);
+emit_32(1118048263);
+emit_32(3271616496);
+emit_32(1108283805);
+emit_32(1118048263);
+emit_32(3271163904);
+emit_32(1108371099);
+emit_32(1118048263);
+emit_32(3270651937);
+emit_32(1108326954);
+emit_32(1118048263);
+emit_32(3270139970);
+emit_32(1108075217);
+emit_32(1118048263);
+emit_32(3269627871);
+emit_32(1107641945);
+emit_32(1118048263);
+emit_32(3269115904);
+emit_32(1107268836);
+emit_32(1118048263);
+emit_32(3268603937);
+emit_32(1107004595);
+emit_32(1118048263);
+emit_32(3268091970);
+emit_32(1106919660);
+emit_32(1118048263);
+emit_32(3267579911);
+emit_32(1107317228);
+emit_32(1118048263);
+emit_32(3267067904);
+emit_32(1106983623);
+emit_32(1118048263);
+emit_32(3266555911);
+emit_32(1106392855);
+emit_32(1118048263);
+emit_32(3266043904);
+emit_32(1105271141);
+emit_32(1118048263);
+emit_32(3265531911);
+emit_32(1103878632);
+emit_32(1118048263);
+emit_32(3265019904);
+emit_32(1103197949);
+emit_32(1118048263);
+emit_32(3264507911);
+emit_32(1102375708);
+emit_32(1118048263);
+emit_32(3263995904);
+emit_32(1100616040);
+emit_32(1118048263);
+emit_32(3263483911);
+emit_32(1100311953);
+emit_32(1118048263);
+emit_32(3262775296);
+emit_32(1099845547);
+emit_32(1118048263);
+emit_32(3261751309);
+emit_32(1099214619);
+emit_32(1118048263);
+emit_32(3260727296);
+emit_32(1097535901);
+emit_32(1118048263);
+emit_32(3259703309);
+emit_32(1095712847);
+emit_32(1118048263);
+emit_32(3258679296);
+emit_32(1094870840);
+emit_32(1118048263);
+emit_32(3257655309);
+emit_32(1094035230);
+emit_32(1118048263);
+emit_32(3256631296);
+emit_32(1092438144);
+emit_32(1118048263);
+emit_32(3255607309);
+emit_32(1092567024);
+emit_32(1118048263);
+emit_32(3254386688);
+emit_32(1093416360);
+emit_32(1118048263);
+emit_32(3252338714);
+emit_32(1092845516);
+emit_32(1118048263);
+emit_32(3250290688);
+emit_32(1092728599);
+emit_32(1118048263);
+emit_32(3248242714);
+emit_32(1093978292);
+emit_32(1118048263);
+emit_32(3245998080);
+emit_32(1094248091);
+emit_32(1118048263);
+emit_32(3241902132);
+emit_32(1096725352);
+emit_32(1118048263);
+emit_32(3237609472);
+emit_32(1098118070);
+emit_32(1118048263);
+emit_32(3229220864);
+emit_32(1098579024);
+emit_32(1118048263);
+emit_32(0);
+emit_32(1098875562);
+emit_32(1118048263);
+emit_32(1081737216);
+emit_32(1099413271);
+emit_32(1118048263);
+emit_32(3279552512);
+emit_32(1087158039);
+emit_32(1117536256);
+emit_32(3279296528);
+emit_32(1084423731);
+emit_32(1117536256);
+emit_32(3279040545);
+emit_32(1083252471);
+emit_32(1117536256);
+emit_32(3278784496);
+emit_32(1080977921);
+emit_32(1117536256);
+emit_32(3278528512);
+emit_32(1078047193);
+emit_32(1117536256);
+emit_32(3278272528);
+emit_32(1078022405);
+emit_32(1117536256);
+emit_32(3278016545);
+emit_32(1081630052);
+emit_32(1117536256);
+emit_32(3277760496);
+emit_32(1083124105);
+emit_32(1117536256);
+emit_32(3277504512);
+emit_32(1081459553);
+emit_32(1117536256);
+emit_32(3277248528);
+emit_32(1076823379);
+emit_32(1117536256);
+emit_32(3276992545);
+emit_32(1083284243);
+emit_32(1117536256);
+emit_32(3276736496);
+emit_32(1084323613);
+emit_32(1117536256);
+emit_32(3276480512);
+emit_32(1083093801);
+emit_32(1117536256);
+emit_32(3276224528);
+emit_32(1084912430);
+emit_32(1117536256);
+emit_32(3275968545);
+emit_32(1088711106);
+emit_32(1117536256);
+emit_32(3275712496);
+emit_32(1091460892);
+emit_32(1117536256);
+emit_32(3275456512);
+emit_32(1093026290);
+emit_32(1117536256);
+emit_32(3275200528);
+emit_32(1094050539);
+emit_32(1117536256);
+emit_32(3274944545);
+emit_32(1096188481);
+emit_32(1117536256);
+emit_32(3274688496);
+emit_32(1099085539);
+emit_32(1117536256);
+emit_32(3274432512);
+emit_32(1099851891);
+emit_32(1117536256);
+emit_32(3274176528);
+emit_32(1100504367);
+emit_32(1117536256);
+emit_32(3273920545);
+emit_32(1101748136);
+emit_32(1117536256);
+emit_32(3273664496);
+emit_32(1102868644);
+emit_32(1117536256);
+emit_32(3273408512);
+emit_32(1103833491);
+emit_32(1117536256);
+emit_32(3273152528);
+emit_32(1104656833);
+emit_32(1117536256);
+emit_32(3272896545);
+emit_32(1105628706);
+emit_32(1117536256);
+emit_32(3272640496);
+emit_32(1107011043);
+emit_32(1117536256);
+emit_32(3272384512);
+emit_32(1107650124);
+emit_32(1117536256);
+emit_32(3272128528);
+emit_32(1107880732);
+emit_32(1117536256);
+emit_32(3271872545);
+emit_32(1107976887);
+emit_32(1117536256);
+emit_32(3271616496);
+emit_32(1108276648);
+emit_32(1117536256);
+emit_32(3271163904);
+emit_32(1108202645);
+emit_32(1117536256);
+emit_32(3270651937);
+emit_32(1108292036);
+emit_32(1117536256);
+emit_32(3270139970);
+emit_32(1107942205);
+emit_32(1117536256);
+emit_32(3269627871);
+emit_32(1107800883);
+emit_32(1117536256);
+emit_32(3269115904);
+emit_32(1107311303);
+emit_32(1117536256);
+emit_32(3268603937);
+emit_32(1107125495);
+emit_32(1117536256);
+emit_32(3268091970);
+emit_32(1107112755);
+emit_32(1117536256);
+emit_32(3267579911);
+emit_32(1107267997);
+emit_32(1117536256);
+emit_32(3267067904);
+emit_32(1106890510);
+emit_32(1117536256);
+emit_32(3266555911);
+emit_32(1106494148);
+emit_32(1117536256);
+emit_32(3266043904);
+emit_32(1105071650);
+emit_32(1117536256);
+emit_32(3265531911);
+emit_32(1103864948);
+emit_32(1117536256);
+emit_32(3265019904);
+emit_32(1102783028);
+emit_32(1117536256);
+emit_32(3264507911);
+emit_32(1101893154);
+emit_32(1117536256);
+emit_32(3263995904);
+emit_32(1100313684);
+emit_32(1117536256);
+emit_32(3263483911);
+emit_32(1099645112);
+emit_32(1117536256);
+emit_32(3262775296);
+emit_32(1099500985);
+emit_32(1117536256);
+emit_32(3261751309);
+emit_32(1099174668);
+emit_32(1117536256);
+emit_32(3260727296);
+emit_32(1097807901);
+emit_32(1117536256);
+emit_32(3259703309);
+emit_32(1096000995);
+emit_32(1117536256);
+emit_32(3258679296);
+emit_32(1094151098);
+emit_32(1117536256);
+emit_32(3257655309);
+emit_32(1093022725);
+emit_32(1117536256);
+emit_32(3256631296);
+emit_32(1092315356);
+emit_32(1117536256);
+emit_32(3255607309);
+emit_32(1092666209);
+emit_32(1117536256);
+emit_32(3254386688);
+emit_32(1092956979);
+emit_32(1117536256);
+emit_32(3252338714);
+emit_32(1092948591);
+emit_32(1117536256);
+emit_32(3250290688);
+emit_32(1093567880);
+emit_32(1117536256);
+emit_32(3248242714);
+emit_32(1094483496);
+emit_32(1117536256);
+emit_32(3245998080);
+emit_32(1097010250);
+emit_32(1117536256);
+emit_32(3241902132);
+emit_32(1098491888);
+emit_32(1117536256);
+emit_32(3237609472);
+emit_32(1098958976);
+emit_32(1117536256);
+emit_32(3229220864);
+emit_32(1099244503);
+emit_32(1117536256);
+emit_32(0);
+emit_32(1099580677);
+emit_32(1117536256);
+emit_32(1081737216);
+emit_32(1100388447);
+emit_32(1117536256);
+emit_32(3279552512);
+emit_32(1086400066);
+emit_32(1117024263);
+emit_32(3279296528);
+emit_32(1084596809);
+emit_32(1117024263);
+emit_32(3279040545);
+emit_32(1080887240);
+emit_32(1117024263);
+emit_32(3278784496);
+emit_32(1080830198);
+emit_32(1117024263);
+emit_32(3278528512);
+emit_32(1083401537);
+emit_32(1117024263);
+emit_32(3278272528);
+emit_32(1083235254);
+emit_32(1117024263);
+emit_32(3278016545);
+emit_32(1085484554);
+emit_32(1117024263);
+emit_32(3277760496);
+emit_32(1086866577);
+emit_32(1117024263);
+emit_32(3277504512);
+emit_32(1084469113);
+emit_32(1117024263);
+emit_32(3277248528);
+emit_32(1083540599);
+emit_32(1117024263);
+emit_32(3276992545);
+emit_32(1085825048);
+emit_32(1117024263);
+emit_32(3276736496);
+emit_32(1088012125);
+emit_32(1117024263);
+emit_32(3276480512);
+emit_32(1088318771);
+emit_32(1117024263);
+emit_32(3276224528);
+emit_32(1089174619);
+emit_32(1117024263);
+emit_32(3275968545);
+emit_32(1091189594);
+emit_32(1117024263);
+emit_32(3275712496);
+emit_32(1093050722);
+emit_32(1117024263);
+emit_32(3275456512);
+emit_32(1094514639);
+emit_32(1117024263);
+emit_32(3275200528);
+emit_32(1096242482);
+emit_32(1117024263);
+emit_32(3274944545);
+emit_32(1098453090);
+emit_32(1117024263);
+emit_32(3274688496);
+emit_32(1100090861);
+emit_32(1117024263);
+emit_32(3274432512);
+emit_32(1100571319);
+emit_32(1117024263);
+emit_32(3274176528);
+emit_32(1101691512);
+emit_32(1117024263);
+emit_32(3273920545);
+emit_32(1102911059);
+emit_32(1117024263);
+emit_32(3273664496);
+emit_32(1103791600);
+emit_32(1117024263);
+emit_32(3273408512);
+emit_32(1105004541);
+emit_32(1117024263);
+emit_32(3273152528);
+emit_32(1105668499);
+emit_32(1117024263);
+emit_32(3272896545);
+emit_32(1106514962);
+emit_32(1117024263);
+emit_32(3272640496);
+emit_32(1107399593);
+emit_32(1117024263);
+emit_32(3272384512);
+emit_32(1107645563);
+emit_32(1117024263);
+emit_32(3272128528);
+emit_32(1107768351);
+emit_32(1117024263);
+emit_32(3271872545);
+emit_32(1108103738);
+emit_32(1117024263);
+emit_32(3271616496);
+emit_32(1108013744);
+emit_32(1117024263);
+emit_32(3271163904);
+emit_32(1107916384);
+emit_32(1117024263);
+emit_32(3270651937);
+emit_32(1107875778);
+emit_32(1117024263);
+emit_32(3270139970);
+emit_32(1107601523);
+emit_32(1117024263);
+emit_32(3269627871);
+emit_32(1107312378);
+emit_32(1117024263);
+emit_32(3269115904);
+emit_32(1107317935);
+emit_32(1117024263);
+emit_32(3268603937);
+emit_32(1107418363);
+emit_32(1117024263);
+emit_32(3268091970);
+emit_32(1107103056);
+emit_32(1117024263);
+emit_32(3267579911);
+emit_32(1106756135);
+emit_32(1117024263);
+emit_32(3267067904);
+emit_32(1106586580);
+emit_32(1117024263);
+emit_32(3266555911);
+emit_32(1106229068);
+emit_32(1117024263);
+emit_32(3266043904);
+emit_32(1104905136);
+emit_32(1117024263);
+emit_32(3265531911);
+emit_32(1103773408);
+emit_32(1117024263);
+emit_32(3265019904);
+emit_32(1102876508);
+emit_32(1117024263);
+emit_32(3264507911);
+emit_32(1101347160);
+emit_32(1117024263);
+emit_32(3263995904);
+emit_32(1100029362);
+emit_32(1117024263);
+emit_32(3263483911);
+emit_32(1099777180);
+emit_32(1117024263);
+emit_32(3262775296);
+emit_32(1099578632);
+emit_32(1117024263);
+emit_32(3261751309);
+emit_32(1099224370);
+emit_32(1117024263);
+emit_32(3260727296);
+emit_32(1097535377);
+emit_32(1117024263);
+emit_32(3259703309);
+emit_32(1095910398);
+emit_32(1117024263);
+emit_32(3258679296);
+emit_32(1093599127);
+emit_32(1117024263);
+emit_32(3257655309);
+emit_32(1091981646);
+emit_32(1117024263);
+emit_32(3256631296);
+emit_32(1091797841);
+emit_32(1117024263);
+emit_32(3255607309);
+emit_32(1092352737);
+emit_32(1117024263);
+emit_32(3254386688);
+emit_32(1093028492);
+emit_32(1117024263);
+emit_32(3252338714);
+emit_32(1093454633);
+emit_32(1117024263);
+emit_32(3250290688);
+emit_32(1094245469);
+emit_32(1117024263);
+emit_32(3248242714);
+emit_32(1096330038);
+emit_32(1117024263);
+emit_32(3245998080);
+emit_32(1098523450);
+emit_32(1117024263);
+emit_32(3241902132);
+emit_32(1099109289);
+emit_32(1117024263);
+emit_32(3237609472);
+emit_32(1099818861);
+emit_32(1117024263);
+emit_32(3229220864);
+emit_32(1099945738);
+emit_32(1117024263);
+emit_32(0);
+emit_32(1100568016);
+emit_32(1117024263);
+emit_32(1081737216);
+emit_32(1101362836);
+emit_32(1117024263);
+emit_32(3279552512);
+emit_32(1085174427);
+emit_32(1116512256);
+emit_32(3279296528);
+emit_32(1083887405);
+emit_32(1116512256);
+emit_32(3279040545);
+emit_32(1080456611);
+emit_32(1116512256);
+emit_32(3278784496);
+emit_32(1079046318);
+emit_32(1116512256);
+emit_32(3278528512);
+emit_32(1082259302);
+emit_32(1116512256);
+emit_32(3278272528);
+emit_32(1084889550);
+emit_32(1116512256);
+emit_32(3278016545);
+emit_32(1087704851);
+emit_32(1116512256);
+emit_32(3277760496);
+emit_32(1087804025);
+emit_32(1116512256);
+emit_32(3277504512);
+emit_32(1088280498);
+emit_32(1116512256);
+emit_32(3277248528);
+emit_32(1088103981);
+emit_32(1116512256);
+emit_32(3276992545);
+emit_32(1088351004);
+emit_32(1116512256);
+emit_32(3276736496);
+emit_32(1089973843);
+emit_32(1116512256);
+emit_32(3276480512);
+emit_32(1091239926);
+emit_32(1116512256);
+emit_32(3276224528);
+emit_32(1091632890);
+emit_32(1116512256);
+emit_32(3275968545);
+emit_32(1092700393);
+emit_32(1116512256);
+emit_32(3275712496);
+emit_32(1094925156);
+emit_32(1116512256);
+emit_32(3275456512);
+emit_32(1096876556);
+emit_32(1116512256);
+emit_32(3275200528);
+emit_32(1098626630);
+emit_32(1116512256);
+emit_32(3274944545);
+emit_32(1100164471);
+emit_32(1116512256);
+emit_32(3274688496);
+emit_32(1100745487);
+emit_32(1116512256);
+emit_32(3274432512);
+emit_32(1101472832);
+emit_32(1116512256);
+emit_32(3274176528);
+emit_32(1102779148);
+emit_32(1116512256);
+emit_32(3273920545);
+emit_32(1103935255);
+emit_32(1116512256);
+emit_32(3273664496);
+emit_32(1104701345);
+emit_32(1116512256);
+emit_32(3273408512);
+emit_32(1105539000);
+emit_32(1116512256);
+emit_32(3273152528);
+emit_32(1106980949);
+emit_32(1116512256);
+emit_32(3272896545);
+emit_32(1107434013);
+emit_32(1116512256);
+emit_32(3272640496);
+emit_32(1107566658);
+emit_32(1116512256);
+emit_32(3272384512);
+emit_32(1107582701);
+emit_32(1116512256);
+emit_32(3272128528);
+emit_32(1107757498);
+emit_32(1116512256);
+emit_32(3271872545);
+emit_32(1107869617);
+emit_32(1116512256);
+emit_32(3271616496);
+emit_32(1107687480);
+emit_32(1116512256);
+emit_32(3271163904);
+emit_32(1107868176);
+emit_32(1116512256);
+emit_32(3270651937);
+emit_32(1107680087);
+emit_32(1116512256);
+emit_32(3270139970);
+emit_32(1107380955);
+emit_32(1116512256);
+emit_32(3269627871);
+emit_32(1107328631);
+emit_32(1116512256);
+emit_32(3269115904);
+emit_32(1107472941);
+emit_32(1116512256);
+emit_32(3268603937);
+emit_32(1107494384);
+emit_32(1116512256);
+emit_32(3268091970);
+emit_32(1107424602);
+emit_32(1116512256);
+emit_32(3267579911);
+emit_32(1106664227);
+emit_32(1116512256);
+emit_32(3267067904);
+emit_32(1106309651);
+emit_32(1116512256);
+emit_32(3266555911);
+emit_32(1105564480);
+emit_32(1116512256);
+emit_32(3266043904);
+emit_32(1104468247);
+emit_32(1116512256);
+emit_32(3265531911);
+emit_32(1103524161);
+emit_32(1116512256);
+emit_32(3265019904);
+emit_32(1102766355);
+emit_32(1116512256);
+emit_32(3264507911);
+emit_32(1101285976);
+emit_32(1116512256);
+emit_32(3263995904);
+emit_32(1100106066);
+emit_32(1116512256);
+emit_32(3263483911);
+emit_32(1099771150);
+emit_32(1116512256);
+emit_32(3262775296);
+emit_32(1099629121);
+emit_32(1116512256);
+emit_32(3261751309);
+emit_32(1099071436);
+emit_32(1116512256);
+emit_32(3260727296);
+emit_32(1096827273);
+emit_32(1116512256);
+emit_32(3259703309);
+emit_32(1094327153);
+emit_32(1116512256);
+emit_32(3258679296);
+emit_32(1092289372);
+emit_32(1116512256);
+emit_32(3257655309);
+emit_32(1091186899);
+emit_32(1116512256);
+emit_32(3256631296);
+emit_32(1091068620);
+emit_32(1116512256);
+emit_32(3255607309);
+emit_32(1092988332);
+emit_32(1116512256);
+emit_32(3254386688);
+emit_32(1093789024);
+emit_32(1116512256);
+emit_32(3252338714);
+emit_32(1095575588);
+emit_32(1116512256);
+emit_32(3250290688);
+emit_32(1097077673);
+emit_32(1116512256);
+emit_32(3248242714);
+emit_32(1098285423);
+emit_32(1116512256);
+emit_32(3245998080);
+emit_32(1099366400);
+emit_32(1116512256);
+emit_32(3241902132);
+emit_32(1099809528);
+emit_32(1116512256);
+emit_32(3237609472);
+emit_32(1100308336);
+emit_32(1116512256);
+emit_32(3229220864);
+emit_32(1100857999);
+emit_32(1116512256);
+emit_32(0);
+emit_32(1101690883);
+emit_32(1116512256);
+emit_32(1081737216);
+emit_32(1102550401);
+emit_32(1116512256);
+emit_32(3279552512);
+emit_32(1083244397);
+emit_32(1116000263);
+emit_32(3279296528);
+emit_32(1081021794);
+emit_32(1116000263);
+emit_32(3279040545);
+emit_32(1081320051);
+emit_32(1116000263);
+emit_32(3278784496);
+emit_32(1083021910);
+emit_32(1116000263);
+emit_32(3278528512);
+emit_32(1084294064);
+emit_32(1116000263);
+emit_32(3278272528);
+emit_32(1087656092);
+emit_32(1116000263);
+emit_32(3278016545);
+emit_32(1089797599);
+emit_32(1116000263);
+emit_32(3277760496);
+emit_32(1091098955);
+emit_32(1116000263);
+emit_32(3277504512);
+emit_32(1091272610);
+emit_32(1116000263);
+emit_32(3277248528);
+emit_32(1089866763);
+emit_32(1116000263);
+emit_32(3276992545);
+emit_32(1091139178);
+emit_32(1116000263);
+emit_32(3276736496);
+emit_32(1092341580);
+emit_32(1116000263);
+emit_32(3276480512);
+emit_32(1092757540);
+emit_32(1116000263);
+emit_32(3276224528);
+emit_32(1092728914);
+emit_32(1116000263);
+emit_32(3275968545);
+emit_32(1093810939);
+emit_32(1116000263);
+emit_32(3275712496);
+emit_32(1096373135);
+emit_32(1116000263);
+emit_32(3275456512);
+emit_32(1098378222);
+emit_32(1116000263);
+emit_32(3275200528);
+emit_32(1099724174);
+emit_32(1116000263);
+emit_32(3274944545);
+emit_32(1100967628);
+emit_32(1116000263);
+emit_32(3274688496);
+emit_32(1101558815);
+emit_32(1116000263);
+emit_32(3274432512);
+emit_32(1102315677);
+emit_32(1116000263);
+emit_32(3274176528);
+emit_32(1103940446);
+emit_32(1116000263);
+emit_32(3273920545);
+emit_32(1104679902);
+emit_32(1116000263);
+emit_32(3273664496);
+emit_32(1105155378);
+emit_32(1116000263);
+emit_32(3273408512);
+emit_32(1106194674);
+emit_32(1116000263);
+emit_32(3273152528);
+emit_32(1107343049);
+emit_32(1116000263);
+emit_32(3272896545);
+emit_32(1107838081);
+emit_32(1116000263);
+emit_32(3272640496);
+emit_32(1107954998);
+emit_32(1116000263);
+emit_32(3272384512);
+emit_32(1107867599);
+emit_32(1116000263);
+emit_32(3272128528);
+emit_32(1107645196);
+emit_32(1116000263);
+emit_32(3271872545);
+emit_32(1107550274);
+emit_32(1116000263);
+emit_32(3271616496);
+emit_32(1107544690);
+emit_32(1116000263);
+emit_32(3271163904);
+emit_32(1107694348);
+emit_32(1116000263);
+emit_32(3270651937);
+emit_32(1107550929);
+emit_32(1116000263);
+emit_32(3270139970);
+emit_32(1107424654);
+emit_32(1116000263);
+emit_32(3269627871);
+emit_32(1107580892);
+emit_32(1116000263);
+emit_32(3269115904);
+emit_32(1107466676);
+emit_32(1116000263);
+emit_32(3268603937);
+emit_32(1107518292);
+emit_32(1116000263);
+emit_32(3268091970);
+emit_32(1107507911);
+emit_32(1116000263);
+emit_32(3267579911);
+emit_32(1107068767);
+emit_32(1116000263);
+emit_32(3267067904);
+emit_32(1105975417);
+emit_32(1116000263);
+emit_32(3266555911);
+emit_32(1105550692);
+emit_32(1116000263);
+emit_32(3266043904);
+emit_32(1104364438);
+emit_32(1116000263);
+emit_32(3265531911);
+emit_32(1103311090);
+emit_32(1116000263);
+emit_32(3265019904);
+emit_32(1102266709);
+emit_32(1116000263);
+emit_32(3264507911);
+emit_32(1101111021);
+emit_32(1116000263);
+emit_32(3263995904);
+emit_32(1100245264);
+emit_32(1116000263);
+emit_32(3263483911);
+emit_32(1099460667);
+emit_32(1116000263);
+emit_32(3262775296);
+emit_32(1099464599);
+emit_32(1116000263);
+emit_32(3261751309);
+emit_32(1098898106);
+emit_32(1116000263);
+emit_32(3260727296);
+emit_32(1096169292);
+emit_32(1116000263);
+emit_32(3259703309);
+emit_32(1094572520);
+emit_32(1116000263);
+emit_32(3258679296);
+emit_32(1091595424);
+emit_32(1116000263);
+emit_32(3257655309);
+emit_32(1091557613);
+emit_32(1116000263);
+emit_32(3256631296);
+emit_32(1092673130);
+emit_32(1116000263);
+emit_32(3255607309);
+emit_32(1094406950);
+emit_32(1116000263);
+emit_32(3254386688);
+emit_32(1095233018);
+emit_32(1116000263);
+emit_32(3252338714);
+emit_32(1096870789);
+emit_32(1116000263);
+emit_32(3250290688);
+emit_32(1098084201);
+emit_32(1116000263);
+emit_32(3248242714);
+emit_32(1099279316);
+emit_32(1116000263);
+emit_32(3245998080);
+emit_32(1099851838);
+emit_32(1116000263);
+emit_32(3241902132);
+emit_32(1100485021);
+emit_32(1116000263);
+emit_32(3237609472);
+emit_32(1101521958);
+emit_32(1116000263);
+emit_32(3229220864);
+emit_32(1102417389);
+emit_32(1116000263);
+emit_32(0);
+emit_32(1103083130);
+emit_32(1116000263);
+emit_32(1081737216);
+emit_32(1103917954);
+emit_32(1116000263);
+emit_32(3279552512);
+emit_32(1083552091);
+emit_32(1115291648);
+emit_32(3279296528);
+emit_32(1083005678);
+emit_32(1115291648);
+emit_32(3279040545);
+emit_32(1081863968);
+emit_32(1115291648);
+emit_32(3278784496);
+emit_32(1083192598);
+emit_32(1115291648);
+emit_32(3278528512);
+emit_32(1085321521);
+emit_32(1115291648);
+emit_32(3278272528);
+emit_32(1088639887);
+emit_32(1115291648);
+emit_32(3278016545);
+emit_32(1090626592);
+emit_32(1115291648);
+emit_32(3277760496);
+emit_32(1090904140);
+emit_32(1115291648);
+emit_32(3277504512);
+emit_32(1091130580);
+emit_32(1115291648);
+emit_32(3277248528);
+emit_32(1091114726);
+emit_32(1115291648);
+emit_32(3276992545);
+emit_32(1092567129);
+emit_32(1115291648);
+emit_32(3276736496);
+emit_32(1093130414);
+emit_32(1115291648);
+emit_32(3276480512);
+emit_32(1093467636);
+emit_32(1115291648);
+emit_32(3276224528);
+emit_32(1094287832);
+emit_32(1115291648);
+emit_32(3275968545);
+emit_32(1095800822);
+emit_32(1115291648);
+emit_32(3275712496);
+emit_32(1097484940);
+emit_32(1115291648);
+emit_32(3275456512);
+emit_32(1099294310);
+emit_32(1115291648);
+emit_32(3275200528);
+emit_32(1100172703);
+emit_32(1115291648);
+emit_32(3274944545);
+emit_32(1101504656);
+emit_32(1115291648);
+emit_32(3274688496);
+emit_32(1102638534);
+emit_32(1115291648);
+emit_32(3274432512);
+emit_32(1103640238);
+emit_32(1115291648);
+emit_32(3274176528);
+emit_32(1104536142);
+emit_32(1115291648);
+emit_32(3273920545);
+emit_32(1105040926);
+emit_32(1115291648);
+emit_32(3273664496);
+emit_32(1105781640);
+emit_32(1115291648);
+emit_32(3273408512);
+emit_32(1106871845);
+emit_32(1115291648);
+emit_32(3273152528);
+emit_32(1107552266);
+emit_32(1115291648);
+emit_32(3272896545);
+emit_32(1107681686);
+emit_32(1115291648);
+emit_32(3272640496);
+emit_32(1107745571);
+emit_32(1115291648);
+emit_32(3272384512);
+emit_32(1107728531);
+emit_32(1115291648);
+emit_32(3272128528);
+emit_32(1107564849);
+emit_32(1115291648);
+emit_32(3271872545);
+emit_32(1107489876);
+emit_32(1115291648);
+emit_32(3271616496);
+emit_32(1107455351);
+emit_32(1115291648);
+emit_32(3271163904);
+emit_32(1107468721);
+emit_32(1115291648);
+emit_32(3270651937);
+emit_32(1107084182);
+emit_32(1115291648);
+emit_32(3270139970);
+emit_32(1107222279);
+emit_32(1115291648);
+emit_32(3269627871);
+emit_32(1107484685);
+emit_32(1115291648);
+emit_32(3269115904);
+emit_32(1107529302);
+emit_32(1115291648);
+emit_32(3268603937);
+emit_32(1107488067);
+emit_32(1115291648);
+emit_32(3268091970);
+emit_32(1107407117);
+emit_32(1115291648);
+emit_32(3267579911);
+emit_32(1106883012);
+emit_32(1115291648);
+emit_32(3267067904);
+emit_32(1106605454);
+emit_32(1115291648);
+emit_32(3266555911);
+emit_32(1105505288);
+emit_32(1115291648);
+emit_32(3266043904);
+emit_32(1104212551);
+emit_32(1115291648);
+emit_32(3265531911);
+emit_32(1103004854);
+emit_32(1115291648);
+emit_32(3265019904);
+emit_32(1102070835);
+emit_32(1115291648);
+emit_32(3264507911);
+emit_32(1101098123);
+emit_32(1115291648);
+emit_32(3263995904);
+emit_32(1100325323);
+emit_32(1115291648);
+emit_32(3263483911);
+emit_32(1099328966);
+emit_32(1115291648);
+emit_32(3262775296);
+emit_32(1098611216);
+emit_32(1115291648);
+emit_32(3261751309);
+emit_32(1096735418);
+emit_32(1115291648);
+emit_32(3260727296);
+emit_32(1095838571);
+emit_32(1115291648);
+emit_32(3259703309);
+emit_32(1094605760);
+emit_32(1115291648);
+emit_32(3258679296);
+emit_32(1092525459);
+emit_32(1115291648);
+emit_32(3257655309);
+emit_32(1092767082);
+emit_32(1115291648);
+emit_32(3256631296);
+emit_32(1093983535);
+emit_32(1115291648);
+emit_32(3255607309);
+emit_32(1095249271);
+emit_32(1115291648);
+emit_32(3254386688);
+emit_32(1096927937);
+emit_32(1115291648);
+emit_32(3252338714);
+emit_32(1098207724);
+emit_32(1115291648);
+emit_32(3250290688);
+emit_32(1099233441);
+emit_32(1115291648);
+emit_32(3248242714);
+emit_32(1099875956);
+emit_32(1115291648);
+emit_32(3245998080);
+emit_32(1100637117);
+emit_32(1115291648);
+emit_32(3241902132);
+emit_32(1101503817);
+emit_32(1115291648);
+emit_32(3237609472);
+emit_32(1102802531);
+emit_32(1115291648);
+emit_32(3229220864);
+emit_32(1103593682);
+emit_32(1115291648);
+emit_32(0);
+emit_32(1104232317);
+emit_32(1115291648);
+emit_32(1081737216);
+emit_32(1104775951);
+emit_32(1115291648);
+emit_32(3279552512);
+emit_32(1082632448);
+emit_32(1114267661);
+emit_32(3279296528);
+emit_32(1083847999);
+emit_32(1114267661);
+emit_32(3279040545);
+emit_32(1083453043);
+emit_32(1114267661);
+emit_32(3278784496);
+emit_32(1084836240);
+emit_32(1114267661);
+emit_32(3278528512);
+emit_32(1087335416);
+emit_32(1114267661);
+emit_32(3278272528);
+emit_32(1088125267);
+emit_32(1114267661);
+emit_32(3278016545);
+emit_32(1091016904);
+emit_32(1114267661);
+emit_32(3277760496);
+emit_32(1091320320);
+emit_32(1114267661);
+emit_32(3277504512);
+emit_32(1091823731);
+emit_32(1114267661);
+emit_32(3277248528);
+emit_32(1092277020);
+emit_32(1114267661);
+emit_32(3276992545);
+emit_32(1093461659);
+emit_32(1114267661);
+emit_32(3276736496);
+emit_32(1095052768);
+emit_32(1114267661);
+emit_32(3276480512);
+emit_32(1095490234);
+emit_32(1114267661);
+emit_32(3276224528);
+emit_32(1095508899);
+emit_32(1114267661);
+emit_32(3275968545);
+emit_32(1097193541);
+emit_32(1114267661);
+emit_32(3275712496);
+emit_32(1098984561);
+emit_32(1114267661);
+emit_32(3275456512);
+emit_32(1099457574);
+emit_32(1114267661);
+emit_32(3275200528);
+emit_32(1100590141);
+emit_32(1114267661);
+emit_32(3274944545);
+emit_32(1101940969);
+emit_32(1114267661);
+emit_32(3274688496);
+emit_32(1103512417);
+emit_32(1114267661);
+emit_32(3274432512);
+emit_32(1104276147);
+emit_32(1114267661);
+emit_32(3274176528);
+emit_32(1104819310);
+emit_32(1114267661);
+emit_32(3273920545);
+emit_32(1105352144);
+emit_32(1114267661);
+emit_32(3273664496);
+emit_32(1106559369);
+emit_32(1114267661);
+emit_32(3273408512);
+emit_32(1107364859);
+emit_32(1114267661);
+emit_32(3273152528);
+emit_32(1107533470);
+emit_32(1114267661);
+emit_32(3272896545);
+emit_32(1107506024);
+emit_32(1114267661);
+emit_32(3272640496);
+emit_32(1107420801);
+emit_32(1114267661);
+emit_32(3272384512);
+emit_32(1107402398);
+emit_32(1114267661);
+emit_32(3272128528);
+emit_32(1107706013);
+emit_32(1114267661);
+emit_32(3271872545);
+emit_32(1107658749);
+emit_32(1114267661);
+emit_32(3271616496);
+emit_32(1107586292);
+emit_32(1114267661);
+emit_32(3271163904);
+emit_32(1107376315);
+emit_32(1114267661);
+emit_32(3270651937);
+emit_32(1107428560);
+emit_32(1114267661);
+emit_32(3270139970);
+emit_32(1107381348);
+emit_32(1114267661);
+emit_32(3269627871);
+emit_32(1107411416);
+emit_32(1114267661);
+emit_32(3269115904);
+emit_32(1107441222);
+emit_32(1114267661);
+emit_32(3268603937);
+emit_32(1107539552);
+emit_32(1114267661);
+emit_32(3268091970);
+emit_32(1107219658);
+emit_32(1114267661);
+emit_32(3267579911);
+emit_32(1106732804);
+emit_32(1114267661);
+emit_32(3267067904);
+emit_32(1106474592);
+emit_32(1114267661);
+emit_32(3266555911);
+emit_32(1105371857);
+emit_32(1114267661);
+emit_32(3266043904);
+emit_32(1103908989);
+emit_32(1114267661);
+emit_32(3265531911);
+emit_32(1102613892);
+emit_32(1114267661);
+emit_32(3265019904);
+emit_32(1101793853);
+emit_32(1114267661);
+emit_32(3264507911);
+emit_32(1101568305);
+emit_32(1114267661);
+emit_32(3263995904);
+emit_32(1100542693);
+emit_32(1114267661);
+emit_32(3263483911);
+emit_32(1099317327);
+emit_32(1114267661);
+emit_32(3262775296);
+emit_32(1098087557);
+emit_32(1114267661);
+emit_32(3261751309);
+emit_32(1096945867);
+emit_32(1114267661);
+emit_32(3260727296);
+emit_32(1096008440);
+emit_32(1114267661);
+emit_32(3259703309);
+emit_32(1094604292);
+emit_32(1114267661);
+emit_32(3258679296);
+emit_32(1093760293);
+emit_32(1114267661);
+emit_32(3257655309);
+emit_32(1095498203);
+emit_32(1114267661);
+emit_32(3256631296);
+emit_32(1096500642);
+emit_32(1114267661);
+emit_32(3255607309);
+emit_32(1097453063);
+emit_32(1114267661);
+emit_32(3254386688);
+emit_32(1098431594);
+emit_32(1114267661);
+emit_32(3252338714);
+emit_32(1099318061);
+emit_32(1114267661);
+emit_32(3250290688);
+emit_32(1100353529);
+emit_32(1114267661);
+emit_32(3248242714);
+emit_32(1100897373);
+emit_32(1114267661);
+emit_32(3245998080);
+emit_32(1101979661);
+emit_32(1114267661);
+emit_32(3241902132);
+emit_32(1102434481);
+emit_32(1114267661);
+emit_32(3237609472);
+emit_32(1103617327);
+emit_32(1114267661);
+emit_32(3229220864);
+emit_32(1104375972);
+emit_32(1114267661);
+emit_32(0);
+emit_32(1104908963);
+emit_32(1114267661);
+emit_32(1081737216);
+emit_32(1105382343);
+emit_32(1114267661);
+emit_32(3279552512);
+emit_32(1080567970);
+emit_32(1113243648);
+emit_32(3279296528);
+emit_32(1081431200);
+emit_32(1113243648);
+emit_32(3279040545);
+emit_32(1083053640);
+emit_32(1113243648);
+emit_32(3278784496);
+emit_32(1084804594);
+emit_32(1113243648);
+emit_32(3278528512);
+emit_32(1089344530);
+emit_32(1113243648);
+emit_32(3278272528);
+emit_32(1089662899);
+emit_32(1113243648);
+emit_32(3278016545);
+emit_32(1090822970);
+emit_32(1113243648);
+emit_32(3277760496);
+emit_32(1092219662);
+emit_32(1113243648);
+emit_32(3277504512);
+emit_32(1093309615);
+emit_32(1113243648);
+emit_32(3277248528);
+emit_32(1093760608);
+emit_32(1113243648);
+emit_32(3276992545);
+emit_32(1094942563);
+emit_32(1113243648);
+emit_32(3276736496);
+emit_32(1095970062);
+emit_32(1113243648);
+emit_32(3276480512);
+emit_32(1096808609);
+emit_32(1113243648);
+emit_32(3276224528);
+emit_32(1097144677);
+emit_32(1113243648);
+emit_32(3275968545);
+emit_32(1097732299);
+emit_32(1113243648);
+emit_32(3275712496);
+emit_32(1099213255);
+emit_32(1113243648);
+emit_32(3275456512);
+emit_32(1100077335);
+emit_32(1113243648);
+emit_32(3275200528);
+emit_32(1101037358);
+emit_32(1113243648);
+emit_32(3274944545);
+emit_32(1102522142);
+emit_32(1113243648);
+emit_32(3274688496);
+emit_32(1103670333);
+emit_32(1113243648);
+emit_32(3274432512);
+emit_32(1104447013);
+emit_32(1113243648);
+emit_32(3274176528);
+emit_32(1104860519);
+emit_32(1113243648);
+emit_32(3273920545);
+emit_32(1105841200);
+emit_32(1113243648);
+emit_32(3273664496);
+emit_32(1106724782);
+emit_32(1113243648);
+emit_32(3273408512);
+emit_32(1107646900);
+emit_32(1113243648);
+emit_32(3273152528);
+emit_32(1107527152);
+emit_32(1113243648);
+emit_32(3272896545);
+emit_32(1107447854);
+emit_32(1113243648);
+emit_32(3272640496);
+emit_32(1107457160);
+emit_32(1113243648);
+emit_32(3272384512);
+emit_32(1107532238);
+emit_32(1113243648);
+emit_32(3272128528);
+emit_32(1107881152);
+emit_32(1113243648);
+emit_32(3271872545);
+emit_32(1107776897);
+emit_32(1113243648);
+emit_32(3271616496);
+emit_32(1107520258);
+emit_32(1113243648);
+emit_32(3271163904);
+emit_32(1107733591);
+emit_32(1113243648);
+emit_32(3270651937);
+emit_32(1107557168);
+emit_32(1113243648);
+emit_32(3270139970);
+emit_32(1107429845);
+emit_32(1113243648);
+emit_32(3269627871);
+emit_32(1107409161);
+emit_32(1113243648);
+emit_32(3269115904);
+emit_32(1107202618);
+emit_32(1113243648);
+emit_32(3268603937);
+emit_32(1107218137);
+emit_32(1113243648);
+emit_32(3268091970);
+emit_32(1107106621);
+emit_32(1113243648);
+emit_32(3267579911);
+emit_32(1106476217);
+emit_32(1113243648);
+emit_32(3267067904);
+emit_32(1105687006);
+emit_32(1113243648);
+emit_32(3266555911);
+emit_32(1104462742);
+emit_32(1113243648);
+emit_32(3266043904);
+emit_32(1103481222);
+emit_32(1113243648);
+emit_32(3265531911);
+emit_32(1102608859);
+emit_32(1113243648);
+emit_32(3265019904);
+emit_32(1101715630);
+emit_32(1113243648);
+emit_32(3264507911);
+emit_32(1101203400);
+emit_32(1113243648);
+emit_32(3263995904);
+emit_32(1100648337);
+emit_32(1113243648);
+emit_32(3263483911);
+emit_32(1099410807);
+emit_32(1113243648);
+emit_32(3262775296);
+emit_32(1097508009);
+emit_32(1113243648);
+emit_32(3261751309);
+emit_32(1097324193);
+emit_32(1113243648);
+emit_32(3260727296);
+emit_32(1096121791);
+emit_32(1113243648);
+emit_32(3259703309);
+emit_32(1095057906);
+emit_32(1113243648);
+emit_32(3258679296);
+emit_32(1095394709);
+emit_32(1113243648);
+emit_32(3257655309);
+emit_32(1097088473);
+emit_32(1113243648);
+emit_32(3256631296);
+emit_32(1098581226);
+emit_32(1113243648);
+emit_32(3255607309);
+emit_32(1099014498);
+emit_32(1113243648);
+emit_32(3254386688);
+emit_32(1099554462);
+emit_32(1113243648);
+emit_32(3252338714);
+emit_32(1100356151);
+emit_32(1113243648);
+emit_32(3250290688);
+emit_32(1101134404);
+emit_32(1113243648);
+emit_32(3248242714);
+emit_32(1101886076);
+emit_32(1113243648);
+emit_32(3245998080);
+emit_32(1103145992);
+emit_32(1113243648);
+emit_32(3241902132);
+emit_32(1103709182);
+emit_32(1113243648);
+emit_32(3237609472);
+emit_32(1104517530);
+emit_32(1113243648);
+emit_32(3229220864);
+emit_32(1104959033);
+emit_32(1113243648);
+emit_32(0);
+emit_32(1105369183);
+emit_32(1113243648);
+emit_32(1081737216);
+emit_32(1105831238);
+emit_32(1113243648);
+emit_32(3279552512);
+emit_32(1081067470);
+emit_32(1112219661);
+emit_32(3279296528);
+emit_32(1081676273);
+emit_32(1112219661);
+emit_32(3279040545);
+emit_32(1082388277);
+emit_32(1112219661);
+emit_32(3278784496);
+emit_32(1084582317);
+emit_32(1112219661);
+emit_32(3278528512);
+emit_32(1086962144);
+emit_32(1112219661);
+emit_32(3278272528);
+emit_32(1088882737);
+emit_32(1112219661);
+emit_32(3278016545);
+emit_32(1091161282);
+emit_32(1112219661);
+emit_32(3277760496);
+emit_32(1092751983);
+emit_32(1112219661);
+emit_32(3277504512);
+emit_32(1095008308);
+emit_32(1112219661);
+emit_32(3277248528);
+emit_32(1095060318);
+emit_32(1112219661);
+emit_32(3276992545);
+emit_32(1096171599);
+emit_32(1112219661);
+emit_32(3276736496);
+emit_32(1096970718);
+emit_32(1112219661);
+emit_32(3276480512);
+emit_32(1096845518);
+emit_32(1112219661);
+emit_32(3276224528);
+emit_32(1097664037);
+emit_32(1112219661);
+emit_32(3275968545);
+emit_32(1099269407);
+emit_32(1112219661);
+emit_32(3275712496);
+emit_32(1099766956);
+emit_32(1112219661);
+emit_32(3275456512);
+emit_32(1100617351);
+emit_32(1112219661);
+emit_32(3275200528);
+emit_32(1101396967);
+emit_32(1112219661);
+emit_32(3274944545);
+emit_32(1102752933);
+emit_32(1112219661);
+emit_32(3274688496);
+emit_32(1103879838);
+emit_32(1112219661);
+emit_32(3274432512);
+emit_32(1104593866);
+emit_32(1112219661);
+emit_32(3274176528);
+emit_32(1105083131);
+emit_32(1112219661);
+emit_32(3273920545);
+emit_32(1106256803);
+emit_32(1112219661);
+emit_32(3273664496);
+emit_32(1106808091);
+emit_32(1112219661);
+emit_32(3273408512);
+emit_32(1107450869);
+emit_32(1112219661);
+emit_32(3273152528);
+emit_32(1107444944);
+emit_32(1112219661);
+emit_32(3272896545);
+emit_32(1107418258);
+emit_32(1112219661);
+emit_32(3272640496);
+emit_32(1107742425);
+emit_32(1112219661);
+emit_32(3272384512);
+emit_32(1108019590);
+emit_32(1112219661);
+emit_32(3272128528);
+emit_32(1107796584);
+emit_32(1112219661);
+emit_32(3271872545);
+emit_32(1107736920);
+emit_32(1112219661);
+emit_32(3271616496);
+emit_32(1107725360);
+emit_32(1112219661);
+emit_32(3271163904);
+emit_32(1107830270);
+emit_32(1112219661);
+emit_32(3270651937);
+emit_32(1107833101);
+emit_32(1112219661);
+emit_32(3270139970);
+emit_32(1107955024);
+emit_32(1112219661);
+emit_32(3269627871);
+emit_32(1107743788);
+emit_32(1112219661);
+emit_32(3269115904);
+emit_32(1107368686);
+emit_32(1112219661);
+emit_32(3268603937);
+emit_32(1107312194);
+emit_32(1112219661);
+emit_32(3268091970);
+emit_32(1106815641);
+emit_32(1112219661);
+emit_32(3267579911);
+emit_32(1106204059);
+emit_32(1112219661);
+emit_32(3267067904);
+emit_32(1105597773);
+emit_32(1112219661);
+emit_32(3266555911);
+emit_32(1104651905);
+emit_32(1112219661);
+emit_32(3266043904);
+emit_32(1103516559);
+emit_32(1112219661);
+emit_32(3265531911);
+emit_32(1102993162);
+emit_32(1112219661);
+emit_32(3265019904);
+emit_32(1101898029);
+emit_32(1112219661);
+emit_32(3264507911);
+emit_32(1100758804);
+emit_32(1112219661);
+emit_32(3263995904);
+emit_32(1100657040);
+emit_32(1112219661);
+emit_32(3263483911);
+emit_32(1099876637);
+emit_32(1112219661);
+emit_32(3262775296);
+emit_32(1097071696);
+emit_32(1112219661);
+emit_32(3261751309);
+emit_32(1097587910);
+emit_32(1112219661);
+emit_32(3260727296);
+emit_32(1096851915);
+emit_32(1112219661);
+emit_32(3259703309);
+emit_32(1095734447);
+emit_32(1112219661);
+emit_32(3258679296);
+emit_32(1096755026);
+emit_32(1112219661);
+emit_32(3257655309);
+emit_32(1098731382);
+emit_32(1112219661);
+emit_32(3256631296);
+emit_32(1099251896);
+emit_32(1112219661);
+emit_32(3255607309);
+emit_32(1099497577);
+emit_32(1112219661);
+emit_32(3254386688);
+emit_32(1100323121);
+emit_32(1112219661);
+emit_32(3252338714);
+emit_32(1101464601);
+emit_32(1112219661);
+emit_32(3250290688);
+emit_32(1102066431);
+emit_32(1112219661);
+emit_32(3248242714);
+emit_32(1102544581);
+emit_32(1112219661);
+emit_32(3245998080);
+emit_32(1103985902);
+emit_32(1112219661);
+emit_32(3241902132);
+emit_32(1104242698);
+emit_32(1112219661);
+emit_32(3237609472);
+emit_32(1105399801);
+emit_32(1112219661);
+emit_32(3229220864);
+emit_32(1105617119);
+emit_32(1112219661);
+emit_32(0);
+emit_32(1106104864);
+emit_32(1112219661);
+emit_32(1081737216);
+emit_32(1106473438);
+emit_32(1112219661);
+emit_32(3279552512);
+emit_32(1080840432);
+emit_32(1111195648);
+emit_32(3279296528);
+emit_32(1081651568);
+emit_32(1111195648);
+emit_32(3279040545);
+emit_32(1082066175);
+emit_32(1111195648);
+emit_32(3278784496);
+emit_32(1084264746);
+emit_32(1111195648);
+emit_32(3278528512);
+emit_32(1088920821);
+emit_32(1111195648);
+emit_32(3278272528);
+emit_32(1090060120);
+emit_32(1111195648);
+emit_32(3278016545);
+emit_32(1091098882);
+emit_32(1111195648);
+emit_32(3277760496);
+emit_32(1092897630);
+emit_32(1111195648);
+emit_32(3277504512);
+emit_32(1093865780);
+emit_32(1111195648);
+emit_32(3277248528);
+emit_32(1095144309);
+emit_32(1111195648);
+emit_32(3276992545);
+emit_32(1096518363);
+emit_32(1111195648);
+emit_32(3276736496);
+emit_32(1097299342);
+emit_32(1111195648);
+emit_32(3276480512);
+emit_32(1098421109);
+emit_32(1111195648);
+emit_32(3276224528);
+emit_32(1098491888);
+emit_32(1111195648);
+emit_32(3275968545);
+emit_32(1099350986);
+emit_32(1111195648);
+emit_32(3275712496);
+emit_32(1100200332);
+emit_32(1111195648);
+emit_32(3275456512);
+emit_32(1100698092);
+emit_32(1111195648);
+emit_32(3275200528);
+emit_32(1101450655);
+emit_32(1111195648);
+emit_32(3274944545);
+emit_32(1103069866);
+emit_32(1111195648);
+emit_32(3274688496);
+emit_32(1104305508);
+emit_32(1111195648);
+emit_32(3274432512);
+emit_32(1105027557);
+emit_32(1111195648);
+emit_32(3274176528);
+emit_32(1105330019);
+emit_32(1111195648);
+emit_32(3273920545);
+emit_32(1106064336);
+emit_32(1111195648);
+emit_32(3273664496);
+emit_32(1107261863);
+emit_32(1111195648);
+emit_32(3273408512);
+emit_32(1107667531);
+emit_32(1111195648);
+emit_32(3273152528);
+emit_32(1107670598);
+emit_32(1111195648);
+emit_32(3272896545);
+emit_32(1107641159);
+emit_32(1111195648);
+emit_32(3272640496);
+emit_32(1107722528);
+emit_32(1111195648);
+emit_32(3272384512);
+emit_32(1108132181);
+emit_32(1111195648);
+emit_32(3272128528);
+emit_32(1108041636);
+emit_32(1111195648);
+emit_32(3271872545);
+emit_32(1107852499);
+emit_32(1111195648);
+emit_32(3271616496);
+emit_32(1107940187);
+emit_32(1111195648);
+emit_32(3271163904);
+emit_32(1108075584);
+emit_32(1111195648);
+emit_32(3270651937);
+emit_32(1108051519);
+emit_32(1111195648);
+emit_32(3270139970);
+emit_32(1108131185);
+emit_32(1111195648);
+emit_32(3269627871);
+emit_32(1107856720);
+emit_32(1111195648);
+emit_32(3269115904);
+emit_32(1107481775);
+emit_32(1111195648);
+emit_32(3268603937);
+emit_32(1107354426);
+emit_32(1111195648);
+emit_32(3268091970);
+emit_32(1106901729);
+emit_32(1111195648);
+emit_32(3267579911);
+emit_32(1106228648);
+emit_32(1111195648);
+emit_32(3267067904);
+emit_32(1105262753);
+emit_32(1111195648);
+emit_32(3266555911);
+emit_32(1104721425);
+emit_32(1111195648);
+emit_32(3266043904);
+emit_32(1103674474);
+emit_32(1111195648);
+emit_32(3265531911);
+emit_32(1102786488);
+emit_32(1111195648);
+emit_32(3265019904);
+emit_32(1102197555);
+emit_32(1111195648);
+emit_32(3264507911);
+emit_32(1100931295);
+emit_32(1111195648);
+emit_32(3263995904);
+emit_32(1100417440);
+emit_32(1111195648);
+emit_32(3263483911);
+emit_32(1099561330);
+emit_32(1111195648);
+emit_32(3262775296);
+emit_32(1098381787);
+emit_32(1111195648);
+emit_32(3261751309);
+emit_32(1097372218);
+emit_32(1111195648);
+emit_32(3260727296);
+emit_32(1097540724);
+emit_32(1111195648);
+emit_32(3259703309);
+emit_32(1096128502);
+emit_32(1111195648);
+emit_32(3258679296);
+emit_32(1098525337);
+emit_32(1111195648);
+emit_32(3257655309);
+emit_32(1099283929);
+emit_32(1111195648);
+emit_32(3256631296);
+emit_32(1099669281);
+emit_32(1111195648);
+emit_32(3255607309);
+emit_32(1100104388);
+emit_32(1111195648);
+emit_32(3254386688);
+emit_32(1101177448);
+emit_32(1111195648);
+emit_32(3252338714);
+emit_32(1102411989);
+emit_32(1111195648);
+emit_32(3250290688);
+emit_32(1102859731);
+emit_32(1111195648);
+emit_32(3248242714);
+emit_32(1103261650);
+emit_32(1111195648);
+emit_32(3245998080);
+emit_32(1104208881);
+emit_32(1111195648);
+emit_32(3241902132);
+emit_32(1104930721);
+emit_32(1111195648);
+emit_32(3237609472);
+emit_32(1105910668);
+emit_32(1111195648);
+emit_32(3229220864);
+emit_32(1106135482);
+emit_32(1111195648);
+emit_32(0);
+emit_32(1106438364);
+emit_32(1111195648);
+emit_32(1081737216);
+emit_32(1106707585);
+emit_32(1111195648);
+emit_32(3279552512);
+emit_32(1082299945);
+emit_32(1110171661);
+emit_32(3279296528);
+emit_32(1082335492);
+emit_32(1110171661);
+emit_32(3279040545);
+emit_32(1081611639);
+emit_32(1110171661);
+emit_32(3278784496);
+emit_32(1084483730);
+emit_32(1110171661);
+emit_32(3278528512);
+emit_32(1087813567);
+emit_32(1110171661);
+emit_32(3278272528);
+emit_32(1090011655);
+emit_32(1110171661);
+emit_32(3278016545);
+emit_32(1090662443);
+emit_32(1110171661);
+emit_32(3277760496);
+emit_32(1091411913);
+emit_32(1110171661);
+emit_32(3277504512);
+emit_32(1093599547);
+emit_32(1110171661);
+emit_32(3277248528);
+emit_32(1095137283);
+emit_32(1110171661);
+emit_32(3276992545);
+emit_32(1096248040);
+emit_32(1110171661);
+emit_32(3276736496);
+emit_32(1097581409);
+emit_32(1110171661);
+emit_32(3276480512);
+emit_32(1098493460);
+emit_32(1110171661);
+emit_32(3276224528);
+emit_32(1098645189);
+emit_32(1110171661);
+emit_32(3275968545);
+emit_32(1099528405);
+emit_32(1110171661);
+emit_32(3275712496);
+emit_32(1100673398);
+emit_32(1110171661);
+emit_32(3275456512);
+emit_32(1101618269);
+emit_32(1110171661);
+emit_32(3275200528);
+emit_32(1102431073);
+emit_32(1110171661);
+emit_32(3274944545);
+emit_32(1103528093);
+emit_32(1110171661);
+emit_32(3274688496);
+emit_32(1104554597);
+emit_32(1110171661);
+emit_32(3274432512);
+emit_32(1105069133);
+emit_32(1110171661);
+emit_32(3274176528);
+emit_32(1105654658);
+emit_32(1110171661);
+emit_32(3273920545);
+emit_32(1106835145);
+emit_32(1110171661);
+emit_32(3273664496);
+emit_32(1107634160);
+emit_32(1110171661);
+emit_32(3273408512);
+emit_32(1107894338);
+emit_32(1110171661);
+emit_32(3273152528);
+emit_32(1107815222);
+emit_32(1110171661);
+emit_32(3272896545);
+emit_32(1107886788);
+emit_32(1110171661);
+emit_32(3272640496);
+emit_32(1107869984);
+emit_32(1110171661);
+emit_32(3272384512);
+emit_32(1108048085);
+emit_32(1110171661);
+emit_32(3272128528);
+emit_32(1108254890);
+emit_32(1110171661);
+emit_32(3271872545);
+emit_32(1108213734);
+emit_32(1110171661);
+emit_32(3271616496);
+emit_32(1108197324);
+emit_32(1110171661);
+emit_32(3271163904);
+emit_32(1108442612);
+emit_32(1110171661);
+emit_32(3270651937);
+emit_32(1108195515);
+emit_32(1110171661);
+emit_32(3270139970);
+emit_32(1107913422);
+emit_32(1110171661);
+emit_32(3269627871);
+emit_32(1108099754);
+emit_32(1110171661);
+emit_32(3269115904);
+emit_32(1107690809);
+emit_32(1110171661);
+emit_32(3268603937);
+emit_32(1107419726);
+emit_32(1110171661);
+emit_32(3268091970);
+emit_32(1106916881);
+emit_32(1110171661);
+emit_32(3267579911);
+emit_32(1106123581);
+emit_32(1110171661);
+emit_32(3267067904);
+emit_32(1105152285);
+emit_32(1110171661);
+emit_32(3266555911);
+emit_32(1104426985);
+emit_32(1110171661);
+emit_32(3266043904);
+emit_32(1103754376);
+emit_32(1110171661);
+emit_32(3265531911);
+emit_32(1102897113);
+emit_32(1110171661);
+emit_32(3265019904);
+emit_32(1102036808);
+emit_32(1110171661);
+emit_32(3264507911);
+emit_32(1100742237);
+emit_32(1110171661);
+emit_32(3263995904);
+emit_32(1099863477);
+emit_32(1110171661);
+emit_32(3263483911);
+emit_32(1099645950);
+emit_32(1110171661);
+emit_32(3262775296);
+emit_32(1099481114);
+emit_32(1110171661);
+emit_32(3261751309);
+emit_32(1098210135);
+emit_32(1110171661);
+emit_32(3260727296);
+emit_32(1097645582);
+emit_32(1110171661);
+emit_32(3259703309);
+emit_32(1097853619);
+emit_32(1110171661);
+emit_32(3258679296);
+emit_32(1099526675);
+emit_32(1110171661);
+emit_32(3257655309);
+emit_32(1100018090);
+emit_32(1110171661);
+emit_32(3256631296);
+emit_32(1100522927);
+emit_32(1110171661);
+emit_32(3255607309);
+emit_32(1100845993);
+emit_32(1110171661);
+emit_32(3254386688);
+emit_32(1101870924);
+emit_32(1110171661);
+emit_32(3252338714);
+emit_32(1102805362);
+emit_32(1110171661);
+emit_32(3250290688);
+emit_32(1103401216);
+emit_32(1110171661);
+emit_32(3248242714);
+emit_32(1103731255);
+emit_32(1110171661);
+emit_32(3245998080);
+emit_32(1104590458);
+emit_32(1110171661);
+emit_32(3241902132);
+emit_32(1105688946);
+emit_32(1110171661);
+emit_32(3237609472);
+emit_32(1106199393);
+emit_32(1110171661);
+emit_32(3229220864);
+emit_32(1106912477);
+emit_32(1110171661);
+emit_32(0);
+emit_32(1106977279);
+emit_32(1110171661);
+emit_32(1081737216);
+emit_32(1107240944);
+emit_32(1110171661);
+emit_32(3279552512);
+emit_32(1082717131);
+emit_32(1109147648);
+emit_32(3279296528);
+emit_32(1082557014);
+emit_32(1109147648);
+emit_32(3279040545);
+emit_32(1081304070);
+emit_32(1109147648);
+emit_32(3278784496);
+emit_32(1083792278);
+emit_32(1109147648);
+emit_32(3278528512);
+emit_32(1085314873);
+emit_32(1109147648);
+emit_32(3278272528);
+emit_32(1088245664);
+emit_32(1109147648);
+emit_32(3278016545);
+emit_32(1090788797);
+emit_32(1109147648);
+emit_32(3277760496);
+emit_32(1091410718);
+emit_32(1109147648);
+emit_32(3277504512);
+emit_32(1092169803);
+emit_32(1109147648);
+emit_32(3277248528);
+emit_32(1094073608);
+emit_32(1109147648);
+emit_32(3276992545);
+emit_32(1095322147);
+emit_32(1109147648);
+emit_32(3276736496);
+emit_32(1097073584);
+emit_32(1109147648);
+emit_32(3276480512);
+emit_32(1097631321);
+emit_32(1109147648);
+emit_32(3276224528);
+emit_32(1098886781);
+emit_32(1109147648);
+emit_32(3275968545);
+emit_32(1099653448);
+emit_32(1109147648);
+emit_32(3275712496);
+emit_32(1100796029);
+emit_32(1109147648);
+emit_32(3275456512);
+emit_32(1102110786);
+emit_32(1109147648);
+emit_32(3275200528);
+emit_32(1103014553);
+emit_32(1109147648);
+emit_32(3274944545);
+emit_32(1103661420);
+emit_32(1109147648);
+emit_32(3274688496);
+emit_32(1104730758);
+emit_32(1109147648);
+emit_32(3274432512);
+emit_32(1105461248);
+emit_32(1109147648);
+emit_32(3274176528);
+emit_32(1106228019);
+emit_32(1109147648);
+emit_32(3273920545);
+emit_32(1107398361);
+emit_32(1109147648);
+emit_32(3273664496);
+emit_32(1107773987);
+emit_32(1109147648);
+emit_32(3273408512);
+emit_32(1107908336);
+emit_32(1109147648);
+emit_32(3273152528);
+emit_32(1107942729);
+emit_32(1109147648);
+emit_32(3272896545);
+emit_32(1108010231);
+emit_32(1109147648);
+emit_32(3272640496);
+emit_32(1107850140);
+emit_32(1109147648);
+emit_32(3272384512);
+emit_32(1108057339);
+emit_32(1109147648);
+emit_32(3272128528);
+emit_32(1108245977);
+emit_32(1109147648);
+emit_32(3271872545);
+emit_32(1108269937);
+emit_32(1109147648);
+emit_32(3271616496);
+emit_32(1108532291);
+emit_32(1109147648);
+emit_32(3271163904);
+emit_32(1108595809);
+emit_32(1109147648);
+emit_32(3270651937);
+emit_32(1108363942);
+emit_32(1109147648);
+emit_32(3270139970);
+emit_32(1108139599);
+emit_32(1109147648);
+emit_32(3269627871);
+emit_32(1108065465);
+emit_32(1109147648);
+emit_32(3269115904);
+emit_32(1107970150);
+emit_32(1109147648);
+emit_32(3268603937);
+emit_32(1107690678);
+emit_32(1109147648);
+emit_32(3268091970);
+emit_32(1106957042);
+emit_32(1109147648);
+emit_32(3267579911);
+emit_32(1106262517);
+emit_32(1109147648);
+emit_32(3267067904);
+emit_32(1105527937);
+emit_32(1109147648);
+emit_32(3266555911);
+emit_32(1104380638);
+emit_32(1109147648);
+emit_32(3266043904);
+emit_32(1103529719);
+emit_32(1109147648);
+emit_32(3265531911);
+emit_32(1102593130);
+emit_32(1109147648);
+emit_32(3265019904);
+emit_32(1101585816);
+emit_32(1109147648);
+emit_32(3264507911);
+emit_32(1100545471);
+emit_32(1109147648);
+emit_32(3263995904);
+emit_32(1100004144);
+emit_32(1109147648);
+emit_32(3263483911);
+emit_32(1099601124);
+emit_32(1109147648);
+emit_32(3262775296);
+emit_32(1099485518);
+emit_32(1109147648);
+emit_32(3261751309);
+emit_32(1099132987);
+emit_32(1109147648);
+emit_32(3260727296);
+emit_32(1098562037);
+emit_32(1109147648);
+emit_32(3259703309);
+emit_32(1099204605);
+emit_32(1109147648);
+emit_32(3258679296);
+emit_32(1100206834);
+emit_32(1109147648);
+emit_32(3257655309);
+emit_32(1100697777);
+emit_32(1109147648);
+emit_32(3256631296);
+emit_32(1100970774);
+emit_32(1109147648);
+emit_32(3255607309);
+emit_32(1101185522);
+emit_32(1109147648);
+emit_32(3254386688);
+emit_32(1102281336);
+emit_32(1109147648);
+emit_32(3252338714);
+emit_32(1103401478);
+emit_32(1109147648);
+emit_32(3250290688);
+emit_32(1103912763);
+emit_32(1109147648);
+emit_32(3248242714);
+emit_32(1104404808);
+emit_32(1109147648);
+emit_32(3245998080);
+emit_32(1105352196);
+emit_32(1109147648);
+emit_32(3241902132);
+emit_32(1106248519);
+emit_32(1109147648);
+emit_32(3237609472);
+emit_32(1107362631);
+emit_32(1109147648);
+emit_32(3229220864);
+emit_32(1107724259);
+emit_32(1109147648);
+emit_32(0);
+emit_32(1107777290);
+emit_32(1109147648);
+emit_32(1081737216);
+emit_32(1108060956);
+emit_32(1109147648);
+emit_32(3279552512);
+emit_32(1081790232);
+emit_32(1108123661);
+emit_32(3279296528);
+emit_32(1079535290);
+emit_32(1108123661);
+emit_32(3279040545);
+emit_32(1079065864);
+emit_32(1108123661);
+emit_32(3278784496);
+emit_32(1082272577);
+emit_32(1108123661);
+emit_32(3278528512);
+emit_32(1083963574);
+emit_32(1108123661);
+emit_32(3278272528);
+emit_32(1087349677);
+emit_32(1108123661);
+emit_32(3278016545);
+emit_32(1088785241);
+emit_32(1108123661);
+emit_32(3277760496);
+emit_32(1090741705);
+emit_32(1108123661);
+emit_32(3277504512);
+emit_32(1090749360);
+emit_32(1108123661);
+emit_32(3277248528);
+emit_32(1093053448);
+emit_32(1108123661);
+emit_32(3276992545);
+emit_32(1094660601);
+emit_32(1108123661);
+emit_32(3276736496);
+emit_32(1096196555);
+emit_32(1108123661);
+emit_32(3276480512);
+emit_32(1096902351);
+emit_32(1108123661);
+emit_32(3276224528);
+emit_32(1098391434);
+emit_32(1108123661);
+emit_32(3275968545);
+emit_32(1099380084);
+emit_32(1108123661);
+emit_32(3275712496);
+emit_32(1101235225);
+emit_32(1108123661);
+emit_32(3275456512);
+emit_32(1102578188);
+emit_32(1108123661);
+emit_32(3275200528);
+emit_32(1103112385);
+emit_32(1108123661);
+emit_32(3274944545);
+emit_32(1103997541);
+emit_32(1108123661);
+emit_32(3274688496);
+emit_32(1104833046);
+emit_32(1108123661);
+emit_32(3274432512);
+emit_32(1105701582);
+emit_32(1108123661);
+emit_32(3274176528);
+emit_32(1106849458);
+emit_32(1108123661);
+emit_32(3273920545);
+emit_32(1107522617);
+emit_32(1108123661);
+emit_32(3273664496);
+emit_32(1107703025);
+emit_32(1108123661);
+emit_32(3273408512);
+emit_32(1107971565);
+emit_32(1108123661);
+emit_32(3273152528);
+emit_32(1107971565);
+emit_32(1108123661);
+emit_32(3272896545);
+emit_32(1107873025);
+emit_32(1108123661);
+emit_32(3272640496);
+emit_32(1108008685);
+emit_32(1108123661);
+emit_32(3272384512);
+emit_32(1108230878);
+emit_32(1108123661);
+emit_32(3272128528);
+emit_32(1108292220);
+emit_32(1108123661);
+emit_32(3271872545);
+emit_32(1108636520);
+emit_32(1108123661);
+emit_32(3271616496);
+emit_32(1108671909);
+emit_32(1108123661);
+emit_32(3271163904);
+emit_32(1108573789);
+emit_32(1108123661);
+emit_32(3270651937);
+emit_32(1108191583);
+emit_32(1108123661);
+emit_32(3270139970);
+emit_32(1108044546);
+emit_32(1108123661);
+emit_32(3269627871);
+emit_32(1108195856);
+emit_32(1108123661);
+emit_32(3269115904);
+emit_32(1108061848);
+emit_32(1108123661);
+emit_32(3268603937);
+emit_32(1107692487);
+emit_32(1108123661);
+emit_32(3268091970);
+emit_32(1107358332);
+emit_32(1108123661);
+emit_32(3267579911);
+emit_32(1106436476);
+emit_32(1108123661);
+emit_32(3267067904);
+emit_32(1105876117);
+emit_32(1108123661);
+emit_32(3266555911);
+emit_32(1104926002);
+emit_32(1108123661);
+emit_32(3266043904);
+emit_32(1103527150);
+emit_32(1108123661);
+emit_32(3265531911);
+emit_32(1102838969);
+emit_32(1108123661);
+emit_32(3265019904);
+emit_32(1101768163);
+emit_32(1108123661);
+emit_32(3264507911);
+emit_32(1100951952);
+emit_32(1108123661);
+emit_32(3263995904);
+emit_32(1099817497);
+emit_32(1108123661);
+emit_32(3263483911);
+emit_32(1099592683);
+emit_32(1108123661);
+emit_32(3262775296);
+emit_32(1099523424);
+emit_32(1108123661);
+emit_32(3261751309);
+emit_32(1099184734);
+emit_32(1108123661);
+emit_32(3260727296);
+emit_32(1099580100);
+emit_32(1108123661);
+emit_32(3259703309);
+emit_32(1100319870);
+emit_32(1108123661);
+emit_32(3258679296);
+emit_32(1100702181);
+emit_32(1108123661);
+emit_32(3257655309);
+emit_32(1101110811);
+emit_32(1108123661);
+emit_32(3256631296);
+emit_32(1101752487);
+emit_32(1108123661);
+emit_32(3255607309);
+emit_32(1101832074);
+emit_32(1108123661);
+emit_32(3254386688);
+emit_32(1103107038);
+emit_32(1108123661);
+emit_32(3252338714);
+emit_32(1103861173);
+emit_32(1108123661);
+emit_32(3250290688);
+emit_32(1104152415);
+emit_32(1108123661);
+emit_32(3248242714);
+emit_32(1104902672);
+emit_32(1108123661);
+emit_32(3245998080);
+emit_32(1106376602);
+emit_32(1108123661);
+emit_32(3241902132);
+emit_32(1107508593);
+emit_32(1108123661);
+emit_32(3237609472);
+emit_32(1108028267);
+emit_32(1108123661);
+emit_32(3229220864);
+emit_32(1108316180);
+emit_32(1108123661);
+emit_32(0);
+emit_32(1108600553);
+emit_32(1108123661);
+emit_32(1081737216);
+emit_32(1109011386);
+emit_32(1108123661);
+emit_32(3279552512);
+emit_32(1074938711);
+emit_32(1106903040);
+emit_32(3279296528);
+emit_32(1070708671);
+emit_32(1106903040);
+emit_32(3279040545);
+emit_32(1075430996);
+emit_32(1106903040);
+emit_32(3278784496);
+emit_32(1078754772);
+emit_32(1106903040);
+emit_32(3278528512);
+emit_32(1082105015);
+emit_32(1106903040);
+emit_32(3278272528);
+emit_32(1084220747);
+emit_32(1106903040);
+emit_32(3278016545);
+emit_32(1085553718);
+emit_32(1106903040);
+emit_32(3277760496);
+emit_32(1088135228);
+emit_32(1106903040);
+emit_32(3277504512);
+emit_32(1089208635);
+emit_32(1106903040);
+emit_32(3277248528);
+emit_32(1091931860);
+emit_32(1106903040);
+emit_32(3276992545);
+emit_32(1094402336);
+emit_32(1106903040);
+emit_32(3276736496);
+emit_32(1096213751);
+emit_32(1106903040);
+emit_32(3276480512);
+emit_32(1097279629);
+emit_32(1106903040);
+emit_32(3276224528);
+emit_32(1098783601);
+emit_32(1106903040);
+emit_32(3275968545);
+emit_32(1099888067);
+emit_32(1106903040);
+emit_32(3275712496);
+emit_32(1101525837);
+emit_32(1106903040);
+emit_32(3275456512);
+emit_32(1102857267);
+emit_32(1106903040);
+emit_32(3275200528);
+emit_32(1103317277);
+emit_32(1106903040);
+emit_32(3274944545);
+emit_32(1104193048);
+emit_32(1106903040);
+emit_32(3274688496);
+emit_32(1105188461);
+emit_32(1106903040);
+emit_32(3274432512);
+emit_32(1105975732);
+emit_32(1106903040);
+emit_32(3274176528);
+emit_32(1107142692);
+emit_32(1106903040);
+emit_32(3273920545);
+emit_32(1107580315);
+emit_32(1106903040);
+emit_32(3273664496);
+emit_32(1107715634);
+emit_32(1106903040);
+emit_32(3273408512);
+emit_32(1107697441);
+emit_32(1106903040);
+emit_32(3273152528);
+emit_32(1107818683);
+emit_32(1106903040);
+emit_32(3272896545);
+emit_32(1108195331);
+emit_32(1106903040);
+emit_32(3272640496);
+emit_32(1108463609);
+emit_32(1106903040);
+emit_32(3272384512);
+emit_32(1108323782);
+emit_32(1106903040);
+emit_32(3272128528);
+emit_32(1108524374);
+emit_32(1106903040);
+emit_32(3271872545);
+emit_32(1108820912);
+emit_32(1106903040);
+emit_32(3271616496);
+emit_32(1108768614);
+emit_32(1106903040);
+emit_32(3271163904);
+emit_32(1108591929);
+emit_32(1106903040);
+emit_32(3270651937);
+emit_32(1108250146);
+emit_32(1106903040);
+emit_32(3270139970);
+emit_32(1108083370);
+emit_32(1106903040);
+emit_32(3269627871);
+emit_32(1108183876);
+emit_32(1106903040);
+emit_32(3269115904);
+emit_32(1107985354);
+emit_32(1106903040);
+emit_32(3268603937);
+emit_32(1107793333);
+emit_32(1106903040);
+emit_32(3268091970);
+emit_32(1107344595);
+emit_32(1106903040);
+emit_32(3267579911);
+emit_32(1106660190);
+emit_32(1106903040);
+emit_32(3267067904);
+emit_32(1105863377);
+emit_32(1106903040);
+emit_32(3266555911);
+emit_32(1104810344);
+emit_32(1106903040);
+emit_32(3266043904);
+emit_32(1103848328);
+emit_32(1106903040);
+emit_32(3265531911);
+emit_32(1102592396);
+emit_32(1106903040);
+emit_32(3265019904);
+emit_32(1101769893);
+emit_32(1106903040);
+emit_32(3264507911);
+emit_32(1100719378);
+emit_32(1106903040);
+emit_32(3263995904);
+emit_32(1100007709);
+emit_32(1106903040);
+emit_32(3263483911);
+emit_32(1099495585);
+emit_32(1106903040);
+emit_32(3262775296);
+emit_32(1099523739);
+emit_32(1106903040);
+emit_32(3261751309);
+emit_32(1099506857);
+emit_32(1106903040);
+emit_32(3260727296);
+emit_32(1100188693);
+emit_32(1106903040);
+emit_32(3259703309);
+emit_32(1100974496);
+emit_32(1106903040);
+emit_32(3258679296);
+emit_32(1101640447);
+emit_32(1106903040);
+emit_32(3257655309);
+emit_32(1101639503);
+emit_32(1106903040);
+emit_32(3256631296);
+emit_32(1102123945);
+emit_32(1106903040);
+emit_32(3255607309);
+emit_32(1102739250);
+emit_32(1106903040);
+emit_32(3254386688);
+emit_32(1103471260);
+emit_32(1106903040);
+emit_32(3252338714);
+emit_32(1104291457);
+emit_32(1106903040);
+emit_32(3250290688);
+emit_32(1104973241);
+emit_32(1106903040);
+emit_32(3248242714);
+emit_32(1106462586);
+emit_32(1106903040);
+emit_32(3245998080);
+emit_32(1107570275);
+emit_32(1106903040);
+emit_32(3241902132);
+emit_32(1108078939);
+emit_32(1106903040);
+emit_32(3237609472);
+emit_32(1108626034);
+emit_32(1106903040);
+emit_32(3229220864);
+emit_32(1109189434);
+emit_32(1106903040);
+emit_32(0);
+emit_32(1109489300);
+emit_32(1106903040);
+emit_32(1081737216);
+emit_32(1109770397);
+emit_32(1106903040);
+emit_32(3279552512);
+emit_32(1056202922);
+emit_32(1104855066);
+emit_32(3279296528);
+emit_32(1059176634);
+emit_32(1104855066);
+emit_32(3279040545);
+emit_32(1067152489);
+emit_32(1104855066);
+emit_32(3278784496);
+emit_32(1069776361);
+emit_32(1104855066);
+emit_32(3278528512);
+emit_32(1076809790);
+emit_32(1104855066);
+emit_32(3278272528);
+emit_32(1080678154);
+emit_32(1104855066);
+emit_32(3278016545);
+emit_32(1084300292);
+emit_32(1104855066);
+emit_32(3277760496);
+emit_32(1086892330);
+emit_32(1104855066);
+emit_32(3277504512);
+emit_32(1089616510);
+emit_32(1104855066);
+emit_32(3277248528);
+emit_32(1092235758);
+emit_32(1104855066);
+emit_32(3276992545);
+emit_32(1094086505);
+emit_32(1104855066);
+emit_32(3276736496);
+emit_32(1095456260);
+emit_32(1104855066);
+emit_32(3276480512);
+emit_32(1097209794);
+emit_32(1104855066);
+emit_32(3276224528);
+emit_32(1098815478);
+emit_32(1104855066);
+emit_32(3275968545);
+emit_32(1099901331);
+emit_32(1104855066);
+emit_32(3275712496);
+emit_32(1101448138);
+emit_32(1104855066);
+emit_32(3275456512);
+emit_32(1102457340);
+emit_32(1104855066);
+emit_32(3275200528);
+emit_32(1103405724);
+emit_32(1104855014);
+emit_32(3274944545);
+emit_32(1104703652);
+emit_32(1104855066);
+emit_32(3274688496);
+emit_32(1105909409);
+emit_32(1104855014);
+emit_32(3274432512);
+emit_32(1106485392);
+emit_32(1104855066);
+emit_32(3274176528);
+emit_32(1107410708);
+emit_32(1104855014);
+emit_32(3273920545);
+emit_32(1107950751);
+emit_32(1104855066);
+emit_32(3273664496);
+emit_32(1108072569);
+emit_32(1104855014);
+emit_32(3273408512);
+emit_32(1108067090);
+emit_32(1104855066);
+emit_32(3273152528);
+emit_32(1108270514);
+emit_32(1104855014);
+emit_32(3272896545);
+emit_32(1108617121);
+emit_32(1104855066);
+emit_32(3272640496);
+emit_32(1108893604);
+emit_32(1104855014);
+emit_32(3272384512);
+emit_32(1108708478);
+emit_32(1104855066);
+emit_32(3272128528);
+emit_32(1108458498);
+emit_32(1104855014);
+emit_32(3271872545);
+emit_32(1108616544);
+emit_32(1104855066);
+emit_32(3271616496);
+emit_32(1108674898);
+emit_32(1104855014);
+emit_32(3271163904);
+emit_32(1108489064);
+emit_32(1104855066);
+emit_32(3270651937);
+emit_32(1108208884);
+emit_32(1104855014);
+emit_32(3270139970);
+emit_32(1108168330);
+emit_32(1104855066);
+emit_32(3269627871);
+emit_32(1107919032);
+emit_32(1104855014);
+emit_32(3269115904);
+emit_32(1107884900);
+emit_32(1104855066);
+emit_32(3268603937);
+emit_32(1107737995);
+emit_32(1104855014);
+emit_32(3268091970);
+emit_32(1107388714);
+emit_32(1104855066);
+emit_32(3267579911);
+emit_32(1106305876);
+emit_32(1104855014);
+emit_32(3267067904);
+emit_32(1105456634);
+emit_32(1104855066);
+emit_32(3266555911);
+emit_32(1104695683);
+emit_32(1104855014);
+emit_32(3266043904);
+emit_32(1103610459);
+emit_32(1104855066);
+emit_32(3265531911);
+emit_32(1102562093);
+emit_32(1104855014);
+emit_32(3265019904);
+emit_32(1101922409);
+emit_32(1104855066);
+emit_32(3264507911);
+emit_32(1100403809);
+emit_32(1104855066);
+emit_32(3263995904);
+emit_32(1100079589);
+emit_32(1104855066);
+emit_32(3263483911);
+emit_32(1100150630);
+emit_32(1104855066);
+emit_32(3262775296);
+emit_32(1100309489);
+emit_32(1104855066);
+emit_32(3261751309);
+emit_32(1100247676);
+emit_32(1104855066);
+emit_32(3260727296);
+emit_32(1100564555);
+emit_32(1104855066);
+emit_32(3259703309);
+emit_32(1101442528);
+emit_32(1104855066);
+emit_32(3258679296);
+emit_32(1101848484);
+emit_32(1104855066);
+emit_32(3257655309);
+emit_32(1102017567);
+emit_32(1104855014);
+emit_32(3256631296);
+emit_32(1102603144);
+emit_32(1104855066);
+emit_32(3255607309);
+emit_32(1103556772);
+emit_32(1104855014);
+emit_32(3254386688);
+emit_32(1103988313);
+emit_32(1104855066);
+emit_32(3252338714);
+emit_32(1105183113);
+emit_32(1104855014);
+emit_32(3250290688);
+emit_32(1106410471);
+emit_32(1104855066);
+emit_32(3248242714);
+emit_32(1107817844);
+emit_32(1104855014);
+emit_32(3245998080);
+emit_32(1108265874);
+emit_32(1104855066);
+emit_32(3241902132);
+emit_32(1108848489);
+emit_32(1104855014);
+emit_32(3237609472);
+emit_32(1109428929);
+emit_32(1104855066);
+emit_32(3229220864);
+emit_32(1109814464);
+emit_32(1104855014);
+emit_32(0);
+emit_32(1109989261);
+emit_32(1104855066);
+emit_32(1081737216);
+emit_32(1110109952);
+emit_32(1104855014);
+emit_32(3279552512);
+emit_32(1043753825);
+emit_32(1102807040);
+emit_32(3279296528);
+emit_32(1066019523);
+emit_32(1102807040);
+emit_32(3279040545);
+emit_32(1069754970);
+emit_32(1102807040);
+emit_32(3278784496);
+emit_32(1076201867);
+emit_32(1102807040);
+emit_32(3278528512);
+emit_32(1080094139);
+emit_32(1102807040);
+emit_32(3278272528);
+emit_32(1082614937);
+emit_32(1102807040);
+emit_32(3278016545);
+emit_32(1085915917);
+emit_32(1102807040);
+emit_32(3277760496);
+emit_32(1088968951);
+emit_32(1102807040);
+emit_32(3277504512);
+emit_32(1091412437);
+emit_32(1102807040);
+emit_32(3277248528);
+emit_32(1093562951);
+emit_32(1102807040);
+emit_32(3276992545);
+emit_32(1095461818);
+emit_32(1102807040);
+emit_32(3276736496);
+emit_32(1097780324);
+emit_32(1102807040);
+emit_32(3276480512);
+emit_32(1098541276);
+emit_32(1102807040);
+emit_32(3276224528);
+emit_32(1099184996);
+emit_32(1102807040);
+emit_32(3275968545);
+emit_32(1099512414);
+emit_32(1102807040);
+emit_32(3275712496);
+emit_32(1101300079);
+emit_32(1102807040);
+emit_32(3275456512);
+emit_32(1102630565);
+emit_32(1102807040);
+emit_32(3275200528);
+emit_32(1103513990);
+emit_32(1102807040);
+emit_32(3274944545);
+emit_32(1104603251);
+emit_32(1102807040);
+emit_32(3274688496);
+emit_32(1105499154);
+emit_32(1102807040);
+emit_32(3274432512);
+emit_32(1106400667);
+emit_32(1102807040);
+emit_32(3274176528);
+emit_32(1107499889);
+emit_32(1102807040);
+emit_32(3273920545);
+emit_32(1107983047);
+emit_32(1102807040);
+emit_32(3273664496);
+emit_32(1108263620);
+emit_32(1102807040);
+emit_32(3273408512);
+emit_32(1108637542);
+emit_32(1102807040);
+emit_32(3273152528);
+emit_32(1108628367);
+emit_32(1102807040);
+emit_32(3272896545);
+emit_32(1108868989);
+emit_32(1102807040);
+emit_32(3272640496);
+emit_32(1109049213);
+emit_32(1102807040);
+emit_32(3272384512);
+emit_32(1108849748);
+emit_32(1102807040);
+emit_32(3272128528);
+emit_32(1108540811);
+emit_32(1102807040);
+emit_32(3271872545);
+emit_32(1108655184);
+emit_32(1102807040);
+emit_32(3271616496);
+emit_32(1108572425);
+emit_32(1102807040);
+emit_32(3271163904);
+emit_32(1108411810);
+emit_32(1102807040);
+emit_32(3270651937);
+emit_32(1108042344);
+emit_32(1102807040);
+emit_32(3270139970);
+emit_32(1107971460);
+emit_32(1102807040);
+emit_32(3269627871);
+emit_32(1107793412);
+emit_32(1102807040);
+emit_32(3269115904);
+emit_32(1107689131);
+emit_32(1102807040);
+emit_32(3268603937);
+emit_32(1107563643);
+emit_32(1102807040);
+emit_32(3268091970);
+emit_32(1107010152);
+emit_32(1102807040);
+emit_32(3267579911);
+emit_32(1106032669);
+emit_32(1102807040);
+emit_32(3267067904);
+emit_32(1105136609);
+emit_32(1102807040);
+emit_32(3266555911);
+emit_32(1104406695);
+emit_32(1102807040);
+emit_32(3266043904);
+emit_32(1103385749);
+emit_32(1102807040);
+emit_32(3265531911);
+emit_32(1102373034);
+emit_32(1102807040);
+emit_32(3265019904);
+emit_32(1101728317);
+emit_32(1102807040);
+emit_32(3264507911);
+emit_32(1100615464);
+emit_32(1102807040);
+emit_32(3263995904);
+emit_32(1100840278);
+emit_32(1102807040);
+emit_32(3263483911);
+emit_32(1100652636);
+emit_32(1102807040);
+emit_32(3262775296);
+emit_32(1101193963);
+emit_32(1102807040);
+emit_32(3261751309);
+emit_32(1101527463);
+emit_32(1102807040);
+emit_32(3260727296);
+emit_32(1101300761);
+emit_32(1102807040);
+emit_32(3259703309);
+emit_32(1101861382);
+emit_32(1102807040);
+emit_32(3258679296);
+emit_32(1102090338);
+emit_32(1102807040);
+emit_32(3257655309);
+emit_32(1102730966);
+emit_32(1102807040);
+emit_32(3256631296);
+emit_32(1103554255);
+emit_32(1102807040);
+emit_32(3255607309);
+emit_32(1104113408);
+emit_32(1102807040);
+emit_32(3254386688);
+emit_32(1104786647);
+emit_32(1102807040);
+emit_32(3252338714);
+emit_32(1106105913);
+emit_32(1102807040);
+emit_32(3250290688);
+emit_32(1107509877);
+emit_32(1102807040);
+emit_32(3248242714);
+emit_32(1108222175);
+emit_32(1102807040);
+emit_32(3245998080);
+emit_32(1108925324);
+emit_32(1102807040);
+emit_32(3241902132);
+emit_32(1109456873);
+emit_32(1102807040);
+emit_32(3237609472);
+emit_32(1109851609);
+emit_32(1102807040);
+emit_32(3229220864);
+emit_32(1110277358);
+emit_32(1102807040);
+emit_32(0);
+emit_32(1110377130);
+emit_32(1102807040);
+emit_32(1081737216);
+emit_32(1110619796);
+emit_32(1102807040);
+emit_32(3279552512);
+emit_32(1041074638);
+emit_32(1100759066);
+emit_32(3279296528);
+emit_32(1068712015);
+emit_32(1100759066);
+emit_32(3279040545);
+emit_32(1079048248);
+emit_32(1100759066);
+emit_32(3278784496);
+emit_32(1080674002);
+emit_32(1100759066);
+emit_32(3278528512);
+emit_32(1084030494);
+emit_32(1100759066);
+emit_32(3278272528);
+emit_32(1086394970);
+emit_32(1100759066);
+emit_32(3278016545);
+emit_32(1090514279);
+emit_32(1100759066);
+emit_32(3277760496);
+emit_32(1092005166);
+emit_32(1100759066);
+emit_32(3277504512);
+emit_32(1092661805);
+emit_32(1100759066);
+emit_32(3277248528);
+emit_32(1094882479);
+emit_32(1100759066);
+emit_32(3276992545);
+emit_32(1096495818);
+emit_32(1100759066);
+emit_32(3276736496);
+emit_32(1098656304);
+emit_32(1100759066);
+emit_32(3276480512);
+emit_32(1098988860);
+emit_32(1100759066);
+emit_32(3276224528);
+emit_32(1099485466);
+emit_32(1100759066);
+emit_32(3275968545);
+emit_32(1100054109);
+emit_32(1100759066);
+emit_32(3275712496);
+emit_32(1101363203);
+emit_32(1100759066);
+emit_32(3275456512);
+emit_32(1102623015);
+emit_32(1100759014);
+emit_32(3275200528);
+emit_32(1103260025);
+emit_32(1100759066);
+emit_32(3274944545);
+emit_32(1104497764);
+emit_32(1100759014);
+emit_32(3274688496);
+emit_32(1105320739);
+emit_32(1100759066);
+emit_32(3274432512);
+emit_32(1106586055);
+emit_32(1100759014);
+emit_32(3274176528);
+emit_32(1107523640);
+emit_32(1100759066);
+emit_32(3273920545);
+emit_32(1108105783);
+emit_32(1100759014);
+emit_32(3273664496);
+emit_32(1108678148);
+emit_32(1100759066);
+emit_32(3273408512);
+emit_32(1109027062);
+emit_32(1100759014);
+emit_32(3273152528);
+emit_32(1108942022);
+emit_32(1100759066);
+emit_32(3272896545);
+emit_32(1108995290);
+emit_32(1100759014);
+emit_32(3272640496);
+emit_32(1108955129);
+emit_32(1100759066);
+emit_32(3272384512);
+emit_32(1108906895);
+emit_32(1100759014);
+emit_32(3272128528);
+emit_32(1108765993);
+emit_32(1100759014);
+emit_32(3271872545);
+emit_32(1108661948);
+emit_32(1100759014);
+emit_32(3271616496);
+emit_32(1108494097);
+emit_32(1100759014);
+emit_32(3271163904);
+emit_32(1108408166);
+emit_32(1100759014);
+emit_32(3270651937);
+emit_32(1107959611);
+emit_32(1100759014);
+emit_32(3270139970);
+emit_32(1107654974);
+emit_32(1100759014);
+emit_32(3269627871);
+emit_32(1107500859);
+emit_32(1100759014);
+emit_32(3269115904);
+emit_32(1107220916);
+emit_32(1100759014);
+emit_32(3268603937);
+emit_32(1106950121);
+emit_32(1100759014);
+emit_32(3268091970);
+emit_32(1106110684);
+emit_32(1100759014);
+emit_32(3267579911);
+emit_32(1105572449);
+emit_32(1100759014);
+emit_32(3267067904);
+emit_32(1105141642);
+emit_32(1100759014);
+emit_32(3266555911);
+emit_32(1104163950);
+emit_32(1100759014);
+emit_32(3266043904);
+emit_32(1103388685);
+emit_32(1100759014);
+emit_32(3265531911);
+emit_32(1102762790);
+emit_32(1100759014);
+emit_32(3265019904);
+emit_32(1101771361);
+emit_32(1100759066);
+emit_32(3264507911);
+emit_32(1101188668);
+emit_32(1100759066);
+emit_32(3263995904);
+emit_32(1101103314);
+emit_32(1100759066);
+emit_32(3263483911);
+emit_32(1101520595);
+emit_32(1100759066);
+emit_32(3262775296);
+emit_32(1102173438);
+emit_32(1100759014);
+emit_32(3261751309);
+emit_32(1102239498);
+emit_32(1100759014);
+emit_32(3260727296);
+emit_32(1102454928);
+emit_32(1100759014);
+emit_32(3259703309);
+emit_32(1102538762);
+emit_32(1100759014);
+emit_32(3258679296);
+emit_32(1102868120);
+emit_32(1100759014);
+emit_32(3257655309);
+emit_32(1103304380);
+emit_32(1100759014);
+emit_32(3256631296);
+emit_32(1103894256);
+emit_32(1100759014);
+emit_32(3255607309);
+emit_32(1104606187);
+emit_32(1100759014);
+emit_32(3254386688);
+emit_32(1105706615);
+emit_32(1100759014);
+emit_32(3252338714);
+emit_32(1106778469);
+emit_32(1100759014);
+emit_32(3250290688);
+emit_32(1108039618);
+emit_32(1100759014);
+emit_32(3248242714);
+emit_32(1108668894);
+emit_32(1100759014);
+emit_32(3245998080);
+emit_32(1109286558);
+emit_32(1100759014);
+emit_32(3241902132);
+emit_32(1109804738);
+emit_32(1100759014);
+emit_32(3237609472);
+emit_32(1110243829);
+emit_32(1100759014);
+emit_32(3229220864);
+emit_32(1110734746);
+emit_32(1100759014);
+emit_32(0);
+emit_32(1110902178);
+emit_32(1100759014);
+emit_32(1081737216);
+emit_32(1111203643);
+emit_32(1100759014);
+emit_32(3279552512);
+emit_32(1055720947);
+emit_32(1098514432);
+emit_32(3279296528);
+emit_32(1074391480);
+emit_32(1098514432);
+emit_32(3279040545);
+emit_32(1080839929);
+emit_32(1098514432);
+emit_32(3278784496);
+emit_32(1084004468);
+emit_32(1098514432);
+emit_32(3278528512);
+emit_32(1088331836);
+emit_32(1098514432);
+emit_32(3278272528);
+emit_32(1090916618);
+emit_32(1098514432);
+emit_32(3278016545);
+emit_32(1091793217);
+emit_32(1098514432);
+emit_32(3277760496);
+emit_32(1092681623);
+emit_32(1098514432);
+emit_32(3277504512);
+emit_32(1094343931);
+emit_32(1098514432);
+emit_32(3277248528);
+emit_32(1096031404);
+emit_32(1098514432);
+emit_32(3276992545);
+emit_32(1097722652);
+emit_32(1098514432);
+emit_32(3276736496);
+emit_32(1098892129);
+emit_32(1098514432);
+emit_32(3276480512);
+emit_32(1099445043);
+emit_32(1098514432);
+emit_32(3276224528);
+emit_32(1099878158);
+emit_32(1098514432);
+emit_32(3275968545);
+emit_32(1101192548);
+emit_32(1098514432);
+emit_32(3275712496);
+emit_32(1102096839);
+emit_32(1098514432);
+emit_32(3275456512);
+emit_32(1103322992);
+emit_32(1098514432);
+emit_32(3275200528);
+emit_32(1103921152);
+emit_32(1098514432);
+emit_32(3274944545);
+emit_32(1104725200);
+emit_32(1098514432);
+emit_32(3274688496);
+emit_32(1106297907);
+emit_32(1098514432);
+emit_32(3274432512);
+emit_32(1107190193);
+emit_32(1098514432);
+emit_32(3274176528);
+emit_32(1108005172);
+emit_32(1098514432);
+emit_32(3273920545);
+emit_32(1108650361);
+emit_32(1098514432);
+emit_32(3273664496);
+emit_32(1108785837);
+emit_32(1098514432);
+emit_32(3273408512);
+emit_32(1108769610);
+emit_32(1098514432);
+emit_32(3273152528);
+emit_32(1108817661);
+emit_32(1098514432);
+emit_32(3272896545);
+emit_32(1108831240);
+emit_32(1098514432);
+emit_32(3272640496);
+emit_32(1108859630);
+emit_32(1098514432);
+emit_32(3272384512);
+emit_32(1108733356);
+emit_32(1098514432);
+emit_32(3272128528);
+emit_32(1108612271);
+emit_32(1098514432);
+emit_32(3271872545);
+emit_32(1108465523);
+emit_32(1098514432);
+emit_32(3271616496);
+emit_32(1108386120);
+emit_32(1098514432);
+emit_32(3271163904);
+emit_32(1108193260);
+emit_32(1098514432);
+emit_32(3270651937);
+emit_32(1107694767);
+emit_32(1098514432);
+emit_32(3270139970);
+emit_32(1107326665);
+emit_32(1098514432);
+emit_32(3269627871);
+emit_32(1106737994);
+emit_32(1098514432);
+emit_32(3269115904);
+emit_32(1106158394);
+emit_32(1098514432);
+emit_32(3268603937);
+emit_32(1106202906);
+emit_32(1098514432);
+emit_32(3268091970);
+emit_32(1105578951);
+emit_32(1098514432);
+emit_32(3267579911);
+emit_32(1105052566);
+emit_32(1098514432);
+emit_32(3267067904);
+emit_32(1104895908);
+emit_32(1098514432);
+emit_32(3266555911);
+emit_32(1104074873);
+emit_32(1098514432);
+emit_32(3266043904);
+emit_32(1103133881);
+emit_32(1098514432);
+emit_32(3265531911);
+emit_32(1102465938);
+emit_32(1098514432);
+emit_32(3265019904);
+emit_32(1101262907);
+emit_32(1098514432);
+emit_32(3264507911);
+emit_32(1101530399);
+emit_32(1098514432);
+emit_32(3263995904);
+emit_32(1101685588);
+emit_32(1098514432);
+emit_32(3263483911);
+emit_32(1102353111);
+emit_32(1098514432);
+emit_32(3262775296);
+emit_32(1102607496);
+emit_32(1098514432);
+emit_32(3261751309);
+emit_32(1102688970);
+emit_32(1098514432);
+emit_32(3260727296);
+emit_32(1103199522);
+emit_32(1098514432);
+emit_32(3259703309);
+emit_32(1103396916);
+emit_32(1098514432);
+emit_32(3258679296);
+emit_32(1103692248);
+emit_32(1098514432);
+emit_32(3257655309);
+emit_32(1104150266);
+emit_32(1098514432);
+emit_32(3256631296);
+emit_32(1104605715);
+emit_32(1098514432);
+emit_32(3255607309);
+emit_32(1105125337);
+emit_32(1098514432);
+emit_32(3254386688);
+emit_32(1106191267);
+emit_32(1098514432);
+emit_32(3252338714);
+emit_32(1107529407);
+emit_32(1098514432);
+emit_32(3250290688);
+emit_32(1108420880);
+emit_32(1098514432);
+emit_32(3248242714);
+emit_32(1108934001);
+emit_32(1098514432);
+emit_32(3245998080);
+emit_32(1109548859);
+emit_32(1098514432);
+emit_32(3241902132);
+emit_32(1109995631);
+emit_32(1098514432);
+emit_32(3237609472);
+emit_32(1110790845);
+emit_32(1098514432);
+emit_32(3229220864);
+emit_32(1111318856);
+emit_32(1098514432);
+emit_32(0);
+emit_32(1111747671);
+emit_32(1098514432);
+emit_32(1081737216);
+emit_32(1111812866);
+emit_32(1098514432);
+emit_32(3279552512);
+emit_32(1066749584);
+emit_32(1094418484);
+emit_32(3279296528);
+emit_32(1077908068);
+emit_32(1094418484);
+emit_32(3279040545);
+emit_32(1082923764);
+emit_32(1094418484);
+emit_32(3278784496);
+emit_32(1084680422);
+emit_32(1094418484);
+emit_32(3278528512);
+emit_32(1088094187);
+emit_32(1094418484);
+emit_32(3278272528);
+emit_32(1090882015);
+emit_32(1094418484);
+emit_32(3278016545);
+emit_32(1091863944);
+emit_32(1094418484);
+emit_32(3277760496);
+emit_32(1092512425);
+emit_32(1094418484);
+emit_32(3277504512);
+emit_32(1093582035);
+emit_32(1094418380);
+emit_32(3277248528);
+emit_32(1096483445);
+emit_32(1094418380);
+emit_32(3276992545);
+emit_32(1098671194);
+emit_32(1094418380);
+emit_32(3276736496);
+emit_32(1099029545);
+emit_32(1094418380);
+emit_32(3276480512);
+emit_32(1099564319);
+emit_32(1094418380);
+emit_32(3276224528);
+emit_32(1100538603);
+emit_32(1094418380);
+emit_32(3275968545);
+emit_32(1101777758);
+emit_32(1094418380);
+emit_32(3275712496);
+emit_32(1103112962);
+emit_32(1094418380);
+emit_32(3275456512);
+emit_32(1104081112);
+emit_32(1094418380);
+emit_32(3275200528);
+emit_32(1104685826);
+emit_32(1094418380);
+emit_32(3274944545);
+emit_32(1105332273);
+emit_32(1094418380);
+emit_32(3274688496);
+emit_32(1107088428);
+emit_32(1094418380);
+emit_32(3274432512);
+emit_32(1107461145);
+emit_32(1094418380);
+emit_32(3274176528);
+emit_32(1108070262);
+emit_32(1094418380);
+emit_32(3273920545);
+emit_32(1108560734);
+emit_32(1094418380);
+emit_32(3273664496);
+emit_32(1108646822);
+emit_32(1094418380);
+emit_32(3273408512);
+emit_32(1108781538);
+emit_32(1094418380);
+emit_32(3273152528);
+emit_32(1108714507);
+emit_32(1094418380);
+emit_32(3272896545);
+emit_32(1108628105);
+emit_32(1094418380);
+emit_32(3272640496);
+emit_32(1108772101);
+emit_32(1094418380);
+emit_32(3272384512);
+emit_32(1108535384);
+emit_32(1094418380);
+emit_32(3272128528);
+emit_32(1108471736);
+emit_32(1094418380);
+emit_32(3271872545);
+emit_32(1108149718);
+emit_32(1094418380);
+emit_32(3271616496);
+emit_32(1108005775);
+emit_32(1094418380);
+emit_32(3271163904);
+emit_32(1107845369);
+emit_32(1094418380);
+emit_32(3270651937);
+emit_32(1107488748);
+emit_32(1094418380);
+emit_32(3270139970);
+emit_32(1107065831);
+emit_32(1094418380);
+emit_32(3269627871);
+emit_32(1106640477);
+emit_32(1094418380);
+emit_32(3269115904);
+emit_32(1106331986);
+emit_32(1094418380);
+emit_32(3268603937);
+emit_32(1106202801);
+emit_32(1094418380);
+emit_32(3268091970);
+emit_32(1105489140);
+emit_32(1094418380);
+emit_32(3267579911);
+emit_32(1104258059);
+emit_32(1094418380);
+emit_32(3267067904);
+emit_32(1104173177);
+emit_32(1094418380);
+emit_32(3266555911);
+emit_32(1103722237);
+emit_32(1094418380);
+emit_32(3266043904);
+emit_32(1102993687);
+emit_32(1094418380);
+emit_32(3265531911);
+emit_32(1102417861);
+emit_32(1094418380);
+emit_32(3265019904);
+emit_32(1102043519);
+emit_32(1094418380);
+emit_32(3264507911);
+emit_32(1102232840);
+emit_32(1094418380);
+emit_32(3263995904);
+emit_32(1102313370);
+emit_32(1094418380);
+emit_32(3263483911);
+emit_32(1102548199);
+emit_32(1094418380);
+emit_32(3262775296);
+emit_32(1102923222);
+emit_32(1094418380);
+emit_32(3261751309);
+emit_32(1103187621);
+emit_32(1094418380);
+emit_32(3260727296);
+emit_32(1103562329);
+emit_32(1094418380);
+emit_32(3259703309);
+emit_32(1103808220);
+emit_32(1094418380);
+emit_32(3258679296);
+emit_32(1104024646);
+emit_32(1094418380);
+emit_32(3257655309);
+emit_32(1104470344);
+emit_32(1094418380);
+emit_32(3256631296);
+emit_32(1104938690);
+emit_32(1094418380);
+emit_32(3255607309);
+emit_32(1105867624);
+emit_32(1094418380);
+emit_32(3254386688);
+emit_32(1107251534);
+emit_32(1094418380);
+emit_32(3252338714);
+emit_32(1107872029);
+emit_32(1094418380);
+emit_32(3250290688);
+emit_32(1108547574);
+emit_32(1094418380);
+emit_32(3248242714);
+emit_32(1109195253);
+emit_32(1094418380);
+emit_32(3245998080);
+emit_32(1109741247);
+emit_32(1094418380);
+emit_32(3241902132);
+emit_32(1110512291);
+emit_32(1094418380);
+emit_32(3237609472);
+emit_32(1111292851);
+emit_32(1094418380);
+emit_32(3229220864);
+emit_32(1111810349);
+emit_32(1094418380);
+emit_32(0);
+emit_32(1112081590);
+emit_32(1094418380);
+emit_32(1081737216);
+emit_32(1112309314);
+emit_32(1094418380);
+emit_32(3279552512);
+emit_32(1069773845);
+emit_32(1090125824);
+emit_32(3279296528);
+emit_32(1077819820);
+emit_32(1090125824);
+emit_32(3279040545);
+emit_32(1081179122);
+emit_32(1090125824);
+emit_32(3278784496);
+emit_32(1083831117);
+emit_32(1090125824);
+emit_32(3278528512);
+emit_32(1086208512);
+emit_32(1090125824);
+emit_32(3278272528);
+emit_32(1089372988);
+emit_32(1090125824);
+emit_32(3278016545);
+emit_32(1091534376);
+emit_32(1090125824);
+emit_32(3277760496);
+emit_32(1091959238);
+emit_32(1090125824);
+emit_32(3277504512);
+emit_32(1093016538);
+emit_32(1090125824);
+emit_32(3277248528);
+emit_32(1095828190);
+emit_32(1090125824);
+emit_32(3276992545);
+emit_32(1098471021);
+emit_32(1090125824);
+emit_32(3276736496);
+emit_32(1099512257);
+emit_32(1090125824);
+emit_32(3276480512);
+emit_32(1100641206);
+emit_32(1090125824);
+emit_32(3276224528);
+emit_32(1101920207);
+emit_32(1090125824);
+emit_32(3275968545);
+emit_32(1102579027);
+emit_32(1090125824);
+emit_32(3275712496);
+emit_32(1103724596);
+emit_32(1090125824);
+emit_32(3275456512);
+emit_32(1104932294);
+emit_32(1090125824);
+emit_32(3275200528);
+emit_32(1105540415);
+emit_32(1090125824);
+emit_32(3274944545);
+emit_32(1105706877);
+emit_32(1090125824);
+emit_32(3274688496);
+emit_32(1106838815);
+emit_32(1090125824);
+emit_32(3274432512);
+emit_32(1107416056);
+emit_32(1090125824);
+emit_32(3274176528);
+emit_32(1107934210);
+emit_32(1090125824);
+emit_32(3273920545);
+emit_32(1108321868);
+emit_32(1090125824);
+emit_32(3273664496);
+emit_32(1108477949);
+emit_32(1090125824);
+emit_32(3273408512);
+emit_32(1108606950);
+emit_32(1090125824);
+emit_32(3273152528);
+emit_32(1108594314);
+emit_32(1090125824);
+emit_32(3272896545);
+emit_32(1108861596);
+emit_32(1090125824);
+emit_32(3272640496);
+emit_32(1108850508);
+emit_32(1090125824);
+emit_32(3272384512);
+emit_32(1108746804);
+emit_32(1090125824);
+emit_32(3272128528);
+emit_32(1108418180);
+emit_32(1090125824);
+emit_32(3271872545);
+emit_32(1108132600);
+emit_32(1090125824);
+emit_32(3271616496);
+emit_32(1107751233);
+emit_32(1090125824);
+emit_32(3271163904);
+emit_32(1107845920);
+emit_32(1090125824);
+emit_32(3270651937);
+emit_32(1107711440);
+emit_32(1090125824);
+emit_32(3270139970);
+emit_32(1107541911);
+emit_32(1090125824);
+emit_32(3269627871);
+emit_32(1107305510);
+emit_32(1090125824);
+emit_32(3269115904);
+emit_32(1107014346);
+emit_32(1090125824);
+emit_32(3268603937);
+emit_32(1106519471);
+emit_32(1090125824);
+emit_32(3268091970);
+emit_32(1105586867);
+emit_32(1090125824);
+emit_32(3267579911);
+emit_32(1104817160);
+emit_32(1090125824);
+emit_32(3267067904);
+emit_32(1104215645);
+emit_32(1090125824);
+emit_32(3266555911);
+emit_32(1103400324);
+emit_32(1090125824);
+emit_32(3266043904);
+emit_32(1103065776);
+emit_32(1090125824);
+emit_32(3265531911);
+emit_32(1102978377);
+emit_32(1090125824);
+emit_32(3265019904);
+emit_32(1102293919);
+emit_32(1090125824);
+emit_32(3264507911);
+emit_32(1102336229);
+emit_32(1090125824);
+emit_32(3263995904);
+emit_32(1102542117);
+emit_32(1090125824);
+emit_32(3263483911);
+emit_32(1102806306);
+emit_32(1090125824);
+emit_32(3262775296);
+emit_32(1103245240);
+emit_32(1090125824);
+emit_32(3261751309);
+emit_32(1103200151);
+emit_32(1090125824);
+emit_32(3260727296);
+emit_32(1103241727);
+emit_32(1090125824);
+emit_32(3259703309);
+emit_32(1103758465);
+emit_32(1090125824);
+emit_32(3258679296);
+emit_32(1104333714);
+emit_32(1090125824);
+emit_32(3257655309);
+emit_32(1104589095);
+emit_32(1090125824);
+emit_32(3256631296);
+emit_32(1104963961);
+emit_32(1090125824);
+emit_32(3255607309);
+emit_32(1106480516);
+emit_32(1090125824);
+emit_32(3254386688);
+emit_32(1107703811);
+emit_32(1090125824);
+emit_32(3252338714);
+emit_32(1108381768);
+emit_32(1090125824);
+emit_32(3250290688);
+emit_32(1108898034);
+emit_32(1090125824);
+emit_32(3248242714);
+emit_32(1109345462);
+emit_32(1090125824);
+emit_32(3245998080);
+emit_32(1109947738);
+emit_32(1090125824);
+emit_32(3241902132);
+emit_32(1110798578);
+emit_32(1090125824);
+emit_32(3237609472);
+emit_32(1111401483);
+emit_32(1090125824);
+emit_32(3229220864);
+emit_32(1112005149);
+emit_32(1090125824);
+emit_32(0);
+emit_32(1112489827);
+emit_32(1090125824);
+emit_32(1081737216);
+emit_32(1112605380);
+emit_32(1090125824);
+emit_32(3279552512);
+emit_32(1041185636);
+emit_32(1081737216);
+emit_32(3279296528);
+emit_32(1071476480);
+emit_32(1081737216);
+emit_32(3279040545);
+emit_32(1076263523);
+emit_32(1081737216);
+emit_32(3278784496);
+emit_32(1082158660);
+emit_32(1081737216);
+emit_32(3278528512);
+emit_32(1084513929);
+emit_32(1081737216);
+emit_32(3278272528);
+emit_32(1087785717);
+emit_32(1081737216);
+emit_32(3278016545);
+emit_32(1090972056);
+emit_32(1081737216);
+emit_32(3277760496);
+emit_32(1092442569);
+emit_32(1081737216);
+emit_32(3277504512);
+emit_32(1094046974);
+emit_32(1081737216);
+emit_32(3277248528);
+emit_32(1097043280);
+emit_32(1081737216);
+emit_32(3276992545);
+emit_32(1098999818);
+emit_32(1081737216);
+emit_32(3276736496);
+emit_32(1100434742);
+emit_32(1081737216);
+emit_32(3276480512);
+emit_32(1101659007);
+emit_32(1081737216);
+emit_32(3276224528);
+emit_32(1102608545);
+emit_32(1081737216);
+emit_32(3275968545);
+emit_32(1103417836);
+emit_32(1081737216);
+emit_32(3275712496);
+emit_32(1104053168);
+emit_32(1081737216);
+emit_32(3275456512);
+emit_32(1104973450);
+emit_32(1081737216);
+emit_32(3275200528);
+emit_32(1105837477);
+emit_32(1081737216);
+emit_32(3274944545);
+emit_32(1106081743);
+emit_32(1081737216);
+emit_32(3274688496);
+emit_32(1106636492);
+emit_32(1081737216);
+emit_32(3274432512);
+emit_32(1107002917);
+emit_32(1081737216);
+emit_32(3274176528);
+emit_32(1107580184);
+emit_32(1081737216);
+emit_32(3273920545);
+emit_32(1107983729);
+emit_32(1081737216);
+emit_32(3273664496);
+emit_32(1108213550);
+emit_32(1081737216);
+emit_32(3273408512);
+emit_32(1108715137);
+emit_32(1081737216);
+emit_32(3273152528);
+emit_32(1108987871);
+emit_32(1081737216);
+emit_32(3272896545);
+emit_32(1109130582);
+emit_32(1081737216);
+emit_32(3272640496);
+emit_32(1109075454);
+emit_32(1081737216);
+emit_32(3272384512);
+emit_32(1108764813);
+emit_32(1081737216);
+emit_32(3272128528);
+emit_32(1108391939);
+emit_32(1081737216);
+emit_32(3271872545);
+emit_32(1108080224);
+emit_32(1081737216);
+emit_32(3271616496);
+emit_32(1107854728);
+emit_32(1081737216);
+emit_32(3271163904);
+emit_32(1107912740);
+emit_32(1081737216);
+emit_32(3270651937);
+emit_32(1107731730);
+emit_32(1081737216);
+emit_32(3270139970);
+emit_32(1107480989);
+emit_32(1081737216);
+emit_32(3269627871);
+emit_32(1107400013);
+emit_32(1081737216);
+emit_32(3269115904);
+emit_32(1106814855);
+emit_32(1081737216);
+emit_32(3268603937);
+emit_32(1106747641);
+emit_32(1081737216);
+emit_32(3268091970);
+emit_32(1106153570);
+emit_32(1081737216);
+emit_32(3267579911);
+emit_32(1105450553);
+emit_32(1081737216);
+emit_32(3267067904);
+emit_32(1105015289);
+emit_32(1081737216);
+emit_32(3266555911);
+emit_32(1103926185);
+emit_32(1081737216);
+emit_32(3266043904);
+emit_32(1103220965);
+emit_32(1081737216);
+emit_32(3265531911);
+emit_32(1102714556);
+emit_32(1081737216);
+emit_32(3265019904);
+emit_32(1102293972);
+emit_32(1081737216);
+emit_32(3264507911);
+emit_32(1102696206);
+emit_32(1081737216);
+emit_32(3263995904);
+emit_32(1102841119);
+emit_32(1081737216);
+emit_32(3263483911);
+emit_32(1102940104);
+emit_32(1081737216);
+emit_32(3262775296);
+emit_32(1103457681);
+emit_32(1081737216);
+emit_32(3261751309);
+emit_32(1103885553);
+emit_32(1081737216);
+emit_32(3260727296);
+emit_32(1104135953);
+emit_32(1081737216);
+emit_32(3259703309);
+emit_32(1104254180);
+emit_32(1081737216);
+emit_32(3258679296);
+emit_32(1104598218);
+emit_32(1081737216);
+emit_32(3257655309);
+emit_32(1105055869);
+emit_32(1081737216);
+emit_32(3256631296);
+emit_32(1105830661);
+emit_32(1081737216);
+emit_32(3255607309);
+emit_32(1107186156);
+emit_32(1081737216);
+emit_32(3254386688);
+emit_32(1107890222);
+emit_32(1081737216);
+emit_32(3252338714);
+emit_32(1108342578);
+emit_32(1081737216);
+emit_32(3250290688);
+emit_32(1108968106);
+emit_32(1081737216);
+emit_32(3248242714);
+emit_32(1109363314);
+emit_32(1081737216);
+emit_32(3245998080);
+emit_32(1110217982);
+emit_32(1081737216);
+emit_32(3241902132);
+emit_32(1110836747);
+emit_32(1081737216);
+emit_32(3237609472);
+emit_32(1111340011);
+emit_32(1081737216);
+emit_32(3229220864);
+emit_32(1111989472);
+emit_32(1081737216);
+emit_32(0);
+emit_32(1112547577);
+emit_32(1081737216);
+emit_32(1081737216);
+emit_32(1112701298);
+emit_32(1081737216);
+emit_start(_ZTIN16btCollisionWorld17RayResultCallbackE)
+emit_32(_ZTVN10__cxxabiv117__class_type_infoE+8);
+emit_32(_ZTSN16btCollisionWorld17RayResultCallbackE);
+emit_start(_ZTSN16btCollisionWorld17RayResultCallbackE)
+emit_string('N16btCollisionWorld17RayResultCallbackE\x00');
+emit_start(_ZTVN16btCollisionWorld24ClosestRayResultCallbackE)
+emit_32(0);
+emit_32(_ZTIN16btCollisionWorld24ClosestRayResultCallbackE);
+emit_32(_ZN16btCollisionWorld24ClosestRayResultCallbackD1Ev__index__);
+emit_32(_ZN16btCollisionWorld24ClosestRayResultCallbackD0Ev__index__);
+emit_32(_ZNK16btCollisionWorld17RayResultCallback14needsCollisionEP17btBroadphaseProxy__index__);
+emit_32(_ZN16btCollisionWorld24ClosestRayResultCallback15addSingleResultERNS_14LocalRayResultEb__index__);
+emit_start(_ZTIN16btCollisionWorld24ClosestRayResultCallbackE)
+emit_32(_ZTVN10__cxxabiv120__si_class_type_infoE+8);
+emit_32(_ZTSN16btCollisionWorld24ClosestRayResultCallbackE);
+emit_32(_ZTIN16btCollisionWorld17RayResultCallbackE);
+emit_start(_ZTSN16btCollisionWorld24ClosestRayResultCallbackE)
+emit_string('N16btCollisionWorld24ClosestRayResultCallbackE\x00');
+emit_start(_ZTI13btMotionState)
+emit_32(_ZTVN10__cxxabiv117__class_type_infoE+8);
+emit_32(_ZTS13btMotionState);
+emit_start(_ZTS13btMotionState)
+emit_string('13btMotionState\x00');
+emit_start(_ZTV20btDefaultMotionState)
+emit_32(0);
+emit_32(_ZTI20btDefaultMotionState);
+emit_32(_ZN20btDefaultMotionStateD1Ev__index__);
+emit_32(_ZN20btDefaultMotionStateD0Ev__index__);
+emit_32(_ZNK20btDefaultMotionState17getWorldTransformER11btTransform__index__);
+emit_32(_ZN20btDefaultMotionState17setWorldTransformERK11btTransform__index__);
+emit_start(_ZTI20btDefaultMotionState)
+emit_32(_ZTVN10__cxxabiv120__si_class_type_infoE+8);
+emit_32(_ZTS20btDefaultMotionState);
+emit_32(_ZTI13btMotionState);
+emit_start(_ZTS20btDefaultMotionState)
+emit_string('20btDefaultMotionState\x00');
+emit_start(_ZTI17btTypedConstraint)
+emit_32(_ZTVN10__cxxabiv121__vmi_class_type_infoE+8);
+emit_32(_ZTS17btTypedConstraint);
+emit_32(0);
+emit_32(1);
+emit_32(_ZTI13btTypedObject);
+emit_32(1026);
+emit_start(_ZTS17btTypedConstraint)
+emit_string('17btTypedConstraint\x00');
+emit_start(_ZTI13btTypedObject)
+emit_32(_ZTVN10__cxxabiv117__class_type_infoE+8);
+emit_32(_ZTS13btTypedObject);
+emit_start(_ZTS13btTypedObject)
+emit_string('13btTypedObject\x00');
+emit_start(_ZTV7RagDoll)
+emit_32(0);
+emit_32(_ZTI7RagDoll);
+emit_32(_ZN7RagDollD1Ev__index__);
+emit_32(_ZN7RagDollD0Ev__index__);
+emit_start(_ZTI7RagDoll)
+emit_32(_ZTVN10__cxxabiv117__class_type_infoE+8);
+emit_32(_ZTS7RagDoll);
+emit_start(_ZTS7RagDoll)
+emit_string('7RagDoll\x00');
+emit_start(_ZTV13BenchmarkDemo)
+emit_32(0);
+emit_32(_ZTI13BenchmarkDemo);
+emit_32(_ZN15DemoApplication6myinitEv__index__);
+emit_32(_ZN15DemoApplication16getDynamicsWorldEv__index__);
+emit_32(_ZN15DemoApplication20localCreateRigidBodyEfRK11btTransformP16btCollisionShape__index__);
+emit_32(_ZN13BenchmarkDemoD1Ev__index__);
+emit_32(_ZN13BenchmarkDemoD0Ev__index__);
+emit_32(_ZN13BenchmarkDemo20clientMoveAndDisplayEv__index__);
+emit_32(_ZN13BenchmarkDemo15displayCallbackEv__index__);
+emit_start(_ZTI13BenchmarkDemo)
+emit_32(_ZTVN10__cxxabiv120__si_class_type_infoE+8);
+emit_32(_ZTS13BenchmarkDemo);
+emit_32(_ZTI15DemoApplication);
+emit_start(_ZTS13BenchmarkDemo)
+emit_string('13BenchmarkDemo\x00');
+emit_start(_ZTI15DemoApplication)
+emit_32(_ZTVN10__cxxabiv117__class_type_infoE+8);
+emit_32(_ZTS15DemoApplication);
+emit_start(_ZTS15DemoApplication)
+emit_string('15DemoApplication\x00');
+emit_start(_2E_str3)
+emit_string('rayResult.m_hitFraction <= m_closestHitFraction\x00');
+emit_start(_2E_str4)
+emit_string('../../../../src/BulletCollision/CollisionDispatch/btCollisionWorld.h\x00');
+emit_start(_2E_str5)
+emit_string('(!shape || shape->getShapeType() != INVALID_SHAPE_PROXYTYPE)\x00');
+emit_start(_2E_str6)
+emit_string('../../../../Demos/BenchmarkDemo/BenchmarkDemo.cpp\x00');
+emit_start(_2E_str7)
+emit_string('%d rays in %d ms %d %d %f\x0a\x00');
+emit_start(_ZL7TaruVtx)
+emit_32(1066080005);
+emit_32(3221161467);
+emit_32(0);
+emit_32(1061467093);
+emit_32(3221161467);
+emit_32(3208950741);
+emit_32(1067773497);
+emit_32(873485028);
+emit_32(3215257145);
+emit_32(1072250665);
+emit_32(877448406);
+emit_32(0);
+emit_32(0);
+emit_32(3221161467);
+emit_32(3213563653);
+emit_32(0);
+emit_32(0);
+emit_32(3219734313);
+emit_32(0);
+emit_32(3221161467);
+emit_32(3213563653);
+emit_32(3208950741);
+emit_32(3221161467);
+emit_32(3208950741);
+emit_32(3215257145);
+emit_32(873485028);
+emit_32(3215257145);
+emit_32(0);
+emit_32(0);
+emit_32(3219734313);
+emit_32(3213563653);
+emit_32(3221161467);
+emit_32(876839787);
+emit_32(3219734313);
+emit_32(877448406);
+emit_32(875236717);
+emit_32(3208950741);
+emit_32(3221161467);
+emit_32(1061467109);
+emit_32(3215257145);
+emit_32(881107813);
+emit_32(1067773497);
+emit_32(874053818);
+emit_32(3221161467);
+emit_32(1066080005);
+emit_32(880822819);
+emit_32(881928664);
+emit_32(1072250665);
+emit_32(1061467093);
+emit_32(3221161467);
+emit_32(1061467093);
+emit_32(1067773497);
+emit_32(881107813);
+emit_32(1067773497);
+emit_32(1061467093);
+emit_32(1073677819);
+emit_32(3208950741);
+emit_32(1066080005);
+emit_32(1073677819);
+emit_32(0);
+emit_32(0);
+emit_32(1073677819);
+emit_32(3213563653);
+emit_32(3208950741);
+emit_32(1073677819);
+emit_32(3208950741);
+emit_32(0);
+emit_32(1073677819);
+emit_32(3213563653);
+emit_32(3213563653);
+emit_32(1073677819);
+emit_32(0);
+emit_32(3208950741);
+emit_32(1073677819);
+emit_32(1061467093);
+emit_32(874053818);
+emit_32(1073677819);
+emit_32(1066080005);
+emit_32(1061467093);
+emit_32(1073677819);
+emit_32(1061467093);
+emit_32(874053818);
+emit_32(3221161467);
+emit_32(1066080005);
+emit_32(3208950741);
+emit_32(3221161467);
+emit_32(1061467109);
+emit_32(3213563653);
+emit_32(3221161467);
+emit_32(876839787);
+emit_32(3208950741);
+emit_32(3221161467);
+emit_32(3208950741);
+emit_32(0);
+emit_32(3221161467);
+emit_32(3213563653);
+emit_32(1061467093);
+emit_32(3221161467);
+emit_32(3208950741);
+emit_32(1066080005);
+emit_32(3221161467);
+emit_32(0);
+emit_32(1061467093);
+emit_32(3221161467);
+emit_32(1061467093);
+emit_32(1061467093);
+emit_32(1073677819);
+emit_32(3208950741);
+emit_32(0);
+emit_32(1073677819);
+emit_32(3213563653);
+emit_32(3208950741);
+emit_32(1073677819);
+emit_32(3208950741);
+emit_32(3213563653);
+emit_32(1073677819);
+emit_32(0);
+emit_32(3208950741);
+emit_32(1073677819);
+emit_32(1061467093);
+emit_32(874053818);
+emit_32(1073677819);
+emit_32(1066080005);
+emit_32(1061467093);
+emit_32(1073677819);
+emit_32(1061467093);
+emit_32(1066080005);
+emit_32(1073677819);
+emit_32(0);
+emit_start(LandscapeVtx)
+emit_32(Landscape01Vtx);
+emit_32(Landscape02Vtx);
+emit_32(Landscape03Vtx);
+emit_32(Landscape04Vtx);
+emit_32(Landscape05Vtx);
+emit_32(Landscape06Vtx);
+emit_32(Landscape07Vtx);
+emit_32(Landscape08Vtx);
+emit_start(Landscape01Vtx)
+emit_32(1081737258);
+emit_32(1055384563);
+emit_32(1131812880);
+emit_32(1081737258);
+emit_32(1069740626);
+emit_32(1132068864);
+emit_32(1090125824);
+emit_32(1066883130);
+emit_32(1131812880);
+emit_32(1090125845);
+emit_32(1071685776);
+emit_32(1132068864);
+emit_32(1094418484);
+emit_32(1074283351);
+emit_32(1131812880);
+emit_32(1094418484);
+emit_32(1076361335);
+emit_32(1132068864);
+emit_32(1098514432);
+emit_32(1077997197);
+emit_32(1131812880);
+emit_32(1098514432);
+emit_32(1078893017);
+emit_32(1132068864);
+emit_32(1100759066);
+emit_32(1082022680);
+emit_32(1131812880);
+emit_32(1100759066);
+emit_32(1080588228);
+emit_32(1132068864);
+emit_32(1102807040);
+emit_32(1082313744);
+emit_32(1131812880);
+emit_32(1102807040);
+emit_32(1082635783);
+emit_32(1132068864);
+emit_32(1104855066);
+emit_32(1085939489);
+emit_32(1131812880);
+emit_32(1104855066);
+emit_32(1086186513);
+emit_32(1132068864);
+emit_32(1106903040);
+emit_32(1088145253);
+emit_32(1131812880);
+emit_32(1106903040);
+emit_32(1089137122);
+emit_32(1132068864);
+emit_32(1108123661);
+emit_32(1090785431);
+emit_32(1131812880);
+emit_32(1108123661);
+emit_32(1091174473);
+emit_32(1132068864);
+emit_32(1109147648);
+emit_32(1090923801);
+emit_32(1131812880);
+emit_32(1109147648);
+emit_32(1091237136);
+emit_32(1132068864);
+emit_32(1110171661);
+emit_32(1088312773);
+emit_32(1131812880);
+emit_32(1110171661);
+emit_32(1089928629);
+emit_32(1132068864);
+emit_32(1111195648);
+emit_32(1083403361);
+emit_32(1131812880);
+emit_32(1111195648);
+emit_32(1086579729);
+emit_32(1132068864);
+emit_32(1112219661);
+emit_32(1080632646);
+emit_32(1131812880);
+emit_32(1112219661);
+emit_32(1084500256);
+emit_32(1132068864);
+emit_32(1113243648);
+emit_32(1082171222);
+emit_32(1131812880);
+emit_32(1113243648);
+emit_32(1085286142);
+emit_32(1132068864);
+emit_32(1114267661);
+emit_32(1082256177);
+emit_32(1131812880);
+emit_32(1114267661);
+emit_32(1084896932);
+emit_32(1132068864);
+emit_32(1115291648);
+emit_32(1082088279);
+emit_32(1131812880);
+emit_32(1115291648);
+emit_32(1085314391);
+emit_32(1132068864);
+emit_32(1116000263);
+emit_32(1085158761);
+emit_32(1131812880);
+emit_32(1116000263);
+emit_32(1088003066);
+emit_32(1132068864);
+emit_32(1116512256);
+emit_32(1086405959);
+emit_32(1131812880);
+emit_32(1116512256);
+emit_32(1089298141);
+emit_32(1132068864);
+emit_32(1117024263);
+emit_32(1087104604);
+emit_32(1131812880);
+emit_32(1117024263);
+emit_32(1090687347);
+emit_32(1132068864);
+emit_32(1117536256);
+emit_32(1087885311);
+emit_32(1131812880);
+emit_32(1117536256);
+emit_32(1091275053);
+emit_32(1132068864);
+emit_32(1118048263);
+emit_32(1089217925);
+emit_32(1131812880);
+emit_32(1118048263);
+emit_32(1092734157);
+emit_32(1132068864);
+emit_32(1118560256);
+emit_32(1091544359);
+emit_32(1131812880);
+emit_32(1118560256);
+emit_32(1093101054);
+emit_32(1132068864);
+emit_32(1119072263);
+emit_32(1093751695);
+emit_32(1131812880);
+emit_32(1119072263);
+emit_32(1094336171);
+emit_32(1132068864);
+emit_32(1119584256);
+emit_32(1095057906);
+emit_32(1131812880);
+emit_32(1119584256);
+emit_32(1095906414);
+emit_32(1132068864);
+emit_32(1120096263);
+emit_32(1096387500);
+emit_32(1131812880);
+emit_32(1120096263);
+emit_32(1097119721);
+emit_32(1132068864);
+emit_32(1120608322);
+emit_32(1098446484);
+emit_32(1131812880);
+emit_32(1120608322);
+emit_32(1099405040);
+emit_32(1132068864);
+emit_32(1121120289);
+emit_32(1099429000);
+emit_32(1131812880);
+emit_32(1121120289);
+emit_32(1100058250);
+emit_32(1132068864);
+emit_32(1121632256);
+emit_32(1099896455);
+emit_32(1131812880);
+emit_32(1121632256);
+emit_32(1100747951);
+emit_32(1132068864);
+emit_32(1122144223);
+emit_32(1100443235);
+emit_32(1131812880);
+emit_32(1122144223);
+emit_32(1101491654);
+emit_32(1132068864);
+emit_32(1122656322);
+emit_32(1100473854);
+emit_32(1131812880);
+emit_32(1122656322);
+emit_32(1101038145);
+emit_32(1132068864);
+emit_32(1123168289);
+emit_32(1100215956);
+emit_32(1131812880);
+emit_32(1123168289);
+emit_32(1101301390);
+emit_32(1132068864);
+emit_32(1123680256);
+emit_32(1101082604);
+emit_32(1131812880);
+emit_32(1123680256);
+emit_32(1101605949);
+emit_32(1132068864);
+emit_32(1124132848);
+emit_32(1101268622);
+emit_32(1131812880);
+emit_32(1124132848);
+emit_32(1102212026);
+emit_32(1132068864);
+emit_32(1124388897);
+emit_32(1101640237);
+emit_32(1131812880);
+emit_32(1124388897);
+emit_32(1102532523);
+emit_32(1132068864);
+emit_32(1124644880);
+emit_32(1102204895);
+emit_32(1131812880);
+emit_32(1124644880);
+emit_32(1103346847);
+emit_32(1132068864);
+emit_32(1124900864);
+emit_32(1102705643);
+emit_32(1131812880);
+emit_32(1124900864);
+emit_32(1103273709);
+emit_32(1132068864);
+emit_32(1125156848);
+emit_32(1102314000);
+emit_32(1131812880);
+emit_32(1125156848);
+emit_32(1103265949);
+emit_32(1132068864);
+emit_32(1125412897);
+emit_32(1102386142);
+emit_32(1131812880);
+emit_32(1125412897);
+emit_32(1103012351);
+emit_32(1132068864);
+emit_32(1125668880);
+emit_32(1102880021);
+emit_32(1131812880);
+emit_32(1125668880);
+emit_32(1103173727);
+emit_32(1132068864);
+emit_32(1125924864);
+emit_32(1103727428);
+emit_32(1131812880);
+emit_32(1125924864);
+emit_32(1103580732);
+emit_32(1132068864);
+emit_32(1126180848);
+emit_32(1103758413);
+emit_32(1131812880);
+emit_32(1126180848);
+emit_32(1103482113);
+emit_32(1132068864);
+emit_32(1126436897);
+emit_32(1104015471);
+emit_32(1131812880);
+emit_32(1126436897);
+emit_32(1103163241);
+emit_32(1132068864);
+emit_32(1126692880);
+emit_32(1103273342);
+emit_32(1131812880);
+emit_32(1126692880);
+emit_32(1103421348);
+emit_32(1132068864);
+emit_32(1126948864);
+emit_32(1103651353);
+emit_32(1131812880);
+emit_32(1126948864);
+emit_32(1103608938);
+emit_32(1132068864);
+emit_32(1127204848);
+emit_32(1103631850);
+emit_32(1131812880);
+emit_32(1127204848);
+emit_32(1103515039);
+emit_32(1132068864);
+emit_32(1127460897);
+emit_32(1102883324);
+emit_32(1131812880);
+emit_32(1127460897);
+emit_32(1102412041);
+emit_32(1132068864);
+emit_32(1127716880);
+emit_32(1101507068);
+emit_32(1131812880);
+emit_32(1127716880);
+emit_32(1101349991);
+emit_32(1132068864);
+emit_32(1127972864);
+emit_32(1100875563);
+emit_32(1131812880);
+emit_32(1127972864);
+emit_32(1101021210);
+emit_32(1132068864);
+emit_32(1128228848);
+emit_32(1101251582);
+emit_32(1131812880);
+emit_32(1128228848);
+emit_32(1101209063);
+emit_32(1132068864);
+emit_32(1128484897);
+emit_32(1100876402);
+emit_32(1131812880);
+emit_32(1128484897);
+emit_32(1101824944);
+emit_32(1132068864);
+emit_32(1128740880);
+emit_32(1100846465);
+emit_32(1131812880);
+emit_32(1128740880);
+emit_32(1101829662);
+emit_32(1132068864);
+emit_32(1128996864);
+emit_32(1101043178);
+emit_32(1131812880);
+emit_32(1128996864);
+emit_32(1101204029);
+emit_32(1132068864);
+emit_32(1129252848);
+emit_32(1100934912);
+emit_32(1131812880);
+emit_32(1129252848);
+emit_32(1100678640);
+emit_32(1132068864);
+emit_32(1129508897);
+emit_32(1100716494);
+emit_32(1131812880);
+emit_32(1129508897);
+emit_32(1100794770);
+emit_32(1132068864);
+emit_32(1129764880);
+emit_32(1100633499);
+emit_32(1131812880);
+emit_32(1129764880);
+emit_32(1100531158);
+emit_32(1132068864);
+emit_32(1130020864);
+emit_32(1100357409);
+emit_32(1131812880);
+emit_32(1130020864);
+emit_32(1100965793);
+emit_32(1132068864);
+emit_32(1130276848);
+emit_32(1100382418);
+emit_32(1131812880);
+emit_32(1130276848);
+emit_32(1100936852);
+emit_32(1132068864);
+emit_32(1130532897);
+emit_32(1100142189);
+emit_32(1131812880);
+emit_32(1130532897);
+emit_32(1100410834);
+emit_32(1132068864);
+emit_32(1130788880);
+emit_32(1099421503);
+emit_32(1131812880);
+emit_32(1130788880);
+emit_32(1099690462);
+emit_32(1132068864);
+emit_32(1131044864);
+emit_32(1098506358);
+emit_32(1131812880);
+emit_32(1131044864);
+emit_32(1098996725);
+emit_32(1132068864);
+emit_32(1131300848);
+emit_32(1098434740);
+emit_32(1131812880);
+emit_32(1131300848);
+emit_32(1098247465);
+emit_32(1132068864);
+emit_32(1131556897);
+emit_32(1098117861);
+emit_32(1131812880);
+emit_32(1131556897);
+emit_32(1097891158);
+emit_32(1132068864);
+emit_32(1131812880);
+emit_32(1096949432);
+emit_32(1131812880);
+emit_32(1131812880);
+emit_32(1097085433);
+emit_32(1132068864);
+emit_32(1132068864);
+emit_32(1097236532);
+emit_32(1131812880);
+emit_32(1132068864);
+emit_32(1097193960);
+emit_32(1132068864);
+emit_32(1081737258);
+emit_32(1074643096);
+emit_32(1131556897);
+emit_32(1090125866);
+emit_32(1074941647);
+emit_32(1131556897);
+emit_32(1094418484);
+emit_32(1081645067);
+emit_32(1131556897);
+emit_32(1098514432);
+emit_32(1079576814);
+emit_32(1131556897);
+emit_32(1100759066);
+emit_32(1080655044);
+emit_32(1131556897);
+emit_32(1102807040);
+emit_32(1082425543);
+emit_32(1131556897);
+emit_32(1104855066);
+emit_32(1085781658);
+emit_32(1131556897);
+emit_32(1106903040);
+emit_32(1087711834);
+emit_32(1131556897);
+emit_32(1108123661);
+emit_32(1089079786);
+emit_32(1131556897);
+emit_32(1109147648);
+emit_32(1089855732);
+emit_32(1131556897);
+emit_32(1110171661);
+emit_32(1088401776);
+emit_32(1131556897);
+emit_32(1111195648);
+emit_32(1084013213);
+emit_32(1131556897);
+emit_32(1112219661);
+emit_32(1076464473);
+emit_32(1131556897);
+emit_32(1113243648);
+emit_32(1076936835);
+emit_32(1131556897);
+emit_32(1114267661);
+emit_32(1078376488);
+emit_32(1131556897);
+emit_32(1115291648);
+emit_32(1083428884);
+emit_32(1131556897);
+emit_32(1116000263);
+emit_32(1084998686);
+emit_32(1131556897);
+emit_32(1116512256);
+emit_32(1085103334);
+emit_32(1131556897);
+emit_32(1117024263);
+emit_32(1085114239);
+emit_32(1131556897);
+emit_32(1117536256);
+emit_32(1085358662);
+emit_32(1131556897);
+emit_32(1118048263);
+emit_32(1085033331);
+emit_32(1131556897);
+emit_32(1118560256);
+emit_32(1090041456);
+emit_32(1131556897);
+emit_32(1119072263);
+emit_32(1091993569);
+emit_32(1131556897);
+emit_32(1119584256);
+emit_32(1093969274);
+emit_32(1131556897);
+emit_32(1120096263);
+emit_32(1094791777);
+emit_32(1131556897);
+emit_32(1120608322);
+emit_32(1096921435);
+emit_32(1131556897);
+emit_32(1121120289);
+emit_32(1098017722);
+emit_32(1131556897);
+emit_32(1121632256);
+emit_32(1098852807);
+emit_32(1131556897);
+emit_32(1122144223);
+emit_32(1099349623);
+emit_32(1131556897);
+emit_32(1122656322);
+emit_32(1099542928);
+emit_32(1131556897);
+emit_32(1123168289);
+emit_32(1100094688);
+emit_32(1131556897);
+emit_32(1123680256);
+emit_32(1100410887);
+emit_32(1131556897);
+emit_32(1124132848);
+emit_32(1100650329);
+emit_32(1131556897);
+emit_32(1124388897);
+emit_32(1101060742);
+emit_32(1131556897);
+emit_32(1124644880);
+emit_32(1101440326);
+emit_32(1131556897);
+emit_32(1124900864);
+emit_32(1101720243);
+emit_32(1131556897);
+emit_32(1125156848);
+emit_32(1101846125);
+emit_32(1131556897);
+emit_32(1125412897);
+emit_32(1102182141);
+emit_32(1131556897);
+emit_32(1125668880);
+emit_32(1102845208);
+emit_32(1131556897);
+emit_32(1125924864);
+emit_32(1103549327);
+emit_32(1131556897);
+emit_32(1126180848);
+emit_32(1103862379);
+emit_32(1131556897);
+emit_32(1126436897);
+emit_32(1104116816);
+emit_32(1131556897);
+emit_32(1126692880);
+emit_32(1103549432);
+emit_32(1131556897);
+emit_32(1126948864);
+emit_32(1103788717);
+emit_32(1131556897);
+emit_32(1127204848);
+emit_32(1103809426);
+emit_32(1131556897);
+emit_32(1127460897);
+emit_32(1103218816);
+emit_32(1131556897);
+emit_32(1127716880);
+emit_32(1101572551);
+emit_32(1131556897);
+emit_32(1127972864);
+emit_32(1100781453);
+emit_32(1131556897);
+emit_32(1128228848);
+emit_32(1100996149);
+emit_32(1131556897);
+emit_32(1128484897);
+emit_32(1100798283);
+emit_32(1131556897);
+emit_32(1128740880);
+emit_32(1100454769);
+emit_32(1131556897);
+emit_32(1128996864);
+emit_32(1101100116);
+emit_32(1131556897);
+emit_32(1129252848);
+emit_32(1100635806);
+emit_32(1131556897);
+emit_32(1129508897);
+emit_32(1100423260);
+emit_32(1131556897);
+emit_32(1129764880);
+emit_32(1100375445);
+emit_32(1131556897);
+emit_32(1130020864);
+emit_32(1100374711);
+emit_32(1131556897);
+emit_32(1130276848);
+emit_32(1100128348);
+emit_32(1131556897);
+emit_32(1130532897);
+emit_32(1099813985);
+emit_32(1131556897);
+emit_32(1130788880);
+emit_32(1098580702);
+emit_32(1131556897);
+emit_32(1131044864);
+emit_32(1098117861);
+emit_32(1131556897);
+emit_32(1131300848);
+emit_32(1098142502);
+emit_32(1131556897);
+emit_32(1131556897);
+emit_32(1097315071);
+emit_32(1131556897);
+emit_32(1131812880);
+emit_32(1097397384);
+emit_32(1131556897);
+emit_32(1132068864);
+emit_32(1096997143);
+emit_32(1131556897);
+emit_32(1081737258);
+emit_32(1078120510);
+emit_32(1131300848);
+emit_32(1090125866);
+emit_32(1081645067);
+emit_32(1131300848);
+emit_32(1094418484);
+emit_32(1083207676);
+emit_32(1131300848);
+emit_32(1098514432);
+emit_32(1082548394);
+emit_32(1131300848);
+emit_32(1100759066);
+emit_32(1083149333);
+emit_32(1131300848);
+emit_32(1102807040);
+emit_32(1084467750);
+emit_32(1131300848);
+emit_32(1104855066);
+emit_32(1084194889);
+emit_32(1131300848);
+emit_32(1106903040);
+emit_32(1085853632);
+emit_32(1131300848);
+emit_32(1108123661);
+emit_32(1085123970);
+emit_32(1131300848);
+emit_32(1109147648);
+emit_32(1087285441);
+emit_32(1131300848);
+emit_32(1110171661);
+emit_32(1085386722);
+emit_32(1131300848);
+emit_32(1111195648);
+emit_32(1080853476);
+emit_32(1131300848);
+emit_32(1112219661);
+emit_32(1078285136);
+emit_32(1131300848);
+emit_32(1113243648);
+emit_32(1077796206);
+emit_32(1131300848);
+emit_32(1114267661);
+emit_32(1081903730);
+emit_32(1131300848);
+emit_32(1115291648);
+emit_32(1083632098);
+emit_32(1131300848);
+emit_32(1116000263);
+emit_32(1084393385);
+emit_32(1131300848);
+emit_32(1116512256);
+emit_32(1085051576);
+emit_32(1131300848);
+emit_32(1117024263);
+emit_32(1082744667);
+emit_32(1131300848);
+emit_32(1117536256);
+emit_32(1082567793);
+emit_32(1131300848);
+emit_32(1118048263);
+emit_32(1084454685);
+emit_32(1131300848);
+emit_32(1118560256);
+emit_32(1085247932);
+emit_32(1131300848);
+emit_32(1119072263);
+emit_32(1088549437);
+emit_32(1131300848);
+emit_32(1119584256);
+emit_32(1091234903);
+emit_32(1131300848);
+emit_32(1120096263);
+emit_32(1092613875);
+emit_32(1131300848);
+emit_32(1120608322);
+emit_32(1094687864);
+emit_32(1131300848);
+emit_32(1121120289);
+emit_32(1095660313);
+emit_32(1131300848);
+emit_32(1121632256);
+emit_32(1096595223);
+emit_32(1131300848);
+emit_32(1122144223);
+emit_32(1096407214);
+emit_32(1131300848);
+emit_32(1122656322);
+emit_32(1098896848);
+emit_32(1131300848);
+emit_32(1123168289);
+emit_32(1100002571);
+emit_32(1131300848);
+emit_32(1123680256);
+emit_32(1100330566);
+emit_32(1131300848);
+emit_32(1124132848);
+emit_32(1100556901);
+emit_32(1131300848);
+emit_32(1124388897);
+emit_32(1101046271);
+emit_32(1131300848);
+emit_32(1124644880);
+emit_32(1101210793);
+emit_32(1131300848);
+emit_32(1124900864);
+emit_32(1101438753);
+emit_32(1131300848);
+emit_32(1125156848);
+emit_32(1101639765);
+emit_32(1131300848);
+emit_32(1125412897);
+emit_32(1102320291);
+emit_32(1131300848);
+emit_32(1125668880);
+emit_32(1103059380);
+emit_32(1131300848);
+emit_32(1125924864);
+emit_32(1103640815);
+emit_32(1131300848);
+emit_32(1126180848);
+emit_32(1104063234);
+emit_32(1131300848);
+emit_32(1126436897);
+emit_32(1103970068);
+emit_32(1131300848);
+emit_32(1126692880);
+emit_32(1103293999);
+emit_32(1131300848);
+emit_32(1126948864);
+emit_32(1106602885);
+emit_32(1131300848);
+emit_32(1127204848);
+emit_32(1106714296);
+emit_32(1131300848);
+emit_32(1127460897);
+emit_32(1105856718);
+emit_32(1131300848);
+emit_32(1127716880);
+emit_32(1104477736);
+emit_32(1131300848);
+emit_32(1127972864);
+emit_32(1103475455);
+emit_32(1131300848);
+emit_32(1128228848);
+emit_32(1102947182);
+emit_32(1131300848);
+emit_32(1128484897);
+emit_32(1102778938);
+emit_32(1131300848);
+emit_32(1128740880);
+emit_32(1102741242);
+emit_32(1131300848);
+emit_32(1128996864);
+emit_32(1099705667);
+emit_32(1131300848);
+emit_32(1129252848);
+emit_32(1099651088);
+emit_32(1131300848);
+emit_32(1129508897);
+emit_32(1099707659);
+emit_32(1131300848);
+emit_32(1129764880);
+emit_32(1100081634);
+emit_32(1131300848);
+emit_32(1130020864);
+emit_32(1100312373);
+emit_32(1131300848);
+emit_32(1130276848);
+emit_32(1100150263);
+emit_32(1131300848);
+emit_32(1130532897);
+emit_32(1099562326);
+emit_32(1131300848);
+emit_32(1130788880);
+emit_32(1099117363);
+emit_32(1131300848);
+emit_32(1131044864);
+emit_32(1098383150);
+emit_32(1131300848);
+emit_32(1131300848);
+emit_32(1097461347);
+emit_32(1131300848);
+emit_32(1131556897);
+emit_32(1097130836);
+emit_32(1131300848);
+emit_32(1131812880);
+emit_32(1097046950);
+emit_32(1131300848);
+emit_32(1132068864);
+emit_32(1096949537);
+emit_32(1131300848);
+emit_32(1081737258);
+emit_32(1084629524);
+emit_32(1131044864);
+emit_32(1090125866);
+emit_32(1084086907);
+emit_32(1131044864);
+emit_32(1094418484);
+emit_32(1082202008);
+emit_32(1131044864);
+emit_32(1098514432);
+emit_32(1080912280);
+emit_32(1131044864);
+emit_32(1100759066);
+emit_32(1083063329);
+emit_32(1131044864);
+emit_32(1102807040);
+emit_32(1084485051);
+emit_32(1131044864);
+emit_32(1104855066);
+emit_32(1083389331);
+emit_32(1131044864);
+emit_32(1106903040);
+emit_32(1083284872);
+emit_32(1131044864);
+emit_32(1108123661);
+emit_32(1083776948);
+emit_32(1131044864);
+emit_32(1109147648);
+emit_32(1084114904);
+emit_32(1131044864);
+emit_32(1110171661);
+emit_32(1084297860);
+emit_32(1131044864);
+emit_32(1111195648);
+emit_32(1078278635);
+emit_32(1131044864);
+emit_32(1112219661);
+emit_32(1076164118);
+emit_32(1131044864);
+emit_32(1113243648);
+emit_32(1078294028);
+emit_32(1131044864);
+emit_32(1114267661);
+emit_32(1082183700);
+emit_32(1131044864);
+emit_32(1115291648);
+emit_32(1083337867);
+emit_32(1131044864);
+emit_32(1116000263);
+emit_32(1083538145);
+emit_32(1131044864);
+emit_32(1116512256);
+emit_32(1083307354);
+emit_32(1131044864);
+emit_32(1117024263);
+emit_32(1082616971);
+emit_32(1131044864);
+emit_32(1117536256);
+emit_32(1082459895);
+emit_32(1131044864);
+emit_32(1118048263);
+emit_32(1082553155);
+emit_32(1131044864);
+emit_32(1118560256);
+emit_32(1082740745);
+emit_32(1131044864);
+emit_32(1119072263);
+emit_32(1085377369);
+emit_32(1131044864);
+emit_32(1119584256);
+emit_32(1088549688);
+emit_32(1131044864);
+emit_32(1120096263);
+emit_32(1090805993);
+emit_32(1131044864);
+emit_32(1120608322);
+emit_32(1092446868);
+emit_32(1131044864);
+emit_32(1121120289);
+emit_32(1093587383);
+emit_32(1131044864);
+emit_32(1121632256);
+emit_32(1094483916);
+emit_32(1131044864);
+emit_32(1122144223);
+emit_32(1096648281);
+emit_32(1131044864);
+emit_32(1122656322);
+emit_32(1098439773);
+emit_32(1131044864);
+emit_32(1123168289);
+emit_32(1099378301);
+emit_32(1131044864);
+emit_32(1123680256);
+emit_32(1100113301);
+emit_32(1131044864);
+emit_32(1124132848);
+emit_32(1100821928);
+emit_32(1131044864);
+emit_32(1124388897);
+emit_32(1100695994);
+emit_32(1131044864);
+emit_32(1124644880);
+emit_32(1100654418);
+emit_32(1131044864);
+emit_32(1124900864);
+emit_32(1101348733);
+emit_32(1131044864);
+emit_32(1125156848);
+emit_32(1101846177);
+emit_32(1131044864);
+emit_32(1125412897);
+emit_32(1102171131);
+emit_32(1131044864);
+emit_32(1125668880);
+emit_32(1102926263);
+emit_32(1131044864);
+emit_32(1125924864);
+emit_32(1103561857);
+emit_32(1131044864);
+emit_32(1126180848);
+emit_32(1105011566);
+emit_32(1131044864);
+emit_32(1126436897);
+emit_32(1105956281);
+emit_32(1131044864);
+emit_32(1126692880);
+emit_32(1106074193);
+emit_32(1131044864);
+emit_32(1126948864);
+emit_32(1106288155);
+emit_32(1131044864);
+emit_32(1127204848);
+emit_32(1106414875);
+emit_32(1131044864);
+emit_32(1127460897);
+emit_32(1105582830);
+emit_32(1131044864);
+emit_32(1127716880);
+emit_32(1104515013);
+emit_32(1131044864);
+emit_32(1127972864);
+emit_32(1103803187);
+emit_32(1131044864);
+emit_32(1128228848);
+emit_32(1103189298);
+emit_32(1131044864);
+emit_32(1128484897);
+emit_32(1102339532);
+emit_32(1131044864);
+emit_32(1128740880);
+emit_32(1102167776);
+emit_32(1131044864);
+emit_32(1128996864);
+emit_32(1102179887);
+emit_32(1131044864);
+emit_32(1129252848);
+emit_32(1101976463);
+emit_32(1131044864);
+emit_32(1129508897);
+emit_32(1099672899);
+emit_32(1131044864);
+emit_32(1129764880);
+emit_32(1099572288);
+emit_32(1131044864);
+emit_32(1130020864);
+emit_32(1099410126);
+emit_32(1131044864);
+emit_32(1130276848);
+emit_32(1099232077);
+emit_32(1131044864);
+emit_32(1130532897);
+emit_32(1099661994);
+emit_32(1131044864);
+emit_32(1130788880);
+emit_32(1099398382);
+emit_32(1131044864);
+emit_32(1131044864);
+emit_32(1098507197);
+emit_32(1131044864);
+emit_32(1131300848);
+emit_32(1098737045);
+emit_32(1131044864);
+emit_32(1131556897);
+emit_32(1097951452);
+emit_32(1131044864);
+emit_32(1131812880);
+emit_32(1097046111);
+emit_32(1131044864);
+emit_32(1132068864);
+emit_32(1096926888);
+emit_32(1131044864);
+emit_32(1081737258);
+emit_32(1086083564);
+emit_32(1130788880);
+emit_32(1090125845);
+emit_32(1085231281);
+emit_32(1130788880);
+emit_32(1094418484);
+emit_32(1084350058);
+emit_32(1130788880);
+emit_32(1098514432);
+emit_32(1082346082);
+emit_32(1130788880);
+emit_32(1100759066);
+emit_32(1082352080);
+emit_32(1130788880);
+emit_32(1102807040);
+emit_32(1083015472);
+emit_32(1130788880);
+emit_32(1104855066);
+emit_32(1082714468);
+emit_32(1130788880);
+emit_32(1106903040);
+emit_32(1082667555);
+emit_32(1130788880);
+emit_32(1108123661);
+emit_32(1081440133);
+emit_32(1130788880);
+emit_32(1109147648);
+emit_32(1079509621);
+emit_32(1130788880);
+emit_32(1110171661);
+emit_32(1082472016);
+emit_32(1130788880);
+emit_32(1111195648);
+emit_32(1077273302);
+emit_32(1130788880);
+emit_32(1112219661);
+emit_32(1077242684);
+emit_32(1130788880);
+emit_32(1113243648);
+emit_32(1078266387);
+emit_32(1130788880);
+emit_32(1114267661);
+emit_32(1079519268);
+emit_32(1130788880);
+emit_32(1115291648);
+emit_32(1082332010);
+emit_32(1130788880);
+emit_32(1116000263);
+emit_32(1083509876);
+emit_32(1130788880);
+emit_32(1116512256);
+emit_32(1083089082);
+emit_32(1130788880);
+emit_32(1117024263);
+emit_32(1081681474);
+emit_32(1130788880);
+emit_32(1117536256);
+emit_32(1081604928);
+emit_32(1130788880);
+emit_32(1118048263);
+emit_32(1083484521);
+emit_32(1130788880);
+emit_32(1118560256);
+emit_32(1085967948);
+emit_32(1130788880);
+emit_32(1119072263);
+emit_32(1087165358);
+emit_32(1130788880);
+emit_32(1119584256);
+emit_32(1089804205);
+emit_32(1130788880);
+emit_32(1120096263);
+emit_32(1090592986);
+emit_32(1130788880);
+emit_32(1120608322);
+emit_32(1092476018);
+emit_32(1130788880);
+emit_32(1121120289);
+emit_32(1094570318);
+emit_32(1130788880);
+emit_32(1121632256);
+emit_32(1095714420);
+emit_32(1130788880);
+emit_32(1122144223);
+emit_32(1097098330);
+emit_32(1130788880);
+emit_32(1122656322);
+emit_32(1098580073);
+emit_32(1130788880);
+emit_32(1123168289);
+emit_32(1099541460);
+emit_32(1130788880);
+emit_32(1123680256);
+emit_32(1100022651);
+emit_32(1130788880);
+emit_32(1124132848);
+emit_32(1100679217);
+emit_32(1130788880);
+emit_32(1124388897);
+emit_32(1100590455);
+emit_32(1130788880);
+emit_32(1124644880);
+emit_32(1100445647);
+emit_32(1130788880);
+emit_32(1124900864);
+emit_32(1100992374);
+emit_32(1130788880);
+emit_32(1125156848);
+emit_32(1101812256);
+emit_32(1130788880);
+emit_32(1125412897);
+emit_32(1101911923);
+emit_32(1130788880);
+emit_32(1125668880);
+emit_32(1102583326);
+emit_32(1130788880);
+emit_32(1125924864);
+emit_32(1105586396);
+emit_32(1130788880);
+emit_32(1126180848);
+emit_32(1105418204);
+emit_32(1130788880);
+emit_32(1126436897);
+emit_32(1105539000);
+emit_32(1130788880);
+emit_32(1126692880);
+emit_32(1106015263);
+emit_32(1130788880);
+emit_32(1126948864);
+emit_32(1106032198);
+emit_32(1130788880);
+emit_32(1127204848);
+emit_32(1106139834);
+emit_32(1130788880);
+emit_32(1127460897);
+emit_32(1105229880);
+emit_32(1130788880);
+emit_32(1127716880);
+emit_32(1105009679);
+emit_32(1130788880);
+emit_32(1127972864);
+emit_32(1104632873);
+emit_32(1130788880);
+emit_32(1128228848);
+emit_32(1104045408);
+emit_32(1130788880);
+emit_32(1128484897);
+emit_32(1103027136);
+emit_32(1130788880);
+emit_32(1128740880);
+emit_32(1102134274);
+emit_32(1130788880);
+emit_32(1128996864);
+emit_32(1101980290);
+emit_32(1130788880);
+emit_32(1129252848);
+emit_32(1101929854);
+emit_32(1130788880);
+emit_32(1129508897);
+emit_32(1102202274);
+emit_32(1130788880);
+emit_32(1129764880);
+emit_32(1102297170);
+emit_32(1130788880);
+emit_32(1130020864);
+emit_32(1099118307);
+emit_32(1130788880);
+emit_32(1130276848);
+emit_32(1098962856);
+emit_32(1130788880);
+emit_32(1130532897);
+emit_32(1099408500);
+emit_32(1130788880);
+emit_32(1130788880);
+emit_32(1099424124);
+emit_32(1130788880);
+emit_32(1131044864);
+emit_32(1098958347);
+emit_32(1130788880);
+emit_32(1131300848);
+emit_32(1098882272);
+emit_32(1130788880);
+emit_32(1131556897);
+emit_32(1098200698);
+emit_32(1130788880);
+emit_32(1131812880);
+emit_32(1098164103);
+emit_32(1130788880);
+emit_32(1132068864);
+emit_32(1097566310);
+emit_32(1130788880);
+emit_32(1081737258);
+emit_32(1088205504);
+emit_32(1130532897);
+emit_32(1090125845);
+emit_32(1087556645);
+emit_32(1130532897);
+emit_32(1094418484);
+emit_32(1086398472);
+emit_32(1130532897);
+emit_32(1098514432);
+emit_32(1083645478);
+emit_32(1130532897);
+emit_32(1100759066);
+emit_32(1080639357);
+emit_32(1130532897);
+emit_32(1102807040);
+emit_32(1082880395);
+emit_32(1130532897);
+emit_32(1104855066);
+emit_32(1082376092);
+emit_32(1130532897);
+emit_32(1106903040);
+emit_32(1082783171);
+emit_32(1130532897);
+emit_32(1108123661);
+emit_32(1079715142);
+emit_32(1130532897);
+emit_32(1109147648);
+emit_32(1074967232);
+emit_32(1130532897);
+emit_32(1110171661);
+emit_32(1075751525);
+emit_32(1130532897);
+emit_32(1111195648);
+emit_32(1074864513);
+emit_32(1130532897);
+emit_32(1112219661);
+emit_32(1066352635);
+emit_32(1130532897);
+emit_32(1113243648);
+emit_32(1075556532);
+emit_32(1130532897);
+emit_32(1114267661);
+emit_32(1081657231);
+emit_32(1130532897);
+emit_32(1115291648);
+emit_32(1082114913);
+emit_32(1130532897);
+emit_32(1116000263);
+emit_32(1082771049);
+emit_32(1130532897);
+emit_32(1116512256);
+emit_32(1083047705);
+emit_32(1130532897);
+emit_32(1117024263);
+emit_32(1081671953);
+emit_32(1130532897);
+emit_32(1117536256);
+emit_32(1082383810);
+emit_32(1130532897);
+emit_32(1118048263);
+emit_32(1085344359);
+emit_32(1130532897);
+emit_32(1118560256);
+emit_32(1087131993);
+emit_32(1130532897);
+emit_32(1119072263);
+emit_32(1088001598);
+emit_32(1130532897);
+emit_32(1119584256);
+emit_32(1090829398);
+emit_32(1130532897);
+emit_32(1120096263);
+emit_32(1091029938);
+emit_32(1130532897);
+emit_32(1120608322);
+emit_32(1092548601);
+emit_32(1130532897);
+emit_32(1121120289);
+emit_32(1094257947);
+emit_32(1130532897);
+emit_32(1121632256);
+emit_32(1095812881);
+emit_32(1130532897);
+emit_32(1122144223);
+emit_32(1096665897);
+emit_32(1130532897);
+emit_32(1122656322);
+emit_32(1097826356);
+emit_32(1130532897);
+emit_32(1123168289);
+emit_32(1099106825);
+emit_32(1130532897);
+emit_32(1123680256);
+emit_32(1099535378);
+emit_32(1130532897);
+emit_32(1124132848);
+emit_32(1099629068);
+emit_32(1130532897);
+emit_32(1124388897);
+emit_32(1100012480);
+emit_32(1130532897);
+emit_32(1124644880);
+emit_32(1100315047);
+emit_32(1130532897);
+emit_32(1124900864);
+emit_32(1100226809);
+emit_32(1130532897);
+emit_32(1125156848);
+emit_32(1101404150);
+emit_32(1130532897);
+emit_32(1125412897);
+emit_32(1101559392);
+emit_32(1130532897);
+emit_32(1125668880);
+emit_32(1104381215);
+emit_32(1130532897);
+emit_32(1125924864);
+emit_32(1104769555);
+emit_32(1130532897);
+emit_32(1126180848);
+emit_32(1104830110);
+emit_32(1130532897);
+emit_32(1126436897);
+emit_32(1105225685);
+emit_32(1130532897);
+emit_32(1126692880);
+emit_32(1105543666);
+emit_32(1130532897);
+emit_32(1126948864);
+emit_32(1105381923);
+emit_32(1130532897);
+emit_32(1127204848);
+emit_32(1102960080);
+emit_32(1130532897);
+emit_32(1127460897);
+emit_32(1102636017);
+emit_32(1130532897);
+emit_32(1127716880);
+emit_32(1102352640);
+emit_32(1130532897);
+emit_32(1127972864);
+emit_32(1102376600);
+emit_32(1130532897);
+emit_32(1128228848);
+emit_32(1101985061);
+emit_32(1130532897);
+emit_32(1128484897);
+emit_32(1100996464);
+emit_32(1130532897);
+emit_32(1128740880);
+emit_32(1102569013);
+emit_32(1130532897);
+emit_32(1128996864);
+emit_32(1102092331);
+emit_32(1130532897);
+emit_32(1129252848);
+emit_32(1102309543);
+emit_32(1130532897);
+emit_32(1129508897);
+emit_32(1102185287);
+emit_32(1130532897);
+emit_32(1129764880);
+emit_32(1102249407);
+emit_32(1130532897);
+emit_32(1130020864);
+emit_32(1102463107);
+emit_32(1130532897);
+emit_32(1130276848);
+emit_32(1099451125);
+emit_32(1130532897);
+emit_32(1130532897);
+emit_32(1098977588);
+emit_32(1130532897);
+emit_32(1130788880);
+emit_32(1099393401);
+emit_32(1130532897);
+emit_32(1131044864);
+emit_32(1099525941);
+emit_32(1130532897);
+emit_32(1131300848);
+emit_32(1099608359);
+emit_32(1130532897);
+emit_32(1131556897);
+emit_32(1099010985);
+emit_32(1130532897);
+emit_32(1131812880);
+emit_32(1098150052);
+emit_32(1130532897);
+emit_32(1132068864);
+emit_32(1097996750);
+emit_32(1130532897);
+emit_32(1081737258);
+emit_32(1088030748);
+emit_32(1130276848);
+emit_32(1090125845);
+emit_32(1088922017);
+emit_32(1130276848);
+emit_32(1094418484);
+emit_32(1086531599);
+emit_32(1130276848);
+emit_32(1098514432);
+emit_32(1084132164);
+emit_32(1130276848);
+emit_32(1100759066);
+emit_32(1081632694);
+emit_32(1130276848);
+emit_32(1102807040);
+emit_32(1082276478);
+emit_32(1130276848);
+emit_32(1104855066);
+emit_32(1081735706);
+emit_32(1130276848);
+emit_32(1106903040);
+emit_32(1082304580);
+emit_32(1130276848);
+emit_32(1108123661);
+emit_32(1079035203);
+emit_32(1130276848);
+emit_32(1109147648);
+emit_32(1069837514);
+emit_32(1130276848);
+emit_32(1110171661);
+emit_32(1072973008);
+emit_32(1130276848);
+emit_32(1111195648);
+emit_32(1073616750);
+emit_32(1130276848);
+emit_32(1112219661);
+emit_32(1074356373);
+emit_32(1130276848);
+emit_32(1113243648);
+emit_32(1076853159);
+emit_32(1130276848);
+emit_32(1114267661);
+emit_32(1081069063);
+emit_32(1130276848);
+emit_32(1115291648);
+emit_32(1082137856);
+emit_32(1130276848);
+emit_32(1116000263);
+emit_32(1082943959);
+emit_32(1130276848);
+emit_32(1116512256);
+emit_32(1081841906);
+emit_32(1130276848);
+emit_32(1117024263);
+emit_32(1079724873);
+emit_32(1130276848);
+emit_32(1117536256);
+emit_32(1084345444);
+emit_32(1130276848);
+emit_32(1118048263);
+emit_32(1086294789);
+emit_32(1130276848);
+emit_32(1118560256);
+emit_32(1087434528);
+emit_32(1130276848);
+emit_32(1119072263);
+emit_32(1088073635);
+emit_32(1130276848);
+emit_32(1119584256);
+emit_32(1089448947);
+emit_32(1130276848);
+emit_32(1120096263);
+emit_32(1090721069);
+emit_32(1130276848);
+emit_32(1120608322);
+emit_32(1091918239);
+emit_32(1130276848);
+emit_32(1121120289);
+emit_32(1094547984);
+emit_32(1130276848);
+emit_32(1121632256);
+emit_32(1095883345);
+emit_32(1130276848);
+emit_32(1122144223);
+emit_32(1096699766);
+emit_32(1130276848);
+emit_32(1122656322);
+emit_32(1097650825);
+emit_32(1130276848);
+emit_32(1123168289);
+emit_32(1098292029);
+emit_32(1130276848);
+emit_32(1123680256);
+emit_32(1098586993);
+emit_32(1130276848);
+emit_32(1124132848);
+emit_32(1099015075);
+emit_32(1130276848);
+emit_32(1124388897);
+emit_32(1099448608);
+emit_32(1130276848);
+emit_32(1124644880);
+emit_32(1100240545);
+emit_32(1130276848);
+emit_32(1124900864);
+emit_32(1100411568);
+emit_32(1130276848);
+emit_32(1125156848);
+emit_32(1100717962);
+emit_32(1130276848);
+emit_32(1125412897);
+emit_32(1104106121);
+emit_32(1130276848);
+emit_32(1125668880);
+emit_32(1103981340);
+emit_32(1130276848);
+emit_32(1125924864);
+emit_32(1104173177);
+emit_32(1130276848);
+emit_32(1126180848);
+emit_32(1104308653);
+emit_32(1130276848);
+emit_32(1126436897);
+emit_32(1104718856);
+emit_32(1130276848);
+emit_32(1126692880);
+emit_32(1104731072);
+emit_32(1130276848);
+emit_32(1126948864);
+emit_32(1102448479);
+emit_32(1130276848);
+emit_32(1127204848);
+emit_32(1102776107);
+emit_32(1130276848);
+emit_32(1127460897);
+emit_32(1102622858);
+emit_32(1130276848);
+emit_32(1127716880);
+emit_32(1102367582);
+emit_32(1130276848);
+emit_32(1127972864);
+emit_32(1102063704);
+emit_32(1130276848);
+emit_32(1128228848);
+emit_32(1101966973);
+emit_32(1130276848);
+emit_32(1128484897);
+emit_32(1101031067);
+emit_32(1130276848);
+emit_32(1128740880);
+emit_32(1100260154);
+emit_32(1130276848);
+emit_32(1128996864);
+emit_32(1100108530);
+emit_32(1130276848);
+emit_32(1129252848);
+emit_32(1102466305);
+emit_32(1130276848);
+emit_32(1129508897);
+emit_32(1102042209);
+emit_32(1130276848);
+emit_32(1129764880);
+emit_32(1101779803);
+emit_32(1130276848);
+emit_32(1130020864);
+emit_32(1101832441);
+emit_32(1130276848);
+emit_32(1130276848);
+emit_32(1101855772);
+emit_32(1130276848);
+emit_32(1130532897);
+emit_32(1099854407);
+emit_32(1130276848);
+emit_32(1130788880);
+emit_32(1099755369);
+emit_32(1130276848);
+emit_32(1131044864);
+emit_32(1100126198);
+emit_32(1130276848);
+emit_32(1131300848);
+emit_32(1100210346);
+emit_32(1130276848);
+emit_32(1131556897);
+emit_32(1099599131);
+emit_32(1130276848);
+emit_32(1131812880);
+emit_32(1099312713);
+emit_32(1130276848);
+emit_32(1132068864);
+emit_32(1099215405);
+emit_32(1130276848);
+emit_32(1081737300);
+emit_32(1090545737);
+emit_32(1130020864);
+emit_32(1090125845);
+emit_32(1090779118);
+emit_32(1130020864);
+emit_32(1094418484);
+emit_32(1088257765);
+emit_32(1130020864);
+emit_32(1098514432);
+emit_32(1086032917);
+emit_32(1130020864);
+emit_32(1100759066);
+emit_32(1083317483);
+emit_32(1130020864);
+emit_32(1102807040);
+emit_32(1080833973);
+emit_32(1130020864);
+emit_32(1104855066);
+emit_32(1082686639);
+emit_32(1130020864);
+emit_32(1106903040);
+emit_32(1079520862);
+emit_32(1130020864);
+emit_32(1108123661);
+emit_32(1071421451);
+emit_32(1130020864);
+emit_32(1109147648);
+emit_32(1074673169);
+emit_32(1130020864);
+emit_32(1110171661);
+emit_32(1076755348);
+emit_32(1130020864);
+emit_32(1111195648);
+emit_32(1078551432);
+emit_32(1130020864);
+emit_32(1112219661);
+emit_32(1078159559);
+emit_32(1130020864);
+emit_32(1113243648);
+emit_32(1078755569);
+emit_32(1130020864);
+emit_32(1114267661);
+emit_32(1080798447);
+emit_32(1130020864);
+emit_32(1115291648);
+emit_32(1079415837);
+emit_32(1130020864);
+emit_32(1116000263);
+emit_32(1082138863);
+emit_32(1130020864);
+emit_32(1116512256);
+emit_32(1077619039);
+emit_32(1130020864);
+emit_32(1117024263);
+emit_32(1082948888);
+emit_32(1130020864);
+emit_32(1117536256);
+emit_32(1085399431);
+emit_32(1130020864);
+emit_32(1118048263);
+emit_32(1087137844);
+emit_32(1130020864);
+emit_32(1118560256);
+emit_32(1087057984);
+emit_32(1130020864);
+emit_32(1119072263);
+emit_32(1088011706);
+emit_32(1130020864);
+emit_32(1119584256);
+emit_32(1087547166);
+emit_32(1130020864);
+emit_32(1120096263);
+emit_32(1089001897);
+emit_32(1130020864);
+emit_32(1120608322);
+emit_32(1092274230);
+emit_32(1130020864);
+emit_32(1121120289);
+emit_32(1093489656);
+emit_32(1130020864);
+emit_32(1121632256);
+emit_32(1094888037);
+emit_32(1130020864);
+emit_32(1122144223);
+emit_32(1095981597);
+emit_32(1130020864);
+emit_32(1122656322);
+emit_32(1097071696);
+emit_32(1130020864);
+emit_32(1123168289);
+emit_32(1097539571);
+emit_32(1130020864);
+emit_32(1123680256);
+emit_32(1097094346);
+emit_32(1130020864);
+emit_32(1124132848);
+emit_32(1098861091);
+emit_32(1130020864);
+emit_32(1124388897);
+emit_32(1099278215);
+emit_32(1130020864);
+emit_32(1124644880);
+emit_32(1099782108);
+emit_32(1130020864);
+emit_32(1124900864);
+emit_32(1100389129);
+emit_32(1130020864);
+emit_32(1125156848);
+emit_32(1103220179);
+emit_32(1130020864);
+emit_32(1125412897);
+emit_32(1103665509);
+emit_32(1130020864);
+emit_32(1125668880);
+emit_32(1104112307);
+emit_32(1130020864);
+emit_32(1125924864);
+emit_32(1104257063);
+emit_32(1130020864);
+emit_32(1126180848);
+emit_32(1103372904);
+emit_32(1130020864);
+emit_32(1126436897);
+emit_32(1104276514);
+emit_32(1130020864);
+emit_32(1126692880);
+emit_32(1104476792);
+emit_32(1130020864);
+emit_32(1126948864);
+emit_32(1102277299);
+emit_32(1130020864);
+emit_32(1127204848);
+emit_32(1102993162);
+emit_32(1130020864);
+emit_32(1127460897);
+emit_32(1102760011);
+emit_32(1130020864);
+emit_32(1127716880);
+emit_32(1102172861);
+emit_32(1130020864);
+emit_32(1127972864);
+emit_32(1102165993);
+emit_32(1130020864);
+emit_32(1128228848);
+emit_32(1101400008);
+emit_32(1130020864);
+emit_32(1128484897);
+emit_32(1100749524);
+emit_32(1130020864);
+emit_32(1128740880);
+emit_32(1100733953);
+emit_32(1130020864);
+emit_32(1128996864);
+emit_32(1100153147);
+emit_32(1130020864);
+emit_32(1129252848);
+emit_32(1100010435);
+emit_32(1130020864);
+emit_32(1129508897);
+emit_32(1101004957);
+emit_32(1130020864);
+emit_32(1129764880);
+emit_32(1102164053);
+emit_32(1130020864);
+emit_32(1130020864);
+emit_32(1101850110);
+emit_32(1130020864);
+emit_32(1130276848);
+emit_32(1102364960);
+emit_32(1130020864);
+emit_32(1130532897);
+emit_32(1103265268);
+emit_32(1130020864);
+emit_32(1130788880);
+emit_32(1100508614);
+emit_32(1130020864);
+emit_32(1131044864);
+emit_32(1100302936);
+emit_32(1130020864);
+emit_32(1131300848);
+emit_32(1100358615);
+emit_32(1130020864);
+emit_32(1131556897);
+emit_32(1100122056);
+emit_32(1130020864);
+emit_32(1131812880);
+emit_32(1099275331);
+emit_32(1130020864);
+emit_32(1132068864);
+emit_32(1099473145);
+emit_32(1130020864);
+emit_32(1081737300);
+emit_32(1091835139);
+emit_32(1129764880);
+emit_32(1090125845);
+emit_32(1092274629);
+emit_32(1129764880);
+emit_32(1094418484);
+emit_32(1091485187);
+emit_32(1129764880);
+emit_32(1098514432);
+emit_32(1088227650);
+emit_32(1129764880);
+emit_32(1100759066);
+emit_32(1086589313);
+emit_32(1129764880);
+emit_32(1102807040);
+emit_32(1084191974);
+emit_32(1129764880);
+emit_32(1104855066);
+emit_32(1080611507);
+emit_32(1129764880);
+emit_32(1106903040);
+emit_32(1075926931);
+emit_32(1129764880);
+emit_32(1108123661);
+emit_32(1079228645);
+emit_32(1129764880);
+emit_32(1109147648);
+emit_32(1082222833);
+emit_32(1129764880);
+emit_32(1110171661);
+emit_32(1083146418);
+emit_32(1129764880);
+emit_32(1111195648);
+emit_32(1082983868);
+emit_32(1129764880);
+emit_32(1112219661);
+emit_32(1081162806);
+emit_32(1129764880);
+emit_32(1113243648);
+emit_32(1077328919);
+emit_32(1129764880);
+emit_32(1114267661);
+emit_32(1076126244);
+emit_32(1129764880);
+emit_32(1115291648);
+emit_32(1076114164);
+emit_32(1129764880);
+emit_32(1116000263);
+emit_32(1077220454);
+emit_32(1129764880);
+emit_32(1116512256);
+emit_32(1076896821);
+emit_32(1129764880);
+emit_32(1117024263);
+emit_32(1084289953);
+emit_32(1129764880);
+emit_32(1117536256);
+emit_32(1085902789);
+emit_32(1129764880);
+emit_32(1118048263);
+emit_32(1086392243);
+emit_32(1129764880);
+emit_32(1118560256);
+emit_32(1086899838);
+emit_32(1129764880);
+emit_32(1119072263);
+emit_32(1086675170);
+emit_32(1129764880);
+emit_32(1119584256);
+emit_32(1088147014);
+emit_32(1129764880);
+emit_32(1120096263);
+emit_32(1090408877);
+emit_32(1129764880);
+emit_32(1120608322);
+emit_32(1091709677);
+emit_32(1129764880);
+emit_32(1121120289);
+emit_32(1092234888);
+emit_32(1129764880);
+emit_32(1121632256);
+emit_32(1092967570);
+emit_32(1129764880);
+emit_32(1122144223);
+emit_32(1095135710);
+emit_32(1129764880);
+emit_32(1122656322);
+emit_32(1095795579);
+emit_32(1129764880);
+emit_32(1123168289);
+emit_32(1096420845);
+emit_32(1129764880);
+emit_32(1123680256);
+emit_32(1097142580);
+emit_32(1129764880);
+emit_32(1124132848);
+emit_32(1097919155);
+emit_32(1129764880);
+emit_32(1124388897);
+emit_32(1099013659);
+emit_32(1129764880);
+emit_32(1124644880);
+emit_32(1099826515);
+emit_32(1129764880);
+emit_32(1124900864);
+emit_32(1102949541);
+emit_32(1129764880);
+emit_32(1125156848);
+emit_32(1103290853);
+emit_32(1129764880);
+emit_32(1125412897);
+emit_32(1103584035);
+emit_32(1129764880);
+emit_32(1125668880);
+emit_32(1103730049);
+emit_32(1129764880);
+emit_32(1125924864);
+emit_32(1101436027);
+emit_32(1129764880);
+emit_32(1126180848);
+emit_32(1103412226);
+emit_32(1129764880);
+emit_32(1126436897);
+emit_32(1103699850);
+emit_32(1129764880);
+emit_32(1126692880);
+emit_32(1104185079);
+emit_32(1129764880);
+emit_32(1126948864);
+emit_32(1102131233);
+emit_32(1129764880);
+emit_32(1127204848);
+emit_32(1105054191);
+emit_32(1129764880);
+emit_32(1127460897);
+emit_32(1104932451);
+emit_32(1129764880);
+emit_32(1127716880);
+emit_32(1104496873);
+emit_32(1129764880);
+emit_32(1127972864);
+emit_32(1104477159);
+emit_32(1129764880);
+emit_32(1128228848);
+emit_32(1104320607);
+emit_32(1129764880);
+emit_32(1128484897);
+emit_32(1103549432);
+emit_32(1129764880);
+emit_32(1128740880);
+emit_32(1102911793);
+emit_32(1129764880);
+emit_32(1128996864);
+emit_32(1101627707);
+emit_32(1129764880);
+emit_32(1129252848);
+emit_32(1100874200);
+emit_32(1129764880);
+emit_32(1129508897);
+emit_32(1102213074);
+emit_32(1129764880);
+emit_32(1129764880);
+emit_32(1102331091);
+emit_32(1129764880);
+emit_32(1130020864);
+emit_32(1102551345);
+emit_32(1129764880);
+emit_32(1130276848);
+emit_32(1102696730);
+emit_32(1129764880);
+emit_32(1130532897);
+emit_32(1103568568);
+emit_32(1129764880);
+emit_32(1130788880);
+emit_32(1102851657);
+emit_32(1129764880);
+emit_32(1131044864);
+emit_32(1100504787);
+emit_32(1129764880);
+emit_32(1131300848);
+emit_32(1099935252);
+emit_32(1129764880);
+emit_32(1131556897);
+emit_32(1100381212);
+emit_32(1129764880);
+emit_32(1131812880);
+emit_32(1099598030);
+emit_32(1129764880);
+emit_32(1132068864);
+emit_32(1099324719);
+emit_32(1129764880);
+emit_32(1081737300);
+emit_32(1093216816);
+emit_32(1129508897);
+emit_32(1090125845);
+emit_32(1092417151);
+emit_32(1129508897);
+emit_32(1094418484);
+emit_32(1092298631);
+emit_32(1129508897);
+emit_32(1098514432);
+emit_32(1090960878);
+emit_32(1129508897);
+emit_32(1100759066);
+emit_32(1088614281);
+emit_32(1129508897);
+emit_32(1102807040);
+emit_32(1087275941);
+emit_32(1129508897);
+emit_32(1104855066);
+emit_32(1083352170);
+emit_32(1129508897);
+emit_32(1106903040);
+emit_32(1082781472);
+emit_32(1129508897);
+emit_32(1108123661);
+emit_32(1082625024);
+emit_32(1129508897);
+emit_32(1109147648);
+emit_32(1083756291);
+emit_32(1129508897);
+emit_32(1110171661);
+emit_32(1085301682);
+emit_32(1129508897);
+emit_32(1111195648);
+emit_32(1085254392);
+emit_32(1129508897);
+emit_32(1112219661);
+emit_32(1083183433);
+emit_32(1129508897);
+emit_32(1113243648);
+emit_32(1082262280);
+emit_32(1129508897);
+emit_32(1114267661);
+emit_32(1079746432);
+emit_32(1129508897);
+emit_32(1115291648);
+emit_32(1079747858);
+emit_32(1129508897);
+emit_32(1116000263);
+emit_32(1080629039);
+emit_32(1129508897);
+emit_32(1116512256);
+emit_32(1084566295);
+emit_32(1129508897);
+emit_32(1117024263);
+emit_32(1087852574);
+emit_32(1129508897);
+emit_32(1117536256);
+emit_32(1089342076);
+emit_32(1129508897);
+emit_32(1118048263);
+emit_32(1089066049);
+emit_32(1129508897);
+emit_32(1118560256);
+emit_32(1087464056);
+emit_32(1129508897);
+emit_32(1119072263);
+emit_32(1086240913);
+emit_32(1129508897);
+emit_32(1119584256);
+emit_32(1087270531);
+emit_32(1129508897);
+emit_32(1120096263);
+emit_32(1090862428);
+emit_32(1129508897);
+emit_32(1120608322);
+emit_32(1091412280);
+emit_32(1129508897);
+emit_32(1121120289);
+emit_32(1092239313);
+emit_32(1129508897);
+emit_32(1121632256);
+emit_32(1093054602);
+emit_32(1129508897);
+emit_32(1122144223);
+emit_32(1094389439);
+emit_32(1129508897);
+emit_32(1122656322);
+emit_32(1094766612);
+emit_32(1129508897);
+emit_32(1123168289);
+emit_32(1095867197);
+emit_32(1129508897);
+emit_32(1123680256);
+emit_32(1097324193);
+emit_32(1129508897);
+emit_32(1124132848);
+emit_32(1097994863);
+emit_32(1129508897);
+emit_32(1124388897);
+emit_32(1098508665);
+emit_32(1129508897);
+emit_32(1124644880);
+emit_32(1099390989);
+emit_32(1129508897);
+emit_32(1124900864);
+emit_32(1102819570);
+emit_32(1129508897);
+emit_32(1125156848);
+emit_32(1103456528);
+emit_32(1129508897);
+emit_32(1125412897);
+emit_32(1104213443);
+emit_32(1129508897);
+emit_32(1125668880);
+emit_32(1101924034);
+emit_32(1129508897);
+emit_32(1125924864);
+emit_32(1101395290);
+emit_32(1129508897);
+emit_32(1126180848);
+emit_32(1103179599);
+emit_32(1129508897);
+emit_32(1126436897);
+emit_32(1104174855);
+emit_32(1129508897);
+emit_32(1126692880);
+emit_32(1103711856);
+emit_32(1129508897);
+emit_32(1126948864);
+emit_32(1101427166);
+emit_32(1129508897);
+emit_32(1127204848);
+emit_32(1104341946);
+emit_32(1129508897);
+emit_32(1127460897);
+emit_32(1103905266);
+emit_32(1129508897);
+emit_32(1127716880);
+emit_32(1104351225);
+emit_32(1129508897);
+emit_32(1127972864);
+emit_32(1104338538);
+emit_32(1129508897);
+emit_32(1128228848);
+emit_32(1104240391);
+emit_32(1129508897);
+emit_32(1128484897);
+emit_32(1104134537);
+emit_32(1129508897);
+emit_32(1128740880);
+emit_32(1103285715);
+emit_32(1129508897);
+emit_32(1128996864);
+emit_32(1103034843);
+emit_32(1129508897);
+emit_32(1129252848);
+emit_32(1102598688);
+emit_32(1129508897);
+emit_32(1129508897);
+emit_32(1102258058);
+emit_32(1129508897);
+emit_32(1129764880);
+emit_32(1102454299);
+emit_32(1129508897);
+emit_32(1130020864);
+emit_32(1102717125);
+emit_32(1129508897);
+emit_32(1130276848);
+emit_32(1103026612);
+emit_32(1129508897);
+emit_32(1130532897);
+emit_32(1103449817);
+emit_32(1129508897);
+emit_32(1130788880);
+emit_32(1103303593);
+emit_32(1129508897);
+emit_32(1131044864);
+emit_32(1100124678);
+emit_32(1129508897);
+emit_32(1131300848);
+emit_32(1099774348);
+emit_32(1129508897);
+emit_32(1131556897);
+emit_32(1099896141);
+emit_32(1129508897);
+emit_32(1131812880);
+emit_32(1099520646);
+emit_32(1129508897);
+emit_32(1132068864);
+emit_32(1098974233);
+emit_32(1129508897);
+emit_32(1081737258);
+emit_32(1093092141);
+emit_32(1129252848);
+emit_32(1090125845);
+emit_32(1092641463);
+emit_32(1129252848);
+emit_32(1094418484);
+emit_32(1093021047);
+emit_32(1129252848);
+emit_32(1098514432);
+emit_32(1091404216);
+emit_32(1129252848);
+emit_32(1100759066);
+emit_32(1090891043);
+emit_32(1129252848);
+emit_32(1102807040);
+emit_32(1087333718);
+emit_32(1129252848);
+emit_32(1104855066);
+emit_32(1086550243);
+emit_32(1129252848);
+emit_32(1106903040);
+emit_32(1086614059);
+emit_32(1129252848);
+emit_32(1108123661);
+emit_32(1087395227);
+emit_32(1129252848);
+emit_32(1109147648);
+emit_32(1087693715);
+emit_32(1129252848);
+emit_32(1110171661);
+emit_32(1086905605);
+emit_32(1129252848);
+emit_32(1111195648);
+emit_32(1085917406);
+emit_32(1129252848);
+emit_32(1112219661);
+emit_32(1086122445);
+emit_32(1129252848);
+emit_32(1113243648);
+emit_32(1085614577);
+emit_32(1129252848);
+emit_32(1114267661);
+emit_32(1083545422);
+emit_32(1129252848);
+emit_32(1115291648);
+emit_32(1083831285);
+emit_32(1129252848);
+emit_32(1116000263);
+emit_32(1086466587);
+emit_32(1129252848);
+emit_32(1116512256);
+emit_32(1089709267);
+emit_32(1129252848);
+emit_32(1117024263);
+emit_32(1091281166);
+emit_32(1129252848);
+emit_32(1117536256);
+emit_32(1091916068);
+emit_32(1129252848);
+emit_32(1118048263);
+emit_32(1091040717);
+emit_32(1129252848);
+emit_32(1118560256);
+emit_32(1090210612);
+emit_32(1129252848);
+emit_32(1119072263);
+emit_32(1089209851);
+emit_32(1129252848);
+emit_32(1119584256);
+emit_32(1089378399);
+emit_32(1129252848);
+emit_32(1120096263);
+emit_32(1090028789);
+emit_32(1129252848);
+emit_32(1120608322);
+emit_32(1091234840);
+emit_32(1129252848);
+emit_32(1121120289);
+emit_32(1093074734);
+emit_32(1129252848);
+emit_32(1121632256);
+emit_32(1093111330);
+emit_32(1129252848);
+emit_32(1122144223);
+emit_32(1094128029);
+emit_32(1129252848);
+emit_32(1122656322);
+emit_32(1095036410);
+emit_32(1129252848);
+emit_32(1123168289);
+emit_32(1095680551);
+emit_32(1129252848);
+emit_32(1123680256);
+emit_32(1097146460);
+emit_32(1129252848);
+emit_32(1124132848);
+emit_32(1098042153);
+emit_32(1129252848);
+emit_32(1124388897);
+emit_32(1097318741);
+emit_32(1129252848);
+emit_32(1124644880);
+emit_32(1101515457);
+emit_32(1129252848);
+emit_32(1124900864);
+emit_32(1102822454);
+emit_32(1129252848);
+emit_32(1125156848);
+emit_32(1103621941);
+emit_32(1129252848);
+emit_32(1125412897);
+emit_32(1104011330);
+emit_32(1129252848);
+emit_32(1125668880);
+emit_32(1101788244);
+emit_32(1129252848);
+emit_32(1125924864);
+emit_32(1102141981);
+emit_32(1129252848);
+emit_32(1126180848);
+emit_32(1103612556);
+emit_32(1129252848);
+emit_32(1126436897);
+emit_32(1104382421);
+emit_32(1129252848);
+emit_32(1126692880);
+emit_32(1104094324);
+emit_32(1129252848);
+emit_32(1126948864);
+emit_32(1101288335);
+emit_32(1129252848);
+emit_32(1127204848);
+emit_32(1103222224);
+emit_32(1129252848);
+emit_32(1127460897);
+emit_32(1103312087);
+emit_32(1129252848);
+emit_32(1127716880);
+emit_32(1103773512);
+emit_32(1129252848);
+emit_32(1127972864);
+emit_32(1104076551);
+emit_32(1129252848);
+emit_32(1128228848);
+emit_32(1104345353);
+emit_32(1129252848);
+emit_32(1128484897);
+emit_32(1104178053);
+emit_32(1129252848);
+emit_32(1128740880);
+emit_32(1103422240);
+emit_32(1129252848);
+emit_32(1128996864);
+emit_32(1103161092);
+emit_32(1129252848);
+emit_32(1129252848);
+emit_32(1102825705);
+emit_32(1129252848);
+emit_32(1129508897);
+emit_32(1102393482);
+emit_32(1129252848);
+emit_32(1129764880);
+emit_32(1102471601);
+emit_32(1129252848);
+emit_32(1130020864);
+emit_32(1100205471);
+emit_32(1129252848);
+emit_32(1130276848);
+emit_32(1102674552);
+emit_32(1129252848);
+emit_32(1130532897);
+emit_32(1102672980);
+emit_32(1129252848);
+emit_32(1130788880);
+emit_32(1102535406);
+emit_32(1129252848);
+emit_32(1131044864);
+emit_32(1100902669);
+emit_32(1129252848);
+emit_32(1131300848);
+emit_32(1099358641);
+emit_32(1129252848);
+emit_32(1131556897);
+emit_32(1099486829);
+emit_32(1129252848);
+emit_32(1131812880);
+emit_32(1098967679);
+emit_32(1129252848);
+emit_32(1132068864);
+emit_32(1097864210);
+emit_32(1129252848);
+emit_32(1081737258);
+emit_32(1094158228);
+emit_32(1128996864);
+emit_32(1090125845);
+emit_32(1093761447);
+emit_32(1128996864);
+emit_32(1094418484);
+emit_32(1094140822);
+emit_32(1128996864);
+emit_32(1098514432);
+emit_32(1093034574);
+emit_32(1128996864);
+emit_32(1100759066);
+emit_32(1091456100);
+emit_32(1128996864);
+emit_32(1102807040);
+emit_32(1089525095);
+emit_32(1128996864);
+emit_32(1104855066);
+emit_32(1088585025);
+emit_32(1128996864);
+emit_32(1106903040);
+emit_32(1090478817);
+emit_32(1128996864);
+emit_32(1108123661);
+emit_32(1091340515);
+emit_32(1128996864);
+emit_32(1109147648);
+emit_32(1091433031);
+emit_32(1128996864);
+emit_32(1110171661);
+emit_32(1090929264);
+emit_32(1128996864);
+emit_32(1111195648);
+emit_32(1089429192);
+emit_32(1128996864);
+emit_32(1112219661);
+emit_32(1087959340);
+emit_32(1128996864);
+emit_32(1113243648);
+emit_32(1088733567);
+emit_32(1128996864);
+emit_32(1114267661);
+emit_32(1087293054);
+emit_32(1128996864);
+emit_32(1115291648);
+emit_32(1087872937);
+emit_32(1128996864);
+emit_32(1116000263);
+emit_32(1089774656);
+emit_32(1128996864);
+emit_32(1116512256);
+emit_32(1091806303);
+emit_32(1128996864);
+emit_32(1117024263);
+emit_32(1092488066);
+emit_32(1128996864);
+emit_32(1117536256);
+emit_32(1092781238);
+emit_32(1128996864);
+emit_32(1118048263);
+emit_32(1092423317);
+emit_32(1128996864);
+emit_32(1118560256);
+emit_32(1092476627);
+emit_32(1128996864);
+emit_32(1119072263);
+emit_32(1092619547);
+emit_32(1128996864);
+emit_32(1119584256);
+emit_32(1092370794);
+emit_32(1128996864);
+emit_32(1120096263);
+emit_32(1091790858);
+emit_32(1128996864);
+emit_32(1120608322);
+emit_32(1091461888);
+emit_32(1128996864);
+emit_32(1121120289);
+emit_32(1092460080);
+emit_32(1128996864);
+emit_32(1121632256);
+emit_32(1094170916);
+emit_32(1128996864);
+emit_32(1122144223);
+emit_32(1094599154);
+emit_32(1128996864);
+emit_32(1122656322);
+emit_32(1095059898);
+emit_32(1128996864);
+emit_32(1123168289);
+emit_32(1096401342);
+emit_32(1128996864);
+emit_32(1123680256);
+emit_32(1096965371);
+emit_32(1128996864);
+emit_32(1124132848);
+emit_32(1097641807);
+emit_32(1128996864);
+emit_32(1124388897);
+emit_32(1099087059);
+emit_32(1128996864);
+emit_32(1124644880);
+emit_32(1102450944);
+emit_32(1128996864);
+emit_32(1124900864);
+emit_32(1103410286);
+emit_32(1128996864);
+emit_32(1125156848);
+emit_32(1103813149);
+emit_32(1128996864);
+emit_32(1125412897);
+emit_32(1101937980);
+emit_32(1128996864);
+emit_32(1125668880);
+emit_32(1103166020);
+emit_32(1128996864);
+emit_32(1125924864);
+emit_32(1104505681);
+emit_32(1128996864);
+emit_32(1126180848);
+emit_32(1103994867);
+emit_32(1128996864);
+emit_32(1126436897);
+emit_32(1104662548);
+emit_32(1128996864);
+emit_32(1126692880);
+emit_32(1104116974);
+emit_32(1128996864);
+emit_32(1126948864);
+emit_32(1100885629);
+emit_32(1128996864);
+emit_32(1127204848);
+emit_32(1100638585);
+emit_32(1128996864);
+emit_32(1127460897);
+emit_32(1100607442);
+emit_32(1128996864);
+emit_32(1127716880);
+emit_32(1103522116);
+emit_32(1128996864);
+emit_32(1127972864);
+emit_32(1103785676);
+emit_32(1128996864);
+emit_32(1128228848);
+emit_32(1103795375);
+emit_32(1128996864);
+emit_32(1128484897);
+emit_32(1101024146);
+emit_32(1128996864);
+emit_32(1128740880);
+emit_32(1100738829);
+emit_32(1128996864);
+emit_32(1128996864);
+emit_32(1102805677);
+emit_32(1128996864);
+emit_32(1129252848);
+emit_32(1102445543);
+emit_32(1128996864);
+emit_32(1129508897);
+emit_32(1102293657);
+emit_32(1128996864);
+emit_32(1129764880);
+emit_32(1100424728);
+emit_32(1128996864);
+emit_32(1130020864);
+emit_32(1099671273);
+emit_32(1128996864);
+emit_32(1130276848);
+emit_32(1100387975);
+emit_32(1128996864);
+emit_32(1130532897);
+emit_32(1101778072);
+emit_32(1128996864);
+emit_32(1130788880);
+emit_32(1101932318);
+emit_32(1128996864);
+emit_32(1131044864);
+emit_32(1101602383);
+emit_32(1128996864);
+emit_32(1131300848);
+emit_32(1098804049);
+emit_32(1128996864);
+emit_32(1131556897);
+emit_32(1098879861);
+emit_32(1128996864);
+emit_32(1131812880);
+emit_32(1098098881);
+emit_32(1128996864);
+emit_32(1132068864);
+emit_32(1096354890);
+emit_32(1128996864);
+emit_32(1081737258);
+emit_32(1094837495);
+emit_32(1128740880);
+emit_32(1090125845);
+emit_32(1095096284);
+emit_32(1128740880);
+emit_32(1094418484);
+emit_32(1094836761);
+emit_32(1128740880);
+emit_32(1098514432);
+emit_32(1093776966);
+emit_32(1128740880);
+emit_32(1100759066);
+emit_32(1092523739);
+emit_32(1128740880);
+emit_32(1102807040);
+emit_32(1091209108);
+emit_32(1128740880);
+emit_32(1104855066);
+emit_32(1090481543);
+emit_32(1128740880);
+emit_32(1106903040);
+emit_32(1091724850);
+emit_32(1128740880);
+emit_32(1108123661);
+emit_32(1092918077);
+emit_32(1128740880);
+emit_32(1109147648);
+emit_32(1092885571);
+emit_32(1128740880);
+emit_32(1110171661);
+emit_32(1092185311);
+emit_32(1128740880);
+emit_32(1111195648);
+emit_32(1090654935);
+emit_32(1128740880);
+emit_32(1112219661);
+emit_32(1090140378);
+emit_32(1128740880);
+emit_32(1113243648);
+emit_32(1091090734);
+emit_32(1128740880);
+emit_32(1114267661);
+emit_32(1090672415);
+emit_32(1128740880);
+emit_32(1115291648);
+emit_32(1091158399);
+emit_32(1128740880);
+emit_32(1116000263);
+emit_32(1092233651);
+emit_32(1128740880);
+emit_32(1116512256);
+emit_32(1093174139);
+emit_32(1128740880);
+emit_32(1117024263);
+emit_32(1092967255);
+emit_32(1128740880);
+emit_32(1117536256);
+emit_32(1093958998);
+emit_32(1128740880);
+emit_32(1118048263);
+emit_32(1094070986);
+emit_32(1128740880);
+emit_32(1118560256);
+emit_32(1094393423);
+emit_32(1128740880);
+emit_32(1119072263);
+emit_32(1095115263);
+emit_32(1128740880);
+emit_32(1119584256);
+emit_32(1095201351);
+emit_32(1128740880);
+emit_32(1120096263);
+emit_32(1094051693);
+emit_32(1128740880);
+emit_32(1120608322);
+emit_32(1092903187);
+emit_32(1128740880);
+emit_32(1121120289);
+emit_32(1093066136);
+emit_32(1128740880);
+emit_32(1121632256);
+emit_32(1093765641);
+emit_32(1128740880);
+emit_32(1122144223);
+emit_32(1094858886);
+emit_32(1128740880);
+emit_32(1122656322);
+emit_32(1095293731);
+emit_32(1128740880);
+emit_32(1123168289);
+emit_32(1096058248);
+emit_32(1128740880);
+emit_32(1123680256);
+emit_32(1098058197);
+emit_32(1128740880);
+emit_32(1124132848);
+emit_32(1099090415);
+emit_32(1128740880);
+emit_32(1124388897);
+emit_32(1099754216);
+emit_32(1128740880);
+emit_32(1124644880);
+emit_32(1103037989);
+emit_32(1128740880);
+emit_32(1124900864);
+emit_32(1103411334);
+emit_32(1128740880);
+emit_32(1125156848);
+emit_32(1104264875);
+emit_32(1128740880);
+emit_32(1125412897);
+emit_32(1101973160);
+emit_32(1128740880);
+emit_32(1125668880);
+emit_32(1104413616);
+emit_32(1128740880);
+emit_32(1125924864);
+emit_32(1104295861);
+emit_32(1128740880);
+emit_32(1126180848);
+emit_32(1104392801);
+emit_32(1128740880);
+emit_32(1126436897);
+emit_32(1104250248);
+emit_32(1128740880);
+emit_32(1126692880);
+emit_32(1104207466);
+emit_32(1128740880);
+emit_32(1126948864);
+emit_32(1101393507);
+emit_32(1128740880);
+emit_32(1127204848);
+emit_32(1101210845);
+emit_32(1128740880);
+emit_32(1127460897);
+emit_32(1100893913);
+emit_32(1128740880);
+emit_32(1127716880);
+emit_32(1101512678);
+emit_32(1128740880);
+emit_32(1127972864);
+emit_32(1103029862);
+emit_32(1128740880);
+emit_32(1128228848);
+emit_32(1103145206);
+emit_32(1128740880);
+emit_32(1128484897);
+emit_32(1100738514);
+emit_32(1128740880);
+emit_32(1128740880);
+emit_32(1101464234);
+emit_32(1128740880);
+emit_32(1128996864);
+emit_32(1102046560);
+emit_32(1128740880);
+emit_32(1129252848);
+emit_32(1102012062);
+emit_32(1128740880);
+emit_32(1129508897);
+emit_32(1101022678);
+emit_32(1128740880);
+emit_32(1129764880);
+emit_32(1098697723);
+emit_32(1128740880);
+emit_32(1130020864);
+emit_32(1098672662);
+emit_32(1128740880);
+emit_32(1130276848);
+emit_32(1098798911);
+emit_32(1128740880);
+emit_32(1130532897);
+emit_32(1100908750);
+emit_32(1128740880);
+emit_32(1130788880);
+emit_32(1100999243);
+emit_32(1128740880);
+emit_32(1131044864);
+emit_32(1100710255);
+emit_32(1128740880);
+emit_32(1131300848);
+emit_32(1097055338);
+emit_32(1128740880);
+emit_32(1131556897);
+emit_32(1097777807);
+emit_32(1128740880);
+emit_32(1131812880);
+emit_32(1096376071);
+emit_32(1128740880);
+emit_32(1132068864);
+emit_32(1094422364);
+emit_32(1128740880);
+emit_32(1081737258);
+emit_32(1096602144);
+emit_32(1128484897);
+emit_32(1090125845);
+emit_32(1096605604);
+emit_32(1128484897);
+emit_32(1094418484);
+emit_32(1095915222);
+emit_32(1128484897);
+emit_32(1098514432);
+emit_32(1094988700);
+emit_32(1128484897);
+emit_32(1100759066);
+emit_32(1093318738);
+emit_32(1128484897);
+emit_32(1102807040);
+emit_32(1092655199);
+emit_32(1128484897);
+emit_32(1104855066);
+emit_32(1091908927);
+emit_32(1128484897);
+emit_32(1106903040);
+emit_32(1093146457);
+emit_32(1128484897);
+emit_32(1108123661);
+emit_32(1093729255);
+emit_32(1128484897);
+emit_32(1109147648);
+emit_32(1093918628);
+emit_32(1128484897);
+emit_32(1110171661);
+emit_32(1093116048);
+emit_32(1128484897);
+emit_32(1111195648);
+emit_32(1091599514);
+emit_32(1128484897);
+emit_32(1112219661);
+emit_32(1092064610);
+emit_32(1128484897);
+emit_32(1113243648);
+emit_32(1092256562);
+emit_32(1128484897);
+emit_32(1114267661);
+emit_32(1092232937);
+emit_32(1128484897);
+emit_32(1115291648);
+emit_32(1092569216);
+emit_32(1128484897);
+emit_32(1116000263);
+emit_32(1093499827);
+emit_32(1128484897);
+emit_32(1116512256);
+emit_32(1094494401);
+emit_32(1128484897);
+emit_32(1117024263);
+emit_32(1094275249);
+emit_32(1128484897);
+emit_32(1117536256);
+emit_32(1095835320);
+emit_32(1128484897);
+emit_32(1118048263);
+emit_32(1096603927);
+emit_32(1128484897);
+emit_32(1118560256);
+emit_32(1095737174);
+emit_32(1128484897);
+emit_32(1119072263);
+emit_32(1097480536);
+emit_32(1128484897);
+emit_32(1119584256);
+emit_32(1097454217);
+emit_32(1128484897);
+emit_32(1120096263);
+emit_32(1096093480);
+emit_32(1128484897);
+emit_32(1120608322);
+emit_32(1095489500);
+emit_32(1128484897);
+emit_32(1121120289);
+emit_32(1095558601);
+emit_32(1128484897);
+emit_32(1121632256);
+emit_32(1094835713);
+emit_32(1128484897);
+emit_32(1122144223);
+emit_32(1095452590);
+emit_32(1128484897);
+emit_32(1122656322);
+emit_32(1095192334);
+emit_32(1128484897);
+emit_32(1123168289);
+emit_32(1096359399);
+emit_32(1128484897);
+emit_32(1123680256);
+emit_32(1098052325);
+emit_32(1128484897);
+emit_32(1124132848);
+emit_32(1099302384);
+emit_32(1128484897);
+emit_32(1124388897);
+emit_32(1100571948);
+emit_32(1128484897);
+emit_32(1124644880);
+emit_32(1103063207);
+emit_32(1128484897);
+emit_32(1124900864);
+emit_32(1104141301);
+emit_32(1128484897);
+emit_32(1125156848);
+emit_32(1104236039);
+emit_32(1128484897);
+emit_32(1125412897);
+emit_32(1101777338);
+emit_32(1128484897);
+emit_32(1125668880);
+emit_32(1103904794);
+emit_32(1128484897);
+emit_32(1125924864);
+emit_32(1104679954);
+emit_32(1128484897);
+emit_32(1126180848);
+emit_32(1104977645);
+emit_32(1128484897);
+emit_32(1126436897);
+emit_32(1104719800);
+emit_32(1128484897);
+emit_32(1126692880);
+emit_32(1104308181);
+emit_32(1128484897);
+emit_32(1126948864);
+emit_32(1102818784);
+emit_32(1128484897);
+emit_32(1127204848);
+emit_32(1104373455);
+emit_32(1128484897);
+emit_32(1127460897);
+emit_32(1101605267);
+emit_32(1128484897);
+emit_32(1127716880);
+emit_32(1101582618);
+emit_32(1128484897);
+emit_32(1127972864);
+emit_32(1103712433);
+emit_32(1128484897);
+emit_32(1128228848);
+emit_32(1103557086);
+emit_32(1128484897);
+emit_32(1128484897);
+emit_32(1103194069);
+emit_32(1128484897);
+emit_32(1128740880);
+emit_32(1101005482);
+emit_32(1128484897);
+emit_32(1128996864);
+emit_32(1102896693);
+emit_32(1128484897);
+emit_32(1129252848);
+emit_32(1102422632);
+emit_32(1128484897);
+emit_32(1129508897);
+emit_32(1099646737);
+emit_32(1128484897);
+emit_32(1129764880);
+emit_32(1099338403);
+emit_32(1128484897);
+emit_32(1130020864);
+emit_32(1099043701);
+emit_32(1128484897);
+emit_32(1130276848);
+emit_32(1098432643);
+emit_32(1128484897);
+emit_32(1130532897);
+emit_32(1101270824);
+emit_32(1128484897);
+emit_32(1130788880);
+emit_32(1101020319);
+emit_32(1128484897);
+emit_32(1131044864);
+emit_32(1100721370);
+emit_32(1128484897);
+emit_32(1131300848);
+emit_32(1097164495);
+emit_32(1128484897);
+emit_32(1131556897);
+emit_32(1096670721);
+emit_32(1128484897);
+emit_32(1131812880);
+emit_32(1095529765);
+emit_32(1128484897);
+emit_32(1132068864);
+emit_32(1095414841);
+emit_32(1128484897);
+emit_32(1081737258);
+emit_32(1097223216);
+emit_32(1128228848);
+emit_32(1090125845);
+emit_32(1097159043);
+emit_32(1128228848);
+emit_32(1094418484);
+emit_32(1096303510);
+emit_32(1128228848);
+emit_32(1098514432);
+emit_32(1095078878);
+emit_32(1128228848);
+emit_32(1100759066);
+emit_32(1093559491);
+emit_32(1128228848);
+emit_32(1102807040);
+emit_32(1093420450);
+emit_32(1128228848);
+emit_32(1104855066);
+emit_32(1094782865);
+emit_32(1128228848);
+emit_32(1106903040);
+emit_32(1094716699);
+emit_32(1128228848);
+emit_32(1108123661);
+emit_32(1095422496);
+emit_32(1128228848);
+emit_32(1109147648);
+emit_32(1095210998);
+emit_32(1128228848);
+emit_32(1110171661);
+emit_32(1093591892);
+emit_32(1128228848);
+emit_32(1111195648);
+emit_32(1093748025);
+emit_32(1128228848);
+emit_32(1112219661);
+emit_32(1093936139);
+emit_32(1128228848);
+emit_32(1113243648);
+emit_32(1093754421);
+emit_32(1128228848);
+emit_32(1114267661);
+emit_32(1092768026);
+emit_32(1128228848);
+emit_32(1115291648);
+emit_32(1093788919);
+emit_32(1128228848);
+emit_32(1116000263);
+emit_32(1094950951);
+emit_32(1128228848);
+emit_32(1116512256);
+emit_32(1095041758);
+emit_32(1128228848);
+emit_32(1117024263);
+emit_32(1096487325);
+emit_32(1128228848);
+emit_32(1117536256);
+emit_32(1097262852);
+emit_32(1128228848);
+emit_32(1118048263);
+emit_32(1097536530);
+emit_32(1128228848);
+emit_32(1118560256);
+emit_32(1098558367);
+emit_32(1128228848);
+emit_32(1119072263);
+emit_32(1098952212);
+emit_32(1128228848);
+emit_32(1119584256);
+emit_32(1099049048);
+emit_32(1128228848);
+emit_32(1120096263);
+emit_32(1099095553);
+emit_32(1128228848);
+emit_32(1120608322);
+emit_32(1098511915);
+emit_32(1128228848);
+emit_32(1121120289);
+emit_32(1097554566);
+emit_32(1128228848);
+emit_32(1121632256);
+emit_32(1096990851);
+emit_32(1128228848);
+emit_32(1122144223);
+emit_32(1096447479);
+emit_32(1128228848);
+emit_32(1122656322);
+emit_32(1097522584);
+emit_32(1128228848);
+emit_32(1123168289);
+emit_32(1098051486);
+emit_32(1128228848);
+emit_32(1123680256);
+emit_32(1099167013);
+emit_32(1128228848);
+emit_32(1124132848);
+emit_32(1099703150);
+emit_32(1128228848);
+emit_32(1124388897);
+emit_32(1102297537);
+emit_32(1128228848);
+emit_32(1124644880);
+emit_32(1103741898);
+emit_32(1128228848);
+emit_32(1124900864);
+emit_32(1104507778);
+emit_32(1128228848);
+emit_32(1125156848);
+emit_32(1104918977);
+emit_32(1128228848);
+emit_32(1125412897);
+emit_32(1102477630);
+emit_32(1128228848);
+emit_32(1125668880);
+emit_32(1102229537);
+emit_32(1128228848);
+emit_32(1125924864);
+emit_32(1105767065);
+emit_32(1128228848);
+emit_32(1126180848);
+emit_32(1105996231);
+emit_32(1128228848);
+emit_32(1126436897);
+emit_32(1105933527);
+emit_32(1128228848);
+emit_32(1126692880);
+emit_32(1105463240);
+emit_32(1128228848);
+emit_32(1126948864);
+emit_32(1105052985);
+emit_32(1128228848);
+emit_32(1127204848);
+emit_32(1105035736);
+emit_32(1128228848);
+emit_32(1127460897);
+emit_32(1104068424);
+emit_32(1128228848);
+emit_32(1127716880);
+emit_32(1102737467);
+emit_32(1128228848);
+emit_32(1127972864);
+emit_32(1105007739);
+emit_32(1128228848);
+emit_32(1128228848);
+emit_32(1104220835);
+emit_32(1128228848);
+emit_32(1128484897);
+emit_32(1104506624);
+emit_32(1128228848);
+emit_32(1128740880);
+emit_32(1102445019);
+emit_32(1128228848);
+emit_32(1128996864);
+emit_32(1102497553);
+emit_32(1128228848);
+emit_32(1129252848);
+emit_32(1101981444);
+emit_32(1128228848);
+emit_32(1129508897);
+emit_32(1101313920);
+emit_32(1128228848);
+emit_32(1129764880);
+emit_32(1101362889);
+emit_32(1128228848);
+emit_32(1130020864);
+emit_32(1098897582);
+emit_32(1128228848);
+emit_32(1130276848);
+emit_32(1099105095);
+emit_32(1128228848);
+emit_32(1130532897);
+emit_32(1101849428);
+emit_32(1128228848);
+emit_32(1130788880);
+emit_32(1101462346);
+emit_32(1128228848);
+emit_32(1131044864);
+emit_32(1101111964);
+emit_32(1128228848);
+emit_32(1131300848);
+emit_32(1098211184);
+emit_32(1128228848);
+emit_32(1131556897);
+emit_32(1097551315);
+emit_32(1128228848);
+emit_32(1131812880);
+emit_32(1097268933);
+emit_32(1128228848);
+emit_32(1132068864);
+emit_32(1096928356);
+emit_32(1128228848);
+emit_32(1081737258);
+emit_32(1096992739);
+emit_32(1127972864);
+emit_32(1090125866);
+emit_32(1097387423);
+emit_32(1127972864);
+emit_32(1094418484);
+emit_32(1096399769);
+emit_32(1127972864);
+emit_32(1098514432);
+emit_32(1094991636);
+emit_32(1127972864);
+emit_32(1100759066);
+emit_32(1094441239);
+emit_32(1127972864);
+emit_32(1102807040);
+emit_32(1095107189);
+emit_32(1127972864);
+emit_32(1104855066);
+emit_32(1096891761);
+emit_32(1127972864);
+emit_32(1106903040);
+emit_32(1096776417);
+emit_32(1127972864);
+emit_32(1108123661);
+emit_32(1097155058);
+emit_32(1127972864);
+emit_32(1109147648);
+emit_32(1095872545);
+emit_32(1127972864);
+emit_32(1110171661);
+emit_32(1095805226);
+emit_32(1127972864);
+emit_32(1111195648);
+emit_32(1096095367);
+emit_32(1127972864);
+emit_32(1112219661);
+emit_32(1095697223);
+emit_32(1127972864);
+emit_32(1113243648);
+emit_32(1095695440);
+emit_32(1127972864);
+emit_32(1114267661);
+emit_32(1094850498);
+emit_32(1127972864);
+emit_32(1115291648);
+emit_32(1095604738);
+emit_32(1127972864);
+emit_32(1116000263);
+emit_32(1095794636);
+emit_32(1127972864);
+emit_32(1116512256);
+emit_32(1095935669);
+emit_32(1127972864);
+emit_32(1117024263);
+emit_32(1097458201);
+emit_32(1127972864);
+emit_32(1117536256);
+emit_32(1099005428);
+emit_32(1127972864);
+emit_32(1118048263);
+emit_32(1099075106);
+emit_32(1127972864);
+emit_32(1118560256);
+emit_32(1099380713);
+emit_32(1127972864);
+emit_32(1119072263);
+emit_32(1099718669);
+emit_32(1127972864);
+emit_32(1119584256);
+emit_32(1100017356);
+emit_32(1127972864);
+emit_32(1120096263);
+emit_32(1100344092);
+emit_32(1127972864);
+emit_32(1120608322);
+emit_32(1100094793);
+emit_32(1127972864);
+emit_32(1121120289);
+emit_32(1099700109);
+emit_32(1127972864);
+emit_32(1121632256);
+emit_32(1099356386);
+emit_32(1127972864);
+emit_32(1122144223);
+emit_32(1098732746);
+emit_32(1127972864);
+emit_32(1122656322);
+emit_32(1099139855);
+emit_32(1127972864);
+emit_32(1123168289);
+emit_32(1099468531);
+emit_32(1127972864);
+emit_32(1123680256);
+emit_32(1099976619);
+emit_32(1127972864);
+emit_32(1124132848);
+emit_32(1100936485);
+emit_32(1127972864);
+emit_32(1124388897);
+emit_32(1103548174);
+emit_32(1127972864);
+emit_32(1124644880);
+emit_32(1104509036);
+emit_32(1127972864);
+emit_32(1124900864);
+emit_32(1105478183);
+emit_32(1127972864);
+emit_32(1125156848);
+emit_32(1105595466);
+emit_32(1127972864);
+emit_32(1125412897);
+emit_32(1103928335);
+emit_32(1127972864);
+emit_32(1125668880);
+emit_32(1104097732);
+emit_32(1127972864);
+emit_32(1125924864);
+emit_32(1105747981);
+emit_32(1127972864);
+emit_32(1126180848);
+emit_32(1107329129);
+emit_32(1127972864);
+emit_32(1126436897);
+emit_32(1107330807);
+emit_32(1127972864);
+emit_32(1126692880);
+emit_32(1107185474);
+emit_32(1127972864);
+emit_32(1126948864);
+emit_32(1106443082);
+emit_32(1127972864);
+emit_32(1127204848);
+emit_32(1106311748);
+emit_32(1127972864);
+emit_32(1127460897);
+emit_32(1106434117);
+emit_32(1127972864);
+emit_32(1127716880);
+emit_32(1106504581);
+emit_32(1127972864);
+emit_32(1127972864);
+emit_32(1105930800);
+emit_32(1127972864);
+emit_32(1128228848);
+emit_32(1106592085);
+emit_32(1127972864);
+emit_32(1128484897);
+emit_32(1106700245);
+emit_32(1127972864);
+emit_32(1128740880);
+emit_32(1104209143);
+emit_32(1127972864);
+emit_32(1128996864);
+emit_32(1103888803);
+emit_32(1127972864);
+emit_32(1129252848);
+emit_32(1103514986);
+emit_32(1127972864);
+emit_32(1129508897);
+emit_32(1104960710);
+emit_32(1127972864);
+emit_32(1129764880);
+emit_32(1103902592);
+emit_32(1127972864);
+emit_32(1130020864);
+emit_32(1101125124);
+emit_32(1127972864);
+emit_32(1130276848);
+emit_32(1099577950);
+emit_32(1127972864);
+emit_32(1130532897);
+emit_32(1102071045);
+emit_32(1127972864);
+emit_32(1130788880);
+emit_32(1102154983);
+emit_32(1127972864);
+emit_32(1131044864);
+emit_32(1101877530);
+emit_32(1127972864);
+emit_32(1131300848);
+emit_32(1099361367);
+emit_32(1127972864);
+emit_32(1131556897);
+emit_32(1098597270);
+emit_32(1127972864);
+emit_32(1131812880);
+emit_32(1098904817);
+emit_32(1127972864);
+emit_32(1132068864);
+emit_32(1098078224);
+emit_32(1127972864);
+emit_32(1081737258);
+emit_32(1096797703);
+emit_32(1127716880);
+emit_32(1090125866);
+emit_32(1097168375);
+emit_32(1127716880);
+emit_32(1094418484);
+emit_32(1095948462);
+emit_32(1127716880);
+emit_32(1098514432);
+emit_32(1095608618);
+emit_32(1127716880);
+emit_32(1100759066);
+emit_32(1096751356);
+emit_32(1127716880);
+emit_32(1102807040);
+emit_32(1097561276);
+emit_32(1127716880);
+emit_32(1104855066);
+emit_32(1097849635);
+emit_32(1127716880);
+emit_32(1106903040);
+emit_32(1098303144);
+emit_32(1127716880);
+emit_32(1108123661);
+emit_32(1098264347);
+emit_32(1127716880);
+emit_32(1109147648);
+emit_32(1097068341);
+emit_32(1127716880);
+emit_32(1110171661);
+emit_32(1098172806);
+emit_32(1127716880);
+emit_32(1111195648);
+emit_32(1098939053);
+emit_32(1127716880);
+emit_32(1112219661);
+emit_32(1097712586);
+emit_32(1127716880);
+emit_32(1113243648);
+emit_32(1097830341);
+emit_32(1127716880);
+emit_32(1114267661);
+emit_32(1096396623);
+emit_32(1127716880);
+emit_32(1115291648);
+emit_32(1095821689);
+emit_32(1127716880);
+emit_32(1116000263);
+emit_32(1096202427);
+emit_32(1127716880);
+emit_32(1116512256);
+emit_32(1096892495);
+emit_32(1127716880);
+emit_32(1117024263);
+emit_32(1098192309);
+emit_32(1127716880);
+emit_32(1117536256);
+emit_32(1099117101);
+emit_32(1127716880);
+emit_32(1118048263);
+emit_32(1099661522);
+emit_32(1127716880);
+emit_32(1118560256);
+emit_32(1099930114);
+emit_32(1127716880);
+emit_32(1119072263);
+emit_32(1100208459);
+emit_32(1127716880);
+emit_32(1119584256);
+emit_32(1100702129);
+emit_32(1127716880);
+emit_32(1120096263);
+emit_32(1101093614);
+emit_32(1127716880);
+emit_32(1120608322);
+emit_32(1101089158);
+emit_32(1127716880);
+emit_32(1121120289);
+emit_32(1100770810);
+emit_32(1127716880);
+emit_32(1121632256);
+emit_32(1100500959);
+emit_32(1127716880);
+emit_32(1122144223);
+emit_32(1100074032);
+emit_32(1127716880);
+emit_32(1122656322);
+emit_32(1100304509);
+emit_32(1127716880);
+emit_32(1123168289);
+emit_32(1100602881);
+emit_32(1127716880);
+emit_32(1123680256);
+emit_32(1101222799);
+emit_32(1127716880);
+emit_32(1124132848);
+emit_32(1101588647);
+emit_32(1127716880);
+emit_32(1124388897);
+emit_32(1103974262);
+emit_32(1127716880);
+emit_32(1124644880);
+emit_32(1104918190);
+emit_32(1127716880);
+emit_32(1124900864);
+emit_32(1105762661);
+emit_32(1127716880);
+emit_32(1125156848);
+emit_32(1106612899);
+emit_32(1127716880);
+emit_32(1125412897);
+emit_32(1104639689);
+emit_32(1127716880);
+emit_32(1125668880);
+emit_32(1105198265);
+emit_32(1127716880);
+emit_32(1125924864);
+emit_32(1105413748);
+emit_32(1127716880);
+emit_32(1126180848);
+emit_32(1107783057);
+emit_32(1127716880);
+emit_32(1126436897);
+emit_32(1107991672);
+emit_32(1127716880);
+emit_32(1126692880);
+emit_32(1107664568);
+emit_32(1127716880);
+emit_32(1126948864);
+emit_32(1107212999);
+emit_32(1127716880);
+emit_32(1127204848);
+emit_32(1107232712);
+emit_32(1127716880);
+emit_32(1127460897);
+emit_32(1107399803);
+emit_32(1127716880);
+emit_32(1127716880);
+emit_32(1107519026);
+emit_32(1127716880);
+emit_32(1127972864);
+emit_32(1105586291);
+emit_32(1127716880);
+emit_32(1128228848);
+emit_32(1107722319);
+emit_32(1127716880);
+emit_32(1128484897);
+emit_32(1107549828);
+emit_32(1127716880);
+emit_32(1128740880);
+emit_32(1107213051);
+emit_32(1127716880);
+emit_32(1128996864);
+emit_32(1104407953);
+emit_32(1127716880);
+emit_32(1129252848);
+emit_32(1105963988);
+emit_32(1127716880);
+emit_32(1129508897);
+emit_32(1105610303);
+emit_32(1127716880);
+emit_32(1129764880);
+emit_32(1104453042);
+emit_32(1127716880);
+emit_32(1130020864);
+emit_32(1103642178);
+emit_32(1127716880);
+emit_32(1130276848);
+emit_32(1100372928);
+emit_32(1127716880);
+emit_32(1130532897);
+emit_32(1102654577);
+emit_32(1127716880);
+emit_32(1130788880);
+emit_32(1102227911);
+emit_32(1127716880);
+emit_32(1131044864);
+emit_32(1101889641);
+emit_32(1127716880);
+emit_32(1131300848);
+emit_32(1099123340);
+emit_32(1127716880);
+emit_32(1131556897);
+emit_32(1099152595);
+emit_32(1127716880);
+emit_32(1131812880);
+emit_32(1099081921);
+emit_32(1127716880);
+emit_32(1132068864);
+emit_32(1098933705);
+emit_32(1127716880);
+emit_32(1081737258);
+emit_32(1097521955);
+emit_32(1127460897);
+emit_32(1090125866);
+emit_32(1097290954);
+emit_32(1127460897);
+emit_32(1094418484);
+emit_32(1096535664);
+emit_32(1127460897);
+emit_32(1098514432);
+emit_32(1096791202);
+emit_32(1127460897);
+emit_32(1100759066);
+emit_32(1097822057);
+emit_32(1127460897);
+emit_32(1102807040);
+emit_32(1098240020);
+emit_32(1127460897);
+emit_32(1104855066);
+emit_32(1098978217);
+emit_32(1127460897);
+emit_32(1106903040);
+emit_32(1099121977);
+emit_32(1127460897);
+emit_32(1108123661);
+emit_32(1099009884);
+emit_32(1127460897);
+emit_32(1109147648);
+emit_32(1099001233);
+emit_32(1127460897);
+emit_32(1110171661);
+emit_32(1099564791);
+emit_32(1127460897);
+emit_32(1111195648);
+emit_32(1099604427);
+emit_32(1127460897);
+emit_32(1112219661);
+emit_32(1098912681);
+emit_32(1127460897);
+emit_32(1113243648);
+emit_32(1098358823);
+emit_32(1127460897);
+emit_32(1114267661);
+emit_32(1096897318);
+emit_32(1127460897);
+emit_32(1115291648);
+emit_32(1095649408);
+emit_32(1127460897);
+emit_32(1116000263);
+emit_32(1096935801);
+emit_32(1127460897);
+emit_32(1116512256);
+emit_32(1097798359);
+emit_32(1127460897);
+emit_32(1117024263);
+emit_32(1098804363);
+emit_32(1127460897);
+emit_32(1117536256);
+emit_32(1099628859);
+emit_32(1127460897);
+emit_32(1118048263);
+emit_32(1100288570);
+emit_32(1127460897);
+emit_32(1118560256);
+emit_32(1100879076);
+emit_32(1127460897);
+emit_32(1119072263);
+emit_32(1100927310);
+emit_32(1127460897);
+emit_32(1119584256);
+emit_32(1101310879);
+emit_32(1127460897);
+emit_32(1120096263);
+emit_32(1101683124);
+emit_32(1127460897);
+emit_32(1120608322);
+emit_32(1101623879);
+emit_32(1127460897);
+emit_32(1121120289);
+emit_32(1101768950);
+emit_32(1127460897);
+emit_32(1121632256);
+emit_32(1101614495);
+emit_32(1127460897);
+emit_32(1122144223);
+emit_32(1101255882);
+emit_32(1127460897);
+emit_32(1122656322);
+emit_32(1101305165);
+emit_32(1127460897);
+emit_32(1123168289);
+emit_32(1101210164);
+emit_32(1127460897);
+emit_32(1123680256);
+emit_32(1101974785);
+emit_32(1127460897);
+emit_32(1124132848);
+emit_32(1102412304);
+emit_32(1127460897);
+emit_32(1124388897);
+emit_32(1102794981);
+emit_32(1127460897);
+emit_32(1124644880);
+emit_32(1105358121);
+emit_32(1127460897);
+emit_32(1124900864);
+emit_32(1106543274);
+emit_32(1127460897);
+emit_32(1125156848);
+emit_32(1107495748);
+emit_32(1127460897);
+emit_32(1125412897);
+emit_32(1105955861);
+emit_32(1127460897);
+emit_32(1125668880);
+emit_32(1106429084);
+emit_32(1127460897);
+emit_32(1125924864);
+emit_32(1107140909);
+emit_32(1127460897);
+emit_32(1126180848);
+emit_32(1108420067);
+emit_32(1127460897);
+emit_32(1126436897);
+emit_32(1108539421);
+emit_32(1127460897);
+emit_32(1126692880);
+emit_32(1108278824);
+emit_32(1127460897);
+emit_32(1126948864);
+emit_32(1106248099);
+emit_32(1127460897);
+emit_32(1127204848);
+emit_32(1106077182);
+emit_32(1127460897);
+emit_32(1127460897);
+emit_32(1107959900);
+emit_32(1127460897);
+emit_32(1127716880);
+emit_32(1107937880);
+emit_32(1127460897);
+emit_32(1127972864);
+emit_32(1107912006);
+emit_32(1127460897);
+emit_32(1128228848);
+emit_32(1107668710);
+emit_32(1127460897);
+emit_32(1128484897);
+emit_32(1106012327);
+emit_32(1127460897);
+emit_32(1128740880);
+emit_32(1105705199);
+emit_32(1127460897);
+emit_32(1128996864);
+emit_32(1105290802);
+emit_32(1127460897);
+emit_32(1129252848);
+emit_32(1106539918);
+emit_32(1127460897);
+emit_32(1129508897);
+emit_32(1105540573);
+emit_32(1127460897);
+emit_32(1129764880);
+emit_32(1104772701);
+emit_32(1127460897);
+emit_32(1130020864);
+emit_32(1101448086);
+emit_32(1127460897);
+emit_32(1130276848);
+emit_32(1101175508);
+emit_32(1127460897);
+emit_32(1130532897);
+emit_32(1103296830);
+emit_32(1127460897);
+emit_32(1130788880);
+emit_32(1102692850);
+emit_32(1127460897);
+emit_32(1131044864);
+emit_32(1101873336);
+emit_32(1127460897);
+emit_32(1131300848);
+emit_32(1099038038);
+emit_32(1127460897);
+emit_32(1131556897);
+emit_32(1099314443);
+emit_32(1127460897);
+emit_32(1131812880);
+emit_32(1099183371);
+emit_32(1127460897);
+emit_32(1132068864);
+emit_32(1098779931);
+emit_32(1127460897);
+emit_32(1081737258);
+emit_32(1098169765);
+emit_32(1127204848);
+emit_32(1090125866);
+emit_32(1097937715);
+emit_32(1127204848);
+emit_32(1094418484);
+emit_32(1097656592);
+emit_32(1127204848);
+emit_32(1098514432);
+emit_32(1097279105);
+emit_32(1127204848);
+emit_32(1100759066);
+emit_32(1098705587);
+emit_32(1127204848);
+emit_32(1102807040);
+emit_32(1099191760);
+emit_32(1127204848);
+emit_32(1104855066);
+emit_32(1099316121);
+emit_32(1127204848);
+emit_32(1106903040);
+emit_32(1099533910);
+emit_32(1127204848);
+emit_32(1108123661);
+emit_32(1099430573);
+emit_32(1127204848);
+emit_32(1109147648);
+emit_32(1099413848);
+emit_32(1127204848);
+emit_32(1110171661);
+emit_32(1099829504);
+emit_32(1127204848);
+emit_32(1111195648);
+emit_32(1100016517);
+emit_32(1127204848);
+emit_32(1112219661);
+emit_32(1099249693);
+emit_32(1127204848);
+emit_32(1113243648);
+emit_32(1098799645);
+emit_32(1127204848);
+emit_32(1114267661);
+emit_32(1098342780);
+emit_32(1127204848);
+emit_32(1115291648);
+emit_32(1097196791);
+emit_32(1127204848);
+emit_32(1116000263);
+emit_32(1097901330);
+emit_32(1127204848);
+emit_32(1116512256);
+emit_32(1098866124);
+emit_32(1127204848);
+emit_32(1117024263);
+emit_32(1099404516);
+emit_32(1127204848);
+emit_32(1117536256);
+emit_32(1099985741);
+emit_32(1127204848);
+emit_32(1118048263);
+emit_32(1100426563);
+emit_32(1127204848);
+emit_32(1118560256);
+emit_32(1101059169);
+emit_32(1127204848);
+emit_32(1119072263);
+emit_32(1101194959);
+emit_32(1127204848);
+emit_32(1119584256);
+emit_32(1101016072);
+emit_32(1127204848);
+emit_32(1120096263);
+emit_32(1101472308);
+emit_32(1127204848);
+emit_32(1120608322);
+emit_32(1101985323);
+emit_32(1127204848);
+emit_32(1121120289);
+emit_32(1102436316);
+emit_32(1127204848);
+emit_32(1121632256);
+emit_32(1102413719);
+emit_32(1127204848);
+emit_32(1122144223);
+emit_32(1101785779);
+emit_32(1127204848);
+emit_32(1122656322);
+emit_32(1101731673);
+emit_32(1127204848);
+emit_32(1123168289);
+emit_32(1102273262);
+emit_32(1127204848);
+emit_32(1123680256);
+emit_32(1102879182);
+emit_32(1127204848);
+emit_32(1124132848);
+emit_32(1103081819);
+emit_32(1127204848);
+emit_32(1124388897);
+emit_32(1103419985);
+emit_32(1127204848);
+emit_32(1124644880);
+emit_32(1106708634);
+emit_32(1127204848);
+emit_32(1124900864);
+emit_32(1107116530);
+emit_32(1127204848);
+emit_32(1125156848);
+emit_32(1107879893);
+emit_32(1127204848);
+emit_32(1125412897);
+emit_32(1106751573);
+emit_32(1127204848);
+emit_32(1125668880);
+emit_32(1108314712);
+emit_32(1127204848);
+emit_32(1125924864);
+emit_32(1109036342);
+emit_32(1127204848);
+emit_32(1126180848);
+emit_32(1109160047);
+emit_32(1127204848);
+emit_32(1126436897);
+emit_32(1109143323);
+emit_32(1127204848);
+emit_32(1126692880);
+emit_32(1108877692);
+emit_32(1127204848);
+emit_32(1126948864);
+emit_32(1108518135);
+emit_32(1127204848);
+emit_32(1127204848);
+emit_32(1108362238);
+emit_32(1127204848);
+emit_32(1127460897);
+emit_32(1108376997);
+emit_32(1127204848);
+emit_32(1127716880);
+emit_32(1108363313);
+emit_32(1127204848);
+emit_32(1127972864);
+emit_32(1108321213);
+emit_32(1127204848);
+emit_32(1128228848);
+emit_32(1106462953);
+emit_32(1127204848);
+emit_32(1128484897);
+emit_32(1106272584);
+emit_32(1127204848);
+emit_32(1128740880);
+emit_32(1105682131);
+emit_32(1127204848);
+emit_32(1128996864);
+emit_32(1107532055);
+emit_32(1127204848);
+emit_32(1129252848);
+emit_32(1106896539);
+emit_32(1127204848);
+emit_32(1129508897);
+emit_32(1106257851);
+emit_32(1127204848);
+emit_32(1129764880);
+emit_32(1102788428);
+emit_32(1127204848);
+emit_32(1130020864);
+emit_32(1101910298);
+emit_32(1127204848);
+emit_32(1130276848);
+emit_32(1101035943);
+emit_32(1127204848);
+emit_32(1130532897);
+emit_32(1103745044);
+emit_32(1127204848);
+emit_32(1130788880);
+emit_32(1103183164);
+emit_32(1127204848);
+emit_32(1131044864);
+emit_32(1102075291);
+emit_32(1127204848);
+emit_32(1131300848);
+emit_32(1098519780);
+emit_32(1127204848);
+emit_32(1131556897);
+emit_32(1098358928);
+emit_32(1127204848);
+emit_32(1131812880);
+emit_32(1098789788);
+emit_32(1127204848);
+emit_32(1132068864);
+emit_32(1097999476);
+emit_32(1127204848);
+emit_32(1081737258);
+emit_32(1098949119);
+emit_32(1126948864);
+emit_32(1090125845);
+emit_32(1098913939);
+emit_32(1126948864);
+emit_32(1094418484);
+emit_32(1097887384);
+emit_32(1126948864);
+emit_32(1098514432);
+emit_32(1098001888);
+emit_32(1126948864);
+emit_32(1100759066);
+emit_32(1099097545);
+emit_32(1126948864);
+emit_32(1102807040);
+emit_32(1099290588);
+emit_32(1126948864);
+emit_32(1104855066);
+emit_32(1099551474);
+emit_32(1126948864);
+emit_32(1106903040);
+emit_32(1099163605);
+emit_32(1126948864);
+emit_32(1108123661);
+emit_32(1099190711);
+emit_32(1126948864);
+emit_32(1109147648);
+emit_32(1099720557);
+emit_32(1126948864);
+emit_32(1110171661);
+emit_32(1099796002);
+emit_32(1126948864);
+emit_32(1111195648);
+emit_32(1099824156);
+emit_32(1126948864);
+emit_32(1112219661);
+emit_32(1099671431);
+emit_32(1126948864);
+emit_32(1113243648);
+emit_32(1099204133);
+emit_32(1126948864);
+emit_32(1114267661);
+emit_32(1098311323);
+emit_32(1126948864);
+emit_32(1115291648);
+emit_32(1097819226);
+emit_32(1126948864);
+emit_32(1116000263);
+emit_32(1098122894);
+emit_32(1126948864);
+emit_32(1116512256);
+emit_32(1099069548);
+emit_32(1126948864);
+emit_32(1117024263);
+emit_32(1099712640);
+emit_32(1126948864);
+emit_32(1117536256);
+emit_32(1100258161);
+emit_32(1126948864);
+emit_32(1118048263);
+emit_32(1100567858);
+emit_32(1126948864);
+emit_32(1118560256);
+emit_32(1100912735);
+emit_32(1126948864);
+emit_32(1119072263);
+emit_32(1101335259);
+emit_32(1126948864);
+emit_32(1119584256);
+emit_32(1101300236);
+emit_32(1126948864);
+emit_32(1120096263);
+emit_32(1101307209);
+emit_32(1126948864);
+emit_32(1120608322);
+emit_32(1101813252);
+emit_32(1126948864);
+emit_32(1121120289);
+emit_32(1102347239);
+emit_32(1126948864);
+emit_32(1121632256);
+emit_32(1102583851);
+emit_32(1126948864);
+emit_32(1122144223);
+emit_32(1102372458);
+emit_32(1126948864);
+emit_32(1122656322);
+emit_32(1102499126);
+emit_32(1126948864);
+emit_32(1123168289);
+emit_32(1102697097);
+emit_32(1126948864);
+emit_32(1123680256);
+emit_32(1103294890);
+emit_32(1126948864);
+emit_32(1124132848);
+emit_32(1103928177);
+emit_32(1126948864);
+emit_32(1124388897);
+emit_32(1105053195);
+emit_32(1126948864);
+emit_32(1124644880);
+emit_32(1107678488);
+emit_32(1126948864);
+emit_32(1124900864);
+emit_32(1107666613);
+emit_32(1126948864);
+emit_32(1125156848);
+emit_32(1108068663);
+emit_32(1126948864);
+emit_32(1125412897);
+emit_32(1107030075);
+emit_32(1126948864);
+emit_32(1125668880);
+emit_32(1109044940);
+emit_32(1126948864);
+emit_32(1125924864);
+emit_32(1109464528);
+emit_32(1126948864);
+emit_32(1126180848);
+emit_32(1109502329);
+emit_32(1126948864);
+emit_32(1126436897);
+emit_32(1109661634);
+emit_32(1126948864);
+emit_32(1126692880);
+emit_32(1109335998);
+emit_32(1126948864);
+emit_32(1126948864);
+emit_32(1108826548);
+emit_32(1126948864);
+emit_32(1127204848);
+emit_32(1108883774);
+emit_32(1126948864);
+emit_32(1127460897);
+emit_32(1107300110);
+emit_32(1126948864);
+emit_32(1127716880);
+emit_32(1108142929);
+emit_32(1126948864);
+emit_32(1127972864);
+emit_32(1108009838);
+emit_32(1126948864);
+emit_32(1128228848);
+emit_32(1107061165);
+emit_32(1126948864);
+emit_32(1128484897);
+emit_32(1105722553);
+emit_32(1126948864);
+emit_32(1128740880);
+emit_32(1106183035);
+emit_32(1126948864);
+emit_32(1128996864);
+emit_32(1107464133);
+emit_32(1126948864);
+emit_32(1129252848);
+emit_32(1106950907);
+emit_32(1126948864);
+emit_32(1129508897);
+emit_32(1105415740);
+emit_32(1126948864);
+emit_32(1129764880);
+emit_32(1102572893);
+emit_32(1126948864);
+emit_32(1130020864);
+emit_32(1101736444);
+emit_32(1126948864);
+emit_32(1130276848);
+emit_32(1103790604);
+emit_32(1126948864);
+emit_32(1130532897);
+emit_32(1103702943);
+emit_32(1126948864);
+emit_32(1130788880);
+emit_32(1102824918);
+emit_32(1126948864);
+emit_32(1131044864);
+emit_32(1102312374);
+emit_32(1126948864);
+emit_32(1131300848);
+emit_32(1098839595);
+emit_32(1126948864);
+emit_32(1131556897);
+emit_32(1098161272);
+emit_32(1126948864);
+emit_32(1131812880);
+emit_32(1097697906);
+emit_32(1126948864);
+emit_32(1132068864);
+emit_32(1097362991);
+emit_32(1126948864);
+emit_32(1081737258);
+emit_32(1099508220);
+emit_32(1126692880);
+emit_32(1090125845);
+emit_32(1099273653);
+emit_32(1126692880);
+emit_32(1094418484);
+emit_32(1099205496);
+emit_32(1126692880);
+emit_32(1098514432);
+emit_32(1098995047);
+emit_32(1126692880);
+emit_32(1100759066);
+emit_32(1099092355);
+emit_32(1126692880);
+emit_32(1102807040);
+emit_32(1099190187);
+emit_32(1126692880);
+emit_32(1104855066);
+emit_32(1099331011);
+emit_32(1126692880);
+emit_32(1106903040);
+emit_32(1099536112);
+emit_32(1126692880);
+emit_32(1108123661);
+emit_32(1099882824);
+emit_32(1126692880);
+emit_32(1109147648);
+emit_32(1100241332);
+emit_32(1126692880);
+emit_32(1110171661);
+emit_32(1100308441);
+emit_32(1126692880);
+emit_32(1111195648);
+emit_32(1099924085);
+emit_32(1126692880);
+emit_32(1112219661);
+emit_32(1099715209);
+emit_32(1126692880);
+emit_32(1113243648);
+emit_32(1099688575);
+emit_32(1126692880);
+emit_32(1114267661);
+emit_32(1099415106);
+emit_32(1126692880);
+emit_32(1115291648);
+emit_32(1099022572);
+emit_32(1126692880);
+emit_32(1116000263);
+emit_32(1098456655);
+emit_32(1126692880);
+emit_32(1116512256);
+emit_32(1099432827);
+emit_32(1126692880);
+emit_32(1117024263);
+emit_32(1099963931);
+emit_32(1126692880);
+emit_32(1117536256);
+emit_32(1100471914);
+emit_32(1126692880);
+emit_32(1118048263);
+emit_32(1100910271);
+emit_32(1126692880);
+emit_32(1118560256);
+emit_32(1100950746);
+emit_32(1126692880);
+emit_32(1119072263);
+emit_32(1101340921);
+emit_32(1126692880);
+emit_32(1119584256);
+emit_32(1101516925);
+emit_32(1126692880);
+emit_32(1120096263);
+emit_32(1101607626);
+emit_32(1126692880);
+emit_32(1120608322);
+emit_32(1101700478);
+emit_32(1126692880);
+emit_32(1121120289);
+emit_32(1102113826);
+emit_32(1126692880);
+emit_32(1121632256);
+emit_32(1102162428);
+emit_32(1126692880);
+emit_32(1122144223);
+emit_32(1102697097);
+emit_32(1126692880);
+emit_32(1122656322);
+emit_32(1103401950);
+emit_32(1126692880);
+emit_32(1123168289);
+emit_32(1103831813);
+emit_32(1126692880);
+emit_32(1123680256);
+emit_32(1104291194);
+emit_32(1126692880);
+emit_32(1124132848);
+emit_32(1105271456);
+emit_32(1126692880);
+emit_32(1124388897);
+emit_32(1106220574);
+emit_32(1126692880);
+emit_32(1124644880);
+emit_32(1108019957);
+emit_32(1126692880);
+emit_32(1124900864);
+emit_32(1108180861);
+emit_32(1126692880);
+emit_32(1125156848);
+emit_32(1108381558);
+emit_32(1126692880);
+emit_32(1125412897);
+emit_32(1108884508);
+emit_32(1126692880);
+emit_32(1125668880);
+emit_32(1109395820);
+emit_32(1126692880);
+emit_32(1125924864);
+emit_32(1109634712);
+emit_32(1126692880);
+emit_32(1126180848);
+emit_32(1109777816);
+emit_32(1126692880);
+emit_32(1126436897);
+emit_32(1109887130);
+emit_32(1126692880);
+emit_32(1126692880);
+emit_32(1109468460);
+emit_32(1126692880);
+emit_32(1126948864);
+emit_32(1108976887);
+emit_32(1126692880);
+emit_32(1127204848);
+emit_32(1108737288);
+emit_32(1126692880);
+emit_32(1127460897);
+emit_32(1107322339);
+emit_32(1126692880);
+emit_32(1127716880);
+emit_32(1108472024);
+emit_32(1126692880);
+emit_32(1127972864);
+emit_32(1107965326);
+emit_32(1126692880);
+emit_32(1128228848);
+emit_32(1107928049);
+emit_32(1126692880);
+emit_32(1128484897);
+emit_32(1106025906);
+emit_32(1126692880);
+emit_32(1128740880);
+emit_32(1107754012);
+emit_32(1126692880);
+emit_32(1128996864);
+emit_32(1107563407);
+emit_32(1126692880);
+emit_32(1129252848);
+emit_32(1107120672);
+emit_32(1126692880);
+emit_32(1129508897);
+emit_32(1103449188);
+emit_32(1126692880);
+emit_32(1129764880);
+emit_32(1102395841);
+emit_32(1126692880);
+emit_32(1130020864);
+emit_32(1101999899);
+emit_32(1126692880);
+emit_32(1130276848);
+emit_32(1104243012);
+emit_32(1126692880);
+emit_32(1130532897);
+emit_32(1103501407);
+emit_32(1126692880);
+emit_32(1130788880);
+emit_32(1102408424);
+emit_32(1126692880);
+emit_32(1131044864);
+emit_32(1099757099);
+emit_32(1126692880);
+emit_32(1131300848);
+emit_32(1098990538);
+emit_32(1126692880);
+emit_32(1131556897);
+emit_32(1097576795);
+emit_32(1126692880);
+emit_32(1131812880);
+emit_32(1097118777);
+emit_32(1126692880);
+emit_32(1132068864);
+emit_32(1095884499);
+emit_32(1126692880);
+emit_32(1081737300);
+emit_32(1099149921);
+emit_32(1126436897);
+emit_32(1090125845);
+emit_32(1099736547);
+emit_32(1126436897);
+emit_32(1094418484);
+emit_32(1099814457);
+emit_32(1126436897);
+emit_32(1098514432);
+emit_32(1099497996);
+emit_32(1126436897);
+emit_32(1100759066);
+emit_32(1099614598);
+emit_32(1126436897);
+emit_32(1102807040);
+emit_32(1099949041);
+emit_32(1126436897);
+emit_32(1104855066);
+emit_32(1100303460);
+emit_32(1126436897);
+emit_32(1106903040);
+emit_32(1100372194);
+emit_32(1126436897);
+emit_32(1108123661);
+emit_32(1100388499);
+emit_32(1126436897);
+emit_32(1109147648);
+emit_32(1100457129);
+emit_32(1126436897);
+emit_32(1110171661);
+emit_32(1100645768);
+emit_32(1126436897);
+emit_32(1111195648);
+emit_32(1100270587);
+emit_32(1126436897);
+emit_32(1112219661);
+emit_32(1099961152);
+emit_32(1126436897);
+emit_32(1113243648);
+emit_32(1099730885);
+emit_32(1126436897);
+emit_32(1114267661);
+emit_32(1099738435);
+emit_32(1126436897);
+emit_32(1115291648);
+emit_32(1099626866);
+emit_32(1126436897);
+emit_32(1116000263);
+emit_32(1099808847);
+emit_32(1126436897);
+emit_32(1116512256);
+emit_32(1099946000);
+emit_32(1126436897);
+emit_32(1117024263);
+emit_32(1100112776);
+emit_32(1126436897);
+emit_32(1117536256);
+emit_32(1100457758);
+emit_32(1126436897);
+emit_32(1118048263);
+emit_32(1101221960);
+emit_32(1126436897);
+emit_32(1118560256);
+emit_32(1101270404);
+emit_32(1126436897);
+emit_32(1119072263);
+emit_32(1101406090);
+emit_32(1126436897);
+emit_32(1119584256);
+emit_32(1101500619);
+emit_32(1126436897);
+emit_32(1120096263);
+emit_32(1101585606);
+emit_32(1126436897);
+emit_32(1120608322);
+emit_32(1101398278);
+emit_32(1126436897);
+emit_32(1121120289);
+emit_32(1101771047);
+emit_32(1126436897);
+emit_32(1121632256);
+emit_32(1102476005);
+emit_32(1126436897);
+emit_32(1122144223);
+emit_32(1103241150);
+emit_32(1126436897);
+emit_32(1122656322);
+emit_32(1103529247);
+emit_32(1126436897);
+emit_32(1123168289);
+emit_32(1104315207);
+emit_32(1126436897);
+emit_32(1123680256);
+emit_32(1105405149);
+emit_32(1126436897);
+emit_32(1124132848);
+emit_32(1106277302);
+emit_32(1126436897);
+emit_32(1124388897);
+emit_32(1107026667);
+emit_32(1126436897);
+emit_32(1124644880);
+emit_32(1107115324);
+emit_32(1126436897);
+emit_32(1124900864);
+emit_32(1108622626);
+emit_32(1126436897);
+emit_32(1125156848);
+emit_32(1108806546);
+emit_32(1126436897);
+emit_32(1125412897);
+emit_32(1109128328);
+emit_32(1126436897);
+emit_32(1125668880);
+emit_32(1109170114);
+emit_32(1126436897);
+emit_32(1125924864);
+emit_32(1108511739);
+emit_32(1126436897);
+emit_32(1126180848);
+emit_32(1109723867);
+emit_32(1126436897);
+emit_32(1126436897);
+emit_32(1109979719);
+emit_32(1126436897);
+emit_32(1126692880);
+emit_32(1109649182);
+emit_32(1126436897);
+emit_32(1126948864);
+emit_32(1107794749);
+emit_32(1126436897);
+emit_32(1127204848);
+emit_32(1107867677);
+emit_32(1126436897);
+emit_32(1127460897);
+emit_32(1107576278);
+emit_32(1126436897);
+emit_32(1127716880);
+emit_32(1108142168);
+emit_32(1126436897);
+emit_32(1127972864);
+emit_32(1108112284);
+emit_32(1126436897);
+emit_32(1128228848);
+emit_32(1108004202);
+emit_32(1126436897);
+emit_32(1128484897);
+emit_32(1106311696);
+emit_32(1126436897);
+emit_32(1128740880);
+emit_32(1107993349);
+emit_32(1126436897);
+emit_32(1128996864);
+emit_32(1107720798);
+emit_32(1126436897);
+emit_32(1129252848);
+emit_32(1106276306);
+emit_32(1126436897);
+emit_32(1129508897);
+emit_32(1103536849);
+emit_32(1126436897);
+emit_32(1129764880);
+emit_32(1102593288);
+emit_32(1126436897);
+emit_32(1130020864);
+emit_32(1104446017);
+emit_32(1126436897);
+emit_32(1130276848);
+emit_32(1104044255);
+emit_32(1126436897);
+emit_32(1130532897);
+emit_32(1102976752);
+emit_32(1126436897);
+emit_32(1130788880);
+emit_32(1102244531);
+emit_32(1126436897);
+emit_32(1131044864);
+emit_32(1099010199);
+emit_32(1126436897);
+emit_32(1131300848);
+emit_32(1097715417);
+emit_32(1126436897);
+emit_32(1131556897);
+emit_32(1096758067);
+emit_32(1126436897);
+emit_32(1131812880);
+emit_32(1097016856);
+emit_32(1126436897);
+emit_32(1132068864);
+emit_32(1096071355);
+emit_32(1126436897);
+emit_32(1081737300);
+emit_32(1099236901);
+emit_32(1126180848);
+emit_32(1090125845);
+emit_32(1099655702);
+emit_32(1126180848);
+emit_32(1094418484);
+emit_32(1099975256);
+emit_32(1126180848);
+emit_32(1098514432);
+emit_32(1100023700);
+emit_32(1126180848);
+emit_32(1100759066);
+emit_32(1100282436);
+emit_32(1126180848);
+emit_32(1102807040);
+emit_32(1100103077);
+emit_32(1126180848);
+emit_32(1104855066);
+emit_32(1100266183);
+emit_32(1126180848);
+emit_32(1106903040);
+emit_32(1100408947);
+emit_32(1126180848);
+emit_32(1108123661);
+emit_32(1100595488);
+emit_32(1126180848);
+emit_32(1109147648);
+emit_32(1100418698);
+emit_32(1126180848);
+emit_32(1110171661);
+emit_32(1100484601);
+emit_32(1126180848);
+emit_32(1111195648);
+emit_32(1100664327);
+emit_32(1126180848);
+emit_32(1112219661);
+emit_32(1099877791);
+emit_32(1126180848);
+emit_32(1113243648);
+emit_32(1100235250);
+emit_32(1126180848);
+emit_32(1114267661);
+emit_32(1100072773);
+emit_32(1126180848);
+emit_32(1115291648);
+emit_32(1099973001);
+emit_32(1126180848);
+emit_32(1116000263);
+emit_32(1100257165);
+emit_32(1126180848);
+emit_32(1116512256);
+emit_32(1100157288);
+emit_32(1126180848);
+emit_32(1117024263);
+emit_32(1100000369);
+emit_32(1126180848);
+emit_32(1117536256);
+emit_32(1100933077);
+emit_32(1126180848);
+emit_32(1118048263);
+emit_32(1101502192);
+emit_32(1126180848);
+emit_32(1118560256);
+emit_32(1101329701);
+emit_32(1126180848);
+emit_32(1119072263);
+emit_32(1101273078);
+emit_32(1126180848);
+emit_32(1119584256);
+emit_32(1101224057);
+emit_32(1126180848);
+emit_32(1120096263);
+emit_32(1100934231);
+emit_32(1126180848);
+emit_32(1120608322);
+emit_32(1101108137);
+emit_32(1126180848);
+emit_32(1121120289);
+emit_32(1102075344);
+emit_32(1126180848);
+emit_32(1121632256);
+emit_32(1102823975);
+emit_32(1126180848);
+emit_32(1122144223);
+emit_32(1103440694);
+emit_32(1126180848);
+emit_32(1122656322);
+emit_32(1104266238);
+emit_32(1126180848);
+emit_32(1123168289);
+emit_32(1105264588);
+emit_32(1126180848);
+emit_32(1123680256);
+emit_32(1106148170);
+emit_32(1126180848);
+emit_32(1124132848);
+emit_32(1107157267);
+emit_32(1126180848);
+emit_32(1124388897);
+emit_32(1107410970);
+emit_32(1126180848);
+emit_32(1124644880);
+emit_32(1107631669);
+emit_32(1126180848);
+emit_32(1124900864);
+emit_32(1108727248);
+emit_32(1126180848);
+emit_32(1125156848);
+emit_32(1109083947);
+emit_32(1126180848);
+emit_32(1125412897);
+emit_32(1109383499);
+emit_32(1126180848);
+emit_32(1125668880);
+emit_32(1109832552);
+emit_32(1126180848);
+emit_32(1125924864);
+emit_32(1108779362);
+emit_32(1126180848);
+emit_32(1126180848);
+emit_32(1109779336);
+emit_32(1126180848);
+emit_32(1126436897);
+emit_32(1109875019);
+emit_32(1126180848);
+emit_32(1126692880);
+emit_32(1109584485);
+emit_32(1126180848);
+emit_32(1126948864);
+emit_32(1108220130);
+emit_32(1126180848);
+emit_32(1127204848);
+emit_32(1107865790);
+emit_32(1126180848);
+emit_32(1127460897);
+emit_32(1107810792);
+emit_32(1126180848);
+emit_32(1127716880);
+emit_32(1107637358);
+emit_32(1126180848);
+emit_32(1127972864);
+emit_32(1108765940);
+emit_32(1126180848);
+emit_32(1128228848);
+emit_32(1108423134);
+emit_32(1126180848);
+emit_32(1128484897);
+emit_32(1107554101);
+emit_32(1126180848);
+emit_32(1128740880);
+emit_32(1107893184);
+emit_32(1126180848);
+emit_32(1128996864);
+emit_32(1107705384);
+emit_32(1126180848);
+emit_32(1129252848);
+emit_32(1104640790);
+emit_32(1126180848);
+emit_32(1129508897);
+emit_32(1103289857);
+emit_32(1126180848);
+emit_32(1129764880);
+emit_32(1103910824);
+emit_32(1126180848);
+emit_32(1130020864);
+emit_32(1104153359);
+emit_32(1126180848);
+emit_32(1130276848);
+emit_32(1103150186);
+emit_32(1126180848);
+emit_32(1130532897);
+emit_32(1102522509);
+emit_32(1126180848);
+emit_32(1130788880);
+emit_32(1099531498);
+emit_32(1126180848);
+emit_32(1131044864);
+emit_32(1097916953);
+emit_32(1126180848);
+emit_32(1131300848);
+emit_32(1097069285);
+emit_32(1126180848);
+emit_32(1131556897);
+emit_32(1096586310);
+emit_32(1126180848);
+emit_32(1131812880);
+emit_32(1097348625);
+emit_32(1126180848);
+emit_32(1132068864);
+emit_32(1097196791);
+emit_32(1126180848);
+emit_32(1081737300);
+emit_32(1099397648);
+emit_32(1125924864);
+emit_32(1090125845);
+emit_32(1100083993);
+emit_32(1125924864);
+emit_32(1094418484);
+emit_32(1100159071);
+emit_32(1125924864);
+emit_32(1098514432);
+emit_32(1100011536);
+emit_32(1125924864);
+emit_32(1100759066);
+emit_32(1100346556);
+emit_32(1125924864);
+emit_32(1102807040);
+emit_32(1100440404);
+emit_32(1125924864);
+emit_32(1104855066);
+emit_32(1100194775);
+emit_32(1125924864);
+emit_32(1106903040);
+emit_32(1100304561);
+emit_32(1125924864);
+emit_32(1108123661);
+emit_32(1100451571);
+emit_32(1125924864);
+emit_32(1109147648);
+emit_32(1100478992);
+emit_32(1125924864);
+emit_32(1110171661);
+emit_32(1100408580);
+emit_32(1125924864);
+emit_32(1111195648);
+emit_32(1100317249);
+emit_32(1125924864);
+emit_32(1112219661);
+emit_32(1100401554);
+emit_32(1125924864);
+emit_32(1113243648);
+emit_32(1100711618);
+emit_32(1125924864);
+emit_32(1114267661);
+emit_32(1100343358);
+emit_32(1125924864);
+emit_32(1115291648);
+emit_32(1099679924);
+emit_32(1125924864);
+emit_32(1116000263);
+emit_32(1100265868);
+emit_32(1125924864);
+emit_32(1116512256);
+emit_32(1100336438);
+emit_32(1125924864);
+emit_32(1117024263);
+emit_32(1100743338);
+emit_32(1125924864);
+emit_32(1117536256);
+emit_32(1100911529);
+emit_32(1125924864);
+emit_32(1118048263);
+emit_32(1100933916);
+emit_32(1125924864);
+emit_32(1118560256);
+emit_32(1100950012);
+emit_32(1125924864);
+emit_32(1119072263);
+emit_32(1100711251);
+emit_32(1125924864);
+emit_32(1119584256);
+emit_32(1100374239);
+emit_32(1125924864);
+emit_32(1120096263);
+emit_32(1100424046);
+emit_32(1125924864);
+emit_32(1120608322);
+emit_32(1101327290);
+emit_32(1125924864);
+emit_32(1121120289);
+emit_32(1102568437);
+emit_32(1125924864);
+emit_32(1121632256);
+emit_32(1103744257);
+emit_32(1125924864);
+emit_32(1122144223);
+emit_32(1104560993);
+emit_32(1125924864);
+emit_32(1122656322);
+emit_32(1105101115);
+emit_32(1125924864);
+emit_32(1123168289);
+emit_32(1106075032);
+emit_32(1125924864);
+emit_32(1123680256);
+emit_32(1107013874);
+emit_32(1125924864);
+emit_32(1124132848);
+emit_32(1107516116);
+emit_32(1125924864);
+emit_32(1124388897);
+emit_32(1107763764);
+emit_32(1125924864);
+emit_32(1124644880);
+emit_32(1107925035);
+emit_32(1125924864);
+emit_32(1124900864);
+emit_32(1108124867);
+emit_32(1125924864);
+emit_32(1125156848);
+emit_32(1109418652);
+emit_32(1125924864);
+emit_32(1125412897);
+emit_32(1109666352);
+emit_32(1125924864);
+emit_32(1125668880);
+emit_32(1109926216);
+emit_32(1125924864);
+emit_32(1125924864);
+emit_32(1109962156);
+emit_32(1125924864);
+emit_32(1126180848);
+emit_32(1109898428);
+emit_32(1125924864);
+emit_32(1126436897);
+emit_32(1110252978);
+emit_32(1125924864);
+emit_32(1126692880);
+emit_32(1110074851);
+emit_32(1125924864);
+emit_32(1126948864);
+emit_32(1108526681);
+emit_32(1125924864);
+emit_32(1127204848);
+emit_32(1108040561);
+emit_32(1125924864);
+emit_32(1127460897);
+emit_32(1108008160);
+emit_32(1125924864);
+emit_32(1127716880);
+emit_32(1107835722);
+emit_32(1125924864);
+emit_32(1127972864);
+emit_32(1107758862);
+emit_32(1125924864);
+emit_32(1128228848);
+emit_32(1107617173);
+emit_32(1125924864);
+emit_32(1128484897);
+emit_32(1107323860);
+emit_32(1125924864);
+emit_32(1128740880);
+emit_32(1106591770);
+emit_32(1125924864);
+emit_32(1128996864);
+emit_32(1107721716);
+emit_32(1125924864);
+emit_32(1129252848);
+emit_32(1105209537);
+emit_32(1125924864);
+emit_32(1129508897);
+emit_32(1106514647);
+emit_32(1125924864);
+emit_32(1129764880);
+emit_32(1105924089);
+emit_32(1125924864);
+emit_32(1130020864);
+emit_32(1104857583);
+emit_32(1125924864);
+emit_32(1130276848);
+emit_32(1104080850);
+emit_32(1125924864);
+emit_32(1130532897);
+emit_32(1103165338);
+emit_32(1125924864);
+emit_32(1130788880);
+emit_32(1099955123);
+emit_32(1125924864);
+emit_32(1131044864);
+emit_32(1098976015);
+emit_32(1125924864);
+emit_32(1131300848);
+emit_32(1097678822);
+emit_32(1125924864);
+emit_32(1131556897);
+emit_32(1095863632);
+emit_32(1125924864);
+emit_32(1131812880);
+emit_32(1096143811);
+emit_32(1125924864);
+emit_32(1132068864);
+emit_32(1096399978);
+emit_32(1125924864);
+emit_32(1081737300);
+emit_32(1099796421);
+emit_32(1125668880);
+emit_32(1090125845);
+emit_32(1100536244);
+emit_32(1125668880);
+emit_32(1094418484);
+emit_32(1100815951);
+emit_32(1125668880);
+emit_32(1098514432);
+emit_32(1100932763);
+emit_32(1125668880);
+emit_32(1100759066);
+emit_32(1100556691);
+emit_32(1125668880);
+emit_32(1102807040);
+emit_32(1100739091);
+emit_32(1125668880);
+emit_32(1104855066);
+emit_32(1100685404);
+emit_32(1125668880);
+emit_32(1106903040);
+emit_32(1100296592);
+emit_32(1125668880);
+emit_32(1108123661);
+emit_32(1100158652);
+emit_32(1125668880);
+emit_32(1109147648);
+emit_32(1100060033);
+emit_32(1125668880);
+emit_32(1110171661);
+emit_32(1100191996);
+emit_32(1125668880);
+emit_32(1111195648);
+emit_32(1099855718);
+emit_32(1125668880);
+emit_32(1112219661);
+emit_32(1100233887);
+emit_32(1125668880);
+emit_32(1113243648);
+emit_32(1100904976);
+emit_32(1125668880);
+emit_32(1114267661);
+emit_32(1100654785);
+emit_32(1125668880);
+emit_32(1115291648);
+emit_32(1100035234);
+emit_32(1125668880);
+emit_32(1116000263);
+emit_32(1099851262);
+emit_32(1125668880);
+emit_32(1116512256);
+emit_32(1099917741);
+emit_32(1125668880);
+emit_32(1117024263);
+emit_32(1100254544);
+emit_32(1125668880);
+emit_32(1117536256);
+emit_32(1100744910);
+emit_32(1125668880);
+emit_32(1118048263);
+emit_32(1101045065);
+emit_32(1125668880);
+emit_32(1118560256);
+emit_32(1100752460);
+emit_32(1125668880);
+emit_32(1119072263);
+emit_32(1101140695);
+emit_32(1125668880);
+emit_32(1119584256);
+emit_32(1100593706);
+emit_32(1125668880);
+emit_32(1120096263);
+emit_32(1101066351);
+emit_32(1125668880);
+emit_32(1120608322);
+emit_32(1102014421);
+emit_32(1125668880);
+emit_32(1121120289);
+emit_32(1103061005);
+emit_32(1125668880);
+emit_32(1121632256);
+emit_32(1104070627);
+emit_32(1125668880);
+emit_32(1122144223);
+emit_32(1105156270);
+emit_32(1125668880);
+emit_32(1122656322);
+emit_32(1105870088);
+emit_32(1125668880);
+emit_32(1123168289);
+emit_32(1106367690);
+emit_32(1125668880);
+emit_32(1123680256);
+emit_32(1107164922);
+emit_32(1125668880);
+emit_32(1124132848);
+emit_32(1107602545);
+emit_32(1125668880);
+emit_32(1124388897);
+emit_32(1107941812);
+emit_32(1125668880);
+emit_32(1124644880);
+emit_32(1108344334);
+emit_32(1125668880);
+emit_32(1124900864);
+emit_32(1108480308);
+emit_32(1125668880);
+emit_32(1125156848);
+emit_32(1108327137);
+emit_32(1125668880);
+emit_32(1125412897);
+emit_32(1109716107);
+emit_32(1125668880);
+emit_32(1125668880);
+emit_32(1110107934);
+emit_32(1125668880);
+emit_32(1125924864);
+emit_32(1110315159);
+emit_32(1125668880);
+emit_32(1126180848);
+emit_32(1110535569);
+emit_32(1125668880);
+emit_32(1126436897);
+emit_32(1110503509);
+emit_32(1125668880);
+emit_32(1126692880);
+emit_32(1109463636);
+emit_32(1125668880);
+emit_32(1126948864);
+emit_32(1108400118);
+emit_32(1125668880);
+emit_32(1127204848);
+emit_32(1108447225);
+emit_32(1125668880);
+emit_32(1127460897);
+emit_32(1108142195);
+emit_32(1125668880);
+emit_32(1127716880);
+emit_32(1108004202);
+emit_32(1125668880);
+emit_32(1127972864);
+emit_32(1108024046);
+emit_32(1125668880);
+emit_32(1128228848);
+emit_32(1107844452);
+emit_32(1125668880);
+emit_32(1128484897);
+emit_32(1107348947);
+emit_32(1125668880);
+emit_32(1128740880);
+emit_32(1106593763);
+emit_32(1125668880);
+emit_32(1128996864);
+emit_32(1105593683);
+emit_32(1125668880);
+emit_32(1129252848);
+emit_32(1107573788);
+emit_32(1125668880);
+emit_32(1129508897);
+emit_32(1107189039);
+emit_32(1125668880);
+emit_32(1129764880);
+emit_32(1106191581);
+emit_32(1125668880);
+emit_32(1130020864);
+emit_32(1104988812);
+emit_32(1125668880);
+emit_32(1130276848);
+emit_32(1104221150);
+emit_32(1125668880);
+emit_32(1130532897);
+emit_32(1100814903);
+emit_32(1125668880);
+emit_32(1130788880);
+emit_32(1100302044);
+emit_32(1125668880);
+emit_32(1131044864);
+emit_32(1099639816);
+emit_32(1125668880);
+emit_32(1131300848);
+emit_32(1098467980);
+emit_32(1125668880);
+emit_32(1131556897);
+emit_32(1096188795);
+emit_32(1125668880);
+emit_32(1131812880);
+emit_32(1095551051);
+emit_32(1125668880);
+emit_32(1132068864);
+emit_32(1095331689);
+emit_32(1125668880);
+emit_32(1081737258);
+emit_32(1100171654);
+emit_32(1125412897);
+emit_32(1090125845);
+emit_32(1100384200);
+emit_32(1125412897);
+emit_32(1094418484);
+emit_32(1101392563);
+emit_32(1125412897);
+emit_32(1098514432);
+emit_32(1101939763);
+emit_32(1125412897);
+emit_32(1100759066);
+emit_32(1101350096);
+emit_32(1125412897);
+emit_32(1102807040);
+emit_32(1100931242);
+emit_32(1125412897);
+emit_32(1104855066);
+emit_32(1101054660);
+emit_32(1125412897);
+emit_32(1106903040);
+emit_32(1100365745);
+emit_32(1125412897);
+emit_32(1108123661);
+emit_32(1100020711);
+emit_32(1125412897);
+emit_32(1109147648);
+emit_32(1099837211);
+emit_32(1125412897);
+emit_32(1110171661);
+emit_32(1099961205);
+emit_32(1125412897);
+emit_32(1111195648);
+emit_32(1099795792);
+emit_32(1125412897);
+emit_32(1112219661);
+emit_32(1099519282);
+emit_32(1125412897);
+emit_32(1113243648);
+emit_32(1100138886);
+emit_32(1125412897);
+emit_32(1114267661);
+emit_32(1100250454);
+emit_32(1125412897);
+emit_32(1115291648);
+emit_32(1100025640);
+emit_32(1125412897);
+emit_32(1116000263);
+emit_32(1099647890);
+emit_32(1125412897);
+emit_32(1116512256);
+emit_32(1099582564);
+emit_32(1125412897);
+emit_32(1117024263);
+emit_32(1099791335);
+emit_32(1125412897);
+emit_32(1117536256);
+emit_32(1100303198);
+emit_32(1125412897);
+emit_32(1118048263);
+emit_32(1100818520);
+emit_32(1125412897);
+emit_32(1118560256);
+emit_32(1100729182);
+emit_32(1125412897);
+emit_32(1119072263);
+emit_32(1101156162);
+emit_32(1125412897);
+emit_32(1119584256);
+emit_32(1101134247);
+emit_32(1125412897);
+emit_32(1120096263);
+emit_32(1101623565);
+emit_32(1125412897);
+emit_32(1120608322);
+emit_32(1102682626);
+emit_32(1125412897);
+emit_32(1121120289);
+emit_32(1103567205);
+emit_32(1125412897);
+emit_32(1121632256);
+emit_32(1104435374);
+emit_32(1125412897);
+emit_32(1122144223);
+emit_32(1105541464);
+emit_32(1125412897);
+emit_32(1122656322);
+emit_32(1106370730);
+emit_32(1125412897);
+emit_32(1123168289);
+emit_32(1107136296);
+emit_32(1125412897);
+emit_32(1123680256);
+emit_32(1107622678);
+emit_32(1125412897);
+emit_32(1124132848);
+emit_32(1107924458);
+emit_32(1125412897);
+emit_32(1124388897);
+emit_32(1108157006);
+emit_32(1125412897);
+emit_32(1124644880);
+emit_32(1108530928);
+emit_32(1125412897);
+emit_32(1124900864);
+emit_32(1108656600);
+emit_32(1125412897);
+emit_32(1125156848);
+emit_32(1108481461);
+emit_32(1125412897);
+emit_32(1125412897);
+emit_32(1108539159);
+emit_32(1125412897);
+emit_32(1125668880);
+emit_32(1110441066);
+emit_32(1125412897);
+emit_32(1125924864);
+emit_32(1110692148);
+emit_32(1125412897);
+emit_32(1126180848);
+emit_32(1110653744);
+emit_32(1125412897);
+emit_32(1126436897);
+emit_32(1110727721);
+emit_32(1125412897);
+emit_32(1126692880);
+emit_32(1110202673);
+emit_32(1125412897);
+emit_32(1126948864);
+emit_32(1109971881);
+emit_32(1125412897);
+emit_32(1127204848);
+emit_32(1109534940);
+emit_32(1125412897);
+emit_32(1127460897);
+emit_32(1108342263);
+emit_32(1125412897);
+emit_32(1127716880);
+emit_32(1107927840);
+emit_32(1125412897);
+emit_32(1127972864);
+emit_32(1108111183);
+emit_32(1125412897);
+emit_32(1128228848);
+emit_32(1107908939);
+emit_32(1125412897);
+emit_32(1128484897);
+emit_32(1108258954);
+emit_32(1125412897);
+emit_32(1128740880);
+emit_32(1108072464);
+emit_32(1125412897);
+emit_32(1128996864);
+emit_32(1107928180);
+emit_32(1125412897);
+emit_32(1129252848);
+emit_32(1107296990);
+emit_32(1125412897);
+emit_32(1129508897);
+emit_32(1106977751);
+emit_32(1125412897);
+emit_32(1129764880);
+emit_32(1105908938);
+emit_32(1125412897);
+emit_32(1130020864);
+emit_32(1105000556);
+emit_32(1125412897);
+emit_32(1130276848);
+emit_32(1101880046);
+emit_32(1125412897);
+emit_32(1130532897);
+emit_32(1101191447);
+emit_32(1125412897);
+emit_32(1130788880);
+emit_32(1100805675);
+emit_32(1125412897);
+emit_32(1131044864);
+emit_32(1099759459);
+emit_32(1125412897);
+emit_32(1131300848);
+emit_32(1099177761);
+emit_32(1125412897);
+emit_32(1131556897);
+emit_32(1097755263);
+emit_32(1125412897);
+emit_32(1131812880);
+emit_32(1095551576);
+emit_32(1125412897);
+emit_32(1132068864);
+emit_32(1095000968);
+emit_32(1125412897);
+emit_32(1081737258);
+emit_32(1099891107);
+emit_32(1125156848);
+emit_32(1090125845);
+emit_32(1100647078);
+emit_32(1125156848);
+emit_32(1094418484);
+emit_32(1101487879);
+emit_32(1125156848);
+emit_32(1098514432);
+emit_32(1101979399);
+emit_32(1125156848);
+emit_32(1100759066);
+emit_32(1101681341);
+emit_32(1125156848);
+emit_32(1102807040);
+emit_32(1100993475);
+emit_32(1125156848);
+emit_32(1104855066);
+emit_32(1100813907);
+emit_32(1125156848);
+emit_32(1106903040);
+emit_32(1100711094);
+emit_32(1125156848);
+emit_32(1108123661);
+emit_32(1100302044);
+emit_32(1125156848);
+emit_32(1109147648);
+emit_32(1099535063);
+emit_32(1125156848);
+emit_32(1110171661);
+emit_32(1099325506);
+emit_32(1125156848);
+emit_32(1111195648);
+emit_32(1099122554);
+emit_32(1125156848);
+emit_32(1112219661);
+emit_32(1099190764);
+emit_32(1125156848);
+emit_32(1113243648);
+emit_32(1099332846);
+emit_32(1125156848);
+emit_32(1114267661);
+emit_32(1099594465);
+emit_32(1125156848);
+emit_32(1115291648);
+emit_32(1099712850);
+emit_32(1125156848);
+emit_32(1116000263);
+emit_32(1099353031);
+emit_32(1125156848);
+emit_32(1116512256);
+emit_32(1099544553);
+emit_32(1125156848);
+emit_32(1117024263);
+emit_32(1099237163);
+emit_32(1125156848);
+emit_32(1117536256);
+emit_32(1099846700);
+emit_32(1125156848);
+emit_32(1118048263);
+emit_32(1100273628);
+emit_32(1125156848);
+emit_32(1118560256);
+emit_32(1100368839);
+emit_32(1125156848);
+emit_32(1119072263);
+emit_32(1101256668);
+emit_32(1125156848);
+emit_32(1119584256);
+emit_32(1101557609);
+emit_32(1125156848);
+emit_32(1120096263);
+emit_32(1101502192);
+emit_32(1125156848);
+emit_32(1120608322);
+emit_32(1102635231);
+emit_32(1125156848);
+emit_32(1121120289);
+emit_32(1103741374);
+emit_32(1125156848);
+emit_32(1121632256);
+emit_32(1104695211);
+emit_32(1125156848);
+emit_32(1122144223);
+emit_32(1105984016);
+emit_32(1125156848);
+emit_32(1122656322);
+emit_32(1106774537);
+emit_32(1125156848);
+emit_32(1123168289);
+emit_32(1107580944);
+emit_32(1125156848);
+emit_32(1123680256);
+emit_32(1107993847);
+emit_32(1125156848);
+emit_32(1124132848);
+emit_32(1108308813);
+emit_32(1125156848);
+emit_32(1124388897);
+emit_32(1108572163);
+emit_32(1125156848);
+emit_32(1124644880);
+emit_32(1108751548);
+emit_32(1125156848);
+emit_32(1124900864);
+emit_32(1108775613);
+emit_32(1125156848);
+emit_32(1125156848);
+emit_32(1108840887);
+emit_32(1125156848);
+emit_32(1125412897);
+emit_32(1108640452);
+emit_32(1125156848);
+emit_32(1125668880);
+emit_32(1109400932);
+emit_32(1125156848);
+emit_32(1125924864);
+emit_32(1110700537);
+emit_32(1125156848);
+emit_32(1126180848);
+emit_32(1110726279);
+emit_32(1125156848);
+emit_32(1126436897);
+emit_32(1110647059);
+emit_32(1125156848);
+emit_32(1126692880);
+emit_32(1110057628);
+emit_32(1125156848);
+emit_32(1126948864);
+emit_32(1109862960);
+emit_32(1125156848);
+emit_32(1127204848);
+emit_32(1109806599);
+emit_32(1125156848);
+emit_32(1127460897);
+emit_32(1109740539);
+emit_32(1125156848);
+emit_32(1127716880);
+emit_32(1109309417);
+emit_32(1125156848);
+emit_32(1127972864);
+emit_32(1109254577);
+emit_32(1125156848);
+emit_32(1128228848);
+emit_32(1109010704);
+emit_32(1125156848);
+emit_32(1128484897);
+emit_32(1108707980);
+emit_32(1125156848);
+emit_32(1128740880);
+emit_32(1108196590);
+emit_32(1125156848);
+emit_32(1128996864);
+emit_32(1107884428);
+emit_32(1125156848);
+emit_32(1129252848);
+emit_32(1107202828);
+emit_32(1125156848);
+emit_32(1129508897);
+emit_32(1106564402);
+emit_32(1125156848);
+emit_32(1129764880);
+emit_32(1104622440);
+emit_32(1125156848);
+emit_32(1130020864);
+emit_32(1102215591);
+emit_32(1125156848);
+emit_32(1130276848);
+emit_32(1101762186);
+emit_32(1125156848);
+emit_32(1130532897);
+emit_32(1101353085);
+emit_32(1125156848);
+emit_32(1130788880);
+emit_32(1101174984);
+emit_32(1125156848);
+emit_32(1131044864);
+emit_32(1099976252);
+emit_32(1125156848);
+emit_32(1131300848);
+emit_32(1098682624);
+emit_32(1125156848);
+emit_32(1131556897);
+emit_32(1097157994);
+emit_32(1125156848);
+emit_32(1131812880);
+emit_32(1095208586);
+emit_32(1125156848);
+emit_32(1132068864);
+emit_32(1095289117);
+emit_32(1125156848);
+emit_32(1081737258);
+emit_32(1100260206);
+emit_32(1124900864);
+emit_32(1090125845);
+emit_32(1100861722);
+emit_32(1124900864);
+emit_32(1094418484);
+emit_32(1101453905);
+emit_32(1124900864);
+emit_32(1098514432);
+emit_32(1101891581);
+emit_32(1124900864);
+emit_32(1100759066);
+emit_32(1101491759);
+emit_32(1124900864);
+emit_32(1102807040);
+emit_32(1101032640);
+emit_32(1124900864);
+emit_32(1104855066);
+emit_32(1100567282);
+emit_32(1124900864);
+emit_32(1106903040);
+emit_32(1100372876);
+emit_32(1124900864);
+emit_32(1108123661);
+emit_32(1100112672);
+emit_32(1124900864);
+emit_32(1109147648);
+emit_32(1099604689);
+emit_32(1124900864);
+emit_32(1110171661);
+emit_32(1099198995);
+emit_32(1124900864);
+emit_32(1111195648);
+emit_32(1098995676);
+emit_32(1124900864);
+emit_32(1112219661);
+emit_32(1098921384);
+emit_32(1124900864);
+emit_32(1113243648);
+emit_32(1098994627);
+emit_32(1124900864);
+emit_32(1114267661);
+emit_32(1099148296);
+emit_32(1124900864);
+emit_32(1115291648);
+emit_32(1099448032);
+emit_32(1124900864);
+emit_32(1116000263);
+emit_32(1099762395);
+emit_32(1124900864);
+emit_32(1116512256);
+emit_32(1099304849);
+emit_32(1124900864);
+emit_32(1117024263);
+emit_32(1099411698);
+emit_32(1124900864);
+emit_32(1117536256);
+emit_32(1099612239);
+emit_32(1124900864);
+emit_32(1118048263);
+emit_32(1099837840);
+emit_32(1124900864);
+emit_32(1118560256);
+emit_32(1100521092);
+emit_32(1124900864);
+emit_32(1119072263);
+emit_32(1101042758);
+emit_32(1124900864);
+emit_32(1119584256);
+emit_32(1101829715);
+emit_32(1124900864);
+emit_32(1120096263);
+emit_32(1101787195);
+emit_32(1124900864);
+emit_32(1120608322);
+emit_32(1103231661);
+emit_32(1124900864);
+emit_32(1121120289);
+emit_32(1104133017);
+emit_32(1124900864);
+emit_32(1121632256);
+emit_32(1105136347);
+emit_32(1124900864);
+emit_32(1122144223);
+emit_32(1106058779);
+emit_32(1124900864);
+emit_32(1122656322);
+emit_32(1107306060);
+emit_32(1124900864);
+emit_32(1123168289);
+emit_32(1107824214);
+emit_32(1124900864);
+emit_32(1123680256);
+emit_32(1108124343);
+emit_32(1124900864);
+emit_32(1124132848);
+emit_32(1108411050);
+emit_32(1124900864);
+emit_32(1124388897);
+emit_32(1108748167);
+emit_32(1124900864);
+emit_32(1124644880);
+emit_32(1108912295);
+emit_32(1124900864);
+emit_32(1124900864);
+emit_32(1108843273);
+emit_32(1124900864);
+emit_32(1125156848);
+emit_32(1109145892);
+emit_32(1124900864);
+emit_32(1125412897);
+emit_32(1108908258);
+emit_32(1124900864);
+emit_32(1125668880);
+emit_32(1109287685);
+emit_32(1124900864);
+emit_32(1125924864);
+emit_32(1109482773);
+emit_32(1124900864);
+emit_32(1126180848);
+emit_32(1109256516);
+emit_32(1124900864);
+emit_32(1126436897);
+emit_32(1110387222);
+emit_32(1124900864);
+emit_32(1126692880);
+emit_32(1110113439);
+emit_32(1124900864);
+emit_32(1126948864);
+emit_32(1109770738);
+emit_32(1124900864);
+emit_32(1127204848);
+emit_32(1109713748);
+emit_32(1124900864);
+emit_32(1127460897);
+emit_32(1109642471);
+emit_32(1124900864);
+emit_32(1127716880);
+emit_32(1109465262);
+emit_32(1124900864);
+emit_32(1127972864);
+emit_32(1109524768);
+emit_32(1124900864);
+emit_32(1128228848);
+emit_32(1109357599);
+emit_32(1124900864);
+emit_32(1128484897);
+emit_32(1108841438);
+emit_32(1124900864);
+emit_32(1128740880);
+emit_32(1108264013);
+emit_32(1124900864);
+emit_32(1128996864);
+emit_32(1107582543);
+emit_32(1124900864);
+emit_32(1129252848);
+emit_32(1106640739);
+emit_32(1124900864);
+emit_32(1129508897);
+emit_32(1103288074);
+emit_32(1124900864);
+emit_32(1129764880);
+emit_32(1102897585);
+emit_32(1124900864);
+emit_32(1130020864);
+emit_32(1102698145);
+emit_32(1124900864);
+emit_32(1130276848);
+emit_32(1101950353);
+emit_32(1124900864);
+emit_32(1130532897);
+emit_32(1101571713);
+emit_32(1124900864);
+emit_32(1130788880);
+emit_32(1101236693);
+emit_32(1124900864);
+emit_32(1131044864);
+emit_32(1100675547);
+emit_32(1124900864);
+emit_32(1131300848);
+emit_32(1099383387);
+emit_32(1124900864);
+emit_32(1131556897);
+emit_32(1098585840);
+emit_32(1124900864);
+emit_32(1131812880);
+emit_32(1096815319);
+emit_32(1124900864);
+emit_32(1132068864);
+emit_32(1095522740);
+emit_32(1124900864);
+emit_32(1081737258);
+emit_32(1100859258);
+emit_32(1124644880);
+emit_32(1090125845);
+emit_32(1101195903);
+emit_32(1124644880);
+emit_32(1094418484);
+emit_32(1101106407);
+emit_32(1124644880);
+emit_32(1098514432);
+emit_32(1101011196);
+emit_32(1124644880);
+emit_32(1100759066);
+emit_32(1101487355);
+emit_32(1124644880);
+emit_32(1102807040);
+emit_32(1101120563);
+emit_32(1124644880);
+emit_32(1104855066);
+emit_32(1100659766);
+emit_32(1124644880);
+emit_32(1106903040);
+emit_32(1100064175);
+emit_32(1124644880);
+emit_32(1108123661);
+emit_32(1099751175);
+emit_32(1124644880);
+emit_32(1109147648);
+emit_32(1099500618);
+emit_32(1124644880);
+emit_32(1110171661);
+emit_32(1099345376);
+emit_32(1124644880);
+emit_32(1111195648);
+emit_32(1099089157);
+emit_32(1124644880);
+emit_32(1112219661);
+emit_32(1098329673);
+emit_32(1124644880);
+emit_32(1113243648);
+emit_32(1098686084);
+emit_32(1124644880);
+emit_32(1114267661);
+emit_32(1099133616);
+emit_32(1124644880);
+emit_32(1115291648);
+emit_32(1099084752);
+emit_32(1124644880);
+emit_32(1116000263);
+emit_32(1099672322);
+emit_32(1124644880);
+emit_32(1116512256);
+emit_32(1099700004);
+emit_32(1124644880);
+emit_32(1117024263);
+emit_32(1099767847);
+emit_32(1124644880);
+emit_32(1117536256);
+emit_32(1099478440);
+emit_32(1124644880);
+emit_32(1118048263);
+emit_32(1099565892);
+emit_32(1124644880);
+emit_32(1118560256);
+emit_32(1100285634);
+emit_32(1124644880);
+emit_32(1119072263);
+emit_32(1100840908);
+emit_32(1124644880);
+emit_32(1119584256);
+emit_32(1101579577);
+emit_32(1124644880);
+emit_32(1120096263);
+emit_32(1101821746);
+emit_32(1124644880);
+emit_32(1120608322);
+emit_32(1103580575);
+emit_32(1124644880);
+emit_32(1121120289);
+emit_32(1104976858);
+emit_32(1124644880);
+emit_32(1121632256);
+emit_32(1105588440);
+emit_32(1124644880);
+emit_32(1122144223);
+emit_32(1106822195);
+emit_32(1124644880);
+emit_32(1122656322);
+emit_32(1107756686);
+emit_32(1124644880);
+emit_32(1123168289);
+emit_32(1108002131);
+emit_32(1124644880);
+emit_32(1123680256);
+emit_32(1108095874);
+emit_32(1124644880);
+emit_32(1124132848);
+emit_32(1108362055);
+emit_32(1124644880);
+emit_32(1124388897);
+emit_32(1108659431);
+emit_32(1124644880);
+emit_32(1124644880);
+emit_32(1109016576);
+emit_32(1124644880);
+emit_32(1124900864);
+emit_32(1109100043);
+emit_32(1124644880);
+emit_32(1125156848);
+emit_32(1109226842);
+emit_32(1124644880);
+emit_32(1125412897);
+emit_32(1109110030);
+emit_32(1124644880);
+emit_32(1125668880);
+emit_32(1109268916);
+emit_32(1124644880);
+emit_32(1125924864);
+emit_32(1109272612);
+emit_32(1124644880);
+emit_32(1126180848);
+emit_32(1109315053);
+emit_32(1124644880);
+emit_32(1126436897);
+emit_32(1108975105);
+emit_32(1124644880);
+emit_32(1126692880);
+emit_32(1108796559);
+emit_32(1124644880);
+emit_32(1126948864);
+emit_32(1108827649);
+emit_32(1124644880);
+emit_32(1127204848);
+emit_32(1109670651);
+emit_32(1124644880);
+emit_32(1127460897);
+emit_32(1109571771);
+emit_32(1124644880);
+emit_32(1127716880);
+emit_32(1109561993);
+emit_32(1124644880);
+emit_32(1127972864);
+emit_32(1109715478);
+emit_32(1124644880);
+emit_32(1128228848);
+emit_32(1109451342);
+emit_32(1124644880);
+emit_32(1128484897);
+emit_32(1108848070);
+emit_32(1124644880);
+emit_32(1128740880);
+emit_32(1106750525);
+emit_32(1124644880);
+emit_32(1128996864);
+emit_32(1105305377);
+emit_32(1124644880);
+emit_32(1129252848);
+emit_32(1103748819);
+emit_32(1124644880);
+emit_32(1129508897);
+emit_32(1103181906);
+emit_32(1124644880);
+emit_32(1129764880);
+emit_32(1102910272);
+emit_32(1124644880);
+emit_32(1130020864);
+emit_32(1102380846);
+emit_32(1124644880);
+emit_32(1130276848);
+emit_32(1101721764);
+emit_32(1124644880);
+emit_32(1130532897);
+emit_32(1101539941);
+emit_32(1124644880);
+emit_32(1130788880);
+emit_32(1101138913);
+emit_32(1124644880);
+emit_32(1131044864);
+emit_32(1100148166);
+emit_32(1124644880);
+emit_32(1131300848);
+emit_32(1099305268);
+emit_32(1124644880);
+emit_32(1131556897);
+emit_32(1099050412);
+emit_32(1124644880);
+emit_32(1131812880);
+emit_32(1097572601);
+emit_32(1124644880);
+emit_32(1132068864);
+emit_32(1096388234);
+emit_32(1124644880);
+emit_32(1081737258);
+emit_32(1100982465);
+emit_32(1124388897);
+emit_32(1090125824);
+emit_32(1101595148);
+emit_32(1124388897);
+emit_32(1094418484);
+emit_32(1101527882);
+emit_32(1124388897);
+emit_32(1098514432);
+emit_32(1101659007);
+emit_32(1124388897);
+emit_32(1100759066);
+emit_32(1101842665);
+emit_32(1124388897);
+emit_32(1102807040);
+emit_32(1101032902);
+emit_32(1124388897);
+emit_32(1104855066);
+emit_32(1100272108);
+emit_32(1124388897);
+emit_32(1106903040);
+emit_32(1100043256);
+emit_32(1124388897);
+emit_32(1108123661);
+emit_32(1099540464);
+emit_32(1124388897);
+emit_32(1109147648);
+emit_32(1099626080);
+emit_32(1124388897);
+emit_32(1110171661);
+emit_32(1099081554);
+emit_32(1124388897);
+emit_32(1111195648);
+emit_32(1098359138);
+emit_32(1124388897);
+emit_32(1112219661);
+emit_32(1097625344);
+emit_32(1124388897);
+emit_32(1113243648);
+emit_32(1097653341);
+emit_32(1124388897);
+emit_32(1114267661);
+emit_32(1098623589);
+emit_32(1124388897);
+emit_32(1115291648);
+emit_32(1099027815);
+emit_32(1124388897);
+emit_32(1116000263);
+emit_32(1099509950);
+emit_32(1124388897);
+emit_32(1116512256);
+emit_32(1099695496);
+emit_32(1124388897);
+emit_32(1117024263);
+emit_32(1099418095);
+emit_32(1124388897);
+emit_32(1117536256);
+emit_32(1099118097);
+emit_32(1124388897);
+emit_32(1118048263);
+emit_32(1099305111);
+emit_32(1124388897);
+emit_32(1118560256);
+emit_32(1100055524);
+emit_32(1124388897);
+emit_32(1119072263);
+emit_32(1101014132);
+emit_32(1124388897);
+emit_32(1119584256);
+emit_32(1101309569);
+emit_32(1124388897);
+emit_32(1120096263);
+emit_32(1102362339);
+emit_32(1124388897);
+emit_32(1120608322);
+emit_32(1103979663);
+emit_32(1124388897);
+emit_32(1121120289);
+emit_32(1105246709);
+emit_32(1124388897);
+emit_32(1121632256);
+emit_32(1105782322);
+emit_32(1124388897);
+emit_32(1122144223);
+emit_32(1107021110);
+emit_32(1124388897);
+emit_32(1122656322);
+emit_32(1107619427);
+emit_32(1124388897);
+emit_32(1123168289);
+emit_32(1107918769);
+emit_32(1124388897);
+emit_32(1123680256);
+emit_32(1108052515);
+emit_32(1124388897);
+emit_32(1124132848);
+emit_32(1108443687);
+emit_32(1124388897);
+emit_32(1124388897);
+emit_32(1108689656);
+emit_32(1124388897);
+emit_32(1124644880);
+emit_32(1109031544);
+emit_32(1124388897);
+emit_32(1124900864);
+emit_32(1109169904);
+emit_32(1124388897);
+emit_32(1125156848);
+emit_32(1109272691);
+emit_32(1124388897);
+emit_32(1125412897);
+emit_32(1109111367);
+emit_32(1124388897);
+emit_32(1125668880);
+emit_32(1109309548);
+emit_32(1124388897);
+emit_32(1125924864);
+emit_32(1109332460);
+emit_32(1124388897);
+emit_32(1126180848);
+emit_32(1109248285);
+emit_32(1124388897);
+emit_32(1126436897);
+emit_32(1108946898);
+emit_32(1124388897);
+emit_32(1126692880);
+emit_32(1108703419);
+emit_32(1124388897);
+emit_32(1126948864);
+emit_32(1108479758);
+emit_32(1124388897);
+emit_32(1127204848);
+emit_32(1108324306);
+emit_32(1124388897);
+emit_32(1127460897);
+emit_32(1108262886);
+emit_32(1124388897);
+emit_32(1127716880);
+emit_32(1108353955);
+emit_32(1124388897);
+emit_32(1127972864);
+emit_32(1108388610);
+emit_32(1124388897);
+emit_32(1128228848);
+emit_32(1108016156);
+emit_32(1124388897);
+emit_32(1128484897);
+emit_32(1107451209);
+emit_32(1124388897);
+emit_32(1128740880);
+emit_32(1106693797);
+emit_32(1124388897);
+emit_32(1128996864);
+emit_32(1105140908);
+emit_32(1124388897);
+emit_32(1129252848);
+emit_32(1103671801);
+emit_32(1124388897);
+emit_32(1129508897);
+emit_32(1102951481);
+emit_32(1124388897);
+emit_32(1129764880);
+emit_32(1102824813);
+emit_32(1124388897);
+emit_32(1130020864);
+emit_32(1102191421);
+emit_32(1124388897);
+emit_32(1130276848);
+emit_32(1101602960);
+emit_32(1124388897);
+emit_32(1130532897);
+emit_32(1101147668);
+emit_32(1124388897);
+emit_32(1130788880);
+emit_32(1100725774);
+emit_32(1124388897);
+emit_32(1131044864);
+emit_32(1100192730);
+emit_32(1124388897);
+emit_32(1131300848);
+emit_32(1099972267);
+emit_32(1124388897);
+emit_32(1131556897);
+emit_32(1099729574);
+emit_32(1124388897);
+emit_32(1131812880);
+emit_32(1099118936);
+emit_32(1124388897);
+emit_32(1132068864);
+emit_32(1097577634);
+emit_32(1124388897);
+emit_32(1081737258);
+emit_32(1101050728);
+emit_32(1124132848);
+emit_32(1090125866);
+emit_32(1101569144);
+emit_32(1124132848);
+emit_32(1094418484);
+emit_32(1101742788);
+emit_32(1124132848);
+emit_32(1098514432);
+emit_32(1102383625);
+emit_32(1124132848);
+emit_32(1100759066);
+emit_32(1102114927);
+emit_32(1124132848);
+emit_32(1102807040);
+emit_32(1101213309);
+emit_32(1124132848);
+emit_32(1104855066);
+emit_32(1100341209);
+emit_32(1124132848);
+emit_32(1106903040);
+emit_32(1099911345);
+emit_32(1124132848);
+emit_32(1108123661);
+emit_32(1099586129);
+emit_32(1124132848);
+emit_32(1109147648);
+emit_32(1099190030);
+emit_32(1124132848);
+emit_32(1110171661);
+emit_32(1098581751);
+emit_32(1124132848);
+emit_32(1111195648);
+emit_32(1097483053);
+emit_32(1124132848);
+emit_32(1112219661);
+emit_32(1097178022);
+emit_32(1124132848);
+emit_32(1113243648);
+emit_32(1096978688);
+emit_32(1124132848);
+emit_32(1114267661);
+emit_32(1097352610);
+emit_32(1124132848);
+emit_32(1115291648);
+emit_32(1097969906);
+emit_32(1124132848);
+emit_32(1116000263);
+emit_32(1098943509);
+emit_32(1124132848);
+emit_32(1116512256);
+emit_32(1099235380);
+emit_32(1124132848);
+emit_32(1117024263);
+emit_32(1098875037);
+emit_32(1124132848);
+emit_32(1117536256);
+emit_32(1098919916);
+emit_32(1124132848);
+emit_32(1118048263);
+emit_32(1099015127);
+emit_32(1124132848);
+emit_32(1118560256);
+emit_32(1100384410);
+emit_32(1124132848);
+emit_32(1119072263);
+emit_32(1100817786);
+emit_32(1124132848);
+emit_32(1119584256);
+emit_32(1101157682);
+emit_32(1124132848);
+emit_32(1120096263);
+emit_32(1102698670);
+emit_32(1124132848);
+emit_32(1120608322);
+emit_32(1104088662);
+emit_32(1124132848);
+emit_32(1121120289);
+emit_32(1104975548);
+emit_32(1124132848);
+emit_32(1121632256);
+emit_32(1105705671);
+emit_32(1124132848);
+emit_32(1122144223);
+emit_32(1106546629);
+emit_32(1124132848);
+emit_32(1122656322);
+emit_32(1107224271);
+emit_32(1124132848);
+emit_32(1123168289);
+emit_32(1107432990);
+emit_32(1124132848);
+emit_32(1123680256);
+emit_32(1107870823);
+emit_32(1124132848);
+emit_32(1124132848);
+emit_32(1108611197);
+emit_32(1124132848);
+emit_32(1124388897);
+emit_32(1109002394);
+emit_32(1124132848);
+emit_32(1124644880);
+emit_32(1109174020);
+emit_32(1124132848);
+emit_32(1124900864);
+emit_32(1109145131);
+emit_32(1124132848);
+emit_32(1125156848);
+emit_32(1109111053);
+emit_32(1124132848);
+emit_32(1125412897);
+emit_32(1108982156);
+emit_32(1124132848);
+emit_32(1125668880);
+emit_32(1109159733);
+emit_32(1124132848);
+emit_32(1125924864);
+emit_32(1109315342);
+emit_32(1124132848);
+emit_32(1126180848);
+emit_32(1109210091);
+emit_32(1124132848);
+emit_32(1126436897);
+emit_32(1108929885);
+emit_32(1124132848);
+emit_32(1126692880);
+emit_32(1108541256);
+emit_32(1124132848);
+emit_32(1126948864);
+emit_32(1108339091);
+emit_32(1124132848);
+emit_32(1127204848);
+emit_32(1108284853);
+emit_32(1124132848);
+emit_32(1127460897);
+emit_32(1108246449);
+emit_32(1124132848);
+emit_32(1127716880);
+emit_32(1108208727);
+emit_32(1124132848);
+emit_32(1127972864);
+emit_32(1108242648);
+emit_32(1124132848);
+emit_32(1128228848);
+emit_32(1107828539);
+emit_32(1124132848);
+emit_32(1128484897);
+emit_32(1107302207);
+emit_32(1124132848);
+emit_32(1128740880);
+emit_32(1106125311);
+emit_32(1124132848);
+emit_32(1128996864);
+emit_32(1104882853);
+emit_32(1124132848);
+emit_32(1129252848);
+emit_32(1103712328);
+emit_32(1124132848);
+emit_32(1129508897);
+emit_32(1103248228);
+emit_32(1124132848);
+emit_32(1129764880);
+emit_32(1102281808);
+emit_32(1124132848);
+emit_32(1130020864);
+emit_32(1101935621);
+emit_32(1124132848);
+emit_32(1130276848);
+emit_32(1100815060);
+emit_32(1124132848);
+emit_32(1130532897);
+emit_32(1100889457);
+emit_32(1124132848);
+emit_32(1130788880);
+emit_32(1101023098);
+emit_32(1124132848);
+emit_32(1131044864);
+emit_32(1100560938);
+emit_32(1124132848);
+emit_32(1131300848);
+emit_32(1099884397);
+emit_32(1124132848);
+emit_32(1131556897);
+emit_32(1099776918);
+emit_32(1124132848);
+emit_32(1131812880);
+emit_32(1099406246);
+emit_32(1124132848);
+emit_32(1132068864);
+emit_32(1099062890);
+emit_32(1124132848);
+emit_start(Landscape03Vtx)
+emit_32(1081737216);
+emit_32(1112116167);
+emit_32(3054751226);
+emit_32(1081737216);
+emit_32(1112701298);
+emit_32(1081737216);
+emit_32(1090125824);
+emit_32(1112117215);
+emit_32(3054752017);
+emit_32(1090125824);
+emit_32(1112503694);
+emit_32(1081737216);
+emit_32(1094418484);
+emit_32(1111966902);
+emit_32(3054641802);
+emit_32(1094418484);
+emit_32(1112328084);
+emit_32(1081737216);
+emit_32(1098514432);
+emit_32(1112170824);
+emit_32(3054791336);
+emit_32(1098514432);
+emit_32(1112069951);
+emit_32(1081737216);
+emit_32(1100759066);
+emit_32(1112121016);
+emit_32(3054754788);
+emit_32(1100759066);
+emit_32(1112173655);
+emit_32(1081737216);
+emit_32(1102807040);
+emit_32(1112268577);
+emit_32(3054863024);
+emit_32(1102807040);
+emit_32(1112198559);
+emit_32(1081737216);
+emit_32(1104855066);
+emit_32(1112660640);
+emit_32(3055150524);
+emit_32(1104855066);
+emit_32(1112333694);
+emit_32(1081737216);
+emit_32(1106903040);
+emit_32(1112840733);
+emit_32(3055282597);
+emit_32(1106903040);
+emit_32(1112388744);
+emit_32(1081737216);
+emit_32(1108123661);
+emit_32(1112817271);
+emit_32(3055265401);
+emit_32(1108123661);
+emit_32(1112590726);
+emit_32(1081737216);
+emit_32(1109147648);
+emit_32(1112978804);
+emit_32(3055383885);
+emit_32(1109147648);
+emit_32(1113057735);
+emit_32(1081737216);
+emit_32(1110171661);
+emit_32(1113143692);
+emit_32(3055504787);
+emit_32(1110171661);
+emit_32(1113035296);
+emit_32(1081737216);
+emit_32(1111195648);
+emit_32(1113241551);
+emit_32(3055576563);
+emit_32(1111195648);
+emit_32(1112886896);
+emit_32(1081737216);
+emit_32(1112219661);
+emit_32(1113409140);
+emit_32(3055699444);
+emit_32(1112219661);
+emit_32(1112955971);
+emit_32(1081737216);
+emit_32(1113243648);
+emit_32(1113827049);
+emit_32(3056005944);
+emit_32(1113243648);
+emit_32(1113474440);
+emit_32(1081737216);
+emit_32(1114267661);
+emit_32(1113969787);
+emit_32(3056110618);
+emit_32(1114267661);
+emit_32(1113373252);
+emit_32(1081737216);
+emit_32(1115291648);
+emit_32(1113729217);
+emit_32(3055934168);
+emit_32(1115291648);
+emit_32(1112981923);
+emit_32(1081737216);
+emit_32(1116000263);
+emit_32(1113555888);
+emit_32(3055807065);
+emit_32(1116000263);
+emit_32(1112815462);
+emit_32(1081737216);
+emit_32(1116512256);
+emit_32(1112971595);
+emit_32(3055378563);
+emit_32(1116512256);
+emit_32(1112451711);
+emit_32(1081737216);
+emit_32(1117024263);
+emit_32(1112445996);
+emit_32(3054993118);
+emit_32(1117024263);
+emit_32(1112394144);
+emit_32(1081737216);
+emit_32(1117536256);
+emit_32(1112490508);
+emit_32(3055025752);
+emit_32(1117536256);
+emit_32(1112528414);
+emit_32(1081737216);
+emit_32(1118048263);
+emit_32(1112364810);
+emit_32(3054933569);
+emit_32(1118048263);
+emit_32(1112287950);
+emit_32(1081737216);
+emit_32(1118560256);
+emit_32(1112062978);
+emit_32(3054712259);
+emit_32(1118560256);
+emit_32(1111949653);
+emit_32(1081737216);
+emit_32(1119072263);
+emit_32(1111766755);
+emit_32(3054494995);
+emit_32(1119072263);
+emit_32(1111682685);
+emit_32(1081737216);
+emit_32(1119584256);
+emit_32(1111332435);
+emit_32(3054176489);
+emit_32(1119584256);
+emit_32(1111194678);
+emit_32(1081737216);
+emit_32(1120096263);
+emit_32(1110914210);
+emit_32(3053869769);
+emit_32(1120096263);
+emit_32(1111068639);
+emit_32(1081737216);
+emit_32(1120608322);
+emit_32(1110765653);
+emit_32(3053760829);
+emit_32(1120608322);
+emit_32(1110815303);
+emit_32(1081737216);
+emit_32(1121120289);
+emit_32(1110612404);
+emit_32(3053648459);
+emit_32(1121120289);
+emit_32(1110882674);
+emit_32(1081737216);
+emit_32(1121632256);
+emit_32(1110535543);
+emit_32(3053592076);
+emit_32(1121632256);
+emit_32(1110789010);
+emit_32(1081737216);
+emit_32(1122144223);
+emit_32(1110472052);
+emit_32(3053545501);
+emit_32(1122144223);
+emit_32(1110340062);
+emit_32(1081737216);
+emit_32(1122656322);
+emit_32(1110285668);
+emit_32(3053364308);
+emit_32(1122656322);
+emit_32(1109951539);
+emit_32(1081737216);
+emit_32(1123168289);
+emit_32(1109697652);
+emit_32(3052501939);
+emit_32(1123168289);
+emit_32(1109517848);
+emit_32(1081737216);
+emit_32(1123680256);
+emit_32(1109444526);
+emit_32(3052130656);
+emit_32(1123680256);
+emit_32(1109219108);
+emit_32(1081737216);
+emit_32(1124132848);
+emit_32(1109279611);
+emit_32(3051888763);
+emit_32(1124132848);
+emit_32(1108888571);
+emit_32(1081737216);
+emit_32(1124388897);
+emit_32(1108937068);
+emit_32(3051386330);
+emit_32(1124388897);
+emit_32(1108548203);
+emit_32(1081737216);
+emit_32(1124644880);
+emit_32(1108458524);
+emit_32(3050684490);
+emit_32(1124644880);
+emit_32(1108062057);
+emit_32(1081737216);
+emit_32(1124900864);
+emit_32(1107860049);
+emit_32(3049806640);
+emit_32(1124900864);
+emit_32(1107391755);
+emit_32(1081737216);
+emit_32(1125156848);
+emit_32(1107061952);
+emit_32(3048807931);
+emit_32(1125156848);
+emit_32(1107147201);
+emit_32(1081737216);
+emit_32(1125412897);
+emit_32(1106198187);
+emit_32(3048174525);
+emit_32(1125412897);
+emit_32(1106562515);
+emit_32(1081737216);
+emit_32(1125668880);
+emit_32(1106521306);
+emit_32(3048411491);
+emit_32(1125668880);
+emit_32(1107088323);
+emit_32(1081737216);
+emit_32(1125924864);
+emit_32(1106837714);
+emit_32(3048643444);
+emit_32(1125924864);
+emit_32(1107466728);
+emit_32(1081737216);
+emit_32(1126180848);
+emit_32(1107242569);
+emit_32(3048940401);
+emit_32(1126180848);
+emit_32(1107640477);
+emit_32(1081737216);
+emit_32(1126436897);
+emit_32(1107053196);
+emit_32(3048801510);
+emit_32(1126436897);
+emit_32(1107446858);
+emit_32(1081737216);
+emit_32(1126692880);
+emit_32(1106540495);
+emit_32(3048425477);
+emit_32(1126692880);
+emit_32(1107035003);
+emit_32(1081737216);
+emit_32(1126948864);
+emit_32(1106275362);
+emit_32(3048231084);
+emit_32(1126948864);
+emit_32(1106606398);
+emit_32(1081737216);
+emit_32(1127204848);
+emit_32(1105871923);
+emit_32(3047935271);
+emit_32(1127204848);
+emit_32(1106181305);
+emit_32(1081737216);
+emit_32(1127460897);
+emit_32(1105372958);
+emit_32(3047569266);
+emit_32(1127460897);
+emit_32(1105541831);
+emit_32(1081737216);
+emit_32(1127716880);
+emit_32(1104684096);
+emit_32(3047064106);
+emit_32(1127716880);
+emit_32(1104783501);
+emit_32(1081737216);
+emit_32(1127972864);
+emit_32(1103501774);
+emit_32(3046197075);
+emit_32(1127972864);
+emit_32(1103855197);
+emit_32(1081737216);
+emit_32(1128228848);
+emit_32(1102439829);
+emit_32(3045418269);
+emit_32(1128228848);
+emit_32(1103186310);
+emit_32(1081737216);
+emit_32(1128484897);
+emit_32(1101869718);
+emit_32(3044935642);
+emit_32(1128484897);
+emit_32(1103087482);
+emit_32(1081737216);
+emit_32(1128740880);
+emit_32(1101702785);
+emit_32(3044690829);
+emit_32(1128740880);
+emit_32(1102981471);
+emit_32(1081737216);
+emit_32(1128996864);
+emit_32(1101484419);
+emit_32(3044370528);
+emit_32(1128996864);
+emit_32(1102264716);
+emit_32(1081737216);
+emit_32(1129252848);
+emit_32(1100736102);
+emit_32(3043272969);
+emit_32(1129252848);
+emit_32(1102136581);
+emit_32(1081737216);
+emit_32(1129508897);
+emit_32(1100482452);
+emit_32(3042900948);
+emit_32(1129508897);
+emit_32(1101851735);
+emit_32(1081737216);
+emit_32(1129764880);
+emit_32(1100170134);
+emit_32(3042442865);
+emit_32(1129764880);
+emit_32(1101959109);
+emit_32(1081737216);
+emit_32(1130020864);
+emit_32(1100368052);
+emit_32(3042733136);
+emit_32(1130020864);
+emit_32(1101538001);
+emit_32(1081737216);
+emit_32(1130276848);
+emit_32(1100034710);
+emit_32(3042244249);
+emit_32(1130276848);
+emit_32(1100676386);
+emit_32(1081737216);
+emit_32(1130532897);
+emit_32(1099793118);
+emit_32(3041889854);
+emit_32(1130532897);
+emit_32(1100067740);
+emit_32(1081737216);
+emit_32(1130788880);
+emit_32(1099349570);
+emit_32(3041239348);
+emit_32(1130788880);
+emit_32(1099550582);
+emit_32(1081737216);
+emit_32(1131044864);
+emit_32(1099102264);
+emit_32(3040876615);
+emit_32(1131044864);
+emit_32(1099061684);
+emit_32(1081737216);
+emit_32(1131300848);
+emit_32(1097152227);
+emit_32(3039303785);
+emit_32(1131300848);
+emit_32(1097284243);
+emit_32(1081737216);
+emit_32(1131556897);
+emit_32(1095174088);
+emit_32(3037853098);
+emit_32(1131556897);
+emit_32(1096432799);
+emit_32(1081737216);
+emit_32(1131812880);
+emit_32(1095119772);
+emit_32(3037813287);
+emit_32(1131812880);
+emit_32(1096013998);
+emit_32(1081737216);
+emit_32(1132068864);
+emit_32(1094633233);
+emit_32(3037456465);
+emit_32(1132068864);
+emit_32(1095458043);
+emit_32(1081737216);
+emit_32(1081737216);
+emit_32(1111714929);
+emit_32(3229220864);
+emit_32(1090125824);
+emit_32(1111846420);
+emit_32(3229220864);
+emit_32(1094418484);
+emit_32(1112005149);
+emit_32(3229220864);
+emit_32(1098514432);
+emit_32(1112044365);
+emit_32(3229220864);
+emit_32(1100759066);
+emit_32(1112440753);
+emit_32(3229220864);
+emit_32(1102807040);
+emit_32(1112584120);
+emit_32(3229220864);
+emit_32(1104855066);
+emit_32(1112766651);
+emit_32(3229220864);
+emit_32(1106903040);
+emit_32(1113057657);
+emit_32(3229220864);
+emit_32(1108123661);
+emit_32(1113035846);
+emit_32(3229220864);
+emit_32(1109147648);
+emit_32(1113286037);
+emit_32(3229220864);
+emit_32(1110171661);
+emit_32(1113632643);
+emit_32(3229220864);
+emit_32(1111195648);
+emit_32(1113716556);
+emit_32(3229220864);
+emit_32(1112219661);
+emit_32(1113737894);
+emit_32(3229220864);
+emit_32(1113243648);
+emit_32(1114105892);
+emit_32(3229220864);
+emit_32(1114267661);
+emit_32(1114272563);
+emit_32(3229220864);
+emit_32(1115291648);
+emit_32(1114112603);
+emit_32(3229220864);
+emit_32(1116000263);
+emit_32(1114000379);
+emit_32(3229220864);
+emit_32(1116512256);
+emit_32(1113455303);
+emit_32(3229220864);
+emit_32(1117024263);
+emit_32(1112990522);
+emit_32(3229220864);
+emit_32(1117536256);
+emit_32(1112862360);
+emit_32(3229220864);
+emit_32(1118048263);
+emit_32(1112683289);
+emit_32(3229220864);
+emit_32(1118560256);
+emit_32(1112325279);
+emit_32(3229220864);
+emit_32(1119072263);
+emit_32(1111923989);
+emit_32(3229220864);
+emit_32(1119584256);
+emit_32(1111407434);
+emit_32(3229220864);
+emit_32(1120096263);
+emit_32(1110917251);
+emit_32(3229220864);
+emit_32(1120608322);
+emit_32(1110628080);
+emit_32(3229220864);
+emit_32(1121120289);
+emit_32(1110728560);
+emit_32(3229220864);
+emit_32(1121632256);
+emit_32(1110660245);
+emit_32(3229220864);
+emit_32(1122144223);
+emit_32(1110578220);
+emit_32(3229220864);
+emit_32(1122656322);
+emit_32(1110373800);
+emit_32(3229220864);
+emit_32(1123168289);
+emit_32(1109998646);
+emit_32(3229220864);
+emit_32(1123680256);
+emit_32(1109504138);
+emit_32(3229220864);
+emit_32(1124132848);
+emit_32(1109245821);
+emit_32(3229220864);
+emit_32(1124388897);
+emit_32(1109347533);
+emit_32(3229220864);
+emit_32(1124644880);
+emit_32(1108947213);
+emit_32(3229220864);
+emit_32(1124900864);
+emit_32(1108137607);
+emit_32(3229220864);
+emit_32(1125156848);
+emit_32(1107314396);
+emit_32(3229220864);
+emit_32(1125412897);
+emit_32(1106864505);
+emit_32(3229220864);
+emit_32(1125668880);
+emit_32(1107350389);
+emit_32(3229220864);
+emit_32(1125924864);
+emit_32(1107022263);
+emit_32(3229220864);
+emit_32(1126180848);
+emit_32(1107147673);
+emit_32(3229220864);
+emit_32(1126436897);
+emit_32(1107173940);
+emit_32(3229220864);
+emit_32(1126692880);
+emit_32(1106863299);
+emit_32(3229220864);
+emit_32(1126948864);
+emit_32(1106064966);
+emit_32(3229220864);
+emit_32(1127204848);
+emit_32(1105610408);
+emit_32(3229220864);
+emit_32(1127460897);
+emit_32(1105364464);
+emit_32(3229220864);
+emit_32(1127716880);
+emit_32(1104474905);
+emit_32(3229220864);
+emit_32(1127972864);
+emit_32(1103487985);
+emit_32(3229220864);
+emit_32(1128228848);
+emit_32(1102533729);
+emit_32(3229220864);
+emit_32(1128484897);
+emit_32(1101802294);
+emit_32(3229220864);
+emit_32(1128740880);
+emit_32(1100883847);
+emit_32(3229220864);
+emit_32(1128996864);
+emit_32(1100469607);
+emit_32(3229220864);
+emit_32(1129252848);
+emit_32(1100396573);
+emit_32(3229220864);
+emit_32(1129508897);
+emit_32(1100417440);
+emit_32(3229220864);
+emit_32(1129764880);
+emit_32(1100382103);
+emit_32(3229220864);
+emit_32(1130020864);
+emit_32(1100225498);
+emit_32(3229220864);
+emit_32(1130276848);
+emit_32(1100250192);
+emit_32(3229220864);
+emit_32(1130532897);
+emit_32(1099696859);
+emit_32(3229220864);
+emit_32(1130788880);
+emit_32(1099685587);
+emit_32(3229220864);
+emit_32(1131044864);
+emit_32(1099260389);
+emit_32(3229220864);
+emit_32(1131300848);
+emit_32(1097711642);
+emit_32(3229220864);
+emit_32(1131556897);
+emit_32(1095721340);
+emit_32(3229220864);
+emit_32(1131812880);
+emit_32(1095617636);
+emit_32(3229220864);
+emit_32(1132068864);
+emit_32(1094282799);
+emit_32(3229220864);
+emit_32(1081737216);
+emit_32(1111679959);
+emit_32(3237609472);
+emit_32(1090125824);
+emit_32(1111786285);
+emit_32(3237609472);
+emit_32(1094418484);
+emit_32(1112014979);
+emit_32(3237609472);
+emit_32(1098514432);
+emit_32(1112169408);
+emit_32(3237609472);
+emit_32(1100759066);
+emit_32(1112421145);
+emit_32(3237609472);
+emit_32(1102807040);
+emit_32(1112788461);
+emit_32(3237609472);
+emit_32(1104855066);
+emit_32(1112831951);
+emit_32(3237609472);
+emit_32(1106903040);
+emit_32(1113081302);
+emit_32(3237609472);
+emit_32(1108123661);
+emit_32(1113387250);
+emit_32(3237609472);
+emit_32(1109147648);
+emit_32(1113921710);
+emit_32(3237609472);
+emit_32(1110171661);
+emit_32(1113963574);
+emit_32(3237609472);
+emit_32(1111195648);
+emit_32(1114050658);
+emit_32(3237609472);
+emit_32(1112219661);
+emit_32(1113921264);
+emit_32(3237609472);
+emit_32(1113243648);
+emit_32(1114115854);
+emit_32(3237609472);
+emit_32(1114267661);
+emit_32(1114312278);
+emit_32(3237609472);
+emit_32(1115291648);
+emit_32(1114279117);
+emit_32(3237609472);
+emit_32(1116000263);
+emit_32(1113920609);
+emit_32(3237609472);
+emit_32(1116512256);
+emit_32(1113584645);
+emit_32(3237609472);
+emit_32(1117024263);
+emit_32(1113293246);
+emit_32(3237609472);
+emit_32(1117536256);
+emit_32(1113201469);
+emit_32(3237609472);
+emit_32(1118048263);
+emit_32(1112988661);
+emit_32(3237609472);
+emit_32(1118560256);
+emit_32(1112637047);
+emit_32(3237609472);
+emit_32(1119072263);
+emit_32(1112267476);
+emit_32(3237609472);
+emit_32(1119584256);
+emit_32(1111621186);
+emit_32(3237609472);
+emit_32(1120096263);
+emit_32(1110940949);
+emit_32(3237609472);
+emit_32(1120608322);
+emit_32(1110726751);
+emit_32(3237609472);
+emit_32(1121120289);
+emit_32(1110505737);
+emit_32(3237609472);
+emit_32(1121632256);
+emit_32(1110430476);
+emit_32(3237609472);
+emit_32(1122144223);
+emit_32(1110258876);
+emit_32(3237609472);
+emit_32(1122656322);
+emit_32(1110246425);
+emit_32(3237609472);
+emit_32(1123168289);
+emit_32(1110111368);
+emit_32(3237609472);
+emit_32(1123680256);
+emit_32(1109704075);
+emit_32(3237609472);
+emit_32(1124132848);
+emit_32(1109328449);
+emit_32(3237609472);
+emit_32(1124388897);
+emit_32(1109344020);
+emit_32(3237609472);
+emit_32(1124644880);
+emit_32(1109056501);
+emit_32(3237609472);
+emit_32(1124900864);
+emit_32(1108366983);
+emit_32(3237609472);
+emit_32(1125156848);
+emit_32(1107828618);
+emit_32(3237609472);
+emit_32(1125412897);
+emit_32(1107568047);
+emit_32(3237609472);
+emit_32(1125668880);
+emit_32(1107450056);
+emit_32(3237609472);
+emit_32(1125924864);
+emit_32(1107525842);
+emit_32(3237609472);
+emit_32(1126180848);
+emit_32(1107466650);
+emit_32(3237609472);
+emit_32(1126436897);
+emit_32(1107475195);
+emit_32(3237609472);
+emit_32(1126692880);
+emit_32(1107046852);
+emit_32(3237609472);
+emit_32(1126948864);
+emit_32(1106460593);
+emit_32(3237609472);
+emit_32(1127204848);
+emit_32(1105866051);
+emit_32(3237609472);
+emit_32(1127460897);
+emit_32(1105220967);
+emit_32(3237609472);
+emit_32(1127716880);
+emit_32(1104257535);
+emit_32(3237609472);
+emit_32(1127972864);
+emit_32(1103215618);
+emit_32(3237609472);
+emit_32(1128228848);
+emit_32(1102464785);
+emit_32(3237609472);
+emit_32(1128484897);
+emit_32(1101270562);
+emit_32(3237609472);
+emit_32(1128740880);
+emit_32(1100280706);
+emit_32(3237609472);
+emit_32(1128996864);
+emit_32(1099709599);
+emit_32(3237609472);
+emit_32(1129252848);
+emit_32(1100000579);
+emit_32(3237609472);
+emit_32(1129508897);
+emit_32(1100207987);
+emit_32(3237609472);
+emit_32(1129764880);
+emit_32(1100241227);
+emit_32(3237609472);
+emit_32(1130020864);
+emit_32(1100129029);
+emit_32(3237609472);
+emit_32(1130276848);
+emit_32(1099912079);
+emit_32(3237609472);
+emit_32(1130532897);
+emit_32(1099448608);
+emit_32(3237609472);
+emit_32(1130788880);
+emit_32(1099055392);
+emit_32(3237609472);
+emit_32(1131044864);
+emit_32(1098378012);
+emit_32(3237609472);
+emit_32(1131300848);
+emit_32(1096274779);
+emit_32(3237609472);
+emit_32(1131556897);
+emit_32(1096113088);
+emit_32(3237609472);
+emit_32(1131812880);
+emit_32(1094998137);
+emit_32(3237609472);
+emit_32(1132068864);
+emit_32(1093654387);
+emit_32(3237609472);
+emit_32(1081737216);
+emit_32(1111917802);
+emit_32(3241902132);
+emit_32(1090125824);
+emit_32(1112032752);
+emit_32(3241902132);
+emit_32(1094418484);
+emit_32(1112179868);
+emit_32(3241902132);
+emit_32(1098514432);
+emit_32(1112289968);
+emit_32(3241902132);
+emit_32(1100759066);
+emit_32(1112667167);
+emit_32(3241902132);
+emit_32(1102807040);
+emit_32(1112883777);
+emit_32(3241902132);
+emit_32(1104855066);
+emit_32(1113176434);
+emit_32(3241902132);
+emit_32(1106903040);
+emit_32(1113400908);
+emit_32(3241902132);
+emit_32(1108123661);
+emit_32(1113733176);
+emit_32(3241902132);
+emit_32(1109147648);
+emit_32(1114095642);
+emit_32(3241902132);
+emit_32(1110171661);
+emit_32(1114172346);
+emit_32(3241902132);
+emit_32(1111195648);
+emit_32(1114411342);
+emit_32(3241902132);
+emit_32(1112219661);
+emit_32(1114340694);
+emit_32(3241902132);
+emit_32(1113243648);
+emit_32(1114253374);
+emit_32(3241902132);
+emit_32(1114267661);
+emit_32(1114280192);
+emit_32(3241902132);
+emit_32(1115291648);
+emit_32(1114163721);
+emit_32(3241902132);
+emit_32(1116000263);
+emit_32(1114090190);
+emit_32(3241902132);
+emit_32(1116512256);
+emit_32(1113701666);
+emit_32(3241902132);
+emit_32(1117024263);
+emit_32(1113532950);
+emit_32(3241902132);
+emit_32(1117536256);
+emit_32(1113573556);
+emit_32(3241902132);
+emit_32(1118048263);
+emit_32(1113300219);
+emit_32(3241902132);
+emit_32(1118560256);
+emit_32(1112826289);
+emit_32(3241902132);
+emit_32(1119072263);
+emit_32(1112471713);
+emit_32(3241902132);
+emit_32(1119584256);
+emit_32(1111810323);
+emit_32(3241902132);
+emit_32(1120096263);
+emit_32(1110995816);
+emit_32(3241902132);
+emit_32(1120608322);
+emit_32(1110440752);
+emit_32(3241902132);
+emit_32(1121120289);
+emit_32(1110331281);
+emit_32(3241902132);
+emit_32(1121632256);
+emit_32(1110265928);
+emit_32(3241902132);
+emit_32(1122144223);
+emit_32(1110314897);
+emit_32(3241902132);
+emit_32(1122656322);
+emit_32(1110355136);
+emit_32(3241902132);
+emit_32(1123168289);
+emit_32(1110061272);
+emit_32(3241902132);
+emit_32(1123680256);
+emit_32(1109762481);
+emit_32(3241902132);
+emit_32(1124132848);
+emit_32(1109249543);
+emit_32(3241902132);
+emit_32(1124388897);
+emit_32(1109267133);
+emit_32(3241902132);
+emit_32(1124644880);
+emit_32(1108818474);
+emit_32(3241902132);
+emit_32(1124900864);
+emit_32(1108492996);
+emit_32(3241902132);
+emit_32(1125156848);
+emit_32(1108035555);
+emit_32(3241902132);
+emit_32(1125412897);
+emit_32(1107824896);
+emit_32(3241902132);
+emit_32(1125668880);
+emit_32(1107697625);
+emit_32(3241902132);
+emit_32(1125924864);
+emit_32(1107864374);
+emit_32(3241902132);
+emit_32(1126180848);
+emit_32(1107783896);
+emit_32(3241902132);
+emit_32(1126436897);
+emit_32(1107786911);
+emit_32(3241902132);
+emit_32(1126692880);
+emit_32(1107603043);
+emit_32(3241902132);
+emit_32(1126948864);
+emit_32(1106784603);
+emit_32(3241902132);
+emit_32(1127204848);
+emit_32(1106394376);
+emit_32(3241902132);
+emit_32(1127460897);
+emit_32(1105369026);
+emit_32(3241902132);
+emit_32(1127716880);
+emit_32(1104382892);
+emit_32(3241902132);
+emit_32(1127972864);
+emit_32(1103613552);
+emit_32(3241902132);
+emit_32(1128228848);
+emit_32(1102201959);
+emit_32(3241902132);
+emit_32(1128484897);
+emit_32(1100683674);
+emit_32(3241902132);
+emit_32(1128740880);
+emit_32(1100170081);
+emit_32(3241902132);
+emit_32(1128996864);
+emit_32(1099248330);
+emit_32(3241902132);
+emit_32(1129252848);
+emit_32(1098972398);
+emit_32(3241902132);
+emit_32(1129508897);
+emit_32(1099403729);
+emit_32(3241902132);
+emit_32(1129764880);
+emit_32(1099570243);
+emit_32(3241902132);
+emit_32(1130020864);
+emit_32(1099452174);
+emit_32(3241902132);
+emit_32(1130276848);
+emit_32(1099309567);
+emit_32(3241902132);
+emit_32(1130532897);
+emit_32(1098235616);
+emit_32(3241902132);
+emit_32(1130788880);
+emit_32(1097234960);
+emit_32(3241902132);
+emit_32(1131044864);
+emit_32(1096084777);
+emit_32(3241902132);
+emit_32(1131300848);
+emit_32(1095855768);
+emit_32(3241902132);
+emit_32(1131556897);
+emit_32(1095600649);
+emit_32(3241902132);
+emit_32(1131812880);
+emit_32(1095372584);
+emit_32(3241902132);
+emit_32(1132068864);
+emit_32(1094155711);
+emit_32(3241902132);
+emit_32(1081737216);
+emit_32(1112196121);
+emit_32(3245998080);
+emit_32(1090125824);
+emit_32(1112339435);
+emit_32(3245998080);
+emit_32(1094418484);
+emit_32(1112635054);
+emit_32(3245998080);
+emit_32(1098514432);
+emit_32(1112640664);
+emit_32(3245998080);
+emit_32(1100759066);
+emit_32(1112829670);
+emit_32(3245998080);
+emit_32(1102807040);
+emit_32(1113234342);
+emit_32(3245998080);
+emit_32(1104855066);
+emit_32(1113597123);
+emit_32(3245998080);
+emit_32(1106903040);
+emit_32(1113703003);
+emit_32(3245998080);
+emit_32(1108123661);
+emit_32(1113932589);
+emit_32(3245998080);
+emit_32(1109147648);
+emit_32(1114173735);
+emit_32(3245998080);
+emit_32(1110171661);
+emit_32(1114493341);
+emit_32(3245998080);
+emit_32(1111195648);
+emit_32(1114614687);
+emit_32(3245998080);
+emit_32(1112219661);
+emit_32(1114656971);
+emit_32(3245998080);
+emit_32(1113243648);
+emit_32(1114375193);
+emit_32(3245998080);
+emit_32(1114267661);
+emit_32(1114462251);
+emit_32(3245998080);
+emit_32(1115291648);
+emit_32(1114444425);
+emit_32(3245998080);
+emit_32(1116000263);
+emit_32(1114258040);
+emit_32(3245998080);
+emit_32(1116512256);
+emit_32(1113897068);
+emit_32(3245998080);
+emit_32(1117024263);
+emit_32(1113641399);
+emit_32(3245998080);
+emit_32(1117536256);
+emit_32(1113834835);
+emit_32(3245998080);
+emit_32(1118048263);
+emit_32(1113430688);
+emit_32(3245998080);
+emit_32(1118560256);
+emit_32(1112813260);
+emit_32(3245998080);
+emit_32(1119072263);
+emit_32(1112444187);
+emit_32(3245998080);
+emit_32(1119584256);
+emit_32(1111786704);
+emit_32(3245998080);
+emit_32(1120096263);
+emit_32(1111130558);
+emit_32(3245998080);
+emit_32(1120608322);
+emit_32(1110632169);
+emit_32(3245998080);
+emit_32(1121120289);
+emit_32(1110279953);
+emit_32(3245998080);
+emit_32(1121632256);
+emit_32(1110145840);
+emit_32(3245998080);
+emit_32(1122144223);
+emit_32(1110117869);
+emit_32(3245998080);
+emit_32(1122656322);
+emit_32(1109967425);
+emit_32(3245998080);
+emit_32(1123168289);
+emit_32(1109898533);
+emit_32(3245998080);
+emit_32(1123680256);
+emit_32(1109796192);
+emit_32(3245998080);
+emit_32(1124132848);
+emit_32(1109273031);
+emit_32(3245998080);
+emit_32(1124388897);
+emit_32(1109109716);
+emit_32(3245998080);
+emit_32(1124644880);
+emit_32(1108907052);
+emit_32(3245998080);
+emit_32(1124900864);
+emit_32(1108479705);
+emit_32(3245998080);
+emit_32(1125156848);
+emit_32(1108048504);
+emit_32(3245998080);
+emit_32(1125412897);
+emit_32(1108035581);
+emit_32(3245998080);
+emit_32(1125668880);
+emit_32(1107927761);
+emit_32(3245998080);
+emit_32(1125924864);
+emit_32(1108119231);
+emit_32(3245998080);
+emit_32(1126180848);
+emit_32(1108244955);
+emit_32(3245998080);
+emit_32(1126436897);
+emit_32(1108024597);
+emit_32(3245998080);
+emit_32(1126692880);
+emit_32(1107730052);
+emit_32(3245998080);
+emit_32(1126948864);
+emit_32(1107344019);
+emit_32(3245998080);
+emit_32(1127204848);
+emit_32(1106859314);
+emit_32(3245998080);
+emit_32(1127460897);
+emit_32(1105701057);
+emit_32(3245998080);
+emit_32(1127716880);
+emit_32(1104883954);
+emit_32(3245998080);
+emit_32(1127972864);
+emit_32(1103479492);
+emit_32(3245998080);
+emit_32(1128228848);
+emit_32(1101941126);
+emit_32(3245998080);
+emit_32(1128484897);
+emit_32(1100612003);
+emit_32(3245998080);
+emit_32(1128740880);
+emit_32(1099967182);
+emit_32(3245998080);
+emit_32(1128996864);
+emit_32(1099350200);
+emit_32(3245998080);
+emit_32(1129252848);
+emit_32(1098786642);
+emit_32(3245998080);
+emit_32(1129508897);
+emit_32(1098582799);
+emit_32(3245998080);
+emit_32(1129764880);
+emit_32(1098188639);
+emit_32(3245998080);
+emit_32(1130020864);
+emit_32(1098264032);
+emit_32(3245998080);
+emit_32(1130276848);
+emit_32(1097098120);
+emit_32(3245998080);
+emit_32(1130532897);
+emit_32(1096369150);
+emit_32(3245998080);
+emit_32(1130788880);
+emit_32(1096281280);
+emit_32(3245998080);
+emit_32(1131044864);
+emit_32(1096127244);
+emit_32(3245998080);
+emit_32(1131300848);
+emit_32(1096047342);
+emit_32(3245998080);
+emit_32(1131556897);
+emit_32(1096229061);
+emit_32(3245998080);
+emit_32(1131812880);
+emit_32(1095837942);
+emit_32(3245998080);
+emit_32(1132068864);
+emit_32(1094247567);
+emit_32(3245998080);
+emit_32(1081737216);
+emit_32(1112566084);
+emit_32(3248242714);
+emit_32(1090125824);
+emit_32(1112769036);
+emit_32(3248242714);
+emit_32(1094418484);
+emit_32(1113204903);
+emit_32(3248242714);
+emit_32(1098514432);
+emit_32(1113297807);
+emit_32(3248242714);
+emit_32(1100759066);
+emit_32(1113299590);
+emit_32(3248242714);
+emit_32(1102807040);
+emit_32(1113631778);
+emit_32(3248242714);
+emit_32(1104855066);
+emit_32(1113733962);
+emit_32(3248242714);
+emit_32(1106903040);
+emit_32(1114058575);
+emit_32(3248242714);
+emit_32(1108123661);
+emit_32(1114302841);
+emit_32(3248242714);
+emit_32(1109147648);
+emit_32(1114499816);
+emit_32(3248242714);
+emit_32(1110171661);
+emit_32(1114705389);
+emit_32(3248242714);
+emit_32(1111195648);
+emit_32(1114954505);
+emit_32(3248242714);
+emit_32(1112219661);
+emit_32(1114757818);
+emit_32(3248242714);
+emit_32(1113243648);
+emit_32(1114552664);
+emit_32(3248242714);
+emit_32(1114267661);
+emit_32(1114690499);
+emit_32(3248242714);
+emit_32(1115291648);
+emit_32(1114401800);
+emit_32(3248242714);
+emit_32(1116000263);
+emit_32(1114010445);
+emit_32(3248242714);
+emit_32(1116512256);
+emit_32(1113755904);
+emit_32(3248242714);
+emit_32(1117024263);
+emit_32(1113715219);
+emit_32(3248242714);
+emit_32(1117536256);
+emit_32(1113634478);
+emit_32(3248242714);
+emit_32(1118048263);
+emit_32(1113284962);
+emit_32(3248242714);
+emit_32(1118560256);
+emit_32(1112908602);
+emit_32(3248242714);
+emit_32(1119072263);
+emit_32(1112464713);
+emit_32(3248242714);
+emit_32(1119584256);
+emit_32(1111750948);
+emit_32(3248242714);
+emit_32(1120096263);
+emit_32(1111362529);
+emit_32(3248242714);
+emit_32(1120608322);
+emit_32(1110906005);
+emit_32(3248242714);
+emit_32(1121120289);
+emit_32(1110451867);
+emit_32(3248242714);
+emit_32(1121632256);
+emit_32(1110203905);
+emit_32(3248242714);
+emit_32(1122144223);
+emit_32(1110022344);
+emit_32(3248242714);
+emit_32(1122656322);
+emit_32(1109942023);
+emit_32(3248242714);
+emit_32(1123168289);
+emit_32(1109931930);
+emit_32(3248242714);
+emit_32(1123680256);
+emit_32(1109863432);
+emit_32(3248242714);
+emit_32(1124132848);
+emit_32(1109215989);
+emit_32(3248242714);
+emit_32(1124388897);
+emit_32(1109161384);
+emit_32(3248242714);
+emit_32(1124644880);
+emit_32(1108931536);
+emit_32(3248242714);
+emit_32(1124900864);
+emit_32(1108371544);
+emit_32(3248242714);
+emit_32(1125156848);
+emit_32(1108462875);
+emit_32(3248242714);
+emit_32(1125412897);
+emit_32(1108261182);
+emit_32(3248242714);
+emit_32(1125668880);
+emit_32(1108292980);
+emit_32(3248242714);
+emit_32(1125924864);
+emit_32(1108474724);
+emit_32(3248242714);
+emit_32(1126180848);
+emit_32(1108428377);
+emit_32(3248242714);
+emit_32(1126436897);
+emit_32(1108089713);
+emit_32(3248242714);
+emit_32(1126692880);
+emit_32(1107824057);
+emit_32(3248242714);
+emit_32(1126948864);
+emit_32(1107727614);
+emit_32(3248242714);
+emit_32(1127204848);
+emit_32(1107082976);
+emit_32(3248242714);
+emit_32(1127460897);
+emit_32(1106264772);
+emit_32(3248242714);
+emit_32(1127716880);
+emit_32(1105380141);
+emit_32(3248242714);
+emit_32(1127972864);
+emit_32(1103821223);
+emit_32(3248242714);
+emit_32(1128228848);
+emit_32(1102097049);
+emit_32(3248242714);
+emit_32(1128484897);
+emit_32(1100348129);
+emit_32(3248242714);
+emit_32(1128740880);
+emit_32(1099721186);
+emit_32(3248242714);
+emit_32(1128996864);
+emit_32(1098987759);
+emit_32(3248242714);
+emit_32(1129252848);
+emit_32(1098503317);
+emit_32(3248242714);
+emit_32(1129508897);
+emit_32(1097783679);
+emit_32(3248242714);
+emit_32(1129764880);
+emit_32(1097409338);
+emit_32(3248242714);
+emit_32(1130020864);
+emit_32(1096647547);
+emit_32(3248242714);
+emit_32(1130276848);
+emit_32(1096484599);
+emit_32(3248242714);
+emit_32(1130532897);
+emit_32(1095929168);
+emit_32(3248242714);
+emit_32(1130788880);
+emit_32(1096063071);
+emit_32(3248242714);
+emit_32(1131044864);
+emit_32(1096407109);
+emit_32(3248242714);
+emit_32(1131300848);
+emit_32(1095628227);
+emit_32(3248242714);
+emit_32(1131556897);
+emit_32(1095460769);
+emit_32(3248242714);
+emit_32(1131812880);
+emit_32(1095830916);
+emit_32(3248242714);
+emit_32(1132068864);
+emit_32(1094232467);
+emit_32(3248242714);
+emit_32(1081737216);
+emit_32(1113150456);
+emit_32(3250290688);
+emit_32(1090125824);
+emit_32(1113492292);
+emit_32(3250290688);
+emit_32(1094418484);
+emit_32(1113689922);
+emit_32(3250290688);
+emit_32(1098514432);
+emit_32(1113686357);
+emit_32(3250290688);
+emit_32(1100759066);
+emit_32(1113837352);
+emit_32(3250290688);
+emit_32(1102807040);
+emit_32(1113996473);
+emit_32(3250290688);
+emit_32(1104855066);
+emit_32(1114061039);
+emit_32(3250290688);
+emit_32(1106903040);
+emit_32(1114255891);
+emit_32(3250290688);
+emit_32(1108123661);
+emit_32(1114434988);
+emit_32(3250290688);
+emit_32(1109147648);
+emit_32(1114792814);
+emit_32(3250290688);
+emit_32(1110171661);
+emit_32(1114681586);
+emit_32(3250290688);
+emit_32(1111195648);
+emit_32(1114881157);
+emit_32(3250290688);
+emit_32(1112219661);
+emit_32(1114508309);
+emit_32(3250290688);
+emit_32(1113243648);
+emit_32(1114572115);
+emit_32(3250290688);
+emit_32(1114267661);
+emit_32(1114613377);
+emit_32(3250290688);
+emit_32(1115291648);
+emit_32(1114243334);
+emit_32(3250290688);
+emit_32(1116000263);
+emit_32(1114073701);
+emit_32(3250290688);
+emit_32(1116512256);
+emit_32(1113815594);
+emit_32(3250290688);
+emit_32(1117024263);
+emit_32(1113605721);
+emit_32(3250290688);
+emit_32(1117536256);
+emit_32(1113440702);
+emit_32(3250290688);
+emit_32(1118048263);
+emit_32(1112989159);
+emit_32(3250290688);
+emit_32(1118560256);
+emit_32(1112567395);
+emit_32(3250290688);
+emit_32(1119072263);
+emit_32(1112247344);
+emit_32(3250290688);
+emit_32(1119584256);
+emit_32(1112009920);
+emit_32(3250290688);
+emit_32(1120096263);
+emit_32(1111470454);
+emit_32(3250290688);
+emit_32(1120608322);
+emit_32(1110996838);
+emit_32(3250290688);
+emit_32(1121120289);
+emit_32(1110568495);
+emit_32(3250290688);
+emit_32(1121632256);
+emit_32(1110151633);
+emit_32(3250290688);
+emit_32(1122144223);
+emit_32(1109917460);
+emit_32(3250290688);
+emit_32(1122656322);
+emit_32(1109701663);
+emit_32(3250290688);
+emit_32(1123168289);
+emit_32(1109686721);
+emit_32(3250290688);
+emit_32(1123680256);
+emit_32(1109370549);
+emit_32(3250290688);
+emit_32(1124132848);
+emit_32(1109357783);
+emit_32(3250290688);
+emit_32(1124388897);
+emit_32(1109361348);
+emit_32(3250290688);
+emit_32(1124644880);
+emit_32(1108962627);
+emit_32(3250290688);
+emit_32(1124900864);
+emit_32(1108736108);
+emit_32(3250290688);
+emit_32(1125156848);
+emit_32(1108614185);
+emit_32(3250290688);
+emit_32(1125412897);
+emit_32(1108533864);
+emit_32(3250290688);
+emit_32(1125668880);
+emit_32(1108590068);
+emit_32(3250290688);
+emit_32(1125924864);
+emit_32(1108802404);
+emit_32(3250290688);
+emit_32(1126180848);
+emit_32(1108700955);
+emit_32(3250290688);
+emit_32(1126436897);
+emit_32(1108392988);
+emit_32(3250290688);
+emit_32(1126692880);
+emit_32(1108021871);
+emit_32(3250290688);
+emit_32(1126948864);
+emit_32(1107615521);
+emit_32(3250290688);
+emit_32(1127204848);
+emit_32(1107132835);
+emit_32(3250290688);
+emit_32(1127460897);
+emit_32(1106307239);
+emit_32(3250290688);
+emit_32(1127716880);
+emit_32(1105259659);
+emit_32(3250290688);
+emit_32(1127972864);
+emit_32(1103882145);
+emit_32(3250290688);
+emit_32(1128228848);
+emit_32(1102498916);
+emit_32(3250290688);
+emit_32(1128484897);
+emit_32(1100712509);
+emit_32(3250290688);
+emit_32(1128740880);
+emit_32(1099497629);
+emit_32(3250290688);
+emit_32(1128996864);
+emit_32(1097686476);
+emit_32(3250290688);
+emit_32(1129252848);
+emit_32(1096996199);
+emit_32(3250290688);
+emit_32(1129508897);
+emit_32(1096729441);
+emit_32(3250290688);
+emit_32(1129764880);
+emit_32(1096118855);
+emit_32(3250290688);
+emit_32(1130020864);
+emit_32(1095816970);
+emit_32(3250290688);
+emit_32(1130276848);
+emit_32(1095839934);
+emit_32(3250290688);
+emit_32(1130532897);
+emit_32(1095807218);
+emit_32(3250290688);
+emit_32(1130788880);
+emit_32(1096112249);
+emit_32(3250290688);
+emit_32(1131044864);
+emit_32(1096393372);
+emit_32(3250290688);
+emit_32(1131300848);
+emit_32(1096168558);
+emit_32(3250290688);
+emit_32(1131556897);
+emit_32(1095322776);
+emit_32(3250290688);
+emit_32(1131812880);
+emit_32(1094576924);
+emit_32(3250290688);
+emit_32(1132068864);
+emit_32(1094020760);
+emit_32(3250290688);
+emit_32(1081737216);
+emit_32(1113988085);
+emit_32(3252338714);
+emit_32(1090125824);
+emit_32(1114065260);
+emit_32(3252338714);
+emit_32(1094418484);
+emit_32(1113997338);
+emit_32(3252338714);
+emit_32(1098514432);
+emit_32(1114054171);
+emit_32(3252338714);
+emit_32(1100759066);
+emit_32(1114320378);
+emit_32(3252338714);
+emit_32(1102807040);
+emit_32(1114467126);
+emit_32(3252338714);
+emit_32(1104855066);
+emit_32(1114435984);
+emit_32(3252338714);
+emit_32(1106903040);
+emit_32(1114341953);
+emit_32(3252338714);
+emit_32(1108123661);
+emit_32(1114299407);
+emit_32(3252338714);
+emit_32(1109147648);
+emit_32(1114563438);
+emit_32(3252338714);
+emit_32(1110171661);
+emit_32(1114648268);
+emit_32(3252338714);
+emit_32(1111195648);
+emit_32(1114546084);
+emit_32(3252338714);
+emit_32(1112219661);
+emit_32(1114619144);
+emit_32(3252338714);
+emit_32(1113243648);
+emit_32(1114743636);
+emit_32(3252338714);
+emit_32(1114267661);
+emit_32(1114455592);
+emit_32(3252338714);
+emit_32(1115291648);
+emit_32(1114088040);
+emit_32(3252338714);
+emit_32(1116000263);
+emit_32(1113929390);
+emit_32(3252338714);
+emit_32(1116512256);
+emit_32(1113476511);
+emit_32(3252338714);
+emit_32(1117024263);
+emit_32(1113251303);
+emit_32(3252338714);
+emit_32(1117536256);
+emit_32(1113169592);
+emit_32(3252338714);
+emit_32(1118048263);
+emit_32(1112818162);
+emit_32(3252338714);
+emit_32(1118560256);
+emit_32(1112268839);
+emit_32(3252338714);
+emit_32(1119072263);
+emit_32(1111908916);
+emit_32(3252338714);
+emit_32(1119584256);
+emit_32(1111826550);
+emit_32(3252338714);
+emit_32(1120096263);
+emit_32(1111731418);
+emit_32(3252338714);
+emit_32(1120608322);
+emit_32(1111230146);
+emit_32(3252338714);
+emit_32(1121120289);
+emit_32(1110553815);
+emit_32(3252338714);
+emit_32(1121632256);
+emit_32(1110036683);
+emit_32(3252338714);
+emit_32(1122144223);
+emit_32(1109799364);
+emit_32(3252338714);
+emit_32(1122656322);
+emit_32(1109771393);
+emit_32(3252338714);
+emit_32(1123168289);
+emit_32(1109709003);
+emit_32(3252338714);
+emit_32(1123680256);
+emit_32(1109442691);
+emit_32(3252338714);
+emit_32(1124132848);
+emit_32(1109517769);
+emit_32(3252338714);
+emit_32(1124388897);
+emit_32(1109424524);
+emit_32(3252338714);
+emit_32(1124644880);
+emit_32(1109080277);
+emit_32(3252338714);
+emit_32(1124900864);
+emit_32(1108875411);
+emit_32(3252338714);
+emit_32(1125156848);
+emit_32(1108744733);
+emit_32(3252338714);
+emit_32(1125412897);
+emit_32(1108572268);
+emit_32(3252338714);
+emit_32(1125668880);
+emit_32(1108842041);
+emit_32(3252338714);
+emit_32(1125924864);
+emit_32(1108992537);
+emit_32(3252338714);
+emit_32(1126180848);
+emit_32(1108824136);
+emit_32(3252338714);
+emit_32(1126436897);
+emit_32(1108504583);
+emit_32(3252338714);
+emit_32(1126692880);
+emit_32(1107939112);
+emit_32(3252338714);
+emit_32(1126948864);
+emit_32(1107373221);
+emit_32(3252338714);
+emit_32(1127204848);
+emit_32(1107163454);
+emit_32(3252338714);
+emit_32(1127460897);
+emit_32(1106219106);
+emit_32(3252338714);
+emit_32(1127716880);
+emit_32(1105070444);
+emit_32(3252338714);
+emit_32(1127972864);
+emit_32(1103725960);
+emit_32(3252338714);
+emit_32(1128228848);
+emit_32(1102334919);
+emit_32(3252338714);
+emit_32(1128484897);
+emit_32(1100777102);
+emit_32(3252338714);
+emit_32(1128740880);
+emit_32(1099662937);
+emit_32(3252338714);
+emit_32(1128996864);
+emit_32(1098431490);
+emit_32(3252338714);
+emit_32(1129252848);
+emit_32(1097775186);
+emit_32(3252338714);
+emit_32(1129508897);
+emit_32(1096256848);
+emit_32(3252338714);
+emit_32(1129764880);
+emit_32(1095754895);
+emit_32(3252338714);
+emit_32(1130020864);
+emit_32(1096060659);
+emit_32(3252338714);
+emit_32(1130276848);
+emit_32(1095067238);
+emit_32(3252338714);
+emit_32(1130532897);
+emit_32(1094771330);
+emit_32(3252338714);
+emit_32(1130788880);
+emit_32(1095212047);
+emit_32(3252338714);
+emit_32(1131044864);
+emit_32(1094803207);
+emit_32(3252338714);
+emit_32(1131300848);
+emit_32(1094921801);
+emit_32(3252338714);
+emit_32(1131556897);
+emit_32(1094618028);
+emit_32(3252338714);
+emit_32(1131812880);
+emit_32(1093381757);
+emit_32(3252338714);
+emit_32(1132068864);
+emit_32(1092728180);
+emit_32(3252338714);
+emit_32(1081737216);
+emit_32(1114484349);
+emit_32(3254386688);
+emit_32(1090125824);
+emit_32(1114516331);
+emit_32(3254386688);
+emit_32(1094418484);
+emit_32(1114316079);
+emit_32(3254386688);
+emit_32(1098514432);
+emit_32(1114579953);
+emit_32(3254386688);
+emit_32(1100759066);
+emit_32(1114764660);
+emit_32(3254386688);
+emit_32(1102807040);
+emit_32(1114796065);
+emit_32(3254386688);
+emit_32(1104855066);
+emit_32(1114724998);
+emit_32(3254386688);
+emit_32(1106903040);
+emit_32(1114516881);
+emit_32(3254386688);
+emit_32(1108123661);
+emit_32(1114291254);
+emit_32(3254386688);
+emit_32(1109147648);
+emit_32(1114334036);
+emit_32(3254386688);
+emit_32(1110171661);
+emit_32(1114475987);
+emit_32(3254386688);
+emit_32(1111195648);
+emit_32(1114491322);
+emit_32(3254386688);
+emit_32(1112219661);
+emit_32(1114531378);
+emit_32(3254386688);
+emit_32(1113243648);
+emit_32(1114372755);
+emit_32(3254386688);
+emit_32(1114267661);
+emit_32(1114308136);
+emit_32(3254386688);
+emit_32(1115291648);
+emit_32(1113743609);
+emit_32(3254386688);
+emit_32(1116000263);
+emit_32(1113664809);
+emit_32(3254386688);
+emit_32(1116512256);
+emit_32(1113231799);
+emit_32(3254386688);
+emit_32(1117024263);
+emit_32(1112995057);
+emit_32(3254386688);
+emit_32(1117536256);
+emit_32(1112878744);
+emit_32(3254386688);
+emit_32(1118048263);
+emit_32(1112754959);
+emit_32(3254386688);
+emit_32(1118560256);
+emit_32(1112570436);
+emit_32(3254386688);
+emit_32(1119072263);
+emit_32(1112364417);
+emit_32(3254386688);
+emit_32(1119584256);
+emit_32(1111993903);
+emit_32(3254386688);
+emit_32(1120096263);
+emit_32(1111795748);
+emit_32(3254386688);
+emit_32(1120608322);
+emit_32(1111345490);
+emit_32(3254386688);
+emit_32(1121120289);
+emit_32(1110601525);
+emit_32(3254386688);
+emit_32(1121632256);
+emit_32(1110149693);
+emit_32(3254386688);
+emit_32(1122144223);
+emit_32(1110165946);
+emit_32(3254386688);
+emit_32(1122656322);
+emit_32(1109981554);
+emit_32(3254386688);
+emit_32(1123168289);
+emit_32(1109825395);
+emit_32(3254386688);
+emit_32(1123680256);
+emit_32(1109816797);
+emit_32(3254386688);
+emit_32(1124132848);
+emit_32(1109710052);
+emit_32(3254386688);
+emit_32(1124388897);
+emit_32(1109602468);
+emit_32(3254386688);
+emit_32(1124644880);
+emit_32(1109349918);
+emit_32(3254386688);
+emit_32(1124900864);
+emit_32(1109069634);
+emit_32(3254386688);
+emit_32(1125156848);
+emit_32(1108800622);
+emit_32(3254386688);
+emit_32(1125412897);
+emit_32(1108662341);
+emit_32(3254386688);
+emit_32(1125668880);
+emit_32(1108955051);
+emit_32(3254386688);
+emit_32(1125924864);
+emit_32(1109069896);
+emit_32(3254386688);
+emit_32(1126180848);
+emit_32(1108753986);
+emit_32(3254386688);
+emit_32(1126436897);
+emit_32(1108343941);
+emit_32(3254386688);
+emit_32(1126692880);
+emit_32(1107751600);
+emit_32(3254386688);
+emit_32(1126948864);
+emit_32(1107299113);
+emit_32(3254386688);
+emit_32(1127204848);
+emit_32(1106833257);
+emit_32(3254386688);
+emit_32(1127460897);
+emit_32(1106258742);
+emit_32(3254386688);
+emit_32(1127716880);
+emit_32(1104970147);
+emit_32(3254386688);
+emit_32(1127972864);
+emit_32(1103641549);
+emit_32(3254386688);
+emit_32(1128228848);
+emit_32(1102486700);
+emit_32(3254386688);
+emit_32(1128484897);
+emit_32(1100950903);
+emit_32(3254386688);
+emit_32(1128740880);
+emit_32(1099783943);
+emit_32(3254386688);
+emit_32(1128996864);
+emit_32(1099048105);
+emit_32(3254386688);
+emit_32(1129252848);
+emit_32(1097916324);
+emit_32(3254386688);
+emit_32(1129508897);
+emit_32(1096849293);
+emit_32(3254386688);
+emit_32(1129764880);
+emit_32(1095290166);
+emit_32(3254386688);
+emit_32(1130020864);
+emit_32(1094873566);
+emit_32(3254386688);
+emit_32(1130276848);
+emit_32(1094773742);
+emit_32(3254386688);
+emit_32(1130532897);
+emit_32(1093963298);
+emit_32(3254386688);
+emit_32(1130788880);
+emit_32(1094288251);
+emit_32(3254386688);
+emit_32(1131044864);
+emit_32(1093582560);
+emit_32(3254386688);
+emit_32(1131300848);
+emit_32(1093578994);
+emit_32(3254386688);
+emit_32(1131556897);
+emit_32(1093961096);
+emit_32(3254386688);
+emit_32(1131812880);
+emit_32(1094270950);
+emit_32(3254386688);
+emit_32(1132068864);
+emit_32(1094226805);
+emit_32(3254386688);
+emit_32(1081737216);
+emit_32(1114694274);
+emit_32(3255607309);
+emit_32(1090125824);
+emit_32(1114471950);
+emit_32(3255607309);
+emit_32(1094418484);
+emit_32(1114251644);
+emit_32(3255607309);
+emit_32(1098514432);
+emit_32(1114525794);
+emit_32(3255607309);
+emit_32(1100759066);
+emit_32(1114675374);
+emit_32(3255607309);
+emit_32(1102807040);
+emit_32(1114775146);
+emit_32(3255607309);
+emit_32(1104855066);
+emit_32(1114776168);
+emit_32(3255607309);
+emit_32(1106903040);
+emit_32(1114678755);
+emit_32(3255607309);
+emit_32(1108123661);
+emit_32(1114267373);
+emit_32(3255607309);
+emit_32(1109147648);
+emit_32(1114095459);
+emit_32(3255607309);
+emit_32(1110171661);
+emit_32(1114227474);
+emit_32(3255607309);
+emit_32(1111195648);
+emit_32(1114305305);
+emit_32(3255607309);
+emit_32(1112219661);
+emit_32(1114012333);
+emit_32(3255607309);
+emit_32(1113243648);
+emit_32(1113935761);
+emit_32(3255607309);
+emit_32(1114267661);
+emit_32(1113756087);
+emit_32(3255607309);
+emit_32(1115291648);
+emit_32(1113651780);
+emit_32(3255607309);
+emit_32(1116000263);
+emit_32(1113622315);
+emit_32(3255607309);
+emit_32(1116512256);
+emit_32(1113238353);
+emit_32(3255607309);
+emit_32(1117024263);
+emit_32(1112877931);
+emit_32(3255607309);
+emit_32(1117536256);
+emit_32(1112868625);
+emit_32(3255607309);
+emit_32(1118048263);
+emit_32(1112560842);
+emit_32(3255607309);
+emit_32(1118560256);
+emit_32(1112530249);
+emit_32(3255607309);
+emit_32(1119072263);
+emit_32(1112251957);
+emit_32(3255607309);
+emit_32(1119584256);
+emit_32(1111883697);
+emit_32(3255607309);
+emit_32(1120096263);
+emit_32(1111510168);
+emit_32(3255607309);
+emit_32(1120608322);
+emit_32(1111049686);
+emit_32(3255607309);
+emit_32(1121120289);
+emit_32(1110465000);
+emit_32(3255607309);
+emit_32(1121632256);
+emit_32(1110143926);
+emit_32(3255607309);
+emit_32(1122144223);
+emit_32(1110128565);
+emit_32(3255607309);
+emit_32(1122656322);
+emit_32(1110170613);
+emit_32(3255607309);
+emit_32(1123168289);
+emit_32(1110002133);
+emit_32(3255607309);
+emit_32(1123680256);
+emit_32(1109827938);
+emit_32(3255607309);
+emit_32(1124132848);
+emit_32(1109697652);
+emit_32(3255607309);
+emit_32(1124388897);
+emit_32(1109285929);
+emit_32(3255607309);
+emit_32(1124644880);
+emit_32(1109015973);
+emit_32(3255607309);
+emit_32(1124900864);
+emit_32(1108853103);
+emit_32(3255607309);
+emit_32(1125156848);
+emit_32(1108675186);
+emit_32(3255607309);
+emit_32(1125412897);
+emit_32(1108706171);
+emit_32(3255607309);
+emit_32(1125668880);
+emit_32(1108840441);
+emit_32(3255607309);
+emit_32(1125924864);
+emit_32(1108822485);
+emit_32(3255607309);
+emit_32(1126180848);
+emit_32(1108425782);
+emit_32(3255607309);
+emit_32(1126436897);
+emit_32(1108131997);
+emit_32(3255607309);
+emit_32(1126692880);
+emit_32(1107626584);
+emit_32(3255607309);
+emit_32(1126948864);
+emit_32(1107199630);
+emit_32(3255607309);
+emit_32(1127204848);
+emit_32(1106951065);
+emit_32(3255607309);
+emit_32(1127460897);
+emit_32(1106261574);
+emit_32(3255607309);
+emit_32(1127716880);
+emit_32(1104881543);
+emit_32(3255607309);
+emit_32(1127972864);
+emit_32(1103438021);
+emit_32(3255607309);
+emit_32(1128228848);
+emit_32(1102185759);
+emit_32(3255607309);
+emit_32(1128484897);
+emit_32(1101110234);
+emit_32(3255607309);
+emit_32(1128740880);
+emit_32(1100328678);
+emit_32(3255607309);
+emit_32(1128996864);
+emit_32(1099613287);
+emit_32(3255607309);
+emit_32(1129252848);
+emit_32(1098156658);
+emit_32(3255607309);
+emit_32(1129508897);
+emit_32(1096407528);
+emit_32(3255607309);
+emit_32(1129764880);
+emit_32(1096170131);
+emit_32(3255607309);
+emit_32(1130020864);
+emit_32(1095690512);
+emit_32(3255607309);
+emit_32(1130276848);
+emit_32(1094209084);
+emit_32(3255607309);
+emit_32(1130532897);
+emit_32(1093127687);
+emit_32(3255607309);
+emit_32(1130788880);
+emit_32(1092438259);
+emit_32(3255607309);
+emit_32(1131044864);
+emit_32(1092531729);
+emit_32(3255607309);
+emit_32(1131300848);
+emit_32(1093627753);
+emit_32(3255607309);
+emit_32(1131556897);
+emit_32(1094279863);
+emit_32(3255607309);
+emit_32(1131812880);
+emit_32(1094536449);
+emit_32(3255607309);
+emit_32(1132068864);
+emit_32(1094652422);
+emit_32(3255607309);
+emit_32(1081737216);
+emit_32(1114612538);
+emit_32(3256631296);
+emit_32(1090125824);
+emit_32(1114274713);
+emit_32(3256631296);
+emit_32(1094418484);
+emit_32(1114042532);
+emit_32(3256631296);
+emit_32(1098514432);
+emit_32(1114371758);
+emit_32(3256631296);
+emit_32(1100759066);
+emit_32(1114654061);
+emit_32(3256631296);
+emit_32(1102807040);
+emit_32(1114778344);
+emit_32(3256631296);
+emit_32(1104855066);
+emit_32(1114758762);
+emit_32(3256631296);
+emit_32(1106903040);
+emit_32(1114526817);
+emit_32(3256631296);
+emit_32(1108123661);
+emit_32(1114218640);
+emit_32(3256631296);
+emit_32(1109147648);
+emit_32(1113983497);
+emit_32(3256631296);
+emit_32(1110171661);
+emit_32(1114023684);
+emit_32(3256631296);
+emit_32(1111195648);
+emit_32(1114065102);
+emit_32(3256631296);
+emit_32(1112219661);
+emit_32(1113899585);
+emit_32(3256631296);
+emit_32(1113243648);
+emit_32(1113503538);
+emit_32(3256631296);
+emit_32(1114267661);
+emit_32(1113409769);
+emit_32(3256631296);
+emit_32(1115291648);
+emit_32(1113402665);
+emit_32(3256631296);
+emit_32(1116000263);
+emit_32(1113537931);
+emit_32(3256631296);
+emit_32(1116512256);
+emit_32(1113144426);
+emit_32(3256631296);
+emit_32(1117024263);
+emit_32(1112966772);
+emit_32(3256631296);
+emit_32(1117536256);
+emit_32(1112729086);
+emit_32(3256631296);
+emit_32(1118048263);
+emit_32(1112420463);
+emit_32(3256631296);
+emit_32(1118560256);
+emit_32(1112416322);
+emit_32(3256631296);
+emit_32(1119072263);
+emit_32(1112175306);
+emit_32(3256631296);
+emit_32(1119584256);
+emit_32(1112112733);
+emit_32(3256631296);
+emit_32(1120096263);
+emit_32(1111723265);
+emit_32(3256631296);
+emit_32(1120608322);
+emit_32(1111230539);
+emit_32(3256631296);
+emit_32(1121120289);
+emit_32(1110568521);
+emit_32(3256631296);
+emit_32(1121632256);
+emit_32(1110333220);
+emit_32(3256631296);
+emit_32(1122144223);
+emit_32(1110249780);
+emit_32(3256631296);
+emit_32(1122656322);
+emit_32(1110285117);
+emit_32(3256631296);
+emit_32(1123168289);
+emit_32(1109907735);
+emit_32(3256631296);
+emit_32(1123680256);
+emit_32(1109777213);
+emit_32(3256631296);
+emit_32(1124132848);
+emit_32(1109451630);
+emit_32(3256631296);
+emit_32(1124388897);
+emit_32(1109111184);
+emit_32(3256631296);
+emit_32(1124644880);
+emit_32(1108792102);
+emit_32(3256631296);
+emit_32(1124900864);
+emit_32(1108776190);
+emit_32(3256631296);
+emit_32(1125156848);
+emit_32(1108834805);
+emit_32(3256631296);
+emit_32(1125412897);
+emit_32(1108715477);
+emit_32(3256631296);
+emit_32(1125668880);
+emit_32(1108660453);
+emit_32(3256631296);
+emit_32(1125924864);
+emit_32(1108548623);
+emit_32(3256631296);
+emit_32(1126180848);
+emit_32(1108317621);
+emit_32(3256631296);
+emit_32(1126436897);
+emit_32(1107958091);
+emit_32(3256631296);
+emit_32(1126692880);
+emit_32(1107488198);
+emit_32(3256631296);
+emit_32(1126948864);
+emit_32(1107323624);
+emit_32(3256631296);
+emit_32(1127204848);
+emit_32(1106940264);
+emit_32(3256631296);
+emit_32(1127460897);
+emit_32(1106131026);
+emit_32(3256631296);
+emit_32(1127716880);
+emit_32(1104537505);
+emit_32(3256631296);
+emit_32(1127972864);
+emit_32(1103113277);
+emit_32(3256631296);
+emit_32(1128228848);
+emit_32(1102198604);
+emit_32(3256631296);
+emit_32(1128484897);
+emit_32(1101660003);
+emit_32(3256631296);
+emit_32(1128740880);
+emit_32(1100980106);
+emit_32(3256631296);
+emit_32(1128996864);
+emit_32(1100131808);
+emit_32(3256631296);
+emit_32(1129252848);
+emit_32(1099325034);
+emit_32(3256631296);
+emit_32(1129508897);
+emit_32(1097933521);
+emit_32(3256631296);
+emit_32(1129764880);
+emit_32(1096350800);
+emit_32(3256631296);
+emit_32(1130020864);
+emit_32(1095937976);
+emit_32(3256631296);
+emit_32(1130276848);
+emit_32(1093950924);
+emit_32(3256631296);
+emit_32(1130532897);
+emit_32(1093143101);
+emit_32(3256631296);
+emit_32(1130788880);
+emit_32(1092323492);
+emit_32(3256631296);
+emit_32(1131044864);
+emit_32(1092516462);
+emit_32(3256631296);
+emit_32(1131300848);
+emit_32(1093374417);
+emit_32(3256631296);
+emit_32(1131556897);
+emit_32(1093934567);
+emit_32(3256631296);
+emit_32(1131812880);
+emit_32(1094793141);
+emit_32(3256631296);
+emit_32(1132068864);
+emit_32(1094610584);
+emit_32(3256631296);
+emit_32(1081737216);
+emit_32(1114510642);
+emit_32(3257655309);
+emit_32(1090125824);
+emit_32(1114177090);
+emit_32(3257655309);
+emit_32(1094418484);
+emit_32(1114130088);
+emit_32(3257655309);
+emit_32(1098514432);
+emit_32(1114485503);
+emit_32(3257655309);
+emit_32(1100759066);
+emit_32(1114774202);
+emit_32(3257655309);
+emit_32(1102807040);
+emit_32(1114811400);
+emit_32(3257655309);
+emit_32(1104855066);
+emit_32(1114642894);
+emit_32(3257655309);
+emit_32(1106903040);
+emit_32(1114125710);
+emit_32(3257655309);
+emit_32(1108123661);
+emit_32(1113782380);
+emit_32(3257655309);
+emit_32(1109147648);
+emit_32(1113903464);
+emit_32(3257655309);
+emit_32(1110171661);
+emit_32(1113893372);
+emit_32(3257655309);
+emit_32(1111195648);
+emit_32(1113835831);
+emit_32(3257655309);
+emit_32(1112219661);
+emit_32(1113519056);
+emit_32(3257655309);
+emit_32(1113243648);
+emit_32(1113402219);
+emit_32(3257655309);
+emit_32(1114267661);
+emit_32(1113222650);
+emit_32(3257655309);
+emit_32(1115291648);
+emit_32(1113112760);
+emit_32(3257655309);
+emit_32(1116000263);
+emit_32(1112977441);
+emit_32(3257655309);
+emit_32(1116512256);
+emit_32(1112883121);
+emit_32(3257655309);
+emit_32(1117024263);
+emit_32(1112823615);
+emit_32(3257655309);
+emit_32(1117536256);
+emit_32(1112700957);
+emit_32(3257655309);
+emit_32(1118048263);
+emit_32(1112438473);
+emit_32(3257655309);
+emit_32(1118560256);
+emit_32(1112053645);
+emit_32(3257655309);
+emit_32(1119072263);
+emit_32(1111879136);
+emit_32(3257655309);
+emit_32(1119584256);
+emit_32(1112020641);
+emit_32(3257655309);
+emit_32(1120096263);
+emit_32(1111750895);
+emit_32(3257655309);
+emit_32(1120608322);
+emit_32(1111255810);
+emit_32(3257655309);
+emit_32(1121120289);
+emit_32(1110557852);
+emit_32(3257655309);
+emit_32(1121632256);
+emit_32(1110574917);
+emit_32(3257655309);
+emit_32(1122144223);
+emit_32(1110468329);
+emit_32(3257655309);
+emit_32(1122656322);
+emit_32(1110138264);
+emit_32(3257655309);
+emit_32(1123168289);
+emit_32(1110059752);
+emit_32(3257655309);
+emit_32(1123680256);
+emit_32(1109798447);
+emit_32(3257655309);
+emit_32(1124132848);
+emit_32(1109243252);
+emit_32(3257655309);
+emit_32(1124388897);
+emit_32(1109362344);
+emit_32(3257655309);
+emit_32(1124644880);
+emit_32(1109167073);
+emit_32(3257655309);
+emit_32(1124900864);
+emit_32(1109064601);
+emit_32(3257655309);
+emit_32(1125156848);
+emit_32(1108980715);
+emit_32(3257655309);
+emit_32(1125412897);
+emit_32(1108866472);
+emit_32(3257655309);
+emit_32(1125668880);
+emit_32(1108651960);
+emit_32(3257655309);
+emit_32(1125924864);
+emit_32(1108356130);
+emit_32(3257655309);
+emit_32(1126180848);
+emit_32(1108103240);
+emit_32(3257655309);
+emit_32(1126436897);
+emit_32(1107651828);
+emit_32(3257655309);
+emit_32(1126692880);
+emit_32(1107336154);
+emit_32(3257655309);
+emit_32(1126948864);
+emit_32(1106756135);
+emit_32(3257655309);
+emit_32(1127204848);
+emit_32(1106100145);
+emit_32(3257655309);
+emit_32(1127460897);
+emit_32(1105225790);
+emit_32(3257655309);
+emit_32(1127716880);
+emit_32(1104058987);
+emit_32(3257655309);
+emit_32(1127972864);
+emit_32(1103547702);
+emit_32(3257655309);
+emit_32(1128228848);
+emit_32(1102526860);
+emit_32(3257655309);
+emit_32(1128484897);
+emit_32(1101431308);
+emit_32(3257655309);
+emit_32(1128740880);
+emit_32(1100829216);
+emit_32(3257655309);
+emit_32(1128996864);
+emit_32(1100205418);
+emit_32(3257655309);
+emit_32(1129252848);
+emit_32(1099550373);
+emit_32(3257655309);
+emit_32(1129508897);
+emit_32(1098506148);
+emit_32(3257655309);
+emit_32(1129764880);
+emit_32(1096071564);
+emit_32(3257655309);
+emit_32(1130020864);
+emit_32(1095937976);
+emit_32(3257655309);
+emit_32(1130276848);
+emit_32(1093431145);
+emit_32(3257655309);
+emit_32(1130532897);
+emit_32(1092220816);
+emit_32(3257655309);
+emit_32(1130788880);
+emit_32(1091857117);
+emit_32(3257655309);
+emit_32(1131044864);
+emit_32(1092062974);
+emit_32(3257655309);
+emit_32(1131300848);
+emit_32(1092869004);
+emit_32(3257655309);
+emit_32(1131556897);
+emit_32(1094057460);
+emit_32(3257655309);
+emit_32(1131812880);
+emit_32(1093644845);
+emit_32(3257655309);
+emit_32(1132068864);
+emit_32(1092544669);
+emit_32(3257655309);
+emit_32(1081737216);
+emit_32(1114350184);
+emit_32(3258679296);
+emit_32(1090125824);
+emit_32(1114346619);
+emit_32(3258679296);
+emit_32(1094418484);
+emit_32(1114421513);
+emit_32(3258679296);
+emit_32(1098514432);
+emit_32(1114700304);
+emit_32(3258679296);
+emit_32(1100759066);
+emit_32(1114796563);
+emit_32(3258679296);
+emit_32(1102807040);
+emit_32(1114621582);
+emit_32(3258679296);
+emit_32(1104855066);
+emit_32(1114296549);
+emit_32(3258679296);
+emit_32(1106903040);
+emit_32(1114209753);
+emit_32(3258679296);
+emit_32(1108123661);
+emit_32(1113856567);
+emit_32(3258679296);
+emit_32(1109147648);
+emit_32(1113867944);
+emit_32(3258679296);
+emit_32(1110171661);
+emit_32(1113863907);
+emit_32(3258679296);
+emit_32(1111195648);
+emit_32(1113532976);
+emit_32(3258679296);
+emit_32(1112219661);
+emit_32(1113290808);
+emit_32(3258679296);
+emit_32(1113243648);
+emit_32(1113017942);
+emit_32(3258679296);
+emit_32(1114267661);
+emit_32(1112948867);
+emit_32(3258679296);
+emit_32(1115291648);
+emit_32(1112695872);
+emit_32(3258679296);
+emit_32(1116000263);
+emit_32(1112643627);
+emit_32(3258679296);
+emit_32(1116512256);
+emit_32(1112588707);
+emit_32(3258679296);
+emit_32(1117024263);
+emit_32(1112603833);
+emit_32(3258679296);
+emit_32(1117536256);
+emit_32(1112628213);
+emit_32(3258679296);
+emit_32(1118048263);
+emit_32(1112273715);
+emit_32(3258679296);
+emit_32(1118560256);
+emit_32(1111859449);
+emit_32(3258679296);
+emit_32(1119072263);
+emit_32(1111576936);
+emit_32(3258679296);
+emit_32(1119584256);
+emit_32(1111726726);
+emit_32(3258679296);
+emit_32(1120096263);
+emit_32(1111402296);
+emit_32(3258679296);
+emit_32(1120608322);
+emit_32(1110549489);
+emit_32(3258679296);
+emit_32(1121120289);
+emit_32(1110448511);
+emit_32(3258679296);
+emit_32(1121632256);
+emit_32(1110373695);
+emit_32(3258679296);
+emit_32(1122144223);
+emit_32(1110467333);
+emit_32(3258679296);
+emit_32(1122656322);
+emit_32(1110274028);
+emit_32(3258679296);
+emit_32(1123168289);
+emit_32(1109946532);
+emit_32(3258679296);
+emit_32(1123680256);
+emit_32(1109626795);
+emit_32(3258679296);
+emit_32(1124132848);
+emit_32(1109494622);
+emit_32(3258679296);
+emit_32(1124388897);
+emit_32(1109413069);
+emit_32(3258679296);
+emit_32(1124644880);
+emit_32(1109297647);
+emit_32(3258679296);
+emit_32(1124900864);
+emit_32(1109062294);
+emit_32(3258679296);
+emit_32(1125156848);
+emit_32(1108844007);
+emit_32(3258679296);
+emit_32(1125412897);
+emit_32(1108568860);
+emit_32(3258679296);
+emit_32(1125668880);
+emit_32(1108450004);
+emit_32(3258679296);
+emit_32(1125924864);
+emit_32(1108186943);
+emit_32(3258679296);
+emit_32(1126180848);
+emit_32(1107845369);
+emit_32(3258679296);
+emit_32(1126436897);
+emit_32(1107362972);
+emit_32(3258679296);
+emit_32(1126692880);
+emit_32(1106252189);
+emit_32(3258679296);
+emit_32(1126948864);
+emit_32(1105829298);
+emit_32(3258679296);
+emit_32(1127204848);
+emit_32(1105218083);
+emit_32(3258679296);
+emit_32(1127460897);
+emit_32(1104523506);
+emit_32(3258679296);
+emit_32(1127716880);
+emit_32(1104128351);
+emit_32(3258679296);
+emit_32(1127972864);
+emit_32(1103796214);
+emit_32(3258679296);
+emit_32(1128228848);
+emit_32(1103027818);
+emit_32(3258679296);
+emit_32(1128484897);
+emit_32(1101322309);
+emit_32(3258679296);
+emit_32(1128740880);
+emit_32(1100681576);
+emit_32(3258679296);
+emit_32(1128996864);
+emit_32(1099668023);
+emit_32(3258679296);
+emit_32(1129252848);
+emit_32(1099208380);
+emit_32(3258679296);
+emit_32(1129508897);
+emit_32(1097801400);
+emit_32(3258679296);
+emit_32(1129764880);
+emit_32(1095333472);
+emit_32(3258679296);
+emit_32(1130020864);
+emit_32(1094540329);
+emit_32(3258679296);
+emit_32(1130276848);
+emit_32(1092787739);
+emit_32(3258679296);
+emit_32(1130532897);
+emit_32(1092315051);
+emit_32(3258679296);
+emit_32(1130788880);
+emit_32(1091861091);
+emit_32(3258679296);
+emit_32(1131044864);
+emit_32(1091047459);
+emit_32(3258679296);
+emit_32(1131300848);
+emit_32(1091787586);
+emit_32(3258679296);
+emit_32(1131556897);
+emit_32(1091795230);
+emit_32(3258679296);
+emit_32(1131812880);
+emit_32(1091987980);
+emit_32(3258679296);
+emit_32(1132068864);
+emit_32(1091100066);
+emit_32(3258679296);
+emit_32(1081737216);
+emit_32(1114597202);
+emit_32(3259703309);
+emit_32(1090125824);
+emit_32(1114535127);
+emit_32(3259703309);
+emit_32(1094418484);
+emit_32(1114569520);
+emit_32(3259703309);
+emit_32(1098514432);
+emit_32(1114747935);
+emit_32(3259703309);
+emit_32(1100759066);
+emit_32(1114487233);
+emit_32(3259703309);
+emit_32(1102807040);
+emit_32(1114382795);
+emit_32(3259703309);
+emit_32(1104855066);
+emit_32(1113996919);
+emit_32(3259703309);
+emit_32(1106903040);
+emit_32(1114099181);
+emit_32(3259703309);
+emit_32(1108123661);
+emit_32(1113852163);
+emit_32(3259703309);
+emit_32(1109147648);
+emit_32(1113652435);
+emit_32(3259703309);
+emit_32(1110171661);
+emit_32(1113551117);
+emit_32(3259703309);
+emit_32(1111195648);
+emit_32(1113386543);
+emit_32(3259703309);
+emit_32(1112219661);
+emit_32(1113298436);
+emit_32(3259703309);
+emit_32(1113243648);
+emit_32(1112846185);
+emit_32(3259703309);
+emit_32(1114267661);
+emit_32(1112699621);
+emit_32(3259703309);
+emit_32(1115291648);
+emit_32(1112253320);
+emit_32(3259703309);
+emit_32(1116000263);
+emit_32(1112228338);
+emit_32(3259703309);
+emit_32(1116512256);
+emit_32(1112085679);
+emit_32(3259703309);
+emit_32(1117024263);
+emit_32(1112407068);
+emit_32(3259703309);
+emit_32(1117536256);
+emit_32(1112221391);
+emit_32(3259703309);
+emit_32(1118048263);
+emit_32(1111896936);
+emit_32(3259703309);
+emit_32(1118560256);
+emit_32(1111579322);
+emit_32(3259703309);
+emit_32(1119072263);
+emit_32(1111494309);
+emit_32(3259703309);
+emit_32(1119584256);
+emit_32(1111163588);
+emit_32(3259703309);
+emit_32(1120096263);
+emit_32(1110845004);
+emit_32(3259703309);
+emit_32(1120608322);
+emit_32(1110534835);
+emit_32(3259703309);
+emit_32(1121120289);
+emit_32(1110661294);
+emit_32(3259703309);
+emit_32(1121632256);
+emit_32(1110709161);
+emit_32(3259703309);
+emit_32(1122144223);
+emit_32(1110566843);
+emit_32(3259703309);
+emit_32(1122656322);
+emit_32(1110304385);
+emit_32(3259703309);
+emit_32(1123168289);
+emit_32(1109925298);
+emit_32(3259703309);
+emit_32(1123680256);
+emit_32(1109647897);
+emit_32(3259703309);
+emit_32(1124132848);
+emit_32(1109489300);
+emit_32(3259703309);
+emit_32(1124388897);
+emit_32(1109413541);
+emit_32(3259703309);
+emit_32(1124644880);
+emit_32(1109402137);
+emit_32(3259703309);
+emit_32(1124900864);
+emit_32(1108939034);
+emit_32(3259703309);
+emit_32(1125156848);
+emit_32(1108484450);
+emit_32(3259703309);
+emit_32(1125412897);
+emit_32(1108297200);
+emit_32(3259703309);
+emit_32(1125668880);
+emit_32(1108185815);
+emit_32(3259703309);
+emit_32(1125924864);
+emit_32(1108077104);
+emit_32(3259703309);
+emit_32(1126180848);
+emit_32(1107688659);
+emit_32(3259703309);
+emit_32(1126436897);
+emit_32(1107166075);
+emit_32(3259703309);
+emit_32(1126692880);
+emit_32(1105985012);
+emit_32(3259703309);
+emit_32(1126948864);
+emit_32(1104765465);
+emit_32(3259703309);
+emit_32(1127204848);
+emit_32(1103884766);
+emit_32(3259703309);
+emit_32(1127460897);
+emit_32(1103770157);
+emit_32(3259703309);
+emit_32(1127716880);
+emit_32(1103747613);
+emit_32(3259703309);
+emit_32(1127972864);
+emit_32(1103380349);
+emit_32(3259703309);
+emit_32(1128228848);
+emit_32(1102807669);
+emit_32(3259703309);
+emit_32(1128484897);
+emit_32(1101721240);
+emit_32(3259703309);
+emit_32(1128740880);
+emit_32(1100629095);
+emit_32(3259703309);
+emit_32(1128996864);
+emit_32(1099835323);
+emit_32(3259703309);
+emit_32(1129252848);
+emit_32(1098920598);
+emit_32(3259703309);
+emit_32(1129508897);
+emit_32(1096752929);
+emit_32(3259703309);
+emit_32(1129764880);
+emit_32(1095066609);
+emit_32(3259703309);
+emit_32(1130020864);
+emit_32(1093563371);
+emit_32(3259703309);
+emit_32(1130276848);
+emit_32(1092693157);
+emit_32(3259703309);
+emit_32(1130532897);
+emit_32(1091653725);
+emit_32(3259703309);
+emit_32(1130788880);
+emit_32(1091615085);
+emit_32(3259703309);
+emit_32(1131044864);
+emit_32(1091394161);
+emit_32(3259703309);
+emit_32(1131300848);
+emit_32(1091605134);
+emit_32(3259703309);
+emit_32(1131556897);
+emit_32(1091638730);
+emit_32(3259703309);
+emit_32(1131812880);
+emit_32(1091599786);
+emit_32(3259703309);
+emit_32(1132068864);
+emit_32(1092266859);
+emit_32(3259703309);
+emit_32(1081737216);
+emit_32(1114739258);
+emit_32(3260727296);
+emit_32(1090125824);
+emit_32(1114878378);
+emit_32(3260727296);
+emit_32(1094418484);
+emit_32(1114870802);
+emit_32(3260727296);
+emit_32(1098514432);
+emit_32(1114770794);
+emit_32(3260727296);
+emit_32(1100759066);
+emit_32(1114231276);
+emit_32(3260727296);
+emit_32(1102807040);
+emit_32(1114104450);
+emit_32(3260727296);
+emit_32(1104855066);
+emit_32(1113868626);
+emit_32(3260727296);
+emit_32(1106903040);
+emit_32(1113833393);
+emit_32(3260727296);
+emit_32(1108123661);
+emit_32(1113996840);
+emit_32(3260727296);
+emit_32(1109147648);
+emit_32(1113765393);
+emit_32(3260727296);
+emit_32(1110171661);
+emit_32(1113650627);
+emit_32(3260727296);
+emit_32(1111195648);
+emit_32(1113342896);
+emit_32(3260727296);
+emit_32(1112219661);
+emit_32(1113156380);
+emit_32(3260727296);
+emit_32(1113243648);
+emit_32(1112582154);
+emit_32(3260727296);
+emit_32(1114267661);
+emit_32(1112346277);
+emit_32(3260727296);
+emit_32(1115291648);
+emit_32(1111870249);
+emit_32(3260727296);
+emit_32(1116000263);
+emit_32(1111605930);
+emit_32(3260727296);
+emit_32(1116512256);
+emit_32(1111495305);
+emit_32(3260727296);
+emit_32(1117024263);
+emit_32(1111701219);
+emit_32(3260727296);
+emit_32(1117536256);
+emit_32(1111545768);
+emit_32(3260727296);
+emit_32(1118048263);
+emit_32(1111442876);
+emit_32(3260727296);
+emit_32(1118560256);
+emit_32(1111332802);
+emit_32(3260727296);
+emit_32(1119072263);
+emit_32(1111091472);
+emit_32(3260727296);
+emit_32(1119584256);
+emit_32(1110805001);
+emit_32(3260727296);
+emit_32(1120096263);
+emit_32(1110581864);
+emit_32(3260727296);
+emit_32(1120608322);
+emit_32(1110742008);
+emit_32(3260727296);
+emit_32(1121120289);
+emit_32(1110855516);
+emit_32(3260727296);
+emit_32(1121632256);
+emit_32(1110816168);
+emit_32(3260727296);
+emit_32(1122144223);
+emit_32(1110551665);
+emit_32(3260727296);
+emit_32(1122656322);
+emit_32(1110342579);
+emit_32(3260727296);
+emit_32(1123168289);
+emit_32(1110183327);
+emit_32(3260727296);
+emit_32(1123680256);
+emit_32(1109713040);
+emit_32(3260727296);
+emit_32(1124132848);
+emit_32(1109405598);
+emit_32(3260727296);
+emit_32(1124388897);
+emit_32(1109483874);
+emit_32(3260727296);
+emit_32(1124644880);
+emit_32(1109243252);
+emit_32(3260727296);
+emit_32(1124900864);
+emit_32(1108683915);
+emit_32(3260727296);
+emit_32(1125156848);
+emit_32(1108334268);
+emit_32(3260727296);
+emit_32(1125412897);
+emit_32(1108021346);
+emit_32(3260727296);
+emit_32(1125668880);
+emit_32(1107650229);
+emit_32(3260727296);
+emit_32(1125924864);
+emit_32(1107734875);
+emit_32(3260727296);
+emit_32(1126180848);
+emit_32(1107447356);
+emit_32(3260727296);
+emit_32(1126436897);
+emit_32(1106611641);
+emit_32(3260727296);
+emit_32(1126692880);
+emit_32(1105656650);
+emit_32(3260727296);
+emit_32(1126948864);
+emit_32(1104580601);
+emit_32(3260727296);
+emit_32(1127204848);
+emit_32(1103477447);
+emit_32(3260727296);
+emit_32(1127460897);
+emit_32(1102867753);
+emit_32(3260727296);
+emit_32(1127716880);
+emit_32(1102847882);
+emit_32(3260727296);
+emit_32(1127972864);
+emit_32(1102763996);
+emit_32(3260727296);
+emit_32(1128228848);
+emit_32(1102458913);
+emit_32(3260727296);
+emit_32(1128484897);
+emit_32(1102197083);
+emit_32(3260727296);
+emit_32(1128740880);
+emit_32(1101514251);
+emit_32(3260727296);
+emit_32(1128996864);
+emit_32(1100242957);
+emit_32(3260727296);
+emit_32(1129252848);
+emit_32(1098935488);
+emit_32(3260727296);
+emit_32(1129508897);
+emit_32(1096397147);
+emit_32(3260727296);
+emit_32(1129764880);
+emit_32(1093735442);
+emit_32(3260727296);
+emit_32(1130020864);
+emit_32(1092509887);
+emit_32(3260727296);
+emit_32(1130276848);
+emit_32(1092214797);
+emit_32(3260727296);
+emit_32(1130532897);
+emit_32(1091179916);
+emit_32(3260727296);
+emit_32(1130788880);
+emit_32(1091523565);
+emit_32(3260727296);
+emit_32(1131044864);
+emit_32(1091405317);
+emit_32(3260727296);
+emit_32(1131300848);
+emit_32(1091481213);
+emit_32(3260727296);
+emit_32(1131556897);
+emit_32(1091769446);
+emit_32(3260727296);
+emit_32(1131812880);
+emit_32(1091742634);
+emit_32(3260727296);
+emit_32(1132068864);
+emit_32(1092008249);
+emit_32(3260727296);
+emit_32(1081737216);
+emit_32(1115049086);
+emit_32(3261751309);
+emit_32(1090125824);
+emit_32(1114962395);
+emit_32(3261751309);
+emit_32(1094418484);
+emit_32(1114740674);
+emit_32(3261751309);
+emit_32(1098514432);
+emit_32(1114486001);
+emit_32(3261751309);
+emit_32(1100759066);
+emit_32(1114250779);
+emit_32(3261751309);
+emit_32(1102807040);
+emit_32(1113755799);
+emit_32(3261751309);
+emit_32(1104855066);
+emit_32(1113604699);
+emit_32(3261751309);
+emit_32(1106903040);
+emit_32(1113715717);
+emit_32(3261751309);
+emit_32(1108123661);
+emit_32(1113733516);
+emit_32(3261751309);
+emit_32(1109147648);
+emit_32(1113783009);
+emit_32(3261751309);
+emit_32(1110171661);
+emit_32(1113496093);
+emit_32(3261751309);
+emit_32(1111195648);
+emit_32(1113237016);
+emit_32(3261751309);
+emit_32(1112219661);
+emit_32(1112990181);
+emit_32(3261751309);
+emit_32(1113243648);
+emit_32(1112521022);
+emit_32(3261751309);
+emit_32(1114267661);
+emit_32(1112125315);
+emit_32(3261751309);
+emit_32(1115291648);
+emit_32(1111604671);
+emit_32(3261751309);
+emit_32(1116000263);
+emit_32(1111264408);
+emit_32(3261751309);
+emit_32(1116512256);
+emit_32(1110967242);
+emit_32(3261751309);
+emit_32(1117024263);
+emit_32(1110960898);
+emit_32(3261751309);
+emit_32(1117536256);
+emit_32(1110766938);
+emit_32(3261751309);
+emit_32(1118048263);
+emit_32(1110773334);
+emit_32(3261751309);
+emit_32(1118560256);
+emit_32(1110772364);
+emit_32(3261751309);
+emit_32(1119072263);
+emit_32(1110784763);
+emit_32(3261751309);
+emit_32(1119584256);
+emit_32(1110671203);
+emit_32(3261751309);
+emit_32(1120096263);
+emit_32(1110537562);
+emit_32(3261751309);
+emit_32(1120608322);
+emit_32(1110731470);
+emit_32(3261751309);
+emit_32(1121120289);
+emit_32(1110870222);
+emit_32(3261751309);
+emit_32(1121632256);
+emit_32(1110602652);
+emit_32(3261751309);
+emit_32(1122144223);
+emit_32(1110529357);
+emit_32(3261751309);
+emit_32(1122656322);
+emit_32(1110527626);
+emit_32(3261751309);
+emit_32(1123168289);
+emit_32(1110155303);
+emit_32(3261751309);
+emit_32(1123680256);
+emit_32(1109558559);
+emit_32(3261751309);
+emit_32(1124132848);
+emit_32(1109729686);
+emit_32(3261751309);
+emit_32(1124388897);
+emit_32(1109466835);
+emit_32(3261751309);
+emit_32(1124644880);
+emit_32(1109238455);
+emit_32(3261751309);
+emit_32(1124900864);
+emit_32(1108631067);
+emit_32(3261751309);
+emit_32(1125156848);
+emit_32(1108053590);
+emit_32(3261751309);
+emit_32(1125412897);
+emit_32(1107431549);
+emit_32(3261751309);
+emit_32(1125668880);
+emit_32(1107275127);
+emit_32(3261751309);
+emit_32(1125924864);
+emit_32(1107085807);
+emit_32(3261751309);
+emit_32(1126180848);
+emit_32(1106875043);
+emit_32(3261751309);
+emit_32(1126436897);
+emit_32(1106465207);
+emit_32(3261751309);
+emit_32(1126692880);
+emit_32(1105739330);
+emit_32(3261751309);
+emit_32(1126948864);
+emit_32(1104828380);
+emit_32(3261751309);
+emit_32(1127204848);
+emit_32(1104194306);
+emit_32(3261751309);
+emit_32(1127460897);
+emit_32(1103488510);
+emit_32(3261751309);
+emit_32(1127716880);
+emit_32(1102913680);
+emit_32(3261751309);
+emit_32(1127972864);
+emit_32(1102738044);
+emit_32(3261751309);
+emit_32(1128228848);
+emit_32(1102513753);
+emit_32(3261751309);
+emit_32(1128484897);
+emit_32(1102220624);
+emit_32(3261751309);
+emit_32(1128740880);
+emit_32(1101685640);
+emit_32(3261751309);
+emit_32(1128996864);
+emit_32(1100932081);
+emit_32(3261751309);
+emit_32(1129252848);
+emit_32(1099376414);
+emit_32(3261751309);
+emit_32(1129508897);
+emit_32(1096550344);
+emit_32(3261751309);
+emit_32(1129764880);
+emit_32(1094603244);
+emit_32(3261751309);
+emit_32(1130020864);
+emit_32(1092245762);
+emit_32(3261751309);
+emit_32(1130276848);
+emit_32(1091851801);
+emit_32(3261751309);
+emit_32(1130532897);
+emit_32(1091990360);
+emit_32(3261751309);
+emit_32(1130788880);
+emit_32(1091469343);
+emit_32(3261751309);
+emit_32(1131044864);
+emit_32(1091186889);
+emit_32(3261751309);
+emit_32(1131300848);
+emit_32(1091680191);
+emit_32(3261751309);
+emit_32(1131556897);
+emit_32(1092249820);
+emit_32(3261751309);
+emit_32(1131812880);
+emit_32(1091787240);
+emit_32(3261751309);
+emit_32(1132068864);
+emit_32(1092823076);
+emit_32(3261751309);
+emit_32(1081737216);
+emit_32(1115189700);
+emit_32(3262775296);
+emit_32(1090125824);
+emit_32(1114804086);
+emit_32(3262775296);
+emit_32(1094418484);
+emit_32(1114524457);
+emit_32(3262775296);
+emit_32(1098514432);
+emit_32(1114431554);
+emit_32(3262775296);
+emit_32(1100759066);
+emit_32(1113978044);
+emit_32(3262775296);
+emit_32(1102807040);
+emit_32(1113530381);
+emit_32(3262775296);
+emit_32(1104855066);
+emit_32(1113581814);
+emit_32(3262775296);
+emit_32(1106903040);
+emit_32(1113583963);
+emit_32(3262775296);
+emit_32(1108123661);
+emit_32(1113510458);
+emit_32(3262775296);
+emit_32(1109147648);
+emit_32(1113580162);
+emit_32(3262775296);
+emit_32(1110171661);
+emit_32(1113244408);
+emit_32(3262775296);
+emit_32(1111195648);
+emit_32(1113012699);
+emit_32(3262775296);
+emit_32(1112219661);
+emit_32(1112648765);
+emit_32(3262775296);
+emit_32(1113243648);
+emit_32(1112238483);
+emit_32(3262775296);
+emit_32(1114267661);
+emit_32(1111804976);
+emit_32(3262775296);
+emit_32(1115291648);
+emit_32(1111412362);
+emit_32(3262775296);
+emit_32(1116000263);
+emit_32(1110827074);
+emit_32(3262775296);
+emit_32(1116512256);
+emit_32(1110530694);
+emit_32(3262775296);
+emit_32(1117024263);
+emit_32(1110239399);
+emit_32(3262775296);
+emit_32(1117536256);
+emit_32(1110405048);
+emit_32(3262775296);
+emit_32(1118048263);
+emit_32(1110532476);
+emit_32(3262775296);
+emit_32(1118560256);
+emit_32(1110521885);
+emit_32(3262775296);
+emit_32(1119072263);
+emit_32(1110500757);
+emit_32(3262775296);
+emit_32(1119584256);
+emit_32(1110457372);
+emit_32(3262775296);
+emit_32(1120096263);
+emit_32(1110371651);
+emit_32(3262775296);
+emit_32(1120608322);
+emit_32(1110583332);
+emit_32(3262775296);
+emit_32(1121120289);
+emit_32(1110579793);
+emit_32(3262775296);
+emit_32(1121632256);
+emit_32(1110326510);
+emit_32(3262775296);
+emit_32(1122144223);
+emit_32(1110576044);
+emit_32(3262775296);
+emit_32(1122656322);
+emit_32(1110255731);
+emit_32(3262775296);
+emit_32(1123168289);
+emit_32(1109817767);
+emit_32(3262775296);
+emit_32(1123680256);
+emit_32(1109393120);
+emit_32(3262775296);
+emit_32(1124132848);
+emit_32(1109645407);
+emit_32(3262775296);
+emit_32(1124388897);
+emit_32(1109352881);
+emit_32(3262775296);
+emit_32(1124644880);
+emit_32(1109118131);
+emit_32(3262775296);
+emit_32(1124900864);
+emit_32(1108538950);
+emit_32(3262775296);
+emit_32(1125156848);
+emit_32(1108056028);
+emit_32(3262775296);
+emit_32(1125412897);
+emit_32(1107693981);
+emit_32(3262775296);
+emit_32(1125668880);
+emit_32(1107060169);
+emit_32(3262775296);
+emit_32(1125924864);
+emit_32(1106929307);
+emit_32(3262775296);
+emit_32(1126180848);
+emit_32(1106668945);
+emit_32(3262775296);
+emit_32(1126436897);
+emit_32(1106423893);
+emit_32(3262775296);
+emit_32(1126692880);
+emit_32(1106097157);
+emit_32(3262775296);
+emit_32(1126948864);
+emit_32(1105689628);
+emit_32(3262775296);
+emit_32(1127204848);
+emit_32(1104863822);
+emit_32(3262775296);
+emit_32(1127460897);
+emit_32(1104431232);
+emit_32(3262775296);
+emit_32(1127716880);
+emit_32(1103727061);
+emit_32(3262775296);
+emit_32(1127972864);
+emit_32(1103036154);
+emit_32(3262775296);
+emit_32(1128228848);
+emit_32(1102391227);
+emit_32(3262775296);
+emit_32(1128484897);
+emit_32(1102074977);
+emit_32(3262775296);
+emit_32(1128740880);
+emit_32(1101512049);
+emit_32(3262775296);
+emit_32(1128996864);
+emit_32(1100231108);
+emit_32(3262775296);
+emit_32(1129252848);
+emit_32(1098399508);
+emit_32(3262775296);
+emit_32(1129508897);
+emit_32(1096015571);
+emit_32(3262775296);
+emit_32(1129764880);
+emit_32(1093673366);
+emit_32(3262775296);
+emit_32(1130020864);
+emit_32(1092539069);
+emit_32(3262775296);
+emit_32(1130276848);
+emit_32(1092267928);
+emit_32(3262775296);
+emit_32(1130532897);
+emit_32(1092764041);
+emit_32(3262775296);
+emit_32(1130788880);
+emit_32(1092150519);
+emit_32(3262775296);
+emit_32(1131044864);
+emit_32(1091502594);
+emit_32(3262775296);
+emit_32(1131300848);
+emit_32(1091946980);
+emit_32(3262775296);
+emit_32(1131556897);
+emit_32(1091906568);
+emit_32(3262775296);
+emit_32(1131812880);
+emit_32(1092505546);
+emit_32(3262775296);
+emit_32(1132068864);
+emit_32(1093985842);
+emit_32(3262775296);
+emit_32(1081737216);
+emit_32(1114860919);
+emit_32(3263483911);
+emit_32(1090125824);
+emit_32(1114455068);
+emit_32(3263483911);
+emit_32(1094418484);
+emit_32(1114274320);
+emit_32(3263483911);
+emit_32(1098514432);
+emit_32(1113998492);
+emit_32(3263483911);
+emit_32(1100759066);
+emit_32(1113229912);
+emit_32(3263483911);
+emit_32(1102807040);
+emit_32(1112963364);
+emit_32(3263483911);
+emit_32(1104855066);
+emit_32(1113085549);
+emit_32(3263483911);
+emit_32(1106903040);
+emit_32(1113193500);
+emit_32(3263483911);
+emit_32(1108123661);
+emit_32(1113051339);
+emit_32(3263483911);
+emit_32(1109147648);
+emit_32(1112914631);
+emit_32(3263483911);
+emit_32(1110171661);
+emit_32(1112713593);
+emit_32(3263483911);
+emit_32(1111195648);
+emit_32(1112530774);
+emit_32(3263483911);
+emit_32(1112219661);
+emit_32(1112319538);
+emit_32(3263483911);
+emit_32(1113243648);
+emit_32(1112017836);
+emit_32(3263483911);
+emit_32(1114267661);
+emit_32(1111480022);
+emit_32(3263483911);
+emit_32(1115291648);
+emit_32(1111044889);
+emit_32(3263483911);
+emit_32(1116000263);
+emit_32(1110559058);
+emit_32(3263483911);
+emit_32(1116512256);
+emit_32(1109970151);
+emit_32(3263483911);
+emit_32(1117024263);
+emit_32(1109713014);
+emit_32(3263483911);
+emit_32(1117536256);
+emit_32(1109844532);
+emit_32(3263483911);
+emit_32(1118048263);
+emit_32(1110110713);
+emit_32(3263483911);
+emit_32(1118560256);
+emit_32(1110168096);
+emit_32(3263483911);
+emit_32(1119072263);
+emit_32(1110188910);
+emit_32(3263483911);
+emit_32(1119584256);
+emit_32(1110300531);
+emit_32(3263483911);
+emit_32(1120096263);
+emit_32(1110086438);
+emit_32(3263483911);
+emit_32(1120608322);
+emit_32(1110098418);
+emit_32(3263483911);
+emit_32(1121120289);
+emit_32(1110207470);
+emit_32(3263483911);
+emit_32(1121632256);
+emit_32(1110104814);
+emit_32(3263483911);
+emit_32(1122144223);
+emit_32(1110042057);
+emit_32(3263483911);
+emit_32(1122656322);
+emit_32(1109977963);
+emit_32(3263483911);
+emit_32(1123168289);
+emit_32(1109719017);
+emit_32(3263483911);
+emit_32(1123680256);
+emit_32(1109491371);
+emit_32(3263483911);
+emit_32(1124132848);
+emit_32(1109439493);
+emit_32(3263483911);
+emit_32(1124388897);
+emit_32(1109273372);
+emit_32(3263483911);
+emit_32(1124644880);
+emit_32(1109142720);
+emit_32(3263483911);
+emit_32(1124900864);
+emit_32(1108647110);
+emit_32(3263483911);
+emit_32(1125156848);
+emit_32(1108078520);
+emit_32(3263483911);
+emit_32(1125412897);
+emit_32(1107629520);
+emit_32(3263483911);
+emit_32(1125668880);
+emit_32(1107405963);
+emit_32(3263483911);
+emit_32(1125924864);
+emit_32(1107180388);
+emit_32(3263483911);
+emit_32(1126180848);
+emit_32(1106634447);
+emit_32(3263483911);
+emit_32(1126436897);
+emit_32(1106537297);
+emit_32(3263483911);
+emit_32(1126692880);
+emit_32(1106021869);
+emit_32(3263483911);
+emit_32(1126948864);
+emit_32(1105710599);
+emit_32(3263483911);
+emit_32(1127204848);
+emit_32(1104910693);
+emit_32(3263483911);
+emit_32(1127460897);
+emit_32(1104565083);
+emit_32(3263483911);
+emit_32(1127716880);
+emit_32(1103934836);
+emit_32(3263483911);
+emit_32(1127972864);
+emit_32(1103249120);
+emit_32(3263483911);
+emit_32(1128228848);
+emit_32(1102145336);
+emit_32(3263483911);
+emit_32(1128484897);
+emit_32(1101411962);
+emit_32(3263483911);
+emit_32(1128740880);
+emit_32(1100959711);
+emit_32(3263483911);
+emit_32(1128996864);
+emit_32(1099510055);
+emit_32(3263483911);
+emit_32(1129252848);
+emit_32(1096815005);
+emit_32(3263483911);
+emit_32(1129508897);
+emit_32(1094088393);
+emit_32(3263483911);
+emit_32(1129764880);
+emit_32(1092617450);
+emit_32(3263483911);
+emit_32(1130020864);
+emit_32(1091201757);
+emit_32(3263483911);
+emit_32(1130276848);
+emit_32(1091975481);
+emit_32(3263483911);
+emit_32(1130532897);
+emit_32(1092051219);
+emit_32(3263483911);
+emit_32(1130788880);
+emit_32(1091427243);
+emit_32(3263483911);
+emit_32(1131044864);
+emit_32(1091236570);
+emit_32(3263483911);
+emit_32(1131300848);
+emit_32(1092364376);
+emit_32(3263483911);
+emit_32(1131556897);
+emit_32(1093015385);
+emit_32(3263483911);
+emit_32(1131812880);
+emit_32(1093629116);
+emit_32(3263483911);
+emit_32(1132068864);
+emit_32(1094121318);
+emit_32(3263483911);
+emit_32(1081737216);
+emit_32(1114412994);
+emit_32(3263995904);
+emit_32(1090125824);
+emit_32(1114056740);
+emit_32(3263995904);
+emit_32(1094418484);
+emit_32(1113478634);
+emit_32(3263995904);
+emit_32(1098514432);
+emit_32(1113153890);
+emit_32(3263995904);
+emit_32(1100759066);
+emit_32(1112554235);
+emit_32(3263995904);
+emit_32(1102807040);
+emit_32(1112170430);
+emit_32(3263995904);
+emit_32(1104855066);
+emit_32(1112241550);
+emit_32(3263995904);
+emit_32(1106903040);
+emit_32(1112360406);
+emit_32(3263995904);
+emit_32(1108123661);
+emit_32(1112453310);
+emit_32(3263995904);
+emit_32(1109147648);
+emit_32(1112310127);
+emit_32(3263995904);
+emit_32(1110171661);
+emit_32(1112440544);
+emit_32(3263995904);
+emit_32(1111195648);
+emit_32(1111943545);
+emit_32(3263995904);
+emit_32(1112219661);
+emit_32(1111698283);
+emit_32(3263995904);
+emit_32(1113243648);
+emit_32(1111330233);
+emit_32(3263995904);
+emit_32(1114267661);
+emit_32(1111083634);
+emit_32(3263995904);
+emit_32(1115291648);
+emit_32(1110768275);
+emit_32(3263995904);
+emit_32(1116000263);
+emit_32(1110145158);
+emit_32(3263995904);
+emit_32(1116512256);
+emit_32(1109629941);
+emit_32(3263995904);
+emit_32(1117024263);
+emit_32(1109269781);
+emit_32(3263995904);
+emit_32(1117536256);
+emit_32(1109302287);
+emit_32(3263995904);
+emit_32(1118048263);
+emit_32(1109529015);
+emit_32(3263995904);
+emit_32(1118560256);
+emit_32(1109660900);
+emit_32(3263995904);
+emit_32(1119072263);
+emit_32(1109901076);
+emit_32(3263995904);
+emit_32(1119584256);
+emit_32(1109952850);
+emit_32(3263995904);
+emit_32(1120096263);
+emit_32(1109778733);
+emit_32(3263995904);
+emit_32(1120608322);
+emit_32(1109570460);
+emit_32(3263995904);
+emit_32(1121120289);
+emit_32(1109713381);
+emit_32(3263995904);
+emit_32(1121632256);
+emit_32(1109646849);
+emit_32(3263995904);
+emit_32(1122144223);
+emit_32(1109683837);
+emit_32(3263995904);
+emit_32(1122656322);
+emit_32(1109578377);
+emit_32(3263995904);
+emit_32(1123168289);
+emit_32(1109348975);
+emit_32(3263995904);
+emit_32(1123680256);
+emit_32(1109644804);
+emit_32(3263995904);
+emit_32(1124132848);
+emit_32(1109851662);
+emit_32(3263995904);
+emit_32(1124388897);
+emit_32(1109688451);
+emit_32(3263995904);
+emit_32(1124644880);
+emit_32(1109357599);
+emit_32(3263995904);
+emit_32(1124900864);
+emit_32(1108828593);
+emit_32(3263995904);
+emit_32(1125156848);
+emit_32(1108185291);
+emit_32(3263995904);
+emit_32(1125412897);
+emit_32(1107780226);
+emit_32(3263995904);
+emit_32(1125668880);
+emit_32(1107584457);
+emit_32(3263995904);
+emit_32(1125924864);
+emit_32(1107420958);
+emit_32(3263995904);
+emit_32(1126180848);
+emit_32(1107022525);
+emit_32(3263995904);
+emit_32(1126436897);
+emit_32(1105944170);
+emit_32(3263995904);
+emit_32(1126692880);
+emit_32(1105239946);
+emit_32(3263995904);
+emit_32(1126948864);
+emit_32(1105095295);
+emit_32(3263995904);
+emit_32(1127204848);
+emit_32(1104538816);
+emit_32(3263995904);
+emit_32(1127460897);
+emit_32(1103876692);
+emit_32(3263995904);
+emit_32(1127716880);
+emit_32(1103498786);
+emit_32(3263995904);
+emit_32(1127972864);
+emit_32(1102542589);
+emit_32(3263995904);
+emit_32(1128228848);
+emit_32(1101655913);
+emit_32(3263995904);
+emit_32(1128484897);
+emit_32(1100746955);
+emit_32(3263995904);
+emit_32(1128740880);
+emit_32(1099747662);
+emit_32(3263995904);
+emit_32(1128996864);
+emit_32(1098190422);
+emit_32(3263995904);
+emit_32(1129252848);
+emit_32(1095504599);
+emit_32(3263995904);
+emit_32(1129508897);
+emit_32(1092998503);
+emit_32(3263995904);
+emit_32(1129764880);
+emit_32(1090781394);
+emit_32(3263995904);
+emit_32(1130020864);
+emit_32(1090669165);
+emit_32(3263995904);
+emit_32(1130276848);
+emit_32(1091201548);
+emit_32(3263995904);
+emit_32(1130532897);
+emit_32(1091148238);
+emit_32(3263995904);
+emit_32(1130788880);
+emit_32(1091128944);
+emit_32(3263995904);
+emit_32(1131044864);
+emit_32(1091988745);
+emit_32(3263995904);
+emit_32(1131300848);
+emit_32(1092577195);
+emit_32(3263995904);
+emit_32(1131556897);
+emit_32(1092426756);
+emit_32(3263995904);
+emit_32(1131812880);
+emit_32(1092938944);
+emit_32(3263995904);
+emit_32(1132068864);
+emit_32(1093077985);
+emit_32(3263995904);
+emit_32(1081737216);
+emit_32(1113723162);
+emit_32(3264507911);
+emit_32(1090125824);
+emit_32(1113515282);
+emit_32(3264507911);
+emit_32(1094418484);
+emit_32(1112907160);
+emit_32(3264507911);
+emit_32(1098514432);
+emit_32(1112285197);
+emit_32(3264507911);
+emit_32(1100759066);
+emit_32(1111782615);
+emit_32(3264507911);
+emit_32(1102807040);
+emit_32(1111448565);
+emit_32(3264507911);
+emit_32(1104855066);
+emit_32(1111432364);
+emit_32(3264507911);
+emit_32(1106903040);
+emit_32(1111593242);
+emit_32(3264507911);
+emit_32(1108123661);
+emit_32(1111556175);
+emit_32(3264507911);
+emit_32(1109147648);
+emit_32(1111791947);
+emit_32(3264507911);
+emit_32(1110171661);
+emit_32(1111706147);
+emit_32(3264507911);
+emit_32(1111195648);
+emit_32(1111342658);
+emit_32(3264507911);
+emit_32(1112219661);
+emit_32(1111241785);
+emit_32(3264507911);
+emit_32(1113243648);
+emit_32(1110814700);
+emit_32(3264507911);
+emit_32(1114267661);
+emit_32(1110530720);
+emit_32(3264507911);
+emit_32(1115291648);
+emit_32(1110173496);
+emit_32(3264507911);
+emit_32(1116000263);
+emit_32(1109779887);
+emit_32(3264507911);
+emit_32(1116512256);
+emit_32(1109242701);
+emit_32(3264507911);
+emit_32(1117024263);
+emit_32(1108763528);
+emit_32(3264507911);
+emit_32(1117536256);
+emit_32(1108823140);
+emit_32(3264507911);
+emit_32(1118048263);
+emit_32(1109120202);
+emit_32(3264507911);
+emit_32(1118560256);
+emit_32(1109432205);
+emit_32(3264507911);
+emit_32(1119072263);
+emit_32(1109682684);
+emit_32(3264507911);
+emit_32(1119584256);
+emit_32(1109558821);
+emit_32(3264507911);
+emit_32(1120096263);
+emit_32(1109416031);
+emit_32(3264507911);
+emit_32(1120608322);
+emit_32(1109479208);
+emit_32(3264507911);
+emit_32(1121120289);
+emit_32(1109404235);
+emit_32(3264507911);
+emit_32(1121632256);
+emit_32(1109406882);
+emit_32(3264507911);
+emit_32(1122144223);
+emit_32(1109258378);
+emit_32(3264507911);
+emit_32(1122656322);
+emit_32(1109286008);
+emit_32(3264507911);
+emit_32(1123168289);
+emit_32(1109433857);
+emit_32(3264507911);
+emit_32(1123680256);
+emit_32(1109483166);
+emit_32(3264507911);
+emit_32(1124132848);
+emit_32(1109859762);
+emit_32(3264507911);
+emit_32(1124388897);
+emit_32(1109785995);
+emit_32(3264507911);
+emit_32(1124644880);
+emit_32(1109694218);
+emit_32(3264507911);
+emit_32(1124900864);
+emit_32(1109081588);
+emit_32(3264507911);
+emit_32(1125156848);
+emit_32(1108301316);
+emit_32(3264507911);
+emit_32(1125412897);
+emit_32(1107987923);
+emit_32(3264507911);
+emit_32(1125668880);
+emit_32(1107744208);
+emit_32(3264507911);
+emit_32(1125924864);
+emit_32(1107483348);
+emit_32(3264507911);
+emit_32(1126180848);
+emit_32(1106653741);
+emit_32(3264507911);
+emit_32(1126436897);
+emit_32(1105289282);
+emit_32(3264507911);
+emit_32(1126692880);
+emit_32(1104749946);
+emit_32(3264507911);
+emit_32(1126948864);
+emit_32(1104530532);
+emit_32(3264507911);
+emit_32(1127204848);
+emit_32(1104035552);
+emit_32(3264507911);
+emit_32(1127460897);
+emit_32(1103561123);
+emit_32(3264507911);
+emit_32(1127716880);
+emit_32(1102839493);
+emit_32(3264507911);
+emit_32(1127972864);
+emit_32(1102745908);
+emit_32(3264507911);
+emit_32(1128228848);
+emit_32(1102238083);
+emit_32(3264507911);
+emit_32(1128484897);
+emit_32(1101176504);
+emit_32(3264507911);
+emit_32(1128740880);
+emit_32(1099585395);
+emit_32(3264507911);
+emit_32(1128996864);
+emit_32(1097910033);
+emit_32(3264507911);
+emit_32(1129252848);
+emit_32(1094998662);
+emit_32(3264507911);
+emit_32(1129508897);
+emit_32(1092197905);
+emit_32(3264507911);
+emit_32(1129764880);
+emit_32(1089185482);
+emit_32(3264507911);
+emit_32(1130020864);
+emit_32(1088998898);
+emit_32(3264507911);
+emit_32(1130276848);
+emit_32(1090896014);
+emit_32(3264507911);
+emit_32(1130532897);
+emit_32(1090711286);
+emit_32(3264507911);
+emit_32(1130788880);
+emit_32(1091554068);
+emit_32(3264507911);
+emit_32(1131044864);
+emit_32(1091546760);
+emit_32(3264507911);
+emit_32(1131300848);
+emit_32(1091602523);
+emit_32(3264507911);
+emit_32(1131556897);
+emit_32(1091448749);
+emit_32(3264507911);
+emit_32(1131812880);
+emit_32(1091178993);
+emit_32(3264507911);
+emit_32(1132068864);
+emit_32(1092283059);
+emit_32(3264507911);
+emit_32(1081737216);
+emit_32(1113178820);
+emit_32(3265019904);
+emit_32(1090125824);
+emit_32(1112815043);
+emit_32(3265019904);
+emit_32(1094418484);
+emit_32(1112334769);
+emit_32(3265019904);
+emit_32(1098514432);
+emit_32(1111680641);
+emit_32(3265019904);
+emit_32(1100759066);
+emit_32(1110962104);
+emit_32(3265019904);
+emit_32(1102807040);
+emit_32(1110710079);
+emit_32(3265019904);
+emit_32(1104855066);
+emit_32(1110785366);
+emit_32(3265019904);
+emit_32(1106903040);
+emit_32(1110945956);
+emit_32(3265019904);
+emit_32(1108123661);
+emit_32(1111176643);
+emit_32(3265019904);
+emit_32(1109147648);
+emit_32(1111187364);
+emit_32(3265019904);
+emit_32(1110171661);
+emit_32(1110966901);
+emit_32(3265019904);
+emit_32(1111195648);
+emit_32(1110878952);
+emit_32(3265019904);
+emit_32(1112219661);
+emit_32(1110825343);
+emit_32(3265019904);
+emit_32(1113243648);
+emit_32(1110299718);
+emit_32(3265019904);
+emit_32(1114267661);
+emit_32(1109951067);
+emit_32(3265019904);
+emit_32(1115291648);
+emit_32(1109657859);
+emit_32(3265019904);
+emit_32(1116000263);
+emit_32(1109104185);
+emit_32(3265019904);
+emit_32(1116512256);
+emit_32(1108869644);
+emit_32(3265019904);
+emit_32(1117024263);
+emit_32(1108483296);
+emit_32(3265019904);
+emit_32(1117536256);
+emit_32(1108620057);
+emit_32(3265019904);
+emit_32(1118048263);
+emit_32(1108696603);
+emit_32(3265019904);
+emit_32(1118560256);
+emit_32(1109027874);
+emit_32(3265019904);
+emit_32(1119072263);
+emit_32(1109328580);
+emit_32(3265019904);
+emit_32(1119584256);
+emit_32(1109485499);
+emit_32(3265019904);
+emit_32(1120096263);
+emit_32(1109574785);
+emit_32(3265019904);
+emit_32(1120608322);
+emit_32(1109596203);
+emit_32(3265019904);
+emit_32(1121120289);
+emit_32(1109472235);
+emit_32(3265019904);
+emit_32(1121632256);
+emit_32(1109210510);
+emit_32(3265019904);
+emit_32(1122144223);
+emit_32(1109167152);
+emit_32(3265019904);
+emit_32(1122656322);
+emit_32(1109362999);
+emit_32(3265019904);
+emit_32(1123168289);
+emit_32(1109542149);
+emit_32(3265019904);
+emit_32(1123680256);
+emit_32(1109608156);
+emit_32(3265019904);
+emit_32(1124132848);
+emit_32(1109889647);
+emit_32(3265019904);
+emit_32(1124388897);
+emit_32(1110013300);
+emit_32(3265019904);
+emit_32(1124644880);
+emit_32(1109719908);
+emit_32(3265019904);
+emit_32(1124900864);
+emit_32(1109054299);
+emit_32(3265019904);
+emit_32(1125156848);
+emit_32(1108598561);
+emit_32(3265019904);
+emit_32(1125412897);
+emit_32(1108352696);
+emit_32(3265019904);
+emit_32(1125668880);
+emit_32(1107819128);
+emit_32(3265019904);
+emit_32(1125924864);
+emit_32(1107355868);
+emit_32(3265019904);
+emit_32(1126180848);
+emit_32(1106496193);
+emit_32(3265019904);
+emit_32(1126436897);
+emit_32(1105447564);
+emit_32(3265019904);
+emit_32(1126692880);
+emit_32(1104791208);
+emit_32(3265019904);
+emit_32(1126948864);
+emit_32(1104514122);
+emit_32(3265019904);
+emit_32(1127204848);
+emit_32(1103658956);
+emit_32(3265019904);
+emit_32(1127460897);
+emit_32(1103186887);
+emit_32(3265019904);
+emit_32(1127716880);
+emit_32(1103111179);
+emit_32(3265019904);
+emit_32(1127972864);
+emit_32(1103121823);
+emit_32(3265019904);
+emit_32(1128228848);
+emit_32(1102278872);
+emit_32(3265019904);
+emit_32(1128484897);
+emit_32(1100851603);
+emit_32(3265019904);
+emit_32(1128740880);
+emit_32(1099479699);
+emit_32(3265019904);
+emit_32(1128996864);
+emit_32(1097632580);
+emit_32(3265019904);
+emit_32(1129252848);
+emit_32(1094591185);
+emit_32(3265019904);
+emit_32(1129508897);
+emit_32(1091931629);
+emit_32(3265019904);
+emit_32(1129764880);
+emit_32(1088905806);
+emit_32(3265019904);
+emit_32(1130020864);
+emit_32(1090343655);
+emit_32(3265019904);
+emit_32(1130276848);
+emit_32(1091249918);
+emit_32(3265019904);
+emit_32(1130532897);
+emit_32(1091107417);
+emit_32(3265019904);
+emit_32(1130788880);
+emit_32(1092474068);
+emit_32(3265019904);
+emit_32(1131044864);
+emit_32(1091844765);
+emit_32(3265019904);
+emit_32(1131300848);
+emit_32(1091016830);
+emit_32(3265019904);
+emit_32(1131556897);
+emit_32(1090180560);
+emit_32(3265019904);
+emit_32(1131812880);
+emit_32(1090146502);
+emit_32(3265019904);
+emit_32(1132068864);
+emit_32(1091238625);
+emit_32(3265019904);
+emit_32(1081737216);
+emit_32(1112525767);
+emit_32(3265531911);
+emit_32(1090125824);
+emit_32(1112045230);
+emit_32(3265531911);
+emit_32(1094418484);
+emit_32(1111728246);
+emit_32(3265531911);
+emit_32(1098514432);
+emit_32(1111134490);
+emit_32(3265531911);
+emit_32(1100759066);
+emit_32(1110592061);
+emit_32(3265531911);
+emit_32(1102807040);
+emit_32(1110293873);
+emit_32(3265531911);
+emit_32(1104855066);
+emit_32(1110356761);
+emit_32(3265531911);
+emit_32(1106903040);
+emit_32(1110662159);
+emit_32(3265531911);
+emit_32(1108123661);
+emit_32(1110710760);
+emit_32(3265531911);
+emit_32(1109147648);
+emit_32(1110634267);
+emit_32(3265531911);
+emit_32(1110171661);
+emit_32(1110559556);
+emit_32(3265531911);
+emit_32(1111195648);
+emit_32(1110659144);
+emit_32(3265531911);
+emit_32(1112219661);
+emit_32(1110325251);
+emit_32(3265531911);
+emit_32(1113243648);
+emit_32(1109714954);
+emit_32(3265531911);
+emit_32(1114267661);
+emit_32(1109517035);
+emit_32(3265531911);
+emit_32(1115291648);
+emit_32(1108983441);
+emit_32(3265531911);
+emit_32(1116000263);
+emit_32(1108437998);
+emit_32(3265531911);
+emit_32(1116512256);
+emit_32(1108232687);
+emit_32(3265531911);
+emit_32(1117024263);
+emit_32(1108084497);
+emit_32(3265531911);
+emit_32(1117536256);
+emit_32(1108299979);
+emit_32(3265531911);
+emit_32(1118048263);
+emit_32(1108631434);
+emit_32(3265531911);
+emit_32(1118560256);
+emit_32(1108895544);
+emit_32(3265531911);
+emit_32(1119072263);
+emit_32(1109120306);
+emit_32(3265531911);
+emit_32(1119584256);
+emit_32(1109413095);
+emit_32(3265531911);
+emit_32(1120096263);
+emit_32(1109497977);
+emit_32(3265531911);
+emit_32(1120608322);
+emit_32(1109458603);
+emit_32(3265531911);
+emit_32(1121120289);
+emit_32(1109373328);
+emit_32(3265531911);
+emit_32(1121632256);
+emit_32(1109400669);
+emit_32(3265531911);
+emit_32(1122144223);
+emit_32(1109567655);
+emit_32(3265531911);
+emit_32(1122656322);
+emit_32(1109574287);
+emit_32(3265531911);
+emit_32(1123168289);
+emit_32(1109599375);
+emit_32(3265531911);
+emit_32(1123680256);
+emit_32(1109804660);
+emit_32(3265531911);
+emit_32(1124132848);
+emit_32(1109874704);
+emit_32(3265531911);
+emit_32(1124388897);
+emit_32(1109814254);
+emit_32(3265531911);
+emit_32(1124644880);
+emit_32(1109294763);
+emit_32(3265531911);
+emit_32(1124900864);
+emit_32(1109046460);
+emit_32(3265531911);
+emit_32(1125156848);
+emit_32(1108605901);
+emit_32(3265531911);
+emit_32(1125412897);
+emit_32(1108298039);
+emit_32(3265531911);
+emit_32(1125668880);
+emit_32(1108029997);
+emit_32(3265531911);
+emit_32(1125924864);
+emit_32(1107621262);
+emit_32(3265531911);
+emit_32(1126180848);
+emit_32(1106659980);
+emit_32(3265531911);
+emit_32(1126436897);
+emit_32(1105554362);
+emit_32(3265531911);
+emit_32(1126692880);
+emit_32(1104494356);
+emit_32(3265531911);
+emit_32(1126948864);
+emit_32(1104060455);
+emit_32(3265531911);
+emit_32(1127204848);
+emit_32(1103517817);
+emit_32(3265531911);
+emit_32(1127460897);
+emit_32(1102225500);
+emit_32(3265531911);
+emit_32(1127716880);
+emit_32(1102665010);
+emit_32(3265531911);
+emit_32(1127972864);
+emit_32(1102667894);
+emit_32(3265531911);
+emit_32(1128228848);
+emit_32(1101705144);
+emit_32(3265531911);
+emit_32(1128484897);
+emit_32(1100387503);
+emit_32(3265531911);
+emit_32(1128740880);
+emit_32(1099194486);
+emit_32(3265531911);
+emit_32(1128996864);
+emit_32(1097299866);
+emit_32(3265531911);
+emit_32(1129252848);
+emit_32(1093825515);
+emit_32(3265531911);
+emit_32(1129508897);
+emit_32(1090816720);
+emit_32(3265531911);
+emit_32(1129764880);
+emit_32(1090544321);
+emit_32(3265531911);
+emit_32(1130020864);
+emit_32(1090558718);
+emit_32(3265531911);
+emit_32(1130276848);
+emit_32(1090808845);
+emit_32(3265531911);
+emit_32(1130532897);
+emit_32(1090674481);
+emit_32(3265531911);
+emit_32(1130788880);
+emit_32(1090993898);
+emit_32(3265531911);
+emit_32(1131044864);
+emit_32(1090749297);
+emit_32(3265531911);
+emit_32(1131300848);
+emit_32(1090783533);
+emit_32(3265531911);
+emit_32(1131556897);
+emit_32(1089829685);
+emit_32(3265531911);
+emit_32(1131812880);
+emit_32(1090562483);
+emit_32(3265531911);
+emit_32(1132068864);
+emit_32(1091169052);
+emit_32(3265531911);
+emit_32(1081737216);
+emit_32(1112016683);
+emit_32(3266043904);
+emit_32(1090125824);
+emit_32(1111610963);
+emit_32(3266043904);
+emit_32(1094418484);
+emit_32(1110972380);
+emit_32(3266043904);
+emit_32(1098514432);
+emit_32(1110456559);
+emit_32(3266043904);
+emit_32(1100759066);
+emit_32(1110004833);
+emit_32(3266043904);
+emit_32(1102807040);
+emit_32(1109891010);
+emit_32(3266043904);
+emit_32(1104855066);
+emit_32(1110020745);
+emit_32(3266043904);
+emit_32(1106903040);
+emit_32(1110210065);
+emit_32(3266043904);
+emit_32(1108123661);
+emit_32(1110213526);
+emit_32(3266043904);
+emit_32(1109147648);
+emit_32(1110290465);
+emit_32(3266043904);
+emit_32(1110171661);
+emit_32(1110321843);
+emit_32(3266043904);
+emit_32(1111195648);
+emit_32(1109977832);
+emit_32(3266043904);
+emit_32(1112219661);
+emit_32(1109631120);
+emit_32(3266043904);
+emit_32(1113243648);
+emit_32(1109240762);
+emit_32(3266043904);
+emit_32(1114267661);
+emit_32(1108674478);
+emit_32(3266043904);
+emit_32(1115291648);
+emit_32(1108141775);
+emit_32(3266043904);
+emit_32(1116000263);
+emit_32(1107789637);
+emit_32(3266043904);
+emit_32(1116512256);
+emit_32(1107598534);
+emit_32(3266043904);
+emit_32(1117024263);
+emit_32(1107892555);
+emit_32(3266043904);
+emit_32(1117536256);
+emit_32(1108239712);
+emit_32(3266043904);
+emit_32(1118048263);
+emit_32(1108608811);
+emit_32(3266043904);
+emit_32(1118560256);
+emit_32(1108738520);
+emit_32(3266043904);
+emit_32(1119072263);
+emit_32(1108905191);
+emit_32(3266043904);
+emit_32(1119584256);
+emit_32(1109116820);
+emit_32(3266043904);
+emit_32(1120096263);
+emit_32(1109110843);
+emit_32(3266043904);
+emit_32(1120608322);
+emit_32(1109093384);
+emit_32(3266043904);
+emit_32(1121120289);
+emit_32(1109277331);
+emit_32(3266043904);
+emit_32(1121632256);
+emit_32(1109425678);
+emit_32(3266043904);
+emit_32(1122144223);
+emit_32(1109587814);
+emit_32(3266043904);
+emit_32(1122656322);
+emit_32(1109495330);
+emit_32(3266043904);
+emit_32(1123168289);
+emit_32(1109569438);
+emit_32(3266043904);
+emit_32(1123680256);
+emit_32(1109583358);
+emit_32(3266043904);
+emit_32(1124132848);
+emit_32(1109553945);
+emit_32(3266043904);
+emit_32(1124388897);
+emit_32(1109310833);
+emit_32(3266043904);
+emit_32(1124644880);
+emit_32(1109184820);
+emit_32(3266043904);
+emit_32(1124900864);
+emit_32(1108916725);
+emit_32(3266043904);
+emit_32(1125156848);
+emit_32(1108501594);
+emit_32(3266043904);
+emit_32(1125412897);
+emit_32(1108421037);
+emit_32(3266043904);
+emit_32(1125668880);
+emit_32(1108052070);
+emit_32(3266043904);
+emit_32(1125924864);
+emit_32(1107663887);
+emit_32(3266043904);
+emit_32(1126180848);
+emit_32(1106901100);
+emit_32(3266043904);
+emit_32(1126436897);
+emit_32(1105810896);
+emit_32(3266043904);
+emit_32(1126692880);
+emit_32(1104533153);
+emit_32(3266043904);
+emit_32(1126948864);
+emit_32(1103280577);
+emit_32(3266043904);
+emit_32(1127204848);
+emit_32(1102832153);
+emit_32(3266043904);
+emit_32(1127460897);
+emit_32(1101711226);
+emit_32(3266043904);
+emit_32(1127716880);
+emit_32(1101683910);
+emit_32(3266043904);
+emit_32(1127972864);
+emit_32(1101916956);
+emit_32(3266043904);
+emit_32(1128228848);
+emit_32(1101225945);
+emit_32(3266043904);
+emit_32(1128484897);
+emit_32(1099926497);
+emit_32(3266043904);
+emit_32(1128740880);
+emit_32(1098187591);
+emit_32(3266043904);
+emit_32(1128996864);
+emit_32(1095823367);
+emit_32(3266043904);
+emit_32(1129252848);
+emit_32(1091829718);
+emit_32(3266043904);
+emit_32(1129508897);
+emit_32(1088807932);
+emit_32(3266043904);
+emit_32(1129764880);
+emit_32(1089675104);
+emit_32(3266043904);
+emit_32(1130020864);
+emit_32(1090567704);
+emit_32(3266043904);
+emit_32(1130276848);
+emit_32(1090536174);
+emit_32(3266043904);
+emit_32(1130532897);
+emit_32(1090414497);
+emit_32(3266043904);
+emit_32(1130788880);
+emit_32(1090232632);
+emit_32(3266043904);
+emit_32(1131044864);
+emit_32(1086780888);
+emit_32(3266043904);
+emit_32(1131300848);
+emit_32(1089263098);
+emit_32(3266043904);
+emit_32(1131556897);
+emit_32(1089690267);
+emit_32(3266043904);
+emit_32(1131812880);
+emit_32(1087942248);
+emit_32(3266043904);
+emit_32(1132068864);
+emit_32(1090262202);
+emit_32(3266043904);
+emit_32(1081737216);
+emit_32(1111401326);
+emit_32(3266555911);
+emit_32(1090125824);
+emit_32(1110943623);
+emit_32(3266555911);
+emit_32(1094418484);
+emit_32(1110454960);
+emit_32(3266555911);
+emit_32(1098514432);
+emit_32(1110052097);
+emit_32(3266555911);
+emit_32(1100759066);
+emit_32(1109812734);
+emit_32(3266555911);
+emit_32(1102807040);
+emit_32(1109724706);
+emit_32(3266555911);
+emit_32(1104855066);
+emit_32(1109725597);
+emit_32(3266555911);
+emit_32(1106903040);
+emit_32(1109797162);
+emit_32(3266555911);
+emit_32(1108123661);
+emit_32(1110063972);
+emit_32(3266555911);
+emit_32(1109147648);
+emit_32(1110046147);
+emit_32(3266555911);
+emit_32(1110171661);
+emit_32(1109992119);
+emit_32(3266555911);
+emit_32(1111195648);
+emit_32(1109639850);
+emit_32(3266555911);
+emit_32(1112219661);
+emit_32(1109061691);
+emit_32(3266555911);
+emit_32(1113243648);
+emit_32(1108508410);
+emit_32(3266555911);
+emit_32(1114267661);
+emit_32(1108134540);
+emit_32(3266555911);
+emit_32(1115291648);
+emit_32(1108063604);
+emit_32(3266555911);
+emit_32(1116000263);
+emit_32(1107530351);
+emit_32(3266555911);
+emit_32(1116512256);
+emit_32(1107403761);
+emit_32(3266555911);
+emit_32(1117024263);
+emit_32(1107815668);
+emit_32(3266555911);
+emit_32(1117536256);
+emit_32(1108314030);
+emit_32(3266555911);
+emit_32(1118048263);
+emit_32(1108639613);
+emit_32(3266555911);
+emit_32(1118560256);
+emit_32(1108710628);
+emit_32(3266555911);
+emit_32(1119072263);
+emit_32(1108872213);
+emit_32(3266555911);
+emit_32(1119584256);
+emit_32(1108749215);
+emit_32(3266555911);
+emit_32(1120096263);
+emit_32(1108889462);
+emit_32(3266555911);
+emit_32(1120608322);
+emit_32(1108863484);
+emit_32(3266555911);
+emit_32(1121120289);
+emit_32(1109036604);
+emit_32(3266555911);
+emit_32(1121632256);
+emit_32(1109205713);
+emit_32(3266555911);
+emit_32(1122144223);
+emit_32(1109394116);
+emit_32(3266555911);
+emit_32(1122656322);
+emit_32(1109718781);
+emit_32(3266555911);
+emit_32(1123168289);
+emit_32(1109715871);
+emit_32(3266555911);
+emit_32(1123680256);
+emit_32(1109592926);
+emit_32(3266555911);
+emit_32(1124132848);
+emit_32(1109325932);
+emit_32(3266555911);
+emit_32(1124388897);
+emit_32(1109167623);
+emit_32(3266555911);
+emit_32(1124644880);
+emit_32(1108999930);
+emit_32(3266555911);
+emit_32(1124900864);
+emit_32(1108794147);
+emit_32(3266555911);
+emit_32(1125156848);
+emit_32(1108512054);
+emit_32(3266555911);
+emit_32(1125412897);
+emit_32(1108376184);
+emit_32(3266555911);
+emit_32(1125668880);
+emit_32(1108266215);
+emit_32(3266555911);
+emit_32(1125924864);
+emit_32(1107795326);
+emit_32(3266555911);
+emit_32(1126180848);
+emit_32(1107314763);
+emit_32(3266555911);
+emit_32(1126436897);
+emit_32(1106114511);
+emit_32(3266555911);
+emit_32(1126692880);
+emit_32(1104385514);
+emit_32(3266555911);
+emit_32(1126948864);
+emit_32(1102999506);
+emit_32(3266555911);
+emit_32(1127204848);
+emit_32(1102036337);
+emit_32(3266555911);
+emit_32(1127460897);
+emit_32(1101372378);
+emit_32(3266555911);
+emit_32(1127716880);
+emit_32(1101356021);
+emit_32(3266555911);
+emit_32(1127972864);
+emit_32(1101083863);
+emit_32(3266555911);
+emit_32(1128228848);
+emit_32(1099864211);
+emit_32(3266555911);
+emit_32(1128484897);
+emit_32(1099053662);
+emit_32(3266555911);
+emit_32(1128740880);
+emit_32(1096243846);
+emit_32(3266555911);
+emit_32(1128996864);
+emit_32(1092140631);
+emit_32(3266555911);
+emit_32(1129252848);
+emit_32(1086381925);
+emit_32(3266555911);
+emit_32(1129508897);
+emit_32(1086092015);
+emit_32(3266555911);
+emit_32(1129764880);
+emit_32(1087322309);
+emit_32(3266555911);
+emit_32(1130020864);
+emit_32(1086744250);
+emit_32(3266555911);
+emit_32(1130276848);
+emit_32(1086502784);
+emit_32(3266555911);
+emit_32(1130532897);
+emit_32(1088099933);
+emit_32(3266555911);
+emit_32(1130788880);
+emit_32(1087042801);
+emit_32(3266555911);
+emit_32(1131044864);
+emit_32(1085944166);
+emit_32(3266555911);
+emit_32(1131300848);
+emit_32(1086098348);
+emit_32(3266555911);
+emit_32(1131556897);
+emit_32(1088087979);
+emit_32(3266555911);
+emit_32(1131812880);
+emit_32(1087004759);
+emit_32(3266555911);
+emit_32(1132068864);
+emit_32(1086940628);
+emit_32(3266555911);
+emit_32(1081737216);
+emit_32(1110813757);
+emit_32(3267067904);
+emit_32(1090125824);
+emit_32(1110590462);
+emit_32(3267067904);
+emit_32(1094418484);
+emit_32(1110447410);
+emit_32(3267067904);
+emit_32(1098514432);
+emit_32(1109984621);
+emit_32(3267067904);
+emit_32(1100759066);
+emit_32(1109628053);
+emit_32(3267067904);
+emit_32(1102807040);
+emit_32(1109594341);
+emit_32(3267067904);
+emit_32(1104855066);
+emit_32(1109544298);
+emit_32(3267067904);
+emit_32(1106903040);
+emit_32(1109733881);
+emit_32(3267067904);
+emit_32(1108123661);
+emit_32(1109573291);
+emit_32(3267067904);
+emit_32(1109147648);
+emit_32(1109550878);
+emit_32(3267067904);
+emit_32(1110171661);
+emit_32(1109270961);
+emit_32(3267067904);
+emit_32(1111195648);
+emit_32(1108931091);
+emit_32(3267067904);
+emit_32(1112219661);
+emit_32(1108382633);
+emit_32(3267067904);
+emit_32(1113243648);
+emit_32(1108013298);
+emit_32(3267067904);
+emit_32(1114267661);
+emit_32(1107931011);
+emit_32(3267067904);
+emit_32(1115291648);
+emit_32(1107808171);
+emit_32(3267067904);
+emit_32(1116000263);
+emit_32(1107425519);
+emit_32(3267067904);
+emit_32(1116512256);
+emit_32(1107431129);
+emit_32(3267067904);
+emit_32(1117024263);
+emit_32(1107661423);
+emit_32(3267067904);
+emit_32(1117536256);
+emit_32(1108073723);
+emit_32(3267067904);
+emit_32(1118048263);
+emit_32(1108439492);
+emit_32(3267067904);
+emit_32(1118560256);
+emit_32(1108755874);
+emit_32(3267067904);
+emit_32(1119072263);
+emit_32(1108610122);
+emit_32(3267067904);
+emit_32(1119584256);
+emit_32(1108774538);
+emit_32(3267067904);
+emit_32(1120096263);
+emit_32(1108983703);
+emit_32(3267067904);
+emit_32(1120608322);
+emit_32(1108966611);
+emit_32(3267067904);
+emit_32(1121120289);
+emit_32(1109162171);
+emit_32(3267067904);
+emit_32(1121632256);
+emit_32(1109004596);
+emit_32(3267067904);
+emit_32(1122144223);
+emit_32(1109403972);
+emit_32(3267067904);
+emit_32(1122656322);
+emit_32(1109453098);
+emit_32(3267067904);
+emit_32(1123168289);
+emit_32(1109628944);
+emit_32(3267067904);
+emit_32(1123680256);
+emit_32(1109442953);
+emit_32(3267067904);
+emit_32(1124132848);
+emit_32(1109378597);
+emit_32(3267067904);
+emit_32(1124388897);
+emit_32(1109310151);
+emit_32(3267067904);
+emit_32(1124644880);
+emit_32(1109090370);
+emit_32(3267067904);
+emit_32(1124900864);
+emit_32(1108727012);
+emit_32(3267067904);
+emit_32(1125156848);
+emit_32(1108564378);
+emit_32(3267067904);
+emit_32(1125412897);
+emit_32(1108413016);
+emit_32(3267067904);
+emit_32(1125668880);
+emit_32(1108252662);
+emit_32(3267067904);
+emit_32(1125924864);
+emit_32(1107867468);
+emit_32(3267067904);
+emit_32(1126180848);
+emit_32(1107313322);
+emit_32(3267067904);
+emit_32(1126436897);
+emit_32(1105536274);
+emit_32(3267067904);
+emit_32(1126692880);
+emit_32(1103691199);
+emit_32(3267067904);
+emit_32(1126948864);
+emit_32(1102287156);
+emit_32(3267067904);
+emit_32(1127204848);
+emit_32(1100758437);
+emit_32(3267067904);
+emit_32(1127460897);
+emit_32(1100185390);
+emit_32(3267067904);
+emit_32(1127716880);
+emit_32(1100274781);
+emit_32(3267067904);
+emit_32(1127972864);
+emit_32(1099687789);
+emit_32(3267067904);
+emit_32(1128228848);
+emit_32(1098027264);
+emit_32(3267067904);
+emit_32(1128484897);
+emit_32(1095782577);
+emit_32(3267067904);
+emit_32(1128740880);
+emit_32(1092060656);
+emit_32(3267067904);
+emit_32(1128996864);
+emit_32(1085479584);
+emit_32(3267067904);
+emit_32(1129252848);
+emit_32(1080427922);
+emit_32(3267067904);
+emit_32(1129508897);
+emit_32(1082737893);
+emit_32(3267067904);
+emit_32(1129764880);
+emit_32(1082587842);
+emit_32(3267067904);
+emit_32(1130020864);
+emit_32(1082372569);
+emit_32(3267067904);
+emit_32(1130276848);
+emit_32(1085083537);
+emit_32(3267067904);
+emit_32(1130532897);
+emit_32(1085407211);
+emit_32(3267067904);
+emit_32(1130788880);
+emit_32(1084963160);
+emit_32(3267067904);
+emit_32(1131044864);
+emit_32(1084737318);
+emit_32(3267067904);
+emit_32(1131300848);
+emit_32(1083924504);
+emit_32(3267067904);
+emit_32(1131556897);
+emit_32(1084286829);
+emit_32(3267067904);
+emit_32(1131812880);
+emit_32(1084905342);
+emit_32(3267067904);
+emit_32(1132068864);
+emit_32(1085475641);
+emit_32(3267067904);
+emit_32(1081737216);
+emit_32(1110694612);
+emit_32(3267579911);
+emit_32(1090125824);
+emit_32(1110646797);
+emit_32(3267579911);
+emit_32(1094418484);
+emit_32(1110299640);
+emit_32(3267579911);
+emit_32(1098514432);
+emit_32(1110057393);
+emit_32(3267579911);
+emit_32(1100759066);
+emit_32(1109526053);
+emit_32(3267579911);
+emit_32(1102807040);
+emit_32(1109344807);
+emit_32(3267579911);
+emit_32(1104855066);
+emit_32(1109452259);
+emit_32(3267579911);
+emit_32(1106903040);
+emit_32(1109261550);
+emit_32(3267579911);
+emit_32(1108123661);
+emit_32(1109082820);
+emit_32(3267579911);
+emit_32(1109147648);
+emit_32(1108958406);
+emit_32(3267579911);
+emit_32(1110171661);
+emit_32(1108756398);
+emit_32(3267579911);
+emit_32(1111195648);
+emit_32(1108426831);
+emit_32(3267579911);
+emit_32(1112219661);
+emit_32(1107880234);
+emit_32(3267579911);
+emit_32(1113243648);
+emit_32(1107647398);
+emit_32(3267579911);
+emit_32(1114267661);
+emit_32(1107551060);
+emit_32(3267579911);
+emit_32(1115291648);
+emit_32(1107461800);
+emit_32(3267579911);
+emit_32(1116000263);
+emit_32(1107421980);
+emit_32(3267579911);
+emit_32(1116512256);
+emit_32(1107111287);
+emit_32(3267579911);
+emit_32(1117024263);
+emit_32(1107355396);
+emit_32(3267579911);
+emit_32(1117536256);
+emit_32(1107770029);
+emit_32(3267579911);
+emit_32(1118048263);
+emit_32(1108281682);
+emit_32(3267579911);
+emit_32(1118560256);
+emit_32(1108475930);
+emit_32(3267579911);
+emit_32(1119072263);
+emit_32(1108583724);
+emit_32(3267579911);
+emit_32(1119584256);
+emit_32(1108787908);
+emit_32(3267579911);
+emit_32(1120096263);
+emit_32(1108859761);
+emit_32(3267579911);
+emit_32(1120608322);
+emit_32(1109119625);
+emit_32(3267579911);
+emit_32(1121120289);
+emit_32(1109310125);
+emit_32(3267579911);
+emit_32(1121632256);
+emit_32(1109129088);
+emit_32(3267579911);
+emit_32(1122144223);
+emit_32(1109416267);
+emit_32(3267579911);
+emit_32(1122656322);
+emit_32(1109508751);
+emit_32(3267579911);
+emit_32(1123168289);
+emit_32(1109311540);
+emit_32(3267579911);
+emit_32(1123680256);
+emit_32(1109131552);
+emit_32(3267579911);
+emit_32(1124132848);
+emit_32(1109360247);
+emit_32(3267579911);
+emit_32(1124388897);
+emit_32(1109275522);
+emit_32(3267579911);
+emit_32(1124644880);
+emit_32(1108801749);
+emit_32(3267579911);
+emit_32(1124900864);
+emit_32(1108467804);
+emit_32(3267579911);
+emit_32(1125156848);
+emit_32(1108391100);
+emit_32(3267579911);
+emit_32(1125412897);
+emit_32(1108331096);
+emit_32(3267579911);
+emit_32(1125668880);
+emit_32(1108112599);
+emit_32(3267579911);
+emit_32(1125924864);
+emit_32(1107624355);
+emit_32(3267579911);
+emit_32(1126180848);
+emit_32(1106590564);
+emit_32(3267579911);
+emit_32(1126436897);
+emit_32(1104796346);
+emit_32(3267579911);
+emit_32(1126692880);
+emit_32(1102786068);
+emit_32(3267579911);
+emit_32(1126948864);
+emit_32(1101357226);
+emit_32(3267579911);
+emit_32(1127204848);
+emit_32(1100162793);
+emit_32(3267579911);
+emit_32(1127460897);
+emit_32(1099771412);
+emit_32(3267579911);
+emit_32(1127716880);
+emit_32(1098962017);
+emit_32(3267579911);
+emit_32(1127972864);
+emit_32(1097608462);
+emit_32(3267579911);
+emit_32(1128228848);
+emit_32(1094970874);
+emit_32(3267579911);
+emit_32(1128484897);
+emit_32(1092021933);
+emit_32(3267579911);
+emit_32(1128740880);
+emit_32(1088236919);
+emit_32(3267579911);
+emit_32(1128996864);
+emit_32(1082682696);
+emit_32(3267579911);
+emit_32(1129252848);
+emit_32(1079924773);
+emit_32(3267579911);
+emit_32(1129508897);
+emit_32(1081076487);
+emit_32(3267579911);
+emit_32(1129764880);
+emit_32(1081136801);
+emit_32(3267579911);
+emit_32(1130020864);
+emit_32(1081313088);
+emit_32(3267579911);
+emit_32(1130276848);
+emit_32(1082622067);
+emit_32(3267579911);
+emit_32(1130532897);
+emit_32(1080914755);
+emit_32(3267579911);
+emit_32(1130788880);
+emit_32(1081174131);
+emit_32(3267579911);
+emit_32(1131044864);
+emit_32(1081307258);
+emit_32(3267579911);
+emit_32(1131300848);
+emit_32(1080904101);
+emit_32(3267579911);
+emit_32(1131556897);
+emit_32(1082632301);
+emit_32(3267579911);
+emit_32(1131812880);
+emit_32(1082980177);
+emit_32(3267579911);
+emit_32(1132068864);
+emit_32(1083203964);
+emit_32(3267579911);
+emit_32(1081737216);
+emit_32(1110581209);
+emit_32(3268091970);
+emit_32(1090125824);
+emit_32(1110551586);
+emit_32(3268091970);
+emit_32(1094418484);
+emit_32(1110307347);
+emit_32(3268091970);
+emit_32(1098514432);
+emit_32(1109985591);
+emit_32(3268091970);
+emit_32(1100759066);
+emit_32(1109670180);
+emit_32(3268091970);
+emit_32(1102807040);
+emit_32(1109393303);
+emit_32(3268091970);
+emit_32(1104855066);
+emit_32(1109233946);
+emit_32(3268091970);
+emit_32(1106903040);
+emit_32(1109280450);
+emit_32(3268091970);
+emit_32(1108123661);
+emit_32(1108630281);
+emit_32(3268091970);
+emit_32(1109147648);
+emit_32(1108457449);
+emit_32(3268091970);
+emit_32(1110171661);
+emit_32(1108487176);
+emit_32(3268091970);
+emit_32(1111195648);
+emit_32(1108197114);
+emit_32(3268091970);
+emit_32(1112219661);
+emit_32(1107653847);
+emit_32(3268091970);
+emit_32(1113243648);
+emit_32(1107312745);
+emit_32(3268091970);
+emit_32(1114267661);
+emit_32(1107342131);
+emit_32(3268091970);
+emit_32(1115291648);
+emit_32(1107499418);
+emit_32(3268091970);
+emit_32(1116000263);
+emit_32(1107104104);
+emit_32(3268091970);
+emit_32(1116512256);
+emit_32(1107322497);
+emit_32(3268091970);
+emit_32(1117024263);
+emit_32(1107451078);
+emit_32(3268091970);
+emit_32(1117536256);
+emit_32(1107597774);
+emit_32(3268091970);
+emit_32(1118048263);
+emit_32(1108134383);
+emit_32(3268091970);
+emit_32(1118560256);
+emit_32(1108348292);
+emit_32(3268091970);
+emit_32(1119072263);
+emit_32(1108697206);
+emit_32(3268091970);
+emit_32(1119584256);
+emit_32(1108767120);
+emit_32(3268091970);
+emit_32(1120096263);
+emit_32(1108911089);
+emit_32(3268091970);
+emit_32(1120608322);
+emit_32(1109333115);
+emit_32(3268091970);
+emit_32(1121120289);
+emit_32(1109311147);
+emit_32(3268091970);
+emit_32(1121632256);
+emit_32(1109257853);
+emit_32(3268091970);
+emit_32(1122144223);
+emit_32(1109429663);
+emit_32(3268091970);
+emit_32(1122656322);
+emit_32(1109626926);
+emit_32(3268091970);
+emit_32(1123168289);
+emit_32(1109223460);
+emit_32(3268091970);
+emit_32(1123680256);
+emit_32(1109113464);
+emit_32(3268091970);
+emit_32(1124132848);
+emit_32(1109197770);
+emit_32(3268091970);
+emit_32(1124388897);
+emit_32(1108996941);
+emit_32(3268091970);
+emit_32(1124644880);
+emit_32(1108521910);
+emit_32(3268091970);
+emit_32(1124900864);
+emit_32(1108156167);
+emit_32(3268091970);
+emit_32(1125156848);
+emit_32(1108312169);
+emit_32(3268091970);
+emit_32(1125412897);
+emit_32(1108417210);
+emit_32(3268091970);
+emit_32(1125668880);
+emit_32(1108025410);
+emit_32(3268091970);
+emit_32(1125924864);
+emit_32(1107366039);
+emit_32(3268091970);
+emit_32(1126180848);
+emit_32(1106152836);
+emit_32(3268091970);
+emit_32(1126436897);
+emit_32(1104094377);
+emit_32(3268091970);
+emit_32(1126692880);
+emit_32(1102342783);
+emit_32(3268091970);
+emit_32(1126948864);
+emit_32(1101171838);
+emit_32(3268091970);
+emit_32(1127204848);
+emit_32(1099584871);
+emit_32(3268091970);
+emit_32(1127460897);
+emit_32(1099343069);
+emit_32(3268091970);
+emit_32(1127716880);
+emit_32(1097562115);
+emit_32(3268091970);
+emit_32(1127972864);
+emit_32(1094777202);
+emit_32(3268091970);
+emit_32(1128228848);
+emit_32(1092522051);
+emit_32(3268091970);
+emit_32(1128484897);
+emit_32(1088883870);
+emit_32(3268091970);
+emit_32(1128740880);
+emit_32(1085242165);
+emit_32(3268091970);
+emit_32(1128996864);
+emit_32(1078093792);
+emit_32(3268091970);
+emit_32(1129252848);
+emit_32(1078026222);
+emit_32(3268091970);
+emit_32(1129508897);
+emit_32(1077460788);
+emit_32(3268091970);
+emit_32(1129764880);
+emit_32(1078305017);
+emit_32(3268091970);
+emit_32(1130020864);
+emit_32(1079773820);
+emit_32(3268091970);
+emit_32(1130276848);
+emit_32(1080393613);
+emit_32(3268091970);
+emit_32(1130532897);
+emit_32(1078685021);
+emit_32(3268091970);
+emit_32(1130788880);
+emit_32(1075784911);
+emit_32(3268091970);
+emit_32(1131044864);
+emit_32(1076529820);
+emit_32(3268091970);
+emit_32(1131300848);
+emit_32(1074011602);
+emit_32(3268091970);
+emit_32(1131556897);
+emit_32(1075826561);
+emit_32(3268091970);
+emit_32(1131812880);
+emit_32(1078155029);
+emit_32(3268091970);
+emit_32(1132068864);
+emit_32(1080836699);
+emit_32(3268091970);
+emit_32(1081737216);
+emit_32(1110663915);
+emit_32(3268603937);
+emit_32(1090125824);
+emit_32(1110523301);
+emit_32(3268603937);
+emit_32(1094418484);
+emit_32(1110414092);
+emit_32(3268603937);
+emit_32(1098514432);
+emit_32(1110239740);
+emit_32(3268603937);
+emit_32(1100759066);
+emit_32(1110111263);
+emit_32(3268603937);
+emit_32(1102807040);
+emit_32(1109732989);
+emit_32(3268603937);
+emit_32(1104855066);
+emit_32(1109257434);
+emit_32(3268603937);
+emit_32(1106903040);
+emit_32(1108986639);
+emit_32(3268603937);
+emit_32(1108123661);
+emit_32(1108299324);
+emit_32(3268603937);
+emit_32(1109147648);
+emit_32(1108108666);
+emit_32(3268603937);
+emit_32(1110171661);
+emit_32(1108133256);
+emit_32(3268603937);
+emit_32(1111195648);
+emit_32(1107900341);
+emit_32(3268603937);
+emit_32(1112219661);
+emit_32(1106990544);
+emit_32(3268603937);
+emit_32(1113243648);
+emit_32(1106677911);
+emit_32(3268603937);
+emit_32(1114267661);
+emit_32(1106924116);
+emit_32(3268603937);
+emit_32(1115291648);
+emit_32(1107371465);
+emit_32(3268603937);
+emit_32(1116000263);
+emit_32(1107430500);
+emit_32(3268603937);
+emit_32(1116512256);
+emit_32(1107498631);
+emit_32(3268603937);
+emit_32(1117024263);
+emit_32(1107438390);
+emit_32(3268603937);
+emit_32(1117536256);
+emit_32(1107833808);
+emit_32(3268603937);
+emit_32(1118048263);
+emit_32(1108210981);
+emit_32(3268603937);
+emit_32(1118560256);
+emit_32(1108542226);
+emit_32(3268603937);
+emit_32(1119072263);
+emit_32(1108787882);
+emit_32(3268603937);
+emit_32(1119584256);
+emit_32(1108829274);
+emit_32(3268603937);
+emit_32(1120096263);
+emit_32(1109124029);
+emit_32(3268603937);
+emit_32(1120608322);
+emit_32(1109412387);
+emit_32(3268603937);
+emit_32(1121120289);
+emit_32(1109324752);
+emit_32(3268603937);
+emit_32(1121632256);
+emit_32(1109233631);
+emit_32(3268603937);
+emit_32(1122144223);
+emit_32(1109356105);
+emit_32(3268603937);
+emit_32(1122656322);
+emit_32(1109523353);
+emit_32(3268603937);
+emit_32(1123168289);
+emit_32(1109276492);
+emit_32(3268603937);
+emit_32(1123680256);
+emit_32(1109141330);
+emit_32(3268603937);
+emit_32(1124132848);
+emit_32(1108924485);
+emit_32(3268603937);
+emit_32(1124388897);
+emit_32(1108532029);
+emit_32(3268603937);
+emit_32(1124644880);
+emit_32(1108013482);
+emit_32(3268603937);
+emit_32(1124900864);
+emit_32(1107879159);
+emit_32(3268603937);
+emit_32(1125156848);
+emit_32(1108192290);
+emit_32(3268603937);
+emit_32(1125412897);
+emit_32(1108199499);
+emit_32(3268603937);
+emit_32(1125668880);
+emit_32(1107673455);
+emit_32(3268603937);
+emit_32(1125924864);
+emit_32(1106232371);
+emit_32(3268603937);
+emit_32(1126180848);
+emit_32(1104800226);
+emit_32(3268603937);
+emit_32(1126436897);
+emit_32(1103280682);
+emit_32(3268603937);
+emit_32(1126692880);
+emit_32(1102286055);
+emit_32(3268603937);
+emit_32(1126948864);
+emit_32(1100759748);
+emit_32(3268603937);
+emit_32(1127204848);
+emit_32(1099429367);
+emit_32(3268603937);
+emit_32(1127460897);
+emit_32(1097617900);
+emit_32(3268603937);
+emit_32(1127716880);
+emit_32(1095952341);
+emit_32(3268603937);
+emit_32(1127972864);
+emit_32(1093005319);
+emit_32(3268603937);
+emit_32(1128228848);
+emit_32(1088642320);
+emit_32(3268603937);
+emit_32(1128484897);
+emit_32(1085144270);
+emit_32(3268603937);
+emit_32(1128740880);
+emit_32(1079423554);
+emit_32(3268603937);
+emit_32(1128996864);
+emit_32(1075473065);
+emit_32(3268603937);
+emit_32(1129252848);
+emit_32(1075224804);
+emit_32(3268603937);
+emit_32(1129508897);
+emit_32(1074942527);
+emit_32(3268603937);
+emit_32(1129764880);
+emit_32(1070517327);
+emit_32(3268603937);
+emit_32(1130020864);
+emit_32(1076303998);
+emit_32(3268603937);
+emit_32(1130276848);
+emit_32(1075194647);
+emit_32(3268603937);
+emit_32(1130532897);
+emit_32(1069302069);
+emit_32(3268603937);
+emit_32(1130788880);
+emit_32(1059149840);
+emit_32(3268603937);
+emit_32(1131044864);
+emit_32(1062802928);
+emit_32(3268603937);
+emit_32(1131300848);
+emit_32(1068305922);
+emit_32(3268603937);
+emit_32(1131556897);
+emit_32(1074623970);
+emit_32(3268603937);
+emit_32(1131812880);
+emit_32(1077991619);
+emit_32(3268603937);
+emit_32(1132068864);
+emit_32(1078469350);
+emit_32(3268603937);
+emit_32(1081737216);
+emit_32(1110808645);
+emit_32(3269115904);
+emit_32(1090125824);
+emit_32(1110606427);
+emit_32(3269115904);
+emit_32(1094418484);
+emit_32(1110590725);
+emit_32(3269115904);
+emit_32(1098514432);
+emit_32(1110520575);
+emit_32(3269115904);
+emit_32(1100759066);
+emit_32(1110320952);
+emit_32(3269115904);
+emit_32(1102807040);
+emit_32(1109925718);
+emit_32(3269115904);
+emit_32(1104855066);
+emit_32(1109578691);
+emit_32(3269115904);
+emit_32(1106903040);
+emit_32(1109301579);
+emit_32(3269115904);
+emit_32(1108123661);
+emit_32(1108401481);
+emit_32(3269115904);
+emit_32(1109147648);
+emit_32(1108050418);
+emit_32(3269115904);
+emit_32(1110171661);
+emit_32(1108134828);
+emit_32(3269115904);
+emit_32(1111195648);
+emit_32(1107813047);
+emit_32(3269115904);
+emit_32(1112219661);
+emit_32(1106770867);
+emit_32(3269115904);
+emit_32(1113243648);
+emit_32(1107263016);
+emit_32(3269115904);
+emit_32(1114267661);
+emit_32(1107073696);
+emit_32(3269115904);
+emit_32(1115291648);
+emit_32(1107071861);
+emit_32(3269115904);
+emit_32(1116000263);
+emit_32(1107575911);
+emit_32(3269115904);
+emit_32(1116512256);
+emit_32(1107727326);
+emit_32(3269115904);
+emit_32(1117024263);
+emit_32(1107439570);
+emit_32(3269115904);
+emit_32(1117536256);
+emit_32(1107890956);
+emit_32(3269115904);
+emit_32(1118048263);
+emit_32(1108361426);
+emit_32(3269115904);
+emit_32(1118560256);
+emit_32(1108752964);
+emit_32(3269115904);
+emit_32(1119072263);
+emit_32(1109015894);
+emit_32(3269115904);
+emit_32(1119584256);
+emit_32(1109044966);
+emit_32(3269115904);
+emit_32(1120096263);
+emit_32(1109198320);
+emit_32(3269115904);
+emit_32(1120608322);
+emit_32(1109370103);
+emit_32(3269115904);
+emit_32(1121120289);
+emit_32(1109373380);
+emit_32(3269115904);
+emit_32(1121632256);
+emit_32(1109279795);
+emit_32(3269115904);
+emit_32(1122144223);
+emit_32(1109433568);
+emit_32(3269115904);
+emit_32(1122656322);
+emit_32(1109623387);
+emit_32(3269115904);
+emit_32(1123168289);
+emit_32(1109428273);
+emit_32(3269115904);
+emit_32(1123680256);
+emit_32(1108960346);
+emit_32(3269115904);
+emit_32(1124132848);
+emit_32(1108585323);
+emit_32(3269115904);
+emit_32(1124388897);
+emit_32(1108055818);
+emit_32(3269115904);
+emit_32(1124644880);
+emit_32(1107534728);
+emit_32(3269115904);
+emit_32(1124900864);
+emit_32(1107471001);
+emit_32(3269115904);
+emit_32(1125156848);
+emit_32(1107590041);
+emit_32(3269115904);
+emit_32(1125412897);
+emit_32(1107454172);
+emit_32(3269115904);
+emit_32(1125668880);
+emit_32(1106832209);
+emit_32(3269115904);
+emit_32(1125924864);
+emit_32(1105088217);
+emit_32(3269115904);
+emit_32(1126180848);
+emit_32(1103608676);
+emit_32(3269115904);
+emit_32(1126436897);
+emit_32(1102467039);
+emit_32(3269115904);
+emit_32(1126692880);
+emit_32(1101262068);
+emit_32(3269115904);
+emit_32(1126948864);
+emit_32(1100082158);
+emit_32(3269115904);
+emit_32(1127204848);
+emit_32(1098845677);
+emit_32(3269115904);
+emit_32(1127460897);
+emit_32(1095460140);
+emit_32(3269115904);
+emit_32(1127716880);
+emit_32(1093620938);
+emit_32(3269115904);
+emit_32(1127972864);
+emit_32(1089412289);
+emit_32(3269115904);
+emit_32(1128228848);
+emit_32(1083970620);
+emit_32(3269115904);
+emit_32(1128484897);
+emit_32(1077038086);
+emit_32(3269115904);
+emit_32(1128740880);
+emit_32(1069835165);
+emit_32(3269115904);
+emit_32(1128996864);
+emit_32(1070535279);
+emit_32(3269115904);
+emit_32(1129252848);
+emit_32(1071829221);
+emit_32(3269115904);
+emit_32(1129508897);
+emit_32(1066648753);
+emit_32(3269115904);
+emit_32(1129764880);
+emit_32(1051679953);
+emit_32(3269115904);
+emit_32(1130020864);
+emit_32(1057135450);
+emit_32(3269115904);
+emit_32(1130276848);
+emit_32(1048743000);
+emit_32(3269115904);
+emit_32(1130532897);
+emit_32(3194534264);
+emit_32(3269115904);
+emit_32(1130788880);
+emit_32(3210162995);
+emit_32(3269115904);
+emit_32(1131044864);
+emit_32(3197138557);
+emit_32(3269115904);
+emit_32(1131300848);
+emit_32(1054446180);
+emit_32(3269115904);
+emit_32(1131556897);
+emit_32(1071525302);
+emit_32(3269115904);
+emit_32(1131812880);
+emit_32(1072082306);
+emit_32(3269115904);
+emit_32(1132068864);
+emit_32(1070395189);
+emit_32(3269115904);
+emit_32(1081737216);
+emit_32(1111356054);
+emit_32(3269627871);
+emit_32(1090125824);
+emit_32(1111049765);
+emit_32(3269627871);
+emit_32(1094418484);
+emit_32(1111095011);
+emit_32(3269627871);
+emit_32(1098514432);
+emit_32(1110769821);
+emit_32(3269627871);
+emit_32(1100759066);
+emit_32(1110387956);
+emit_32(3269627871);
+emit_32(1102807040);
+emit_32(1110076608);
+emit_32(3269627871);
+emit_32(1104855066);
+emit_32(1109830507);
+emit_32(3269627871);
+emit_32(1106903040);
+emit_32(1109267474);
+emit_32(3269627871);
+emit_32(1108123661);
+emit_32(1108522670);
+emit_32(3269627871);
+emit_32(1109147648);
+emit_32(1108306716);
+emit_32(3269627871);
+emit_32(1110171661);
+emit_32(1108152078);
+emit_32(3269627871);
+emit_32(1111195648);
+emit_32(1107581521);
+emit_32(3269627871);
+emit_32(1112219661);
+emit_32(1106841751);
+emit_32(3269627871);
+emit_32(1113243648);
+emit_32(1107248808);
+emit_32(3269627871);
+emit_32(1114267661);
+emit_32(1107071599);
+emit_32(3269627871);
+emit_32(1115291648);
+emit_32(1107391729);
+emit_32(3269627871);
+emit_32(1116000263);
+emit_32(1107625981);
+emit_32(3269627871);
+emit_32(1116512256);
+emit_32(1107606818);
+emit_32(3269627871);
+emit_32(1117024263);
+emit_32(1107732044);
+emit_32(3269627871);
+emit_32(1117536256);
+emit_32(1108255231);
+emit_32(3269627871);
+emit_32(1118048263);
+emit_32(1108554259);
+emit_32(3269627871);
+emit_32(1118560256);
+emit_32(1108867835);
+emit_32(3269627871);
+emit_32(1119072263);
+emit_32(1109054272);
+emit_32(3269627871);
+emit_32(1119584256);
+emit_32(1109386251);
+emit_32(3269627871);
+emit_32(1120096263);
+emit_32(1109299298);
+emit_32(3269627871);
+emit_32(1120608322);
+emit_32(1109427959);
+emit_32(3269627871);
+emit_32(1121120289);
+emit_32(1109424079);
+emit_32(3269627871);
+emit_32(1121632256);
+emit_32(1109411181);
+emit_32(3269627871);
+emit_32(1122144223);
+emit_32(1109433621);
+emit_32(3269627871);
+emit_32(1122656322);
+emit_32(1109598955);
+emit_32(3269627871);
+emit_32(1123168289);
+emit_32(1109218086);
+emit_32(3269627871);
+emit_32(1123680256);
+emit_32(1108916909);
+emit_32(3269627871);
+emit_32(1124132848);
+emit_32(1108631119);
+emit_32(3269627871);
+emit_32(1124388897);
+emit_32(1108074483);
+emit_32(3269627871);
+emit_32(1124644880);
+emit_32(1107470084);
+emit_32(3269627871);
+emit_32(1124900864);
+emit_32(1106751049);
+emit_32(3269627871);
+emit_32(1125156848);
+emit_32(1106805732);
+emit_32(3269627871);
+emit_32(1125412897);
+emit_32(1106063917);
+emit_32(3269627871);
+emit_32(1125668880);
+emit_32(1104941941);
+emit_32(3269627871);
+emit_32(1125924864);
+emit_32(1103592738);
+emit_32(3269627871);
+emit_32(1126180848);
+emit_32(1102378749);
+emit_32(3269627871);
+emit_32(1126436897);
+emit_32(1101064359);
+emit_32(3269627871);
+emit_32(1126692880);
+emit_32(1099948989);
+emit_32(3269627871);
+emit_32(1126948864);
+emit_32(1098973289);
+emit_32(3269627871);
+emit_32(1127204848);
+emit_32(1097124125);
+emit_32(3269627871);
+emit_32(1127460897);
+emit_32(1094111671);
+emit_32(3269627871);
+emit_32(1127716880);
+emit_32(1091103611);
+emit_32(3269627871);
+emit_32(1127972864);
+emit_32(1086368084);
+emit_32(3269627871);
+emit_32(1128228848);
+emit_32(1078725915);
+emit_32(3269627871);
+emit_32(1128484897);
+emit_32(1069950844);
+emit_32(3269627871);
+emit_32(1128740880);
+emit_32(1018630897);
+emit_32(3269627871);
+emit_32(1128996864);
+emit_32(3181731986);
+emit_32(3269627871);
+emit_32(1129252848);
+emit_32(3201792590);
+emit_32(3269627871);
+emit_32(1129508897);
+emit_32(3204973752);
+emit_32(3269627871);
+emit_32(1129764880);
+emit_32(3215721958);
+emit_32(3269627871);
+emit_32(1130020864);
+emit_32(3222414389);
+emit_32(3269627871);
+emit_32(1130276848);
+emit_32(3222253076);
+emit_32(3269627871);
+emit_32(1130532897);
+emit_32(3222187310);
+emit_32(3269627871);
+emit_32(1130788880);
+emit_32(3216801991);
+emit_32(3269627871);
+emit_32(1131044864);
+emit_32(3205181336);
+emit_32(3269627871);
+emit_32(1131300848);
+emit_32(3200822633);
+emit_32(3269627871);
+emit_32(1131556897);
+emit_32(3196733320);
+emit_32(3269627871);
+emit_32(1131812880);
+emit_32(3206975391);
+emit_32(3269627871);
+emit_32(1132068864);
+emit_32(1038377734);
+emit_32(3269627871);
+emit_32(1081737216);
+emit_32(1111592455);
+emit_32(3270139970);
+emit_32(1090125824);
+emit_32(1111491609);
+emit_32(3270139970);
+emit_32(1094418484);
+emit_32(1111194940);
+emit_32(3270139970);
+emit_32(1098514432);
+emit_32(1110835331);
+emit_32(3270139970);
+emit_32(1100759066);
+emit_32(1110275365);
+emit_32(3270139970);
+emit_32(1102807040);
+emit_32(1110005567);
+emit_32(3270139970);
+emit_32(1104855066);
+emit_32(1109696499);
+emit_32(3270139970);
+emit_32(1106903040);
+emit_32(1109176772);
+emit_32(3270139970);
+emit_32(1108123661);
+emit_32(1108885556);
+emit_32(3270139970);
+emit_32(1109147648);
+emit_32(1108468774);
+emit_32(3270139970);
+emit_32(1110171661);
+emit_32(1108030285);
+emit_32(3270139970);
+emit_32(1111195648);
+emit_32(1107430028);
+emit_32(3270139970);
+emit_32(1112219661);
+emit_32(1107103737);
+emit_32(3270139970);
+emit_32(1113243648);
+emit_32(1107092098);
+emit_32(3270139970);
+emit_32(1114267661);
+emit_32(1107375004);
+emit_32(3270139970);
+emit_32(1115291648);
+emit_32(1107478708);
+emit_32(3270139970);
+emit_32(1116000263);
+emit_32(1107657884);
+emit_32(3270139970);
+emit_32(1116512256);
+emit_32(1107812575);
+emit_32(3270139970);
+emit_32(1117024263);
+emit_32(1108062005);
+emit_32(3270139970);
+emit_32(1117536256);
+emit_32(1108546316);
+emit_32(3270139970);
+emit_32(1118048263);
+emit_32(1108808198);
+emit_32(3270139970);
+emit_32(1118560256);
+emit_32(1108821253);
+emit_32(3270139970);
+emit_32(1119072263);
+emit_32(1108944565);
+emit_32(3270139970);
+emit_32(1119584256);
+emit_32(1109292509);
+emit_32(3270139970);
+emit_32(1120096263);
+emit_32(1109325827);
+emit_32(3270139970);
+emit_32(1120608322);
+emit_32(1109645355);
+emit_32(3270139970);
+emit_32(1121120289);
+emit_32(1109627555);
+emit_32(3270139970);
+emit_32(1121632256);
+emit_32(1109566502);
+emit_32(3270139970);
+emit_32(1122144223);
+emit_32(1109470347);
+emit_32(3270139970);
+emit_32(1122656322);
+emit_32(1109358831);
+emit_32(3270139970);
+emit_32(1123168289);
+emit_32(1109156561);
+emit_32(3270139970);
+emit_32(1123680256);
+emit_32(1108641920);
+emit_32(3270139970);
+emit_32(1124132848);
+emit_32(1108219580);
+emit_32(3270139970);
+emit_32(1124388897);
+emit_32(1107796112);
+emit_32(3270139970);
+emit_32(1124644880);
+emit_32(1107364885);
+emit_32(3270139970);
+emit_32(1124900864);
+emit_32(1106177268);
+emit_32(3270139970);
+emit_32(1125156848);
+emit_32(1105288443);
+emit_32(3270139970);
+emit_32(1125412897);
+emit_32(1104753197);
+emit_32(3270139970);
+emit_32(1125668880);
+emit_32(1103375473);
+emit_32(3270139970);
+emit_32(1125924864);
+emit_32(1102075344);
+emit_32(3270139970);
+emit_32(1126180848);
+emit_32(1100964849);
+emit_32(3270139970);
+emit_32(1126436897);
+emit_32(1099792384);
+emit_32(3270139970);
+emit_32(1126692880);
+emit_32(1098450049);
+emit_32(3270139970);
+emit_32(1126948864);
+emit_32(1096338322);
+emit_32(3270139970);
+emit_32(1127204848);
+emit_32(1093954280);
+emit_32(3270139970);
+emit_32(1127460897);
+emit_32(1091524247);
+emit_32(3270139970);
+emit_32(1127716880);
+emit_32(1088518839);
+emit_32(3270139970);
+emit_32(1127972864);
+emit_32(1083884385);
+emit_32(3270139970);
+emit_32(1128228848);
+emit_32(1076931424);
+emit_32(3270139970);
+emit_32(1128484897);
+emit_32(1044557454);
+emit_32(3270139970);
+emit_32(1128740880);
+emit_32(3205427693);
+emit_32(3270139970);
+emit_32(1128996864);
+emit_32(3213113940);
+emit_32(3270139970);
+emit_32(1129252848);
+emit_32(3221962118);
+emit_32(3270139970);
+emit_32(1129508897);
+emit_32(3220483500);
+emit_32(3270139970);
+emit_32(1129764880);
+emit_32(3225420531);
+emit_32(3270139970);
+emit_32(1130020864);
+emit_32(3230173831);
+emit_32(3270139970);
+emit_32(1130276848);
+emit_32(3232043735);
+emit_32(3270139970);
+emit_32(1130532897);
+emit_32(3227363752);
+emit_32(3270139970);
+emit_32(1130788880);
+emit_32(3221899790);
+emit_32(3270139970);
+emit_32(1131044864);
+emit_32(3216845360);
+emit_32(3270139970);
+emit_32(1131300848);
+emit_32(3219415546);
+emit_32(3270139970);
+emit_32(1131556897);
+emit_32(3212863456);
+emit_32(3270139970);
+emit_32(1131812880);
+emit_32(3221056106);
+emit_32(3270139970);
+emit_32(1132068864);
+emit_32(3222457423);
+emit_32(3270139970);
+emit_start(Landscape04Vtx)
+emit_32(1081737216);
+emit_32(1100462372);
+emit_32(1123680256);
+emit_32(1081737216);
+emit_32(1101050728);
+emit_32(1124132848);
+emit_32(1090125824);
+emit_32(1101307000);
+emit_32(1123680256);
+emit_32(1090125824);
+emit_32(1101569144);
+emit_32(1124132848);
+emit_32(1094418484);
+emit_32(1101816870);
+emit_32(1123680256);
+emit_32(1094418484);
+emit_32(1101742788);
+emit_32(1124132848);
+emit_32(1098514432);
+emit_32(1102313580);
+emit_32(1123680256);
+emit_32(1098514432);
+emit_32(1102383625);
+emit_32(1124132848);
+emit_32(1100759066);
+emit_32(1102224504);
+emit_32(1123680256);
+emit_32(1100759066);
+emit_32(1102114927);
+emit_32(1124132848);
+emit_32(1102807040);
+emit_32(1101213834);
+emit_32(1123680256);
+emit_32(1102807040);
+emit_32(1101213309);
+emit_32(1124132848);
+emit_32(1104855066);
+emit_32(1100303408);
+emit_32(1123680256);
+emit_32(1104855066);
+emit_32(1100341209);
+emit_32(1124132848);
+emit_32(1106903040);
+emit_32(1099679610);
+emit_32(1123680256);
+emit_32(1106903040);
+emit_32(1099911345);
+emit_32(1124132848);
+emit_32(1108123661);
+emit_32(1099160984);
+emit_32(1123680256);
+emit_32(1108123661);
+emit_32(1099586129);
+emit_32(1124132848);
+emit_32(1109147648);
+emit_32(1098137259);
+emit_32(1123680256);
+emit_32(1109147648);
+emit_32(1099190030);
+emit_32(1124132848);
+emit_32(1110171661);
+emit_32(1097207906);
+emit_32(1123680256);
+emit_32(1110171661);
+emit_32(1098581751);
+emit_32(1124132848);
+emit_32(1111195648);
+emit_32(1096797074);
+emit_32(1123680256);
+emit_32(1111195648);
+emit_32(1097483053);
+emit_32(1124132848);
+emit_32(1112219661);
+emit_32(1097544709);
+emit_32(1123680256);
+emit_32(1112219661);
+emit_32(1097178022);
+emit_32(1124132848);
+emit_32(1113243648);
+emit_32(1097976408);
+emit_32(1123680256);
+emit_32(1113243648);
+emit_32(1096978688);
+emit_32(1124132848);
+emit_32(1114267661);
+emit_32(1097506541);
+emit_32(1123680256);
+emit_32(1114267661);
+emit_32(1097352610);
+emit_32(1124132848);
+emit_32(1115291648);
+emit_32(1097510945);
+emit_32(1123680256);
+emit_32(1115291648);
+emit_32(1097969906);
+emit_32(1124132848);
+emit_32(1116000263);
+emit_32(1097837262);
+emit_32(1123680256);
+emit_32(1116000263);
+emit_32(1098943509);
+emit_32(1124132848);
+emit_32(1116512256);
+emit_32(1098359872);
+emit_32(1123680256);
+emit_32(1116512256);
+emit_32(1099235380);
+emit_32(1124132848);
+emit_32(1117024263);
+emit_32(1097957533);
+emit_32(1123680256);
+emit_32(1117024263);
+emit_32(1098875037);
+emit_32(1124132848);
+emit_32(1117536256);
+emit_32(1098416705);
+emit_32(1123680256);
+emit_32(1117536256);
+emit_32(1098919916);
+emit_32(1124132848);
+emit_32(1118048263);
+emit_32(1098948385);
+emit_32(1123680256);
+emit_32(1118048263);
+emit_32(1099015127);
+emit_32(1124132848);
+emit_32(1118560256);
+emit_32(1099890845);
+emit_32(1123680256);
+emit_32(1118560256);
+emit_32(1100384410);
+emit_32(1124132848);
+emit_32(1119072263);
+emit_32(1100416863);
+emit_32(1123680256);
+emit_32(1119072263);
+emit_32(1100817786);
+emit_32(1124132848);
+emit_32(1119584256);
+emit_32(1100910848);
+emit_32(1123680256);
+emit_32(1119584256);
+emit_32(1101157682);
+emit_32(1124132848);
+emit_32(1120096263);
+emit_32(1102712825);
+emit_32(1123680256);
+emit_32(1120096263);
+emit_32(1102698670);
+emit_32(1124132848);
+emit_32(1120608322);
+emit_32(1103789661);
+emit_32(1123680256);
+emit_32(1120608322);
+emit_32(1104088662);
+emit_32(1124132848);
+emit_32(1121120289);
+emit_32(1104607602);
+emit_32(1123680256);
+emit_32(1121120289);
+emit_32(1104975548);
+emit_32(1124132848);
+emit_32(1121632256);
+emit_32(1105587811);
+emit_32(1123680256);
+emit_32(1121632256);
+emit_32(1105705671);
+emit_32(1124132848);
+emit_32(1122144223);
+emit_32(1106213025);
+emit_32(1123680256);
+emit_32(1122144223);
+emit_32(1106546629);
+emit_32(1124132848);
+emit_32(1122656322);
+emit_32(1106606765);
+emit_32(1123680256);
+emit_32(1122656322);
+emit_32(1107224271);
+emit_32(1124132848);
+emit_32(1123168289);
+emit_32(1107406409);
+emit_32(1123680256);
+emit_32(1123168289);
+emit_32(1107432990);
+emit_32(1124132848);
+emit_32(1123680256);
+emit_32(1108017021);
+emit_32(1123680256);
+emit_32(1123680256);
+emit_32(1107870823);
+emit_32(1124132848);
+emit_32(1124132848);
+emit_32(1108642890);
+emit_32(1123680256);
+emit_32(1124132848);
+emit_32(1108611197);
+emit_32(1124132848);
+emit_32(1124388897);
+emit_32(1108976940);
+emit_32(1123680256);
+emit_32(1124388897);
+emit_32(1109002394);
+emit_32(1124132848);
+emit_32(1124644880);
+emit_32(1108915991);
+emit_32(1123680256);
+emit_32(1124644880);
+emit_32(1109174020);
+emit_32(1124132848);
+emit_32(1124900864);
+emit_32(1109069713);
+emit_32(1123680256);
+emit_32(1124900864);
+emit_32(1109145131);
+emit_32(1124132848);
+emit_32(1125156848);
+emit_32(1108852159);
+emit_32(1123680256);
+emit_32(1125156848);
+emit_32(1109111053);
+emit_32(1124132848);
+emit_32(1125412897);
+emit_32(1109018044);
+emit_32(1123680256);
+emit_32(1125412897);
+emit_32(1108982156);
+emit_32(1124132848);
+emit_32(1125668880);
+emit_32(1109032776);
+emit_32(1123680256);
+emit_32(1125668880);
+emit_32(1109159733);
+emit_32(1124132848);
+emit_32(1125924864);
+emit_32(1109297490);
+emit_32(1123680256);
+emit_32(1125924864);
+emit_32(1109315342);
+emit_32(1124132848);
+emit_32(1126180848);
+emit_32(1109331018);
+emit_32(1123680256);
+emit_32(1126180848);
+emit_32(1109210091);
+emit_32(1124132848);
+emit_32(1126436897);
+emit_32(1109010285);
+emit_32(1123680256);
+emit_32(1126436897);
+emit_32(1108929885);
+emit_32(1124132848);
+emit_32(1126692880);
+emit_32(1108437919);
+emit_32(1123680256);
+emit_32(1126692880);
+emit_32(1108541256);
+emit_32(1124132848);
+emit_32(1126948864);
+emit_32(1108395583);
+emit_32(1123680256);
+emit_32(1126948864);
+emit_32(1108339091);
+emit_32(1124132848);
+emit_32(1127204848);
+emit_32(1108230432);
+emit_32(1123680256);
+emit_32(1127204848);
+emit_32(1108284853);
+emit_32(1124132848);
+emit_32(1127460897);
+emit_32(1107992091);
+emit_32(1123680256);
+emit_32(1127460897);
+emit_32(1108246449);
+emit_32(1124132848);
+emit_32(1127716880);
+emit_32(1107862408);
+emit_32(1123680256);
+emit_32(1127716880);
+emit_32(1108208727);
+emit_32(1124132848);
+emit_32(1127972864);
+emit_32(1107704336);
+emit_32(1123680256);
+emit_32(1127972864);
+emit_32(1108242648);
+emit_32(1124132848);
+emit_32(1128228848);
+emit_32(1107562018);
+emit_32(1123680256);
+emit_32(1128228848);
+emit_32(1107828539);
+emit_32(1124132848);
+emit_32(1128484897);
+emit_32(1106914679);
+emit_32(1123680256);
+emit_32(1128484897);
+emit_32(1107302207);
+emit_32(1124132848);
+emit_32(1128740880);
+emit_32(1105855984);
+emit_32(1123680256);
+emit_32(1128740880);
+emit_32(1106125311);
+emit_32(1124132848);
+emit_32(1128996864);
+emit_32(1104645194);
+emit_32(1123680256);
+emit_32(1128996864);
+emit_32(1104882853);
+emit_32(1124132848);
+emit_32(1129252848);
+emit_32(1103670490);
+emit_32(1123680256);
+emit_32(1129252848);
+emit_32(1103712328);
+emit_32(1124132848);
+emit_32(1129508897);
+emit_32(1102923956);
+emit_32(1123680256);
+emit_32(1129508897);
+emit_32(1103248228);
+emit_32(1124132848);
+emit_32(1129764880);
+emit_32(1102092435);
+emit_32(1123680256);
+emit_32(1129764880);
+emit_32(1102281808);
+emit_32(1124132848);
+emit_32(1130020864);
+emit_32(1101172887);
+emit_32(1123680256);
+emit_32(1130020864);
+emit_32(1101935621);
+emit_32(1124132848);
+emit_32(1130276848);
+emit_32(1101025876);
+emit_32(1123680256);
+emit_32(1130276848);
+emit_32(1100815060);
+emit_32(1124132848);
+emit_32(1130532897);
+emit_32(1101065722);
+emit_32(1123680256);
+emit_32(1130532897);
+emit_32(1100889457);
+emit_32(1124132848);
+emit_32(1130788880);
+emit_32(1101130577);
+emit_32(1123680256);
+emit_32(1130788880);
+emit_32(1101023098);
+emit_32(1124132848);
+emit_32(1131044864);
+emit_32(1100802530);
+emit_32(1123680256);
+emit_32(1131044864);
+emit_32(1100560938);
+emit_32(1124132848);
+emit_32(1131300848);
+emit_32(1100276983);
+emit_32(1123680256);
+emit_32(1131300848);
+emit_32(1099884397);
+emit_32(1124132848);
+emit_32(1131556897);
+emit_32(1099626499);
+emit_32(1123680256);
+emit_32(1131556897);
+emit_32(1099776918);
+emit_32(1124132848);
+emit_32(1131812880);
+emit_32(1099785830);
+emit_32(1123680256);
+emit_32(1131812880);
+emit_32(1099406246);
+emit_32(1124132848);
+emit_32(1132068864);
+emit_32(1099641599);
+emit_32(1123680256);
+emit_32(1132068864);
+emit_32(1099062890);
+emit_32(1124132848);
+emit_32(1081737216);
+emit_32(1100235512);
+emit_32(1123168289);
+emit_32(1090125824);
+emit_32(1100861512);
+emit_32(1123168289);
+emit_32(1094418484);
+emit_32(1101523373);
+emit_32(1123168289);
+emit_32(1098514432);
+emit_32(1102177632);
+emit_32(1123168289);
+emit_32(1100759066);
+emit_32(1102223140);
+emit_32(1123168289);
+emit_32(1102807040);
+emit_32(1101084754);
+emit_32(1123168289);
+emit_32(1104855066);
+emit_32(1099931897);
+emit_32(1123168289);
+emit_32(1106903040);
+emit_32(1099771150);
+emit_32(1123168289);
+emit_32(1108123661);
+emit_32(1099034001);
+emit_32(1123168289);
+emit_32(1109147648);
+emit_32(1097525730);
+emit_32(1123168289);
+emit_32(1110171661);
+emit_32(1097329331);
+emit_32(1123168289);
+emit_32(1111195648);
+emit_32(1097895877);
+emit_32(1123168289);
+emit_32(1112219661);
+emit_32(1098267283);
+emit_32(1123168289);
+emit_32(1113243648);
+emit_32(1098019609);
+emit_32(1123168289);
+emit_32(1114267661);
+emit_32(1097783994);
+emit_32(1123168289);
+emit_32(1115291648);
+emit_32(1097984587);
+emit_32(1123168289);
+emit_32(1116000263);
+emit_32(1098022755);
+emit_32(1123168289);
+emit_32(1116512256);
+emit_32(1098026110);
+emit_32(1123168289);
+emit_32(1117024263);
+emit_32(1097933206);
+emit_32(1123168289);
+emit_32(1117536256);
+emit_32(1098931503);
+emit_32(1123168289);
+emit_32(1118048263);
+emit_32(1099231973);
+emit_32(1123168289);
+emit_32(1118560256);
+emit_32(1099649463);
+emit_32(1123168289);
+emit_32(1119072263);
+emit_32(1100347343);
+emit_32(1123168289);
+emit_32(1119584256);
+emit_32(1100400558);
+emit_32(1123168289);
+emit_32(1120096263);
+emit_32(1101890794);
+emit_32(1123168289);
+emit_32(1120608322);
+emit_32(1103399223);
+emit_32(1123168289);
+emit_32(1121120289);
+emit_32(1104023703);
+emit_32(1123168289);
+emit_32(1121632256);
+emit_32(1104903930);
+emit_32(1123168289);
+emit_32(1122144223);
+emit_32(1105787670);
+emit_32(1123168289);
+emit_32(1122656322);
+emit_32(1106319507);
+emit_32(1123168289);
+emit_32(1123168289);
+emit_32(1107324096);
+emit_32(1123168289);
+emit_32(1123680256);
+emit_32(1107997229);
+emit_32(1123168289);
+emit_32(1124132848);
+emit_32(1108634344);
+emit_32(1123168289);
+emit_32(1124388897);
+emit_32(1108819601);
+emit_32(1123168289);
+emit_32(1124644880);
+emit_32(1108814096);
+emit_32(1123168289);
+emit_32(1124900864);
+emit_32(1108757106);
+emit_32(1123168289);
+emit_32(1125156848);
+emit_32(1108647897);
+emit_32(1123168289);
+emit_32(1125412897);
+emit_32(1108920920);
+emit_32(1123168289);
+emit_32(1125668880);
+emit_32(1109111000);
+emit_32(1123168289);
+emit_32(1125924864);
+emit_32(1109475302);
+emit_32(1123168289);
+emit_32(1126180848);
+emit_32(1109573422);
+emit_32(1123168289);
+emit_32(1126436897);
+emit_32(1109272140);
+emit_32(1123168289);
+emit_32(1126692880);
+emit_32(1108874101);
+emit_32(1123168289);
+emit_32(1126948864);
+emit_32(1108464710);
+emit_32(1123168289);
+emit_32(1127204848);
+emit_32(1108148460);
+emit_32(1123168289);
+emit_32(1127460897);
+emit_32(1107996416);
+emit_32(1123168289);
+emit_32(1127716880);
+emit_32(1107704781);
+emit_32(1123168289);
+emit_32(1127972864);
+emit_32(1107621603);
+emit_32(1123168289);
+emit_32(1128228848);
+emit_32(1107169798);
+emit_32(1123168289);
+emit_32(1128484897);
+emit_32(1106434222);
+emit_32(1123168289);
+emit_32(1128740880);
+emit_32(1105659953);
+emit_32(1123168289);
+emit_32(1128996864);
+emit_32(1104548410);
+emit_32(1123168289);
+emit_32(1129252848);
+emit_32(1103654289);
+emit_32(1123168289);
+emit_32(1129508897);
+emit_32(1102602673);
+emit_32(1123168289);
+emit_32(1129764880);
+emit_32(1101366401);
+emit_32(1123168289);
+emit_32(1130020864);
+emit_32(1100673240);
+emit_32(1123168289);
+emit_32(1130276848);
+emit_32(1100637012);
+emit_32(1123168289);
+emit_32(1130532897);
+emit_32(1101126015);
+emit_32(1123168289);
+emit_32(1130788880);
+emit_32(1101170999);
+emit_32(1123168289);
+emit_32(1131044864);
+emit_32(1101134194);
+emit_32(1123168289);
+emit_32(1131300848);
+emit_32(1101200569);
+emit_32(1123168289);
+emit_32(1131556897);
+emit_32(1100148952);
+emit_32(1123168289);
+emit_32(1131812880);
+emit_32(1099244241);
+emit_32(1123168289);
+emit_32(1132068864);
+emit_32(1099746247);
+emit_32(1123168289);
+emit_32(1081737216);
+emit_32(1100438045);
+emit_32(1122656322);
+emit_32(1090125824);
+emit_32(1100591871);
+emit_32(1122656322);
+emit_32(1094418484);
+emit_32(1101406352);
+emit_32(1122656322);
+emit_32(1098514432);
+emit_32(1101309359);
+emit_32(1122656322);
+emit_32(1100759066);
+emit_32(1101169112);
+emit_32(1122656322);
+emit_32(1102807040);
+emit_32(1100305872);
+emit_32(1122656322);
+emit_32(1104855066);
+emit_32(1099701682);
+emit_32(1122656322);
+emit_32(1106903040);
+emit_32(1099474561);
+emit_32(1122656322);
+emit_32(1108123661);
+emit_32(1098570950);
+emit_32(1122656322);
+emit_32(1109147648);
+emit_32(1097605421);
+emit_32(1122656322);
+emit_32(1110171661);
+emit_32(1097274386);
+emit_32(1122656322);
+emit_32(1111195648);
+emit_32(1097648413);
+emit_32(1122656322);
+emit_32(1112219661);
+emit_32(1097935199);
+emit_32(1122656322);
+emit_32(1113243648);
+emit_32(1097655229);
+emit_32(1122656322);
+emit_32(1114267661);
+emit_32(1098651795);
+emit_32(1122656322);
+emit_32(1115291648);
+emit_32(1099066193);
+emit_32(1122656322);
+emit_32(1116000263);
+emit_32(1098931189);
+emit_32(1122656322);
+emit_32(1116512256);
+emit_32(1098814849);
+emit_32(1122656322);
+emit_32(1117024263);
+emit_32(1098993264);
+emit_32(1122656322);
+emit_32(1117536256);
+emit_32(1099606157);
+emit_32(1122656322);
+emit_32(1118048263);
+emit_32(1099571344);
+emit_32(1122656322);
+emit_32(1118560256);
+emit_32(1099949408);
+emit_32(1122656322);
+emit_32(1119072263);
+emit_32(1100115817);
+emit_32(1122656322);
+emit_32(1119584256);
+emit_32(1100095947);
+emit_32(1122656322);
+emit_32(1120096263);
+emit_32(1100761740);
+emit_32(1122656322);
+emit_32(1120608322);
+emit_32(1101924191);
+emit_32(1122656322);
+emit_32(1121120289);
+emit_32(1102920810);
+emit_32(1122656322);
+emit_32(1121632256);
+emit_32(1103899499);
+emit_32(1122656322);
+emit_32(1122144223);
+emit_32(1105260918);
+emit_32(1122656322);
+emit_32(1122656322);
+emit_32(1106034347);
+emit_32(1122656322);
+emit_32(1123168289);
+emit_32(1107198004);
+emit_32(1122656322);
+emit_32(1123680256);
+emit_32(1107826495);
+emit_32(1122656322);
+emit_32(1124132848);
+emit_32(1108446937);
+emit_32(1122656322);
+emit_32(1124388897);
+emit_32(1108618065);
+emit_32(1122656322);
+emit_32(1124644880);
+emit_32(1108561835);
+emit_32(1122656322);
+emit_32(1124900864);
+emit_32(1108406410);
+emit_32(1122656322);
+emit_32(1125156848);
+emit_32(1108576174);
+emit_32(1122656322);
+emit_32(1125412897);
+emit_32(1109301448);
+emit_32(1122656322);
+emit_32(1125668880);
+emit_32(1109829249);
+emit_32(1122656322);
+emit_32(1125924864);
+emit_32(1110051154);
+emit_32(1122656322);
+emit_32(1126180848);
+emit_32(1110198478);
+emit_32(1122656322);
+emit_32(1126436897);
+emit_32(1109858268);
+emit_32(1122656322);
+emit_32(1126692880);
+emit_32(1109550301);
+emit_32(1122656322);
+emit_32(1126948864);
+emit_32(1108917669);
+emit_32(1122656322);
+emit_32(1127204848);
+emit_32(1108613005);
+emit_32(1122656322);
+emit_32(1127460897);
+emit_32(1108306375);
+emit_32(1122656322);
+emit_32(1127716880);
+emit_32(1107971382);
+emit_32(1122656322);
+emit_32(1127972864);
+emit_32(1107731022);
+emit_32(1122656322);
+emit_32(1128228848);
+emit_32(1107436241);
+emit_32(1122656322);
+emit_32(1128484897);
+emit_32(1106805103);
+emit_32(1122656322);
+emit_32(1128740880);
+emit_32(1105736132);
+emit_32(1122656322);
+emit_32(1128996864);
+emit_32(1104687818);
+emit_32(1122656322);
+emit_32(1129252848);
+emit_32(1103709969);
+emit_32(1122656322);
+emit_32(1129508897);
+emit_32(1102382734);
+emit_32(1122656322);
+emit_32(1129764880);
+emit_32(1101330121);
+emit_32(1122656322);
+emit_32(1130020864);
+emit_32(1100614520);
+emit_32(1122656322);
+emit_32(1130276848);
+emit_32(1100389233);
+emit_32(1122656322);
+emit_32(1130532897);
+emit_32(1100597690);
+emit_32(1122656322);
+emit_32(1130788880);
+emit_32(1101237636);
+emit_32(1122656322);
+emit_32(1131044864);
+emit_32(1101286500);
+emit_32(1122656322);
+emit_32(1131300848);
+emit_32(1101166386);
+emit_32(1122656322);
+emit_32(1131556897);
+emit_32(1100711041);
+emit_32(1122656322);
+emit_32(1131812880);
+emit_32(1099946053);
+emit_32(1122656322);
+emit_32(1132068864);
+emit_32(1099609932);
+emit_32(1122656322);
+emit_32(1081737216);
+emit_32(1100139620);
+emit_32(1122144223);
+emit_32(1090125824);
+emit_32(1100323697);
+emit_32(1122144223);
+emit_32(1094418484);
+emit_32(1100674708);
+emit_32(1122144223);
+emit_32(1098514432);
+emit_32(1100753299);
+emit_32(1122144223);
+emit_32(1100759066);
+emit_32(1100255278);
+emit_32(1122144223);
+emit_32(1102807040);
+emit_32(1099783052);
+emit_32(1122144223);
+emit_32(1104855066);
+emit_32(1099327131);
+emit_32(1122144223);
+emit_32(1106903040);
+emit_32(1099190764);
+emit_32(1122144223);
+emit_32(1108123661);
+emit_32(1098756443);
+emit_32(1122144223);
+emit_32(1109147648);
+emit_32(1097994967);
+emit_32(1122144223);
+emit_32(1110171661);
+emit_32(1098760743);
+emit_32(1122144223);
+emit_32(1111195648);
+emit_32(1099136762);
+emit_32(1122144223);
+emit_32(1112219661);
+emit_32(1099063729);
+emit_32(1122144223);
+emit_32(1113243648);
+emit_32(1099278634);
+emit_32(1122144223);
+emit_32(1114267661);
+emit_32(1099336883);
+emit_32(1122144223);
+emit_32(1115291648);
+emit_32(1099511261);
+emit_32(1122144223);
+emit_32(1116000263);
+emit_32(1099185311);
+emit_32(1122144223);
+emit_32(1116512256);
+emit_32(1098779931);
+emit_32(1122144223);
+emit_32(1117024263);
+emit_32(1099229561);
+emit_32(1122144223);
+emit_32(1117536256);
+emit_32(1099456787);
+emit_32(1122144223);
+emit_32(1118048263);
+emit_32(1099608673);
+emit_32(1122144223);
+emit_32(1118560256);
+emit_32(1099933417);
+emit_32(1122144223);
+emit_32(1119072263);
+emit_32(1100161640);
+emit_32(1122144223);
+emit_32(1119584256);
+emit_32(1100494039);
+emit_32(1122144223);
+emit_32(1120096263);
+emit_32(1100626841);
+emit_32(1122144223);
+emit_32(1120608322);
+emit_32(1101085173);
+emit_32(1122144223);
+emit_32(1121120289);
+emit_32(1102206573);
+emit_32(1122144223);
+emit_32(1121632256);
+emit_32(1103460303);
+emit_32(1122144223);
+emit_32(1122144223);
+emit_32(1104032825);
+emit_32(1122144223);
+emit_32(1122656322);
+emit_32(1105660740);
+emit_32(1122144223);
+emit_32(1123168289);
+emit_32(1106883065);
+emit_32(1122144223);
+emit_32(1123680256);
+emit_32(1107680480);
+emit_32(1122144223);
+emit_32(1124132848);
+emit_32(1108110344);
+emit_32(1122144223);
+emit_32(1124388897);
+emit_32(1108454854);
+emit_32(1122144223);
+emit_32(1124644880);
+emit_32(1108686065);
+emit_32(1122144223);
+emit_32(1124900864);
+emit_32(1108654057);
+emit_32(1122144223);
+emit_32(1125156848);
+emit_32(1108922519);
+emit_32(1122144223);
+emit_32(1125412897);
+emit_32(1109770450);
+emit_32(1122144223);
+emit_32(1125668880);
+emit_32(1110434487);
+emit_32(1122144223);
+emit_32(1125924864);
+emit_32(1110705884);
+emit_32(1122144223);
+emit_32(1126180848);
+emit_32(1110743214);
+emit_32(1122144223);
+emit_32(1126436897);
+emit_32(1110390656);
+emit_32(1122144223);
+emit_32(1126692880);
+emit_32(1110053093);
+emit_32(1122144223);
+emit_32(1126948864);
+emit_32(1109488042);
+emit_32(1122144223);
+emit_32(1127204848);
+emit_32(1108960713);
+emit_32(1122144223);
+emit_32(1127460897);
+emit_32(1108725701);
+emit_32(1122144223);
+emit_32(1127716880);
+emit_32(1108233840);
+emit_32(1122144223);
+emit_32(1127972864);
+emit_32(1107884455);
+emit_32(1122144223);
+emit_32(1128228848);
+emit_32(1107301971);
+emit_32(1122144223);
+emit_32(1128484897);
+emit_32(1106353639);
+emit_32(1122144223);
+emit_32(1128740880);
+emit_32(1105631956);
+emit_32(1122144223);
+emit_32(1128996864);
+emit_32(1104783920);
+emit_32(1122144223);
+emit_32(1129252848);
+emit_32(1103622046);
+emit_32(1122144223);
+emit_32(1129508897);
+emit_32(1102332926);
+emit_32(1122144223);
+emit_32(1129764880);
+emit_32(1100887622);
+emit_32(1122144223);
+emit_32(1130020864);
+emit_32(1100248410);
+emit_32(1122144223);
+emit_32(1130276848);
+emit_32(1100033242);
+emit_32(1122144223);
+emit_32(1130532897);
+emit_32(1099938346);
+emit_32(1122144223);
+emit_32(1130788880);
+emit_32(1100585370);
+emit_32(1122144223);
+emit_32(1131044864);
+emit_32(1101043650);
+emit_32(1122144223);
+emit_32(1131300848);
+emit_32(1101065565);
+emit_32(1122144223);
+emit_32(1131556897);
+emit_32(1100500540);
+emit_32(1122144223);
+emit_32(1131812880);
+emit_32(1100135373);
+emit_32(1122144223);
+emit_32(1132068864);
+emit_32(1100354840);
+emit_32(1122144223);
+emit_32(1081737216);
+emit_32(1099957115);
+emit_32(1121632256);
+emit_32(1090125824);
+emit_32(1100037593);
+emit_32(1121632256);
+emit_32(1094418484);
+emit_32(1100062445);
+emit_32(1121632256);
+emit_32(1098514432);
+emit_32(1100063284);
+emit_32(1121632256);
+emit_32(1100759066);
+emit_32(1099841195);
+emit_32(1121632256);
+emit_32(1102807040);
+emit_32(1099713898);
+emit_32(1121632256);
+emit_32(1104855066);
+emit_32(1099359951);
+emit_32(1121632256);
+emit_32(1106903040);
+emit_32(1098837289);
+emit_32(1121632256);
+emit_32(1108123661);
+emit_32(1098060399);
+emit_32(1121632256);
+emit_32(1109147648);
+emit_32(1098949381);
+emit_32(1121632256);
+emit_32(1110171661);
+emit_32(1099007001);
+emit_32(1121632256);
+emit_32(1111195648);
+emit_32(1098883950);
+emit_32(1121632256);
+emit_32(1112219661);
+emit_32(1099407242);
+emit_32(1121632256);
+emit_32(1113243648);
+emit_32(1099479174);
+emit_32(1121632256);
+emit_32(1114267661);
+emit_32(1099627076);
+emit_32(1121632256);
+emit_32(1115291648);
+emit_32(1099212207);
+emit_32(1121632256);
+emit_32(1116000263);
+emit_32(1099332898);
+emit_32(1121632256);
+emit_32(1116512256);
+emit_32(1099391985);
+emit_32(1121632256);
+emit_32(1117024263);
+emit_32(1099349203);
+emit_32(1121632256);
+emit_32(1117536256);
+emit_32(1099452960);
+emit_32(1121632256);
+emit_32(1118048263);
+emit_32(1099360476);
+emit_32(1121632256);
+emit_32(1118560256);
+emit_32(1099645374);
+emit_32(1121632256);
+emit_32(1119072263);
+emit_32(1099926864);
+emit_32(1121632256);
+emit_32(1119584256);
+emit_32(1100231737);
+emit_32(1121632256);
+emit_32(1120096263);
+emit_32(1100104545);
+emit_32(1121632256);
+emit_32(1120608322);
+emit_32(1100531630);
+emit_32(1121632256);
+emit_32(1121120289);
+emit_32(1101229824);
+emit_32(1121632256);
+emit_32(1121632256);
+emit_32(1102138835);
+emit_32(1121632256);
+emit_32(1122144223);
+emit_32(1103981340);
+emit_32(1121632256);
+emit_32(1122656322);
+emit_32(1105126595);
+emit_32(1121632256);
+emit_32(1123168289);
+emit_32(1106590722);
+emit_32(1121632256);
+emit_32(1123680256);
+emit_32(1107669182);
+emit_32(1121632256);
+emit_32(1124132848);
+emit_32(1107932296);
+emit_32(1121632256);
+emit_32(1124388897);
+emit_32(1108574129);
+emit_32(1121632256);
+emit_32(1124644880);
+emit_32(1108726278);
+emit_32(1121632256);
+emit_32(1124900864);
+emit_32(1108737393);
+emit_32(1121632256);
+emit_32(1125156848);
+emit_32(1109413095);
+emit_32(1121632256);
+emit_32(1125412897);
+emit_32(1110114933);
+emit_32(1121632256);
+emit_32(1125668880);
+emit_32(1110645303);
+emit_32(1121632256);
+emit_32(1125924864);
+emit_32(1111013117);
+emit_32(1121632256);
+emit_32(1126180848);
+emit_32(1111064655);
+emit_32(1121632256);
+emit_32(1126436897);
+emit_32(1110758890);
+emit_32(1121632256);
+emit_32(1126692880);
+emit_32(1110376107);
+emit_32(1121632256);
+emit_32(1126948864);
+emit_32(1109822407);
+emit_32(1121632256);
+emit_32(1127204848);
+emit_32(1109326797);
+emit_32(1121632256);
+emit_32(1127460897);
+emit_32(1108601838);
+emit_32(1121632256);
+emit_32(1127716880);
+emit_32(1108258010);
+emit_32(1121632256);
+emit_32(1127972864);
+emit_32(1108088245);
+emit_32(1121632256);
+emit_32(1128228848);
+emit_32(1107411154);
+emit_32(1121632256);
+emit_32(1128484897);
+emit_32(1106040377);
+emit_32(1121632256);
+emit_32(1128740880);
+emit_32(1105294629);
+emit_32(1121632256);
+emit_32(1128996864);
+emit_32(1104278664);
+emit_32(1121632256);
+emit_32(1129252848);
+emit_32(1103177554);
+emit_32(1121632256);
+emit_32(1129508897);
+emit_32(1102109580);
+emit_32(1121632256);
+emit_32(1129764880);
+emit_32(1101025824);
+emit_32(1121632256);
+emit_32(1130020864);
+emit_32(1099990984);
+emit_32(1121632256);
+emit_32(1130276848);
+emit_32(1099361681);
+emit_32(1121632256);
+emit_32(1130532897);
+emit_32(1099399011);
+emit_32(1121632256);
+emit_32(1130788880);
+emit_32(1099424229);
+emit_32(1121632256);
+emit_32(1131044864);
+emit_32(1099786407);
+emit_32(1121632256);
+emit_32(1131300848);
+emit_32(1100148585);
+emit_32(1121632256);
+emit_32(1131556897);
+emit_32(1100174118);
+emit_32(1121632256);
+emit_32(1131812880);
+emit_32(1100070047);
+emit_32(1121632256);
+emit_32(1132068864);
+emit_32(1100267704);
+emit_32(1121632256);
+emit_32(1081737216);
+emit_32(1099935672);
+emit_32(1121120289);
+emit_32(1090125824);
+emit_32(1100185285);
+emit_32(1121120289);
+emit_32(1094418484);
+emit_32(1100187225);
+emit_32(1121120289);
+emit_32(1098514432);
+emit_32(1099887280);
+emit_32(1121120289);
+emit_32(1100759066);
+emit_32(1099826148);
+emit_32(1121120289);
+emit_32(1102807040);
+emit_32(1099732563);
+emit_32(1121120289);
+emit_32(1104855066);
+emit_32(1099085749);
+emit_32(1121120289);
+emit_32(1106903040);
+emit_32(1098762735);
+emit_32(1121120289);
+emit_32(1108123661);
+emit_32(1098970248);
+emit_32(1121120289);
+emit_32(1109147648);
+emit_32(1099373740);
+emit_32(1121120289);
+emit_32(1110171661);
+emit_32(1099054658);
+emit_32(1121120289);
+emit_32(1111195648);
+emit_32(1098747635);
+emit_32(1121120289);
+emit_32(1112219661);
+emit_32(1099059272);
+emit_32(1121120289);
+emit_32(1113243648);
+emit_32(1099057280);
+emit_32(1121120289);
+emit_32(1114267661);
+emit_32(1099293943);
+emit_32(1121120289);
+emit_32(1115291648);
+emit_32(1099644535);
+emit_32(1121120289);
+emit_32(1116000263);
+emit_32(1099369441);
+emit_32(1121120289);
+emit_32(1116512256);
+emit_32(1099598817);
+emit_32(1121120289);
+emit_32(1117024263);
+emit_32(1099807641);
+emit_32(1121120289);
+emit_32(1117536256);
+emit_32(1099466382);
+emit_32(1121120289);
+emit_32(1118048263);
+emit_32(1099290640);
+emit_32(1121120289);
+emit_32(1118560256);
+emit_32(1099113641);
+emit_32(1121120289);
+emit_32(1119072263);
+emit_32(1099247124);
+emit_32(1121120289);
+emit_32(1119584256);
+emit_32(1099832754);
+emit_32(1121120289);
+emit_32(1120096263);
+emit_32(1100177054);
+emit_32(1121120289);
+emit_32(1120608322);
+emit_32(1100171549);
+emit_32(1121120289);
+emit_32(1121120289);
+emit_32(1100677172);
+emit_32(1121120289);
+emit_32(1121632256);
+emit_32(1101971063);
+emit_32(1121120289);
+emit_32(1122144223);
+emit_32(1103633737);
+emit_32(1121120289);
+emit_32(1122656322);
+emit_32(1104631195);
+emit_32(1121120289);
+emit_32(1123168289);
+emit_32(1106163951);
+emit_32(1121120289);
+emit_32(1123680256);
+emit_32(1107425676);
+emit_32(1121120289);
+emit_32(1124132848);
+emit_32(1107927394);
+emit_32(1121120289);
+emit_32(1124388897);
+emit_32(1108148145);
+emit_32(1121120289);
+emit_32(1124644880);
+emit_32(1108470268);
+emit_32(1121120289);
+emit_32(1124900864);
+emit_32(1108816246);
+emit_32(1121120289);
+emit_32(1125156848);
+emit_32(1109543145);
+emit_32(1121120289);
+emit_32(1125412897);
+emit_32(1110276781);
+emit_32(1121120289);
+emit_32(1125668880);
+emit_32(1110909649);
+emit_32(1121120289);
+emit_32(1125924864);
+emit_32(1111224091);
+emit_32(1121120289);
+emit_32(1126180848);
+emit_32(1111301135);
+emit_32(1121120289);
+emit_32(1126436897);
+emit_32(1111167992);
+emit_32(1121120289);
+emit_32(1126692880);
+emit_32(1110709345);
+emit_32(1121120289);
+emit_32(1126948864);
+emit_32(1110071837);
+emit_32(1121120289);
+emit_32(1127204848);
+emit_32(1109390262);
+emit_32(1121120289);
+emit_32(1127460897);
+emit_32(1108886238);
+emit_32(1121120289);
+emit_32(1127716880);
+emit_32(1108757814);
+emit_32(1121120289);
+emit_32(1127972864);
+emit_32(1108248258);
+emit_32(1121120289);
+emit_32(1128228848);
+emit_32(1107404862);
+emit_32(1121120289);
+emit_32(1128484897);
+emit_32(1106003467);
+emit_32(1121120289);
+emit_32(1128740880);
+emit_32(1104821354);
+emit_32(1121120289);
+emit_32(1128996864);
+emit_32(1104184607);
+emit_32(1121120289);
+emit_32(1129252848);
+emit_32(1103554570);
+emit_32(1121120289);
+emit_32(1129508897);
+emit_32(1102588989);
+emit_32(1121120289);
+emit_32(1129764880);
+emit_32(1101617378);
+emit_32(1121120289);
+emit_32(1130020864);
+emit_32(1100444598);
+emit_32(1121120289);
+emit_32(1130276848);
+emit_32(1099799619);
+emit_32(1121120289);
+emit_32(1130532897);
+emit_32(1099403939);
+emit_32(1121120289);
+emit_32(1130788880);
+emit_32(1099507276);
+emit_32(1121120289);
+emit_32(1131044864);
+emit_32(1099782737);
+emit_32(1121120289);
+emit_32(1131300848);
+emit_32(1099916535);
+emit_32(1121120289);
+emit_32(1131556897);
+emit_32(1099956486);
+emit_32(1121120289);
+emit_32(1131812880);
+emit_32(1100280182);
+emit_32(1121120289);
+emit_32(1132068864);
+emit_32(1100594020);
+emit_32(1121120289);
+emit_32(1081737216);
+emit_32(1099802817);
+emit_32(1120608322);
+emit_32(1090125824);
+emit_32(1100171706);
+emit_32(1120608322);
+emit_32(1094418484);
+emit_32(1099951820);
+emit_32(1120608322);
+emit_32(1098514432);
+emit_32(1100236666);
+emit_32(1120608322);
+emit_32(1100759066);
+emit_32(1100302621);
+emit_32(1120608322);
+emit_32(1102807040);
+emit_32(1099644797);
+emit_32(1120608322);
+emit_32(1104855066);
+emit_32(1099555458);
+emit_32(1120608322);
+emit_32(1106903040);
+emit_32(1099452645);
+emit_32(1120608322);
+emit_32(1108123661);
+emit_32(1099951138);
+emit_32(1120608322);
+emit_32(1109147648);
+emit_32(1100092696);
+emit_32(1120608322);
+emit_32(1110171661);
+emit_32(1099905735);
+emit_32(1120608322);
+emit_32(1111195648);
+emit_32(1099555563);
+emit_32(1120608322);
+emit_32(1112219661);
+emit_32(1098964743);
+emit_32(1120608322);
+emit_32(1113243648);
+emit_32(1099224475);
+emit_32(1120608322);
+emit_32(1114267661);
+emit_32(1099204185);
+emit_32(1120608322);
+emit_32(1115291648);
+emit_32(1099361419);
+emit_32(1120608322);
+emit_32(1116000263);
+emit_32(1099438385);
+emit_32(1120608322);
+emit_32(1116512256);
+emit_32(1099693294);
+emit_32(1120608322);
+emit_32(1117024263);
+emit_32(1099966448);
+emit_32(1120608322);
+emit_32(1117536256);
+emit_32(1099611085);
+emit_32(1120608322);
+emit_32(1118048263);
+emit_32(1099352087);
+emit_32(1120608322);
+emit_32(1118560256);
+emit_32(1098341627);
+emit_32(1120608322);
+emit_32(1119072263);
+emit_32(1098488322);
+emit_32(1120608322);
+emit_32(1119584256);
+emit_32(1099373688);
+emit_32(1120608322);
+emit_32(1120096263);
+emit_32(1099586286);
+emit_32(1120608322);
+emit_32(1120608322);
+emit_32(1099611819);
+emit_32(1120608322);
+emit_32(1121120289);
+emit_32(1100077125);
+emit_32(1120608322);
+emit_32(1121632256);
+emit_32(1101296094);
+emit_32(1120608322);
+emit_32(1122144223);
+emit_32(1102346872);
+emit_32(1120608322);
+emit_32(1122656322);
+emit_32(1103678512);
+emit_32(1120608322);
+emit_32(1123168289);
+emit_32(1105306478);
+emit_32(1120608322);
+emit_32(1123680256);
+emit_32(1106488852);
+emit_32(1120608322);
+emit_32(1124132848);
+emit_32(1107446438);
+emit_32(1120608322);
+emit_32(1124388897);
+emit_32(1107966506);
+emit_32(1120608322);
+emit_32(1124644880);
+emit_32(1108466205);
+emit_32(1120608322);
+emit_32(1124900864);
+emit_32(1108823481);
+emit_32(1120608322);
+emit_32(1125156848);
+emit_32(1109507624);
+emit_32(1120608322);
+emit_32(1125412897);
+emit_32(1110351387);
+emit_32(1120608322);
+emit_32(1125668880);
+emit_32(1111019749);
+emit_32(1120608322);
+emit_32(1125924864);
+emit_32(1111329971);
+emit_32(1120608322);
+emit_32(1126180848);
+emit_32(1111365308);
+emit_32(1120608322);
+emit_32(1126436897);
+emit_32(1111184166);
+emit_32(1120608322);
+emit_32(1126692880);
+emit_32(1110574760);
+emit_32(1120608322);
+emit_32(1126948864);
+emit_32(1110380328);
+emit_32(1120608322);
+emit_32(1127204848);
+emit_32(1109912165);
+emit_32(1120608322);
+emit_32(1127460897);
+emit_32(1109599191);
+emit_32(1120608322);
+emit_32(1127716880);
+emit_32(1109069372);
+emit_32(1120608322);
+emit_32(1127972864);
+emit_32(1108386487);
+emit_32(1120608322);
+emit_32(1128228848);
+emit_32(1107668422);
+emit_32(1120608322);
+emit_32(1128484897);
+emit_32(1106120173);
+emit_32(1120608322);
+emit_32(1128740880);
+emit_32(1104797657);
+emit_32(1120608322);
+emit_32(1128996864);
+emit_32(1104352117);
+emit_32(1120608322);
+emit_32(1129252848);
+emit_32(1103791338);
+emit_32(1120608322);
+emit_32(1129508897);
+emit_32(1102834355);
+emit_32(1120608322);
+emit_32(1129764880);
+emit_32(1102173438);
+emit_32(1120608322);
+emit_32(1130020864);
+emit_32(1101005534);
+emit_32(1120608322);
+emit_32(1130276848);
+emit_32(1100530582);
+emit_32(1120608322);
+emit_32(1130532897);
+emit_32(1099941020);
+emit_32(1120608322);
+emit_32(1130788880);
+emit_32(1099395393);
+emit_32(1120608322);
+emit_32(1131044864);
+emit_32(1099621676);
+emit_32(1120608322);
+emit_32(1131300848);
+emit_32(1099449605);
+emit_32(1120608322);
+emit_32(1131556897);
+emit_32(1099506595);
+emit_32(1120608322);
+emit_32(1131812880);
+emit_32(1100131336);
+emit_32(1120608322);
+emit_32(1132068864);
+emit_32(1100624377);
+emit_32(1120608322);
+emit_32(1081737216);
+emit_32(1099965451);
+emit_32(1120096263);
+emit_32(1090125824);
+emit_32(1100056678);
+emit_32(1120096263);
+emit_32(1094418484);
+emit_32(1099809423);
+emit_32(1120096263);
+emit_32(1098514432);
+emit_32(1100136789);
+emit_32(1120096263);
+emit_32(1100759066);
+emit_32(1100328573);
+emit_32(1120096263);
+emit_32(1102807040);
+emit_32(1099649149);
+emit_32(1120096263);
+emit_32(1104855066);
+emit_32(1099960680);
+emit_32(1120096263);
+emit_32(1106903040);
+emit_32(1100214383);
+emit_32(1120096263);
+emit_32(1108123661);
+emit_32(1100707214);
+emit_32(1120096263);
+emit_32(1109147648);
+emit_32(1100899838);
+emit_32(1120096263);
+emit_32(1110171661);
+emit_32(1100765934);
+emit_32(1120096263);
+emit_32(1111195648);
+emit_32(1100769552);
+emit_32(1120096263);
+emit_32(1112219661);
+emit_32(1099924609);
+emit_32(1120096263);
+emit_32(1113243648);
+emit_32(1099242301);
+emit_32(1120096263);
+emit_32(1114267661);
+emit_32(1098940101);
+emit_32(1120096263);
+emit_32(1115291648);
+emit_32(1099295726);
+emit_32(1120096263);
+emit_32(1116000263);
+emit_32(1099408343);
+emit_32(1120096263);
+emit_32(1116512256);
+emit_32(1099741895);
+emit_32(1120096263);
+emit_32(1117024263);
+emit_32(1099493854);
+emit_32(1120096263);
+emit_32(1117536256);
+emit_32(1099382810);
+emit_32(1120096263);
+emit_32(1118048263);
+emit_32(1099116734);
+emit_32(1120096263);
+emit_32(1118560256);
+emit_32(1098839491);
+emit_32(1120096263);
+emit_32(1119072263);
+emit_32(1098942461);
+emit_32(1120096263);
+emit_32(1119584256);
+emit_32(1099008626);
+emit_32(1120096263);
+emit_32(1120096263);
+emit_32(1099170002);
+emit_32(1120096263);
+emit_32(1120608322);
+emit_32(1099494064);
+emit_32(1120096263);
+emit_32(1121120289);
+emit_32(1099581830);
+emit_32(1120096263);
+emit_32(1121632256);
+emit_32(1100481875);
+emit_32(1120096263);
+emit_32(1122144223);
+emit_32(1101530032);
+emit_32(1120096263);
+emit_32(1122656322);
+emit_32(1102909853);
+emit_32(1120096263);
+emit_32(1123168289);
+emit_32(1104403812);
+emit_32(1120096263);
+emit_32(1123680256);
+emit_32(1105884611);
+emit_32(1120096263);
+emit_32(1124132848);
+emit_32(1107445731);
+emit_32(1120096263);
+emit_32(1124388897);
+emit_32(1107970254);
+emit_32(1120096263);
+emit_32(1124644880);
+emit_32(1108388505);
+emit_32(1120096263);
+emit_32(1124900864);
+emit_32(1108761877);
+emit_32(1120096263);
+emit_32(1125156848);
+emit_32(1109478133);
+emit_32(1120096263);
+emit_32(1125412897);
+emit_32(1110090973);
+emit_32(1120096263);
+emit_32(1125668880);
+emit_32(1110851033);
+emit_32(1120096263);
+emit_32(1125924864);
+emit_32(1111411497);
+emit_32(1120096263);
+emit_32(1126180848);
+emit_32(1111336655);
+emit_32(1120096263);
+emit_32(1126436897);
+emit_32(1111269415);
+emit_32(1120096263);
+emit_32(1126692880);
+emit_32(1110784292);
+emit_32(1120096263);
+emit_32(1126948864);
+emit_32(1110653508);
+emit_32(1120096263);
+emit_32(1127204848);
+emit_32(1110359330);
+emit_32(1120096263);
+emit_32(1127460897);
+emit_32(1109834623);
+emit_32(1120096263);
+emit_32(1127716880);
+emit_32(1109238009);
+emit_32(1120096263);
+emit_32(1127972864);
+emit_32(1108505212);
+emit_32(1120096263);
+emit_32(1128228848);
+emit_32(1107662209);
+emit_32(1120096263);
+emit_32(1128484897);
+emit_32(1106214755);
+emit_32(1120096263);
+emit_32(1128740880);
+emit_32(1105231400);
+emit_32(1120096263);
+emit_32(1128996864);
+emit_32(1104882277);
+emit_32(1120096263);
+emit_32(1129252848);
+emit_32(1103989781);
+emit_32(1120096263);
+emit_32(1129508897);
+emit_32(1103333268);
+emit_32(1120096263);
+emit_32(1129764880);
+emit_32(1102701186);
+emit_32(1120096263);
+emit_32(1130020864);
+emit_32(1101762396);
+emit_32(1120096263);
+emit_32(1130276848);
+emit_32(1100764257);
+emit_32(1120096263);
+emit_32(1130532897);
+emit_32(1100213020);
+emit_32(1120096263);
+emit_32(1130788880);
+emit_32(1099813093);
+emit_32(1120096263);
+emit_32(1131044864);
+emit_32(1099177080);
+emit_32(1120096263);
+emit_32(1131300848);
+emit_32(1099042862);
+emit_32(1120096263);
+emit_32(1131556897);
+emit_32(1098988336);
+emit_32(1120096263);
+emit_32(1131812880);
+emit_32(1099476815);
+emit_32(1120096263);
+emit_32(1132068864);
+emit_32(1100226285);
+emit_32(1120096263);
+emit_32(1081737216);
+emit_32(1099519545);
+emit_32(1119584256);
+emit_32(1090125824);
+emit_32(1099335991);
+emit_32(1119584256);
+emit_32(1094418484);
+emit_32(1099709442);
+emit_32(1119584256);
+emit_32(1098514432);
+emit_32(1100359978);
+emit_32(1119584256);
+emit_32(1100759066);
+emit_32(1100132490);
+emit_32(1119584256);
+emit_32(1102807040);
+emit_32(1100526073);
+emit_32(1119584256);
+emit_32(1104855066);
+emit_32(1100876716);
+emit_32(1119584256);
+emit_32(1106903040);
+emit_32(1101010724);
+emit_32(1119584256);
+emit_32(1108123661);
+emit_32(1101185208);
+emit_32(1119584256);
+emit_32(1109147648);
+emit_32(1101761557);
+emit_32(1119584256);
+emit_32(1110171661);
+emit_32(1101844080);
+emit_32(1119584256);
+emit_32(1111195648);
+emit_32(1101813409);
+emit_32(1119584256);
+emit_32(1112219661);
+emit_32(1101402839);
+emit_32(1119584256);
+emit_32(1113243648);
+emit_32(1100438936);
+emit_32(1119584256);
+emit_32(1114267661);
+emit_32(1099786984);
+emit_32(1119584256);
+emit_32(1115291648);
+emit_32(1099715523);
+emit_32(1119584256);
+emit_32(1116000263);
+emit_32(1099745985);
+emit_32(1119584256);
+emit_32(1116512256);
+emit_32(1100093902);
+emit_32(1119584256);
+emit_32(1117024263);
+emit_32(1100168351);
+emit_32(1119584256);
+emit_32(1117536256);
+emit_32(1100068946);
+emit_32(1119584256);
+emit_32(1118048263);
+emit_32(1100204894);
+emit_32(1119584256);
+emit_32(1118560256);
+emit_32(1099776865);
+emit_32(1119584256);
+emit_32(1119072263);
+emit_32(1099815715);
+emit_32(1119584256);
+emit_32(1119584256);
+emit_32(1100174957);
+emit_32(1119584256);
+emit_32(1120096263);
+emit_32(1100503528);
+emit_32(1119584256);
+emit_32(1120608322);
+emit_32(1100870425);
+emit_32(1119584256);
+emit_32(1121120289);
+emit_32(1100930771);
+emit_32(1119584256);
+emit_32(1121632256);
+emit_32(1100869219);
+emit_32(1119584256);
+emit_32(1122144223);
+emit_32(1101778439);
+emit_32(1119584256);
+emit_32(1122656322);
+emit_32(1103199574);
+emit_32(1119584256);
+emit_32(1123168289);
+emit_32(1104588361);
+emit_32(1119584256);
+emit_32(1123680256);
+emit_32(1106227809);
+emit_32(1119584256);
+emit_32(1124132848);
+emit_32(1107512970);
+emit_32(1119584256);
+emit_32(1124388897);
+emit_32(1107998251);
+emit_32(1119584256);
+emit_32(1124644880);
+emit_32(1108347008);
+emit_32(1119584256);
+emit_32(1124900864);
+emit_32(1108602048);
+emit_32(1119584256);
+emit_32(1125156848);
+emit_32(1109290831);
+emit_32(1119584256);
+emit_32(1125412897);
+emit_32(1109977176);
+emit_32(1119584256);
+emit_32(1125668880);
+emit_32(1110570959);
+emit_32(1119584256);
+emit_32(1125924864);
+emit_32(1111274737);
+emit_32(1119584256);
+emit_32(1126180848);
+emit_32(1111376973);
+emit_32(1119584256);
+emit_32(1126436897);
+emit_32(1111218586);
+emit_32(1119584256);
+emit_32(1126692880);
+emit_32(1110884090);
+emit_32(1119584256);
+emit_32(1126948864);
+emit_32(1110905140);
+emit_32(1119584256);
+emit_32(1127204848);
+emit_32(1110659642);
+emit_32(1119584256);
+emit_32(1127460897);
+emit_32(1110072466);
+emit_32(1119584256);
+emit_32(1127716880);
+emit_32(1109486102);
+emit_32(1119584256);
+emit_32(1127972864);
+emit_32(1108855960);
+emit_32(1119584256);
+emit_32(1128228848);
+emit_32(1108119781);
+emit_32(1119584256);
+emit_32(1128484897);
+emit_32(1107034689);
+emit_32(1119584256);
+emit_32(1128740880);
+emit_32(1106087772);
+emit_32(1119584256);
+emit_32(1128996864);
+emit_32(1105093617);
+emit_32(1119584256);
+emit_32(1129252848);
+emit_32(1104335182);
+emit_32(1119584256);
+emit_32(1129508897);
+emit_32(1104074192);
+emit_32(1119584256);
+emit_32(1129764880);
+emit_32(1103483057);
+emit_32(1119584256);
+emit_32(1130020864);
+emit_32(1102981208);
+emit_32(1119584256);
+emit_32(1130276848);
+emit_32(1101489714);
+emit_32(1119584256);
+emit_32(1130532897);
+emit_32(1100552235);
+emit_32(1119584256);
+emit_32(1130788880);
+emit_32(1100255278);
+emit_32(1119584256);
+emit_32(1131044864);
+emit_32(1099722392);
+emit_32(1119584256);
+emit_32(1131300848);
+emit_32(1097754634);
+emit_32(1119584256);
+emit_32(1131556897);
+emit_32(1099078199);
+emit_32(1119584256);
+emit_32(1131812880);
+emit_32(1098909588);
+emit_32(1119584256);
+emit_32(1132068864);
+emit_32(1098899364);
+emit_32(1119584256);
+emit_32(1081737216);
+emit_32(1098532992);
+emit_32(1119072263);
+emit_32(1090125824);
+emit_32(1099050359);
+emit_32(1119072263);
+emit_32(1094418484);
+emit_32(1099771203);
+emit_32(1119072263);
+emit_32(1098514432);
+emit_32(1100405277);
+emit_32(1119072263);
+emit_32(1100759066);
+emit_32(1100821823);
+emit_32(1119072263);
+emit_32(1102807040);
+emit_32(1101489399);
+emit_32(1119072263);
+emit_32(1104855066);
+emit_32(1101426590);
+emit_32(1119072263);
+emit_32(1106903040);
+emit_32(1101124023);
+emit_32(1119072263);
+emit_32(1108123661);
+emit_32(1101831497);
+emit_32(1119072263);
+emit_32(1109147648);
+emit_32(1102350123);
+emit_32(1119072263);
+emit_32(1110171661);
+emit_32(1102793199);
+emit_32(1119072263);
+emit_32(1111195648);
+emit_32(1102843111);
+emit_32(1119072263);
+emit_32(1112219661);
+emit_32(1102558318);
+emit_32(1119072263);
+emit_32(1113243648);
+emit_32(1101824891);
+emit_32(1119072263);
+emit_32(1114267661);
+emit_32(1101196113);
+emit_32(1119072263);
+emit_32(1115291648);
+emit_32(1100804365);
+emit_32(1119072263);
+emit_32(1116000263);
+emit_32(1100310538);
+emit_32(1119072263);
+emit_32(1116512256);
+emit_32(1100314680);
+emit_32(1119072263);
+emit_32(1117024263);
+emit_32(1100878604);
+emit_32(1119072263);
+emit_32(1117536256);
+emit_32(1101233180);
+emit_32(1119072263);
+emit_32(1118048263);
+emit_32(1101099486);
+emit_32(1119072263);
+emit_32(1118560256);
+emit_32(1100717123);
+emit_32(1119072263);
+emit_32(1119072263);
+emit_32(1100634758);
+emit_32(1119072263);
+emit_32(1119584256);
+emit_32(1100997670);
+emit_32(1119072263);
+emit_32(1120096263);
+emit_32(1101349205);
+emit_32(1119072263);
+emit_32(1120608322);
+emit_32(1101475873);
+emit_32(1119072263);
+emit_32(1121120289);
+emit_32(1101425646);
+emit_32(1119072263);
+emit_32(1121632256);
+emit_32(1101796422);
+emit_32(1119072263);
+emit_32(1122144223);
+emit_32(1102446120);
+emit_32(1119072263);
+emit_32(1122656322);
+emit_32(1103203559);
+emit_32(1119072263);
+emit_32(1123168289);
+emit_32(1104856849);
+emit_32(1119072263);
+emit_32(1123680256);
+emit_32(1106223877);
+emit_32(1119072263);
+emit_32(1124132848);
+emit_32(1107396421);
+emit_32(1119072263);
+emit_32(1124388897);
+emit_32(1107875018);
+emit_32(1119072263);
+emit_32(1124644880);
+emit_32(1108277173);
+emit_32(1119072263);
+emit_32(1124900864);
+emit_32(1108512814);
+emit_32(1119072263);
+emit_32(1125156848);
+emit_32(1109177296);
+emit_32(1119072263);
+emit_32(1125412897);
+emit_32(1109962811);
+emit_32(1119072263);
+emit_32(1125668880);
+emit_32(1110386698);
+emit_32(1119072263);
+emit_32(1125924864);
+emit_32(1110954895);
+emit_32(1119072263);
+emit_32(1126180848);
+emit_32(1111373146);
+emit_32(1119072263);
+emit_32(1126436897);
+emit_32(1111232741);
+emit_32(1119072263);
+emit_32(1126692880);
+emit_32(1110968474);
+emit_32(1119072263);
+emit_32(1126948864);
+emit_32(1110976076);
+emit_32(1119072263);
+emit_32(1127204848);
+emit_32(1110947948);
+emit_32(1119072263);
+emit_32(1127460897);
+emit_32(1110319458);
+emit_32(1119072263);
+emit_32(1127716880);
+emit_32(1109529802);
+emit_32(1119072263);
+emit_32(1127972864);
+emit_32(1108903985);
+emit_32(1119072263);
+emit_32(1128228848);
+emit_32(1108310439);
+emit_32(1119072263);
+emit_32(1128484897);
+emit_32(1107575387);
+emit_32(1119072263);
+emit_32(1128740880);
+emit_32(1106795613);
+emit_32(1119072263);
+emit_32(1128996864);
+emit_32(1105037099);
+emit_32(1119072263);
+emit_32(1129252848);
+emit_32(1104566131);
+emit_32(1119072263);
+emit_32(1129508897);
+emit_32(1104325640);
+emit_32(1119072263);
+emit_32(1129764880);
+emit_32(1103661315);
+emit_32(1119072263);
+emit_32(1130020864);
+emit_32(1102795191);
+emit_32(1119072263);
+emit_32(1130276848);
+emit_32(1101517868);
+emit_32(1119072263);
+emit_32(1130532897);
+emit_32(1100461113);
+emit_32(1119072263);
+emit_32(1130788880);
+emit_32(1100370097);
+emit_32(1119072263);
+emit_32(1131044864);
+emit_32(1099572602);
+emit_32(1119072263);
+emit_32(1131300848);
+emit_32(1097838100);
+emit_32(1119072263);
+emit_32(1131556897);
+emit_32(1098295594);
+emit_32(1119072263);
+emit_32(1131812880);
+emit_32(1098303459);
+emit_32(1119072263);
+emit_32(1132068864);
+emit_32(1098824601);
+emit_32(1119072263);
+emit_32(1081737216);
+emit_32(1098479410);
+emit_32(1118560256);
+emit_32(1090125824);
+emit_32(1099112959);
+emit_32(1118560256);
+emit_32(1094418484);
+emit_32(1100063546);
+emit_32(1118560256);
+emit_32(1098514432);
+emit_32(1100578082);
+emit_32(1118560256);
+emit_32(1100759066);
+emit_32(1101399327);
+emit_32(1118560256);
+emit_32(1102807040);
+emit_32(1101862745);
+emit_32(1118560256);
+emit_32(1104855066);
+emit_32(1102014684);
+emit_32(1118560256);
+emit_32(1106903040);
+emit_32(1101855457);
+emit_32(1118560256);
+emit_32(1108123661);
+emit_32(1102305349);
+emit_32(1118560256);
+emit_32(1109147648);
+emit_32(1102995679);
+emit_32(1118560256);
+emit_32(1110171661);
+emit_32(1103423603);
+emit_32(1118560256);
+emit_32(1111195648);
+emit_32(1103543455);
+emit_32(1118560256);
+emit_32(1112219661);
+emit_32(1103387741);
+emit_32(1118560256);
+emit_32(1113243648);
+emit_32(1102938374);
+emit_32(1118560256);
+emit_32(1114267661);
+emit_32(1102169244);
+emit_32(1118560256);
+emit_32(1115291648);
+emit_32(1101791704);
+emit_32(1118560256);
+emit_32(1116000263);
+emit_32(1101646581);
+emit_32(1118560256);
+emit_32(1116512256);
+emit_32(1101112698);
+emit_32(1118560256);
+emit_32(1117024263);
+emit_32(1101184998);
+emit_32(1118560256);
+emit_32(1117536256);
+emit_32(1101989727);
+emit_32(1118560256);
+emit_32(1118048263);
+emit_32(1102023229);
+emit_32(1118560256);
+emit_32(1118560256);
+emit_32(1101345377);
+emit_32(1118560256);
+emit_32(1119072263);
+emit_32(1101364199);
+emit_32(1118560256);
+emit_32(1119584256);
+emit_32(1101345325);
+emit_32(1118560256);
+emit_32(1120096263);
+emit_32(1101567780);
+emit_32(1118560256);
+emit_32(1120608322);
+emit_32(1101948047);
+emit_32(1118560256);
+emit_32(1121120289);
+emit_32(1102252343);
+emit_32(1118560256);
+emit_32(1121632256);
+emit_32(1102278400);
+emit_32(1118560256);
+emit_32(1122144223);
+emit_32(1102915882);
+emit_32(1118560256);
+emit_32(1122656322);
+emit_32(1103545342);
+emit_32(1118560256);
+emit_32(1123168289);
+emit_32(1104523873);
+emit_32(1118560256);
+emit_32(1123680256);
+emit_32(1105840623);
+emit_32(1118560256);
+emit_32(1124132848);
+emit_32(1107083500);
+emit_32(1118560256);
+emit_32(1124388897);
+emit_32(1107781668);
+emit_32(1118560256);
+emit_32(1124644880);
+emit_32(1108269990);
+emit_32(1118560256);
+emit_32(1124900864);
+emit_32(1108523300);
+emit_32(1118560256);
+emit_32(1125156848);
+emit_32(1109103110);
+emit_32(1118560256);
+emit_32(1125412897);
+emit_32(1109825526);
+emit_32(1118560256);
+emit_32(1125668880);
+emit_32(1110495330);
+emit_32(1118560256);
+emit_32(1125924864);
+emit_32(1110756478);
+emit_32(1118560256);
+emit_32(1126180848);
+emit_32(1111016630);
+emit_32(1118560256);
+emit_32(1126436897);
+emit_32(1111283388);
+emit_32(1118560256);
+emit_32(1126692880);
+emit_32(1111246530);
+emit_32(1118560256);
+emit_32(1126948864);
+emit_32(1110841937);
+emit_32(1118560256);
+emit_32(1127204848);
+emit_32(1110618826);
+emit_32(1118560256);
+emit_32(1127460897);
+emit_32(1110342972);
+emit_32(1118560256);
+emit_32(1127716880);
+emit_32(1109456191);
+emit_32(1118560256);
+emit_32(1127972864);
+emit_32(1108985774);
+emit_32(1118560256);
+emit_32(1128228848);
+emit_32(1108475956);
+emit_32(1118560256);
+emit_32(1128484897);
+emit_32(1107767512);
+emit_32(1118560256);
+emit_32(1128740880);
+emit_32(1107083552);
+emit_32(1118560256);
+emit_32(1128996864);
+emit_32(1105634525);
+emit_32(1118560256);
+emit_32(1129252848);
+emit_32(1104932871);
+emit_32(1118560256);
+emit_32(1129508897);
+emit_32(1104170766);
+emit_32(1118560256);
+emit_32(1129764880);
+emit_32(1103195904);
+emit_32(1118560256);
+emit_32(1130020864);
+emit_32(1102135532);
+emit_32(1118560256);
+emit_32(1130276848);
+emit_32(1101066089);
+emit_32(1118560256);
+emit_32(1130532897);
+emit_32(1100669413);
+emit_32(1118560256);
+emit_32(1130788880);
+emit_32(1099835795);
+emit_32(1118560256);
+emit_32(1131044864);
+emit_32(1099072641);
+emit_32(1118560256);
+emit_32(1131300848);
+emit_32(1097951976);
+emit_32(1118560256);
+emit_32(1131556897);
+emit_32(1097998742);
+emit_32(1118560256);
+emit_32(1131812880);
+emit_32(1097628595);
+emit_32(1118560256);
+emit_32(1132068864);
+emit_32(1098095945);
+emit_32(1118560256);
+emit_32(1081737216);
+emit_32(1099413271);
+emit_32(1118048263);
+emit_32(1090125824);
+emit_32(1099851366);
+emit_32(1118048263);
+emit_32(1094418484);
+emit_32(1100634810);
+emit_32(1118048263);
+emit_32(1098514432);
+emit_32(1101543191);
+emit_32(1118048263);
+emit_32(1100759066);
+emit_32(1102227020);
+emit_32(1118048263);
+emit_32(1102807040);
+emit_32(1102623329);
+emit_32(1118048263);
+emit_32(1104855066);
+emit_32(1102636122);
+emit_32(1118048263);
+emit_32(1106903040);
+emit_32(1102855746);
+emit_32(1118048263);
+emit_32(1108123661);
+emit_32(1103180228);
+emit_32(1118048263);
+emit_32(1109147648);
+emit_32(1103670700);
+emit_32(1118048263);
+emit_32(1110171661);
+emit_32(1104191894);
+emit_32(1118048263);
+emit_32(1111195648);
+emit_32(1104328733);
+emit_32(1118048263);
+emit_32(1112219661);
+emit_32(1103856769);
+emit_32(1118048263);
+emit_32(1113243648);
+emit_32(1103570665);
+emit_32(1118048263);
+emit_32(1114267661);
+emit_32(1103155744);
+emit_32(1118048263);
+emit_32(1115291648);
+emit_32(1103141221);
+emit_32(1118048263);
+emit_32(1116000263);
+emit_32(1102853230);
+emit_32(1118048263);
+emit_32(1116512256);
+emit_32(1102033034);
+emit_32(1118048263);
+emit_32(1117024263);
+emit_32(1102017724);
+emit_32(1118048263);
+emit_32(1117536256);
+emit_32(1102380584);
+emit_32(1118048263);
+emit_32(1118048263);
+emit_32(1102405698);
+emit_32(1118048263);
+emit_32(1118560256);
+emit_32(1101754689);
+emit_32(1118048263);
+emit_32(1119072263);
+emit_32(1101894202);
+emit_32(1118048263);
+emit_32(1119584256);
+emit_32(1101906471);
+emit_32(1118048263);
+emit_32(1120096263);
+emit_32(1102313056);
+emit_32(1118048263);
+emit_32(1120608322);
+emit_32(1102601309);
+emit_32(1118048263);
+emit_32(1121120289);
+emit_32(1102592606);
+emit_32(1118048263);
+emit_32(1121632256);
+emit_32(1102703493);
+emit_32(1118048263);
+emit_32(1122144223);
+emit_32(1102937378);
+emit_32(1118048263);
+emit_32(1122656322);
+emit_32(1103504867);
+emit_32(1118048263);
+emit_32(1123168289);
+emit_32(1104384675);
+emit_32(1118048263);
+emit_32(1123680256);
+emit_32(1105635049);
+emit_32(1118048263);
+emit_32(1124132848);
+emit_32(1106752255);
+emit_32(1118048263);
+emit_32(1124388897);
+emit_32(1107767879);
+emit_32(1118048263);
+emit_32(1124644880);
+emit_32(1108294474);
+emit_32(1118048263);
+emit_32(1124900864);
+emit_32(1108613634);
+emit_32(1118048263);
+emit_32(1125156848);
+emit_32(1109065177);
+emit_32(1118048263);
+emit_32(1125412897);
+emit_32(1109930095);
+emit_32(1118048263);
+emit_32(1125668880);
+emit_32(1110386383);
+emit_32(1118048263);
+emit_32(1125924864);
+emit_32(1110751995);
+emit_32(1118048263);
+emit_32(1126180848);
+emit_32(1111030602);
+emit_32(1118048263);
+emit_32(1126436897);
+emit_32(1111233554);
+emit_32(1118048263);
+emit_32(1126692880);
+emit_32(1111303704);
+emit_32(1118048263);
+emit_32(1126948864);
+emit_32(1111031703);
+emit_32(1118048263);
+emit_32(1127204848);
+emit_32(1110529488);
+emit_32(1118048263);
+emit_32(1127460897);
+emit_32(1110208545);
+emit_32(1118048263);
+emit_32(1127716880);
+emit_32(1109599375);
+emit_32(1118048263);
+emit_32(1127972864);
+emit_32(1109300609);
+emit_32(1118048263);
+emit_32(1128228848);
+emit_32(1108749189);
+emit_32(1118048263);
+emit_32(1128484897);
+emit_32(1108160047);
+emit_32(1118048263);
+emit_32(1128740880);
+emit_32(1107724180);
+emit_32(1118048263);
+emit_32(1128996864);
+emit_32(1106714873);
+emit_32(1118048263);
+emit_32(1129252848);
+emit_32(1104821512);
+emit_32(1118048263);
+emit_32(1129508897);
+emit_32(1103852103);
+emit_32(1118048263);
+emit_32(1129764880);
+emit_32(1103039771);
+emit_32(1118048263);
+emit_32(1130020864);
+emit_32(1102286212);
+emit_32(1118048263);
+emit_32(1130276848);
+emit_32(1101202509);
+emit_32(1118048263);
+emit_32(1130532897);
+emit_32(1100589197);
+emit_32(1118048263);
+emit_32(1130788880);
+emit_32(1100484811);
+emit_32(1118048263);
+emit_32(1131044864);
+emit_32(1099835113);
+emit_32(1118048263);
+emit_32(1131300848);
+emit_32(1098729600);
+emit_32(1118048263);
+emit_32(1131556897);
+emit_32(1097121608);
+emit_32(1118048263);
+emit_32(1131812880);
+emit_32(1098002203);
+emit_32(1118048263);
+emit_32(1132068864);
+emit_32(1097770887);
+emit_32(1118048263);
+emit_32(1081737216);
+emit_32(1100388447);
+emit_32(1117536256);
+emit_32(1090125824);
+emit_32(1100757493);
+emit_32(1117536256);
+emit_32(1094418484);
+emit_32(1101501091);
+emit_32(1117536256);
+emit_32(1098514432);
+emit_32(1102103236);
+emit_32(1117536256);
+emit_32(1100759066);
+emit_32(1102707845);
+emit_32(1117536256);
+emit_32(1102807040);
+emit_32(1103009572);
+emit_32(1117536256);
+emit_32(1104855066);
+emit_32(1103428898);
+emit_32(1117536256);
+emit_32(1106903040);
+emit_32(1103146831);
+emit_32(1117536256);
+emit_32(1108123661);
+emit_32(1103947576);
+emit_32(1117536256);
+emit_32(1109147648);
+emit_32(1104597484);
+emit_32(1117536256);
+emit_32(1110171661);
+emit_32(1104667424);
+emit_32(1117536256);
+emit_32(1111195648);
+emit_32(1104486230);
+emit_32(1117536256);
+emit_32(1112219661);
+emit_32(1104487068);
+emit_32(1117536256);
+emit_32(1113243648);
+emit_32(1104896904);
+emit_32(1117536256);
+emit_32(1114267661);
+emit_32(1104464524);
+emit_32(1117536256);
+emit_32(1115291648);
+emit_32(1104222355);
+emit_32(1117536256);
+emit_32(1116000263);
+emit_32(1103558974);
+emit_32(1117536256);
+emit_32(1116512256);
+emit_32(1103033480);
+emit_32(1117536256);
+emit_32(1117024263);
+emit_32(1102717544);
+emit_32(1117536256);
+emit_32(1117536256);
+emit_32(1102634340);
+emit_32(1117536256);
+emit_32(1118048263);
+emit_32(1102741976);
+emit_32(1117536256);
+emit_32(1118560256);
+emit_32(1102625007);
+emit_32(1117536256);
+emit_32(1119072263);
+emit_32(1102725618);
+emit_32(1117536256);
+emit_32(1119584256);
+emit_32(1103254520);
+emit_32(1117536256);
+emit_32(1120096263);
+emit_32(1103392722);
+emit_32(1117536256);
+emit_32(1120608322);
+emit_32(1103322992);
+emit_32(1117536256);
+emit_32(1121120289);
+emit_32(1103436395);
+emit_32(1117536256);
+emit_32(1121632256);
+emit_32(1103376417);
+emit_32(1117536256);
+emit_32(1122144223);
+emit_32(1103563325);
+emit_32(1117536256);
+emit_32(1122656322);
+emit_32(1103992612);
+emit_32(1117536256);
+emit_32(1123168289);
+emit_32(1104630514);
+emit_32(1117536256);
+emit_32(1123680256);
+emit_32(1106116556);
+emit_32(1117536256);
+emit_32(1124132848);
+emit_32(1106961236);
+emit_32(1117536256);
+emit_32(1124388897);
+emit_32(1107803950);
+emit_32(1117536256);
+emit_32(1124644880);
+emit_32(1108189276);
+emit_32(1117536256);
+emit_32(1124900864);
+emit_32(1108506129);
+emit_32(1117536256);
+emit_32(1125156848);
+emit_32(1109028792);
+emit_32(1117536256);
+emit_32(1125412897);
+emit_32(1109715216);
+emit_32(1117536256);
+emit_32(1125668880);
+emit_32(1110237171);
+emit_32(1117536256);
+emit_32(1125924864);
+emit_32(1110769507);
+emit_32(1117536256);
+emit_32(1126180848);
+emit_32(1111106100);
+emit_32(1117536256);
+emit_32(1126436897);
+emit_32(1111271906);
+emit_32(1117536256);
+emit_32(1126692880);
+emit_32(1111370210);
+emit_32(1117536256);
+emit_32(1126948864);
+emit_32(1111065310);
+emit_32(1117536256);
+emit_32(1127204848);
+emit_32(1110676210);
+emit_32(1117536256);
+emit_32(1127460897);
+emit_32(1110374587);
+emit_32(1117536256);
+emit_32(1127716880);
+emit_32(1110042162);
+emit_32(1117536256);
+emit_32(1127972864);
+emit_32(1109530614);
+emit_32(1117536256);
+emit_32(1128228848);
+emit_32(1108942678);
+emit_32(1117536256);
+emit_32(1128484897);
+emit_32(1108422689);
+emit_32(1117536256);
+emit_32(1128740880);
+emit_32(1108099491);
+emit_32(1117536256);
+emit_32(1128996864);
+emit_32(1107404915);
+emit_32(1117536256);
+emit_32(1129252848);
+emit_32(1105961366);
+emit_32(1117536256);
+emit_32(1129508897);
+emit_32(1104014161);
+emit_32(1117536256);
+emit_32(1129764880);
+emit_32(1102659977);
+emit_32(1117536256);
+emit_32(1130020864);
+emit_32(1101498941);
+emit_32(1117536256);
+emit_32(1130276848);
+emit_32(1100603667);
+emit_32(1117536256);
+emit_32(1130532897);
+emit_32(1100248567);
+emit_32(1117536256);
+emit_32(1130788880);
+emit_32(1100396993);
+emit_32(1117536256);
+emit_32(1131044864);
+emit_32(1099775974);
+emit_32(1117536256);
+emit_32(1131300848);
+emit_32(1098614781);
+emit_32(1117536256);
+emit_32(1131556897);
+emit_32(1097165439);
+emit_32(1117536256);
+emit_32(1131812880);
+emit_32(1096806092);
+emit_32(1117536256);
+emit_32(1132068864);
+emit_32(1097532755);
+emit_32(1117536256);
+emit_32(1081737216);
+emit_32(1101362836);
+emit_32(1117024263);
+emit_32(1090125824);
+emit_32(1102440982);
+emit_32(1117024263);
+emit_32(1094418484);
+emit_32(1102525602);
+emit_32(1117024263);
+emit_32(1098514432);
+emit_32(1102772542);
+emit_32(1117024263);
+emit_32(1100759066);
+emit_32(1102996623);
+emit_32(1117024263);
+emit_32(1102807040);
+emit_32(1103394295);
+emit_32(1117024263);
+emit_32(1104855066);
+emit_32(1103807853);
+emit_32(1117024263);
+emit_32(1106903040);
+emit_32(1104063968);
+emit_32(1117024263);
+emit_32(1108123661);
+emit_32(1104272477);
+emit_32(1117024263);
+emit_32(1109147648);
+emit_32(1105094404);
+emit_32(1117024263);
+emit_32(1110171661);
+emit_32(1105462297);
+emit_32(1117024263);
+emit_32(1111195648);
+emit_32(1105615756);
+emit_32(1117024263);
+emit_32(1112219661);
+emit_32(1105780539);
+emit_32(1117024263);
+emit_32(1113243648);
+emit_32(1105949622);
+emit_32(1117024263);
+emit_32(1114267661);
+emit_32(1105825523);
+emit_32(1117024263);
+emit_32(1115291648);
+emit_32(1105325457);
+emit_32(1117024263);
+emit_32(1116000263);
+emit_32(1104503217);
+emit_32(1117024263);
+emit_32(1116512256);
+emit_32(1103914389);
+emit_32(1117024263);
+emit_32(1117024263);
+emit_32(1103220703);
+emit_32(1117024263);
+emit_32(1117536256);
+emit_32(1103554989);
+emit_32(1117024263);
+emit_32(1118048263);
+emit_32(1103557663);
+emit_32(1117024263);
+emit_32(1118560256);
+emit_32(1103000555);
+emit_32(1117024263);
+emit_32(1119072263);
+emit_32(1103407455);
+emit_32(1117024263);
+emit_32(1119584256);
+emit_32(1103934783);
+emit_32(1117024263);
+emit_32(1120096263);
+emit_32(1103628861);
+emit_32(1117024263);
+emit_32(1120608322);
+emit_32(1103876221);
+emit_32(1117024263);
+emit_32(1121120289);
+emit_32(1104062762);
+emit_32(1117024263);
+emit_32(1121632256);
+emit_32(1104076446);
+emit_32(1117024263);
+emit_32(1122144223);
+emit_32(1104571479);
+emit_32(1117024263);
+emit_32(1122656322);
+emit_32(1105134302);
+emit_32(1117024263);
+emit_32(1123168289);
+emit_32(1105662312);
+emit_32(1117024263);
+emit_32(1123680256);
+emit_32(1106251717);
+emit_32(1117024263);
+emit_32(1124132848);
+emit_32(1107284512);
+emit_32(1117024263);
+emit_32(1124388897);
+emit_32(1107873183);
+emit_32(1117024263);
+emit_32(1124644880);
+emit_32(1108188149);
+emit_32(1117024263);
+emit_32(1124900864);
+emit_32(1108443241);
+emit_32(1117024263);
+emit_32(1125156848);
+emit_32(1109131028);
+emit_32(1117024263);
+emit_32(1125412897);
+emit_32(1109732884);
+emit_32(1117024263);
+emit_32(1125668880);
+emit_32(1110471632);
+emit_32(1117024263);
+emit_32(1125924864);
+emit_32(1111024494);
+emit_32(1117024263);
+emit_32(1126180848);
+emit_32(1111170666);
+emit_32(1117024263);
+emit_32(1126436897);
+emit_32(1111345332);
+emit_32(1117024263);
+emit_32(1126692880);
+emit_32(1111265011);
+emit_32(1117024263);
+emit_32(1126948864);
+emit_32(1110964620);
+emit_32(1117024263);
+emit_32(1127204848);
+emit_32(1110816430);
+emit_32(1117024263);
+emit_32(1127460897);
+emit_32(1110708847);
+emit_32(1117024263);
+emit_32(1127716880);
+emit_32(1110212162);
+emit_32(1117024263);
+emit_32(1127972864);
+emit_32(1109715111);
+emit_32(1117024263);
+emit_32(1128228848);
+emit_32(1108818579);
+emit_32(1117024263);
+emit_32(1128484897);
+emit_32(1108483873);
+emit_32(1117024263);
+emit_32(1128740880);
+emit_32(1108125627);
+emit_32(1117024263);
+emit_32(1128996864);
+emit_32(1107598718);
+emit_32(1117024263);
+emit_32(1129252848);
+emit_32(1106363390);
+emit_32(1117024263);
+emit_32(1129508897);
+emit_32(1104237822);
+emit_32(1117024263);
+emit_32(1129764880);
+emit_32(1102138258);
+emit_32(1117024263);
+emit_32(1130020864);
+emit_32(1100193202);
+emit_32(1117024263);
+emit_32(1130276848);
+emit_32(1099480433);
+emit_32(1117024263);
+emit_32(1130532897);
+emit_32(1099613759);
+emit_32(1117024263);
+emit_32(1130788880);
+emit_32(1099142005);
+emit_32(1117024263);
+emit_32(1131044864);
+emit_32(1098613732);
+emit_32(1117024263);
+emit_32(1131300848);
+emit_32(1097637718);
+emit_32(1117024263);
+emit_32(1131556897);
+emit_32(1096434057);
+emit_32(1117024263);
+emit_32(1131812880);
+emit_32(1095523684);
+emit_32(1117024263);
+emit_32(1132068864);
+emit_32(1096168243);
+emit_32(1117024263);
+emit_32(1081737216);
+emit_32(1102550401);
+emit_32(1116512256);
+emit_32(1090125824);
+emit_32(1103281835);
+emit_32(1116512256);
+emit_32(1094418484);
+emit_32(1103432620);
+emit_32(1116512256);
+emit_32(1098514432);
+emit_32(1103624300);
+emit_32(1116512256);
+emit_32(1100759066);
+emit_32(1103732880);
+emit_32(1116512256);
+emit_32(1102807040);
+emit_32(1103772569);
+emit_32(1116512256);
+emit_32(1104855066);
+emit_32(1104059145);
+emit_32(1116512256);
+emit_32(1106903040);
+emit_32(1104733694);
+emit_32(1116512256);
+emit_32(1108123661);
+emit_32(1105135927);
+emit_32(1116512256);
+emit_32(1109147648);
+emit_32(1105641446);
+emit_32(1116512256);
+emit_32(1110171661);
+emit_32(1106189117);
+emit_32(1116512256);
+emit_32(1111195648);
+emit_32(1106590984);
+emit_32(1116512256);
+emit_32(1112219661);
+emit_32(1106792730);
+emit_32(1116512256);
+emit_32(1113243648);
+emit_32(1107103528);
+emit_32(1116512256);
+emit_32(1114267661);
+emit_32(1107045751);
+emit_32(1116512256);
+emit_32(1115291648);
+emit_32(1106493886);
+emit_32(1116512256);
+emit_32(1116000263);
+emit_32(1105577011);
+emit_32(1116512256);
+emit_32(1116512256);
+emit_32(1104601992);
+emit_32(1116512256);
+emit_32(1117024263);
+emit_32(1103981498);
+emit_32(1116512256);
+emit_32(1117536256);
+emit_32(1104213076);
+emit_32(1116512256);
+emit_32(1118048263);
+emit_32(1103729577);
+emit_32(1116512256);
+emit_32(1118560256);
+emit_32(1103354344);
+emit_32(1116512256);
+emit_32(1119072263);
+emit_32(1103689836);
+emit_32(1116512256);
+emit_32(1119584256);
+emit_32(1104224505);
+emit_32(1116512256);
+emit_32(1120096263);
+emit_32(1104374714);
+emit_32(1116512256);
+emit_32(1120608322);
+emit_32(1104188696);
+emit_32(1116512256);
+emit_32(1121120289);
+emit_32(1104209773);
+emit_32(1116512256);
+emit_32(1121632256);
+emit_32(1104973765);
+emit_32(1116512256);
+emit_32(1122144223);
+emit_32(1105524110);
+emit_32(1116512256);
+emit_32(1122656322);
+emit_32(1106275992);
+emit_32(1116512256);
+emit_32(1123168289);
+emit_32(1106381373);
+emit_32(1116512256);
+emit_32(1123680256);
+emit_32(1106763527);
+emit_32(1116512256);
+emit_32(1124132848);
+emit_32(1107402293);
+emit_32(1116512256);
+emit_32(1124388897);
+emit_32(1107816822);
+emit_32(1116512256);
+emit_32(1124644880);
+emit_32(1108307293);
+emit_32(1116512256);
+emit_32(1124900864);
+emit_32(1108759098);
+emit_32(1116512256);
+emit_32(1125156848);
+emit_32(1109471632);
+emit_32(1116512256);
+emit_32(1125412897);
+emit_32(1109900027);
+emit_32(1116512256);
+emit_32(1125668880);
+emit_32(1110484111);
+emit_32(1116512256);
+emit_32(1125924864);
+emit_32(1110873316);
+emit_32(1116512256);
+emit_32(1126180848);
+emit_32(1111321923);
+emit_32(1116512256);
+emit_32(1126436897);
+emit_32(1111520628);
+emit_32(1116512256);
+emit_32(1126692880);
+emit_32(1111429507);
+emit_32(1116512256);
+emit_32(1126948864);
+emit_32(1110992722);
+emit_32(1116512256);
+emit_32(1127204848);
+emit_32(1110804503);
+emit_32(1116512256);
+emit_32(1127460897);
+emit_32(1110532633);
+emit_32(1116512256);
+emit_32(1127716880);
+emit_32(1110132130);
+emit_32(1116512256);
+emit_32(1127972864);
+emit_32(1109531112);
+emit_32(1116512256);
+emit_32(1128228848);
+emit_32(1108783425);
+emit_32(1116512256);
+emit_32(1128484897);
+emit_32(1108534467);
+emit_32(1116512256);
+emit_32(1128740880);
+emit_32(1108104918);
+emit_32(1116512256);
+emit_32(1128996864);
+emit_32(1107580866);
+emit_32(1116512256);
+emit_32(1129252848);
+emit_32(1106274314);
+emit_32(1116512256);
+emit_32(1129508897);
+emit_32(1104539025);
+emit_32(1116512256);
+emit_32(1129764880);
+emit_32(1102452516);
+emit_32(1116512256);
+emit_32(1130020864);
+emit_32(1100238029);
+emit_32(1116512256);
+emit_32(1130276848);
+emit_32(1098493670);
+emit_32(1116512256);
+emit_32(1130532897);
+emit_32(1097538732);
+emit_32(1116512256);
+emit_32(1130788880);
+emit_32(1097860435);
+emit_32(1116512256);
+emit_32(1131044864);
+emit_32(1096806826);
+emit_32(1116512256);
+emit_32(1131300848);
+emit_32(1095175137);
+emit_32(1116512256);
+emit_32(1131556897);
+emit_32(1095179751);
+emit_32(1116512256);
+emit_32(1131812880);
+emit_32(1094445538);
+emit_32(1116512256);
+emit_32(1132068864);
+emit_32(1094491675);
+emit_32(1116512256);
+emit_32(1081737216);
+emit_32(1103917954);
+emit_32(1116000263);
+emit_32(1090125824);
+emit_32(1104214281);
+emit_32(1116000263);
+emit_32(1094418484);
+emit_32(1104273211);
+emit_32(1116000263);
+emit_32(1098514432);
+emit_32(1104389236);
+emit_32(1116000263);
+emit_32(1100759066);
+emit_32(1104665746);
+emit_32(1116000263);
+emit_32(1102807040);
+emit_32(1104683886);
+emit_32(1116000263);
+emit_32(1104855066);
+emit_32(1104862354);
+emit_32(1116000263);
+emit_32(1106903040);
+emit_32(1105668342);
+emit_32(1116000263);
+emit_32(1108123661);
+emit_32(1106303097);
+emit_32(1116000263);
+emit_32(1109147648);
+emit_32(1106378228);
+emit_32(1116000263);
+emit_32(1110171661);
+emit_32(1106845054);
+emit_32(1116000263);
+emit_32(1111195648);
+emit_32(1107149298);
+emit_32(1116000263);
+emit_32(1112219661);
+emit_32(1107634553);
+emit_32(1116000263);
+emit_32(1113243648);
+emit_32(1107721139);
+emit_32(1116000263);
+emit_32(1114267661);
+emit_32(1107693457);
+emit_32(1116000263);
+emit_32(1115291648);
+emit_32(1107040823);
+emit_32(1116000263);
+emit_32(1116000263);
+emit_32(1106302678);
+emit_32(1116000263);
+emit_32(1116512256);
+emit_32(1105678251);
+emit_32(1116000263);
+emit_32(1117024263);
+emit_32(1104723575);
+emit_32(1116000263);
+emit_32(1117536256);
+emit_32(1104584219);
+emit_32(1116000263);
+emit_32(1118048263);
+emit_32(1104086408);
+emit_32(1116000263);
+emit_32(1118560256);
+emit_32(1103762398);
+emit_32(1116000263);
+emit_32(1119072263);
+emit_32(1104084573);
+emit_32(1116000263);
+emit_32(1119584256);
+emit_32(1104925583);
+emit_32(1116000263);
+emit_32(1120096263);
+emit_32(1104774273);
+emit_32(1116000263);
+emit_32(1120608322);
+emit_32(1104591244);
+emit_32(1116000263);
+emit_32(1121120289);
+emit_32(1104826283);
+emit_32(1116000263);
+emit_32(1121632256);
+emit_32(1105545973);
+emit_32(1116000263);
+emit_32(1122144223);
+emit_32(1105872919);
+emit_32(1116000263);
+emit_32(1122656322);
+emit_32(1106423946);
+emit_32(1116000263);
+emit_32(1123168289);
+emit_32(1107313243);
+emit_32(1116000263);
+emit_32(1123680256);
+emit_32(1107471709);
+emit_32(1116000263);
+emit_32(1124132848);
+emit_32(1107748166);
+emit_32(1116000263);
+emit_32(1124388897);
+emit_32(1108035319);
+emit_32(1116000263);
+emit_32(1124644880);
+emit_32(1108525135);
+emit_32(1116000263);
+emit_32(1124900864);
+emit_32(1109011254);
+emit_32(1116000263);
+emit_32(1125156848);
+emit_32(1109529539);
+emit_32(1116000263);
+emit_32(1125412897);
+emit_32(1109929073);
+emit_32(1116000263);
+emit_32(1125668880);
+emit_32(1110361244);
+emit_32(1116000263);
+emit_32(1125924864);
+emit_32(1111018701);
+emit_32(1116000263);
+emit_32(1126180848);
+emit_32(1111418392);
+emit_32(1116000263);
+emit_32(1126436897);
+emit_32(1111581943);
+emit_32(1116000263);
+emit_32(1126692880);
+emit_32(1111596912);
+emit_32(1116000263);
+emit_32(1126948864);
+emit_32(1111336970);
+emit_32(1116000263);
+emit_32(1127204848);
+emit_32(1110946611);
+emit_32(1116000263);
+emit_32(1127460897);
+emit_32(1110462222);
+emit_32(1116000263);
+emit_32(1127716880);
+emit_32(1109940398);
+emit_32(1116000263);
+emit_32(1127972864);
+emit_32(1109463846);
+emit_32(1116000263);
+emit_32(1128228848);
+emit_32(1108875307);
+emit_32(1116000263);
+emit_32(1128484897);
+emit_32(1108586607);
+emit_32(1116000263);
+emit_32(1128740880);
+emit_32(1108248442);
+emit_32(1116000263);
+emit_32(1128996864);
+emit_32(1107558426);
+emit_32(1116000263);
+emit_32(1129252848);
+emit_32(1106322391);
+emit_32(1116000263);
+emit_32(1129508897);
+emit_32(1104389131);
+emit_32(1116000263);
+emit_32(1129764880);
+emit_32(1102274835);
+emit_32(1116000263);
+emit_32(1130020864);
+emit_32(1100247571);
+emit_32(1116000263);
+emit_32(1130276848);
+emit_32(1098982516);
+emit_32(1116000263);
+emit_32(1130532897);
+emit_32(1097852990);
+emit_32(1116000263);
+emit_32(1130788880);
+emit_32(1097777388);
+emit_32(1116000263);
+emit_32(1131044864);
+emit_32(1096162057);
+emit_32(1116000263);
+emit_32(1131300848);
+emit_32(1093655750);
+emit_32(1116000263);
+emit_32(1131556897);
+emit_32(1093255194);
+emit_32(1116000263);
+emit_32(1131812880);
+emit_32(1092384509);
+emit_32(1116000263);
+emit_32(1132068864);
+emit_32(1092614651);
+emit_32(1116000263);
+emit_32(1081737216);
+emit_32(1104775951);
+emit_32(1115291648);
+emit_32(1090125824);
+emit_32(1105273081);
+emit_32(1115291648);
+emit_32(1094418484);
+emit_32(1105163033);
+emit_32(1115291648);
+emit_32(1098514432);
+emit_32(1105037623);
+emit_32(1115291648);
+emit_32(1100759066);
+emit_32(1105121038);
+emit_32(1115291648);
+emit_32(1102807040);
+emit_32(1105312455);
+emit_32(1115291648);
+emit_32(1104855066);
+emit_32(1106012694);
+emit_32(1115291648);
+emit_32(1106903040);
+emit_32(1106371779);
+emit_32(1115291648);
+emit_32(1108123661);
+emit_32(1106828329);
+emit_32(1115291648);
+emit_32(1109147648);
+emit_32(1107099071);
+emit_32(1115291648);
+emit_32(1110171661);
+emit_32(1107519026);
+emit_32(1115291648);
+emit_32(1111195648);
+emit_32(1107598272);
+emit_32(1115291648);
+emit_32(1112219661);
+emit_32(1107988605);
+emit_32(1115291648);
+emit_32(1113243648);
+emit_32(1108084340);
+emit_32(1115291648);
+emit_32(1114267661);
+emit_32(1107768272);
+emit_32(1115291648);
+emit_32(1115291648);
+emit_32(1107585375);
+emit_32(1115291648);
+emit_32(1116000263);
+emit_32(1107334686);
+emit_32(1115291648);
+emit_32(1116512256);
+emit_32(1106384729);
+emit_32(1115291648);
+emit_32(1117024263);
+emit_32(1105355237);
+emit_32(1115291648);
+emit_32(1117536256);
+emit_32(1105239160);
+emit_32(1115291648);
+emit_32(1118048263);
+emit_32(1104804472);
+emit_32(1115291648);
+emit_32(1118560256);
+emit_32(1104295703);
+emit_32(1115291648);
+emit_32(1119072263);
+emit_32(1104303725);
+emit_32(1115291648);
+emit_32(1119584256);
+emit_32(1104739566);
+emit_32(1115291648);
+emit_32(1120096263);
+emit_32(1104935911);
+emit_32(1115291648);
+emit_32(1120608322);
+emit_32(1104793148);
+emit_32(1115291648);
+emit_32(1121120289);
+emit_32(1105350990);
+emit_32(1115291648);
+emit_32(1121632256);
+emit_32(1105666821);
+emit_32(1115291648);
+emit_32(1122144223);
+emit_32(1106542854);
+emit_32(1115291648);
+emit_32(1122656322);
+emit_32(1107330282);
+emit_32(1115291648);
+emit_32(1123168289);
+emit_32(1107522722);
+emit_32(1115291648);
+emit_32(1123680256);
+emit_32(1107991908);
+emit_32(1115291648);
+emit_32(1124132848);
+emit_32(1108210273);
+emit_32(1115291648);
+emit_32(1124388897);
+emit_32(1108506863);
+emit_32(1115291648);
+emit_32(1124644880);
+emit_32(1108775220);
+emit_32(1115291648);
+emit_32(1124900864);
+emit_32(1109189670);
+emit_32(1115291648);
+emit_32(1125156848);
+emit_32(1109527233);
+emit_32(1115291648);
+emit_32(1125412897);
+emit_32(1109974057);
+emit_32(1115291648);
+emit_32(1125668880);
+emit_32(1110321240);
+emit_32(1115291648);
+emit_32(1125924864);
+emit_32(1110734825);
+emit_32(1115291648);
+emit_32(1126180848);
+emit_32(1111142197);
+emit_32(1115291648);
+emit_32(1126436897);
+emit_32(1111340456);
+emit_32(1115291648);
+emit_32(1126692880);
+emit_32(1111407224);
+emit_32(1115291648);
+emit_32(1126948864);
+emit_32(1111510535);
+emit_32(1115291648);
+emit_32(1127204848);
+emit_32(1111087042);
+emit_32(1115291648);
+emit_32(1127460897);
+emit_32(1110641816);
+emit_32(1115291648);
+emit_32(1127716880);
+emit_32(1110084734);
+emit_32(1115291648);
+emit_32(1127972864);
+emit_32(1109478107);
+emit_32(1115291648);
+emit_32(1128228848);
+emit_32(1108983703);
+emit_32(1115291648);
+emit_32(1128484897);
+emit_32(1108396684);
+emit_32(1115291648);
+emit_32(1128740880);
+emit_32(1108182303);
+emit_32(1115291648);
+emit_32(1128996864);
+emit_32(1107304776);
+emit_32(1115291648);
+emit_32(1129252848);
+emit_32(1105830714);
+emit_32(1115291648);
+emit_32(1129508897);
+emit_32(1104926999);
+emit_32(1115291648);
+emit_32(1129764880);
+emit_32(1103134825);
+emit_32(1115291648);
+emit_32(1130020864);
+emit_32(1101331694);
+emit_32(1115291648);
+emit_32(1130276848);
+emit_32(1100242905);
+emit_32(1115291648);
+emit_32(1130532897);
+emit_32(1099575381);
+emit_32(1115291648);
+emit_32(1130788880);
+emit_32(1098291610);
+emit_32(1115291648);
+emit_32(1131044864);
+emit_32(1096472330);
+emit_32(1115291648);
+emit_32(1131300848);
+emit_32(1094126875);
+emit_32(1115291648);
+emit_32(1131556897);
+emit_32(1092334691);
+emit_32(1115291648);
+emit_32(1131812880);
+emit_32(1091097822);
+emit_32(1115291648);
+emit_32(1132068864);
+emit_32(1090977194);
+emit_32(1115291648);
+emit_32(1081737216);
+emit_32(1105382343);
+emit_32(1114267661);
+emit_32(1090125824);
+emit_32(1105662155);
+emit_32(1114267661);
+emit_32(1094418484);
+emit_32(1105488092);
+emit_32(1114267661);
+emit_32(1098514432);
+emit_32(1105646479);
+emit_32(1114267661);
+emit_32(1100759066);
+emit_32(1105753591);
+emit_32(1114267661);
+emit_32(1102807040);
+emit_32(1106409108);
+emit_32(1114267661);
+emit_32(1104855066);
+emit_32(1106974396);
+emit_32(1114267661);
+emit_32(1106903040);
+emit_32(1107565006);
+emit_32(1114267661);
+emit_32(1108123661);
+emit_32(1107665538);
+emit_32(1114267661);
+emit_32(1109147648);
+emit_32(1107918481);
+emit_32(1114267661);
+emit_32(1110171661);
+emit_32(1108002577);
+emit_32(1114267661);
+emit_32(1111195648);
+emit_32(1107850848);
+emit_32(1114267661);
+emit_32(1112219661);
+emit_32(1108010494);
+emit_32(1114267661);
+emit_32(1113243648);
+emit_32(1108185815);
+emit_32(1114267661);
+emit_32(1114267661);
+emit_32(1108069791);
+emit_32(1114267661);
+emit_32(1115291648);
+emit_32(1107943490);
+emit_32(1114267661);
+emit_32(1116000263);
+emit_32(1107599924);
+emit_32(1114267661);
+emit_32(1116512256);
+emit_32(1106557691);
+emit_32(1114267661);
+emit_32(1117024263);
+emit_32(1106465102);
+emit_32(1114267661);
+emit_32(1117536256);
+emit_32(1106678120);
+emit_32(1114267661);
+emit_32(1118048263);
+emit_32(1106208044);
+emit_32(1114267661);
+emit_32(1118560256);
+emit_32(1105390469);
+emit_32(1114267661);
+emit_32(1119072263);
+emit_32(1105130632);
+emit_32(1114267661);
+emit_32(1119584256);
+emit_32(1105068923);
+emit_32(1114267661);
+emit_32(1120096263);
+emit_32(1105156532);
+emit_32(1114267661);
+emit_32(1120608322);
+emit_32(1105073537);
+emit_32(1114267661);
+emit_32(1121120289);
+emit_32(1105331225);
+emit_32(1114267661);
+emit_32(1121632256);
+emit_32(1105964145);
+emit_32(1114267661);
+emit_32(1122144223);
+emit_32(1106908702);
+emit_32(1114267661);
+emit_32(1122656322);
+emit_32(1107699250);
+emit_32(1114267661);
+emit_32(1123168289);
+emit_32(1107951485);
+emit_32(1114267661);
+emit_32(1123680256);
+emit_32(1108124448);
+emit_32(1114267661);
+emit_32(1124132848);
+emit_32(1108505998);
+emit_32(1114267661);
+emit_32(1124388897);
+emit_32(1108644332);
+emit_32(1114267661);
+emit_32(1124644880);
+emit_32(1108925429);
+emit_32(1114267661);
+emit_32(1124900864);
+emit_32(1109130320);
+emit_32(1114267661);
+emit_32(1125156848);
+emit_32(1109477189);
+emit_32(1114267661);
+emit_32(1125412897);
+emit_32(1110047693);
+emit_32(1114267661);
+emit_32(1125668880);
+emit_32(1110276833);
+emit_32(1114267661);
+emit_32(1125924864);
+emit_32(1110533420);
+emit_32(1114267661);
+emit_32(1126180848);
+emit_32(1110872975);
+emit_32(1114267635);
+emit_32(1126436897);
+emit_32(1110877064);
+emit_32(1114267635);
+emit_32(1126692880);
+emit_32(1111218743);
+emit_32(1114267661);
+emit_32(1126948864);
+emit_32(1111252874);
+emit_32(1114267661);
+emit_32(1127204848);
+emit_32(1110924067);
+emit_32(1114267635);
+emit_32(1127460897);
+emit_32(1110454855);
+emit_32(1114267635);
+emit_32(1127716880);
+emit_32(1109824949);
+emit_32(1114267661);
+emit_32(1127972864);
+emit_32(1109367508);
+emit_32(1114267661);
+emit_32(1128228848);
+emit_32(1108826469);
+emit_32(1114267661);
+emit_32(1128484897);
+emit_32(1108105521);
+emit_32(1114267661);
+emit_32(1128740880);
+emit_32(1107979010);
+emit_32(1114267661);
+emit_32(1128996864);
+emit_32(1107413408);
+emit_32(1114267661);
+emit_32(1129252848);
+emit_32(1106515224);
+emit_32(1114267661);
+emit_32(1129508897);
+emit_32(1105576277);
+emit_32(1114267661);
+emit_32(1129764880);
+emit_32(1104326584);
+emit_32(1114267661);
+emit_32(1130020864);
+emit_32(1103294261);
+emit_32(1114267661);
+emit_32(1130276848);
+emit_32(1102143501);
+emit_32(1114267661);
+emit_32(1130532897);
+emit_32(1101094348);
+emit_32(1114267661);
+emit_32(1130788880);
+emit_32(1100028785);
+emit_32(1114267661);
+emit_32(1131044864);
+emit_32(1098592446);
+emit_32(1114267661);
+emit_32(1131300848);
+emit_32(1095355492);
+emit_32(1114267661);
+emit_32(1131556897);
+emit_32(1093903738);
+emit_32(1114267661);
+emit_32(1131812880);
+emit_32(1093133979);
+emit_32(1114267661);
+emit_32(1132068864);
+emit_32(1092040083);
+emit_32(1114267661);
+emit_32(1081737216);
+emit_32(1105831238);
+emit_32(1113243648);
+emit_32(1090125824);
+emit_32(1105941548);
+emit_32(1113243648);
+emit_32(1094418484);
+emit_32(1106052330);
+emit_32(1113243648);
+emit_32(1098514432);
+emit_32(1106181987);
+emit_32(1113243648);
+emit_32(1100759066);
+emit_32(1106947762);
+emit_32(1113243648);
+emit_32(1102807040);
+emit_32(1107434170);
+emit_32(1113243648);
+emit_32(1104855066);
+emit_32(1107922597);
+emit_32(1113243648);
+emit_32(1106903040);
+emit_32(1108070236);
+emit_32(1113243648);
+emit_32(1108123661);
+emit_32(1108318408);
+emit_32(1113243648);
+emit_32(1109147648);
+emit_32(1108398991);
+emit_32(1113243648);
+emit_32(1110171661);
+emit_32(1108455247);
+emit_32(1113243648);
+emit_32(1111195648);
+emit_32(1108380929);
+emit_32(1113243648);
+emit_32(1112219661);
+emit_32(1108193129);
+emit_32(1113243648);
+emit_32(1113243648);
+emit_32(1108214940);
+emit_32(1113243648);
+emit_32(1114267661);
+emit_32(1108368189);
+emit_32(1113243648);
+emit_32(1115291648);
+emit_32(1108351228);
+emit_32(1113243648);
+emit_32(1116000263);
+emit_32(1108058728);
+emit_32(1113243648);
+emit_32(1116512256);
+emit_32(1107523561);
+emit_32(1113243648);
+emit_32(1117024263);
+emit_32(1107704624);
+emit_32(1113243648);
+emit_32(1117536256);
+emit_32(1107780384);
+emit_32(1113243648);
+emit_32(1118048263);
+emit_32(1107523797);
+emit_32(1113243648);
+emit_32(1118560256);
+emit_32(1106889671);
+emit_32(1113243648);
+emit_32(1119072263);
+emit_32(1105955127);
+emit_32(1113243648);
+emit_32(1119584256);
+emit_32(1105678513);
+emit_32(1113243648);
+emit_32(1120096263);
+emit_32(1105031175);
+emit_32(1113243648);
+emit_32(1120608322);
+emit_32(1105177346);
+emit_32(1113243648);
+emit_32(1121120289);
+emit_32(1105487043);
+emit_32(1113243648);
+emit_32(1121632256);
+emit_32(1105785782);
+emit_32(1113243648);
+emit_32(1122144223);
+emit_32(1106626950);
+emit_32(1113243648);
+emit_32(1122656322);
+emit_32(1107401638);
+emit_32(1113243648);
+emit_32(1123168289);
+emit_32(1107915047);
+emit_32(1113243648);
+emit_32(1123680256);
+emit_32(1108256070);
+emit_32(1113243648);
+emit_32(1124132848);
+emit_32(1108654529);
+emit_32(1113243648);
+emit_32(1124388897);
+emit_32(1108830034);
+emit_32(1113243648);
+emit_32(1124644880);
+emit_32(1108955156);
+emit_32(1113243648);
+emit_32(1124900864);
+emit_32(1109136769);
+emit_32(1113243648);
+emit_32(1125156848);
+emit_32(1109352907);
+emit_32(1113243648);
+emit_32(1125412897);
+emit_32(1109748534);
+emit_32(1113243648);
+emit_32(1125668880);
+emit_32(1109939926);
+emit_32(1113243648);
+emit_32(1125924864);
+emit_32(1110036867);
+emit_32(1113243648);
+emit_32(1126180848);
+emit_32(1110259401);
+emit_32(1113243648);
+emit_32(1126436897);
+emit_32(1110514257);
+emit_32(1113243648);
+emit_32(1126692880);
+emit_32(1110728167);
+emit_32(1113243648);
+emit_32(1126948864);
+emit_32(1110690470);
+emit_32(1113243648);
+emit_32(1127204848);
+emit_32(1110543172);
+emit_32(1113243648);
+emit_32(1127460897);
+emit_32(1110206867);
+emit_32(1113243648);
+emit_32(1127716880);
+emit_32(1109792994);
+emit_32(1113243648);
+emit_32(1127972864);
+emit_32(1109392779);
+emit_32(1113243648);
+emit_32(1128228848);
+emit_32(1108657596);
+emit_32(1113243648);
+emit_32(1128484897);
+emit_32(1108142902);
+emit_32(1113243648);
+emit_32(1128740880);
+emit_32(1107935625);
+emit_32(1113243648);
+emit_32(1128996864);
+emit_32(1107490216);
+emit_32(1113243648);
+emit_32(1129252848);
+emit_32(1107021844);
+emit_32(1113243648);
+emit_32(1129508897);
+emit_32(1106216328);
+emit_32(1113243648);
+emit_32(1129764880);
+emit_32(1105553103);
+emit_32(1113243648);
+emit_32(1130020864);
+emit_32(1104695106);
+emit_32(1113243648);
+emit_32(1130276848);
+emit_32(1103352404);
+emit_32(1113243648);
+emit_32(1130532897);
+emit_32(1101904950);
+emit_32(1113243648);
+emit_32(1130788880);
+emit_32(1101020476);
+emit_32(1113243648);
+emit_32(1131044864);
+emit_32(1099594623);
+emit_32(1113243648);
+emit_32(1131300848);
+emit_32(1097008782);
+emit_32(1113243648);
+emit_32(1131556897);
+emit_32(1094881640);
+emit_32(1113243648);
+emit_32(1131812880);
+emit_32(1093566726);
+emit_32(1113243648);
+emit_32(1132068864);
+emit_32(1093310244);
+emit_32(1113243648);
+emit_32(1081737216);
+emit_32(1106473438);
+emit_32(1112219661);
+emit_32(1090125824);
+emit_32(1106755138);
+emit_32(1112219661);
+emit_32(1094418484);
+emit_32(1106932662);
+emit_32(1112219661);
+emit_32(1098514432);
+emit_32(1107310071);
+emit_32(1112219661);
+emit_32(1100759066);
+emit_32(1107799179);
+emit_32(1112219661);
+emit_32(1102807040);
+emit_32(1107999693);
+emit_32(1112219661);
+emit_32(1104855066);
+emit_32(1108293059);
+emit_32(1112219661);
+emit_32(1106903040);
+emit_32(1108560839);
+emit_32(1112219661);
+emit_32(1108123661);
+emit_32(1108867783);
+emit_32(1112219661);
+emit_32(1109147648);
+emit_32(1108932769);
+emit_32(1112219661);
+emit_32(1110171661);
+emit_32(1108709527);
+emit_32(1112219661);
+emit_32(1111195648);
+emit_32(1108681661);
+emit_32(1112219661);
+emit_32(1112219661);
+emit_32(1108461250);
+emit_32(1112219661);
+emit_32(1113243648);
+emit_32(1108501751);
+emit_32(1112219661);
+emit_32(1114267661);
+emit_32(1108538058);
+emit_32(1112219661);
+emit_32(1115291648);
+emit_32(1108506155);
+emit_32(1112219661);
+emit_32(1116000263);
+emit_32(1108331069);
+emit_32(1112219661);
+emit_32(1116512256);
+emit_32(1108130713);
+emit_32(1112219661);
+emit_32(1117024263);
+emit_32(1108289153);
+emit_32(1112219661);
+emit_32(1117536256);
+emit_32(1108320872);
+emit_32(1112219661);
+emit_32(1118048263);
+emit_32(1108083946);
+emit_32(1112219661);
+emit_32(1118560256);
+emit_32(1107747196);
+emit_32(1112219661);
+emit_32(1119072263);
+emit_32(1107465942);
+emit_32(1112219661);
+emit_32(1119584256);
+emit_32(1106748480);
+emit_32(1112219661);
+emit_32(1120096263);
+emit_32(1105589856);
+emit_32(1112219661);
+emit_32(1120608322);
+emit_32(1105803398);
+emit_32(1112219661);
+emit_32(1121120289);
+emit_32(1106245426);
+emit_32(1112219661);
+emit_32(1121632256);
+emit_32(1106538345);
+emit_32(1112219661);
+emit_32(1122144223);
+emit_32(1107136191);
+emit_32(1112219661);
+emit_32(1122656322);
+emit_32(1107495066);
+emit_32(1112219661);
+emit_32(1123168289);
+emit_32(1107886552);
+emit_32(1112219661);
+emit_32(1123680256);
+emit_32(1108441668);
+emit_32(1112219661);
+emit_32(1124132848);
+emit_32(1108593266);
+emit_32(1112219661);
+emit_32(1124388897);
+emit_32(1108683470);
+emit_32(1112219661);
+emit_32(1124644880);
+emit_32(1108825211);
+emit_32(1112219661);
+emit_32(1124900864);
+emit_32(1108891271);
+emit_32(1112219661);
+emit_32(1125156848);
+emit_32(1109395715);
+emit_32(1112219661);
+emit_32(1125412897);
+emit_32(1109608864);
+emit_32(1112219661);
+emit_32(1125668880);
+emit_32(1110023576);
+emit_32(1112219661);
+emit_32(1125924864);
+emit_32(1110077237);
+emit_32(1112219661);
+emit_32(1126180848);
+emit_32(1110323678);
+emit_32(1112219661);
+emit_32(1126436897);
+emit_32(1110319510);
+emit_32(1112219661);
+emit_32(1126692880);
+emit_32(1110497559);
+emit_32(1112219635);
+emit_32(1126948864);
+emit_32(1110356630);
+emit_32(1112219661);
+emit_32(1127204848);
+emit_32(1110231745);
+emit_32(1112219661);
+emit_32(1127460897);
+emit_32(1110168568);
+emit_32(1112219661);
+emit_32(1127716880);
+emit_32(1109786440);
+emit_32(1112219661);
+emit_32(1127972864);
+emit_32(1109264984);
+emit_32(1112219661);
+emit_32(1128228848);
+emit_32(1108914445);
+emit_32(1112219661);
+emit_32(1128484897);
+emit_32(1108210640);
+emit_32(1112219661);
+emit_32(1128740880);
+emit_32(1107987897);
+emit_32(1112219661);
+emit_32(1128996864);
+emit_32(1107869644);
+emit_32(1112219661);
+emit_32(1129252848);
+emit_32(1107326534);
+emit_32(1112219661);
+emit_32(1129508897);
+emit_32(1106725831);
+emit_32(1112219661);
+emit_32(1129764880);
+emit_32(1106425466);
+emit_32(1112219661);
+emit_32(1130020864);
+emit_32(1105264955);
+emit_32(1112219661);
+emit_32(1130276848);
+emit_32(1103574860);
+emit_32(1112219661);
+emit_32(1130532897);
+emit_32(1102181460);
+emit_32(1112219661);
+emit_32(1130788880);
+emit_32(1101485677);
+emit_32(1112219661);
+emit_32(1131044864);
+emit_32(1100402288);
+emit_32(1112219661);
+emit_32(1131300848);
+emit_32(1098898421);
+emit_32(1112219661);
+emit_32(1131556897);
+emit_32(1095522425);
+emit_32(1112219661);
+emit_32(1131812880);
+emit_32(1094313732);
+emit_32(1112219661);
+emit_32(1132068864);
+emit_32(1094995201);
+emit_32(1112219661);
+emit_32(1081737216);
+emit_32(1106707585);
+emit_32(1111195648);
+emit_32(1090125824);
+emit_32(1107420879);
+emit_32(1111195648);
+emit_32(1094418484);
+emit_32(1107741455);
+emit_32(1111195648);
+emit_32(1098514432);
+emit_32(1108119388);
+emit_32(1111195648);
+emit_32(1100759066);
+emit_32(1108616649);
+emit_32(1111195648);
+emit_32(1102807040);
+emit_32(1108965851);
+emit_32(1111195648);
+emit_32(1104855066);
+emit_32(1109029919);
+emit_32(1111195648);
+emit_32(1106903040);
+emit_32(1109125602);
+emit_32(1111195648);
+emit_32(1108123661);
+emit_32(1109390551);
+emit_32(1111195648);
+emit_32(1109147648);
+emit_32(1109477215);
+emit_32(1111195648);
+emit_32(1110171661);
+emit_32(1109385334);
+emit_32(1111195648);
+emit_32(1111195648);
+emit_32(1109314608);
+emit_32(1111195648);
+emit_32(1112219661);
+emit_32(1109240919);
+emit_32(1111195648);
+emit_32(1113243648);
+emit_32(1108946400);
+emit_32(1111195648);
+emit_32(1114267661);
+emit_32(1108953006);
+emit_32(1111195648);
+emit_32(1115291648);
+emit_32(1109031911);
+emit_32(1111195648);
+emit_32(1116000263);
+emit_32(1108925062);
+emit_32(1111195648);
+emit_32(1116512256);
+emit_32(1108595887);
+emit_32(1111195648);
+emit_32(1117024263);
+emit_32(1108683941);
+emit_32(1111195648);
+emit_32(1117536256);
+emit_32(1108833809);
+emit_32(1111195648);
+emit_32(1118048263);
+emit_32(1108582282);
+emit_32(1111195648);
+emit_32(1118560256);
+emit_32(1108393093);
+emit_32(1111195648);
+emit_32(1119072263);
+emit_32(1108034008);
+emit_32(1111195648);
+emit_32(1119584256);
+emit_32(1107578926);
+emit_32(1111195648);
+emit_32(1120096263);
+emit_32(1106764313);
+emit_32(1111195648);
+emit_32(1120608322);
+emit_32(1106737365);
+emit_32(1111195648);
+emit_32(1121120289);
+emit_32(1107324568);
+emit_32(1111195648);
+emit_32(1121632256);
+emit_32(1107570511);
+emit_32(1111195648);
+emit_32(1122144223);
+emit_32(1107538818);
+emit_32(1111195648);
+emit_32(1122656322);
+emit_32(1107646926);
+emit_32(1111195648);
+emit_32(1123168289);
+emit_32(1107876984);
+emit_32(1111195648);
+emit_32(1123680256);
+emit_32(1108102060);
+emit_32(1111195648);
+emit_32(1124132848);
+emit_32(1108560812);
+emit_32(1111195648);
+emit_32(1124388897);
+emit_32(1108645328);
+emit_32(1111195648);
+emit_32(1124644880);
+emit_32(1108748770);
+emit_32(1111195648);
+emit_32(1124900864);
+emit_32(1109085782);
+emit_32(1111195648);
+emit_32(1125156848);
+emit_32(1109583226);
+emit_32(1111195648);
+emit_32(1125412897);
+emit_32(1109638486);
+emit_32(1111195648);
+emit_32(1125668880);
+emit_32(1110035425);
+emit_32(1111195648);
+emit_32(1125924864);
+emit_32(1110433989);
+emit_32(1111195648);
+emit_32(1126180848);
+emit_32(1110499420);
+emit_32(1111195648);
+emit_32(1126436897);
+emit_32(1110684860);
+emit_32(1111195648);
+emit_32(1126692880);
+emit_32(1110426858);
+emit_32(1111195648);
+emit_32(1126948864);
+emit_32(1110251405);
+emit_32(1111195648);
+emit_32(1127204848);
+emit_32(1110246503);
+emit_32(1111195648);
+emit_32(1127460897);
+emit_32(1110057366);
+emit_32(1111195648);
+emit_32(1127716880);
+emit_32(1109702135);
+emit_32(1111195648);
+emit_32(1127972864);
+emit_32(1109224404);
+emit_32(1111195648);
+emit_32(1128228848);
+emit_32(1108823035);
+emit_32(1111195648);
+emit_32(1128484897);
+emit_32(1108466703);
+emit_32(1111195648);
+emit_32(1128740880);
+emit_32(1108265009);
+emit_32(1111195648);
+emit_32(1128996864);
+emit_32(1108131919);
+emit_32(1111195648);
+emit_32(1129252848);
+emit_32(1107543668);
+emit_32(1111195648);
+emit_32(1129508897);
+emit_32(1106964749);
+emit_32(1111195648);
+emit_32(1129764880);
+emit_32(1106629467);
+emit_32(1111195648);
+emit_32(1130020864);
+emit_32(1105373587);
+emit_32(1111195648);
+emit_32(1130276848);
+emit_32(1103657645);
+emit_32(1111195648);
+emit_32(1130532897);
+emit_32(1103203244);
+emit_32(1111195648);
+emit_32(1130788880);
+emit_32(1102255384);
+emit_32(1111195648);
+emit_32(1131044864);
+emit_32(1100737203);
+emit_32(1111195648);
+emit_32(1131300848);
+emit_32(1099366557);
+emit_32(1111195648);
+emit_32(1131556897);
+emit_32(1096754817);
+emit_32(1111195648);
+emit_32(1131812880);
+emit_32(1096073871);
+emit_32(1111195648);
+emit_32(1132068864);
+emit_32(1096026581);
+emit_32(1111195648);
+emit_32(1081737216);
+emit_32(1107240944);
+emit_32(1110171661);
+emit_32(1090125824);
+emit_32(1107823611);
+emit_32(1110171661);
+emit_32(1094418484);
+emit_32(1108408821);
+emit_32(1110171661);
+emit_32(1098514432);
+emit_32(1108701925);
+emit_32(1110171661);
+emit_32(1100759066);
+emit_32(1109285326);
+emit_32(1110171661);
+emit_32(1102807040);
+emit_32(1109681609);
+emit_32(1110171661);
+emit_32(1104855066);
+emit_32(1109940345);
+emit_32(1110171661);
+emit_32(1106903040);
+emit_32(1109939952);
+emit_32(1110171661);
+emit_32(1108123661);
+emit_32(1109971121);
+emit_32(1110171661);
+emit_32(1109147648);
+emit_32(1110303834);
+emit_32(1110171661);
+emit_32(1110171661);
+emit_32(1110120962);
+emit_32(1110171661);
+emit_32(1111195648);
+emit_32(1110000979);
+emit_32(1110171661);
+emit_32(1112219661);
+emit_32(1109972484);
+emit_32(1110171661);
+emit_32(1113243648);
+emit_32(1109736686);
+emit_32(1110171661);
+emit_32(1114267661);
+emit_32(1109619612);
+emit_32(1110171661);
+emit_32(1115291648);
+emit_32(1109518608);
+emit_32(1110171661);
+emit_32(1116000263);
+emit_32(1109430003);
+emit_32(1110171661);
+emit_32(1116512256);
+emit_32(1109161909);
+emit_32(1110171661);
+emit_32(1117024263);
+emit_32(1109167492);
+emit_32(1110171661);
+emit_32(1117536256);
+emit_32(1109168515);
+emit_32(1110171661);
+emit_32(1118048263);
+emit_32(1109105626);
+emit_32(1110171661);
+emit_32(1118560256);
+emit_32(1108756686);
+emit_32(1110171661);
+emit_32(1119072263);
+emit_32(1108552555);
+emit_32(1110171661);
+emit_32(1119584256);
+emit_32(1108023286);
+emit_32(1110171661);
+emit_32(1120096263);
+emit_32(1107602178);
+emit_32(1110171661);
+emit_32(1120608322);
+emit_32(1107405649);
+emit_32(1110171661);
+emit_32(1121120289);
+emit_32(1107570616);
+emit_32(1110171661);
+emit_32(1121632256);
+emit_32(1107660164);
+emit_32(1110171661);
+emit_32(1122144223);
+emit_32(1107756004);
+emit_32(1110171661);
+emit_32(1122656322);
+emit_32(1107706800);
+emit_32(1110171661);
+emit_32(1123168289);
+emit_32(1107795667);
+emit_32(1110171661);
+emit_32(1123680256);
+emit_32(1108061218);
+emit_32(1110171661);
+emit_32(1124132848);
+emit_32(1108159365);
+emit_32(1110171661);
+emit_32(1124388897);
+emit_32(1108652615);
+emit_32(1110171661);
+emit_32(1124644880);
+emit_32(1108895151);
+emit_32(1110171661);
+emit_32(1124900864);
+emit_32(1109068900);
+emit_32(1110171661);
+emit_32(1125156848);
+emit_32(1109317911);
+emit_32(1110171661);
+emit_32(1125412897);
+emit_32(1109583646);
+emit_32(1110171661);
+emit_32(1125668880);
+emit_32(1109982314);
+emit_32(1110171661);
+emit_32(1125924864);
+emit_32(1110319589);
+emit_32(1110171661);
+emit_32(1126180848);
+emit_32(1110618800);
+emit_32(1110171635);
+emit_32(1126436897);
+emit_32(1110589833);
+emit_32(1110171661);
+emit_32(1126692880);
+emit_32(1110601236);
+emit_32(1110171661);
+emit_32(1126948864);
+emit_32(1110238219);
+emit_32(1110171661);
+emit_32(1127204848);
+emit_32(1110066804);
+emit_32(1110171661);
+emit_32(1127460897);
+emit_32(1109910933);
+emit_32(1110171661);
+emit_32(1127716880);
+emit_32(1109484739);
+emit_32(1110171661);
+emit_32(1127972864);
+emit_32(1109107907);
+emit_32(1110171661);
+emit_32(1128228848);
+emit_32(1108797633);
+emit_32(1110171661);
+emit_32(1128484897);
+emit_32(1108483428);
+emit_32(1110171661);
+emit_32(1128740880);
+emit_32(1108328081);
+emit_32(1110171661);
+emit_32(1128996864);
+emit_32(1108125627);
+emit_32(1110171661);
+emit_32(1129252848);
+emit_32(1107731808);
+emit_32(1110171661);
+emit_32(1129508897);
+emit_32(1106917982);
+emit_32(1110171661);
+emit_32(1129764880);
+emit_32(1106313688);
+emit_32(1110171661);
+emit_32(1130020864);
+emit_32(1105521174);
+emit_32(1110171661);
+emit_32(1130276848);
+emit_32(1104211450);
+emit_32(1110171661);
+emit_32(1130532897);
+emit_32(1103253052);
+emit_32(1110171661);
+emit_32(1130788880);
+emit_32(1102325744);
+emit_32(1110171661);
+emit_32(1131044864);
+emit_32(1101081451);
+emit_32(1110171661);
+emit_32(1131300848);
+emit_32(1099684171);
+emit_32(1110171661);
+emit_32(1131556897);
+emit_32(1098145962);
+emit_32(1110171661);
+emit_32(1131812880);
+emit_32(1096588198);
+emit_32(1110171661);
+emit_32(1132068864);
+emit_32(1095942590);
+emit_32(1110171661);
+emit_32(1081737216);
+emit_32(1108060956);
+emit_32(1109147648);
+emit_32(1090125824);
+emit_32(1108546971);
+emit_32(1109147648);
+emit_32(1094418484);
+emit_32(1109017939);
+emit_32(1109147648);
+emit_32(1098514432);
+emit_32(1109407144);
+emit_32(1109147648);
+emit_32(1100759066);
+emit_32(1109980401);
+emit_32(1109147648);
+emit_32(1102807040);
+emit_32(1110240972);
+emit_32(1109147648);
+emit_32(1104855066);
+emit_32(1110658358);
+emit_32(1109147648);
+emit_32(1106903040);
+emit_32(1110751524);
+emit_32(1109147648);
+emit_32(1108123661);
+emit_32(1110695844);
+emit_32(1109147648);
+emit_32(1109147648);
+emit_32(1110721089);
+emit_32(1109147648);
+emit_32(1110171661);
+emit_32(1110727406);
+emit_32(1109147648);
+emit_32(1111195648);
+emit_32(1110842173);
+emit_32(1109147648);
+emit_32(1112219661);
+emit_32(1110770765);
+emit_32(1109147648);
+emit_32(1113243648);
+emit_32(1110489091);
+emit_32(1109147648);
+emit_32(1114267661);
+emit_32(1110249518);
+emit_32(1109147648);
+emit_32(1115291648);
+emit_32(1110116087);
+emit_32(1109147648);
+emit_32(1116000263);
+emit_32(1110026722);
+emit_32(1109147648);
+emit_32(1116512256);
+emit_32(1109757343);
+emit_32(1109147648);
+emit_32(1117024263);
+emit_32(1109707325);
+emit_32(1109147648);
+emit_32(1117536256);
+emit_32(1109736109);
+emit_32(1109147648);
+emit_32(1118048263);
+emit_32(1109670940);
+emit_32(1109147648);
+emit_32(1118560256);
+emit_32(1109409425);
+emit_32(1109147648);
+emit_32(1119072263);
+emit_32(1109060459);
+emit_32(1109147648);
+emit_32(1119584256);
+emit_32(1108683601);
+emit_32(1109147648);
+emit_32(1120096263);
+emit_32(1108291643);
+emit_32(1109147648);
+emit_32(1120608322);
+emit_32(1108134645);
+emit_32(1109147648);
+emit_32(1121120289);
+emit_32(1107726382);
+emit_32(1109147648);
+emit_32(1121632256);
+emit_32(1107627056);
+emit_32(1109147648);
+emit_32(1122144223);
+emit_32(1107778260);
+emit_32(1109147648);
+emit_32(1122656322);
+emit_32(1108018568);
+emit_32(1109147648);
+emit_32(1123168289);
+emit_32(1107783031);
+emit_32(1109147648);
+emit_32(1123680256);
+emit_32(1108023470);
+emit_32(1109147648);
+emit_32(1124132848);
+emit_32(1108274551);
+emit_32(1109147648);
+emit_32(1124388897);
+emit_32(1108502721);
+emit_32(1109147648);
+emit_32(1124644880);
+emit_32(1108792679);
+emit_32(1109147648);
+emit_32(1124900864);
+emit_32(1108934997);
+emit_32(1109147648);
+emit_32(1125156848);
+emit_32(1109183483);
+emit_32(1109147648);
+emit_32(1125412897);
+emit_32(1109454645);
+emit_32(1109147648);
+emit_32(1125668880);
+emit_32(1109678699);
+emit_32(1109147648);
+emit_32(1125924864);
+emit_32(1110022658);
+emit_32(1109147648);
+emit_32(1126180848);
+emit_32(1110147151);
+emit_32(1109147648);
+emit_32(1126436897);
+emit_32(1110222596);
+emit_32(1109147648);
+emit_32(1126692880);
+emit_32(1110347035);
+emit_32(1109147648);
+emit_32(1126948864);
+emit_32(1110235231);
+emit_32(1109147648);
+emit_32(1127204848);
+emit_32(1110061194);
+emit_32(1109147648);
+emit_32(1127460897);
+emit_32(1109745022);
+emit_32(1109147648);
+emit_32(1127716880);
+emit_32(1109246162);
+emit_32(1109147648);
+emit_32(1127972864);
+emit_32(1109124003);
+emit_32(1109147648);
+emit_32(1128228848);
+emit_32(1108700011);
+emit_32(1109147648);
+emit_32(1128484897);
+emit_32(1108308525);
+emit_32(1109147648);
+emit_32(1128740880);
+emit_32(1108062844);
+emit_32(1109147648);
+emit_32(1128996864);
+emit_32(1107977306);
+emit_32(1109147648);
+emit_32(1129252848);
+emit_32(1107731205);
+emit_32(1109147648);
+emit_32(1129508897);
+emit_32(1107357781);
+emit_32(1109147648);
+emit_32(1129764880);
+emit_32(1106463529);
+emit_32(1109147648);
+emit_32(1130020864);
+emit_32(1105450081);
+emit_32(1109147648);
+emit_32(1130276848);
+emit_32(1104493307);
+emit_32(1109147648);
+emit_32(1130532897);
+emit_32(1103358434);
+emit_32(1109147648);
+emit_32(1130788880);
+emit_32(1102558632);
+emit_32(1109147648);
+emit_32(1131044864);
+emit_32(1101338404);
+emit_32(1109147648);
+emit_32(1131300848);
+emit_32(1100196558);
+emit_32(1109147648);
+emit_32(1131556897);
+emit_32(1099061264);
+emit_32(1109147648);
+emit_32(1131812880);
+emit_32(1096545521);
+emit_32(1109147648);
+emit_32(1132068864);
+emit_32(1096018716);
+emit_32(1109147648);
+emit_32(1081737216);
+emit_32(1109011386);
+emit_32(1108123661);
+emit_32(1090125824);
+emit_32(1109203904);
+emit_32(1108123661);
+emit_32(1094418484);
+emit_32(1109519263);
+emit_32(1108123661);
+emit_32(1098514432);
+emit_32(1109988842);
+emit_32(1108123661);
+emit_32(1100759066);
+emit_32(1110461461);
+emit_32(1108123635);
+emit_32(1102807040);
+emit_32(1110941919);
+emit_32(1108123635);
+emit_32(1104855066);
+emit_32(1111344415);
+emit_32(1108123661);
+emit_32(1106903040);
+emit_32(1111428956);
+emit_32(1108123661);
+emit_32(1108123661);
+emit_32(1111187862);
+emit_32(1108123635);
+emit_32(1109147648);
+emit_32(1111258851);
+emit_32(1108123635);
+emit_32(1110171661);
+emit_32(1111121199);
+emit_32(1108123661);
+emit_32(1111195648);
+emit_32(1111334951);
+emit_32(1108123661);
+emit_32(1112219661);
+emit_32(1111280871);
+emit_32(1108123635);
+emit_32(1113243648);
+emit_32(1111290597);
+emit_32(1108123635);
+emit_32(1114267661);
+emit_32(1111219660);
+emit_32(1108123661);
+emit_32(1115291648);
+emit_32(1110791212);
+emit_32(1108123661);
+emit_32(1116000263);
+emit_32(1110556043);
+emit_32(1108123635);
+emit_32(1116512256);
+emit_32(1110407643);
+emit_32(1108123635);
+emit_32(1117024263);
+emit_32(1110379174);
+emit_32(1108123661);
+emit_32(1117536256);
+emit_32(1110347979);
+emit_32(1108123661);
+emit_32(1118048263);
+emit_32(1110338280);
+emit_32(1108123661);
+emit_32(1118560256);
+emit_32(1109911536);
+emit_32(1108123661);
+emit_32(1119072263);
+emit_32(1109549908);
+emit_32(1108123661);
+emit_32(1119584256);
+emit_32(1109081142);
+emit_32(1108123661);
+emit_32(1120096263);
+emit_32(1108718492);
+emit_32(1108123661);
+emit_32(1120608322);
+emit_32(1108472470);
+emit_32(1108123661);
+emit_32(1121120289);
+emit_32(1108029604);
+emit_32(1108123661);
+emit_32(1121632256);
+emit_32(1107454879);
+emit_32(1108123661);
+emit_32(1122144223);
+emit_32(1107399252);
+emit_32(1108123661);
+emit_32(1122656322);
+emit_32(1107660793);
+emit_32(1108123661);
+emit_32(1123168289);
+emit_32(1107749241);
+emit_32(1108123661);
+emit_32(1123680256);
+emit_32(1107770448);
+emit_32(1108123661);
+emit_32(1124132848);
+emit_32(1108146730);
+emit_32(1108123661);
+emit_32(1124388897);
+emit_32(1108341608);
+emit_32(1108123661);
+emit_32(1124644880);
+emit_32(1108443057);
+emit_32(1108123661);
+emit_32(1124900864);
+emit_32(1108765442);
+emit_32(1108123661);
+emit_32(1125156848);
+emit_32(1108966061);
+emit_32(1108123661);
+emit_32(1125412897);
+emit_32(1109234287);
+emit_32(1108123661);
+emit_32(1125668880);
+emit_32(1109396423);
+emit_32(1108123661);
+emit_32(1125924864);
+emit_32(1109622050);
+emit_32(1108123661);
+emit_32(1126180848);
+emit_32(1109584826);
+emit_32(1108123661);
+emit_32(1126436897);
+emit_32(1109832945);
+emit_32(1108123661);
+emit_32(1126692880);
+emit_32(1109962759);
+emit_32(1108123661);
+emit_32(1126948864);
+emit_32(1109897773);
+emit_32(1108123661);
+emit_32(1127204848);
+emit_32(1109645800);
+emit_32(1108123661);
+emit_32(1127460897);
+emit_32(1109215386);
+emit_32(1108123661);
+emit_32(1127716880);
+emit_32(1108859027);
+emit_32(1108123661);
+emit_32(1127972864);
+emit_32(1108683050);
+emit_32(1108123661);
+emit_32(1128228848);
+emit_32(1108384704);
+emit_32(1108123661);
+emit_32(1128484897);
+emit_32(1108232031);
+emit_32(1108123661);
+emit_32(1128740880);
+emit_32(1108097027);
+emit_32(1108123661);
+emit_32(1128996864);
+emit_32(1107779178);
+emit_32(1108123661);
+emit_32(1129252848);
+emit_32(1107602938);
+emit_32(1108123661);
+emit_32(1129508897);
+emit_32(1107406278);
+emit_32(1108123661);
+emit_32(1129764880);
+emit_32(1106809874);
+emit_32(1108123661);
+emit_32(1130020864);
+emit_32(1105779438);
+emit_32(1108123661);
+emit_32(1130276848);
+emit_32(1104361030);
+emit_32(1108123661);
+emit_32(1130532897);
+emit_32(1102937430);
+emit_32(1108123661);
+emit_32(1130788880);
+emit_32(1102218107);
+emit_32(1108123661);
+emit_32(1131044864);
+emit_32(1101488456);
+emit_32(1108123661);
+emit_32(1131300848);
+emit_32(1100298741);
+emit_32(1108123661);
+emit_32(1131556897);
+emit_32(1099192756);
+emit_32(1108123661);
+emit_32(1131812880);
+emit_32(1097382704);
+emit_32(1108123661);
+emit_32(1132068864);
+emit_32(1096297952);
+emit_32(1108123661);
+emit_32(1081737216);
+emit_32(1109770397);
+emit_32(1106903040);
+emit_32(1090125824);
+emit_32(1109777737);
+emit_32(1106903040);
+emit_32(1094418484);
+emit_32(1110054299);
+emit_32(1106903040);
+emit_32(1098514432);
+emit_32(1110481751);
+emit_32(1106903040);
+emit_32(1100759066);
+emit_32(1110921734);
+emit_32(1106903040);
+emit_32(1102807040);
+emit_32(1111312643);
+emit_32(1106903040);
+emit_32(1104855066);
+emit_32(1111792130);
+emit_32(1106903040);
+emit_32(1106903040);
+emit_32(1111787124);
+emit_32(1106903040);
+emit_32(1108123661);
+emit_32(1111611697);
+emit_32(1106903040);
+emit_32(1109147648);
+emit_32(1111513262);
+emit_32(1106903040);
+emit_32(1110171661);
+emit_32(1111366278);
+emit_32(1106903040);
+emit_32(1111195648);
+emit_32(1111544090);
+emit_32(1106903040);
+emit_32(1112219661);
+emit_32(1111560762);
+emit_32(1106903040);
+emit_32(1113243648);
+emit_32(1111668713);
+emit_32(1106903040);
+emit_32(1114267661);
+emit_32(1111792235);
+emit_32(1106903040);
+emit_32(1115291648);
+emit_32(1111628474);
+emit_32(1106903040);
+emit_32(1116000263);
+emit_32(1111299169);
+emit_32(1106903040);
+emit_32(1116512256);
+emit_32(1111051180);
+emit_32(1106903040);
+emit_32(1117024263);
+emit_32(1110941447);
+emit_32(1106903040);
+emit_32(1117536256);
+emit_32(1110781408);
+emit_32(1106903040);
+emit_32(1118048263);
+emit_32(1110736162);
+emit_32(1106903040);
+emit_32(1118560256);
+emit_32(1110488462);
+emit_32(1106903040);
+emit_32(1119072263);
+emit_32(1109937383);
+emit_32(1106903040);
+emit_32(1119584256);
+emit_32(1109345724);
+emit_32(1106903040);
+emit_32(1120096263);
+emit_32(1108919032);
+emit_32(1106903040);
+emit_32(1120608322);
+emit_32(1108581522);
+emit_32(1106903040);
+emit_32(1121120289);
+emit_32(1108342132);
+emit_32(1106903040);
+emit_32(1121632256);
+emit_32(1107848908);
+emit_32(1106903040);
+emit_32(1122144223);
+emit_32(1107817451);
+emit_32(1106903040);
+emit_32(1122656322);
+emit_32(1107677518);
+emit_32(1106903040);
+emit_32(1123168289);
+emit_32(1107491160);
+emit_32(1106903040);
+emit_32(1123680256);
+emit_32(1107374427);
+emit_32(1106903040);
+emit_32(1124132848);
+emit_32(1107634238);
+emit_32(1106903040);
+emit_32(1124388897);
+emit_32(1107933318);
+emit_32(1106903040);
+emit_32(1124644880);
+emit_32(1108214022);
+emit_32(1106903040);
+emit_32(1124900864);
+emit_32(1108453936);
+emit_32(1106903040);
+emit_32(1125156848);
+emit_32(1108889960);
+emit_32(1106903040);
+emit_32(1125412897);
+emit_32(1108978801);
+emit_32(1106903040);
+emit_32(1125668880);
+emit_32(1108913553);
+emit_32(1106903040);
+emit_32(1125924864);
+emit_32(1109166234);
+emit_32(1106903040);
+emit_32(1126180848);
+emit_32(1109341451);
+emit_32(1106903040);
+emit_32(1126436897);
+emit_32(1109498502);
+emit_32(1106903040);
+emit_32(1126692880);
+emit_32(1109568048);
+emit_32(1106903040);
+emit_32(1126948864);
+emit_32(1109560892);
+emit_32(1106903040);
+emit_32(1127204848);
+emit_32(1109393539);
+emit_32(1106903040);
+emit_32(1127460897);
+emit_32(1108906790);
+emit_32(1106903040);
+emit_32(1127716880);
+emit_32(1108388794);
+emit_32(1106903040);
+emit_32(1127972864);
+emit_32(1108280685);
+emit_32(1106903040);
+emit_32(1128228848);
+emit_32(1108149246);
+emit_32(1106903040);
+emit_32(1128484897);
+emit_32(1107958379);
+emit_32(1106903040);
+emit_32(1128740880);
+emit_32(1107807725);
+emit_32(1106903040);
+emit_32(1128996864);
+emit_32(1107773594);
+emit_32(1106903040);
+emit_32(1129252848);
+emit_32(1107432414);
+emit_32(1106903040);
+emit_32(1129508897);
+emit_32(1107128327);
+emit_32(1106903040);
+emit_32(1129764880);
+emit_32(1106506678);
+emit_32(1106903040);
+emit_32(1130020864);
+emit_32(1105675629);
+emit_32(1106903040);
+emit_32(1130276848);
+emit_32(1104725148);
+emit_32(1106903040);
+emit_32(1130532897);
+emit_32(1102879234);
+emit_32(1106903040);
+emit_32(1130788880);
+emit_32(1102337697);
+emit_32(1106903040);
+emit_32(1131044864);
+emit_32(1101447194);
+emit_32(1106903040);
+emit_32(1131300848);
+emit_32(1100372404);
+emit_32(1106903040);
+emit_32(1131556897);
+emit_32(1099275803);
+emit_32(1106903040);
+emit_32(1131812880);
+emit_32(1097451700);
+emit_32(1106903040);
+emit_32(1132068864);
+emit_32(1095526829);
+emit_32(1106903040);
+emit_32(1081737216);
+emit_32(1110109952);
+emit_32(1104855014);
+emit_32(1090125824);
+emit_32(1110275732);
+emit_32(1104855066);
+emit_32(1094418484);
+emit_32(1110685778);
+emit_32(1104855014);
+emit_32(1098514432);
+emit_32(1111152735);
+emit_32(1104855066);
+emit_32(1100759066);
+emit_32(1111517587);
+emit_32(1104855014);
+emit_32(1102807040);
+emit_32(1111678596);
+emit_32(1104855066);
+emit_32(1104855066);
+emit_32(1111775642);
+emit_32(1104855014);
+emit_32(1106903040);
+emit_32(1112048193);
+emit_32(1104855066);
+emit_32(1108123661);
+emit_32(1111799470);
+emit_32(1104855014);
+emit_32(1109147648);
+emit_32(1112134622);
+emit_32(1104855066);
+emit_32(1110171661);
+emit_32(1111941867);
+emit_32(1104855014);
+emit_32(1111195648);
+emit_32(1111767463);
+emit_32(1104855066);
+emit_32(1112219661);
+emit_32(1111687011);
+emit_32(1104855014);
+emit_32(1113243648);
+emit_32(1111766309);
+emit_32(1104855066);
+emit_32(1114267661);
+emit_32(1111969340);
+emit_32(1104855014);
+emit_32(1115291648);
+emit_32(1111967505);
+emit_32(1104855066);
+emit_32(1116000263);
+emit_32(1111727355);
+emit_32(1104855014);
+emit_32(1116512256);
+emit_32(1111359540);
+emit_32(1104855066);
+emit_32(1117024263);
+emit_32(1111157847);
+emit_32(1104855014);
+emit_32(1117536256);
+emit_32(1110917304);
+emit_32(1104855066);
+emit_32(1118048263);
+emit_32(1110816929);
+emit_32(1104855014);
+emit_32(1118560256);
+emit_32(1110568783);
+emit_32(1104855066);
+emit_32(1119072263);
+emit_32(1110093490);
+emit_32(1104855014);
+emit_32(1119584256);
+emit_32(1109527311);
+emit_32(1104855066);
+emit_32(1120096263);
+emit_32(1108993586);
+emit_32(1104855014);
+emit_32(1120608322);
+emit_32(1108933555);
+emit_32(1104855066);
+emit_32(1121120289);
+emit_32(1108821698);
+emit_32(1104855014);
+emit_32(1121632256);
+emit_32(1108751234);
+emit_32(1104855066);
+emit_32(1122144223);
+emit_32(1108472837);
+emit_32(1104855014);
+emit_32(1122656322);
+emit_32(1108266844);
+emit_32(1104855066);
+emit_32(1123168289);
+emit_32(1107914103);
+emit_32(1104855014);
+emit_32(1123680256);
+emit_32(1107834175);
+emit_32(1104855066);
+emit_32(1124132848);
+emit_32(1107903539);
+emit_32(1104855014);
+emit_32(1124388897);
+emit_32(1107817215);
+emit_32(1104855066);
+emit_32(1124644880);
+emit_32(1107776661);
+emit_32(1104855014);
+emit_32(1124900864);
+emit_32(1108217378);
+emit_32(1104855066);
+emit_32(1125156848);
+emit_32(1108340821);
+emit_32(1104855014);
+emit_32(1125412897);
+emit_32(1108427643);
+emit_32(1104855066);
+emit_32(1125668880);
+emit_32(1108896016);
+emit_32(1104855014);
+emit_32(1125924864);
+emit_32(1109136271);
+emit_32(1104855066);
+emit_32(1126180848);
+emit_32(1109149745);
+emit_32(1104855014);
+emit_32(1126436897);
+emit_32(1109121932);
+emit_32(1104855066);
+emit_32(1126692880);
+emit_32(1108894600);
+emit_32(1104855014);
+emit_32(1126948864);
+emit_32(1108941734);
+emit_32(1104855066);
+emit_32(1127204848);
+emit_32(1108756031);
+emit_32(1104855014);
+emit_32(1127460897);
+emit_32(1108342132);
+emit_32(1104855066);
+emit_32(1127716880);
+emit_32(1107861281);
+emit_32(1104855014);
+emit_32(1127972864);
+emit_32(1107811264);
+emit_32(1104855066);
+emit_32(1128228848);
+emit_32(1107808905);
+emit_32(1104855014);
+emit_32(1128484897);
+emit_32(1107751705);
+emit_32(1104855066);
+emit_32(1128740880);
+emit_32(1107656337);
+emit_32(1104855014);
+emit_32(1128996864);
+emit_32(1107347820);
+emit_32(1104855066);
+emit_32(1129252848);
+emit_32(1107352119);
+emit_32(1104855014);
+emit_32(1129508897);
+emit_32(1106497084);
+emit_32(1104855066);
+emit_32(1129764880);
+emit_32(1105749344);
+emit_32(1104855014);
+emit_32(1130020864);
+emit_32(1104957407);
+emit_32(1104855066);
+emit_32(1130276848);
+emit_32(1104016048);
+emit_32(1104855014);
+emit_32(1130532897);
+emit_32(1102858578);
+emit_32(1104855066);
+emit_32(1130788880);
+emit_32(1102331511);
+emit_32(1104855014);
+emit_32(1131044864);
+emit_32(1101186518);
+emit_32(1104855066);
+emit_32(1131300848);
+emit_32(1100268490);
+emit_32(1104855066);
+emit_32(1131556897);
+emit_32(1099251266);
+emit_32(1104855066);
+emit_32(1131812880);
+emit_32(1097610874);
+emit_32(1104855066);
+emit_32(1132068864);
+emit_32(1095739900);
+emit_32(1104855066);
+emit_32(1081737216);
+emit_32(1110619796);
+emit_32(1102807040);
+emit_32(1090125824);
+emit_32(1110999800);
+emit_32(1102807040);
+emit_32(1094418484);
+emit_32(1111488489);
+emit_32(1102807040);
+emit_32(1098514432);
+emit_32(1111646011);
+emit_32(1102807040);
+emit_32(1100759066);
+emit_32(1111969235);
+emit_32(1102807040);
+emit_32(1102807040);
+emit_32(1112017758);
+emit_32(1102807040);
+emit_32(1104855066);
+emit_32(1111955341);
+emit_32(1102807040);
+emit_32(1106903040);
+emit_32(1112183747);
+emit_32(1102807040);
+emit_32(1108123661);
+emit_32(1112078287);
+emit_32(1102807040);
+emit_32(1109147648);
+emit_32(1112415640);
+emit_32(1102807040);
+emit_32(1110171661);
+emit_32(1112379359);
+emit_32(1102807040);
+emit_32(1111195648);
+emit_32(1112160154);
+emit_32(1102807040);
+emit_32(1112219661);
+emit_32(1112004362);
+emit_32(1102807040);
+emit_32(1113243648);
+emit_32(1112284594);
+emit_32(1102807040);
+emit_32(1114267661);
+emit_32(1112145815);
+emit_32(1102807040);
+emit_32(1115291648);
+emit_32(1112028165);
+emit_32(1102807040);
+emit_32(1116000263);
+emit_32(1111869699);
+emit_32(1102807040);
+emit_32(1116512256);
+emit_32(1111690130);
+emit_32(1102807040);
+emit_32(1117024263);
+emit_32(1111495488);
+emit_32(1102807040);
+emit_32(1117536256);
+emit_32(1111516565);
+emit_32(1102807040);
+emit_32(1118048263);
+emit_32(1111279455);
+emit_32(1102807040);
+emit_32(1118560256);
+emit_32(1110753647);
+emit_32(1102807040);
+emit_32(1119072263);
+emit_32(1110422245);
+emit_32(1102807040);
+emit_32(1119584256);
+emit_32(1109864350);
+emit_32(1102807040);
+emit_32(1120096263);
+emit_32(1109488566);
+emit_32(1102807040);
+emit_32(1120608322);
+emit_32(1109477320);
+emit_32(1102807040);
+emit_32(1121120289);
+emit_32(1109194755);
+emit_32(1102807040);
+emit_32(1121632256);
+emit_32(1109034743);
+emit_32(1102807040);
+emit_32(1122144223);
+emit_32(1108849800);
+emit_32(1102807040);
+emit_32(1122656322);
+emit_32(1108636598);
+emit_32(1102807040);
+emit_32(1123168289);
+emit_32(1108210719);
+emit_32(1102807040);
+emit_32(1123680256);
+emit_32(1108302496);
+emit_32(1102807040);
+emit_32(1124132848);
+emit_32(1108212213);
+emit_32(1102807040);
+emit_32(1124388897);
+emit_32(1107870640);
+emit_32(1102807040);
+emit_32(1124644880);
+emit_32(1107736422);
+emit_32(1102807040);
+emit_32(1124900864);
+emit_32(1107676522);
+emit_32(1102807040);
+emit_32(1125156848);
+emit_32(1108209094);
+emit_32(1102807040);
+emit_32(1125412897);
+emit_32(1108349734);
+emit_32(1102807040);
+emit_32(1125668880);
+emit_32(1108929675);
+emit_32(1102807040);
+emit_32(1125924864);
+emit_32(1109162643);
+emit_32(1102807040);
+emit_32(1126180848);
+emit_32(1109107540);
+emit_32(1102807040);
+emit_32(1126436897);
+emit_32(1108914654);
+emit_32(1102807040);
+emit_32(1126692880);
+emit_32(1108541388);
+emit_32(1102807040);
+emit_32(1126948864);
+emit_32(1108505081);
+emit_32(1102807040);
+emit_32(1127204848);
+emit_32(1108237222);
+emit_32(1102807040);
+emit_32(1127460897);
+emit_32(1108014924);
+emit_32(1102807040);
+emit_32(1127716880);
+emit_32(1107468589);
+emit_32(1102807040);
+emit_32(1127972864);
+emit_32(1107449269);
+emit_32(1102807040);
+emit_32(1128228848);
+emit_32(1107434458);
+emit_32(1102807040);
+emit_32(1128484897);
+emit_32(1107390916);
+emit_32(1102807040);
+emit_32(1128740880);
+emit_32(1107022787);
+emit_32(1102807040);
+emit_32(1128996864);
+emit_32(1106671200);
+emit_32(1102807040);
+emit_32(1129252848);
+emit_32(1106222724);
+emit_32(1102807040);
+emit_32(1129508897);
+emit_32(1106247575);
+emit_32(1102807040);
+emit_32(1129764880);
+emit_32(1105452230);
+emit_32(1102807040);
+emit_32(1130020864);
+emit_32(1104502273);
+emit_32(1102807040);
+emit_32(1130276848);
+emit_32(1103619634);
+emit_32(1102807040);
+emit_32(1130532897);
+emit_32(1102588831);
+emit_32(1102807040);
+emit_32(1130788880);
+emit_32(1101717150);
+emit_32(1102807040);
+emit_32(1131044864);
+emit_32(1100508142);
+emit_32(1102807040);
+emit_32(1131300848);
+emit_32(1100011589);
+emit_32(1102807040);
+emit_32(1131556897);
+emit_32(1099322674);
+emit_32(1102807040);
+emit_32(1131812880);
+emit_32(1097813040);
+emit_32(1102807040);
+emit_32(1132068864);
+emit_32(1095768526);
+emit_32(1102807040);
+emit_32(1081737216);
+emit_32(1111203643);
+emit_32(1100759014);
+emit_32(1090125824);
+emit_32(1111589362);
+emit_32(1100759014);
+emit_32(1094418484);
+emit_32(1112030917);
+emit_32(1100759014);
+emit_32(1098514432);
+emit_32(1112275996);
+emit_32(1100759014);
+emit_32(1100759066);
+emit_32(1112319197);
+emit_32(1100759014);
+emit_32(1102807040);
+emit_32(1112479393);
+emit_32(1100759014);
+emit_32(1104855066);
+emit_32(1112429638);
+emit_32(1100759014);
+emit_32(1106903040);
+emit_32(1112415247);
+emit_32(1100759014);
+emit_32(1108123661);
+emit_32(1112431998);
+emit_32(1100759014);
+emit_32(1109147648);
+emit_32(1112654453);
+emit_32(1100759014);
+emit_32(1110171661);
+emit_32(1112696396);
+emit_32(1100759014);
+emit_32(1111195648);
+emit_32(1112521022);
+emit_32(1100759014);
+emit_32(1112219661);
+emit_32(1112435904);
+emit_32(1100759014);
+emit_32(1113243648);
+emit_32(1112240292);
+emit_32(1100759014);
+emit_32(1114267661);
+emit_32(1112316209);
+emit_32(1100759014);
+emit_32(1115291648);
+emit_32(1112066150);
+emit_32(1100759014);
+emit_32(1116000263);
+emit_32(1111963651);
+emit_32(1100759014);
+emit_32(1116512256);
+emit_32(1111800886);
+emit_32(1100759014);
+emit_32(1117024263);
+emit_32(1111681296);
+emit_32(1100759014);
+emit_32(1117536256);
+emit_32(1111620767);
+emit_32(1100759014);
+emit_32(1118048263);
+emit_32(1111346774);
+emit_32(1100759014);
+emit_32(1118560256);
+emit_32(1111034272);
+emit_32(1100759014);
+emit_32(1119072263);
+emit_32(1110619088);
+emit_32(1100759014);
+emit_32(1119584256);
+emit_32(1110189723);
+emit_32(1100759014);
+emit_32(1120096263);
+emit_32(1109747512);
+emit_32(1100759014);
+emit_32(1120608322);
+emit_32(1109609965);
+emit_32(1100759014);
+emit_32(1121120289);
+emit_32(1109538216);
+emit_32(1100759014);
+emit_32(1121632256);
+emit_32(1109322341);
+emit_32(1100759014);
+emit_32(1122144223);
+emit_32(1109116505);
+emit_32(1100759014);
+emit_32(1122656322);
+emit_32(1108968237);
+emit_32(1100759014);
+emit_32(1123168289);
+emit_32(1108596962);
+emit_32(1100759014);
+emit_32(1123680256);
+emit_32(1108337885);
+emit_32(1100759014);
+emit_32(1124132848);
+emit_32(1108184583);
+emit_32(1100759014);
+emit_32(1124388897);
+emit_32(1107955103);
+emit_32(1100759014);
+emit_32(1124644880);
+emit_32(1108010677);
+emit_32(1100759014);
+emit_32(1124900864);
+emit_32(1107800306);
+emit_32(1100759014);
+emit_32(1125156848);
+emit_32(1107894626);
+emit_32(1100759014);
+emit_32(1125412897);
+emit_32(1108230616);
+emit_32(1100759014);
+emit_32(1125668880);
+emit_32(1108803374);
+emit_32(1100759014);
+emit_32(1125924864);
+emit_32(1109075454);
+emit_32(1100759014);
+emit_32(1126180848);
+emit_32(1109027350);
+emit_32(1100759014);
+emit_32(1126436897);
+emit_32(1108939951);
+emit_32(1100759014);
+emit_32(1126692880);
+emit_32(1108326744);
+emit_32(1100759014);
+emit_32(1126948864);
+emit_32(1108036865);
+emit_32(1100759014);
+emit_32(1127204848);
+emit_32(1107817923);
+emit_32(1100759014);
+emit_32(1127460897);
+emit_32(1107732464);
+emit_32(1100759014);
+emit_32(1127716880);
+emit_32(1107137554);
+emit_32(1100759014);
+emit_32(1127972864);
+emit_32(1106958562);
+emit_32(1100759014);
+emit_32(1128228848);
+emit_32(1106960135);
+emit_32(1100759014);
+emit_32(1128484897);
+emit_32(1106646873);
+emit_32(1100759014);
+emit_32(1128740880);
+emit_32(1105859497);
+emit_32(1100759014);
+emit_32(1128996864);
+emit_32(1105603382);
+emit_32(1100759014);
+emit_32(1129252848);
+emit_32(1105170530);
+emit_32(1100759014);
+emit_32(1129508897);
+emit_32(1105374164);
+emit_32(1100759014);
+emit_32(1129764880);
+emit_32(1105401636);
+emit_32(1100759014);
+emit_32(1130020864);
+emit_32(1104911427);
+emit_32(1100759014);
+emit_32(1130276848);
+emit_32(1103660424);
+emit_32(1100759014);
+emit_32(1130532897);
+emit_32(1102697778);
+emit_32(1100759014);
+emit_32(1130788880);
+emit_32(1101449239);
+emit_32(1100759066);
+emit_32(1131044864);
+emit_32(1100702810);
+emit_32(1100759066);
+emit_32(1131300848);
+emit_32(1099801611);
+emit_32(1100759066);
+emit_32(1131556897);
+emit_32(1099221015);
+emit_32(1100759066);
+emit_32(1131812880);
+emit_32(1097633733);
+emit_32(1100759066);
+emit_32(1132068864);
+emit_32(1095588276);
+emit_32(1100759066);
+emit_32(1081737216);
+emit_32(1111812866);
+emit_32(1098514432);
+emit_32(1090125824);
+emit_32(1112034614);
+emit_32(1098514432);
+emit_32(1094418484);
+emit_32(1112430949);
+emit_32(1098514432);
+emit_32(1098514432);
+emit_32(1112552899);
+emit_32(1098514432);
+emit_32(1100759066);
+emit_32(1112388901);
+emit_32(1098514432);
+emit_32(1102807040);
+emit_32(1112497324);
+emit_32(1098514432);
+emit_32(1104855066);
+emit_32(1112626351);
+emit_32(1098514432);
+emit_32(1106903040);
+emit_32(1112804164);
+emit_32(1098514432);
+emit_32(1108123661);
+emit_32(1112732048);
+emit_32(1098514432);
+emit_32(1109147648);
+emit_32(1112876043);
+emit_32(1098514432);
+emit_32(1110171661);
+emit_32(1112974741);
+emit_32(1098514432);
+emit_32(1111195648);
+emit_32(1112667141);
+emit_32(1098514432);
+emit_32(1112219661);
+emit_32(1112522411);
+emit_32(1098514432);
+emit_32(1113243648);
+emit_32(1112234315);
+emit_32(1098514432);
+emit_32(1114267661);
+emit_32(1112061562);
+emit_32(1098514432);
+emit_32(1115291648);
+emit_32(1111763216);
+emit_32(1098514432);
+emit_32(1116000263);
+emit_32(1111779207);
+emit_32(1098514432);
+emit_32(1116512256);
+emit_32(1111697732);
+emit_32(1098514432);
+emit_32(1117024263);
+emit_32(1111651097);
+emit_32(1098514432);
+emit_32(1117536256);
+emit_32(1111523564);
+emit_32(1098514432);
+emit_32(1118048263);
+emit_32(1111418916);
+emit_32(1098514432);
+emit_32(1118560256);
+emit_32(1111207811);
+emit_32(1098514432);
+emit_32(1119072263);
+emit_32(1110728743);
+emit_32(1098514432);
+emit_32(1119584256);
+emit_32(1110351885);
+emit_32(1098514432);
+emit_32(1120096263);
+emit_32(1110067354);
+emit_32(1098514432);
+emit_32(1120608322);
+emit_32(1109906476);
+emit_32(1098514432);
+emit_32(1121120289);
+emit_32(1109648474);
+emit_32(1098514432);
+emit_32(1121632256);
+emit_32(1109594787);
+emit_32(1098514432);
+emit_32(1122144223);
+emit_32(1109226711);
+emit_32(1098514432);
+emit_32(1122656322);
+emit_32(1109203825);
+emit_32(1098514432);
+emit_32(1123168289);
+emit_32(1108763659);
+emit_32(1098514432);
+emit_32(1123680256);
+emit_32(1108360770);
+emit_32(1098514432);
+emit_32(1124132848);
+emit_32(1108356628);
+emit_32(1098514432);
+emit_32(1124388897);
+emit_32(1108118838);
+emit_32(1098514432);
+emit_32(1124644880);
+emit_32(1108079411);
+emit_32(1098514432);
+emit_32(1124900864);
+emit_32(1107833179);
+emit_32(1098514432);
+emit_32(1125156848);
+emit_32(1107770841);
+emit_32(1098514432);
+emit_32(1125412897);
+emit_32(1108082531);
+emit_32(1098514432);
+emit_32(1125668880);
+emit_32(1108414667);
+emit_32(1098514432);
+emit_32(1125924864);
+emit_32(1108808670);
+emit_32(1098514432);
+emit_32(1126180848);
+emit_32(1108779572);
+emit_32(1098514432);
+emit_32(1126436897);
+emit_32(1108586686);
+emit_32(1098514432);
+emit_32(1126692880);
+emit_32(1108017650);
+emit_32(1098514432);
+emit_32(1126948864);
+emit_32(1107632508);
+emit_32(1098514432);
+emit_32(1127204848);
+emit_32(1107530849);
+emit_32(1098514432);
+emit_32(1127460897);
+emit_32(1107331357);
+emit_32(1098514432);
+emit_32(1127716880);
+emit_32(1106461065);
+emit_32(1098514432);
+emit_32(1127972864);
+emit_32(1105721295);
+emit_32(1098514432);
+emit_32(1128228848);
+emit_32(1105899395);
+emit_32(1098514432);
+emit_32(1128484897);
+emit_32(1105780959);
+emit_32(1098514432);
+emit_32(1128740880);
+emit_32(1105112806);
+emit_32(1098514432);
+emit_32(1128996864);
+emit_32(1104398988);
+emit_32(1098514432);
+emit_32(1129252848);
+emit_32(1104246420);
+emit_32(1098514432);
+emit_32(1129508897);
+emit_32(1104877715);
+emit_32(1098514432);
+emit_32(1129764880);
+emit_32(1104934024);
+emit_32(1098514432);
+emit_32(1130020864);
+emit_32(1104407062);
+emit_32(1098514432);
+emit_32(1130276848);
+emit_32(1103509009);
+emit_32(1098514432);
+emit_32(1130532897);
+emit_32(1102561359);
+emit_32(1098514432);
+emit_32(1130788880);
+emit_32(1101226941);
+emit_32(1098514432);
+emit_32(1131044864);
+emit_32(1100378223);
+emit_32(1098514432);
+emit_32(1131300848);
+emit_32(1099670330);
+emit_32(1098514432);
+emit_32(1131556897);
+emit_32(1099052247);
+emit_32(1098514432);
+emit_32(1131812880);
+emit_32(1097040344);
+emit_32(1098514432);
+emit_32(1132068864);
+emit_32(1094514429);
+emit_32(1098514432);
+emit_32(1081737216);
+emit_32(1112309314);
+emit_32(1094418380);
+emit_32(1090125824);
+emit_32(1112490036);
+emit_32(1094418380);
+emit_32(1094418484);
+emit_32(1112564590);
+emit_32(1094418380);
+emit_32(1098514432);
+emit_32(1112495017);
+emit_32(1094418380);
+emit_32(1100759066);
+emit_32(1112570934);
+emit_32(1094418380);
+emit_32(1102807040);
+emit_32(1112483797);
+emit_32(1094418380);
+emit_32(1104855066);
+emit_32(1112593269);
+emit_32(1094418380);
+emit_32(1106903040);
+emit_32(1112653955);
+emit_32(1094418380);
+emit_32(1108123661);
+emit_32(1112696973);
+emit_32(1094418380);
+emit_32(1109147648);
+emit_32(1112876358);
+emit_32(1094418380);
+emit_32(1110171661);
+emit_32(1112771972);
+emit_32(1094418380);
+emit_32(1111195648);
+emit_32(1112696658);
+emit_32(1094418380);
+emit_32(1112219661);
+emit_32(1112760438);
+emit_32(1094418380);
+emit_32(1113243648);
+emit_32(1112709844);
+emit_32(1094418380);
+emit_32(1114267661);
+emit_32(1112445708);
+emit_32(1094418380);
+emit_32(1115291648);
+emit_32(1112126810);
+emit_32(1094418380);
+emit_32(1116000263);
+emit_32(1111838268);
+emit_32(1094418380);
+emit_32(1116512256);
+emit_32(1111661530);
+emit_32(1094418380);
+emit_32(1117024263);
+emit_32(1111906163);
+emit_32(1094418380);
+emit_32(1117536256);
+emit_32(1112106389);
+emit_32(1094418380);
+emit_32(1118048263);
+emit_32(1111761879);
+emit_32(1094418380);
+emit_32(1118560256);
+emit_32(1111398128);
+emit_32(1094418380);
+emit_32(1119072263);
+emit_32(1110978645);
+emit_32(1094418380);
+emit_32(1119584256);
+emit_32(1110634319);
+emit_32(1094418380);
+emit_32(1120096263);
+emit_32(1110529776);
+emit_32(1094418380);
+emit_32(1120608322);
+emit_32(1110304358);
+emit_32(1094418380);
+emit_32(1121120289);
+emit_32(1110165710);
+emit_32(1094418380);
+emit_32(1121632256);
+emit_32(1109858216);
+emit_32(1094418380);
+emit_32(1122144223);
+emit_32(1109581365);
+emit_32(1094418380);
+emit_32(1122656322);
+emit_32(1109235859);
+emit_32(1094418380);
+emit_32(1123168289);
+emit_32(1108903907);
+emit_32(1094418380);
+emit_32(1123680256);
+emit_32(1108430973);
+emit_32(1094418380);
+emit_32(1124132848);
+emit_32(1108410683);
+emit_32(1094418380);
+emit_32(1124388897);
+emit_32(1108135038);
+emit_32(1094418380);
+emit_32(1124644880);
+emit_32(1107804973);
+emit_32(1094418380);
+emit_32(1124900864);
+emit_32(1107639901);
+emit_32(1094418380);
+emit_32(1125156848);
+emit_32(1107772126);
+emit_32(1094418380);
+emit_32(1125412897);
+emit_32(1107737261);
+emit_32(1094418380);
+emit_32(1125668880);
+emit_32(1108006063);
+emit_32(1094418380);
+emit_32(1125924864);
+emit_32(1108199919);
+emit_32(1094418380);
+emit_32(1126180848);
+emit_32(1108248678);
+emit_32(1094418380);
+emit_32(1126436897);
+emit_32(1107916253);
+emit_32(1094418380);
+emit_32(1126692880);
+emit_32(1107555149);
+emit_32(1094418380);
+emit_32(1126948864);
+emit_32(1107371177);
+emit_32(1094418380);
+emit_32(1127204848);
+emit_32(1107332275);
+emit_32(1094418380);
+emit_32(1127460897);
+emit_32(1106749686);
+emit_32(1094418380);
+emit_32(1127716880);
+emit_32(1105781640);
+emit_32(1094418380);
+emit_32(1127972864);
+emit_32(1105277223);
+emit_32(1094418380);
+emit_32(1128228848);
+emit_32(1104907757);
+emit_32(1094418380);
+emit_32(1128484897);
+emit_32(1104873049);
+emit_32(1094418380);
+emit_32(1128740880);
+emit_32(1104381896);
+emit_32(1094418380);
+emit_32(1128996864);
+emit_32(1103612294);
+emit_32(1094418380);
+emit_32(1129252848);
+emit_32(1103676519);
+emit_32(1094418380);
+emit_32(1129508897);
+emit_32(1104280132);
+emit_32(1094418380);
+emit_32(1129764880);
+emit_32(1104232789);
+emit_32(1094418380);
+emit_32(1130020864);
+emit_32(1103550533);
+emit_32(1094418380);
+emit_32(1130276848);
+emit_32(1102514592);
+emit_32(1094418380);
+emit_32(1130532897);
+emit_32(1101953866);
+emit_32(1094418380);
+emit_32(1130788880);
+emit_32(1100634653);
+emit_32(1094418380);
+emit_32(1131044864);
+emit_32(1099709337);
+emit_32(1094418380);
+emit_32(1131300848);
+emit_32(1099034526);
+emit_32(1094418380);
+emit_32(1131556897);
+emit_32(1098146172);
+emit_32(1094418380);
+emit_32(1131812880);
+emit_32(1096675754);
+emit_32(1094418380);
+emit_32(1132068864);
+emit_32(1095032426);
+emit_32(1094418380);
+emit_32(1081737216);
+emit_32(1112605380);
+emit_32(1090125824);
+emit_32(1090125824);
+emit_32(1112742534);
+emit_32(1090125824);
+emit_32(1094418484);
+emit_32(1112581997);
+emit_32(1090125824);
+emit_32(1098514432);
+emit_32(1112591984);
+emit_32(1090125824);
+emit_32(1100759066);
+emit_32(1112534732);
+emit_32(1090125824);
+emit_32(1102807040);
+emit_32(1112399387);
+emit_32(1090125824);
+emit_32(1104855066);
+emit_32(1112277857);
+emit_32(1090125824);
+emit_32(1106903040);
+emit_32(1112201599);
+emit_32(1090125824);
+emit_32(1108123661);
+emit_32(1112445472);
+emit_32(1090125824);
+emit_32(1109147648);
+emit_32(1112670418);
+emit_32(1090125824);
+emit_32(1110171661);
+emit_32(1112875572);
+emit_32(1090125824);
+emit_32(1111195648);
+emit_32(1112679095);
+emit_32(1090125824);
+emit_32(1112219661);
+emit_32(1112703500);
+emit_32(1090125824);
+emit_32(1113243648);
+emit_32(1112775511);
+emit_32(1090125824);
+emit_32(1114267661);
+emit_32(1112764999);
+emit_32(1090125824);
+emit_32(1115291648);
+emit_32(1112475330);
+emit_32(1090125824);
+emit_32(1116000263);
+emit_32(1112362661);
+emit_32(1090125824);
+emit_32(1116512256);
+emit_32(1112174966);
+emit_32(1090125824);
+emit_32(1117024263);
+emit_32(1112258039);
+emit_32(1090125824);
+emit_32(1117536256);
+emit_32(1112460755);
+emit_32(1090125824);
+emit_32(1118048263);
+emit_32(1112160312);
+emit_32(1090125824);
+emit_32(1118560256);
+emit_32(1111604462);
+emit_32(1090125824);
+emit_32(1119072263);
+emit_32(1111322578);
+emit_32(1090125824);
+emit_32(1119584256);
+emit_32(1110893291);
+emit_32(1090125824);
+emit_32(1120096263);
+emit_32(1110900736);
+emit_32(1090125824);
+emit_32(1120608322);
+emit_32(1110553369);
+emit_32(1090125824);
+emit_32(1121120289);
+emit_32(1110630518);
+emit_32(1090125824);
+emit_32(1121632256);
+emit_32(1110571431);
+emit_32(1090125824);
+emit_32(1122144223);
+emit_32(1110245900);
+emit_32(1090125824);
+emit_32(1122656322);
+emit_32(1109753463);
+emit_32(1090125824);
+emit_32(1123168289);
+emit_32(1109358386);
+emit_32(1090125824);
+emit_32(1123680256);
+emit_32(1108613530);
+emit_32(1090125824);
+emit_32(1124132848);
+emit_32(1108478368);
+emit_32(1090125824);
+emit_32(1124388897);
+emit_32(1108175854);
+emit_32(1090125824);
+emit_32(1124644880);
+emit_32(1107804527);
+emit_32(1090125824);
+emit_32(1124900864);
+emit_32(1107498500);
+emit_32(1090125824);
+emit_32(1125156848);
+emit_32(1107513704);
+emit_32(1090125824);
+emit_32(1125412897);
+emit_32(1107414562);
+emit_32(1090125824);
+emit_32(1125668880);
+emit_32(1107678934);
+emit_32(1090125824);
+emit_32(1125924864);
+emit_32(1107910564);
+emit_32(1090125824);
+emit_32(1126180848);
+emit_32(1108046853);
+emit_32(1090125824);
+emit_32(1126436897);
+emit_32(1107743028);
+emit_32(1090125824);
+emit_32(1126692880);
+emit_32(1107443817);
+emit_32(1090125824);
+emit_32(1126948864);
+emit_32(1107040246);
+emit_32(1090125824);
+emit_32(1127204848);
+emit_32(1106762321);
+emit_32(1090125824);
+emit_32(1127460897);
+emit_32(1106354582);
+emit_32(1090125824);
+emit_32(1127716880);
+emit_32(1105464079);
+emit_32(1090125824);
+emit_32(1127972864);
+emit_32(1104597169);
+emit_32(1090125824);
+emit_32(1128228848);
+emit_32(1103944902);
+emit_32(1090125824);
+emit_32(1128484897);
+emit_32(1104198028);
+emit_32(1090125824);
+emit_32(1128740880);
+emit_32(1103790342);
+emit_32(1090125824);
+emit_32(1128996864);
+emit_32(1103102686);
+emit_32(1090125824);
+emit_32(1129252848);
+emit_32(1103136555);
+emit_32(1090125824);
+emit_32(1129508897);
+emit_32(1103360688);
+emit_32(1090125824);
+emit_32(1129764880);
+emit_32(1103301339);
+emit_32(1090125824);
+emit_32(1130020864);
+emit_32(1102581596);
+emit_32(1090125824);
+emit_32(1130276848);
+emit_32(1101582723);
+emit_32(1090125824);
+emit_32(1130532897);
+emit_32(1100502427);
+emit_32(1090125824);
+emit_32(1130788880);
+emit_32(1099934623);
+emit_32(1090125824);
+emit_32(1131044864);
+emit_32(1099180854);
+emit_32(1090125824);
+emit_32(1131300848);
+emit_32(1098378012);
+emit_32(1090125824);
+emit_32(1131556897);
+emit_32(1096908852);
+emit_32(1090125824);
+emit_32(1131812880);
+emit_32(1096091278);
+emit_32(1090125824);
+emit_32(1132068864);
+emit_32(1095719453);
+emit_32(1090125824);
+emit_32(1081737216);
+emit_32(1112701298);
+emit_32(1081737216);
+emit_32(1090125824);
+emit_32(1112503694);
+emit_32(1081737216);
+emit_32(1094418484);
+emit_32(1112328084);
+emit_32(1081737216);
+emit_32(1098514432);
+emit_32(1112069951);
+emit_32(1081737216);
+emit_32(1100759066);
+emit_32(1112173655);
+emit_32(1081737216);
+emit_32(1102807040);
+emit_32(1112198559);
+emit_32(1081737216);
+emit_32(1104855066);
+emit_32(1112333694);
+emit_32(1081737216);
+emit_32(1106903040);
+emit_32(1112388744);
+emit_32(1081737216);
+emit_32(1108123661);
+emit_32(1112590726);
+emit_32(1081737216);
+emit_32(1109147648);
+emit_32(1113057735);
+emit_32(1081737216);
+emit_32(1110171661);
+emit_32(1113035296);
+emit_32(1081737216);
+emit_32(1111195648);
+emit_32(1112886896);
+emit_32(1081737216);
+emit_32(1112219661);
+emit_32(1112955971);
+emit_32(1081737216);
+emit_32(1113243648);
+emit_32(1113474440);
+emit_32(1081737216);
+emit_32(1114267661);
+emit_32(1113373252);
+emit_32(1081737216);
+emit_32(1115291648);
+emit_32(1112981923);
+emit_32(1081737216);
+emit_32(1116000263);
+emit_32(1112815462);
+emit_32(1081737216);
+emit_32(1116512256);
+emit_32(1112451711);
+emit_32(1081737216);
+emit_32(1117024263);
+emit_32(1112394144);
+emit_32(1081737216);
+emit_32(1117536256);
+emit_32(1112528414);
+emit_32(1081737216);
+emit_32(1118048263);
+emit_32(1112287950);
+emit_32(1081737216);
+emit_32(1118560256);
+emit_32(1111949653);
+emit_32(1081737216);
+emit_32(1119072263);
+emit_32(1111682685);
+emit_32(1081737216);
+emit_32(1119584256);
+emit_32(1111194678);
+emit_32(1081737216);
+emit_32(1120096263);
+emit_32(1111068639);
+emit_32(1081737216);
+emit_32(1120608322);
+emit_32(1110815303);
+emit_32(1081737216);
+emit_32(1121120289);
+emit_32(1110882674);
+emit_32(1081737216);
+emit_32(1121632256);
+emit_32(1110789010);
+emit_32(1081737216);
+emit_32(1122144223);
+emit_32(1110340062);
+emit_32(1081737216);
+emit_32(1122656322);
+emit_32(1109951539);
+emit_32(1081737216);
+emit_32(1123168289);
+emit_32(1109517848);
+emit_32(1081737216);
+emit_32(1123680256);
+emit_32(1109219108);
+emit_32(1081737216);
+emit_32(1124132848);
+emit_32(1108888571);
+emit_32(1081737216);
+emit_32(1124388897);
+emit_32(1108548203);
+emit_32(1081737216);
+emit_32(1124644880);
+emit_32(1108062057);
+emit_32(1081737216);
+emit_32(1124900864);
+emit_32(1107391755);
+emit_32(1081737216);
+emit_32(1125156848);
+emit_32(1107147201);
+emit_32(1081737216);
+emit_32(1125412897);
+emit_32(1106562515);
+emit_32(1081737216);
+emit_32(1125668880);
+emit_32(1107088323);
+emit_32(1081737216);
+emit_32(1125924864);
+emit_32(1107466728);
+emit_32(1081737216);
+emit_32(1126180848);
+emit_32(1107640477);
+emit_32(1081737216);
+emit_32(1126436897);
+emit_32(1107446858);
+emit_32(1081737216);
+emit_32(1126692880);
+emit_32(1107035003);
+emit_32(1081737216);
+emit_32(1126948864);
+emit_32(1106606398);
+emit_32(1081737216);
+emit_32(1127204848);
+emit_32(1106181305);
+emit_32(1081737216);
+emit_32(1127460897);
+emit_32(1105541831);
+emit_32(1081737216);
+emit_32(1127716880);
+emit_32(1104783501);
+emit_32(1081737216);
+emit_32(1127972864);
+emit_32(1103855197);
+emit_32(1081737216);
+emit_32(1128228848);
+emit_32(1103186310);
+emit_32(1081737216);
+emit_32(1128484897);
+emit_32(1103087482);
+emit_32(1081737216);
+emit_32(1128740880);
+emit_32(1102981471);
+emit_32(1081737216);
+emit_32(1128996864);
+emit_32(1102264716);
+emit_32(1081737216);
+emit_32(1129252848);
+emit_32(1102136581);
+emit_32(1081737216);
+emit_32(1129508897);
+emit_32(1101851735);
+emit_32(1081737216);
+emit_32(1129764880);
+emit_32(1101959109);
+emit_32(1081737216);
+emit_32(1130020864);
+emit_32(1101538001);
+emit_32(1081737216);
+emit_32(1130276848);
+emit_32(1100676386);
+emit_32(1081737216);
+emit_32(1130532897);
+emit_32(1100067740);
+emit_32(1081737216);
+emit_32(1130788880);
+emit_32(1099550582);
+emit_32(1081737216);
+emit_32(1131044864);
+emit_32(1099061684);
+emit_32(1081737216);
+emit_32(1131300848);
+emit_32(1097284243);
+emit_32(1081737216);
+emit_32(1131556897);
+emit_32(1096432799);
+emit_32(1081737216);
+emit_32(1131812880);
+emit_32(1096013998);
+emit_32(1081737216);
+emit_32(1132068864);
+emit_32(1095458043);
+emit_32(1081737216);
+emit_start(Landscape05Vtx)
+emit_32(3279552512);
+emit_32(3212673672);
+emit_32(0);
+emit_32(3279552512);
+emit_32(1041185636);
+emit_32(1081737216);
+emit_32(3279296528);
+emit_32(1059833579);
+emit_32(0);
+emit_32(3279296528);
+emit_32(1071476480);
+emit_32(1081737216);
+emit_32(3279040545);
+emit_32(1072407784);
+emit_32(0);
+emit_32(3279040545);
+emit_32(1076263523);
+emit_32(1081737216);
+emit_32(3278784496);
+emit_32(1080759692);
+emit_32(3022808678);
+emit_32(3278784496);
+emit_32(1082158660);
+emit_32(1081737216);
+emit_32(3278528512);
+emit_32(1084161503);
+emit_32(3026792956);
+emit_32(3278528512);
+emit_32(1084513929);
+emit_32(1081737216);
+emit_32(3278272528);
+emit_32(1087503650);
+emit_32(3029991200);
+emit_32(3278272528);
+emit_32(1087785717);
+emit_32(1081737216);
+emit_32(3278016545);
+emit_32(1090834682);
+emit_32(3032665494);
+emit_32(3278016545);
+emit_32(1090972056);
+emit_32(1081737216);
+emit_32(3277760496);
+emit_32(1092557314);
+emit_32(3035192119);
+emit_32(3277760496);
+emit_32(1092442569);
+emit_32(1081737216);
+emit_32(3277504512);
+emit_32(1094292446);
+emit_32(3037206586);
+emit_32(3277504512);
+emit_32(1094046974);
+emit_32(1081737216);
+emit_32(3277248528);
+emit_32(1097139854);
+emit_32(3039294743);
+emit_32(3277248528);
+emit_32(1097043280);
+emit_32(1081737216);
+emit_32(3276992545);
+emit_32(1099197999);
+emit_32(3041017018);
+emit_32(3276992545);
+emit_32(1098999818);
+emit_32(1081737216);
+emit_32(3276736496);
+emit_32(1100402917);
+emit_32(3042784259);
+emit_32(3276736496);
+emit_32(1100434742);
+emit_32(1081737216);
+emit_32(3276480512);
+emit_32(1101809268);
+emit_32(3044847030);
+emit_32(3276480512);
+emit_32(1101659007);
+emit_32(1081737216);
+emit_32(3276224528);
+emit_32(1102438046);
+emit_32(3045416976);
+emit_32(3276224528);
+emit_32(1102608545);
+emit_32(1081737216);
+emit_32(3275968545);
+emit_32(1103348997);
+emit_32(3046085013);
+emit_32(3275968545);
+emit_32(1103417836);
+emit_32(1081737216);
+emit_32(3275712496);
+emit_32(1104211817);
+emit_32(3046717804);
+emit_32(3275712496);
+emit_32(1104053168);
+emit_32(1081737216);
+emit_32(3275456512);
+emit_32(1104674187);
+emit_32(3047056805);
+emit_32(3275456512);
+emit_32(1104973450);
+emit_32(1081737216);
+emit_32(3275200528);
+emit_32(1105401165);
+emit_32(3047590024);
+emit_32(3275200528);
+emit_32(1105837477);
+emit_32(1081737216);
+emit_32(3274944545);
+emit_32(1105747352);
+emit_32(3047843880);
+emit_32(3274944545);
+emit_32(1106081743);
+emit_32(1081737216);
+emit_32(3274688496);
+emit_32(1106143871);
+emit_32(3048134678);
+emit_32(3274688496);
+emit_32(1106636492);
+emit_32(1081737216);
+emit_32(3274432512);
+emit_32(1106329416);
+emit_32(3048270754);
+emit_32(3274432512);
+emit_32(1107002917);
+emit_32(1081737216);
+emit_32(3274176528);
+emit_32(1107393459);
+emit_32(3049122304);
+emit_32(3274176528);
+emit_32(1107580184);
+emit_32(1081737216);
+emit_32(3273920545);
+emit_32(1108074955);
+emit_32(3050121892);
+emit_32(3273920545);
+emit_32(1107983729);
+emit_32(1081737216);
+emit_32(3273664496);
+emit_32(1108448641);
+emit_32(3050669976);
+emit_32(3273664496);
+emit_32(1108213550);
+emit_32(1081737216);
+emit_32(3273408512);
+emit_32(1108684230);
+emit_32(3051015487);
+emit_32(3273408512);
+emit_32(1108715137);
+emit_32(1081737216);
+emit_32(3273152528);
+emit_32(1108934132);
+emit_32(3051382020);
+emit_32(3273152528);
+emit_32(1108987871);
+emit_32(1081737216);
+emit_32(3272896545);
+emit_32(1108952377);
+emit_32(3051408760);
+emit_32(3272896545);
+emit_32(1109130582);
+emit_32(1081737216);
+emit_32(3272640496);
+emit_32(1108910775);
+emit_32(3051347803);
+emit_32(3272640496);
+emit_32(1109075454);
+emit_32(1081737216);
+emit_32(3272384512);
+emit_32(1108499366);
+emit_32(3050744391);
+emit_32(3272384512);
+emit_32(1108764813);
+emit_32(1081737216);
+emit_32(3272128528);
+emit_32(1108270907);
+emit_32(3050409260);
+emit_32(3272128528);
+emit_32(1108391939);
+emit_32(1081737216);
+emit_32(3271872545);
+emit_32(1107755506);
+emit_32(3049653324);
+emit_32(3271872545);
+emit_32(1108080224);
+emit_32(1081737216);
+emit_32(3271616496);
+emit_32(1107633190);
+emit_32(3049473972);
+emit_32(3271616496);
+emit_32(1107854728);
+emit_32(1081737216);
+emit_32(3271163904);
+emit_32(1107663336);
+emit_32(3049518128);
+emit_32(3271163904);
+emit_32(1107912740);
+emit_32(1081737216);
+emit_32(3270651937);
+emit_32(1107588075);
+emit_32(3049407737);
+emit_32(3270651937);
+emit_32(1107731730);
+emit_32(1081737216);
+emit_32(3270139970);
+emit_32(1107502327);
+emit_32(3049282041);
+emit_32(3270139970);
+emit_32(1107480989);
+emit_32(1081737216);
+emit_32(3269627871);
+emit_32(1107559370);
+emit_32(3049365692);
+emit_32(3269627871);
+emit_32(1107400013);
+emit_32(1081737216);
+emit_32(3269115904);
+emit_32(1107429425);
+emit_32(3049175080);
+emit_32(3269115904);
+emit_32(1106814855);
+emit_32(1081737216);
+emit_32(3268603937);
+emit_32(1107211531);
+emit_32(3048917619);
+emit_32(3268603937);
+emit_32(1106747641);
+emit_32(1081737216);
+emit_32(3268091970);
+emit_32(1106869381);
+emit_32(3048666666);
+emit_32(3268091970);
+emit_32(1106153570);
+emit_32(1081737216);
+emit_32(3267579911);
+emit_32(1106076710);
+emit_32(3048085420);
+emit_32(3267579911);
+emit_32(1105450553);
+emit_32(1081737216);
+emit_32(3267067904);
+emit_32(1105107773);
+emit_32(3047374784);
+emit_32(3267067904);
+emit_32(1105015289);
+emit_32(1081737216);
+emit_32(3266555911);
+emit_32(1104100511);
+emit_32(3046636088);
+emit_32(3266555911);
+emit_32(1103926185);
+emit_32(1081737216);
+emit_32(3266043904);
+emit_32(1102799385);
+emit_32(3045681976);
+emit_32(3266043904);
+emit_32(1103220965);
+emit_32(1081737216);
+emit_32(3265531911);
+emit_32(1102770130);
+emit_32(3045660513);
+emit_32(3265531911);
+emit_32(1102714556);
+emit_32(1081737216);
+emit_32(3265019904);
+emit_32(1102608335);
+emit_32(3045541854);
+emit_32(3265019904);
+emit_32(1102293972);
+emit_32(1081737216);
+emit_32(3264507911);
+emit_32(1103061372);
+emit_32(3045874083);
+emit_32(3264507911);
+emit_32(1102696206);
+emit_32(1081737216);
+emit_32(3263995904);
+emit_32(1102915777);
+emit_32(3045767298);
+emit_32(3263995904);
+emit_32(1102841119);
+emit_32(1081737216);
+emit_32(3263483911);
+emit_32(1102723888);
+emit_32(3045626560);
+emit_32(3263483911);
+emit_32(1102940104);
+emit_32(1081737216);
+emit_32(3262775296);
+emit_32(1103408189);
+emit_32(3046128466);
+emit_32(3262775296);
+emit_32(1103457681);
+emit_32(1081737216);
+emit_32(3261751309);
+emit_32(1103998484);
+emit_32(3046561321);
+emit_32(3261751309);
+emit_32(1103885553);
+emit_32(1081737216);
+emit_32(3260727296);
+emit_32(1104668105);
+emit_32(3047052407);
+emit_32(3260727296);
+emit_32(1104135953);
+emit_32(1081737216);
+emit_32(3259703309);
+emit_32(1105127381);
+emit_32(3047389210);
+emit_32(3259703309);
+emit_32(1104254180);
+emit_32(1081737216);
+emit_32(3258679296);
+emit_32(1105216196);
+emit_32(3047454301);
+emit_32(3258679296);
+emit_32(1104598218);
+emit_32(1081737216);
+emit_32(3257655309);
+emit_32(1105244507);
+emit_32(3047475059);
+emit_32(3257655309);
+emit_32(1105055869);
+emit_32(1081737216);
+emit_32(3256631296);
+emit_32(1106325379);
+emit_32(3048267763);
+emit_32(3256631296);
+emit_32(1105830661);
+emit_32(1081737216);
+emit_32(3255607309);
+emit_32(1107402398);
+emit_32(3049135410);
+emit_32(3255607309);
+emit_32(1107186156);
+emit_32(1081737216);
+emit_32(3254386688);
+emit_32(1107944119);
+emit_32(3049929961);
+emit_32(3254386688);
+emit_32(1107890222);
+emit_32(1081737216);
+emit_32(3252338714);
+emit_32(1108676916);
+emit_32(3051004756);
+emit_32(3252338714);
+emit_32(1108342578);
+emit_32(1081737216);
+emit_32(3250290688);
+emit_32(1109077105);
+emit_32(3051591719);
+emit_32(3250290688);
+emit_32(1108968106);
+emit_32(1081737216);
+emit_32(3248242714);
+emit_32(1109498895);
+emit_32(3052210436);
+emit_32(3248242714);
+emit_32(1109363314);
+emit_32(1081737216);
+emit_32(3245998080);
+emit_32(1110132051);
+emit_32(3053139040);
+emit_32(3245998080);
+emit_32(1110217982);
+emit_32(1081737216);
+emit_32(3241902132);
+emit_32(1110709318);
+emit_32(3053719532);
+emit_32(3241902132);
+emit_32(1110836747);
+emit_32(1081737216);
+emit_32(3237609472);
+emit_32(1111158922);
+emit_32(3054049253);
+emit_32(3237609472);
+emit_32(1111340011);
+emit_32(1081737216);
+emit_32(3229220864);
+emit_32(1111589126);
+emit_32(3054364725);
+emit_32(3229220864);
+emit_32(1111989472);
+emit_32(1081737216);
+emit_32(0);
+emit_32(1111989053);
+emit_32(3054658031);
+emit_32(0);
+emit_32(1112547577);
+emit_32(1081737216);
+emit_32(1081737216);
+emit_32(1112116167);
+emit_32(3054751226);
+emit_32(1081737216);
+emit_32(1112701298);
+emit_32(1081737216);
+emit_32(3279552512);
+emit_32(3209799987);
+emit_32(3229220864);
+emit_32(3279296528);
+emit_32(1059840776);
+emit_32(3229220864);
+emit_32(3279040545);
+emit_32(1077240503);
+emit_32(3229220864);
+emit_32(3278784496);
+emit_32(1082549401);
+emit_32(3229220864);
+emit_32(3278528512);
+emit_32(1085468217);
+emit_32(3229220864);
+emit_32(3278272528);
+emit_32(1088296919);
+emit_32(3229220864);
+emit_32(3278016545);
+emit_32(1090881837);
+emit_32(3229220864);
+emit_32(3277760496);
+emit_32(1092463268);
+emit_32(3229220864);
+emit_32(3277504512);
+emit_32(1093558757);
+emit_32(3229220864);
+emit_32(3277248528);
+emit_32(1096426612);
+emit_32(3229220864);
+emit_32(3276992545);
+emit_32(1099175874);
+emit_32(3229220864);
+emit_32(3276736496);
+emit_32(1099804757);
+emit_32(3229220864);
+emit_32(3276480512);
+emit_32(1101394975);
+emit_32(3229220864);
+emit_32(3276224528);
+emit_32(1102334185);
+emit_32(3229220864);
+emit_32(3275968545);
+emit_32(1103311038);
+emit_32(3229220864);
+emit_32(3275712496);
+emit_32(1104048921);
+emit_32(3229220864);
+emit_32(3275456512);
+emit_32(1104659821);
+emit_32(3229220864);
+emit_32(3275200528);
+emit_32(1105062632);
+emit_32(3229220864);
+emit_32(3274944545);
+emit_32(1105651669);
+emit_32(3229220864);
+emit_32(3274688496);
+emit_32(1106231322);
+emit_32(3229220864);
+emit_32(3274432512);
+emit_32(1107336626);
+emit_32(3229220864);
+emit_32(3274176528);
+emit_32(1107657989);
+emit_32(3229220864);
+emit_32(3273920545);
+emit_32(1108184452);
+emit_32(3229220864);
+emit_32(3273664496);
+emit_32(1108338672);
+emit_32(3229220864);
+emit_32(3273408512);
+emit_32(1108483926);
+emit_32(3229220864);
+emit_32(3273152528);
+emit_32(1108691229);
+emit_32(3229220864);
+emit_32(3272896545);
+emit_32(1108557850);
+emit_32(3229220864);
+emit_32(3272640496);
+emit_32(1108486573);
+emit_32(3229220864);
+emit_32(3272384512);
+emit_32(1108265140);
+emit_32(3229220864);
+emit_32(3272128528);
+emit_32(1108112887);
+emit_32(3229220864);
+emit_32(3271872545);
+emit_32(1107872003);
+emit_32(3229220864);
+emit_32(3271616496);
+emit_32(1107841411);
+emit_32(3229220864);
+emit_32(3271163904);
+emit_32(1107883406);
+emit_32(3229220864);
+emit_32(3270651937);
+emit_32(1107859944);
+emit_32(3229220864);
+emit_32(3270139970);
+emit_32(1107767014);
+emit_32(3229220864);
+emit_32(3269627871);
+emit_32(1107782795);
+emit_32(3229220864);
+emit_32(3269115904);
+emit_32(1107629310);
+emit_32(3229220864);
+emit_32(3268603937);
+emit_32(1107448404);
+emit_32(3229220864);
+emit_32(3268091970);
+emit_32(1107249594);
+emit_32(3229220864);
+emit_32(3267579911);
+emit_32(1106441929);
+emit_32(3229220864);
+emit_32(3267067904);
+emit_32(1105756265);
+emit_32(3229220864);
+emit_32(3266555911);
+emit_32(1104508197);
+emit_32(3229220864);
+emit_32(3266043904);
+emit_32(1103537583);
+emit_32(3229220864);
+emit_32(3265531911);
+emit_32(1103027556);
+emit_32(3229220864);
+emit_32(3265019904);
+emit_32(1102775006);
+emit_32(3229220864);
+emit_32(3264507911);
+emit_32(1103080037);
+emit_32(3229220864);
+emit_32(3263995904);
+emit_32(1103170109);
+emit_32(3229220864);
+emit_32(3263483911);
+emit_32(1103334002);
+emit_32(3229220864);
+emit_32(3262775296);
+emit_32(1103932372);
+emit_32(3229220864);
+emit_32(3261751309);
+emit_32(1104512234);
+emit_32(3229220864);
+emit_32(3260727296);
+emit_32(1105151184);
+emit_32(3229220864);
+emit_32(3259703309);
+emit_32(1105468116);
+emit_32(3229220864);
+emit_32(3258679296);
+emit_32(1105860336);
+emit_32(3229220864);
+emit_32(3257655309);
+emit_32(1105963568);
+emit_32(3229220864);
+emit_32(3256631296);
+emit_32(1106718071);
+emit_32(3229220864);
+emit_32(3255607309);
+emit_32(1107534414);
+emit_32(3229220864);
+emit_32(3254386688);
+emit_32(1108061821);
+emit_32(3229220864);
+emit_32(3252338714);
+emit_32(1108796323);
+emit_32(3229220864);
+emit_32(3250290688);
+emit_32(1109110555);
+emit_32(3229220864);
+emit_32(3248242714);
+emit_32(1109471606);
+emit_32(3229220864);
+emit_32(3245998080);
+emit_32(1109857115);
+emit_32(3229220864);
+emit_32(3241902132);
+emit_32(1110399726);
+emit_32(3229220864);
+emit_32(3237609472);
+emit_32(1110641187);
+emit_32(3229220864);
+emit_32(3229220864);
+emit_32(1111105208);
+emit_32(3229220864);
+emit_32(0);
+emit_32(1111556044);
+emit_32(3229220864);
+emit_32(1081737216);
+emit_32(1111714929);
+emit_32(3229220864);
+emit_32(3279552512);
+emit_32(1054711998);
+emit_32(3237609472);
+emit_32(3279296528);
+emit_32(1073162675);
+emit_32(3237609472);
+emit_32(3279040545);
+emit_32(1079142997);
+emit_32(3237609472);
+emit_32(3278784496);
+emit_32(1083244271);
+emit_32(3237609472);
+emit_32(3278528512);
+emit_32(1085647335);
+emit_32(3237609472);
+emit_32(3278272528);
+emit_32(1089136346);
+emit_32(3237609472);
+emit_32(3278016545);
+emit_32(1091028155);
+emit_32(3237609472);
+emit_32(3277760496);
+emit_32(1092749361);
+emit_32(3237609472);
+emit_32(3277504512);
+emit_32(1094007338);
+emit_32(3237609472);
+emit_32(3277248528);
+emit_32(1096172333);
+emit_32(3237609472);
+emit_32(3276992545);
+emit_32(1098404017);
+emit_32(3237609472);
+emit_32(3276736496);
+emit_32(1099924924);
+emit_32(3237609472);
+emit_32(3276480512);
+emit_32(1101300708);
+emit_32(3237609472);
+emit_32(3276224528);
+emit_32(1102514540);
+emit_32(3237609472);
+emit_32(3275968545);
+emit_32(1102952530);
+emit_32(3237609472);
+emit_32(3275712496);
+emit_32(1104219315);
+emit_32(3237609472);
+emit_32(3275456512);
+emit_32(1105238635);
+emit_32(3237609472);
+emit_32(3275200528);
+emit_32(1105786254);
+emit_32(3237609472);
+emit_32(3274944545);
+emit_32(1106026116);
+emit_32(3237609472);
+emit_32(3274688496);
+emit_32(1106387979);
+emit_32(3237609472);
+emit_32(3274432512);
+emit_32(1107205816);
+emit_32(3237609472);
+emit_32(3274176528);
+emit_32(1107688659);
+emit_32(3237609472);
+emit_32(3273920545);
+emit_32(1107937067);
+emit_32(3237609472);
+emit_32(3273664496);
+emit_32(1108184426);
+emit_32(3237609472);
+emit_32(3273408512);
+emit_32(1108351831);
+emit_32(3237609472);
+emit_32(3273152528);
+emit_32(1108376840);
+emit_32(3237609472);
+emit_32(3272896545);
+emit_32(1108546866);
+emit_32(3237609472);
+emit_32(3272640496);
+emit_32(1108425232);
+emit_32(3237609472);
+emit_32(3272384512);
+emit_32(1108404994);
+emit_32(3237609472);
+emit_32(3272128528);
+emit_32(1108262466);
+emit_32(3237609472);
+emit_32(3271872545);
+emit_32(1107983912);
+emit_32(3237609472);
+emit_32(3271616496);
+emit_32(1107864453);
+emit_32(3237609472);
+emit_32(3271163904);
+emit_32(1107866576);
+emit_32(3237609472);
+emit_32(3270651937);
+emit_32(1107727562);
+emit_32(3237609472);
+emit_32(3270139970);
+emit_32(1107886499);
+emit_32(3237609472);
+emit_32(3269627871);
+emit_32(1107880313);
+emit_32(3237609472);
+emit_32(3269115904);
+emit_32(1107886866);
+emit_32(3237609472);
+emit_32(3268603937);
+emit_32(1107605533);
+emit_32(3237609472);
+emit_32(3268091970);
+emit_32(1107358646);
+emit_32(3237609472);
+emit_32(3267579911);
+emit_32(1106791734);
+emit_32(3237609472);
+emit_32(3267067904);
+emit_32(1106079646);
+emit_32(3237609472);
+emit_32(3266555911);
+emit_32(1104985928);
+emit_32(3237609472);
+emit_32(3266043904);
+emit_32(1104015576);
+emit_32(3237609472);
+emit_32(3265531911);
+emit_32(1103311720);
+emit_32(3237609472);
+emit_32(3265019904);
+emit_32(1103316648);
+emit_32(3237609472);
+emit_32(3264507911);
+emit_32(1103704569);
+emit_32(3237609472);
+emit_32(3263995904);
+emit_32(1103636359);
+emit_32(3237609472);
+emit_32(3263483911);
+emit_32(1103830817);
+emit_32(3237609472);
+emit_32(3262775296);
+emit_32(1104077757);
+emit_32(3237609472);
+emit_32(3261751309);
+emit_32(1104578819);
+emit_32(3237609472);
+emit_32(3260727296);
+emit_32(1105235699);
+emit_32(3237609472);
+emit_32(3259703309);
+emit_32(1105711858);
+emit_32(3237609472);
+emit_32(3258679296);
+emit_32(1105779124);
+emit_32(3237609472);
+emit_32(3257655309);
+emit_32(1106565975);
+emit_32(3237609472);
+emit_32(3256631296);
+emit_32(1107139756);
+emit_32(3237609472);
+emit_32(3255607309);
+emit_32(1107456478);
+emit_32(3237609472);
+emit_32(3254386688);
+emit_32(1107977988);
+emit_32(3237609472);
+emit_32(3252338714);
+emit_32(1108423606);
+emit_32(3237609472);
+emit_32(3250290688);
+emit_32(1108993822);
+emit_32(3237609472);
+emit_32(3248242714);
+emit_32(1109315132);
+emit_32(3237609472);
+emit_32(3245998080);
+emit_32(1109596884);
+emit_32(3237609472);
+emit_32(3241902132);
+emit_32(1110086989);
+emit_32(3237609472);
+emit_32(3237609472);
+emit_32(1110712176);
+emit_32(3237609472);
+emit_32(3229220864);
+emit_32(1111303415);
+emit_32(3237609472);
+emit_32(0);
+emit_32(1111637125);
+emit_32(3237609472);
+emit_32(1081737216);
+emit_32(1111679959);
+emit_32(3237609472);
+emit_32(3279552512);
+emit_32(1058110391);
+emit_32(3241902132);
+emit_32(3279296528);
+emit_32(1072323898);
+emit_32(3241902132);
+emit_32(3279040545);
+emit_32(1079279857);
+emit_32(3241902132);
+emit_32(3278784496);
+emit_32(1082742465);
+emit_32(3241902132);
+emit_32(3278528512);
+emit_32(1086410992);
+emit_32(3241902132);
+emit_32(3278272528);
+emit_32(1088461147);
+emit_32(3241902132);
+emit_32(3278016545);
+emit_32(1091533338);
+emit_32(3241902132);
+emit_32(3277760496);
+emit_32(1093009303);
+emit_32(3241902132);
+emit_32(3277504512);
+emit_32(1094260359);
+emit_32(3241902132);
+emit_32(3277248528);
+emit_32(1096715285);
+emit_32(3241902132);
+emit_32(3276992545);
+emit_32(1098545575);
+emit_32(3241902132);
+emit_32(3276736496);
+emit_32(1100069260);
+emit_32(3241902132);
+emit_32(3276480512);
+emit_32(1101010882);
+emit_32(3241902132);
+emit_32(3276224528);
+emit_32(1101814458);
+emit_32(3241902132);
+emit_32(3275968545);
+emit_32(1102816372);
+emit_32(3241902132);
+emit_32(3275712496);
+emit_32(1104296175);
+emit_32(3241902132);
+emit_32(3275456512);
+emit_32(1105227573);
+emit_32(3241902132);
+emit_32(3275200528);
+emit_32(1105862695);
+emit_32(3241902132);
+emit_32(3274944545);
+emit_32(1106061767);
+emit_32(3241902132);
+emit_32(3274688496);
+emit_32(1106614157);
+emit_32(3241902132);
+emit_32(3274432512);
+emit_32(1106679117);
+emit_32(3241902132);
+emit_32(3274176528);
+emit_32(1107555097);
+emit_32(3241902132);
+emit_32(3273920545);
+emit_32(1107710706);
+emit_32(3241902132);
+emit_32(3273664496);
+emit_32(1107987399);
+emit_32(3241902132);
+emit_32(3273408512);
+emit_32(1108243985);
+emit_32(3241902132);
+emit_32(3273152528);
+emit_32(1108410132);
+emit_32(3241902132);
+emit_32(3272896545);
+emit_32(1108423370);
+emit_32(3241902132);
+emit_32(3272640496);
+emit_32(1108487858);
+emit_32(3241902132);
+emit_32(3272384512);
+emit_32(1108444525);
+emit_32(3241902132);
+emit_32(3272128528);
+emit_32(1108145681);
+emit_32(3241902132);
+emit_32(3271872545);
+emit_32(1107836142);
+emit_32(3241902132);
+emit_32(3271616496);
+emit_32(1107856825);
+emit_32(3241902132);
+emit_32(3271163904);
+emit_32(1107713065);
+emit_32(3241902132);
+emit_32(3270651937);
+emit_32(1107761431);
+emit_32(3241902132);
+emit_32(3270139970);
+emit_32(1107749346);
+emit_32(3241902132);
+emit_32(3269627871);
+emit_32(1107742242);
+emit_32(3241902132);
+emit_32(3269115904);
+emit_32(1107724468);
+emit_32(3241902132);
+emit_32(3268603937);
+emit_32(1107622651);
+emit_32(3241902132);
+emit_32(3268091970);
+emit_32(1107524085);
+emit_32(3241902132);
+emit_32(3267579911);
+emit_32(1106842380);
+emit_32(3241902132);
+emit_32(3267067904);
+emit_32(1106029733);
+emit_32(3241902132);
+emit_32(3266555911);
+emit_32(1104983674);
+emit_32(3241902132);
+emit_32(3266043904);
+emit_32(1104019456);
+emit_32(3241902132);
+emit_32(3265531911);
+emit_32(1103853571);
+emit_32(3241902132);
+emit_32(3265019904);
+emit_32(1103951666);
+emit_32(3241902132);
+emit_32(3264507911);
+emit_32(1103711542);
+emit_32(3241902132);
+emit_32(3263995904);
+emit_32(1103910404);
+emit_32(3241902132);
+emit_32(3263483911);
+emit_32(1103908517);
+emit_32(3241902132);
+emit_32(3262775296);
+emit_32(1104110577);
+emit_32(3241902132);
+emit_32(3261751309);
+emit_32(1104188172);
+emit_32(3241902132);
+emit_32(3260727296);
+emit_32(1104905241);
+emit_32(3241902132);
+emit_32(3259703309);
+emit_32(1105620212);
+emit_32(3241902132);
+emit_32(3258679296);
+emit_32(1106230221);
+emit_32(3241902132);
+emit_32(3257655309);
+emit_32(1107170322);
+emit_32(3241902132);
+emit_32(3256631296);
+emit_32(1107365357);
+emit_32(3241902132);
+emit_32(3255607309);
+emit_32(1107446569);
+emit_32(3241902132);
+emit_32(3254386688);
+emit_32(1107700744);
+emit_32(3241902132);
+emit_32(3252338714);
+emit_32(1108112651);
+emit_32(3241902132);
+emit_32(3250290688);
+emit_32(1108689473);
+emit_32(3241902132);
+emit_32(3248242714);
+emit_32(1109194519);
+emit_32(3241902132);
+emit_32(3245998080);
+emit_32(1109874285);
+emit_32(3241902132);
+emit_32(3241902132);
+emit_32(1110441774);
+emit_32(3241902132);
+emit_32(3237609472);
+emit_32(1111191218);
+emit_32(3241902132);
+emit_32(3229220864);
+emit_32(1111647243);
+emit_32(3241902132);
+emit_32(0);
+emit_32(1111674821);
+emit_32(3241902132);
+emit_32(1081737216);
+emit_32(1111917802);
+emit_32(3241902132);
+emit_32(3279552512);
+emit_32(1069567233);
+emit_32(3245998080);
+emit_32(3279296528);
+emit_32(1071989863);
+emit_32(3245998080);
+emit_32(3279040545);
+emit_32(1075944798);
+emit_32(3245998080);
+emit_32(3278784496);
+emit_32(1082325006);
+emit_32(3245998080);
+emit_32(3278528512);
+emit_32(1086766564);
+emit_32(3245998080);
+emit_32(3278272528);
+emit_32(1089466668);
+emit_32(3245998080);
+emit_32(3278016545);
+emit_32(1091111989);
+emit_32(3245998080);
+emit_32(3277760496);
+emit_32(1092605224);
+emit_32(3245998080);
+emit_32(3277504512);
+emit_32(1095055494);
+emit_32(3245998080);
+emit_32(3277248528);
+emit_32(1097329541);
+emit_32(3245998080);
+emit_32(3276992545);
+emit_32(1098231421);
+emit_32(3245998080);
+emit_32(3276736496);
+emit_32(1099798361);
+emit_32(3245998080);
+emit_32(3276480512);
+emit_32(1100629777);
+emit_32(3245998080);
+emit_32(3276224528);
+emit_32(1101582932);
+emit_32(3245998080);
+emit_32(3275968545);
+emit_32(1102756341);
+emit_32(3245998080);
+emit_32(3275712496);
+emit_32(1103822271);
+emit_32(3245998080);
+emit_32(3275456512);
+emit_32(1104867754);
+emit_32(3245998080);
+emit_32(3275200528);
+emit_32(1105394716);
+emit_32(3245998080);
+emit_32(3274944545);
+emit_32(1106013428);
+emit_32(3245998080);
+emit_32(3274688496);
+emit_32(1106248257);
+emit_32(3245998080);
+emit_32(3274432512);
+emit_32(1106783293);
+emit_32(3245998080);
+emit_32(3274176528);
+emit_32(1107441641);
+emit_32(3245998080);
+emit_32(3273920545);
+emit_32(1107472338);
+emit_32(3245998080);
+emit_32(3273664496);
+emit_32(1107780305);
+emit_32(3245998080);
+emit_32(3273408512);
+emit_32(1108116033);
+emit_32(3245998080);
+emit_32(3273152528);
+emit_32(1108228755);
+emit_32(3245998080);
+emit_32(3272896545);
+emit_32(1108513391);
+emit_32(3245998080);
+emit_32(3272640496);
+emit_32(1108457108);
+emit_32(3245998080);
+emit_32(3272384512);
+emit_32(1108243173);
+emit_32(3245998080);
+emit_32(3272128528);
+emit_32(1108176536);
+emit_32(3245998080);
+emit_32(3271872545);
+emit_32(1107871348);
+emit_32(3245998080);
+emit_32(3271616496);
+emit_32(1107923121);
+emit_32(3245998080);
+emit_32(3271163904);
+emit_32(1107614682);
+emit_32(3245998080);
+emit_32(3270651937);
+emit_32(1107505709);
+emit_32(3245998080);
+emit_32(3270139970);
+emit_32(1107594707);
+emit_32(3245998080);
+emit_32(3269627871);
+emit_32(1107597381);
+emit_32(3245998080);
+emit_32(3269115904);
+emit_32(1107730471);
+emit_32(3245998080);
+emit_32(3268603937);
+emit_32(1107619086);
+emit_32(3245998080);
+emit_32(3268091970);
+emit_32(1107455273);
+emit_32(3245998080);
+emit_32(3267579911);
+emit_32(1106610802);
+emit_32(3245998080);
+emit_32(3267067904);
+emit_32(1105479074);
+emit_32(3245998080);
+emit_32(3266555911);
+emit_32(1105028081);
+emit_32(3245998080);
+emit_32(3266043904);
+emit_32(1104895856);
+emit_32(3245998080);
+emit_32(3265531911);
+emit_32(1104167515);
+emit_32(3245998080);
+emit_32(3265019904);
+emit_32(1104032563);
+emit_32(3245998080);
+emit_32(3264507911);
+emit_32(1104102818);
+emit_32(3245998080);
+emit_32(3263995904);
+emit_32(1103636621);
+emit_32(3245998080);
+emit_32(3263483911);
+emit_32(1104117812);
+emit_32(3245998080);
+emit_32(3262775296);
+emit_32(1104170556);
+emit_32(3245998080);
+emit_32(3261751309);
+emit_32(1104075031);
+emit_32(3245998080);
+emit_32(3260727296);
+emit_32(1104866076);
+emit_32(3245998080);
+emit_32(3259703309);
+emit_32(1105674056);
+emit_32(3245998080);
+emit_32(3258679296);
+emit_32(1106593763);
+emit_32(3245998080);
+emit_32(3257655309);
+emit_32(1107479652);
+emit_32(3245998080);
+emit_32(3256631296);
+emit_32(1107477371);
+emit_32(3245998080);
+emit_32(3255607309);
+emit_32(1107602886);
+emit_32(3245998080);
+emit_32(3254386688);
+emit_32(1108002655);
+emit_32(3245998080);
+emit_32(3252338714);
+emit_32(1108265717);
+emit_32(3245998080);
+emit_32(3250290688);
+emit_32(1108946348);
+emit_32(3245998080);
+emit_32(3248242714);
+emit_32(1109570748);
+emit_32(3245998080);
+emit_32(3245998080);
+emit_32(1110334348);
+emit_32(3245998080);
+emit_32(3241902132);
+emit_32(1111046776);
+emit_32(3245998080);
+emit_32(3237609472);
+emit_32(1111662998);
+emit_32(3245998080);
+emit_32(3229220864);
+emit_32(1111752783);
+emit_32(3245998080);
+emit_32(0);
+emit_32(1112149144);
+emit_32(3245998080);
+emit_32(1081737216);
+emit_32(1112196121);
+emit_32(3245998080);
+emit_32(3279552512);
+emit_32(1069069537);
+emit_32(3248242714);
+emit_32(3279296528);
+emit_32(1070813613);
+emit_32(3248242714);
+emit_32(3279040545);
+emit_32(1077694242);
+emit_32(3248242714);
+emit_32(3278784496);
+emit_32(1083641745);
+emit_32(3248242714);
+emit_32(3278528512);
+emit_32(1087538169);
+emit_32(3248242714);
+emit_32(3278272528);
+emit_32(1089089810);
+emit_32(3248242714);
+emit_32(3278016545);
+emit_32(1090321216);
+emit_32(3248242714);
+emit_32(3277760496);
+emit_32(1092452761);
+emit_32(3248242714);
+emit_32(3277504512);
+emit_32(1094878390);
+emit_32(3248242714);
+emit_32(3277248528);
+emit_32(1096058143);
+emit_32(3248242714);
+emit_32(3276992545);
+emit_32(1098098567);
+emit_32(3248242714);
+emit_32(3276736496);
+emit_32(1099576902);
+emit_32(3248242714);
+emit_32(3276480512);
+emit_32(1100562563);
+emit_32(3248242714);
+emit_32(3276224528);
+emit_32(1101167224);
+emit_32(3248242714);
+emit_32(3275968545);
+emit_32(1102019088);
+emit_32(3248242714);
+emit_32(3275712496);
+emit_32(1103025878);
+emit_32(3248242714);
+emit_32(3275456512);
+emit_32(1104220258);
+emit_32(3248242714);
+emit_32(3275200528);
+emit_32(1104981944);
+emit_32(3248242714);
+emit_32(3274944545);
+emit_32(1105491132);
+emit_32(3248242714);
+emit_32(3274688496);
+emit_32(1105710495);
+emit_32(3248242714);
+emit_32(3274432512);
+emit_32(1106232423);
+emit_32(3248242714);
+emit_32(3274176528);
+emit_32(1106909961);
+emit_32(3248242714);
+emit_32(3273920545);
+emit_32(1107031858);
+emit_32(3248242714);
+emit_32(3273664496);
+emit_32(1107735426);
+emit_32(3248242714);
+emit_32(3273408512);
+emit_32(1108117868);
+emit_32(3248242714);
+emit_32(3273152528);
+emit_32(1108098862);
+emit_32(3248242714);
+emit_32(3272896545);
+emit_32(1108068716);
+emit_32(3248242714);
+emit_32(3272640496);
+emit_32(1108110003);
+emit_32(3248242714);
+emit_32(3272384512);
+emit_32(1108104761);
+emit_32(3248242714);
+emit_32(3272128528);
+emit_32(1108024125);
+emit_32(3248242714);
+emit_32(3271872545);
+emit_32(1107776111);
+emit_32(3248242714);
+emit_32(3271616496);
+emit_32(1107637384);
+emit_32(3248242714);
+emit_32(3271163904);
+emit_32(1107446360);
+emit_32(3248242714);
+emit_32(3270651937);
+emit_32(1107041400);
+emit_32(3248242714);
+emit_32(3270139970);
+emit_32(1107011882);
+emit_32(3248242714);
+emit_32(3269627871);
+emit_32(1107115167);
+emit_32(3248242714);
+emit_32(3269115904);
+emit_32(1107418494);
+emit_32(3248242714);
+emit_32(3268603937);
+emit_32(1107457422);
+emit_32(3248242714);
+emit_32(3268091970);
+emit_32(1106904613);
+emit_32(3248242714);
+emit_32(3267579911);
+emit_32(1106031411);
+emit_32(3248242714);
+emit_32(3267067904);
+emit_32(1105454223);
+emit_32(3248242714);
+emit_32(3266555911);
+emit_32(1105778967);
+emit_32(3248242714);
+emit_32(3266043904);
+emit_32(1105570929);
+emit_32(3248242714);
+emit_32(3265531911);
+emit_32(1104914258);
+emit_32(3248242714);
+emit_32(3265019904);
+emit_32(1104424468);
+emit_32(3248242714);
+emit_32(3264507911);
+emit_32(1104545527);
+emit_32(3248242714);
+emit_32(3263995904);
+emit_32(1104296280);
+emit_32(3248242714);
+emit_32(3263483911);
+emit_32(1103990568);
+emit_32(3248242714);
+emit_32(3262775296);
+emit_32(1104013427);
+emit_32(3248242714);
+emit_32(3261751309);
+emit_32(1104087142);
+emit_32(3248242714);
+emit_32(3260727296);
+emit_32(1104895017);
+emit_32(3248242714);
+emit_32(3259703309);
+emit_32(1105764129);
+emit_32(3248242714);
+emit_32(3258679296);
+emit_32(1106780357);
+emit_32(3248242714);
+emit_32(3257655309);
+emit_32(1107436005);
+emit_32(3248242714);
+emit_32(3256631296);
+emit_32(1107614237);
+emit_32(3248242714);
+emit_32(3255607309);
+emit_32(1107805785);
+emit_32(3248242714);
+emit_32(3254386688);
+emit_32(1108259294);
+emit_32(3248242714);
+emit_32(3252338714);
+emit_32(1108838738);
+emit_32(3248242714);
+emit_32(3250290688);
+emit_32(1109532056);
+emit_32(3248242714);
+emit_32(3248242714);
+emit_32(1110357731);
+emit_32(3248242714);
+emit_32(3245998080);
+emit_32(1111305617);
+emit_32(3248242714);
+emit_32(3241902132);
+emit_32(1111938354);
+emit_32(3248242714);
+emit_32(3237609472);
+emit_32(1112310678);
+emit_32(3248242714);
+emit_32(3229220864);
+emit_32(1112422010);
+emit_32(3248242714);
+emit_32(0);
+emit_32(1112626745);
+emit_32(3248242714);
+emit_32(1081737216);
+emit_32(1112566084);
+emit_32(3248242714);
+emit_32(3279552512);
+emit_32(1065800916);
+emit_32(3250290688);
+emit_32(3279296528);
+emit_32(1067728450);
+emit_32(3250290688);
+emit_32(3279040545);
+emit_32(1079534242);
+emit_32(3250290688);
+emit_32(3278784496);
+emit_32(1083207466);
+emit_32(3250290688);
+emit_32(3278528512);
+emit_32(1085554830);
+emit_32(3250290688);
+emit_32(3278272528);
+emit_32(1087362784);
+emit_32(3250290688);
+emit_32(3278016545);
+emit_32(1089916067);
+emit_32(3250290688);
+emit_32(3277760496);
+emit_32(1091396866);
+emit_32(3250290688);
+emit_32(3277504512);
+emit_32(1093035832);
+emit_32(3250290688);
+emit_32(3277248528);
+emit_32(1094508767);
+emit_32(3250290688);
+emit_32(3276992545);
+emit_32(1096595328);
+emit_32(3250290688);
+emit_32(3276736496);
+emit_32(1099173252);
+emit_32(3250290688);
+emit_32(3276480512);
+emit_32(1100269748);
+emit_32(3250290688);
+emit_32(3276224528);
+emit_32(1101165704);
+emit_32(3250290688);
+emit_32(3275968545);
+emit_32(1101889169);
+emit_32(3250290688);
+emit_32(3275712496);
+emit_32(1102356467);
+emit_32(3250290688);
+emit_32(3275456512);
+emit_32(1103641549);
+emit_32(3250290688);
+emit_32(3275200528);
+emit_32(1104432910);
+emit_32(3250290688);
+emit_32(3274944545);
+emit_32(1104777157);
+emit_32(3250290688);
+emit_32(3274688496);
+emit_32(1105410025);
+emit_32(3250290688);
+emit_32(3274432512);
+emit_32(1105737233);
+emit_32(3250290688);
+emit_32(3274176528);
+emit_32(1106211085);
+emit_32(3250290688);
+emit_32(3273920545);
+emit_32(1107190979);
+emit_32(3250290688);
+emit_32(3273664496);
+emit_32(1107686903);
+emit_32(3250290688);
+emit_32(3273408512);
+emit_32(1107933449);
+emit_32(3250290688);
+emit_32(3273152528);
+emit_32(1107858896);
+emit_32(3250290688);
+emit_32(3272896545);
+emit_32(1107712567);
+emit_32(3250290688);
+emit_32(3272640496);
+emit_32(1107834044);
+emit_32(3250290688);
+emit_32(3272384512);
+emit_32(1107745256);
+emit_32(3250290688);
+emit_32(3272128528);
+emit_32(1107612821);
+emit_32(3250290688);
+emit_32(3271872545);
+emit_32(1107307240);
+emit_32(3250290688);
+emit_32(3271616496);
+emit_32(1106953581);
+emit_32(3250290688);
+emit_32(3271163904);
+emit_32(1106958195);
+emit_32(3250290688);
+emit_32(3270651937);
+emit_32(1106599635);
+emit_32(3250290688);
+emit_32(3270139970);
+emit_32(1106321238);
+emit_32(3250290688);
+emit_32(3269627871);
+emit_32(1106339588);
+emit_32(3250290688);
+emit_32(3269115904);
+emit_32(1106571795);
+emit_32(3250290688);
+emit_32(3268603937);
+emit_32(1106917982);
+emit_32(3250290688);
+emit_32(3268091970);
+emit_32(1106501383);
+emit_32(3250290688);
+emit_32(3267579911);
+emit_32(1105718516);
+emit_32(3250290688);
+emit_32(3267067904);
+emit_32(1105903065);
+emit_32(3250290688);
+emit_32(3266555911);
+emit_32(1106013795);
+emit_32(3250290688);
+emit_32(3266043904);
+emit_32(1105949517);
+emit_32(3250290688);
+emit_32(3265531911);
+emit_32(1105206863);
+emit_32(3250290688);
+emit_32(3265019904);
+emit_32(1104861934);
+emit_32(3250290688);
+emit_32(3264507911);
+emit_32(1104599790);
+emit_32(3250290688);
+emit_32(3263995904);
+emit_32(1103950932);
+emit_32(3250290688);
+emit_32(3263483911);
+emit_32(1104055527);
+emit_32(3250290688);
+emit_32(3262775296);
+emit_32(1103866364);
+emit_32(3250290688);
+emit_32(3261751309);
+emit_32(1104419383);
+emit_32(3250290688);
+emit_32(3260727296);
+emit_32(1104811026);
+emit_32(3250290688);
+emit_32(3259703309);
+emit_32(1105456634);
+emit_32(3250290688);
+emit_32(3258679296);
+emit_32(1106791681);
+emit_32(3250290688);
+emit_32(3257655309);
+emit_32(1107583068);
+emit_32(3250290688);
+emit_32(3256631296);
+emit_32(1107949860);
+emit_32(3250290688);
+emit_32(3255607309);
+emit_32(1108658278);
+emit_32(3250290688);
+emit_32(3254386688);
+emit_32(1109252165);
+emit_32(3250290688);
+emit_32(3252338714);
+emit_32(1109776086);
+emit_32(3250290688);
+emit_32(3250290688);
+emit_32(1110334321);
+emit_32(3250290688);
+emit_32(3248242714);
+emit_32(1111177403);
+emit_32(3250290688);
+emit_32(3245998080);
+emit_32(1111862202);
+emit_32(3250290688);
+emit_32(3241902132);
+emit_32(1112485580);
+emit_32(3250290688);
+emit_32(3237609472);
+emit_32(1112835516);
+emit_32(3250290688);
+emit_32(3229220864);
+emit_32(1112928997);
+emit_32(3250290688);
+emit_32(0);
+emit_32(1112967689);
+emit_32(3250290688);
+emit_32(1081737216);
+emit_32(1113150456);
+emit_32(3250290688);
+emit_32(3279552512);
+emit_32(1065811150);
+emit_32(3252338714);
+emit_32(3279296528);
+emit_32(1074401378);
+emit_32(3252338714);
+emit_32(3279040545);
+emit_32(1078638548);
+emit_32(3252338714);
+emit_32(3278784496);
+emit_32(1082498734);
+emit_32(3252338714);
+emit_32(3278528512);
+emit_32(1084586134);
+emit_32(3252338714);
+emit_32(3278272528);
+emit_32(1087624907);
+emit_32(3252338714);
+emit_32(3278016545);
+emit_32(1088961422);
+emit_32(3252338714);
+emit_32(3277760496);
+emit_32(1091843412);
+emit_32(3252338714);
+emit_32(3277504512);
+emit_32(1093413739);
+emit_32(3252338714);
+emit_32(3277248528);
+emit_32(1094395206);
+emit_32(3252338714);
+emit_32(3276992545);
+emit_32(1095806484);
+emit_32(3252338714);
+emit_32(3276736496);
+emit_32(1097929536);
+emit_32(3252338714);
+emit_32(3276480512);
+emit_32(1099744988);
+emit_32(3252338714);
+emit_32(3276224528);
+emit_32(1100647340);
+emit_32(3252338714);
+emit_32(3275968545);
+emit_32(1101240992);
+emit_32(3252338714);
+emit_32(3275712496);
+emit_32(1101372693);
+emit_32(3252338714);
+emit_32(3275456512);
+emit_32(1102475638);
+emit_32(3252338714);
+emit_32(3275200528);
+emit_32(1103490240);
+emit_32(3252338714);
+emit_32(3274944545);
+emit_32(1104043416);
+emit_32(3252338714);
+emit_32(3274688496);
+emit_32(1105440696);
+emit_32(3252338714);
+emit_32(3274432512);
+emit_32(1105987161);
+emit_32(3252338714);
+emit_32(3274176528);
+emit_32(1106185395);
+emit_32(3252338714);
+emit_32(3273920545);
+emit_32(1107031700);
+emit_32(3252338714);
+emit_32(3273664496);
+emit_32(1107454932);
+emit_32(3252338714);
+emit_32(3273408512);
+emit_32(1107539368);
+emit_32(3252338714);
+emit_32(3273152528);
+emit_32(1107466152);
+emit_32(3252338714);
+emit_32(3272896545);
+emit_32(1107413067);
+emit_32(3252338714);
+emit_32(3272640496);
+emit_32(1107297960);
+emit_32(3252338714);
+emit_32(3272384512);
+emit_32(1107173310);
+emit_32(3252338714);
+emit_32(3272128528);
+emit_32(1107130371);
+emit_32(3252338714);
+emit_32(3271872545);
+emit_32(1106771653);
+emit_32(3252338714);
+emit_32(3271616496);
+emit_32(1106460803);
+emit_32(3252338714);
+emit_32(3271163904);
+emit_32(1106115455);
+emit_32(3252338714);
+emit_32(3270651937);
+emit_32(1105926344);
+emit_32(3252338714);
+emit_32(3270139970);
+emit_32(1105546602);
+emit_32(3252338714);
+emit_32(3269627871);
+emit_32(1105660477);
+emit_32(3252338714);
+emit_32(3269115904);
+emit_32(1105920367);
+emit_32(3252338714);
+emit_32(3268603937);
+emit_32(1106109897);
+emit_32(3252338714);
+emit_32(3268091970);
+emit_32(1105672798);
+emit_32(3252338714);
+emit_32(3267579911);
+emit_32(1105767537);
+emit_32(3252338714);
+emit_32(3267067904);
+emit_32(1105707139);
+emit_32(3252338714);
+emit_32(3266555911);
+emit_32(1105871241);
+emit_32(3252338714);
+emit_32(3266043904);
+emit_32(1105955599);
+emit_32(3252338714);
+emit_32(3265531911);
+emit_32(1105848435);
+emit_32(3252338714);
+emit_32(3265019904);
+emit_32(1105348264);
+emit_32(3252338714);
+emit_32(3264507911);
+emit_32(1104644040);
+emit_32(3252338714);
+emit_32(3263995904);
+emit_32(1104354371);
+emit_32(3252338714);
+emit_32(3263483911);
+emit_32(1104366902);
+emit_32(3252338714);
+emit_32(3262775296);
+emit_32(1104900103);
+emit_32(3252338714);
+emit_32(3261751309);
+emit_32(1105214885);
+emit_32(3252338714);
+emit_32(3260727296);
+emit_32(1105392147);
+emit_32(3252338714);
+emit_32(3259703309);
+emit_32(1106490111);
+emit_32(3252338714);
+emit_32(3258679296);
+emit_32(1107465837);
+emit_32(3252338714);
+emit_32(3257655309);
+emit_32(1108021897);
+emit_32(3252338714);
+emit_32(3256631296);
+emit_32(1108703366);
+emit_32(3252338714);
+emit_32(3255607309);
+emit_32(1109418128);
+emit_32(3252338714);
+emit_32(3254386688);
+emit_32(1110033669);
+emit_32(3252338714);
+emit_32(3252338714);
+emit_32(1110598065);
+emit_32(3252338714);
+emit_32(3250290688);
+emit_32(1111530878);
+emit_32(3252338714);
+emit_32(3248242714);
+emit_32(1112167127);
+emit_32(3252338714);
+emit_32(3245998080);
+emit_32(1112747776);
+emit_32(3252338714);
+emit_32(3241902132);
+emit_32(1113057631);
+emit_32(3252338714);
+emit_32(3237609472);
+emit_32(1113395220);
+emit_32(3252338714);
+emit_32(3229220864);
+emit_32(1113520262);
+emit_32(3252338714);
+emit_32(0);
+emit_32(1113746230);
+emit_32(3252338714);
+emit_32(1081737216);
+emit_32(1113988085);
+emit_32(3252338714);
+emit_32(3279552512);
+emit_32(1073007234);
+emit_32(3254386688);
+emit_32(3279296528);
+emit_32(1071855058);
+emit_32(3254386688);
+emit_32(3279040545);
+emit_32(1077504995);
+emit_32(3254386688);
+emit_32(3278784496);
+emit_32(1083853809);
+emit_32(3254386688);
+emit_32(3278528512);
+emit_32(1085433090);
+emit_32(3254386688);
+emit_32(3278272528);
+emit_32(1086653926);
+emit_32(3254386688);
+emit_32(3278016545);
+emit_32(1089328256);
+emit_32(3254386688);
+emit_32(3277760496);
+emit_32(1091680359);
+emit_32(3254386688);
+emit_32(3277504512);
+emit_32(1093386371);
+emit_32(3254386688);
+emit_32(3277248528);
+emit_32(1094430019);
+emit_32(3254386688);
+emit_32(3276992545);
+emit_32(1095762759);
+emit_32(3254386688);
+emit_32(3276736496);
+emit_32(1097278685);
+emit_32(3254386688);
+emit_32(3276480512);
+emit_32(1099307942);
+emit_32(3254386688);
+emit_32(3276224528);
+emit_32(1100328206);
+emit_32(3254386688);
+emit_32(3275968545);
+emit_32(1100510396);
+emit_32(3254386688);
+emit_32(3275712496);
+emit_32(1100754190);
+emit_32(3254386688);
+emit_32(3275456512);
+emit_32(1101542300);
+emit_32(3254386688);
+emit_32(3275200528);
+emit_32(1102303461);
+emit_32(3254386688);
+emit_32(3274944545);
+emit_32(1103597719);
+emit_32(3254386688);
+emit_32(3274688496);
+emit_32(1104967316);
+emit_32(3254386688);
+emit_32(3274432512);
+emit_32(1105690205);
+emit_32(3254386688);
+emit_32(3274176528);
+emit_32(1106034714);
+emit_32(3254386688);
+emit_32(3273920545);
+emit_32(1106220994);
+emit_32(3254386688);
+emit_32(3273664496);
+emit_32(1106826651);
+emit_32(3254386688);
+emit_32(3273408512);
+emit_32(1107242779);
+emit_32(3254386688);
+emit_32(3273152528);
+emit_32(1107302810);
+emit_32(3254386688);
+emit_32(3272896545);
+emit_32(1107370915);
+emit_32(3254386688);
+emit_32(3272640496);
+emit_32(1107004385);
+emit_32(3254386688);
+emit_32(3272384512);
+emit_32(1106217429);
+emit_32(3254386688);
+emit_32(3272128528);
+emit_32(1106380587);
+emit_32(3254386688);
+emit_32(3271872545);
+emit_32(1106492418);
+emit_32(3254386688);
+emit_32(3271616496);
+emit_32(1106313793);
+emit_32(3254386688);
+emit_32(3271163904);
+emit_32(1105860336);
+emit_32(3254386688);
+emit_32(3270651937);
+emit_32(1104962965);
+emit_32(3254386688);
+emit_32(3270139970);
+emit_32(1104709367);
+emit_32(3254386688);
+emit_32(3269627871);
+emit_32(1104850924);
+emit_32(3254386688);
+emit_32(3269115904);
+emit_32(1105116162);
+emit_32(3254386688);
+emit_32(3268603937);
+emit_32(1105713640);
+emit_32(3254386688);
+emit_32(3268091970);
+emit_32(1105431311);
+emit_32(3254386688);
+emit_32(3267579911);
+emit_32(1105504921);
+emit_32(3254386688);
+emit_32(3267067904);
+emit_32(1105722658);
+emit_32(3254386688);
+emit_32(3266555911);
+emit_32(1106419279);
+emit_32(3254386688);
+emit_32(3266043904);
+emit_32(1106556905);
+emit_32(3254386688);
+emit_32(3265531911);
+emit_32(1106183088);
+emit_32(3254386688);
+emit_32(3265019904);
+emit_32(1105580681);
+emit_32(3254386688);
+emit_32(3264507911);
+emit_32(1105335366);
+emit_32(3254386688);
+emit_32(3263995904);
+emit_32(1104986348);
+emit_32(3254386688);
+emit_32(3263483911);
+emit_32(1105341763);
+emit_32(3254386688);
+emit_32(3262775296);
+emit_32(1105698541);
+emit_32(3254386688);
+emit_32(3261751309);
+emit_32(1105960737);
+emit_32(3254386688);
+emit_32(3260727296);
+emit_32(1106331828);
+emit_32(3254386688);
+emit_32(3259703309);
+emit_32(1107459886);
+emit_32(3254386688);
+emit_32(3258679296);
+emit_32(1108153677);
+emit_32(3254386688);
+emit_32(3257655309);
+emit_32(1108782508);
+emit_32(3254386688);
+emit_32(3256631296);
+emit_32(1109432127);
+emit_32(3254386688);
+emit_32(3255607309);
+emit_32(1110052097);
+emit_32(3254386688);
+emit_32(3254386688);
+emit_32(1110875832);
+emit_32(3254386688);
+emit_32(3252338714);
+emit_32(1111641214);
+emit_32(3254386688);
+emit_32(3250290688);
+emit_32(1112331230);
+emit_32(3254386688);
+emit_32(3248242714);
+emit_32(1112948054);
+emit_32(3254386688);
+emit_32(3245998080);
+emit_32(1113423243);
+emit_32(3254386688);
+emit_32(3241902132);
+emit_32(1113710579);
+emit_32(3254386688);
+emit_32(3237609472);
+emit_32(1113669763);
+emit_32(3254386688);
+emit_32(3229220864);
+emit_32(1114121516);
+emit_32(3254386688);
+emit_32(0);
+emit_32(1114484769);
+emit_32(3254386688);
+emit_32(1081737216);
+emit_32(1114484349);
+emit_32(3254386688);
+emit_32(3279552512);
+emit_32(1072117538);
+emit_32(3255607309);
+emit_32(3279296528);
+emit_32(1066548005);
+emit_32(3255607309);
+emit_32(3279040545);
+emit_32(1074090329);
+emit_32(3255607309);
+emit_32(3278784496);
+emit_32(1080727353);
+emit_32(3255607309);
+emit_32(3278528512);
+emit_32(1083163300);
+emit_32(3255607309);
+emit_32(3278272528);
+emit_32(1085569447);
+emit_32(3255607309);
+emit_32(3278016545);
+emit_32(1089130264);
+emit_32(3255607309);
+emit_32(3277760496);
+emit_32(1091726821);
+emit_32(3255607309);
+emit_32(3277504512);
+emit_32(1092664741);
+emit_32(3255607309);
+emit_32(3277248528);
+emit_32(1094453402);
+emit_32(3255607309);
+emit_32(3276992545);
+emit_32(1095438854);
+emit_32(3255607309);
+emit_32(3276736496);
+emit_32(1096833145);
+emit_32(3255607309);
+emit_32(3276480512);
+emit_32(1097840722);
+emit_32(3255607309);
+emit_32(3276224528);
+emit_32(1099027500);
+emit_32(3255607309);
+emit_32(3275968545);
+emit_32(1099544815);
+emit_32(3255607309);
+emit_32(3275712496);
+emit_32(1099992505);
+emit_32(3255607309);
+emit_32(3275456512);
+emit_32(1100930351);
+emit_32(3255607309);
+emit_32(3275200528);
+emit_32(1102195720);
+emit_32(3255607309);
+emit_32(3274944545);
+emit_32(1103964773);
+emit_32(3255607309);
+emit_32(3274688496);
+emit_32(1105022262);
+emit_32(3255607309);
+emit_32(3274432512);
+emit_32(1105539419);
+emit_32(3255607309);
+emit_32(3274176528);
+emit_32(1106031097);
+emit_32(3255607309);
+emit_32(3273920545);
+emit_32(1106016050);
+emit_32(3255607309);
+emit_32(3273664496);
+emit_32(1106647135);
+emit_32(3255607309);
+emit_32(3273408512);
+emit_32(1106967003);
+emit_32(3255607309);
+emit_32(3273152528);
+emit_32(1107003861);
+emit_32(3255607309);
+emit_32(3272896545);
+emit_32(1107169273);
+emit_32(3255607309);
+emit_32(3272640496);
+emit_32(1106842170);
+emit_32(3255607309);
+emit_32(3272384512);
+emit_32(1105904481);
+emit_32(3255607309);
+emit_32(3272128528);
+emit_32(1105234493);
+emit_32(3255607309);
+emit_32(3271872545);
+emit_32(1105294944);
+emit_32(3255607309);
+emit_32(3271616496);
+emit_32(1105337988);
+emit_32(3255607309);
+emit_32(3271163904);
+emit_32(1104796765);
+emit_32(3255607309);
+emit_32(3270651937);
+emit_32(1104285113);
+emit_32(3255607309);
+emit_32(3270139970);
+emit_32(1103883875);
+emit_32(3255607309);
+emit_32(3269627871);
+emit_32(1103911662);
+emit_32(3255607309);
+emit_32(3269115904);
+emit_32(1104082528);
+emit_32(3255607309);
+emit_32(3268603937);
+emit_32(1105166231);
+emit_32(3255607309);
+emit_32(3268091970);
+emit_32(1105162718);
+emit_32(3255607309);
+emit_32(3267579911);
+emit_32(1105161460);
+emit_32(3255607309);
+emit_32(3267067904);
+emit_32(1105681397);
+emit_32(3255607309);
+emit_32(3266555911);
+emit_32(1106322129);
+emit_32(3255607309);
+emit_32(3266043904);
+emit_32(1106430080);
+emit_32(3255607309);
+emit_32(3265531911);
+emit_32(1106116084);
+emit_32(3255607309);
+emit_32(3265019904);
+emit_32(1105862643);
+emit_32(3255607309);
+emit_32(3264507911);
+emit_32(1105647947);
+emit_32(3255607309);
+emit_32(3263995904);
+emit_32(1105573655);
+emit_32(3255607309);
+emit_32(3263483911);
+emit_32(1105891374);
+emit_32(3255607309);
+emit_32(3262775296);
+emit_32(1106077339);
+emit_32(3255607309);
+emit_32(3261751309);
+emit_32(1106805889);
+emit_32(3255607309);
+emit_32(3260727296);
+emit_32(1107381269);
+emit_32(3255607309);
+emit_32(3259703309);
+emit_32(1107945325);
+emit_32(3255607309);
+emit_32(3258679296);
+emit_32(1108632771);
+emit_32(3255607309);
+emit_32(3257655309);
+emit_32(1109426989);
+emit_32(3255607309);
+emit_32(3256631296);
+emit_32(1110034927);
+emit_32(3255607309);
+emit_32(3255607309);
+emit_32(1110881652);
+emit_32(3255607309);
+emit_32(3254386688);
+emit_32(1111900946);
+emit_32(3255607309);
+emit_32(3252338714);
+emit_32(1112428590);
+emit_32(3255607309);
+emit_32(3250290688);
+emit_32(1112879923);
+emit_32(3255607309);
+emit_32(3248242714);
+emit_32(1113433755);
+emit_32(3255607309);
+emit_32(3245998080);
+emit_32(1113801412);
+emit_32(3255607309);
+emit_32(3241902132);
+emit_32(1113823248);
+emit_32(3255607309);
+emit_32(3237609472);
+emit_32(1114004154);
+emit_32(3255607309);
+emit_32(3229220864);
+emit_32(1114356344);
+emit_32(3255607309);
+emit_32(0);
+emit_32(1114696502);
+emit_32(3255607309);
+emit_32(1081737216);
+emit_32(1114694274);
+emit_32(3255607309);
+emit_32(3279552512);
+emit_32(1076255680);
+emit_32(3256631296);
+emit_32(3279296528);
+emit_32(1069990271);
+emit_32(3256631296);
+emit_32(3279040545);
+emit_32(1068896816);
+emit_32(3256631296);
+emit_32(3278784496);
+emit_32(1077023364);
+emit_32(3256631296);
+emit_32(3278528512);
+emit_32(1081539790);
+emit_32(3256631296);
+emit_32(3278272528);
+emit_32(1084255287);
+emit_32(3256631296);
+emit_32(3278016545);
+emit_32(1087513968);
+emit_32(3256631296);
+emit_32(3277760496);
+emit_32(1090514049);
+emit_32(3256631296);
+emit_32(3277504512);
+emit_32(1092329323);
+emit_32(3256631296);
+emit_32(3277248528);
+emit_32(1094687130);
+emit_32(3256631296);
+emit_32(3276992545);
+emit_32(1095553044);
+emit_32(3256631296);
+emit_32(3276736496);
+emit_32(1096485647);
+emit_32(3256631296);
+emit_32(3276480512);
+emit_32(1097021994);
+emit_32(3256631296);
+emit_32(3276224528);
+emit_32(1097731565);
+emit_32(3256631296);
+emit_32(3275968545);
+emit_32(1099236114);
+emit_32(3256631296);
+emit_32(3275712496);
+emit_32(1099466539);
+emit_32(3256631296);
+emit_32(3275456512);
+emit_32(1100645820);
+emit_32(3256631296);
+emit_32(3275200528);
+emit_32(1102788270);
+emit_32(3256631296);
+emit_32(3274944545);
+emit_32(1104259213);
+emit_32(3256631296);
+emit_32(3274688496);
+emit_32(1105157161);
+emit_32(3256631296);
+emit_32(3274432512);
+emit_32(1105746199);
+emit_32(3256631296);
+emit_32(3274176528);
+emit_32(1105646689);
+emit_32(3256631296);
+emit_32(3273920545);
+emit_32(1106061296);
+emit_32(3256631296);
+emit_32(3273664496);
+emit_32(1106358777);
+emit_32(3256631296);
+emit_32(3273408512);
+emit_32(1106493728);
+emit_32(3256631296);
+emit_32(3273152528);
+emit_32(1106565556);
+emit_32(3256631296);
+emit_32(3272896545);
+emit_32(1106704649);
+emit_32(3256631296);
+emit_32(3272640496);
+emit_32(1106418231);
+emit_32(3256631296);
+emit_32(3272384512);
+emit_32(1105930014);
+emit_32(3256631296);
+emit_32(3272128528);
+emit_32(1105073589);
+emit_32(3256631296);
+emit_32(3271872545);
+emit_32(1104573104);
+emit_32(3256631296);
+emit_32(3271616496);
+emit_32(1104491368);
+emit_32(3256631296);
+emit_32(3271163904);
+emit_32(1103992822);
+emit_32(3256631296);
+emit_32(3270651937);
+emit_32(1103347004);
+emit_32(3256631296);
+emit_32(3270139970);
+emit_32(1103160882);
+emit_32(3256631296);
+emit_32(3269627871);
+emit_32(1103581256);
+emit_32(3256631296);
+emit_32(3269115904);
+emit_32(1103924874);
+emit_32(3256631296);
+emit_32(3268603937);
+emit_32(1103872184);
+emit_32(3256631296);
+emit_32(3268091970);
+emit_32(1104525237);
+emit_32(3256631296);
+emit_32(3267579911);
+emit_32(1104546785);
+emit_32(3256631296);
+emit_32(3267067904);
+emit_32(1105161250);
+emit_32(3256631296);
+emit_32(3266555911);
+emit_32(1105731204);
+emit_32(3256631296);
+emit_32(3266043904);
+emit_32(1105909881);
+emit_32(3256631296);
+emit_32(3265531911);
+emit_32(1106044990);
+emit_32(3256631296);
+emit_32(3265019904);
+emit_32(1105972009);
+emit_32(3256631296);
+emit_32(3264507911);
+emit_32(1105900444);
+emit_32(3256631296);
+emit_32(3263995904);
+emit_32(1106042264);
+emit_32(3256631296);
+emit_32(3263483911);
+emit_32(1105966347);
+emit_32(3256631296);
+emit_32(3262775296);
+emit_32(1106865029);
+emit_32(3256631296);
+emit_32(3261751309);
+emit_32(1107485707);
+emit_32(3256631296);
+emit_32(3260727296);
+emit_32(1107879081);
+emit_32(3256631296);
+emit_32(3259703309);
+emit_32(1108393643);
+emit_32(3256631296);
+emit_32(3258679296);
+emit_32(1109055845);
+emit_32(3256631296);
+emit_32(3257655309);
+emit_32(1109718362);
+emit_32(3256631296);
+emit_32(3256631296);
+emit_32(1110595522);
+emit_32(3256631296);
+emit_32(3255607309);
+emit_32(1111233213);
+emit_32(3256631296);
+emit_32(3254386688);
+emit_32(1112275236);
+emit_32(3256631296);
+emit_32(3252338714);
+emit_32(1112879058);
+emit_32(3256631296);
+emit_32(3250290688);
+emit_32(1113378678);
+emit_32(3256631296);
+emit_32(3248242714);
+emit_32(1113688847);
+emit_32(3256631296);
+emit_32(3245998080);
+emit_32(1114075693);
+emit_32(3256631296);
+emit_32(3241902132);
+emit_32(1114046857);
+emit_32(3256631296);
+emit_32(3237609472);
+emit_32(1114323576);
+emit_32(3256631296);
+emit_32(3229220864);
+emit_32(1114565509);
+emit_32(3256631296);
+emit_32(0);
+emit_32(1114610047);
+emit_32(3256631296);
+emit_32(1081737216);
+emit_32(1114612538);
+emit_32(3256631296);
+emit_32(3279552512);
+emit_32(1076804295);
+emit_32(3257655309);
+emit_32(3279296528);
+emit_32(1073151266);
+emit_32(3257655309);
+emit_32(3279040545);
+emit_32(1073776846);
+emit_32(3257655309);
+emit_32(3278784496);
+emit_32(1078617493);
+emit_32(3257655309);
+emit_32(3278528512);
+emit_32(1079412439);
+emit_32(3257655309);
+emit_32(3278272528);
+emit_32(1083194359);
+emit_32(3257655309);
+emit_32(3278016545);
+emit_32(1086932302);
+emit_32(3257655309);
+emit_32(3277760496);
+emit_32(1090303516);
+emit_32(3257655309);
+emit_32(3277504512);
+emit_32(1091865904);
+emit_32(3257655309);
+emit_32(3277248528);
+emit_32(1094115865);
+emit_32(3257655309);
+emit_32(3276992545);
+emit_32(1095463705);
+emit_32(3257655309);
+emit_32(3276736496);
+emit_32(1096420531);
+emit_32(3257655309);
+emit_32(3276480512);
+emit_32(1097432511);
+emit_32(3257655309);
+emit_32(3276224528);
+emit_32(1097662883);
+emit_32(3257655309);
+emit_32(3275968545);
+emit_32(1098694263);
+emit_32(3257655309);
+emit_32(3275712496);
+emit_32(1099094871);
+emit_32(3257655309);
+emit_32(3275456512);
+emit_32(1101139542);
+emit_32(3257655309);
+emit_32(3275200528);
+emit_32(1102734583);
+emit_32(3257655309);
+emit_32(3274944545);
+emit_32(1103866521);
+emit_32(3257655309);
+emit_32(3274688496);
+emit_32(1104826178);
+emit_32(3257655309);
+emit_32(3274432512);
+emit_32(1105191869);
+emit_32(3257655309);
+emit_32(3274176528);
+emit_32(1105342759);
+emit_32(3257655309);
+emit_32(3273920545);
+emit_32(1105684804);
+emit_32(3257655309);
+emit_32(3273664496);
+emit_32(1105820647);
+emit_32(3257655309);
+emit_32(3273408512);
+emit_32(1106189903);
+emit_32(3257655309);
+emit_32(3273152528);
+emit_32(1105981447);
+emit_32(3257655309);
+emit_32(3272896545);
+emit_32(1105858134);
+emit_32(3257655309);
+emit_32(3272640496);
+emit_32(1105678146);
+emit_32(3257655309);
+emit_32(3272384512);
+emit_32(1104998826);
+emit_32(3257655309);
+emit_32(3272128528);
+emit_32(1104598218);
+emit_32(3257655309);
+emit_32(3271872545);
+emit_32(1104297643);
+emit_32(3257655309);
+emit_32(3271616496);
+emit_32(1103698487);
+emit_32(3257655309);
+emit_32(3271163904);
+emit_32(1103368290);
+emit_32(3257655309);
+emit_32(3270651937);
+emit_32(1103021107);
+emit_32(3257655309);
+emit_32(3270139970);
+emit_32(1102840332);
+emit_32(3257655309);
+emit_32(3269627871);
+emit_32(1103133042);
+emit_32(3257655309);
+emit_32(3269115904);
+emit_32(1103173570);
+emit_32(3257655309);
+emit_32(3268603937);
+emit_32(1103141274);
+emit_32(3257655309);
+emit_32(3268091970);
+emit_32(1103365407);
+emit_32(3257655309);
+emit_32(3267579911);
+emit_32(1103545342);
+emit_32(3257655309);
+emit_32(3267067904);
+emit_32(1104414140);
+emit_32(3257655309);
+emit_32(3266555911);
+emit_32(1104666532);
+emit_32(3257655309);
+emit_32(3266043904);
+emit_32(1105496480);
+emit_32(3257655309);
+emit_32(3265531911);
+emit_32(1105715423);
+emit_32(3257655309);
+emit_32(3265019904);
+emit_32(1105801196);
+emit_32(3257655309);
+emit_32(3264507911);
+emit_32(1105657070);
+emit_32(3257655309);
+emit_32(3263995904);
+emit_32(1106199708);
+emit_32(3257655309);
+emit_32(3263483911);
+emit_32(1107111182);
+emit_32(3257655309);
+emit_32(3262775296);
+emit_32(1107520468);
+emit_32(3257655309);
+emit_32(3261751309);
+emit_32(1107938194);
+emit_32(3257655309);
+emit_32(3260727296);
+emit_32(1108285168);
+emit_32(3257655309);
+emit_32(3259703309);
+emit_32(1109004937);
+emit_32(3257655309);
+emit_32(3258679296);
+emit_32(1109555675);
+emit_32(3257655309);
+emit_32(3257655309);
+emit_32(1110079124);
+emit_32(3257655309);
+emit_32(3256631296);
+emit_32(1110954659);
+emit_32(3257655309);
+emit_32(3255607309);
+emit_32(1111702136);
+emit_32(3257655309);
+emit_32(3254386688);
+emit_32(1112419205);
+emit_32(3257655309);
+emit_32(3252338714);
+emit_32(1113101723);
+emit_32(3257655309);
+emit_32(3250290688);
+emit_32(1113769509);
+emit_32(3257655309);
+emit_32(3248242714);
+emit_32(1113942393);
+emit_32(3257655309);
+emit_32(3245998080);
+emit_32(1114187760);
+emit_32(3257655309);
+emit_32(3241902132);
+emit_32(1114233451);
+emit_32(3257655309);
+emit_32(3237609472);
+emit_32(1114375009);
+emit_32(3257655309);
+emit_32(3229220864);
+emit_32(1114534052);
+emit_32(3257655309);
+emit_32(0);
+emit_32(1114534445);
+emit_32(3257655309);
+emit_32(1081737216);
+emit_32(1114510642);
+emit_32(3257655309);
+emit_32(3279552512);
+emit_32(1073972469);
+emit_32(3258679296);
+emit_32(3279296528);
+emit_32(1069063330);
+emit_32(3258679296);
+emit_32(3279040545);
+emit_32(1073401750);
+emit_32(3258679296);
+emit_32(3278784496);
+emit_32(1075865903);
+emit_32(3258679296);
+emit_32(3278528512);
+emit_32(1078931520);
+emit_32(3258679296);
+emit_32(3278272528);
+emit_32(1083096191);
+emit_32(3258679296);
+emit_32(3278016545);
+emit_32(1086698344);
+emit_32(3258679296);
+emit_32(3277760496);
+emit_32(1089640354);
+emit_32(3258679296);
+emit_32(3277504512);
+emit_32(1091993652);
+emit_32(3258679296);
+emit_32(3277248528);
+emit_32(1094077907);
+emit_32(3258679296);
+emit_32(3276992545);
+emit_32(1095184469);
+emit_32(3258679296);
+emit_32(3276736496);
+emit_32(1095896243);
+emit_32(3258679296);
+emit_32(3276480512);
+emit_32(1096633916);
+emit_32(3258679296);
+emit_32(3276224528);
+emit_32(1096975542);
+emit_32(3258679296);
+emit_32(3275968545);
+emit_32(1097889376);
+emit_32(3258679296);
+emit_32(3275712496);
+emit_32(1099541774);
+emit_32(3258679296);
+emit_32(3275456512);
+emit_32(1101179178);
+emit_32(3258679296);
+emit_32(3275200528);
+emit_32(1102317932);
+emit_32(3258679296);
+emit_32(3274944545);
+emit_32(1103521278);
+emit_32(3258679296);
+emit_32(3274688496);
+emit_32(1104345983);
+emit_32(3258679296);
+emit_32(3274432512);
+emit_32(1104852759);
+emit_32(3258679296);
+emit_32(3274176528);
+emit_32(1104831526);
+emit_32(3258679296);
+emit_32(3273920545);
+emit_32(1104946974);
+emit_32(3258679296);
+emit_32(3273664496);
+emit_32(1105281994);
+emit_32(3258679296);
+emit_32(3273408512);
+emit_32(1105386275);
+emit_32(3258679296);
+emit_32(3273152528);
+emit_32(1104804053);
+emit_32(3258679296);
+emit_32(3272896545);
+emit_32(1105020374);
+emit_32(3258679296);
+emit_32(3272640496);
+emit_32(1104527806);
+emit_32(3258679296);
+emit_32(3272384512);
+emit_32(1103824211);
+emit_32(3258679296);
+emit_32(3272128528);
+emit_32(1103687791);
+emit_32(3258679296);
+emit_32(3271872545);
+emit_32(1103464392);
+emit_32(3258679296);
+emit_32(3271616496);
+emit_32(1103011774);
+emit_32(3258679296);
+emit_32(3271163904);
+emit_32(1102466777);
+emit_32(3258679296);
+emit_32(3270651937);
+emit_32(1102908804);
+emit_32(3258679296);
+emit_32(3270139970);
+emit_32(1102728659);
+emit_32(3258679296);
+emit_32(3269627871);
+emit_32(1102517318);
+emit_32(3258679296);
+emit_32(3269115904);
+emit_32(1102387190);
+emit_32(3258679296);
+emit_32(3268603937);
+emit_32(1102173019);
+emit_32(3258679296);
+emit_32(3268091970);
+emit_32(1102448637);
+emit_32(3258679296);
+emit_32(3267579911);
+emit_32(1102804104);
+emit_32(3258679296);
+emit_32(3267067904);
+emit_32(1103652140);
+emit_32(3258679296);
+emit_32(3266555911);
+emit_32(1104033035);
+emit_32(3258679296);
+emit_32(3266043904);
+emit_32(1104794721);
+emit_32(3258679296);
+emit_32(3265531911);
+emit_32(1105280578);
+emit_32(3258679296);
+emit_32(3265019904);
+emit_32(1105555305);
+emit_32(3258679296);
+emit_32(3264507911);
+emit_32(1106497398);
+emit_32(3258679296);
+emit_32(3263995904);
+emit_32(1107356549);
+emit_32(3258679296);
+emit_32(3263483911);
+emit_32(1107738440);
+emit_32(3258679296);
+emit_32(3262775296);
+emit_32(1108026091);
+emit_32(3258679296);
+emit_32(3261751309);
+emit_32(1108412596);
+emit_32(3258679296);
+emit_32(3260727296);
+emit_32(1108935547);
+emit_32(3258679296);
+emit_32(3259703309);
+emit_32(1109269178);
+emit_32(3258679296);
+emit_32(3258679296);
+emit_32(1109856774);
+emit_32(3258679296);
+emit_32(3257655309);
+emit_32(1110673955);
+emit_32(3258679296);
+emit_32(3256631296);
+emit_32(1111396031);
+emit_32(3258679296);
+emit_32(3255607309);
+emit_32(1111904302);
+emit_32(3258679296);
+emit_32(3254386688);
+emit_32(1112640612);
+emit_32(3258679296);
+emit_32(3252338714);
+emit_32(1113308083);
+emit_32(3258679296);
+emit_32(3250290688);
+emit_32(1113763480);
+emit_32(3258679296);
+emit_32(3248242714);
+emit_32(1113823117);
+emit_32(3258679296);
+emit_32(3245998080);
+emit_32(1114289734);
+emit_32(3258679296);
+emit_32(3241902132);
+emit_32(1114547028);
+emit_32(3258679296);
+emit_32(3237609472);
+emit_32(1114378417);
+emit_32(3258679296);
+emit_32(3229220864);
+emit_32(1114468175);
+emit_32(3258679296);
+emit_32(0);
+emit_32(1114253689);
+emit_32(3258679296);
+emit_32(1081737216);
+emit_32(1114350184);
+emit_32(3258679296);
+emit_32(3279552512);
+emit_32(1076163699);
+emit_32(3259703309);
+emit_32(3279296528);
+emit_32(1074005017);
+emit_32(3259703309);
+emit_32(3279040545);
+emit_32(1074851343);
+emit_32(3259703309);
+emit_32(3278784496);
+emit_32(1075567479);
+emit_32(3259703309);
+emit_32(3278528512);
+emit_32(1076420223);
+emit_32(3259703309);
+emit_32(3278272528);
+emit_32(1083073395);
+emit_32(3259703309);
+emit_32(3278016545);
+emit_32(1087377339);
+emit_32(3259703309);
+emit_32(3277760496);
+emit_32(1090634446);
+emit_32(3259703309);
+emit_32(3277504512);
+emit_32(1092723461);
+emit_32(3259703309);
+emit_32(3277248528);
+emit_32(1094053580);
+emit_32(3259703309);
+emit_32(3276992545);
+emit_32(1095488766);
+emit_32(3259703309);
+emit_32(3276736496);
+emit_32(1096447794);
+emit_32(3259703309);
+emit_32(3276480512);
+emit_32(1096424305);
+emit_32(3259703309);
+emit_32(3276224528);
+emit_32(1096267648);
+emit_32(3259703309);
+emit_32(3275968545);
+emit_32(1098177000);
+emit_32(3259703309);
+emit_32(3275712496);
+emit_32(1099698536);
+emit_32(3259703309);
+emit_32(3275456512);
+emit_32(1100780981);
+emit_32(3259703309);
+emit_32(3275200528);
+emit_32(1102100247);
+emit_32(3259703309);
+emit_32(3274944545);
+emit_32(1103045696);
+emit_32(3259703309);
+emit_32(3274688496);
+emit_32(1103591375);
+emit_32(3259703309);
+emit_32(3274432512);
+emit_32(1104209510);
+emit_32(3259703309);
+emit_32(3274176528);
+emit_32(1104099882);
+emit_32(3259703309);
+emit_32(3273920545);
+emit_32(1104651171);
+emit_32(3259703309);
+emit_32(3273664496);
+emit_32(1104566760);
+emit_32(3259703309);
+emit_32(3273408512);
+emit_32(1104331250);
+emit_32(3259703309);
+emit_32(3273152528);
+emit_32(1103945269);
+emit_32(3259703309);
+emit_32(3272896545);
+emit_32(1103774247);
+emit_32(3259703309);
+emit_32(3272640496);
+emit_32(1103880729);
+emit_32(3259703309);
+emit_32(3272384512);
+emit_32(1103052669);
+emit_32(3259703309);
+emit_32(3272128528);
+emit_32(1102949594);
+emit_32(3259703309);
+emit_32(3271872545);
+emit_32(1102556640);
+emit_32(3259703309);
+emit_32(3271616496);
+emit_32(1102215329);
+emit_32(3259703309);
+emit_32(3271163904);
+emit_32(1102211711);
+emit_32(3259703309);
+emit_32(3270651937);
+emit_32(1102750102);
+emit_32(3259703309);
+emit_32(3270139970);
+emit_32(1102672246);
+emit_32(3259703309);
+emit_32(3269627871);
+emit_32(1102404282);
+emit_32(3259703309);
+emit_32(3269115904);
+emit_32(1101664721);
+emit_32(3259703309);
+emit_32(3268603937);
+emit_32(1101247965);
+emit_32(3259703309);
+emit_32(3268091970);
+emit_32(1101781742);
+emit_32(3259703309);
+emit_32(3267579911);
+emit_32(1102060559);
+emit_32(3259703309);
+emit_32(3267067904);
+emit_32(1102827382);
+emit_32(3259703309);
+emit_32(3266555911);
+emit_32(1103737651);
+emit_32(3259703309);
+emit_32(3266043904);
+emit_32(1104384360);
+emit_32(3259703309);
+emit_32(3265531911);
+emit_32(1104969151);
+emit_32(3259703309);
+emit_32(3265019904);
+emit_32(1106019143);
+emit_32(3259703309);
+emit_32(3264507911);
+emit_32(1106853337);
+emit_32(3259703309);
+emit_32(3263995904);
+emit_32(1107698306);
+emit_32(3259703309);
+emit_32(3263483911);
+emit_32(1108253868);
+emit_32(3259703309);
+emit_32(3262775296);
+emit_32(1108408245);
+emit_32(3259703309);
+emit_32(3261751309);
+emit_32(1108719619);
+emit_32(3259703309);
+emit_32(3260727296);
+emit_32(1109327662);
+emit_32(3259703309);
+emit_32(3259703309);
+emit_32(1109785051);
+emit_32(3259703309);
+emit_32(3258679296);
+emit_32(1110584826);
+emit_32(3259703309);
+emit_32(3257655309);
+emit_32(1111298907);
+emit_32(3259703309);
+emit_32(3256631296);
+emit_32(1111928472);
+emit_32(3259703309);
+emit_32(3255607309);
+emit_32(1112511401);
+emit_32(3259703309);
+emit_32(3254386688);
+emit_32(1113049871);
+emit_32(3259703309);
+emit_32(3252338714);
+emit_32(1113389636);
+emit_32(3259703309);
+emit_32(3250290688);
+emit_32(1113731419);
+emit_32(3259703309);
+emit_32(3248242714);
+emit_32(1114257359);
+emit_32(3259703309);
+emit_32(3245998080);
+emit_32(1114519870);
+emit_32(3259703309);
+emit_32(3241902132);
+emit_32(1114340039);
+emit_32(3259703309);
+emit_32(3237609472);
+emit_32(1114383922);
+emit_32(3259703309);
+emit_32(3229220864);
+emit_32(1114528390);
+emit_32(3259703309);
+emit_32(0);
+emit_32(1114544302);
+emit_32(3259703309);
+emit_32(1081737216);
+emit_32(1114597202);
+emit_32(3259703309);
+emit_32(3279552512);
+emit_32(1073915300);
+emit_32(3260727296);
+emit_32(3279296528);
+emit_32(1076045336);
+emit_32(3260727296);
+emit_32(3279040545);
+emit_32(1076717767);
+emit_32(3260727296);
+emit_32(3278784496);
+emit_32(1077967921);
+emit_32(3260727296);
+emit_32(3278528512);
+emit_32(1080230706);
+emit_32(3260727296);
+emit_32(3278272528);
+emit_32(1084434174);
+emit_32(3260727296);
+emit_32(3278016545);
+emit_32(1088619209);
+emit_32(3260727296);
+emit_32(3277760496);
+emit_32(1090948694);
+emit_32(3260727296);
+emit_32(3277504512);
+emit_32(1092674388);
+emit_32(3260727296);
+emit_32(3277248528);
+emit_32(1094185071);
+emit_32(3260727296);
+emit_32(3276992545);
+emit_32(1094902717);
+emit_32(3260727296);
+emit_32(3276736496);
+emit_32(1095470101);
+emit_32(3260727296);
+emit_32(3276480512);
+emit_32(1095440531);
+emit_32(3260727296);
+emit_32(3276224528);
+emit_32(1096837654);
+emit_32(3260727296);
+emit_32(3275968545);
+emit_32(1098967784);
+emit_32(3260727296);
+emit_32(3275712496);
+emit_32(1100160067);
+emit_32(3260727296);
+emit_32(3275456512);
+emit_32(1100666582);
+emit_32(3260727296);
+emit_32(3275200528);
+emit_32(1101873178);
+emit_32(3260727296);
+emit_32(3274944545);
+emit_32(1102572736);
+emit_32(3260727296);
+emit_32(3274688496);
+emit_32(1102982834);
+emit_32(3260727296);
+emit_32(3274432512);
+emit_32(1103746092);
+emit_32(3260727296);
+emit_32(3274176528);
+emit_32(1104190584);
+emit_32(3260727296);
+emit_32(3273920545);
+emit_32(1104541647);
+emit_32(3260727296);
+emit_32(3273664496);
+emit_32(1104309335);
+emit_32(3260727296);
+emit_32(3273408512);
+emit_32(1103949831);
+emit_32(3260727296);
+emit_32(3273152528);
+emit_32(1103383495);
+emit_32(3260727296);
+emit_32(3272896545);
+emit_32(1103021107);
+emit_32(3260727296);
+emit_32(3272640496);
+emit_32(1102773014);
+emit_32(3260727296);
+emit_32(3272384512);
+emit_32(1102509192);
+emit_32(3260727296);
+emit_32(3272128528);
+emit_32(1102328470);
+emit_32(3260727296);
+emit_32(3271872545);
+emit_32(1101757678);
+emit_32(3260727296);
+emit_32(3271616496);
+emit_32(1101776133);
+emit_32(3260727296);
+emit_32(3271163904);
+emit_32(1102138363);
+emit_32(3260727296);
+emit_32(3270651937);
+emit_32(1102294496);
+emit_32(3260727296);
+emit_32(3270139970);
+emit_32(1101746563);
+emit_32(3260727296);
+emit_32(3269627871);
+emit_32(1101436656);
+emit_32(3260727296);
+emit_32(3269115904);
+emit_32(1100808559);
+emit_32(3260727296);
+emit_32(3268603937);
+emit_32(1101081451);
+emit_32(3260727296);
+emit_32(3268091970);
+emit_32(1101838156);
+emit_32(3260727296);
+emit_32(3267579911);
+emit_32(1102177947);
+emit_32(3260727296);
+emit_32(3267067904);
+emit_32(1102933656);
+emit_32(3260727296);
+emit_32(3266555911);
+emit_32(1103594940);
+emit_32(3260727296);
+emit_32(3266043904);
+emit_32(1104370991);
+emit_32(3260727296);
+emit_32(3265531911);
+emit_32(1105153229);
+emit_32(3260727296);
+emit_32(3265019904);
+emit_32(1106283803);
+emit_32(3260727296);
+emit_32(3264507911);
+emit_32(1107489928);
+emit_32(3260727296);
+emit_32(3263995904);
+emit_32(1107912347);
+emit_32(3260727296);
+emit_32(3263483911);
+emit_32(1108259976);
+emit_32(3260727296);
+emit_32(3262775296);
+emit_32(1108728218);
+emit_32(3260727296);
+emit_32(3261751309);
+emit_32(1108959507);
+emit_32(3260727296);
+emit_32(3260727296);
+emit_32(1109551402);
+emit_32(3260727296);
+emit_32(3259703309);
+emit_32(1110560788);
+emit_32(3260727296);
+emit_32(3258679296);
+emit_32(1111390473);
+emit_32(3260727296);
+emit_32(3257655309);
+emit_32(1111954109);
+emit_32(3260727296);
+emit_32(3256631296);
+emit_32(1112588288);
+emit_32(3260727296);
+emit_32(3255607309);
+emit_32(1113193211);
+emit_32(3260727296);
+emit_32(3254386688);
+emit_32(1113572953);
+emit_32(3260727296);
+emit_32(3252338714);
+emit_32(1113885324);
+emit_32(3260727296);
+emit_32(3250290688);
+emit_32(1114116194);
+emit_32(3260727296);
+emit_32(3248242714);
+emit_32(1114531771);
+emit_32(3260727296);
+emit_32(3245998080);
+emit_32(1114632933);
+emit_32(3260727296);
+emit_32(3241902132);
+emit_32(1114591697);
+emit_32(3260727296);
+emit_32(3237609472);
+emit_32(1114663420);
+emit_32(3260727296);
+emit_32(3229220864);
+emit_32(1114860631);
+emit_32(3260727296);
+emit_32(0);
+emit_32(1114783587);
+emit_32(3260727296);
+emit_32(1081737216);
+emit_32(1114739258);
+emit_32(3260727296);
+emit_32(3279552512);
+emit_32(1082154906);
+emit_32(3261751309);
+emit_32(3279296528);
+emit_32(1078227213);
+emit_32(3261751309);
+emit_32(3279040545);
+emit_32(1079515745);
+emit_32(3261751309);
+emit_32(3278784496);
+emit_32(1080953133);
+emit_32(3261751309);
+emit_32(3278528512);
+emit_32(1082315317);
+emit_32(3261751309);
+emit_32(3278272528);
+emit_32(1085410084);
+emit_32(3261751309);
+emit_32(3278016545);
+emit_32(1089116884);
+emit_32(3261751309);
+emit_32(3277760496);
+emit_32(1091162058);
+emit_32(3261751309);
+emit_32(3277504512);
+emit_32(1092383922);
+emit_32(3261751309);
+emit_32(3277248528);
+emit_32(1094686500);
+emit_32(3261751309);
+emit_32(3276992545);
+emit_32(1095695440);
+emit_32(3261751309);
+emit_32(3276736496);
+emit_32(1096304558);
+emit_32(3261751309);
+emit_32(3276480512);
+emit_32(1096755970);
+emit_32(3261751309);
+emit_32(3276224528);
+emit_32(1097235484);
+emit_32(3261751309);
+emit_32(3275968545);
+emit_32(1098986081);
+emit_32(3261751309);
+emit_32(3275712496);
+emit_32(1099885602);
+emit_32(3261751309);
+emit_32(3275456512);
+emit_32(1100472805);
+emit_32(3261751309);
+emit_32(3275200528);
+emit_32(1101685588);
+emit_32(3261751309);
+emit_32(3274944545);
+emit_32(1102836243);
+emit_32(3261751309);
+emit_32(3274688496);
+emit_32(1103812048);
+emit_32(3261751309);
+emit_32(3274432512);
+emit_32(1104207518);
+emit_32(3261751309);
+emit_32(3274176528);
+emit_32(1104457970);
+emit_32(3261751309);
+emit_32(3273920545);
+emit_32(1104083891);
+emit_32(3261751309);
+emit_32(3273664496);
+emit_32(1103629805);
+emit_32(3261751309);
+emit_32(3273408512);
+emit_32(1103776553);
+emit_32(3261751309);
+emit_32(3273152528);
+emit_32(1103074794);
+emit_32(3261751309);
+emit_32(3272896545);
+emit_32(1102698250);
+emit_32(3261751309);
+emit_32(3272640496);
+emit_32(1102376914);
+emit_32(3261751309);
+emit_32(3272384512);
+emit_32(1101790760);
+emit_32(3261751309);
+emit_32(3272128528);
+emit_32(1101572184);
+emit_32(3261751309);
+emit_32(3271872545);
+emit_32(1101531028);
+emit_32(3261751309);
+emit_32(3271616496);
+emit_32(1101967498);
+emit_32(3261751309);
+emit_32(3271163904);
+emit_32(1101842874);
+emit_32(3261751309);
+emit_32(3270651937);
+emit_32(1101503398);
+emit_32(3261751309);
+emit_32(3270139970);
+emit_32(1101637406);
+emit_32(3261751309);
+emit_32(3269627871);
+emit_32(1100872627);
+emit_32(3261751309);
+emit_32(3269115904);
+emit_32(1100259629);
+emit_32(3261751309);
+emit_32(3268603937);
+emit_32(1101213676);
+emit_32(3261751309);
+emit_32(3268091970);
+emit_32(1102188118);
+emit_32(3261751309);
+emit_32(3267579911);
+emit_32(1102756499);
+emit_32(3261751309);
+emit_32(3267067904);
+emit_32(1103291744);
+emit_32(3261751309);
+emit_32(3266555911);
+emit_32(1104021763);
+emit_32(3261751309);
+emit_32(3266043904);
+emit_32(1105069185);
+emit_32(3261751309);
+emit_32(3265531911);
+emit_32(1105681659);
+emit_32(3261751309);
+emit_32(3265019904);
+emit_32(1106673612);
+emit_32(3261751309);
+emit_32(3264507911);
+emit_32(1107534728);
+emit_32(3261751309);
+emit_32(3263995904);
+emit_32(1108049579);
+emit_32(3261751309);
+emit_32(3263483911);
+emit_32(1108358411);
+emit_32(3261751309);
+emit_32(3262775296);
+emit_32(1109001765);
+emit_32(3261751309);
+emit_32(3261751309);
+emit_32(1109732911);
+emit_32(3261751309);
+emit_32(3260727296);
+emit_32(1110268628);
+emit_32(3261751309);
+emit_32(3259703309);
+emit_32(1111109324);
+emit_32(3261751309);
+emit_32(3258679296);
+emit_32(1111815854);
+emit_32(3261751309);
+emit_32(3257655309);
+emit_32(1112380434);
+emit_32(3261751309);
+emit_32(3256631296);
+emit_32(1113088511);
+emit_32(3261751309);
+emit_32(3255607309);
+emit_32(1113540657);
+emit_32(3261751309);
+emit_32(3254386688);
+emit_32(1113874498);
+emit_32(3261751309);
+emit_32(3252338714);
+emit_32(1114128672);
+emit_32(3261751309);
+emit_32(3250290688);
+emit_32(1114325883);
+emit_32(3261751309);
+emit_32(3248242714);
+emit_32(1114630023);
+emit_32(3261751309);
+emit_32(3245998080);
+emit_32(1114691181);
+emit_32(3261751309);
+emit_32(3241902132);
+emit_32(1114643497);
+emit_32(3261751309);
+emit_32(3237609472);
+emit_32(1114924410);
+emit_32(3261751309);
+emit_32(3229220864);
+emit_32(1115023894);
+emit_32(3261751309);
+emit_32(0);
+emit_32(1115026751);
+emit_32(3261751309);
+emit_32(1081737216);
+emit_32(1115049086);
+emit_32(3261751309);
+emit_32(3279552512);
+emit_32(1085379717);
+emit_32(3262775296);
+emit_32(3279296528);
+emit_32(1082515763);
+emit_32(3262775296);
+emit_32(3279040545);
+emit_32(1081713392);
+emit_32(3262775296);
+emit_32(3278784496);
+emit_32(1082674664);
+emit_32(3262775296);
+emit_32(3278528512);
+emit_32(1083857751);
+emit_32(3262775296);
+emit_32(3278272528);
+emit_32(1086391782);
+emit_32(3262775296);
+emit_32(3278016545);
+emit_32(1089887986);
+emit_32(3262775296);
+emit_32(3277760496);
+emit_32(1091366562);
+emit_32(3262775296);
+emit_32(3277504512);
+emit_32(1093480323);
+emit_32(3262775296);
+emit_32(3277248528);
+emit_32(1096367053);
+emit_32(3262775296);
+emit_32(3276992545);
+emit_32(1097288647);
+emit_32(3262775296);
+emit_32(3276736496);
+emit_32(1097900491);
+emit_32(3262775296);
+emit_32(3276480512);
+emit_32(1097387737);
+emit_32(3262775296);
+emit_32(3276224528);
+emit_32(1098997092);
+emit_32(3262775296);
+emit_32(3275968545);
+emit_32(1099406141);
+emit_32(3262775296);
+emit_32(3275712496);
+emit_32(1100061920);
+emit_32(3262775296);
+emit_32(3275456512);
+emit_32(1100936328);
+emit_32(3262775296);
+emit_32(3275200528);
+emit_32(1102376704);
+emit_32(3262775296);
+emit_32(3274944545);
+emit_32(1103402212);
+emit_32(3262775296);
+emit_32(3274688496);
+emit_32(1104153831);
+emit_32(3262775296);
+emit_32(3274432512);
+emit_32(1104171447);
+emit_32(3262775296);
+emit_32(3274176528);
+emit_32(1104486911);
+emit_32(3262775296);
+emit_32(3273920545);
+emit_32(1103965769);
+emit_32(3262775296);
+emit_32(3273664496);
+emit_32(1103343911);
+emit_32(3262775296);
+emit_32(3273408512);
+emit_32(1102855274);
+emit_32(3262775296);
+emit_32(3273152528);
+emit_32(1102990751);
+emit_32(3262775296);
+emit_32(3272896545);
+emit_32(1102516113);
+emit_32(3262775296);
+emit_32(3272640496);
+emit_32(1101872916);
+emit_32(3262775296);
+emit_32(3272384512);
+emit_32(1101340606);
+emit_32(3262775296);
+emit_32(3272128528);
+emit_32(1101093667);
+emit_32(3262775296);
+emit_32(3271872545);
+emit_32(1101409288);
+emit_32(3262775296);
+emit_32(3271616496);
+emit_32(1101315074);
+emit_32(3262775296);
+emit_32(3271163904);
+emit_32(1101239471);
+emit_32(3262775296);
+emit_32(3270651937);
+emit_32(1100955936);
+emit_32(3262775296);
+emit_32(3270139970);
+emit_32(1100734163);
+emit_32(3262775296);
+emit_32(3269627871);
+emit_32(1099873911);
+emit_32(3262775296);
+emit_32(3269115904);
+emit_32(1100253023);
+emit_32(3262775296);
+emit_32(3268603937);
+emit_32(1101062786);
+emit_32(3262775296);
+emit_32(3268091970);
+emit_32(1101695916);
+emit_32(3262775296);
+emit_32(3267579911);
+emit_32(1102727139);
+emit_32(3262775296);
+emit_32(3267067904);
+emit_32(1103290748);
+emit_32(3262775296);
+emit_32(3266555911);
+emit_32(1104346717);
+emit_32(3262775296);
+emit_32(3266043904);
+emit_32(1105063261);
+emit_32(3262775296);
+emit_32(3265531911);
+emit_32(1106002838);
+emit_32(3262775296);
+emit_32(3265019904);
+emit_32(1107066723);
+emit_32(3262775296);
+emit_32(3264507911);
+emit_32(1107631093);
+emit_32(3262775296);
+emit_32(3263995904);
+emit_32(1108240630);
+emit_32(3262775296);
+emit_32(3263483911);
+emit_32(1108980662);
+emit_32(3262775296);
+emit_32(3262775296);
+emit_32(1109633532);
+emit_32(3262775296);
+emit_32(3261751309);
+emit_32(1110425679);
+emit_32(3262775296);
+emit_32(3260727296);
+emit_32(1110943098);
+emit_32(3262775296);
+emit_32(3259703309);
+emit_32(1111573843);
+emit_32(3262775296);
+emit_32(3258679296);
+emit_32(1112066674);
+emit_32(3262775296);
+emit_32(3257655309);
+emit_32(1112658464);
+emit_32(3262775296);
+emit_32(3256631296);
+emit_32(1113241131);
+emit_32(3262775296);
+emit_32(3255607309);
+emit_32(1113628711);
+emit_32(3262775296);
+emit_32(3254386688);
+emit_32(1113998361);
+emit_32(3262775296);
+emit_32(3252338714);
+emit_32(1114315476);
+emit_32(3262775296);
+emit_32(3250290688);
+emit_32(1114404291);
+emit_32(3262775296);
+emit_32(3248242714);
+emit_32(1114257097);
+emit_32(3262775296);
+emit_32(3245998080);
+emit_32(1114167496);
+emit_32(3262775296);
+emit_32(3241902132);
+emit_32(1114396767);
+emit_32(3262775296);
+emit_32(3237609472);
+emit_32(1114735247);
+emit_32(3262775296);
+emit_32(3229220864);
+emit_32(1114903465);
+emit_32(3262775296);
+emit_32(0);
+emit_32(1115124924);
+emit_32(3262775296);
+emit_32(1081737216);
+emit_32(1115189700);
+emit_32(3262775296);
+emit_32(3279552512);
+emit_32(1086492571);
+emit_32(3263483911);
+emit_32(3279296528);
+emit_32(1084509819);
+emit_32(3263483911);
+emit_32(3279040545);
+emit_32(1084430379);
+emit_32(3263483911);
+emit_32(3278784496);
+emit_32(1085001978);
+emit_32(3263483911);
+emit_32(3278528512);
+emit_32(1084687406);
+emit_32(3263483911);
+emit_32(3278272528);
+emit_32(1087121591);
+emit_32(3263483911);
+emit_32(3278016545);
+emit_32(1090205138);
+emit_32(3263483911);
+emit_32(3277760496);
+emit_32(1091946330);
+emit_32(3263483911);
+emit_32(3277504512);
+emit_32(1094604292);
+emit_32(3263483911);
+emit_32(3277248528);
+emit_32(1096763205);
+emit_32(3263483911);
+emit_32(3276992545);
+emit_32(1098349072);
+emit_32(3263483911);
+emit_32(3276736496);
+emit_32(1098895589);
+emit_32(3263483911);
+emit_32(3276480512);
+emit_32(1099139645);
+emit_32(3263483911);
+emit_32(3276224528);
+emit_32(1099654916);
+emit_32(3263483911);
+emit_32(3275968545);
+emit_32(1100028838);
+emit_32(3263483911);
+emit_32(3275712496);
+emit_32(1100411096);
+emit_32(3263483911);
+emit_32(3275456512);
+emit_32(1101073796);
+emit_32(3263483911);
+emit_32(3275200528);
+emit_32(1102500803);
+emit_32(3263483911);
+emit_32(3274944545);
+emit_32(1103383180);
+emit_32(3263483911);
+emit_32(3274688496);
+emit_32(1103953081);
+emit_32(3263483911);
+emit_32(3274432512);
+emit_32(1104117078);
+emit_32(3263483911);
+emit_32(3274176528);
+emit_32(1104031777);
+emit_32(3263483911);
+emit_32(3273920545);
+emit_32(1103706141);
+emit_32(3263483911);
+emit_32(3273664496);
+emit_32(1103324512);
+emit_32(3263483911);
+emit_32(3273408512);
+emit_32(1102513124);
+emit_32(3263483911);
+emit_32(3273152528);
+emit_32(1102512757);
+emit_32(3263483911);
+emit_32(3272896545);
+emit_32(1102001367);
+emit_32(3263483911);
+emit_32(3272640496);
+emit_32(1101489347);
+emit_32(3263483911);
+emit_32(3272384512);
+emit_32(1101058382);
+emit_32(3263483911);
+emit_32(3272128528);
+emit_32(1100785805);
+emit_32(3263483911);
+emit_32(3271872545);
+emit_32(1100711985);
+emit_32(3263483911);
+emit_32(3271616496);
+emit_32(1100454979);
+emit_32(3263483911);
+emit_32(3271163904);
+emit_32(1100441924);
+emit_32(3263483911);
+emit_32(3270651937);
+emit_32(1100316829);
+emit_32(3263483911);
+emit_32(3270139970);
+emit_32(1099903690);
+emit_32(3263483911);
+emit_32(3269627871);
+emit_32(1099946525);
+emit_32(3263483911);
+emit_32(3269115904);
+emit_32(1100095265);
+emit_32(3263483911);
+emit_32(3268603937);
+emit_32(1100759958);
+emit_32(3263483911);
+emit_32(3268091970);
+emit_32(1101531447);
+emit_32(3263483911);
+emit_32(3267579911);
+emit_32(1102182403);
+emit_32(3263483911);
+emit_32(3267067904);
+emit_32(1102954575);
+emit_32(3263483911);
+emit_32(3266555911);
+emit_32(1103927181);
+emit_32(3263483911);
+emit_32(3266043904);
+emit_32(1104963174);
+emit_32(3263483911);
+emit_32(3265531911);
+emit_32(1106107695);
+emit_32(3263483911);
+emit_32(3265019904);
+emit_32(1106811971);
+emit_32(3263483911);
+emit_32(3264507911);
+emit_32(1107810242);
+emit_32(3263483911);
+emit_32(3263995904);
+emit_32(1108701217);
+emit_32(3263483911);
+emit_32(3263483911);
+emit_32(1109660533);
+emit_32(3263483911);
+emit_32(3262775296);
+emit_32(1110370838);
+emit_32(3263483911);
+emit_32(3261751309);
+emit_32(1111099363);
+emit_32(3263483911);
+emit_32(3260727296);
+emit_32(1111486628);
+emit_32(3263483911);
+emit_32(3259703309);
+emit_32(1111821464);
+emit_32(3263483911);
+emit_32(3258679296);
+emit_32(1112262967);
+emit_32(3263483911);
+emit_32(3257655309);
+emit_32(1112778211);
+emit_32(3263483911);
+emit_32(3256631296);
+emit_32(1113334717);
+emit_32(3263483911);
+emit_32(3255607309);
+emit_32(1113699910);
+emit_32(3263483911);
+emit_32(3254386688);
+emit_32(1113953429);
+emit_32(3263483911);
+emit_32(3252338714);
+emit_32(1114251775);
+emit_32(3263483911);
+emit_32(3250290688);
+emit_32(1114199242);
+emit_32(3263483911);
+emit_32(3248242714);
+emit_32(1113838033);
+emit_32(3263483911);
+emit_32(3245998080);
+emit_32(1113833787);
+emit_32(3263483911);
+emit_32(3241902132);
+emit_32(1114207840);
+emit_32(3263483911);
+emit_32(3237609472);
+emit_32(1114546556);
+emit_32(3263483911);
+emit_32(3229220864);
+emit_32(1114598697);
+emit_32(3263483911);
+emit_32(0);
+emit_32(1114817954);
+emit_32(3263483911);
+emit_32(1081737216);
+emit_32(1114860919);
+emit_32(3263483911);
+emit_32(3279552512);
+emit_32(1087139710);
+emit_32(3263995904);
+emit_32(3279296528);
+emit_32(1087121150);
+emit_32(3263995904);
+emit_32(3279040545);
+emit_32(1087424797);
+emit_32(3263995904);
+emit_32(3278784496);
+emit_32(1088288866);
+emit_32(3263995904);
+emit_32(3278528512);
+emit_32(1087946275);
+emit_32(3263995904);
+emit_32(3278272528);
+emit_32(1088967861);
+emit_32(3263995904);
+emit_32(3278016545);
+emit_32(1091560444);
+emit_32(3263995904);
+emit_32(3277760496);
+emit_32(1093142053);
+emit_32(3263995904);
+emit_32(3277504512);
+emit_32(1094326419);
+emit_32(3263995904);
+emit_32(3277248528);
+emit_32(1096867958);
+emit_32(3263995904);
+emit_32(3276992545);
+emit_32(1098819882);
+emit_32(3263995904);
+emit_32(3276736496);
+emit_32(1099265422);
+emit_32(3263995904);
+emit_32(3276480512);
+emit_32(1099487668);
+emit_32(3263995904);
+emit_32(3276224528);
+emit_32(1099990827);
+emit_32(3263995904);
+emit_32(3275968545);
+emit_32(1100246627);
+emit_32(3263995904);
+emit_32(3275712496);
+emit_32(1100397937);
+emit_32(3263995904);
+emit_32(3275456512);
+emit_32(1101410127);
+emit_32(3263995904);
+emit_32(3275200528);
+emit_32(1102521513);
+emit_32(3263995904);
+emit_32(3274944545);
+emit_32(1103207386);
+emit_32(3263995904);
+emit_32(3274688496);
+emit_32(1103390940);
+emit_32(3263995904);
+emit_32(3274432512);
+emit_32(1103443263);
+emit_32(3263995904);
+emit_32(3274176528);
+emit_32(1103097024);
+emit_32(3263995904);
+emit_32(3273920545);
+emit_32(1102906864);
+emit_32(3263995904);
+emit_32(3273664496);
+emit_32(1102900730);
+emit_32(3263995904);
+emit_32(3273408512);
+emit_32(1102220938);
+emit_32(3263995904);
+emit_32(3273152528);
+emit_32(1102144078);
+emit_32(3263995904);
+emit_32(3272896545);
+emit_32(1101363046);
+emit_32(3263995904);
+emit_32(3272640496);
+emit_32(1100839544);
+emit_32(3263995904);
+emit_32(3272384512);
+emit_32(1100199127);
+emit_32(3263995904);
+emit_32(3272128528);
+emit_32(1100097362);
+emit_32(3263995904);
+emit_32(3271872545);
+emit_32(1099987419);
+emit_32(3263995904);
+emit_32(3271616496);
+emit_32(1099540044);
+emit_32(3263995904);
+emit_32(3271163904);
+emit_32(1099437336);
+emit_32(3263995904);
+emit_32(3270651937);
+emit_32(1099514983);
+emit_32(3263995904);
+emit_32(3270139970);
+emit_32(1099717201);
+emit_32(3263995904);
+emit_32(3269627871);
+emit_32(1099729155);
+emit_32(3263995904);
+emit_32(3269115904);
+emit_32(1099827039);
+emit_32(3263995904);
+emit_32(3268603937);
+emit_32(1100161378);
+emit_32(3263995904);
+emit_32(3268091970);
+emit_32(1100861355);
+emit_32(3263995904);
+emit_32(3267579911);
+emit_32(1101473671);
+emit_32(3263995904);
+emit_32(3267067904);
+emit_32(1102447483);
+emit_32(3263995904);
+emit_32(3266555911);
+emit_32(1103703782);
+emit_32(3263995904);
+emit_32(3266043904);
+emit_32(1104882067);
+emit_32(3263995904);
+emit_32(3265531911);
+emit_32(1105992194);
+emit_32(3263995904);
+emit_32(3265019904);
+emit_32(1106919608);
+emit_32(3263995904);
+emit_32(3264507911);
+emit_32(1107993271);
+emit_32(3263995904);
+emit_32(3263995904);
+emit_32(1108925769);
+emit_32(3263995904);
+emit_32(3263483911);
+emit_32(1110019198);
+emit_32(3263995904);
+emit_32(3262775296);
+emit_32(1110818501);
+emit_32(3263995904);
+emit_32(3261751309);
+emit_32(1111233161);
+emit_32(3263995904);
+emit_32(3260727296);
+emit_32(1111683183);
+emit_32(3263995904);
+emit_32(3259703309);
+emit_32(1111981792);
+emit_32(3263995904);
+emit_32(3258679296);
+emit_32(1112340798);
+emit_32(3263995904);
+emit_32(3257655309);
+emit_32(1112786705);
+emit_32(3263995904);
+emit_32(3256631296);
+emit_32(1113283966);
+emit_32(3263995904);
+emit_32(3255607309);
+emit_32(1113555626);
+emit_32(3263995904);
+emit_32(3254386688);
+emit_32(1113825948);
+emit_32(3263995904);
+emit_32(3252338714);
+emit_32(1113819107);
+emit_32(3263995904);
+emit_32(3250290688);
+emit_32(1113630940);
+emit_32(3263995904);
+emit_32(3248242714);
+emit_32(1113321059);
+emit_32(3263995904);
+emit_32(3245998080);
+emit_32(1113733018);
+emit_32(3263995904);
+emit_32(3241902132);
+emit_32(1114113861);
+emit_32(3263995904);
+emit_32(3237609472);
+emit_32(1114143562);
+emit_32(3263995904);
+emit_32(3229220864);
+emit_32(1114322213);
+emit_32(3263995904);
+emit_32(0);
+emit_32(1114472841);
+emit_32(3263995904);
+emit_32(1081737216);
+emit_32(1114412994);
+emit_32(3263995904);
+emit_32(3279552512);
+emit_32(1089045854);
+emit_32(3264507911);
+emit_32(3279296528);
+emit_32(1088278862);
+emit_32(3264507911);
+emit_32(3279040545);
+emit_32(1090412714);
+emit_32(3264507911);
+emit_32(3278784496);
+emit_32(1089711259);
+emit_32(3264507911);
+emit_32(3278528512);
+emit_32(1090927439);
+emit_32(3264507911);
+emit_32(3278272528);
+emit_32(1091410686);
+emit_32(3264507911);
+emit_32(3278016545);
+emit_32(1093437227);
+emit_32(3264507911);
+emit_32(3277760496);
+emit_32(1094926205);
+emit_32(3264507911);
+emit_32(3277504512);
+emit_32(1095460140);
+emit_32(3264507911);
+emit_32(3277248528);
+emit_32(1097105460);
+emit_32(3264507911);
+emit_32(3276992545);
+emit_32(1098968413);
+emit_32(3264507911);
+emit_32(3276736496);
+emit_32(1099353345);
+emit_32(3264507911);
+emit_32(3276480512);
+emit_32(1099813618);
+emit_32(3264507911);
+emit_32(3276224528);
+emit_32(1100320499);
+emit_32(3264507911);
+emit_32(3275968545);
+emit_32(1100493829);
+emit_32(3264507911);
+emit_32(3275712496);
+emit_32(1100473906);
+emit_32(3264507911);
+emit_32(3275456512);
+emit_32(1101401948);
+emit_32(3264507911);
+emit_32(3275200528);
+emit_32(1102298848);
+emit_32(3264507911);
+emit_32(3274944545);
+emit_32(1102989230);
+emit_32(3264507911);
+emit_32(3274688496);
+emit_32(1102648967);
+emit_32(3264507911);
+emit_32(3274432512);
+emit_32(1102203952);
+emit_32(3264507911);
+emit_32(3274176528);
+emit_32(1102020923);
+emit_32(3264507911);
+emit_32(3273920545);
+emit_32(1102482244);
+emit_32(3264507911);
+emit_32(3273664496);
+emit_32(1101949515);
+emit_32(3264507911);
+emit_32(3273408512);
+emit_32(1101712379);
+emit_32(3264507911);
+emit_32(3273152528);
+emit_32(1100957195);
+emit_32(3264507911);
+emit_32(3272896545);
+emit_32(1100760377);
+emit_32(3264507911);
+emit_32(3272640496);
+emit_32(1100597271);
+emit_32(3264507911);
+emit_32(3272384512);
+emit_32(1099567360);
+emit_32(3264507911);
+emit_32(3272128528);
+emit_32(1098669307);
+emit_32(3264507911);
+emit_32(3271872545);
+emit_32(1098076022);
+emit_32(3264507911);
+emit_32(3271616496);
+emit_32(1097956485);
+emit_32(3264507911);
+emit_32(3271163904);
+emit_32(1098180565);
+emit_32(3264507911);
+emit_32(3270651937);
+emit_32(1097980812);
+emit_32(3264507911);
+emit_32(3270139970);
+emit_32(1098969042);
+emit_32(3264507911);
+emit_32(3269627871);
+emit_32(1099581411);
+emit_32(3264507911);
+emit_32(3269115904);
+emit_32(1099345900);
+emit_32(3264507911);
+emit_32(3268603937);
+emit_32(1099778595);
+emit_32(3264507911);
+emit_32(3268091970);
+emit_32(1100042784);
+emit_32(3264507911);
+emit_32(3267579911);
+emit_32(1100446643);
+emit_32(3264507911);
+emit_32(3267067904);
+emit_32(1101589486);
+emit_32(3264507911);
+emit_32(3266555911);
+emit_32(1103063522);
+emit_32(3264507911);
+emit_32(3266043904);
+emit_32(1104431599);
+emit_32(3264507911);
+emit_32(3265531911);
+emit_32(1106038332);
+emit_32(3264507911);
+emit_32(3265019904);
+emit_32(1107210011);
+emit_32(3264507911);
+emit_32(3264507911);
+emit_32(1107970254);
+emit_32(3264507911);
+emit_32(3263995904);
+emit_32(1108769794);
+emit_32(3264507911);
+emit_32(3263483911);
+emit_32(1109911929);
+emit_32(3264507911);
+emit_32(3262775296);
+emit_32(1110640427);
+emit_32(3264507911);
+emit_32(3261751309);
+emit_32(1111295551);
+emit_32(3264507911);
+emit_32(3260727296);
+emit_32(1111699227);
+emit_32(3264507911);
+emit_32(3259703309);
+emit_32(1112037130);
+emit_32(3264507911);
+emit_32(3258679296);
+emit_32(1112388927);
+emit_32(3264507911);
+emit_32(3257655309);
+emit_32(1112777766);
+emit_32(3264507911);
+emit_32(3256631296);
+emit_32(1112967610);
+emit_32(3264507911);
+emit_32(3255607309);
+emit_32(1113472080);
+emit_32(3264507911);
+emit_32(3254386688);
+emit_32(1113707171);
+emit_32(3264507911);
+emit_32(3252338714);
+emit_32(1113542073);
+emit_32(3264507911);
+emit_32(3250290688);
+emit_32(1113390370);
+emit_32(3264507911);
+emit_32(3248242714);
+emit_32(1113303574);
+emit_32(3264507911);
+emit_32(3245998080);
+emit_32(1113650705);
+emit_32(3264507911);
+emit_32(3241902132);
+emit_32(1114040330);
+emit_32(3264507911);
+emit_32(3237609472);
+emit_32(1114029556);
+emit_32(3264507911);
+emit_32(3229220864);
+emit_32(1113975580);
+emit_32(3264507911);
+emit_32(0);
+emit_32(1113691390);
+emit_32(3264507911);
+emit_32(1081737216);
+emit_32(1113723162);
+emit_32(3264507911);
+emit_32(3279552512);
+emit_32(1091448267);
+emit_32(3265019904);
+emit_32(3279296528);
+emit_32(1090852236);
+emit_32(3265019904);
+emit_32(3279040545);
+emit_32(1091224616);
+emit_32(3265019904);
+emit_32(3278784496);
+emit_32(1092115172);
+emit_32(3265019904);
+emit_32(3278528512);
+emit_32(1092387560);
+emit_32(3265019904);
+emit_32(3278272528);
+emit_32(1093982696);
+emit_32(3265019904);
+emit_32(3278016545);
+emit_32(1095925288);
+emit_32(3265019904);
+emit_32(3277760496);
+emit_32(1097267780);
+emit_32(3265019904);
+emit_32(3277504512);
+emit_32(1098458962);
+emit_32(3265019904);
+emit_32(3277248528);
+emit_32(1097176554);
+emit_32(3265019904);
+emit_32(3276992545);
+emit_32(1098529427);
+emit_32(3265019904);
+emit_32(3276736496);
+emit_32(1099386480);
+emit_32(3265019904);
+emit_32(3276480512);
+emit_32(1100029729);
+emit_32(3265019904);
+emit_32(3276224528);
+emit_32(1100574360);
+emit_32(3265019904);
+emit_32(3275968545);
+emit_32(1100451571);
+emit_32(3265019904);
+emit_32(3275712496);
+emit_32(1100757808);
+emit_32(3265019904);
+emit_32(3275456512);
+emit_32(1101452909);
+emit_32(3265019904);
+emit_32(3275200528);
+emit_32(1102452412);
+emit_32(3265019904);
+emit_32(3274944545);
+emit_32(1102489269);
+emit_32(3265019904);
+emit_32(3274688496);
+emit_32(1101956383);
+emit_32(3265019904);
+emit_32(3274432512);
+emit_32(1102164106);
+emit_32(3265019904);
+emit_32(3274176528);
+emit_32(1102017829);
+emit_32(3265019904);
+emit_32(3273920545);
+emit_32(1101687633);
+emit_32(3265019904);
+emit_32(3273664496);
+emit_32(1101190398);
+emit_32(3265019904);
+emit_32(3273408512);
+emit_32(1100930771);
+emit_32(3265019904);
+emit_32(3273152528);
+emit_32(1099875379);
+emit_32(3265019904);
+emit_32(3272896545);
+emit_32(1099988363);
+emit_32(3265019904);
+emit_32(3272640496);
+emit_32(1099466749);
+emit_32(3265019904);
+emit_32(3272384512);
+emit_32(1099025927);
+emit_32(3265019904);
+emit_32(3272128528);
+emit_32(1097133667);
+emit_32(3265019904);
+emit_32(3271872545);
+emit_32(1096125042);
+emit_32(3265019904);
+emit_32(3271616496);
+emit_32(1097217448);
+emit_32(3265019904);
+emit_32(3271163904);
+emit_32(1097530343);
+emit_32(3265019904);
+emit_32(3270651937);
+emit_32(1097021365);
+emit_32(3265019904);
+emit_32(3270139970);
+emit_32(1098337432);
+emit_32(3265019904);
+emit_32(3269627871);
+emit_32(1099231186);
+emit_32(3265019904);
+emit_32(3269115904);
+emit_32(1099058066);
+emit_32(3265019904);
+emit_32(3268603937);
+emit_32(1098845363);
+emit_32(3265019904);
+emit_32(3268091970);
+emit_32(1099724436);
+emit_32(3265019904);
+emit_32(3267579911);
+emit_32(1100562825);
+emit_32(3265019904);
+emit_32(3267067904);
+emit_32(1101564635);
+emit_32(3265019904);
+emit_32(3266555911);
+emit_32(1102663280);
+emit_32(3265019904);
+emit_32(3266043904);
+emit_32(1103783055);
+emit_32(3265019904);
+emit_32(3265531911);
+emit_32(1105695185);
+emit_32(3265019904);
+emit_32(3265019904);
+emit_32(1107222541);
+emit_32(3265019904);
+emit_32(3264507911);
+emit_32(1108142824);
+emit_32(3265019904);
+emit_32(3263995904);
+emit_32(1108595363);
+emit_32(3265019904);
+emit_32(3263483911);
+emit_32(1109574812);
+emit_32(3265019904);
+emit_32(3262775296);
+emit_32(1110596754);
+emit_32(3265019904);
+emit_32(3261751309);
+emit_32(1111223304);
+emit_32(3265019904);
+emit_32(3260727296);
+emit_32(1111571117);
+emit_32(3265019904);
+emit_32(3259703309);
+emit_32(1111962445);
+emit_32(3265019904);
+emit_32(3258679296);
+emit_32(1112404944);
+emit_32(3265019904);
+emit_32(3257655309);
+emit_32(1112735429);
+emit_32(3265019904);
+emit_32(3256631296);
+emit_32(1112827337);
+emit_32(3265019904);
+emit_32(3255607309);
+emit_32(1113233949);
+emit_32(3265019904);
+emit_32(3254386688);
+emit_32(1113414513);
+emit_32(3265019904);
+emit_32(3252338714);
+emit_32(1113420150);
+emit_32(3265019904);
+emit_32(3250290688);
+emit_32(1113163904);
+emit_32(3265019904);
+emit_32(3248242714);
+emit_32(1113052807);
+emit_32(3265019904);
+emit_32(3245998080);
+emit_32(1113343787);
+emit_32(3265019904);
+emit_32(3241902132);
+emit_32(1113698599);
+emit_32(3265019904);
+emit_32(3237609472);
+emit_32(1113628816);
+emit_32(3265019904);
+emit_32(3229220864);
+emit_32(1113662187);
+emit_32(3265019904);
+emit_32(0);
+emit_32(1113260242);
+emit_32(3265019904);
+emit_32(1081737216);
+emit_32(1113178820);
+emit_32(3265019904);
+emit_32(3279552512);
+emit_32(1093438171);
+emit_32(3265531911);
+emit_32(3279296528);
+emit_32(1092747788);
+emit_32(3265531911);
+emit_32(3279040545);
+emit_32(1093310454);
+emit_32(3265531911);
+emit_32(3278784496);
+emit_32(1094102234);
+emit_32(3265531911);
+emit_32(3278528512);
+emit_32(1095034523);
+emit_32(3265531911);
+emit_32(3278272528);
+emit_32(1096277295);
+emit_32(3265531911);
+emit_32(3278016545);
+emit_32(1097766063);
+emit_32(3265531911);
+emit_32(3277760496);
+emit_32(1099194067);
+emit_32(3265531911);
+emit_32(3277504512);
+emit_32(1099628649);
+emit_32(3265531911);
+emit_32(3277248528);
+emit_32(1099258973);
+emit_32(3265531911);
+emit_32(3276992545);
+emit_32(1098472174);
+emit_32(3265531911);
+emit_32(3276736496);
+emit_32(1099274020);
+emit_32(3265531911);
+emit_32(3276480512);
+emit_32(1099770049);
+emit_32(3265531911);
+emit_32(3276224528);
+emit_32(1100217110);
+emit_32(3265531911);
+emit_32(3275968545);
+emit_32(1099973526);
+emit_32(3265531911);
+emit_32(3275712496);
+emit_32(1100572682);
+emit_32(3265531911);
+emit_32(3275456512);
+emit_32(1101377883);
+emit_32(3265531911);
+emit_32(3275200528);
+emit_32(1101817027);
+emit_32(3265531911);
+emit_32(3274944545);
+emit_32(1101419407);
+emit_32(3265531911);
+emit_32(3274688496);
+emit_32(1101366087);
+emit_32(3265531911);
+emit_32(3274432512);
+emit_32(1101862955);
+emit_32(3265531911);
+emit_32(3274176528);
+emit_32(1101888854);
+emit_32(3265531911);
+emit_32(3273920545);
+emit_32(1101226888);
+emit_32(3265531911);
+emit_32(3273664496);
+emit_32(1100713768);
+emit_32(3265531911);
+emit_32(3273408512);
+emit_32(1099889010);
+emit_32(3265531911);
+emit_32(3273152528);
+emit_32(1098959238);
+emit_32(3265531911);
+emit_32(3272896545);
+emit_32(1098971873);
+emit_32(3265531911);
+emit_32(3272640496);
+emit_32(1098173750);
+emit_32(3265531911);
+emit_32(3272384512);
+emit_32(1096822345);
+emit_32(3265531911);
+emit_32(3272128528);
+emit_32(1095460769);
+emit_32(3265531911);
+emit_32(3271872545);
+emit_32(1095939654);
+emit_32(3265531911);
+emit_32(3271616496);
+emit_32(1096979107);
+emit_32(3265531911);
+emit_32(3271163904);
+emit_32(1096816787);
+emit_32(3265531911);
+emit_32(3270651937);
+emit_32(1096356567);
+emit_32(3265531911);
+emit_32(3270139970);
+emit_32(1097648308);
+emit_32(3265531911);
+emit_32(3269627871);
+emit_32(1098574096);
+emit_32(3265531911);
+emit_32(3269115904);
+emit_32(1097968858);
+emit_32(3265531911);
+emit_32(3268603937);
+emit_32(1098365115);
+emit_32(3265531911);
+emit_32(3268091970);
+emit_32(1099546126);
+emit_32(3265531911);
+emit_32(3267579911);
+emit_32(1100574569);
+emit_32(3265531911);
+emit_32(3267067904);
+emit_32(1101687475);
+emit_32(3265531911);
+emit_32(3266555911);
+emit_32(1102052380);
+emit_32(3265531911);
+emit_32(3266043904);
+emit_32(1103313292);
+emit_32(3265531911);
+emit_32(3265531911);
+emit_32(1105621785);
+emit_32(3265531911);
+emit_32(3265019904);
+emit_32(1107169169);
+emit_32(3265531911);
+emit_32(3264507911);
+emit_32(1107983021);
+emit_32(3265531911);
+emit_32(3263995904);
+emit_32(1108610777);
+emit_32(3265531911);
+emit_32(3263483911);
+emit_32(1109287292);
+emit_32(3265531911);
+emit_32(3262775296);
+emit_32(1110292405);
+emit_32(3265531911);
+emit_32(3261751309);
+emit_32(1110956075);
+emit_32(3265531911);
+emit_32(3260727296);
+emit_32(1111332749);
+emit_32(3265531911);
+emit_32(3259703309);
+emit_32(1111901392);
+emit_32(3265531911);
+emit_32(3258679296);
+emit_32(1112404473);
+emit_32(3265531911);
+emit_32(3257655309);
+emit_32(1112625041);
+emit_32(3265531911);
+emit_32(3256631296);
+emit_32(1112715716);
+emit_32(3265531911);
+emit_32(3255607309);
+emit_32(1112946875);
+emit_32(3265531911);
+emit_32(3254386688);
+emit_32(1113184299);
+emit_32(3265531911);
+emit_32(3252338714);
+emit_32(1112883882);
+emit_32(3265531911);
+emit_32(3250290688);
+emit_32(1112791607);
+emit_32(3265531911);
+emit_32(3248242714);
+emit_32(1112621633);
+emit_32(3265531911);
+emit_32(3245998080);
+emit_32(1113008138);
+emit_32(3265531911);
+emit_32(3241902132);
+emit_32(1113167285);
+emit_32(3265531911);
+emit_32(3237609472);
+emit_32(1113124399);
+emit_32(3265531911);
+emit_32(3229220864);
+emit_32(1112977362);
+emit_32(3265531911);
+emit_32(0);
+emit_32(1112766703);
+emit_32(3265531911);
+emit_32(1081737216);
+emit_32(1112525767);
+emit_32(3265531911);
+emit_32(3279552512);
+emit_32(1095002332);
+emit_32(3266043904);
+emit_32(3279296528);
+emit_32(1094609640);
+emit_32(3266043904);
+emit_32(3279040545);
+emit_32(1096233255);
+emit_32(3266043904);
+emit_32(3278784496);
+emit_32(1097215037);
+emit_32(3266043904);
+emit_32(3278528512);
+emit_32(1097707028);
+emit_32(3266043904);
+emit_32(3278272528);
+emit_32(1098213910);
+emit_32(3266043904);
+emit_32(3278016545);
+emit_32(1099607939);
+emit_32(3266043904);
+emit_32(3277760496);
+emit_32(1100328888);
+emit_32(3266043904);
+emit_32(3277504512);
+emit_32(1099961205);
+emit_32(3266043904);
+emit_32(3277248528);
+emit_32(1099657799);
+emit_32(3266043904);
+emit_32(3276992545);
+emit_32(1099461558);
+emit_32(3266043904);
+emit_32(3276736496);
+emit_32(1099119408);
+emit_32(3266043904);
+emit_32(3276480512);
+emit_32(1099612763);
+emit_32(3266043904);
+emit_32(3276224528);
+emit_32(1099736862);
+emit_32(3266043904);
+emit_32(3275968545);
+emit_32(1099825729);
+emit_32(3266043904);
+emit_32(3275712496);
+emit_32(1100371460);
+emit_32(3266043904);
+emit_32(3275456512);
+emit_32(1100899051);
+emit_32(3266043904);
+emit_32(3275200528);
+emit_32(1100798702);
+emit_32(3266043904);
+emit_32(3274944545);
+emit_32(1100553703);
+emit_32(3266043904);
+emit_32(3274688496);
+emit_32(1100490159);
+emit_32(3266043904);
+emit_32(3274432512);
+emit_32(1100873309);
+emit_32(3266043904);
+emit_32(3274176528);
+emit_32(1100817524);
+emit_32(3266043904);
+emit_32(3273920545);
+emit_32(1100275568);
+emit_32(3266043904);
+emit_32(3273664496);
+emit_32(1100060977);
+emit_32(3266043904);
+emit_32(3273408512);
+emit_32(1099264636);
+emit_32(3266043904);
+emit_32(3273152528);
+emit_32(1097887279);
+emit_32(3266043904);
+emit_32(3272896545);
+emit_32(1096157548);
+emit_32(3266043904);
+emit_32(3272640496);
+emit_32(1095486249);
+emit_32(3266043904);
+emit_32(3272384512);
+emit_32(1094979368);
+emit_32(3266043904);
+emit_32(3272128528);
+emit_32(1095398693);
+emit_32(3266043904);
+emit_32(3271872545);
+emit_32(1095531024);
+emit_32(3266043904);
+emit_32(3271616496);
+emit_32(1095980968);
+emit_32(3266043904);
+emit_32(3271163904);
+emit_32(1095589534);
+emit_32(3266043904);
+emit_32(3270651937);
+emit_32(1095288383);
+emit_32(3266043904);
+emit_32(3270139970);
+emit_32(1096315044);
+emit_32(3266043904);
+emit_32(3269627871);
+emit_32(1096326788);
+emit_32(3266043904);
+emit_32(3269115904);
+emit_32(1096402705);
+emit_32(3266043904);
+emit_32(3268603937);
+emit_32(1097546911);
+emit_32(3266043904);
+emit_32(3268091970);
+emit_32(1099249798);
+emit_32(3266043904);
+emit_32(3267579911);
+emit_32(1099942016);
+emit_32(3266043904);
+emit_32(3267067904);
+emit_32(1100913469);
+emit_32(3266043904);
+emit_32(3266555911);
+emit_32(1101943433);
+emit_32(3266043904);
+emit_32(3266043904);
+emit_32(1102787536);
+emit_32(3266043904);
+emit_32(3265531911);
+emit_32(1104904507);
+emit_32(3266043904);
+emit_32(3265019904);
+emit_32(1106333873);
+emit_32(3266043904);
+emit_32(3264507911);
+emit_32(1107759779);
+emit_32(3266043904);
+emit_32(3263995904);
+emit_32(1108391467);
+emit_32(3266043904);
+emit_32(3263483911);
+emit_32(1108904981);
+emit_32(3266043904);
+emit_32(3262775296);
+emit_32(1109806757);
+emit_32(3266043904);
+emit_32(3261751309);
+emit_32(1110385151);
+emit_32(3266043904);
+emit_32(3260727296);
+emit_32(1110931145);
+emit_32(3266043904);
+emit_32(3259703309);
+emit_32(1111641319);
+emit_32(3266043904);
+emit_32(3258679296);
+emit_32(1112124634);
+emit_32(3266043904);
+emit_32(3257655309);
+emit_32(1112283257);
+emit_32(3266043904);
+emit_32(3256631296);
+emit_32(1112339618);
+emit_32(3266043904);
+emit_32(3255607309);
+emit_32(1112509383);
+emit_32(3266043904);
+emit_32(3254386688);
+emit_32(1112776009);
+emit_32(3266043904);
+emit_32(3252338714);
+emit_32(1112680825);
+emit_32(3266043904);
+emit_32(3250290688);
+emit_32(1112625539);
+emit_32(3266043904);
+emit_32(3248242714);
+emit_32(1112693513);
+emit_32(3266043904);
+emit_32(3245998080);
+emit_32(1112618644);
+emit_32(3266043904);
+emit_32(3241902132);
+emit_32(1112571616);
+emit_32(3266043904);
+emit_32(3237609472);
+emit_32(1112555074);
+emit_32(3266043904);
+emit_32(3229220864);
+emit_32(1112282576);
+emit_32(3266043904);
+emit_32(0);
+emit_32(1112161675);
+emit_32(3266043904);
+emit_32(1081737216);
+emit_32(1112016683);
+emit_32(3266043904);
+emit_32(3279552512);
+emit_32(1096435525);
+emit_32(3266555911);
+emit_32(3279296528);
+emit_32(1097116575);
+emit_32(3266555911);
+emit_32(3279040545);
+emit_32(1098870633);
+emit_32(3266555911);
+emit_32(3278784496);
+emit_32(1099498730);
+emit_32(3266555911);
+emit_32(3278528512);
+emit_32(1099914596);
+emit_32(3266555911);
+emit_32(3278272528);
+emit_32(1099951872);
+emit_32(3266555911);
+emit_32(3278016545);
+emit_32(1100659976);
+emit_32(3266555911);
+emit_32(3277760496);
+emit_32(1101078253);
+emit_32(3266555911);
+emit_32(3277504512);
+emit_32(1100635177);
+emit_32(3266555911);
+emit_32(3277248528);
+emit_32(1100013948);
+emit_32(3266555911);
+emit_32(3276992545);
+emit_32(1099614650);
+emit_32(3266555911);
+emit_32(3276736496);
+emit_32(1099488402);
+emit_32(3266555911);
+emit_32(3276480512);
+emit_32(1099820591);
+emit_32(3266555911);
+emit_32(3276224528);
+emit_32(1099553833);
+emit_32(3266555911);
+emit_32(3275968545);
+emit_32(1099782999);
+emit_32(3266555911);
+emit_32(3275712496);
+emit_32(1100398566);
+emit_32(3266555911);
+emit_32(3275456512);
+emit_32(1100575303);
+emit_32(3266555911);
+emit_32(3275200528);
+emit_32(1100289986);
+emit_32(3266555911);
+emit_32(3274944545);
+emit_32(1099602382);
+emit_32(3266555911);
+emit_32(3274688496);
+emit_32(1099733506);
+emit_32(3266555911);
+emit_32(3274432512);
+emit_32(1100008915);
+emit_32(3266555911);
+emit_32(3274176528);
+emit_32(1100003777);
+emit_32(3266555911);
+emit_32(3273920545);
+emit_32(1099179753);
+emit_32(3266555911);
+emit_32(3273664496);
+emit_32(1098406953);
+emit_32(3266555911);
+emit_32(3273408512);
+emit_32(1097223320);
+emit_32(3266555911);
+emit_32(3273152528);
+emit_32(1096202217);
+emit_32(3266555911);
+emit_32(3272896545);
+emit_32(1095613442);
+emit_32(3266555911);
+emit_32(3272640496);
+emit_32(1095615539);
+emit_32(3266555911);
+emit_32(3272384512);
+emit_32(1095008728);
+emit_32(3266555911);
+emit_32(3272128528);
+emit_32(1095144623);
+emit_32(3266555911);
+emit_32(3271872545);
+emit_32(1095756572);
+emit_32(3266555911);
+emit_32(3271616496);
+emit_32(1094683564);
+emit_32(3266555911);
+emit_32(3271163904);
+emit_32(1094540119);
+emit_32(3266555911);
+emit_32(3270651937);
+emit_32(1094978843);
+emit_32(3266555911);
+emit_32(3270139970);
+emit_32(1095340707);
+emit_32(3266555911);
+emit_32(3269627871);
+emit_32(1095981597);
+emit_32(3266555911);
+emit_32(3269115904);
+emit_32(1096517838);
+emit_32(3266555911);
+emit_32(3268603937);
+emit_32(1096669463);
+emit_32(3266555911);
+emit_32(3268091970);
+emit_32(1097720555);
+emit_32(3266555911);
+emit_32(3267579911);
+emit_32(1098962122);
+emit_32(3266555911);
+emit_32(3267067904);
+emit_32(1099956067);
+emit_32(3266555911);
+emit_32(3266555911);
+emit_32(1101017750);
+emit_32(3266555911);
+emit_32(3266043904);
+emit_32(1102473436);
+emit_32(3266555911);
+emit_32(3265531911);
+emit_32(1104059040);
+emit_32(3266555911);
+emit_32(3265019904);
+emit_32(1105738491);
+emit_32(3266555911);
+emit_32(3264507911);
+emit_32(1107208438);
+emit_32(3266555911);
+emit_32(3263995904);
+emit_32(1107891008);
+emit_32(3266555911);
+emit_32(3263483911);
+emit_32(1108674504);
+emit_32(3266555911);
+emit_32(3262775296);
+emit_32(1109604067);
+emit_32(3266555911);
+emit_32(3261751309);
+emit_32(1110189120);
+emit_32(3266555911);
+emit_32(3260727296);
+emit_32(1110577670);
+emit_32(3266555911);
+emit_32(3259703309);
+emit_32(1111354953);
+emit_32(3266555911);
+emit_32(3258679296);
+emit_32(1111734537);
+emit_32(3266555911);
+emit_32(3257655309);
+emit_32(1111705518);
+emit_32(3266555911);
+emit_32(3256631296);
+emit_32(1111723527);
+emit_32(3266555911);
+emit_32(3255607309);
+emit_32(1112027955);
+emit_32(3266555911);
+emit_32(3254386688);
+emit_32(1112257410);
+emit_32(3266555911);
+emit_32(3252338714);
+emit_32(1112640297);
+emit_32(3266555911);
+emit_32(3250290688);
+emit_32(1112609967);
+emit_32(3266555911);
+emit_32(3248242714);
+emit_32(1112557696);
+emit_32(3266555911);
+emit_32(3245998080);
+emit_32(1112351231);
+emit_32(3266555911);
+emit_32(3241902132);
+emit_32(1112040774);
+emit_32(3266555911);
+emit_32(3237609472);
+emit_32(1111912900);
+emit_32(3266555911);
+emit_32(3229220864);
+emit_32(1111694639);
+emit_32(3266555911);
+emit_32(0);
+emit_32(1111678858);
+emit_32(3266555911);
+emit_32(1081737216);
+emit_32(1111401326);
+emit_32(3266555911);
+emit_32(3279552512);
+emit_32(1098118070);
+emit_32(3267067904);
+emit_32(3279296528);
+emit_32(1099747453);
+emit_32(3267067904);
+emit_32(3279040545);
+emit_32(1100611269);
+emit_32(3267067904);
+emit_32(3278784496);
+emit_32(1101443210);
+emit_32(3267067904);
+emit_32(3278528512);
+emit_32(1101232603);
+emit_32(3267067904);
+emit_32(3278272528);
+emit_32(1101611506);
+emit_32(3267067904);
+emit_32(3278016545);
+emit_32(1101693243);
+emit_32(3267067904);
+emit_32(3277760496);
+emit_32(1101466016);
+emit_32(3267067904);
+emit_32(3277504512);
+emit_32(1101285137);
+emit_32(3267067904);
+emit_32(3277248528);
+emit_32(1100667106);
+emit_32(3267067904);
+emit_32(3276992545);
+emit_32(1100084308);
+emit_32(3267067904);
+emit_32(3276736496);
+emit_32(1099746194);
+emit_32(3267067904);
+emit_32(3276480512);
+emit_32(1099973840);
+emit_32(3267067904);
+emit_32(3276224528);
+emit_32(1099985637);
+emit_32(3267067904);
+emit_32(3275968545);
+emit_32(1099784782);
+emit_32(3267067904);
+emit_32(3275712496);
+emit_32(1100330146);
+emit_32(3267067904);
+emit_32(3275456512);
+emit_32(1100180200);
+emit_32(3267067904);
+emit_32(3275200528);
+emit_32(1099997118);
+emit_32(3267067904);
+emit_32(3274944545);
+emit_32(1099326240);
+emit_32(3267067904);
+emit_32(3274688496);
+emit_32(1099003435);
+emit_32(3267067904);
+emit_32(3274432512);
+emit_32(1099218918);
+emit_32(3267067904);
+emit_32(3274176528);
+emit_32(1098944243);
+emit_32(3267067904);
+emit_32(3273920545);
+emit_32(1097839464);
+emit_32(3267067904);
+emit_32(3273664496);
+emit_32(1095942065);
+emit_32(3267067904);
+emit_32(3273408512);
+emit_32(1094895587);
+emit_32(3267067904);
+emit_32(3273152528);
+emit_32(1094953468);
+emit_32(3267067904);
+emit_32(3272896545);
+emit_32(1095007260);
+emit_32(3267067904);
+emit_32(3272640496);
+emit_32(1095264895);
+emit_32(3267067904);
+emit_32(3272384512);
+emit_32(1094611422);
+emit_32(3267067904);
+emit_32(3272128528);
+emit_32(1095079402);
+emit_32(3267067904);
+emit_32(3271872545);
+emit_32(1094441973);
+emit_32(3267067904);
+emit_32(3271616496);
+emit_32(1094236766);
+emit_32(3267067904);
+emit_32(3271163904);
+emit_32(1094323798);
+emit_32(3267067904);
+emit_32(3270651937);
+emit_32(1094165987);
+emit_32(3267067904);
+emit_32(3270139970);
+emit_32(1094226805);
+emit_32(3267067904);
+emit_32(3269627871);
+emit_32(1094579336);
+emit_32(3267067904);
+emit_32(3269115904);
+emit_32(1095352975);
+emit_32(3267067904);
+emit_32(3268603937);
+emit_32(1095436757);
+emit_32(3267067904);
+emit_32(3268091970);
+emit_32(1095935879);
+emit_32(3267067904);
+emit_32(3267579911);
+emit_32(1097439012);
+emit_32(3267067904);
+emit_32(3267067904);
+emit_32(1099223007);
+emit_32(3267067904);
+emit_32(3266555911);
+emit_32(1100974863);
+emit_32(3267067904);
+emit_32(3266043904);
+emit_32(1102518734);
+emit_32(3267067904);
+emit_32(3265531911);
+emit_32(1104318772);
+emit_32(3267067904);
+emit_32(3265019904);
+emit_32(1105646112);
+emit_32(3267067904);
+emit_32(3264507911);
+emit_32(1106403341);
+emit_32(3267067904);
+emit_32(3263995904);
+emit_32(1107600264);
+emit_32(3267067904);
+emit_32(3263483911);
+emit_32(1108414248);
+emit_32(3267067904);
+emit_32(3262775296);
+emit_32(1109181543);
+emit_32(3267067904);
+emit_32(3261751309);
+emit_32(1109764892);
+emit_32(3267067904);
+emit_32(3260727296);
+emit_32(1110292536);
+emit_32(3267067904);
+emit_32(3259703309);
+emit_32(1110846682);
+emit_32(3267067904);
+emit_32(3258679296);
+emit_32(1111130925);
+emit_32(3267067904);
+emit_32(3257655309);
+emit_32(1111171793);
+emit_32(3267067904);
+emit_32(3256631296);
+emit_32(1111317938);
+emit_32(3267067904);
+emit_32(3255607309);
+emit_32(1111635762);
+emit_32(3267067904);
+emit_32(3254386688);
+emit_32(1112164637);
+emit_32(3267067904);
+emit_32(3252338714);
+emit_32(1112290938);
+emit_32(3267067904);
+emit_32(3250290688);
+emit_32(1112478450);
+emit_32(3267067904);
+emit_32(3248242714);
+emit_32(1112372360);
+emit_32(3267067904);
+emit_32(3245998080);
+emit_32(1111917566);
+emit_32(3267067904);
+emit_32(3241902132);
+emit_32(1112023289);
+emit_32(3267067904);
+emit_32(3237609472);
+emit_32(1111655422);
+emit_32(3267067904);
+emit_32(3229220864);
+emit_32(1111168988);
+emit_32(3267067904);
+emit_32(0);
+emit_32(1110861231);
+emit_32(3267067904);
+emit_32(1081737216);
+emit_32(1110813757);
+emit_32(3267067904);
+emit_32(3279552512);
+emit_32(1100220360);
+emit_32(3267579911);
+emit_32(3279296528);
+emit_32(1101067662);
+emit_32(3267579911);
+emit_32(3279040545);
+emit_32(1102439514);
+emit_32(3267579911);
+emit_32(3278784496);
+emit_32(1103265006);
+emit_32(3267579911);
+emit_32(3278528512);
+emit_32(1103236799);
+emit_32(3267579911);
+emit_32(3278272528);
+emit_32(1103276120);
+emit_32(3267579911);
+emit_32(3278016545);
+emit_32(1103285505);
+emit_32(3267579911);
+emit_32(3277760496);
+emit_32(1102760850);
+emit_32(3267579911);
+emit_32(3277504512);
+emit_32(1101931584);
+emit_32(3267579911);
+emit_32(3277248528);
+emit_32(1101349415);
+emit_32(3267579911);
+emit_32(3276992545);
+emit_32(1100402341);
+emit_32(3267579911);
+emit_32(3276736496);
+emit_32(1100027265);
+emit_32(3267579911);
+emit_32(3276480512);
+emit_32(1100259525);
+emit_32(3267579911);
+emit_32(3276224528);
+emit_32(1100063651);
+emit_32(3267579911);
+emit_32(3275968545);
+emit_32(1099648782);
+emit_32(3267579911);
+emit_32(3275712496);
+emit_32(1100276302);
+emit_32(3267579911);
+emit_32(3275456512);
+emit_32(1100001260);
+emit_32(3267579911);
+emit_32(3275200528);
+emit_32(1099604217);
+emit_32(3267579911);
+emit_32(3274944545);
+emit_32(1099253678);
+emit_32(3267579911);
+emit_32(3274688496);
+emit_32(1098028836);
+emit_32(3267579911);
+emit_32(3274432512);
+emit_32(1097094660);
+emit_32(3267579911);
+emit_32(3274176528);
+emit_32(1096265341);
+emit_32(3267579911);
+emit_32(3273920545);
+emit_32(1095381601);
+emit_32(3267579911);
+emit_32(3273664496);
+emit_32(1094132852);
+emit_32(3267579911);
+emit_32(3273408512);
+emit_32(1094233411);
+emit_32(3267579911);
+emit_32(3273152528);
+emit_32(1094498386);
+emit_32(3267579911);
+emit_32(3272896545);
+emit_32(1093571235);
+emit_32(3267579911);
+emit_32(3272640496);
+emit_32(1093897237);
+emit_32(3267579911);
+emit_32(3272384512);
+emit_32(1093720657);
+emit_32(3267579911);
+emit_32(3272128528);
+emit_32(1094242743);
+emit_32(3267579911);
+emit_32(3271872545);
+emit_32(1094359764);
+emit_32(3267579911);
+emit_32(3271616496);
+emit_32(1093621672);
+emit_32(3267579911);
+emit_32(3271163904);
+emit_32(1093012449);
+emit_32(3267579911);
+emit_32(3270651937);
+emit_32(1092577332);
+emit_32(3267579911);
+emit_32(3270139970);
+emit_32(1093321674);
+emit_32(3267579911);
+emit_32(3269627871);
+emit_32(1093936035);
+emit_32(3267579911);
+emit_32(3269115904);
+emit_32(1093928170);
+emit_32(3267579911);
+emit_32(3268603937);
+emit_32(1094840746);
+emit_32(3267579911);
+emit_32(3268091970);
+emit_32(1094808555);
+emit_32(3267579911);
+emit_32(3267579911);
+emit_32(1096373764);
+emit_32(3267579911);
+emit_32(3267067904);
+emit_32(1099250323);
+emit_32(3267579911);
+emit_32(3266555911);
+emit_32(1100852966);
+emit_32(3267579911);
+emit_32(3266043904);
+emit_32(1102489846);
+emit_32(3267579911);
+emit_32(3265531911);
+emit_32(1104539655);
+emit_32(3267579911);
+emit_32(3265019904);
+emit_32(1105973058);
+emit_32(3267579911);
+emit_32(3264507911);
+emit_32(1106325275);
+emit_32(3267579911);
+emit_32(3263995904);
+emit_32(1107714664);
+emit_32(3267579911);
+emit_32(3263483911);
+emit_32(1108389003);
+emit_32(3267579911);
+emit_32(3262775296);
+emit_32(1108702606);
+emit_32(3267579911);
+emit_32(3261751309);
+emit_32(1109247787);
+emit_32(3267579911);
+emit_32(3260727296);
+emit_32(1109490349);
+emit_32(3267579911);
+emit_32(3259703309);
+emit_32(1110247866);
+emit_32(3267579911);
+emit_32(3258679296);
+emit_32(1110389712);
+emit_32(3267579911);
+emit_32(3257655309);
+emit_32(1110661425);
+emit_32(3267579911);
+emit_32(3256631296);
+emit_32(1111202018);
+emit_32(3267579911);
+emit_32(3255607309);
+emit_32(1111704260);
+emit_32(3267579911);
+emit_32(3254386688);
+emit_32(1112088275);
+emit_32(3267579911);
+emit_32(3252338714);
+emit_32(1111942549);
+emit_32(3267579911);
+emit_32(3250290688);
+emit_32(1111975579);
+emit_32(3267579911);
+emit_32(3248242714);
+emit_32(1111977309);
+emit_32(3267579911);
+emit_32(3245998080);
+emit_32(1111576202);
+emit_32(3267579911);
+emit_32(3241902132);
+emit_32(1111451789);
+emit_32(3267579911);
+emit_32(3237609472);
+emit_32(1111316601);
+emit_32(3267579911);
+emit_32(3229220864);
+emit_32(1111007166);
+emit_32(3267579911);
+emit_32(0);
+emit_32(1110677022);
+emit_32(3267579911);
+emit_32(1081737216);
+emit_32(1110694612);
+emit_32(3267579911);
+emit_32(3279552512);
+emit_32(1101546599);
+emit_32(3268091970);
+emit_32(3279296528);
+emit_32(1102626423);
+emit_32(3268091970);
+emit_32(3279040545);
+emit_32(1103845864);
+emit_32(3268091970);
+emit_32(3278784496);
+emit_32(1104837345);
+emit_32(3268091970);
+emit_32(3278528512);
+emit_32(1104581650);
+emit_32(3268091970);
+emit_32(3278272528);
+emit_32(1104347136);
+emit_32(3268091970);
+emit_32(3278016545);
+emit_32(1104555173);
+emit_32(3268091970);
+emit_32(3277760496);
+emit_32(1103817186);
+emit_32(3268091970);
+emit_32(3277504512);
+emit_32(1102977119);
+emit_32(3268091970);
+emit_32(3277248528);
+emit_32(1101762816);
+emit_32(3268091970);
+emit_32(3276992545);
+emit_32(1100889928);
+emit_32(3268091970);
+emit_32(3276736496);
+emit_32(1100508824);
+emit_32(3268091970);
+emit_32(3276480512);
+emit_32(1100799646);
+emit_32(3268091970);
+emit_32(3276224528);
+emit_32(1100611741);
+emit_32(3268091970);
+emit_32(3275968545);
+emit_32(1099998639);
+emit_32(3268091970);
+emit_32(3275712496);
+emit_32(1099825152);
+emit_32(3268091970);
+emit_32(3275456512);
+emit_32(1099499674);
+emit_32(3268091970);
+emit_32(3275200528);
+emit_32(1099020422);
+emit_32(3268091970);
+emit_32(3274944545);
+emit_32(1098795241);
+emit_32(3268091970);
+emit_32(3274688496);
+emit_32(1097320733);
+emit_32(3268091970);
+emit_32(3274432512);
+emit_32(1096709728);
+emit_32(3268091970);
+emit_32(3274176528);
+emit_32(1095004848);
+emit_32(3268091970);
+emit_32(3273920545);
+emit_32(1094273362);
+emit_32(3268091970);
+emit_32(3273664496);
+emit_32(1094729282);
+emit_32(3268091970);
+emit_32(3273408512);
+emit_32(1094410620);
+emit_32(3268091970);
+emit_32(3273152528);
+emit_32(1093402205);
+emit_32(3268091970);
+emit_32(3272896545);
+emit_32(1092271431);
+emit_32(3268091970);
+emit_32(3272640496);
+emit_32(1092329176);
+emit_32(3268091970);
+emit_32(3272384512);
+emit_32(1092614609);
+emit_32(3268091970);
+emit_32(3272128528);
+emit_32(1093144674);
+emit_32(3268091970);
+emit_32(3271872545);
+emit_32(1093760922);
+emit_32(3268091970);
+emit_32(3271616496);
+emit_32(1093140165);
+emit_32(3268091970);
+emit_32(3271163904);
+emit_32(1091696654);
+emit_32(3268091970);
+emit_32(3270651937);
+emit_32(1090884374);
+emit_32(3268091970);
+emit_32(3270139970);
+emit_32(1091484506);
+emit_32(3268091970);
+emit_32(3269627871);
+emit_32(1092037976);
+emit_32(3268091970);
+emit_32(3269115904);
+emit_32(1093188295);
+emit_32(3268091970);
+emit_32(3268603937);
+emit_32(1093395808);
+emit_32(3268091970);
+emit_32(3268091970);
+emit_32(1094337220);
+emit_32(3268091970);
+emit_32(3267579911);
+emit_32(1097044643);
+emit_32(3268091970);
+emit_32(3267067904);
+emit_32(1099465543);
+emit_32(3268091970);
+emit_32(3266555911);
+emit_32(1101317433);
+emit_32(3268091970);
+emit_32(3266043904);
+emit_32(1102556745);
+emit_32(3268091970);
+emit_32(3265531911);
+emit_32(1104196718);
+emit_32(3268091970);
+emit_32(3265019904);
+emit_32(1105380036);
+emit_32(3268091970);
+emit_32(3264507911);
+emit_32(1106482194);
+emit_32(3268091970);
+emit_32(3263995904);
+emit_32(1107758783);
+emit_32(3268091970);
+emit_32(3263483911);
+emit_32(1108425415);
+emit_32(3268091970);
+emit_32(3262775296);
+emit_32(1108887024);
+emit_32(3268091970);
+emit_32(3261751309);
+emit_32(1109173128);
+emit_32(3268091970);
+emit_32(3260727296);
+emit_32(1109482432);
+emit_32(3268091970);
+emit_32(3259703309);
+emit_32(1109785208);
+emit_32(3268091970);
+emit_32(3258679296);
+emit_32(1110180600);
+emit_32(3268091970);
+emit_32(3257655309);
+emit_32(1110663076);
+emit_32(3268091970);
+emit_32(3256631296);
+emit_32(1111283309);
+emit_32(3268091970);
+emit_32(3255607309);
+emit_32(1111318829);
+emit_32(3268091970);
+emit_32(3254386688);
+emit_32(1111804844);
+emit_32(3268091970);
+emit_32(3252338714);
+emit_32(1111712072);
+emit_32(3268091970);
+emit_32(3250290688);
+emit_32(1111394877);
+emit_32(3268091970);
+emit_32(3248242714);
+emit_32(1111473652);
+emit_32(3268091970);
+emit_32(3245998080);
+emit_32(1111266139);
+emit_32(3268091970);
+emit_32(3241902132);
+emit_32(1110947660);
+emit_32(3268091970);
+emit_32(3237609472);
+emit_32(1111203722);
+emit_32(3268091970);
+emit_32(3229220864);
+emit_32(1110998647);
+emit_32(3268091970);
+emit_32(0);
+emit_32(1110773727);
+emit_32(3268091970);
+emit_32(1081737216);
+emit_32(1110581209);
+emit_32(3268091970);
+emit_32(3279552512);
+emit_32(1103102267);
+emit_32(3268603937);
+emit_32(3279296528);
+emit_32(1104534831);
+emit_32(3268603937);
+emit_32(3279040545);
+emit_32(1105424810);
+emit_32(3268603937);
+emit_32(3278784496);
+emit_32(1105745989);
+emit_32(3268603937);
+emit_32(3278528512);
+emit_32(1105282046);
+emit_32(3268603937);
+emit_32(3278272528);
+emit_32(1105208436);
+emit_32(3268603937);
+emit_32(3278016545);
+emit_32(1104906394);
+emit_32(3268603937);
+emit_32(3277760496);
+emit_32(1104679063);
+emit_32(3268603937);
+emit_32(3277504512);
+emit_32(1103607680);
+emit_32(3268603937);
+emit_32(3277248528);
+emit_32(1102510188);
+emit_32(3268603937);
+emit_32(3276992545);
+emit_32(1101765385);
+emit_32(3268603937);
+emit_32(3276736496);
+emit_32(1101636986);
+emit_32(3268603937);
+emit_32(3276480512);
+emit_32(1101430207);
+emit_32(3268603937);
+emit_32(3276224528);
+emit_32(1101386534);
+emit_32(3268603937);
+emit_32(3275968545);
+emit_32(1100866283);
+emit_32(3268603937);
+emit_32(3275712496);
+emit_32(1100204370);
+emit_32(3268603937);
+emit_32(3275456512);
+emit_32(1099530240);
+emit_32(3268603937);
+emit_32(3275200528);
+emit_32(1098318663);
+emit_32(3268603937);
+emit_32(3274944545);
+emit_32(1096968831);
+emit_32(3268603937);
+emit_32(3274688496);
+emit_32(1096686764);
+emit_32(3268603937);
+emit_32(3274432512);
+emit_32(1095657901);
+emit_32(3268603937);
+emit_32(3274176528);
+emit_32(1093922718);
+emit_32(3268603937);
+emit_32(3273920545);
+emit_32(1093799720);
+emit_32(3268603937);
+emit_32(3273664496);
+emit_32(1093400527);
+emit_32(3268603937);
+emit_32(3273408512);
+emit_32(1094189371);
+emit_32(3268603937);
+emit_32(3273152528);
+emit_32(1093002383);
+emit_32(3268603937);
+emit_32(3272896545);
+emit_32(1092483505);
+emit_32(3268603937);
+emit_32(3272640496);
+emit_32(1092251707);
+emit_32(3268603937);
+emit_32(3272384512);
+emit_32(1090906562);
+emit_32(3268603937);
+emit_32(3272128528);
+emit_32(1091695983);
+emit_32(3268603937);
+emit_32(3271872545);
+emit_32(1092003666);
+emit_32(3268603937);
+emit_32(3271616496);
+emit_32(1091543866);
+emit_32(3268603937);
+emit_32(3271163904);
+emit_32(1090300789);
+emit_32(3268603937);
+emit_32(3270651937);
+emit_32(1088844569);
+emit_32(3268603937);
+emit_32(3270139970);
+emit_32(1087660223);
+emit_32(3268603937);
+emit_32(3269627871);
+emit_32(1090808153);
+emit_32(3268603937);
+emit_32(3269115904);
+emit_32(1090929306);
+emit_32(3268603937);
+emit_32(3268603937);
+emit_32(1092294940);
+emit_32(3268603937);
+emit_32(3268091970);
+emit_32(1094951266);
+emit_32(3268603937);
+emit_32(3267579911);
+emit_32(1098255958);
+emit_32(3268603937);
+emit_32(3267067904);
+emit_32(1100042365);
+emit_32(3268603937);
+emit_32(3266555911);
+emit_32(1101461717);
+emit_32(3268603937);
+emit_32(3266043904);
+emit_32(1102844841);
+emit_32(3268603937);
+emit_32(3265531911);
+emit_32(1103734872);
+emit_32(3268603937);
+emit_32(3265019904);
+emit_32(1105122348);
+emit_32(3268603937);
+emit_32(3264507911);
+emit_32(1106689969);
+emit_32(3268603937);
+emit_32(3263995904);
+emit_32(1107793438);
+emit_32(3268603937);
+emit_32(3263483911);
+emit_32(1108426280);
+emit_32(3268603937);
+emit_32(3262775296);
+emit_32(1108850534);
+emit_32(3268603937);
+emit_32(3261751309);
+emit_32(1109340009);
+emit_32(3268603937);
+emit_32(3260727296);
+emit_32(1109539003);
+emit_32(3268603937);
+emit_32(3259703309);
+emit_32(1109953715);
+emit_32(3268603937);
+emit_32(3258679296);
+emit_32(1110117502);
+emit_32(3268603937);
+emit_32(3257655309);
+emit_32(1110591485);
+emit_32(3268603937);
+emit_32(3256631296);
+emit_32(1111088562);
+emit_32(3268603937);
+emit_32(3255607309);
+emit_32(1111126206);
+emit_32(3268603937);
+emit_32(3254386688);
+emit_32(1111259559);
+emit_32(3268603937);
+emit_32(3252338714);
+emit_32(1111504191);
+emit_32(3268603937);
+emit_32(3250290688);
+emit_32(1111434068);
+emit_32(3268603937);
+emit_32(3248242714);
+emit_32(1111442299);
+emit_32(3268603937);
+emit_32(3245998080);
+emit_32(1111170010);
+emit_32(3268603937);
+emit_32(3241902132);
+emit_32(1110967137);
+emit_32(3268603937);
+emit_32(3237609472);
+emit_32(1111303415);
+emit_32(3268603937);
+emit_32(3229220864);
+emit_32(1111224012);
+emit_32(3268603937);
+emit_32(0);
+emit_32(1110873788);
+emit_32(3268603937);
+emit_32(1081737216);
+emit_32(1110663915);
+emit_32(3268603937);
+emit_32(3279552512);
+emit_32(1104677595);
+emit_32(3269115904);
+emit_32(3279296528);
+emit_32(1105454590);
+emit_32(3269115904);
+emit_32(3279040545);
+emit_32(1106154304);
+emit_32(3269115904);
+emit_32(3278784496);
+emit_32(1106277093);
+emit_32(3269115904);
+emit_32(3278528512);
+emit_32(1105875016);
+emit_32(3269115904);
+emit_32(3278272528);
+emit_32(1106034452);
+emit_32(3269115904);
+emit_32(3278016545);
+emit_32(1105655077);
+emit_32(3269115904);
+emit_32(3277760496);
+emit_32(1104930721);
+emit_32(3269115904);
+emit_32(3277504512);
+emit_32(1104001892);
+emit_32(3269115904);
+emit_32(3277248528);
+emit_32(1103101166);
+emit_32(3269115904);
+emit_32(3276992545);
+emit_32(1102785177);
+emit_32(3269115904);
+emit_32(3276736496);
+emit_32(1102764678);
+emit_32(3269115904);
+emit_32(3276480512);
+emit_32(1102751256);
+emit_32(3269115904);
+emit_32(3276224528);
+emit_32(1102164210);
+emit_32(3269115904);
+emit_32(3275968545);
+emit_32(1101552786);
+emit_32(3269115904);
+emit_32(3275712496);
+emit_32(1101117679);
+emit_32(3269115904);
+emit_32(3275456512);
+emit_32(1100386245);
+emit_32(3269115904);
+emit_32(3275200528);
+emit_32(1099326974);
+emit_32(3269115904);
+emit_32(3274944545);
+emit_32(1098796709);
+emit_32(3269115904);
+emit_32(3274688496);
+emit_32(1097716256);
+emit_32(3269115904);
+emit_32(3274432512);
+emit_32(1095916585);
+emit_32(3269115904);
+emit_32(3274176528);
+emit_32(1095486669);
+emit_32(3269115904);
+emit_32(3273920545);
+emit_32(1093398010);
+emit_32(3269115904);
+emit_32(3273664496);
+emit_32(1092921118);
+emit_32(3269115904);
+emit_32(3273408512);
+emit_32(1092252829);
+emit_32(3269115904);
+emit_32(3273152528);
+emit_32(1092749676);
+emit_32(3269115904);
+emit_32(3272896545);
+emit_32(1092530481);
+emit_32(3269115904);
+emit_32(3272640496);
+emit_32(1091486131);
+emit_32(3269115904);
+emit_32(3272384512);
+emit_32(1090876730);
+emit_32(3269115904);
+emit_32(3272128528);
+emit_32(1090142454);
+emit_32(3269115904);
+emit_32(3271872545);
+emit_32(1088793147);
+emit_32(3269115904);
+emit_32(3271616496);
+emit_32(1089015130);
+emit_32(3269115904);
+emit_32(3271163904);
+emit_32(1088303693);
+emit_32(3269115904);
+emit_32(3270651937);
+emit_32(1087535674);
+emit_32(3269115904);
+emit_32(3270139970);
+emit_32(1085670299);
+emit_32(3269115904);
+emit_32(3269627871);
+emit_32(1085625420);
+emit_32(3269115904);
+emit_32(3269115904);
+emit_32(1088308013);
+emit_32(3269115904);
+emit_32(3268603937);
+emit_32(1092417340);
+emit_32(3269115904);
+emit_32(3268091970);
+emit_32(1095410752);
+emit_32(3269115904);
+emit_32(3267579911);
+emit_32(1098094582);
+emit_32(3269115904);
+emit_32(3267067904);
+emit_32(1100161430);
+emit_32(3269115904);
+emit_32(3266555911);
+emit_32(1101552891);
+emit_32(3269115904);
+emit_32(3266043904);
+emit_32(1102765307);
+emit_32(3269115904);
+emit_32(3265531911);
+emit_32(1103641549);
+emit_32(3269115904);
+emit_32(3265019904);
+emit_32(1105704360);
+emit_32(3269115904);
+emit_32(3264507911);
+emit_32(1107288811);
+emit_32(3269115904);
+emit_32(3263995904);
+emit_32(1107972981);
+emit_32(3269115904);
+emit_32(3263483911);
+emit_32(1108646167);
+emit_32(3269115904);
+emit_32(3262775296);
+emit_32(1109009918);
+emit_32(3269115904);
+emit_32(3261751309);
+emit_32(1109314581);
+emit_32(3269115904);
+emit_32(3260727296);
+emit_32(1109742427);
+emit_32(3269115904);
+emit_32(3259703309);
+emit_32(1110003653);
+emit_32(3269115904);
+emit_32(3258679296);
+emit_32(1110284435);
+emit_32(3269115904);
+emit_32(3257655309);
+emit_32(1110677153);
+emit_32(3269115904);
+emit_32(3256631296);
+emit_32(1111084630);
+emit_32(3269115904);
+emit_32(3255607309);
+emit_32(1111141489);
+emit_32(3269115904);
+emit_32(3254386688);
+emit_32(1111299090);
+emit_32(3269115904);
+emit_32(3252338714);
+emit_32(1111545138);
+emit_32(3269115904);
+emit_32(3250290688);
+emit_32(1111299378);
+emit_32(3269115904);
+emit_32(3248242714);
+emit_32(1111477977);
+emit_32(3269115904);
+emit_32(3245998080);
+emit_32(1111335580);
+emit_32(3269115904);
+emit_32(3241902132);
+emit_32(1111332776);
+emit_32(3269115904);
+emit_32(3237609472);
+emit_32(1111510640);
+emit_32(3269115904);
+emit_32(3229220864);
+emit_32(1111358806);
+emit_32(3269115904);
+emit_32(0);
+emit_32(1111013904);
+emit_32(3269115904);
+emit_32(1081737216);
+emit_32(1110808645);
+emit_32(3269115904);
+emit_32(3279552512);
+emit_32(1105473988);
+emit_32(3269627871);
+emit_32(3279296528);
+emit_32(1106406644);
+emit_32(3269627871);
+emit_32(3279040545);
+emit_32(1106900052);
+emit_32(3269627871);
+emit_32(3278784496);
+emit_32(1106631983);
+emit_32(3269627871);
+emit_32(3278528512);
+emit_32(1106899527);
+emit_32(3269627871);
+emit_32(3278272528);
+emit_32(1107077575);
+emit_32(3269627871);
+emit_32(3278016545);
+emit_32(1106405386);
+emit_32(3269627871);
+emit_32(3277760496);
+emit_32(1105322207);
+emit_32(3269627871);
+emit_32(3277504512);
+emit_32(1104051752);
+emit_32(3269627871);
+emit_32(3277248528);
+emit_32(1103820331);
+emit_32(3269627871);
+emit_32(3276992545);
+emit_32(1103544189);
+emit_32(3269627871);
+emit_32(3276736496);
+emit_32(1104020714);
+emit_32(3269627871);
+emit_32(3276480512);
+emit_32(1104151629);
+emit_32(3269627871);
+emit_32(3276224528);
+emit_32(1103575069);
+emit_32(3269627871);
+emit_32(3275968545);
+emit_32(1102962911);
+emit_32(3269627871);
+emit_32(3275712496);
+emit_32(1102032824);
+emit_32(3269627871);
+emit_32(3275456512);
+emit_32(1101115320);
+emit_32(3269627871);
+emit_32(3275200528);
+emit_32(1100461113);
+emit_32(3269627871);
+emit_32(3274944545);
+emit_32(1099847644);
+emit_32(3269627871);
+emit_32(3274688496);
+emit_32(1099097702);
+emit_32(3269627871);
+emit_32(3274432512);
+emit_32(1097494692);
+emit_32(3269627871);
+emit_32(3274176528);
+emit_32(1096228851);
+emit_32(3269627871);
+emit_32(3273920545);
+emit_32(1094225966);
+emit_32(3269627871);
+emit_32(3273664496);
+emit_32(1093095391);
+emit_32(3269627871);
+emit_32(3273408512);
+emit_32(1092478294);
+emit_32(3269627871);
+emit_32(3273152528);
+emit_32(1092368508);
+emit_32(3269627871);
+emit_32(3272896545);
+emit_32(1091995425);
+emit_32(3269627871);
+emit_32(3272640496);
+emit_32(1090918526);
+emit_32(3269627871);
+emit_32(3272384512);
+emit_32(1090551315);
+emit_32(3269627871);
+emit_32(3272128528);
+emit_32(1089373156);
+emit_32(3269627871);
+emit_32(3271872545);
+emit_32(1087003689);
+emit_32(3269627871);
+emit_32(3271616496);
+emit_32(1086132763);
+emit_32(3269627871);
+emit_32(3271163904);
+emit_32(1085152973);
+emit_32(3269627871);
+emit_32(3270651937);
+emit_32(1085347149);
+emit_32(3269627871);
+emit_32(3270139970);
+emit_32(1084963286);
+emit_32(3269627871);
+emit_32(3269627871);
+emit_32(1086623454);
+emit_32(3269627871);
+emit_32(3269115904);
+emit_32(1089942512);
+emit_32(3269627871);
+emit_32(3268603937);
+emit_32(1092605381);
+emit_32(3269627871);
+emit_32(3268091970);
+emit_32(1095649093);
+emit_32(3269627871);
+emit_32(3267579911);
+emit_32(1098551656);
+emit_32(3269627871);
+emit_32(3267067904);
+emit_32(1100188326);
+emit_32(3269627871);
+emit_32(3266555911);
+emit_32(1101247703);
+emit_32(3269627871);
+emit_32(3266043904);
+emit_32(1102236038);
+emit_32(3269627871);
+emit_32(3265531911);
+emit_32(1104015996);
+emit_32(3269627871);
+emit_32(3265019904);
+emit_32(1106019562);
+emit_32(3269627871);
+emit_32(3264507911);
+emit_32(1107489640);
+emit_32(3269627871);
+emit_32(3263995904);
+emit_32(1107939269);
+emit_32(3269627871);
+emit_32(3263483911);
+emit_32(1108609493);
+emit_32(3269627871);
+emit_32(3262775296);
+emit_32(1108936360);
+emit_32(3269627871);
+emit_32(3261751309);
+emit_32(1109365909);
+emit_32(3269627871);
+emit_32(3260727296);
+emit_32(1109731836);
+emit_32(3269627871);
+emit_32(3259703309);
+emit_32(1110075454);
+emit_32(3269627871);
+emit_32(3258679296);
+emit_32(1110274841);
+emit_32(3269627871);
+emit_32(3257655309);
+emit_32(1110532397);
+emit_32(3269627871);
+emit_32(3256631296);
+emit_32(1110820677);
+emit_32(3269627871);
+emit_32(3255607309);
+emit_32(1110970388);
+emit_32(3269627871);
+emit_32(3254386688);
+emit_32(1111402270);
+emit_32(3269627871);
+emit_32(3252338714);
+emit_32(1111410187);
+emit_32(3269627871);
+emit_32(3250290688);
+emit_32(1111092730);
+emit_32(3269627871);
+emit_32(3248242714);
+emit_32(1111561549);
+emit_32(3269627871);
+emit_32(3245998080);
+emit_32(1111622576);
+emit_32(3269627871);
+emit_32(3241902132);
+emit_32(1111406543);
+emit_32(3269627871);
+emit_32(3237609472);
+emit_32(1111614869);
+emit_32(3269627871);
+emit_32(3229220864);
+emit_32(1111623991);
+emit_32(3269627871);
+emit_32(0);
+emit_32(1111334244);
+emit_32(3269627871);
+emit_32(1081737216);
+emit_32(1111356054);
+emit_32(3269627871);
+emit_32(3279552512);
+emit_32(1106615049);
+emit_32(3270139970);
+emit_32(3279296528);
+emit_32(1107119309);
+emit_32(3270139970);
+emit_32(3279040545);
+emit_32(1107204296);
+emit_32(3270139970);
+emit_32(3278784496);
+emit_32(1107426043);
+emit_32(3270139970);
+emit_32(3278528512);
+emit_32(1107651514);
+emit_32(3270139970);
+emit_32(3278272528);
+emit_32(1107492104);
+emit_32(3270139970);
+emit_32(3278016545);
+emit_32(1106671934);
+emit_32(3270139970);
+emit_32(3277760496);
+emit_32(1105363468);
+emit_32(3270139970);
+emit_32(3277504512);
+emit_32(1104722631);
+emit_32(3270139970);
+emit_32(3277248528);
+emit_32(1104684463);
+emit_32(3270139970);
+emit_32(3276992545);
+emit_32(1104973765);
+emit_32(3270139970);
+emit_32(3276736496);
+emit_32(1105162981);
+emit_32(3270139970);
+emit_32(3276480512);
+emit_32(1105246762);
+emit_32(3270139970);
+emit_32(3276224528);
+emit_32(1104513126);
+emit_32(3270139970);
+emit_32(3275968545);
+emit_32(1103992350);
+emit_32(3270139970);
+emit_32(3275712496);
+emit_32(1103134301);
+emit_32(3270139970);
+emit_32(3275456512);
+emit_32(1102130761);
+emit_32(3270139970);
+emit_32(3275200528);
+emit_32(1101510214);
+emit_32(3270139970);
+emit_32(3274944545);
+emit_32(1100554804);
+emit_32(3270139970);
+emit_32(3274688496);
+emit_32(1100005560);
+emit_32(3270139970);
+emit_32(3274432512);
+emit_32(1099090258);
+emit_32(3270139970);
+emit_32(3274176528);
+emit_32(1096702388);
+emit_32(3270139970);
+emit_32(3273920545);
+emit_32(1094929875);
+emit_32(3270139970);
+emit_32(3273664496);
+emit_32(1093071903);
+emit_32(3270139970);
+emit_32(3273408512);
+emit_32(1091864185);
+emit_32(3270139970);
+emit_32(3273152528);
+emit_32(1090738538);
+emit_32(3270139970);
+emit_32(3272896545);
+emit_32(1089872215);
+emit_32(3270139970);
+emit_32(3272640496);
+emit_32(1088532009);
+emit_32(3270139970);
+emit_32(3272384512);
+emit_32(1087136019);
+emit_32(3270139970);
+emit_32(3272128528);
+emit_32(1086091155);
+emit_32(3270139970);
+emit_32(3271872545);
+emit_32(1083137212);
+emit_32(3270139970);
+emit_32(3271616496);
+emit_32(1082194374);
+emit_32(3270139970);
+emit_32(3271163904);
+emit_32(1084156344);
+emit_32(3270139970);
+emit_32(3270651937);
+emit_32(1086494710);
+emit_32(3270139970);
+emit_32(3270139970);
+emit_32(1087925178);
+emit_32(3270139970);
+emit_32(3269627871);
+emit_32(1089283545);
+emit_32(3270139970);
+emit_32(3269115904);
+emit_32(1089544493);
+emit_32(3270139970);
+emit_32(3268603937);
+emit_32(1092490552);
+emit_32(3270139970);
+emit_32(3268091970);
+emit_32(1094596637);
+emit_32(3270139970);
+emit_32(3267579911);
+emit_32(1097303536);
+emit_32(3270139970);
+emit_32(3267067904);
+emit_32(1099546598);
+emit_32(3270139970);
+emit_32(3266555911);
+emit_32(1101122293);
+emit_32(3270139970);
+emit_32(3266043904);
+emit_32(1102198394);
+emit_32(3270139970);
+emit_32(3265531911);
+emit_32(1104133751);
+emit_32(3270139970);
+emit_32(3265019904);
+emit_32(1105876641);
+emit_32(3270139970);
+emit_32(3264507911);
+emit_32(1107287081);
+emit_32(3270139970);
+emit_32(3263995904);
+emit_32(1107840362);
+emit_32(3270139970);
+emit_32(3263483911);
+emit_32(1108323913);
+emit_32(3270139970);
+emit_32(3262775296);
+emit_32(1108846340);
+emit_32(3270139970);
+emit_32(3261751309);
+emit_32(1109191243);
+emit_32(3270139970);
+emit_32(3260727296);
+emit_32(1109548335);
+emit_32(3270139970);
+emit_32(3259703309);
+emit_32(1110053775);
+emit_32(3270139970);
+emit_32(3258679296);
+emit_32(1110107410);
+emit_32(3270139970);
+emit_32(3257655309);
+emit_32(1110399726);
+emit_32(3270139970);
+emit_32(3256631296);
+emit_32(1110760515);
+emit_32(3270139970);
+emit_32(3255607309);
+emit_32(1110729294);
+emit_32(3270139970);
+emit_32(3254386688);
+emit_32(1110963755);
+emit_32(3270139970);
+emit_32(3252338714);
+emit_32(1110772128);
+emit_32(3270139970);
+emit_32(3250290688);
+emit_32(1110896358);
+emit_32(3270139970);
+emit_32(3248242714);
+emit_32(1111339775);
+emit_32(3270139970);
+emit_32(3245998080);
+emit_32(1111522542);
+emit_32(3270139970);
+emit_32(3241902132);
+emit_32(1111498739);
+emit_32(3270139970);
+emit_32(3237609472);
+emit_32(1111764002);
+emit_32(3270139970);
+emit_32(3229220864);
+emit_32(1111826209);
+emit_32(3270139970);
+emit_32(0);
+emit_32(1111701062);
+emit_32(3270139970);
+emit_32(1081737216);
+emit_32(1111592455);
+emit_32(3270139970);
+emit_32(3279552512);
+emit_32(1107165027);
+emit_32(3270651937);
+emit_32(3279296528);
+emit_32(1106980268);
+emit_32(3270651937);
+emit_32(3279040545);
+emit_32(1107315707);
+emit_32(3270651937);
+emit_32(3278784496);
+emit_32(1107598272);
+emit_32(3270651937);
+emit_32(3278528512);
+emit_32(1107717469);
+emit_32(3270651937);
+emit_32(3278272528);
+emit_32(1107286557);
+emit_32(3270651937);
+emit_32(3278016545);
+emit_32(1106402712);
+emit_32(3270651937);
+emit_32(3277760496);
+emit_32(1105497896);
+emit_32(3270651937);
+emit_32(3277504512);
+emit_32(1105374898);
+emit_32(3270651937);
+emit_32(3277248528);
+emit_32(1105640659);
+emit_32(3270651937);
+emit_32(3276992545);
+emit_32(1105948416);
+emit_32(3270651937);
+emit_32(3276736496);
+emit_32(1105871923);
+emit_32(3270651937);
+emit_32(3276480512);
+emit_32(1105415268);
+emit_32(3270651937);
+emit_32(3276224528);
+emit_32(1104908386);
+emit_32(3270651937);
+emit_32(3275968545);
+emit_32(1104625166);
+emit_32(3270651937);
+emit_32(3275712496);
+emit_32(1103529981);
+emit_32(3270651937);
+emit_32(3275456512);
+emit_32(1102284535);
+emit_32(3270651937);
+emit_32(3275200528);
+emit_32(1101814668);
+emit_32(3270651937);
+emit_32(3274944545);
+emit_32(1101354395);
+emit_32(3270651937);
+emit_32(3274688496);
+emit_32(1100467772);
+emit_32(3270651937);
+emit_32(3274432512);
+emit_32(1099331902);
+emit_32(3270651937);
+emit_32(3274176528);
+emit_32(1097334469);
+emit_32(3270651937);
+emit_32(3273920545);
+emit_32(1095774713);
+emit_32(3270651937);
+emit_32(3273664496);
+emit_32(1093969274);
+emit_32(3270651937);
+emit_32(3273408512);
+emit_32(1092236870);
+emit_32(3270651937);
+emit_32(3273152528);
+emit_32(1091177242);
+emit_32(3270651937);
+emit_32(3272896545);
+emit_32(1089194521);
+emit_32(3270651937);
+emit_32(3272640496);
+emit_32(1087253250);
+emit_32(3270651937);
+emit_32(3272384512);
+emit_32(1085293042);
+emit_32(3270651937);
+emit_32(3272128528);
+emit_32(1086332055);
+emit_32(3270651937);
+emit_32(3271872545);
+emit_32(1083552217);
+emit_32(3270651937);
+emit_32(3271616496);
+emit_32(1081840228);
+emit_32(3270651937);
+emit_32(3271163904);
+emit_32(1085052373);
+emit_32(3270651937);
+emit_32(3270651937);
+emit_32(1088324601);
+emit_32(3270651937);
+emit_32(3270139970);
+emit_32(1090526128);
+emit_32(3270651937);
+emit_32(3269627871);
+emit_32(1090035353);
+emit_32(3270651937);
+emit_32(3269115904);
+emit_32(1091146088);
+emit_32(3270651937);
+emit_32(3268603937);
+emit_32(1092321972);
+emit_32(3270651937);
+emit_32(3268091970);
+emit_32(1094166931);
+emit_32(3270651937);
+emit_32(3267579911);
+emit_32(1096361705);
+emit_32(3270651937);
+emit_32(3267067904);
+emit_32(1098923167);
+emit_32(3270651937);
+emit_32(3266555911);
+emit_32(1100222510);
+emit_32(3270651937);
+emit_32(3266043904);
+emit_32(1102327683);
+emit_32(3270651937);
+emit_32(3265531911);
+emit_32(1104008865);
+emit_32(3270651937);
+emit_32(3265019904);
+emit_32(1105745465);
+emit_32(3270651937);
+emit_32(3264507911);
+emit_32(1107240472);
+emit_32(3270651937);
+emit_32(3263995904);
+emit_32(1107738152);
+emit_32(3270651937);
+emit_32(3263483911);
+emit_32(1108317333);
+emit_32(3270651937);
+emit_32(3262775296);
+emit_32(1108718230);
+emit_32(3270651937);
+emit_32(3261751309);
+emit_32(1109166313);
+emit_32(3270651937);
+emit_32(3260727296);
+emit_32(1109572767);
+emit_32(3270651937);
+emit_32(3259703309);
+emit_32(1109886999);
+emit_32(3270651937);
+emit_32(3258679296);
+emit_32(1110175934);
+emit_32(3270651937);
+emit_32(3257655309);
+emit_32(1110012409);
+emit_32(3270651937);
+emit_32(3256631296);
+emit_32(1110458420);
+emit_32(3270651937);
+emit_32(3255607309);
+emit_32(1110277908);
+emit_32(3270651937);
+emit_32(3254386688);
+emit_32(1110242571);
+emit_32(3270651937);
+emit_32(3252338714);
+emit_32(1110493941);
+emit_32(3270651937);
+emit_32(3250290688);
+emit_32(1110776139);
+emit_32(3270651937);
+emit_32(3248242714);
+emit_32(1111135643);
+emit_32(3270651937);
+emit_32(3245998080);
+emit_32(1111317021);
+emit_32(3270651937);
+emit_32(3241902132);
+emit_32(1111525111);
+emit_32(3270651937);
+emit_32(3237609472);
+emit_32(1111847102);
+emit_32(3270651937);
+emit_32(3229220864);
+emit_32(1111929704);
+emit_32(3270651937);
+emit_32(0);
+emit_32(1111847364);
+emit_32(3270651937);
+emit_32(1081737216);
+emit_32(1111930149);
+emit_32(3270651937);
+emit_32(3279552512);
+emit_32(1106982994);
+emit_32(3271163904);
+emit_32(3279296528);
+emit_32(1106990334);
+emit_32(3271163904);
+emit_32(3279040545);
+emit_32(1107378569);
+emit_32(3271163904);
+emit_32(3278784496);
+emit_32(1107553734);
+emit_32(3271163904);
+emit_32(3278528512);
+emit_32(1107478761);
+emit_32(3271163904);
+emit_32(3278272528);
+emit_32(1106962389);
+emit_32(3271163904);
+emit_32(3278016545);
+emit_32(1105953607);
+emit_32(3271163904);
+emit_32(3277760496);
+emit_32(1105995497);
+emit_32(3271163904);
+emit_32(3277504512);
+emit_32(1105958325);
+emit_32(3271163904);
+emit_32(3277248528);
+emit_32(1106168041);
+emit_32(3271163904);
+emit_32(3276992545);
+emit_32(1106461590);
+emit_32(3271163904);
+emit_32(3276736496);
+emit_32(1106400248);
+emit_32(3271163904);
+emit_32(3276480512);
+emit_32(1105590904);
+emit_32(3271163904);
+emit_32(3276224528);
+emit_32(1105294315);
+emit_32(3271163904);
+emit_32(3275968545);
+emit_32(1104823661);
+emit_32(3271163904);
+emit_32(3275712496);
+emit_32(1103994185);
+emit_32(3271163904);
+emit_32(3275456512);
+emit_32(1102728764);
+emit_32(3271163904);
+emit_32(3275200528);
+emit_32(1102137996);
+emit_32(3271163904);
+emit_32(3274944545);
+emit_32(1101349782);
+emit_32(3271163904);
+emit_32(3274688496);
+emit_32(1100398356);
+emit_32(3271163904);
+emit_32(3274432512);
+emit_32(1099098489);
+emit_32(3271163904);
+emit_32(3274176528);
+emit_32(1097575747);
+emit_32(3271163904);
+emit_32(3273920545);
+emit_32(1095747135);
+emit_32(3271163904);
+emit_32(3273664496);
+emit_32(1094011427);
+emit_32(3271163904);
+emit_32(3273408512);
+emit_32(1092817099);
+emit_32(3271163904);
+emit_32(3273152528);
+emit_32(1090935010);
+emit_32(3271163904);
+emit_32(3272896545);
+emit_32(1086813205);
+emit_32(3271163904);
+emit_32(3272640496);
+emit_32(1085254874);
+emit_32(3271163904);
+emit_32(3272384512);
+emit_32(1084610859);
+emit_32(3271163904);
+emit_32(3272128528);
+emit_32(1085403226);
+emit_32(3271163904);
+emit_32(3271872545);
+emit_32(1085803741);
+emit_32(3271163904);
+emit_32(3271616496);
+emit_32(1084901902);
+emit_32(3271163904);
+emit_32(3271163904);
+emit_32(1086653402);
+emit_32(3271163904);
+emit_32(3270651937);
+emit_32(1089541201);
+emit_32(3271163904);
+emit_32(3270139970);
+emit_32(1090924587);
+emit_32(3271163904);
+emit_32(3269627871);
+emit_32(1091193002);
+emit_32(3271163904);
+emit_32(3269115904);
+emit_32(1091042709);
+emit_32(3271163904);
+emit_32(3268603937);
+emit_32(1091824318);
+emit_32(3271163904);
+emit_32(3268091970);
+emit_32(1094207721);
+emit_32(3271163904);
+emit_32(3267579911);
+emit_32(1096193199);
+emit_32(3271163904);
+emit_32(3267067904);
+emit_32(1098383045);
+emit_32(3271163904);
+emit_32(3266555911);
+emit_32(1099615542);
+emit_32(3271163904);
+emit_32(3266043904);
+emit_32(1101433038);
+emit_32(3271163904);
+emit_32(3265531911);
+emit_32(1103595045);
+emit_32(3271163904);
+emit_32(3265019904);
+emit_32(1105129950);
+emit_32(3271163904);
+emit_32(3264507911);
+emit_32(1106326061);
+emit_32(3271163904);
+emit_32(3263995904);
+emit_32(1107411652);
+emit_32(3271163904);
+emit_32(3263483911);
+emit_32(1107887050);
+emit_32(3271163904);
+emit_32(3262775296);
+emit_32(1108492236);
+emit_32(3271163904);
+emit_32(3261751309);
+emit_32(1109105757);
+emit_32(3271163904);
+emit_32(3260727296);
+emit_32(1109424656);
+emit_32(3271163904);
+emit_32(3259703309);
+emit_32(1109901784);
+emit_32(3271163904);
+emit_32(3258679296);
+emit_32(1109885321);
+emit_32(3271163904);
+emit_32(3257655309);
+emit_32(1109822564);
+emit_32(3271163904);
+emit_32(3256631296);
+emit_32(1109824163);
+emit_32(3271163904);
+emit_32(3255607309);
+emit_32(1109730315);
+emit_32(3271163904);
+emit_32(3254386688);
+emit_32(1109803113);
+emit_32(3271163904);
+emit_32(3252338714);
+emit_32(1109995186);
+emit_32(3271163904);
+emit_32(3250290688);
+emit_32(1110434618);
+emit_32(3271163904);
+emit_32(3248242714);
+emit_32(1111024783);
+emit_32(3271163904);
+emit_32(3245998080);
+emit_32(1111309785);
+emit_32(3271163904);
+emit_32(3241902132);
+emit_32(1111384208);
+emit_32(3271163904);
+emit_32(3237609472);
+emit_32(1111783952);
+emit_32(3271163904);
+emit_32(3229220864);
+emit_32(1111918930);
+emit_32(3271163904);
+emit_32(0);
+emit_32(1112106100);
+emit_32(3271163904);
+emit_32(1081737216);
+emit_32(1112094042);
+emit_32(3271163904);
+emit_start(Landscape06Vtx)
+emit_32(3279552512);
+emit_32(1085562023);
+emit_32(1131812880);
+emit_32(3279552512);
+emit_32(1090639836);
+emit_32(1132068864);
+emit_32(3279296528);
+emit_32(1088557385);
+emit_32(1131812880);
+emit_32(3279296528);
+emit_32(1092330749);
+emit_32(1132068864);
+emit_32(3279040545);
+emit_32(1092455865);
+emit_32(1131812880);
+emit_32(3279040545);
+emit_32(1094355780);
+emit_32(1132068864);
+emit_32(3278784496);
+emit_32(1095594567);
+emit_32(1131812880);
+emit_32(3278784496);
+emit_32(1095302539);
+emit_32(1132068864);
+emit_32(3278528512);
+emit_32(1096797808);
+emit_32(1131812880);
+emit_32(3278528512);
+emit_32(1095711379);
+emit_32(1132068864);
+emit_32(3278272528);
+emit_32(1098618136);
+emit_32(1131812880);
+emit_32(3278272528);
+emit_32(1098003041);
+emit_32(1132068864);
+emit_32(3278016545);
+emit_32(1099699061);
+emit_32(1131812880);
+emit_32(3278016545);
+emit_32(1099454009);
+emit_32(1132068864);
+emit_32(3277760496);
+emit_32(1100182821);
+emit_32(1131812880);
+emit_32(3277760496);
+emit_32(1099951977);
+emit_32(1132068864);
+emit_32(3277504512);
+emit_32(1100520096);
+emit_32(1131812880);
+emit_32(3277504512);
+emit_32(1100371355);
+emit_32(1132068864);
+emit_32(3277248528);
+emit_32(1100966579);
+emit_32(1131812880);
+emit_32(3277248528);
+emit_32(1100780352);
+emit_32(1132068864);
+emit_32(3276992545);
+emit_32(1100860306);
+emit_32(1131812880);
+emit_32(3276992545);
+emit_32(1101050203);
+emit_32(1132068864);
+emit_32(3276736496);
+emit_32(1100465622);
+emit_32(1131812880);
+emit_32(3276736496);
+emit_32(1100893074);
+emit_32(1132068864);
+emit_32(3276480512);
+emit_32(1100581280);
+emit_32(1131812880);
+emit_32(3276480512);
+emit_32(1101018641);
+emit_32(1132068864);
+emit_32(3276224528);
+emit_32(1099877895);
+emit_32(1131812880);
+emit_32(3276224528);
+emit_32(1100648651);
+emit_32(1132068864);
+emit_32(3275968545);
+emit_32(1098108633);
+emit_32(1131812880);
+emit_32(3275968545);
+emit_32(1099969017);
+emit_32(1132068864);
+emit_32(3275712496);
+emit_32(1097534433);
+emit_32(1131812880);
+emit_32(3275712496);
+emit_32(1099061736);
+emit_32(1132068864);
+emit_32(3275456512);
+emit_32(1095741263);
+emit_32(1131812880);
+emit_32(3275456512);
+emit_32(1097819121);
+emit_32(1132068864);
+emit_32(3275200528);
+emit_32(1094351061);
+emit_32(1131812880);
+emit_32(3275200528);
+emit_32(1095413373);
+emit_32(1132068864);
+emit_32(3274944545);
+emit_32(1095198940);
+emit_32(1131812880);
+emit_32(3274944545);
+emit_32(1096465724);
+emit_32(1132068864);
+emit_32(3274688496);
+emit_32(1095888378);
+emit_32(1131812880);
+emit_32(3274688496);
+emit_32(1097378510);
+emit_32(1132068864);
+emit_32(3274432512);
+emit_32(1096087503);
+emit_32(1131812880);
+emit_32(3274432512);
+emit_32(1098800064);
+emit_32(1132068864);
+emit_32(3274176528);
+emit_32(1096238288);
+emit_32(1131812880);
+emit_32(3274176528);
+emit_32(1098870004);
+emit_32(1132068864);
+emit_32(3273920545);
+emit_32(1096234303);
+emit_32(1131812880);
+emit_32(3273920545);
+emit_32(1098365115);
+emit_32(1132068864);
+emit_32(3273664496);
+emit_32(1097531182);
+emit_32(1131812880);
+emit_32(3273664496);
+emit_32(1097973681);
+emit_32(1132068864);
+emit_32(3273408512);
+emit_32(1096980680);
+emit_32(1131812880);
+emit_32(3273408512);
+emit_32(1097661835);
+emit_32(1132068864);
+emit_32(3273152528);
+emit_32(1096822135);
+emit_32(1131812880);
+emit_32(3273152528);
+emit_32(1097231709);
+emit_32(1132068864);
+emit_32(3272896545);
+emit_32(1095973103);
+emit_32(1131812880);
+emit_32(3272896545);
+emit_32(1097116261);
+emit_32(1132068864);
+emit_32(3272640496);
+emit_32(1095621621);
+emit_32(1131812880);
+emit_32(3272640496);
+emit_32(1096358035);
+emit_32(1132068864);
+emit_32(3272384512);
+emit_32(1095942380);
+emit_32(1131812880);
+emit_32(3272384512);
+emit_32(1097122133);
+emit_32(1132068864);
+emit_32(3272128528);
+emit_32(1095707289);
+emit_32(1131812880);
+emit_32(3272128528);
+emit_32(1097935303);
+emit_32(1132068864);
+emit_32(3271872545);
+emit_32(1096204524);
+emit_32(1131812880);
+emit_32(3271872545);
+emit_32(1097370855);
+emit_32(1132068864);
+emit_32(3271616496);
+emit_32(1096900883);
+emit_32(1131812880);
+emit_32(3271616496);
+emit_32(1098608280);
+emit_32(1132068864);
+emit_32(3271163904);
+emit_32(1096266285);
+emit_32(1131812880);
+emit_32(3271163904);
+emit_32(1098342256);
+emit_32(1132068864);
+emit_32(3270651937);
+emit_32(1095366397);
+emit_32(1131812880);
+emit_32(3270651937);
+emit_32(1098053793);
+emit_32(1132068864);
+emit_32(3270139970);
+emit_32(1094774581);
+emit_32(1131812880);
+emit_32(3270139970);
+emit_32(1098324640);
+emit_32(1132068864);
+emit_32(3269627871);
+emit_32(1095465488);
+emit_32(1131812880);
+emit_32(3269627871);
+emit_32(1098790417);
+emit_32(1132068864);
+emit_32(3269115904);
+emit_32(1095080136);
+emit_32(1131812880);
+emit_32(3269115904);
+emit_32(1098071199);
+emit_32(1132068864);
+emit_32(3268603937);
+emit_32(1095775027);
+emit_32(1131812880);
+emit_32(3268603937);
+emit_32(1098042258);
+emit_32(1132068864);
+emit_32(3268091970);
+emit_32(1096498335);
+emit_32(1131812880);
+emit_32(3268091970);
+emit_32(1097596823);
+emit_32(1132068864);
+emit_32(3267579911);
+emit_32(1096881170);
+emit_32(1131812880);
+emit_32(3267579911);
+emit_32(1097962986);
+emit_32(1132068864);
+emit_32(3267067904);
+emit_32(1096646604);
+emit_32(1131812880);
+emit_32(3267067904);
+emit_32(1097510525);
+emit_32(1132068864);
+emit_32(3266555911);
+emit_32(1097473930);
+emit_32(1131812880);
+emit_32(3266555911);
+emit_32(1096970614);
+emit_32(1132068864);
+emit_32(3266043904);
+emit_32(1096072928);
+emit_32(1131812880);
+emit_32(3266043904);
+emit_32(1096851181);
+emit_32(1132068864);
+emit_32(3265531911);
+emit_32(1095562061);
+emit_32(1131812880);
+emit_32(3265531911);
+emit_32(1096578341);
+emit_32(1132068864);
+emit_32(3265019904);
+emit_32(1094504258);
+emit_32(1131812880);
+emit_32(3265019904);
+emit_32(1095833747);
+emit_32(1132068864);
+emit_32(3264507911);
+emit_32(1094381679);
+emit_32(1131812880);
+emit_32(3264507911);
+emit_32(1095590058);
+emit_32(1132068864);
+emit_32(3263995904);
+emit_32(1093698952);
+emit_32(1131812880);
+emit_32(3263995904);
+emit_32(1095093872);
+emit_32(1132068864);
+emit_32(3263483911);
+emit_32(1094601146);
+emit_32(1131812880);
+emit_32(3263483911);
+emit_32(1093864941);
+emit_32(1132068864);
+emit_32(3262775296);
+emit_32(1093294516);
+emit_32(1131812880);
+emit_32(3262775296);
+emit_32(1092542435);
+emit_32(1132068864);
+emit_32(3261751309);
+emit_32(1091098766);
+emit_32(1131812880);
+emit_32(3261751309);
+emit_32(1091449232);
+emit_32(1132068864);
+emit_32(3260727296);
+emit_32(1088637685);
+emit_32(1131812880);
+emit_32(3260727296);
+emit_32(1089462705);
+emit_32(1132068864);
+emit_32(3259703309);
+emit_32(1088371137);
+emit_32(1131812880);
+emit_32(3259703309);
+emit_32(1086825892);
+emit_32(1132068864);
+emit_32(3258679296);
+emit_32(1090482591);
+emit_32(1131812880);
+emit_32(3258679296);
+emit_32(1088189482);
+emit_32(1132068864);
+emit_32(3257655309);
+emit_32(1091688768);
+emit_32(1131812880);
+emit_32(3257655309);
+emit_32(1089036752);
+emit_32(1132068864);
+emit_32(3256631296);
+emit_32(1091298897);
+emit_32(1131812880);
+emit_32(3256631296);
+emit_32(1088194704);
+emit_32(1132068864);
+emit_32(3255607309);
+emit_32(1089392345);
+emit_32(1131812880);
+emit_32(3255607309);
+emit_32(1087706759);
+emit_32(1132068864);
+emit_32(3254386688);
+emit_32(1089840108);
+emit_32(1131812880);
+emit_32(3254386688);
+emit_32(1087906072);
+emit_32(1132068864);
+emit_32(3252338714);
+emit_32(1088432604);
+emit_32(1131812880);
+emit_32(3252338714);
+emit_32(1086651325);
+emit_32(1132068864);
+emit_32(3250290688);
+emit_32(1085565840);
+emit_32(1131812880);
+emit_32(3250290688);
+emit_32(1085752989);
+emit_32(1132068864);
+emit_32(3248242714);
+emit_32(1084476831);
+emit_32(1131812880);
+emit_32(3248242714);
+emit_32(1082147671);
+emit_32(1132068864);
+emit_32(3245998080);
+emit_32(1080454304);
+emit_32(1131812880);
+emit_32(3245998080);
+emit_32(1080053035);
+emit_32(1132068864);
+emit_32(3241902132);
+emit_32(1078160817);
+emit_32(1131812880);
+emit_32(3241902132);
+emit_32(1078352203);
+emit_32(1132068864);
+emit_32(3237609472);
+emit_32(1075763269);
+emit_32(1131812880);
+emit_32(3237609472);
+emit_32(1075673385);
+emit_32(1132068864);
+emit_32(3229220864);
+emit_32(1071152764);
+emit_32(1131812880);
+emit_32(3229220864);
+emit_32(1076050788);
+emit_32(1132068864);
+emit_32(0);
+emit_32(1066573591);
+emit_32(1131812880);
+emit_32(0);
+emit_32(1074500112);
+emit_32(1132068864);
+emit_32(1081737216);
+emit_32(1055384530);
+emit_32(1131812880);
+emit_32(1081737216);
+emit_32(1069740626);
+emit_32(1132068864);
+emit_32(3279552512);
+emit_32(1084680359);
+emit_32(1131556897);
+emit_32(3279296528);
+emit_32(1089160463);
+emit_32(1131556897);
+emit_32(3279040545);
+emit_32(1092855687);
+emit_32(1131556897);
+emit_32(3278784496);
+emit_32(1095505229);
+emit_32(1131556897);
+emit_32(3278528512);
+emit_32(1097158309);
+emit_32(1131556897);
+emit_32(3278272528);
+emit_32(1099096077);
+emit_32(1131556897);
+emit_32(3278016545);
+emit_32(1099862691);
+emit_32(1131556897);
+emit_32(3277760496);
+emit_32(1100235198);
+emit_32(1131556897);
+emit_32(3277504512);
+emit_32(1100353529);
+emit_32(1131556897);
+emit_32(3277248528);
+emit_32(1100744753);
+emit_32(1131556897);
+emit_32(3276992545);
+emit_32(1100450208);
+emit_32(1131556897);
+emit_32(3276736496);
+emit_32(1099944218);
+emit_32(1131556897);
+emit_32(3276480512);
+emit_32(1099578632);
+emit_32(1131556897);
+emit_32(3276224528);
+emit_32(1098095211);
+emit_32(1131556897);
+emit_32(3275968545);
+emit_32(1096681416);
+emit_32(1131556897);
+emit_32(3275712496);
+emit_32(1095628436);
+emit_32(1131556897);
+emit_32(3275456512);
+emit_32(1094488739);
+emit_32(1131556897);
+emit_32(3275200528);
+emit_32(1095225678);
+emit_32(1131556897);
+emit_32(3274944545);
+emit_32(1095742416);
+emit_32(1131556897);
+emit_32(3274688496);
+emit_32(1096313995);
+emit_32(1131556897);
+emit_32(3274432512);
+emit_32(1096609379);
+emit_32(1131556897);
+emit_32(3274176528);
+emit_32(1096643458);
+emit_32(1131556897);
+emit_32(3273920545);
+emit_32(1096377644);
+emit_32(1131556897);
+emit_32(3273664496);
+emit_32(1096630875);
+emit_32(1131556897);
+emit_32(3273408512);
+emit_32(1096367787);
+emit_32(1131556897);
+emit_32(3273152528);
+emit_32(1095764646);
+emit_32(1131556897);
+emit_32(3272896545);
+emit_32(1095369648);
+emit_32(1131556897);
+emit_32(3272640496);
+emit_32(1095202610);
+emit_32(1131556897);
+emit_32(3272384512);
+emit_32(1095378141);
+emit_32(1131556897);
+emit_32(3272128528);
+emit_32(1094896425);
+emit_32(1131556897);
+emit_32(3271872545);
+emit_32(1094491570);
+emit_32(1131556897);
+emit_32(3271616496);
+emit_32(1094140717);
+emit_32(1131556897);
+emit_32(3271163904);
+emit_32(1093673576);
+emit_32(1131556897);
+emit_32(3270651937);
+emit_32(1092775680);
+emit_32(1131556897);
+emit_32(3270139970);
+emit_32(1093246176);
+emit_32(1131556897);
+emit_32(3269627871);
+emit_32(1092835135);
+emit_32(1131556897);
+emit_32(3269115904);
+emit_32(1093700839);
+emit_32(1131556897);
+emit_32(3268603937);
+emit_32(1093815868);
+emit_32(1131556897);
+emit_32(3268091970);
+emit_32(1095128475);
+emit_32(1131556897);
+emit_32(3267579911);
+emit_32(1096138044);
+emit_32(1131556897);
+emit_32(3267067904);
+emit_32(1097063727);
+emit_32(1131556897);
+emit_32(3266555911);
+emit_32(1096790468);
+emit_32(1131556897);
+emit_32(3266043904);
+emit_32(1096105433);
+emit_32(1131556897);
+emit_32(3265531911);
+emit_32(1094675490);
+emit_32(1131556897);
+emit_32(3265019904);
+emit_32(1094279548);
+emit_32(1131556897);
+emit_32(3264507911);
+emit_32(1094433060);
+emit_32(1131556897);
+emit_32(3263995904);
+emit_32(1094244316);
+emit_32(1131556897);
+emit_32(3263483911);
+emit_32(1095101212);
+emit_32(1131556897);
+emit_32(3262775296);
+emit_32(1093870184);
+emit_32(1131556897);
+emit_32(3261751309);
+emit_32(1092196416);
+emit_32(1131556897);
+emit_32(3260727296);
+emit_32(1090926800);
+emit_32(1131556897);
+emit_32(3259703309);
+emit_32(1089315547);
+emit_32(1131556897);
+emit_32(3258679296);
+emit_32(1090882864);
+emit_32(1131556897);
+emit_32(3257655309);
+emit_32(1092302982);
+emit_32(1131556897);
+emit_32(3256631296);
+emit_32(1091679478);
+emit_32(1131556897);
+emit_32(3255607309);
+emit_32(1090777587);
+emit_32(1131556897);
+emit_32(3254386688);
+emit_32(1090588833);
+emit_32(1131556897);
+emit_32(3252338714);
+emit_32(1088391584);
+emit_32(1131556897);
+emit_32(3250290688);
+emit_32(1088187762);
+emit_32(1131556897);
+emit_32(3248242714);
+emit_32(1086074735);
+emit_32(1131556897);
+emit_32(3245998080);
+emit_32(1083035311);
+emit_32(1131556897);
+emit_32(3241902132);
+emit_32(1080697784);
+emit_32(1131556897);
+emit_32(3237609472);
+emit_32(1077335797);
+emit_32(1131556897);
+emit_32(3229220864);
+emit_32(1072342604);
+emit_32(1131556897);
+emit_32(0);
+emit_32(1073908380);
+emit_32(1131556897);
+emit_32(1081737216);
+emit_32(1074643096);
+emit_32(1131556897);
+emit_32(3279552512);
+emit_32(1085160041);
+emit_32(1131300848);
+emit_32(3279296528);
+emit_32(1090327885);
+emit_32(1131300848);
+emit_32(3279040545);
+emit_32(1093025976);
+emit_32(1131300848);
+emit_32(3278784496);
+emit_32(1095630848);
+emit_32(1131300848);
+emit_32(3278528512);
+emit_32(1097676095);
+emit_32(1131300848);
+emit_32(3278272528);
+emit_32(1099190973);
+emit_32(1131300848);
+emit_32(3278016545);
+emit_32(1099857081);
+emit_32(1131300848);
+emit_32(3277760496);
+emit_32(1100491260);
+emit_32(1131300848);
+emit_32(3277504512);
+emit_32(1100352848);
+emit_32(1131300848);
+emit_32(3277248528);
+emit_32(1100472753);
+emit_32(1131300848);
+emit_32(3276992545);
+emit_32(1100152989);
+emit_32(1131300848);
+emit_32(3276736496);
+emit_32(1099265684);
+emit_32(1131300848);
+emit_32(3276480512);
+emit_32(1098708314);
+emit_32(1131300848);
+emit_32(3276224528);
+emit_32(1096067580);
+emit_32(1131300848);
+emit_32(3275968545);
+emit_32(1096230633);
+emit_32(1131300848);
+emit_32(3275712496);
+emit_32(1096388025);
+emit_32(1131300848);
+emit_32(3275456512);
+emit_32(1094867799);
+emit_32(1131300848);
+emit_32(3275200528);
+emit_32(1096132172);
+emit_32(1131300848);
+emit_32(3274944545);
+emit_32(1097306682);
+emit_32(1131300848);
+emit_32(3274688496);
+emit_32(1097887069);
+emit_32(1131300848);
+emit_32(3274432512);
+emit_32(1097633838);
+emit_32(1131300848);
+emit_32(3274176528);
+emit_32(1098457389);
+emit_32(1131300848);
+emit_32(3273920545);
+emit_32(1097090466);
+emit_32(1131300848);
+emit_32(3273664496);
+emit_32(1096891446);
+emit_32(1131300848);
+emit_32(3273408512);
+emit_32(1095233962);
+emit_32(1131300848);
+emit_32(3273152528);
+emit_32(1094867799);
+emit_32(1131300848);
+emit_32(3272896545);
+emit_32(1094576295);
+emit_32(1131300848);
+emit_32(3272640496);
+emit_32(1093957845);
+emit_32(1131300848);
+emit_32(3272384512);
+emit_32(1093473193);
+emit_32(1131300848);
+emit_32(3272128528);
+emit_32(1093446664);
+emit_32(1131300848);
+emit_32(3271872545);
+emit_32(1093505489);
+emit_32(1131300848);
+emit_32(3271616496);
+emit_32(1092573494);
+emit_32(1131300848);
+emit_32(3271163904);
+emit_32(1092718533);
+emit_32(1131300848);
+emit_32(3270651937);
+emit_32(1091299642);
+emit_32(1131300848);
+emit_32(3270139970);
+emit_32(1091752270);
+emit_32(1131300848);
+emit_32(3269627871);
+emit_32(1092863027);
+emit_32(1131300848);
+emit_32(3269115904);
+emit_32(1093352607);
+emit_32(1131300848);
+emit_32(3268603937);
+emit_32(1094334389);
+emit_32(1131300848);
+emit_32(3268091970);
+emit_32(1095530080);
+emit_32(1131300848);
+emit_32(3267579911);
+emit_32(1096764359);
+emit_32(1131300848);
+emit_32(3267067904);
+emit_32(1096925944);
+emit_32(1131300848);
+emit_32(3266555911);
+emit_32(1096040107);
+emit_32(1131300848);
+emit_32(3266043904);
+emit_32(1094881536);
+emit_32(1131300848);
+emit_32(3265531911);
+emit_32(1094389753);
+emit_32(1131300848);
+emit_32(3265019904);
+emit_32(1094053370);
+emit_32(1131300848);
+emit_32(3264507911);
+emit_32(1094865283);
+emit_32(1131300848);
+emit_32(3263995904);
+emit_32(1095186461);
+emit_32(1131300848);
+emit_32(3263483911);
+emit_32(1095388208);
+emit_32(1131300848);
+emit_32(3262775296);
+emit_32(1094366475);
+emit_32(1131300848);
+emit_32(3261751309);
+emit_32(1093486930);
+emit_32(1131300848);
+emit_32(3260727296);
+emit_32(1091443444);
+emit_32(1131300848);
+emit_32(3259703309);
+emit_32(1090412169);
+emit_32(1131300848);
+emit_32(3258679296);
+emit_32(1091017376);
+emit_32(1131300848);
+emit_32(3257655309);
+emit_32(1091659503);
+emit_32(1131300848);
+emit_32(3256631296);
+emit_32(1091788813);
+emit_32(1131300848);
+emit_32(3255607309);
+emit_32(1091703155);
+emit_32(1131300848);
+emit_32(3254386688);
+emit_32(1091097539);
+emit_32(1131300848);
+emit_32(3252338714);
+emit_32(1090228501);
+emit_32(1131300848);
+emit_32(3250290688);
+emit_32(1089127831);
+emit_32(1131300848);
+emit_32(3248242714);
+emit_32(1087112238);
+emit_32(1131300848);
+emit_32(3245998080);
+emit_32(1085471698);
+emit_32(1131300848);
+emit_32(3241902132);
+emit_32(1083846552);
+emit_32(1131300848);
+emit_32(3237609472);
+emit_32(1082879010);
+emit_32(1131300848);
+emit_32(3229220864);
+emit_32(1080627152);
+emit_32(1131300848);
+emit_32(0);
+emit_32(1080885311);
+emit_32(1131300848);
+emit_32(1081737216);
+emit_32(1078120510);
+emit_32(1131300848);
+emit_32(3279552512);
+emit_32(1086174748);
+emit_32(1131044864);
+emit_32(3279296528);
+emit_32(1090628574);
+emit_32(1131044864);
+emit_32(3279040545);
+emit_32(1092984871);
+emit_32(1131044864);
+emit_32(3278784496);
+emit_32(1095235954);
+emit_32(1131044864);
+emit_32(3278528512);
+emit_32(1097962986);
+emit_32(1131044864);
+emit_32(3278272528);
+emit_32(1098907753);
+emit_32(1131044864);
+emit_32(3278016545);
+emit_32(1099567464);
+emit_32(1131044864);
+emit_32(3277760496);
+emit_32(1100053322);
+emit_32(1131044864);
+emit_32(3277504512);
+emit_32(1100365745);
+emit_32(1131044864);
+emit_32(3277248528);
+emit_32(1100199389);
+emit_32(1131044864);
+emit_32(3276992545);
+emit_32(1100122476);
+emit_32(1131044864);
+emit_32(3276736496);
+emit_32(1098964533);
+emit_32(1131044864);
+emit_32(3276480512);
+emit_32(1098061028);
+emit_32(1131044864);
+emit_32(3276224528);
+emit_32(1096998401);
+emit_32(1131044864);
+emit_32(3275968545);
+emit_32(1096347969);
+emit_32(1131044864);
+emit_32(3275712496);
+emit_32(1096743597);
+emit_32(1131044864);
+emit_32(3275456512);
+emit_32(1096079639);
+emit_32(1131044864);
+emit_32(3275200528);
+emit_32(1096454190);
+emit_32(1131044864);
+emit_32(3274944545);
+emit_32(1097972947);
+emit_32(1131044864);
+emit_32(3274688496);
+emit_32(1098482241);
+emit_32(1131044864);
+emit_32(3274432512);
+emit_32(1098243165);
+emit_32(1131044864);
+emit_32(3274176528);
+emit_32(1097818073);
+emit_32(1131044864);
+emit_32(3273920545);
+emit_32(1097259811);
+emit_32(1131044864);
+emit_32(3273664496);
+emit_32(1096971138);
+emit_32(1131044864);
+emit_32(3273408512);
+emit_32(1095776495);
+emit_32(1131044864);
+emit_32(3273152528);
+emit_32(1094346657);
+emit_32(1131044864);
+emit_32(3272896545);
+emit_32(1094305658);
+emit_32(1131044864);
+emit_32(3272640496);
+emit_32(1093779797);
+emit_32(1131044864);
+emit_32(3272384512);
+emit_32(1093535059);
+emit_32(1131044864);
+emit_32(3272128528);
+emit_32(1092859566);
+emit_32(1131044864);
+emit_32(3271872545);
+emit_32(1092315471);
+emit_32(1131044864);
+emit_32(3271616496);
+emit_32(1091613628);
+emit_32(1131044864);
+emit_32(3271163904);
+emit_32(1092129045);
+emit_32(1131044864);
+emit_32(3270651937);
+emit_32(1090623961);
+emit_32(1131044864);
+emit_32(3270139970);
+emit_32(1091745329);
+emit_32(1131044864);
+emit_32(3269627871);
+emit_32(1092278802);
+emit_32(1131044864);
+emit_32(3269115904);
+emit_32(1092897106);
+emit_32(1131044864);
+emit_32(3268603937);
+emit_32(1093630060);
+emit_32(1131044864);
+emit_32(3268091970);
+emit_32(1095021835);
+emit_32(1131044864);
+emit_32(3267579911);
+emit_32(1096071460);
+emit_32(1131044864);
+emit_32(3267067904);
+emit_32(1095859647);
+emit_32(1131044864);
+emit_32(3266555911);
+emit_32(1095186671);
+emit_32(1131044864);
+emit_32(3266043904);
+emit_32(1094964478);
+emit_32(1131044864);
+emit_32(3265531911);
+emit_32(1094463993);
+emit_32(1131044864);
+emit_32(3265019904);
+emit_32(1094678322);
+emit_32(1131044864);
+emit_32(3264507911);
+emit_32(1094959340);
+emit_32(1131044864);
+emit_32(3263995904);
+emit_32(1095934725);
+emit_32(1131044864);
+emit_32(3263483911);
+emit_32(1096292499);
+emit_32(1131044864);
+emit_32(3262775296);
+emit_32(1095947833);
+emit_32(1131044864);
+emit_32(3261751309);
+emit_32(1094626102);
+emit_32(1131044864);
+emit_32(3260727296);
+emit_32(1092638002);
+emit_32(1131044864);
+emit_32(3259703309);
+emit_32(1091654302);
+emit_32(1131044864);
+emit_32(3258679296);
+emit_32(1090981043);
+emit_32(1131044864);
+emit_32(3257655309);
+emit_32(1091856132);
+emit_32(1131044864);
+emit_32(3256631296);
+emit_32(1092849815);
+emit_32(1131044864);
+emit_32(3255607309);
+emit_32(1092381563);
+emit_32(1131044864);
+emit_32(3254386688);
+emit_32(1091755762);
+emit_32(1131044864);
+emit_32(3252338714);
+emit_32(1091392210);
+emit_32(1131044864);
+emit_32(3250290688);
+emit_32(1090522762);
+emit_32(1131044864);
+emit_32(3248242714);
+emit_32(1089201336);
+emit_32(1131044864);
+emit_32(3245998080);
+emit_32(1088158150);
+emit_32(1131044864);
+emit_32(3241902132);
+emit_32(1086827927);
+emit_32(1131044864);
+emit_32(3237609472);
+emit_32(1085289603);
+emit_32(1131044864);
+emit_32(3229220864);
+emit_32(1084371008);
+emit_32(1131044864);
+emit_32(0);
+emit_32(1084371155);
+emit_32(1131044864);
+emit_32(1081737216);
+emit_32(1084629524);
+emit_32(1131044864);
+emit_32(3279552512);
+emit_32(1084191198);
+emit_32(1130788880);
+emit_32(3279296528);
+emit_32(1090263187);
+emit_32(1130788880);
+emit_32(3279040545);
+emit_32(1093579624);
+emit_32(1130788880);
+emit_32(3278784496);
+emit_32(1095609772);
+emit_32(1130788880);
+emit_32(3278528512);
+emit_32(1097395392);
+emit_32(1130788880);
+emit_32(3278272528);
+emit_32(1098942775);
+emit_32(1130788880);
+emit_32(3278016545);
+emit_32(1099952973);
+emit_32(1130788880);
+emit_32(3277760496);
+emit_32(1100137051);
+emit_32(1130788880);
+emit_32(3277504512);
+emit_32(1100188117);
+emit_32(1130788880);
+emit_32(3277248528);
+emit_32(1100449631);
+emit_32(1130788880);
+emit_32(3276992545);
+emit_32(1099596091);
+emit_32(1130788880);
+emit_32(3276736496);
+emit_32(1098204263);
+emit_32(1130788880);
+emit_32(3276480512);
+emit_32(1098412510);
+emit_32(1130788880);
+emit_32(3276224528);
+emit_32(1097801505);
+emit_32(1130788880);
+emit_32(3275968545);
+emit_32(1096603507);
+emit_32(1130788880);
+emit_32(3275712496);
+emit_32(1095928224);
+emit_32(1130788880);
+emit_32(3275456512);
+emit_32(1096222035);
+emit_32(1130788880);
+emit_32(3275200528);
+emit_32(1097042546);
+emit_32(1130788880);
+emit_32(3274944545);
+emit_32(1097761554);
+emit_32(1130788880);
+emit_32(3274688496);
+emit_32(1098099720);
+emit_32(1130788880);
+emit_32(3274432512);
+emit_32(1097722862);
+emit_32(1130788880);
+emit_32(3274176528);
+emit_32(1096956563);
+emit_32(1130788880);
+emit_32(3273920545);
+emit_32(1096582850);
+emit_32(1130788880);
+emit_32(3273664496);
+emit_32(1095826303);
+emit_32(1130788880);
+emit_32(3273408512);
+emit_32(1095071538);
+emit_32(1130788880);
+emit_32(3273152528);
+emit_32(1094227434);
+emit_32(1130788880);
+emit_32(3272896545);
+emit_32(1094210132);
+emit_32(1130788880);
+emit_32(3272640496);
+emit_32(1093761027);
+emit_32(1130788880);
+emit_32(3272384512);
+emit_32(1093810520);
+emit_32(1130788880);
+emit_32(3272128528);
+emit_32(1092656772);
+emit_32(1130788880);
+emit_32(3271872545);
+emit_32(1091138738);
+emit_32(1130788880);
+emit_32(3271616496);
+emit_32(1089927035);
+emit_32(1130788880);
+emit_32(3271163904);
+emit_32(1089350360);
+emit_32(1130788880);
+emit_32(3270651937);
+emit_32(1090698210);
+emit_32(1130788880);
+emit_32(3270139970);
+emit_32(1090875577);
+emit_32(1130788880);
+emit_32(3269627871);
+emit_32(1091800075);
+emit_32(1130788880);
+emit_32(3269115904);
+emit_32(1092846354);
+emit_32(1130788880);
+emit_32(3268603937);
+emit_32(1094213173);
+emit_32(1130788880);
+emit_32(3268091970);
+emit_32(1095490444);
+emit_32(1130788880);
+emit_32(3267579911);
+emit_32(1095492331);
+emit_32(1130788880);
+emit_32(3267067904);
+emit_32(1095128475);
+emit_32(1130788880);
+emit_32(3266555911);
+emit_32(1094457387);
+emit_32(1130788880);
+emit_32(3266043904);
+emit_32(1093000915);
+emit_32(1130788880);
+emit_32(3265531911);
+emit_32(1092702700);
+emit_32(1130788880);
+emit_32(3265019904);
+emit_32(1094131489);
+emit_32(1130788880);
+emit_32(3264507911);
+emit_32(1094959759);
+emit_32(1130788880);
+emit_32(3263995904);
+emit_32(1096392743);
+emit_32(1130788880);
+emit_32(3263483911);
+emit_32(1097205809);
+emit_32(1130788880);
+emit_32(3262775296);
+emit_32(1096775893);
+emit_32(1130788880);
+emit_32(3261751309);
+emit_32(1095617217);
+emit_32(1130788880);
+emit_32(3260727296);
+emit_32(1094159591);
+emit_32(1130788880);
+emit_32(3259703309);
+emit_32(1092609701);
+emit_32(1130788880);
+emit_32(3258679296);
+emit_32(1091241058);
+emit_32(1130788880);
+emit_32(3257655309);
+emit_32(1092023201);
+emit_32(1130788880);
+emit_32(3256631296);
+emit_32(1093109862);
+emit_32(1130788880);
+emit_32(3255607309);
+emit_32(1093719399);
+emit_32(1130788880);
+emit_32(3254386688);
+emit_32(1093231077);
+emit_32(1130788880);
+emit_32(3252338714);
+emit_32(1093489761);
+emit_32(1130788880);
+emit_32(3250290688);
+emit_32(1092575423);
+emit_32(1130788880);
+emit_32(3248242714);
+emit_32(1091158975);
+emit_32(1130788880);
+emit_32(3245998080);
+emit_32(1089311227);
+emit_32(1130788880);
+emit_32(3241902132);
+emit_32(1087230748);
+emit_32(1130788880);
+emit_32(3237609472);
+emit_32(1087094936);
+emit_32(1130788880);
+emit_32(3229220864);
+emit_32(1087427439);
+emit_32(1130788880);
+emit_32(0);
+emit_32(1086716610);
+emit_32(1130788880);
+emit_32(1081737216);
+emit_32(1086083564);
+emit_32(1130788880);
+emit_32(3279552512);
+emit_32(1084064572);
+emit_32(1130532897);
+emit_32(3279296528);
+emit_32(1091219604);
+emit_32(1130532897);
+emit_32(3279040545);
+emit_32(1094461581);
+emit_32(1130532897);
+emit_32(3278784496);
+emit_32(1096451988);
+emit_32(1130532897);
+emit_32(3278528512);
+emit_32(1098531104);
+emit_32(1130532897);
+emit_32(3278272528);
+emit_32(1099322203);
+emit_32(1130532897);
+emit_32(3278016545);
+emit_32(1099673423);
+emit_32(1130532897);
+emit_32(3277760496);
+emit_32(1100210032);
+emit_32(1130532897);
+emit_32(3277504512);
+emit_32(1100192468);
+emit_32(1130532897);
+emit_32(3277248528);
+emit_32(1099743153);
+emit_32(1130532897);
+emit_32(3276992545);
+emit_32(1099219128);
+emit_32(1130532897);
+emit_32(3276736496);
+emit_32(1097733767);
+emit_32(1130532897);
+emit_32(3276480512);
+emit_32(1098251554);
+emit_32(1130532897);
+emit_32(3276224528);
+emit_32(1098330197);
+emit_32(1130532897);
+emit_32(3275968545);
+emit_32(1097354078);
+emit_32(1130532897);
+emit_32(3275712496);
+emit_32(1095686947);
+emit_32(1130532897);
+emit_32(3275456512);
+emit_32(1096170655);
+emit_32(1130532897);
+emit_32(3275200528);
+emit_32(1096848035);
+emit_32(1130532897);
+emit_32(3274944545);
+emit_32(1098161481);
+emit_32(1130532897);
+emit_32(3274688496);
+emit_32(1097829712);
+emit_32(1130532897);
+emit_32(3274432512);
+emit_32(1097057436);
+emit_32(1130532897);
+emit_32(3274176528);
+emit_32(1096473484);
+emit_32(1130532897);
+emit_32(3273920545);
+emit_32(1095842765);
+emit_32(1130532897);
+emit_32(3273664496);
+emit_32(1095539517);
+emit_32(1130532897);
+emit_32(3273408512);
+emit_32(1095213200);
+emit_32(1130532897);
+emit_32(3273152528);
+emit_32(1094205414);
+emit_32(1130532897);
+emit_32(3272896545);
+emit_32(1093845647);
+emit_32(1130532897);
+emit_32(3272640496);
+emit_32(1093546174);
+emit_32(1130532897);
+emit_32(3272384512);
+emit_32(1092377452);
+emit_32(1130532897);
+emit_32(3272128528);
+emit_32(1091313106);
+emit_32(1130532897);
+emit_32(3271872545);
+emit_32(1087954328);
+emit_32(1130532897);
+emit_32(3271616496);
+emit_32(1087060480);
+emit_32(1130532897);
+emit_32(3271163904);
+emit_32(1087580678);
+emit_32(1130532897);
+emit_32(3270651937);
+emit_32(1090126768);
+emit_32(1130532897);
+emit_32(3270139970);
+emit_32(1090624715);
+emit_32(1130532897);
+emit_32(3269627871);
+emit_32(1091647664);
+emit_32(1130532897);
+emit_32(3269115904);
+emit_32(1092856211);
+emit_32(1130532897);
+emit_32(3268603937);
+emit_32(1094224917);
+emit_32(1130532897);
+emit_32(3268091970);
+emit_32(1095671952);
+emit_32(1130532897);
+emit_32(3267579911);
+emit_32(1095628646);
+emit_32(1130532897);
+emit_32(3267067904);
+emit_32(1095567829);
+emit_32(1130532897);
+emit_32(3266555911);
+emit_32(1093630270);
+emit_32(1130532897);
+emit_32(3266043904);
+emit_32(1092684245);
+emit_32(1130532897);
+emit_32(3265531911);
+emit_32(1091861343);
+emit_32(1130532897);
+emit_32(3265019904);
+emit_32(1092755023);
+emit_32(1130532897);
+emit_32(3264507911);
+emit_32(1094570528);
+emit_32(1130532897);
+emit_32(3263995904);
+emit_32(1095357275);
+emit_32(1130532897);
+emit_32(3263483911);
+emit_32(1096480299);
+emit_32(1130532897);
+emit_32(3262775296);
+emit_32(1096746428);
+emit_32(1130532897);
+emit_32(3261751309);
+emit_32(1096329514);
+emit_32(1130532897);
+emit_32(3260727296);
+emit_32(1095223896);
+emit_32(1130532897);
+emit_32(3259703309);
+emit_32(1093955643);
+emit_32(1130532897);
+emit_32(3258679296);
+emit_32(1093246281);
+emit_32(1130532897);
+emit_32(3257655309);
+emit_32(1094172174);
+emit_32(1130532897);
+emit_32(3256631296);
+emit_32(1095280414);
+emit_32(1130532897);
+emit_32(3255607309);
+emit_32(1095624976);
+emit_32(1130532897);
+emit_32(3254386688);
+emit_32(1095264161);
+emit_32(1130532897);
+emit_32(3252338714);
+emit_32(1094911210);
+emit_32(1130532897);
+emit_32(3250290688);
+emit_32(1094226385);
+emit_32(1130532897);
+emit_32(3248242714);
+emit_32(1092124945);
+emit_32(1130532897);
+emit_32(3245998080);
+emit_32(1090831631);
+emit_32(1130532897);
+emit_32(3241902132);
+emit_32(1089226670);
+emit_32(1130532897);
+emit_32(3237609472);
+emit_32(1089629994);
+emit_32(1130532897);
+emit_32(3229220864);
+emit_32(1089284992);
+emit_32(1130532897);
+emit_32(0);
+emit_32(1088387495);
+emit_32(1130532897);
+emit_32(1081737216);
+emit_32(1088205504);
+emit_32(1130532897);
+emit_32(3279552512);
+emit_32(1083530931);
+emit_32(1130276848);
+emit_32(3279296528);
+emit_32(1090306850);
+emit_32(1130276848);
+emit_32(3279040545);
+emit_32(1093521008);
+emit_32(1130276848);
+emit_32(3278784496);
+emit_32(1096939995);
+emit_32(1130276848);
+emit_32(3278528512);
+emit_32(1098488322);
+emit_32(1130276848);
+emit_32(3278272528);
+emit_32(1099450129);
+emit_32(1130276848);
+emit_32(3278016545);
+emit_32(1099687369);
+emit_32(1130276848);
+emit_32(3277760496);
+emit_32(1099754740);
+emit_32(1130276848);
+emit_32(3277504512);
+emit_32(1099338246);
+emit_32(1130276848);
+emit_32(3277248528);
+emit_32(1099121348);
+emit_32(1130276848);
+emit_32(3276992545);
+emit_32(1097937191);
+emit_32(1130276848);
+emit_32(3276736496);
+emit_32(1097116051);
+emit_32(1130276848);
+emit_32(3276480512);
+emit_32(1097449498);
+emit_32(1130276848);
+emit_32(3276224528);
+emit_32(1097296721);
+emit_32(1130276848);
+emit_32(3275968545);
+emit_32(1096895116);
+emit_32(1130276848);
+emit_32(3275712496);
+emit_32(1095191390);
+emit_32(1130276848);
+emit_32(3275456512);
+emit_32(1095800403);
+emit_32(1130276848);
+emit_32(3275200528);
+emit_32(1096784282);
+emit_32(1130276848);
+emit_32(3274944545);
+emit_32(1097651454);
+emit_32(1130276848);
+emit_32(3274688496);
+emit_32(1097454846);
+emit_32(1130276848);
+emit_32(3274432512);
+emit_32(1096258211);
+emit_32(1130276848);
+emit_32(3274176528);
+emit_32(1096116863);
+emit_32(1130276848);
+emit_32(3273920545);
+emit_32(1096517943);
+emit_32(1130276848);
+emit_32(3273664496);
+emit_32(1095318897);
+emit_32(1130276848);
+emit_32(3273408512);
+emit_32(1094673498);
+emit_32(1130276848);
+emit_32(3273152528);
+emit_32(1093918733);
+emit_32(1130276848);
+emit_32(3272896545);
+emit_32(1093483364);
+emit_32(1130276848);
+emit_32(3272640496);
+emit_32(1092914826);
+emit_32(1130276848);
+emit_32(3272384512);
+emit_32(1091000567);
+emit_32(1130276848);
+emit_32(3272128528);
+emit_32(1089935654);
+emit_32(1130276848);
+emit_32(3271872545);
+emit_32(1086818510);
+emit_32(1130276848);
+emit_32(3271616496);
+emit_32(1085690389);
+emit_32(1130276848);
+emit_32(3271163904);
+emit_32(1086952309);
+emit_32(1130276848);
+emit_32(3270651937);
+emit_32(1088839431);
+emit_32(1130276848);
+emit_32(3270139970);
+emit_32(1089612819);
+emit_32(1130276848);
+emit_32(3269627871);
+emit_32(1091440686);
+emit_32(1130276848);
+emit_32(3269115904);
+emit_32(1092535473);
+emit_32(1130276848);
+emit_32(3268603937);
+emit_32(1092891758);
+emit_32(1130276848);
+emit_32(3268091970);
+emit_32(1094112510);
+emit_32(1130276848);
+emit_32(3267579911);
+emit_32(1095020472);
+emit_32(1130276848);
+emit_32(3267067904);
+emit_32(1094302617);
+emit_32(1130276848);
+emit_32(3266555911);
+emit_32(1094287622);
+emit_32(1130276848);
+emit_32(3266043904);
+emit_32(1092792667);
+emit_32(1130276848);
+emit_32(3265531911);
+emit_32(1093051561);
+emit_32(1130276848);
+emit_32(3265019904);
+emit_32(1093418353);
+emit_32(1130276848);
+emit_32(3264507911);
+emit_32(1094221667);
+emit_32(1130276848);
+emit_32(3263995904);
+emit_32(1095632001);
+emit_32(1130276848);
+emit_32(3263483911);
+emit_32(1097732614);
+emit_32(1130276848);
+emit_32(3262775296);
+emit_32(1098628832);
+emit_32(1130276848);
+emit_32(3261751309);
+emit_32(1097948306);
+emit_32(1130276848);
+emit_32(3260727296);
+emit_32(1097305319);
+emit_32(1130276848);
+emit_32(3259703309);
+emit_32(1096485333);
+emit_32(1130276848);
+emit_32(3258679296);
+emit_32(1095850210);
+emit_32(1130276848);
+emit_32(3257655309);
+emit_32(1095872964);
+emit_32(1130276848);
+emit_32(3256631296);
+emit_32(1096804414);
+emit_32(1130276848);
+emit_32(3255607309);
+emit_32(1096692741);
+emit_32(1130276848);
+emit_32(3254386688);
+emit_32(1096946077);
+emit_32(1130276848);
+emit_32(3252338714);
+emit_32(1096420006);
+emit_32(1130276848);
+emit_32(3250290688);
+emit_32(1094944660);
+emit_32(1130276848);
+emit_32(3248242714);
+emit_32(1093505489);
+emit_32(1130276848);
+emit_32(3245998080);
+emit_32(1092313867);
+emit_32(1130276848);
+emit_32(3241902132);
+emit_32(1091062559);
+emit_32(1130276848);
+emit_32(3237609472);
+emit_32(1091612432);
+emit_32(1130276848);
+emit_32(3229220864);
+emit_32(1091011671);
+emit_32(1130276848);
+emit_32(0);
+emit_32(1090792142);
+emit_32(1130276848);
+emit_32(1081737216);
+emit_32(1088030748);
+emit_32(1130276848);
+emit_32(3279552512);
+emit_32(1084583764);
+emit_32(1130020864);
+emit_32(3279296528);
+emit_32(1087682243);
+emit_32(1130020864);
+emit_32(3279040545);
+emit_32(1092094075);
+emit_32(1130020864);
+emit_32(3278784496);
+emit_32(1095249691);
+emit_32(1130020864);
+emit_32(3278528512);
+emit_32(1098698877);
+emit_32(1130020864);
+emit_32(3278272528);
+emit_32(1099753796);
+emit_32(1130020864);
+emit_32(3278016545);
+emit_32(1100023333);
+emit_32(1130020864);
+emit_32(3277760496);
+emit_32(1099595042);
+emit_32(1130020864);
+emit_32(3277504512);
+emit_32(1099115371);
+emit_32(1130020864);
+emit_32(3277248528);
+emit_32(1098920493);
+emit_32(1130020864);
+emit_32(3276992545);
+emit_32(1097370855);
+emit_32(1130020864);
+emit_32(3276736496);
+emit_32(1096229480);
+emit_32(1130020864);
+emit_32(3276480512);
+emit_32(1096179987);
+emit_32(1130020864);
+emit_32(3276224528);
+emit_32(1096332765);
+emit_32(1130020864);
+emit_32(3275968545);
+emit_32(1094920228);
+emit_32(1130020864);
+emit_32(3275712496);
+emit_32(1094538966);
+emit_32(1130020864);
+emit_32(3275456512);
+emit_32(1096079324);
+emit_32(1130020864);
+emit_32(3275200528);
+emit_32(1096062022);
+emit_32(1130020864);
+emit_32(3274944545);
+emit_32(1097415524);
+emit_32(1130020864);
+emit_32(3274688496);
+emit_32(1097262642);
+emit_32(1130020864);
+emit_32(3274432512);
+emit_32(1096083309);
+emit_32(1130020864);
+emit_32(3274176528);
+emit_32(1097096338);
+emit_32(1130020864);
+emit_32(3273920545);
+emit_32(1097389520);
+emit_32(1130020864);
+emit_32(3273664496);
+emit_32(1096628987);
+emit_32(1130020864);
+emit_32(3273408512);
+emit_32(1095157311);
+emit_32(1130020864);
+emit_32(3273152528);
+emit_32(1093144150);
+emit_32(1130020864);
+emit_32(3272896545);
+emit_32(1092252305);
+emit_32(1130020864);
+emit_32(3272640496);
+emit_32(1090906174);
+emit_32(1130020864);
+emit_32(3272384512);
+emit_32(1089256785);
+emit_32(1130020864);
+emit_32(3272128528);
+emit_32(1086933413);
+emit_32(1130020864);
+emit_32(3271872545);
+emit_32(1085005690);
+emit_32(1130020864);
+emit_32(3271616496);
+emit_32(1084837205);
+emit_32(1130020864);
+emit_32(3271163904);
+emit_32(1085479500);
+emit_32(1130020864);
+emit_32(3270651937);
+emit_32(1086647781);
+emit_32(1130020864);
+emit_32(3270139970);
+emit_32(1088754391);
+emit_32(1130020864);
+emit_32(3269627871);
+emit_32(1090605474);
+emit_32(1130020864);
+emit_32(3269115904);
+emit_32(1091545984);
+emit_32(1130020864);
+emit_32(3268603937);
+emit_32(1092272018);
+emit_32(1130020864);
+emit_32(3268091970);
+emit_32(1093427580);
+emit_32(1130020864);
+emit_32(3267579911);
+emit_32(1094111042);
+emit_32(1130020864);
+emit_32(3267067904);
+emit_32(1094388915);
+emit_32(1130020864);
+emit_32(3266555911);
+emit_32(1094139458);
+emit_32(1130020864);
+emit_32(3266043904);
+emit_32(1094235718);
+emit_32(1130020864);
+emit_32(3265531911);
+emit_32(1094648752);
+emit_32(1130020864);
+emit_32(3265019904);
+emit_32(1095187300);
+emit_32(1130020864);
+emit_32(3264507911);
+emit_32(1096097674);
+emit_32(1130020864);
+emit_32(3263995904);
+emit_32(1097057016);
+emit_32(1130020864);
+emit_32(3263483911);
+emit_32(1097881092);
+emit_32(1130020864);
+emit_32(3262775296);
+emit_32(1098962856);
+emit_32(1130020864);
+emit_32(3261751309);
+emit_32(1098940835);
+emit_32(1130020864);
+emit_32(3260727296);
+emit_32(1098504366);
+emit_32(1130020864);
+emit_32(3259703309);
+emit_32(1098210030);
+emit_32(1130020864);
+emit_32(3258679296);
+emit_32(1097752537);
+emit_32(1130020864);
+emit_32(3257655309);
+emit_32(1096972082);
+emit_32(1130020864);
+emit_32(3256631296);
+emit_32(1097685323);
+emit_32(1130020864);
+emit_32(3255607309);
+emit_32(1097690566);
+emit_32(1130020864);
+emit_32(3254386688);
+emit_32(1097717514);
+emit_32(1130020864);
+emit_32(3252338714);
+emit_32(1096801373);
+emit_32(1130020864);
+emit_32(3250290688);
+emit_32(1096574462);
+emit_32(1130020864);
+emit_32(3248242714);
+emit_32(1095368389);
+emit_32(1130020864);
+emit_32(3245998080);
+emit_32(1094028204);
+emit_32(1130020864);
+emit_32(3241902132);
+emit_32(1093145513);
+emit_32(1130020864);
+emit_32(3237609472);
+emit_32(1092561058);
+emit_32(1130020864);
+emit_32(3229220864);
+emit_32(1091353465);
+emit_32(1130020864);
+emit_32(0);
+emit_32(1090850872);
+emit_32(1130020864);
+emit_32(1081737216);
+emit_32(1090545737);
+emit_32(1130020864);
+emit_32(3279552512);
+emit_32(1083020778);
+emit_32(1129764880);
+emit_32(3279296528);
+emit_32(1086653695);
+emit_32(1129764880);
+emit_32(3279040545);
+emit_32(1091034835);
+emit_32(1129764880);
+emit_32(3278784496);
+emit_32(1094988805);
+emit_32(1129764880);
+emit_32(3278528512);
+emit_32(1098825335);
+emit_32(1129764880);
+emit_32(3278272528);
+emit_32(1099793485);
+emit_32(1129764880);
+emit_32(3278016545);
+emit_32(1100052431);
+emit_32(1129764880);
+emit_32(3277760496);
+emit_32(1099921673);
+emit_32(1129764880);
+emit_32(3277504512);
+emit_32(1099421608);
+emit_32(1129764880);
+emit_32(3277248528);
+emit_32(1098552915);
+emit_32(1129764880);
+emit_32(3276992545);
+emit_32(1097228773);
+emit_32(1129764880);
+emit_32(3276736496);
+emit_32(1095528822);
+emit_32(1129764880);
+emit_32(3276480512);
+emit_32(1095513932);
+emit_32(1129764880);
+emit_32(3276224528);
+emit_32(1095608094);
+emit_32(1129764880);
+emit_32(3275968545);
+emit_32(1094888666);
+emit_32(1129764880);
+emit_32(3275712496);
+emit_32(1094960493);
+emit_32(1129764880);
+emit_32(3275456512);
+emit_32(1095322147);
+emit_32(1129764880);
+emit_32(3275200528);
+emit_32(1095300232);
+emit_32(1129764880);
+emit_32(3274944545);
+emit_32(1096422103);
+emit_32(1129764880);
+emit_32(3274688496);
+emit_32(1096640836);
+emit_32(1129764880);
+emit_32(3274432512);
+emit_32(1097230031);
+emit_32(1129764880);
+emit_32(3274176528);
+emit_32(1097125279);
+emit_32(1129764880);
+emit_32(3273920545);
+emit_32(1097162084);
+emit_32(1129764880);
+emit_32(3273664496);
+emit_32(1096846777);
+emit_32(1129764880);
+emit_32(3273408512);
+emit_32(1095743360);
+emit_32(1129764880);
+emit_32(3273152528);
+emit_32(1093469838);
+emit_32(1129764880);
+emit_32(3272896545);
+emit_32(1092165598);
+emit_32(1129764880);
+emit_32(3272640496);
+emit_32(1090712261);
+emit_32(1129764880);
+emit_32(3272384512);
+emit_32(1088210873);
+emit_32(1129764880);
+emit_32(3272128528);
+emit_32(1085889095);
+emit_32(1129764880);
+emit_32(3271872545);
+emit_32(1083392330);
+emit_32(1129764880);
+emit_32(3271616496);
+emit_32(1083388073);
+emit_32(1129764880);
+emit_32(3271163904);
+emit_32(1084653180);
+emit_32(1129764880);
+emit_32(3270651937);
+emit_32(1086692618);
+emit_32(1129764880);
+emit_32(3270139970);
+emit_32(1088701795);
+emit_32(1129764880);
+emit_32(3269627871);
+emit_32(1090628616);
+emit_32(1129764880);
+emit_32(3269115904);
+emit_32(1091284553);
+emit_32(1129764880);
+emit_32(3268603937);
+emit_32(1092579376);
+emit_32(1129764880);
+emit_32(3268091970);
+emit_32(1093773715);
+emit_32(1129764880);
+emit_32(3267579911);
+emit_32(1094376856);
+emit_32(1129764880);
+emit_32(3267067904);
+emit_32(1094634281);
+emit_32(1129764880);
+emit_32(3266555911);
+emit_32(1094720789);
+emit_32(1129764880);
+emit_32(3266043904);
+emit_32(1095562586);
+emit_32(1129764880);
+emit_32(3265531911);
+emit_32(1096146957);
+emit_32(1129764880);
+emit_32(3265019904);
+emit_32(1096371248);
+emit_32(1129764880);
+emit_32(3264507911);
+emit_32(1097603115);
+emit_32(1129764880);
+emit_32(3263995904);
+emit_32(1098307233);
+emit_32(1129764880);
+emit_32(3263483911);
+emit_32(1098369729);
+emit_32(1129764880);
+emit_32(3262775296);
+emit_32(1099083075);
+emit_32(1129764880);
+emit_32(3261751309);
+emit_32(1099129946);
+emit_32(1129764880);
+emit_32(3260727296);
+emit_32(1099485099);
+emit_32(1129764880);
+emit_32(3259703309);
+emit_32(1099764335);
+emit_32(1129764880);
+emit_32(3258679296);
+emit_32(1099176713);
+emit_32(1129764880);
+emit_32(3257655309);
+emit_32(1098040266);
+emit_32(1129764880);
+emit_32(3256631296);
+emit_32(1098351798);
+emit_32(1129764880);
+emit_32(3255607309);
+emit_32(1098988388);
+emit_32(1129764880);
+emit_32(3254386688);
+emit_32(1098753193);
+emit_32(1129764880);
+emit_32(3252338714);
+emit_32(1098284479);
+emit_32(1129764880);
+emit_32(3250290688);
+emit_32(1097489554);
+emit_32(1129764880);
+emit_32(3248242714);
+emit_32(1095940702);
+emit_32(1129764880);
+emit_32(3245998080);
+emit_32(1094687549);
+emit_32(1129764880);
+emit_32(3241902132);
+emit_32(1094446272);
+emit_32(1129764880);
+emit_32(3237609472);
+emit_32(1093495318);
+emit_32(1129764880);
+emit_32(3229220864);
+emit_32(1092748208);
+emit_32(1129764880);
+emit_32(0);
+emit_32(1092091118);
+emit_32(1129764880);
+emit_32(1081737216);
+emit_32(1091835139);
+emit_32(1129764880);
+emit_32(3279552512);
+emit_32(1080463993);
+emit_32(1129508897);
+emit_32(3279296528);
+emit_32(1085016910);
+emit_32(1129508897);
+emit_32(3279040545);
+emit_32(1089825176);
+emit_32(1129508897);
+emit_32(3278784496);
+emit_32(1094698979);
+emit_32(1129508897);
+emit_32(3278528512);
+emit_32(1097809265);
+emit_32(1129508897);
+emit_32(3278272528);
+emit_32(1099171575);
+emit_32(1129508897);
+emit_32(3278016545);
+emit_32(1099886127);
+emit_32(1129508897);
+emit_32(3277760496);
+emit_32(1099484470);
+emit_32(1129508897);
+emit_32(3277504512);
+emit_32(1098929301);
+emit_32(1129508897);
+emit_32(3277248528);
+emit_32(1097703463);
+emit_32(1129508897);
+emit_32(3276992545);
+emit_32(1096695572);
+emit_32(1129508897);
+emit_32(3276736496);
+emit_32(1094705899);
+emit_32(1129508897);
+emit_32(3276480512);
+emit_32(1094521559);
+emit_32(1129508897);
+emit_32(3276224528);
+emit_32(1094382938);
+emit_32(1129508897);
+emit_32(3275968545);
+emit_32(1093723488);
+emit_32(1129508897);
+emit_32(3275712496);
+emit_32(1094327258);
+emit_32(1129508897);
+emit_32(3275456512);
+emit_32(1094643404);
+emit_32(1129508897);
+emit_32(3275200528);
+emit_32(1095341441);
+emit_32(1129508897);
+emit_32(3274944545);
+emit_32(1096856319);
+emit_32(1129508897);
+emit_32(3274688496);
+emit_32(1097642751);
+emit_32(1129508897);
+emit_32(3274432512);
+emit_32(1097737857);
+emit_32(1129508897);
+emit_32(3274176528);
+emit_32(1097157784);
+emit_32(1129508897);
+emit_32(3273920545);
+emit_32(1096063805);
+emit_32(1129508897);
+emit_32(3273664496);
+emit_32(1095072272);
+emit_32(1129508897);
+emit_32(3273408512);
+emit_32(1094164729);
+emit_32(1129508897);
+emit_32(3273152528);
+emit_32(1092558321);
+emit_32(1129508897);
+emit_32(3272896545);
+emit_32(1090029460);
+emit_32(1129508897);
+emit_32(3272640496);
+emit_32(1087566627);
+emit_32(1129508897);
+emit_32(3272384512);
+emit_32(1087370124);
+emit_32(1129508897);
+emit_32(3272128528);
+emit_32(1084743064);
+emit_32(1129508897);
+emit_32(3271872545);
+emit_32(1082700102);
+emit_32(1129508897);
+emit_32(3271616496);
+emit_32(1083566646);
+emit_32(1129508897);
+emit_32(3271163904);
+emit_32(1084803462);
+emit_32(1129508897);
+emit_32(3270651937);
+emit_32(1086593633);
+emit_32(1129508897);
+emit_32(3270139970);
+emit_32(1090542266);
+emit_32(1129508897);
+emit_32(3269627871);
+emit_32(1091515565);
+emit_32(1129508897);
+emit_32(3269115904);
+emit_32(1092537947);
+emit_32(1129508897);
+emit_32(3268603937);
+emit_32(1093041704);
+emit_32(1129508897);
+emit_32(3268091970);
+emit_32(1093964870);
+emit_32(1129508897);
+emit_32(3267579911);
+emit_32(1094427502);
+emit_32(1129508897);
+emit_32(3267067904);
+emit_32(1095046267);
+emit_32(1129508897);
+emit_32(3266555911);
+emit_32(1095386844);
+emit_32(1129508897);
+emit_32(3266043904);
+emit_32(1095993865);
+emit_32(1129508897);
+emit_32(3265531911);
+emit_32(1096745379);
+emit_32(1129508897);
+emit_32(3265019904);
+emit_32(1098208458);
+emit_32(1129508897);
+emit_32(3264507911);
+emit_32(1099059325);
+emit_32(1129508897);
+emit_32(3263995904);
+emit_32(1098961755);
+emit_32(1129508897);
+emit_32(3263483911);
+emit_32(1099315859);
+emit_32(1129508897);
+emit_32(3262775296);
+emit_32(1099329071);
+emit_32(1129508897);
+emit_32(3261751309);
+emit_32(1098988231);
+emit_32(1129508897);
+emit_32(3260727296);
+emit_32(1099657694);
+emit_32(1129508897);
+emit_32(3259703309);
+emit_32(1099596038);
+emit_32(1129508897);
+emit_32(3258679296);
+emit_32(1099042285);
+emit_32(1129508897);
+emit_32(3257655309);
+emit_32(1098921594);
+emit_32(1129508897);
+emit_32(3256631296);
+emit_32(1099409339);
+emit_32(1129508897);
+emit_32(3255607309);
+emit_32(1099994654);
+emit_32(1129508897);
+emit_32(3254386688);
+emit_32(1099682493);
+emit_32(1129508897);
+emit_32(3252338714);
+emit_32(1099586024);
+emit_32(1129508897);
+emit_32(3250290688);
+emit_32(1098985085);
+emit_32(1129508897);
+emit_32(3248242714);
+emit_32(1098287940);
+emit_32(1129508897);
+emit_32(3245998080);
+emit_32(1096812488);
+emit_32(1129508897);
+emit_32(3241902132);
+emit_32(1096132172);
+emit_32(1129508897);
+emit_32(3237609472);
+emit_32(1095219072);
+emit_32(1129508897);
+emit_32(3229220864);
+emit_32(1094487061);
+emit_32(1129508897);
+emit_32(0);
+emit_32(1093746137);
+emit_32(1129508897);
+emit_32(1081737216);
+emit_32(1093216816);
+emit_32(1129508897);
+emit_32(3279552512);
+emit_32(1080029128);
+emit_32(1129252848);
+emit_32(3279296528);
+emit_32(1082132361);
+emit_32(1129252848);
+emit_32(3279040545);
+emit_32(1088551786);
+emit_32(1129252848);
+emit_32(3278784496);
+emit_32(1092773688);
+emit_32(1129252848);
+emit_32(3278528512);
+emit_32(1095789393);
+emit_32(1129252848);
+emit_32(3278272528);
+emit_32(1098426352);
+emit_32(1129252848);
+emit_32(3278016545);
+emit_32(1099118884);
+emit_32(1129252848);
+emit_32(3277760496);
+emit_32(1098946498);
+emit_32(1129252848);
+emit_32(3277504512);
+emit_32(1098247674);
+emit_32(1129252848);
+emit_32(3277248528);
+emit_32(1097180538);
+emit_32(1129252848);
+emit_32(3276992545);
+emit_32(1095903583);
+emit_32(1129252848);
+emit_32(3276736496);
+emit_32(1093972944);
+emit_32(1129252848);
+emit_32(3276480512);
+emit_32(1094119535);
+emit_32(1129252848);
+emit_32(3276224528);
+emit_32(1094115656);
+emit_32(1129252848);
+emit_32(3275968545);
+emit_32(1093250371);
+emit_32(1129252848);
+emit_32(3275712496);
+emit_32(1093516919);
+emit_32(1129252848);
+emit_32(3275456512);
+emit_32(1094550500);
+emit_32(1129252848);
+emit_32(3275200528);
+emit_32(1095584186);
+emit_32(1129252848);
+emit_32(3274944545);
+emit_32(1097766378);
+emit_32(1129252848);
+emit_32(3274688496);
+emit_32(1097882665);
+emit_32(1129252848);
+emit_32(3274432512);
+emit_32(1097698640);
+emit_32(1129252848);
+emit_32(3274176528);
+emit_32(1096544577);
+emit_32(1129252848);
+emit_32(3273920545);
+emit_32(1095417568);
+emit_32(1129252848);
+emit_32(3273664496);
+emit_32(1093038558);
+emit_32(1129252848);
+emit_32(3273408512);
+emit_32(1092208883);
+emit_32(1129252848);
+emit_32(3273152528);
+emit_32(1091657217);
+emit_32(1129252848);
+emit_32(3272896545);
+emit_32(1088339847);
+emit_32(1129252848);
+emit_32(3272640496);
+emit_32(1087749541);
+emit_32(1129252848);
+emit_32(3272384512);
+emit_32(1086492760);
+emit_32(1129252848);
+emit_32(3272128528);
+emit_32(1084289744);
+emit_32(1129252848);
+emit_32(3271872545);
+emit_32(1084101671);
+emit_32(1129252848);
+emit_32(3271616496);
+emit_32(1084133212);
+emit_32(1129252848);
+emit_32(3271163904);
+emit_32(1084719282);
+emit_32(1129252848);
+emit_32(3270651937);
+emit_32(1088718929);
+emit_32(1129252848);
+emit_32(3270139970);
+emit_32(1091794685);
+emit_32(1129252848);
+emit_32(3269627871);
+emit_32(1093539149);
+emit_32(1129252848);
+emit_32(3269115904);
+emit_32(1093719084);
+emit_32(1129252848);
+emit_32(3268603937);
+emit_32(1094263190);
+emit_32(1129252848);
+emit_32(3268091970);
+emit_32(1095010510);
+emit_32(1129252848);
+emit_32(3267579911);
+emit_32(1095499566);
+emit_32(1129252848);
+emit_32(3267067904);
+emit_32(1095406243);
+emit_32(1129252848);
+emit_32(3266555911);
+emit_32(1095095969);
+emit_32(1129252848);
+emit_32(3266043904);
+emit_32(1095937871);
+emit_32(1129252848);
+emit_32(3265531911);
+emit_32(1096329200);
+emit_32(1129252848);
+emit_32(3265019904);
+emit_32(1097172045);
+emit_32(1129252848);
+emit_32(3264507911);
+emit_32(1098488847);
+emit_32(1129252848);
+emit_32(3263995904);
+emit_32(1099439328);
+emit_32(1129252848);
+emit_32(3263483911);
+emit_32(1099647261);
+emit_32(1129252848);
+emit_32(3262775296);
+emit_32(1099958583);
+emit_32(1129252848);
+emit_32(3261751309);
+emit_32(1099777022);
+emit_32(1129252848);
+emit_32(3260727296);
+emit_32(1099447507);
+emit_32(1129252848);
+emit_32(3259703309);
+emit_32(1099254674);
+emit_32(1129252848);
+emit_32(3258679296);
+emit_32(1099498363);
+emit_32(1129252848);
+emit_32(3257655309);
+emit_32(1099988625);
+emit_32(1129252848);
+emit_32(3256631296);
+emit_32(1100359821);
+emit_32(1129252848);
+emit_32(3255607309);
+emit_32(1100639581);
+emit_32(1129252848);
+emit_32(3254386688);
+emit_32(1100562616);
+emit_32(1129252848);
+emit_32(3252338714);
+emit_32(1100538551);
+emit_32(1129252848);
+emit_32(3250290688);
+emit_32(1099604846);
+emit_32(1129252848);
+emit_32(3248242714);
+emit_32(1098614466);
+emit_32(1129252848);
+emit_32(3245998080);
+emit_32(1097631216);
+emit_32(1129252848);
+emit_32(3241902132);
+emit_32(1097023042);
+emit_32(1129252848);
+emit_32(3237609472);
+emit_32(1096365690);
+emit_32(1129252848);
+emit_32(3229220864);
+emit_32(1095964819);
+emit_32(1129252848);
+emit_32(0);
+emit_32(1094558784);
+emit_32(1129252848);
+emit_32(1081737216);
+emit_32(1093092141);
+emit_32(1129252848);
+emit_32(3279552512);
+emit_32(1081540755);
+emit_32(1128996864);
+emit_32(3279296528);
+emit_32(1081307971);
+emit_32(1128996864);
+emit_32(3279040545);
+emit_32(1088074180);
+emit_32(1128996864);
+emit_32(3278784496);
+emit_32(1092649012);
+emit_32(1128996864);
+emit_32(3278528512);
+emit_32(1095750805);
+emit_32(1128996864);
+emit_32(3278272528);
+emit_32(1098025586);
+emit_32(1128996864);
+emit_32(3278016545);
+emit_32(1098512754);
+emit_32(1128996864);
+emit_32(3277760496);
+emit_32(1097976513);
+emit_32(1128996864);
+emit_32(3277504512);
+emit_32(1097395287);
+emit_32(1128996864);
+emit_32(3277248528);
+emit_32(1096884211);
+emit_32(1128996864);
+emit_32(3276992545);
+emit_32(1096131333);
+emit_32(1128996864);
+emit_32(3276736496);
+emit_32(1094845884);
+emit_32(1128996864);
+emit_32(3276480512);
+emit_32(1093703565);
+emit_32(1128996864);
+emit_32(3276224528);
+emit_32(1092970506);
+emit_32(1128996864);
+emit_32(3275968545);
+emit_32(1093979341);
+emit_32(1128996864);
+emit_32(3275712496);
+emit_32(1093333942);
+emit_32(1128996864);
+emit_32(3275456512);
+emit_32(1094401183);
+emit_32(1128996864);
+emit_32(3275200528);
+emit_32(1095977612);
+emit_32(1128996864);
+emit_32(3274944545);
+emit_32(1096785330);
+emit_32(1128996864);
+emit_32(3274688496);
+emit_32(1097852781);
+emit_32(1128996864);
+emit_32(3274432512);
+emit_32(1097488400);
+emit_32(1128996864);
+emit_32(3274176528);
+emit_32(1096273520);
+emit_32(1128996864);
+emit_32(3273920545);
+emit_32(1094778041);
+emit_32(1128996864);
+emit_32(3273664496);
+emit_32(1093292943);
+emit_32(1128996864);
+emit_32(3273408512);
+emit_32(1092898574);
+emit_32(1128996864);
+emit_32(3273152528);
+emit_32(1090867996);
+emit_32(1128996864);
+emit_32(3272896545);
+emit_32(1089691860);
+emit_32(1128996864);
+emit_32(3272640496);
+emit_32(1086739427);
+emit_32(1128996864);
+emit_32(3272384512);
+emit_32(1085853087);
+emit_32(1128996864);
+emit_32(3272128528);
+emit_32(1084833724);
+emit_32(1128996864);
+emit_32(3271872545);
+emit_32(1084451895);
+emit_32(1128996864);
+emit_32(3271616496);
+emit_32(1085526644);
+emit_32(1128996864);
+emit_32(3271163904);
+emit_32(1089112459);
+emit_32(1128996864);
+emit_32(3270651937);
+emit_32(1091663645);
+emit_32(1128996864);
+emit_32(3270139970);
+emit_32(1093345162);
+emit_32(1128996864);
+emit_32(3269627871);
+emit_32(1094246728);
+emit_32(1128996864);
+emit_32(3269115904);
+emit_32(1095325398);
+emit_32(1128996864);
+emit_32(3268603937);
+emit_32(1096227907);
+emit_32(1128996864);
+emit_32(3268091970);
+emit_32(1097145097);
+emit_32(1128996864);
+emit_32(3267579911);
+emit_32(1097392036);
+emit_32(1128996864);
+emit_32(3267067904);
+emit_32(1096728288);
+emit_32(1128996864);
+emit_32(3266555911);
+emit_32(1095835320);
+emit_32(1128996864);
+emit_32(3266043904);
+emit_32(1095814034);
+emit_32(1128996864);
+emit_32(3265531911);
+emit_32(1096693475);
+emit_32(1128996864);
+emit_32(3265019904);
+emit_32(1097025244);
+emit_32(1128996864);
+emit_32(3264507911);
+emit_32(1099054920);
+emit_32(1128996864);
+emit_32(3263995904);
+emit_32(1099511523);
+emit_32(1128996864);
+emit_32(3263483911);
+emit_32(1100212234);
+emit_32(1128996864);
+emit_32(3262775296);
+emit_32(1100597481);
+emit_32(1128996864);
+emit_32(3261751309);
+emit_32(1100490945);
+emit_32(1128996864);
+emit_32(3260727296);
+emit_32(1100197711);
+emit_32(1128996864);
+emit_32(3259703309);
+emit_32(1099593207);
+emit_32(1128996864);
+emit_32(3258679296);
+emit_32(1099432565);
+emit_32(1128996864);
+emit_32(3257655309);
+emit_32(1100182245);
+emit_32(1128996864);
+emit_32(3256631296);
+emit_32(1100992112);
+emit_32(1128996864);
+emit_32(3255607309);
+emit_32(1101070441);
+emit_32(1128996864);
+emit_32(3254386688);
+emit_32(1101070860);
+emit_32(1128996864);
+emit_32(3252338714);
+emit_32(1100442554);
+emit_32(1128996864);
+emit_32(3250290688);
+emit_32(1100162689);
+emit_32(1128996864);
+emit_32(3248242714);
+emit_32(1099264741);
+emit_32(1128996864);
+emit_32(3245998080);
+emit_32(1098634809);
+emit_32(1128996864);
+emit_32(3241902132);
+emit_32(1097542192);
+emit_32(1128996864);
+emit_32(3237609472);
+emit_32(1097603953);
+emit_32(1128996864);
+emit_32(3229220864);
+emit_32(1097205809);
+emit_32(1128996864);
+emit_32(0);
+emit_32(1095764961);
+emit_32(1128996864);
+emit_32(1081737216);
+emit_32(1094158228);
+emit_32(1128996864);
+emit_32(3279552512);
+emit_32(1083563940);
+emit_32(1128740880);
+emit_32(3279296528);
+emit_32(1083505514);
+emit_32(1128740880);
+emit_32(3279040545);
+emit_32(1087057166);
+emit_32(1128740880);
+emit_32(3278784496);
+emit_32(1091606046);
+emit_32(1128740880);
+emit_32(3278528512);
+emit_32(1094145750);
+emit_32(1128740880);
+emit_32(3278272528);
+emit_32(1096803366);
+emit_32(1128740880);
+emit_32(3278016545);
+emit_32(1097677459);
+emit_32(1128740880);
+emit_32(3277760496);
+emit_32(1096868377);
+emit_32(1128740880);
+emit_32(3277504512);
+emit_32(1097277637);
+emit_32(1128740880);
+emit_32(3277248528);
+emit_32(1097130626);
+emit_32(1128740880);
+emit_32(3276992545);
+emit_32(1095319526);
+emit_32(1128740880);
+emit_32(3276736496);
+emit_32(1094270635);
+emit_32(1128740880);
+emit_32(3276480512);
+emit_32(1092528657);
+emit_32(1128740880);
+emit_32(3276224528);
+emit_32(1091786055);
+emit_32(1128740880);
+emit_32(3275968545);
+emit_32(1092729228);
+emit_32(1128740880);
+emit_32(3275712496);
+emit_32(1093207379);
+emit_32(1128740880);
+emit_32(3275456512);
+emit_32(1094361966);
+emit_32(1128740880);
+emit_32(3275200528);
+emit_32(1096155975);
+emit_32(1128740880);
+emit_32(3274944545);
+emit_32(1098072457);
+emit_32(1128740880);
+emit_32(3274688496);
+emit_32(1097534957);
+emit_32(1128740880);
+emit_32(3274432512);
+emit_32(1096843212);
+emit_32(1128740880);
+emit_32(3274176528);
+emit_32(1095427215);
+emit_32(1128740880);
+emit_32(3273920545);
+emit_32(1095393870);
+emit_32(1128740880);
+emit_32(3273664496);
+emit_32(1094328831);
+emit_32(1128740880);
+emit_32(3273408512);
+emit_32(1093549005);
+emit_32(1128740880);
+emit_32(3273152528);
+emit_32(1091282907);
+emit_32(1128740880);
+emit_32(3272896545);
+emit_32(1089591113);
+emit_32(1128740880);
+emit_32(3272640496);
+emit_32(1087793476);
+emit_32(1128740880);
+emit_32(3272384512);
+emit_32(1084819170);
+emit_32(1128740880);
+emit_32(3272128528);
+emit_32(1085220523);
+emit_32(1128740880);
+emit_32(3271872545);
+emit_32(1088960395);
+emit_32(1128740880);
+emit_32(3271616496);
+emit_32(1091632869);
+emit_32(1128740880);
+emit_32(3271163904);
+emit_32(1092528154);
+emit_32(1128740880);
+emit_32(3270651937);
+emit_32(1093541036);
+emit_32(1128740880);
+emit_32(3270139970);
+emit_32(1094536554);
+emit_32(1128740880);
+emit_32(3269627871);
+emit_32(1095733504);
+emit_32(1128740880);
+emit_32(3269115904);
+emit_32(1096930453);
+emit_32(1128740880);
+emit_32(3268603937);
+emit_32(1097898289);
+emit_32(1128740880);
+emit_32(3268091970);
+emit_32(1098312162);
+emit_32(1128740880);
+emit_32(3267579911);
+emit_32(1098889088);
+emit_32(1128740880);
+emit_32(3267067904);
+emit_32(1098348023);
+emit_32(1128740880);
+emit_32(3266555911);
+emit_32(1097239783);
+emit_32(1128740880);
+emit_32(3266043904);
+emit_32(1096978163);
+emit_32(1128740880);
+emit_32(3265531911);
+emit_32(1097254987);
+emit_32(1128740880);
+emit_32(3265019904);
+emit_32(1097619682);
+emit_32(1128740880);
+emit_32(3264507911);
+emit_32(1098276300);
+emit_32(1128740880);
+emit_32(3263995904);
+emit_32(1099118097);
+emit_32(1128740880);
+emit_32(3263483911);
+emit_32(1099929276);
+emit_32(1128740880);
+emit_32(3262775296);
+emit_32(1100678011);
+emit_32(1128740880);
+emit_32(3261751309);
+emit_32(1100864396);
+emit_32(1128740880);
+emit_32(3260727296);
+emit_32(1100514486);
+emit_32(1128740880);
+emit_32(3259703309);
+emit_32(1100086300);
+emit_32(1128740880);
+emit_32(3258679296);
+emit_32(1099510946);
+emit_32(1128740880);
+emit_32(3257655309);
+emit_32(1100286840);
+emit_32(1128740880);
+emit_32(3256631296);
+emit_32(1100610850);
+emit_32(1128740880);
+emit_32(3255607309);
+emit_32(1101170370);
+emit_32(1128740880);
+emit_32(3254386688);
+emit_32(1100818206);
+emit_32(1128740880);
+emit_32(3252338714);
+emit_32(1100338640);
+emit_32(1128740880);
+emit_32(3250290688);
+emit_32(1099906469);
+emit_32(1128740880);
+emit_32(3248242714);
+emit_32(1099577688);
+emit_32(1128740880);
+emit_32(3245998080);
+emit_32(1099007892);
+emit_32(1128740880);
+emit_32(3241902132);
+emit_32(1098245472);
+emit_32(1128740880);
+emit_32(3237609472);
+emit_32(1097688783);
+emit_32(1128740880);
+emit_32(3229220864);
+emit_32(1096704380);
+emit_32(1128740880);
+emit_32(0);
+emit_32(1095305265);
+emit_32(1128740880);
+emit_32(1081737216);
+emit_32(1094837495);
+emit_32(1128740880);
+emit_32(3279552512);
+emit_32(1085717569);
+emit_32(1128484897);
+emit_32(3279296528);
+emit_32(1083562745);
+emit_32(1128484897);
+emit_32(3279040545);
+emit_32(1084856981);
+emit_32(1128484897);
+emit_32(3278784496);
+emit_32(1089938108);
+emit_32(1128484897);
+emit_32(3278528512);
+emit_32(1093643482);
+emit_32(1128484897);
+emit_32(3278272528);
+emit_32(1095378456);
+emit_32(1128484897);
+emit_32(3278016545);
+emit_32(1096701654);
+emit_32(1128484897);
+emit_32(3277760496);
+emit_32(1095991453);
+emit_32(1128484897);
+emit_32(3277504512);
+emit_32(1096837130);
+emit_32(1128484897);
+emit_32(3277248528);
+emit_32(1097429470);
+emit_32(1128484897);
+emit_32(3276992545);
+emit_32(1095425747);
+emit_32(1128484897);
+emit_32(3276736496);
+emit_32(1092456704);
+emit_32(1128484897);
+emit_32(3276480512);
+emit_32(1090579469);
+emit_32(1128484897);
+emit_32(3276224528);
+emit_32(1089853278);
+emit_32(1128484897);
+emit_32(3275968545);
+emit_32(1091601590);
+emit_32(1128484897);
+emit_32(3275712496);
+emit_32(1093452222);
+emit_32(1128484897);
+emit_32(3275456512);
+emit_32(1094872308);
+emit_32(1128484897);
+emit_32(3275200528);
+emit_32(1095959891);
+emit_32(1128484897);
+emit_32(3274944545);
+emit_32(1097078827);
+emit_32(1128484897);
+emit_32(3274688496);
+emit_32(1096858206);
+emit_32(1128484897);
+emit_32(3274432512);
+emit_32(1096053948);
+emit_32(1128484897);
+emit_32(3274176528);
+emit_32(1095523264);
+emit_32(1128484897);
+emit_32(3273920545);
+emit_32(1095300547);
+emit_32(1128484897);
+emit_32(3273664496);
+emit_32(1094152041);
+emit_32(1128484897);
+emit_32(3273408512);
+emit_32(1093293887);
+emit_32(1128484897);
+emit_32(3273152528);
+emit_32(1091954824);
+emit_32(1128484897);
+emit_32(3272896545);
+emit_32(1090264488);
+emit_32(1128484897);
+emit_32(3272640496);
+emit_32(1087964038);
+emit_32(1128484897);
+emit_32(3272384512);
+emit_32(1084913101);
+emit_32(1128484897);
+emit_32(3272128528);
+emit_32(1087644432);
+emit_32(1128484897);
+emit_32(3271872545);
+emit_32(1091545292);
+emit_32(1128484897);
+emit_32(3271616496);
+emit_32(1092949010);
+emit_32(1128484897);
+emit_32(3271163904);
+emit_32(1093888744);
+emit_32(1128484897);
+emit_32(3270651937);
+emit_32(1095009252);
+emit_32(1128484897);
+emit_32(3270139970);
+emit_32(1096532728);
+emit_32(1128484897);
+emit_32(3269627871);
+emit_32(1096831048);
+emit_32(1128484897);
+emit_32(3269115904);
+emit_32(1098431280);
+emit_32(1128484897);
+emit_32(3268603937);
+emit_32(1098981153);
+emit_32(1128484897);
+emit_32(3268091970);
+emit_32(1099259917);
+emit_32(1128484897);
+emit_32(3267579911);
+emit_32(1099047004);
+emit_32(1128484897);
+emit_32(3267067904);
+emit_32(1099189663);
+emit_32(1128484897);
+emit_32(3266555911);
+emit_32(1097994233);
+emit_32(1128484897);
+emit_32(3266043904);
+emit_32(1097616536);
+emit_32(1128484897);
+emit_32(3265531911);
+emit_32(1098345402);
+emit_32(1128484897);
+emit_32(3265019904);
+emit_32(1098214644);
+emit_32(1128484897);
+emit_32(3264507911);
+emit_32(1097712481);
+emit_32(1128484897);
+emit_32(3263995904);
+emit_32(1099049258);
+emit_32(1128484897);
+emit_32(3263483911);
+emit_32(1099930586);
+emit_32(1128484897);
+emit_32(3262775296);
+emit_32(1100537135);
+emit_32(1128484897);
+emit_32(3261751309);
+emit_32(1100755920);
+emit_32(1128484897);
+emit_32(3260727296);
+emit_32(1100566915);
+emit_32(1128484897);
+emit_32(3259703309);
+emit_32(1099988940);
+emit_32(1128484897);
+emit_32(3258679296);
+emit_32(1099547332);
+emit_32(1128484897);
+emit_32(3257655309);
+emit_32(1100698878);
+emit_32(1128484897);
+emit_32(3256631296);
+emit_32(1101203033);
+emit_32(1128484897);
+emit_32(3255607309);
+emit_32(1100897845);
+emit_32(1128484897);
+emit_32(3254386688);
+emit_32(1100472176);
+emit_32(1128484897);
+emit_32(3252338714);
+emit_32(1100121008);
+emit_32(1128484897);
+emit_32(3250290688);
+emit_32(1100059666);
+emit_32(1128484897);
+emit_32(3248242714);
+emit_32(1099700424);
+emit_32(1128484897);
+emit_32(3245998080);
+emit_32(1099220596);
+emit_32(1128484897);
+emit_32(3241902132);
+emit_32(1098230163);
+emit_32(1128484897);
+emit_32(3237609472);
+emit_32(1097298503);
+emit_32(1128484897);
+emit_32(3229220864);
+emit_32(1096617663);
+emit_32(1128484897);
+emit_32(0);
+emit_32(1095209006);
+emit_32(1128484897);
+emit_32(1081737216);
+emit_32(1096602144);
+emit_32(1128484897);
+emit_32(3279552512);
+emit_32(1086488964);
+emit_32(1128228848);
+emit_32(3279296528);
+emit_32(1085207394);
+emit_32(1128228848);
+emit_32(3279040545);
+emit_32(1083144426);
+emit_32(1128228848);
+emit_32(3278784496);
+emit_32(1087877279);
+emit_32(1128228848);
+emit_32(3278528512);
+emit_32(1092360979);
+emit_32(1128228848);
+emit_32(3278272528);
+emit_32(1094229112);
+emit_32(1128228848);
+emit_32(3278016545);
+emit_32(1095715678);
+emit_32(1128228848);
+emit_32(3277760496);
+emit_32(1095363042);
+emit_32(1128228848);
+emit_32(3277504512);
+emit_32(1095186881);
+emit_32(1128228848);
+emit_32(3277248528);
+emit_32(1096363593);
+emit_32(1128228848);
+emit_32(3276992545);
+emit_32(1094958082);
+emit_32(1128228848);
+emit_32(3276736496);
+emit_32(1091948081);
+emit_32(1128228848);
+emit_32(3276480512);
+emit_32(1089598789);
+emit_32(1128228848);
+emit_32(3276224528);
+emit_32(1090830991);
+emit_32(1128228848);
+emit_32(3275968545);
+emit_32(1092661490);
+emit_32(1128228848);
+emit_32(3275712496);
+emit_32(1094218416);
+emit_32(1128228848);
+emit_32(3275456512);
+emit_32(1095692504);
+emit_32(1128228848);
+emit_32(3275200528);
+emit_32(1096747267);
+emit_32(1128228848);
+emit_32(3274944545);
+emit_32(1096959708);
+emit_32(1128228848);
+emit_32(3274688496);
+emit_32(1096562717);
+emit_32(1128228848);
+emit_32(3274432512);
+emit_32(1095550422);
+emit_32(1128228848);
+emit_32(3274176528);
+emit_32(1095356331);
+emit_32(1128228848);
+emit_32(3273920545);
+emit_32(1094786744);
+emit_32(1128228848);
+emit_32(3273664496);
+emit_32(1094402651);
+emit_32(1128228848);
+emit_32(3273408512);
+emit_32(1093003326);
+emit_32(1128228848);
+emit_32(3273152528);
+emit_32(1091879924);
+emit_32(1128228848);
+emit_32(3272896545);
+emit_32(1090340950);
+emit_32(1128228848);
+emit_32(3272640496);
+emit_32(1088120653);
+emit_32(1128228848);
+emit_32(3272384512);
+emit_32(1090582175);
+emit_32(1128228848);
+emit_32(3272128528);
+emit_32(1091421633);
+emit_32(1128228848);
+emit_32(3271872545);
+emit_32(1093724013);
+emit_32(1128228848);
+emit_32(3271616496);
+emit_32(1095136025);
+emit_32(1128228848);
+emit_32(3271163904);
+emit_32(1096213647);
+emit_32(1128228848);
+emit_32(3270651937);
+emit_32(1096677537);
+emit_32(1128228848);
+emit_32(3270139970);
+emit_32(1097917268);
+emit_32(1128228848);
+emit_32(3269627871);
+emit_32(1098919130);
+emit_32(1128228848);
+emit_32(3269115904);
+emit_32(1099360947);
+emit_32(1128228848);
+emit_32(3268603937);
+emit_32(1099387686);
+emit_32(1128228848);
+emit_32(3268091970);
+emit_32(1099422027);
+emit_32(1128228848);
+emit_32(3267579911);
+emit_32(1099524892);
+emit_32(1128228848);
+emit_32(3267067904);
+emit_32(1099391723);
+emit_32(1128228848);
+emit_32(3266555911);
+emit_32(1098232680);
+emit_32(1128228848);
+emit_32(3266043904);
+emit_32(1097328073);
+emit_32(1128228848);
+emit_32(3265531911);
+emit_32(1098499542);
+emit_32(1128228848);
+emit_32(3265019904);
+emit_32(1098867278);
+emit_32(1128228848);
+emit_32(3264507911);
+emit_32(1097477915);
+emit_32(1128228848);
+emit_32(3263995904);
+emit_32(1098419431);
+emit_32(1128228848);
+emit_32(3263483911);
+emit_32(1099657118);
+emit_32(1128228848);
+emit_32(3262775296);
+emit_32(1100094951);
+emit_32(1128228848);
+emit_32(3261751309);
+emit_32(1100491260);
+emit_32(1128228848);
+emit_32(3260727296);
+emit_32(1100506884);
+emit_32(1128228848);
+emit_32(3259703309);
+emit_32(1099794324);
+emit_32(1128228848);
+emit_32(3258679296);
+emit_32(1099789291);
+emit_32(1128228848);
+emit_32(3257655309);
+emit_32(1100379115);
+emit_32(1128228848);
+emit_32(3256631296);
+emit_32(1100923221);
+emit_32(1128228848);
+emit_32(3255607309);
+emit_32(1100371932);
+emit_32(1128228848);
+emit_32(3254386688);
+emit_32(1100316148);
+emit_32(1128228848);
+emit_32(3252338714);
+emit_32(1100515692);
+emit_32(1128228848);
+emit_32(3250290688);
+emit_32(1100307916);
+emit_32(1128228848);
+emit_32(3248242714);
+emit_32(1099810210);
+emit_32(1128228848);
+emit_32(3245998080);
+emit_32(1099154640);
+emit_32(1128228848);
+emit_32(3241902132);
+emit_32(1098355573);
+emit_32(1128228848);
+emit_32(3237609472);
+emit_32(1097472777);
+emit_32(1128228848);
+emit_32(3229220864);
+emit_32(1096682465);
+emit_32(1128228848);
+emit_32(0);
+emit_32(1096577398);
+emit_32(1128228848);
+emit_32(1081737216);
+emit_32(1097223216);
+emit_32(1128228848);
+emit_32(3279552512);
+emit_32(1086853617);
+emit_32(1127972864);
+emit_32(3279296528);
+emit_32(1086298564);
+emit_32(1127972864);
+emit_32(3279040545);
+emit_32(1085278425);
+emit_32(1127972864);
+emit_32(3278784496);
+emit_32(1085319131);
+emit_32(1127972864);
+emit_32(3278528512);
+emit_32(1090251360);
+emit_32(1127972864);
+emit_32(3278272528);
+emit_32(1092641777);
+emit_32(1127972864);
+emit_32(3278016545);
+emit_32(1093620623);
+emit_32(1127972864);
+emit_32(3277760496);
+emit_32(1094102653);
+emit_32(1127972864);
+emit_32(3277504512);
+emit_32(1093830758);
+emit_32(1127972864);
+emit_32(3277248528);
+emit_32(1094796916);
+emit_32(1127972864);
+emit_32(3276992545);
+emit_32(1093478751);
+emit_32(1127972864);
+emit_32(3276736496);
+emit_32(1091477050);
+emit_32(1127972864);
+emit_32(3276480512);
+emit_32(1089930831);
+emit_32(1127972864);
+emit_32(3276224528);
+emit_32(1091537375);
+emit_32(1127972864);
+emit_32(3275968545);
+emit_32(1093540302);
+emit_32(1127972864);
+emit_32(3275712496);
+emit_32(1095329278);
+emit_32(1127972864);
+emit_32(3275456512);
+emit_32(1096120323);
+emit_32(1127972864);
+emit_32(3275200528);
+emit_32(1096433743);
+emit_32(1127972864);
+emit_32(3274944545);
+emit_32(1096683304);
+emit_32(1127972864);
+emit_32(3274688496);
+emit_32(1096592182);
+emit_32(1127972864);
+emit_32(3274432512);
+emit_32(1095725220);
+emit_32(1127972864);
+emit_32(3274176528);
+emit_32(1094999815);
+emit_32(1127972864);
+emit_32(3273920545);
+emit_32(1094300520);
+emit_32(1127972864);
+emit_32(3273664496);
+emit_32(1093576583);
+emit_32(1127972864);
+emit_32(3273408512);
+emit_32(1092872779);
+emit_32(1127972864);
+emit_32(3273152528);
+emit_32(1091911098);
+emit_32(1127972864);
+emit_32(3272896545);
+emit_32(1091753434);
+emit_32(1127972864);
+emit_32(3272640496);
+emit_32(1092133438);
+emit_32(1127972864);
+emit_32(3272384512);
+emit_32(1093071169);
+emit_32(1127972864);
+emit_32(3272128528);
+emit_32(1094518728);
+emit_32(1127972864);
+emit_32(3271872545);
+emit_32(1096084986);
+emit_32(1127972864);
+emit_32(3271616496);
+emit_32(1096360657);
+emit_32(1127972864);
+emit_32(3271163904);
+emit_32(1096731014);
+emit_32(1127972864);
+emit_32(3270651937);
+emit_32(1098285738);
+emit_32(1127972864);
+emit_32(3270139970);
+emit_32(1099415631);
+emit_32(1127972864);
+emit_32(3269627871);
+emit_32(1099949408);
+emit_32(1127972864);
+emit_32(3269115904);
+emit_32(1100367161);
+emit_32(1127972864);
+emit_32(3268603937);
+emit_32(1100361866);
+emit_32(1127972864);
+emit_32(3268091970);
+emit_32(1100305714);
+emit_32(1127972864);
+emit_32(3267579911);
+emit_32(1100208354);
+emit_32(1127972864);
+emit_32(3267067904);
+emit_32(1100142975);
+emit_32(1127972864);
+emit_32(3266555911);
+emit_32(1099102421);
+emit_32(1127972864);
+emit_32(3266043904);
+emit_32(1097385430);
+emit_32(1127972864);
+emit_32(3265531911);
+emit_32(1097822162);
+emit_32(1127972864);
+emit_32(3265019904);
+emit_32(1098963275);
+emit_32(1127972864);
+emit_32(3264507911);
+emit_32(1097304900);
+emit_32(1127972864);
+emit_32(3263995904);
+emit_32(1097683121);
+emit_32(1127972864);
+emit_32(3263483911);
+emit_32(1099069810);
+emit_32(1127972864);
+emit_32(3262775296);
+emit_32(1099605213);
+emit_32(1127972864);
+emit_32(3261751309);
+emit_32(1100129868);
+emit_32(1127972864);
+emit_32(3260727296);
+emit_32(1100106433);
+emit_32(1127972864);
+emit_32(3259703309);
+emit_32(1099661207);
+emit_32(1127972864);
+emit_32(3258679296);
+emit_32(1099945896);
+emit_32(1127972864);
+emit_32(3257655309);
+emit_32(1100312216);
+emit_32(1127972864);
+emit_32(3256631296);
+emit_32(1100604401);
+emit_32(1127972864);
+emit_32(3255607309);
+emit_32(1101000920);
+emit_32(1127972864);
+emit_32(3254386688);
+emit_32(1100943301);
+emit_32(1127972864);
+emit_32(3252338714);
+emit_32(1100628886);
+emit_32(1127972864);
+emit_32(3250290688);
+emit_32(1100484759);
+emit_32(1127972864);
+emit_32(3248242714);
+emit_32(1099700843);
+emit_32(1127972864);
+emit_32(3245998080);
+emit_32(1099261752);
+emit_32(1127972864);
+emit_32(3241902132);
+emit_32(1098560045);
+emit_32(1127972864);
+emit_32(3237609472);
+emit_32(1097453588);
+emit_32(1127972864);
+emit_32(3229220864);
+emit_32(1096754712);
+emit_32(1127972864);
+emit_32(0);
+emit_32(1097041812);
+emit_32(1127972864);
+emit_32(1081737216);
+emit_32(1096992739);
+emit_32(1127972864);
+emit_32(3279552512);
+emit_32(1088632086);
+emit_32(1127716880);
+emit_32(3279296528);
+emit_32(1087150511);
+emit_32(1127716880);
+emit_32(3279040545);
+emit_32(1085863719);
+emit_32(1127716880);
+emit_32(3278784496);
+emit_32(1084379313);
+emit_32(1127716880);
+emit_32(3278528512);
+emit_32(1086294621);
+emit_32(1127716880);
+emit_32(3278272528);
+emit_32(1089793845);
+emit_32(1127716880);
+emit_32(3278016545);
+emit_32(1091311124);
+emit_32(1127716880);
+emit_32(3277760496);
+emit_32(1092520195);
+emit_32(1127716880);
+emit_32(3277504512);
+emit_32(1092832933);
+emit_32(1127716880);
+emit_32(3277248528);
+emit_32(1092827899);
+emit_32(1127716880);
+emit_32(3276992545);
+emit_32(1091811620);
+emit_32(1127716880);
+emit_32(3276736496);
+emit_32(1089828825);
+emit_32(1127716880);
+emit_32(3276480512);
+emit_32(1090682052);
+emit_32(1127716880);
+emit_32(3276224528);
+emit_32(1092010839);
+emit_32(1127716880);
+emit_32(3275968545);
+emit_32(1093459876);
+emit_32(1127716880);
+emit_32(3275712496);
+emit_32(1096080897);
+emit_32(1127716880);
+emit_32(3275456512);
+emit_32(1096807455);
+emit_32(1127716880);
+emit_32(3275200528);
+emit_32(1096413086);
+emit_32(1127716880);
+emit_32(3274944545);
+emit_32(1096350381);
+emit_32(1127716880);
+emit_32(3274688496);
+emit_32(1096323642);
+emit_32(1127716880);
+emit_32(3274432512);
+emit_32(1095633784);
+emit_32(1127716880);
+emit_32(3274176528);
+emit_32(1094753714);
+emit_32(1127716880);
+emit_32(3273920545);
+emit_32(1094125198);
+emit_32(1127716880);
+emit_32(3273664496);
+emit_32(1093062361);
+emit_32(1127716880);
+emit_32(3273408512);
+emit_32(1093213041);
+emit_32(1127716880);
+emit_32(3273152528);
+emit_32(1093187876);
+emit_32(1127716880);
+emit_32(3272896545);
+emit_32(1094195347);
+emit_32(1127716880);
+emit_32(3272640496);
+emit_32(1094880172);
+emit_32(1127716880);
+emit_32(3272384512);
+emit_32(1095364719);
+emit_32(1127716880);
+emit_32(3272128528);
+emit_32(1096288829);
+emit_32(1127716880);
+emit_32(3271872545);
+emit_32(1097163132);
+emit_32(1127716880);
+emit_32(3271616496);
+emit_32(1097356385);
+emit_32(1127716880);
+emit_32(3271163904);
+emit_32(1098373084);
+emit_32(1127716880);
+emit_32(3270651937);
+emit_32(1099643172);
+emit_32(1127716880);
+emit_32(3270139970);
+emit_32(1099931949);
+emit_32(1127716880);
+emit_32(3269627871);
+emit_32(1100246260);
+emit_32(1127716880);
+emit_32(3269115904);
+emit_32(1100634600);
+emit_32(1127716880);
+emit_32(3268603937);
+emit_32(1100611741);
+emit_32(1127716880);
+emit_32(3268091970);
+emit_32(1100940417);
+emit_32(1127716880);
+emit_32(3267579911);
+emit_32(1100834564);
+emit_32(1127716880);
+emit_32(3267067904);
+emit_32(1100309804);
+emit_32(1127716880);
+emit_32(3266555911);
+emit_32(1099846386);
+emit_32(1127716880);
+emit_32(3266043904);
+emit_32(1098992216);
+emit_32(1127716880);
+emit_32(3265531911);
+emit_32(1098681051);
+emit_32(1127716880);
+emit_32(3265019904);
+emit_32(1098547986);
+emit_32(1127716880);
+emit_32(3264507911);
+emit_32(1097247857);
+emit_32(1127716880);
+emit_32(3263995904);
+emit_32(1097448345);
+emit_32(1127716880);
+emit_32(3263483911);
+emit_32(1098445645);
+emit_32(1127716880);
+emit_32(3262775296);
+emit_32(1098977798);
+emit_32(1127716880);
+emit_32(3261751309);
+emit_32(1099491390);
+emit_32(1127716880);
+emit_32(3260727296);
+emit_32(1099337145);
+emit_32(1127716880);
+emit_32(3259703309);
+emit_32(1099792908);
+emit_32(1127716880);
+emit_32(3258679296);
+emit_32(1100235722);
+emit_32(1127716880);
+emit_32(3257655309);
+emit_32(1100866336);
+emit_32(1127716880);
+emit_32(3256631296);
+emit_32(1101422448);
+emit_32(1127716880);
+emit_32(3255607309);
+emit_32(1101221855);
+emit_32(1127716880);
+emit_32(3254386688);
+emit_32(1101088005);
+emit_32(1127716880);
+emit_32(3252338714);
+emit_32(1100972556);
+emit_32(1127716880);
+emit_32(3250290688);
+emit_32(1100202325);
+emit_32(1127716880);
+emit_32(3248242714);
+emit_32(1099418409);
+emit_32(1127716880);
+emit_32(3245998080);
+emit_32(1098944243);
+emit_32(1127716880);
+emit_32(3241902132);
+emit_32(1098327366);
+emit_32(1127716880);
+emit_32(3237609472);
+emit_32(1097923455);
+emit_32(1127716880);
+emit_32(3229220864);
+emit_32(1098086089);
+emit_32(1127716880);
+emit_32(0);
+emit_32(1097086481);
+emit_32(1127716880);
+emit_32(1081737216);
+emit_32(1096797703);
+emit_32(1127716880);
+emit_32(3279552512);
+emit_32(1090697067);
+emit_32(1127460897);
+emit_32(3279296528);
+emit_32(1088464754);
+emit_32(1127460897);
+emit_32(3279040545);
+emit_32(1087359387);
+emit_32(1127460897);
+emit_32(3278784496);
+emit_32(1086695387);
+emit_32(1127460897);
+emit_32(3278528512);
+emit_32(1083514070);
+emit_32(1127460897);
+emit_32(3278272528);
+emit_32(1084835276);
+emit_32(1127460897);
+emit_32(3278016545);
+emit_32(1088646514);
+emit_32(1127460897);
+emit_32(3277760496);
+emit_32(1090551147);
+emit_32(1127460897);
+emit_32(3277504512);
+emit_32(1091910700);
+emit_32(1127460897);
+emit_32(3277248528);
+emit_32(1091808013);
+emit_32(1127460897);
+emit_32(3276992545);
+emit_32(1091196294);
+emit_32(1127460897);
+emit_32(3276736496);
+emit_32(1090026922);
+emit_32(1127460897);
+emit_32(3276480512);
+emit_32(1090912801);
+emit_32(1127460897);
+emit_32(3276224528);
+emit_32(1091162887);
+emit_32(1127460897);
+emit_32(3275968545);
+emit_32(1093409649);
+emit_32(1127460897);
+emit_32(3275712496);
+emit_32(1094918970);
+emit_32(1127460897);
+emit_32(3275456512);
+emit_32(1096294177);
+emit_32(1127460897);
+emit_32(3275200528);
+emit_32(1096363698);
+emit_32(1127460897);
+emit_32(3274944545);
+emit_32(1096394421);
+emit_32(1127460897);
+emit_32(3274688496);
+emit_32(1096326893);
+emit_32(1127460897);
+emit_32(3274432512);
+emit_32(1095806484);
+emit_32(1127460897);
+emit_32(3274176528);
+emit_32(1096379007);
+emit_32(1127460897);
+emit_32(3273920545);
+emit_32(1096041470);
+emit_32(1127460897);
+emit_32(3273664496);
+emit_32(1094485488);
+emit_32(1127460897);
+emit_32(3273408512);
+emit_32(1095082128);
+emit_32(1127460897);
+emit_32(3273152528);
+emit_32(1095898969);
+emit_32(1127460897);
+emit_32(3272896545);
+emit_32(1096463208);
+emit_32(1127460897);
+emit_32(3272640496);
+emit_32(1096556741);
+emit_32(1127460897);
+emit_32(3272384512);
+emit_32(1096834613);
+emit_32(1127460897);
+emit_32(3272128528);
+emit_32(1098017826);
+emit_32(1127460897);
+emit_32(3271872545);
+emit_32(1098909745);
+emit_32(1127460897);
+emit_32(3271616496);
+emit_32(1099379035);
+emit_32(1127460897);
+emit_32(3271163904);
+emit_32(1099621519);
+emit_32(1127460897);
+emit_32(3270651937);
+emit_32(1100273890);
+emit_32(1127460897);
+emit_32(3270139970);
+emit_32(1100651587);
+emit_32(1127460897);
+emit_32(3269627871);
+emit_32(1100583063);
+emit_32(1127460897);
+emit_32(3269115904);
+emit_32(1100899471);
+emit_32(1127460897);
+emit_32(3268603937);
+emit_32(1101366926);
+emit_32(1127460897);
+emit_32(3268091970);
+emit_32(1101899183);
+emit_32(1127460897);
+emit_32(3267579911);
+emit_32(1101822427);
+emit_32(1127460897);
+emit_32(3267067904);
+emit_32(1101218290);
+emit_32(1127460897);
+emit_32(3266555911);
+emit_32(1100574150);
+emit_32(1127460897);
+emit_32(3266043904);
+emit_32(1100108005);
+emit_32(1127460897);
+emit_32(3265531911);
+emit_32(1099514144);
+emit_32(1127460897);
+emit_32(3265019904);
+emit_32(1098172701);
+emit_32(1127460897);
+emit_32(3264507911);
+emit_32(1096910216);
+emit_32(1127460897);
+emit_32(3263995904);
+emit_32(1097118253);
+emit_32(1127460897);
+emit_32(3263483911);
+emit_32(1097919785);
+emit_32(1127460897);
+emit_32(3262775296);
+emit_32(1098225759);
+emit_32(1127460897);
+emit_32(3261751309);
+emit_32(1098294021);
+emit_32(1127460897);
+emit_32(3260727296);
+emit_32(1099564476);
+emit_32(1127460897);
+emit_32(3259703309);
+emit_32(1100155453);
+emit_32(1127460897);
+emit_32(3258679296);
+emit_32(1100660343);
+emit_32(1127460897);
+emit_32(3257655309);
+emit_32(1101117574);
+emit_32(1127460897);
+emit_32(3256631296);
+emit_32(1101606787);
+emit_32(1127460897);
+emit_32(3255607309);
+emit_32(1101430155);
+emit_32(1127460897);
+emit_32(3254386688);
+emit_32(1100673712);
+emit_32(1127460897);
+emit_32(3252338714);
+emit_32(1100216585);
+emit_32(1127460897);
+emit_32(3250290688);
+emit_32(1099492858);
+emit_32(1127460897);
+emit_32(3248242714);
+emit_32(1098998822);
+emit_32(1127460897);
+emit_32(3245998080);
+emit_32(1097972423);
+emit_32(1127460897);
+emit_32(3241902132);
+emit_32(1098463681);
+emit_32(1127460897);
+emit_32(3237609472);
+emit_32(1099098961);
+emit_32(1127460897);
+emit_32(3229220864);
+emit_32(1099075315);
+emit_32(1127460897);
+emit_32(0);
+emit_32(1098576717);
+emit_32(1127460897);
+emit_32(1081737216);
+emit_32(1097521955);
+emit_32(1127460897);
+emit_32(3279552512);
+emit_32(1091907942);
+emit_32(1127204848);
+emit_32(3279296528);
+emit_32(1090913000);
+emit_32(1127204848);
+emit_32(3279040545);
+emit_32(1089627792);
+emit_32(1127204848);
+emit_32(3278784496);
+emit_32(1088453282);
+emit_32(1127204848);
+emit_32(3278528512);
+emit_32(1085638149);
+emit_32(1127204848);
+emit_32(3278272528);
+emit_32(1082820290);
+emit_32(1127204848);
+emit_32(3278016545);
+emit_32(1084647581);
+emit_32(1127204848);
+emit_32(3277760496);
+emit_32(1086976132);
+emit_32(1127204848);
+emit_32(3277504512);
+emit_32(1089606024);
+emit_32(1127204848);
+emit_32(3277248528);
+emit_32(1090895206);
+emit_32(1127204848);
+emit_32(3276992545);
+emit_32(1090776528);
+emit_32(1127204848);
+emit_32(3276736496);
+emit_32(1089657215);
+emit_32(1127204848);
+emit_32(3276480512);
+emit_32(1090767154);
+emit_32(1127204848);
+emit_32(3276224528);
+emit_32(1091192603);
+emit_32(1127204848);
+emit_32(3275968545);
+emit_32(1093123912);
+emit_32(1127204848);
+emit_32(3275712496);
+emit_32(1094534667);
+emit_32(1127204848);
+emit_32(3275456512);
+emit_32(1096318399);
+emit_32(1127204848);
+emit_32(3275200528);
+emit_32(1097169319);
+emit_32(1127204848);
+emit_32(3274944545);
+emit_32(1096886518);
+emit_32(1127204848);
+emit_32(3274688496);
+emit_32(1097439642);
+emit_32(1127204848);
+emit_32(3274432512);
+emit_32(1096797599);
+emit_32(1127204848);
+emit_32(3274176528);
+emit_32(1096554224);
+emit_32(1127204848);
+emit_32(3273920545);
+emit_32(1096240490);
+emit_32(1127204848);
+emit_32(3273664496);
+emit_32(1096477363);
+emit_32(1127204848);
+emit_32(3273408512);
+emit_32(1097087635);
+emit_32(1127204848);
+emit_32(3273152528);
+emit_32(1097338349);
+emit_32(1127204848);
+emit_32(3272896545);
+emit_32(1097759457);
+emit_32(1127204848);
+emit_32(3272640496);
+emit_32(1097880778);
+emit_32(1127204848);
+emit_32(3272384512);
+emit_32(1098146906);
+emit_32(1127204848);
+emit_32(3272128528);
+emit_32(1099303643);
+emit_32(1127204848);
+emit_32(3271872545);
+emit_32(1099944532);
+emit_32(1127204848);
+emit_32(3271616496);
+emit_32(1100242905);
+emit_32(1127204848);
+emit_32(3271163904);
+emit_32(1100588882);
+emit_32(1127204848);
+emit_32(3270651937);
+emit_32(1100605502);
+emit_32(1127204848);
+emit_32(3270139970);
+emit_32(1100742289);
+emit_32(1127204848);
+emit_32(3269627871);
+emit_32(1101124128);
+emit_32(1127204848);
+emit_32(3269115904);
+emit_32(1101735972);
+emit_32(1127204848);
+emit_32(3268603937);
+emit_32(1102084728);
+emit_32(1127204848);
+emit_32(3268091970);
+emit_32(1102719903);
+emit_32(1127204848);
+emit_32(3267579911);
+emit_32(1102404177);
+emit_32(1127204848);
+emit_32(3267067904);
+emit_32(1101692613);
+emit_32(1127204848);
+emit_32(3266555911);
+emit_32(1101323724);
+emit_32(1127204848);
+emit_32(3266043904);
+emit_32(1100739353);
+emit_32(1127204848);
+emit_32(3265531911);
+emit_32(1100060977);
+emit_32(1127204848);
+emit_32(3265019904);
+emit_32(1098668153);
+emit_32(1127204848);
+emit_32(3264507911);
+emit_32(1097066139);
+emit_32(1127204848);
+emit_32(3263995904);
+emit_32(1097240936);
+emit_32(1127204848);
+emit_32(3263483911);
+emit_32(1098056099);
+emit_32(1127204848);
+emit_32(3262775296);
+emit_32(1098692270);
+emit_32(1127204848);
+emit_32(3261751309);
+emit_32(1099028339);
+emit_32(1127204848);
+emit_32(3260727296);
+emit_32(1099487406);
+emit_32(1127204848);
+emit_32(3259703309);
+emit_32(1100464154);
+emit_32(1127204848);
+emit_32(3258679296);
+emit_32(1100643146);
+emit_32(1127204848);
+emit_32(3257655309);
+emit_32(1100685089);
+emit_32(1127204848);
+emit_32(3256631296);
+emit_32(1100823658);
+emit_32(1127204848);
+emit_32(3255607309);
+emit_32(1100633027);
+emit_32(1127204848);
+emit_32(3254386688);
+emit_32(1100238553);
+emit_32(1127204848);
+emit_32(3252338714);
+emit_32(1099137706);
+emit_32(1127204848);
+emit_32(3250290688);
+emit_32(1098443758);
+emit_32(1127204848);
+emit_32(3248242714);
+emit_32(1098669202);
+emit_32(1127204848);
+emit_32(3245998080);
+emit_32(1099104571);
+emit_32(1127204848);
+emit_32(3241902132);
+emit_32(1099412328);
+emit_32(1127204848);
+emit_32(3237609472);
+emit_32(1099546755);
+emit_32(1127204848);
+emit_32(3229220864);
+emit_32(1099464966);
+emit_32(1127204848);
+emit_32(0);
+emit_32(1099096864);
+emit_32(1127204848);
+emit_32(1081737216);
+emit_32(1098169765);
+emit_32(1127204848);
+emit_32(3279552512);
+emit_32(1092650690);
+emit_32(1126948864);
+emit_32(3279296528);
+emit_32(1091119434);
+emit_32(1126948864);
+emit_32(3279040545);
+emit_32(1090136415);
+emit_32(1126948864);
+emit_32(3278784496);
+emit_32(1088411612);
+emit_32(1126948864);
+emit_32(3278528512);
+emit_32(1085469077);
+emit_32(1126948864);
+emit_32(3278272528);
+emit_32(1083833424);
+emit_32(1126948864);
+emit_32(3278016545);
+emit_32(1083689035);
+emit_32(1126948864);
+emit_32(3277760496);
+emit_32(1085122711);
+emit_32(1126948864);
+emit_32(3277504512);
+emit_32(1086667243);
+emit_32(1126948864);
+emit_32(3277248528);
+emit_32(1087657958);
+emit_32(1126948864);
+emit_32(3276992545);
+emit_32(1088371095);
+emit_32(1126948864);
+emit_32(3276736496);
+emit_32(1089466354);
+emit_32(1126948864);
+emit_32(3276480512);
+emit_32(1091055439);
+emit_32(1126948864);
+emit_32(3276224528);
+emit_32(1090400677);
+emit_32(1126948864);
+emit_32(3275968545);
+emit_32(1092101142);
+emit_32(1126948864);
+emit_32(3275712496);
+emit_32(1093636037);
+emit_32(1126948864);
+emit_32(3275456512);
+emit_32(1095931999);
+emit_32(1126948864);
+emit_32(3275200528);
+emit_32(1096626890);
+emit_32(1126948864);
+emit_32(3274944545);
+emit_32(1098060923);
+emit_32(1126948864);
+emit_32(3274688496);
+emit_32(1097783994);
+emit_32(1126948864);
+emit_32(3274432512);
+emit_32(1096721367);
+emit_32(1126948864);
+emit_32(3274176528);
+emit_32(1097047264);
+emit_32(1126948864);
+emit_32(3273920545);
+emit_32(1096218051);
+emit_32(1126948864);
+emit_32(3273664496);
+emit_32(1096743282);
+emit_32(1126948864);
+emit_32(3273408512);
+emit_32(1097750335);
+emit_32(1126948864);
+emit_32(3273152528);
+emit_32(1098166619);
+emit_32(1126948864);
+emit_32(3272896545);
+emit_32(1097872074);
+emit_32(1126948864);
+emit_32(3272640496);
+emit_32(1097941595);
+emit_32(1126948864);
+emit_32(3272384512);
+emit_32(1098064383);
+emit_32(1126948864);
+emit_32(3272128528);
+emit_32(1099511103);
+emit_32(1126948864);
+emit_32(3271872545);
+emit_32(1100417545);
+emit_32(1126948864);
+emit_32(3271616496);
+emit_32(1100756969);
+emit_32(1126948864);
+emit_32(3271163904);
+emit_32(1100841956);
+emit_32(1126948864);
+emit_32(3270651937);
+emit_32(1100819517);
+emit_32(1126948864);
+emit_32(3270139970);
+emit_32(1101316280);
+emit_32(1126948864);
+emit_32(3269627871);
+emit_32(1101803658);
+emit_32(1126948864);
+emit_32(3269115904);
+emit_32(1102338327);
+emit_32(1126948864);
+emit_32(3268603937);
+emit_32(1102614679);
+emit_32(1126948864);
+emit_32(3268091970);
+emit_32(1102899577);
+emit_32(1126948864);
+emit_32(3267579911);
+emit_32(1102273472);
+emit_32(1126948864);
+emit_32(3267067904);
+emit_32(1102032300);
+emit_32(1126948864);
+emit_32(3266555911);
+emit_32(1102213336);
+emit_32(1126948864);
+emit_32(3266043904);
+emit_32(1101920154);
+emit_32(1126948864);
+emit_32(3265531911);
+emit_32(1101073377);
+emit_32(1126948864);
+emit_32(3265019904);
+emit_32(1099747453);
+emit_32(1126948864);
+emit_32(3264507911);
+emit_32(1097970221);
+emit_32(1126948864);
+emit_32(3263995904);
+emit_32(1098951583);
+emit_32(1126948864);
+emit_32(3263483911);
+emit_32(1099125385);
+emit_32(1126948864);
+emit_32(3262775296);
+emit_32(1099384383);
+emit_32(1126948864);
+emit_32(3261751309);
+emit_32(1099297666);
+emit_32(1126948864);
+emit_32(3260727296);
+emit_32(1099151914);
+emit_32(1126948864);
+emit_32(3259703309);
+emit_32(1100003043);
+emit_32(1126948864);
+emit_32(3258679296);
+emit_32(1100391278);
+emit_32(1126948864);
+emit_32(3257655309);
+emit_32(1100196872);
+emit_32(1126948864);
+emit_32(3256631296);
+emit_32(1100006189);
+emit_32(1126948864);
+emit_32(3255607309);
+emit_32(1100085251);
+emit_32(1126948864);
+emit_32(3254386688);
+emit_32(1099464704);
+emit_32(1126948864);
+emit_32(3252338714);
+emit_32(1098192624);
+emit_32(1126948864);
+emit_32(3250290688);
+emit_32(1098051695);
+emit_32(1126948864);
+emit_32(3248242714);
+emit_32(1099538104);
+emit_32(1126948864);
+emit_32(3245998080);
+emit_32(1100121060);
+emit_32(1126948864);
+emit_32(3241902132);
+emit_32(1100174380);
+emit_32(1126948864);
+emit_32(3237609472);
+emit_32(1100128138);
+emit_32(1126948864);
+emit_32(3229220864);
+emit_32(1099728526);
+emit_32(1126948864);
+emit_32(0);
+emit_32(1099015494);
+emit_32(1126948864);
+emit_32(1081737216);
+emit_32(1098949119);
+emit_32(1126948864);
+emit_32(3279552512);
+emit_32(1092053820);
+emit_32(1126692880);
+emit_32(3279296528);
+emit_32(1091482168);
+emit_32(1126692880);
+emit_32(3279040545);
+emit_32(1090170556);
+emit_32(1126692880);
+emit_32(3278784496);
+emit_32(1089291577);
+emit_32(1126692880);
+emit_32(3278528512);
+emit_32(1087031308);
+emit_32(1126692880);
+emit_32(3278272528);
+emit_32(1085157335);
+emit_32(1126692880);
+emit_32(3278016545);
+emit_32(1082956060);
+emit_32(1126692880);
+emit_32(3277760496);
+emit_32(1079787745);
+emit_32(1126692880);
+emit_32(3277504512);
+emit_32(1083066831);
+emit_32(1126692880);
+emit_32(3277248528);
+emit_32(1084997260);
+emit_32(1126692880);
+emit_32(3276992545);
+emit_32(1086936056);
+emit_32(1126692880);
+emit_32(3276736496);
+emit_32(1087077194);
+emit_32(1126692880);
+emit_32(3276480512);
+emit_32(1089181120);
+emit_32(1126692880);
+emit_32(3276224528);
+emit_32(1090090592);
+emit_32(1126692880);
+emit_32(3275968545);
+emit_32(1091979287);
+emit_32(1126692880);
+emit_32(3275712496);
+emit_32(1093947779);
+emit_32(1126692880);
+emit_32(3275456512);
+emit_32(1095104148);
+emit_32(1126692880);
+emit_32(3275200528);
+emit_32(1097546806);
+emit_32(1126692880);
+emit_32(3274944545);
+emit_32(1098312476);
+emit_32(1126692880);
+emit_32(3274688496);
+emit_32(1098096050);
+emit_32(1126692880);
+emit_32(3274432512);
+emit_32(1096460062);
+emit_32(1126692880);
+emit_32(3274176528);
+emit_32(1096848350);
+emit_32(1126692880);
+emit_32(3273920545);
+emit_32(1096377539);
+emit_32(1126692880);
+emit_32(3273664496);
+emit_32(1097570714);
+emit_32(1126692880);
+emit_32(3273408512);
+emit_32(1098430756);
+emit_32(1126692880);
+emit_32(3273152528);
+emit_32(1099100848);
+emit_32(1126692880);
+emit_32(3272896545);
+emit_32(1099443103);
+emit_32(1126692880);
+emit_32(3272640496);
+emit_32(1099024459);
+emit_32(1126692880);
+emit_32(3272384512);
+emit_32(1097976827);
+emit_32(1126692880);
+emit_32(3272128528);
+emit_32(1099397281);
+emit_32(1126692880);
+emit_32(3271872545);
+emit_32(1100167250);
+emit_32(1126692880);
+emit_32(3271616496);
+emit_32(1101001916);
+emit_32(1126692880);
+emit_32(3271163904);
+emit_32(1101218133);
+emit_32(1126692880);
+emit_32(3270651937);
+emit_32(1101763445);
+emit_32(1126692880);
+emit_32(3270139970);
+emit_32(1102254703);
+emit_32(1126692880);
+emit_32(3269627871);
+emit_32(1102306188);
+emit_32(1126692880);
+emit_32(3269115904);
+emit_32(1102526179);
+emit_32(1126692880);
+emit_32(3268603937);
+emit_32(1102836453);
+emit_32(1126692880);
+emit_32(3268091970);
+emit_32(1102582120);
+emit_32(1126692880);
+emit_32(3267579911);
+emit_32(1102493673);
+emit_32(1126692880);
+emit_32(3267067904);
+emit_32(1102731752);
+emit_32(1126692880);
+emit_32(3266555911);
+emit_32(1102752566);
+emit_32(1126692880);
+emit_32(3266043904);
+emit_32(1102414243);
+emit_32(1126692880);
+emit_32(3265531911);
+emit_32(1101987945);
+emit_32(1126692880);
+emit_32(3265019904);
+emit_32(1100347133);
+emit_32(1126692880);
+emit_32(3264507911);
+emit_32(1099205706);
+emit_32(1126692880);
+emit_32(3263995904);
+emit_32(1099525784);
+emit_32(1126692880);
+emit_32(3263483911);
+emit_32(1100012533);
+emit_32(1126692880);
+emit_32(3262775296);
+emit_32(1100473434);
+emit_32(1126692880);
+emit_32(3261751309);
+emit_32(1099686268);
+emit_32(1126692880);
+emit_32(3260727296);
+emit_32(1099578474);
+emit_32(1126692880);
+emit_32(3259703309);
+emit_32(1099386952);
+emit_32(1126692880);
+emit_32(3258679296);
+emit_32(1099512257);
+emit_32(1126692880);
+emit_32(3257655309);
+emit_32(1099849269);
+emit_32(1126692880);
+emit_32(3256631296);
+emit_32(1099792017);
+emit_32(1126692880);
+emit_32(3255607309);
+emit_32(1099326974);
+emit_32(1126692880);
+emit_32(3254386688);
+emit_32(1098936798);
+emit_32(1126692880);
+emit_32(3252338714);
+emit_32(1097635096);
+emit_32(1126692880);
+emit_32(3250290688);
+emit_32(1099347316);
+emit_32(1126692880);
+emit_32(3248242714);
+emit_32(1099939237);
+emit_32(1126692880);
+emit_32(3245998080);
+emit_32(1100173489);
+emit_32(1126692880);
+emit_32(3241902132);
+emit_32(1100441086);
+emit_32(1126692880);
+emit_32(3237609472);
+emit_32(1100198130);
+emit_32(1126692880);
+emit_32(3229220864);
+emit_32(1099547122);
+emit_32(1126692880);
+emit_32(0);
+emit_32(1099279735);
+emit_32(1126692880);
+emit_32(1081737216);
+emit_32(1099508220);
+emit_32(1126692880);
+emit_32(3279552512);
+emit_32(1091859760);
+emit_32(1126436897);
+emit_32(3279296528);
+emit_32(1091230761);
+emit_32(1126436897);
+emit_32(3279040545);
+emit_32(1090930805);
+emit_32(1126436897);
+emit_32(3278784496);
+emit_32(1089555210);
+emit_32(1126436897);
+emit_32(3278528512);
+emit_32(1087108253);
+emit_32(1126436897);
+emit_32(3278272528);
+emit_32(1084241425);
+emit_32(1126436897);
+emit_32(3278016545);
+emit_32(1080584495);
+emit_32(1126436897);
+emit_32(3277760496);
+emit_32(1077009103);
+emit_32(1126436897);
+emit_32(3277504512);
+emit_32(1077476097);
+emit_32(1126436897);
+emit_32(3277248528);
+emit_32(1082163798);
+emit_32(1126436897);
+emit_32(3276992545);
+emit_32(1083224118);
+emit_32(1126436897);
+emit_32(3276736496);
+emit_32(1083925510);
+emit_32(1126436897);
+emit_32(3276480512);
+emit_32(1086781055);
+emit_32(1126436897);
+emit_32(3276224528);
+emit_32(1090787203);
+emit_32(1126436897);
+emit_32(3275968545);
+emit_32(1093020523);
+emit_32(1126436897);
+emit_32(3275712496);
+emit_32(1094356094);
+emit_32(1126436897);
+emit_32(3275456512);
+emit_32(1095272654);
+emit_32(1126436897);
+emit_32(3275200528);
+emit_32(1096919967);
+emit_32(1126436897);
+emit_32(3274944545);
+emit_32(1097664981);
+emit_32(1126436897);
+emit_32(3274688496);
+emit_32(1097850264);
+emit_32(1126436897);
+emit_32(3274432512);
+emit_32(1097462501);
+emit_32(1126436897);
+emit_32(3274176528);
+emit_32(1097374001);
+emit_32(1126436897);
+emit_32(3273920545);
+emit_32(1096574357);
+emit_32(1126436897);
+emit_32(3273664496);
+emit_32(1097971165);
+emit_32(1126436897);
+emit_32(3273408512);
+emit_32(1099181588);
+emit_32(1126436897);
+emit_32(3273152528);
+emit_32(1099865208);
+emit_32(1126436897);
+emit_32(3272896545);
+emit_32(1100222353);
+emit_32(1126436897);
+emit_32(3272640496);
+emit_32(1099751699);
+emit_32(1126436897);
+emit_32(3272384512);
+emit_32(1099151756);
+emit_32(1126436897);
+emit_32(3272128528);
+emit_32(1099314548);
+emit_32(1126436897);
+emit_32(3271872545);
+emit_32(1100567124);
+emit_32(1126436897);
+emit_32(3271616496);
+emit_32(1101301023);
+emit_32(1126436897);
+emit_32(3271163904);
+emit_32(1101937036);
+emit_32(1126436897);
+emit_32(3270651937);
+emit_32(1102452516);
+emit_32(1126436897);
+emit_32(3270139970);
+emit_32(1102878763);
+emit_32(1126436897);
+emit_32(3269627871);
+emit_32(1102764678);
+emit_32(1126436897);
+emit_32(3269115904);
+emit_32(1103315599);
+emit_32(1126436897);
+emit_32(3268603937);
+emit_32(1103337986);
+emit_32(1126436897);
+emit_32(3268091970);
+emit_32(1103125021);
+emit_32(1126436897);
+emit_32(3267579911);
+emit_32(1103452701);
+emit_32(1126436897);
+emit_32(3267067904);
+emit_32(1103518551);
+emit_32(1126436897);
+emit_32(3266555911);
+emit_32(1103087377);
+emit_32(1126436897);
+emit_32(3266043904);
+emit_32(1102707740);
+emit_32(1126436897);
+emit_32(3265531911);
+emit_32(1102273682);
+emit_32(1126436897);
+emit_32(3265019904);
+emit_32(1100733009);
+emit_32(1126436897);
+emit_32(3264507911);
+emit_32(1100143447);
+emit_32(1126436897);
+emit_32(3263995904);
+emit_32(1100648022);
+emit_32(1126436897);
+emit_32(3263483911);
+emit_32(1100809555);
+emit_32(1126436897);
+emit_32(3262775296);
+emit_32(1100886835);
+emit_32(1126436897);
+emit_32(3261751309);
+emit_32(1100168508);
+emit_32(1126436897);
+emit_32(3260727296);
+emit_32(1099798833);
+emit_32(1126436897);
+emit_32(3259703309);
+emit_32(1099326502);
+emit_32(1126436897);
+emit_32(3258679296);
+emit_32(1099188195);
+emit_32(1126436897);
+emit_32(3257655309);
+emit_32(1098951478);
+emit_32(1126436897);
+emit_32(3256631296);
+emit_32(1099140746);
+emit_32(1126436897);
+emit_32(3255607309);
+emit_32(1097892836);
+emit_32(1126436897);
+emit_32(3254386688);
+emit_32(1096986552);
+emit_32(1126436897);
+emit_32(3252338714);
+emit_32(1098931818);
+emit_32(1126436897);
+emit_32(3250290688);
+emit_32(1099424072);
+emit_32(1126436897);
+emit_32(3248242714);
+emit_32(1099604217);
+emit_32(1126436897);
+emit_32(3245998080);
+emit_32(1100206309);
+emit_32(1126436897);
+emit_32(3241902132);
+emit_32(1099889954);
+emit_32(1126436897);
+emit_32(3237609472);
+emit_32(1099854460);
+emit_32(1126436897);
+emit_32(3229220864);
+emit_32(1099540935);
+emit_32(1126436897);
+emit_32(0);
+emit_32(1099312713);
+emit_32(1126436897);
+emit_32(1081737216);
+emit_32(1099149921);
+emit_32(1126436897);
+emit_32(3279552512);
+emit_32(1091110007);
+emit_32(1126180848);
+emit_32(3279296528);
+emit_32(1090566603);
+emit_32(1126180848);
+emit_32(3279040545);
+emit_32(1089927538);
+emit_32(1126180848);
+emit_32(3278784496);
+emit_32(1088849057);
+emit_32(1126180848);
+emit_32(3278528512);
+emit_32(1085306191);
+emit_32(1126180848);
+emit_32(3278272528);
+emit_32(1084238930);
+emit_32(1126180848);
+emit_32(3278016545);
+emit_32(1082904260);
+emit_32(1126180848);
+emit_32(3277760496);
+emit_32(1078098238);
+emit_32(1126180848);
+emit_32(3277504512);
+emit_32(1077638962);
+emit_32(1126180848);
+emit_32(3277248528);
+emit_32(1076413302);
+emit_32(1126180848);
+emit_32(3276992545);
+emit_32(1076646547);
+emit_32(1126180848);
+emit_32(3276736496);
+emit_32(1080275711);
+emit_32(1126180848);
+emit_32(3276480512);
+emit_32(1085520143);
+emit_32(1126180848);
+emit_32(3276224528);
+emit_32(1089702514);
+emit_32(1126180848);
+emit_32(3275968545);
+emit_32(1092246705);
+emit_32(1126180848);
+emit_32(3275712496);
+emit_32(1093963402);
+emit_32(1126180848);
+emit_32(3275456512);
+emit_32(1095512778);
+emit_32(1126180848);
+emit_32(3275200528);
+emit_32(1096063386);
+emit_32(1126180848);
+emit_32(3274944545);
+emit_32(1098150157);
+emit_32(1126180848);
+emit_32(3274688496);
+emit_32(1098201747);
+emit_32(1126180848);
+emit_32(3274432512);
+emit_32(1098080322);
+emit_32(1126180848);
+emit_32(3274176528);
+emit_32(1097170158);
+emit_32(1126180848);
+emit_32(3273920545);
+emit_32(1097720975);
+emit_32(1126180848);
+emit_32(3273664496);
+emit_32(1098994627);
+emit_32(1126180848);
+emit_32(3273408512);
+emit_32(1099145570);
+emit_32(1126180848);
+emit_32(3273152528);
+emit_32(1100249878);
+emit_32(1126180848);
+emit_32(3272896545);
+emit_32(1100617613);
+emit_32(1126180848);
+emit_32(3272640496);
+emit_32(1100383781);
+emit_32(1126180848);
+emit_32(3272384512);
+emit_32(1099661417);
+emit_32(1126180848);
+emit_32(3272128528);
+emit_32(1099771570);
+emit_32(1126180848);
+emit_32(3271872545);
+emit_32(1100856322);
+emit_32(1126180848);
+emit_32(3271616496);
+emit_32(1101777863);
+emit_32(1126180848);
+emit_32(3271163904);
+emit_32(1102608912);
+emit_32(1126180848);
+emit_32(3270651937);
+emit_32(1103420142);
+emit_32(1126180848);
+emit_32(3270139970);
+emit_32(1104133541);
+emit_32(1126180848);
+emit_32(3269627871);
+emit_32(1104300737);
+emit_32(1126180848);
+emit_32(3269115904);
+emit_32(1104750366);
+emit_32(1126180848);
+emit_32(3268603937);
+emit_32(1104692327);
+emit_32(1126180848);
+emit_32(3268091970);
+emit_32(1104180255);
+emit_32(1126180848);
+emit_32(3267579911);
+emit_32(1104286004);
+emit_32(1126180848);
+emit_32(3267067904);
+emit_32(1104294760);
+emit_32(1126180848);
+emit_32(3266555911);
+emit_32(1103989519);
+emit_32(1126180848);
+emit_32(3266043904);
+emit_32(1103116370);
+emit_32(1126180848);
+emit_32(3265531911);
+emit_32(1102176374);
+emit_32(1126180848);
+emit_32(3265019904);
+emit_32(1101252683);
+emit_32(1126180848);
+emit_32(3264507911);
+emit_32(1100807091);
+emit_32(1126180848);
+emit_32(3263995904);
+emit_32(1101057072);
+emit_32(1126180848);
+emit_32(3263483911);
+emit_32(1101590954);
+emit_32(1126180848);
+emit_32(3262775296);
+emit_32(1101241516);
+emit_32(1126180848);
+emit_32(3261751309);
+emit_32(1100721632);
+emit_32(1126180848);
+emit_32(3260727296);
+emit_32(1100065328);
+emit_32(1126180848);
+emit_32(3259703309);
+emit_32(1099340867);
+emit_32(1126180848);
+emit_32(3258679296);
+emit_32(1099102631);
+emit_32(1126180848);
+emit_32(3257655309);
+emit_32(1098007550);
+emit_32(1126180848);
+emit_32(3256631296);
+emit_32(1097436391);
+emit_32(1126180848);
+emit_32(3255607309);
+emit_32(1097548589);
+emit_32(1126180848);
+emit_32(3254386688);
+emit_32(1097682282);
+emit_32(1126180848);
+emit_32(3252338714);
+emit_32(1099124127);
+emit_32(1126180848);
+emit_32(3250290688);
+emit_32(1098983145);
+emit_32(1126180848);
+emit_32(3248242714);
+emit_32(1099734136);
+emit_32(1126180848);
+emit_32(3245998080);
+emit_32(1099916745);
+emit_32(1126180848);
+emit_32(3241902132);
+emit_32(1099462450);
+emit_32(1126180848);
+emit_32(3237609472);
+emit_32(1099513410);
+emit_32(1126180848);
+emit_32(3229220864);
+emit_32(1099346425);
+emit_32(1126180848);
+emit_32(0);
+emit_32(1099133931);
+emit_32(1126180848);
+emit_32(1081737216);
+emit_32(1099236901);
+emit_32(1126180848);
+emit_32(3279552512);
+emit_32(1089511002);
+emit_32(1125924864);
+emit_32(3279296528);
+emit_32(1089751084);
+emit_32(1125924864);
+emit_32(3279040545);
+emit_32(1089625192);
+emit_32(1125924864);
+emit_32(3278784496);
+emit_32(1088308768);
+emit_32(1125924864);
+emit_32(3278528512);
+emit_32(1083791334);
+emit_32(1125924864);
+emit_32(3278272528);
+emit_32(1083037702);
+emit_32(1125924864);
+emit_32(3278016545);
+emit_32(1082409647);
+emit_32(1125924864);
+emit_32(3277760496);
+emit_32(1076909237);
+emit_32(1125924864);
+emit_32(3277504512);
+emit_32(1076578474);
+emit_32(1125924864);
+emit_32(3277248528);
+emit_32(1079282500);
+emit_32(1125924864);
+emit_32(3276992545);
+emit_32(1079322891);
+emit_32(1125924864);
+emit_32(3276736496);
+emit_32(1080482867);
+emit_32(1125924864);
+emit_32(3276480512);
+emit_32(1083066517);
+emit_32(1125924864);
+emit_32(3276224528);
+emit_32(1086368944);
+emit_32(1125924864);
+emit_32(3275968545);
+emit_32(1090788545);
+emit_32(1125924864);
+emit_32(3275712496);
+emit_32(1093220381);
+emit_32(1125924864);
+emit_32(3275456512);
+emit_32(1094138095);
+emit_32(1125924864);
+emit_32(3275200528);
+emit_32(1095485201);
+emit_32(1125924864);
+emit_32(3274944545);
+emit_32(1098300103);
+emit_32(1125924864);
+emit_32(3274688496);
+emit_32(1099012348);
+emit_32(1125924864);
+emit_32(3274432512);
+emit_32(1097753795);
+emit_32(1125924864);
+emit_32(3274176528);
+emit_32(1096927727);
+emit_32(1125924864);
+emit_32(3273920545);
+emit_32(1098937847);
+emit_32(1125924864);
+emit_32(3273664496);
+emit_32(1099750598);
+emit_32(1125924864);
+emit_32(3273408512);
+emit_32(1099826096);
+emit_32(1125924864);
+emit_32(3273152528);
+emit_32(1100180514);
+emit_32(1125924864);
+emit_32(3272896545);
+emit_32(1100786015);
+emit_32(1125924864);
+emit_32(3272640496);
+emit_32(1100625006);
+emit_32(1125924864);
+emit_32(3272384512);
+emit_32(1100107638);
+emit_32(1125924864);
+emit_32(3272128528);
+emit_32(1100331457);
+emit_32(1125924864);
+emit_32(3271872545);
+emit_32(1101249590);
+emit_32(1125924864);
+emit_32(3271616496);
+emit_32(1102354737);
+emit_32(1125924864);
+emit_32(3271163904);
+emit_32(1103441691);
+emit_32(1125924864);
+emit_32(3270651937);
+emit_32(1104738936);
+emit_32(1125924864);
+emit_32(3270139970);
+emit_32(1105236276);
+emit_32(1125924864);
+emit_32(3269627871);
+emit_32(1105460304);
+emit_32(1125924864);
+emit_32(3269115904);
+emit_32(1105771993);
+emit_32(1125924864);
+emit_32(3268603937);
+emit_32(1105867833);
+emit_32(1125924864);
+emit_32(3268091970);
+emit_32(1105681868);
+emit_32(1125924864);
+emit_32(3267579911);
+emit_32(1105399854);
+emit_32(1125924864);
+emit_32(3267067904);
+emit_32(1104596592);
+emit_32(1125924864);
+emit_32(3266555911);
+emit_32(1104130657);
+emit_32(1125924864);
+emit_32(3266043904);
+emit_32(1103243877);
+emit_32(1125924864);
+emit_32(3265531911);
+emit_32(1102380270);
+emit_32(1125924864);
+emit_32(3265019904);
+emit_32(1102020241);
+emit_32(1125924864);
+emit_32(3264507911);
+emit_32(1101572656);
+emit_32(1125924864);
+emit_32(3263995904);
+emit_32(1101722026);
+emit_32(1125924864);
+emit_32(3263483911);
+emit_32(1101703833);
+emit_32(1125924864);
+emit_32(3262775296);
+emit_32(1101282463);
+emit_32(1125924864);
+emit_32(3261751309);
+emit_32(1100994314);
+emit_32(1125924864);
+emit_32(3260727296);
+emit_32(1100261255);
+emit_32(1125924864);
+emit_32(3259703309);
+emit_32(1099538104);
+emit_32(1125924864);
+emit_32(3258679296);
+emit_32(1099005113);
+emit_32(1125924864);
+emit_32(3257655309);
+emit_32(1097288542);
+emit_32(1125924864);
+emit_32(3256631296);
+emit_32(1096558523);
+emit_32(1125924864);
+emit_32(3255607309);
+emit_32(1097476761);
+emit_32(1125924864);
+emit_32(3254386688);
+emit_32(1098510552);
+emit_32(1125924864);
+emit_32(3252338714);
+emit_32(1098575249);
+emit_32(1125924864);
+emit_32(3250290688);
+emit_32(1099187146);
+emit_32(1125924864);
+emit_32(3248242714);
+emit_32(1099341339);
+emit_32(1125924864);
+emit_32(3245998080);
+emit_32(1099196531);
+emit_32(1125924864);
+emit_32(3241902132);
+emit_32(1099085906);
+emit_32(1125924864);
+emit_32(3237609472);
+emit_32(1099120876);
+emit_32(1125924864);
+emit_32(3229220864);
+emit_32(1098773955);
+emit_32(1125924864);
+emit_32(0);
+emit_32(1099088580);
+emit_32(1125924864);
+emit_32(1081737216);
+emit_32(1099397648);
+emit_32(1125924864);
+emit_32(3279552512);
+emit_32(1087350222);
+emit_32(1125668880);
+emit_32(3279296528);
+emit_32(1087173453);
+emit_32(1125668880);
+emit_32(3279040545);
+emit_32(1087524370);
+emit_32(1125668880);
+emit_32(3278784496);
+emit_32(1085198146);
+emit_32(1125668880);
+emit_32(3278528512);
+emit_32(1082565654);
+emit_32(1125668880);
+emit_32(3278272528);
+emit_32(1077145753);
+emit_32(1125668880);
+emit_32(3278016545);
+emit_32(1072746264);
+emit_32(1125668880);
+emit_32(3277760496);
+emit_32(1070147557);
+emit_32(1125668880);
+emit_32(3277504512);
+emit_32(1075759536);
+emit_32(1125668880);
+emit_32(3277248528);
+emit_32(1077469889);
+emit_32(1125668880);
+emit_32(3276992545);
+emit_32(1076408479);
+emit_32(1125668880);
+emit_32(3276736496);
+emit_32(1077817429);
+emit_32(1125668880);
+emit_32(3276480512);
+emit_32(1080487943);
+emit_32(1125668880);
+emit_32(3276224528);
+emit_32(1082089831);
+emit_32(1125668880);
+emit_32(3275968545);
+emit_32(1089194856);
+emit_32(1125668880);
+emit_32(3275712496);
+emit_32(1092143819);
+emit_32(1125668880);
+emit_32(3275456512);
+emit_32(1093271971);
+emit_32(1125668880);
+emit_32(3275200528);
+emit_32(1095061157);
+emit_32(1125668880);
+emit_32(3274944545);
+emit_32(1096826225);
+emit_32(1125668880);
+emit_32(3274688496);
+emit_32(1097739220);
+emit_32(1125668880);
+emit_32(3274432512);
+emit_32(1097853200);
+emit_32(1125668880);
+emit_32(3274176528);
+emit_32(1097601856);
+emit_32(1125668880);
+emit_32(3273920545);
+emit_32(1099313866);
+emit_32(1125668880);
+emit_32(3273664496);
+emit_32(1100242538);
+emit_32(1125668880);
+emit_32(3273408512);
+emit_32(1100791520);
+emit_32(1125668880);
+emit_32(3273152528);
+emit_32(1100534671);
+emit_32(1125668880);
+emit_32(3272896545);
+emit_32(1100486803);
+emit_32(1125668880);
+emit_32(3272640496);
+emit_32(1100712667);
+emit_32(1125668880);
+emit_32(3272384512);
+emit_32(1100661549);
+emit_32(1125668880);
+emit_32(3272128528);
+emit_32(1101351407);
+emit_32(1125668880);
+emit_32(3271872545);
+emit_32(1102206154);
+emit_32(1125668880);
+emit_32(3271616496);
+emit_32(1103301286);
+emit_32(1125668880);
+emit_32(3271163904);
+emit_32(1104362760);
+emit_32(1125668880);
+emit_32(3270651937);
+emit_32(1105383916);
+emit_32(1125668880);
+emit_32(3270139970);
+emit_32(1106277093);
+emit_32(1125668880);
+emit_32(3269627871);
+emit_32(1106308235);
+emit_32(1125668880);
+emit_32(3269115904);
+emit_32(1106719801);
+emit_32(1125668880);
+emit_32(3268603937);
+emit_32(1106707323);
+emit_32(1125668880);
+emit_32(3268091970);
+emit_32(1106722475);
+emit_32(1125668880);
+emit_32(3267579911);
+emit_32(1106438259);
+emit_32(1125668880);
+emit_32(3267067904);
+emit_32(1105408609);
+emit_32(1125668880);
+emit_32(3266555911);
+emit_32(1104049917);
+emit_32(1125668880);
+emit_32(3266043904);
+emit_32(1103297564);
+emit_32(1125668880);
+emit_32(3265531911);
+emit_32(1102461429);
+emit_32(1125668880);
+emit_32(3265019904);
+emit_32(1102366533);
+emit_32(1125668880);
+emit_32(3264507911);
+emit_32(1101967340);
+emit_32(1125668880);
+emit_32(3263995904);
+emit_32(1101786146);
+emit_32(1125668880);
+emit_32(3263483911);
+emit_32(1101553258);
+emit_32(1125668880);
+emit_32(3262775296);
+emit_32(1101001340);
+emit_32(1125668880);
+emit_32(3261751309);
+emit_32(1100728448);
+emit_32(1125668880);
+emit_32(3260727296);
+emit_32(1100022546);
+emit_32(1125668880);
+emit_32(3259703309);
+emit_32(1099153224);
+emit_32(1125668880);
+emit_32(3258679296);
+emit_32(1097869977);
+emit_32(1125668880);
+emit_32(3257655309);
+emit_32(1096668099);
+emit_32(1125668880);
+emit_32(3256631296);
+emit_32(1097741107);
+emit_32(1125668880);
+emit_32(3255607309);
+emit_32(1097981755);
+emit_32(1125668880);
+emit_32(3254386688);
+emit_32(1097933206);
+emit_32(1125668880);
+emit_32(3252338714);
+emit_32(1098260572);
+emit_32(1125668880);
+emit_32(3250290688);
+emit_32(1098406219);
+emit_32(1125668880);
+emit_32(3248242714);
+emit_32(1098084516);
+emit_32(1125668880);
+emit_32(3245998080);
+emit_32(1098079168);
+emit_32(1125668880);
+emit_32(3241902132);
+emit_32(1098423520);
+emit_32(1125668880);
+emit_32(3237609472);
+emit_32(1098536662);
+emit_32(1125668880);
+emit_32(3229220864);
+emit_32(1098183711);
+emit_32(1125668880);
+emit_32(0);
+emit_32(1099109709);
+emit_32(1125668880);
+emit_32(1081737216);
+emit_32(1099796421);
+emit_32(1125668880);
+emit_32(3279552512);
+emit_32(1084599032);
+emit_32(1125412897);
+emit_32(3279296528);
+emit_32(1083540012);
+emit_32(1125412897);
+emit_32(3279040545);
+emit_32(1082794369);
+emit_32(1125412897);
+emit_32(3278784496);
+emit_32(1078855100);
+emit_32(1125412897);
+emit_32(3278528512);
+emit_32(1074302393);
+emit_32(1125412897);
+emit_32(3278272528);
+emit_32(1066993608);
+emit_32(1125412897);
+emit_32(3278016545);
+emit_32(1038259757);
+emit_32(1125412897);
+emit_32(3277760496);
+emit_32(1064430889);
+emit_32(1125412897);
+emit_32(3277504512);
+emit_32(1068992026);
+emit_32(1125412897);
+emit_32(3277248528);
+emit_32(1074031860);
+emit_32(1125412897);
+emit_32(3276992545);
+emit_32(1074904275);
+emit_32(1125412897);
+emit_32(3276736496);
+emit_32(1074708653);
+emit_32(1125412897);
+emit_32(3276480512);
+emit_32(1076428066);
+emit_32(1125412897);
+emit_32(3276224528);
+emit_32(1077918302);
+emit_32(1125412897);
+emit_32(3275968545);
+emit_32(1085074875);
+emit_32(1125412897);
+emit_32(3275712496);
+emit_32(1090557240);
+emit_32(1125412897);
+emit_32(3275456512);
+emit_32(1092638422);
+emit_32(1125412897);
+emit_32(3275200528);
+emit_32(1094944555);
+emit_32(1125412897);
+emit_32(3274944545);
+emit_32(1097008048);
+emit_32(1125412897);
+emit_32(3274688496);
+emit_32(1097387737);
+emit_32(1125412897);
+emit_32(3274432512);
+emit_32(1098056204);
+emit_32(1125412897);
+emit_32(3274176528);
+emit_32(1098092066);
+emit_32(1125412897);
+emit_32(3273920545);
+emit_32(1099683122);
+emit_32(1125412897);
+emit_32(3273664496);
+emit_32(1100803369);
+emit_32(1125412897);
+emit_32(3273408512);
+emit_32(1101115267);
+emit_32(1125412897);
+emit_32(3273152528);
+emit_32(1101294207);
+emit_32(1125412897);
+emit_32(3272896545);
+emit_32(1101133932);
+emit_32(1125412897);
+emit_32(3272640496);
+emit_32(1101242093);
+emit_32(1125412897);
+emit_32(3272384512);
+emit_32(1101498994);
+emit_32(1125412897);
+emit_32(3272128528);
+emit_32(1102385303);
+emit_32(1125412897);
+emit_32(3271872545);
+emit_32(1103696757);
+emit_32(1125412897);
+emit_32(3271616496);
+emit_32(1104690492);
+emit_32(1125412897);
+emit_32(3271163904);
+emit_32(1105923146);
+emit_32(1125412897);
+emit_32(3270651937);
+emit_32(1106797868);
+emit_32(1125412897);
+emit_32(3270139970);
+emit_32(1107151867);
+emit_32(1125412897);
+emit_32(3269627871);
+emit_32(1107261181);
+emit_32(1125412897);
+emit_32(3269115904);
+emit_32(1107270933);
+emit_32(1125412897);
+emit_32(3268603937);
+emit_32(1107353141);
+emit_32(1125412897);
+emit_32(3268091970);
+emit_32(1107243880);
+emit_32(1125412897);
+emit_32(3267579911);
+emit_32(1106494620);
+emit_32(1125412897);
+emit_32(3267067904);
+emit_32(1105521174);
+emit_32(1125412897);
+emit_32(3266555911);
+emit_32(1104449162);
+emit_32(1125412897);
+emit_32(3266043904);
+emit_32(1103510110);
+emit_32(1125412897);
+emit_32(3265531911);
+emit_32(1102747953);
+emit_32(1125412897);
+emit_32(3265019904);
+emit_32(1102196874);
+emit_32(1125412897);
+emit_32(3264507911);
+emit_32(1102074085);
+emit_32(1125412897);
+emit_32(3263995904);
+emit_32(1101784888);
+emit_32(1125412897);
+emit_32(3263483911);
+emit_32(1101295203);
+emit_32(1125412897);
+emit_32(3262775296);
+emit_32(1100689231);
+emit_32(1125412897);
+emit_32(3261751309);
+emit_32(1100003515);
+emit_32(1125412897);
+emit_32(3260727296);
+emit_32(1099230295);
+emit_32(1125412897);
+emit_32(3259703309);
+emit_32(1098733375);
+emit_32(1125412897);
+emit_32(3258679296);
+emit_32(1096895326);
+emit_32(1125412897);
+emit_32(3257655309);
+emit_32(1095571918);
+emit_32(1125412897);
+emit_32(3256631296);
+emit_32(1096896374);
+emit_32(1125412897);
+emit_32(3255607309);
+emit_32(1097195638);
+emit_32(1125412897);
+emit_32(3254386688);
+emit_32(1097122238);
+emit_32(1125412897);
+emit_32(3252338714);
+emit_32(1098028522);
+emit_32(1125412897);
+emit_32(3250290688);
+emit_32(1096753663);
+emit_32(1125412897);
+emit_32(3248242714);
+emit_32(1097797416);
+emit_32(1125412897);
+emit_32(3245998080);
+emit_32(1098329673);
+emit_32(1125412897);
+emit_32(3241902132);
+emit_32(1098215273);
+emit_32(1125412897);
+emit_32(3237609472);
+emit_32(1097896401);
+emit_32(1125412897);
+emit_32(3229220864);
+emit_32(1098533411);
+emit_32(1125412897);
+emit_32(0);
+emit_32(1099233650);
+emit_32(1125412897);
+emit_32(1081737216);
+emit_32(1100171654);
+emit_32(1125412897);
+emit_32(3279552512);
+emit_32(1085043754);
+emit_32(1125156848);
+emit_32(3279296528);
+emit_32(1082745359);
+emit_32(1125156848);
+emit_32(3279040545);
+emit_32(1077929543);
+emit_32(1125156848);
+emit_32(3278784496);
+emit_32(1077120797);
+emit_32(1125156848);
+emit_32(3278528512);
+emit_32(1070829467);
+emit_32(1125156848);
+emit_32(3278272528);
+emit_32(3196693122);
+emit_32(1125156848);
+emit_32(3278016545);
+emit_32(3203591578);
+emit_32(1125156848);
+emit_32(3277760496);
+emit_32(3178809932);
+emit_32(1125156848);
+emit_32(3277504512);
+emit_32(1062996554);
+emit_32(1125156848);
+emit_32(3277248528);
+emit_32(1067740194);
+emit_32(1125156848);
+emit_32(3276992545);
+emit_32(1071204690);
+emit_32(1125156848);
+emit_32(3276736496);
+emit_32(1074277437);
+emit_32(1125156848);
+emit_32(3276480512);
+emit_32(1077601171);
+emit_32(1125156848);
+emit_32(3276224528);
+emit_32(1081521125);
+emit_32(1125156848);
+emit_32(3275968545);
+emit_32(1082948300);
+emit_32(1125156848);
+emit_32(3275712496);
+emit_32(1087836804);
+emit_32(1125156848);
+emit_32(3275456512);
+emit_32(1091823815);
+emit_32(1125156848);
+emit_32(3275200528);
+emit_32(1094296745);
+emit_32(1125156848);
+emit_32(3274944545);
+emit_32(1095976039);
+emit_32(1125156848);
+emit_32(3274688496);
+emit_32(1097507484);
+emit_32(1125156848);
+emit_32(3274432512);
+emit_32(1097570923);
+emit_32(1125156848);
+emit_32(3274176528);
+emit_32(1098982359);
+emit_32(1125156848);
+emit_32(3273920545);
+emit_32(1100051802);
+emit_32(1125156848);
+emit_32(3273664496);
+emit_32(1100994419);
+emit_32(1125156848);
+emit_32(3273408512);
+emit_32(1102158705);
+emit_32(1125156848);
+emit_32(3273152528);
+emit_32(1102017357);
+emit_32(1125156848);
+emit_32(3272896545);
+emit_32(1102232735);
+emit_32(1125156848);
+emit_32(3272640496);
+emit_32(1101864265);
+emit_32(1125156848);
+emit_32(3272384512);
+emit_32(1102610222);
+emit_32(1125156848);
+emit_32(3272128528);
+emit_32(1103466332);
+emit_32(1125156848);
+emit_32(3271872545);
+emit_32(1104473437);
+emit_32(1125156848);
+emit_32(3271616496);
+emit_32(1106243066);
+emit_32(1125156848);
+emit_32(3271163904);
+emit_32(1107111235);
+emit_32(1125156848);
+emit_32(3270651937);
+emit_32(1107425205);
+emit_32(1125156848);
+emit_32(3270139970);
+emit_32(1107552502);
+emit_32(1125156848);
+emit_32(3269627871);
+emit_32(1107600002);
+emit_32(1125156848);
+emit_32(3269115904);
+emit_32(1107564875);
+emit_32(1125156848);
+emit_32(3268603937);
+emit_32(1107418258);
+emit_32(1125156848);
+emit_32(3268091970);
+emit_32(1107034584);
+emit_32(1125156848);
+emit_32(3267579911);
+emit_32(1106363600);
+emit_32(1125156848);
+emit_32(3267067904);
+emit_32(1105390731);
+emit_32(1125156848);
+emit_32(3266555911);
+emit_32(1104501591);
+emit_32(1125156848);
+emit_32(3266043904);
+emit_32(1103946108);
+emit_32(1125156848);
+emit_32(3265531911);
+emit_32(1102869325);
+emit_32(1125156848);
+emit_32(3265019904);
+emit_32(1101989360);
+emit_32(1125156848);
+emit_32(3264507911);
+emit_32(1101780170);
+emit_32(1125156848);
+emit_32(3263995904);
+emit_32(1101640971);
+emit_32(1125156848);
+emit_32(3263483911);
+emit_32(1101030700);
+emit_32(1125156848);
+emit_32(3262775296);
+emit_32(1100725564);
+emit_32(1125156848);
+emit_32(3261751309);
+emit_32(1099604322);
+emit_32(1125156848);
+emit_32(3260727296);
+emit_32(1099292318);
+emit_32(1125156848);
+emit_32(3259703309);
+emit_32(1098829949);
+emit_32(1125156848);
+emit_32(3258679296);
+emit_32(1097125803);
+emit_32(1125156848);
+emit_32(3257655309);
+emit_32(1096142658);
+emit_32(1125156848);
+emit_32(3256631296);
+emit_32(1095542138);
+emit_32(1125156848);
+emit_32(3255607309);
+emit_32(1096456811);
+emit_32(1125156848);
+emit_32(3254386688);
+emit_32(1096482501);
+emit_32(1125156848);
+emit_32(3252338714);
+emit_32(1096896270);
+emit_32(1125156848);
+emit_32(3250290688);
+emit_32(1096761213);
+emit_32(1125156848);
+emit_32(3248242714);
+emit_32(1096850971);
+emit_32(1125156848);
+emit_32(3245998080);
+emit_32(1096941463);
+emit_32(1125156848);
+emit_32(3241902132);
+emit_32(1096922589);
+emit_32(1125156848);
+emit_32(3237609472);
+emit_32(1097331429);
+emit_32(1125156848);
+emit_32(3229220864);
+emit_32(1098308177);
+emit_32(1125156848);
+emit_32(0);
+emit_32(1099200882);
+emit_32(1125156848);
+emit_32(1081737216);
+emit_32(1099891107);
+emit_32(1125156848);
+emit_32(3279552512);
+emit_32(1084907963);
+emit_32(1124900864);
+emit_32(3279296528);
+emit_32(1083246159);
+emit_32(1124900864);
+emit_32(3279040545);
+emit_32(1077321704);
+emit_32(1124900864);
+emit_32(3278784496);
+emit_32(1069416909);
+emit_32(1124900864);
+emit_32(3278528512);
+emit_32(1044789651);
+emit_32(1124900864);
+emit_32(3278272528);
+emit_32(3167012033);
+emit_32(1124900864);
+emit_32(3278016545);
+emit_32(3192403624);
+emit_32(1124900864);
+emit_32(3277760496);
+emit_32(3204872485);
+emit_32(1124900864);
+emit_32(3277504512);
+emit_32(1048751859);
+emit_32(1124900864);
+emit_32(3277248528);
+emit_32(1057065154);
+emit_32(1124900864);
+emit_32(3276992545);
+emit_32(1067451207);
+emit_32(1124900864);
+emit_32(3276736496);
+emit_32(1076983266);
+emit_32(1124900864);
+emit_32(3276480512);
+emit_32(1078929255);
+emit_32(1124900864);
+emit_32(3276224528);
+emit_32(1081361406);
+emit_32(1124900864);
+emit_32(3275968545);
+emit_32(1083089858);
+emit_32(1124900864);
+emit_32(3275712496);
+emit_32(1087525083);
+emit_32(1124900864);
+emit_32(3275456512);
+emit_32(1091337443);
+emit_32(1124900864);
+emit_32(3275200528);
+emit_32(1093300912);
+emit_32(1124900864);
+emit_32(3274944545);
+emit_32(1094898103);
+emit_32(1124900864);
+emit_32(3274688496);
+emit_32(1096638530);
+emit_32(1124900864);
+emit_32(3274432512);
+emit_32(1097274071);
+emit_32(1124900864);
+emit_32(3274176528);
+emit_32(1099026766);
+emit_32(1124900864);
+emit_32(3273920545);
+emit_32(1099861538);
+emit_32(1124900864);
+emit_32(3273664496);
+emit_32(1101176137);
+emit_32(1124900864);
+emit_32(3273408512);
+emit_32(1101893049);
+emit_32(1124900864);
+emit_32(3273152528);
+emit_32(1101975047);
+emit_32(1124900864);
+emit_32(3272896545);
+emit_32(1102502691);
+emit_32(1124900864);
+emit_32(3272640496);
+emit_32(1102587573);
+emit_32(1124900864);
+emit_32(3272384512);
+emit_32(1103471103);
+emit_32(1124900864);
+emit_32(3272128528);
+emit_32(1104395895);
+emit_32(1124900864);
+emit_32(3271872545);
+emit_32(1105537742);
+emit_32(1124900864);
+emit_32(3271616496);
+emit_32(1106756659);
+emit_32(1124900864);
+emit_32(3271163904);
+emit_32(1107634867);
+emit_32(1124900864);
+emit_32(3270651937);
+emit_32(1108079516);
+emit_32(1124900864);
+emit_32(3270139970);
+emit_32(1107976153);
+emit_32(1124900864);
+emit_32(3269627871);
+emit_32(1107884271);
+emit_32(1124900864);
+emit_32(3269115904);
+emit_32(1107747642);
+emit_32(1124900864);
+emit_32(3268603937);
+emit_32(1107549985);
+emit_32(1124900864);
+emit_32(3268091970);
+emit_32(1106944773);
+emit_32(1124900864);
+emit_32(3267579911);
+emit_32(1106247732);
+emit_32(1124900864);
+emit_32(3267067904);
+emit_32(1105208646);
+emit_32(1124900864);
+emit_32(3266555911);
+emit_32(1104283802);
+emit_32(1124900864);
+emit_32(3266043904);
+emit_32(1103606946);
+emit_32(1124900864);
+emit_32(3265531911);
+emit_32(1102871160);
+emit_32(1124900864);
+emit_32(3265019904);
+emit_32(1101718513);
+emit_32(1124900864);
+emit_32(3264507911);
+emit_32(1101446513);
+emit_32(1124900864);
+emit_32(3263995904);
+emit_32(1101370543);
+emit_32(1124900864);
+emit_32(3263483911);
+emit_32(1100714292);
+emit_32(1124900864);
+emit_32(3262775296);
+emit_32(1099954599);
+emit_32(1124900864);
+emit_32(3261751309);
+emit_32(1099576325);
+emit_32(1124900864);
+emit_32(3260727296);
+emit_32(1099307680);
+emit_32(1124900864);
+emit_32(3259703309);
+emit_32(1098767978);
+emit_32(1124900864);
+emit_32(3258679296);
+emit_32(1098097938);
+emit_32(1124900864);
+emit_32(3257655309);
+emit_32(1096914095);
+emit_32(1124900864);
+emit_32(3256631296);
+emit_32(1096195192);
+emit_32(1124900864);
+emit_32(3255607309);
+emit_32(1095657482);
+emit_32(1124900864);
+emit_32(3254386688);
+emit_32(1095370487);
+emit_32(1124900864);
+emit_32(3252338714);
+emit_32(1095450703);
+emit_32(1124900864);
+emit_32(3250290688);
+emit_32(1094766612);
+emit_32(1124900864);
+emit_32(3248242714);
+emit_32(1095587018);
+emit_32(1124900864);
+emit_32(3245998080);
+emit_32(1094951266);
+emit_32(1124900864);
+emit_32(3241902132);
+emit_32(1094949903);
+emit_32(1124900864);
+emit_32(3237609472);
+emit_32(1096714656);
+emit_32(1124900864);
+emit_32(3229220864);
+emit_32(1098445226);
+emit_32(1124900864);
+emit_32(0);
+emit_32(1099331587);
+emit_32(1124900864);
+emit_32(1081737216);
+emit_32(1100260206);
+emit_32(1124900864);
+emit_32(3279552512);
+emit_32(1083591665);
+emit_32(1124644880);
+emit_32(3279296528);
+emit_32(1079852212);
+emit_32(1124644880);
+emit_32(3279040545);
+emit_32(1072228855);
+emit_32(1124644880);
+emit_32(3278784496);
+emit_32(1066448684);
+emit_32(1124644880);
+emit_32(3278528512);
+emit_32(1057555518);
+emit_32(1124644880);
+emit_32(3278272528);
+emit_32(1063153790);
+emit_32(1124644880);
+emit_32(3278016545);
+emit_32(1058210333);
+emit_32(1124644880);
+emit_32(3277760496);
+emit_32(1049561427);
+emit_32(1124644880);
+emit_32(3277504512);
+emit_32(3214410567);
+emit_32(1124644880);
+emit_32(3277248528);
+emit_32(3207614251);
+emit_32(1124644880);
+emit_32(3276992545);
+emit_32(1055980993);
+emit_32(1124644880);
+emit_32(3276736496);
+emit_32(1073762292);
+emit_32(1124644880);
+emit_32(3276480512);
+emit_32(1079724747);
+emit_32(1124644880);
+emit_32(3276224528);
+emit_32(1082560411);
+emit_32(1124644880);
+emit_32(3275968545);
+emit_32(1084722260);
+emit_32(1124644880);
+emit_32(3275712496);
+emit_32(1086375571);
+emit_32(1124644880);
+emit_32(3275456512);
+emit_32(1090446500);
+emit_32(1124644880);
+emit_32(3275200528);
+emit_32(1093171832);
+emit_32(1124644880);
+emit_32(3274944545);
+emit_32(1094812015);
+emit_32(1124644880);
+emit_32(3274688496);
+emit_32(1096292290);
+emit_32(1124644880);
+emit_32(3274432512);
+emit_32(1097734921);
+emit_32(1124644880);
+emit_32(3274176528);
+emit_32(1099196531);
+emit_32(1124644880);
+emit_32(3273920545);
+emit_32(1099805229);
+emit_32(1124644880);
+emit_32(3273664496);
+emit_32(1100823187);
+emit_32(1124644880);
+emit_32(3273408512);
+emit_32(1101755685);
+emit_32(1124644880);
+emit_32(3273152528);
+emit_32(1102405698);
+emit_32(1124644880);
+emit_32(3272896545);
+emit_32(1102759225);
+emit_32(1124644880);
+emit_32(3272640496);
+emit_32(1103381607);
+emit_32(1124644880);
+emit_32(3272384512);
+emit_32(1104182510);
+emit_32(1124644880);
+emit_32(3272128528);
+emit_32(1105063995);
+emit_32(1124644880);
+emit_32(3271872545);
+emit_32(1106336390);
+emit_32(1124644880);
+emit_32(3271616496);
+emit_32(1107656416);
+emit_32(1124644880);
+emit_32(3271163904);
+emit_32(1108075925);
+emit_32(1124644880);
+emit_32(3270651937);
+emit_32(1108328763);
+emit_32(1124644880);
+emit_32(3270139970);
+emit_32(1108369080);
+emit_32(1124644880);
+emit_32(3269627871);
+emit_32(1108254366);
+emit_32(1124644880);
+emit_32(3269115904);
+emit_32(1107968551);
+emit_32(1124644880);
+emit_32(3268603937);
+emit_32(1107979456);
+emit_32(1124644880);
+emit_32(3268091970);
+emit_32(1107515802);
+emit_32(1124644880);
+emit_32(3267579911);
+emit_32(1106388084);
+emit_32(1124644880);
+emit_32(3267067904);
+emit_32(1104790841);
+emit_32(1124644880);
+emit_32(3266555911);
+emit_32(1104209563);
+emit_32(1124644880);
+emit_32(3266043904);
+emit_32(1103624405);
+emit_32(1124644880);
+emit_32(3265531911);
+emit_32(1102359613);
+emit_32(1124644880);
+emit_32(3265019904);
+emit_32(1101907257);
+emit_32(1124644880);
+emit_32(3264507911);
+emit_32(1101809058);
+emit_32(1124644880);
+emit_32(3263995904);
+emit_32(1101301128);
+emit_32(1124644880);
+emit_32(3263483911);
+emit_32(1100497289);
+emit_32(1124644880);
+emit_32(3262775296);
+emit_32(1099654863);
+emit_32(1124644880);
+emit_32(3261751309);
+emit_32(1099315701);
+emit_32(1124644880);
+emit_32(3260727296);
+emit_32(1098867697);
+emit_32(1124644880);
+emit_32(3259703309);
+emit_32(1097723491);
+emit_32(1124644880);
+emit_32(3258679296);
+emit_32(1097140063);
+emit_32(1124644880);
+emit_32(3257655309);
+emit_32(1096683933);
+emit_32(1124644880);
+emit_32(3256631296);
+emit_32(1095379399);
+emit_32(1124644880);
+emit_32(3255607309);
+emit_32(1094758747);
+emit_32(1124644880);
+emit_32(3254386688);
+emit_32(1094561405);
+emit_32(1124644880);
+emit_32(3252338714);
+emit_32(1094733582);
+emit_32(1124644880);
+emit_32(3250290688);
+emit_32(1093957845);
+emit_32(1124644880);
+emit_32(3248242714);
+emit_32(1094294123);
+emit_32(1124644880);
+emit_32(3245998080);
+emit_32(1093574905);
+emit_32(1124644880);
+emit_32(3241902132);
+emit_32(1094867799);
+emit_32(1124644880);
+emit_32(3237609472);
+emit_32(1097134821);
+emit_32(1124644880);
+emit_32(3229220864);
+emit_32(1099036099);
+emit_32(1124644880);
+emit_32(0);
+emit_32(1099596615);
+emit_32(1124644880);
+emit_32(1081737216);
+emit_32(1100859258);
+emit_32(1124644880);
+emit_32(3279552512);
+emit_32(1081904485);
+emit_32(1124388897);
+emit_32(3279296528);
+emit_32(1075136304);
+emit_32(1124388897);
+emit_32(3279040545);
+emit_32(1073454011);
+emit_32(1124388897);
+emit_32(3278784496);
+emit_32(1066813673);
+emit_32(1124388897);
+emit_32(3278528512);
+emit_32(1058745375);
+emit_32(1124388897);
+emit_32(3278272528);
+emit_32(1007923565);
+emit_32(1124388897);
+emit_32(3278016545);
+emit_32(1041418101);
+emit_32(1124388897);
+emit_32(3277760496);
+emit_32(3199617458);
+emit_32(1124388897);
+emit_32(3277504512);
+emit_32(3217487424);
+emit_32(1124388897);
+emit_32(3277248528);
+emit_32(3214749551);
+emit_32(1124388897);
+emit_32(3276992545);
+emit_32(3200772133);
+emit_32(1124388897);
+emit_32(3276736496);
+emit_32(1066640783);
+emit_32(1124388897);
+emit_32(3276480512);
+emit_32(1076373750);
+emit_32(1124388897);
+emit_32(3276224528);
+emit_32(1080280534);
+emit_32(1124388897);
+emit_32(3275968545);
+emit_32(1084212505);
+emit_32(1124388897);
+emit_32(3275712496);
+emit_32(1084220726);
+emit_32(1124388897);
+emit_32(3275456512);
+emit_32(1088347817);
+emit_32(1124388897);
+emit_32(3275200528);
+emit_32(1092688649);
+emit_32(1124388897);
+emit_32(3274944545);
+emit_32(1095110020);
+emit_32(1124388897);
+emit_32(3274688496);
+emit_32(1096019765);
+emit_32(1124388897);
+emit_32(3274432512);
+emit_32(1097191863);
+emit_32(1124388897);
+emit_32(3274176528);
+emit_32(1099076574);
+emit_32(1124388897);
+emit_32(3273920545);
+emit_32(1099798099);
+emit_32(1124388897);
+emit_32(3273664496);
+emit_32(1100653265);
+emit_32(1124388897);
+emit_32(3273408512);
+emit_32(1101516925);
+emit_32(1124388897);
+emit_32(3273152528);
+emit_32(1102653791);
+emit_32(1124388897);
+emit_32(3272896545);
+emit_32(1103041659);
+emit_32(1124388897);
+emit_32(3272640496);
+emit_32(1103477814);
+emit_32(1124388897);
+emit_32(3272384512);
+emit_32(1104761586);
+emit_32(1124388897);
+emit_32(3272128528);
+emit_32(1105735555);
+emit_32(1124388897);
+emit_32(3271872545);
+emit_32(1106382579);
+emit_32(1124388897);
+emit_32(3271616496);
+emit_32(1107704231);
+emit_32(1124388897);
+emit_32(3271163904);
+emit_32(1108131394);
+emit_32(1124388897);
+emit_32(3270651937);
+emit_32(1108458393);
+emit_32(1124388897);
+emit_32(3270139970);
+emit_32(1108511529);
+emit_32(1124388897);
+emit_32(3269627871);
+emit_32(1108351464);
+emit_32(1124388897);
+emit_32(3269115904);
+emit_32(1108007374);
+emit_32(1124388897);
+emit_32(3268603937);
+emit_32(1107999667);
+emit_32(1124388897);
+emit_32(3268091970);
+emit_32(1107747353);
+emit_32(1124388897);
+emit_32(3267579911);
+emit_32(1106761954);
+emit_32(1124388897);
+emit_32(3267067904);
+emit_32(1105151446);
+emit_32(1124388897);
+emit_32(3266555911);
+emit_32(1103997960);
+emit_32(1124388897);
+emit_32(3266043904);
+emit_32(1103338930);
+emit_32(1124388897);
+emit_32(3265531911);
+emit_32(1102310120);
+emit_32(1124388897);
+emit_32(3265019904);
+emit_32(1102078804);
+emit_32(1124388897);
+emit_32(3264507911);
+emit_32(1102132910);
+emit_32(1124388897);
+emit_32(3263995904);
+emit_32(1101260338);
+emit_32(1124388897);
+emit_32(3263483911);
+emit_32(1100505783);
+emit_32(1124388897);
+emit_32(3262775296);
+emit_32(1099485361);
+emit_32(1124388897);
+emit_32(3261751309);
+emit_32(1099317379);
+emit_32(1124388897);
+emit_32(3260727296);
+emit_32(1097990459);
+emit_32(1124388897);
+emit_32(3259703309);
+emit_32(1097342543);
+emit_32(1124388897);
+emit_32(3258679296);
+emit_32(1095513512);
+emit_32(1124388897);
+emit_32(3257655309);
+emit_32(1095404880);
+emit_32(1124388897);
+emit_32(3256631296);
+emit_32(1094651059);
+emit_32(1124388897);
+emit_32(3255607309);
+emit_32(1094446901);
+emit_32(1124388897);
+emit_32(3254386688);
+emit_32(1093497625);
+emit_32(1124388897);
+emit_32(3252338714);
+emit_32(1093705977);
+emit_32(1124388897);
+emit_32(3250290688);
+emit_32(1093119299);
+emit_32(1124388897);
+emit_32(3248242714);
+emit_32(1093472354);
+emit_32(1124388897);
+emit_32(3245998080);
+emit_32(1095171362);
+emit_32(1124388897);
+emit_32(3241902132);
+emit_32(1096014103);
+emit_32(1124388897);
+emit_32(3237609472);
+emit_32(1097783784);
+emit_32(1124388897);
+emit_32(3229220864);
+emit_32(1099140904);
+emit_32(1124388897);
+emit_32(0);
+emit_32(1099863844);
+emit_32(1124388897);
+emit_32(1081737216);
+emit_32(1100982465);
+emit_32(1124388897);
+emit_32(3279552512);
+emit_32(1076151032);
+emit_32(1124132848);
+emit_32(3279296528);
+emit_32(1074265021);
+emit_32(1124132848);
+emit_32(3279040545);
+emit_32(1059897651);
+emit_32(1124132848);
+emit_32(3278784496);
+emit_32(3197909672);
+emit_32(1124132848);
+emit_32(3278528512);
+emit_32(3211975304);
+emit_32(1124132848);
+emit_32(3278272528);
+emit_32(3212548900);
+emit_32(1124132848);
+emit_32(3278016545);
+emit_32(3214293881);
+emit_32(1124132848);
+emit_32(3277760496);
+emit_32(3216921864);
+emit_32(1124132848);
+emit_32(3277504512);
+emit_32(3222195908);
+emit_32(1124132848);
+emit_32(3277248528);
+emit_32(3221805335);
+emit_32(1124132848);
+emit_32(3276992545);
+emit_32(3213409470);
+emit_32(1124132848);
+emit_32(3276736496);
+emit_32(1032354486);
+emit_32(1124132848);
+emit_32(3276480512);
+emit_32(1066671654);
+emit_32(1124132848);
+emit_32(3276224528);
+emit_32(1078555291);
+emit_32(1124132848);
+emit_32(3275968545);
+emit_32(1082316198);
+emit_32(1124132848);
+emit_32(3275712496);
+emit_32(1084389652);
+emit_32(1124132848);
+emit_32(3275456512);
+emit_32(1090589284);
+emit_32(1124132848);
+emit_32(3275200528);
+emit_32(1093399793);
+emit_32(1124132848);
+emit_32(3274944545);
+emit_32(1094797335);
+emit_32(1124132848);
+emit_32(3274688496);
+emit_32(1095931475);
+emit_32(1124132848);
+emit_32(3274432512);
+emit_32(1097364459);
+emit_32(1124132848);
+emit_32(3274176528);
+emit_32(1098713452);
+emit_32(1124132848);
+emit_32(3273920545);
+emit_32(1099383020);
+emit_32(1124132848);
+emit_32(3273664496);
+emit_32(1100286158);
+emit_32(1124132848);
+emit_32(3273408512);
+emit_32(1101469791);
+emit_32(1124132848);
+emit_32(3273152528);
+emit_32(1102376757);
+emit_32(1124132848);
+emit_32(3272896545);
+emit_32(1103068345);
+emit_32(1124132848);
+emit_32(3272640496);
+emit_32(1104423682);
+emit_32(1124132848);
+emit_32(3272384512);
+emit_32(1104904507);
+emit_32(1124132848);
+emit_32(3272128528);
+emit_32(1106022131);
+emit_32(1124132848);
+emit_32(3271872545);
+emit_32(1106604720);
+emit_32(1124132848);
+emit_32(3271616496);
+emit_32(1107631800);
+emit_32(1124132848);
+emit_32(3271163904);
+emit_32(1108172682);
+emit_32(1124132848);
+emit_32(3270651937);
+emit_32(1108436818);
+emit_32(1124132848);
+emit_32(3270139970);
+emit_32(1108399830);
+emit_32(1124132848);
+emit_32(3269627871);
+emit_32(1108123845);
+emit_32(1124132848);
+emit_32(3269115904);
+emit_32(1108184505);
+emit_32(1124132848);
+emit_32(3268603937);
+emit_32(1108270331);
+emit_32(1124132848);
+emit_32(3268091970);
+emit_32(1107910957);
+emit_32(1124132848);
+emit_32(3267579911);
+emit_32(1107432518);
+emit_32(1124132848);
+emit_32(3267067904);
+emit_32(1105755426);
+emit_32(1124132848);
+emit_32(3266555911);
+emit_32(1104147644);
+emit_32(1124132848);
+emit_32(3266043904);
+emit_32(1103239525);
+emit_32(1124132848);
+emit_32(3265531911);
+emit_32(1102590666);
+emit_32(1124132848);
+emit_32(3265019904);
+emit_32(1101844290);
+emit_32(1124132848);
+emit_32(3264507911);
+emit_32(1101550007);
+emit_32(1124132848);
+emit_32(3263995904);
+emit_32(1101094925);
+emit_32(1124132848);
+emit_32(3263483911);
+emit_32(1100315990);
+emit_32(1124132848);
+emit_32(3262775296);
+emit_32(1099604269);
+emit_32(1124132848);
+emit_32(3261751309);
+emit_32(1098955673);
+emit_32(1124132848);
+emit_32(3260727296);
+emit_32(1096931397);
+emit_32(1124132848);
+emit_32(3259703309);
+emit_32(1095373108);
+emit_32(1124132848);
+emit_32(3258679296);
+emit_32(1094758538);
+emit_32(1124132848);
+emit_32(3257655309);
+emit_32(1094166512);
+emit_32(1124132848);
+emit_32(3256631296);
+emit_32(1094620021);
+emit_32(1124132848);
+emit_32(3255607309);
+emit_32(1094357772);
+emit_32(1124132848);
+emit_32(3254386688);
+emit_32(1093070435);
+emit_32(1124132848);
+emit_32(3252338714);
+emit_32(1092280920);
+emit_32(1124132848);
+emit_32(3250290688);
+emit_32(1092453726);
+emit_32(1124132848);
+emit_32(3248242714);
+emit_32(1094304085);
+emit_32(1124132848);
+emit_32(3245998080);
+emit_32(1096070621);
+emit_32(1124132848);
+emit_32(3241902132);
+emit_32(1096864812);
+emit_32(1124132848);
+emit_32(3237609472);
+emit_32(1098173435);
+emit_32(1124132848);
+emit_32(3229220864);
+emit_32(1099365404);
+emit_32(1124132848);
+emit_32(0);
+emit_32(1099987367);
+emit_32(1124132848);
+emit_32(1081737216);
+emit_32(1101050728);
+emit_32(1124132848);
+emit_32(3279552512);
+emit_32(1075745946);
+emit_32(1123680256);
+emit_32(3279296528);
+emit_32(1067640202);
+emit_32(1123680256);
+emit_32(3279040545);
+emit_32(3205049803);
+emit_32(1123680256);
+emit_32(3278784496);
+emit_32(3215612571);
+emit_32(1123680256);
+emit_32(3278528512);
+emit_32(3218144588);
+emit_32(1123680256);
+emit_32(3278272528);
+emit_32(3222509223);
+emit_32(1123680256);
+emit_32(3278016545);
+emit_32(3221797869);
+emit_32(1123680256);
+emit_32(3277760496);
+emit_32(3225243909);
+emit_32(1123680256);
+emit_32(3277504512);
+emit_32(3225089810);
+emit_32(1123680256);
+emit_32(3277248528);
+emit_32(3226837912);
+emit_32(1123680256);
+emit_32(3276992545);
+emit_32(3222475668);
+emit_32(1123680256);
+emit_32(3276736496);
+emit_32(3210500905);
+emit_32(1123680256);
+emit_32(3276480512);
+emit_32(1057082501);
+emit_32(1123680256);
+emit_32(3276224528);
+emit_32(1069886755);
+emit_32(1123680256);
+emit_32(3275968545);
+emit_32(1079284135);
+emit_32(1123680256);
+emit_32(3275712496);
+emit_32(1085833856);
+emit_32(1123680256);
+emit_32(3275456512);
+emit_32(1090703044);
+emit_32(1123680256);
+emit_32(3275200528);
+emit_32(1093163863);
+emit_32(1123680256);
+emit_32(3274944545);
+emit_32(1094161898);
+emit_32(1123680256);
+emit_32(3274688496);
+emit_32(1095085064);
+emit_32(1123680256);
+emit_32(3274432512);
+emit_32(1096343041);
+emit_32(1123680256);
+emit_32(3274176528);
+emit_32(1097267465);
+emit_32(1123680256);
+emit_32(3273920545);
+emit_32(1099232549);
+emit_32(1123680256);
+emit_32(3273664496);
+emit_32(1100352638);
+emit_32(1123680256);
+emit_32(3273408512);
+emit_32(1101666347);
+emit_32(1123680256);
+emit_32(3273152528);
+emit_32(1102553599);
+emit_32(1123680256);
+emit_32(3272896545);
+emit_32(1103499048);
+emit_32(1123680256);
+emit_32(3272640496);
+emit_32(1104589619);
+emit_32(1123680256);
+emit_32(3272384512);
+emit_32(1105372486);
+emit_32(1123680256);
+emit_32(3272128528);
+emit_32(1105859602);
+emit_32(1123680256);
+emit_32(3271872545);
+emit_32(1106894337);
+emit_32(1123680256);
+emit_32(3271616496);
+emit_32(1107538372);
+emit_32(1123680256);
+emit_32(3271163904);
+emit_32(1107947762);
+emit_32(1123680256);
+emit_32(3270651937);
+emit_32(1108124343);
+emit_32(1123680256);
+emit_32(3270139970);
+emit_32(1107942572);
+emit_32(1123680256);
+emit_32(3269627871);
+emit_32(1108284329);
+emit_32(1123680256);
+emit_32(3269115904);
+emit_32(1108344439);
+emit_32(1123680256);
+emit_32(3268603937);
+emit_32(1108291722);
+emit_32(1123680256);
+emit_32(3268091970);
+emit_32(1107980426);
+emit_32(1123680256);
+emit_32(3267579911);
+emit_32(1107402844);
+emit_32(1123680256);
+emit_32(3267067904);
+emit_32(1105639401);
+emit_32(1123680256);
+emit_32(3266555911);
+emit_32(1104157868);
+emit_32(1123680256);
+emit_32(3266043904);
+emit_32(1103642965);
+emit_32(1123680256);
+emit_32(3265531911);
+emit_32(1102980579);
+emit_32(1123680256);
+emit_32(3265019904);
+emit_32(1102268282);
+emit_32(1123680256);
+emit_32(3264507911);
+emit_32(1101485362);
+emit_32(1123680256);
+emit_32(3263995904);
+emit_32(1100559260);
+emit_32(1123680256);
+emit_32(3263483911);
+emit_32(1099869979);
+emit_32(1123680256);
+emit_32(3262775296);
+emit_32(1099177447);
+emit_32(1123680256);
+emit_32(3261751309);
+emit_32(1097774032);
+emit_32(1123680256);
+emit_32(3260727296);
+emit_32(1096015990);
+emit_32(1123680256);
+emit_32(3259703309);
+emit_32(1094982618);
+emit_32(1123680256);
+emit_32(3258679296);
+emit_32(1094173642);
+emit_32(1123680256);
+emit_32(3257655309);
+emit_32(1093433557);
+emit_32(1123680256);
+emit_32(3256631296);
+emit_32(1092957084);
+emit_32(1123680256);
+emit_32(3255607309);
+emit_32(1093043696);
+emit_32(1123680256);
+emit_32(3254386688);
+emit_32(1092576367);
+emit_32(1123680256);
+emit_32(3252338714);
+emit_32(1092381919);
+emit_32(1123680256);
+emit_32(3250290688);
+emit_32(1093319052);
+emit_32(1123680256);
+emit_32(3248242714);
+emit_32(1094929141);
+emit_32(1123680256);
+emit_32(3245998080);
+emit_32(1096641151);
+emit_32(1123680256);
+emit_32(3241902132);
+emit_32(1098022230);
+emit_32(1123680256);
+emit_32(3237609472);
+emit_32(1098658716);
+emit_32(1123680256);
+emit_32(3229220864);
+emit_32(1099385274);
+emit_32(1123680256);
+emit_32(0);
+emit_32(1099998324);
+emit_32(1123680256);
+emit_32(1081737216);
+emit_32(1100462372);
+emit_32(1123680256);
+emit_32(3279552512);
+emit_32(1073527831);
+emit_32(1123168289);
+emit_32(3279296528);
+emit_32(1067716203);
+emit_32(1123168289);
+emit_32(3279040545);
+emit_32(1032802545);
+emit_32(1123168289);
+emit_32(3278784496);
+emit_32(3215483554);
+emit_32(1123168289);
+emit_32(3278528512);
+emit_32(3222614416);
+emit_32(1123168289);
+emit_32(3278272528);
+emit_32(3226235358);
+emit_32(1123168289);
+emit_32(3278016545);
+emit_32(3229265659);
+emit_32(1123168289);
+emit_32(3277760496);
+emit_32(3229676575);
+emit_32(1123168289);
+emit_32(3277504512);
+emit_32(3230314529);
+emit_32(1123168289);
+emit_32(3277248528);
+emit_32(3227686797);
+emit_32(1123168289);
+emit_32(3276992545);
+emit_32(3224163288);
+emit_32(1123168289);
+emit_32(3276736496);
+emit_32(3224837816);
+emit_32(1123168289);
+emit_32(3276480512);
+emit_32(3214911115);
+emit_32(1123168289);
+emit_32(3276224528);
+emit_32(1045755414);
+emit_32(1123168289);
+emit_32(3275968545);
+emit_32(1075946895);
+emit_32(1123168289);
+emit_32(3275712496);
+emit_32(1083922239);
+emit_32(1123168289);
+emit_32(3275456512);
+emit_32(1089208404);
+emit_32(1123168289);
+emit_32(3275200528);
+emit_32(1091995729);
+emit_32(1123168289);
+emit_32(3274944545);
+emit_32(1093743097);
+emit_32(1123168289);
+emit_32(3274688496);
+emit_32(1094702019);
+emit_32(1123168289);
+emit_32(3274432512);
+emit_32(1095065456);
+emit_32(1123168289);
+emit_32(3274176528);
+emit_32(1095980443);
+emit_32(1123168289);
+emit_32(3273920545);
+emit_32(1098763574);
+emit_32(1123168289);
+emit_32(3273664496);
+emit_32(1100013791);
+emit_32(1123168289);
+emit_32(3273408512);
+emit_32(1101157106);
+emit_32(1123168289);
+emit_32(3273152528);
+emit_32(1102482401);
+emit_32(1123168289);
+emit_32(3272896545);
+emit_32(1103806543);
+emit_32(1123168289);
+emit_32(3272640496);
+emit_32(1104565135);
+emit_32(1123168289);
+emit_32(3272384512);
+emit_32(1105773671);
+emit_32(1123168289);
+emit_32(3272128528);
+emit_32(1106220312);
+emit_32(1123168289);
+emit_32(3271872545);
+emit_32(1106669942);
+emit_32(1123168289);
+emit_32(3271616496);
+emit_32(1107272401);
+emit_32(1123168289);
+emit_32(3271163904);
+emit_32(1107768771);
+emit_32(1123168289);
+emit_32(3270651937);
+emit_32(1108156770);
+emit_32(1123168289);
+emit_32(3270139970);
+emit_32(1108407039);
+emit_32(1123168289);
+emit_32(3269627871);
+emit_32(1108550903);
+emit_32(1123168289);
+emit_32(3269115904);
+emit_32(1108478263);
+emit_32(1123168289);
+emit_32(3268603937);
+emit_32(1108278274);
+emit_32(1123168289);
+emit_32(3268091970);
+emit_32(1107762925);
+emit_32(1123168289);
+emit_32(3267579911);
+emit_32(1106660819);
+emit_32(1123168289);
+emit_32(3267067904);
+emit_32(1105273658);
+emit_32(1123168289);
+emit_32(3266555911);
+emit_32(1104481668);
+emit_32(1123168289);
+emit_32(3266043904);
+emit_32(1104168826);
+emit_32(1123168289);
+emit_32(3265531911);
+emit_32(1103522536);
+emit_32(1123168289);
+emit_32(3265019904);
+emit_32(1102851185);
+emit_32(1123168289);
+emit_32(3264507911);
+emit_32(1101917061);
+emit_32(1123168289);
+emit_32(3263995904);
+emit_32(1101010095);
+emit_32(1123168289);
+emit_32(3263483911);
+emit_32(1099888329);
+emit_32(1123168289);
+emit_32(3262775296);
+emit_32(1098570531);
+emit_32(1123168289);
+emit_32(3261751309);
+emit_32(1096537866);
+emit_32(1123168289);
+emit_32(3260727296);
+emit_32(1095068497);
+emit_32(1123168289);
+emit_32(3259703309);
+emit_32(1094656406);
+emit_32(1123168289);
+emit_32(3258679296);
+emit_32(1094724039);
+emit_32(1123168289);
+emit_32(3257655309);
+emit_32(1093671584);
+emit_32(1123168289);
+emit_32(3256631296);
+emit_32(1092454407);
+emit_32(1123168289);
+emit_32(3255607309);
+emit_32(1092709935);
+emit_32(1123168289);
+emit_32(3254386688);
+emit_32(1093178858);
+emit_32(1123168289);
+emit_32(3252338714);
+emit_32(1092563312);
+emit_32(1123168289);
+emit_32(3250290688);
+emit_32(1093668753);
+emit_32(1123168289);
+emit_32(3248242714);
+emit_32(1095561013);
+emit_32(1123168289);
+emit_32(3245998080);
+emit_32(1096702388);
+emit_32(1123168289);
+emit_32(3241902132);
+emit_32(1097769524);
+emit_32(1123168289);
+emit_32(3237609472);
+emit_32(1098298111);
+emit_32(1123168289);
+emit_32(3229220864);
+emit_32(1098956931);
+emit_32(1123168289);
+emit_32(0);
+emit_32(1099464022);
+emit_32(1123168289);
+emit_32(1081737216);
+emit_32(1100235512);
+emit_32(1123168289);
+emit_32(3279552512);
+emit_32(1074513450);
+emit_32(1122656322);
+emit_32(3279296528);
+emit_32(1069684087);
+emit_32(1122656322);
+emit_32(3279040545);
+emit_32(1059117578);
+emit_32(1122656322);
+emit_32(3278784496);
+emit_32(3205587983);
+emit_32(1122656322);
+emit_32(3278528512);
+emit_32(3221291239);
+emit_32(1122656322);
+emit_32(3278272528);
+emit_32(3227143174);
+emit_32(1122656322);
+emit_32(3278016545);
+emit_32(3228890898);
+emit_32(1122656322);
+emit_32(3277760496);
+emit_32(3231744493);
+emit_32(1122656322);
+emit_32(3277504512);
+emit_32(3231183211);
+emit_32(1122656322);
+emit_32(3277248528);
+emit_32(3226713845);
+emit_32(1122656322);
+emit_32(3276992545);
+emit_32(3222588579);
+emit_32(1122656322);
+emit_32(3276736496);
+emit_32(3218835474);
+emit_32(1122656322);
+emit_32(3276480512);
+emit_32(3214447728);
+emit_32(1122656322);
+emit_32(3276224528);
+emit_32(1046529045);
+emit_32(1122656322);
+emit_32(3275968545);
+emit_32(1070915199);
+emit_32(1122656322);
+emit_32(3275712496);
+emit_32(1082866637);
+emit_32(1122656322);
+emit_32(3275456512);
+emit_32(1087021578);
+emit_32(1122656322);
+emit_32(3275200528);
+emit_32(1090529232);
+emit_32(1122656322);
+emit_32(3274944545);
+emit_32(1092317201);
+emit_32(1122656322);
+emit_32(3274688496);
+emit_32(1093426427);
+emit_32(1122656322);
+emit_32(3274432512);
+emit_32(1094040158);
+emit_32(1122656322);
+emit_32(3274176528);
+emit_32(1095262693);
+emit_32(1122656322);
+emit_32(3273920545);
+emit_32(1097468792);
+emit_32(1122656322);
+emit_32(3273664496);
+emit_32(1099540411);
+emit_32(1122656322);
+emit_32(3273408512);
+emit_32(1100993213);
+emit_32(1122656322);
+emit_32(3273152528);
+emit_32(1102819203);
+emit_32(1122656322);
+emit_32(3272896545);
+emit_32(1104470763);
+emit_32(1122656322);
+emit_32(3272640496);
+emit_32(1105442111);
+emit_32(1122656322);
+emit_32(3272384512);
+emit_32(1106127356);
+emit_32(1122656322);
+emit_32(3272128528);
+emit_32(1106807829);
+emit_32(1122656322);
+emit_32(3271872545);
+emit_32(1107212108);
+emit_32(1122656322);
+emit_32(3271616496);
+emit_32(1107339719);
+emit_32(1122656322);
+emit_32(3271163904);
+emit_32(1108016575);
+emit_32(1122656322);
+emit_32(3270651937);
+emit_32(1108361190);
+emit_32(1122656322);
+emit_32(3270139970);
+emit_32(1108677807);
+emit_32(1122656322);
+emit_32(3269627871);
+emit_32(1108698045);
+emit_32(1122656322);
+emit_32(3269115904);
+emit_32(1108670415);
+emit_32(1122656322);
+emit_32(3268603937);
+emit_32(1108385307);
+emit_32(1122656322);
+emit_32(3268091970);
+emit_32(1107664044);
+emit_32(1122656322);
+emit_32(3267579911);
+emit_32(1106926109);
+emit_32(1122656322);
+emit_32(3267067904);
+emit_32(1105983491);
+emit_32(1122656322);
+emit_32(3266555911);
+emit_32(1105752542);
+emit_32(1122656322);
+emit_32(3266043904);
+emit_32(1105343650);
+emit_32(1122656322);
+emit_32(3265531911);
+emit_32(1104481983);
+emit_32(1122656322);
+emit_32(3265019904);
+emit_32(1103536377);
+emit_32(1122656322);
+emit_32(3264507911);
+emit_32(1102421374);
+emit_32(1122656322);
+emit_32(3263995904);
+emit_32(1101252526);
+emit_32(1122656322);
+emit_32(3263483911);
+emit_32(1099947835);
+emit_32(1122656322);
+emit_32(3262775296);
+emit_32(1099066665);
+emit_32(1122656322);
+emit_32(3261751309);
+emit_32(1097029334);
+emit_32(1122656322);
+emit_32(3260727296);
+emit_32(1095561223);
+emit_32(1122656322);
+emit_32(3259703309);
+emit_32(1095286181);
+emit_32(1122656322);
+emit_32(3258679296);
+emit_32(1094900095);
+emit_32(1122656322);
+emit_32(3257655309);
+emit_32(1093810625);
+emit_32(1122656322);
+emit_32(3256631296);
+emit_32(1093100949);
+emit_32(1122656322);
+emit_32(3255607309);
+emit_32(1093720133);
+emit_32(1122656322);
+emit_32(3254386688);
+emit_32(1094140822);
+emit_32(1122656322);
+emit_32(3252338714);
+emit_32(1093200983);
+emit_32(1122656322);
+emit_32(3250290688);
+emit_32(1093279731);
+emit_32(1122656322);
+emit_32(3248242714);
+emit_32(1095297296);
+emit_32(1122656322);
+emit_32(3245998080);
+emit_32(1096326998);
+emit_32(1122656322);
+emit_32(3241902132);
+emit_32(1097208116);
+emit_32(1122656322);
+emit_32(3237609472);
+emit_32(1098363332);
+emit_32(1122656322);
+emit_32(3229220864);
+emit_32(1098960496);
+emit_32(1122656322);
+emit_32(0);
+emit_32(1099624612);
+emit_32(1122656322);
+emit_32(1081737216);
+emit_32(1100438045);
+emit_32(1122656322);
+emit_start(Landscape07Vtx)
+emit_32(1081737216);
+emit_32(1111930149);
+emit_32(3270651937);
+emit_32(1081737216);
+emit_32(1111592455);
+emit_32(3270139970);
+emit_32(1090125824);
+emit_32(1111718284);
+emit_32(3270651937);
+emit_32(1090125824);
+emit_32(1111491609);
+emit_32(3270139970);
+emit_32(1094418484);
+emit_32(1111318934);
+emit_32(3270651937);
+emit_32(1094418484);
+emit_32(1111194940);
+emit_32(3270139970);
+emit_32(1098514432);
+emit_32(1110681374);
+emit_32(3270651937);
+emit_32(1098514432);
+emit_32(1110835331);
+emit_32(3270139970);
+emit_32(1100759066);
+emit_32(1110219843);
+emit_32(3270651937);
+emit_32(1100759066);
+emit_32(1110275365);
+emit_32(3270139970);
+emit_32(1102807040);
+emit_32(1109758994);
+emit_32(3270651937);
+emit_32(1102807040);
+emit_32(1110005567);
+emit_32(3270139970);
+emit_32(1104855066);
+emit_32(1109428771);
+emit_32(3270651937);
+emit_32(1104855066);
+emit_32(1109696499);
+emit_32(3270139970);
+emit_32(1106903040);
+emit_32(1109202908);
+emit_32(3270651937);
+emit_32(1106903040);
+emit_32(1109176772);
+emit_32(3270139970);
+emit_32(1108123661);
+emit_32(1108966585);
+emit_32(3270651937);
+emit_32(1108123661);
+emit_32(1108885556);
+emit_32(3270139970);
+emit_32(1109147648);
+emit_32(1108648919);
+emit_32(3270651937);
+emit_32(1109147648);
+emit_32(1108468774);
+emit_32(3270139970);
+emit_32(1110171661);
+emit_32(1108152890);
+emit_32(3270651937);
+emit_32(1110171661);
+emit_32(1108030285);
+emit_32(3270139970);
+emit_32(1111195648);
+emit_32(1107519839);
+emit_32(3270651937);
+emit_32(1111195648);
+emit_32(1107430028);
+emit_32(3270139970);
+emit_32(1112219661);
+emit_32(1107320478);
+emit_32(3270651937);
+emit_32(1112219661);
+emit_32(1107103737);
+emit_32(3270139970);
+emit_32(1113243648);
+emit_32(1107611170);
+emit_32(3270651937);
+emit_32(1113243648);
+emit_32(1107092098);
+emit_32(3270139970);
+emit_32(1114267661);
+emit_32(1107859839);
+emit_32(3270651937);
+emit_32(1114267661);
+emit_32(1107375004);
+emit_32(3270139970);
+emit_32(1115291648);
+emit_32(1107759596);
+emit_32(3270651937);
+emit_32(1115291648);
+emit_32(1107478708);
+emit_32(3270139970);
+emit_32(1116000263);
+emit_32(1107948785);
+emit_32(3270651937);
+emit_32(1116000263);
+emit_32(1107657884);
+emit_32(3270139970);
+emit_32(1116512256);
+emit_32(1108015605);
+emit_32(3270651937);
+emit_32(1116512256);
+emit_32(1107812575);
+emit_32(3270139970);
+emit_32(1117024263);
+emit_32(1108198949);
+emit_32(3270651937);
+emit_32(1117024263);
+emit_32(1108062005);
+emit_32(3270139970);
+emit_32(1117536256);
+emit_32(1108525082);
+emit_32(3270651937);
+emit_32(1117536256);
+emit_32(1108546316);
+emit_32(3270139970);
+emit_32(1118048263);
+emit_32(1108838475);
+emit_32(3270651937);
+emit_32(1118048263);
+emit_32(1108808198);
+emit_32(3270139970);
+emit_32(1118560256);
+emit_32(1108830663);
+emit_32(3270651937);
+emit_32(1118560256);
+emit_32(1108821253);
+emit_32(3270139970);
+emit_32(1119072263);
+emit_32(1108933791);
+emit_32(3270651937);
+emit_32(1119072263);
+emit_32(1108944565);
+emit_32(3270139970);
+emit_32(1119584256);
+emit_32(1109285510);
+emit_32(3270651937);
+emit_32(1119584256);
+emit_32(1109292509);
+emit_32(3270139970);
+emit_32(1120096263);
+emit_32(1109319064);
+emit_32(3270651937);
+emit_32(1120096263);
+emit_32(1109325827);
+emit_32(3270139970);
+emit_32(1120608322);
+emit_32(1109471003);
+emit_32(3270651937);
+emit_32(1120608322);
+emit_32(1109645355);
+emit_32(3270139970);
+emit_32(1121120289);
+emit_32(1109582728);
+emit_32(3270651937);
+emit_32(1121120289);
+emit_32(1109627555);
+emit_32(3270139970);
+emit_32(1121632256);
+emit_32(1109427592);
+emit_32(3270651937);
+emit_32(1121632256);
+emit_32(1109566502);
+emit_32(3270139970);
+emit_32(1122144223);
+emit_32(1109250959);
+emit_32(3270651937);
+emit_32(1122144223);
+emit_32(1109470347);
+emit_32(3270139970);
+emit_32(1122656322);
+emit_32(1109132050);
+emit_32(3270651937);
+emit_32(1122656322);
+emit_32(1109358831);
+emit_32(3270139970);
+emit_32(1123168289);
+emit_32(1108892975);
+emit_32(3270651937);
+emit_32(1123168289);
+emit_32(1109156561);
+emit_32(3270139970);
+emit_32(1123680256);
+emit_32(1108663599);
+emit_32(3270651937);
+emit_32(1123680256);
+emit_32(1108641920);
+emit_32(3270139970);
+emit_32(1124132848);
+emit_32(1108204087);
+emit_32(3270651937);
+emit_32(1124132848);
+emit_32(1108219580);
+emit_32(3270139970);
+emit_32(1124388897);
+emit_32(1107681555);
+emit_32(3270651937);
+emit_32(1124388897);
+emit_32(1107796112);
+emit_32(3270139970);
+emit_32(1124644880);
+emit_32(1107061165);
+emit_32(3270651937);
+emit_32(1124644880);
+emit_32(1107364885);
+emit_32(3270139970);
+emit_32(1124900864);
+emit_32(1105549119);
+emit_32(3270651937);
+emit_32(1124900864);
+emit_32(1106177268);
+emit_32(3270139970);
+emit_32(1125156848);
+emit_32(1104447065);
+emit_32(3270651937);
+emit_32(1125156848);
+emit_32(1105288443);
+emit_32(3270139970);
+emit_32(1125412897);
+emit_32(1103204817);
+emit_32(3270651937);
+emit_32(1125412897);
+emit_32(1104753197);
+emit_32(3270139970);
+emit_32(1125668880);
+emit_32(1102168352);
+emit_32(3270651937);
+emit_32(1125668880);
+emit_32(1103375473);
+emit_32(3270139970);
+emit_32(1125924864);
+emit_32(1101100116);
+emit_32(3270651937);
+emit_32(1125924864);
+emit_32(1102075344);
+emit_32(3270139970);
+emit_32(1126180848);
+emit_32(1099752591);
+emit_32(3270651937);
+emit_32(1126180848);
+emit_32(1100964849);
+emit_32(3270139970);
+emit_32(1126436897);
+emit_32(1098425093);
+emit_32(3270651937);
+emit_32(1126436897);
+emit_32(1099792384);
+emit_32(3270139970);
+emit_32(1126692880);
+emit_32(1096597845);
+emit_32(3270651937);
+emit_32(1126692880);
+emit_32(1098450049);
+emit_32(3270139970);
+emit_32(1126948864);
+emit_32(1094429285);
+emit_32(3270651937);
+emit_32(1126948864);
+emit_32(1096338322);
+emit_32(3270139970);
+emit_32(1127204848);
+emit_32(1091900413);
+emit_32(3270651937);
+emit_32(1127204848);
+emit_32(1093954280);
+emit_32(3270139970);
+emit_32(1127460897);
+emit_32(1087591940);
+emit_32(3270651937);
+emit_32(1127460897);
+emit_32(1091524247);
+emit_32(3270139970);
+emit_32(1127716880);
+emit_32(1083181671);
+emit_32(3270651937);
+emit_32(1127716880);
+emit_32(1088518839);
+emit_32(3270139970);
+emit_32(1127972864);
+emit_32(1076995723);
+emit_32(3270651937);
+emit_32(1127972864);
+emit_32(1083884385);
+emit_32(3270139970);
+emit_32(1128228848);
+emit_32(1068649268);
+emit_32(3270651937);
+emit_32(1128228848);
+emit_32(1076931424);
+emit_32(3270139970);
+emit_32(1128484897);
+emit_32(3216283995);
+emit_32(3270651937);
+emit_32(1128484897);
+emit_32(1044557454);
+emit_32(3270139970);
+emit_32(1128740880);
+emit_32(3221805544);
+emit_32(3270651937);
+emit_32(1128740880);
+emit_32(3205427693);
+emit_32(3270139970);
+emit_32(1128996864);
+emit_32(3223037537);
+emit_32(3270651937);
+emit_32(1128996864);
+emit_32(3213113940);
+emit_32(3270139970);
+emit_32(1129252848);
+emit_32(3228540254);
+emit_32(3270651937);
+emit_32(1129252848);
+emit_32(3221962118);
+emit_32(3270139970);
+emit_32(1129508897);
+emit_32(3230275333);
+emit_32(3270651937);
+emit_32(1129508897);
+emit_32(3220483500);
+emit_32(3270139970);
+emit_32(1129764880);
+emit_32(3232612273);
+emit_32(3270651937);
+emit_32(1129764880);
+emit_32(3225420531);
+emit_32(3270139970);
+emit_32(1130020864);
+emit_32(3235277565);
+emit_32(3270651937);
+emit_32(1130020864);
+emit_32(3230173831);
+emit_32(3270139970);
+emit_32(1130276848);
+emit_32(3234218671);
+emit_32(3270651937);
+emit_32(1130276848);
+emit_32(3232043735);
+emit_32(3270139970);
+emit_32(1130532897);
+emit_32(3231045470);
+emit_32(3270651937);
+emit_32(1130532897);
+emit_32(3227363752);
+emit_32(3270139970);
+emit_32(1130788880);
+emit_32(3226755997);
+emit_32(3270651937);
+emit_32(1130788880);
+emit_32(3221899790);
+emit_32(3270139970);
+emit_32(1131044864);
+emit_32(3229128715);
+emit_32(3270651937);
+emit_32(1131044864);
+emit_32(3216845360);
+emit_32(3270139970);
+emit_32(1131300848);
+emit_32(3228788683);
+emit_32(3270651937);
+emit_32(1131300848);
+emit_32(3219415546);
+emit_32(3270139970);
+emit_32(1131556897);
+emit_32(3227247276);
+emit_32(3270651937);
+emit_32(1131556897);
+emit_32(3212863456);
+emit_32(3270139970);
+emit_32(1131812880);
+emit_32(3228672710);
+emit_32(3270651937);
+emit_32(1131812880);
+emit_32(3221056106);
+emit_32(3270139970);
+emit_32(1132068864);
+emit_32(3228908137);
+emit_32(3270651937);
+emit_32(1132068864);
+emit_32(3222457423);
+emit_32(3270139970);
+emit_32(1081737216);
+emit_32(1112094042);
+emit_32(3271163904);
+emit_32(1090125824);
+emit_32(1112019724);
+emit_32(3271163904);
+emit_32(1094418484);
+emit_32(1111438813);
+emit_32(3271163904);
+emit_32(1098514432);
+emit_32(1110812184);
+emit_32(3271163904);
+emit_32(1100759066);
+emit_32(1110106545);
+emit_32(3271163904);
+emit_32(1102807040);
+emit_32(1109946348);
+emit_32(3271163904);
+emit_32(1104855066);
+emit_32(1109673168);
+emit_32(3271163904);
+emit_32(1106903040);
+emit_32(1109472471);
+emit_32(3271163904);
+emit_32(1108123661);
+emit_32(1108974240);
+emit_32(3271163904);
+emit_32(1109147648);
+emit_32(1108497164);
+emit_32(3271163904);
+emit_32(1110171661);
+emit_32(1108102899);
+emit_32(3271163904);
+emit_32(1111195648);
+emit_32(1107538870);
+emit_32(3271163904);
+emit_32(1112219661);
+emit_32(1106915413);
+emit_32(3271163904);
+emit_32(1113243648);
+emit_32(1107679563);
+emit_32(3271163904);
+emit_32(1114267661);
+emit_32(1107902857);
+emit_32(3271163904);
+emit_32(1115291648);
+emit_32(1107930251);
+emit_32(3271163904);
+emit_32(1116000263);
+emit_32(1107983335);
+emit_32(3271163904);
+emit_32(1116512256);
+emit_32(1108070420);
+emit_32(3271163904);
+emit_32(1117024263);
+emit_32(1108274184);
+emit_32(3271163904);
+emit_32(1117536256);
+emit_32(1108723525);
+emit_32(3271163904);
+emit_32(1118048263);
+emit_32(1108785863);
+emit_32(3271163904);
+emit_32(1118560256);
+emit_32(1108864795);
+emit_32(3271163904);
+emit_32(1119072263);
+emit_32(1109018883);
+emit_32(3271163904);
+emit_32(1119584256);
+emit_32(1109278065);
+emit_32(3271163904);
+emit_32(1120096263);
+emit_32(1109410316);
+emit_32(3271163904);
+emit_32(1120608322);
+emit_32(1109373406);
+emit_32(3271163904);
+emit_32(1121120289);
+emit_32(1109364887);
+emit_32(3271163904);
+emit_32(1121632256);
+emit_32(1109384967);
+emit_32(3271163904);
+emit_32(1122144223);
+emit_32(1109332197);
+emit_32(3271163904);
+emit_32(1122656322);
+emit_32(1109067825);
+emit_32(3271163904);
+emit_32(1123168289);
+emit_32(1108783609);
+emit_32(3271163904);
+emit_32(1123680256);
+emit_32(1108563460);
+emit_32(3271163904);
+emit_32(1124132848);
+emit_32(1108020743);
+emit_32(3271163904);
+emit_32(1124388897);
+emit_32(1107280056);
+emit_32(3271163904);
+emit_32(1124644880);
+emit_32(1106630987);
+emit_32(3271163904);
+emit_32(1124900864);
+emit_32(1105186941);
+emit_32(3271163904);
+emit_32(1125156848);
+emit_32(1103741583);
+emit_32(3271163904);
+emit_32(1125412897);
+emit_32(1102190530);
+emit_32(3271163904);
+emit_32(1125668880);
+emit_32(1101340292);
+emit_32(3271163904);
+emit_32(1125924864);
+emit_32(1100447115);
+emit_32(3271163904);
+emit_32(1126180848);
+emit_32(1099367868);
+emit_32(3271163904);
+emit_32(1126436897);
+emit_32(1097589064);
+emit_32(3271163904);
+emit_32(1126692880);
+emit_32(1095164127);
+emit_32(3271163904);
+emit_32(1126948864);
+emit_32(1092722832);
+emit_32(3271163904);
+emit_32(1127204848);
+emit_32(1090145097);
+emit_32(3271163904);
+emit_32(1127460897);
+emit_32(1085202802);
+emit_32(3271163904);
+emit_32(1127716880);
+emit_32(1076722968);
+emit_32(3271163904);
+emit_32(1127972864);
+emit_32(1066002159);
+emit_32(3271163904);
+emit_32(1128228848);
+emit_32(3206002464);
+emit_32(3271163904);
+emit_32(1128484897);
+emit_32(3225385089);
+emit_32(3271163904);
+emit_32(1128740880);
+emit_32(3230254068);
+emit_32(3271163904);
+emit_32(1128996864);
+emit_32(3231283224);
+emit_32(3271163904);
+emit_32(1129252848);
+emit_32(3234493545);
+emit_32(3271163904);
+emit_32(1129508897);
+emit_32(3235258355);
+emit_32(3271163904);
+emit_32(1129764880);
+emit_32(3238361175);
+emit_32(3271163904);
+emit_32(1130020864);
+emit_32(3238992240);
+emit_32(3271163904);
+emit_32(1130276848);
+emit_32(3236249825);
+emit_32(3271163904);
+emit_32(1130532897);
+emit_32(3232841681);
+emit_32(3271163904);
+emit_32(1130788880);
+emit_32(3231925288);
+emit_32(3271163904);
+emit_32(1131044864);
+emit_32(3233336672);
+emit_32(3271163904);
+emit_32(1131300848);
+emit_32(3232958618);
+emit_32(3271163904);
+emit_32(1131556897);
+emit_32(3233414623);
+emit_32(3271163904);
+emit_32(1131812880);
+emit_32(3232723968);
+emit_32(3271163904);
+emit_32(1132068864);
+emit_32(3232386725);
+emit_32(3271163904);
+emit_32(1081737216);
+emit_32(1112138475);
+emit_32(3271616496);
+emit_32(1090125824);
+emit_32(1112117661);
+emit_32(3271616496);
+emit_32(1094418484);
+emit_32(1111516696);
+emit_32(3271616496);
+emit_32(1098514432);
+emit_32(1110701375);
+emit_32(3271616496);
+emit_32(1100759066);
+emit_32(1110259479);
+emit_32(3271616496);
+emit_32(1102807040);
+emit_32(1110148252);
+emit_32(3271616496);
+emit_32(1104855066);
+emit_32(1109941420);
+emit_32(3271616496);
+emit_32(1106903040);
+emit_32(1109408245);
+emit_32(3271616496);
+emit_32(1108123661);
+emit_32(1108791106);
+emit_32(3271616496);
+emit_32(1109147648);
+emit_32(1108280161);
+emit_32(3271616496);
+emit_32(1110171661);
+emit_32(1107557063);
+emit_32(3271616496);
+emit_32(1111195648);
+emit_32(1107163926);
+emit_32(3271616496);
+emit_32(1112219661);
+emit_32(1106741192);
+emit_32(3271616496);
+emit_32(1113243648);
+emit_32(1107262911);
+emit_32(3271616496);
+emit_32(1114267661);
+emit_32(1107611563);
+emit_32(3271616496);
+emit_32(1115291648);
+emit_32(1107823244);
+emit_32(3271616496);
+emit_32(1116000263);
+emit_32(1107902490);
+emit_32(3271616496);
+emit_32(1116512256);
+emit_32(1107980347);
+emit_32(3271616496);
+emit_32(1117024263);
+emit_32(1108314974);
+emit_32(3271616496);
+emit_32(1117536256);
+emit_32(1108495670);
+emit_32(3271616496);
+emit_32(1118048263);
+emit_32(1108580998);
+emit_32(3271616496);
+emit_32(1118560256);
+emit_32(1108703707);
+emit_32(3271616496);
+emit_32(1119072263);
+emit_32(1108940790);
+emit_32(3271616496);
+emit_32(1119584256);
+emit_32(1109066200);
+emit_32(3271616496);
+emit_32(1120096263);
+emit_32(1109329864);
+emit_32(3271616496);
+emit_32(1120608322);
+emit_32(1109220734);
+emit_32(3271616496);
+emit_32(1121120289);
+emit_32(1109504138);
+emit_32(3271616496);
+emit_32(1121632256);
+emit_32(1109526053);
+emit_32(3271616496);
+emit_32(1122144223);
+emit_32(1109328108);
+emit_32(3271616496);
+emit_32(1122656322);
+emit_32(1109031859);
+emit_32(3271616496);
+emit_32(1123168289);
+emit_32(1108646638);
+emit_32(3271616496);
+emit_32(1123680256);
+emit_32(1108345618);
+emit_32(3271616496);
+emit_32(1124132848);
+emit_32(1107854806);
+emit_32(3271616496);
+emit_32(1124388897);
+emit_32(1107061532);
+emit_32(3271616496);
+emit_32(1124644880);
+emit_32(1105828407);
+emit_32(3271616496);
+emit_32(1124900864);
+emit_32(1104345458);
+emit_32(3271616496);
+emit_32(1125156848);
+emit_32(1103146569);
+emit_32(3271616496);
+emit_32(1125412897);
+emit_32(1101554883);
+emit_32(3271616496);
+emit_32(1125668880);
+emit_32(1100465255);
+emit_32(3271616496);
+emit_32(1125924864);
+emit_32(1099197894);
+emit_32(3271616496);
+emit_32(1126180848);
+emit_32(1097396440);
+emit_32(3271616496);
+emit_32(1126436897);
+emit_32(1095592680);
+emit_32(3271616496);
+emit_32(1126692880);
+emit_32(1093988988);
+emit_32(3271616496);
+emit_32(1126948864);
+emit_32(1091770998);
+emit_32(3271616496);
+emit_32(1127204848);
+emit_32(1088099283);
+emit_32(3271616496);
+emit_32(1127460897);
+emit_32(1081294172);
+emit_32(3271616496);
+emit_32(1127716880);
+emit_32(1060903076);
+emit_32(3271616496);
+emit_32(1127972864);
+emit_32(1039720717);
+emit_32(3271616496);
+emit_32(1128228848);
+emit_32(3220556900);
+emit_32(3271616496);
+emit_32(1128484897);
+emit_32(3232451338);
+emit_32(3271616496);
+emit_32(1128740880);
+emit_32(3236043424);
+emit_32(3271616496);
+emit_32(1128996864);
+emit_32(3238289211);
+emit_32(3271616496);
+emit_32(1129252848);
+emit_32(3238868193);
+emit_32(3271616496);
+emit_32(1129508897);
+emit_32(3239430691);
+emit_32(3271616496);
+emit_32(1129764880);
+emit_32(3241001301);
+emit_32(3271616496);
+emit_32(1130020864);
+emit_32(3240828600);
+emit_32(3271616496);
+emit_32(1130276848);
+emit_32(3238957018);
+emit_32(3271616496);
+emit_32(1130532897);
+emit_32(3238262997);
+emit_32(3271616496);
+emit_32(1130788880);
+emit_32(3237575372);
+emit_32(3271616496);
+emit_32(1131044864);
+emit_32(3235372398);
+emit_32(3271616496);
+emit_32(1131300848);
+emit_32(3236771345);
+emit_32(3271616496);
+emit_32(1131556897);
+emit_32(3235935337);
+emit_32(3271616496);
+emit_32(1131812880);
+emit_32(3235730822);
+emit_32(3271616496);
+emit_32(1132068864);
+emit_32(3234015499);
+emit_32(3271616496);
+emit_32(1081737216);
+emit_32(1111780334);
+emit_32(3271872545);
+emit_32(1090125824);
+emit_32(1111692673);
+emit_32(3271872545);
+emit_32(1094418484);
+emit_32(1111222256);
+emit_32(3271872545);
+emit_32(1098514432);
+emit_32(1110566135);
+emit_32(3271872545);
+emit_32(1100759066);
+emit_32(1110232950);
+emit_32(3271872545);
+emit_32(1102807040);
+emit_32(1109993665);
+emit_32(3271872545);
+emit_32(1104855066);
+emit_32(1109851950);
+emit_32(3271872545);
+emit_32(1106903040);
+emit_32(1109283098);
+emit_32(3271872545);
+emit_32(1108123661);
+emit_32(1108493022);
+emit_32(3271872545);
+emit_32(1109147648);
+emit_32(1107705515);
+emit_32(3271872545);
+emit_32(1110171661);
+emit_32(1107275494);
+emit_32(3271872545);
+emit_32(1111195648);
+emit_32(1106747326);
+emit_32(3271872545);
+emit_32(1112219661);
+emit_32(1106557639);
+emit_32(3271872545);
+emit_32(1113243648);
+emit_32(1107170427);
+emit_32(3271872545);
+emit_32(1114267661);
+emit_32(1107580499);
+emit_32(3271872545);
+emit_32(1115291648);
+emit_32(1107671725);
+emit_32(3271872545);
+emit_32(1116000263);
+emit_32(1107801250);
+emit_32(3271872545);
+emit_32(1116512256);
+emit_32(1107801355);
+emit_32(3271872545);
+emit_32(1117024263);
+emit_32(1107771313);
+emit_32(3271872545);
+emit_32(1117536256);
+emit_32(1108068427);
+emit_32(3271872545);
+emit_32(1118048263);
+emit_32(1108248048);
+emit_32(3271872545);
+emit_32(1118560256);
+emit_32(1108300713);
+emit_32(3271872545);
+emit_32(1119072263);
+emit_32(1108561232);
+emit_32(3271872545);
+emit_32(1119584256);
+emit_32(1108758521);
+emit_32(3271872545);
+emit_32(1120096263);
+emit_32(1109143559);
+emit_32(3271872545);
+emit_32(1120608322);
+emit_32(1109106360);
+emit_32(3271872545);
+emit_32(1121120289);
+emit_32(1109227104);
+emit_32(3271872545);
+emit_32(1121632256);
+emit_32(1109385701);
+emit_32(3271872545);
+emit_32(1122144223);
+emit_32(1109080854);
+emit_32(3271872545);
+emit_32(1122656322);
+emit_32(1108826600);
+emit_32(3271872545);
+emit_32(1123168289);
+emit_32(1108564194);
+emit_32(3271872545);
+emit_32(1123680256);
+emit_32(1108304829);
+emit_32(3271872545);
+emit_32(1124132848);
+emit_32(1107781275);
+emit_32(3271872545);
+emit_32(1124388897);
+emit_32(1107099700);
+emit_32(3271872545);
+emit_32(1124644880);
+emit_32(1105344908);
+emit_32(3271872545);
+emit_32(1124900864);
+emit_32(1103617904);
+emit_32(3271872545);
+emit_32(1125156848);
+emit_32(1102172966);
+emit_32(3271872545);
+emit_32(1125412897);
+emit_32(1100636435);
+emit_32(3271872545);
+emit_32(1125668880);
+emit_32(1099511418);
+emit_32(3271872545);
+emit_32(1125924864);
+emit_32(1097613076);
+emit_32(3271872545);
+emit_32(1126180848);
+emit_32(1095954124);
+emit_32(3271872545);
+emit_32(1126436897);
+emit_32(1093684062);
+emit_32(3271872545);
+emit_32(1126692880);
+emit_32(1091734235);
+emit_32(3271872545);
+emit_32(1126948864);
+emit_32(1088057634);
+emit_32(3271872545);
+emit_32(1127204848);
+emit_32(1082772853);
+emit_32(3271872545);
+emit_32(1127460897);
+emit_32(1073941095);
+emit_32(3271872545);
+emit_32(1127716880);
+emit_32(3208567734);
+emit_32(3271872545);
+emit_32(1127972864);
+emit_32(3214907844);
+emit_32(3271872545);
+emit_32(1128228848);
+emit_32(3228392866);
+emit_32(3271872545);
+emit_32(1128484897);
+emit_32(3236333837);
+emit_32(3271872545);
+emit_32(1128740880);
+emit_32(3239712465);
+emit_32(3271872545);
+emit_32(1128996864);
+emit_32(3240772082);
+emit_32(3271872545);
+emit_32(1129252848);
+emit_32(3241312099);
+emit_32(3271872545);
+emit_32(1129508897);
+emit_32(3242196782);
+emit_32(3271872545);
+emit_32(1129764880);
+emit_32(3243389118);
+emit_32(3271872545);
+emit_32(1130020864);
+emit_32(3242673360);
+emit_32(3271872545);
+emit_32(1130276848);
+emit_32(3241675955);
+emit_32(3271872545);
+emit_32(1130532897);
+emit_32(3241634116);
+emit_32(3271872545);
+emit_32(1130788880);
+emit_32(3240687986);
+emit_32(3271872545);
+emit_32(1131044864);
+emit_32(3240058075);
+emit_32(3271872545);
+emit_32(1131300848);
+emit_32(3239722845);
+emit_32(3271872545);
+emit_32(1131556897);
+emit_32(3238832237);
+emit_32(3271872545);
+emit_32(1131812880);
+emit_32(3238354108);
+emit_32(3271872545);
+emit_32(1132068864);
+emit_32(3234493083);
+emit_32(3271872545);
+emit_32(1081737216);
+emit_32(1111464346);
+emit_32(3272128528);
+emit_32(1090125824);
+emit_32(1111239505);
+emit_32(3272128528);
+emit_32(1094418484);
+emit_32(1110994767);
+emit_32(3272128528);
+emit_32(1098514432);
+emit_32(1110132890);
+emit_32(3272128528);
+emit_32(1100759066);
+emit_32(1109887445);
+emit_32(3272128528);
+emit_32(1102807040);
+emit_32(1109762271);
+emit_32(3272128528);
+emit_32(1104855066);
+emit_32(1109309469);
+emit_32(3272128528);
+emit_32(1106903040);
+emit_32(1108918429);
+emit_32(3272128528);
+emit_32(1108123661);
+emit_32(1108186287);
+emit_32(3272128528);
+emit_32(1109147648);
+emit_32(1107206970);
+emit_32(3272128528);
+emit_32(1110171661);
+emit_32(1106779308);
+emit_32(3272128528);
+emit_32(1111195648);
+emit_32(1105875436);
+emit_32(3272128528);
+emit_32(1112219661);
+emit_32(1105956962);
+emit_32(3272128528);
+emit_32(1113243648);
+emit_32(1106440618);
+emit_32(3272128528);
+emit_32(1114267661);
+emit_32(1107100225);
+emit_32(3272128528);
+emit_32(1115291648);
+emit_32(1107233499);
+emit_32(3272128528);
+emit_32(1116000263);
+emit_32(1107508645);
+emit_32(3272128528);
+emit_32(1116512256);
+emit_32(1107671935);
+emit_32(3272128528);
+emit_32(1117024263);
+emit_32(1107608207);
+emit_32(3272128528);
+emit_32(1117536256);
+emit_32(1107752387);
+emit_32(3272128528);
+emit_32(1118048263);
+emit_32(1108110134);
+emit_32(3272128528);
+emit_32(1118560256);
+emit_32(1108408690);
+emit_32(3272128528);
+emit_32(1119072263);
+emit_32(1108474017);
+emit_32(3272128528);
+emit_32(1119584256);
+emit_32(1108395164);
+emit_32(3272128528);
+emit_32(1120096263);
+emit_32(1108750369);
+emit_32(3272128528);
+emit_32(1120608322);
+emit_32(1108885688);
+emit_32(3272128528);
+emit_32(1121120289);
+emit_32(1109040851);
+emit_32(3272128528);
+emit_32(1121632256);
+emit_32(1108986665);
+emit_32(3272128528);
+emit_32(1122144223);
+emit_32(1108827727);
+emit_32(3272128528);
+emit_32(1122656322);
+emit_32(1108753462);
+emit_32(3272128528);
+emit_32(1123168289);
+emit_32(1108679852);
+emit_32(3272128528);
+emit_32(1123680256);
+emit_32(1108175513);
+emit_32(3272128528);
+emit_32(1124132848);
+emit_32(1107583015);
+emit_32(3272128528);
+emit_32(1124388897);
+emit_32(1106521358);
+emit_32(3272128528);
+emit_32(1124644880);
+emit_32(1104987134);
+emit_32(3272128528);
+emit_32(1124900864);
+emit_32(1103342862);
+emit_32(3272128528);
+emit_32(1125156848);
+emit_32(1101546652);
+emit_32(3272128528);
+emit_32(1125412897);
+emit_32(1099964770);
+emit_32(3272128528);
+emit_32(1125668880);
+emit_32(1098242746);
+emit_32(3272128528);
+emit_32(1125924864);
+emit_32(1096185125);
+emit_32(3272128528);
+emit_32(1126180848);
+emit_32(1094379792);
+emit_32(3272128528);
+emit_32(1126436897);
+emit_32(1092287841);
+emit_32(3272128528);
+emit_32(1126692880);
+emit_32(1089612693);
+emit_32(3272128528);
+emit_32(1126948864);
+emit_32(1083167159);
+emit_32(3272128528);
+emit_32(1127204848);
+emit_32(1069990774);
+emit_32(3272128528);
+emit_32(1127460897);
+emit_32(1049416773);
+emit_32(3272128528);
+emit_32(1127716880);
+emit_32(3222071379);
+emit_32(3272128528);
+emit_32(1127972864);
+emit_32(3226126181);
+emit_32(3272128528);
+emit_32(1128228848);
+emit_32(3233267570);
+emit_32(3272128528);
+emit_32(1128484897);
+emit_32(3238358344);
+emit_32(3272128528);
+emit_32(1128740880);
+emit_32(3242189233);
+emit_32(3272128528);
+emit_32(1128996864);
+emit_32(3244019627);
+emit_32(3272128528);
+emit_32(1129252848);
+emit_32(3244520951);
+emit_32(3272128528);
+emit_32(1129508897);
+emit_32(3245091062);
+emit_32(3272128528);
+emit_32(1129764880);
+emit_32(3245124302);
+emit_32(3272128528);
+emit_32(1130020864);
+emit_32(3245824436);
+emit_32(3272128528);
+emit_32(1130276848);
+emit_32(3245103854);
+emit_32(3272128528);
+emit_32(1130532897);
+emit_32(3245100184);
+emit_32(3272128528);
+emit_32(1130788880);
+emit_32(3243298207);
+emit_32(3272128528);
+emit_32(1131044864);
+emit_32(3242985731);
+emit_32(3272128528);
+emit_32(1131300848);
+emit_32(3242330895);
+emit_32(3272128528);
+emit_32(1131556897);
+emit_32(3242176545);
+emit_32(3272128528);
+emit_32(1131812880);
+emit_32(3239330856);
+emit_32(3272128528);
+emit_32(1132068864);
+emit_32(3234703260);
+emit_32(3272128528);
+emit_32(1081737216);
+emit_32(1111298697);
+emit_32(3272384512);
+emit_32(1090125824);
+emit_32(1111058363);
+emit_32(3272384512);
+emit_32(1094418484);
+emit_32(1110735087);
+emit_32(3272384512);
+emit_32(1098514432);
+emit_32(1110169171);
+emit_32(3272384512);
+emit_32(1100759066);
+emit_32(1109403894);
+emit_32(3272384512);
+emit_32(1102807040);
+emit_32(1108912557);
+emit_32(3272384512);
+emit_32(1104855066);
+emit_32(1108673482);
+emit_32(3272384512);
+emit_32(1106903040);
+emit_32(1108260081);
+emit_32(3272384512);
+emit_32(1108123661);
+emit_32(1107647870);
+emit_32(3272384512);
+emit_32(1109147648);
+emit_32(1106643832);
+emit_32(3272384512);
+emit_32(1110171661);
+emit_32(1105736919);
+emit_32(3272384512);
+emit_32(1111195648);
+emit_32(1105100643);
+emit_32(3272384512);
+emit_32(1112219661);
+emit_32(1104911375);
+emit_32(3272384512);
+emit_32(1113243648);
+emit_32(1105299348);
+emit_32(3272384512);
+emit_32(1114267661);
+emit_32(1106150267);
+emit_32(3272384512);
+emit_32(1115291648);
+emit_32(1106320766);
+emit_32(3272384512);
+emit_32(1116000263);
+emit_32(1106620187);
+emit_32(3272384512);
+emit_32(1116512256);
+emit_32(1107259294);
+emit_32(3272384512);
+emit_32(1117024263);
+emit_32(1107471604);
+emit_32(3272384512);
+emit_32(1117536256);
+emit_32(1107538267);
+emit_32(3272384512);
+emit_32(1118048263);
+emit_32(1108219553);
+emit_32(3272384512);
+emit_32(1118560256);
+emit_32(1108391625);
+emit_32(3272384512);
+emit_32(1119072263);
+emit_32(1108309180);
+emit_32(3272384512);
+emit_32(1119584256);
+emit_32(1108147516);
+emit_32(3272384512);
+emit_32(1120096263);
+emit_32(1108248730);
+emit_32(3272384512);
+emit_32(1120608322);
+emit_32(1108495801);
+emit_32(3272384512);
+emit_32(1121120289);
+emit_32(1108672669);
+emit_32(3272384512);
+emit_32(1121632256);
+emit_32(1108534860);
+emit_32(3272384512);
+emit_32(1122144223);
+emit_32(1108457213);
+emit_32(3272384512);
+emit_32(1122656322);
+emit_32(1108523588);
+emit_32(3272384512);
+emit_32(1123168289);
+emit_32(1108457397);
+emit_32(3272384512);
+emit_32(1123680256);
+emit_32(1108144502);
+emit_32(3272384512);
+emit_32(1124132848);
+emit_32(1107554966);
+emit_32(3272384512);
+emit_32(1124388897);
+emit_32(1106329469);
+emit_32(3272384512);
+emit_32(1124644880);
+emit_32(1104699510);
+emit_32(3272384512);
+emit_32(1124900864);
+emit_32(1103026140);
+emit_32(3272384512);
+emit_32(1125156848);
+emit_32(1101214148);
+emit_32(3272384512);
+emit_32(1125412897);
+emit_32(1099233965);
+emit_32(3272384512);
+emit_32(1125668880);
+emit_32(1095822737);
+emit_32(3272384512);
+emit_32(1125924864);
+emit_32(1093805801);
+emit_32(3272384512);
+emit_32(1126180848);
+emit_32(1091936012);
+emit_32(3272384512);
+emit_32(1126436897);
+emit_32(1089180931);
+emit_32(3272384512);
+emit_32(1126692880);
+emit_32(1084894877);
+emit_32(3272384512);
+emit_32(1126948864);
+emit_32(1077040728);
+emit_32(3272384512);
+emit_32(1127204848);
+emit_32(1063155099);
+emit_32(3272384512);
+emit_32(1127460897);
+emit_32(3215476340);
+emit_32(3272384512);
+emit_32(1127716880);
+emit_32(3228112477);
+emit_32(3272384512);
+emit_32(1127972864);
+emit_32(3232515133);
+emit_32(3272384512);
+emit_32(1128228848);
+emit_32(3238089206);
+emit_32(3272384512);
+emit_32(1128484897);
+emit_32(3241062852);
+emit_32(3272384512);
+emit_32(1128740880);
+emit_32(3244581139);
+emit_32(3272384512);
+emit_32(1128996864);
+emit_32(3246469677);
+emit_32(3272384512);
+emit_32(1129252848);
+emit_32(3246870181);
+emit_32(3272384512);
+emit_32(1129508897);
+emit_32(3246893302);
+emit_32(3272384512);
+emit_32(1129764880);
+emit_32(3247231363);
+emit_32(3272384512);
+emit_32(1130020864);
+emit_32(3247263344);
+emit_32(3272384512);
+emit_32(1130276848);
+emit_32(3246998946);
+emit_32(3272384512);
+emit_32(1130532897);
+emit_32(3246499404);
+emit_32(3272384512);
+emit_32(1130788880);
+emit_32(3246148551);
+emit_32(3272384512);
+emit_32(1131044864);
+emit_32(3245400077);
+emit_32(3272384512);
+emit_32(1131300848);
+emit_32(3245118115);
+emit_32(3272384512);
+emit_32(1131556897);
+emit_32(3243091847);
+emit_32(3272384512);
+emit_32(1131812880);
+emit_32(3239267260);
+emit_32(3272384512);
+emit_32(1132068864);
+emit_32(3232983029);
+emit_32(3272384512);
+emit_32(1081737216);
+emit_32(1110766990);
+emit_32(3272640496);
+emit_32(1090125824);
+emit_32(1110715348);
+emit_32(3272640496);
+emit_32(1094418484);
+emit_32(1110472891);
+emit_32(3272640496);
+emit_32(1098514432);
+emit_32(1110034088);
+emit_32(3272640496);
+emit_32(1100759066);
+emit_32(1109323153);
+emit_32(3272640496);
+emit_32(1102807040);
+emit_32(1108619533);
+emit_32(3272640496);
+emit_32(1104855066);
+emit_32(1107915545);
+emit_32(3272640496);
+emit_32(1106903040);
+emit_32(1107624277);
+emit_32(3272640496);
+emit_32(1108123661);
+emit_32(1106832051);
+emit_32(3272640496);
+emit_32(1109147648);
+emit_32(1105866313);
+emit_32(3272640496);
+emit_32(1110171661);
+emit_32(1104840439);
+emit_32(3272640496);
+emit_32(1111195648);
+emit_32(1104739880);
+emit_32(3272640496);
+emit_32(1112219661);
+emit_32(1104492573);
+emit_32(3272640496);
+emit_32(1113243648);
+emit_32(1104325483);
+emit_32(3272640496);
+emit_32(1114267661);
+emit_32(1105104785);
+emit_32(3272640496);
+emit_32(1115291648);
+emit_32(1105118154);
+emit_32(3272640496);
+emit_32(1116000263);
+emit_32(1105110290);
+emit_32(3272640496);
+emit_32(1116512256);
+emit_32(1106190585);
+emit_32(3272640496);
+emit_32(1117024263);
+emit_32(1106806938);
+emit_32(3272640496);
+emit_32(1117536256);
+emit_32(1107447723);
+emit_32(3272640496);
+emit_32(1118048263);
+emit_32(1107960450);
+emit_32(3272640496);
+emit_32(1118560256);
+emit_32(1108120882);
+emit_32(3272640496);
+emit_32(1119072263);
+emit_32(1108021058);
+emit_32(3272640496);
+emit_32(1119584256);
+emit_32(1107844897);
+emit_32(3272640496);
+emit_32(1120096263);
+emit_32(1107897457);
+emit_32(3272640496);
+emit_32(1120608322);
+emit_32(1108031465);
+emit_32(3272640496);
+emit_32(1121120289);
+emit_32(1108410263);
+emit_32(3272640496);
+emit_32(1121632256);
+emit_32(1108301604);
+emit_32(3272640496);
+emit_32(1122144223);
+emit_32(1108298380);
+emit_32(3272640496);
+emit_32(1122656322);
+emit_32(1108279165);
+emit_32(3272640496);
+emit_32(1123168289);
+emit_32(1108038648);
+emit_32(3272640496);
+emit_32(1123680256);
+emit_32(1107908388);
+emit_32(3272640496);
+emit_32(1124132848);
+emit_32(1107420617);
+emit_32(3272640496);
+emit_32(1124388897);
+emit_32(1106088663);
+emit_32(3272640496);
+emit_32(1124644880);
+emit_32(1104288416);
+emit_32(3272640496);
+emit_32(1124900864);
+emit_32(1102764101);
+emit_32(3272640496);
+emit_32(1125156848);
+emit_32(1100664904);
+emit_32(3272640496);
+emit_32(1125412897);
+emit_32(1097290744);
+emit_32(3272640496);
+emit_32(1125668880);
+emit_32(1093918838);
+emit_32(3272640496);
+emit_32(1125924864);
+emit_32(1092359438);
+emit_32(3272640496);
+emit_32(1126180848);
+emit_32(1090438216);
+emit_32(3272640496);
+emit_32(1126436897);
+emit_32(1085633179);
+emit_32(3272640496);
+emit_32(1126692880);
+emit_32(1082298330);
+emit_32(3272640496);
+emit_32(1126948864);
+emit_32(1071317684);
+emit_32(3272640496);
+emit_32(1127204848);
+emit_32(3211416991);
+emit_32(3272640496);
+emit_32(1127460897);
+emit_32(3224008099);
+emit_32(3272640496);
+emit_32(1127716880);
+emit_32(3232930936);
+emit_32(3272640496);
+emit_32(1127972864);
+emit_32(3237569689);
+emit_32(3272640496);
+emit_32(1128228848);
+emit_32(3240285648);
+emit_32(3272640496);
+emit_32(1128484897);
+emit_32(3243818405);
+emit_32(3272640496);
+emit_32(1128740880);
+emit_32(3246427577);
+emit_32(3272640496);
+emit_32(1128996864);
+emit_32(3247046918);
+emit_32(3272640496);
+emit_32(1129252848);
+emit_32(3247819509);
+emit_32(3272640496);
+emit_32(1129508897);
+emit_32(3247822340);
+emit_32(3272640496);
+emit_32(1129764880);
+emit_32(3248121446);
+emit_32(3272640496);
+emit_32(1130020864);
+emit_32(3248655224);
+emit_32(3272640496);
+emit_32(1130276848);
+emit_32(3248219541);
+emit_32(3272640496);
+emit_32(1130532897);
+emit_32(3247726395);
+emit_32(3272640496);
+emit_32(1130788880);
+emit_32(3247190835);
+emit_32(3272640496);
+emit_32(1131044864);
+emit_32(3246657425);
+emit_32(3272640496);
+emit_32(1131300848);
+emit_32(3245446844);
+emit_32(3272640496);
+emit_32(1131556897);
+emit_32(3243320646);
+emit_32(3272640496);
+emit_32(1131812880);
+emit_32(3240090015);
+emit_32(3272640496);
+emit_32(1132068864);
+emit_32(3233059449);
+emit_32(3272640496);
+emit_32(1081737216);
+emit_32(1110289075);
+emit_32(3272896545);
+emit_32(1090125824);
+emit_32(1110184899);
+emit_32(3272896545);
+emit_32(1094418484);
+emit_32(1110081326);
+emit_32(3272896545);
+emit_32(1098514432);
+emit_32(1109624907);
+emit_32(3272896545);
+emit_32(1100759066);
+emit_32(1109048007);
+emit_32(3272896545);
+emit_32(1102807040);
+emit_32(1108349472);
+emit_32(3272896545);
+emit_32(1104855066);
+emit_32(1107549330);
+emit_32(3272896545);
+emit_32(1106903040);
+emit_32(1106981421);
+emit_32(3272896545);
+emit_32(1108123661);
+emit_32(1105990831);
+emit_32(3272896545);
+emit_32(1109147648);
+emit_32(1104915359);
+emit_32(3272896545);
+emit_32(1110171661);
+emit_32(1103693873);
+emit_32(3272896545);
+emit_32(1111195648);
+emit_32(1103863900);
+emit_32(3272896545);
+emit_32(1112219661);
+emit_32(1103998799);
+emit_32(3272896545);
+emit_32(1113243648);
+emit_32(1104012640);
+emit_32(3272896545);
+emit_32(1114267661);
+emit_32(1104234834);
+emit_32(3272896545);
+emit_32(1115291648);
+emit_32(1104799230);
+emit_32(3272896545);
+emit_32(1116000263);
+emit_32(1104865395);
+emit_32(3272896545);
+emit_32(1116512256);
+emit_32(1105083079);
+emit_32(3272896545);
+emit_32(1117024263);
+emit_32(1105770892);
+emit_32(3272896545);
+emit_32(1117536256);
+emit_32(1106981264);
+emit_32(3272896545);
+emit_32(1118048263);
+emit_32(1107541964);
+emit_32(3272896545);
+emit_32(1118560256);
+emit_32(1107753173);
+emit_32(3272896545);
+emit_32(1119072263);
+emit_32(1107932348);
+emit_32(3272896545);
+emit_32(1119584256);
+emit_32(1107696026);
+emit_32(3272896545);
+emit_32(1120096263);
+emit_32(1107774171);
+emit_32(3272896545);
+emit_32(1120608322);
+emit_32(1107999483);
+emit_32(3272896545);
+emit_32(1121120289);
+emit_32(1108089897);
+emit_32(3272896545);
+emit_32(1121632256);
+emit_32(1107942887);
+emit_32(3272896545);
+emit_32(1122144223);
+emit_32(1108011018);
+emit_32(3272896545);
+emit_32(1122656322);
+emit_32(1107841201);
+emit_32(3272896545);
+emit_32(1123168289);
+emit_32(1107624487);
+emit_32(3272896545);
+emit_32(1123680256);
+emit_32(1107346430);
+emit_32(3272896545);
+emit_32(1124132848);
+emit_32(1106655681);
+emit_32(3272896545);
+emit_32(1124388897);
+emit_32(1105650778);
+emit_32(3272896545);
+emit_32(1124644880);
+emit_32(1103819755);
+emit_32(3272896545);
+emit_32(1124900864);
+emit_32(1101832441);
+emit_32(3272896545);
+emit_32(1125156848);
+emit_32(1099587597);
+emit_32(3272896545);
+emit_32(1125412897);
+emit_32(1095963771);
+emit_32(3272896545);
+emit_32(1125668880);
+emit_32(1092682462);
+emit_32(3272896545);
+emit_32(1125924864);
+emit_32(1090858999);
+emit_32(3272896545);
+emit_32(1126180848);
+emit_32(1087538064);
+emit_32(3272896545);
+emit_32(1126436897);
+emit_32(1082518866);
+emit_32(3272896545);
+emit_32(1126692880);
+emit_32(1074794217);
+emit_32(3272896545);
+emit_32(1126948864);
+emit_32(1055151058);
+emit_32(3272896545);
+emit_32(1127204848);
+emit_32(3219019520);
+emit_32(3272896545);
+emit_32(1127460897);
+emit_32(3227302431);
+emit_32(3272896545);
+emit_32(1127716880);
+emit_32(3235425456);
+emit_32(3272896545);
+emit_32(1127972864);
+emit_32(3239324219);
+emit_32(3272896545);
+emit_32(1128228848);
+emit_32(3242595451);
+emit_32(3272896545);
+emit_32(1128484897);
+emit_32(3244970790);
+emit_32(3272896545);
+emit_32(1128740880);
+emit_32(3246227194);
+emit_32(3272896545);
+emit_32(1128996864);
+emit_32(3247085558);
+emit_32(3272896545);
+emit_32(1129252848);
+emit_32(3248170310);
+emit_32(3272896545);
+emit_32(1129508897);
+emit_32(3248369697);
+emit_32(3272896545);
+emit_32(1129764880);
+emit_32(3248556238);
+emit_32(3272896545);
+emit_32(1130020864);
+emit_32(3248791329);
+emit_32(3272896545);
+emit_32(1130276848);
+emit_32(3248863052);
+emit_32(3272896545);
+emit_32(1130532897);
+emit_32(3248823992);
+emit_32(3272896545);
+emit_32(1130788880);
+emit_32(3248329641);
+emit_32(3272896545);
+emit_32(1131044864);
+emit_32(3247178567);
+emit_32(3272896545);
+emit_32(1131300848);
+emit_32(3244969427);
+emit_32(3272896545);
+emit_32(1131556897);
+emit_32(3242521421);
+emit_32(3272896545);
+emit_32(1131812880);
+emit_32(3240271177);
+emit_32(3272896545);
+emit_32(1132068864);
+emit_32(3235475683);
+emit_32(3272896545);
+emit_32(1081737216);
+emit_32(1110106754);
+emit_32(3273152528);
+emit_32(1090125824);
+emit_32(1109851190);
+emit_32(3273152528);
+emit_32(1094418484);
+emit_32(1109531007);
+emit_32(3273152528);
+emit_32(1098514432);
+emit_32(1109268234);
+emit_32(3273152528);
+emit_32(1100759066);
+emit_32(1108527468);
+emit_32(3273152528);
+emit_32(1102807040);
+emit_32(1107822510);
+emit_32(3273152528);
+emit_32(1104855066);
+emit_32(1106879657);
+emit_32(3273152528);
+emit_32(1106903040);
+emit_32(1105644854);
+emit_32(3273152528);
+emit_32(1108123661);
+emit_32(1104812442);
+emit_32(3273152528);
+emit_32(1109147648);
+emit_32(1103599816);
+emit_32(3273152528);
+emit_32(1110171661);
+emit_32(1102886837);
+emit_32(3273152528);
+emit_32(1111195648);
+emit_32(1102824551);
+emit_32(3273152528);
+emit_32(1112219661);
+emit_32(1103195800);
+emit_32(3273152528);
+emit_32(1113243648);
+emit_32(1103637250);
+emit_32(3273152528);
+emit_32(1114267661);
+emit_32(1103975626);
+emit_32(3273152528);
+emit_32(1115291648);
+emit_32(1103996545);
+emit_32(3273152528);
+emit_32(1116000263);
+emit_32(1104513755);
+emit_32(3273152528);
+emit_32(1116512256);
+emit_32(1104583642);
+emit_32(3273152528);
+emit_32(1117024263);
+emit_32(1105332745);
+emit_32(3273152528);
+emit_32(1117536256);
+emit_32(1106424522);
+emit_32(3273152528);
+emit_32(1118048263);
+emit_32(1107096712);
+emit_32(3273152528);
+emit_32(1118560256);
+emit_32(1107537140);
+emit_32(3273152528);
+emit_32(1119072263);
+emit_32(1107484004);
+emit_32(3273152528);
+emit_32(1119584256);
+emit_32(1107558426);
+emit_32(3273152528);
+emit_32(1120096263);
+emit_32(1107936071);
+emit_32(3273152528);
+emit_32(1120608322);
+emit_32(1108104000);
+emit_32(3273152528);
+emit_32(1121120289);
+emit_32(1107929150);
+emit_32(3273152528);
+emit_32(1121632256);
+emit_32(1107694584);
+emit_32(3273152528);
+emit_32(1122144223);
+emit_32(1107539263);
+emit_32(3273152528);
+emit_32(1122656322);
+emit_32(1107466886);
+emit_32(3273152528);
+emit_32(1123168289);
+emit_32(1107473859);
+emit_32(3273152528);
+emit_32(1123680256);
+emit_32(1106712723);
+emit_32(3273152528);
+emit_32(1124132848);
+emit_32(1105424338);
+emit_32(3273152528);
+emit_32(1124388897);
+emit_32(1104440931);
+emit_32(3273152528);
+emit_32(1124644880);
+emit_32(1103144052);
+emit_32(3273152528);
+emit_32(1124900864);
+emit_32(1101107560);
+emit_32(3273152528);
+emit_32(1125156848);
+emit_32(1099132725);
+emit_32(3273152528);
+emit_32(1125412897);
+emit_32(1095577685);
+emit_32(3273152528);
+emit_32(1125668880);
+emit_32(1092369556);
+emit_32(3273152528);
+emit_32(1125924864);
+emit_32(1088719809);
+emit_32(3273152528);
+emit_32(1126180848);
+emit_32(1083696669);
+emit_32(3273152528);
+emit_32(1126436897);
+emit_32(1075000451);
+emit_32(3273152528);
+emit_32(1126692880);
+emit_32(1069530827);
+emit_32(3273152528);
+emit_32(1126948864);
+emit_32(3206582150);
+emit_32(3273152528);
+emit_32(1127204848);
+emit_32(3221141921);
+emit_32(3273152528);
+emit_32(1127460897);
+emit_32(3231308055);
+emit_32(3273152528);
+emit_32(1127716880);
+emit_32(3238013027);
+emit_32(3273152528);
+emit_32(1127972864);
+emit_32(3241648692);
+emit_32(3273152528);
+emit_32(1128228848);
+emit_32(3243113762);
+emit_32(3273152528);
+emit_32(1128484897);
+emit_32(3244161289);
+emit_32(3273152528);
+emit_32(1128740880);
+emit_32(3245421258);
+emit_32(3273152528);
+emit_32(1128996864);
+emit_32(3246875424);
+emit_32(3273152528);
+emit_32(1129252848);
+emit_32(3247610685);
+emit_32(3273152528);
+emit_32(1129508897);
+emit_32(3248309299);
+emit_32(3273152528);
+emit_32(1129764880);
+emit_32(3248981069);
+emit_32(3273152528);
+emit_32(1130020864);
+emit_32(3249435889);
+emit_32(3273152528);
+emit_32(1130276848);
+emit_32(3249270057);
+emit_32(3273152528);
+emit_32(1130532897);
+emit_32(3249259047);
+emit_32(3273152528);
+emit_32(1130788880);
+emit_32(3248161974);
+emit_32(3273152528);
+emit_32(1131044864);
+emit_32(3246939072);
+emit_32(3273152528);
+emit_32(1131300848);
+emit_32(3244307041);
+emit_32(3273152528);
+emit_32(1131556897);
+emit_32(3241397138);
+emit_32(3273152528);
+emit_32(1131812880);
+emit_32(3239169606);
+emit_32(3273152528);
+emit_32(1132068864);
+emit_32(3235418829);
+emit_32(3273152528);
+emit_32(1081737216);
+emit_32(1109848700);
+emit_32(3273408512);
+emit_32(1090125824);
+emit_32(1109616073);
+emit_32(3273408512);
+emit_32(1094418484);
+emit_32(1109191190);
+emit_32(3273408512);
+emit_32(1098514432);
+emit_32(1108732386);
+emit_32(3273408512);
+emit_32(1100759066);
+emit_32(1108353876);
+emit_32(3273408512);
+emit_32(1102807040);
+emit_32(1107813099);
+emit_32(3273408512);
+emit_32(1104855066);
+emit_32(1106931404);
+emit_32(3273408512);
+emit_32(1106903040);
+emit_32(1105711700);
+emit_32(3273408512);
+emit_32(1108123661);
+emit_32(1104199496);
+emit_32(3273408512);
+emit_32(1109147648);
+emit_32(1102966738);
+emit_32(3273408512);
+emit_32(1110171661);
+emit_32(1102284115);
+emit_32(3273408512);
+emit_32(1111195648);
+emit_32(1102118283);
+emit_32(3273408512);
+emit_32(1112219661);
+emit_32(1102403024);
+emit_32(3273408512);
+emit_32(1113243648);
+emit_32(1102981471);
+emit_32(3273408512);
+emit_32(1114267661);
+emit_32(1103432253);
+emit_32(3273408512);
+emit_32(1115291648);
+emit_32(1103738700);
+emit_32(3273408512);
+emit_32(1116000263);
+emit_32(1104470396);
+emit_32(3273408512);
+emit_32(1116512256);
+emit_32(1104866915);
+emit_32(3273408512);
+emit_32(1117024263);
+emit_32(1105262543);
+emit_32(3273408512);
+emit_32(1117536256);
+emit_32(1106001527);
+emit_32(3273408512);
+emit_32(1118048263);
+emit_32(1106476637);
+emit_32(3273408512);
+emit_32(1118560256);
+emit_32(1106576409);
+emit_32(3273408512);
+emit_32(1119072263);
+emit_32(1106461537);
+emit_32(3273408512);
+emit_32(1119584256);
+emit_32(1107353561);
+emit_32(3273408512);
+emit_32(1120096263);
+emit_32(1107634841);
+emit_32(3273408512);
+emit_32(1120608322);
+emit_32(1107769845);
+emit_32(3273408512);
+emit_32(1121120289);
+emit_32(1107434380);
+emit_32(3273408512);
+emit_32(1121632256);
+emit_32(1107315943);
+emit_32(3273408512);
+emit_32(1122144223);
+emit_32(1106787592);
+emit_32(3273408512);
+emit_32(1122656322);
+emit_32(1106765100);
+emit_32(3273408512);
+emit_32(1123168289);
+emit_32(1106762845);
+emit_32(3273408512);
+emit_32(1123680256);
+emit_32(1105758834);
+emit_32(3273408512);
+emit_32(1124132848);
+emit_32(1104621758);
+emit_32(3273408512);
+emit_32(1124388897);
+emit_32(1103142375);
+emit_32(3273408512);
+emit_32(1124644880);
+emit_32(1101953080);
+emit_32(3273408512);
+emit_32(1124900864);
+emit_32(1100385039);
+emit_32(3273408512);
+emit_32(1125156848);
+emit_32(1097070857);
+emit_32(3273408512);
+emit_32(1125412897);
+emit_32(1093584657);
+emit_32(3273408512);
+emit_32(1125668880);
+emit_32(1091629985);
+emit_32(3273408512);
+emit_32(1125924864);
+emit_32(1088130111);
+emit_32(3273408512);
+emit_32(1126180848);
+emit_32(1080062598);
+emit_32(3273408512);
+emit_32(1126436897);
+emit_32(1066603370);
+emit_32(3273408512);
+emit_32(1126692880);
+emit_32(3206794499);
+emit_32(3273408512);
+emit_32(1126948864);
+emit_32(3224322043);
+emit_32(3273408512);
+emit_32(1127204848);
+emit_32(3229663824);
+emit_32(3273408512);
+emit_32(1127460897);
+emit_32(3234125914);
+emit_32(3273408512);
+emit_32(1127716880);
+emit_32(3238854457);
+emit_32(3273408512);
+emit_32(1127972864);
+emit_32(3240458138);
+emit_32(3273408512);
+emit_32(1128228848);
+emit_32(3241347121);
+emit_32(3273408512);
+emit_32(1128484897);
+emit_32(3243399080);
+emit_32(3273408512);
+emit_32(1128740880);
+emit_32(3244860480);
+emit_32(3273408512);
+emit_32(1128996864);
+emit_32(3246331213);
+emit_32(3273408512);
+emit_32(1129252848);
+emit_32(3247173534);
+emit_32(3273408512);
+emit_32(1129508897);
+emit_32(3247995565);
+emit_32(3273408512);
+emit_32(1129764880);
+emit_32(3249070460);
+emit_32(3273408512);
+emit_32(1130020864);
+emit_32(3249215740);
+emit_32(3273408512);
+emit_32(1130276848);
+emit_32(3249090383);
+emit_32(3273408512);
+emit_32(1130532897);
+emit_32(3248637136);
+emit_32(3273408512);
+emit_32(1130788880);
+emit_32(3247527900);
+emit_32(3273408512);
+emit_32(1131044864);
+emit_32(3246097695);
+emit_32(3273408512);
+emit_32(1131300848);
+emit_32(3243725711);
+emit_32(3273408512);
+emit_32(1131556897);
+emit_32(3240252198);
+emit_32(3273408512);
+emit_32(1131812880);
+emit_32(3238101369);
+emit_32(3273408512);
+emit_32(1132068864);
+emit_32(3232685716);
+emit_32(3273408512);
+emit_32(1081737216);
+emit_32(1109518057);
+emit_32(3273664496);
+emit_32(1090125824);
+emit_32(1109209645);
+emit_32(3273664496);
+emit_32(1094418484);
+emit_32(1108711100);
+emit_32(3273664496);
+emit_32(1098514432);
+emit_32(1108394482);
+emit_32(3273664496);
+emit_32(1100759066);
+emit_32(1107902805);
+emit_32(3273664496);
+emit_32(1102807040);
+emit_32(1107530351);
+emit_32(3273664496);
+emit_32(1104855066);
+emit_32(1106484396);
+emit_32(3273664496);
+emit_32(1106903040);
+emit_32(1105503610);
+emit_32(3273664496);
+emit_32(1108123661);
+emit_32(1104089658);
+emit_32(3273664496);
+emit_32(1109147648);
+emit_32(1103023571);
+emit_32(3273664496);
+emit_32(1110171661);
+emit_32(1102213651);
+emit_32(3273664496);
+emit_32(1111195648);
+emit_32(1101760718);
+emit_32(3273664496);
+emit_32(1112219661);
+emit_32(1102038119);
+emit_32(3273664496);
+emit_32(1113243648);
+emit_32(1102582016);
+emit_32(3273664496);
+emit_32(1114267661);
+emit_32(1103573287);
+emit_32(3273664496);
+emit_32(1115291648);
+emit_32(1103737913);
+emit_32(3273664496);
+emit_32(1116000263);
+emit_32(1104225396);
+emit_32(3273664496);
+emit_32(1116512256);
+emit_32(1104815063);
+emit_32(3273664496);
+emit_32(1117024263);
+emit_32(1105243301);
+emit_32(3273664496);
+emit_32(1117536256);
+emit_32(1105695814);
+emit_32(3273664496);
+emit_32(1118048263);
+emit_32(1105989625);
+emit_32(3273664496);
+emit_32(1118560256);
+emit_32(1106114930);
+emit_32(3273664496);
+emit_32(1119072263);
+emit_32(1106699669);
+emit_32(3273664496);
+emit_32(1119584256);
+emit_32(1107034164);
+emit_32(3273664496);
+emit_32(1120096263);
+emit_32(1107327294);
+emit_32(3273664496);
+emit_32(1120608322);
+emit_32(1106913106);
+emit_32(3273664496);
+emit_32(1121120289);
+emit_32(1106509038);
+emit_32(3273664496);
+emit_32(1121632256);
+emit_32(1105952401);
+emit_32(3273664496);
+emit_32(1122144223);
+emit_32(1106608862);
+emit_32(3273664496);
+emit_32(1122656322);
+emit_32(1106050443);
+emit_32(3273664496);
+emit_32(1123168289);
+emit_32(1105539210);
+emit_32(3273664496);
+emit_32(1123680256);
+emit_32(1104316937);
+emit_32(3273664496);
+emit_32(1124132848);
+emit_32(1103423078);
+emit_32(3273664496);
+emit_32(1124388897);
+emit_32(1102157867);
+emit_32(3273664496);
+emit_32(1124644880);
+emit_32(1100686767);
+emit_32(3273664496);
+emit_32(1124900864);
+emit_32(1099193752);
+emit_32(3273664496);
+emit_32(1125156848);
+emit_32(1096183867);
+emit_32(3273664496);
+emit_32(1125412897);
+emit_32(1092300434);
+emit_32(3273664496);
+emit_32(1125668880);
+emit_32(1090658553);
+emit_32(3273664496);
+emit_32(1125924864);
+emit_32(1087350684);
+emit_32(3273664496);
+emit_32(1126180848);
+emit_32(1076097052);
+emit_32(3273664496);
+emit_32(1126436897);
+emit_32(1033250201);
+emit_32(3273664496);
+emit_32(1126692880);
+emit_32(3213794340);
+emit_32(3273664496);
+emit_32(1126948864);
+emit_32(3225617244);
+emit_32(3273664496);
+emit_32(1127204848);
+emit_32(3234199587);
+emit_32(3273664496);
+emit_32(1127460897);
+emit_32(3236783823);
+emit_32(3273664496);
+emit_32(1127716880);
+emit_32(3239231409);
+emit_32(3273664496);
+emit_32(1127972864);
+emit_32(3239869436);
+emit_32(3273664496);
+emit_32(1128228848);
+emit_32(3240676137);
+emit_32(3273664496);
+emit_32(1128484897);
+emit_32(3242958153);
+emit_32(3273664496);
+emit_32(1128740880);
+emit_32(3244196417);
+emit_32(3273664496);
+emit_32(1128996864);
+emit_32(3245843100);
+emit_32(3273664496);
+emit_32(1129252848);
+emit_32(3247245204);
+emit_32(3273664496);
+emit_32(1129508897);
+emit_32(3248095337);
+emit_32(3273664496);
+emit_32(1129764880);
+emit_32(3248269505);
+emit_32(3273664496);
+emit_32(1130020864);
+emit_32(3248127423);
+emit_32(3273664496);
+emit_32(1130276848);
+emit_32(3248240250);
+emit_32(3273664496);
+emit_32(1130532897);
+emit_32(3247358398);
+emit_32(3273664496);
+emit_32(1130788880);
+emit_32(3246549998);
+emit_32(3273664496);
+emit_32(1131044864);
+emit_32(3244820005);
+emit_32(3273664496);
+emit_32(1131300848);
+emit_32(3242185563);
+emit_32(3273664496);
+emit_32(1131556897);
+emit_32(3239470873);
+emit_32(3273664496);
+emit_32(1131812880);
+emit_32(3235146241);
+emit_32(3273664496);
+emit_32(1132068864);
+emit_32(3228421765);
+emit_32(3273664496);
+emit_32(1081737216);
+emit_32(1109095429);
+emit_32(3273920545);
+emit_32(1090125824);
+emit_32(1108721848);
+emit_32(3273920545);
+emit_32(1094418484);
+emit_32(1108271799);
+emit_32(3273920545);
+emit_32(1098514432);
+emit_32(1107836640);
+emit_32(3273920545);
+emit_32(1100759066);
+emit_32(1107583487);
+emit_32(3273920545);
+emit_32(1102807040);
+emit_32(1107305929);
+emit_32(3273920545);
+emit_32(1104855066);
+emit_32(1106095427);
+emit_32(3273920545);
+emit_32(1106903040);
+emit_32(1104843427);
+emit_32(3273920545);
+emit_32(1108123661);
+emit_32(1103754481);
+emit_32(3273920545);
+emit_32(1109147648);
+emit_32(1102895959);
+emit_32(3273920545);
+emit_32(1110171661);
+emit_32(1102181460);
+emit_32(3273920545);
+emit_32(1111195648);
+emit_32(1101676256);
+emit_32(3273920545);
+emit_32(1112219661);
+emit_32(1101547858);
+emit_32(3273920545);
+emit_32(1113243648);
+emit_32(1102482086);
+emit_32(3273920545);
+emit_32(1114267661);
+emit_32(1103334421);
+emit_32(3273920545);
+emit_32(1115291648);
+emit_32(1103698330);
+emit_32(3273920545);
+emit_32(1116000263);
+emit_32(1103797472);
+emit_32(3273920545);
+emit_32(1116512256);
+emit_32(1104470449);
+emit_32(3273920545);
+emit_32(1117024263);
+emit_32(1105019221);
+emit_32(3273920545);
+emit_32(1117536256);
+emit_32(1105107249);
+emit_32(3273920545);
+emit_32(1118048263);
+emit_32(1105221177);
+emit_32(3273920545);
+emit_32(1118560256);
+emit_32(1105813517);
+emit_32(3273920545);
+emit_32(1119072263);
+emit_32(1106222986);
+emit_32(3273920545);
+emit_32(1119584256);
+emit_32(1106744181);
+emit_32(3273920545);
+emit_32(1120096263);
+emit_32(1106572162);
+emit_32(3273920545);
+emit_32(1120608322);
+emit_32(1106138261);
+emit_32(3273920545);
+emit_32(1121120289);
+emit_32(1105034373);
+emit_32(3273920545);
+emit_32(1121632256);
+emit_32(1104844371);
+emit_32(3273920545);
+emit_32(1122144223);
+emit_32(1105102006);
+emit_32(3273920545);
+emit_32(1122656322);
+emit_32(1104862039);
+emit_32(3273920545);
+emit_32(1123168289);
+emit_32(1104232946);
+emit_32(3273920545);
+emit_32(1123680256);
+emit_32(1103026297);
+emit_32(3273920545);
+emit_32(1124132848);
+emit_32(1101863741);
+emit_32(3273920545);
+emit_32(1124388897);
+emit_32(1100516216);
+emit_32(3273920545);
+emit_32(1124644880);
+emit_32(1099293105);
+emit_32(3273920545);
+emit_32(1124900864);
+emit_32(1097230346);
+emit_32(3273920545);
+emit_32(1125156848);
+emit_32(1093750751);
+emit_32(3273920545);
+emit_32(1125412897);
+emit_32(1090925405);
+emit_32(3273920545);
+emit_32(1125668880);
+emit_32(1088433213);
+emit_32(3273920545);
+emit_32(1125924864);
+emit_32(1084125285);
+emit_32(3273920545);
+emit_32(1126180848);
+emit_32(1075725646);
+emit_32(3273920545);
+emit_32(1126436897);
+emit_32(1061623490);
+emit_32(3273920545);
+emit_32(1126692880);
+emit_32(3216532465);
+emit_32(3273920545);
+emit_32(1126948864);
+emit_32(3227819673);
+emit_32(3273920545);
+emit_32(1127204848);
+emit_32(3234520577);
+emit_32(3273920545);
+emit_32(1127460897);
+emit_32(3236952791);
+emit_32(3273920545);
+emit_32(1127716880);
+emit_32(3239234608);
+emit_32(3273920545);
+emit_32(1127972864);
+emit_32(3240023346);
+emit_32(3273920545);
+emit_32(1128228848);
+emit_32(3241225696);
+emit_32(3273920545);
+emit_32(1128484897);
+emit_32(3243063535);
+emit_32(3273920545);
+emit_32(1128740880);
+emit_32(3245269949);
+emit_32(3273920545);
+emit_32(1128996864);
+emit_32(3246344425);
+emit_32(3273920545);
+emit_32(1129252848);
+emit_32(3246962665);
+emit_32(3273920545);
+emit_32(1129508897);
+emit_32(3247716853);
+emit_32(3273920545);
+emit_32(1129764880);
+emit_32(3247725609);
+emit_32(3273920545);
+emit_32(1130020864);
+emit_32(3247729803);
+emit_32(3273920545);
+emit_32(1130276848);
+emit_32(3247215739);
+emit_32(3273920545);
+emit_32(1130532897);
+emit_32(3246018422);
+emit_32(3273920545);
+emit_32(1130788880);
+emit_32(3244886589);
+emit_32(3273920545);
+emit_32(1131044864);
+emit_32(3242781888);
+emit_32(3273920545);
+emit_32(1131300848);
+emit_32(3240781205);
+emit_32(3273920545);
+emit_32(1131556897);
+emit_32(3238299267);
+emit_32(3273920545);
+emit_32(1131812880);
+emit_32(3233550057);
+emit_32(3273920545);
+emit_32(1132068864);
+emit_32(3223464811);
+emit_32(3273920545);
+emit_32(1081737216);
+emit_32(1108664621);
+emit_32(3274176528);
+emit_32(1090125824);
+emit_32(1108522618);
+emit_32(3274176528);
+emit_32(1094418484);
+emit_32(1108407563);
+emit_32(3274176528);
+emit_32(1098514432);
+emit_32(1107682787);
+emit_32(3274176528);
+emit_32(1100759066);
+emit_32(1107320583);
+emit_32(3274176528);
+emit_32(1102807040);
+emit_32(1106544532);
+emit_32(3274176528);
+emit_32(1104855066);
+emit_32(1105511999);
+emit_32(3274176528);
+emit_32(1106903040);
+emit_32(1104375867);
+emit_32(3274176528);
+emit_32(1108123661);
+emit_32(1103074112);
+emit_32(3274176528);
+emit_32(1109147648);
+emit_32(1102337278);
+emit_32(3274176528);
+emit_32(1110171661);
+emit_32(1101962517);
+emit_32(3274176528);
+emit_32(1111195648);
+emit_32(1101639031);
+emit_32(3274176528);
+emit_32(1112219661);
+emit_32(1101573181);
+emit_32(3274176528);
+emit_32(1113243648);
+emit_32(1101942070);
+emit_32(3274176528);
+emit_32(1114267661);
+emit_32(1102543638);
+emit_32(3274176528);
+emit_32(1115291648);
+emit_32(1103135559);
+emit_32(3274176528);
+emit_32(1116000263);
+emit_32(1103322153);
+emit_32(3274176528);
+emit_32(1116512256);
+emit_32(1103539995);
+emit_32(3274176528);
+emit_32(1117024263);
+emit_32(1103767850);
+emit_32(3274176528);
+emit_32(1117536256);
+emit_32(1104163740);
+emit_32(3274176528);
+emit_32(1118048263);
+emit_32(1104602045);
+emit_32(3274176528);
+emit_32(1118560256);
+emit_32(1104897953);
+emit_32(3274176528);
+emit_32(1119072263);
+emit_32(1105720246);
+emit_32(3274176528);
+emit_32(1119584256);
+emit_32(1105815981);
+emit_32(3274176528);
+emit_32(1120096263);
+emit_32(1105144788);
+emit_32(3274176528);
+emit_32(1120608322);
+emit_32(1104485233);
+emit_32(3274176528);
+emit_32(1121120289);
+emit_32(1103618061);
+emit_32(3274176528);
+emit_32(1121632256);
+emit_32(1103661315);
+emit_32(3274176528);
+emit_32(1122144223);
+emit_32(1103401845);
+emit_32(3274176528);
+emit_32(1122656322);
+emit_32(1102987500);
+emit_32(3274176528);
+emit_32(1123168289);
+emit_32(1102162900);
+emit_32(3274176528);
+emit_32(1123680256);
+emit_32(1100880701);
+emit_32(3274176528);
+emit_32(1124132848);
+emit_32(1099831339);
+emit_32(3274176528);
+emit_32(1124388897);
+emit_32(1098628622);
+emit_32(3274176528);
+emit_32(1124644880);
+emit_32(1096283587);
+emit_32(3274176528);
+emit_32(1124900864);
+emit_32(1094436939);
+emit_32(3274176528);
+emit_32(1125156848);
+emit_32(1092462586);
+emit_32(3274176528);
+emit_32(1125412897);
+emit_32(1090574426);
+emit_32(3274176528);
+emit_32(1125668880);
+emit_32(1088368683);
+emit_32(3274176528);
+emit_32(1125924864);
+emit_32(1084468987);
+emit_32(3274176528);
+emit_32(1126180848);
+emit_32(1078479458);
+emit_32(3274176528);
+emit_32(1126436897);
+emit_32(1070097393);
+emit_32(3274176528);
+emit_32(1126692880);
+emit_32(3219330905);
+emit_32(3274176528);
+emit_32(1126948864);
+emit_32(3229956377);
+emit_32(3274176528);
+emit_32(1127204848);
+emit_32(3233498299);
+emit_32(3274176528);
+emit_32(1127460897);
+emit_32(3237958480);
+emit_32(3274176528);
+emit_32(1127716880);
+emit_32(3239973518);
+emit_32(3274176528);
+emit_32(1127972864);
+emit_32(3240389457);
+emit_32(3274176528);
+emit_32(1128228848);
+emit_32(3241706154);
+emit_32(3274176528);
+emit_32(1128484897);
+emit_32(3243624314);
+emit_32(3274176528);
+emit_32(1128740880);
+emit_32(3245731637);
+emit_32(3274176528);
+emit_32(1128996864);
+emit_32(3246688777);
+emit_32(3274176528);
+emit_32(1129252848);
+emit_32(3247277500);
+emit_32(3274176528);
+emit_32(1129508897);
+emit_32(3247268744);
+emit_32(3274176528);
+emit_32(1129764880);
+emit_32(3246821579);
+emit_32(3274176528);
+emit_32(1130020864);
+emit_32(3246928901);
+emit_32(3274176528);
+emit_32(1130276848);
+emit_32(3246584024);
+emit_32(3274176528);
+emit_32(1130532897);
+emit_32(3244589423);
+emit_32(3274176528);
+emit_32(1130788880);
+emit_32(3243611311);
+emit_32(3274176528);
+emit_32(1131044864);
+emit_32(3242211253);
+emit_32(3274176528);
+emit_32(1131300848);
+emit_32(3239996199);
+emit_32(3274176528);
+emit_32(1131556897);
+emit_32(3237841102);
+emit_32(3274176528);
+emit_32(1131812880);
+emit_32(3232583521);
+emit_32(3274176528);
+emit_32(1132068864);
+emit_32(3220160035);
+emit_32(3274176528);
+emit_32(1081737216);
+emit_32(1108184872);
+emit_32(3274432512);
+emit_32(1090125824);
+emit_32(1108148932);
+emit_32(3274432512);
+emit_32(1094418484);
+emit_32(1107903853);
+emit_32(3274432512);
+emit_32(1098514432);
+emit_32(1107577694);
+emit_32(3274432512);
+emit_32(1100759066);
+emit_32(1106982365);
+emit_32(3274432512);
+emit_32(1102807040);
+emit_32(1105680086);
+emit_32(3274432512);
+emit_32(1104855066);
+emit_32(1104468771);
+emit_32(3274432512);
+emit_32(1106903040);
+emit_32(1103509114);
+emit_32(3274432512);
+emit_32(1108123661);
+emit_32(1102687764);
+emit_32(3274432512);
+emit_32(1109147648);
+emit_32(1102002520);
+emit_32(3274432512);
+emit_32(1110171661);
+emit_32(1101411123);
+emit_32(3274432512);
+emit_32(1111195648);
+emit_32(1101064569);
+emit_32(3274432512);
+emit_32(1112219661);
+emit_32(1100846150);
+emit_32(3274432512);
+emit_32(1113243648);
+emit_32(1101357436);
+emit_32(3274432512);
+emit_32(1114267661);
+emit_32(1102179729);
+emit_32(3274432512);
+emit_32(1115291648);
+emit_32(1102092698);
+emit_32(3274432512);
+emit_32(1116000263);
+emit_32(1102408371);
+emit_32(3274432512);
+emit_32(1116512256);
+emit_32(1102286999);
+emit_32(3274432512);
+emit_32(1117024263);
+emit_32(1102506518);
+emit_32(3274432512);
+emit_32(1117536256);
+emit_32(1103483005);
+emit_32(3274432512);
+emit_32(1118048263);
+emit_32(1103994238);
+emit_32(3274432512);
+emit_32(1118560256);
+emit_32(1104213233);
+emit_32(3274432512);
+emit_32(1119072263);
+emit_32(1103948992);
+emit_32(3274432512);
+emit_32(1119584256);
+emit_32(1103515143);
+emit_32(3274432512);
+emit_32(1120096263);
+emit_32(1103105832);
+emit_32(3274432512);
+emit_32(1120608322);
+emit_32(1102826124);
+emit_32(3274432512);
+emit_32(1121120289);
+emit_32(1102767456);
+emit_32(3274432512);
+emit_32(1121632256);
+emit_32(1102189901);
+emit_32(3274432512);
+emit_32(1122144223);
+emit_32(1101674421);
+emit_32(3274432512);
+emit_32(1122656322);
+emit_32(1100890243);
+emit_32(3274432512);
+emit_32(1123168289);
+emit_32(1099939761);
+emit_32(3274432512);
+emit_32(1123680256);
+emit_32(1099075997);
+emit_32(3274432512);
+emit_32(1124132848);
+emit_32(1097086376);
+emit_32(3274432512);
+emit_32(1124388897);
+emit_32(1095228614);
+emit_32(3274432512);
+emit_32(1124644880);
+emit_32(1093029436);
+emit_32(3274432512);
+emit_32(1124900864);
+emit_32(1091479672);
+emit_32(3274432512);
+emit_32(1125156848);
+emit_32(1091750163);
+emit_32(3274432512);
+emit_32(1125412897);
+emit_32(1089138149);
+emit_32(3274432512);
+emit_32(1125668880);
+emit_32(1086598540);
+emit_32(3274432512);
+emit_32(1125924864);
+emit_32(1083352484);
+emit_32(3274432512);
+emit_32(1126180848);
+emit_32(1076974919);
+emit_32(3274432512);
+emit_32(1126436897);
+emit_32(1066291146);
+emit_32(3274432512);
+emit_32(1126692880);
+emit_32(3221226898);
+emit_32(3274432512);
+emit_32(1126948864);
+emit_32(3228126151);
+emit_32(3274432512);
+emit_32(1127204848);
+emit_32(3231975515);
+emit_32(3274432512);
+emit_32(1127460897);
+emit_32(3238351340);
+emit_32(3274432512);
+emit_32(1127716880);
+emit_32(3240184460);
+emit_32(3274432512);
+emit_32(1127972864);
+emit_32(3241040832);
+emit_32(3274432512);
+emit_32(1128228848);
+emit_32(3242157461);
+emit_32(3274432512);
+emit_32(1128484897);
+emit_32(3244822731);
+emit_32(3274432512);
+emit_32(1128740880);
+emit_32(3246247536);
+emit_32(3274432512);
+emit_32(1128996864);
+emit_32(3247038372);
+emit_32(3274432512);
+emit_32(1129252848);
+emit_32(3247585939);
+emit_32(3274432512);
+emit_32(1129508897);
+emit_32(3246884389);
+emit_32(3274432512);
+emit_32(1129764880);
+emit_32(3246474763);
+emit_32(3274432512);
+emit_32(1130020864);
+emit_32(3246383746);
+emit_32(3274432512);
+emit_32(1130276848);
+emit_32(3245256632);
+emit_32(3274432512);
+emit_32(1130532897);
+emit_32(3243907010);
+emit_32(3274432512);
+emit_32(1130788880);
+emit_32(3243058921);
+emit_32(3274432512);
+emit_32(1131044864);
+emit_32(3241166032);
+emit_32(3274432512);
+emit_32(1131300848);
+emit_32(3238570922);
+emit_32(3274432512);
+emit_32(1131556897);
+emit_32(3234153659);
+emit_32(3274432512);
+emit_32(1131812880);
+emit_32(3230360226);
+emit_32(3274432512);
+emit_32(1132068864);
+emit_32(3219833634);
+emit_32(3274432512);
+emit_32(1081737216);
+emit_32(1108036289);
+emit_32(3274688496);
+emit_32(1090125824);
+emit_32(1107810609);
+emit_32(3274688496);
+emit_32(1094418484);
+emit_32(1107747825);
+emit_32(3274688496);
+emit_32(1098514432);
+emit_32(1107286871);
+emit_32(3274688496);
+emit_32(1100759066);
+emit_32(1106086881);
+emit_32(3274688496);
+emit_32(1102807040);
+emit_32(1104804315);
+emit_32(3274688496);
+emit_32(1104855066);
+emit_32(1103699326);
+emit_32(3274688496);
+emit_32(1106903040);
+emit_32(1102741504);
+emit_32(3274688496);
+emit_32(1108123661);
+emit_32(1101680083);
+emit_32(3274688496);
+emit_32(1109147648);
+emit_32(1101656595);
+emit_32(3274688496);
+emit_32(1110171661);
+emit_32(1100849663);
+emit_32(3274688496);
+emit_32(1111195648);
+emit_32(1100640053);
+emit_32(3274688496);
+emit_32(1112219661);
+emit_32(1100253443);
+emit_32(3274688496);
+emit_32(1113243648);
+emit_32(1100764047);
+emit_32(3274688496);
+emit_32(1114267661);
+emit_32(1101163554);
+emit_32(3274688496);
+emit_32(1115291648);
+emit_32(1101305217);
+emit_32(3274688496);
+emit_32(1116000263);
+emit_32(1101417624);
+emit_32(3274688496);
+emit_32(1116512256);
+emit_32(1101765385);
+emit_32(3274688496);
+emit_32(1117024263);
+emit_32(1102533938);
+emit_32(3274688496);
+emit_32(1117536256);
+emit_32(1102938689);
+emit_32(3274688496);
+emit_32(1118048263);
+emit_32(1103318955);
+emit_32(3274688496);
+emit_32(1118560256);
+emit_32(1103683754);
+emit_32(3274688496);
+emit_32(1119072263);
+emit_32(1103175090);
+emit_32(3274688496);
+emit_32(1119584256);
+emit_32(1102854593);
+emit_32(3274688496);
+emit_32(1120096263);
+emit_32(1102466567);
+emit_32(3274688496);
+emit_32(1120608322);
+emit_32(1101638507);
+emit_32(3274688496);
+emit_32(1121120289);
+emit_32(1101343542);
+emit_32(3274688496);
+emit_32(1121632256);
+emit_32(1100858629);
+emit_32(3274688496);
+emit_32(1122144223);
+emit_32(1099916326);
+emit_32(3274688496);
+emit_32(1122656322);
+emit_32(1099386952);
+emit_32(3274688496);
+emit_32(1123168289);
+emit_32(1098990538);
+emit_32(3274688496);
+emit_32(1123680256);
+emit_32(1097981860);
+emit_32(3274688496);
+emit_32(1124132848);
+emit_32(1095898759);
+emit_32(3274688496);
+emit_32(1124388897);
+emit_32(1092934435);
+emit_32(3274688496);
+emit_32(1124644880);
+emit_32(1090423368);
+emit_32(3274688496);
+emit_32(1124900864);
+emit_32(1089465599);
+emit_32(3274688496);
+emit_32(1125156848);
+emit_32(1090025916);
+emit_32(3274688496);
+emit_32(1125412897);
+emit_32(1088093013);
+emit_32(3274688496);
+emit_32(1125668880);
+emit_32(1086367518);
+emit_32(3274688496);
+emit_32(1125924864);
+emit_32(1083889418);
+emit_32(3274688496);
+emit_32(1126180848);
+emit_32(1076254464);
+emit_32(3274688496);
+emit_32(1126436897);
+emit_32(1068370850);
+emit_32(3274688496);
+emit_32(1126692880);
+emit_32(3216221248);
+emit_32(3274688496);
+emit_32(1126948864);
+emit_32(3228349497);
+emit_32(3274688496);
+emit_32(1127204848);
+emit_32(3232983910);
+emit_32(3274688496);
+emit_32(1127460897);
+emit_32(3238169558);
+emit_32(3274688496);
+emit_32(1127716880);
+emit_32(3239092054);
+emit_32(3274688496);
+emit_32(1127972864);
+emit_32(3241438976);
+emit_32(3274688496);
+emit_32(1128228848);
+emit_32(3243388489);
+emit_32(3274688496);
+emit_32(1128484897);
+emit_32(3245180191);
+emit_32(3274688496);
+emit_32(1128740880);
+emit_32(3246270710);
+emit_32(3274688496);
+emit_32(1128996864);
+emit_32(3247252229);
+emit_32(3274688496);
+emit_32(1129252848);
+emit_32(3247543262);
+emit_32(3274688496);
+emit_32(1129508897);
+emit_32(3246603737);
+emit_32(3274688496);
+emit_32(1129764880);
+emit_32(3246628379);
+emit_32(3274688496);
+emit_32(1130020864);
+emit_32(3246208949);
+emit_32(3274688496);
+emit_32(1130276848);
+emit_32(3243960277);
+emit_32(3274688496);
+emit_32(1130532897);
+emit_32(3243077167);
+emit_32(3274688496);
+emit_32(1130788880);
+emit_32(3241817407);
+emit_32(3274688496);
+emit_32(1131044864);
+emit_32(3238920664);
+emit_32(3274688496);
+emit_32(1131300848);
+emit_32(3235529538);
+emit_32(3274688496);
+emit_32(1131556897);
+emit_32(3228900545);
+emit_32(3274688496);
+emit_32(1131812880);
+emit_32(3222674310);
+emit_32(3274688496);
+emit_32(1132068864);
+emit_32(3208271280);
+emit_32(3274688496);
+emit_32(1081737216);
+emit_32(1107544270);
+emit_32(3274944545);
+emit_32(1090125824);
+emit_32(1107321186);
+emit_32(3274944545);
+emit_32(1094418484);
+emit_32(1106832838);
+emit_32(3274944545);
+emit_32(1098514432);
+emit_32(1105933107);
+emit_32(3274944545);
+emit_32(1100759066);
+emit_32(1104947236);
+emit_32(3274944545);
+emit_32(1102807040);
+emit_32(1104326217);
+emit_32(3274944545);
+emit_32(1104855066);
+emit_32(1103138967);
+emit_32(3274944545);
+emit_32(1106903040);
+emit_32(1102036441);
+emit_32(3274944545);
+emit_32(1108123661);
+emit_32(1101087742);
+emit_32(3274944545);
+emit_32(1109147648);
+emit_32(1100669465);
+emit_32(3274944545);
+emit_32(1110171661);
+emit_32(1100266183);
+emit_32(3274944545);
+emit_32(1111195648);
+emit_32(1100000526);
+emit_32(3274944545);
+emit_32(1112219661);
+emit_32(1099972529);
+emit_32(3274944545);
+emit_32(1113243648);
+emit_32(1099715681);
+emit_32(3274944545);
+emit_32(1114267661);
+emit_32(1099811521);
+emit_32(3274944545);
+emit_32(1115291648);
+emit_32(1100048079);
+emit_32(3274944545);
+emit_32(1116000263);
+emit_32(1100398461);
+emit_32(3274944545);
+emit_32(1116512256);
+emit_32(1101470735);
+emit_32(3274944545);
+emit_32(1117024263);
+emit_32(1102010332);
+emit_32(3274944545);
+emit_32(1117536256);
+emit_32(1102212969);
+emit_32(3274944545);
+emit_32(1118048263);
+emit_32(1102131547);
+emit_32(3274944545);
+emit_32(1118560256);
+emit_32(1102714503);
+emit_32(3274944545);
+emit_32(1119072263);
+emit_32(1102278033);
+emit_32(3274944545);
+emit_32(1119584256);
+emit_32(1101809792);
+emit_32(3274944545);
+emit_32(1120096263);
+emit_32(1100816004);
+emit_32(3274944545);
+emit_32(1120608322);
+emit_32(1100025011);
+emit_32(3274944545);
+emit_32(1121120289);
+emit_32(1099466277);
+emit_32(3274944545);
+emit_32(1121632256);
+emit_32(1098984771);
+emit_32(3274944545);
+emit_32(1122144223);
+emit_32(1098724776);
+emit_32(3274944545);
+emit_32(1122656322);
+emit_32(1097818073);
+emit_32(3274944545);
+emit_32(1123168289);
+emit_32(1098331770);
+emit_32(3274944545);
+emit_32(1123680256);
+emit_32(1097767007);
+emit_32(3274944545);
+emit_32(1124132848);
+emit_32(1095061891);
+emit_32(3274944545);
+emit_32(1124388897);
+emit_32(1092565693);
+emit_32(3274944545);
+emit_32(1124644880);
+emit_32(1089087839);
+emit_32(3274944545);
+emit_32(1124900864);
+emit_32(1088235430);
+emit_32(3274944545);
+emit_32(1125156848);
+emit_32(1089040317);
+emit_32(3274944545);
+emit_32(1125412897);
+emit_32(1087875957);
+emit_32(3274944545);
+emit_32(1125668880);
+emit_32(1086441128);
+emit_32(3274944545);
+emit_32(1125924864);
+emit_32(1085113966);
+emit_32(3274944545);
+emit_32(1126180848);
+emit_32(1081486648);
+emit_32(3274944545);
+emit_32(1126436897);
+emit_32(1075610470);
+emit_32(3274944545);
+emit_32(1126692880);
+emit_32(3191896348);
+emit_32(3274944545);
+emit_32(1126948864);
+emit_32(3225446032);
+emit_32(3274944545);
+emit_32(1127204848);
+emit_32(3232519202);
+emit_32(3274944545);
+emit_32(1127460897);
+emit_32(3234831920);
+emit_32(3274944545);
+emit_32(1127716880);
+emit_32(3239305806);
+emit_32(3274944545);
+emit_32(1127972864);
+emit_32(3241685497);
+emit_32(3274944545);
+emit_32(1128228848);
+emit_32(3242903208);
+emit_32(3274944545);
+emit_32(1128484897);
+emit_32(3244487397);
+emit_32(3274944545);
+emit_32(1128740880);
+emit_32(3245844673);
+emit_32(3274944545);
+emit_32(1128996864);
+emit_32(3246709067);
+emit_32(3274944545);
+emit_32(1129252848);
+emit_32(3246977188);
+emit_32(3274944545);
+emit_32(1129508897);
+emit_32(3246402830);
+emit_32(3274944545);
+emit_32(1129764880);
+emit_32(3246323034);
+emit_32(3274944545);
+emit_32(1130020864);
+emit_32(3244941011);
+emit_32(3274944545);
+emit_32(1130276848);
+emit_32(3243260877);
+emit_32(3274944545);
+emit_32(1130532897);
+emit_32(3242406707);
+emit_32(3274944545);
+emit_32(1130788880);
+emit_32(3239902383);
+emit_32(3274944545);
+emit_32(1131044864);
+emit_32(3235323031);
+emit_32(3274944545);
+emit_32(1131300848);
+emit_32(3229858692);
+emit_32(3274944545);
+emit_32(1131556897);
+emit_32(3221983215);
+emit_32(3274944545);
+emit_32(1131812880);
+emit_32(3204619249);
+emit_32(3274944545);
+emit_32(1132068864);
+emit_32(1069430331);
+emit_32(3274944545);
+emit_32(1081737216);
+emit_32(1106249096);
+emit_32(3275200528);
+emit_32(1090125824);
+emit_32(1106043942);
+emit_32(3275200528);
+emit_32(1094418484);
+emit_32(1105378410);
+emit_32(3275200528);
+emit_32(1098514432);
+emit_32(1104642467);
+emit_32(3275200528);
+emit_32(1100759066);
+emit_32(1104162010);
+emit_32(3275200528);
+emit_32(1102807040);
+emit_32(1103635153);
+emit_32(3275200528);
+emit_32(1104855066);
+emit_32(1102464995);
+emit_32(3275200528);
+emit_32(1106903040);
+emit_32(1101344958);
+emit_32(3275200528);
+emit_32(1108123661);
+emit_32(1100328835);
+emit_32(3275200528);
+emit_32(1109147648);
+emit_32(1099478755);
+emit_32(3275200528);
+emit_32(1110171661);
+emit_32(1099658219);
+emit_32(3275200528);
+emit_32(1111195648);
+emit_32(1099600285);
+emit_32(3275200528);
+emit_32(1112219661);
+emit_32(1099186464);
+emit_32(3275200528);
+emit_32(1113243648);
+emit_32(1099013135);
+emit_32(3275200528);
+emit_32(1114267661);
+emit_32(1099476763);
+emit_32(3275200528);
+emit_32(1115291648);
+emit_32(1099561540);
+emit_32(3275200528);
+emit_32(1116000263);
+emit_32(1099962673);
+emit_32(3275200528);
+emit_32(1116512256);
+emit_32(1100314837);
+emit_32(3275200528);
+emit_32(1117024263);
+emit_32(1100808192);
+emit_32(3275200528);
+emit_32(1117536256);
+emit_32(1100975545);
+emit_32(3275200528);
+emit_32(1118048263);
+emit_32(1100964744);
+emit_32(3275200528);
+emit_32(1118560256);
+emit_32(1100600364);
+emit_32(3275200528);
+emit_32(1119072263);
+emit_32(1100761426);
+emit_32(3275200528);
+emit_32(1119584256);
+emit_32(1100181144);
+emit_32(3275200528);
+emit_32(1120096263);
+emit_32(1098976749);
+emit_32(3275200528);
+emit_32(1120608322);
+emit_32(1097199518);
+emit_32(3275200528);
+emit_32(1121120289);
+emit_32(1096699347);
+emit_32(3275200528);
+emit_32(1121632256);
+emit_32(1096334128);
+emit_32(3275200528);
+emit_32(1122144223);
+emit_32(1096532414);
+emit_32(3275200528);
+emit_32(1122656322);
+emit_32(1096818675);
+emit_32(3275200528);
+emit_32(1123168289);
+emit_32(1097088578);
+emit_32(3275200528);
+emit_32(1123680256);
+emit_32(1096387291);
+emit_32(3275200528);
+emit_32(1124132848);
+emit_32(1094034810);
+emit_32(3275200528);
+emit_32(1124388897);
+emit_32(1090976691);
+emit_32(3275200528);
+emit_32(1124644880);
+emit_32(1088321497);
+emit_32(3275200528);
+emit_32(1124900864);
+emit_32(1088758712);
+emit_32(3275200528);
+emit_32(1125156848);
+emit_32(1087833868);
+emit_32(3275200528);
+emit_32(1125412897);
+emit_32(1084974107);
+emit_32(3275200528);
+emit_32(1125668880);
+emit_32(1084703805);
+emit_32(3275200528);
+emit_32(1125924864);
+emit_32(1084375328);
+emit_32(3275200528);
+emit_32(1126180848);
+emit_32(1079810898);
+emit_32(3275200528);
+emit_32(1126436897);
+emit_32(1075134836);
+emit_32(3275200528);
+emit_32(1126692880);
+emit_32(1055694338);
+emit_32(3275200528);
+emit_32(1126948864);
+emit_32(3222544916);
+emit_32(3275200528);
+emit_32(1127204848);
+emit_32(3231495477);
+emit_32(3275200528);
+emit_32(1127460897);
+emit_32(3235209219);
+emit_32(3275200528);
+emit_32(1127716880);
+emit_32(3239322940);
+emit_32(3275200528);
+emit_32(1127972864);
+emit_32(3240031389);
+emit_32(3275200528);
+emit_32(1128228848);
+emit_32(3242234426);
+emit_32(3275200528);
+emit_32(1128484897);
+emit_32(3243694988);
+emit_32(3275200528);
+emit_32(1128740880);
+emit_32(3244783934);
+emit_32(3275200528);
+emit_32(1128996864);
+emit_32(3245353415);
+emit_32(3275200528);
+emit_32(1129252848);
+emit_32(3245143910);
+emit_32(3275200528);
+emit_32(1129508897);
+emit_32(3243741859);
+emit_32(3275200528);
+emit_32(1129764880);
+emit_32(3244369117);
+emit_32(3275200528);
+emit_32(1130020864);
+emit_32(3244547480);
+emit_32(3275200528);
+emit_32(1130276848);
+emit_32(3242487867);
+emit_32(3275200528);
+emit_32(1130532897);
+emit_32(3241258307);
+emit_32(3275200528);
+emit_32(1130788880);
+emit_32(3238763409);
+emit_32(3275200528);
+emit_32(1131044864);
+emit_32(3232771615);
+emit_32(3275200528);
+emit_32(1131300848);
+emit_32(3224658636);
+emit_32(3275200528);
+emit_32(1131556897);
+emit_32(3205375013);
+emit_32(3275200528);
+emit_32(1131812880);
+emit_32(1065955266);
+emit_32(3275200528);
+emit_32(1132068864);
+emit_32(1078364786);
+emit_32(3275200528);
+emit_32(1081737216);
+emit_32(1105010622);
+emit_32(3275456512);
+emit_32(1090125824);
+emit_32(1104741191);
+emit_32(3275456512);
+emit_32(1094418484);
+emit_32(1104199864);
+emit_32(3275456512);
+emit_32(1098514432);
+emit_32(1103701895);
+emit_32(3275456512);
+emit_32(1100759066);
+emit_32(1103428898);
+emit_32(3275456512);
+emit_32(1102807040);
+emit_32(1102959031);
+emit_32(3275456512);
+emit_32(1104855066);
+emit_32(1102357044);
+emit_32(3275456512);
+emit_32(1106903040);
+emit_32(1100872784);
+emit_32(3275456512);
+emit_32(1108123661);
+emit_32(1099789972);
+emit_32(3275456512);
+emit_32(1109147648);
+emit_32(1099200043);
+emit_32(3275456512);
+emit_32(1110171661);
+emit_32(1098764622);
+emit_32(3275456512);
+emit_32(1111195648);
+emit_32(1098958399);
+emit_32(3275456512);
+emit_32(1112219661);
+emit_32(1098447743);
+emit_32(3275456512);
+emit_32(1113243648);
+emit_32(1098347184);
+emit_32(3275456512);
+emit_32(1114267661);
+emit_32(1099067032);
+emit_32(3275456512);
+emit_32(1115291648);
+emit_32(1099311664);
+emit_32(3275456512);
+emit_32(1116000263);
+emit_32(1099114584);
+emit_32(3275456512);
+emit_32(1116512256);
+emit_32(1099262119);
+emit_32(3275456512);
+emit_32(1117024263);
+emit_32(1099307522);
+emit_32(3275456512);
+emit_32(1117536256);
+emit_32(1099567150);
+emit_32(3275456512);
+emit_32(1118048263);
+emit_32(1099285555);
+emit_32(3275456512);
+emit_32(1118560256);
+emit_32(1099184367);
+emit_32(3275456512);
+emit_32(1119072263);
+emit_32(1099025665);
+emit_32(3275456512);
+emit_32(1119584256);
+emit_32(1097936771);
+emit_32(3275456512);
+emit_32(1120096263);
+emit_32(1097086062);
+emit_32(3275456512);
+emit_32(1120608322);
+emit_32(1095166329);
+emit_32(3275456512);
+emit_32(1121120289);
+emit_32(1093547013);
+emit_32(3275456512);
+emit_32(1121632256);
+emit_32(1094611632);
+emit_32(3275456512);
+emit_32(1122144223);
+emit_32(1095301176);
+emit_32(3275456512);
+emit_32(1122656322);
+emit_32(1096040002);
+emit_32(3275456512);
+emit_32(1123168289);
+emit_32(1096486905);
+emit_32(3275456512);
+emit_32(1123680256);
+emit_32(1095536371);
+emit_32(3275456512);
+emit_32(1124132848);
+emit_32(1093119718);
+emit_32(3275456512);
+emit_32(1124388897);
+emit_32(1091308366);
+emit_32(3275456512);
+emit_32(1124644880);
+emit_32(1088220394);
+emit_32(3275456512);
+emit_32(1124900864);
+emit_32(1088246482);
+emit_32(3275456512);
+emit_32(1125156848);
+emit_32(1087966198);
+emit_32(3275456512);
+emit_32(1125412897);
+emit_32(1084761016);
+emit_32(3275456512);
+emit_32(1125668880);
+emit_32(1082433638);
+emit_32(3275456512);
+emit_32(1125924864);
+emit_32(1080387489);
+emit_32(3275456512);
+emit_32(1126180848);
+emit_32(1080768877);
+emit_32(3275456512);
+emit_32(1126436897);
+emit_32(1072749536);
+emit_32(3275456512);
+emit_32(1126692880);
+emit_32(1066725424);
+emit_32(3275456512);
+emit_32(1126948864);
+emit_32(3211315758);
+emit_32(3275456512);
+emit_32(1127204848);
+emit_32(3229615254);
+emit_32(3275456512);
+emit_32(1127460897);
+emit_32(3234924069);
+emit_32(3275456512);
+emit_32(1127716880);
+emit_32(3238308600);
+emit_32(3275456512);
+emit_32(1127972864);
+emit_32(3239071816);
+emit_32(3275456512);
+emit_32(1128228848);
+emit_32(3240224516);
+emit_32(3275456512);
+emit_32(1128484897);
+emit_32(3241289869);
+emit_32(3275456512);
+emit_32(1128740880);
+emit_32(3242705866);
+emit_32(3275456512);
+emit_32(1128996864);
+emit_32(3242964969);
+emit_32(3275456512);
+emit_32(1129252848);
+emit_32(3243192091);
+emit_32(3275456512);
+emit_32(1129508897);
+emit_32(3242061516);
+emit_32(3275456512);
+emit_32(1129764880);
+emit_32(3242460709);
+emit_32(3275456512);
+emit_32(1130020864);
+emit_32(3243083563);
+emit_32(3275456512);
+emit_32(1130276848);
+emit_32(3240930627);
+emit_32(3275456512);
+emit_32(1130532897);
+emit_32(3238871108);
+emit_32(3275456512);
+emit_32(1130788880);
+emit_32(3236675631);
+emit_32(3275456512);
+emit_32(1131044864);
+emit_32(3232208551);
+emit_32(3275456512);
+emit_32(1131300848);
+emit_32(3223881892);
+emit_32(3275456512);
+emit_32(1131556897);
+emit_32(1056471794);
+emit_32(3275456512);
+emit_32(1131812880);
+emit_32(1077025041);
+emit_32(3275456512);
+emit_32(1132068864);
+emit_32(1081975788);
+emit_32(3275456512);
+emit_32(1081737216);
+emit_32(1103817710);
+emit_32(3275712496);
+emit_32(1090125824);
+emit_32(1103479177);
+emit_32(3275712496);
+emit_32(1094418484);
+emit_32(1103628337);
+emit_32(3275712496);
+emit_32(1098514432);
+emit_32(1103194908);
+emit_32(3275712496);
+emit_32(1100759066);
+emit_32(1102441087);
+emit_32(3275712496);
+emit_32(1102807040);
+emit_32(1101777548);
+emit_32(3275712496);
+emit_32(1104855066);
+emit_32(1101550322);
+emit_32(3275712496);
+emit_32(1106903040);
+emit_32(1100130340);
+emit_32(3275712496);
+emit_32(1108123661);
+emit_32(1099405250);
+emit_32(3275712496);
+emit_32(1109147648);
+emit_32(1098058092);
+emit_32(3275712496);
+emit_32(1110171661);
+emit_32(1097423074);
+emit_32(3275712496);
+emit_32(1111195648);
+emit_32(1097055863);
+emit_32(3275712496);
+emit_32(1112219661);
+emit_32(1096882743);
+emit_32(3275712496);
+emit_32(1113243648);
+emit_32(1098289303);
+emit_32(3275712496);
+emit_32(1114267661);
+emit_32(1097937610);
+emit_32(3275712496);
+emit_32(1115291648);
+emit_32(1097533279);
+emit_32(3275712496);
+emit_32(1116000263);
+emit_32(1097752851);
+emit_32(3275712496);
+emit_32(1116512256);
+emit_32(1097273547);
+emit_32(3275712496);
+emit_32(1117024263);
+emit_32(1097170787);
+emit_32(3275712496);
+emit_32(1117536256);
+emit_32(1096374708);
+emit_32(3275712496);
+emit_32(1118048263);
+emit_32(1096180197);
+emit_32(3275712496);
+emit_32(1118560256);
+emit_32(1097218602);
+emit_32(3275712496);
+emit_32(1119072263);
+emit_32(1096138883);
+emit_32(3275712496);
+emit_32(1119584256);
+emit_32(1096076912);
+emit_32(3275712496);
+emit_32(1120096263);
+emit_32(1094562034);
+emit_32(3275712496);
+emit_32(1120608322);
+emit_32(1092095962);
+emit_32(3275712496);
+emit_32(1121120289);
+emit_32(1091662502);
+emit_32(3275712496);
+emit_32(1121632256);
+emit_32(1092889556);
+emit_32(3275712496);
+emit_32(1122144223);
+emit_32(1094008177);
+emit_32(3275712496);
+emit_32(1122656322);
+emit_32(1094597791);
+emit_32(3275712496);
+emit_32(1123168289);
+emit_32(1094669828);
+emit_32(3275712496);
+emit_32(1123680256);
+emit_32(1093668333);
+emit_32(3275712496);
+emit_32(1124132848);
+emit_32(1092690012);
+emit_32(3275712496);
+emit_32(1124388897);
+emit_32(1091404793);
+emit_32(3275712496);
+emit_32(1124644880);
+emit_32(1089616677);
+emit_32(3275712496);
+emit_32(1124900864);
+emit_32(1087718650);
+emit_32(3275712496);
+emit_32(1125156848);
+emit_32(1085433635);
+emit_32(3275712496);
+emit_32(1125412897);
+emit_32(1083051984);
+emit_32(3275712496);
+emit_32(1125668880);
+emit_32(1080094894);
+emit_32(3275712496);
+emit_32(1125924864);
+emit_32(1077582632);
+emit_32(3275712496);
+emit_32(1126180848);
+emit_32(1079746432);
+emit_32(3275712496);
+emit_32(1126436897);
+emit_32(1073545866);
+emit_32(3275712496);
+emit_32(1126692880);
+emit_32(1068480405);
+emit_32(3275712496);
+emit_32(1126948864);
+emit_32(3205219354);
+emit_32(3275712496);
+emit_32(1127204848);
+emit_32(3228713018);
+emit_32(3275712496);
+emit_32(1127460897);
+emit_32(3234007257);
+emit_32(3275712496);
+emit_32(1127716880);
+emit_32(3234765252);
+emit_32(3275712496);
+emit_32(1127972864);
+emit_32(3236479652);
+emit_32(3275712496);
+emit_32(1128228848);
+emit_32(3239043033);
+emit_32(3275712496);
+emit_32(1128484897);
+emit_32(3239994091);
+emit_32(3275712496);
+emit_32(1128740880);
+emit_32(3241107312);
+emit_32(3275712496);
+emit_32(1128996864);
+emit_32(3240979281);
+emit_32(3275712496);
+emit_32(1129252848);
+emit_32(3240651496);
+emit_32(3275712496);
+emit_32(1129508897);
+emit_32(3240242971);
+emit_32(3275712496);
+emit_32(1129764880);
+emit_32(3240761491);
+emit_32(3275712496);
+emit_32(1130020864);
+emit_32(3240982007);
+emit_32(3275712496);
+emit_32(1130276848);
+emit_32(3239091351);
+emit_32(3275712496);
+emit_32(1130532897);
+emit_32(3236735400);
+emit_32(3275712496);
+emit_32(1130788880);
+emit_32(3231377575);
+emit_32(3275712496);
+emit_32(1131044864);
+emit_32(3227422808);
+emit_32(3275712496);
+emit_32(1131300848);
+emit_32(3218146098);
+emit_32(3275712496);
+emit_32(1131556897);
+emit_32(1069112487);
+emit_32(3275712496);
+emit_32(1131812880);
+emit_32(1077648441);
+emit_32(3275712496);
+emit_32(1132068864);
+emit_32(1082214129);
+emit_32(3275712496);
+emit_32(1081737216);
+emit_32(1102629726);
+emit_32(3275968545);
+emit_32(1090125824);
+emit_32(1102698722);
+emit_32(3275968545);
+emit_32(1094418484);
+emit_32(1102802741);
+emit_32(3275968545);
+emit_32(1098514432);
+emit_32(1102285373);
+emit_32(3275968545);
+emit_32(1100759066);
+emit_32(1101786251);
+emit_32(3275968545);
+emit_32(1102807040);
+emit_32(1100824812);
+emit_32(3275968545);
+emit_32(1104855066);
+emit_32(1100025640);
+emit_32(3275968545);
+emit_32(1106903040);
+emit_32(1099634940);
+emit_32(3275968545);
+emit_32(1108123661);
+emit_32(1099046584);
+emit_32(3275968545);
+emit_32(1109147648);
+emit_32(1096636223);
+emit_32(3275968545);
+emit_32(1110171661);
+emit_32(1095513303);
+emit_32(3275968545);
+emit_32(1111195648);
+emit_32(1095867407);
+emit_32(3275968545);
+emit_32(1112219661);
+emit_32(1096126929);
+emit_32(3275968545);
+emit_32(1113243648);
+emit_32(1096604870);
+emit_32(3275968545);
+emit_32(1114267661);
+emit_32(1095827037);
+emit_32(3275968545);
+emit_32(1115291648);
+emit_32(1095170838);
+emit_32(3275968545);
+emit_32(1116000263);
+emit_32(1095497679);
+emit_32(3275968545);
+emit_32(1116512256);
+emit_32(1095025715);
+emit_32(3275968545);
+emit_32(1117024263);
+emit_32(1094083884);
+emit_32(3275968545);
+emit_32(1117536256);
+emit_32(1094884996);
+emit_32(3275968545);
+emit_32(1118048263);
+emit_32(1094938054);
+emit_32(3275968545);
+emit_32(1118560256);
+emit_32(1094814322);
+emit_32(3275968545);
+emit_32(1119072263);
+emit_32(1094028414);
+emit_32(3275968545);
+emit_32(1119584256);
+emit_32(1093868087);
+emit_32(3275968545);
+emit_32(1120096263);
+emit_32(1091898725);
+emit_32(3275968545);
+emit_32(1120608322);
+emit_32(1091588902);
+emit_32(3275968545);
+emit_32(1121120289);
+emit_32(1090929599);
+emit_32(3275968545);
+emit_32(1121632256);
+emit_32(1091279268);
+emit_32(3275968545);
+emit_32(1122144223);
+emit_32(1091962195);
+emit_32(3275968545);
+emit_32(1122656322);
+emit_32(1092164916);
+emit_32(3275968545);
+emit_32(1123168289);
+emit_32(1092135976);
+emit_32(3275968545);
+emit_32(1123680256);
+emit_32(1091891196);
+emit_32(3275968545);
+emit_32(1124132848);
+emit_32(1091591995);
+emit_32(3275968545);
+emit_32(1124388897);
+emit_32(1091090063);
+emit_32(3275968545);
+emit_32(1124644880);
+emit_32(1090340509);
+emit_32(3275968545);
+emit_32(1124900864);
+emit_32(1086101389);
+emit_32(3275968545);
+emit_32(1125156848);
+emit_32(1083757927);
+emit_32(3275968545);
+emit_32(1125412897);
+emit_32(1078075547);
+emit_32(3275968545);
+emit_32(1125668880);
+emit_32(1076426137);
+emit_32(3275968545);
+emit_32(1125924864);
+emit_32(1072504840);
+emit_32(3275968545);
+emit_32(1126180848);
+emit_32(1076195660);
+emit_32(3275968545);
+emit_32(1126436897);
+emit_32(1072621609);
+emit_32(3275968545);
+emit_32(1126692880);
+emit_32(1056034915);
+emit_32(3275968545);
+emit_32(1126948864);
+emit_32(3209808342);
+emit_32(3275968545);
+emit_32(1127204848);
+emit_32(3226594391);
+emit_32(3275968545);
+emit_32(1127460897);
+emit_32(3229765557);
+emit_32(3275968545);
+emit_32(1127716880);
+emit_32(3232195653);
+emit_32(3275968545);
+emit_32(1127972864);
+emit_32(3233670937);
+emit_32(3275968545);
+emit_32(1128228848);
+emit_32(3236746137);
+emit_32(3275968545);
+emit_32(1128484897);
+emit_32(3239602763);
+emit_32(3275968545);
+emit_32(1128740880);
+emit_32(3239120397);
+emit_32(3275968545);
+emit_32(1128996864);
+emit_32(3238680404);
+emit_32(3275968545);
+emit_32(1129252848);
+emit_32(3238748498);
+emit_32(3275968545);
+emit_32(1129508897);
+emit_32(3237309495);
+emit_32(3275968545);
+emit_32(1129764880);
+emit_32(3238233637);
+emit_32(3275968545);
+emit_32(1130020864);
+emit_32(3238814642);
+emit_32(3275968545);
+emit_32(1130276848);
+emit_32(3237583887);
+emit_32(3275968545);
+emit_32(1130532897);
+emit_32(3232326054);
+emit_32(3275968545);
+emit_32(1130788880);
+emit_32(3225982694);
+emit_32(3275968545);
+emit_32(1131044864);
+emit_32(3216861550);
+emit_32(3275968545);
+emit_32(1131300848);
+emit_32(1026734803);
+emit_32(3275968545);
+emit_32(1131556897);
+emit_32(1070114842);
+emit_32(3275968545);
+emit_32(1131812880);
+emit_32(1079071526);
+emit_32(3275968545);
+emit_32(1132068864);
+emit_32(1085031464);
+emit_32(3275968545);
+emit_32(1081737216);
+emit_32(1101834591);
+emit_32(3276224528);
+emit_32(1090125824);
+emit_32(1101837579);
+emit_32(3276224528);
+emit_32(1094418484);
+emit_32(1102082264);
+emit_32(3276224528);
+emit_32(1098514432);
+emit_32(1101628441);
+emit_32(3276224528);
+emit_32(1100759066);
+emit_32(1100985349);
+emit_32(3276224528);
+emit_32(1102807040);
+emit_32(1100055367);
+emit_32(3276224528);
+emit_32(1104855066);
+emit_32(1099637142);
+emit_32(3276224528);
+emit_32(1106903040);
+emit_32(1098680317);
+emit_32(3276224528);
+emit_32(1108123661);
+emit_32(1096761947);
+emit_32(3276224528);
+emit_32(1109147648);
+emit_32(1094480980);
+emit_32(3276224528);
+emit_32(1110171661);
+emit_32(1095392087);
+emit_32(3276224528);
+emit_32(1111195648);
+emit_32(1094890029);
+emit_32(3276224528);
+emit_32(1112219661);
+emit_32(1094984506);
+emit_32(3276224528);
+emit_32(1113243648);
+emit_32(1094746898);
+emit_32(3276224528);
+emit_32(1114267661);
+emit_32(1095240253);
+emit_32(3276224528);
+emit_32(1115291648);
+emit_32(1094944765);
+emit_32(3276224528);
+emit_32(1116000263);
+emit_32(1093070435);
+emit_32(3276224528);
+emit_32(1116512256);
+emit_32(1092835659);
+emit_32(3276224528);
+emit_32(1117024263);
+emit_32(1092160439);
+emit_32(3276224528);
+emit_32(1117536256);
+emit_32(1093144779);
+emit_32(3276224528);
+emit_32(1118048263);
+emit_32(1093574171);
+emit_32(3276224528);
+emit_32(1118560256);
+emit_32(1093277109);
+emit_32(3276224528);
+emit_32(1119072263);
+emit_32(1093819957);
+emit_32(3276224528);
+emit_32(1119584256);
+emit_32(1092843628);
+emit_32(3276224528);
+emit_32(1120096263);
+emit_32(1091116372);
+emit_32(3276224528);
+emit_32(1120608322);
+emit_32(1091376859);
+emit_32(3276224528);
+emit_32(1121120289);
+emit_32(1090364648);
+emit_32(3276224528);
+emit_32(1121632256);
+emit_32(1090493874);
+emit_32(3276224528);
+emit_32(1122144223);
+emit_32(1090596026);
+emit_32(3276224528);
+emit_32(1122656322);
+emit_32(1090953811);
+emit_32(3276224528);
+emit_32(1123168289);
+emit_32(1090983737);
+emit_32(3276224528);
+emit_32(1123680256);
+emit_32(1091497519);
+emit_32(3276224528);
+emit_32(1124132848);
+emit_32(1090542549);
+emit_32(3276224528);
+emit_32(1124388897);
+emit_32(1090078156);
+emit_32(3276224528);
+emit_32(1124644880);
+emit_32(1088934054);
+emit_32(3276224528);
+emit_32(1124900864);
+emit_32(1087697720);
+emit_32(3276224528);
+emit_32(1125156848);
+emit_32(1085563428);
+emit_32(3276224528);
+emit_32(1125412897);
+emit_32(1080952084);
+emit_32(3276224528);
+emit_32(1125668880);
+emit_32(1073321471);
+emit_32(3276224528);
+emit_32(1125924864);
+emit_32(1070202670);
+emit_32(3276224528);
+emit_32(1126180848);
+emit_32(1076022141);
+emit_32(3276224528);
+emit_32(1126436897);
+emit_32(1074767541);
+emit_32(3276224528);
+emit_32(1126692880);
+emit_32(1043406403);
+emit_32(3276224528);
+emit_32(1126948864);
+emit_32(3214856505);
+emit_32(3276224528);
+emit_32(1127204848);
+emit_32(3221624644);
+emit_32(3276224528);
+emit_32(1127460897);
+emit_32(3223744907);
+emit_32(3276224528);
+emit_32(1127716880);
+emit_32(3226922931);
+emit_32(3276224528);
+emit_32(1127972864);
+emit_32(3231769868);
+emit_32(3276224528);
+emit_32(1128228848);
+emit_32(3235400940);
+emit_32(3276224528);
+emit_32(1128484897);
+emit_32(3237712778);
+emit_32(3276224528);
+emit_32(1128740880);
+emit_32(3237178570);
+emit_32(3276224528);
+emit_32(1128996864);
+emit_32(3236152161);
+emit_32(3276224528);
+emit_32(1129252848);
+emit_32(3236365358);
+emit_32(3276224528);
+emit_32(1129508897);
+emit_32(3234550776);
+emit_32(3276224528);
+emit_32(1129764880);
+emit_32(3234356705);
+emit_32(3276224528);
+emit_32(1130020864);
+emit_32(3236727662);
+emit_32(3276224528);
+emit_32(1130276848);
+emit_32(3234020867);
+emit_32(3276224528);
+emit_32(1130532897);
+emit_32(3229942851);
+emit_32(3276224528);
+emit_32(1130788880);
+emit_32(3218905099);
+emit_32(3276224528);
+emit_32(1131044864);
+emit_32(1046590114);
+emit_32(3276224528);
+emit_32(1131300848);
+emit_32(1071351155);
+emit_32(3276224528);
+emit_32(1131556897);
+emit_32(1075089706);
+emit_32(3276224528);
+emit_32(1131812880);
+emit_32(1081837670);
+emit_32(3276224528);
+emit_32(1132068864);
+emit_32(1088418344);
+emit_32(3276224528);
+emit_32(1081737216);
+emit_32(1101171471);
+emit_32(3276480512);
+emit_32(1090125824);
+emit_32(1100482504);
+emit_32(3276480512);
+emit_32(1094418484);
+emit_32(1100941623);
+emit_32(3276480512);
+emit_32(1098514432);
+emit_32(1100408685);
+emit_32(3276480512);
+emit_32(1100759066);
+emit_32(1099563690);
+emit_32(3276480512);
+emit_32(1102807040);
+emit_32(1099315859);
+emit_32(3276480512);
+emit_32(1104855066);
+emit_32(1099149083);
+emit_32(3276480512);
+emit_32(1106903040);
+emit_32(1096909482);
+emit_32(3276480512);
+emit_32(1108123661);
+emit_32(1095417463);
+emit_32(3276480512);
+emit_32(1109147648);
+emit_32(1095014180);
+emit_32(3276480512);
+emit_32(1110171661);
+emit_32(1094740188);
+emit_32(3276480512);
+emit_32(1111195648);
+emit_32(1094116495);
+emit_32(3276480512);
+emit_32(1112219661);
+emit_32(1094245994);
+emit_32(3276480512);
+emit_32(1113243648);
+emit_32(1093480953);
+emit_32(3276480512);
+emit_32(1114267661);
+emit_32(1095278002);
+emit_32(3276480512);
+emit_32(1115291648);
+emit_32(1094897264);
+emit_32(3276480512);
+emit_32(1116000263);
+emit_32(1092706055);
+emit_32(3276480512);
+emit_32(1116512256);
+emit_32(1091291358);
+emit_32(3276480512);
+emit_32(1117024263);
+emit_32(1090889429);
+emit_32(3276480512);
+emit_32(1117536256);
+emit_32(1091305986);
+emit_32(3276480512);
+emit_32(1118048263);
+emit_32(1092298620);
+emit_32(3276480512);
+emit_32(1118560256);
+emit_32(1092551684);
+emit_32(3276480512);
+emit_32(1119072263);
+emit_32(1092611295);
+emit_32(3276480512);
+emit_32(1119584256);
+emit_32(1091871042);
+emit_32(3276480512);
+emit_32(1120096263);
+emit_32(1090718773);
+emit_32(3276480512);
+emit_32(1120608322);
+emit_32(1090155373);
+emit_32(3276480512);
+emit_32(1121120289);
+emit_32(1087795930);
+emit_32(3276480512);
+emit_32(1121632256);
+emit_32(1087063877);
+emit_32(3276480512);
+emit_32(1122144223);
+emit_32(1088019466);
+emit_32(3276480512);
+emit_32(1122656322);
+emit_32(1090277322);
+emit_32(3276480512);
+emit_32(1123168289);
+emit_32(1091326066);
+emit_32(3276480512);
+emit_32(1123680256);
+emit_32(1091923220);
+emit_32(3276480512);
+emit_32(1124132848);
+emit_32(1091702285);
+emit_32(3276480512);
+emit_32(1124388897);
+emit_32(1089725142);
+emit_32(3276480512);
+emit_32(1124644880);
+emit_32(1087013462);
+emit_32(3276480512);
+emit_32(1124900864);
+emit_32(1086960152);
+emit_32(3276480512);
+emit_32(1125156848);
+emit_32(1085873156);
+emit_32(3276480512);
+emit_32(1125412897);
+emit_32(1082634587);
+emit_32(3276480512);
+emit_32(1125668880);
+emit_32(1076934109);
+emit_32(3276480512);
+emit_32(1125924864);
+emit_32(1073398227);
+emit_32(3276480512);
+emit_32(1126180848);
+emit_32(1074881249);
+emit_32(3276480512);
+emit_32(1126436897);
+emit_32(1074681558);
+emit_32(3276480512);
+emit_32(1126692880);
+emit_32(1066383253);
+emit_32(3276480512);
+emit_32(1126948864);
+emit_32(3190627924);
+emit_32(3276480512);
+emit_32(1127204848);
+emit_32(3210951893);
+emit_32(3276480512);
+emit_32(1127460897);
+emit_32(3211101009);
+emit_32(3276480512);
+emit_32(1127716880);
+emit_32(3222970470);
+emit_32(3276480512);
+emit_32(1127972864);
+emit_32(3228079929);
+emit_32(3276480512);
+emit_32(1128228848);
+emit_32(3233825706);
+emit_32(3276480512);
+emit_32(1128484897);
+emit_32(3233542381);
+emit_32(3276480512);
+emit_32(1128740880);
+emit_32(3232104805);
+emit_32(3276480512);
+emit_32(1128996864);
+emit_32(3230112405);
+emit_32(3276480512);
+emit_32(1129252848);
+emit_32(3231152970);
+emit_32(3276480512);
+emit_32(1129508897);
+emit_32(3231464292);
+emit_32(3276480512);
+emit_32(1129764880);
+emit_32(3231339491);
+emit_32(3276480512);
+emit_32(1130020864);
+emit_32(3231844149);
+emit_32(3276480512);
+emit_32(1130276848);
+emit_32(3231999318);
+emit_32(3276480512);
+emit_32(1130532897);
+emit_32(3224338359);
+emit_32(3276480512);
+emit_32(1130788880);
+emit_32(1034571239);
+emit_32(3276480512);
+emit_32(1131044864);
+emit_32(1073783180);
+emit_32(3276480512);
+emit_32(1131300848);
+emit_32(1077514055);
+emit_32(3276480512);
+emit_32(1131556897);
+emit_32(1081268167);
+emit_32(3276480512);
+emit_32(1131812880);
+emit_32(1085146577);
+emit_32(3276480512);
+emit_32(1132068864);
+emit_32(1091014199);
+emit_32(3276480512);
+emit_32(1081737216);
+emit_32(1100121322);
+emit_32(3276736496);
+emit_32(1090125824);
+emit_32(1099396180);
+emit_32(3276736496);
+emit_32(1094418484);
+emit_32(1099281098);
+emit_32(3276736496);
+emit_32(1098514432);
+emit_32(1098942251);
+emit_32(3276736496);
+emit_32(1100759066);
+emit_32(1098739981);
+emit_32(3276736496);
+emit_32(1102807040);
+emit_32(1097837366);
+emit_32(3276736496);
+emit_32(1104855066);
+emit_32(1096300469);
+emit_32(3276736496);
+emit_32(1106903040);
+emit_32(1095044694);
+emit_32(3276736496);
+emit_32(1108123661);
+emit_32(1095162764);
+emit_32(3276736496);
+emit_32(1109147648);
+emit_32(1095334730);
+emit_32(3276736496);
+emit_32(1110171661);
+emit_32(1095152697);
+emit_32(3276736496);
+emit_32(1111195648);
+emit_32(1094407894);
+emit_32(3276736496);
+emit_32(1112219661);
+emit_32(1093563371);
+emit_32(3276736496);
+emit_32(1113243648);
+emit_32(1092844257);
+emit_32(3276736496);
+emit_32(1114267661);
+emit_32(1093382386);
+emit_32(3276736496);
+emit_32(1115291648);
+emit_32(1092541009);
+emit_32(3276736496);
+emit_32(1116000263);
+emit_32(1091687762);
+emit_32(3276736496);
+emit_32(1116512256);
+emit_32(1088040290);
+emit_32(3276736496);
+emit_32(1117024263);
+emit_32(1088119038);
+emit_32(3276736496);
+emit_32(1117536256);
+emit_32(1088383007);
+emit_32(3276736496);
+emit_32(1118048263);
+emit_32(1090949575);
+emit_32(3276736496);
+emit_32(1118560256);
+emit_32(1091368575);
+emit_32(3276736496);
+emit_32(1119072263);
+emit_32(1091839008);
+emit_32(3276736496);
+emit_32(1119584256);
+emit_32(1091040497);
+emit_32(3276736496);
+emit_32(1120096263);
+emit_32(1088659118);
+emit_32(3276736496);
+emit_32(1120608322);
+emit_32(1086563119);
+emit_32(3276736496);
+emit_32(1121120289);
+emit_32(1083266480);
+emit_32(3276736496);
+emit_32(1121632256);
+emit_32(1082063323);
+emit_32(3276736496);
+emit_32(1122144223);
+emit_32(1086818322);
+emit_32(3276736496);
+emit_32(1122656322);
+emit_32(1089302105);
+emit_32(3276736496);
+emit_32(1123168289);
+emit_32(1090938523);
+emit_32(3276736496);
+emit_32(1123680256);
+emit_32(1091787911);
+emit_32(3276736496);
+emit_32(1124132848);
+emit_32(1091673658);
+emit_32(3276736496);
+emit_32(1124388897);
+emit_32(1091250789);
+emit_32(3276736496);
+emit_32(1124644880);
+emit_32(1088596245);
+emit_32(3276736496);
+emit_32(1124900864);
+emit_32(1086620707);
+emit_32(3276736496);
+emit_32(1125156848);
+emit_32(1083915591);
+emit_32(3276736496);
+emit_32(1125412897);
+emit_32(1083242195);
+emit_32(3276736496);
+emit_32(1125668880);
+emit_32(1083662443);
+emit_32(3276736496);
+emit_32(1125924864);
+emit_32(1080051525);
+emit_32(3276736496);
+emit_32(1126180848);
+emit_32(1078023915);
+emit_32(3276736496);
+emit_32(1126436897);
+emit_32(1076481418);
+emit_32(3276736496);
+emit_32(1126692880);
+emit_32(1073065367);
+emit_32(3276736496);
+emit_32(1126948864);
+emit_32(1068007204);
+emit_32(3276736496);
+emit_32(1127204848);
+emit_32(1059175291);
+emit_32(3276736496);
+emit_32(1127460897);
+emit_32(3191698780);
+emit_32(3276736496);
+emit_32(1127716880);
+emit_32(3213224166);
+emit_32(3276736496);
+emit_32(1127972864);
+emit_32(3223725026);
+emit_32(3276736496);
+emit_32(1128228848);
+emit_32(3228029430);
+emit_32(3276736496);
+emit_32(1128484897);
+emit_32(3226148159);
+emit_32(3276736496);
+emit_32(1128740880);
+emit_32(3225760353);
+emit_32(3276736496);
+emit_32(1128996864);
+emit_32(3222121585);
+emit_32(3276736496);
+emit_32(1129252848);
+emit_32(3225539356);
+emit_32(3276736496);
+emit_32(1129508897);
+emit_32(3229882998);
+emit_32(3276736496);
+emit_32(1129764880);
+emit_32(3227190108);
+emit_32(3276736496);
+emit_32(1130020864);
+emit_32(3228912960);
+emit_32(3276736496);
+emit_32(1130276848);
+emit_32(3228921307);
+emit_32(3276736496);
+emit_32(1130532897);
+emit_32(3219664184);
+emit_32(3276736496);
+emit_32(1130788880);
+emit_32(1065871800);
+emit_32(3276736496);
+emit_32(1131044864);
+emit_32(1077962552);
+emit_32(3276736496);
+emit_32(1131300848);
+emit_32(1082028972);
+emit_32(3276736496);
+emit_32(1131556897);
+emit_32(1084764119);
+emit_32(3276736496);
+emit_32(1131812880);
+emit_32(1086553745);
+emit_32(3276736496);
+emit_32(1132068864);
+emit_32(1092505651);
+emit_32(3276736496);
+emit_32(1081737216);
+emit_32(1099020213);
+emit_32(3276992545);
+emit_32(1090125824);
+emit_32(1098714186);
+emit_32(3276992545);
+emit_32(1094418484);
+emit_32(1097828034);
+emit_32(3276992545);
+emit_32(1098514432);
+emit_32(1097529085);
+emit_32(3276992545);
+emit_32(1100759066);
+emit_32(1097159252);
+emit_32(3276992545);
+emit_32(1102807040);
+emit_32(1096861667);
+emit_32(3276992545);
+emit_32(1104855066);
+emit_32(1094929036);
+emit_32(3276992545);
+emit_32(1106903040);
+emit_32(1095502502);
+emit_32(3276992545);
+emit_32(1108123661);
+emit_32(1095915851);
+emit_32(3276992545);
+emit_32(1109147648);
+emit_32(1095718928);
+emit_32(3276992545);
+emit_32(1110171661);
+emit_32(1095125539);
+emit_32(3276992545);
+emit_32(1111195648);
+emit_32(1094669094);
+emit_32(3276992545);
+emit_32(1112219661);
+emit_32(1093180431);
+emit_32(3276992545);
+emit_32(1113243648);
+emit_32(1091863545);
+emit_32(3276992545);
+emit_32(1114267661);
+emit_32(1091778558);
+emit_32(3276992545);
+emit_32(1115291648);
+emit_32(1091298751);
+emit_32(3276992545);
+emit_32(1116000263);
+emit_32(1089644695);
+emit_32(3276992545);
+emit_32(1116512256);
+emit_32(1086301730);
+emit_32(3276992545);
+emit_32(1117024263);
+emit_32(1086163570);
+emit_32(3276992545);
+emit_32(1117536256);
+emit_32(1086958244);
+emit_32(3276992545);
+emit_32(1118048263);
+emit_32(1089172396);
+emit_32(3276992545);
+emit_32(1118560256);
+emit_32(1089779354);
+emit_32(3276992545);
+emit_32(1119072263);
+emit_32(1090296616);
+emit_32(3276992545);
+emit_32(1119584256);
+emit_32(1089775033);
+emit_32(3276992545);
+emit_32(1120096263);
+emit_32(1085622735);
+emit_32(3276992545);
+emit_32(1120608322);
+emit_32(1082413128);
+emit_32(3276992545);
+emit_32(1121120289);
+emit_32(1076491106);
+emit_32(3276992545);
+emit_32(1121632256);
+emit_32(1082562760);
+emit_32(3276992545);
+emit_32(1122144223);
+emit_32(1085964047);
+emit_32(3276992545);
+emit_32(1122656322);
+emit_32(1088268397);
+emit_32(3276992545);
+emit_32(1123168289);
+emit_32(1091065421);
+emit_32(3276992545);
+emit_32(1123680256);
+emit_32(1091881444);
+emit_32(3276992545);
+emit_32(1124132848);
+emit_32(1092768655);
+emit_32(3276992545);
+emit_32(1124388897);
+emit_32(1091984761);
+emit_32(3276992545);
+emit_32(1124644880);
+emit_32(1091281397);
+emit_32(3276992545);
+emit_32(1124900864);
+emit_32(1090331513);
+emit_32(3276992545);
+emit_32(1125156848);
+emit_32(1084916184);
+emit_32(3276992545);
+emit_32(1125412897);
+emit_32(1084859729);
+emit_32(3276992545);
+emit_32(1125668880);
+emit_32(1084191807);
+emit_32(3276992545);
+emit_32(1125924864);
+emit_32(1084800757);
+emit_32(3276992545);
+emit_32(1126180848);
+emit_32(1082243678);
+emit_32(3276992545);
+emit_32(1126436897);
+emit_32(1082662102);
+emit_32(3276992545);
+emit_32(1126692880);
+emit_32(1080485887);
+emit_32(3276992545);
+emit_32(1126948864);
+emit_32(1077722135);
+emit_32(3276992545);
+emit_32(1127204848);
+emit_32(1073495534);
+emit_32(3276992545);
+emit_32(1127460897);
+emit_32(1067137892);
+emit_32(3276992545);
+emit_32(1127716880);
+emit_32(3201755546);
+emit_32(3276992545);
+emit_32(1127972864);
+emit_32(3219314631);
+emit_32(3276992545);
+emit_32(1128228848);
+emit_32(3220786161);
+emit_32(3276992545);
+emit_32(1128484897);
+emit_32(3215535647);
+emit_32(3276992545);
+emit_32(1128740880);
+emit_32(3219082434);
+emit_32(3276992545);
+emit_32(1128996864);
+emit_32(3207719209);
+emit_32(3276992545);
+emit_32(1129252848);
+emit_32(3219319329);
+emit_32(3276992545);
+emit_32(1129508897);
+emit_32(3222885200);
+emit_32(3276992545);
+emit_32(1129764880);
+emit_32(3223784878);
+emit_32(3276992545);
+emit_32(1130020864);
+emit_32(3226090865);
+emit_32(3276992545);
+emit_32(1130276848);
+emit_32(3223180269);
+emit_32(3276992545);
+emit_32(1130532897);
+emit_32(3210523051);
+emit_32(3276992545);
+emit_32(1130788880);
+emit_32(1069117184);
+emit_32(3276992545);
+emit_32(1131044864);
+emit_32(1079791646);
+emit_32(3276992545);
+emit_32(1131300848);
+emit_32(1085107318);
+emit_32(3276992545);
+emit_32(1131556897);
+emit_32(1086920663);
+emit_32(3276992545);
+emit_32(1131812880);
+emit_32(1088946029);
+emit_32(3276992545);
+emit_32(1132068864);
+emit_32(1093373998);
+emit_32(3276992545);
+emit_32(1081737216);
+emit_32(1097108292);
+emit_32(3277248528);
+emit_32(1090125824);
+emit_32(1096843002);
+emit_32(3277248528);
+emit_32(1094418484);
+emit_32(1095568248);
+emit_32(3277248528);
+emit_32(1098514432);
+emit_32(1095018899);
+emit_32(3277248528);
+emit_32(1100759066);
+emit_32(1094782235);
+emit_32(3277248528);
+emit_32(1102807040);
+emit_32(1095180170);
+emit_32(3277248528);
+emit_32(1104855066);
+emit_32(1095450493);
+emit_32(3277248528);
+emit_32(1106903040);
+emit_32(1095069965);
+emit_32(3277248528);
+emit_32(1108123661);
+emit_32(1095994599);
+emit_32(3277248528);
+emit_32(1109147648);
+emit_32(1095664822);
+emit_32(3277248528);
+emit_32(1110171661);
+emit_32(1095335569);
+emit_32(3277248528);
+emit_32(1111195648);
+emit_32(1094159381);
+emit_32(3277248528);
+emit_32(1112219661);
+emit_32(1093190812);
+emit_32(3277248528);
+emit_32(1113243648);
+emit_32(1092024942);
+emit_32(3277248528);
+emit_32(1114267661);
+emit_32(1092719162);
+emit_32(3277248528);
+emit_32(1115291648);
+emit_32(1091950724);
+emit_32(3277248528);
+emit_32(1116000263);
+emit_32(1090594496);
+emit_32(3277248528);
+emit_32(1116512256);
+emit_32(1087264889);
+emit_32(3277248528);
+emit_32(1117024263);
+emit_32(1085915770);
+emit_32(3277248528);
+emit_32(1117536256);
+emit_32(1085498563);
+emit_32(3277248528);
+emit_32(1118048263);
+emit_32(1087685913);
+emit_32(3277248528);
+emit_32(1118560256);
+emit_32(1089772496);
+emit_32(3277248528);
+emit_32(1119072263);
+emit_32(1090845682);
+emit_32(3277248528);
+emit_32(1119584256);
+emit_32(1090463340);
+emit_32(3277248528);
+emit_32(1120096263);
+emit_32(1085056987);
+emit_32(3277248528);
+emit_32(1120608322);
+emit_32(1080738301);
+emit_32(3277248528);
+emit_32(1121120289);
+emit_32(1078775408);
+emit_32(3277248528);
+emit_32(1121632256);
+emit_32(1086143815);
+emit_32(3277248528);
+emit_32(1122144223);
+emit_32(1089267858);
+emit_32(3277248528);
+emit_32(1122656322);
+emit_32(1090842075);
+emit_32(3277248528);
+emit_32(1123168289);
+emit_32(1092362164);
+emit_32(3277248528);
+emit_32(1123680256);
+emit_32(1092866068);
+emit_32(3277248528);
+emit_32(1124132848);
+emit_32(1092973547);
+emit_32(3277248528);
+emit_32(1124388897);
+emit_32(1093272810);
+emit_32(3277248528);
+emit_32(1124644880);
+emit_32(1093540826);
+emit_32(3277248528);
+emit_32(1124900864);
+emit_32(1091662900);
+emit_32(3277248528);
+emit_32(1125156848);
+emit_32(1087337472);
+emit_32(3277248528);
+emit_32(1125412897);
+emit_32(1084271960);
+emit_32(3277248528);
+emit_32(1125668880);
+emit_32(1086273209);
+emit_32(3277248528);
+emit_32(1125924864);
+emit_32(1087017908);
+emit_32(3277248528);
+emit_32(1126180848);
+emit_32(1086137020);
+emit_32(3277248528);
+emit_32(1126436897);
+emit_32(1084291023);
+emit_32(3277248528);
+emit_32(1126692880);
+emit_32(1084252771);
+emit_32(3277248528);
+emit_32(1126948864);
+emit_32(1082890062);
+emit_32(3277248528);
+emit_32(1127204848);
+emit_32(1080838922);
+emit_32(3277248528);
+emit_32(1127460897);
+emit_32(1077790963);
+emit_32(3277248528);
+emit_32(1127716880);
+emit_32(1069026504);
+emit_32(3277248528);
+emit_32(1127972864);
+emit_32(3200230497);
+emit_32(3277248528);
+emit_32(1128228848);
+emit_32(3212093549);
+emit_32(3277248528);
+emit_32(1128484897);
+emit_32(3187505818);
+emit_32(3277248528);
+emit_32(1128740880);
+emit_32(3186118946);
+emit_32(3277248528);
+emit_32(1128996864);
+emit_32(3163350412);
+emit_32(3277248528);
+emit_32(1129252848);
+emit_32(3213662303);
+emit_32(3277248528);
+emit_32(1129508897);
+emit_32(3213755333);
+emit_32(3277248528);
+emit_32(1129764880);
+emit_32(3220593894);
+emit_32(3277248528);
+emit_32(1130020864);
+emit_32(3222323667);
+emit_32(3277248528);
+emit_32(1130276848);
+emit_32(3215526587);
+emit_32(3277248528);
+emit_32(1130532897);
+emit_32(1045835140);
+emit_32(3277248528);
+emit_32(1130788880);
+emit_32(1075469835);
+emit_32(3277248528);
+emit_32(1131044864);
+emit_32(1083532819);
+emit_32(3277248528);
+emit_32(1131300848);
+emit_32(1086949121);
+emit_32(3277248528);
+emit_32(1131556897);
+emit_32(1088845177);
+emit_32(3277248528);
+emit_32(1131812880);
+emit_32(1090603115);
+emit_32(3277248528);
+emit_32(1132068864);
+emit_32(1092936742);
+emit_32(3277248528);
+emit_32(1081737216);
+emit_32(1096047133);
+emit_32(3277504512);
+emit_32(1090125824);
+emit_32(1095575064);
+emit_32(3277504512);
+emit_32(1094418484);
+emit_32(1094514324);
+emit_32(3277504512);
+emit_32(1098514432);
+emit_32(1094409781);
+emit_32(3277504512);
+emit_32(1100759066);
+emit_32(1094209084);
+emit_32(3277504512);
+emit_32(1102807040);
+emit_32(1094844731);
+emit_32(3277504512);
+emit_32(1104855066);
+emit_32(1094741236);
+emit_32(3277504512);
+emit_32(1106903040);
+emit_32(1095085484);
+emit_32(3277504512);
+emit_32(1108123661);
+emit_32(1095114110);
+emit_32(3277504512);
+emit_32(1109147648);
+emit_32(1094994362);
+emit_32(3277504512);
+emit_32(1110171661);
+emit_32(1095239939);
+emit_32(3277504512);
+emit_32(1111195648);
+emit_32(1093966548);
+emit_32(3277504512);
+emit_32(1112219661);
+emit_32(1092807347);
+emit_32(3277504512);
+emit_32(1113243648);
+emit_32(1093061208);
+emit_32(3277504512);
+emit_32(1114267661);
+emit_32(1092621120);
+emit_32(3277504512);
+emit_32(1115291648);
+emit_32(1092574889);
+emit_32(3277504512);
+emit_32(1116000263);
+emit_32(1091199283);
+emit_32(3277504512);
+emit_32(1116512256);
+emit_32(1087281792);
+emit_32(3277504512);
+emit_32(1117024263);
+emit_32(1084862056);
+emit_32(3277504512);
+emit_32(1117536256);
+emit_32(1084838904);
+emit_32(3277504512);
+emit_32(1118048263);
+emit_32(1088961905);
+emit_32(3277504512);
+emit_32(1118560256);
+emit_32(1090683457);
+emit_32(3277504512);
+emit_32(1119072263);
+emit_32(1091541548);
+emit_32(3277504512);
+emit_32(1119584256);
+emit_32(1089950880);
+emit_32(3277504512);
+emit_32(1120096263);
+emit_32(1085097923);
+emit_32(3277504512);
+emit_32(1120608322);
+emit_32(1082634273);
+emit_32(3277504512);
+emit_32(1121120289);
+emit_32(1085048283);
+emit_32(3277504512);
+emit_32(1121632256);
+emit_32(1089879786);
+emit_32(3277504512);
+emit_32(1122144223);
+emit_32(1091437760);
+emit_32(3277504512);
+emit_32(1122656322);
+emit_32(1092036938);
+emit_32(3277504512);
+emit_32(1123168289);
+emit_32(1091792777);
+emit_32(3277504512);
+emit_32(1123680256);
+emit_32(1092759427);
+emit_32(3277504512);
+emit_32(1124132848);
+emit_32(1094303141);
+emit_32(3277504512);
+emit_32(1124388897);
+emit_32(1094722047);
+emit_32(3277504512);
+emit_32(1124644880);
+emit_32(1095047211);
+emit_32(3277504512);
+emit_32(1124900864);
+emit_32(1093500980);
+emit_32(3277504512);
+emit_32(1125156848);
+emit_32(1089802590);
+emit_32(3277504512);
+emit_32(1125412897);
+emit_32(1086478164);
+emit_32(3277504512);
+emit_32(1125668880);
+emit_32(1087292152);
+emit_32(3277504512);
+emit_32(1125924864);
+emit_32(1088463244);
+emit_32(3277504512);
+emit_32(1126180848);
+emit_32(1088955697);
+emit_32(3277504512);
+emit_32(1126436897);
+emit_32(1086983577);
+emit_32(3277504512);
+emit_32(1126692880);
+emit_32(1087333382);
+emit_32(3277504512);
+emit_32(1126948864);
+emit_32(1086099795);
+emit_32(3277504512);
+emit_32(1127204848);
+emit_32(1085722623);
+emit_32(3277504512);
+emit_32(1127460897);
+emit_32(1082769224);
+emit_32(3277504512);
+emit_32(1127716880);
+emit_32(1075827190);
+emit_32(3277504512);
+emit_32(1127972864);
+emit_32(1066775588);
+emit_32(3277504512);
+emit_32(1128228848);
+emit_32(1067171279);
+emit_32(3277504512);
+emit_32(1128484897);
+emit_32(1067001745);
+emit_32(3277504512);
+emit_32(1128740880);
+emit_32(1067686843);
+emit_32(3277504512);
+emit_32(1128996864);
+emit_32(1065883795);
+emit_32(3277504512);
+emit_32(1129252848);
+emit_32(1040732182);
+emit_32(3277504512);
+emit_32(1129508897);
+emit_32(3197189593);
+emit_32(3277504512);
+emit_32(1129764880);
+emit_32(3203486016);
+emit_32(3277504512);
+emit_32(1130020864);
+emit_32(3211855951);
+emit_32(3277504512);
+emit_32(1130276848);
+emit_32(3212062612);
+emit_32(3277504512);
+emit_32(1130532897);
+emit_32(1061179313);
+emit_32(3277504512);
+emit_32(1130788880);
+emit_32(1076017024);
+emit_32(3277504512);
+emit_32(1131044864);
+emit_32(1084602198);
+emit_32(3277504512);
+emit_32(1131300848);
+emit_32(1088897291);
+emit_32(3277504512);
+emit_32(1131556897);
+emit_32(1090987995);
+emit_32(3277504512);
+emit_32(1131812880);
+emit_32(1091140101);
+emit_32(3277504512);
+emit_32(1132068864);
+emit_32(1093070540);
+emit_32(3277504512);
+emit_32(1081737216);
+emit_32(1095782787);
+emit_32(3277760496);
+emit_32(1090125824);
+emit_32(1095949510);
+emit_32(3277760496);
+emit_32(1094418484);
+emit_32(1095197157);
+emit_32(3277760496);
+emit_32(1098514432);
+emit_32(1093509684);
+emit_32(3277760496);
+emit_32(1100759066);
+emit_32(1093932365);
+emit_32(3277760496);
+emit_32(1102807040);
+emit_32(1094883004);
+emit_32(3277760496);
+emit_32(1104855066);
+emit_32(1095364195);
+emit_32(3277760496);
+emit_32(1106903040);
+emit_32(1095467794);
+emit_32(3277760496);
+emit_32(1108123661);
+emit_32(1095382231);
+emit_32(3277760496);
+emit_32(1109147648);
+emit_32(1095263532);
+emit_32(3277760496);
+emit_32(1110171661);
+emit_32(1094240751);
+emit_32(3277760496);
+emit_32(1111195648);
+emit_32(1093792485);
+emit_32(3277760496);
+emit_32(1112219661);
+emit_32(1093773400);
+emit_32(3277760496);
+emit_32(1113243648);
+emit_32(1093969799);
+emit_32(3277760496);
+emit_32(1114267661);
+emit_32(1092613235);
+emit_32(3277760496);
+emit_32(1115291648);
+emit_32(1091641803);
+emit_32(3277760496);
+emit_32(1116000263);
+emit_32(1090223425);
+emit_32(3277760496);
+emit_32(1116512256);
+emit_32(1086325449);
+emit_32(3277760496);
+emit_32(1117024263);
+emit_32(1086748822);
+emit_32(3277760496);
+emit_32(1117536256);
+emit_32(1088214081);
+emit_32(3277760496);
+emit_32(1118048263);
+emit_32(1090683918);
+emit_32(3277760496);
+emit_32(1118560256);
+emit_32(1091490273);
+emit_32(3277760496);
+emit_32(1119072263);
+emit_32(1092135263);
+emit_32(3277760496);
+emit_32(1119584256);
+emit_32(1090576429);
+emit_32(3277760496);
+emit_32(1120096263);
+emit_32(1085919021);
+emit_32(3277760496);
+emit_32(1120608322);
+emit_32(1084273260);
+emit_32(3277760496);
+emit_32(1121120289);
+emit_32(1088748708);
+emit_32(3277760496);
+emit_32(1121632256);
+emit_32(1091512618);
+emit_32(3277760496);
+emit_32(1122144223);
+emit_32(1092476008);
+emit_32(3277760496);
+emit_32(1122656322);
+emit_32(1093289483);
+emit_32(3277760496);
+emit_32(1123168289);
+emit_32(1093443623);
+emit_32(3277760496);
+emit_32(1123680256);
+emit_32(1093739846);
+emit_32(3277760496);
+emit_32(1124132848);
+emit_32(1095381916);
+emit_32(3277760496);
+emit_32(1124388897);
+emit_32(1095171886);
+emit_32(3277760496);
+emit_32(1124644880);
+emit_32(1094833196);
+emit_32(3277760496);
+emit_32(1124900864);
+emit_32(1094087134);
+emit_32(3277760496);
+emit_32(1125156848);
+emit_32(1091517725);
+emit_32(3277760496);
+emit_32(1125412897);
+emit_32(1088065624);
+emit_32(3277760496);
+emit_32(1125668880);
+emit_32(1089789588);
+emit_32(3277760496);
+emit_32(1125924864);
+emit_32(1090797741);
+emit_32(3277760496);
+emit_32(1126180848);
+emit_32(1090448785);
+emit_32(3277760496);
+emit_32(1126436897);
+emit_32(1089515972);
+emit_32(3277760496);
+emit_32(1126692880);
+emit_32(1088794300);
+emit_32(3277760496);
+emit_32(1126948864);
+emit_32(1086317606);
+emit_32(3277760496);
+emit_32(1127204848);
+emit_32(1085853170);
+emit_32(3277760496);
+emit_32(1127460897);
+emit_32(1083759395);
+emit_32(3277760496);
+emit_32(1127716880);
+emit_32(1079594766);
+emit_32(3277760496);
+emit_32(1127972864);
+emit_32(1077764623);
+emit_32(3277760496);
+emit_32(1128228848);
+emit_32(1072514403);
+emit_32(3277760496);
+emit_32(1128484897);
+emit_32(1067984303);
+emit_32(3277760496);
+emit_32(1128740880);
+emit_32(1066412026);
+emit_32(3277760496);
+emit_32(1128996864);
+emit_32(1069352569);
+emit_32(3277760496);
+emit_32(1129252848);
+emit_32(1072856490);
+emit_32(3277760496);
+emit_32(1129508897);
+emit_32(1059155041);
+emit_32(3277760496);
+emit_32(1129764880);
+emit_32(1050172017);
+emit_32(3277760496);
+emit_32(1130020864);
+emit_32(3157538945);
+emit_32(3277760496);
+emit_32(1130276848);
+emit_32(3194387429);
+emit_32(3277760496);
+emit_32(1130532897);
+emit_32(1059188931);
+emit_32(3277760496);
+emit_32(1130788880);
+emit_32(1077509609);
+emit_32(3277760496);
+emit_32(1131044864);
+emit_32(1085587356);
+emit_32(3277760496);
+emit_32(1131300848);
+emit_32(1088891944);
+emit_32(3277760496);
+emit_32(1131556897);
+emit_32(1090308297);
+emit_32(3277760496);
+emit_32(1131812880);
+emit_32(1091359484);
+emit_32(3277760496);
+emit_32(1132068864);
+emit_32(1093623035);
+emit_32(3277760496);
+emit_32(1081737216);
+emit_32(1094685347);
+emit_32(3278016545);
+emit_32(1090125824);
+emit_32(1095642592);
+emit_32(3278016545);
+emit_32(1094418484);
+emit_32(1094847876);
+emit_32(3278016545);
+emit_32(1098514432);
+emit_32(1093374732);
+emit_32(3278016545);
+emit_32(1100759066);
+emit_32(1094384720);
+emit_32(3278016545);
+emit_32(1102807040);
+emit_32(1095400371);
+emit_32(3278016545);
+emit_32(1104855066);
+emit_32(1095484362);
+emit_32(3278016545);
+emit_32(1106903040);
+emit_32(1094502790);
+emit_32(3278016545);
+emit_32(1108123661);
+emit_32(1093875112);
+emit_32(3278016545);
+emit_32(1109147648);
+emit_32(1093633206);
+emit_32(3278016545);
+emit_32(1110171661);
+emit_32(1093418667);
+emit_32(3278016545);
+emit_32(1111195648);
+emit_32(1093659211);
+emit_32(3278016545);
+emit_32(1112219661);
+emit_32(1093957426);
+emit_32(3278016545);
+emit_32(1113243648);
+emit_32(1093739846);
+emit_32(3278016545);
+emit_32(1114267661);
+emit_32(1093359842);
+emit_32(3278016545);
+emit_32(1115291648);
+emit_32(1091739111);
+emit_32(3278016545);
+emit_32(1116000263);
+emit_32(1089668246);
+emit_32(3278016545);
+emit_32(1116512256);
+emit_32(1087761327);
+emit_32(3278016545);
+emit_32(1117024263);
+emit_32(1088382734);
+emit_32(3278016545);
+emit_32(1117536256);
+emit_32(1089936850);
+emit_32(3278016545);
+emit_32(1118048263);
+emit_32(1091570688);
+emit_32(3278016545);
+emit_32(1118560256);
+emit_32(1092069527);
+emit_32(3278016545);
+emit_32(1119072263);
+emit_32(1091509504);
+emit_32(3278016545);
+emit_32(1119584256);
+emit_32(1090092228);
+emit_32(3278016545);
+emit_32(1120096263);
+emit_32(1086488041);
+emit_32(3278016545);
+emit_32(1120608322);
+emit_32(1087594478);
+emit_32(3278016545);
+emit_32(1121120289);
+emit_32(1091111695);
+emit_32(3278016545);
+emit_32(1121632256);
+emit_32(1092917028);
+emit_32(3278016545);
+emit_32(1122144223);
+emit_32(1094162946);
+emit_32(3278016545);
+emit_32(1122656322);
+emit_32(1094317402);
+emit_32(3278016545);
+emit_32(1123168289);
+emit_32(1094797545);
+emit_32(3278016545);
+emit_32(1123680256);
+emit_32(1095272759);
+emit_32(3278016545);
+emit_32(1124132848);
+emit_32(1096382467);
+emit_32(3278016545);
+emit_32(1124388897);
+emit_32(1095677824);
+emit_32(3278016545);
+emit_32(1124644880);
+emit_32(1094211076);
+emit_32(3278016545);
+emit_32(1124900864);
+emit_32(1093289168);
+emit_32(3278016545);
+emit_32(1125156848);
+emit_32(1091399110);
+emit_32(3278016545);
+emit_32(1125412897);
+emit_32(1091357282);
+emit_32(3278016545);
+emit_32(1125668880);
+emit_32(1092084459);
+emit_32(3278016545);
+emit_32(1125924864);
+emit_32(1092576409);
+emit_32(3278016545);
+emit_32(1126180848);
+emit_32(1091310967);
+emit_32(3278016545);
+emit_32(1126436897);
+emit_32(1089767358);
+emit_32(3278016545);
+emit_32(1126692880);
+emit_32(1088833559);
+emit_32(3278016545);
+emit_32(1126948864);
+emit_32(1088084855);
+emit_32(3278016545);
+emit_32(1127204848);
+emit_32(1086548397);
+emit_32(3278016545);
+emit_32(1127460897);
+emit_32(1083608358);
+emit_32(3278016545);
+emit_32(1127716880);
+emit_32(1083278790);
+emit_32(3278016545);
+emit_32(1127972864);
+emit_32(1080394661);
+emit_32(3278016545);
+emit_32(1128228848);
+emit_32(1077852158);
+emit_32(3278016545);
+emit_32(1128484897);
+emit_32(1069478650);
+emit_32(3278016545);
+emit_32(1128740880);
+emit_32(1072553494);
+emit_32(3278016545);
+emit_32(1128996864);
+emit_32(1069471100);
+emit_32(3278016545);
+emit_32(1129252848);
+emit_32(1068704381);
+emit_32(3278016545);
+emit_32(1129508897);
+emit_32(1063054771);
+emit_32(3278016545);
+emit_32(1129764880);
+emit_32(1066657309);
+emit_32(3278016545);
+emit_32(1130020864);
+emit_32(1058799582);
+emit_32(3278016545);
+emit_32(1130276848);
+emit_32(1065716610);
+emit_32(3278016545);
+emit_32(1130532897);
+emit_32(1070221796);
+emit_32(3278016545);
+emit_32(1130788880);
+emit_32(1082372632);
+emit_32(3278016545);
+emit_32(1131044864);
+emit_32(1085584357);
+emit_32(3278016545);
+emit_32(1131300848);
+emit_32(1087618406);
+emit_32(3278016545);
+emit_32(1131556897);
+emit_32(1089074731);
+emit_32(3278016545);
+emit_32(1131812880);
+emit_32(1091116256);
+emit_32(3278016545);
+emit_32(1132068864);
+emit_32(1093443623);
+emit_32(3278016545);
+emit_32(1081737216);
+emit_32(1093100529);
+emit_32(3278272528);
+emit_32(1090125824);
+emit_32(1094102968);
+emit_32(3278272528);
+emit_32(1094418484);
+emit_32(1093438380);
+emit_32(3278272528);
+emit_32(1098514432);
+emit_32(1093242192);
+emit_32(3278272528);
+emit_32(1100759066);
+emit_32(1093664663);
+emit_32(3278272528);
+emit_32(1102807040);
+emit_32(1094290978);
+emit_32(3278272528);
+emit_32(1104855066);
+emit_32(1094142185);
+emit_32(3278272528);
+emit_32(1106903040);
+emit_32(1092722622);
+emit_32(3278272528);
+emit_32(1108123661);
+emit_32(1093048205);
+emit_32(3278272528);
+emit_32(1109147648);
+emit_32(1092329868);
+emit_32(3278272528);
+emit_32(1110171661);
+emit_32(1092322308);
+emit_32(3278272528);
+emit_32(1111195648);
+emit_32(1093430621);
+emit_32(3278272528);
+emit_32(1112219661);
+emit_32(1093536317);
+emit_32(3278272528);
+emit_32(1113243648);
+emit_32(1092950268);
+emit_32(3278272528);
+emit_32(1114267661);
+emit_32(1093055336);
+emit_32(3278272528);
+emit_32(1115291648);
+emit_32(1091513918);
+emit_32(3278272528);
+emit_32(1116000263);
+emit_32(1090353428);
+emit_32(3278272528);
+emit_32(1116512256);
+emit_32(1091025450);
+emit_32(3278272528);
+emit_32(1117024263);
+emit_32(1091303186);
+emit_32(3278272528);
+emit_32(1117536256);
+emit_32(1091441535);
+emit_32(3278272528);
+emit_32(1118048263);
+emit_32(1092287275);
+emit_32(3278272528);
+emit_32(1118560256);
+emit_32(1092144259);
+emit_32(3278272528);
+emit_32(1119072263);
+emit_32(1091616102);
+emit_32(3278272528);
+emit_32(1119584256);
+emit_32(1091037110);
+emit_32(3278272528);
+emit_32(1120096263);
+emit_32(1090309493);
+emit_32(3278272528);
+emit_32(1120608322);
+emit_32(1091784220);
+emit_32(3278272528);
+emit_32(1121120289);
+emit_32(1093152434);
+emit_32(3278272528);
+emit_32(1121632256);
+emit_32(1094218836);
+emit_32(3278272528);
+emit_32(1122144223);
+emit_32(1094752980);
+emit_32(3278272528);
+emit_32(1122656322);
+emit_32(1095698796);
+emit_32(3278272528);
+emit_32(1123168289);
+emit_32(1095918053);
+emit_32(3278272528);
+emit_32(1123680256);
+emit_32(1096702912);
+emit_32(3278272528);
+emit_32(1124132848);
+emit_32(1097339817);
+emit_32(3278272528);
+emit_32(1124388897);
+emit_32(1095953075);
+emit_32(3278272528);
+emit_32(1124644880);
+emit_32(1094317611);
+emit_32(3278272528);
+emit_32(1124900864);
+emit_32(1093780950);
+emit_32(3278272528);
+emit_32(1125156848);
+emit_32(1092660022);
+emit_32(3278272528);
+emit_32(1125412897);
+emit_32(1092828633);
+emit_32(3278272528);
+emit_32(1125668880);
+emit_32(1093621252);
+emit_32(3278272528);
+emit_32(1125924864);
+emit_32(1093691821);
+emit_32(3278272528);
+emit_32(1126180848);
+emit_32(1092496151);
+emit_32(3278272528);
+emit_32(1126436897);
+emit_32(1091489371);
+emit_32(3278272528);
+emit_32(1126692880);
+emit_32(1090315742);
+emit_32(3278272528);
+emit_32(1126948864);
+emit_32(1088919605);
+emit_32(3278272528);
+emit_32(1127204848);
+emit_32(1086524028);
+emit_32(3278272528);
+emit_32(1127460897);
+emit_32(1084543520);
+emit_32(3278272528);
+emit_32(1127716880);
+emit_32(1083661479);
+emit_32(3278272528);
+emit_32(1127972864);
+emit_32(1082237198);
+emit_32(3278272528);
+emit_32(1128228848);
+emit_32(1078013052);
+emit_32(3278272528);
+emit_32(1128484897);
+emit_32(1072342353);
+emit_32(3278272528);
+emit_32(1128740880);
+emit_32(1077011074);
+emit_32(3278272528);
+emit_32(1128996864);
+emit_32(1078172393);
+emit_32(3278272528);
+emit_32(1129252848);
+emit_32(1074035719);
+emit_32(3278272528);
+emit_32(1129508897);
+emit_32(1073825416);
+emit_32(3278272528);
+emit_32(1129764880);
+emit_32(1074307678);
+emit_32(3278272528);
+emit_32(1130020864);
+emit_32(1070873927);
+emit_32(3278272528);
+emit_32(1130276848);
+emit_32(1072403002);
+emit_32(3278272528);
+emit_32(1130532897);
+emit_32(1077025838);
+emit_32(3278272528);
+emit_32(1130788880);
+emit_32(1081902304);
+emit_32(3278272528);
+emit_32(1131044864);
+emit_32(1085968619);
+emit_32(3278272528);
+emit_32(1131300848);
+emit_32(1088231676);
+emit_32(3278272528);
+emit_32(1131556897);
+emit_32(1090439956);
+emit_32(3278272528);
+emit_32(1131812880);
+emit_32(1089744184);
+emit_32(3278272528);
+emit_32(1132068864);
+emit_32(1092872988);
+emit_32(3278272528);
+emit_32(1081737216);
+emit_32(1091412678);
+emit_32(3278528512);
+emit_32(1090125824);
+emit_32(1091988504);
+emit_32(3278528512);
+emit_32(1094418484);
+emit_32(1092226269);
+emit_32(3278528512);
+emit_32(1098514432);
+emit_32(1092585521);
+emit_32(3278528512);
+emit_32(1100759066);
+emit_32(1092575014);
+emit_32(3278528512);
+emit_32(1102807040);
+emit_32(1092307292);
+emit_32(3278528512);
+emit_32(1104855066);
+emit_32(1092661805);
+emit_32(3278528512);
+emit_32(1106903040);
+emit_32(1092468123);
+emit_32(3278528512);
+emit_32(1108123661);
+emit_32(1092120016);
+emit_32(3278528512);
+emit_32(1109147648);
+emit_32(1091309048);
+emit_32(3278528512);
+emit_32(1110171661);
+emit_32(1091564323);
+emit_32(3278528512);
+emit_32(1111195648);
+emit_32(1092158059);
+emit_32(3278528512);
+emit_32(1112219661);
+emit_32(1092138943);
+emit_32(3278528512);
+emit_32(1113243648);
+emit_32(1092639785);
+emit_32(3278528512);
+emit_32(1114267661);
+emit_32(1092158950);
+emit_32(3278528512);
+emit_32(1115291648);
+emit_32(1091761330);
+emit_32(3278528512);
+emit_32(1116000263);
+emit_32(1091873884);
+emit_32(3278528512);
+emit_32(1116512256);
+emit_32(1093128002);
+emit_32(3278528512);
+emit_32(1117024263);
+emit_32(1093545755);
+emit_32(3278528512);
+emit_32(1117536256);
+emit_32(1093685844);
+emit_32(3278528512);
+emit_32(1118048263);
+emit_32(1094474478);
+emit_32(3278528512);
+emit_32(1118560256);
+emit_32(1093835057);
+emit_32(3278528512);
+emit_32(1119072263);
+emit_32(1093247435);
+emit_32(3278528512);
+emit_32(1119584256);
+emit_32(1092545770);
+emit_32(3278528512);
+emit_32(1120096263);
+emit_32(1092881691);
+emit_32(3278528512);
+emit_32(1120608322);
+emit_32(1093753687);
+emit_32(3278528512);
+emit_32(1121120289);
+emit_32(1095402888);
+emit_32(3278528512);
+emit_32(1121632256);
+emit_32(1096263454);
+emit_32(3278528512);
+emit_32(1122144223);
+emit_32(1097648518);
+emit_32(3278528512);
+emit_32(1122656322);
+emit_32(1098257845);
+emit_32(3278528512);
+emit_32(1123168289);
+emit_32(1098906075);
+emit_32(3278528512);
+emit_32(1123680256);
+emit_32(1097757884);
+emit_32(3278528512);
+emit_32(1124132848);
+emit_32(1097095184);
+emit_32(3278528512);
+emit_32(1124388897);
+emit_32(1096820772);
+emit_32(3278528512);
+emit_32(1124644880);
+emit_32(1095881563);
+emit_32(3278528512);
+emit_32(1124900864);
+emit_32(1095322462);
+emit_32(3278528512);
+emit_32(1125156848);
+emit_32(1094560881);
+emit_32(3278528512);
+emit_32(1125412897);
+emit_32(1094212020);
+emit_32(3278528512);
+emit_32(1125668880);
+emit_32(1094591919);
+emit_32(3278528512);
+emit_32(1125924864);
+emit_32(1094354836);
+emit_32(3278528512);
+emit_32(1126180848);
+emit_32(1093487244);
+emit_32(3278528512);
+emit_32(1126436897);
+emit_32(1092900566);
+emit_32(3278528512);
+emit_32(1126692880);
+emit_32(1091131859);
+emit_32(3278528512);
+emit_32(1126948864);
+emit_32(1088434303);
+emit_32(3278528512);
+emit_32(1127204848);
+emit_32(1085602330);
+emit_32(3278528512);
+emit_32(1127460897);
+emit_32(1084383381);
+emit_32(3278528512);
+emit_32(1127716880);
+emit_32(1082990348);
+emit_32(3278528512);
+emit_32(1127972864);
+emit_32(1081942359);
+emit_32(3278528512);
+emit_32(1128228848);
+emit_32(1079707928);
+emit_32(3278528512);
+emit_32(1128484897);
+emit_32(1076020757);
+emit_32(3278528512);
+emit_32(1128740880);
+emit_32(1081959766);
+emit_32(3278528512);
+emit_32(1128996864);
+emit_32(1081769302);
+emit_32(3278528512);
+emit_32(1129252848);
+emit_32(1077543709);
+emit_32(3278528512);
+emit_32(1129508897);
+emit_32(1078419522);
+emit_32(3278528512);
+emit_32(1129764880);
+emit_32(1079325911);
+emit_32(3278528512);
+emit_32(1130020864);
+emit_32(1076435784);
+emit_32(3278528512);
+emit_32(1130276848);
+emit_32(1076442830);
+emit_32(3278528512);
+emit_32(1130532897);
+emit_32(1078716269);
+emit_32(3278528512);
+emit_32(1130788880);
+emit_32(1083099337);
+emit_32(3278528512);
+emit_32(1131044864);
+emit_32(1086173385);
+emit_32(3278528512);
+emit_32(1131300848);
+emit_32(1088001787);
+emit_32(3278528512);
+emit_32(1131556897);
+emit_32(1091260069);
+emit_32(3278528512);
+emit_32(1131812880);
+emit_32(1091015247);
+emit_32(3278528512);
+emit_32(1132068864);
+emit_32(1093018740);
+emit_32(3278528512);
+emit_32(1081737216);
+emit_32(1090509120);
+emit_32(3278784496);
+emit_32(1090125824);
+emit_32(1091171244);
+emit_32(3278784496);
+emit_32(1094418484);
+emit_32(1091637818);
+emit_32(3278784496);
+emit_32(1098514432);
+emit_32(1091699621);
+emit_32(3278784496);
+emit_32(1100759066);
+emit_32(1091545869);
+emit_32(3278784496);
+emit_32(1102807040);
+emit_32(1092355642);
+emit_32(3278784496);
+emit_32(1104855066);
+emit_32(1092176189);
+emit_32(3278784496);
+emit_32(1106903040);
+emit_32(1091883961);
+emit_32(3278784496);
+emit_32(1108123661);
+emit_32(1091185924);
+emit_32(3278784496);
+emit_32(1109147648);
+emit_32(1091284217);
+emit_32(3278784496);
+emit_32(1110171661);
+emit_32(1091038221);
+emit_32(3278784496);
+emit_32(1111195648);
+emit_32(1091340725);
+emit_32(3278784496);
+emit_32(1112219661);
+emit_32(1091305944);
+emit_32(3278784496);
+emit_32(1113243648);
+emit_32(1091527623);
+emit_32(3278784496);
+emit_32(1114267661);
+emit_32(1092680260);
+emit_32(3278784496);
+emit_32(1115291648);
+emit_32(1093798461);
+emit_32(3278784496);
+emit_32(1116000263);
+emit_32(1093476968);
+emit_32(3278784496);
+emit_32(1116512256);
+emit_32(1094724669);
+emit_32(3278784496);
+emit_32(1117024263);
+emit_32(1095984847);
+emit_32(3278784496);
+emit_32(1117536256);
+emit_32(1096949223);
+emit_32(3278784496);
+emit_32(1118048263);
+emit_32(1097185362);
+emit_32(3278784496);
+emit_32(1118560256);
+emit_32(1096053529);
+emit_32(3278784496);
+emit_32(1119072263);
+emit_32(1095554721);
+emit_32(3278784496);
+emit_32(1119584256);
+emit_32(1094764095);
+emit_32(3278784496);
+emit_32(1120096263);
+emit_32(1095516239);
+emit_32(3278784496);
+emit_32(1120608322);
+emit_32(1096842687);
+emit_32(3278784496);
+emit_32(1121120289);
+emit_32(1098862245);
+emit_32(3278784496);
+emit_32(1121632256);
+emit_32(1099841038);
+emit_32(3278784496);
+emit_32(1122144223);
+emit_32(1100521249);
+emit_32(3278784496);
+emit_32(1122656322);
+emit_32(1100352324);
+emit_32(3278784496);
+emit_32(1123168289);
+emit_32(1100382418);
+emit_32(3278784496);
+emit_32(1123680256);
+emit_32(1099683961);
+emit_32(3278784496);
+emit_32(1124132848);
+emit_32(1099118517);
+emit_32(3278784496);
+emit_32(1124388897);
+emit_32(1098912891);
+emit_32(3278784496);
+emit_32(1124644880);
+emit_32(1098053268);
+emit_32(3278784496);
+emit_32(1124900864);
+emit_32(1096737201);
+emit_32(3278784496);
+emit_32(1125156848);
+emit_32(1095640390);
+emit_32(3278784496);
+emit_32(1125412897);
+emit_32(1094410096);
+emit_32(3278784496);
+emit_32(1125668880);
+emit_32(1094098878);
+emit_32(3278784496);
+emit_32(1125924864);
+emit_32(1093723488);
+emit_32(3278784496);
+emit_32(1126180848);
+emit_32(1093527195);
+emit_32(3278784496);
+emit_32(1126436897);
+emit_32(1093210944);
+emit_32(3278784496);
+emit_32(1126692880);
+emit_32(1092714548);
+emit_32(3278784496);
+emit_32(1126948864);
+emit_32(1089965455);
+emit_32(3278784496);
+emit_32(1127204848);
+emit_32(1086218431);
+emit_32(3278784496);
+emit_32(1127460897);
+emit_32(1085307869);
+emit_32(3278784496);
+emit_32(1127716880);
+emit_32(1084803231);
+emit_32(3278784496);
+emit_32(1127972864);
+emit_32(1084117756);
+emit_32(3278784496);
+emit_32(1128228848);
+emit_32(1082406438);
+emit_32(3278784496);
+emit_32(1128484897);
+emit_32(1080428635);
+emit_32(3278784496);
+emit_32(1128740880);
+emit_32(1082196765);
+emit_32(3278784496);
+emit_32(1128996864);
+emit_32(1082931292);
+emit_32(3278784496);
+emit_32(1129252848);
+emit_32(1078353839);
+emit_32(3278784496);
+emit_32(1129508897);
+emit_32(1078676842);
+emit_32(3278784496);
+emit_32(1129764880);
+emit_32(1078175832);
+emit_32(3278784496);
+emit_32(1130020864);
+emit_32(1078788788);
+emit_32(3278784496);
+emit_32(1130276848);
+emit_32(1075988503);
+emit_32(3278784496);
+emit_32(1130532897);
+emit_32(1078470902);
+emit_32(3278784496);
+emit_32(1130788880);
+emit_32(1083278329);
+emit_32(3278784496);
+emit_32(1131044864);
+emit_32(1086190728);
+emit_32(3278784496);
+emit_32(1131300848);
+emit_32(1088421406);
+emit_32(3278784496);
+emit_32(1131556897);
+emit_32(1090737280);
+emit_32(3278784496);
+emit_32(1131812880);
+emit_32(1092161257);
+emit_32(3278784496);
+emit_32(1132068864);
+emit_32(1094162946);
+emit_32(3278784496);
+emit_32(1081737216);
+emit_32(1087170664);
+emit_32(3279040545);
+emit_32(1090125824);
+emit_32(1090282922);
+emit_32(3279040545);
+emit_32(1094418484);
+emit_32(1091155117);
+emit_32(3279040545);
+emit_32(1098514432);
+emit_32(1091115921);
+emit_32(3279040545);
+emit_32(1100759066);
+emit_32(1091154351);
+emit_32(3279040545);
+emit_32(1102807040);
+emit_32(1091182076);
+emit_32(3279040545);
+emit_32(1104855066);
+emit_32(1090880379);
+emit_32(3279040545);
+emit_32(1106903040);
+emit_32(1089488437);
+emit_32(3279040545);
+emit_32(1108123661);
+emit_32(1089764611);
+emit_32(3279040545);
+emit_32(1109147648);
+emit_32(1090012599);
+emit_32(3279040545);
+emit_32(1110171661);
+emit_32(1089610386);
+emit_32(3279040545);
+emit_32(1111195648);
+emit_32(1090497943);
+emit_32(3279040545);
+emit_32(1112219661);
+emit_32(1092221833);
+emit_32(3279040545);
+emit_32(1113243648);
+emit_32(1091868673);
+emit_32(3279040545);
+emit_32(1114267661);
+emit_32(1093013812);
+emit_32(3279040545);
+emit_32(1115291648);
+emit_32(1093957635);
+emit_32(3279040545);
+emit_32(1116000263);
+emit_32(1095032950);
+emit_32(3279040545);
+emit_32(1116512256);
+emit_32(1096314729);
+emit_32(3279040545);
+emit_32(1117024263);
+emit_32(1097345375);
+emit_32(3279040545);
+emit_32(1117536256);
+emit_32(1098078329);
+emit_32(3279040545);
+emit_32(1118048263);
+emit_32(1098803524);
+emit_32(3279040545);
+emit_32(1118560256);
+emit_32(1098341522);
+emit_32(3279040545);
+emit_32(1119072263);
+emit_32(1097352715);
+emit_32(3279040545);
+emit_32(1119584256);
+emit_32(1097048103);
+emit_32(3279040545);
+emit_32(1120096263);
+emit_32(1096764149);
+emit_32(3279040545);
+emit_32(1120608322);
+emit_32(1098722469);
+emit_32(3279040545);
+emit_32(1121120289);
+emit_32(1100309647);
+emit_32(3279040545);
+emit_32(1121632256);
+emit_32(1101387321);
+emit_32(3279040545);
+emit_32(1122144223);
+emit_32(1101809739);
+emit_32(3279040545);
+emit_32(1122656322);
+emit_32(1101519703);
+emit_32(3279040545);
+emit_32(1123168289);
+emit_32(1101121821);
+emit_32(3279040545);
+emit_32(1123680256);
+emit_32(1100240545);
+emit_32(3279040545);
+emit_32(1124132848);
+emit_32(1099882352);
+emit_32(3279040545);
+emit_32(1124388897);
+emit_32(1099784048);
+emit_32(3279040545);
+emit_32(1124644880);
+emit_32(1099378563);
+emit_32(3279040545);
+emit_32(1124900864);
+emit_32(1097709545);
+emit_32(3279040545);
+emit_32(1125156848);
+emit_32(1095839095);
+emit_32(3279040545);
+emit_32(1125412897);
+emit_32(1095221589);
+emit_32(3279040545);
+emit_32(1125668880);
+emit_32(1094514219);
+emit_32(3279040545);
+emit_32(1125924864);
+emit_32(1094489263);
+emit_32(3279040545);
+emit_32(1126180848);
+emit_32(1094114397);
+emit_32(3279040545);
+emit_32(1126436897);
+emit_32(1093523525);
+emit_32(3279040545);
+emit_32(1126692880);
+emit_32(1092364020);
+emit_32(3279040545);
+emit_32(1126948864);
+emit_32(1090657578);
+emit_32(3279040545);
+emit_32(1127204848);
+emit_32(1088250991);
+emit_32(3279040545);
+emit_32(1127460897);
+emit_32(1086186701);
+emit_32(3279040545);
+emit_32(1127716880);
+emit_32(1085899685);
+emit_32(3279040545);
+emit_32(1127972864);
+emit_32(1085922502);
+emit_32(3279040545);
+emit_32(1128228848);
+emit_32(1083915444);
+emit_32(3279040545);
+emit_32(1128484897);
+emit_32(1082705891);
+emit_32(3279040545);
+emit_32(1128740880);
+emit_32(1082612966);
+emit_32(3279040545);
+emit_32(1128996864);
+emit_32(1082123763);
+emit_32(3279040545);
+emit_32(1129252848);
+emit_32(1079957992);
+emit_32(3279040545);
+emit_32(1129508897);
+emit_32(1080918362);
+emit_32(3279040545);
+emit_32(1129764880);
+emit_32(1080150846);
+emit_32(3279040545);
+emit_32(1130020864);
+emit_32(1079666824);
+emit_32(3279040545);
+emit_32(1130276848);
+emit_32(1075451758);
+emit_32(3279040545);
+emit_32(1130532897);
+emit_32(1079618505);
+emit_32(3279040545);
+emit_32(1130788880);
+emit_32(1083212437);
+emit_32(3279040545);
+emit_32(1131044864);
+emit_32(1086243597);
+emit_32(3279040545);
+emit_32(1131300848);
+emit_32(1089861499);
+emit_32(3279040545);
+emit_32(1131556897);
+emit_32(1091090891);
+emit_32(3279040545);
+emit_32(1131812880);
+emit_32(1092085392);
+emit_32(3279040545);
+emit_32(1132068864);
+emit_32(1094769128);
+emit_32(3279040545);
+emit_32(1081737216);
+emit_32(1086522393);
+emit_32(3279296528);
+emit_32(1090125824);
+emit_32(1089733279);
+emit_32(3279296528);
+emit_32(1094418484);
+emit_32(1090866549);
+emit_32(3279296528);
+emit_32(1098514432);
+emit_32(1091166221);
+emit_32(3279296528);
+emit_32(1100759066);
+emit_32(1091316692);
+emit_32(3279296528);
+emit_32(1102807040);
+emit_32(1090303012);
+emit_32(3279296528);
+emit_32(1104855066);
+emit_32(1090054898);
+emit_32(3279296528);
+emit_32(1106903040);
+emit_32(1089282496);
+emit_32(3279296528);
+emit_32(1108123661);
+emit_32(1087524370);
+emit_32(3279296528);
+emit_32(1109147648);
+emit_32(1086986471);
+emit_32(3279296528);
+emit_32(1110171661);
+emit_32(1089941925);
+emit_32(3279296528);
+emit_32(1111195648);
+emit_32(1091445195);
+emit_32(3279296528);
+emit_32(1112219661);
+emit_32(1092661595);
+emit_32(3279296528);
+emit_32(1113243648);
+emit_32(1093449286);
+emit_32(3279296528);
+emit_32(1114267661);
+emit_32(1094451829);
+emit_32(3279296528);
+emit_32(1115291648);
+emit_32(1095908406);
+emit_32(3279296528);
+emit_32(1116000263);
+emit_32(1095897606);
+emit_32(3279296528);
+emit_32(1116512256);
+emit_32(1097742156);
+emit_32(3279296528);
+emit_32(1117024263);
+emit_32(1098429917);
+emit_32(3279296528);
+emit_32(1117536256);
+emit_32(1099162819);
+emit_32(3279296528);
+emit_32(1118048263);
+emit_32(1099463446);
+emit_32(3279296528);
+emit_32(1118560256);
+emit_32(1099555196);
+emit_32(3279296528);
+emit_32(1119072263);
+emit_32(1099132672);
+emit_32(3279296528);
+emit_32(1119584256);
+emit_32(1099075420);
+emit_32(3279296528);
+emit_32(1120096263);
+emit_32(1099448871);
+emit_32(3279296528);
+emit_32(1120608322);
+emit_32(1099721553);
+emit_32(3279296528);
+emit_32(1121120289);
+emit_32(1101033321);
+emit_32(3279296528);
+emit_32(1121632256);
+emit_32(1101927337);
+emit_32(3279296528);
+emit_32(1122144223);
+emit_32(1102231686);
+emit_32(3279296528);
+emit_32(1122656322);
+emit_32(1102467092);
+emit_32(3279296528);
+emit_32(1123168289);
+emit_32(1101898711);
+emit_32(3279296528);
+emit_32(1123680256);
+emit_32(1101260390);
+emit_32(3279296528);
+emit_32(1124132848);
+emit_32(1100638480);
+emit_32(3279296528);
+emit_32(1124388897);
+emit_32(1100231685);
+emit_32(3279296528);
+emit_32(1124644880);
+emit_32(1099651036);
+emit_32(3279296528);
+emit_32(1124900864);
+emit_32(1097614020);
+emit_32(3279296528);
+emit_32(1125156848);
+emit_32(1096696726);
+emit_32(3279296528);
+emit_32(1125412897);
+emit_32(1094775629);
+emit_32(3279296528);
+emit_32(1125668880);
+emit_32(1094539595);
+emit_32(3279296528);
+emit_32(1125924864);
+emit_32(1095046372);
+emit_32(3279296528);
+emit_32(1126180848);
+emit_32(1095477441);
+emit_32(3279296528);
+emit_32(1126436897);
+emit_32(1093641594);
+emit_32(3279296528);
+emit_32(1126692880);
+emit_32(1092818357);
+emit_32(3279296528);
+emit_32(1126948864);
+emit_32(1090737490);
+emit_32(3279296528);
+emit_32(1127204848);
+emit_32(1089918898);
+emit_32(3279296528);
+emit_32(1127460897);
+emit_32(1089673426);
+emit_32(3279296528);
+emit_32(1127716880);
+emit_32(1088381686);
+emit_32(3279296528);
+emit_32(1127972864);
+emit_32(1088024583);
+emit_32(3279296528);
+emit_32(1128228848);
+emit_32(1086615842);
+emit_32(3279296528);
+emit_32(1128484897);
+emit_32(1083021134);
+emit_32(3279296528);
+emit_32(1128740880);
+emit_32(1082006448);
+emit_32(3279296528);
+emit_32(1128996864);
+emit_32(1082259554);
+emit_32(3279296528);
+emit_32(1129252848);
+emit_32(1081019948);
+emit_32(3279296528);
+emit_32(1129508897);
+emit_32(1083076688);
+emit_32(3279296528);
+emit_32(1129764880);
+emit_32(1079712290);
+emit_32(3279296528);
+emit_32(1130020864);
+emit_32(1076696460);
+emit_32(3279296528);
+emit_32(1130276848);
+emit_32(1081628248);
+emit_32(3279296528);
+emit_32(1130532897);
+emit_32(1083251486);
+emit_32(3279296528);
+emit_32(1130788880);
+emit_32(1085680051);
+emit_32(3279296528);
+emit_32(1131044864);
+emit_32(1086814757);
+emit_32(3279296528);
+emit_32(1131300848);
+emit_32(1089239043);
+emit_32(3279296528);
+emit_32(1131556897);
+emit_32(1091530717);
+emit_32(3279296528);
+emit_32(1131812880);
+emit_32(1093644321);
+emit_32(3279296528);
+emit_32(1132068864);
+emit_32(1095779536);
+emit_32(3279296528);
+emit_32(1081737216);
+emit_32(1086994839);
+emit_32(3279552512);
+emit_32(1090125824);
+emit_32(1088197052);
+emit_32(3279552512);
+emit_32(1094418484);
+emit_32(1091183439);
+emit_32(3279552512);
+emit_32(1098514432);
+emit_32(1091864132);
+emit_32(3279552512);
+emit_32(1100759066);
+emit_32(1091623966);
+emit_32(3279552512);
+emit_32(1102807040);
+emit_32(1091056907);
+emit_32(3279552512);
+emit_32(1104855066);
+emit_32(1090799639);
+emit_32(3279552512);
+emit_32(1106903040);
+emit_32(1090240475);
+emit_32(3279552512);
+emit_32(1108123661);
+emit_32(1087500672);
+emit_32(3279552512);
+emit_32(1109147648);
+emit_32(1087952231);
+emit_32(3279552512);
+emit_32(1110171661);
+emit_32(1091227636);
+emit_32(3279552512);
+emit_32(1111195648);
+emit_32(1092866173);
+emit_32(3279552512);
+emit_32(1112219661);
+emit_32(1094198074);
+emit_32(3279552512);
+emit_32(1113243648);
+emit_32(1095474505);
+emit_32(3279552512);
+emit_32(1114267661);
+emit_32(1097295462);
+emit_32(3279552512);
+emit_32(1115291648);
+emit_32(1098629985);
+emit_32(3279552512);
+emit_32(1116000263);
+emit_32(1098063859);
+emit_32(3279552512);
+emit_32(1116512256);
+emit_32(1098990748);
+emit_32(3279552512);
+emit_32(1117024263);
+emit_32(1099487406);
+emit_32(3279552512);
+emit_32(1117536256);
+emit_32(1099589956);
+emit_32(3279552512);
+emit_32(1118048263);
+emit_32(1100319660);
+emit_32(3279552512);
+emit_32(1118560256);
+emit_32(1100278032);
+emit_32(3279552512);
+emit_32(1119072263);
+emit_32(1099978821);
+emit_32(3279552512);
+emit_32(1119584256);
+emit_32(1100109840);
+emit_32(3279552512);
+emit_32(1120096263);
+emit_32(1100236089);
+emit_32(3279552512);
+emit_32(1120608322);
+emit_32(1100377385);
+emit_32(3279552512);
+emit_32(1121120289);
+emit_32(1102160173);
+emit_32(3279552512);
+emit_32(1121632256);
+emit_32(1103122924);
+emit_32(3279552512);
+emit_32(1122144223);
+emit_32(1103474721);
+emit_32(3279552512);
+emit_32(1122656322);
+emit_32(1103248805);
+emit_32(3279552512);
+emit_32(1123168289);
+emit_32(1102632819);
+emit_32(3279552512);
+emit_32(1123680256);
+emit_32(1102047399);
+emit_32(3279552512);
+emit_32(1124132848);
+emit_32(1101668391);
+emit_32(3279552512);
+emit_32(1124388897);
+emit_32(1100761740);
+emit_32(3279552512);
+emit_32(1124644880);
+emit_32(1100232943);
+emit_32(3279552512);
+emit_32(1124900864);
+emit_32(1098887306);
+emit_32(3279552512);
+emit_32(1125156848);
+emit_32(1097709860);
+emit_32(3279552512);
+emit_32(1125412897);
+emit_32(1096144126);
+emit_32(3279552512);
+emit_32(1125668880);
+emit_32(1095560803);
+emit_32(3279552512);
+emit_32(1125924864);
+emit_32(1096148740);
+emit_32(3279552512);
+emit_32(1126180848);
+emit_32(1095494428);
+emit_32(3279552512);
+emit_32(1126436897);
+emit_32(1093780950);
+emit_32(3279552512);
+emit_32(1126692880);
+emit_32(1092196667);
+emit_32(3279552512);
+emit_32(1126948864);
+emit_32(1091446736);
+emit_32(3279552512);
+emit_32(1127204848);
+emit_32(1090928352);
+emit_32(3279552512);
+emit_32(1127460897);
+emit_32(1090343508);
+emit_32(3279552512);
+emit_32(1127716880);
+emit_32(1089285495);
+emit_32(3279552512);
+emit_32(1127972864);
+emit_32(1088381665);
+emit_32(3279552512);
+emit_32(1128228848);
+emit_32(1088857949);
+emit_32(3279552512);
+emit_32(1128484897);
+emit_32(1086741545);
+emit_32(3279552512);
+emit_32(1128740880);
+emit_32(1082250913);
+emit_32(3279552512);
+emit_32(1128996864);
+emit_32(1083512120);
+emit_32(3279552512);
+emit_32(1129252848);
+emit_32(1081116417);
+emit_32(3279552512);
+emit_32(1129508897);
+emit_32(1082497517);
+emit_32(3279552512);
+emit_32(1129764880);
+emit_32(1082917200);
+emit_32(3279552512);
+emit_32(1130020864);
+emit_32(1083584702);
+emit_32(3279552512);
+emit_32(1130276848);
+emit_32(1086066325);
+emit_32(3279552512);
+emit_32(1130532897);
+emit_32(1086918125);
+emit_32(3279552512);
+emit_32(1130788880);
+emit_32(1088867533);
+emit_32(3279552512);
+emit_32(1131044864);
+emit_32(1089594720);
+emit_32(3279552512);
+emit_32(1131300848);
+emit_32(1090391575);
+emit_32(3279552512);
+emit_32(1131556897);
+emit_32(1092483358);
+emit_32(3279552512);
+emit_32(1131812880);
+emit_32(1094289405);
+emit_32(3279552512);
+emit_32(1132068864);
+emit_32(1096120323);
+emit_32(3279552512);
+emit_start(Landscape08Vtx)
+emit_32(3279552512);
+emit_32(1106761482);
+emit_32(3271616496);
+emit_32(3279552512);
+emit_32(1106982994);
+emit_32(3271163904);
+emit_32(3279296528);
+emit_32(1107171947);
+emit_32(3271616496);
+emit_32(3279296528);
+emit_32(1106990334);
+emit_32(3271163904);
+emit_32(3279040545);
+emit_32(1107445390);
+emit_32(3271616496);
+emit_32(3279040545);
+emit_32(1107378569);
+emit_32(3271163904);
+emit_32(3278784496);
+emit_32(1107535462);
+emit_32(3271616496);
+emit_32(3278784496);
+emit_32(1107553734);
+emit_32(3271163904);
+emit_32(3278528512);
+emit_32(1107451314);
+emit_32(3271616496);
+emit_32(3278528512);
+emit_32(1107478761);
+emit_32(3271163904);
+emit_32(3278272528);
+emit_32(1106913945);
+emit_32(3271616496);
+emit_32(3278272528);
+emit_32(1106962389);
+emit_32(3271163904);
+emit_32(3278016545);
+emit_32(1106520939);
+emit_32(3271616496);
+emit_32(3278016545);
+emit_32(1105953607);
+emit_32(3271163904);
+emit_32(3277760496);
+emit_32(1106354163);
+emit_32(3271616496);
+emit_32(3277760496);
+emit_32(1105995497);
+emit_32(3271163904);
+emit_32(3277504512);
+emit_32(1106487909);
+emit_32(3271616496);
+emit_32(3277504512);
+emit_32(1105958325);
+emit_32(3271163904);
+emit_32(3277248528);
+emit_32(1106611588);
+emit_32(3271616496);
+emit_32(3277248528);
+emit_32(1106168041);
+emit_32(3271163904);
+emit_32(3276992545);
+emit_32(1106511659);
+emit_32(3271616496);
+emit_32(3276992545);
+emit_32(1106461590);
+emit_32(3271163904);
+emit_32(3276736496);
+emit_32(1106390601);
+emit_32(3271616496);
+emit_32(3276736496);
+emit_32(1106400248);
+emit_32(3271163904);
+emit_32(3276480512);
+emit_32(1105922621);
+emit_32(3271616496);
+emit_32(3276480512);
+emit_32(1105590904);
+emit_32(3271163904);
+emit_32(3276224528);
+emit_32(1105564690);
+emit_32(3271616496);
+emit_32(3276224528);
+emit_32(1105294315);
+emit_32(3271163904);
+emit_32(3275968545);
+emit_32(1105186941);
+emit_32(3271616496);
+emit_32(3275968545);
+emit_32(1104823661);
+emit_32(3271163904);
+emit_32(3275712496);
+emit_32(1104211817);
+emit_32(3271616496);
+emit_32(3275712496);
+emit_32(1103994185);
+emit_32(3271163904);
+emit_32(3275456512);
+emit_32(1103031068);
+emit_32(3271616496);
+emit_32(3275456512);
+emit_32(1102728764);
+emit_32(3271163904);
+emit_32(3275200528);
+emit_32(1102027162);
+emit_32(3271616496);
+emit_32(3275200528);
+emit_32(1102137996);
+emit_32(3271163904);
+emit_32(3274944545);
+emit_32(1100836923);
+emit_32(3271616496);
+emit_32(3274944545);
+emit_32(1101349782);
+emit_32(3271163904);
+emit_32(3274688496);
+emit_32(1099615804);
+emit_32(3271616496);
+emit_32(3274688496);
+emit_32(1100398356);
+emit_32(3271163904);
+emit_32(3274432512);
+emit_32(1098688915);
+emit_32(3271616496);
+emit_32(3274432512);
+emit_32(1099098489);
+emit_32(3271163904);
+emit_32(3274176528);
+emit_32(1097203188);
+emit_32(3271616496);
+emit_32(3274176528);
+emit_32(1097575747);
+emit_32(3271163904);
+emit_32(3273920545);
+emit_32(1095228300);
+emit_32(3271616496);
+emit_32(3273920545);
+emit_32(1095747135);
+emit_32(3271163904);
+emit_32(3273664496);
+emit_32(1093720657);
+emit_32(3271616496);
+emit_32(3273664496);
+emit_32(1094011427);
+emit_32(3271163904);
+emit_32(3273408512);
+emit_32(1091725553);
+emit_32(3271616496);
+emit_32(3273408512);
+emit_32(1092817099);
+emit_32(3271163904);
+emit_32(3273152528);
+emit_32(1087752037);
+emit_32(3271616496);
+emit_32(3273152528);
+emit_32(1090935010);
+emit_32(3271163904);
+emit_32(3272896545);
+emit_32(1085425309);
+emit_32(3271616496);
+emit_32(3272896545);
+emit_32(1086813205);
+emit_32(3271163904);
+emit_32(3272640496);
+emit_32(1084703847);
+emit_32(3271616496);
+emit_32(3272640496);
+emit_32(1085254874);
+emit_32(3271163904);
+emit_32(3272384512);
+emit_32(1086064186);
+emit_32(3271616496);
+emit_32(3272384512);
+emit_32(1084610859);
+emit_32(3271163904);
+emit_32(3272128528);
+emit_32(1088120192);
+emit_32(3271616496);
+emit_32(3272128528);
+emit_32(1085403226);
+emit_32(3271163904);
+emit_32(3271872545);
+emit_32(1088130111);
+emit_32(3271616496);
+emit_32(3271872545);
+emit_32(1085803741);
+emit_32(3271163904);
+emit_32(3271616496);
+emit_32(1088638754);
+emit_32(3271616496);
+emit_32(3271616496);
+emit_32(1084901902);
+emit_32(3271163904);
+emit_32(3271163904);
+emit_32(1089569596);
+emit_32(3271616496);
+emit_32(3271163904);
+emit_32(1086653402);
+emit_32(3271163904);
+emit_32(3270651937);
+emit_32(1090542371);
+emit_32(3271616496);
+emit_32(3270651937);
+emit_32(1089541201);
+emit_32(3271163904);
+emit_32(3270139970);
+emit_32(1091253725);
+emit_32(3271616496);
+emit_32(3270139970);
+emit_32(1090924587);
+emit_32(3271163904);
+emit_32(3269627871);
+emit_32(1091983785);
+emit_32(3271616496);
+emit_32(3269627871);
+emit_32(1091193002);
+emit_32(3271163904);
+emit_32(3269115904);
+emit_32(1091362609);
+emit_32(3271616496);
+emit_32(3269115904);
+emit_32(1091042709);
+emit_32(3271163904);
+emit_32(3268603937);
+emit_32(1092022341);
+emit_32(3271616496);
+emit_32(3268603937);
+emit_32(1091824318);
+emit_32(3271163904);
+emit_32(3268091970);
+emit_32(1093526356);
+emit_32(3271616496);
+emit_32(3268091970);
+emit_32(1094207721);
+emit_32(3271163904);
+emit_32(3267579911);
+emit_32(1095594567);
+emit_32(3271616496);
+emit_32(3267579911);
+emit_32(1096193199);
+emit_32(3271163904);
+emit_32(3267067904);
+emit_32(1097671796);
+emit_32(3271616496);
+emit_32(3267067904);
+emit_32(1098383045);
+emit_32(3271163904);
+emit_32(3266555911);
+emit_32(1099231658);
+emit_32(3271616496);
+emit_32(3266555911);
+emit_32(1099615542);
+emit_32(3271163904);
+emit_32(3266043904);
+emit_32(1101135662);
+emit_32(3271616496);
+emit_32(3266043904);
+emit_32(1101433038);
+emit_32(3271163904);
+emit_32(3265531911);
+emit_32(1102943093);
+emit_32(3271616496);
+emit_32(3265531911);
+emit_32(1103595045);
+emit_32(3271163904);
+emit_32(3265019904);
+emit_32(1104383889);
+emit_32(3271616496);
+emit_32(3265019904);
+emit_32(1105129950);
+emit_32(3271163904);
+emit_32(3264507911);
+emit_32(1105613344);
+emit_32(3271616496);
+emit_32(3264507911);
+emit_32(1106326061);
+emit_32(3271163904);
+emit_32(3263995904);
+emit_32(1106984409);
+emit_32(3271616496);
+emit_32(3263995904);
+emit_32(1107411652);
+emit_32(3271163904);
+emit_32(3263483911);
+emit_32(1107639822);
+emit_32(3271616496);
+emit_32(3263483911);
+emit_32(1107887050);
+emit_32(3271163904);
+emit_32(3262775296);
+emit_32(1108306507);
+emit_32(3271616496);
+emit_32(3262775296);
+emit_32(1108492236);
+emit_32(3271163904);
+emit_32(3261751309);
+emit_32(1108863825);
+emit_32(3271616496);
+emit_32(3261751309);
+emit_32(1109105757);
+emit_32(3271163904);
+emit_32(3260727296);
+emit_32(1109236279);
+emit_32(3271616496);
+emit_32(3260727296);
+emit_32(1109424656);
+emit_32(3271163904);
+emit_32(3259703309);
+emit_32(1109566004);
+emit_32(3271616496);
+emit_32(3259703309);
+emit_32(1109901784);
+emit_32(3271163904);
+emit_32(3258679296);
+emit_32(1109626611);
+emit_32(3271616496);
+emit_32(3258679296);
+emit_32(1109885321);
+emit_32(3271163904);
+emit_32(3257655309);
+emit_32(1109381454);
+emit_32(3271616496);
+emit_32(3257655309);
+emit_32(1109822564);
+emit_32(3271163904);
+emit_32(3256631296);
+emit_32(1109416817);
+emit_32(3271616496);
+emit_32(3256631296);
+emit_32(1109824163);
+emit_32(3271163904);
+emit_32(3255607309);
+emit_32(1109214704);
+emit_32(3271616496);
+emit_32(3255607309);
+emit_32(1109730315);
+emit_32(3271163904);
+emit_32(3254386688);
+emit_32(1109356052);
+emit_32(3271616496);
+emit_32(3254386688);
+emit_32(1109803113);
+emit_32(3271163904);
+emit_32(3252338714);
+emit_32(1109796533);
+emit_32(3271616496);
+emit_32(3252338714);
+emit_32(1109995186);
+emit_32(3271163904);
+emit_32(3250290688);
+emit_32(1110456690);
+emit_32(3271616496);
+emit_32(3250290688);
+emit_32(1110434618);
+emit_32(3271163904);
+emit_32(3248242714);
+emit_32(1110816797);
+emit_32(3271616496);
+emit_32(3248242714);
+emit_32(1111024783);
+emit_32(3271163904);
+emit_32(3245998080);
+emit_32(1111345699);
+emit_32(3271616496);
+emit_32(3245998080);
+emit_32(1111309785);
+emit_32(3271163904);
+emit_32(3241902132);
+emit_32(1111491032);
+emit_32(3271616496);
+emit_32(3241902132);
+emit_32(1111384208);
+emit_32(3271163904);
+emit_32(3237609472);
+emit_32(1111509356);
+emit_32(3271616496);
+emit_32(3237609472);
+emit_32(1111783952);
+emit_32(3271163904);
+emit_32(3229220864);
+emit_32(1111680693);
+emit_32(3271616496);
+emit_32(3229220864);
+emit_32(1111918930);
+emit_32(3271163904);
+emit_32(0);
+emit_32(1111962419);
+emit_32(3271616496);
+emit_32(0);
+emit_32(1112106100);
+emit_32(3271163904);
+emit_32(1081737216);
+emit_32(1112138475);
+emit_32(3271616496);
+emit_32(1081737216);
+emit_32(1112094042);
+emit_32(3271163904);
+emit_32(3279552512);
+emit_32(1106831999);
+emit_32(3271872545);
+emit_32(3279296528);
+emit_32(1107221283);
+emit_32(3271872545);
+emit_32(3279040545);
+emit_32(1107491448);
+emit_32(3271872545);
+emit_32(3278784496);
+emit_32(1107603856);
+emit_32(3271872545);
+emit_32(3278528512);
+emit_32(1107347427);
+emit_32(3271872545);
+emit_32(3278272528);
+emit_32(1107241678);
+emit_32(3271872545);
+emit_32(3278016545);
+emit_32(1107331016);
+emit_32(3271872545);
+emit_32(3277760496);
+emit_32(1107339012);
+emit_32(3271872545);
+emit_32(3277504512);
+emit_32(1106970935);
+emit_32(3271872545);
+emit_32(3277248528);
+emit_32(1106766096);
+emit_32(3271872545);
+emit_32(3276992545);
+emit_32(1106540075);
+emit_32(3271872545);
+emit_32(3276736496);
+emit_32(1106320661);
+emit_32(3271872545);
+emit_32(3276480512);
+emit_32(1106168093);
+emit_32(3271872545);
+emit_32(3276224528);
+emit_32(1105508591);
+emit_32(3271872545);
+emit_32(3275968545);
+emit_32(1104919711);
+emit_32(3271872545);
+emit_32(3275712496);
+emit_32(1103890062);
+emit_32(3271872545);
+emit_32(3275456512);
+emit_32(1102724412);
+emit_32(3271872545);
+emit_32(3275200528);
+emit_32(1101678300);
+emit_32(3271872545);
+emit_32(3274944545);
+emit_32(1100687815);
+emit_32(3271872545);
+emit_32(3274688496);
+emit_32(1100014525);
+emit_32(3271872545);
+emit_32(3274432512);
+emit_32(1099108503);
+emit_32(3271872545);
+emit_32(3274176528);
+emit_32(1097338769);
+emit_32(3271872545);
+emit_32(3273920545);
+emit_32(1095563634);
+emit_32(3271872545);
+emit_32(3273664496);
+emit_32(1093020942);
+emit_32(3271872545);
+emit_32(3273408512);
+emit_32(1090382432);
+emit_32(3271872545);
+emit_32(3273152528);
+emit_32(1088955592);
+emit_32(3271872545);
+emit_32(3272896545);
+emit_32(1086743621);
+emit_32(3271872545);
+emit_32(3272640496);
+emit_32(1086106171);
+emit_32(3271872545);
+emit_32(3272384512);
+emit_32(1087622538);
+emit_32(3271872545);
+emit_32(3272128528);
+emit_32(1089541390);
+emit_32(3271872545);
+emit_32(3271872545);
+emit_32(1090739493);
+emit_32(3271872545);
+emit_32(3271616496);
+emit_32(1091296192);
+emit_32(3271872545);
+emit_32(3271163904);
+emit_32(1091536652);
+emit_32(3271872545);
+emit_32(3270651937);
+emit_32(1092000751);
+emit_32(3271872545);
+emit_32(3270139970);
+emit_32(1092665265);
+emit_32(3271872545);
+emit_32(3269627871);
+emit_32(1092064683);
+emit_32(3271872545);
+emit_32(3269115904);
+emit_32(1092005921);
+emit_32(3271872545);
+emit_32(3268603937);
+emit_32(1092949220);
+emit_32(3271872545);
+emit_32(3268091970);
+emit_32(1093979446);
+emit_32(3271872545);
+emit_32(3267579911);
+emit_32(1095270977);
+emit_32(3271872545);
+emit_32(3267067904);
+emit_32(1097543031);
+emit_32(3271872545);
+emit_32(3266555911);
+emit_32(1099248173);
+emit_32(3271872545);
+emit_32(3266043904);
+emit_32(1100580441);
+emit_32(3271872545);
+emit_32(3265531911);
+emit_32(1102805677);
+emit_32(3271872545);
+emit_32(3265019904);
+emit_32(1104235935);
+emit_32(3271872545);
+emit_32(3264507911);
+emit_32(1105586553);
+emit_32(3271872545);
+emit_32(3263995904);
+emit_32(1106838605);
+emit_32(3271872545);
+emit_32(3263483911);
+emit_32(1107360534);
+emit_32(3271872545);
+emit_32(3262775296);
+emit_32(1107828487);
+emit_32(3271872545);
+emit_32(3261751309);
+emit_32(1108377181);
+emit_32(3271872545);
+emit_32(3260727296);
+emit_32(1108949179);
+emit_32(3271872545);
+emit_32(3259703309);
+emit_32(1109077157);
+emit_32(3271872545);
+emit_32(3258679296);
+emit_32(1109165841);
+emit_32(3271872545);
+emit_32(3257655309);
+emit_32(1109169589);
+emit_32(3271872545);
+emit_32(3256631296);
+emit_32(1108993167);
+emit_32(3271872545);
+emit_32(3255607309);
+emit_32(1108949362);
+emit_32(3271872545);
+emit_32(3254386688);
+emit_32(1109262310);
+emit_32(3271872545);
+emit_32(3252338714);
+emit_32(1109890250);
+emit_32(3271872545);
+emit_32(3250290688);
+emit_32(1110249177);
+emit_32(3271872545);
+emit_32(3248242714);
+emit_32(1110644779);
+emit_32(3271872545);
+emit_32(3245998080);
+emit_32(1111031572);
+emit_32(3271872545);
+emit_32(3241902132);
+emit_32(1111347089);
+emit_32(3271872545);
+emit_32(3237609472);
+emit_32(1111265300);
+emit_32(3271872545);
+emit_32(3229220864);
+emit_32(1111507023);
+emit_32(3271872545);
+emit_32(0);
+emit_32(1111638698);
+emit_32(3271872545);
+emit_32(1081737216);
+emit_32(1111780334);
+emit_32(3271872545);
+emit_32(3279552512);
+emit_32(1106638851);
+emit_32(3272128528);
+emit_32(3279296528);
+emit_32(1106692434);
+emit_32(3272128528);
+emit_32(3279040545);
+emit_32(1107345539);
+emit_32(3272128528);
+emit_32(3278784496);
+emit_32(1107597459);
+emit_32(3272128528);
+emit_32(3278528512);
+emit_32(1107379225);
+emit_32(3272128528);
+emit_32(3278272528);
+emit_32(1107456950);
+emit_32(3272128528);
+emit_32(3278016545);
+emit_32(1107643492);
+emit_32(3272128528);
+emit_32(3277760496);
+emit_32(1107464788);
+emit_32(3272128528);
+emit_32(3277504512);
+emit_32(1107237641);
+emit_32(3272128528);
+emit_32(3277248528);
+emit_32(1107040666);
+emit_32(3272128528);
+emit_32(3276992545);
+emit_32(1106355945);
+emit_32(3272128528);
+emit_32(3276736496);
+emit_32(1106248938);
+emit_32(3272128528);
+emit_32(3276480512);
+emit_32(1106022184);
+emit_32(3272128528);
+emit_32(3276224528);
+emit_32(1105264378);
+emit_32(3272128528);
+emit_32(3275968545);
+emit_32(1104551084);
+emit_32(3272128528);
+emit_32(3275712496);
+emit_32(1103522693);
+emit_32(3272128528);
+emit_32(3275456512);
+emit_32(1102465624);
+emit_32(3272128528);
+emit_32(3275200528);
+emit_32(1101580416);
+emit_32(3272128528);
+emit_32(3274944545);
+emit_32(1100781558);
+emit_32(3272128528);
+emit_32(3274688496);
+emit_32(1099917584);
+emit_32(3272128528);
+emit_32(3274432512);
+emit_32(1098955253);
+emit_32(3272128528);
+emit_32(3274176528);
+emit_32(1097496474);
+emit_32(3272128528);
+emit_32(3273920545);
+emit_32(1095188768);
+emit_32(3272128528);
+emit_32(3273664496);
+emit_32(1092550792);
+emit_32(3272128528);
+emit_32(3273408512);
+emit_32(1090256602);
+emit_32(3272128528);
+emit_32(3273152528);
+emit_32(1088560866);
+emit_32(3272128528);
+emit_32(3272896545);
+emit_32(1086795610);
+emit_32(3272128528);
+emit_32(3272640496);
+emit_32(1087160745);
+emit_32(3272128528);
+emit_32(3272384512);
+emit_32(1088465991);
+emit_32(3272128528);
+emit_32(3272128528);
+emit_32(1090214701);
+emit_32(3272128528);
+emit_32(3271872545);
+emit_32(1091916110);
+emit_32(3272128528);
+emit_32(3271616496);
+emit_32(1093188714);
+emit_32(3272128528);
+emit_32(3271163904);
+emit_32(1092821503);
+emit_32(3272128528);
+emit_32(3270651937);
+emit_32(1092462943);
+emit_32(3272128528);
+emit_32(3270139970);
+emit_32(1092871730);
+emit_32(3272128528);
+emit_32(3269627871);
+emit_32(1092567339);
+emit_32(3272128528);
+emit_32(3269115904);
+emit_32(1091624103);
+emit_32(3272128528);
+emit_32(3268603937);
+emit_32(1092971030);
+emit_32(3272128528);
+emit_32(3268091970);
+emit_32(1093964556);
+emit_32(3272128528);
+emit_32(3267579911);
+emit_32(1095084959);
+emit_32(3272128528);
+emit_32(3267067904);
+emit_32(1096871523);
+emit_32(3272128528);
+emit_32(3266555911);
+emit_32(1098883740);
+emit_32(3272128528);
+emit_32(3266043904);
+emit_32(1100410939);
+emit_32(3272128528);
+emit_32(3265531911);
+emit_32(1102172809);
+emit_32(3272128528);
+emit_32(3265019904);
+emit_32(1103650777);
+emit_32(3272128528);
+emit_32(3264507911);
+emit_32(1105013087);
+emit_32(3272128528);
+emit_32(3263995904);
+emit_32(1105804657);
+emit_32(3272128528);
+emit_32(3263483911);
+emit_32(1106638642);
+emit_32(3272128528);
+emit_32(3262775296);
+emit_32(1107472469);
+emit_32(3272128528);
+emit_32(3261751309);
+emit_32(1107957436);
+emit_32(3272128528);
+emit_32(3260727296);
+emit_32(1108447173);
+emit_32(3272128528);
+emit_32(3259703309);
+emit_32(1108395845);
+emit_32(3272128528);
+emit_32(3258679296);
+emit_32(1108480990);
+emit_32(3272128528);
+emit_32(3257655309);
+emit_32(1108416004);
+emit_32(3272128528);
+emit_32(3256631296);
+emit_32(1108454539);
+emit_32(3272128528);
+emit_32(3255607309);
+emit_32(1108650702);
+emit_32(3272128528);
+emit_32(3254386688);
+emit_32(1108972221);
+emit_32(3272128528);
+emit_32(3252338714);
+emit_32(1109614028);
+emit_32(3272128528);
+emit_32(3250290688);
+emit_32(1110107567);
+emit_32(3272128528);
+emit_32(3248242714);
+emit_32(1110378204);
+emit_32(3272128528);
+emit_32(3245998080);
+emit_32(1110643966);
+emit_32(3272128528);
+emit_32(3241902132);
+emit_32(1110789770);
+emit_32(3272128528);
+emit_32(3237609472);
+emit_32(1111079780);
+emit_32(3272128528);
+emit_32(3229220864);
+emit_32(1111310572);
+emit_32(3272128528);
+emit_32(0);
+emit_32(1111599245);
+emit_32(3272128528);
+emit_32(1081737216);
+emit_32(1111464346);
+emit_32(3272128528);
+emit_32(3279552512);
+emit_32(1105805967);
+emit_32(3272384512);
+emit_32(3279296528);
+emit_32(1106518894);
+emit_32(3272384512);
+emit_32(3279040545);
+emit_32(1107073958);
+emit_32(3272384512);
+emit_32(3278784496);
+emit_32(1107138550);
+emit_32(3272384512);
+emit_32(3278528512);
+emit_32(1107533837);
+emit_32(3272384512);
+emit_32(3278272528);
+emit_32(1107630542);
+emit_32(3272384512);
+emit_32(3278016545);
+emit_32(1107506050);
+emit_32(3272384512);
+emit_32(3277760496);
+emit_32(1107593265);
+emit_32(3272384512);
+emit_32(3277504512);
+emit_32(1107310490);
+emit_32(3272384512);
+emit_32(3277248528);
+emit_32(1106912058);
+emit_32(3272384512);
+emit_32(3276992545);
+emit_32(1106372356);
+emit_32(3272384512);
+emit_32(3276736496);
+emit_32(1106038489);
+emit_32(3272384512);
+emit_32(3276480512);
+emit_32(1105442531);
+emit_32(3272384512);
+emit_32(3276224528);
+emit_32(1104607235);
+emit_32(3272384512);
+emit_32(3275968545);
+emit_32(1103592686);
+emit_32(3272384512);
+emit_32(3275712496);
+emit_32(1102531265);
+emit_32(3272384512);
+emit_32(3275456512);
+emit_32(1101975100);
+emit_32(3272384512);
+emit_32(3275200528);
+emit_32(1101237322);
+emit_32(3272384512);
+emit_32(3274944545);
+emit_32(1100189794);
+emit_32(3272384512);
+emit_32(3274688496);
+emit_32(1099519335);
+emit_32(3272384512);
+emit_32(3274432512);
+emit_32(1098076861);
+emit_32(3272384512);
+emit_32(3274176528);
+emit_32(1096265132);
+emit_32(3272384512);
+emit_32(3273920545);
+emit_32(1094474583);
+emit_32(3272384512);
+emit_32(3273664496);
+emit_32(1091850260);
+emit_32(3272384512);
+emit_32(3273408512);
+emit_32(1089607366);
+emit_32(3272384512);
+emit_32(3273152528);
+emit_32(1087214767);
+emit_32(3272384512);
+emit_32(3272896545);
+emit_32(1087594331);
+emit_32(3272384512);
+emit_32(3272640496);
+emit_32(1087250901);
+emit_32(3272384512);
+emit_32(3272384512);
+emit_32(1087478526);
+emit_32(3272384512);
+emit_32(3272128528);
+emit_32(1089739004);
+emit_32(3272384512);
+emit_32(3271872545);
+emit_32(1091784944);
+emit_32(3272384512);
+emit_32(3271616496);
+emit_32(1093147086);
+emit_32(3272384512);
+emit_32(3271163904);
+emit_32(1093336249);
+emit_32(3272384512);
+emit_32(3270651937);
+emit_32(1091955799);
+emit_32(3272384512);
+emit_32(3270139970);
+emit_32(1092128436);
+emit_32(3272384512);
+emit_32(3269627871);
+emit_32(1091415572);
+emit_32(3272384512);
+emit_32(3269115904);
+emit_32(1091890787);
+emit_32(3272384512);
+emit_32(3268603937);
+emit_32(1092277691);
+emit_32(3272384512);
+emit_32(3268091970);
+emit_32(1093164912);
+emit_32(3272384512);
+emit_32(3267579911);
+emit_32(1094506355);
+emit_32(3272384512);
+emit_32(3267067904);
+emit_32(1095937556);
+emit_32(3272384512);
+emit_32(3266555911);
+emit_32(1098124362);
+emit_32(3272384512);
+emit_32(3266043904);
+emit_32(1100012533);
+emit_32(3272384512);
+emit_32(3265531911);
+emit_32(1101424440);
+emit_32(3272384512);
+emit_32(3265019904);
+emit_32(1102978797);
+emit_32(3272384512);
+emit_32(3264507911);
+emit_32(1103996754);
+emit_32(3272384512);
+emit_32(3263995904);
+emit_32(1104943566);
+emit_32(3272384512);
+emit_32(3263483911);
+emit_32(1106152836);
+emit_32(3272384512);
+emit_32(3262775296);
+emit_32(1107158211);
+emit_32(3272384512);
+emit_32(3261751309);
+emit_32(1107529328);
+emit_32(3272384512);
+emit_32(3260727296);
+emit_32(1107846470);
+emit_32(3272384512);
+emit_32(3259703309);
+emit_32(1107994739);
+emit_32(3272384512);
+emit_32(3258679296);
+emit_32(1107829064);
+emit_32(3272384512);
+emit_32(3257655309);
+emit_32(1107762165);
+emit_32(3272384512);
+emit_32(3256631296);
+emit_32(1107865711);
+emit_32(3272384512);
+emit_32(3255607309);
+emit_32(1108367403);
+emit_32(3272384512);
+emit_32(3254386688);
+emit_32(1109093568);
+emit_32(3272384512);
+emit_32(3252338714);
+emit_32(1109542411);
+emit_32(3272384512);
+emit_32(3250290688);
+emit_32(1110096793);
+emit_32(3272384512);
+emit_32(3248242714);
+emit_32(1110312223);
+emit_32(3272384512);
+emit_32(3245998080);
+emit_32(1110368505);
+emit_32(3272384512);
+emit_32(3241902132);
+emit_32(1110406752);
+emit_32(3272384512);
+emit_32(3237609472);
+emit_32(1110868545);
+emit_32(3272384512);
+emit_32(3229220864);
+emit_32(1111168464);
+emit_32(3272384512);
+emit_32(0);
+emit_32(1111261315);
+emit_32(3272384512);
+emit_32(1081737216);
+emit_32(1111298697);
+emit_32(3272384512);
+emit_32(3279552512);
+emit_32(1105376733);
+emit_32(3272640496);
+emit_32(3279296528);
+emit_32(1106021659);
+emit_32(3272640496);
+emit_32(3279040545);
+emit_32(1106269805);
+emit_32(3272640496);
+emit_32(3278784496);
+emit_32(1106578978);
+emit_32(3272640496);
+emit_32(3278528512);
+emit_32(1107451288);
+emit_32(3272640496);
+emit_32(3278272528);
+emit_32(1107638616);
+emit_32(3272640496);
+emit_32(3278016545);
+emit_32(1107539132);
+emit_32(3272640496);
+emit_32(3277760496);
+emit_32(1107436844);
+emit_32(3272640496);
+emit_32(3277504512);
+emit_32(1107235701);
+emit_32(3272640496);
+emit_32(3277248528);
+emit_32(1107161462);
+emit_32(3272640496);
+emit_32(3276992545);
+emit_32(1106065280);
+emit_32(3272640496);
+emit_32(3276736496);
+emit_32(1105372171);
+emit_32(3272640496);
+emit_32(3276480512);
+emit_32(1104578662);
+emit_32(3272640496);
+emit_32(3276224528);
+emit_32(1103665876);
+emit_32(3272640496);
+emit_32(3275968545);
+emit_32(1102629464);
+emit_32(3272640496);
+emit_32(3275712496);
+emit_32(1101635885);
+emit_32(3272640496);
+emit_32(3275456512);
+emit_32(1101146882);
+emit_32(3272640496);
+emit_32(3275200528);
+emit_32(1100175848);
+emit_32(3272640496);
+emit_32(3274944545);
+emit_32(1099030961);
+emit_32(3272640496);
+emit_32(3274688496);
+emit_32(1097580151);
+emit_32(3272640496);
+emit_32(3274432512);
+emit_32(1096760374);
+emit_32(3272640496);
+emit_32(3274176528);
+emit_32(1095282721);
+emit_32(3272640496);
+emit_32(3273920545);
+emit_32(1093280465);
+emit_32(3272640496);
+emit_32(3273664496);
+emit_32(1091084065);
+emit_32(3272640496);
+emit_32(3273408512);
+emit_32(1089099247);
+emit_32(3272640496);
+emit_32(3273152528);
+emit_32(1087789576);
+emit_32(3272640496);
+emit_32(3272896545);
+emit_32(1085020140);
+emit_32(3272640496);
+emit_32(3272640496);
+emit_32(1085329784);
+emit_32(3272640496);
+emit_32(3272384512);
+emit_32(1086214027);
+emit_32(3272640496);
+emit_32(3272128528);
+emit_32(1088756363);
+emit_32(3272640496);
+emit_32(3271872545);
+emit_32(1091099217);
+emit_32(3272640496);
+emit_32(3271616496);
+emit_32(1092281151);
+emit_32(3272640496);
+emit_32(3271163904);
+emit_32(1092410891);
+emit_32(3272640496);
+emit_32(3270651937);
+emit_32(1092270707);
+emit_32(3272640496);
+emit_32(3270139970);
+emit_32(1092436770);
+emit_32(3272640496);
+emit_32(3269627871);
+emit_32(1091996431);
+emit_32(3272640496);
+emit_32(3269115904);
+emit_32(1092130995);
+emit_32(3272640496);
+emit_32(3268603937);
+emit_32(1092506794);
+emit_32(3272640496);
+emit_32(3268091970);
+emit_32(1093085115);
+emit_32(3272640496);
+emit_32(3267579911);
+emit_32(1094064590);
+emit_32(3272640496);
+emit_32(3267067904);
+emit_32(1096463103);
+emit_32(3272640496);
+emit_32(3266555911);
+emit_32(1098582275);
+emit_32(3272640496);
+emit_32(3266043904);
+emit_32(1099782894);
+emit_32(3272640496);
+emit_32(3265531911);
+emit_32(1101033216);
+emit_32(3272640496);
+emit_32(3265019904);
+emit_32(1102204423);
+emit_32(3272640496);
+emit_32(3264507911);
+emit_32(1103112962);
+emit_32(3272640496);
+emit_32(3263995904);
+emit_32(1104476688);
+emit_32(3272640496);
+emit_32(3263483911);
+emit_32(1105600027);
+emit_32(3272640496);
+emit_32(3262775296);
+emit_32(1106773279);
+emit_32(3272640496);
+emit_32(3261751309);
+emit_32(1107254942);
+emit_32(3272640496);
+emit_32(3260727296);
+emit_32(1107325721);
+emit_32(3272640496);
+emit_32(3259703309);
+emit_32(1107680454);
+emit_32(3272640496);
+emit_32(3258679296);
+emit_32(1107700272);
+emit_32(3272640496);
+emit_32(3257655309);
+emit_32(1107704204);
+emit_32(3272640496);
+emit_32(3256631296);
+emit_32(1107913946);
+emit_32(3272640496);
+emit_32(3255607309);
+emit_32(1108409896);
+emit_32(3272640496);
+emit_32(3254386688);
+emit_32(1108866499);
+emit_32(3272640496);
+emit_32(3252338714);
+emit_32(1109485866);
+emit_32(3272640496);
+emit_32(3250290688);
+emit_32(1110027901);
+emit_32(3272640496);
+emit_32(3248242714);
+emit_32(1110441984);
+emit_32(3272640496);
+emit_32(3245998080);
+emit_32(1110489956);
+emit_32(3272640496);
+emit_32(3241902132);
+emit_32(1110446834);
+emit_32(3272640496);
+emit_32(3237609472);
+emit_32(1110725100);
+emit_32(3272640496);
+emit_32(3229220864);
+emit_32(1110855752);
+emit_32(3272640496);
+emit_32(0);
+emit_32(1110654897);
+emit_32(3272640496);
+emit_32(1081737216);
+emit_32(1110766990);
+emit_32(3272640496);
+emit_32(3279552512);
+emit_32(1104945611);
+emit_32(3272896545);
+emit_32(3279296528);
+emit_32(1105445886);
+emit_32(3272896545);
+emit_32(3279040545);
+emit_32(1105654868);
+emit_32(3272896545);
+emit_32(3278784496);
+emit_32(1106191896);
+emit_32(3272896545);
+emit_32(3278528512);
+emit_32(1106771024);
+emit_32(3272896545);
+emit_32(3278272528);
+emit_32(1107252111);
+emit_32(3272896545);
+emit_32(3278016545);
+emit_32(1107581652);
+emit_32(3272896545);
+emit_32(3277760496);
+emit_32(1107333218);
+emit_32(3272896545);
+emit_32(3277504512);
+emit_32(1106792310);
+emit_32(3272896545);
+emit_32(3277248528);
+emit_32(1106541229);
+emit_32(3272896545);
+emit_32(3276992545);
+emit_32(1105789924);
+emit_32(3272896545);
+emit_32(3276736496);
+emit_32(1104474486);
+emit_32(3272896545);
+emit_32(3276480512);
+emit_32(1103776134);
+emit_32(3272896545);
+emit_32(3276224528);
+emit_32(1102639635);
+emit_32(3272896545);
+emit_32(3275968545);
+emit_32(1101601964);
+emit_32(3272896545);
+emit_32(3275712496);
+emit_32(1100849820);
+emit_32(3272896545);
+emit_32(3275456512);
+emit_32(1100186229);
+emit_32(3272896545);
+emit_32(3275200528);
+emit_32(1099765540);
+emit_32(3272896545);
+emit_32(3274944545);
+emit_32(1098773850);
+emit_32(3272896545);
+emit_32(3274688496);
+emit_32(1097286550);
+emit_32(3272896545);
+emit_32(3274432512);
+emit_32(1095977088);
+emit_32(3272896545);
+emit_32(3274176528);
+emit_32(1094472381);
+emit_32(3272896545);
+emit_32(3273920545);
+emit_32(1093136810);
+emit_32(3272896545);
+emit_32(3273664496);
+emit_32(1090824857);
+emit_32(3272896545);
+emit_32(3273408512);
+emit_32(1088942045);
+emit_32(3272896545);
+emit_32(3273152528);
+emit_32(1087994509);
+emit_32(3272896545);
+emit_32(3272896545);
+emit_32(1085242018);
+emit_32(3272896545);
+emit_32(3272640496);
+emit_32(1082368710);
+emit_32(3272896545);
+emit_32(3272384512);
+emit_32(1083511616);
+emit_32(3272896545);
+emit_32(3272128528);
+emit_32(1086745865);
+emit_32(3272896545);
+emit_32(3271872545);
+emit_32(1089841387);
+emit_32(3272896545);
+emit_32(3271616496);
+emit_32(1091645420);
+emit_32(3272896545);
+emit_32(3271163904);
+emit_32(1091360837);
+emit_32(3272896545);
+emit_32(3270651937);
+emit_32(1091891626);
+emit_32(3272896545);
+emit_32(3270139970);
+emit_32(1091846705);
+emit_32(3272896545);
+emit_32(3269627871);
+emit_32(1092497818);
+emit_32(3272896545);
+emit_32(3269115904);
+emit_32(1091767087);
+emit_32(3272896545);
+emit_32(3268603937);
+emit_32(1092058643);
+emit_32(3272896545);
+emit_32(3268091970);
+emit_32(1092782286);
+emit_32(3272896545);
+emit_32(3267579911);
+emit_32(1093942536);
+emit_32(3272896545);
+emit_32(3267067904);
+emit_32(1096261042);
+emit_32(3272896545);
+emit_32(3266555911);
+emit_32(1098731278);
+emit_32(3272896545);
+emit_32(3266043904);
+emit_32(1099753639);
+emit_32(3272896545);
+emit_32(3265531911);
+emit_32(1100349178);
+emit_32(3272896545);
+emit_32(3265019904);
+emit_32(1101287129);
+emit_32(3272896545);
+emit_32(3264507911);
+emit_32(1102874726);
+emit_32(3272896545);
+emit_32(3263995904);
+emit_32(1104299216);
+emit_32(3272896545);
+emit_32(3263483911);
+emit_32(1105581310);
+emit_32(3272896545);
+emit_32(3262775296);
+emit_32(1106449741);
+emit_32(3272896545);
+emit_32(3261751309);
+emit_32(1106767197);
+emit_32(3272896545);
+emit_32(3260727296);
+emit_32(1106996783);
+emit_32(3272896545);
+emit_32(3259703309);
+emit_32(1107252216);
+emit_32(3272896545);
+emit_32(3258679296);
+emit_32(1107420643);
+emit_32(3272896545);
+emit_32(3257655309);
+emit_32(1107319351);
+emit_32(3272896545);
+emit_32(3256631296);
+emit_32(1107826600);
+emit_32(3272896545);
+emit_32(3255607309);
+emit_32(1108251299);
+emit_32(3272896545);
+emit_32(3254386688);
+emit_32(1108771550);
+emit_32(3272896545);
+emit_32(3252338714);
+emit_32(1109302182);
+emit_32(3272896545);
+emit_32(3250290688);
+emit_32(1110005147);
+emit_32(3272896545);
+emit_32(3248242714);
+emit_32(1110267291);
+emit_32(3272896545);
+emit_32(3245998080);
+emit_32(1110424394);
+emit_32(3272896545);
+emit_32(3241902132);
+emit_32(1110409006);
+emit_32(3272896545);
+emit_32(3237609472);
+emit_32(1110530064);
+emit_32(3272896545);
+emit_32(3229220864);
+emit_32(1110513759);
+emit_32(3272896545);
+emit_32(0);
+emit_32(1110086228);
+emit_32(3272896545);
+emit_32(1081737216);
+emit_32(1110289075);
+emit_32(3272896545);
+emit_32(3279552512);
+emit_32(1105076106);
+emit_32(3273152528);
+emit_32(3279296528);
+emit_32(1105334790);
+emit_32(3273152528);
+emit_32(3279040545);
+emit_32(1105218241);
+emit_32(3273152528);
+emit_32(3278784496);
+emit_32(1105960947);
+emit_32(3273152528);
+emit_32(3278528512);
+emit_32(1107217980);
+emit_32(3273152528);
+emit_32(3278272528);
+emit_32(1107295574);
+emit_32(3273152528);
+emit_32(3278016545);
+emit_32(1107365331);
+emit_32(3273152528);
+emit_32(3277760496);
+emit_32(1107416134);
+emit_32(3273152528);
+emit_32(3277504512);
+emit_32(1106446438);
+emit_32(3273152528);
+emit_32(3277248528);
+emit_32(1105782794);
+emit_32(3273152528);
+emit_32(3276992545);
+emit_32(1105013821);
+emit_32(3273152528);
+emit_32(3276736496);
+emit_32(1103915857);
+emit_32(3273152528);
+emit_32(3276480512);
+emit_32(1103026979);
+emit_32(3273152528);
+emit_32(3276224528);
+emit_32(1101908673);
+emit_32(3273152528);
+emit_32(3275968545);
+emit_32(1100983409);
+emit_32(3273152528);
+emit_32(3275712496);
+emit_32(1100304771);
+emit_32(3273152528);
+emit_32(3275456512);
+emit_32(1099637090);
+emit_32(3273152528);
+emit_32(3275200528);
+emit_32(1099595147);
+emit_32(3273152528);
+emit_32(3274944545);
+emit_32(1098779302);
+emit_32(3273152528);
+emit_32(3274688496);
+emit_32(1096597425);
+emit_32(3273152528);
+emit_32(3274432512);
+emit_32(1094709255);
+emit_32(3273152528);
+emit_32(3274176528);
+emit_32(1093592941);
+emit_32(3273152528);
+emit_32(3273920545);
+emit_32(1091822808);
+emit_32(3273152528);
+emit_32(3273664496);
+emit_32(1090429890);
+emit_32(3273152528);
+emit_32(3273408512);
+emit_32(1088328040);
+emit_32(3273152528);
+emit_32(3273152528);
+emit_32(1087421546);
+emit_32(3273152528);
+emit_32(3272896545);
+emit_32(1085534382);
+emit_32(3273152528);
+emit_32(3272640496);
+emit_32(1082800241);
+emit_32(3273152528);
+emit_32(3272384512);
+emit_32(1078440703);
+emit_32(3273152528);
+emit_32(3272128528);
+emit_32(1084200594);
+emit_32(3273152528);
+emit_32(3271872545);
+emit_32(1087678322);
+emit_32(3273152528);
+emit_32(3271616496);
+emit_32(1089442320);
+emit_32(3273152528);
+emit_32(3271163904);
+emit_32(1090607372);
+emit_32(3273152528);
+emit_32(3270651937);
+emit_32(1091531566);
+emit_32(3273152528);
+emit_32(3270139970);
+emit_32(1091674141);
+emit_32(3273152528);
+emit_32(3269627871);
+emit_32(1091966117);
+emit_32(3273152528);
+emit_32(3269115904);
+emit_32(1091542251);
+emit_32(3273152528);
+emit_32(3268603937);
+emit_32(1091342288);
+emit_32(3273152528);
+emit_32(3268091970);
+emit_32(1092373405);
+emit_32(3273152528);
+emit_32(3267579911);
+emit_32(1093066975);
+emit_32(3273152528);
+emit_32(3267067904);
+emit_32(1096397252);
+emit_32(3273152528);
+emit_32(3266555911);
+emit_32(1099075053);
+emit_32(3273152528);
+emit_32(3266043904);
+emit_32(1099796788);
+emit_32(3273152528);
+emit_32(3265531911);
+emit_32(1100246942);
+emit_32(3273152528);
+emit_32(3265019904);
+emit_32(1101066614);
+emit_32(3273152528);
+emit_32(3264507911);
+emit_32(1102540440);
+emit_32(3273152528);
+emit_32(3263995904);
+emit_32(1104067323);
+emit_32(3273152528);
+emit_32(3263483911);
+emit_32(1105420039);
+emit_32(3273152528);
+emit_32(3262775296);
+emit_32(1106257484);
+emit_32(3273152528);
+emit_32(3261751309);
+emit_32(1106472337);
+emit_32(3273152528);
+emit_32(3260727296);
+emit_32(1106731912);
+emit_32(3273152528);
+emit_32(3259703309);
+emit_32(1106956465);
+emit_32(3273152528);
+emit_32(3258679296);
+emit_32(1106821199);
+emit_32(3273152528);
+emit_32(3257655309);
+emit_32(1106379643);
+emit_32(3273152528);
+emit_32(3256631296);
+emit_32(1107530954);
+emit_32(3273152528);
+emit_32(3255607309);
+emit_32(1108003992);
+emit_32(3273152528);
+emit_32(3254386688);
+emit_32(1108557352);
+emit_32(3273152528);
+emit_32(3252338714);
+emit_32(1109091706);
+emit_32(3273152528);
+emit_32(3250290688);
+emit_32(1109753830);
+emit_32(3273152528);
+emit_32(3248242714);
+emit_32(1109939664);
+emit_32(3273152528);
+emit_32(3245998080);
+emit_32(1109999118);
+emit_32(3273152528);
+emit_32(3241902132);
+emit_32(1110432914);
+emit_32(3273152528);
+emit_32(3237609472);
+emit_32(1110537457);
+emit_32(3273152528);
+emit_32(3229220864);
+emit_32(1110226685);
+emit_32(3273152528);
+emit_32(0);
+emit_32(1109884928);
+emit_32(3273152528);
+emit_32(1081737216);
+emit_32(1110106754);
+emit_32(3273152528);
+emit_32(3279552512);
+emit_32(1104836087);
+emit_32(3273408512);
+emit_32(3279296528);
+emit_32(1105132991);
+emit_32(3273408512);
+emit_32(3279040545);
+emit_32(1105059486);
+emit_32(3273408512);
+emit_32(3278784496);
+emit_32(1105434981);
+emit_32(3273408512);
+emit_32(3278528512);
+emit_32(1106513389);
+emit_32(3273408512);
+emit_32(3278272528);
+emit_32(1106841489);
+emit_32(3273408512);
+emit_32(3278016545);
+emit_32(1107378805);
+emit_32(3273408512);
+emit_32(3277760496);
+emit_32(1106914784);
+emit_32(3273408512);
+emit_32(3277504512);
+emit_32(1106011069);
+emit_32(3273408512);
+emit_32(3277248528);
+emit_32(1104591349);
+emit_32(3273408512);
+emit_32(3276992545);
+emit_32(1103757469);
+emit_32(3273408512);
+emit_32(3276736496);
+emit_32(1103249329);
+emit_32(3273408512);
+emit_32(3276480512);
+emit_32(1103030387);
+emit_32(3273408512);
+emit_32(3276224528);
+emit_32(1102188275);
+emit_32(3273408512);
+emit_32(3275968545);
+emit_32(1101338667);
+emit_32(3273408512);
+emit_32(3275712496);
+emit_32(1100738567);
+emit_32(3273408512);
+emit_32(3275456512);
+emit_32(1099970956);
+emit_32(3273408512);
+emit_32(3275200528);
+emit_32(1098288778);
+emit_32(3273408512);
+emit_32(3274944545);
+emit_32(1096724093);
+emit_32(3273408512);
+emit_32(3274688496);
+emit_32(1094523761);
+emit_32(3273408512);
+emit_32(3274432512);
+emit_32(1091893849);
+emit_32(3273408512);
+emit_32(3274176528);
+emit_32(1091370138);
+emit_32(3273408512);
+emit_32(3273920545);
+emit_32(1090570504);
+emit_32(3273408512);
+emit_32(3273664496);
+emit_32(1087323819);
+emit_32(3273408512);
+emit_32(3273408512);
+emit_32(1085981977);
+emit_32(3273408512);
+emit_32(3273152528);
+emit_32(1085699218);
+emit_32(3273408512);
+emit_32(3272896545);
+emit_32(1086443980);
+emit_32(3273408512);
+emit_32(3272640496);
+emit_32(1082061813);
+emit_32(3273408512);
+emit_32(3272384512);
+emit_32(1077123943);
+emit_32(3273408512);
+emit_32(3272128528);
+emit_32(1080172783);
+emit_32(3273408512);
+emit_32(3271872545);
+emit_32(1084168381);
+emit_32(3273408512);
+emit_32(3271616496);
+emit_32(1087820404);
+emit_32(3273408512);
+emit_32(3271163904);
+emit_32(1090796682);
+emit_32(3273408512);
+emit_32(3270651937);
+emit_32(1091577148);
+emit_32(3273408512);
+emit_32(3270139970);
+emit_32(1091446925);
+emit_32(3273408512);
+emit_32(3269627871);
+emit_32(1092098762);
+emit_32(3273408512);
+emit_32(3269115904);
+emit_32(1091744595);
+emit_32(3273408512);
+emit_32(3268603937);
+emit_32(1091408191);
+emit_32(3273408512);
+emit_32(3268091970);
+emit_32(1092385663);
+emit_32(3273408512);
+emit_32(3267579911);
+emit_32(1093825829);
+emit_32(3273408512);
+emit_32(3267067904);
+emit_32(1096198128);
+emit_32(3273408512);
+emit_32(3266555911);
+emit_32(1098768607);
+emit_32(3273408512);
+emit_32(3266043904);
+emit_32(1099579471);
+emit_32(3273408512);
+emit_32(3265531911);
+emit_32(1100058880);
+emit_32(3273408512);
+emit_32(3265019904);
+emit_32(1100744596);
+emit_32(3273408512);
+emit_32(3264507911);
+emit_32(1102061083);
+emit_32(3273408512);
+emit_32(3263995904);
+emit_32(1103274338);
+emit_32(3273408512);
+emit_32(3263483911);
+emit_32(1104422791);
+emit_32(3273408512);
+emit_32(3262775296);
+emit_32(1105176612);
+emit_32(3273408512);
+emit_32(3261751309);
+emit_32(1105646007);
+emit_32(3273408512);
+emit_32(3260727296);
+emit_32(1106575308);
+emit_32(3273408512);
+emit_32(3259703309);
+emit_32(1106762741);
+emit_32(3273408512);
+emit_32(3258679296);
+emit_32(1106791472);
+emit_32(3273408512);
+emit_32(3257655309);
+emit_32(1106362447);
+emit_32(3273408512);
+emit_32(3256631296);
+emit_32(1107312824);
+emit_32(3273408512);
+emit_32(3255607309);
+emit_32(1107822143);
+emit_32(3273408512);
+emit_32(3254386688);
+emit_32(1108186890);
+emit_32(3273408512);
+emit_32(3252338714);
+emit_32(1108816848);
+emit_32(3273408512);
+emit_32(3250290688);
+emit_32(1109429689);
+emit_32(3273408512);
+emit_32(3248242714);
+emit_32(1109536408);
+emit_32(3273408512);
+emit_32(3245998080);
+emit_32(1109813992);
+emit_32(3273408512);
+emit_32(3241902132);
+emit_32(1110208099);
+emit_32(3273408512);
+emit_32(3237609472);
+emit_32(1110335213);
+emit_32(3273408512);
+emit_32(3229220864);
+emit_32(1110186263);
+emit_32(3273408512);
+emit_32(0);
+emit_32(1109755796);
+emit_32(3273408512);
+emit_32(1081737216);
+emit_32(1109848700);
+emit_32(3273408512);
+emit_32(3279552512);
+emit_32(1104733956);
+emit_32(3273664496);
+emit_32(3279296528);
+emit_32(1104666690);
+emit_32(3273664496);
+emit_32(3279040545);
+emit_32(1104540231);
+emit_32(3273664496);
+emit_32(3278784496);
+emit_32(1104872840);
+emit_32(3273664496);
+emit_32(3278528512);
+emit_32(1105814775);
+emit_32(3273664496);
+emit_32(3278272528);
+emit_32(1106809297);
+emit_32(3273664496);
+emit_32(3278016545);
+emit_32(1106966322);
+emit_32(3273664496);
+emit_32(3277760496);
+emit_32(1106369682);
+emit_32(3273664496);
+emit_32(3277504512);
+emit_32(1105145102);
+emit_32(3273664496);
+emit_32(3277248528);
+emit_32(1104371673);
+emit_32(3273664496);
+emit_32(3276992545);
+emit_32(1103102319);
+emit_32(3273664496);
+emit_32(3276736496);
+emit_32(1102915568);
+emit_32(3273664496);
+emit_32(3276480512);
+emit_32(1102916721);
+emit_32(3273664496);
+emit_32(3276224528);
+emit_32(1102503005);
+emit_32(3273664496);
+emit_32(3275968545);
+emit_32(1101360162);
+emit_32(3273664496);
+emit_32(3275712496);
+emit_32(1100655152);
+emit_32(3273664496);
+emit_32(3275456512);
+emit_32(1099898185);
+emit_32(3273664496);
+emit_32(3275200528);
+emit_32(1097164495);
+emit_32(3273664496);
+emit_32(3274944545);
+emit_32(1094617294);
+emit_32(3273664496);
+emit_32(3274688496);
+emit_32(1092199750);
+emit_32(3273664496);
+emit_32(3274432512);
+emit_32(1090062511);
+emit_32(3273664496);
+emit_32(3274176528);
+emit_32(1090680196);
+emit_32(3273664496);
+emit_32(3273920545);
+emit_32(1089407214);
+emit_32(3273664496);
+emit_32(3273664496);
+emit_32(1087342316);
+emit_32(3273664496);
+emit_32(3273408512);
+emit_32(1084811578);
+emit_32(3273664496);
+emit_32(3273152528);
+emit_32(1083587386);
+emit_32(3273664496);
+emit_32(3272896545);
+emit_32(1084521563);
+emit_32(3273664496);
+emit_32(3272640496);
+emit_32(1079059237);
+emit_32(3273664496);
+emit_32(3272384512);
+emit_32(1079341513);
+emit_32(3273664496);
+emit_32(3272128528);
+emit_32(1075719690);
+emit_32(3273664496);
+emit_32(3271872545);
+emit_32(1082462285);
+emit_32(3273664496);
+emit_32(3271616496);
+emit_32(1087277514);
+emit_32(3273664496);
+emit_32(3271163904);
+emit_32(1090505891);
+emit_32(3273664496);
+emit_32(3270651937);
+emit_32(1090927198);
+emit_32(3273664496);
+emit_32(3270139970);
+emit_32(1091146109);
+emit_32(3273664496);
+emit_32(3269627871);
+emit_32(1092080475);
+emit_32(3273664496);
+emit_32(3269115904);
+emit_32(1091780718);
+emit_32(3273664496);
+emit_32(3268603937);
+emit_32(1090802554);
+emit_32(3273664496);
+emit_32(3268091970);
+emit_32(1092320997);
+emit_32(3273664496);
+emit_32(3267579911);
+emit_32(1094564132);
+emit_32(3273664496);
+emit_32(3267067904);
+emit_32(1097435447);
+emit_32(3273664496);
+emit_32(3266555911);
+emit_32(1098963118);
+emit_32(3273664496);
+emit_32(3266043904);
+emit_32(1099774348);
+emit_32(3273664496);
+emit_32(3265531911);
+emit_32(1100067530);
+emit_32(3273664496);
+emit_32(3265019904);
+emit_32(1100332401);
+emit_32(3273664496);
+emit_32(3264507911);
+emit_32(1101386639);
+emit_32(3273664496);
+emit_32(3263995904);
+emit_32(1102851185);
+emit_32(3273664496);
+emit_32(3263483911);
+emit_32(1104372774);
+emit_32(3273664496);
+emit_32(3262775296);
+emit_32(1105071702);
+emit_32(3273664496);
+emit_32(3261751309);
+emit_32(1105296726);
+emit_32(3273664496);
+emit_32(3260727296);
+emit_32(1105674895);
+emit_32(3273664496);
+emit_32(3259703309);
+emit_32(1106000583);
+emit_32(3273664496);
+emit_32(3258679296);
+emit_32(1105931639);
+emit_32(3273664496);
+emit_32(3257655309);
+emit_32(1106021188);
+emit_32(3273664496);
+emit_32(3256631296);
+emit_32(1106564874);
+emit_32(3273664496);
+emit_32(3255607309);
+emit_32(1107568073);
+emit_32(3273664496);
+emit_32(3254386688);
+emit_32(1108016890);
+emit_32(3273664496);
+emit_32(3252338714);
+emit_32(1108734483);
+emit_32(3273664496);
+emit_32(3250290688);
+emit_32(1109191321);
+emit_32(3273664496);
+emit_32(3248242714);
+emit_32(1109295759);
+emit_32(3273664496);
+emit_32(3245998080);
+emit_32(1109358019);
+emit_32(3273664496);
+emit_32(3241902132);
+emit_32(1109703603);
+emit_32(3273664496);
+emit_32(3237609472);
+emit_32(1109859736);
+emit_32(3273664496);
+emit_32(3229220864);
+emit_32(1109838319);
+emit_32(3273664496);
+emit_32(0);
+emit_32(1109492761);
+emit_32(3273664496);
+emit_32(1081737216);
+emit_32(1109518057);
+emit_32(3273664496);
+emit_32(3279552512);
+emit_32(1104359299);
+emit_32(3273920545);
+emit_32(3279296528);
+emit_32(1104339586);
+emit_32(3273920545);
+emit_32(3279040545);
+emit_32(1104491735);
+emit_32(3273920545);
+emit_32(3278784496);
+emit_32(1104791627);
+emit_32(3273920545);
+emit_32(3278528512);
+emit_32(1105811577);
+emit_32(3273920545);
+emit_32(3278272528);
+emit_32(1106308497);
+emit_32(3273920545);
+emit_32(3278016545);
+emit_32(1106435952);
+emit_32(3273920545);
+emit_32(3277760496);
+emit_32(1105655916);
+emit_32(3273920545);
+emit_32(3277504512);
+emit_32(1104594023);
+emit_32(3273920545);
+emit_32(3277248528);
+emit_32(1103614234);
+emit_32(3273920545);
+emit_32(3276992545);
+emit_32(1103342128);
+emit_32(3273920545);
+emit_32(3276736496);
+emit_32(1102922855);
+emit_32(3273920545);
+emit_32(3276480512);
+emit_32(1102436945);
+emit_32(3273920545);
+emit_32(3276224528);
+emit_32(1101625347);
+emit_32(3273920545);
+emit_32(3275968545);
+emit_32(1100801953);
+emit_32(3273920545);
+emit_32(3275712496);
+emit_32(1100227910);
+emit_32(3273920545);
+emit_32(3275456512);
+emit_32(1099339661);
+emit_32(3273920545);
+emit_32(3275200528);
+emit_32(1096681731);
+emit_32(3273920545);
+emit_32(3274944545);
+emit_32(1093027548);
+emit_32(3273920545);
+emit_32(3274688496);
+emit_32(1089483949);
+emit_32(3273920545);
+emit_32(3274432512);
+emit_32(1087550857);
+emit_32(3273920545);
+emit_32(3274176528);
+emit_32(1088032090);
+emit_32(3273920545);
+emit_32(3273920545);
+emit_32(1088175452);
+emit_32(3273920545);
+emit_32(3273664496);
+emit_32(1087974251);
+emit_32(3273920545);
+emit_32(3273408512);
+emit_32(1084612369);
+emit_32(3273920545);
+emit_32(3273152528);
+emit_32(1083056807);
+emit_32(3273920545);
+emit_32(3272896545);
+emit_32(1083313058);
+emit_32(3273920545);
+emit_32(3272640496);
+emit_32(1077966411);
+emit_32(3273920545);
+emit_32(3272384512);
+emit_32(1077466701);
+emit_32(3273920545);
+emit_32(3272128528);
+emit_32(1076194527);
+emit_32(3273920545);
+emit_32(3271872545);
+emit_32(1078813199);
+emit_32(3273920545);
+emit_32(3271616496);
+emit_32(1084920546);
+emit_32(3273920545);
+emit_32(3271163904);
+emit_32(1087870295);
+emit_32(3273920545);
+emit_32(3270651937);
+emit_32(1089931229);
+emit_32(3273920545);
+emit_32(3270139970);
+emit_32(1090987638);
+emit_32(3273920545);
+emit_32(3269627871);
+emit_32(1091623883);
+emit_32(3273920545);
+emit_32(3269115904);
+emit_32(1091369550);
+emit_32(3273920545);
+emit_32(3268603937);
+emit_32(1090009558);
+emit_32(3273920545);
+emit_32(3268091970);
+emit_32(1093783362);
+emit_32(3273920545);
+emit_32(3267579911);
+emit_32(1095581880);
+emit_32(3273920545);
+emit_32(3267067904);
+emit_32(1097625344);
+emit_32(3273920545);
+emit_32(3266555911);
+emit_32(1099002544);
+emit_32(3273920545);
+emit_32(3266043904);
+emit_32(1099653605);
+emit_32(3273920545);
+emit_32(3265531911);
+emit_32(1100228067);
+emit_32(3273920545);
+emit_32(3265019904);
+emit_32(1100644195);
+emit_32(3273920545);
+emit_32(3264507911);
+emit_32(1101087218);
+emit_32(3273920545);
+emit_32(3263995904);
+emit_32(1102441873);
+emit_32(3273920545);
+emit_32(3263483911);
+emit_32(1103411859);
+emit_32(3273920545);
+emit_32(3262775296);
+emit_32(1104352169);
+emit_32(3273920545);
+emit_32(3261751309);
+emit_32(1104534045);
+emit_32(3273920545);
+emit_32(3260727296);
+emit_32(1104718961);
+emit_32(3273920545);
+emit_32(3259703309);
+emit_32(1105600394);
+emit_32(3273920545);
+emit_32(3258679296);
+emit_32(1105578322);
+emit_32(3273920545);
+emit_32(3257655309);
+emit_32(1105873968);
+emit_32(3273920545);
+emit_32(3256631296);
+emit_32(1105977043);
+emit_32(3273920545);
+emit_32(3255607309);
+emit_32(1107501987);
+emit_32(3273920545);
+emit_32(3254386688);
+emit_32(1108022657);
+emit_32(3273920545);
+emit_32(3252338714);
+emit_32(1108493730);
+emit_32(3273920545);
+emit_32(3250290688);
+emit_32(1108751627);
+emit_32(3273920545);
+emit_32(3248242714);
+emit_32(1108976756);
+emit_32(3273920545);
+emit_32(3245998080);
+emit_32(1109209357);
+emit_32(3273920545);
+emit_32(3241902132);
+emit_32(1109224928);
+emit_32(3273920545);
+emit_32(3237609472);
+emit_32(1109394299);
+emit_32(3273920545);
+emit_32(3229220864);
+emit_32(1109287790);
+emit_32(3273920545);
+emit_32(0);
+emit_32(1109096556);
+emit_32(3273920545);
+emit_32(1081737216);
+emit_32(1109095429);
+emit_32(3273920545);
+emit_32(3279552512);
+emit_32(1103777917);
+emit_32(3274176528);
+emit_32(3279296528);
+emit_32(1103682863);
+emit_32(3274176528);
+emit_32(3279040545);
+emit_32(1103889852);
+emit_32(3274176528);
+emit_32(3278784496);
+emit_32(1104470082);
+emit_32(3274176528);
+emit_32(3278528512);
+emit_32(1105367977);
+emit_32(3274176528);
+emit_32(3278272528);
+emit_32(1105484998);
+emit_32(3274176528);
+emit_32(3278016545);
+emit_32(1105335157);
+emit_32(3274176528);
+emit_32(3277760496);
+emit_32(1104592136);
+emit_32(3274176528);
+emit_32(3277504512);
+emit_32(1103631063);
+emit_32(3274176528);
+emit_32(3277248528);
+emit_32(1103255306);
+emit_32(3274176528);
+emit_32(3276992545);
+emit_32(1103018276);
+emit_32(3274176528);
+emit_32(3276736496);
+emit_32(1102447378);
+emit_32(3274176528);
+emit_32(3276480512);
+emit_32(1102332926);
+emit_32(3274176528);
+emit_32(3276224528);
+emit_32(1101176976);
+emit_32(3274176528);
+emit_32(3275968545);
+emit_32(1100388132);
+emit_32(3274176528);
+emit_32(3275712496);
+emit_32(1099436969);
+emit_32(3274176528);
+emit_32(3275456512);
+emit_32(1097622199);
+emit_32(3274176528);
+emit_32(3275200528);
+emit_32(1095157206);
+emit_32(3274176528);
+emit_32(3274944545);
+emit_32(1091943761);
+emit_32(3274176528);
+emit_32(3274688496);
+emit_32(1087145897);
+emit_32(3274176528);
+emit_32(3274432512);
+emit_32(1084175847);
+emit_32(3274176528);
+emit_32(3274176528);
+emit_32(1083923161);
+emit_32(3274176528);
+emit_32(3273920545);
+emit_32(1085375292);
+emit_32(3274176528);
+emit_32(3273664496);
+emit_32(1084407834);
+emit_32(3274176528);
+emit_32(3273408512);
+emit_32(1081391354);
+emit_32(3274176528);
+emit_32(3273152528);
+emit_32(1081952216);
+emit_32(3274176528);
+emit_32(3272896545);
+emit_32(1083406885);
+emit_32(3274176528);
+emit_32(3272640496);
+emit_32(1079981732);
+emit_32(3274176528);
+emit_32(3272384512);
+emit_32(1079058020);
+emit_32(3274176528);
+emit_32(3272128528);
+emit_32(1072707676);
+emit_32(3274176528);
+emit_32(3271872545);
+emit_32(1076687568);
+emit_32(3274176528);
+emit_32(3271616496);
+emit_32(1083207089);
+emit_32(3274176528);
+emit_32(3271163904);
+emit_32(1086389538);
+emit_32(3274176528);
+emit_32(3270651937);
+emit_32(1089283314);
+emit_32(3274176528);
+emit_32(3270139970);
+emit_32(1089347172);
+emit_32(3274176528);
+emit_32(3269627871);
+emit_32(1089486696);
+emit_32(3274176528);
+emit_32(3269115904);
+emit_32(1088193739);
+emit_32(3274176528);
+emit_32(3268603937);
+emit_32(1090655722);
+emit_32(3274176528);
+emit_32(3268091970);
+emit_32(1094451515);
+emit_32(3274176528);
+emit_32(3267579911);
+emit_32(1096952893);
+emit_32(3274176528);
+emit_32(3267067904);
+emit_32(1098336489);
+emit_32(3274176528);
+emit_32(3266555911);
+emit_32(1099234437);
+emit_32(3274176528);
+emit_32(3266043904);
+emit_32(1099379612);
+emit_32(3274176528);
+emit_32(3265531911);
+emit_32(1100215799);
+emit_32(3274176528);
+emit_32(3265019904);
+emit_32(1100530162);
+emit_32(3274176528);
+emit_32(3264507911);
+emit_32(1101031329);
+emit_32(3274176528);
+emit_32(3263995904);
+emit_32(1101498994);
+emit_32(3274176528);
+emit_32(3263483911);
+emit_32(1102563928);
+emit_32(3274176528);
+emit_32(3262775296);
+emit_32(1103428531);
+emit_32(3274176528);
+emit_32(3261751309);
+emit_32(1104384360);
+emit_32(3274176528);
+emit_32(3260727296);
+emit_32(1104488589);
+emit_32(3274176528);
+emit_32(3259703309);
+emit_32(1104535827);
+emit_32(3274176528);
+emit_32(3258679296);
+emit_32(1105265479);
+emit_32(3274176528);
+emit_32(3257655309);
+emit_32(1106039747);
+emit_32(3274176528);
+emit_32(3256631296);
+emit_32(1106434956);
+emit_32(3274176528);
+emit_32(3255607309);
+emit_32(1107058596);
+emit_32(3274176528);
+emit_32(3254386688);
+emit_32(1107738703);
+emit_32(3274176528);
+emit_32(3252338714);
+emit_32(1108236567);
+emit_32(3274176528);
+emit_32(3250290688);
+emit_32(1108369447);
+emit_32(3274176528);
+emit_32(3248242714);
+emit_32(1108738258);
+emit_32(3274176528);
+emit_32(3245998080);
+emit_32(1108925140);
+emit_32(3274176528);
+emit_32(3241902132);
+emit_32(1108891219);
+emit_32(3274176528);
+emit_32(3237609472);
+emit_32(1109019224);
+emit_32(3274176528);
+emit_32(3229220864);
+emit_32(1108962574);
+emit_32(3274176528);
+emit_32(0);
+emit_32(1108838921);
+emit_32(3274176528);
+emit_32(1081737216);
+emit_32(1108664621);
+emit_32(3274176528);
+emit_32(3279552512);
+emit_32(1103175247);
+emit_32(3274432512);
+emit_32(3279296528);
+emit_32(1103008996);
+emit_32(3274432512);
+emit_32(3279040545);
+emit_32(1103511840);
+emit_32(3274432512);
+emit_32(3278784496);
+emit_32(1104205736);
+emit_32(3274432512);
+emit_32(3278528512);
+emit_32(1104650804);
+emit_32(3274432512);
+emit_32(3278272528);
+emit_32(1104410365);
+emit_32(3274432512);
+emit_32(3278016545);
+emit_32(1103881359);
+emit_32(3274432512);
+emit_32(3277760496);
+emit_32(1103489768);
+emit_32(3274432512);
+emit_32(3277504512);
+emit_32(1102805048);
+emit_32(3274432512);
+emit_32(3277248528);
+emit_32(1102700452);
+emit_32(3274432512);
+emit_32(3276992545);
+emit_32(1102108688);
+emit_32(3274432512);
+emit_32(3276736496);
+emit_32(1101386429);
+emit_32(3274432512);
+emit_32(3276480512);
+emit_32(1101386115);
+emit_32(3274432512);
+emit_32(3276224528);
+emit_32(1100548774);
+emit_32(3274432512);
+emit_32(3275968545);
+emit_32(1099100534);
+emit_32(3274432512);
+emit_32(3275712496);
+emit_32(1097287388);
+emit_32(3274432512);
+emit_32(3275456512);
+emit_32(1095246545);
+emit_32(3274432512);
+emit_32(3275200528);
+emit_32(1092624685);
+emit_32(3274432512);
+emit_32(3274944545);
+emit_32(1090219567);
+emit_32(3274432512);
+emit_32(3274688496);
+emit_32(1082930516);
+emit_32(3274432512);
+emit_32(3274432512);
+emit_32(1078918434);
+emit_32(3274432512);
+emit_32(3274176528);
+emit_32(1079511215);
+emit_32(3274432512);
+emit_32(3273920545);
+emit_32(1081732351);
+emit_32(3274432512);
+emit_32(3273664496);
+emit_32(1079040698);
+emit_32(3274432512);
+emit_32(3273408512);
+emit_32(1077451183);
+emit_32(3274432512);
+emit_32(3273152528);
+emit_32(1082592749);
+emit_32(3274432512);
+emit_32(3272896545);
+emit_32(1081429857);
+emit_32(3274432512);
+emit_32(3272640496);
+emit_32(1077879421);
+emit_32(3274432512);
+emit_32(3272384512);
+emit_32(1077261516);
+emit_32(3274432512);
+emit_32(3272128528);
+emit_32(1073521036);
+emit_32(3274432512);
+emit_32(3271872545);
+emit_32(1072559785);
+emit_32(3274432512);
+emit_32(3271616496);
+emit_32(1078796380);
+emit_32(3274432512);
+emit_32(3271163904);
+emit_32(1084493587);
+emit_32(3274432512);
+emit_32(3270651937);
+emit_32(1086050198);
+emit_32(3274432512);
+emit_32(3270139970);
+emit_32(1087277451);
+emit_32(3274432512);
+emit_32(3269627871);
+emit_32(1086930582);
+emit_32(3274432512);
+emit_32(3269115904);
+emit_32(1089544619);
+emit_32(3274432512);
+emit_32(3268603937);
+emit_32(1092037839);
+emit_32(3274432512);
+emit_32(3268091970);
+emit_32(1094101185);
+emit_32(3274432512);
+emit_32(3267579911);
+emit_32(1096539125);
+emit_32(3274432512);
+emit_32(3267067904);
+emit_32(1097682387);
+emit_32(3274432512);
+emit_32(3266555911);
+emit_32(1098380005);
+emit_32(3274432512);
+emit_32(3266043904);
+emit_32(1099089471);
+emit_32(3274432512);
+emit_32(3265531911);
+emit_32(1100092801);
+emit_32(3274432512);
+emit_32(3265019904);
+emit_32(1099999687);
+emit_32(3274432512);
+emit_32(3264507911);
+emit_32(1100034290);
+emit_32(3274432512);
+emit_32(3263995904);
+emit_32(1101354920);
+emit_32(3274432512);
+emit_32(3263483911);
+emit_32(1102642361);
+emit_32(3274432512);
+emit_32(3262775296);
+emit_32(1103324617);
+emit_32(3274432512);
+emit_32(3261751309);
+emit_32(1104424364);
+emit_32(3274432512);
+emit_32(3260727296);
+emit_32(1104375238);
+emit_32(3274432512);
+emit_32(3259703309);
+emit_32(1104526075);
+emit_32(3274432512);
+emit_32(3258679296);
+emit_32(1105221963);
+emit_32(3274432512);
+emit_32(3257655309);
+emit_32(1106081009);
+emit_32(3274432512);
+emit_32(3256631296);
+emit_32(1106625692);
+emit_32(3274432512);
+emit_32(3255607309);
+emit_32(1106869957);
+emit_32(3274432512);
+emit_32(3254386688);
+emit_32(1107361976);
+emit_32(3274432512);
+emit_32(3252338714);
+emit_32(1107660584);
+emit_32(3274432512);
+emit_32(3250290688);
+emit_32(1107794539);
+emit_32(3274432512);
+emit_32(3248242714);
+emit_32(1108030993);
+emit_32(3274432512);
+emit_32(3245998080);
+emit_32(1108270855);
+emit_32(3274432512);
+emit_32(3241902132);
+emit_32(1108287055);
+emit_32(3274432512);
+emit_32(3237609472);
+emit_32(1108250041);
+emit_32(3274432512);
+emit_32(3229220864);
+emit_32(1108216958);
+emit_32(3274432512);
+emit_32(0);
+emit_32(1108239267);
+emit_32(3274432512);
+emit_32(1081737216);
+emit_32(1108184872);
+emit_32(3274432512);
+emit_32(3279552512);
+emit_32(1102812126);
+emit_32(3274688496);
+emit_32(3279296528);
+emit_32(1103117418);
+emit_32(3274688496);
+emit_32(3279040545);
+emit_32(1103649885);
+emit_32(3274688496);
+emit_32(3278784496);
+emit_32(1104097313);
+emit_32(3274688496);
+emit_32(3278528512);
+emit_32(1104444654);
+emit_32(3274688496);
+emit_32(3278272528);
+emit_32(1104063601);
+emit_32(3274688496);
+emit_32(3278016545);
+emit_32(1103545814);
+emit_32(3274688496);
+emit_32(3277760496);
+emit_32(1103584507);
+emit_32(3274688496);
+emit_32(3277504512);
+emit_32(1102679009);
+emit_32(3274688496);
+emit_32(3277248528);
+emit_32(1102258687);
+emit_32(3274688496);
+emit_32(3276992545);
+emit_32(1101507854);
+emit_32(3274688496);
+emit_32(3276736496);
+emit_32(1100690909);
+emit_32(3274688496);
+emit_32(3276480512);
+emit_32(1100132332);
+emit_32(3274688496);
+emit_32(3276224528);
+emit_32(1099019583);
+emit_32(3274688496);
+emit_32(3275968545);
+emit_32(1097127376);
+emit_32(3274688496);
+emit_32(3275712496);
+emit_32(1095215822);
+emit_32(3274688496);
+emit_32(3275456512);
+emit_32(1092786166);
+emit_32(3274688496);
+emit_32(3275200528);
+emit_32(1090176785);
+emit_32(3274688496);
+emit_32(3274944545);
+emit_32(1085473439);
+emit_32(3274688496);
+emit_32(3274688496);
+emit_32(1079921376);
+emit_32(3274688496);
+emit_32(3274432512);
+emit_32(1075489590);
+emit_32(3274688496);
+emit_32(3274176528);
+emit_32(1074320386);
+emit_32(3274688496);
+emit_32(3273920545);
+emit_32(1075278281);
+emit_32(3274688496);
+emit_32(3273664496);
+emit_32(1075627373);
+emit_32(3274688496);
+emit_32(3273408512);
+emit_32(1075421307);
+emit_32(3274688496);
+emit_32(3273152528);
+emit_32(1077995687);
+emit_32(3274688496);
+emit_32(3272896545);
+emit_32(1076187271);
+emit_32(3274688496);
+emit_32(3272640496);
+emit_32(1078197056);
+emit_32(3274688496);
+emit_32(3272384512);
+emit_32(1077490273);
+emit_32(3274688496);
+emit_32(3272128528);
+emit_32(1076221287);
+emit_32(3274688496);
+emit_32(3271872545);
+emit_32(1074908092);
+emit_32(3274688496);
+emit_32(3271616496);
+emit_32(1080775462);
+emit_32(3274688496);
+emit_32(3271163904);
+emit_32(1084715256);
+emit_32(3274688496);
+emit_32(3270651937);
+emit_32(1086583504);
+emit_32(3274688496);
+emit_32(3270139970);
+emit_32(1086842502);
+emit_32(3274688496);
+emit_32(3269627871);
+emit_32(1087987400);
+emit_32(3274688496);
+emit_32(3269115904);
+emit_32(1090173891);
+emit_32(3274688496);
+emit_32(3268603937);
+emit_32(1091923838);
+emit_32(3274688496);
+emit_32(3268091970);
+emit_32(1093947988);
+emit_32(3274688496);
+emit_32(3267579911);
+emit_32(1095834167);
+emit_32(3274688496);
+emit_32(3267067904);
+emit_32(1096733950);
+emit_32(3274688496);
+emit_32(3266555911);
+emit_32(1097836842);
+emit_32(3274688496);
+emit_32(3266043904);
+emit_32(1098556060);
+emit_32(3274688496);
+emit_32(3265531911);
+emit_32(1099108608);
+emit_32(3274688496);
+emit_32(3265019904);
+emit_32(1098963275);
+emit_32(3274688496);
+emit_32(3264507911);
+emit_32(1099819542);
+emit_32(3274688496);
+emit_32(3263995904);
+emit_32(1100942305);
+emit_32(3274688496);
+emit_32(3263483911);
+emit_32(1102197608);
+emit_32(3274688496);
+emit_32(3262775296);
+emit_32(1103022837);
+emit_32(3274688496);
+emit_32(3261751309);
+emit_32(1103801562);
+emit_32(3274688496);
+emit_32(3260727296);
+emit_32(1104507988);
+emit_32(3274688496);
+emit_32(3259703309);
+emit_32(1105154592);
+emit_32(3274688496);
+emit_32(3258679296);
+emit_32(1105464079);
+emit_32(3274688496);
+emit_32(3257655309);
+emit_32(1106093382);
+emit_32(3274688496);
+emit_32(3256631296);
+emit_32(1106574311);
+emit_32(3274688496);
+emit_32(3255607309);
+emit_32(1107051990);
+emit_32(3274688496);
+emit_32(3254386688);
+emit_32(1107119571);
+emit_32(3274688496);
+emit_32(3252338714);
+emit_32(1106870849);
+emit_32(3274688496);
+emit_32(3250290688);
+emit_32(1107053878);
+emit_32(3274688496);
+emit_32(3248242714);
+emit_32(1107270461);
+emit_32(3274688496);
+emit_32(3245998080);
+emit_32(1107546577);
+emit_32(3274688496);
+emit_32(3241902132);
+emit_32(1107761064);
+emit_32(3274688496);
+emit_32(3237609472);
+emit_32(1107768718);
+emit_32(3274688496);
+emit_32(3229220864);
+emit_32(1107959035);
+emit_32(3274688496);
+emit_32(0);
+emit_32(1108028398);
+emit_32(3274688496);
+emit_32(1081737216);
+emit_32(1108036289);
+emit_32(3274688496);
+emit_32(3279552512);
+emit_32(1102194829);
+emit_32(3274944545);
+emit_32(3279296528);
+emit_32(1102979740);
+emit_32(3274944545);
+emit_32(3279040545);
+emit_32(1103411282);
+emit_32(3274944545);
+emit_32(3278784496);
+emit_32(1104236354);
+emit_32(3274944545);
+emit_32(3278528512);
+emit_32(1103902330);
+emit_32(3274944545);
+emit_32(3278272528);
+emit_32(1103359430);
+emit_32(3274944545);
+emit_32(3278016545);
+emit_32(1103570665);
+emit_32(3274944545);
+emit_32(3277760496);
+emit_32(1102969255);
+emit_32(3274944545);
+emit_32(3277504512);
+emit_32(1102559995);
+emit_32(3274944545);
+emit_32(3277248528);
+emit_32(1101349467);
+emit_32(3274944545);
+emit_32(3276992545);
+emit_32(1100611689);
+emit_32(3274944545);
+emit_32(3276736496);
+emit_32(1099639921);
+emit_32(3274944545);
+emit_32(3276480512);
+emit_32(1098874513);
+emit_32(3274944545);
+emit_32(3276224528);
+emit_32(1096071040);
+emit_32(3274944545);
+emit_32(3275968545);
+emit_32(1094641831);
+emit_32(3274944545);
+emit_32(3275712496);
+emit_32(1092240938);
+emit_32(3274944545);
+emit_32(3275456512);
+emit_32(1090400551);
+emit_32(3274944545);
+emit_32(3275200528);
+emit_32(1086726760);
+emit_32(3274944545);
+emit_32(3274944545);
+emit_32(1082213060);
+emit_32(3274944545);
+emit_32(3274688496);
+emit_32(1073126939);
+emit_32(3274944545);
+emit_32(3274432512);
+emit_32(1071516914);
+emit_32(3274944545);
+emit_32(3274176528);
+emit_32(1065259968);
+emit_32(3274944545);
+emit_32(3273920545);
+emit_32(1065288959);
+emit_32(3274944545);
+emit_32(3273664496);
+emit_32(1065357243);
+emit_32(3274944545);
+emit_32(3273408512);
+emit_32(1069920478);
+emit_32(3274944545);
+emit_32(3273152528);
+emit_32(1062828597);
+emit_32(3274944545);
+emit_32(3272896545);
+emit_32(1067908386);
+emit_32(3274944545);
+emit_32(3272640496);
+emit_32(1068584424);
+emit_32(3274944545);
+emit_32(3272384512);
+emit_32(1063954466);
+emit_32(3274944545);
+emit_32(3272128528);
+emit_32(1068682235);
+emit_32(3274944545);
+emit_32(3271872545);
+emit_32(1074494492);
+emit_32(3274944545);
+emit_32(3271616496);
+emit_32(1082171809);
+emit_32(3274944545);
+emit_32(3271163904);
+emit_32(1085758274);
+emit_32(3274944545);
+emit_32(3270651937);
+emit_32(1088930825);
+emit_32(3274944545);
+emit_32(3270139970);
+emit_32(1088551890);
+emit_32(3274944545);
+emit_32(3269627871);
+emit_32(1090336420);
+emit_32(3274944545);
+emit_32(3269115904);
+emit_32(1090128550);
+emit_32(3274944545);
+emit_32(3268603937);
+emit_32(1092723147);
+emit_32(3274944545);
+emit_32(3268091970);
+emit_32(1094514744);
+emit_32(3274944545);
+emit_32(3267579911);
+emit_32(1095724381);
+emit_32(3274944545);
+emit_32(3267067904);
+emit_32(1096378378);
+emit_32(3274944545);
+emit_32(3266555911);
+emit_32(1096239232);
+emit_32(3274944545);
+emit_32(3266043904);
+emit_32(1097003853);
+emit_32(3274944545);
+emit_32(3265531911);
+emit_32(1097209165);
+emit_32(3274944545);
+emit_32(3265019904);
+emit_32(1098262459);
+emit_32(3274944545);
+emit_32(3264507911);
+emit_32(1099551893);
+emit_32(3274944545);
+emit_32(3263995904);
+emit_32(1100443025);
+emit_32(3274944545);
+emit_32(3263483911);
+emit_32(1101006635);
+emit_32(3274944545);
+emit_32(3262775296);
+emit_32(1102193466);
+emit_32(3274944545);
+emit_32(3261751309);
+emit_32(1103692405);
+emit_32(3274944545);
+emit_32(3260727296);
+emit_32(1104818733);
+emit_32(3274944545);
+emit_32(3259703309);
+emit_32(1105337935);
+emit_32(3274944545);
+emit_32(3258679296);
+emit_32(1105923932);
+emit_32(3274944545);
+emit_32(3257655309);
+emit_32(1106359720);
+emit_32(3274944545);
+emit_32(3256631296);
+emit_32(1106972561);
+emit_32(3274944545);
+emit_32(3255607309);
+emit_32(1106903040);
+emit_32(3274944545);
+emit_32(3254386688);
+emit_32(1106792520);
+emit_32(3274944545);
+emit_32(3252338714);
+emit_32(1106424313);
+emit_32(3274944545);
+emit_32(3250290688);
+emit_32(1106536196);
+emit_32(3274944545);
+emit_32(3248242714);
+emit_32(1106757026);
+emit_32(3274944545);
+emit_32(3245998080);
+emit_32(1107206445);
+emit_32(3274944545);
+emit_32(3241902132);
+emit_32(1107332773);
+emit_32(3274944545);
+emit_32(3237609472);
+emit_32(1107315261);
+emit_32(3274944545);
+emit_32(3229220864);
+emit_32(1107468589);
+emit_32(3274944545);
+emit_32(0);
+emit_32(1107529276);
+emit_32(3274944545);
+emit_32(1081737216);
+emit_32(1107544270);
+emit_32(3274944545);
+emit_32(3279552512);
+emit_32(1102256485);
+emit_32(3275200528);
+emit_32(3279296528);
+emit_32(1102476581);
+emit_32(3275200528);
+emit_32(3279040545);
+emit_32(1102648600);
+emit_32(3275200528);
+emit_32(3278784496);
+emit_32(1103151707);
+emit_32(3275200528);
+emit_32(3278528512);
+emit_32(1103103315);
+emit_32(3275200528);
+emit_32(3278272528);
+emit_32(1102817788);
+emit_32(3275200528);
+emit_32(3278016545);
+emit_32(1103034843);
+emit_32(3275200528);
+emit_32(3277760496);
+emit_32(1102561411);
+emit_32(3275200528);
+emit_32(3277504512);
+emit_32(1101968179);
+emit_32(3275200528);
+emit_32(3277248528);
+emit_32(1100968939);
+emit_32(3275200528);
+emit_32(3276992545);
+emit_32(1099333370);
+emit_32(3275200528);
+emit_32(3276736496);
+emit_32(1098046662);
+emit_32(3275200528);
+emit_32(3276480512);
+emit_32(1096587778);
+emit_32(3275200528);
+emit_32(3276224528);
+emit_32(1094379687);
+emit_32(3275200528);
+emit_32(3275968545);
+emit_32(1092357099);
+emit_32(3275200528);
+emit_32(3275712496);
+emit_32(1088608073);
+emit_32(3275200528);
+emit_32(3275456512);
+emit_32(1087226532);
+emit_32(3275200528);
+emit_32(3275200528);
+emit_32(1084547148);
+emit_32(3275200528);
+emit_32(3274944545);
+emit_32(1081193131);
+emit_32(3275200528);
+emit_32(3274688496);
+emit_32(1078008983);
+emit_32(3275200528);
+emit_32(3274432512);
+emit_32(1069241755);
+emit_32(3275200528);
+emit_32(3274176528);
+emit_32(1061457513);
+emit_32(3275200528);
+emit_32(3273920545);
+emit_32(1073613814);
+emit_32(3275200528);
+emit_32(3273664496);
+emit_32(1066147869);
+emit_32(3275200528);
+emit_32(3273408512);
+emit_32(1067857803);
+emit_32(3275200528);
+emit_32(3273152528);
+emit_32(3192938482);
+emit_32(3275200528);
+emit_32(3272896545);
+emit_32(3204552258);
+emit_32(3275200528);
+emit_32(3272640496);
+emit_32(3207444717);
+emit_32(3275200528);
+emit_32(3272384512);
+emit_32(1042926373);
+emit_32(3275200528);
+emit_32(3272128528);
+emit_32(1069107873);
+emit_32(3275200528);
+emit_32(3271872545);
+emit_32(1068988587);
+emit_32(3275200528);
+emit_32(3271616496);
+emit_32(1078926571);
+emit_32(3275200528);
+emit_32(3271163904);
+emit_32(1083921610);
+emit_32(3275200528);
+emit_32(3270651937);
+emit_32(1087667710);
+emit_32(3275200528);
+emit_32(3270139970);
+emit_32(1090444214);
+emit_32(3275200528);
+emit_32(3269627871);
+emit_32(1091070528);
+emit_32(3275200528);
+emit_32(3269115904);
+emit_32(1090066034);
+emit_32(3275200528);
+emit_32(3268603937);
+emit_32(1092043900);
+emit_32(3275200528);
+emit_32(3268091970);
+emit_32(1094000103);
+emit_32(3275200528);
+emit_32(3267579911);
+emit_32(1094961752);
+emit_32(3275200528);
+emit_32(3267067904);
+emit_32(1095524208);
+emit_32(3275200528);
+emit_32(3266555911);
+emit_32(1095676356);
+emit_32(3275200528);
+emit_32(3266043904);
+emit_32(1095717880);
+emit_32(3275200528);
+emit_32(3265531911);
+emit_32(1096110676);
+emit_32(3275200528);
+emit_32(3265019904);
+emit_32(1097228249);
+emit_32(3275200528);
+emit_32(3264507911);
+emit_32(1099051146);
+emit_32(3275200528);
+emit_32(3263995904);
+emit_32(1099955228);
+emit_32(3275200528);
+emit_32(3263483911);
+emit_32(1100759119);
+emit_32(3275200528);
+emit_32(3262775296);
+emit_32(1101740848);
+emit_32(3275200528);
+emit_32(3261751309);
+emit_32(1103570928);
+emit_32(3275200528);
+emit_32(3260727296);
+emit_32(1104669783);
+emit_32(3275200528);
+emit_32(3259703309);
+emit_32(1105525316);
+emit_32(3275200528);
+emit_32(3258679296);
+emit_32(1106359248);
+emit_32(3275200528);
+emit_32(3257655309);
+emit_32(1106517269);
+emit_32(3275200528);
+emit_32(3256631296);
+emit_32(1106616045);
+emit_32(3275200528);
+emit_32(3255607309);
+emit_32(1106583906);
+emit_32(3275200528);
+emit_32(3254386688);
+emit_32(1106124944);
+emit_32(3275200528);
+emit_32(3252338714);
+emit_32(1106384676);
+emit_32(3275200528);
+emit_32(3250290688);
+emit_32(1106808354);
+emit_32(3275200528);
+emit_32(3248242714);
+emit_32(1106794879);
+emit_32(3275200528);
+emit_32(3245998080);
+emit_32(1106762741);
+emit_32(3275200528);
+emit_32(3241902132);
+emit_32(1106491369);
+emit_32(3275200528);
+emit_32(3237609472);
+emit_32(1106295705);
+emit_32(3275200528);
+emit_32(3229220864);
+emit_32(1106289675);
+emit_32(3275200528);
+emit_32(0);
+emit_32(1106247261);
+emit_32(3275200528);
+emit_32(1081737216);
+emit_32(1106249096);
+emit_32(3275200528);
+emit_32(3279552512);
+emit_32(1102201697);
+emit_32(3275456512);
+emit_32(3279296528);
+emit_32(1102659820);
+emit_32(3275456512);
+emit_32(3279040545);
+emit_32(1102694528);
+emit_32(3275456512);
+emit_32(3278784496);
+emit_32(1102926001);
+emit_32(3275456512);
+emit_32(3278528512);
+emit_32(1102847567);
+emit_32(3275456512);
+emit_32(3278272528);
+emit_32(1102512443);
+emit_32(3275456512);
+emit_32(3278016545);
+emit_32(1102182928);
+emit_32(3275456512);
+emit_32(3277760496);
+emit_32(1101754112);
+emit_32(3275456512);
+emit_32(3277504512);
+emit_32(1101220178);
+emit_32(3275456512);
+emit_32(3277248528);
+emit_32(1100092591);
+emit_32(3275456512);
+emit_32(3276992545);
+emit_32(1099095081);
+emit_32(3275456512);
+emit_32(3276736496);
+emit_32(1095841821);
+emit_32(3275456512);
+emit_32(3276480512);
+emit_32(1094285106);
+emit_32(3275456512);
+emit_32(3276224528);
+emit_32(1092426242);
+emit_32(3275456512);
+emit_32(3275968545);
+emit_32(1091118752);
+emit_32(3275456512);
+emit_32(3275712496);
+emit_32(1086196076);
+emit_32(3275456512);
+emit_32(3275456512);
+emit_32(1084558955);
+emit_32(3275456512);
+emit_32(3275200528);
+emit_32(1081694099);
+emit_32(3275456512);
+emit_32(3274944545);
+emit_32(1083225900);
+emit_32(3275456512);
+emit_32(3274688496);
+emit_32(1082574231);
+emit_32(3275456512);
+emit_32(3274432512);
+emit_32(1076364145);
+emit_32(3275456512);
+emit_32(3274176528);
+emit_32(1072545021);
+emit_32(3275456512);
+emit_32(3273920545);
+emit_32(1074334018);
+emit_32(3275456512);
+emit_32(3273664496);
+emit_32(1076300014);
+emit_32(3275456512);
+emit_32(3273408512);
+emit_32(1073720181);
+emit_32(3275456512);
+emit_32(3273152528);
+emit_32(1062607037);
+emit_32(3275456512);
+emit_32(3272896545);
+emit_32(3187287312);
+emit_32(3275456512);
+emit_32(3272640496);
+emit_32(3214601911);
+emit_32(3275456512);
+emit_32(3272384512);
+emit_32(1058984736);
+emit_32(3275456512);
+emit_32(3272128528);
+emit_32(1074596288);
+emit_32(3275456512);
+emit_32(3271872545);
+emit_32(1076067859);
+emit_32(3275456512);
+emit_32(3271616496);
+emit_32(1078353210);
+emit_32(3275456512);
+emit_32(3271163904);
+emit_32(1083728860);
+emit_32(3275456512);
+emit_32(3270651937);
+emit_32(1087570235);
+emit_32(3275456512);
+emit_32(3270139970);
+emit_32(1089274527);
+emit_32(3275456512);
+emit_32(3269627871);
+emit_32(1090698305);
+emit_32(3275456512);
+emit_32(3269115904);
+emit_32(1091459088);
+emit_32(3275456512);
+emit_32(3268603937);
+emit_32(1092135063);
+emit_32(3275456512);
+emit_32(3268091970);
+emit_32(1093474242);
+emit_32(3275456512);
+emit_32(3267579911);
+emit_32(1094959235);
+emit_32(3275456512);
+emit_32(3267067904);
+emit_32(1094655672);
+emit_32(3275456512);
+emit_32(3266555911);
+emit_32(1095034523);
+emit_32(3275456512);
+emit_32(3266043904);
+emit_32(1095524522);
+emit_32(3275456512);
+emit_32(3265531911);
+emit_32(1096032557);
+emit_32(3275456512);
+emit_32(3265019904);
+emit_32(1097045482);
+emit_32(3275456512);
+emit_32(3264507911);
+emit_32(1098064278);
+emit_32(3275456512);
+emit_32(3263995904);
+emit_32(1099811573);
+emit_32(3275456512);
+emit_32(3263483911);
+emit_32(1101577899);
+emit_32(3275456512);
+emit_32(3262775296);
+emit_32(1102983515);
+emit_32(3275456512);
+emit_32(3261751309);
+emit_32(1103562015);
+emit_32(3275456512);
+emit_32(3260727296);
+emit_32(1104461116);
+emit_32(3275456512);
+emit_32(3259703309);
+emit_32(1105235752);
+emit_32(3275456512);
+emit_32(3258679296);
+emit_32(1106329049);
+emit_32(3275456512);
+emit_32(3257655309);
+emit_32(1106693744);
+emit_32(3275456512);
+emit_32(3256631296);
+emit_32(1106663703);
+emit_32(3275456512);
+emit_32(3255607309);
+emit_32(1106416710);
+emit_32(3275456512);
+emit_32(3254386688);
+emit_32(1105642390);
+emit_32(3275456512);
+emit_32(3252338714);
+emit_32(1106355631);
+emit_32(3275456512);
+emit_32(3250290688);
+emit_32(1107058020);
+emit_32(3275456512);
+emit_32(3248242714);
+emit_32(1106806414);
+emit_32(3275456512);
+emit_32(3245998080);
+emit_32(1106545790);
+emit_32(3275456512);
+emit_32(3241902132);
+emit_32(1106234783);
+emit_32(3275456512);
+emit_32(3237609472);
+emit_32(1105605637);
+emit_32(3275456512);
+emit_32(3229220864);
+emit_32(1105327922);
+emit_32(3275456512);
+emit_32(0);
+emit_32(1104886890);
+emit_32(3275456512);
+emit_32(1081737216);
+emit_32(1105010622);
+emit_32(3275456512);
+emit_32(3279552512);
+emit_32(1101796265);
+emit_32(3275712496);
+emit_32(3279296528);
+emit_32(1102154616);
+emit_32(3275712496);
+emit_32(3279040545);
+emit_32(1102271480);
+emit_32(3275712496);
+emit_32(3278784496);
+emit_32(1102377910);
+emit_32(3275712496);
+emit_32(3278528512);
+emit_32(1102537923);
+emit_32(3275712496);
+emit_32(3278272528);
+emit_32(1102370151);
+emit_32(3275712496);
+emit_32(3278016545);
+emit_32(1101809268);
+emit_32(3275712496);
+emit_32(3277760496);
+emit_32(1101123289);
+emit_32(3275712496);
+emit_32(3277504512);
+emit_32(1100805466);
+emit_32(3275712496);
+emit_32(3277248528);
+emit_32(1100000736);
+emit_32(3275712496);
+emit_32(3276992545);
+emit_32(1098896743);
+emit_32(3275712496);
+emit_32(3276736496);
+emit_32(1095489500);
+emit_32(3275712496);
+emit_32(3276480512);
+emit_32(1092604647);
+emit_32(3275712496);
+emit_32(3276224528);
+emit_32(1089231431);
+emit_32(3275712496);
+emit_32(3275968545);
+emit_32(1086808717);
+emit_32(3275712496);
+emit_32(3275712496);
+emit_32(1083957890);
+emit_32(3275712496);
+emit_32(3275456512);
+emit_32(1083971564);
+emit_32(3275712496);
+emit_32(3275200528);
+emit_32(1083249913);
+emit_32(3275712496);
+emit_32(3274944545);
+emit_32(1084720771);
+emit_32(3275712496);
+emit_32(3274688496);
+emit_32(1082599125);
+emit_32(3275712496);
+emit_32(3274432512);
+emit_32(1079874484);
+emit_32(3275712496);
+emit_32(3274176528);
+emit_32(1080545069);
+emit_32(3275712496);
+emit_32(3273920545);
+emit_32(1078235685);
+emit_32(3275712496);
+emit_32(3273664496);
+emit_32(1080867653);
+emit_32(3275712496);
+emit_32(3273408512);
+emit_32(1082567206);
+emit_32(3275712496);
+emit_32(3273152528);
+emit_32(1074733945);
+emit_32(3275712496);
+emit_32(3272896545);
+emit_32(1058342370);
+emit_32(3275712496);
+emit_32(3272640496);
+emit_32(1055267089);
+emit_32(3275712496);
+emit_32(3272384512);
+emit_32(1075522138);
+emit_32(3275712496);
+emit_32(3272128528);
+emit_32(1080234900);
+emit_32(3275712496);
+emit_32(3271872545);
+emit_32(1080374822);
+emit_32(3275712496);
+emit_32(3271616496);
+emit_32(1083014633);
+emit_32(3275712496);
+emit_32(3271163904);
+emit_32(1084734109);
+emit_32(3275712496);
+emit_32(3270651937);
+emit_32(1087494779);
+emit_32(3275712496);
+emit_32(3270139970);
+emit_32(1088284965);
+emit_32(3275712496);
+emit_32(3269627871);
+emit_32(1089959289);
+emit_32(3275712496);
+emit_32(3269115904);
+emit_32(1090565890);
+emit_32(3275712496);
+emit_32(3268603937);
+emit_32(1091730439);
+emit_32(3275712496);
+emit_32(3268091970);
+emit_32(1093621042);
+emit_32(3275712496);
+emit_32(3267579911);
+emit_32(1094912259);
+emit_32(3275712496);
+emit_32(3267067904);
+emit_32(1094344350);
+emit_32(3275712496);
+emit_32(3266555911);
+emit_32(1094347810);
+emit_32(3275712496);
+emit_32(3266043904);
+emit_32(1095166958);
+emit_32(3275712496);
+emit_32(3265531911);
+emit_32(1096161218);
+emit_32(3275712496);
+emit_32(3265019904);
+emit_32(1097215246);
+emit_32(3275712496);
+emit_32(3264507911);
+emit_32(1099003068);
+emit_32(3275712496);
+emit_32(3263995904);
+emit_32(1100476894);
+emit_32(3275712496);
+emit_32(3263483911);
+emit_32(1102488954);
+emit_32(3275712496);
+emit_32(3262775296);
+emit_32(1103829035);
+emit_32(3275712496);
+emit_32(3261751309);
+emit_32(1104228332);
+emit_32(3275712496);
+emit_32(3260727296);
+emit_32(1103954339);
+emit_32(3275712496);
+emit_32(3259703309);
+emit_32(1104646714);
+emit_32(3275712496);
+emit_32(3258679296);
+emit_32(1105727324);
+emit_32(3275712496);
+emit_32(3257655309);
+emit_32(1106170243);
+emit_32(3275712496);
+emit_32(3256631296);
+emit_32(1106312482);
+emit_32(3275712496);
+emit_32(3255607309);
+emit_32(1106119596);
+emit_32(3275712496);
+emit_32(3254386688);
+emit_32(1105456687);
+emit_32(3275712496);
+emit_32(3252338714);
+emit_32(1106005931);
+emit_32(3275712496);
+emit_32(3250290688);
+emit_32(1106493309);
+emit_32(3275712496);
+emit_32(3248242714);
+emit_32(1106443921);
+emit_32(3275712496);
+emit_32(3245998080);
+emit_32(1106444917);
+emit_32(3275712496);
+emit_32(3241902132);
+emit_32(1105728582);
+emit_32(3275712496);
+emit_32(3237609472);
+emit_32(1105301445);
+emit_32(3275712496);
+emit_32(3229220864);
+emit_32(1104221307);
+emit_32(3275712496);
+emit_32(0);
+emit_32(1103753013);
+emit_32(3275712496);
+emit_32(1081737216);
+emit_32(1103817710);
+emit_32(3275712496);
+emit_32(3279552512);
+emit_32(1101413745);
+emit_32(3275968545);
+emit_32(3279296528);
+emit_32(1101438858);
+emit_32(3275968545);
+emit_32(3279040545);
+emit_32(1101644379);
+emit_32(3275968545);
+emit_32(3278784496);
+emit_32(1102087560);
+emit_32(3275968545);
+emit_32(3278528512);
+emit_32(1102163214);
+emit_32(3275968545);
+emit_32(3278272528);
+emit_32(1102125308);
+emit_32(3275968545);
+emit_32(3278016545);
+emit_32(1101537739);
+emit_32(3275968545);
+emit_32(3277760496);
+emit_32(1100699350);
+emit_32(3275968545);
+emit_32(3277504512);
+emit_32(1099847539);
+emit_32(3275968545);
+emit_32(3277248528);
+emit_32(1099231239);
+emit_32(3275968545);
+emit_32(3276992545);
+emit_32(1097551315);
+emit_32(3275968545);
+emit_32(3276736496);
+emit_32(1094513590);
+emit_32(3275968545);
+emit_32(3276480512);
+emit_32(1092236859);
+emit_32(3275968545);
+emit_32(3276224528);
+emit_32(1087371425);
+emit_32(3275968545);
+emit_32(3275968545);
+emit_32(1086821908);
+emit_32(3275968545);
+emit_32(3275712496);
+emit_32(1087590871);
+emit_32(3275968545);
+emit_32(3275456512);
+emit_32(1086797791);
+emit_32(3275968545);
+emit_32(3275200528);
+emit_32(1085233189);
+emit_32(3275968545);
+emit_32(3274944545);
+emit_32(1084580975);
+emit_32(3275968545);
+emit_32(3274688496);
+emit_32(1083882351);
+emit_32(3275968545);
+emit_32(3274432512);
+emit_32(1082486780);
+emit_32(3275968545);
+emit_32(3274176528);
+emit_32(1085077623);
+emit_32(3275968545);
+emit_32(3273920545);
+emit_32(1084260342);
+emit_32(3275968545);
+emit_32(3273664496);
+emit_32(1083367290);
+emit_32(3275968545);
+emit_32(3273408512);
+emit_32(1083666638);
+emit_32(3275968545);
+emit_32(3273152528);
+emit_32(1078547909);
+emit_32(3275968545);
+emit_32(3272896545);
+emit_32(1066770387);
+emit_32(3275968545);
+emit_32(3272640496);
+emit_32(1075803744);
+emit_32(3275968545);
+emit_32(3272384512);
+emit_32(1082085679);
+emit_32(3275968545);
+emit_32(3272128528);
+emit_32(1084581185);
+emit_32(3275968545);
+emit_32(3271872545);
+emit_32(1085673172);
+emit_32(3275968545);
+emit_32(3271616496);
+emit_32(1085188394);
+emit_32(3275968545);
+emit_32(3271163904);
+emit_32(1084552768);
+emit_32(3275968545);
+emit_32(3270651937);
+emit_32(1087292635);
+emit_32(3275968545);
+emit_32(3270139970);
+emit_32(1089188963);
+emit_32(3275968545);
+emit_32(3269627871);
+emit_32(1090660503);
+emit_32(3275968545);
+emit_32(3269115904);
+emit_32(1089489254);
+emit_32(3275968545);
+emit_32(3268603937);
+emit_32(1091501157);
+emit_32(3275968545);
+emit_32(3268091970);
+emit_32(1093299130);
+emit_32(3275968545);
+emit_32(3267579911);
+emit_32(1093272076);
+emit_32(3275968545);
+emit_32(3267067904);
+emit_32(1093175293);
+emit_32(3275968545);
+emit_32(3266555911);
+emit_32(1094268538);
+emit_32(3275968545);
+emit_32(3266043904);
+emit_32(1094260359);
+emit_32(3275968545);
+emit_32(3265531911);
+emit_32(1097064147);
+emit_32(3275968545);
+emit_32(3265019904);
+emit_32(1098974337);
+emit_32(3275968545);
+emit_32(3264507911);
+emit_32(1099484050);
+emit_32(3275968545);
+emit_32(3263995904);
+emit_32(1101248646);
+emit_32(3275968545);
+emit_32(3263483911);
+emit_32(1102857634);
+emit_32(3275968545);
+emit_32(3262775296);
+emit_32(1103688158);
+emit_32(3275968545);
+emit_32(3261751309);
+emit_32(1104120486);
+emit_32(3275968545);
+emit_32(3260727296);
+emit_32(1103897087);
+emit_32(3275968545);
+emit_32(3259703309);
+emit_32(1103680084);
+emit_32(3275968545);
+emit_32(3258679296);
+emit_32(1104794406);
+emit_32(3275968545);
+emit_32(3257655309);
+emit_32(1105582830);
+emit_32(3275968545);
+emit_32(3256631296);
+emit_32(1105670124);
+emit_32(3275968545);
+emit_32(3255607309);
+emit_32(1105372486);
+emit_32(3275968545);
+emit_32(3254386688);
+emit_32(1104924063);
+emit_32(3275968545);
+emit_32(3252338714);
+emit_32(1105134250);
+emit_32(3275968545);
+emit_32(3250290688);
+emit_32(1105252739);
+emit_32(3275968545);
+emit_32(3248242714);
+emit_32(1105713693);
+emit_32(3275968545);
+emit_32(3245998080);
+emit_32(1105505760);
+emit_32(3275968545);
+emit_32(3241902132);
+emit_32(1104815692);
+emit_32(3275968545);
+emit_32(3237609472);
+emit_32(1104575830);
+emit_32(3275968545);
+emit_32(3229220864);
+emit_32(1103816871);
+emit_32(3275968545);
+emit_32(0);
+emit_32(1102689547);
+emit_32(3275968545);
+emit_32(1081737216);
+emit_32(1102629726);
+emit_32(3275968545);
+emit_32(3279552512);
+emit_32(1101111021);
+emit_32(3276224528);
+emit_32(3279296528);
+emit_32(1100789580);
+emit_32(3276224528);
+emit_32(3279040545);
+emit_32(1101187724);
+emit_32(3276224528);
+emit_32(3278784496);
+emit_32(1101544450);
+emit_32(3276224528);
+emit_32(3278528512);
+emit_32(1101809215);
+emit_32(3276224528);
+emit_32(3278272528);
+emit_32(1101364409);
+emit_32(3276224528);
+emit_32(3278016545);
+emit_32(1100966999);
+emit_32(3276224528);
+emit_32(3277760496);
+emit_32(1100334603);
+emit_32(3276224528);
+emit_32(3277504512);
+emit_32(1099684538);
+emit_32(3276224528);
+emit_32(3277248528);
+emit_32(1097905000);
+emit_32(3276224528);
+emit_32(3276992545);
+emit_32(1096189949);
+emit_32(3276224528);
+emit_32(3276736496);
+emit_32(1093369908);
+emit_32(3276224528);
+emit_32(3276480512);
+emit_32(1090856430);
+emit_32(3276224528);
+emit_32(3276224528);
+emit_32(1089059569);
+emit_32(3276224528);
+emit_32(3275968545);
+emit_32(1088475764);
+emit_32(3276224528);
+emit_32(3275712496);
+emit_32(1089236128);
+emit_32(3276224528);
+emit_32(3275456512);
+emit_32(1088316066);
+emit_32(3276224528);
+emit_32(3275200528);
+emit_32(1087626375);
+emit_32(3276224528);
+emit_32(3274944545);
+emit_32(1087484629);
+emit_32(3276224528);
+emit_32(3274688496);
+emit_32(1087038397);
+emit_32(3276224528);
+emit_32(3274432512);
+emit_32(1084227794);
+emit_32(3276224528);
+emit_32(3274176528);
+emit_32(1087406111);
+emit_32(3276224528);
+emit_32(3273920545);
+emit_32(1087788003);
+emit_32(3276224528);
+emit_32(3273664496);
+emit_32(1085636639);
+emit_32(3276224528);
+emit_32(3273408512);
+emit_32(1084012206);
+emit_32(3276224528);
+emit_32(3273152528);
+emit_32(1079773149);
+emit_32(3276224528);
+emit_32(3272896545);
+emit_32(1074099640);
+emit_32(3276224528);
+emit_32(3272640496);
+emit_32(1081570199);
+emit_32(3276224528);
+emit_32(3272384512);
+emit_32(1086505511);
+emit_32(3276224528);
+emit_32(3272128528);
+emit_32(1088421783);
+emit_32(3276224528);
+emit_32(3271872545);
+emit_32(1090863057);
+emit_32(3276224528);
+emit_32(3271616496);
+emit_32(1091104240);
+emit_32(3276224528);
+emit_32(3271163904);
+emit_32(1090801149);
+emit_32(3276224528);
+emit_32(3270651937);
+emit_32(1091187329);
+emit_32(3276224528);
+emit_32(3270139970);
+emit_32(1091684071);
+emit_32(3276224528);
+emit_32(3269627871);
+emit_32(1092334691);
+emit_32(3276224528);
+emit_32(3269115904);
+emit_32(1091715549);
+emit_32(3276224528);
+emit_32(3268603937);
+emit_32(1091937239);
+emit_32(3276224528);
+emit_32(3268091970);
+emit_32(1092157765);
+emit_32(3276224528);
+emit_32(3267579911);
+emit_32(1092352643);
+emit_32(3276224528);
+emit_32(3267067904);
+emit_32(1093649249);
+emit_32(3276224528);
+emit_32(3266555911);
+emit_32(1095125015);
+emit_32(3276224528);
+emit_32(3266043904);
+emit_32(1096433743);
+emit_32(3276224528);
+emit_32(3265531911);
+emit_32(1098895694);
+emit_32(3276224528);
+emit_32(3265019904);
+emit_32(1099846805);
+emit_32(3276224528);
+emit_32(3264507911);
+emit_32(1100394109);
+emit_32(3276224528);
+emit_32(3263995904);
+emit_32(1101147301);
+emit_32(3276224528);
+emit_32(3263483911);
+emit_32(1102840332);
+emit_32(3276224528);
+emit_32(3262775296);
+emit_32(1103420352);
+emit_32(3276224528);
+emit_32(3261751309);
+emit_32(1103784994);
+emit_32(3276224528);
+emit_32(3260727296);
+emit_32(1103743890);
+emit_32(3276224528);
+emit_32(3259703309);
+emit_32(1103097863);
+emit_32(3276224528);
+emit_32(3258679296);
+emit_32(1103438807);
+emit_32(3276224528);
+emit_32(3257655309);
+emit_32(1104475534);
+emit_32(3276224528);
+emit_32(3256631296);
+emit_32(1104961811);
+emit_32(3276224528);
+emit_32(3255607309);
+emit_32(1104919763);
+emit_32(3276224528);
+emit_32(3254386688);
+emit_32(1104827174);
+emit_32(3276224528);
+emit_32(3252338714);
+emit_32(1104406905);
+emit_32(3276224528);
+emit_32(3250290688);
+emit_32(1104336860);
+emit_32(3276224528);
+emit_32(3248242714);
+emit_32(1104244218);
+emit_32(3276224528);
+emit_32(3245998080);
+emit_32(1104283592);
+emit_32(3276224528);
+emit_32(3241902132);
+emit_32(1104029627);
+emit_32(3276224528);
+emit_32(3237609472);
+emit_32(1103767326);
+emit_32(3276224528);
+emit_32(3229220864);
+emit_32(1102780406);
+emit_32(3276224528);
+emit_32(0);
+emit_32(1102353111);
+emit_32(3276224528);
+emit_32(1081737216);
+emit_32(1101834591);
+emit_32(3276224528);
+emit_32(3279552512);
+emit_32(1100665376);
+emit_32(3276480512);
+emit_32(3279296528);
+emit_32(1100635911);
+emit_32(3276480512);
+emit_32(3279040545);
+emit_32(1100599001);
+emit_32(3276480512);
+emit_32(3278784496);
+emit_32(1100704593);
+emit_32(3276480512);
+emit_32(3278528512);
+emit_32(1100706847);
+emit_32(3276480512);
+emit_32(3278272528);
+emit_32(1100641940);
+emit_32(3276480512);
+emit_32(3278016545);
+emit_32(1100067373);
+emit_32(3276480512);
+emit_32(3277760496);
+emit_32(1099870817);
+emit_32(3276480512);
+emit_32(3277504512);
+emit_32(1099360738);
+emit_32(3276480512);
+emit_32(3277248528);
+emit_32(1097705875);
+emit_32(3276480512);
+emit_32(3276992545);
+emit_32(1095158989);
+emit_32(3276480512);
+emit_32(3276736496);
+emit_32(1092654884);
+emit_32(3276480512);
+emit_32(3276480512);
+emit_32(1091569199);
+emit_32(3276480512);
+emit_32(3276224528);
+emit_32(1091162174);
+emit_32(3276480512);
+emit_32(3275968545);
+emit_32(1090619556);
+emit_32(3276480512);
+emit_32(3275712496);
+emit_32(1090709283);
+emit_32(3276480512);
+emit_32(3275456512);
+emit_32(1090001987);
+emit_32(3276480512);
+emit_32(3275200528);
+emit_32(1089948027);
+emit_32(3276480512);
+emit_32(3274944545);
+emit_32(1089924476);
+emit_32(3276480512);
+emit_32(3274688496);
+emit_32(1089951446);
+emit_32(3276480512);
+emit_32(3274432512);
+emit_32(1087795175);
+emit_32(3276480512);
+emit_32(3274176528);
+emit_32(1087558449);
+emit_32(3276480512);
+emit_32(3273920545);
+emit_32(1087330845);
+emit_32(3276480512);
+emit_32(3273664496);
+emit_32(1086250308);
+emit_32(3276480512);
+emit_32(3273408512);
+emit_32(1086015469);
+emit_32(3276480512);
+emit_32(3273152528);
+emit_32(1084541779);
+emit_32(3276480512);
+emit_32(3272896545);
+emit_32(1083402271);
+emit_32(3276480512);
+emit_32(3272640496);
+emit_32(1087092084);
+emit_32(3276480512);
+emit_32(3272384512);
+emit_32(1089818319);
+emit_32(3276480512);
+emit_32(3272128528);
+emit_32(1091233068);
+emit_32(3276480512);
+emit_32(3271872545);
+emit_32(1092479059);
+emit_32(3276480512);
+emit_32(3271616496);
+emit_32(1092547835);
+emit_32(3276480512);
+emit_32(3271163904);
+emit_32(1093621252);
+emit_32(3276480512);
+emit_32(3270651937);
+emit_32(1093588327);
+emit_32(3276480512);
+emit_32(3270139970);
+emit_32(1094120689);
+emit_32(3276480512);
+emit_32(3269627871);
+emit_32(1093722230);
+emit_32(3276480512);
+emit_32(3269115904);
+emit_32(1093927017);
+emit_32(3276480512);
+emit_32(3268603937);
+emit_32(1094469340);
+emit_32(3276480512);
+emit_32(3268091970);
+emit_32(1093549320);
+emit_32(3276480512);
+emit_32(3267579911);
+emit_32(1094062283);
+emit_32(3276480512);
+emit_32(3267067904);
+emit_32(1094889505);
+emit_32(3276480512);
+emit_32(3266555911);
+emit_32(1095517287);
+emit_32(3276480512);
+emit_32(3266043904);
+emit_32(1098112303);
+emit_32(3276480512);
+emit_32(3265531911);
+emit_32(1099944847);
+emit_32(3276480512);
+emit_32(3265019904);
+emit_32(1100805204);
+emit_32(3276480512);
+emit_32(3264507911);
+emit_32(1100813068);
+emit_32(3276480512);
+emit_32(3263995904);
+emit_32(1100890191);
+emit_32(3276480512);
+emit_32(3263483911);
+emit_32(1101765018);
+emit_32(3276480512);
+emit_32(3262775296);
+emit_32(1103166125);
+emit_32(3276480512);
+emit_32(3261751309);
+emit_32(1103581413);
+emit_32(3276480512);
+emit_32(3260727296);
+emit_32(1103239001);
+emit_32(3276480512);
+emit_32(3259703309);
+emit_32(1103115059);
+emit_32(3276480512);
+emit_32(3258679296);
+emit_32(1102634916);
+emit_32(3276480512);
+emit_32(3257655309);
+emit_32(1103117366);
+emit_32(3276480512);
+emit_32(3256631296);
+emit_32(1103874962);
+emit_32(3276480512);
+emit_32(3255607309);
+emit_32(1104123108);
+emit_32(3276480512);
+emit_32(3254386688);
+emit_32(1103935308);
+emit_32(3276480512);
+emit_32(3252338714);
+emit_32(1103665666);
+emit_32(3276480512);
+emit_32(3250290688);
+emit_32(1103444679);
+emit_32(3276480512);
+emit_32(3248242714);
+emit_32(1103627551);
+emit_32(3276480512);
+emit_32(3245998080);
+emit_32(1103736865);
+emit_32(3276480512);
+emit_32(3241902132);
+emit_32(1103212210);
+emit_32(3276480512);
+emit_32(3237609472);
+emit_32(1102649124);
+emit_32(3276480512);
+emit_32(3229220864);
+emit_32(1101755266);
+emit_32(3276480512);
+emit_32(0);
+emit_32(1101465335);
+emit_32(3276480512);
+emit_32(1081737216);
+emit_32(1101171471);
+emit_32(3276480512);
+emit_32(3279552512);
+emit_32(1100210871);
+emit_32(3276736496);
+emit_32(3279296528);
+emit_32(1100433483);
+emit_32(3276736496);
+emit_32(3279040545);
+emit_32(1099833855);
+emit_32(3276736496);
+emit_32(3278784496);
+emit_32(1100155611);
+emit_32(3276736496);
+emit_32(3278528512);
+emit_32(1099838049);
+emit_32(3276736496);
+emit_32(3278272528);
+emit_32(1100058775);
+emit_32(3276736496);
+emit_32(3278016545);
+emit_32(1099672899);
+emit_32(3276736496);
+emit_32(3277760496);
+emit_32(1099187932);
+emit_32(3276736496);
+emit_32(3277504512);
+emit_32(1098271477);
+emit_32(3276736496);
+emit_32(3277248528);
+emit_32(1096846357);
+emit_32(3276736496);
+emit_32(3276992545);
+emit_32(1094240646);
+emit_32(3276736496);
+emit_32(3276736496);
+emit_32(1093510208);
+emit_32(3276736496);
+emit_32(3276480512);
+emit_32(1093157677);
+emit_32(3276736496);
+emit_32(3276224528);
+emit_32(1093135971);
+emit_32(3276736496);
+emit_32(3275968545);
+emit_32(1092174626);
+emit_32(3276736496);
+emit_32(3275712496);
+emit_32(1092008343);
+emit_32(3276736496);
+emit_32(3275456512);
+emit_32(1091657206);
+emit_32(3276736496);
+emit_32(3275200528);
+emit_32(1090624757);
+emit_32(3276736496);
+emit_32(3274944545);
+emit_32(1091109598);
+emit_32(3276736496);
+emit_32(3274688496);
+emit_32(1091299097);
+emit_32(3276736496);
+emit_32(3274432512);
+emit_32(1091108078);
+emit_32(3276736496);
+emit_32(3274176528);
+emit_32(1088708464);
+emit_32(3276736496);
+emit_32(3273920545);
+emit_32(1088400979);
+emit_32(3276736496);
+emit_32(3273664496);
+emit_32(1088671869);
+emit_32(3276736496);
+emit_32(3273408512);
+emit_32(1086687543);
+emit_32(3276736496);
+emit_32(3273152528);
+emit_32(1087251530);
+emit_32(3276736496);
+emit_32(3272896545);
+emit_32(1088748687);
+emit_32(3276736496);
+emit_32(3272640496);
+emit_32(1089984811);
+emit_32(3276736496);
+emit_32(3272384512);
+emit_32(1091974946);
+emit_32(3276736496);
+emit_32(3272128528);
+emit_32(1092819930);
+emit_32(3276736496);
+emit_32(3271872545);
+emit_32(1093160927);
+emit_32(3276736496);
+emit_32(3271616496);
+emit_32(1094132118);
+emit_32(3276736496);
+emit_32(3271163904);
+emit_32(1095157206);
+emit_32(3276736496);
+emit_32(3270651937);
+emit_32(1095618580);
+emit_32(3276736496);
+emit_32(3270139970);
+emit_32(1096186069);
+emit_32(3276736496);
+emit_32(3269627871);
+emit_32(1095671113);
+emit_32(3276736496);
+emit_32(3269115904);
+emit_32(1095678348);
+emit_32(3276736496);
+emit_32(3268603937);
+emit_32(1095989776);
+emit_32(3276736496);
+emit_32(3268091970);
+emit_32(1095663878);
+emit_32(3276736496);
+emit_32(3267579911);
+emit_32(1095691351);
+emit_32(3276736496);
+emit_32(3267067904);
+emit_32(1096383306);
+emit_32(3276736496);
+emit_32(3266555911);
+emit_32(1097384277);
+emit_32(3276736496);
+emit_32(3266043904);
+emit_32(1099122606);
+emit_32(3276736496);
+emit_32(3265531911);
+emit_32(1100558316);
+emit_32(3276736496);
+emit_32(3265019904);
+emit_32(1101303015);
+emit_32(3276736496);
+emit_32(3264507911);
+emit_32(1101081556);
+emit_32(3276736496);
+emit_32(3263995904);
+emit_32(1100970826);
+emit_32(3276736496);
+emit_32(3263483911);
+emit_32(1101242984);
+emit_32(3276736496);
+emit_32(3262775296);
+emit_32(1102057728);
+emit_32(3276736496);
+emit_32(3261751309);
+emit_32(1102727925);
+emit_32(3276736496);
+emit_32(3260727296);
+emit_32(1102747638);
+emit_32(3276736496);
+emit_32(3259703309);
+emit_32(1102584322);
+emit_32(3276736496);
+emit_32(3258679296);
+emit_32(1102811234);
+emit_32(3276736496);
+emit_32(3257655309);
+emit_32(1102829742);
+emit_32(3276736496);
+emit_32(3256631296);
+emit_32(1103344278);
+emit_32(3276736496);
+emit_32(3255607309);
+emit_32(1103685065);
+emit_32(3276736496);
+emit_32(3254386688);
+emit_32(1103826413);
+emit_32(3276736496);
+emit_32(3252338714);
+emit_32(1103104626);
+emit_32(3276736496);
+emit_32(3250290688);
+emit_32(1102261571);
+emit_32(3276736496);
+emit_32(3248242714);
+emit_32(1102829899);
+emit_32(3276736496);
+emit_32(3245998080);
+emit_32(1103020530);
+emit_32(3276736496);
+emit_32(3241902132);
+emit_32(1102258477);
+emit_32(3276736496);
+emit_32(3237609472);
+emit_32(1101911084);
+emit_32(3276736496);
+emit_32(3229220864);
+emit_32(1101090364);
+emit_32(3276736496);
+emit_32(0);
+emit_32(1100301573);
+emit_32(3276736496);
+emit_32(1081737216);
+emit_32(1100121322);
+emit_32(3276736496);
+emit_32(3279552512);
+emit_32(1099773614);
+emit_32(3276992545);
+emit_32(3279296528);
+emit_32(1099858287);
+emit_32(3276992545);
+emit_32(3279040545);
+emit_32(1099688523);
+emit_32(3276992545);
+emit_32(3278784496);
+emit_32(1099279211);
+emit_32(3276992545);
+emit_32(3278528512);
+emit_32(1098814430);
+emit_32(3276992545);
+emit_32(3278272528);
+emit_32(1099260651);
+emit_32(3276992545);
+emit_32(3278016545);
+emit_32(1099269983);
+emit_32(3276992545);
+emit_32(3277760496);
+emit_32(1097458201);
+emit_32(3276992545);
+emit_32(3277504512);
+emit_32(1096491624);
+emit_32(3276992545);
+emit_32(3277248528);
+emit_32(1094951371);
+emit_32(3276992545);
+emit_32(3276992545);
+emit_32(1094228482);
+emit_32(3276992545);
+emit_32(3276736496);
+emit_32(1094425929);
+emit_32(3276992545);
+emit_32(3276480512);
+emit_32(1094168504);
+emit_32(3276992545);
+emit_32(3276224528);
+emit_32(1094579965);
+emit_32(3276992545);
+emit_32(3275968545);
+emit_32(1094436205);
+emit_32(3276992545);
+emit_32(3275712496);
+emit_32(1093278787);
+emit_32(3276992545);
+emit_32(3275456512);
+emit_32(1093351873);
+emit_32(3276992545);
+emit_32(3275200528);
+emit_32(1092131865);
+emit_32(3276992545);
+emit_32(3274944545);
+emit_32(1092250753);
+emit_32(3276992545);
+emit_32(3274688496);
+emit_32(1092049888);
+emit_32(3276992545);
+emit_32(3274432512);
+emit_32(1092031821);
+emit_32(3276992545);
+emit_32(3274176528);
+emit_32(1090545517);
+emit_32(3276992545);
+emit_32(3273920545);
+emit_32(1087815580);
+emit_32(3276992545);
+emit_32(3273664496);
+emit_32(1088895152);
+emit_32(3276992545);
+emit_32(3273408512);
+emit_32(1089520607);
+emit_32(3276992545);
+emit_32(3273152528);
+emit_32(1091009407);
+emit_32(3276992545);
+emit_32(3272896545);
+emit_32(1091156585);
+emit_32(3276992545);
+emit_32(3272640496);
+emit_32(1092501331);
+emit_32(3276992545);
+emit_32(3272384512);
+emit_32(1093577002);
+emit_32(3276992545);
+emit_32(3272128528);
+emit_32(1094131384);
+emit_32(3276992545);
+emit_32(3271872545);
+emit_32(1095441999);
+emit_32(3276992545);
+emit_32(3271616496);
+emit_32(1096144126);
+emit_32(3276992545);
+emit_32(3271163904);
+emit_32(1097375574);
+emit_32(3276992545);
+emit_32(3270651937);
+emit_32(1097616746);
+emit_32(3276992545);
+emit_32(3270139970);
+emit_32(1098727817);
+emit_32(3276992545);
+emit_32(3269627871);
+emit_32(1098389442);
+emit_32(3276992545);
+emit_32(3269115904);
+emit_32(1097181902);
+emit_32(3276992545);
+emit_32(3268603937);
+emit_32(1097851522);
+emit_32(3276992545);
+emit_32(3268091970);
+emit_32(1097817234);
+emit_32(3276992545);
+emit_32(3267579911);
+emit_32(1098027054);
+emit_32(3276992545);
+emit_32(3267067904);
+emit_32(1098025691);
+emit_32(3276992545);
+emit_32(3266555911);
+emit_32(1099190816);
+emit_32(3276992545);
+emit_32(3266043904);
+emit_32(1100082420);
+emit_32(3276992545);
+emit_32(3265531911);
+emit_32(1100900257);
+emit_32(3276992545);
+emit_32(3265019904);
+emit_32(1101488351);
+emit_32(3276992545);
+emit_32(3264507911);
+emit_32(1101299188);
+emit_32(3276992545);
+emit_32(3263995904);
+emit_32(1101555565);
+emit_32(3276992545);
+emit_32(3263483911);
+emit_32(1101541671);
+emit_32(3276992545);
+emit_32(3262775296);
+emit_32(1101907414);
+emit_32(3276992545);
+emit_32(3261751309);
+emit_32(1102511446);
+emit_32(3276992545);
+emit_32(3260727296);
+emit_32(1102908490);
+emit_32(3276992545);
+emit_32(3259703309);
+emit_32(1102906130);
+emit_32(3276992545);
+emit_32(3258679296);
+emit_32(1102873153);
+emit_32(3276992545);
+emit_32(3257655309);
+emit_32(1103170057);
+emit_32(3276992545);
+emit_32(3256631296);
+emit_32(1103437234);
+emit_32(3276992545);
+emit_32(3255607309);
+emit_32(1103795952);
+emit_32(3276992545);
+emit_32(3254386688);
+emit_32(1103493018);
+emit_32(3276992545);
+emit_32(3252338714);
+emit_32(1102175378);
+emit_32(3276992545);
+emit_32(3250290688);
+emit_32(1101859861);
+emit_32(3276992545);
+emit_32(3248242714);
+emit_32(1102213756);
+emit_32(3276992545);
+emit_32(3245998080);
+emit_32(1102152676);
+emit_32(3276992545);
+emit_32(3241902132);
+emit_32(1101638559);
+emit_32(3276992545);
+emit_32(3237609472);
+emit_32(1101182167);
+emit_32(3276992545);
+emit_32(3229220864);
+emit_32(1100207830);
+emit_32(3276992545);
+emit_32(0);
+emit_32(1099526308);
+emit_32(3276992545);
+emit_32(1081737216);
+emit_32(1099020213);
+emit_32(3276992545);
+emit_32(3279552512);
+emit_32(1099775187);
+emit_32(3277248528);
+emit_32(3279296528);
+emit_32(1099528667);
+emit_32(3277248528);
+emit_32(3279040545);
+emit_32(1099794376);
+emit_32(3277248528);
+emit_32(3278784496);
+emit_32(1099371223);
+emit_32(3277248528);
+emit_32(3278528512);
+emit_32(1097562220);
+emit_32(3277248528);
+emit_32(3278272528);
+emit_32(1098308597);
+emit_32(3277248528);
+emit_32(3278016545);
+emit_32(1097403885);
+emit_32(3277248528);
+emit_32(3277760496);
+emit_32(1095946050);
+emit_32(3277248528);
+emit_32(3277504512);
+emit_32(1094735364);
+emit_32(3277248528);
+emit_32(3277248528);
+emit_32(1094678007);
+emit_32(3277248528);
+emit_32(3276992545);
+emit_32(1095274332);
+emit_32(3277248528);
+emit_32(3276736496);
+emit_32(1095321728);
+emit_32(3277248528);
+emit_32(3276480512);
+emit_32(1095493170);
+emit_32(3277248528);
+emit_32(3276224528);
+emit_32(1095747135);
+emit_32(3277248528);
+emit_32(3275968545);
+emit_32(1095522216);
+emit_32(3277248528);
+emit_32(3275712496);
+emit_32(1094690590);
+emit_32(3277248528);
+emit_32(3275456512);
+emit_32(1094638056);
+emit_32(3277248528);
+emit_32(3275200528);
+emit_32(1093416570);
+emit_32(3277248528);
+emit_32(3274944545);
+emit_32(1092979314);
+emit_32(3277248528);
+emit_32(3274688496);
+emit_32(1092811961);
+emit_32(3277248528);
+emit_32(3274432512);
+emit_32(1093012554);
+emit_32(3277248528);
+emit_32(3274176528);
+emit_32(1091374384);
+emit_32(3277248528);
+emit_32(3273920545);
+emit_32(1089032851);
+emit_32(3277248528);
+emit_32(3273664496);
+emit_32(1090993437);
+emit_32(3277248528);
+emit_32(3273408512);
+emit_32(1092377368);
+emit_32(3277248528);
+emit_32(3273152528);
+emit_32(1093095077);
+emit_32(3277248528);
+emit_32(3272896545);
+emit_32(1093715519);
+emit_32(3277248528);
+emit_32(3272640496);
+emit_32(1094921486);
+emit_32(3277248528);
+emit_32(3272384512);
+emit_32(1096565129);
+emit_32(3277248528);
+emit_32(3272128528);
+emit_32(1097767112);
+emit_32(3277248528);
+emit_32(3271872545);
+emit_32(1098339005);
+emit_32(3277248528);
+emit_32(3271616496);
+emit_32(1099085958);
+emit_32(3277248528);
+emit_32(3271163904);
+emit_32(1099220281);
+emit_32(3277248528);
+emit_32(3270651937);
+emit_32(1099411227);
+emit_32(3277248528);
+emit_32(3270139970);
+emit_32(1099194958);
+emit_32(3277248528);
+emit_32(3269627871);
+emit_32(1099275174);
+emit_32(3277248528);
+emit_32(3269115904);
+emit_32(1099273968);
+emit_32(3277248528);
+emit_32(3268603937);
+emit_32(1098980681);
+emit_32(3277248528);
+emit_32(3268091970);
+emit_32(1098318243);
+emit_32(3277248528);
+emit_32(3267579911);
+emit_32(1098900413);
+emit_32(3277248528);
+emit_32(3267067904);
+emit_32(1099325086);
+emit_32(3277248528);
+emit_32(3266555911);
+emit_32(1100242695);
+emit_32(3277248528);
+emit_32(3266043904);
+emit_32(1101153383);
+emit_32(3277248528);
+emit_32(3265531911);
+emit_32(1101448505);
+emit_32(3277248528);
+emit_32(3265019904);
+emit_32(1101666976);
+emit_32(3277248528);
+emit_32(3264507911);
+emit_32(1102125203);
+emit_32(3277248528);
+emit_32(3263995904);
+emit_32(1102137996);
+emit_32(3277248528);
+emit_32(3263483911);
+emit_32(1101933104);
+emit_32(3277248528);
+emit_32(3262775296);
+emit_32(1102603669);
+emit_32(3277248528);
+emit_32(3261751309);
+emit_32(1102617615);
+emit_32(3277248528);
+emit_32(3260727296);
+emit_32(1103215355);
+emit_32(3277248528);
+emit_32(3259703309);
+emit_32(1103071281);
+emit_32(3277248528);
+emit_32(3258679296);
+emit_32(1102637957);
+emit_32(3277248528);
+emit_32(3257655309);
+emit_32(1103331118);
+emit_32(3277248528);
+emit_32(3256631296);
+emit_32(1104015943);
+emit_32(3277248528);
+emit_32(3255607309);
+emit_32(1103436710);
+emit_32(3277248528);
+emit_32(3254386688);
+emit_32(1102725618);
+emit_32(3277248528);
+emit_32(3252338714);
+emit_32(1101979084);
+emit_32(3277248528);
+emit_32(3250290688);
+emit_32(1101652401);
+emit_32(3277248528);
+emit_32(3248242714);
+emit_32(1101690778);
+emit_32(3277248528);
+emit_32(3245998080);
+emit_32(1101385643);
+emit_32(3277248528);
+emit_32(3241902132);
+emit_32(1100831785);
+emit_32(3277248528);
+emit_32(3237609472);
+emit_32(1100385721);
+emit_32(3277248528);
+emit_32(3229220864);
+emit_32(1099248645);
+emit_32(3277248528);
+emit_32(0);
+emit_32(1097731041);
+emit_32(3277248528);
+emit_32(1081737216);
+emit_32(1097108292);
+emit_32(3277248528);
+emit_32(3279552512);
+emit_32(1099513148);
+emit_32(3277504512);
+emit_32(3279296528);
+emit_32(1099237687);
+emit_32(3277504512);
+emit_32(3279040545);
+emit_32(1099823002);
+emit_32(3277504512);
+emit_32(3278784496);
+emit_32(1099636094);
+emit_32(3277504512);
+emit_32(3278528512);
+emit_32(1098146172);
+emit_32(3277504512);
+emit_32(3278272528);
+emit_32(1096179673);
+emit_32(3277504512);
+emit_32(3278016545);
+emit_32(1095619209);
+emit_32(3277504512);
+emit_32(3277760496);
+emit_32(1095051510);
+emit_32(3277504512);
+emit_32(3277504512);
+emit_32(1094914041);
+emit_32(3277504512);
+emit_32(3277248528);
+emit_32(1095143680);
+emit_32(3277504512);
+emit_32(3276992545);
+emit_32(1095686213);
+emit_32(3277504512);
+emit_32(3276736496);
+emit_32(1096167719);
+emit_32(3277504512);
+emit_32(3276480512);
+emit_32(1096217212);
+emit_32(3277504512);
+emit_32(3276224528);
+emit_32(1095494009);
+emit_32(3277504512);
+emit_32(3275968545);
+emit_32(1095282721);
+emit_32(3277504512);
+emit_32(3275712496);
+emit_32(1094864024);
+emit_32(3277504512);
+emit_32(3275456512);
+emit_32(1095079402);
+emit_32(3277504512);
+emit_32(3275200528);
+emit_32(1093909506);
+emit_32(3277504512);
+emit_32(3274944545);
+emit_32(1094085876);
+emit_32(3277504512);
+emit_32(3274688496);
+emit_32(1093922193);
+emit_32(3277504512);
+emit_32(3274432512);
+emit_32(1093002173);
+emit_32(3277504512);
+emit_32(3274176528);
+emit_32(1091809376);
+emit_32(3277504512);
+emit_32(3273920545);
+emit_32(1090895154);
+emit_32(3277504512);
+emit_32(3273664496);
+emit_32(1092994938);
+emit_32(3277504512);
+emit_32(3273408512);
+emit_32(1094548613);
+emit_32(3277504512);
+emit_32(3273152528);
+emit_32(1095987783);
+emit_32(3277504512);
+emit_32(3272896545);
+emit_32(1096416022);
+emit_32(3277504512);
+emit_32(3272640496);
+emit_32(1097685323);
+emit_32(3277504512);
+emit_32(3272384512);
+emit_32(1098440927);
+emit_32(3277504512);
+emit_32(3272128528);
+emit_32(1099405512);
+emit_32(3277504512);
+emit_32(3271872545);
+emit_32(1099913599);
+emit_32(3277504512);
+emit_32(3271616496);
+emit_32(1099823422);
+emit_32(3277504512);
+emit_32(3271163904);
+emit_32(1099863373);
+emit_32(3277504512);
+emit_32(3270651937);
+emit_32(1099663042);
+emit_32(3277504512);
+emit_32(3270139970);
+emit_32(1099637929);
+emit_32(3277504512);
+emit_32(3269627871);
+emit_32(1099948936);
+emit_32(3277504512);
+emit_32(3269115904);
+emit_32(1099967024);
+emit_32(3277504512);
+emit_32(3268603937);
+emit_32(1099787770);
+emit_32(3277504512);
+emit_32(3268091970);
+emit_32(1099629540);
+emit_32(3277504512);
+emit_32(3267579911);
+emit_32(1099729889);
+emit_32(3277504512);
+emit_32(3267067904);
+emit_32(1099959737);
+emit_32(3277504512);
+emit_32(3266555911);
+emit_32(1100461585);
+emit_32(3277504512);
+emit_32(3266043904);
+emit_32(1101443996);
+emit_32(3277504512);
+emit_32(3265531911);
+emit_32(1102161904);
+emit_32(3277504512);
+emit_32(3265019904);
+emit_32(1102642623);
+emit_32(3277504512);
+emit_32(3264507911);
+emit_32(1102254703);
+emit_32(3277504512);
+emit_32(3263995904);
+emit_32(1102207464);
+emit_32(3277504512);
+emit_32(3263483911);
+emit_32(1101959424);
+emit_32(3277504512);
+emit_32(3262775296);
+emit_32(1102549248);
+emit_32(3277504512);
+emit_32(3261751309);
+emit_32(1103235488);
+emit_32(3277504512);
+emit_32(3260727296);
+emit_32(1103408923);
+emit_32(3277504512);
+emit_32(3259703309);
+emit_32(1103077258);
+emit_32(3277504512);
+emit_32(3258679296);
+emit_32(1102537084);
+emit_32(3277504512);
+emit_32(3257655309);
+emit_32(1103679455);
+emit_32(3277504512);
+emit_32(3256631296);
+emit_32(1103709654);
+emit_32(3277504512);
+emit_32(3255607309);
+emit_32(1102899891);
+emit_32(3277504512);
+emit_32(3254386688);
+emit_32(1101944534);
+emit_32(3277504512);
+emit_32(3252338714);
+emit_32(1101169793);
+emit_32(3277504512);
+emit_32(3250290688);
+emit_32(1100964273);
+emit_32(3277504512);
+emit_32(3248242714);
+emit_32(1101176085);
+emit_32(3277504512);
+emit_32(3245998080);
+emit_32(1100580284);
+emit_32(3277504512);
+emit_32(3241902132);
+emit_32(1099596143);
+emit_32(3277504512);
+emit_32(3237609472);
+emit_32(1099177394);
+emit_32(3277504512);
+emit_32(3229220864);
+emit_32(1098487274);
+emit_32(3277504512);
+emit_32(0);
+emit_32(1096586625);
+emit_32(3277504512);
+emit_32(1081737216);
+emit_32(1096047133);
+emit_32(3277504512);
+emit_32(3279552512);
+emit_32(1099302751);
+emit_32(3277760496);
+emit_32(3279296528);
+emit_32(1099310930);
+emit_32(3277760496);
+emit_32(3279040545);
+emit_32(1099757833);
+emit_32(3277760496);
+emit_32(3278784496);
+emit_32(1099826410);
+emit_32(3277760496);
+emit_32(3278528512);
+emit_32(1098603771);
+emit_32(3277760496);
+emit_32(3278272528);
+emit_32(1096803575);
+emit_32(3277760496);
+emit_32(3278016545);
+emit_32(1095899388);
+emit_32(3277760496);
+emit_32(3277760496);
+emit_32(1096413925);
+emit_32(3277760496);
+emit_32(3277504512);
+emit_32(1096685925);
+emit_32(3277760496);
+emit_32(3277248528);
+emit_32(1096488373);
+emit_32(3277760496);
+emit_32(3276992545);
+emit_32(1096023854);
+emit_32(3277760496);
+emit_32(3276736496);
+emit_32(1096726505);
+emit_32(3277760496);
+emit_32(3276480512);
+emit_32(1097672845);
+emit_32(3277760496);
+emit_32(3276224528);
+emit_32(1097630587);
+emit_32(3277760496);
+emit_32(3275968545);
+emit_32(1097242300);
+emit_32(3277760496);
+emit_32(3275712496);
+emit_32(1096015780);
+emit_32(3277760496);
+emit_32(3275456512);
+emit_32(1095966707);
+emit_32(3277760496);
+emit_32(3275200528);
+emit_32(1094654729);
+emit_32(3277760496);
+emit_32(3274944545);
+emit_32(1094504258);
+emit_32(3277760496);
+emit_32(3274688496);
+emit_32(1093927856);
+emit_32(3277760496);
+emit_32(3274432512);
+emit_32(1092392111);
+emit_32(3277760496);
+emit_32(3274176528);
+emit_32(1091411231);
+emit_32(3277760496);
+emit_32(3273920545);
+emit_32(1093339290);
+emit_32(3277760496);
+emit_32(3273664496);
+emit_32(1095670904);
+emit_32(3277760496);
+emit_32(3273408512);
+emit_32(1096393163);
+emit_32(3277760496);
+emit_32(3273152528);
+emit_32(1098248199);
+emit_32(3277760496);
+emit_32(3272896545);
+emit_32(1099000342);
+emit_32(3277760496);
+emit_32(3272640496);
+emit_32(1099390150);
+emit_32(3277760496);
+emit_32(3272384512);
+emit_32(1099453117);
+emit_32(3277760496);
+emit_32(3272128528);
+emit_32(1100216690);
+emit_32(3277760496);
+emit_32(3271872545);
+emit_32(1100387294);
+emit_32(3277760496);
+emit_32(3271616496);
+emit_32(1100623957);
+emit_32(3277760496);
+emit_32(3271163904);
+emit_32(1100583063);
+emit_32(3277760496);
+emit_32(3270651937);
+emit_32(1100270692);
+emit_32(3277760496);
+emit_32(3270139970);
+emit_32(1100221199);
+emit_32(3277760496);
+emit_32(3269627871);
+emit_32(1100837028);
+emit_32(3277760496);
+emit_32(3269115904);
+emit_32(1100744648);
+emit_32(3277760496);
+emit_32(3268603937);
+emit_32(1100729496);
+emit_32(3277760496);
+emit_32(3268091970);
+emit_32(1100349650);
+emit_32(3277760496);
+emit_32(3267579911);
+emit_32(1100277141);
+emit_32(3277760496);
+emit_32(3267067904);
+emit_32(1100539180);
+emit_32(3277760496);
+emit_32(3266555911);
+emit_32(1101285137);
+emit_32(3277760496);
+emit_32(3266043904);
+emit_32(1101760404);
+emit_32(3277760496);
+emit_32(3265531911);
+emit_32(1102151418);
+emit_32(3277760496);
+emit_32(3265019904);
+emit_32(1102545368);
+emit_32(3277760496);
+emit_32(3264507911);
+emit_32(1102327369);
+emit_32(3277760496);
+emit_32(3263995904);
+emit_32(1102437312);
+emit_32(3277760496);
+emit_32(3263483911);
+emit_32(1102836190);
+emit_32(3277760496);
+emit_32(3262775296);
+emit_32(1103463449);
+emit_32(3277760496);
+emit_32(3261751309);
+emit_32(1103612871);
+emit_32(3277760496);
+emit_32(3260727296);
+emit_32(1103521907);
+emit_32(3277760496);
+emit_32(3259703309);
+emit_32(1102694842);
+emit_32(3277760496);
+emit_32(3258679296);
+emit_32(1102314104);
+emit_32(3277760496);
+emit_32(3257655309);
+emit_32(1103092829);
+emit_32(3277760496);
+emit_32(3256631296);
+emit_32(1102811392);
+emit_32(3277760496);
+emit_32(3255607309);
+emit_32(1102399406);
+emit_32(3277760496);
+emit_32(3254386688);
+emit_32(1101424807);
+emit_32(3277760496);
+emit_32(3252338714);
+emit_32(1100416025);
+emit_32(3277760496);
+emit_32(3250290688);
+emit_32(1099956172);
+emit_32(3277760496);
+emit_32(3248242714);
+emit_32(1100071882);
+emit_32(3277760496);
+emit_32(3245998080);
+emit_32(1099877633);
+emit_32(3277760496);
+emit_32(3241902132);
+emit_32(1099019059);
+emit_32(3277760496);
+emit_32(3237609472);
+emit_32(1098372560);
+emit_32(3277760496);
+emit_32(3229220864);
+emit_32(1097025244);
+emit_32(3277760496);
+emit_32(0);
+emit_32(1095913230);
+emit_32(3277760496);
+emit_32(1081737216);
+emit_32(1095782787);
+emit_32(3277760496);
+emit_32(3279552512);
+emit_32(1098903349);
+emit_32(3278016545);
+emit_32(3279296528);
+emit_32(1099112225);
+emit_32(3278016545);
+emit_32(3279040545);
+emit_32(1099559495);
+emit_32(3278016545);
+emit_32(3278784496);
+emit_32(1099374422);
+emit_32(3278016545);
+emit_32(3278528512);
+emit_32(1099044802);
+emit_32(3278016545);
+emit_32(3278272528);
+emit_32(1099082498);
+emit_32(3278016545);
+emit_32(3278016545);
+emit_32(1098243061);
+emit_32(3278016545);
+emit_32(3277760496);
+emit_32(1097484626);
+emit_32(3278016545);
+emit_32(3277504512);
+emit_32(1098172282);
+emit_32(3278016545);
+emit_32(3277248528);
+emit_32(1097990039);
+emit_32(3278016545);
+emit_32(3276992545);
+emit_32(1097473301);
+emit_32(3278016545);
+emit_32(3276736496);
+emit_32(1098280600);
+emit_32(3278016545);
+emit_32(3276480512);
+emit_32(1098467561);
+emit_32(3278016545);
+emit_32(3276224528);
+emit_32(1098700449);
+emit_32(3278016545);
+emit_32(3275968545);
+emit_32(1097813354);
+emit_32(3278016545);
+emit_32(3275712496);
+emit_32(1097573020);
+emit_32(3278016545);
+emit_32(3275456512);
+emit_32(1096889034);
+emit_32(3278016545);
+emit_32(3275200528);
+emit_32(1095010930);
+emit_32(3278016545);
+emit_32(3274944545);
+emit_32(1094741446);
+emit_32(3278016545);
+emit_32(3274688496);
+emit_32(1093564105);
+emit_32(3278016545);
+emit_32(3274432512);
+emit_32(1092621330);
+emit_32(3278016545);
+emit_32(3274176528);
+emit_32(1092464757);
+emit_32(3278016545);
+emit_32(3273920545);
+emit_32(1094580175);
+emit_32(3278016545);
+emit_32(3273664496);
+emit_32(1096882219);
+emit_32(3278016545);
+emit_32(3273408512);
+emit_32(1098358718);
+emit_32(3278016545);
+emit_32(3273152528);
+emit_32(1099298662);
+emit_32(3278016545);
+emit_32(3272896545);
+emit_32(1099922617);
+emit_32(3278016545);
+emit_32(3272640496);
+emit_32(1100192521);
+emit_32(3278016545);
+emit_32(3272384512);
+emit_32(1100137470);
+emit_32(3278016545);
+emit_32(3272128528);
+emit_32(1101007893);
+emit_32(3278016545);
+emit_32(3271872545);
+emit_32(1101168640);
+emit_32(3278016545);
+emit_32(3271616496);
+emit_32(1100874252);
+emit_32(3278016545);
+emit_32(3271163904);
+emit_32(1100904346);
+emit_32(3278016545);
+emit_32(3270651937);
+emit_32(1100957142);
+emit_32(3278016545);
+emit_32(3270139970);
+emit_32(1101183110);
+emit_32(3278016545);
+emit_32(3269627871);
+emit_32(1101430574);
+emit_32(3278016545);
+emit_32(3269115904);
+emit_32(1101303906);
+emit_32(3278016545);
+emit_32(3268603937);
+emit_32(1101524317);
+emit_32(3278016545);
+emit_32(3268091970);
+emit_32(1101223481);
+emit_32(3278016545);
+emit_32(3267579911);
+emit_32(1100917768);
+emit_32(3278016545);
+emit_32(3267067904);
+emit_32(1100967523);
+emit_32(3278016545);
+emit_32(3266555911);
+emit_32(1101230506);
+emit_32(3278016545);
+emit_32(3266043904);
+emit_32(1101743889);
+emit_32(3278016545);
+emit_32(3265531911);
+emit_32(1102035865);
+emit_32(3278016545);
+emit_32(3265019904);
+emit_32(1102327683);
+emit_32(3278016545);
+emit_32(3264507911);
+emit_32(1102160803);
+emit_32(3278016545);
+emit_32(3263995904);
+emit_32(1102422737);
+emit_32(3278016545);
+emit_32(3263483911);
+emit_32(1102993582);
+emit_32(3278016545);
+emit_32(3262775296);
+emit_32(1103413274);
+emit_32(3278016545);
+emit_32(3261751309);
+emit_32(1103424966);
+emit_32(3278016545);
+emit_32(3260727296);
+emit_32(1102892656);
+emit_32(3278016545);
+emit_32(3259703309);
+emit_32(1102022495);
+emit_32(3278016545);
+emit_32(3258679296);
+emit_32(1101852259);
+emit_32(3278016545);
+emit_32(3257655309);
+emit_32(1102344408);
+emit_32(3278016545);
+emit_32(3256631296);
+emit_32(1102317198);
+emit_32(3278016545);
+emit_32(3255607309);
+emit_32(1101799883);
+emit_32(3278016545);
+emit_32(3254386688);
+emit_32(1100918922);
+emit_32(3278016545);
+emit_32(3252338714);
+emit_32(1099744779);
+emit_32(3278016545);
+emit_32(3250290688);
+emit_32(1098585945);
+emit_32(3278016545);
+emit_32(3248242714);
+emit_32(1098674235);
+emit_32(3278016545);
+emit_32(3245998080);
+emit_32(1098530685);
+emit_32(3278016545);
+emit_32(3241902132);
+emit_32(1097602066);
+emit_32(3278016545);
+emit_32(3237609472);
+emit_32(1097146565);
+emit_32(3278016545);
+emit_32(3229220864);
+emit_32(1096070935);
+emit_32(3278016545);
+emit_32(0);
+emit_32(1094636379);
+emit_32(3278016545);
+emit_32(1081737216);
+emit_32(1094685347);
+emit_32(3278016545);
+emit_32(3279552512);
+emit_32(1098113142);
+emit_32(3278272528);
+emit_32(3279296528);
+emit_32(1099020003);
+emit_32(3278272528);
+emit_32(3279040545);
+emit_32(1099561016);
+emit_32(3278272528);
+emit_32(3278784496);
+emit_32(1099848273);
+emit_32(3278272528);
+emit_32(3278528512);
+emit_32(1100167460);
+emit_32(3278272528);
+emit_32(3278272528);
+emit_32(1100256431);
+emit_32(3278272528);
+emit_32(3278016545);
+emit_32(1099679872);
+emit_32(3278272528);
+emit_32(3277760496);
+emit_32(1098851759);
+emit_32(3278272528);
+emit_32(3277504512);
+emit_32(1098385562);
+emit_32(3278272528);
+emit_32(3277248528);
+emit_32(1098603142);
+emit_32(3278272528);
+emit_32(3276992545);
+emit_32(1098517158);
+emit_32(3278272528);
+emit_32(3276736496);
+emit_32(1098595697);
+emit_32(3278272528);
+emit_32(3276480512);
+emit_32(1097738591);
+emit_32(3278272528);
+emit_32(3276224528);
+emit_32(1097722757);
+emit_32(3278272528);
+emit_32(3275968545);
+emit_32(1097226886);
+emit_32(3278272528);
+emit_32(3275712496);
+emit_32(1097415629);
+emit_32(3278272528);
+emit_32(3275456512);
+emit_32(1096617873);
+emit_32(3278272528);
+emit_32(3275200528);
+emit_32(1095510786);
+emit_32(3278272528);
+emit_32(3274944545);
+emit_32(1095328858);
+emit_32(3278272528);
+emit_32(3274688496);
+emit_32(1093740999);
+emit_32(3278272528);
+emit_32(3274432512);
+emit_32(1092633598);
+emit_32(3278272528);
+emit_32(3274176528);
+emit_32(1095320155);
+emit_32(3278272528);
+emit_32(3273920545);
+emit_32(1096140771);
+emit_32(3278272528);
+emit_32(3273664496);
+emit_32(1097600808);
+emit_32(3278272528);
+emit_32(3273408512);
+emit_32(1098894960);
+emit_32(3278272528);
+emit_32(3273152528);
+emit_32(1099788032);
+emit_32(3278272528);
+emit_32(3272896545);
+emit_32(1100230112);
+emit_32(3278272528);
+emit_32(3272640496);
+emit_32(1100219731);
+emit_32(3278272528);
+emit_32(3272384512);
+emit_32(1100734897);
+emit_32(3278272528);
+emit_32(3272128528);
+emit_32(1101173726);
+emit_32(3278272528);
+emit_32(3271872545);
+emit_32(1101152072);
+emit_32(3278272528);
+emit_32(3271616496);
+emit_32(1101550479);
+emit_32(3278272528);
+emit_32(3271163904);
+emit_32(1101252736);
+emit_32(3278272528);
+emit_32(3270651937);
+emit_32(1101467694);
+emit_32(3278272528);
+emit_32(3270139970);
+emit_32(1101808009);
+emit_32(3278272528);
+emit_32(3269627871);
+emit_32(1101705930);
+emit_32(3278272528);
+emit_32(3269115904);
+emit_32(1102054110);
+emit_32(3278272528);
+emit_32(3268603937);
+emit_32(1102131180);
+emit_32(3278272528);
+emit_32(3268091970);
+emit_32(1101898868);
+emit_32(3278272528);
+emit_32(3267579911);
+emit_32(1101280313);
+emit_32(3278272528);
+emit_32(3267067904);
+emit_32(1100809188);
+emit_32(3278272528);
+emit_32(3266555911);
+emit_32(1101005429);
+emit_32(3278272528);
+emit_32(3266043904);
+emit_32(1101565631);
+emit_32(3278272528);
+emit_32(3265531911);
+emit_32(1101958585);
+emit_32(3278272528);
+emit_32(3265019904);
+emit_32(1102447903);
+emit_32(3278272528);
+emit_32(3264507911);
+emit_32(1102259526);
+emit_32(3278272528);
+emit_32(3263995904);
+emit_32(1102073456);
+emit_32(3278272528);
+emit_32(3263483911);
+emit_32(1102367372);
+emit_32(3278272528);
+emit_32(3262775296);
+emit_32(1102600104);
+emit_32(3278272528);
+emit_32(3261751309);
+emit_32(1102289935);
+emit_32(3278272528);
+emit_32(3260727296);
+emit_32(1101835692);
+emit_32(3278272528);
+emit_32(3259703309);
+emit_32(1101049364);
+emit_32(3278272528);
+emit_32(3258679296);
+emit_32(1100957929);
+emit_32(3278272528);
+emit_32(3257655309);
+emit_32(1101280366);
+emit_32(3278272528);
+emit_32(3256631296);
+emit_32(1101113432);
+emit_32(3278272528);
+emit_32(3255607309);
+emit_32(1100449789);
+emit_32(3278272528);
+emit_32(3254386688);
+emit_32(1099921726);
+emit_32(3278272528);
+emit_32(3252338714);
+emit_32(1098223138);
+emit_32(3278272528);
+emit_32(3250290688);
+emit_32(1095989776);
+emit_32(3278272528);
+emit_32(3248242714);
+emit_32(1095913754);
+emit_32(3278272528);
+emit_32(3245998080);
+emit_32(1096548981);
+emit_32(3278272528);
+emit_32(3241902132);
+emit_32(1095493380);
+emit_32(3278272528);
+emit_32(3237609472);
+emit_32(1095273074);
+emit_32(3278272528);
+emit_32(3229220864);
+emit_32(1094758957);
+emit_32(3278272528);
+emit_32(0);
+emit_32(1093715414);
+emit_32(3278272528);
+emit_32(1081737216);
+emit_32(1093100529);
+emit_32(3278272528);
+emit_32(3279552512);
+emit_32(1098580387);
+emit_32(3278528512);
+emit_32(3279296528);
+emit_32(1099781479);
+emit_32(3278528512);
+emit_32(3279040545);
+emit_32(1100398041);
+emit_32(3278528512);
+emit_32(3278784496);
+emit_32(1100822715);
+emit_32(3278528512);
+emit_32(3278528512);
+emit_32(1100898841);
+emit_32(3278528512);
+emit_32(3278272528);
+emit_32(1100936538);
+emit_32(3278528512);
+emit_32(3278016545);
+emit_32(1100571528);
+emit_32(3278528512);
+emit_32(3277760496);
+emit_32(1099431674);
+emit_32(3278528512);
+emit_32(3277504512);
+emit_32(1098338586);
+emit_32(3278528512);
+emit_32(3277248528);
+emit_32(1098519046);
+emit_32(3278528512);
+emit_32(3276992545);
+emit_32(1098311533);
+emit_32(3278528512);
+emit_32(3276736496);
+emit_32(1097988991);
+emit_32(3278528512);
+emit_32(3276480512);
+emit_32(1097511993);
+emit_32(3278528512);
+emit_32(3276224528);
+emit_32(1097291373);
+emit_32(3278528512);
+emit_32(3275968545);
+emit_32(1096949852);
+emit_32(3278528512);
+emit_32(3275712496);
+emit_32(1096869007);
+emit_32(3278528512);
+emit_32(3275456512);
+emit_32(1096154717);
+emit_32(3278528512);
+emit_32(3275200528);
+emit_32(1096008126);
+emit_32(3278528512);
+emit_32(3274944545);
+emit_32(1096113612);
+emit_32(3278528512);
+emit_32(3274688496);
+emit_32(1094873986);
+emit_32(3278528512);
+emit_32(3274432512);
+emit_32(1094166512);
+emit_32(3278528512);
+emit_32(3274176528);
+emit_32(1095465592);
+emit_32(3278528512);
+emit_32(3273920545);
+emit_32(1096875193);
+emit_32(3278528512);
+emit_32(3273664496);
+emit_32(1098212128);
+emit_32(3278528512);
+emit_32(3273408512);
+emit_32(1099232497);
+emit_32(3278528512);
+emit_32(3273152528);
+emit_32(1099782003);
+emit_32(3278528512);
+emit_32(3272896545);
+emit_32(1100205261);
+emit_32(3278528512);
+emit_32(3272640496);
+emit_32(1100910690);
+emit_32(3278528512);
+emit_32(3272384512);
+emit_32(1100846098);
+emit_32(3278528512);
+emit_32(3272128528);
+emit_32(1101316856);
+emit_32(3278528512);
+emit_32(3271872545);
+emit_32(1101188668);
+emit_32(3278528512);
+emit_32(3271616496);
+emit_32(1101462451);
+emit_32(3278528512);
+emit_32(3271163904);
+emit_32(1102020713);
+emit_32(3278528512);
+emit_32(3270651937);
+emit_32(1101996543);
+emit_32(3278528512);
+emit_32(3270139970);
+emit_32(1102033138);
+emit_32(3278528512);
+emit_32(3269627871);
+emit_32(1102145231);
+emit_32(3278528512);
+emit_32(3269115904);
+emit_32(1102204423);
+emit_32(3278528512);
+emit_32(3268603937);
+emit_32(1102633396);
+emit_32(3278528512);
+emit_32(3268091970);
+emit_32(1102830685);
+emit_32(3278528512);
+emit_32(3267579911);
+emit_32(1102366271);
+emit_32(3278528512);
+emit_32(3267067904);
+emit_32(1101693819);
+emit_32(3278528512);
+emit_32(3266555911);
+emit_32(1100984300);
+emit_32(3278528512);
+emit_32(3266043904);
+emit_32(1101757311);
+emit_32(3278528512);
+emit_32(3265531911);
+emit_32(1102038486);
+emit_32(3278528512);
+emit_32(3265019904);
+emit_32(1102416078);
+emit_32(3278528512);
+emit_32(3264507911);
+emit_32(1102030360);
+emit_32(3278528512);
+emit_32(3263995904);
+emit_32(1101690831);
+emit_32(3278528512);
+emit_32(3263483911);
+emit_32(1101744256);
+emit_32(3278528512);
+emit_32(3262775296);
+emit_32(1101786199);
+emit_32(3278528512);
+emit_32(3261751309);
+emit_32(1101134142);
+emit_32(3278528512);
+emit_32(3260727296);
+emit_32(1100560990);
+emit_32(3278528512);
+emit_32(3259703309);
+emit_32(1099935148);
+emit_32(3278528512);
+emit_32(3258679296);
+emit_32(1099979765);
+emit_32(3278528512);
+emit_32(3257655309);
+emit_32(1100145597);
+emit_32(3278528512);
+emit_32(3256631296);
+emit_32(1099694499);
+emit_32(3278528512);
+emit_32(3255607309);
+emit_32(1099317589);
+emit_32(3278528512);
+emit_32(3254386688);
+emit_32(1098312896);
+emit_32(3278528512);
+emit_32(3252338714);
+emit_32(1096783967);
+emit_32(3278528512);
+emit_32(3250290688);
+emit_32(1094909218);
+emit_32(3278528512);
+emit_32(3248242714);
+emit_32(1094802158);
+emit_32(3278528512);
+emit_32(3245998080);
+emit_32(1094635749);
+emit_32(3278528512);
+emit_32(3241902132);
+emit_32(1093985423);
+emit_32(3278528512);
+emit_32(3237609472);
+emit_32(1093684376);
+emit_32(3278528512);
+emit_32(3229220864);
+emit_32(1092749885);
+emit_32(3278528512);
+emit_32(0);
+emit_32(1092334471);
+emit_32(3278528512);
+emit_32(1081737216);
+emit_32(1091412678);
+emit_32(3278528512);
+emit_32(3279552512);
+emit_32(1099246495);
+emit_32(3278784496);
+emit_32(3279296528);
+emit_32(1100406168);
+emit_32(3278784496);
+emit_32(3279040545);
+emit_32(1100809188);
+emit_32(3278784496);
+emit_32(3278784496);
+emit_32(1101173726);
+emit_32(3278784496);
+emit_32(3278528512);
+emit_32(1101440798);
+emit_32(3278784496);
+emit_32(3278272528);
+emit_32(1101323148);
+emit_32(3278784496);
+emit_32(3278016545);
+emit_32(1100602724);
+emit_32(3278784496);
+emit_32(3277760496);
+emit_32(1099957325);
+emit_32(3278784496);
+emit_32(3277504512);
+emit_32(1099164077);
+emit_32(3278784496);
+emit_32(3277248528);
+emit_32(1098681680);
+emit_32(3278784496);
+emit_32(3276992545);
+emit_32(1098343724);
+emit_32(3278784496);
+emit_32(3276736496);
+emit_32(1097173198);
+emit_32(3278784496);
+emit_32(3276480512);
+emit_32(1097496684);
+emit_32(3278784496);
+emit_32(3276224528);
+emit_32(1096577607);
+emit_32(3278784496);
+emit_32(3275968545);
+emit_32(1096202217);
+emit_32(3278784496);
+emit_32(3275712496);
+emit_32(1095980968);
+emit_32(3278784496);
+emit_32(3275456512);
+emit_32(1095241407);
+emit_32(3278784496);
+emit_32(3275200528);
+emit_32(1095384223);
+emit_32(3278784496);
+emit_32(3274944545);
+emit_32(1095777649);
+emit_32(3278784496);
+emit_32(3274688496);
+emit_32(1095404356);
+emit_32(3278784496);
+emit_32(3274432512);
+emit_32(1096055626);
+emit_32(3278784496);
+emit_32(3274176528);
+emit_32(1096762996);
+emit_32(3278784496);
+emit_32(3273920545);
+emit_32(1097732404);
+emit_32(3278784496);
+emit_32(3273664496);
+emit_32(1099124913);
+emit_32(3278784496);
+emit_32(3273408512);
+emit_32(1099487615);
+emit_32(3278784496);
+emit_32(3273152528);
+emit_32(1099905263);
+emit_32(3278784496);
+emit_32(3272896545);
+emit_32(1100576090);
+emit_32(3278784496);
+emit_32(3272640496);
+emit_32(1101366716);
+emit_32(3278784496);
+emit_32(3272384512);
+emit_32(1100955150);
+emit_32(3278784496);
+emit_32(3272128528);
+emit_32(1101465911);
+emit_32(3278784496);
+emit_32(3271872545);
+emit_32(1101897872);
+emit_32(3278784496);
+emit_32(3271616496);
+emit_32(1101968074);
+emit_32(3278784496);
+emit_32(3271163904);
+emit_32(1102322545);
+emit_32(3278784496);
+emit_32(3270651937);
+emit_32(1102468507);
+emit_32(3278784496);
+emit_32(3270139970);
+emit_32(1102636699);
+emit_32(3278784496);
+emit_32(3269627871);
+emit_32(1102593812);
+emit_32(3278784496);
+emit_32(3269115904);
+emit_32(1102955781);
+emit_32(3278784496);
+emit_32(3268603937);
+emit_32(1103423183);
+emit_32(3278784496);
+emit_32(3268091970);
+emit_32(1103413484);
+emit_32(3278784496);
+emit_32(3267579911);
+emit_32(1103118467);
+emit_32(3278784496);
+emit_32(3267067904);
+emit_32(1102692536);
+emit_32(3278784496);
+emit_32(3266555911);
+emit_32(1101705878);
+emit_32(3278784496);
+emit_32(3266043904);
+emit_32(1101340082);
+emit_32(3278784496);
+emit_32(3265531911);
+emit_32(1102200596);
+emit_32(3278784496);
+emit_32(3265019904);
+emit_32(1102209457);
+emit_32(3278784496);
+emit_32(3264507911);
+emit_32(1101833280);
+emit_32(3278784496);
+emit_32(3263995904);
+emit_32(1101273812);
+emit_32(3278784496);
+emit_32(3263483911);
+emit_32(1101051042);
+emit_32(3278784496);
+emit_32(3262775296);
+emit_32(1100997722);
+emit_32(3278784496);
+emit_32(3261751309);
+emit_32(1100555118);
+emit_32(3278784496);
+emit_32(3260727296);
+emit_32(1099388420);
+emit_32(3278784496);
+emit_32(3259703309);
+emit_32(1098921070);
+emit_32(3278784496);
+emit_32(3258679296);
+emit_32(1098291295);
+emit_32(3278784496);
+emit_32(3257655309);
+emit_32(1097914751);
+emit_32(3278784496);
+emit_32(3256631296);
+emit_32(1098783811);
+emit_32(3278784496);
+emit_32(3255607309);
+emit_32(1097200986);
+emit_32(3278784496);
+emit_32(3254386688);
+emit_32(1095754580);
+emit_32(3278784496);
+emit_32(3252338714);
+emit_32(1094603034);
+emit_32(3278784496);
+emit_32(3250290688);
+emit_32(1092756596);
+emit_32(3278784496);
+emit_32(3248242714);
+emit_32(1093057118);
+emit_32(3278784496);
+emit_32(3245998080);
+emit_32(1093385742);
+emit_32(3278784496);
+emit_32(3241902132);
+emit_32(1092478325);
+emit_32(3278784496);
+emit_32(3237609472);
+emit_32(1091460850);
+emit_32(3278784496);
+emit_32(3229220864);
+emit_32(1090737647);
+emit_32(3278784496);
+emit_32(0);
+emit_32(1090290346);
+emit_32(3278784496);
+emit_32(1081737216);
+emit_32(1090509120);
+emit_32(3278784496);
+emit_32(3279552512);
+emit_32(1099149345);
+emit_32(3279040545);
+emit_32(3279296528);
+emit_32(1100408318);
+emit_32(3279040545);
+emit_32(3279040545);
+emit_32(1100800170);
+emit_32(3279040545);
+emit_32(3278784496);
+emit_32(1101432986);
+emit_32(3279040545);
+emit_32(3278528512);
+emit_32(1101564058);
+emit_32(3279040545);
+emit_32(3278272528);
+emit_32(1101179755);
+emit_32(3279040545);
+emit_32(3278016545);
+emit_32(1100480145);
+emit_32(3279040545);
+emit_32(3277760496);
+emit_32(1099858759);
+emit_32(3279040545);
+emit_32(3277504512);
+emit_32(1099623354);
+emit_32(3279040545);
+emit_32(3277248528);
+emit_32(1098996934);
+emit_32(3279040545);
+emit_32(3276992545);
+emit_32(1098237818);
+emit_32(3279040545);
+emit_32(3276736496);
+emit_32(1097341285);
+emit_32(3279040545);
+emit_32(3276480512);
+emit_32(1096845414);
+emit_32(3279040545);
+emit_32(3276224528);
+emit_32(1095838571);
+emit_32(3279040545);
+emit_32(3275968545);
+emit_32(1095836998);
+emit_32(3279040545);
+emit_32(3275712496);
+emit_32(1095004114);
+emit_32(3279040545);
+emit_32(3275456512);
+emit_32(1094881011);
+emit_32(3279040545);
+emit_32(3275200528);
+emit_32(1094801529);
+emit_32(3279040545);
+emit_32(3274944545);
+emit_32(1093872281);
+emit_32(3279040545);
+emit_32(3274688496);
+emit_32(1094479197);
+emit_32(3279040545);
+emit_32(3274432512);
+emit_32(1096306341);
+emit_32(3279040545);
+emit_32(3274176528);
+emit_32(1096403334);
+emit_32(3279040545);
+emit_32(3273920545);
+emit_32(1097374315);
+emit_32(3279040545);
+emit_32(3273664496);
+emit_32(1098966788);
+emit_32(3279040545);
+emit_32(3273408512);
+emit_32(1099462921);
+emit_32(3279040545);
+emit_32(3273152528);
+emit_32(1099984903);
+emit_32(3279040545);
+emit_32(3272896545);
+emit_32(1101000973);
+emit_32(3279040545);
+emit_32(3272640496);
+emit_32(1101297982);
+emit_32(3279040545);
+emit_32(3272384512);
+emit_32(1101298506);
+emit_32(3279040545);
+emit_32(3272128528);
+emit_32(1101350044);
+emit_32(3279040545);
+emit_32(3271872545);
+emit_32(1102416393);
+emit_32(3279040545);
+emit_32(3271616496);
+emit_32(1102828588);
+emit_32(3279040545);
+emit_32(3271163904);
+emit_32(1103097810);
+emit_32(3279040545);
+emit_32(3270651937);
+emit_32(1103270825);
+emit_32(3279040545);
+emit_32(3270139970);
+emit_32(1103513256);
+emit_32(3279040545);
+emit_32(3269627871);
+emit_32(1103154119);
+emit_32(3279040545);
+emit_32(3269115904);
+emit_32(1103932214);
+emit_32(3279040545);
+emit_32(3268603937);
+emit_32(1103727532);
+emit_32(3279040545);
+emit_32(3268091970);
+emit_32(1103627393);
+emit_32(3279040545);
+emit_32(3267579911);
+emit_32(1103400272);
+emit_32(3279040545);
+emit_32(3267067904);
+emit_32(1103403365);
+emit_32(3279040545);
+emit_32(3266555911);
+emit_32(1102403496);
+emit_32(3279040545);
+emit_32(3266043904);
+emit_32(1101353556);
+emit_32(3279040545);
+emit_32(3265531911);
+emit_32(1101619213);
+emit_32(3279040545);
+emit_32(3265019904);
+emit_32(1102006295);
+emit_32(3279040545);
+emit_32(3264507911);
+emit_32(1101503503);
+emit_32(3279040545);
+emit_32(3263995904);
+emit_32(1100538131);
+emit_32(3279040545);
+emit_32(3263483911);
+emit_32(1100080271);
+emit_32(3279040545);
+emit_32(3262775296);
+emit_32(1099418881);
+emit_32(3279040545);
+emit_32(3261751309);
+emit_32(1099399430);
+emit_32(3279040545);
+emit_32(3260727296);
+emit_32(1099101215);
+emit_32(3279040545);
+emit_32(3259703309);
+emit_32(1097408394);
+emit_32(3279040545);
+emit_32(3258679296);
+emit_32(1096341468);
+emit_32(3279040545);
+emit_32(3257655309);
+emit_32(1095779641);
+emit_32(3279040545);
+emit_32(3256631296);
+emit_32(1094671296);
+emit_32(3279040545);
+emit_32(3255607309);
+emit_32(1094154977);
+emit_32(3279040545);
+emit_32(3254386688);
+emit_32(1092748732);
+emit_32(3279040545);
+emit_32(3252338714);
+emit_32(1091621345);
+emit_32(3279040545);
+emit_32(3250290688);
+emit_32(1090704869);
+emit_32(3279040545);
+emit_32(3248242714);
+emit_32(1090960134);
+emit_32(3279040545);
+emit_32(3245998080);
+emit_32(1090657442);
+emit_32(3279040545);
+emit_32(3241902132);
+emit_32(1089905497);
+emit_32(3279040545);
+emit_32(3237609472);
+emit_32(1088557112);
+emit_32(3279040545);
+emit_32(3229220864);
+emit_32(1086833925);
+emit_32(3279040545);
+emit_32(0);
+emit_32(1087077467);
+emit_32(3279040545);
+emit_32(1081737216);
+emit_32(1087170664);
+emit_32(3279040545);
+emit_32(3279552512);
+emit_32(1099250847);
+emit_32(3279296528);
+emit_32(3279296528);
+emit_32(1099782632);
+emit_32(3279296528);
+emit_32(3279040545);
+emit_32(1100353372);
+emit_32(3279296528);
+emit_32(3278784496);
+emit_32(1101212785);
+emit_32(3279296528);
+emit_32(3278528512);
+emit_32(1101165494);
+emit_32(3279296528);
+emit_32(3278272528);
+emit_32(1101113957);
+emit_32(3279296528);
+emit_32(3278016545);
+emit_32(1100762736);
+emit_32(3279296528);
+emit_32(3277760496);
+emit_32(1099820381);
+emit_32(3279296528);
+emit_32(3277504512);
+emit_32(1099259340);
+emit_32(3279296528);
+emit_32(3277248528);
+emit_32(1098864027);
+emit_32(3279296528);
+emit_32(3276992545);
+emit_32(1097692558);
+emit_32(3279296528);
+emit_32(3276736496);
+emit_32(1097396755);
+emit_32(3279296528);
+emit_32(3276480512);
+emit_32(1096710776);
+emit_32(3279296528);
+emit_32(3276224528);
+emit_32(1095208586);
+emit_32(3279296528);
+emit_32(3275968545);
+emit_32(1094436625);
+emit_32(3279296528);
+emit_32(3275712496);
+emit_32(1094237605);
+emit_32(3279296528);
+emit_32(3275456512);
+emit_32(1093631948);
+emit_32(3279296528);
+emit_32(3275200528);
+emit_32(1093328699);
+emit_32(3279296528);
+emit_32(3274944545);
+emit_32(1093335096);
+emit_32(3279296528);
+emit_32(3274688496);
+emit_32(1093281199);
+emit_32(3279296528);
+emit_32(3274432512);
+emit_32(1094777307);
+emit_32(3279296528);
+emit_32(3274176528);
+emit_32(1095041653);
+emit_32(3279296528);
+emit_32(3273920545);
+emit_32(1096648281);
+emit_32(3279296528);
+emit_32(3273664496);
+emit_32(1098228380);
+emit_32(3279296528);
+emit_32(3273408512);
+emit_32(1099209114);
+emit_32(3279296528);
+emit_32(3273152528);
+emit_32(1099931582);
+emit_32(3279296528);
+emit_32(3272896545);
+emit_32(1100442291);
+emit_32(3279296528);
+emit_32(3272640496);
+emit_32(1100819359);
+emit_32(3279296528);
+emit_32(3272384512);
+emit_32(1101023045);
+emit_32(3279296528);
+emit_32(3272128528);
+emit_32(1101474877);
+emit_32(3279296528);
+emit_32(3271872545);
+emit_32(1102424624);
+emit_32(3279296528);
+emit_32(3271616496);
+emit_32(1103221962);
+emit_32(3279296528);
+emit_32(3271163904);
+emit_32(1103274757);
+emit_32(3279296528);
+emit_32(3270651937);
+emit_32(1103895200);
+emit_32(3279296528);
+emit_32(3270139970);
+emit_32(1104182824);
+emit_32(3279296528);
+emit_32(3269627871);
+emit_32(1104099462);
+emit_32(3279296528);
+emit_32(3269115904);
+emit_32(1103825102);
+emit_32(3279296528);
+emit_32(3268603937);
+emit_32(1104155037);
+emit_32(3279296528);
+emit_32(3268091970);
+emit_32(1104133122);
+emit_32(3279296528);
+emit_32(3267579911);
+emit_32(1103855721);
+emit_32(3279296528);
+emit_32(3267067904);
+emit_32(1103437391);
+emit_32(3279296528);
+emit_32(3266555911);
+emit_32(1102382472);
+emit_32(3279296528);
+emit_32(3266043904);
+emit_32(1101496425);
+emit_32(3279296528);
+emit_32(3265531911);
+emit_32(1101309673);
+emit_32(3279296528);
+emit_32(3265019904);
+emit_32(1101136973);
+emit_32(3279296528);
+emit_32(3264507911);
+emit_32(1100555957);
+emit_32(3279296528);
+emit_32(3263995904);
+emit_32(1099877161);
+emit_32(3279296528);
+emit_32(3263483911);
+emit_32(1099240414);
+emit_32(3279296528);
+emit_32(3262775296);
+emit_32(1098818938);
+emit_32(3279296528);
+emit_32(3261751309);
+emit_32(1097030487);
+emit_32(3279296528);
+emit_32(3260727296);
+emit_32(1096386557);
+emit_32(3279296528);
+emit_32(3259703309);
+emit_32(1095308516);
+emit_32(3279296528);
+emit_32(3258679296);
+emit_32(1093918733);
+emit_32(3279296528);
+emit_32(3257655309);
+emit_32(1093062885);
+emit_32(3279296528);
+emit_32(3256631296);
+emit_32(1092790780);
+emit_32(3279296528);
+emit_32(3255607309);
+emit_32(1091773189);
+emit_32(3279296528);
+emit_32(3254386688);
+emit_32(1089177744);
+emit_32(3279296528);
+emit_32(3252338714);
+emit_32(1085799588);
+emit_32(3279296528);
+emit_32(3250290688);
+emit_32(1085098154);
+emit_32(3279296528);
+emit_32(3248242714);
+emit_32(1086394194);
+emit_32(3279296528);
+emit_32(3245998080);
+emit_32(1086183912);
+emit_32(3279296528);
+emit_32(3241902132);
+emit_32(1084926145);
+emit_32(3279296528);
+emit_32(3237609472);
+emit_32(1085235454);
+emit_32(3279296528);
+emit_32(3229220864);
+emit_32(1084071682);
+emit_32(3279296528);
+emit_32(0);
+emit_32(1084345968);
+emit_32(3279296528);
+emit_32(1081737216);
+emit_32(1086522393);
+emit_32(3279296528);
+emit_32(3279552512);
+emit_32(1099558709);
+emit_32(3279552512);
+emit_32(3279296528);
+emit_32(1099939394);
+emit_32(3279552512);
+emit_32(3279040545);
+emit_32(1100668731);
+emit_32(3279552512);
+emit_32(3278784496);
+emit_32(1100652321);
+emit_32(3279552512);
+emit_32(3278528512);
+emit_32(1101087375);
+emit_32(3279552512);
+emit_32(3278272528);
+emit_32(1100952319);
+emit_32(3279552512);
+emit_32(3278016545);
+emit_32(1100463787);
+emit_32(3279552512);
+emit_32(3277760496);
+emit_32(1099835428);
+emit_32(3279552512);
+emit_32(3277504512);
+emit_32(1098509084);
+emit_32(3279552512);
+emit_32(3277248528);
+emit_32(1097497838);
+emit_32(3279552512);
+emit_32(3276992545);
+emit_32(1095815817);
+emit_32(3279552512);
+emit_32(3276736496);
+emit_32(1096394106);
+emit_32(3279552512);
+emit_32(3276480512);
+emit_32(1095914488);
+emit_32(3279552512);
+emit_32(3276224528);
+emit_32(1094719216);
+emit_32(3279552512);
+emit_32(3275968545);
+emit_32(1093850681);
+emit_32(3279552512);
+emit_32(3275712496);
+emit_32(1093377773);
+emit_32(3279552512);
+emit_32(3275456512);
+emit_32(1092882845);
+emit_32(3279552512);
+emit_32(3275200528);
+emit_32(1092368613);
+emit_32(3279552512);
+emit_32(3274944545);
+emit_32(1091574149);
+emit_32(3279552512);
+emit_32(3274688496);
+emit_32(1092064893);
+emit_32(3279552512);
+emit_32(3274432512);
+emit_32(1093456206);
+emit_32(3279552512);
+emit_32(3274176528);
+emit_32(1095174193);
+emit_32(3279552512);
+emit_32(3273920545);
+emit_32(1096573098);
+emit_32(3279552512);
+emit_32(3273664496);
+emit_32(1096908852);
+emit_32(3279552512);
+emit_32(3273408512);
+emit_32(1098744804);
+emit_32(3279552512);
+emit_32(3273152528);
+emit_32(1099535483);
+emit_32(3279552512);
+emit_32(3272896545);
+emit_32(1099936825);
+emit_32(3279552512);
+emit_32(3272640496);
+emit_32(1100672506);
+emit_32(3279552512);
+emit_32(3272384512);
+emit_32(1101166805);
+emit_32(3279552512);
+emit_32(3272128528);
+emit_32(1102004250);
+emit_32(3279552512);
+emit_32(3271872545);
+emit_32(1102491838);
+emit_32(3279552512);
+emit_32(3271616496);
+emit_32(1103105779);
+emit_32(3279552512);
+emit_32(3271163904);
+emit_32(1103782950);
+emit_32(3279552512);
+emit_32(3270651937);
+emit_32(1104304878);
+emit_32(3279552512);
+emit_32(3270139970);
+emit_32(1104909802);
+emit_32(3279552512);
+emit_32(3269627871);
+emit_32(1104927680);
+emit_32(3279552512);
+emit_32(3269115904);
+emit_32(1104823452);
+emit_32(3279552512);
+emit_32(3268603937);
+emit_32(1104924063);
+emit_32(3279552512);
+emit_32(3268091970);
+emit_32(1105080143);
+emit_32(3279552512);
+emit_32(3267579911);
+emit_32(1104516533);
+emit_32(3279552512);
+emit_32(3267067904);
+emit_32(1103348315);
+emit_32(3279552512);
+emit_32(3266555911);
+emit_32(1102478049);
+emit_32(3279552512);
+emit_32(3266043904);
+emit_32(1101882406);
+emit_32(3279552512);
+emit_32(3265531911);
+emit_32(1100937324);
+emit_32(3279552512);
+emit_32(3265019904);
+emit_32(1100262828);
+emit_32(3279552512);
+emit_32(3264507911);
+emit_32(1099805963);
+emit_32(3279552512);
+emit_32(3263995904);
+emit_32(1098412301);
+emit_32(3279552512);
+emit_32(3263483911);
+emit_32(1097524052);
+emit_32(3279552512);
+emit_32(3262775296);
+emit_32(1096845309);
+emit_32(3279552512);
+emit_32(3261751309);
+emit_32(1094863186);
+emit_32(3279552512);
+emit_32(3260727296);
+emit_32(1092933596);
+emit_32(3279552512);
+emit_32(3259703309);
+emit_32(1092280658);
+emit_32(3279552512);
+emit_32(3258679296);
+emit_32(1090650752);
+emit_32(3279552512);
+emit_32(3257655309);
+emit_32(1090797762);
+emit_32(3279552512);
+emit_32(3256631296);
+emit_32(1090478271);
+emit_32(3279552512);
+emit_32(3255607309);
+emit_32(1089328172);
+emit_32(3279552512);
+emit_32(3254386688);
+emit_32(1087017593);
+emit_32(3279552512);
+emit_32(3252338714);
+emit_32(1083442180);
+emit_32(3279552512);
+emit_32(3250290688);
+emit_32(1081443237);
+emit_32(3279552512);
+emit_32(3248242714);
+emit_32(1082646268);
+emit_32(3279552512);
+emit_32(3245998080);
+emit_32(1081291445);
+emit_32(3279552512);
+emit_32(3241902132);
+emit_32(1081059249);
+emit_32(3279552512);
+emit_32(3237609472);
+emit_32(1081285406);
+emit_32(3279552512);
+emit_32(3229220864);
+emit_32(1081938249);
+emit_32(3279552512);
+emit_32(0);
+emit_32(1085708656);
+emit_32(3279552512);
+emit_32(1081737216);
+emit_32(1086994839);
+emit_32(3279552512);
+emit_start(LandscapeVtxCount)
+emit_32(2048);
+emit_32(1980);
+emit_32(2048);
+emit_32(2112);
+emit_32(2244);
+emit_32(2310);
+emit_32(2240);
+emit_32(2178);
+emit_start(LandscapeIdx)
+emit_32(Landscape01Idx);
+emit_32(Landscape02Idx);
+emit_32(Landscape03Idx);
+emit_32(Landscape04Idx);
+emit_32(Landscape05Idx);
+emit_32(Landscape06Idx);
+emit_32(Landscape07Idx);
+emit_32(Landscape08Idx);
+emit_start(Landscape01Idx)
+emit_16(0);
+emit_16(1);
+emit_16(2);
+emit_16(3);
+emit_16(2);
+emit_16(1);
+emit_16(2);
+emit_16(3);
+emit_16(4);
+emit_16(5);
+emit_16(4);
+emit_16(3);
+emit_16(4);
+emit_16(5);
+emit_16(6);
+emit_16(7);
+emit_16(6);
+emit_16(5);
+emit_16(6);
+emit_16(7);
+emit_16(8);
+emit_16(9);
+emit_16(8);
+emit_16(7);
+emit_16(8);
+emit_16(9);
+emit_16(10);
+emit_16(11);
+emit_16(10);
+emit_16(9);
+emit_16(10);
+emit_16(11);
+emit_16(12);
+emit_16(13);
+emit_16(12);
+emit_16(11);
+emit_16(12);
+emit_16(13);
+emit_16(14);
+emit_16(15);
+emit_16(14);
+emit_16(13);
+emit_16(14);
+emit_16(15);
+emit_16(16);
+emit_16(17);
+emit_16(16);
+emit_16(15);
+emit_16(16);
+emit_16(17);
+emit_16(18);
+emit_16(19);
+emit_16(18);
+emit_16(17);
+emit_16(18);
+emit_16(19);
+emit_16(20);
+emit_16(21);
+emit_16(20);
+emit_16(19);
+emit_16(20);
+emit_16(21);
+emit_16(22);
+emit_16(23);
+emit_16(22);
+emit_16(21);
+emit_16(22);
+emit_16(23);
+emit_16(24);
+emit_16(25);
+emit_16(24);
+emit_16(23);
+emit_16(24);
+emit_16(25);
+emit_16(26);
+emit_16(27);
+emit_16(26);
+emit_16(25);
+emit_16(26);
+emit_16(27);
+emit_16(28);
+emit_16(29);
+emit_16(28);
+emit_16(27);
+emit_16(28);
+emit_16(29);
+emit_16(30);
+emit_16(31);
+emit_16(30);
+emit_16(29);
+emit_16(30);
+emit_16(31);
+emit_16(32);
+emit_16(33);
+emit_16(32);
+emit_16(31);
+emit_16(32);
+emit_16(33);
+emit_16(34);
+emit_16(35);
+emit_16(34);
+emit_16(33);
+emit_16(34);
+emit_16(35);
+emit_16(36);
+emit_16(37);
+emit_16(36);
+emit_16(35);
+emit_16(36);
+emit_16(37);
+emit_16(38);
+emit_16(39);
+emit_16(38);
+emit_16(37);
+emit_16(38);
+emit_16(39);
+emit_16(40);
+emit_16(41);
+emit_16(40);
+emit_16(39);
+emit_16(40);
+emit_16(41);
+emit_16(42);
+emit_16(43);
+emit_16(42);
+emit_16(41);
+emit_16(42);
+emit_16(43);
+emit_16(44);
+emit_16(45);
+emit_16(44);
+emit_16(43);
+emit_16(44);
+emit_16(45);
+emit_16(46);
+emit_16(47);
+emit_16(46);
+emit_16(45);
+emit_16(46);
+emit_16(47);
+emit_16(48);
+emit_16(49);
+emit_16(48);
+emit_16(47);
+emit_16(48);
+emit_16(49);
+emit_16(50);
+emit_16(51);
+emit_16(50);
+emit_16(49);
+emit_16(50);
+emit_16(51);
+emit_16(52);
+emit_16(53);
+emit_16(52);
+emit_16(51);
+emit_16(52);
+emit_16(53);
+emit_16(54);
+emit_16(55);
+emit_16(54);
+emit_16(53);
+emit_16(54);
+emit_16(55);
+emit_16(56);
+emit_16(57);
+emit_16(56);
+emit_16(55);
+emit_16(56);
+emit_16(57);
+emit_16(58);
+emit_16(59);
+emit_16(58);
+emit_16(57);
+emit_16(58);
+emit_16(59);
+emit_16(60);
+emit_16(61);
+emit_16(60);
+emit_16(59);
+emit_16(60);
+emit_16(61);
+emit_16(62);
+emit_16(63);
+emit_16(62);
+emit_16(61);
+emit_16(62);
+emit_16(63);
+emit_16(64);
+emit_16(65);
+emit_16(64);
+emit_16(63);
+emit_16(64);
+emit_16(65);
+emit_16(66);
+emit_16(67);
+emit_16(66);
+emit_16(65);
+emit_16(66);
+emit_16(67);
+emit_16(68);
+emit_16(69);
+emit_16(68);
+emit_16(67);
+emit_16(68);
+emit_16(69);
+emit_16(70);
+emit_16(71);
+emit_16(70);
+emit_16(69);
+emit_16(70);
+emit_16(71);
+emit_16(72);
+emit_16(73);
+emit_16(72);
+emit_16(71);
+emit_16(72);
+emit_16(73);
+emit_16(74);
+emit_16(75);
+emit_16(74);
+emit_16(73);
+emit_16(74);
+emit_16(75);
+emit_16(76);
+emit_16(77);
+emit_16(76);
+emit_16(75);
+emit_16(76);
+emit_16(77);
+emit_16(78);
+emit_16(79);
+emit_16(78);
+emit_16(77);
+emit_16(78);
+emit_16(79);
+emit_16(80);
+emit_16(81);
+emit_16(80);
+emit_16(79);
+emit_16(80);
+emit_16(81);
+emit_16(82);
+emit_16(83);
+emit_16(82);
+emit_16(81);
+emit_16(82);
+emit_16(83);
+emit_16(84);
+emit_16(85);
+emit_16(84);
+emit_16(83);
+emit_16(84);
+emit_16(85);
+emit_16(86);
+emit_16(87);
+emit_16(86);
+emit_16(85);
+emit_16(86);
+emit_16(87);
+emit_16(88);
+emit_16(89);
+emit_16(88);
+emit_16(87);
+emit_16(88);
+emit_16(89);
+emit_16(90);
+emit_16(91);
+emit_16(90);
+emit_16(89);
+emit_16(90);
+emit_16(91);
+emit_16(92);
+emit_16(93);
+emit_16(92);
+emit_16(91);
+emit_16(92);
+emit_16(93);
+emit_16(94);
+emit_16(95);
+emit_16(94);
+emit_16(93);
+emit_16(94);
+emit_16(95);
+emit_16(96);
+emit_16(97);
+emit_16(96);
+emit_16(95);
+emit_16(96);
+emit_16(97);
+emit_16(98);
+emit_16(99);
+emit_16(98);
+emit_16(97);
+emit_16(98);
+emit_16(99);
+emit_16(100);
+emit_16(101);
+emit_16(100);
+emit_16(99);
+emit_16(100);
+emit_16(101);
+emit_16(102);
+emit_16(103);
+emit_16(102);
+emit_16(101);
+emit_16(102);
+emit_16(103);
+emit_16(104);
+emit_16(105);
+emit_16(104);
+emit_16(103);
+emit_16(104);
+emit_16(105);
+emit_16(106);
+emit_16(107);
+emit_16(106);
+emit_16(105);
+emit_16(106);
+emit_16(107);
+emit_16(108);
+emit_16(109);
+emit_16(108);
+emit_16(107);
+emit_16(108);
+emit_16(109);
+emit_16(110);
+emit_16(111);
+emit_16(110);
+emit_16(109);
+emit_16(110);
+emit_16(111);
+emit_16(112);
+emit_16(113);
+emit_16(112);
+emit_16(111);
+emit_16(112);
+emit_16(113);
+emit_16(114);
+emit_16(115);
+emit_16(114);
+emit_16(113);
+emit_16(114);
+emit_16(115);
+emit_16(116);
+emit_16(117);
+emit_16(116);
+emit_16(115);
+emit_16(116);
+emit_16(117);
+emit_16(118);
+emit_16(119);
+emit_16(118);
+emit_16(117);
+emit_16(118);
+emit_16(119);
+emit_16(120);
+emit_16(121);
+emit_16(120);
+emit_16(119);
+emit_16(120);
+emit_16(121);
+emit_16(122);
+emit_16(123);
+emit_16(122);
+emit_16(121);
+emit_16(122);
+emit_16(123);
+emit_16(124);
+emit_16(125);
+emit_16(124);
+emit_16(123);
+emit_16(124);
+emit_16(125);
+emit_16(126);
+emit_16(127);
+emit_16(126);
+emit_16(125);
+emit_16(128);
+emit_16(0);
+emit_16(129);
+emit_16(2);
+emit_16(129);
+emit_16(0);
+emit_16(129);
+emit_16(2);
+emit_16(130);
+emit_16(4);
+emit_16(130);
+emit_16(2);
+emit_16(130);
+emit_16(4);
+emit_16(131);
+emit_16(6);
+emit_16(131);
+emit_16(4);
+emit_16(131);
+emit_16(6);
+emit_16(132);
+emit_16(8);
+emit_16(132);
+emit_16(6);
+emit_16(132);
+emit_16(8);
+emit_16(133);
+emit_16(10);
+emit_16(133);
+emit_16(8);
+emit_16(133);
+emit_16(10);
+emit_16(134);
+emit_16(12);
+emit_16(134);
+emit_16(10);
+emit_16(134);
+emit_16(12);
+emit_16(135);
+emit_16(14);
+emit_16(135);
+emit_16(12);
+emit_16(135);
+emit_16(14);
+emit_16(136);
+emit_16(16);
+emit_16(136);
+emit_16(14);
+emit_16(136);
+emit_16(16);
+emit_16(137);
+emit_16(18);
+emit_16(137);
+emit_16(16);
+emit_16(137);
+emit_16(18);
+emit_16(138);
+emit_16(20);
+emit_16(138);
+emit_16(18);
+emit_16(138);
+emit_16(20);
+emit_16(139);
+emit_16(22);
+emit_16(139);
+emit_16(20);
+emit_16(139);
+emit_16(22);
+emit_16(140);
+emit_16(24);
+emit_16(140);
+emit_16(22);
+emit_16(140);
+emit_16(24);
+emit_16(141);
+emit_16(26);
+emit_16(141);
+emit_16(24);
+emit_16(141);
+emit_16(26);
+emit_16(142);
+emit_16(28);
+emit_16(142);
+emit_16(26);
+emit_16(142);
+emit_16(28);
+emit_16(143);
+emit_16(30);
+emit_16(143);
+emit_16(28);
+emit_16(143);
+emit_16(30);
+emit_16(144);
+emit_16(32);
+emit_16(144);
+emit_16(30);
+emit_16(144);
+emit_16(32);
+emit_16(145);
+emit_16(34);
+emit_16(145);
+emit_16(32);
+emit_16(145);
+emit_16(34);
+emit_16(146);
+emit_16(36);
+emit_16(146);
+emit_16(34);
+emit_16(146);
+emit_16(36);
+emit_16(147);
+emit_16(38);
+emit_16(147);
+emit_16(36);
+emit_16(147);
+emit_16(38);
+emit_16(148);
+emit_16(40);
+emit_16(148);
+emit_16(38);
+emit_16(148);
+emit_16(40);
+emit_16(149);
+emit_16(42);
+emit_16(149);
+emit_16(40);
+emit_16(149);
+emit_16(42);
+emit_16(150);
+emit_16(44);
+emit_16(150);
+emit_16(42);
+emit_16(150);
+emit_16(44);
+emit_16(151);
+emit_16(46);
+emit_16(151);
+emit_16(44);
+emit_16(151);
+emit_16(46);
+emit_16(152);
+emit_16(48);
+emit_16(152);
+emit_16(46);
+emit_16(152);
+emit_16(48);
+emit_16(153);
+emit_16(50);
+emit_16(153);
+emit_16(48);
+emit_16(153);
+emit_16(50);
+emit_16(154);
+emit_16(52);
+emit_16(154);
+emit_16(50);
+emit_16(154);
+emit_16(52);
+emit_16(155);
+emit_16(54);
+emit_16(155);
+emit_16(52);
+emit_16(155);
+emit_16(54);
+emit_16(156);
+emit_16(56);
+emit_16(156);
+emit_16(54);
+emit_16(156);
+emit_16(56);
+emit_16(157);
+emit_16(58);
+emit_16(157);
+emit_16(56);
+emit_16(157);
+emit_16(58);
+emit_16(158);
+emit_16(60);
+emit_16(158);
+emit_16(58);
+emit_16(158);
+emit_16(60);
+emit_16(159);
+emit_16(62);
+emit_16(159);
+emit_16(60);
+emit_16(159);
+emit_16(62);
+emit_16(160);
+emit_16(64);
+emit_16(160);
+emit_16(62);
+emit_16(160);
+emit_16(64);
+emit_16(161);
+emit_16(66);
+emit_16(161);
+emit_16(64);
+emit_16(161);
+emit_16(66);
+emit_16(162);
+emit_16(68);
+emit_16(162);
+emit_16(66);
+emit_16(162);
+emit_16(68);
+emit_16(163);
+emit_16(70);
+emit_16(163);
+emit_16(68);
+emit_16(163);
+emit_16(70);
+emit_16(164);
+emit_16(72);
+emit_16(164);
+emit_16(70);
+emit_16(164);
+emit_16(72);
+emit_16(165);
+emit_16(74);
+emit_16(165);
+emit_16(72);
+emit_16(165);
+emit_16(74);
+emit_16(166);
+emit_16(76);
+emit_16(166);
+emit_16(74);
+emit_16(166);
+emit_16(76);
+emit_16(167);
+emit_16(78);
+emit_16(167);
+emit_16(76);
+emit_16(167);
+emit_16(78);
+emit_16(168);
+emit_16(80);
+emit_16(168);
+emit_16(78);
+emit_16(168);
+emit_16(80);
+emit_16(169);
+emit_16(82);
+emit_16(169);
+emit_16(80);
+emit_16(169);
+emit_16(82);
+emit_16(170);
+emit_16(84);
+emit_16(170);
+emit_16(82);
+emit_16(170);
+emit_16(84);
+emit_16(171);
+emit_16(86);
+emit_16(171);
+emit_16(84);
+emit_16(171);
+emit_16(86);
+emit_16(172);
+emit_16(88);
+emit_16(172);
+emit_16(86);
+emit_16(172);
+emit_16(88);
+emit_16(173);
+emit_16(90);
+emit_16(173);
+emit_16(88);
+emit_16(173);
+emit_16(90);
+emit_16(174);
+emit_16(92);
+emit_16(174);
+emit_16(90);
+emit_16(174);
+emit_16(92);
+emit_16(175);
+emit_16(94);
+emit_16(175);
+emit_16(92);
+emit_16(175);
+emit_16(94);
+emit_16(176);
+emit_16(96);
+emit_16(176);
+emit_16(94);
+emit_16(176);
+emit_16(96);
+emit_16(177);
+emit_16(98);
+emit_16(177);
+emit_16(96);
+emit_16(177);
+emit_16(98);
+emit_16(178);
+emit_16(100);
+emit_16(178);
+emit_16(98);
+emit_16(178);
+emit_16(100);
+emit_16(179);
+emit_16(102);
+emit_16(179);
+emit_16(100);
+emit_16(179);
+emit_16(102);
+emit_16(180);
+emit_16(104);
+emit_16(180);
+emit_16(102);
+emit_16(180);
+emit_16(104);
+emit_16(181);
+emit_16(106);
+emit_16(181);
+emit_16(104);
+emit_16(181);
+emit_16(106);
+emit_16(182);
+emit_16(108);
+emit_16(182);
+emit_16(106);
+emit_16(182);
+emit_16(108);
+emit_16(183);
+emit_16(110);
+emit_16(183);
+emit_16(108);
+emit_16(183);
+emit_16(110);
+emit_16(184);
+emit_16(112);
+emit_16(184);
+emit_16(110);
+emit_16(184);
+emit_16(112);
+emit_16(185);
+emit_16(114);
+emit_16(185);
+emit_16(112);
+emit_16(185);
+emit_16(114);
+emit_16(186);
+emit_16(116);
+emit_16(186);
+emit_16(114);
+emit_16(186);
+emit_16(116);
+emit_16(187);
+emit_16(118);
+emit_16(187);
+emit_16(116);
+emit_16(187);
+emit_16(118);
+emit_16(188);
+emit_16(120);
+emit_16(188);
+emit_16(118);
+emit_16(188);
+emit_16(120);
+emit_16(189);
+emit_16(122);
+emit_16(189);
+emit_16(120);
+emit_16(189);
+emit_16(122);
+emit_16(190);
+emit_16(124);
+emit_16(190);
+emit_16(122);
+emit_16(190);
+emit_16(124);
+emit_16(191);
+emit_16(126);
+emit_16(191);
+emit_16(124);
+emit_16(192);
+emit_16(128);
+emit_16(193);
+emit_16(129);
+emit_16(193);
+emit_16(128);
+emit_16(193);
+emit_16(129);
+emit_16(194);
+emit_16(130);
+emit_16(194);
+emit_16(129);
+emit_16(194);
+emit_16(130);
+emit_16(195);
+emit_16(131);
+emit_16(195);
+emit_16(130);
+emit_16(195);
+emit_16(131);
+emit_16(196);
+emit_16(132);
+emit_16(196);
+emit_16(131);
+emit_16(196);
+emit_16(132);
+emit_16(197);
+emit_16(133);
+emit_16(197);
+emit_16(132);
+emit_16(197);
+emit_16(133);
+emit_16(198);
+emit_16(134);
+emit_16(198);
+emit_16(133);
+emit_16(198);
+emit_16(134);
+emit_16(199);
+emit_16(135);
+emit_16(199);
+emit_16(134);
+emit_16(199);
+emit_16(135);
+emit_16(200);
+emit_16(136);
+emit_16(200);
+emit_16(135);
+emit_16(200);
+emit_16(136);
+emit_16(201);
+emit_16(137);
+emit_16(201);
+emit_16(136);
+emit_16(201);
+emit_16(137);
+emit_16(202);
+emit_16(138);
+emit_16(202);
+emit_16(137);
+emit_16(202);
+emit_16(138);
+emit_16(203);
+emit_16(139);
+emit_16(203);
+emit_16(138);
+emit_16(203);
+emit_16(139);
+emit_16(204);
+emit_16(140);
+emit_16(204);
+emit_16(139);
+emit_16(204);
+emit_16(140);
+emit_16(205);
+emit_16(141);
+emit_16(205);
+emit_16(140);
+emit_16(205);
+emit_16(141);
+emit_16(206);
+emit_16(142);
+emit_16(206);
+emit_16(141);
+emit_16(206);
+emit_16(142);
+emit_16(207);
+emit_16(143);
+emit_16(207);
+emit_16(142);
+emit_16(207);
+emit_16(143);
+emit_16(208);
+emit_16(144);
+emit_16(208);
+emit_16(143);
+emit_16(208);
+emit_16(144);
+emit_16(209);
+emit_16(145);
+emit_16(209);
+emit_16(144);
+emit_16(209);
+emit_16(145);
+emit_16(210);
+emit_16(146);
+emit_16(210);
+emit_16(145);
+emit_16(210);
+emit_16(146);
+emit_16(211);
+emit_16(147);
+emit_16(211);
+emit_16(146);
+emit_16(211);
+emit_16(147);
+emit_16(212);
+emit_16(148);
+emit_16(212);
+emit_16(147);
+emit_16(212);
+emit_16(148);
+emit_16(213);
+emit_16(149);
+emit_16(213);
+emit_16(148);
+emit_16(213);
+emit_16(149);
+emit_16(214);
+emit_16(150);
+emit_16(214);
+emit_16(149);
+emit_16(214);
+emit_16(150);
+emit_16(215);
+emit_16(151);
+emit_16(215);
+emit_16(150);
+emit_16(215);
+emit_16(151);
+emit_16(216);
+emit_16(152);
+emit_16(216);
+emit_16(151);
+emit_16(216);
+emit_16(152);
+emit_16(217);
+emit_16(153);
+emit_16(217);
+emit_16(152);
+emit_16(217);
+emit_16(153);
+emit_16(218);
+emit_16(154);
+emit_16(218);
+emit_16(153);
+emit_16(218);
+emit_16(154);
+emit_16(219);
+emit_16(155);
+emit_16(219);
+emit_16(154);
+emit_16(219);
+emit_16(155);
+emit_16(220);
+emit_16(156);
+emit_16(220);
+emit_16(155);
+emit_16(220);
+emit_16(156);
+emit_16(221);
+emit_16(157);
+emit_16(221);
+emit_16(156);
+emit_16(221);
+emit_16(157);
+emit_16(222);
+emit_16(158);
+emit_16(222);
+emit_16(157);
+emit_16(222);
+emit_16(158);
+emit_16(223);
+emit_16(159);
+emit_16(223);
+emit_16(158);
+emit_16(223);
+emit_16(159);
+emit_16(224);
+emit_16(160);
+emit_16(224);
+emit_16(159);
+emit_16(224);
+emit_16(160);
+emit_16(225);
+emit_16(161);
+emit_16(225);
+emit_16(160);
+emit_16(225);
+emit_16(161);
+emit_16(226);
+emit_16(162);
+emit_16(226);
+emit_16(161);
+emit_16(226);
+emit_16(162);
+emit_16(227);
+emit_16(163);
+emit_16(227);
+emit_16(162);
+emit_16(227);
+emit_16(163);
+emit_16(228);
+emit_16(164);
+emit_16(228);
+emit_16(163);
+emit_16(228);
+emit_16(164);
+emit_16(229);
+emit_16(165);
+emit_16(229);
+emit_16(164);
+emit_16(229);
+emit_16(165);
+emit_16(230);
+emit_16(166);
+emit_16(230);
+emit_16(165);
+emit_16(230);
+emit_16(166);
+emit_16(231);
+emit_16(167);
+emit_16(231);
+emit_16(166);
+emit_16(231);
+emit_16(167);
+emit_16(232);
+emit_16(168);
+emit_16(232);
+emit_16(167);
+emit_16(232);
+emit_16(168);
+emit_16(233);
+emit_16(169);
+emit_16(233);
+emit_16(168);
+emit_16(233);
+emit_16(169);
+emit_16(234);
+emit_16(170);
+emit_16(234);
+emit_16(169);
+emit_16(234);
+emit_16(170);
+emit_16(235);
+emit_16(171);
+emit_16(235);
+emit_16(170);
+emit_16(235);
+emit_16(171);
+emit_16(236);
+emit_16(172);
+emit_16(236);
+emit_16(171);
+emit_16(236);
+emit_16(172);
+emit_16(237);
+emit_16(173);
+emit_16(237);
+emit_16(172);
+emit_16(237);
+emit_16(173);
+emit_16(238);
+emit_16(174);
+emit_16(238);
+emit_16(173);
+emit_16(238);
+emit_16(174);
+emit_16(239);
+emit_16(175);
+emit_16(239);
+emit_16(174);
+emit_16(239);
+emit_16(175);
+emit_16(240);
+emit_16(176);
+emit_16(240);
+emit_16(175);
+emit_16(240);
+emit_16(176);
+emit_16(241);
+emit_16(177);
+emit_16(241);
+emit_16(176);
+emit_16(241);
+emit_16(177);
+emit_16(242);
+emit_16(178);
+emit_16(242);
+emit_16(177);
+emit_16(242);
+emit_16(178);
+emit_16(243);
+emit_16(179);
+emit_16(243);
+emit_16(178);
+emit_16(243);
+emit_16(179);
+emit_16(244);
+emit_16(180);
+emit_16(244);
+emit_16(179);
+emit_16(244);
+emit_16(180);
+emit_16(245);
+emit_16(181);
+emit_16(245);
+emit_16(180);
+emit_16(245);
+emit_16(181);
+emit_16(246);
+emit_16(182);
+emit_16(246);
+emit_16(181);
+emit_16(246);
+emit_16(182);
+emit_16(247);
+emit_16(183);
+emit_16(247);
+emit_16(182);
+emit_16(247);
+emit_16(183);
+emit_16(248);
+emit_16(184);
+emit_16(248);
+emit_16(183);
+emit_16(248);
+emit_16(184);
+emit_16(249);
+emit_16(185);
+emit_16(249);
+emit_16(184);
+emit_16(249);
+emit_16(185);
+emit_16(250);
+emit_16(186);
+emit_16(250);
+emit_16(185);
+emit_16(250);
+emit_16(186);
+emit_16(251);
+emit_16(187);
+emit_16(251);
+emit_16(186);
+emit_16(251);
+emit_16(187);
+emit_16(252);
+emit_16(188);
+emit_16(252);
+emit_16(187);
+emit_16(252);
+emit_16(188);
+emit_16(253);
+emit_16(189);
+emit_16(253);
+emit_16(188);
+emit_16(253);
+emit_16(189);
+emit_16(254);
+emit_16(190);
+emit_16(254);
+emit_16(189);
+emit_16(254);
+emit_16(190);
+emit_16(255);
+emit_16(191);
+emit_16(255);
+emit_16(190);
+emit_16(256);
+emit_16(192);
+emit_16(257);
+emit_16(193);
+emit_16(257);
+emit_16(192);
+emit_16(257);
+emit_16(193);
+emit_16(258);
+emit_16(194);
+emit_16(258);
+emit_16(193);
+emit_16(258);
+emit_16(194);
+emit_16(259);
+emit_16(195);
+emit_16(259);
+emit_16(194);
+emit_16(259);
+emit_16(195);
+emit_16(260);
+emit_16(196);
+emit_16(260);
+emit_16(195);
+emit_16(260);
+emit_16(196);
+emit_16(261);
+emit_16(197);
+emit_16(261);
+emit_16(196);
+emit_16(261);
+emit_16(197);
+emit_16(262);
+emit_16(198);
+emit_16(262);
+emit_16(197);
+emit_16(262);
+emit_16(198);
+emit_16(263);
+emit_16(199);
+emit_16(263);
+emit_16(198);
+emit_16(263);
+emit_16(199);
+emit_16(264);
+emit_16(200);
+emit_16(264);
+emit_16(199);
+emit_16(264);
+emit_16(200);
+emit_16(265);
+emit_16(201);
+emit_16(265);
+emit_16(200);
+emit_16(265);
+emit_16(201);
+emit_16(266);
+emit_16(202);
+emit_16(266);
+emit_16(201);
+emit_16(266);
+emit_16(202);
+emit_16(267);
+emit_16(203);
+emit_16(267);
+emit_16(202);
+emit_16(267);
+emit_16(203);
+emit_16(268);
+emit_16(204);
+emit_16(268);
+emit_16(203);
+emit_16(268);
+emit_16(204);
+emit_16(269);
+emit_16(205);
+emit_16(269);
+emit_16(204);
+emit_16(269);
+emit_16(205);
+emit_16(270);
+emit_16(206);
+emit_16(270);
+emit_16(205);
+emit_16(270);
+emit_16(206);
+emit_16(271);
+emit_16(207);
+emit_16(271);
+emit_16(206);
+emit_16(271);
+emit_16(207);
+emit_16(272);
+emit_16(208);
+emit_16(272);
+emit_16(207);
+emit_16(272);
+emit_16(208);
+emit_16(273);
+emit_16(209);
+emit_16(273);
+emit_16(208);
+emit_16(273);
+emit_16(209);
+emit_16(274);
+emit_16(210);
+emit_16(274);
+emit_16(209);
+emit_16(274);
+emit_16(210);
+emit_16(275);
+emit_16(211);
+emit_16(275);
+emit_16(210);
+emit_16(275);
+emit_16(211);
+emit_16(276);
+emit_16(212);
+emit_16(276);
+emit_16(211);
+emit_16(276);
+emit_16(212);
+emit_16(277);
+emit_16(213);
+emit_16(277);
+emit_16(212);
+emit_16(277);
+emit_16(213);
+emit_16(278);
+emit_16(214);
+emit_16(278);
+emit_16(213);
+emit_16(278);
+emit_16(214);
+emit_16(279);
+emit_16(215);
+emit_16(279);
+emit_16(214);
+emit_16(279);
+emit_16(215);
+emit_16(280);
+emit_16(216);
+emit_16(280);
+emit_16(215);
+emit_16(280);
+emit_16(216);
+emit_16(281);
+emit_16(217);
+emit_16(281);
+emit_16(216);
+emit_16(281);
+emit_16(217);
+emit_16(282);
+emit_16(218);
+emit_16(282);
+emit_16(217);
+emit_16(282);
+emit_16(218);
+emit_16(283);
+emit_16(219);
+emit_16(283);
+emit_16(218);
+emit_16(283);
+emit_16(219);
+emit_16(284);
+emit_16(220);
+emit_16(284);
+emit_16(219);
+emit_16(284);
+emit_16(220);
+emit_16(285);
+emit_16(221);
+emit_16(285);
+emit_16(220);
+emit_16(285);
+emit_16(221);
+emit_16(286);
+emit_16(222);
+emit_16(286);
+emit_16(221);
+emit_16(286);
+emit_16(222);
+emit_16(287);
+emit_16(223);
+emit_16(287);
+emit_16(222);
+emit_16(287);
+emit_16(223);
+emit_16(288);
+emit_16(224);
+emit_16(288);
+emit_16(223);
+emit_16(288);
+emit_16(224);
+emit_16(289);
+emit_16(225);
+emit_16(289);
+emit_16(224);
+emit_16(289);
+emit_16(225);
+emit_16(290);
+emit_16(226);
+emit_16(290);
+emit_16(225);
+emit_16(290);
+emit_16(226);
+emit_16(291);
+emit_16(227);
+emit_16(291);
+emit_16(226);
+emit_16(291);
+emit_16(227);
+emit_16(292);
+emit_16(228);
+emit_16(292);
+emit_16(227);
+emit_16(292);
+emit_16(228);
+emit_16(293);
+emit_16(229);
+emit_16(293);
+emit_16(228);
+emit_16(293);
+emit_16(229);
+emit_16(294);
+emit_16(230);
+emit_16(294);
+emit_16(229);
+emit_16(294);
+emit_16(230);
+emit_16(295);
+emit_16(231);
+emit_16(295);
+emit_16(230);
+emit_16(295);
+emit_16(231);
+emit_16(296);
+emit_16(232);
+emit_16(296);
+emit_16(231);
+emit_16(296);
+emit_16(232);
+emit_16(297);
+emit_16(233);
+emit_16(297);
+emit_16(232);
+emit_16(297);
+emit_16(233);
+emit_16(298);
+emit_16(234);
+emit_16(298);
+emit_16(233);
+emit_16(298);
+emit_16(234);
+emit_16(299);
+emit_16(235);
+emit_16(299);
+emit_16(234);
+emit_16(299);
+emit_16(235);
+emit_16(300);
+emit_16(236);
+emit_16(300);
+emit_16(235);
+emit_16(300);
+emit_16(236);
+emit_16(301);
+emit_16(237);
+emit_16(301);
+emit_16(236);
+emit_16(301);
+emit_16(237);
+emit_16(302);
+emit_16(238);
+emit_16(302);
+emit_16(237);
+emit_16(302);
+emit_16(238);
+emit_16(303);
+emit_16(239);
+emit_16(303);
+emit_16(238);
+emit_16(303);
+emit_16(239);
+emit_16(304);
+emit_16(240);
+emit_16(304);
+emit_16(239);
+emit_16(304);
+emit_16(240);
+emit_16(305);
+emit_16(241);
+emit_16(305);
+emit_16(240);
+emit_16(305);
+emit_16(241);
+emit_16(306);
+emit_16(242);
+emit_16(306);
+emit_16(241);
+emit_16(306);
+emit_16(242);
+emit_16(307);
+emit_16(243);
+emit_16(307);
+emit_16(242);
+emit_16(307);
+emit_16(243);
+emit_16(308);
+emit_16(244);
+emit_16(308);
+emit_16(243);
+emit_16(308);
+emit_16(244);
+emit_16(309);
+emit_16(245);
+emit_16(309);
+emit_16(244);
+emit_16(309);
+emit_16(245);
+emit_16(310);
+emit_16(246);
+emit_16(310);
+emit_16(245);
+emit_16(310);
+emit_16(246);
+emit_16(311);
+emit_16(247);
+emit_16(311);
+emit_16(246);
+emit_16(311);
+emit_16(247);
+emit_16(312);
+emit_16(248);
+emit_16(312);
+emit_16(247);
+emit_16(312);
+emit_16(248);
+emit_16(313);
+emit_16(249);
+emit_16(313);
+emit_16(248);
+emit_16(313);
+emit_16(249);
+emit_16(314);
+emit_16(250);
+emit_16(314);
+emit_16(249);
+emit_16(314);
+emit_16(250);
+emit_16(315);
+emit_16(251);
+emit_16(315);
+emit_16(250);
+emit_16(315);
+emit_16(251);
+emit_16(316);
+emit_16(252);
+emit_16(316);
+emit_16(251);
+emit_16(316);
+emit_16(252);
+emit_16(317);
+emit_16(253);
+emit_16(317);
+emit_16(252);
+emit_16(317);
+emit_16(253);
+emit_16(318);
+emit_16(254);
+emit_16(318);
+emit_16(253);
+emit_16(318);
+emit_16(254);
+emit_16(319);
+emit_16(255);
+emit_16(319);
+emit_16(254);
+emit_16(320);
+emit_16(256);
+emit_16(321);
+emit_16(257);
+emit_16(321);
+emit_16(256);
+emit_16(321);
+emit_16(257);
+emit_16(322);
+emit_16(258);
+emit_16(322);
+emit_16(257);
+emit_16(322);
+emit_16(258);
+emit_16(323);
+emit_16(259);
+emit_16(323);
+emit_16(258);
+emit_16(323);
+emit_16(259);
+emit_16(324);
+emit_16(260);
+emit_16(324);
+emit_16(259);
+emit_16(324);
+emit_16(260);
+emit_16(325);
+emit_16(261);
+emit_16(325);
+emit_16(260);
+emit_16(325);
+emit_16(261);
+emit_16(326);
+emit_16(262);
+emit_16(326);
+emit_16(261);
+emit_16(326);
+emit_16(262);
+emit_16(327);
+emit_16(263);
+emit_16(327);
+emit_16(262);
+emit_16(327);
+emit_16(263);
+emit_16(328);
+emit_16(264);
+emit_16(328);
+emit_16(263);
+emit_16(328);
+emit_16(264);
+emit_16(329);
+emit_16(265);
+emit_16(329);
+emit_16(264);
+emit_16(329);
+emit_16(265);
+emit_16(330);
+emit_16(266);
+emit_16(330);
+emit_16(265);
+emit_16(330);
+emit_16(266);
+emit_16(331);
+emit_16(267);
+emit_16(331);
+emit_16(266);
+emit_16(331);
+emit_16(267);
+emit_16(332);
+emit_16(268);
+emit_16(332);
+emit_16(267);
+emit_16(332);
+emit_16(268);
+emit_16(333);
+emit_16(269);
+emit_16(333);
+emit_16(268);
+emit_16(333);
+emit_16(269);
+emit_16(334);
+emit_16(270);
+emit_16(334);
+emit_16(269);
+emit_16(334);
+emit_16(270);
+emit_16(335);
+emit_16(271);
+emit_16(335);
+emit_16(270);
+emit_16(335);
+emit_16(271);
+emit_16(336);
+emit_16(272);
+emit_16(336);
+emit_16(271);
+emit_16(336);
+emit_16(272);
+emit_16(337);
+emit_16(273);
+emit_16(337);
+emit_16(272);
+emit_16(337);
+emit_16(273);
+emit_16(338);
+emit_16(274);
+emit_16(338);
+emit_16(273);
+emit_16(338);
+emit_16(274);
+emit_16(339);
+emit_16(275);
+emit_16(339);
+emit_16(274);
+emit_16(339);
+emit_16(275);
+emit_16(340);
+emit_16(276);
+emit_16(340);
+emit_16(275);
+emit_16(340);
+emit_16(276);
+emit_16(341);
+emit_16(277);
+emit_16(341);
+emit_16(276);
+emit_16(341);
+emit_16(277);
+emit_16(342);
+emit_16(278);
+emit_16(342);
+emit_16(277);
+emit_16(342);
+emit_16(278);
+emit_16(343);
+emit_16(279);
+emit_16(343);
+emit_16(278);
+emit_16(343);
+emit_16(279);
+emit_16(344);
+emit_16(280);
+emit_16(344);
+emit_16(279);
+emit_16(344);
+emit_16(280);
+emit_16(345);
+emit_16(281);
+emit_16(345);
+emit_16(280);
+emit_16(345);
+emit_16(281);
+emit_16(346);
+emit_16(282);
+emit_16(346);
+emit_16(281);
+emit_16(346);
+emit_16(282);
+emit_16(347);
+emit_16(283);
+emit_16(347);
+emit_16(282);
+emit_16(347);
+emit_16(283);
+emit_16(348);
+emit_16(284);
+emit_16(348);
+emit_16(283);
+emit_16(348);
+emit_16(284);
+emit_16(349);
+emit_16(285);
+emit_16(349);
+emit_16(284);
+emit_16(349);
+emit_16(285);
+emit_16(350);
+emit_16(286);
+emit_16(350);
+emit_16(285);
+emit_16(350);
+emit_16(286);
+emit_16(351);
+emit_16(287);
+emit_16(351);
+emit_16(286);
+emit_16(351);
+emit_16(287);
+emit_16(352);
+emit_16(288);
+emit_16(352);
+emit_16(287);
+emit_16(352);
+emit_16(288);
+emit_16(353);
+emit_16(289);
+emit_16(353);
+emit_16(288);
+emit_16(353);
+emit_16(289);
+emit_16(354);
+emit_16(290);
+emit_16(354);
+emit_16(289);
+emit_16(354);
+emit_16(290);
+emit_16(355);
+emit_16(291);
+emit_16(355);
+emit_16(290);
+emit_16(355);
+emit_16(291);
+emit_16(356);
+emit_16(292);
+emit_16(356);
+emit_16(291);
+emit_16(356);
+emit_16(292);
+emit_16(357);
+emit_16(293);
+emit_16(357);
+emit_16(292);
+emit_16(357);
+emit_16(293);
+emit_16(358);
+emit_16(294);
+emit_16(358);
+emit_16(293);
+emit_16(358);
+emit_16(294);
+emit_16(359);
+emit_16(295);
+emit_16(359);
+emit_16(294);
+emit_16(359);
+emit_16(295);
+emit_16(360);
+emit_16(296);
+emit_16(360);
+emit_16(295);
+emit_16(360);
+emit_16(296);
+emit_16(361);
+emit_16(297);
+emit_16(361);
+emit_16(296);
+emit_16(361);
+emit_16(297);
+emit_16(362);
+emit_16(298);
+emit_16(362);
+emit_16(297);
+emit_16(362);
+emit_16(298);
+emit_16(363);
+emit_16(299);
+emit_16(363);
+emit_16(298);
+emit_16(363);
+emit_16(299);
+emit_16(364);
+emit_16(300);
+emit_16(364);
+emit_16(299);
+emit_16(364);
+emit_16(300);
+emit_16(365);
+emit_16(301);
+emit_16(365);
+emit_16(300);
+emit_16(365);
+emit_16(301);
+emit_16(366);
+emit_16(302);
+emit_16(366);
+emit_16(301);
+emit_16(366);
+emit_16(302);
+emit_16(367);
+emit_16(303);
+emit_16(367);
+emit_16(302);
+emit_16(367);
+emit_16(303);
+emit_16(368);
+emit_16(304);
+emit_16(368);
+emit_16(303);
+emit_16(368);
+emit_16(304);
+emit_16(369);
+emit_16(305);
+emit_16(369);
+emit_16(304);
+emit_16(369);
+emit_16(305);
+emit_16(370);
+emit_16(306);
+emit_16(370);
+emit_16(305);
+emit_16(370);
+emit_16(306);
+emit_16(371);
+emit_16(307);
+emit_16(371);
+emit_16(306);
+emit_16(371);
+emit_16(307);
+emit_16(372);
+emit_16(308);
+emit_16(372);
+emit_16(307);
+emit_16(372);
+emit_16(308);
+emit_16(373);
+emit_16(309);
+emit_16(373);
+emit_16(308);
+emit_16(373);
+emit_16(309);
+emit_16(374);
+emit_16(310);
+emit_16(374);
+emit_16(309);
+emit_16(374);
+emit_16(310);
+emit_16(375);
+emit_16(311);
+emit_16(375);
+emit_16(310);
+emit_16(375);
+emit_16(311);
+emit_16(376);
+emit_16(312);
+emit_16(376);
+emit_16(311);
+emit_16(376);
+emit_16(312);
+emit_16(377);
+emit_16(313);
+emit_16(377);
+emit_16(312);
+emit_16(377);
+emit_16(313);
+emit_16(378);
+emit_16(314);
+emit_16(378);
+emit_16(313);
+emit_16(378);
+emit_16(314);
+emit_16(379);
+emit_16(315);
+emit_16(379);
+emit_16(314);
+emit_16(379);
+emit_16(315);
+emit_16(380);
+emit_16(316);
+emit_16(380);
+emit_16(315);
+emit_16(380);
+emit_16(316);
+emit_16(381);
+emit_16(317);
+emit_16(381);
+emit_16(316);
+emit_16(381);
+emit_16(317);
+emit_16(382);
+emit_16(318);
+emit_16(382);
+emit_16(317);
+emit_16(382);
+emit_16(318);
+emit_16(383);
+emit_16(319);
+emit_16(383);
+emit_16(318);
+emit_16(384);
+emit_16(320);
+emit_16(385);
+emit_16(321);
+emit_16(385);
+emit_16(320);
+emit_16(385);
+emit_16(321);
+emit_16(386);
+emit_16(322);
+emit_16(386);
+emit_16(321);
+emit_16(386);
+emit_16(322);
+emit_16(387);
+emit_16(323);
+emit_16(387);
+emit_16(322);
+emit_16(387);
+emit_16(323);
+emit_16(388);
+emit_16(324);
+emit_16(388);
+emit_16(323);
+emit_16(388);
+emit_16(324);
+emit_16(389);
+emit_16(325);
+emit_16(389);
+emit_16(324);
+emit_16(389);
+emit_16(325);
+emit_16(390);
+emit_16(326);
+emit_16(390);
+emit_16(325);
+emit_16(390);
+emit_16(326);
+emit_16(391);
+emit_16(327);
+emit_16(391);
+emit_16(326);
+emit_16(391);
+emit_16(327);
+emit_16(392);
+emit_16(328);
+emit_16(392);
+emit_16(327);
+emit_16(392);
+emit_16(328);
+emit_16(393);
+emit_16(329);
+emit_16(393);
+emit_16(328);
+emit_16(393);
+emit_16(329);
+emit_16(394);
+emit_16(330);
+emit_16(394);
+emit_16(329);
+emit_16(394);
+emit_16(330);
+emit_16(395);
+emit_16(331);
+emit_16(395);
+emit_16(330);
+emit_16(395);
+emit_16(331);
+emit_16(396);
+emit_16(332);
+emit_16(396);
+emit_16(331);
+emit_16(396);
+emit_16(332);
+emit_16(397);
+emit_16(333);
+emit_16(397);
+emit_16(332);
+emit_16(397);
+emit_16(333);
+emit_16(398);
+emit_16(334);
+emit_16(398);
+emit_16(333);
+emit_16(398);
+emit_16(334);
+emit_16(399);
+emit_16(335);
+emit_16(399);
+emit_16(334);
+emit_16(399);
+emit_16(335);
+emit_16(400);
+emit_16(336);
+emit_16(400);
+emit_16(335);
+emit_16(400);
+emit_16(336);
+emit_16(401);
+emit_16(337);
+emit_16(401);
+emit_16(336);
+emit_16(401);
+emit_16(337);
+emit_16(402);
+emit_16(338);
+emit_16(402);
+emit_16(337);
+emit_16(402);
+emit_16(338);
+emit_16(403);
+emit_16(339);
+emit_16(403);
+emit_16(338);
+emit_16(403);
+emit_16(339);
+emit_16(404);
+emit_16(340);
+emit_16(404);
+emit_16(339);
+emit_16(404);
+emit_16(340);
+emit_16(405);
+emit_16(341);
+emit_16(405);
+emit_16(340);
+emit_16(405);
+emit_16(341);
+emit_16(406);
+emit_16(342);
+emit_16(406);
+emit_16(341);
+emit_16(406);
+emit_16(342);
+emit_16(407);
+emit_16(343);
+emit_16(407);
+emit_16(342);
+emit_16(407);
+emit_16(343);
+emit_16(408);
+emit_16(344);
+emit_16(408);
+emit_16(343);
+emit_16(408);
+emit_16(344);
+emit_16(409);
+emit_16(345);
+emit_16(409);
+emit_16(344);
+emit_16(409);
+emit_16(345);
+emit_16(410);
+emit_16(346);
+emit_16(410);
+emit_16(345);
+emit_16(410);
+emit_16(346);
+emit_16(411);
+emit_16(347);
+emit_16(411);
+emit_16(346);
+emit_16(411);
+emit_16(347);
+emit_16(412);
+emit_16(348);
+emit_16(412);
+emit_16(347);
+emit_16(412);
+emit_16(348);
+emit_16(413);
+emit_16(349);
+emit_16(413);
+emit_16(348);
+emit_16(413);
+emit_16(349);
+emit_16(414);
+emit_16(350);
+emit_16(414);
+emit_16(349);
+emit_16(414);
+emit_16(350);
+emit_16(415);
+emit_16(351);
+emit_16(415);
+emit_16(350);
+emit_16(415);
+emit_16(351);
+emit_16(416);
+emit_16(352);
+emit_16(416);
+emit_16(351);
+emit_16(416);
+emit_16(352);
+emit_16(417);
+emit_16(353);
+emit_16(417);
+emit_16(352);
+emit_16(417);
+emit_16(353);
+emit_16(418);
+emit_16(354);
+emit_16(418);
+emit_16(353);
+emit_16(418);
+emit_16(354);
+emit_16(419);
+emit_16(355);
+emit_16(419);
+emit_16(354);
+emit_16(419);
+emit_16(355);
+emit_16(420);
+emit_16(356);
+emit_16(420);
+emit_16(355);
+emit_16(420);
+emit_16(356);
+emit_16(421);
+emit_16(357);
+emit_16(421);
+emit_16(356);
+emit_16(421);
+emit_16(357);
+emit_16(422);
+emit_16(358);
+emit_16(422);
+emit_16(357);
+emit_16(422);
+emit_16(358);
+emit_16(423);
+emit_16(359);
+emit_16(423);
+emit_16(358);
+emit_16(423);
+emit_16(359);
+emit_16(424);
+emit_16(360);
+emit_16(424);
+emit_16(359);
+emit_16(424);
+emit_16(360);
+emit_16(425);
+emit_16(361);
+emit_16(425);
+emit_16(360);
+emit_16(425);
+emit_16(361);
+emit_16(426);
+emit_16(362);
+emit_16(426);
+emit_16(361);
+emit_16(426);
+emit_16(362);
+emit_16(427);
+emit_16(363);
+emit_16(427);
+emit_16(362);
+emit_16(427);
+emit_16(363);
+emit_16(428);
+emit_16(364);
+emit_16(428);
+emit_16(363);
+emit_16(428);
+emit_16(364);
+emit_16(429);
+emit_16(365);
+emit_16(429);
+emit_16(364);
+emit_16(429);
+emit_16(365);
+emit_16(430);
+emit_16(366);
+emit_16(430);
+emit_16(365);
+emit_16(430);
+emit_16(366);
+emit_16(431);
+emit_16(367);
+emit_16(431);
+emit_16(366);
+emit_16(431);
+emit_16(367);
+emit_16(432);
+emit_16(368);
+emit_16(432);
+emit_16(367);
+emit_16(432);
+emit_16(368);
+emit_16(433);
+emit_16(369);
+emit_16(433);
+emit_16(368);
+emit_16(433);
+emit_16(369);
+emit_16(434);
+emit_16(370);
+emit_16(434);
+emit_16(369);
+emit_16(434);
+emit_16(370);
+emit_16(435);
+emit_16(371);
+emit_16(435);
+emit_16(370);
+emit_16(435);
+emit_16(371);
+emit_16(436);
+emit_16(372);
+emit_16(436);
+emit_16(371);
+emit_16(436);
+emit_16(372);
+emit_16(437);
+emit_16(373);
+emit_16(437);
+emit_16(372);
+emit_16(437);
+emit_16(373);
+emit_16(438);
+emit_16(374);
+emit_16(438);
+emit_16(373);
+emit_16(438);
+emit_16(374);
+emit_16(439);
+emit_16(375);
+emit_16(439);
+emit_16(374);
+emit_16(439);
+emit_16(375);
+emit_16(440);
+emit_16(376);
+emit_16(440);
+emit_16(375);
+emit_16(440);
+emit_16(376);
+emit_16(441);
+emit_16(377);
+emit_16(441);
+emit_16(376);
+emit_16(441);
+emit_16(377);
+emit_16(442);
+emit_16(378);
+emit_16(442);
+emit_16(377);
+emit_16(442);
+emit_16(378);
+emit_16(443);
+emit_16(379);
+emit_16(443);
+emit_16(378);
+emit_16(443);
+emit_16(379);
+emit_16(444);
+emit_16(380);
+emit_16(444);
+emit_16(379);
+emit_16(444);
+emit_16(380);
+emit_16(445);
+emit_16(381);
+emit_16(445);
+emit_16(380);
+emit_16(445);
+emit_16(381);
+emit_16(446);
+emit_16(382);
+emit_16(446);
+emit_16(381);
+emit_16(446);
+emit_16(382);
+emit_16(447);
+emit_16(383);
+emit_16(447);
+emit_16(382);
+emit_16(448);
+emit_16(384);
+emit_16(449);
+emit_16(385);
+emit_16(449);
+emit_16(384);
+emit_16(449);
+emit_16(385);
+emit_16(450);
+emit_16(386);
+emit_16(450);
+emit_16(385);
+emit_16(450);
+emit_16(386);
+emit_16(451);
+emit_16(387);
+emit_16(451);
+emit_16(386);
+emit_16(451);
+emit_16(387);
+emit_16(452);
+emit_16(388);
+emit_16(452);
+emit_16(387);
+emit_16(452);
+emit_16(388);
+emit_16(453);
+emit_16(389);
+emit_16(453);
+emit_16(388);
+emit_16(453);
+emit_16(389);
+emit_16(454);
+emit_16(390);
+emit_16(454);
+emit_16(389);
+emit_16(454);
+emit_16(390);
+emit_16(455);
+emit_16(391);
+emit_16(455);
+emit_16(390);
+emit_16(455);
+emit_16(391);
+emit_16(456);
+emit_16(392);
+emit_16(456);
+emit_16(391);
+emit_16(456);
+emit_16(392);
+emit_16(457);
+emit_16(393);
+emit_16(457);
+emit_16(392);
+emit_16(457);
+emit_16(393);
+emit_16(458);
+emit_16(394);
+emit_16(458);
+emit_16(393);
+emit_16(458);
+emit_16(394);
+emit_16(459);
+emit_16(395);
+emit_16(459);
+emit_16(394);
+emit_16(459);
+emit_16(395);
+emit_16(460);
+emit_16(396);
+emit_16(460);
+emit_16(395);
+emit_16(460);
+emit_16(396);
+emit_16(461);
+emit_16(397);
+emit_16(461);
+emit_16(396);
+emit_16(461);
+emit_16(397);
+emit_16(462);
+emit_16(398);
+emit_16(462);
+emit_16(397);
+emit_16(462);
+emit_16(398);
+emit_16(463);
+emit_16(399);
+emit_16(463);
+emit_16(398);
+emit_16(463);
+emit_16(399);
+emit_16(464);
+emit_16(400);
+emit_16(464);
+emit_16(399);
+emit_16(464);
+emit_16(400);
+emit_16(465);
+emit_16(401);
+emit_16(465);
+emit_16(400);
+emit_16(465);
+emit_16(401);
+emit_16(466);
+emit_16(402);
+emit_16(466);
+emit_16(401);
+emit_16(466);
+emit_16(402);
+emit_16(467);
+emit_16(403);
+emit_16(467);
+emit_16(402);
+emit_16(467);
+emit_16(403);
+emit_16(468);
+emit_16(404);
+emit_16(468);
+emit_16(403);
+emit_16(468);
+emit_16(404);
+emit_16(469);
+emit_16(405);
+emit_16(469);
+emit_16(404);
+emit_16(469);
+emit_16(405);
+emit_16(470);
+emit_16(406);
+emit_16(470);
+emit_16(405);
+emit_16(470);
+emit_16(406);
+emit_16(471);
+emit_16(407);
+emit_16(471);
+emit_16(406);
+emit_16(471);
+emit_16(407);
+emit_16(472);
+emit_16(408);
+emit_16(472);
+emit_16(407);
+emit_16(472);
+emit_16(408);
+emit_16(473);
+emit_16(409);
+emit_16(473);
+emit_16(408);
+emit_16(473);
+emit_16(409);
+emit_16(474);
+emit_16(410);
+emit_16(474);
+emit_16(409);
+emit_16(474);
+emit_16(410);
+emit_16(475);
+emit_16(411);
+emit_16(475);
+emit_16(410);
+emit_16(475);
+emit_16(411);
+emit_16(476);
+emit_16(412);
+emit_16(476);
+emit_16(411);
+emit_16(476);
+emit_16(412);
+emit_16(477);
+emit_16(413);
+emit_16(477);
+emit_16(412);
+emit_16(477);
+emit_16(413);
+emit_16(478);
+emit_16(414);
+emit_16(478);
+emit_16(413);
+emit_16(478);
+emit_16(414);
+emit_16(479);
+emit_16(415);
+emit_16(479);
+emit_16(414);
+emit_16(479);
+emit_16(415);
+emit_16(480);
+emit_16(416);
+emit_16(480);
+emit_16(415);
+emit_16(480);
+emit_16(416);
+emit_16(481);
+emit_16(417);
+emit_16(481);
+emit_16(416);
+emit_16(481);
+emit_16(417);
+emit_16(482);
+emit_16(418);
+emit_16(482);
+emit_16(417);
+emit_16(482);
+emit_16(418);
+emit_16(483);
+emit_16(419);
+emit_16(483);
+emit_16(418);
+emit_16(483);
+emit_16(419);
+emit_16(484);
+emit_16(420);
+emit_16(484);
+emit_16(419);
+emit_16(484);
+emit_16(420);
+emit_16(485);
+emit_16(421);
+emit_16(485);
+emit_16(420);
+emit_16(485);
+emit_16(421);
+emit_16(486);
+emit_16(422);
+emit_16(486);
+emit_16(421);
+emit_16(486);
+emit_16(422);
+emit_16(487);
+emit_16(423);
+emit_16(487);
+emit_16(422);
+emit_16(487);
+emit_16(423);
+emit_16(488);
+emit_16(424);
+emit_16(488);
+emit_16(423);
+emit_16(488);
+emit_16(424);
+emit_16(489);
+emit_16(425);
+emit_16(489);
+emit_16(424);
+emit_16(489);
+emit_16(425);
+emit_16(490);
+emit_16(426);
+emit_16(490);
+emit_16(425);
+emit_16(490);
+emit_16(426);
+emit_16(491);
+emit_16(427);
+emit_16(491);
+emit_16(426);
+emit_16(491);
+emit_16(427);
+emit_16(492);
+emit_16(428);
+emit_16(492);
+emit_16(427);
+emit_16(492);
+emit_16(428);
+emit_16(493);
+emit_16(429);
+emit_16(493);
+emit_16(428);
+emit_16(493);
+emit_16(429);
+emit_16(494);
+emit_16(430);
+emit_16(494);
+emit_16(429);
+emit_16(494);
+emit_16(430);
+emit_16(495);
+emit_16(431);
+emit_16(495);
+emit_16(430);
+emit_16(495);
+emit_16(431);
+emit_16(496);
+emit_16(432);
+emit_16(496);
+emit_16(431);
+emit_16(496);
+emit_16(432);
+emit_16(497);
+emit_16(433);
+emit_16(497);
+emit_16(432);
+emit_16(497);
+emit_16(433);
+emit_16(498);
+emit_16(434);
+emit_16(498);
+emit_16(433);
+emit_16(498);
+emit_16(434);
+emit_16(499);
+emit_16(435);
+emit_16(499);
+emit_16(434);
+emit_16(499);
+emit_16(435);
+emit_16(500);
+emit_16(436);
+emit_16(500);
+emit_16(435);
+emit_16(500);
+emit_16(436);
+emit_16(501);
+emit_16(437);
+emit_16(501);
+emit_16(436);
+emit_16(501);
+emit_16(437);
+emit_16(502);
+emit_16(438);
+emit_16(502);
+emit_16(437);
+emit_16(502);
+emit_16(438);
+emit_16(503);
+emit_16(439);
+emit_16(503);
+emit_16(438);
+emit_16(503);
+emit_16(439);
+emit_16(504);
+emit_16(440);
+emit_16(504);
+emit_16(439);
+emit_16(504);
+emit_16(440);
+emit_16(505);
+emit_16(441);
+emit_16(505);
+emit_16(440);
+emit_16(505);
+emit_16(441);
+emit_16(506);
+emit_16(442);
+emit_16(506);
+emit_16(441);
+emit_16(506);
+emit_16(442);
+emit_16(507);
+emit_16(443);
+emit_16(507);
+emit_16(442);
+emit_16(507);
+emit_16(443);
+emit_16(508);
+emit_16(444);
+emit_16(508);
+emit_16(443);
+emit_16(508);
+emit_16(444);
+emit_16(509);
+emit_16(445);
+emit_16(509);
+emit_16(444);
+emit_16(509);
+emit_16(445);
+emit_16(510);
+emit_16(446);
+emit_16(510);
+emit_16(445);
+emit_16(510);
+emit_16(446);
+emit_16(511);
+emit_16(447);
+emit_16(511);
+emit_16(446);
+emit_16(512);
+emit_16(448);
+emit_16(513);
+emit_16(449);
+emit_16(513);
+emit_16(448);
+emit_16(513);
+emit_16(449);
+emit_16(514);
+emit_16(450);
+emit_16(514);
+emit_16(449);
+emit_16(514);
+emit_16(450);
+emit_16(515);
+emit_16(451);
+emit_16(515);
+emit_16(450);
+emit_16(515);
+emit_16(451);
+emit_16(516);
+emit_16(452);
+emit_16(516);
+emit_16(451);
+emit_16(516);
+emit_16(452);
+emit_16(517);
+emit_16(453);
+emit_16(517);
+emit_16(452);
+emit_16(517);
+emit_16(453);
+emit_16(518);
+emit_16(454);
+emit_16(518);
+emit_16(453);
+emit_16(518);
+emit_16(454);
+emit_16(519);
+emit_16(455);
+emit_16(519);
+emit_16(454);
+emit_16(519);
+emit_16(455);
+emit_16(520);
+emit_16(456);
+emit_16(520);
+emit_16(455);
+emit_16(520);
+emit_16(456);
+emit_16(521);
+emit_16(457);
+emit_16(521);
+emit_16(456);
+emit_16(521);
+emit_16(457);
+emit_16(522);
+emit_16(458);
+emit_16(522);
+emit_16(457);
+emit_16(522);
+emit_16(458);
+emit_16(523);
+emit_16(459);
+emit_16(523);
+emit_16(458);
+emit_16(523);
+emit_16(459);
+emit_16(524);
+emit_16(460);
+emit_16(524);
+emit_16(459);
+emit_16(524);
+emit_16(460);
+emit_16(525);
+emit_16(461);
+emit_16(525);
+emit_16(460);
+emit_16(525);
+emit_16(461);
+emit_16(526);
+emit_16(462);
+emit_16(526);
+emit_16(461);
+emit_16(526);
+emit_16(462);
+emit_16(527);
+emit_16(463);
+emit_16(527);
+emit_16(462);
+emit_16(527);
+emit_16(463);
+emit_16(528);
+emit_16(464);
+emit_16(528);
+emit_16(463);
+emit_16(528);
+emit_16(464);
+emit_16(529);
+emit_16(465);
+emit_16(529);
+emit_16(464);
+emit_16(529);
+emit_16(465);
+emit_16(530);
+emit_16(466);
+emit_16(530);
+emit_16(465);
+emit_16(530);
+emit_16(466);
+emit_16(531);
+emit_16(467);
+emit_16(531);
+emit_16(466);
+emit_16(531);
+emit_16(467);
+emit_16(532);
+emit_16(468);
+emit_16(532);
+emit_16(467);
+emit_16(532);
+emit_16(468);
+emit_16(533);
+emit_16(469);
+emit_16(533);
+emit_16(468);
+emit_16(533);
+emit_16(469);
+emit_16(534);
+emit_16(470);
+emit_16(534);
+emit_16(469);
+emit_16(534);
+emit_16(470);
+emit_16(535);
+emit_16(471);
+emit_16(535);
+emit_16(470);
+emit_16(535);
+emit_16(471);
+emit_16(536);
+emit_16(472);
+emit_16(536);
+emit_16(471);
+emit_16(536);
+emit_16(472);
+emit_16(537);
+emit_16(473);
+emit_16(537);
+emit_16(472);
+emit_16(537);
+emit_16(473);
+emit_16(538);
+emit_16(474);
+emit_16(538);
+emit_16(473);
+emit_16(538);
+emit_16(474);
+emit_16(539);
+emit_16(475);
+emit_16(539);
+emit_16(474);
+emit_16(539);
+emit_16(475);
+emit_16(540);
+emit_16(476);
+emit_16(540);
+emit_16(475);
+emit_16(540);
+emit_16(476);
+emit_16(541);
+emit_16(477);
+emit_16(541);
+emit_16(476);
+emit_16(541);
+emit_16(477);
+emit_16(542);
+emit_16(478);
+emit_16(542);
+emit_16(477);
+emit_16(542);
+emit_16(478);
+emit_16(543);
+emit_16(479);
+emit_16(543);
+emit_16(478);
+emit_16(543);
+emit_16(479);
+emit_16(544);
+emit_16(480);
+emit_16(544);
+emit_16(479);
+emit_16(544);
+emit_16(480);
+emit_16(545);
+emit_16(481);
+emit_16(545);
+emit_16(480);
+emit_16(545);
+emit_16(481);
+emit_16(546);
+emit_16(482);
+emit_16(546);
+emit_16(481);
+emit_16(546);
+emit_16(482);
+emit_16(547);
+emit_16(483);
+emit_16(547);
+emit_16(482);
+emit_16(547);
+emit_16(483);
+emit_16(548);
+emit_16(484);
+emit_16(548);
+emit_16(483);
+emit_16(548);
+emit_16(484);
+emit_16(549);
+emit_16(485);
+emit_16(549);
+emit_16(484);
+emit_16(549);
+emit_16(485);
+emit_16(550);
+emit_16(486);
+emit_16(550);
+emit_16(485);
+emit_16(550);
+emit_16(486);
+emit_16(551);
+emit_16(487);
+emit_16(551);
+emit_16(486);
+emit_16(551);
+emit_16(487);
+emit_16(552);
+emit_16(488);
+emit_16(552);
+emit_16(487);
+emit_16(552);
+emit_16(488);
+emit_16(553);
+emit_16(489);
+emit_16(553);
+emit_16(488);
+emit_16(553);
+emit_16(489);
+emit_16(554);
+emit_16(490);
+emit_16(554);
+emit_16(489);
+emit_16(554);
+emit_16(490);
+emit_16(555);
+emit_16(491);
+emit_16(555);
+emit_16(490);
+emit_16(555);
+emit_16(491);
+emit_16(556);
+emit_16(492);
+emit_16(556);
+emit_16(491);
+emit_16(556);
+emit_16(492);
+emit_16(557);
+emit_16(493);
+emit_16(557);
+emit_16(492);
+emit_16(557);
+emit_16(493);
+emit_16(558);
+emit_16(494);
+emit_16(558);
+emit_16(493);
+emit_16(558);
+emit_16(494);
+emit_16(559);
+emit_16(495);
+emit_16(559);
+emit_16(494);
+emit_16(559);
+emit_16(495);
+emit_16(560);
+emit_16(496);
+emit_16(560);
+emit_16(495);
+emit_16(560);
+emit_16(496);
+emit_16(561);
+emit_16(497);
+emit_16(561);
+emit_16(496);
+emit_16(561);
+emit_16(497);
+emit_16(562);
+emit_16(498);
+emit_16(562);
+emit_16(497);
+emit_16(562);
+emit_16(498);
+emit_16(563);
+emit_16(499);
+emit_16(563);
+emit_16(498);
+emit_16(563);
+emit_16(499);
+emit_16(564);
+emit_16(500);
+emit_16(564);
+emit_16(499);
+emit_16(564);
+emit_16(500);
+emit_16(565);
+emit_16(501);
+emit_16(565);
+emit_16(500);
+emit_16(565);
+emit_16(501);
+emit_16(566);
+emit_16(502);
+emit_16(566);
+emit_16(501);
+emit_16(566);
+emit_16(502);
+emit_16(567);
+emit_16(503);
+emit_16(567);
+emit_16(502);
+emit_16(567);
+emit_16(503);
+emit_16(568);
+emit_16(504);
+emit_16(568);
+emit_16(503);
+emit_16(568);
+emit_16(504);
+emit_16(569);
+emit_16(505);
+emit_16(569);
+emit_16(504);
+emit_16(569);
+emit_16(505);
+emit_16(570);
+emit_16(506);
+emit_16(570);
+emit_16(505);
+emit_16(570);
+emit_16(506);
+emit_16(571);
+emit_16(507);
+emit_16(571);
+emit_16(506);
+emit_16(571);
+emit_16(507);
+emit_16(572);
+emit_16(508);
+emit_16(572);
+emit_16(507);
+emit_16(572);
+emit_16(508);
+emit_16(573);
+emit_16(509);
+emit_16(573);
+emit_16(508);
+emit_16(573);
+emit_16(509);
+emit_16(574);
+emit_16(510);
+emit_16(574);
+emit_16(509);
+emit_16(574);
+emit_16(510);
+emit_16(575);
+emit_16(511);
+emit_16(575);
+emit_16(510);
+emit_16(576);
+emit_16(512);
+emit_16(577);
+emit_16(513);
+emit_16(577);
+emit_16(512);
+emit_16(577);
+emit_16(513);
+emit_16(578);
+emit_16(514);
+emit_16(578);
+emit_16(513);
+emit_16(578);
+emit_16(514);
+emit_16(579);
+emit_16(515);
+emit_16(579);
+emit_16(514);
+emit_16(579);
+emit_16(515);
+emit_16(580);
+emit_16(516);
+emit_16(580);
+emit_16(515);
+emit_16(580);
+emit_16(516);
+emit_16(581);
+emit_16(517);
+emit_16(581);
+emit_16(516);
+emit_16(581);
+emit_16(517);
+emit_16(582);
+emit_16(518);
+emit_16(582);
+emit_16(517);
+emit_16(582);
+emit_16(518);
+emit_16(583);
+emit_16(519);
+emit_16(583);
+emit_16(518);
+emit_16(583);
+emit_16(519);
+emit_16(584);
+emit_16(520);
+emit_16(584);
+emit_16(519);
+emit_16(584);
+emit_16(520);
+emit_16(585);
+emit_16(521);
+emit_16(585);
+emit_16(520);
+emit_16(585);
+emit_16(521);
+emit_16(586);
+emit_16(522);
+emit_16(586);
+emit_16(521);
+emit_16(586);
+emit_16(522);
+emit_16(587);
+emit_16(523);
+emit_16(587);
+emit_16(522);
+emit_16(587);
+emit_16(523);
+emit_16(588);
+emit_16(524);
+emit_16(588);
+emit_16(523);
+emit_16(588);
+emit_16(524);
+emit_16(589);
+emit_16(525);
+emit_16(589);
+emit_16(524);
+emit_16(589);
+emit_16(525);
+emit_16(590);
+emit_16(526);
+emit_16(590);
+emit_16(525);
+emit_16(590);
+emit_16(526);
+emit_16(591);
+emit_16(527);
+emit_16(591);
+emit_16(526);
+emit_16(591);
+emit_16(527);
+emit_16(592);
+emit_16(528);
+emit_16(592);
+emit_16(527);
+emit_16(592);
+emit_16(528);
+emit_16(593);
+emit_16(529);
+emit_16(593);
+emit_16(528);
+emit_16(593);
+emit_16(529);
+emit_16(594);
+emit_16(530);
+emit_16(594);
+emit_16(529);
+emit_16(594);
+emit_16(530);
+emit_16(595);
+emit_16(531);
+emit_16(595);
+emit_16(530);
+emit_16(595);
+emit_16(531);
+emit_16(596);
+emit_16(532);
+emit_16(596);
+emit_16(531);
+emit_16(596);
+emit_16(532);
+emit_16(597);
+emit_16(533);
+emit_16(597);
+emit_16(532);
+emit_16(597);
+emit_16(533);
+emit_16(598);
+emit_16(534);
+emit_16(598);
+emit_16(533);
+emit_16(598);
+emit_16(534);
+emit_16(599);
+emit_16(535);
+emit_16(599);
+emit_16(534);
+emit_16(599);
+emit_16(535);
+emit_16(600);
+emit_16(536);
+emit_16(600);
+emit_16(535);
+emit_16(600);
+emit_16(536);
+emit_16(601);
+emit_16(537);
+emit_16(601);
+emit_16(536);
+emit_16(601);
+emit_16(537);
+emit_16(602);
+emit_16(538);
+emit_16(602);
+emit_16(537);
+emit_16(602);
+emit_16(538);
+emit_16(603);
+emit_16(539);
+emit_16(603);
+emit_16(538);
+emit_16(603);
+emit_16(539);
+emit_16(604);
+emit_16(540);
+emit_16(604);
+emit_16(539);
+emit_16(604);
+emit_16(540);
+emit_16(605);
+emit_16(541);
+emit_16(605);
+emit_16(540);
+emit_16(605);
+emit_16(541);
+emit_16(606);
+emit_16(542);
+emit_16(606);
+emit_16(541);
+emit_16(606);
+emit_16(542);
+emit_16(607);
+emit_16(543);
+emit_16(607);
+emit_16(542);
+emit_16(607);
+emit_16(543);
+emit_16(608);
+emit_16(544);
+emit_16(608);
+emit_16(543);
+emit_16(608);
+emit_16(544);
+emit_16(609);
+emit_16(545);
+emit_16(609);
+emit_16(544);
+emit_16(609);
+emit_16(545);
+emit_16(610);
+emit_16(546);
+emit_16(610);
+emit_16(545);
+emit_16(610);
+emit_16(546);
+emit_16(611);
+emit_16(547);
+emit_16(611);
+emit_16(546);
+emit_16(611);
+emit_16(547);
+emit_16(612);
+emit_16(548);
+emit_16(612);
+emit_16(547);
+emit_16(612);
+emit_16(548);
+emit_16(613);
+emit_16(549);
+emit_16(613);
+emit_16(548);
+emit_16(613);
+emit_16(549);
+emit_16(614);
+emit_16(550);
+emit_16(614);
+emit_16(549);
+emit_16(614);
+emit_16(550);
+emit_16(615);
+emit_16(551);
+emit_16(615);
+emit_16(550);
+emit_16(615);
+emit_16(551);
+emit_16(616);
+emit_16(552);
+emit_16(616);
+emit_16(551);
+emit_16(616);
+emit_16(552);
+emit_16(617);
+emit_16(553);
+emit_16(617);
+emit_16(552);
+emit_16(617);
+emit_16(553);
+emit_16(618);
+emit_16(554);
+emit_16(618);
+emit_16(553);
+emit_16(618);
+emit_16(554);
+emit_16(619);
+emit_16(555);
+emit_16(619);
+emit_16(554);
+emit_16(619);
+emit_16(555);
+emit_16(620);
+emit_16(556);
+emit_16(620);
+emit_16(555);
+emit_16(620);
+emit_16(556);
+emit_16(621);
+emit_16(557);
+emit_16(621);
+emit_16(556);
+emit_16(621);
+emit_16(557);
+emit_16(622);
+emit_16(558);
+emit_16(622);
+emit_16(557);
+emit_16(622);
+emit_16(558);
+emit_16(623);
+emit_16(559);
+emit_16(623);
+emit_16(558);
+emit_16(623);
+emit_16(559);
+emit_16(624);
+emit_16(560);
+emit_16(624);
+emit_16(559);
+emit_16(624);
+emit_16(560);
+emit_16(625);
+emit_16(561);
+emit_16(625);
+emit_16(560);
+emit_16(625);
+emit_16(561);
+emit_16(626);
+emit_16(562);
+emit_16(626);
+emit_16(561);
+emit_16(626);
+emit_16(562);
+emit_16(627);
+emit_16(563);
+emit_16(627);
+emit_16(562);
+emit_16(627);
+emit_16(563);
+emit_16(628);
+emit_16(564);
+emit_16(628);
+emit_16(563);
+emit_16(628);
+emit_16(564);
+emit_16(629);
+emit_16(565);
+emit_16(629);
+emit_16(564);
+emit_16(629);
+emit_16(565);
+emit_16(630);
+emit_16(566);
+emit_16(630);
+emit_16(565);
+emit_16(630);
+emit_16(566);
+emit_16(631);
+emit_16(567);
+emit_16(631);
+emit_16(566);
+emit_16(631);
+emit_16(567);
+emit_16(632);
+emit_16(568);
+emit_16(632);
+emit_16(567);
+emit_16(632);
+emit_16(568);
+emit_16(633);
+emit_16(569);
+emit_16(633);
+emit_16(568);
+emit_16(633);
+emit_16(569);
+emit_16(634);
+emit_16(570);
+emit_16(634);
+emit_16(569);
+emit_16(634);
+emit_16(570);
+emit_16(635);
+emit_16(571);
+emit_16(635);
+emit_16(570);
+emit_16(635);
+emit_16(571);
+emit_16(636);
+emit_16(572);
+emit_16(636);
+emit_16(571);
+emit_16(636);
+emit_16(572);
+emit_16(637);
+emit_16(573);
+emit_16(637);
+emit_16(572);
+emit_16(637);
+emit_16(573);
+emit_16(638);
+emit_16(574);
+emit_16(638);
+emit_16(573);
+emit_16(638);
+emit_16(574);
+emit_16(639);
+emit_16(575);
+emit_16(639);
+emit_16(574);
+emit_16(640);
+emit_16(576);
+emit_16(641);
+emit_16(577);
+emit_16(641);
+emit_16(576);
+emit_16(641);
+emit_16(577);
+emit_16(642);
+emit_16(578);
+emit_16(642);
+emit_16(577);
+emit_16(642);
+emit_16(578);
+emit_16(643);
+emit_16(579);
+emit_16(643);
+emit_16(578);
+emit_16(643);
+emit_16(579);
+emit_16(644);
+emit_16(580);
+emit_16(644);
+emit_16(579);
+emit_16(644);
+emit_16(580);
+emit_16(645);
+emit_16(581);
+emit_16(645);
+emit_16(580);
+emit_16(645);
+emit_16(581);
+emit_16(646);
+emit_16(582);
+emit_16(646);
+emit_16(581);
+emit_16(646);
+emit_16(582);
+emit_16(647);
+emit_16(583);
+emit_16(647);
+emit_16(582);
+emit_16(647);
+emit_16(583);
+emit_16(648);
+emit_16(584);
+emit_16(648);
+emit_16(583);
+emit_16(648);
+emit_16(584);
+emit_16(649);
+emit_16(585);
+emit_16(649);
+emit_16(584);
+emit_16(649);
+emit_16(585);
+emit_16(650);
+emit_16(586);
+emit_16(650);
+emit_16(585);
+emit_16(650);
+emit_16(586);
+emit_16(651);
+emit_16(587);
+emit_16(651);
+emit_16(586);
+emit_16(651);
+emit_16(587);
+emit_16(652);
+emit_16(588);
+emit_16(652);
+emit_16(587);
+emit_16(652);
+emit_16(588);
+emit_16(653);
+emit_16(589);
+emit_16(653);
+emit_16(588);
+emit_16(653);
+emit_16(589);
+emit_16(654);
+emit_16(590);
+emit_16(654);
+emit_16(589);
+emit_16(654);
+emit_16(590);
+emit_16(655);
+emit_16(591);
+emit_16(655);
+emit_16(590);
+emit_16(655);
+emit_16(591);
+emit_16(656);
+emit_16(592);
+emit_16(656);
+emit_16(591);
+emit_16(656);
+emit_16(592);
+emit_16(657);
+emit_16(593);
+emit_16(657);
+emit_16(592);
+emit_16(657);
+emit_16(593);
+emit_16(658);
+emit_16(594);
+emit_16(658);
+emit_16(593);
+emit_16(658);
+emit_16(594);
+emit_16(659);
+emit_16(595);
+emit_16(659);
+emit_16(594);
+emit_16(659);
+emit_16(595);
+emit_16(660);
+emit_16(596);
+emit_16(660);
+emit_16(595);
+emit_16(660);
+emit_16(596);
+emit_16(661);
+emit_16(597);
+emit_16(661);
+emit_16(596);
+emit_16(661);
+emit_16(597);
+emit_16(662);
+emit_16(598);
+emit_16(662);
+emit_16(597);
+emit_16(662);
+emit_16(598);
+emit_16(663);
+emit_16(599);
+emit_16(663);
+emit_16(598);
+emit_16(663);
+emit_16(599);
+emit_16(664);
+emit_16(600);
+emit_16(664);
+emit_16(599);
+emit_16(664);
+emit_16(600);
+emit_16(665);
+emit_16(601);
+emit_16(665);
+emit_16(600);
+emit_16(665);
+emit_16(601);
+emit_16(666);
+emit_16(602);
+emit_16(666);
+emit_16(601);
+emit_16(666);
+emit_16(602);
+emit_16(667);
+emit_16(603);
+emit_16(667);
+emit_16(602);
+emit_16(667);
+emit_16(603);
+emit_16(668);
+emit_16(604);
+emit_16(668);
+emit_16(603);
+emit_16(668);
+emit_16(604);
+emit_16(669);
+emit_16(605);
+emit_16(669);
+emit_16(604);
+emit_16(669);
+emit_16(605);
+emit_16(670);
+emit_16(606);
+emit_16(670);
+emit_16(605);
+emit_16(670);
+emit_16(606);
+emit_16(671);
+emit_16(607);
+emit_16(671);
+emit_16(606);
+emit_16(671);
+emit_16(607);
+emit_16(672);
+emit_16(608);
+emit_16(672);
+emit_16(607);
+emit_16(672);
+emit_16(608);
+emit_16(673);
+emit_16(609);
+emit_16(673);
+emit_16(608);
+emit_16(673);
+emit_16(609);
+emit_16(674);
+emit_16(610);
+emit_16(674);
+emit_16(609);
+emit_16(674);
+emit_16(610);
+emit_16(675);
+emit_16(611);
+emit_16(675);
+emit_16(610);
+emit_16(675);
+emit_16(611);
+emit_16(676);
+emit_16(612);
+emit_16(676);
+emit_16(611);
+emit_16(676);
+emit_16(612);
+emit_16(677);
+emit_16(613);
+emit_16(677);
+emit_16(612);
+emit_16(677);
+emit_16(613);
+emit_16(678);
+emit_16(614);
+emit_16(678);
+emit_16(613);
+emit_16(678);
+emit_16(614);
+emit_16(679);
+emit_16(615);
+emit_16(679);
+emit_16(614);
+emit_16(679);
+emit_16(615);
+emit_16(680);
+emit_16(616);
+emit_16(680);
+emit_16(615);
+emit_16(680);
+emit_16(616);
+emit_16(681);
+emit_16(617);
+emit_16(681);
+emit_16(616);
+emit_16(681);
+emit_16(617);
+emit_16(682);
+emit_16(618);
+emit_16(682);
+emit_16(617);
+emit_16(682);
+emit_16(618);
+emit_16(683);
+emit_16(619);
+emit_16(683);
+emit_16(618);
+emit_16(683);
+emit_16(619);
+emit_16(684);
+emit_16(620);
+emit_16(684);
+emit_16(619);
+emit_16(684);
+emit_16(620);
+emit_16(685);
+emit_16(621);
+emit_16(685);
+emit_16(620);
+emit_16(685);
+emit_16(621);
+emit_16(686);
+emit_16(622);
+emit_16(686);
+emit_16(621);
+emit_16(686);
+emit_16(622);
+emit_16(687);
+emit_16(623);
+emit_16(687);
+emit_16(622);
+emit_16(687);
+emit_16(623);
+emit_16(688);
+emit_16(624);
+emit_16(688);
+emit_16(623);
+emit_16(688);
+emit_16(624);
+emit_16(689);
+emit_16(625);
+emit_16(689);
+emit_16(624);
+emit_16(689);
+emit_16(625);
+emit_16(690);
+emit_16(626);
+emit_16(690);
+emit_16(625);
+emit_16(690);
+emit_16(626);
+emit_16(691);
+emit_16(627);
+emit_16(691);
+emit_16(626);
+emit_16(691);
+emit_16(627);
+emit_16(692);
+emit_16(628);
+emit_16(692);
+emit_16(627);
+emit_16(692);
+emit_16(628);
+emit_16(693);
+emit_16(629);
+emit_16(693);
+emit_16(628);
+emit_16(693);
+emit_16(629);
+emit_16(694);
+emit_16(630);
+emit_16(694);
+emit_16(629);
+emit_16(694);
+emit_16(630);
+emit_16(695);
+emit_16(631);
+emit_16(695);
+emit_16(630);
+emit_16(695);
+emit_16(631);
+emit_16(696);
+emit_16(632);
+emit_16(696);
+emit_16(631);
+emit_16(696);
+emit_16(632);
+emit_16(697);
+emit_16(633);
+emit_16(697);
+emit_16(632);
+emit_16(697);
+emit_16(633);
+emit_16(698);
+emit_16(634);
+emit_16(698);
+emit_16(633);
+emit_16(698);
+emit_16(634);
+emit_16(699);
+emit_16(635);
+emit_16(699);
+emit_16(634);
+emit_16(699);
+emit_16(635);
+emit_16(700);
+emit_16(636);
+emit_16(700);
+emit_16(635);
+emit_16(700);
+emit_16(636);
+emit_16(701);
+emit_16(637);
+emit_16(701);
+emit_16(636);
+emit_16(701);
+emit_16(637);
+emit_16(702);
+emit_16(638);
+emit_16(702);
+emit_16(637);
+emit_16(702);
+emit_16(638);
+emit_16(703);
+emit_16(639);
+emit_16(703);
+emit_16(638);
+emit_16(704);
+emit_16(640);
+emit_16(705);
+emit_16(641);
+emit_16(705);
+emit_16(640);
+emit_16(705);
+emit_16(641);
+emit_16(706);
+emit_16(642);
+emit_16(706);
+emit_16(641);
+emit_16(706);
+emit_16(642);
+emit_16(707);
+emit_16(643);
+emit_16(707);
+emit_16(642);
+emit_16(707);
+emit_16(643);
+emit_16(708);
+emit_16(644);
+emit_16(708);
+emit_16(643);
+emit_16(708);
+emit_16(644);
+emit_16(709);
+emit_16(645);
+emit_16(709);
+emit_16(644);
+emit_16(709);
+emit_16(645);
+emit_16(710);
+emit_16(646);
+emit_16(710);
+emit_16(645);
+emit_16(710);
+emit_16(646);
+emit_16(711);
+emit_16(647);
+emit_16(711);
+emit_16(646);
+emit_16(711);
+emit_16(647);
+emit_16(712);
+emit_16(648);
+emit_16(712);
+emit_16(647);
+emit_16(712);
+emit_16(648);
+emit_16(713);
+emit_16(649);
+emit_16(713);
+emit_16(648);
+emit_16(713);
+emit_16(649);
+emit_16(714);
+emit_16(650);
+emit_16(714);
+emit_16(649);
+emit_16(714);
+emit_16(650);
+emit_16(715);
+emit_16(651);
+emit_16(715);
+emit_16(650);
+emit_16(715);
+emit_16(651);
+emit_16(716);
+emit_16(652);
+emit_16(716);
+emit_16(651);
+emit_16(716);
+emit_16(652);
+emit_16(717);
+emit_16(653);
+emit_16(717);
+emit_16(652);
+emit_16(717);
+emit_16(653);
+emit_16(718);
+emit_16(654);
+emit_16(718);
+emit_16(653);
+emit_16(718);
+emit_16(654);
+emit_16(719);
+emit_16(655);
+emit_16(719);
+emit_16(654);
+emit_16(719);
+emit_16(655);
+emit_16(720);
+emit_16(656);
+emit_16(720);
+emit_16(655);
+emit_16(720);
+emit_16(656);
+emit_16(721);
+emit_16(657);
+emit_16(721);
+emit_16(656);
+emit_16(721);
+emit_16(657);
+emit_16(722);
+emit_16(658);
+emit_16(722);
+emit_16(657);
+emit_16(722);
+emit_16(658);
+emit_16(723);
+emit_16(659);
+emit_16(723);
+emit_16(658);
+emit_16(723);
+emit_16(659);
+emit_16(724);
+emit_16(660);
+emit_16(724);
+emit_16(659);
+emit_16(724);
+emit_16(660);
+emit_16(725);
+emit_16(661);
+emit_16(725);
+emit_16(660);
+emit_16(725);
+emit_16(661);
+emit_16(726);
+emit_16(662);
+emit_16(726);
+emit_16(661);
+emit_16(726);
+emit_16(662);
+emit_16(727);
+emit_16(663);
+emit_16(727);
+emit_16(662);
+emit_16(727);
+emit_16(663);
+emit_16(728);
+emit_16(664);
+emit_16(728);
+emit_16(663);
+emit_16(728);
+emit_16(664);
+emit_16(729);
+emit_16(665);
+emit_16(729);
+emit_16(664);
+emit_16(729);
+emit_16(665);
+emit_16(730);
+emit_16(666);
+emit_16(730);
+emit_16(665);
+emit_16(730);
+emit_16(666);
+emit_16(731);
+emit_16(667);
+emit_16(731);
+emit_16(666);
+emit_16(731);
+emit_16(667);
+emit_16(732);
+emit_16(668);
+emit_16(732);
+emit_16(667);
+emit_16(732);
+emit_16(668);
+emit_16(733);
+emit_16(669);
+emit_16(733);
+emit_16(668);
+emit_16(733);
+emit_16(669);
+emit_16(734);
+emit_16(670);
+emit_16(734);
+emit_16(669);
+emit_16(734);
+emit_16(670);
+emit_16(735);
+emit_16(671);
+emit_16(735);
+emit_16(670);
+emit_16(735);
+emit_16(671);
+emit_16(736);
+emit_16(672);
+emit_16(736);
+emit_16(671);
+emit_16(736);
+emit_16(672);
+emit_16(737);
+emit_16(673);
+emit_16(737);
+emit_16(672);
+emit_16(737);
+emit_16(673);
+emit_16(738);
+emit_16(674);
+emit_16(738);
+emit_16(673);
+emit_16(738);
+emit_16(674);
+emit_16(739);
+emit_16(675);
+emit_16(739);
+emit_16(674);
+emit_16(739);
+emit_16(675);
+emit_16(740);
+emit_16(676);
+emit_16(740);
+emit_16(675);
+emit_16(740);
+emit_16(676);
+emit_16(741);
+emit_16(677);
+emit_16(741);
+emit_16(676);
+emit_16(741);
+emit_16(677);
+emit_16(742);
+emit_16(678);
+emit_16(742);
+emit_16(677);
+emit_16(742);
+emit_16(678);
+emit_16(743);
+emit_16(679);
+emit_16(743);
+emit_16(678);
+emit_16(743);
+emit_16(679);
+emit_16(744);
+emit_16(680);
+emit_16(744);
+emit_16(679);
+emit_16(744);
+emit_16(680);
+emit_16(745);
+emit_16(681);
+emit_16(745);
+emit_16(680);
+emit_16(745);
+emit_16(681);
+emit_16(746);
+emit_16(682);
+emit_16(746);
+emit_16(681);
+emit_16(746);
+emit_16(682);
+emit_16(747);
+emit_16(683);
+emit_16(747);
+emit_16(682);
+emit_16(747);
+emit_16(683);
+emit_16(748);
+emit_16(684);
+emit_16(748);
+emit_16(683);
+emit_16(748);
+emit_16(684);
+emit_16(749);
+emit_16(685);
+emit_16(749);
+emit_16(684);
+emit_16(749);
+emit_16(685);
+emit_16(750);
+emit_16(686);
+emit_16(750);
+emit_16(685);
+emit_16(750);
+emit_16(686);
+emit_16(751);
+emit_16(687);
+emit_16(751);
+emit_16(686);
+emit_16(751);
+emit_16(687);
+emit_16(752);
+emit_16(688);
+emit_16(752);
+emit_16(687);
+emit_16(752);
+emit_16(688);
+emit_16(753);
+emit_16(689);
+emit_16(753);
+emit_16(688);
+emit_16(753);
+emit_16(689);
+emit_16(754);
+emit_16(690);
+emit_16(754);
+emit_16(689);
+emit_16(754);
+emit_16(690);
+emit_16(755);
+emit_16(691);
+emit_16(755);
+emit_16(690);
+emit_16(755);
+emit_16(691);
+emit_16(756);
+emit_16(692);
+emit_16(756);
+emit_16(691);
+emit_16(756);
+emit_16(692);
+emit_16(757);
+emit_16(693);
+emit_16(757);
+emit_16(692);
+emit_16(757);
+emit_16(693);
+emit_16(758);
+emit_16(694);
+emit_16(758);
+emit_16(693);
+emit_16(758);
+emit_16(694);
+emit_16(759);
+emit_16(695);
+emit_16(759);
+emit_16(694);
+emit_16(759);
+emit_16(695);
+emit_16(760);
+emit_16(696);
+emit_16(760);
+emit_16(695);
+emit_16(760);
+emit_16(696);
+emit_16(761);
+emit_16(697);
+emit_16(761);
+emit_16(696);
+emit_16(761);
+emit_16(697);
+emit_16(762);
+emit_16(698);
+emit_16(762);
+emit_16(697);
+emit_16(762);
+emit_16(698);
+emit_16(763);
+emit_16(699);
+emit_16(763);
+emit_16(698);
+emit_16(763);
+emit_16(699);
+emit_16(764);
+emit_16(700);
+emit_16(764);
+emit_16(699);
+emit_16(764);
+emit_16(700);
+emit_16(765);
+emit_16(701);
+emit_16(765);
+emit_16(700);
+emit_16(765);
+emit_16(701);
+emit_16(766);
+emit_16(702);
+emit_16(766);
+emit_16(701);
+emit_16(766);
+emit_16(702);
+emit_16(767);
+emit_16(703);
+emit_16(767);
+emit_16(702);
+emit_16(768);
+emit_16(704);
+emit_16(769);
+emit_16(705);
+emit_16(769);
+emit_16(704);
+emit_16(769);
+emit_16(705);
+emit_16(770);
+emit_16(706);
+emit_16(770);
+emit_16(705);
+emit_16(770);
+emit_16(706);
+emit_16(771);
+emit_16(707);
+emit_16(771);
+emit_16(706);
+emit_16(771);
+emit_16(707);
+emit_16(772);
+emit_16(708);
+emit_16(772);
+emit_16(707);
+emit_16(772);
+emit_16(708);
+emit_16(773);
+emit_16(709);
+emit_16(773);
+emit_16(708);
+emit_16(773);
+emit_16(709);
+emit_16(774);
+emit_16(710);
+emit_16(774);
+emit_16(709);
+emit_16(774);
+emit_16(710);
+emit_16(775);
+emit_16(711);
+emit_16(775);
+emit_16(710);
+emit_16(775);
+emit_16(711);
+emit_16(776);
+emit_16(712);
+emit_16(776);
+emit_16(711);
+emit_16(776);
+emit_16(712);
+emit_16(777);
+emit_16(713);
+emit_16(777);
+emit_16(712);
+emit_16(777);
+emit_16(713);
+emit_16(778);
+emit_16(714);
+emit_16(778);
+emit_16(713);
+emit_16(778);
+emit_16(714);
+emit_16(779);
+emit_16(715);
+emit_16(779);
+emit_16(714);
+emit_16(779);
+emit_16(715);
+emit_16(780);
+emit_16(716);
+emit_16(780);
+emit_16(715);
+emit_16(780);
+emit_16(716);
+emit_16(781);
+emit_16(717);
+emit_16(781);
+emit_16(716);
+emit_16(781);
+emit_16(717);
+emit_16(782);
+emit_16(718);
+emit_16(782);
+emit_16(717);
+emit_16(782);
+emit_16(718);
+emit_16(783);
+emit_16(719);
+emit_16(783);
+emit_16(718);
+emit_16(783);
+emit_16(719);
+emit_16(784);
+emit_16(720);
+emit_16(784);
+emit_16(719);
+emit_16(784);
+emit_16(720);
+emit_16(785);
+emit_16(721);
+emit_16(785);
+emit_16(720);
+emit_16(785);
+emit_16(721);
+emit_16(786);
+emit_16(722);
+emit_16(786);
+emit_16(721);
+emit_16(786);
+emit_16(722);
+emit_16(787);
+emit_16(723);
+emit_16(787);
+emit_16(722);
+emit_16(787);
+emit_16(723);
+emit_16(788);
+emit_16(724);
+emit_16(788);
+emit_16(723);
+emit_16(788);
+emit_16(724);
+emit_16(789);
+emit_16(725);
+emit_16(789);
+emit_16(724);
+emit_16(789);
+emit_16(725);
+emit_16(790);
+emit_16(726);
+emit_16(790);
+emit_16(725);
+emit_16(790);
+emit_16(726);
+emit_16(791);
+emit_16(727);
+emit_16(791);
+emit_16(726);
+emit_16(791);
+emit_16(727);
+emit_16(792);
+emit_16(728);
+emit_16(792);
+emit_16(727);
+emit_16(792);
+emit_16(728);
+emit_16(793);
+emit_16(729);
+emit_16(793);
+emit_16(728);
+emit_16(793);
+emit_16(729);
+emit_16(794);
+emit_16(730);
+emit_16(794);
+emit_16(729);
+emit_16(794);
+emit_16(730);
+emit_16(795);
+emit_16(731);
+emit_16(795);
+emit_16(730);
+emit_16(795);
+emit_16(731);
+emit_16(796);
+emit_16(732);
+emit_16(796);
+emit_16(731);
+emit_16(796);
+emit_16(732);
+emit_16(797);
+emit_16(733);
+emit_16(797);
+emit_16(732);
+emit_16(797);
+emit_16(733);
+emit_16(798);
+emit_16(734);
+emit_16(798);
+emit_16(733);
+emit_16(798);
+emit_16(734);
+emit_16(799);
+emit_16(735);
+emit_16(799);
+emit_16(734);
+emit_16(799);
+emit_16(735);
+emit_16(800);
+emit_16(736);
+emit_16(800);
+emit_16(735);
+emit_16(800);
+emit_16(736);
+emit_16(801);
+emit_16(737);
+emit_16(801);
+emit_16(736);
+emit_16(801);
+emit_16(737);
+emit_16(802);
+emit_16(738);
+emit_16(802);
+emit_16(737);
+emit_16(802);
+emit_16(738);
+emit_16(803);
+emit_16(739);
+emit_16(803);
+emit_16(738);
+emit_16(803);
+emit_16(739);
+emit_16(804);
+emit_16(740);
+emit_16(804);
+emit_16(739);
+emit_16(804);
+emit_16(740);
+emit_16(805);
+emit_16(741);
+emit_16(805);
+emit_16(740);
+emit_16(805);
+emit_16(741);
+emit_16(806);
+emit_16(742);
+emit_16(806);
+emit_16(741);
+emit_16(806);
+emit_16(742);
+emit_16(807);
+emit_16(743);
+emit_16(807);
+emit_16(742);
+emit_16(807);
+emit_16(743);
+emit_16(808);
+emit_16(744);
+emit_16(808);
+emit_16(743);
+emit_16(808);
+emit_16(744);
+emit_16(809);
+emit_16(745);
+emit_16(809);
+emit_16(744);
+emit_16(809);
+emit_16(745);
+emit_16(810);
+emit_16(746);
+emit_16(810);
+emit_16(745);
+emit_16(810);
+emit_16(746);
+emit_16(811);
+emit_16(747);
+emit_16(811);
+emit_16(746);
+emit_16(811);
+emit_16(747);
+emit_16(812);
+emit_16(748);
+emit_16(812);
+emit_16(747);
+emit_16(812);
+emit_16(748);
+emit_16(813);
+emit_16(749);
+emit_16(813);
+emit_16(748);
+emit_16(813);
+emit_16(749);
+emit_16(814);
+emit_16(750);
+emit_16(814);
+emit_16(749);
+emit_16(814);
+emit_16(750);
+emit_16(815);
+emit_16(751);
+emit_16(815);
+emit_16(750);
+emit_16(815);
+emit_16(751);
+emit_16(816);
+emit_16(752);
+emit_16(816);
+emit_16(751);
+emit_16(816);
+emit_16(752);
+emit_16(817);
+emit_16(753);
+emit_16(817);
+emit_16(752);
+emit_16(817);
+emit_16(753);
+emit_16(818);
+emit_16(754);
+emit_16(818);
+emit_16(753);
+emit_16(818);
+emit_16(754);
+emit_16(819);
+emit_16(755);
+emit_16(819);
+emit_16(754);
+emit_16(819);
+emit_16(755);
+emit_16(820);
+emit_16(756);
+emit_16(820);
+emit_16(755);
+emit_16(820);
+emit_16(756);
+emit_16(821);
+emit_16(757);
+emit_16(821);
+emit_16(756);
+emit_16(821);
+emit_16(757);
+emit_16(822);
+emit_16(758);
+emit_16(822);
+emit_16(757);
+emit_16(822);
+emit_16(758);
+emit_16(823);
+emit_16(759);
+emit_16(823);
+emit_16(758);
+emit_16(823);
+emit_16(759);
+emit_16(824);
+emit_16(760);
+emit_16(824);
+emit_16(759);
+emit_16(824);
+emit_16(760);
+emit_16(825);
+emit_16(761);
+emit_16(825);
+emit_16(760);
+emit_16(825);
+emit_16(761);
+emit_16(826);
+emit_16(762);
+emit_16(826);
+emit_16(761);
+emit_16(826);
+emit_16(762);
+emit_16(827);
+emit_16(763);
+emit_16(827);
+emit_16(762);
+emit_16(827);
+emit_16(763);
+emit_16(828);
+emit_16(764);
+emit_16(828);
+emit_16(763);
+emit_16(828);
+emit_16(764);
+emit_16(829);
+emit_16(765);
+emit_16(829);
+emit_16(764);
+emit_16(829);
+emit_16(765);
+emit_16(830);
+emit_16(766);
+emit_16(830);
+emit_16(765);
+emit_16(830);
+emit_16(766);
+emit_16(831);
+emit_16(767);
+emit_16(831);
+emit_16(766);
+emit_16(832);
+emit_16(768);
+emit_16(833);
+emit_16(769);
+emit_16(833);
+emit_16(768);
+emit_16(833);
+emit_16(769);
+emit_16(834);
+emit_16(770);
+emit_16(834);
+emit_16(769);
+emit_16(834);
+emit_16(770);
+emit_16(835);
+emit_16(771);
+emit_16(835);
+emit_16(770);
+emit_16(835);
+emit_16(771);
+emit_16(836);
+emit_16(772);
+emit_16(836);
+emit_16(771);
+emit_16(836);
+emit_16(772);
+emit_16(837);
+emit_16(773);
+emit_16(837);
+emit_16(772);
+emit_16(837);
+emit_16(773);
+emit_16(838);
+emit_16(774);
+emit_16(838);
+emit_16(773);
+emit_16(838);
+emit_16(774);
+emit_16(839);
+emit_16(775);
+emit_16(839);
+emit_16(774);
+emit_16(839);
+emit_16(775);
+emit_16(840);
+emit_16(776);
+emit_16(840);
+emit_16(775);
+emit_16(840);
+emit_16(776);
+emit_16(841);
+emit_16(777);
+emit_16(841);
+emit_16(776);
+emit_16(841);
+emit_16(777);
+emit_16(842);
+emit_16(778);
+emit_16(842);
+emit_16(777);
+emit_16(842);
+emit_16(778);
+emit_16(843);
+emit_16(779);
+emit_16(843);
+emit_16(778);
+emit_16(843);
+emit_16(779);
+emit_16(844);
+emit_16(780);
+emit_16(844);
+emit_16(779);
+emit_16(844);
+emit_16(780);
+emit_16(845);
+emit_16(781);
+emit_16(845);
+emit_16(780);
+emit_16(845);
+emit_16(781);
+emit_16(846);
+emit_16(782);
+emit_16(846);
+emit_16(781);
+emit_16(846);
+emit_16(782);
+emit_16(847);
+emit_16(783);
+emit_16(847);
+emit_16(782);
+emit_16(847);
+emit_16(783);
+emit_16(848);
+emit_16(784);
+emit_16(848);
+emit_16(783);
+emit_16(848);
+emit_16(784);
+emit_16(849);
+emit_16(785);
+emit_16(849);
+emit_16(784);
+emit_16(849);
+emit_16(785);
+emit_16(850);
+emit_16(786);
+emit_16(850);
+emit_16(785);
+emit_16(850);
+emit_16(786);
+emit_16(851);
+emit_16(787);
+emit_16(851);
+emit_16(786);
+emit_16(851);
+emit_16(787);
+emit_16(852);
+emit_16(788);
+emit_16(852);
+emit_16(787);
+emit_16(852);
+emit_16(788);
+emit_16(853);
+emit_16(789);
+emit_16(853);
+emit_16(788);
+emit_16(853);
+emit_16(789);
+emit_16(854);
+emit_16(790);
+emit_16(854);
+emit_16(789);
+emit_16(854);
+emit_16(790);
+emit_16(855);
+emit_16(791);
+emit_16(855);
+emit_16(790);
+emit_16(855);
+emit_16(791);
+emit_16(856);
+emit_16(792);
+emit_16(856);
+emit_16(791);
+emit_16(856);
+emit_16(792);
+emit_16(857);
+emit_16(793);
+emit_16(857);
+emit_16(792);
+emit_16(857);
+emit_16(793);
+emit_16(858);
+emit_16(794);
+emit_16(858);
+emit_16(793);
+emit_16(858);
+emit_16(794);
+emit_16(859);
+emit_16(795);
+emit_16(859);
+emit_16(794);
+emit_16(859);
+emit_16(795);
+emit_16(860);
+emit_16(796);
+emit_16(860);
+emit_16(795);
+emit_16(860);
+emit_16(796);
+emit_16(861);
+emit_16(797);
+emit_16(861);
+emit_16(796);
+emit_16(861);
+emit_16(797);
+emit_16(862);
+emit_16(798);
+emit_16(862);
+emit_16(797);
+emit_16(862);
+emit_16(798);
+emit_16(863);
+emit_16(799);
+emit_16(863);
+emit_16(798);
+emit_16(863);
+emit_16(799);
+emit_16(864);
+emit_16(800);
+emit_16(864);
+emit_16(799);
+emit_16(864);
+emit_16(800);
+emit_16(865);
+emit_16(801);
+emit_16(865);
+emit_16(800);
+emit_16(865);
+emit_16(801);
+emit_16(866);
+emit_16(802);
+emit_16(866);
+emit_16(801);
+emit_16(866);
+emit_16(802);
+emit_16(867);
+emit_16(803);
+emit_16(867);
+emit_16(802);
+emit_16(867);
+emit_16(803);
+emit_16(868);
+emit_16(804);
+emit_16(868);
+emit_16(803);
+emit_16(868);
+emit_16(804);
+emit_16(869);
+emit_16(805);
+emit_16(869);
+emit_16(804);
+emit_16(869);
+emit_16(805);
+emit_16(870);
+emit_16(806);
+emit_16(870);
+emit_16(805);
+emit_16(870);
+emit_16(806);
+emit_16(871);
+emit_16(807);
+emit_16(871);
+emit_16(806);
+emit_16(871);
+emit_16(807);
+emit_16(872);
+emit_16(808);
+emit_16(872);
+emit_16(807);
+emit_16(872);
+emit_16(808);
+emit_16(873);
+emit_16(809);
+emit_16(873);
+emit_16(808);
+emit_16(873);
+emit_16(809);
+emit_16(874);
+emit_16(810);
+emit_16(874);
+emit_16(809);
+emit_16(874);
+emit_16(810);
+emit_16(875);
+emit_16(811);
+emit_16(875);
+emit_16(810);
+emit_16(875);
+emit_16(811);
+emit_16(876);
+emit_16(812);
+emit_16(876);
+emit_16(811);
+emit_16(876);
+emit_16(812);
+emit_16(877);
+emit_16(813);
+emit_16(877);
+emit_16(812);
+emit_16(877);
+emit_16(813);
+emit_16(878);
+emit_16(814);
+emit_16(878);
+emit_16(813);
+emit_16(878);
+emit_16(814);
+emit_16(879);
+emit_16(815);
+emit_16(879);
+emit_16(814);
+emit_16(879);
+emit_16(815);
+emit_16(880);
+emit_16(816);
+emit_16(880);
+emit_16(815);
+emit_16(880);
+emit_16(816);
+emit_16(881);
+emit_16(817);
+emit_16(881);
+emit_16(816);
+emit_16(881);
+emit_16(817);
+emit_16(882);
+emit_16(818);
+emit_16(882);
+emit_16(817);
+emit_16(882);
+emit_16(818);
+emit_16(883);
+emit_16(819);
+emit_16(883);
+emit_16(818);
+emit_16(883);
+emit_16(819);
+emit_16(884);
+emit_16(820);
+emit_16(884);
+emit_16(819);
+emit_16(884);
+emit_16(820);
+emit_16(885);
+emit_16(821);
+emit_16(885);
+emit_16(820);
+emit_16(885);
+emit_16(821);
+emit_16(886);
+emit_16(822);
+emit_16(886);
+emit_16(821);
+emit_16(886);
+emit_16(822);
+emit_16(887);
+emit_16(823);
+emit_16(887);
+emit_16(822);
+emit_16(887);
+emit_16(823);
+emit_16(888);
+emit_16(824);
+emit_16(888);
+emit_16(823);
+emit_16(888);
+emit_16(824);
+emit_16(889);
+emit_16(825);
+emit_16(889);
+emit_16(824);
+emit_16(889);
+emit_16(825);
+emit_16(890);
+emit_16(826);
+emit_16(890);
+emit_16(825);
+emit_16(890);
+emit_16(826);
+emit_16(891);
+emit_16(827);
+emit_16(891);
+emit_16(826);
+emit_16(891);
+emit_16(827);
+emit_16(892);
+emit_16(828);
+emit_16(892);
+emit_16(827);
+emit_16(892);
+emit_16(828);
+emit_16(893);
+emit_16(829);
+emit_16(893);
+emit_16(828);
+emit_16(893);
+emit_16(829);
+emit_16(894);
+emit_16(830);
+emit_16(894);
+emit_16(829);
+emit_16(894);
+emit_16(830);
+emit_16(895);
+emit_16(831);
+emit_16(895);
+emit_16(830);
+emit_16(896);
+emit_16(832);
+emit_16(897);
+emit_16(833);
+emit_16(897);
+emit_16(832);
+emit_16(897);
+emit_16(833);
+emit_16(898);
+emit_16(834);
+emit_16(898);
+emit_16(833);
+emit_16(898);
+emit_16(834);
+emit_16(899);
+emit_16(835);
+emit_16(899);
+emit_16(834);
+emit_16(899);
+emit_16(835);
+emit_16(900);
+emit_16(836);
+emit_16(900);
+emit_16(835);
+emit_16(900);
+emit_16(836);
+emit_16(901);
+emit_16(837);
+emit_16(901);
+emit_16(836);
+emit_16(901);
+emit_16(837);
+emit_16(902);
+emit_16(838);
+emit_16(902);
+emit_16(837);
+emit_16(902);
+emit_16(838);
+emit_16(903);
+emit_16(839);
+emit_16(903);
+emit_16(838);
+emit_16(903);
+emit_16(839);
+emit_16(904);
+emit_16(840);
+emit_16(904);
+emit_16(839);
+emit_16(904);
+emit_16(840);
+emit_16(905);
+emit_16(841);
+emit_16(905);
+emit_16(840);
+emit_16(905);
+emit_16(841);
+emit_16(906);
+emit_16(842);
+emit_16(906);
+emit_16(841);
+emit_16(906);
+emit_16(842);
+emit_16(907);
+emit_16(843);
+emit_16(907);
+emit_16(842);
+emit_16(907);
+emit_16(843);
+emit_16(908);
+emit_16(844);
+emit_16(908);
+emit_16(843);
+emit_16(908);
+emit_16(844);
+emit_16(909);
+emit_16(845);
+emit_16(909);
+emit_16(844);
+emit_16(909);
+emit_16(845);
+emit_16(910);
+emit_16(846);
+emit_16(910);
+emit_16(845);
+emit_16(910);
+emit_16(846);
+emit_16(911);
+emit_16(847);
+emit_16(911);
+emit_16(846);
+emit_16(911);
+emit_16(847);
+emit_16(912);
+emit_16(848);
+emit_16(912);
+emit_16(847);
+emit_16(912);
+emit_16(848);
+emit_16(913);
+emit_16(849);
+emit_16(913);
+emit_16(848);
+emit_16(913);
+emit_16(849);
+emit_16(914);
+emit_16(850);
+emit_16(914);
+emit_16(849);
+emit_16(914);
+emit_16(850);
+emit_16(915);
+emit_16(851);
+emit_16(915);
+emit_16(850);
+emit_16(915);
+emit_16(851);
+emit_16(916);
+emit_16(852);
+emit_16(916);
+emit_16(851);
+emit_16(916);
+emit_16(852);
+emit_16(917);
+emit_16(853);
+emit_16(917);
+emit_16(852);
+emit_16(917);
+emit_16(853);
+emit_16(918);
+emit_16(854);
+emit_16(918);
+emit_16(853);
+emit_16(918);
+emit_16(854);
+emit_16(919);
+emit_16(855);
+emit_16(919);
+emit_16(854);
+emit_16(919);
+emit_16(855);
+emit_16(920);
+emit_16(856);
+emit_16(920);
+emit_16(855);
+emit_16(920);
+emit_16(856);
+emit_16(921);
+emit_16(857);
+emit_16(921);
+emit_16(856);
+emit_16(921);
+emit_16(857);
+emit_16(922);
+emit_16(858);
+emit_16(922);
+emit_16(857);
+emit_16(922);
+emit_16(858);
+emit_16(923);
+emit_16(859);
+emit_16(923);
+emit_16(858);
+emit_16(923);
+emit_16(859);
+emit_16(924);
+emit_16(860);
+emit_16(924);
+emit_16(859);
+emit_16(924);
+emit_16(860);
+emit_16(925);
+emit_16(861);
+emit_16(925);
+emit_16(860);
+emit_16(925);
+emit_16(861);
+emit_16(926);
+emit_16(862);
+emit_16(926);
+emit_16(861);
+emit_16(926);
+emit_16(862);
+emit_16(927);
+emit_16(863);
+emit_16(927);
+emit_16(862);
+emit_16(927);
+emit_16(863);
+emit_16(928);
+emit_16(864);
+emit_16(928);
+emit_16(863);
+emit_16(928);
+emit_16(864);
+emit_16(929);
+emit_16(865);
+emit_16(929);
+emit_16(864);
+emit_16(929);
+emit_16(865);
+emit_16(930);
+emit_16(866);
+emit_16(930);
+emit_16(865);
+emit_16(930);
+emit_16(866);
+emit_16(931);
+emit_16(867);
+emit_16(931);
+emit_16(866);
+emit_16(931);
+emit_16(867);
+emit_16(932);
+emit_16(868);
+emit_16(932);
+emit_16(867);
+emit_16(932);
+emit_16(868);
+emit_16(933);
+emit_16(869);
+emit_16(933);
+emit_16(868);
+emit_16(933);
+emit_16(869);
+emit_16(934);
+emit_16(870);
+emit_16(934);
+emit_16(869);
+emit_16(934);
+emit_16(870);
+emit_16(935);
+emit_16(871);
+emit_16(935);
+emit_16(870);
+emit_16(935);
+emit_16(871);
+emit_16(936);
+emit_16(872);
+emit_16(936);
+emit_16(871);
+emit_16(936);
+emit_16(872);
+emit_16(937);
+emit_16(873);
+emit_16(937);
+emit_16(872);
+emit_16(937);
+emit_16(873);
+emit_16(938);
+emit_16(874);
+emit_16(938);
+emit_16(873);
+emit_16(938);
+emit_16(874);
+emit_16(939);
+emit_16(875);
+emit_16(939);
+emit_16(874);
+emit_16(939);
+emit_16(875);
+emit_16(940);
+emit_16(876);
+emit_16(940);
+emit_16(875);
+emit_16(940);
+emit_16(876);
+emit_16(941);
+emit_16(877);
+emit_16(941);
+emit_16(876);
+emit_16(941);
+emit_16(877);
+emit_16(942);
+emit_16(878);
+emit_16(942);
+emit_16(877);
+emit_16(942);
+emit_16(878);
+emit_16(943);
+emit_16(879);
+emit_16(943);
+emit_16(878);
+emit_16(943);
+emit_16(879);
+emit_16(944);
+emit_16(880);
+emit_16(944);
+emit_16(879);
+emit_16(944);
+emit_16(880);
+emit_16(945);
+emit_16(881);
+emit_16(945);
+emit_16(880);
+emit_16(945);
+emit_16(881);
+emit_16(946);
+emit_16(882);
+emit_16(946);
+emit_16(881);
+emit_16(946);
+emit_16(882);
+emit_16(947);
+emit_16(883);
+emit_16(947);
+emit_16(882);
+emit_16(947);
+emit_16(883);
+emit_16(948);
+emit_16(884);
+emit_16(948);
+emit_16(883);
+emit_16(948);
+emit_16(884);
+emit_16(949);
+emit_16(885);
+emit_16(949);
+emit_16(884);
+emit_16(949);
+emit_16(885);
+emit_16(950);
+emit_16(886);
+emit_16(950);
+emit_16(885);
+emit_16(950);
+emit_16(886);
+emit_16(951);
+emit_16(887);
+emit_16(951);
+emit_16(886);
+emit_16(951);
+emit_16(887);
+emit_16(952);
+emit_16(888);
+emit_16(952);
+emit_16(887);
+emit_16(952);
+emit_16(888);
+emit_16(953);
+emit_16(889);
+emit_16(953);
+emit_16(888);
+emit_16(953);
+emit_16(889);
+emit_16(954);
+emit_16(890);
+emit_16(954);
+emit_16(889);
+emit_16(954);
+emit_16(890);
+emit_16(955);
+emit_16(891);
+emit_16(955);
+emit_16(890);
+emit_16(955);
+emit_16(891);
+emit_16(956);
+emit_16(892);
+emit_16(956);
+emit_16(891);
+emit_16(956);
+emit_16(892);
+emit_16(957);
+emit_16(893);
+emit_16(957);
+emit_16(892);
+emit_16(957);
+emit_16(893);
+emit_16(958);
+emit_16(894);
+emit_16(958);
+emit_16(893);
+emit_16(958);
+emit_16(894);
+emit_16(959);
+emit_16(895);
+emit_16(959);
+emit_16(894);
+emit_16(960);
+emit_16(896);
+emit_16(961);
+emit_16(897);
+emit_16(961);
+emit_16(896);
+emit_16(961);
+emit_16(897);
+emit_16(962);
+emit_16(898);
+emit_16(962);
+emit_16(897);
+emit_16(962);
+emit_16(898);
+emit_16(963);
+emit_16(899);
+emit_16(963);
+emit_16(898);
+emit_16(963);
+emit_16(899);
+emit_16(964);
+emit_16(900);
+emit_16(964);
+emit_16(899);
+emit_16(964);
+emit_16(900);
+emit_16(965);
+emit_16(901);
+emit_16(965);
+emit_16(900);
+emit_16(965);
+emit_16(901);
+emit_16(966);
+emit_16(902);
+emit_16(966);
+emit_16(901);
+emit_16(966);
+emit_16(902);
+emit_16(967);
+emit_16(903);
+emit_16(967);
+emit_16(902);
+emit_16(967);
+emit_16(903);
+emit_16(968);
+emit_16(904);
+emit_16(968);
+emit_16(903);
+emit_16(968);
+emit_16(904);
+emit_16(969);
+emit_16(905);
+emit_16(969);
+emit_16(904);
+emit_16(969);
+emit_16(905);
+emit_16(970);
+emit_16(906);
+emit_16(970);
+emit_16(905);
+emit_16(970);
+emit_16(906);
+emit_16(971);
+emit_16(907);
+emit_16(971);
+emit_16(906);
+emit_16(971);
+emit_16(907);
+emit_16(972);
+emit_16(908);
+emit_16(972);
+emit_16(907);
+emit_16(972);
+emit_16(908);
+emit_16(973);
+emit_16(909);
+emit_16(973);
+emit_16(908);
+emit_16(973);
+emit_16(909);
+emit_16(974);
+emit_16(910);
+emit_16(974);
+emit_16(909);
+emit_16(974);
+emit_16(910);
+emit_16(975);
+emit_16(911);
+emit_16(975);
+emit_16(910);
+emit_16(975);
+emit_16(911);
+emit_16(976);
+emit_16(912);
+emit_16(976);
+emit_16(911);
+emit_16(976);
+emit_16(912);
+emit_16(977);
+emit_16(913);
+emit_16(977);
+emit_16(912);
+emit_16(977);
+emit_16(913);
+emit_16(978);
+emit_16(914);
+emit_16(978);
+emit_16(913);
+emit_16(978);
+emit_16(914);
+emit_16(979);
+emit_16(915);
+emit_16(979);
+emit_16(914);
+emit_16(979);
+emit_16(915);
+emit_16(980);
+emit_16(916);
+emit_16(980);
+emit_16(915);
+emit_16(980);
+emit_16(916);
+emit_16(981);
+emit_16(917);
+emit_16(981);
+emit_16(916);
+emit_16(981);
+emit_16(917);
+emit_16(982);
+emit_16(918);
+emit_16(982);
+emit_16(917);
+emit_16(982);
+emit_16(918);
+emit_16(983);
+emit_16(919);
+emit_16(983);
+emit_16(918);
+emit_16(983);
+emit_16(919);
+emit_16(984);
+emit_16(920);
+emit_16(984);
+emit_16(919);
+emit_16(984);
+emit_16(920);
+emit_16(985);
+emit_16(921);
+emit_16(985);
+emit_16(920);
+emit_16(985);
+emit_16(921);
+emit_16(986);
+emit_16(922);
+emit_16(986);
+emit_16(921);
+emit_16(986);
+emit_16(922);
+emit_16(987);
+emit_16(923);
+emit_16(987);
+emit_16(922);
+emit_16(987);
+emit_16(923);
+emit_16(988);
+emit_16(924);
+emit_16(988);
+emit_16(923);
+emit_16(988);
+emit_16(924);
+emit_16(989);
+emit_16(925);
+emit_16(989);
+emit_16(924);
+emit_16(989);
+emit_16(925);
+emit_16(990);
+emit_16(926);
+emit_16(990);
+emit_16(925);
+emit_16(990);
+emit_16(926);
+emit_16(991);
+emit_16(927);
+emit_16(991);
+emit_16(926);
+emit_16(991);
+emit_16(927);
+emit_16(992);
+emit_16(928);
+emit_16(992);
+emit_16(927);
+emit_16(992);
+emit_16(928);
+emit_16(993);
+emit_16(929);
+emit_16(993);
+emit_16(928);
+emit_16(993);
+emit_16(929);
+emit_16(994);
+emit_16(930);
+emit_16(994);
+emit_16(929);
+emit_16(994);
+emit_16(930);
+emit_16(995);
+emit_16(931);
+emit_16(995);
+emit_16(930);
+emit_16(995);
+emit_16(931);
+emit_16(996);
+emit_16(932);
+emit_16(996);
+emit_16(931);
+emit_16(996);
+emit_16(932);
+emit_16(997);
+emit_16(933);
+emit_16(997);
+emit_16(932);
+emit_16(997);
+emit_16(933);
+emit_16(998);
+emit_16(934);
+emit_16(998);
+emit_16(933);
+emit_16(998);
+emit_16(934);
+emit_16(999);
+emit_16(935);
+emit_16(999);
+emit_16(934);
+emit_16(999);
+emit_16(935);
+emit_16(1000);
+emit_16(936);
+emit_16(1000);
+emit_16(935);
+emit_16(1000);
+emit_16(936);
+emit_16(1001);
+emit_16(937);
+emit_16(1001);
+emit_16(936);
+emit_16(1001);
+emit_16(937);
+emit_16(1002);
+emit_16(938);
+emit_16(1002);
+emit_16(937);
+emit_16(1002);
+emit_16(938);
+emit_16(1003);
+emit_16(939);
+emit_16(1003);
+emit_16(938);
+emit_16(1003);
+emit_16(939);
+emit_16(1004);
+emit_16(940);
+emit_16(1004);
+emit_16(939);
+emit_16(1004);
+emit_16(940);
+emit_16(1005);
+emit_16(941);
+emit_16(1005);
+emit_16(940);
+emit_16(1005);
+emit_16(941);
+emit_16(1006);
+emit_16(942);
+emit_16(1006);
+emit_16(941);
+emit_16(1006);
+emit_16(942);
+emit_16(1007);
+emit_16(943);
+emit_16(1007);
+emit_16(942);
+emit_16(1007);
+emit_16(943);
+emit_16(1008);
+emit_16(944);
+emit_16(1008);
+emit_16(943);
+emit_16(1008);
+emit_16(944);
+emit_16(1009);
+emit_16(945);
+emit_16(1009);
+emit_16(944);
+emit_16(1009);
+emit_16(945);
+emit_16(1010);
+emit_16(946);
+emit_16(1010);
+emit_16(945);
+emit_16(1010);
+emit_16(946);
+emit_16(1011);
+emit_16(947);
+emit_16(1011);
+emit_16(946);
+emit_16(1011);
+emit_16(947);
+emit_16(1012);
+emit_16(948);
+emit_16(1012);
+emit_16(947);
+emit_16(1012);
+emit_16(948);
+emit_16(1013);
+emit_16(949);
+emit_16(1013);
+emit_16(948);
+emit_16(1013);
+emit_16(949);
+emit_16(1014);
+emit_16(950);
+emit_16(1014);
+emit_16(949);
+emit_16(1014);
+emit_16(950);
+emit_16(1015);
+emit_16(951);
+emit_16(1015);
+emit_16(950);
+emit_16(1015);
+emit_16(951);
+emit_16(1016);
+emit_16(952);
+emit_16(1016);
+emit_16(951);
+emit_16(1016);
+emit_16(952);
+emit_16(1017);
+emit_16(953);
+emit_16(1017);
+emit_16(952);
+emit_16(1017);
+emit_16(953);
+emit_16(1018);
+emit_16(954);
+emit_16(1018);
+emit_16(953);
+emit_16(1018);
+emit_16(954);
+emit_16(1019);
+emit_16(955);
+emit_16(1019);
+emit_16(954);
+emit_16(1019);
+emit_16(955);
+emit_16(1020);
+emit_16(956);
+emit_16(1020);
+emit_16(955);
+emit_16(1020);
+emit_16(956);
+emit_16(1021);
+emit_16(957);
+emit_16(1021);
+emit_16(956);
+emit_16(1021);
+emit_16(957);
+emit_16(1022);
+emit_16(958);
+emit_16(1022);
+emit_16(957);
+emit_16(1022);
+emit_16(958);
+emit_16(1023);
+emit_16(959);
+emit_16(1023);
+emit_16(958);
+emit_16(1024);
+emit_16(960);
+emit_16(1025);
+emit_16(961);
+emit_16(1025);
+emit_16(960);
+emit_16(1025);
+emit_16(961);
+emit_16(1026);
+emit_16(962);
+emit_16(1026);
+emit_16(961);
+emit_16(1026);
+emit_16(962);
+emit_16(1027);
+emit_16(963);
+emit_16(1027);
+emit_16(962);
+emit_16(1027);
+emit_16(963);
+emit_16(1028);
+emit_16(964);
+emit_16(1028);
+emit_16(963);
+emit_16(1028);
+emit_16(964);
+emit_16(1029);
+emit_16(965);
+emit_16(1029);
+emit_16(964);
+emit_16(1029);
+emit_16(965);
+emit_16(1030);
+emit_16(966);
+emit_16(1030);
+emit_16(965);
+emit_16(1030);
+emit_16(966);
+emit_16(1031);
+emit_16(967);
+emit_16(1031);
+emit_16(966);
+emit_16(1031);
+emit_16(967);
+emit_16(1032);
+emit_16(968);
+emit_16(1032);
+emit_16(967);
+emit_16(1032);
+emit_16(968);
+emit_16(1033);
+emit_16(969);
+emit_16(1033);
+emit_16(968);
+emit_16(1033);
+emit_16(969);
+emit_16(1034);
+emit_16(970);
+emit_16(1034);
+emit_16(969);
+emit_16(1034);
+emit_16(970);
+emit_16(1035);
+emit_16(971);
+emit_16(1035);
+emit_16(970);
+emit_16(1035);
+emit_16(971);
+emit_16(1036);
+emit_16(972);
+emit_16(1036);
+emit_16(971);
+emit_16(1036);
+emit_16(972);
+emit_16(1037);
+emit_16(973);
+emit_16(1037);
+emit_16(972);
+emit_16(1037);
+emit_16(973);
+emit_16(1038);
+emit_16(974);
+emit_16(1038);
+emit_16(973);
+emit_16(1038);
+emit_16(974);
+emit_16(1039);
+emit_16(975);
+emit_16(1039);
+emit_16(974);
+emit_16(1039);
+emit_16(975);
+emit_16(1040);
+emit_16(976);
+emit_16(1040);
+emit_16(975);
+emit_16(1040);
+emit_16(976);
+emit_16(1041);
+emit_16(977);
+emit_16(1041);
+emit_16(976);
+emit_16(1041);
+emit_16(977);
+emit_16(1042);
+emit_16(978);
+emit_16(1042);
+emit_16(977);
+emit_16(1042);
+emit_16(978);
+emit_16(1043);
+emit_16(979);
+emit_16(1043);
+emit_16(978);
+emit_16(1043);
+emit_16(979);
+emit_16(1044);
+emit_16(980);
+emit_16(1044);
+emit_16(979);
+emit_16(1044);
+emit_16(980);
+emit_16(1045);
+emit_16(981);
+emit_16(1045);
+emit_16(980);
+emit_16(1045);
+emit_16(981);
+emit_16(1046);
+emit_16(982);
+emit_16(1046);
+emit_16(981);
+emit_16(1046);
+emit_16(982);
+emit_16(1047);
+emit_16(983);
+emit_16(1047);
+emit_16(982);
+emit_16(1047);
+emit_16(983);
+emit_16(1048);
+emit_16(984);
+emit_16(1048);
+emit_16(983);
+emit_16(1048);
+emit_16(984);
+emit_16(1049);
+emit_16(985);
+emit_16(1049);
+emit_16(984);
+emit_16(1049);
+emit_16(985);
+emit_16(1050);
+emit_16(986);
+emit_16(1050);
+emit_16(985);
+emit_16(1050);
+emit_16(986);
+emit_16(1051);
+emit_16(987);
+emit_16(1051);
+emit_16(986);
+emit_16(1051);
+emit_16(987);
+emit_16(1052);
+emit_16(988);
+emit_16(1052);
+emit_16(987);
+emit_16(1052);
+emit_16(988);
+emit_16(1053);
+emit_16(989);
+emit_16(1053);
+emit_16(988);
+emit_16(1053);
+emit_16(989);
+emit_16(1054);
+emit_16(990);
+emit_16(1054);
+emit_16(989);
+emit_16(1054);
+emit_16(990);
+emit_16(1055);
+emit_16(991);
+emit_16(1055);
+emit_16(990);
+emit_16(1055);
+emit_16(991);
+emit_16(1056);
+emit_16(992);
+emit_16(1056);
+emit_16(991);
+emit_16(1056);
+emit_16(992);
+emit_16(1057);
+emit_16(993);
+emit_16(1057);
+emit_16(992);
+emit_16(1057);
+emit_16(993);
+emit_16(1058);
+emit_16(994);
+emit_16(1058);
+emit_16(993);
+emit_16(1058);
+emit_16(994);
+emit_16(1059);
+emit_16(995);
+emit_16(1059);
+emit_16(994);
+emit_16(1059);
+emit_16(995);
+emit_16(1060);
+emit_16(996);
+emit_16(1060);
+emit_16(995);
+emit_16(1060);
+emit_16(996);
+emit_16(1061);
+emit_16(997);
+emit_16(1061);
+emit_16(996);
+emit_16(1061);
+emit_16(997);
+emit_16(1062);
+emit_16(998);
+emit_16(1062);
+emit_16(997);
+emit_16(1062);
+emit_16(998);
+emit_16(1063);
+emit_16(999);
+emit_16(1063);
+emit_16(998);
+emit_16(1063);
+emit_16(999);
+emit_16(1064);
+emit_16(1000);
+emit_16(1064);
+emit_16(999);
+emit_16(1064);
+emit_16(1000);
+emit_16(1065);
+emit_16(1001);
+emit_16(1065);
+emit_16(1000);
+emit_16(1065);
+emit_16(1001);
+emit_16(1066);
+emit_16(1002);
+emit_16(1066);
+emit_16(1001);
+emit_16(1066);
+emit_16(1002);
+emit_16(1067);
+emit_16(1003);
+emit_16(1067);
+emit_16(1002);
+emit_16(1067);
+emit_16(1003);
+emit_16(1068);
+emit_16(1004);
+emit_16(1068);
+emit_16(1003);
+emit_16(1068);
+emit_16(1004);
+emit_16(1069);
+emit_16(1005);
+emit_16(1069);
+emit_16(1004);
+emit_16(1069);
+emit_16(1005);
+emit_16(1070);
+emit_16(1006);
+emit_16(1070);
+emit_16(1005);
+emit_16(1070);
+emit_16(1006);
+emit_16(1071);
+emit_16(1007);
+emit_16(1071);
+emit_16(1006);
+emit_16(1071);
+emit_16(1007);
+emit_16(1072);
+emit_16(1008);
+emit_16(1072);
+emit_16(1007);
+emit_16(1072);
+emit_16(1008);
+emit_16(1073);
+emit_16(1009);
+emit_16(1073);
+emit_16(1008);
+emit_16(1073);
+emit_16(1009);
+emit_16(1074);
+emit_16(1010);
+emit_16(1074);
+emit_16(1009);
+emit_16(1074);
+emit_16(1010);
+emit_16(1075);
+emit_16(1011);
+emit_16(1075);
+emit_16(1010);
+emit_16(1075);
+emit_16(1011);
+emit_16(1076);
+emit_16(1012);
+emit_16(1076);
+emit_16(1011);
+emit_16(1076);
+emit_16(1012);
+emit_16(1077);
+emit_16(1013);
+emit_16(1077);
+emit_16(1012);
+emit_16(1077);
+emit_16(1013);
+emit_16(1078);
+emit_16(1014);
+emit_16(1078);
+emit_16(1013);
+emit_16(1078);
+emit_16(1014);
+emit_16(1079);
+emit_16(1015);
+emit_16(1079);
+emit_16(1014);
+emit_16(1079);
+emit_16(1015);
+emit_16(1080);
+emit_16(1016);
+emit_16(1080);
+emit_16(1015);
+emit_16(1080);
+emit_16(1016);
+emit_16(1081);
+emit_16(1017);
+emit_16(1081);
+emit_16(1016);
+emit_16(1081);
+emit_16(1017);
+emit_16(1082);
+emit_16(1018);
+emit_16(1082);
+emit_16(1017);
+emit_16(1082);
+emit_16(1018);
+emit_16(1083);
+emit_16(1019);
+emit_16(1083);
+emit_16(1018);
+emit_16(1083);
+emit_16(1019);
+emit_16(1084);
+emit_16(1020);
+emit_16(1084);
+emit_16(1019);
+emit_16(1084);
+emit_16(1020);
+emit_16(1085);
+emit_16(1021);
+emit_16(1085);
+emit_16(1020);
+emit_16(1085);
+emit_16(1021);
+emit_16(1086);
+emit_16(1022);
+emit_16(1086);
+emit_16(1021);
+emit_16(1086);
+emit_16(1022);
+emit_16(1087);
+emit_16(1023);
+emit_16(1087);
+emit_16(1022);
+emit_16(1088);
+emit_16(1024);
+emit_16(1089);
+emit_16(1025);
+emit_16(1089);
+emit_16(1024);
+emit_16(1089);
+emit_16(1025);
+emit_16(1090);
+emit_16(1026);
+emit_16(1090);
+emit_16(1025);
+emit_16(1090);
+emit_16(1026);
+emit_16(1091);
+emit_16(1027);
+emit_16(1091);
+emit_16(1026);
+emit_16(1091);
+emit_16(1027);
+emit_16(1092);
+emit_16(1028);
+emit_16(1092);
+emit_16(1027);
+emit_16(1092);
+emit_16(1028);
+emit_16(1093);
+emit_16(1029);
+emit_16(1093);
+emit_16(1028);
+emit_16(1093);
+emit_16(1029);
+emit_16(1094);
+emit_16(1030);
+emit_16(1094);
+emit_16(1029);
+emit_16(1094);
+emit_16(1030);
+emit_16(1095);
+emit_16(1031);
+emit_16(1095);
+emit_16(1030);
+emit_16(1095);
+emit_16(1031);
+emit_16(1096);
+emit_16(1032);
+emit_16(1096);
+emit_16(1031);
+emit_16(1096);
+emit_16(1032);
+emit_16(1097);
+emit_16(1033);
+emit_16(1097);
+emit_16(1032);
+emit_16(1097);
+emit_16(1033);
+emit_16(1098);
+emit_16(1034);
+emit_16(1098);
+emit_16(1033);
+emit_16(1098);
+emit_16(1034);
+emit_16(1099);
+emit_16(1035);
+emit_16(1099);
+emit_16(1034);
+emit_16(1099);
+emit_16(1035);
+emit_16(1100);
+emit_16(1036);
+emit_16(1100);
+emit_16(1035);
+emit_16(1100);
+emit_16(1036);
+emit_16(1101);
+emit_16(1037);
+emit_16(1101);
+emit_16(1036);
+emit_16(1101);
+emit_16(1037);
+emit_16(1102);
+emit_16(1038);
+emit_16(1102);
+emit_16(1037);
+emit_16(1102);
+emit_16(1038);
+emit_16(1103);
+emit_16(1039);
+emit_16(1103);
+emit_16(1038);
+emit_16(1103);
+emit_16(1039);
+emit_16(1104);
+emit_16(1040);
+emit_16(1104);
+emit_16(1039);
+emit_16(1104);
+emit_16(1040);
+emit_16(1105);
+emit_16(1041);
+emit_16(1105);
+emit_16(1040);
+emit_16(1105);
+emit_16(1041);
+emit_16(1106);
+emit_16(1042);
+emit_16(1106);
+emit_16(1041);
+emit_16(1106);
+emit_16(1042);
+emit_16(1107);
+emit_16(1043);
+emit_16(1107);
+emit_16(1042);
+emit_16(1107);
+emit_16(1043);
+emit_16(1108);
+emit_16(1044);
+emit_16(1108);
+emit_16(1043);
+emit_16(1108);
+emit_16(1044);
+emit_16(1109);
+emit_16(1045);
+emit_16(1109);
+emit_16(1044);
+emit_16(1109);
+emit_16(1045);
+emit_16(1110);
+emit_16(1046);
+emit_16(1110);
+emit_16(1045);
+emit_16(1110);
+emit_16(1046);
+emit_16(1111);
+emit_16(1047);
+emit_16(1111);
+emit_16(1046);
+emit_16(1111);
+emit_16(1047);
+emit_16(1112);
+emit_16(1048);
+emit_16(1112);
+emit_16(1047);
+emit_16(1112);
+emit_16(1048);
+emit_16(1113);
+emit_16(1049);
+emit_16(1113);
+emit_16(1048);
+emit_16(1113);
+emit_16(1049);
+emit_16(1114);
+emit_16(1050);
+emit_16(1114);
+emit_16(1049);
+emit_16(1114);
+emit_16(1050);
+emit_16(1115);
+emit_16(1051);
+emit_16(1115);
+emit_16(1050);
+emit_16(1115);
+emit_16(1051);
+emit_16(1116);
+emit_16(1052);
+emit_16(1116);
+emit_16(1051);
+emit_16(1116);
+emit_16(1052);
+emit_16(1117);
+emit_16(1053);
+emit_16(1117);
+emit_16(1052);
+emit_16(1117);
+emit_16(1053);
+emit_16(1118);
+emit_16(1054);
+emit_16(1118);
+emit_16(1053);
+emit_16(1118);
+emit_16(1054);
+emit_16(1119);
+emit_16(1055);
+emit_16(1119);
+emit_16(1054);
+emit_16(1119);
+emit_16(1055);
+emit_16(1120);
+emit_16(1056);
+emit_16(1120);
+emit_16(1055);
+emit_16(1120);
+emit_16(1056);
+emit_16(1121);
+emit_16(1057);
+emit_16(1121);
+emit_16(1056);
+emit_16(1121);
+emit_16(1057);
+emit_16(1122);
+emit_16(1058);
+emit_16(1122);
+emit_16(1057);
+emit_16(1122);
+emit_16(1058);
+emit_16(1123);
+emit_16(1059);
+emit_16(1123);
+emit_16(1058);
+emit_16(1123);
+emit_16(1059);
+emit_16(1124);
+emit_16(1060);
+emit_16(1124);
+emit_16(1059);
+emit_16(1124);
+emit_16(1060);
+emit_16(1125);
+emit_16(1061);
+emit_16(1125);
+emit_16(1060);
+emit_16(1125);
+emit_16(1061);
+emit_16(1126);
+emit_16(1062);
+emit_16(1126);
+emit_16(1061);
+emit_16(1126);
+emit_16(1062);
+emit_16(1127);
+emit_16(1063);
+emit_16(1127);
+emit_16(1062);
+emit_16(1127);
+emit_16(1063);
+emit_16(1128);
+emit_16(1064);
+emit_16(1128);
+emit_16(1063);
+emit_16(1128);
+emit_16(1064);
+emit_16(1129);
+emit_16(1065);
+emit_16(1129);
+emit_16(1064);
+emit_16(1129);
+emit_16(1065);
+emit_16(1130);
+emit_16(1066);
+emit_16(1130);
+emit_16(1065);
+emit_16(1130);
+emit_16(1066);
+emit_16(1131);
+emit_16(1067);
+emit_16(1131);
+emit_16(1066);
+emit_16(1131);
+emit_16(1067);
+emit_16(1132);
+emit_16(1068);
+emit_16(1132);
+emit_16(1067);
+emit_16(1132);
+emit_16(1068);
+emit_16(1133);
+emit_16(1069);
+emit_16(1133);
+emit_16(1068);
+emit_16(1133);
+emit_16(1069);
+emit_16(1134);
+emit_16(1070);
+emit_16(1134);
+emit_16(1069);
+emit_16(1134);
+emit_16(1070);
+emit_16(1135);
+emit_16(1071);
+emit_16(1135);
+emit_16(1070);
+emit_16(1135);
+emit_16(1071);
+emit_16(1136);
+emit_16(1072);
+emit_16(1136);
+emit_16(1071);
+emit_16(1136);
+emit_16(1072);
+emit_16(1137);
+emit_16(1073);
+emit_16(1137);
+emit_16(1072);
+emit_16(1137);
+emit_16(1073);
+emit_16(1138);
+emit_16(1074);
+emit_16(1138);
+emit_16(1073);
+emit_16(1138);
+emit_16(1074);
+emit_16(1139);
+emit_16(1075);
+emit_16(1139);
+emit_16(1074);
+emit_16(1139);
+emit_16(1075);
+emit_16(1140);
+emit_16(1076);
+emit_16(1140);
+emit_16(1075);
+emit_16(1140);
+emit_16(1076);
+emit_16(1141);
+emit_16(1077);
+emit_16(1141);
+emit_16(1076);
+emit_16(1141);
+emit_16(1077);
+emit_16(1142);
+emit_16(1078);
+emit_16(1142);
+emit_16(1077);
+emit_16(1142);
+emit_16(1078);
+emit_16(1143);
+emit_16(1079);
+emit_16(1143);
+emit_16(1078);
+emit_16(1143);
+emit_16(1079);
+emit_16(1144);
+emit_16(1080);
+emit_16(1144);
+emit_16(1079);
+emit_16(1144);
+emit_16(1080);
+emit_16(1145);
+emit_16(1081);
+emit_16(1145);
+emit_16(1080);
+emit_16(1145);
+emit_16(1081);
+emit_16(1146);
+emit_16(1082);
+emit_16(1146);
+emit_16(1081);
+emit_16(1146);
+emit_16(1082);
+emit_16(1147);
+emit_16(1083);
+emit_16(1147);
+emit_16(1082);
+emit_16(1147);
+emit_16(1083);
+emit_16(1148);
+emit_16(1084);
+emit_16(1148);
+emit_16(1083);
+emit_16(1148);
+emit_16(1084);
+emit_16(1149);
+emit_16(1085);
+emit_16(1149);
+emit_16(1084);
+emit_16(1149);
+emit_16(1085);
+emit_16(1150);
+emit_16(1086);
+emit_16(1150);
+emit_16(1085);
+emit_16(1150);
+emit_16(1086);
+emit_16(1151);
+emit_16(1087);
+emit_16(1151);
+emit_16(1086);
+emit_16(1152);
+emit_16(1088);
+emit_16(1153);
+emit_16(1089);
+emit_16(1153);
+emit_16(1088);
+emit_16(1153);
+emit_16(1089);
+emit_16(1154);
+emit_16(1090);
+emit_16(1154);
+emit_16(1089);
+emit_16(1154);
+emit_16(1090);
+emit_16(1155);
+emit_16(1091);
+emit_16(1155);
+emit_16(1090);
+emit_16(1155);
+emit_16(1091);
+emit_16(1156);
+emit_16(1092);
+emit_16(1156);
+emit_16(1091);
+emit_16(1156);
+emit_16(1092);
+emit_16(1157);
+emit_16(1093);
+emit_16(1157);
+emit_16(1092);
+emit_16(1157);
+emit_16(1093);
+emit_16(1158);
+emit_16(1094);
+emit_16(1158);
+emit_16(1093);
+emit_16(1158);
+emit_16(1094);
+emit_16(1159);
+emit_16(1095);
+emit_16(1159);
+emit_16(1094);
+emit_16(1159);
+emit_16(1095);
+emit_16(1160);
+emit_16(1096);
+emit_16(1160);
+emit_16(1095);
+emit_16(1160);
+emit_16(1096);
+emit_16(1161);
+emit_16(1097);
+emit_16(1161);
+emit_16(1096);
+emit_16(1161);
+emit_16(1097);
+emit_16(1162);
+emit_16(1098);
+emit_16(1162);
+emit_16(1097);
+emit_16(1162);
+emit_16(1098);
+emit_16(1163);
+emit_16(1099);
+emit_16(1163);
+emit_16(1098);
+emit_16(1163);
+emit_16(1099);
+emit_16(1164);
+emit_16(1100);
+emit_16(1164);
+emit_16(1099);
+emit_16(1164);
+emit_16(1100);
+emit_16(1165);
+emit_16(1101);
+emit_16(1165);
+emit_16(1100);
+emit_16(1165);
+emit_16(1101);
+emit_16(1166);
+emit_16(1102);
+emit_16(1166);
+emit_16(1101);
+emit_16(1166);
+emit_16(1102);
+emit_16(1167);
+emit_16(1103);
+emit_16(1167);
+emit_16(1102);
+emit_16(1167);
+emit_16(1103);
+emit_16(1168);
+emit_16(1104);
+emit_16(1168);
+emit_16(1103);
+emit_16(1168);
+emit_16(1104);
+emit_16(1169);
+emit_16(1105);
+emit_16(1169);
+emit_16(1104);
+emit_16(1169);
+emit_16(1105);
+emit_16(1170);
+emit_16(1106);
+emit_16(1170);
+emit_16(1105);
+emit_16(1170);
+emit_16(1106);
+emit_16(1171);
+emit_16(1107);
+emit_16(1171);
+emit_16(1106);
+emit_16(1171);
+emit_16(1107);
+emit_16(1172);
+emit_16(1108);
+emit_16(1172);
+emit_16(1107);
+emit_16(1172);
+emit_16(1108);
+emit_16(1173);
+emit_16(1109);
+emit_16(1173);
+emit_16(1108);
+emit_16(1173);
+emit_16(1109);
+emit_16(1174);
+emit_16(1110);
+emit_16(1174);
+emit_16(1109);
+emit_16(1174);
+emit_16(1110);
+emit_16(1175);
+emit_16(1111);
+emit_16(1175);
+emit_16(1110);
+emit_16(1175);
+emit_16(1111);
+emit_16(1176);
+emit_16(1112);
+emit_16(1176);
+emit_16(1111);
+emit_16(1176);
+emit_16(1112);
+emit_16(1177);
+emit_16(1113);
+emit_16(1177);
+emit_16(1112);
+emit_16(1177);
+emit_16(1113);
+emit_16(1178);
+emit_16(1114);
+emit_16(1178);
+emit_16(1113);
+emit_16(1178);
+emit_16(1114);
+emit_16(1179);
+emit_16(1115);
+emit_16(1179);
+emit_16(1114);
+emit_16(1179);
+emit_16(1115);
+emit_16(1180);
+emit_16(1116);
+emit_16(1180);
+emit_16(1115);
+emit_16(1180);
+emit_16(1116);
+emit_16(1181);
+emit_16(1117);
+emit_16(1181);
+emit_16(1116);
+emit_16(1181);
+emit_16(1117);
+emit_16(1182);
+emit_16(1118);
+emit_16(1182);
+emit_16(1117);
+emit_16(1182);
+emit_16(1118);
+emit_16(1183);
+emit_16(1119);
+emit_16(1183);
+emit_16(1118);
+emit_16(1183);
+emit_16(1119);
+emit_16(1184);
+emit_16(1120);
+emit_16(1184);
+emit_16(1119);
+emit_16(1184);
+emit_16(1120);
+emit_16(1185);
+emit_16(1121);
+emit_16(1185);
+emit_16(1120);
+emit_16(1185);
+emit_16(1121);
+emit_16(1186);
+emit_16(1122);
+emit_16(1186);
+emit_16(1121);
+emit_16(1186);
+emit_16(1122);
+emit_16(1187);
+emit_16(1123);
+emit_16(1187);
+emit_16(1122);
+emit_16(1187);
+emit_16(1123);
+emit_16(1188);
+emit_16(1124);
+emit_16(1188);
+emit_16(1123);
+emit_16(1188);
+emit_16(1124);
+emit_16(1189);
+emit_16(1125);
+emit_16(1189);
+emit_16(1124);
+emit_16(1189);
+emit_16(1125);
+emit_16(1190);
+emit_16(1126);
+emit_16(1190);
+emit_16(1125);
+emit_16(1190);
+emit_16(1126);
+emit_16(1191);
+emit_16(1127);
+emit_16(1191);
+emit_16(1126);
+emit_16(1191);
+emit_16(1127);
+emit_16(1192);
+emit_16(1128);
+emit_16(1192);
+emit_16(1127);
+emit_16(1192);
+emit_16(1128);
+emit_16(1193);
+emit_16(1129);
+emit_16(1193);
+emit_16(1128);
+emit_16(1193);
+emit_16(1129);
+emit_16(1194);
+emit_16(1130);
+emit_16(1194);
+emit_16(1129);
+emit_16(1194);
+emit_16(1130);
+emit_16(1195);
+emit_16(1131);
+emit_16(1195);
+emit_16(1130);
+emit_16(1195);
+emit_16(1131);
+emit_16(1196);
+emit_16(1132);
+emit_16(1196);
+emit_16(1131);
+emit_16(1196);
+emit_16(1132);
+emit_16(1197);
+emit_16(1133);
+emit_16(1197);
+emit_16(1132);
+emit_16(1197);
+emit_16(1133);
+emit_16(1198);
+emit_16(1134);
+emit_16(1198);
+emit_16(1133);
+emit_16(1198);
+emit_16(1134);
+emit_16(1199);
+emit_16(1135);
+emit_16(1199);
+emit_16(1134);
+emit_16(1199);
+emit_16(1135);
+emit_16(1200);
+emit_16(1136);
+emit_16(1200);
+emit_16(1135);
+emit_16(1200);
+emit_16(1136);
+emit_16(1201);
+emit_16(1137);
+emit_16(1201);
+emit_16(1136);
+emit_16(1201);
+emit_16(1137);
+emit_16(1202);
+emit_16(1138);
+emit_16(1202);
+emit_16(1137);
+emit_16(1202);
+emit_16(1138);
+emit_16(1203);
+emit_16(1139);
+emit_16(1203);
+emit_16(1138);
+emit_16(1203);
+emit_16(1139);
+emit_16(1204);
+emit_16(1140);
+emit_16(1204);
+emit_16(1139);
+emit_16(1204);
+emit_16(1140);
+emit_16(1205);
+emit_16(1141);
+emit_16(1205);
+emit_16(1140);
+emit_16(1205);
+emit_16(1141);
+emit_16(1206);
+emit_16(1142);
+emit_16(1206);
+emit_16(1141);
+emit_16(1206);
+emit_16(1142);
+emit_16(1207);
+emit_16(1143);
+emit_16(1207);
+emit_16(1142);
+emit_16(1207);
+emit_16(1143);
+emit_16(1208);
+emit_16(1144);
+emit_16(1208);
+emit_16(1143);
+emit_16(1208);
+emit_16(1144);
+emit_16(1209);
+emit_16(1145);
+emit_16(1209);
+emit_16(1144);
+emit_16(1209);
+emit_16(1145);
+emit_16(1210);
+emit_16(1146);
+emit_16(1210);
+emit_16(1145);
+emit_16(1210);
+emit_16(1146);
+emit_16(1211);
+emit_16(1147);
+emit_16(1211);
+emit_16(1146);
+emit_16(1211);
+emit_16(1147);
+emit_16(1212);
+emit_16(1148);
+emit_16(1212);
+emit_16(1147);
+emit_16(1212);
+emit_16(1148);
+emit_16(1213);
+emit_16(1149);
+emit_16(1213);
+emit_16(1148);
+emit_16(1213);
+emit_16(1149);
+emit_16(1214);
+emit_16(1150);
+emit_16(1214);
+emit_16(1149);
+emit_16(1214);
+emit_16(1150);
+emit_16(1215);
+emit_16(1151);
+emit_16(1215);
+emit_16(1150);
+emit_16(1216);
+emit_16(1152);
+emit_16(1217);
+emit_16(1153);
+emit_16(1217);
+emit_16(1152);
+emit_16(1217);
+emit_16(1153);
+emit_16(1218);
+emit_16(1154);
+emit_16(1218);
+emit_16(1153);
+emit_16(1218);
+emit_16(1154);
+emit_16(1219);
+emit_16(1155);
+emit_16(1219);
+emit_16(1154);
+emit_16(1219);
+emit_16(1155);
+emit_16(1220);
+emit_16(1156);
+emit_16(1220);
+emit_16(1155);
+emit_16(1220);
+emit_16(1156);
+emit_16(1221);
+emit_16(1157);
+emit_16(1221);
+emit_16(1156);
+emit_16(1221);
+emit_16(1157);
+emit_16(1222);
+emit_16(1158);
+emit_16(1222);
+emit_16(1157);
+emit_16(1222);
+emit_16(1158);
+emit_16(1223);
+emit_16(1159);
+emit_16(1223);
+emit_16(1158);
+emit_16(1223);
+emit_16(1159);
+emit_16(1224);
+emit_16(1160);
+emit_16(1224);
+emit_16(1159);
+emit_16(1224);
+emit_16(1160);
+emit_16(1225);
+emit_16(1161);
+emit_16(1225);
+emit_16(1160);
+emit_16(1225);
+emit_16(1161);
+emit_16(1226);
+emit_16(1162);
+emit_16(1226);
+emit_16(1161);
+emit_16(1226);
+emit_16(1162);
+emit_16(1227);
+emit_16(1163);
+emit_16(1227);
+emit_16(1162);
+emit_16(1227);
+emit_16(1163);
+emit_16(1228);
+emit_16(1164);
+emit_16(1228);
+emit_16(1163);
+emit_16(1228);
+emit_16(1164);
+emit_16(1229);
+emit_16(1165);
+emit_16(1229);
+emit_16(1164);
+emit_16(1229);
+emit_16(1165);
+emit_16(1230);
+emit_16(1166);
+emit_16(1230);
+emit_16(1165);
+emit_16(1230);
+emit_16(1166);
+emit_16(1231);
+emit_16(1167);
+emit_16(1231);
+emit_16(1166);
+emit_16(1231);
+emit_16(1167);
+emit_16(1232);
+emit_16(1168);
+emit_16(1232);
+emit_16(1167);
+emit_16(1232);
+emit_16(1168);
+emit_16(1233);
+emit_16(1169);
+emit_16(1233);
+emit_16(1168);
+emit_16(1233);
+emit_16(1169);
+emit_16(1234);
+emit_16(1170);
+emit_16(1234);
+emit_16(1169);
+emit_16(1234);
+emit_16(1170);
+emit_16(1235);
+emit_16(1171);
+emit_16(1235);
+emit_16(1170);
+emit_16(1235);
+emit_16(1171);
+emit_16(1236);
+emit_16(1172);
+emit_16(1236);
+emit_16(1171);
+emit_16(1236);
+emit_16(1172);
+emit_16(1237);
+emit_16(1173);
+emit_16(1237);
+emit_16(1172);
+emit_16(1237);
+emit_16(1173);
+emit_16(1238);
+emit_16(1174);
+emit_16(1238);
+emit_16(1173);
+emit_16(1238);
+emit_16(1174);
+emit_16(1239);
+emit_16(1175);
+emit_16(1239);
+emit_16(1174);
+emit_16(1239);
+emit_16(1175);
+emit_16(1240);
+emit_16(1176);
+emit_16(1240);
+emit_16(1175);
+emit_16(1240);
+emit_16(1176);
+emit_16(1241);
+emit_16(1177);
+emit_16(1241);
+emit_16(1176);
+emit_16(1241);
+emit_16(1177);
+emit_16(1242);
+emit_16(1178);
+emit_16(1242);
+emit_16(1177);
+emit_16(1242);
+emit_16(1178);
+emit_16(1243);
+emit_16(1179);
+emit_16(1243);
+emit_16(1178);
+emit_16(1243);
+emit_16(1179);
+emit_16(1244);
+emit_16(1180);
+emit_16(1244);
+emit_16(1179);
+emit_16(1244);
+emit_16(1180);
+emit_16(1245);
+emit_16(1181);
+emit_16(1245);
+emit_16(1180);
+emit_16(1245);
+emit_16(1181);
+emit_16(1246);
+emit_16(1182);
+emit_16(1246);
+emit_16(1181);
+emit_16(1246);
+emit_16(1182);
+emit_16(1247);
+emit_16(1183);
+emit_16(1247);
+emit_16(1182);
+emit_16(1247);
+emit_16(1183);
+emit_16(1248);
+emit_16(1184);
+emit_16(1248);
+emit_16(1183);
+emit_16(1248);
+emit_16(1184);
+emit_16(1249);
+emit_16(1185);
+emit_16(1249);
+emit_16(1184);
+emit_16(1249);
+emit_16(1185);
+emit_16(1250);
+emit_16(1186);
+emit_16(1250);
+emit_16(1185);
+emit_16(1250);
+emit_16(1186);
+emit_16(1251);
+emit_16(1187);
+emit_16(1251);
+emit_16(1186);
+emit_16(1251);
+emit_16(1187);
+emit_16(1252);
+emit_16(1188);
+emit_16(1252);
+emit_16(1187);
+emit_16(1252);
+emit_16(1188);
+emit_16(1253);
+emit_16(1189);
+emit_16(1253);
+emit_16(1188);
+emit_16(1253);
+emit_16(1189);
+emit_16(1254);
+emit_16(1190);
+emit_16(1254);
+emit_16(1189);
+emit_16(1254);
+emit_16(1190);
+emit_16(1255);
+emit_16(1191);
+emit_16(1255);
+emit_16(1190);
+emit_16(1255);
+emit_16(1191);
+emit_16(1256);
+emit_16(1192);
+emit_16(1256);
+emit_16(1191);
+emit_16(1256);
+emit_16(1192);
+emit_16(1257);
+emit_16(1193);
+emit_16(1257);
+emit_16(1192);
+emit_16(1257);
+emit_16(1193);
+emit_16(1258);
+emit_16(1194);
+emit_16(1258);
+emit_16(1193);
+emit_16(1258);
+emit_16(1194);
+emit_16(1259);
+emit_16(1195);
+emit_16(1259);
+emit_16(1194);
+emit_16(1259);
+emit_16(1195);
+emit_16(1260);
+emit_16(1196);
+emit_16(1260);
+emit_16(1195);
+emit_16(1260);
+emit_16(1196);
+emit_16(1261);
+emit_16(1197);
+emit_16(1261);
+emit_16(1196);
+emit_16(1261);
+emit_16(1197);
+emit_16(1262);
+emit_16(1198);
+emit_16(1262);
+emit_16(1197);
+emit_16(1262);
+emit_16(1198);
+emit_16(1263);
+emit_16(1199);
+emit_16(1263);
+emit_16(1198);
+emit_16(1263);
+emit_16(1199);
+emit_16(1264);
+emit_16(1200);
+emit_16(1264);
+emit_16(1199);
+emit_16(1264);
+emit_16(1200);
+emit_16(1265);
+emit_16(1201);
+emit_16(1265);
+emit_16(1200);
+emit_16(1265);
+emit_16(1201);
+emit_16(1266);
+emit_16(1202);
+emit_16(1266);
+emit_16(1201);
+emit_16(1266);
+emit_16(1202);
+emit_16(1267);
+emit_16(1203);
+emit_16(1267);
+emit_16(1202);
+emit_16(1267);
+emit_16(1203);
+emit_16(1268);
+emit_16(1204);
+emit_16(1268);
+emit_16(1203);
+emit_16(1268);
+emit_16(1204);
+emit_16(1269);
+emit_16(1205);
+emit_16(1269);
+emit_16(1204);
+emit_16(1269);
+emit_16(1205);
+emit_16(1270);
+emit_16(1206);
+emit_16(1270);
+emit_16(1205);
+emit_16(1270);
+emit_16(1206);
+emit_16(1271);
+emit_16(1207);
+emit_16(1271);
+emit_16(1206);
+emit_16(1271);
+emit_16(1207);
+emit_16(1272);
+emit_16(1208);
+emit_16(1272);
+emit_16(1207);
+emit_16(1272);
+emit_16(1208);
+emit_16(1273);
+emit_16(1209);
+emit_16(1273);
+emit_16(1208);
+emit_16(1273);
+emit_16(1209);
+emit_16(1274);
+emit_16(1210);
+emit_16(1274);
+emit_16(1209);
+emit_16(1274);
+emit_16(1210);
+emit_16(1275);
+emit_16(1211);
+emit_16(1275);
+emit_16(1210);
+emit_16(1275);
+emit_16(1211);
+emit_16(1276);
+emit_16(1212);
+emit_16(1276);
+emit_16(1211);
+emit_16(1276);
+emit_16(1212);
+emit_16(1277);
+emit_16(1213);
+emit_16(1277);
+emit_16(1212);
+emit_16(1277);
+emit_16(1213);
+emit_16(1278);
+emit_16(1214);
+emit_16(1278);
+emit_16(1213);
+emit_16(1278);
+emit_16(1214);
+emit_16(1279);
+emit_16(1215);
+emit_16(1279);
+emit_16(1214);
+emit_16(1280);
+emit_16(1216);
+emit_16(1281);
+emit_16(1217);
+emit_16(1281);
+emit_16(1216);
+emit_16(1281);
+emit_16(1217);
+emit_16(1282);
+emit_16(1218);
+emit_16(1282);
+emit_16(1217);
+emit_16(1282);
+emit_16(1218);
+emit_16(1283);
+emit_16(1219);
+emit_16(1283);
+emit_16(1218);
+emit_16(1283);
+emit_16(1219);
+emit_16(1284);
+emit_16(1220);
+emit_16(1284);
+emit_16(1219);
+emit_16(1284);
+emit_16(1220);
+emit_16(1285);
+emit_16(1221);
+emit_16(1285);
+emit_16(1220);
+emit_16(1285);
+emit_16(1221);
+emit_16(1286);
+emit_16(1222);
+emit_16(1286);
+emit_16(1221);
+emit_16(1286);
+emit_16(1222);
+emit_16(1287);
+emit_16(1223);
+emit_16(1287);
+emit_16(1222);
+emit_16(1287);
+emit_16(1223);
+emit_16(1288);
+emit_16(1224);
+emit_16(1288);
+emit_16(1223);
+emit_16(1288);
+emit_16(1224);
+emit_16(1289);
+emit_16(1225);
+emit_16(1289);
+emit_16(1224);
+emit_16(1289);
+emit_16(1225);
+emit_16(1290);
+emit_16(1226);
+emit_16(1290);
+emit_16(1225);
+emit_16(1290);
+emit_16(1226);
+emit_16(1291);
+emit_16(1227);
+emit_16(1291);
+emit_16(1226);
+emit_16(1291);
+emit_16(1227);
+emit_16(1292);
+emit_16(1228);
+emit_16(1292);
+emit_16(1227);
+emit_16(1292);
+emit_16(1228);
+emit_16(1293);
+emit_16(1229);
+emit_16(1293);
+emit_16(1228);
+emit_16(1293);
+emit_16(1229);
+emit_16(1294);
+emit_16(1230);
+emit_16(1294);
+emit_16(1229);
+emit_16(1294);
+emit_16(1230);
+emit_16(1295);
+emit_16(1231);
+emit_16(1295);
+emit_16(1230);
+emit_16(1295);
+emit_16(1231);
+emit_16(1296);
+emit_16(1232);
+emit_16(1296);
+emit_16(1231);
+emit_16(1296);
+emit_16(1232);
+emit_16(1297);
+emit_16(1233);
+emit_16(1297);
+emit_16(1232);
+emit_16(1297);
+emit_16(1233);
+emit_16(1298);
+emit_16(1234);
+emit_16(1298);
+emit_16(1233);
+emit_16(1298);
+emit_16(1234);
+emit_16(1299);
+emit_16(1235);
+emit_16(1299);
+emit_16(1234);
+emit_16(1299);
+emit_16(1235);
+emit_16(1300);
+emit_16(1236);
+emit_16(1300);
+emit_16(1235);
+emit_16(1300);
+emit_16(1236);
+emit_16(1301);
+emit_16(1237);
+emit_16(1301);
+emit_16(1236);
+emit_16(1301);
+emit_16(1237);
+emit_16(1302);
+emit_16(1238);
+emit_16(1302);
+emit_16(1237);
+emit_16(1302);
+emit_16(1238);
+emit_16(1303);
+emit_16(1239);
+emit_16(1303);
+emit_16(1238);
+emit_16(1303);
+emit_16(1239);
+emit_16(1304);
+emit_16(1240);
+emit_16(1304);
+emit_16(1239);
+emit_16(1304);
+emit_16(1240);
+emit_16(1305);
+emit_16(1241);
+emit_16(1305);
+emit_16(1240);
+emit_16(1305);
+emit_16(1241);
+emit_16(1306);
+emit_16(1242);
+emit_16(1306);
+emit_16(1241);
+emit_16(1306);
+emit_16(1242);
+emit_16(1307);
+emit_16(1243);
+emit_16(1307);
+emit_16(1242);
+emit_16(1307);
+emit_16(1243);
+emit_16(1308);
+emit_16(1244);
+emit_16(1308);
+emit_16(1243);
+emit_16(1308);
+emit_16(1244);
+emit_16(1309);
+emit_16(1245);
+emit_16(1309);
+emit_16(1244);
+emit_16(1309);
+emit_16(1245);
+emit_16(1310);
+emit_16(1246);
+emit_16(1310);
+emit_16(1245);
+emit_16(1310);
+emit_16(1246);
+emit_16(1311);
+emit_16(1247);
+emit_16(1311);
+emit_16(1246);
+emit_16(1311);
+emit_16(1247);
+emit_16(1312);
+emit_16(1248);
+emit_16(1312);
+emit_16(1247);
+emit_16(1312);
+emit_16(1248);
+emit_16(1313);
+emit_16(1249);
+emit_16(1313);
+emit_16(1248);
+emit_16(1313);
+emit_16(1249);
+emit_16(1314);
+emit_16(1250);
+emit_16(1314);
+emit_16(1249);
+emit_16(1314);
+emit_16(1250);
+emit_16(1315);
+emit_16(1251);
+emit_16(1315);
+emit_16(1250);
+emit_16(1315);
+emit_16(1251);
+emit_16(1316);
+emit_16(1252);
+emit_16(1316);
+emit_16(1251);
+emit_16(1316);
+emit_16(1252);
+emit_16(1317);
+emit_16(1253);
+emit_16(1317);
+emit_16(1252);
+emit_16(1317);
+emit_16(1253);
+emit_16(1318);
+emit_16(1254);
+emit_16(1318);
+emit_16(1253);
+emit_16(1318);
+emit_16(1254);
+emit_16(1319);
+emit_16(1255);
+emit_16(1319);
+emit_16(1254);
+emit_16(1319);
+emit_16(1255);
+emit_16(1320);
+emit_16(1256);
+emit_16(1320);
+emit_16(1255);
+emit_16(1320);
+emit_16(1256);
+emit_16(1321);
+emit_16(1257);
+emit_16(1321);
+emit_16(1256);
+emit_16(1321);
+emit_16(1257);
+emit_16(1322);
+emit_16(1258);
+emit_16(1322);
+emit_16(1257);
+emit_16(1322);
+emit_16(1258);
+emit_16(1323);
+emit_16(1259);
+emit_16(1323);
+emit_16(1258);
+emit_16(1323);
+emit_16(1259);
+emit_16(1324);
+emit_16(1260);
+emit_16(1324);
+emit_16(1259);
+emit_16(1324);
+emit_16(1260);
+emit_16(1325);
+emit_16(1261);
+emit_16(1325);
+emit_16(1260);
+emit_16(1325);
+emit_16(1261);
+emit_16(1326);
+emit_16(1262);
+emit_16(1326);
+emit_16(1261);
+emit_16(1326);
+emit_16(1262);
+emit_16(1327);
+emit_16(1263);
+emit_16(1327);
+emit_16(1262);
+emit_16(1327);
+emit_16(1263);
+emit_16(1328);
+emit_16(1264);
+emit_16(1328);
+emit_16(1263);
+emit_16(1328);
+emit_16(1264);
+emit_16(1329);
+emit_16(1265);
+emit_16(1329);
+emit_16(1264);
+emit_16(1329);
+emit_16(1265);
+emit_16(1330);
+emit_16(1266);
+emit_16(1330);
+emit_16(1265);
+emit_16(1330);
+emit_16(1266);
+emit_16(1331);
+emit_16(1267);
+emit_16(1331);
+emit_16(1266);
+emit_16(1331);
+emit_16(1267);
+emit_16(1332);
+emit_16(1268);
+emit_16(1332);
+emit_16(1267);
+emit_16(1332);
+emit_16(1268);
+emit_16(1333);
+emit_16(1269);
+emit_16(1333);
+emit_16(1268);
+emit_16(1333);
+emit_16(1269);
+emit_16(1334);
+emit_16(1270);
+emit_16(1334);
+emit_16(1269);
+emit_16(1334);
+emit_16(1270);
+emit_16(1335);
+emit_16(1271);
+emit_16(1335);
+emit_16(1270);
+emit_16(1335);
+emit_16(1271);
+emit_16(1336);
+emit_16(1272);
+emit_16(1336);
+emit_16(1271);
+emit_16(1336);
+emit_16(1272);
+emit_16(1337);
+emit_16(1273);
+emit_16(1337);
+emit_16(1272);
+emit_16(1337);
+emit_16(1273);
+emit_16(1338);
+emit_16(1274);
+emit_16(1338);
+emit_16(1273);
+emit_16(1338);
+emit_16(1274);
+emit_16(1339);
+emit_16(1275);
+emit_16(1339);
+emit_16(1274);
+emit_16(1339);
+emit_16(1275);
+emit_16(1340);
+emit_16(1276);
+emit_16(1340);
+emit_16(1275);
+emit_16(1340);
+emit_16(1276);
+emit_16(1341);
+emit_16(1277);
+emit_16(1341);
+emit_16(1276);
+emit_16(1341);
+emit_16(1277);
+emit_16(1342);
+emit_16(1278);
+emit_16(1342);
+emit_16(1277);
+emit_16(1342);
+emit_16(1278);
+emit_16(1343);
+emit_16(1279);
+emit_16(1343);
+emit_16(1278);
+emit_16(1344);
+emit_16(1280);
+emit_16(1345);
+emit_16(1281);
+emit_16(1345);
+emit_16(1280);
+emit_16(1345);
+emit_16(1281);
+emit_16(1346);
+emit_16(1282);
+emit_16(1346);
+emit_16(1281);
+emit_16(1346);
+emit_16(1282);
+emit_16(1347);
+emit_16(1283);
+emit_16(1347);
+emit_16(1282);
+emit_16(1347);
+emit_16(1283);
+emit_16(1348);
+emit_16(1284);
+emit_16(1348);
+emit_16(1283);
+emit_16(1348);
+emit_16(1284);
+emit_16(1349);
+emit_16(1285);
+emit_16(1349);
+emit_16(1284);
+emit_16(1349);
+emit_16(1285);
+emit_16(1350);
+emit_16(1286);
+emit_16(1350);
+emit_16(1285);
+emit_16(1350);
+emit_16(1286);
+emit_16(1351);
+emit_16(1287);
+emit_16(1351);
+emit_16(1286);
+emit_16(1351);
+emit_16(1287);
+emit_16(1352);
+emit_16(1288);
+emit_16(1352);
+emit_16(1287);
+emit_16(1352);
+emit_16(1288);
+emit_16(1353);
+emit_16(1289);
+emit_16(1353);
+emit_16(1288);
+emit_16(1353);
+emit_16(1289);
+emit_16(1354);
+emit_16(1290);
+emit_16(1354);
+emit_16(1289);
+emit_16(1354);
+emit_16(1290);
+emit_16(1355);
+emit_16(1291);
+emit_16(1355);
+emit_16(1290);
+emit_16(1355);
+emit_16(1291);
+emit_16(1356);
+emit_16(1292);
+emit_16(1356);
+emit_16(1291);
+emit_16(1356);
+emit_16(1292);
+emit_16(1357);
+emit_16(1293);
+emit_16(1357);
+emit_16(1292);
+emit_16(1357);
+emit_16(1293);
+emit_16(1358);
+emit_16(1294);
+emit_16(1358);
+emit_16(1293);
+emit_16(1358);
+emit_16(1294);
+emit_16(1359);
+emit_16(1295);
+emit_16(1359);
+emit_16(1294);
+emit_16(1359);
+emit_16(1295);
+emit_16(1360);
+emit_16(1296);
+emit_16(1360);
+emit_16(1295);
+emit_16(1360);
+emit_16(1296);
+emit_16(1361);
+emit_16(1297);
+emit_16(1361);
+emit_16(1296);
+emit_16(1361);
+emit_16(1297);
+emit_16(1362);
+emit_16(1298);
+emit_16(1362);
+emit_16(1297);
+emit_16(1362);
+emit_16(1298);
+emit_16(1363);
+emit_16(1299);
+emit_16(1363);
+emit_16(1298);
+emit_16(1363);
+emit_16(1299);
+emit_16(1364);
+emit_16(1300);
+emit_16(1364);
+emit_16(1299);
+emit_16(1364);
+emit_16(1300);
+emit_16(1365);
+emit_16(1301);
+emit_16(1365);
+emit_16(1300);
+emit_16(1365);
+emit_16(1301);
+emit_16(1366);
+emit_16(1302);
+emit_16(1366);
+emit_16(1301);
+emit_16(1366);
+emit_16(1302);
+emit_16(1367);
+emit_16(1303);
+emit_16(1367);
+emit_16(1302);
+emit_16(1367);
+emit_16(1303);
+emit_16(1368);
+emit_16(1304);
+emit_16(1368);
+emit_16(1303);
+emit_16(1368);
+emit_16(1304);
+emit_16(1369);
+emit_16(1305);
+emit_16(1369);
+emit_16(1304);
+emit_16(1369);
+emit_16(1305);
+emit_16(1370);
+emit_16(1306);
+emit_16(1370);
+emit_16(1305);
+emit_16(1370);
+emit_16(1306);
+emit_16(1371);
+emit_16(1307);
+emit_16(1371);
+emit_16(1306);
+emit_16(1371);
+emit_16(1307);
+emit_16(1372);
+emit_16(1308);
+emit_16(1372);
+emit_16(1307);
+emit_16(1372);
+emit_16(1308);
+emit_16(1373);
+emit_16(1309);
+emit_16(1373);
+emit_16(1308);
+emit_16(1373);
+emit_16(1309);
+emit_16(1374);
+emit_16(1310);
+emit_16(1374);
+emit_16(1309);
+emit_16(1374);
+emit_16(1310);
+emit_16(1375);
+emit_16(1311);
+emit_16(1375);
+emit_16(1310);
+emit_16(1375);
+emit_16(1311);
+emit_16(1376);
+emit_16(1312);
+emit_16(1376);
+emit_16(1311);
+emit_16(1376);
+emit_16(1312);
+emit_16(1377);
+emit_16(1313);
+emit_16(1377);
+emit_16(1312);
+emit_16(1377);
+emit_16(1313);
+emit_16(1378);
+emit_16(1314);
+emit_16(1378);
+emit_16(1313);
+emit_16(1378);
+emit_16(1314);
+emit_16(1379);
+emit_16(1315);
+emit_16(1379);
+emit_16(1314);
+emit_16(1379);
+emit_16(1315);
+emit_16(1380);
+emit_16(1316);
+emit_16(1380);
+emit_16(1315);
+emit_16(1380);
+emit_16(1316);
+emit_16(1381);
+emit_16(1317);
+emit_16(1381);
+emit_16(1316);
+emit_16(1381);
+emit_16(1317);
+emit_16(1382);
+emit_16(1318);
+emit_16(1382);
+emit_16(1317);
+emit_16(1382);
+emit_16(1318);
+emit_16(1383);
+emit_16(1319);
+emit_16(1383);
+emit_16(1318);
+emit_16(1383);
+emit_16(1319);
+emit_16(1384);
+emit_16(1320);
+emit_16(1384);
+emit_16(1319);
+emit_16(1384);
+emit_16(1320);
+emit_16(1385);
+emit_16(1321);
+emit_16(1385);
+emit_16(1320);
+emit_16(1385);
+emit_16(1321);
+emit_16(1386);
+emit_16(1322);
+emit_16(1386);
+emit_16(1321);
+emit_16(1386);
+emit_16(1322);
+emit_16(1387);
+emit_16(1323);
+emit_16(1387);
+emit_16(1322);
+emit_16(1387);
+emit_16(1323);
+emit_16(1388);
+emit_16(1324);
+emit_16(1388);
+emit_16(1323);
+emit_16(1388);
+emit_16(1324);
+emit_16(1389);
+emit_16(1325);
+emit_16(1389);
+emit_16(1324);
+emit_16(1389);
+emit_16(1325);
+emit_16(1390);
+emit_16(1326);
+emit_16(1390);
+emit_16(1325);
+emit_16(1390);
+emit_16(1326);
+emit_16(1391);
+emit_16(1327);
+emit_16(1391);
+emit_16(1326);
+emit_16(1391);
+emit_16(1327);
+emit_16(1392);
+emit_16(1328);
+emit_16(1392);
+emit_16(1327);
+emit_16(1392);
+emit_16(1328);
+emit_16(1393);
+emit_16(1329);
+emit_16(1393);
+emit_16(1328);
+emit_16(1393);
+emit_16(1329);
+emit_16(1394);
+emit_16(1330);
+emit_16(1394);
+emit_16(1329);
+emit_16(1394);
+emit_16(1330);
+emit_16(1395);
+emit_16(1331);
+emit_16(1395);
+emit_16(1330);
+emit_16(1395);
+emit_16(1331);
+emit_16(1396);
+emit_16(1332);
+emit_16(1396);
+emit_16(1331);
+emit_16(1396);
+emit_16(1332);
+emit_16(1397);
+emit_16(1333);
+emit_16(1397);
+emit_16(1332);
+emit_16(1397);
+emit_16(1333);
+emit_16(1398);
+emit_16(1334);
+emit_16(1398);
+emit_16(1333);
+emit_16(1398);
+emit_16(1334);
+emit_16(1399);
+emit_16(1335);
+emit_16(1399);
+emit_16(1334);
+emit_16(1399);
+emit_16(1335);
+emit_16(1400);
+emit_16(1336);
+emit_16(1400);
+emit_16(1335);
+emit_16(1400);
+emit_16(1336);
+emit_16(1401);
+emit_16(1337);
+emit_16(1401);
+emit_16(1336);
+emit_16(1401);
+emit_16(1337);
+emit_16(1402);
+emit_16(1338);
+emit_16(1402);
+emit_16(1337);
+emit_16(1402);
+emit_16(1338);
+emit_16(1403);
+emit_16(1339);
+emit_16(1403);
+emit_16(1338);
+emit_16(1403);
+emit_16(1339);
+emit_16(1404);
+emit_16(1340);
+emit_16(1404);
+emit_16(1339);
+emit_16(1404);
+emit_16(1340);
+emit_16(1405);
+emit_16(1341);
+emit_16(1405);
+emit_16(1340);
+emit_16(1405);
+emit_16(1341);
+emit_16(1406);
+emit_16(1342);
+emit_16(1406);
+emit_16(1341);
+emit_16(1406);
+emit_16(1342);
+emit_16(1407);
+emit_16(1343);
+emit_16(1407);
+emit_16(1342);
+emit_16(1408);
+emit_16(1344);
+emit_16(1409);
+emit_16(1345);
+emit_16(1409);
+emit_16(1344);
+emit_16(1409);
+emit_16(1345);
+emit_16(1410);
+emit_16(1346);
+emit_16(1410);
+emit_16(1345);
+emit_16(1410);
+emit_16(1346);
+emit_16(1411);
+emit_16(1347);
+emit_16(1411);
+emit_16(1346);
+emit_16(1411);
+emit_16(1347);
+emit_16(1412);
+emit_16(1348);
+emit_16(1412);
+emit_16(1347);
+emit_16(1412);
+emit_16(1348);
+emit_16(1413);
+emit_16(1349);
+emit_16(1413);
+emit_16(1348);
+emit_16(1413);
+emit_16(1349);
+emit_16(1414);
+emit_16(1350);
+emit_16(1414);
+emit_16(1349);
+emit_16(1414);
+emit_16(1350);
+emit_16(1415);
+emit_16(1351);
+emit_16(1415);
+emit_16(1350);
+emit_16(1415);
+emit_16(1351);
+emit_16(1416);
+emit_16(1352);
+emit_16(1416);
+emit_16(1351);
+emit_16(1416);
+emit_16(1352);
+emit_16(1417);
+emit_16(1353);
+emit_16(1417);
+emit_16(1352);
+emit_16(1417);
+emit_16(1353);
+emit_16(1418);
+emit_16(1354);
+emit_16(1418);
+emit_16(1353);
+emit_16(1418);
+emit_16(1354);
+emit_16(1419);
+emit_16(1355);
+emit_16(1419);
+emit_16(1354);
+emit_16(1419);
+emit_16(1355);
+emit_16(1420);
+emit_16(1356);
+emit_16(1420);
+emit_16(1355);
+emit_16(1420);
+emit_16(1356);
+emit_16(1421);
+emit_16(1357);
+emit_16(1421);
+emit_16(1356);
+emit_16(1421);
+emit_16(1357);
+emit_16(1422);
+emit_16(1358);
+emit_16(1422);
+emit_16(1357);
+emit_16(1422);
+emit_16(1358);
+emit_16(1423);
+emit_16(1359);
+emit_16(1423);
+emit_16(1358);
+emit_16(1423);
+emit_16(1359);
+emit_16(1424);
+emit_16(1360);
+emit_16(1424);
+emit_16(1359);
+emit_16(1424);
+emit_16(1360);
+emit_16(1425);
+emit_16(1361);
+emit_16(1425);
+emit_16(1360);
+emit_16(1425);
+emit_16(1361);
+emit_16(1426);
+emit_16(1362);
+emit_16(1426);
+emit_16(1361);
+emit_16(1426);
+emit_16(1362);
+emit_16(1427);
+emit_16(1363);
+emit_16(1427);
+emit_16(1362);
+emit_16(1427);
+emit_16(1363);
+emit_16(1428);
+emit_16(1364);
+emit_16(1428);
+emit_16(1363);
+emit_16(1428);
+emit_16(1364);
+emit_16(1429);
+emit_16(1365);
+emit_16(1429);
+emit_16(1364);
+emit_16(1429);
+emit_16(1365);
+emit_16(1430);
+emit_16(1366);
+emit_16(1430);
+emit_16(1365);
+emit_16(1430);
+emit_16(1366);
+emit_16(1431);
+emit_16(1367);
+emit_16(1431);
+emit_16(1366);
+emit_16(1431);
+emit_16(1367);
+emit_16(1432);
+emit_16(1368);
+emit_16(1432);
+emit_16(1367);
+emit_16(1432);
+emit_16(1368);
+emit_16(1433);
+emit_16(1369);
+emit_16(1433);
+emit_16(1368);
+emit_16(1433);
+emit_16(1369);
+emit_16(1434);
+emit_16(1370);
+emit_16(1434);
+emit_16(1369);
+emit_16(1434);
+emit_16(1370);
+emit_16(1435);
+emit_16(1371);
+emit_16(1435);
+emit_16(1370);
+emit_16(1435);
+emit_16(1371);
+emit_16(1436);
+emit_16(1372);
+emit_16(1436);
+emit_16(1371);
+emit_16(1436);
+emit_16(1372);
+emit_16(1437);
+emit_16(1373);
+emit_16(1437);
+emit_16(1372);
+emit_16(1437);
+emit_16(1373);
+emit_16(1438);
+emit_16(1374);
+emit_16(1438);
+emit_16(1373);
+emit_16(1438);
+emit_16(1374);
+emit_16(1439);
+emit_16(1375);
+emit_16(1439);
+emit_16(1374);
+emit_16(1439);
+emit_16(1375);
+emit_16(1440);
+emit_16(1376);
+emit_16(1440);
+emit_16(1375);
+emit_16(1440);
+emit_16(1376);
+emit_16(1441);
+emit_16(1377);
+emit_16(1441);
+emit_16(1376);
+emit_16(1441);
+emit_16(1377);
+emit_16(1442);
+emit_16(1378);
+emit_16(1442);
+emit_16(1377);
+emit_16(1442);
+emit_16(1378);
+emit_16(1443);
+emit_16(1379);
+emit_16(1443);
+emit_16(1378);
+emit_16(1443);
+emit_16(1379);
+emit_16(1444);
+emit_16(1380);
+emit_16(1444);
+emit_16(1379);
+emit_16(1444);
+emit_16(1380);
+emit_16(1445);
+emit_16(1381);
+emit_16(1445);
+emit_16(1380);
+emit_16(1445);
+emit_16(1381);
+emit_16(1446);
+emit_16(1382);
+emit_16(1446);
+emit_16(1381);
+emit_16(1446);
+emit_16(1382);
+emit_16(1447);
+emit_16(1383);
+emit_16(1447);
+emit_16(1382);
+emit_16(1447);
+emit_16(1383);
+emit_16(1448);
+emit_16(1384);
+emit_16(1448);
+emit_16(1383);
+emit_16(1448);
+emit_16(1384);
+emit_16(1449);
+emit_16(1385);
+emit_16(1449);
+emit_16(1384);
+emit_16(1449);
+emit_16(1385);
+emit_16(1450);
+emit_16(1386);
+emit_16(1450);
+emit_16(1385);
+emit_16(1450);
+emit_16(1386);
+emit_16(1451);
+emit_16(1387);
+emit_16(1451);
+emit_16(1386);
+emit_16(1451);
+emit_16(1387);
+emit_16(1452);
+emit_16(1388);
+emit_16(1452);
+emit_16(1387);
+emit_16(1452);
+emit_16(1388);
+emit_16(1453);
+emit_16(1389);
+emit_16(1453);
+emit_16(1388);
+emit_16(1453);
+emit_16(1389);
+emit_16(1454);
+emit_16(1390);
+emit_16(1454);
+emit_16(1389);
+emit_16(1454);
+emit_16(1390);
+emit_16(1455);
+emit_16(1391);
+emit_16(1455);
+emit_16(1390);
+emit_16(1455);
+emit_16(1391);
+emit_16(1456);
+emit_16(1392);
+emit_16(1456);
+emit_16(1391);
+emit_16(1456);
+emit_16(1392);
+emit_16(1457);
+emit_16(1393);
+emit_16(1457);
+emit_16(1392);
+emit_16(1457);
+emit_16(1393);
+emit_16(1458);
+emit_16(1394);
+emit_16(1458);
+emit_16(1393);
+emit_16(1458);
+emit_16(1394);
+emit_16(1459);
+emit_16(1395);
+emit_16(1459);
+emit_16(1394);
+emit_16(1459);
+emit_16(1395);
+emit_16(1460);
+emit_16(1396);
+emit_16(1460);
+emit_16(1395);
+emit_16(1460);
+emit_16(1396);
+emit_16(1461);
+emit_16(1397);
+emit_16(1461);
+emit_16(1396);
+emit_16(1461);
+emit_16(1397);
+emit_16(1462);
+emit_16(1398);
+emit_16(1462);
+emit_16(1397);
+emit_16(1462);
+emit_16(1398);
+emit_16(1463);
+emit_16(1399);
+emit_16(1463);
+emit_16(1398);
+emit_16(1463);
+emit_16(1399);
+emit_16(1464);
+emit_16(1400);
+emit_16(1464);
+emit_16(1399);
+emit_16(1464);
+emit_16(1400);
+emit_16(1465);
+emit_16(1401);
+emit_16(1465);
+emit_16(1400);
+emit_16(1465);
+emit_16(1401);
+emit_16(1466);
+emit_16(1402);
+emit_16(1466);
+emit_16(1401);
+emit_16(1466);
+emit_16(1402);
+emit_16(1467);
+emit_16(1403);
+emit_16(1467);
+emit_16(1402);
+emit_16(1467);
+emit_16(1403);
+emit_16(1468);
+emit_16(1404);
+emit_16(1468);
+emit_16(1403);
+emit_16(1468);
+emit_16(1404);
+emit_16(1469);
+emit_16(1405);
+emit_16(1469);
+emit_16(1404);
+emit_16(1469);
+emit_16(1405);
+emit_16(1470);
+emit_16(1406);
+emit_16(1470);
+emit_16(1405);
+emit_16(1470);
+emit_16(1406);
+emit_16(1471);
+emit_16(1407);
+emit_16(1471);
+emit_16(1406);
+emit_16(1472);
+emit_16(1408);
+emit_16(1473);
+emit_16(1409);
+emit_16(1473);
+emit_16(1408);
+emit_16(1473);
+emit_16(1409);
+emit_16(1474);
+emit_16(1410);
+emit_16(1474);
+emit_16(1409);
+emit_16(1474);
+emit_16(1410);
+emit_16(1475);
+emit_16(1411);
+emit_16(1475);
+emit_16(1410);
+emit_16(1475);
+emit_16(1411);
+emit_16(1476);
+emit_16(1412);
+emit_16(1476);
+emit_16(1411);
+emit_16(1476);
+emit_16(1412);
+emit_16(1477);
+emit_16(1413);
+emit_16(1477);
+emit_16(1412);
+emit_16(1477);
+emit_16(1413);
+emit_16(1478);
+emit_16(1414);
+emit_16(1478);
+emit_16(1413);
+emit_16(1478);
+emit_16(1414);
+emit_16(1479);
+emit_16(1415);
+emit_16(1479);
+emit_16(1414);
+emit_16(1479);
+emit_16(1415);
+emit_16(1480);
+emit_16(1416);
+emit_16(1480);
+emit_16(1415);
+emit_16(1480);
+emit_16(1416);
+emit_16(1481);
+emit_16(1417);
+emit_16(1481);
+emit_16(1416);
+emit_16(1481);
+emit_16(1417);
+emit_16(1482);
+emit_16(1418);
+emit_16(1482);
+emit_16(1417);
+emit_16(1482);
+emit_16(1418);
+emit_16(1483);
+emit_16(1419);
+emit_16(1483);
+emit_16(1418);
+emit_16(1483);
+emit_16(1419);
+emit_16(1484);
+emit_16(1420);
+emit_16(1484);
+emit_16(1419);
+emit_16(1484);
+emit_16(1420);
+emit_16(1485);
+emit_16(1421);
+emit_16(1485);
+emit_16(1420);
+emit_16(1485);
+emit_16(1421);
+emit_16(1486);
+emit_16(1422);
+emit_16(1486);
+emit_16(1421);
+emit_16(1486);
+emit_16(1422);
+emit_16(1487);
+emit_16(1423);
+emit_16(1487);
+emit_16(1422);
+emit_16(1487);
+emit_16(1423);
+emit_16(1488);
+emit_16(1424);
+emit_16(1488);
+emit_16(1423);
+emit_16(1488);
+emit_16(1424);
+emit_16(1489);
+emit_16(1425);
+emit_16(1489);
+emit_16(1424);
+emit_16(1489);
+emit_16(1425);
+emit_16(1490);
+emit_16(1426);
+emit_16(1490);
+emit_16(1425);
+emit_16(1490);
+emit_16(1426);
+emit_16(1491);
+emit_16(1427);
+emit_16(1491);
+emit_16(1426);
+emit_16(1491);
+emit_16(1427);
+emit_16(1492);
+emit_16(1428);
+emit_16(1492);
+emit_16(1427);
+emit_16(1492);
+emit_16(1428);
+emit_16(1493);
+emit_16(1429);
+emit_16(1493);
+emit_16(1428);
+emit_16(1493);
+emit_16(1429);
+emit_16(1494);
+emit_16(1430);
+emit_16(1494);
+emit_16(1429);
+emit_16(1494);
+emit_16(1430);
+emit_16(1495);
+emit_16(1431);
+emit_16(1495);
+emit_16(1430);
+emit_16(1495);
+emit_16(1431);
+emit_16(1496);
+emit_16(1432);
+emit_16(1496);
+emit_16(1431);
+emit_16(1496);
+emit_16(1432);
+emit_16(1497);
+emit_16(1433);
+emit_16(1497);
+emit_16(1432);
+emit_16(1497);
+emit_16(1433);
+emit_16(1498);
+emit_16(1434);
+emit_16(1498);
+emit_16(1433);
+emit_16(1498);
+emit_16(1434);
+emit_16(1499);
+emit_16(1435);
+emit_16(1499);
+emit_16(1434);
+emit_16(1499);
+emit_16(1435);
+emit_16(1500);
+emit_16(1436);
+emit_16(1500);
+emit_16(1435);
+emit_16(1500);
+emit_16(1436);
+emit_16(1501);
+emit_16(1437);
+emit_16(1501);
+emit_16(1436);
+emit_16(1501);
+emit_16(1437);
+emit_16(1502);
+emit_16(1438);
+emit_16(1502);
+emit_16(1437);
+emit_16(1502);
+emit_16(1438);
+emit_16(1503);
+emit_16(1439);
+emit_16(1503);
+emit_16(1438);
+emit_16(1503);
+emit_16(1439);
+emit_16(1504);
+emit_16(1440);
+emit_16(1504);
+emit_16(1439);
+emit_16(1504);
+emit_16(1440);
+emit_16(1505);
+emit_16(1441);
+emit_16(1505);
+emit_16(1440);
+emit_16(1505);
+emit_16(1441);
+emit_16(1506);
+emit_16(1442);
+emit_16(1506);
+emit_16(1441);
+emit_16(1506);
+emit_16(1442);
+emit_16(1507);
+emit_16(1443);
+emit_16(1507);
+emit_16(1442);
+emit_16(1507);
+emit_16(1443);
+emit_16(1508);
+emit_16(1444);
+emit_16(1508);
+emit_16(1443);
+emit_16(1508);
+emit_16(1444);
+emit_16(1509);
+emit_16(1445);
+emit_16(1509);
+emit_16(1444);
+emit_16(1509);
+emit_16(1445);
+emit_16(1510);
+emit_16(1446);
+emit_16(1510);
+emit_16(1445);
+emit_16(1510);
+emit_16(1446);
+emit_16(1511);
+emit_16(1447);
+emit_16(1511);
+emit_16(1446);
+emit_16(1511);
+emit_16(1447);
+emit_16(1512);
+emit_16(1448);
+emit_16(1512);
+emit_16(1447);
+emit_16(1512);
+emit_16(1448);
+emit_16(1513);
+emit_16(1449);
+emit_16(1513);
+emit_16(1448);
+emit_16(1513);
+emit_16(1449);
+emit_16(1514);
+emit_16(1450);
+emit_16(1514);
+emit_16(1449);
+emit_16(1514);
+emit_16(1450);
+emit_16(1515);
+emit_16(1451);
+emit_16(1515);
+emit_16(1450);
+emit_16(1515);
+emit_16(1451);
+emit_16(1516);
+emit_16(1452);
+emit_16(1516);
+emit_16(1451);
+emit_16(1516);
+emit_16(1452);
+emit_16(1517);
+emit_16(1453);
+emit_16(1517);
+emit_16(1452);
+emit_16(1517);
+emit_16(1453);
+emit_16(1518);
+emit_16(1454);
+emit_16(1518);
+emit_16(1453);
+emit_16(1518);
+emit_16(1454);
+emit_16(1519);
+emit_16(1455);
+emit_16(1519);
+emit_16(1454);
+emit_16(1519);
+emit_16(1455);
+emit_16(1520);
+emit_16(1456);
+emit_16(1520);
+emit_16(1455);
+emit_16(1520);
+emit_16(1456);
+emit_16(1521);
+emit_16(1457);
+emit_16(1521);
+emit_16(1456);
+emit_16(1521);
+emit_16(1457);
+emit_16(1522);
+emit_16(1458);
+emit_16(1522);
+emit_16(1457);
+emit_16(1522);
+emit_16(1458);
+emit_16(1523);
+emit_16(1459);
+emit_16(1523);
+emit_16(1458);
+emit_16(1523);
+emit_16(1459);
+emit_16(1524);
+emit_16(1460);
+emit_16(1524);
+emit_16(1459);
+emit_16(1524);
+emit_16(1460);
+emit_16(1525);
+emit_16(1461);
+emit_16(1525);
+emit_16(1460);
+emit_16(1525);
+emit_16(1461);
+emit_16(1526);
+emit_16(1462);
+emit_16(1526);
+emit_16(1461);
+emit_16(1526);
+emit_16(1462);
+emit_16(1527);
+emit_16(1463);
+emit_16(1527);
+emit_16(1462);
+emit_16(1527);
+emit_16(1463);
+emit_16(1528);
+emit_16(1464);
+emit_16(1528);
+emit_16(1463);
+emit_16(1528);
+emit_16(1464);
+emit_16(1529);
+emit_16(1465);
+emit_16(1529);
+emit_16(1464);
+emit_16(1529);
+emit_16(1465);
+emit_16(1530);
+emit_16(1466);
+emit_16(1530);
+emit_16(1465);
+emit_16(1530);
+emit_16(1466);
+emit_16(1531);
+emit_16(1467);
+emit_16(1531);
+emit_16(1466);
+emit_16(1531);
+emit_16(1467);
+emit_16(1532);
+emit_16(1468);
+emit_16(1532);
+emit_16(1467);
+emit_16(1532);
+emit_16(1468);
+emit_16(1533);
+emit_16(1469);
+emit_16(1533);
+emit_16(1468);
+emit_16(1533);
+emit_16(1469);
+emit_16(1534);
+emit_16(1470);
+emit_16(1534);
+emit_16(1469);
+emit_16(1534);
+emit_16(1470);
+emit_16(1535);
+emit_16(1471);
+emit_16(1535);
+emit_16(1470);
+emit_16(1536);
+emit_16(1472);
+emit_16(1537);
+emit_16(1473);
+emit_16(1537);
+emit_16(1472);
+emit_16(1537);
+emit_16(1473);
+emit_16(1538);
+emit_16(1474);
+emit_16(1538);
+emit_16(1473);
+emit_16(1538);
+emit_16(1474);
+emit_16(1539);
+emit_16(1475);
+emit_16(1539);
+emit_16(1474);
+emit_16(1539);
+emit_16(1475);
+emit_16(1540);
+emit_16(1476);
+emit_16(1540);
+emit_16(1475);
+emit_16(1540);
+emit_16(1476);
+emit_16(1541);
+emit_16(1477);
+emit_16(1541);
+emit_16(1476);
+emit_16(1541);
+emit_16(1477);
+emit_16(1542);
+emit_16(1478);
+emit_16(1542);
+emit_16(1477);
+emit_16(1542);
+emit_16(1478);
+emit_16(1543);
+emit_16(1479);
+emit_16(1543);
+emit_16(1478);
+emit_16(1543);
+emit_16(1479);
+emit_16(1544);
+emit_16(1480);
+emit_16(1544);
+emit_16(1479);
+emit_16(1544);
+emit_16(1480);
+emit_16(1545);
+emit_16(1481);
+emit_16(1545);
+emit_16(1480);
+emit_16(1545);
+emit_16(1481);
+emit_16(1546);
+emit_16(1482);
+emit_16(1546);
+emit_16(1481);
+emit_16(1546);
+emit_16(1482);
+emit_16(1547);
+emit_16(1483);
+emit_16(1547);
+emit_16(1482);
+emit_16(1547);
+emit_16(1483);
+emit_16(1548);
+emit_16(1484);
+emit_16(1548);
+emit_16(1483);
+emit_16(1548);
+emit_16(1484);
+emit_16(1549);
+emit_16(1485);
+emit_16(1549);
+emit_16(1484);
+emit_16(1549);
+emit_16(1485);
+emit_16(1550);
+emit_16(1486);
+emit_16(1550);
+emit_16(1485);
+emit_16(1550);
+emit_16(1486);
+emit_16(1551);
+emit_16(1487);
+emit_16(1551);
+emit_16(1486);
+emit_16(1551);
+emit_16(1487);
+emit_16(1552);
+emit_16(1488);
+emit_16(1552);
+emit_16(1487);
+emit_16(1552);
+emit_16(1488);
+emit_16(1553);
+emit_16(1489);
+emit_16(1553);
+emit_16(1488);
+emit_16(1553);
+emit_16(1489);
+emit_16(1554);
+emit_16(1490);
+emit_16(1554);
+emit_16(1489);
+emit_16(1554);
+emit_16(1490);
+emit_16(1555);
+emit_16(1491);
+emit_16(1555);
+emit_16(1490);
+emit_16(1555);
+emit_16(1491);
+emit_16(1556);
+emit_16(1492);
+emit_16(1556);
+emit_16(1491);
+emit_16(1556);
+emit_16(1492);
+emit_16(1557);
+emit_16(1493);
+emit_16(1557);
+emit_16(1492);
+emit_16(1557);
+emit_16(1493);
+emit_16(1558);
+emit_16(1494);
+emit_16(1558);
+emit_16(1493);
+emit_16(1558);
+emit_16(1494);
+emit_16(1559);
+emit_16(1495);
+emit_16(1559);
+emit_16(1494);
+emit_16(1559);
+emit_16(1495);
+emit_16(1560);
+emit_16(1496);
+emit_16(1560);
+emit_16(1495);
+emit_16(1560);
+emit_16(1496);
+emit_16(1561);
+emit_16(1497);
+emit_16(1561);
+emit_16(1496);
+emit_16(1561);
+emit_16(1497);
+emit_16(1562);
+emit_16(1498);
+emit_16(1562);
+emit_16(1497);
+emit_16(1562);
+emit_16(1498);
+emit_16(1563);
+emit_16(1499);
+emit_16(1563);
+emit_16(1498);
+emit_16(1563);
+emit_16(1499);
+emit_16(1564);
+emit_16(1500);
+emit_16(1564);
+emit_16(1499);
+emit_16(1564);
+emit_16(1500);
+emit_16(1565);
+emit_16(1501);
+emit_16(1565);
+emit_16(1500);
+emit_16(1565);
+emit_16(1501);
+emit_16(1566);
+emit_16(1502);
+emit_16(1566);
+emit_16(1501);
+emit_16(1566);
+emit_16(1502);
+emit_16(1567);
+emit_16(1503);
+emit_16(1567);
+emit_16(1502);
+emit_16(1567);
+emit_16(1503);
+emit_16(1568);
+emit_16(1504);
+emit_16(1568);
+emit_16(1503);
+emit_16(1568);
+emit_16(1504);
+emit_16(1569);
+emit_16(1505);
+emit_16(1569);
+emit_16(1504);
+emit_16(1569);
+emit_16(1505);
+emit_16(1570);
+emit_16(1506);
+emit_16(1570);
+emit_16(1505);
+emit_16(1570);
+emit_16(1506);
+emit_16(1571);
+emit_16(1507);
+emit_16(1571);
+emit_16(1506);
+emit_16(1571);
+emit_16(1507);
+emit_16(1572);
+emit_16(1508);
+emit_16(1572);
+emit_16(1507);
+emit_16(1572);
+emit_16(1508);
+emit_16(1573);
+emit_16(1509);
+emit_16(1573);
+emit_16(1508);
+emit_16(1573);
+emit_16(1509);
+emit_16(1574);
+emit_16(1510);
+emit_16(1574);
+emit_16(1509);
+emit_16(1574);
+emit_16(1510);
+emit_16(1575);
+emit_16(1511);
+emit_16(1575);
+emit_16(1510);
+emit_16(1575);
+emit_16(1511);
+emit_16(1576);
+emit_16(1512);
+emit_16(1576);
+emit_16(1511);
+emit_16(1576);
+emit_16(1512);
+emit_16(1577);
+emit_16(1513);
+emit_16(1577);
+emit_16(1512);
+emit_16(1577);
+emit_16(1513);
+emit_16(1578);
+emit_16(1514);
+emit_16(1578);
+emit_16(1513);
+emit_16(1578);
+emit_16(1514);
+emit_16(1579);
+emit_16(1515);
+emit_16(1579);
+emit_16(1514);
+emit_16(1579);
+emit_16(1515);
+emit_16(1580);
+emit_16(1516);
+emit_16(1580);
+emit_16(1515);
+emit_16(1580);
+emit_16(1516);
+emit_16(1581);
+emit_16(1517);
+emit_16(1581);
+emit_16(1516);
+emit_16(1581);
+emit_16(1517);
+emit_16(1582);
+emit_16(1518);
+emit_16(1582);
+emit_16(1517);
+emit_16(1582);
+emit_16(1518);
+emit_16(1583);
+emit_16(1519);
+emit_16(1583);
+emit_16(1518);
+emit_16(1583);
+emit_16(1519);
+emit_16(1584);
+emit_16(1520);
+emit_16(1584);
+emit_16(1519);
+emit_16(1584);
+emit_16(1520);
+emit_16(1585);
+emit_16(1521);
+emit_16(1585);
+emit_16(1520);
+emit_16(1585);
+emit_16(1521);
+emit_16(1586);
+emit_16(1522);
+emit_16(1586);
+emit_16(1521);
+emit_16(1586);
+emit_16(1522);
+emit_16(1587);
+emit_16(1523);
+emit_16(1587);
+emit_16(1522);
+emit_16(1587);
+emit_16(1523);
+emit_16(1588);
+emit_16(1524);
+emit_16(1588);
+emit_16(1523);
+emit_16(1588);
+emit_16(1524);
+emit_16(1589);
+emit_16(1525);
+emit_16(1589);
+emit_16(1524);
+emit_16(1589);
+emit_16(1525);
+emit_16(1590);
+emit_16(1526);
+emit_16(1590);
+emit_16(1525);
+emit_16(1590);
+emit_16(1526);
+emit_16(1591);
+emit_16(1527);
+emit_16(1591);
+emit_16(1526);
+emit_16(1591);
+emit_16(1527);
+emit_16(1592);
+emit_16(1528);
+emit_16(1592);
+emit_16(1527);
+emit_16(1592);
+emit_16(1528);
+emit_16(1593);
+emit_16(1529);
+emit_16(1593);
+emit_16(1528);
+emit_16(1593);
+emit_16(1529);
+emit_16(1594);
+emit_16(1530);
+emit_16(1594);
+emit_16(1529);
+emit_16(1594);
+emit_16(1530);
+emit_16(1595);
+emit_16(1531);
+emit_16(1595);
+emit_16(1530);
+emit_16(1595);
+emit_16(1531);
+emit_16(1596);
+emit_16(1532);
+emit_16(1596);
+emit_16(1531);
+emit_16(1596);
+emit_16(1532);
+emit_16(1597);
+emit_16(1533);
+emit_16(1597);
+emit_16(1532);
+emit_16(1597);
+emit_16(1533);
+emit_16(1598);
+emit_16(1534);
+emit_16(1598);
+emit_16(1533);
+emit_16(1598);
+emit_16(1534);
+emit_16(1599);
+emit_16(1535);
+emit_16(1599);
+emit_16(1534);
+emit_16(1600);
+emit_16(1536);
+emit_16(1601);
+emit_16(1537);
+emit_16(1601);
+emit_16(1536);
+emit_16(1601);
+emit_16(1537);
+emit_16(1602);
+emit_16(1538);
+emit_16(1602);
+emit_16(1537);
+emit_16(1602);
+emit_16(1538);
+emit_16(1603);
+emit_16(1539);
+emit_16(1603);
+emit_16(1538);
+emit_16(1603);
+emit_16(1539);
+emit_16(1604);
+emit_16(1540);
+emit_16(1604);
+emit_16(1539);
+emit_16(1604);
+emit_16(1540);
+emit_16(1605);
+emit_16(1541);
+emit_16(1605);
+emit_16(1540);
+emit_16(1605);
+emit_16(1541);
+emit_16(1606);
+emit_16(1542);
+emit_16(1606);
+emit_16(1541);
+emit_16(1606);
+emit_16(1542);
+emit_16(1607);
+emit_16(1543);
+emit_16(1607);
+emit_16(1542);
+emit_16(1607);
+emit_16(1543);
+emit_16(1608);
+emit_16(1544);
+emit_16(1608);
+emit_16(1543);
+emit_16(1608);
+emit_16(1544);
+emit_16(1609);
+emit_16(1545);
+emit_16(1609);
+emit_16(1544);
+emit_16(1609);
+emit_16(1545);
+emit_16(1610);
+emit_16(1546);
+emit_16(1610);
+emit_16(1545);
+emit_16(1610);
+emit_16(1546);
+emit_16(1611);
+emit_16(1547);
+emit_16(1611);
+emit_16(1546);
+emit_16(1611);
+emit_16(1547);
+emit_16(1612);
+emit_16(1548);
+emit_16(1612);
+emit_16(1547);
+emit_16(1612);
+emit_16(1548);
+emit_16(1613);
+emit_16(1549);
+emit_16(1613);
+emit_16(1548);
+emit_16(1613);
+emit_16(1549);
+emit_16(1614);
+emit_16(1550);
+emit_16(1614);
+emit_16(1549);
+emit_16(1614);
+emit_16(1550);
+emit_16(1615);
+emit_16(1551);
+emit_16(1615);
+emit_16(1550);
+emit_16(1615);
+emit_16(1551);
+emit_16(1616);
+emit_16(1552);
+emit_16(1616);
+emit_16(1551);
+emit_16(1616);
+emit_16(1552);
+emit_16(1617);
+emit_16(1553);
+emit_16(1617);
+emit_16(1552);
+emit_16(1617);
+emit_16(1553);
+emit_16(1618);
+emit_16(1554);
+emit_16(1618);
+emit_16(1553);
+emit_16(1618);
+emit_16(1554);
+emit_16(1619);
+emit_16(1555);
+emit_16(1619);
+emit_16(1554);
+emit_16(1619);
+emit_16(1555);
+emit_16(1620);
+emit_16(1556);
+emit_16(1620);
+emit_16(1555);
+emit_16(1620);
+emit_16(1556);
+emit_16(1621);
+emit_16(1557);
+emit_16(1621);
+emit_16(1556);
+emit_16(1621);
+emit_16(1557);
+emit_16(1622);
+emit_16(1558);
+emit_16(1622);
+emit_16(1557);
+emit_16(1622);
+emit_16(1558);
+emit_16(1623);
+emit_16(1559);
+emit_16(1623);
+emit_16(1558);
+emit_16(1623);
+emit_16(1559);
+emit_16(1624);
+emit_16(1560);
+emit_16(1624);
+emit_16(1559);
+emit_16(1624);
+emit_16(1560);
+emit_16(1625);
+emit_16(1561);
+emit_16(1625);
+emit_16(1560);
+emit_16(1625);
+emit_16(1561);
+emit_16(1626);
+emit_16(1562);
+emit_16(1626);
+emit_16(1561);
+emit_16(1626);
+emit_16(1562);
+emit_16(1627);
+emit_16(1563);
+emit_16(1627);
+emit_16(1562);
+emit_16(1627);
+emit_16(1563);
+emit_16(1628);
+emit_16(1564);
+emit_16(1628);
+emit_16(1563);
+emit_16(1628);
+emit_16(1564);
+emit_16(1629);
+emit_16(1565);
+emit_16(1629);
+emit_16(1564);
+emit_16(1629);
+emit_16(1565);
+emit_16(1630);
+emit_16(1566);
+emit_16(1630);
+emit_16(1565);
+emit_16(1630);
+emit_16(1566);
+emit_16(1631);
+emit_16(1567);
+emit_16(1631);
+emit_16(1566);
+emit_16(1631);
+emit_16(1567);
+emit_16(1632);
+emit_16(1568);
+emit_16(1632);
+emit_16(1567);
+emit_16(1632);
+emit_16(1568);
+emit_16(1633);
+emit_16(1569);
+emit_16(1633);
+emit_16(1568);
+emit_16(1633);
+emit_16(1569);
+emit_16(1634);
+emit_16(1570);
+emit_16(1634);
+emit_16(1569);
+emit_16(1634);
+emit_16(1570);
+emit_16(1635);
+emit_16(1571);
+emit_16(1635);
+emit_16(1570);
+emit_16(1635);
+emit_16(1571);
+emit_16(1636);
+emit_16(1572);
+emit_16(1636);
+emit_16(1571);
+emit_16(1636);
+emit_16(1572);
+emit_16(1637);
+emit_16(1573);
+emit_16(1637);
+emit_16(1572);
+emit_16(1637);
+emit_16(1573);
+emit_16(1638);
+emit_16(1574);
+emit_16(1638);
+emit_16(1573);
+emit_16(1638);
+emit_16(1574);
+emit_16(1639);
+emit_16(1575);
+emit_16(1639);
+emit_16(1574);
+emit_16(1639);
+emit_16(1575);
+emit_16(1640);
+emit_16(1576);
+emit_16(1640);
+emit_16(1575);
+emit_16(1640);
+emit_16(1576);
+emit_16(1641);
+emit_16(1577);
+emit_16(1641);
+emit_16(1576);
+emit_16(1641);
+emit_16(1577);
+emit_16(1642);
+emit_16(1578);
+emit_16(1642);
+emit_16(1577);
+emit_16(1642);
+emit_16(1578);
+emit_16(1643);
+emit_16(1579);
+emit_16(1643);
+emit_16(1578);
+emit_16(1643);
+emit_16(1579);
+emit_16(1644);
+emit_16(1580);
+emit_16(1644);
+emit_16(1579);
+emit_16(1644);
+emit_16(1580);
+emit_16(1645);
+emit_16(1581);
+emit_16(1645);
+emit_16(1580);
+emit_16(1645);
+emit_16(1581);
+emit_16(1646);
+emit_16(1582);
+emit_16(1646);
+emit_16(1581);
+emit_16(1646);
+emit_16(1582);
+emit_16(1647);
+emit_16(1583);
+emit_16(1647);
+emit_16(1582);
+emit_16(1647);
+emit_16(1583);
+emit_16(1648);
+emit_16(1584);
+emit_16(1648);
+emit_16(1583);
+emit_16(1648);
+emit_16(1584);
+emit_16(1649);
+emit_16(1585);
+emit_16(1649);
+emit_16(1584);
+emit_16(1649);
+emit_16(1585);
+emit_16(1650);
+emit_16(1586);
+emit_16(1650);
+emit_16(1585);
+emit_16(1650);
+emit_16(1586);
+emit_16(1651);
+emit_16(1587);
+emit_16(1651);
+emit_16(1586);
+emit_16(1651);
+emit_16(1587);
+emit_16(1652);
+emit_16(1588);
+emit_16(1652);
+emit_16(1587);
+emit_16(1652);
+emit_16(1588);
+emit_16(1653);
+emit_16(1589);
+emit_16(1653);
+emit_16(1588);
+emit_16(1653);
+emit_16(1589);
+emit_16(1654);
+emit_16(1590);
+emit_16(1654);
+emit_16(1589);
+emit_16(1654);
+emit_16(1590);
+emit_16(1655);
+emit_16(1591);
+emit_16(1655);
+emit_16(1590);
+emit_16(1655);
+emit_16(1591);
+emit_16(1656);
+emit_16(1592);
+emit_16(1656);
+emit_16(1591);
+emit_16(1656);
+emit_16(1592);
+emit_16(1657);
+emit_16(1593);
+emit_16(1657);
+emit_16(1592);
+emit_16(1657);
+emit_16(1593);
+emit_16(1658);
+emit_16(1594);
+emit_16(1658);
+emit_16(1593);
+emit_16(1658);
+emit_16(1594);
+emit_16(1659);
+emit_16(1595);
+emit_16(1659);
+emit_16(1594);
+emit_16(1659);
+emit_16(1595);
+emit_16(1660);
+emit_16(1596);
+emit_16(1660);
+emit_16(1595);
+emit_16(1660);
+emit_16(1596);
+emit_16(1661);
+emit_16(1597);
+emit_16(1661);
+emit_16(1596);
+emit_16(1661);
+emit_16(1597);
+emit_16(1662);
+emit_16(1598);
+emit_16(1662);
+emit_16(1597);
+emit_16(1662);
+emit_16(1598);
+emit_16(1663);
+emit_16(1599);
+emit_16(1663);
+emit_16(1598);
+emit_16(1664);
+emit_16(1600);
+emit_16(1665);
+emit_16(1601);
+emit_16(1665);
+emit_16(1600);
+emit_16(1665);
+emit_16(1601);
+emit_16(1666);
+emit_16(1602);
+emit_16(1666);
+emit_16(1601);
+emit_16(1666);
+emit_16(1602);
+emit_16(1667);
+emit_16(1603);
+emit_16(1667);
+emit_16(1602);
+emit_16(1667);
+emit_16(1603);
+emit_16(1668);
+emit_16(1604);
+emit_16(1668);
+emit_16(1603);
+emit_16(1668);
+emit_16(1604);
+emit_16(1669);
+emit_16(1605);
+emit_16(1669);
+emit_16(1604);
+emit_16(1669);
+emit_16(1605);
+emit_16(1670);
+emit_16(1606);
+emit_16(1670);
+emit_16(1605);
+emit_16(1670);
+emit_16(1606);
+emit_16(1671);
+emit_16(1607);
+emit_16(1671);
+emit_16(1606);
+emit_16(1671);
+emit_16(1607);
+emit_16(1672);
+emit_16(1608);
+emit_16(1672);
+emit_16(1607);
+emit_16(1672);
+emit_16(1608);
+emit_16(1673);
+emit_16(1609);
+emit_16(1673);
+emit_16(1608);
+emit_16(1673);
+emit_16(1609);
+emit_16(1674);
+emit_16(1610);
+emit_16(1674);
+emit_16(1609);
+emit_16(1674);
+emit_16(1610);
+emit_16(1675);
+emit_16(1611);
+emit_16(1675);
+emit_16(1610);
+emit_16(1675);
+emit_16(1611);
+emit_16(1676);
+emit_16(1612);
+emit_16(1676);
+emit_16(1611);
+emit_16(1676);
+emit_16(1612);
+emit_16(1677);
+emit_16(1613);
+emit_16(1677);
+emit_16(1612);
+emit_16(1677);
+emit_16(1613);
+emit_16(1678);
+emit_16(1614);
+emit_16(1678);
+emit_16(1613);
+emit_16(1678);
+emit_16(1614);
+emit_16(1679);
+emit_16(1615);
+emit_16(1679);
+emit_16(1614);
+emit_16(1679);
+emit_16(1615);
+emit_16(1680);
+emit_16(1616);
+emit_16(1680);
+emit_16(1615);
+emit_16(1680);
+emit_16(1616);
+emit_16(1681);
+emit_16(1617);
+emit_16(1681);
+emit_16(1616);
+emit_16(1681);
+emit_16(1617);
+emit_16(1682);
+emit_16(1618);
+emit_16(1682);
+emit_16(1617);
+emit_16(1682);
+emit_16(1618);
+emit_16(1683);
+emit_16(1619);
+emit_16(1683);
+emit_16(1618);
+emit_16(1683);
+emit_16(1619);
+emit_16(1684);
+emit_16(1620);
+emit_16(1684);
+emit_16(1619);
+emit_16(1684);
+emit_16(1620);
+emit_16(1685);
+emit_16(1621);
+emit_16(1685);
+emit_16(1620);
+emit_16(1685);
+emit_16(1621);
+emit_16(1686);
+emit_16(1622);
+emit_16(1686);
+emit_16(1621);
+emit_16(1686);
+emit_16(1622);
+emit_16(1687);
+emit_16(1623);
+emit_16(1687);
+emit_16(1622);
+emit_16(1687);
+emit_16(1623);
+emit_16(1688);
+emit_16(1624);
+emit_16(1688);
+emit_16(1623);
+emit_16(1688);
+emit_16(1624);
+emit_16(1689);
+emit_16(1625);
+emit_16(1689);
+emit_16(1624);
+emit_16(1689);
+emit_16(1625);
+emit_16(1690);
+emit_16(1626);
+emit_16(1690);
+emit_16(1625);
+emit_16(1690);
+emit_16(1626);
+emit_16(1691);
+emit_16(1627);
+emit_16(1691);
+emit_16(1626);
+emit_16(1691);
+emit_16(1627);
+emit_16(1692);
+emit_16(1628);
+emit_16(1692);
+emit_16(1627);
+emit_16(1692);
+emit_16(1628);
+emit_16(1693);
+emit_16(1629);
+emit_16(1693);
+emit_16(1628);
+emit_16(1693);
+emit_16(1629);
+emit_16(1694);
+emit_16(1630);
+emit_16(1694);
+emit_16(1629);
+emit_16(1694);
+emit_16(1630);
+emit_16(1695);
+emit_16(1631);
+emit_16(1695);
+emit_16(1630);
+emit_16(1695);
+emit_16(1631);
+emit_16(1696);
+emit_16(1632);
+emit_16(1696);
+emit_16(1631);
+emit_16(1696);
+emit_16(1632);
+emit_16(1697);
+emit_16(1633);
+emit_16(1697);
+emit_16(1632);
+emit_16(1697);
+emit_16(1633);
+emit_16(1698);
+emit_16(1634);
+emit_16(1698);
+emit_16(1633);
+emit_16(1698);
+emit_16(1634);
+emit_16(1699);
+emit_16(1635);
+emit_16(1699);
+emit_16(1634);
+emit_16(1699);
+emit_16(1635);
+emit_16(1700);
+emit_16(1636);
+emit_16(1700);
+emit_16(1635);
+emit_16(1700);
+emit_16(1636);
+emit_16(1701);
+emit_16(1637);
+emit_16(1701);
+emit_16(1636);
+emit_16(1701);
+emit_16(1637);
+emit_16(1702);
+emit_16(1638);
+emit_16(1702);
+emit_16(1637);
+emit_16(1702);
+emit_16(1638);
+emit_16(1703);
+emit_16(1639);
+emit_16(1703);
+emit_16(1638);
+emit_16(1703);
+emit_16(1639);
+emit_16(1704);
+emit_16(1640);
+emit_16(1704);
+emit_16(1639);
+emit_16(1704);
+emit_16(1640);
+emit_16(1705);
+emit_16(1641);
+emit_16(1705);
+emit_16(1640);
+emit_16(1705);
+emit_16(1641);
+emit_16(1706);
+emit_16(1642);
+emit_16(1706);
+emit_16(1641);
+emit_16(1706);
+emit_16(1642);
+emit_16(1707);
+emit_16(1643);
+emit_16(1707);
+emit_16(1642);
+emit_16(1707);
+emit_16(1643);
+emit_16(1708);
+emit_16(1644);
+emit_16(1708);
+emit_16(1643);
+emit_16(1708);
+emit_16(1644);
+emit_16(1709);
+emit_16(1645);
+emit_16(1709);
+emit_16(1644);
+emit_16(1709);
+emit_16(1645);
+emit_16(1710);
+emit_16(1646);
+emit_16(1710);
+emit_16(1645);
+emit_16(1710);
+emit_16(1646);
+emit_16(1711);
+emit_16(1647);
+emit_16(1711);
+emit_16(1646);
+emit_16(1711);
+emit_16(1647);
+emit_16(1712);
+emit_16(1648);
+emit_16(1712);
+emit_16(1647);
+emit_16(1712);
+emit_16(1648);
+emit_16(1713);
+emit_16(1649);
+emit_16(1713);
+emit_16(1648);
+emit_16(1713);
+emit_16(1649);
+emit_16(1714);
+emit_16(1650);
+emit_16(1714);
+emit_16(1649);
+emit_16(1714);
+emit_16(1650);
+emit_16(1715);
+emit_16(1651);
+emit_16(1715);
+emit_16(1650);
+emit_16(1715);
+emit_16(1651);
+emit_16(1716);
+emit_16(1652);
+emit_16(1716);
+emit_16(1651);
+emit_16(1716);
+emit_16(1652);
+emit_16(1717);
+emit_16(1653);
+emit_16(1717);
+emit_16(1652);
+emit_16(1717);
+emit_16(1653);
+emit_16(1718);
+emit_16(1654);
+emit_16(1718);
+emit_16(1653);
+emit_16(1718);
+emit_16(1654);
+emit_16(1719);
+emit_16(1655);
+emit_16(1719);
+emit_16(1654);
+emit_16(1719);
+emit_16(1655);
+emit_16(1720);
+emit_16(1656);
+emit_16(1720);
+emit_16(1655);
+emit_16(1720);
+emit_16(1656);
+emit_16(1721);
+emit_16(1657);
+emit_16(1721);
+emit_16(1656);
+emit_16(1721);
+emit_16(1657);
+emit_16(1722);
+emit_16(1658);
+emit_16(1722);
+emit_16(1657);
+emit_16(1722);
+emit_16(1658);
+emit_16(1723);
+emit_16(1659);
+emit_16(1723);
+emit_16(1658);
+emit_16(1723);
+emit_16(1659);
+emit_16(1724);
+emit_16(1660);
+emit_16(1724);
+emit_16(1659);
+emit_16(1724);
+emit_16(1660);
+emit_16(1725);
+emit_16(1661);
+emit_16(1725);
+emit_16(1660);
+emit_16(1725);
+emit_16(1661);
+emit_16(1726);
+emit_16(1662);
+emit_16(1726);
+emit_16(1661);
+emit_16(1726);
+emit_16(1662);
+emit_16(1727);
+emit_16(1663);
+emit_16(1727);
+emit_16(1662);
+emit_16(1728);
+emit_16(1664);
+emit_16(1729);
+emit_16(1665);
+emit_16(1729);
+emit_16(1664);
+emit_16(1729);
+emit_16(1665);
+emit_16(1730);
+emit_16(1666);
+emit_16(1730);
+emit_16(1665);
+emit_16(1730);
+emit_16(1666);
+emit_16(1731);
+emit_16(1667);
+emit_16(1731);
+emit_16(1666);
+emit_16(1731);
+emit_16(1667);
+emit_16(1732);
+emit_16(1668);
+emit_16(1732);
+emit_16(1667);
+emit_16(1732);
+emit_16(1668);
+emit_16(1733);
+emit_16(1669);
+emit_16(1733);
+emit_16(1668);
+emit_16(1733);
+emit_16(1669);
+emit_16(1734);
+emit_16(1670);
+emit_16(1734);
+emit_16(1669);
+emit_16(1734);
+emit_16(1670);
+emit_16(1735);
+emit_16(1671);
+emit_16(1735);
+emit_16(1670);
+emit_16(1735);
+emit_16(1671);
+emit_16(1736);
+emit_16(1672);
+emit_16(1736);
+emit_16(1671);
+emit_16(1736);
+emit_16(1672);
+emit_16(1737);
+emit_16(1673);
+emit_16(1737);
+emit_16(1672);
+emit_16(1737);
+emit_16(1673);
+emit_16(1738);
+emit_16(1674);
+emit_16(1738);
+emit_16(1673);
+emit_16(1738);
+emit_16(1674);
+emit_16(1739);
+emit_16(1675);
+emit_16(1739);
+emit_16(1674);
+emit_16(1739);
+emit_16(1675);
+emit_16(1740);
+emit_16(1676);
+emit_16(1740);
+emit_16(1675);
+emit_16(1740);
+emit_16(1676);
+emit_16(1741);
+emit_16(1677);
+emit_16(1741);
+emit_16(1676);
+emit_16(1741);
+emit_16(1677);
+emit_16(1742);
+emit_16(1678);
+emit_16(1742);
+emit_16(1677);
+emit_16(1742);
+emit_16(1678);
+emit_16(1743);
+emit_16(1679);
+emit_16(1743);
+emit_16(1678);
+emit_16(1743);
+emit_16(1679);
+emit_16(1744);
+emit_16(1680);
+emit_16(1744);
+emit_16(1679);
+emit_16(1744);
+emit_16(1680);
+emit_16(1745);
+emit_16(1681);
+emit_16(1745);
+emit_16(1680);
+emit_16(1745);
+emit_16(1681);
+emit_16(1746);
+emit_16(1682);
+emit_16(1746);
+emit_16(1681);
+emit_16(1746);
+emit_16(1682);
+emit_16(1747);
+emit_16(1683);
+emit_16(1747);
+emit_16(1682);
+emit_16(1747);
+emit_16(1683);
+emit_16(1748);
+emit_16(1684);
+emit_16(1748);
+emit_16(1683);
+emit_16(1748);
+emit_16(1684);
+emit_16(1749);
+emit_16(1685);
+emit_16(1749);
+emit_16(1684);
+emit_16(1749);
+emit_16(1685);
+emit_16(1750);
+emit_16(1686);
+emit_16(1750);
+emit_16(1685);
+emit_16(1750);
+emit_16(1686);
+emit_16(1751);
+emit_16(1687);
+emit_16(1751);
+emit_16(1686);
+emit_16(1751);
+emit_16(1687);
+emit_16(1752);
+emit_16(1688);
+emit_16(1752);
+emit_16(1687);
+emit_16(1752);
+emit_16(1688);
+emit_16(1753);
+emit_16(1689);
+emit_16(1753);
+emit_16(1688);
+emit_16(1753);
+emit_16(1689);
+emit_16(1754);
+emit_16(1690);
+emit_16(1754);
+emit_16(1689);
+emit_16(1754);
+emit_16(1690);
+emit_16(1755);
+emit_16(1691);
+emit_16(1755);
+emit_16(1690);
+emit_16(1755);
+emit_16(1691);
+emit_16(1756);
+emit_16(1692);
+emit_16(1756);
+emit_16(1691);
+emit_16(1756);
+emit_16(1692);
+emit_16(1757);
+emit_16(1693);
+emit_16(1757);
+emit_16(1692);
+emit_16(1757);
+emit_16(1693);
+emit_16(1758);
+emit_16(1694);
+emit_16(1758);
+emit_16(1693);
+emit_16(1758);
+emit_16(1694);
+emit_16(1759);
+emit_16(1695);
+emit_16(1759);
+emit_16(1694);
+emit_16(1759);
+emit_16(1695);
+emit_16(1760);
+emit_16(1696);
+emit_16(1760);
+emit_16(1695);
+emit_16(1760);
+emit_16(1696);
+emit_16(1761);
+emit_16(1697);
+emit_16(1761);
+emit_16(1696);
+emit_16(1761);
+emit_16(1697);
+emit_16(1762);
+emit_16(1698);
+emit_16(1762);
+emit_16(1697);
+emit_16(1762);
+emit_16(1698);
+emit_16(1763);
+emit_16(1699);
+emit_16(1763);
+emit_16(1698);
+emit_16(1763);
+emit_16(1699);
+emit_16(1764);
+emit_16(1700);
+emit_16(1764);
+emit_16(1699);
+emit_16(1764);
+emit_16(1700);
+emit_16(1765);
+emit_16(1701);
+emit_16(1765);
+emit_16(1700);
+emit_16(1765);
+emit_16(1701);
+emit_16(1766);
+emit_16(1702);
+emit_16(1766);
+emit_16(1701);
+emit_16(1766);
+emit_16(1702);
+emit_16(1767);
+emit_16(1703);
+emit_16(1767);
+emit_16(1702);
+emit_16(1767);
+emit_16(1703);
+emit_16(1768);
+emit_16(1704);
+emit_16(1768);
+emit_16(1703);
+emit_16(1768);
+emit_16(1704);
+emit_16(1769);
+emit_16(1705);
+emit_16(1769);
+emit_16(1704);
+emit_16(1769);
+emit_16(1705);
+emit_16(1770);
+emit_16(1706);
+emit_16(1770);
+emit_16(1705);
+emit_16(1770);
+emit_16(1706);
+emit_16(1771);
+emit_16(1707);
+emit_16(1771);
+emit_16(1706);
+emit_16(1771);
+emit_16(1707);
+emit_16(1772);
+emit_16(1708);
+emit_16(1772);
+emit_16(1707);
+emit_16(1772);
+emit_16(1708);
+emit_16(1773);
+emit_16(1709);
+emit_16(1773);
+emit_16(1708);
+emit_16(1773);
+emit_16(1709);
+emit_16(1774);
+emit_16(1710);
+emit_16(1774);
+emit_16(1709);
+emit_16(1774);
+emit_16(1710);
+emit_16(1775);
+emit_16(1711);
+emit_16(1775);
+emit_16(1710);
+emit_16(1775);
+emit_16(1711);
+emit_16(1776);
+emit_16(1712);
+emit_16(1776);
+emit_16(1711);
+emit_16(1776);
+emit_16(1712);
+emit_16(1777);
+emit_16(1713);
+emit_16(1777);
+emit_16(1712);
+emit_16(1777);
+emit_16(1713);
+emit_16(1778);
+emit_16(1714);
+emit_16(1778);
+emit_16(1713);
+emit_16(1778);
+emit_16(1714);
+emit_16(1779);
+emit_16(1715);
+emit_16(1779);
+emit_16(1714);
+emit_16(1779);
+emit_16(1715);
+emit_16(1780);
+emit_16(1716);
+emit_16(1780);
+emit_16(1715);
+emit_16(1780);
+emit_16(1716);
+emit_16(1781);
+emit_16(1717);
+emit_16(1781);
+emit_16(1716);
+emit_16(1781);
+emit_16(1717);
+emit_16(1782);
+emit_16(1718);
+emit_16(1782);
+emit_16(1717);
+emit_16(1782);
+emit_16(1718);
+emit_16(1783);
+emit_16(1719);
+emit_16(1783);
+emit_16(1718);
+emit_16(1783);
+emit_16(1719);
+emit_16(1784);
+emit_16(1720);
+emit_16(1784);
+emit_16(1719);
+emit_16(1784);
+emit_16(1720);
+emit_16(1785);
+emit_16(1721);
+emit_16(1785);
+emit_16(1720);
+emit_16(1785);
+emit_16(1721);
+emit_16(1786);
+emit_16(1722);
+emit_16(1786);
+emit_16(1721);
+emit_16(1786);
+emit_16(1722);
+emit_16(1787);
+emit_16(1723);
+emit_16(1787);
+emit_16(1722);
+emit_16(1787);
+emit_16(1723);
+emit_16(1788);
+emit_16(1724);
+emit_16(1788);
+emit_16(1723);
+emit_16(1788);
+emit_16(1724);
+emit_16(1789);
+emit_16(1725);
+emit_16(1789);
+emit_16(1724);
+emit_16(1789);
+emit_16(1725);
+emit_16(1790);
+emit_16(1726);
+emit_16(1790);
+emit_16(1725);
+emit_16(1790);
+emit_16(1726);
+emit_16(1791);
+emit_16(1727);
+emit_16(1791);
+emit_16(1726);
+emit_16(1792);
+emit_16(1728);
+emit_16(1793);
+emit_16(1729);
+emit_16(1793);
+emit_16(1728);
+emit_16(1793);
+emit_16(1729);
+emit_16(1794);
+emit_16(1730);
+emit_16(1794);
+emit_16(1729);
+emit_16(1794);
+emit_16(1730);
+emit_16(1795);
+emit_16(1731);
+emit_16(1795);
+emit_16(1730);
+emit_16(1795);
+emit_16(1731);
+emit_16(1796);
+emit_16(1732);
+emit_16(1796);
+emit_16(1731);
+emit_16(1796);
+emit_16(1732);
+emit_16(1797);
+emit_16(1733);
+emit_16(1797);
+emit_16(1732);
+emit_16(1797);
+emit_16(1733);
+emit_16(1798);
+emit_16(1734);
+emit_16(1798);
+emit_16(1733);
+emit_16(1798);
+emit_16(1734);
+emit_16(1799);
+emit_16(1735);
+emit_16(1799);
+emit_16(1734);
+emit_16(1799);
+emit_16(1735);
+emit_16(1800);
+emit_16(1736);
+emit_16(1800);
+emit_16(1735);
+emit_16(1800);
+emit_16(1736);
+emit_16(1801);
+emit_16(1737);
+emit_16(1801);
+emit_16(1736);
+emit_16(1801);
+emit_16(1737);
+emit_16(1802);
+emit_16(1738);
+emit_16(1802);
+emit_16(1737);
+emit_16(1802);
+emit_16(1738);
+emit_16(1803);
+emit_16(1739);
+emit_16(1803);
+emit_16(1738);
+emit_16(1803);
+emit_16(1739);
+emit_16(1804);
+emit_16(1740);
+emit_16(1804);
+emit_16(1739);
+emit_16(1804);
+emit_16(1740);
+emit_16(1805);
+emit_16(1741);
+emit_16(1805);
+emit_16(1740);
+emit_16(1805);
+emit_16(1741);
+emit_16(1806);
+emit_16(1742);
+emit_16(1806);
+emit_16(1741);
+emit_16(1806);
+emit_16(1742);
+emit_16(1807);
+emit_16(1743);
+emit_16(1807);
+emit_16(1742);
+emit_16(1807);
+emit_16(1743);
+emit_16(1808);
+emit_16(1744);
+emit_16(1808);
+emit_16(1743);
+emit_16(1808);
+emit_16(1744);
+emit_16(1809);
+emit_16(1745);
+emit_16(1809);
+emit_16(1744);
+emit_16(1809);
+emit_16(1745);
+emit_16(1810);
+emit_16(1746);
+emit_16(1810);
+emit_16(1745);
+emit_16(1810);
+emit_16(1746);
+emit_16(1811);
+emit_16(1747);
+emit_16(1811);
+emit_16(1746);
+emit_16(1811);
+emit_16(1747);
+emit_16(1812);
+emit_16(1748);
+emit_16(1812);
+emit_16(1747);
+emit_16(1812);
+emit_16(1748);
+emit_16(1813);
+emit_16(1749);
+emit_16(1813);
+emit_16(1748);
+emit_16(1813);
+emit_16(1749);
+emit_16(1814);
+emit_16(1750);
+emit_16(1814);
+emit_16(1749);
+emit_16(1814);
+emit_16(1750);
+emit_16(1815);
+emit_16(1751);
+emit_16(1815);
+emit_16(1750);
+emit_16(1815);
+emit_16(1751);
+emit_16(1816);
+emit_16(1752);
+emit_16(1816);
+emit_16(1751);
+emit_16(1816);
+emit_16(1752);
+emit_16(1817);
+emit_16(1753);
+emit_16(1817);
+emit_16(1752);
+emit_16(1817);
+emit_16(1753);
+emit_16(1818);
+emit_16(1754);
+emit_16(1818);
+emit_16(1753);
+emit_16(1818);
+emit_16(1754);
+emit_16(1819);
+emit_16(1755);
+emit_16(1819);
+emit_16(1754);
+emit_16(1819);
+emit_16(1755);
+emit_16(1820);
+emit_16(1756);
+emit_16(1820);
+emit_16(1755);
+emit_16(1820);
+emit_16(1756);
+emit_16(1821);
+emit_16(1757);
+emit_16(1821);
+emit_16(1756);
+emit_16(1821);
+emit_16(1757);
+emit_16(1822);
+emit_16(1758);
+emit_16(1822);
+emit_16(1757);
+emit_16(1822);
+emit_16(1758);
+emit_16(1823);
+emit_16(1759);
+emit_16(1823);
+emit_16(1758);
+emit_16(1823);
+emit_16(1759);
+emit_16(1824);
+emit_16(1760);
+emit_16(1824);
+emit_16(1759);
+emit_16(1824);
+emit_16(1760);
+emit_16(1825);
+emit_16(1761);
+emit_16(1825);
+emit_16(1760);
+emit_16(1825);
+emit_16(1761);
+emit_16(1826);
+emit_16(1762);
+emit_16(1826);
+emit_16(1761);
+emit_16(1826);
+emit_16(1762);
+emit_16(1827);
+emit_16(1763);
+emit_16(1827);
+emit_16(1762);
+emit_16(1827);
+emit_16(1763);
+emit_16(1828);
+emit_16(1764);
+emit_16(1828);
+emit_16(1763);
+emit_16(1828);
+emit_16(1764);
+emit_16(1829);
+emit_16(1765);
+emit_16(1829);
+emit_16(1764);
+emit_16(1829);
+emit_16(1765);
+emit_16(1830);
+emit_16(1766);
+emit_16(1830);
+emit_16(1765);
+emit_16(1830);
+emit_16(1766);
+emit_16(1831);
+emit_16(1767);
+emit_16(1831);
+emit_16(1766);
+emit_16(1831);
+emit_16(1767);
+emit_16(1832);
+emit_16(1768);
+emit_16(1832);
+emit_16(1767);
+emit_16(1832);
+emit_16(1768);
+emit_16(1833);
+emit_16(1769);
+emit_16(1833);
+emit_16(1768);
+emit_16(1833);
+emit_16(1769);
+emit_16(1834);
+emit_16(1770);
+emit_16(1834);
+emit_16(1769);
+emit_16(1834);
+emit_16(1770);
+emit_16(1835);
+emit_16(1771);
+emit_16(1835);
+emit_16(1770);
+emit_16(1835);
+emit_16(1771);
+emit_16(1836);
+emit_16(1772);
+emit_16(1836);
+emit_16(1771);
+emit_16(1836);
+emit_16(1772);
+emit_16(1837);
+emit_16(1773);
+emit_16(1837);
+emit_16(1772);
+emit_16(1837);
+emit_16(1773);
+emit_16(1838);
+emit_16(1774);
+emit_16(1838);
+emit_16(1773);
+emit_16(1838);
+emit_16(1774);
+emit_16(1839);
+emit_16(1775);
+emit_16(1839);
+emit_16(1774);
+emit_16(1839);
+emit_16(1775);
+emit_16(1840);
+emit_16(1776);
+emit_16(1840);
+emit_16(1775);
+emit_16(1840);
+emit_16(1776);
+emit_16(1841);
+emit_16(1777);
+emit_16(1841);
+emit_16(1776);
+emit_16(1841);
+emit_16(1777);
+emit_16(1842);
+emit_16(1778);
+emit_16(1842);
+emit_16(1777);
+emit_16(1842);
+emit_16(1778);
+emit_16(1843);
+emit_16(1779);
+emit_16(1843);
+emit_16(1778);
+emit_16(1843);
+emit_16(1779);
+emit_16(1844);
+emit_16(1780);
+emit_16(1844);
+emit_16(1779);
+emit_16(1844);
+emit_16(1780);
+emit_16(1845);
+emit_16(1781);
+emit_16(1845);
+emit_16(1780);
+emit_16(1845);
+emit_16(1781);
+emit_16(1846);
+emit_16(1782);
+emit_16(1846);
+emit_16(1781);
+emit_16(1846);
+emit_16(1782);
+emit_16(1847);
+emit_16(1783);
+emit_16(1847);
+emit_16(1782);
+emit_16(1847);
+emit_16(1783);
+emit_16(1848);
+emit_16(1784);
+emit_16(1848);
+emit_16(1783);
+emit_16(1848);
+emit_16(1784);
+emit_16(1849);
+emit_16(1785);
+emit_16(1849);
+emit_16(1784);
+emit_16(1849);
+emit_16(1785);
+emit_16(1850);
+emit_16(1786);
+emit_16(1850);
+emit_16(1785);
+emit_16(1850);
+emit_16(1786);
+emit_16(1851);
+emit_16(1787);
+emit_16(1851);
+emit_16(1786);
+emit_16(1851);
+emit_16(1787);
+emit_16(1852);
+emit_16(1788);
+emit_16(1852);
+emit_16(1787);
+emit_16(1852);
+emit_16(1788);
+emit_16(1853);
+emit_16(1789);
+emit_16(1853);
+emit_16(1788);
+emit_16(1853);
+emit_16(1789);
+emit_16(1854);
+emit_16(1790);
+emit_16(1854);
+emit_16(1789);
+emit_16(1854);
+emit_16(1790);
+emit_16(1855);
+emit_16(1791);
+emit_16(1855);
+emit_16(1790);
+emit_16(1856);
+emit_16(1792);
+emit_16(1857);
+emit_16(1793);
+emit_16(1857);
+emit_16(1792);
+emit_16(1857);
+emit_16(1793);
+emit_16(1858);
+emit_16(1794);
+emit_16(1858);
+emit_16(1793);
+emit_16(1858);
+emit_16(1794);
+emit_16(1859);
+emit_16(1795);
+emit_16(1859);
+emit_16(1794);
+emit_16(1859);
+emit_16(1795);
+emit_16(1860);
+emit_16(1796);
+emit_16(1860);
+emit_16(1795);
+emit_16(1860);
+emit_16(1796);
+emit_16(1861);
+emit_16(1797);
+emit_16(1861);
+emit_16(1796);
+emit_16(1861);
+emit_16(1797);
+emit_16(1862);
+emit_16(1798);
+emit_16(1862);
+emit_16(1797);
+emit_16(1862);
+emit_16(1798);
+emit_16(1863);
+emit_16(1799);
+emit_16(1863);
+emit_16(1798);
+emit_16(1863);
+emit_16(1799);
+emit_16(1864);
+emit_16(1800);
+emit_16(1864);
+emit_16(1799);
+emit_16(1864);
+emit_16(1800);
+emit_16(1865);
+emit_16(1801);
+emit_16(1865);
+emit_16(1800);
+emit_16(1865);
+emit_16(1801);
+emit_16(1866);
+emit_16(1802);
+emit_16(1866);
+emit_16(1801);
+emit_16(1866);
+emit_16(1802);
+emit_16(1867);
+emit_16(1803);
+emit_16(1867);
+emit_16(1802);
+emit_16(1867);
+emit_16(1803);
+emit_16(1868);
+emit_16(1804);
+emit_16(1868);
+emit_16(1803);
+emit_16(1868);
+emit_16(1804);
+emit_16(1869);
+emit_16(1805);
+emit_16(1869);
+emit_16(1804);
+emit_16(1869);
+emit_16(1805);
+emit_16(1870);
+emit_16(1806);
+emit_16(1870);
+emit_16(1805);
+emit_16(1870);
+emit_16(1806);
+emit_16(1871);
+emit_16(1807);
+emit_16(1871);
+emit_16(1806);
+emit_16(1871);
+emit_16(1807);
+emit_16(1872);
+emit_16(1808);
+emit_16(1872);
+emit_16(1807);
+emit_16(1872);
+emit_16(1808);
+emit_16(1873);
+emit_16(1809);
+emit_16(1873);
+emit_16(1808);
+emit_16(1873);
+emit_16(1809);
+emit_16(1874);
+emit_16(1810);
+emit_16(1874);
+emit_16(1809);
+emit_16(1874);
+emit_16(1810);
+emit_16(1875);
+emit_16(1811);
+emit_16(1875);
+emit_16(1810);
+emit_16(1875);
+emit_16(1811);
+emit_16(1876);
+emit_16(1812);
+emit_16(1876);
+emit_16(1811);
+emit_16(1876);
+emit_16(1812);
+emit_16(1877);
+emit_16(1813);
+emit_16(1877);
+emit_16(1812);
+emit_16(1877);
+emit_16(1813);
+emit_16(1878);
+emit_16(1814);
+emit_16(1878);
+emit_16(1813);
+emit_16(1878);
+emit_16(1814);
+emit_16(1879);
+emit_16(1815);
+emit_16(1879);
+emit_16(1814);
+emit_16(1879);
+emit_16(1815);
+emit_16(1880);
+emit_16(1816);
+emit_16(1880);
+emit_16(1815);
+emit_16(1880);
+emit_16(1816);
+emit_16(1881);
+emit_16(1817);
+emit_16(1881);
+emit_16(1816);
+emit_16(1881);
+emit_16(1817);
+emit_16(1882);
+emit_16(1818);
+emit_16(1882);
+emit_16(1817);
+emit_16(1882);
+emit_16(1818);
+emit_16(1883);
+emit_16(1819);
+emit_16(1883);
+emit_16(1818);
+emit_16(1883);
+emit_16(1819);
+emit_16(1884);
+emit_16(1820);
+emit_16(1884);
+emit_16(1819);
+emit_16(1884);
+emit_16(1820);
+emit_16(1885);
+emit_16(1821);
+emit_16(1885);
+emit_16(1820);
+emit_16(1885);
+emit_16(1821);
+emit_16(1886);
+emit_16(1822);
+emit_16(1886);
+emit_16(1821);
+emit_16(1886);
+emit_16(1822);
+emit_16(1887);
+emit_16(1823);
+emit_16(1887);
+emit_16(1822);
+emit_16(1887);
+emit_16(1823);
+emit_16(1888);
+emit_16(1824);
+emit_16(1888);
+emit_16(1823);
+emit_16(1888);
+emit_16(1824);
+emit_16(1889);
+emit_16(1825);
+emit_16(1889);
+emit_16(1824);
+emit_16(1889);
+emit_16(1825);
+emit_16(1890);
+emit_16(1826);
+emit_16(1890);
+emit_16(1825);
+emit_16(1890);
+emit_16(1826);
+emit_16(1891);
+emit_16(1827);
+emit_16(1891);
+emit_16(1826);
+emit_16(1891);
+emit_16(1827);
+emit_16(1892);
+emit_16(1828);
+emit_16(1892);
+emit_16(1827);
+emit_16(1892);
+emit_16(1828);
+emit_16(1893);
+emit_16(1829);
+emit_16(1893);
+emit_16(1828);
+emit_16(1893);
+emit_16(1829);
+emit_16(1894);
+emit_16(1830);
+emit_16(1894);
+emit_16(1829);
+emit_16(1894);
+emit_16(1830);
+emit_16(1895);
+emit_16(1831);
+emit_16(1895);
+emit_16(1830);
+emit_16(1895);
+emit_16(1831);
+emit_16(1896);
+emit_16(1832);
+emit_16(1896);
+emit_16(1831);
+emit_16(1896);
+emit_16(1832);
+emit_16(1897);
+emit_16(1833);
+emit_16(1897);
+emit_16(1832);
+emit_16(1897);
+emit_16(1833);
+emit_16(1898);
+emit_16(1834);
+emit_16(1898);
+emit_16(1833);
+emit_16(1898);
+emit_16(1834);
+emit_16(1899);
+emit_16(1835);
+emit_16(1899);
+emit_16(1834);
+emit_16(1899);
+emit_16(1835);
+emit_16(1900);
+emit_16(1836);
+emit_16(1900);
+emit_16(1835);
+emit_16(1900);
+emit_16(1836);
+emit_16(1901);
+emit_16(1837);
+emit_16(1901);
+emit_16(1836);
+emit_16(1901);
+emit_16(1837);
+emit_16(1902);
+emit_16(1838);
+emit_16(1902);
+emit_16(1837);
+emit_16(1902);
+emit_16(1838);
+emit_16(1903);
+emit_16(1839);
+emit_16(1903);
+emit_16(1838);
+emit_16(1903);
+emit_16(1839);
+emit_16(1904);
+emit_16(1840);
+emit_16(1904);
+emit_16(1839);
+emit_16(1904);
+emit_16(1840);
+emit_16(1905);
+emit_16(1841);
+emit_16(1905);
+emit_16(1840);
+emit_16(1905);
+emit_16(1841);
+emit_16(1906);
+emit_16(1842);
+emit_16(1906);
+emit_16(1841);
+emit_16(1906);
+emit_16(1842);
+emit_16(1907);
+emit_16(1843);
+emit_16(1907);
+emit_16(1842);
+emit_16(1907);
+emit_16(1843);
+emit_16(1908);
+emit_16(1844);
+emit_16(1908);
+emit_16(1843);
+emit_16(1908);
+emit_16(1844);
+emit_16(1909);
+emit_16(1845);
+emit_16(1909);
+emit_16(1844);
+emit_16(1909);
+emit_16(1845);
+emit_16(1910);
+emit_16(1846);
+emit_16(1910);
+emit_16(1845);
+emit_16(1910);
+emit_16(1846);
+emit_16(1911);
+emit_16(1847);
+emit_16(1911);
+emit_16(1846);
+emit_16(1911);
+emit_16(1847);
+emit_16(1912);
+emit_16(1848);
+emit_16(1912);
+emit_16(1847);
+emit_16(1912);
+emit_16(1848);
+emit_16(1913);
+emit_16(1849);
+emit_16(1913);
+emit_16(1848);
+emit_16(1913);
+emit_16(1849);
+emit_16(1914);
+emit_16(1850);
+emit_16(1914);
+emit_16(1849);
+emit_16(1914);
+emit_16(1850);
+emit_16(1915);
+emit_16(1851);
+emit_16(1915);
+emit_16(1850);
+emit_16(1915);
+emit_16(1851);
+emit_16(1916);
+emit_16(1852);
+emit_16(1916);
+emit_16(1851);
+emit_16(1916);
+emit_16(1852);
+emit_16(1917);
+emit_16(1853);
+emit_16(1917);
+emit_16(1852);
+emit_16(1917);
+emit_16(1853);
+emit_16(1918);
+emit_16(1854);
+emit_16(1918);
+emit_16(1853);
+emit_16(1918);
+emit_16(1854);
+emit_16(1919);
+emit_16(1855);
+emit_16(1919);
+emit_16(1854);
+emit_16(1920);
+emit_16(1856);
+emit_16(1921);
+emit_16(1857);
+emit_16(1921);
+emit_16(1856);
+emit_16(1921);
+emit_16(1857);
+emit_16(1922);
+emit_16(1858);
+emit_16(1922);
+emit_16(1857);
+emit_16(1922);
+emit_16(1858);
+emit_16(1923);
+emit_16(1859);
+emit_16(1923);
+emit_16(1858);
+emit_16(1923);
+emit_16(1859);
+emit_16(1924);
+emit_16(1860);
+emit_16(1924);
+emit_16(1859);
+emit_16(1924);
+emit_16(1860);
+emit_16(1925);
+emit_16(1861);
+emit_16(1925);
+emit_16(1860);
+emit_16(1925);
+emit_16(1861);
+emit_16(1926);
+emit_16(1862);
+emit_16(1926);
+emit_16(1861);
+emit_16(1926);
+emit_16(1862);
+emit_16(1927);
+emit_16(1863);
+emit_16(1927);
+emit_16(1862);
+emit_16(1927);
+emit_16(1863);
+emit_16(1928);
+emit_16(1864);
+emit_16(1928);
+emit_16(1863);
+emit_16(1928);
+emit_16(1864);
+emit_16(1929);
+emit_16(1865);
+emit_16(1929);
+emit_16(1864);
+emit_16(1929);
+emit_16(1865);
+emit_16(1930);
+emit_16(1866);
+emit_16(1930);
+emit_16(1865);
+emit_16(1930);
+emit_16(1866);
+emit_16(1931);
+emit_16(1867);
+emit_16(1931);
+emit_16(1866);
+emit_16(1931);
+emit_16(1867);
+emit_16(1932);
+emit_16(1868);
+emit_16(1932);
+emit_16(1867);
+emit_16(1932);
+emit_16(1868);
+emit_16(1933);
+emit_16(1869);
+emit_16(1933);
+emit_16(1868);
+emit_16(1933);
+emit_16(1869);
+emit_16(1934);
+emit_16(1870);
+emit_16(1934);
+emit_16(1869);
+emit_16(1934);
+emit_16(1870);
+emit_16(1935);
+emit_16(1871);
+emit_16(1935);
+emit_16(1870);
+emit_16(1935);
+emit_16(1871);
+emit_16(1936);
+emit_16(1872);
+emit_16(1936);
+emit_16(1871);
+emit_16(1936);
+emit_16(1872);
+emit_16(1937);
+emit_16(1873);
+emit_16(1937);
+emit_16(1872);
+emit_16(1937);
+emit_16(1873);
+emit_16(1938);
+emit_16(1874);
+emit_16(1938);
+emit_16(1873);
+emit_16(1938);
+emit_16(1874);
+emit_16(1939);
+emit_16(1875);
+emit_16(1939);
+emit_16(1874);
+emit_16(1939);
+emit_16(1875);
+emit_16(1940);
+emit_16(1876);
+emit_16(1940);
+emit_16(1875);
+emit_16(1940);
+emit_16(1876);
+emit_16(1941);
+emit_16(1877);
+emit_16(1941);
+emit_16(1876);
+emit_16(1941);
+emit_16(1877);
+emit_16(1942);
+emit_16(1878);
+emit_16(1942);
+emit_16(1877);
+emit_16(1942);
+emit_16(1878);
+emit_16(1943);
+emit_16(1879);
+emit_16(1943);
+emit_16(1878);
+emit_16(1943);
+emit_16(1879);
+emit_16(1944);
+emit_16(1880);
+emit_16(1944);
+emit_16(1879);
+emit_16(1944);
+emit_16(1880);
+emit_16(1945);
+emit_16(1881);
+emit_16(1945);
+emit_16(1880);
+emit_16(1945);
+emit_16(1881);
+emit_16(1946);
+emit_16(1882);
+emit_16(1946);
+emit_16(1881);
+emit_16(1946);
+emit_16(1882);
+emit_16(1947);
+emit_16(1883);
+emit_16(1947);
+emit_16(1882);
+emit_16(1947);
+emit_16(1883);
+emit_16(1948);
+emit_16(1884);
+emit_16(1948);
+emit_16(1883);
+emit_16(1948);
+emit_16(1884);
+emit_16(1949);
+emit_16(1885);
+emit_16(1949);
+emit_16(1884);
+emit_16(1949);
+emit_16(1885);
+emit_16(1950);
+emit_16(1886);
+emit_16(1950);
+emit_16(1885);
+emit_16(1950);
+emit_16(1886);
+emit_16(1951);
+emit_16(1887);
+emit_16(1951);
+emit_16(1886);
+emit_16(1951);
+emit_16(1887);
+emit_16(1952);
+emit_16(1888);
+emit_16(1952);
+emit_16(1887);
+emit_16(1952);
+emit_16(1888);
+emit_16(1953);
+emit_16(1889);
+emit_16(1953);
+emit_16(1888);
+emit_16(1953);
+emit_16(1889);
+emit_16(1954);
+emit_16(1890);
+emit_16(1954);
+emit_16(1889);
+emit_16(1954);
+emit_16(1890);
+emit_16(1955);
+emit_16(1891);
+emit_16(1955);
+emit_16(1890);
+emit_16(1955);
+emit_16(1891);
+emit_16(1956);
+emit_16(1892);
+emit_16(1956);
+emit_16(1891);
+emit_16(1956);
+emit_16(1892);
+emit_16(1957);
+emit_16(1893);
+emit_16(1957);
+emit_16(1892);
+emit_16(1957);
+emit_16(1893);
+emit_16(1958);
+emit_16(1894);
+emit_16(1958);
+emit_16(1893);
+emit_16(1958);
+emit_16(1894);
+emit_16(1959);
+emit_16(1895);
+emit_16(1959);
+emit_16(1894);
+emit_16(1959);
+emit_16(1895);
+emit_16(1960);
+emit_16(1896);
+emit_16(1960);
+emit_16(1895);
+emit_16(1960);
+emit_16(1896);
+emit_16(1961);
+emit_16(1897);
+emit_16(1961);
+emit_16(1896);
+emit_16(1961);
+emit_16(1897);
+emit_16(1962);
+emit_16(1898);
+emit_16(1962);
+emit_16(1897);
+emit_16(1962);
+emit_16(1898);
+emit_16(1963);
+emit_16(1899);
+emit_16(1963);
+emit_16(1898);
+emit_16(1963);
+emit_16(1899);
+emit_16(1964);
+emit_16(1900);
+emit_16(1964);
+emit_16(1899);
+emit_16(1964);
+emit_16(1900);
+emit_16(1965);
+emit_16(1901);
+emit_16(1965);
+emit_16(1900);
+emit_16(1965);
+emit_16(1901);
+emit_16(1966);
+emit_16(1902);
+emit_16(1966);
+emit_16(1901);
+emit_16(1966);
+emit_16(1902);
+emit_16(1967);
+emit_16(1903);
+emit_16(1967);
+emit_16(1902);
+emit_16(1967);
+emit_16(1903);
+emit_16(1968);
+emit_16(1904);
+emit_16(1968);
+emit_16(1903);
+emit_16(1968);
+emit_16(1904);
+emit_16(1969);
+emit_16(1905);
+emit_16(1969);
+emit_16(1904);
+emit_16(1969);
+emit_16(1905);
+emit_16(1970);
+emit_16(1906);
+emit_16(1970);
+emit_16(1905);
+emit_16(1970);
+emit_16(1906);
+emit_16(1971);
+emit_16(1907);
+emit_16(1971);
+emit_16(1906);
+emit_16(1971);
+emit_16(1907);
+emit_16(1972);
+emit_16(1908);
+emit_16(1972);
+emit_16(1907);
+emit_16(1972);
+emit_16(1908);
+emit_16(1973);
+emit_16(1909);
+emit_16(1973);
+emit_16(1908);
+emit_16(1973);
+emit_16(1909);
+emit_16(1974);
+emit_16(1910);
+emit_16(1974);
+emit_16(1909);
+emit_16(1974);
+emit_16(1910);
+emit_16(1975);
+emit_16(1911);
+emit_16(1975);
+emit_16(1910);
+emit_16(1975);
+emit_16(1911);
+emit_16(1976);
+emit_16(1912);
+emit_16(1976);
+emit_16(1911);
+emit_16(1976);
+emit_16(1912);
+emit_16(1977);
+emit_16(1913);
+emit_16(1977);
+emit_16(1912);
+emit_16(1977);
+emit_16(1913);
+emit_16(1978);
+emit_16(1914);
+emit_16(1978);
+emit_16(1913);
+emit_16(1978);
+emit_16(1914);
+emit_16(1979);
+emit_16(1915);
+emit_16(1979);
+emit_16(1914);
+emit_16(1979);
+emit_16(1915);
+emit_16(1980);
+emit_16(1916);
+emit_16(1980);
+emit_16(1915);
+emit_16(1980);
+emit_16(1916);
+emit_16(1981);
+emit_16(1917);
+emit_16(1981);
+emit_16(1916);
+emit_16(1981);
+emit_16(1917);
+emit_16(1982);
+emit_16(1918);
+emit_16(1982);
+emit_16(1917);
+emit_16(1982);
+emit_16(1918);
+emit_16(1983);
+emit_16(1919);
+emit_16(1983);
+emit_16(1918);
+emit_16(1984);
+emit_16(1920);
+emit_16(1985);
+emit_16(1921);
+emit_16(1985);
+emit_16(1920);
+emit_16(1985);
+emit_16(1921);
+emit_16(1986);
+emit_16(1922);
+emit_16(1986);
+emit_16(1921);
+emit_16(1986);
+emit_16(1922);
+emit_16(1987);
+emit_16(1923);
+emit_16(1987);
+emit_16(1922);
+emit_16(1987);
+emit_16(1923);
+emit_16(1988);
+emit_16(1924);
+emit_16(1988);
+emit_16(1923);
+emit_16(1988);
+emit_16(1924);
+emit_16(1989);
+emit_16(1925);
+emit_16(1989);
+emit_16(1924);
+emit_16(1989);
+emit_16(1925);
+emit_16(1990);
+emit_16(1926);
+emit_16(1990);
+emit_16(1925);
+emit_16(1990);
+emit_16(1926);
+emit_16(1991);
+emit_16(1927);
+emit_16(1991);
+emit_16(1926);
+emit_16(1991);
+emit_16(1927);
+emit_16(1992);
+emit_16(1928);
+emit_16(1992);
+emit_16(1927);
+emit_16(1992);
+emit_16(1928);
+emit_16(1993);
+emit_16(1929);
+emit_16(1993);
+emit_16(1928);
+emit_16(1993);
+emit_16(1929);
+emit_16(1994);
+emit_16(1930);
+emit_16(1994);
+emit_16(1929);
+emit_16(1994);
+emit_16(1930);
+emit_16(1995);
+emit_16(1931);
+emit_16(1995);
+emit_16(1930);
+emit_16(1995);
+emit_16(1931);
+emit_16(1996);
+emit_16(1932);
+emit_16(1996);
+emit_16(1931);
+emit_16(1996);
+emit_16(1932);
+emit_16(1997);
+emit_16(1933);
+emit_16(1997);
+emit_16(1932);
+emit_16(1997);
+emit_16(1933);
+emit_16(1998);
+emit_16(1934);
+emit_16(1998);
+emit_16(1933);
+emit_16(1998);
+emit_16(1934);
+emit_16(1999);
+emit_16(1935);
+emit_16(1999);
+emit_16(1934);
+emit_16(1999);
+emit_16(1935);
+emit_16(2000);
+emit_16(1936);
+emit_16(2000);
+emit_16(1935);
+emit_16(2000);
+emit_16(1936);
+emit_16(2001);
+emit_16(1937);
+emit_16(2001);
+emit_16(1936);
+emit_16(2001);
+emit_16(1937);
+emit_16(2002);
+emit_16(1938);
+emit_16(2002);
+emit_16(1937);
+emit_16(2002);
+emit_16(1938);
+emit_16(2003);
+emit_16(1939);
+emit_16(2003);
+emit_16(1938);
+emit_16(2003);
+emit_16(1939);
+emit_16(2004);
+emit_16(1940);
+emit_16(2004);
+emit_16(1939);
+emit_16(2004);
+emit_16(1940);
+emit_16(2005);
+emit_16(1941);
+emit_16(2005);
+emit_16(1940);
+emit_16(2005);
+emit_16(1941);
+emit_16(2006);
+emit_16(1942);
+emit_16(2006);
+emit_16(1941);
+emit_16(2006);
+emit_16(1942);
+emit_16(2007);
+emit_16(1943);
+emit_16(2007);
+emit_16(1942);
+emit_16(2007);
+emit_16(1943);
+emit_16(2008);
+emit_16(1944);
+emit_16(2008);
+emit_16(1943);
+emit_16(2008);
+emit_16(1944);
+emit_16(2009);
+emit_16(1945);
+emit_16(2009);
+emit_16(1944);
+emit_16(2009);
+emit_16(1945);
+emit_16(2010);
+emit_16(1946);
+emit_16(2010);
+emit_16(1945);
+emit_16(2010);
+emit_16(1946);
+emit_16(2011);
+emit_16(1947);
+emit_16(2011);
+emit_16(1946);
+emit_16(2011);
+emit_16(1947);
+emit_16(2012);
+emit_16(1948);
+emit_16(2012);
+emit_16(1947);
+emit_16(2012);
+emit_16(1948);
+emit_16(2013);
+emit_16(1949);
+emit_16(2013);
+emit_16(1948);
+emit_16(2013);
+emit_16(1949);
+emit_16(2014);
+emit_16(1950);
+emit_16(2014);
+emit_16(1949);
+emit_16(2014);
+emit_16(1950);
+emit_16(2015);
+emit_16(1951);
+emit_16(2015);
+emit_16(1950);
+emit_16(2015);
+emit_16(1951);
+emit_16(2016);
+emit_16(1952);
+emit_16(2016);
+emit_16(1951);
+emit_16(2016);
+emit_16(1952);
+emit_16(2017);
+emit_16(1953);
+emit_16(2017);
+emit_16(1952);
+emit_16(2017);
+emit_16(1953);
+emit_16(2018);
+emit_16(1954);
+emit_16(2018);
+emit_16(1953);
+emit_16(2018);
+emit_16(1954);
+emit_16(2019);
+emit_16(1955);
+emit_16(2019);
+emit_16(1954);
+emit_16(2019);
+emit_16(1955);
+emit_16(2020);
+emit_16(1956);
+emit_16(2020);
+emit_16(1955);
+emit_16(2020);
+emit_16(1956);
+emit_16(2021);
+emit_16(1957);
+emit_16(2021);
+emit_16(1956);
+emit_16(2021);
+emit_16(1957);
+emit_16(2022);
+emit_16(1958);
+emit_16(2022);
+emit_16(1957);
+emit_16(2022);
+emit_16(1958);
+emit_16(2023);
+emit_16(1959);
+emit_16(2023);
+emit_16(1958);
+emit_16(2023);
+emit_16(1959);
+emit_16(2024);
+emit_16(1960);
+emit_16(2024);
+emit_16(1959);
+emit_16(2024);
+emit_16(1960);
+emit_16(2025);
+emit_16(1961);
+emit_16(2025);
+emit_16(1960);
+emit_16(2025);
+emit_16(1961);
+emit_16(2026);
+emit_16(1962);
+emit_16(2026);
+emit_16(1961);
+emit_16(2026);
+emit_16(1962);
+emit_16(2027);
+emit_16(1963);
+emit_16(2027);
+emit_16(1962);
+emit_16(2027);
+emit_16(1963);
+emit_16(2028);
+emit_16(1964);
+emit_16(2028);
+emit_16(1963);
+emit_16(2028);
+emit_16(1964);
+emit_16(2029);
+emit_16(1965);
+emit_16(2029);
+emit_16(1964);
+emit_16(2029);
+emit_16(1965);
+emit_16(2030);
+emit_16(1966);
+emit_16(2030);
+emit_16(1965);
+emit_16(2030);
+emit_16(1966);
+emit_16(2031);
+emit_16(1967);
+emit_16(2031);
+emit_16(1966);
+emit_16(2031);
+emit_16(1967);
+emit_16(2032);
+emit_16(1968);
+emit_16(2032);
+emit_16(1967);
+emit_16(2032);
+emit_16(1968);
+emit_16(2033);
+emit_16(1969);
+emit_16(2033);
+emit_16(1968);
+emit_16(2033);
+emit_16(1969);
+emit_16(2034);
+emit_16(1970);
+emit_16(2034);
+emit_16(1969);
+emit_16(2034);
+emit_16(1970);
+emit_16(2035);
+emit_16(1971);
+emit_16(2035);
+emit_16(1970);
+emit_16(2035);
+emit_16(1971);
+emit_16(2036);
+emit_16(1972);
+emit_16(2036);
+emit_16(1971);
+emit_16(2036);
+emit_16(1972);
+emit_16(2037);
+emit_16(1973);
+emit_16(2037);
+emit_16(1972);
+emit_16(2037);
+emit_16(1973);
+emit_16(2038);
+emit_16(1974);
+emit_16(2038);
+emit_16(1973);
+emit_16(2038);
+emit_16(1974);
+emit_16(2039);
+emit_16(1975);
+emit_16(2039);
+emit_16(1974);
+emit_16(2039);
+emit_16(1975);
+emit_16(2040);
+emit_16(1976);
+emit_16(2040);
+emit_16(1975);
+emit_16(2040);
+emit_16(1976);
+emit_16(2041);
+emit_16(1977);
+emit_16(2041);
+emit_16(1976);
+emit_16(2041);
+emit_16(1977);
+emit_16(2042);
+emit_16(1978);
+emit_16(2042);
+emit_16(1977);
+emit_16(2042);
+emit_16(1978);
+emit_16(2043);
+emit_16(1979);
+emit_16(2043);
+emit_16(1978);
+emit_16(2043);
+emit_16(1979);
+emit_16(2044);
+emit_16(1980);
+emit_16(2044);
+emit_16(1979);
+emit_16(2044);
+emit_16(1980);
+emit_16(2045);
+emit_16(1981);
+emit_16(2045);
+emit_16(1980);
+emit_16(2045);
+emit_16(1981);
+emit_16(2046);
+emit_16(1982);
+emit_16(2046);
+emit_16(1981);
+emit_16(2046);
+emit_16(1982);
+emit_16(2047);
+emit_16(1983);
+emit_16(2047);
+emit_16(1982);
+emit_start(Landscape02Idx)
+emit_16(0);
+emit_16(1);
+emit_16(2);
+emit_16(3);
+emit_16(2);
+emit_16(1);
+emit_16(2);
+emit_16(3);
+emit_16(4);
+emit_16(5);
+emit_16(4);
+emit_16(3);
+emit_16(4);
+emit_16(5);
+emit_16(6);
+emit_16(7);
+emit_16(6);
+emit_16(5);
+emit_16(6);
+emit_16(7);
+emit_16(8);
+emit_16(9);
+emit_16(8);
+emit_16(7);
+emit_16(8);
+emit_16(9);
+emit_16(10);
+emit_16(11);
+emit_16(10);
+emit_16(9);
+emit_16(10);
+emit_16(11);
+emit_16(12);
+emit_16(13);
+emit_16(12);
+emit_16(11);
+emit_16(12);
+emit_16(13);
+emit_16(14);
+emit_16(15);
+emit_16(14);
+emit_16(13);
+emit_16(14);
+emit_16(15);
+emit_16(16);
+emit_16(17);
+emit_16(16);
+emit_16(15);
+emit_16(16);
+emit_16(17);
+emit_16(18);
+emit_16(19);
+emit_16(18);
+emit_16(17);
+emit_16(18);
+emit_16(19);
+emit_16(20);
+emit_16(21);
+emit_16(20);
+emit_16(19);
+emit_16(20);
+emit_16(21);
+emit_16(22);
+emit_16(23);
+emit_16(22);
+emit_16(21);
+emit_16(22);
+emit_16(23);
+emit_16(24);
+emit_16(25);
+emit_16(24);
+emit_16(23);
+emit_16(24);
+emit_16(25);
+emit_16(26);
+emit_16(27);
+emit_16(26);
+emit_16(25);
+emit_16(26);
+emit_16(27);
+emit_16(28);
+emit_16(29);
+emit_16(28);
+emit_16(27);
+emit_16(28);
+emit_16(29);
+emit_16(30);
+emit_16(31);
+emit_16(30);
+emit_16(29);
+emit_16(30);
+emit_16(31);
+emit_16(32);
+emit_16(33);
+emit_16(32);
+emit_16(31);
+emit_16(32);
+emit_16(33);
+emit_16(34);
+emit_16(35);
+emit_16(34);
+emit_16(33);
+emit_16(34);
+emit_16(35);
+emit_16(36);
+emit_16(37);
+emit_16(36);
+emit_16(35);
+emit_16(36);
+emit_16(37);
+emit_16(38);
+emit_16(39);
+emit_16(38);
+emit_16(37);
+emit_16(38);
+emit_16(39);
+emit_16(40);
+emit_16(41);
+emit_16(40);
+emit_16(39);
+emit_16(40);
+emit_16(41);
+emit_16(42);
+emit_16(43);
+emit_16(42);
+emit_16(41);
+emit_16(42);
+emit_16(43);
+emit_16(44);
+emit_16(45);
+emit_16(44);
+emit_16(43);
+emit_16(44);
+emit_16(45);
+emit_16(46);
+emit_16(47);
+emit_16(46);
+emit_16(45);
+emit_16(46);
+emit_16(47);
+emit_16(48);
+emit_16(49);
+emit_16(48);
+emit_16(47);
+emit_16(48);
+emit_16(49);
+emit_16(50);
+emit_16(51);
+emit_16(50);
+emit_16(49);
+emit_16(50);
+emit_16(51);
+emit_16(52);
+emit_16(53);
+emit_16(52);
+emit_16(51);
+emit_16(52);
+emit_16(53);
+emit_16(54);
+emit_16(55);
+emit_16(54);
+emit_16(53);
+emit_16(54);
+emit_16(55);
+emit_16(56);
+emit_16(57);
+emit_16(56);
+emit_16(55);
+emit_16(56);
+emit_16(57);
+emit_16(58);
+emit_16(59);
+emit_16(58);
+emit_16(57);
+emit_16(58);
+emit_16(59);
+emit_16(60);
+emit_16(61);
+emit_16(60);
+emit_16(59);
+emit_16(60);
+emit_16(61);
+emit_16(62);
+emit_16(63);
+emit_16(62);
+emit_16(61);
+emit_16(62);
+emit_16(63);
+emit_16(64);
+emit_16(65);
+emit_16(64);
+emit_16(63);
+emit_16(64);
+emit_16(65);
+emit_16(66);
+emit_16(67);
+emit_16(66);
+emit_16(65);
+emit_16(66);
+emit_16(67);
+emit_16(68);
+emit_16(69);
+emit_16(68);
+emit_16(67);
+emit_16(68);
+emit_16(69);
+emit_16(70);
+emit_16(71);
+emit_16(70);
+emit_16(69);
+emit_16(70);
+emit_16(71);
+emit_16(72);
+emit_16(73);
+emit_16(72);
+emit_16(71);
+emit_16(72);
+emit_16(73);
+emit_16(74);
+emit_16(75);
+emit_16(74);
+emit_16(73);
+emit_16(74);
+emit_16(75);
+emit_16(76);
+emit_16(77);
+emit_16(76);
+emit_16(75);
+emit_16(76);
+emit_16(77);
+emit_16(78);
+emit_16(79);
+emit_16(78);
+emit_16(77);
+emit_16(78);
+emit_16(79);
+emit_16(80);
+emit_16(81);
+emit_16(80);
+emit_16(79);
+emit_16(80);
+emit_16(81);
+emit_16(82);
+emit_16(83);
+emit_16(82);
+emit_16(81);
+emit_16(82);
+emit_16(83);
+emit_16(84);
+emit_16(85);
+emit_16(84);
+emit_16(83);
+emit_16(84);
+emit_16(85);
+emit_16(86);
+emit_16(87);
+emit_16(86);
+emit_16(85);
+emit_16(86);
+emit_16(87);
+emit_16(88);
+emit_16(89);
+emit_16(88);
+emit_16(87);
+emit_16(88);
+emit_16(89);
+emit_16(90);
+emit_16(91);
+emit_16(90);
+emit_16(89);
+emit_16(90);
+emit_16(91);
+emit_16(92);
+emit_16(93);
+emit_16(92);
+emit_16(91);
+emit_16(92);
+emit_16(93);
+emit_16(94);
+emit_16(95);
+emit_16(94);
+emit_16(93);
+emit_16(94);
+emit_16(95);
+emit_16(96);
+emit_16(97);
+emit_16(96);
+emit_16(95);
+emit_16(96);
+emit_16(97);
+emit_16(98);
+emit_16(99);
+emit_16(98);
+emit_16(97);
+emit_16(98);
+emit_16(99);
+emit_16(100);
+emit_16(101);
+emit_16(100);
+emit_16(99);
+emit_16(100);
+emit_16(101);
+emit_16(102);
+emit_16(103);
+emit_16(102);
+emit_16(101);
+emit_16(102);
+emit_16(103);
+emit_16(104);
+emit_16(105);
+emit_16(104);
+emit_16(103);
+emit_16(104);
+emit_16(105);
+emit_16(106);
+emit_16(107);
+emit_16(106);
+emit_16(105);
+emit_16(106);
+emit_16(107);
+emit_16(108);
+emit_16(109);
+emit_16(108);
+emit_16(107);
+emit_16(108);
+emit_16(109);
+emit_16(110);
+emit_16(111);
+emit_16(110);
+emit_16(109);
+emit_16(110);
+emit_16(111);
+emit_16(112);
+emit_16(113);
+emit_16(112);
+emit_16(111);
+emit_16(112);
+emit_16(113);
+emit_16(114);
+emit_16(115);
+emit_16(114);
+emit_16(113);
+emit_16(114);
+emit_16(115);
+emit_16(116);
+emit_16(117);
+emit_16(116);
+emit_16(115);
+emit_16(116);
+emit_16(117);
+emit_16(118);
+emit_16(119);
+emit_16(118);
+emit_16(117);
+emit_16(118);
+emit_16(119);
+emit_16(120);
+emit_16(121);
+emit_16(120);
+emit_16(119);
+emit_16(120);
+emit_16(121);
+emit_16(122);
+emit_16(123);
+emit_16(122);
+emit_16(121);
+emit_16(122);
+emit_16(123);
+emit_16(124);
+emit_16(125);
+emit_16(124);
+emit_16(123);
+emit_16(124);
+emit_16(125);
+emit_16(126);
+emit_16(127);
+emit_16(126);
+emit_16(125);
+emit_16(126);
+emit_16(127);
+emit_16(128);
+emit_16(129);
+emit_16(128);
+emit_16(127);
+emit_16(128);
+emit_16(129);
+emit_16(130);
+emit_16(131);
+emit_16(130);
+emit_16(129);
+emit_16(132);
+emit_16(0);
+emit_16(133);
+emit_16(2);
+emit_16(133);
+emit_16(0);
+emit_16(133);
+emit_16(2);
+emit_16(134);
+emit_16(4);
+emit_16(134);
+emit_16(2);
+emit_16(134);
+emit_16(4);
+emit_16(135);
+emit_16(6);
+emit_16(135);
+emit_16(4);
+emit_16(135);
+emit_16(6);
+emit_16(136);
+emit_16(8);
+emit_16(136);
+emit_16(6);
+emit_16(136);
+emit_16(8);
+emit_16(137);
+emit_16(10);
+emit_16(137);
+emit_16(8);
+emit_16(137);
+emit_16(10);
+emit_16(138);
+emit_16(12);
+emit_16(138);
+emit_16(10);
+emit_16(138);
+emit_16(12);
+emit_16(139);
+emit_16(14);
+emit_16(139);
+emit_16(12);
+emit_16(139);
+emit_16(14);
+emit_16(140);
+emit_16(16);
+emit_16(140);
+emit_16(14);
+emit_16(140);
+emit_16(16);
+emit_16(141);
+emit_16(18);
+emit_16(141);
+emit_16(16);
+emit_16(141);
+emit_16(18);
+emit_16(142);
+emit_16(20);
+emit_16(142);
+emit_16(18);
+emit_16(142);
+emit_16(20);
+emit_16(143);
+emit_16(22);
+emit_16(143);
+emit_16(20);
+emit_16(143);
+emit_16(22);
+emit_16(144);
+emit_16(24);
+emit_16(144);
+emit_16(22);
+emit_16(144);
+emit_16(24);
+emit_16(145);
+emit_16(26);
+emit_16(145);
+emit_16(24);
+emit_16(145);
+emit_16(26);
+emit_16(146);
+emit_16(28);
+emit_16(146);
+emit_16(26);
+emit_16(146);
+emit_16(28);
+emit_16(147);
+emit_16(30);
+emit_16(147);
+emit_16(28);
+emit_16(147);
+emit_16(30);
+emit_16(148);
+emit_16(32);
+emit_16(148);
+emit_16(30);
+emit_16(148);
+emit_16(32);
+emit_16(149);
+emit_16(34);
+emit_16(149);
+emit_16(32);
+emit_16(149);
+emit_16(34);
+emit_16(150);
+emit_16(36);
+emit_16(150);
+emit_16(34);
+emit_16(150);
+emit_16(36);
+emit_16(151);
+emit_16(38);
+emit_16(151);
+emit_16(36);
+emit_16(151);
+emit_16(38);
+emit_16(152);
+emit_16(40);
+emit_16(152);
+emit_16(38);
+emit_16(152);
+emit_16(40);
+emit_16(153);
+emit_16(42);
+emit_16(153);
+emit_16(40);
+emit_16(153);
+emit_16(42);
+emit_16(154);
+emit_16(44);
+emit_16(154);
+emit_16(42);
+emit_16(154);
+emit_16(44);
+emit_16(155);
+emit_16(46);
+emit_16(155);
+emit_16(44);
+emit_16(155);
+emit_16(46);
+emit_16(156);
+emit_16(48);
+emit_16(156);
+emit_16(46);
+emit_16(156);
+emit_16(48);
+emit_16(157);
+emit_16(50);
+emit_16(157);
+emit_16(48);
+emit_16(157);
+emit_16(50);
+emit_16(158);
+emit_16(52);
+emit_16(158);
+emit_16(50);
+emit_16(158);
+emit_16(52);
+emit_16(159);
+emit_16(54);
+emit_16(159);
+emit_16(52);
+emit_16(159);
+emit_16(54);
+emit_16(160);
+emit_16(56);
+emit_16(160);
+emit_16(54);
+emit_16(160);
+emit_16(56);
+emit_16(161);
+emit_16(58);
+emit_16(161);
+emit_16(56);
+emit_16(161);
+emit_16(58);
+emit_16(162);
+emit_16(60);
+emit_16(162);
+emit_16(58);
+emit_16(162);
+emit_16(60);
+emit_16(163);
+emit_16(62);
+emit_16(163);
+emit_16(60);
+emit_16(163);
+emit_16(62);
+emit_16(164);
+emit_16(64);
+emit_16(164);
+emit_16(62);
+emit_16(164);
+emit_16(64);
+emit_16(165);
+emit_16(66);
+emit_16(165);
+emit_16(64);
+emit_16(165);
+emit_16(66);
+emit_16(166);
+emit_16(68);
+emit_16(166);
+emit_16(66);
+emit_16(166);
+emit_16(68);
+emit_16(167);
+emit_16(70);
+emit_16(167);
+emit_16(68);
+emit_16(167);
+emit_16(70);
+emit_16(168);
+emit_16(72);
+emit_16(168);
+emit_16(70);
+emit_16(168);
+emit_16(72);
+emit_16(169);
+emit_16(74);
+emit_16(169);
+emit_16(72);
+emit_16(169);
+emit_16(74);
+emit_16(170);
+emit_16(76);
+emit_16(170);
+emit_16(74);
+emit_16(170);
+emit_16(76);
+emit_16(171);
+emit_16(78);
+emit_16(171);
+emit_16(76);
+emit_16(171);
+emit_16(78);
+emit_16(172);
+emit_16(80);
+emit_16(172);
+emit_16(78);
+emit_16(172);
+emit_16(80);
+emit_16(173);
+emit_16(82);
+emit_16(173);
+emit_16(80);
+emit_16(173);
+emit_16(82);
+emit_16(174);
+emit_16(84);
+emit_16(174);
+emit_16(82);
+emit_16(174);
+emit_16(84);
+emit_16(175);
+emit_16(86);
+emit_16(175);
+emit_16(84);
+emit_16(175);
+emit_16(86);
+emit_16(176);
+emit_16(88);
+emit_16(176);
+emit_16(86);
+emit_16(176);
+emit_16(88);
+emit_16(177);
+emit_16(90);
+emit_16(177);
+emit_16(88);
+emit_16(177);
+emit_16(90);
+emit_16(178);
+emit_16(92);
+emit_16(178);
+emit_16(90);
+emit_16(178);
+emit_16(92);
+emit_16(179);
+emit_16(94);
+emit_16(179);
+emit_16(92);
+emit_16(179);
+emit_16(94);
+emit_16(180);
+emit_16(96);
+emit_16(180);
+emit_16(94);
+emit_16(180);
+emit_16(96);
+emit_16(181);
+emit_16(98);
+emit_16(181);
+emit_16(96);
+emit_16(181);
+emit_16(98);
+emit_16(182);
+emit_16(100);
+emit_16(182);
+emit_16(98);
+emit_16(182);
+emit_16(100);
+emit_16(183);
+emit_16(102);
+emit_16(183);
+emit_16(100);
+emit_16(183);
+emit_16(102);
+emit_16(184);
+emit_16(104);
+emit_16(184);
+emit_16(102);
+emit_16(184);
+emit_16(104);
+emit_16(185);
+emit_16(106);
+emit_16(185);
+emit_16(104);
+emit_16(185);
+emit_16(106);
+emit_16(186);
+emit_16(108);
+emit_16(186);
+emit_16(106);
+emit_16(186);
+emit_16(108);
+emit_16(187);
+emit_16(110);
+emit_16(187);
+emit_16(108);
+emit_16(187);
+emit_16(110);
+emit_16(188);
+emit_16(112);
+emit_16(188);
+emit_16(110);
+emit_16(188);
+emit_16(112);
+emit_16(189);
+emit_16(114);
+emit_16(189);
+emit_16(112);
+emit_16(189);
+emit_16(114);
+emit_16(190);
+emit_16(116);
+emit_16(190);
+emit_16(114);
+emit_16(190);
+emit_16(116);
+emit_16(191);
+emit_16(118);
+emit_16(191);
+emit_16(116);
+emit_16(191);
+emit_16(118);
+emit_16(192);
+emit_16(120);
+emit_16(192);
+emit_16(118);
+emit_16(192);
+emit_16(120);
+emit_16(193);
+emit_16(122);
+emit_16(193);
+emit_16(120);
+emit_16(193);
+emit_16(122);
+emit_16(194);
+emit_16(124);
+emit_16(194);
+emit_16(122);
+emit_16(194);
+emit_16(124);
+emit_16(195);
+emit_16(126);
+emit_16(195);
+emit_16(124);
+emit_16(195);
+emit_16(126);
+emit_16(196);
+emit_16(128);
+emit_16(196);
+emit_16(126);
+emit_16(196);
+emit_16(128);
+emit_16(197);
+emit_16(130);
+emit_16(197);
+emit_16(128);
+emit_16(198);
+emit_16(132);
+emit_16(199);
+emit_16(133);
+emit_16(199);
+emit_16(132);
+emit_16(199);
+emit_16(133);
+emit_16(200);
+emit_16(134);
+emit_16(200);
+emit_16(133);
+emit_16(200);
+emit_16(134);
+emit_16(201);
+emit_16(135);
+emit_16(201);
+emit_16(134);
+emit_16(201);
+emit_16(135);
+emit_16(202);
+emit_16(136);
+emit_16(202);
+emit_16(135);
+emit_16(202);
+emit_16(136);
+emit_16(203);
+emit_16(137);
+emit_16(203);
+emit_16(136);
+emit_16(203);
+emit_16(137);
+emit_16(204);
+emit_16(138);
+emit_16(204);
+emit_16(137);
+emit_16(204);
+emit_16(138);
+emit_16(205);
+emit_16(139);
+emit_16(205);
+emit_16(138);
+emit_16(205);
+emit_16(139);
+emit_16(206);
+emit_16(140);
+emit_16(206);
+emit_16(139);
+emit_16(206);
+emit_16(140);
+emit_16(207);
+emit_16(141);
+emit_16(207);
+emit_16(140);
+emit_16(207);
+emit_16(141);
+emit_16(208);
+emit_16(142);
+emit_16(208);
+emit_16(141);
+emit_16(208);
+emit_16(142);
+emit_16(209);
+emit_16(143);
+emit_16(209);
+emit_16(142);
+emit_16(209);
+emit_16(143);
+emit_16(210);
+emit_16(144);
+emit_16(210);
+emit_16(143);
+emit_16(210);
+emit_16(144);
+emit_16(211);
+emit_16(145);
+emit_16(211);
+emit_16(144);
+emit_16(211);
+emit_16(145);
+emit_16(212);
+emit_16(146);
+emit_16(212);
+emit_16(145);
+emit_16(212);
+emit_16(146);
+emit_16(213);
+emit_16(147);
+emit_16(213);
+emit_16(146);
+emit_16(213);
+emit_16(147);
+emit_16(214);
+emit_16(148);
+emit_16(214);
+emit_16(147);
+emit_16(214);
+emit_16(148);
+emit_16(215);
+emit_16(149);
+emit_16(215);
+emit_16(148);
+emit_16(215);
+emit_16(149);
+emit_16(216);
+emit_16(150);
+emit_16(216);
+emit_16(149);
+emit_16(216);
+emit_16(150);
+emit_16(217);
+emit_16(151);
+emit_16(217);
+emit_16(150);
+emit_16(217);
+emit_16(151);
+emit_16(218);
+emit_16(152);
+emit_16(218);
+emit_16(151);
+emit_16(218);
+emit_16(152);
+emit_16(219);
+emit_16(153);
+emit_16(219);
+emit_16(152);
+emit_16(219);
+emit_16(153);
+emit_16(220);
+emit_16(154);
+emit_16(220);
+emit_16(153);
+emit_16(220);
+emit_16(154);
+emit_16(221);
+emit_16(155);
+emit_16(221);
+emit_16(154);
+emit_16(221);
+emit_16(155);
+emit_16(222);
+emit_16(156);
+emit_16(222);
+emit_16(155);
+emit_16(222);
+emit_16(156);
+emit_16(223);
+emit_16(157);
+emit_16(223);
+emit_16(156);
+emit_16(223);
+emit_16(157);
+emit_16(224);
+emit_16(158);
+emit_16(224);
+emit_16(157);
+emit_16(224);
+emit_16(158);
+emit_16(225);
+emit_16(159);
+emit_16(225);
+emit_16(158);
+emit_16(225);
+emit_16(159);
+emit_16(226);
+emit_16(160);
+emit_16(226);
+emit_16(159);
+emit_16(226);
+emit_16(160);
+emit_16(227);
+emit_16(161);
+emit_16(227);
+emit_16(160);
+emit_16(227);
+emit_16(161);
+emit_16(228);
+emit_16(162);
+emit_16(228);
+emit_16(161);
+emit_16(228);
+emit_16(162);
+emit_16(229);
+emit_16(163);
+emit_16(229);
+emit_16(162);
+emit_16(229);
+emit_16(163);
+emit_16(230);
+emit_16(164);
+emit_16(230);
+emit_16(163);
+emit_16(230);
+emit_16(164);
+emit_16(231);
+emit_16(165);
+emit_16(231);
+emit_16(164);
+emit_16(231);
+emit_16(165);
+emit_16(232);
+emit_16(166);
+emit_16(232);
+emit_16(165);
+emit_16(232);
+emit_16(166);
+emit_16(233);
+emit_16(167);
+emit_16(233);
+emit_16(166);
+emit_16(233);
+emit_16(167);
+emit_16(234);
+emit_16(168);
+emit_16(234);
+emit_16(167);
+emit_16(234);
+emit_16(168);
+emit_16(235);
+emit_16(169);
+emit_16(235);
+emit_16(168);
+emit_16(235);
+emit_16(169);
+emit_16(236);
+emit_16(170);
+emit_16(236);
+emit_16(169);
+emit_16(236);
+emit_16(170);
+emit_16(237);
+emit_16(171);
+emit_16(237);
+emit_16(170);
+emit_16(237);
+emit_16(171);
+emit_16(238);
+emit_16(172);
+emit_16(238);
+emit_16(171);
+emit_16(238);
+emit_16(172);
+emit_16(239);
+emit_16(173);
+emit_16(239);
+emit_16(172);
+emit_16(239);
+emit_16(173);
+emit_16(240);
+emit_16(174);
+emit_16(240);
+emit_16(173);
+emit_16(240);
+emit_16(174);
+emit_16(241);
+emit_16(175);
+emit_16(241);
+emit_16(174);
+emit_16(241);
+emit_16(175);
+emit_16(242);
+emit_16(176);
+emit_16(242);
+emit_16(175);
+emit_16(242);
+emit_16(176);
+emit_16(243);
+emit_16(177);
+emit_16(243);
+emit_16(176);
+emit_16(243);
+emit_16(177);
+emit_16(244);
+emit_16(178);
+emit_16(244);
+emit_16(177);
+emit_16(244);
+emit_16(178);
+emit_16(245);
+emit_16(179);
+emit_16(245);
+emit_16(178);
+emit_16(245);
+emit_16(179);
+emit_16(246);
+emit_16(180);
+emit_16(246);
+emit_16(179);
+emit_16(246);
+emit_16(180);
+emit_16(247);
+emit_16(181);
+emit_16(247);
+emit_16(180);
+emit_16(247);
+emit_16(181);
+emit_16(248);
+emit_16(182);
+emit_16(248);
+emit_16(181);
+emit_16(248);
+emit_16(182);
+emit_16(249);
+emit_16(183);
+emit_16(249);
+emit_16(182);
+emit_16(249);
+emit_16(183);
+emit_16(250);
+emit_16(184);
+emit_16(250);
+emit_16(183);
+emit_16(250);
+emit_16(184);
+emit_16(251);
+emit_16(185);
+emit_16(251);
+emit_16(184);
+emit_16(251);
+emit_16(185);
+emit_16(252);
+emit_16(186);
+emit_16(252);
+emit_16(185);
+emit_16(252);
+emit_16(186);
+emit_16(253);
+emit_16(187);
+emit_16(253);
+emit_16(186);
+emit_16(253);
+emit_16(187);
+emit_16(254);
+emit_16(188);
+emit_16(254);
+emit_16(187);
+emit_16(254);
+emit_16(188);
+emit_16(255);
+emit_16(189);
+emit_16(255);
+emit_16(188);
+emit_16(255);
+emit_16(189);
+emit_16(256);
+emit_16(190);
+emit_16(256);
+emit_16(189);
+emit_16(256);
+emit_16(190);
+emit_16(257);
+emit_16(191);
+emit_16(257);
+emit_16(190);
+emit_16(257);
+emit_16(191);
+emit_16(258);
+emit_16(192);
+emit_16(258);
+emit_16(191);
+emit_16(258);
+emit_16(192);
+emit_16(259);
+emit_16(193);
+emit_16(259);
+emit_16(192);
+emit_16(259);
+emit_16(193);
+emit_16(260);
+emit_16(194);
+emit_16(260);
+emit_16(193);
+emit_16(260);
+emit_16(194);
+emit_16(261);
+emit_16(195);
+emit_16(261);
+emit_16(194);
+emit_16(261);
+emit_16(195);
+emit_16(262);
+emit_16(196);
+emit_16(262);
+emit_16(195);
+emit_16(262);
+emit_16(196);
+emit_16(263);
+emit_16(197);
+emit_16(263);
+emit_16(196);
+emit_16(264);
+emit_16(198);
+emit_16(265);
+emit_16(199);
+emit_16(265);
+emit_16(198);
+emit_16(265);
+emit_16(199);
+emit_16(266);
+emit_16(200);
+emit_16(266);
+emit_16(199);
+emit_16(266);
+emit_16(200);
+emit_16(267);
+emit_16(201);
+emit_16(267);
+emit_16(200);
+emit_16(267);
+emit_16(201);
+emit_16(268);
+emit_16(202);
+emit_16(268);
+emit_16(201);
+emit_16(268);
+emit_16(202);
+emit_16(269);
+emit_16(203);
+emit_16(269);
+emit_16(202);
+emit_16(269);
+emit_16(203);
+emit_16(270);
+emit_16(204);
+emit_16(270);
+emit_16(203);
+emit_16(270);
+emit_16(204);
+emit_16(271);
+emit_16(205);
+emit_16(271);
+emit_16(204);
+emit_16(271);
+emit_16(205);
+emit_16(272);
+emit_16(206);
+emit_16(272);
+emit_16(205);
+emit_16(272);
+emit_16(206);
+emit_16(273);
+emit_16(207);
+emit_16(273);
+emit_16(206);
+emit_16(273);
+emit_16(207);
+emit_16(274);
+emit_16(208);
+emit_16(274);
+emit_16(207);
+emit_16(274);
+emit_16(208);
+emit_16(275);
+emit_16(209);
+emit_16(275);
+emit_16(208);
+emit_16(275);
+emit_16(209);
+emit_16(276);
+emit_16(210);
+emit_16(276);
+emit_16(209);
+emit_16(276);
+emit_16(210);
+emit_16(277);
+emit_16(211);
+emit_16(277);
+emit_16(210);
+emit_16(277);
+emit_16(211);
+emit_16(278);
+emit_16(212);
+emit_16(278);
+emit_16(211);
+emit_16(278);
+emit_16(212);
+emit_16(279);
+emit_16(213);
+emit_16(279);
+emit_16(212);
+emit_16(279);
+emit_16(213);
+emit_16(280);
+emit_16(214);
+emit_16(280);
+emit_16(213);
+emit_16(280);
+emit_16(214);
+emit_16(281);
+emit_16(215);
+emit_16(281);
+emit_16(214);
+emit_16(281);
+emit_16(215);
+emit_16(282);
+emit_16(216);
+emit_16(282);
+emit_16(215);
+emit_16(282);
+emit_16(216);
+emit_16(283);
+emit_16(217);
+emit_16(283);
+emit_16(216);
+emit_16(283);
+emit_16(217);
+emit_16(284);
+emit_16(218);
+emit_16(284);
+emit_16(217);
+emit_16(284);
+emit_16(218);
+emit_16(285);
+emit_16(219);
+emit_16(285);
+emit_16(218);
+emit_16(285);
+emit_16(219);
+emit_16(286);
+emit_16(220);
+emit_16(286);
+emit_16(219);
+emit_16(286);
+emit_16(220);
+emit_16(287);
+emit_16(221);
+emit_16(287);
+emit_16(220);
+emit_16(287);
+emit_16(221);
+emit_16(288);
+emit_16(222);
+emit_16(288);
+emit_16(221);
+emit_16(288);
+emit_16(222);
+emit_16(289);
+emit_16(223);
+emit_16(289);
+emit_16(222);
+emit_16(289);
+emit_16(223);
+emit_16(290);
+emit_16(224);
+emit_16(290);
+emit_16(223);
+emit_16(290);
+emit_16(224);
+emit_16(291);
+emit_16(225);
+emit_16(291);
+emit_16(224);
+emit_16(291);
+emit_16(225);
+emit_16(292);
+emit_16(226);
+emit_16(292);
+emit_16(225);
+emit_16(292);
+emit_16(226);
+emit_16(293);
+emit_16(227);
+emit_16(293);
+emit_16(226);
+emit_16(293);
+emit_16(227);
+emit_16(294);
+emit_16(228);
+emit_16(294);
+emit_16(227);
+emit_16(294);
+emit_16(228);
+emit_16(295);
+emit_16(229);
+emit_16(295);
+emit_16(228);
+emit_16(295);
+emit_16(229);
+emit_16(296);
+emit_16(230);
+emit_16(296);
+emit_16(229);
+emit_16(296);
+emit_16(230);
+emit_16(297);
+emit_16(231);
+emit_16(297);
+emit_16(230);
+emit_16(297);
+emit_16(231);
+emit_16(298);
+emit_16(232);
+emit_16(298);
+emit_16(231);
+emit_16(298);
+emit_16(232);
+emit_16(299);
+emit_16(233);
+emit_16(299);
+emit_16(232);
+emit_16(299);
+emit_16(233);
+emit_16(300);
+emit_16(234);
+emit_16(300);
+emit_16(233);
+emit_16(300);
+emit_16(234);
+emit_16(301);
+emit_16(235);
+emit_16(301);
+emit_16(234);
+emit_16(301);
+emit_16(235);
+emit_16(302);
+emit_16(236);
+emit_16(302);
+emit_16(235);
+emit_16(302);
+emit_16(236);
+emit_16(303);
+emit_16(237);
+emit_16(303);
+emit_16(236);
+emit_16(303);
+emit_16(237);
+emit_16(304);
+emit_16(238);
+emit_16(304);
+emit_16(237);
+emit_16(304);
+emit_16(238);
+emit_16(305);
+emit_16(239);
+emit_16(305);
+emit_16(238);
+emit_16(305);
+emit_16(239);
+emit_16(306);
+emit_16(240);
+emit_16(306);
+emit_16(239);
+emit_16(306);
+emit_16(240);
+emit_16(307);
+emit_16(241);
+emit_16(307);
+emit_16(240);
+emit_16(307);
+emit_16(241);
+emit_16(308);
+emit_16(242);
+emit_16(308);
+emit_16(241);
+emit_16(308);
+emit_16(242);
+emit_16(309);
+emit_16(243);
+emit_16(309);
+emit_16(242);
+emit_16(309);
+emit_16(243);
+emit_16(310);
+emit_16(244);
+emit_16(310);
+emit_16(243);
+emit_16(310);
+emit_16(244);
+emit_16(311);
+emit_16(245);
+emit_16(311);
+emit_16(244);
+emit_16(311);
+emit_16(245);
+emit_16(312);
+emit_16(246);
+emit_16(312);
+emit_16(245);
+emit_16(312);
+emit_16(246);
+emit_16(313);
+emit_16(247);
+emit_16(313);
+emit_16(246);
+emit_16(313);
+emit_16(247);
+emit_16(314);
+emit_16(248);
+emit_16(314);
+emit_16(247);
+emit_16(314);
+emit_16(248);
+emit_16(315);
+emit_16(249);
+emit_16(315);
+emit_16(248);
+emit_16(315);
+emit_16(249);
+emit_16(316);
+emit_16(250);
+emit_16(316);
+emit_16(249);
+emit_16(316);
+emit_16(250);
+emit_16(317);
+emit_16(251);
+emit_16(317);
+emit_16(250);
+emit_16(317);
+emit_16(251);
+emit_16(318);
+emit_16(252);
+emit_16(318);
+emit_16(251);
+emit_16(318);
+emit_16(252);
+emit_16(319);
+emit_16(253);
+emit_16(319);
+emit_16(252);
+emit_16(319);
+emit_16(253);
+emit_16(320);
+emit_16(254);
+emit_16(320);
+emit_16(253);
+emit_16(320);
+emit_16(254);
+emit_16(321);
+emit_16(255);
+emit_16(321);
+emit_16(254);
+emit_16(321);
+emit_16(255);
+emit_16(322);
+emit_16(256);
+emit_16(322);
+emit_16(255);
+emit_16(322);
+emit_16(256);
+emit_16(323);
+emit_16(257);
+emit_16(323);
+emit_16(256);
+emit_16(323);
+emit_16(257);
+emit_16(324);
+emit_16(258);
+emit_16(324);
+emit_16(257);
+emit_16(324);
+emit_16(258);
+emit_16(325);
+emit_16(259);
+emit_16(325);
+emit_16(258);
+emit_16(325);
+emit_16(259);
+emit_16(326);
+emit_16(260);
+emit_16(326);
+emit_16(259);
+emit_16(326);
+emit_16(260);
+emit_16(327);
+emit_16(261);
+emit_16(327);
+emit_16(260);
+emit_16(327);
+emit_16(261);
+emit_16(328);
+emit_16(262);
+emit_16(328);
+emit_16(261);
+emit_16(328);
+emit_16(262);
+emit_16(329);
+emit_16(263);
+emit_16(329);
+emit_16(262);
+emit_16(330);
+emit_16(264);
+emit_16(331);
+emit_16(265);
+emit_16(331);
+emit_16(264);
+emit_16(331);
+emit_16(265);
+emit_16(332);
+emit_16(266);
+emit_16(332);
+emit_16(265);
+emit_16(332);
+emit_16(266);
+emit_16(333);
+emit_16(267);
+emit_16(333);
+emit_16(266);
+emit_16(333);
+emit_16(267);
+emit_16(334);
+emit_16(268);
+emit_16(334);
+emit_16(267);
+emit_16(334);
+emit_16(268);
+emit_16(335);
+emit_16(269);
+emit_16(335);
+emit_16(268);
+emit_16(335);
+emit_16(269);
+emit_16(336);
+emit_16(270);
+emit_16(336);
+emit_16(269);
+emit_16(336);
+emit_16(270);
+emit_16(337);
+emit_16(271);
+emit_16(337);
+emit_16(270);
+emit_16(337);
+emit_16(271);
+emit_16(338);
+emit_16(272);
+emit_16(338);
+emit_16(271);
+emit_16(338);
+emit_16(272);
+emit_16(339);
+emit_16(273);
+emit_16(339);
+emit_16(272);
+emit_16(339);
+emit_16(273);
+emit_16(340);
+emit_16(274);
+emit_16(340);
+emit_16(273);
+emit_16(340);
+emit_16(274);
+emit_16(341);
+emit_16(275);
+emit_16(341);
+emit_16(274);
+emit_16(341);
+emit_16(275);
+emit_16(342);
+emit_16(276);
+emit_16(342);
+emit_16(275);
+emit_16(342);
+emit_16(276);
+emit_16(343);
+emit_16(277);
+emit_16(343);
+emit_16(276);
+emit_16(343);
+emit_16(277);
+emit_16(344);
+emit_16(278);
+emit_16(344);
+emit_16(277);
+emit_16(344);
+emit_16(278);
+emit_16(345);
+emit_16(279);
+emit_16(345);
+emit_16(278);
+emit_16(345);
+emit_16(279);
+emit_16(346);
+emit_16(280);
+emit_16(346);
+emit_16(279);
+emit_16(346);
+emit_16(280);
+emit_16(347);
+emit_16(281);
+emit_16(347);
+emit_16(280);
+emit_16(347);
+emit_16(281);
+emit_16(348);
+emit_16(282);
+emit_16(348);
+emit_16(281);
+emit_16(348);
+emit_16(282);
+emit_16(349);
+emit_16(283);
+emit_16(349);
+emit_16(282);
+emit_16(349);
+emit_16(283);
+emit_16(350);
+emit_16(284);
+emit_16(350);
+emit_16(283);
+emit_16(350);
+emit_16(284);
+emit_16(351);
+emit_16(285);
+emit_16(351);
+emit_16(284);
+emit_16(351);
+emit_16(285);
+emit_16(352);
+emit_16(286);
+emit_16(352);
+emit_16(285);
+emit_16(352);
+emit_16(286);
+emit_16(353);
+emit_16(287);
+emit_16(353);
+emit_16(286);
+emit_16(353);
+emit_16(287);
+emit_16(354);
+emit_16(288);
+emit_16(354);
+emit_16(287);
+emit_16(354);
+emit_16(288);
+emit_16(355);
+emit_16(289);
+emit_16(355);
+emit_16(288);
+emit_16(355);
+emit_16(289);
+emit_16(356);
+emit_16(290);
+emit_16(356);
+emit_16(289);
+emit_16(356);
+emit_16(290);
+emit_16(357);
+emit_16(291);
+emit_16(357);
+emit_16(290);
+emit_16(357);
+emit_16(291);
+emit_16(358);
+emit_16(292);
+emit_16(358);
+emit_16(291);
+emit_16(358);
+emit_16(292);
+emit_16(359);
+emit_16(293);
+emit_16(359);
+emit_16(292);
+emit_16(359);
+emit_16(293);
+emit_16(360);
+emit_16(294);
+emit_16(360);
+emit_16(293);
+emit_16(360);
+emit_16(294);
+emit_16(361);
+emit_16(295);
+emit_16(361);
+emit_16(294);
+emit_16(361);
+emit_16(295);
+emit_16(362);
+emit_16(296);
+emit_16(362);
+emit_16(295);
+emit_16(362);
+emit_16(296);
+emit_16(363);
+emit_16(297);
+emit_16(363);
+emit_16(296);
+emit_16(363);
+emit_16(297);
+emit_16(364);
+emit_16(298);
+emit_16(364);
+emit_16(297);
+emit_16(364);
+emit_16(298);
+emit_16(365);
+emit_16(299);
+emit_16(365);
+emit_16(298);
+emit_16(365);
+emit_16(299);
+emit_16(366);
+emit_16(300);
+emit_16(366);
+emit_16(299);
+emit_16(366);
+emit_16(300);
+emit_16(367);
+emit_16(301);
+emit_16(367);
+emit_16(300);
+emit_16(367);
+emit_16(301);
+emit_16(368);
+emit_16(302);
+emit_16(368);
+emit_16(301);
+emit_16(368);
+emit_16(302);
+emit_16(369);
+emit_16(303);
+emit_16(369);
+emit_16(302);
+emit_16(369);
+emit_16(303);
+emit_16(370);
+emit_16(304);
+emit_16(370);
+emit_16(303);
+emit_16(370);
+emit_16(304);
+emit_16(371);
+emit_16(305);
+emit_16(371);
+emit_16(304);
+emit_16(371);
+emit_16(305);
+emit_16(372);
+emit_16(306);
+emit_16(372);
+emit_16(305);
+emit_16(372);
+emit_16(306);
+emit_16(373);
+emit_16(307);
+emit_16(373);
+emit_16(306);
+emit_16(373);
+emit_16(307);
+emit_16(374);
+emit_16(308);
+emit_16(374);
+emit_16(307);
+emit_16(374);
+emit_16(308);
+emit_16(375);
+emit_16(309);
+emit_16(375);
+emit_16(308);
+emit_16(375);
+emit_16(309);
+emit_16(376);
+emit_16(310);
+emit_16(376);
+emit_16(309);
+emit_16(376);
+emit_16(310);
+emit_16(377);
+emit_16(311);
+emit_16(377);
+emit_16(310);
+emit_16(377);
+emit_16(311);
+emit_16(378);
+emit_16(312);
+emit_16(378);
+emit_16(311);
+emit_16(378);
+emit_16(312);
+emit_16(379);
+emit_16(313);
+emit_16(379);
+emit_16(312);
+emit_16(379);
+emit_16(313);
+emit_16(380);
+emit_16(314);
+emit_16(380);
+emit_16(313);
+emit_16(380);
+emit_16(314);
+emit_16(381);
+emit_16(315);
+emit_16(381);
+emit_16(314);
+emit_16(381);
+emit_16(315);
+emit_16(382);
+emit_16(316);
+emit_16(382);
+emit_16(315);
+emit_16(382);
+emit_16(316);
+emit_16(383);
+emit_16(317);
+emit_16(383);
+emit_16(316);
+emit_16(383);
+emit_16(317);
+emit_16(384);
+emit_16(318);
+emit_16(384);
+emit_16(317);
+emit_16(384);
+emit_16(318);
+emit_16(385);
+emit_16(319);
+emit_16(385);
+emit_16(318);
+emit_16(385);
+emit_16(319);
+emit_16(386);
+emit_16(320);
+emit_16(386);
+emit_16(319);
+emit_16(386);
+emit_16(320);
+emit_16(387);
+emit_16(321);
+emit_16(387);
+emit_16(320);
+emit_16(387);
+emit_16(321);
+emit_16(388);
+emit_16(322);
+emit_16(388);
+emit_16(321);
+emit_16(388);
+emit_16(322);
+emit_16(389);
+emit_16(323);
+emit_16(389);
+emit_16(322);
+emit_16(389);
+emit_16(323);
+emit_16(390);
+emit_16(324);
+emit_16(390);
+emit_16(323);
+emit_16(390);
+emit_16(324);
+emit_16(391);
+emit_16(325);
+emit_16(391);
+emit_16(324);
+emit_16(391);
+emit_16(325);
+emit_16(392);
+emit_16(326);
+emit_16(392);
+emit_16(325);
+emit_16(392);
+emit_16(326);
+emit_16(393);
+emit_16(327);
+emit_16(393);
+emit_16(326);
+emit_16(393);
+emit_16(327);
+emit_16(394);
+emit_16(328);
+emit_16(394);
+emit_16(327);
+emit_16(394);
+emit_16(328);
+emit_16(395);
+emit_16(329);
+emit_16(395);
+emit_16(328);
+emit_16(396);
+emit_16(330);
+emit_16(397);
+emit_16(331);
+emit_16(397);
+emit_16(330);
+emit_16(397);
+emit_16(331);
+emit_16(398);
+emit_16(332);
+emit_16(398);
+emit_16(331);
+emit_16(398);
+emit_16(332);
+emit_16(399);
+emit_16(333);
+emit_16(399);
+emit_16(332);
+emit_16(399);
+emit_16(333);
+emit_16(400);
+emit_16(334);
+emit_16(400);
+emit_16(333);
+emit_16(400);
+emit_16(334);
+emit_16(401);
+emit_16(335);
+emit_16(401);
+emit_16(334);
+emit_16(401);
+emit_16(335);
+emit_16(402);
+emit_16(336);
+emit_16(402);
+emit_16(335);
+emit_16(402);
+emit_16(336);
+emit_16(403);
+emit_16(337);
+emit_16(403);
+emit_16(336);
+emit_16(403);
+emit_16(337);
+emit_16(404);
+emit_16(338);
+emit_16(404);
+emit_16(337);
+emit_16(404);
+emit_16(338);
+emit_16(405);
+emit_16(339);
+emit_16(405);
+emit_16(338);
+emit_16(405);
+emit_16(339);
+emit_16(406);
+emit_16(340);
+emit_16(406);
+emit_16(339);
+emit_16(406);
+emit_16(340);
+emit_16(407);
+emit_16(341);
+emit_16(407);
+emit_16(340);
+emit_16(407);
+emit_16(341);
+emit_16(408);
+emit_16(342);
+emit_16(408);
+emit_16(341);
+emit_16(408);
+emit_16(342);
+emit_16(409);
+emit_16(343);
+emit_16(409);
+emit_16(342);
+emit_16(409);
+emit_16(343);
+emit_16(410);
+emit_16(344);
+emit_16(410);
+emit_16(343);
+emit_16(410);
+emit_16(344);
+emit_16(411);
+emit_16(345);
+emit_16(411);
+emit_16(344);
+emit_16(411);
+emit_16(345);
+emit_16(412);
+emit_16(346);
+emit_16(412);
+emit_16(345);
+emit_16(412);
+emit_16(346);
+emit_16(413);
+emit_16(347);
+emit_16(413);
+emit_16(346);
+emit_16(413);
+emit_16(347);
+emit_16(414);
+emit_16(348);
+emit_16(414);
+emit_16(347);
+emit_16(414);
+emit_16(348);
+emit_16(415);
+emit_16(349);
+emit_16(415);
+emit_16(348);
+emit_16(415);
+emit_16(349);
+emit_16(416);
+emit_16(350);
+emit_16(416);
+emit_16(349);
+emit_16(416);
+emit_16(350);
+emit_16(417);
+emit_16(351);
+emit_16(417);
+emit_16(350);
+emit_16(417);
+emit_16(351);
+emit_16(418);
+emit_16(352);
+emit_16(418);
+emit_16(351);
+emit_16(418);
+emit_16(352);
+emit_16(419);
+emit_16(353);
+emit_16(419);
+emit_16(352);
+emit_16(419);
+emit_16(353);
+emit_16(420);
+emit_16(354);
+emit_16(420);
+emit_16(353);
+emit_16(420);
+emit_16(354);
+emit_16(421);
+emit_16(355);
+emit_16(421);
+emit_16(354);
+emit_16(421);
+emit_16(355);
+emit_16(422);
+emit_16(356);
+emit_16(422);
+emit_16(355);
+emit_16(422);
+emit_16(356);
+emit_16(423);
+emit_16(357);
+emit_16(423);
+emit_16(356);
+emit_16(423);
+emit_16(357);
+emit_16(424);
+emit_16(358);
+emit_16(424);
+emit_16(357);
+emit_16(424);
+emit_16(358);
+emit_16(425);
+emit_16(359);
+emit_16(425);
+emit_16(358);
+emit_16(425);
+emit_16(359);
+emit_16(426);
+emit_16(360);
+emit_16(426);
+emit_16(359);
+emit_16(426);
+emit_16(360);
+emit_16(427);
+emit_16(361);
+emit_16(427);
+emit_16(360);
+emit_16(427);
+emit_16(361);
+emit_16(428);
+emit_16(362);
+emit_16(428);
+emit_16(361);
+emit_16(428);
+emit_16(362);
+emit_16(429);
+emit_16(363);
+emit_16(429);
+emit_16(362);
+emit_16(429);
+emit_16(363);
+emit_16(430);
+emit_16(364);
+emit_16(430);
+emit_16(363);
+emit_16(430);
+emit_16(364);
+emit_16(431);
+emit_16(365);
+emit_16(431);
+emit_16(364);
+emit_16(431);
+emit_16(365);
+emit_16(432);
+emit_16(366);
+emit_16(432);
+emit_16(365);
+emit_16(432);
+emit_16(366);
+emit_16(433);
+emit_16(367);
+emit_16(433);
+emit_16(366);
+emit_16(433);
+emit_16(367);
+emit_16(434);
+emit_16(368);
+emit_16(434);
+emit_16(367);
+emit_16(434);
+emit_16(368);
+emit_16(435);
+emit_16(369);
+emit_16(435);
+emit_16(368);
+emit_16(435);
+emit_16(369);
+emit_16(436);
+emit_16(370);
+emit_16(436);
+emit_16(369);
+emit_16(436);
+emit_16(370);
+emit_16(437);
+emit_16(371);
+emit_16(437);
+emit_16(370);
+emit_16(437);
+emit_16(371);
+emit_16(438);
+emit_16(372);
+emit_16(438);
+emit_16(371);
+emit_16(438);
+emit_16(372);
+emit_16(439);
+emit_16(373);
+emit_16(439);
+emit_16(372);
+emit_16(439);
+emit_16(373);
+emit_16(440);
+emit_16(374);
+emit_16(440);
+emit_16(373);
+emit_16(440);
+emit_16(374);
+emit_16(441);
+emit_16(375);
+emit_16(441);
+emit_16(374);
+emit_16(441);
+emit_16(375);
+emit_16(442);
+emit_16(376);
+emit_16(442);
+emit_16(375);
+emit_16(442);
+emit_16(376);
+emit_16(443);
+emit_16(377);
+emit_16(443);
+emit_16(376);
+emit_16(443);
+emit_16(377);
+emit_16(444);
+emit_16(378);
+emit_16(444);
+emit_16(377);
+emit_16(444);
+emit_16(378);
+emit_16(445);
+emit_16(379);
+emit_16(445);
+emit_16(378);
+emit_16(445);
+emit_16(379);
+emit_16(446);
+emit_16(380);
+emit_16(446);
+emit_16(379);
+emit_16(446);
+emit_16(380);
+emit_16(447);
+emit_16(381);
+emit_16(447);
+emit_16(380);
+emit_16(447);
+emit_16(381);
+emit_16(448);
+emit_16(382);
+emit_16(448);
+emit_16(381);
+emit_16(448);
+emit_16(382);
+emit_16(449);
+emit_16(383);
+emit_16(449);
+emit_16(382);
+emit_16(449);
+emit_16(383);
+emit_16(450);
+emit_16(384);
+emit_16(450);
+emit_16(383);
+emit_16(450);
+emit_16(384);
+emit_16(451);
+emit_16(385);
+emit_16(451);
+emit_16(384);
+emit_16(451);
+emit_16(385);
+emit_16(452);
+emit_16(386);
+emit_16(452);
+emit_16(385);
+emit_16(452);
+emit_16(386);
+emit_16(453);
+emit_16(387);
+emit_16(453);
+emit_16(386);
+emit_16(453);
+emit_16(387);
+emit_16(454);
+emit_16(388);
+emit_16(454);
+emit_16(387);
+emit_16(454);
+emit_16(388);
+emit_16(455);
+emit_16(389);
+emit_16(455);
+emit_16(388);
+emit_16(455);
+emit_16(389);
+emit_16(456);
+emit_16(390);
+emit_16(456);
+emit_16(389);
+emit_16(456);
+emit_16(390);
+emit_16(457);
+emit_16(391);
+emit_16(457);
+emit_16(390);
+emit_16(457);
+emit_16(391);
+emit_16(458);
+emit_16(392);
+emit_16(458);
+emit_16(391);
+emit_16(458);
+emit_16(392);
+emit_16(459);
+emit_16(393);
+emit_16(459);
+emit_16(392);
+emit_16(459);
+emit_16(393);
+emit_16(460);
+emit_16(394);
+emit_16(460);
+emit_16(393);
+emit_16(460);
+emit_16(394);
+emit_16(461);
+emit_16(395);
+emit_16(461);
+emit_16(394);
+emit_16(462);
+emit_16(396);
+emit_16(463);
+emit_16(397);
+emit_16(463);
+emit_16(396);
+emit_16(463);
+emit_16(397);
+emit_16(464);
+emit_16(398);
+emit_16(464);
+emit_16(397);
+emit_16(464);
+emit_16(398);
+emit_16(465);
+emit_16(399);
+emit_16(465);
+emit_16(398);
+emit_16(465);
+emit_16(399);
+emit_16(466);
+emit_16(400);
+emit_16(466);
+emit_16(399);
+emit_16(466);
+emit_16(400);
+emit_16(467);
+emit_16(401);
+emit_16(467);
+emit_16(400);
+emit_16(467);
+emit_16(401);
+emit_16(468);
+emit_16(402);
+emit_16(468);
+emit_16(401);
+emit_16(468);
+emit_16(402);
+emit_16(469);
+emit_16(403);
+emit_16(469);
+emit_16(402);
+emit_16(469);
+emit_16(403);
+emit_16(470);
+emit_16(404);
+emit_16(470);
+emit_16(403);
+emit_16(470);
+emit_16(404);
+emit_16(471);
+emit_16(405);
+emit_16(471);
+emit_16(404);
+emit_16(471);
+emit_16(405);
+emit_16(472);
+emit_16(406);
+emit_16(472);
+emit_16(405);
+emit_16(472);
+emit_16(406);
+emit_16(473);
+emit_16(407);
+emit_16(473);
+emit_16(406);
+emit_16(473);
+emit_16(407);
+emit_16(474);
+emit_16(408);
+emit_16(474);
+emit_16(407);
+emit_16(474);
+emit_16(408);
+emit_16(475);
+emit_16(409);
+emit_16(475);
+emit_16(408);
+emit_16(475);
+emit_16(409);
+emit_16(476);
+emit_16(410);
+emit_16(476);
+emit_16(409);
+emit_16(476);
+emit_16(410);
+emit_16(477);
+emit_16(411);
+emit_16(477);
+emit_16(410);
+emit_16(477);
+emit_16(411);
+emit_16(478);
+emit_16(412);
+emit_16(478);
+emit_16(411);
+emit_16(478);
+emit_16(412);
+emit_16(479);
+emit_16(413);
+emit_16(479);
+emit_16(412);
+emit_16(479);
+emit_16(413);
+emit_16(480);
+emit_16(414);
+emit_16(480);
+emit_16(413);
+emit_16(480);
+emit_16(414);
+emit_16(481);
+emit_16(415);
+emit_16(481);
+emit_16(414);
+emit_16(481);
+emit_16(415);
+emit_16(482);
+emit_16(416);
+emit_16(482);
+emit_16(415);
+emit_16(482);
+emit_16(416);
+emit_16(483);
+emit_16(417);
+emit_16(483);
+emit_16(416);
+emit_16(483);
+emit_16(417);
+emit_16(484);
+emit_16(418);
+emit_16(484);
+emit_16(417);
+emit_16(484);
+emit_16(418);
+emit_16(485);
+emit_16(419);
+emit_16(485);
+emit_16(418);
+emit_16(485);
+emit_16(419);
+emit_16(486);
+emit_16(420);
+emit_16(486);
+emit_16(419);
+emit_16(486);
+emit_16(420);
+emit_16(487);
+emit_16(421);
+emit_16(487);
+emit_16(420);
+emit_16(487);
+emit_16(421);
+emit_16(488);
+emit_16(422);
+emit_16(488);
+emit_16(421);
+emit_16(488);
+emit_16(422);
+emit_16(489);
+emit_16(423);
+emit_16(489);
+emit_16(422);
+emit_16(489);
+emit_16(423);
+emit_16(490);
+emit_16(424);
+emit_16(490);
+emit_16(423);
+emit_16(490);
+emit_16(424);
+emit_16(491);
+emit_16(425);
+emit_16(491);
+emit_16(424);
+emit_16(491);
+emit_16(425);
+emit_16(492);
+emit_16(426);
+emit_16(492);
+emit_16(425);
+emit_16(492);
+emit_16(426);
+emit_16(493);
+emit_16(427);
+emit_16(493);
+emit_16(426);
+emit_16(493);
+emit_16(427);
+emit_16(494);
+emit_16(428);
+emit_16(494);
+emit_16(427);
+emit_16(494);
+emit_16(428);
+emit_16(495);
+emit_16(429);
+emit_16(495);
+emit_16(428);
+emit_16(495);
+emit_16(429);
+emit_16(496);
+emit_16(430);
+emit_16(496);
+emit_16(429);
+emit_16(496);
+emit_16(430);
+emit_16(497);
+emit_16(431);
+emit_16(497);
+emit_16(430);
+emit_16(497);
+emit_16(431);
+emit_16(498);
+emit_16(432);
+emit_16(498);
+emit_16(431);
+emit_16(498);
+emit_16(432);
+emit_16(499);
+emit_16(433);
+emit_16(499);
+emit_16(432);
+emit_16(499);
+emit_16(433);
+emit_16(500);
+emit_16(434);
+emit_16(500);
+emit_16(433);
+emit_16(500);
+emit_16(434);
+emit_16(501);
+emit_16(435);
+emit_16(501);
+emit_16(434);
+emit_16(501);
+emit_16(435);
+emit_16(502);
+emit_16(436);
+emit_16(502);
+emit_16(435);
+emit_16(502);
+emit_16(436);
+emit_16(503);
+emit_16(437);
+emit_16(503);
+emit_16(436);
+emit_16(503);
+emit_16(437);
+emit_16(504);
+emit_16(438);
+emit_16(504);
+emit_16(437);
+emit_16(504);
+emit_16(438);
+emit_16(505);
+emit_16(439);
+emit_16(505);
+emit_16(438);
+emit_16(505);
+emit_16(439);
+emit_16(506);
+emit_16(440);
+emit_16(506);
+emit_16(439);
+emit_16(506);
+emit_16(440);
+emit_16(507);
+emit_16(441);
+emit_16(507);
+emit_16(440);
+emit_16(507);
+emit_16(441);
+emit_16(508);
+emit_16(442);
+emit_16(508);
+emit_16(441);
+emit_16(508);
+emit_16(442);
+emit_16(509);
+emit_16(443);
+emit_16(509);
+emit_16(442);
+emit_16(509);
+emit_16(443);
+emit_16(510);
+emit_16(444);
+emit_16(510);
+emit_16(443);
+emit_16(510);
+emit_16(444);
+emit_16(511);
+emit_16(445);
+emit_16(511);
+emit_16(444);
+emit_16(511);
+emit_16(445);
+emit_16(512);
+emit_16(446);
+emit_16(512);
+emit_16(445);
+emit_16(512);
+emit_16(446);
+emit_16(513);
+emit_16(447);
+emit_16(513);
+emit_16(446);
+emit_16(513);
+emit_16(447);
+emit_16(514);
+emit_16(448);
+emit_16(514);
+emit_16(447);
+emit_16(514);
+emit_16(448);
+emit_16(515);
+emit_16(449);
+emit_16(515);
+emit_16(448);
+emit_16(515);
+emit_16(449);
+emit_16(516);
+emit_16(450);
+emit_16(516);
+emit_16(449);
+emit_16(516);
+emit_16(450);
+emit_16(517);
+emit_16(451);
+emit_16(517);
+emit_16(450);
+emit_16(517);
+emit_16(451);
+emit_16(518);
+emit_16(452);
+emit_16(518);
+emit_16(451);
+emit_16(518);
+emit_16(452);
+emit_16(519);
+emit_16(453);
+emit_16(519);
+emit_16(452);
+emit_16(519);
+emit_16(453);
+emit_16(520);
+emit_16(454);
+emit_16(520);
+emit_16(453);
+emit_16(520);
+emit_16(454);
+emit_16(521);
+emit_16(455);
+emit_16(521);
+emit_16(454);
+emit_16(521);
+emit_16(455);
+emit_16(522);
+emit_16(456);
+emit_16(522);
+emit_16(455);
+emit_16(522);
+emit_16(456);
+emit_16(523);
+emit_16(457);
+emit_16(523);
+emit_16(456);
+emit_16(523);
+emit_16(457);
+emit_16(524);
+emit_16(458);
+emit_16(524);
+emit_16(457);
+emit_16(524);
+emit_16(458);
+emit_16(525);
+emit_16(459);
+emit_16(525);
+emit_16(458);
+emit_16(525);
+emit_16(459);
+emit_16(526);
+emit_16(460);
+emit_16(526);
+emit_16(459);
+emit_16(526);
+emit_16(460);
+emit_16(527);
+emit_16(461);
+emit_16(527);
+emit_16(460);
+emit_16(528);
+emit_16(462);
+emit_16(529);
+emit_16(463);
+emit_16(529);
+emit_16(462);
+emit_16(529);
+emit_16(463);
+emit_16(530);
+emit_16(464);
+emit_16(530);
+emit_16(463);
+emit_16(530);
+emit_16(464);
+emit_16(531);
+emit_16(465);
+emit_16(531);
+emit_16(464);
+emit_16(531);
+emit_16(465);
+emit_16(532);
+emit_16(466);
+emit_16(532);
+emit_16(465);
+emit_16(532);
+emit_16(466);
+emit_16(533);
+emit_16(467);
+emit_16(533);
+emit_16(466);
+emit_16(533);
+emit_16(467);
+emit_16(534);
+emit_16(468);
+emit_16(534);
+emit_16(467);
+emit_16(534);
+emit_16(468);
+emit_16(535);
+emit_16(469);
+emit_16(535);
+emit_16(468);
+emit_16(535);
+emit_16(469);
+emit_16(536);
+emit_16(470);
+emit_16(536);
+emit_16(469);
+emit_16(536);
+emit_16(470);
+emit_16(537);
+emit_16(471);
+emit_16(537);
+emit_16(470);
+emit_16(537);
+emit_16(471);
+emit_16(538);
+emit_16(472);
+emit_16(538);
+emit_16(471);
+emit_16(538);
+emit_16(472);
+emit_16(539);
+emit_16(473);
+emit_16(539);
+emit_16(472);
+emit_16(539);
+emit_16(473);
+emit_16(540);
+emit_16(474);
+emit_16(540);
+emit_16(473);
+emit_16(540);
+emit_16(474);
+emit_16(541);
+emit_16(475);
+emit_16(541);
+emit_16(474);
+emit_16(541);
+emit_16(475);
+emit_16(542);
+emit_16(476);
+emit_16(542);
+emit_16(475);
+emit_16(542);
+emit_16(476);
+emit_16(543);
+emit_16(477);
+emit_16(543);
+emit_16(476);
+emit_16(543);
+emit_16(477);
+emit_16(544);
+emit_16(478);
+emit_16(544);
+emit_16(477);
+emit_16(544);
+emit_16(478);
+emit_16(545);
+emit_16(479);
+emit_16(545);
+emit_16(478);
+emit_16(545);
+emit_16(479);
+emit_16(546);
+emit_16(480);
+emit_16(546);
+emit_16(479);
+emit_16(546);
+emit_16(480);
+emit_16(547);
+emit_16(481);
+emit_16(547);
+emit_16(480);
+emit_16(547);
+emit_16(481);
+emit_16(548);
+emit_16(482);
+emit_16(548);
+emit_16(481);
+emit_16(548);
+emit_16(482);
+emit_16(549);
+emit_16(483);
+emit_16(549);
+emit_16(482);
+emit_16(549);
+emit_16(483);
+emit_16(550);
+emit_16(484);
+emit_16(550);
+emit_16(483);
+emit_16(550);
+emit_16(484);
+emit_16(551);
+emit_16(485);
+emit_16(551);
+emit_16(484);
+emit_16(551);
+emit_16(485);
+emit_16(552);
+emit_16(486);
+emit_16(552);
+emit_16(485);
+emit_16(552);
+emit_16(486);
+emit_16(553);
+emit_16(487);
+emit_16(553);
+emit_16(486);
+emit_16(553);
+emit_16(487);
+emit_16(554);
+emit_16(488);
+emit_16(554);
+emit_16(487);
+emit_16(554);
+emit_16(488);
+emit_16(555);
+emit_16(489);
+emit_16(555);
+emit_16(488);
+emit_16(555);
+emit_16(489);
+emit_16(556);
+emit_16(490);
+emit_16(556);
+emit_16(489);
+emit_16(556);
+emit_16(490);
+emit_16(557);
+emit_16(491);
+emit_16(557);
+emit_16(490);
+emit_16(557);
+emit_16(491);
+emit_16(558);
+emit_16(492);
+emit_16(558);
+emit_16(491);
+emit_16(558);
+emit_16(492);
+emit_16(559);
+emit_16(493);
+emit_16(559);
+emit_16(492);
+emit_16(559);
+emit_16(493);
+emit_16(560);
+emit_16(494);
+emit_16(560);
+emit_16(493);
+emit_16(560);
+emit_16(494);
+emit_16(561);
+emit_16(495);
+emit_16(561);
+emit_16(494);
+emit_16(561);
+emit_16(495);
+emit_16(562);
+emit_16(496);
+emit_16(562);
+emit_16(495);
+emit_16(562);
+emit_16(496);
+emit_16(563);
+emit_16(497);
+emit_16(563);
+emit_16(496);
+emit_16(563);
+emit_16(497);
+emit_16(564);
+emit_16(498);
+emit_16(564);
+emit_16(497);
+emit_16(564);
+emit_16(498);
+emit_16(565);
+emit_16(499);
+emit_16(565);
+emit_16(498);
+emit_16(565);
+emit_16(499);
+emit_16(566);
+emit_16(500);
+emit_16(566);
+emit_16(499);
+emit_16(566);
+emit_16(500);
+emit_16(567);
+emit_16(501);
+emit_16(567);
+emit_16(500);
+emit_16(567);
+emit_16(501);
+emit_16(568);
+emit_16(502);
+emit_16(568);
+emit_16(501);
+emit_16(568);
+emit_16(502);
+emit_16(569);
+emit_16(503);
+emit_16(569);
+emit_16(502);
+emit_16(569);
+emit_16(503);
+emit_16(570);
+emit_16(504);
+emit_16(570);
+emit_16(503);
+emit_16(570);
+emit_16(504);
+emit_16(571);
+emit_16(505);
+emit_16(571);
+emit_16(504);
+emit_16(571);
+emit_16(505);
+emit_16(572);
+emit_16(506);
+emit_16(572);
+emit_16(505);
+emit_16(572);
+emit_16(506);
+emit_16(573);
+emit_16(507);
+emit_16(573);
+emit_16(506);
+emit_16(573);
+emit_16(507);
+emit_16(574);
+emit_16(508);
+emit_16(574);
+emit_16(507);
+emit_16(574);
+emit_16(508);
+emit_16(575);
+emit_16(509);
+emit_16(575);
+emit_16(508);
+emit_16(575);
+emit_16(509);
+emit_16(576);
+emit_16(510);
+emit_16(576);
+emit_16(509);
+emit_16(576);
+emit_16(510);
+emit_16(577);
+emit_16(511);
+emit_16(577);
+emit_16(510);
+emit_16(577);
+emit_16(511);
+emit_16(578);
+emit_16(512);
+emit_16(578);
+emit_16(511);
+emit_16(578);
+emit_16(512);
+emit_16(579);
+emit_16(513);
+emit_16(579);
+emit_16(512);
+emit_16(579);
+emit_16(513);
+emit_16(580);
+emit_16(514);
+emit_16(580);
+emit_16(513);
+emit_16(580);
+emit_16(514);
+emit_16(581);
+emit_16(515);
+emit_16(581);
+emit_16(514);
+emit_16(581);
+emit_16(515);
+emit_16(582);
+emit_16(516);
+emit_16(582);
+emit_16(515);
+emit_16(582);
+emit_16(516);
+emit_16(583);
+emit_16(517);
+emit_16(583);
+emit_16(516);
+emit_16(583);
+emit_16(517);
+emit_16(584);
+emit_16(518);
+emit_16(584);
+emit_16(517);
+emit_16(584);
+emit_16(518);
+emit_16(585);
+emit_16(519);
+emit_16(585);
+emit_16(518);
+emit_16(585);
+emit_16(519);
+emit_16(586);
+emit_16(520);
+emit_16(586);
+emit_16(519);
+emit_16(586);
+emit_16(520);
+emit_16(587);
+emit_16(521);
+emit_16(587);
+emit_16(520);
+emit_16(587);
+emit_16(521);
+emit_16(588);
+emit_16(522);
+emit_16(588);
+emit_16(521);
+emit_16(588);
+emit_16(522);
+emit_16(589);
+emit_16(523);
+emit_16(589);
+emit_16(522);
+emit_16(589);
+emit_16(523);
+emit_16(590);
+emit_16(524);
+emit_16(590);
+emit_16(523);
+emit_16(590);
+emit_16(524);
+emit_16(591);
+emit_16(525);
+emit_16(591);
+emit_16(524);
+emit_16(591);
+emit_16(525);
+emit_16(592);
+emit_16(526);
+emit_16(592);
+emit_16(525);
+emit_16(592);
+emit_16(526);
+emit_16(593);
+emit_16(527);
+emit_16(593);
+emit_16(526);
+emit_16(594);
+emit_16(528);
+emit_16(595);
+emit_16(529);
+emit_16(595);
+emit_16(528);
+emit_16(595);
+emit_16(529);
+emit_16(596);
+emit_16(530);
+emit_16(596);
+emit_16(529);
+emit_16(596);
+emit_16(530);
+emit_16(597);
+emit_16(531);
+emit_16(597);
+emit_16(530);
+emit_16(597);
+emit_16(531);
+emit_16(598);
+emit_16(532);
+emit_16(598);
+emit_16(531);
+emit_16(598);
+emit_16(532);
+emit_16(599);
+emit_16(533);
+emit_16(599);
+emit_16(532);
+emit_16(599);
+emit_16(533);
+emit_16(600);
+emit_16(534);
+emit_16(600);
+emit_16(533);
+emit_16(600);
+emit_16(534);
+emit_16(601);
+emit_16(535);
+emit_16(601);
+emit_16(534);
+emit_16(601);
+emit_16(535);
+emit_16(602);
+emit_16(536);
+emit_16(602);
+emit_16(535);
+emit_16(602);
+emit_16(536);
+emit_16(603);
+emit_16(537);
+emit_16(603);
+emit_16(536);
+emit_16(603);
+emit_16(537);
+emit_16(604);
+emit_16(538);
+emit_16(604);
+emit_16(537);
+emit_16(604);
+emit_16(538);
+emit_16(605);
+emit_16(539);
+emit_16(605);
+emit_16(538);
+emit_16(605);
+emit_16(539);
+emit_16(606);
+emit_16(540);
+emit_16(606);
+emit_16(539);
+emit_16(606);
+emit_16(540);
+emit_16(607);
+emit_16(541);
+emit_16(607);
+emit_16(540);
+emit_16(607);
+emit_16(541);
+emit_16(608);
+emit_16(542);
+emit_16(608);
+emit_16(541);
+emit_16(608);
+emit_16(542);
+emit_16(609);
+emit_16(543);
+emit_16(609);
+emit_16(542);
+emit_16(609);
+emit_16(543);
+emit_16(610);
+emit_16(544);
+emit_16(610);
+emit_16(543);
+emit_16(610);
+emit_16(544);
+emit_16(611);
+emit_16(545);
+emit_16(611);
+emit_16(544);
+emit_16(611);
+emit_16(545);
+emit_16(612);
+emit_16(546);
+emit_16(612);
+emit_16(545);
+emit_16(612);
+emit_16(546);
+emit_16(613);
+emit_16(547);
+emit_16(613);
+emit_16(546);
+emit_16(613);
+emit_16(547);
+emit_16(614);
+emit_16(548);
+emit_16(614);
+emit_16(547);
+emit_16(614);
+emit_16(548);
+emit_16(615);
+emit_16(549);
+emit_16(615);
+emit_16(548);
+emit_16(615);
+emit_16(549);
+emit_16(616);
+emit_16(550);
+emit_16(616);
+emit_16(549);
+emit_16(616);
+emit_16(550);
+emit_16(617);
+emit_16(551);
+emit_16(617);
+emit_16(550);
+emit_16(617);
+emit_16(551);
+emit_16(618);
+emit_16(552);
+emit_16(618);
+emit_16(551);
+emit_16(618);
+emit_16(552);
+emit_16(619);
+emit_16(553);
+emit_16(619);
+emit_16(552);
+emit_16(619);
+emit_16(553);
+emit_16(620);
+emit_16(554);
+emit_16(620);
+emit_16(553);
+emit_16(620);
+emit_16(554);
+emit_16(621);
+emit_16(555);
+emit_16(621);
+emit_16(554);
+emit_16(621);
+emit_16(555);
+emit_16(622);
+emit_16(556);
+emit_16(622);
+emit_16(555);
+emit_16(622);
+emit_16(556);
+emit_16(623);
+emit_16(557);
+emit_16(623);
+emit_16(556);
+emit_16(623);
+emit_16(557);
+emit_16(624);
+emit_16(558);
+emit_16(624);
+emit_16(557);
+emit_16(624);
+emit_16(558);
+emit_16(625);
+emit_16(559);
+emit_16(625);
+emit_16(558);
+emit_16(625);
+emit_16(559);
+emit_16(626);
+emit_16(560);
+emit_16(626);
+emit_16(559);
+emit_16(626);
+emit_16(560);
+emit_16(627);
+emit_16(561);
+emit_16(627);
+emit_16(560);
+emit_16(627);
+emit_16(561);
+emit_16(628);
+emit_16(562);
+emit_16(628);
+emit_16(561);
+emit_16(628);
+emit_16(562);
+emit_16(629);
+emit_16(563);
+emit_16(629);
+emit_16(562);
+emit_16(629);
+emit_16(563);
+emit_16(630);
+emit_16(564);
+emit_16(630);
+emit_16(563);
+emit_16(630);
+emit_16(564);
+emit_16(631);
+emit_16(565);
+emit_16(631);
+emit_16(564);
+emit_16(631);
+emit_16(565);
+emit_16(632);
+emit_16(566);
+emit_16(632);
+emit_16(565);
+emit_16(632);
+emit_16(566);
+emit_16(633);
+emit_16(567);
+emit_16(633);
+emit_16(566);
+emit_16(633);
+emit_16(567);
+emit_16(634);
+emit_16(568);
+emit_16(634);
+emit_16(567);
+emit_16(634);
+emit_16(568);
+emit_16(635);
+emit_16(569);
+emit_16(635);
+emit_16(568);
+emit_16(635);
+emit_16(569);
+emit_16(636);
+emit_16(570);
+emit_16(636);
+emit_16(569);
+emit_16(636);
+emit_16(570);
+emit_16(637);
+emit_16(571);
+emit_16(637);
+emit_16(570);
+emit_16(637);
+emit_16(571);
+emit_16(638);
+emit_16(572);
+emit_16(638);
+emit_16(571);
+emit_16(638);
+emit_16(572);
+emit_16(639);
+emit_16(573);
+emit_16(639);
+emit_16(572);
+emit_16(639);
+emit_16(573);
+emit_16(640);
+emit_16(574);
+emit_16(640);
+emit_16(573);
+emit_16(640);
+emit_16(574);
+emit_16(641);
+emit_16(575);
+emit_16(641);
+emit_16(574);
+emit_16(641);
+emit_16(575);
+emit_16(642);
+emit_16(576);
+emit_16(642);
+emit_16(575);
+emit_16(642);
+emit_16(576);
+emit_16(643);
+emit_16(577);
+emit_16(643);
+emit_16(576);
+emit_16(643);
+emit_16(577);
+emit_16(644);
+emit_16(578);
+emit_16(644);
+emit_16(577);
+emit_16(644);
+emit_16(578);
+emit_16(645);
+emit_16(579);
+emit_16(645);
+emit_16(578);
+emit_16(645);
+emit_16(579);
+emit_16(646);
+emit_16(580);
+emit_16(646);
+emit_16(579);
+emit_16(646);
+emit_16(580);
+emit_16(647);
+emit_16(581);
+emit_16(647);
+emit_16(580);
+emit_16(647);
+emit_16(581);
+emit_16(648);
+emit_16(582);
+emit_16(648);
+emit_16(581);
+emit_16(648);
+emit_16(582);
+emit_16(649);
+emit_16(583);
+emit_16(649);
+emit_16(582);
+emit_16(649);
+emit_16(583);
+emit_16(650);
+emit_16(584);
+emit_16(650);
+emit_16(583);
+emit_16(650);
+emit_16(584);
+emit_16(651);
+emit_16(585);
+emit_16(651);
+emit_16(584);
+emit_16(651);
+emit_16(585);
+emit_16(652);
+emit_16(586);
+emit_16(652);
+emit_16(585);
+emit_16(652);
+emit_16(586);
+emit_16(653);
+emit_16(587);
+emit_16(653);
+emit_16(586);
+emit_16(653);
+emit_16(587);
+emit_16(654);
+emit_16(588);
+emit_16(654);
+emit_16(587);
+emit_16(654);
+emit_16(588);
+emit_16(655);
+emit_16(589);
+emit_16(655);
+emit_16(588);
+emit_16(655);
+emit_16(589);
+emit_16(656);
+emit_16(590);
+emit_16(656);
+emit_16(589);
+emit_16(656);
+emit_16(590);
+emit_16(657);
+emit_16(591);
+emit_16(657);
+emit_16(590);
+emit_16(657);
+emit_16(591);
+emit_16(658);
+emit_16(592);
+emit_16(658);
+emit_16(591);
+emit_16(658);
+emit_16(592);
+emit_16(659);
+emit_16(593);
+emit_16(659);
+emit_16(592);
+emit_16(660);
+emit_16(594);
+emit_16(661);
+emit_16(595);
+emit_16(661);
+emit_16(594);
+emit_16(661);
+emit_16(595);
+emit_16(662);
+emit_16(596);
+emit_16(662);
+emit_16(595);
+emit_16(662);
+emit_16(596);
+emit_16(663);
+emit_16(597);
+emit_16(663);
+emit_16(596);
+emit_16(663);
+emit_16(597);
+emit_16(664);
+emit_16(598);
+emit_16(664);
+emit_16(597);
+emit_16(664);
+emit_16(598);
+emit_16(665);
+emit_16(599);
+emit_16(665);
+emit_16(598);
+emit_16(665);
+emit_16(599);
+emit_16(666);
+emit_16(600);
+emit_16(666);
+emit_16(599);
+emit_16(666);
+emit_16(600);
+emit_16(667);
+emit_16(601);
+emit_16(667);
+emit_16(600);
+emit_16(667);
+emit_16(601);
+emit_16(668);
+emit_16(602);
+emit_16(668);
+emit_16(601);
+emit_16(668);
+emit_16(602);
+emit_16(669);
+emit_16(603);
+emit_16(669);
+emit_16(602);
+emit_16(669);
+emit_16(603);
+emit_16(670);
+emit_16(604);
+emit_16(670);
+emit_16(603);
+emit_16(670);
+emit_16(604);
+emit_16(671);
+emit_16(605);
+emit_16(671);
+emit_16(604);
+emit_16(671);
+emit_16(605);
+emit_16(672);
+emit_16(606);
+emit_16(672);
+emit_16(605);
+emit_16(672);
+emit_16(606);
+emit_16(673);
+emit_16(607);
+emit_16(673);
+emit_16(606);
+emit_16(673);
+emit_16(607);
+emit_16(674);
+emit_16(608);
+emit_16(674);
+emit_16(607);
+emit_16(674);
+emit_16(608);
+emit_16(675);
+emit_16(609);
+emit_16(675);
+emit_16(608);
+emit_16(675);
+emit_16(609);
+emit_16(676);
+emit_16(610);
+emit_16(676);
+emit_16(609);
+emit_16(676);
+emit_16(610);
+emit_16(677);
+emit_16(611);
+emit_16(677);
+emit_16(610);
+emit_16(677);
+emit_16(611);
+emit_16(678);
+emit_16(612);
+emit_16(678);
+emit_16(611);
+emit_16(678);
+emit_16(612);
+emit_16(679);
+emit_16(613);
+emit_16(679);
+emit_16(612);
+emit_16(679);
+emit_16(613);
+emit_16(680);
+emit_16(614);
+emit_16(680);
+emit_16(613);
+emit_16(680);
+emit_16(614);
+emit_16(681);
+emit_16(615);
+emit_16(681);
+emit_16(614);
+emit_16(681);
+emit_16(615);
+emit_16(682);
+emit_16(616);
+emit_16(682);
+emit_16(615);
+emit_16(682);
+emit_16(616);
+emit_16(683);
+emit_16(617);
+emit_16(683);
+emit_16(616);
+emit_16(683);
+emit_16(617);
+emit_16(684);
+emit_16(618);
+emit_16(684);
+emit_16(617);
+emit_16(684);
+emit_16(618);
+emit_16(685);
+emit_16(619);
+emit_16(685);
+emit_16(618);
+emit_16(685);
+emit_16(619);
+emit_16(686);
+emit_16(620);
+emit_16(686);
+emit_16(619);
+emit_16(686);
+emit_16(620);
+emit_16(687);
+emit_16(621);
+emit_16(687);
+emit_16(620);
+emit_16(687);
+emit_16(621);
+emit_16(688);
+emit_16(622);
+emit_16(688);
+emit_16(621);
+emit_16(688);
+emit_16(622);
+emit_16(689);
+emit_16(623);
+emit_16(689);
+emit_16(622);
+emit_16(689);
+emit_16(623);
+emit_16(690);
+emit_16(624);
+emit_16(690);
+emit_16(623);
+emit_16(690);
+emit_16(624);
+emit_16(691);
+emit_16(625);
+emit_16(691);
+emit_16(624);
+emit_16(691);
+emit_16(625);
+emit_16(692);
+emit_16(626);
+emit_16(692);
+emit_16(625);
+emit_16(692);
+emit_16(626);
+emit_16(693);
+emit_16(627);
+emit_16(693);
+emit_16(626);
+emit_16(693);
+emit_16(627);
+emit_16(694);
+emit_16(628);
+emit_16(694);
+emit_16(627);
+emit_16(694);
+emit_16(628);
+emit_16(695);
+emit_16(629);
+emit_16(695);
+emit_16(628);
+emit_16(695);
+emit_16(629);
+emit_16(696);
+emit_16(630);
+emit_16(696);
+emit_16(629);
+emit_16(696);
+emit_16(630);
+emit_16(697);
+emit_16(631);
+emit_16(697);
+emit_16(630);
+emit_16(697);
+emit_16(631);
+emit_16(698);
+emit_16(632);
+emit_16(698);
+emit_16(631);
+emit_16(698);
+emit_16(632);
+emit_16(699);
+emit_16(633);
+emit_16(699);
+emit_16(632);
+emit_16(699);
+emit_16(633);
+emit_16(700);
+emit_16(634);
+emit_16(700);
+emit_16(633);
+emit_16(700);
+emit_16(634);
+emit_16(701);
+emit_16(635);
+emit_16(701);
+emit_16(634);
+emit_16(701);
+emit_16(635);
+emit_16(702);
+emit_16(636);
+emit_16(702);
+emit_16(635);
+emit_16(702);
+emit_16(636);
+emit_16(703);
+emit_16(637);
+emit_16(703);
+emit_16(636);
+emit_16(703);
+emit_16(637);
+emit_16(704);
+emit_16(638);
+emit_16(704);
+emit_16(637);
+emit_16(704);
+emit_16(638);
+emit_16(705);
+emit_16(639);
+emit_16(705);
+emit_16(638);
+emit_16(705);
+emit_16(639);
+emit_16(706);
+emit_16(640);
+emit_16(706);
+emit_16(639);
+emit_16(706);
+emit_16(640);
+emit_16(707);
+emit_16(641);
+emit_16(707);
+emit_16(640);
+emit_16(707);
+emit_16(641);
+emit_16(708);
+emit_16(642);
+emit_16(708);
+emit_16(641);
+emit_16(708);
+emit_16(642);
+emit_16(709);
+emit_16(643);
+emit_16(709);
+emit_16(642);
+emit_16(709);
+emit_16(643);
+emit_16(710);
+emit_16(644);
+emit_16(710);
+emit_16(643);
+emit_16(710);
+emit_16(644);
+emit_16(711);
+emit_16(645);
+emit_16(711);
+emit_16(644);
+emit_16(711);
+emit_16(645);
+emit_16(712);
+emit_16(646);
+emit_16(712);
+emit_16(645);
+emit_16(712);
+emit_16(646);
+emit_16(713);
+emit_16(647);
+emit_16(713);
+emit_16(646);
+emit_16(713);
+emit_16(647);
+emit_16(714);
+emit_16(648);
+emit_16(714);
+emit_16(647);
+emit_16(714);
+emit_16(648);
+emit_16(715);
+emit_16(649);
+emit_16(715);
+emit_16(648);
+emit_16(715);
+emit_16(649);
+emit_16(716);
+emit_16(650);
+emit_16(716);
+emit_16(649);
+emit_16(716);
+emit_16(650);
+emit_16(717);
+emit_16(651);
+emit_16(717);
+emit_16(650);
+emit_16(717);
+emit_16(651);
+emit_16(718);
+emit_16(652);
+emit_16(718);
+emit_16(651);
+emit_16(718);
+emit_16(652);
+emit_16(719);
+emit_16(653);
+emit_16(719);
+emit_16(652);
+emit_16(719);
+emit_16(653);
+emit_16(720);
+emit_16(654);
+emit_16(720);
+emit_16(653);
+emit_16(720);
+emit_16(654);
+emit_16(721);
+emit_16(655);
+emit_16(721);
+emit_16(654);
+emit_16(721);
+emit_16(655);
+emit_16(722);
+emit_16(656);
+emit_16(722);
+emit_16(655);
+emit_16(722);
+emit_16(656);
+emit_16(723);
+emit_16(657);
+emit_16(723);
+emit_16(656);
+emit_16(723);
+emit_16(657);
+emit_16(724);
+emit_16(658);
+emit_16(724);
+emit_16(657);
+emit_16(724);
+emit_16(658);
+emit_16(725);
+emit_16(659);
+emit_16(725);
+emit_16(658);
+emit_16(726);
+emit_16(660);
+emit_16(727);
+emit_16(661);
+emit_16(727);
+emit_16(660);
+emit_16(727);
+emit_16(661);
+emit_16(728);
+emit_16(662);
+emit_16(728);
+emit_16(661);
+emit_16(728);
+emit_16(662);
+emit_16(729);
+emit_16(663);
+emit_16(729);
+emit_16(662);
+emit_16(729);
+emit_16(663);
+emit_16(730);
+emit_16(664);
+emit_16(730);
+emit_16(663);
+emit_16(730);
+emit_16(664);
+emit_16(731);
+emit_16(665);
+emit_16(731);
+emit_16(664);
+emit_16(731);
+emit_16(665);
+emit_16(732);
+emit_16(666);
+emit_16(732);
+emit_16(665);
+emit_16(732);
+emit_16(666);
+emit_16(733);
+emit_16(667);
+emit_16(733);
+emit_16(666);
+emit_16(733);
+emit_16(667);
+emit_16(734);
+emit_16(668);
+emit_16(734);
+emit_16(667);
+emit_16(734);
+emit_16(668);
+emit_16(735);
+emit_16(669);
+emit_16(735);
+emit_16(668);
+emit_16(735);
+emit_16(669);
+emit_16(736);
+emit_16(670);
+emit_16(736);
+emit_16(669);
+emit_16(736);
+emit_16(670);
+emit_16(737);
+emit_16(671);
+emit_16(737);
+emit_16(670);
+emit_16(737);
+emit_16(671);
+emit_16(738);
+emit_16(672);
+emit_16(738);
+emit_16(671);
+emit_16(738);
+emit_16(672);
+emit_16(739);
+emit_16(673);
+emit_16(739);
+emit_16(672);
+emit_16(739);
+emit_16(673);
+emit_16(740);
+emit_16(674);
+emit_16(740);
+emit_16(673);
+emit_16(740);
+emit_16(674);
+emit_16(741);
+emit_16(675);
+emit_16(741);
+emit_16(674);
+emit_16(741);
+emit_16(675);
+emit_16(742);
+emit_16(676);
+emit_16(742);
+emit_16(675);
+emit_16(742);
+emit_16(676);
+emit_16(743);
+emit_16(677);
+emit_16(743);
+emit_16(676);
+emit_16(743);
+emit_16(677);
+emit_16(744);
+emit_16(678);
+emit_16(744);
+emit_16(677);
+emit_16(744);
+emit_16(678);
+emit_16(745);
+emit_16(679);
+emit_16(745);
+emit_16(678);
+emit_16(745);
+emit_16(679);
+emit_16(746);
+emit_16(680);
+emit_16(746);
+emit_16(679);
+emit_16(746);
+emit_16(680);
+emit_16(747);
+emit_16(681);
+emit_16(747);
+emit_16(680);
+emit_16(747);
+emit_16(681);
+emit_16(748);
+emit_16(682);
+emit_16(748);
+emit_16(681);
+emit_16(748);
+emit_16(682);
+emit_16(749);
+emit_16(683);
+emit_16(749);
+emit_16(682);
+emit_16(749);
+emit_16(683);
+emit_16(750);
+emit_16(684);
+emit_16(750);
+emit_16(683);
+emit_16(750);
+emit_16(684);
+emit_16(751);
+emit_16(685);
+emit_16(751);
+emit_16(684);
+emit_16(751);
+emit_16(685);
+emit_16(752);
+emit_16(686);
+emit_16(752);
+emit_16(685);
+emit_16(752);
+emit_16(686);
+emit_16(753);
+emit_16(687);
+emit_16(753);
+emit_16(686);
+emit_16(753);
+emit_16(687);
+emit_16(754);
+emit_16(688);
+emit_16(754);
+emit_16(687);
+emit_16(754);
+emit_16(688);
+emit_16(755);
+emit_16(689);
+emit_16(755);
+emit_16(688);
+emit_16(755);
+emit_16(689);
+emit_16(756);
+emit_16(690);
+emit_16(756);
+emit_16(689);
+emit_16(756);
+emit_16(690);
+emit_16(757);
+emit_16(691);
+emit_16(757);
+emit_16(690);
+emit_16(757);
+emit_16(691);
+emit_16(758);
+emit_16(692);
+emit_16(758);
+emit_16(691);
+emit_16(758);
+emit_16(692);
+emit_16(759);
+emit_16(693);
+emit_16(759);
+emit_16(692);
+emit_16(759);
+emit_16(693);
+emit_16(760);
+emit_16(694);
+emit_16(760);
+emit_16(693);
+emit_16(760);
+emit_16(694);
+emit_16(761);
+emit_16(695);
+emit_16(761);
+emit_16(694);
+emit_16(761);
+emit_16(695);
+emit_16(762);
+emit_16(696);
+emit_16(762);
+emit_16(695);
+emit_16(762);
+emit_16(696);
+emit_16(763);
+emit_16(697);
+emit_16(763);
+emit_16(696);
+emit_16(763);
+emit_16(697);
+emit_16(764);
+emit_16(698);
+emit_16(764);
+emit_16(697);
+emit_16(764);
+emit_16(698);
+emit_16(765);
+emit_16(699);
+emit_16(765);
+emit_16(698);
+emit_16(765);
+emit_16(699);
+emit_16(766);
+emit_16(700);
+emit_16(766);
+emit_16(699);
+emit_16(766);
+emit_16(700);
+emit_16(767);
+emit_16(701);
+emit_16(767);
+emit_16(700);
+emit_16(767);
+emit_16(701);
+emit_16(768);
+emit_16(702);
+emit_16(768);
+emit_16(701);
+emit_16(768);
+emit_16(702);
+emit_16(769);
+emit_16(703);
+emit_16(769);
+emit_16(702);
+emit_16(769);
+emit_16(703);
+emit_16(770);
+emit_16(704);
+emit_16(770);
+emit_16(703);
+emit_16(770);
+emit_16(704);
+emit_16(771);
+emit_16(705);
+emit_16(771);
+emit_16(704);
+emit_16(771);
+emit_16(705);
+emit_16(772);
+emit_16(706);
+emit_16(772);
+emit_16(705);
+emit_16(772);
+emit_16(706);
+emit_16(773);
+emit_16(707);
+emit_16(773);
+emit_16(706);
+emit_16(773);
+emit_16(707);
+emit_16(774);
+emit_16(708);
+emit_16(774);
+emit_16(707);
+emit_16(774);
+emit_16(708);
+emit_16(775);
+emit_16(709);
+emit_16(775);
+emit_16(708);
+emit_16(775);
+emit_16(709);
+emit_16(776);
+emit_16(710);
+emit_16(776);
+emit_16(709);
+emit_16(776);
+emit_16(710);
+emit_16(777);
+emit_16(711);
+emit_16(777);
+emit_16(710);
+emit_16(777);
+emit_16(711);
+emit_16(778);
+emit_16(712);
+emit_16(778);
+emit_16(711);
+emit_16(778);
+emit_16(712);
+emit_16(779);
+emit_16(713);
+emit_16(779);
+emit_16(712);
+emit_16(779);
+emit_16(713);
+emit_16(780);
+emit_16(714);
+emit_16(780);
+emit_16(713);
+emit_16(780);
+emit_16(714);
+emit_16(781);
+emit_16(715);
+emit_16(781);
+emit_16(714);
+emit_16(781);
+emit_16(715);
+emit_16(782);
+emit_16(716);
+emit_16(782);
+emit_16(715);
+emit_16(782);
+emit_16(716);
+emit_16(783);
+emit_16(717);
+emit_16(783);
+emit_16(716);
+emit_16(783);
+emit_16(717);
+emit_16(784);
+emit_16(718);
+emit_16(784);
+emit_16(717);
+emit_16(784);
+emit_16(718);
+emit_16(785);
+emit_16(719);
+emit_16(785);
+emit_16(718);
+emit_16(785);
+emit_16(719);
+emit_16(786);
+emit_16(720);
+emit_16(786);
+emit_16(719);
+emit_16(786);
+emit_16(720);
+emit_16(787);
+emit_16(721);
+emit_16(787);
+emit_16(720);
+emit_16(787);
+emit_16(721);
+emit_16(788);
+emit_16(722);
+emit_16(788);
+emit_16(721);
+emit_16(788);
+emit_16(722);
+emit_16(789);
+emit_16(723);
+emit_16(789);
+emit_16(722);
+emit_16(789);
+emit_16(723);
+emit_16(790);
+emit_16(724);
+emit_16(790);
+emit_16(723);
+emit_16(790);
+emit_16(724);
+emit_16(791);
+emit_16(725);
+emit_16(791);
+emit_16(724);
+emit_16(792);
+emit_16(726);
+emit_16(793);
+emit_16(727);
+emit_16(793);
+emit_16(726);
+emit_16(793);
+emit_16(727);
+emit_16(794);
+emit_16(728);
+emit_16(794);
+emit_16(727);
+emit_16(794);
+emit_16(728);
+emit_16(795);
+emit_16(729);
+emit_16(795);
+emit_16(728);
+emit_16(795);
+emit_16(729);
+emit_16(796);
+emit_16(730);
+emit_16(796);
+emit_16(729);
+emit_16(796);
+emit_16(730);
+emit_16(797);
+emit_16(731);
+emit_16(797);
+emit_16(730);
+emit_16(797);
+emit_16(731);
+emit_16(798);
+emit_16(732);
+emit_16(798);
+emit_16(731);
+emit_16(798);
+emit_16(732);
+emit_16(799);
+emit_16(733);
+emit_16(799);
+emit_16(732);
+emit_16(799);
+emit_16(733);
+emit_16(800);
+emit_16(734);
+emit_16(800);
+emit_16(733);
+emit_16(800);
+emit_16(734);
+emit_16(801);
+emit_16(735);
+emit_16(801);
+emit_16(734);
+emit_16(801);
+emit_16(735);
+emit_16(802);
+emit_16(736);
+emit_16(802);
+emit_16(735);
+emit_16(802);
+emit_16(736);
+emit_16(803);
+emit_16(737);
+emit_16(803);
+emit_16(736);
+emit_16(803);
+emit_16(737);
+emit_16(804);
+emit_16(738);
+emit_16(804);
+emit_16(737);
+emit_16(804);
+emit_16(738);
+emit_16(805);
+emit_16(739);
+emit_16(805);
+emit_16(738);
+emit_16(805);
+emit_16(739);
+emit_16(806);
+emit_16(740);
+emit_16(806);
+emit_16(739);
+emit_16(806);
+emit_16(740);
+emit_16(807);
+emit_16(741);
+emit_16(807);
+emit_16(740);
+emit_16(807);
+emit_16(741);
+emit_16(808);
+emit_16(742);
+emit_16(808);
+emit_16(741);
+emit_16(808);
+emit_16(742);
+emit_16(809);
+emit_16(743);
+emit_16(809);
+emit_16(742);
+emit_16(809);
+emit_16(743);
+emit_16(810);
+emit_16(744);
+emit_16(810);
+emit_16(743);
+emit_16(810);
+emit_16(744);
+emit_16(811);
+emit_16(745);
+emit_16(811);
+emit_16(744);
+emit_16(811);
+emit_16(745);
+emit_16(812);
+emit_16(746);
+emit_16(812);
+emit_16(745);
+emit_16(812);
+emit_16(746);
+emit_16(813);
+emit_16(747);
+emit_16(813);
+emit_16(746);
+emit_16(813);
+emit_16(747);
+emit_16(814);
+emit_16(748);
+emit_16(814);
+emit_16(747);
+emit_16(814);
+emit_16(748);
+emit_16(815);
+emit_16(749);
+emit_16(815);
+emit_16(748);
+emit_16(815);
+emit_16(749);
+emit_16(816);
+emit_16(750);
+emit_16(816);
+emit_16(749);
+emit_16(816);
+emit_16(750);
+emit_16(817);
+emit_16(751);
+emit_16(817);
+emit_16(750);
+emit_16(817);
+emit_16(751);
+emit_16(818);
+emit_16(752);
+emit_16(818);
+emit_16(751);
+emit_16(818);
+emit_16(752);
+emit_16(819);
+emit_16(753);
+emit_16(819);
+emit_16(752);
+emit_16(819);
+emit_16(753);
+emit_16(820);
+emit_16(754);
+emit_16(820);
+emit_16(753);
+emit_16(820);
+emit_16(754);
+emit_16(821);
+emit_16(755);
+emit_16(821);
+emit_16(754);
+emit_16(821);
+emit_16(755);
+emit_16(822);
+emit_16(756);
+emit_16(822);
+emit_16(755);
+emit_16(822);
+emit_16(756);
+emit_16(823);
+emit_16(757);
+emit_16(823);
+emit_16(756);
+emit_16(823);
+emit_16(757);
+emit_16(824);
+emit_16(758);
+emit_16(824);
+emit_16(757);
+emit_16(824);
+emit_16(758);
+emit_16(825);
+emit_16(759);
+emit_16(825);
+emit_16(758);
+emit_16(825);
+emit_16(759);
+emit_16(826);
+emit_16(760);
+emit_16(826);
+emit_16(759);
+emit_16(826);
+emit_16(760);
+emit_16(827);
+emit_16(761);
+emit_16(827);
+emit_16(760);
+emit_16(827);
+emit_16(761);
+emit_16(828);
+emit_16(762);
+emit_16(828);
+emit_16(761);
+emit_16(828);
+emit_16(762);
+emit_16(829);
+emit_16(763);
+emit_16(829);
+emit_16(762);
+emit_16(829);
+emit_16(763);
+emit_16(830);
+emit_16(764);
+emit_16(830);
+emit_16(763);
+emit_16(830);
+emit_16(764);
+emit_16(831);
+emit_16(765);
+emit_16(831);
+emit_16(764);
+emit_16(831);
+emit_16(765);
+emit_16(832);
+emit_16(766);
+emit_16(832);
+emit_16(765);
+emit_16(832);
+emit_16(766);
+emit_16(833);
+emit_16(767);
+emit_16(833);
+emit_16(766);
+emit_16(833);
+emit_16(767);
+emit_16(834);
+emit_16(768);
+emit_16(834);
+emit_16(767);
+emit_16(834);
+emit_16(768);
+emit_16(835);
+emit_16(769);
+emit_16(835);
+emit_16(768);
+emit_16(835);
+emit_16(769);
+emit_16(836);
+emit_16(770);
+emit_16(836);
+emit_16(769);
+emit_16(836);
+emit_16(770);
+emit_16(837);
+emit_16(771);
+emit_16(837);
+emit_16(770);
+emit_16(837);
+emit_16(771);
+emit_16(838);
+emit_16(772);
+emit_16(838);
+emit_16(771);
+emit_16(838);
+emit_16(772);
+emit_16(839);
+emit_16(773);
+emit_16(839);
+emit_16(772);
+emit_16(839);
+emit_16(773);
+emit_16(840);
+emit_16(774);
+emit_16(840);
+emit_16(773);
+emit_16(840);
+emit_16(774);
+emit_16(841);
+emit_16(775);
+emit_16(841);
+emit_16(774);
+emit_16(841);
+emit_16(775);
+emit_16(842);
+emit_16(776);
+emit_16(842);
+emit_16(775);
+emit_16(842);
+emit_16(776);
+emit_16(843);
+emit_16(777);
+emit_16(843);
+emit_16(776);
+emit_16(843);
+emit_16(777);
+emit_16(844);
+emit_16(778);
+emit_16(844);
+emit_16(777);
+emit_16(844);
+emit_16(778);
+emit_16(845);
+emit_16(779);
+emit_16(845);
+emit_16(778);
+emit_16(845);
+emit_16(779);
+emit_16(846);
+emit_16(780);
+emit_16(846);
+emit_16(779);
+emit_16(846);
+emit_16(780);
+emit_16(847);
+emit_16(781);
+emit_16(847);
+emit_16(780);
+emit_16(847);
+emit_16(781);
+emit_16(848);
+emit_16(782);
+emit_16(848);
+emit_16(781);
+emit_16(848);
+emit_16(782);
+emit_16(849);
+emit_16(783);
+emit_16(849);
+emit_16(782);
+emit_16(849);
+emit_16(783);
+emit_16(850);
+emit_16(784);
+emit_16(850);
+emit_16(783);
+emit_16(850);
+emit_16(784);
+emit_16(851);
+emit_16(785);
+emit_16(851);
+emit_16(784);
+emit_16(851);
+emit_16(785);
+emit_16(852);
+emit_16(786);
+emit_16(852);
+emit_16(785);
+emit_16(852);
+emit_16(786);
+emit_16(853);
+emit_16(787);
+emit_16(853);
+emit_16(786);
+emit_16(853);
+emit_16(787);
+emit_16(854);
+emit_16(788);
+emit_16(854);
+emit_16(787);
+emit_16(854);
+emit_16(788);
+emit_16(855);
+emit_16(789);
+emit_16(855);
+emit_16(788);
+emit_16(855);
+emit_16(789);
+emit_16(856);
+emit_16(790);
+emit_16(856);
+emit_16(789);
+emit_16(856);
+emit_16(790);
+emit_16(857);
+emit_16(791);
+emit_16(857);
+emit_16(790);
+emit_16(858);
+emit_16(792);
+emit_16(859);
+emit_16(793);
+emit_16(859);
+emit_16(792);
+emit_16(859);
+emit_16(793);
+emit_16(860);
+emit_16(794);
+emit_16(860);
+emit_16(793);
+emit_16(860);
+emit_16(794);
+emit_16(861);
+emit_16(795);
+emit_16(861);
+emit_16(794);
+emit_16(861);
+emit_16(795);
+emit_16(862);
+emit_16(796);
+emit_16(862);
+emit_16(795);
+emit_16(862);
+emit_16(796);
+emit_16(863);
+emit_16(797);
+emit_16(863);
+emit_16(796);
+emit_16(863);
+emit_16(797);
+emit_16(864);
+emit_16(798);
+emit_16(864);
+emit_16(797);
+emit_16(864);
+emit_16(798);
+emit_16(865);
+emit_16(799);
+emit_16(865);
+emit_16(798);
+emit_16(865);
+emit_16(799);
+emit_16(866);
+emit_16(800);
+emit_16(866);
+emit_16(799);
+emit_16(866);
+emit_16(800);
+emit_16(867);
+emit_16(801);
+emit_16(867);
+emit_16(800);
+emit_16(867);
+emit_16(801);
+emit_16(868);
+emit_16(802);
+emit_16(868);
+emit_16(801);
+emit_16(868);
+emit_16(802);
+emit_16(869);
+emit_16(803);
+emit_16(869);
+emit_16(802);
+emit_16(869);
+emit_16(803);
+emit_16(870);
+emit_16(804);
+emit_16(870);
+emit_16(803);
+emit_16(870);
+emit_16(804);
+emit_16(871);
+emit_16(805);
+emit_16(871);
+emit_16(804);
+emit_16(871);
+emit_16(805);
+emit_16(872);
+emit_16(806);
+emit_16(872);
+emit_16(805);
+emit_16(872);
+emit_16(806);
+emit_16(873);
+emit_16(807);
+emit_16(873);
+emit_16(806);
+emit_16(873);
+emit_16(807);
+emit_16(874);
+emit_16(808);
+emit_16(874);
+emit_16(807);
+emit_16(874);
+emit_16(808);
+emit_16(875);
+emit_16(809);
+emit_16(875);
+emit_16(808);
+emit_16(875);
+emit_16(809);
+emit_16(876);
+emit_16(810);
+emit_16(876);
+emit_16(809);
+emit_16(876);
+emit_16(810);
+emit_16(877);
+emit_16(811);
+emit_16(877);
+emit_16(810);
+emit_16(877);
+emit_16(811);
+emit_16(878);
+emit_16(812);
+emit_16(878);
+emit_16(811);
+emit_16(878);
+emit_16(812);
+emit_16(879);
+emit_16(813);
+emit_16(879);
+emit_16(812);
+emit_16(879);
+emit_16(813);
+emit_16(880);
+emit_16(814);
+emit_16(880);
+emit_16(813);
+emit_16(880);
+emit_16(814);
+emit_16(881);
+emit_16(815);
+emit_16(881);
+emit_16(814);
+emit_16(881);
+emit_16(815);
+emit_16(882);
+emit_16(816);
+emit_16(882);
+emit_16(815);
+emit_16(882);
+emit_16(816);
+emit_16(883);
+emit_16(817);
+emit_16(883);
+emit_16(816);
+emit_16(883);
+emit_16(817);
+emit_16(884);
+emit_16(818);
+emit_16(884);
+emit_16(817);
+emit_16(884);
+emit_16(818);
+emit_16(885);
+emit_16(819);
+emit_16(885);
+emit_16(818);
+emit_16(885);
+emit_16(819);
+emit_16(886);
+emit_16(820);
+emit_16(886);
+emit_16(819);
+emit_16(886);
+emit_16(820);
+emit_16(887);
+emit_16(821);
+emit_16(887);
+emit_16(820);
+emit_16(887);
+emit_16(821);
+emit_16(888);
+emit_16(822);
+emit_16(888);
+emit_16(821);
+emit_16(888);
+emit_16(822);
+emit_16(889);
+emit_16(823);
+emit_16(889);
+emit_16(822);
+emit_16(889);
+emit_16(823);
+emit_16(890);
+emit_16(824);
+emit_16(890);
+emit_16(823);
+emit_16(890);
+emit_16(824);
+emit_16(891);
+emit_16(825);
+emit_16(891);
+emit_16(824);
+emit_16(891);
+emit_16(825);
+emit_16(892);
+emit_16(826);
+emit_16(892);
+emit_16(825);
+emit_16(892);
+emit_16(826);
+emit_16(893);
+emit_16(827);
+emit_16(893);
+emit_16(826);
+emit_16(893);
+emit_16(827);
+emit_16(894);
+emit_16(828);
+emit_16(894);
+emit_16(827);
+emit_16(894);
+emit_16(828);
+emit_16(895);
+emit_16(829);
+emit_16(895);
+emit_16(828);
+emit_16(895);
+emit_16(829);
+emit_16(896);
+emit_16(830);
+emit_16(896);
+emit_16(829);
+emit_16(896);
+emit_16(830);
+emit_16(897);
+emit_16(831);
+emit_16(897);
+emit_16(830);
+emit_16(897);
+emit_16(831);
+emit_16(898);
+emit_16(832);
+emit_16(898);
+emit_16(831);
+emit_16(898);
+emit_16(832);
+emit_16(899);
+emit_16(833);
+emit_16(899);
+emit_16(832);
+emit_16(899);
+emit_16(833);
+emit_16(900);
+emit_16(834);
+emit_16(900);
+emit_16(833);
+emit_16(900);
+emit_16(834);
+emit_16(901);
+emit_16(835);
+emit_16(901);
+emit_16(834);
+emit_16(901);
+emit_16(835);
+emit_16(902);
+emit_16(836);
+emit_16(902);
+emit_16(835);
+emit_16(902);
+emit_16(836);
+emit_16(903);
+emit_16(837);
+emit_16(903);
+emit_16(836);
+emit_16(903);
+emit_16(837);
+emit_16(904);
+emit_16(838);
+emit_16(904);
+emit_16(837);
+emit_16(904);
+emit_16(838);
+emit_16(905);
+emit_16(839);
+emit_16(905);
+emit_16(838);
+emit_16(905);
+emit_16(839);
+emit_16(906);
+emit_16(840);
+emit_16(906);
+emit_16(839);
+emit_16(906);
+emit_16(840);
+emit_16(907);
+emit_16(841);
+emit_16(907);
+emit_16(840);
+emit_16(907);
+emit_16(841);
+emit_16(908);
+emit_16(842);
+emit_16(908);
+emit_16(841);
+emit_16(908);
+emit_16(842);
+emit_16(909);
+emit_16(843);
+emit_16(909);
+emit_16(842);
+emit_16(909);
+emit_16(843);
+emit_16(910);
+emit_16(844);
+emit_16(910);
+emit_16(843);
+emit_16(910);
+emit_16(844);
+emit_16(911);
+emit_16(845);
+emit_16(911);
+emit_16(844);
+emit_16(911);
+emit_16(845);
+emit_16(912);
+emit_16(846);
+emit_16(912);
+emit_16(845);
+emit_16(912);
+emit_16(846);
+emit_16(913);
+emit_16(847);
+emit_16(913);
+emit_16(846);
+emit_16(913);
+emit_16(847);
+emit_16(914);
+emit_16(848);
+emit_16(914);
+emit_16(847);
+emit_16(914);
+emit_16(848);
+emit_16(915);
+emit_16(849);
+emit_16(915);
+emit_16(848);
+emit_16(915);
+emit_16(849);
+emit_16(916);
+emit_16(850);
+emit_16(916);
+emit_16(849);
+emit_16(916);
+emit_16(850);
+emit_16(917);
+emit_16(851);
+emit_16(917);
+emit_16(850);
+emit_16(917);
+emit_16(851);
+emit_16(918);
+emit_16(852);
+emit_16(918);
+emit_16(851);
+emit_16(918);
+emit_16(852);
+emit_16(919);
+emit_16(853);
+emit_16(919);
+emit_16(852);
+emit_16(919);
+emit_16(853);
+emit_16(920);
+emit_16(854);
+emit_16(920);
+emit_16(853);
+emit_16(920);
+emit_16(854);
+emit_16(921);
+emit_16(855);
+emit_16(921);
+emit_16(854);
+emit_16(921);
+emit_16(855);
+emit_16(922);
+emit_16(856);
+emit_16(922);
+emit_16(855);
+emit_16(922);
+emit_16(856);
+emit_16(923);
+emit_16(857);
+emit_16(923);
+emit_16(856);
+emit_16(924);
+emit_16(858);
+emit_16(925);
+emit_16(859);
+emit_16(925);
+emit_16(858);
+emit_16(925);
+emit_16(859);
+emit_16(926);
+emit_16(860);
+emit_16(926);
+emit_16(859);
+emit_16(926);
+emit_16(860);
+emit_16(927);
+emit_16(861);
+emit_16(927);
+emit_16(860);
+emit_16(927);
+emit_16(861);
+emit_16(928);
+emit_16(862);
+emit_16(928);
+emit_16(861);
+emit_16(928);
+emit_16(862);
+emit_16(929);
+emit_16(863);
+emit_16(929);
+emit_16(862);
+emit_16(929);
+emit_16(863);
+emit_16(930);
+emit_16(864);
+emit_16(930);
+emit_16(863);
+emit_16(930);
+emit_16(864);
+emit_16(931);
+emit_16(865);
+emit_16(931);
+emit_16(864);
+emit_16(931);
+emit_16(865);
+emit_16(932);
+emit_16(866);
+emit_16(932);
+emit_16(865);
+emit_16(932);
+emit_16(866);
+emit_16(933);
+emit_16(867);
+emit_16(933);
+emit_16(866);
+emit_16(933);
+emit_16(867);
+emit_16(934);
+emit_16(868);
+emit_16(934);
+emit_16(867);
+emit_16(934);
+emit_16(868);
+emit_16(935);
+emit_16(869);
+emit_16(935);
+emit_16(868);
+emit_16(935);
+emit_16(869);
+emit_16(936);
+emit_16(870);
+emit_16(936);
+emit_16(869);
+emit_16(936);
+emit_16(870);
+emit_16(937);
+emit_16(871);
+emit_16(937);
+emit_16(870);
+emit_16(937);
+emit_16(871);
+emit_16(938);
+emit_16(872);
+emit_16(938);
+emit_16(871);
+emit_16(938);
+emit_16(872);
+emit_16(939);
+emit_16(873);
+emit_16(939);
+emit_16(872);
+emit_16(939);
+emit_16(873);
+emit_16(940);
+emit_16(874);
+emit_16(940);
+emit_16(873);
+emit_16(940);
+emit_16(874);
+emit_16(941);
+emit_16(875);
+emit_16(941);
+emit_16(874);
+emit_16(941);
+emit_16(875);
+emit_16(942);
+emit_16(876);
+emit_16(942);
+emit_16(875);
+emit_16(942);
+emit_16(876);
+emit_16(943);
+emit_16(877);
+emit_16(943);
+emit_16(876);
+emit_16(943);
+emit_16(877);
+emit_16(944);
+emit_16(878);
+emit_16(944);
+emit_16(877);
+emit_16(944);
+emit_16(878);
+emit_16(945);
+emit_16(879);
+emit_16(945);
+emit_16(878);
+emit_16(945);
+emit_16(879);
+emit_16(946);
+emit_16(880);
+emit_16(946);
+emit_16(879);
+emit_16(946);
+emit_16(880);
+emit_16(947);
+emit_16(881);
+emit_16(947);
+emit_16(880);
+emit_16(947);
+emit_16(881);
+emit_16(948);
+emit_16(882);
+emit_16(948);
+emit_16(881);
+emit_16(948);
+emit_16(882);
+emit_16(949);
+emit_16(883);
+emit_16(949);
+emit_16(882);
+emit_16(949);
+emit_16(883);
+emit_16(950);
+emit_16(884);
+emit_16(950);
+emit_16(883);
+emit_16(950);
+emit_16(884);
+emit_16(951);
+emit_16(885);
+emit_16(951);
+emit_16(884);
+emit_16(951);
+emit_16(885);
+emit_16(952);
+emit_16(886);
+emit_16(952);
+emit_16(885);
+emit_16(952);
+emit_16(886);
+emit_16(953);
+emit_16(887);
+emit_16(953);
+emit_16(886);
+emit_16(953);
+emit_16(887);
+emit_16(954);
+emit_16(888);
+emit_16(954);
+emit_16(887);
+emit_16(954);
+emit_16(888);
+emit_16(955);
+emit_16(889);
+emit_16(955);
+emit_16(888);
+emit_16(955);
+emit_16(889);
+emit_16(956);
+emit_16(890);
+emit_16(956);
+emit_16(889);
+emit_16(956);
+emit_16(890);
+emit_16(957);
+emit_16(891);
+emit_16(957);
+emit_16(890);
+emit_16(957);
+emit_16(891);
+emit_16(958);
+emit_16(892);
+emit_16(958);
+emit_16(891);
+emit_16(958);
+emit_16(892);
+emit_16(959);
+emit_16(893);
+emit_16(959);
+emit_16(892);
+emit_16(959);
+emit_16(893);
+emit_16(960);
+emit_16(894);
+emit_16(960);
+emit_16(893);
+emit_16(960);
+emit_16(894);
+emit_16(961);
+emit_16(895);
+emit_16(961);
+emit_16(894);
+emit_16(961);
+emit_16(895);
+emit_16(962);
+emit_16(896);
+emit_16(962);
+emit_16(895);
+emit_16(962);
+emit_16(896);
+emit_16(963);
+emit_16(897);
+emit_16(963);
+emit_16(896);
+emit_16(963);
+emit_16(897);
+emit_16(964);
+emit_16(898);
+emit_16(964);
+emit_16(897);
+emit_16(964);
+emit_16(898);
+emit_16(965);
+emit_16(899);
+emit_16(965);
+emit_16(898);
+emit_16(965);
+emit_16(899);
+emit_16(966);
+emit_16(900);
+emit_16(966);
+emit_16(899);
+emit_16(966);
+emit_16(900);
+emit_16(967);
+emit_16(901);
+emit_16(967);
+emit_16(900);
+emit_16(967);
+emit_16(901);
+emit_16(968);
+emit_16(902);
+emit_16(968);
+emit_16(901);
+emit_16(968);
+emit_16(902);
+emit_16(969);
+emit_16(903);
+emit_16(969);
+emit_16(902);
+emit_16(969);
+emit_16(903);
+emit_16(970);
+emit_16(904);
+emit_16(970);
+emit_16(903);
+emit_16(970);
+emit_16(904);
+emit_16(971);
+emit_16(905);
+emit_16(971);
+emit_16(904);
+emit_16(971);
+emit_16(905);
+emit_16(972);
+emit_16(906);
+emit_16(972);
+emit_16(905);
+emit_16(972);
+emit_16(906);
+emit_16(973);
+emit_16(907);
+emit_16(973);
+emit_16(906);
+emit_16(973);
+emit_16(907);
+emit_16(974);
+emit_16(908);
+emit_16(974);
+emit_16(907);
+emit_16(974);
+emit_16(908);
+emit_16(975);
+emit_16(909);
+emit_16(975);
+emit_16(908);
+emit_16(975);
+emit_16(909);
+emit_16(976);
+emit_16(910);
+emit_16(976);
+emit_16(909);
+emit_16(976);
+emit_16(910);
+emit_16(977);
+emit_16(911);
+emit_16(977);
+emit_16(910);
+emit_16(977);
+emit_16(911);
+emit_16(978);
+emit_16(912);
+emit_16(978);
+emit_16(911);
+emit_16(978);
+emit_16(912);
+emit_16(979);
+emit_16(913);
+emit_16(979);
+emit_16(912);
+emit_16(979);
+emit_16(913);
+emit_16(980);
+emit_16(914);
+emit_16(980);
+emit_16(913);
+emit_16(980);
+emit_16(914);
+emit_16(981);
+emit_16(915);
+emit_16(981);
+emit_16(914);
+emit_16(981);
+emit_16(915);
+emit_16(982);
+emit_16(916);
+emit_16(982);
+emit_16(915);
+emit_16(982);
+emit_16(916);
+emit_16(983);
+emit_16(917);
+emit_16(983);
+emit_16(916);
+emit_16(983);
+emit_16(917);
+emit_16(984);
+emit_16(918);
+emit_16(984);
+emit_16(917);
+emit_16(984);
+emit_16(918);
+emit_16(985);
+emit_16(919);
+emit_16(985);
+emit_16(918);
+emit_16(985);
+emit_16(919);
+emit_16(986);
+emit_16(920);
+emit_16(986);
+emit_16(919);
+emit_16(986);
+emit_16(920);
+emit_16(987);
+emit_16(921);
+emit_16(987);
+emit_16(920);
+emit_16(987);
+emit_16(921);
+emit_16(988);
+emit_16(922);
+emit_16(988);
+emit_16(921);
+emit_16(988);
+emit_16(922);
+emit_16(989);
+emit_16(923);
+emit_16(989);
+emit_16(922);
+emit_16(990);
+emit_16(924);
+emit_16(991);
+emit_16(925);
+emit_16(991);
+emit_16(924);
+emit_16(991);
+emit_16(925);
+emit_16(992);
+emit_16(926);
+emit_16(992);
+emit_16(925);
+emit_16(992);
+emit_16(926);
+emit_16(993);
+emit_16(927);
+emit_16(993);
+emit_16(926);
+emit_16(993);
+emit_16(927);
+emit_16(994);
+emit_16(928);
+emit_16(994);
+emit_16(927);
+emit_16(994);
+emit_16(928);
+emit_16(995);
+emit_16(929);
+emit_16(995);
+emit_16(928);
+emit_16(995);
+emit_16(929);
+emit_16(996);
+emit_16(930);
+emit_16(996);
+emit_16(929);
+emit_16(996);
+emit_16(930);
+emit_16(997);
+emit_16(931);
+emit_16(997);
+emit_16(930);
+emit_16(997);
+emit_16(931);
+emit_16(998);
+emit_16(932);
+emit_16(998);
+emit_16(931);
+emit_16(998);
+emit_16(932);
+emit_16(999);
+emit_16(933);
+emit_16(999);
+emit_16(932);
+emit_16(999);
+emit_16(933);
+emit_16(1000);
+emit_16(934);
+emit_16(1000);
+emit_16(933);
+emit_16(1000);
+emit_16(934);
+emit_16(1001);
+emit_16(935);
+emit_16(1001);
+emit_16(934);
+emit_16(1001);
+emit_16(935);
+emit_16(1002);
+emit_16(936);
+emit_16(1002);
+emit_16(935);
+emit_16(1002);
+emit_16(936);
+emit_16(1003);
+emit_16(937);
+emit_16(1003);
+emit_16(936);
+emit_16(1003);
+emit_16(937);
+emit_16(1004);
+emit_16(938);
+emit_16(1004);
+emit_16(937);
+emit_16(1004);
+emit_16(938);
+emit_16(1005);
+emit_16(939);
+emit_16(1005);
+emit_16(938);
+emit_16(1005);
+emit_16(939);
+emit_16(1006);
+emit_16(940);
+emit_16(1006);
+emit_16(939);
+emit_16(1006);
+emit_16(940);
+emit_16(1007);
+emit_16(941);
+emit_16(1007);
+emit_16(940);
+emit_16(1007);
+emit_16(941);
+emit_16(1008);
+emit_16(942);
+emit_16(1008);
+emit_16(941);
+emit_16(1008);
+emit_16(942);
+emit_16(1009);
+emit_16(943);
+emit_16(1009);
+emit_16(942);
+emit_16(1009);
+emit_16(943);
+emit_16(1010);
+emit_16(944);
+emit_16(1010);
+emit_16(943);
+emit_16(1010);
+emit_16(944);
+emit_16(1011);
+emit_16(945);
+emit_16(1011);
+emit_16(944);
+emit_16(1011);
+emit_16(945);
+emit_16(1012);
+emit_16(946);
+emit_16(1012);
+emit_16(945);
+emit_16(1012);
+emit_16(946);
+emit_16(1013);
+emit_16(947);
+emit_16(1013);
+emit_16(946);
+emit_16(1013);
+emit_16(947);
+emit_16(1014);
+emit_16(948);
+emit_16(1014);
+emit_16(947);
+emit_16(1014);
+emit_16(948);
+emit_16(1015);
+emit_16(949);
+emit_16(1015);
+emit_16(948);
+emit_16(1015);
+emit_16(949);
+emit_16(1016);
+emit_16(950);
+emit_16(1016);
+emit_16(949);
+emit_16(1016);
+emit_16(950);
+emit_16(1017);
+emit_16(951);
+emit_16(1017);
+emit_16(950);
+emit_16(1017);
+emit_16(951);
+emit_16(1018);
+emit_16(952);
+emit_16(1018);
+emit_16(951);
+emit_16(1018);
+emit_16(952);
+emit_16(1019);
+emit_16(953);
+emit_16(1019);
+emit_16(952);
+emit_16(1019);
+emit_16(953);
+emit_16(1020);
+emit_16(954);
+emit_16(1020);
+emit_16(953);
+emit_16(1020);
+emit_16(954);
+emit_16(1021);
+emit_16(955);
+emit_16(1021);
+emit_16(954);
+emit_16(1021);
+emit_16(955);
+emit_16(1022);
+emit_16(956);
+emit_16(1022);
+emit_16(955);
+emit_16(1022);
+emit_16(956);
+emit_16(1023);
+emit_16(957);
+emit_16(1023);
+emit_16(956);
+emit_16(1023);
+emit_16(957);
+emit_16(1024);
+emit_16(958);
+emit_16(1024);
+emit_16(957);
+emit_16(1024);
+emit_16(958);
+emit_16(1025);
+emit_16(959);
+emit_16(1025);
+emit_16(958);
+emit_16(1025);
+emit_16(959);
+emit_16(1026);
+emit_16(960);
+emit_16(1026);
+emit_16(959);
+emit_16(1026);
+emit_16(960);
+emit_16(1027);
+emit_16(961);
+emit_16(1027);
+emit_16(960);
+emit_16(1027);
+emit_16(961);
+emit_16(1028);
+emit_16(962);
+emit_16(1028);
+emit_16(961);
+emit_16(1028);
+emit_16(962);
+emit_16(1029);
+emit_16(963);
+emit_16(1029);
+emit_16(962);
+emit_16(1029);
+emit_16(963);
+emit_16(1030);
+emit_16(964);
+emit_16(1030);
+emit_16(963);
+emit_16(1030);
+emit_16(964);
+emit_16(1031);
+emit_16(965);
+emit_16(1031);
+emit_16(964);
+emit_16(1031);
+emit_16(965);
+emit_16(1032);
+emit_16(966);
+emit_16(1032);
+emit_16(965);
+emit_16(1032);
+emit_16(966);
+emit_16(1033);
+emit_16(967);
+emit_16(1033);
+emit_16(966);
+emit_16(1033);
+emit_16(967);
+emit_16(1034);
+emit_16(968);
+emit_16(1034);
+emit_16(967);
+emit_16(1034);
+emit_16(968);
+emit_16(1035);
+emit_16(969);
+emit_16(1035);
+emit_16(968);
+emit_16(1035);
+emit_16(969);
+emit_16(1036);
+emit_16(970);
+emit_16(1036);
+emit_16(969);
+emit_16(1036);
+emit_16(970);
+emit_16(1037);
+emit_16(971);
+emit_16(1037);
+emit_16(970);
+emit_16(1037);
+emit_16(971);
+emit_16(1038);
+emit_16(972);
+emit_16(1038);
+emit_16(971);
+emit_16(1038);
+emit_16(972);
+emit_16(1039);
+emit_16(973);
+emit_16(1039);
+emit_16(972);
+emit_16(1039);
+emit_16(973);
+emit_16(1040);
+emit_16(974);
+emit_16(1040);
+emit_16(973);
+emit_16(1040);
+emit_16(974);
+emit_16(1041);
+emit_16(975);
+emit_16(1041);
+emit_16(974);
+emit_16(1041);
+emit_16(975);
+emit_16(1042);
+emit_16(976);
+emit_16(1042);
+emit_16(975);
+emit_16(1042);
+emit_16(976);
+emit_16(1043);
+emit_16(977);
+emit_16(1043);
+emit_16(976);
+emit_16(1043);
+emit_16(977);
+emit_16(1044);
+emit_16(978);
+emit_16(1044);
+emit_16(977);
+emit_16(1044);
+emit_16(978);
+emit_16(1045);
+emit_16(979);
+emit_16(1045);
+emit_16(978);
+emit_16(1045);
+emit_16(979);
+emit_16(1046);
+emit_16(980);
+emit_16(1046);
+emit_16(979);
+emit_16(1046);
+emit_16(980);
+emit_16(1047);
+emit_16(981);
+emit_16(1047);
+emit_16(980);
+emit_16(1047);
+emit_16(981);
+emit_16(1048);
+emit_16(982);
+emit_16(1048);
+emit_16(981);
+emit_16(1048);
+emit_16(982);
+emit_16(1049);
+emit_16(983);
+emit_16(1049);
+emit_16(982);
+emit_16(1049);
+emit_16(983);
+emit_16(1050);
+emit_16(984);
+emit_16(1050);
+emit_16(983);
+emit_16(1050);
+emit_16(984);
+emit_16(1051);
+emit_16(985);
+emit_16(1051);
+emit_16(984);
+emit_16(1051);
+emit_16(985);
+emit_16(1052);
+emit_16(986);
+emit_16(1052);
+emit_16(985);
+emit_16(1052);
+emit_16(986);
+emit_16(1053);
+emit_16(987);
+emit_16(1053);
+emit_16(986);
+emit_16(1053);
+emit_16(987);
+emit_16(1054);
+emit_16(988);
+emit_16(1054);
+emit_16(987);
+emit_16(1054);
+emit_16(988);
+emit_16(1055);
+emit_16(989);
+emit_16(1055);
+emit_16(988);
+emit_16(1056);
+emit_16(990);
+emit_16(1057);
+emit_16(991);
+emit_16(1057);
+emit_16(990);
+emit_16(1057);
+emit_16(991);
+emit_16(1058);
+emit_16(992);
+emit_16(1058);
+emit_16(991);
+emit_16(1058);
+emit_16(992);
+emit_16(1059);
+emit_16(993);
+emit_16(1059);
+emit_16(992);
+emit_16(1059);
+emit_16(993);
+emit_16(1060);
+emit_16(994);
+emit_16(1060);
+emit_16(993);
+emit_16(1060);
+emit_16(994);
+emit_16(1061);
+emit_16(995);
+emit_16(1061);
+emit_16(994);
+emit_16(1061);
+emit_16(995);
+emit_16(1062);
+emit_16(996);
+emit_16(1062);
+emit_16(995);
+emit_16(1062);
+emit_16(996);
+emit_16(1063);
+emit_16(997);
+emit_16(1063);
+emit_16(996);
+emit_16(1063);
+emit_16(997);
+emit_16(1064);
+emit_16(998);
+emit_16(1064);
+emit_16(997);
+emit_16(1064);
+emit_16(998);
+emit_16(1065);
+emit_16(999);
+emit_16(1065);
+emit_16(998);
+emit_16(1065);
+emit_16(999);
+emit_16(1066);
+emit_16(1000);
+emit_16(1066);
+emit_16(999);
+emit_16(1066);
+emit_16(1000);
+emit_16(1067);
+emit_16(1001);
+emit_16(1067);
+emit_16(1000);
+emit_16(1067);
+emit_16(1001);
+emit_16(1068);
+emit_16(1002);
+emit_16(1068);
+emit_16(1001);
+emit_16(1068);
+emit_16(1002);
+emit_16(1069);
+emit_16(1003);
+emit_16(1069);
+emit_16(1002);
+emit_16(1069);
+emit_16(1003);
+emit_16(1070);
+emit_16(1004);
+emit_16(1070);
+emit_16(1003);
+emit_16(1070);
+emit_16(1004);
+emit_16(1071);
+emit_16(1005);
+emit_16(1071);
+emit_16(1004);
+emit_16(1071);
+emit_16(1005);
+emit_16(1072);
+emit_16(1006);
+emit_16(1072);
+emit_16(1005);
+emit_16(1072);
+emit_16(1006);
+emit_16(1073);
+emit_16(1007);
+emit_16(1073);
+emit_16(1006);
+emit_16(1073);
+emit_16(1007);
+emit_16(1074);
+emit_16(1008);
+emit_16(1074);
+emit_16(1007);
+emit_16(1074);
+emit_16(1008);
+emit_16(1075);
+emit_16(1009);
+emit_16(1075);
+emit_16(1008);
+emit_16(1075);
+emit_16(1009);
+emit_16(1076);
+emit_16(1010);
+emit_16(1076);
+emit_16(1009);
+emit_16(1076);
+emit_16(1010);
+emit_16(1077);
+emit_16(1011);
+emit_16(1077);
+emit_16(1010);
+emit_16(1077);
+emit_16(1011);
+emit_16(1078);
+emit_16(1012);
+emit_16(1078);
+emit_16(1011);
+emit_16(1078);
+emit_16(1012);
+emit_16(1079);
+emit_16(1013);
+emit_16(1079);
+emit_16(1012);
+emit_16(1079);
+emit_16(1013);
+emit_16(1080);
+emit_16(1014);
+emit_16(1080);
+emit_16(1013);
+emit_16(1080);
+emit_16(1014);
+emit_16(1081);
+emit_16(1015);
+emit_16(1081);
+emit_16(1014);
+emit_16(1081);
+emit_16(1015);
+emit_16(1082);
+emit_16(1016);
+emit_16(1082);
+emit_16(1015);
+emit_16(1082);
+emit_16(1016);
+emit_16(1083);
+emit_16(1017);
+emit_16(1083);
+emit_16(1016);
+emit_16(1083);
+emit_16(1017);
+emit_16(1084);
+emit_16(1018);
+emit_16(1084);
+emit_16(1017);
+emit_16(1084);
+emit_16(1018);
+emit_16(1085);
+emit_16(1019);
+emit_16(1085);
+emit_16(1018);
+emit_16(1085);
+emit_16(1019);
+emit_16(1086);
+emit_16(1020);
+emit_16(1086);
+emit_16(1019);
+emit_16(1086);
+emit_16(1020);
+emit_16(1087);
+emit_16(1021);
+emit_16(1087);
+emit_16(1020);
+emit_16(1087);
+emit_16(1021);
+emit_16(1088);
+emit_16(1022);
+emit_16(1088);
+emit_16(1021);
+emit_16(1088);
+emit_16(1022);
+emit_16(1089);
+emit_16(1023);
+emit_16(1089);
+emit_16(1022);
+emit_16(1089);
+emit_16(1023);
+emit_16(1090);
+emit_16(1024);
+emit_16(1090);
+emit_16(1023);
+emit_16(1090);
+emit_16(1024);
+emit_16(1091);
+emit_16(1025);
+emit_16(1091);
+emit_16(1024);
+emit_16(1091);
+emit_16(1025);
+emit_16(1092);
+emit_16(1026);
+emit_16(1092);
+emit_16(1025);
+emit_16(1092);
+emit_16(1026);
+emit_16(1093);
+emit_16(1027);
+emit_16(1093);
+emit_16(1026);
+emit_16(1093);
+emit_16(1027);
+emit_16(1094);
+emit_16(1028);
+emit_16(1094);
+emit_16(1027);
+emit_16(1094);
+emit_16(1028);
+emit_16(1095);
+emit_16(1029);
+emit_16(1095);
+emit_16(1028);
+emit_16(1095);
+emit_16(1029);
+emit_16(1096);
+emit_16(1030);
+emit_16(1096);
+emit_16(1029);
+emit_16(1096);
+emit_16(1030);
+emit_16(1097);
+emit_16(1031);
+emit_16(1097);
+emit_16(1030);
+emit_16(1097);
+emit_16(1031);
+emit_16(1098);
+emit_16(1032);
+emit_16(1098);
+emit_16(1031);
+emit_16(1098);
+emit_16(1032);
+emit_16(1099);
+emit_16(1033);
+emit_16(1099);
+emit_16(1032);
+emit_16(1099);
+emit_16(1033);
+emit_16(1100);
+emit_16(1034);
+emit_16(1100);
+emit_16(1033);
+emit_16(1100);
+emit_16(1034);
+emit_16(1101);
+emit_16(1035);
+emit_16(1101);
+emit_16(1034);
+emit_16(1101);
+emit_16(1035);
+emit_16(1102);
+emit_16(1036);
+emit_16(1102);
+emit_16(1035);
+emit_16(1102);
+emit_16(1036);
+emit_16(1103);
+emit_16(1037);
+emit_16(1103);
+emit_16(1036);
+emit_16(1103);
+emit_16(1037);
+emit_16(1104);
+emit_16(1038);
+emit_16(1104);
+emit_16(1037);
+emit_16(1104);
+emit_16(1038);
+emit_16(1105);
+emit_16(1039);
+emit_16(1105);
+emit_16(1038);
+emit_16(1105);
+emit_16(1039);
+emit_16(1106);
+emit_16(1040);
+emit_16(1106);
+emit_16(1039);
+emit_16(1106);
+emit_16(1040);
+emit_16(1107);
+emit_16(1041);
+emit_16(1107);
+emit_16(1040);
+emit_16(1107);
+emit_16(1041);
+emit_16(1108);
+emit_16(1042);
+emit_16(1108);
+emit_16(1041);
+emit_16(1108);
+emit_16(1042);
+emit_16(1109);
+emit_16(1043);
+emit_16(1109);
+emit_16(1042);
+emit_16(1109);
+emit_16(1043);
+emit_16(1110);
+emit_16(1044);
+emit_16(1110);
+emit_16(1043);
+emit_16(1110);
+emit_16(1044);
+emit_16(1111);
+emit_16(1045);
+emit_16(1111);
+emit_16(1044);
+emit_16(1111);
+emit_16(1045);
+emit_16(1112);
+emit_16(1046);
+emit_16(1112);
+emit_16(1045);
+emit_16(1112);
+emit_16(1046);
+emit_16(1113);
+emit_16(1047);
+emit_16(1113);
+emit_16(1046);
+emit_16(1113);
+emit_16(1047);
+emit_16(1114);
+emit_16(1048);
+emit_16(1114);
+emit_16(1047);
+emit_16(1114);
+emit_16(1048);
+emit_16(1115);
+emit_16(1049);
+emit_16(1115);
+emit_16(1048);
+emit_16(1115);
+emit_16(1049);
+emit_16(1116);
+emit_16(1050);
+emit_16(1116);
+emit_16(1049);
+emit_16(1116);
+emit_16(1050);
+emit_16(1117);
+emit_16(1051);
+emit_16(1117);
+emit_16(1050);
+emit_16(1117);
+emit_16(1051);
+emit_16(1118);
+emit_16(1052);
+emit_16(1118);
+emit_16(1051);
+emit_16(1118);
+emit_16(1052);
+emit_16(1119);
+emit_16(1053);
+emit_16(1119);
+emit_16(1052);
+emit_16(1119);
+emit_16(1053);
+emit_16(1120);
+emit_16(1054);
+emit_16(1120);
+emit_16(1053);
+emit_16(1120);
+emit_16(1054);
+emit_16(1121);
+emit_16(1055);
+emit_16(1121);
+emit_16(1054);
+emit_16(1122);
+emit_16(1056);
+emit_16(1123);
+emit_16(1057);
+emit_16(1123);
+emit_16(1056);
+emit_16(1123);
+emit_16(1057);
+emit_16(1124);
+emit_16(1058);
+emit_16(1124);
+emit_16(1057);
+emit_16(1124);
+emit_16(1058);
+emit_16(1125);
+emit_16(1059);
+emit_16(1125);
+emit_16(1058);
+emit_16(1125);
+emit_16(1059);
+emit_16(1126);
+emit_16(1060);
+emit_16(1126);
+emit_16(1059);
+emit_16(1126);
+emit_16(1060);
+emit_16(1127);
+emit_16(1061);
+emit_16(1127);
+emit_16(1060);
+emit_16(1127);
+emit_16(1061);
+emit_16(1128);
+emit_16(1062);
+emit_16(1128);
+emit_16(1061);
+emit_16(1128);
+emit_16(1062);
+emit_16(1129);
+emit_16(1063);
+emit_16(1129);
+emit_16(1062);
+emit_16(1129);
+emit_16(1063);
+emit_16(1130);
+emit_16(1064);
+emit_16(1130);
+emit_16(1063);
+emit_16(1130);
+emit_16(1064);
+emit_16(1131);
+emit_16(1065);
+emit_16(1131);
+emit_16(1064);
+emit_16(1131);
+emit_16(1065);
+emit_16(1132);
+emit_16(1066);
+emit_16(1132);
+emit_16(1065);
+emit_16(1132);
+emit_16(1066);
+emit_16(1133);
+emit_16(1067);
+emit_16(1133);
+emit_16(1066);
+emit_16(1133);
+emit_16(1067);
+emit_16(1134);
+emit_16(1068);
+emit_16(1134);
+emit_16(1067);
+emit_16(1134);
+emit_16(1068);
+emit_16(1135);
+emit_16(1069);
+emit_16(1135);
+emit_16(1068);
+emit_16(1135);
+emit_16(1069);
+emit_16(1136);
+emit_16(1070);
+emit_16(1136);
+emit_16(1069);
+emit_16(1136);
+emit_16(1070);
+emit_16(1137);
+emit_16(1071);
+emit_16(1137);
+emit_16(1070);
+emit_16(1137);
+emit_16(1071);
+emit_16(1138);
+emit_16(1072);
+emit_16(1138);
+emit_16(1071);
+emit_16(1138);
+emit_16(1072);
+emit_16(1139);
+emit_16(1073);
+emit_16(1139);
+emit_16(1072);
+emit_16(1139);
+emit_16(1073);
+emit_16(1140);
+emit_16(1074);
+emit_16(1140);
+emit_16(1073);
+emit_16(1140);
+emit_16(1074);
+emit_16(1141);
+emit_16(1075);
+emit_16(1141);
+emit_16(1074);
+emit_16(1141);
+emit_16(1075);
+emit_16(1142);
+emit_16(1076);
+emit_16(1142);
+emit_16(1075);
+emit_16(1142);
+emit_16(1076);
+emit_16(1143);
+emit_16(1077);
+emit_16(1143);
+emit_16(1076);
+emit_16(1143);
+emit_16(1077);
+emit_16(1144);
+emit_16(1078);
+emit_16(1144);
+emit_16(1077);
+emit_16(1144);
+emit_16(1078);
+emit_16(1145);
+emit_16(1079);
+emit_16(1145);
+emit_16(1078);
+emit_16(1145);
+emit_16(1079);
+emit_16(1146);
+emit_16(1080);
+emit_16(1146);
+emit_16(1079);
+emit_16(1146);
+emit_16(1080);
+emit_16(1147);
+emit_16(1081);
+emit_16(1147);
+emit_16(1080);
+emit_16(1147);
+emit_16(1081);
+emit_16(1148);
+emit_16(1082);
+emit_16(1148);
+emit_16(1081);
+emit_16(1148);
+emit_16(1082);
+emit_16(1149);
+emit_16(1083);
+emit_16(1149);
+emit_16(1082);
+emit_16(1149);
+emit_16(1083);
+emit_16(1150);
+emit_16(1084);
+emit_16(1150);
+emit_16(1083);
+emit_16(1150);
+emit_16(1084);
+emit_16(1151);
+emit_16(1085);
+emit_16(1151);
+emit_16(1084);
+emit_16(1151);
+emit_16(1085);
+emit_16(1152);
+emit_16(1086);
+emit_16(1152);
+emit_16(1085);
+emit_16(1152);
+emit_16(1086);
+emit_16(1153);
+emit_16(1087);
+emit_16(1153);
+emit_16(1086);
+emit_16(1153);
+emit_16(1087);
+emit_16(1154);
+emit_16(1088);
+emit_16(1154);
+emit_16(1087);
+emit_16(1154);
+emit_16(1088);
+emit_16(1155);
+emit_16(1089);
+emit_16(1155);
+emit_16(1088);
+emit_16(1155);
+emit_16(1089);
+emit_16(1156);
+emit_16(1090);
+emit_16(1156);
+emit_16(1089);
+emit_16(1156);
+emit_16(1090);
+emit_16(1157);
+emit_16(1091);
+emit_16(1157);
+emit_16(1090);
+emit_16(1157);
+emit_16(1091);
+emit_16(1158);
+emit_16(1092);
+emit_16(1158);
+emit_16(1091);
+emit_16(1158);
+emit_16(1092);
+emit_16(1159);
+emit_16(1093);
+emit_16(1159);
+emit_16(1092);
+emit_16(1159);
+emit_16(1093);
+emit_16(1160);
+emit_16(1094);
+emit_16(1160);
+emit_16(1093);
+emit_16(1160);
+emit_16(1094);
+emit_16(1161);
+emit_16(1095);
+emit_16(1161);
+emit_16(1094);
+emit_16(1161);
+emit_16(1095);
+emit_16(1162);
+emit_16(1096);
+emit_16(1162);
+emit_16(1095);
+emit_16(1162);
+emit_16(1096);
+emit_16(1163);
+emit_16(1097);
+emit_16(1163);
+emit_16(1096);
+emit_16(1163);
+emit_16(1097);
+emit_16(1164);
+emit_16(1098);
+emit_16(1164);
+emit_16(1097);
+emit_16(1164);
+emit_16(1098);
+emit_16(1165);
+emit_16(1099);
+emit_16(1165);
+emit_16(1098);
+emit_16(1165);
+emit_16(1099);
+emit_16(1166);
+emit_16(1100);
+emit_16(1166);
+emit_16(1099);
+emit_16(1166);
+emit_16(1100);
+emit_16(1167);
+emit_16(1101);
+emit_16(1167);
+emit_16(1100);
+emit_16(1167);
+emit_16(1101);
+emit_16(1168);
+emit_16(1102);
+emit_16(1168);
+emit_16(1101);
+emit_16(1168);
+emit_16(1102);
+emit_16(1169);
+emit_16(1103);
+emit_16(1169);
+emit_16(1102);
+emit_16(1169);
+emit_16(1103);
+emit_16(1170);
+emit_16(1104);
+emit_16(1170);
+emit_16(1103);
+emit_16(1170);
+emit_16(1104);
+emit_16(1171);
+emit_16(1105);
+emit_16(1171);
+emit_16(1104);
+emit_16(1171);
+emit_16(1105);
+emit_16(1172);
+emit_16(1106);
+emit_16(1172);
+emit_16(1105);
+emit_16(1172);
+emit_16(1106);
+emit_16(1173);
+emit_16(1107);
+emit_16(1173);
+emit_16(1106);
+emit_16(1173);
+emit_16(1107);
+emit_16(1174);
+emit_16(1108);
+emit_16(1174);
+emit_16(1107);
+emit_16(1174);
+emit_16(1108);
+emit_16(1175);
+emit_16(1109);
+emit_16(1175);
+emit_16(1108);
+emit_16(1175);
+emit_16(1109);
+emit_16(1176);
+emit_16(1110);
+emit_16(1176);
+emit_16(1109);
+emit_16(1176);
+emit_16(1110);
+emit_16(1177);
+emit_16(1111);
+emit_16(1177);
+emit_16(1110);
+emit_16(1177);
+emit_16(1111);
+emit_16(1178);
+emit_16(1112);
+emit_16(1178);
+emit_16(1111);
+emit_16(1178);
+emit_16(1112);
+emit_16(1179);
+emit_16(1113);
+emit_16(1179);
+emit_16(1112);
+emit_16(1179);
+emit_16(1113);
+emit_16(1180);
+emit_16(1114);
+emit_16(1180);
+emit_16(1113);
+emit_16(1180);
+emit_16(1114);
+emit_16(1181);
+emit_16(1115);
+emit_16(1181);
+emit_16(1114);
+emit_16(1181);
+emit_16(1115);
+emit_16(1182);
+emit_16(1116);
+emit_16(1182);
+emit_16(1115);
+emit_16(1182);
+emit_16(1116);
+emit_16(1183);
+emit_16(1117);
+emit_16(1183);
+emit_16(1116);
+emit_16(1183);
+emit_16(1117);
+emit_16(1184);
+emit_16(1118);
+emit_16(1184);
+emit_16(1117);
+emit_16(1184);
+emit_16(1118);
+emit_16(1185);
+emit_16(1119);
+emit_16(1185);
+emit_16(1118);
+emit_16(1185);
+emit_16(1119);
+emit_16(1186);
+emit_16(1120);
+emit_16(1186);
+emit_16(1119);
+emit_16(1186);
+emit_16(1120);
+emit_16(1187);
+emit_16(1121);
+emit_16(1187);
+emit_16(1120);
+emit_16(1188);
+emit_16(1122);
+emit_16(1189);
+emit_16(1123);
+emit_16(1189);
+emit_16(1122);
+emit_16(1189);
+emit_16(1123);
+emit_16(1190);
+emit_16(1124);
+emit_16(1190);
+emit_16(1123);
+emit_16(1190);
+emit_16(1124);
+emit_16(1191);
+emit_16(1125);
+emit_16(1191);
+emit_16(1124);
+emit_16(1191);
+emit_16(1125);
+emit_16(1192);
+emit_16(1126);
+emit_16(1192);
+emit_16(1125);
+emit_16(1192);
+emit_16(1126);
+emit_16(1193);
+emit_16(1127);
+emit_16(1193);
+emit_16(1126);
+emit_16(1193);
+emit_16(1127);
+emit_16(1194);
+emit_16(1128);
+emit_16(1194);
+emit_16(1127);
+emit_16(1194);
+emit_16(1128);
+emit_16(1195);
+emit_16(1129);
+emit_16(1195);
+emit_16(1128);
+emit_16(1195);
+emit_16(1129);
+emit_16(1196);
+emit_16(1130);
+emit_16(1196);
+emit_16(1129);
+emit_16(1196);
+emit_16(1130);
+emit_16(1197);
+emit_16(1131);
+emit_16(1197);
+emit_16(1130);
+emit_16(1197);
+emit_16(1131);
+emit_16(1198);
+emit_16(1132);
+emit_16(1198);
+emit_16(1131);
+emit_16(1198);
+emit_16(1132);
+emit_16(1199);
+emit_16(1133);
+emit_16(1199);
+emit_16(1132);
+emit_16(1199);
+emit_16(1133);
+emit_16(1200);
+emit_16(1134);
+emit_16(1200);
+emit_16(1133);
+emit_16(1200);
+emit_16(1134);
+emit_16(1201);
+emit_16(1135);
+emit_16(1201);
+emit_16(1134);
+emit_16(1201);
+emit_16(1135);
+emit_16(1202);
+emit_16(1136);
+emit_16(1202);
+emit_16(1135);
+emit_16(1202);
+emit_16(1136);
+emit_16(1203);
+emit_16(1137);
+emit_16(1203);
+emit_16(1136);
+emit_16(1203);
+emit_16(1137);
+emit_16(1204);
+emit_16(1138);
+emit_16(1204);
+emit_16(1137);
+emit_16(1204);
+emit_16(1138);
+emit_16(1205);
+emit_16(1139);
+emit_16(1205);
+emit_16(1138);
+emit_16(1205);
+emit_16(1139);
+emit_16(1206);
+emit_16(1140);
+emit_16(1206);
+emit_16(1139);
+emit_16(1206);
+emit_16(1140);
+emit_16(1207);
+emit_16(1141);
+emit_16(1207);
+emit_16(1140);
+emit_16(1207);
+emit_16(1141);
+emit_16(1208);
+emit_16(1142);
+emit_16(1208);
+emit_16(1141);
+emit_16(1208);
+emit_16(1142);
+emit_16(1209);
+emit_16(1143);
+emit_16(1209);
+emit_16(1142);
+emit_16(1209);
+emit_16(1143);
+emit_16(1210);
+emit_16(1144);
+emit_16(1210);
+emit_16(1143);
+emit_16(1210);
+emit_16(1144);
+emit_16(1211);
+emit_16(1145);
+emit_16(1211);
+emit_16(1144);
+emit_16(1211);
+emit_16(1145);
+emit_16(1212);
+emit_16(1146);
+emit_16(1212);
+emit_16(1145);
+emit_16(1212);
+emit_16(1146);
+emit_16(1213);
+emit_16(1147);
+emit_16(1213);
+emit_16(1146);
+emit_16(1213);
+emit_16(1147);
+emit_16(1214);
+emit_16(1148);
+emit_16(1214);
+emit_16(1147);
+emit_16(1214);
+emit_16(1148);
+emit_16(1215);
+emit_16(1149);
+emit_16(1215);
+emit_16(1148);
+emit_16(1215);
+emit_16(1149);
+emit_16(1216);
+emit_16(1150);
+emit_16(1216);
+emit_16(1149);
+emit_16(1216);
+emit_16(1150);
+emit_16(1217);
+emit_16(1151);
+emit_16(1217);
+emit_16(1150);
+emit_16(1217);
+emit_16(1151);
+emit_16(1218);
+emit_16(1152);
+emit_16(1218);
+emit_16(1151);
+emit_16(1218);
+emit_16(1152);
+emit_16(1219);
+emit_16(1153);
+emit_16(1219);
+emit_16(1152);
+emit_16(1219);
+emit_16(1153);
+emit_16(1220);
+emit_16(1154);
+emit_16(1220);
+emit_16(1153);
+emit_16(1220);
+emit_16(1154);
+emit_16(1221);
+emit_16(1155);
+emit_16(1221);
+emit_16(1154);
+emit_16(1221);
+emit_16(1155);
+emit_16(1222);
+emit_16(1156);
+emit_16(1222);
+emit_16(1155);
+emit_16(1222);
+emit_16(1156);
+emit_16(1223);
+emit_16(1157);
+emit_16(1223);
+emit_16(1156);
+emit_16(1223);
+emit_16(1157);
+emit_16(1224);
+emit_16(1158);
+emit_16(1224);
+emit_16(1157);
+emit_16(1224);
+emit_16(1158);
+emit_16(1225);
+emit_16(1159);
+emit_16(1225);
+emit_16(1158);
+emit_16(1225);
+emit_16(1159);
+emit_16(1226);
+emit_16(1160);
+emit_16(1226);
+emit_16(1159);
+emit_16(1226);
+emit_16(1160);
+emit_16(1227);
+emit_16(1161);
+emit_16(1227);
+emit_16(1160);
+emit_16(1227);
+emit_16(1161);
+emit_16(1228);
+emit_16(1162);
+emit_16(1228);
+emit_16(1161);
+emit_16(1228);
+emit_16(1162);
+emit_16(1229);
+emit_16(1163);
+emit_16(1229);
+emit_16(1162);
+emit_16(1229);
+emit_16(1163);
+emit_16(1230);
+emit_16(1164);
+emit_16(1230);
+emit_16(1163);
+emit_16(1230);
+emit_16(1164);
+emit_16(1231);
+emit_16(1165);
+emit_16(1231);
+emit_16(1164);
+emit_16(1231);
+emit_16(1165);
+emit_16(1232);
+emit_16(1166);
+emit_16(1232);
+emit_16(1165);
+emit_16(1232);
+emit_16(1166);
+emit_16(1233);
+emit_16(1167);
+emit_16(1233);
+emit_16(1166);
+emit_16(1233);
+emit_16(1167);
+emit_16(1234);
+emit_16(1168);
+emit_16(1234);
+emit_16(1167);
+emit_16(1234);
+emit_16(1168);
+emit_16(1235);
+emit_16(1169);
+emit_16(1235);
+emit_16(1168);
+emit_16(1235);
+emit_16(1169);
+emit_16(1236);
+emit_16(1170);
+emit_16(1236);
+emit_16(1169);
+emit_16(1236);
+emit_16(1170);
+emit_16(1237);
+emit_16(1171);
+emit_16(1237);
+emit_16(1170);
+emit_16(1237);
+emit_16(1171);
+emit_16(1238);
+emit_16(1172);
+emit_16(1238);
+emit_16(1171);
+emit_16(1238);
+emit_16(1172);
+emit_16(1239);
+emit_16(1173);
+emit_16(1239);
+emit_16(1172);
+emit_16(1239);
+emit_16(1173);
+emit_16(1240);
+emit_16(1174);
+emit_16(1240);
+emit_16(1173);
+emit_16(1240);
+emit_16(1174);
+emit_16(1241);
+emit_16(1175);
+emit_16(1241);
+emit_16(1174);
+emit_16(1241);
+emit_16(1175);
+emit_16(1242);
+emit_16(1176);
+emit_16(1242);
+emit_16(1175);
+emit_16(1242);
+emit_16(1176);
+emit_16(1243);
+emit_16(1177);
+emit_16(1243);
+emit_16(1176);
+emit_16(1243);
+emit_16(1177);
+emit_16(1244);
+emit_16(1178);
+emit_16(1244);
+emit_16(1177);
+emit_16(1244);
+emit_16(1178);
+emit_16(1245);
+emit_16(1179);
+emit_16(1245);
+emit_16(1178);
+emit_16(1245);
+emit_16(1179);
+emit_16(1246);
+emit_16(1180);
+emit_16(1246);
+emit_16(1179);
+emit_16(1246);
+emit_16(1180);
+emit_16(1247);
+emit_16(1181);
+emit_16(1247);
+emit_16(1180);
+emit_16(1247);
+emit_16(1181);
+emit_16(1248);
+emit_16(1182);
+emit_16(1248);
+emit_16(1181);
+emit_16(1248);
+emit_16(1182);
+emit_16(1249);
+emit_16(1183);
+emit_16(1249);
+emit_16(1182);
+emit_16(1249);
+emit_16(1183);
+emit_16(1250);
+emit_16(1184);
+emit_16(1250);
+emit_16(1183);
+emit_16(1250);
+emit_16(1184);
+emit_16(1251);
+emit_16(1185);
+emit_16(1251);
+emit_16(1184);
+emit_16(1251);
+emit_16(1185);
+emit_16(1252);
+emit_16(1186);
+emit_16(1252);
+emit_16(1185);
+emit_16(1252);
+emit_16(1186);
+emit_16(1253);
+emit_16(1187);
+emit_16(1253);
+emit_16(1186);
+emit_16(1254);
+emit_16(1188);
+emit_16(1255);
+emit_16(1189);
+emit_16(1255);
+emit_16(1188);
+emit_16(1255);
+emit_16(1189);
+emit_16(1256);
+emit_16(1190);
+emit_16(1256);
+emit_16(1189);
+emit_16(1256);
+emit_16(1190);
+emit_16(1257);
+emit_16(1191);
+emit_16(1257);
+emit_16(1190);
+emit_16(1257);
+emit_16(1191);
+emit_16(1258);
+emit_16(1192);
+emit_16(1258);
+emit_16(1191);
+emit_16(1258);
+emit_16(1192);
+emit_16(1259);
+emit_16(1193);
+emit_16(1259);
+emit_16(1192);
+emit_16(1259);
+emit_16(1193);
+emit_16(1260);
+emit_16(1194);
+emit_16(1260);
+emit_16(1193);
+emit_16(1260);
+emit_16(1194);
+emit_16(1261);
+emit_16(1195);
+emit_16(1261);
+emit_16(1194);
+emit_16(1261);
+emit_16(1195);
+emit_16(1262);
+emit_16(1196);
+emit_16(1262);
+emit_16(1195);
+emit_16(1262);
+emit_16(1196);
+emit_16(1263);
+emit_16(1197);
+emit_16(1263);
+emit_16(1196);
+emit_16(1263);
+emit_16(1197);
+emit_16(1264);
+emit_16(1198);
+emit_16(1264);
+emit_16(1197);
+emit_16(1264);
+emit_16(1198);
+emit_16(1265);
+emit_16(1199);
+emit_16(1265);
+emit_16(1198);
+emit_16(1265);
+emit_16(1199);
+emit_16(1266);
+emit_16(1200);
+emit_16(1266);
+emit_16(1199);
+emit_16(1266);
+emit_16(1200);
+emit_16(1267);
+emit_16(1201);
+emit_16(1267);
+emit_16(1200);
+emit_16(1267);
+emit_16(1201);
+emit_16(1268);
+emit_16(1202);
+emit_16(1268);
+emit_16(1201);
+emit_16(1268);
+emit_16(1202);
+emit_16(1269);
+emit_16(1203);
+emit_16(1269);
+emit_16(1202);
+emit_16(1269);
+emit_16(1203);
+emit_16(1270);
+emit_16(1204);
+emit_16(1270);
+emit_16(1203);
+emit_16(1270);
+emit_16(1204);
+emit_16(1271);
+emit_16(1205);
+emit_16(1271);
+emit_16(1204);
+emit_16(1271);
+emit_16(1205);
+emit_16(1272);
+emit_16(1206);
+emit_16(1272);
+emit_16(1205);
+emit_16(1272);
+emit_16(1206);
+emit_16(1273);
+emit_16(1207);
+emit_16(1273);
+emit_16(1206);
+emit_16(1273);
+emit_16(1207);
+emit_16(1274);
+emit_16(1208);
+emit_16(1274);
+emit_16(1207);
+emit_16(1274);
+emit_16(1208);
+emit_16(1275);
+emit_16(1209);
+emit_16(1275);
+emit_16(1208);
+emit_16(1275);
+emit_16(1209);
+emit_16(1276);
+emit_16(1210);
+emit_16(1276);
+emit_16(1209);
+emit_16(1276);
+emit_16(1210);
+emit_16(1277);
+emit_16(1211);
+emit_16(1277);
+emit_16(1210);
+emit_16(1277);
+emit_16(1211);
+emit_16(1278);
+emit_16(1212);
+emit_16(1278);
+emit_16(1211);
+emit_16(1278);
+emit_16(1212);
+emit_16(1279);
+emit_16(1213);
+emit_16(1279);
+emit_16(1212);
+emit_16(1279);
+emit_16(1213);
+emit_16(1280);
+emit_16(1214);
+emit_16(1280);
+emit_16(1213);
+emit_16(1280);
+emit_16(1214);
+emit_16(1281);
+emit_16(1215);
+emit_16(1281);
+emit_16(1214);
+emit_16(1281);
+emit_16(1215);
+emit_16(1282);
+emit_16(1216);
+emit_16(1282);
+emit_16(1215);
+emit_16(1282);
+emit_16(1216);
+emit_16(1283);
+emit_16(1217);
+emit_16(1283);
+emit_16(1216);
+emit_16(1283);
+emit_16(1217);
+emit_16(1284);
+emit_16(1218);
+emit_16(1284);
+emit_16(1217);
+emit_16(1284);
+emit_16(1218);
+emit_16(1285);
+emit_16(1219);
+emit_16(1285);
+emit_16(1218);
+emit_16(1285);
+emit_16(1219);
+emit_16(1286);
+emit_16(1220);
+emit_16(1286);
+emit_16(1219);
+emit_16(1286);
+emit_16(1220);
+emit_16(1287);
+emit_16(1221);
+emit_16(1287);
+emit_16(1220);
+emit_16(1287);
+emit_16(1221);
+emit_16(1288);
+emit_16(1222);
+emit_16(1288);
+emit_16(1221);
+emit_16(1288);
+emit_16(1222);
+emit_16(1289);
+emit_16(1223);
+emit_16(1289);
+emit_16(1222);
+emit_16(1289);
+emit_16(1223);
+emit_16(1290);
+emit_16(1224);
+emit_16(1290);
+emit_16(1223);
+emit_16(1290);
+emit_16(1224);
+emit_16(1291);
+emit_16(1225);
+emit_16(1291);
+emit_16(1224);
+emit_16(1291);
+emit_16(1225);
+emit_16(1292);
+emit_16(1226);
+emit_16(1292);
+emit_16(1225);
+emit_16(1292);
+emit_16(1226);
+emit_16(1293);
+emit_16(1227);
+emit_16(1293);
+emit_16(1226);
+emit_16(1293);
+emit_16(1227);
+emit_16(1294);
+emit_16(1228);
+emit_16(1294);
+emit_16(1227);
+emit_16(1294);
+emit_16(1228);
+emit_16(1295);
+emit_16(1229);
+emit_16(1295);
+emit_16(1228);
+emit_16(1295);
+emit_16(1229);
+emit_16(1296);
+emit_16(1230);
+emit_16(1296);
+emit_16(1229);
+emit_16(1296);
+emit_16(1230);
+emit_16(1297);
+emit_16(1231);
+emit_16(1297);
+emit_16(1230);
+emit_16(1297);
+emit_16(1231);
+emit_16(1298);
+emit_16(1232);
+emit_16(1298);
+emit_16(1231);
+emit_16(1298);
+emit_16(1232);
+emit_16(1299);
+emit_16(1233);
+emit_16(1299);
+emit_16(1232);
+emit_16(1299);
+emit_16(1233);
+emit_16(1300);
+emit_16(1234);
+emit_16(1300);
+emit_16(1233);
+emit_16(1300);
+emit_16(1234);
+emit_16(1301);
+emit_16(1235);
+emit_16(1301);
+emit_16(1234);
+emit_16(1301);
+emit_16(1235);
+emit_16(1302);
+emit_16(1236);
+emit_16(1302);
+emit_16(1235);
+emit_16(1302);
+emit_16(1236);
+emit_16(1303);
+emit_16(1237);
+emit_16(1303);
+emit_16(1236);
+emit_16(1303);
+emit_16(1237);
+emit_16(1304);
+emit_16(1238);
+emit_16(1304);
+emit_16(1237);
+emit_16(1304);
+emit_16(1238);
+emit_16(1305);
+emit_16(1239);
+emit_16(1305);
+emit_16(1238);
+emit_16(1305);
+emit_16(1239);
+emit_16(1306);
+emit_16(1240);
+emit_16(1306);
+emit_16(1239);
+emit_16(1306);
+emit_16(1240);
+emit_16(1307);
+emit_16(1241);
+emit_16(1307);
+emit_16(1240);
+emit_16(1307);
+emit_16(1241);
+emit_16(1308);
+emit_16(1242);
+emit_16(1308);
+emit_16(1241);
+emit_16(1308);
+emit_16(1242);
+emit_16(1309);
+emit_16(1243);
+emit_16(1309);
+emit_16(1242);
+emit_16(1309);
+emit_16(1243);
+emit_16(1310);
+emit_16(1244);
+emit_16(1310);
+emit_16(1243);
+emit_16(1310);
+emit_16(1244);
+emit_16(1311);
+emit_16(1245);
+emit_16(1311);
+emit_16(1244);
+emit_16(1311);
+emit_16(1245);
+emit_16(1312);
+emit_16(1246);
+emit_16(1312);
+emit_16(1245);
+emit_16(1312);
+emit_16(1246);
+emit_16(1313);
+emit_16(1247);
+emit_16(1313);
+emit_16(1246);
+emit_16(1313);
+emit_16(1247);
+emit_16(1314);
+emit_16(1248);
+emit_16(1314);
+emit_16(1247);
+emit_16(1314);
+emit_16(1248);
+emit_16(1315);
+emit_16(1249);
+emit_16(1315);
+emit_16(1248);
+emit_16(1315);
+emit_16(1249);
+emit_16(1316);
+emit_16(1250);
+emit_16(1316);
+emit_16(1249);
+emit_16(1316);
+emit_16(1250);
+emit_16(1317);
+emit_16(1251);
+emit_16(1317);
+emit_16(1250);
+emit_16(1317);
+emit_16(1251);
+emit_16(1318);
+emit_16(1252);
+emit_16(1318);
+emit_16(1251);
+emit_16(1318);
+emit_16(1252);
+emit_16(1319);
+emit_16(1253);
+emit_16(1319);
+emit_16(1252);
+emit_16(1320);
+emit_16(1254);
+emit_16(1321);
+emit_16(1255);
+emit_16(1321);
+emit_16(1254);
+emit_16(1321);
+emit_16(1255);
+emit_16(1322);
+emit_16(1256);
+emit_16(1322);
+emit_16(1255);
+emit_16(1322);
+emit_16(1256);
+emit_16(1323);
+emit_16(1257);
+emit_16(1323);
+emit_16(1256);
+emit_16(1323);
+emit_16(1257);
+emit_16(1324);
+emit_16(1258);
+emit_16(1324);
+emit_16(1257);
+emit_16(1324);
+emit_16(1258);
+emit_16(1325);
+emit_16(1259);
+emit_16(1325);
+emit_16(1258);
+emit_16(1325);
+emit_16(1259);
+emit_16(1326);
+emit_16(1260);
+emit_16(1326);
+emit_16(1259);
+emit_16(1326);
+emit_16(1260);
+emit_16(1327);
+emit_16(1261);
+emit_16(1327);
+emit_16(1260);
+emit_16(1327);
+emit_16(1261);
+emit_16(1328);
+emit_16(1262);
+emit_16(1328);
+emit_16(1261);
+emit_16(1328);
+emit_16(1262);
+emit_16(1329);
+emit_16(1263);
+emit_16(1329);
+emit_16(1262);
+emit_16(1329);
+emit_16(1263);
+emit_16(1330);
+emit_16(1264);
+emit_16(1330);
+emit_16(1263);
+emit_16(1330);
+emit_16(1264);
+emit_16(1331);
+emit_16(1265);
+emit_16(1331);
+emit_16(1264);
+emit_16(1331);
+emit_16(1265);
+emit_16(1332);
+emit_16(1266);
+emit_16(1332);
+emit_16(1265);
+emit_16(1332);
+emit_16(1266);
+emit_16(1333);
+emit_16(1267);
+emit_16(1333);
+emit_16(1266);
+emit_16(1333);
+emit_16(1267);
+emit_16(1334);
+emit_16(1268);
+emit_16(1334);
+emit_16(1267);
+emit_16(1334);
+emit_16(1268);
+emit_16(1335);
+emit_16(1269);
+emit_16(1335);
+emit_16(1268);
+emit_16(1335);
+emit_16(1269);
+emit_16(1336);
+emit_16(1270);
+emit_16(1336);
+emit_16(1269);
+emit_16(1336);
+emit_16(1270);
+emit_16(1337);
+emit_16(1271);
+emit_16(1337);
+emit_16(1270);
+emit_16(1337);
+emit_16(1271);
+emit_16(1338);
+emit_16(1272);
+emit_16(1338);
+emit_16(1271);
+emit_16(1338);
+emit_16(1272);
+emit_16(1339);
+emit_16(1273);
+emit_16(1339);
+emit_16(1272);
+emit_16(1339);
+emit_16(1273);
+emit_16(1340);
+emit_16(1274);
+emit_16(1340);
+emit_16(1273);
+emit_16(1340);
+emit_16(1274);
+emit_16(1341);
+emit_16(1275);
+emit_16(1341);
+emit_16(1274);
+emit_16(1341);
+emit_16(1275);
+emit_16(1342);
+emit_16(1276);
+emit_16(1342);
+emit_16(1275);
+emit_16(1342);
+emit_16(1276);
+emit_16(1343);
+emit_16(1277);
+emit_16(1343);
+emit_16(1276);
+emit_16(1343);
+emit_16(1277);
+emit_16(1344);
+emit_16(1278);
+emit_16(1344);
+emit_16(1277);
+emit_16(1344);
+emit_16(1278);
+emit_16(1345);
+emit_16(1279);
+emit_16(1345);
+emit_16(1278);
+emit_16(1345);
+emit_16(1279);
+emit_16(1346);
+emit_16(1280);
+emit_16(1346);
+emit_16(1279);
+emit_16(1346);
+emit_16(1280);
+emit_16(1347);
+emit_16(1281);
+emit_16(1347);
+emit_16(1280);
+emit_16(1347);
+emit_16(1281);
+emit_16(1348);
+emit_16(1282);
+emit_16(1348);
+emit_16(1281);
+emit_16(1348);
+emit_16(1282);
+emit_16(1349);
+emit_16(1283);
+emit_16(1349);
+emit_16(1282);
+emit_16(1349);
+emit_16(1283);
+emit_16(1350);
+emit_16(1284);
+emit_16(1350);
+emit_16(1283);
+emit_16(1350);
+emit_16(1284);
+emit_16(1351);
+emit_16(1285);
+emit_16(1351);
+emit_16(1284);
+emit_16(1351);
+emit_16(1285);
+emit_16(1352);
+emit_16(1286);
+emit_16(1352);
+emit_16(1285);
+emit_16(1352);
+emit_16(1286);
+emit_16(1353);
+emit_16(1287);
+emit_16(1353);
+emit_16(1286);
+emit_16(1353);
+emit_16(1287);
+emit_16(1354);
+emit_16(1288);
+emit_16(1354);
+emit_16(1287);
+emit_16(1354);
+emit_16(1288);
+emit_16(1355);
+emit_16(1289);
+emit_16(1355);
+emit_16(1288);
+emit_16(1355);
+emit_16(1289);
+emit_16(1356);
+emit_16(1290);
+emit_16(1356);
+emit_16(1289);
+emit_16(1356);
+emit_16(1290);
+emit_16(1357);
+emit_16(1291);
+emit_16(1357);
+emit_16(1290);
+emit_16(1357);
+emit_16(1291);
+emit_16(1358);
+emit_16(1292);
+emit_16(1358);
+emit_16(1291);
+emit_16(1358);
+emit_16(1292);
+emit_16(1359);
+emit_16(1293);
+emit_16(1359);
+emit_16(1292);
+emit_16(1359);
+emit_16(1293);
+emit_16(1360);
+emit_16(1294);
+emit_16(1360);
+emit_16(1293);
+emit_16(1360);
+emit_16(1294);
+emit_16(1361);
+emit_16(1295);
+emit_16(1361);
+emit_16(1294);
+emit_16(1361);
+emit_16(1295);
+emit_16(1362);
+emit_16(1296);
+emit_16(1362);
+emit_16(1295);
+emit_16(1362);
+emit_16(1296);
+emit_16(1363);
+emit_16(1297);
+emit_16(1363);
+emit_16(1296);
+emit_16(1363);
+emit_16(1297);
+emit_16(1364);
+emit_16(1298);
+emit_16(1364);
+emit_16(1297);
+emit_16(1364);
+emit_16(1298);
+emit_16(1365);
+emit_16(1299);
+emit_16(1365);
+emit_16(1298);
+emit_16(1365);
+emit_16(1299);
+emit_16(1366);
+emit_16(1300);
+emit_16(1366);
+emit_16(1299);
+emit_16(1366);
+emit_16(1300);
+emit_16(1367);
+emit_16(1301);
+emit_16(1367);
+emit_16(1300);
+emit_16(1367);
+emit_16(1301);
+emit_16(1368);
+emit_16(1302);
+emit_16(1368);
+emit_16(1301);
+emit_16(1368);
+emit_16(1302);
+emit_16(1369);
+emit_16(1303);
+emit_16(1369);
+emit_16(1302);
+emit_16(1369);
+emit_16(1303);
+emit_16(1370);
+emit_16(1304);
+emit_16(1370);
+emit_16(1303);
+emit_16(1370);
+emit_16(1304);
+emit_16(1371);
+emit_16(1305);
+emit_16(1371);
+emit_16(1304);
+emit_16(1371);
+emit_16(1305);
+emit_16(1372);
+emit_16(1306);
+emit_16(1372);
+emit_16(1305);
+emit_16(1372);
+emit_16(1306);
+emit_16(1373);
+emit_16(1307);
+emit_16(1373);
+emit_16(1306);
+emit_16(1373);
+emit_16(1307);
+emit_16(1374);
+emit_16(1308);
+emit_16(1374);
+emit_16(1307);
+emit_16(1374);
+emit_16(1308);
+emit_16(1375);
+emit_16(1309);
+emit_16(1375);
+emit_16(1308);
+emit_16(1375);
+emit_16(1309);
+emit_16(1376);
+emit_16(1310);
+emit_16(1376);
+emit_16(1309);
+emit_16(1376);
+emit_16(1310);
+emit_16(1377);
+emit_16(1311);
+emit_16(1377);
+emit_16(1310);
+emit_16(1377);
+emit_16(1311);
+emit_16(1378);
+emit_16(1312);
+emit_16(1378);
+emit_16(1311);
+emit_16(1378);
+emit_16(1312);
+emit_16(1379);
+emit_16(1313);
+emit_16(1379);
+emit_16(1312);
+emit_16(1379);
+emit_16(1313);
+emit_16(1380);
+emit_16(1314);
+emit_16(1380);
+emit_16(1313);
+emit_16(1380);
+emit_16(1314);
+emit_16(1381);
+emit_16(1315);
+emit_16(1381);
+emit_16(1314);
+emit_16(1381);
+emit_16(1315);
+emit_16(1382);
+emit_16(1316);
+emit_16(1382);
+emit_16(1315);
+emit_16(1382);
+emit_16(1316);
+emit_16(1383);
+emit_16(1317);
+emit_16(1383);
+emit_16(1316);
+emit_16(1383);
+emit_16(1317);
+emit_16(1384);
+emit_16(1318);
+emit_16(1384);
+emit_16(1317);
+emit_16(1384);
+emit_16(1318);
+emit_16(1385);
+emit_16(1319);
+emit_16(1385);
+emit_16(1318);
+emit_16(1386);
+emit_16(1320);
+emit_16(1387);
+emit_16(1321);
+emit_16(1387);
+emit_16(1320);
+emit_16(1387);
+emit_16(1321);
+emit_16(1388);
+emit_16(1322);
+emit_16(1388);
+emit_16(1321);
+emit_16(1388);
+emit_16(1322);
+emit_16(1389);
+emit_16(1323);
+emit_16(1389);
+emit_16(1322);
+emit_16(1389);
+emit_16(1323);
+emit_16(1390);
+emit_16(1324);
+emit_16(1390);
+emit_16(1323);
+emit_16(1390);
+emit_16(1324);
+emit_16(1391);
+emit_16(1325);
+emit_16(1391);
+emit_16(1324);
+emit_16(1391);
+emit_16(1325);
+emit_16(1392);
+emit_16(1326);
+emit_16(1392);
+emit_16(1325);
+emit_16(1392);
+emit_16(1326);
+emit_16(1393);
+emit_16(1327);
+emit_16(1393);
+emit_16(1326);
+emit_16(1393);
+emit_16(1327);
+emit_16(1394);
+emit_16(1328);
+emit_16(1394);
+emit_16(1327);
+emit_16(1394);
+emit_16(1328);
+emit_16(1395);
+emit_16(1329);
+emit_16(1395);
+emit_16(1328);
+emit_16(1395);
+emit_16(1329);
+emit_16(1396);
+emit_16(1330);
+emit_16(1396);
+emit_16(1329);
+emit_16(1396);
+emit_16(1330);
+emit_16(1397);
+emit_16(1331);
+emit_16(1397);
+emit_16(1330);
+emit_16(1397);
+emit_16(1331);
+emit_16(1398);
+emit_16(1332);
+emit_16(1398);
+emit_16(1331);
+emit_16(1398);
+emit_16(1332);
+emit_16(1399);
+emit_16(1333);
+emit_16(1399);
+emit_16(1332);
+emit_16(1399);
+emit_16(1333);
+emit_16(1400);
+emit_16(1334);
+emit_16(1400);
+emit_16(1333);
+emit_16(1400);
+emit_16(1334);
+emit_16(1401);
+emit_16(1335);
+emit_16(1401);
+emit_16(1334);
+emit_16(1401);
+emit_16(1335);
+emit_16(1402);
+emit_16(1336);
+emit_16(1402);
+emit_16(1335);
+emit_16(1402);
+emit_16(1336);
+emit_16(1403);
+emit_16(1337);
+emit_16(1403);
+emit_16(1336);
+emit_16(1403);
+emit_16(1337);
+emit_16(1404);
+emit_16(1338);
+emit_16(1404);
+emit_16(1337);
+emit_16(1404);
+emit_16(1338);
+emit_16(1405);
+emit_16(1339);
+emit_16(1405);
+emit_16(1338);
+emit_16(1405);
+emit_16(1339);
+emit_16(1406);
+emit_16(1340);
+emit_16(1406);
+emit_16(1339);
+emit_16(1406);
+emit_16(1340);
+emit_16(1407);
+emit_16(1341);
+emit_16(1407);
+emit_16(1340);
+emit_16(1407);
+emit_16(1341);
+emit_16(1408);
+emit_16(1342);
+emit_16(1408);
+emit_16(1341);
+emit_16(1408);
+emit_16(1342);
+emit_16(1409);
+emit_16(1343);
+emit_16(1409);
+emit_16(1342);
+emit_16(1409);
+emit_16(1343);
+emit_16(1410);
+emit_16(1344);
+emit_16(1410);
+emit_16(1343);
+emit_16(1410);
+emit_16(1344);
+emit_16(1411);
+emit_16(1345);
+emit_16(1411);
+emit_16(1344);
+emit_16(1411);
+emit_16(1345);
+emit_16(1412);
+emit_16(1346);
+emit_16(1412);
+emit_16(1345);
+emit_16(1412);
+emit_16(1346);
+emit_16(1413);
+emit_16(1347);
+emit_16(1413);
+emit_16(1346);
+emit_16(1413);
+emit_16(1347);
+emit_16(1414);
+emit_16(1348);
+emit_16(1414);
+emit_16(1347);
+emit_16(1414);
+emit_16(1348);
+emit_16(1415);
+emit_16(1349);
+emit_16(1415);
+emit_16(1348);
+emit_16(1415);
+emit_16(1349);
+emit_16(1416);
+emit_16(1350);
+emit_16(1416);
+emit_16(1349);
+emit_16(1416);
+emit_16(1350);
+emit_16(1417);
+emit_16(1351);
+emit_16(1417);
+emit_16(1350);
+emit_16(1417);
+emit_16(1351);
+emit_16(1418);
+emit_16(1352);
+emit_16(1418);
+emit_16(1351);
+emit_16(1418);
+emit_16(1352);
+emit_16(1419);
+emit_16(1353);
+emit_16(1419);
+emit_16(1352);
+emit_16(1419);
+emit_16(1353);
+emit_16(1420);
+emit_16(1354);
+emit_16(1420);
+emit_16(1353);
+emit_16(1420);
+emit_16(1354);
+emit_16(1421);
+emit_16(1355);
+emit_16(1421);
+emit_16(1354);
+emit_16(1421);
+emit_16(1355);
+emit_16(1422);
+emit_16(1356);
+emit_16(1422);
+emit_16(1355);
+emit_16(1422);
+emit_16(1356);
+emit_16(1423);
+emit_16(1357);
+emit_16(1423);
+emit_16(1356);
+emit_16(1423);
+emit_16(1357);
+emit_16(1424);
+emit_16(1358);
+emit_16(1424);
+emit_16(1357);
+emit_16(1424);
+emit_16(1358);
+emit_16(1425);
+emit_16(1359);
+emit_16(1425);
+emit_16(1358);
+emit_16(1425);
+emit_16(1359);
+emit_16(1426);
+emit_16(1360);
+emit_16(1426);
+emit_16(1359);
+emit_16(1426);
+emit_16(1360);
+emit_16(1427);
+emit_16(1361);
+emit_16(1427);
+emit_16(1360);
+emit_16(1427);
+emit_16(1361);
+emit_16(1428);
+emit_16(1362);
+emit_16(1428);
+emit_16(1361);
+emit_16(1428);
+emit_16(1362);
+emit_16(1429);
+emit_16(1363);
+emit_16(1429);
+emit_16(1362);
+emit_16(1429);
+emit_16(1363);
+emit_16(1430);
+emit_16(1364);
+emit_16(1430);
+emit_16(1363);
+emit_16(1430);
+emit_16(1364);
+emit_16(1431);
+emit_16(1365);
+emit_16(1431);
+emit_16(1364);
+emit_16(1431);
+emit_16(1365);
+emit_16(1432);
+emit_16(1366);
+emit_16(1432);
+emit_16(1365);
+emit_16(1432);
+emit_16(1366);
+emit_16(1433);
+emit_16(1367);
+emit_16(1433);
+emit_16(1366);
+emit_16(1433);
+emit_16(1367);
+emit_16(1434);
+emit_16(1368);
+emit_16(1434);
+emit_16(1367);
+emit_16(1434);
+emit_16(1368);
+emit_16(1435);
+emit_16(1369);
+emit_16(1435);
+emit_16(1368);
+emit_16(1435);
+emit_16(1369);
+emit_16(1436);
+emit_16(1370);
+emit_16(1436);
+emit_16(1369);
+emit_16(1436);
+emit_16(1370);
+emit_16(1437);
+emit_16(1371);
+emit_16(1437);
+emit_16(1370);
+emit_16(1437);
+emit_16(1371);
+emit_16(1438);
+emit_16(1372);
+emit_16(1438);
+emit_16(1371);
+emit_16(1438);
+emit_16(1372);
+emit_16(1439);
+emit_16(1373);
+emit_16(1439);
+emit_16(1372);
+emit_16(1439);
+emit_16(1373);
+emit_16(1440);
+emit_16(1374);
+emit_16(1440);
+emit_16(1373);
+emit_16(1440);
+emit_16(1374);
+emit_16(1441);
+emit_16(1375);
+emit_16(1441);
+emit_16(1374);
+emit_16(1441);
+emit_16(1375);
+emit_16(1442);
+emit_16(1376);
+emit_16(1442);
+emit_16(1375);
+emit_16(1442);
+emit_16(1376);
+emit_16(1443);
+emit_16(1377);
+emit_16(1443);
+emit_16(1376);
+emit_16(1443);
+emit_16(1377);
+emit_16(1444);
+emit_16(1378);
+emit_16(1444);
+emit_16(1377);
+emit_16(1444);
+emit_16(1378);
+emit_16(1445);
+emit_16(1379);
+emit_16(1445);
+emit_16(1378);
+emit_16(1445);
+emit_16(1379);
+emit_16(1446);
+emit_16(1380);
+emit_16(1446);
+emit_16(1379);
+emit_16(1446);
+emit_16(1380);
+emit_16(1447);
+emit_16(1381);
+emit_16(1447);
+emit_16(1380);
+emit_16(1447);
+emit_16(1381);
+emit_16(1448);
+emit_16(1382);
+emit_16(1448);
+emit_16(1381);
+emit_16(1448);
+emit_16(1382);
+emit_16(1449);
+emit_16(1383);
+emit_16(1449);
+emit_16(1382);
+emit_16(1449);
+emit_16(1383);
+emit_16(1450);
+emit_16(1384);
+emit_16(1450);
+emit_16(1383);
+emit_16(1450);
+emit_16(1384);
+emit_16(1451);
+emit_16(1385);
+emit_16(1451);
+emit_16(1384);
+emit_16(1452);
+emit_16(1386);
+emit_16(1453);
+emit_16(1387);
+emit_16(1453);
+emit_16(1386);
+emit_16(1453);
+emit_16(1387);
+emit_16(1454);
+emit_16(1388);
+emit_16(1454);
+emit_16(1387);
+emit_16(1454);
+emit_16(1388);
+emit_16(1455);
+emit_16(1389);
+emit_16(1455);
+emit_16(1388);
+emit_16(1455);
+emit_16(1389);
+emit_16(1456);
+emit_16(1390);
+emit_16(1456);
+emit_16(1389);
+emit_16(1456);
+emit_16(1390);
+emit_16(1457);
+emit_16(1391);
+emit_16(1457);
+emit_16(1390);
+emit_16(1457);
+emit_16(1391);
+emit_16(1458);
+emit_16(1392);
+emit_16(1458);
+emit_16(1391);
+emit_16(1458);
+emit_16(1392);
+emit_16(1459);
+emit_16(1393);
+emit_16(1459);
+emit_16(1392);
+emit_16(1459);
+emit_16(1393);
+emit_16(1460);
+emit_16(1394);
+emit_16(1460);
+emit_16(1393);
+emit_16(1460);
+emit_16(1394);
+emit_16(1461);
+emit_16(1395);
+emit_16(1461);
+emit_16(1394);
+emit_16(1461);
+emit_16(1395);
+emit_16(1462);
+emit_16(1396);
+emit_16(1462);
+emit_16(1395);
+emit_16(1462);
+emit_16(1396);
+emit_16(1463);
+emit_16(1397);
+emit_16(1463);
+emit_16(1396);
+emit_16(1463);
+emit_16(1397);
+emit_16(1464);
+emit_16(1398);
+emit_16(1464);
+emit_16(1397);
+emit_16(1464);
+emit_16(1398);
+emit_16(1465);
+emit_16(1399);
+emit_16(1465);
+emit_16(1398);
+emit_16(1465);
+emit_16(1399);
+emit_16(1466);
+emit_16(1400);
+emit_16(1466);
+emit_16(1399);
+emit_16(1466);
+emit_16(1400);
+emit_16(1467);
+emit_16(1401);
+emit_16(1467);
+emit_16(1400);
+emit_16(1467);
+emit_16(1401);
+emit_16(1468);
+emit_16(1402);
+emit_16(1468);
+emit_16(1401);
+emit_16(1468);
+emit_16(1402);
+emit_16(1469);
+emit_16(1403);
+emit_16(1469);
+emit_16(1402);
+emit_16(1469);
+emit_16(1403);
+emit_16(1470);
+emit_16(1404);
+emit_16(1470);
+emit_16(1403);
+emit_16(1470);
+emit_16(1404);
+emit_16(1471);
+emit_16(1405);
+emit_16(1471);
+emit_16(1404);
+emit_16(1471);
+emit_16(1405);
+emit_16(1472);
+emit_16(1406);
+emit_16(1472);
+emit_16(1405);
+emit_16(1472);
+emit_16(1406);
+emit_16(1473);
+emit_16(1407);
+emit_16(1473);
+emit_16(1406);
+emit_16(1473);
+emit_16(1407);
+emit_16(1474);
+emit_16(1408);
+emit_16(1474);
+emit_16(1407);
+emit_16(1474);
+emit_16(1408);
+emit_16(1475);
+emit_16(1409);
+emit_16(1475);
+emit_16(1408);
+emit_16(1475);
+emit_16(1409);
+emit_16(1476);
+emit_16(1410);
+emit_16(1476);
+emit_16(1409);
+emit_16(1476);
+emit_16(1410);
+emit_16(1477);
+emit_16(1411);
+emit_16(1477);
+emit_16(1410);
+emit_16(1477);
+emit_16(1411);
+emit_16(1478);
+emit_16(1412);
+emit_16(1478);
+emit_16(1411);
+emit_16(1478);
+emit_16(1412);
+emit_16(1479);
+emit_16(1413);
+emit_16(1479);
+emit_16(1412);
+emit_16(1479);
+emit_16(1413);
+emit_16(1480);
+emit_16(1414);
+emit_16(1480);
+emit_16(1413);
+emit_16(1480);
+emit_16(1414);
+emit_16(1481);
+emit_16(1415);
+emit_16(1481);
+emit_16(1414);
+emit_16(1481);
+emit_16(1415);
+emit_16(1482);
+emit_16(1416);
+emit_16(1482);
+emit_16(1415);
+emit_16(1482);
+emit_16(1416);
+emit_16(1483);
+emit_16(1417);
+emit_16(1483);
+emit_16(1416);
+emit_16(1483);
+emit_16(1417);
+emit_16(1484);
+emit_16(1418);
+emit_16(1484);
+emit_16(1417);
+emit_16(1484);
+emit_16(1418);
+emit_16(1485);
+emit_16(1419);
+emit_16(1485);
+emit_16(1418);
+emit_16(1485);
+emit_16(1419);
+emit_16(1486);
+emit_16(1420);
+emit_16(1486);
+emit_16(1419);
+emit_16(1486);
+emit_16(1420);
+emit_16(1487);
+emit_16(1421);
+emit_16(1487);
+emit_16(1420);
+emit_16(1487);
+emit_16(1421);
+emit_16(1488);
+emit_16(1422);
+emit_16(1488);
+emit_16(1421);
+emit_16(1488);
+emit_16(1422);
+emit_16(1489);
+emit_16(1423);
+emit_16(1489);
+emit_16(1422);
+emit_16(1489);
+emit_16(1423);
+emit_16(1490);
+emit_16(1424);
+emit_16(1490);
+emit_16(1423);
+emit_16(1490);
+emit_16(1424);
+emit_16(1491);
+emit_16(1425);
+emit_16(1491);
+emit_16(1424);
+emit_16(1491);
+emit_16(1425);
+emit_16(1492);
+emit_16(1426);
+emit_16(1492);
+emit_16(1425);
+emit_16(1492);
+emit_16(1426);
+emit_16(1493);
+emit_16(1427);
+emit_16(1493);
+emit_16(1426);
+emit_16(1493);
+emit_16(1427);
+emit_16(1494);
+emit_16(1428);
+emit_16(1494);
+emit_16(1427);
+emit_16(1494);
+emit_16(1428);
+emit_16(1495);
+emit_16(1429);
+emit_16(1495);
+emit_16(1428);
+emit_16(1495);
+emit_16(1429);
+emit_16(1496);
+emit_16(1430);
+emit_16(1496);
+emit_16(1429);
+emit_16(1496);
+emit_16(1430);
+emit_16(1497);
+emit_16(1431);
+emit_16(1497);
+emit_16(1430);
+emit_16(1497);
+emit_16(1431);
+emit_16(1498);
+emit_16(1432);
+emit_16(1498);
+emit_16(1431);
+emit_16(1498);
+emit_16(1432);
+emit_16(1499);
+emit_16(1433);
+emit_16(1499);
+emit_16(1432);
+emit_16(1499);
+emit_16(1433);
+emit_16(1500);
+emit_16(1434);
+emit_16(1500);
+emit_16(1433);
+emit_16(1500);
+emit_16(1434);
+emit_16(1501);
+emit_16(1435);
+emit_16(1501);
+emit_16(1434);
+emit_16(1501);
+emit_16(1435);
+emit_16(1502);
+emit_16(1436);
+emit_16(1502);
+emit_16(1435);
+emit_16(1502);
+emit_16(1436);
+emit_16(1503);
+emit_16(1437);
+emit_16(1503);
+emit_16(1436);
+emit_16(1503);
+emit_16(1437);
+emit_16(1504);
+emit_16(1438);
+emit_16(1504);
+emit_16(1437);
+emit_16(1504);
+emit_16(1438);
+emit_16(1505);
+emit_16(1439);
+emit_16(1505);
+emit_16(1438);
+emit_16(1505);
+emit_16(1439);
+emit_16(1506);
+emit_16(1440);
+emit_16(1506);
+emit_16(1439);
+emit_16(1506);
+emit_16(1440);
+emit_16(1507);
+emit_16(1441);
+emit_16(1507);
+emit_16(1440);
+emit_16(1507);
+emit_16(1441);
+emit_16(1508);
+emit_16(1442);
+emit_16(1508);
+emit_16(1441);
+emit_16(1508);
+emit_16(1442);
+emit_16(1509);
+emit_16(1443);
+emit_16(1509);
+emit_16(1442);
+emit_16(1509);
+emit_16(1443);
+emit_16(1510);
+emit_16(1444);
+emit_16(1510);
+emit_16(1443);
+emit_16(1510);
+emit_16(1444);
+emit_16(1511);
+emit_16(1445);
+emit_16(1511);
+emit_16(1444);
+emit_16(1511);
+emit_16(1445);
+emit_16(1512);
+emit_16(1446);
+emit_16(1512);
+emit_16(1445);
+emit_16(1512);
+emit_16(1446);
+emit_16(1513);
+emit_16(1447);
+emit_16(1513);
+emit_16(1446);
+emit_16(1513);
+emit_16(1447);
+emit_16(1514);
+emit_16(1448);
+emit_16(1514);
+emit_16(1447);
+emit_16(1514);
+emit_16(1448);
+emit_16(1515);
+emit_16(1449);
+emit_16(1515);
+emit_16(1448);
+emit_16(1515);
+emit_16(1449);
+emit_16(1516);
+emit_16(1450);
+emit_16(1516);
+emit_16(1449);
+emit_16(1516);
+emit_16(1450);
+emit_16(1517);
+emit_16(1451);
+emit_16(1517);
+emit_16(1450);
+emit_16(1518);
+emit_16(1452);
+emit_16(1519);
+emit_16(1453);
+emit_16(1519);
+emit_16(1452);
+emit_16(1519);
+emit_16(1453);
+emit_16(1520);
+emit_16(1454);
+emit_16(1520);
+emit_16(1453);
+emit_16(1520);
+emit_16(1454);
+emit_16(1521);
+emit_16(1455);
+emit_16(1521);
+emit_16(1454);
+emit_16(1521);
+emit_16(1455);
+emit_16(1522);
+emit_16(1456);
+emit_16(1522);
+emit_16(1455);
+emit_16(1522);
+emit_16(1456);
+emit_16(1523);
+emit_16(1457);
+emit_16(1523);
+emit_16(1456);
+emit_16(1523);
+emit_16(1457);
+emit_16(1524);
+emit_16(1458);
+emit_16(1524);
+emit_16(1457);
+emit_16(1524);
+emit_16(1458);
+emit_16(1525);
+emit_16(1459);
+emit_16(1525);
+emit_16(1458);
+emit_16(1525);
+emit_16(1459);
+emit_16(1526);
+emit_16(1460);
+emit_16(1526);
+emit_16(1459);
+emit_16(1526);
+emit_16(1460);
+emit_16(1527);
+emit_16(1461);
+emit_16(1527);
+emit_16(1460);
+emit_16(1527);
+emit_16(1461);
+emit_16(1528);
+emit_16(1462);
+emit_16(1528);
+emit_16(1461);
+emit_16(1528);
+emit_16(1462);
+emit_16(1529);
+emit_16(1463);
+emit_16(1529);
+emit_16(1462);
+emit_16(1529);
+emit_16(1463);
+emit_16(1530);
+emit_16(1464);
+emit_16(1530);
+emit_16(1463);
+emit_16(1530);
+emit_16(1464);
+emit_16(1531);
+emit_16(1465);
+emit_16(1531);
+emit_16(1464);
+emit_16(1531);
+emit_16(1465);
+emit_16(1532);
+emit_16(1466);
+emit_16(1532);
+emit_16(1465);
+emit_16(1532);
+emit_16(1466);
+emit_16(1533);
+emit_16(1467);
+emit_16(1533);
+emit_16(1466);
+emit_16(1533);
+emit_16(1467);
+emit_16(1534);
+emit_16(1468);
+emit_16(1534);
+emit_16(1467);
+emit_16(1534);
+emit_16(1468);
+emit_16(1535);
+emit_16(1469);
+emit_16(1535);
+emit_16(1468);
+emit_16(1535);
+emit_16(1469);
+emit_16(1536);
+emit_16(1470);
+emit_16(1536);
+emit_16(1469);
+emit_16(1536);
+emit_16(1470);
+emit_16(1537);
+emit_16(1471);
+emit_16(1537);
+emit_16(1470);
+emit_16(1537);
+emit_16(1471);
+emit_16(1538);
+emit_16(1472);
+emit_16(1538);
+emit_16(1471);
+emit_16(1538);
+emit_16(1472);
+emit_16(1539);
+emit_16(1473);
+emit_16(1539);
+emit_16(1472);
+emit_16(1539);
+emit_16(1473);
+emit_16(1540);
+emit_16(1474);
+emit_16(1540);
+emit_16(1473);
+emit_16(1540);
+emit_16(1474);
+emit_16(1541);
+emit_16(1475);
+emit_16(1541);
+emit_16(1474);
+emit_16(1541);
+emit_16(1475);
+emit_16(1542);
+emit_16(1476);
+emit_16(1542);
+emit_16(1475);
+emit_16(1542);
+emit_16(1476);
+emit_16(1543);
+emit_16(1477);
+emit_16(1543);
+emit_16(1476);
+emit_16(1543);
+emit_16(1477);
+emit_16(1544);
+emit_16(1478);
+emit_16(1544);
+emit_16(1477);
+emit_16(1544);
+emit_16(1478);
+emit_16(1545);
+emit_16(1479);
+emit_16(1545);
+emit_16(1478);
+emit_16(1545);
+emit_16(1479);
+emit_16(1546);
+emit_16(1480);
+emit_16(1546);
+emit_16(1479);
+emit_16(1546);
+emit_16(1480);
+emit_16(1547);
+emit_16(1481);
+emit_16(1547);
+emit_16(1480);
+emit_16(1547);
+emit_16(1481);
+emit_16(1548);
+emit_16(1482);
+emit_16(1548);
+emit_16(1481);
+emit_16(1548);
+emit_16(1482);
+emit_16(1549);
+emit_16(1483);
+emit_16(1549);
+emit_16(1482);
+emit_16(1549);
+emit_16(1483);
+emit_16(1550);
+emit_16(1484);
+emit_16(1550);
+emit_16(1483);
+emit_16(1550);
+emit_16(1484);
+emit_16(1551);
+emit_16(1485);
+emit_16(1551);
+emit_16(1484);
+emit_16(1551);
+emit_16(1485);
+emit_16(1552);
+emit_16(1486);
+emit_16(1552);
+emit_16(1485);
+emit_16(1552);
+emit_16(1486);
+emit_16(1553);
+emit_16(1487);
+emit_16(1553);
+emit_16(1486);
+emit_16(1553);
+emit_16(1487);
+emit_16(1554);
+emit_16(1488);
+emit_16(1554);
+emit_16(1487);
+emit_16(1554);
+emit_16(1488);
+emit_16(1555);
+emit_16(1489);
+emit_16(1555);
+emit_16(1488);
+emit_16(1555);
+emit_16(1489);
+emit_16(1556);
+emit_16(1490);
+emit_16(1556);
+emit_16(1489);
+emit_16(1556);
+emit_16(1490);
+emit_16(1557);
+emit_16(1491);
+emit_16(1557);
+emit_16(1490);
+emit_16(1557);
+emit_16(1491);
+emit_16(1558);
+emit_16(1492);
+emit_16(1558);
+emit_16(1491);
+emit_16(1558);
+emit_16(1492);
+emit_16(1559);
+emit_16(1493);
+emit_16(1559);
+emit_16(1492);
+emit_16(1559);
+emit_16(1493);
+emit_16(1560);
+emit_16(1494);
+emit_16(1560);
+emit_16(1493);
+emit_16(1560);
+emit_16(1494);
+emit_16(1561);
+emit_16(1495);
+emit_16(1561);
+emit_16(1494);
+emit_16(1561);
+emit_16(1495);
+emit_16(1562);
+emit_16(1496);
+emit_16(1562);
+emit_16(1495);
+emit_16(1562);
+emit_16(1496);
+emit_16(1563);
+emit_16(1497);
+emit_16(1563);
+emit_16(1496);
+emit_16(1563);
+emit_16(1497);
+emit_16(1564);
+emit_16(1498);
+emit_16(1564);
+emit_16(1497);
+emit_16(1564);
+emit_16(1498);
+emit_16(1565);
+emit_16(1499);
+emit_16(1565);
+emit_16(1498);
+emit_16(1565);
+emit_16(1499);
+emit_16(1566);
+emit_16(1500);
+emit_16(1566);
+emit_16(1499);
+emit_16(1566);
+emit_16(1500);
+emit_16(1567);
+emit_16(1501);
+emit_16(1567);
+emit_16(1500);
+emit_16(1567);
+emit_16(1501);
+emit_16(1568);
+emit_16(1502);
+emit_16(1568);
+emit_16(1501);
+emit_16(1568);
+emit_16(1502);
+emit_16(1569);
+emit_16(1503);
+emit_16(1569);
+emit_16(1502);
+emit_16(1569);
+emit_16(1503);
+emit_16(1570);
+emit_16(1504);
+emit_16(1570);
+emit_16(1503);
+emit_16(1570);
+emit_16(1504);
+emit_16(1571);
+emit_16(1505);
+emit_16(1571);
+emit_16(1504);
+emit_16(1571);
+emit_16(1505);
+emit_16(1572);
+emit_16(1506);
+emit_16(1572);
+emit_16(1505);
+emit_16(1572);
+emit_16(1506);
+emit_16(1573);
+emit_16(1507);
+emit_16(1573);
+emit_16(1506);
+emit_16(1573);
+emit_16(1507);
+emit_16(1574);
+emit_16(1508);
+emit_16(1574);
+emit_16(1507);
+emit_16(1574);
+emit_16(1508);
+emit_16(1575);
+emit_16(1509);
+emit_16(1575);
+emit_16(1508);
+emit_16(1575);
+emit_16(1509);
+emit_16(1576);
+emit_16(1510);
+emit_16(1576);
+emit_16(1509);
+emit_16(1576);
+emit_16(1510);
+emit_16(1577);
+emit_16(1511);
+emit_16(1577);
+emit_16(1510);
+emit_16(1577);
+emit_16(1511);
+emit_16(1578);
+emit_16(1512);
+emit_16(1578);
+emit_16(1511);
+emit_16(1578);
+emit_16(1512);
+emit_16(1579);
+emit_16(1513);
+emit_16(1579);
+emit_16(1512);
+emit_16(1579);
+emit_16(1513);
+emit_16(1580);
+emit_16(1514);
+emit_16(1580);
+emit_16(1513);
+emit_16(1580);
+emit_16(1514);
+emit_16(1581);
+emit_16(1515);
+emit_16(1581);
+emit_16(1514);
+emit_16(1581);
+emit_16(1515);
+emit_16(1582);
+emit_16(1516);
+emit_16(1582);
+emit_16(1515);
+emit_16(1582);
+emit_16(1516);
+emit_16(1583);
+emit_16(1517);
+emit_16(1583);
+emit_16(1516);
+emit_16(1584);
+emit_16(1518);
+emit_16(1585);
+emit_16(1519);
+emit_16(1585);
+emit_16(1518);
+emit_16(1585);
+emit_16(1519);
+emit_16(1586);
+emit_16(1520);
+emit_16(1586);
+emit_16(1519);
+emit_16(1586);
+emit_16(1520);
+emit_16(1587);
+emit_16(1521);
+emit_16(1587);
+emit_16(1520);
+emit_16(1587);
+emit_16(1521);
+emit_16(1588);
+emit_16(1522);
+emit_16(1588);
+emit_16(1521);
+emit_16(1588);
+emit_16(1522);
+emit_16(1589);
+emit_16(1523);
+emit_16(1589);
+emit_16(1522);
+emit_16(1589);
+emit_16(1523);
+emit_16(1590);
+emit_16(1524);
+emit_16(1590);
+emit_16(1523);
+emit_16(1590);
+emit_16(1524);
+emit_16(1591);
+emit_16(1525);
+emit_16(1591);
+emit_16(1524);
+emit_16(1591);
+emit_16(1525);
+emit_16(1592);
+emit_16(1526);
+emit_16(1592);
+emit_16(1525);
+emit_16(1592);
+emit_16(1526);
+emit_16(1593);
+emit_16(1527);
+emit_16(1593);
+emit_16(1526);
+emit_16(1593);
+emit_16(1527);
+emit_16(1594);
+emit_16(1528);
+emit_16(1594);
+emit_16(1527);
+emit_16(1594);
+emit_16(1528);
+emit_16(1595);
+emit_16(1529);
+emit_16(1595);
+emit_16(1528);
+emit_16(1595);
+emit_16(1529);
+emit_16(1596);
+emit_16(1530);
+emit_16(1596);
+emit_16(1529);
+emit_16(1596);
+emit_16(1530);
+emit_16(1597);
+emit_16(1531);
+emit_16(1597);
+emit_16(1530);
+emit_16(1597);
+emit_16(1531);
+emit_16(1598);
+emit_16(1532);
+emit_16(1598);
+emit_16(1531);
+emit_16(1598);
+emit_16(1532);
+emit_16(1599);
+emit_16(1533);
+emit_16(1599);
+emit_16(1532);
+emit_16(1599);
+emit_16(1533);
+emit_16(1600);
+emit_16(1534);
+emit_16(1600);
+emit_16(1533);
+emit_16(1600);
+emit_16(1534);
+emit_16(1601);
+emit_16(1535);
+emit_16(1601);
+emit_16(1534);
+emit_16(1601);
+emit_16(1535);
+emit_16(1602);
+emit_16(1536);
+emit_16(1602);
+emit_16(1535);
+emit_16(1602);
+emit_16(1536);
+emit_16(1603);
+emit_16(1537);
+emit_16(1603);
+emit_16(1536);
+emit_16(1603);
+emit_16(1537);
+emit_16(1604);
+emit_16(1538);
+emit_16(1604);
+emit_16(1537);
+emit_16(1604);
+emit_16(1538);
+emit_16(1605);
+emit_16(1539);
+emit_16(1605);
+emit_16(1538);
+emit_16(1605);
+emit_16(1539);
+emit_16(1606);
+emit_16(1540);
+emit_16(1606);
+emit_16(1539);
+emit_16(1606);
+emit_16(1540);
+emit_16(1607);
+emit_16(1541);
+emit_16(1607);
+emit_16(1540);
+emit_16(1607);
+emit_16(1541);
+emit_16(1608);
+emit_16(1542);
+emit_16(1608);
+emit_16(1541);
+emit_16(1608);
+emit_16(1542);
+emit_16(1609);
+emit_16(1543);
+emit_16(1609);
+emit_16(1542);
+emit_16(1609);
+emit_16(1543);
+emit_16(1610);
+emit_16(1544);
+emit_16(1610);
+emit_16(1543);
+emit_16(1610);
+emit_16(1544);
+emit_16(1611);
+emit_16(1545);
+emit_16(1611);
+emit_16(1544);
+emit_16(1611);
+emit_16(1545);
+emit_16(1612);
+emit_16(1546);
+emit_16(1612);
+emit_16(1545);
+emit_16(1612);
+emit_16(1546);
+emit_16(1613);
+emit_16(1547);
+emit_16(1613);
+emit_16(1546);
+emit_16(1613);
+emit_16(1547);
+emit_16(1614);
+emit_16(1548);
+emit_16(1614);
+emit_16(1547);
+emit_16(1614);
+emit_16(1548);
+emit_16(1615);
+emit_16(1549);
+emit_16(1615);
+emit_16(1548);
+emit_16(1615);
+emit_16(1549);
+emit_16(1616);
+emit_16(1550);
+emit_16(1616);
+emit_16(1549);
+emit_16(1616);
+emit_16(1550);
+emit_16(1617);
+emit_16(1551);
+emit_16(1617);
+emit_16(1550);
+emit_16(1617);
+emit_16(1551);
+emit_16(1618);
+emit_16(1552);
+emit_16(1618);
+emit_16(1551);
+emit_16(1618);
+emit_16(1552);
+emit_16(1619);
+emit_16(1553);
+emit_16(1619);
+emit_16(1552);
+emit_16(1619);
+emit_16(1553);
+emit_16(1620);
+emit_16(1554);
+emit_16(1620);
+emit_16(1553);
+emit_16(1620);
+emit_16(1554);
+emit_16(1621);
+emit_16(1555);
+emit_16(1621);
+emit_16(1554);
+emit_16(1621);
+emit_16(1555);
+emit_16(1622);
+emit_16(1556);
+emit_16(1622);
+emit_16(1555);
+emit_16(1622);
+emit_16(1556);
+emit_16(1623);
+emit_16(1557);
+emit_16(1623);
+emit_16(1556);
+emit_16(1623);
+emit_16(1557);
+emit_16(1624);
+emit_16(1558);
+emit_16(1624);
+emit_16(1557);
+emit_16(1624);
+emit_16(1558);
+emit_16(1625);
+emit_16(1559);
+emit_16(1625);
+emit_16(1558);
+emit_16(1625);
+emit_16(1559);
+emit_16(1626);
+emit_16(1560);
+emit_16(1626);
+emit_16(1559);
+emit_16(1626);
+emit_16(1560);
+emit_16(1627);
+emit_16(1561);
+emit_16(1627);
+emit_16(1560);
+emit_16(1627);
+emit_16(1561);
+emit_16(1628);
+emit_16(1562);
+emit_16(1628);
+emit_16(1561);
+emit_16(1628);
+emit_16(1562);
+emit_16(1629);
+emit_16(1563);
+emit_16(1629);
+emit_16(1562);
+emit_16(1629);
+emit_16(1563);
+emit_16(1630);
+emit_16(1564);
+emit_16(1630);
+emit_16(1563);
+emit_16(1630);
+emit_16(1564);
+emit_16(1631);
+emit_16(1565);
+emit_16(1631);
+emit_16(1564);
+emit_16(1631);
+emit_16(1565);
+emit_16(1632);
+emit_16(1566);
+emit_16(1632);
+emit_16(1565);
+emit_16(1632);
+emit_16(1566);
+emit_16(1633);
+emit_16(1567);
+emit_16(1633);
+emit_16(1566);
+emit_16(1633);
+emit_16(1567);
+emit_16(1634);
+emit_16(1568);
+emit_16(1634);
+emit_16(1567);
+emit_16(1634);
+emit_16(1568);
+emit_16(1635);
+emit_16(1569);
+emit_16(1635);
+emit_16(1568);
+emit_16(1635);
+emit_16(1569);
+emit_16(1636);
+emit_16(1570);
+emit_16(1636);
+emit_16(1569);
+emit_16(1636);
+emit_16(1570);
+emit_16(1637);
+emit_16(1571);
+emit_16(1637);
+emit_16(1570);
+emit_16(1637);
+emit_16(1571);
+emit_16(1638);
+emit_16(1572);
+emit_16(1638);
+emit_16(1571);
+emit_16(1638);
+emit_16(1572);
+emit_16(1639);
+emit_16(1573);
+emit_16(1639);
+emit_16(1572);
+emit_16(1639);
+emit_16(1573);
+emit_16(1640);
+emit_16(1574);
+emit_16(1640);
+emit_16(1573);
+emit_16(1640);
+emit_16(1574);
+emit_16(1641);
+emit_16(1575);
+emit_16(1641);
+emit_16(1574);
+emit_16(1641);
+emit_16(1575);
+emit_16(1642);
+emit_16(1576);
+emit_16(1642);
+emit_16(1575);
+emit_16(1642);
+emit_16(1576);
+emit_16(1643);
+emit_16(1577);
+emit_16(1643);
+emit_16(1576);
+emit_16(1643);
+emit_16(1577);
+emit_16(1644);
+emit_16(1578);
+emit_16(1644);
+emit_16(1577);
+emit_16(1644);
+emit_16(1578);
+emit_16(1645);
+emit_16(1579);
+emit_16(1645);
+emit_16(1578);
+emit_16(1645);
+emit_16(1579);
+emit_16(1646);
+emit_16(1580);
+emit_16(1646);
+emit_16(1579);
+emit_16(1646);
+emit_16(1580);
+emit_16(1647);
+emit_16(1581);
+emit_16(1647);
+emit_16(1580);
+emit_16(1647);
+emit_16(1581);
+emit_16(1648);
+emit_16(1582);
+emit_16(1648);
+emit_16(1581);
+emit_16(1648);
+emit_16(1582);
+emit_16(1649);
+emit_16(1583);
+emit_16(1649);
+emit_16(1582);
+emit_16(1650);
+emit_16(1584);
+emit_16(1651);
+emit_16(1585);
+emit_16(1651);
+emit_16(1584);
+emit_16(1651);
+emit_16(1585);
+emit_16(1652);
+emit_16(1586);
+emit_16(1652);
+emit_16(1585);
+emit_16(1652);
+emit_16(1586);
+emit_16(1653);
+emit_16(1587);
+emit_16(1653);
+emit_16(1586);
+emit_16(1653);
+emit_16(1587);
+emit_16(1654);
+emit_16(1588);
+emit_16(1654);
+emit_16(1587);
+emit_16(1654);
+emit_16(1588);
+emit_16(1655);
+emit_16(1589);
+emit_16(1655);
+emit_16(1588);
+emit_16(1655);
+emit_16(1589);
+emit_16(1656);
+emit_16(1590);
+emit_16(1656);
+emit_16(1589);
+emit_16(1656);
+emit_16(1590);
+emit_16(1657);
+emit_16(1591);
+emit_16(1657);
+emit_16(1590);
+emit_16(1657);
+emit_16(1591);
+emit_16(1658);
+emit_16(1592);
+emit_16(1658);
+emit_16(1591);
+emit_16(1658);
+emit_16(1592);
+emit_16(1659);
+emit_16(1593);
+emit_16(1659);
+emit_16(1592);
+emit_16(1659);
+emit_16(1593);
+emit_16(1660);
+emit_16(1594);
+emit_16(1660);
+emit_16(1593);
+emit_16(1660);
+emit_16(1594);
+emit_16(1661);
+emit_16(1595);
+emit_16(1661);
+emit_16(1594);
+emit_16(1661);
+emit_16(1595);
+emit_16(1662);
+emit_16(1596);
+emit_16(1662);
+emit_16(1595);
+emit_16(1662);
+emit_16(1596);
+emit_16(1663);
+emit_16(1597);
+emit_16(1663);
+emit_16(1596);
+emit_16(1663);
+emit_16(1597);
+emit_16(1664);
+emit_16(1598);
+emit_16(1664);
+emit_16(1597);
+emit_16(1664);
+emit_16(1598);
+emit_16(1665);
+emit_16(1599);
+emit_16(1665);
+emit_16(1598);
+emit_16(1665);
+emit_16(1599);
+emit_16(1666);
+emit_16(1600);
+emit_16(1666);
+emit_16(1599);
+emit_16(1666);
+emit_16(1600);
+emit_16(1667);
+emit_16(1601);
+emit_16(1667);
+emit_16(1600);
+emit_16(1667);
+emit_16(1601);
+emit_16(1668);
+emit_16(1602);
+emit_16(1668);
+emit_16(1601);
+emit_16(1668);
+emit_16(1602);
+emit_16(1669);
+emit_16(1603);
+emit_16(1669);
+emit_16(1602);
+emit_16(1669);
+emit_16(1603);
+emit_16(1670);
+emit_16(1604);
+emit_16(1670);
+emit_16(1603);
+emit_16(1670);
+emit_16(1604);
+emit_16(1671);
+emit_16(1605);
+emit_16(1671);
+emit_16(1604);
+emit_16(1671);
+emit_16(1605);
+emit_16(1672);
+emit_16(1606);
+emit_16(1672);
+emit_16(1605);
+emit_16(1672);
+emit_16(1606);
+emit_16(1673);
+emit_16(1607);
+emit_16(1673);
+emit_16(1606);
+emit_16(1673);
+emit_16(1607);
+emit_16(1674);
+emit_16(1608);
+emit_16(1674);
+emit_16(1607);
+emit_16(1674);
+emit_16(1608);
+emit_16(1675);
+emit_16(1609);
+emit_16(1675);
+emit_16(1608);
+emit_16(1675);
+emit_16(1609);
+emit_16(1676);
+emit_16(1610);
+emit_16(1676);
+emit_16(1609);
+emit_16(1676);
+emit_16(1610);
+emit_16(1677);
+emit_16(1611);
+emit_16(1677);
+emit_16(1610);
+emit_16(1677);
+emit_16(1611);
+emit_16(1678);
+emit_16(1612);
+emit_16(1678);
+emit_16(1611);
+emit_16(1678);
+emit_16(1612);
+emit_16(1679);
+emit_16(1613);
+emit_16(1679);
+emit_16(1612);
+emit_16(1679);
+emit_16(1613);
+emit_16(1680);
+emit_16(1614);
+emit_16(1680);
+emit_16(1613);
+emit_16(1680);
+emit_16(1614);
+emit_16(1681);
+emit_16(1615);
+emit_16(1681);
+emit_16(1614);
+emit_16(1681);
+emit_16(1615);
+emit_16(1682);
+emit_16(1616);
+emit_16(1682);
+emit_16(1615);
+emit_16(1682);
+emit_16(1616);
+emit_16(1683);
+emit_16(1617);
+emit_16(1683);
+emit_16(1616);
+emit_16(1683);
+emit_16(1617);
+emit_16(1684);
+emit_16(1618);
+emit_16(1684);
+emit_16(1617);
+emit_16(1684);
+emit_16(1618);
+emit_16(1685);
+emit_16(1619);
+emit_16(1685);
+emit_16(1618);
+emit_16(1685);
+emit_16(1619);
+emit_16(1686);
+emit_16(1620);
+emit_16(1686);
+emit_16(1619);
+emit_16(1686);
+emit_16(1620);
+emit_16(1687);
+emit_16(1621);
+emit_16(1687);
+emit_16(1620);
+emit_16(1687);
+emit_16(1621);
+emit_16(1688);
+emit_16(1622);
+emit_16(1688);
+emit_16(1621);
+emit_16(1688);
+emit_16(1622);
+emit_16(1689);
+emit_16(1623);
+emit_16(1689);
+emit_16(1622);
+emit_16(1689);
+emit_16(1623);
+emit_16(1690);
+emit_16(1624);
+emit_16(1690);
+emit_16(1623);
+emit_16(1690);
+emit_16(1624);
+emit_16(1691);
+emit_16(1625);
+emit_16(1691);
+emit_16(1624);
+emit_16(1691);
+emit_16(1625);
+emit_16(1692);
+emit_16(1626);
+emit_16(1692);
+emit_16(1625);
+emit_16(1692);
+emit_16(1626);
+emit_16(1693);
+emit_16(1627);
+emit_16(1693);
+emit_16(1626);
+emit_16(1693);
+emit_16(1627);
+emit_16(1694);
+emit_16(1628);
+emit_16(1694);
+emit_16(1627);
+emit_16(1694);
+emit_16(1628);
+emit_16(1695);
+emit_16(1629);
+emit_16(1695);
+emit_16(1628);
+emit_16(1695);
+emit_16(1629);
+emit_16(1696);
+emit_16(1630);
+emit_16(1696);
+emit_16(1629);
+emit_16(1696);
+emit_16(1630);
+emit_16(1697);
+emit_16(1631);
+emit_16(1697);
+emit_16(1630);
+emit_16(1697);
+emit_16(1631);
+emit_16(1698);
+emit_16(1632);
+emit_16(1698);
+emit_16(1631);
+emit_16(1698);
+emit_16(1632);
+emit_16(1699);
+emit_16(1633);
+emit_16(1699);
+emit_16(1632);
+emit_16(1699);
+emit_16(1633);
+emit_16(1700);
+emit_16(1634);
+emit_16(1700);
+emit_16(1633);
+emit_16(1700);
+emit_16(1634);
+emit_16(1701);
+emit_16(1635);
+emit_16(1701);
+emit_16(1634);
+emit_16(1701);
+emit_16(1635);
+emit_16(1702);
+emit_16(1636);
+emit_16(1702);
+emit_16(1635);
+emit_16(1702);
+emit_16(1636);
+emit_16(1703);
+emit_16(1637);
+emit_16(1703);
+emit_16(1636);
+emit_16(1703);
+emit_16(1637);
+emit_16(1704);
+emit_16(1638);
+emit_16(1704);
+emit_16(1637);
+emit_16(1704);
+emit_16(1638);
+emit_16(1705);
+emit_16(1639);
+emit_16(1705);
+emit_16(1638);
+emit_16(1705);
+emit_16(1639);
+emit_16(1706);
+emit_16(1640);
+emit_16(1706);
+emit_16(1639);
+emit_16(1706);
+emit_16(1640);
+emit_16(1707);
+emit_16(1641);
+emit_16(1707);
+emit_16(1640);
+emit_16(1707);
+emit_16(1641);
+emit_16(1708);
+emit_16(1642);
+emit_16(1708);
+emit_16(1641);
+emit_16(1708);
+emit_16(1642);
+emit_16(1709);
+emit_16(1643);
+emit_16(1709);
+emit_16(1642);
+emit_16(1709);
+emit_16(1643);
+emit_16(1710);
+emit_16(1644);
+emit_16(1710);
+emit_16(1643);
+emit_16(1710);
+emit_16(1644);
+emit_16(1711);
+emit_16(1645);
+emit_16(1711);
+emit_16(1644);
+emit_16(1711);
+emit_16(1645);
+emit_16(1712);
+emit_16(1646);
+emit_16(1712);
+emit_16(1645);
+emit_16(1712);
+emit_16(1646);
+emit_16(1713);
+emit_16(1647);
+emit_16(1713);
+emit_16(1646);
+emit_16(1713);
+emit_16(1647);
+emit_16(1714);
+emit_16(1648);
+emit_16(1714);
+emit_16(1647);
+emit_16(1714);
+emit_16(1648);
+emit_16(1715);
+emit_16(1649);
+emit_16(1715);
+emit_16(1648);
+emit_16(1716);
+emit_16(1650);
+emit_16(1717);
+emit_16(1651);
+emit_16(1717);
+emit_16(1650);
+emit_16(1717);
+emit_16(1651);
+emit_16(1718);
+emit_16(1652);
+emit_16(1718);
+emit_16(1651);
+emit_16(1718);
+emit_16(1652);
+emit_16(1719);
+emit_16(1653);
+emit_16(1719);
+emit_16(1652);
+emit_16(1719);
+emit_16(1653);
+emit_16(1720);
+emit_16(1654);
+emit_16(1720);
+emit_16(1653);
+emit_16(1720);
+emit_16(1654);
+emit_16(1721);
+emit_16(1655);
+emit_16(1721);
+emit_16(1654);
+emit_16(1721);
+emit_16(1655);
+emit_16(1722);
+emit_16(1656);
+emit_16(1722);
+emit_16(1655);
+emit_16(1722);
+emit_16(1656);
+emit_16(1723);
+emit_16(1657);
+emit_16(1723);
+emit_16(1656);
+emit_16(1723);
+emit_16(1657);
+emit_16(1724);
+emit_16(1658);
+emit_16(1724);
+emit_16(1657);
+emit_16(1724);
+emit_16(1658);
+emit_16(1725);
+emit_16(1659);
+emit_16(1725);
+emit_16(1658);
+emit_16(1725);
+emit_16(1659);
+emit_16(1726);
+emit_16(1660);
+emit_16(1726);
+emit_16(1659);
+emit_16(1726);
+emit_16(1660);
+emit_16(1727);
+emit_16(1661);
+emit_16(1727);
+emit_16(1660);
+emit_16(1727);
+emit_16(1661);
+emit_16(1728);
+emit_16(1662);
+emit_16(1728);
+emit_16(1661);
+emit_16(1728);
+emit_16(1662);
+emit_16(1729);
+emit_16(1663);
+emit_16(1729);
+emit_16(1662);
+emit_16(1729);
+emit_16(1663);
+emit_16(1730);
+emit_16(1664);
+emit_16(1730);
+emit_16(1663);
+emit_16(1730);
+emit_16(1664);
+emit_16(1731);
+emit_16(1665);
+emit_16(1731);
+emit_16(1664);
+emit_16(1731);
+emit_16(1665);
+emit_16(1732);
+emit_16(1666);
+emit_16(1732);
+emit_16(1665);
+emit_16(1732);
+emit_16(1666);
+emit_16(1733);
+emit_16(1667);
+emit_16(1733);
+emit_16(1666);
+emit_16(1733);
+emit_16(1667);
+emit_16(1734);
+emit_16(1668);
+emit_16(1734);
+emit_16(1667);
+emit_16(1734);
+emit_16(1668);
+emit_16(1735);
+emit_16(1669);
+emit_16(1735);
+emit_16(1668);
+emit_16(1735);
+emit_16(1669);
+emit_16(1736);
+emit_16(1670);
+emit_16(1736);
+emit_16(1669);
+emit_16(1736);
+emit_16(1670);
+emit_16(1737);
+emit_16(1671);
+emit_16(1737);
+emit_16(1670);
+emit_16(1737);
+emit_16(1671);
+emit_16(1738);
+emit_16(1672);
+emit_16(1738);
+emit_16(1671);
+emit_16(1738);
+emit_16(1672);
+emit_16(1739);
+emit_16(1673);
+emit_16(1739);
+emit_16(1672);
+emit_16(1739);
+emit_16(1673);
+emit_16(1740);
+emit_16(1674);
+emit_16(1740);
+emit_16(1673);
+emit_16(1740);
+emit_16(1674);
+emit_16(1741);
+emit_16(1675);
+emit_16(1741);
+emit_16(1674);
+emit_16(1741);
+emit_16(1675);
+emit_16(1742);
+emit_16(1676);
+emit_16(1742);
+emit_16(1675);
+emit_16(1742);
+emit_16(1676);
+emit_16(1743);
+emit_16(1677);
+emit_16(1743);
+emit_16(1676);
+emit_16(1743);
+emit_16(1677);
+emit_16(1744);
+emit_16(1678);
+emit_16(1744);
+emit_16(1677);
+emit_16(1744);
+emit_16(1678);
+emit_16(1745);
+emit_16(1679);
+emit_16(1745);
+emit_16(1678);
+emit_16(1745);
+emit_16(1679);
+emit_16(1746);
+emit_16(1680);
+emit_16(1746);
+emit_16(1679);
+emit_16(1746);
+emit_16(1680);
+emit_16(1747);
+emit_16(1681);
+emit_16(1747);
+emit_16(1680);
+emit_16(1747);
+emit_16(1681);
+emit_16(1748);
+emit_16(1682);
+emit_16(1748);
+emit_16(1681);
+emit_16(1748);
+emit_16(1682);
+emit_16(1749);
+emit_16(1683);
+emit_16(1749);
+emit_16(1682);
+emit_16(1749);
+emit_16(1683);
+emit_16(1750);
+emit_16(1684);
+emit_16(1750);
+emit_16(1683);
+emit_16(1750);
+emit_16(1684);
+emit_16(1751);
+emit_16(1685);
+emit_16(1751);
+emit_16(1684);
+emit_16(1751);
+emit_16(1685);
+emit_16(1752);
+emit_16(1686);
+emit_16(1752);
+emit_16(1685);
+emit_16(1752);
+emit_16(1686);
+emit_16(1753);
+emit_16(1687);
+emit_16(1753);
+emit_16(1686);
+emit_16(1753);
+emit_16(1687);
+emit_16(1754);
+emit_16(1688);
+emit_16(1754);
+emit_16(1687);
+emit_16(1754);
+emit_16(1688);
+emit_16(1755);
+emit_16(1689);
+emit_16(1755);
+emit_16(1688);
+emit_16(1755);
+emit_16(1689);
+emit_16(1756);
+emit_16(1690);
+emit_16(1756);
+emit_16(1689);
+emit_16(1756);
+emit_16(1690);
+emit_16(1757);
+emit_16(1691);
+emit_16(1757);
+emit_16(1690);
+emit_16(1757);
+emit_16(1691);
+emit_16(1758);
+emit_16(1692);
+emit_16(1758);
+emit_16(1691);
+emit_16(1758);
+emit_16(1692);
+emit_16(1759);
+emit_16(1693);
+emit_16(1759);
+emit_16(1692);
+emit_16(1759);
+emit_16(1693);
+emit_16(1760);
+emit_16(1694);
+emit_16(1760);
+emit_16(1693);
+emit_16(1760);
+emit_16(1694);
+emit_16(1761);
+emit_16(1695);
+emit_16(1761);
+emit_16(1694);
+emit_16(1761);
+emit_16(1695);
+emit_16(1762);
+emit_16(1696);
+emit_16(1762);
+emit_16(1695);
+emit_16(1762);
+emit_16(1696);
+emit_16(1763);
+emit_16(1697);
+emit_16(1763);
+emit_16(1696);
+emit_16(1763);
+emit_16(1697);
+emit_16(1764);
+emit_16(1698);
+emit_16(1764);
+emit_16(1697);
+emit_16(1764);
+emit_16(1698);
+emit_16(1765);
+emit_16(1699);
+emit_16(1765);
+emit_16(1698);
+emit_16(1765);
+emit_16(1699);
+emit_16(1766);
+emit_16(1700);
+emit_16(1766);
+emit_16(1699);
+emit_16(1766);
+emit_16(1700);
+emit_16(1767);
+emit_16(1701);
+emit_16(1767);
+emit_16(1700);
+emit_16(1767);
+emit_16(1701);
+emit_16(1768);
+emit_16(1702);
+emit_16(1768);
+emit_16(1701);
+emit_16(1768);
+emit_16(1702);
+emit_16(1769);
+emit_16(1703);
+emit_16(1769);
+emit_16(1702);
+emit_16(1769);
+emit_16(1703);
+emit_16(1770);
+emit_16(1704);
+emit_16(1770);
+emit_16(1703);
+emit_16(1770);
+emit_16(1704);
+emit_16(1771);
+emit_16(1705);
+emit_16(1771);
+emit_16(1704);
+emit_16(1771);
+emit_16(1705);
+emit_16(1772);
+emit_16(1706);
+emit_16(1772);
+emit_16(1705);
+emit_16(1772);
+emit_16(1706);
+emit_16(1773);
+emit_16(1707);
+emit_16(1773);
+emit_16(1706);
+emit_16(1773);
+emit_16(1707);
+emit_16(1774);
+emit_16(1708);
+emit_16(1774);
+emit_16(1707);
+emit_16(1774);
+emit_16(1708);
+emit_16(1775);
+emit_16(1709);
+emit_16(1775);
+emit_16(1708);
+emit_16(1775);
+emit_16(1709);
+emit_16(1776);
+emit_16(1710);
+emit_16(1776);
+emit_16(1709);
+emit_16(1776);
+emit_16(1710);
+emit_16(1777);
+emit_16(1711);
+emit_16(1777);
+emit_16(1710);
+emit_16(1777);
+emit_16(1711);
+emit_16(1778);
+emit_16(1712);
+emit_16(1778);
+emit_16(1711);
+emit_16(1778);
+emit_16(1712);
+emit_16(1779);
+emit_16(1713);
+emit_16(1779);
+emit_16(1712);
+emit_16(1779);
+emit_16(1713);
+emit_16(1780);
+emit_16(1714);
+emit_16(1780);
+emit_16(1713);
+emit_16(1780);
+emit_16(1714);
+emit_16(1781);
+emit_16(1715);
+emit_16(1781);
+emit_16(1714);
+emit_16(1782);
+emit_16(1716);
+emit_16(1783);
+emit_16(1717);
+emit_16(1783);
+emit_16(1716);
+emit_16(1783);
+emit_16(1717);
+emit_16(1784);
+emit_16(1718);
+emit_16(1784);
+emit_16(1717);
+emit_16(1784);
+emit_16(1718);
+emit_16(1785);
+emit_16(1719);
+emit_16(1785);
+emit_16(1718);
+emit_16(1785);
+emit_16(1719);
+emit_16(1786);
+emit_16(1720);
+emit_16(1786);
+emit_16(1719);
+emit_16(1786);
+emit_16(1720);
+emit_16(1787);
+emit_16(1721);
+emit_16(1787);
+emit_16(1720);
+emit_16(1787);
+emit_16(1721);
+emit_16(1788);
+emit_16(1722);
+emit_16(1788);
+emit_16(1721);
+emit_16(1788);
+emit_16(1722);
+emit_16(1789);
+emit_16(1723);
+emit_16(1789);
+emit_16(1722);
+emit_16(1789);
+emit_16(1723);
+emit_16(1790);
+emit_16(1724);
+emit_16(1790);
+emit_16(1723);
+emit_16(1790);
+emit_16(1724);
+emit_16(1791);
+emit_16(1725);
+emit_16(1791);
+emit_16(1724);
+emit_16(1791);
+emit_16(1725);
+emit_16(1792);
+emit_16(1726);
+emit_16(1792);
+emit_16(1725);
+emit_16(1792);
+emit_16(1726);
+emit_16(1793);
+emit_16(1727);
+emit_16(1793);
+emit_16(1726);
+emit_16(1793);
+emit_16(1727);
+emit_16(1794);
+emit_16(1728);
+emit_16(1794);
+emit_16(1727);
+emit_16(1794);
+emit_16(1728);
+emit_16(1795);
+emit_16(1729);
+emit_16(1795);
+emit_16(1728);
+emit_16(1795);
+emit_16(1729);
+emit_16(1796);
+emit_16(1730);
+emit_16(1796);
+emit_16(1729);
+emit_16(1796);
+emit_16(1730);
+emit_16(1797);
+emit_16(1731);
+emit_16(1797);
+emit_16(1730);
+emit_16(1797);
+emit_16(1731);
+emit_16(1798);
+emit_16(1732);
+emit_16(1798);
+emit_16(1731);
+emit_16(1798);
+emit_16(1732);
+emit_16(1799);
+emit_16(1733);
+emit_16(1799);
+emit_16(1732);
+emit_16(1799);
+emit_16(1733);
+emit_16(1800);
+emit_16(1734);
+emit_16(1800);
+emit_16(1733);
+emit_16(1800);
+emit_16(1734);
+emit_16(1801);
+emit_16(1735);
+emit_16(1801);
+emit_16(1734);
+emit_16(1801);
+emit_16(1735);
+emit_16(1802);
+emit_16(1736);
+emit_16(1802);
+emit_16(1735);
+emit_16(1802);
+emit_16(1736);
+emit_16(1803);
+emit_16(1737);
+emit_16(1803);
+emit_16(1736);
+emit_16(1803);
+emit_16(1737);
+emit_16(1804);
+emit_16(1738);
+emit_16(1804);
+emit_16(1737);
+emit_16(1804);
+emit_16(1738);
+emit_16(1805);
+emit_16(1739);
+emit_16(1805);
+emit_16(1738);
+emit_16(1805);
+emit_16(1739);
+emit_16(1806);
+emit_16(1740);
+emit_16(1806);
+emit_16(1739);
+emit_16(1806);
+emit_16(1740);
+emit_16(1807);
+emit_16(1741);
+emit_16(1807);
+emit_16(1740);
+emit_16(1807);
+emit_16(1741);
+emit_16(1808);
+emit_16(1742);
+emit_16(1808);
+emit_16(1741);
+emit_16(1808);
+emit_16(1742);
+emit_16(1809);
+emit_16(1743);
+emit_16(1809);
+emit_16(1742);
+emit_16(1809);
+emit_16(1743);
+emit_16(1810);
+emit_16(1744);
+emit_16(1810);
+emit_16(1743);
+emit_16(1810);
+emit_16(1744);
+emit_16(1811);
+emit_16(1745);
+emit_16(1811);
+emit_16(1744);
+emit_16(1811);
+emit_16(1745);
+emit_16(1812);
+emit_16(1746);
+emit_16(1812);
+emit_16(1745);
+emit_16(1812);
+emit_16(1746);
+emit_16(1813);
+emit_16(1747);
+emit_16(1813);
+emit_16(1746);
+emit_16(1813);
+emit_16(1747);
+emit_16(1814);
+emit_16(1748);
+emit_16(1814);
+emit_16(1747);
+emit_16(1814);
+emit_16(1748);
+emit_16(1815);
+emit_16(1749);
+emit_16(1815);
+emit_16(1748);
+emit_16(1815);
+emit_16(1749);
+emit_16(1816);
+emit_16(1750);
+emit_16(1816);
+emit_16(1749);
+emit_16(1816);
+emit_16(1750);
+emit_16(1817);
+emit_16(1751);
+emit_16(1817);
+emit_16(1750);
+emit_16(1817);
+emit_16(1751);
+emit_16(1818);
+emit_16(1752);
+emit_16(1818);
+emit_16(1751);
+emit_16(1818);
+emit_16(1752);
+emit_16(1819);
+emit_16(1753);
+emit_16(1819);
+emit_16(1752);
+emit_16(1819);
+emit_16(1753);
+emit_16(1820);
+emit_16(1754);
+emit_16(1820);
+emit_16(1753);
+emit_16(1820);
+emit_16(1754);
+emit_16(1821);
+emit_16(1755);
+emit_16(1821);
+emit_16(1754);
+emit_16(1821);
+emit_16(1755);
+emit_16(1822);
+emit_16(1756);
+emit_16(1822);
+emit_16(1755);
+emit_16(1822);
+emit_16(1756);
+emit_16(1823);
+emit_16(1757);
+emit_16(1823);
+emit_16(1756);
+emit_16(1823);
+emit_16(1757);
+emit_16(1824);
+emit_16(1758);
+emit_16(1824);
+emit_16(1757);
+emit_16(1824);
+emit_16(1758);
+emit_16(1825);
+emit_16(1759);
+emit_16(1825);
+emit_16(1758);
+emit_16(1825);
+emit_16(1759);
+emit_16(1826);
+emit_16(1760);
+emit_16(1826);
+emit_16(1759);
+emit_16(1826);
+emit_16(1760);
+emit_16(1827);
+emit_16(1761);
+emit_16(1827);
+emit_16(1760);
+emit_16(1827);
+emit_16(1761);
+emit_16(1828);
+emit_16(1762);
+emit_16(1828);
+emit_16(1761);
+emit_16(1828);
+emit_16(1762);
+emit_16(1829);
+emit_16(1763);
+emit_16(1829);
+emit_16(1762);
+emit_16(1829);
+emit_16(1763);
+emit_16(1830);
+emit_16(1764);
+emit_16(1830);
+emit_16(1763);
+emit_16(1830);
+emit_16(1764);
+emit_16(1831);
+emit_16(1765);
+emit_16(1831);
+emit_16(1764);
+emit_16(1831);
+emit_16(1765);
+emit_16(1832);
+emit_16(1766);
+emit_16(1832);
+emit_16(1765);
+emit_16(1832);
+emit_16(1766);
+emit_16(1833);
+emit_16(1767);
+emit_16(1833);
+emit_16(1766);
+emit_16(1833);
+emit_16(1767);
+emit_16(1834);
+emit_16(1768);
+emit_16(1834);
+emit_16(1767);
+emit_16(1834);
+emit_16(1768);
+emit_16(1835);
+emit_16(1769);
+emit_16(1835);
+emit_16(1768);
+emit_16(1835);
+emit_16(1769);
+emit_16(1836);
+emit_16(1770);
+emit_16(1836);
+emit_16(1769);
+emit_16(1836);
+emit_16(1770);
+emit_16(1837);
+emit_16(1771);
+emit_16(1837);
+emit_16(1770);
+emit_16(1837);
+emit_16(1771);
+emit_16(1838);
+emit_16(1772);
+emit_16(1838);
+emit_16(1771);
+emit_16(1838);
+emit_16(1772);
+emit_16(1839);
+emit_16(1773);
+emit_16(1839);
+emit_16(1772);
+emit_16(1839);
+emit_16(1773);
+emit_16(1840);
+emit_16(1774);
+emit_16(1840);
+emit_16(1773);
+emit_16(1840);
+emit_16(1774);
+emit_16(1841);
+emit_16(1775);
+emit_16(1841);
+emit_16(1774);
+emit_16(1841);
+emit_16(1775);
+emit_16(1842);
+emit_16(1776);
+emit_16(1842);
+emit_16(1775);
+emit_16(1842);
+emit_16(1776);
+emit_16(1843);
+emit_16(1777);
+emit_16(1843);
+emit_16(1776);
+emit_16(1843);
+emit_16(1777);
+emit_16(1844);
+emit_16(1778);
+emit_16(1844);
+emit_16(1777);
+emit_16(1844);
+emit_16(1778);
+emit_16(1845);
+emit_16(1779);
+emit_16(1845);
+emit_16(1778);
+emit_16(1845);
+emit_16(1779);
+emit_16(1846);
+emit_16(1780);
+emit_16(1846);
+emit_16(1779);
+emit_16(1846);
+emit_16(1780);
+emit_16(1847);
+emit_16(1781);
+emit_16(1847);
+emit_16(1780);
+emit_16(1848);
+emit_16(1782);
+emit_16(1849);
+emit_16(1783);
+emit_16(1849);
+emit_16(1782);
+emit_16(1849);
+emit_16(1783);
+emit_16(1850);
+emit_16(1784);
+emit_16(1850);
+emit_16(1783);
+emit_16(1850);
+emit_16(1784);
+emit_16(1851);
+emit_16(1785);
+emit_16(1851);
+emit_16(1784);
+emit_16(1851);
+emit_16(1785);
+emit_16(1852);
+emit_16(1786);
+emit_16(1852);
+emit_16(1785);
+emit_16(1852);
+emit_16(1786);
+emit_16(1853);
+emit_16(1787);
+emit_16(1853);
+emit_16(1786);
+emit_16(1853);
+emit_16(1787);
+emit_16(1854);
+emit_16(1788);
+emit_16(1854);
+emit_16(1787);
+emit_16(1854);
+emit_16(1788);
+emit_16(1855);
+emit_16(1789);
+emit_16(1855);
+emit_16(1788);
+emit_16(1855);
+emit_16(1789);
+emit_16(1856);
+emit_16(1790);
+emit_16(1856);
+emit_16(1789);
+emit_16(1856);
+emit_16(1790);
+emit_16(1857);
+emit_16(1791);
+emit_16(1857);
+emit_16(1790);
+emit_16(1857);
+emit_16(1791);
+emit_16(1858);
+emit_16(1792);
+emit_16(1858);
+emit_16(1791);
+emit_16(1858);
+emit_16(1792);
+emit_16(1859);
+emit_16(1793);
+emit_16(1859);
+emit_16(1792);
+emit_16(1859);
+emit_16(1793);
+emit_16(1860);
+emit_16(1794);
+emit_16(1860);
+emit_16(1793);
+emit_16(1860);
+emit_16(1794);
+emit_16(1861);
+emit_16(1795);
+emit_16(1861);
+emit_16(1794);
+emit_16(1861);
+emit_16(1795);
+emit_16(1862);
+emit_16(1796);
+emit_16(1862);
+emit_16(1795);
+emit_16(1862);
+emit_16(1796);
+emit_16(1863);
+emit_16(1797);
+emit_16(1863);
+emit_16(1796);
+emit_16(1863);
+emit_16(1797);
+emit_16(1864);
+emit_16(1798);
+emit_16(1864);
+emit_16(1797);
+emit_16(1864);
+emit_16(1798);
+emit_16(1865);
+emit_16(1799);
+emit_16(1865);
+emit_16(1798);
+emit_16(1865);
+emit_16(1799);
+emit_16(1866);
+emit_16(1800);
+emit_16(1866);
+emit_16(1799);
+emit_16(1866);
+emit_16(1800);
+emit_16(1867);
+emit_16(1801);
+emit_16(1867);
+emit_16(1800);
+emit_16(1867);
+emit_16(1801);
+emit_16(1868);
+emit_16(1802);
+emit_16(1868);
+emit_16(1801);
+emit_16(1868);
+emit_16(1802);
+emit_16(1869);
+emit_16(1803);
+emit_16(1869);
+emit_16(1802);
+emit_16(1869);
+emit_16(1803);
+emit_16(1870);
+emit_16(1804);
+emit_16(1870);
+emit_16(1803);
+emit_16(1870);
+emit_16(1804);
+emit_16(1871);
+emit_16(1805);
+emit_16(1871);
+emit_16(1804);
+emit_16(1871);
+emit_16(1805);
+emit_16(1872);
+emit_16(1806);
+emit_16(1872);
+emit_16(1805);
+emit_16(1872);
+emit_16(1806);
+emit_16(1873);
+emit_16(1807);
+emit_16(1873);
+emit_16(1806);
+emit_16(1873);
+emit_16(1807);
+emit_16(1874);
+emit_16(1808);
+emit_16(1874);
+emit_16(1807);
+emit_16(1874);
+emit_16(1808);
+emit_16(1875);
+emit_16(1809);
+emit_16(1875);
+emit_16(1808);
+emit_16(1875);
+emit_16(1809);
+emit_16(1876);
+emit_16(1810);
+emit_16(1876);
+emit_16(1809);
+emit_16(1876);
+emit_16(1810);
+emit_16(1877);
+emit_16(1811);
+emit_16(1877);
+emit_16(1810);
+emit_16(1877);
+emit_16(1811);
+emit_16(1878);
+emit_16(1812);
+emit_16(1878);
+emit_16(1811);
+emit_16(1878);
+emit_16(1812);
+emit_16(1879);
+emit_16(1813);
+emit_16(1879);
+emit_16(1812);
+emit_16(1879);
+emit_16(1813);
+emit_16(1880);
+emit_16(1814);
+emit_16(1880);
+emit_16(1813);
+emit_16(1880);
+emit_16(1814);
+emit_16(1881);
+emit_16(1815);
+emit_16(1881);
+emit_16(1814);
+emit_16(1881);
+emit_16(1815);
+emit_16(1882);
+emit_16(1816);
+emit_16(1882);
+emit_16(1815);
+emit_16(1882);
+emit_16(1816);
+emit_16(1883);
+emit_16(1817);
+emit_16(1883);
+emit_16(1816);
+emit_16(1883);
+emit_16(1817);
+emit_16(1884);
+emit_16(1818);
+emit_16(1884);
+emit_16(1817);
+emit_16(1884);
+emit_16(1818);
+emit_16(1885);
+emit_16(1819);
+emit_16(1885);
+emit_16(1818);
+emit_16(1885);
+emit_16(1819);
+emit_16(1886);
+emit_16(1820);
+emit_16(1886);
+emit_16(1819);
+emit_16(1886);
+emit_16(1820);
+emit_16(1887);
+emit_16(1821);
+emit_16(1887);
+emit_16(1820);
+emit_16(1887);
+emit_16(1821);
+emit_16(1888);
+emit_16(1822);
+emit_16(1888);
+emit_16(1821);
+emit_16(1888);
+emit_16(1822);
+emit_16(1889);
+emit_16(1823);
+emit_16(1889);
+emit_16(1822);
+emit_16(1889);
+emit_16(1823);
+emit_16(1890);
+emit_16(1824);
+emit_16(1890);
+emit_16(1823);
+emit_16(1890);
+emit_16(1824);
+emit_16(1891);
+emit_16(1825);
+emit_16(1891);
+emit_16(1824);
+emit_16(1891);
+emit_16(1825);
+emit_16(1892);
+emit_16(1826);
+emit_16(1892);
+emit_16(1825);
+emit_16(1892);
+emit_16(1826);
+emit_16(1893);
+emit_16(1827);
+emit_16(1893);
+emit_16(1826);
+emit_16(1893);
+emit_16(1827);
+emit_16(1894);
+emit_16(1828);
+emit_16(1894);
+emit_16(1827);
+emit_16(1894);
+emit_16(1828);
+emit_16(1895);
+emit_16(1829);
+emit_16(1895);
+emit_16(1828);
+emit_16(1895);
+emit_16(1829);
+emit_16(1896);
+emit_16(1830);
+emit_16(1896);
+emit_16(1829);
+emit_16(1896);
+emit_16(1830);
+emit_16(1897);
+emit_16(1831);
+emit_16(1897);
+emit_16(1830);
+emit_16(1897);
+emit_16(1831);
+emit_16(1898);
+emit_16(1832);
+emit_16(1898);
+emit_16(1831);
+emit_16(1898);
+emit_16(1832);
+emit_16(1899);
+emit_16(1833);
+emit_16(1899);
+emit_16(1832);
+emit_16(1899);
+emit_16(1833);
+emit_16(1900);
+emit_16(1834);
+emit_16(1900);
+emit_16(1833);
+emit_16(1900);
+emit_16(1834);
+emit_16(1901);
+emit_16(1835);
+emit_16(1901);
+emit_16(1834);
+emit_16(1901);
+emit_16(1835);
+emit_16(1902);
+emit_16(1836);
+emit_16(1902);
+emit_16(1835);
+emit_16(1902);
+emit_16(1836);
+emit_16(1903);
+emit_16(1837);
+emit_16(1903);
+emit_16(1836);
+emit_16(1903);
+emit_16(1837);
+emit_16(1904);
+emit_16(1838);
+emit_16(1904);
+emit_16(1837);
+emit_16(1904);
+emit_16(1838);
+emit_16(1905);
+emit_16(1839);
+emit_16(1905);
+emit_16(1838);
+emit_16(1905);
+emit_16(1839);
+emit_16(1906);
+emit_16(1840);
+emit_16(1906);
+emit_16(1839);
+emit_16(1906);
+emit_16(1840);
+emit_16(1907);
+emit_16(1841);
+emit_16(1907);
+emit_16(1840);
+emit_16(1907);
+emit_16(1841);
+emit_16(1908);
+emit_16(1842);
+emit_16(1908);
+emit_16(1841);
+emit_16(1908);
+emit_16(1842);
+emit_16(1909);
+emit_16(1843);
+emit_16(1909);
+emit_16(1842);
+emit_16(1909);
+emit_16(1843);
+emit_16(1910);
+emit_16(1844);
+emit_16(1910);
+emit_16(1843);
+emit_16(1910);
+emit_16(1844);
+emit_16(1911);
+emit_16(1845);
+emit_16(1911);
+emit_16(1844);
+emit_16(1911);
+emit_16(1845);
+emit_16(1912);
+emit_16(1846);
+emit_16(1912);
+emit_16(1845);
+emit_16(1912);
+emit_16(1846);
+emit_16(1913);
+emit_16(1847);
+emit_16(1913);
+emit_16(1846);
+emit_16(1914);
+emit_16(1848);
+emit_16(1915);
+emit_16(1849);
+emit_16(1915);
+emit_16(1848);
+emit_16(1915);
+emit_16(1849);
+emit_16(1916);
+emit_16(1850);
+emit_16(1916);
+emit_16(1849);
+emit_16(1916);
+emit_16(1850);
+emit_16(1917);
+emit_16(1851);
+emit_16(1917);
+emit_16(1850);
+emit_16(1917);
+emit_16(1851);
+emit_16(1918);
+emit_16(1852);
+emit_16(1918);
+emit_16(1851);
+emit_16(1918);
+emit_16(1852);
+emit_16(1919);
+emit_16(1853);
+emit_16(1919);
+emit_16(1852);
+emit_16(1919);
+emit_16(1853);
+emit_16(1920);
+emit_16(1854);
+emit_16(1920);
+emit_16(1853);
+emit_16(1920);
+emit_16(1854);
+emit_16(1921);
+emit_16(1855);
+emit_16(1921);
+emit_16(1854);
+emit_16(1921);
+emit_16(1855);
+emit_16(1922);
+emit_16(1856);
+emit_16(1922);
+emit_16(1855);
+emit_16(1922);
+emit_16(1856);
+emit_16(1923);
+emit_16(1857);
+emit_16(1923);
+emit_16(1856);
+emit_16(1923);
+emit_16(1857);
+emit_16(1924);
+emit_16(1858);
+emit_16(1924);
+emit_16(1857);
+emit_16(1924);
+emit_16(1858);
+emit_16(1925);
+emit_16(1859);
+emit_16(1925);
+emit_16(1858);
+emit_16(1925);
+emit_16(1859);
+emit_16(1926);
+emit_16(1860);
+emit_16(1926);
+emit_16(1859);
+emit_16(1926);
+emit_16(1860);
+emit_16(1927);
+emit_16(1861);
+emit_16(1927);
+emit_16(1860);
+emit_16(1927);
+emit_16(1861);
+emit_16(1928);
+emit_16(1862);
+emit_16(1928);
+emit_16(1861);
+emit_16(1928);
+emit_16(1862);
+emit_16(1929);
+emit_16(1863);
+emit_16(1929);
+emit_16(1862);
+emit_16(1929);
+emit_16(1863);
+emit_16(1930);
+emit_16(1864);
+emit_16(1930);
+emit_16(1863);
+emit_16(1930);
+emit_16(1864);
+emit_16(1931);
+emit_16(1865);
+emit_16(1931);
+emit_16(1864);
+emit_16(1931);
+emit_16(1865);
+emit_16(1932);
+emit_16(1866);
+emit_16(1932);
+emit_16(1865);
+emit_16(1932);
+emit_16(1866);
+emit_16(1933);
+emit_16(1867);
+emit_16(1933);
+emit_16(1866);
+emit_16(1933);
+emit_16(1867);
+emit_16(1934);
+emit_16(1868);
+emit_16(1934);
+emit_16(1867);
+emit_16(1934);
+emit_16(1868);
+emit_16(1935);
+emit_16(1869);
+emit_16(1935);
+emit_16(1868);
+emit_16(1935);
+emit_16(1869);
+emit_16(1936);
+emit_16(1870);
+emit_16(1936);
+emit_16(1869);
+emit_16(1936);
+emit_16(1870);
+emit_16(1937);
+emit_16(1871);
+emit_16(1937);
+emit_16(1870);
+emit_16(1937);
+emit_16(1871);
+emit_16(1938);
+emit_16(1872);
+emit_16(1938);
+emit_16(1871);
+emit_16(1938);
+emit_16(1872);
+emit_16(1939);
+emit_16(1873);
+emit_16(1939);
+emit_16(1872);
+emit_16(1939);
+emit_16(1873);
+emit_16(1940);
+emit_16(1874);
+emit_16(1940);
+emit_16(1873);
+emit_16(1940);
+emit_16(1874);
+emit_16(1941);
+emit_16(1875);
+emit_16(1941);
+emit_16(1874);
+emit_16(1941);
+emit_16(1875);
+emit_16(1942);
+emit_16(1876);
+emit_16(1942);
+emit_16(1875);
+emit_16(1942);
+emit_16(1876);
+emit_16(1943);
+emit_16(1877);
+emit_16(1943);
+emit_16(1876);
+emit_16(1943);
+emit_16(1877);
+emit_16(1944);
+emit_16(1878);
+emit_16(1944);
+emit_16(1877);
+emit_16(1944);
+emit_16(1878);
+emit_16(1945);
+emit_16(1879);
+emit_16(1945);
+emit_16(1878);
+emit_16(1945);
+emit_16(1879);
+emit_16(1946);
+emit_16(1880);
+emit_16(1946);
+emit_16(1879);
+emit_16(1946);
+emit_16(1880);
+emit_16(1947);
+emit_16(1881);
+emit_16(1947);
+emit_16(1880);
+emit_16(1947);
+emit_16(1881);
+emit_16(1948);
+emit_16(1882);
+emit_16(1948);
+emit_16(1881);
+emit_16(1948);
+emit_16(1882);
+emit_16(1949);
+emit_16(1883);
+emit_16(1949);
+emit_16(1882);
+emit_16(1949);
+emit_16(1883);
+emit_16(1950);
+emit_16(1884);
+emit_16(1950);
+emit_16(1883);
+emit_16(1950);
+emit_16(1884);
+emit_16(1951);
+emit_16(1885);
+emit_16(1951);
+emit_16(1884);
+emit_16(1951);
+emit_16(1885);
+emit_16(1952);
+emit_16(1886);
+emit_16(1952);
+emit_16(1885);
+emit_16(1952);
+emit_16(1886);
+emit_16(1953);
+emit_16(1887);
+emit_16(1953);
+emit_16(1886);
+emit_16(1953);
+emit_16(1887);
+emit_16(1954);
+emit_16(1888);
+emit_16(1954);
+emit_16(1887);
+emit_16(1954);
+emit_16(1888);
+emit_16(1955);
+emit_16(1889);
+emit_16(1955);
+emit_16(1888);
+emit_16(1955);
+emit_16(1889);
+emit_16(1956);
+emit_16(1890);
+emit_16(1956);
+emit_16(1889);
+emit_16(1956);
+emit_16(1890);
+emit_16(1957);
+emit_16(1891);
+emit_16(1957);
+emit_16(1890);
+emit_16(1957);
+emit_16(1891);
+emit_16(1958);
+emit_16(1892);
+emit_16(1958);
+emit_16(1891);
+emit_16(1958);
+emit_16(1892);
+emit_16(1959);
+emit_16(1893);
+emit_16(1959);
+emit_16(1892);
+emit_16(1959);
+emit_16(1893);
+emit_16(1960);
+emit_16(1894);
+emit_16(1960);
+emit_16(1893);
+emit_16(1960);
+emit_16(1894);
+emit_16(1961);
+emit_16(1895);
+emit_16(1961);
+emit_16(1894);
+emit_16(1961);
+emit_16(1895);
+emit_16(1962);
+emit_16(1896);
+emit_16(1962);
+emit_16(1895);
+emit_16(1962);
+emit_16(1896);
+emit_16(1963);
+emit_16(1897);
+emit_16(1963);
+emit_16(1896);
+emit_16(1963);
+emit_16(1897);
+emit_16(1964);
+emit_16(1898);
+emit_16(1964);
+emit_16(1897);
+emit_16(1964);
+emit_16(1898);
+emit_16(1965);
+emit_16(1899);
+emit_16(1965);
+emit_16(1898);
+emit_16(1965);
+emit_16(1899);
+emit_16(1966);
+emit_16(1900);
+emit_16(1966);
+emit_16(1899);
+emit_16(1966);
+emit_16(1900);
+emit_16(1967);
+emit_16(1901);
+emit_16(1967);
+emit_16(1900);
+emit_16(1967);
+emit_16(1901);
+emit_16(1968);
+emit_16(1902);
+emit_16(1968);
+emit_16(1901);
+emit_16(1968);
+emit_16(1902);
+emit_16(1969);
+emit_16(1903);
+emit_16(1969);
+emit_16(1902);
+emit_16(1969);
+emit_16(1903);
+emit_16(1970);
+emit_16(1904);
+emit_16(1970);
+emit_16(1903);
+emit_16(1970);
+emit_16(1904);
+emit_16(1971);
+emit_16(1905);
+emit_16(1971);
+emit_16(1904);
+emit_16(1971);
+emit_16(1905);
+emit_16(1972);
+emit_16(1906);
+emit_16(1972);
+emit_16(1905);
+emit_16(1972);
+emit_16(1906);
+emit_16(1973);
+emit_16(1907);
+emit_16(1973);
+emit_16(1906);
+emit_16(1973);
+emit_16(1907);
+emit_16(1974);
+emit_16(1908);
+emit_16(1974);
+emit_16(1907);
+emit_16(1974);
+emit_16(1908);
+emit_16(1975);
+emit_16(1909);
+emit_16(1975);
+emit_16(1908);
+emit_16(1975);
+emit_16(1909);
+emit_16(1976);
+emit_16(1910);
+emit_16(1976);
+emit_16(1909);
+emit_16(1976);
+emit_16(1910);
+emit_16(1977);
+emit_16(1911);
+emit_16(1977);
+emit_16(1910);
+emit_16(1977);
+emit_16(1911);
+emit_16(1978);
+emit_16(1912);
+emit_16(1978);
+emit_16(1911);
+emit_16(1978);
+emit_16(1912);
+emit_16(1979);
+emit_16(1913);
+emit_16(1979);
+emit_16(1912);
+emit_start(Landscape03Idx)
+emit_16(0);
+emit_16(1);
+emit_16(2);
+emit_16(3);
+emit_16(2);
+emit_16(1);
+emit_16(2);
+emit_16(3);
+emit_16(4);
+emit_16(5);
+emit_16(4);
+emit_16(3);
+emit_16(4);
+emit_16(5);
+emit_16(6);
+emit_16(7);
+emit_16(6);
+emit_16(5);
+emit_16(6);
+emit_16(7);
+emit_16(8);
+emit_16(9);
+emit_16(8);
+emit_16(7);
+emit_16(8);
+emit_16(9);
+emit_16(10);
+emit_16(11);
+emit_16(10);
+emit_16(9);
+emit_16(10);
+emit_16(11);
+emit_16(12);
+emit_16(13);
+emit_16(12);
+emit_16(11);
+emit_16(12);
+emit_16(13);
+emit_16(14);
+emit_16(15);
+emit_16(14);
+emit_16(13);
+emit_16(14);
+emit_16(15);
+emit_16(16);
+emit_16(17);
+emit_16(16);
+emit_16(15);
+emit_16(16);
+emit_16(17);
+emit_16(18);
+emit_16(19);
+emit_16(18);
+emit_16(17);
+emit_16(18);
+emit_16(19);
+emit_16(20);
+emit_16(21);
+emit_16(20);
+emit_16(19);
+emit_16(20);
+emit_16(21);
+emit_16(22);
+emit_16(23);
+emit_16(22);
+emit_16(21);
+emit_16(22);
+emit_16(23);
+emit_16(24);
+emit_16(25);
+emit_16(24);
+emit_16(23);
+emit_16(24);
+emit_16(25);
+emit_16(26);
+emit_16(27);
+emit_16(26);
+emit_16(25);
+emit_16(26);
+emit_16(27);
+emit_16(28);
+emit_16(29);
+emit_16(28);
+emit_16(27);
+emit_16(28);
+emit_16(29);
+emit_16(30);
+emit_16(31);
+emit_16(30);
+emit_16(29);
+emit_16(30);
+emit_16(31);
+emit_16(32);
+emit_16(33);
+emit_16(32);
+emit_16(31);
+emit_16(32);
+emit_16(33);
+emit_16(34);
+emit_16(35);
+emit_16(34);
+emit_16(33);
+emit_16(34);
+emit_16(35);
+emit_16(36);
+emit_16(37);
+emit_16(36);
+emit_16(35);
+emit_16(36);
+emit_16(37);
+emit_16(38);
+emit_16(39);
+emit_16(38);
+emit_16(37);
+emit_16(38);
+emit_16(39);
+emit_16(40);
+emit_16(41);
+emit_16(40);
+emit_16(39);
+emit_16(40);
+emit_16(41);
+emit_16(42);
+emit_16(43);
+emit_16(42);
+emit_16(41);
+emit_16(42);
+emit_16(43);
+emit_16(44);
+emit_16(45);
+emit_16(44);
+emit_16(43);
+emit_16(44);
+emit_16(45);
+emit_16(46);
+emit_16(47);
+emit_16(46);
+emit_16(45);
+emit_16(46);
+emit_16(47);
+emit_16(48);
+emit_16(49);
+emit_16(48);
+emit_16(47);
+emit_16(48);
+emit_16(49);
+emit_16(50);
+emit_16(51);
+emit_16(50);
+emit_16(49);
+emit_16(50);
+emit_16(51);
+emit_16(52);
+emit_16(53);
+emit_16(52);
+emit_16(51);
+emit_16(52);
+emit_16(53);
+emit_16(54);
+emit_16(55);
+emit_16(54);
+emit_16(53);
+emit_16(54);
+emit_16(55);
+emit_16(56);
+emit_16(57);
+emit_16(56);
+emit_16(55);
+emit_16(56);
+emit_16(57);
+emit_16(58);
+emit_16(59);
+emit_16(58);
+emit_16(57);
+emit_16(58);
+emit_16(59);
+emit_16(60);
+emit_16(61);
+emit_16(60);
+emit_16(59);
+emit_16(60);
+emit_16(61);
+emit_16(62);
+emit_16(63);
+emit_16(62);
+emit_16(61);
+emit_16(62);
+emit_16(63);
+emit_16(64);
+emit_16(65);
+emit_16(64);
+emit_16(63);
+emit_16(64);
+emit_16(65);
+emit_16(66);
+emit_16(67);
+emit_16(66);
+emit_16(65);
+emit_16(66);
+emit_16(67);
+emit_16(68);
+emit_16(69);
+emit_16(68);
+emit_16(67);
+emit_16(68);
+emit_16(69);
+emit_16(70);
+emit_16(71);
+emit_16(70);
+emit_16(69);
+emit_16(70);
+emit_16(71);
+emit_16(72);
+emit_16(73);
+emit_16(72);
+emit_16(71);
+emit_16(72);
+emit_16(73);
+emit_16(74);
+emit_16(75);
+emit_16(74);
+emit_16(73);
+emit_16(74);
+emit_16(75);
+emit_16(76);
+emit_16(77);
+emit_16(76);
+emit_16(75);
+emit_16(76);
+emit_16(77);
+emit_16(78);
+emit_16(79);
+emit_16(78);
+emit_16(77);
+emit_16(78);
+emit_16(79);
+emit_16(80);
+emit_16(81);
+emit_16(80);
+emit_16(79);
+emit_16(80);
+emit_16(81);
+emit_16(82);
+emit_16(83);
+emit_16(82);
+emit_16(81);
+emit_16(82);
+emit_16(83);
+emit_16(84);
+emit_16(85);
+emit_16(84);
+emit_16(83);
+emit_16(84);
+emit_16(85);
+emit_16(86);
+emit_16(87);
+emit_16(86);
+emit_16(85);
+emit_16(86);
+emit_16(87);
+emit_16(88);
+emit_16(89);
+emit_16(88);
+emit_16(87);
+emit_16(88);
+emit_16(89);
+emit_16(90);
+emit_16(91);
+emit_16(90);
+emit_16(89);
+emit_16(90);
+emit_16(91);
+emit_16(92);
+emit_16(93);
+emit_16(92);
+emit_16(91);
+emit_16(92);
+emit_16(93);
+emit_16(94);
+emit_16(95);
+emit_16(94);
+emit_16(93);
+emit_16(94);
+emit_16(95);
+emit_16(96);
+emit_16(97);
+emit_16(96);
+emit_16(95);
+emit_16(96);
+emit_16(97);
+emit_16(98);
+emit_16(99);
+emit_16(98);
+emit_16(97);
+emit_16(98);
+emit_16(99);
+emit_16(100);
+emit_16(101);
+emit_16(100);
+emit_16(99);
+emit_16(100);
+emit_16(101);
+emit_16(102);
+emit_16(103);
+emit_16(102);
+emit_16(101);
+emit_16(102);
+emit_16(103);
+emit_16(104);
+emit_16(105);
+emit_16(104);
+emit_16(103);
+emit_16(104);
+emit_16(105);
+emit_16(106);
+emit_16(107);
+emit_16(106);
+emit_16(105);
+emit_16(106);
+emit_16(107);
+emit_16(108);
+emit_16(109);
+emit_16(108);
+emit_16(107);
+emit_16(108);
+emit_16(109);
+emit_16(110);
+emit_16(111);
+emit_16(110);
+emit_16(109);
+emit_16(110);
+emit_16(111);
+emit_16(112);
+emit_16(113);
+emit_16(112);
+emit_16(111);
+emit_16(112);
+emit_16(113);
+emit_16(114);
+emit_16(115);
+emit_16(114);
+emit_16(113);
+emit_16(114);
+emit_16(115);
+emit_16(116);
+emit_16(117);
+emit_16(116);
+emit_16(115);
+emit_16(116);
+emit_16(117);
+emit_16(118);
+emit_16(119);
+emit_16(118);
+emit_16(117);
+emit_16(118);
+emit_16(119);
+emit_16(120);
+emit_16(121);
+emit_16(120);
+emit_16(119);
+emit_16(120);
+emit_16(121);
+emit_16(122);
+emit_16(123);
+emit_16(122);
+emit_16(121);
+emit_16(122);
+emit_16(123);
+emit_16(124);
+emit_16(125);
+emit_16(124);
+emit_16(123);
+emit_16(124);
+emit_16(125);
+emit_16(126);
+emit_16(127);
+emit_16(126);
+emit_16(125);
+emit_16(128);
+emit_16(0);
+emit_16(129);
+emit_16(2);
+emit_16(129);
+emit_16(0);
+emit_16(129);
+emit_16(2);
+emit_16(130);
+emit_16(4);
+emit_16(130);
+emit_16(2);
+emit_16(130);
+emit_16(4);
+emit_16(131);
+emit_16(6);
+emit_16(131);
+emit_16(4);
+emit_16(131);
+emit_16(6);
+emit_16(132);
+emit_16(8);
+emit_16(132);
+emit_16(6);
+emit_16(132);
+emit_16(8);
+emit_16(133);
+emit_16(10);
+emit_16(133);
+emit_16(8);
+emit_16(133);
+emit_16(10);
+emit_16(134);
+emit_16(12);
+emit_16(134);
+emit_16(10);
+emit_16(134);
+emit_16(12);
+emit_16(135);
+emit_16(14);
+emit_16(135);
+emit_16(12);
+emit_16(135);
+emit_16(14);
+emit_16(136);
+emit_16(16);
+emit_16(136);
+emit_16(14);
+emit_16(136);
+emit_16(16);
+emit_16(137);
+emit_16(18);
+emit_16(137);
+emit_16(16);
+emit_16(137);
+emit_16(18);
+emit_16(138);
+emit_16(20);
+emit_16(138);
+emit_16(18);
+emit_16(138);
+emit_16(20);
+emit_16(139);
+emit_16(22);
+emit_16(139);
+emit_16(20);
+emit_16(139);
+emit_16(22);
+emit_16(140);
+emit_16(24);
+emit_16(140);
+emit_16(22);
+emit_16(140);
+emit_16(24);
+emit_16(141);
+emit_16(26);
+emit_16(141);
+emit_16(24);
+emit_16(141);
+emit_16(26);
+emit_16(142);
+emit_16(28);
+emit_16(142);
+emit_16(26);
+emit_16(142);
+emit_16(28);
+emit_16(143);
+emit_16(30);
+emit_16(143);
+emit_16(28);
+emit_16(143);
+emit_16(30);
+emit_16(144);
+emit_16(32);
+emit_16(144);
+emit_16(30);
+emit_16(144);
+emit_16(32);
+emit_16(145);
+emit_16(34);
+emit_16(145);
+emit_16(32);
+emit_16(145);
+emit_16(34);
+emit_16(146);
+emit_16(36);
+emit_16(146);
+emit_16(34);
+emit_16(146);
+emit_16(36);
+emit_16(147);
+emit_16(38);
+emit_16(147);
+emit_16(36);
+emit_16(147);
+emit_16(38);
+emit_16(148);
+emit_16(40);
+emit_16(148);
+emit_16(38);
+emit_16(148);
+emit_16(40);
+emit_16(149);
+emit_16(42);
+emit_16(149);
+emit_16(40);
+emit_16(149);
+emit_16(42);
+emit_16(150);
+emit_16(44);
+emit_16(150);
+emit_16(42);
+emit_16(150);
+emit_16(44);
+emit_16(151);
+emit_16(46);
+emit_16(151);
+emit_16(44);
+emit_16(151);
+emit_16(46);
+emit_16(152);
+emit_16(48);
+emit_16(152);
+emit_16(46);
+emit_16(152);
+emit_16(48);
+emit_16(153);
+emit_16(50);
+emit_16(153);
+emit_16(48);
+emit_16(153);
+emit_16(50);
+emit_16(154);
+emit_16(52);
+emit_16(154);
+emit_16(50);
+emit_16(154);
+emit_16(52);
+emit_16(155);
+emit_16(54);
+emit_16(155);
+emit_16(52);
+emit_16(155);
+emit_16(54);
+emit_16(156);
+emit_16(56);
+emit_16(156);
+emit_16(54);
+emit_16(156);
+emit_16(56);
+emit_16(157);
+emit_16(58);
+emit_16(157);
+emit_16(56);
+emit_16(157);
+emit_16(58);
+emit_16(158);
+emit_16(60);
+emit_16(158);
+emit_16(58);
+emit_16(158);
+emit_16(60);
+emit_16(159);
+emit_16(62);
+emit_16(159);
+emit_16(60);
+emit_16(159);
+emit_16(62);
+emit_16(160);
+emit_16(64);
+emit_16(160);
+emit_16(62);
+emit_16(160);
+emit_16(64);
+emit_16(161);
+emit_16(66);
+emit_16(161);
+emit_16(64);
+emit_16(161);
+emit_16(66);
+emit_16(162);
+emit_16(68);
+emit_16(162);
+emit_16(66);
+emit_16(162);
+emit_16(68);
+emit_16(163);
+emit_16(70);
+emit_16(163);
+emit_16(68);
+emit_16(163);
+emit_16(70);
+emit_16(164);
+emit_16(72);
+emit_16(164);
+emit_16(70);
+emit_16(164);
+emit_16(72);
+emit_16(165);
+emit_16(74);
+emit_16(165);
+emit_16(72);
+emit_16(165);
+emit_16(74);
+emit_16(166);
+emit_16(76);
+emit_16(166);
+emit_16(74);
+emit_16(166);
+emit_16(76);
+emit_16(167);
+emit_16(78);
+emit_16(167);
+emit_16(76);
+emit_16(167);
+emit_16(78);
+emit_16(168);
+emit_16(80);
+emit_16(168);
+emit_16(78);
+emit_16(168);
+emit_16(80);
+emit_16(169);
+emit_16(82);
+emit_16(169);
+emit_16(80);
+emit_16(169);
+emit_16(82);
+emit_16(170);
+emit_16(84);
+emit_16(170);
+emit_16(82);
+emit_16(170);
+emit_16(84);
+emit_16(171);
+emit_16(86);
+emit_16(171);
+emit_16(84);
+emit_16(171);
+emit_16(86);
+emit_16(172);
+emit_16(88);
+emit_16(172);
+emit_16(86);
+emit_16(172);
+emit_16(88);
+emit_16(173);
+emit_16(90);
+emit_16(173);
+emit_16(88);
+emit_16(173);
+emit_16(90);
+emit_16(174);
+emit_16(92);
+emit_16(174);
+emit_16(90);
+emit_16(174);
+emit_16(92);
+emit_16(175);
+emit_16(94);
+emit_16(175);
+emit_16(92);
+emit_16(175);
+emit_16(94);
+emit_16(176);
+emit_16(96);
+emit_16(176);
+emit_16(94);
+emit_16(176);
+emit_16(96);
+emit_16(177);
+emit_16(98);
+emit_16(177);
+emit_16(96);
+emit_16(177);
+emit_16(98);
+emit_16(178);
+emit_16(100);
+emit_16(178);
+emit_16(98);
+emit_16(178);
+emit_16(100);
+emit_16(179);
+emit_16(102);
+emit_16(179);
+emit_16(100);
+emit_16(179);
+emit_16(102);
+emit_16(180);
+emit_16(104);
+emit_16(180);
+emit_16(102);
+emit_16(180);
+emit_16(104);
+emit_16(181);
+emit_16(106);
+emit_16(181);
+emit_16(104);
+emit_16(181);
+emit_16(106);
+emit_16(182);
+emit_16(108);
+emit_16(182);
+emit_16(106);
+emit_16(182);
+emit_16(108);
+emit_16(183);
+emit_16(110);
+emit_16(183);
+emit_16(108);
+emit_16(183);
+emit_16(110);
+emit_16(184);
+emit_16(112);
+emit_16(184);
+emit_16(110);
+emit_16(184);
+emit_16(112);
+emit_16(185);
+emit_16(114);
+emit_16(185);
+emit_16(112);
+emit_16(185);
+emit_16(114);
+emit_16(186);
+emit_16(116);
+emit_16(186);
+emit_16(114);
+emit_16(186);
+emit_16(116);
+emit_16(187);
+emit_16(118);
+emit_16(187);
+emit_16(116);
+emit_16(187);
+emit_16(118);
+emit_16(188);
+emit_16(120);
+emit_16(188);
+emit_16(118);
+emit_16(188);
+emit_16(120);
+emit_16(189);
+emit_16(122);
+emit_16(189);
+emit_16(120);
+emit_16(189);
+emit_16(122);
+emit_16(190);
+emit_16(124);
+emit_16(190);
+emit_16(122);
+emit_16(190);
+emit_16(124);
+emit_16(191);
+emit_16(126);
+emit_16(191);
+emit_16(124);
+emit_16(192);
+emit_16(128);
+emit_16(193);
+emit_16(129);
+emit_16(193);
+emit_16(128);
+emit_16(193);
+emit_16(129);
+emit_16(194);
+emit_16(130);
+emit_16(194);
+emit_16(129);
+emit_16(194);
+emit_16(130);
+emit_16(195);
+emit_16(131);
+emit_16(195);
+emit_16(130);
+emit_16(195);
+emit_16(131);
+emit_16(196);
+emit_16(132);
+emit_16(196);
+emit_16(131);
+emit_16(196);
+emit_16(132);
+emit_16(197);
+emit_16(133);
+emit_16(197);
+emit_16(132);
+emit_16(197);
+emit_16(133);
+emit_16(198);
+emit_16(134);
+emit_16(198);
+emit_16(133);
+emit_16(198);
+emit_16(134);
+emit_16(199);
+emit_16(135);
+emit_16(199);
+emit_16(134);
+emit_16(199);
+emit_16(135);
+emit_16(200);
+emit_16(136);
+emit_16(200);
+emit_16(135);
+emit_16(200);
+emit_16(136);
+emit_16(201);
+emit_16(137);
+emit_16(201);
+emit_16(136);
+emit_16(201);
+emit_16(137);
+emit_16(202);
+emit_16(138);
+emit_16(202);
+emit_16(137);
+emit_16(202);
+emit_16(138);
+emit_16(203);
+emit_16(139);
+emit_16(203);
+emit_16(138);
+emit_16(203);
+emit_16(139);
+emit_16(204);
+emit_16(140);
+emit_16(204);
+emit_16(139);
+emit_16(204);
+emit_16(140);
+emit_16(205);
+emit_16(141);
+emit_16(205);
+emit_16(140);
+emit_16(205);
+emit_16(141);
+emit_16(206);
+emit_16(142);
+emit_16(206);
+emit_16(141);
+emit_16(206);
+emit_16(142);
+emit_16(207);
+emit_16(143);
+emit_16(207);
+emit_16(142);
+emit_16(207);
+emit_16(143);
+emit_16(208);
+emit_16(144);
+emit_16(208);
+emit_16(143);
+emit_16(208);
+emit_16(144);
+emit_16(209);
+emit_16(145);
+emit_16(209);
+emit_16(144);
+emit_16(209);
+emit_16(145);
+emit_16(210);
+emit_16(146);
+emit_16(210);
+emit_16(145);
+emit_16(210);
+emit_16(146);
+emit_16(211);
+emit_16(147);
+emit_16(211);
+emit_16(146);
+emit_16(211);
+emit_16(147);
+emit_16(212);
+emit_16(148);
+emit_16(212);
+emit_16(147);
+emit_16(212);
+emit_16(148);
+emit_16(213);
+emit_16(149);
+emit_16(213);
+emit_16(148);
+emit_16(213);
+emit_16(149);
+emit_16(214);
+emit_16(150);
+emit_16(214);
+emit_16(149);
+emit_16(214);
+emit_16(150);
+emit_16(215);
+emit_16(151);
+emit_16(215);
+emit_16(150);
+emit_16(215);
+emit_16(151);
+emit_16(216);
+emit_16(152);
+emit_16(216);
+emit_16(151);
+emit_16(216);
+emit_16(152);
+emit_16(217);
+emit_16(153);
+emit_16(217);
+emit_16(152);
+emit_16(217);
+emit_16(153);
+emit_16(218);
+emit_16(154);
+emit_16(218);
+emit_16(153);
+emit_16(218);
+emit_16(154);
+emit_16(219);
+emit_16(155);
+emit_16(219);
+emit_16(154);
+emit_16(219);
+emit_16(155);
+emit_16(220);
+emit_16(156);
+emit_16(220);
+emit_16(155);
+emit_16(220);
+emit_16(156);
+emit_16(221);
+emit_16(157);
+emit_16(221);
+emit_16(156);
+emit_16(221);
+emit_16(157);
+emit_16(222);
+emit_16(158);
+emit_16(222);
+emit_16(157);
+emit_16(222);
+emit_16(158);
+emit_16(223);
+emit_16(159);
+emit_16(223);
+emit_16(158);
+emit_16(223);
+emit_16(159);
+emit_16(224);
+emit_16(160);
+emit_16(224);
+emit_16(159);
+emit_16(224);
+emit_16(160);
+emit_16(225);
+emit_16(161);
+emit_16(225);
+emit_16(160);
+emit_16(225);
+emit_16(161);
+emit_16(226);
+emit_16(162);
+emit_16(226);
+emit_16(161);
+emit_16(226);
+emit_16(162);
+emit_16(227);
+emit_16(163);
+emit_16(227);
+emit_16(162);
+emit_16(227);
+emit_16(163);
+emit_16(228);
+emit_16(164);
+emit_16(228);
+emit_16(163);
+emit_16(228);
+emit_16(164);
+emit_16(229);
+emit_16(165);
+emit_16(229);
+emit_16(164);
+emit_16(229);
+emit_16(165);
+emit_16(230);
+emit_16(166);
+emit_16(230);
+emit_16(165);
+emit_16(230);
+emit_16(166);
+emit_16(231);
+emit_16(167);
+emit_16(231);
+emit_16(166);
+emit_16(231);
+emit_16(167);
+emit_16(232);
+emit_16(168);
+emit_16(232);
+emit_16(167);
+emit_16(232);
+emit_16(168);
+emit_16(233);
+emit_16(169);
+emit_16(233);
+emit_16(168);
+emit_16(233);
+emit_16(169);
+emit_16(234);
+emit_16(170);
+emit_16(234);
+emit_16(169);
+emit_16(234);
+emit_16(170);
+emit_16(235);
+emit_16(171);
+emit_16(235);
+emit_16(170);
+emit_16(235);
+emit_16(171);
+emit_16(236);
+emit_16(172);
+emit_16(236);
+emit_16(171);
+emit_16(236);
+emit_16(172);
+emit_16(237);
+emit_16(173);
+emit_16(237);
+emit_16(172);
+emit_16(237);
+emit_16(173);
+emit_16(238);
+emit_16(174);
+emit_16(238);
+emit_16(173);
+emit_16(238);
+emit_16(174);
+emit_16(239);
+emit_16(175);
+emit_16(239);
+emit_16(174);
+emit_16(239);
+emit_16(175);
+emit_16(240);
+emit_16(176);
+emit_16(240);
+emit_16(175);
+emit_16(240);
+emit_16(176);
+emit_16(241);
+emit_16(177);
+emit_16(241);
+emit_16(176);
+emit_16(241);
+emit_16(177);
+emit_16(242);
+emit_16(178);
+emit_16(242);
+emit_16(177);
+emit_16(242);
+emit_16(178);
+emit_16(243);
+emit_16(179);
+emit_16(243);
+emit_16(178);
+emit_16(243);
+emit_16(179);
+emit_16(244);
+emit_16(180);
+emit_16(244);
+emit_16(179);
+emit_16(244);
+emit_16(180);
+emit_16(245);
+emit_16(181);
+emit_16(245);
+emit_16(180);
+emit_16(245);
+emit_16(181);
+emit_16(246);
+emit_16(182);
+emit_16(246);
+emit_16(181);
+emit_16(246);
+emit_16(182);
+emit_16(247);
+emit_16(183);
+emit_16(247);
+emit_16(182);
+emit_16(247);
+emit_16(183);
+emit_16(248);
+emit_16(184);
+emit_16(248);
+emit_16(183);
+emit_16(248);
+emit_16(184);
+emit_16(249);
+emit_16(185);
+emit_16(249);
+emit_16(184);
+emit_16(249);
+emit_16(185);
+emit_16(250);
+emit_16(186);
+emit_16(250);
+emit_16(185);
+emit_16(250);
+emit_16(186);
+emit_16(251);
+emit_16(187);
+emit_16(251);
+emit_16(186);
+emit_16(251);
+emit_16(187);
+emit_16(252);
+emit_16(188);
+emit_16(252);
+emit_16(187);
+emit_16(252);
+emit_16(188);
+emit_16(253);
+emit_16(189);
+emit_16(253);
+emit_16(188);
+emit_16(253);
+emit_16(189);
+emit_16(254);
+emit_16(190);
+emit_16(254);
+emit_16(189);
+emit_16(254);
+emit_16(190);
+emit_16(255);
+emit_16(191);
+emit_16(255);
+emit_16(190);
+emit_16(256);
+emit_16(192);
+emit_16(257);
+emit_16(193);
+emit_16(257);
+emit_16(192);
+emit_16(257);
+emit_16(193);
+emit_16(258);
+emit_16(194);
+emit_16(258);
+emit_16(193);
+emit_16(258);
+emit_16(194);
+emit_16(259);
+emit_16(195);
+emit_16(259);
+emit_16(194);
+emit_16(259);
+emit_16(195);
+emit_16(260);
+emit_16(196);
+emit_16(260);
+emit_16(195);
+emit_16(260);
+emit_16(196);
+emit_16(261);
+emit_16(197);
+emit_16(261);
+emit_16(196);
+emit_16(261);
+emit_16(197);
+emit_16(262);
+emit_16(198);
+emit_16(262);
+emit_16(197);
+emit_16(262);
+emit_16(198);
+emit_16(263);
+emit_16(199);
+emit_16(263);
+emit_16(198);
+emit_16(263);
+emit_16(199);
+emit_16(264);
+emit_16(200);
+emit_16(264);
+emit_16(199);
+emit_16(264);
+emit_16(200);
+emit_16(265);
+emit_16(201);
+emit_16(265);
+emit_16(200);
+emit_16(265);
+emit_16(201);
+emit_16(266);
+emit_16(202);
+emit_16(266);
+emit_16(201);
+emit_16(266);
+emit_16(202);
+emit_16(267);
+emit_16(203);
+emit_16(267);
+emit_16(202);
+emit_16(267);
+emit_16(203);
+emit_16(268);
+emit_16(204);
+emit_16(268);
+emit_16(203);
+emit_16(268);
+emit_16(204);
+emit_16(269);
+emit_16(205);
+emit_16(269);
+emit_16(204);
+emit_16(269);
+emit_16(205);
+emit_16(270);
+emit_16(206);
+emit_16(270);
+emit_16(205);
+emit_16(270);
+emit_16(206);
+emit_16(271);
+emit_16(207);
+emit_16(271);
+emit_16(206);
+emit_16(271);
+emit_16(207);
+emit_16(272);
+emit_16(208);
+emit_16(272);
+emit_16(207);
+emit_16(272);
+emit_16(208);
+emit_16(273);
+emit_16(209);
+emit_16(273);
+emit_16(208);
+emit_16(273);
+emit_16(209);
+emit_16(274);
+emit_16(210);
+emit_16(274);
+emit_16(209);
+emit_16(274);
+emit_16(210);
+emit_16(275);
+emit_16(211);
+emit_16(275);
+emit_16(210);
+emit_16(275);
+emit_16(211);
+emit_16(276);
+emit_16(212);
+emit_16(276);
+emit_16(211);
+emit_16(276);
+emit_16(212);
+emit_16(277);
+emit_16(213);
+emit_16(277);
+emit_16(212);
+emit_16(277);
+emit_16(213);
+emit_16(278);
+emit_16(214);
+emit_16(278);
+emit_16(213);
+emit_16(278);
+emit_16(214);
+emit_16(279);
+emit_16(215);
+emit_16(279);
+emit_16(214);
+emit_16(279);
+emit_16(215);
+emit_16(280);
+emit_16(216);
+emit_16(280);
+emit_16(215);
+emit_16(280);
+emit_16(216);
+emit_16(281);
+emit_16(217);
+emit_16(281);
+emit_16(216);
+emit_16(281);
+emit_16(217);
+emit_16(282);
+emit_16(218);
+emit_16(282);
+emit_16(217);
+emit_16(282);
+emit_16(218);
+emit_16(283);
+emit_16(219);
+emit_16(283);
+emit_16(218);
+emit_16(283);
+emit_16(219);
+emit_16(284);
+emit_16(220);
+emit_16(284);
+emit_16(219);
+emit_16(284);
+emit_16(220);
+emit_16(285);
+emit_16(221);
+emit_16(285);
+emit_16(220);
+emit_16(285);
+emit_16(221);
+emit_16(286);
+emit_16(222);
+emit_16(286);
+emit_16(221);
+emit_16(286);
+emit_16(222);
+emit_16(287);
+emit_16(223);
+emit_16(287);
+emit_16(222);
+emit_16(287);
+emit_16(223);
+emit_16(288);
+emit_16(224);
+emit_16(288);
+emit_16(223);
+emit_16(288);
+emit_16(224);
+emit_16(289);
+emit_16(225);
+emit_16(289);
+emit_16(224);
+emit_16(289);
+emit_16(225);
+emit_16(290);
+emit_16(226);
+emit_16(290);
+emit_16(225);
+emit_16(290);
+emit_16(226);
+emit_16(291);
+emit_16(227);
+emit_16(291);
+emit_16(226);
+emit_16(291);
+emit_16(227);
+emit_16(292);
+emit_16(228);
+emit_16(292);
+emit_16(227);
+emit_16(292);
+emit_16(228);
+emit_16(293);
+emit_16(229);
+emit_16(293);
+emit_16(228);
+emit_16(293);
+emit_16(229);
+emit_16(294);
+emit_16(230);
+emit_16(294);
+emit_16(229);
+emit_16(294);
+emit_16(230);
+emit_16(295);
+emit_16(231);
+emit_16(295);
+emit_16(230);
+emit_16(295);
+emit_16(231);
+emit_16(296);
+emit_16(232);
+emit_16(296);
+emit_16(231);
+emit_16(296);
+emit_16(232);
+emit_16(297);
+emit_16(233);
+emit_16(297);
+emit_16(232);
+emit_16(297);
+emit_16(233);
+emit_16(298);
+emit_16(234);
+emit_16(298);
+emit_16(233);
+emit_16(298);
+emit_16(234);
+emit_16(299);
+emit_16(235);
+emit_16(299);
+emit_16(234);
+emit_16(299);
+emit_16(235);
+emit_16(300);
+emit_16(236);
+emit_16(300);
+emit_16(235);
+emit_16(300);
+emit_16(236);
+emit_16(301);
+emit_16(237);
+emit_16(301);
+emit_16(236);
+emit_16(301);
+emit_16(237);
+emit_16(302);
+emit_16(238);
+emit_16(302);
+emit_16(237);
+emit_16(302);
+emit_16(238);
+emit_16(303);
+emit_16(239);
+emit_16(303);
+emit_16(238);
+emit_16(303);
+emit_16(239);
+emit_16(304);
+emit_16(240);
+emit_16(304);
+emit_16(239);
+emit_16(304);
+emit_16(240);
+emit_16(305);
+emit_16(241);
+emit_16(305);
+emit_16(240);
+emit_16(305);
+emit_16(241);
+emit_16(306);
+emit_16(242);
+emit_16(306);
+emit_16(241);
+emit_16(306);
+emit_16(242);
+emit_16(307);
+emit_16(243);
+emit_16(307);
+emit_16(242);
+emit_16(307);
+emit_16(243);
+emit_16(308);
+emit_16(244);
+emit_16(308);
+emit_16(243);
+emit_16(308);
+emit_16(244);
+emit_16(309);
+emit_16(245);
+emit_16(309);
+emit_16(244);
+emit_16(309);
+emit_16(245);
+emit_16(310);
+emit_16(246);
+emit_16(310);
+emit_16(245);
+emit_16(310);
+emit_16(246);
+emit_16(311);
+emit_16(247);
+emit_16(311);
+emit_16(246);
+emit_16(311);
+emit_16(247);
+emit_16(312);
+emit_16(248);
+emit_16(312);
+emit_16(247);
+emit_16(312);
+emit_16(248);
+emit_16(313);
+emit_16(249);
+emit_16(313);
+emit_16(248);
+emit_16(313);
+emit_16(249);
+emit_16(314);
+emit_16(250);
+emit_16(314);
+emit_16(249);
+emit_16(314);
+emit_16(250);
+emit_16(315);
+emit_16(251);
+emit_16(315);
+emit_16(250);
+emit_16(315);
+emit_16(251);
+emit_16(316);
+emit_16(252);
+emit_16(316);
+emit_16(251);
+emit_16(316);
+emit_16(252);
+emit_16(317);
+emit_16(253);
+emit_16(317);
+emit_16(252);
+emit_16(317);
+emit_16(253);
+emit_16(318);
+emit_16(254);
+emit_16(318);
+emit_16(253);
+emit_16(318);
+emit_16(254);
+emit_16(319);
+emit_16(255);
+emit_16(319);
+emit_16(254);
+emit_16(320);
+emit_16(256);
+emit_16(321);
+emit_16(257);
+emit_16(321);
+emit_16(256);
+emit_16(321);
+emit_16(257);
+emit_16(322);
+emit_16(258);
+emit_16(322);
+emit_16(257);
+emit_16(322);
+emit_16(258);
+emit_16(323);
+emit_16(259);
+emit_16(323);
+emit_16(258);
+emit_16(323);
+emit_16(259);
+emit_16(324);
+emit_16(260);
+emit_16(324);
+emit_16(259);
+emit_16(324);
+emit_16(260);
+emit_16(325);
+emit_16(261);
+emit_16(325);
+emit_16(260);
+emit_16(325);
+emit_16(261);
+emit_16(326);
+emit_16(262);
+emit_16(326);
+emit_16(261);
+emit_16(326);
+emit_16(262);
+emit_16(327);
+emit_16(263);
+emit_16(327);
+emit_16(262);
+emit_16(327);
+emit_16(263);
+emit_16(328);
+emit_16(264);
+emit_16(328);
+emit_16(263);
+emit_16(328);
+emit_16(264);
+emit_16(329);
+emit_16(265);
+emit_16(329);
+emit_16(264);
+emit_16(329);
+emit_16(265);
+emit_16(330);
+emit_16(266);
+emit_16(330);
+emit_16(265);
+emit_16(330);
+emit_16(266);
+emit_16(331);
+emit_16(267);
+emit_16(331);
+emit_16(266);
+emit_16(331);
+emit_16(267);
+emit_16(332);
+emit_16(268);
+emit_16(332);
+emit_16(267);
+emit_16(332);
+emit_16(268);
+emit_16(333);
+emit_16(269);
+emit_16(333);
+emit_16(268);
+emit_16(333);
+emit_16(269);
+emit_16(334);
+emit_16(270);
+emit_16(334);
+emit_16(269);
+emit_16(334);
+emit_16(270);
+emit_16(335);
+emit_16(271);
+emit_16(335);
+emit_16(270);
+emit_16(335);
+emit_16(271);
+emit_16(336);
+emit_16(272);
+emit_16(336);
+emit_16(271);
+emit_16(336);
+emit_16(272);
+emit_16(337);
+emit_16(273);
+emit_16(337);
+emit_16(272);
+emit_16(337);
+emit_16(273);
+emit_16(338);
+emit_16(274);
+emit_16(338);
+emit_16(273);
+emit_16(338);
+emit_16(274);
+emit_16(339);
+emit_16(275);
+emit_16(339);
+emit_16(274);
+emit_16(339);
+emit_16(275);
+emit_16(340);
+emit_16(276);
+emit_16(340);
+emit_16(275);
+emit_16(340);
+emit_16(276);
+emit_16(341);
+emit_16(277);
+emit_16(341);
+emit_16(276);
+emit_16(341);
+emit_16(277);
+emit_16(342);
+emit_16(278);
+emit_16(342);
+emit_16(277);
+emit_16(342);
+emit_16(278);
+emit_16(343);
+emit_16(279);
+emit_16(343);
+emit_16(278);
+emit_16(343);
+emit_16(279);
+emit_16(344);
+emit_16(280);
+emit_16(344);
+emit_16(279);
+emit_16(344);
+emit_16(280);
+emit_16(345);
+emit_16(281);
+emit_16(345);
+emit_16(280);
+emit_16(345);
+emit_16(281);
+emit_16(346);
+emit_16(282);
+emit_16(346);
+emit_16(281);
+emit_16(346);
+emit_16(282);
+emit_16(347);
+emit_16(283);
+emit_16(347);
+emit_16(282);
+emit_16(347);
+emit_16(283);
+emit_16(348);
+emit_16(284);
+emit_16(348);
+emit_16(283);
+emit_16(348);
+emit_16(284);
+emit_16(349);
+emit_16(285);
+emit_16(349);
+emit_16(284);
+emit_16(349);
+emit_16(285);
+emit_16(350);
+emit_16(286);
+emit_16(350);
+emit_16(285);
+emit_16(350);
+emit_16(286);
+emit_16(351);
+emit_16(287);
+emit_16(351);
+emit_16(286);
+emit_16(351);
+emit_16(287);
+emit_16(352);
+emit_16(288);
+emit_16(352);
+emit_16(287);
+emit_16(352);
+emit_16(288);
+emit_16(353);
+emit_16(289);
+emit_16(353);
+emit_16(288);
+emit_16(353);
+emit_16(289);
+emit_16(354);
+emit_16(290);
+emit_16(354);
+emit_16(289);
+emit_16(354);
+emit_16(290);
+emit_16(355);
+emit_16(291);
+emit_16(355);
+emit_16(290);
+emit_16(355);
+emit_16(291);
+emit_16(356);
+emit_16(292);
+emit_16(356);
+emit_16(291);
+emit_16(356);
+emit_16(292);
+emit_16(357);
+emit_16(293);
+emit_16(357);
+emit_16(292);
+emit_16(357);
+emit_16(293);
+emit_16(358);
+emit_16(294);
+emit_16(358);
+emit_16(293);
+emit_16(358);
+emit_16(294);
+emit_16(359);
+emit_16(295);
+emit_16(359);
+emit_16(294);
+emit_16(359);
+emit_16(295);
+emit_16(360);
+emit_16(296);
+emit_16(360);
+emit_16(295);
+emit_16(360);
+emit_16(296);
+emit_16(361);
+emit_16(297);
+emit_16(361);
+emit_16(296);
+emit_16(361);
+emit_16(297);
+emit_16(362);
+emit_16(298);
+emit_16(362);
+emit_16(297);
+emit_16(362);
+emit_16(298);
+emit_16(363);
+emit_16(299);
+emit_16(363);
+emit_16(298);
+emit_16(363);
+emit_16(299);
+emit_16(364);
+emit_16(300);
+emit_16(364);
+emit_16(299);
+emit_16(364);
+emit_16(300);
+emit_16(365);
+emit_16(301);
+emit_16(365);
+emit_16(300);
+emit_16(365);
+emit_16(301);
+emit_16(366);
+emit_16(302);
+emit_16(366);
+emit_16(301);
+emit_16(366);
+emit_16(302);
+emit_16(367);
+emit_16(303);
+emit_16(367);
+emit_16(302);
+emit_16(367);
+emit_16(303);
+emit_16(368);
+emit_16(304);
+emit_16(368);
+emit_16(303);
+emit_16(368);
+emit_16(304);
+emit_16(369);
+emit_16(305);
+emit_16(369);
+emit_16(304);
+emit_16(369);
+emit_16(305);
+emit_16(370);
+emit_16(306);
+emit_16(370);
+emit_16(305);
+emit_16(370);
+emit_16(306);
+emit_16(371);
+emit_16(307);
+emit_16(371);
+emit_16(306);
+emit_16(371);
+emit_16(307);
+emit_16(372);
+emit_16(308);
+emit_16(372);
+emit_16(307);
+emit_16(372);
+emit_16(308);
+emit_16(373);
+emit_16(309);
+emit_16(373);
+emit_16(308);
+emit_16(373);
+emit_16(309);
+emit_16(374);
+emit_16(310);
+emit_16(374);
+emit_16(309);
+emit_16(374);
+emit_16(310);
+emit_16(375);
+emit_16(311);
+emit_16(375);
+emit_16(310);
+emit_16(375);
+emit_16(311);
+emit_16(376);
+emit_16(312);
+emit_16(376);
+emit_16(311);
+emit_16(376);
+emit_16(312);
+emit_16(377);
+emit_16(313);
+emit_16(377);
+emit_16(312);
+emit_16(377);
+emit_16(313);
+emit_16(378);
+emit_16(314);
+emit_16(378);
+emit_16(313);
+emit_16(378);
+emit_16(314);
+emit_16(379);
+emit_16(315);
+emit_16(379);
+emit_16(314);
+emit_16(379);
+emit_16(315);
+emit_16(380);
+emit_16(316);
+emit_16(380);
+emit_16(315);
+emit_16(380);
+emit_16(316);
+emit_16(381);
+emit_16(317);
+emit_16(381);
+emit_16(316);
+emit_16(381);
+emit_16(317);
+emit_16(382);
+emit_16(318);
+emit_16(382);
+emit_16(317);
+emit_16(382);
+emit_16(318);
+emit_16(383);
+emit_16(319);
+emit_16(383);
+emit_16(318);
+emit_16(384);
+emit_16(320);
+emit_16(385);
+emit_16(321);
+emit_16(385);
+emit_16(320);
+emit_16(385);
+emit_16(321);
+emit_16(386);
+emit_16(322);
+emit_16(386);
+emit_16(321);
+emit_16(386);
+emit_16(322);
+emit_16(387);
+emit_16(323);
+emit_16(387);
+emit_16(322);
+emit_16(387);
+emit_16(323);
+emit_16(388);
+emit_16(324);
+emit_16(388);
+emit_16(323);
+emit_16(388);
+emit_16(324);
+emit_16(389);
+emit_16(325);
+emit_16(389);
+emit_16(324);
+emit_16(389);
+emit_16(325);
+emit_16(390);
+emit_16(326);
+emit_16(390);
+emit_16(325);
+emit_16(390);
+emit_16(326);
+emit_16(391);
+emit_16(327);
+emit_16(391);
+emit_16(326);
+emit_16(391);
+emit_16(327);
+emit_16(392);
+emit_16(328);
+emit_16(392);
+emit_16(327);
+emit_16(392);
+emit_16(328);
+emit_16(393);
+emit_16(329);
+emit_16(393);
+emit_16(328);
+emit_16(393);
+emit_16(329);
+emit_16(394);
+emit_16(330);
+emit_16(394);
+emit_16(329);
+emit_16(394);
+emit_16(330);
+emit_16(395);
+emit_16(331);
+emit_16(395);
+emit_16(330);
+emit_16(395);
+emit_16(331);
+emit_16(396);
+emit_16(332);
+emit_16(396);
+emit_16(331);
+emit_16(396);
+emit_16(332);
+emit_16(397);
+emit_16(333);
+emit_16(397);
+emit_16(332);
+emit_16(397);
+emit_16(333);
+emit_16(398);
+emit_16(334);
+emit_16(398);
+emit_16(333);
+emit_16(398);
+emit_16(334);
+emit_16(399);
+emit_16(335);
+emit_16(399);
+emit_16(334);
+emit_16(399);
+emit_16(335);
+emit_16(400);
+emit_16(336);
+emit_16(400);
+emit_16(335);
+emit_16(400);
+emit_16(336);
+emit_16(401);
+emit_16(337);
+emit_16(401);
+emit_16(336);
+emit_16(401);
+emit_16(337);
+emit_16(402);
+emit_16(338);
+emit_16(402);
+emit_16(337);
+emit_16(402);
+emit_16(338);
+emit_16(403);
+emit_16(339);
+emit_16(403);
+emit_16(338);
+emit_16(403);
+emit_16(339);
+emit_16(404);
+emit_16(340);
+emit_16(404);
+emit_16(339);
+emit_16(404);
+emit_16(340);
+emit_16(405);
+emit_16(341);
+emit_16(405);
+emit_16(340);
+emit_16(405);
+emit_16(341);
+emit_16(406);
+emit_16(342);
+emit_16(406);
+emit_16(341);
+emit_16(406);
+emit_16(342);
+emit_16(407);
+emit_16(343);
+emit_16(407);
+emit_16(342);
+emit_16(407);
+emit_16(343);
+emit_16(408);
+emit_16(344);
+emit_16(408);
+emit_16(343);
+emit_16(408);
+emit_16(344);
+emit_16(409);
+emit_16(345);
+emit_16(409);
+emit_16(344);
+emit_16(409);
+emit_16(345);
+emit_16(410);
+emit_16(346);
+emit_16(410);
+emit_16(345);
+emit_16(410);
+emit_16(346);
+emit_16(411);
+emit_16(347);
+emit_16(411);
+emit_16(346);
+emit_16(411);
+emit_16(347);
+emit_16(412);
+emit_16(348);
+emit_16(412);
+emit_16(347);
+emit_16(412);
+emit_16(348);
+emit_16(413);
+emit_16(349);
+emit_16(413);
+emit_16(348);
+emit_16(413);
+emit_16(349);
+emit_16(414);
+emit_16(350);
+emit_16(414);
+emit_16(349);
+emit_16(414);
+emit_16(350);
+emit_16(415);
+emit_16(351);
+emit_16(415);
+emit_16(350);
+emit_16(415);
+emit_16(351);
+emit_16(416);
+emit_16(352);
+emit_16(416);
+emit_16(351);
+emit_16(416);
+emit_16(352);
+emit_16(417);
+emit_16(353);
+emit_16(417);
+emit_16(352);
+emit_16(417);
+emit_16(353);
+emit_16(418);
+emit_16(354);
+emit_16(418);
+emit_16(353);
+emit_16(418);
+emit_16(354);
+emit_16(419);
+emit_16(355);
+emit_16(419);
+emit_16(354);
+emit_16(419);
+emit_16(355);
+emit_16(420);
+emit_16(356);
+emit_16(420);
+emit_16(355);
+emit_16(420);
+emit_16(356);
+emit_16(421);
+emit_16(357);
+emit_16(421);
+emit_16(356);
+emit_16(421);
+emit_16(357);
+emit_16(422);
+emit_16(358);
+emit_16(422);
+emit_16(357);
+emit_16(422);
+emit_16(358);
+emit_16(423);
+emit_16(359);
+emit_16(423);
+emit_16(358);
+emit_16(423);
+emit_16(359);
+emit_16(424);
+emit_16(360);
+emit_16(424);
+emit_16(359);
+emit_16(424);
+emit_16(360);
+emit_16(425);
+emit_16(361);
+emit_16(425);
+emit_16(360);
+emit_16(425);
+emit_16(361);
+emit_16(426);
+emit_16(362);
+emit_16(426);
+emit_16(361);
+emit_16(426);
+emit_16(362);
+emit_16(427);
+emit_16(363);
+emit_16(427);
+emit_16(362);
+emit_16(427);
+emit_16(363);
+emit_16(428);
+emit_16(364);
+emit_16(428);
+emit_16(363);
+emit_16(428);
+emit_16(364);
+emit_16(429);
+emit_16(365);
+emit_16(429);
+emit_16(364);
+emit_16(429);
+emit_16(365);
+emit_16(430);
+emit_16(366);
+emit_16(430);
+emit_16(365);
+emit_16(430);
+emit_16(366);
+emit_16(431);
+emit_16(367);
+emit_16(431);
+emit_16(366);
+emit_16(431);
+emit_16(367);
+emit_16(432);
+emit_16(368);
+emit_16(432);
+emit_16(367);
+emit_16(432);
+emit_16(368);
+emit_16(433);
+emit_16(369);
+emit_16(433);
+emit_16(368);
+emit_16(433);
+emit_16(369);
+emit_16(434);
+emit_16(370);
+emit_16(434);
+emit_16(369);
+emit_16(434);
+emit_16(370);
+emit_16(435);
+emit_16(371);
+emit_16(435);
+emit_16(370);
+emit_16(435);
+emit_16(371);
+emit_16(436);
+emit_16(372);
+emit_16(436);
+emit_16(371);
+emit_16(436);
+emit_16(372);
+emit_16(437);
+emit_16(373);
+emit_16(437);
+emit_16(372);
+emit_16(437);
+emit_16(373);
+emit_16(438);
+emit_16(374);
+emit_16(438);
+emit_16(373);
+emit_16(438);
+emit_16(374);
+emit_16(439);
+emit_16(375);
+emit_16(439);
+emit_16(374);
+emit_16(439);
+emit_16(375);
+emit_16(440);
+emit_16(376);
+emit_16(440);
+emit_16(375);
+emit_16(440);
+emit_16(376);
+emit_16(441);
+emit_16(377);
+emit_16(441);
+emit_16(376);
+emit_16(441);
+emit_16(377);
+emit_16(442);
+emit_16(378);
+emit_16(442);
+emit_16(377);
+emit_16(442);
+emit_16(378);
+emit_16(443);
+emit_16(379);
+emit_16(443);
+emit_16(378);
+emit_16(443);
+emit_16(379);
+emit_16(444);
+emit_16(380);
+emit_16(444);
+emit_16(379);
+emit_16(444);
+emit_16(380);
+emit_16(445);
+emit_16(381);
+emit_16(445);
+emit_16(380);
+emit_16(445);
+emit_16(381);
+emit_16(446);
+emit_16(382);
+emit_16(446);
+emit_16(381);
+emit_16(446);
+emit_16(382);
+emit_16(447);
+emit_16(383);
+emit_16(447);
+emit_16(382);
+emit_16(448);
+emit_16(384);
+emit_16(449);
+emit_16(385);
+emit_16(449);
+emit_16(384);
+emit_16(449);
+emit_16(385);
+emit_16(450);
+emit_16(386);
+emit_16(450);
+emit_16(385);
+emit_16(450);
+emit_16(386);
+emit_16(451);
+emit_16(387);
+emit_16(451);
+emit_16(386);
+emit_16(451);
+emit_16(387);
+emit_16(452);
+emit_16(388);
+emit_16(452);
+emit_16(387);
+emit_16(452);
+emit_16(388);
+emit_16(453);
+emit_16(389);
+emit_16(453);
+emit_16(388);
+emit_16(453);
+emit_16(389);
+emit_16(454);
+emit_16(390);
+emit_16(454);
+emit_16(389);
+emit_16(454);
+emit_16(390);
+emit_16(455);
+emit_16(391);
+emit_16(455);
+emit_16(390);
+emit_16(455);
+emit_16(391);
+emit_16(456);
+emit_16(392);
+emit_16(456);
+emit_16(391);
+emit_16(456);
+emit_16(392);
+emit_16(457);
+emit_16(393);
+emit_16(457);
+emit_16(392);
+emit_16(457);
+emit_16(393);
+emit_16(458);
+emit_16(394);
+emit_16(458);
+emit_16(393);
+emit_16(458);
+emit_16(394);
+emit_16(459);
+emit_16(395);
+emit_16(459);
+emit_16(394);
+emit_16(459);
+emit_16(395);
+emit_16(460);
+emit_16(396);
+emit_16(460);
+emit_16(395);
+emit_16(460);
+emit_16(396);
+emit_16(461);
+emit_16(397);
+emit_16(461);
+emit_16(396);
+emit_16(461);
+emit_16(397);
+emit_16(462);
+emit_16(398);
+emit_16(462);
+emit_16(397);
+emit_16(462);
+emit_16(398);
+emit_16(463);
+emit_16(399);
+emit_16(463);
+emit_16(398);
+emit_16(463);
+emit_16(399);
+emit_16(464);
+emit_16(400);
+emit_16(464);
+emit_16(399);
+emit_16(464);
+emit_16(400);
+emit_16(465);
+emit_16(401);
+emit_16(465);
+emit_16(400);
+emit_16(465);
+emit_16(401);
+emit_16(466);
+emit_16(402);
+emit_16(466);
+emit_16(401);
+emit_16(466);
+emit_16(402);
+emit_16(467);
+emit_16(403);
+emit_16(467);
+emit_16(402);
+emit_16(467);
+emit_16(403);
+emit_16(468);
+emit_16(404);
+emit_16(468);
+emit_16(403);
+emit_16(468);
+emit_16(404);
+emit_16(469);
+emit_16(405);
+emit_16(469);
+emit_16(404);
+emit_16(469);
+emit_16(405);
+emit_16(470);
+emit_16(406);
+emit_16(470);
+emit_16(405);
+emit_16(470);
+emit_16(406);
+emit_16(471);
+emit_16(407);
+emit_16(471);
+emit_16(406);
+emit_16(471);
+emit_16(407);
+emit_16(472);
+emit_16(408);
+emit_16(472);
+emit_16(407);
+emit_16(472);
+emit_16(408);
+emit_16(473);
+emit_16(409);
+emit_16(473);
+emit_16(408);
+emit_16(473);
+emit_16(409);
+emit_16(474);
+emit_16(410);
+emit_16(474);
+emit_16(409);
+emit_16(474);
+emit_16(410);
+emit_16(475);
+emit_16(411);
+emit_16(475);
+emit_16(410);
+emit_16(475);
+emit_16(411);
+emit_16(476);
+emit_16(412);
+emit_16(476);
+emit_16(411);
+emit_16(476);
+emit_16(412);
+emit_16(477);
+emit_16(413);
+emit_16(477);
+emit_16(412);
+emit_16(477);
+emit_16(413);
+emit_16(478);
+emit_16(414);
+emit_16(478);
+emit_16(413);
+emit_16(478);
+emit_16(414);
+emit_16(479);
+emit_16(415);
+emit_16(479);
+emit_16(414);
+emit_16(479);
+emit_16(415);
+emit_16(480);
+emit_16(416);
+emit_16(480);
+emit_16(415);
+emit_16(480);
+emit_16(416);
+emit_16(481);
+emit_16(417);
+emit_16(481);
+emit_16(416);
+emit_16(481);
+emit_16(417);
+emit_16(482);
+emit_16(418);
+emit_16(482);
+emit_16(417);
+emit_16(482);
+emit_16(418);
+emit_16(483);
+emit_16(419);
+emit_16(483);
+emit_16(418);
+emit_16(483);
+emit_16(419);
+emit_16(484);
+emit_16(420);
+emit_16(484);
+emit_16(419);
+emit_16(484);
+emit_16(420);
+emit_16(485);
+emit_16(421);
+emit_16(485);
+emit_16(420);
+emit_16(485);
+emit_16(421);
+emit_16(486);
+emit_16(422);
+emit_16(486);
+emit_16(421);
+emit_16(486);
+emit_16(422);
+emit_16(487);
+emit_16(423);
+emit_16(487);
+emit_16(422);
+emit_16(487);
+emit_16(423);
+emit_16(488);
+emit_16(424);
+emit_16(488);
+emit_16(423);
+emit_16(488);
+emit_16(424);
+emit_16(489);
+emit_16(425);
+emit_16(489);
+emit_16(424);
+emit_16(489);
+emit_16(425);
+emit_16(490);
+emit_16(426);
+emit_16(490);
+emit_16(425);
+emit_16(490);
+emit_16(426);
+emit_16(491);
+emit_16(427);
+emit_16(491);
+emit_16(426);
+emit_16(491);
+emit_16(427);
+emit_16(492);
+emit_16(428);
+emit_16(492);
+emit_16(427);
+emit_16(492);
+emit_16(428);
+emit_16(493);
+emit_16(429);
+emit_16(493);
+emit_16(428);
+emit_16(493);
+emit_16(429);
+emit_16(494);
+emit_16(430);
+emit_16(494);
+emit_16(429);
+emit_16(494);
+emit_16(430);
+emit_16(495);
+emit_16(431);
+emit_16(495);
+emit_16(430);
+emit_16(495);
+emit_16(431);
+emit_16(496);
+emit_16(432);
+emit_16(496);
+emit_16(431);
+emit_16(496);
+emit_16(432);
+emit_16(497);
+emit_16(433);
+emit_16(497);
+emit_16(432);
+emit_16(497);
+emit_16(433);
+emit_16(498);
+emit_16(434);
+emit_16(498);
+emit_16(433);
+emit_16(498);
+emit_16(434);
+emit_16(499);
+emit_16(435);
+emit_16(499);
+emit_16(434);
+emit_16(499);
+emit_16(435);
+emit_16(500);
+emit_16(436);
+emit_16(500);
+emit_16(435);
+emit_16(500);
+emit_16(436);
+emit_16(501);
+emit_16(437);
+emit_16(501);
+emit_16(436);
+emit_16(501);
+emit_16(437);
+emit_16(502);
+emit_16(438);
+emit_16(502);
+emit_16(437);
+emit_16(502);
+emit_16(438);
+emit_16(503);
+emit_16(439);
+emit_16(503);
+emit_16(438);
+emit_16(503);
+emit_16(439);
+emit_16(504);
+emit_16(440);
+emit_16(504);
+emit_16(439);
+emit_16(504);
+emit_16(440);
+emit_16(505);
+emit_16(441);
+emit_16(505);
+emit_16(440);
+emit_16(505);
+emit_16(441);
+emit_16(506);
+emit_16(442);
+emit_16(506);
+emit_16(441);
+emit_16(506);
+emit_16(442);
+emit_16(507);
+emit_16(443);
+emit_16(507);
+emit_16(442);
+emit_16(507);
+emit_16(443);
+emit_16(508);
+emit_16(444);
+emit_16(508);
+emit_16(443);
+emit_16(508);
+emit_16(444);
+emit_16(509);
+emit_16(445);
+emit_16(509);
+emit_16(444);
+emit_16(509);
+emit_16(445);
+emit_16(510);
+emit_16(446);
+emit_16(510);
+emit_16(445);
+emit_16(510);
+emit_16(446);
+emit_16(511);
+emit_16(447);
+emit_16(511);
+emit_16(446);
+emit_16(512);
+emit_16(448);
+emit_16(513);
+emit_16(449);
+emit_16(513);
+emit_16(448);
+emit_16(513);
+emit_16(449);
+emit_16(514);
+emit_16(450);
+emit_16(514);
+emit_16(449);
+emit_16(514);
+emit_16(450);
+emit_16(515);
+emit_16(451);
+emit_16(515);
+emit_16(450);
+emit_16(515);
+emit_16(451);
+emit_16(516);
+emit_16(452);
+emit_16(516);
+emit_16(451);
+emit_16(516);
+emit_16(452);
+emit_16(517);
+emit_16(453);
+emit_16(517);
+emit_16(452);
+emit_16(517);
+emit_16(453);
+emit_16(518);
+emit_16(454);
+emit_16(518);
+emit_16(453);
+emit_16(518);
+emit_16(454);
+emit_16(519);
+emit_16(455);
+emit_16(519);
+emit_16(454);
+emit_16(519);
+emit_16(455);
+emit_16(520);
+emit_16(456);
+emit_16(520);
+emit_16(455);
+emit_16(520);
+emit_16(456);
+emit_16(521);
+emit_16(457);
+emit_16(521);
+emit_16(456);
+emit_16(521);
+emit_16(457);
+emit_16(522);
+emit_16(458);
+emit_16(522);
+emit_16(457);
+emit_16(522);
+emit_16(458);
+emit_16(523);
+emit_16(459);
+emit_16(523);
+emit_16(458);
+emit_16(523);
+emit_16(459);
+emit_16(524);
+emit_16(460);
+emit_16(524);
+emit_16(459);
+emit_16(524);
+emit_16(460);
+emit_16(525);
+emit_16(461);
+emit_16(525);
+emit_16(460);
+emit_16(525);
+emit_16(461);
+emit_16(526);
+emit_16(462);
+emit_16(526);
+emit_16(461);
+emit_16(526);
+emit_16(462);
+emit_16(527);
+emit_16(463);
+emit_16(527);
+emit_16(462);
+emit_16(527);
+emit_16(463);
+emit_16(528);
+emit_16(464);
+emit_16(528);
+emit_16(463);
+emit_16(528);
+emit_16(464);
+emit_16(529);
+emit_16(465);
+emit_16(529);
+emit_16(464);
+emit_16(529);
+emit_16(465);
+emit_16(530);
+emit_16(466);
+emit_16(530);
+emit_16(465);
+emit_16(530);
+emit_16(466);
+emit_16(531);
+emit_16(467);
+emit_16(531);
+emit_16(466);
+emit_16(531);
+emit_16(467);
+emit_16(532);
+emit_16(468);
+emit_16(532);
+emit_16(467);
+emit_16(532);
+emit_16(468);
+emit_16(533);
+emit_16(469);
+emit_16(533);
+emit_16(468);
+emit_16(533);
+emit_16(469);
+emit_16(534);
+emit_16(470);
+emit_16(534);
+emit_16(469);
+emit_16(534);
+emit_16(470);
+emit_16(535);
+emit_16(471);
+emit_16(535);
+emit_16(470);
+emit_16(535);
+emit_16(471);
+emit_16(536);
+emit_16(472);
+emit_16(536);
+emit_16(471);
+emit_16(536);
+emit_16(472);
+emit_16(537);
+emit_16(473);
+emit_16(537);
+emit_16(472);
+emit_16(537);
+emit_16(473);
+emit_16(538);
+emit_16(474);
+emit_16(538);
+emit_16(473);
+emit_16(538);
+emit_16(474);
+emit_16(539);
+emit_16(475);
+emit_16(539);
+emit_16(474);
+emit_16(539);
+emit_16(475);
+emit_16(540);
+emit_16(476);
+emit_16(540);
+emit_16(475);
+emit_16(540);
+emit_16(476);
+emit_16(541);
+emit_16(477);
+emit_16(541);
+emit_16(476);
+emit_16(541);
+emit_16(477);
+emit_16(542);
+emit_16(478);
+emit_16(542);
+emit_16(477);
+emit_16(542);
+emit_16(478);
+emit_16(543);
+emit_16(479);
+emit_16(543);
+emit_16(478);
+emit_16(543);
+emit_16(479);
+emit_16(544);
+emit_16(480);
+emit_16(544);
+emit_16(479);
+emit_16(544);
+emit_16(480);
+emit_16(545);
+emit_16(481);
+emit_16(545);
+emit_16(480);
+emit_16(545);
+emit_16(481);
+emit_16(546);
+emit_16(482);
+emit_16(546);
+emit_16(481);
+emit_16(546);
+emit_16(482);
+emit_16(547);
+emit_16(483);
+emit_16(547);
+emit_16(482);
+emit_16(547);
+emit_16(483);
+emit_16(548);
+emit_16(484);
+emit_16(548);
+emit_16(483);
+emit_16(548);
+emit_16(484);
+emit_16(549);
+emit_16(485);
+emit_16(549);
+emit_16(484);
+emit_16(549);
+emit_16(485);
+emit_16(550);
+emit_16(486);
+emit_16(550);
+emit_16(485);
+emit_16(550);
+emit_16(486);
+emit_16(551);
+emit_16(487);
+emit_16(551);
+emit_16(486);
+emit_16(551);
+emit_16(487);
+emit_16(552);
+emit_16(488);
+emit_16(552);
+emit_16(487);
+emit_16(552);
+emit_16(488);
+emit_16(553);
+emit_16(489);
+emit_16(553);
+emit_16(488);
+emit_16(553);
+emit_16(489);
+emit_16(554);
+emit_16(490);
+emit_16(554);
+emit_16(489);
+emit_16(554);
+emit_16(490);
+emit_16(555);
+emit_16(491);
+emit_16(555);
+emit_16(490);
+emit_16(555);
+emit_16(491);
+emit_16(556);
+emit_16(492);
+emit_16(556);
+emit_16(491);
+emit_16(556);
+emit_16(492);
+emit_16(557);
+emit_16(493);
+emit_16(557);
+emit_16(492);
+emit_16(557);
+emit_16(493);
+emit_16(558);
+emit_16(494);
+emit_16(558);
+emit_16(493);
+emit_16(558);
+emit_16(494);
+emit_16(559);
+emit_16(495);
+emit_16(559);
+emit_16(494);
+emit_16(559);
+emit_16(495);
+emit_16(560);
+emit_16(496);
+emit_16(560);
+emit_16(495);
+emit_16(560);
+emit_16(496);
+emit_16(561);
+emit_16(497);
+emit_16(561);
+emit_16(496);
+emit_16(561);
+emit_16(497);
+emit_16(562);
+emit_16(498);
+emit_16(562);
+emit_16(497);
+emit_16(562);
+emit_16(498);
+emit_16(563);
+emit_16(499);
+emit_16(563);
+emit_16(498);
+emit_16(563);
+emit_16(499);
+emit_16(564);
+emit_16(500);
+emit_16(564);
+emit_16(499);
+emit_16(564);
+emit_16(500);
+emit_16(565);
+emit_16(501);
+emit_16(565);
+emit_16(500);
+emit_16(565);
+emit_16(501);
+emit_16(566);
+emit_16(502);
+emit_16(566);
+emit_16(501);
+emit_16(566);
+emit_16(502);
+emit_16(567);
+emit_16(503);
+emit_16(567);
+emit_16(502);
+emit_16(567);
+emit_16(503);
+emit_16(568);
+emit_16(504);
+emit_16(568);
+emit_16(503);
+emit_16(568);
+emit_16(504);
+emit_16(569);
+emit_16(505);
+emit_16(569);
+emit_16(504);
+emit_16(569);
+emit_16(505);
+emit_16(570);
+emit_16(506);
+emit_16(570);
+emit_16(505);
+emit_16(570);
+emit_16(506);
+emit_16(571);
+emit_16(507);
+emit_16(571);
+emit_16(506);
+emit_16(571);
+emit_16(507);
+emit_16(572);
+emit_16(508);
+emit_16(572);
+emit_16(507);
+emit_16(572);
+emit_16(508);
+emit_16(573);
+emit_16(509);
+emit_16(573);
+emit_16(508);
+emit_16(573);
+emit_16(509);
+emit_16(574);
+emit_16(510);
+emit_16(574);
+emit_16(509);
+emit_16(574);
+emit_16(510);
+emit_16(575);
+emit_16(511);
+emit_16(575);
+emit_16(510);
+emit_16(576);
+emit_16(512);
+emit_16(577);
+emit_16(513);
+emit_16(577);
+emit_16(512);
+emit_16(577);
+emit_16(513);
+emit_16(578);
+emit_16(514);
+emit_16(578);
+emit_16(513);
+emit_16(578);
+emit_16(514);
+emit_16(579);
+emit_16(515);
+emit_16(579);
+emit_16(514);
+emit_16(579);
+emit_16(515);
+emit_16(580);
+emit_16(516);
+emit_16(580);
+emit_16(515);
+emit_16(580);
+emit_16(516);
+emit_16(581);
+emit_16(517);
+emit_16(581);
+emit_16(516);
+emit_16(581);
+emit_16(517);
+emit_16(582);
+emit_16(518);
+emit_16(582);
+emit_16(517);
+emit_16(582);
+emit_16(518);
+emit_16(583);
+emit_16(519);
+emit_16(583);
+emit_16(518);
+emit_16(583);
+emit_16(519);
+emit_16(584);
+emit_16(520);
+emit_16(584);
+emit_16(519);
+emit_16(584);
+emit_16(520);
+emit_16(585);
+emit_16(521);
+emit_16(585);
+emit_16(520);
+emit_16(585);
+emit_16(521);
+emit_16(586);
+emit_16(522);
+emit_16(586);
+emit_16(521);
+emit_16(586);
+emit_16(522);
+emit_16(587);
+emit_16(523);
+emit_16(587);
+emit_16(522);
+emit_16(587);
+emit_16(523);
+emit_16(588);
+emit_16(524);
+emit_16(588);
+emit_16(523);
+emit_16(588);
+emit_16(524);
+emit_16(589);
+emit_16(525);
+emit_16(589);
+emit_16(524);
+emit_16(589);
+emit_16(525);
+emit_16(590);
+emit_16(526);
+emit_16(590);
+emit_16(525);
+emit_16(590);
+emit_16(526);
+emit_16(591);
+emit_16(527);
+emit_16(591);
+emit_16(526);
+emit_16(591);
+emit_16(527);
+emit_16(592);
+emit_16(528);
+emit_16(592);
+emit_16(527);
+emit_16(592);
+emit_16(528);
+emit_16(593);
+emit_16(529);
+emit_16(593);
+emit_16(528);
+emit_16(593);
+emit_16(529);
+emit_16(594);
+emit_16(530);
+emit_16(594);
+emit_16(529);
+emit_16(594);
+emit_16(530);
+emit_16(595);
+emit_16(531);
+emit_16(595);
+emit_16(530);
+emit_16(595);
+emit_16(531);
+emit_16(596);
+emit_16(532);
+emit_16(596);
+emit_16(531);
+emit_16(596);
+emit_16(532);
+emit_16(597);
+emit_16(533);
+emit_16(597);
+emit_16(532);
+emit_16(597);
+emit_16(533);
+emit_16(598);
+emit_16(534);
+emit_16(598);
+emit_16(533);
+emit_16(598);
+emit_16(534);
+emit_16(599);
+emit_16(535);
+emit_16(599);
+emit_16(534);
+emit_16(599);
+emit_16(535);
+emit_16(600);
+emit_16(536);
+emit_16(600);
+emit_16(535);
+emit_16(600);
+emit_16(536);
+emit_16(601);
+emit_16(537);
+emit_16(601);
+emit_16(536);
+emit_16(601);
+emit_16(537);
+emit_16(602);
+emit_16(538);
+emit_16(602);
+emit_16(537);
+emit_16(602);
+emit_16(538);
+emit_16(603);
+emit_16(539);
+emit_16(603);
+emit_16(538);
+emit_16(603);
+emit_16(539);
+emit_16(604);
+emit_16(540);
+emit_16(604);
+emit_16(539);
+emit_16(604);
+emit_16(540);
+emit_16(605);
+emit_16(541);
+emit_16(605);
+emit_16(540);
+emit_16(605);
+emit_16(541);
+emit_16(606);
+emit_16(542);
+emit_16(606);
+emit_16(541);
+emit_16(606);
+emit_16(542);
+emit_16(607);
+emit_16(543);
+emit_16(607);
+emit_16(542);
+emit_16(607);
+emit_16(543);
+emit_16(608);
+emit_16(544);
+emit_16(608);
+emit_16(543);
+emit_16(608);
+emit_16(544);
+emit_16(609);
+emit_16(545);
+emit_16(609);
+emit_16(544);
+emit_16(609);
+emit_16(545);
+emit_16(610);
+emit_16(546);
+emit_16(610);
+emit_16(545);
+emit_16(610);
+emit_16(546);
+emit_16(611);
+emit_16(547);
+emit_16(611);
+emit_16(546);
+emit_16(611);
+emit_16(547);
+emit_16(612);
+emit_16(548);
+emit_16(612);
+emit_16(547);
+emit_16(612);
+emit_16(548);
+emit_16(613);
+emit_16(549);
+emit_16(613);
+emit_16(548);
+emit_16(613);
+emit_16(549);
+emit_16(614);
+emit_16(550);
+emit_16(614);
+emit_16(549);
+emit_16(614);
+emit_16(550);
+emit_16(615);
+emit_16(551);
+emit_16(615);
+emit_16(550);
+emit_16(615);
+emit_16(551);
+emit_16(616);
+emit_16(552);
+emit_16(616);
+emit_16(551);
+emit_16(616);
+emit_16(552);
+emit_16(617);
+emit_16(553);
+emit_16(617);
+emit_16(552);
+emit_16(617);
+emit_16(553);
+emit_16(618);
+emit_16(554);
+emit_16(618);
+emit_16(553);
+emit_16(618);
+emit_16(554);
+emit_16(619);
+emit_16(555);
+emit_16(619);
+emit_16(554);
+emit_16(619);
+emit_16(555);
+emit_16(620);
+emit_16(556);
+emit_16(620);
+emit_16(555);
+emit_16(620);
+emit_16(556);
+emit_16(621);
+emit_16(557);
+emit_16(621);
+emit_16(556);
+emit_16(621);
+emit_16(557);
+emit_16(622);
+emit_16(558);
+emit_16(622);
+emit_16(557);
+emit_16(622);
+emit_16(558);
+emit_16(623);
+emit_16(559);
+emit_16(623);
+emit_16(558);
+emit_16(623);
+emit_16(559);
+emit_16(624);
+emit_16(560);
+emit_16(624);
+emit_16(559);
+emit_16(624);
+emit_16(560);
+emit_16(625);
+emit_16(561);
+emit_16(625);
+emit_16(560);
+emit_16(625);
+emit_16(561);
+emit_16(626);
+emit_16(562);
+emit_16(626);
+emit_16(561);
+emit_16(626);
+emit_16(562);
+emit_16(627);
+emit_16(563);
+emit_16(627);
+emit_16(562);
+emit_16(627);
+emit_16(563);
+emit_16(628);
+emit_16(564);
+emit_16(628);
+emit_16(563);
+emit_16(628);
+emit_16(564);
+emit_16(629);
+emit_16(565);
+emit_16(629);
+emit_16(564);
+emit_16(629);
+emit_16(565);
+emit_16(630);
+emit_16(566);
+emit_16(630);
+emit_16(565);
+emit_16(630);
+emit_16(566);
+emit_16(631);
+emit_16(567);
+emit_16(631);
+emit_16(566);
+emit_16(631);
+emit_16(567);
+emit_16(632);
+emit_16(568);
+emit_16(632);
+emit_16(567);
+emit_16(632);
+emit_16(568);
+emit_16(633);
+emit_16(569);
+emit_16(633);
+emit_16(568);
+emit_16(633);
+emit_16(569);
+emit_16(634);
+emit_16(570);
+emit_16(634);
+emit_16(569);
+emit_16(634);
+emit_16(570);
+emit_16(635);
+emit_16(571);
+emit_16(635);
+emit_16(570);
+emit_16(635);
+emit_16(571);
+emit_16(636);
+emit_16(572);
+emit_16(636);
+emit_16(571);
+emit_16(636);
+emit_16(572);
+emit_16(637);
+emit_16(573);
+emit_16(637);
+emit_16(572);
+emit_16(637);
+emit_16(573);
+emit_16(638);
+emit_16(574);
+emit_16(638);
+emit_16(573);
+emit_16(638);
+emit_16(574);
+emit_16(639);
+emit_16(575);
+emit_16(639);
+emit_16(574);
+emit_16(640);
+emit_16(576);
+emit_16(641);
+emit_16(577);
+emit_16(641);
+emit_16(576);
+emit_16(641);
+emit_16(577);
+emit_16(642);
+emit_16(578);
+emit_16(642);
+emit_16(577);
+emit_16(642);
+emit_16(578);
+emit_16(643);
+emit_16(579);
+emit_16(643);
+emit_16(578);
+emit_16(643);
+emit_16(579);
+emit_16(644);
+emit_16(580);
+emit_16(644);
+emit_16(579);
+emit_16(644);
+emit_16(580);
+emit_16(645);
+emit_16(581);
+emit_16(645);
+emit_16(580);
+emit_16(645);
+emit_16(581);
+emit_16(646);
+emit_16(582);
+emit_16(646);
+emit_16(581);
+emit_16(646);
+emit_16(582);
+emit_16(647);
+emit_16(583);
+emit_16(647);
+emit_16(582);
+emit_16(647);
+emit_16(583);
+emit_16(648);
+emit_16(584);
+emit_16(648);
+emit_16(583);
+emit_16(648);
+emit_16(584);
+emit_16(649);
+emit_16(585);
+emit_16(649);
+emit_16(584);
+emit_16(649);
+emit_16(585);
+emit_16(650);
+emit_16(586);
+emit_16(650);
+emit_16(585);
+emit_16(650);
+emit_16(586);
+emit_16(651);
+emit_16(587);
+emit_16(651);
+emit_16(586);
+emit_16(651);
+emit_16(587);
+emit_16(652);
+emit_16(588);
+emit_16(652);
+emit_16(587);
+emit_16(652);
+emit_16(588);
+emit_16(653);
+emit_16(589);
+emit_16(653);
+emit_16(588);
+emit_16(653);
+emit_16(589);
+emit_16(654);
+emit_16(590);
+emit_16(654);
+emit_16(589);
+emit_16(654);
+emit_16(590);
+emit_16(655);
+emit_16(591);
+emit_16(655);
+emit_16(590);
+emit_16(655);
+emit_16(591);
+emit_16(656);
+emit_16(592);
+emit_16(656);
+emit_16(591);
+emit_16(656);
+emit_16(592);
+emit_16(657);
+emit_16(593);
+emit_16(657);
+emit_16(592);
+emit_16(657);
+emit_16(593);
+emit_16(658);
+emit_16(594);
+emit_16(658);
+emit_16(593);
+emit_16(658);
+emit_16(594);
+emit_16(659);
+emit_16(595);
+emit_16(659);
+emit_16(594);
+emit_16(659);
+emit_16(595);
+emit_16(660);
+emit_16(596);
+emit_16(660);
+emit_16(595);
+emit_16(660);
+emit_16(596);
+emit_16(661);
+emit_16(597);
+emit_16(661);
+emit_16(596);
+emit_16(661);
+emit_16(597);
+emit_16(662);
+emit_16(598);
+emit_16(662);
+emit_16(597);
+emit_16(662);
+emit_16(598);
+emit_16(663);
+emit_16(599);
+emit_16(663);
+emit_16(598);
+emit_16(663);
+emit_16(599);
+emit_16(664);
+emit_16(600);
+emit_16(664);
+emit_16(599);
+emit_16(664);
+emit_16(600);
+emit_16(665);
+emit_16(601);
+emit_16(665);
+emit_16(600);
+emit_16(665);
+emit_16(601);
+emit_16(666);
+emit_16(602);
+emit_16(666);
+emit_16(601);
+emit_16(666);
+emit_16(602);
+emit_16(667);
+emit_16(603);
+emit_16(667);
+emit_16(602);
+emit_16(667);
+emit_16(603);
+emit_16(668);
+emit_16(604);
+emit_16(668);
+emit_16(603);
+emit_16(668);
+emit_16(604);
+emit_16(669);
+emit_16(605);
+emit_16(669);
+emit_16(604);
+emit_16(669);
+emit_16(605);
+emit_16(670);
+emit_16(606);
+emit_16(670);
+emit_16(605);
+emit_16(670);
+emit_16(606);
+emit_16(671);
+emit_16(607);
+emit_16(671);
+emit_16(606);
+emit_16(671);
+emit_16(607);
+emit_16(672);
+emit_16(608);
+emit_16(672);
+emit_16(607);
+emit_16(672);
+emit_16(608);
+emit_16(673);
+emit_16(609);
+emit_16(673);
+emit_16(608);
+emit_16(673);
+emit_16(609);
+emit_16(674);
+emit_16(610);
+emit_16(674);
+emit_16(609);
+emit_16(674);
+emit_16(610);
+emit_16(675);
+emit_16(611);
+emit_16(675);
+emit_16(610);
+emit_16(675);
+emit_16(611);
+emit_16(676);
+emit_16(612);
+emit_16(676);
+emit_16(611);
+emit_16(676);
+emit_16(612);
+emit_16(677);
+emit_16(613);
+emit_16(677);
+emit_16(612);
+emit_16(677);
+emit_16(613);
+emit_16(678);
+emit_16(614);
+emit_16(678);
+emit_16(613);
+emit_16(678);
+emit_16(614);
+emit_16(679);
+emit_16(615);
+emit_16(679);
+emit_16(614);
+emit_16(679);
+emit_16(615);
+emit_16(680);
+emit_16(616);
+emit_16(680);
+emit_16(615);
+emit_16(680);
+emit_16(616);
+emit_16(681);
+emit_16(617);
+emit_16(681);
+emit_16(616);
+emit_16(681);
+emit_16(617);
+emit_16(682);
+emit_16(618);
+emit_16(682);
+emit_16(617);
+emit_16(682);
+emit_16(618);
+emit_16(683);
+emit_16(619);
+emit_16(683);
+emit_16(618);
+emit_16(683);
+emit_16(619);
+emit_16(684);
+emit_16(620);
+emit_16(684);
+emit_16(619);
+emit_16(684);
+emit_16(620);
+emit_16(685);
+emit_16(621);
+emit_16(685);
+emit_16(620);
+emit_16(685);
+emit_16(621);
+emit_16(686);
+emit_16(622);
+emit_16(686);
+emit_16(621);
+emit_16(686);
+emit_16(622);
+emit_16(687);
+emit_16(623);
+emit_16(687);
+emit_16(622);
+emit_16(687);
+emit_16(623);
+emit_16(688);
+emit_16(624);
+emit_16(688);
+emit_16(623);
+emit_16(688);
+emit_16(624);
+emit_16(689);
+emit_16(625);
+emit_16(689);
+emit_16(624);
+emit_16(689);
+emit_16(625);
+emit_16(690);
+emit_16(626);
+emit_16(690);
+emit_16(625);
+emit_16(690);
+emit_16(626);
+emit_16(691);
+emit_16(627);
+emit_16(691);
+emit_16(626);
+emit_16(691);
+emit_16(627);
+emit_16(692);
+emit_16(628);
+emit_16(692);
+emit_16(627);
+emit_16(692);
+emit_16(628);
+emit_16(693);
+emit_16(629);
+emit_16(693);
+emit_16(628);
+emit_16(693);
+emit_16(629);
+emit_16(694);
+emit_16(630);
+emit_16(694);
+emit_16(629);
+emit_16(694);
+emit_16(630);
+emit_16(695);
+emit_16(631);
+emit_16(695);
+emit_16(630);
+emit_16(695);
+emit_16(631);
+emit_16(696);
+emit_16(632);
+emit_16(696);
+emit_16(631);
+emit_16(696);
+emit_16(632);
+emit_16(697);
+emit_16(633);
+emit_16(697);
+emit_16(632);
+emit_16(697);
+emit_16(633);
+emit_16(698);
+emit_16(634);
+emit_16(698);
+emit_16(633);
+emit_16(698);
+emit_16(634);
+emit_16(699);
+emit_16(635);
+emit_16(699);
+emit_16(634);
+emit_16(699);
+emit_16(635);
+emit_16(700);
+emit_16(636);
+emit_16(700);
+emit_16(635);
+emit_16(700);
+emit_16(636);
+emit_16(701);
+emit_16(637);
+emit_16(701);
+emit_16(636);
+emit_16(701);
+emit_16(637);
+emit_16(702);
+emit_16(638);
+emit_16(702);
+emit_16(637);
+emit_16(702);
+emit_16(638);
+emit_16(703);
+emit_16(639);
+emit_16(703);
+emit_16(638);
+emit_16(704);
+emit_16(640);
+emit_16(705);
+emit_16(641);
+emit_16(705);
+emit_16(640);
+emit_16(705);
+emit_16(641);
+emit_16(706);
+emit_16(642);
+emit_16(706);
+emit_16(641);
+emit_16(706);
+emit_16(642);
+emit_16(707);
+emit_16(643);
+emit_16(707);
+emit_16(642);
+emit_16(707);
+emit_16(643);
+emit_16(708);
+emit_16(644);
+emit_16(708);
+emit_16(643);
+emit_16(708);
+emit_16(644);
+emit_16(709);
+emit_16(645);
+emit_16(709);
+emit_16(644);
+emit_16(709);
+emit_16(645);
+emit_16(710);
+emit_16(646);
+emit_16(710);
+emit_16(645);
+emit_16(710);
+emit_16(646);
+emit_16(711);
+emit_16(647);
+emit_16(711);
+emit_16(646);
+emit_16(711);
+emit_16(647);
+emit_16(712);
+emit_16(648);
+emit_16(712);
+emit_16(647);
+emit_16(712);
+emit_16(648);
+emit_16(713);
+emit_16(649);
+emit_16(713);
+emit_16(648);
+emit_16(713);
+emit_16(649);
+emit_16(714);
+emit_16(650);
+emit_16(714);
+emit_16(649);
+emit_16(714);
+emit_16(650);
+emit_16(715);
+emit_16(651);
+emit_16(715);
+emit_16(650);
+emit_16(715);
+emit_16(651);
+emit_16(716);
+emit_16(652);
+emit_16(716);
+emit_16(651);
+emit_16(716);
+emit_16(652);
+emit_16(717);
+emit_16(653);
+emit_16(717);
+emit_16(652);
+emit_16(717);
+emit_16(653);
+emit_16(718);
+emit_16(654);
+emit_16(718);
+emit_16(653);
+emit_16(718);
+emit_16(654);
+emit_16(719);
+emit_16(655);
+emit_16(719);
+emit_16(654);
+emit_16(719);
+emit_16(655);
+emit_16(720);
+emit_16(656);
+emit_16(720);
+emit_16(655);
+emit_16(720);
+emit_16(656);
+emit_16(721);
+emit_16(657);
+emit_16(721);
+emit_16(656);
+emit_16(721);
+emit_16(657);
+emit_16(722);
+emit_16(658);
+emit_16(722);
+emit_16(657);
+emit_16(722);
+emit_16(658);
+emit_16(723);
+emit_16(659);
+emit_16(723);
+emit_16(658);
+emit_16(723);
+emit_16(659);
+emit_16(724);
+emit_16(660);
+emit_16(724);
+emit_16(659);
+emit_16(724);
+emit_16(660);
+emit_16(725);
+emit_16(661);
+emit_16(725);
+emit_16(660);
+emit_16(725);
+emit_16(661);
+emit_16(726);
+emit_16(662);
+emit_16(726);
+emit_16(661);
+emit_16(726);
+emit_16(662);
+emit_16(727);
+emit_16(663);
+emit_16(727);
+emit_16(662);
+emit_16(727);
+emit_16(663);
+emit_16(728);
+emit_16(664);
+emit_16(728);
+emit_16(663);
+emit_16(728);
+emit_16(664);
+emit_16(729);
+emit_16(665);
+emit_16(729);
+emit_16(664);
+emit_16(729);
+emit_16(665);
+emit_16(730);
+emit_16(666);
+emit_16(730);
+emit_16(665);
+emit_16(730);
+emit_16(666);
+emit_16(731);
+emit_16(667);
+emit_16(731);
+emit_16(666);
+emit_16(731);
+emit_16(667);
+emit_16(732);
+emit_16(668);
+emit_16(732);
+emit_16(667);
+emit_16(732);
+emit_16(668);
+emit_16(733);
+emit_16(669);
+emit_16(733);
+emit_16(668);
+emit_16(733);
+emit_16(669);
+emit_16(734);
+emit_16(670);
+emit_16(734);
+emit_16(669);
+emit_16(734);
+emit_16(670);
+emit_16(735);
+emit_16(671);
+emit_16(735);
+emit_16(670);
+emit_16(735);
+emit_16(671);
+emit_16(736);
+emit_16(672);
+emit_16(736);
+emit_16(671);
+emit_16(736);
+emit_16(672);
+emit_16(737);
+emit_16(673);
+emit_16(737);
+emit_16(672);
+emit_16(737);
+emit_16(673);
+emit_16(738);
+emit_16(674);
+emit_16(738);
+emit_16(673);
+emit_16(738);
+emit_16(674);
+emit_16(739);
+emit_16(675);
+emit_16(739);
+emit_16(674);
+emit_16(739);
+emit_16(675);
+emit_16(740);
+emit_16(676);
+emit_16(740);
+emit_16(675);
+emit_16(740);
+emit_16(676);
+emit_16(741);
+emit_16(677);
+emit_16(741);
+emit_16(676);
+emit_16(741);
+emit_16(677);
+emit_16(742);
+emit_16(678);
+emit_16(742);
+emit_16(677);
+emit_16(742);
+emit_16(678);
+emit_16(743);
+emit_16(679);
+emit_16(743);
+emit_16(678);
+emit_16(743);
+emit_16(679);
+emit_16(744);
+emit_16(680);
+emit_16(744);
+emit_16(679);
+emit_16(744);
+emit_16(680);
+emit_16(745);
+emit_16(681);
+emit_16(745);
+emit_16(680);
+emit_16(745);
+emit_16(681);
+emit_16(746);
+emit_16(682);
+emit_16(746);
+emit_16(681);
+emit_16(746);
+emit_16(682);
+emit_16(747);
+emit_16(683);
+emit_16(747);
+emit_16(682);
+emit_16(747);
+emit_16(683);
+emit_16(748);
+emit_16(684);
+emit_16(748);
+emit_16(683);
+emit_16(748);
+emit_16(684);
+emit_16(749);
+emit_16(685);
+emit_16(749);
+emit_16(684);
+emit_16(749);
+emit_16(685);
+emit_16(750);
+emit_16(686);
+emit_16(750);
+emit_16(685);
+emit_16(750);
+emit_16(686);
+emit_16(751);
+emit_16(687);
+emit_16(751);
+emit_16(686);
+emit_16(751);
+emit_16(687);
+emit_16(752);
+emit_16(688);
+emit_16(752);
+emit_16(687);
+emit_16(752);
+emit_16(688);
+emit_16(753);
+emit_16(689);
+emit_16(753);
+emit_16(688);
+emit_16(753);
+emit_16(689);
+emit_16(754);
+emit_16(690);
+emit_16(754);
+emit_16(689);
+emit_16(754);
+emit_16(690);
+emit_16(755);
+emit_16(691);
+emit_16(755);
+emit_16(690);
+emit_16(755);
+emit_16(691);
+emit_16(756);
+emit_16(692);
+emit_16(756);
+emit_16(691);
+emit_16(756);
+emit_16(692);
+emit_16(757);
+emit_16(693);
+emit_16(757);
+emit_16(692);
+emit_16(757);
+emit_16(693);
+emit_16(758);
+emit_16(694);
+emit_16(758);
+emit_16(693);
+emit_16(758);
+emit_16(694);
+emit_16(759);
+emit_16(695);
+emit_16(759);
+emit_16(694);
+emit_16(759);
+emit_16(695);
+emit_16(760);
+emit_16(696);
+emit_16(760);
+emit_16(695);
+emit_16(760);
+emit_16(696);
+emit_16(761);
+emit_16(697);
+emit_16(761);
+emit_16(696);
+emit_16(761);
+emit_16(697);
+emit_16(762);
+emit_16(698);
+emit_16(762);
+emit_16(697);
+emit_16(762);
+emit_16(698);
+emit_16(763);
+emit_16(699);
+emit_16(763);
+emit_16(698);
+emit_16(763);
+emit_16(699);
+emit_16(764);
+emit_16(700);
+emit_16(764);
+emit_16(699);
+emit_16(764);
+emit_16(700);
+emit_16(765);
+emit_16(701);
+emit_16(765);
+emit_16(700);
+emit_16(765);
+emit_16(701);
+emit_16(766);
+emit_16(702);
+emit_16(766);
+emit_16(701);
+emit_16(766);
+emit_16(702);
+emit_16(767);
+emit_16(703);
+emit_16(767);
+emit_16(702);
+emit_16(768);
+emit_16(704);
+emit_16(769);
+emit_16(705);
+emit_16(769);
+emit_16(704);
+emit_16(769);
+emit_16(705);
+emit_16(770);
+emit_16(706);
+emit_16(770);
+emit_16(705);
+emit_16(770);
+emit_16(706);
+emit_16(771);
+emit_16(707);
+emit_16(771);
+emit_16(706);
+emit_16(771);
+emit_16(707);
+emit_16(772);
+emit_16(708);
+emit_16(772);
+emit_16(707);
+emit_16(772);
+emit_16(708);
+emit_16(773);
+emit_16(709);
+emit_16(773);
+emit_16(708);
+emit_16(773);
+emit_16(709);
+emit_16(774);
+emit_16(710);
+emit_16(774);
+emit_16(709);
+emit_16(774);
+emit_16(710);
+emit_16(775);
+emit_16(711);
+emit_16(775);
+emit_16(710);
+emit_16(775);
+emit_16(711);
+emit_16(776);
+emit_16(712);
+emit_16(776);
+emit_16(711);
+emit_16(776);
+emit_16(712);
+emit_16(777);
+emit_16(713);
+emit_16(777);
+emit_16(712);
+emit_16(777);
+emit_16(713);
+emit_16(778);
+emit_16(714);
+emit_16(778);
+emit_16(713);
+emit_16(778);
+emit_16(714);
+emit_16(779);
+emit_16(715);
+emit_16(779);
+emit_16(714);
+emit_16(779);
+emit_16(715);
+emit_16(780);
+emit_16(716);
+emit_16(780);
+emit_16(715);
+emit_16(780);
+emit_16(716);
+emit_16(781);
+emit_16(717);
+emit_16(781);
+emit_16(716);
+emit_16(781);
+emit_16(717);
+emit_16(782);
+emit_16(718);
+emit_16(782);
+emit_16(717);
+emit_16(782);
+emit_16(718);
+emit_16(783);
+emit_16(719);
+emit_16(783);
+emit_16(718);
+emit_16(783);
+emit_16(719);
+emit_16(784);
+emit_16(720);
+emit_16(784);
+emit_16(719);
+emit_16(784);
+emit_16(720);
+emit_16(785);
+emit_16(721);
+emit_16(785);
+emit_16(720);
+emit_16(785);
+emit_16(721);
+emit_16(786);
+emit_16(722);
+emit_16(786);
+emit_16(721);
+emit_16(786);
+emit_16(722);
+emit_16(787);
+emit_16(723);
+emit_16(787);
+emit_16(722);
+emit_16(787);
+emit_16(723);
+emit_16(788);
+emit_16(724);
+emit_16(788);
+emit_16(723);
+emit_16(788);
+emit_16(724);
+emit_16(789);
+emit_16(725);
+emit_16(789);
+emit_16(724);
+emit_16(789);
+emit_16(725);
+emit_16(790);
+emit_16(726);
+emit_16(790);
+emit_16(725);
+emit_16(790);
+emit_16(726);
+emit_16(791);
+emit_16(727);
+emit_16(791);
+emit_16(726);
+emit_16(791);
+emit_16(727);
+emit_16(792);
+emit_16(728);
+emit_16(792);
+emit_16(727);
+emit_16(792);
+emit_16(728);
+emit_16(793);
+emit_16(729);
+emit_16(793);
+emit_16(728);
+emit_16(793);
+emit_16(729);
+emit_16(794);
+emit_16(730);
+emit_16(794);
+emit_16(729);
+emit_16(794);
+emit_16(730);
+emit_16(795);
+emit_16(731);
+emit_16(795);
+emit_16(730);
+emit_16(795);
+emit_16(731);
+emit_16(796);
+emit_16(732);
+emit_16(796);
+emit_16(731);
+emit_16(796);
+emit_16(732);
+emit_16(797);
+emit_16(733);
+emit_16(797);
+emit_16(732);
+emit_16(797);
+emit_16(733);
+emit_16(798);
+emit_16(734);
+emit_16(798);
+emit_16(733);
+emit_16(798);
+emit_16(734);
+emit_16(799);
+emit_16(735);
+emit_16(799);
+emit_16(734);
+emit_16(799);
+emit_16(735);
+emit_16(800);
+emit_16(736);
+emit_16(800);
+emit_16(735);
+emit_16(800);
+emit_16(736);
+emit_16(801);
+emit_16(737);
+emit_16(801);
+emit_16(736);
+emit_16(801);
+emit_16(737);
+emit_16(802);
+emit_16(738);
+emit_16(802);
+emit_16(737);
+emit_16(802);
+emit_16(738);
+emit_16(803);
+emit_16(739);
+emit_16(803);
+emit_16(738);
+emit_16(803);
+emit_16(739);
+emit_16(804);
+emit_16(740);
+emit_16(804);
+emit_16(739);
+emit_16(804);
+emit_16(740);
+emit_16(805);
+emit_16(741);
+emit_16(805);
+emit_16(740);
+emit_16(805);
+emit_16(741);
+emit_16(806);
+emit_16(742);
+emit_16(806);
+emit_16(741);
+emit_16(806);
+emit_16(742);
+emit_16(807);
+emit_16(743);
+emit_16(807);
+emit_16(742);
+emit_16(807);
+emit_16(743);
+emit_16(808);
+emit_16(744);
+emit_16(808);
+emit_16(743);
+emit_16(808);
+emit_16(744);
+emit_16(809);
+emit_16(745);
+emit_16(809);
+emit_16(744);
+emit_16(809);
+emit_16(745);
+emit_16(810);
+emit_16(746);
+emit_16(810);
+emit_16(745);
+emit_16(810);
+emit_16(746);
+emit_16(811);
+emit_16(747);
+emit_16(811);
+emit_16(746);
+emit_16(811);
+emit_16(747);
+emit_16(812);
+emit_16(748);
+emit_16(812);
+emit_16(747);
+emit_16(812);
+emit_16(748);
+emit_16(813);
+emit_16(749);
+emit_16(813);
+emit_16(748);
+emit_16(813);
+emit_16(749);
+emit_16(814);
+emit_16(750);
+emit_16(814);
+emit_16(749);
+emit_16(814);
+emit_16(750);
+emit_16(815);
+emit_16(751);
+emit_16(815);
+emit_16(750);
+emit_16(815);
+emit_16(751);
+emit_16(816);
+emit_16(752);
+emit_16(816);
+emit_16(751);
+emit_16(816);
+emit_16(752);
+emit_16(817);
+emit_16(753);
+emit_16(817);
+emit_16(752);
+emit_16(817);
+emit_16(753);
+emit_16(818);
+emit_16(754);
+emit_16(818);
+emit_16(753);
+emit_16(818);
+emit_16(754);
+emit_16(819);
+emit_16(755);
+emit_16(819);
+emit_16(754);
+emit_16(819);
+emit_16(755);
+emit_16(820);
+emit_16(756);
+emit_16(820);
+emit_16(755);
+emit_16(820);
+emit_16(756);
+emit_16(821);
+emit_16(757);
+emit_16(821);
+emit_16(756);
+emit_16(821);
+emit_16(757);
+emit_16(822);
+emit_16(758);
+emit_16(822);
+emit_16(757);
+emit_16(822);
+emit_16(758);
+emit_16(823);
+emit_16(759);
+emit_16(823);
+emit_16(758);
+emit_16(823);
+emit_16(759);
+emit_16(824);
+emit_16(760);
+emit_16(824);
+emit_16(759);
+emit_16(824);
+emit_16(760);
+emit_16(825);
+emit_16(761);
+emit_16(825);
+emit_16(760);
+emit_16(825);
+emit_16(761);
+emit_16(826);
+emit_16(762);
+emit_16(826);
+emit_16(761);
+emit_16(826);
+emit_16(762);
+emit_16(827);
+emit_16(763);
+emit_16(827);
+emit_16(762);
+emit_16(827);
+emit_16(763);
+emit_16(828);
+emit_16(764);
+emit_16(828);
+emit_16(763);
+emit_16(828);
+emit_16(764);
+emit_16(829);
+emit_16(765);
+emit_16(829);
+emit_16(764);
+emit_16(829);
+emit_16(765);
+emit_16(830);
+emit_16(766);
+emit_16(830);
+emit_16(765);
+emit_16(830);
+emit_16(766);
+emit_16(831);
+emit_16(767);
+emit_16(831);
+emit_16(766);
+emit_16(832);
+emit_16(768);
+emit_16(833);
+emit_16(769);
+emit_16(833);
+emit_16(768);
+emit_16(833);
+emit_16(769);
+emit_16(834);
+emit_16(770);
+emit_16(834);
+emit_16(769);
+emit_16(834);
+emit_16(770);
+emit_16(835);
+emit_16(771);
+emit_16(835);
+emit_16(770);
+emit_16(835);
+emit_16(771);
+emit_16(836);
+emit_16(772);
+emit_16(836);
+emit_16(771);
+emit_16(836);
+emit_16(772);
+emit_16(837);
+emit_16(773);
+emit_16(837);
+emit_16(772);
+emit_16(837);
+emit_16(773);
+emit_16(838);
+emit_16(774);
+emit_16(838);
+emit_16(773);
+emit_16(838);
+emit_16(774);
+emit_16(839);
+emit_16(775);
+emit_16(839);
+emit_16(774);
+emit_16(839);
+emit_16(775);
+emit_16(840);
+emit_16(776);
+emit_16(840);
+emit_16(775);
+emit_16(840);
+emit_16(776);
+emit_16(841);
+emit_16(777);
+emit_16(841);
+emit_16(776);
+emit_16(841);
+emit_16(777);
+emit_16(842);
+emit_16(778);
+emit_16(842);
+emit_16(777);
+emit_16(842);
+emit_16(778);
+emit_16(843);
+emit_16(779);
+emit_16(843);
+emit_16(778);
+emit_16(843);
+emit_16(779);
+emit_16(844);
+emit_16(780);
+emit_16(844);
+emit_16(779);
+emit_16(844);
+emit_16(780);
+emit_16(845);
+emit_16(781);
+emit_16(845);
+emit_16(780);
+emit_16(845);
+emit_16(781);
+emit_16(846);
+emit_16(782);
+emit_16(846);
+emit_16(781);
+emit_16(846);
+emit_16(782);
+emit_16(847);
+emit_16(783);
+emit_16(847);
+emit_16(782);
+emit_16(847);
+emit_16(783);
+emit_16(848);
+emit_16(784);
+emit_16(848);
+emit_16(783);
+emit_16(848);
+emit_16(784);
+emit_16(849);
+emit_16(785);
+emit_16(849);
+emit_16(784);
+emit_16(849);
+emit_16(785);
+emit_16(850);
+emit_16(786);
+emit_16(850);
+emit_16(785);
+emit_16(850);
+emit_16(786);
+emit_16(851);
+emit_16(787);
+emit_16(851);
+emit_16(786);
+emit_16(851);
+emit_16(787);
+emit_16(852);
+emit_16(788);
+emit_16(852);
+emit_16(787);
+emit_16(852);
+emit_16(788);
+emit_16(853);
+emit_16(789);
+emit_16(853);
+emit_16(788);
+emit_16(853);
+emit_16(789);
+emit_16(854);
+emit_16(790);
+emit_16(854);
+emit_16(789);
+emit_16(854);
+emit_16(790);
+emit_16(855);
+emit_16(791);
+emit_16(855);
+emit_16(790);
+emit_16(855);
+emit_16(791);
+emit_16(856);
+emit_16(792);
+emit_16(856);
+emit_16(791);
+emit_16(856);
+emit_16(792);
+emit_16(857);
+emit_16(793);
+emit_16(857);
+emit_16(792);
+emit_16(857);
+emit_16(793);
+emit_16(858);
+emit_16(794);
+emit_16(858);
+emit_16(793);
+emit_16(858);
+emit_16(794);
+emit_16(859);
+emit_16(795);
+emit_16(859);
+emit_16(794);
+emit_16(859);
+emit_16(795);
+emit_16(860);
+emit_16(796);
+emit_16(860);
+emit_16(795);
+emit_16(860);
+emit_16(796);
+emit_16(861);
+emit_16(797);
+emit_16(861);
+emit_16(796);
+emit_16(861);
+emit_16(797);
+emit_16(862);
+emit_16(798);
+emit_16(862);
+emit_16(797);
+emit_16(862);
+emit_16(798);
+emit_16(863);
+emit_16(799);
+emit_16(863);
+emit_16(798);
+emit_16(863);
+emit_16(799);
+emit_16(864);
+emit_16(800);
+emit_16(864);
+emit_16(799);
+emit_16(864);
+emit_16(800);
+emit_16(865);
+emit_16(801);
+emit_16(865);
+emit_16(800);
+emit_16(865);
+emit_16(801);
+emit_16(866);
+emit_16(802);
+emit_16(866);
+emit_16(801);
+emit_16(866);
+emit_16(802);
+emit_16(867);
+emit_16(803);
+emit_16(867);
+emit_16(802);
+emit_16(867);
+emit_16(803);
+emit_16(868);
+emit_16(804);
+emit_16(868);
+emit_16(803);
+emit_16(868);
+emit_16(804);
+emit_16(869);
+emit_16(805);
+emit_16(869);
+emit_16(804);
+emit_16(869);
+emit_16(805);
+emit_16(870);
+emit_16(806);
+emit_16(870);
+emit_16(805);
+emit_16(870);
+emit_16(806);
+emit_16(871);
+emit_16(807);
+emit_16(871);
+emit_16(806);
+emit_16(871);
+emit_16(807);
+emit_16(872);
+emit_16(808);
+emit_16(872);
+emit_16(807);
+emit_16(872);
+emit_16(808);
+emit_16(873);
+emit_16(809);
+emit_16(873);
+emit_16(808);
+emit_16(873);
+emit_16(809);
+emit_16(874);
+emit_16(810);
+emit_16(874);
+emit_16(809);
+emit_16(874);
+emit_16(810);
+emit_16(875);
+emit_16(811);
+emit_16(875);
+emit_16(810);
+emit_16(875);
+emit_16(811);
+emit_16(876);
+emit_16(812);
+emit_16(876);
+emit_16(811);
+emit_16(876);
+emit_16(812);
+emit_16(877);
+emit_16(813);
+emit_16(877);
+emit_16(812);
+emit_16(877);
+emit_16(813);
+emit_16(878);
+emit_16(814);
+emit_16(878);
+emit_16(813);
+emit_16(878);
+emit_16(814);
+emit_16(879);
+emit_16(815);
+emit_16(879);
+emit_16(814);
+emit_16(879);
+emit_16(815);
+emit_16(880);
+emit_16(816);
+emit_16(880);
+emit_16(815);
+emit_16(880);
+emit_16(816);
+emit_16(881);
+emit_16(817);
+emit_16(881);
+emit_16(816);
+emit_16(881);
+emit_16(817);
+emit_16(882);
+emit_16(818);
+emit_16(882);
+emit_16(817);
+emit_16(882);
+emit_16(818);
+emit_16(883);
+emit_16(819);
+emit_16(883);
+emit_16(818);
+emit_16(883);
+emit_16(819);
+emit_16(884);
+emit_16(820);
+emit_16(884);
+emit_16(819);
+emit_16(884);
+emit_16(820);
+emit_16(885);
+emit_16(821);
+emit_16(885);
+emit_16(820);
+emit_16(885);
+emit_16(821);
+emit_16(886);
+emit_16(822);
+emit_16(886);
+emit_16(821);
+emit_16(886);
+emit_16(822);
+emit_16(887);
+emit_16(823);
+emit_16(887);
+emit_16(822);
+emit_16(887);
+emit_16(823);
+emit_16(888);
+emit_16(824);
+emit_16(888);
+emit_16(823);
+emit_16(888);
+emit_16(824);
+emit_16(889);
+emit_16(825);
+emit_16(889);
+emit_16(824);
+emit_16(889);
+emit_16(825);
+emit_16(890);
+emit_16(826);
+emit_16(890);
+emit_16(825);
+emit_16(890);
+emit_16(826);
+emit_16(891);
+emit_16(827);
+emit_16(891);
+emit_16(826);
+emit_16(891);
+emit_16(827);
+emit_16(892);
+emit_16(828);
+emit_16(892);
+emit_16(827);
+emit_16(892);
+emit_16(828);
+emit_16(893);
+emit_16(829);
+emit_16(893);
+emit_16(828);
+emit_16(893);
+emit_16(829);
+emit_16(894);
+emit_16(830);
+emit_16(894);
+emit_16(829);
+emit_16(894);
+emit_16(830);
+emit_16(895);
+emit_16(831);
+emit_16(895);
+emit_16(830);
+emit_16(896);
+emit_16(832);
+emit_16(897);
+emit_16(833);
+emit_16(897);
+emit_16(832);
+emit_16(897);
+emit_16(833);
+emit_16(898);
+emit_16(834);
+emit_16(898);
+emit_16(833);
+emit_16(898);
+emit_16(834);
+emit_16(899);
+emit_16(835);
+emit_16(899);
+emit_16(834);
+emit_16(899);
+emit_16(835);
+emit_16(900);
+emit_16(836);
+emit_16(900);
+emit_16(835);
+emit_16(900);
+emit_16(836);
+emit_16(901);
+emit_16(837);
+emit_16(901);
+emit_16(836);
+emit_16(901);
+emit_16(837);
+emit_16(902);
+emit_16(838);
+emit_16(902);
+emit_16(837);
+emit_16(902);
+emit_16(838);
+emit_16(903);
+emit_16(839);
+emit_16(903);
+emit_16(838);
+emit_16(903);
+emit_16(839);
+emit_16(904);
+emit_16(840);
+emit_16(904);
+emit_16(839);
+emit_16(904);
+emit_16(840);
+emit_16(905);
+emit_16(841);
+emit_16(905);
+emit_16(840);
+emit_16(905);
+emit_16(841);
+emit_16(906);
+emit_16(842);
+emit_16(906);
+emit_16(841);
+emit_16(906);
+emit_16(842);
+emit_16(907);
+emit_16(843);
+emit_16(907);
+emit_16(842);
+emit_16(907);
+emit_16(843);
+emit_16(908);
+emit_16(844);
+emit_16(908);
+emit_16(843);
+emit_16(908);
+emit_16(844);
+emit_16(909);
+emit_16(845);
+emit_16(909);
+emit_16(844);
+emit_16(909);
+emit_16(845);
+emit_16(910);
+emit_16(846);
+emit_16(910);
+emit_16(845);
+emit_16(910);
+emit_16(846);
+emit_16(911);
+emit_16(847);
+emit_16(911);
+emit_16(846);
+emit_16(911);
+emit_16(847);
+emit_16(912);
+emit_16(848);
+emit_16(912);
+emit_16(847);
+emit_16(912);
+emit_16(848);
+emit_16(913);
+emit_16(849);
+emit_16(913);
+emit_16(848);
+emit_16(913);
+emit_16(849);
+emit_16(914);
+emit_16(850);
+emit_16(914);
+emit_16(849);
+emit_16(914);
+emit_16(850);
+emit_16(915);
+emit_16(851);
+emit_16(915);
+emit_16(850);
+emit_16(915);
+emit_16(851);
+emit_16(916);
+emit_16(852);
+emit_16(916);
+emit_16(851);
+emit_16(916);
+emit_16(852);
+emit_16(917);
+emit_16(853);
+emit_16(917);
+emit_16(852);
+emit_16(917);
+emit_16(853);
+emit_16(918);
+emit_16(854);
+emit_16(918);
+emit_16(853);
+emit_16(918);
+emit_16(854);
+emit_16(919);
+emit_16(855);
+emit_16(919);
+emit_16(854);
+emit_16(919);
+emit_16(855);
+emit_16(920);
+emit_16(856);
+emit_16(920);
+emit_16(855);
+emit_16(920);
+emit_16(856);
+emit_16(921);
+emit_16(857);
+emit_16(921);
+emit_16(856);
+emit_16(921);
+emit_16(857);
+emit_16(922);
+emit_16(858);
+emit_16(922);
+emit_16(857);
+emit_16(922);
+emit_16(858);
+emit_16(923);
+emit_16(859);
+emit_16(923);
+emit_16(858);
+emit_16(923);
+emit_16(859);
+emit_16(924);
+emit_16(860);
+emit_16(924);
+emit_16(859);
+emit_16(924);
+emit_16(860);
+emit_16(925);
+emit_16(861);
+emit_16(925);
+emit_16(860);
+emit_16(925);
+emit_16(861);
+emit_16(926);
+emit_16(862);
+emit_16(926);
+emit_16(861);
+emit_16(926);
+emit_16(862);
+emit_16(927);
+emit_16(863);
+emit_16(927);
+emit_16(862);
+emit_16(927);
+emit_16(863);
+emit_16(928);
+emit_16(864);
+emit_16(928);
+emit_16(863);
+emit_16(928);
+emit_16(864);
+emit_16(929);
+emit_16(865);
+emit_16(929);
+emit_16(864);
+emit_16(929);
+emit_16(865);
+emit_16(930);
+emit_16(866);
+emit_16(930);
+emit_16(865);
+emit_16(930);
+emit_16(866);
+emit_16(931);
+emit_16(867);
+emit_16(931);
+emit_16(866);
+emit_16(931);
+emit_16(867);
+emit_16(932);
+emit_16(868);
+emit_16(932);
+emit_16(867);
+emit_16(932);
+emit_16(868);
+emit_16(933);
+emit_16(869);
+emit_16(933);
+emit_16(868);
+emit_16(933);
+emit_16(869);
+emit_16(934);
+emit_16(870);
+emit_16(934);
+emit_16(869);
+emit_16(934);
+emit_16(870);
+emit_16(935);
+emit_16(871);
+emit_16(935);
+emit_16(870);
+emit_16(935);
+emit_16(871);
+emit_16(936);
+emit_16(872);
+emit_16(936);
+emit_16(871);
+emit_16(936);
+emit_16(872);
+emit_16(937);
+emit_16(873);
+emit_16(937);
+emit_16(872);
+emit_16(937);
+emit_16(873);
+emit_16(938);
+emit_16(874);
+emit_16(938);
+emit_16(873);
+emit_16(938);
+emit_16(874);
+emit_16(939);
+emit_16(875);
+emit_16(939);
+emit_16(874);
+emit_16(939);
+emit_16(875);
+emit_16(940);
+emit_16(876);
+emit_16(940);
+emit_16(875);
+emit_16(940);
+emit_16(876);
+emit_16(941);
+emit_16(877);
+emit_16(941);
+emit_16(876);
+emit_16(941);
+emit_16(877);
+emit_16(942);
+emit_16(878);
+emit_16(942);
+emit_16(877);
+emit_16(942);
+emit_16(878);
+emit_16(943);
+emit_16(879);
+emit_16(943);
+emit_16(878);
+emit_16(943);
+emit_16(879);
+emit_16(944);
+emit_16(880);
+emit_16(944);
+emit_16(879);
+emit_16(944);
+emit_16(880);
+emit_16(945);
+emit_16(881);
+emit_16(945);
+emit_16(880);
+emit_16(945);
+emit_16(881);
+emit_16(946);
+emit_16(882);
+emit_16(946);
+emit_16(881);
+emit_16(946);
+emit_16(882);
+emit_16(947);
+emit_16(883);
+emit_16(947);
+emit_16(882);
+emit_16(947);
+emit_16(883);
+emit_16(948);
+emit_16(884);
+emit_16(948);
+emit_16(883);
+emit_16(948);
+emit_16(884);
+emit_16(949);
+emit_16(885);
+emit_16(949);
+emit_16(884);
+emit_16(949);
+emit_16(885);
+emit_16(950);
+emit_16(886);
+emit_16(950);
+emit_16(885);
+emit_16(950);
+emit_16(886);
+emit_16(951);
+emit_16(887);
+emit_16(951);
+emit_16(886);
+emit_16(951);
+emit_16(887);
+emit_16(952);
+emit_16(888);
+emit_16(952);
+emit_16(887);
+emit_16(952);
+emit_16(888);
+emit_16(953);
+emit_16(889);
+emit_16(953);
+emit_16(888);
+emit_16(953);
+emit_16(889);
+emit_16(954);
+emit_16(890);
+emit_16(954);
+emit_16(889);
+emit_16(954);
+emit_16(890);
+emit_16(955);
+emit_16(891);
+emit_16(955);
+emit_16(890);
+emit_16(955);
+emit_16(891);
+emit_16(956);
+emit_16(892);
+emit_16(956);
+emit_16(891);
+emit_16(956);
+emit_16(892);
+emit_16(957);
+emit_16(893);
+emit_16(957);
+emit_16(892);
+emit_16(957);
+emit_16(893);
+emit_16(958);
+emit_16(894);
+emit_16(958);
+emit_16(893);
+emit_16(958);
+emit_16(894);
+emit_16(959);
+emit_16(895);
+emit_16(959);
+emit_16(894);
+emit_16(960);
+emit_16(896);
+emit_16(961);
+emit_16(897);
+emit_16(961);
+emit_16(896);
+emit_16(961);
+emit_16(897);
+emit_16(962);
+emit_16(898);
+emit_16(962);
+emit_16(897);
+emit_16(962);
+emit_16(898);
+emit_16(963);
+emit_16(899);
+emit_16(963);
+emit_16(898);
+emit_16(963);
+emit_16(899);
+emit_16(964);
+emit_16(900);
+emit_16(964);
+emit_16(899);
+emit_16(964);
+emit_16(900);
+emit_16(965);
+emit_16(901);
+emit_16(965);
+emit_16(900);
+emit_16(965);
+emit_16(901);
+emit_16(966);
+emit_16(902);
+emit_16(966);
+emit_16(901);
+emit_16(966);
+emit_16(902);
+emit_16(967);
+emit_16(903);
+emit_16(967);
+emit_16(902);
+emit_16(967);
+emit_16(903);
+emit_16(968);
+emit_16(904);
+emit_16(968);
+emit_16(903);
+emit_16(968);
+emit_16(904);
+emit_16(969);
+emit_16(905);
+emit_16(969);
+emit_16(904);
+emit_16(969);
+emit_16(905);
+emit_16(970);
+emit_16(906);
+emit_16(970);
+emit_16(905);
+emit_16(970);
+emit_16(906);
+emit_16(971);
+emit_16(907);
+emit_16(971);
+emit_16(906);
+emit_16(971);
+emit_16(907);
+emit_16(972);
+emit_16(908);
+emit_16(972);
+emit_16(907);
+emit_16(972);
+emit_16(908);
+emit_16(973);
+emit_16(909);
+emit_16(973);
+emit_16(908);
+emit_16(973);
+emit_16(909);
+emit_16(974);
+emit_16(910);
+emit_16(974);
+emit_16(909);
+emit_16(974);
+emit_16(910);
+emit_16(975);
+emit_16(911);
+emit_16(975);
+emit_16(910);
+emit_16(975);
+emit_16(911);
+emit_16(976);
+emit_16(912);
+emit_16(976);
+emit_16(911);
+emit_16(976);
+emit_16(912);
+emit_16(977);
+emit_16(913);
+emit_16(977);
+emit_16(912);
+emit_16(977);
+emit_16(913);
+emit_16(978);
+emit_16(914);
+emit_16(978);
+emit_16(913);
+emit_16(978);
+emit_16(914);
+emit_16(979);
+emit_16(915);
+emit_16(979);
+emit_16(914);
+emit_16(979);
+emit_16(915);
+emit_16(980);
+emit_16(916);
+emit_16(980);
+emit_16(915);
+emit_16(980);
+emit_16(916);
+emit_16(981);
+emit_16(917);
+emit_16(981);
+emit_16(916);
+emit_16(981);
+emit_16(917);
+emit_16(982);
+emit_16(918);
+emit_16(982);
+emit_16(917);
+emit_16(982);
+emit_16(918);
+emit_16(983);
+emit_16(919);
+emit_16(983);
+emit_16(918);
+emit_16(983);
+emit_16(919);
+emit_16(984);
+emit_16(920);
+emit_16(984);
+emit_16(919);
+emit_16(984);
+emit_16(920);
+emit_16(985);
+emit_16(921);
+emit_16(985);
+emit_16(920);
+emit_16(985);
+emit_16(921);
+emit_16(986);
+emit_16(922);
+emit_16(986);
+emit_16(921);
+emit_16(986);
+emit_16(922);
+emit_16(987);
+emit_16(923);
+emit_16(987);
+emit_16(922);
+emit_16(987);
+emit_16(923);
+emit_16(988);
+emit_16(924);
+emit_16(988);
+emit_16(923);
+emit_16(988);
+emit_16(924);
+emit_16(989);
+emit_16(925);
+emit_16(989);
+emit_16(924);
+emit_16(989);
+emit_16(925);
+emit_16(990);
+emit_16(926);
+emit_16(990);
+emit_16(925);
+emit_16(990);
+emit_16(926);
+emit_16(991);
+emit_16(927);
+emit_16(991);
+emit_16(926);
+emit_16(991);
+emit_16(927);
+emit_16(992);
+emit_16(928);
+emit_16(992);
+emit_16(927);
+emit_16(992);
+emit_16(928);
+emit_16(993);
+emit_16(929);
+emit_16(993);
+emit_16(928);
+emit_16(993);
+emit_16(929);
+emit_16(994);
+emit_16(930);
+emit_16(994);
+emit_16(929);
+emit_16(994);
+emit_16(930);
+emit_16(995);
+emit_16(931);
+emit_16(995);
+emit_16(930);
+emit_16(995);
+emit_16(931);
+emit_16(996);
+emit_16(932);
+emit_16(996);
+emit_16(931);
+emit_16(996);
+emit_16(932);
+emit_16(997);
+emit_16(933);
+emit_16(997);
+emit_16(932);
+emit_16(997);
+emit_16(933);
+emit_16(998);
+emit_16(934);
+emit_16(998);
+emit_16(933);
+emit_16(998);
+emit_16(934);
+emit_16(999);
+emit_16(935);
+emit_16(999);
+emit_16(934);
+emit_16(999);
+emit_16(935);
+emit_16(1000);
+emit_16(936);
+emit_16(1000);
+emit_16(935);
+emit_16(1000);
+emit_16(936);
+emit_16(1001);
+emit_16(937);
+emit_16(1001);
+emit_16(936);
+emit_16(1001);
+emit_16(937);
+emit_16(1002);
+emit_16(938);
+emit_16(1002);
+emit_16(937);
+emit_16(1002);
+emit_16(938);
+emit_16(1003);
+emit_16(939);
+emit_16(1003);
+emit_16(938);
+emit_16(1003);
+emit_16(939);
+emit_16(1004);
+emit_16(940);
+emit_16(1004);
+emit_16(939);
+emit_16(1004);
+emit_16(940);
+emit_16(1005);
+emit_16(941);
+emit_16(1005);
+emit_16(940);
+emit_16(1005);
+emit_16(941);
+emit_16(1006);
+emit_16(942);
+emit_16(1006);
+emit_16(941);
+emit_16(1006);
+emit_16(942);
+emit_16(1007);
+emit_16(943);
+emit_16(1007);
+emit_16(942);
+emit_16(1007);
+emit_16(943);
+emit_16(1008);
+emit_16(944);
+emit_16(1008);
+emit_16(943);
+emit_16(1008);
+emit_16(944);
+emit_16(1009);
+emit_16(945);
+emit_16(1009);
+emit_16(944);
+emit_16(1009);
+emit_16(945);
+emit_16(1010);
+emit_16(946);
+emit_16(1010);
+emit_16(945);
+emit_16(1010);
+emit_16(946);
+emit_16(1011);
+emit_16(947);
+emit_16(1011);
+emit_16(946);
+emit_16(1011);
+emit_16(947);
+emit_16(1012);
+emit_16(948);
+emit_16(1012);
+emit_16(947);
+emit_16(1012);
+emit_16(948);
+emit_16(1013);
+emit_16(949);
+emit_16(1013);
+emit_16(948);
+emit_16(1013);
+emit_16(949);
+emit_16(1014);
+emit_16(950);
+emit_16(1014);
+emit_16(949);
+emit_16(1014);
+emit_16(950);
+emit_16(1015);
+emit_16(951);
+emit_16(1015);
+emit_16(950);
+emit_16(1015);
+emit_16(951);
+emit_16(1016);
+emit_16(952);
+emit_16(1016);
+emit_16(951);
+emit_16(1016);
+emit_16(952);
+emit_16(1017);
+emit_16(953);
+emit_16(1017);
+emit_16(952);
+emit_16(1017);
+emit_16(953);
+emit_16(1018);
+emit_16(954);
+emit_16(1018);
+emit_16(953);
+emit_16(1018);
+emit_16(954);
+emit_16(1019);
+emit_16(955);
+emit_16(1019);
+emit_16(954);
+emit_16(1019);
+emit_16(955);
+emit_16(1020);
+emit_16(956);
+emit_16(1020);
+emit_16(955);
+emit_16(1020);
+emit_16(956);
+emit_16(1021);
+emit_16(957);
+emit_16(1021);
+emit_16(956);
+emit_16(1021);
+emit_16(957);
+emit_16(1022);
+emit_16(958);
+emit_16(1022);
+emit_16(957);
+emit_16(1022);
+emit_16(958);
+emit_16(1023);
+emit_16(959);
+emit_16(1023);
+emit_16(958);
+emit_16(1024);
+emit_16(960);
+emit_16(1025);
+emit_16(961);
+emit_16(1025);
+emit_16(960);
+emit_16(1025);
+emit_16(961);
+emit_16(1026);
+emit_16(962);
+emit_16(1026);
+emit_16(961);
+emit_16(1026);
+emit_16(962);
+emit_16(1027);
+emit_16(963);
+emit_16(1027);
+emit_16(962);
+emit_16(1027);
+emit_16(963);
+emit_16(1028);
+emit_16(964);
+emit_16(1028);
+emit_16(963);
+emit_16(1028);
+emit_16(964);
+emit_16(1029);
+emit_16(965);
+emit_16(1029);
+emit_16(964);
+emit_16(1029);
+emit_16(965);
+emit_16(1030);
+emit_16(966);
+emit_16(1030);
+emit_16(965);
+emit_16(1030);
+emit_16(966);
+emit_16(1031);
+emit_16(967);
+emit_16(1031);
+emit_16(966);
+emit_16(1031);
+emit_16(967);
+emit_16(1032);
+emit_16(968);
+emit_16(1032);
+emit_16(967);
+emit_16(1032);
+emit_16(968);
+emit_16(1033);
+emit_16(969);
+emit_16(1033);
+emit_16(968);
+emit_16(1033);
+emit_16(969);
+emit_16(1034);
+emit_16(970);
+emit_16(1034);
+emit_16(969);
+emit_16(1034);
+emit_16(970);
+emit_16(1035);
+emit_16(971);
+emit_16(1035);
+emit_16(970);
+emit_16(1035);
+emit_16(971);
+emit_16(1036);
+emit_16(972);
+emit_16(1036);
+emit_16(971);
+emit_16(1036);
+emit_16(972);
+emit_16(1037);
+emit_16(973);
+emit_16(1037);
+emit_16(972);
+emit_16(1037);
+emit_16(973);
+emit_16(1038);
+emit_16(974);
+emit_16(1038);
+emit_16(973);
+emit_16(1038);
+emit_16(974);
+emit_16(1039);
+emit_16(975);
+emit_16(1039);
+emit_16(974);
+emit_16(1039);
+emit_16(975);
+emit_16(1040);
+emit_16(976);
+emit_16(1040);
+emit_16(975);
+emit_16(1040);
+emit_16(976);
+emit_16(1041);
+emit_16(977);
+emit_16(1041);
+emit_16(976);
+emit_16(1041);
+emit_16(977);
+emit_16(1042);
+emit_16(978);
+emit_16(1042);
+emit_16(977);
+emit_16(1042);
+emit_16(978);
+emit_16(1043);
+emit_16(979);
+emit_16(1043);
+emit_16(978);
+emit_16(1043);
+emit_16(979);
+emit_16(1044);
+emit_16(980);
+emit_16(1044);
+emit_16(979);
+emit_16(1044);
+emit_16(980);
+emit_16(1045);
+emit_16(981);
+emit_16(1045);
+emit_16(980);
+emit_16(1045);
+emit_16(981);
+emit_16(1046);
+emit_16(982);
+emit_16(1046);
+emit_16(981);
+emit_16(1046);
+emit_16(982);
+emit_16(1047);
+emit_16(983);
+emit_16(1047);
+emit_16(982);
+emit_16(1047);
+emit_16(983);
+emit_16(1048);
+emit_16(984);
+emit_16(1048);
+emit_16(983);
+emit_16(1048);
+emit_16(984);
+emit_16(1049);
+emit_16(985);
+emit_16(1049);
+emit_16(984);
+emit_16(1049);
+emit_16(985);
+emit_16(1050);
+emit_16(986);
+emit_16(1050);
+emit_16(985);
+emit_16(1050);
+emit_16(986);
+emit_16(1051);
+emit_16(987);
+emit_16(1051);
+emit_16(986);
+emit_16(1051);
+emit_16(987);
+emit_16(1052);
+emit_16(988);
+emit_16(1052);
+emit_16(987);
+emit_16(1052);
+emit_16(988);
+emit_16(1053);
+emit_16(989);
+emit_16(1053);
+emit_16(988);
+emit_16(1053);
+emit_16(989);
+emit_16(1054);
+emit_16(990);
+emit_16(1054);
+emit_16(989);
+emit_16(1054);
+emit_16(990);
+emit_16(1055);
+emit_16(991);
+emit_16(1055);
+emit_16(990);
+emit_16(1055);
+emit_16(991);
+emit_16(1056);
+emit_16(992);
+emit_16(1056);
+emit_16(991);
+emit_16(1056);
+emit_16(992);
+emit_16(1057);
+emit_16(993);
+emit_16(1057);
+emit_16(992);
+emit_16(1057);
+emit_16(993);
+emit_16(1058);
+emit_16(994);
+emit_16(1058);
+emit_16(993);
+emit_16(1058);
+emit_16(994);
+emit_16(1059);
+emit_16(995);
+emit_16(1059);
+emit_16(994);
+emit_16(1059);
+emit_16(995);
+emit_16(1060);
+emit_16(996);
+emit_16(1060);
+emit_16(995);
+emit_16(1060);
+emit_16(996);
+emit_16(1061);
+emit_16(997);
+emit_16(1061);
+emit_16(996);
+emit_16(1061);
+emit_16(997);
+emit_16(1062);
+emit_16(998);
+emit_16(1062);
+emit_16(997);
+emit_16(1062);
+emit_16(998);
+emit_16(1063);
+emit_16(999);
+emit_16(1063);
+emit_16(998);
+emit_16(1063);
+emit_16(999);
+emit_16(1064);
+emit_16(1000);
+emit_16(1064);
+emit_16(999);
+emit_16(1064);
+emit_16(1000);
+emit_16(1065);
+emit_16(1001);
+emit_16(1065);
+emit_16(1000);
+emit_16(1065);
+emit_16(1001);
+emit_16(1066);
+emit_16(1002);
+emit_16(1066);
+emit_16(1001);
+emit_16(1066);
+emit_16(1002);
+emit_16(1067);
+emit_16(1003);
+emit_16(1067);
+emit_16(1002);
+emit_16(1067);
+emit_16(1003);
+emit_16(1068);
+emit_16(1004);
+emit_16(1068);
+emit_16(1003);
+emit_16(1068);
+emit_16(1004);
+emit_16(1069);
+emit_16(1005);
+emit_16(1069);
+emit_16(1004);
+emit_16(1069);
+emit_16(1005);
+emit_16(1070);
+emit_16(1006);
+emit_16(1070);
+emit_16(1005);
+emit_16(1070);
+emit_16(1006);
+emit_16(1071);
+emit_16(1007);
+emit_16(1071);
+emit_16(1006);
+emit_16(1071);
+emit_16(1007);
+emit_16(1072);
+emit_16(1008);
+emit_16(1072);
+emit_16(1007);
+emit_16(1072);
+emit_16(1008);
+emit_16(1073);
+emit_16(1009);
+emit_16(1073);
+emit_16(1008);
+emit_16(1073);
+emit_16(1009);
+emit_16(1074);
+emit_16(1010);
+emit_16(1074);
+emit_16(1009);
+emit_16(1074);
+emit_16(1010);
+emit_16(1075);
+emit_16(1011);
+emit_16(1075);
+emit_16(1010);
+emit_16(1075);
+emit_16(1011);
+emit_16(1076);
+emit_16(1012);
+emit_16(1076);
+emit_16(1011);
+emit_16(1076);
+emit_16(1012);
+emit_16(1077);
+emit_16(1013);
+emit_16(1077);
+emit_16(1012);
+emit_16(1077);
+emit_16(1013);
+emit_16(1078);
+emit_16(1014);
+emit_16(1078);
+emit_16(1013);
+emit_16(1078);
+emit_16(1014);
+emit_16(1079);
+emit_16(1015);
+emit_16(1079);
+emit_16(1014);
+emit_16(1079);
+emit_16(1015);
+emit_16(1080);
+emit_16(1016);
+emit_16(1080);
+emit_16(1015);
+emit_16(1080);
+emit_16(1016);
+emit_16(1081);
+emit_16(1017);
+emit_16(1081);
+emit_16(1016);
+emit_16(1081);
+emit_16(1017);
+emit_16(1082);
+emit_16(1018);
+emit_16(1082);
+emit_16(1017);
+emit_16(1082);
+emit_16(1018);
+emit_16(1083);
+emit_16(1019);
+emit_16(1083);
+emit_16(1018);
+emit_16(1083);
+emit_16(1019);
+emit_16(1084);
+emit_16(1020);
+emit_16(1084);
+emit_16(1019);
+emit_16(1084);
+emit_16(1020);
+emit_16(1085);
+emit_16(1021);
+emit_16(1085);
+emit_16(1020);
+emit_16(1085);
+emit_16(1021);
+emit_16(1086);
+emit_16(1022);
+emit_16(1086);
+emit_16(1021);
+emit_16(1086);
+emit_16(1022);
+emit_16(1087);
+emit_16(1023);
+emit_16(1087);
+emit_16(1022);
+emit_16(1088);
+emit_16(1024);
+emit_16(1089);
+emit_16(1025);
+emit_16(1089);
+emit_16(1024);
+emit_16(1089);
+emit_16(1025);
+emit_16(1090);
+emit_16(1026);
+emit_16(1090);
+emit_16(1025);
+emit_16(1090);
+emit_16(1026);
+emit_16(1091);
+emit_16(1027);
+emit_16(1091);
+emit_16(1026);
+emit_16(1091);
+emit_16(1027);
+emit_16(1092);
+emit_16(1028);
+emit_16(1092);
+emit_16(1027);
+emit_16(1092);
+emit_16(1028);
+emit_16(1093);
+emit_16(1029);
+emit_16(1093);
+emit_16(1028);
+emit_16(1093);
+emit_16(1029);
+emit_16(1094);
+emit_16(1030);
+emit_16(1094);
+emit_16(1029);
+emit_16(1094);
+emit_16(1030);
+emit_16(1095);
+emit_16(1031);
+emit_16(1095);
+emit_16(1030);
+emit_16(1095);
+emit_16(1031);
+emit_16(1096);
+emit_16(1032);
+emit_16(1096);
+emit_16(1031);
+emit_16(1096);
+emit_16(1032);
+emit_16(1097);
+emit_16(1033);
+emit_16(1097);
+emit_16(1032);
+emit_16(1097);
+emit_16(1033);
+emit_16(1098);
+emit_16(1034);
+emit_16(1098);
+emit_16(1033);
+emit_16(1098);
+emit_16(1034);
+emit_16(1099);
+emit_16(1035);
+emit_16(1099);
+emit_16(1034);
+emit_16(1099);
+emit_16(1035);
+emit_16(1100);
+emit_16(1036);
+emit_16(1100);
+emit_16(1035);
+emit_16(1100);
+emit_16(1036);
+emit_16(1101);
+emit_16(1037);
+emit_16(1101);
+emit_16(1036);
+emit_16(1101);
+emit_16(1037);
+emit_16(1102);
+emit_16(1038);
+emit_16(1102);
+emit_16(1037);
+emit_16(1102);
+emit_16(1038);
+emit_16(1103);
+emit_16(1039);
+emit_16(1103);
+emit_16(1038);
+emit_16(1103);
+emit_16(1039);
+emit_16(1104);
+emit_16(1040);
+emit_16(1104);
+emit_16(1039);
+emit_16(1104);
+emit_16(1040);
+emit_16(1105);
+emit_16(1041);
+emit_16(1105);
+emit_16(1040);
+emit_16(1105);
+emit_16(1041);
+emit_16(1106);
+emit_16(1042);
+emit_16(1106);
+emit_16(1041);
+emit_16(1106);
+emit_16(1042);
+emit_16(1107);
+emit_16(1043);
+emit_16(1107);
+emit_16(1042);
+emit_16(1107);
+emit_16(1043);
+emit_16(1108);
+emit_16(1044);
+emit_16(1108);
+emit_16(1043);
+emit_16(1108);
+emit_16(1044);
+emit_16(1109);
+emit_16(1045);
+emit_16(1109);
+emit_16(1044);
+emit_16(1109);
+emit_16(1045);
+emit_16(1110);
+emit_16(1046);
+emit_16(1110);
+emit_16(1045);
+emit_16(1110);
+emit_16(1046);
+emit_16(1111);
+emit_16(1047);
+emit_16(1111);
+emit_16(1046);
+emit_16(1111);
+emit_16(1047);
+emit_16(1112);
+emit_16(1048);
+emit_16(1112);
+emit_16(1047);
+emit_16(1112);
+emit_16(1048);
+emit_16(1113);
+emit_16(1049);
+emit_16(1113);
+emit_16(1048);
+emit_16(1113);
+emit_16(1049);
+emit_16(1114);
+emit_16(1050);
+emit_16(1114);
+emit_16(1049);
+emit_16(1114);
+emit_16(1050);
+emit_16(1115);
+emit_16(1051);
+emit_16(1115);
+emit_16(1050);
+emit_16(1115);
+emit_16(1051);
+emit_16(1116);
+emit_16(1052);
+emit_16(1116);
+emit_16(1051);
+emit_16(1116);
+emit_16(1052);
+emit_16(1117);
+emit_16(1053);
+emit_16(1117);
+emit_16(1052);
+emit_16(1117);
+emit_16(1053);
+emit_16(1118);
+emit_16(1054);
+emit_16(1118);
+emit_16(1053);
+emit_16(1118);
+emit_16(1054);
+emit_16(1119);
+emit_16(1055);
+emit_16(1119);
+emit_16(1054);
+emit_16(1119);
+emit_16(1055);
+emit_16(1120);
+emit_16(1056);
+emit_16(1120);
+emit_16(1055);
+emit_16(1120);
+emit_16(1056);
+emit_16(1121);
+emit_16(1057);
+emit_16(1121);
+emit_16(1056);
+emit_16(1121);
+emit_16(1057);
+emit_16(1122);
+emit_16(1058);
+emit_16(1122);
+emit_16(1057);
+emit_16(1122);
+emit_16(1058);
+emit_16(1123);
+emit_16(1059);
+emit_16(1123);
+emit_16(1058);
+emit_16(1123);
+emit_16(1059);
+emit_16(1124);
+emit_16(1060);
+emit_16(1124);
+emit_16(1059);
+emit_16(1124);
+emit_16(1060);
+emit_16(1125);
+emit_16(1061);
+emit_16(1125);
+emit_16(1060);
+emit_16(1125);
+emit_16(1061);
+emit_16(1126);
+emit_16(1062);
+emit_16(1126);
+emit_16(1061);
+emit_16(1126);
+emit_16(1062);
+emit_16(1127);
+emit_16(1063);
+emit_16(1127);
+emit_16(1062);
+emit_16(1127);
+emit_16(1063);
+emit_16(1128);
+emit_16(1064);
+emit_16(1128);
+emit_16(1063);
+emit_16(1128);
+emit_16(1064);
+emit_16(1129);
+emit_16(1065);
+emit_16(1129);
+emit_16(1064);
+emit_16(1129);
+emit_16(1065);
+emit_16(1130);
+emit_16(1066);
+emit_16(1130);
+emit_16(1065);
+emit_16(1130);
+emit_16(1066);
+emit_16(1131);
+emit_16(1067);
+emit_16(1131);
+emit_16(1066);
+emit_16(1131);
+emit_16(1067);
+emit_16(1132);
+emit_16(1068);
+emit_16(1132);
+emit_16(1067);
+emit_16(1132);
+emit_16(1068);
+emit_16(1133);
+emit_16(1069);
+emit_16(1133);
+emit_16(1068);
+emit_16(1133);
+emit_16(1069);
+emit_16(1134);
+emit_16(1070);
+emit_16(1134);
+emit_16(1069);
+emit_16(1134);
+emit_16(1070);
+emit_16(1135);
+emit_16(1071);
+emit_16(1135);
+emit_16(1070);
+emit_16(1135);
+emit_16(1071);
+emit_16(1136);
+emit_16(1072);
+emit_16(1136);
+emit_16(1071);
+emit_16(1136);
+emit_16(1072);
+emit_16(1137);
+emit_16(1073);
+emit_16(1137);
+emit_16(1072);
+emit_16(1137);
+emit_16(1073);
+emit_16(1138);
+emit_16(1074);
+emit_16(1138);
+emit_16(1073);
+emit_16(1138);
+emit_16(1074);
+emit_16(1139);
+emit_16(1075);
+emit_16(1139);
+emit_16(1074);
+emit_16(1139);
+emit_16(1075);
+emit_16(1140);
+emit_16(1076);
+emit_16(1140);
+emit_16(1075);
+emit_16(1140);
+emit_16(1076);
+emit_16(1141);
+emit_16(1077);
+emit_16(1141);
+emit_16(1076);
+emit_16(1141);
+emit_16(1077);
+emit_16(1142);
+emit_16(1078);
+emit_16(1142);
+emit_16(1077);
+emit_16(1142);
+emit_16(1078);
+emit_16(1143);
+emit_16(1079);
+emit_16(1143);
+emit_16(1078);
+emit_16(1143);
+emit_16(1079);
+emit_16(1144);
+emit_16(1080);
+emit_16(1144);
+emit_16(1079);
+emit_16(1144);
+emit_16(1080);
+emit_16(1145);
+emit_16(1081);
+emit_16(1145);
+emit_16(1080);
+emit_16(1145);
+emit_16(1081);
+emit_16(1146);
+emit_16(1082);
+emit_16(1146);
+emit_16(1081);
+emit_16(1146);
+emit_16(1082);
+emit_16(1147);
+emit_16(1083);
+emit_16(1147);
+emit_16(1082);
+emit_16(1147);
+emit_16(1083);
+emit_16(1148);
+emit_16(1084);
+emit_16(1148);
+emit_16(1083);
+emit_16(1148);
+emit_16(1084);
+emit_16(1149);
+emit_16(1085);
+emit_16(1149);
+emit_16(1084);
+emit_16(1149);
+emit_16(1085);
+emit_16(1150);
+emit_16(1086);
+emit_16(1150);
+emit_16(1085);
+emit_16(1150);
+emit_16(1086);
+emit_16(1151);
+emit_16(1087);
+emit_16(1151);
+emit_16(1086);
+emit_16(1152);
+emit_16(1088);
+emit_16(1153);
+emit_16(1089);
+emit_16(1153);
+emit_16(1088);
+emit_16(1153);
+emit_16(1089);
+emit_16(1154);
+emit_16(1090);
+emit_16(1154);
+emit_16(1089);
+emit_16(1154);
+emit_16(1090);
+emit_16(1155);
+emit_16(1091);
+emit_16(1155);
+emit_16(1090);
+emit_16(1155);
+emit_16(1091);
+emit_16(1156);
+emit_16(1092);
+emit_16(1156);
+emit_16(1091);
+emit_16(1156);
+emit_16(1092);
+emit_16(1157);
+emit_16(1093);
+emit_16(1157);
+emit_16(1092);
+emit_16(1157);
+emit_16(1093);
+emit_16(1158);
+emit_16(1094);
+emit_16(1158);
+emit_16(1093);
+emit_16(1158);
+emit_16(1094);
+emit_16(1159);
+emit_16(1095);
+emit_16(1159);
+emit_16(1094);
+emit_16(1159);
+emit_16(1095);
+emit_16(1160);
+emit_16(1096);
+emit_16(1160);
+emit_16(1095);
+emit_16(1160);
+emit_16(1096);
+emit_16(1161);
+emit_16(1097);
+emit_16(1161);
+emit_16(1096);
+emit_16(1161);
+emit_16(1097);
+emit_16(1162);
+emit_16(1098);
+emit_16(1162);
+emit_16(1097);
+emit_16(1162);
+emit_16(1098);
+emit_16(1163);
+emit_16(1099);
+emit_16(1163);
+emit_16(1098);
+emit_16(1163);
+emit_16(1099);
+emit_16(1164);
+emit_16(1100);
+emit_16(1164);
+emit_16(1099);
+emit_16(1164);
+emit_16(1100);
+emit_16(1165);
+emit_16(1101);
+emit_16(1165);
+emit_16(1100);
+emit_16(1165);
+emit_16(1101);
+emit_16(1166);
+emit_16(1102);
+emit_16(1166);
+emit_16(1101);
+emit_16(1166);
+emit_16(1102);
+emit_16(1167);
+emit_16(1103);
+emit_16(1167);
+emit_16(1102);
+emit_16(1167);
+emit_16(1103);
+emit_16(1168);
+emit_16(1104);
+emit_16(1168);
+emit_16(1103);
+emit_16(1168);
+emit_16(1104);
+emit_16(1169);
+emit_16(1105);
+emit_16(1169);
+emit_16(1104);
+emit_16(1169);
+emit_16(1105);
+emit_16(1170);
+emit_16(1106);
+emit_16(1170);
+emit_16(1105);
+emit_16(1170);
+emit_16(1106);
+emit_16(1171);
+emit_16(1107);
+emit_16(1171);
+emit_16(1106);
+emit_16(1171);
+emit_16(1107);
+emit_16(1172);
+emit_16(1108);
+emit_16(1172);
+emit_16(1107);
+emit_16(1172);
+emit_16(1108);
+emit_16(1173);
+emit_16(1109);
+emit_16(1173);
+emit_16(1108);
+emit_16(1173);
+emit_16(1109);
+emit_16(1174);
+emit_16(1110);
+emit_16(1174);
+emit_16(1109);
+emit_16(1174);
+emit_16(1110);
+emit_16(1175);
+emit_16(1111);
+emit_16(1175);
+emit_16(1110);
+emit_16(1175);
+emit_16(1111);
+emit_16(1176);
+emit_16(1112);
+emit_16(1176);
+emit_16(1111);
+emit_16(1176);
+emit_16(1112);
+emit_16(1177);
+emit_16(1113);
+emit_16(1177);
+emit_16(1112);
+emit_16(1177);
+emit_16(1113);
+emit_16(1178);
+emit_16(1114);
+emit_16(1178);
+emit_16(1113);
+emit_16(1178);
+emit_16(1114);
+emit_16(1179);
+emit_16(1115);
+emit_16(1179);
+emit_16(1114);
+emit_16(1179);
+emit_16(1115);
+emit_16(1180);
+emit_16(1116);
+emit_16(1180);
+emit_16(1115);
+emit_16(1180);
+emit_16(1116);
+emit_16(1181);
+emit_16(1117);
+emit_16(1181);
+emit_16(1116);
+emit_16(1181);
+emit_16(1117);
+emit_16(1182);
+emit_16(1118);
+emit_16(1182);
+emit_16(1117);
+emit_16(1182);
+emit_16(1118);
+emit_16(1183);
+emit_16(1119);
+emit_16(1183);
+emit_16(1118);
+emit_16(1183);
+emit_16(1119);
+emit_16(1184);
+emit_16(1120);
+emit_16(1184);
+emit_16(1119);
+emit_16(1184);
+emit_16(1120);
+emit_16(1185);
+emit_16(1121);
+emit_16(1185);
+emit_16(1120);
+emit_16(1185);
+emit_16(1121);
+emit_16(1186);
+emit_16(1122);
+emit_16(1186);
+emit_16(1121);
+emit_16(1186);
+emit_16(1122);
+emit_16(1187);
+emit_16(1123);
+emit_16(1187);
+emit_16(1122);
+emit_16(1187);
+emit_16(1123);
+emit_16(1188);
+emit_16(1124);
+emit_16(1188);
+emit_16(1123);
+emit_16(1188);
+emit_16(1124);
+emit_16(1189);
+emit_16(1125);
+emit_16(1189);
+emit_16(1124);
+emit_16(1189);
+emit_16(1125);
+emit_16(1190);
+emit_16(1126);
+emit_16(1190);
+emit_16(1125);
+emit_16(1190);
+emit_16(1126);
+emit_16(1191);
+emit_16(1127);
+emit_16(1191);
+emit_16(1126);
+emit_16(1191);
+emit_16(1127);
+emit_16(1192);
+emit_16(1128);
+emit_16(1192);
+emit_16(1127);
+emit_16(1192);
+emit_16(1128);
+emit_16(1193);
+emit_16(1129);
+emit_16(1193);
+emit_16(1128);
+emit_16(1193);
+emit_16(1129);
+emit_16(1194);
+emit_16(1130);
+emit_16(1194);
+emit_16(1129);
+emit_16(1194);
+emit_16(1130);
+emit_16(1195);
+emit_16(1131);
+emit_16(1195);
+emit_16(1130);
+emit_16(1195);
+emit_16(1131);
+emit_16(1196);
+emit_16(1132);
+emit_16(1196);
+emit_16(1131);
+emit_16(1196);
+emit_16(1132);
+emit_16(1197);
+emit_16(1133);
+emit_16(1197);
+emit_16(1132);
+emit_16(1197);
+emit_16(1133);
+emit_16(1198);
+emit_16(1134);
+emit_16(1198);
+emit_16(1133);
+emit_16(1198);
+emit_16(1134);
+emit_16(1199);
+emit_16(1135);
+emit_16(1199);
+emit_16(1134);
+emit_16(1199);
+emit_16(1135);
+emit_16(1200);
+emit_16(1136);
+emit_16(1200);
+emit_16(1135);
+emit_16(1200);
+emit_16(1136);
+emit_16(1201);
+emit_16(1137);
+emit_16(1201);
+emit_16(1136);
+emit_16(1201);
+emit_16(1137);
+emit_16(1202);
+emit_16(1138);
+emit_16(1202);
+emit_16(1137);
+emit_16(1202);
+emit_16(1138);
+emit_16(1203);
+emit_16(1139);
+emit_16(1203);
+emit_16(1138);
+emit_16(1203);
+emit_16(1139);
+emit_16(1204);
+emit_16(1140);
+emit_16(1204);
+emit_16(1139);
+emit_16(1204);
+emit_16(1140);
+emit_16(1205);
+emit_16(1141);
+emit_16(1205);
+emit_16(1140);
+emit_16(1205);
+emit_16(1141);
+emit_16(1206);
+emit_16(1142);
+emit_16(1206);
+emit_16(1141);
+emit_16(1206);
+emit_16(1142);
+emit_16(1207);
+emit_16(1143);
+emit_16(1207);
+emit_16(1142);
+emit_16(1207);
+emit_16(1143);
+emit_16(1208);
+emit_16(1144);
+emit_16(1208);
+emit_16(1143);
+emit_16(1208);
+emit_16(1144);
+emit_16(1209);
+emit_16(1145);
+emit_16(1209);
+emit_16(1144);
+emit_16(1209);
+emit_16(1145);
+emit_16(1210);
+emit_16(1146);
+emit_16(1210);
+emit_16(1145);
+emit_16(1210);
+emit_16(1146);
+emit_16(1211);
+emit_16(1147);
+emit_16(1211);
+emit_16(1146);
+emit_16(1211);
+emit_16(1147);
+emit_16(1212);
+emit_16(1148);
+emit_16(1212);
+emit_16(1147);
+emit_16(1212);
+emit_16(1148);
+emit_16(1213);
+emit_16(1149);
+emit_16(1213);
+emit_16(1148);
+emit_16(1213);
+emit_16(1149);
+emit_16(1214);
+emit_16(1150);
+emit_16(1214);
+emit_16(1149);
+emit_16(1214);
+emit_16(1150);
+emit_16(1215);
+emit_16(1151);
+emit_16(1215);
+emit_16(1150);
+emit_16(1216);
+emit_16(1152);
+emit_16(1217);
+emit_16(1153);
+emit_16(1217);
+emit_16(1152);
+emit_16(1217);
+emit_16(1153);
+emit_16(1218);
+emit_16(1154);
+emit_16(1218);
+emit_16(1153);
+emit_16(1218);
+emit_16(1154);
+emit_16(1219);
+emit_16(1155);
+emit_16(1219);
+emit_16(1154);
+emit_16(1219);
+emit_16(1155);
+emit_16(1220);
+emit_16(1156);
+emit_16(1220);
+emit_16(1155);
+emit_16(1220);
+emit_16(1156);
+emit_16(1221);
+emit_16(1157);
+emit_16(1221);
+emit_16(1156);
+emit_16(1221);
+emit_16(1157);
+emit_16(1222);
+emit_16(1158);
+emit_16(1222);
+emit_16(1157);
+emit_16(1222);
+emit_16(1158);
+emit_16(1223);
+emit_16(1159);
+emit_16(1223);
+emit_16(1158);
+emit_16(1223);
+emit_16(1159);
+emit_16(1224);
+emit_16(1160);
+emit_16(1224);
+emit_16(1159);
+emit_16(1224);
+emit_16(1160);
+emit_16(1225);
+emit_16(1161);
+emit_16(1225);
+emit_16(1160);
+emit_16(1225);
+emit_16(1161);
+emit_16(1226);
+emit_16(1162);
+emit_16(1226);
+emit_16(1161);
+emit_16(1226);
+emit_16(1162);
+emit_16(1227);
+emit_16(1163);
+emit_16(1227);
+emit_16(1162);
+emit_16(1227);
+emit_16(1163);
+emit_16(1228);
+emit_16(1164);
+emit_16(1228);
+emit_16(1163);
+emit_16(1228);
+emit_16(1164);
+emit_16(1229);
+emit_16(1165);
+emit_16(1229);
+emit_16(1164);
+emit_16(1229);
+emit_16(1165);
+emit_16(1230);
+emit_16(1166);
+emit_16(1230);
+emit_16(1165);
+emit_16(1230);
+emit_16(1166);
+emit_16(1231);
+emit_16(1167);
+emit_16(1231);
+emit_16(1166);
+emit_16(1231);
+emit_16(1167);
+emit_16(1232);
+emit_16(1168);
+emit_16(1232);
+emit_16(1167);
+emit_16(1232);
+emit_16(1168);
+emit_16(1233);
+emit_16(1169);
+emit_16(1233);
+emit_16(1168);
+emit_16(1233);
+emit_16(1169);
+emit_16(1234);
+emit_16(1170);
+emit_16(1234);
+emit_16(1169);
+emit_16(1234);
+emit_16(1170);
+emit_16(1235);
+emit_16(1171);
+emit_16(1235);
+emit_16(1170);
+emit_16(1235);
+emit_16(1171);
+emit_16(1236);
+emit_16(1172);
+emit_16(1236);
+emit_16(1171);
+emit_16(1236);
+emit_16(1172);
+emit_16(1237);
+emit_16(1173);
+emit_16(1237);
+emit_16(1172);
+emit_16(1237);
+emit_16(1173);
+emit_16(1238);
+emit_16(1174);
+emit_16(1238);
+emit_16(1173);
+emit_16(1238);
+emit_16(1174);
+emit_16(1239);
+emit_16(1175);
+emit_16(1239);
+emit_16(1174);
+emit_16(1239);
+emit_16(1175);
+emit_16(1240);
+emit_16(1176);
+emit_16(1240);
+emit_16(1175);
+emit_16(1240);
+emit_16(1176);
+emit_16(1241);
+emit_16(1177);
+emit_16(1241);
+emit_16(1176);
+emit_16(1241);
+emit_16(1177);
+emit_16(1242);
+emit_16(1178);
+emit_16(1242);
+emit_16(1177);
+emit_16(1242);
+emit_16(1178);
+emit_16(1243);
+emit_16(1179);
+emit_16(1243);
+emit_16(1178);
+emit_16(1243);
+emit_16(1179);
+emit_16(1244);
+emit_16(1180);
+emit_16(1244);
+emit_16(1179);
+emit_16(1244);
+emit_16(1180);
+emit_16(1245);
+emit_16(1181);
+emit_16(1245);
+emit_16(1180);
+emit_16(1245);
+emit_16(1181);
+emit_16(1246);
+emit_16(1182);
+emit_16(1246);
+emit_16(1181);
+emit_16(1246);
+emit_16(1182);
+emit_16(1247);
+emit_16(1183);
+emit_16(1247);
+emit_16(1182);
+emit_16(1247);
+emit_16(1183);
+emit_16(1248);
+emit_16(1184);
+emit_16(1248);
+emit_16(1183);
+emit_16(1248);
+emit_16(1184);
+emit_16(1249);
+emit_16(1185);
+emit_16(1249);
+emit_16(1184);
+emit_16(1249);
+emit_16(1185);
+emit_16(1250);
+emit_16(1186);
+emit_16(1250);
+emit_16(1185);
+emit_16(1250);
+emit_16(1186);
+emit_16(1251);
+emit_16(1187);
+emit_16(1251);
+emit_16(1186);
+emit_16(1251);
+emit_16(1187);
+emit_16(1252);
+emit_16(1188);
+emit_16(1252);
+emit_16(1187);
+emit_16(1252);
+emit_16(1188);
+emit_16(1253);
+emit_16(1189);
+emit_16(1253);
+emit_16(1188);
+emit_16(1253);
+emit_16(1189);
+emit_16(1254);
+emit_16(1190);
+emit_16(1254);
+emit_16(1189);
+emit_16(1254);
+emit_16(1190);
+emit_16(1255);
+emit_16(1191);
+emit_16(1255);
+emit_16(1190);
+emit_16(1255);
+emit_16(1191);
+emit_16(1256);
+emit_16(1192);
+emit_16(1256);
+emit_16(1191);
+emit_16(1256);
+emit_16(1192);
+emit_16(1257);
+emit_16(1193);
+emit_16(1257);
+emit_16(1192);
+emit_16(1257);
+emit_16(1193);
+emit_16(1258);
+emit_16(1194);
+emit_16(1258);
+emit_16(1193);
+emit_16(1258);
+emit_16(1194);
+emit_16(1259);
+emit_16(1195);
+emit_16(1259);
+emit_16(1194);
+emit_16(1259);
+emit_16(1195);
+emit_16(1260);
+emit_16(1196);
+emit_16(1260);
+emit_16(1195);
+emit_16(1260);
+emit_16(1196);
+emit_16(1261);
+emit_16(1197);
+emit_16(1261);
+emit_16(1196);
+emit_16(1261);
+emit_16(1197);
+emit_16(1262);
+emit_16(1198);
+emit_16(1262);
+emit_16(1197);
+emit_16(1262);
+emit_16(1198);
+emit_16(1263);
+emit_16(1199);
+emit_16(1263);
+emit_16(1198);
+emit_16(1263);
+emit_16(1199);
+emit_16(1264);
+emit_16(1200);
+emit_16(1264);
+emit_16(1199);
+emit_16(1264);
+emit_16(1200);
+emit_16(1265);
+emit_16(1201);
+emit_16(1265);
+emit_16(1200);
+emit_16(1265);
+emit_16(1201);
+emit_16(1266);
+emit_16(1202);
+emit_16(1266);
+emit_16(1201);
+emit_16(1266);
+emit_16(1202);
+emit_16(1267);
+emit_16(1203);
+emit_16(1267);
+emit_16(1202);
+emit_16(1267);
+emit_16(1203);
+emit_16(1268);
+emit_16(1204);
+emit_16(1268);
+emit_16(1203);
+emit_16(1268);
+emit_16(1204);
+emit_16(1269);
+emit_16(1205);
+emit_16(1269);
+emit_16(1204);
+emit_16(1269);
+emit_16(1205);
+emit_16(1270);
+emit_16(1206);
+emit_16(1270);
+emit_16(1205);
+emit_16(1270);
+emit_16(1206);
+emit_16(1271);
+emit_16(1207);
+emit_16(1271);
+emit_16(1206);
+emit_16(1271);
+emit_16(1207);
+emit_16(1272);
+emit_16(1208);
+emit_16(1272);
+emit_16(1207);
+emit_16(1272);
+emit_16(1208);
+emit_16(1273);
+emit_16(1209);
+emit_16(1273);
+emit_16(1208);
+emit_16(1273);
+emit_16(1209);
+emit_16(1274);
+emit_16(1210);
+emit_16(1274);
+emit_16(1209);
+emit_16(1274);
+emit_16(1210);
+emit_16(1275);
+emit_16(1211);
+emit_16(1275);
+emit_16(1210);
+emit_16(1275);
+emit_16(1211);
+emit_16(1276);
+emit_16(1212);
+emit_16(1276);
+emit_16(1211);
+emit_16(1276);
+emit_16(1212);
+emit_16(1277);
+emit_16(1213);
+emit_16(1277);
+emit_16(1212);
+emit_16(1277);
+emit_16(1213);
+emit_16(1278);
+emit_16(1214);
+emit_16(1278);
+emit_16(1213);
+emit_16(1278);
+emit_16(1214);
+emit_16(1279);
+emit_16(1215);
+emit_16(1279);
+emit_16(1214);
+emit_16(1280);
+emit_16(1216);
+emit_16(1281);
+emit_16(1217);
+emit_16(1281);
+emit_16(1216);
+emit_16(1281);
+emit_16(1217);
+emit_16(1282);
+emit_16(1218);
+emit_16(1282);
+emit_16(1217);
+emit_16(1282);
+emit_16(1218);
+emit_16(1283);
+emit_16(1219);
+emit_16(1283);
+emit_16(1218);
+emit_16(1283);
+emit_16(1219);
+emit_16(1284);
+emit_16(1220);
+emit_16(1284);
+emit_16(1219);
+emit_16(1284);
+emit_16(1220);
+emit_16(1285);
+emit_16(1221);
+emit_16(1285);
+emit_16(1220);
+emit_16(1285);
+emit_16(1221);
+emit_16(1286);
+emit_16(1222);
+emit_16(1286);
+emit_16(1221);
+emit_16(1286);
+emit_16(1222);
+emit_16(1287);
+emit_16(1223);
+emit_16(1287);
+emit_16(1222);
+emit_16(1287);
+emit_16(1223);
+emit_16(1288);
+emit_16(1224);
+emit_16(1288);
+emit_16(1223);
+emit_16(1288);
+emit_16(1224);
+emit_16(1289);
+emit_16(1225);
+emit_16(1289);
+emit_16(1224);
+emit_16(1289);
+emit_16(1225);
+emit_16(1290);
+emit_16(1226);
+emit_16(1290);
+emit_16(1225);
+emit_16(1290);
+emit_16(1226);
+emit_16(1291);
+emit_16(1227);
+emit_16(1291);
+emit_16(1226);
+emit_16(1291);
+emit_16(1227);
+emit_16(1292);
+emit_16(1228);
+emit_16(1292);
+emit_16(1227);
+emit_16(1292);
+emit_16(1228);
+emit_16(1293);
+emit_16(1229);
+emit_16(1293);
+emit_16(1228);
+emit_16(1293);
+emit_16(1229);
+emit_16(1294);
+emit_16(1230);
+emit_16(1294);
+emit_16(1229);
+emit_16(1294);
+emit_16(1230);
+emit_16(1295);
+emit_16(1231);
+emit_16(1295);
+emit_16(1230);
+emit_16(1295);
+emit_16(1231);
+emit_16(1296);
+emit_16(1232);
+emit_16(1296);
+emit_16(1231);
+emit_16(1296);
+emit_16(1232);
+emit_16(1297);
+emit_16(1233);
+emit_16(1297);
+emit_16(1232);
+emit_16(1297);
+emit_16(1233);
+emit_16(1298);
+emit_16(1234);
+emit_16(1298);
+emit_16(1233);
+emit_16(1298);
+emit_16(1234);
+emit_16(1299);
+emit_16(1235);
+emit_16(1299);
+emit_16(1234);
+emit_16(1299);
+emit_16(1235);
+emit_16(1300);
+emit_16(1236);
+emit_16(1300);
+emit_16(1235);
+emit_16(1300);
+emit_16(1236);
+emit_16(1301);
+emit_16(1237);
+emit_16(1301);
+emit_16(1236);
+emit_16(1301);
+emit_16(1237);
+emit_16(1302);
+emit_16(1238);
+emit_16(1302);
+emit_16(1237);
+emit_16(1302);
+emit_16(1238);
+emit_16(1303);
+emit_16(1239);
+emit_16(1303);
+emit_16(1238);
+emit_16(1303);
+emit_16(1239);
+emit_16(1304);
+emit_16(1240);
+emit_16(1304);
+emit_16(1239);
+emit_16(1304);
+emit_16(1240);
+emit_16(1305);
+emit_16(1241);
+emit_16(1305);
+emit_16(1240);
+emit_16(1305);
+emit_16(1241);
+emit_16(1306);
+emit_16(1242);
+emit_16(1306);
+emit_16(1241);
+emit_16(1306);
+emit_16(1242);
+emit_16(1307);
+emit_16(1243);
+emit_16(1307);
+emit_16(1242);
+emit_16(1307);
+emit_16(1243);
+emit_16(1308);
+emit_16(1244);
+emit_16(1308);
+emit_16(1243);
+emit_16(1308);
+emit_16(1244);
+emit_16(1309);
+emit_16(1245);
+emit_16(1309);
+emit_16(1244);
+emit_16(1309);
+emit_16(1245);
+emit_16(1310);
+emit_16(1246);
+emit_16(1310);
+emit_16(1245);
+emit_16(1310);
+emit_16(1246);
+emit_16(1311);
+emit_16(1247);
+emit_16(1311);
+emit_16(1246);
+emit_16(1311);
+emit_16(1247);
+emit_16(1312);
+emit_16(1248);
+emit_16(1312);
+emit_16(1247);
+emit_16(1312);
+emit_16(1248);
+emit_16(1313);
+emit_16(1249);
+emit_16(1313);
+emit_16(1248);
+emit_16(1313);
+emit_16(1249);
+emit_16(1314);
+emit_16(1250);
+emit_16(1314);
+emit_16(1249);
+emit_16(1314);
+emit_16(1250);
+emit_16(1315);
+emit_16(1251);
+emit_16(1315);
+emit_16(1250);
+emit_16(1315);
+emit_16(1251);
+emit_16(1316);
+emit_16(1252);
+emit_16(1316);
+emit_16(1251);
+emit_16(1316);
+emit_16(1252);
+emit_16(1317);
+emit_16(1253);
+emit_16(1317);
+emit_16(1252);
+emit_16(1317);
+emit_16(1253);
+emit_16(1318);
+emit_16(1254);
+emit_16(1318);
+emit_16(1253);
+emit_16(1318);
+emit_16(1254);
+emit_16(1319);
+emit_16(1255);
+emit_16(1319);
+emit_16(1254);
+emit_16(1319);
+emit_16(1255);
+emit_16(1320);
+emit_16(1256);
+emit_16(1320);
+emit_16(1255);
+emit_16(1320);
+emit_16(1256);
+emit_16(1321);
+emit_16(1257);
+emit_16(1321);
+emit_16(1256);
+emit_16(1321);
+emit_16(1257);
+emit_16(1322);
+emit_16(1258);
+emit_16(1322);
+emit_16(1257);
+emit_16(1322);
+emit_16(1258);
+emit_16(1323);
+emit_16(1259);
+emit_16(1323);
+emit_16(1258);
+emit_16(1323);
+emit_16(1259);
+emit_16(1324);
+emit_16(1260);
+emit_16(1324);
+emit_16(1259);
+emit_16(1324);
+emit_16(1260);
+emit_16(1325);
+emit_16(1261);
+emit_16(1325);
+emit_16(1260);
+emit_16(1325);
+emit_16(1261);
+emit_16(1326);
+emit_16(1262);
+emit_16(1326);
+emit_16(1261);
+emit_16(1326);
+emit_16(1262);
+emit_16(1327);
+emit_16(1263);
+emit_16(1327);
+emit_16(1262);
+emit_16(1327);
+emit_16(1263);
+emit_16(1328);
+emit_16(1264);
+emit_16(1328);
+emit_16(1263);
+emit_16(1328);
+emit_16(1264);
+emit_16(1329);
+emit_16(1265);
+emit_16(1329);
+emit_16(1264);
+emit_16(1329);
+emit_16(1265);
+emit_16(1330);
+emit_16(1266);
+emit_16(1330);
+emit_16(1265);
+emit_16(1330);
+emit_16(1266);
+emit_16(1331);
+emit_16(1267);
+emit_16(1331);
+emit_16(1266);
+emit_16(1331);
+emit_16(1267);
+emit_16(1332);
+emit_16(1268);
+emit_16(1332);
+emit_16(1267);
+emit_16(1332);
+emit_16(1268);
+emit_16(1333);
+emit_16(1269);
+emit_16(1333);
+emit_16(1268);
+emit_16(1333);
+emit_16(1269);
+emit_16(1334);
+emit_16(1270);
+emit_16(1334);
+emit_16(1269);
+emit_16(1334);
+emit_16(1270);
+emit_16(1335);
+emit_16(1271);
+emit_16(1335);
+emit_16(1270);
+emit_16(1335);
+emit_16(1271);
+emit_16(1336);
+emit_16(1272);
+emit_16(1336);
+emit_16(1271);
+emit_16(1336);
+emit_16(1272);
+emit_16(1337);
+emit_16(1273);
+emit_16(1337);
+emit_16(1272);
+emit_16(1337);
+emit_16(1273);
+emit_16(1338);
+emit_16(1274);
+emit_16(1338);
+emit_16(1273);
+emit_16(1338);
+emit_16(1274);
+emit_16(1339);
+emit_16(1275);
+emit_16(1339);
+emit_16(1274);
+emit_16(1339);
+emit_16(1275);
+emit_16(1340);
+emit_16(1276);
+emit_16(1340);
+emit_16(1275);
+emit_16(1340);
+emit_16(1276);
+emit_16(1341);
+emit_16(1277);
+emit_16(1341);
+emit_16(1276);
+emit_16(1341);
+emit_16(1277);
+emit_16(1342);
+emit_16(1278);
+emit_16(1342);
+emit_16(1277);
+emit_16(1342);
+emit_16(1278);
+emit_16(1343);
+emit_16(1279);
+emit_16(1343);
+emit_16(1278);
+emit_16(1344);
+emit_16(1280);
+emit_16(1345);
+emit_16(1281);
+emit_16(1345);
+emit_16(1280);
+emit_16(1345);
+emit_16(1281);
+emit_16(1346);
+emit_16(1282);
+emit_16(1346);
+emit_16(1281);
+emit_16(1346);
+emit_16(1282);
+emit_16(1347);
+emit_16(1283);
+emit_16(1347);
+emit_16(1282);
+emit_16(1347);
+emit_16(1283);
+emit_16(1348);
+emit_16(1284);
+emit_16(1348);
+emit_16(1283);
+emit_16(1348);
+emit_16(1284);
+emit_16(1349);
+emit_16(1285);
+emit_16(1349);
+emit_16(1284);
+emit_16(1349);
+emit_16(1285);
+emit_16(1350);
+emit_16(1286);
+emit_16(1350);
+emit_16(1285);
+emit_16(1350);
+emit_16(1286);
+emit_16(1351);
+emit_16(1287);
+emit_16(1351);
+emit_16(1286);
+emit_16(1351);
+emit_16(1287);
+emit_16(1352);
+emit_16(1288);
+emit_16(1352);
+emit_16(1287);
+emit_16(1352);
+emit_16(1288);
+emit_16(1353);
+emit_16(1289);
+emit_16(1353);
+emit_16(1288);
+emit_16(1353);
+emit_16(1289);
+emit_16(1354);
+emit_16(1290);
+emit_16(1354);
+emit_16(1289);
+emit_16(1354);
+emit_16(1290);
+emit_16(1355);
+emit_16(1291);
+emit_16(1355);
+emit_16(1290);
+emit_16(1355);
+emit_16(1291);
+emit_16(1356);
+emit_16(1292);
+emit_16(1356);
+emit_16(1291);
+emit_16(1356);
+emit_16(1292);
+emit_16(1357);
+emit_16(1293);
+emit_16(1357);
+emit_16(1292);
+emit_16(1357);
+emit_16(1293);
+emit_16(1358);
+emit_16(1294);
+emit_16(1358);
+emit_16(1293);
+emit_16(1358);
+emit_16(1294);
+emit_16(1359);
+emit_16(1295);
+emit_16(1359);
+emit_16(1294);
+emit_16(1359);
+emit_16(1295);
+emit_16(1360);
+emit_16(1296);
+emit_16(1360);
+emit_16(1295);
+emit_16(1360);
+emit_16(1296);
+emit_16(1361);
+emit_16(1297);
+emit_16(1361);
+emit_16(1296);
+emit_16(1361);
+emit_16(1297);
+emit_16(1362);
+emit_16(1298);
+emit_16(1362);
+emit_16(1297);
+emit_16(1362);
+emit_16(1298);
+emit_16(1363);
+emit_16(1299);
+emit_16(1363);
+emit_16(1298);
+emit_16(1363);
+emit_16(1299);
+emit_16(1364);
+emit_16(1300);
+emit_16(1364);
+emit_16(1299);
+emit_16(1364);
+emit_16(1300);
+emit_16(1365);
+emit_16(1301);
+emit_16(1365);
+emit_16(1300);
+emit_16(1365);
+emit_16(1301);
+emit_16(1366);
+emit_16(1302);
+emit_16(1366);
+emit_16(1301);
+emit_16(1366);
+emit_16(1302);
+emit_16(1367);
+emit_16(1303);
+emit_16(1367);
+emit_16(1302);
+emit_16(1367);
+emit_16(1303);
+emit_16(1368);
+emit_16(1304);
+emit_16(1368);
+emit_16(1303);
+emit_16(1368);
+emit_16(1304);
+emit_16(1369);
+emit_16(1305);
+emit_16(1369);
+emit_16(1304);
+emit_16(1369);
+emit_16(1305);
+emit_16(1370);
+emit_16(1306);
+emit_16(1370);
+emit_16(1305);
+emit_16(1370);
+emit_16(1306);
+emit_16(1371);
+emit_16(1307);
+emit_16(1371);
+emit_16(1306);
+emit_16(1371);
+emit_16(1307);
+emit_16(1372);
+emit_16(1308);
+emit_16(1372);
+emit_16(1307);
+emit_16(1372);
+emit_16(1308);
+emit_16(1373);
+emit_16(1309);
+emit_16(1373);
+emit_16(1308);
+emit_16(1373);
+emit_16(1309);
+emit_16(1374);
+emit_16(1310);
+emit_16(1374);
+emit_16(1309);
+emit_16(1374);
+emit_16(1310);
+emit_16(1375);
+emit_16(1311);
+emit_16(1375);
+emit_16(1310);
+emit_16(1375);
+emit_16(1311);
+emit_16(1376);
+emit_16(1312);
+emit_16(1376);
+emit_16(1311);
+emit_16(1376);
+emit_16(1312);
+emit_16(1377);
+emit_16(1313);
+emit_16(1377);
+emit_16(1312);
+emit_16(1377);
+emit_16(1313);
+emit_16(1378);
+emit_16(1314);
+emit_16(1378);
+emit_16(1313);
+emit_16(1378);
+emit_16(1314);
+emit_16(1379);
+emit_16(1315);
+emit_16(1379);
+emit_16(1314);
+emit_16(1379);
+emit_16(1315);
+emit_16(1380);
+emit_16(1316);
+emit_16(1380);
+emit_16(1315);
+emit_16(1380);
+emit_16(1316);
+emit_16(1381);
+emit_16(1317);
+emit_16(1381);
+emit_16(1316);
+emit_16(1381);
+emit_16(1317);
+emit_16(1382);
+emit_16(1318);
+emit_16(1382);
+emit_16(1317);
+emit_16(1382);
+emit_16(1318);
+emit_16(1383);
+emit_16(1319);
+emit_16(1383);
+emit_16(1318);
+emit_16(1383);
+emit_16(1319);
+emit_16(1384);
+emit_16(1320);
+emit_16(1384);
+emit_16(1319);
+emit_16(1384);
+emit_16(1320);
+emit_16(1385);
+emit_16(1321);
+emit_16(1385);
+emit_16(1320);
+emit_16(1385);
+emit_16(1321);
+emit_16(1386);
+emit_16(1322);
+emit_16(1386);
+emit_16(1321);
+emit_16(1386);
+emit_16(1322);
+emit_16(1387);
+emit_16(1323);
+emit_16(1387);
+emit_16(1322);
+emit_16(1387);
+emit_16(1323);
+emit_16(1388);
+emit_16(1324);
+emit_16(1388);
+emit_16(1323);
+emit_16(1388);
+emit_16(1324);
+emit_16(1389);
+emit_16(1325);
+emit_16(1389);
+emit_16(1324);
+emit_16(1389);
+emit_16(1325);
+emit_16(1390);
+emit_16(1326);
+emit_16(1390);
+emit_16(1325);
+emit_16(1390);
+emit_16(1326);
+emit_16(1391);
+emit_16(1327);
+emit_16(1391);
+emit_16(1326);
+emit_16(1391);
+emit_16(1327);
+emit_16(1392);
+emit_16(1328);
+emit_16(1392);
+emit_16(1327);
+emit_16(1392);
+emit_16(1328);
+emit_16(1393);
+emit_16(1329);
+emit_16(1393);
+emit_16(1328);
+emit_16(1393);
+emit_16(1329);
+emit_16(1394);
+emit_16(1330);
+emit_16(1394);
+emit_16(1329);
+emit_16(1394);
+emit_16(1330);
+emit_16(1395);
+emit_16(1331);
+emit_16(1395);
+emit_16(1330);
+emit_16(1395);
+emit_16(1331);
+emit_16(1396);
+emit_16(1332);
+emit_16(1396);
+emit_16(1331);
+emit_16(1396);
+emit_16(1332);
+emit_16(1397);
+emit_16(1333);
+emit_16(1397);
+emit_16(1332);
+emit_16(1397);
+emit_16(1333);
+emit_16(1398);
+emit_16(1334);
+emit_16(1398);
+emit_16(1333);
+emit_16(1398);
+emit_16(1334);
+emit_16(1399);
+emit_16(1335);
+emit_16(1399);
+emit_16(1334);
+emit_16(1399);
+emit_16(1335);
+emit_16(1400);
+emit_16(1336);
+emit_16(1400);
+emit_16(1335);
+emit_16(1400);
+emit_16(1336);
+emit_16(1401);
+emit_16(1337);
+emit_16(1401);
+emit_16(1336);
+emit_16(1401);
+emit_16(1337);
+emit_16(1402);
+emit_16(1338);
+emit_16(1402);
+emit_16(1337);
+emit_16(1402);
+emit_16(1338);
+emit_16(1403);
+emit_16(1339);
+emit_16(1403);
+emit_16(1338);
+emit_16(1403);
+emit_16(1339);
+emit_16(1404);
+emit_16(1340);
+emit_16(1404);
+emit_16(1339);
+emit_16(1404);
+emit_16(1340);
+emit_16(1405);
+emit_16(1341);
+emit_16(1405);
+emit_16(1340);
+emit_16(1405);
+emit_16(1341);
+emit_16(1406);
+emit_16(1342);
+emit_16(1406);
+emit_16(1341);
+emit_16(1406);
+emit_16(1342);
+emit_16(1407);
+emit_16(1343);
+emit_16(1407);
+emit_16(1342);
+emit_16(1408);
+emit_16(1344);
+emit_16(1409);
+emit_16(1345);
+emit_16(1409);
+emit_16(1344);
+emit_16(1409);
+emit_16(1345);
+emit_16(1410);
+emit_16(1346);
+emit_16(1410);
+emit_16(1345);
+emit_16(1410);
+emit_16(1346);
+emit_16(1411);
+emit_16(1347);
+emit_16(1411);
+emit_16(1346);
+emit_16(1411);
+emit_16(1347);
+emit_16(1412);
+emit_16(1348);
+emit_16(1412);
+emit_16(1347);
+emit_16(1412);
+emit_16(1348);
+emit_16(1413);
+emit_16(1349);
+emit_16(1413);
+emit_16(1348);
+emit_16(1413);
+emit_16(1349);
+emit_16(1414);
+emit_16(1350);
+emit_16(1414);
+emit_16(1349);
+emit_16(1414);
+emit_16(1350);
+emit_16(1415);
+emit_16(1351);
+emit_16(1415);
+emit_16(1350);
+emit_16(1415);
+emit_16(1351);
+emit_16(1416);
+emit_16(1352);
+emit_16(1416);
+emit_16(1351);
+emit_16(1416);
+emit_16(1352);
+emit_16(1417);
+emit_16(1353);
+emit_16(1417);
+emit_16(1352);
+emit_16(1417);
+emit_16(1353);
+emit_16(1418);
+emit_16(1354);
+emit_16(1418);
+emit_16(1353);
+emit_16(1418);
+emit_16(1354);
+emit_16(1419);
+emit_16(1355);
+emit_16(1419);
+emit_16(1354);
+emit_16(1419);
+emit_16(1355);
+emit_16(1420);
+emit_16(1356);
+emit_16(1420);
+emit_16(1355);
+emit_16(1420);
+emit_16(1356);
+emit_16(1421);
+emit_16(1357);
+emit_16(1421);
+emit_16(1356);
+emit_16(1421);
+emit_16(1357);
+emit_16(1422);
+emit_16(1358);
+emit_16(1422);
+emit_16(1357);
+emit_16(1422);
+emit_16(1358);
+emit_16(1423);
+emit_16(1359);
+emit_16(1423);
+emit_16(1358);
+emit_16(1423);
+emit_16(1359);
+emit_16(1424);
+emit_16(1360);
+emit_16(1424);
+emit_16(1359);
+emit_16(1424);
+emit_16(1360);
+emit_16(1425);
+emit_16(1361);
+emit_16(1425);
+emit_16(1360);
+emit_16(1425);
+emit_16(1361);
+emit_16(1426);
+emit_16(1362);
+emit_16(1426);
+emit_16(1361);
+emit_16(1426);
+emit_16(1362);
+emit_16(1427);
+emit_16(1363);
+emit_16(1427);
+emit_16(1362);
+emit_16(1427);
+emit_16(1363);
+emit_16(1428);
+emit_16(1364);
+emit_16(1428);
+emit_16(1363);
+emit_16(1428);
+emit_16(1364);
+emit_16(1429);
+emit_16(1365);
+emit_16(1429);
+emit_16(1364);
+emit_16(1429);
+emit_16(1365);
+emit_16(1430);
+emit_16(1366);
+emit_16(1430);
+emit_16(1365);
+emit_16(1430);
+emit_16(1366);
+emit_16(1431);
+emit_16(1367);
+emit_16(1431);
+emit_16(1366);
+emit_16(1431);
+emit_16(1367);
+emit_16(1432);
+emit_16(1368);
+emit_16(1432);
+emit_16(1367);
+emit_16(1432);
+emit_16(1368);
+emit_16(1433);
+emit_16(1369);
+emit_16(1433);
+emit_16(1368);
+emit_16(1433);
+emit_16(1369);
+emit_16(1434);
+emit_16(1370);
+emit_16(1434);
+emit_16(1369);
+emit_16(1434);
+emit_16(1370);
+emit_16(1435);
+emit_16(1371);
+emit_16(1435);
+emit_16(1370);
+emit_16(1435);
+emit_16(1371);
+emit_16(1436);
+emit_16(1372);
+emit_16(1436);
+emit_16(1371);
+emit_16(1436);
+emit_16(1372);
+emit_16(1437);
+emit_16(1373);
+emit_16(1437);
+emit_16(1372);
+emit_16(1437);
+emit_16(1373);
+emit_16(1438);
+emit_16(1374);
+emit_16(1438);
+emit_16(1373);
+emit_16(1438);
+emit_16(1374);
+emit_16(1439);
+emit_16(1375);
+emit_16(1439);
+emit_16(1374);
+emit_16(1439);
+emit_16(1375);
+emit_16(1440);
+emit_16(1376);
+emit_16(1440);
+emit_16(1375);
+emit_16(1440);
+emit_16(1376);
+emit_16(1441);
+emit_16(1377);
+emit_16(1441);
+emit_16(1376);
+emit_16(1441);
+emit_16(1377);
+emit_16(1442);
+emit_16(1378);
+emit_16(1442);
+emit_16(1377);
+emit_16(1442);
+emit_16(1378);
+emit_16(1443);
+emit_16(1379);
+emit_16(1443);
+emit_16(1378);
+emit_16(1443);
+emit_16(1379);
+emit_16(1444);
+emit_16(1380);
+emit_16(1444);
+emit_16(1379);
+emit_16(1444);
+emit_16(1380);
+emit_16(1445);
+emit_16(1381);
+emit_16(1445);
+emit_16(1380);
+emit_16(1445);
+emit_16(1381);
+emit_16(1446);
+emit_16(1382);
+emit_16(1446);
+emit_16(1381);
+emit_16(1446);
+emit_16(1382);
+emit_16(1447);
+emit_16(1383);
+emit_16(1447);
+emit_16(1382);
+emit_16(1447);
+emit_16(1383);
+emit_16(1448);
+emit_16(1384);
+emit_16(1448);
+emit_16(1383);
+emit_16(1448);
+emit_16(1384);
+emit_16(1449);
+emit_16(1385);
+emit_16(1449);
+emit_16(1384);
+emit_16(1449);
+emit_16(1385);
+emit_16(1450);
+emit_16(1386);
+emit_16(1450);
+emit_16(1385);
+emit_16(1450);
+emit_16(1386);
+emit_16(1451);
+emit_16(1387);
+emit_16(1451);
+emit_16(1386);
+emit_16(1451);
+emit_16(1387);
+emit_16(1452);
+emit_16(1388);
+emit_16(1452);
+emit_16(1387);
+emit_16(1452);
+emit_16(1388);
+emit_16(1453);
+emit_16(1389);
+emit_16(1453);
+emit_16(1388);
+emit_16(1453);
+emit_16(1389);
+emit_16(1454);
+emit_16(1390);
+emit_16(1454);
+emit_16(1389);
+emit_16(1454);
+emit_16(1390);
+emit_16(1455);
+emit_16(1391);
+emit_16(1455);
+emit_16(1390);
+emit_16(1455);
+emit_16(1391);
+emit_16(1456);
+emit_16(1392);
+emit_16(1456);
+emit_16(1391);
+emit_16(1456);
+emit_16(1392);
+emit_16(1457);
+emit_16(1393);
+emit_16(1457);
+emit_16(1392);
+emit_16(1457);
+emit_16(1393);
+emit_16(1458);
+emit_16(1394);
+emit_16(1458);
+emit_16(1393);
+emit_16(1458);
+emit_16(1394);
+emit_16(1459);
+emit_16(1395);
+emit_16(1459);
+emit_16(1394);
+emit_16(1459);
+emit_16(1395);
+emit_16(1460);
+emit_16(1396);
+emit_16(1460);
+emit_16(1395);
+emit_16(1460);
+emit_16(1396);
+emit_16(1461);
+emit_16(1397);
+emit_16(1461);
+emit_16(1396);
+emit_16(1461);
+emit_16(1397);
+emit_16(1462);
+emit_16(1398);
+emit_16(1462);
+emit_16(1397);
+emit_16(1462);
+emit_16(1398);
+emit_16(1463);
+emit_16(1399);
+emit_16(1463);
+emit_16(1398);
+emit_16(1463);
+emit_16(1399);
+emit_16(1464);
+emit_16(1400);
+emit_16(1464);
+emit_16(1399);
+emit_16(1464);
+emit_16(1400);
+emit_16(1465);
+emit_16(1401);
+emit_16(1465);
+emit_16(1400);
+emit_16(1465);
+emit_16(1401);
+emit_16(1466);
+emit_16(1402);
+emit_16(1466);
+emit_16(1401);
+emit_16(1466);
+emit_16(1402);
+emit_16(1467);
+emit_16(1403);
+emit_16(1467);
+emit_16(1402);
+emit_16(1467);
+emit_16(1403);
+emit_16(1468);
+emit_16(1404);
+emit_16(1468);
+emit_16(1403);
+emit_16(1468);
+emit_16(1404);
+emit_16(1469);
+emit_16(1405);
+emit_16(1469);
+emit_16(1404);
+emit_16(1469);
+emit_16(1405);
+emit_16(1470);
+emit_16(1406);
+emit_16(1470);
+emit_16(1405);
+emit_16(1470);
+emit_16(1406);
+emit_16(1471);
+emit_16(1407);
+emit_16(1471);
+emit_16(1406);
+emit_16(1472);
+emit_16(1408);
+emit_16(1473);
+emit_16(1409);
+emit_16(1473);
+emit_16(1408);
+emit_16(1473);
+emit_16(1409);
+emit_16(1474);
+emit_16(1410);
+emit_16(1474);
+emit_16(1409);
+emit_16(1474);
+emit_16(1410);
+emit_16(1475);
+emit_16(1411);
+emit_16(1475);
+emit_16(1410);
+emit_16(1475);
+emit_16(1411);
+emit_16(1476);
+emit_16(1412);
+emit_16(1476);
+emit_16(1411);
+emit_16(1476);
+emit_16(1412);
+emit_16(1477);
+emit_16(1413);
+emit_16(1477);
+emit_16(1412);
+emit_16(1477);
+emit_16(1413);
+emit_16(1478);
+emit_16(1414);
+emit_16(1478);
+emit_16(1413);
+emit_16(1478);
+emit_16(1414);
+emit_16(1479);
+emit_16(1415);
+emit_16(1479);
+emit_16(1414);
+emit_16(1479);
+emit_16(1415);
+emit_16(1480);
+emit_16(1416);
+emit_16(1480);
+emit_16(1415);
+emit_16(1480);
+emit_16(1416);
+emit_16(1481);
+emit_16(1417);
+emit_16(1481);
+emit_16(1416);
+emit_16(1481);
+emit_16(1417);
+emit_16(1482);
+emit_16(1418);
+emit_16(1482);
+emit_16(1417);
+emit_16(1482);
+emit_16(1418);
+emit_16(1483);
+emit_16(1419);
+emit_16(1483);
+emit_16(1418);
+emit_16(1483);
+emit_16(1419);
+emit_16(1484);
+emit_16(1420);
+emit_16(1484);
+emit_16(1419);
+emit_16(1484);
+emit_16(1420);
+emit_16(1485);
+emit_16(1421);
+emit_16(1485);
+emit_16(1420);
+emit_16(1485);
+emit_16(1421);
+emit_16(1486);
+emit_16(1422);
+emit_16(1486);
+emit_16(1421);
+emit_16(1486);
+emit_16(1422);
+emit_16(1487);
+emit_16(1423);
+emit_16(1487);
+emit_16(1422);
+emit_16(1487);
+emit_16(1423);
+emit_16(1488);
+emit_16(1424);
+emit_16(1488);
+emit_16(1423);
+emit_16(1488);
+emit_16(1424);
+emit_16(1489);
+emit_16(1425);
+emit_16(1489);
+emit_16(1424);
+emit_16(1489);
+emit_16(1425);
+emit_16(1490);
+emit_16(1426);
+emit_16(1490);
+emit_16(1425);
+emit_16(1490);
+emit_16(1426);
+emit_16(1491);
+emit_16(1427);
+emit_16(1491);
+emit_16(1426);
+emit_16(1491);
+emit_16(1427);
+emit_16(1492);
+emit_16(1428);
+emit_16(1492);
+emit_16(1427);
+emit_16(1492);
+emit_16(1428);
+emit_16(1493);
+emit_16(1429);
+emit_16(1493);
+emit_16(1428);
+emit_16(1493);
+emit_16(1429);
+emit_16(1494);
+emit_16(1430);
+emit_16(1494);
+emit_16(1429);
+emit_16(1494);
+emit_16(1430);
+emit_16(1495);
+emit_16(1431);
+emit_16(1495);
+emit_16(1430);
+emit_16(1495);
+emit_16(1431);
+emit_16(1496);
+emit_16(1432);
+emit_16(1496);
+emit_16(1431);
+emit_16(1496);
+emit_16(1432);
+emit_16(1497);
+emit_16(1433);
+emit_16(1497);
+emit_16(1432);
+emit_16(1497);
+emit_16(1433);
+emit_16(1498);
+emit_16(1434);
+emit_16(1498);
+emit_16(1433);
+emit_16(1498);
+emit_16(1434);
+emit_16(1499);
+emit_16(1435);
+emit_16(1499);
+emit_16(1434);
+emit_16(1499);
+emit_16(1435);
+emit_16(1500);
+emit_16(1436);
+emit_16(1500);
+emit_16(1435);
+emit_16(1500);
+emit_16(1436);
+emit_16(1501);
+emit_16(1437);
+emit_16(1501);
+emit_16(1436);
+emit_16(1501);
+emit_16(1437);
+emit_16(1502);
+emit_16(1438);
+emit_16(1502);
+emit_16(1437);
+emit_16(1502);
+emit_16(1438);
+emit_16(1503);
+emit_16(1439);
+emit_16(1503);
+emit_16(1438);
+emit_16(1503);
+emit_16(1439);
+emit_16(1504);
+emit_16(1440);
+emit_16(1504);
+emit_16(1439);
+emit_16(1504);
+emit_16(1440);
+emit_16(1505);
+emit_16(1441);
+emit_16(1505);
+emit_16(1440);
+emit_16(1505);
+emit_16(1441);
+emit_16(1506);
+emit_16(1442);
+emit_16(1506);
+emit_16(1441);
+emit_16(1506);
+emit_16(1442);
+emit_16(1507);
+emit_16(1443);
+emit_16(1507);
+emit_16(1442);
+emit_16(1507);
+emit_16(1443);
+emit_16(1508);
+emit_16(1444);
+emit_16(1508);
+emit_16(1443);
+emit_16(1508);
+emit_16(1444);
+emit_16(1509);
+emit_16(1445);
+emit_16(1509);
+emit_16(1444);
+emit_16(1509);
+emit_16(1445);
+emit_16(1510);
+emit_16(1446);
+emit_16(1510);
+emit_16(1445);
+emit_16(1510);
+emit_16(1446);
+emit_16(1511);
+emit_16(1447);
+emit_16(1511);
+emit_16(1446);
+emit_16(1511);
+emit_16(1447);
+emit_16(1512);
+emit_16(1448);
+emit_16(1512);
+emit_16(1447);
+emit_16(1512);
+emit_16(1448);
+emit_16(1513);
+emit_16(1449);
+emit_16(1513);
+emit_16(1448);
+emit_16(1513);
+emit_16(1449);
+emit_16(1514);
+emit_16(1450);
+emit_16(1514);
+emit_16(1449);
+emit_16(1514);
+emit_16(1450);
+emit_16(1515);
+emit_16(1451);
+emit_16(1515);
+emit_16(1450);
+emit_16(1515);
+emit_16(1451);
+emit_16(1516);
+emit_16(1452);
+emit_16(1516);
+emit_16(1451);
+emit_16(1516);
+emit_16(1452);
+emit_16(1517);
+emit_16(1453);
+emit_16(1517);
+emit_16(1452);
+emit_16(1517);
+emit_16(1453);
+emit_16(1518);
+emit_16(1454);
+emit_16(1518);
+emit_16(1453);
+emit_16(1518);
+emit_16(1454);
+emit_16(1519);
+emit_16(1455);
+emit_16(1519);
+emit_16(1454);
+emit_16(1519);
+emit_16(1455);
+emit_16(1520);
+emit_16(1456);
+emit_16(1520);
+emit_16(1455);
+emit_16(1520);
+emit_16(1456);
+emit_16(1521);
+emit_16(1457);
+emit_16(1521);
+emit_16(1456);
+emit_16(1521);
+emit_16(1457);
+emit_16(1522);
+emit_16(1458);
+emit_16(1522);
+emit_16(1457);
+emit_16(1522);
+emit_16(1458);
+emit_16(1523);
+emit_16(1459);
+emit_16(1523);
+emit_16(1458);
+emit_16(1523);
+emit_16(1459);
+emit_16(1524);
+emit_16(1460);
+emit_16(1524);
+emit_16(1459);
+emit_16(1524);
+emit_16(1460);
+emit_16(1525);
+emit_16(1461);
+emit_16(1525);
+emit_16(1460);
+emit_16(1525);
+emit_16(1461);
+emit_16(1526);
+emit_16(1462);
+emit_16(1526);
+emit_16(1461);
+emit_16(1526);
+emit_16(1462);
+emit_16(1527);
+emit_16(1463);
+emit_16(1527);
+emit_16(1462);
+emit_16(1527);
+emit_16(1463);
+emit_16(1528);
+emit_16(1464);
+emit_16(1528);
+emit_16(1463);
+emit_16(1528);
+emit_16(1464);
+emit_16(1529);
+emit_16(1465);
+emit_16(1529);
+emit_16(1464);
+emit_16(1529);
+emit_16(1465);
+emit_16(1530);
+emit_16(1466);
+emit_16(1530);
+emit_16(1465);
+emit_16(1530);
+emit_16(1466);
+emit_16(1531);
+emit_16(1467);
+emit_16(1531);
+emit_16(1466);
+emit_16(1531);
+emit_16(1467);
+emit_16(1532);
+emit_16(1468);
+emit_16(1532);
+emit_16(1467);
+emit_16(1532);
+emit_16(1468);
+emit_16(1533);
+emit_16(1469);
+emit_16(1533);
+emit_16(1468);
+emit_16(1533);
+emit_16(1469);
+emit_16(1534);
+emit_16(1470);
+emit_16(1534);
+emit_16(1469);
+emit_16(1534);
+emit_16(1470);
+emit_16(1535);
+emit_16(1471);
+emit_16(1535);
+emit_16(1470);
+emit_16(1536);
+emit_16(1472);
+emit_16(1537);
+emit_16(1473);
+emit_16(1537);
+emit_16(1472);
+emit_16(1537);
+emit_16(1473);
+emit_16(1538);
+emit_16(1474);
+emit_16(1538);
+emit_16(1473);
+emit_16(1538);
+emit_16(1474);
+emit_16(1539);
+emit_16(1475);
+emit_16(1539);
+emit_16(1474);
+emit_16(1539);
+emit_16(1475);
+emit_16(1540);
+emit_16(1476);
+emit_16(1540);
+emit_16(1475);
+emit_16(1540);
+emit_16(1476);
+emit_16(1541);
+emit_16(1477);
+emit_16(1541);
+emit_16(1476);
+emit_16(1541);
+emit_16(1477);
+emit_16(1542);
+emit_16(1478);
+emit_16(1542);
+emit_16(1477);
+emit_16(1542);
+emit_16(1478);
+emit_16(1543);
+emit_16(1479);
+emit_16(1543);
+emit_16(1478);
+emit_16(1543);
+emit_16(1479);
+emit_16(1544);
+emit_16(1480);
+emit_16(1544);
+emit_16(1479);
+emit_16(1544);
+emit_16(1480);
+emit_16(1545);
+emit_16(1481);
+emit_16(1545);
+emit_16(1480);
+emit_16(1545);
+emit_16(1481);
+emit_16(1546);
+emit_16(1482);
+emit_16(1546);
+emit_16(1481);
+emit_16(1546);
+emit_16(1482);
+emit_16(1547);
+emit_16(1483);
+emit_16(1547);
+emit_16(1482);
+emit_16(1547);
+emit_16(1483);
+emit_16(1548);
+emit_16(1484);
+emit_16(1548);
+emit_16(1483);
+emit_16(1548);
+emit_16(1484);
+emit_16(1549);
+emit_16(1485);
+emit_16(1549);
+emit_16(1484);
+emit_16(1549);
+emit_16(1485);
+emit_16(1550);
+emit_16(1486);
+emit_16(1550);
+emit_16(1485);
+emit_16(1550);
+emit_16(1486);
+emit_16(1551);
+emit_16(1487);
+emit_16(1551);
+emit_16(1486);
+emit_16(1551);
+emit_16(1487);
+emit_16(1552);
+emit_16(1488);
+emit_16(1552);
+emit_16(1487);
+emit_16(1552);
+emit_16(1488);
+emit_16(1553);
+emit_16(1489);
+emit_16(1553);
+emit_16(1488);
+emit_16(1553);
+emit_16(1489);
+emit_16(1554);
+emit_16(1490);
+emit_16(1554);
+emit_16(1489);
+emit_16(1554);
+emit_16(1490);
+emit_16(1555);
+emit_16(1491);
+emit_16(1555);
+emit_16(1490);
+emit_16(1555);
+emit_16(1491);
+emit_16(1556);
+emit_16(1492);
+emit_16(1556);
+emit_16(1491);
+emit_16(1556);
+emit_16(1492);
+emit_16(1557);
+emit_16(1493);
+emit_16(1557);
+emit_16(1492);
+emit_16(1557);
+emit_16(1493);
+emit_16(1558);
+emit_16(1494);
+emit_16(1558);
+emit_16(1493);
+emit_16(1558);
+emit_16(1494);
+emit_16(1559);
+emit_16(1495);
+emit_16(1559);
+emit_16(1494);
+emit_16(1559);
+emit_16(1495);
+emit_16(1560);
+emit_16(1496);
+emit_16(1560);
+emit_16(1495);
+emit_16(1560);
+emit_16(1496);
+emit_16(1561);
+emit_16(1497);
+emit_16(1561);
+emit_16(1496);
+emit_16(1561);
+emit_16(1497);
+emit_16(1562);
+emit_16(1498);
+emit_16(1562);
+emit_16(1497);
+emit_16(1562);
+emit_16(1498);
+emit_16(1563);
+emit_16(1499);
+emit_16(1563);
+emit_16(1498);
+emit_16(1563);
+emit_16(1499);
+emit_16(1564);
+emit_16(1500);
+emit_16(1564);
+emit_16(1499);
+emit_16(1564);
+emit_16(1500);
+emit_16(1565);
+emit_16(1501);
+emit_16(1565);
+emit_16(1500);
+emit_16(1565);
+emit_16(1501);
+emit_16(1566);
+emit_16(1502);
+emit_16(1566);
+emit_16(1501);
+emit_16(1566);
+emit_16(1502);
+emit_16(1567);
+emit_16(1503);
+emit_16(1567);
+emit_16(1502);
+emit_16(1567);
+emit_16(1503);
+emit_16(1568);
+emit_16(1504);
+emit_16(1568);
+emit_16(1503);
+emit_16(1568);
+emit_16(1504);
+emit_16(1569);
+emit_16(1505);
+emit_16(1569);
+emit_16(1504);
+emit_16(1569);
+emit_16(1505);
+emit_16(1570);
+emit_16(1506);
+emit_16(1570);
+emit_16(1505);
+emit_16(1570);
+emit_16(1506);
+emit_16(1571);
+emit_16(1507);
+emit_16(1571);
+emit_16(1506);
+emit_16(1571);
+emit_16(1507);
+emit_16(1572);
+emit_16(1508);
+emit_16(1572);
+emit_16(1507);
+emit_16(1572);
+emit_16(1508);
+emit_16(1573);
+emit_16(1509);
+emit_16(1573);
+emit_16(1508);
+emit_16(1573);
+emit_16(1509);
+emit_16(1574);
+emit_16(1510);
+emit_16(1574);
+emit_16(1509);
+emit_16(1574);
+emit_16(1510);
+emit_16(1575);
+emit_16(1511);
+emit_16(1575);
+emit_16(1510);
+emit_16(1575);
+emit_16(1511);
+emit_16(1576);
+emit_16(1512);
+emit_16(1576);
+emit_16(1511);
+emit_16(1576);
+emit_16(1512);
+emit_16(1577);
+emit_16(1513);
+emit_16(1577);
+emit_16(1512);
+emit_16(1577);
+emit_16(1513);
+emit_16(1578);
+emit_16(1514);
+emit_16(1578);
+emit_16(1513);
+emit_16(1578);
+emit_16(1514);
+emit_16(1579);
+emit_16(1515);
+emit_16(1579);
+emit_16(1514);
+emit_16(1579);
+emit_16(1515);
+emit_16(1580);
+emit_16(1516);
+emit_16(1580);
+emit_16(1515);
+emit_16(1580);
+emit_16(1516);
+emit_16(1581);
+emit_16(1517);
+emit_16(1581);
+emit_16(1516);
+emit_16(1581);
+emit_16(1517);
+emit_16(1582);
+emit_16(1518);
+emit_16(1582);
+emit_16(1517);
+emit_16(1582);
+emit_16(1518);
+emit_16(1583);
+emit_16(1519);
+emit_16(1583);
+emit_16(1518);
+emit_16(1583);
+emit_16(1519);
+emit_16(1584);
+emit_16(1520);
+emit_16(1584);
+emit_16(1519);
+emit_16(1584);
+emit_16(1520);
+emit_16(1585);
+emit_16(1521);
+emit_16(1585);
+emit_16(1520);
+emit_16(1585);
+emit_16(1521);
+emit_16(1586);
+emit_16(1522);
+emit_16(1586);
+emit_16(1521);
+emit_16(1586);
+emit_16(1522);
+emit_16(1587);
+emit_16(1523);
+emit_16(1587);
+emit_16(1522);
+emit_16(1587);
+emit_16(1523);
+emit_16(1588);
+emit_16(1524);
+emit_16(1588);
+emit_16(1523);
+emit_16(1588);
+emit_16(1524);
+emit_16(1589);
+emit_16(1525);
+emit_16(1589);
+emit_16(1524);
+emit_16(1589);
+emit_16(1525);
+emit_16(1590);
+emit_16(1526);
+emit_16(1590);
+emit_16(1525);
+emit_16(1590);
+emit_16(1526);
+emit_16(1591);
+emit_16(1527);
+emit_16(1591);
+emit_16(1526);
+emit_16(1591);
+emit_16(1527);
+emit_16(1592);
+emit_16(1528);
+emit_16(1592);
+emit_16(1527);
+emit_16(1592);
+emit_16(1528);
+emit_16(1593);
+emit_16(1529);
+emit_16(1593);
+emit_16(1528);
+emit_16(1593);
+emit_16(1529);
+emit_16(1594);
+emit_16(1530);
+emit_16(1594);
+emit_16(1529);
+emit_16(1594);
+emit_16(1530);
+emit_16(1595);
+emit_16(1531);
+emit_16(1595);
+emit_16(1530);
+emit_16(1595);
+emit_16(1531);
+emit_16(1596);
+emit_16(1532);
+emit_16(1596);
+emit_16(1531);
+emit_16(1596);
+emit_16(1532);
+emit_16(1597);
+emit_16(1533);
+emit_16(1597);
+emit_16(1532);
+emit_16(1597);
+emit_16(1533);
+emit_16(1598);
+emit_16(1534);
+emit_16(1598);
+emit_16(1533);
+emit_16(1598);
+emit_16(1534);
+emit_16(1599);
+emit_16(1535);
+emit_16(1599);
+emit_16(1534);
+emit_16(1600);
+emit_16(1536);
+emit_16(1601);
+emit_16(1537);
+emit_16(1601);
+emit_16(1536);
+emit_16(1601);
+emit_16(1537);
+emit_16(1602);
+emit_16(1538);
+emit_16(1602);
+emit_16(1537);
+emit_16(1602);
+emit_16(1538);
+emit_16(1603);
+emit_16(1539);
+emit_16(1603);
+emit_16(1538);
+emit_16(1603);
+emit_16(1539);
+emit_16(1604);
+emit_16(1540);
+emit_16(1604);
+emit_16(1539);
+emit_16(1604);
+emit_16(1540);
+emit_16(1605);
+emit_16(1541);
+emit_16(1605);
+emit_16(1540);
+emit_16(1605);
+emit_16(1541);
+emit_16(1606);
+emit_16(1542);
+emit_16(1606);
+emit_16(1541);
+emit_16(1606);
+emit_16(1542);
+emit_16(1607);
+emit_16(1543);
+emit_16(1607);
+emit_16(1542);
+emit_16(1607);
+emit_16(1543);
+emit_16(1608);
+emit_16(1544);
+emit_16(1608);
+emit_16(1543);
+emit_16(1608);
+emit_16(1544);
+emit_16(1609);
+emit_16(1545);
+emit_16(1609);
+emit_16(1544);
+emit_16(1609);
+emit_16(1545);
+emit_16(1610);
+emit_16(1546);
+emit_16(1610);
+emit_16(1545);
+emit_16(1610);
+emit_16(1546);
+emit_16(1611);
+emit_16(1547);
+emit_16(1611);
+emit_16(1546);
+emit_16(1611);
+emit_16(1547);
+emit_16(1612);
+emit_16(1548);
+emit_16(1612);
+emit_16(1547);
+emit_16(1612);
+emit_16(1548);
+emit_16(1613);
+emit_16(1549);
+emit_16(1613);
+emit_16(1548);
+emit_16(1613);
+emit_16(1549);
+emit_16(1614);
+emit_16(1550);
+emit_16(1614);
+emit_16(1549);
+emit_16(1614);
+emit_16(1550);
+emit_16(1615);
+emit_16(1551);
+emit_16(1615);
+emit_16(1550);
+emit_16(1615);
+emit_16(1551);
+emit_16(1616);
+emit_16(1552);
+emit_16(1616);
+emit_16(1551);
+emit_16(1616);
+emit_16(1552);
+emit_16(1617);
+emit_16(1553);
+emit_16(1617);
+emit_16(1552);
+emit_16(1617);
+emit_16(1553);
+emit_16(1618);
+emit_16(1554);
+emit_16(1618);
+emit_16(1553);
+emit_16(1618);
+emit_16(1554);
+emit_16(1619);
+emit_16(1555);
+emit_16(1619);
+emit_16(1554);
+emit_16(1619);
+emit_16(1555);
+emit_16(1620);
+emit_16(1556);
+emit_16(1620);
+emit_16(1555);
+emit_16(1620);
+emit_16(1556);
+emit_16(1621);
+emit_16(1557);
+emit_16(1621);
+emit_16(1556);
+emit_16(1621);
+emit_16(1557);
+emit_16(1622);
+emit_16(1558);
+emit_16(1622);
+emit_16(1557);
+emit_16(1622);
+emit_16(1558);
+emit_16(1623);
+emit_16(1559);
+emit_16(1623);
+emit_16(1558);
+emit_16(1623);
+emit_16(1559);
+emit_16(1624);
+emit_16(1560);
+emit_16(1624);
+emit_16(1559);
+emit_16(1624);
+emit_16(1560);
+emit_16(1625);
+emit_16(1561);
+emit_16(1625);
+emit_16(1560);
+emit_16(1625);
+emit_16(1561);
+emit_16(1626);
+emit_16(1562);
+emit_16(1626);
+emit_16(1561);
+emit_16(1626);
+emit_16(1562);
+emit_16(1627);
+emit_16(1563);
+emit_16(1627);
+emit_16(1562);
+emit_16(1627);
+emit_16(1563);
+emit_16(1628);
+emit_16(1564);
+emit_16(1628);
+emit_16(1563);
+emit_16(1628);
+emit_16(1564);
+emit_16(1629);
+emit_16(1565);
+emit_16(1629);
+emit_16(1564);
+emit_16(1629);
+emit_16(1565);
+emit_16(1630);
+emit_16(1566);
+emit_16(1630);
+emit_16(1565);
+emit_16(1630);
+emit_16(1566);
+emit_16(1631);
+emit_16(1567);
+emit_16(1631);
+emit_16(1566);
+emit_16(1631);
+emit_16(1567);
+emit_16(1632);
+emit_16(1568);
+emit_16(1632);
+emit_16(1567);
+emit_16(1632);
+emit_16(1568);
+emit_16(1633);
+emit_16(1569);
+emit_16(1633);
+emit_16(1568);
+emit_16(1633);
+emit_16(1569);
+emit_16(1634);
+emit_16(1570);
+emit_16(1634);
+emit_16(1569);
+emit_16(1634);
+emit_16(1570);
+emit_16(1635);
+emit_16(1571);
+emit_16(1635);
+emit_16(1570);
+emit_16(1635);
+emit_16(1571);
+emit_16(1636);
+emit_16(1572);
+emit_16(1636);
+emit_16(1571);
+emit_16(1636);
+emit_16(1572);
+emit_16(1637);
+emit_16(1573);
+emit_16(1637);
+emit_16(1572);
+emit_16(1637);
+emit_16(1573);
+emit_16(1638);
+emit_16(1574);
+emit_16(1638);
+emit_16(1573);
+emit_16(1638);
+emit_16(1574);
+emit_16(1639);
+emit_16(1575);
+emit_16(1639);
+emit_16(1574);
+emit_16(1639);
+emit_16(1575);
+emit_16(1640);
+emit_16(1576);
+emit_16(1640);
+emit_16(1575);
+emit_16(1640);
+emit_16(1576);
+emit_16(1641);
+emit_16(1577);
+emit_16(1641);
+emit_16(1576);
+emit_16(1641);
+emit_16(1577);
+emit_16(1642);
+emit_16(1578);
+emit_16(1642);
+emit_16(1577);
+emit_16(1642);
+emit_16(1578);
+emit_16(1643);
+emit_16(1579);
+emit_16(1643);
+emit_16(1578);
+emit_16(1643);
+emit_16(1579);
+emit_16(1644);
+emit_16(1580);
+emit_16(1644);
+emit_16(1579);
+emit_16(1644);
+emit_16(1580);
+emit_16(1645);
+emit_16(1581);
+emit_16(1645);
+emit_16(1580);
+emit_16(1645);
+emit_16(1581);
+emit_16(1646);
+emit_16(1582);
+emit_16(1646);
+emit_16(1581);
+emit_16(1646);
+emit_16(1582);
+emit_16(1647);
+emit_16(1583);
+emit_16(1647);
+emit_16(1582);
+emit_16(1647);
+emit_16(1583);
+emit_16(1648);
+emit_16(1584);
+emit_16(1648);
+emit_16(1583);
+emit_16(1648);
+emit_16(1584);
+emit_16(1649);
+emit_16(1585);
+emit_16(1649);
+emit_16(1584);
+emit_16(1649);
+emit_16(1585);
+emit_16(1650);
+emit_16(1586);
+emit_16(1650);
+emit_16(1585);
+emit_16(1650);
+emit_16(1586);
+emit_16(1651);
+emit_16(1587);
+emit_16(1651);
+emit_16(1586);
+emit_16(1651);
+emit_16(1587);
+emit_16(1652);
+emit_16(1588);
+emit_16(1652);
+emit_16(1587);
+emit_16(1652);
+emit_16(1588);
+emit_16(1653);
+emit_16(1589);
+emit_16(1653);
+emit_16(1588);
+emit_16(1653);
+emit_16(1589);
+emit_16(1654);
+emit_16(1590);
+emit_16(1654);
+emit_16(1589);
+emit_16(1654);
+emit_16(1590);
+emit_16(1655);
+emit_16(1591);
+emit_16(1655);
+emit_16(1590);
+emit_16(1655);
+emit_16(1591);
+emit_16(1656);
+emit_16(1592);
+emit_16(1656);
+emit_16(1591);
+emit_16(1656);
+emit_16(1592);
+emit_16(1657);
+emit_16(1593);
+emit_16(1657);
+emit_16(1592);
+emit_16(1657);
+emit_16(1593);
+emit_16(1658);
+emit_16(1594);
+emit_16(1658);
+emit_16(1593);
+emit_16(1658);
+emit_16(1594);
+emit_16(1659);
+emit_16(1595);
+emit_16(1659);
+emit_16(1594);
+emit_16(1659);
+emit_16(1595);
+emit_16(1660);
+emit_16(1596);
+emit_16(1660);
+emit_16(1595);
+emit_16(1660);
+emit_16(1596);
+emit_16(1661);
+emit_16(1597);
+emit_16(1661);
+emit_16(1596);
+emit_16(1661);
+emit_16(1597);
+emit_16(1662);
+emit_16(1598);
+emit_16(1662);
+emit_16(1597);
+emit_16(1662);
+emit_16(1598);
+emit_16(1663);
+emit_16(1599);
+emit_16(1663);
+emit_16(1598);
+emit_16(1664);
+emit_16(1600);
+emit_16(1665);
+emit_16(1601);
+emit_16(1665);
+emit_16(1600);
+emit_16(1665);
+emit_16(1601);
+emit_16(1666);
+emit_16(1602);
+emit_16(1666);
+emit_16(1601);
+emit_16(1666);
+emit_16(1602);
+emit_16(1667);
+emit_16(1603);
+emit_16(1667);
+emit_16(1602);
+emit_16(1667);
+emit_16(1603);
+emit_16(1668);
+emit_16(1604);
+emit_16(1668);
+emit_16(1603);
+emit_16(1668);
+emit_16(1604);
+emit_16(1669);
+emit_16(1605);
+emit_16(1669);
+emit_16(1604);
+emit_16(1669);
+emit_16(1605);
+emit_16(1670);
+emit_16(1606);
+emit_16(1670);
+emit_16(1605);
+emit_16(1670);
+emit_16(1606);
+emit_16(1671);
+emit_16(1607);
+emit_16(1671);
+emit_16(1606);
+emit_16(1671);
+emit_16(1607);
+emit_16(1672);
+emit_16(1608);
+emit_16(1672);
+emit_16(1607);
+emit_16(1672);
+emit_16(1608);
+emit_16(1673);
+emit_16(1609);
+emit_16(1673);
+emit_16(1608);
+emit_16(1673);
+emit_16(1609);
+emit_16(1674);
+emit_16(1610);
+emit_16(1674);
+emit_16(1609);
+emit_16(1674);
+emit_16(1610);
+emit_16(1675);
+emit_16(1611);
+emit_16(1675);
+emit_16(1610);
+emit_16(1675);
+emit_16(1611);
+emit_16(1676);
+emit_16(1612);
+emit_16(1676);
+emit_16(1611);
+emit_16(1676);
+emit_16(1612);
+emit_16(1677);
+emit_16(1613);
+emit_16(1677);
+emit_16(1612);
+emit_16(1677);
+emit_16(1613);
+emit_16(1678);
+emit_16(1614);
+emit_16(1678);
+emit_16(1613);
+emit_16(1678);
+emit_16(1614);
+emit_16(1679);
+emit_16(1615);
+emit_16(1679);
+emit_16(1614);
+emit_16(1679);
+emit_16(1615);
+emit_16(1680);
+emit_16(1616);
+emit_16(1680);
+emit_16(1615);
+emit_16(1680);
+emit_16(1616);
+emit_16(1681);
+emit_16(1617);
+emit_16(1681);
+emit_16(1616);
+emit_16(1681);
+emit_16(1617);
+emit_16(1682);
+emit_16(1618);
+emit_16(1682);
+emit_16(1617);
+emit_16(1682);
+emit_16(1618);
+emit_16(1683);
+emit_16(1619);
+emit_16(1683);
+emit_16(1618);
+emit_16(1683);
+emit_16(1619);
+emit_16(1684);
+emit_16(1620);
+emit_16(1684);
+emit_16(1619);
+emit_16(1684);
+emit_16(1620);
+emit_16(1685);
+emit_16(1621);
+emit_16(1685);
+emit_16(1620);
+emit_16(1685);
+emit_16(1621);
+emit_16(1686);
+emit_16(1622);
+emit_16(1686);
+emit_16(1621);
+emit_16(1686);
+emit_16(1622);
+emit_16(1687);
+emit_16(1623);
+emit_16(1687);
+emit_16(1622);
+emit_16(1687);
+emit_16(1623);
+emit_16(1688);
+emit_16(1624);
+emit_16(1688);
+emit_16(1623);
+emit_16(1688);
+emit_16(1624);
+emit_16(1689);
+emit_16(1625);
+emit_16(1689);
+emit_16(1624);
+emit_16(1689);
+emit_16(1625);
+emit_16(1690);
+emit_16(1626);
+emit_16(1690);
+emit_16(1625);
+emit_16(1690);
+emit_16(1626);
+emit_16(1691);
+emit_16(1627);
+emit_16(1691);
+emit_16(1626);
+emit_16(1691);
+emit_16(1627);
+emit_16(1692);
+emit_16(1628);
+emit_16(1692);
+emit_16(1627);
+emit_16(1692);
+emit_16(1628);
+emit_16(1693);
+emit_16(1629);
+emit_16(1693);
+emit_16(1628);
+emit_16(1693);
+emit_16(1629);
+emit_16(1694);
+emit_16(1630);
+emit_16(1694);
+emit_16(1629);
+emit_16(1694);
+emit_16(1630);
+emit_16(1695);
+emit_16(1631);
+emit_16(1695);
+emit_16(1630);
+emit_16(1695);
+emit_16(1631);
+emit_16(1696);
+emit_16(1632);
+emit_16(1696);
+emit_16(1631);
+emit_16(1696);
+emit_16(1632);
+emit_16(1697);
+emit_16(1633);
+emit_16(1697);
+emit_16(1632);
+emit_16(1697);
+emit_16(1633);
+emit_16(1698);
+emit_16(1634);
+emit_16(1698);
+emit_16(1633);
+emit_16(1698);
+emit_16(1634);
+emit_16(1699);
+emit_16(1635);
+emit_16(1699);
+emit_16(1634);
+emit_16(1699);
+emit_16(1635);
+emit_16(1700);
+emit_16(1636);
+emit_16(1700);
+emit_16(1635);
+emit_16(1700);
+emit_16(1636);
+emit_16(1701);
+emit_16(1637);
+emit_16(1701);
+emit_16(1636);
+emit_16(1701);
+emit_16(1637);
+emit_16(1702);
+emit_16(1638);
+emit_16(1702);
+emit_16(1637);
+emit_16(1702);
+emit_16(1638);
+emit_16(1703);
+emit_16(1639);
+emit_16(1703);
+emit_16(1638);
+emit_16(1703);
+emit_16(1639);
+emit_16(1704);
+emit_16(1640);
+emit_16(1704);
+emit_16(1639);
+emit_16(1704);
+emit_16(1640);
+emit_16(1705);
+emit_16(1641);
+emit_16(1705);
+emit_16(1640);
+emit_16(1705);
+emit_16(1641);
+emit_16(1706);
+emit_16(1642);
+emit_16(1706);
+emit_16(1641);
+emit_16(1706);
+emit_16(1642);
+emit_16(1707);
+emit_16(1643);
+emit_16(1707);
+emit_16(1642);
+emit_16(1707);
+emit_16(1643);
+emit_16(1708);
+emit_16(1644);
+emit_16(1708);
+emit_16(1643);
+emit_16(1708);
+emit_16(1644);
+emit_16(1709);
+emit_16(1645);
+emit_16(1709);
+emit_16(1644);
+emit_16(1709);
+emit_16(1645);
+emit_16(1710);
+emit_16(1646);
+emit_16(1710);
+emit_16(1645);
+emit_16(1710);
+emit_16(1646);
+emit_16(1711);
+emit_16(1647);
+emit_16(1711);
+emit_16(1646);
+emit_16(1711);
+emit_16(1647);
+emit_16(1712);
+emit_16(1648);
+emit_16(1712);
+emit_16(1647);
+emit_16(1712);
+emit_16(1648);
+emit_16(1713);
+emit_16(1649);
+emit_16(1713);
+emit_16(1648);
+emit_16(1713);
+emit_16(1649);
+emit_16(1714);
+emit_16(1650);
+emit_16(1714);
+emit_16(1649);
+emit_16(1714);
+emit_16(1650);
+emit_16(1715);
+emit_16(1651);
+emit_16(1715);
+emit_16(1650);
+emit_16(1715);
+emit_16(1651);
+emit_16(1716);
+emit_16(1652);
+emit_16(1716);
+emit_16(1651);
+emit_16(1716);
+emit_16(1652);
+emit_16(1717);
+emit_16(1653);
+emit_16(1717);
+emit_16(1652);
+emit_16(1717);
+emit_16(1653);
+emit_16(1718);
+emit_16(1654);
+emit_16(1718);
+emit_16(1653);
+emit_16(1718);
+emit_16(1654);
+emit_16(1719);
+emit_16(1655);
+emit_16(1719);
+emit_16(1654);
+emit_16(1719);
+emit_16(1655);
+emit_16(1720);
+emit_16(1656);
+emit_16(1720);
+emit_16(1655);
+emit_16(1720);
+emit_16(1656);
+emit_16(1721);
+emit_16(1657);
+emit_16(1721);
+emit_16(1656);
+emit_16(1721);
+emit_16(1657);
+emit_16(1722);
+emit_16(1658);
+emit_16(1722);
+emit_16(1657);
+emit_16(1722);
+emit_16(1658);
+emit_16(1723);
+emit_16(1659);
+emit_16(1723);
+emit_16(1658);
+emit_16(1723);
+emit_16(1659);
+emit_16(1724);
+emit_16(1660);
+emit_16(1724);
+emit_16(1659);
+emit_16(1724);
+emit_16(1660);
+emit_16(1725);
+emit_16(1661);
+emit_16(1725);
+emit_16(1660);
+emit_16(1725);
+emit_16(1661);
+emit_16(1726);
+emit_16(1662);
+emit_16(1726);
+emit_16(1661);
+emit_16(1726);
+emit_16(1662);
+emit_16(1727);
+emit_16(1663);
+emit_16(1727);
+emit_16(1662);
+emit_16(1728);
+emit_16(1664);
+emit_16(1729);
+emit_16(1665);
+emit_16(1729);
+emit_16(1664);
+emit_16(1729);
+emit_16(1665);
+emit_16(1730);
+emit_16(1666);
+emit_16(1730);
+emit_16(1665);
+emit_16(1730);
+emit_16(1666);
+emit_16(1731);
+emit_16(1667);
+emit_16(1731);
+emit_16(1666);
+emit_16(1731);
+emit_16(1667);
+emit_16(1732);
+emit_16(1668);
+emit_16(1732);
+emit_16(1667);
+emit_16(1732);
+emit_16(1668);
+emit_16(1733);
+emit_16(1669);
+emit_16(1733);
+emit_16(1668);
+emit_16(1733);
+emit_16(1669);
+emit_16(1734);
+emit_16(1670);
+emit_16(1734);
+emit_16(1669);
+emit_16(1734);
+emit_16(1670);
+emit_16(1735);
+emit_16(1671);
+emit_16(1735);
+emit_16(1670);
+emit_16(1735);
+emit_16(1671);
+emit_16(1736);
+emit_16(1672);
+emit_16(1736);
+emit_16(1671);
+emit_16(1736);
+emit_16(1672);
+emit_16(1737);
+emit_16(1673);
+emit_16(1737);
+emit_16(1672);
+emit_16(1737);
+emit_16(1673);
+emit_16(1738);
+emit_16(1674);
+emit_16(1738);
+emit_16(1673);
+emit_16(1738);
+emit_16(1674);
+emit_16(1739);
+emit_16(1675);
+emit_16(1739);
+emit_16(1674);
+emit_16(1739);
+emit_16(1675);
+emit_16(1740);
+emit_16(1676);
+emit_16(1740);
+emit_16(1675);
+emit_16(1740);
+emit_16(1676);
+emit_16(1741);
+emit_16(1677);
+emit_16(1741);
+emit_16(1676);
+emit_16(1741);
+emit_16(1677);
+emit_16(1742);
+emit_16(1678);
+emit_16(1742);
+emit_16(1677);
+emit_16(1742);
+emit_16(1678);
+emit_16(1743);
+emit_16(1679);
+emit_16(1743);
+emit_16(1678);
+emit_16(1743);
+emit_16(1679);
+emit_16(1744);
+emit_16(1680);
+emit_16(1744);
+emit_16(1679);
+emit_16(1744);
+emit_16(1680);
+emit_16(1745);
+emit_16(1681);
+emit_16(1745);
+emit_16(1680);
+emit_16(1745);
+emit_16(1681);
+emit_16(1746);
+emit_16(1682);
+emit_16(1746);
+emit_16(1681);
+emit_16(1746);
+emit_16(1682);
+emit_16(1747);
+emit_16(1683);
+emit_16(1747);
+emit_16(1682);
+emit_16(1747);
+emit_16(1683);
+emit_16(1748);
+emit_16(1684);
+emit_16(1748);
+emit_16(1683);
+emit_16(1748);
+emit_16(1684);
+emit_16(1749);
+emit_16(1685);
+emit_16(1749);
+emit_16(1684);
+emit_16(1749);
+emit_16(1685);
+emit_16(1750);
+emit_16(1686);
+emit_16(1750);
+emit_16(1685);
+emit_16(1750);
+emit_16(1686);
+emit_16(1751);
+emit_16(1687);
+emit_16(1751);
+emit_16(1686);
+emit_16(1751);
+emit_16(1687);
+emit_16(1752);
+emit_16(1688);
+emit_16(1752);
+emit_16(1687);
+emit_16(1752);
+emit_16(1688);
+emit_16(1753);
+emit_16(1689);
+emit_16(1753);
+emit_16(1688);
+emit_16(1753);
+emit_16(1689);
+emit_16(1754);
+emit_16(1690);
+emit_16(1754);
+emit_16(1689);
+emit_16(1754);
+emit_16(1690);
+emit_16(1755);
+emit_16(1691);
+emit_16(1755);
+emit_16(1690);
+emit_16(1755);
+emit_16(1691);
+emit_16(1756);
+emit_16(1692);
+emit_16(1756);
+emit_16(1691);
+emit_16(1756);
+emit_16(1692);
+emit_16(1757);
+emit_16(1693);
+emit_16(1757);
+emit_16(1692);
+emit_16(1757);
+emit_16(1693);
+emit_16(1758);
+emit_16(1694);
+emit_16(1758);
+emit_16(1693);
+emit_16(1758);
+emit_16(1694);
+emit_16(1759);
+emit_16(1695);
+emit_16(1759);
+emit_16(1694);
+emit_16(1759);
+emit_16(1695);
+emit_16(1760);
+emit_16(1696);
+emit_16(1760);
+emit_16(1695);
+emit_16(1760);
+emit_16(1696);
+emit_16(1761);
+emit_16(1697);
+emit_16(1761);
+emit_16(1696);
+emit_16(1761);
+emit_16(1697);
+emit_16(1762);
+emit_16(1698);
+emit_16(1762);
+emit_16(1697);
+emit_16(1762);
+emit_16(1698);
+emit_16(1763);
+emit_16(1699);
+emit_16(1763);
+emit_16(1698);
+emit_16(1763);
+emit_16(1699);
+emit_16(1764);
+emit_16(1700);
+emit_16(1764);
+emit_16(1699);
+emit_16(1764);
+emit_16(1700);
+emit_16(1765);
+emit_16(1701);
+emit_16(1765);
+emit_16(1700);
+emit_16(1765);
+emit_16(1701);
+emit_16(1766);
+emit_16(1702);
+emit_16(1766);
+emit_16(1701);
+emit_16(1766);
+emit_16(1702);
+emit_16(1767);
+emit_16(1703);
+emit_16(1767);
+emit_16(1702);
+emit_16(1767);
+emit_16(1703);
+emit_16(1768);
+emit_16(1704);
+emit_16(1768);
+emit_16(1703);
+emit_16(1768);
+emit_16(1704);
+emit_16(1769);
+emit_16(1705);
+emit_16(1769);
+emit_16(1704);
+emit_16(1769);
+emit_16(1705);
+emit_16(1770);
+emit_16(1706);
+emit_16(1770);
+emit_16(1705);
+emit_16(1770);
+emit_16(1706);
+emit_16(1771);
+emit_16(1707);
+emit_16(1771);
+emit_16(1706);
+emit_16(1771);
+emit_16(1707);
+emit_16(1772);
+emit_16(1708);
+emit_16(1772);
+emit_16(1707);
+emit_16(1772);
+emit_16(1708);
+emit_16(1773);
+emit_16(1709);
+emit_16(1773);
+emit_16(1708);
+emit_16(1773);
+emit_16(1709);
+emit_16(1774);
+emit_16(1710);
+emit_16(1774);
+emit_16(1709);
+emit_16(1774);
+emit_16(1710);
+emit_16(1775);
+emit_16(1711);
+emit_16(1775);
+emit_16(1710);
+emit_16(1775);
+emit_16(1711);
+emit_16(1776);
+emit_16(1712);
+emit_16(1776);
+emit_16(1711);
+emit_16(1776);
+emit_16(1712);
+emit_16(1777);
+emit_16(1713);
+emit_16(1777);
+emit_16(1712);
+emit_16(1777);
+emit_16(1713);
+emit_16(1778);
+emit_16(1714);
+emit_16(1778);
+emit_16(1713);
+emit_16(1778);
+emit_16(1714);
+emit_16(1779);
+emit_16(1715);
+emit_16(1779);
+emit_16(1714);
+emit_16(1779);
+emit_16(1715);
+emit_16(1780);
+emit_16(1716);
+emit_16(1780);
+emit_16(1715);
+emit_16(1780);
+emit_16(1716);
+emit_16(1781);
+emit_16(1717);
+emit_16(1781);
+emit_16(1716);
+emit_16(1781);
+emit_16(1717);
+emit_16(1782);
+emit_16(1718);
+emit_16(1782);
+emit_16(1717);
+emit_16(1782);
+emit_16(1718);
+emit_16(1783);
+emit_16(1719);
+emit_16(1783);
+emit_16(1718);
+emit_16(1783);
+emit_16(1719);
+emit_16(1784);
+emit_16(1720);
+emit_16(1784);
+emit_16(1719);
+emit_16(1784);
+emit_16(1720);
+emit_16(1785);
+emit_16(1721);
+emit_16(1785);
+emit_16(1720);
+emit_16(1785);
+emit_16(1721);
+emit_16(1786);
+emit_16(1722);
+emit_16(1786);
+emit_16(1721);
+emit_16(1786);
+emit_16(1722);
+emit_16(1787);
+emit_16(1723);
+emit_16(1787);
+emit_16(1722);
+emit_16(1787);
+emit_16(1723);
+emit_16(1788);
+emit_16(1724);
+emit_16(1788);
+emit_16(1723);
+emit_16(1788);
+emit_16(1724);
+emit_16(1789);
+emit_16(1725);
+emit_16(1789);
+emit_16(1724);
+emit_16(1789);
+emit_16(1725);
+emit_16(1790);
+emit_16(1726);
+emit_16(1790);
+emit_16(1725);
+emit_16(1790);
+emit_16(1726);
+emit_16(1791);
+emit_16(1727);
+emit_16(1791);
+emit_16(1726);
+emit_16(1792);
+emit_16(1728);
+emit_16(1793);
+emit_16(1729);
+emit_16(1793);
+emit_16(1728);
+emit_16(1793);
+emit_16(1729);
+emit_16(1794);
+emit_16(1730);
+emit_16(1794);
+emit_16(1729);
+emit_16(1794);
+emit_16(1730);
+emit_16(1795);
+emit_16(1731);
+emit_16(1795);
+emit_16(1730);
+emit_16(1795);
+emit_16(1731);
+emit_16(1796);
+emit_16(1732);
+emit_16(1796);
+emit_16(1731);
+emit_16(1796);
+emit_16(1732);
+emit_16(1797);
+emit_16(1733);
+emit_16(1797);
+emit_16(1732);
+emit_16(1797);
+emit_16(1733);
+emit_16(1798);
+emit_16(1734);
+emit_16(1798);
+emit_16(1733);
+emit_16(1798);
+emit_16(1734);
+emit_16(1799);
+emit_16(1735);
+emit_16(1799);
+emit_16(1734);
+emit_16(1799);
+emit_16(1735);
+emit_16(1800);
+emit_16(1736);
+emit_16(1800);
+emit_16(1735);
+emit_16(1800);
+emit_16(1736);
+emit_16(1801);
+emit_16(1737);
+emit_16(1801);
+emit_16(1736);
+emit_16(1801);
+emit_16(1737);
+emit_16(1802);
+emit_16(1738);
+emit_16(1802);
+emit_16(1737);
+emit_16(1802);
+emit_16(1738);
+emit_16(1803);
+emit_16(1739);
+emit_16(1803);
+emit_16(1738);
+emit_16(1803);
+emit_16(1739);
+emit_16(1804);
+emit_16(1740);
+emit_16(1804);
+emit_16(1739);
+emit_16(1804);
+emit_16(1740);
+emit_16(1805);
+emit_16(1741);
+emit_16(1805);
+emit_16(1740);
+emit_16(1805);
+emit_16(1741);
+emit_16(1806);
+emit_16(1742);
+emit_16(1806);
+emit_16(1741);
+emit_16(1806);
+emit_16(1742);
+emit_16(1807);
+emit_16(1743);
+emit_16(1807);
+emit_16(1742);
+emit_16(1807);
+emit_16(1743);
+emit_16(1808);
+emit_16(1744);
+emit_16(1808);
+emit_16(1743);
+emit_16(1808);
+emit_16(1744);
+emit_16(1809);
+emit_16(1745);
+emit_16(1809);
+emit_16(1744);
+emit_16(1809);
+emit_16(1745);
+emit_16(1810);
+emit_16(1746);
+emit_16(1810);
+emit_16(1745);
+emit_16(1810);
+emit_16(1746);
+emit_16(1811);
+emit_16(1747);
+emit_16(1811);
+emit_16(1746);
+emit_16(1811);
+emit_16(1747);
+emit_16(1812);
+emit_16(1748);
+emit_16(1812);
+emit_16(1747);
+emit_16(1812);
+emit_16(1748);
+emit_16(1813);
+emit_16(1749);
+emit_16(1813);
+emit_16(1748);
+emit_16(1813);
+emit_16(1749);
+emit_16(1814);
+emit_16(1750);
+emit_16(1814);
+emit_16(1749);
+emit_16(1814);
+emit_16(1750);
+emit_16(1815);
+emit_16(1751);
+emit_16(1815);
+emit_16(1750);
+emit_16(1815);
+emit_16(1751);
+emit_16(1816);
+emit_16(1752);
+emit_16(1816);
+emit_16(1751);
+emit_16(1816);
+emit_16(1752);
+emit_16(1817);
+emit_16(1753);
+emit_16(1817);
+emit_16(1752);
+emit_16(1817);
+emit_16(1753);
+emit_16(1818);
+emit_16(1754);
+emit_16(1818);
+emit_16(1753);
+emit_16(1818);
+emit_16(1754);
+emit_16(1819);
+emit_16(1755);
+emit_16(1819);
+emit_16(1754);
+emit_16(1819);
+emit_16(1755);
+emit_16(1820);
+emit_16(1756);
+emit_16(1820);
+emit_16(1755);
+emit_16(1820);
+emit_16(1756);
+emit_16(1821);
+emit_16(1757);
+emit_16(1821);
+emit_16(1756);
+emit_16(1821);
+emit_16(1757);
+emit_16(1822);
+emit_16(1758);
+emit_16(1822);
+emit_16(1757);
+emit_16(1822);
+emit_16(1758);
+emit_16(1823);
+emit_16(1759);
+emit_16(1823);
+emit_16(1758);
+emit_16(1823);
+emit_16(1759);
+emit_16(1824);
+emit_16(1760);
+emit_16(1824);
+emit_16(1759);
+emit_16(1824);
+emit_16(1760);
+emit_16(1825);
+emit_16(1761);
+emit_16(1825);
+emit_16(1760);
+emit_16(1825);
+emit_16(1761);
+emit_16(1826);
+emit_16(1762);
+emit_16(1826);
+emit_16(1761);
+emit_16(1826);
+emit_16(1762);
+emit_16(1827);
+emit_16(1763);
+emit_16(1827);
+emit_16(1762);
+emit_16(1827);
+emit_16(1763);
+emit_16(1828);
+emit_16(1764);
+emit_16(1828);
+emit_16(1763);
+emit_16(1828);
+emit_16(1764);
+emit_16(1829);
+emit_16(1765);
+emit_16(1829);
+emit_16(1764);
+emit_16(1829);
+emit_16(1765);
+emit_16(1830);
+emit_16(1766);
+emit_16(1830);
+emit_16(1765);
+emit_16(1830);
+emit_16(1766);
+emit_16(1831);
+emit_16(1767);
+emit_16(1831);
+emit_16(1766);
+emit_16(1831);
+emit_16(1767);
+emit_16(1832);
+emit_16(1768);
+emit_16(1832);
+emit_16(1767);
+emit_16(1832);
+emit_16(1768);
+emit_16(1833);
+emit_16(1769);
+emit_16(1833);
+emit_16(1768);
+emit_16(1833);
+emit_16(1769);
+emit_16(1834);
+emit_16(1770);
+emit_16(1834);
+emit_16(1769);
+emit_16(1834);
+emit_16(1770);
+emit_16(1835);
+emit_16(1771);
+emit_16(1835);
+emit_16(1770);
+emit_16(1835);
+emit_16(1771);
+emit_16(1836);
+emit_16(1772);
+emit_16(1836);
+emit_16(1771);
+emit_16(1836);
+emit_16(1772);
+emit_16(1837);
+emit_16(1773);
+emit_16(1837);
+emit_16(1772);
+emit_16(1837);
+emit_16(1773);
+emit_16(1838);
+emit_16(1774);
+emit_16(1838);
+emit_16(1773);
+emit_16(1838);
+emit_16(1774);
+emit_16(1839);
+emit_16(1775);
+emit_16(1839);
+emit_16(1774);
+emit_16(1839);
+emit_16(1775);
+emit_16(1840);
+emit_16(1776);
+emit_16(1840);
+emit_16(1775);
+emit_16(1840);
+emit_16(1776);
+emit_16(1841);
+emit_16(1777);
+emit_16(1841);
+emit_16(1776);
+emit_16(1841);
+emit_16(1777);
+emit_16(1842);
+emit_16(1778);
+emit_16(1842);
+emit_16(1777);
+emit_16(1842);
+emit_16(1778);
+emit_16(1843);
+emit_16(1779);
+emit_16(1843);
+emit_16(1778);
+emit_16(1843);
+emit_16(1779);
+emit_16(1844);
+emit_16(1780);
+emit_16(1844);
+emit_16(1779);
+emit_16(1844);
+emit_16(1780);
+emit_16(1845);
+emit_16(1781);
+emit_16(1845);
+emit_16(1780);
+emit_16(1845);
+emit_16(1781);
+emit_16(1846);
+emit_16(1782);
+emit_16(1846);
+emit_16(1781);
+emit_16(1846);
+emit_16(1782);
+emit_16(1847);
+emit_16(1783);
+emit_16(1847);
+emit_16(1782);
+emit_16(1847);
+emit_16(1783);
+emit_16(1848);
+emit_16(1784);
+emit_16(1848);
+emit_16(1783);
+emit_16(1848);
+emit_16(1784);
+emit_16(1849);
+emit_16(1785);
+emit_16(1849);
+emit_16(1784);
+emit_16(1849);
+emit_16(1785);
+emit_16(1850);
+emit_16(1786);
+emit_16(1850);
+emit_16(1785);
+emit_16(1850);
+emit_16(1786);
+emit_16(1851);
+emit_16(1787);
+emit_16(1851);
+emit_16(1786);
+emit_16(1851);
+emit_16(1787);
+emit_16(1852);
+emit_16(1788);
+emit_16(1852);
+emit_16(1787);
+emit_16(1852);
+emit_16(1788);
+emit_16(1853);
+emit_16(1789);
+emit_16(1853);
+emit_16(1788);
+emit_16(1853);
+emit_16(1789);
+emit_16(1854);
+emit_16(1790);
+emit_16(1854);
+emit_16(1789);
+emit_16(1854);
+emit_16(1790);
+emit_16(1855);
+emit_16(1791);
+emit_16(1855);
+emit_16(1790);
+emit_16(1856);
+emit_16(1792);
+emit_16(1857);
+emit_16(1793);
+emit_16(1857);
+emit_16(1792);
+emit_16(1857);
+emit_16(1793);
+emit_16(1858);
+emit_16(1794);
+emit_16(1858);
+emit_16(1793);
+emit_16(1858);
+emit_16(1794);
+emit_16(1859);
+emit_16(1795);
+emit_16(1859);
+emit_16(1794);
+emit_16(1859);
+emit_16(1795);
+emit_16(1860);
+emit_16(1796);
+emit_16(1860);
+emit_16(1795);
+emit_16(1860);
+emit_16(1796);
+emit_16(1861);
+emit_16(1797);
+emit_16(1861);
+emit_16(1796);
+emit_16(1861);
+emit_16(1797);
+emit_16(1862);
+emit_16(1798);
+emit_16(1862);
+emit_16(1797);
+emit_16(1862);
+emit_16(1798);
+emit_16(1863);
+emit_16(1799);
+emit_16(1863);
+emit_16(1798);
+emit_16(1863);
+emit_16(1799);
+emit_16(1864);
+emit_16(1800);
+emit_16(1864);
+emit_16(1799);
+emit_16(1864);
+emit_16(1800);
+emit_16(1865);
+emit_16(1801);
+emit_16(1865);
+emit_16(1800);
+emit_16(1865);
+emit_16(1801);
+emit_16(1866);
+emit_16(1802);
+emit_16(1866);
+emit_16(1801);
+emit_16(1866);
+emit_16(1802);
+emit_16(1867);
+emit_16(1803);
+emit_16(1867);
+emit_16(1802);
+emit_16(1867);
+emit_16(1803);
+emit_16(1868);
+emit_16(1804);
+emit_16(1868);
+emit_16(1803);
+emit_16(1868);
+emit_16(1804);
+emit_16(1869);
+emit_16(1805);
+emit_16(1869);
+emit_16(1804);
+emit_16(1869);
+emit_16(1805);
+emit_16(1870);
+emit_16(1806);
+emit_16(1870);
+emit_16(1805);
+emit_16(1870);
+emit_16(1806);
+emit_16(1871);
+emit_16(1807);
+emit_16(1871);
+emit_16(1806);
+emit_16(1871);
+emit_16(1807);
+emit_16(1872);
+emit_16(1808);
+emit_16(1872);
+emit_16(1807);
+emit_16(1872);
+emit_16(1808);
+emit_16(1873);
+emit_16(1809);
+emit_16(1873);
+emit_16(1808);
+emit_16(1873);
+emit_16(1809);
+emit_16(1874);
+emit_16(1810);
+emit_16(1874);
+emit_16(1809);
+emit_16(1874);
+emit_16(1810);
+emit_16(1875);
+emit_16(1811);
+emit_16(1875);
+emit_16(1810);
+emit_16(1875);
+emit_16(1811);
+emit_16(1876);
+emit_16(1812);
+emit_16(1876);
+emit_16(1811);
+emit_16(1876);
+emit_16(1812);
+emit_16(1877);
+emit_16(1813);
+emit_16(1877);
+emit_16(1812);
+emit_16(1877);
+emit_16(1813);
+emit_16(1878);
+emit_16(1814);
+emit_16(1878);
+emit_16(1813);
+emit_16(1878);
+emit_16(1814);
+emit_16(1879);
+emit_16(1815);
+emit_16(1879);
+emit_16(1814);
+emit_16(1879);
+emit_16(1815);
+emit_16(1880);
+emit_16(1816);
+emit_16(1880);
+emit_16(1815);
+emit_16(1880);
+emit_16(1816);
+emit_16(1881);
+emit_16(1817);
+emit_16(1881);
+emit_16(1816);
+emit_16(1881);
+emit_16(1817);
+emit_16(1882);
+emit_16(1818);
+emit_16(1882);
+emit_16(1817);
+emit_16(1882);
+emit_16(1818);
+emit_16(1883);
+emit_16(1819);
+emit_16(1883);
+emit_16(1818);
+emit_16(1883);
+emit_16(1819);
+emit_16(1884);
+emit_16(1820);
+emit_16(1884);
+emit_16(1819);
+emit_16(1884);
+emit_16(1820);
+emit_16(1885);
+emit_16(1821);
+emit_16(1885);
+emit_16(1820);
+emit_16(1885);
+emit_16(1821);
+emit_16(1886);
+emit_16(1822);
+emit_16(1886);
+emit_16(1821);
+emit_16(1886);
+emit_16(1822);
+emit_16(1887);
+emit_16(1823);
+emit_16(1887);
+emit_16(1822);
+emit_16(1887);
+emit_16(1823);
+emit_16(1888);
+emit_16(1824);
+emit_16(1888);
+emit_16(1823);
+emit_16(1888);
+emit_16(1824);
+emit_16(1889);
+emit_16(1825);
+emit_16(1889);
+emit_16(1824);
+emit_16(1889);
+emit_16(1825);
+emit_16(1890);
+emit_16(1826);
+emit_16(1890);
+emit_16(1825);
+emit_16(1890);
+emit_16(1826);
+emit_16(1891);
+emit_16(1827);
+emit_16(1891);
+emit_16(1826);
+emit_16(1891);
+emit_16(1827);
+emit_16(1892);
+emit_16(1828);
+emit_16(1892);
+emit_16(1827);
+emit_16(1892);
+emit_16(1828);
+emit_16(1893);
+emit_16(1829);
+emit_16(1893);
+emit_16(1828);
+emit_16(1893);
+emit_16(1829);
+emit_16(1894);
+emit_16(1830);
+emit_16(1894);
+emit_16(1829);
+emit_16(1894);
+emit_16(1830);
+emit_16(1895);
+emit_16(1831);
+emit_16(1895);
+emit_16(1830);
+emit_16(1895);
+emit_16(1831);
+emit_16(1896);
+emit_16(1832);
+emit_16(1896);
+emit_16(1831);
+emit_16(1896);
+emit_16(1832);
+emit_16(1897);
+emit_16(1833);
+emit_16(1897);
+emit_16(1832);
+emit_16(1897);
+emit_16(1833);
+emit_16(1898);
+emit_16(1834);
+emit_16(1898);
+emit_16(1833);
+emit_16(1898);
+emit_16(1834);
+emit_16(1899);
+emit_16(1835);
+emit_16(1899);
+emit_16(1834);
+emit_16(1899);
+emit_16(1835);
+emit_16(1900);
+emit_16(1836);
+emit_16(1900);
+emit_16(1835);
+emit_16(1900);
+emit_16(1836);
+emit_16(1901);
+emit_16(1837);
+emit_16(1901);
+emit_16(1836);
+emit_16(1901);
+emit_16(1837);
+emit_16(1902);
+emit_16(1838);
+emit_16(1902);
+emit_16(1837);
+emit_16(1902);
+emit_16(1838);
+emit_16(1903);
+emit_16(1839);
+emit_16(1903);
+emit_16(1838);
+emit_16(1903);
+emit_16(1839);
+emit_16(1904);
+emit_16(1840);
+emit_16(1904);
+emit_16(1839);
+emit_16(1904);
+emit_16(1840);
+emit_16(1905);
+emit_16(1841);
+emit_16(1905);
+emit_16(1840);
+emit_16(1905);
+emit_16(1841);
+emit_16(1906);
+emit_16(1842);
+emit_16(1906);
+emit_16(1841);
+emit_16(1906);
+emit_16(1842);
+emit_16(1907);
+emit_16(1843);
+emit_16(1907);
+emit_16(1842);
+emit_16(1907);
+emit_16(1843);
+emit_16(1908);
+emit_16(1844);
+emit_16(1908);
+emit_16(1843);
+emit_16(1908);
+emit_16(1844);
+emit_16(1909);
+emit_16(1845);
+emit_16(1909);
+emit_16(1844);
+emit_16(1909);
+emit_16(1845);
+emit_16(1910);
+emit_16(1846);
+emit_16(1910);
+emit_16(1845);
+emit_16(1910);
+emit_16(1846);
+emit_16(1911);
+emit_16(1847);
+emit_16(1911);
+emit_16(1846);
+emit_16(1911);
+emit_16(1847);
+emit_16(1912);
+emit_16(1848);
+emit_16(1912);
+emit_16(1847);
+emit_16(1912);
+emit_16(1848);
+emit_16(1913);
+emit_16(1849);
+emit_16(1913);
+emit_16(1848);
+emit_16(1913);
+emit_16(1849);
+emit_16(1914);
+emit_16(1850);
+emit_16(1914);
+emit_16(1849);
+emit_16(1914);
+emit_16(1850);
+emit_16(1915);
+emit_16(1851);
+emit_16(1915);
+emit_16(1850);
+emit_16(1915);
+emit_16(1851);
+emit_16(1916);
+emit_16(1852);
+emit_16(1916);
+emit_16(1851);
+emit_16(1916);
+emit_16(1852);
+emit_16(1917);
+emit_16(1853);
+emit_16(1917);
+emit_16(1852);
+emit_16(1917);
+emit_16(1853);
+emit_16(1918);
+emit_16(1854);
+emit_16(1918);
+emit_16(1853);
+emit_16(1918);
+emit_16(1854);
+emit_16(1919);
+emit_16(1855);
+emit_16(1919);
+emit_16(1854);
+emit_16(1920);
+emit_16(1856);
+emit_16(1921);
+emit_16(1857);
+emit_16(1921);
+emit_16(1856);
+emit_16(1921);
+emit_16(1857);
+emit_16(1922);
+emit_16(1858);
+emit_16(1922);
+emit_16(1857);
+emit_16(1922);
+emit_16(1858);
+emit_16(1923);
+emit_16(1859);
+emit_16(1923);
+emit_16(1858);
+emit_16(1923);
+emit_16(1859);
+emit_16(1924);
+emit_16(1860);
+emit_16(1924);
+emit_16(1859);
+emit_16(1924);
+emit_16(1860);
+emit_16(1925);
+emit_16(1861);
+emit_16(1925);
+emit_16(1860);
+emit_16(1925);
+emit_16(1861);
+emit_16(1926);
+emit_16(1862);
+emit_16(1926);
+emit_16(1861);
+emit_16(1926);
+emit_16(1862);
+emit_16(1927);
+emit_16(1863);
+emit_16(1927);
+emit_16(1862);
+emit_16(1927);
+emit_16(1863);
+emit_16(1928);
+emit_16(1864);
+emit_16(1928);
+emit_16(1863);
+emit_16(1928);
+emit_16(1864);
+emit_16(1929);
+emit_16(1865);
+emit_16(1929);
+emit_16(1864);
+emit_16(1929);
+emit_16(1865);
+emit_16(1930);
+emit_16(1866);
+emit_16(1930);
+emit_16(1865);
+emit_16(1930);
+emit_16(1866);
+emit_16(1931);
+emit_16(1867);
+emit_16(1931);
+emit_16(1866);
+emit_16(1931);
+emit_16(1867);
+emit_16(1932);
+emit_16(1868);
+emit_16(1932);
+emit_16(1867);
+emit_16(1932);
+emit_16(1868);
+emit_16(1933);
+emit_16(1869);
+emit_16(1933);
+emit_16(1868);
+emit_16(1933);
+emit_16(1869);
+emit_16(1934);
+emit_16(1870);
+emit_16(1934);
+emit_16(1869);
+emit_16(1934);
+emit_16(1870);
+emit_16(1935);
+emit_16(1871);
+emit_16(1935);
+emit_16(1870);
+emit_16(1935);
+emit_16(1871);
+emit_16(1936);
+emit_16(1872);
+emit_16(1936);
+emit_16(1871);
+emit_16(1936);
+emit_16(1872);
+emit_16(1937);
+emit_16(1873);
+emit_16(1937);
+emit_16(1872);
+emit_16(1937);
+emit_16(1873);
+emit_16(1938);
+emit_16(1874);
+emit_16(1938);
+emit_16(1873);
+emit_16(1938);
+emit_16(1874);
+emit_16(1939);
+emit_16(1875);
+emit_16(1939);
+emit_16(1874);
+emit_16(1939);
+emit_16(1875);
+emit_16(1940);
+emit_16(1876);
+emit_16(1940);
+emit_16(1875);
+emit_16(1940);
+emit_16(1876);
+emit_16(1941);
+emit_16(1877);
+emit_16(1941);
+emit_16(1876);
+emit_16(1941);
+emit_16(1877);
+emit_16(1942);
+emit_16(1878);
+emit_16(1942);
+emit_16(1877);
+emit_16(1942);
+emit_16(1878);
+emit_16(1943);
+emit_16(1879);
+emit_16(1943);
+emit_16(1878);
+emit_16(1943);
+emit_16(1879);
+emit_16(1944);
+emit_16(1880);
+emit_16(1944);
+emit_16(1879);
+emit_16(1944);
+emit_16(1880);
+emit_16(1945);
+emit_16(1881);
+emit_16(1945);
+emit_16(1880);
+emit_16(1945);
+emit_16(1881);
+emit_16(1946);
+emit_16(1882);
+emit_16(1946);
+emit_16(1881);
+emit_16(1946);
+emit_16(1882);
+emit_16(1947);
+emit_16(1883);
+emit_16(1947);
+emit_16(1882);
+emit_16(1947);
+emit_16(1883);
+emit_16(1948);
+emit_16(1884);
+emit_16(1948);
+emit_16(1883);
+emit_16(1948);
+emit_16(1884);
+emit_16(1949);
+emit_16(1885);
+emit_16(1949);
+emit_16(1884);
+emit_16(1949);
+emit_16(1885);
+emit_16(1950);
+emit_16(1886);
+emit_16(1950);
+emit_16(1885);
+emit_16(1950);
+emit_16(1886);
+emit_16(1951);
+emit_16(1887);
+emit_16(1951);
+emit_16(1886);
+emit_16(1951);
+emit_16(1887);
+emit_16(1952);
+emit_16(1888);
+emit_16(1952);
+emit_16(1887);
+emit_16(1952);
+emit_16(1888);
+emit_16(1953);
+emit_16(1889);
+emit_16(1953);
+emit_16(1888);
+emit_16(1953);
+emit_16(1889);
+emit_16(1954);
+emit_16(1890);
+emit_16(1954);
+emit_16(1889);
+emit_16(1954);
+emit_16(1890);
+emit_16(1955);
+emit_16(1891);
+emit_16(1955);
+emit_16(1890);
+emit_16(1955);
+emit_16(1891);
+emit_16(1956);
+emit_16(1892);
+emit_16(1956);
+emit_16(1891);
+emit_16(1956);
+emit_16(1892);
+emit_16(1957);
+emit_16(1893);
+emit_16(1957);
+emit_16(1892);
+emit_16(1957);
+emit_16(1893);
+emit_16(1958);
+emit_16(1894);
+emit_16(1958);
+emit_16(1893);
+emit_16(1958);
+emit_16(1894);
+emit_16(1959);
+emit_16(1895);
+emit_16(1959);
+emit_16(1894);
+emit_16(1959);
+emit_16(1895);
+emit_16(1960);
+emit_16(1896);
+emit_16(1960);
+emit_16(1895);
+emit_16(1960);
+emit_16(1896);
+emit_16(1961);
+emit_16(1897);
+emit_16(1961);
+emit_16(1896);
+emit_16(1961);
+emit_16(1897);
+emit_16(1962);
+emit_16(1898);
+emit_16(1962);
+emit_16(1897);
+emit_16(1962);
+emit_16(1898);
+emit_16(1963);
+emit_16(1899);
+emit_16(1963);
+emit_16(1898);
+emit_16(1963);
+emit_16(1899);
+emit_16(1964);
+emit_16(1900);
+emit_16(1964);
+emit_16(1899);
+emit_16(1964);
+emit_16(1900);
+emit_16(1965);
+emit_16(1901);
+emit_16(1965);
+emit_16(1900);
+emit_16(1965);
+emit_16(1901);
+emit_16(1966);
+emit_16(1902);
+emit_16(1966);
+emit_16(1901);
+emit_16(1966);
+emit_16(1902);
+emit_16(1967);
+emit_16(1903);
+emit_16(1967);
+emit_16(1902);
+emit_16(1967);
+emit_16(1903);
+emit_16(1968);
+emit_16(1904);
+emit_16(1968);
+emit_16(1903);
+emit_16(1968);
+emit_16(1904);
+emit_16(1969);
+emit_16(1905);
+emit_16(1969);
+emit_16(1904);
+emit_16(1969);
+emit_16(1905);
+emit_16(1970);
+emit_16(1906);
+emit_16(1970);
+emit_16(1905);
+emit_16(1970);
+emit_16(1906);
+emit_16(1971);
+emit_16(1907);
+emit_16(1971);
+emit_16(1906);
+emit_16(1971);
+emit_16(1907);
+emit_16(1972);
+emit_16(1908);
+emit_16(1972);
+emit_16(1907);
+emit_16(1972);
+emit_16(1908);
+emit_16(1973);
+emit_16(1909);
+emit_16(1973);
+emit_16(1908);
+emit_16(1973);
+emit_16(1909);
+emit_16(1974);
+emit_16(1910);
+emit_16(1974);
+emit_16(1909);
+emit_16(1974);
+emit_16(1910);
+emit_16(1975);
+emit_16(1911);
+emit_16(1975);
+emit_16(1910);
+emit_16(1975);
+emit_16(1911);
+emit_16(1976);
+emit_16(1912);
+emit_16(1976);
+emit_16(1911);
+emit_16(1976);
+emit_16(1912);
+emit_16(1977);
+emit_16(1913);
+emit_16(1977);
+emit_16(1912);
+emit_16(1977);
+emit_16(1913);
+emit_16(1978);
+emit_16(1914);
+emit_16(1978);
+emit_16(1913);
+emit_16(1978);
+emit_16(1914);
+emit_16(1979);
+emit_16(1915);
+emit_16(1979);
+emit_16(1914);
+emit_16(1979);
+emit_16(1915);
+emit_16(1980);
+emit_16(1916);
+emit_16(1980);
+emit_16(1915);
+emit_16(1980);
+emit_16(1916);
+emit_16(1981);
+emit_16(1917);
+emit_16(1981);
+emit_16(1916);
+emit_16(1981);
+emit_16(1917);
+emit_16(1982);
+emit_16(1918);
+emit_16(1982);
+emit_16(1917);
+emit_16(1982);
+emit_16(1918);
+emit_16(1983);
+emit_16(1919);
+emit_16(1983);
+emit_16(1918);
+emit_16(1984);
+emit_16(1920);
+emit_16(1985);
+emit_16(1921);
+emit_16(1985);
+emit_16(1920);
+emit_16(1985);
+emit_16(1921);
+emit_16(1986);
+emit_16(1922);
+emit_16(1986);
+emit_16(1921);
+emit_16(1986);
+emit_16(1922);
+emit_16(1987);
+emit_16(1923);
+emit_16(1987);
+emit_16(1922);
+emit_16(1987);
+emit_16(1923);
+emit_16(1988);
+emit_16(1924);
+emit_16(1988);
+emit_16(1923);
+emit_16(1988);
+emit_16(1924);
+emit_16(1989);
+emit_16(1925);
+emit_16(1989);
+emit_16(1924);
+emit_16(1989);
+emit_16(1925);
+emit_16(1990);
+emit_16(1926);
+emit_16(1990);
+emit_16(1925);
+emit_16(1990);
+emit_16(1926);
+emit_16(1991);
+emit_16(1927);
+emit_16(1991);
+emit_16(1926);
+emit_16(1991);
+emit_16(1927);
+emit_16(1992);
+emit_16(1928);
+emit_16(1992);
+emit_16(1927);
+emit_16(1992);
+emit_16(1928);
+emit_16(1993);
+emit_16(1929);
+emit_16(1993);
+emit_16(1928);
+emit_16(1993);
+emit_16(1929);
+emit_16(1994);
+emit_16(1930);
+emit_16(1994);
+emit_16(1929);
+emit_16(1994);
+emit_16(1930);
+emit_16(1995);
+emit_16(1931);
+emit_16(1995);
+emit_16(1930);
+emit_16(1995);
+emit_16(1931);
+emit_16(1996);
+emit_16(1932);
+emit_16(1996);
+emit_16(1931);
+emit_16(1996);
+emit_16(1932);
+emit_16(1997);
+emit_16(1933);
+emit_16(1997);
+emit_16(1932);
+emit_16(1997);
+emit_16(1933);
+emit_16(1998);
+emit_16(1934);
+emit_16(1998);
+emit_16(1933);
+emit_16(1998);
+emit_16(1934);
+emit_16(1999);
+emit_16(1935);
+emit_16(1999);
+emit_16(1934);
+emit_16(1999);
+emit_16(1935);
+emit_16(2000);
+emit_16(1936);
+emit_16(2000);
+emit_16(1935);
+emit_16(2000);
+emit_16(1936);
+emit_16(2001);
+emit_16(1937);
+emit_16(2001);
+emit_16(1936);
+emit_16(2001);
+emit_16(1937);
+emit_16(2002);
+emit_16(1938);
+emit_16(2002);
+emit_16(1937);
+emit_16(2002);
+emit_16(1938);
+emit_16(2003);
+emit_16(1939);
+emit_16(2003);
+emit_16(1938);
+emit_16(2003);
+emit_16(1939);
+emit_16(2004);
+emit_16(1940);
+emit_16(2004);
+emit_16(1939);
+emit_16(2004);
+emit_16(1940);
+emit_16(2005);
+emit_16(1941);
+emit_16(2005);
+emit_16(1940);
+emit_16(2005);
+emit_16(1941);
+emit_16(2006);
+emit_16(1942);
+emit_16(2006);
+emit_16(1941);
+emit_16(2006);
+emit_16(1942);
+emit_16(2007);
+emit_16(1943);
+emit_16(2007);
+emit_16(1942);
+emit_16(2007);
+emit_16(1943);
+emit_16(2008);
+emit_16(1944);
+emit_16(2008);
+emit_16(1943);
+emit_16(2008);
+emit_16(1944);
+emit_16(2009);
+emit_16(1945);
+emit_16(2009);
+emit_16(1944);
+emit_16(2009);
+emit_16(1945);
+emit_16(2010);
+emit_16(1946);
+emit_16(2010);
+emit_16(1945);
+emit_16(2010);
+emit_16(1946);
+emit_16(2011);
+emit_16(1947);
+emit_16(2011);
+emit_16(1946);
+emit_16(2011);
+emit_16(1947);
+emit_16(2012);
+emit_16(1948);
+emit_16(2012);
+emit_16(1947);
+emit_16(2012);
+emit_16(1948);
+emit_16(2013);
+emit_16(1949);
+emit_16(2013);
+emit_16(1948);
+emit_16(2013);
+emit_16(1949);
+emit_16(2014);
+emit_16(1950);
+emit_16(2014);
+emit_16(1949);
+emit_16(2014);
+emit_16(1950);
+emit_16(2015);
+emit_16(1951);
+emit_16(2015);
+emit_16(1950);
+emit_16(2015);
+emit_16(1951);
+emit_16(2016);
+emit_16(1952);
+emit_16(2016);
+emit_16(1951);
+emit_16(2016);
+emit_16(1952);
+emit_16(2017);
+emit_16(1953);
+emit_16(2017);
+emit_16(1952);
+emit_16(2017);
+emit_16(1953);
+emit_16(2018);
+emit_16(1954);
+emit_16(2018);
+emit_16(1953);
+emit_16(2018);
+emit_16(1954);
+emit_16(2019);
+emit_16(1955);
+emit_16(2019);
+emit_16(1954);
+emit_16(2019);
+emit_16(1955);
+emit_16(2020);
+emit_16(1956);
+emit_16(2020);
+emit_16(1955);
+emit_16(2020);
+emit_16(1956);
+emit_16(2021);
+emit_16(1957);
+emit_16(2021);
+emit_16(1956);
+emit_16(2021);
+emit_16(1957);
+emit_16(2022);
+emit_16(1958);
+emit_16(2022);
+emit_16(1957);
+emit_16(2022);
+emit_16(1958);
+emit_16(2023);
+emit_16(1959);
+emit_16(2023);
+emit_16(1958);
+emit_16(2023);
+emit_16(1959);
+emit_16(2024);
+emit_16(1960);
+emit_16(2024);
+emit_16(1959);
+emit_16(2024);
+emit_16(1960);
+emit_16(2025);
+emit_16(1961);
+emit_16(2025);
+emit_16(1960);
+emit_16(2025);
+emit_16(1961);
+emit_16(2026);
+emit_16(1962);
+emit_16(2026);
+emit_16(1961);
+emit_16(2026);
+emit_16(1962);
+emit_16(2027);
+emit_16(1963);
+emit_16(2027);
+emit_16(1962);
+emit_16(2027);
+emit_16(1963);
+emit_16(2028);
+emit_16(1964);
+emit_16(2028);
+emit_16(1963);
+emit_16(2028);
+emit_16(1964);
+emit_16(2029);
+emit_16(1965);
+emit_16(2029);
+emit_16(1964);
+emit_16(2029);
+emit_16(1965);
+emit_16(2030);
+emit_16(1966);
+emit_16(2030);
+emit_16(1965);
+emit_16(2030);
+emit_16(1966);
+emit_16(2031);
+emit_16(1967);
+emit_16(2031);
+emit_16(1966);
+emit_16(2031);
+emit_16(1967);
+emit_16(2032);
+emit_16(1968);
+emit_16(2032);
+emit_16(1967);
+emit_16(2032);
+emit_16(1968);
+emit_16(2033);
+emit_16(1969);
+emit_16(2033);
+emit_16(1968);
+emit_16(2033);
+emit_16(1969);
+emit_16(2034);
+emit_16(1970);
+emit_16(2034);
+emit_16(1969);
+emit_16(2034);
+emit_16(1970);
+emit_16(2035);
+emit_16(1971);
+emit_16(2035);
+emit_16(1970);
+emit_16(2035);
+emit_16(1971);
+emit_16(2036);
+emit_16(1972);
+emit_16(2036);
+emit_16(1971);
+emit_16(2036);
+emit_16(1972);
+emit_16(2037);
+emit_16(1973);
+emit_16(2037);
+emit_16(1972);
+emit_16(2037);
+emit_16(1973);
+emit_16(2038);
+emit_16(1974);
+emit_16(2038);
+emit_16(1973);
+emit_16(2038);
+emit_16(1974);
+emit_16(2039);
+emit_16(1975);
+emit_16(2039);
+emit_16(1974);
+emit_16(2039);
+emit_16(1975);
+emit_16(2040);
+emit_16(1976);
+emit_16(2040);
+emit_16(1975);
+emit_16(2040);
+emit_16(1976);
+emit_16(2041);
+emit_16(1977);
+emit_16(2041);
+emit_16(1976);
+emit_16(2041);
+emit_16(1977);
+emit_16(2042);
+emit_16(1978);
+emit_16(2042);
+emit_16(1977);
+emit_16(2042);
+emit_16(1978);
+emit_16(2043);
+emit_16(1979);
+emit_16(2043);
+emit_16(1978);
+emit_16(2043);
+emit_16(1979);
+emit_16(2044);
+emit_16(1980);
+emit_16(2044);
+emit_16(1979);
+emit_16(2044);
+emit_16(1980);
+emit_16(2045);
+emit_16(1981);
+emit_16(2045);
+emit_16(1980);
+emit_16(2045);
+emit_16(1981);
+emit_16(2046);
+emit_16(1982);
+emit_16(2046);
+emit_16(1981);
+emit_16(2046);
+emit_16(1982);
+emit_16(2047);
+emit_16(1983);
+emit_16(2047);
+emit_16(1982);
+emit_start(Landscape04Idx)
+emit_16(0);
+emit_16(1);
+emit_16(2);
+emit_16(3);
+emit_16(2);
+emit_16(1);
+emit_16(2);
+emit_16(3);
+emit_16(4);
+emit_16(5);
+emit_16(4);
+emit_16(3);
+emit_16(4);
+emit_16(5);
+emit_16(6);
+emit_16(7);
+emit_16(6);
+emit_16(5);
+emit_16(6);
+emit_16(7);
+emit_16(8);
+emit_16(9);
+emit_16(8);
+emit_16(7);
+emit_16(8);
+emit_16(9);
+emit_16(10);
+emit_16(11);
+emit_16(10);
+emit_16(9);
+emit_16(10);
+emit_16(11);
+emit_16(12);
+emit_16(13);
+emit_16(12);
+emit_16(11);
+emit_16(12);
+emit_16(13);
+emit_16(14);
+emit_16(15);
+emit_16(14);
+emit_16(13);
+emit_16(14);
+emit_16(15);
+emit_16(16);
+emit_16(17);
+emit_16(16);
+emit_16(15);
+emit_16(16);
+emit_16(17);
+emit_16(18);
+emit_16(19);
+emit_16(18);
+emit_16(17);
+emit_16(18);
+emit_16(19);
+emit_16(20);
+emit_16(21);
+emit_16(20);
+emit_16(19);
+emit_16(20);
+emit_16(21);
+emit_16(22);
+emit_16(23);
+emit_16(22);
+emit_16(21);
+emit_16(22);
+emit_16(23);
+emit_16(24);
+emit_16(25);
+emit_16(24);
+emit_16(23);
+emit_16(24);
+emit_16(25);
+emit_16(26);
+emit_16(27);
+emit_16(26);
+emit_16(25);
+emit_16(26);
+emit_16(27);
+emit_16(28);
+emit_16(29);
+emit_16(28);
+emit_16(27);
+emit_16(28);
+emit_16(29);
+emit_16(30);
+emit_16(31);
+emit_16(30);
+emit_16(29);
+emit_16(30);
+emit_16(31);
+emit_16(32);
+emit_16(33);
+emit_16(32);
+emit_16(31);
+emit_16(32);
+emit_16(33);
+emit_16(34);
+emit_16(35);
+emit_16(34);
+emit_16(33);
+emit_16(34);
+emit_16(35);
+emit_16(36);
+emit_16(37);
+emit_16(36);
+emit_16(35);
+emit_16(36);
+emit_16(37);
+emit_16(38);
+emit_16(39);
+emit_16(38);
+emit_16(37);
+emit_16(38);
+emit_16(39);
+emit_16(40);
+emit_16(41);
+emit_16(40);
+emit_16(39);
+emit_16(40);
+emit_16(41);
+emit_16(42);
+emit_16(43);
+emit_16(42);
+emit_16(41);
+emit_16(42);
+emit_16(43);
+emit_16(44);
+emit_16(45);
+emit_16(44);
+emit_16(43);
+emit_16(44);
+emit_16(45);
+emit_16(46);
+emit_16(47);
+emit_16(46);
+emit_16(45);
+emit_16(46);
+emit_16(47);
+emit_16(48);
+emit_16(49);
+emit_16(48);
+emit_16(47);
+emit_16(48);
+emit_16(49);
+emit_16(50);
+emit_16(51);
+emit_16(50);
+emit_16(49);
+emit_16(50);
+emit_16(51);
+emit_16(52);
+emit_16(53);
+emit_16(52);
+emit_16(51);
+emit_16(52);
+emit_16(53);
+emit_16(54);
+emit_16(55);
+emit_16(54);
+emit_16(53);
+emit_16(54);
+emit_16(55);
+emit_16(56);
+emit_16(57);
+emit_16(56);
+emit_16(55);
+emit_16(56);
+emit_16(57);
+emit_16(58);
+emit_16(59);
+emit_16(58);
+emit_16(57);
+emit_16(58);
+emit_16(59);
+emit_16(60);
+emit_16(61);
+emit_16(60);
+emit_16(59);
+emit_16(60);
+emit_16(61);
+emit_16(62);
+emit_16(63);
+emit_16(62);
+emit_16(61);
+emit_16(62);
+emit_16(63);
+emit_16(64);
+emit_16(65);
+emit_16(64);
+emit_16(63);
+emit_16(64);
+emit_16(65);
+emit_16(66);
+emit_16(67);
+emit_16(66);
+emit_16(65);
+emit_16(66);
+emit_16(67);
+emit_16(68);
+emit_16(69);
+emit_16(68);
+emit_16(67);
+emit_16(68);
+emit_16(69);
+emit_16(70);
+emit_16(71);
+emit_16(70);
+emit_16(69);
+emit_16(70);
+emit_16(71);
+emit_16(72);
+emit_16(73);
+emit_16(72);
+emit_16(71);
+emit_16(72);
+emit_16(73);
+emit_16(74);
+emit_16(75);
+emit_16(74);
+emit_16(73);
+emit_16(74);
+emit_16(75);
+emit_16(76);
+emit_16(77);
+emit_16(76);
+emit_16(75);
+emit_16(76);
+emit_16(77);
+emit_16(78);
+emit_16(79);
+emit_16(78);
+emit_16(77);
+emit_16(78);
+emit_16(79);
+emit_16(80);
+emit_16(81);
+emit_16(80);
+emit_16(79);
+emit_16(80);
+emit_16(81);
+emit_16(82);
+emit_16(83);
+emit_16(82);
+emit_16(81);
+emit_16(82);
+emit_16(83);
+emit_16(84);
+emit_16(85);
+emit_16(84);
+emit_16(83);
+emit_16(84);
+emit_16(85);
+emit_16(86);
+emit_16(87);
+emit_16(86);
+emit_16(85);
+emit_16(86);
+emit_16(87);
+emit_16(88);
+emit_16(89);
+emit_16(88);
+emit_16(87);
+emit_16(88);
+emit_16(89);
+emit_16(90);
+emit_16(91);
+emit_16(90);
+emit_16(89);
+emit_16(90);
+emit_16(91);
+emit_16(92);
+emit_16(93);
+emit_16(92);
+emit_16(91);
+emit_16(92);
+emit_16(93);
+emit_16(94);
+emit_16(95);
+emit_16(94);
+emit_16(93);
+emit_16(94);
+emit_16(95);
+emit_16(96);
+emit_16(97);
+emit_16(96);
+emit_16(95);
+emit_16(96);
+emit_16(97);
+emit_16(98);
+emit_16(99);
+emit_16(98);
+emit_16(97);
+emit_16(98);
+emit_16(99);
+emit_16(100);
+emit_16(101);
+emit_16(100);
+emit_16(99);
+emit_16(100);
+emit_16(101);
+emit_16(102);
+emit_16(103);
+emit_16(102);
+emit_16(101);
+emit_16(102);
+emit_16(103);
+emit_16(104);
+emit_16(105);
+emit_16(104);
+emit_16(103);
+emit_16(104);
+emit_16(105);
+emit_16(106);
+emit_16(107);
+emit_16(106);
+emit_16(105);
+emit_16(106);
+emit_16(107);
+emit_16(108);
+emit_16(109);
+emit_16(108);
+emit_16(107);
+emit_16(108);
+emit_16(109);
+emit_16(110);
+emit_16(111);
+emit_16(110);
+emit_16(109);
+emit_16(110);
+emit_16(111);
+emit_16(112);
+emit_16(113);
+emit_16(112);
+emit_16(111);
+emit_16(112);
+emit_16(113);
+emit_16(114);
+emit_16(115);
+emit_16(114);
+emit_16(113);
+emit_16(114);
+emit_16(115);
+emit_16(116);
+emit_16(117);
+emit_16(116);
+emit_16(115);
+emit_16(116);
+emit_16(117);
+emit_16(118);
+emit_16(119);
+emit_16(118);
+emit_16(117);
+emit_16(118);
+emit_16(119);
+emit_16(120);
+emit_16(121);
+emit_16(120);
+emit_16(119);
+emit_16(120);
+emit_16(121);
+emit_16(122);
+emit_16(123);
+emit_16(122);
+emit_16(121);
+emit_16(122);
+emit_16(123);
+emit_16(124);
+emit_16(125);
+emit_16(124);
+emit_16(123);
+emit_16(124);
+emit_16(125);
+emit_16(126);
+emit_16(127);
+emit_16(126);
+emit_16(125);
+emit_16(128);
+emit_16(0);
+emit_16(129);
+emit_16(2);
+emit_16(129);
+emit_16(0);
+emit_16(129);
+emit_16(2);
+emit_16(130);
+emit_16(4);
+emit_16(130);
+emit_16(2);
+emit_16(130);
+emit_16(4);
+emit_16(131);
+emit_16(6);
+emit_16(131);
+emit_16(4);
+emit_16(131);
+emit_16(6);
+emit_16(132);
+emit_16(8);
+emit_16(132);
+emit_16(6);
+emit_16(132);
+emit_16(8);
+emit_16(133);
+emit_16(10);
+emit_16(133);
+emit_16(8);
+emit_16(133);
+emit_16(10);
+emit_16(134);
+emit_16(12);
+emit_16(134);
+emit_16(10);
+emit_16(134);
+emit_16(12);
+emit_16(135);
+emit_16(14);
+emit_16(135);
+emit_16(12);
+emit_16(135);
+emit_16(14);
+emit_16(136);
+emit_16(16);
+emit_16(136);
+emit_16(14);
+emit_16(136);
+emit_16(16);
+emit_16(137);
+emit_16(18);
+emit_16(137);
+emit_16(16);
+emit_16(137);
+emit_16(18);
+emit_16(138);
+emit_16(20);
+emit_16(138);
+emit_16(18);
+emit_16(138);
+emit_16(20);
+emit_16(139);
+emit_16(22);
+emit_16(139);
+emit_16(20);
+emit_16(139);
+emit_16(22);
+emit_16(140);
+emit_16(24);
+emit_16(140);
+emit_16(22);
+emit_16(140);
+emit_16(24);
+emit_16(141);
+emit_16(26);
+emit_16(141);
+emit_16(24);
+emit_16(141);
+emit_16(26);
+emit_16(142);
+emit_16(28);
+emit_16(142);
+emit_16(26);
+emit_16(142);
+emit_16(28);
+emit_16(143);
+emit_16(30);
+emit_16(143);
+emit_16(28);
+emit_16(143);
+emit_16(30);
+emit_16(144);
+emit_16(32);
+emit_16(144);
+emit_16(30);
+emit_16(144);
+emit_16(32);
+emit_16(145);
+emit_16(34);
+emit_16(145);
+emit_16(32);
+emit_16(145);
+emit_16(34);
+emit_16(146);
+emit_16(36);
+emit_16(146);
+emit_16(34);
+emit_16(146);
+emit_16(36);
+emit_16(147);
+emit_16(38);
+emit_16(147);
+emit_16(36);
+emit_16(147);
+emit_16(38);
+emit_16(148);
+emit_16(40);
+emit_16(148);
+emit_16(38);
+emit_16(148);
+emit_16(40);
+emit_16(149);
+emit_16(42);
+emit_16(149);
+emit_16(40);
+emit_16(149);
+emit_16(42);
+emit_16(150);
+emit_16(44);
+emit_16(150);
+emit_16(42);
+emit_16(150);
+emit_16(44);
+emit_16(151);
+emit_16(46);
+emit_16(151);
+emit_16(44);
+emit_16(151);
+emit_16(46);
+emit_16(152);
+emit_16(48);
+emit_16(152);
+emit_16(46);
+emit_16(152);
+emit_16(48);
+emit_16(153);
+emit_16(50);
+emit_16(153);
+emit_16(48);
+emit_16(153);
+emit_16(50);
+emit_16(154);
+emit_16(52);
+emit_16(154);
+emit_16(50);
+emit_16(154);
+emit_16(52);
+emit_16(155);
+emit_16(54);
+emit_16(155);
+emit_16(52);
+emit_16(155);
+emit_16(54);
+emit_16(156);
+emit_16(56);
+emit_16(156);
+emit_16(54);
+emit_16(156);
+emit_16(56);
+emit_16(157);
+emit_16(58);
+emit_16(157);
+emit_16(56);
+emit_16(157);
+emit_16(58);
+emit_16(158);
+emit_16(60);
+emit_16(158);
+emit_16(58);
+emit_16(158);
+emit_16(60);
+emit_16(159);
+emit_16(62);
+emit_16(159);
+emit_16(60);
+emit_16(159);
+emit_16(62);
+emit_16(160);
+emit_16(64);
+emit_16(160);
+emit_16(62);
+emit_16(160);
+emit_16(64);
+emit_16(161);
+emit_16(66);
+emit_16(161);
+emit_16(64);
+emit_16(161);
+emit_16(66);
+emit_16(162);
+emit_16(68);
+emit_16(162);
+emit_16(66);
+emit_16(162);
+emit_16(68);
+emit_16(163);
+emit_16(70);
+emit_16(163);
+emit_16(68);
+emit_16(163);
+emit_16(70);
+emit_16(164);
+emit_16(72);
+emit_16(164);
+emit_16(70);
+emit_16(164);
+emit_16(72);
+emit_16(165);
+emit_16(74);
+emit_16(165);
+emit_16(72);
+emit_16(165);
+emit_16(74);
+emit_16(166);
+emit_16(76);
+emit_16(166);
+emit_16(74);
+emit_16(166);
+emit_16(76);
+emit_16(167);
+emit_16(78);
+emit_16(167);
+emit_16(76);
+emit_16(167);
+emit_16(78);
+emit_16(168);
+emit_16(80);
+emit_16(168);
+emit_16(78);
+emit_16(168);
+emit_16(80);
+emit_16(169);
+emit_16(82);
+emit_16(169);
+emit_16(80);
+emit_16(169);
+emit_16(82);
+emit_16(170);
+emit_16(84);
+emit_16(170);
+emit_16(82);
+emit_16(170);
+emit_16(84);
+emit_16(171);
+emit_16(86);
+emit_16(171);
+emit_16(84);
+emit_16(171);
+emit_16(86);
+emit_16(172);
+emit_16(88);
+emit_16(172);
+emit_16(86);
+emit_16(172);
+emit_16(88);
+emit_16(173);
+emit_16(90);
+emit_16(173);
+emit_16(88);
+emit_16(173);
+emit_16(90);
+emit_16(174);
+emit_16(92);
+emit_16(174);
+emit_16(90);
+emit_16(174);
+emit_16(92);
+emit_16(175);
+emit_16(94);
+emit_16(175);
+emit_16(92);
+emit_16(175);
+emit_16(94);
+emit_16(176);
+emit_16(96);
+emit_16(176);
+emit_16(94);
+emit_16(176);
+emit_16(96);
+emit_16(177);
+emit_16(98);
+emit_16(177);
+emit_16(96);
+emit_16(177);
+emit_16(98);
+emit_16(178);
+emit_16(100);
+emit_16(178);
+emit_16(98);
+emit_16(178);
+emit_16(100);
+emit_16(179);
+emit_16(102);
+emit_16(179);
+emit_16(100);
+emit_16(179);
+emit_16(102);
+emit_16(180);
+emit_16(104);
+emit_16(180);
+emit_16(102);
+emit_16(180);
+emit_16(104);
+emit_16(181);
+emit_16(106);
+emit_16(181);
+emit_16(104);
+emit_16(181);
+emit_16(106);
+emit_16(182);
+emit_16(108);
+emit_16(182);
+emit_16(106);
+emit_16(182);
+emit_16(108);
+emit_16(183);
+emit_16(110);
+emit_16(183);
+emit_16(108);
+emit_16(183);
+emit_16(110);
+emit_16(184);
+emit_16(112);
+emit_16(184);
+emit_16(110);
+emit_16(184);
+emit_16(112);
+emit_16(185);
+emit_16(114);
+emit_16(185);
+emit_16(112);
+emit_16(185);
+emit_16(114);
+emit_16(186);
+emit_16(116);
+emit_16(186);
+emit_16(114);
+emit_16(186);
+emit_16(116);
+emit_16(187);
+emit_16(118);
+emit_16(187);
+emit_16(116);
+emit_16(187);
+emit_16(118);
+emit_16(188);
+emit_16(120);
+emit_16(188);
+emit_16(118);
+emit_16(188);
+emit_16(120);
+emit_16(189);
+emit_16(122);
+emit_16(189);
+emit_16(120);
+emit_16(189);
+emit_16(122);
+emit_16(190);
+emit_16(124);
+emit_16(190);
+emit_16(122);
+emit_16(190);
+emit_16(124);
+emit_16(191);
+emit_16(126);
+emit_16(191);
+emit_16(124);
+emit_16(192);
+emit_16(128);
+emit_16(193);
+emit_16(129);
+emit_16(193);
+emit_16(128);
+emit_16(193);
+emit_16(129);
+emit_16(194);
+emit_16(130);
+emit_16(194);
+emit_16(129);
+emit_16(194);
+emit_16(130);
+emit_16(195);
+emit_16(131);
+emit_16(195);
+emit_16(130);
+emit_16(195);
+emit_16(131);
+emit_16(196);
+emit_16(132);
+emit_16(196);
+emit_16(131);
+emit_16(196);
+emit_16(132);
+emit_16(197);
+emit_16(133);
+emit_16(197);
+emit_16(132);
+emit_16(197);
+emit_16(133);
+emit_16(198);
+emit_16(134);
+emit_16(198);
+emit_16(133);
+emit_16(198);
+emit_16(134);
+emit_16(199);
+emit_16(135);
+emit_16(199);
+emit_16(134);
+emit_16(199);
+emit_16(135);
+emit_16(200);
+emit_16(136);
+emit_16(200);
+emit_16(135);
+emit_16(200);
+emit_16(136);
+emit_16(201);
+emit_16(137);
+emit_16(201);
+emit_16(136);
+emit_16(201);
+emit_16(137);
+emit_16(202);
+emit_16(138);
+emit_16(202);
+emit_16(137);
+emit_16(202);
+emit_16(138);
+emit_16(203);
+emit_16(139);
+emit_16(203);
+emit_16(138);
+emit_16(203);
+emit_16(139);
+emit_16(204);
+emit_16(140);
+emit_16(204);
+emit_16(139);
+emit_16(204);
+emit_16(140);
+emit_16(205);
+emit_16(141);
+emit_16(205);
+emit_16(140);
+emit_16(205);
+emit_16(141);
+emit_16(206);
+emit_16(142);
+emit_16(206);
+emit_16(141);
+emit_16(206);
+emit_16(142);
+emit_16(207);
+emit_16(143);
+emit_16(207);
+emit_16(142);
+emit_16(207);
+emit_16(143);
+emit_16(208);
+emit_16(144);
+emit_16(208);
+emit_16(143);
+emit_16(208);
+emit_16(144);
+emit_16(209);
+emit_16(145);
+emit_16(209);
+emit_16(144);
+emit_16(209);
+emit_16(145);
+emit_16(210);
+emit_16(146);
+emit_16(210);
+emit_16(145);
+emit_16(210);
+emit_16(146);
+emit_16(211);
+emit_16(147);
+emit_16(211);
+emit_16(146);
+emit_16(211);
+emit_16(147);
+emit_16(212);
+emit_16(148);
+emit_16(212);
+emit_16(147);
+emit_16(212);
+emit_16(148);
+emit_16(213);
+emit_16(149);
+emit_16(213);
+emit_16(148);
+emit_16(213);
+emit_16(149);
+emit_16(214);
+emit_16(150);
+emit_16(214);
+emit_16(149);
+emit_16(214);
+emit_16(150);
+emit_16(215);
+emit_16(151);
+emit_16(215);
+emit_16(150);
+emit_16(215);
+emit_16(151);
+emit_16(216);
+emit_16(152);
+emit_16(216);
+emit_16(151);
+emit_16(216);
+emit_16(152);
+emit_16(217);
+emit_16(153);
+emit_16(217);
+emit_16(152);
+emit_16(217);
+emit_16(153);
+emit_16(218);
+emit_16(154);
+emit_16(218);
+emit_16(153);
+emit_16(218);
+emit_16(154);
+emit_16(219);
+emit_16(155);
+emit_16(219);
+emit_16(154);
+emit_16(219);
+emit_16(155);
+emit_16(220);
+emit_16(156);
+emit_16(220);
+emit_16(155);
+emit_16(220);
+emit_16(156);
+emit_16(221);
+emit_16(157);
+emit_16(221);
+emit_16(156);
+emit_16(221);
+emit_16(157);
+emit_16(222);
+emit_16(158);
+emit_16(222);
+emit_16(157);
+emit_16(222);
+emit_16(158);
+emit_16(223);
+emit_16(159);
+emit_16(223);
+emit_16(158);
+emit_16(223);
+emit_16(159);
+emit_16(224);
+emit_16(160);
+emit_16(224);
+emit_16(159);
+emit_16(224);
+emit_16(160);
+emit_16(225);
+emit_16(161);
+emit_16(225);
+emit_16(160);
+emit_16(225);
+emit_16(161);
+emit_16(226);
+emit_16(162);
+emit_16(226);
+emit_16(161);
+emit_16(226);
+emit_16(162);
+emit_16(227);
+emit_16(163);
+emit_16(227);
+emit_16(162);
+emit_16(227);
+emit_16(163);
+emit_16(228);
+emit_16(164);
+emit_16(228);
+emit_16(163);
+emit_16(228);
+emit_16(164);
+emit_16(229);
+emit_16(165);
+emit_16(229);
+emit_16(164);
+emit_16(229);
+emit_16(165);
+emit_16(230);
+emit_16(166);
+emit_16(230);
+emit_16(165);
+emit_16(230);
+emit_16(166);
+emit_16(231);
+emit_16(167);
+emit_16(231);
+emit_16(166);
+emit_16(231);
+emit_16(167);
+emit_16(232);
+emit_16(168);
+emit_16(232);
+emit_16(167);
+emit_16(232);
+emit_16(168);
+emit_16(233);
+emit_16(169);
+emit_16(233);
+emit_16(168);
+emit_16(233);
+emit_16(169);
+emit_16(234);
+emit_16(170);
+emit_16(234);
+emit_16(169);
+emit_16(234);
+emit_16(170);
+emit_16(235);
+emit_16(171);
+emit_16(235);
+emit_16(170);
+emit_16(235);
+emit_16(171);
+emit_16(236);
+emit_16(172);
+emit_16(236);
+emit_16(171);
+emit_16(236);
+emit_16(172);
+emit_16(237);
+emit_16(173);
+emit_16(237);
+emit_16(172);
+emit_16(237);
+emit_16(173);
+emit_16(238);
+emit_16(174);
+emit_16(238);
+emit_16(173);
+emit_16(238);
+emit_16(174);
+emit_16(239);
+emit_16(175);
+emit_16(239);
+emit_16(174);
+emit_16(239);
+emit_16(175);
+emit_16(240);
+emit_16(176);
+emit_16(240);
+emit_16(175);
+emit_16(240);
+emit_16(176);
+emit_16(241);
+emit_16(177);
+emit_16(241);
+emit_16(176);
+emit_16(241);
+emit_16(177);
+emit_16(242);
+emit_16(178);
+emit_16(242);
+emit_16(177);
+emit_16(242);
+emit_16(178);
+emit_16(243);
+emit_16(179);
+emit_16(243);
+emit_16(178);
+emit_16(243);
+emit_16(179);
+emit_16(244);
+emit_16(180);
+emit_16(244);
+emit_16(179);
+emit_16(244);
+emit_16(180);
+emit_16(245);
+emit_16(181);
+emit_16(245);
+emit_16(180);
+emit_16(245);
+emit_16(181);
+emit_16(246);
+emit_16(182);
+emit_16(246);
+emit_16(181);
+emit_16(246);
+emit_16(182);
+emit_16(247);
+emit_16(183);
+emit_16(247);
+emit_16(182);
+emit_16(247);
+emit_16(183);
+emit_16(248);
+emit_16(184);
+emit_16(248);
+emit_16(183);
+emit_16(248);
+emit_16(184);
+emit_16(249);
+emit_16(185);
+emit_16(249);
+emit_16(184);
+emit_16(249);
+emit_16(185);
+emit_16(250);
+emit_16(186);
+emit_16(250);
+emit_16(185);
+emit_16(250);
+emit_16(186);
+emit_16(251);
+emit_16(187);
+emit_16(251);
+emit_16(186);
+emit_16(251);
+emit_16(187);
+emit_16(252);
+emit_16(188);
+emit_16(252);
+emit_16(187);
+emit_16(252);
+emit_16(188);
+emit_16(253);
+emit_16(189);
+emit_16(253);
+emit_16(188);
+emit_16(253);
+emit_16(189);
+emit_16(254);
+emit_16(190);
+emit_16(254);
+emit_16(189);
+emit_16(254);
+emit_16(190);
+emit_16(255);
+emit_16(191);
+emit_16(255);
+emit_16(190);
+emit_16(256);
+emit_16(192);
+emit_16(257);
+emit_16(193);
+emit_16(257);
+emit_16(192);
+emit_16(257);
+emit_16(193);
+emit_16(258);
+emit_16(194);
+emit_16(258);
+emit_16(193);
+emit_16(258);
+emit_16(194);
+emit_16(259);
+emit_16(195);
+emit_16(259);
+emit_16(194);
+emit_16(259);
+emit_16(195);
+emit_16(260);
+emit_16(196);
+emit_16(260);
+emit_16(195);
+emit_16(260);
+emit_16(196);
+emit_16(261);
+emit_16(197);
+emit_16(261);
+emit_16(196);
+emit_16(261);
+emit_16(197);
+emit_16(262);
+emit_16(198);
+emit_16(262);
+emit_16(197);
+emit_16(262);
+emit_16(198);
+emit_16(263);
+emit_16(199);
+emit_16(263);
+emit_16(198);
+emit_16(263);
+emit_16(199);
+emit_16(264);
+emit_16(200);
+emit_16(264);
+emit_16(199);
+emit_16(264);
+emit_16(200);
+emit_16(265);
+emit_16(201);
+emit_16(265);
+emit_16(200);
+emit_16(265);
+emit_16(201);
+emit_16(266);
+emit_16(202);
+emit_16(266);
+emit_16(201);
+emit_16(266);
+emit_16(202);
+emit_16(267);
+emit_16(203);
+emit_16(267);
+emit_16(202);
+emit_16(267);
+emit_16(203);
+emit_16(268);
+emit_16(204);
+emit_16(268);
+emit_16(203);
+emit_16(268);
+emit_16(204);
+emit_16(269);
+emit_16(205);
+emit_16(269);
+emit_16(204);
+emit_16(269);
+emit_16(205);
+emit_16(270);
+emit_16(206);
+emit_16(270);
+emit_16(205);
+emit_16(270);
+emit_16(206);
+emit_16(271);
+emit_16(207);
+emit_16(271);
+emit_16(206);
+emit_16(271);
+emit_16(207);
+emit_16(272);
+emit_16(208);
+emit_16(272);
+emit_16(207);
+emit_16(272);
+emit_16(208);
+emit_16(273);
+emit_16(209);
+emit_16(273);
+emit_16(208);
+emit_16(273);
+emit_16(209);
+emit_16(274);
+emit_16(210);
+emit_16(274);
+emit_16(209);
+emit_16(274);
+emit_16(210);
+emit_16(275);
+emit_16(211);
+emit_16(275);
+emit_16(210);
+emit_16(275);
+emit_16(211);
+emit_16(276);
+emit_16(212);
+emit_16(276);
+emit_16(211);
+emit_16(276);
+emit_16(212);
+emit_16(277);
+emit_16(213);
+emit_16(277);
+emit_16(212);
+emit_16(277);
+emit_16(213);
+emit_16(278);
+emit_16(214);
+emit_16(278);
+emit_16(213);
+emit_16(278);
+emit_16(214);
+emit_16(279);
+emit_16(215);
+emit_16(279);
+emit_16(214);
+emit_16(279);
+emit_16(215);
+emit_16(280);
+emit_16(216);
+emit_16(280);
+emit_16(215);
+emit_16(280);
+emit_16(216);
+emit_16(281);
+emit_16(217);
+emit_16(281);
+emit_16(216);
+emit_16(281);
+emit_16(217);
+emit_16(282);
+emit_16(218);
+emit_16(282);
+emit_16(217);
+emit_16(282);
+emit_16(218);
+emit_16(283);
+emit_16(219);
+emit_16(283);
+emit_16(218);
+emit_16(283);
+emit_16(219);
+emit_16(284);
+emit_16(220);
+emit_16(284);
+emit_16(219);
+emit_16(284);
+emit_16(220);
+emit_16(285);
+emit_16(221);
+emit_16(285);
+emit_16(220);
+emit_16(285);
+emit_16(221);
+emit_16(286);
+emit_16(222);
+emit_16(286);
+emit_16(221);
+emit_16(286);
+emit_16(222);
+emit_16(287);
+emit_16(223);
+emit_16(287);
+emit_16(222);
+emit_16(287);
+emit_16(223);
+emit_16(288);
+emit_16(224);
+emit_16(288);
+emit_16(223);
+emit_16(288);
+emit_16(224);
+emit_16(289);
+emit_16(225);
+emit_16(289);
+emit_16(224);
+emit_16(289);
+emit_16(225);
+emit_16(290);
+emit_16(226);
+emit_16(290);
+emit_16(225);
+emit_16(290);
+emit_16(226);
+emit_16(291);
+emit_16(227);
+emit_16(291);
+emit_16(226);
+emit_16(291);
+emit_16(227);
+emit_16(292);
+emit_16(228);
+emit_16(292);
+emit_16(227);
+emit_16(292);
+emit_16(228);
+emit_16(293);
+emit_16(229);
+emit_16(293);
+emit_16(228);
+emit_16(293);
+emit_16(229);
+emit_16(294);
+emit_16(230);
+emit_16(294);
+emit_16(229);
+emit_16(294);
+emit_16(230);
+emit_16(295);
+emit_16(231);
+emit_16(295);
+emit_16(230);
+emit_16(295);
+emit_16(231);
+emit_16(296);
+emit_16(232);
+emit_16(296);
+emit_16(231);
+emit_16(296);
+emit_16(232);
+emit_16(297);
+emit_16(233);
+emit_16(297);
+emit_16(232);
+emit_16(297);
+emit_16(233);
+emit_16(298);
+emit_16(234);
+emit_16(298);
+emit_16(233);
+emit_16(298);
+emit_16(234);
+emit_16(299);
+emit_16(235);
+emit_16(299);
+emit_16(234);
+emit_16(299);
+emit_16(235);
+emit_16(300);
+emit_16(236);
+emit_16(300);
+emit_16(235);
+emit_16(300);
+emit_16(236);
+emit_16(301);
+emit_16(237);
+emit_16(301);
+emit_16(236);
+emit_16(301);
+emit_16(237);
+emit_16(302);
+emit_16(238);
+emit_16(302);
+emit_16(237);
+emit_16(302);
+emit_16(238);
+emit_16(303);
+emit_16(239);
+emit_16(303);
+emit_16(238);
+emit_16(303);
+emit_16(239);
+emit_16(304);
+emit_16(240);
+emit_16(304);
+emit_16(239);
+emit_16(304);
+emit_16(240);
+emit_16(305);
+emit_16(241);
+emit_16(305);
+emit_16(240);
+emit_16(305);
+emit_16(241);
+emit_16(306);
+emit_16(242);
+emit_16(306);
+emit_16(241);
+emit_16(306);
+emit_16(242);
+emit_16(307);
+emit_16(243);
+emit_16(307);
+emit_16(242);
+emit_16(307);
+emit_16(243);
+emit_16(308);
+emit_16(244);
+emit_16(308);
+emit_16(243);
+emit_16(308);
+emit_16(244);
+emit_16(309);
+emit_16(245);
+emit_16(309);
+emit_16(244);
+emit_16(309);
+emit_16(245);
+emit_16(310);
+emit_16(246);
+emit_16(310);
+emit_16(245);
+emit_16(310);
+emit_16(246);
+emit_16(311);
+emit_16(247);
+emit_16(311);
+emit_16(246);
+emit_16(311);
+emit_16(247);
+emit_16(312);
+emit_16(248);
+emit_16(312);
+emit_16(247);
+emit_16(312);
+emit_16(248);
+emit_16(313);
+emit_16(249);
+emit_16(313);
+emit_16(248);
+emit_16(313);
+emit_16(249);
+emit_16(314);
+emit_16(250);
+emit_16(314);
+emit_16(249);
+emit_16(314);
+emit_16(250);
+emit_16(315);
+emit_16(251);
+emit_16(315);
+emit_16(250);
+emit_16(315);
+emit_16(251);
+emit_16(316);
+emit_16(252);
+emit_16(316);
+emit_16(251);
+emit_16(316);
+emit_16(252);
+emit_16(317);
+emit_16(253);
+emit_16(317);
+emit_16(252);
+emit_16(317);
+emit_16(253);
+emit_16(318);
+emit_16(254);
+emit_16(318);
+emit_16(253);
+emit_16(318);
+emit_16(254);
+emit_16(319);
+emit_16(255);
+emit_16(319);
+emit_16(254);
+emit_16(320);
+emit_16(256);
+emit_16(321);
+emit_16(257);
+emit_16(321);
+emit_16(256);
+emit_16(321);
+emit_16(257);
+emit_16(322);
+emit_16(258);
+emit_16(322);
+emit_16(257);
+emit_16(322);
+emit_16(258);
+emit_16(323);
+emit_16(259);
+emit_16(323);
+emit_16(258);
+emit_16(323);
+emit_16(259);
+emit_16(324);
+emit_16(260);
+emit_16(324);
+emit_16(259);
+emit_16(324);
+emit_16(260);
+emit_16(325);
+emit_16(261);
+emit_16(325);
+emit_16(260);
+emit_16(325);
+emit_16(261);
+emit_16(326);
+emit_16(262);
+emit_16(326);
+emit_16(261);
+emit_16(326);
+emit_16(262);
+emit_16(327);
+emit_16(263);
+emit_16(327);
+emit_16(262);
+emit_16(327);
+emit_16(263);
+emit_16(328);
+emit_16(264);
+emit_16(328);
+emit_16(263);
+emit_16(328);
+emit_16(264);
+emit_16(329);
+emit_16(265);
+emit_16(329);
+emit_16(264);
+emit_16(329);
+emit_16(265);
+emit_16(330);
+emit_16(266);
+emit_16(330);
+emit_16(265);
+emit_16(330);
+emit_16(266);
+emit_16(331);
+emit_16(267);
+emit_16(331);
+emit_16(266);
+emit_16(331);
+emit_16(267);
+emit_16(332);
+emit_16(268);
+emit_16(332);
+emit_16(267);
+emit_16(332);
+emit_16(268);
+emit_16(333);
+emit_16(269);
+emit_16(333);
+emit_16(268);
+emit_16(333);
+emit_16(269);
+emit_16(334);
+emit_16(270);
+emit_16(334);
+emit_16(269);
+emit_16(334);
+emit_16(270);
+emit_16(335);
+emit_16(271);
+emit_16(335);
+emit_16(270);
+emit_16(335);
+emit_16(271);
+emit_16(336);
+emit_16(272);
+emit_16(336);
+emit_16(271);
+emit_16(336);
+emit_16(272);
+emit_16(337);
+emit_16(273);
+emit_16(337);
+emit_16(272);
+emit_16(337);
+emit_16(273);
+emit_16(338);
+emit_16(274);
+emit_16(338);
+emit_16(273);
+emit_16(338);
+emit_16(274);
+emit_16(339);
+emit_16(275);
+emit_16(339);
+emit_16(274);
+emit_16(339);
+emit_16(275);
+emit_16(340);
+emit_16(276);
+emit_16(340);
+emit_16(275);
+emit_16(340);
+emit_16(276);
+emit_16(341);
+emit_16(277);
+emit_16(341);
+emit_16(276);
+emit_16(341);
+emit_16(277);
+emit_16(342);
+emit_16(278);
+emit_16(342);
+emit_16(277);
+emit_16(342);
+emit_16(278);
+emit_16(343);
+emit_16(279);
+emit_16(343);
+emit_16(278);
+emit_16(343);
+emit_16(279);
+emit_16(344);
+emit_16(280);
+emit_16(344);
+emit_16(279);
+emit_16(344);
+emit_16(280);
+emit_16(345);
+emit_16(281);
+emit_16(345);
+emit_16(280);
+emit_16(345);
+emit_16(281);
+emit_16(346);
+emit_16(282);
+emit_16(346);
+emit_16(281);
+emit_16(346);
+emit_16(282);
+emit_16(347);
+emit_16(283);
+emit_16(347);
+emit_16(282);
+emit_16(347);
+emit_16(283);
+emit_16(348);
+emit_16(284);
+emit_16(348);
+emit_16(283);
+emit_16(348);
+emit_16(284);
+emit_16(349);
+emit_16(285);
+emit_16(349);
+emit_16(284);
+emit_16(349);
+emit_16(285);
+emit_16(350);
+emit_16(286);
+emit_16(350);
+emit_16(285);
+emit_16(350);
+emit_16(286);
+emit_16(351);
+emit_16(287);
+emit_16(351);
+emit_16(286);
+emit_16(351);
+emit_16(287);
+emit_16(352);
+emit_16(288);
+emit_16(352);
+emit_16(287);
+emit_16(352);
+emit_16(288);
+emit_16(353);
+emit_16(289);
+emit_16(353);
+emit_16(288);
+emit_16(353);
+emit_16(289);
+emit_16(354);
+emit_16(290);
+emit_16(354);
+emit_16(289);
+emit_16(354);
+emit_16(290);
+emit_16(355);
+emit_16(291);
+emit_16(355);
+emit_16(290);
+emit_16(355);
+emit_16(291);
+emit_16(356);
+emit_16(292);
+emit_16(356);
+emit_16(291);
+emit_16(356);
+emit_16(292);
+emit_16(357);
+emit_16(293);
+emit_16(357);
+emit_16(292);
+emit_16(357);
+emit_16(293);
+emit_16(358);
+emit_16(294);
+emit_16(358);
+emit_16(293);
+emit_16(358);
+emit_16(294);
+emit_16(359);
+emit_16(295);
+emit_16(359);
+emit_16(294);
+emit_16(359);
+emit_16(295);
+emit_16(360);
+emit_16(296);
+emit_16(360);
+emit_16(295);
+emit_16(360);
+emit_16(296);
+emit_16(361);
+emit_16(297);
+emit_16(361);
+emit_16(296);
+emit_16(361);
+emit_16(297);
+emit_16(362);
+emit_16(298);
+emit_16(362);
+emit_16(297);
+emit_16(362);
+emit_16(298);
+emit_16(363);
+emit_16(299);
+emit_16(363);
+emit_16(298);
+emit_16(363);
+emit_16(299);
+emit_16(364);
+emit_16(300);
+emit_16(364);
+emit_16(299);
+emit_16(364);
+emit_16(300);
+emit_16(365);
+emit_16(301);
+emit_16(365);
+emit_16(300);
+emit_16(365);
+emit_16(301);
+emit_16(366);
+emit_16(302);
+emit_16(366);
+emit_16(301);
+emit_16(366);
+emit_16(302);
+emit_16(367);
+emit_16(303);
+emit_16(367);
+emit_16(302);
+emit_16(367);
+emit_16(303);
+emit_16(368);
+emit_16(304);
+emit_16(368);
+emit_16(303);
+emit_16(368);
+emit_16(304);
+emit_16(369);
+emit_16(305);
+emit_16(369);
+emit_16(304);
+emit_16(369);
+emit_16(305);
+emit_16(370);
+emit_16(306);
+emit_16(370);
+emit_16(305);
+emit_16(370);
+emit_16(306);
+emit_16(371);
+emit_16(307);
+emit_16(371);
+emit_16(306);
+emit_16(371);
+emit_16(307);
+emit_16(372);
+emit_16(308);
+emit_16(372);
+emit_16(307);
+emit_16(372);
+emit_16(308);
+emit_16(373);
+emit_16(309);
+emit_16(373);
+emit_16(308);
+emit_16(373);
+emit_16(309);
+emit_16(374);
+emit_16(310);
+emit_16(374);
+emit_16(309);
+emit_16(374);
+emit_16(310);
+emit_16(375);
+emit_16(311);
+emit_16(375);
+emit_16(310);
+emit_16(375);
+emit_16(311);
+emit_16(376);
+emit_16(312);
+emit_16(376);
+emit_16(311);
+emit_16(376);
+emit_16(312);
+emit_16(377);
+emit_16(313);
+emit_16(377);
+emit_16(312);
+emit_16(377);
+emit_16(313);
+emit_16(378);
+emit_16(314);
+emit_16(378);
+emit_16(313);
+emit_16(378);
+emit_16(314);
+emit_16(379);
+emit_16(315);
+emit_16(379);
+emit_16(314);
+emit_16(379);
+emit_16(315);
+emit_16(380);
+emit_16(316);
+emit_16(380);
+emit_16(315);
+emit_16(380);
+emit_16(316);
+emit_16(381);
+emit_16(317);
+emit_16(381);
+emit_16(316);
+emit_16(381);
+emit_16(317);
+emit_16(382);
+emit_16(318);
+emit_16(382);
+emit_16(317);
+emit_16(382);
+emit_16(318);
+emit_16(383);
+emit_16(319);
+emit_16(383);
+emit_16(318);
+emit_16(384);
+emit_16(320);
+emit_16(385);
+emit_16(321);
+emit_16(385);
+emit_16(320);
+emit_16(385);
+emit_16(321);
+emit_16(386);
+emit_16(322);
+emit_16(386);
+emit_16(321);
+emit_16(386);
+emit_16(322);
+emit_16(387);
+emit_16(323);
+emit_16(387);
+emit_16(322);
+emit_16(387);
+emit_16(323);
+emit_16(388);
+emit_16(324);
+emit_16(388);
+emit_16(323);
+emit_16(388);
+emit_16(324);
+emit_16(389);
+emit_16(325);
+emit_16(389);
+emit_16(324);
+emit_16(389);
+emit_16(325);
+emit_16(390);
+emit_16(326);
+emit_16(390);
+emit_16(325);
+emit_16(390);
+emit_16(326);
+emit_16(391);
+emit_16(327);
+emit_16(391);
+emit_16(326);
+emit_16(391);
+emit_16(327);
+emit_16(392);
+emit_16(328);
+emit_16(392);
+emit_16(327);
+emit_16(392);
+emit_16(328);
+emit_16(393);
+emit_16(329);
+emit_16(393);
+emit_16(328);
+emit_16(393);
+emit_16(329);
+emit_16(394);
+emit_16(330);
+emit_16(394);
+emit_16(329);
+emit_16(394);
+emit_16(330);
+emit_16(395);
+emit_16(331);
+emit_16(395);
+emit_16(330);
+emit_16(395);
+emit_16(331);
+emit_16(396);
+emit_16(332);
+emit_16(396);
+emit_16(331);
+emit_16(396);
+emit_16(332);
+emit_16(397);
+emit_16(333);
+emit_16(397);
+emit_16(332);
+emit_16(397);
+emit_16(333);
+emit_16(398);
+emit_16(334);
+emit_16(398);
+emit_16(333);
+emit_16(398);
+emit_16(334);
+emit_16(399);
+emit_16(335);
+emit_16(399);
+emit_16(334);
+emit_16(399);
+emit_16(335);
+emit_16(400);
+emit_16(336);
+emit_16(400);
+emit_16(335);
+emit_16(400);
+emit_16(336);
+emit_16(401);
+emit_16(337);
+emit_16(401);
+emit_16(336);
+emit_16(401);
+emit_16(337);
+emit_16(402);
+emit_16(338);
+emit_16(402);
+emit_16(337);
+emit_16(402);
+emit_16(338);
+emit_16(403);
+emit_16(339);
+emit_16(403);
+emit_16(338);
+emit_16(403);
+emit_16(339);
+emit_16(404);
+emit_16(340);
+emit_16(404);
+emit_16(339);
+emit_16(404);
+emit_16(340);
+emit_16(405);
+emit_16(341);
+emit_16(405);
+emit_16(340);
+emit_16(405);
+emit_16(341);
+emit_16(406);
+emit_16(342);
+emit_16(406);
+emit_16(341);
+emit_16(406);
+emit_16(342);
+emit_16(407);
+emit_16(343);
+emit_16(407);
+emit_16(342);
+emit_16(407);
+emit_16(343);
+emit_16(408);
+emit_16(344);
+emit_16(408);
+emit_16(343);
+emit_16(408);
+emit_16(344);
+emit_16(409);
+emit_16(345);
+emit_16(409);
+emit_16(344);
+emit_16(409);
+emit_16(345);
+emit_16(410);
+emit_16(346);
+emit_16(410);
+emit_16(345);
+emit_16(410);
+emit_16(346);
+emit_16(411);
+emit_16(347);
+emit_16(411);
+emit_16(346);
+emit_16(411);
+emit_16(347);
+emit_16(412);
+emit_16(348);
+emit_16(412);
+emit_16(347);
+emit_16(412);
+emit_16(348);
+emit_16(413);
+emit_16(349);
+emit_16(413);
+emit_16(348);
+emit_16(413);
+emit_16(349);
+emit_16(414);
+emit_16(350);
+emit_16(414);
+emit_16(349);
+emit_16(414);
+emit_16(350);
+emit_16(415);
+emit_16(351);
+emit_16(415);
+emit_16(350);
+emit_16(415);
+emit_16(351);
+emit_16(416);
+emit_16(352);
+emit_16(416);
+emit_16(351);
+emit_16(416);
+emit_16(352);
+emit_16(417);
+emit_16(353);
+emit_16(417);
+emit_16(352);
+emit_16(417);
+emit_16(353);
+emit_16(418);
+emit_16(354);
+emit_16(418);
+emit_16(353);
+emit_16(418);
+emit_16(354);
+emit_16(419);
+emit_16(355);
+emit_16(419);
+emit_16(354);
+emit_16(419);
+emit_16(355);
+emit_16(420);
+emit_16(356);
+emit_16(420);
+emit_16(355);
+emit_16(420);
+emit_16(356);
+emit_16(421);
+emit_16(357);
+emit_16(421);
+emit_16(356);
+emit_16(421);
+emit_16(357);
+emit_16(422);
+emit_16(358);
+emit_16(422);
+emit_16(357);
+emit_16(422);
+emit_16(358);
+emit_16(423);
+emit_16(359);
+emit_16(423);
+emit_16(358);
+emit_16(423);
+emit_16(359);
+emit_16(424);
+emit_16(360);
+emit_16(424);
+emit_16(359);
+emit_16(424);
+emit_16(360);
+emit_16(425);
+emit_16(361);
+emit_16(425);
+emit_16(360);
+emit_16(425);
+emit_16(361);
+emit_16(426);
+emit_16(362);
+emit_16(426);
+emit_16(361);
+emit_16(426);
+emit_16(362);
+emit_16(427);
+emit_16(363);
+emit_16(427);
+emit_16(362);
+emit_16(427);
+emit_16(363);
+emit_16(428);
+emit_16(364);
+emit_16(428);
+emit_16(363);
+emit_16(428);
+emit_16(364);
+emit_16(429);
+emit_16(365);
+emit_16(429);
+emit_16(364);
+emit_16(429);
+emit_16(365);
+emit_16(430);
+emit_16(366);
+emit_16(430);
+emit_16(365);
+emit_16(430);
+emit_16(366);
+emit_16(431);
+emit_16(367);
+emit_16(431);
+emit_16(366);
+emit_16(431);
+emit_16(367);
+emit_16(432);
+emit_16(368);
+emit_16(432);
+emit_16(367);
+emit_16(432);
+emit_16(368);
+emit_16(433);
+emit_16(369);
+emit_16(433);
+emit_16(368);
+emit_16(433);
+emit_16(369);
+emit_16(434);
+emit_16(370);
+emit_16(434);
+emit_16(369);
+emit_16(434);
+emit_16(370);
+emit_16(435);
+emit_16(371);
+emit_16(435);
+emit_16(370);
+emit_16(435);
+emit_16(371);
+emit_16(436);
+emit_16(372);
+emit_16(436);
+emit_16(371);
+emit_16(436);
+emit_16(372);
+emit_16(437);
+emit_16(373);
+emit_16(437);
+emit_16(372);
+emit_16(437);
+emit_16(373);
+emit_16(438);
+emit_16(374);
+emit_16(438);
+emit_16(373);
+emit_16(438);
+emit_16(374);
+emit_16(439);
+emit_16(375);
+emit_16(439);
+emit_16(374);
+emit_16(439);
+emit_16(375);
+emit_16(440);
+emit_16(376);
+emit_16(440);
+emit_16(375);
+emit_16(440);
+emit_16(376);
+emit_16(441);
+emit_16(377);
+emit_16(441);
+emit_16(376);
+emit_16(441);
+emit_16(377);
+emit_16(442);
+emit_16(378);
+emit_16(442);
+emit_16(377);
+emit_16(442);
+emit_16(378);
+emit_16(443);
+emit_16(379);
+emit_16(443);
+emit_16(378);
+emit_16(443);
+emit_16(379);
+emit_16(444);
+emit_16(380);
+emit_16(444);
+emit_16(379);
+emit_16(444);
+emit_16(380);
+emit_16(445);
+emit_16(381);
+emit_16(445);
+emit_16(380);
+emit_16(445);
+emit_16(381);
+emit_16(446);
+emit_16(382);
+emit_16(446);
+emit_16(381);
+emit_16(446);
+emit_16(382);
+emit_16(447);
+emit_16(383);
+emit_16(447);
+emit_16(382);
+emit_16(448);
+emit_16(384);
+emit_16(449);
+emit_16(385);
+emit_16(449);
+emit_16(384);
+emit_16(449);
+emit_16(385);
+emit_16(450);
+emit_16(386);
+emit_16(450);
+emit_16(385);
+emit_16(450);
+emit_16(386);
+emit_16(451);
+emit_16(387);
+emit_16(451);
+emit_16(386);
+emit_16(451);
+emit_16(387);
+emit_16(452);
+emit_16(388);
+emit_16(452);
+emit_16(387);
+emit_16(452);
+emit_16(388);
+emit_16(453);
+emit_16(389);
+emit_16(453);
+emit_16(388);
+emit_16(453);
+emit_16(389);
+emit_16(454);
+emit_16(390);
+emit_16(454);
+emit_16(389);
+emit_16(454);
+emit_16(390);
+emit_16(455);
+emit_16(391);
+emit_16(455);
+emit_16(390);
+emit_16(455);
+emit_16(391);
+emit_16(456);
+emit_16(392);
+emit_16(456);
+emit_16(391);
+emit_16(456);
+emit_16(392);
+emit_16(457);
+emit_16(393);
+emit_16(457);
+emit_16(392);
+emit_16(457);
+emit_16(393);
+emit_16(458);
+emit_16(394);
+emit_16(458);
+emit_16(393);
+emit_16(458);
+emit_16(394);
+emit_16(459);
+emit_16(395);
+emit_16(459);
+emit_16(394);
+emit_16(459);
+emit_16(395);
+emit_16(460);
+emit_16(396);
+emit_16(460);
+emit_16(395);
+emit_16(460);
+emit_16(396);
+emit_16(461);
+emit_16(397);
+emit_16(461);
+emit_16(396);
+emit_16(461);
+emit_16(397);
+emit_16(462);
+emit_16(398);
+emit_16(462);
+emit_16(397);
+emit_16(462);
+emit_16(398);
+emit_16(463);
+emit_16(399);
+emit_16(463);
+emit_16(398);
+emit_16(463);
+emit_16(399);
+emit_16(464);
+emit_16(400);
+emit_16(464);
+emit_16(399);
+emit_16(464);
+emit_16(400);
+emit_16(465);
+emit_16(401);
+emit_16(465);
+emit_16(400);
+emit_16(465);
+emit_16(401);
+emit_16(466);
+emit_16(402);
+emit_16(466);
+emit_16(401);
+emit_16(466);
+emit_16(402);
+emit_16(467);
+emit_16(403);
+emit_16(467);
+emit_16(402);
+emit_16(467);
+emit_16(403);
+emit_16(468);
+emit_16(404);
+emit_16(468);
+emit_16(403);
+emit_16(468);
+emit_16(404);
+emit_16(469);
+emit_16(405);
+emit_16(469);
+emit_16(404);
+emit_16(469);
+emit_16(405);
+emit_16(470);
+emit_16(406);
+emit_16(470);
+emit_16(405);
+emit_16(470);
+emit_16(406);
+emit_16(471);
+emit_16(407);
+emit_16(471);
+emit_16(406);
+emit_16(471);
+emit_16(407);
+emit_16(472);
+emit_16(408);
+emit_16(472);
+emit_16(407);
+emit_16(472);
+emit_16(408);
+emit_16(473);
+emit_16(409);
+emit_16(473);
+emit_16(408);
+emit_16(473);
+emit_16(409);
+emit_16(474);
+emit_16(410);
+emit_16(474);
+emit_16(409);
+emit_16(474);
+emit_16(410);
+emit_16(475);
+emit_16(411);
+emit_16(475);
+emit_16(410);
+emit_16(475);
+emit_16(411);
+emit_16(476);
+emit_16(412);
+emit_16(476);
+emit_16(411);
+emit_16(476);
+emit_16(412);
+emit_16(477);
+emit_16(413);
+emit_16(477);
+emit_16(412);
+emit_16(477);
+emit_16(413);
+emit_16(478);
+emit_16(414);
+emit_16(478);
+emit_16(413);
+emit_16(478);
+emit_16(414);
+emit_16(479);
+emit_16(415);
+emit_16(479);
+emit_16(414);
+emit_16(479);
+emit_16(415);
+emit_16(480);
+emit_16(416);
+emit_16(480);
+emit_16(415);
+emit_16(480);
+emit_16(416);
+emit_16(481);
+emit_16(417);
+emit_16(481);
+emit_16(416);
+emit_16(481);
+emit_16(417);
+emit_16(482);
+emit_16(418);
+emit_16(482);
+emit_16(417);
+emit_16(482);
+emit_16(418);
+emit_16(483);
+emit_16(419);
+emit_16(483);
+emit_16(418);
+emit_16(483);
+emit_16(419);
+emit_16(484);
+emit_16(420);
+emit_16(484);
+emit_16(419);
+emit_16(484);
+emit_16(420);
+emit_16(485);
+emit_16(421);
+emit_16(485);
+emit_16(420);
+emit_16(485);
+emit_16(421);
+emit_16(486);
+emit_16(422);
+emit_16(486);
+emit_16(421);
+emit_16(486);
+emit_16(422);
+emit_16(487);
+emit_16(423);
+emit_16(487);
+emit_16(422);
+emit_16(487);
+emit_16(423);
+emit_16(488);
+emit_16(424);
+emit_16(488);
+emit_16(423);
+emit_16(488);
+emit_16(424);
+emit_16(489);
+emit_16(425);
+emit_16(489);
+emit_16(424);
+emit_16(489);
+emit_16(425);
+emit_16(490);
+emit_16(426);
+emit_16(490);
+emit_16(425);
+emit_16(490);
+emit_16(426);
+emit_16(491);
+emit_16(427);
+emit_16(491);
+emit_16(426);
+emit_16(491);
+emit_16(427);
+emit_16(492);
+emit_16(428);
+emit_16(492);
+emit_16(427);
+emit_16(492);
+emit_16(428);
+emit_16(493);
+emit_16(429);
+emit_16(493);
+emit_16(428);
+emit_16(493);
+emit_16(429);
+emit_16(494);
+emit_16(430);
+emit_16(494);
+emit_16(429);
+emit_16(494);
+emit_16(430);
+emit_16(495);
+emit_16(431);
+emit_16(495);
+emit_16(430);
+emit_16(495);
+emit_16(431);
+emit_16(496);
+emit_16(432);
+emit_16(496);
+emit_16(431);
+emit_16(496);
+emit_16(432);
+emit_16(497);
+emit_16(433);
+emit_16(497);
+emit_16(432);
+emit_16(497);
+emit_16(433);
+emit_16(498);
+emit_16(434);
+emit_16(498);
+emit_16(433);
+emit_16(498);
+emit_16(434);
+emit_16(499);
+emit_16(435);
+emit_16(499);
+emit_16(434);
+emit_16(499);
+emit_16(435);
+emit_16(500);
+emit_16(436);
+emit_16(500);
+emit_16(435);
+emit_16(500);
+emit_16(436);
+emit_16(501);
+emit_16(437);
+emit_16(501);
+emit_16(436);
+emit_16(501);
+emit_16(437);
+emit_16(502);
+emit_16(438);
+emit_16(502);
+emit_16(437);
+emit_16(502);
+emit_16(438);
+emit_16(503);
+emit_16(439);
+emit_16(503);
+emit_16(438);
+emit_16(503);
+emit_16(439);
+emit_16(504);
+emit_16(440);
+emit_16(504);
+emit_16(439);
+emit_16(504);
+emit_16(440);
+emit_16(505);
+emit_16(441);
+emit_16(505);
+emit_16(440);
+emit_16(505);
+emit_16(441);
+emit_16(506);
+emit_16(442);
+emit_16(506);
+emit_16(441);
+emit_16(506);
+emit_16(442);
+emit_16(507);
+emit_16(443);
+emit_16(507);
+emit_16(442);
+emit_16(507);
+emit_16(443);
+emit_16(508);
+emit_16(444);
+emit_16(508);
+emit_16(443);
+emit_16(508);
+emit_16(444);
+emit_16(509);
+emit_16(445);
+emit_16(509);
+emit_16(444);
+emit_16(509);
+emit_16(445);
+emit_16(510);
+emit_16(446);
+emit_16(510);
+emit_16(445);
+emit_16(510);
+emit_16(446);
+emit_16(511);
+emit_16(447);
+emit_16(511);
+emit_16(446);
+emit_16(512);
+emit_16(448);
+emit_16(513);
+emit_16(449);
+emit_16(513);
+emit_16(448);
+emit_16(513);
+emit_16(449);
+emit_16(514);
+emit_16(450);
+emit_16(514);
+emit_16(449);
+emit_16(514);
+emit_16(450);
+emit_16(515);
+emit_16(451);
+emit_16(515);
+emit_16(450);
+emit_16(515);
+emit_16(451);
+emit_16(516);
+emit_16(452);
+emit_16(516);
+emit_16(451);
+emit_16(516);
+emit_16(452);
+emit_16(517);
+emit_16(453);
+emit_16(517);
+emit_16(452);
+emit_16(517);
+emit_16(453);
+emit_16(518);
+emit_16(454);
+emit_16(518);
+emit_16(453);
+emit_16(518);
+emit_16(454);
+emit_16(519);
+emit_16(455);
+emit_16(519);
+emit_16(454);
+emit_16(519);
+emit_16(455);
+emit_16(520);
+emit_16(456);
+emit_16(520);
+emit_16(455);
+emit_16(520);
+emit_16(456);
+emit_16(521);
+emit_16(457);
+emit_16(521);
+emit_16(456);
+emit_16(521);
+emit_16(457);
+emit_16(522);
+emit_16(458);
+emit_16(522);
+emit_16(457);
+emit_16(522);
+emit_16(458);
+emit_16(523);
+emit_16(459);
+emit_16(523);
+emit_16(458);
+emit_16(523);
+emit_16(459);
+emit_16(524);
+emit_16(460);
+emit_16(524);
+emit_16(459);
+emit_16(524);
+emit_16(460);
+emit_16(525);
+emit_16(461);
+emit_16(525);
+emit_16(460);
+emit_16(525);
+emit_16(461);
+emit_16(526);
+emit_16(462);
+emit_16(526);
+emit_16(461);
+emit_16(526);
+emit_16(462);
+emit_16(527);
+emit_16(463);
+emit_16(527);
+emit_16(462);
+emit_16(527);
+emit_16(463);
+emit_16(528);
+emit_16(464);
+emit_16(528);
+emit_16(463);
+emit_16(528);
+emit_16(464);
+emit_16(529);
+emit_16(465);
+emit_16(529);
+emit_16(464);
+emit_16(529);
+emit_16(465);
+emit_16(530);
+emit_16(466);
+emit_16(530);
+emit_16(465);
+emit_16(530);
+emit_16(466);
+emit_16(531);
+emit_16(467);
+emit_16(531);
+emit_16(466);
+emit_16(531);
+emit_16(467);
+emit_16(532);
+emit_16(468);
+emit_16(532);
+emit_16(467);
+emit_16(532);
+emit_16(468);
+emit_16(533);
+emit_16(469);
+emit_16(533);
+emit_16(468);
+emit_16(533);
+emit_16(469);
+emit_16(534);
+emit_16(470);
+emit_16(534);
+emit_16(469);
+emit_16(534);
+emit_16(470);
+emit_16(535);
+emit_16(471);
+emit_16(535);
+emit_16(470);
+emit_16(535);
+emit_16(471);
+emit_16(536);
+emit_16(472);
+emit_16(536);
+emit_16(471);
+emit_16(536);
+emit_16(472);
+emit_16(537);
+emit_16(473);
+emit_16(537);
+emit_16(472);
+emit_16(537);
+emit_16(473);
+emit_16(538);
+emit_16(474);
+emit_16(538);
+emit_16(473);
+emit_16(538);
+emit_16(474);
+emit_16(539);
+emit_16(475);
+emit_16(539);
+emit_16(474);
+emit_16(539);
+emit_16(475);
+emit_16(540);
+emit_16(476);
+emit_16(540);
+emit_16(475);
+emit_16(540);
+emit_16(476);
+emit_16(541);
+emit_16(477);
+emit_16(541);
+emit_16(476);
+emit_16(541);
+emit_16(477);
+emit_16(542);
+emit_16(478);
+emit_16(542);
+emit_16(477);
+emit_16(542);
+emit_16(478);
+emit_16(543);
+emit_16(479);
+emit_16(543);
+emit_16(478);
+emit_16(543);
+emit_16(479);
+emit_16(544);
+emit_16(480);
+emit_16(544);
+emit_16(479);
+emit_16(544);
+emit_16(480);
+emit_16(545);
+emit_16(481);
+emit_16(545);
+emit_16(480);
+emit_16(545);
+emit_16(481);
+emit_16(546);
+emit_16(482);
+emit_16(546);
+emit_16(481);
+emit_16(546);
+emit_16(482);
+emit_16(547);
+emit_16(483);
+emit_16(547);
+emit_16(482);
+emit_16(547);
+emit_16(483);
+emit_16(548);
+emit_16(484);
+emit_16(548);
+emit_16(483);
+emit_16(548);
+emit_16(484);
+emit_16(549);
+emit_16(485);
+emit_16(549);
+emit_16(484);
+emit_16(549);
+emit_16(485);
+emit_16(550);
+emit_16(486);
+emit_16(550);
+emit_16(485);
+emit_16(550);
+emit_16(486);
+emit_16(551);
+emit_16(487);
+emit_16(551);
+emit_16(486);
+emit_16(551);
+emit_16(487);
+emit_16(552);
+emit_16(488);
+emit_16(552);
+emit_16(487);
+emit_16(552);
+emit_16(488);
+emit_16(553);
+emit_16(489);
+emit_16(553);
+emit_16(488);
+emit_16(553);
+emit_16(489);
+emit_16(554);
+emit_16(490);
+emit_16(554);
+emit_16(489);
+emit_16(554);
+emit_16(490);
+emit_16(555);
+emit_16(491);
+emit_16(555);
+emit_16(490);
+emit_16(555);
+emit_16(491);
+emit_16(556);
+emit_16(492);
+emit_16(556);
+emit_16(491);
+emit_16(556);
+emit_16(492);
+emit_16(557);
+emit_16(493);
+emit_16(557);
+emit_16(492);
+emit_16(557);
+emit_16(493);
+emit_16(558);
+emit_16(494);
+emit_16(558);
+emit_16(493);
+emit_16(558);
+emit_16(494);
+emit_16(559);
+emit_16(495);
+emit_16(559);
+emit_16(494);
+emit_16(559);
+emit_16(495);
+emit_16(560);
+emit_16(496);
+emit_16(560);
+emit_16(495);
+emit_16(560);
+emit_16(496);
+emit_16(561);
+emit_16(497);
+emit_16(561);
+emit_16(496);
+emit_16(561);
+emit_16(497);
+emit_16(562);
+emit_16(498);
+emit_16(562);
+emit_16(497);
+emit_16(562);
+emit_16(498);
+emit_16(563);
+emit_16(499);
+emit_16(563);
+emit_16(498);
+emit_16(563);
+emit_16(499);
+emit_16(564);
+emit_16(500);
+emit_16(564);
+emit_16(499);
+emit_16(564);
+emit_16(500);
+emit_16(565);
+emit_16(501);
+emit_16(565);
+emit_16(500);
+emit_16(565);
+emit_16(501);
+emit_16(566);
+emit_16(502);
+emit_16(566);
+emit_16(501);
+emit_16(566);
+emit_16(502);
+emit_16(567);
+emit_16(503);
+emit_16(567);
+emit_16(502);
+emit_16(567);
+emit_16(503);
+emit_16(568);
+emit_16(504);
+emit_16(568);
+emit_16(503);
+emit_16(568);
+emit_16(504);
+emit_16(569);
+emit_16(505);
+emit_16(569);
+emit_16(504);
+emit_16(569);
+emit_16(505);
+emit_16(570);
+emit_16(506);
+emit_16(570);
+emit_16(505);
+emit_16(570);
+emit_16(506);
+emit_16(571);
+emit_16(507);
+emit_16(571);
+emit_16(506);
+emit_16(571);
+emit_16(507);
+emit_16(572);
+emit_16(508);
+emit_16(572);
+emit_16(507);
+emit_16(572);
+emit_16(508);
+emit_16(573);
+emit_16(509);
+emit_16(573);
+emit_16(508);
+emit_16(573);
+emit_16(509);
+emit_16(574);
+emit_16(510);
+emit_16(574);
+emit_16(509);
+emit_16(574);
+emit_16(510);
+emit_16(575);
+emit_16(511);
+emit_16(575);
+emit_16(510);
+emit_16(576);
+emit_16(512);
+emit_16(577);
+emit_16(513);
+emit_16(577);
+emit_16(512);
+emit_16(577);
+emit_16(513);
+emit_16(578);
+emit_16(514);
+emit_16(578);
+emit_16(513);
+emit_16(578);
+emit_16(514);
+emit_16(579);
+emit_16(515);
+emit_16(579);
+emit_16(514);
+emit_16(579);
+emit_16(515);
+emit_16(580);
+emit_16(516);
+emit_16(580);
+emit_16(515);
+emit_16(580);
+emit_16(516);
+emit_16(581);
+emit_16(517);
+emit_16(581);
+emit_16(516);
+emit_16(581);
+emit_16(517);
+emit_16(582);
+emit_16(518);
+emit_16(582);
+emit_16(517);
+emit_16(582);
+emit_16(518);
+emit_16(583);
+emit_16(519);
+emit_16(583);
+emit_16(518);
+emit_16(583);
+emit_16(519);
+emit_16(584);
+emit_16(520);
+emit_16(584);
+emit_16(519);
+emit_16(584);
+emit_16(520);
+emit_16(585);
+emit_16(521);
+emit_16(585);
+emit_16(520);
+emit_16(585);
+emit_16(521);
+emit_16(586);
+emit_16(522);
+emit_16(586);
+emit_16(521);
+emit_16(586);
+emit_16(522);
+emit_16(587);
+emit_16(523);
+emit_16(587);
+emit_16(522);
+emit_16(587);
+emit_16(523);
+emit_16(588);
+emit_16(524);
+emit_16(588);
+emit_16(523);
+emit_16(588);
+emit_16(524);
+emit_16(589);
+emit_16(525);
+emit_16(589);
+emit_16(524);
+emit_16(589);
+emit_16(525);
+emit_16(590);
+emit_16(526);
+emit_16(590);
+emit_16(525);
+emit_16(590);
+emit_16(526);
+emit_16(591);
+emit_16(527);
+emit_16(591);
+emit_16(526);
+emit_16(591);
+emit_16(527);
+emit_16(592);
+emit_16(528);
+emit_16(592);
+emit_16(527);
+emit_16(592);
+emit_16(528);
+emit_16(593);
+emit_16(529);
+emit_16(593);
+emit_16(528);
+emit_16(593);
+emit_16(529);
+emit_16(594);
+emit_16(530);
+emit_16(594);
+emit_16(529);
+emit_16(594);
+emit_16(530);
+emit_16(595);
+emit_16(531);
+emit_16(595);
+emit_16(530);
+emit_16(595);
+emit_16(531);
+emit_16(596);
+emit_16(532);
+emit_16(596);
+emit_16(531);
+emit_16(596);
+emit_16(532);
+emit_16(597);
+emit_16(533);
+emit_16(597);
+emit_16(532);
+emit_16(597);
+emit_16(533);
+emit_16(598);
+emit_16(534);
+emit_16(598);
+emit_16(533);
+emit_16(598);
+emit_16(534);
+emit_16(599);
+emit_16(535);
+emit_16(599);
+emit_16(534);
+emit_16(599);
+emit_16(535);
+emit_16(600);
+emit_16(536);
+emit_16(600);
+emit_16(535);
+emit_16(600);
+emit_16(536);
+emit_16(601);
+emit_16(537);
+emit_16(601);
+emit_16(536);
+emit_16(601);
+emit_16(537);
+emit_16(602);
+emit_16(538);
+emit_16(602);
+emit_16(537);
+emit_16(602);
+emit_16(538);
+emit_16(603);
+emit_16(539);
+emit_16(603);
+emit_16(538);
+emit_16(603);
+emit_16(539);
+emit_16(604);
+emit_16(540);
+emit_16(604);
+emit_16(539);
+emit_16(604);
+emit_16(540);
+emit_16(605);
+emit_16(541);
+emit_16(605);
+emit_16(540);
+emit_16(605);
+emit_16(541);
+emit_16(606);
+emit_16(542);
+emit_16(606);
+emit_16(541);
+emit_16(606);
+emit_16(542);
+emit_16(607);
+emit_16(543);
+emit_16(607);
+emit_16(542);
+emit_16(607);
+emit_16(543);
+emit_16(608);
+emit_16(544);
+emit_16(608);
+emit_16(543);
+emit_16(608);
+emit_16(544);
+emit_16(609);
+emit_16(545);
+emit_16(609);
+emit_16(544);
+emit_16(609);
+emit_16(545);
+emit_16(610);
+emit_16(546);
+emit_16(610);
+emit_16(545);
+emit_16(610);
+emit_16(546);
+emit_16(611);
+emit_16(547);
+emit_16(611);
+emit_16(546);
+emit_16(611);
+emit_16(547);
+emit_16(612);
+emit_16(548);
+emit_16(612);
+emit_16(547);
+emit_16(612);
+emit_16(548);
+emit_16(613);
+emit_16(549);
+emit_16(613);
+emit_16(548);
+emit_16(613);
+emit_16(549);
+emit_16(614);
+emit_16(550);
+emit_16(614);
+emit_16(549);
+emit_16(614);
+emit_16(550);
+emit_16(615);
+emit_16(551);
+emit_16(615);
+emit_16(550);
+emit_16(615);
+emit_16(551);
+emit_16(616);
+emit_16(552);
+emit_16(616);
+emit_16(551);
+emit_16(616);
+emit_16(552);
+emit_16(617);
+emit_16(553);
+emit_16(617);
+emit_16(552);
+emit_16(617);
+emit_16(553);
+emit_16(618);
+emit_16(554);
+emit_16(618);
+emit_16(553);
+emit_16(618);
+emit_16(554);
+emit_16(619);
+emit_16(555);
+emit_16(619);
+emit_16(554);
+emit_16(619);
+emit_16(555);
+emit_16(620);
+emit_16(556);
+emit_16(620);
+emit_16(555);
+emit_16(620);
+emit_16(556);
+emit_16(621);
+emit_16(557);
+emit_16(621);
+emit_16(556);
+emit_16(621);
+emit_16(557);
+emit_16(622);
+emit_16(558);
+emit_16(622);
+emit_16(557);
+emit_16(622);
+emit_16(558);
+emit_16(623);
+emit_16(559);
+emit_16(623);
+emit_16(558);
+emit_16(623);
+emit_16(559);
+emit_16(624);
+emit_16(560);
+emit_16(624);
+emit_16(559);
+emit_16(624);
+emit_16(560);
+emit_16(625);
+emit_16(561);
+emit_16(625);
+emit_16(560);
+emit_16(625);
+emit_16(561);
+emit_16(626);
+emit_16(562);
+emit_16(626);
+emit_16(561);
+emit_16(626);
+emit_16(562);
+emit_16(627);
+emit_16(563);
+emit_16(627);
+emit_16(562);
+emit_16(627);
+emit_16(563);
+emit_16(628);
+emit_16(564);
+emit_16(628);
+emit_16(563);
+emit_16(628);
+emit_16(564);
+emit_16(629);
+emit_16(565);
+emit_16(629);
+emit_16(564);
+emit_16(629);
+emit_16(565);
+emit_16(630);
+emit_16(566);
+emit_16(630);
+emit_16(565);
+emit_16(630);
+emit_16(566);
+emit_16(631);
+emit_16(567);
+emit_16(631);
+emit_16(566);
+emit_16(631);
+emit_16(567);
+emit_16(632);
+emit_16(568);
+emit_16(632);
+emit_16(567);
+emit_16(632);
+emit_16(568);
+emit_16(633);
+emit_16(569);
+emit_16(633);
+emit_16(568);
+emit_16(633);
+emit_16(569);
+emit_16(634);
+emit_16(570);
+emit_16(634);
+emit_16(569);
+emit_16(634);
+emit_16(570);
+emit_16(635);
+emit_16(571);
+emit_16(635);
+emit_16(570);
+emit_16(635);
+emit_16(571);
+emit_16(636);
+emit_16(572);
+emit_16(636);
+emit_16(571);
+emit_16(636);
+emit_16(572);
+emit_16(637);
+emit_16(573);
+emit_16(637);
+emit_16(572);
+emit_16(637);
+emit_16(573);
+emit_16(638);
+emit_16(574);
+emit_16(638);
+emit_16(573);
+emit_16(638);
+emit_16(574);
+emit_16(639);
+emit_16(575);
+emit_16(639);
+emit_16(574);
+emit_16(640);
+emit_16(576);
+emit_16(641);
+emit_16(577);
+emit_16(641);
+emit_16(576);
+emit_16(641);
+emit_16(577);
+emit_16(642);
+emit_16(578);
+emit_16(642);
+emit_16(577);
+emit_16(642);
+emit_16(578);
+emit_16(643);
+emit_16(579);
+emit_16(643);
+emit_16(578);
+emit_16(643);
+emit_16(579);
+emit_16(644);
+emit_16(580);
+emit_16(644);
+emit_16(579);
+emit_16(644);
+emit_16(580);
+emit_16(645);
+emit_16(581);
+emit_16(645);
+emit_16(580);
+emit_16(645);
+emit_16(581);
+emit_16(646);
+emit_16(582);
+emit_16(646);
+emit_16(581);
+emit_16(646);
+emit_16(582);
+emit_16(647);
+emit_16(583);
+emit_16(647);
+emit_16(582);
+emit_16(647);
+emit_16(583);
+emit_16(648);
+emit_16(584);
+emit_16(648);
+emit_16(583);
+emit_16(648);
+emit_16(584);
+emit_16(649);
+emit_16(585);
+emit_16(649);
+emit_16(584);
+emit_16(649);
+emit_16(585);
+emit_16(650);
+emit_16(586);
+emit_16(650);
+emit_16(585);
+emit_16(650);
+emit_16(586);
+emit_16(651);
+emit_16(587);
+emit_16(651);
+emit_16(586);
+emit_16(651);
+emit_16(587);
+emit_16(652);
+emit_16(588);
+emit_16(652);
+emit_16(587);
+emit_16(652);
+emit_16(588);
+emit_16(653);
+emit_16(589);
+emit_16(653);
+emit_16(588);
+emit_16(653);
+emit_16(589);
+emit_16(654);
+emit_16(590);
+emit_16(654);
+emit_16(589);
+emit_16(654);
+emit_16(590);
+emit_16(655);
+emit_16(591);
+emit_16(655);
+emit_16(590);
+emit_16(655);
+emit_16(591);
+emit_16(656);
+emit_16(592);
+emit_16(656);
+emit_16(591);
+emit_16(656);
+emit_16(592);
+emit_16(657);
+emit_16(593);
+emit_16(657);
+emit_16(592);
+emit_16(657);
+emit_16(593);
+emit_16(658);
+emit_16(594);
+emit_16(658);
+emit_16(593);
+emit_16(658);
+emit_16(594);
+emit_16(659);
+emit_16(595);
+emit_16(659);
+emit_16(594);
+emit_16(659);
+emit_16(595);
+emit_16(660);
+emit_16(596);
+emit_16(660);
+emit_16(595);
+emit_16(660);
+emit_16(596);
+emit_16(661);
+emit_16(597);
+emit_16(661);
+emit_16(596);
+emit_16(661);
+emit_16(597);
+emit_16(662);
+emit_16(598);
+emit_16(662);
+emit_16(597);
+emit_16(662);
+emit_16(598);
+emit_16(663);
+emit_16(599);
+emit_16(663);
+emit_16(598);
+emit_16(663);
+emit_16(599);
+emit_16(664);
+emit_16(600);
+emit_16(664);
+emit_16(599);
+emit_16(664);
+emit_16(600);
+emit_16(665);
+emit_16(601);
+emit_16(665);
+emit_16(600);
+emit_16(665);
+emit_16(601);
+emit_16(666);
+emit_16(602);
+emit_16(666);
+emit_16(601);
+emit_16(666);
+emit_16(602);
+emit_16(667);
+emit_16(603);
+emit_16(667);
+emit_16(602);
+emit_16(667);
+emit_16(603);
+emit_16(668);
+emit_16(604);
+emit_16(668);
+emit_16(603);
+emit_16(668);
+emit_16(604);
+emit_16(669);
+emit_16(605);
+emit_16(669);
+emit_16(604);
+emit_16(669);
+emit_16(605);
+emit_16(670);
+emit_16(606);
+emit_16(670);
+emit_16(605);
+emit_16(670);
+emit_16(606);
+emit_16(671);
+emit_16(607);
+emit_16(671);
+emit_16(606);
+emit_16(671);
+emit_16(607);
+emit_16(672);
+emit_16(608);
+emit_16(672);
+emit_16(607);
+emit_16(672);
+emit_16(608);
+emit_16(673);
+emit_16(609);
+emit_16(673);
+emit_16(608);
+emit_16(673);
+emit_16(609);
+emit_16(674);
+emit_16(610);
+emit_16(674);
+emit_16(609);
+emit_16(674);
+emit_16(610);
+emit_16(675);
+emit_16(611);
+emit_16(675);
+emit_16(610);
+emit_16(675);
+emit_16(611);
+emit_16(676);
+emit_16(612);
+emit_16(676);
+emit_16(611);
+emit_16(676);
+emit_16(612);
+emit_16(677);
+emit_16(613);
+emit_16(677);
+emit_16(612);
+emit_16(677);
+emit_16(613);
+emit_16(678);
+emit_16(614);
+emit_16(678);
+emit_16(613);
+emit_16(678);
+emit_16(614);
+emit_16(679);
+emit_16(615);
+emit_16(679);
+emit_16(614);
+emit_16(679);
+emit_16(615);
+emit_16(680);
+emit_16(616);
+emit_16(680);
+emit_16(615);
+emit_16(680);
+emit_16(616);
+emit_16(681);
+emit_16(617);
+emit_16(681);
+emit_16(616);
+emit_16(681);
+emit_16(617);
+emit_16(682);
+emit_16(618);
+emit_16(682);
+emit_16(617);
+emit_16(682);
+emit_16(618);
+emit_16(683);
+emit_16(619);
+emit_16(683);
+emit_16(618);
+emit_16(683);
+emit_16(619);
+emit_16(684);
+emit_16(620);
+emit_16(684);
+emit_16(619);
+emit_16(684);
+emit_16(620);
+emit_16(685);
+emit_16(621);
+emit_16(685);
+emit_16(620);
+emit_16(685);
+emit_16(621);
+emit_16(686);
+emit_16(622);
+emit_16(686);
+emit_16(621);
+emit_16(686);
+emit_16(622);
+emit_16(687);
+emit_16(623);
+emit_16(687);
+emit_16(622);
+emit_16(687);
+emit_16(623);
+emit_16(688);
+emit_16(624);
+emit_16(688);
+emit_16(623);
+emit_16(688);
+emit_16(624);
+emit_16(689);
+emit_16(625);
+emit_16(689);
+emit_16(624);
+emit_16(689);
+emit_16(625);
+emit_16(690);
+emit_16(626);
+emit_16(690);
+emit_16(625);
+emit_16(690);
+emit_16(626);
+emit_16(691);
+emit_16(627);
+emit_16(691);
+emit_16(626);
+emit_16(691);
+emit_16(627);
+emit_16(692);
+emit_16(628);
+emit_16(692);
+emit_16(627);
+emit_16(692);
+emit_16(628);
+emit_16(693);
+emit_16(629);
+emit_16(693);
+emit_16(628);
+emit_16(693);
+emit_16(629);
+emit_16(694);
+emit_16(630);
+emit_16(694);
+emit_16(629);
+emit_16(694);
+emit_16(630);
+emit_16(695);
+emit_16(631);
+emit_16(695);
+emit_16(630);
+emit_16(695);
+emit_16(631);
+emit_16(696);
+emit_16(632);
+emit_16(696);
+emit_16(631);
+emit_16(696);
+emit_16(632);
+emit_16(697);
+emit_16(633);
+emit_16(697);
+emit_16(632);
+emit_16(697);
+emit_16(633);
+emit_16(698);
+emit_16(634);
+emit_16(698);
+emit_16(633);
+emit_16(698);
+emit_16(634);
+emit_16(699);
+emit_16(635);
+emit_16(699);
+emit_16(634);
+emit_16(699);
+emit_16(635);
+emit_16(700);
+emit_16(636);
+emit_16(700);
+emit_16(635);
+emit_16(700);
+emit_16(636);
+emit_16(701);
+emit_16(637);
+emit_16(701);
+emit_16(636);
+emit_16(701);
+emit_16(637);
+emit_16(702);
+emit_16(638);
+emit_16(702);
+emit_16(637);
+emit_16(702);
+emit_16(638);
+emit_16(703);
+emit_16(639);
+emit_16(703);
+emit_16(638);
+emit_16(704);
+emit_16(640);
+emit_16(705);
+emit_16(641);
+emit_16(705);
+emit_16(640);
+emit_16(705);
+emit_16(641);
+emit_16(706);
+emit_16(642);
+emit_16(706);
+emit_16(641);
+emit_16(706);
+emit_16(642);
+emit_16(707);
+emit_16(643);
+emit_16(707);
+emit_16(642);
+emit_16(707);
+emit_16(643);
+emit_16(708);
+emit_16(644);
+emit_16(708);
+emit_16(643);
+emit_16(708);
+emit_16(644);
+emit_16(709);
+emit_16(645);
+emit_16(709);
+emit_16(644);
+emit_16(709);
+emit_16(645);
+emit_16(710);
+emit_16(646);
+emit_16(710);
+emit_16(645);
+emit_16(710);
+emit_16(646);
+emit_16(711);
+emit_16(647);
+emit_16(711);
+emit_16(646);
+emit_16(711);
+emit_16(647);
+emit_16(712);
+emit_16(648);
+emit_16(712);
+emit_16(647);
+emit_16(712);
+emit_16(648);
+emit_16(713);
+emit_16(649);
+emit_16(713);
+emit_16(648);
+emit_16(713);
+emit_16(649);
+emit_16(714);
+emit_16(650);
+emit_16(714);
+emit_16(649);
+emit_16(714);
+emit_16(650);
+emit_16(715);
+emit_16(651);
+emit_16(715);
+emit_16(650);
+emit_16(715);
+emit_16(651);
+emit_16(716);
+emit_16(652);
+emit_16(716);
+emit_16(651);
+emit_16(716);
+emit_16(652);
+emit_16(717);
+emit_16(653);
+emit_16(717);
+emit_16(652);
+emit_16(717);
+emit_16(653);
+emit_16(718);
+emit_16(654);
+emit_16(718);
+emit_16(653);
+emit_16(718);
+emit_16(654);
+emit_16(719);
+emit_16(655);
+emit_16(719);
+emit_16(654);
+emit_16(719);
+emit_16(655);
+emit_16(720);
+emit_16(656);
+emit_16(720);
+emit_16(655);
+emit_16(720);
+emit_16(656);
+emit_16(721);
+emit_16(657);
+emit_16(721);
+emit_16(656);
+emit_16(721);
+emit_16(657);
+emit_16(722);
+emit_16(658);
+emit_16(722);
+emit_16(657);
+emit_16(722);
+emit_16(658);
+emit_16(723);
+emit_16(659);
+emit_16(723);
+emit_16(658);
+emit_16(723);
+emit_16(659);
+emit_16(724);
+emit_16(660);
+emit_16(724);
+emit_16(659);
+emit_16(724);
+emit_16(660);
+emit_16(725);
+emit_16(661);
+emit_16(725);
+emit_16(660);
+emit_16(725);
+emit_16(661);
+emit_16(726);
+emit_16(662);
+emit_16(726);
+emit_16(661);
+emit_16(726);
+emit_16(662);
+emit_16(727);
+emit_16(663);
+emit_16(727);
+emit_16(662);
+emit_16(727);
+emit_16(663);
+emit_16(728);
+emit_16(664);
+emit_16(728);
+emit_16(663);
+emit_16(728);
+emit_16(664);
+emit_16(729);
+emit_16(665);
+emit_16(729);
+emit_16(664);
+emit_16(729);
+emit_16(665);
+emit_16(730);
+emit_16(666);
+emit_16(730);
+emit_16(665);
+emit_16(730);
+emit_16(666);
+emit_16(731);
+emit_16(667);
+emit_16(731);
+emit_16(666);
+emit_16(731);
+emit_16(667);
+emit_16(732);
+emit_16(668);
+emit_16(732);
+emit_16(667);
+emit_16(732);
+emit_16(668);
+emit_16(733);
+emit_16(669);
+emit_16(733);
+emit_16(668);
+emit_16(733);
+emit_16(669);
+emit_16(734);
+emit_16(670);
+emit_16(734);
+emit_16(669);
+emit_16(734);
+emit_16(670);
+emit_16(735);
+emit_16(671);
+emit_16(735);
+emit_16(670);
+emit_16(735);
+emit_16(671);
+emit_16(736);
+emit_16(672);
+emit_16(736);
+emit_16(671);
+emit_16(736);
+emit_16(672);
+emit_16(737);
+emit_16(673);
+emit_16(737);
+emit_16(672);
+emit_16(737);
+emit_16(673);
+emit_16(738);
+emit_16(674);
+emit_16(738);
+emit_16(673);
+emit_16(738);
+emit_16(674);
+emit_16(739);
+emit_16(675);
+emit_16(739);
+emit_16(674);
+emit_16(739);
+emit_16(675);
+emit_16(740);
+emit_16(676);
+emit_16(740);
+emit_16(675);
+emit_16(740);
+emit_16(676);
+emit_16(741);
+emit_16(677);
+emit_16(741);
+emit_16(676);
+emit_16(741);
+emit_16(677);
+emit_16(742);
+emit_16(678);
+emit_16(742);
+emit_16(677);
+emit_16(742);
+emit_16(678);
+emit_16(743);
+emit_16(679);
+emit_16(743);
+emit_16(678);
+emit_16(743);
+emit_16(679);
+emit_16(744);
+emit_16(680);
+emit_16(744);
+emit_16(679);
+emit_16(744);
+emit_16(680);
+emit_16(745);
+emit_16(681);
+emit_16(745);
+emit_16(680);
+emit_16(745);
+emit_16(681);
+emit_16(746);
+emit_16(682);
+emit_16(746);
+emit_16(681);
+emit_16(746);
+emit_16(682);
+emit_16(747);
+emit_16(683);
+emit_16(747);
+emit_16(682);
+emit_16(747);
+emit_16(683);
+emit_16(748);
+emit_16(684);
+emit_16(748);
+emit_16(683);
+emit_16(748);
+emit_16(684);
+emit_16(749);
+emit_16(685);
+emit_16(749);
+emit_16(684);
+emit_16(749);
+emit_16(685);
+emit_16(750);
+emit_16(686);
+emit_16(750);
+emit_16(685);
+emit_16(750);
+emit_16(686);
+emit_16(751);
+emit_16(687);
+emit_16(751);
+emit_16(686);
+emit_16(751);
+emit_16(687);
+emit_16(752);
+emit_16(688);
+emit_16(752);
+emit_16(687);
+emit_16(752);
+emit_16(688);
+emit_16(753);
+emit_16(689);
+emit_16(753);
+emit_16(688);
+emit_16(753);
+emit_16(689);
+emit_16(754);
+emit_16(690);
+emit_16(754);
+emit_16(689);
+emit_16(754);
+emit_16(690);
+emit_16(755);
+emit_16(691);
+emit_16(755);
+emit_16(690);
+emit_16(755);
+emit_16(691);
+emit_16(756);
+emit_16(692);
+emit_16(756);
+emit_16(691);
+emit_16(756);
+emit_16(692);
+emit_16(757);
+emit_16(693);
+emit_16(757);
+emit_16(692);
+emit_16(757);
+emit_16(693);
+emit_16(758);
+emit_16(694);
+emit_16(758);
+emit_16(693);
+emit_16(758);
+emit_16(694);
+emit_16(759);
+emit_16(695);
+emit_16(759);
+emit_16(694);
+emit_16(759);
+emit_16(695);
+emit_16(760);
+emit_16(696);
+emit_16(760);
+emit_16(695);
+emit_16(760);
+emit_16(696);
+emit_16(761);
+emit_16(697);
+emit_16(761);
+emit_16(696);
+emit_16(761);
+emit_16(697);
+emit_16(762);
+emit_16(698);
+emit_16(762);
+emit_16(697);
+emit_16(762);
+emit_16(698);
+emit_16(763);
+emit_16(699);
+emit_16(763);
+emit_16(698);
+emit_16(763);
+emit_16(699);
+emit_16(764);
+emit_16(700);
+emit_16(764);
+emit_16(699);
+emit_16(764);
+emit_16(700);
+emit_16(765);
+emit_16(701);
+emit_16(765);
+emit_16(700);
+emit_16(765);
+emit_16(701);
+emit_16(766);
+emit_16(702);
+emit_16(766);
+emit_16(701);
+emit_16(766);
+emit_16(702);
+emit_16(767);
+emit_16(703);
+emit_16(767);
+emit_16(702);
+emit_16(768);
+emit_16(704);
+emit_16(769);
+emit_16(705);
+emit_16(769);
+emit_16(704);
+emit_16(769);
+emit_16(705);
+emit_16(770);
+emit_16(706);
+emit_16(770);
+emit_16(705);
+emit_16(770);
+emit_16(706);
+emit_16(771);
+emit_16(707);
+emit_16(771);
+emit_16(706);
+emit_16(771);
+emit_16(707);
+emit_16(772);
+emit_16(708);
+emit_16(772);
+emit_16(707);
+emit_16(772);
+emit_16(708);
+emit_16(773);
+emit_16(709);
+emit_16(773);
+emit_16(708);
+emit_16(773);
+emit_16(709);
+emit_16(774);
+emit_16(710);
+emit_16(774);
+emit_16(709);
+emit_16(774);
+emit_16(710);
+emit_16(775);
+emit_16(711);
+emit_16(775);
+emit_16(710);
+emit_16(775);
+emit_16(711);
+emit_16(776);
+emit_16(712);
+emit_16(776);
+emit_16(711);
+emit_16(776);
+emit_16(712);
+emit_16(777);
+emit_16(713);
+emit_16(777);
+emit_16(712);
+emit_16(777);
+emit_16(713);
+emit_16(778);
+emit_16(714);
+emit_16(778);
+emit_16(713);
+emit_16(778);
+emit_16(714);
+emit_16(779);
+emit_16(715);
+emit_16(779);
+emit_16(714);
+emit_16(779);
+emit_16(715);
+emit_16(780);
+emit_16(716);
+emit_16(780);
+emit_16(715);
+emit_16(780);
+emit_16(716);
+emit_16(781);
+emit_16(717);
+emit_16(781);
+emit_16(716);
+emit_16(781);
+emit_16(717);
+emit_16(782);
+emit_16(718);
+emit_16(782);
+emit_16(717);
+emit_16(782);
+emit_16(718);
+emit_16(783);
+emit_16(719);
+emit_16(783);
+emit_16(718);
+emit_16(783);
+emit_16(719);
+emit_16(784);
+emit_16(720);
+emit_16(784);
+emit_16(719);
+emit_16(784);
+emit_16(720);
+emit_16(785);
+emit_16(721);
+emit_16(785);
+emit_16(720);
+emit_16(785);
+emit_16(721);
+emit_16(786);
+emit_16(722);
+emit_16(786);
+emit_16(721);
+emit_16(786);
+emit_16(722);
+emit_16(787);
+emit_16(723);
+emit_16(787);
+emit_16(722);
+emit_16(787);
+emit_16(723);
+emit_16(788);
+emit_16(724);
+emit_16(788);
+emit_16(723);
+emit_16(788);
+emit_16(724);
+emit_16(789);
+emit_16(725);
+emit_16(789);
+emit_16(724);
+emit_16(789);
+emit_16(725);
+emit_16(790);
+emit_16(726);
+emit_16(790);
+emit_16(725);
+emit_16(790);
+emit_16(726);
+emit_16(791);
+emit_16(727);
+emit_16(791);
+emit_16(726);
+emit_16(791);
+emit_16(727);
+emit_16(792);
+emit_16(728);
+emit_16(792);
+emit_16(727);
+emit_16(792);
+emit_16(728);
+emit_16(793);
+emit_16(729);
+emit_16(793);
+emit_16(728);
+emit_16(793);
+emit_16(729);
+emit_16(794);
+emit_16(730);
+emit_16(794);
+emit_16(729);
+emit_16(794);
+emit_16(730);
+emit_16(795);
+emit_16(731);
+emit_16(795);
+emit_16(730);
+emit_16(795);
+emit_16(731);
+emit_16(796);
+emit_16(732);
+emit_16(796);
+emit_16(731);
+emit_16(796);
+emit_16(732);
+emit_16(797);
+emit_16(733);
+emit_16(797);
+emit_16(732);
+emit_16(797);
+emit_16(733);
+emit_16(798);
+emit_16(734);
+emit_16(798);
+emit_16(733);
+emit_16(798);
+emit_16(734);
+emit_16(799);
+emit_16(735);
+emit_16(799);
+emit_16(734);
+emit_16(799);
+emit_16(735);
+emit_16(800);
+emit_16(736);
+emit_16(800);
+emit_16(735);
+emit_16(800);
+emit_16(736);
+emit_16(801);
+emit_16(737);
+emit_16(801);
+emit_16(736);
+emit_16(801);
+emit_16(737);
+emit_16(802);
+emit_16(738);
+emit_16(802);
+emit_16(737);
+emit_16(802);
+emit_16(738);
+emit_16(803);
+emit_16(739);
+emit_16(803);
+emit_16(738);
+emit_16(803);
+emit_16(739);
+emit_16(804);
+emit_16(740);
+emit_16(804);
+emit_16(739);
+emit_16(804);
+emit_16(740);
+emit_16(805);
+emit_16(741);
+emit_16(805);
+emit_16(740);
+emit_16(805);
+emit_16(741);
+emit_16(806);
+emit_16(742);
+emit_16(806);
+emit_16(741);
+emit_16(806);
+emit_16(742);
+emit_16(807);
+emit_16(743);
+emit_16(807);
+emit_16(742);
+emit_16(807);
+emit_16(743);
+emit_16(808);
+emit_16(744);
+emit_16(808);
+emit_16(743);
+emit_16(808);
+emit_16(744);
+emit_16(809);
+emit_16(745);
+emit_16(809);
+emit_16(744);
+emit_16(809);
+emit_16(745);
+emit_16(810);
+emit_16(746);
+emit_16(810);
+emit_16(745);
+emit_16(810);
+emit_16(746);
+emit_16(811);
+emit_16(747);
+emit_16(811);
+emit_16(746);
+emit_16(811);
+emit_16(747);
+emit_16(812);
+emit_16(748);
+emit_16(812);
+emit_16(747);
+emit_16(812);
+emit_16(748);
+emit_16(813);
+emit_16(749);
+emit_16(813);
+emit_16(748);
+emit_16(813);
+emit_16(749);
+emit_16(814);
+emit_16(750);
+emit_16(814);
+emit_16(749);
+emit_16(814);
+emit_16(750);
+emit_16(815);
+emit_16(751);
+emit_16(815);
+emit_16(750);
+emit_16(815);
+emit_16(751);
+emit_16(816);
+emit_16(752);
+emit_16(816);
+emit_16(751);
+emit_16(816);
+emit_16(752);
+emit_16(817);
+emit_16(753);
+emit_16(817);
+emit_16(752);
+emit_16(817);
+emit_16(753);
+emit_16(818);
+emit_16(754);
+emit_16(818);
+emit_16(753);
+emit_16(818);
+emit_16(754);
+emit_16(819);
+emit_16(755);
+emit_16(819);
+emit_16(754);
+emit_16(819);
+emit_16(755);
+emit_16(820);
+emit_16(756);
+emit_16(820);
+emit_16(755);
+emit_16(820);
+emit_16(756);
+emit_16(821);
+emit_16(757);
+emit_16(821);
+emit_16(756);
+emit_16(821);
+emit_16(757);
+emit_16(822);
+emit_16(758);
+emit_16(822);
+emit_16(757);
+emit_16(822);
+emit_16(758);
+emit_16(823);
+emit_16(759);
+emit_16(823);
+emit_16(758);
+emit_16(823);
+emit_16(759);
+emit_16(824);
+emit_16(760);
+emit_16(824);
+emit_16(759);
+emit_16(824);
+emit_16(760);
+emit_16(825);
+emit_16(761);
+emit_16(825);
+emit_16(760);
+emit_16(825);
+emit_16(761);
+emit_16(826);
+emit_16(762);
+emit_16(826);
+emit_16(761);
+emit_16(826);
+emit_16(762);
+emit_16(827);
+emit_16(763);
+emit_16(827);
+emit_16(762);
+emit_16(827);
+emit_16(763);
+emit_16(828);
+emit_16(764);
+emit_16(828);
+emit_16(763);
+emit_16(828);
+emit_16(764);
+emit_16(829);
+emit_16(765);
+emit_16(829);
+emit_16(764);
+emit_16(829);
+emit_16(765);
+emit_16(830);
+emit_16(766);
+emit_16(830);
+emit_16(765);
+emit_16(830);
+emit_16(766);
+emit_16(831);
+emit_16(767);
+emit_16(831);
+emit_16(766);
+emit_16(832);
+emit_16(768);
+emit_16(833);
+emit_16(769);
+emit_16(833);
+emit_16(768);
+emit_16(833);
+emit_16(769);
+emit_16(834);
+emit_16(770);
+emit_16(834);
+emit_16(769);
+emit_16(834);
+emit_16(770);
+emit_16(835);
+emit_16(771);
+emit_16(835);
+emit_16(770);
+emit_16(835);
+emit_16(771);
+emit_16(836);
+emit_16(772);
+emit_16(836);
+emit_16(771);
+emit_16(836);
+emit_16(772);
+emit_16(837);
+emit_16(773);
+emit_16(837);
+emit_16(772);
+emit_16(837);
+emit_16(773);
+emit_16(838);
+emit_16(774);
+emit_16(838);
+emit_16(773);
+emit_16(838);
+emit_16(774);
+emit_16(839);
+emit_16(775);
+emit_16(839);
+emit_16(774);
+emit_16(839);
+emit_16(775);
+emit_16(840);
+emit_16(776);
+emit_16(840);
+emit_16(775);
+emit_16(840);
+emit_16(776);
+emit_16(841);
+emit_16(777);
+emit_16(841);
+emit_16(776);
+emit_16(841);
+emit_16(777);
+emit_16(842);
+emit_16(778);
+emit_16(842);
+emit_16(777);
+emit_16(842);
+emit_16(778);
+emit_16(843);
+emit_16(779);
+emit_16(843);
+emit_16(778);
+emit_16(843);
+emit_16(779);
+emit_16(844);
+emit_16(780);
+emit_16(844);
+emit_16(779);
+emit_16(844);
+emit_16(780);
+emit_16(845);
+emit_16(781);
+emit_16(845);
+emit_16(780);
+emit_16(845);
+emit_16(781);
+emit_16(846);
+emit_16(782);
+emit_16(846);
+emit_16(781);
+emit_16(846);
+emit_16(782);
+emit_16(847);
+emit_16(783);
+emit_16(847);
+emit_16(782);
+emit_16(847);
+emit_16(783);
+emit_16(848);
+emit_16(784);
+emit_16(848);
+emit_16(783);
+emit_16(848);
+emit_16(784);
+emit_16(849);
+emit_16(785);
+emit_16(849);
+emit_16(784);
+emit_16(849);
+emit_16(785);
+emit_16(850);
+emit_16(786);
+emit_16(850);
+emit_16(785);
+emit_16(850);
+emit_16(786);
+emit_16(851);
+emit_16(787);
+emit_16(851);
+emit_16(786);
+emit_16(851);
+emit_16(787);
+emit_16(852);
+emit_16(788);
+emit_16(852);
+emit_16(787);
+emit_16(852);
+emit_16(788);
+emit_16(853);
+emit_16(789);
+emit_16(853);
+emit_16(788);
+emit_16(853);
+emit_16(789);
+emit_16(854);
+emit_16(790);
+emit_16(854);
+emit_16(789);
+emit_16(854);
+emit_16(790);
+emit_16(855);
+emit_16(791);
+emit_16(855);
+emit_16(790);
+emit_16(855);
+emit_16(791);
+emit_16(856);
+emit_16(792);
+emit_16(856);
+emit_16(791);
+emit_16(856);
+emit_16(792);
+emit_16(857);
+emit_16(793);
+emit_16(857);
+emit_16(792);
+emit_16(857);
+emit_16(793);
+emit_16(858);
+emit_16(794);
+emit_16(858);
+emit_16(793);
+emit_16(858);
+emit_16(794);
+emit_16(859);
+emit_16(795);
+emit_16(859);
+emit_16(794);
+emit_16(859);
+emit_16(795);
+emit_16(860);
+emit_16(796);
+emit_16(860);
+emit_16(795);
+emit_16(860);
+emit_16(796);
+emit_16(861);
+emit_16(797);
+emit_16(861);
+emit_16(796);
+emit_16(861);
+emit_16(797);
+emit_16(862);
+emit_16(798);
+emit_16(862);
+emit_16(797);
+emit_16(862);
+emit_16(798);
+emit_16(863);
+emit_16(799);
+emit_16(863);
+emit_16(798);
+emit_16(863);
+emit_16(799);
+emit_16(864);
+emit_16(800);
+emit_16(864);
+emit_16(799);
+emit_16(864);
+emit_16(800);
+emit_16(865);
+emit_16(801);
+emit_16(865);
+emit_16(800);
+emit_16(865);
+emit_16(801);
+emit_16(866);
+emit_16(802);
+emit_16(866);
+emit_16(801);
+emit_16(866);
+emit_16(802);
+emit_16(867);
+emit_16(803);
+emit_16(867);
+emit_16(802);
+emit_16(867);
+emit_16(803);
+emit_16(868);
+emit_16(804);
+emit_16(868);
+emit_16(803);
+emit_16(868);
+emit_16(804);
+emit_16(869);
+emit_16(805);
+emit_16(869);
+emit_16(804);
+emit_16(869);
+emit_16(805);
+emit_16(870);
+emit_16(806);
+emit_16(870);
+emit_16(805);
+emit_16(870);
+emit_16(806);
+emit_16(871);
+emit_16(807);
+emit_16(871);
+emit_16(806);
+emit_16(871);
+emit_16(807);
+emit_16(872);
+emit_16(808);
+emit_16(872);
+emit_16(807);
+emit_16(872);
+emit_16(808);
+emit_16(873);
+emit_16(809);
+emit_16(873);
+emit_16(808);
+emit_16(873);
+emit_16(809);
+emit_16(874);
+emit_16(810);
+emit_16(874);
+emit_16(809);
+emit_16(874);
+emit_16(810);
+emit_16(875);
+emit_16(811);
+emit_16(875);
+emit_16(810);
+emit_16(875);
+emit_16(811);
+emit_16(876);
+emit_16(812);
+emit_16(876);
+emit_16(811);
+emit_16(876);
+emit_16(812);
+emit_16(877);
+emit_16(813);
+emit_16(877);
+emit_16(812);
+emit_16(877);
+emit_16(813);
+emit_16(878);
+emit_16(814);
+emit_16(878);
+emit_16(813);
+emit_16(878);
+emit_16(814);
+emit_16(879);
+emit_16(815);
+emit_16(879);
+emit_16(814);
+emit_16(879);
+emit_16(815);
+emit_16(880);
+emit_16(816);
+emit_16(880);
+emit_16(815);
+emit_16(880);
+emit_16(816);
+emit_16(881);
+emit_16(817);
+emit_16(881);
+emit_16(816);
+emit_16(881);
+emit_16(817);
+emit_16(882);
+emit_16(818);
+emit_16(882);
+emit_16(817);
+emit_16(882);
+emit_16(818);
+emit_16(883);
+emit_16(819);
+emit_16(883);
+emit_16(818);
+emit_16(883);
+emit_16(819);
+emit_16(884);
+emit_16(820);
+emit_16(884);
+emit_16(819);
+emit_16(884);
+emit_16(820);
+emit_16(885);
+emit_16(821);
+emit_16(885);
+emit_16(820);
+emit_16(885);
+emit_16(821);
+emit_16(886);
+emit_16(822);
+emit_16(886);
+emit_16(821);
+emit_16(886);
+emit_16(822);
+emit_16(887);
+emit_16(823);
+emit_16(887);
+emit_16(822);
+emit_16(887);
+emit_16(823);
+emit_16(888);
+emit_16(824);
+emit_16(888);
+emit_16(823);
+emit_16(888);
+emit_16(824);
+emit_16(889);
+emit_16(825);
+emit_16(889);
+emit_16(824);
+emit_16(889);
+emit_16(825);
+emit_16(890);
+emit_16(826);
+emit_16(890);
+emit_16(825);
+emit_16(890);
+emit_16(826);
+emit_16(891);
+emit_16(827);
+emit_16(891);
+emit_16(826);
+emit_16(891);
+emit_16(827);
+emit_16(892);
+emit_16(828);
+emit_16(892);
+emit_16(827);
+emit_16(892);
+emit_16(828);
+emit_16(893);
+emit_16(829);
+emit_16(893);
+emit_16(828);
+emit_16(893);
+emit_16(829);
+emit_16(894);
+emit_16(830);
+emit_16(894);
+emit_16(829);
+emit_16(894);
+emit_16(830);
+emit_16(895);
+emit_16(831);
+emit_16(895);
+emit_16(830);
+emit_16(896);
+emit_16(832);
+emit_16(897);
+emit_16(833);
+emit_16(897);
+emit_16(832);
+emit_16(897);
+emit_16(833);
+emit_16(898);
+emit_16(834);
+emit_16(898);
+emit_16(833);
+emit_16(898);
+emit_16(834);
+emit_16(899);
+emit_16(835);
+emit_16(899);
+emit_16(834);
+emit_16(899);
+emit_16(835);
+emit_16(900);
+emit_16(836);
+emit_16(900);
+emit_16(835);
+emit_16(900);
+emit_16(836);
+emit_16(901);
+emit_16(837);
+emit_16(901);
+emit_16(836);
+emit_16(901);
+emit_16(837);
+emit_16(902);
+emit_16(838);
+emit_16(902);
+emit_16(837);
+emit_16(902);
+emit_16(838);
+emit_16(903);
+emit_16(839);
+emit_16(903);
+emit_16(838);
+emit_16(903);
+emit_16(839);
+emit_16(904);
+emit_16(840);
+emit_16(904);
+emit_16(839);
+emit_16(904);
+emit_16(840);
+emit_16(905);
+emit_16(841);
+emit_16(905);
+emit_16(840);
+emit_16(905);
+emit_16(841);
+emit_16(906);
+emit_16(842);
+emit_16(906);
+emit_16(841);
+emit_16(906);
+emit_16(842);
+emit_16(907);
+emit_16(843);
+emit_16(907);
+emit_16(842);
+emit_16(907);
+emit_16(843);
+emit_16(908);
+emit_16(844);
+emit_16(908);
+emit_16(843);
+emit_16(908);
+emit_16(844);
+emit_16(909);
+emit_16(845);
+emit_16(909);
+emit_16(844);
+emit_16(909);
+emit_16(845);
+emit_16(910);
+emit_16(846);
+emit_16(910);
+emit_16(845);
+emit_16(910);
+emit_16(846);
+emit_16(911);
+emit_16(847);
+emit_16(911);
+emit_16(846);
+emit_16(911);
+emit_16(847);
+emit_16(912);
+emit_16(848);
+emit_16(912);
+emit_16(847);
+emit_16(912);
+emit_16(848);
+emit_16(913);
+emit_16(849);
+emit_16(913);
+emit_16(848);
+emit_16(913);
+emit_16(849);
+emit_16(914);
+emit_16(850);
+emit_16(914);
+emit_16(849);
+emit_16(914);
+emit_16(850);
+emit_16(915);
+emit_16(851);
+emit_16(915);
+emit_16(850);
+emit_16(915);
+emit_16(851);
+emit_16(916);
+emit_16(852);
+emit_16(916);
+emit_16(851);
+emit_16(916);
+emit_16(852);
+emit_16(917);
+emit_16(853);
+emit_16(917);
+emit_16(852);
+emit_16(917);
+emit_16(853);
+emit_16(918);
+emit_16(854);
+emit_16(918);
+emit_16(853);
+emit_16(918);
+emit_16(854);
+emit_16(919);
+emit_16(855);
+emit_16(919);
+emit_16(854);
+emit_16(919);
+emit_16(855);
+emit_16(920);
+emit_16(856);
+emit_16(920);
+emit_16(855);
+emit_16(920);
+emit_16(856);
+emit_16(921);
+emit_16(857);
+emit_16(921);
+emit_16(856);
+emit_16(921);
+emit_16(857);
+emit_16(922);
+emit_16(858);
+emit_16(922);
+emit_16(857);
+emit_16(922);
+emit_16(858);
+emit_16(923);
+emit_16(859);
+emit_16(923);
+emit_16(858);
+emit_16(923);
+emit_16(859);
+emit_16(924);
+emit_16(860);
+emit_16(924);
+emit_16(859);
+emit_16(924);
+emit_16(860);
+emit_16(925);
+emit_16(861);
+emit_16(925);
+emit_16(860);
+emit_16(925);
+emit_16(861);
+emit_16(926);
+emit_16(862);
+emit_16(926);
+emit_16(861);
+emit_16(926);
+emit_16(862);
+emit_16(927);
+emit_16(863);
+emit_16(927);
+emit_16(862);
+emit_16(927);
+emit_16(863);
+emit_16(928);
+emit_16(864);
+emit_16(928);
+emit_16(863);
+emit_16(928);
+emit_16(864);
+emit_16(929);
+emit_16(865);
+emit_16(929);
+emit_16(864);
+emit_16(929);
+emit_16(865);
+emit_16(930);
+emit_16(866);
+emit_16(930);
+emit_16(865);
+emit_16(930);
+emit_16(866);
+emit_16(931);
+emit_16(867);
+emit_16(931);
+emit_16(866);
+emit_16(931);
+emit_16(867);
+emit_16(932);
+emit_16(868);
+emit_16(932);
+emit_16(867);
+emit_16(932);
+emit_16(868);
+emit_16(933);
+emit_16(869);
+emit_16(933);
+emit_16(868);
+emit_16(933);
+emit_16(869);
+emit_16(934);
+emit_16(870);
+emit_16(934);
+emit_16(869);
+emit_16(934);
+emit_16(870);
+emit_16(935);
+emit_16(871);
+emit_16(935);
+emit_16(870);
+emit_16(935);
+emit_16(871);
+emit_16(936);
+emit_16(872);
+emit_16(936);
+emit_16(871);
+emit_16(936);
+emit_16(872);
+emit_16(937);
+emit_16(873);
+emit_16(937);
+emit_16(872);
+emit_16(937);
+emit_16(873);
+emit_16(938);
+emit_16(874);
+emit_16(938);
+emit_16(873);
+emit_16(938);
+emit_16(874);
+emit_16(939);
+emit_16(875);
+emit_16(939);
+emit_16(874);
+emit_16(939);
+emit_16(875);
+emit_16(940);
+emit_16(876);
+emit_16(940);
+emit_16(875);
+emit_16(940);
+emit_16(876);
+emit_16(941);
+emit_16(877);
+emit_16(941);
+emit_16(876);
+emit_16(941);
+emit_16(877);
+emit_16(942);
+emit_16(878);
+emit_16(942);
+emit_16(877);
+emit_16(942);
+emit_16(878);
+emit_16(943);
+emit_16(879);
+emit_16(943);
+emit_16(878);
+emit_16(943);
+emit_16(879);
+emit_16(944);
+emit_16(880);
+emit_16(944);
+emit_16(879);
+emit_16(944);
+emit_16(880);
+emit_16(945);
+emit_16(881);
+emit_16(945);
+emit_16(880);
+emit_16(945);
+emit_16(881);
+emit_16(946);
+emit_16(882);
+emit_16(946);
+emit_16(881);
+emit_16(946);
+emit_16(882);
+emit_16(947);
+emit_16(883);
+emit_16(947);
+emit_16(882);
+emit_16(947);
+emit_16(883);
+emit_16(948);
+emit_16(884);
+emit_16(948);
+emit_16(883);
+emit_16(948);
+emit_16(884);
+emit_16(949);
+emit_16(885);
+emit_16(949);
+emit_16(884);
+emit_16(949);
+emit_16(885);
+emit_16(950);
+emit_16(886);
+emit_16(950);
+emit_16(885);
+emit_16(950);
+emit_16(886);
+emit_16(951);
+emit_16(887);
+emit_16(951);
+emit_16(886);
+emit_16(951);
+emit_16(887);
+emit_16(952);
+emit_16(888);
+emit_16(952);
+emit_16(887);
+emit_16(952);
+emit_16(888);
+emit_16(953);
+emit_16(889);
+emit_16(953);
+emit_16(888);
+emit_16(953);
+emit_16(889);
+emit_16(954);
+emit_16(890);
+emit_16(954);
+emit_16(889);
+emit_16(954);
+emit_16(890);
+emit_16(955);
+emit_16(891);
+emit_16(955);
+emit_16(890);
+emit_16(955);
+emit_16(891);
+emit_16(956);
+emit_16(892);
+emit_16(956);
+emit_16(891);
+emit_16(956);
+emit_16(892);
+emit_16(957);
+emit_16(893);
+emit_16(957);
+emit_16(892);
+emit_16(957);
+emit_16(893);
+emit_16(958);
+emit_16(894);
+emit_16(958);
+emit_16(893);
+emit_16(958);
+emit_16(894);
+emit_16(959);
+emit_16(895);
+emit_16(959);
+emit_16(894);
+emit_16(960);
+emit_16(896);
+emit_16(961);
+emit_16(897);
+emit_16(961);
+emit_16(896);
+emit_16(961);
+emit_16(897);
+emit_16(962);
+emit_16(898);
+emit_16(962);
+emit_16(897);
+emit_16(962);
+emit_16(898);
+emit_16(963);
+emit_16(899);
+emit_16(963);
+emit_16(898);
+emit_16(963);
+emit_16(899);
+emit_16(964);
+emit_16(900);
+emit_16(964);
+emit_16(899);
+emit_16(964);
+emit_16(900);
+emit_16(965);
+emit_16(901);
+emit_16(965);
+emit_16(900);
+emit_16(965);
+emit_16(901);
+emit_16(966);
+emit_16(902);
+emit_16(966);
+emit_16(901);
+emit_16(966);
+emit_16(902);
+emit_16(967);
+emit_16(903);
+emit_16(967);
+emit_16(902);
+emit_16(967);
+emit_16(903);
+emit_16(968);
+emit_16(904);
+emit_16(968);
+emit_16(903);
+emit_16(968);
+emit_16(904);
+emit_16(969);
+emit_16(905);
+emit_16(969);
+emit_16(904);
+emit_16(969);
+emit_16(905);
+emit_16(970);
+emit_16(906);
+emit_16(970);
+emit_16(905);
+emit_16(970);
+emit_16(906);
+emit_16(971);
+emit_16(907);
+emit_16(971);
+emit_16(906);
+emit_16(971);
+emit_16(907);
+emit_16(972);
+emit_16(908);
+emit_16(972);
+emit_16(907);
+emit_16(972);
+emit_16(908);
+emit_16(973);
+emit_16(909);
+emit_16(973);
+emit_16(908);
+emit_16(973);
+emit_16(909);
+emit_16(974);
+emit_16(910);
+emit_16(974);
+emit_16(909);
+emit_16(974);
+emit_16(910);
+emit_16(975);
+emit_16(911);
+emit_16(975);
+emit_16(910);
+emit_16(975);
+emit_16(911);
+emit_16(976);
+emit_16(912);
+emit_16(976);
+emit_16(911);
+emit_16(976);
+emit_16(912);
+emit_16(977);
+emit_16(913);
+emit_16(977);
+emit_16(912);
+emit_16(977);
+emit_16(913);
+emit_16(978);
+emit_16(914);
+emit_16(978);
+emit_16(913);
+emit_16(978);
+emit_16(914);
+emit_16(979);
+emit_16(915);
+emit_16(979);
+emit_16(914);
+emit_16(979);
+emit_16(915);
+emit_16(980);
+emit_16(916);
+emit_16(980);
+emit_16(915);
+emit_16(980);
+emit_16(916);
+emit_16(981);
+emit_16(917);
+emit_16(981);
+emit_16(916);
+emit_16(981);
+emit_16(917);
+emit_16(982);
+emit_16(918);
+emit_16(982);
+emit_16(917);
+emit_16(982);
+emit_16(918);
+emit_16(983);
+emit_16(919);
+emit_16(983);
+emit_16(918);
+emit_16(983);
+emit_16(919);
+emit_16(984);
+emit_16(920);
+emit_16(984);
+emit_16(919);
+emit_16(984);
+emit_16(920);
+emit_16(985);
+emit_16(921);
+emit_16(985);
+emit_16(920);
+emit_16(985);
+emit_16(921);
+emit_16(986);
+emit_16(922);
+emit_16(986);
+emit_16(921);
+emit_16(986);
+emit_16(922);
+emit_16(987);
+emit_16(923);
+emit_16(987);
+emit_16(922);
+emit_16(987);
+emit_16(923);
+emit_16(988);
+emit_16(924);
+emit_16(988);
+emit_16(923);
+emit_16(988);
+emit_16(924);
+emit_16(989);
+emit_16(925);
+emit_16(989);
+emit_16(924);
+emit_16(989);
+emit_16(925);
+emit_16(990);
+emit_16(926);
+emit_16(990);
+emit_16(925);
+emit_16(990);
+emit_16(926);
+emit_16(991);
+emit_16(927);
+emit_16(991);
+emit_16(926);
+emit_16(991);
+emit_16(927);
+emit_16(992);
+emit_16(928);
+emit_16(992);
+emit_16(927);
+emit_16(992);
+emit_16(928);
+emit_16(993);
+emit_16(929);
+emit_16(993);
+emit_16(928);
+emit_16(993);
+emit_16(929);
+emit_16(994);
+emit_16(930);
+emit_16(994);
+emit_16(929);
+emit_16(994);
+emit_16(930);
+emit_16(995);
+emit_16(931);
+emit_16(995);
+emit_16(930);
+emit_16(995);
+emit_16(931);
+emit_16(996);
+emit_16(932);
+emit_16(996);
+emit_16(931);
+emit_16(996);
+emit_16(932);
+emit_16(997);
+emit_16(933);
+emit_16(997);
+emit_16(932);
+emit_16(997);
+emit_16(933);
+emit_16(998);
+emit_16(934);
+emit_16(998);
+emit_16(933);
+emit_16(998);
+emit_16(934);
+emit_16(999);
+emit_16(935);
+emit_16(999);
+emit_16(934);
+emit_16(999);
+emit_16(935);
+emit_16(1000);
+emit_16(936);
+emit_16(1000);
+emit_16(935);
+emit_16(1000);
+emit_16(936);
+emit_16(1001);
+emit_16(937);
+emit_16(1001);
+emit_16(936);
+emit_16(1001);
+emit_16(937);
+emit_16(1002);
+emit_16(938);
+emit_16(1002);
+emit_16(937);
+emit_16(1002);
+emit_16(938);
+emit_16(1003);
+emit_16(939);
+emit_16(1003);
+emit_16(938);
+emit_16(1003);
+emit_16(939);
+emit_16(1004);
+emit_16(940);
+emit_16(1004);
+emit_16(939);
+emit_16(1004);
+emit_16(940);
+emit_16(1005);
+emit_16(941);
+emit_16(1005);
+emit_16(940);
+emit_16(1005);
+emit_16(941);
+emit_16(1006);
+emit_16(942);
+emit_16(1006);
+emit_16(941);
+emit_16(1006);
+emit_16(942);
+emit_16(1007);
+emit_16(943);
+emit_16(1007);
+emit_16(942);
+emit_16(1007);
+emit_16(943);
+emit_16(1008);
+emit_16(944);
+emit_16(1008);
+emit_16(943);
+emit_16(1008);
+emit_16(944);
+emit_16(1009);
+emit_16(945);
+emit_16(1009);
+emit_16(944);
+emit_16(1009);
+emit_16(945);
+emit_16(1010);
+emit_16(946);
+emit_16(1010);
+emit_16(945);
+emit_16(1010);
+emit_16(946);
+emit_16(1011);
+emit_16(947);
+emit_16(1011);
+emit_16(946);
+emit_16(1011);
+emit_16(947);
+emit_16(1012);
+emit_16(948);
+emit_16(1012);
+emit_16(947);
+emit_16(1012);
+emit_16(948);
+emit_16(1013);
+emit_16(949);
+emit_16(1013);
+emit_16(948);
+emit_16(1013);
+emit_16(949);
+emit_16(1014);
+emit_16(950);
+emit_16(1014);
+emit_16(949);
+emit_16(1014);
+emit_16(950);
+emit_16(1015);
+emit_16(951);
+emit_16(1015);
+emit_16(950);
+emit_16(1015);
+emit_16(951);
+emit_16(1016);
+emit_16(952);
+emit_16(1016);
+emit_16(951);
+emit_16(1016);
+emit_16(952);
+emit_16(1017);
+emit_16(953);
+emit_16(1017);
+emit_16(952);
+emit_16(1017);
+emit_16(953);
+emit_16(1018);
+emit_16(954);
+emit_16(1018);
+emit_16(953);
+emit_16(1018);
+emit_16(954);
+emit_16(1019);
+emit_16(955);
+emit_16(1019);
+emit_16(954);
+emit_16(1019);
+emit_16(955);
+emit_16(1020);
+emit_16(956);
+emit_16(1020);
+emit_16(955);
+emit_16(1020);
+emit_16(956);
+emit_16(1021);
+emit_16(957);
+emit_16(1021);
+emit_16(956);
+emit_16(1021);
+emit_16(957);
+emit_16(1022);
+emit_16(958);
+emit_16(1022);
+emit_16(957);
+emit_16(1022);
+emit_16(958);
+emit_16(1023);
+emit_16(959);
+emit_16(1023);
+emit_16(958);
+emit_16(1024);
+emit_16(960);
+emit_16(1025);
+emit_16(961);
+emit_16(1025);
+emit_16(960);
+emit_16(1025);
+emit_16(961);
+emit_16(1026);
+emit_16(962);
+emit_16(1026);
+emit_16(961);
+emit_16(1026);
+emit_16(962);
+emit_16(1027);
+emit_16(963);
+emit_16(1027);
+emit_16(962);
+emit_16(1027);
+emit_16(963);
+emit_16(1028);
+emit_16(964);
+emit_16(1028);
+emit_16(963);
+emit_16(1028);
+emit_16(964);
+emit_16(1029);
+emit_16(965);
+emit_16(1029);
+emit_16(964);
+emit_16(1029);
+emit_16(965);
+emit_16(1030);
+emit_16(966);
+emit_16(1030);
+emit_16(965);
+emit_16(1030);
+emit_16(966);
+emit_16(1031);
+emit_16(967);
+emit_16(1031);
+emit_16(966);
+emit_16(1031);
+emit_16(967);
+emit_16(1032);
+emit_16(968);
+emit_16(1032);
+emit_16(967);
+emit_16(1032);
+emit_16(968);
+emit_16(1033);
+emit_16(969);
+emit_16(1033);
+emit_16(968);
+emit_16(1033);
+emit_16(969);
+emit_16(1034);
+emit_16(970);
+emit_16(1034);
+emit_16(969);
+emit_16(1034);
+emit_16(970);
+emit_16(1035);
+emit_16(971);
+emit_16(1035);
+emit_16(970);
+emit_16(1035);
+emit_16(971);
+emit_16(1036);
+emit_16(972);
+emit_16(1036);
+emit_16(971);
+emit_16(1036);
+emit_16(972);
+emit_16(1037);
+emit_16(973);
+emit_16(1037);
+emit_16(972);
+emit_16(1037);
+emit_16(973);
+emit_16(1038);
+emit_16(974);
+emit_16(1038);
+emit_16(973);
+emit_16(1038);
+emit_16(974);
+emit_16(1039);
+emit_16(975);
+emit_16(1039);
+emit_16(974);
+emit_16(1039);
+emit_16(975);
+emit_16(1040);
+emit_16(976);
+emit_16(1040);
+emit_16(975);
+emit_16(1040);
+emit_16(976);
+emit_16(1041);
+emit_16(977);
+emit_16(1041);
+emit_16(976);
+emit_16(1041);
+emit_16(977);
+emit_16(1042);
+emit_16(978);
+emit_16(1042);
+emit_16(977);
+emit_16(1042);
+emit_16(978);
+emit_16(1043);
+emit_16(979);
+emit_16(1043);
+emit_16(978);
+emit_16(1043);
+emit_16(979);
+emit_16(1044);
+emit_16(980);
+emit_16(1044);
+emit_16(979);
+emit_16(1044);
+emit_16(980);
+emit_16(1045);
+emit_16(981);
+emit_16(1045);
+emit_16(980);
+emit_16(1045);
+emit_16(981);
+emit_16(1046);
+emit_16(982);
+emit_16(1046);
+emit_16(981);
+emit_16(1046);
+emit_16(982);
+emit_16(1047);
+emit_16(983);
+emit_16(1047);
+emit_16(982);
+emit_16(1047);
+emit_16(983);
+emit_16(1048);
+emit_16(984);
+emit_16(1048);
+emit_16(983);
+emit_16(1048);
+emit_16(984);
+emit_16(1049);
+emit_16(985);
+emit_16(1049);
+emit_16(984);
+emit_16(1049);
+emit_16(985);
+emit_16(1050);
+emit_16(986);
+emit_16(1050);
+emit_16(985);
+emit_16(1050);
+emit_16(986);
+emit_16(1051);
+emit_16(987);
+emit_16(1051);
+emit_16(986);
+emit_16(1051);
+emit_16(987);
+emit_16(1052);
+emit_16(988);
+emit_16(1052);
+emit_16(987);
+emit_16(1052);
+emit_16(988);
+emit_16(1053);
+emit_16(989);
+emit_16(1053);
+emit_16(988);
+emit_16(1053);
+emit_16(989);
+emit_16(1054);
+emit_16(990);
+emit_16(1054);
+emit_16(989);
+emit_16(1054);
+emit_16(990);
+emit_16(1055);
+emit_16(991);
+emit_16(1055);
+emit_16(990);
+emit_16(1055);
+emit_16(991);
+emit_16(1056);
+emit_16(992);
+emit_16(1056);
+emit_16(991);
+emit_16(1056);
+emit_16(992);
+emit_16(1057);
+emit_16(993);
+emit_16(1057);
+emit_16(992);
+emit_16(1057);
+emit_16(993);
+emit_16(1058);
+emit_16(994);
+emit_16(1058);
+emit_16(993);
+emit_16(1058);
+emit_16(994);
+emit_16(1059);
+emit_16(995);
+emit_16(1059);
+emit_16(994);
+emit_16(1059);
+emit_16(995);
+emit_16(1060);
+emit_16(996);
+emit_16(1060);
+emit_16(995);
+emit_16(1060);
+emit_16(996);
+emit_16(1061);
+emit_16(997);
+emit_16(1061);
+emit_16(996);
+emit_16(1061);
+emit_16(997);
+emit_16(1062);
+emit_16(998);
+emit_16(1062);
+emit_16(997);
+emit_16(1062);
+emit_16(998);
+emit_16(1063);
+emit_16(999);
+emit_16(1063);
+emit_16(998);
+emit_16(1063);
+emit_16(999);
+emit_16(1064);
+emit_16(1000);
+emit_16(1064);
+emit_16(999);
+emit_16(1064);
+emit_16(1000);
+emit_16(1065);
+emit_16(1001);
+emit_16(1065);
+emit_16(1000);
+emit_16(1065);
+emit_16(1001);
+emit_16(1066);
+emit_16(1002);
+emit_16(1066);
+emit_16(1001);
+emit_16(1066);
+emit_16(1002);
+emit_16(1067);
+emit_16(1003);
+emit_16(1067);
+emit_16(1002);
+emit_16(1067);
+emit_16(1003);
+emit_16(1068);
+emit_16(1004);
+emit_16(1068);
+emit_16(1003);
+emit_16(1068);
+emit_16(1004);
+emit_16(1069);
+emit_16(1005);
+emit_16(1069);
+emit_16(1004);
+emit_16(1069);
+emit_16(1005);
+emit_16(1070);
+emit_16(1006);
+emit_16(1070);
+emit_16(1005);
+emit_16(1070);
+emit_16(1006);
+emit_16(1071);
+emit_16(1007);
+emit_16(1071);
+emit_16(1006);
+emit_16(1071);
+emit_16(1007);
+emit_16(1072);
+emit_16(1008);
+emit_16(1072);
+emit_16(1007);
+emit_16(1072);
+emit_16(1008);
+emit_16(1073);
+emit_16(1009);
+emit_16(1073);
+emit_16(1008);
+emit_16(1073);
+emit_16(1009);
+emit_16(1074);
+emit_16(1010);
+emit_16(1074);
+emit_16(1009);
+emit_16(1074);
+emit_16(1010);
+emit_16(1075);
+emit_16(1011);
+emit_16(1075);
+emit_16(1010);
+emit_16(1075);
+emit_16(1011);
+emit_16(1076);
+emit_16(1012);
+emit_16(1076);
+emit_16(1011);
+emit_16(1076);
+emit_16(1012);
+emit_16(1077);
+emit_16(1013);
+emit_16(1077);
+emit_16(1012);
+emit_16(1077);
+emit_16(1013);
+emit_16(1078);
+emit_16(1014);
+emit_16(1078);
+emit_16(1013);
+emit_16(1078);
+emit_16(1014);
+emit_16(1079);
+emit_16(1015);
+emit_16(1079);
+emit_16(1014);
+emit_16(1079);
+emit_16(1015);
+emit_16(1080);
+emit_16(1016);
+emit_16(1080);
+emit_16(1015);
+emit_16(1080);
+emit_16(1016);
+emit_16(1081);
+emit_16(1017);
+emit_16(1081);
+emit_16(1016);
+emit_16(1081);
+emit_16(1017);
+emit_16(1082);
+emit_16(1018);
+emit_16(1082);
+emit_16(1017);
+emit_16(1082);
+emit_16(1018);
+emit_16(1083);
+emit_16(1019);
+emit_16(1083);
+emit_16(1018);
+emit_16(1083);
+emit_16(1019);
+emit_16(1084);
+emit_16(1020);
+emit_16(1084);
+emit_16(1019);
+emit_16(1084);
+emit_16(1020);
+emit_16(1085);
+emit_16(1021);
+emit_16(1085);
+emit_16(1020);
+emit_16(1085);
+emit_16(1021);
+emit_16(1086);
+emit_16(1022);
+emit_16(1086);
+emit_16(1021);
+emit_16(1086);
+emit_16(1022);
+emit_16(1087);
+emit_16(1023);
+emit_16(1087);
+emit_16(1022);
+emit_16(1088);
+emit_16(1024);
+emit_16(1089);
+emit_16(1025);
+emit_16(1089);
+emit_16(1024);
+emit_16(1089);
+emit_16(1025);
+emit_16(1090);
+emit_16(1026);
+emit_16(1090);
+emit_16(1025);
+emit_16(1090);
+emit_16(1026);
+emit_16(1091);
+emit_16(1027);
+emit_16(1091);
+emit_16(1026);
+emit_16(1091);
+emit_16(1027);
+emit_16(1092);
+emit_16(1028);
+emit_16(1092);
+emit_16(1027);
+emit_16(1092);
+emit_16(1028);
+emit_16(1093);
+emit_16(1029);
+emit_16(1093);
+emit_16(1028);
+emit_16(1093);
+emit_16(1029);
+emit_16(1094);
+emit_16(1030);
+emit_16(1094);
+emit_16(1029);
+emit_16(1094);
+emit_16(1030);
+emit_16(1095);
+emit_16(1031);
+emit_16(1095);
+emit_16(1030);
+emit_16(1095);
+emit_16(1031);
+emit_16(1096);
+emit_16(1032);
+emit_16(1096);
+emit_16(1031);
+emit_16(1096);
+emit_16(1032);
+emit_16(1097);
+emit_16(1033);
+emit_16(1097);
+emit_16(1032);
+emit_16(1097);
+emit_16(1033);
+emit_16(1098);
+emit_16(1034);
+emit_16(1098);
+emit_16(1033);
+emit_16(1098);
+emit_16(1034);
+emit_16(1099);
+emit_16(1035);
+emit_16(1099);
+emit_16(1034);
+emit_16(1099);
+emit_16(1035);
+emit_16(1100);
+emit_16(1036);
+emit_16(1100);
+emit_16(1035);
+emit_16(1100);
+emit_16(1036);
+emit_16(1101);
+emit_16(1037);
+emit_16(1101);
+emit_16(1036);
+emit_16(1101);
+emit_16(1037);
+emit_16(1102);
+emit_16(1038);
+emit_16(1102);
+emit_16(1037);
+emit_16(1102);
+emit_16(1038);
+emit_16(1103);
+emit_16(1039);
+emit_16(1103);
+emit_16(1038);
+emit_16(1103);
+emit_16(1039);
+emit_16(1104);
+emit_16(1040);
+emit_16(1104);
+emit_16(1039);
+emit_16(1104);
+emit_16(1040);
+emit_16(1105);
+emit_16(1041);
+emit_16(1105);
+emit_16(1040);
+emit_16(1105);
+emit_16(1041);
+emit_16(1106);
+emit_16(1042);
+emit_16(1106);
+emit_16(1041);
+emit_16(1106);
+emit_16(1042);
+emit_16(1107);
+emit_16(1043);
+emit_16(1107);
+emit_16(1042);
+emit_16(1107);
+emit_16(1043);
+emit_16(1108);
+emit_16(1044);
+emit_16(1108);
+emit_16(1043);
+emit_16(1108);
+emit_16(1044);
+emit_16(1109);
+emit_16(1045);
+emit_16(1109);
+emit_16(1044);
+emit_16(1109);
+emit_16(1045);
+emit_16(1110);
+emit_16(1046);
+emit_16(1110);
+emit_16(1045);
+emit_16(1110);
+emit_16(1046);
+emit_16(1111);
+emit_16(1047);
+emit_16(1111);
+emit_16(1046);
+emit_16(1111);
+emit_16(1047);
+emit_16(1112);
+emit_16(1048);
+emit_16(1112);
+emit_16(1047);
+emit_16(1112);
+emit_16(1048);
+emit_16(1113);
+emit_16(1049);
+emit_16(1113);
+emit_16(1048);
+emit_16(1113);
+emit_16(1049);
+emit_16(1114);
+emit_16(1050);
+emit_16(1114);
+emit_16(1049);
+emit_16(1114);
+emit_16(1050);
+emit_16(1115);
+emit_16(1051);
+emit_16(1115);
+emit_16(1050);
+emit_16(1115);
+emit_16(1051);
+emit_16(1116);
+emit_16(1052);
+emit_16(1116);
+emit_16(1051);
+emit_16(1116);
+emit_16(1052);
+emit_16(1117);
+emit_16(1053);
+emit_16(1117);
+emit_16(1052);
+emit_16(1117);
+emit_16(1053);
+emit_16(1118);
+emit_16(1054);
+emit_16(1118);
+emit_16(1053);
+emit_16(1118);
+emit_16(1054);
+emit_16(1119);
+emit_16(1055);
+emit_16(1119);
+emit_16(1054);
+emit_16(1119);
+emit_16(1055);
+emit_16(1120);
+emit_16(1056);
+emit_16(1120);
+emit_16(1055);
+emit_16(1120);
+emit_16(1056);
+emit_16(1121);
+emit_16(1057);
+emit_16(1121);
+emit_16(1056);
+emit_16(1121);
+emit_16(1057);
+emit_16(1122);
+emit_16(1058);
+emit_16(1122);
+emit_16(1057);
+emit_16(1122);
+emit_16(1058);
+emit_16(1123);
+emit_16(1059);
+emit_16(1123);
+emit_16(1058);
+emit_16(1123);
+emit_16(1059);
+emit_16(1124);
+emit_16(1060);
+emit_16(1124);
+emit_16(1059);
+emit_16(1124);
+emit_16(1060);
+emit_16(1125);
+emit_16(1061);
+emit_16(1125);
+emit_16(1060);
+emit_16(1125);
+emit_16(1061);
+emit_16(1126);
+emit_16(1062);
+emit_16(1126);
+emit_16(1061);
+emit_16(1126);
+emit_16(1062);
+emit_16(1127);
+emit_16(1063);
+emit_16(1127);
+emit_16(1062);
+emit_16(1127);
+emit_16(1063);
+emit_16(1128);
+emit_16(1064);
+emit_16(1128);
+emit_16(1063);
+emit_16(1128);
+emit_16(1064);
+emit_16(1129);
+emit_16(1065);
+emit_16(1129);
+emit_16(1064);
+emit_16(1129);
+emit_16(1065);
+emit_16(1130);
+emit_16(1066);
+emit_16(1130);
+emit_16(1065);
+emit_16(1130);
+emit_16(1066);
+emit_16(1131);
+emit_16(1067);
+emit_16(1131);
+emit_16(1066);
+emit_16(1131);
+emit_16(1067);
+emit_16(1132);
+emit_16(1068);
+emit_16(1132);
+emit_16(1067);
+emit_16(1132);
+emit_16(1068);
+emit_16(1133);
+emit_16(1069);
+emit_16(1133);
+emit_16(1068);
+emit_16(1133);
+emit_16(1069);
+emit_16(1134);
+emit_16(1070);
+emit_16(1134);
+emit_16(1069);
+emit_16(1134);
+emit_16(1070);
+emit_16(1135);
+emit_16(1071);
+emit_16(1135);
+emit_16(1070);
+emit_16(1135);
+emit_16(1071);
+emit_16(1136);
+emit_16(1072);
+emit_16(1136);
+emit_16(1071);
+emit_16(1136);
+emit_16(1072);
+emit_16(1137);
+emit_16(1073);
+emit_16(1137);
+emit_16(1072);
+emit_16(1137);
+emit_16(1073);
+emit_16(1138);
+emit_16(1074);
+emit_16(1138);
+emit_16(1073);
+emit_16(1138);
+emit_16(1074);
+emit_16(1139);
+emit_16(1075);
+emit_16(1139);
+emit_16(1074);
+emit_16(1139);
+emit_16(1075);
+emit_16(1140);
+emit_16(1076);
+emit_16(1140);
+emit_16(1075);
+emit_16(1140);
+emit_16(1076);
+emit_16(1141);
+emit_16(1077);
+emit_16(1141);
+emit_16(1076);
+emit_16(1141);
+emit_16(1077);
+emit_16(1142);
+emit_16(1078);
+emit_16(1142);
+emit_16(1077);
+emit_16(1142);
+emit_16(1078);
+emit_16(1143);
+emit_16(1079);
+emit_16(1143);
+emit_16(1078);
+emit_16(1143);
+emit_16(1079);
+emit_16(1144);
+emit_16(1080);
+emit_16(1144);
+emit_16(1079);
+emit_16(1144);
+emit_16(1080);
+emit_16(1145);
+emit_16(1081);
+emit_16(1145);
+emit_16(1080);
+emit_16(1145);
+emit_16(1081);
+emit_16(1146);
+emit_16(1082);
+emit_16(1146);
+emit_16(1081);
+emit_16(1146);
+emit_16(1082);
+emit_16(1147);
+emit_16(1083);
+emit_16(1147);
+emit_16(1082);
+emit_16(1147);
+emit_16(1083);
+emit_16(1148);
+emit_16(1084);
+emit_16(1148);
+emit_16(1083);
+emit_16(1148);
+emit_16(1084);
+emit_16(1149);
+emit_16(1085);
+emit_16(1149);
+emit_16(1084);
+emit_16(1149);
+emit_16(1085);
+emit_16(1150);
+emit_16(1086);
+emit_16(1150);
+emit_16(1085);
+emit_16(1150);
+emit_16(1086);
+emit_16(1151);
+emit_16(1087);
+emit_16(1151);
+emit_16(1086);
+emit_16(1152);
+emit_16(1088);
+emit_16(1153);
+emit_16(1089);
+emit_16(1153);
+emit_16(1088);
+emit_16(1153);
+emit_16(1089);
+emit_16(1154);
+emit_16(1090);
+emit_16(1154);
+emit_16(1089);
+emit_16(1154);
+emit_16(1090);
+emit_16(1155);
+emit_16(1091);
+emit_16(1155);
+emit_16(1090);
+emit_16(1155);
+emit_16(1091);
+emit_16(1156);
+emit_16(1092);
+emit_16(1156);
+emit_16(1091);
+emit_16(1156);
+emit_16(1092);
+emit_16(1157);
+emit_16(1093);
+emit_16(1157);
+emit_16(1092);
+emit_16(1157);
+emit_16(1093);
+emit_16(1158);
+emit_16(1094);
+emit_16(1158);
+emit_16(1093);
+emit_16(1158);
+emit_16(1094);
+emit_16(1159);
+emit_16(1095);
+emit_16(1159);
+emit_16(1094);
+emit_16(1159);
+emit_16(1095);
+emit_16(1160);
+emit_16(1096);
+emit_16(1160);
+emit_16(1095);
+emit_16(1160);
+emit_16(1096);
+emit_16(1161);
+emit_16(1097);
+emit_16(1161);
+emit_16(1096);
+emit_16(1161);
+emit_16(1097);
+emit_16(1162);
+emit_16(1098);
+emit_16(1162);
+emit_16(1097);
+emit_16(1162);
+emit_16(1098);
+emit_16(1163);
+emit_16(1099);
+emit_16(1163);
+emit_16(1098);
+emit_16(1163);
+emit_16(1099);
+emit_16(1164);
+emit_16(1100);
+emit_16(1164);
+emit_16(1099);
+emit_16(1164);
+emit_16(1100);
+emit_16(1165);
+emit_16(1101);
+emit_16(1165);
+emit_16(1100);
+emit_16(1165);
+emit_16(1101);
+emit_16(1166);
+emit_16(1102);
+emit_16(1166);
+emit_16(1101);
+emit_16(1166);
+emit_16(1102);
+emit_16(1167);
+emit_16(1103);
+emit_16(1167);
+emit_16(1102);
+emit_16(1167);
+emit_16(1103);
+emit_16(1168);
+emit_16(1104);
+emit_16(1168);
+emit_16(1103);
+emit_16(1168);
+emit_16(1104);
+emit_16(1169);
+emit_16(1105);
+emit_16(1169);
+emit_16(1104);
+emit_16(1169);
+emit_16(1105);
+emit_16(1170);
+emit_16(1106);
+emit_16(1170);
+emit_16(1105);
+emit_16(1170);
+emit_16(1106);
+emit_16(1171);
+emit_16(1107);
+emit_16(1171);
+emit_16(1106);
+emit_16(1171);
+emit_16(1107);
+emit_16(1172);
+emit_16(1108);
+emit_16(1172);
+emit_16(1107);
+emit_16(1172);
+emit_16(1108);
+emit_16(1173);
+emit_16(1109);
+emit_16(1173);
+emit_16(1108);
+emit_16(1173);
+emit_16(1109);
+emit_16(1174);
+emit_16(1110);
+emit_16(1174);
+emit_16(1109);
+emit_16(1174);
+emit_16(1110);
+emit_16(1175);
+emit_16(1111);
+emit_16(1175);
+emit_16(1110);
+emit_16(1175);
+emit_16(1111);
+emit_16(1176);
+emit_16(1112);
+emit_16(1176);
+emit_16(1111);
+emit_16(1176);
+emit_16(1112);
+emit_16(1177);
+emit_16(1113);
+emit_16(1177);
+emit_16(1112);
+emit_16(1177);
+emit_16(1113);
+emit_16(1178);
+emit_16(1114);
+emit_16(1178);
+emit_16(1113);
+emit_16(1178);
+emit_16(1114);
+emit_16(1179);
+emit_16(1115);
+emit_16(1179);
+emit_16(1114);
+emit_16(1179);
+emit_16(1115);
+emit_16(1180);
+emit_16(1116);
+emit_16(1180);
+emit_16(1115);
+emit_16(1180);
+emit_16(1116);
+emit_16(1181);
+emit_16(1117);
+emit_16(1181);
+emit_16(1116);
+emit_16(1181);
+emit_16(1117);
+emit_16(1182);
+emit_16(1118);
+emit_16(1182);
+emit_16(1117);
+emit_16(1182);
+emit_16(1118);
+emit_16(1183);
+emit_16(1119);
+emit_16(1183);
+emit_16(1118);
+emit_16(1183);
+emit_16(1119);
+emit_16(1184);
+emit_16(1120);
+emit_16(1184);
+emit_16(1119);
+emit_16(1184);
+emit_16(1120);
+emit_16(1185);
+emit_16(1121);
+emit_16(1185);
+emit_16(1120);
+emit_16(1185);
+emit_16(1121);
+emit_16(1186);
+emit_16(1122);
+emit_16(1186);
+emit_16(1121);
+emit_16(1186);
+emit_16(1122);
+emit_16(1187);
+emit_16(1123);
+emit_16(1187);
+emit_16(1122);
+emit_16(1187);
+emit_16(1123);
+emit_16(1188);
+emit_16(1124);
+emit_16(1188);
+emit_16(1123);
+emit_16(1188);
+emit_16(1124);
+emit_16(1189);
+emit_16(1125);
+emit_16(1189);
+emit_16(1124);
+emit_16(1189);
+emit_16(1125);
+emit_16(1190);
+emit_16(1126);
+emit_16(1190);
+emit_16(1125);
+emit_16(1190);
+emit_16(1126);
+emit_16(1191);
+emit_16(1127);
+emit_16(1191);
+emit_16(1126);
+emit_16(1191);
+emit_16(1127);
+emit_16(1192);
+emit_16(1128);
+emit_16(1192);
+emit_16(1127);
+emit_16(1192);
+emit_16(1128);
+emit_16(1193);
+emit_16(1129);
+emit_16(1193);
+emit_16(1128);
+emit_16(1193);
+emit_16(1129);
+emit_16(1194);
+emit_16(1130);
+emit_16(1194);
+emit_16(1129);
+emit_16(1194);
+emit_16(1130);
+emit_16(1195);
+emit_16(1131);
+emit_16(1195);
+emit_16(1130);
+emit_16(1195);
+emit_16(1131);
+emit_16(1196);
+emit_16(1132);
+emit_16(1196);
+emit_16(1131);
+emit_16(1196);
+emit_16(1132);
+emit_16(1197);
+emit_16(1133);
+emit_16(1197);
+emit_16(1132);
+emit_16(1197);
+emit_16(1133);
+emit_16(1198);
+emit_16(1134);
+emit_16(1198);
+emit_16(1133);
+emit_16(1198);
+emit_16(1134);
+emit_16(1199);
+emit_16(1135);
+emit_16(1199);
+emit_16(1134);
+emit_16(1199);
+emit_16(1135);
+emit_16(1200);
+emit_16(1136);
+emit_16(1200);
+emit_16(1135);
+emit_16(1200);
+emit_16(1136);
+emit_16(1201);
+emit_16(1137);
+emit_16(1201);
+emit_16(1136);
+emit_16(1201);
+emit_16(1137);
+emit_16(1202);
+emit_16(1138);
+emit_16(1202);
+emit_16(1137);
+emit_16(1202);
+emit_16(1138);
+emit_16(1203);
+emit_16(1139);
+emit_16(1203);
+emit_16(1138);
+emit_16(1203);
+emit_16(1139);
+emit_16(1204);
+emit_16(1140);
+emit_16(1204);
+emit_16(1139);
+emit_16(1204);
+emit_16(1140);
+emit_16(1205);
+emit_16(1141);
+emit_16(1205);
+emit_16(1140);
+emit_16(1205);
+emit_16(1141);
+emit_16(1206);
+emit_16(1142);
+emit_16(1206);
+emit_16(1141);
+emit_16(1206);
+emit_16(1142);
+emit_16(1207);
+emit_16(1143);
+emit_16(1207);
+emit_16(1142);
+emit_16(1207);
+emit_16(1143);
+emit_16(1208);
+emit_16(1144);
+emit_16(1208);
+emit_16(1143);
+emit_16(1208);
+emit_16(1144);
+emit_16(1209);
+emit_16(1145);
+emit_16(1209);
+emit_16(1144);
+emit_16(1209);
+emit_16(1145);
+emit_16(1210);
+emit_16(1146);
+emit_16(1210);
+emit_16(1145);
+emit_16(1210);
+emit_16(1146);
+emit_16(1211);
+emit_16(1147);
+emit_16(1211);
+emit_16(1146);
+emit_16(1211);
+emit_16(1147);
+emit_16(1212);
+emit_16(1148);
+emit_16(1212);
+emit_16(1147);
+emit_16(1212);
+emit_16(1148);
+emit_16(1213);
+emit_16(1149);
+emit_16(1213);
+emit_16(1148);
+emit_16(1213);
+emit_16(1149);
+emit_16(1214);
+emit_16(1150);
+emit_16(1214);
+emit_16(1149);
+emit_16(1214);
+emit_16(1150);
+emit_16(1215);
+emit_16(1151);
+emit_16(1215);
+emit_16(1150);
+emit_16(1216);
+emit_16(1152);
+emit_16(1217);
+emit_16(1153);
+emit_16(1217);
+emit_16(1152);
+emit_16(1217);
+emit_16(1153);
+emit_16(1218);
+emit_16(1154);
+emit_16(1218);
+emit_16(1153);
+emit_16(1218);
+emit_16(1154);
+emit_16(1219);
+emit_16(1155);
+emit_16(1219);
+emit_16(1154);
+emit_16(1219);
+emit_16(1155);
+emit_16(1220);
+emit_16(1156);
+emit_16(1220);
+emit_16(1155);
+emit_16(1220);
+emit_16(1156);
+emit_16(1221);
+emit_16(1157);
+emit_16(1221);
+emit_16(1156);
+emit_16(1221);
+emit_16(1157);
+emit_16(1222);
+emit_16(1158);
+emit_16(1222);
+emit_16(1157);
+emit_16(1222);
+emit_16(1158);
+emit_16(1223);
+emit_16(1159);
+emit_16(1223);
+emit_16(1158);
+emit_16(1223);
+emit_16(1159);
+emit_16(1224);
+emit_16(1160);
+emit_16(1224);
+emit_16(1159);
+emit_16(1224);
+emit_16(1160);
+emit_16(1225);
+emit_16(1161);
+emit_16(1225);
+emit_16(1160);
+emit_16(1225);
+emit_16(1161);
+emit_16(1226);
+emit_16(1162);
+emit_16(1226);
+emit_16(1161);
+emit_16(1226);
+emit_16(1162);
+emit_16(1227);
+emit_16(1163);
+emit_16(1227);
+emit_16(1162);
+emit_16(1227);
+emit_16(1163);
+emit_16(1228);
+emit_16(1164);
+emit_16(1228);
+emit_16(1163);
+emit_16(1228);
+emit_16(1164);
+emit_16(1229);
+emit_16(1165);
+emit_16(1229);
+emit_16(1164);
+emit_16(1229);
+emit_16(1165);
+emit_16(1230);
+emit_16(1166);
+emit_16(1230);
+emit_16(1165);
+emit_16(1230);
+emit_16(1166);
+emit_16(1231);
+emit_16(1167);
+emit_16(1231);
+emit_16(1166);
+emit_16(1231);
+emit_16(1167);
+emit_16(1232);
+emit_16(1168);
+emit_16(1232);
+emit_16(1167);
+emit_16(1232);
+emit_16(1168);
+emit_16(1233);
+emit_16(1169);
+emit_16(1233);
+emit_16(1168);
+emit_16(1233);
+emit_16(1169);
+emit_16(1234);
+emit_16(1170);
+emit_16(1234);
+emit_16(1169);
+emit_16(1234);
+emit_16(1170);
+emit_16(1235);
+emit_16(1171);
+emit_16(1235);
+emit_16(1170);
+emit_16(1235);
+emit_16(1171);
+emit_16(1236);
+emit_16(1172);
+emit_16(1236);
+emit_16(1171);
+emit_16(1236);
+emit_16(1172);
+emit_16(1237);
+emit_16(1173);
+emit_16(1237);
+emit_16(1172);
+emit_16(1237);
+emit_16(1173);
+emit_16(1238);
+emit_16(1174);
+emit_16(1238);
+emit_16(1173);
+emit_16(1238);
+emit_16(1174);
+emit_16(1239);
+emit_16(1175);
+emit_16(1239);
+emit_16(1174);
+emit_16(1239);
+emit_16(1175);
+emit_16(1240);
+emit_16(1176);
+emit_16(1240);
+emit_16(1175);
+emit_16(1240);
+emit_16(1176);
+emit_16(1241);
+emit_16(1177);
+emit_16(1241);
+emit_16(1176);
+emit_16(1241);
+emit_16(1177);
+emit_16(1242);
+emit_16(1178);
+emit_16(1242);
+emit_16(1177);
+emit_16(1242);
+emit_16(1178);
+emit_16(1243);
+emit_16(1179);
+emit_16(1243);
+emit_16(1178);
+emit_16(1243);
+emit_16(1179);
+emit_16(1244);
+emit_16(1180);
+emit_16(1244);
+emit_16(1179);
+emit_16(1244);
+emit_16(1180);
+emit_16(1245);
+emit_16(1181);
+emit_16(1245);
+emit_16(1180);
+emit_16(1245);
+emit_16(1181);
+emit_16(1246);
+emit_16(1182);
+emit_16(1246);
+emit_16(1181);
+emit_16(1246);
+emit_16(1182);
+emit_16(1247);
+emit_16(1183);
+emit_16(1247);
+emit_16(1182);
+emit_16(1247);
+emit_16(1183);
+emit_16(1248);
+emit_16(1184);
+emit_16(1248);
+emit_16(1183);
+emit_16(1248);
+emit_16(1184);
+emit_16(1249);
+emit_16(1185);
+emit_16(1249);
+emit_16(1184);
+emit_16(1249);
+emit_16(1185);
+emit_16(1250);
+emit_16(1186);
+emit_16(1250);
+emit_16(1185);
+emit_16(1250);
+emit_16(1186);
+emit_16(1251);
+emit_16(1187);
+emit_16(1251);
+emit_16(1186);
+emit_16(1251);
+emit_16(1187);
+emit_16(1252);
+emit_16(1188);
+emit_16(1252);
+emit_16(1187);
+emit_16(1252);
+emit_16(1188);
+emit_16(1253);
+emit_16(1189);
+emit_16(1253);
+emit_16(1188);
+emit_16(1253);
+emit_16(1189);
+emit_16(1254);
+emit_16(1190);
+emit_16(1254);
+emit_16(1189);
+emit_16(1254);
+emit_16(1190);
+emit_16(1255);
+emit_16(1191);
+emit_16(1255);
+emit_16(1190);
+emit_16(1255);
+emit_16(1191);
+emit_16(1256);
+emit_16(1192);
+emit_16(1256);
+emit_16(1191);
+emit_16(1256);
+emit_16(1192);
+emit_16(1257);
+emit_16(1193);
+emit_16(1257);
+emit_16(1192);
+emit_16(1257);
+emit_16(1193);
+emit_16(1258);
+emit_16(1194);
+emit_16(1258);
+emit_16(1193);
+emit_16(1258);
+emit_16(1194);
+emit_16(1259);
+emit_16(1195);
+emit_16(1259);
+emit_16(1194);
+emit_16(1259);
+emit_16(1195);
+emit_16(1260);
+emit_16(1196);
+emit_16(1260);
+emit_16(1195);
+emit_16(1260);
+emit_16(1196);
+emit_16(1261);
+emit_16(1197);
+emit_16(1261);
+emit_16(1196);
+emit_16(1261);
+emit_16(1197);
+emit_16(1262);
+emit_16(1198);
+emit_16(1262);
+emit_16(1197);
+emit_16(1262);
+emit_16(1198);
+emit_16(1263);
+emit_16(1199);
+emit_16(1263);
+emit_16(1198);
+emit_16(1263);
+emit_16(1199);
+emit_16(1264);
+emit_16(1200);
+emit_16(1264);
+emit_16(1199);
+emit_16(1264);
+emit_16(1200);
+emit_16(1265);
+emit_16(1201);
+emit_16(1265);
+emit_16(1200);
+emit_16(1265);
+emit_16(1201);
+emit_16(1266);
+emit_16(1202);
+emit_16(1266);
+emit_16(1201);
+emit_16(1266);
+emit_16(1202);
+emit_16(1267);
+emit_16(1203);
+emit_16(1267);
+emit_16(1202);
+emit_16(1267);
+emit_16(1203);
+emit_16(1268);
+emit_16(1204);
+emit_16(1268);
+emit_16(1203);
+emit_16(1268);
+emit_16(1204);
+emit_16(1269);
+emit_16(1205);
+emit_16(1269);
+emit_16(1204);
+emit_16(1269);
+emit_16(1205);
+emit_16(1270);
+emit_16(1206);
+emit_16(1270);
+emit_16(1205);
+emit_16(1270);
+emit_16(1206);
+emit_16(1271);
+emit_16(1207);
+emit_16(1271);
+emit_16(1206);
+emit_16(1271);
+emit_16(1207);
+emit_16(1272);
+emit_16(1208);
+emit_16(1272);
+emit_16(1207);
+emit_16(1272);
+emit_16(1208);
+emit_16(1273);
+emit_16(1209);
+emit_16(1273);
+emit_16(1208);
+emit_16(1273);
+emit_16(1209);
+emit_16(1274);
+emit_16(1210);
+emit_16(1274);
+emit_16(1209);
+emit_16(1274);
+emit_16(1210);
+emit_16(1275);
+emit_16(1211);
+emit_16(1275);
+emit_16(1210);
+emit_16(1275);
+emit_16(1211);
+emit_16(1276);
+emit_16(1212);
+emit_16(1276);
+emit_16(1211);
+emit_16(1276);
+emit_16(1212);
+emit_16(1277);
+emit_16(1213);
+emit_16(1277);
+emit_16(1212);
+emit_16(1277);
+emit_16(1213);
+emit_16(1278);
+emit_16(1214);
+emit_16(1278);
+emit_16(1213);
+emit_16(1278);
+emit_16(1214);
+emit_16(1279);
+emit_16(1215);
+emit_16(1279);
+emit_16(1214);
+emit_16(1280);
+emit_16(1216);
+emit_16(1281);
+emit_16(1217);
+emit_16(1281);
+emit_16(1216);
+emit_16(1281);
+emit_16(1217);
+emit_16(1282);
+emit_16(1218);
+emit_16(1282);
+emit_16(1217);
+emit_16(1282);
+emit_16(1218);
+emit_16(1283);
+emit_16(1219);
+emit_16(1283);
+emit_16(1218);
+emit_16(1283);
+emit_16(1219);
+emit_16(1284);
+emit_16(1220);
+emit_16(1284);
+emit_16(1219);
+emit_16(1284);
+emit_16(1220);
+emit_16(1285);
+emit_16(1221);
+emit_16(1285);
+emit_16(1220);
+emit_16(1285);
+emit_16(1221);
+emit_16(1286);
+emit_16(1222);
+emit_16(1286);
+emit_16(1221);
+emit_16(1286);
+emit_16(1222);
+emit_16(1287);
+emit_16(1223);
+emit_16(1287);
+emit_16(1222);
+emit_16(1287);
+emit_16(1223);
+emit_16(1288);
+emit_16(1224);
+emit_16(1288);
+emit_16(1223);
+emit_16(1288);
+emit_16(1224);
+emit_16(1289);
+emit_16(1225);
+emit_16(1289);
+emit_16(1224);
+emit_16(1289);
+emit_16(1225);
+emit_16(1290);
+emit_16(1226);
+emit_16(1290);
+emit_16(1225);
+emit_16(1290);
+emit_16(1226);
+emit_16(1291);
+emit_16(1227);
+emit_16(1291);
+emit_16(1226);
+emit_16(1291);
+emit_16(1227);
+emit_16(1292);
+emit_16(1228);
+emit_16(1292);
+emit_16(1227);
+emit_16(1292);
+emit_16(1228);
+emit_16(1293);
+emit_16(1229);
+emit_16(1293);
+emit_16(1228);
+emit_16(1293);
+emit_16(1229);
+emit_16(1294);
+emit_16(1230);
+emit_16(1294);
+emit_16(1229);
+emit_16(1294);
+emit_16(1230);
+emit_16(1295);
+emit_16(1231);
+emit_16(1295);
+emit_16(1230);
+emit_16(1295);
+emit_16(1231);
+emit_16(1296);
+emit_16(1232);
+emit_16(1296);
+emit_16(1231);
+emit_16(1296);
+emit_16(1232);
+emit_16(1297);
+emit_16(1233);
+emit_16(1297);
+emit_16(1232);
+emit_16(1297);
+emit_16(1233);
+emit_16(1298);
+emit_16(1234);
+emit_16(1298);
+emit_16(1233);
+emit_16(1298);
+emit_16(1234);
+emit_16(1299);
+emit_16(1235);
+emit_16(1299);
+emit_16(1234);
+emit_16(1299);
+emit_16(1235);
+emit_16(1300);
+emit_16(1236);
+emit_16(1300);
+emit_16(1235);
+emit_16(1300);
+emit_16(1236);
+emit_16(1301);
+emit_16(1237);
+emit_16(1301);
+emit_16(1236);
+emit_16(1301);
+emit_16(1237);
+emit_16(1302);
+emit_16(1238);
+emit_16(1302);
+emit_16(1237);
+emit_16(1302);
+emit_16(1238);
+emit_16(1303);
+emit_16(1239);
+emit_16(1303);
+emit_16(1238);
+emit_16(1303);
+emit_16(1239);
+emit_16(1304);
+emit_16(1240);
+emit_16(1304);
+emit_16(1239);
+emit_16(1304);
+emit_16(1240);
+emit_16(1305);
+emit_16(1241);
+emit_16(1305);
+emit_16(1240);
+emit_16(1305);
+emit_16(1241);
+emit_16(1306);
+emit_16(1242);
+emit_16(1306);
+emit_16(1241);
+emit_16(1306);
+emit_16(1242);
+emit_16(1307);
+emit_16(1243);
+emit_16(1307);
+emit_16(1242);
+emit_16(1307);
+emit_16(1243);
+emit_16(1308);
+emit_16(1244);
+emit_16(1308);
+emit_16(1243);
+emit_16(1308);
+emit_16(1244);
+emit_16(1309);
+emit_16(1245);
+emit_16(1309);
+emit_16(1244);
+emit_16(1309);
+emit_16(1245);
+emit_16(1310);
+emit_16(1246);
+emit_16(1310);
+emit_16(1245);
+emit_16(1310);
+emit_16(1246);
+emit_16(1311);
+emit_16(1247);
+emit_16(1311);
+emit_16(1246);
+emit_16(1311);
+emit_16(1247);
+emit_16(1312);
+emit_16(1248);
+emit_16(1312);
+emit_16(1247);
+emit_16(1312);
+emit_16(1248);
+emit_16(1313);
+emit_16(1249);
+emit_16(1313);
+emit_16(1248);
+emit_16(1313);
+emit_16(1249);
+emit_16(1314);
+emit_16(1250);
+emit_16(1314);
+emit_16(1249);
+emit_16(1314);
+emit_16(1250);
+emit_16(1315);
+emit_16(1251);
+emit_16(1315);
+emit_16(1250);
+emit_16(1315);
+emit_16(1251);
+emit_16(1316);
+emit_16(1252);
+emit_16(1316);
+emit_16(1251);
+emit_16(1316);
+emit_16(1252);
+emit_16(1317);
+emit_16(1253);
+emit_16(1317);
+emit_16(1252);
+emit_16(1317);
+emit_16(1253);
+emit_16(1318);
+emit_16(1254);
+emit_16(1318);
+emit_16(1253);
+emit_16(1318);
+emit_16(1254);
+emit_16(1319);
+emit_16(1255);
+emit_16(1319);
+emit_16(1254);
+emit_16(1319);
+emit_16(1255);
+emit_16(1320);
+emit_16(1256);
+emit_16(1320);
+emit_16(1255);
+emit_16(1320);
+emit_16(1256);
+emit_16(1321);
+emit_16(1257);
+emit_16(1321);
+emit_16(1256);
+emit_16(1321);
+emit_16(1257);
+emit_16(1322);
+emit_16(1258);
+emit_16(1322);
+emit_16(1257);
+emit_16(1322);
+emit_16(1258);
+emit_16(1323);
+emit_16(1259);
+emit_16(1323);
+emit_16(1258);
+emit_16(1323);
+emit_16(1259);
+emit_16(1324);
+emit_16(1260);
+emit_16(1324);
+emit_16(1259);
+emit_16(1324);
+emit_16(1260);
+emit_16(1325);
+emit_16(1261);
+emit_16(1325);
+emit_16(1260);
+emit_16(1325);
+emit_16(1261);
+emit_16(1326);
+emit_16(1262);
+emit_16(1326);
+emit_16(1261);
+emit_16(1326);
+emit_16(1262);
+emit_16(1327);
+emit_16(1263);
+emit_16(1327);
+emit_16(1262);
+emit_16(1327);
+emit_16(1263);
+emit_16(1328);
+emit_16(1264);
+emit_16(1328);
+emit_16(1263);
+emit_16(1328);
+emit_16(1264);
+emit_16(1329);
+emit_16(1265);
+emit_16(1329);
+emit_16(1264);
+emit_16(1329);
+emit_16(1265);
+emit_16(1330);
+emit_16(1266);
+emit_16(1330);
+emit_16(1265);
+emit_16(1330);
+emit_16(1266);
+emit_16(1331);
+emit_16(1267);
+emit_16(1331);
+emit_16(1266);
+emit_16(1331);
+emit_16(1267);
+emit_16(1332);
+emit_16(1268);
+emit_16(1332);
+emit_16(1267);
+emit_16(1332);
+emit_16(1268);
+emit_16(1333);
+emit_16(1269);
+emit_16(1333);
+emit_16(1268);
+emit_16(1333);
+emit_16(1269);
+emit_16(1334);
+emit_16(1270);
+emit_16(1334);
+emit_16(1269);
+emit_16(1334);
+emit_16(1270);
+emit_16(1335);
+emit_16(1271);
+emit_16(1335);
+emit_16(1270);
+emit_16(1335);
+emit_16(1271);
+emit_16(1336);
+emit_16(1272);
+emit_16(1336);
+emit_16(1271);
+emit_16(1336);
+emit_16(1272);
+emit_16(1337);
+emit_16(1273);
+emit_16(1337);
+emit_16(1272);
+emit_16(1337);
+emit_16(1273);
+emit_16(1338);
+emit_16(1274);
+emit_16(1338);
+emit_16(1273);
+emit_16(1338);
+emit_16(1274);
+emit_16(1339);
+emit_16(1275);
+emit_16(1339);
+emit_16(1274);
+emit_16(1339);
+emit_16(1275);
+emit_16(1340);
+emit_16(1276);
+emit_16(1340);
+emit_16(1275);
+emit_16(1340);
+emit_16(1276);
+emit_16(1341);
+emit_16(1277);
+emit_16(1341);
+emit_16(1276);
+emit_16(1341);
+emit_16(1277);
+emit_16(1342);
+emit_16(1278);
+emit_16(1342);
+emit_16(1277);
+emit_16(1342);
+emit_16(1278);
+emit_16(1343);
+emit_16(1279);
+emit_16(1343);
+emit_16(1278);
+emit_16(1344);
+emit_16(1280);
+emit_16(1345);
+emit_16(1281);
+emit_16(1345);
+emit_16(1280);
+emit_16(1345);
+emit_16(1281);
+emit_16(1346);
+emit_16(1282);
+emit_16(1346);
+emit_16(1281);
+emit_16(1346);
+emit_16(1282);
+emit_16(1347);
+emit_16(1283);
+emit_16(1347);
+emit_16(1282);
+emit_16(1347);
+emit_16(1283);
+emit_16(1348);
+emit_16(1284);
+emit_16(1348);
+emit_16(1283);
+emit_16(1348);
+emit_16(1284);
+emit_16(1349);
+emit_16(1285);
+emit_16(1349);
+emit_16(1284);
+emit_16(1349);
+emit_16(1285);
+emit_16(1350);
+emit_16(1286);
+emit_16(1350);
+emit_16(1285);
+emit_16(1350);
+emit_16(1286);
+emit_16(1351);
+emit_16(1287);
+emit_16(1351);
+emit_16(1286);
+emit_16(1351);
+emit_16(1287);
+emit_16(1352);
+emit_16(1288);
+emit_16(1352);
+emit_16(1287);
+emit_16(1352);
+emit_16(1288);
+emit_16(1353);
+emit_16(1289);
+emit_16(1353);
+emit_16(1288);
+emit_16(1353);
+emit_16(1289);
+emit_16(1354);
+emit_16(1290);
+emit_16(1354);
+emit_16(1289);
+emit_16(1354);
+emit_16(1290);
+emit_16(1355);
+emit_16(1291);
+emit_16(1355);
+emit_16(1290);
+emit_16(1355);
+emit_16(1291);
+emit_16(1356);
+emit_16(1292);
+emit_16(1356);
+emit_16(1291);
+emit_16(1356);
+emit_16(1292);
+emit_16(1357);
+emit_16(1293);
+emit_16(1357);
+emit_16(1292);
+emit_16(1357);
+emit_16(1293);
+emit_16(1358);
+emit_16(1294);
+emit_16(1358);
+emit_16(1293);
+emit_16(1358);
+emit_16(1294);
+emit_16(1359);
+emit_16(1295);
+emit_16(1359);
+emit_16(1294);
+emit_16(1359);
+emit_16(1295);
+emit_16(1360);
+emit_16(1296);
+emit_16(1360);
+emit_16(1295);
+emit_16(1360);
+emit_16(1296);
+emit_16(1361);
+emit_16(1297);
+emit_16(1361);
+emit_16(1296);
+emit_16(1361);
+emit_16(1297);
+emit_16(1362);
+emit_16(1298);
+emit_16(1362);
+emit_16(1297);
+emit_16(1362);
+emit_16(1298);
+emit_16(1363);
+emit_16(1299);
+emit_16(1363);
+emit_16(1298);
+emit_16(1363);
+emit_16(1299);
+emit_16(1364);
+emit_16(1300);
+emit_16(1364);
+emit_16(1299);
+emit_16(1364);
+emit_16(1300);
+emit_16(1365);
+emit_16(1301);
+emit_16(1365);
+emit_16(1300);
+emit_16(1365);
+emit_16(1301);
+emit_16(1366);
+emit_16(1302);
+emit_16(1366);
+emit_16(1301);
+emit_16(1366);
+emit_16(1302);
+emit_16(1367);
+emit_16(1303);
+emit_16(1367);
+emit_16(1302);
+emit_16(1367);
+emit_16(1303);
+emit_16(1368);
+emit_16(1304);
+emit_16(1368);
+emit_16(1303);
+emit_16(1368);
+emit_16(1304);
+emit_16(1369);
+emit_16(1305);
+emit_16(1369);
+emit_16(1304);
+emit_16(1369);
+emit_16(1305);
+emit_16(1370);
+emit_16(1306);
+emit_16(1370);
+emit_16(1305);
+emit_16(1370);
+emit_16(1306);
+emit_16(1371);
+emit_16(1307);
+emit_16(1371);
+emit_16(1306);
+emit_16(1371);
+emit_16(1307);
+emit_16(1372);
+emit_16(1308);
+emit_16(1372);
+emit_16(1307);
+emit_16(1372);
+emit_16(1308);
+emit_16(1373);
+emit_16(1309);
+emit_16(1373);
+emit_16(1308);
+emit_16(1373);
+emit_16(1309);
+emit_16(1374);
+emit_16(1310);
+emit_16(1374);
+emit_16(1309);
+emit_16(1374);
+emit_16(1310);
+emit_16(1375);
+emit_16(1311);
+emit_16(1375);
+emit_16(1310);
+emit_16(1375);
+emit_16(1311);
+emit_16(1376);
+emit_16(1312);
+emit_16(1376);
+emit_16(1311);
+emit_16(1376);
+emit_16(1312);
+emit_16(1377);
+emit_16(1313);
+emit_16(1377);
+emit_16(1312);
+emit_16(1377);
+emit_16(1313);
+emit_16(1378);
+emit_16(1314);
+emit_16(1378);
+emit_16(1313);
+emit_16(1378);
+emit_16(1314);
+emit_16(1379);
+emit_16(1315);
+emit_16(1379);
+emit_16(1314);
+emit_16(1379);
+emit_16(1315);
+emit_16(1380);
+emit_16(1316);
+emit_16(1380);
+emit_16(1315);
+emit_16(1380);
+emit_16(1316);
+emit_16(1381);
+emit_16(1317);
+emit_16(1381);
+emit_16(1316);
+emit_16(1381);
+emit_16(1317);
+emit_16(1382);
+emit_16(1318);
+emit_16(1382);
+emit_16(1317);
+emit_16(1382);
+emit_16(1318);
+emit_16(1383);
+emit_16(1319);
+emit_16(1383);
+emit_16(1318);
+emit_16(1383);
+emit_16(1319);
+emit_16(1384);
+emit_16(1320);
+emit_16(1384);
+emit_16(1319);
+emit_16(1384);
+emit_16(1320);
+emit_16(1385);
+emit_16(1321);
+emit_16(1385);
+emit_16(1320);
+emit_16(1385);
+emit_16(1321);
+emit_16(1386);
+emit_16(1322);
+emit_16(1386);
+emit_16(1321);
+emit_16(1386);
+emit_16(1322);
+emit_16(1387);
+emit_16(1323);
+emit_16(1387);
+emit_16(1322);
+emit_16(1387);
+emit_16(1323);
+emit_16(1388);
+emit_16(1324);
+emit_16(1388);
+emit_16(1323);
+emit_16(1388);
+emit_16(1324);
+emit_16(1389);
+emit_16(1325);
+emit_16(1389);
+emit_16(1324);
+emit_16(1389);
+emit_16(1325);
+emit_16(1390);
+emit_16(1326);
+emit_16(1390);
+emit_16(1325);
+emit_16(1390);
+emit_16(1326);
+emit_16(1391);
+emit_16(1327);
+emit_16(1391);
+emit_16(1326);
+emit_16(1391);
+emit_16(1327);
+emit_16(1392);
+emit_16(1328);
+emit_16(1392);
+emit_16(1327);
+emit_16(1392);
+emit_16(1328);
+emit_16(1393);
+emit_16(1329);
+emit_16(1393);
+emit_16(1328);
+emit_16(1393);
+emit_16(1329);
+emit_16(1394);
+emit_16(1330);
+emit_16(1394);
+emit_16(1329);
+emit_16(1394);
+emit_16(1330);
+emit_16(1395);
+emit_16(1331);
+emit_16(1395);
+emit_16(1330);
+emit_16(1395);
+emit_16(1331);
+emit_16(1396);
+emit_16(1332);
+emit_16(1396);
+emit_16(1331);
+emit_16(1396);
+emit_16(1332);
+emit_16(1397);
+emit_16(1333);
+emit_16(1397);
+emit_16(1332);
+emit_16(1397);
+emit_16(1333);
+emit_16(1398);
+emit_16(1334);
+emit_16(1398);
+emit_16(1333);
+emit_16(1398);
+emit_16(1334);
+emit_16(1399);
+emit_16(1335);
+emit_16(1399);
+emit_16(1334);
+emit_16(1399);
+emit_16(1335);
+emit_16(1400);
+emit_16(1336);
+emit_16(1400);
+emit_16(1335);
+emit_16(1400);
+emit_16(1336);
+emit_16(1401);
+emit_16(1337);
+emit_16(1401);
+emit_16(1336);
+emit_16(1401);
+emit_16(1337);
+emit_16(1402);
+emit_16(1338);
+emit_16(1402);
+emit_16(1337);
+emit_16(1402);
+emit_16(1338);
+emit_16(1403);
+emit_16(1339);
+emit_16(1403);
+emit_16(1338);
+emit_16(1403);
+emit_16(1339);
+emit_16(1404);
+emit_16(1340);
+emit_16(1404);
+emit_16(1339);
+emit_16(1404);
+emit_16(1340);
+emit_16(1405);
+emit_16(1341);
+emit_16(1405);
+emit_16(1340);
+emit_16(1405);
+emit_16(1341);
+emit_16(1406);
+emit_16(1342);
+emit_16(1406);
+emit_16(1341);
+emit_16(1406);
+emit_16(1342);
+emit_16(1407);
+emit_16(1343);
+emit_16(1407);
+emit_16(1342);
+emit_16(1408);
+emit_16(1344);
+emit_16(1409);
+emit_16(1345);
+emit_16(1409);
+emit_16(1344);
+emit_16(1409);
+emit_16(1345);
+emit_16(1410);
+emit_16(1346);
+emit_16(1410);
+emit_16(1345);
+emit_16(1410);
+emit_16(1346);
+emit_16(1411);
+emit_16(1347);
+emit_16(1411);
+emit_16(1346);
+emit_16(1411);
+emit_16(1347);
+emit_16(1412);
+emit_16(1348);
+emit_16(1412);
+emit_16(1347);
+emit_16(1412);
+emit_16(1348);
+emit_16(1413);
+emit_16(1349);
+emit_16(1413);
+emit_16(1348);
+emit_16(1413);
+emit_16(1349);
+emit_16(1414);
+emit_16(1350);
+emit_16(1414);
+emit_16(1349);
+emit_16(1414);
+emit_16(1350);
+emit_16(1415);
+emit_16(1351);
+emit_16(1415);
+emit_16(1350);
+emit_16(1415);
+emit_16(1351);
+emit_16(1416);
+emit_16(1352);
+emit_16(1416);
+emit_16(1351);
+emit_16(1416);
+emit_16(1352);
+emit_16(1417);
+emit_16(1353);
+emit_16(1417);
+emit_16(1352);
+emit_16(1417);
+emit_16(1353);
+emit_16(1418);
+emit_16(1354);
+emit_16(1418);
+emit_16(1353);
+emit_16(1418);
+emit_16(1354);
+emit_16(1419);
+emit_16(1355);
+emit_16(1419);
+emit_16(1354);
+emit_16(1419);
+emit_16(1355);
+emit_16(1420);
+emit_16(1356);
+emit_16(1420);
+emit_16(1355);
+emit_16(1420);
+emit_16(1356);
+emit_16(1421);
+emit_16(1357);
+emit_16(1421);
+emit_16(1356);
+emit_16(1421);
+emit_16(1357);
+emit_16(1422);
+emit_16(1358);
+emit_16(1422);
+emit_16(1357);
+emit_16(1422);
+emit_16(1358);
+emit_16(1423);
+emit_16(1359);
+emit_16(1423);
+emit_16(1358);
+emit_16(1423);
+emit_16(1359);
+emit_16(1424);
+emit_16(1360);
+emit_16(1424);
+emit_16(1359);
+emit_16(1424);
+emit_16(1360);
+emit_16(1425);
+emit_16(1361);
+emit_16(1425);
+emit_16(1360);
+emit_16(1425);
+emit_16(1361);
+emit_16(1426);
+emit_16(1362);
+emit_16(1426);
+emit_16(1361);
+emit_16(1426);
+emit_16(1362);
+emit_16(1427);
+emit_16(1363);
+emit_16(1427);
+emit_16(1362);
+emit_16(1427);
+emit_16(1363);
+emit_16(1428);
+emit_16(1364);
+emit_16(1428);
+emit_16(1363);
+emit_16(1428);
+emit_16(1364);
+emit_16(1429);
+emit_16(1365);
+emit_16(1429);
+emit_16(1364);
+emit_16(1429);
+emit_16(1365);
+emit_16(1430);
+emit_16(1366);
+emit_16(1430);
+emit_16(1365);
+emit_16(1430);
+emit_16(1366);
+emit_16(1431);
+emit_16(1367);
+emit_16(1431);
+emit_16(1366);
+emit_16(1431);
+emit_16(1367);
+emit_16(1432);
+emit_16(1368);
+emit_16(1432);
+emit_16(1367);
+emit_16(1432);
+emit_16(1368);
+emit_16(1433);
+emit_16(1369);
+emit_16(1433);
+emit_16(1368);
+emit_16(1433);
+emit_16(1369);
+emit_16(1434);
+emit_16(1370);
+emit_16(1434);
+emit_16(1369);
+emit_16(1434);
+emit_16(1370);
+emit_16(1435);
+emit_16(1371);
+emit_16(1435);
+emit_16(1370);
+emit_16(1435);
+emit_16(1371);
+emit_16(1436);
+emit_16(1372);
+emit_16(1436);
+emit_16(1371);
+emit_16(1436);
+emit_16(1372);
+emit_16(1437);
+emit_16(1373);
+emit_16(1437);
+emit_16(1372);
+emit_16(1437);
+emit_16(1373);
+emit_16(1438);
+emit_16(1374);
+emit_16(1438);
+emit_16(1373);
+emit_16(1438);
+emit_16(1374);
+emit_16(1439);
+emit_16(1375);
+emit_16(1439);
+emit_16(1374);
+emit_16(1439);
+emit_16(1375);
+emit_16(1440);
+emit_16(1376);
+emit_16(1440);
+emit_16(1375);
+emit_16(1440);
+emit_16(1376);
+emit_16(1441);
+emit_16(1377);
+emit_16(1441);
+emit_16(1376);
+emit_16(1441);
+emit_16(1377);
+emit_16(1442);
+emit_16(1378);
+emit_16(1442);
+emit_16(1377);
+emit_16(1442);
+emit_16(1378);
+emit_16(1443);
+emit_16(1379);
+emit_16(1443);
+emit_16(1378);
+emit_16(1443);
+emit_16(1379);
+emit_16(1444);
+emit_16(1380);
+emit_16(1444);
+emit_16(1379);
+emit_16(1444);
+emit_16(1380);
+emit_16(1445);
+emit_16(1381);
+emit_16(1445);
+emit_16(1380);
+emit_16(1445);
+emit_16(1381);
+emit_16(1446);
+emit_16(1382);
+emit_16(1446);
+emit_16(1381);
+emit_16(1446);
+emit_16(1382);
+emit_16(1447);
+emit_16(1383);
+emit_16(1447);
+emit_16(1382);
+emit_16(1447);
+emit_16(1383);
+emit_16(1448);
+emit_16(1384);
+emit_16(1448);
+emit_16(1383);
+emit_16(1448);
+emit_16(1384);
+emit_16(1449);
+emit_16(1385);
+emit_16(1449);
+emit_16(1384);
+emit_16(1449);
+emit_16(1385);
+emit_16(1450);
+emit_16(1386);
+emit_16(1450);
+emit_16(1385);
+emit_16(1450);
+emit_16(1386);
+emit_16(1451);
+emit_16(1387);
+emit_16(1451);
+emit_16(1386);
+emit_16(1451);
+emit_16(1387);
+emit_16(1452);
+emit_16(1388);
+emit_16(1452);
+emit_16(1387);
+emit_16(1452);
+emit_16(1388);
+emit_16(1453);
+emit_16(1389);
+emit_16(1453);
+emit_16(1388);
+emit_16(1453);
+emit_16(1389);
+emit_16(1454);
+emit_16(1390);
+emit_16(1454);
+emit_16(1389);
+emit_16(1454);
+emit_16(1390);
+emit_16(1455);
+emit_16(1391);
+emit_16(1455);
+emit_16(1390);
+emit_16(1455);
+emit_16(1391);
+emit_16(1456);
+emit_16(1392);
+emit_16(1456);
+emit_16(1391);
+emit_16(1456);
+emit_16(1392);
+emit_16(1457);
+emit_16(1393);
+emit_16(1457);
+emit_16(1392);
+emit_16(1457);
+emit_16(1393);
+emit_16(1458);
+emit_16(1394);
+emit_16(1458);
+emit_16(1393);
+emit_16(1458);
+emit_16(1394);
+emit_16(1459);
+emit_16(1395);
+emit_16(1459);
+emit_16(1394);
+emit_16(1459);
+emit_16(1395);
+emit_16(1460);
+emit_16(1396);
+emit_16(1460);
+emit_16(1395);
+emit_16(1460);
+emit_16(1396);
+emit_16(1461);
+emit_16(1397);
+emit_16(1461);
+emit_16(1396);
+emit_16(1461);
+emit_16(1397);
+emit_16(1462);
+emit_16(1398);
+emit_16(1462);
+emit_16(1397);
+emit_16(1462);
+emit_16(1398);
+emit_16(1463);
+emit_16(1399);
+emit_16(1463);
+emit_16(1398);
+emit_16(1463);
+emit_16(1399);
+emit_16(1464);
+emit_16(1400);
+emit_16(1464);
+emit_16(1399);
+emit_16(1464);
+emit_16(1400);
+emit_16(1465);
+emit_16(1401);
+emit_16(1465);
+emit_16(1400);
+emit_16(1465);
+emit_16(1401);
+emit_16(1466);
+emit_16(1402);
+emit_16(1466);
+emit_16(1401);
+emit_16(1466);
+emit_16(1402);
+emit_16(1467);
+emit_16(1403);
+emit_16(1467);
+emit_16(1402);
+emit_16(1467);
+emit_16(1403);
+emit_16(1468);
+emit_16(1404);
+emit_16(1468);
+emit_16(1403);
+emit_16(1468);
+emit_16(1404);
+emit_16(1469);
+emit_16(1405);
+emit_16(1469);
+emit_16(1404);
+emit_16(1469);
+emit_16(1405);
+emit_16(1470);
+emit_16(1406);
+emit_16(1470);
+emit_16(1405);
+emit_16(1470);
+emit_16(1406);
+emit_16(1471);
+emit_16(1407);
+emit_16(1471);
+emit_16(1406);
+emit_16(1472);
+emit_16(1408);
+emit_16(1473);
+emit_16(1409);
+emit_16(1473);
+emit_16(1408);
+emit_16(1473);
+emit_16(1409);
+emit_16(1474);
+emit_16(1410);
+emit_16(1474);
+emit_16(1409);
+emit_16(1474);
+emit_16(1410);
+emit_16(1475);
+emit_16(1411);
+emit_16(1475);
+emit_16(1410);
+emit_16(1475);
+emit_16(1411);
+emit_16(1476);
+emit_16(1412);
+emit_16(1476);
+emit_16(1411);
+emit_16(1476);
+emit_16(1412);
+emit_16(1477);
+emit_16(1413);
+emit_16(1477);
+emit_16(1412);
+emit_16(1477);
+emit_16(1413);
+emit_16(1478);
+emit_16(1414);
+emit_16(1478);
+emit_16(1413);
+emit_16(1478);
+emit_16(1414);
+emit_16(1479);
+emit_16(1415);
+emit_16(1479);
+emit_16(1414);
+emit_16(1479);
+emit_16(1415);
+emit_16(1480);
+emit_16(1416);
+emit_16(1480);
+emit_16(1415);
+emit_16(1480);
+emit_16(1416);
+emit_16(1481);
+emit_16(1417);
+emit_16(1481);
+emit_16(1416);
+emit_16(1481);
+emit_16(1417);
+emit_16(1482);
+emit_16(1418);
+emit_16(1482);
+emit_16(1417);
+emit_16(1482);
+emit_16(1418);
+emit_16(1483);
+emit_16(1419);
+emit_16(1483);
+emit_16(1418);
+emit_16(1483);
+emit_16(1419);
+emit_16(1484);
+emit_16(1420);
+emit_16(1484);
+emit_16(1419);
+emit_16(1484);
+emit_16(1420);
+emit_16(1485);
+emit_16(1421);
+emit_16(1485);
+emit_16(1420);
+emit_16(1485);
+emit_16(1421);
+emit_16(1486);
+emit_16(1422);
+emit_16(1486);
+emit_16(1421);
+emit_16(1486);
+emit_16(1422);
+emit_16(1487);
+emit_16(1423);
+emit_16(1487);
+emit_16(1422);
+emit_16(1487);
+emit_16(1423);
+emit_16(1488);
+emit_16(1424);
+emit_16(1488);
+emit_16(1423);
+emit_16(1488);
+emit_16(1424);
+emit_16(1489);
+emit_16(1425);
+emit_16(1489);
+emit_16(1424);
+emit_16(1489);
+emit_16(1425);
+emit_16(1490);
+emit_16(1426);
+emit_16(1490);
+emit_16(1425);
+emit_16(1490);
+emit_16(1426);
+emit_16(1491);
+emit_16(1427);
+emit_16(1491);
+emit_16(1426);
+emit_16(1491);
+emit_16(1427);
+emit_16(1492);
+emit_16(1428);
+emit_16(1492);
+emit_16(1427);
+emit_16(1492);
+emit_16(1428);
+emit_16(1493);
+emit_16(1429);
+emit_16(1493);
+emit_16(1428);
+emit_16(1493);
+emit_16(1429);
+emit_16(1494);
+emit_16(1430);
+emit_16(1494);
+emit_16(1429);
+emit_16(1494);
+emit_16(1430);
+emit_16(1495);
+emit_16(1431);
+emit_16(1495);
+emit_16(1430);
+emit_16(1495);
+emit_16(1431);
+emit_16(1496);
+emit_16(1432);
+emit_16(1496);
+emit_16(1431);
+emit_16(1496);
+emit_16(1432);
+emit_16(1497);
+emit_16(1433);
+emit_16(1497);
+emit_16(1432);
+emit_16(1497);
+emit_16(1433);
+emit_16(1498);
+emit_16(1434);
+emit_16(1498);
+emit_16(1433);
+emit_16(1498);
+emit_16(1434);
+emit_16(1499);
+emit_16(1435);
+emit_16(1499);
+emit_16(1434);
+emit_16(1499);
+emit_16(1435);
+emit_16(1500);
+emit_16(1436);
+emit_16(1500);
+emit_16(1435);
+emit_16(1500);
+emit_16(1436);
+emit_16(1501);
+emit_16(1437);
+emit_16(1501);
+emit_16(1436);
+emit_16(1501);
+emit_16(1437);
+emit_16(1502);
+emit_16(1438);
+emit_16(1502);
+emit_16(1437);
+emit_16(1502);
+emit_16(1438);
+emit_16(1503);
+emit_16(1439);
+emit_16(1503);
+emit_16(1438);
+emit_16(1503);
+emit_16(1439);
+emit_16(1504);
+emit_16(1440);
+emit_16(1504);
+emit_16(1439);
+emit_16(1504);
+emit_16(1440);
+emit_16(1505);
+emit_16(1441);
+emit_16(1505);
+emit_16(1440);
+emit_16(1505);
+emit_16(1441);
+emit_16(1506);
+emit_16(1442);
+emit_16(1506);
+emit_16(1441);
+emit_16(1506);
+emit_16(1442);
+emit_16(1507);
+emit_16(1443);
+emit_16(1507);
+emit_16(1442);
+emit_16(1507);
+emit_16(1443);
+emit_16(1508);
+emit_16(1444);
+emit_16(1508);
+emit_16(1443);
+emit_16(1508);
+emit_16(1444);
+emit_16(1509);
+emit_16(1445);
+emit_16(1509);
+emit_16(1444);
+emit_16(1509);
+emit_16(1445);
+emit_16(1510);
+emit_16(1446);
+emit_16(1510);
+emit_16(1445);
+emit_16(1510);
+emit_16(1446);
+emit_16(1511);
+emit_16(1447);
+emit_16(1511);
+emit_16(1446);
+emit_16(1511);
+emit_16(1447);
+emit_16(1512);
+emit_16(1448);
+emit_16(1512);
+emit_16(1447);
+emit_16(1512);
+emit_16(1448);
+emit_16(1513);
+emit_16(1449);
+emit_16(1513);
+emit_16(1448);
+emit_16(1513);
+emit_16(1449);
+emit_16(1514);
+emit_16(1450);
+emit_16(1514);
+emit_16(1449);
+emit_16(1514);
+emit_16(1450);
+emit_16(1515);
+emit_16(1451);
+emit_16(1515);
+emit_16(1450);
+emit_16(1515);
+emit_16(1451);
+emit_16(1516);
+emit_16(1452);
+emit_16(1516);
+emit_16(1451);
+emit_16(1516);
+emit_16(1452);
+emit_16(1517);
+emit_16(1453);
+emit_16(1517);
+emit_16(1452);
+emit_16(1517);
+emit_16(1453);
+emit_16(1518);
+emit_16(1454);
+emit_16(1518);
+emit_16(1453);
+emit_16(1518);
+emit_16(1454);
+emit_16(1519);
+emit_16(1455);
+emit_16(1519);
+emit_16(1454);
+emit_16(1519);
+emit_16(1455);
+emit_16(1520);
+emit_16(1456);
+emit_16(1520);
+emit_16(1455);
+emit_16(1520);
+emit_16(1456);
+emit_16(1521);
+emit_16(1457);
+emit_16(1521);
+emit_16(1456);
+emit_16(1521);
+emit_16(1457);
+emit_16(1522);
+emit_16(1458);
+emit_16(1522);
+emit_16(1457);
+emit_16(1522);
+emit_16(1458);
+emit_16(1523);
+emit_16(1459);
+emit_16(1523);
+emit_16(1458);
+emit_16(1523);
+emit_16(1459);
+emit_16(1524);
+emit_16(1460);
+emit_16(1524);
+emit_16(1459);
+emit_16(1524);
+emit_16(1460);
+emit_16(1525);
+emit_16(1461);
+emit_16(1525);
+emit_16(1460);
+emit_16(1525);
+emit_16(1461);
+emit_16(1526);
+emit_16(1462);
+emit_16(1526);
+emit_16(1461);
+emit_16(1526);
+emit_16(1462);
+emit_16(1527);
+emit_16(1463);
+emit_16(1527);
+emit_16(1462);
+emit_16(1527);
+emit_16(1463);
+emit_16(1528);
+emit_16(1464);
+emit_16(1528);
+emit_16(1463);
+emit_16(1528);
+emit_16(1464);
+emit_16(1529);
+emit_16(1465);
+emit_16(1529);
+emit_16(1464);
+emit_16(1529);
+emit_16(1465);
+emit_16(1530);
+emit_16(1466);
+emit_16(1530);
+emit_16(1465);
+emit_16(1530);
+emit_16(1466);
+emit_16(1531);
+emit_16(1467);
+emit_16(1531);
+emit_16(1466);
+emit_16(1531);
+emit_16(1467);
+emit_16(1532);
+emit_16(1468);
+emit_16(1532);
+emit_16(1467);
+emit_16(1532);
+emit_16(1468);
+emit_16(1533);
+emit_16(1469);
+emit_16(1533);
+emit_16(1468);
+emit_16(1533);
+emit_16(1469);
+emit_16(1534);
+emit_16(1470);
+emit_16(1534);
+emit_16(1469);
+emit_16(1534);
+emit_16(1470);
+emit_16(1535);
+emit_16(1471);
+emit_16(1535);
+emit_16(1470);
+emit_16(1536);
+emit_16(1472);
+emit_16(1537);
+emit_16(1473);
+emit_16(1537);
+emit_16(1472);
+emit_16(1537);
+emit_16(1473);
+emit_16(1538);
+emit_16(1474);
+emit_16(1538);
+emit_16(1473);
+emit_16(1538);
+emit_16(1474);
+emit_16(1539);
+emit_16(1475);
+emit_16(1539);
+emit_16(1474);
+emit_16(1539);
+emit_16(1475);
+emit_16(1540);
+emit_16(1476);
+emit_16(1540);
+emit_16(1475);
+emit_16(1540);
+emit_16(1476);
+emit_16(1541);
+emit_16(1477);
+emit_16(1541);
+emit_16(1476);
+emit_16(1541);
+emit_16(1477);
+emit_16(1542);
+emit_16(1478);
+emit_16(1542);
+emit_16(1477);
+emit_16(1542);
+emit_16(1478);
+emit_16(1543);
+emit_16(1479);
+emit_16(1543);
+emit_16(1478);
+emit_16(1543);
+emit_16(1479);
+emit_16(1544);
+emit_16(1480);
+emit_16(1544);
+emit_16(1479);
+emit_16(1544);
+emit_16(1480);
+emit_16(1545);
+emit_16(1481);
+emit_16(1545);
+emit_16(1480);
+emit_16(1545);
+emit_16(1481);
+emit_16(1546);
+emit_16(1482);
+emit_16(1546);
+emit_16(1481);
+emit_16(1546);
+emit_16(1482);
+emit_16(1547);
+emit_16(1483);
+emit_16(1547);
+emit_16(1482);
+emit_16(1547);
+emit_16(1483);
+emit_16(1548);
+emit_16(1484);
+emit_16(1548);
+emit_16(1483);
+emit_16(1548);
+emit_16(1484);
+emit_16(1549);
+emit_16(1485);
+emit_16(1549);
+emit_16(1484);
+emit_16(1549);
+emit_16(1485);
+emit_16(1550);
+emit_16(1486);
+emit_16(1550);
+emit_16(1485);
+emit_16(1550);
+emit_16(1486);
+emit_16(1551);
+emit_16(1487);
+emit_16(1551);
+emit_16(1486);
+emit_16(1551);
+emit_16(1487);
+emit_16(1552);
+emit_16(1488);
+emit_16(1552);
+emit_16(1487);
+emit_16(1552);
+emit_16(1488);
+emit_16(1553);
+emit_16(1489);
+emit_16(1553);
+emit_16(1488);
+emit_16(1553);
+emit_16(1489);
+emit_16(1554);
+emit_16(1490);
+emit_16(1554);
+emit_16(1489);
+emit_16(1554);
+emit_16(1490);
+emit_16(1555);
+emit_16(1491);
+emit_16(1555);
+emit_16(1490);
+emit_16(1555);
+emit_16(1491);
+emit_16(1556);
+emit_16(1492);
+emit_16(1556);
+emit_16(1491);
+emit_16(1556);
+emit_16(1492);
+emit_16(1557);
+emit_16(1493);
+emit_16(1557);
+emit_16(1492);
+emit_16(1557);
+emit_16(1493);
+emit_16(1558);
+emit_16(1494);
+emit_16(1558);
+emit_16(1493);
+emit_16(1558);
+emit_16(1494);
+emit_16(1559);
+emit_16(1495);
+emit_16(1559);
+emit_16(1494);
+emit_16(1559);
+emit_16(1495);
+emit_16(1560);
+emit_16(1496);
+emit_16(1560);
+emit_16(1495);
+emit_16(1560);
+emit_16(1496);
+emit_16(1561);
+emit_16(1497);
+emit_16(1561);
+emit_16(1496);
+emit_16(1561);
+emit_16(1497);
+emit_16(1562);
+emit_16(1498);
+emit_16(1562);
+emit_16(1497);
+emit_16(1562);
+emit_16(1498);
+emit_16(1563);
+emit_16(1499);
+emit_16(1563);
+emit_16(1498);
+emit_16(1563);
+emit_16(1499);
+emit_16(1564);
+emit_16(1500);
+emit_16(1564);
+emit_16(1499);
+emit_16(1564);
+emit_16(1500);
+emit_16(1565);
+emit_16(1501);
+emit_16(1565);
+emit_16(1500);
+emit_16(1565);
+emit_16(1501);
+emit_16(1566);
+emit_16(1502);
+emit_16(1566);
+emit_16(1501);
+emit_16(1566);
+emit_16(1502);
+emit_16(1567);
+emit_16(1503);
+emit_16(1567);
+emit_16(1502);
+emit_16(1567);
+emit_16(1503);
+emit_16(1568);
+emit_16(1504);
+emit_16(1568);
+emit_16(1503);
+emit_16(1568);
+emit_16(1504);
+emit_16(1569);
+emit_16(1505);
+emit_16(1569);
+emit_16(1504);
+emit_16(1569);
+emit_16(1505);
+emit_16(1570);
+emit_16(1506);
+emit_16(1570);
+emit_16(1505);
+emit_16(1570);
+emit_16(1506);
+emit_16(1571);
+emit_16(1507);
+emit_16(1571);
+emit_16(1506);
+emit_16(1571);
+emit_16(1507);
+emit_16(1572);
+emit_16(1508);
+emit_16(1572);
+emit_16(1507);
+emit_16(1572);
+emit_16(1508);
+emit_16(1573);
+emit_16(1509);
+emit_16(1573);
+emit_16(1508);
+emit_16(1573);
+emit_16(1509);
+emit_16(1574);
+emit_16(1510);
+emit_16(1574);
+emit_16(1509);
+emit_16(1574);
+emit_16(1510);
+emit_16(1575);
+emit_16(1511);
+emit_16(1575);
+emit_16(1510);
+emit_16(1575);
+emit_16(1511);
+emit_16(1576);
+emit_16(1512);
+emit_16(1576);
+emit_16(1511);
+emit_16(1576);
+emit_16(1512);
+emit_16(1577);
+emit_16(1513);
+emit_16(1577);
+emit_16(1512);
+emit_16(1577);
+emit_16(1513);
+emit_16(1578);
+emit_16(1514);
+emit_16(1578);
+emit_16(1513);
+emit_16(1578);
+emit_16(1514);
+emit_16(1579);
+emit_16(1515);
+emit_16(1579);
+emit_16(1514);
+emit_16(1579);
+emit_16(1515);
+emit_16(1580);
+emit_16(1516);
+emit_16(1580);
+emit_16(1515);
+emit_16(1580);
+emit_16(1516);
+emit_16(1581);
+emit_16(1517);
+emit_16(1581);
+emit_16(1516);
+emit_16(1581);
+emit_16(1517);
+emit_16(1582);
+emit_16(1518);
+emit_16(1582);
+emit_16(1517);
+emit_16(1582);
+emit_16(1518);
+emit_16(1583);
+emit_16(1519);
+emit_16(1583);
+emit_16(1518);
+emit_16(1583);
+emit_16(1519);
+emit_16(1584);
+emit_16(1520);
+emit_16(1584);
+emit_16(1519);
+emit_16(1584);
+emit_16(1520);
+emit_16(1585);
+emit_16(1521);
+emit_16(1585);
+emit_16(1520);
+emit_16(1585);
+emit_16(1521);
+emit_16(1586);
+emit_16(1522);
+emit_16(1586);
+emit_16(1521);
+emit_16(1586);
+emit_16(1522);
+emit_16(1587);
+emit_16(1523);
+emit_16(1587);
+emit_16(1522);
+emit_16(1587);
+emit_16(1523);
+emit_16(1588);
+emit_16(1524);
+emit_16(1588);
+emit_16(1523);
+emit_16(1588);
+emit_16(1524);
+emit_16(1589);
+emit_16(1525);
+emit_16(1589);
+emit_16(1524);
+emit_16(1589);
+emit_16(1525);
+emit_16(1590);
+emit_16(1526);
+emit_16(1590);
+emit_16(1525);
+emit_16(1590);
+emit_16(1526);
+emit_16(1591);
+emit_16(1527);
+emit_16(1591);
+emit_16(1526);
+emit_16(1591);
+emit_16(1527);
+emit_16(1592);
+emit_16(1528);
+emit_16(1592);
+emit_16(1527);
+emit_16(1592);
+emit_16(1528);
+emit_16(1593);
+emit_16(1529);
+emit_16(1593);
+emit_16(1528);
+emit_16(1593);
+emit_16(1529);
+emit_16(1594);
+emit_16(1530);
+emit_16(1594);
+emit_16(1529);
+emit_16(1594);
+emit_16(1530);
+emit_16(1595);
+emit_16(1531);
+emit_16(1595);
+emit_16(1530);
+emit_16(1595);
+emit_16(1531);
+emit_16(1596);
+emit_16(1532);
+emit_16(1596);
+emit_16(1531);
+emit_16(1596);
+emit_16(1532);
+emit_16(1597);
+emit_16(1533);
+emit_16(1597);
+emit_16(1532);
+emit_16(1597);
+emit_16(1533);
+emit_16(1598);
+emit_16(1534);
+emit_16(1598);
+emit_16(1533);
+emit_16(1598);
+emit_16(1534);
+emit_16(1599);
+emit_16(1535);
+emit_16(1599);
+emit_16(1534);
+emit_16(1600);
+emit_16(1536);
+emit_16(1601);
+emit_16(1537);
+emit_16(1601);
+emit_16(1536);
+emit_16(1601);
+emit_16(1537);
+emit_16(1602);
+emit_16(1538);
+emit_16(1602);
+emit_16(1537);
+emit_16(1602);
+emit_16(1538);
+emit_16(1603);
+emit_16(1539);
+emit_16(1603);
+emit_16(1538);
+emit_16(1603);
+emit_16(1539);
+emit_16(1604);
+emit_16(1540);
+emit_16(1604);
+emit_16(1539);
+emit_16(1604);
+emit_16(1540);
+emit_16(1605);
+emit_16(1541);
+emit_16(1605);
+emit_16(1540);
+emit_16(1605);
+emit_16(1541);
+emit_16(1606);
+emit_16(1542);
+emit_16(1606);
+emit_16(1541);
+emit_16(1606);
+emit_16(1542);
+emit_16(1607);
+emit_16(1543);
+emit_16(1607);
+emit_16(1542);
+emit_16(1607);
+emit_16(1543);
+emit_16(1608);
+emit_16(1544);
+emit_16(1608);
+emit_16(1543);
+emit_16(1608);
+emit_16(1544);
+emit_16(1609);
+emit_16(1545);
+emit_16(1609);
+emit_16(1544);
+emit_16(1609);
+emit_16(1545);
+emit_16(1610);
+emit_16(1546);
+emit_16(1610);
+emit_16(1545);
+emit_16(1610);
+emit_16(1546);
+emit_16(1611);
+emit_16(1547);
+emit_16(1611);
+emit_16(1546);
+emit_16(1611);
+emit_16(1547);
+emit_16(1612);
+emit_16(1548);
+emit_16(1612);
+emit_16(1547);
+emit_16(1612);
+emit_16(1548);
+emit_16(1613);
+emit_16(1549);
+emit_16(1613);
+emit_16(1548);
+emit_16(1613);
+emit_16(1549);
+emit_16(1614);
+emit_16(1550);
+emit_16(1614);
+emit_16(1549);
+emit_16(1614);
+emit_16(1550);
+emit_16(1615);
+emit_16(1551);
+emit_16(1615);
+emit_16(1550);
+emit_16(1615);
+emit_16(1551);
+emit_16(1616);
+emit_16(1552);
+emit_16(1616);
+emit_16(1551);
+emit_16(1616);
+emit_16(1552);
+emit_16(1617);
+emit_16(1553);
+emit_16(1617);
+emit_16(1552);
+emit_16(1617);
+emit_16(1553);
+emit_16(1618);
+emit_16(1554);
+emit_16(1618);
+emit_16(1553);
+emit_16(1618);
+emit_16(1554);
+emit_16(1619);
+emit_16(1555);
+emit_16(1619);
+emit_16(1554);
+emit_16(1619);
+emit_16(1555);
+emit_16(1620);
+emit_16(1556);
+emit_16(1620);
+emit_16(1555);
+emit_16(1620);
+emit_16(1556);
+emit_16(1621);
+emit_16(1557);
+emit_16(1621);
+emit_16(1556);
+emit_16(1621);
+emit_16(1557);
+emit_16(1622);
+emit_16(1558);
+emit_16(1622);
+emit_16(1557);
+emit_16(1622);
+emit_16(1558);
+emit_16(1623);
+emit_16(1559);
+emit_16(1623);
+emit_16(1558);
+emit_16(1623);
+emit_16(1559);
+emit_16(1624);
+emit_16(1560);
+emit_16(1624);
+emit_16(1559);
+emit_16(1624);
+emit_16(1560);
+emit_16(1625);
+emit_16(1561);
+emit_16(1625);
+emit_16(1560);
+emit_16(1625);
+emit_16(1561);
+emit_16(1626);
+emit_16(1562);
+emit_16(1626);
+emit_16(1561);
+emit_16(1626);
+emit_16(1562);
+emit_16(1627);
+emit_16(1563);
+emit_16(1627);
+emit_16(1562);
+emit_16(1627);
+emit_16(1563);
+emit_16(1628);
+emit_16(1564);
+emit_16(1628);
+emit_16(1563);
+emit_16(1628);
+emit_16(1564);
+emit_16(1629);
+emit_16(1565);
+emit_16(1629);
+emit_16(1564);
+emit_16(1629);
+emit_16(1565);
+emit_16(1630);
+emit_16(1566);
+emit_16(1630);
+emit_16(1565);
+emit_16(1630);
+emit_16(1566);
+emit_16(1631);
+emit_16(1567);
+emit_16(1631);
+emit_16(1566);
+emit_16(1631);
+emit_16(1567);
+emit_16(1632);
+emit_16(1568);
+emit_16(1632);
+emit_16(1567);
+emit_16(1632);
+emit_16(1568);
+emit_16(1633);
+emit_16(1569);
+emit_16(1633);
+emit_16(1568);
+emit_16(1633);
+emit_16(1569);
+emit_16(1634);
+emit_16(1570);
+emit_16(1634);
+emit_16(1569);
+emit_16(1634);
+emit_16(1570);
+emit_16(1635);
+emit_16(1571);
+emit_16(1635);
+emit_16(1570);
+emit_16(1635);
+emit_16(1571);
+emit_16(1636);
+emit_16(1572);
+emit_16(1636);
+emit_16(1571);
+emit_16(1636);
+emit_16(1572);
+emit_16(1637);
+emit_16(1573);
+emit_16(1637);
+emit_16(1572);
+emit_16(1637);
+emit_16(1573);
+emit_16(1638);
+emit_16(1574);
+emit_16(1638);
+emit_16(1573);
+emit_16(1638);
+emit_16(1574);
+emit_16(1639);
+emit_16(1575);
+emit_16(1639);
+emit_16(1574);
+emit_16(1639);
+emit_16(1575);
+emit_16(1640);
+emit_16(1576);
+emit_16(1640);
+emit_16(1575);
+emit_16(1640);
+emit_16(1576);
+emit_16(1641);
+emit_16(1577);
+emit_16(1641);
+emit_16(1576);
+emit_16(1641);
+emit_16(1577);
+emit_16(1642);
+emit_16(1578);
+emit_16(1642);
+emit_16(1577);
+emit_16(1642);
+emit_16(1578);
+emit_16(1643);
+emit_16(1579);
+emit_16(1643);
+emit_16(1578);
+emit_16(1643);
+emit_16(1579);
+emit_16(1644);
+emit_16(1580);
+emit_16(1644);
+emit_16(1579);
+emit_16(1644);
+emit_16(1580);
+emit_16(1645);
+emit_16(1581);
+emit_16(1645);
+emit_16(1580);
+emit_16(1645);
+emit_16(1581);
+emit_16(1646);
+emit_16(1582);
+emit_16(1646);
+emit_16(1581);
+emit_16(1646);
+emit_16(1582);
+emit_16(1647);
+emit_16(1583);
+emit_16(1647);
+emit_16(1582);
+emit_16(1647);
+emit_16(1583);
+emit_16(1648);
+emit_16(1584);
+emit_16(1648);
+emit_16(1583);
+emit_16(1648);
+emit_16(1584);
+emit_16(1649);
+emit_16(1585);
+emit_16(1649);
+emit_16(1584);
+emit_16(1649);
+emit_16(1585);
+emit_16(1650);
+emit_16(1586);
+emit_16(1650);
+emit_16(1585);
+emit_16(1650);
+emit_16(1586);
+emit_16(1651);
+emit_16(1587);
+emit_16(1651);
+emit_16(1586);
+emit_16(1651);
+emit_16(1587);
+emit_16(1652);
+emit_16(1588);
+emit_16(1652);
+emit_16(1587);
+emit_16(1652);
+emit_16(1588);
+emit_16(1653);
+emit_16(1589);
+emit_16(1653);
+emit_16(1588);
+emit_16(1653);
+emit_16(1589);
+emit_16(1654);
+emit_16(1590);
+emit_16(1654);
+emit_16(1589);
+emit_16(1654);
+emit_16(1590);
+emit_16(1655);
+emit_16(1591);
+emit_16(1655);
+emit_16(1590);
+emit_16(1655);
+emit_16(1591);
+emit_16(1656);
+emit_16(1592);
+emit_16(1656);
+emit_16(1591);
+emit_16(1656);
+emit_16(1592);
+emit_16(1657);
+emit_16(1593);
+emit_16(1657);
+emit_16(1592);
+emit_16(1657);
+emit_16(1593);
+emit_16(1658);
+emit_16(1594);
+emit_16(1658);
+emit_16(1593);
+emit_16(1658);
+emit_16(1594);
+emit_16(1659);
+emit_16(1595);
+emit_16(1659);
+emit_16(1594);
+emit_16(1659);
+emit_16(1595);
+emit_16(1660);
+emit_16(1596);
+emit_16(1660);
+emit_16(1595);
+emit_16(1660);
+emit_16(1596);
+emit_16(1661);
+emit_16(1597);
+emit_16(1661);
+emit_16(1596);
+emit_16(1661);
+emit_16(1597);
+emit_16(1662);
+emit_16(1598);
+emit_16(1662);
+emit_16(1597);
+emit_16(1662);
+emit_16(1598);
+emit_16(1663);
+emit_16(1599);
+emit_16(1663);
+emit_16(1598);
+emit_16(1664);
+emit_16(1600);
+emit_16(1665);
+emit_16(1601);
+emit_16(1665);
+emit_16(1600);
+emit_16(1665);
+emit_16(1601);
+emit_16(1666);
+emit_16(1602);
+emit_16(1666);
+emit_16(1601);
+emit_16(1666);
+emit_16(1602);
+emit_16(1667);
+emit_16(1603);
+emit_16(1667);
+emit_16(1602);
+emit_16(1667);
+emit_16(1603);
+emit_16(1668);
+emit_16(1604);
+emit_16(1668);
+emit_16(1603);
+emit_16(1668);
+emit_16(1604);
+emit_16(1669);
+emit_16(1605);
+emit_16(1669);
+emit_16(1604);
+emit_16(1669);
+emit_16(1605);
+emit_16(1670);
+emit_16(1606);
+emit_16(1670);
+emit_16(1605);
+emit_16(1670);
+emit_16(1606);
+emit_16(1671);
+emit_16(1607);
+emit_16(1671);
+emit_16(1606);
+emit_16(1671);
+emit_16(1607);
+emit_16(1672);
+emit_16(1608);
+emit_16(1672);
+emit_16(1607);
+emit_16(1672);
+emit_16(1608);
+emit_16(1673);
+emit_16(1609);
+emit_16(1673);
+emit_16(1608);
+emit_16(1673);
+emit_16(1609);
+emit_16(1674);
+emit_16(1610);
+emit_16(1674);
+emit_16(1609);
+emit_16(1674);
+emit_16(1610);
+emit_16(1675);
+emit_16(1611);
+emit_16(1675);
+emit_16(1610);
+emit_16(1675);
+emit_16(1611);
+emit_16(1676);
+emit_16(1612);
+emit_16(1676);
+emit_16(1611);
+emit_16(1676);
+emit_16(1612);
+emit_16(1677);
+emit_16(1613);
+emit_16(1677);
+emit_16(1612);
+emit_16(1677);
+emit_16(1613);
+emit_16(1678);
+emit_16(1614);
+emit_16(1678);
+emit_16(1613);
+emit_16(1678);
+emit_16(1614);
+emit_16(1679);
+emit_16(1615);
+emit_16(1679);
+emit_16(1614);
+emit_16(1679);
+emit_16(1615);
+emit_16(1680);
+emit_16(1616);
+emit_16(1680);
+emit_16(1615);
+emit_16(1680);
+emit_16(1616);
+emit_16(1681);
+emit_16(1617);
+emit_16(1681);
+emit_16(1616);
+emit_16(1681);
+emit_16(1617);
+emit_16(1682);
+emit_16(1618);
+emit_16(1682);
+emit_16(1617);
+emit_16(1682);
+emit_16(1618);
+emit_16(1683);
+emit_16(1619);
+emit_16(1683);
+emit_16(1618);
+emit_16(1683);
+emit_16(1619);
+emit_16(1684);
+emit_16(1620);
+emit_16(1684);
+emit_16(1619);
+emit_16(1684);
+emit_16(1620);
+emit_16(1685);
+emit_16(1621);
+emit_16(1685);
+emit_16(1620);
+emit_16(1685);
+emit_16(1621);
+emit_16(1686);
+emit_16(1622);
+emit_16(1686);
+emit_16(1621);
+emit_16(1686);
+emit_16(1622);
+emit_16(1687);
+emit_16(1623);
+emit_16(1687);
+emit_16(1622);
+emit_16(1687);
+emit_16(1623);
+emit_16(1688);
+emit_16(1624);
+emit_16(1688);
+emit_16(1623);
+emit_16(1688);
+emit_16(1624);
+emit_16(1689);
+emit_16(1625);
+emit_16(1689);
+emit_16(1624);
+emit_16(1689);
+emit_16(1625);
+emit_16(1690);
+emit_16(1626);
+emit_16(1690);
+emit_16(1625);
+emit_16(1690);
+emit_16(1626);
+emit_16(1691);
+emit_16(1627);
+emit_16(1691);
+emit_16(1626);
+emit_16(1691);
+emit_16(1627);
+emit_16(1692);
+emit_16(1628);
+emit_16(1692);
+emit_16(1627);
+emit_16(1692);
+emit_16(1628);
+emit_16(1693);
+emit_16(1629);
+emit_16(1693);
+emit_16(1628);
+emit_16(1693);
+emit_16(1629);
+emit_16(1694);
+emit_16(1630);
+emit_16(1694);
+emit_16(1629);
+emit_16(1694);
+emit_16(1630);
+emit_16(1695);
+emit_16(1631);
+emit_16(1695);
+emit_16(1630);
+emit_16(1695);
+emit_16(1631);
+emit_16(1696);
+emit_16(1632);
+emit_16(1696);
+emit_16(1631);
+emit_16(1696);
+emit_16(1632);
+emit_16(1697);
+emit_16(1633);
+emit_16(1697);
+emit_16(1632);
+emit_16(1697);
+emit_16(1633);
+emit_16(1698);
+emit_16(1634);
+emit_16(1698);
+emit_16(1633);
+emit_16(1698);
+emit_16(1634);
+emit_16(1699);
+emit_16(1635);
+emit_16(1699);
+emit_16(1634);
+emit_16(1699);
+emit_16(1635);
+emit_16(1700);
+emit_16(1636);
+emit_16(1700);
+emit_16(1635);
+emit_16(1700);
+emit_16(1636);
+emit_16(1701);
+emit_16(1637);
+emit_16(1701);
+emit_16(1636);
+emit_16(1701);
+emit_16(1637);
+emit_16(1702);
+emit_16(1638);
+emit_16(1702);
+emit_16(1637);
+emit_16(1702);
+emit_16(1638);
+emit_16(1703);
+emit_16(1639);
+emit_16(1703);
+emit_16(1638);
+emit_16(1703);
+emit_16(1639);
+emit_16(1704);
+emit_16(1640);
+emit_16(1704);
+emit_16(1639);
+emit_16(1704);
+emit_16(1640);
+emit_16(1705);
+emit_16(1641);
+emit_16(1705);
+emit_16(1640);
+emit_16(1705);
+emit_16(1641);
+emit_16(1706);
+emit_16(1642);
+emit_16(1706);
+emit_16(1641);
+emit_16(1706);
+emit_16(1642);
+emit_16(1707);
+emit_16(1643);
+emit_16(1707);
+emit_16(1642);
+emit_16(1707);
+emit_16(1643);
+emit_16(1708);
+emit_16(1644);
+emit_16(1708);
+emit_16(1643);
+emit_16(1708);
+emit_16(1644);
+emit_16(1709);
+emit_16(1645);
+emit_16(1709);
+emit_16(1644);
+emit_16(1709);
+emit_16(1645);
+emit_16(1710);
+emit_16(1646);
+emit_16(1710);
+emit_16(1645);
+emit_16(1710);
+emit_16(1646);
+emit_16(1711);
+emit_16(1647);
+emit_16(1711);
+emit_16(1646);
+emit_16(1711);
+emit_16(1647);
+emit_16(1712);
+emit_16(1648);
+emit_16(1712);
+emit_16(1647);
+emit_16(1712);
+emit_16(1648);
+emit_16(1713);
+emit_16(1649);
+emit_16(1713);
+emit_16(1648);
+emit_16(1713);
+emit_16(1649);
+emit_16(1714);
+emit_16(1650);
+emit_16(1714);
+emit_16(1649);
+emit_16(1714);
+emit_16(1650);
+emit_16(1715);
+emit_16(1651);
+emit_16(1715);
+emit_16(1650);
+emit_16(1715);
+emit_16(1651);
+emit_16(1716);
+emit_16(1652);
+emit_16(1716);
+emit_16(1651);
+emit_16(1716);
+emit_16(1652);
+emit_16(1717);
+emit_16(1653);
+emit_16(1717);
+emit_16(1652);
+emit_16(1717);
+emit_16(1653);
+emit_16(1718);
+emit_16(1654);
+emit_16(1718);
+emit_16(1653);
+emit_16(1718);
+emit_16(1654);
+emit_16(1719);
+emit_16(1655);
+emit_16(1719);
+emit_16(1654);
+emit_16(1719);
+emit_16(1655);
+emit_16(1720);
+emit_16(1656);
+emit_16(1720);
+emit_16(1655);
+emit_16(1720);
+emit_16(1656);
+emit_16(1721);
+emit_16(1657);
+emit_16(1721);
+emit_16(1656);
+emit_16(1721);
+emit_16(1657);
+emit_16(1722);
+emit_16(1658);
+emit_16(1722);
+emit_16(1657);
+emit_16(1722);
+emit_16(1658);
+emit_16(1723);
+emit_16(1659);
+emit_16(1723);
+emit_16(1658);
+emit_16(1723);
+emit_16(1659);
+emit_16(1724);
+emit_16(1660);
+emit_16(1724);
+emit_16(1659);
+emit_16(1724);
+emit_16(1660);
+emit_16(1725);
+emit_16(1661);
+emit_16(1725);
+emit_16(1660);
+emit_16(1725);
+emit_16(1661);
+emit_16(1726);
+emit_16(1662);
+emit_16(1726);
+emit_16(1661);
+emit_16(1726);
+emit_16(1662);
+emit_16(1727);
+emit_16(1663);
+emit_16(1727);
+emit_16(1662);
+emit_16(1728);
+emit_16(1664);
+emit_16(1729);
+emit_16(1665);
+emit_16(1729);
+emit_16(1664);
+emit_16(1729);
+emit_16(1665);
+emit_16(1730);
+emit_16(1666);
+emit_16(1730);
+emit_16(1665);
+emit_16(1730);
+emit_16(1666);
+emit_16(1731);
+emit_16(1667);
+emit_16(1731);
+emit_16(1666);
+emit_16(1731);
+emit_16(1667);
+emit_16(1732);
+emit_16(1668);
+emit_16(1732);
+emit_16(1667);
+emit_16(1732);
+emit_16(1668);
+emit_16(1733);
+emit_16(1669);
+emit_16(1733);
+emit_16(1668);
+emit_16(1733);
+emit_16(1669);
+emit_16(1734);
+emit_16(1670);
+emit_16(1734);
+emit_16(1669);
+emit_16(1734);
+emit_16(1670);
+emit_16(1735);
+emit_16(1671);
+emit_16(1735);
+emit_16(1670);
+emit_16(1735);
+emit_16(1671);
+emit_16(1736);
+emit_16(1672);
+emit_16(1736);
+emit_16(1671);
+emit_16(1736);
+emit_16(1672);
+emit_16(1737);
+emit_16(1673);
+emit_16(1737);
+emit_16(1672);
+emit_16(1737);
+emit_16(1673);
+emit_16(1738);
+emit_16(1674);
+emit_16(1738);
+emit_16(1673);
+emit_16(1738);
+emit_16(1674);
+emit_16(1739);
+emit_16(1675);
+emit_16(1739);
+emit_16(1674);
+emit_16(1739);
+emit_16(1675);
+emit_16(1740);
+emit_16(1676);
+emit_16(1740);
+emit_16(1675);
+emit_16(1740);
+emit_16(1676);
+emit_16(1741);
+emit_16(1677);
+emit_16(1741);
+emit_16(1676);
+emit_16(1741);
+emit_16(1677);
+emit_16(1742);
+emit_16(1678);
+emit_16(1742);
+emit_16(1677);
+emit_16(1742);
+emit_16(1678);
+emit_16(1743);
+emit_16(1679);
+emit_16(1743);
+emit_16(1678);
+emit_16(1743);
+emit_16(1679);
+emit_16(1744);
+emit_16(1680);
+emit_16(1744);
+emit_16(1679);
+emit_16(1744);
+emit_16(1680);
+emit_16(1745);
+emit_16(1681);
+emit_16(1745);
+emit_16(1680);
+emit_16(1745);
+emit_16(1681);
+emit_16(1746);
+emit_16(1682);
+emit_16(1746);
+emit_16(1681);
+emit_16(1746);
+emit_16(1682);
+emit_16(1747);
+emit_16(1683);
+emit_16(1747);
+emit_16(1682);
+emit_16(1747);
+emit_16(1683);
+emit_16(1748);
+emit_16(1684);
+emit_16(1748);
+emit_16(1683);
+emit_16(1748);
+emit_16(1684);
+emit_16(1749);
+emit_16(1685);
+emit_16(1749);
+emit_16(1684);
+emit_16(1749);
+emit_16(1685);
+emit_16(1750);
+emit_16(1686);
+emit_16(1750);
+emit_16(1685);
+emit_16(1750);
+emit_16(1686);
+emit_16(1751);
+emit_16(1687);
+emit_16(1751);
+emit_16(1686);
+emit_16(1751);
+emit_16(1687);
+emit_16(1752);
+emit_16(1688);
+emit_16(1752);
+emit_16(1687);
+emit_16(1752);
+emit_16(1688);
+emit_16(1753);
+emit_16(1689);
+emit_16(1753);
+emit_16(1688);
+emit_16(1753);
+emit_16(1689);
+emit_16(1754);
+emit_16(1690);
+emit_16(1754);
+emit_16(1689);
+emit_16(1754);
+emit_16(1690);
+emit_16(1755);
+emit_16(1691);
+emit_16(1755);
+emit_16(1690);
+emit_16(1755);
+emit_16(1691);
+emit_16(1756);
+emit_16(1692);
+emit_16(1756);
+emit_16(1691);
+emit_16(1756);
+emit_16(1692);
+emit_16(1757);
+emit_16(1693);
+emit_16(1757);
+emit_16(1692);
+emit_16(1757);
+emit_16(1693);
+emit_16(1758);
+emit_16(1694);
+emit_16(1758);
+emit_16(1693);
+emit_16(1758);
+emit_16(1694);
+emit_16(1759);
+emit_16(1695);
+emit_16(1759);
+emit_16(1694);
+emit_16(1759);
+emit_16(1695);
+emit_16(1760);
+emit_16(1696);
+emit_16(1760);
+emit_16(1695);
+emit_16(1760);
+emit_16(1696);
+emit_16(1761);
+emit_16(1697);
+emit_16(1761);
+emit_16(1696);
+emit_16(1761);
+emit_16(1697);
+emit_16(1762);
+emit_16(1698);
+emit_16(1762);
+emit_16(1697);
+emit_16(1762);
+emit_16(1698);
+emit_16(1763);
+emit_16(1699);
+emit_16(1763);
+emit_16(1698);
+emit_16(1763);
+emit_16(1699);
+emit_16(1764);
+emit_16(1700);
+emit_16(1764);
+emit_16(1699);
+emit_16(1764);
+emit_16(1700);
+emit_16(1765);
+emit_16(1701);
+emit_16(1765);
+emit_16(1700);
+emit_16(1765);
+emit_16(1701);
+emit_16(1766);
+emit_16(1702);
+emit_16(1766);
+emit_16(1701);
+emit_16(1766);
+emit_16(1702);
+emit_16(1767);
+emit_16(1703);
+emit_16(1767);
+emit_16(1702);
+emit_16(1767);
+emit_16(1703);
+emit_16(1768);
+emit_16(1704);
+emit_16(1768);
+emit_16(1703);
+emit_16(1768);
+emit_16(1704);
+emit_16(1769);
+emit_16(1705);
+emit_16(1769);
+emit_16(1704);
+emit_16(1769);
+emit_16(1705);
+emit_16(1770);
+emit_16(1706);
+emit_16(1770);
+emit_16(1705);
+emit_16(1770);
+emit_16(1706);
+emit_16(1771);
+emit_16(1707);
+emit_16(1771);
+emit_16(1706);
+emit_16(1771);
+emit_16(1707);
+emit_16(1772);
+emit_16(1708);
+emit_16(1772);
+emit_16(1707);
+emit_16(1772);
+emit_16(1708);
+emit_16(1773);
+emit_16(1709);
+emit_16(1773);
+emit_16(1708);
+emit_16(1773);
+emit_16(1709);
+emit_16(1774);
+emit_16(1710);
+emit_16(1774);
+emit_16(1709);
+emit_16(1774);
+emit_16(1710);
+emit_16(1775);
+emit_16(1711);
+emit_16(1775);
+emit_16(1710);
+emit_16(1775);
+emit_16(1711);
+emit_16(1776);
+emit_16(1712);
+emit_16(1776);
+emit_16(1711);
+emit_16(1776);
+emit_16(1712);
+emit_16(1777);
+emit_16(1713);
+emit_16(1777);
+emit_16(1712);
+emit_16(1777);
+emit_16(1713);
+emit_16(1778);
+emit_16(1714);
+emit_16(1778);
+emit_16(1713);
+emit_16(1778);
+emit_16(1714);
+emit_16(1779);
+emit_16(1715);
+emit_16(1779);
+emit_16(1714);
+emit_16(1779);
+emit_16(1715);
+emit_16(1780);
+emit_16(1716);
+emit_16(1780);
+emit_16(1715);
+emit_16(1780);
+emit_16(1716);
+emit_16(1781);
+emit_16(1717);
+emit_16(1781);
+emit_16(1716);
+emit_16(1781);
+emit_16(1717);
+emit_16(1782);
+emit_16(1718);
+emit_16(1782);
+emit_16(1717);
+emit_16(1782);
+emit_16(1718);
+emit_16(1783);
+emit_16(1719);
+emit_16(1783);
+emit_16(1718);
+emit_16(1783);
+emit_16(1719);
+emit_16(1784);
+emit_16(1720);
+emit_16(1784);
+emit_16(1719);
+emit_16(1784);
+emit_16(1720);
+emit_16(1785);
+emit_16(1721);
+emit_16(1785);
+emit_16(1720);
+emit_16(1785);
+emit_16(1721);
+emit_16(1786);
+emit_16(1722);
+emit_16(1786);
+emit_16(1721);
+emit_16(1786);
+emit_16(1722);
+emit_16(1787);
+emit_16(1723);
+emit_16(1787);
+emit_16(1722);
+emit_16(1787);
+emit_16(1723);
+emit_16(1788);
+emit_16(1724);
+emit_16(1788);
+emit_16(1723);
+emit_16(1788);
+emit_16(1724);
+emit_16(1789);
+emit_16(1725);
+emit_16(1789);
+emit_16(1724);
+emit_16(1789);
+emit_16(1725);
+emit_16(1790);
+emit_16(1726);
+emit_16(1790);
+emit_16(1725);
+emit_16(1790);
+emit_16(1726);
+emit_16(1791);
+emit_16(1727);
+emit_16(1791);
+emit_16(1726);
+emit_16(1792);
+emit_16(1728);
+emit_16(1793);
+emit_16(1729);
+emit_16(1793);
+emit_16(1728);
+emit_16(1793);
+emit_16(1729);
+emit_16(1794);
+emit_16(1730);
+emit_16(1794);
+emit_16(1729);
+emit_16(1794);
+emit_16(1730);
+emit_16(1795);
+emit_16(1731);
+emit_16(1795);
+emit_16(1730);
+emit_16(1795);
+emit_16(1731);
+emit_16(1796);
+emit_16(1732);
+emit_16(1796);
+emit_16(1731);
+emit_16(1796);
+emit_16(1732);
+emit_16(1797);
+emit_16(1733);
+emit_16(1797);
+emit_16(1732);
+emit_16(1797);
+emit_16(1733);
+emit_16(1798);
+emit_16(1734);
+emit_16(1798);
+emit_16(1733);
+emit_16(1798);
+emit_16(1734);
+emit_16(1799);
+emit_16(1735);
+emit_16(1799);
+emit_16(1734);
+emit_16(1799);
+emit_16(1735);
+emit_16(1800);
+emit_16(1736);
+emit_16(1800);
+emit_16(1735);
+emit_16(1800);
+emit_16(1736);
+emit_16(1801);
+emit_16(1737);
+emit_16(1801);
+emit_16(1736);
+emit_16(1801);
+emit_16(1737);
+emit_16(1802);
+emit_16(1738);
+emit_16(1802);
+emit_16(1737);
+emit_16(1802);
+emit_16(1738);
+emit_16(1803);
+emit_16(1739);
+emit_16(1803);
+emit_16(1738);
+emit_16(1803);
+emit_16(1739);
+emit_16(1804);
+emit_16(1740);
+emit_16(1804);
+emit_16(1739);
+emit_16(1804);
+emit_16(1740);
+emit_16(1805);
+emit_16(1741);
+emit_16(1805);
+emit_16(1740);
+emit_16(1805);
+emit_16(1741);
+emit_16(1806);
+emit_16(1742);
+emit_16(1806);
+emit_16(1741);
+emit_16(1806);
+emit_16(1742);
+emit_16(1807);
+emit_16(1743);
+emit_16(1807);
+emit_16(1742);
+emit_16(1807);
+emit_16(1743);
+emit_16(1808);
+emit_16(1744);
+emit_16(1808);
+emit_16(1743);
+emit_16(1808);
+emit_16(1744);
+emit_16(1809);
+emit_16(1745);
+emit_16(1809);
+emit_16(1744);
+emit_16(1809);
+emit_16(1745);
+emit_16(1810);
+emit_16(1746);
+emit_16(1810);
+emit_16(1745);
+emit_16(1810);
+emit_16(1746);
+emit_16(1811);
+emit_16(1747);
+emit_16(1811);
+emit_16(1746);
+emit_16(1811);
+emit_16(1747);
+emit_16(1812);
+emit_16(1748);
+emit_16(1812);
+emit_16(1747);
+emit_16(1812);
+emit_16(1748);
+emit_16(1813);
+emit_16(1749);
+emit_16(1813);
+emit_16(1748);
+emit_16(1813);
+emit_16(1749);
+emit_16(1814);
+emit_16(1750);
+emit_16(1814);
+emit_16(1749);
+emit_16(1814);
+emit_16(1750);
+emit_16(1815);
+emit_16(1751);
+emit_16(1815);
+emit_16(1750);
+emit_16(1815);
+emit_16(1751);
+emit_16(1816);
+emit_16(1752);
+emit_16(1816);
+emit_16(1751);
+emit_16(1816);
+emit_16(1752);
+emit_16(1817);
+emit_16(1753);
+emit_16(1817);
+emit_16(1752);
+emit_16(1817);
+emit_16(1753);
+emit_16(1818);
+emit_16(1754);
+emit_16(1818);
+emit_16(1753);
+emit_16(1818);
+emit_16(1754);
+emit_16(1819);
+emit_16(1755);
+emit_16(1819);
+emit_16(1754);
+emit_16(1819);
+emit_16(1755);
+emit_16(1820);
+emit_16(1756);
+emit_16(1820);
+emit_16(1755);
+emit_16(1820);
+emit_16(1756);
+emit_16(1821);
+emit_16(1757);
+emit_16(1821);
+emit_16(1756);
+emit_16(1821);
+emit_16(1757);
+emit_16(1822);
+emit_16(1758);
+emit_16(1822);
+emit_16(1757);
+emit_16(1822);
+emit_16(1758);
+emit_16(1823);
+emit_16(1759);
+emit_16(1823);
+emit_16(1758);
+emit_16(1823);
+emit_16(1759);
+emit_16(1824);
+emit_16(1760);
+emit_16(1824);
+emit_16(1759);
+emit_16(1824);
+emit_16(1760);
+emit_16(1825);
+emit_16(1761);
+emit_16(1825);
+emit_16(1760);
+emit_16(1825);
+emit_16(1761);
+emit_16(1826);
+emit_16(1762);
+emit_16(1826);
+emit_16(1761);
+emit_16(1826);
+emit_16(1762);
+emit_16(1827);
+emit_16(1763);
+emit_16(1827);
+emit_16(1762);
+emit_16(1827);
+emit_16(1763);
+emit_16(1828);
+emit_16(1764);
+emit_16(1828);
+emit_16(1763);
+emit_16(1828);
+emit_16(1764);
+emit_16(1829);
+emit_16(1765);
+emit_16(1829);
+emit_16(1764);
+emit_16(1829);
+emit_16(1765);
+emit_16(1830);
+emit_16(1766);
+emit_16(1830);
+emit_16(1765);
+emit_16(1830);
+emit_16(1766);
+emit_16(1831);
+emit_16(1767);
+emit_16(1831);
+emit_16(1766);
+emit_16(1831);
+emit_16(1767);
+emit_16(1832);
+emit_16(1768);
+emit_16(1832);
+emit_16(1767);
+emit_16(1832);
+emit_16(1768);
+emit_16(1833);
+emit_16(1769);
+emit_16(1833);
+emit_16(1768);
+emit_16(1833);
+emit_16(1769);
+emit_16(1834);
+emit_16(1770);
+emit_16(1834);
+emit_16(1769);
+emit_16(1834);
+emit_16(1770);
+emit_16(1835);
+emit_16(1771);
+emit_16(1835);
+emit_16(1770);
+emit_16(1835);
+emit_16(1771);
+emit_16(1836);
+emit_16(1772);
+emit_16(1836);
+emit_16(1771);
+emit_16(1836);
+emit_16(1772);
+emit_16(1837);
+emit_16(1773);
+emit_16(1837);
+emit_16(1772);
+emit_16(1837);
+emit_16(1773);
+emit_16(1838);
+emit_16(1774);
+emit_16(1838);
+emit_16(1773);
+emit_16(1838);
+emit_16(1774);
+emit_16(1839);
+emit_16(1775);
+emit_16(1839);
+emit_16(1774);
+emit_16(1839);
+emit_16(1775);
+emit_16(1840);
+emit_16(1776);
+emit_16(1840);
+emit_16(1775);
+emit_16(1840);
+emit_16(1776);
+emit_16(1841);
+emit_16(1777);
+emit_16(1841);
+emit_16(1776);
+emit_16(1841);
+emit_16(1777);
+emit_16(1842);
+emit_16(1778);
+emit_16(1842);
+emit_16(1777);
+emit_16(1842);
+emit_16(1778);
+emit_16(1843);
+emit_16(1779);
+emit_16(1843);
+emit_16(1778);
+emit_16(1843);
+emit_16(1779);
+emit_16(1844);
+emit_16(1780);
+emit_16(1844);
+emit_16(1779);
+emit_16(1844);
+emit_16(1780);
+emit_16(1845);
+emit_16(1781);
+emit_16(1845);
+emit_16(1780);
+emit_16(1845);
+emit_16(1781);
+emit_16(1846);
+emit_16(1782);
+emit_16(1846);
+emit_16(1781);
+emit_16(1846);
+emit_16(1782);
+emit_16(1847);
+emit_16(1783);
+emit_16(1847);
+emit_16(1782);
+emit_16(1847);
+emit_16(1783);
+emit_16(1848);
+emit_16(1784);
+emit_16(1848);
+emit_16(1783);
+emit_16(1848);
+emit_16(1784);
+emit_16(1849);
+emit_16(1785);
+emit_16(1849);
+emit_16(1784);
+emit_16(1849);
+emit_16(1785);
+emit_16(1850);
+emit_16(1786);
+emit_16(1850);
+emit_16(1785);
+emit_16(1850);
+emit_16(1786);
+emit_16(1851);
+emit_16(1787);
+emit_16(1851);
+emit_16(1786);
+emit_16(1851);
+emit_16(1787);
+emit_16(1852);
+emit_16(1788);
+emit_16(1852);
+emit_16(1787);
+emit_16(1852);
+emit_16(1788);
+emit_16(1853);
+emit_16(1789);
+emit_16(1853);
+emit_16(1788);
+emit_16(1853);
+emit_16(1789);
+emit_16(1854);
+emit_16(1790);
+emit_16(1854);
+emit_16(1789);
+emit_16(1854);
+emit_16(1790);
+emit_16(1855);
+emit_16(1791);
+emit_16(1855);
+emit_16(1790);
+emit_16(1856);
+emit_16(1792);
+emit_16(1857);
+emit_16(1793);
+emit_16(1857);
+emit_16(1792);
+emit_16(1857);
+emit_16(1793);
+emit_16(1858);
+emit_16(1794);
+emit_16(1858);
+emit_16(1793);
+emit_16(1858);
+emit_16(1794);
+emit_16(1859);
+emit_16(1795);
+emit_16(1859);
+emit_16(1794);
+emit_16(1859);
+emit_16(1795);
+emit_16(1860);
+emit_16(1796);
+emit_16(1860);
+emit_16(1795);
+emit_16(1860);
+emit_16(1796);
+emit_16(1861);
+emit_16(1797);
+emit_16(1861);
+emit_16(1796);
+emit_16(1861);
+emit_16(1797);
+emit_16(1862);
+emit_16(1798);
+emit_16(1862);
+emit_16(1797);
+emit_16(1862);
+emit_16(1798);
+emit_16(1863);
+emit_16(1799);
+emit_16(1863);
+emit_16(1798);
+emit_16(1863);
+emit_16(1799);
+emit_16(1864);
+emit_16(1800);
+emit_16(1864);
+emit_16(1799);
+emit_16(1864);
+emit_16(1800);
+emit_16(1865);
+emit_16(1801);
+emit_16(1865);
+emit_16(1800);
+emit_16(1865);
+emit_16(1801);
+emit_16(1866);
+emit_16(1802);
+emit_16(1866);
+emit_16(1801);
+emit_16(1866);
+emit_16(1802);
+emit_16(1867);
+emit_16(1803);
+emit_16(1867);
+emit_16(1802);
+emit_16(1867);
+emit_16(1803);
+emit_16(1868);
+emit_16(1804);
+emit_16(1868);
+emit_16(1803);
+emit_16(1868);
+emit_16(1804);
+emit_16(1869);
+emit_16(1805);
+emit_16(1869);
+emit_16(1804);
+emit_16(1869);
+emit_16(1805);
+emit_16(1870);
+emit_16(1806);
+emit_16(1870);
+emit_16(1805);
+emit_16(1870);
+emit_16(1806);
+emit_16(1871);
+emit_16(1807);
+emit_16(1871);
+emit_16(1806);
+emit_16(1871);
+emit_16(1807);
+emit_16(1872);
+emit_16(1808);
+emit_16(1872);
+emit_16(1807);
+emit_16(1872);
+emit_16(1808);
+emit_16(1873);
+emit_16(1809);
+emit_16(1873);
+emit_16(1808);
+emit_16(1873);
+emit_16(1809);
+emit_16(1874);
+emit_16(1810);
+emit_16(1874);
+emit_16(1809);
+emit_16(1874);
+emit_16(1810);
+emit_16(1875);
+emit_16(1811);
+emit_16(1875);
+emit_16(1810);
+emit_16(1875);
+emit_16(1811);
+emit_16(1876);
+emit_16(1812);
+emit_16(1876);
+emit_16(1811);
+emit_16(1876);
+emit_16(1812);
+emit_16(1877);
+emit_16(1813);
+emit_16(1877);
+emit_16(1812);
+emit_16(1877);
+emit_16(1813);
+emit_16(1878);
+emit_16(1814);
+emit_16(1878);
+emit_16(1813);
+emit_16(1878);
+emit_16(1814);
+emit_16(1879);
+emit_16(1815);
+emit_16(1879);
+emit_16(1814);
+emit_16(1879);
+emit_16(1815);
+emit_16(1880);
+emit_16(1816);
+emit_16(1880);
+emit_16(1815);
+emit_16(1880);
+emit_16(1816);
+emit_16(1881);
+emit_16(1817);
+emit_16(1881);
+emit_16(1816);
+emit_16(1881);
+emit_16(1817);
+emit_16(1882);
+emit_16(1818);
+emit_16(1882);
+emit_16(1817);
+emit_16(1882);
+emit_16(1818);
+emit_16(1883);
+emit_16(1819);
+emit_16(1883);
+emit_16(1818);
+emit_16(1883);
+emit_16(1819);
+emit_16(1884);
+emit_16(1820);
+emit_16(1884);
+emit_16(1819);
+emit_16(1884);
+emit_16(1820);
+emit_16(1885);
+emit_16(1821);
+emit_16(1885);
+emit_16(1820);
+emit_16(1885);
+emit_16(1821);
+emit_16(1886);
+emit_16(1822);
+emit_16(1886);
+emit_16(1821);
+emit_16(1886);
+emit_16(1822);
+emit_16(1887);
+emit_16(1823);
+emit_16(1887);
+emit_16(1822);
+emit_16(1887);
+emit_16(1823);
+emit_16(1888);
+emit_16(1824);
+emit_16(1888);
+emit_16(1823);
+emit_16(1888);
+emit_16(1824);
+emit_16(1889);
+emit_16(1825);
+emit_16(1889);
+emit_16(1824);
+emit_16(1889);
+emit_16(1825);
+emit_16(1890);
+emit_16(1826);
+emit_16(1890);
+emit_16(1825);
+emit_16(1890);
+emit_16(1826);
+emit_16(1891);
+emit_16(1827);
+emit_16(1891);
+emit_16(1826);
+emit_16(1891);
+emit_16(1827);
+emit_16(1892);
+emit_16(1828);
+emit_16(1892);
+emit_16(1827);
+emit_16(1892);
+emit_16(1828);
+emit_16(1893);
+emit_16(1829);
+emit_16(1893);
+emit_16(1828);
+emit_16(1893);
+emit_16(1829);
+emit_16(1894);
+emit_16(1830);
+emit_16(1894);
+emit_16(1829);
+emit_16(1894);
+emit_16(1830);
+emit_16(1895);
+emit_16(1831);
+emit_16(1895);
+emit_16(1830);
+emit_16(1895);
+emit_16(1831);
+emit_16(1896);
+emit_16(1832);
+emit_16(1896);
+emit_16(1831);
+emit_16(1896);
+emit_16(1832);
+emit_16(1897);
+emit_16(1833);
+emit_16(1897);
+emit_16(1832);
+emit_16(1897);
+emit_16(1833);
+emit_16(1898);
+emit_16(1834);
+emit_16(1898);
+emit_16(1833);
+emit_16(1898);
+emit_16(1834);
+emit_16(1899);
+emit_16(1835);
+emit_16(1899);
+emit_16(1834);
+emit_16(1899);
+emit_16(1835);
+emit_16(1900);
+emit_16(1836);
+emit_16(1900);
+emit_16(1835);
+emit_16(1900);
+emit_16(1836);
+emit_16(1901);
+emit_16(1837);
+emit_16(1901);
+emit_16(1836);
+emit_16(1901);
+emit_16(1837);
+emit_16(1902);
+emit_16(1838);
+emit_16(1902);
+emit_16(1837);
+emit_16(1902);
+emit_16(1838);
+emit_16(1903);
+emit_16(1839);
+emit_16(1903);
+emit_16(1838);
+emit_16(1903);
+emit_16(1839);
+emit_16(1904);
+emit_16(1840);
+emit_16(1904);
+emit_16(1839);
+emit_16(1904);
+emit_16(1840);
+emit_16(1905);
+emit_16(1841);
+emit_16(1905);
+emit_16(1840);
+emit_16(1905);
+emit_16(1841);
+emit_16(1906);
+emit_16(1842);
+emit_16(1906);
+emit_16(1841);
+emit_16(1906);
+emit_16(1842);
+emit_16(1907);
+emit_16(1843);
+emit_16(1907);
+emit_16(1842);
+emit_16(1907);
+emit_16(1843);
+emit_16(1908);
+emit_16(1844);
+emit_16(1908);
+emit_16(1843);
+emit_16(1908);
+emit_16(1844);
+emit_16(1909);
+emit_16(1845);
+emit_16(1909);
+emit_16(1844);
+emit_16(1909);
+emit_16(1845);
+emit_16(1910);
+emit_16(1846);
+emit_16(1910);
+emit_16(1845);
+emit_16(1910);
+emit_16(1846);
+emit_16(1911);
+emit_16(1847);
+emit_16(1911);
+emit_16(1846);
+emit_16(1911);
+emit_16(1847);
+emit_16(1912);
+emit_16(1848);
+emit_16(1912);
+emit_16(1847);
+emit_16(1912);
+emit_16(1848);
+emit_16(1913);
+emit_16(1849);
+emit_16(1913);
+emit_16(1848);
+emit_16(1913);
+emit_16(1849);
+emit_16(1914);
+emit_16(1850);
+emit_16(1914);
+emit_16(1849);
+emit_16(1914);
+emit_16(1850);
+emit_16(1915);
+emit_16(1851);
+emit_16(1915);
+emit_16(1850);
+emit_16(1915);
+emit_16(1851);
+emit_16(1916);
+emit_16(1852);
+emit_16(1916);
+emit_16(1851);
+emit_16(1916);
+emit_16(1852);
+emit_16(1917);
+emit_16(1853);
+emit_16(1917);
+emit_16(1852);
+emit_16(1917);
+emit_16(1853);
+emit_16(1918);
+emit_16(1854);
+emit_16(1918);
+emit_16(1853);
+emit_16(1918);
+emit_16(1854);
+emit_16(1919);
+emit_16(1855);
+emit_16(1919);
+emit_16(1854);
+emit_16(1920);
+emit_16(1856);
+emit_16(1921);
+emit_16(1857);
+emit_16(1921);
+emit_16(1856);
+emit_16(1921);
+emit_16(1857);
+emit_16(1922);
+emit_16(1858);
+emit_16(1922);
+emit_16(1857);
+emit_16(1922);
+emit_16(1858);
+emit_16(1923);
+emit_16(1859);
+emit_16(1923);
+emit_16(1858);
+emit_16(1923);
+emit_16(1859);
+emit_16(1924);
+emit_16(1860);
+emit_16(1924);
+emit_16(1859);
+emit_16(1924);
+emit_16(1860);
+emit_16(1925);
+emit_16(1861);
+emit_16(1925);
+emit_16(1860);
+emit_16(1925);
+emit_16(1861);
+emit_16(1926);
+emit_16(1862);
+emit_16(1926);
+emit_16(1861);
+emit_16(1926);
+emit_16(1862);
+emit_16(1927);
+emit_16(1863);
+emit_16(1927);
+emit_16(1862);
+emit_16(1927);
+emit_16(1863);
+emit_16(1928);
+emit_16(1864);
+emit_16(1928);
+emit_16(1863);
+emit_16(1928);
+emit_16(1864);
+emit_16(1929);
+emit_16(1865);
+emit_16(1929);
+emit_16(1864);
+emit_16(1929);
+emit_16(1865);
+emit_16(1930);
+emit_16(1866);
+emit_16(1930);
+emit_16(1865);
+emit_16(1930);
+emit_16(1866);
+emit_16(1931);
+emit_16(1867);
+emit_16(1931);
+emit_16(1866);
+emit_16(1931);
+emit_16(1867);
+emit_16(1932);
+emit_16(1868);
+emit_16(1932);
+emit_16(1867);
+emit_16(1932);
+emit_16(1868);
+emit_16(1933);
+emit_16(1869);
+emit_16(1933);
+emit_16(1868);
+emit_16(1933);
+emit_16(1869);
+emit_16(1934);
+emit_16(1870);
+emit_16(1934);
+emit_16(1869);
+emit_16(1934);
+emit_16(1870);
+emit_16(1935);
+emit_16(1871);
+emit_16(1935);
+emit_16(1870);
+emit_16(1935);
+emit_16(1871);
+emit_16(1936);
+emit_16(1872);
+emit_16(1936);
+emit_16(1871);
+emit_16(1936);
+emit_16(1872);
+emit_16(1937);
+emit_16(1873);
+emit_16(1937);
+emit_16(1872);
+emit_16(1937);
+emit_16(1873);
+emit_16(1938);
+emit_16(1874);
+emit_16(1938);
+emit_16(1873);
+emit_16(1938);
+emit_16(1874);
+emit_16(1939);
+emit_16(1875);
+emit_16(1939);
+emit_16(1874);
+emit_16(1939);
+emit_16(1875);
+emit_16(1940);
+emit_16(1876);
+emit_16(1940);
+emit_16(1875);
+emit_16(1940);
+emit_16(1876);
+emit_16(1941);
+emit_16(1877);
+emit_16(1941);
+emit_16(1876);
+emit_16(1941);
+emit_16(1877);
+emit_16(1942);
+emit_16(1878);
+emit_16(1942);
+emit_16(1877);
+emit_16(1942);
+emit_16(1878);
+emit_16(1943);
+emit_16(1879);
+emit_16(1943);
+emit_16(1878);
+emit_16(1943);
+emit_16(1879);
+emit_16(1944);
+emit_16(1880);
+emit_16(1944);
+emit_16(1879);
+emit_16(1944);
+emit_16(1880);
+emit_16(1945);
+emit_16(1881);
+emit_16(1945);
+emit_16(1880);
+emit_16(1945);
+emit_16(1881);
+emit_16(1946);
+emit_16(1882);
+emit_16(1946);
+emit_16(1881);
+emit_16(1946);
+emit_16(1882);
+emit_16(1947);
+emit_16(1883);
+emit_16(1947);
+emit_16(1882);
+emit_16(1947);
+emit_16(1883);
+emit_16(1948);
+emit_16(1884);
+emit_16(1948);
+emit_16(1883);
+emit_16(1948);
+emit_16(1884);
+emit_16(1949);
+emit_16(1885);
+emit_16(1949);
+emit_16(1884);
+emit_16(1949);
+emit_16(1885);
+emit_16(1950);
+emit_16(1886);
+emit_16(1950);
+emit_16(1885);
+emit_16(1950);
+emit_16(1886);
+emit_16(1951);
+emit_16(1887);
+emit_16(1951);
+emit_16(1886);
+emit_16(1951);
+emit_16(1887);
+emit_16(1952);
+emit_16(1888);
+emit_16(1952);
+emit_16(1887);
+emit_16(1952);
+emit_16(1888);
+emit_16(1953);
+emit_16(1889);
+emit_16(1953);
+emit_16(1888);
+emit_16(1953);
+emit_16(1889);
+emit_16(1954);
+emit_16(1890);
+emit_16(1954);
+emit_16(1889);
+emit_16(1954);
+emit_16(1890);
+emit_16(1955);
+emit_16(1891);
+emit_16(1955);
+emit_16(1890);
+emit_16(1955);
+emit_16(1891);
+emit_16(1956);
+emit_16(1892);
+emit_16(1956);
+emit_16(1891);
+emit_16(1956);
+emit_16(1892);
+emit_16(1957);
+emit_16(1893);
+emit_16(1957);
+emit_16(1892);
+emit_16(1957);
+emit_16(1893);
+emit_16(1958);
+emit_16(1894);
+emit_16(1958);
+emit_16(1893);
+emit_16(1958);
+emit_16(1894);
+emit_16(1959);
+emit_16(1895);
+emit_16(1959);
+emit_16(1894);
+emit_16(1959);
+emit_16(1895);
+emit_16(1960);
+emit_16(1896);
+emit_16(1960);
+emit_16(1895);
+emit_16(1960);
+emit_16(1896);
+emit_16(1961);
+emit_16(1897);
+emit_16(1961);
+emit_16(1896);
+emit_16(1961);
+emit_16(1897);
+emit_16(1962);
+emit_16(1898);
+emit_16(1962);
+emit_16(1897);
+emit_16(1962);
+emit_16(1898);
+emit_16(1963);
+emit_16(1899);
+emit_16(1963);
+emit_16(1898);
+emit_16(1963);
+emit_16(1899);
+emit_16(1964);
+emit_16(1900);
+emit_16(1964);
+emit_16(1899);
+emit_16(1964);
+emit_16(1900);
+emit_16(1965);
+emit_16(1901);
+emit_16(1965);
+emit_16(1900);
+emit_16(1965);
+emit_16(1901);
+emit_16(1966);
+emit_16(1902);
+emit_16(1966);
+emit_16(1901);
+emit_16(1966);
+emit_16(1902);
+emit_16(1967);
+emit_16(1903);
+emit_16(1967);
+emit_16(1902);
+emit_16(1967);
+emit_16(1903);
+emit_16(1968);
+emit_16(1904);
+emit_16(1968);
+emit_16(1903);
+emit_16(1968);
+emit_16(1904);
+emit_16(1969);
+emit_16(1905);
+emit_16(1969);
+emit_16(1904);
+emit_16(1969);
+emit_16(1905);
+emit_16(1970);
+emit_16(1906);
+emit_16(1970);
+emit_16(1905);
+emit_16(1970);
+emit_16(1906);
+emit_16(1971);
+emit_16(1907);
+emit_16(1971);
+emit_16(1906);
+emit_16(1971);
+emit_16(1907);
+emit_16(1972);
+emit_16(1908);
+emit_16(1972);
+emit_16(1907);
+emit_16(1972);
+emit_16(1908);
+emit_16(1973);
+emit_16(1909);
+emit_16(1973);
+emit_16(1908);
+emit_16(1973);
+emit_16(1909);
+emit_16(1974);
+emit_16(1910);
+emit_16(1974);
+emit_16(1909);
+emit_16(1974);
+emit_16(1910);
+emit_16(1975);
+emit_16(1911);
+emit_16(1975);
+emit_16(1910);
+emit_16(1975);
+emit_16(1911);
+emit_16(1976);
+emit_16(1912);
+emit_16(1976);
+emit_16(1911);
+emit_16(1976);
+emit_16(1912);
+emit_16(1977);
+emit_16(1913);
+emit_16(1977);
+emit_16(1912);
+emit_16(1977);
+emit_16(1913);
+emit_16(1978);
+emit_16(1914);
+emit_16(1978);
+emit_16(1913);
+emit_16(1978);
+emit_16(1914);
+emit_16(1979);
+emit_16(1915);
+emit_16(1979);
+emit_16(1914);
+emit_16(1979);
+emit_16(1915);
+emit_16(1980);
+emit_16(1916);
+emit_16(1980);
+emit_16(1915);
+emit_16(1980);
+emit_16(1916);
+emit_16(1981);
+emit_16(1917);
+emit_16(1981);
+emit_16(1916);
+emit_16(1981);
+emit_16(1917);
+emit_16(1982);
+emit_16(1918);
+emit_16(1982);
+emit_16(1917);
+emit_16(1982);
+emit_16(1918);
+emit_16(1983);
+emit_16(1919);
+emit_16(1983);
+emit_16(1918);
+emit_16(1984);
+emit_16(1920);
+emit_16(1985);
+emit_16(1921);
+emit_16(1985);
+emit_16(1920);
+emit_16(1985);
+emit_16(1921);
+emit_16(1986);
+emit_16(1922);
+emit_16(1986);
+emit_16(1921);
+emit_16(1986);
+emit_16(1922);
+emit_16(1987);
+emit_16(1923);
+emit_16(1987);
+emit_16(1922);
+emit_16(1987);
+emit_16(1923);
+emit_16(1988);
+emit_16(1924);
+emit_16(1988);
+emit_16(1923);
+emit_16(1988);
+emit_16(1924);
+emit_16(1989);
+emit_16(1925);
+emit_16(1989);
+emit_16(1924);
+emit_16(1989);
+emit_16(1925);
+emit_16(1990);
+emit_16(1926);
+emit_16(1990);
+emit_16(1925);
+emit_16(1990);
+emit_16(1926);
+emit_16(1991);
+emit_16(1927);
+emit_16(1991);
+emit_16(1926);
+emit_16(1991);
+emit_16(1927);
+emit_16(1992);
+emit_16(1928);
+emit_16(1992);
+emit_16(1927);
+emit_16(1992);
+emit_16(1928);
+emit_16(1993);
+emit_16(1929);
+emit_16(1993);
+emit_16(1928);
+emit_16(1993);
+emit_16(1929);
+emit_16(1994);
+emit_16(1930);
+emit_16(1994);
+emit_16(1929);
+emit_16(1994);
+emit_16(1930);
+emit_16(1995);
+emit_16(1931);
+emit_16(1995);
+emit_16(1930);
+emit_16(1995);
+emit_16(1931);
+emit_16(1996);
+emit_16(1932);
+emit_16(1996);
+emit_16(1931);
+emit_16(1996);
+emit_16(1932);
+emit_16(1997);
+emit_16(1933);
+emit_16(1997);
+emit_16(1932);
+emit_16(1997);
+emit_16(1933);
+emit_16(1998);
+emit_16(1934);
+emit_16(1998);
+emit_16(1933);
+emit_16(1998);
+emit_16(1934);
+emit_16(1999);
+emit_16(1935);
+emit_16(1999);
+emit_16(1934);
+emit_16(1999);
+emit_16(1935);
+emit_16(2000);
+emit_16(1936);
+emit_16(2000);
+emit_16(1935);
+emit_16(2000);
+emit_16(1936);
+emit_16(2001);
+emit_16(1937);
+emit_16(2001);
+emit_16(1936);
+emit_16(2001);
+emit_16(1937);
+emit_16(2002);
+emit_16(1938);
+emit_16(2002);
+emit_16(1937);
+emit_16(2002);
+emit_16(1938);
+emit_16(2003);
+emit_16(1939);
+emit_16(2003);
+emit_16(1938);
+emit_16(2003);
+emit_16(1939);
+emit_16(2004);
+emit_16(1940);
+emit_16(2004);
+emit_16(1939);
+emit_16(2004);
+emit_16(1940);
+emit_16(2005);
+emit_16(1941);
+emit_16(2005);
+emit_16(1940);
+emit_16(2005);
+emit_16(1941);
+emit_16(2006);
+emit_16(1942);
+emit_16(2006);
+emit_16(1941);
+emit_16(2006);
+emit_16(1942);
+emit_16(2007);
+emit_16(1943);
+emit_16(2007);
+emit_16(1942);
+emit_16(2007);
+emit_16(1943);
+emit_16(2008);
+emit_16(1944);
+emit_16(2008);
+emit_16(1943);
+emit_16(2008);
+emit_16(1944);
+emit_16(2009);
+emit_16(1945);
+emit_16(2009);
+emit_16(1944);
+emit_16(2009);
+emit_16(1945);
+emit_16(2010);
+emit_16(1946);
+emit_16(2010);
+emit_16(1945);
+emit_16(2010);
+emit_16(1946);
+emit_16(2011);
+emit_16(1947);
+emit_16(2011);
+emit_16(1946);
+emit_16(2011);
+emit_16(1947);
+emit_16(2012);
+emit_16(1948);
+emit_16(2012);
+emit_16(1947);
+emit_16(2012);
+emit_16(1948);
+emit_16(2013);
+emit_16(1949);
+emit_16(2013);
+emit_16(1948);
+emit_16(2013);
+emit_16(1949);
+emit_16(2014);
+emit_16(1950);
+emit_16(2014);
+emit_16(1949);
+emit_16(2014);
+emit_16(1950);
+emit_16(2015);
+emit_16(1951);
+emit_16(2015);
+emit_16(1950);
+emit_16(2015);
+emit_16(1951);
+emit_16(2016);
+emit_16(1952);
+emit_16(2016);
+emit_16(1951);
+emit_16(2016);
+emit_16(1952);
+emit_16(2017);
+emit_16(1953);
+emit_16(2017);
+emit_16(1952);
+emit_16(2017);
+emit_16(1953);
+emit_16(2018);
+emit_16(1954);
+emit_16(2018);
+emit_16(1953);
+emit_16(2018);
+emit_16(1954);
+emit_16(2019);
+emit_16(1955);
+emit_16(2019);
+emit_16(1954);
+emit_16(2019);
+emit_16(1955);
+emit_16(2020);
+emit_16(1956);
+emit_16(2020);
+emit_16(1955);
+emit_16(2020);
+emit_16(1956);
+emit_16(2021);
+emit_16(1957);
+emit_16(2021);
+emit_16(1956);
+emit_16(2021);
+emit_16(1957);
+emit_16(2022);
+emit_16(1958);
+emit_16(2022);
+emit_16(1957);
+emit_16(2022);
+emit_16(1958);
+emit_16(2023);
+emit_16(1959);
+emit_16(2023);
+emit_16(1958);
+emit_16(2023);
+emit_16(1959);
+emit_16(2024);
+emit_16(1960);
+emit_16(2024);
+emit_16(1959);
+emit_16(2024);
+emit_16(1960);
+emit_16(2025);
+emit_16(1961);
+emit_16(2025);
+emit_16(1960);
+emit_16(2025);
+emit_16(1961);
+emit_16(2026);
+emit_16(1962);
+emit_16(2026);
+emit_16(1961);
+emit_16(2026);
+emit_16(1962);
+emit_16(2027);
+emit_16(1963);
+emit_16(2027);
+emit_16(1962);
+emit_16(2027);
+emit_16(1963);
+emit_16(2028);
+emit_16(1964);
+emit_16(2028);
+emit_16(1963);
+emit_16(2028);
+emit_16(1964);
+emit_16(2029);
+emit_16(1965);
+emit_16(2029);
+emit_16(1964);
+emit_16(2029);
+emit_16(1965);
+emit_16(2030);
+emit_16(1966);
+emit_16(2030);
+emit_16(1965);
+emit_16(2030);
+emit_16(1966);
+emit_16(2031);
+emit_16(1967);
+emit_16(2031);
+emit_16(1966);
+emit_16(2031);
+emit_16(1967);
+emit_16(2032);
+emit_16(1968);
+emit_16(2032);
+emit_16(1967);
+emit_16(2032);
+emit_16(1968);
+emit_16(2033);
+emit_16(1969);
+emit_16(2033);
+emit_16(1968);
+emit_16(2033);
+emit_16(1969);
+emit_16(2034);
+emit_16(1970);
+emit_16(2034);
+emit_16(1969);
+emit_16(2034);
+emit_16(1970);
+emit_16(2035);
+emit_16(1971);
+emit_16(2035);
+emit_16(1970);
+emit_16(2035);
+emit_16(1971);
+emit_16(2036);
+emit_16(1972);
+emit_16(2036);
+emit_16(1971);
+emit_16(2036);
+emit_16(1972);
+emit_16(2037);
+emit_16(1973);
+emit_16(2037);
+emit_16(1972);
+emit_16(2037);
+emit_16(1973);
+emit_16(2038);
+emit_16(1974);
+emit_16(2038);
+emit_16(1973);
+emit_16(2038);
+emit_16(1974);
+emit_16(2039);
+emit_16(1975);
+emit_16(2039);
+emit_16(1974);
+emit_16(2039);
+emit_16(1975);
+emit_16(2040);
+emit_16(1976);
+emit_16(2040);
+emit_16(1975);
+emit_16(2040);
+emit_16(1976);
+emit_16(2041);
+emit_16(1977);
+emit_16(2041);
+emit_16(1976);
+emit_16(2041);
+emit_16(1977);
+emit_16(2042);
+emit_16(1978);
+emit_16(2042);
+emit_16(1977);
+emit_16(2042);
+emit_16(1978);
+emit_16(2043);
+emit_16(1979);
+emit_16(2043);
+emit_16(1978);
+emit_16(2043);
+emit_16(1979);
+emit_16(2044);
+emit_16(1980);
+emit_16(2044);
+emit_16(1979);
+emit_16(2044);
+emit_16(1980);
+emit_16(2045);
+emit_16(1981);
+emit_16(2045);
+emit_16(1980);
+emit_16(2045);
+emit_16(1981);
+emit_16(2046);
+emit_16(1982);
+emit_16(2046);
+emit_16(1981);
+emit_16(2046);
+emit_16(1982);
+emit_16(2047);
+emit_16(1983);
+emit_16(2047);
+emit_16(1982);
+emit_16(2048);
+emit_16(1984);
+emit_16(2049);
+emit_16(1985);
+emit_16(2049);
+emit_16(1984);
+emit_16(2049);
+emit_16(1985);
+emit_16(2050);
+emit_16(1986);
+emit_16(2050);
+emit_16(1985);
+emit_16(2050);
+emit_16(1986);
+emit_16(2051);
+emit_16(1987);
+emit_16(2051);
+emit_16(1986);
+emit_16(2051);
+emit_16(1987);
+emit_16(2052);
+emit_16(1988);
+emit_16(2052);
+emit_16(1987);
+emit_16(2052);
+emit_16(1988);
+emit_16(2053);
+emit_16(1989);
+emit_16(2053);
+emit_16(1988);
+emit_16(2053);
+emit_16(1989);
+emit_16(2054);
+emit_16(1990);
+emit_16(2054);
+emit_16(1989);
+emit_16(2054);
+emit_16(1990);
+emit_16(2055);
+emit_16(1991);
+emit_16(2055);
+emit_16(1990);
+emit_16(2055);
+emit_16(1991);
+emit_16(2056);
+emit_16(1992);
+emit_16(2056);
+emit_16(1991);
+emit_16(2056);
+emit_16(1992);
+emit_16(2057);
+emit_16(1993);
+emit_16(2057);
+emit_16(1992);
+emit_16(2057);
+emit_16(1993);
+emit_16(2058);
+emit_16(1994);
+emit_16(2058);
+emit_16(1993);
+emit_16(2058);
+emit_16(1994);
+emit_16(2059);
+emit_16(1995);
+emit_16(2059);
+emit_16(1994);
+emit_16(2059);
+emit_16(1995);
+emit_16(2060);
+emit_16(1996);
+emit_16(2060);
+emit_16(1995);
+emit_16(2060);
+emit_16(1996);
+emit_16(2061);
+emit_16(1997);
+emit_16(2061);
+emit_16(1996);
+emit_16(2061);
+emit_16(1997);
+emit_16(2062);
+emit_16(1998);
+emit_16(2062);
+emit_16(1997);
+emit_16(2062);
+emit_16(1998);
+emit_16(2063);
+emit_16(1999);
+emit_16(2063);
+emit_16(1998);
+emit_16(2063);
+emit_16(1999);
+emit_16(2064);
+emit_16(2000);
+emit_16(2064);
+emit_16(1999);
+emit_16(2064);
+emit_16(2000);
+emit_16(2065);
+emit_16(2001);
+emit_16(2065);
+emit_16(2000);
+emit_16(2065);
+emit_16(2001);
+emit_16(2066);
+emit_16(2002);
+emit_16(2066);
+emit_16(2001);
+emit_16(2066);
+emit_16(2002);
+emit_16(2067);
+emit_16(2003);
+emit_16(2067);
+emit_16(2002);
+emit_16(2067);
+emit_16(2003);
+emit_16(2068);
+emit_16(2004);
+emit_16(2068);
+emit_16(2003);
+emit_16(2068);
+emit_16(2004);
+emit_16(2069);
+emit_16(2005);
+emit_16(2069);
+emit_16(2004);
+emit_16(2069);
+emit_16(2005);
+emit_16(2070);
+emit_16(2006);
+emit_16(2070);
+emit_16(2005);
+emit_16(2070);
+emit_16(2006);
+emit_16(2071);
+emit_16(2007);
+emit_16(2071);
+emit_16(2006);
+emit_16(2071);
+emit_16(2007);
+emit_16(2072);
+emit_16(2008);
+emit_16(2072);
+emit_16(2007);
+emit_16(2072);
+emit_16(2008);
+emit_16(2073);
+emit_16(2009);
+emit_16(2073);
+emit_16(2008);
+emit_16(2073);
+emit_16(2009);
+emit_16(2074);
+emit_16(2010);
+emit_16(2074);
+emit_16(2009);
+emit_16(2074);
+emit_16(2010);
+emit_16(2075);
+emit_16(2011);
+emit_16(2075);
+emit_16(2010);
+emit_16(2075);
+emit_16(2011);
+emit_16(2076);
+emit_16(2012);
+emit_16(2076);
+emit_16(2011);
+emit_16(2076);
+emit_16(2012);
+emit_16(2077);
+emit_16(2013);
+emit_16(2077);
+emit_16(2012);
+emit_16(2077);
+emit_16(2013);
+emit_16(2078);
+emit_16(2014);
+emit_16(2078);
+emit_16(2013);
+emit_16(2078);
+emit_16(2014);
+emit_16(2079);
+emit_16(2015);
+emit_16(2079);
+emit_16(2014);
+emit_16(2079);
+emit_16(2015);
+emit_16(2080);
+emit_16(2016);
+emit_16(2080);
+emit_16(2015);
+emit_16(2080);
+emit_16(2016);
+emit_16(2081);
+emit_16(2017);
+emit_16(2081);
+emit_16(2016);
+emit_16(2081);
+emit_16(2017);
+emit_16(2082);
+emit_16(2018);
+emit_16(2082);
+emit_16(2017);
+emit_16(2082);
+emit_16(2018);
+emit_16(2083);
+emit_16(2019);
+emit_16(2083);
+emit_16(2018);
+emit_16(2083);
+emit_16(2019);
+emit_16(2084);
+emit_16(2020);
+emit_16(2084);
+emit_16(2019);
+emit_16(2084);
+emit_16(2020);
+emit_16(2085);
+emit_16(2021);
+emit_16(2085);
+emit_16(2020);
+emit_16(2085);
+emit_16(2021);
+emit_16(2086);
+emit_16(2022);
+emit_16(2086);
+emit_16(2021);
+emit_16(2086);
+emit_16(2022);
+emit_16(2087);
+emit_16(2023);
+emit_16(2087);
+emit_16(2022);
+emit_16(2087);
+emit_16(2023);
+emit_16(2088);
+emit_16(2024);
+emit_16(2088);
+emit_16(2023);
+emit_16(2088);
+emit_16(2024);
+emit_16(2089);
+emit_16(2025);
+emit_16(2089);
+emit_16(2024);
+emit_16(2089);
+emit_16(2025);
+emit_16(2090);
+emit_16(2026);
+emit_16(2090);
+emit_16(2025);
+emit_16(2090);
+emit_16(2026);
+emit_16(2091);
+emit_16(2027);
+emit_16(2091);
+emit_16(2026);
+emit_16(2091);
+emit_16(2027);
+emit_16(2092);
+emit_16(2028);
+emit_16(2092);
+emit_16(2027);
+emit_16(2092);
+emit_16(2028);
+emit_16(2093);
+emit_16(2029);
+emit_16(2093);
+emit_16(2028);
+emit_16(2093);
+emit_16(2029);
+emit_16(2094);
+emit_16(2030);
+emit_16(2094);
+emit_16(2029);
+emit_16(2094);
+emit_16(2030);
+emit_16(2095);
+emit_16(2031);
+emit_16(2095);
+emit_16(2030);
+emit_16(2095);
+emit_16(2031);
+emit_16(2096);
+emit_16(2032);
+emit_16(2096);
+emit_16(2031);
+emit_16(2096);
+emit_16(2032);
+emit_16(2097);
+emit_16(2033);
+emit_16(2097);
+emit_16(2032);
+emit_16(2097);
+emit_16(2033);
+emit_16(2098);
+emit_16(2034);
+emit_16(2098);
+emit_16(2033);
+emit_16(2098);
+emit_16(2034);
+emit_16(2099);
+emit_16(2035);
+emit_16(2099);
+emit_16(2034);
+emit_16(2099);
+emit_16(2035);
+emit_16(2100);
+emit_16(2036);
+emit_16(2100);
+emit_16(2035);
+emit_16(2100);
+emit_16(2036);
+emit_16(2101);
+emit_16(2037);
+emit_16(2101);
+emit_16(2036);
+emit_16(2101);
+emit_16(2037);
+emit_16(2102);
+emit_16(2038);
+emit_16(2102);
+emit_16(2037);
+emit_16(2102);
+emit_16(2038);
+emit_16(2103);
+emit_16(2039);
+emit_16(2103);
+emit_16(2038);
+emit_16(2103);
+emit_16(2039);
+emit_16(2104);
+emit_16(2040);
+emit_16(2104);
+emit_16(2039);
+emit_16(2104);
+emit_16(2040);
+emit_16(2105);
+emit_16(2041);
+emit_16(2105);
+emit_16(2040);
+emit_16(2105);
+emit_16(2041);
+emit_16(2106);
+emit_16(2042);
+emit_16(2106);
+emit_16(2041);
+emit_16(2106);
+emit_16(2042);
+emit_16(2107);
+emit_16(2043);
+emit_16(2107);
+emit_16(2042);
+emit_16(2107);
+emit_16(2043);
+emit_16(2108);
+emit_16(2044);
+emit_16(2108);
+emit_16(2043);
+emit_16(2108);
+emit_16(2044);
+emit_16(2109);
+emit_16(2045);
+emit_16(2109);
+emit_16(2044);
+emit_16(2109);
+emit_16(2045);
+emit_16(2110);
+emit_16(2046);
+emit_16(2110);
+emit_16(2045);
+emit_16(2110);
+emit_16(2046);
+emit_16(2111);
+emit_16(2047);
+emit_16(2111);
+emit_16(2046);
+emit_start(Landscape05Idx)
+emit_16(0);
+emit_16(1);
+emit_16(2);
+emit_16(3);
+emit_16(2);
+emit_16(1);
+emit_16(2);
+emit_16(3);
+emit_16(4);
+emit_16(5);
+emit_16(4);
+emit_16(3);
+emit_16(4);
+emit_16(5);
+emit_16(6);
+emit_16(7);
+emit_16(6);
+emit_16(5);
+emit_16(6);
+emit_16(7);
+emit_16(8);
+emit_16(9);
+emit_16(8);
+emit_16(7);
+emit_16(8);
+emit_16(9);
+emit_16(10);
+emit_16(11);
+emit_16(10);
+emit_16(9);
+emit_16(10);
+emit_16(11);
+emit_16(12);
+emit_16(13);
+emit_16(12);
+emit_16(11);
+emit_16(12);
+emit_16(13);
+emit_16(14);
+emit_16(15);
+emit_16(14);
+emit_16(13);
+emit_16(14);
+emit_16(15);
+emit_16(16);
+emit_16(17);
+emit_16(16);
+emit_16(15);
+emit_16(16);
+emit_16(17);
+emit_16(18);
+emit_16(19);
+emit_16(18);
+emit_16(17);
+emit_16(18);
+emit_16(19);
+emit_16(20);
+emit_16(21);
+emit_16(20);
+emit_16(19);
+emit_16(20);
+emit_16(21);
+emit_16(22);
+emit_16(23);
+emit_16(22);
+emit_16(21);
+emit_16(22);
+emit_16(23);
+emit_16(24);
+emit_16(25);
+emit_16(24);
+emit_16(23);
+emit_16(24);
+emit_16(25);
+emit_16(26);
+emit_16(27);
+emit_16(26);
+emit_16(25);
+emit_16(26);
+emit_16(27);
+emit_16(28);
+emit_16(29);
+emit_16(28);
+emit_16(27);
+emit_16(28);
+emit_16(29);
+emit_16(30);
+emit_16(31);
+emit_16(30);
+emit_16(29);
+emit_16(30);
+emit_16(31);
+emit_16(32);
+emit_16(33);
+emit_16(32);
+emit_16(31);
+emit_16(32);
+emit_16(33);
+emit_16(34);
+emit_16(35);
+emit_16(34);
+emit_16(33);
+emit_16(34);
+emit_16(35);
+emit_16(36);
+emit_16(37);
+emit_16(36);
+emit_16(35);
+emit_16(36);
+emit_16(37);
+emit_16(38);
+emit_16(39);
+emit_16(38);
+emit_16(37);
+emit_16(38);
+emit_16(39);
+emit_16(40);
+emit_16(41);
+emit_16(40);
+emit_16(39);
+emit_16(40);
+emit_16(41);
+emit_16(42);
+emit_16(43);
+emit_16(42);
+emit_16(41);
+emit_16(42);
+emit_16(43);
+emit_16(44);
+emit_16(45);
+emit_16(44);
+emit_16(43);
+emit_16(44);
+emit_16(45);
+emit_16(46);
+emit_16(47);
+emit_16(46);
+emit_16(45);
+emit_16(46);
+emit_16(47);
+emit_16(48);
+emit_16(49);
+emit_16(48);
+emit_16(47);
+emit_16(48);
+emit_16(49);
+emit_16(50);
+emit_16(51);
+emit_16(50);
+emit_16(49);
+emit_16(50);
+emit_16(51);
+emit_16(52);
+emit_16(53);
+emit_16(52);
+emit_16(51);
+emit_16(52);
+emit_16(53);
+emit_16(54);
+emit_16(55);
+emit_16(54);
+emit_16(53);
+emit_16(54);
+emit_16(55);
+emit_16(56);
+emit_16(57);
+emit_16(56);
+emit_16(55);
+emit_16(56);
+emit_16(57);
+emit_16(58);
+emit_16(59);
+emit_16(58);
+emit_16(57);
+emit_16(58);
+emit_16(59);
+emit_16(60);
+emit_16(61);
+emit_16(60);
+emit_16(59);
+emit_16(60);
+emit_16(61);
+emit_16(62);
+emit_16(63);
+emit_16(62);
+emit_16(61);
+emit_16(62);
+emit_16(63);
+emit_16(64);
+emit_16(65);
+emit_16(64);
+emit_16(63);
+emit_16(64);
+emit_16(65);
+emit_16(66);
+emit_16(67);
+emit_16(66);
+emit_16(65);
+emit_16(66);
+emit_16(67);
+emit_16(68);
+emit_16(69);
+emit_16(68);
+emit_16(67);
+emit_16(68);
+emit_16(69);
+emit_16(70);
+emit_16(71);
+emit_16(70);
+emit_16(69);
+emit_16(70);
+emit_16(71);
+emit_16(72);
+emit_16(73);
+emit_16(72);
+emit_16(71);
+emit_16(72);
+emit_16(73);
+emit_16(74);
+emit_16(75);
+emit_16(74);
+emit_16(73);
+emit_16(74);
+emit_16(75);
+emit_16(76);
+emit_16(77);
+emit_16(76);
+emit_16(75);
+emit_16(76);
+emit_16(77);
+emit_16(78);
+emit_16(79);
+emit_16(78);
+emit_16(77);
+emit_16(78);
+emit_16(79);
+emit_16(80);
+emit_16(81);
+emit_16(80);
+emit_16(79);
+emit_16(80);
+emit_16(81);
+emit_16(82);
+emit_16(83);
+emit_16(82);
+emit_16(81);
+emit_16(82);
+emit_16(83);
+emit_16(84);
+emit_16(85);
+emit_16(84);
+emit_16(83);
+emit_16(84);
+emit_16(85);
+emit_16(86);
+emit_16(87);
+emit_16(86);
+emit_16(85);
+emit_16(86);
+emit_16(87);
+emit_16(88);
+emit_16(89);
+emit_16(88);
+emit_16(87);
+emit_16(88);
+emit_16(89);
+emit_16(90);
+emit_16(91);
+emit_16(90);
+emit_16(89);
+emit_16(90);
+emit_16(91);
+emit_16(92);
+emit_16(93);
+emit_16(92);
+emit_16(91);
+emit_16(92);
+emit_16(93);
+emit_16(94);
+emit_16(95);
+emit_16(94);
+emit_16(93);
+emit_16(94);
+emit_16(95);
+emit_16(96);
+emit_16(97);
+emit_16(96);
+emit_16(95);
+emit_16(96);
+emit_16(97);
+emit_16(98);
+emit_16(99);
+emit_16(98);
+emit_16(97);
+emit_16(98);
+emit_16(99);
+emit_16(100);
+emit_16(101);
+emit_16(100);
+emit_16(99);
+emit_16(100);
+emit_16(101);
+emit_16(102);
+emit_16(103);
+emit_16(102);
+emit_16(101);
+emit_16(102);
+emit_16(103);
+emit_16(104);
+emit_16(105);
+emit_16(104);
+emit_16(103);
+emit_16(104);
+emit_16(105);
+emit_16(106);
+emit_16(107);
+emit_16(106);
+emit_16(105);
+emit_16(106);
+emit_16(107);
+emit_16(108);
+emit_16(109);
+emit_16(108);
+emit_16(107);
+emit_16(108);
+emit_16(109);
+emit_16(110);
+emit_16(111);
+emit_16(110);
+emit_16(109);
+emit_16(110);
+emit_16(111);
+emit_16(112);
+emit_16(113);
+emit_16(112);
+emit_16(111);
+emit_16(112);
+emit_16(113);
+emit_16(114);
+emit_16(115);
+emit_16(114);
+emit_16(113);
+emit_16(114);
+emit_16(115);
+emit_16(116);
+emit_16(117);
+emit_16(116);
+emit_16(115);
+emit_16(116);
+emit_16(117);
+emit_16(118);
+emit_16(119);
+emit_16(118);
+emit_16(117);
+emit_16(118);
+emit_16(119);
+emit_16(120);
+emit_16(121);
+emit_16(120);
+emit_16(119);
+emit_16(120);
+emit_16(121);
+emit_16(122);
+emit_16(123);
+emit_16(122);
+emit_16(121);
+emit_16(122);
+emit_16(123);
+emit_16(124);
+emit_16(125);
+emit_16(124);
+emit_16(123);
+emit_16(124);
+emit_16(125);
+emit_16(126);
+emit_16(127);
+emit_16(126);
+emit_16(125);
+emit_16(126);
+emit_16(127);
+emit_16(128);
+emit_16(129);
+emit_16(128);
+emit_16(127);
+emit_16(128);
+emit_16(129);
+emit_16(130);
+emit_16(131);
+emit_16(130);
+emit_16(129);
+emit_16(132);
+emit_16(0);
+emit_16(133);
+emit_16(2);
+emit_16(133);
+emit_16(0);
+emit_16(133);
+emit_16(2);
+emit_16(134);
+emit_16(4);
+emit_16(134);
+emit_16(2);
+emit_16(134);
+emit_16(4);
+emit_16(135);
+emit_16(6);
+emit_16(135);
+emit_16(4);
+emit_16(135);
+emit_16(6);
+emit_16(136);
+emit_16(8);
+emit_16(136);
+emit_16(6);
+emit_16(136);
+emit_16(8);
+emit_16(137);
+emit_16(10);
+emit_16(137);
+emit_16(8);
+emit_16(137);
+emit_16(10);
+emit_16(138);
+emit_16(12);
+emit_16(138);
+emit_16(10);
+emit_16(138);
+emit_16(12);
+emit_16(139);
+emit_16(14);
+emit_16(139);
+emit_16(12);
+emit_16(139);
+emit_16(14);
+emit_16(140);
+emit_16(16);
+emit_16(140);
+emit_16(14);
+emit_16(140);
+emit_16(16);
+emit_16(141);
+emit_16(18);
+emit_16(141);
+emit_16(16);
+emit_16(141);
+emit_16(18);
+emit_16(142);
+emit_16(20);
+emit_16(142);
+emit_16(18);
+emit_16(142);
+emit_16(20);
+emit_16(143);
+emit_16(22);
+emit_16(143);
+emit_16(20);
+emit_16(143);
+emit_16(22);
+emit_16(144);
+emit_16(24);
+emit_16(144);
+emit_16(22);
+emit_16(144);
+emit_16(24);
+emit_16(145);
+emit_16(26);
+emit_16(145);
+emit_16(24);
+emit_16(145);
+emit_16(26);
+emit_16(146);
+emit_16(28);
+emit_16(146);
+emit_16(26);
+emit_16(146);
+emit_16(28);
+emit_16(147);
+emit_16(30);
+emit_16(147);
+emit_16(28);
+emit_16(147);
+emit_16(30);
+emit_16(148);
+emit_16(32);
+emit_16(148);
+emit_16(30);
+emit_16(148);
+emit_16(32);
+emit_16(149);
+emit_16(34);
+emit_16(149);
+emit_16(32);
+emit_16(149);
+emit_16(34);
+emit_16(150);
+emit_16(36);
+emit_16(150);
+emit_16(34);
+emit_16(150);
+emit_16(36);
+emit_16(151);
+emit_16(38);
+emit_16(151);
+emit_16(36);
+emit_16(151);
+emit_16(38);
+emit_16(152);
+emit_16(40);
+emit_16(152);
+emit_16(38);
+emit_16(152);
+emit_16(40);
+emit_16(153);
+emit_16(42);
+emit_16(153);
+emit_16(40);
+emit_16(153);
+emit_16(42);
+emit_16(154);
+emit_16(44);
+emit_16(154);
+emit_16(42);
+emit_16(154);
+emit_16(44);
+emit_16(155);
+emit_16(46);
+emit_16(155);
+emit_16(44);
+emit_16(155);
+emit_16(46);
+emit_16(156);
+emit_16(48);
+emit_16(156);
+emit_16(46);
+emit_16(156);
+emit_16(48);
+emit_16(157);
+emit_16(50);
+emit_16(157);
+emit_16(48);
+emit_16(157);
+emit_16(50);
+emit_16(158);
+emit_16(52);
+emit_16(158);
+emit_16(50);
+emit_16(158);
+emit_16(52);
+emit_16(159);
+emit_16(54);
+emit_16(159);
+emit_16(52);
+emit_16(159);
+emit_16(54);
+emit_16(160);
+emit_16(56);
+emit_16(160);
+emit_16(54);
+emit_16(160);
+emit_16(56);
+emit_16(161);
+emit_16(58);
+emit_16(161);
+emit_16(56);
+emit_16(161);
+emit_16(58);
+emit_16(162);
+emit_16(60);
+emit_16(162);
+emit_16(58);
+emit_16(162);
+emit_16(60);
+emit_16(163);
+emit_16(62);
+emit_16(163);
+emit_16(60);
+emit_16(163);
+emit_16(62);
+emit_16(164);
+emit_16(64);
+emit_16(164);
+emit_16(62);
+emit_16(164);
+emit_16(64);
+emit_16(165);
+emit_16(66);
+emit_16(165);
+emit_16(64);
+emit_16(165);
+emit_16(66);
+emit_16(166);
+emit_16(68);
+emit_16(166);
+emit_16(66);
+emit_16(166);
+emit_16(68);
+emit_16(167);
+emit_16(70);
+emit_16(167);
+emit_16(68);
+emit_16(167);
+emit_16(70);
+emit_16(168);
+emit_16(72);
+emit_16(168);
+emit_16(70);
+emit_16(168);
+emit_16(72);
+emit_16(169);
+emit_16(74);
+emit_16(169);
+emit_16(72);
+emit_16(169);
+emit_16(74);
+emit_16(170);
+emit_16(76);
+emit_16(170);
+emit_16(74);
+emit_16(170);
+emit_16(76);
+emit_16(171);
+emit_16(78);
+emit_16(171);
+emit_16(76);
+emit_16(171);
+emit_16(78);
+emit_16(172);
+emit_16(80);
+emit_16(172);
+emit_16(78);
+emit_16(172);
+emit_16(80);
+emit_16(173);
+emit_16(82);
+emit_16(173);
+emit_16(80);
+emit_16(173);
+emit_16(82);
+emit_16(174);
+emit_16(84);
+emit_16(174);
+emit_16(82);
+emit_16(174);
+emit_16(84);
+emit_16(175);
+emit_16(86);
+emit_16(175);
+emit_16(84);
+emit_16(175);
+emit_16(86);
+emit_16(176);
+emit_16(88);
+emit_16(176);
+emit_16(86);
+emit_16(176);
+emit_16(88);
+emit_16(177);
+emit_16(90);
+emit_16(177);
+emit_16(88);
+emit_16(177);
+emit_16(90);
+emit_16(178);
+emit_16(92);
+emit_16(178);
+emit_16(90);
+emit_16(178);
+emit_16(92);
+emit_16(179);
+emit_16(94);
+emit_16(179);
+emit_16(92);
+emit_16(179);
+emit_16(94);
+emit_16(180);
+emit_16(96);
+emit_16(180);
+emit_16(94);
+emit_16(180);
+emit_16(96);
+emit_16(181);
+emit_16(98);
+emit_16(181);
+emit_16(96);
+emit_16(181);
+emit_16(98);
+emit_16(182);
+emit_16(100);
+emit_16(182);
+emit_16(98);
+emit_16(182);
+emit_16(100);
+emit_16(183);
+emit_16(102);
+emit_16(183);
+emit_16(100);
+emit_16(183);
+emit_16(102);
+emit_16(184);
+emit_16(104);
+emit_16(184);
+emit_16(102);
+emit_16(184);
+emit_16(104);
+emit_16(185);
+emit_16(106);
+emit_16(185);
+emit_16(104);
+emit_16(185);
+emit_16(106);
+emit_16(186);
+emit_16(108);
+emit_16(186);
+emit_16(106);
+emit_16(186);
+emit_16(108);
+emit_16(187);
+emit_16(110);
+emit_16(187);
+emit_16(108);
+emit_16(187);
+emit_16(110);
+emit_16(188);
+emit_16(112);
+emit_16(188);
+emit_16(110);
+emit_16(188);
+emit_16(112);
+emit_16(189);
+emit_16(114);
+emit_16(189);
+emit_16(112);
+emit_16(189);
+emit_16(114);
+emit_16(190);
+emit_16(116);
+emit_16(190);
+emit_16(114);
+emit_16(190);
+emit_16(116);
+emit_16(191);
+emit_16(118);
+emit_16(191);
+emit_16(116);
+emit_16(191);
+emit_16(118);
+emit_16(192);
+emit_16(120);
+emit_16(192);
+emit_16(118);
+emit_16(192);
+emit_16(120);
+emit_16(193);
+emit_16(122);
+emit_16(193);
+emit_16(120);
+emit_16(193);
+emit_16(122);
+emit_16(194);
+emit_16(124);
+emit_16(194);
+emit_16(122);
+emit_16(194);
+emit_16(124);
+emit_16(195);
+emit_16(126);
+emit_16(195);
+emit_16(124);
+emit_16(195);
+emit_16(126);
+emit_16(196);
+emit_16(128);
+emit_16(196);
+emit_16(126);
+emit_16(196);
+emit_16(128);
+emit_16(197);
+emit_16(130);
+emit_16(197);
+emit_16(128);
+emit_16(198);
+emit_16(132);
+emit_16(199);
+emit_16(133);
+emit_16(199);
+emit_16(132);
+emit_16(199);
+emit_16(133);
+emit_16(200);
+emit_16(134);
+emit_16(200);
+emit_16(133);
+emit_16(200);
+emit_16(134);
+emit_16(201);
+emit_16(135);
+emit_16(201);
+emit_16(134);
+emit_16(201);
+emit_16(135);
+emit_16(202);
+emit_16(136);
+emit_16(202);
+emit_16(135);
+emit_16(202);
+emit_16(136);
+emit_16(203);
+emit_16(137);
+emit_16(203);
+emit_16(136);
+emit_16(203);
+emit_16(137);
+emit_16(204);
+emit_16(138);
+emit_16(204);
+emit_16(137);
+emit_16(204);
+emit_16(138);
+emit_16(205);
+emit_16(139);
+emit_16(205);
+emit_16(138);
+emit_16(205);
+emit_16(139);
+emit_16(206);
+emit_16(140);
+emit_16(206);
+emit_16(139);
+emit_16(206);
+emit_16(140);
+emit_16(207);
+emit_16(141);
+emit_16(207);
+emit_16(140);
+emit_16(207);
+emit_16(141);
+emit_16(208);
+emit_16(142);
+emit_16(208);
+emit_16(141);
+emit_16(208);
+emit_16(142);
+emit_16(209);
+emit_16(143);
+emit_16(209);
+emit_16(142);
+emit_16(209);
+emit_16(143);
+emit_16(210);
+emit_16(144);
+emit_16(210);
+emit_16(143);
+emit_16(210);
+emit_16(144);
+emit_16(211);
+emit_16(145);
+emit_16(211);
+emit_16(144);
+emit_16(211);
+emit_16(145);
+emit_16(212);
+emit_16(146);
+emit_16(212);
+emit_16(145);
+emit_16(212);
+emit_16(146);
+emit_16(213);
+emit_16(147);
+emit_16(213);
+emit_16(146);
+emit_16(213);
+emit_16(147);
+emit_16(214);
+emit_16(148);
+emit_16(214);
+emit_16(147);
+emit_16(214);
+emit_16(148);
+emit_16(215);
+emit_16(149);
+emit_16(215);
+emit_16(148);
+emit_16(215);
+emit_16(149);
+emit_16(216);
+emit_16(150);
+emit_16(216);
+emit_16(149);
+emit_16(216);
+emit_16(150);
+emit_16(217);
+emit_16(151);
+emit_16(217);
+emit_16(150);
+emit_16(217);
+emit_16(151);
+emit_16(218);
+emit_16(152);
+emit_16(218);
+emit_16(151);
+emit_16(218);
+emit_16(152);
+emit_16(219);
+emit_16(153);
+emit_16(219);
+emit_16(152);
+emit_16(219);
+emit_16(153);
+emit_16(220);
+emit_16(154);
+emit_16(220);
+emit_16(153);
+emit_16(220);
+emit_16(154);
+emit_16(221);
+emit_16(155);
+emit_16(221);
+emit_16(154);
+emit_16(221);
+emit_16(155);
+emit_16(222);
+emit_16(156);
+emit_16(222);
+emit_16(155);
+emit_16(222);
+emit_16(156);
+emit_16(223);
+emit_16(157);
+emit_16(223);
+emit_16(156);
+emit_16(223);
+emit_16(157);
+emit_16(224);
+emit_16(158);
+emit_16(224);
+emit_16(157);
+emit_16(224);
+emit_16(158);
+emit_16(225);
+emit_16(159);
+emit_16(225);
+emit_16(158);
+emit_16(225);
+emit_16(159);
+emit_16(226);
+emit_16(160);
+emit_16(226);
+emit_16(159);
+emit_16(226);
+emit_16(160);
+emit_16(227);
+emit_16(161);
+emit_16(227);
+emit_16(160);
+emit_16(227);
+emit_16(161);
+emit_16(228);
+emit_16(162);
+emit_16(228);
+emit_16(161);
+emit_16(228);
+emit_16(162);
+emit_16(229);
+emit_16(163);
+emit_16(229);
+emit_16(162);
+emit_16(229);
+emit_16(163);
+emit_16(230);
+emit_16(164);
+emit_16(230);
+emit_16(163);
+emit_16(230);
+emit_16(164);
+emit_16(231);
+emit_16(165);
+emit_16(231);
+emit_16(164);
+emit_16(231);
+emit_16(165);
+emit_16(232);
+emit_16(166);
+emit_16(232);
+emit_16(165);
+emit_16(232);
+emit_16(166);
+emit_16(233);
+emit_16(167);
+emit_16(233);
+emit_16(166);
+emit_16(233);
+emit_16(167);
+emit_16(234);
+emit_16(168);
+emit_16(234);
+emit_16(167);
+emit_16(234);
+emit_16(168);
+emit_16(235);
+emit_16(169);
+emit_16(235);
+emit_16(168);
+emit_16(235);
+emit_16(169);
+emit_16(236);
+emit_16(170);
+emit_16(236);
+emit_16(169);
+emit_16(236);
+emit_16(170);
+emit_16(237);
+emit_16(171);
+emit_16(237);
+emit_16(170);
+emit_16(237);
+emit_16(171);
+emit_16(238);
+emit_16(172);
+emit_16(238);
+emit_16(171);
+emit_16(238);
+emit_16(172);
+emit_16(239);
+emit_16(173);
+emit_16(239);
+emit_16(172);
+emit_16(239);
+emit_16(173);
+emit_16(240);
+emit_16(174);
+emit_16(240);
+emit_16(173);
+emit_16(240);
+emit_16(174);
+emit_16(241);
+emit_16(175);
+emit_16(241);
+emit_16(174);
+emit_16(241);
+emit_16(175);
+emit_16(242);
+emit_16(176);
+emit_16(242);
+emit_16(175);
+emit_16(242);
+emit_16(176);
+emit_16(243);
+emit_16(177);
+emit_16(243);
+emit_16(176);
+emit_16(243);
+emit_16(177);
+emit_16(244);
+emit_16(178);
+emit_16(244);
+emit_16(177);
+emit_16(244);
+emit_16(178);
+emit_16(245);
+emit_16(179);
+emit_16(245);
+emit_16(178);
+emit_16(245);
+emit_16(179);
+emit_16(246);
+emit_16(180);
+emit_16(246);
+emit_16(179);
+emit_16(246);
+emit_16(180);
+emit_16(247);
+emit_16(181);
+emit_16(247);
+emit_16(180);
+emit_16(247);
+emit_16(181);
+emit_16(248);
+emit_16(182);
+emit_16(248);
+emit_16(181);
+emit_16(248);
+emit_16(182);
+emit_16(249);
+emit_16(183);
+emit_16(249);
+emit_16(182);
+emit_16(249);
+emit_16(183);
+emit_16(250);
+emit_16(184);
+emit_16(250);
+emit_16(183);
+emit_16(250);
+emit_16(184);
+emit_16(251);
+emit_16(185);
+emit_16(251);
+emit_16(184);
+emit_16(251);
+emit_16(185);
+emit_16(252);
+emit_16(186);
+emit_16(252);
+emit_16(185);
+emit_16(252);
+emit_16(186);
+emit_16(253);
+emit_16(187);
+emit_16(253);
+emit_16(186);
+emit_16(253);
+emit_16(187);
+emit_16(254);
+emit_16(188);
+emit_16(254);
+emit_16(187);
+emit_16(254);
+emit_16(188);
+emit_16(255);
+emit_16(189);
+emit_16(255);
+emit_16(188);
+emit_16(255);
+emit_16(189);
+emit_16(256);
+emit_16(190);
+emit_16(256);
+emit_16(189);
+emit_16(256);
+emit_16(190);
+emit_16(257);
+emit_16(191);
+emit_16(257);
+emit_16(190);
+emit_16(257);
+emit_16(191);
+emit_16(258);
+emit_16(192);
+emit_16(258);
+emit_16(191);
+emit_16(258);
+emit_16(192);
+emit_16(259);
+emit_16(193);
+emit_16(259);
+emit_16(192);
+emit_16(259);
+emit_16(193);
+emit_16(260);
+emit_16(194);
+emit_16(260);
+emit_16(193);
+emit_16(260);
+emit_16(194);
+emit_16(261);
+emit_16(195);
+emit_16(261);
+emit_16(194);
+emit_16(261);
+emit_16(195);
+emit_16(262);
+emit_16(196);
+emit_16(262);
+emit_16(195);
+emit_16(262);
+emit_16(196);
+emit_16(263);
+emit_16(197);
+emit_16(263);
+emit_16(196);
+emit_16(264);
+emit_16(198);
+emit_16(265);
+emit_16(199);
+emit_16(265);
+emit_16(198);
+emit_16(265);
+emit_16(199);
+emit_16(266);
+emit_16(200);
+emit_16(266);
+emit_16(199);
+emit_16(266);
+emit_16(200);
+emit_16(267);
+emit_16(201);
+emit_16(267);
+emit_16(200);
+emit_16(267);
+emit_16(201);
+emit_16(268);
+emit_16(202);
+emit_16(268);
+emit_16(201);
+emit_16(268);
+emit_16(202);
+emit_16(269);
+emit_16(203);
+emit_16(269);
+emit_16(202);
+emit_16(269);
+emit_16(203);
+emit_16(270);
+emit_16(204);
+emit_16(270);
+emit_16(203);
+emit_16(270);
+emit_16(204);
+emit_16(271);
+emit_16(205);
+emit_16(271);
+emit_16(204);
+emit_16(271);
+emit_16(205);
+emit_16(272);
+emit_16(206);
+emit_16(272);
+emit_16(205);
+emit_16(272);
+emit_16(206);
+emit_16(273);
+emit_16(207);
+emit_16(273);
+emit_16(206);
+emit_16(273);
+emit_16(207);
+emit_16(274);
+emit_16(208);
+emit_16(274);
+emit_16(207);
+emit_16(274);
+emit_16(208);
+emit_16(275);
+emit_16(209);
+emit_16(275);
+emit_16(208);
+emit_16(275);
+emit_16(209);
+emit_16(276);
+emit_16(210);
+emit_16(276);
+emit_16(209);
+emit_16(276);
+emit_16(210);
+emit_16(277);
+emit_16(211);
+emit_16(277);
+emit_16(210);
+emit_16(277);
+emit_16(211);
+emit_16(278);
+emit_16(212);
+emit_16(278);
+emit_16(211);
+emit_16(278);
+emit_16(212);
+emit_16(279);
+emit_16(213);
+emit_16(279);
+emit_16(212);
+emit_16(279);
+emit_16(213);
+emit_16(280);
+emit_16(214);
+emit_16(280);
+emit_16(213);
+emit_16(280);
+emit_16(214);
+emit_16(281);
+emit_16(215);
+emit_16(281);
+emit_16(214);
+emit_16(281);
+emit_16(215);
+emit_16(282);
+emit_16(216);
+emit_16(282);
+emit_16(215);
+emit_16(282);
+emit_16(216);
+emit_16(283);
+emit_16(217);
+emit_16(283);
+emit_16(216);
+emit_16(283);
+emit_16(217);
+emit_16(284);
+emit_16(218);
+emit_16(284);
+emit_16(217);
+emit_16(284);
+emit_16(218);
+emit_16(285);
+emit_16(219);
+emit_16(285);
+emit_16(218);
+emit_16(285);
+emit_16(219);
+emit_16(286);
+emit_16(220);
+emit_16(286);
+emit_16(219);
+emit_16(286);
+emit_16(220);
+emit_16(287);
+emit_16(221);
+emit_16(287);
+emit_16(220);
+emit_16(287);
+emit_16(221);
+emit_16(288);
+emit_16(222);
+emit_16(288);
+emit_16(221);
+emit_16(288);
+emit_16(222);
+emit_16(289);
+emit_16(223);
+emit_16(289);
+emit_16(222);
+emit_16(289);
+emit_16(223);
+emit_16(290);
+emit_16(224);
+emit_16(290);
+emit_16(223);
+emit_16(290);
+emit_16(224);
+emit_16(291);
+emit_16(225);
+emit_16(291);
+emit_16(224);
+emit_16(291);
+emit_16(225);
+emit_16(292);
+emit_16(226);
+emit_16(292);
+emit_16(225);
+emit_16(292);
+emit_16(226);
+emit_16(293);
+emit_16(227);
+emit_16(293);
+emit_16(226);
+emit_16(293);
+emit_16(227);
+emit_16(294);
+emit_16(228);
+emit_16(294);
+emit_16(227);
+emit_16(294);
+emit_16(228);
+emit_16(295);
+emit_16(229);
+emit_16(295);
+emit_16(228);
+emit_16(295);
+emit_16(229);
+emit_16(296);
+emit_16(230);
+emit_16(296);
+emit_16(229);
+emit_16(296);
+emit_16(230);
+emit_16(297);
+emit_16(231);
+emit_16(297);
+emit_16(230);
+emit_16(297);
+emit_16(231);
+emit_16(298);
+emit_16(232);
+emit_16(298);
+emit_16(231);
+emit_16(298);
+emit_16(232);
+emit_16(299);
+emit_16(233);
+emit_16(299);
+emit_16(232);
+emit_16(299);
+emit_16(233);
+emit_16(300);
+emit_16(234);
+emit_16(300);
+emit_16(233);
+emit_16(300);
+emit_16(234);
+emit_16(301);
+emit_16(235);
+emit_16(301);
+emit_16(234);
+emit_16(301);
+emit_16(235);
+emit_16(302);
+emit_16(236);
+emit_16(302);
+emit_16(235);
+emit_16(302);
+emit_16(236);
+emit_16(303);
+emit_16(237);
+emit_16(303);
+emit_16(236);
+emit_16(303);
+emit_16(237);
+emit_16(304);
+emit_16(238);
+emit_16(304);
+emit_16(237);
+emit_16(304);
+emit_16(238);
+emit_16(305);
+emit_16(239);
+emit_16(305);
+emit_16(238);
+emit_16(305);
+emit_16(239);
+emit_16(306);
+emit_16(240);
+emit_16(306);
+emit_16(239);
+emit_16(306);
+emit_16(240);
+emit_16(307);
+emit_16(241);
+emit_16(307);
+emit_16(240);
+emit_16(307);
+emit_16(241);
+emit_16(308);
+emit_16(242);
+emit_16(308);
+emit_16(241);
+emit_16(308);
+emit_16(242);
+emit_16(309);
+emit_16(243);
+emit_16(309);
+emit_16(242);
+emit_16(309);
+emit_16(243);
+emit_16(310);
+emit_16(244);
+emit_16(310);
+emit_16(243);
+emit_16(310);
+emit_16(244);
+emit_16(311);
+emit_16(245);
+emit_16(311);
+emit_16(244);
+emit_16(311);
+emit_16(245);
+emit_16(312);
+emit_16(246);
+emit_16(312);
+emit_16(245);
+emit_16(312);
+emit_16(246);
+emit_16(313);
+emit_16(247);
+emit_16(313);
+emit_16(246);
+emit_16(313);
+emit_16(247);
+emit_16(314);
+emit_16(248);
+emit_16(314);
+emit_16(247);
+emit_16(314);
+emit_16(248);
+emit_16(315);
+emit_16(249);
+emit_16(315);
+emit_16(248);
+emit_16(315);
+emit_16(249);
+emit_16(316);
+emit_16(250);
+emit_16(316);
+emit_16(249);
+emit_16(316);
+emit_16(250);
+emit_16(317);
+emit_16(251);
+emit_16(317);
+emit_16(250);
+emit_16(317);
+emit_16(251);
+emit_16(318);
+emit_16(252);
+emit_16(318);
+emit_16(251);
+emit_16(318);
+emit_16(252);
+emit_16(319);
+emit_16(253);
+emit_16(319);
+emit_16(252);
+emit_16(319);
+emit_16(253);
+emit_16(320);
+emit_16(254);
+emit_16(320);
+emit_16(253);
+emit_16(320);
+emit_16(254);
+emit_16(321);
+emit_16(255);
+emit_16(321);
+emit_16(254);
+emit_16(321);
+emit_16(255);
+emit_16(322);
+emit_16(256);
+emit_16(322);
+emit_16(255);
+emit_16(322);
+emit_16(256);
+emit_16(323);
+emit_16(257);
+emit_16(323);
+emit_16(256);
+emit_16(323);
+emit_16(257);
+emit_16(324);
+emit_16(258);
+emit_16(324);
+emit_16(257);
+emit_16(324);
+emit_16(258);
+emit_16(325);
+emit_16(259);
+emit_16(325);
+emit_16(258);
+emit_16(325);
+emit_16(259);
+emit_16(326);
+emit_16(260);
+emit_16(326);
+emit_16(259);
+emit_16(326);
+emit_16(260);
+emit_16(327);
+emit_16(261);
+emit_16(327);
+emit_16(260);
+emit_16(327);
+emit_16(261);
+emit_16(328);
+emit_16(262);
+emit_16(328);
+emit_16(261);
+emit_16(328);
+emit_16(262);
+emit_16(329);
+emit_16(263);
+emit_16(329);
+emit_16(262);
+emit_16(330);
+emit_16(264);
+emit_16(331);
+emit_16(265);
+emit_16(331);
+emit_16(264);
+emit_16(331);
+emit_16(265);
+emit_16(332);
+emit_16(266);
+emit_16(332);
+emit_16(265);
+emit_16(332);
+emit_16(266);
+emit_16(333);
+emit_16(267);
+emit_16(333);
+emit_16(266);
+emit_16(333);
+emit_16(267);
+emit_16(334);
+emit_16(268);
+emit_16(334);
+emit_16(267);
+emit_16(334);
+emit_16(268);
+emit_16(335);
+emit_16(269);
+emit_16(335);
+emit_16(268);
+emit_16(335);
+emit_16(269);
+emit_16(336);
+emit_16(270);
+emit_16(336);
+emit_16(269);
+emit_16(336);
+emit_16(270);
+emit_16(337);
+emit_16(271);
+emit_16(337);
+emit_16(270);
+emit_16(337);
+emit_16(271);
+emit_16(338);
+emit_16(272);
+emit_16(338);
+emit_16(271);
+emit_16(338);
+emit_16(272);
+emit_16(339);
+emit_16(273);
+emit_16(339);
+emit_16(272);
+emit_16(339);
+emit_16(273);
+emit_16(340);
+emit_16(274);
+emit_16(340);
+emit_16(273);
+emit_16(340);
+emit_16(274);
+emit_16(341);
+emit_16(275);
+emit_16(341);
+emit_16(274);
+emit_16(341);
+emit_16(275);
+emit_16(342);
+emit_16(276);
+emit_16(342);
+emit_16(275);
+emit_16(342);
+emit_16(276);
+emit_16(343);
+emit_16(277);
+emit_16(343);
+emit_16(276);
+emit_16(343);
+emit_16(277);
+emit_16(344);
+emit_16(278);
+emit_16(344);
+emit_16(277);
+emit_16(344);
+emit_16(278);
+emit_16(345);
+emit_16(279);
+emit_16(345);
+emit_16(278);
+emit_16(345);
+emit_16(279);
+emit_16(346);
+emit_16(280);
+emit_16(346);
+emit_16(279);
+emit_16(346);
+emit_16(280);
+emit_16(347);
+emit_16(281);
+emit_16(347);
+emit_16(280);
+emit_16(347);
+emit_16(281);
+emit_16(348);
+emit_16(282);
+emit_16(348);
+emit_16(281);
+emit_16(348);
+emit_16(282);
+emit_16(349);
+emit_16(283);
+emit_16(349);
+emit_16(282);
+emit_16(349);
+emit_16(283);
+emit_16(350);
+emit_16(284);
+emit_16(350);
+emit_16(283);
+emit_16(350);
+emit_16(284);
+emit_16(351);
+emit_16(285);
+emit_16(351);
+emit_16(284);
+emit_16(351);
+emit_16(285);
+emit_16(352);
+emit_16(286);
+emit_16(352);
+emit_16(285);
+emit_16(352);
+emit_16(286);
+emit_16(353);
+emit_16(287);
+emit_16(353);
+emit_16(286);
+emit_16(353);
+emit_16(287);
+emit_16(354);
+emit_16(288);
+emit_16(354);
+emit_16(287);
+emit_16(354);
+emit_16(288);
+emit_16(355);
+emit_16(289);
+emit_16(355);
+emit_16(288);
+emit_16(355);
+emit_16(289);
+emit_16(356);
+emit_16(290);
+emit_16(356);
+emit_16(289);
+emit_16(356);
+emit_16(290);
+emit_16(357);
+emit_16(291);
+emit_16(357);
+emit_16(290);
+emit_16(357);
+emit_16(291);
+emit_16(358);
+emit_16(292);
+emit_16(358);
+emit_16(291);
+emit_16(358);
+emit_16(292);
+emit_16(359);
+emit_16(293);
+emit_16(359);
+emit_16(292);
+emit_16(359);
+emit_16(293);
+emit_16(360);
+emit_16(294);
+emit_16(360);
+emit_16(293);
+emit_16(360);
+emit_16(294);
+emit_16(361);
+emit_16(295);
+emit_16(361);
+emit_16(294);
+emit_16(361);
+emit_16(295);
+emit_16(362);
+emit_16(296);
+emit_16(362);
+emit_16(295);
+emit_16(362);
+emit_16(296);
+emit_16(363);
+emit_16(297);
+emit_16(363);
+emit_16(296);
+emit_16(363);
+emit_16(297);
+emit_16(364);
+emit_16(298);
+emit_16(364);
+emit_16(297);
+emit_16(364);
+emit_16(298);
+emit_16(365);
+emit_16(299);
+emit_16(365);
+emit_16(298);
+emit_16(365);
+emit_16(299);
+emit_16(366);
+emit_16(300);
+emit_16(366);
+emit_16(299);
+emit_16(366);
+emit_16(300);
+emit_16(367);
+emit_16(301);
+emit_16(367);
+emit_16(300);
+emit_16(367);
+emit_16(301);
+emit_16(368);
+emit_16(302);
+emit_16(368);
+emit_16(301);
+emit_16(368);
+emit_16(302);
+emit_16(369);
+emit_16(303);
+emit_16(369);
+emit_16(302);
+emit_16(369);
+emit_16(303);
+emit_16(370);
+emit_16(304);
+emit_16(370);
+emit_16(303);
+emit_16(370);
+emit_16(304);
+emit_16(371);
+emit_16(305);
+emit_16(371);
+emit_16(304);
+emit_16(371);
+emit_16(305);
+emit_16(372);
+emit_16(306);
+emit_16(372);
+emit_16(305);
+emit_16(372);
+emit_16(306);
+emit_16(373);
+emit_16(307);
+emit_16(373);
+emit_16(306);
+emit_16(373);
+emit_16(307);
+emit_16(374);
+emit_16(308);
+emit_16(374);
+emit_16(307);
+emit_16(374);
+emit_16(308);
+emit_16(375);
+emit_16(309);
+emit_16(375);
+emit_16(308);
+emit_16(375);
+emit_16(309);
+emit_16(376);
+emit_16(310);
+emit_16(376);
+emit_16(309);
+emit_16(376);
+emit_16(310);
+emit_16(377);
+emit_16(311);
+emit_16(377);
+emit_16(310);
+emit_16(377);
+emit_16(311);
+emit_16(378);
+emit_16(312);
+emit_16(378);
+emit_16(311);
+emit_16(378);
+emit_16(312);
+emit_16(379);
+emit_16(313);
+emit_16(379);
+emit_16(312);
+emit_16(379);
+emit_16(313);
+emit_16(380);
+emit_16(314);
+emit_16(380);
+emit_16(313);
+emit_16(380);
+emit_16(314);
+emit_16(381);
+emit_16(315);
+emit_16(381);
+emit_16(314);
+emit_16(381);
+emit_16(315);
+emit_16(382);
+emit_16(316);
+emit_16(382);
+emit_16(315);
+emit_16(382);
+emit_16(316);
+emit_16(383);
+emit_16(317);
+emit_16(383);
+emit_16(316);
+emit_16(383);
+emit_16(317);
+emit_16(384);
+emit_16(318);
+emit_16(384);
+emit_16(317);
+emit_16(384);
+emit_16(318);
+emit_16(385);
+emit_16(319);
+emit_16(385);
+emit_16(318);
+emit_16(385);
+emit_16(319);
+emit_16(386);
+emit_16(320);
+emit_16(386);
+emit_16(319);
+emit_16(386);
+emit_16(320);
+emit_16(387);
+emit_16(321);
+emit_16(387);
+emit_16(320);
+emit_16(387);
+emit_16(321);
+emit_16(388);
+emit_16(322);
+emit_16(388);
+emit_16(321);
+emit_16(388);
+emit_16(322);
+emit_16(389);
+emit_16(323);
+emit_16(389);
+emit_16(322);
+emit_16(389);
+emit_16(323);
+emit_16(390);
+emit_16(324);
+emit_16(390);
+emit_16(323);
+emit_16(390);
+emit_16(324);
+emit_16(391);
+emit_16(325);
+emit_16(391);
+emit_16(324);
+emit_16(391);
+emit_16(325);
+emit_16(392);
+emit_16(326);
+emit_16(392);
+emit_16(325);
+emit_16(392);
+emit_16(326);
+emit_16(393);
+emit_16(327);
+emit_16(393);
+emit_16(326);
+emit_16(393);
+emit_16(327);
+emit_16(394);
+emit_16(328);
+emit_16(394);
+emit_16(327);
+emit_16(394);
+emit_16(328);
+emit_16(395);
+emit_16(329);
+emit_16(395);
+emit_16(328);
+emit_16(396);
+emit_16(330);
+emit_16(397);
+emit_16(331);
+emit_16(397);
+emit_16(330);
+emit_16(397);
+emit_16(331);
+emit_16(398);
+emit_16(332);
+emit_16(398);
+emit_16(331);
+emit_16(398);
+emit_16(332);
+emit_16(399);
+emit_16(333);
+emit_16(399);
+emit_16(332);
+emit_16(399);
+emit_16(333);
+emit_16(400);
+emit_16(334);
+emit_16(400);
+emit_16(333);
+emit_16(400);
+emit_16(334);
+emit_16(401);
+emit_16(335);
+emit_16(401);
+emit_16(334);
+emit_16(401);
+emit_16(335);
+emit_16(402);
+emit_16(336);
+emit_16(402);
+emit_16(335);
+emit_16(402);
+emit_16(336);
+emit_16(403);
+emit_16(337);
+emit_16(403);
+emit_16(336);
+emit_16(403);
+emit_16(337);
+emit_16(404);
+emit_16(338);
+emit_16(404);
+emit_16(337);
+emit_16(404);
+emit_16(338);
+emit_16(405);
+emit_16(339);
+emit_16(405);
+emit_16(338);
+emit_16(405);
+emit_16(339);
+emit_16(406);
+emit_16(340);
+emit_16(406);
+emit_16(339);
+emit_16(406);
+emit_16(340);
+emit_16(407);
+emit_16(341);
+emit_16(407);
+emit_16(340);
+emit_16(407);
+emit_16(341);
+emit_16(408);
+emit_16(342);
+emit_16(408);
+emit_16(341);
+emit_16(408);
+emit_16(342);
+emit_16(409);
+emit_16(343);
+emit_16(409);
+emit_16(342);
+emit_16(409);
+emit_16(343);
+emit_16(410);
+emit_16(344);
+emit_16(410);
+emit_16(343);
+emit_16(410);
+emit_16(344);
+emit_16(411);
+emit_16(345);
+emit_16(411);
+emit_16(344);
+emit_16(411);
+emit_16(345);
+emit_16(412);
+emit_16(346);
+emit_16(412);
+emit_16(345);
+emit_16(412);
+emit_16(346);
+emit_16(413);
+emit_16(347);
+emit_16(413);
+emit_16(346);
+emit_16(413);
+emit_16(347);
+emit_16(414);
+emit_16(348);
+emit_16(414);
+emit_16(347);
+emit_16(414);
+emit_16(348);
+emit_16(415);
+emit_16(349);
+emit_16(415);
+emit_16(348);
+emit_16(415);
+emit_16(349);
+emit_16(416);
+emit_16(350);
+emit_16(416);
+emit_16(349);
+emit_16(416);
+emit_16(350);
+emit_16(417);
+emit_16(351);
+emit_16(417);
+emit_16(350);
+emit_16(417);
+emit_16(351);
+emit_16(418);
+emit_16(352);
+emit_16(418);
+emit_16(351);
+emit_16(418);
+emit_16(352);
+emit_16(419);
+emit_16(353);
+emit_16(419);
+emit_16(352);
+emit_16(419);
+emit_16(353);
+emit_16(420);
+emit_16(354);
+emit_16(420);
+emit_16(353);
+emit_16(420);
+emit_16(354);
+emit_16(421);
+emit_16(355);
+emit_16(421);
+emit_16(354);
+emit_16(421);
+emit_16(355);
+emit_16(422);
+emit_16(356);
+emit_16(422);
+emit_16(355);
+emit_16(422);
+emit_16(356);
+emit_16(423);
+emit_16(357);
+emit_16(423);
+emit_16(356);
+emit_16(423);
+emit_16(357);
+emit_16(424);
+emit_16(358);
+emit_16(424);
+emit_16(357);
+emit_16(424);
+emit_16(358);
+emit_16(425);
+emit_16(359);
+emit_16(425);
+emit_16(358);
+emit_16(425);
+emit_16(359);
+emit_16(426);
+emit_16(360);
+emit_16(426);
+emit_16(359);
+emit_16(426);
+emit_16(360);
+emit_16(427);
+emit_16(361);
+emit_16(427);
+emit_16(360);
+emit_16(427);
+emit_16(361);
+emit_16(428);
+emit_16(362);
+emit_16(428);
+emit_16(361);
+emit_16(428);
+emit_16(362);
+emit_16(429);
+emit_16(363);
+emit_16(429);
+emit_16(362);
+emit_16(429);
+emit_16(363);
+emit_16(430);
+emit_16(364);
+emit_16(430);
+emit_16(363);
+emit_16(430);
+emit_16(364);
+emit_16(431);
+emit_16(365);
+emit_16(431);
+emit_16(364);
+emit_16(431);
+emit_16(365);
+emit_16(432);
+emit_16(366);
+emit_16(432);
+emit_16(365);
+emit_16(432);
+emit_16(366);
+emit_16(433);
+emit_16(367);
+emit_16(433);
+emit_16(366);
+emit_16(433);
+emit_16(367);
+emit_16(434);
+emit_16(368);
+emit_16(434);
+emit_16(367);
+emit_16(434);
+emit_16(368);
+emit_16(435);
+emit_16(369);
+emit_16(435);
+emit_16(368);
+emit_16(435);
+emit_16(369);
+emit_16(436);
+emit_16(370);
+emit_16(436);
+emit_16(369);
+emit_16(436);
+emit_16(370);
+emit_16(437);
+emit_16(371);
+emit_16(437);
+emit_16(370);
+emit_16(437);
+emit_16(371);
+emit_16(438);
+emit_16(372);
+emit_16(438);
+emit_16(371);
+emit_16(438);
+emit_16(372);
+emit_16(439);
+emit_16(373);
+emit_16(439);
+emit_16(372);
+emit_16(439);
+emit_16(373);
+emit_16(440);
+emit_16(374);
+emit_16(440);
+emit_16(373);
+emit_16(440);
+emit_16(374);
+emit_16(441);
+emit_16(375);
+emit_16(441);
+emit_16(374);
+emit_16(441);
+emit_16(375);
+emit_16(442);
+emit_16(376);
+emit_16(442);
+emit_16(375);
+emit_16(442);
+emit_16(376);
+emit_16(443);
+emit_16(377);
+emit_16(443);
+emit_16(376);
+emit_16(443);
+emit_16(377);
+emit_16(444);
+emit_16(378);
+emit_16(444);
+emit_16(377);
+emit_16(444);
+emit_16(378);
+emit_16(445);
+emit_16(379);
+emit_16(445);
+emit_16(378);
+emit_16(445);
+emit_16(379);
+emit_16(446);
+emit_16(380);
+emit_16(446);
+emit_16(379);
+emit_16(446);
+emit_16(380);
+emit_16(447);
+emit_16(381);
+emit_16(447);
+emit_16(380);
+emit_16(447);
+emit_16(381);
+emit_16(448);
+emit_16(382);
+emit_16(448);
+emit_16(381);
+emit_16(448);
+emit_16(382);
+emit_16(449);
+emit_16(383);
+emit_16(449);
+emit_16(382);
+emit_16(449);
+emit_16(383);
+emit_16(450);
+emit_16(384);
+emit_16(450);
+emit_16(383);
+emit_16(450);
+emit_16(384);
+emit_16(451);
+emit_16(385);
+emit_16(451);
+emit_16(384);
+emit_16(451);
+emit_16(385);
+emit_16(452);
+emit_16(386);
+emit_16(452);
+emit_16(385);
+emit_16(452);
+emit_16(386);
+emit_16(453);
+emit_16(387);
+emit_16(453);
+emit_16(386);
+emit_16(453);
+emit_16(387);
+emit_16(454);
+emit_16(388);
+emit_16(454);
+emit_16(387);
+emit_16(454);
+emit_16(388);
+emit_16(455);
+emit_16(389);
+emit_16(455);
+emit_16(388);
+emit_16(455);
+emit_16(389);
+emit_16(456);
+emit_16(390);
+emit_16(456);
+emit_16(389);
+emit_16(456);
+emit_16(390);
+emit_16(457);
+emit_16(391);
+emit_16(457);
+emit_16(390);
+emit_16(457);
+emit_16(391);
+emit_16(458);
+emit_16(392);
+emit_16(458);
+emit_16(391);
+emit_16(458);
+emit_16(392);
+emit_16(459);
+emit_16(393);
+emit_16(459);
+emit_16(392);
+emit_16(459);
+emit_16(393);
+emit_16(460);
+emit_16(394);
+emit_16(460);
+emit_16(393);
+emit_16(460);
+emit_16(394);
+emit_16(461);
+emit_16(395);
+emit_16(461);
+emit_16(394);
+emit_16(462);
+emit_16(396);
+emit_16(463);
+emit_16(397);
+emit_16(463);
+emit_16(396);
+emit_16(463);
+emit_16(397);
+emit_16(464);
+emit_16(398);
+emit_16(464);
+emit_16(397);
+emit_16(464);
+emit_16(398);
+emit_16(465);
+emit_16(399);
+emit_16(465);
+emit_16(398);
+emit_16(465);
+emit_16(399);
+emit_16(466);
+emit_16(400);
+emit_16(466);
+emit_16(399);
+emit_16(466);
+emit_16(400);
+emit_16(467);
+emit_16(401);
+emit_16(467);
+emit_16(400);
+emit_16(467);
+emit_16(401);
+emit_16(468);
+emit_16(402);
+emit_16(468);
+emit_16(401);
+emit_16(468);
+emit_16(402);
+emit_16(469);
+emit_16(403);
+emit_16(469);
+emit_16(402);
+emit_16(469);
+emit_16(403);
+emit_16(470);
+emit_16(404);
+emit_16(470);
+emit_16(403);
+emit_16(470);
+emit_16(404);
+emit_16(471);
+emit_16(405);
+emit_16(471);
+emit_16(404);
+emit_16(471);
+emit_16(405);
+emit_16(472);
+emit_16(406);
+emit_16(472);
+emit_16(405);
+emit_16(472);
+emit_16(406);
+emit_16(473);
+emit_16(407);
+emit_16(473);
+emit_16(406);
+emit_16(473);
+emit_16(407);
+emit_16(474);
+emit_16(408);
+emit_16(474);
+emit_16(407);
+emit_16(474);
+emit_16(408);
+emit_16(475);
+emit_16(409);
+emit_16(475);
+emit_16(408);
+emit_16(475);
+emit_16(409);
+emit_16(476);
+emit_16(410);
+emit_16(476);
+emit_16(409);
+emit_16(476);
+emit_16(410);
+emit_16(477);
+emit_16(411);
+emit_16(477);
+emit_16(410);
+emit_16(477);
+emit_16(411);
+emit_16(478);
+emit_16(412);
+emit_16(478);
+emit_16(411);
+emit_16(478);
+emit_16(412);
+emit_16(479);
+emit_16(413);
+emit_16(479);
+emit_16(412);
+emit_16(479);
+emit_16(413);
+emit_16(480);
+emit_16(414);
+emit_16(480);
+emit_16(413);
+emit_16(480);
+emit_16(414);
+emit_16(481);
+emit_16(415);
+emit_16(481);
+emit_16(414);
+emit_16(481);
+emit_16(415);
+emit_16(482);
+emit_16(416);
+emit_16(482);
+emit_16(415);
+emit_16(482);
+emit_16(416);
+emit_16(483);
+emit_16(417);
+emit_16(483);
+emit_16(416);
+emit_16(483);
+emit_16(417);
+emit_16(484);
+emit_16(418);
+emit_16(484);
+emit_16(417);
+emit_16(484);
+emit_16(418);
+emit_16(485);
+emit_16(419);
+emit_16(485);
+emit_16(418);
+emit_16(485);
+emit_16(419);
+emit_16(486);
+emit_16(420);
+emit_16(486);
+emit_16(419);
+emit_16(486);
+emit_16(420);
+emit_16(487);
+emit_16(421);
+emit_16(487);
+emit_16(420);
+emit_16(487);
+emit_16(421);
+emit_16(488);
+emit_16(422);
+emit_16(488);
+emit_16(421);
+emit_16(488);
+emit_16(422);
+emit_16(489);
+emit_16(423);
+emit_16(489);
+emit_16(422);
+emit_16(489);
+emit_16(423);
+emit_16(490);
+emit_16(424);
+emit_16(490);
+emit_16(423);
+emit_16(490);
+emit_16(424);
+emit_16(491);
+emit_16(425);
+emit_16(491);
+emit_16(424);
+emit_16(491);
+emit_16(425);
+emit_16(492);
+emit_16(426);
+emit_16(492);
+emit_16(425);
+emit_16(492);
+emit_16(426);
+emit_16(493);
+emit_16(427);
+emit_16(493);
+emit_16(426);
+emit_16(493);
+emit_16(427);
+emit_16(494);
+emit_16(428);
+emit_16(494);
+emit_16(427);
+emit_16(494);
+emit_16(428);
+emit_16(495);
+emit_16(429);
+emit_16(495);
+emit_16(428);
+emit_16(495);
+emit_16(429);
+emit_16(496);
+emit_16(430);
+emit_16(496);
+emit_16(429);
+emit_16(496);
+emit_16(430);
+emit_16(497);
+emit_16(431);
+emit_16(497);
+emit_16(430);
+emit_16(497);
+emit_16(431);
+emit_16(498);
+emit_16(432);
+emit_16(498);
+emit_16(431);
+emit_16(498);
+emit_16(432);
+emit_16(499);
+emit_16(433);
+emit_16(499);
+emit_16(432);
+emit_16(499);
+emit_16(433);
+emit_16(500);
+emit_16(434);
+emit_16(500);
+emit_16(433);
+emit_16(500);
+emit_16(434);
+emit_16(501);
+emit_16(435);
+emit_16(501);
+emit_16(434);
+emit_16(501);
+emit_16(435);
+emit_16(502);
+emit_16(436);
+emit_16(502);
+emit_16(435);
+emit_16(502);
+emit_16(436);
+emit_16(503);
+emit_16(437);
+emit_16(503);
+emit_16(436);
+emit_16(503);
+emit_16(437);
+emit_16(504);
+emit_16(438);
+emit_16(504);
+emit_16(437);
+emit_16(504);
+emit_16(438);
+emit_16(505);
+emit_16(439);
+emit_16(505);
+emit_16(438);
+emit_16(505);
+emit_16(439);
+emit_16(506);
+emit_16(440);
+emit_16(506);
+emit_16(439);
+emit_16(506);
+emit_16(440);
+emit_16(507);
+emit_16(441);
+emit_16(507);
+emit_16(440);
+emit_16(507);
+emit_16(441);
+emit_16(508);
+emit_16(442);
+emit_16(508);
+emit_16(441);
+emit_16(508);
+emit_16(442);
+emit_16(509);
+emit_16(443);
+emit_16(509);
+emit_16(442);
+emit_16(509);
+emit_16(443);
+emit_16(510);
+emit_16(444);
+emit_16(510);
+emit_16(443);
+emit_16(510);
+emit_16(444);
+emit_16(511);
+emit_16(445);
+emit_16(511);
+emit_16(444);
+emit_16(511);
+emit_16(445);
+emit_16(512);
+emit_16(446);
+emit_16(512);
+emit_16(445);
+emit_16(512);
+emit_16(446);
+emit_16(513);
+emit_16(447);
+emit_16(513);
+emit_16(446);
+emit_16(513);
+emit_16(447);
+emit_16(514);
+emit_16(448);
+emit_16(514);
+emit_16(447);
+emit_16(514);
+emit_16(448);
+emit_16(515);
+emit_16(449);
+emit_16(515);
+emit_16(448);
+emit_16(515);
+emit_16(449);
+emit_16(516);
+emit_16(450);
+emit_16(516);
+emit_16(449);
+emit_16(516);
+emit_16(450);
+emit_16(517);
+emit_16(451);
+emit_16(517);
+emit_16(450);
+emit_16(517);
+emit_16(451);
+emit_16(518);
+emit_16(452);
+emit_16(518);
+emit_16(451);
+emit_16(518);
+emit_16(452);
+emit_16(519);
+emit_16(453);
+emit_16(519);
+emit_16(452);
+emit_16(519);
+emit_16(453);
+emit_16(520);
+emit_16(454);
+emit_16(520);
+emit_16(453);
+emit_16(520);
+emit_16(454);
+emit_16(521);
+emit_16(455);
+emit_16(521);
+emit_16(454);
+emit_16(521);
+emit_16(455);
+emit_16(522);
+emit_16(456);
+emit_16(522);
+emit_16(455);
+emit_16(522);
+emit_16(456);
+emit_16(523);
+emit_16(457);
+emit_16(523);
+emit_16(456);
+emit_16(523);
+emit_16(457);
+emit_16(524);
+emit_16(458);
+emit_16(524);
+emit_16(457);
+emit_16(524);
+emit_16(458);
+emit_16(525);
+emit_16(459);
+emit_16(525);
+emit_16(458);
+emit_16(525);
+emit_16(459);
+emit_16(526);
+emit_16(460);
+emit_16(526);
+emit_16(459);
+emit_16(526);
+emit_16(460);
+emit_16(527);
+emit_16(461);
+emit_16(527);
+emit_16(460);
+emit_16(528);
+emit_16(462);
+emit_16(529);
+emit_16(463);
+emit_16(529);
+emit_16(462);
+emit_16(529);
+emit_16(463);
+emit_16(530);
+emit_16(464);
+emit_16(530);
+emit_16(463);
+emit_16(530);
+emit_16(464);
+emit_16(531);
+emit_16(465);
+emit_16(531);
+emit_16(464);
+emit_16(531);
+emit_16(465);
+emit_16(532);
+emit_16(466);
+emit_16(532);
+emit_16(465);
+emit_16(532);
+emit_16(466);
+emit_16(533);
+emit_16(467);
+emit_16(533);
+emit_16(466);
+emit_16(533);
+emit_16(467);
+emit_16(534);
+emit_16(468);
+emit_16(534);
+emit_16(467);
+emit_16(534);
+emit_16(468);
+emit_16(535);
+emit_16(469);
+emit_16(535);
+emit_16(468);
+emit_16(535);
+emit_16(469);
+emit_16(536);
+emit_16(470);
+emit_16(536);
+emit_16(469);
+emit_16(536);
+emit_16(470);
+emit_16(537);
+emit_16(471);
+emit_16(537);
+emit_16(470);
+emit_16(537);
+emit_16(471);
+emit_16(538);
+emit_16(472);
+emit_16(538);
+emit_16(471);
+emit_16(538);
+emit_16(472);
+emit_16(539);
+emit_16(473);
+emit_16(539);
+emit_16(472);
+emit_16(539);
+emit_16(473);
+emit_16(540);
+emit_16(474);
+emit_16(540);
+emit_16(473);
+emit_16(540);
+emit_16(474);
+emit_16(541);
+emit_16(475);
+emit_16(541);
+emit_16(474);
+emit_16(541);
+emit_16(475);
+emit_16(542);
+emit_16(476);
+emit_16(542);
+emit_16(475);
+emit_16(542);
+emit_16(476);
+emit_16(543);
+emit_16(477);
+emit_16(543);
+emit_16(476);
+emit_16(543);
+emit_16(477);
+emit_16(544);
+emit_16(478);
+emit_16(544);
+emit_16(477);
+emit_16(544);
+emit_16(478);
+emit_16(545);
+emit_16(479);
+emit_16(545);
+emit_16(478);
+emit_16(545);
+emit_16(479);
+emit_16(546);
+emit_16(480);
+emit_16(546);
+emit_16(479);
+emit_16(546);
+emit_16(480);
+emit_16(547);
+emit_16(481);
+emit_16(547);
+emit_16(480);
+emit_16(547);
+emit_16(481);
+emit_16(548);
+emit_16(482);
+emit_16(548);
+emit_16(481);
+emit_16(548);
+emit_16(482);
+emit_16(549);
+emit_16(483);
+emit_16(549);
+emit_16(482);
+emit_16(549);
+emit_16(483);
+emit_16(550);
+emit_16(484);
+emit_16(550);
+emit_16(483);
+emit_16(550);
+emit_16(484);
+emit_16(551);
+emit_16(485);
+emit_16(551);
+emit_16(484);
+emit_16(551);
+emit_16(485);
+emit_16(552);
+emit_16(486);
+emit_16(552);
+emit_16(485);
+emit_16(552);
+emit_16(486);
+emit_16(553);
+emit_16(487);
+emit_16(553);
+emit_16(486);
+emit_16(553);
+emit_16(487);
+emit_16(554);
+emit_16(488);
+emit_16(554);
+emit_16(487);
+emit_16(554);
+emit_16(488);
+emit_16(555);
+emit_16(489);
+emit_16(555);
+emit_16(488);
+emit_16(555);
+emit_16(489);
+emit_16(556);
+emit_16(490);
+emit_16(556);
+emit_16(489);
+emit_16(556);
+emit_16(490);
+emit_16(557);
+emit_16(491);
+emit_16(557);
+emit_16(490);
+emit_16(557);
+emit_16(491);
+emit_16(558);
+emit_16(492);
+emit_16(558);
+emit_16(491);
+emit_16(558);
+emit_16(492);
+emit_16(559);
+emit_16(493);
+emit_16(559);
+emit_16(492);
+emit_16(559);
+emit_16(493);
+emit_16(560);
+emit_16(494);
+emit_16(560);
+emit_16(493);
+emit_16(560);
+emit_16(494);
+emit_16(561);
+emit_16(495);
+emit_16(561);
+emit_16(494);
+emit_16(561);
+emit_16(495);
+emit_16(562);
+emit_16(496);
+emit_16(562);
+emit_16(495);
+emit_16(562);
+emit_16(496);
+emit_16(563);
+emit_16(497);
+emit_16(563);
+emit_16(496);
+emit_16(563);
+emit_16(497);
+emit_16(564);
+emit_16(498);
+emit_16(564);
+emit_16(497);
+emit_16(564);
+emit_16(498);
+emit_16(565);
+emit_16(499);
+emit_16(565);
+emit_16(498);
+emit_16(565);
+emit_16(499);
+emit_16(566);
+emit_16(500);
+emit_16(566);
+emit_16(499);
+emit_16(566);
+emit_16(500);
+emit_16(567);
+emit_16(501);
+emit_16(567);
+emit_16(500);
+emit_16(567);
+emit_16(501);
+emit_16(568);
+emit_16(502);
+emit_16(568);
+emit_16(501);
+emit_16(568);
+emit_16(502);
+emit_16(569);
+emit_16(503);
+emit_16(569);
+emit_16(502);
+emit_16(569);
+emit_16(503);
+emit_16(570);
+emit_16(504);
+emit_16(570);
+emit_16(503);
+emit_16(570);
+emit_16(504);
+emit_16(571);
+emit_16(505);
+emit_16(571);
+emit_16(504);
+emit_16(571);
+emit_16(505);
+emit_16(572);
+emit_16(506);
+emit_16(572);
+emit_16(505);
+emit_16(572);
+emit_16(506);
+emit_16(573);
+emit_16(507);
+emit_16(573);
+emit_16(506);
+emit_16(573);
+emit_16(507);
+emit_16(574);
+emit_16(508);
+emit_16(574);
+emit_16(507);
+emit_16(574);
+emit_16(508);
+emit_16(575);
+emit_16(509);
+emit_16(575);
+emit_16(508);
+emit_16(575);
+emit_16(509);
+emit_16(576);
+emit_16(510);
+emit_16(576);
+emit_16(509);
+emit_16(576);
+emit_16(510);
+emit_16(577);
+emit_16(511);
+emit_16(577);
+emit_16(510);
+emit_16(577);
+emit_16(511);
+emit_16(578);
+emit_16(512);
+emit_16(578);
+emit_16(511);
+emit_16(578);
+emit_16(512);
+emit_16(579);
+emit_16(513);
+emit_16(579);
+emit_16(512);
+emit_16(579);
+emit_16(513);
+emit_16(580);
+emit_16(514);
+emit_16(580);
+emit_16(513);
+emit_16(580);
+emit_16(514);
+emit_16(581);
+emit_16(515);
+emit_16(581);
+emit_16(514);
+emit_16(581);
+emit_16(515);
+emit_16(582);
+emit_16(516);
+emit_16(582);
+emit_16(515);
+emit_16(582);
+emit_16(516);
+emit_16(583);
+emit_16(517);
+emit_16(583);
+emit_16(516);
+emit_16(583);
+emit_16(517);
+emit_16(584);
+emit_16(518);
+emit_16(584);
+emit_16(517);
+emit_16(584);
+emit_16(518);
+emit_16(585);
+emit_16(519);
+emit_16(585);
+emit_16(518);
+emit_16(585);
+emit_16(519);
+emit_16(586);
+emit_16(520);
+emit_16(586);
+emit_16(519);
+emit_16(586);
+emit_16(520);
+emit_16(587);
+emit_16(521);
+emit_16(587);
+emit_16(520);
+emit_16(587);
+emit_16(521);
+emit_16(588);
+emit_16(522);
+emit_16(588);
+emit_16(521);
+emit_16(588);
+emit_16(522);
+emit_16(589);
+emit_16(523);
+emit_16(589);
+emit_16(522);
+emit_16(589);
+emit_16(523);
+emit_16(590);
+emit_16(524);
+emit_16(590);
+emit_16(523);
+emit_16(590);
+emit_16(524);
+emit_16(591);
+emit_16(525);
+emit_16(591);
+emit_16(524);
+emit_16(591);
+emit_16(525);
+emit_16(592);
+emit_16(526);
+emit_16(592);
+emit_16(525);
+emit_16(592);
+emit_16(526);
+emit_16(593);
+emit_16(527);
+emit_16(593);
+emit_16(526);
+emit_16(594);
+emit_16(528);
+emit_16(595);
+emit_16(529);
+emit_16(595);
+emit_16(528);
+emit_16(595);
+emit_16(529);
+emit_16(596);
+emit_16(530);
+emit_16(596);
+emit_16(529);
+emit_16(596);
+emit_16(530);
+emit_16(597);
+emit_16(531);
+emit_16(597);
+emit_16(530);
+emit_16(597);
+emit_16(531);
+emit_16(598);
+emit_16(532);
+emit_16(598);
+emit_16(531);
+emit_16(598);
+emit_16(532);
+emit_16(599);
+emit_16(533);
+emit_16(599);
+emit_16(532);
+emit_16(599);
+emit_16(533);
+emit_16(600);
+emit_16(534);
+emit_16(600);
+emit_16(533);
+emit_16(600);
+emit_16(534);
+emit_16(601);
+emit_16(535);
+emit_16(601);
+emit_16(534);
+emit_16(601);
+emit_16(535);
+emit_16(602);
+emit_16(536);
+emit_16(602);
+emit_16(535);
+emit_16(602);
+emit_16(536);
+emit_16(603);
+emit_16(537);
+emit_16(603);
+emit_16(536);
+emit_16(603);
+emit_16(537);
+emit_16(604);
+emit_16(538);
+emit_16(604);
+emit_16(537);
+emit_16(604);
+emit_16(538);
+emit_16(605);
+emit_16(539);
+emit_16(605);
+emit_16(538);
+emit_16(605);
+emit_16(539);
+emit_16(606);
+emit_16(540);
+emit_16(606);
+emit_16(539);
+emit_16(606);
+emit_16(540);
+emit_16(607);
+emit_16(541);
+emit_16(607);
+emit_16(540);
+emit_16(607);
+emit_16(541);
+emit_16(608);
+emit_16(542);
+emit_16(608);
+emit_16(541);
+emit_16(608);
+emit_16(542);
+emit_16(609);
+emit_16(543);
+emit_16(609);
+emit_16(542);
+emit_16(609);
+emit_16(543);
+emit_16(610);
+emit_16(544);
+emit_16(610);
+emit_16(543);
+emit_16(610);
+emit_16(544);
+emit_16(611);
+emit_16(545);
+emit_16(611);
+emit_16(544);
+emit_16(611);
+emit_16(545);
+emit_16(612);
+emit_16(546);
+emit_16(612);
+emit_16(545);
+emit_16(612);
+emit_16(546);
+emit_16(613);
+emit_16(547);
+emit_16(613);
+emit_16(546);
+emit_16(613);
+emit_16(547);
+emit_16(614);
+emit_16(548);
+emit_16(614);
+emit_16(547);
+emit_16(614);
+emit_16(548);
+emit_16(615);
+emit_16(549);
+emit_16(615);
+emit_16(548);
+emit_16(615);
+emit_16(549);
+emit_16(616);
+emit_16(550);
+emit_16(616);
+emit_16(549);
+emit_16(616);
+emit_16(550);
+emit_16(617);
+emit_16(551);
+emit_16(617);
+emit_16(550);
+emit_16(617);
+emit_16(551);
+emit_16(618);
+emit_16(552);
+emit_16(618);
+emit_16(551);
+emit_16(618);
+emit_16(552);
+emit_16(619);
+emit_16(553);
+emit_16(619);
+emit_16(552);
+emit_16(619);
+emit_16(553);
+emit_16(620);
+emit_16(554);
+emit_16(620);
+emit_16(553);
+emit_16(620);
+emit_16(554);
+emit_16(621);
+emit_16(555);
+emit_16(621);
+emit_16(554);
+emit_16(621);
+emit_16(555);
+emit_16(622);
+emit_16(556);
+emit_16(622);
+emit_16(555);
+emit_16(622);
+emit_16(556);
+emit_16(623);
+emit_16(557);
+emit_16(623);
+emit_16(556);
+emit_16(623);
+emit_16(557);
+emit_16(624);
+emit_16(558);
+emit_16(624);
+emit_16(557);
+emit_16(624);
+emit_16(558);
+emit_16(625);
+emit_16(559);
+emit_16(625);
+emit_16(558);
+emit_16(625);
+emit_16(559);
+emit_16(626);
+emit_16(560);
+emit_16(626);
+emit_16(559);
+emit_16(626);
+emit_16(560);
+emit_16(627);
+emit_16(561);
+emit_16(627);
+emit_16(560);
+emit_16(627);
+emit_16(561);
+emit_16(628);
+emit_16(562);
+emit_16(628);
+emit_16(561);
+emit_16(628);
+emit_16(562);
+emit_16(629);
+emit_16(563);
+emit_16(629);
+emit_16(562);
+emit_16(629);
+emit_16(563);
+emit_16(630);
+emit_16(564);
+emit_16(630);
+emit_16(563);
+emit_16(630);
+emit_16(564);
+emit_16(631);
+emit_16(565);
+emit_16(631);
+emit_16(564);
+emit_16(631);
+emit_16(565);
+emit_16(632);
+emit_16(566);
+emit_16(632);
+emit_16(565);
+emit_16(632);
+emit_16(566);
+emit_16(633);
+emit_16(567);
+emit_16(633);
+emit_16(566);
+emit_16(633);
+emit_16(567);
+emit_16(634);
+emit_16(568);
+emit_16(634);
+emit_16(567);
+emit_16(634);
+emit_16(568);
+emit_16(635);
+emit_16(569);
+emit_16(635);
+emit_16(568);
+emit_16(635);
+emit_16(569);
+emit_16(636);
+emit_16(570);
+emit_16(636);
+emit_16(569);
+emit_16(636);
+emit_16(570);
+emit_16(637);
+emit_16(571);
+emit_16(637);
+emit_16(570);
+emit_16(637);
+emit_16(571);
+emit_16(638);
+emit_16(572);
+emit_16(638);
+emit_16(571);
+emit_16(638);
+emit_16(572);
+emit_16(639);
+emit_16(573);
+emit_16(639);
+emit_16(572);
+emit_16(639);
+emit_16(573);
+emit_16(640);
+emit_16(574);
+emit_16(640);
+emit_16(573);
+emit_16(640);
+emit_16(574);
+emit_16(641);
+emit_16(575);
+emit_16(641);
+emit_16(574);
+emit_16(641);
+emit_16(575);
+emit_16(642);
+emit_16(576);
+emit_16(642);
+emit_16(575);
+emit_16(642);
+emit_16(576);
+emit_16(643);
+emit_16(577);
+emit_16(643);
+emit_16(576);
+emit_16(643);
+emit_16(577);
+emit_16(644);
+emit_16(578);
+emit_16(644);
+emit_16(577);
+emit_16(644);
+emit_16(578);
+emit_16(645);
+emit_16(579);
+emit_16(645);
+emit_16(578);
+emit_16(645);
+emit_16(579);
+emit_16(646);
+emit_16(580);
+emit_16(646);
+emit_16(579);
+emit_16(646);
+emit_16(580);
+emit_16(647);
+emit_16(581);
+emit_16(647);
+emit_16(580);
+emit_16(647);
+emit_16(581);
+emit_16(648);
+emit_16(582);
+emit_16(648);
+emit_16(581);
+emit_16(648);
+emit_16(582);
+emit_16(649);
+emit_16(583);
+emit_16(649);
+emit_16(582);
+emit_16(649);
+emit_16(583);
+emit_16(650);
+emit_16(584);
+emit_16(650);
+emit_16(583);
+emit_16(650);
+emit_16(584);
+emit_16(651);
+emit_16(585);
+emit_16(651);
+emit_16(584);
+emit_16(651);
+emit_16(585);
+emit_16(652);
+emit_16(586);
+emit_16(652);
+emit_16(585);
+emit_16(652);
+emit_16(586);
+emit_16(653);
+emit_16(587);
+emit_16(653);
+emit_16(586);
+emit_16(653);
+emit_16(587);
+emit_16(654);
+emit_16(588);
+emit_16(654);
+emit_16(587);
+emit_16(654);
+emit_16(588);
+emit_16(655);
+emit_16(589);
+emit_16(655);
+emit_16(588);
+emit_16(655);
+emit_16(589);
+emit_16(656);
+emit_16(590);
+emit_16(656);
+emit_16(589);
+emit_16(656);
+emit_16(590);
+emit_16(657);
+emit_16(591);
+emit_16(657);
+emit_16(590);
+emit_16(657);
+emit_16(591);
+emit_16(658);
+emit_16(592);
+emit_16(658);
+emit_16(591);
+emit_16(658);
+emit_16(592);
+emit_16(659);
+emit_16(593);
+emit_16(659);
+emit_16(592);
+emit_16(660);
+emit_16(594);
+emit_16(661);
+emit_16(595);
+emit_16(661);
+emit_16(594);
+emit_16(661);
+emit_16(595);
+emit_16(662);
+emit_16(596);
+emit_16(662);
+emit_16(595);
+emit_16(662);
+emit_16(596);
+emit_16(663);
+emit_16(597);
+emit_16(663);
+emit_16(596);
+emit_16(663);
+emit_16(597);
+emit_16(664);
+emit_16(598);
+emit_16(664);
+emit_16(597);
+emit_16(664);
+emit_16(598);
+emit_16(665);
+emit_16(599);
+emit_16(665);
+emit_16(598);
+emit_16(665);
+emit_16(599);
+emit_16(666);
+emit_16(600);
+emit_16(666);
+emit_16(599);
+emit_16(666);
+emit_16(600);
+emit_16(667);
+emit_16(601);
+emit_16(667);
+emit_16(600);
+emit_16(667);
+emit_16(601);
+emit_16(668);
+emit_16(602);
+emit_16(668);
+emit_16(601);
+emit_16(668);
+emit_16(602);
+emit_16(669);
+emit_16(603);
+emit_16(669);
+emit_16(602);
+emit_16(669);
+emit_16(603);
+emit_16(670);
+emit_16(604);
+emit_16(670);
+emit_16(603);
+emit_16(670);
+emit_16(604);
+emit_16(671);
+emit_16(605);
+emit_16(671);
+emit_16(604);
+emit_16(671);
+emit_16(605);
+emit_16(672);
+emit_16(606);
+emit_16(672);
+emit_16(605);
+emit_16(672);
+emit_16(606);
+emit_16(673);
+emit_16(607);
+emit_16(673);
+emit_16(606);
+emit_16(673);
+emit_16(607);
+emit_16(674);
+emit_16(608);
+emit_16(674);
+emit_16(607);
+emit_16(674);
+emit_16(608);
+emit_16(675);
+emit_16(609);
+emit_16(675);
+emit_16(608);
+emit_16(675);
+emit_16(609);
+emit_16(676);
+emit_16(610);
+emit_16(676);
+emit_16(609);
+emit_16(676);
+emit_16(610);
+emit_16(677);
+emit_16(611);
+emit_16(677);
+emit_16(610);
+emit_16(677);
+emit_16(611);
+emit_16(678);
+emit_16(612);
+emit_16(678);
+emit_16(611);
+emit_16(678);
+emit_16(612);
+emit_16(679);
+emit_16(613);
+emit_16(679);
+emit_16(612);
+emit_16(679);
+emit_16(613);
+emit_16(680);
+emit_16(614);
+emit_16(680);
+emit_16(613);
+emit_16(680);
+emit_16(614);
+emit_16(681);
+emit_16(615);
+emit_16(681);
+emit_16(614);
+emit_16(681);
+emit_16(615);
+emit_16(682);
+emit_16(616);
+emit_16(682);
+emit_16(615);
+emit_16(682);
+emit_16(616);
+emit_16(683);
+emit_16(617);
+emit_16(683);
+emit_16(616);
+emit_16(683);
+emit_16(617);
+emit_16(684);
+emit_16(618);
+emit_16(684);
+emit_16(617);
+emit_16(684);
+emit_16(618);
+emit_16(685);
+emit_16(619);
+emit_16(685);
+emit_16(618);
+emit_16(685);
+emit_16(619);
+emit_16(686);
+emit_16(620);
+emit_16(686);
+emit_16(619);
+emit_16(686);
+emit_16(620);
+emit_16(687);
+emit_16(621);
+emit_16(687);
+emit_16(620);
+emit_16(687);
+emit_16(621);
+emit_16(688);
+emit_16(622);
+emit_16(688);
+emit_16(621);
+emit_16(688);
+emit_16(622);
+emit_16(689);
+emit_16(623);
+emit_16(689);
+emit_16(622);
+emit_16(689);
+emit_16(623);
+emit_16(690);
+emit_16(624);
+emit_16(690);
+emit_16(623);
+emit_16(690);
+emit_16(624);
+emit_16(691);
+emit_16(625);
+emit_16(691);
+emit_16(624);
+emit_16(691);
+emit_16(625);
+emit_16(692);
+emit_16(626);
+emit_16(692);
+emit_16(625);
+emit_16(692);
+emit_16(626);
+emit_16(693);
+emit_16(627);
+emit_16(693);
+emit_16(626);
+emit_16(693);
+emit_16(627);
+emit_16(694);
+emit_16(628);
+emit_16(694);
+emit_16(627);
+emit_16(694);
+emit_16(628);
+emit_16(695);
+emit_16(629);
+emit_16(695);
+emit_16(628);
+emit_16(695);
+emit_16(629);
+emit_16(696);
+emit_16(630);
+emit_16(696);
+emit_16(629);
+emit_16(696);
+emit_16(630);
+emit_16(697);
+emit_16(631);
+emit_16(697);
+emit_16(630);
+emit_16(697);
+emit_16(631);
+emit_16(698);
+emit_16(632);
+emit_16(698);
+emit_16(631);
+emit_16(698);
+emit_16(632);
+emit_16(699);
+emit_16(633);
+emit_16(699);
+emit_16(632);
+emit_16(699);
+emit_16(633);
+emit_16(700);
+emit_16(634);
+emit_16(700);
+emit_16(633);
+emit_16(700);
+emit_16(634);
+emit_16(701);
+emit_16(635);
+emit_16(701);
+emit_16(634);
+emit_16(701);
+emit_16(635);
+emit_16(702);
+emit_16(636);
+emit_16(702);
+emit_16(635);
+emit_16(702);
+emit_16(636);
+emit_16(703);
+emit_16(637);
+emit_16(703);
+emit_16(636);
+emit_16(703);
+emit_16(637);
+emit_16(704);
+emit_16(638);
+emit_16(704);
+emit_16(637);
+emit_16(704);
+emit_16(638);
+emit_16(705);
+emit_16(639);
+emit_16(705);
+emit_16(638);
+emit_16(705);
+emit_16(639);
+emit_16(706);
+emit_16(640);
+emit_16(706);
+emit_16(639);
+emit_16(706);
+emit_16(640);
+emit_16(707);
+emit_16(641);
+emit_16(707);
+emit_16(640);
+emit_16(707);
+emit_16(641);
+emit_16(708);
+emit_16(642);
+emit_16(708);
+emit_16(641);
+emit_16(708);
+emit_16(642);
+emit_16(709);
+emit_16(643);
+emit_16(709);
+emit_16(642);
+emit_16(709);
+emit_16(643);
+emit_16(710);
+emit_16(644);
+emit_16(710);
+emit_16(643);
+emit_16(710);
+emit_16(644);
+emit_16(711);
+emit_16(645);
+emit_16(711);
+emit_16(644);
+emit_16(711);
+emit_16(645);
+emit_16(712);
+emit_16(646);
+emit_16(712);
+emit_16(645);
+emit_16(712);
+emit_16(646);
+emit_16(713);
+emit_16(647);
+emit_16(713);
+emit_16(646);
+emit_16(713);
+emit_16(647);
+emit_16(714);
+emit_16(648);
+emit_16(714);
+emit_16(647);
+emit_16(714);
+emit_16(648);
+emit_16(715);
+emit_16(649);
+emit_16(715);
+emit_16(648);
+emit_16(715);
+emit_16(649);
+emit_16(716);
+emit_16(650);
+emit_16(716);
+emit_16(649);
+emit_16(716);
+emit_16(650);
+emit_16(717);
+emit_16(651);
+emit_16(717);
+emit_16(650);
+emit_16(717);
+emit_16(651);
+emit_16(718);
+emit_16(652);
+emit_16(718);
+emit_16(651);
+emit_16(718);
+emit_16(652);
+emit_16(719);
+emit_16(653);
+emit_16(719);
+emit_16(652);
+emit_16(719);
+emit_16(653);
+emit_16(720);
+emit_16(654);
+emit_16(720);
+emit_16(653);
+emit_16(720);
+emit_16(654);
+emit_16(721);
+emit_16(655);
+emit_16(721);
+emit_16(654);
+emit_16(721);
+emit_16(655);
+emit_16(722);
+emit_16(656);
+emit_16(722);
+emit_16(655);
+emit_16(722);
+emit_16(656);
+emit_16(723);
+emit_16(657);
+emit_16(723);
+emit_16(656);
+emit_16(723);
+emit_16(657);
+emit_16(724);
+emit_16(658);
+emit_16(724);
+emit_16(657);
+emit_16(724);
+emit_16(658);
+emit_16(725);
+emit_16(659);
+emit_16(725);
+emit_16(658);
+emit_16(726);
+emit_16(660);
+emit_16(727);
+emit_16(661);
+emit_16(727);
+emit_16(660);
+emit_16(727);
+emit_16(661);
+emit_16(728);
+emit_16(662);
+emit_16(728);
+emit_16(661);
+emit_16(728);
+emit_16(662);
+emit_16(729);
+emit_16(663);
+emit_16(729);
+emit_16(662);
+emit_16(729);
+emit_16(663);
+emit_16(730);
+emit_16(664);
+emit_16(730);
+emit_16(663);
+emit_16(730);
+emit_16(664);
+emit_16(731);
+emit_16(665);
+emit_16(731);
+emit_16(664);
+emit_16(731);
+emit_16(665);
+emit_16(732);
+emit_16(666);
+emit_16(732);
+emit_16(665);
+emit_16(732);
+emit_16(666);
+emit_16(733);
+emit_16(667);
+emit_16(733);
+emit_16(666);
+emit_16(733);
+emit_16(667);
+emit_16(734);
+emit_16(668);
+emit_16(734);
+emit_16(667);
+emit_16(734);
+emit_16(668);
+emit_16(735);
+emit_16(669);
+emit_16(735);
+emit_16(668);
+emit_16(735);
+emit_16(669);
+emit_16(736);
+emit_16(670);
+emit_16(736);
+emit_16(669);
+emit_16(736);
+emit_16(670);
+emit_16(737);
+emit_16(671);
+emit_16(737);
+emit_16(670);
+emit_16(737);
+emit_16(671);
+emit_16(738);
+emit_16(672);
+emit_16(738);
+emit_16(671);
+emit_16(738);
+emit_16(672);
+emit_16(739);
+emit_16(673);
+emit_16(739);
+emit_16(672);
+emit_16(739);
+emit_16(673);
+emit_16(740);
+emit_16(674);
+emit_16(740);
+emit_16(673);
+emit_16(740);
+emit_16(674);
+emit_16(741);
+emit_16(675);
+emit_16(741);
+emit_16(674);
+emit_16(741);
+emit_16(675);
+emit_16(742);
+emit_16(676);
+emit_16(742);
+emit_16(675);
+emit_16(742);
+emit_16(676);
+emit_16(743);
+emit_16(677);
+emit_16(743);
+emit_16(676);
+emit_16(743);
+emit_16(677);
+emit_16(744);
+emit_16(678);
+emit_16(744);
+emit_16(677);
+emit_16(744);
+emit_16(678);
+emit_16(745);
+emit_16(679);
+emit_16(745);
+emit_16(678);
+emit_16(745);
+emit_16(679);
+emit_16(746);
+emit_16(680);
+emit_16(746);
+emit_16(679);
+emit_16(746);
+emit_16(680);
+emit_16(747);
+emit_16(681);
+emit_16(747);
+emit_16(680);
+emit_16(747);
+emit_16(681);
+emit_16(748);
+emit_16(682);
+emit_16(748);
+emit_16(681);
+emit_16(748);
+emit_16(682);
+emit_16(749);
+emit_16(683);
+emit_16(749);
+emit_16(682);
+emit_16(749);
+emit_16(683);
+emit_16(750);
+emit_16(684);
+emit_16(750);
+emit_16(683);
+emit_16(750);
+emit_16(684);
+emit_16(751);
+emit_16(685);
+emit_16(751);
+emit_16(684);
+emit_16(751);
+emit_16(685);
+emit_16(752);
+emit_16(686);
+emit_16(752);
+emit_16(685);
+emit_16(752);
+emit_16(686);
+emit_16(753);
+emit_16(687);
+emit_16(753);
+emit_16(686);
+emit_16(753);
+emit_16(687);
+emit_16(754);
+emit_16(688);
+emit_16(754);
+emit_16(687);
+emit_16(754);
+emit_16(688);
+emit_16(755);
+emit_16(689);
+emit_16(755);
+emit_16(688);
+emit_16(755);
+emit_16(689);
+emit_16(756);
+emit_16(690);
+emit_16(756);
+emit_16(689);
+emit_16(756);
+emit_16(690);
+emit_16(757);
+emit_16(691);
+emit_16(757);
+emit_16(690);
+emit_16(757);
+emit_16(691);
+emit_16(758);
+emit_16(692);
+emit_16(758);
+emit_16(691);
+emit_16(758);
+emit_16(692);
+emit_16(759);
+emit_16(693);
+emit_16(759);
+emit_16(692);
+emit_16(759);
+emit_16(693);
+emit_16(760);
+emit_16(694);
+emit_16(760);
+emit_16(693);
+emit_16(760);
+emit_16(694);
+emit_16(761);
+emit_16(695);
+emit_16(761);
+emit_16(694);
+emit_16(761);
+emit_16(695);
+emit_16(762);
+emit_16(696);
+emit_16(762);
+emit_16(695);
+emit_16(762);
+emit_16(696);
+emit_16(763);
+emit_16(697);
+emit_16(763);
+emit_16(696);
+emit_16(763);
+emit_16(697);
+emit_16(764);
+emit_16(698);
+emit_16(764);
+emit_16(697);
+emit_16(764);
+emit_16(698);
+emit_16(765);
+emit_16(699);
+emit_16(765);
+emit_16(698);
+emit_16(765);
+emit_16(699);
+emit_16(766);
+emit_16(700);
+emit_16(766);
+emit_16(699);
+emit_16(766);
+emit_16(700);
+emit_16(767);
+emit_16(701);
+emit_16(767);
+emit_16(700);
+emit_16(767);
+emit_16(701);
+emit_16(768);
+emit_16(702);
+emit_16(768);
+emit_16(701);
+emit_16(768);
+emit_16(702);
+emit_16(769);
+emit_16(703);
+emit_16(769);
+emit_16(702);
+emit_16(769);
+emit_16(703);
+emit_16(770);
+emit_16(704);
+emit_16(770);
+emit_16(703);
+emit_16(770);
+emit_16(704);
+emit_16(771);
+emit_16(705);
+emit_16(771);
+emit_16(704);
+emit_16(771);
+emit_16(705);
+emit_16(772);
+emit_16(706);
+emit_16(772);
+emit_16(705);
+emit_16(772);
+emit_16(706);
+emit_16(773);
+emit_16(707);
+emit_16(773);
+emit_16(706);
+emit_16(773);
+emit_16(707);
+emit_16(774);
+emit_16(708);
+emit_16(774);
+emit_16(707);
+emit_16(774);
+emit_16(708);
+emit_16(775);
+emit_16(709);
+emit_16(775);
+emit_16(708);
+emit_16(775);
+emit_16(709);
+emit_16(776);
+emit_16(710);
+emit_16(776);
+emit_16(709);
+emit_16(776);
+emit_16(710);
+emit_16(777);
+emit_16(711);
+emit_16(777);
+emit_16(710);
+emit_16(777);
+emit_16(711);
+emit_16(778);
+emit_16(712);
+emit_16(778);
+emit_16(711);
+emit_16(778);
+emit_16(712);
+emit_16(779);
+emit_16(713);
+emit_16(779);
+emit_16(712);
+emit_16(779);
+emit_16(713);
+emit_16(780);
+emit_16(714);
+emit_16(780);
+emit_16(713);
+emit_16(780);
+emit_16(714);
+emit_16(781);
+emit_16(715);
+emit_16(781);
+emit_16(714);
+emit_16(781);
+emit_16(715);
+emit_16(782);
+emit_16(716);
+emit_16(782);
+emit_16(715);
+emit_16(782);
+emit_16(716);
+emit_16(783);
+emit_16(717);
+emit_16(783);
+emit_16(716);
+emit_16(783);
+emit_16(717);
+emit_16(784);
+emit_16(718);
+emit_16(784);
+emit_16(717);
+emit_16(784);
+emit_16(718);
+emit_16(785);
+emit_16(719);
+emit_16(785);
+emit_16(718);
+emit_16(785);
+emit_16(719);
+emit_16(786);
+emit_16(720);
+emit_16(786);
+emit_16(719);
+emit_16(786);
+emit_16(720);
+emit_16(787);
+emit_16(721);
+emit_16(787);
+emit_16(720);
+emit_16(787);
+emit_16(721);
+emit_16(788);
+emit_16(722);
+emit_16(788);
+emit_16(721);
+emit_16(788);
+emit_16(722);
+emit_16(789);
+emit_16(723);
+emit_16(789);
+emit_16(722);
+emit_16(789);
+emit_16(723);
+emit_16(790);
+emit_16(724);
+emit_16(790);
+emit_16(723);
+emit_16(790);
+emit_16(724);
+emit_16(791);
+emit_16(725);
+emit_16(791);
+emit_16(724);
+emit_16(792);
+emit_16(726);
+emit_16(793);
+emit_16(727);
+emit_16(793);
+emit_16(726);
+emit_16(793);
+emit_16(727);
+emit_16(794);
+emit_16(728);
+emit_16(794);
+emit_16(727);
+emit_16(794);
+emit_16(728);
+emit_16(795);
+emit_16(729);
+emit_16(795);
+emit_16(728);
+emit_16(795);
+emit_16(729);
+emit_16(796);
+emit_16(730);
+emit_16(796);
+emit_16(729);
+emit_16(796);
+emit_16(730);
+emit_16(797);
+emit_16(731);
+emit_16(797);
+emit_16(730);
+emit_16(797);
+emit_16(731);
+emit_16(798);
+emit_16(732);
+emit_16(798);
+emit_16(731);
+emit_16(798);
+emit_16(732);
+emit_16(799);
+emit_16(733);
+emit_16(799);
+emit_16(732);
+emit_16(799);
+emit_16(733);
+emit_16(800);
+emit_16(734);
+emit_16(800);
+emit_16(733);
+emit_16(800);
+emit_16(734);
+emit_16(801);
+emit_16(735);
+emit_16(801);
+emit_16(734);
+emit_16(801);
+emit_16(735);
+emit_16(802);
+emit_16(736);
+emit_16(802);
+emit_16(735);
+emit_16(802);
+emit_16(736);
+emit_16(803);
+emit_16(737);
+emit_16(803);
+emit_16(736);
+emit_16(803);
+emit_16(737);
+emit_16(804);
+emit_16(738);
+emit_16(804);
+emit_16(737);
+emit_16(804);
+emit_16(738);
+emit_16(805);
+emit_16(739);
+emit_16(805);
+emit_16(738);
+emit_16(805);
+emit_16(739);
+emit_16(806);
+emit_16(740);
+emit_16(806);
+emit_16(739);
+emit_16(806);
+emit_16(740);
+emit_16(807);
+emit_16(741);
+emit_16(807);
+emit_16(740);
+emit_16(807);
+emit_16(741);
+emit_16(808);
+emit_16(742);
+emit_16(808);
+emit_16(741);
+emit_16(808);
+emit_16(742);
+emit_16(809);
+emit_16(743);
+emit_16(809);
+emit_16(742);
+emit_16(809);
+emit_16(743);
+emit_16(810);
+emit_16(744);
+emit_16(810);
+emit_16(743);
+emit_16(810);
+emit_16(744);
+emit_16(811);
+emit_16(745);
+emit_16(811);
+emit_16(744);
+emit_16(811);
+emit_16(745);
+emit_16(812);
+emit_16(746);
+emit_16(812);
+emit_16(745);
+emit_16(812);
+emit_16(746);
+emit_16(813);
+emit_16(747);
+emit_16(813);
+emit_16(746);
+emit_16(813);
+emit_16(747);
+emit_16(814);
+emit_16(748);
+emit_16(814);
+emit_16(747);
+emit_16(814);
+emit_16(748);
+emit_16(815);
+emit_16(749);
+emit_16(815);
+emit_16(748);
+emit_16(815);
+emit_16(749);
+emit_16(816);
+emit_16(750);
+emit_16(816);
+emit_16(749);
+emit_16(816);
+emit_16(750);
+emit_16(817);
+emit_16(751);
+emit_16(817);
+emit_16(750);
+emit_16(817);
+emit_16(751);
+emit_16(818);
+emit_16(752);
+emit_16(818);
+emit_16(751);
+emit_16(818);
+emit_16(752);
+emit_16(819);
+emit_16(753);
+emit_16(819);
+emit_16(752);
+emit_16(819);
+emit_16(753);
+emit_16(820);
+emit_16(754);
+emit_16(820);
+emit_16(753);
+emit_16(820);
+emit_16(754);
+emit_16(821);
+emit_16(755);
+emit_16(821);
+emit_16(754);
+emit_16(821);
+emit_16(755);
+emit_16(822);
+emit_16(756);
+emit_16(822);
+emit_16(755);
+emit_16(822);
+emit_16(756);
+emit_16(823);
+emit_16(757);
+emit_16(823);
+emit_16(756);
+emit_16(823);
+emit_16(757);
+emit_16(824);
+emit_16(758);
+emit_16(824);
+emit_16(757);
+emit_16(824);
+emit_16(758);
+emit_16(825);
+emit_16(759);
+emit_16(825);
+emit_16(758);
+emit_16(825);
+emit_16(759);
+emit_16(826);
+emit_16(760);
+emit_16(826);
+emit_16(759);
+emit_16(826);
+emit_16(760);
+emit_16(827);
+emit_16(761);
+emit_16(827);
+emit_16(760);
+emit_16(827);
+emit_16(761);
+emit_16(828);
+emit_16(762);
+emit_16(828);
+emit_16(761);
+emit_16(828);
+emit_16(762);
+emit_16(829);
+emit_16(763);
+emit_16(829);
+emit_16(762);
+emit_16(829);
+emit_16(763);
+emit_16(830);
+emit_16(764);
+emit_16(830);
+emit_16(763);
+emit_16(830);
+emit_16(764);
+emit_16(831);
+emit_16(765);
+emit_16(831);
+emit_16(764);
+emit_16(831);
+emit_16(765);
+emit_16(832);
+emit_16(766);
+emit_16(832);
+emit_16(765);
+emit_16(832);
+emit_16(766);
+emit_16(833);
+emit_16(767);
+emit_16(833);
+emit_16(766);
+emit_16(833);
+emit_16(767);
+emit_16(834);
+emit_16(768);
+emit_16(834);
+emit_16(767);
+emit_16(834);
+emit_16(768);
+emit_16(835);
+emit_16(769);
+emit_16(835);
+emit_16(768);
+emit_16(835);
+emit_16(769);
+emit_16(836);
+emit_16(770);
+emit_16(836);
+emit_16(769);
+emit_16(836);
+emit_16(770);
+emit_16(837);
+emit_16(771);
+emit_16(837);
+emit_16(770);
+emit_16(837);
+emit_16(771);
+emit_16(838);
+emit_16(772);
+emit_16(838);
+emit_16(771);
+emit_16(838);
+emit_16(772);
+emit_16(839);
+emit_16(773);
+emit_16(839);
+emit_16(772);
+emit_16(839);
+emit_16(773);
+emit_16(840);
+emit_16(774);
+emit_16(840);
+emit_16(773);
+emit_16(840);
+emit_16(774);
+emit_16(841);
+emit_16(775);
+emit_16(841);
+emit_16(774);
+emit_16(841);
+emit_16(775);
+emit_16(842);
+emit_16(776);
+emit_16(842);
+emit_16(775);
+emit_16(842);
+emit_16(776);
+emit_16(843);
+emit_16(777);
+emit_16(843);
+emit_16(776);
+emit_16(843);
+emit_16(777);
+emit_16(844);
+emit_16(778);
+emit_16(844);
+emit_16(777);
+emit_16(844);
+emit_16(778);
+emit_16(845);
+emit_16(779);
+emit_16(845);
+emit_16(778);
+emit_16(845);
+emit_16(779);
+emit_16(846);
+emit_16(780);
+emit_16(846);
+emit_16(779);
+emit_16(846);
+emit_16(780);
+emit_16(847);
+emit_16(781);
+emit_16(847);
+emit_16(780);
+emit_16(847);
+emit_16(781);
+emit_16(848);
+emit_16(782);
+emit_16(848);
+emit_16(781);
+emit_16(848);
+emit_16(782);
+emit_16(849);
+emit_16(783);
+emit_16(849);
+emit_16(782);
+emit_16(849);
+emit_16(783);
+emit_16(850);
+emit_16(784);
+emit_16(850);
+emit_16(783);
+emit_16(850);
+emit_16(784);
+emit_16(851);
+emit_16(785);
+emit_16(851);
+emit_16(784);
+emit_16(851);
+emit_16(785);
+emit_16(852);
+emit_16(786);
+emit_16(852);
+emit_16(785);
+emit_16(852);
+emit_16(786);
+emit_16(853);
+emit_16(787);
+emit_16(853);
+emit_16(786);
+emit_16(853);
+emit_16(787);
+emit_16(854);
+emit_16(788);
+emit_16(854);
+emit_16(787);
+emit_16(854);
+emit_16(788);
+emit_16(855);
+emit_16(789);
+emit_16(855);
+emit_16(788);
+emit_16(855);
+emit_16(789);
+emit_16(856);
+emit_16(790);
+emit_16(856);
+emit_16(789);
+emit_16(856);
+emit_16(790);
+emit_16(857);
+emit_16(791);
+emit_16(857);
+emit_16(790);
+emit_16(858);
+emit_16(792);
+emit_16(859);
+emit_16(793);
+emit_16(859);
+emit_16(792);
+emit_16(859);
+emit_16(793);
+emit_16(860);
+emit_16(794);
+emit_16(860);
+emit_16(793);
+emit_16(860);
+emit_16(794);
+emit_16(861);
+emit_16(795);
+emit_16(861);
+emit_16(794);
+emit_16(861);
+emit_16(795);
+emit_16(862);
+emit_16(796);
+emit_16(862);
+emit_16(795);
+emit_16(862);
+emit_16(796);
+emit_16(863);
+emit_16(797);
+emit_16(863);
+emit_16(796);
+emit_16(863);
+emit_16(797);
+emit_16(864);
+emit_16(798);
+emit_16(864);
+emit_16(797);
+emit_16(864);
+emit_16(798);
+emit_16(865);
+emit_16(799);
+emit_16(865);
+emit_16(798);
+emit_16(865);
+emit_16(799);
+emit_16(866);
+emit_16(800);
+emit_16(866);
+emit_16(799);
+emit_16(866);
+emit_16(800);
+emit_16(867);
+emit_16(801);
+emit_16(867);
+emit_16(800);
+emit_16(867);
+emit_16(801);
+emit_16(868);
+emit_16(802);
+emit_16(868);
+emit_16(801);
+emit_16(868);
+emit_16(802);
+emit_16(869);
+emit_16(803);
+emit_16(869);
+emit_16(802);
+emit_16(869);
+emit_16(803);
+emit_16(870);
+emit_16(804);
+emit_16(870);
+emit_16(803);
+emit_16(870);
+emit_16(804);
+emit_16(871);
+emit_16(805);
+emit_16(871);
+emit_16(804);
+emit_16(871);
+emit_16(805);
+emit_16(872);
+emit_16(806);
+emit_16(872);
+emit_16(805);
+emit_16(872);
+emit_16(806);
+emit_16(873);
+emit_16(807);
+emit_16(873);
+emit_16(806);
+emit_16(873);
+emit_16(807);
+emit_16(874);
+emit_16(808);
+emit_16(874);
+emit_16(807);
+emit_16(874);
+emit_16(808);
+emit_16(875);
+emit_16(809);
+emit_16(875);
+emit_16(808);
+emit_16(875);
+emit_16(809);
+emit_16(876);
+emit_16(810);
+emit_16(876);
+emit_16(809);
+emit_16(876);
+emit_16(810);
+emit_16(877);
+emit_16(811);
+emit_16(877);
+emit_16(810);
+emit_16(877);
+emit_16(811);
+emit_16(878);
+emit_16(812);
+emit_16(878);
+emit_16(811);
+emit_16(878);
+emit_16(812);
+emit_16(879);
+emit_16(813);
+emit_16(879);
+emit_16(812);
+emit_16(879);
+emit_16(813);
+emit_16(880);
+emit_16(814);
+emit_16(880);
+emit_16(813);
+emit_16(880);
+emit_16(814);
+emit_16(881);
+emit_16(815);
+emit_16(881);
+emit_16(814);
+emit_16(881);
+emit_16(815);
+emit_16(882);
+emit_16(816);
+emit_16(882);
+emit_16(815);
+emit_16(882);
+emit_16(816);
+emit_16(883);
+emit_16(817);
+emit_16(883);
+emit_16(816);
+emit_16(883);
+emit_16(817);
+emit_16(884);
+emit_16(818);
+emit_16(884);
+emit_16(817);
+emit_16(884);
+emit_16(818);
+emit_16(885);
+emit_16(819);
+emit_16(885);
+emit_16(818);
+emit_16(885);
+emit_16(819);
+emit_16(886);
+emit_16(820);
+emit_16(886);
+emit_16(819);
+emit_16(886);
+emit_16(820);
+emit_16(887);
+emit_16(821);
+emit_16(887);
+emit_16(820);
+emit_16(887);
+emit_16(821);
+emit_16(888);
+emit_16(822);
+emit_16(888);
+emit_16(821);
+emit_16(888);
+emit_16(822);
+emit_16(889);
+emit_16(823);
+emit_16(889);
+emit_16(822);
+emit_16(889);
+emit_16(823);
+emit_16(890);
+emit_16(824);
+emit_16(890);
+emit_16(823);
+emit_16(890);
+emit_16(824);
+emit_16(891);
+emit_16(825);
+emit_16(891);
+emit_16(824);
+emit_16(891);
+emit_16(825);
+emit_16(892);
+emit_16(826);
+emit_16(892);
+emit_16(825);
+emit_16(892);
+emit_16(826);
+emit_16(893);
+emit_16(827);
+emit_16(893);
+emit_16(826);
+emit_16(893);
+emit_16(827);
+emit_16(894);
+emit_16(828);
+emit_16(894);
+emit_16(827);
+emit_16(894);
+emit_16(828);
+emit_16(895);
+emit_16(829);
+emit_16(895);
+emit_16(828);
+emit_16(895);
+emit_16(829);
+emit_16(896);
+emit_16(830);
+emit_16(896);
+emit_16(829);
+emit_16(896);
+emit_16(830);
+emit_16(897);
+emit_16(831);
+emit_16(897);
+emit_16(830);
+emit_16(897);
+emit_16(831);
+emit_16(898);
+emit_16(832);
+emit_16(898);
+emit_16(831);
+emit_16(898);
+emit_16(832);
+emit_16(899);
+emit_16(833);
+emit_16(899);
+emit_16(832);
+emit_16(899);
+emit_16(833);
+emit_16(900);
+emit_16(834);
+emit_16(900);
+emit_16(833);
+emit_16(900);
+emit_16(834);
+emit_16(901);
+emit_16(835);
+emit_16(901);
+emit_16(834);
+emit_16(901);
+emit_16(835);
+emit_16(902);
+emit_16(836);
+emit_16(902);
+emit_16(835);
+emit_16(902);
+emit_16(836);
+emit_16(903);
+emit_16(837);
+emit_16(903);
+emit_16(836);
+emit_16(903);
+emit_16(837);
+emit_16(904);
+emit_16(838);
+emit_16(904);
+emit_16(837);
+emit_16(904);
+emit_16(838);
+emit_16(905);
+emit_16(839);
+emit_16(905);
+emit_16(838);
+emit_16(905);
+emit_16(839);
+emit_16(906);
+emit_16(840);
+emit_16(906);
+emit_16(839);
+emit_16(906);
+emit_16(840);
+emit_16(907);
+emit_16(841);
+emit_16(907);
+emit_16(840);
+emit_16(907);
+emit_16(841);
+emit_16(908);
+emit_16(842);
+emit_16(908);
+emit_16(841);
+emit_16(908);
+emit_16(842);
+emit_16(909);
+emit_16(843);
+emit_16(909);
+emit_16(842);
+emit_16(909);
+emit_16(843);
+emit_16(910);
+emit_16(844);
+emit_16(910);
+emit_16(843);
+emit_16(910);
+emit_16(844);
+emit_16(911);
+emit_16(845);
+emit_16(911);
+emit_16(844);
+emit_16(911);
+emit_16(845);
+emit_16(912);
+emit_16(846);
+emit_16(912);
+emit_16(845);
+emit_16(912);
+emit_16(846);
+emit_16(913);
+emit_16(847);
+emit_16(913);
+emit_16(846);
+emit_16(913);
+emit_16(847);
+emit_16(914);
+emit_16(848);
+emit_16(914);
+emit_16(847);
+emit_16(914);
+emit_16(848);
+emit_16(915);
+emit_16(849);
+emit_16(915);
+emit_16(848);
+emit_16(915);
+emit_16(849);
+emit_16(916);
+emit_16(850);
+emit_16(916);
+emit_16(849);
+emit_16(916);
+emit_16(850);
+emit_16(917);
+emit_16(851);
+emit_16(917);
+emit_16(850);
+emit_16(917);
+emit_16(851);
+emit_16(918);
+emit_16(852);
+emit_16(918);
+emit_16(851);
+emit_16(918);
+emit_16(852);
+emit_16(919);
+emit_16(853);
+emit_16(919);
+emit_16(852);
+emit_16(919);
+emit_16(853);
+emit_16(920);
+emit_16(854);
+emit_16(920);
+emit_16(853);
+emit_16(920);
+emit_16(854);
+emit_16(921);
+emit_16(855);
+emit_16(921);
+emit_16(854);
+emit_16(921);
+emit_16(855);
+emit_16(922);
+emit_16(856);
+emit_16(922);
+emit_16(855);
+emit_16(922);
+emit_16(856);
+emit_16(923);
+emit_16(857);
+emit_16(923);
+emit_16(856);
+emit_16(924);
+emit_16(858);
+emit_16(925);
+emit_16(859);
+emit_16(925);
+emit_16(858);
+emit_16(925);
+emit_16(859);
+emit_16(926);
+emit_16(860);
+emit_16(926);
+emit_16(859);
+emit_16(926);
+emit_16(860);
+emit_16(927);
+emit_16(861);
+emit_16(927);
+emit_16(860);
+emit_16(927);
+emit_16(861);
+emit_16(928);
+emit_16(862);
+emit_16(928);
+emit_16(861);
+emit_16(928);
+emit_16(862);
+emit_16(929);
+emit_16(863);
+emit_16(929);
+emit_16(862);
+emit_16(929);
+emit_16(863);
+emit_16(930);
+emit_16(864);
+emit_16(930);
+emit_16(863);
+emit_16(930);
+emit_16(864);
+emit_16(931);
+emit_16(865);
+emit_16(931);
+emit_16(864);
+emit_16(931);
+emit_16(865);
+emit_16(932);
+emit_16(866);
+emit_16(932);
+emit_16(865);
+emit_16(932);
+emit_16(866);
+emit_16(933);
+emit_16(867);
+emit_16(933);
+emit_16(866);
+emit_16(933);
+emit_16(867);
+emit_16(934);
+emit_16(868);
+emit_16(934);
+emit_16(867);
+emit_16(934);
+emit_16(868);
+emit_16(935);
+emit_16(869);
+emit_16(935);
+emit_16(868);
+emit_16(935);
+emit_16(869);
+emit_16(936);
+emit_16(870);
+emit_16(936);
+emit_16(869);
+emit_16(936);
+emit_16(870);
+emit_16(937);
+emit_16(871);
+emit_16(937);
+emit_16(870);
+emit_16(937);
+emit_16(871);
+emit_16(938);
+emit_16(872);
+emit_16(938);
+emit_16(871);
+emit_16(938);
+emit_16(872);
+emit_16(939);
+emit_16(873);
+emit_16(939);
+emit_16(872);
+emit_16(939);
+emit_16(873);
+emit_16(940);
+emit_16(874);
+emit_16(940);
+emit_16(873);
+emit_16(940);
+emit_16(874);
+emit_16(941);
+emit_16(875);
+emit_16(941);
+emit_16(874);
+emit_16(941);
+emit_16(875);
+emit_16(942);
+emit_16(876);
+emit_16(942);
+emit_16(875);
+emit_16(942);
+emit_16(876);
+emit_16(943);
+emit_16(877);
+emit_16(943);
+emit_16(876);
+emit_16(943);
+emit_16(877);
+emit_16(944);
+emit_16(878);
+emit_16(944);
+emit_16(877);
+emit_16(944);
+emit_16(878);
+emit_16(945);
+emit_16(879);
+emit_16(945);
+emit_16(878);
+emit_16(945);
+emit_16(879);
+emit_16(946);
+emit_16(880);
+emit_16(946);
+emit_16(879);
+emit_16(946);
+emit_16(880);
+emit_16(947);
+emit_16(881);
+emit_16(947);
+emit_16(880);
+emit_16(947);
+emit_16(881);
+emit_16(948);
+emit_16(882);
+emit_16(948);
+emit_16(881);
+emit_16(948);
+emit_16(882);
+emit_16(949);
+emit_16(883);
+emit_16(949);
+emit_16(882);
+emit_16(949);
+emit_16(883);
+emit_16(950);
+emit_16(884);
+emit_16(950);
+emit_16(883);
+emit_16(950);
+emit_16(884);
+emit_16(951);
+emit_16(885);
+emit_16(951);
+emit_16(884);
+emit_16(951);
+emit_16(885);
+emit_16(952);
+emit_16(886);
+emit_16(952);
+emit_16(885);
+emit_16(952);
+emit_16(886);
+emit_16(953);
+emit_16(887);
+emit_16(953);
+emit_16(886);
+emit_16(953);
+emit_16(887);
+emit_16(954);
+emit_16(888);
+emit_16(954);
+emit_16(887);
+emit_16(954);
+emit_16(888);
+emit_16(955);
+emit_16(889);
+emit_16(955);
+emit_16(888);
+emit_16(955);
+emit_16(889);
+emit_16(956);
+emit_16(890);
+emit_16(956);
+emit_16(889);
+emit_16(956);
+emit_16(890);
+emit_16(957);
+emit_16(891);
+emit_16(957);
+emit_16(890);
+emit_16(957);
+emit_16(891);
+emit_16(958);
+emit_16(892);
+emit_16(958);
+emit_16(891);
+emit_16(958);
+emit_16(892);
+emit_16(959);
+emit_16(893);
+emit_16(959);
+emit_16(892);
+emit_16(959);
+emit_16(893);
+emit_16(960);
+emit_16(894);
+emit_16(960);
+emit_16(893);
+emit_16(960);
+emit_16(894);
+emit_16(961);
+emit_16(895);
+emit_16(961);
+emit_16(894);
+emit_16(961);
+emit_16(895);
+emit_16(962);
+emit_16(896);
+emit_16(962);
+emit_16(895);
+emit_16(962);
+emit_16(896);
+emit_16(963);
+emit_16(897);
+emit_16(963);
+emit_16(896);
+emit_16(963);
+emit_16(897);
+emit_16(964);
+emit_16(898);
+emit_16(964);
+emit_16(897);
+emit_16(964);
+emit_16(898);
+emit_16(965);
+emit_16(899);
+emit_16(965);
+emit_16(898);
+emit_16(965);
+emit_16(899);
+emit_16(966);
+emit_16(900);
+emit_16(966);
+emit_16(899);
+emit_16(966);
+emit_16(900);
+emit_16(967);
+emit_16(901);
+emit_16(967);
+emit_16(900);
+emit_16(967);
+emit_16(901);
+emit_16(968);
+emit_16(902);
+emit_16(968);
+emit_16(901);
+emit_16(968);
+emit_16(902);
+emit_16(969);
+emit_16(903);
+emit_16(969);
+emit_16(902);
+emit_16(969);
+emit_16(903);
+emit_16(970);
+emit_16(904);
+emit_16(970);
+emit_16(903);
+emit_16(970);
+emit_16(904);
+emit_16(971);
+emit_16(905);
+emit_16(971);
+emit_16(904);
+emit_16(971);
+emit_16(905);
+emit_16(972);
+emit_16(906);
+emit_16(972);
+emit_16(905);
+emit_16(972);
+emit_16(906);
+emit_16(973);
+emit_16(907);
+emit_16(973);
+emit_16(906);
+emit_16(973);
+emit_16(907);
+emit_16(974);
+emit_16(908);
+emit_16(974);
+emit_16(907);
+emit_16(974);
+emit_16(908);
+emit_16(975);
+emit_16(909);
+emit_16(975);
+emit_16(908);
+emit_16(975);
+emit_16(909);
+emit_16(976);
+emit_16(910);
+emit_16(976);
+emit_16(909);
+emit_16(976);
+emit_16(910);
+emit_16(977);
+emit_16(911);
+emit_16(977);
+emit_16(910);
+emit_16(977);
+emit_16(911);
+emit_16(978);
+emit_16(912);
+emit_16(978);
+emit_16(911);
+emit_16(978);
+emit_16(912);
+emit_16(979);
+emit_16(913);
+emit_16(979);
+emit_16(912);
+emit_16(979);
+emit_16(913);
+emit_16(980);
+emit_16(914);
+emit_16(980);
+emit_16(913);
+emit_16(980);
+emit_16(914);
+emit_16(981);
+emit_16(915);
+emit_16(981);
+emit_16(914);
+emit_16(981);
+emit_16(915);
+emit_16(982);
+emit_16(916);
+emit_16(982);
+emit_16(915);
+emit_16(982);
+emit_16(916);
+emit_16(983);
+emit_16(917);
+emit_16(983);
+emit_16(916);
+emit_16(983);
+emit_16(917);
+emit_16(984);
+emit_16(918);
+emit_16(984);
+emit_16(917);
+emit_16(984);
+emit_16(918);
+emit_16(985);
+emit_16(919);
+emit_16(985);
+emit_16(918);
+emit_16(985);
+emit_16(919);
+emit_16(986);
+emit_16(920);
+emit_16(986);
+emit_16(919);
+emit_16(986);
+emit_16(920);
+emit_16(987);
+emit_16(921);
+emit_16(987);
+emit_16(920);
+emit_16(987);
+emit_16(921);
+emit_16(988);
+emit_16(922);
+emit_16(988);
+emit_16(921);
+emit_16(988);
+emit_16(922);
+emit_16(989);
+emit_16(923);
+emit_16(989);
+emit_16(922);
+emit_16(990);
+emit_16(924);
+emit_16(991);
+emit_16(925);
+emit_16(991);
+emit_16(924);
+emit_16(991);
+emit_16(925);
+emit_16(992);
+emit_16(926);
+emit_16(992);
+emit_16(925);
+emit_16(992);
+emit_16(926);
+emit_16(993);
+emit_16(927);
+emit_16(993);
+emit_16(926);
+emit_16(993);
+emit_16(927);
+emit_16(994);
+emit_16(928);
+emit_16(994);
+emit_16(927);
+emit_16(994);
+emit_16(928);
+emit_16(995);
+emit_16(929);
+emit_16(995);
+emit_16(928);
+emit_16(995);
+emit_16(929);
+emit_16(996);
+emit_16(930);
+emit_16(996);
+emit_16(929);
+emit_16(996);
+emit_16(930);
+emit_16(997);
+emit_16(931);
+emit_16(997);
+emit_16(930);
+emit_16(997);
+emit_16(931);
+emit_16(998);
+emit_16(932);
+emit_16(998);
+emit_16(931);
+emit_16(998);
+emit_16(932);
+emit_16(999);
+emit_16(933);
+emit_16(999);
+emit_16(932);
+emit_16(999);
+emit_16(933);
+emit_16(1000);
+emit_16(934);
+emit_16(1000);
+emit_16(933);
+emit_16(1000);
+emit_16(934);
+emit_16(1001);
+emit_16(935);
+emit_16(1001);
+emit_16(934);
+emit_16(1001);
+emit_16(935);
+emit_16(1002);
+emit_16(936);
+emit_16(1002);
+emit_16(935);
+emit_16(1002);
+emit_16(936);
+emit_16(1003);
+emit_16(937);
+emit_16(1003);
+emit_16(936);
+emit_16(1003);
+emit_16(937);
+emit_16(1004);
+emit_16(938);
+emit_16(1004);
+emit_16(937);
+emit_16(1004);
+emit_16(938);
+emit_16(1005);
+emit_16(939);
+emit_16(1005);
+emit_16(938);
+emit_16(1005);
+emit_16(939);
+emit_16(1006);
+emit_16(940);
+emit_16(1006);
+emit_16(939);
+emit_16(1006);
+emit_16(940);
+emit_16(1007);
+emit_16(941);
+emit_16(1007);
+emit_16(940);
+emit_16(1007);
+emit_16(941);
+emit_16(1008);
+emit_16(942);
+emit_16(1008);
+emit_16(941);
+emit_16(1008);
+emit_16(942);
+emit_16(1009);
+emit_16(943);
+emit_16(1009);
+emit_16(942);
+emit_16(1009);
+emit_16(943);
+emit_16(1010);
+emit_16(944);
+emit_16(1010);
+emit_16(943);
+emit_16(1010);
+emit_16(944);
+emit_16(1011);
+emit_16(945);
+emit_16(1011);
+emit_16(944);
+emit_16(1011);
+emit_16(945);
+emit_16(1012);
+emit_16(946);
+emit_16(1012);
+emit_16(945);
+emit_16(1012);
+emit_16(946);
+emit_16(1013);
+emit_16(947);
+emit_16(1013);
+emit_16(946);
+emit_16(1013);
+emit_16(947);
+emit_16(1014);
+emit_16(948);
+emit_16(1014);
+emit_16(947);
+emit_16(1014);
+emit_16(948);
+emit_16(1015);
+emit_16(949);
+emit_16(1015);
+emit_16(948);
+emit_16(1015);
+emit_16(949);
+emit_16(1016);
+emit_16(950);
+emit_16(1016);
+emit_16(949);
+emit_16(1016);
+emit_16(950);
+emit_16(1017);
+emit_16(951);
+emit_16(1017);
+emit_16(950);
+emit_16(1017);
+emit_16(951);
+emit_16(1018);
+emit_16(952);
+emit_16(1018);
+emit_16(951);
+emit_16(1018);
+emit_16(952);
+emit_16(1019);
+emit_16(953);
+emit_16(1019);
+emit_16(952);
+emit_16(1019);
+emit_16(953);
+emit_16(1020);
+emit_16(954);
+emit_16(1020);
+emit_16(953);
+emit_16(1020);
+emit_16(954);
+emit_16(1021);
+emit_16(955);
+emit_16(1021);
+emit_16(954);
+emit_16(1021);
+emit_16(955);
+emit_16(1022);
+emit_16(956);
+emit_16(1022);
+emit_16(955);
+emit_16(1022);
+emit_16(956);
+emit_16(1023);
+emit_16(957);
+emit_16(1023);
+emit_16(956);
+emit_16(1023);
+emit_16(957);
+emit_16(1024);
+emit_16(958);
+emit_16(1024);
+emit_16(957);
+emit_16(1024);
+emit_16(958);
+emit_16(1025);
+emit_16(959);
+emit_16(1025);
+emit_16(958);
+emit_16(1025);
+emit_16(959);
+emit_16(1026);
+emit_16(960);
+emit_16(1026);
+emit_16(959);
+emit_16(1026);
+emit_16(960);
+emit_16(1027);
+emit_16(961);
+emit_16(1027);
+emit_16(960);
+emit_16(1027);
+emit_16(961);
+emit_16(1028);
+emit_16(962);
+emit_16(1028);
+emit_16(961);
+emit_16(1028);
+emit_16(962);
+emit_16(1029);
+emit_16(963);
+emit_16(1029);
+emit_16(962);
+emit_16(1029);
+emit_16(963);
+emit_16(1030);
+emit_16(964);
+emit_16(1030);
+emit_16(963);
+emit_16(1030);
+emit_16(964);
+emit_16(1031);
+emit_16(965);
+emit_16(1031);
+emit_16(964);
+emit_16(1031);
+emit_16(965);
+emit_16(1032);
+emit_16(966);
+emit_16(1032);
+emit_16(965);
+emit_16(1032);
+emit_16(966);
+emit_16(1033);
+emit_16(967);
+emit_16(1033);
+emit_16(966);
+emit_16(1033);
+emit_16(967);
+emit_16(1034);
+emit_16(968);
+emit_16(1034);
+emit_16(967);
+emit_16(1034);
+emit_16(968);
+emit_16(1035);
+emit_16(969);
+emit_16(1035);
+emit_16(968);
+emit_16(1035);
+emit_16(969);
+emit_16(1036);
+emit_16(970);
+emit_16(1036);
+emit_16(969);
+emit_16(1036);
+emit_16(970);
+emit_16(1037);
+emit_16(971);
+emit_16(1037);
+emit_16(970);
+emit_16(1037);
+emit_16(971);
+emit_16(1038);
+emit_16(972);
+emit_16(1038);
+emit_16(971);
+emit_16(1038);
+emit_16(972);
+emit_16(1039);
+emit_16(973);
+emit_16(1039);
+emit_16(972);
+emit_16(1039);
+emit_16(973);
+emit_16(1040);
+emit_16(974);
+emit_16(1040);
+emit_16(973);
+emit_16(1040);
+emit_16(974);
+emit_16(1041);
+emit_16(975);
+emit_16(1041);
+emit_16(974);
+emit_16(1041);
+emit_16(975);
+emit_16(1042);
+emit_16(976);
+emit_16(1042);
+emit_16(975);
+emit_16(1042);
+emit_16(976);
+emit_16(1043);
+emit_16(977);
+emit_16(1043);
+emit_16(976);
+emit_16(1043);
+emit_16(977);
+emit_16(1044);
+emit_16(978);
+emit_16(1044);
+emit_16(977);
+emit_16(1044);
+emit_16(978);
+emit_16(1045);
+emit_16(979);
+emit_16(1045);
+emit_16(978);
+emit_16(1045);
+emit_16(979);
+emit_16(1046);
+emit_16(980);
+emit_16(1046);
+emit_16(979);
+emit_16(1046);
+emit_16(980);
+emit_16(1047);
+emit_16(981);
+emit_16(1047);
+emit_16(980);
+emit_16(1047);
+emit_16(981);
+emit_16(1048);
+emit_16(982);
+emit_16(1048);
+emit_16(981);
+emit_16(1048);
+emit_16(982);
+emit_16(1049);
+emit_16(983);
+emit_16(1049);
+emit_16(982);
+emit_16(1049);
+emit_16(983);
+emit_16(1050);
+emit_16(984);
+emit_16(1050);
+emit_16(983);
+emit_16(1050);
+emit_16(984);
+emit_16(1051);
+emit_16(985);
+emit_16(1051);
+emit_16(984);
+emit_16(1051);
+emit_16(985);
+emit_16(1052);
+emit_16(986);
+emit_16(1052);
+emit_16(985);
+emit_16(1052);
+emit_16(986);
+emit_16(1053);
+emit_16(987);
+emit_16(1053);
+emit_16(986);
+emit_16(1053);
+emit_16(987);
+emit_16(1054);
+emit_16(988);
+emit_16(1054);
+emit_16(987);
+emit_16(1054);
+emit_16(988);
+emit_16(1055);
+emit_16(989);
+emit_16(1055);
+emit_16(988);
+emit_16(1056);
+emit_16(990);
+emit_16(1057);
+emit_16(991);
+emit_16(1057);
+emit_16(990);
+emit_16(1057);
+emit_16(991);
+emit_16(1058);
+emit_16(992);
+emit_16(1058);
+emit_16(991);
+emit_16(1058);
+emit_16(992);
+emit_16(1059);
+emit_16(993);
+emit_16(1059);
+emit_16(992);
+emit_16(1059);
+emit_16(993);
+emit_16(1060);
+emit_16(994);
+emit_16(1060);
+emit_16(993);
+emit_16(1060);
+emit_16(994);
+emit_16(1061);
+emit_16(995);
+emit_16(1061);
+emit_16(994);
+emit_16(1061);
+emit_16(995);
+emit_16(1062);
+emit_16(996);
+emit_16(1062);
+emit_16(995);
+emit_16(1062);
+emit_16(996);
+emit_16(1063);
+emit_16(997);
+emit_16(1063);
+emit_16(996);
+emit_16(1063);
+emit_16(997);
+emit_16(1064);
+emit_16(998);
+emit_16(1064);
+emit_16(997);
+emit_16(1064);
+emit_16(998);
+emit_16(1065);
+emit_16(999);
+emit_16(1065);
+emit_16(998);
+emit_16(1065);
+emit_16(999);
+emit_16(1066);
+emit_16(1000);
+emit_16(1066);
+emit_16(999);
+emit_16(1066);
+emit_16(1000);
+emit_16(1067);
+emit_16(1001);
+emit_16(1067);
+emit_16(1000);
+emit_16(1067);
+emit_16(1001);
+emit_16(1068);
+emit_16(1002);
+emit_16(1068);
+emit_16(1001);
+emit_16(1068);
+emit_16(1002);
+emit_16(1069);
+emit_16(1003);
+emit_16(1069);
+emit_16(1002);
+emit_16(1069);
+emit_16(1003);
+emit_16(1070);
+emit_16(1004);
+emit_16(1070);
+emit_16(1003);
+emit_16(1070);
+emit_16(1004);
+emit_16(1071);
+emit_16(1005);
+emit_16(1071);
+emit_16(1004);
+emit_16(1071);
+emit_16(1005);
+emit_16(1072);
+emit_16(1006);
+emit_16(1072);
+emit_16(1005);
+emit_16(1072);
+emit_16(1006);
+emit_16(1073);
+emit_16(1007);
+emit_16(1073);
+emit_16(1006);
+emit_16(1073);
+emit_16(1007);
+emit_16(1074);
+emit_16(1008);
+emit_16(1074);
+emit_16(1007);
+emit_16(1074);
+emit_16(1008);
+emit_16(1075);
+emit_16(1009);
+emit_16(1075);
+emit_16(1008);
+emit_16(1075);
+emit_16(1009);
+emit_16(1076);
+emit_16(1010);
+emit_16(1076);
+emit_16(1009);
+emit_16(1076);
+emit_16(1010);
+emit_16(1077);
+emit_16(1011);
+emit_16(1077);
+emit_16(1010);
+emit_16(1077);
+emit_16(1011);
+emit_16(1078);
+emit_16(1012);
+emit_16(1078);
+emit_16(1011);
+emit_16(1078);
+emit_16(1012);
+emit_16(1079);
+emit_16(1013);
+emit_16(1079);
+emit_16(1012);
+emit_16(1079);
+emit_16(1013);
+emit_16(1080);
+emit_16(1014);
+emit_16(1080);
+emit_16(1013);
+emit_16(1080);
+emit_16(1014);
+emit_16(1081);
+emit_16(1015);
+emit_16(1081);
+emit_16(1014);
+emit_16(1081);
+emit_16(1015);
+emit_16(1082);
+emit_16(1016);
+emit_16(1082);
+emit_16(1015);
+emit_16(1082);
+emit_16(1016);
+emit_16(1083);
+emit_16(1017);
+emit_16(1083);
+emit_16(1016);
+emit_16(1083);
+emit_16(1017);
+emit_16(1084);
+emit_16(1018);
+emit_16(1084);
+emit_16(1017);
+emit_16(1084);
+emit_16(1018);
+emit_16(1085);
+emit_16(1019);
+emit_16(1085);
+emit_16(1018);
+emit_16(1085);
+emit_16(1019);
+emit_16(1086);
+emit_16(1020);
+emit_16(1086);
+emit_16(1019);
+emit_16(1086);
+emit_16(1020);
+emit_16(1087);
+emit_16(1021);
+emit_16(1087);
+emit_16(1020);
+emit_16(1087);
+emit_16(1021);
+emit_16(1088);
+emit_16(1022);
+emit_16(1088);
+emit_16(1021);
+emit_16(1088);
+emit_16(1022);
+emit_16(1089);
+emit_16(1023);
+emit_16(1089);
+emit_16(1022);
+emit_16(1089);
+emit_16(1023);
+emit_16(1090);
+emit_16(1024);
+emit_16(1090);
+emit_16(1023);
+emit_16(1090);
+emit_16(1024);
+emit_16(1091);
+emit_16(1025);
+emit_16(1091);
+emit_16(1024);
+emit_16(1091);
+emit_16(1025);
+emit_16(1092);
+emit_16(1026);
+emit_16(1092);
+emit_16(1025);
+emit_16(1092);
+emit_16(1026);
+emit_16(1093);
+emit_16(1027);
+emit_16(1093);
+emit_16(1026);
+emit_16(1093);
+emit_16(1027);
+emit_16(1094);
+emit_16(1028);
+emit_16(1094);
+emit_16(1027);
+emit_16(1094);
+emit_16(1028);
+emit_16(1095);
+emit_16(1029);
+emit_16(1095);
+emit_16(1028);
+emit_16(1095);
+emit_16(1029);
+emit_16(1096);
+emit_16(1030);
+emit_16(1096);
+emit_16(1029);
+emit_16(1096);
+emit_16(1030);
+emit_16(1097);
+emit_16(1031);
+emit_16(1097);
+emit_16(1030);
+emit_16(1097);
+emit_16(1031);
+emit_16(1098);
+emit_16(1032);
+emit_16(1098);
+emit_16(1031);
+emit_16(1098);
+emit_16(1032);
+emit_16(1099);
+emit_16(1033);
+emit_16(1099);
+emit_16(1032);
+emit_16(1099);
+emit_16(1033);
+emit_16(1100);
+emit_16(1034);
+emit_16(1100);
+emit_16(1033);
+emit_16(1100);
+emit_16(1034);
+emit_16(1101);
+emit_16(1035);
+emit_16(1101);
+emit_16(1034);
+emit_16(1101);
+emit_16(1035);
+emit_16(1102);
+emit_16(1036);
+emit_16(1102);
+emit_16(1035);
+emit_16(1102);
+emit_16(1036);
+emit_16(1103);
+emit_16(1037);
+emit_16(1103);
+emit_16(1036);
+emit_16(1103);
+emit_16(1037);
+emit_16(1104);
+emit_16(1038);
+emit_16(1104);
+emit_16(1037);
+emit_16(1104);
+emit_16(1038);
+emit_16(1105);
+emit_16(1039);
+emit_16(1105);
+emit_16(1038);
+emit_16(1105);
+emit_16(1039);
+emit_16(1106);
+emit_16(1040);
+emit_16(1106);
+emit_16(1039);
+emit_16(1106);
+emit_16(1040);
+emit_16(1107);
+emit_16(1041);
+emit_16(1107);
+emit_16(1040);
+emit_16(1107);
+emit_16(1041);
+emit_16(1108);
+emit_16(1042);
+emit_16(1108);
+emit_16(1041);
+emit_16(1108);
+emit_16(1042);
+emit_16(1109);
+emit_16(1043);
+emit_16(1109);
+emit_16(1042);
+emit_16(1109);
+emit_16(1043);
+emit_16(1110);
+emit_16(1044);
+emit_16(1110);
+emit_16(1043);
+emit_16(1110);
+emit_16(1044);
+emit_16(1111);
+emit_16(1045);
+emit_16(1111);
+emit_16(1044);
+emit_16(1111);
+emit_16(1045);
+emit_16(1112);
+emit_16(1046);
+emit_16(1112);
+emit_16(1045);
+emit_16(1112);
+emit_16(1046);
+emit_16(1113);
+emit_16(1047);
+emit_16(1113);
+emit_16(1046);
+emit_16(1113);
+emit_16(1047);
+emit_16(1114);
+emit_16(1048);
+emit_16(1114);
+emit_16(1047);
+emit_16(1114);
+emit_16(1048);
+emit_16(1115);
+emit_16(1049);
+emit_16(1115);
+emit_16(1048);
+emit_16(1115);
+emit_16(1049);
+emit_16(1116);
+emit_16(1050);
+emit_16(1116);
+emit_16(1049);
+emit_16(1116);
+emit_16(1050);
+emit_16(1117);
+emit_16(1051);
+emit_16(1117);
+emit_16(1050);
+emit_16(1117);
+emit_16(1051);
+emit_16(1118);
+emit_16(1052);
+emit_16(1118);
+emit_16(1051);
+emit_16(1118);
+emit_16(1052);
+emit_16(1119);
+emit_16(1053);
+emit_16(1119);
+emit_16(1052);
+emit_16(1119);
+emit_16(1053);
+emit_16(1120);
+emit_16(1054);
+emit_16(1120);
+emit_16(1053);
+emit_16(1120);
+emit_16(1054);
+emit_16(1121);
+emit_16(1055);
+emit_16(1121);
+emit_16(1054);
+emit_16(1122);
+emit_16(1056);
+emit_16(1123);
+emit_16(1057);
+emit_16(1123);
+emit_16(1056);
+emit_16(1123);
+emit_16(1057);
+emit_16(1124);
+emit_16(1058);
+emit_16(1124);
+emit_16(1057);
+emit_16(1124);
+emit_16(1058);
+emit_16(1125);
+emit_16(1059);
+emit_16(1125);
+emit_16(1058);
+emit_16(1125);
+emit_16(1059);
+emit_16(1126);
+emit_16(1060);
+emit_16(1126);
+emit_16(1059);
+emit_16(1126);
+emit_16(1060);
+emit_16(1127);
+emit_16(1061);
+emit_16(1127);
+emit_16(1060);
+emit_16(1127);
+emit_16(1061);
+emit_16(1128);
+emit_16(1062);
+emit_16(1128);
+emit_16(1061);
+emit_16(1128);
+emit_16(1062);
+emit_16(1129);
+emit_16(1063);
+emit_16(1129);
+emit_16(1062);
+emit_16(1129);
+emit_16(1063);
+emit_16(1130);
+emit_16(1064);
+emit_16(1130);
+emit_16(1063);
+emit_16(1130);
+emit_16(1064);
+emit_16(1131);
+emit_16(1065);
+emit_16(1131);
+emit_16(1064);
+emit_16(1131);
+emit_16(1065);
+emit_16(1132);
+emit_16(1066);
+emit_16(1132);
+emit_16(1065);
+emit_16(1132);
+emit_16(1066);
+emit_16(1133);
+emit_16(1067);
+emit_16(1133);
+emit_16(1066);
+emit_16(1133);
+emit_16(1067);
+emit_16(1134);
+emit_16(1068);
+emit_16(1134);
+emit_16(1067);
+emit_16(1134);
+emit_16(1068);
+emit_16(1135);
+emit_16(1069);
+emit_16(1135);
+emit_16(1068);
+emit_16(1135);
+emit_16(1069);
+emit_16(1136);
+emit_16(1070);
+emit_16(1136);
+emit_16(1069);
+emit_16(1136);
+emit_16(1070);
+emit_16(1137);
+emit_16(1071);
+emit_16(1137);
+emit_16(1070);
+emit_16(1137);
+emit_16(1071);
+emit_16(1138);
+emit_16(1072);
+emit_16(1138);
+emit_16(1071);
+emit_16(1138);
+emit_16(1072);
+emit_16(1139);
+emit_16(1073);
+emit_16(1139);
+emit_16(1072);
+emit_16(1139);
+emit_16(1073);
+emit_16(1140);
+emit_16(1074);
+emit_16(1140);
+emit_16(1073);
+emit_16(1140);
+emit_16(1074);
+emit_16(1141);
+emit_16(1075);
+emit_16(1141);
+emit_16(1074);
+emit_16(1141);
+emit_16(1075);
+emit_16(1142);
+emit_16(1076);
+emit_16(1142);
+emit_16(1075);
+emit_16(1142);
+emit_16(1076);
+emit_16(1143);
+emit_16(1077);
+emit_16(1143);
+emit_16(1076);
+emit_16(1143);
+emit_16(1077);
+emit_16(1144);
+emit_16(1078);
+emit_16(1144);
+emit_16(1077);
+emit_16(1144);
+emit_16(1078);
+emit_16(1145);
+emit_16(1079);
+emit_16(1145);
+emit_16(1078);
+emit_16(1145);
+emit_16(1079);
+emit_16(1146);
+emit_16(1080);
+emit_16(1146);
+emit_16(1079);
+emit_16(1146);
+emit_16(1080);
+emit_16(1147);
+emit_16(1081);
+emit_16(1147);
+emit_16(1080);
+emit_16(1147);
+emit_16(1081);
+emit_16(1148);
+emit_16(1082);
+emit_16(1148);
+emit_16(1081);
+emit_16(1148);
+emit_16(1082);
+emit_16(1149);
+emit_16(1083);
+emit_16(1149);
+emit_16(1082);
+emit_16(1149);
+emit_16(1083);
+emit_16(1150);
+emit_16(1084);
+emit_16(1150);
+emit_16(1083);
+emit_16(1150);
+emit_16(1084);
+emit_16(1151);
+emit_16(1085);
+emit_16(1151);
+emit_16(1084);
+emit_16(1151);
+emit_16(1085);
+emit_16(1152);
+emit_16(1086);
+emit_16(1152);
+emit_16(1085);
+emit_16(1152);
+emit_16(1086);
+emit_16(1153);
+emit_16(1087);
+emit_16(1153);
+emit_16(1086);
+emit_16(1153);
+emit_16(1087);
+emit_16(1154);
+emit_16(1088);
+emit_16(1154);
+emit_16(1087);
+emit_16(1154);
+emit_16(1088);
+emit_16(1155);
+emit_16(1089);
+emit_16(1155);
+emit_16(1088);
+emit_16(1155);
+emit_16(1089);
+emit_16(1156);
+emit_16(1090);
+emit_16(1156);
+emit_16(1089);
+emit_16(1156);
+emit_16(1090);
+emit_16(1157);
+emit_16(1091);
+emit_16(1157);
+emit_16(1090);
+emit_16(1157);
+emit_16(1091);
+emit_16(1158);
+emit_16(1092);
+emit_16(1158);
+emit_16(1091);
+emit_16(1158);
+emit_16(1092);
+emit_16(1159);
+emit_16(1093);
+emit_16(1159);
+emit_16(1092);
+emit_16(1159);
+emit_16(1093);
+emit_16(1160);
+emit_16(1094);
+emit_16(1160);
+emit_16(1093);
+emit_16(1160);
+emit_16(1094);
+emit_16(1161);
+emit_16(1095);
+emit_16(1161);
+emit_16(1094);
+emit_16(1161);
+emit_16(1095);
+emit_16(1162);
+emit_16(1096);
+emit_16(1162);
+emit_16(1095);
+emit_16(1162);
+emit_16(1096);
+emit_16(1163);
+emit_16(1097);
+emit_16(1163);
+emit_16(1096);
+emit_16(1163);
+emit_16(1097);
+emit_16(1164);
+emit_16(1098);
+emit_16(1164);
+emit_16(1097);
+emit_16(1164);
+emit_16(1098);
+emit_16(1165);
+emit_16(1099);
+emit_16(1165);
+emit_16(1098);
+emit_16(1165);
+emit_16(1099);
+emit_16(1166);
+emit_16(1100);
+emit_16(1166);
+emit_16(1099);
+emit_16(1166);
+emit_16(1100);
+emit_16(1167);
+emit_16(1101);
+emit_16(1167);
+emit_16(1100);
+emit_16(1167);
+emit_16(1101);
+emit_16(1168);
+emit_16(1102);
+emit_16(1168);
+emit_16(1101);
+emit_16(1168);
+emit_16(1102);
+emit_16(1169);
+emit_16(1103);
+emit_16(1169);
+emit_16(1102);
+emit_16(1169);
+emit_16(1103);
+emit_16(1170);
+emit_16(1104);
+emit_16(1170);
+emit_16(1103);
+emit_16(1170);
+emit_16(1104);
+emit_16(1171);
+emit_16(1105);
+emit_16(1171);
+emit_16(1104);
+emit_16(1171);
+emit_16(1105);
+emit_16(1172);
+emit_16(1106);
+emit_16(1172);
+emit_16(1105);
+emit_16(1172);
+emit_16(1106);
+emit_16(1173);
+emit_16(1107);
+emit_16(1173);
+emit_16(1106);
+emit_16(1173);
+emit_16(1107);
+emit_16(1174);
+emit_16(1108);
+emit_16(1174);
+emit_16(1107);
+emit_16(1174);
+emit_16(1108);
+emit_16(1175);
+emit_16(1109);
+emit_16(1175);
+emit_16(1108);
+emit_16(1175);
+emit_16(1109);
+emit_16(1176);
+emit_16(1110);
+emit_16(1176);
+emit_16(1109);
+emit_16(1176);
+emit_16(1110);
+emit_16(1177);
+emit_16(1111);
+emit_16(1177);
+emit_16(1110);
+emit_16(1177);
+emit_16(1111);
+emit_16(1178);
+emit_16(1112);
+emit_16(1178);
+emit_16(1111);
+emit_16(1178);
+emit_16(1112);
+emit_16(1179);
+emit_16(1113);
+emit_16(1179);
+emit_16(1112);
+emit_16(1179);
+emit_16(1113);
+emit_16(1180);
+emit_16(1114);
+emit_16(1180);
+emit_16(1113);
+emit_16(1180);
+emit_16(1114);
+emit_16(1181);
+emit_16(1115);
+emit_16(1181);
+emit_16(1114);
+emit_16(1181);
+emit_16(1115);
+emit_16(1182);
+emit_16(1116);
+emit_16(1182);
+emit_16(1115);
+emit_16(1182);
+emit_16(1116);
+emit_16(1183);
+emit_16(1117);
+emit_16(1183);
+emit_16(1116);
+emit_16(1183);
+emit_16(1117);
+emit_16(1184);
+emit_16(1118);
+emit_16(1184);
+emit_16(1117);
+emit_16(1184);
+emit_16(1118);
+emit_16(1185);
+emit_16(1119);
+emit_16(1185);
+emit_16(1118);
+emit_16(1185);
+emit_16(1119);
+emit_16(1186);
+emit_16(1120);
+emit_16(1186);
+emit_16(1119);
+emit_16(1186);
+emit_16(1120);
+emit_16(1187);
+emit_16(1121);
+emit_16(1187);
+emit_16(1120);
+emit_16(1188);
+emit_16(1122);
+emit_16(1189);
+emit_16(1123);
+emit_16(1189);
+emit_16(1122);
+emit_16(1189);
+emit_16(1123);
+emit_16(1190);
+emit_16(1124);
+emit_16(1190);
+emit_16(1123);
+emit_16(1190);
+emit_16(1124);
+emit_16(1191);
+emit_16(1125);
+emit_16(1191);
+emit_16(1124);
+emit_16(1191);
+emit_16(1125);
+emit_16(1192);
+emit_16(1126);
+emit_16(1192);
+emit_16(1125);
+emit_16(1192);
+emit_16(1126);
+emit_16(1193);
+emit_16(1127);
+emit_16(1193);
+emit_16(1126);
+emit_16(1193);
+emit_16(1127);
+emit_16(1194);
+emit_16(1128);
+emit_16(1194);
+emit_16(1127);
+emit_16(1194);
+emit_16(1128);
+emit_16(1195);
+emit_16(1129);
+emit_16(1195);
+emit_16(1128);
+emit_16(1195);
+emit_16(1129);
+emit_16(1196);
+emit_16(1130);
+emit_16(1196);
+emit_16(1129);
+emit_16(1196);
+emit_16(1130);
+emit_16(1197);
+emit_16(1131);
+emit_16(1197);
+emit_16(1130);
+emit_16(1197);
+emit_16(1131);
+emit_16(1198);
+emit_16(1132);
+emit_16(1198);
+emit_16(1131);
+emit_16(1198);
+emit_16(1132);
+emit_16(1199);
+emit_16(1133);
+emit_16(1199);
+emit_16(1132);
+emit_16(1199);
+emit_16(1133);
+emit_16(1200);
+emit_16(1134);
+emit_16(1200);
+emit_16(1133);
+emit_16(1200);
+emit_16(1134);
+emit_16(1201);
+emit_16(1135);
+emit_16(1201);
+emit_16(1134);
+emit_16(1201);
+emit_16(1135);
+emit_16(1202);
+emit_16(1136);
+emit_16(1202);
+emit_16(1135);
+emit_16(1202);
+emit_16(1136);
+emit_16(1203);
+emit_16(1137);
+emit_16(1203);
+emit_16(1136);
+emit_16(1203);
+emit_16(1137);
+emit_16(1204);
+emit_16(1138);
+emit_16(1204);
+emit_16(1137);
+emit_16(1204);
+emit_16(1138);
+emit_16(1205);
+emit_16(1139);
+emit_16(1205);
+emit_16(1138);
+emit_16(1205);
+emit_16(1139);
+emit_16(1206);
+emit_16(1140);
+emit_16(1206);
+emit_16(1139);
+emit_16(1206);
+emit_16(1140);
+emit_16(1207);
+emit_16(1141);
+emit_16(1207);
+emit_16(1140);
+emit_16(1207);
+emit_16(1141);
+emit_16(1208);
+emit_16(1142);
+emit_16(1208);
+emit_16(1141);
+emit_16(1208);
+emit_16(1142);
+emit_16(1209);
+emit_16(1143);
+emit_16(1209);
+emit_16(1142);
+emit_16(1209);
+emit_16(1143);
+emit_16(1210);
+emit_16(1144);
+emit_16(1210);
+emit_16(1143);
+emit_16(1210);
+emit_16(1144);
+emit_16(1211);
+emit_16(1145);
+emit_16(1211);
+emit_16(1144);
+emit_16(1211);
+emit_16(1145);
+emit_16(1212);
+emit_16(1146);
+emit_16(1212);
+emit_16(1145);
+emit_16(1212);
+emit_16(1146);
+emit_16(1213);
+emit_16(1147);
+emit_16(1213);
+emit_16(1146);
+emit_16(1213);
+emit_16(1147);
+emit_16(1214);
+emit_16(1148);
+emit_16(1214);
+emit_16(1147);
+emit_16(1214);
+emit_16(1148);
+emit_16(1215);
+emit_16(1149);
+emit_16(1215);
+emit_16(1148);
+emit_16(1215);
+emit_16(1149);
+emit_16(1216);
+emit_16(1150);
+emit_16(1216);
+emit_16(1149);
+emit_16(1216);
+emit_16(1150);
+emit_16(1217);
+emit_16(1151);
+emit_16(1217);
+emit_16(1150);
+emit_16(1217);
+emit_16(1151);
+emit_16(1218);
+emit_16(1152);
+emit_16(1218);
+emit_16(1151);
+emit_16(1218);
+emit_16(1152);
+emit_16(1219);
+emit_16(1153);
+emit_16(1219);
+emit_16(1152);
+emit_16(1219);
+emit_16(1153);
+emit_16(1220);
+emit_16(1154);
+emit_16(1220);
+emit_16(1153);
+emit_16(1220);
+emit_16(1154);
+emit_16(1221);
+emit_16(1155);
+emit_16(1221);
+emit_16(1154);
+emit_16(1221);
+emit_16(1155);
+emit_16(1222);
+emit_16(1156);
+emit_16(1222);
+emit_16(1155);
+emit_16(1222);
+emit_16(1156);
+emit_16(1223);
+emit_16(1157);
+emit_16(1223);
+emit_16(1156);
+emit_16(1223);
+emit_16(1157);
+emit_16(1224);
+emit_16(1158);
+emit_16(1224);
+emit_16(1157);
+emit_16(1224);
+emit_16(1158);
+emit_16(1225);
+emit_16(1159);
+emit_16(1225);
+emit_16(1158);
+emit_16(1225);
+emit_16(1159);
+emit_16(1226);
+emit_16(1160);
+emit_16(1226);
+emit_16(1159);
+emit_16(1226);
+emit_16(1160);
+emit_16(1227);
+emit_16(1161);
+emit_16(1227);
+emit_16(1160);
+emit_16(1227);
+emit_16(1161);
+emit_16(1228);
+emit_16(1162);
+emit_16(1228);
+emit_16(1161);
+emit_16(1228);
+emit_16(1162);
+emit_16(1229);
+emit_16(1163);
+emit_16(1229);
+emit_16(1162);
+emit_16(1229);
+emit_16(1163);
+emit_16(1230);
+emit_16(1164);
+emit_16(1230);
+emit_16(1163);
+emit_16(1230);
+emit_16(1164);
+emit_16(1231);
+emit_16(1165);
+emit_16(1231);
+emit_16(1164);
+emit_16(1231);
+emit_16(1165);
+emit_16(1232);
+emit_16(1166);
+emit_16(1232);
+emit_16(1165);
+emit_16(1232);
+emit_16(1166);
+emit_16(1233);
+emit_16(1167);
+emit_16(1233);
+emit_16(1166);
+emit_16(1233);
+emit_16(1167);
+emit_16(1234);
+emit_16(1168);
+emit_16(1234);
+emit_16(1167);
+emit_16(1234);
+emit_16(1168);
+emit_16(1235);
+emit_16(1169);
+emit_16(1235);
+emit_16(1168);
+emit_16(1235);
+emit_16(1169);
+emit_16(1236);
+emit_16(1170);
+emit_16(1236);
+emit_16(1169);
+emit_16(1236);
+emit_16(1170);
+emit_16(1237);
+emit_16(1171);
+emit_16(1237);
+emit_16(1170);
+emit_16(1237);
+emit_16(1171);
+emit_16(1238);
+emit_16(1172);
+emit_16(1238);
+emit_16(1171);
+emit_16(1238);
+emit_16(1172);
+emit_16(1239);
+emit_16(1173);
+emit_16(1239);
+emit_16(1172);
+emit_16(1239);
+emit_16(1173);
+emit_16(1240);
+emit_16(1174);
+emit_16(1240);
+emit_16(1173);
+emit_16(1240);
+emit_16(1174);
+emit_16(1241);
+emit_16(1175);
+emit_16(1241);
+emit_16(1174);
+emit_16(1241);
+emit_16(1175);
+emit_16(1242);
+emit_16(1176);
+emit_16(1242);
+emit_16(1175);
+emit_16(1242);
+emit_16(1176);
+emit_16(1243);
+emit_16(1177);
+emit_16(1243);
+emit_16(1176);
+emit_16(1243);
+emit_16(1177);
+emit_16(1244);
+emit_16(1178);
+emit_16(1244);
+emit_16(1177);
+emit_16(1244);
+emit_16(1178);
+emit_16(1245);
+emit_16(1179);
+emit_16(1245);
+emit_16(1178);
+emit_16(1245);
+emit_16(1179);
+emit_16(1246);
+emit_16(1180);
+emit_16(1246);
+emit_16(1179);
+emit_16(1246);
+emit_16(1180);
+emit_16(1247);
+emit_16(1181);
+emit_16(1247);
+emit_16(1180);
+emit_16(1247);
+emit_16(1181);
+emit_16(1248);
+emit_16(1182);
+emit_16(1248);
+emit_16(1181);
+emit_16(1248);
+emit_16(1182);
+emit_16(1249);
+emit_16(1183);
+emit_16(1249);
+emit_16(1182);
+emit_16(1249);
+emit_16(1183);
+emit_16(1250);
+emit_16(1184);
+emit_16(1250);
+emit_16(1183);
+emit_16(1250);
+emit_16(1184);
+emit_16(1251);
+emit_16(1185);
+emit_16(1251);
+emit_16(1184);
+emit_16(1251);
+emit_16(1185);
+emit_16(1252);
+emit_16(1186);
+emit_16(1252);
+emit_16(1185);
+emit_16(1252);
+emit_16(1186);
+emit_16(1253);
+emit_16(1187);
+emit_16(1253);
+emit_16(1186);
+emit_16(1254);
+emit_16(1188);
+emit_16(1255);
+emit_16(1189);
+emit_16(1255);
+emit_16(1188);
+emit_16(1255);
+emit_16(1189);
+emit_16(1256);
+emit_16(1190);
+emit_16(1256);
+emit_16(1189);
+emit_16(1256);
+emit_16(1190);
+emit_16(1257);
+emit_16(1191);
+emit_16(1257);
+emit_16(1190);
+emit_16(1257);
+emit_16(1191);
+emit_16(1258);
+emit_16(1192);
+emit_16(1258);
+emit_16(1191);
+emit_16(1258);
+emit_16(1192);
+emit_16(1259);
+emit_16(1193);
+emit_16(1259);
+emit_16(1192);
+emit_16(1259);
+emit_16(1193);
+emit_16(1260);
+emit_16(1194);
+emit_16(1260);
+emit_16(1193);
+emit_16(1260);
+emit_16(1194);
+emit_16(1261);
+emit_16(1195);
+emit_16(1261);
+emit_16(1194);
+emit_16(1261);
+emit_16(1195);
+emit_16(1262);
+emit_16(1196);
+emit_16(1262);
+emit_16(1195);
+emit_16(1262);
+emit_16(1196);
+emit_16(1263);
+emit_16(1197);
+emit_16(1263);
+emit_16(1196);
+emit_16(1263);
+emit_16(1197);
+emit_16(1264);
+emit_16(1198);
+emit_16(1264);
+emit_16(1197);
+emit_16(1264);
+emit_16(1198);
+emit_16(1265);
+emit_16(1199);
+emit_16(1265);
+emit_16(1198);
+emit_16(1265);
+emit_16(1199);
+emit_16(1266);
+emit_16(1200);
+emit_16(1266);
+emit_16(1199);
+emit_16(1266);
+emit_16(1200);
+emit_16(1267);
+emit_16(1201);
+emit_16(1267);
+emit_16(1200);
+emit_16(1267);
+emit_16(1201);
+emit_16(1268);
+emit_16(1202);
+emit_16(1268);
+emit_16(1201);
+emit_16(1268);
+emit_16(1202);
+emit_16(1269);
+emit_16(1203);
+emit_16(1269);
+emit_16(1202);
+emit_16(1269);
+emit_16(1203);
+emit_16(1270);
+emit_16(1204);
+emit_16(1270);
+emit_16(1203);
+emit_16(1270);
+emit_16(1204);
+emit_16(1271);
+emit_16(1205);
+emit_16(1271);
+emit_16(1204);
+emit_16(1271);
+emit_16(1205);
+emit_16(1272);
+emit_16(1206);
+emit_16(1272);
+emit_16(1205);
+emit_16(1272);
+emit_16(1206);
+emit_16(1273);
+emit_16(1207);
+emit_16(1273);
+emit_16(1206);
+emit_16(1273);
+emit_16(1207);
+emit_16(1274);
+emit_16(1208);
+emit_16(1274);
+emit_16(1207);
+emit_16(1274);
+emit_16(1208);
+emit_16(1275);
+emit_16(1209);
+emit_16(1275);
+emit_16(1208);
+emit_16(1275);
+emit_16(1209);
+emit_16(1276);
+emit_16(1210);
+emit_16(1276);
+emit_16(1209);
+emit_16(1276);
+emit_16(1210);
+emit_16(1277);
+emit_16(1211);
+emit_16(1277);
+emit_16(1210);
+emit_16(1277);
+emit_16(1211);
+emit_16(1278);
+emit_16(1212);
+emit_16(1278);
+emit_16(1211);
+emit_16(1278);
+emit_16(1212);
+emit_16(1279);
+emit_16(1213);
+emit_16(1279);
+emit_16(1212);
+emit_16(1279);
+emit_16(1213);
+emit_16(1280);
+emit_16(1214);
+emit_16(1280);
+emit_16(1213);
+emit_16(1280);
+emit_16(1214);
+emit_16(1281);
+emit_16(1215);
+emit_16(1281);
+emit_16(1214);
+emit_16(1281);
+emit_16(1215);
+emit_16(1282);
+emit_16(1216);
+emit_16(1282);
+emit_16(1215);
+emit_16(1282);
+emit_16(1216);
+emit_16(1283);
+emit_16(1217);
+emit_16(1283);
+emit_16(1216);
+emit_16(1283);
+emit_16(1217);
+emit_16(1284);
+emit_16(1218);
+emit_16(1284);
+emit_16(1217);
+emit_16(1284);
+emit_16(1218);
+emit_16(1285);
+emit_16(1219);
+emit_16(1285);
+emit_16(1218);
+emit_16(1285);
+emit_16(1219);
+emit_16(1286);
+emit_16(1220);
+emit_16(1286);
+emit_16(1219);
+emit_16(1286);
+emit_16(1220);
+emit_16(1287);
+emit_16(1221);
+emit_16(1287);
+emit_16(1220);
+emit_16(1287);
+emit_16(1221);
+emit_16(1288);
+emit_16(1222);
+emit_16(1288);
+emit_16(1221);
+emit_16(1288);
+emit_16(1222);
+emit_16(1289);
+emit_16(1223);
+emit_16(1289);
+emit_16(1222);
+emit_16(1289);
+emit_16(1223);
+emit_16(1290);
+emit_16(1224);
+emit_16(1290);
+emit_16(1223);
+emit_16(1290);
+emit_16(1224);
+emit_16(1291);
+emit_16(1225);
+emit_16(1291);
+emit_16(1224);
+emit_16(1291);
+emit_16(1225);
+emit_16(1292);
+emit_16(1226);
+emit_16(1292);
+emit_16(1225);
+emit_16(1292);
+emit_16(1226);
+emit_16(1293);
+emit_16(1227);
+emit_16(1293);
+emit_16(1226);
+emit_16(1293);
+emit_16(1227);
+emit_16(1294);
+emit_16(1228);
+emit_16(1294);
+emit_16(1227);
+emit_16(1294);
+emit_16(1228);
+emit_16(1295);
+emit_16(1229);
+emit_16(1295);
+emit_16(1228);
+emit_16(1295);
+emit_16(1229);
+emit_16(1296);
+emit_16(1230);
+emit_16(1296);
+emit_16(1229);
+emit_16(1296);
+emit_16(1230);
+emit_16(1297);
+emit_16(1231);
+emit_16(1297);
+emit_16(1230);
+emit_16(1297);
+emit_16(1231);
+emit_16(1298);
+emit_16(1232);
+emit_16(1298);
+emit_16(1231);
+emit_16(1298);
+emit_16(1232);
+emit_16(1299);
+emit_16(1233);
+emit_16(1299);
+emit_16(1232);
+emit_16(1299);
+emit_16(1233);
+emit_16(1300);
+emit_16(1234);
+emit_16(1300);
+emit_16(1233);
+emit_16(1300);
+emit_16(1234);
+emit_16(1301);
+emit_16(1235);
+emit_16(1301);
+emit_16(1234);
+emit_16(1301);
+emit_16(1235);
+emit_16(1302);
+emit_16(1236);
+emit_16(1302);
+emit_16(1235);
+emit_16(1302);
+emit_16(1236);
+emit_16(1303);
+emit_16(1237);
+emit_16(1303);
+emit_16(1236);
+emit_16(1303);
+emit_16(1237);
+emit_16(1304);
+emit_16(1238);
+emit_16(1304);
+emit_16(1237);
+emit_16(1304);
+emit_16(1238);
+emit_16(1305);
+emit_16(1239);
+emit_16(1305);
+emit_16(1238);
+emit_16(1305);
+emit_16(1239);
+emit_16(1306);
+emit_16(1240);
+emit_16(1306);
+emit_16(1239);
+emit_16(1306);
+emit_16(1240);
+emit_16(1307);
+emit_16(1241);
+emit_16(1307);
+emit_16(1240);
+emit_16(1307);
+emit_16(1241);
+emit_16(1308);
+emit_16(1242);
+emit_16(1308);
+emit_16(1241);
+emit_16(1308);
+emit_16(1242);
+emit_16(1309);
+emit_16(1243);
+emit_16(1309);
+emit_16(1242);
+emit_16(1309);
+emit_16(1243);
+emit_16(1310);
+emit_16(1244);
+emit_16(1310);
+emit_16(1243);
+emit_16(1310);
+emit_16(1244);
+emit_16(1311);
+emit_16(1245);
+emit_16(1311);
+emit_16(1244);
+emit_16(1311);
+emit_16(1245);
+emit_16(1312);
+emit_16(1246);
+emit_16(1312);
+emit_16(1245);
+emit_16(1312);
+emit_16(1246);
+emit_16(1313);
+emit_16(1247);
+emit_16(1313);
+emit_16(1246);
+emit_16(1313);
+emit_16(1247);
+emit_16(1314);
+emit_16(1248);
+emit_16(1314);
+emit_16(1247);
+emit_16(1314);
+emit_16(1248);
+emit_16(1315);
+emit_16(1249);
+emit_16(1315);
+emit_16(1248);
+emit_16(1315);
+emit_16(1249);
+emit_16(1316);
+emit_16(1250);
+emit_16(1316);
+emit_16(1249);
+emit_16(1316);
+emit_16(1250);
+emit_16(1317);
+emit_16(1251);
+emit_16(1317);
+emit_16(1250);
+emit_16(1317);
+emit_16(1251);
+emit_16(1318);
+emit_16(1252);
+emit_16(1318);
+emit_16(1251);
+emit_16(1318);
+emit_16(1252);
+emit_16(1319);
+emit_16(1253);
+emit_16(1319);
+emit_16(1252);
+emit_16(1320);
+emit_16(1254);
+emit_16(1321);
+emit_16(1255);
+emit_16(1321);
+emit_16(1254);
+emit_16(1321);
+emit_16(1255);
+emit_16(1322);
+emit_16(1256);
+emit_16(1322);
+emit_16(1255);
+emit_16(1322);
+emit_16(1256);
+emit_16(1323);
+emit_16(1257);
+emit_16(1323);
+emit_16(1256);
+emit_16(1323);
+emit_16(1257);
+emit_16(1324);
+emit_16(1258);
+emit_16(1324);
+emit_16(1257);
+emit_16(1324);
+emit_16(1258);
+emit_16(1325);
+emit_16(1259);
+emit_16(1325);
+emit_16(1258);
+emit_16(1325);
+emit_16(1259);
+emit_16(1326);
+emit_16(1260);
+emit_16(1326);
+emit_16(1259);
+emit_16(1326);
+emit_16(1260);
+emit_16(1327);
+emit_16(1261);
+emit_16(1327);
+emit_16(1260);
+emit_16(1327);
+emit_16(1261);
+emit_16(1328);
+emit_16(1262);
+emit_16(1328);
+emit_16(1261);
+emit_16(1328);
+emit_16(1262);
+emit_16(1329);
+emit_16(1263);
+emit_16(1329);
+emit_16(1262);
+emit_16(1329);
+emit_16(1263);
+emit_16(1330);
+emit_16(1264);
+emit_16(1330);
+emit_16(1263);
+emit_16(1330);
+emit_16(1264);
+emit_16(1331);
+emit_16(1265);
+emit_16(1331);
+emit_16(1264);
+emit_16(1331);
+emit_16(1265);
+emit_16(1332);
+emit_16(1266);
+emit_16(1332);
+emit_16(1265);
+emit_16(1332);
+emit_16(1266);
+emit_16(1333);
+emit_16(1267);
+emit_16(1333);
+emit_16(1266);
+emit_16(1333);
+emit_16(1267);
+emit_16(1334);
+emit_16(1268);
+emit_16(1334);
+emit_16(1267);
+emit_16(1334);
+emit_16(1268);
+emit_16(1335);
+emit_16(1269);
+emit_16(1335);
+emit_16(1268);
+emit_16(1335);
+emit_16(1269);
+emit_16(1336);
+emit_16(1270);
+emit_16(1336);
+emit_16(1269);
+emit_16(1336);
+emit_16(1270);
+emit_16(1337);
+emit_16(1271);
+emit_16(1337);
+emit_16(1270);
+emit_16(1337);
+emit_16(1271);
+emit_16(1338);
+emit_16(1272);
+emit_16(1338);
+emit_16(1271);
+emit_16(1338);
+emit_16(1272);
+emit_16(1339);
+emit_16(1273);
+emit_16(1339);
+emit_16(1272);
+emit_16(1339);
+emit_16(1273);
+emit_16(1340);
+emit_16(1274);
+emit_16(1340);
+emit_16(1273);
+emit_16(1340);
+emit_16(1274);
+emit_16(1341);
+emit_16(1275);
+emit_16(1341);
+emit_16(1274);
+emit_16(1341);
+emit_16(1275);
+emit_16(1342);
+emit_16(1276);
+emit_16(1342);
+emit_16(1275);
+emit_16(1342);
+emit_16(1276);
+emit_16(1343);
+emit_16(1277);
+emit_16(1343);
+emit_16(1276);
+emit_16(1343);
+emit_16(1277);
+emit_16(1344);
+emit_16(1278);
+emit_16(1344);
+emit_16(1277);
+emit_16(1344);
+emit_16(1278);
+emit_16(1345);
+emit_16(1279);
+emit_16(1345);
+emit_16(1278);
+emit_16(1345);
+emit_16(1279);
+emit_16(1346);
+emit_16(1280);
+emit_16(1346);
+emit_16(1279);
+emit_16(1346);
+emit_16(1280);
+emit_16(1347);
+emit_16(1281);
+emit_16(1347);
+emit_16(1280);
+emit_16(1347);
+emit_16(1281);
+emit_16(1348);
+emit_16(1282);
+emit_16(1348);
+emit_16(1281);
+emit_16(1348);
+emit_16(1282);
+emit_16(1349);
+emit_16(1283);
+emit_16(1349);
+emit_16(1282);
+emit_16(1349);
+emit_16(1283);
+emit_16(1350);
+emit_16(1284);
+emit_16(1350);
+emit_16(1283);
+emit_16(1350);
+emit_16(1284);
+emit_16(1351);
+emit_16(1285);
+emit_16(1351);
+emit_16(1284);
+emit_16(1351);
+emit_16(1285);
+emit_16(1352);
+emit_16(1286);
+emit_16(1352);
+emit_16(1285);
+emit_16(1352);
+emit_16(1286);
+emit_16(1353);
+emit_16(1287);
+emit_16(1353);
+emit_16(1286);
+emit_16(1353);
+emit_16(1287);
+emit_16(1354);
+emit_16(1288);
+emit_16(1354);
+emit_16(1287);
+emit_16(1354);
+emit_16(1288);
+emit_16(1355);
+emit_16(1289);
+emit_16(1355);
+emit_16(1288);
+emit_16(1355);
+emit_16(1289);
+emit_16(1356);
+emit_16(1290);
+emit_16(1356);
+emit_16(1289);
+emit_16(1356);
+emit_16(1290);
+emit_16(1357);
+emit_16(1291);
+emit_16(1357);
+emit_16(1290);
+emit_16(1357);
+emit_16(1291);
+emit_16(1358);
+emit_16(1292);
+emit_16(1358);
+emit_16(1291);
+emit_16(1358);
+emit_16(1292);
+emit_16(1359);
+emit_16(1293);
+emit_16(1359);
+emit_16(1292);
+emit_16(1359);
+emit_16(1293);
+emit_16(1360);
+emit_16(1294);
+emit_16(1360);
+emit_16(1293);
+emit_16(1360);
+emit_16(1294);
+emit_16(1361);
+emit_16(1295);
+emit_16(1361);
+emit_16(1294);
+emit_16(1361);
+emit_16(1295);
+emit_16(1362);
+emit_16(1296);
+emit_16(1362);
+emit_16(1295);
+emit_16(1362);
+emit_16(1296);
+emit_16(1363);
+emit_16(1297);
+emit_16(1363);
+emit_16(1296);
+emit_16(1363);
+emit_16(1297);
+emit_16(1364);
+emit_16(1298);
+emit_16(1364);
+emit_16(1297);
+emit_16(1364);
+emit_16(1298);
+emit_16(1365);
+emit_16(1299);
+emit_16(1365);
+emit_16(1298);
+emit_16(1365);
+emit_16(1299);
+emit_16(1366);
+emit_16(1300);
+emit_16(1366);
+emit_16(1299);
+emit_16(1366);
+emit_16(1300);
+emit_16(1367);
+emit_16(1301);
+emit_16(1367);
+emit_16(1300);
+emit_16(1367);
+emit_16(1301);
+emit_16(1368);
+emit_16(1302);
+emit_16(1368);
+emit_16(1301);
+emit_16(1368);
+emit_16(1302);
+emit_16(1369);
+emit_16(1303);
+emit_16(1369);
+emit_16(1302);
+emit_16(1369);
+emit_16(1303);
+emit_16(1370);
+emit_16(1304);
+emit_16(1370);
+emit_16(1303);
+emit_16(1370);
+emit_16(1304);
+emit_16(1371);
+emit_16(1305);
+emit_16(1371);
+emit_16(1304);
+emit_16(1371);
+emit_16(1305);
+emit_16(1372);
+emit_16(1306);
+emit_16(1372);
+emit_16(1305);
+emit_16(1372);
+emit_16(1306);
+emit_16(1373);
+emit_16(1307);
+emit_16(1373);
+emit_16(1306);
+emit_16(1373);
+emit_16(1307);
+emit_16(1374);
+emit_16(1308);
+emit_16(1374);
+emit_16(1307);
+emit_16(1374);
+emit_16(1308);
+emit_16(1375);
+emit_16(1309);
+emit_16(1375);
+emit_16(1308);
+emit_16(1375);
+emit_16(1309);
+emit_16(1376);
+emit_16(1310);
+emit_16(1376);
+emit_16(1309);
+emit_16(1376);
+emit_16(1310);
+emit_16(1377);
+emit_16(1311);
+emit_16(1377);
+emit_16(1310);
+emit_16(1377);
+emit_16(1311);
+emit_16(1378);
+emit_16(1312);
+emit_16(1378);
+emit_16(1311);
+emit_16(1378);
+emit_16(1312);
+emit_16(1379);
+emit_16(1313);
+emit_16(1379);
+emit_16(1312);
+emit_16(1379);
+emit_16(1313);
+emit_16(1380);
+emit_16(1314);
+emit_16(1380);
+emit_16(1313);
+emit_16(1380);
+emit_16(1314);
+emit_16(1381);
+emit_16(1315);
+emit_16(1381);
+emit_16(1314);
+emit_16(1381);
+emit_16(1315);
+emit_16(1382);
+emit_16(1316);
+emit_16(1382);
+emit_16(1315);
+emit_16(1382);
+emit_16(1316);
+emit_16(1383);
+emit_16(1317);
+emit_16(1383);
+emit_16(1316);
+emit_16(1383);
+emit_16(1317);
+emit_16(1384);
+emit_16(1318);
+emit_16(1384);
+emit_16(1317);
+emit_16(1384);
+emit_16(1318);
+emit_16(1385);
+emit_16(1319);
+emit_16(1385);
+emit_16(1318);
+emit_16(1386);
+emit_16(1320);
+emit_16(1387);
+emit_16(1321);
+emit_16(1387);
+emit_16(1320);
+emit_16(1387);
+emit_16(1321);
+emit_16(1388);
+emit_16(1322);
+emit_16(1388);
+emit_16(1321);
+emit_16(1388);
+emit_16(1322);
+emit_16(1389);
+emit_16(1323);
+emit_16(1389);
+emit_16(1322);
+emit_16(1389);
+emit_16(1323);
+emit_16(1390);
+emit_16(1324);
+emit_16(1390);
+emit_16(1323);
+emit_16(1390);
+emit_16(1324);
+emit_16(1391);
+emit_16(1325);
+emit_16(1391);
+emit_16(1324);
+emit_16(1391);
+emit_16(1325);
+emit_16(1392);
+emit_16(1326);
+emit_16(1392);
+emit_16(1325);
+emit_16(1392);
+emit_16(1326);
+emit_16(1393);
+emit_16(1327);
+emit_16(1393);
+emit_16(1326);
+emit_16(1393);
+emit_16(1327);
+emit_16(1394);
+emit_16(1328);
+emit_16(1394);
+emit_16(1327);
+emit_16(1394);
+emit_16(1328);
+emit_16(1395);
+emit_16(1329);
+emit_16(1395);
+emit_16(1328);
+emit_16(1395);
+emit_16(1329);
+emit_16(1396);
+emit_16(1330);
+emit_16(1396);
+emit_16(1329);
+emit_16(1396);
+emit_16(1330);
+emit_16(1397);
+emit_16(1331);
+emit_16(1397);
+emit_16(1330);
+emit_16(1397);
+emit_16(1331);
+emit_16(1398);
+emit_16(1332);
+emit_16(1398);
+emit_16(1331);
+emit_16(1398);
+emit_16(1332);
+emit_16(1399);
+emit_16(1333);
+emit_16(1399);
+emit_16(1332);
+emit_16(1399);
+emit_16(1333);
+emit_16(1400);
+emit_16(1334);
+emit_16(1400);
+emit_16(1333);
+emit_16(1400);
+emit_16(1334);
+emit_16(1401);
+emit_16(1335);
+emit_16(1401);
+emit_16(1334);
+emit_16(1401);
+emit_16(1335);
+emit_16(1402);
+emit_16(1336);
+emit_16(1402);
+emit_16(1335);
+emit_16(1402);
+emit_16(1336);
+emit_16(1403);
+emit_16(1337);
+emit_16(1403);
+emit_16(1336);
+emit_16(1403);
+emit_16(1337);
+emit_16(1404);
+emit_16(1338);
+emit_16(1404);
+emit_16(1337);
+emit_16(1404);
+emit_16(1338);
+emit_16(1405);
+emit_16(1339);
+emit_16(1405);
+emit_16(1338);
+emit_16(1405);
+emit_16(1339);
+emit_16(1406);
+emit_16(1340);
+emit_16(1406);
+emit_16(1339);
+emit_16(1406);
+emit_16(1340);
+emit_16(1407);
+emit_16(1341);
+emit_16(1407);
+emit_16(1340);
+emit_16(1407);
+emit_16(1341);
+emit_16(1408);
+emit_16(1342);
+emit_16(1408);
+emit_16(1341);
+emit_16(1408);
+emit_16(1342);
+emit_16(1409);
+emit_16(1343);
+emit_16(1409);
+emit_16(1342);
+emit_16(1409);
+emit_16(1343);
+emit_16(1410);
+emit_16(1344);
+emit_16(1410);
+emit_16(1343);
+emit_16(1410);
+emit_16(1344);
+emit_16(1411);
+emit_16(1345);
+emit_16(1411);
+emit_16(1344);
+emit_16(1411);
+emit_16(1345);
+emit_16(1412);
+emit_16(1346);
+emit_16(1412);
+emit_16(1345);
+emit_16(1412);
+emit_16(1346);
+emit_16(1413);
+emit_16(1347);
+emit_16(1413);
+emit_16(1346);
+emit_16(1413);
+emit_16(1347);
+emit_16(1414);
+emit_16(1348);
+emit_16(1414);
+emit_16(1347);
+emit_16(1414);
+emit_16(1348);
+emit_16(1415);
+emit_16(1349);
+emit_16(1415);
+emit_16(1348);
+emit_16(1415);
+emit_16(1349);
+emit_16(1416);
+emit_16(1350);
+emit_16(1416);
+emit_16(1349);
+emit_16(1416);
+emit_16(1350);
+emit_16(1417);
+emit_16(1351);
+emit_16(1417);
+emit_16(1350);
+emit_16(1417);
+emit_16(1351);
+emit_16(1418);
+emit_16(1352);
+emit_16(1418);
+emit_16(1351);
+emit_16(1418);
+emit_16(1352);
+emit_16(1419);
+emit_16(1353);
+emit_16(1419);
+emit_16(1352);
+emit_16(1419);
+emit_16(1353);
+emit_16(1420);
+emit_16(1354);
+emit_16(1420);
+emit_16(1353);
+emit_16(1420);
+emit_16(1354);
+emit_16(1421);
+emit_16(1355);
+emit_16(1421);
+emit_16(1354);
+emit_16(1421);
+emit_16(1355);
+emit_16(1422);
+emit_16(1356);
+emit_16(1422);
+emit_16(1355);
+emit_16(1422);
+emit_16(1356);
+emit_16(1423);
+emit_16(1357);
+emit_16(1423);
+emit_16(1356);
+emit_16(1423);
+emit_16(1357);
+emit_16(1424);
+emit_16(1358);
+emit_16(1424);
+emit_16(1357);
+emit_16(1424);
+emit_16(1358);
+emit_16(1425);
+emit_16(1359);
+emit_16(1425);
+emit_16(1358);
+emit_16(1425);
+emit_16(1359);
+emit_16(1426);
+emit_16(1360);
+emit_16(1426);
+emit_16(1359);
+emit_16(1426);
+emit_16(1360);
+emit_16(1427);
+emit_16(1361);
+emit_16(1427);
+emit_16(1360);
+emit_16(1427);
+emit_16(1361);
+emit_16(1428);
+emit_16(1362);
+emit_16(1428);
+emit_16(1361);
+emit_16(1428);
+emit_16(1362);
+emit_16(1429);
+emit_16(1363);
+emit_16(1429);
+emit_16(1362);
+emit_16(1429);
+emit_16(1363);
+emit_16(1430);
+emit_16(1364);
+emit_16(1430);
+emit_16(1363);
+emit_16(1430);
+emit_16(1364);
+emit_16(1431);
+emit_16(1365);
+emit_16(1431);
+emit_16(1364);
+emit_16(1431);
+emit_16(1365);
+emit_16(1432);
+emit_16(1366);
+emit_16(1432);
+emit_16(1365);
+emit_16(1432);
+emit_16(1366);
+emit_16(1433);
+emit_16(1367);
+emit_16(1433);
+emit_16(1366);
+emit_16(1433);
+emit_16(1367);
+emit_16(1434);
+emit_16(1368);
+emit_16(1434);
+emit_16(1367);
+emit_16(1434);
+emit_16(1368);
+emit_16(1435);
+emit_16(1369);
+emit_16(1435);
+emit_16(1368);
+emit_16(1435);
+emit_16(1369);
+emit_16(1436);
+emit_16(1370);
+emit_16(1436);
+emit_16(1369);
+emit_16(1436);
+emit_16(1370);
+emit_16(1437);
+emit_16(1371);
+emit_16(1437);
+emit_16(1370);
+emit_16(1437);
+emit_16(1371);
+emit_16(1438);
+emit_16(1372);
+emit_16(1438);
+emit_16(1371);
+emit_16(1438);
+emit_16(1372);
+emit_16(1439);
+emit_16(1373);
+emit_16(1439);
+emit_16(1372);
+emit_16(1439);
+emit_16(1373);
+emit_16(1440);
+emit_16(1374);
+emit_16(1440);
+emit_16(1373);
+emit_16(1440);
+emit_16(1374);
+emit_16(1441);
+emit_16(1375);
+emit_16(1441);
+emit_16(1374);
+emit_16(1441);
+emit_16(1375);
+emit_16(1442);
+emit_16(1376);
+emit_16(1442);
+emit_16(1375);
+emit_16(1442);
+emit_16(1376);
+emit_16(1443);
+emit_16(1377);
+emit_16(1443);
+emit_16(1376);
+emit_16(1443);
+emit_16(1377);
+emit_16(1444);
+emit_16(1378);
+emit_16(1444);
+emit_16(1377);
+emit_16(1444);
+emit_16(1378);
+emit_16(1445);
+emit_16(1379);
+emit_16(1445);
+emit_16(1378);
+emit_16(1445);
+emit_16(1379);
+emit_16(1446);
+emit_16(1380);
+emit_16(1446);
+emit_16(1379);
+emit_16(1446);
+emit_16(1380);
+emit_16(1447);
+emit_16(1381);
+emit_16(1447);
+emit_16(1380);
+emit_16(1447);
+emit_16(1381);
+emit_16(1448);
+emit_16(1382);
+emit_16(1448);
+emit_16(1381);
+emit_16(1448);
+emit_16(1382);
+emit_16(1449);
+emit_16(1383);
+emit_16(1449);
+emit_16(1382);
+emit_16(1449);
+emit_16(1383);
+emit_16(1450);
+emit_16(1384);
+emit_16(1450);
+emit_16(1383);
+emit_16(1450);
+emit_16(1384);
+emit_16(1451);
+emit_16(1385);
+emit_16(1451);
+emit_16(1384);
+emit_16(1452);
+emit_16(1386);
+emit_16(1453);
+emit_16(1387);
+emit_16(1453);
+emit_16(1386);
+emit_16(1453);
+emit_16(1387);
+emit_16(1454);
+emit_16(1388);
+emit_16(1454);
+emit_16(1387);
+emit_16(1454);
+emit_16(1388);
+emit_16(1455);
+emit_16(1389);
+emit_16(1455);
+emit_16(1388);
+emit_16(1455);
+emit_16(1389);
+emit_16(1456);
+emit_16(1390);
+emit_16(1456);
+emit_16(1389);
+emit_16(1456);
+emit_16(1390);
+emit_16(1457);
+emit_16(1391);
+emit_16(1457);
+emit_16(1390);
+emit_16(1457);
+emit_16(1391);
+emit_16(1458);
+emit_16(1392);
+emit_16(1458);
+emit_16(1391);
+emit_16(1458);
+emit_16(1392);
+emit_16(1459);
+emit_16(1393);
+emit_16(1459);
+emit_16(1392);
+emit_16(1459);
+emit_16(1393);
+emit_16(1460);
+emit_16(1394);
+emit_16(1460);
+emit_16(1393);
+emit_16(1460);
+emit_16(1394);
+emit_16(1461);
+emit_16(1395);
+emit_16(1461);
+emit_16(1394);
+emit_16(1461);
+emit_16(1395);
+emit_16(1462);
+emit_16(1396);
+emit_16(1462);
+emit_16(1395);
+emit_16(1462);
+emit_16(1396);
+emit_16(1463);
+emit_16(1397);
+emit_16(1463);
+emit_16(1396);
+emit_16(1463);
+emit_16(1397);
+emit_16(1464);
+emit_16(1398);
+emit_16(1464);
+emit_16(1397);
+emit_16(1464);
+emit_16(1398);
+emit_16(1465);
+emit_16(1399);
+emit_16(1465);
+emit_16(1398);
+emit_16(1465);
+emit_16(1399);
+emit_16(1466);
+emit_16(1400);
+emit_16(1466);
+emit_16(1399);
+emit_16(1466);
+emit_16(1400);
+emit_16(1467);
+emit_16(1401);
+emit_16(1467);
+emit_16(1400);
+emit_16(1467);
+emit_16(1401);
+emit_16(1468);
+emit_16(1402);
+emit_16(1468);
+emit_16(1401);
+emit_16(1468);
+emit_16(1402);
+emit_16(1469);
+emit_16(1403);
+emit_16(1469);
+emit_16(1402);
+emit_16(1469);
+emit_16(1403);
+emit_16(1470);
+emit_16(1404);
+emit_16(1470);
+emit_16(1403);
+emit_16(1470);
+emit_16(1404);
+emit_16(1471);
+emit_16(1405);
+emit_16(1471);
+emit_16(1404);
+emit_16(1471);
+emit_16(1405);
+emit_16(1472);
+emit_16(1406);
+emit_16(1472);
+emit_16(1405);
+emit_16(1472);
+emit_16(1406);
+emit_16(1473);
+emit_16(1407);
+emit_16(1473);
+emit_16(1406);
+emit_16(1473);
+emit_16(1407);
+emit_16(1474);
+emit_16(1408);
+emit_16(1474);
+emit_16(1407);
+emit_16(1474);
+emit_16(1408);
+emit_16(1475);
+emit_16(1409);
+emit_16(1475);
+emit_16(1408);
+emit_16(1475);
+emit_16(1409);
+emit_16(1476);
+emit_16(1410);
+emit_16(1476);
+emit_16(1409);
+emit_16(1476);
+emit_16(1410);
+emit_16(1477);
+emit_16(1411);
+emit_16(1477);
+emit_16(1410);
+emit_16(1477);
+emit_16(1411);
+emit_16(1478);
+emit_16(1412);
+emit_16(1478);
+emit_16(1411);
+emit_16(1478);
+emit_16(1412);
+emit_16(1479);
+emit_16(1413);
+emit_16(1479);
+emit_16(1412);
+emit_16(1479);
+emit_16(1413);
+emit_16(1480);
+emit_16(1414);
+emit_16(1480);
+emit_16(1413);
+emit_16(1480);
+emit_16(1414);
+emit_16(1481);
+emit_16(1415);
+emit_16(1481);
+emit_16(1414);
+emit_16(1481);
+emit_16(1415);
+emit_16(1482);
+emit_16(1416);
+emit_16(1482);
+emit_16(1415);
+emit_16(1482);
+emit_16(1416);
+emit_16(1483);
+emit_16(1417);
+emit_16(1483);
+emit_16(1416);
+emit_16(1483);
+emit_16(1417);
+emit_16(1484);
+emit_16(1418);
+emit_16(1484);
+emit_16(1417);
+emit_16(1484);
+emit_16(1418);
+emit_16(1485);
+emit_16(1419);
+emit_16(1485);
+emit_16(1418);
+emit_16(1485);
+emit_16(1419);
+emit_16(1486);
+emit_16(1420);
+emit_16(1486);
+emit_16(1419);
+emit_16(1486);
+emit_16(1420);
+emit_16(1487);
+emit_16(1421);
+emit_16(1487);
+emit_16(1420);
+emit_16(1487);
+emit_16(1421);
+emit_16(1488);
+emit_16(1422);
+emit_16(1488);
+emit_16(1421);
+emit_16(1488);
+emit_16(1422);
+emit_16(1489);
+emit_16(1423);
+emit_16(1489);
+emit_16(1422);
+emit_16(1489);
+emit_16(1423);
+emit_16(1490);
+emit_16(1424);
+emit_16(1490);
+emit_16(1423);
+emit_16(1490);
+emit_16(1424);
+emit_16(1491);
+emit_16(1425);
+emit_16(1491);
+emit_16(1424);
+emit_16(1491);
+emit_16(1425);
+emit_16(1492);
+emit_16(1426);
+emit_16(1492);
+emit_16(1425);
+emit_16(1492);
+emit_16(1426);
+emit_16(1493);
+emit_16(1427);
+emit_16(1493);
+emit_16(1426);
+emit_16(1493);
+emit_16(1427);
+emit_16(1494);
+emit_16(1428);
+emit_16(1494);
+emit_16(1427);
+emit_16(1494);
+emit_16(1428);
+emit_16(1495);
+emit_16(1429);
+emit_16(1495);
+emit_16(1428);
+emit_16(1495);
+emit_16(1429);
+emit_16(1496);
+emit_16(1430);
+emit_16(1496);
+emit_16(1429);
+emit_16(1496);
+emit_16(1430);
+emit_16(1497);
+emit_16(1431);
+emit_16(1497);
+emit_16(1430);
+emit_16(1497);
+emit_16(1431);
+emit_16(1498);
+emit_16(1432);
+emit_16(1498);
+emit_16(1431);
+emit_16(1498);
+emit_16(1432);
+emit_16(1499);
+emit_16(1433);
+emit_16(1499);
+emit_16(1432);
+emit_16(1499);
+emit_16(1433);
+emit_16(1500);
+emit_16(1434);
+emit_16(1500);
+emit_16(1433);
+emit_16(1500);
+emit_16(1434);
+emit_16(1501);
+emit_16(1435);
+emit_16(1501);
+emit_16(1434);
+emit_16(1501);
+emit_16(1435);
+emit_16(1502);
+emit_16(1436);
+emit_16(1502);
+emit_16(1435);
+emit_16(1502);
+emit_16(1436);
+emit_16(1503);
+emit_16(1437);
+emit_16(1503);
+emit_16(1436);
+emit_16(1503);
+emit_16(1437);
+emit_16(1504);
+emit_16(1438);
+emit_16(1504);
+emit_16(1437);
+emit_16(1504);
+emit_16(1438);
+emit_16(1505);
+emit_16(1439);
+emit_16(1505);
+emit_16(1438);
+emit_16(1505);
+emit_16(1439);
+emit_16(1506);
+emit_16(1440);
+emit_16(1506);
+emit_16(1439);
+emit_16(1506);
+emit_16(1440);
+emit_16(1507);
+emit_16(1441);
+emit_16(1507);
+emit_16(1440);
+emit_16(1507);
+emit_16(1441);
+emit_16(1508);
+emit_16(1442);
+emit_16(1508);
+emit_16(1441);
+emit_16(1508);
+emit_16(1442);
+emit_16(1509);
+emit_16(1443);
+emit_16(1509);
+emit_16(1442);
+emit_16(1509);
+emit_16(1443);
+emit_16(1510);
+emit_16(1444);
+emit_16(1510);
+emit_16(1443);
+emit_16(1510);
+emit_16(1444);
+emit_16(1511);
+emit_16(1445);
+emit_16(1511);
+emit_16(1444);
+emit_16(1511);
+emit_16(1445);
+emit_16(1512);
+emit_16(1446);
+emit_16(1512);
+emit_16(1445);
+emit_16(1512);
+emit_16(1446);
+emit_16(1513);
+emit_16(1447);
+emit_16(1513);
+emit_16(1446);
+emit_16(1513);
+emit_16(1447);
+emit_16(1514);
+emit_16(1448);
+emit_16(1514);
+emit_16(1447);
+emit_16(1514);
+emit_16(1448);
+emit_16(1515);
+emit_16(1449);
+emit_16(1515);
+emit_16(1448);
+emit_16(1515);
+emit_16(1449);
+emit_16(1516);
+emit_16(1450);
+emit_16(1516);
+emit_16(1449);
+emit_16(1516);
+emit_16(1450);
+emit_16(1517);
+emit_16(1451);
+emit_16(1517);
+emit_16(1450);
+emit_16(1518);
+emit_16(1452);
+emit_16(1519);
+emit_16(1453);
+emit_16(1519);
+emit_16(1452);
+emit_16(1519);
+emit_16(1453);
+emit_16(1520);
+emit_16(1454);
+emit_16(1520);
+emit_16(1453);
+emit_16(1520);
+emit_16(1454);
+emit_16(1521);
+emit_16(1455);
+emit_16(1521);
+emit_16(1454);
+emit_16(1521);
+emit_16(1455);
+emit_16(1522);
+emit_16(1456);
+emit_16(1522);
+emit_16(1455);
+emit_16(1522);
+emit_16(1456);
+emit_16(1523);
+emit_16(1457);
+emit_16(1523);
+emit_16(1456);
+emit_16(1523);
+emit_16(1457);
+emit_16(1524);
+emit_16(1458);
+emit_16(1524);
+emit_16(1457);
+emit_16(1524);
+emit_16(1458);
+emit_16(1525);
+emit_16(1459);
+emit_16(1525);
+emit_16(1458);
+emit_16(1525);
+emit_16(1459);
+emit_16(1526);
+emit_16(1460);
+emit_16(1526);
+emit_16(1459);
+emit_16(1526);
+emit_16(1460);
+emit_16(1527);
+emit_16(1461);
+emit_16(1527);
+emit_16(1460);
+emit_16(1527);
+emit_16(1461);
+emit_16(1528);
+emit_16(1462);
+emit_16(1528);
+emit_16(1461);
+emit_16(1528);
+emit_16(1462);
+emit_16(1529);
+emit_16(1463);
+emit_16(1529);
+emit_16(1462);
+emit_16(1529);
+emit_16(1463);
+emit_16(1530);
+emit_16(1464);
+emit_16(1530);
+emit_16(1463);
+emit_16(1530);
+emit_16(1464);
+emit_16(1531);
+emit_16(1465);
+emit_16(1531);
+emit_16(1464);
+emit_16(1531);
+emit_16(1465);
+emit_16(1532);
+emit_16(1466);
+emit_16(1532);
+emit_16(1465);
+emit_16(1532);
+emit_16(1466);
+emit_16(1533);
+emit_16(1467);
+emit_16(1533);
+emit_16(1466);
+emit_16(1533);
+emit_16(1467);
+emit_16(1534);
+emit_16(1468);
+emit_16(1534);
+emit_16(1467);
+emit_16(1534);
+emit_16(1468);
+emit_16(1535);
+emit_16(1469);
+emit_16(1535);
+emit_16(1468);
+emit_16(1535);
+emit_16(1469);
+emit_16(1536);
+emit_16(1470);
+emit_16(1536);
+emit_16(1469);
+emit_16(1536);
+emit_16(1470);
+emit_16(1537);
+emit_16(1471);
+emit_16(1537);
+emit_16(1470);
+emit_16(1537);
+emit_16(1471);
+emit_16(1538);
+emit_16(1472);
+emit_16(1538);
+emit_16(1471);
+emit_16(1538);
+emit_16(1472);
+emit_16(1539);
+emit_16(1473);
+emit_16(1539);
+emit_16(1472);
+emit_16(1539);
+emit_16(1473);
+emit_16(1540);
+emit_16(1474);
+emit_16(1540);
+emit_16(1473);
+emit_16(1540);
+emit_16(1474);
+emit_16(1541);
+emit_16(1475);
+emit_16(1541);
+emit_16(1474);
+emit_16(1541);
+emit_16(1475);
+emit_16(1542);
+emit_16(1476);
+emit_16(1542);
+emit_16(1475);
+emit_16(1542);
+emit_16(1476);
+emit_16(1543);
+emit_16(1477);
+emit_16(1543);
+emit_16(1476);
+emit_16(1543);
+emit_16(1477);
+emit_16(1544);
+emit_16(1478);
+emit_16(1544);
+emit_16(1477);
+emit_16(1544);
+emit_16(1478);
+emit_16(1545);
+emit_16(1479);
+emit_16(1545);
+emit_16(1478);
+emit_16(1545);
+emit_16(1479);
+emit_16(1546);
+emit_16(1480);
+emit_16(1546);
+emit_16(1479);
+emit_16(1546);
+emit_16(1480);
+emit_16(1547);
+emit_16(1481);
+emit_16(1547);
+emit_16(1480);
+emit_16(1547);
+emit_16(1481);
+emit_16(1548);
+emit_16(1482);
+emit_16(1548);
+emit_16(1481);
+emit_16(1548);
+emit_16(1482);
+emit_16(1549);
+emit_16(1483);
+emit_16(1549);
+emit_16(1482);
+emit_16(1549);
+emit_16(1483);
+emit_16(1550);
+emit_16(1484);
+emit_16(1550);
+emit_16(1483);
+emit_16(1550);
+emit_16(1484);
+emit_16(1551);
+emit_16(1485);
+emit_16(1551);
+emit_16(1484);
+emit_16(1551);
+emit_16(1485);
+emit_16(1552);
+emit_16(1486);
+emit_16(1552);
+emit_16(1485);
+emit_16(1552);
+emit_16(1486);
+emit_16(1553);
+emit_16(1487);
+emit_16(1553);
+emit_16(1486);
+emit_16(1553);
+emit_16(1487);
+emit_16(1554);
+emit_16(1488);
+emit_16(1554);
+emit_16(1487);
+emit_16(1554);
+emit_16(1488);
+emit_16(1555);
+emit_16(1489);
+emit_16(1555);
+emit_16(1488);
+emit_16(1555);
+emit_16(1489);
+emit_16(1556);
+emit_16(1490);
+emit_16(1556);
+emit_16(1489);
+emit_16(1556);
+emit_16(1490);
+emit_16(1557);
+emit_16(1491);
+emit_16(1557);
+emit_16(1490);
+emit_16(1557);
+emit_16(1491);
+emit_16(1558);
+emit_16(1492);
+emit_16(1558);
+emit_16(1491);
+emit_16(1558);
+emit_16(1492);
+emit_16(1559);
+emit_16(1493);
+emit_16(1559);
+emit_16(1492);
+emit_16(1559);
+emit_16(1493);
+emit_16(1560);
+emit_16(1494);
+emit_16(1560);
+emit_16(1493);
+emit_16(1560);
+emit_16(1494);
+emit_16(1561);
+emit_16(1495);
+emit_16(1561);
+emit_16(1494);
+emit_16(1561);
+emit_16(1495);
+emit_16(1562);
+emit_16(1496);
+emit_16(1562);
+emit_16(1495);
+emit_16(1562);
+emit_16(1496);
+emit_16(1563);
+emit_16(1497);
+emit_16(1563);
+emit_16(1496);
+emit_16(1563);
+emit_16(1497);
+emit_16(1564);
+emit_16(1498);
+emit_16(1564);
+emit_16(1497);
+emit_16(1564);
+emit_16(1498);
+emit_16(1565);
+emit_16(1499);
+emit_16(1565);
+emit_16(1498);
+emit_16(1565);
+emit_16(1499);
+emit_16(1566);
+emit_16(1500);
+emit_16(1566);
+emit_16(1499);
+emit_16(1566);
+emit_16(1500);
+emit_16(1567);
+emit_16(1501);
+emit_16(1567);
+emit_16(1500);
+emit_16(1567);
+emit_16(1501);
+emit_16(1568);
+emit_16(1502);
+emit_16(1568);
+emit_16(1501);
+emit_16(1568);
+emit_16(1502);
+emit_16(1569);
+emit_16(1503);
+emit_16(1569);
+emit_16(1502);
+emit_16(1569);
+emit_16(1503);
+emit_16(1570);
+emit_16(1504);
+emit_16(1570);
+emit_16(1503);
+emit_16(1570);
+emit_16(1504);
+emit_16(1571);
+emit_16(1505);
+emit_16(1571);
+emit_16(1504);
+emit_16(1571);
+emit_16(1505);
+emit_16(1572);
+emit_16(1506);
+emit_16(1572);
+emit_16(1505);
+emit_16(1572);
+emit_16(1506);
+emit_16(1573);
+emit_16(1507);
+emit_16(1573);
+emit_16(1506);
+emit_16(1573);
+emit_16(1507);
+emit_16(1574);
+emit_16(1508);
+emit_16(1574);
+emit_16(1507);
+emit_16(1574);
+emit_16(1508);
+emit_16(1575);
+emit_16(1509);
+emit_16(1575);
+emit_16(1508);
+emit_16(1575);
+emit_16(1509);
+emit_16(1576);
+emit_16(1510);
+emit_16(1576);
+emit_16(1509);
+emit_16(1576);
+emit_16(1510);
+emit_16(1577);
+emit_16(1511);
+emit_16(1577);
+emit_16(1510);
+emit_16(1577);
+emit_16(1511);
+emit_16(1578);
+emit_16(1512);
+emit_16(1578);
+emit_16(1511);
+emit_16(1578);
+emit_16(1512);
+emit_16(1579);
+emit_16(1513);
+emit_16(1579);
+emit_16(1512);
+emit_16(1579);
+emit_16(1513);
+emit_16(1580);
+emit_16(1514);
+emit_16(1580);
+emit_16(1513);
+emit_16(1580);
+emit_16(1514);
+emit_16(1581);
+emit_16(1515);
+emit_16(1581);
+emit_16(1514);
+emit_16(1581);
+emit_16(1515);
+emit_16(1582);
+emit_16(1516);
+emit_16(1582);
+emit_16(1515);
+emit_16(1582);
+emit_16(1516);
+emit_16(1583);
+emit_16(1517);
+emit_16(1583);
+emit_16(1516);
+emit_16(1584);
+emit_16(1518);
+emit_16(1585);
+emit_16(1519);
+emit_16(1585);
+emit_16(1518);
+emit_16(1585);
+emit_16(1519);
+emit_16(1586);
+emit_16(1520);
+emit_16(1586);
+emit_16(1519);
+emit_16(1586);
+emit_16(1520);
+emit_16(1587);
+emit_16(1521);
+emit_16(1587);
+emit_16(1520);
+emit_16(1587);
+emit_16(1521);
+emit_16(1588);
+emit_16(1522);
+emit_16(1588);
+emit_16(1521);
+emit_16(1588);
+emit_16(1522);
+emit_16(1589);
+emit_16(1523);
+emit_16(1589);
+emit_16(1522);
+emit_16(1589);
+emit_16(1523);
+emit_16(1590);
+emit_16(1524);
+emit_16(1590);
+emit_16(1523);
+emit_16(1590);
+emit_16(1524);
+emit_16(1591);
+emit_16(1525);
+emit_16(1591);
+emit_16(1524);
+emit_16(1591);
+emit_16(1525);
+emit_16(1592);
+emit_16(1526);
+emit_16(1592);
+emit_16(1525);
+emit_16(1592);
+emit_16(1526);
+emit_16(1593);
+emit_16(1527);
+emit_16(1593);
+emit_16(1526);
+emit_16(1593);
+emit_16(1527);
+emit_16(1594);
+emit_16(1528);
+emit_16(1594);
+emit_16(1527);
+emit_16(1594);
+emit_16(1528);
+emit_16(1595);
+emit_16(1529);
+emit_16(1595);
+emit_16(1528);
+emit_16(1595);
+emit_16(1529);
+emit_16(1596);
+emit_16(1530);
+emit_16(1596);
+emit_16(1529);
+emit_16(1596);
+emit_16(1530);
+emit_16(1597);
+emit_16(1531);
+emit_16(1597);
+emit_16(1530);
+emit_16(1597);
+emit_16(1531);
+emit_16(1598);
+emit_16(1532);
+emit_16(1598);
+emit_16(1531);
+emit_16(1598);
+emit_16(1532);
+emit_16(1599);
+emit_16(1533);
+emit_16(1599);
+emit_16(1532);
+emit_16(1599);
+emit_16(1533);
+emit_16(1600);
+emit_16(1534);
+emit_16(1600);
+emit_16(1533);
+emit_16(1600);
+emit_16(1534);
+emit_16(1601);
+emit_16(1535);
+emit_16(1601);
+emit_16(1534);
+emit_16(1601);
+emit_16(1535);
+emit_16(1602);
+emit_16(1536);
+emit_16(1602);
+emit_16(1535);
+emit_16(1602);
+emit_16(1536);
+emit_16(1603);
+emit_16(1537);
+emit_16(1603);
+emit_16(1536);
+emit_16(1603);
+emit_16(1537);
+emit_16(1604);
+emit_16(1538);
+emit_16(1604);
+emit_16(1537);
+emit_16(1604);
+emit_16(1538);
+emit_16(1605);
+emit_16(1539);
+emit_16(1605);
+emit_16(1538);
+emit_16(1605);
+emit_16(1539);
+emit_16(1606);
+emit_16(1540);
+emit_16(1606);
+emit_16(1539);
+emit_16(1606);
+emit_16(1540);
+emit_16(1607);
+emit_16(1541);
+emit_16(1607);
+emit_16(1540);
+emit_16(1607);
+emit_16(1541);
+emit_16(1608);
+emit_16(1542);
+emit_16(1608);
+emit_16(1541);
+emit_16(1608);
+emit_16(1542);
+emit_16(1609);
+emit_16(1543);
+emit_16(1609);
+emit_16(1542);
+emit_16(1609);
+emit_16(1543);
+emit_16(1610);
+emit_16(1544);
+emit_16(1610);
+emit_16(1543);
+emit_16(1610);
+emit_16(1544);
+emit_16(1611);
+emit_16(1545);
+emit_16(1611);
+emit_16(1544);
+emit_16(1611);
+emit_16(1545);
+emit_16(1612);
+emit_16(1546);
+emit_16(1612);
+emit_16(1545);
+emit_16(1612);
+emit_16(1546);
+emit_16(1613);
+emit_16(1547);
+emit_16(1613);
+emit_16(1546);
+emit_16(1613);
+emit_16(1547);
+emit_16(1614);
+emit_16(1548);
+emit_16(1614);
+emit_16(1547);
+emit_16(1614);
+emit_16(1548);
+emit_16(1615);
+emit_16(1549);
+emit_16(1615);
+emit_16(1548);
+emit_16(1615);
+emit_16(1549);
+emit_16(1616);
+emit_16(1550);
+emit_16(1616);
+emit_16(1549);
+emit_16(1616);
+emit_16(1550);
+emit_16(1617);
+emit_16(1551);
+emit_16(1617);
+emit_16(1550);
+emit_16(1617);
+emit_16(1551);
+emit_16(1618);
+emit_16(1552);
+emit_16(1618);
+emit_16(1551);
+emit_16(1618);
+emit_16(1552);
+emit_16(1619);
+emit_16(1553);
+emit_16(1619);
+emit_16(1552);
+emit_16(1619);
+emit_16(1553);
+emit_16(1620);
+emit_16(1554);
+emit_16(1620);
+emit_16(1553);
+emit_16(1620);
+emit_16(1554);
+emit_16(1621);
+emit_16(1555);
+emit_16(1621);
+emit_16(1554);
+emit_16(1621);
+emit_16(1555);
+emit_16(1622);
+emit_16(1556);
+emit_16(1622);
+emit_16(1555);
+emit_16(1622);
+emit_16(1556);
+emit_16(1623);
+emit_16(1557);
+emit_16(1623);
+emit_16(1556);
+emit_16(1623);
+emit_16(1557);
+emit_16(1624);
+emit_16(1558);
+emit_16(1624);
+emit_16(1557);
+emit_16(1624);
+emit_16(1558);
+emit_16(1625);
+emit_16(1559);
+emit_16(1625);
+emit_16(1558);
+emit_16(1625);
+emit_16(1559);
+emit_16(1626);
+emit_16(1560);
+emit_16(1626);
+emit_16(1559);
+emit_16(1626);
+emit_16(1560);
+emit_16(1627);
+emit_16(1561);
+emit_16(1627);
+emit_16(1560);
+emit_16(1627);
+emit_16(1561);
+emit_16(1628);
+emit_16(1562);
+emit_16(1628);
+emit_16(1561);
+emit_16(1628);
+emit_16(1562);
+emit_16(1629);
+emit_16(1563);
+emit_16(1629);
+emit_16(1562);
+emit_16(1629);
+emit_16(1563);
+emit_16(1630);
+emit_16(1564);
+emit_16(1630);
+emit_16(1563);
+emit_16(1630);
+emit_16(1564);
+emit_16(1631);
+emit_16(1565);
+emit_16(1631);
+emit_16(1564);
+emit_16(1631);
+emit_16(1565);
+emit_16(1632);
+emit_16(1566);
+emit_16(1632);
+emit_16(1565);
+emit_16(1632);
+emit_16(1566);
+emit_16(1633);
+emit_16(1567);
+emit_16(1633);
+emit_16(1566);
+emit_16(1633);
+emit_16(1567);
+emit_16(1634);
+emit_16(1568);
+emit_16(1634);
+emit_16(1567);
+emit_16(1634);
+emit_16(1568);
+emit_16(1635);
+emit_16(1569);
+emit_16(1635);
+emit_16(1568);
+emit_16(1635);
+emit_16(1569);
+emit_16(1636);
+emit_16(1570);
+emit_16(1636);
+emit_16(1569);
+emit_16(1636);
+emit_16(1570);
+emit_16(1637);
+emit_16(1571);
+emit_16(1637);
+emit_16(1570);
+emit_16(1637);
+emit_16(1571);
+emit_16(1638);
+emit_16(1572);
+emit_16(1638);
+emit_16(1571);
+emit_16(1638);
+emit_16(1572);
+emit_16(1639);
+emit_16(1573);
+emit_16(1639);
+emit_16(1572);
+emit_16(1639);
+emit_16(1573);
+emit_16(1640);
+emit_16(1574);
+emit_16(1640);
+emit_16(1573);
+emit_16(1640);
+emit_16(1574);
+emit_16(1641);
+emit_16(1575);
+emit_16(1641);
+emit_16(1574);
+emit_16(1641);
+emit_16(1575);
+emit_16(1642);
+emit_16(1576);
+emit_16(1642);
+emit_16(1575);
+emit_16(1642);
+emit_16(1576);
+emit_16(1643);
+emit_16(1577);
+emit_16(1643);
+emit_16(1576);
+emit_16(1643);
+emit_16(1577);
+emit_16(1644);
+emit_16(1578);
+emit_16(1644);
+emit_16(1577);
+emit_16(1644);
+emit_16(1578);
+emit_16(1645);
+emit_16(1579);
+emit_16(1645);
+emit_16(1578);
+emit_16(1645);
+emit_16(1579);
+emit_16(1646);
+emit_16(1580);
+emit_16(1646);
+emit_16(1579);
+emit_16(1646);
+emit_16(1580);
+emit_16(1647);
+emit_16(1581);
+emit_16(1647);
+emit_16(1580);
+emit_16(1647);
+emit_16(1581);
+emit_16(1648);
+emit_16(1582);
+emit_16(1648);
+emit_16(1581);
+emit_16(1648);
+emit_16(1582);
+emit_16(1649);
+emit_16(1583);
+emit_16(1649);
+emit_16(1582);
+emit_16(1650);
+emit_16(1584);
+emit_16(1651);
+emit_16(1585);
+emit_16(1651);
+emit_16(1584);
+emit_16(1651);
+emit_16(1585);
+emit_16(1652);
+emit_16(1586);
+emit_16(1652);
+emit_16(1585);
+emit_16(1652);
+emit_16(1586);
+emit_16(1653);
+emit_16(1587);
+emit_16(1653);
+emit_16(1586);
+emit_16(1653);
+emit_16(1587);
+emit_16(1654);
+emit_16(1588);
+emit_16(1654);
+emit_16(1587);
+emit_16(1654);
+emit_16(1588);
+emit_16(1655);
+emit_16(1589);
+emit_16(1655);
+emit_16(1588);
+emit_16(1655);
+emit_16(1589);
+emit_16(1656);
+emit_16(1590);
+emit_16(1656);
+emit_16(1589);
+emit_16(1656);
+emit_16(1590);
+emit_16(1657);
+emit_16(1591);
+emit_16(1657);
+emit_16(1590);
+emit_16(1657);
+emit_16(1591);
+emit_16(1658);
+emit_16(1592);
+emit_16(1658);
+emit_16(1591);
+emit_16(1658);
+emit_16(1592);
+emit_16(1659);
+emit_16(1593);
+emit_16(1659);
+emit_16(1592);
+emit_16(1659);
+emit_16(1593);
+emit_16(1660);
+emit_16(1594);
+emit_16(1660);
+emit_16(1593);
+emit_16(1660);
+emit_16(1594);
+emit_16(1661);
+emit_16(1595);
+emit_16(1661);
+emit_16(1594);
+emit_16(1661);
+emit_16(1595);
+emit_16(1662);
+emit_16(1596);
+emit_16(1662);
+emit_16(1595);
+emit_16(1662);
+emit_16(1596);
+emit_16(1663);
+emit_16(1597);
+emit_16(1663);
+emit_16(1596);
+emit_16(1663);
+emit_16(1597);
+emit_16(1664);
+emit_16(1598);
+emit_16(1664);
+emit_16(1597);
+emit_16(1664);
+emit_16(1598);
+emit_16(1665);
+emit_16(1599);
+emit_16(1665);
+emit_16(1598);
+emit_16(1665);
+emit_16(1599);
+emit_16(1666);
+emit_16(1600);
+emit_16(1666);
+emit_16(1599);
+emit_16(1666);
+emit_16(1600);
+emit_16(1667);
+emit_16(1601);
+emit_16(1667);
+emit_16(1600);
+emit_16(1667);
+emit_16(1601);
+emit_16(1668);
+emit_16(1602);
+emit_16(1668);
+emit_16(1601);
+emit_16(1668);
+emit_16(1602);
+emit_16(1669);
+emit_16(1603);
+emit_16(1669);
+emit_16(1602);
+emit_16(1669);
+emit_16(1603);
+emit_16(1670);
+emit_16(1604);
+emit_16(1670);
+emit_16(1603);
+emit_16(1670);
+emit_16(1604);
+emit_16(1671);
+emit_16(1605);
+emit_16(1671);
+emit_16(1604);
+emit_16(1671);
+emit_16(1605);
+emit_16(1672);
+emit_16(1606);
+emit_16(1672);
+emit_16(1605);
+emit_16(1672);
+emit_16(1606);
+emit_16(1673);
+emit_16(1607);
+emit_16(1673);
+emit_16(1606);
+emit_16(1673);
+emit_16(1607);
+emit_16(1674);
+emit_16(1608);
+emit_16(1674);
+emit_16(1607);
+emit_16(1674);
+emit_16(1608);
+emit_16(1675);
+emit_16(1609);
+emit_16(1675);
+emit_16(1608);
+emit_16(1675);
+emit_16(1609);
+emit_16(1676);
+emit_16(1610);
+emit_16(1676);
+emit_16(1609);
+emit_16(1676);
+emit_16(1610);
+emit_16(1677);
+emit_16(1611);
+emit_16(1677);
+emit_16(1610);
+emit_16(1677);
+emit_16(1611);
+emit_16(1678);
+emit_16(1612);
+emit_16(1678);
+emit_16(1611);
+emit_16(1678);
+emit_16(1612);
+emit_16(1679);
+emit_16(1613);
+emit_16(1679);
+emit_16(1612);
+emit_16(1679);
+emit_16(1613);
+emit_16(1680);
+emit_16(1614);
+emit_16(1680);
+emit_16(1613);
+emit_16(1680);
+emit_16(1614);
+emit_16(1681);
+emit_16(1615);
+emit_16(1681);
+emit_16(1614);
+emit_16(1681);
+emit_16(1615);
+emit_16(1682);
+emit_16(1616);
+emit_16(1682);
+emit_16(1615);
+emit_16(1682);
+emit_16(1616);
+emit_16(1683);
+emit_16(1617);
+emit_16(1683);
+emit_16(1616);
+emit_16(1683);
+emit_16(1617);
+emit_16(1684);
+emit_16(1618);
+emit_16(1684);
+emit_16(1617);
+emit_16(1684);
+emit_16(1618);
+emit_16(1685);
+emit_16(1619);
+emit_16(1685);
+emit_16(1618);
+emit_16(1685);
+emit_16(1619);
+emit_16(1686);
+emit_16(1620);
+emit_16(1686);
+emit_16(1619);
+emit_16(1686);
+emit_16(1620);
+emit_16(1687);
+emit_16(1621);
+emit_16(1687);
+emit_16(1620);
+emit_16(1687);
+emit_16(1621);
+emit_16(1688);
+emit_16(1622);
+emit_16(1688);
+emit_16(1621);
+emit_16(1688);
+emit_16(1622);
+emit_16(1689);
+emit_16(1623);
+emit_16(1689);
+emit_16(1622);
+emit_16(1689);
+emit_16(1623);
+emit_16(1690);
+emit_16(1624);
+emit_16(1690);
+emit_16(1623);
+emit_16(1690);
+emit_16(1624);
+emit_16(1691);
+emit_16(1625);
+emit_16(1691);
+emit_16(1624);
+emit_16(1691);
+emit_16(1625);
+emit_16(1692);
+emit_16(1626);
+emit_16(1692);
+emit_16(1625);
+emit_16(1692);
+emit_16(1626);
+emit_16(1693);
+emit_16(1627);
+emit_16(1693);
+emit_16(1626);
+emit_16(1693);
+emit_16(1627);
+emit_16(1694);
+emit_16(1628);
+emit_16(1694);
+emit_16(1627);
+emit_16(1694);
+emit_16(1628);
+emit_16(1695);
+emit_16(1629);
+emit_16(1695);
+emit_16(1628);
+emit_16(1695);
+emit_16(1629);
+emit_16(1696);
+emit_16(1630);
+emit_16(1696);
+emit_16(1629);
+emit_16(1696);
+emit_16(1630);
+emit_16(1697);
+emit_16(1631);
+emit_16(1697);
+emit_16(1630);
+emit_16(1697);
+emit_16(1631);
+emit_16(1698);
+emit_16(1632);
+emit_16(1698);
+emit_16(1631);
+emit_16(1698);
+emit_16(1632);
+emit_16(1699);
+emit_16(1633);
+emit_16(1699);
+emit_16(1632);
+emit_16(1699);
+emit_16(1633);
+emit_16(1700);
+emit_16(1634);
+emit_16(1700);
+emit_16(1633);
+emit_16(1700);
+emit_16(1634);
+emit_16(1701);
+emit_16(1635);
+emit_16(1701);
+emit_16(1634);
+emit_16(1701);
+emit_16(1635);
+emit_16(1702);
+emit_16(1636);
+emit_16(1702);
+emit_16(1635);
+emit_16(1702);
+emit_16(1636);
+emit_16(1703);
+emit_16(1637);
+emit_16(1703);
+emit_16(1636);
+emit_16(1703);
+emit_16(1637);
+emit_16(1704);
+emit_16(1638);
+emit_16(1704);
+emit_16(1637);
+emit_16(1704);
+emit_16(1638);
+emit_16(1705);
+emit_16(1639);
+emit_16(1705);
+emit_16(1638);
+emit_16(1705);
+emit_16(1639);
+emit_16(1706);
+emit_16(1640);
+emit_16(1706);
+emit_16(1639);
+emit_16(1706);
+emit_16(1640);
+emit_16(1707);
+emit_16(1641);
+emit_16(1707);
+emit_16(1640);
+emit_16(1707);
+emit_16(1641);
+emit_16(1708);
+emit_16(1642);
+emit_16(1708);
+emit_16(1641);
+emit_16(1708);
+emit_16(1642);
+emit_16(1709);
+emit_16(1643);
+emit_16(1709);
+emit_16(1642);
+emit_16(1709);
+emit_16(1643);
+emit_16(1710);
+emit_16(1644);
+emit_16(1710);
+emit_16(1643);
+emit_16(1710);
+emit_16(1644);
+emit_16(1711);
+emit_16(1645);
+emit_16(1711);
+emit_16(1644);
+emit_16(1711);
+emit_16(1645);
+emit_16(1712);
+emit_16(1646);
+emit_16(1712);
+emit_16(1645);
+emit_16(1712);
+emit_16(1646);
+emit_16(1713);
+emit_16(1647);
+emit_16(1713);
+emit_16(1646);
+emit_16(1713);
+emit_16(1647);
+emit_16(1714);
+emit_16(1648);
+emit_16(1714);
+emit_16(1647);
+emit_16(1714);
+emit_16(1648);
+emit_16(1715);
+emit_16(1649);
+emit_16(1715);
+emit_16(1648);
+emit_16(1716);
+emit_16(1650);
+emit_16(1717);
+emit_16(1651);
+emit_16(1717);
+emit_16(1650);
+emit_16(1717);
+emit_16(1651);
+emit_16(1718);
+emit_16(1652);
+emit_16(1718);
+emit_16(1651);
+emit_16(1718);
+emit_16(1652);
+emit_16(1719);
+emit_16(1653);
+emit_16(1719);
+emit_16(1652);
+emit_16(1719);
+emit_16(1653);
+emit_16(1720);
+emit_16(1654);
+emit_16(1720);
+emit_16(1653);
+emit_16(1720);
+emit_16(1654);
+emit_16(1721);
+emit_16(1655);
+emit_16(1721);
+emit_16(1654);
+emit_16(1721);
+emit_16(1655);
+emit_16(1722);
+emit_16(1656);
+emit_16(1722);
+emit_16(1655);
+emit_16(1722);
+emit_16(1656);
+emit_16(1723);
+emit_16(1657);
+emit_16(1723);
+emit_16(1656);
+emit_16(1723);
+emit_16(1657);
+emit_16(1724);
+emit_16(1658);
+emit_16(1724);
+emit_16(1657);
+emit_16(1724);
+emit_16(1658);
+emit_16(1725);
+emit_16(1659);
+emit_16(1725);
+emit_16(1658);
+emit_16(1725);
+emit_16(1659);
+emit_16(1726);
+emit_16(1660);
+emit_16(1726);
+emit_16(1659);
+emit_16(1726);
+emit_16(1660);
+emit_16(1727);
+emit_16(1661);
+emit_16(1727);
+emit_16(1660);
+emit_16(1727);
+emit_16(1661);
+emit_16(1728);
+emit_16(1662);
+emit_16(1728);
+emit_16(1661);
+emit_16(1728);
+emit_16(1662);
+emit_16(1729);
+emit_16(1663);
+emit_16(1729);
+emit_16(1662);
+emit_16(1729);
+emit_16(1663);
+emit_16(1730);
+emit_16(1664);
+emit_16(1730);
+emit_16(1663);
+emit_16(1730);
+emit_16(1664);
+emit_16(1731);
+emit_16(1665);
+emit_16(1731);
+emit_16(1664);
+emit_16(1731);
+emit_16(1665);
+emit_16(1732);
+emit_16(1666);
+emit_16(1732);
+emit_16(1665);
+emit_16(1732);
+emit_16(1666);
+emit_16(1733);
+emit_16(1667);
+emit_16(1733);
+emit_16(1666);
+emit_16(1733);
+emit_16(1667);
+emit_16(1734);
+emit_16(1668);
+emit_16(1734);
+emit_16(1667);
+emit_16(1734);
+emit_16(1668);
+emit_16(1735);
+emit_16(1669);
+emit_16(1735);
+emit_16(1668);
+emit_16(1735);
+emit_16(1669);
+emit_16(1736);
+emit_16(1670);
+emit_16(1736);
+emit_16(1669);
+emit_16(1736);
+emit_16(1670);
+emit_16(1737);
+emit_16(1671);
+emit_16(1737);
+emit_16(1670);
+emit_16(1737);
+emit_16(1671);
+emit_16(1738);
+emit_16(1672);
+emit_16(1738);
+emit_16(1671);
+emit_16(1738);
+emit_16(1672);
+emit_16(1739);
+emit_16(1673);
+emit_16(1739);
+emit_16(1672);
+emit_16(1739);
+emit_16(1673);
+emit_16(1740);
+emit_16(1674);
+emit_16(1740);
+emit_16(1673);
+emit_16(1740);
+emit_16(1674);
+emit_16(1741);
+emit_16(1675);
+emit_16(1741);
+emit_16(1674);
+emit_16(1741);
+emit_16(1675);
+emit_16(1742);
+emit_16(1676);
+emit_16(1742);
+emit_16(1675);
+emit_16(1742);
+emit_16(1676);
+emit_16(1743);
+emit_16(1677);
+emit_16(1743);
+emit_16(1676);
+emit_16(1743);
+emit_16(1677);
+emit_16(1744);
+emit_16(1678);
+emit_16(1744);
+emit_16(1677);
+emit_16(1744);
+emit_16(1678);
+emit_16(1745);
+emit_16(1679);
+emit_16(1745);
+emit_16(1678);
+emit_16(1745);
+emit_16(1679);
+emit_16(1746);
+emit_16(1680);
+emit_16(1746);
+emit_16(1679);
+emit_16(1746);
+emit_16(1680);
+emit_16(1747);
+emit_16(1681);
+emit_16(1747);
+emit_16(1680);
+emit_16(1747);
+emit_16(1681);
+emit_16(1748);
+emit_16(1682);
+emit_16(1748);
+emit_16(1681);
+emit_16(1748);
+emit_16(1682);
+emit_16(1749);
+emit_16(1683);
+emit_16(1749);
+emit_16(1682);
+emit_16(1749);
+emit_16(1683);
+emit_16(1750);
+emit_16(1684);
+emit_16(1750);
+emit_16(1683);
+emit_16(1750);
+emit_16(1684);
+emit_16(1751);
+emit_16(1685);
+emit_16(1751);
+emit_16(1684);
+emit_16(1751);
+emit_16(1685);
+emit_16(1752);
+emit_16(1686);
+emit_16(1752);
+emit_16(1685);
+emit_16(1752);
+emit_16(1686);
+emit_16(1753);
+emit_16(1687);
+emit_16(1753);
+emit_16(1686);
+emit_16(1753);
+emit_16(1687);
+emit_16(1754);
+emit_16(1688);
+emit_16(1754);
+emit_16(1687);
+emit_16(1754);
+emit_16(1688);
+emit_16(1755);
+emit_16(1689);
+emit_16(1755);
+emit_16(1688);
+emit_16(1755);
+emit_16(1689);
+emit_16(1756);
+emit_16(1690);
+emit_16(1756);
+emit_16(1689);
+emit_16(1756);
+emit_16(1690);
+emit_16(1757);
+emit_16(1691);
+emit_16(1757);
+emit_16(1690);
+emit_16(1757);
+emit_16(1691);
+emit_16(1758);
+emit_16(1692);
+emit_16(1758);
+emit_16(1691);
+emit_16(1758);
+emit_16(1692);
+emit_16(1759);
+emit_16(1693);
+emit_16(1759);
+emit_16(1692);
+emit_16(1759);
+emit_16(1693);
+emit_16(1760);
+emit_16(1694);
+emit_16(1760);
+emit_16(1693);
+emit_16(1760);
+emit_16(1694);
+emit_16(1761);
+emit_16(1695);
+emit_16(1761);
+emit_16(1694);
+emit_16(1761);
+emit_16(1695);
+emit_16(1762);
+emit_16(1696);
+emit_16(1762);
+emit_16(1695);
+emit_16(1762);
+emit_16(1696);
+emit_16(1763);
+emit_16(1697);
+emit_16(1763);
+emit_16(1696);
+emit_16(1763);
+emit_16(1697);
+emit_16(1764);
+emit_16(1698);
+emit_16(1764);
+emit_16(1697);
+emit_16(1764);
+emit_16(1698);
+emit_16(1765);
+emit_16(1699);
+emit_16(1765);
+emit_16(1698);
+emit_16(1765);
+emit_16(1699);
+emit_16(1766);
+emit_16(1700);
+emit_16(1766);
+emit_16(1699);
+emit_16(1766);
+emit_16(1700);
+emit_16(1767);
+emit_16(1701);
+emit_16(1767);
+emit_16(1700);
+emit_16(1767);
+emit_16(1701);
+emit_16(1768);
+emit_16(1702);
+emit_16(1768);
+emit_16(1701);
+emit_16(1768);
+emit_16(1702);
+emit_16(1769);
+emit_16(1703);
+emit_16(1769);
+emit_16(1702);
+emit_16(1769);
+emit_16(1703);
+emit_16(1770);
+emit_16(1704);
+emit_16(1770);
+emit_16(1703);
+emit_16(1770);
+emit_16(1704);
+emit_16(1771);
+emit_16(1705);
+emit_16(1771);
+emit_16(1704);
+emit_16(1771);
+emit_16(1705);
+emit_16(1772);
+emit_16(1706);
+emit_16(1772);
+emit_16(1705);
+emit_16(1772);
+emit_16(1706);
+emit_16(1773);
+emit_16(1707);
+emit_16(1773);
+emit_16(1706);
+emit_16(1773);
+emit_16(1707);
+emit_16(1774);
+emit_16(1708);
+emit_16(1774);
+emit_16(1707);
+emit_16(1774);
+emit_16(1708);
+emit_16(1775);
+emit_16(1709);
+emit_16(1775);
+emit_16(1708);
+emit_16(1775);
+emit_16(1709);
+emit_16(1776);
+emit_16(1710);
+emit_16(1776);
+emit_16(1709);
+emit_16(1776);
+emit_16(1710);
+emit_16(1777);
+emit_16(1711);
+emit_16(1777);
+emit_16(1710);
+emit_16(1777);
+emit_16(1711);
+emit_16(1778);
+emit_16(1712);
+emit_16(1778);
+emit_16(1711);
+emit_16(1778);
+emit_16(1712);
+emit_16(1779);
+emit_16(1713);
+emit_16(1779);
+emit_16(1712);
+emit_16(1779);
+emit_16(1713);
+emit_16(1780);
+emit_16(1714);
+emit_16(1780);
+emit_16(1713);
+emit_16(1780);
+emit_16(1714);
+emit_16(1781);
+emit_16(1715);
+emit_16(1781);
+emit_16(1714);
+emit_16(1782);
+emit_16(1716);
+emit_16(1783);
+emit_16(1717);
+emit_16(1783);
+emit_16(1716);
+emit_16(1783);
+emit_16(1717);
+emit_16(1784);
+emit_16(1718);
+emit_16(1784);
+emit_16(1717);
+emit_16(1784);
+emit_16(1718);
+emit_16(1785);
+emit_16(1719);
+emit_16(1785);
+emit_16(1718);
+emit_16(1785);
+emit_16(1719);
+emit_16(1786);
+emit_16(1720);
+emit_16(1786);
+emit_16(1719);
+emit_16(1786);
+emit_16(1720);
+emit_16(1787);
+emit_16(1721);
+emit_16(1787);
+emit_16(1720);
+emit_16(1787);
+emit_16(1721);
+emit_16(1788);
+emit_16(1722);
+emit_16(1788);
+emit_16(1721);
+emit_16(1788);
+emit_16(1722);
+emit_16(1789);
+emit_16(1723);
+emit_16(1789);
+emit_16(1722);
+emit_16(1789);
+emit_16(1723);
+emit_16(1790);
+emit_16(1724);
+emit_16(1790);
+emit_16(1723);
+emit_16(1790);
+emit_16(1724);
+emit_16(1791);
+emit_16(1725);
+emit_16(1791);
+emit_16(1724);
+emit_16(1791);
+emit_16(1725);
+emit_16(1792);
+emit_16(1726);
+emit_16(1792);
+emit_16(1725);
+emit_16(1792);
+emit_16(1726);
+emit_16(1793);
+emit_16(1727);
+emit_16(1793);
+emit_16(1726);
+emit_16(1793);
+emit_16(1727);
+emit_16(1794);
+emit_16(1728);
+emit_16(1794);
+emit_16(1727);
+emit_16(1794);
+emit_16(1728);
+emit_16(1795);
+emit_16(1729);
+emit_16(1795);
+emit_16(1728);
+emit_16(1795);
+emit_16(1729);
+emit_16(1796);
+emit_16(1730);
+emit_16(1796);
+emit_16(1729);
+emit_16(1796);
+emit_16(1730);
+emit_16(1797);
+emit_16(1731);
+emit_16(1797);
+emit_16(1730);
+emit_16(1797);
+emit_16(1731);
+emit_16(1798);
+emit_16(1732);
+emit_16(1798);
+emit_16(1731);
+emit_16(1798);
+emit_16(1732);
+emit_16(1799);
+emit_16(1733);
+emit_16(1799);
+emit_16(1732);
+emit_16(1799);
+emit_16(1733);
+emit_16(1800);
+emit_16(1734);
+emit_16(1800);
+emit_16(1733);
+emit_16(1800);
+emit_16(1734);
+emit_16(1801);
+emit_16(1735);
+emit_16(1801);
+emit_16(1734);
+emit_16(1801);
+emit_16(1735);
+emit_16(1802);
+emit_16(1736);
+emit_16(1802);
+emit_16(1735);
+emit_16(1802);
+emit_16(1736);
+emit_16(1803);
+emit_16(1737);
+emit_16(1803);
+emit_16(1736);
+emit_16(1803);
+emit_16(1737);
+emit_16(1804);
+emit_16(1738);
+emit_16(1804);
+emit_16(1737);
+emit_16(1804);
+emit_16(1738);
+emit_16(1805);
+emit_16(1739);
+emit_16(1805);
+emit_16(1738);
+emit_16(1805);
+emit_16(1739);
+emit_16(1806);
+emit_16(1740);
+emit_16(1806);
+emit_16(1739);
+emit_16(1806);
+emit_16(1740);
+emit_16(1807);
+emit_16(1741);
+emit_16(1807);
+emit_16(1740);
+emit_16(1807);
+emit_16(1741);
+emit_16(1808);
+emit_16(1742);
+emit_16(1808);
+emit_16(1741);
+emit_16(1808);
+emit_16(1742);
+emit_16(1809);
+emit_16(1743);
+emit_16(1809);
+emit_16(1742);
+emit_16(1809);
+emit_16(1743);
+emit_16(1810);
+emit_16(1744);
+emit_16(1810);
+emit_16(1743);
+emit_16(1810);
+emit_16(1744);
+emit_16(1811);
+emit_16(1745);
+emit_16(1811);
+emit_16(1744);
+emit_16(1811);
+emit_16(1745);
+emit_16(1812);
+emit_16(1746);
+emit_16(1812);
+emit_16(1745);
+emit_16(1812);
+emit_16(1746);
+emit_16(1813);
+emit_16(1747);
+emit_16(1813);
+emit_16(1746);
+emit_16(1813);
+emit_16(1747);
+emit_16(1814);
+emit_16(1748);
+emit_16(1814);
+emit_16(1747);
+emit_16(1814);
+emit_16(1748);
+emit_16(1815);
+emit_16(1749);
+emit_16(1815);
+emit_16(1748);
+emit_16(1815);
+emit_16(1749);
+emit_16(1816);
+emit_16(1750);
+emit_16(1816);
+emit_16(1749);
+emit_16(1816);
+emit_16(1750);
+emit_16(1817);
+emit_16(1751);
+emit_16(1817);
+emit_16(1750);
+emit_16(1817);
+emit_16(1751);
+emit_16(1818);
+emit_16(1752);
+emit_16(1818);
+emit_16(1751);
+emit_16(1818);
+emit_16(1752);
+emit_16(1819);
+emit_16(1753);
+emit_16(1819);
+emit_16(1752);
+emit_16(1819);
+emit_16(1753);
+emit_16(1820);
+emit_16(1754);
+emit_16(1820);
+emit_16(1753);
+emit_16(1820);
+emit_16(1754);
+emit_16(1821);
+emit_16(1755);
+emit_16(1821);
+emit_16(1754);
+emit_16(1821);
+emit_16(1755);
+emit_16(1822);
+emit_16(1756);
+emit_16(1822);
+emit_16(1755);
+emit_16(1822);
+emit_16(1756);
+emit_16(1823);
+emit_16(1757);
+emit_16(1823);
+emit_16(1756);
+emit_16(1823);
+emit_16(1757);
+emit_16(1824);
+emit_16(1758);
+emit_16(1824);
+emit_16(1757);
+emit_16(1824);
+emit_16(1758);
+emit_16(1825);
+emit_16(1759);
+emit_16(1825);
+emit_16(1758);
+emit_16(1825);
+emit_16(1759);
+emit_16(1826);
+emit_16(1760);
+emit_16(1826);
+emit_16(1759);
+emit_16(1826);
+emit_16(1760);
+emit_16(1827);
+emit_16(1761);
+emit_16(1827);
+emit_16(1760);
+emit_16(1827);
+emit_16(1761);
+emit_16(1828);
+emit_16(1762);
+emit_16(1828);
+emit_16(1761);
+emit_16(1828);
+emit_16(1762);
+emit_16(1829);
+emit_16(1763);
+emit_16(1829);
+emit_16(1762);
+emit_16(1829);
+emit_16(1763);
+emit_16(1830);
+emit_16(1764);
+emit_16(1830);
+emit_16(1763);
+emit_16(1830);
+emit_16(1764);
+emit_16(1831);
+emit_16(1765);
+emit_16(1831);
+emit_16(1764);
+emit_16(1831);
+emit_16(1765);
+emit_16(1832);
+emit_16(1766);
+emit_16(1832);
+emit_16(1765);
+emit_16(1832);
+emit_16(1766);
+emit_16(1833);
+emit_16(1767);
+emit_16(1833);
+emit_16(1766);
+emit_16(1833);
+emit_16(1767);
+emit_16(1834);
+emit_16(1768);
+emit_16(1834);
+emit_16(1767);
+emit_16(1834);
+emit_16(1768);
+emit_16(1835);
+emit_16(1769);
+emit_16(1835);
+emit_16(1768);
+emit_16(1835);
+emit_16(1769);
+emit_16(1836);
+emit_16(1770);
+emit_16(1836);
+emit_16(1769);
+emit_16(1836);
+emit_16(1770);
+emit_16(1837);
+emit_16(1771);
+emit_16(1837);
+emit_16(1770);
+emit_16(1837);
+emit_16(1771);
+emit_16(1838);
+emit_16(1772);
+emit_16(1838);
+emit_16(1771);
+emit_16(1838);
+emit_16(1772);
+emit_16(1839);
+emit_16(1773);
+emit_16(1839);
+emit_16(1772);
+emit_16(1839);
+emit_16(1773);
+emit_16(1840);
+emit_16(1774);
+emit_16(1840);
+emit_16(1773);
+emit_16(1840);
+emit_16(1774);
+emit_16(1841);
+emit_16(1775);
+emit_16(1841);
+emit_16(1774);
+emit_16(1841);
+emit_16(1775);
+emit_16(1842);
+emit_16(1776);
+emit_16(1842);
+emit_16(1775);
+emit_16(1842);
+emit_16(1776);
+emit_16(1843);
+emit_16(1777);
+emit_16(1843);
+emit_16(1776);
+emit_16(1843);
+emit_16(1777);
+emit_16(1844);
+emit_16(1778);
+emit_16(1844);
+emit_16(1777);
+emit_16(1844);
+emit_16(1778);
+emit_16(1845);
+emit_16(1779);
+emit_16(1845);
+emit_16(1778);
+emit_16(1845);
+emit_16(1779);
+emit_16(1846);
+emit_16(1780);
+emit_16(1846);
+emit_16(1779);
+emit_16(1846);
+emit_16(1780);
+emit_16(1847);
+emit_16(1781);
+emit_16(1847);
+emit_16(1780);
+emit_16(1848);
+emit_16(1782);
+emit_16(1849);
+emit_16(1783);
+emit_16(1849);
+emit_16(1782);
+emit_16(1849);
+emit_16(1783);
+emit_16(1850);
+emit_16(1784);
+emit_16(1850);
+emit_16(1783);
+emit_16(1850);
+emit_16(1784);
+emit_16(1851);
+emit_16(1785);
+emit_16(1851);
+emit_16(1784);
+emit_16(1851);
+emit_16(1785);
+emit_16(1852);
+emit_16(1786);
+emit_16(1852);
+emit_16(1785);
+emit_16(1852);
+emit_16(1786);
+emit_16(1853);
+emit_16(1787);
+emit_16(1853);
+emit_16(1786);
+emit_16(1853);
+emit_16(1787);
+emit_16(1854);
+emit_16(1788);
+emit_16(1854);
+emit_16(1787);
+emit_16(1854);
+emit_16(1788);
+emit_16(1855);
+emit_16(1789);
+emit_16(1855);
+emit_16(1788);
+emit_16(1855);
+emit_16(1789);
+emit_16(1856);
+emit_16(1790);
+emit_16(1856);
+emit_16(1789);
+emit_16(1856);
+emit_16(1790);
+emit_16(1857);
+emit_16(1791);
+emit_16(1857);
+emit_16(1790);
+emit_16(1857);
+emit_16(1791);
+emit_16(1858);
+emit_16(1792);
+emit_16(1858);
+emit_16(1791);
+emit_16(1858);
+emit_16(1792);
+emit_16(1859);
+emit_16(1793);
+emit_16(1859);
+emit_16(1792);
+emit_16(1859);
+emit_16(1793);
+emit_16(1860);
+emit_16(1794);
+emit_16(1860);
+emit_16(1793);
+emit_16(1860);
+emit_16(1794);
+emit_16(1861);
+emit_16(1795);
+emit_16(1861);
+emit_16(1794);
+emit_16(1861);
+emit_16(1795);
+emit_16(1862);
+emit_16(1796);
+emit_16(1862);
+emit_16(1795);
+emit_16(1862);
+emit_16(1796);
+emit_16(1863);
+emit_16(1797);
+emit_16(1863);
+emit_16(1796);
+emit_16(1863);
+emit_16(1797);
+emit_16(1864);
+emit_16(1798);
+emit_16(1864);
+emit_16(1797);
+emit_16(1864);
+emit_16(1798);
+emit_16(1865);
+emit_16(1799);
+emit_16(1865);
+emit_16(1798);
+emit_16(1865);
+emit_16(1799);
+emit_16(1866);
+emit_16(1800);
+emit_16(1866);
+emit_16(1799);
+emit_16(1866);
+emit_16(1800);
+emit_16(1867);
+emit_16(1801);
+emit_16(1867);
+emit_16(1800);
+emit_16(1867);
+emit_16(1801);
+emit_16(1868);
+emit_16(1802);
+emit_16(1868);
+emit_16(1801);
+emit_16(1868);
+emit_16(1802);
+emit_16(1869);
+emit_16(1803);
+emit_16(1869);
+emit_16(1802);
+emit_16(1869);
+emit_16(1803);
+emit_16(1870);
+emit_16(1804);
+emit_16(1870);
+emit_16(1803);
+emit_16(1870);
+emit_16(1804);
+emit_16(1871);
+emit_16(1805);
+emit_16(1871);
+emit_16(1804);
+emit_16(1871);
+emit_16(1805);
+emit_16(1872);
+emit_16(1806);
+emit_16(1872);
+emit_16(1805);
+emit_16(1872);
+emit_16(1806);
+emit_16(1873);
+emit_16(1807);
+emit_16(1873);
+emit_16(1806);
+emit_16(1873);
+emit_16(1807);
+emit_16(1874);
+emit_16(1808);
+emit_16(1874);
+emit_16(1807);
+emit_16(1874);
+emit_16(1808);
+emit_16(1875);
+emit_16(1809);
+emit_16(1875);
+emit_16(1808);
+emit_16(1875);
+emit_16(1809);
+emit_16(1876);
+emit_16(1810);
+emit_16(1876);
+emit_16(1809);
+emit_16(1876);
+emit_16(1810);
+emit_16(1877);
+emit_16(1811);
+emit_16(1877);
+emit_16(1810);
+emit_16(1877);
+emit_16(1811);
+emit_16(1878);
+emit_16(1812);
+emit_16(1878);
+emit_16(1811);
+emit_16(1878);
+emit_16(1812);
+emit_16(1879);
+emit_16(1813);
+emit_16(1879);
+emit_16(1812);
+emit_16(1879);
+emit_16(1813);
+emit_16(1880);
+emit_16(1814);
+emit_16(1880);
+emit_16(1813);
+emit_16(1880);
+emit_16(1814);
+emit_16(1881);
+emit_16(1815);
+emit_16(1881);
+emit_16(1814);
+emit_16(1881);
+emit_16(1815);
+emit_16(1882);
+emit_16(1816);
+emit_16(1882);
+emit_16(1815);
+emit_16(1882);
+emit_16(1816);
+emit_16(1883);
+emit_16(1817);
+emit_16(1883);
+emit_16(1816);
+emit_16(1883);
+emit_16(1817);
+emit_16(1884);
+emit_16(1818);
+emit_16(1884);
+emit_16(1817);
+emit_16(1884);
+emit_16(1818);
+emit_16(1885);
+emit_16(1819);
+emit_16(1885);
+emit_16(1818);
+emit_16(1885);
+emit_16(1819);
+emit_16(1886);
+emit_16(1820);
+emit_16(1886);
+emit_16(1819);
+emit_16(1886);
+emit_16(1820);
+emit_16(1887);
+emit_16(1821);
+emit_16(1887);
+emit_16(1820);
+emit_16(1887);
+emit_16(1821);
+emit_16(1888);
+emit_16(1822);
+emit_16(1888);
+emit_16(1821);
+emit_16(1888);
+emit_16(1822);
+emit_16(1889);
+emit_16(1823);
+emit_16(1889);
+emit_16(1822);
+emit_16(1889);
+emit_16(1823);
+emit_16(1890);
+emit_16(1824);
+emit_16(1890);
+emit_16(1823);
+emit_16(1890);
+emit_16(1824);
+emit_16(1891);
+emit_16(1825);
+emit_16(1891);
+emit_16(1824);
+emit_16(1891);
+emit_16(1825);
+emit_16(1892);
+emit_16(1826);
+emit_16(1892);
+emit_16(1825);
+emit_16(1892);
+emit_16(1826);
+emit_16(1893);
+emit_16(1827);
+emit_16(1893);
+emit_16(1826);
+emit_16(1893);
+emit_16(1827);
+emit_16(1894);
+emit_16(1828);
+emit_16(1894);
+emit_16(1827);
+emit_16(1894);
+emit_16(1828);
+emit_16(1895);
+emit_16(1829);
+emit_16(1895);
+emit_16(1828);
+emit_16(1895);
+emit_16(1829);
+emit_16(1896);
+emit_16(1830);
+emit_16(1896);
+emit_16(1829);
+emit_16(1896);
+emit_16(1830);
+emit_16(1897);
+emit_16(1831);
+emit_16(1897);
+emit_16(1830);
+emit_16(1897);
+emit_16(1831);
+emit_16(1898);
+emit_16(1832);
+emit_16(1898);
+emit_16(1831);
+emit_16(1898);
+emit_16(1832);
+emit_16(1899);
+emit_16(1833);
+emit_16(1899);
+emit_16(1832);
+emit_16(1899);
+emit_16(1833);
+emit_16(1900);
+emit_16(1834);
+emit_16(1900);
+emit_16(1833);
+emit_16(1900);
+emit_16(1834);
+emit_16(1901);
+emit_16(1835);
+emit_16(1901);
+emit_16(1834);
+emit_16(1901);
+emit_16(1835);
+emit_16(1902);
+emit_16(1836);
+emit_16(1902);
+emit_16(1835);
+emit_16(1902);
+emit_16(1836);
+emit_16(1903);
+emit_16(1837);
+emit_16(1903);
+emit_16(1836);
+emit_16(1903);
+emit_16(1837);
+emit_16(1904);
+emit_16(1838);
+emit_16(1904);
+emit_16(1837);
+emit_16(1904);
+emit_16(1838);
+emit_16(1905);
+emit_16(1839);
+emit_16(1905);
+emit_16(1838);
+emit_16(1905);
+emit_16(1839);
+emit_16(1906);
+emit_16(1840);
+emit_16(1906);
+emit_16(1839);
+emit_16(1906);
+emit_16(1840);
+emit_16(1907);
+emit_16(1841);
+emit_16(1907);
+emit_16(1840);
+emit_16(1907);
+emit_16(1841);
+emit_16(1908);
+emit_16(1842);
+emit_16(1908);
+emit_16(1841);
+emit_16(1908);
+emit_16(1842);
+emit_16(1909);
+emit_16(1843);
+emit_16(1909);
+emit_16(1842);
+emit_16(1909);
+emit_16(1843);
+emit_16(1910);
+emit_16(1844);
+emit_16(1910);
+emit_16(1843);
+emit_16(1910);
+emit_16(1844);
+emit_16(1911);
+emit_16(1845);
+emit_16(1911);
+emit_16(1844);
+emit_16(1911);
+emit_16(1845);
+emit_16(1912);
+emit_16(1846);
+emit_16(1912);
+emit_16(1845);
+emit_16(1912);
+emit_16(1846);
+emit_16(1913);
+emit_16(1847);
+emit_16(1913);
+emit_16(1846);
+emit_16(1914);
+emit_16(1848);
+emit_16(1915);
+emit_16(1849);
+emit_16(1915);
+emit_16(1848);
+emit_16(1915);
+emit_16(1849);
+emit_16(1916);
+emit_16(1850);
+emit_16(1916);
+emit_16(1849);
+emit_16(1916);
+emit_16(1850);
+emit_16(1917);
+emit_16(1851);
+emit_16(1917);
+emit_16(1850);
+emit_16(1917);
+emit_16(1851);
+emit_16(1918);
+emit_16(1852);
+emit_16(1918);
+emit_16(1851);
+emit_16(1918);
+emit_16(1852);
+emit_16(1919);
+emit_16(1853);
+emit_16(1919);
+emit_16(1852);
+emit_16(1919);
+emit_16(1853);
+emit_16(1920);
+emit_16(1854);
+emit_16(1920);
+emit_16(1853);
+emit_16(1920);
+emit_16(1854);
+emit_16(1921);
+emit_16(1855);
+emit_16(1921);
+emit_16(1854);
+emit_16(1921);
+emit_16(1855);
+emit_16(1922);
+emit_16(1856);
+emit_16(1922);
+emit_16(1855);
+emit_16(1922);
+emit_16(1856);
+emit_16(1923);
+emit_16(1857);
+emit_16(1923);
+emit_16(1856);
+emit_16(1923);
+emit_16(1857);
+emit_16(1924);
+emit_16(1858);
+emit_16(1924);
+emit_16(1857);
+emit_16(1924);
+emit_16(1858);
+emit_16(1925);
+emit_16(1859);
+emit_16(1925);
+emit_16(1858);
+emit_16(1925);
+emit_16(1859);
+emit_16(1926);
+emit_16(1860);
+emit_16(1926);
+emit_16(1859);
+emit_16(1926);
+emit_16(1860);
+emit_16(1927);
+emit_16(1861);
+emit_16(1927);
+emit_16(1860);
+emit_16(1927);
+emit_16(1861);
+emit_16(1928);
+emit_16(1862);
+emit_16(1928);
+emit_16(1861);
+emit_16(1928);
+emit_16(1862);
+emit_16(1929);
+emit_16(1863);
+emit_16(1929);
+emit_16(1862);
+emit_16(1929);
+emit_16(1863);
+emit_16(1930);
+emit_16(1864);
+emit_16(1930);
+emit_16(1863);
+emit_16(1930);
+emit_16(1864);
+emit_16(1931);
+emit_16(1865);
+emit_16(1931);
+emit_16(1864);
+emit_16(1931);
+emit_16(1865);
+emit_16(1932);
+emit_16(1866);
+emit_16(1932);
+emit_16(1865);
+emit_16(1932);
+emit_16(1866);
+emit_16(1933);
+emit_16(1867);
+emit_16(1933);
+emit_16(1866);
+emit_16(1933);
+emit_16(1867);
+emit_16(1934);
+emit_16(1868);
+emit_16(1934);
+emit_16(1867);
+emit_16(1934);
+emit_16(1868);
+emit_16(1935);
+emit_16(1869);
+emit_16(1935);
+emit_16(1868);
+emit_16(1935);
+emit_16(1869);
+emit_16(1936);
+emit_16(1870);
+emit_16(1936);
+emit_16(1869);
+emit_16(1936);
+emit_16(1870);
+emit_16(1937);
+emit_16(1871);
+emit_16(1937);
+emit_16(1870);
+emit_16(1937);
+emit_16(1871);
+emit_16(1938);
+emit_16(1872);
+emit_16(1938);
+emit_16(1871);
+emit_16(1938);
+emit_16(1872);
+emit_16(1939);
+emit_16(1873);
+emit_16(1939);
+emit_16(1872);
+emit_16(1939);
+emit_16(1873);
+emit_16(1940);
+emit_16(1874);
+emit_16(1940);
+emit_16(1873);
+emit_16(1940);
+emit_16(1874);
+emit_16(1941);
+emit_16(1875);
+emit_16(1941);
+emit_16(1874);
+emit_16(1941);
+emit_16(1875);
+emit_16(1942);
+emit_16(1876);
+emit_16(1942);
+emit_16(1875);
+emit_16(1942);
+emit_16(1876);
+emit_16(1943);
+emit_16(1877);
+emit_16(1943);
+emit_16(1876);
+emit_16(1943);
+emit_16(1877);
+emit_16(1944);
+emit_16(1878);
+emit_16(1944);
+emit_16(1877);
+emit_16(1944);
+emit_16(1878);
+emit_16(1945);
+emit_16(1879);
+emit_16(1945);
+emit_16(1878);
+emit_16(1945);
+emit_16(1879);
+emit_16(1946);
+emit_16(1880);
+emit_16(1946);
+emit_16(1879);
+emit_16(1946);
+emit_16(1880);
+emit_16(1947);
+emit_16(1881);
+emit_16(1947);
+emit_16(1880);
+emit_16(1947);
+emit_16(1881);
+emit_16(1948);
+emit_16(1882);
+emit_16(1948);
+emit_16(1881);
+emit_16(1948);
+emit_16(1882);
+emit_16(1949);
+emit_16(1883);
+emit_16(1949);
+emit_16(1882);
+emit_16(1949);
+emit_16(1883);
+emit_16(1950);
+emit_16(1884);
+emit_16(1950);
+emit_16(1883);
+emit_16(1950);
+emit_16(1884);
+emit_16(1951);
+emit_16(1885);
+emit_16(1951);
+emit_16(1884);
+emit_16(1951);
+emit_16(1885);
+emit_16(1952);
+emit_16(1886);
+emit_16(1952);
+emit_16(1885);
+emit_16(1952);
+emit_16(1886);
+emit_16(1953);
+emit_16(1887);
+emit_16(1953);
+emit_16(1886);
+emit_16(1953);
+emit_16(1887);
+emit_16(1954);
+emit_16(1888);
+emit_16(1954);
+emit_16(1887);
+emit_16(1954);
+emit_16(1888);
+emit_16(1955);
+emit_16(1889);
+emit_16(1955);
+emit_16(1888);
+emit_16(1955);
+emit_16(1889);
+emit_16(1956);
+emit_16(1890);
+emit_16(1956);
+emit_16(1889);
+emit_16(1956);
+emit_16(1890);
+emit_16(1957);
+emit_16(1891);
+emit_16(1957);
+emit_16(1890);
+emit_16(1957);
+emit_16(1891);
+emit_16(1958);
+emit_16(1892);
+emit_16(1958);
+emit_16(1891);
+emit_16(1958);
+emit_16(1892);
+emit_16(1959);
+emit_16(1893);
+emit_16(1959);
+emit_16(1892);
+emit_16(1959);
+emit_16(1893);
+emit_16(1960);
+emit_16(1894);
+emit_16(1960);
+emit_16(1893);
+emit_16(1960);
+emit_16(1894);
+emit_16(1961);
+emit_16(1895);
+emit_16(1961);
+emit_16(1894);
+emit_16(1961);
+emit_16(1895);
+emit_16(1962);
+emit_16(1896);
+emit_16(1962);
+emit_16(1895);
+emit_16(1962);
+emit_16(1896);
+emit_16(1963);
+emit_16(1897);
+emit_16(1963);
+emit_16(1896);
+emit_16(1963);
+emit_16(1897);
+emit_16(1964);
+emit_16(1898);
+emit_16(1964);
+emit_16(1897);
+emit_16(1964);
+emit_16(1898);
+emit_16(1965);
+emit_16(1899);
+emit_16(1965);
+emit_16(1898);
+emit_16(1965);
+emit_16(1899);
+emit_16(1966);
+emit_16(1900);
+emit_16(1966);
+emit_16(1899);
+emit_16(1966);
+emit_16(1900);
+emit_16(1967);
+emit_16(1901);
+emit_16(1967);
+emit_16(1900);
+emit_16(1967);
+emit_16(1901);
+emit_16(1968);
+emit_16(1902);
+emit_16(1968);
+emit_16(1901);
+emit_16(1968);
+emit_16(1902);
+emit_16(1969);
+emit_16(1903);
+emit_16(1969);
+emit_16(1902);
+emit_16(1969);
+emit_16(1903);
+emit_16(1970);
+emit_16(1904);
+emit_16(1970);
+emit_16(1903);
+emit_16(1970);
+emit_16(1904);
+emit_16(1971);
+emit_16(1905);
+emit_16(1971);
+emit_16(1904);
+emit_16(1971);
+emit_16(1905);
+emit_16(1972);
+emit_16(1906);
+emit_16(1972);
+emit_16(1905);
+emit_16(1972);
+emit_16(1906);
+emit_16(1973);
+emit_16(1907);
+emit_16(1973);
+emit_16(1906);
+emit_16(1973);
+emit_16(1907);
+emit_16(1974);
+emit_16(1908);
+emit_16(1974);
+emit_16(1907);
+emit_16(1974);
+emit_16(1908);
+emit_16(1975);
+emit_16(1909);
+emit_16(1975);
+emit_16(1908);
+emit_16(1975);
+emit_16(1909);
+emit_16(1976);
+emit_16(1910);
+emit_16(1976);
+emit_16(1909);
+emit_16(1976);
+emit_16(1910);
+emit_16(1977);
+emit_16(1911);
+emit_16(1977);
+emit_16(1910);
+emit_16(1977);
+emit_16(1911);
+emit_16(1978);
+emit_16(1912);
+emit_16(1978);
+emit_16(1911);
+emit_16(1978);
+emit_16(1912);
+emit_16(1979);
+emit_16(1913);
+emit_16(1979);
+emit_16(1912);
+emit_16(1980);
+emit_16(1914);
+emit_16(1981);
+emit_16(1915);
+emit_16(1981);
+emit_16(1914);
+emit_16(1981);
+emit_16(1915);
+emit_16(1982);
+emit_16(1916);
+emit_16(1982);
+emit_16(1915);
+emit_16(1982);
+emit_16(1916);
+emit_16(1983);
+emit_16(1917);
+emit_16(1983);
+emit_16(1916);
+emit_16(1983);
+emit_16(1917);
+emit_16(1984);
+emit_16(1918);
+emit_16(1984);
+emit_16(1917);
+emit_16(1984);
+emit_16(1918);
+emit_16(1985);
+emit_16(1919);
+emit_16(1985);
+emit_16(1918);
+emit_16(1985);
+emit_16(1919);
+emit_16(1986);
+emit_16(1920);
+emit_16(1986);
+emit_16(1919);
+emit_16(1986);
+emit_16(1920);
+emit_16(1987);
+emit_16(1921);
+emit_16(1987);
+emit_16(1920);
+emit_16(1987);
+emit_16(1921);
+emit_16(1988);
+emit_16(1922);
+emit_16(1988);
+emit_16(1921);
+emit_16(1988);
+emit_16(1922);
+emit_16(1989);
+emit_16(1923);
+emit_16(1989);
+emit_16(1922);
+emit_16(1989);
+emit_16(1923);
+emit_16(1990);
+emit_16(1924);
+emit_16(1990);
+emit_16(1923);
+emit_16(1990);
+emit_16(1924);
+emit_16(1991);
+emit_16(1925);
+emit_16(1991);
+emit_16(1924);
+emit_16(1991);
+emit_16(1925);
+emit_16(1992);
+emit_16(1926);
+emit_16(1992);
+emit_16(1925);
+emit_16(1992);
+emit_16(1926);
+emit_16(1993);
+emit_16(1927);
+emit_16(1993);
+emit_16(1926);
+emit_16(1993);
+emit_16(1927);
+emit_16(1994);
+emit_16(1928);
+emit_16(1994);
+emit_16(1927);
+emit_16(1994);
+emit_16(1928);
+emit_16(1995);
+emit_16(1929);
+emit_16(1995);
+emit_16(1928);
+emit_16(1995);
+emit_16(1929);
+emit_16(1996);
+emit_16(1930);
+emit_16(1996);
+emit_16(1929);
+emit_16(1996);
+emit_16(1930);
+emit_16(1997);
+emit_16(1931);
+emit_16(1997);
+emit_16(1930);
+emit_16(1997);
+emit_16(1931);
+emit_16(1998);
+emit_16(1932);
+emit_16(1998);
+emit_16(1931);
+emit_16(1998);
+emit_16(1932);
+emit_16(1999);
+emit_16(1933);
+emit_16(1999);
+emit_16(1932);
+emit_16(1999);
+emit_16(1933);
+emit_16(2000);
+emit_16(1934);
+emit_16(2000);
+emit_16(1933);
+emit_16(2000);
+emit_16(1934);
+emit_16(2001);
+emit_16(1935);
+emit_16(2001);
+emit_16(1934);
+emit_16(2001);
+emit_16(1935);
+emit_16(2002);
+emit_16(1936);
+emit_16(2002);
+emit_16(1935);
+emit_16(2002);
+emit_16(1936);
+emit_16(2003);
+emit_16(1937);
+emit_16(2003);
+emit_16(1936);
+emit_16(2003);
+emit_16(1937);
+emit_16(2004);
+emit_16(1938);
+emit_16(2004);
+emit_16(1937);
+emit_16(2004);
+emit_16(1938);
+emit_16(2005);
+emit_16(1939);
+emit_16(2005);
+emit_16(1938);
+emit_16(2005);
+emit_16(1939);
+emit_16(2006);
+emit_16(1940);
+emit_16(2006);
+emit_16(1939);
+emit_16(2006);
+emit_16(1940);
+emit_16(2007);
+emit_16(1941);
+emit_16(2007);
+emit_16(1940);
+emit_16(2007);
+emit_16(1941);
+emit_16(2008);
+emit_16(1942);
+emit_16(2008);
+emit_16(1941);
+emit_16(2008);
+emit_16(1942);
+emit_16(2009);
+emit_16(1943);
+emit_16(2009);
+emit_16(1942);
+emit_16(2009);
+emit_16(1943);
+emit_16(2010);
+emit_16(1944);
+emit_16(2010);
+emit_16(1943);
+emit_16(2010);
+emit_16(1944);
+emit_16(2011);
+emit_16(1945);
+emit_16(2011);
+emit_16(1944);
+emit_16(2011);
+emit_16(1945);
+emit_16(2012);
+emit_16(1946);
+emit_16(2012);
+emit_16(1945);
+emit_16(2012);
+emit_16(1946);
+emit_16(2013);
+emit_16(1947);
+emit_16(2013);
+emit_16(1946);
+emit_16(2013);
+emit_16(1947);
+emit_16(2014);
+emit_16(1948);
+emit_16(2014);
+emit_16(1947);
+emit_16(2014);
+emit_16(1948);
+emit_16(2015);
+emit_16(1949);
+emit_16(2015);
+emit_16(1948);
+emit_16(2015);
+emit_16(1949);
+emit_16(2016);
+emit_16(1950);
+emit_16(2016);
+emit_16(1949);
+emit_16(2016);
+emit_16(1950);
+emit_16(2017);
+emit_16(1951);
+emit_16(2017);
+emit_16(1950);
+emit_16(2017);
+emit_16(1951);
+emit_16(2018);
+emit_16(1952);
+emit_16(2018);
+emit_16(1951);
+emit_16(2018);
+emit_16(1952);
+emit_16(2019);
+emit_16(1953);
+emit_16(2019);
+emit_16(1952);
+emit_16(2019);
+emit_16(1953);
+emit_16(2020);
+emit_16(1954);
+emit_16(2020);
+emit_16(1953);
+emit_16(2020);
+emit_16(1954);
+emit_16(2021);
+emit_16(1955);
+emit_16(2021);
+emit_16(1954);
+emit_16(2021);
+emit_16(1955);
+emit_16(2022);
+emit_16(1956);
+emit_16(2022);
+emit_16(1955);
+emit_16(2022);
+emit_16(1956);
+emit_16(2023);
+emit_16(1957);
+emit_16(2023);
+emit_16(1956);
+emit_16(2023);
+emit_16(1957);
+emit_16(2024);
+emit_16(1958);
+emit_16(2024);
+emit_16(1957);
+emit_16(2024);
+emit_16(1958);
+emit_16(2025);
+emit_16(1959);
+emit_16(2025);
+emit_16(1958);
+emit_16(2025);
+emit_16(1959);
+emit_16(2026);
+emit_16(1960);
+emit_16(2026);
+emit_16(1959);
+emit_16(2026);
+emit_16(1960);
+emit_16(2027);
+emit_16(1961);
+emit_16(2027);
+emit_16(1960);
+emit_16(2027);
+emit_16(1961);
+emit_16(2028);
+emit_16(1962);
+emit_16(2028);
+emit_16(1961);
+emit_16(2028);
+emit_16(1962);
+emit_16(2029);
+emit_16(1963);
+emit_16(2029);
+emit_16(1962);
+emit_16(2029);
+emit_16(1963);
+emit_16(2030);
+emit_16(1964);
+emit_16(2030);
+emit_16(1963);
+emit_16(2030);
+emit_16(1964);
+emit_16(2031);
+emit_16(1965);
+emit_16(2031);
+emit_16(1964);
+emit_16(2031);
+emit_16(1965);
+emit_16(2032);
+emit_16(1966);
+emit_16(2032);
+emit_16(1965);
+emit_16(2032);
+emit_16(1966);
+emit_16(2033);
+emit_16(1967);
+emit_16(2033);
+emit_16(1966);
+emit_16(2033);
+emit_16(1967);
+emit_16(2034);
+emit_16(1968);
+emit_16(2034);
+emit_16(1967);
+emit_16(2034);
+emit_16(1968);
+emit_16(2035);
+emit_16(1969);
+emit_16(2035);
+emit_16(1968);
+emit_16(2035);
+emit_16(1969);
+emit_16(2036);
+emit_16(1970);
+emit_16(2036);
+emit_16(1969);
+emit_16(2036);
+emit_16(1970);
+emit_16(2037);
+emit_16(1971);
+emit_16(2037);
+emit_16(1970);
+emit_16(2037);
+emit_16(1971);
+emit_16(2038);
+emit_16(1972);
+emit_16(2038);
+emit_16(1971);
+emit_16(2038);
+emit_16(1972);
+emit_16(2039);
+emit_16(1973);
+emit_16(2039);
+emit_16(1972);
+emit_16(2039);
+emit_16(1973);
+emit_16(2040);
+emit_16(1974);
+emit_16(2040);
+emit_16(1973);
+emit_16(2040);
+emit_16(1974);
+emit_16(2041);
+emit_16(1975);
+emit_16(2041);
+emit_16(1974);
+emit_16(2041);
+emit_16(1975);
+emit_16(2042);
+emit_16(1976);
+emit_16(2042);
+emit_16(1975);
+emit_16(2042);
+emit_16(1976);
+emit_16(2043);
+emit_16(1977);
+emit_16(2043);
+emit_16(1976);
+emit_16(2043);
+emit_16(1977);
+emit_16(2044);
+emit_16(1978);
+emit_16(2044);
+emit_16(1977);
+emit_16(2044);
+emit_16(1978);
+emit_16(2045);
+emit_16(1979);
+emit_16(2045);
+emit_16(1978);
+emit_16(2046);
+emit_16(1980);
+emit_16(2047);
+emit_16(1981);
+emit_16(2047);
+emit_16(1980);
+emit_16(2047);
+emit_16(1981);
+emit_16(2048);
+emit_16(1982);
+emit_16(2048);
+emit_16(1981);
+emit_16(2048);
+emit_16(1982);
+emit_16(2049);
+emit_16(1983);
+emit_16(2049);
+emit_16(1982);
+emit_16(2049);
+emit_16(1983);
+emit_16(2050);
+emit_16(1984);
+emit_16(2050);
+emit_16(1983);
+emit_16(2050);
+emit_16(1984);
+emit_16(2051);
+emit_16(1985);
+emit_16(2051);
+emit_16(1984);
+emit_16(2051);
+emit_16(1985);
+emit_16(2052);
+emit_16(1986);
+emit_16(2052);
+emit_16(1985);
+emit_16(2052);
+emit_16(1986);
+emit_16(2053);
+emit_16(1987);
+emit_16(2053);
+emit_16(1986);
+emit_16(2053);
+emit_16(1987);
+emit_16(2054);
+emit_16(1988);
+emit_16(2054);
+emit_16(1987);
+emit_16(2054);
+emit_16(1988);
+emit_16(2055);
+emit_16(1989);
+emit_16(2055);
+emit_16(1988);
+emit_16(2055);
+emit_16(1989);
+emit_16(2056);
+emit_16(1990);
+emit_16(2056);
+emit_16(1989);
+emit_16(2056);
+emit_16(1990);
+emit_16(2057);
+emit_16(1991);
+emit_16(2057);
+emit_16(1990);
+emit_16(2057);
+emit_16(1991);
+emit_16(2058);
+emit_16(1992);
+emit_16(2058);
+emit_16(1991);
+emit_16(2058);
+emit_16(1992);
+emit_16(2059);
+emit_16(1993);
+emit_16(2059);
+emit_16(1992);
+emit_16(2059);
+emit_16(1993);
+emit_16(2060);
+emit_16(1994);
+emit_16(2060);
+emit_16(1993);
+emit_16(2060);
+emit_16(1994);
+emit_16(2061);
+emit_16(1995);
+emit_16(2061);
+emit_16(1994);
+emit_16(2061);
+emit_16(1995);
+emit_16(2062);
+emit_16(1996);
+emit_16(2062);
+emit_16(1995);
+emit_16(2062);
+emit_16(1996);
+emit_16(2063);
+emit_16(1997);
+emit_16(2063);
+emit_16(1996);
+emit_16(2063);
+emit_16(1997);
+emit_16(2064);
+emit_16(1998);
+emit_16(2064);
+emit_16(1997);
+emit_16(2064);
+emit_16(1998);
+emit_16(2065);
+emit_16(1999);
+emit_16(2065);
+emit_16(1998);
+emit_16(2065);
+emit_16(1999);
+emit_16(2066);
+emit_16(2000);
+emit_16(2066);
+emit_16(1999);
+emit_16(2066);
+emit_16(2000);
+emit_16(2067);
+emit_16(2001);
+emit_16(2067);
+emit_16(2000);
+emit_16(2067);
+emit_16(2001);
+emit_16(2068);
+emit_16(2002);
+emit_16(2068);
+emit_16(2001);
+emit_16(2068);
+emit_16(2002);
+emit_16(2069);
+emit_16(2003);
+emit_16(2069);
+emit_16(2002);
+emit_16(2069);
+emit_16(2003);
+emit_16(2070);
+emit_16(2004);
+emit_16(2070);
+emit_16(2003);
+emit_16(2070);
+emit_16(2004);
+emit_16(2071);
+emit_16(2005);
+emit_16(2071);
+emit_16(2004);
+emit_16(2071);
+emit_16(2005);
+emit_16(2072);
+emit_16(2006);
+emit_16(2072);
+emit_16(2005);
+emit_16(2072);
+emit_16(2006);
+emit_16(2073);
+emit_16(2007);
+emit_16(2073);
+emit_16(2006);
+emit_16(2073);
+emit_16(2007);
+emit_16(2074);
+emit_16(2008);
+emit_16(2074);
+emit_16(2007);
+emit_16(2074);
+emit_16(2008);
+emit_16(2075);
+emit_16(2009);
+emit_16(2075);
+emit_16(2008);
+emit_16(2075);
+emit_16(2009);
+emit_16(2076);
+emit_16(2010);
+emit_16(2076);
+emit_16(2009);
+emit_16(2076);
+emit_16(2010);
+emit_16(2077);
+emit_16(2011);
+emit_16(2077);
+emit_16(2010);
+emit_16(2077);
+emit_16(2011);
+emit_16(2078);
+emit_16(2012);
+emit_16(2078);
+emit_16(2011);
+emit_16(2078);
+emit_16(2012);
+emit_16(2079);
+emit_16(2013);
+emit_16(2079);
+emit_16(2012);
+emit_16(2079);
+emit_16(2013);
+emit_16(2080);
+emit_16(2014);
+emit_16(2080);
+emit_16(2013);
+emit_16(2080);
+emit_16(2014);
+emit_16(2081);
+emit_16(2015);
+emit_16(2081);
+emit_16(2014);
+emit_16(2081);
+emit_16(2015);
+emit_16(2082);
+emit_16(2016);
+emit_16(2082);
+emit_16(2015);
+emit_16(2082);
+emit_16(2016);
+emit_16(2083);
+emit_16(2017);
+emit_16(2083);
+emit_16(2016);
+emit_16(2083);
+emit_16(2017);
+emit_16(2084);
+emit_16(2018);
+emit_16(2084);
+emit_16(2017);
+emit_16(2084);
+emit_16(2018);
+emit_16(2085);
+emit_16(2019);
+emit_16(2085);
+emit_16(2018);
+emit_16(2085);
+emit_16(2019);
+emit_16(2086);
+emit_16(2020);
+emit_16(2086);
+emit_16(2019);
+emit_16(2086);
+emit_16(2020);
+emit_16(2087);
+emit_16(2021);
+emit_16(2087);
+emit_16(2020);
+emit_16(2087);
+emit_16(2021);
+emit_16(2088);
+emit_16(2022);
+emit_16(2088);
+emit_16(2021);
+emit_16(2088);
+emit_16(2022);
+emit_16(2089);
+emit_16(2023);
+emit_16(2089);
+emit_16(2022);
+emit_16(2089);
+emit_16(2023);
+emit_16(2090);
+emit_16(2024);
+emit_16(2090);
+emit_16(2023);
+emit_16(2090);
+emit_16(2024);
+emit_16(2091);
+emit_16(2025);
+emit_16(2091);
+emit_16(2024);
+emit_16(2091);
+emit_16(2025);
+emit_16(2092);
+emit_16(2026);
+emit_16(2092);
+emit_16(2025);
+emit_16(2092);
+emit_16(2026);
+emit_16(2093);
+emit_16(2027);
+emit_16(2093);
+emit_16(2026);
+emit_16(2093);
+emit_16(2027);
+emit_16(2094);
+emit_16(2028);
+emit_16(2094);
+emit_16(2027);
+emit_16(2094);
+emit_16(2028);
+emit_16(2095);
+emit_16(2029);
+emit_16(2095);
+emit_16(2028);
+emit_16(2095);
+emit_16(2029);
+emit_16(2096);
+emit_16(2030);
+emit_16(2096);
+emit_16(2029);
+emit_16(2096);
+emit_16(2030);
+emit_16(2097);
+emit_16(2031);
+emit_16(2097);
+emit_16(2030);
+emit_16(2097);
+emit_16(2031);
+emit_16(2098);
+emit_16(2032);
+emit_16(2098);
+emit_16(2031);
+emit_16(2098);
+emit_16(2032);
+emit_16(2099);
+emit_16(2033);
+emit_16(2099);
+emit_16(2032);
+emit_16(2099);
+emit_16(2033);
+emit_16(2100);
+emit_16(2034);
+emit_16(2100);
+emit_16(2033);
+emit_16(2100);
+emit_16(2034);
+emit_16(2101);
+emit_16(2035);
+emit_16(2101);
+emit_16(2034);
+emit_16(2101);
+emit_16(2035);
+emit_16(2102);
+emit_16(2036);
+emit_16(2102);
+emit_16(2035);
+emit_16(2102);
+emit_16(2036);
+emit_16(2103);
+emit_16(2037);
+emit_16(2103);
+emit_16(2036);
+emit_16(2103);
+emit_16(2037);
+emit_16(2104);
+emit_16(2038);
+emit_16(2104);
+emit_16(2037);
+emit_16(2104);
+emit_16(2038);
+emit_16(2105);
+emit_16(2039);
+emit_16(2105);
+emit_16(2038);
+emit_16(2105);
+emit_16(2039);
+emit_16(2106);
+emit_16(2040);
+emit_16(2106);
+emit_16(2039);
+emit_16(2106);
+emit_16(2040);
+emit_16(2107);
+emit_16(2041);
+emit_16(2107);
+emit_16(2040);
+emit_16(2107);
+emit_16(2041);
+emit_16(2108);
+emit_16(2042);
+emit_16(2108);
+emit_16(2041);
+emit_16(2108);
+emit_16(2042);
+emit_16(2109);
+emit_16(2043);
+emit_16(2109);
+emit_16(2042);
+emit_16(2109);
+emit_16(2043);
+emit_16(2110);
+emit_16(2044);
+emit_16(2110);
+emit_16(2043);
+emit_16(2110);
+emit_16(2044);
+emit_16(2111);
+emit_16(2045);
+emit_16(2111);
+emit_16(2044);
+emit_16(2112);
+emit_16(2046);
+emit_16(2113);
+emit_16(2047);
+emit_16(2113);
+emit_16(2046);
+emit_16(2113);
+emit_16(2047);
+emit_16(2114);
+emit_16(2048);
+emit_16(2114);
+emit_16(2047);
+emit_16(2114);
+emit_16(2048);
+emit_16(2115);
+emit_16(2049);
+emit_16(2115);
+emit_16(2048);
+emit_16(2115);
+emit_16(2049);
+emit_16(2116);
+emit_16(2050);
+emit_16(2116);
+emit_16(2049);
+emit_16(2116);
+emit_16(2050);
+emit_16(2117);
+emit_16(2051);
+emit_16(2117);
+emit_16(2050);
+emit_16(2117);
+emit_16(2051);
+emit_16(2118);
+emit_16(2052);
+emit_16(2118);
+emit_16(2051);
+emit_16(2118);
+emit_16(2052);
+emit_16(2119);
+emit_16(2053);
+emit_16(2119);
+emit_16(2052);
+emit_16(2119);
+emit_16(2053);
+emit_16(2120);
+emit_16(2054);
+emit_16(2120);
+emit_16(2053);
+emit_16(2120);
+emit_16(2054);
+emit_16(2121);
+emit_16(2055);
+emit_16(2121);
+emit_16(2054);
+emit_16(2121);
+emit_16(2055);
+emit_16(2122);
+emit_16(2056);
+emit_16(2122);
+emit_16(2055);
+emit_16(2122);
+emit_16(2056);
+emit_16(2123);
+emit_16(2057);
+emit_16(2123);
+emit_16(2056);
+emit_16(2123);
+emit_16(2057);
+emit_16(2124);
+emit_16(2058);
+emit_16(2124);
+emit_16(2057);
+emit_16(2124);
+emit_16(2058);
+emit_16(2125);
+emit_16(2059);
+emit_16(2125);
+emit_16(2058);
+emit_16(2125);
+emit_16(2059);
+emit_16(2126);
+emit_16(2060);
+emit_16(2126);
+emit_16(2059);
+emit_16(2126);
+emit_16(2060);
+emit_16(2127);
+emit_16(2061);
+emit_16(2127);
+emit_16(2060);
+emit_16(2127);
+emit_16(2061);
+emit_16(2128);
+emit_16(2062);
+emit_16(2128);
+emit_16(2061);
+emit_16(2128);
+emit_16(2062);
+emit_16(2129);
+emit_16(2063);
+emit_16(2129);
+emit_16(2062);
+emit_16(2129);
+emit_16(2063);
+emit_16(2130);
+emit_16(2064);
+emit_16(2130);
+emit_16(2063);
+emit_16(2130);
+emit_16(2064);
+emit_16(2131);
+emit_16(2065);
+emit_16(2131);
+emit_16(2064);
+emit_16(2131);
+emit_16(2065);
+emit_16(2132);
+emit_16(2066);
+emit_16(2132);
+emit_16(2065);
+emit_16(2132);
+emit_16(2066);
+emit_16(2133);
+emit_16(2067);
+emit_16(2133);
+emit_16(2066);
+emit_16(2133);
+emit_16(2067);
+emit_16(2134);
+emit_16(2068);
+emit_16(2134);
+emit_16(2067);
+emit_16(2134);
+emit_16(2068);
+emit_16(2135);
+emit_16(2069);
+emit_16(2135);
+emit_16(2068);
+emit_16(2135);
+emit_16(2069);
+emit_16(2136);
+emit_16(2070);
+emit_16(2136);
+emit_16(2069);
+emit_16(2136);
+emit_16(2070);
+emit_16(2137);
+emit_16(2071);
+emit_16(2137);
+emit_16(2070);
+emit_16(2137);
+emit_16(2071);
+emit_16(2138);
+emit_16(2072);
+emit_16(2138);
+emit_16(2071);
+emit_16(2138);
+emit_16(2072);
+emit_16(2139);
+emit_16(2073);
+emit_16(2139);
+emit_16(2072);
+emit_16(2139);
+emit_16(2073);
+emit_16(2140);
+emit_16(2074);
+emit_16(2140);
+emit_16(2073);
+emit_16(2140);
+emit_16(2074);
+emit_16(2141);
+emit_16(2075);
+emit_16(2141);
+emit_16(2074);
+emit_16(2141);
+emit_16(2075);
+emit_16(2142);
+emit_16(2076);
+emit_16(2142);
+emit_16(2075);
+emit_16(2142);
+emit_16(2076);
+emit_16(2143);
+emit_16(2077);
+emit_16(2143);
+emit_16(2076);
+emit_16(2143);
+emit_16(2077);
+emit_16(2144);
+emit_16(2078);
+emit_16(2144);
+emit_16(2077);
+emit_16(2144);
+emit_16(2078);
+emit_16(2145);
+emit_16(2079);
+emit_16(2145);
+emit_16(2078);
+emit_16(2145);
+emit_16(2079);
+emit_16(2146);
+emit_16(2080);
+emit_16(2146);
+emit_16(2079);
+emit_16(2146);
+emit_16(2080);
+emit_16(2147);
+emit_16(2081);
+emit_16(2147);
+emit_16(2080);
+emit_16(2147);
+emit_16(2081);
+emit_16(2148);
+emit_16(2082);
+emit_16(2148);
+emit_16(2081);
+emit_16(2148);
+emit_16(2082);
+emit_16(2149);
+emit_16(2083);
+emit_16(2149);
+emit_16(2082);
+emit_16(2149);
+emit_16(2083);
+emit_16(2150);
+emit_16(2084);
+emit_16(2150);
+emit_16(2083);
+emit_16(2150);
+emit_16(2084);
+emit_16(2151);
+emit_16(2085);
+emit_16(2151);
+emit_16(2084);
+emit_16(2151);
+emit_16(2085);
+emit_16(2152);
+emit_16(2086);
+emit_16(2152);
+emit_16(2085);
+emit_16(2152);
+emit_16(2086);
+emit_16(2153);
+emit_16(2087);
+emit_16(2153);
+emit_16(2086);
+emit_16(2153);
+emit_16(2087);
+emit_16(2154);
+emit_16(2088);
+emit_16(2154);
+emit_16(2087);
+emit_16(2154);
+emit_16(2088);
+emit_16(2155);
+emit_16(2089);
+emit_16(2155);
+emit_16(2088);
+emit_16(2155);
+emit_16(2089);
+emit_16(2156);
+emit_16(2090);
+emit_16(2156);
+emit_16(2089);
+emit_16(2156);
+emit_16(2090);
+emit_16(2157);
+emit_16(2091);
+emit_16(2157);
+emit_16(2090);
+emit_16(2157);
+emit_16(2091);
+emit_16(2158);
+emit_16(2092);
+emit_16(2158);
+emit_16(2091);
+emit_16(2158);
+emit_16(2092);
+emit_16(2159);
+emit_16(2093);
+emit_16(2159);
+emit_16(2092);
+emit_16(2159);
+emit_16(2093);
+emit_16(2160);
+emit_16(2094);
+emit_16(2160);
+emit_16(2093);
+emit_16(2160);
+emit_16(2094);
+emit_16(2161);
+emit_16(2095);
+emit_16(2161);
+emit_16(2094);
+emit_16(2161);
+emit_16(2095);
+emit_16(2162);
+emit_16(2096);
+emit_16(2162);
+emit_16(2095);
+emit_16(2162);
+emit_16(2096);
+emit_16(2163);
+emit_16(2097);
+emit_16(2163);
+emit_16(2096);
+emit_16(2163);
+emit_16(2097);
+emit_16(2164);
+emit_16(2098);
+emit_16(2164);
+emit_16(2097);
+emit_16(2164);
+emit_16(2098);
+emit_16(2165);
+emit_16(2099);
+emit_16(2165);
+emit_16(2098);
+emit_16(2165);
+emit_16(2099);
+emit_16(2166);
+emit_16(2100);
+emit_16(2166);
+emit_16(2099);
+emit_16(2166);
+emit_16(2100);
+emit_16(2167);
+emit_16(2101);
+emit_16(2167);
+emit_16(2100);
+emit_16(2167);
+emit_16(2101);
+emit_16(2168);
+emit_16(2102);
+emit_16(2168);
+emit_16(2101);
+emit_16(2168);
+emit_16(2102);
+emit_16(2169);
+emit_16(2103);
+emit_16(2169);
+emit_16(2102);
+emit_16(2169);
+emit_16(2103);
+emit_16(2170);
+emit_16(2104);
+emit_16(2170);
+emit_16(2103);
+emit_16(2170);
+emit_16(2104);
+emit_16(2171);
+emit_16(2105);
+emit_16(2171);
+emit_16(2104);
+emit_16(2171);
+emit_16(2105);
+emit_16(2172);
+emit_16(2106);
+emit_16(2172);
+emit_16(2105);
+emit_16(2172);
+emit_16(2106);
+emit_16(2173);
+emit_16(2107);
+emit_16(2173);
+emit_16(2106);
+emit_16(2173);
+emit_16(2107);
+emit_16(2174);
+emit_16(2108);
+emit_16(2174);
+emit_16(2107);
+emit_16(2174);
+emit_16(2108);
+emit_16(2175);
+emit_16(2109);
+emit_16(2175);
+emit_16(2108);
+emit_16(2175);
+emit_16(2109);
+emit_16(2176);
+emit_16(2110);
+emit_16(2176);
+emit_16(2109);
+emit_16(2176);
+emit_16(2110);
+emit_16(2177);
+emit_16(2111);
+emit_16(2177);
+emit_16(2110);
+emit_16(2178);
+emit_16(2112);
+emit_16(2179);
+emit_16(2113);
+emit_16(2179);
+emit_16(2112);
+emit_16(2179);
+emit_16(2113);
+emit_16(2180);
+emit_16(2114);
+emit_16(2180);
+emit_16(2113);
+emit_16(2180);
+emit_16(2114);
+emit_16(2181);
+emit_16(2115);
+emit_16(2181);
+emit_16(2114);
+emit_16(2181);
+emit_16(2115);
+emit_16(2182);
+emit_16(2116);
+emit_16(2182);
+emit_16(2115);
+emit_16(2182);
+emit_16(2116);
+emit_16(2183);
+emit_16(2117);
+emit_16(2183);
+emit_16(2116);
+emit_16(2183);
+emit_16(2117);
+emit_16(2184);
+emit_16(2118);
+emit_16(2184);
+emit_16(2117);
+emit_16(2184);
+emit_16(2118);
+emit_16(2185);
+emit_16(2119);
+emit_16(2185);
+emit_16(2118);
+emit_16(2185);
+emit_16(2119);
+emit_16(2186);
+emit_16(2120);
+emit_16(2186);
+emit_16(2119);
+emit_16(2186);
+emit_16(2120);
+emit_16(2187);
+emit_16(2121);
+emit_16(2187);
+emit_16(2120);
+emit_16(2187);
+emit_16(2121);
+emit_16(2188);
+emit_16(2122);
+emit_16(2188);
+emit_16(2121);
+emit_16(2188);
+emit_16(2122);
+emit_16(2189);
+emit_16(2123);
+emit_16(2189);
+emit_16(2122);
+emit_16(2189);
+emit_16(2123);
+emit_16(2190);
+emit_16(2124);
+emit_16(2190);
+emit_16(2123);
+emit_16(2190);
+emit_16(2124);
+emit_16(2191);
+emit_16(2125);
+emit_16(2191);
+emit_16(2124);
+emit_16(2191);
+emit_16(2125);
+emit_16(2192);
+emit_16(2126);
+emit_16(2192);
+emit_16(2125);
+emit_16(2192);
+emit_16(2126);
+emit_16(2193);
+emit_16(2127);
+emit_16(2193);
+emit_16(2126);
+emit_16(2193);
+emit_16(2127);
+emit_16(2194);
+emit_16(2128);
+emit_16(2194);
+emit_16(2127);
+emit_16(2194);
+emit_16(2128);
+emit_16(2195);
+emit_16(2129);
+emit_16(2195);
+emit_16(2128);
+emit_16(2195);
+emit_16(2129);
+emit_16(2196);
+emit_16(2130);
+emit_16(2196);
+emit_16(2129);
+emit_16(2196);
+emit_16(2130);
+emit_16(2197);
+emit_16(2131);
+emit_16(2197);
+emit_16(2130);
+emit_16(2197);
+emit_16(2131);
+emit_16(2198);
+emit_16(2132);
+emit_16(2198);
+emit_16(2131);
+emit_16(2198);
+emit_16(2132);
+emit_16(2199);
+emit_16(2133);
+emit_16(2199);
+emit_16(2132);
+emit_16(2199);
+emit_16(2133);
+emit_16(2200);
+emit_16(2134);
+emit_16(2200);
+emit_16(2133);
+emit_16(2200);
+emit_16(2134);
+emit_16(2201);
+emit_16(2135);
+emit_16(2201);
+emit_16(2134);
+emit_16(2201);
+emit_16(2135);
+emit_16(2202);
+emit_16(2136);
+emit_16(2202);
+emit_16(2135);
+emit_16(2202);
+emit_16(2136);
+emit_16(2203);
+emit_16(2137);
+emit_16(2203);
+emit_16(2136);
+emit_16(2203);
+emit_16(2137);
+emit_16(2204);
+emit_16(2138);
+emit_16(2204);
+emit_16(2137);
+emit_16(2204);
+emit_16(2138);
+emit_16(2205);
+emit_16(2139);
+emit_16(2205);
+emit_16(2138);
+emit_16(2205);
+emit_16(2139);
+emit_16(2206);
+emit_16(2140);
+emit_16(2206);
+emit_16(2139);
+emit_16(2206);
+emit_16(2140);
+emit_16(2207);
+emit_16(2141);
+emit_16(2207);
+emit_16(2140);
+emit_16(2207);
+emit_16(2141);
+emit_16(2208);
+emit_16(2142);
+emit_16(2208);
+emit_16(2141);
+emit_16(2208);
+emit_16(2142);
+emit_16(2209);
+emit_16(2143);
+emit_16(2209);
+emit_16(2142);
+emit_16(2209);
+emit_16(2143);
+emit_16(2210);
+emit_16(2144);
+emit_16(2210);
+emit_16(2143);
+emit_16(2210);
+emit_16(2144);
+emit_16(2211);
+emit_16(2145);
+emit_16(2211);
+emit_16(2144);
+emit_16(2211);
+emit_16(2145);
+emit_16(2212);
+emit_16(2146);
+emit_16(2212);
+emit_16(2145);
+emit_16(2212);
+emit_16(2146);
+emit_16(2213);
+emit_16(2147);
+emit_16(2213);
+emit_16(2146);
+emit_16(2213);
+emit_16(2147);
+emit_16(2214);
+emit_16(2148);
+emit_16(2214);
+emit_16(2147);
+emit_16(2214);
+emit_16(2148);
+emit_16(2215);
+emit_16(2149);
+emit_16(2215);
+emit_16(2148);
+emit_16(2215);
+emit_16(2149);
+emit_16(2216);
+emit_16(2150);
+emit_16(2216);
+emit_16(2149);
+emit_16(2216);
+emit_16(2150);
+emit_16(2217);
+emit_16(2151);
+emit_16(2217);
+emit_16(2150);
+emit_16(2217);
+emit_16(2151);
+emit_16(2218);
+emit_16(2152);
+emit_16(2218);
+emit_16(2151);
+emit_16(2218);
+emit_16(2152);
+emit_16(2219);
+emit_16(2153);
+emit_16(2219);
+emit_16(2152);
+emit_16(2219);
+emit_16(2153);
+emit_16(2220);
+emit_16(2154);
+emit_16(2220);
+emit_16(2153);
+emit_16(2220);
+emit_16(2154);
+emit_16(2221);
+emit_16(2155);
+emit_16(2221);
+emit_16(2154);
+emit_16(2221);
+emit_16(2155);
+emit_16(2222);
+emit_16(2156);
+emit_16(2222);
+emit_16(2155);
+emit_16(2222);
+emit_16(2156);
+emit_16(2223);
+emit_16(2157);
+emit_16(2223);
+emit_16(2156);
+emit_16(2223);
+emit_16(2157);
+emit_16(2224);
+emit_16(2158);
+emit_16(2224);
+emit_16(2157);
+emit_16(2224);
+emit_16(2158);
+emit_16(2225);
+emit_16(2159);
+emit_16(2225);
+emit_16(2158);
+emit_16(2225);
+emit_16(2159);
+emit_16(2226);
+emit_16(2160);
+emit_16(2226);
+emit_16(2159);
+emit_16(2226);
+emit_16(2160);
+emit_16(2227);
+emit_16(2161);
+emit_16(2227);
+emit_16(2160);
+emit_16(2227);
+emit_16(2161);
+emit_16(2228);
+emit_16(2162);
+emit_16(2228);
+emit_16(2161);
+emit_16(2228);
+emit_16(2162);
+emit_16(2229);
+emit_16(2163);
+emit_16(2229);
+emit_16(2162);
+emit_16(2229);
+emit_16(2163);
+emit_16(2230);
+emit_16(2164);
+emit_16(2230);
+emit_16(2163);
+emit_16(2230);
+emit_16(2164);
+emit_16(2231);
+emit_16(2165);
+emit_16(2231);
+emit_16(2164);
+emit_16(2231);
+emit_16(2165);
+emit_16(2232);
+emit_16(2166);
+emit_16(2232);
+emit_16(2165);
+emit_16(2232);
+emit_16(2166);
+emit_16(2233);
+emit_16(2167);
+emit_16(2233);
+emit_16(2166);
+emit_16(2233);
+emit_16(2167);
+emit_16(2234);
+emit_16(2168);
+emit_16(2234);
+emit_16(2167);
+emit_16(2234);
+emit_16(2168);
+emit_16(2235);
+emit_16(2169);
+emit_16(2235);
+emit_16(2168);
+emit_16(2235);
+emit_16(2169);
+emit_16(2236);
+emit_16(2170);
+emit_16(2236);
+emit_16(2169);
+emit_16(2236);
+emit_16(2170);
+emit_16(2237);
+emit_16(2171);
+emit_16(2237);
+emit_16(2170);
+emit_16(2237);
+emit_16(2171);
+emit_16(2238);
+emit_16(2172);
+emit_16(2238);
+emit_16(2171);
+emit_16(2238);
+emit_16(2172);
+emit_16(2239);
+emit_16(2173);
+emit_16(2239);
+emit_16(2172);
+emit_16(2239);
+emit_16(2173);
+emit_16(2240);
+emit_16(2174);
+emit_16(2240);
+emit_16(2173);
+emit_16(2240);
+emit_16(2174);
+emit_16(2241);
+emit_16(2175);
+emit_16(2241);
+emit_16(2174);
+emit_16(2241);
+emit_16(2175);
+emit_16(2242);
+emit_16(2176);
+emit_16(2242);
+emit_16(2175);
+emit_16(2242);
+emit_16(2176);
+emit_16(2243);
+emit_16(2177);
+emit_16(2243);
+emit_16(2176);
+emit_start(Landscape06Idx)
+emit_16(0);
+emit_16(1);
+emit_16(2);
+emit_16(3);
+emit_16(2);
+emit_16(1);
+emit_16(2);
+emit_16(3);
+emit_16(4);
+emit_16(5);
+emit_16(4);
+emit_16(3);
+emit_16(4);
+emit_16(5);
+emit_16(6);
+emit_16(7);
+emit_16(6);
+emit_16(5);
+emit_16(6);
+emit_16(7);
+emit_16(8);
+emit_16(9);
+emit_16(8);
+emit_16(7);
+emit_16(8);
+emit_16(9);
+emit_16(10);
+emit_16(11);
+emit_16(10);
+emit_16(9);
+emit_16(10);
+emit_16(11);
+emit_16(12);
+emit_16(13);
+emit_16(12);
+emit_16(11);
+emit_16(12);
+emit_16(13);
+emit_16(14);
+emit_16(15);
+emit_16(14);
+emit_16(13);
+emit_16(14);
+emit_16(15);
+emit_16(16);
+emit_16(17);
+emit_16(16);
+emit_16(15);
+emit_16(16);
+emit_16(17);
+emit_16(18);
+emit_16(19);
+emit_16(18);
+emit_16(17);
+emit_16(18);
+emit_16(19);
+emit_16(20);
+emit_16(21);
+emit_16(20);
+emit_16(19);
+emit_16(20);
+emit_16(21);
+emit_16(22);
+emit_16(23);
+emit_16(22);
+emit_16(21);
+emit_16(22);
+emit_16(23);
+emit_16(24);
+emit_16(25);
+emit_16(24);
+emit_16(23);
+emit_16(24);
+emit_16(25);
+emit_16(26);
+emit_16(27);
+emit_16(26);
+emit_16(25);
+emit_16(26);
+emit_16(27);
+emit_16(28);
+emit_16(29);
+emit_16(28);
+emit_16(27);
+emit_16(28);
+emit_16(29);
+emit_16(30);
+emit_16(31);
+emit_16(30);
+emit_16(29);
+emit_16(30);
+emit_16(31);
+emit_16(32);
+emit_16(33);
+emit_16(32);
+emit_16(31);
+emit_16(32);
+emit_16(33);
+emit_16(34);
+emit_16(35);
+emit_16(34);
+emit_16(33);
+emit_16(34);
+emit_16(35);
+emit_16(36);
+emit_16(37);
+emit_16(36);
+emit_16(35);
+emit_16(36);
+emit_16(37);
+emit_16(38);
+emit_16(39);
+emit_16(38);
+emit_16(37);
+emit_16(38);
+emit_16(39);
+emit_16(40);
+emit_16(41);
+emit_16(40);
+emit_16(39);
+emit_16(40);
+emit_16(41);
+emit_16(42);
+emit_16(43);
+emit_16(42);
+emit_16(41);
+emit_16(42);
+emit_16(43);
+emit_16(44);
+emit_16(45);
+emit_16(44);
+emit_16(43);
+emit_16(44);
+emit_16(45);
+emit_16(46);
+emit_16(47);
+emit_16(46);
+emit_16(45);
+emit_16(46);
+emit_16(47);
+emit_16(48);
+emit_16(49);
+emit_16(48);
+emit_16(47);
+emit_16(48);
+emit_16(49);
+emit_16(50);
+emit_16(51);
+emit_16(50);
+emit_16(49);
+emit_16(50);
+emit_16(51);
+emit_16(52);
+emit_16(53);
+emit_16(52);
+emit_16(51);
+emit_16(52);
+emit_16(53);
+emit_16(54);
+emit_16(55);
+emit_16(54);
+emit_16(53);
+emit_16(54);
+emit_16(55);
+emit_16(56);
+emit_16(57);
+emit_16(56);
+emit_16(55);
+emit_16(56);
+emit_16(57);
+emit_16(58);
+emit_16(59);
+emit_16(58);
+emit_16(57);
+emit_16(58);
+emit_16(59);
+emit_16(60);
+emit_16(61);
+emit_16(60);
+emit_16(59);
+emit_16(60);
+emit_16(61);
+emit_16(62);
+emit_16(63);
+emit_16(62);
+emit_16(61);
+emit_16(62);
+emit_16(63);
+emit_16(64);
+emit_16(65);
+emit_16(64);
+emit_16(63);
+emit_16(64);
+emit_16(65);
+emit_16(66);
+emit_16(67);
+emit_16(66);
+emit_16(65);
+emit_16(66);
+emit_16(67);
+emit_16(68);
+emit_16(69);
+emit_16(68);
+emit_16(67);
+emit_16(68);
+emit_16(69);
+emit_16(70);
+emit_16(71);
+emit_16(70);
+emit_16(69);
+emit_16(70);
+emit_16(71);
+emit_16(72);
+emit_16(73);
+emit_16(72);
+emit_16(71);
+emit_16(72);
+emit_16(73);
+emit_16(74);
+emit_16(75);
+emit_16(74);
+emit_16(73);
+emit_16(74);
+emit_16(75);
+emit_16(76);
+emit_16(77);
+emit_16(76);
+emit_16(75);
+emit_16(76);
+emit_16(77);
+emit_16(78);
+emit_16(79);
+emit_16(78);
+emit_16(77);
+emit_16(78);
+emit_16(79);
+emit_16(80);
+emit_16(81);
+emit_16(80);
+emit_16(79);
+emit_16(80);
+emit_16(81);
+emit_16(82);
+emit_16(83);
+emit_16(82);
+emit_16(81);
+emit_16(82);
+emit_16(83);
+emit_16(84);
+emit_16(85);
+emit_16(84);
+emit_16(83);
+emit_16(84);
+emit_16(85);
+emit_16(86);
+emit_16(87);
+emit_16(86);
+emit_16(85);
+emit_16(86);
+emit_16(87);
+emit_16(88);
+emit_16(89);
+emit_16(88);
+emit_16(87);
+emit_16(88);
+emit_16(89);
+emit_16(90);
+emit_16(91);
+emit_16(90);
+emit_16(89);
+emit_16(90);
+emit_16(91);
+emit_16(92);
+emit_16(93);
+emit_16(92);
+emit_16(91);
+emit_16(92);
+emit_16(93);
+emit_16(94);
+emit_16(95);
+emit_16(94);
+emit_16(93);
+emit_16(94);
+emit_16(95);
+emit_16(96);
+emit_16(97);
+emit_16(96);
+emit_16(95);
+emit_16(96);
+emit_16(97);
+emit_16(98);
+emit_16(99);
+emit_16(98);
+emit_16(97);
+emit_16(98);
+emit_16(99);
+emit_16(100);
+emit_16(101);
+emit_16(100);
+emit_16(99);
+emit_16(100);
+emit_16(101);
+emit_16(102);
+emit_16(103);
+emit_16(102);
+emit_16(101);
+emit_16(102);
+emit_16(103);
+emit_16(104);
+emit_16(105);
+emit_16(104);
+emit_16(103);
+emit_16(104);
+emit_16(105);
+emit_16(106);
+emit_16(107);
+emit_16(106);
+emit_16(105);
+emit_16(106);
+emit_16(107);
+emit_16(108);
+emit_16(109);
+emit_16(108);
+emit_16(107);
+emit_16(108);
+emit_16(109);
+emit_16(110);
+emit_16(111);
+emit_16(110);
+emit_16(109);
+emit_16(110);
+emit_16(111);
+emit_16(112);
+emit_16(113);
+emit_16(112);
+emit_16(111);
+emit_16(112);
+emit_16(113);
+emit_16(114);
+emit_16(115);
+emit_16(114);
+emit_16(113);
+emit_16(114);
+emit_16(115);
+emit_16(116);
+emit_16(117);
+emit_16(116);
+emit_16(115);
+emit_16(116);
+emit_16(117);
+emit_16(118);
+emit_16(119);
+emit_16(118);
+emit_16(117);
+emit_16(118);
+emit_16(119);
+emit_16(120);
+emit_16(121);
+emit_16(120);
+emit_16(119);
+emit_16(120);
+emit_16(121);
+emit_16(122);
+emit_16(123);
+emit_16(122);
+emit_16(121);
+emit_16(122);
+emit_16(123);
+emit_16(124);
+emit_16(125);
+emit_16(124);
+emit_16(123);
+emit_16(124);
+emit_16(125);
+emit_16(126);
+emit_16(127);
+emit_16(126);
+emit_16(125);
+emit_16(126);
+emit_16(127);
+emit_16(128);
+emit_16(129);
+emit_16(128);
+emit_16(127);
+emit_16(128);
+emit_16(129);
+emit_16(130);
+emit_16(131);
+emit_16(130);
+emit_16(129);
+emit_16(132);
+emit_16(0);
+emit_16(133);
+emit_16(2);
+emit_16(133);
+emit_16(0);
+emit_16(133);
+emit_16(2);
+emit_16(134);
+emit_16(4);
+emit_16(134);
+emit_16(2);
+emit_16(134);
+emit_16(4);
+emit_16(135);
+emit_16(6);
+emit_16(135);
+emit_16(4);
+emit_16(135);
+emit_16(6);
+emit_16(136);
+emit_16(8);
+emit_16(136);
+emit_16(6);
+emit_16(136);
+emit_16(8);
+emit_16(137);
+emit_16(10);
+emit_16(137);
+emit_16(8);
+emit_16(137);
+emit_16(10);
+emit_16(138);
+emit_16(12);
+emit_16(138);
+emit_16(10);
+emit_16(138);
+emit_16(12);
+emit_16(139);
+emit_16(14);
+emit_16(139);
+emit_16(12);
+emit_16(139);
+emit_16(14);
+emit_16(140);
+emit_16(16);
+emit_16(140);
+emit_16(14);
+emit_16(140);
+emit_16(16);
+emit_16(141);
+emit_16(18);
+emit_16(141);
+emit_16(16);
+emit_16(141);
+emit_16(18);
+emit_16(142);
+emit_16(20);
+emit_16(142);
+emit_16(18);
+emit_16(142);
+emit_16(20);
+emit_16(143);
+emit_16(22);
+emit_16(143);
+emit_16(20);
+emit_16(143);
+emit_16(22);
+emit_16(144);
+emit_16(24);
+emit_16(144);
+emit_16(22);
+emit_16(144);
+emit_16(24);
+emit_16(145);
+emit_16(26);
+emit_16(145);
+emit_16(24);
+emit_16(145);
+emit_16(26);
+emit_16(146);
+emit_16(28);
+emit_16(146);
+emit_16(26);
+emit_16(146);
+emit_16(28);
+emit_16(147);
+emit_16(30);
+emit_16(147);
+emit_16(28);
+emit_16(147);
+emit_16(30);
+emit_16(148);
+emit_16(32);
+emit_16(148);
+emit_16(30);
+emit_16(148);
+emit_16(32);
+emit_16(149);
+emit_16(34);
+emit_16(149);
+emit_16(32);
+emit_16(149);
+emit_16(34);
+emit_16(150);
+emit_16(36);
+emit_16(150);
+emit_16(34);
+emit_16(150);
+emit_16(36);
+emit_16(151);
+emit_16(38);
+emit_16(151);
+emit_16(36);
+emit_16(151);
+emit_16(38);
+emit_16(152);
+emit_16(40);
+emit_16(152);
+emit_16(38);
+emit_16(152);
+emit_16(40);
+emit_16(153);
+emit_16(42);
+emit_16(153);
+emit_16(40);
+emit_16(153);
+emit_16(42);
+emit_16(154);
+emit_16(44);
+emit_16(154);
+emit_16(42);
+emit_16(154);
+emit_16(44);
+emit_16(155);
+emit_16(46);
+emit_16(155);
+emit_16(44);
+emit_16(155);
+emit_16(46);
+emit_16(156);
+emit_16(48);
+emit_16(156);
+emit_16(46);
+emit_16(156);
+emit_16(48);
+emit_16(157);
+emit_16(50);
+emit_16(157);
+emit_16(48);
+emit_16(157);
+emit_16(50);
+emit_16(158);
+emit_16(52);
+emit_16(158);
+emit_16(50);
+emit_16(158);
+emit_16(52);
+emit_16(159);
+emit_16(54);
+emit_16(159);
+emit_16(52);
+emit_16(159);
+emit_16(54);
+emit_16(160);
+emit_16(56);
+emit_16(160);
+emit_16(54);
+emit_16(160);
+emit_16(56);
+emit_16(161);
+emit_16(58);
+emit_16(161);
+emit_16(56);
+emit_16(161);
+emit_16(58);
+emit_16(162);
+emit_16(60);
+emit_16(162);
+emit_16(58);
+emit_16(162);
+emit_16(60);
+emit_16(163);
+emit_16(62);
+emit_16(163);
+emit_16(60);
+emit_16(163);
+emit_16(62);
+emit_16(164);
+emit_16(64);
+emit_16(164);
+emit_16(62);
+emit_16(164);
+emit_16(64);
+emit_16(165);
+emit_16(66);
+emit_16(165);
+emit_16(64);
+emit_16(165);
+emit_16(66);
+emit_16(166);
+emit_16(68);
+emit_16(166);
+emit_16(66);
+emit_16(166);
+emit_16(68);
+emit_16(167);
+emit_16(70);
+emit_16(167);
+emit_16(68);
+emit_16(167);
+emit_16(70);
+emit_16(168);
+emit_16(72);
+emit_16(168);
+emit_16(70);
+emit_16(168);
+emit_16(72);
+emit_16(169);
+emit_16(74);
+emit_16(169);
+emit_16(72);
+emit_16(169);
+emit_16(74);
+emit_16(170);
+emit_16(76);
+emit_16(170);
+emit_16(74);
+emit_16(170);
+emit_16(76);
+emit_16(171);
+emit_16(78);
+emit_16(171);
+emit_16(76);
+emit_16(171);
+emit_16(78);
+emit_16(172);
+emit_16(80);
+emit_16(172);
+emit_16(78);
+emit_16(172);
+emit_16(80);
+emit_16(173);
+emit_16(82);
+emit_16(173);
+emit_16(80);
+emit_16(173);
+emit_16(82);
+emit_16(174);
+emit_16(84);
+emit_16(174);
+emit_16(82);
+emit_16(174);
+emit_16(84);
+emit_16(175);
+emit_16(86);
+emit_16(175);
+emit_16(84);
+emit_16(175);
+emit_16(86);
+emit_16(176);
+emit_16(88);
+emit_16(176);
+emit_16(86);
+emit_16(176);
+emit_16(88);
+emit_16(177);
+emit_16(90);
+emit_16(177);
+emit_16(88);
+emit_16(177);
+emit_16(90);
+emit_16(178);
+emit_16(92);
+emit_16(178);
+emit_16(90);
+emit_16(178);
+emit_16(92);
+emit_16(179);
+emit_16(94);
+emit_16(179);
+emit_16(92);
+emit_16(179);
+emit_16(94);
+emit_16(180);
+emit_16(96);
+emit_16(180);
+emit_16(94);
+emit_16(180);
+emit_16(96);
+emit_16(181);
+emit_16(98);
+emit_16(181);
+emit_16(96);
+emit_16(181);
+emit_16(98);
+emit_16(182);
+emit_16(100);
+emit_16(182);
+emit_16(98);
+emit_16(182);
+emit_16(100);
+emit_16(183);
+emit_16(102);
+emit_16(183);
+emit_16(100);
+emit_16(183);
+emit_16(102);
+emit_16(184);
+emit_16(104);
+emit_16(184);
+emit_16(102);
+emit_16(184);
+emit_16(104);
+emit_16(185);
+emit_16(106);
+emit_16(185);
+emit_16(104);
+emit_16(185);
+emit_16(106);
+emit_16(186);
+emit_16(108);
+emit_16(186);
+emit_16(106);
+emit_16(186);
+emit_16(108);
+emit_16(187);
+emit_16(110);
+emit_16(187);
+emit_16(108);
+emit_16(187);
+emit_16(110);
+emit_16(188);
+emit_16(112);
+emit_16(188);
+emit_16(110);
+emit_16(188);
+emit_16(112);
+emit_16(189);
+emit_16(114);
+emit_16(189);
+emit_16(112);
+emit_16(189);
+emit_16(114);
+emit_16(190);
+emit_16(116);
+emit_16(190);
+emit_16(114);
+emit_16(190);
+emit_16(116);
+emit_16(191);
+emit_16(118);
+emit_16(191);
+emit_16(116);
+emit_16(191);
+emit_16(118);
+emit_16(192);
+emit_16(120);
+emit_16(192);
+emit_16(118);
+emit_16(192);
+emit_16(120);
+emit_16(193);
+emit_16(122);
+emit_16(193);
+emit_16(120);
+emit_16(193);
+emit_16(122);
+emit_16(194);
+emit_16(124);
+emit_16(194);
+emit_16(122);
+emit_16(194);
+emit_16(124);
+emit_16(195);
+emit_16(126);
+emit_16(195);
+emit_16(124);
+emit_16(195);
+emit_16(126);
+emit_16(196);
+emit_16(128);
+emit_16(196);
+emit_16(126);
+emit_16(196);
+emit_16(128);
+emit_16(197);
+emit_16(130);
+emit_16(197);
+emit_16(128);
+emit_16(198);
+emit_16(132);
+emit_16(199);
+emit_16(133);
+emit_16(199);
+emit_16(132);
+emit_16(199);
+emit_16(133);
+emit_16(200);
+emit_16(134);
+emit_16(200);
+emit_16(133);
+emit_16(200);
+emit_16(134);
+emit_16(201);
+emit_16(135);
+emit_16(201);
+emit_16(134);
+emit_16(201);
+emit_16(135);
+emit_16(202);
+emit_16(136);
+emit_16(202);
+emit_16(135);
+emit_16(202);
+emit_16(136);
+emit_16(203);
+emit_16(137);
+emit_16(203);
+emit_16(136);
+emit_16(203);
+emit_16(137);
+emit_16(204);
+emit_16(138);
+emit_16(204);
+emit_16(137);
+emit_16(204);
+emit_16(138);
+emit_16(205);
+emit_16(139);
+emit_16(205);
+emit_16(138);
+emit_16(205);
+emit_16(139);
+emit_16(206);
+emit_16(140);
+emit_16(206);
+emit_16(139);
+emit_16(206);
+emit_16(140);
+emit_16(207);
+emit_16(141);
+emit_16(207);
+emit_16(140);
+emit_16(207);
+emit_16(141);
+emit_16(208);
+emit_16(142);
+emit_16(208);
+emit_16(141);
+emit_16(208);
+emit_16(142);
+emit_16(209);
+emit_16(143);
+emit_16(209);
+emit_16(142);
+emit_16(209);
+emit_16(143);
+emit_16(210);
+emit_16(144);
+emit_16(210);
+emit_16(143);
+emit_16(210);
+emit_16(144);
+emit_16(211);
+emit_16(145);
+emit_16(211);
+emit_16(144);
+emit_16(211);
+emit_16(145);
+emit_16(212);
+emit_16(146);
+emit_16(212);
+emit_16(145);
+emit_16(212);
+emit_16(146);
+emit_16(213);
+emit_16(147);
+emit_16(213);
+emit_16(146);
+emit_16(213);
+emit_16(147);
+emit_16(214);
+emit_16(148);
+emit_16(214);
+emit_16(147);
+emit_16(214);
+emit_16(148);
+emit_16(215);
+emit_16(149);
+emit_16(215);
+emit_16(148);
+emit_16(215);
+emit_16(149);
+emit_16(216);
+emit_16(150);
+emit_16(216);
+emit_16(149);
+emit_16(216);
+emit_16(150);
+emit_16(217);
+emit_16(151);
+emit_16(217);
+emit_16(150);
+emit_16(217);
+emit_16(151);
+emit_16(218);
+emit_16(152);
+emit_16(218);
+emit_16(151);
+emit_16(218);
+emit_16(152);
+emit_16(219);
+emit_16(153);
+emit_16(219);
+emit_16(152);
+emit_16(219);
+emit_16(153);
+emit_16(220);
+emit_16(154);
+emit_16(220);
+emit_16(153);
+emit_16(220);
+emit_16(154);
+emit_16(221);
+emit_16(155);
+emit_16(221);
+emit_16(154);
+emit_16(221);
+emit_16(155);
+emit_16(222);
+emit_16(156);
+emit_16(222);
+emit_16(155);
+emit_16(222);
+emit_16(156);
+emit_16(223);
+emit_16(157);
+emit_16(223);
+emit_16(156);
+emit_16(223);
+emit_16(157);
+emit_16(224);
+emit_16(158);
+emit_16(224);
+emit_16(157);
+emit_16(224);
+emit_16(158);
+emit_16(225);
+emit_16(159);
+emit_16(225);
+emit_16(158);
+emit_16(225);
+emit_16(159);
+emit_16(226);
+emit_16(160);
+emit_16(226);
+emit_16(159);
+emit_16(226);
+emit_16(160);
+emit_16(227);
+emit_16(161);
+emit_16(227);
+emit_16(160);
+emit_16(227);
+emit_16(161);
+emit_16(228);
+emit_16(162);
+emit_16(228);
+emit_16(161);
+emit_16(228);
+emit_16(162);
+emit_16(229);
+emit_16(163);
+emit_16(229);
+emit_16(162);
+emit_16(229);
+emit_16(163);
+emit_16(230);
+emit_16(164);
+emit_16(230);
+emit_16(163);
+emit_16(230);
+emit_16(164);
+emit_16(231);
+emit_16(165);
+emit_16(231);
+emit_16(164);
+emit_16(231);
+emit_16(165);
+emit_16(232);
+emit_16(166);
+emit_16(232);
+emit_16(165);
+emit_16(232);
+emit_16(166);
+emit_16(233);
+emit_16(167);
+emit_16(233);
+emit_16(166);
+emit_16(233);
+emit_16(167);
+emit_16(234);
+emit_16(168);
+emit_16(234);
+emit_16(167);
+emit_16(234);
+emit_16(168);
+emit_16(235);
+emit_16(169);
+emit_16(235);
+emit_16(168);
+emit_16(235);
+emit_16(169);
+emit_16(236);
+emit_16(170);
+emit_16(236);
+emit_16(169);
+emit_16(236);
+emit_16(170);
+emit_16(237);
+emit_16(171);
+emit_16(237);
+emit_16(170);
+emit_16(237);
+emit_16(171);
+emit_16(238);
+emit_16(172);
+emit_16(238);
+emit_16(171);
+emit_16(238);
+emit_16(172);
+emit_16(239);
+emit_16(173);
+emit_16(239);
+emit_16(172);
+emit_16(239);
+emit_16(173);
+emit_16(240);
+emit_16(174);
+emit_16(240);
+emit_16(173);
+emit_16(240);
+emit_16(174);
+emit_16(241);
+emit_16(175);
+emit_16(241);
+emit_16(174);
+emit_16(241);
+emit_16(175);
+emit_16(242);
+emit_16(176);
+emit_16(242);
+emit_16(175);
+emit_16(242);
+emit_16(176);
+emit_16(243);
+emit_16(177);
+emit_16(243);
+emit_16(176);
+emit_16(243);
+emit_16(177);
+emit_16(244);
+emit_16(178);
+emit_16(244);
+emit_16(177);
+emit_16(244);
+emit_16(178);
+emit_16(245);
+emit_16(179);
+emit_16(245);
+emit_16(178);
+emit_16(245);
+emit_16(179);
+emit_16(246);
+emit_16(180);
+emit_16(246);
+emit_16(179);
+emit_16(246);
+emit_16(180);
+emit_16(247);
+emit_16(181);
+emit_16(247);
+emit_16(180);
+emit_16(247);
+emit_16(181);
+emit_16(248);
+emit_16(182);
+emit_16(248);
+emit_16(181);
+emit_16(248);
+emit_16(182);
+emit_16(249);
+emit_16(183);
+emit_16(249);
+emit_16(182);
+emit_16(249);
+emit_16(183);
+emit_16(250);
+emit_16(184);
+emit_16(250);
+emit_16(183);
+emit_16(250);
+emit_16(184);
+emit_16(251);
+emit_16(185);
+emit_16(251);
+emit_16(184);
+emit_16(251);
+emit_16(185);
+emit_16(252);
+emit_16(186);
+emit_16(252);
+emit_16(185);
+emit_16(252);
+emit_16(186);
+emit_16(253);
+emit_16(187);
+emit_16(253);
+emit_16(186);
+emit_16(253);
+emit_16(187);
+emit_16(254);
+emit_16(188);
+emit_16(254);
+emit_16(187);
+emit_16(254);
+emit_16(188);
+emit_16(255);
+emit_16(189);
+emit_16(255);
+emit_16(188);
+emit_16(255);
+emit_16(189);
+emit_16(256);
+emit_16(190);
+emit_16(256);
+emit_16(189);
+emit_16(256);
+emit_16(190);
+emit_16(257);
+emit_16(191);
+emit_16(257);
+emit_16(190);
+emit_16(257);
+emit_16(191);
+emit_16(258);
+emit_16(192);
+emit_16(258);
+emit_16(191);
+emit_16(258);
+emit_16(192);
+emit_16(259);
+emit_16(193);
+emit_16(259);
+emit_16(192);
+emit_16(259);
+emit_16(193);
+emit_16(260);
+emit_16(194);
+emit_16(260);
+emit_16(193);
+emit_16(260);
+emit_16(194);
+emit_16(261);
+emit_16(195);
+emit_16(261);
+emit_16(194);
+emit_16(261);
+emit_16(195);
+emit_16(262);
+emit_16(196);
+emit_16(262);
+emit_16(195);
+emit_16(262);
+emit_16(196);
+emit_16(263);
+emit_16(197);
+emit_16(263);
+emit_16(196);
+emit_16(264);
+emit_16(198);
+emit_16(265);
+emit_16(199);
+emit_16(265);
+emit_16(198);
+emit_16(265);
+emit_16(199);
+emit_16(266);
+emit_16(200);
+emit_16(266);
+emit_16(199);
+emit_16(266);
+emit_16(200);
+emit_16(267);
+emit_16(201);
+emit_16(267);
+emit_16(200);
+emit_16(267);
+emit_16(201);
+emit_16(268);
+emit_16(202);
+emit_16(268);
+emit_16(201);
+emit_16(268);
+emit_16(202);
+emit_16(269);
+emit_16(203);
+emit_16(269);
+emit_16(202);
+emit_16(269);
+emit_16(203);
+emit_16(270);
+emit_16(204);
+emit_16(270);
+emit_16(203);
+emit_16(270);
+emit_16(204);
+emit_16(271);
+emit_16(205);
+emit_16(271);
+emit_16(204);
+emit_16(271);
+emit_16(205);
+emit_16(272);
+emit_16(206);
+emit_16(272);
+emit_16(205);
+emit_16(272);
+emit_16(206);
+emit_16(273);
+emit_16(207);
+emit_16(273);
+emit_16(206);
+emit_16(273);
+emit_16(207);
+emit_16(274);
+emit_16(208);
+emit_16(274);
+emit_16(207);
+emit_16(274);
+emit_16(208);
+emit_16(275);
+emit_16(209);
+emit_16(275);
+emit_16(208);
+emit_16(275);
+emit_16(209);
+emit_16(276);
+emit_16(210);
+emit_16(276);
+emit_16(209);
+emit_16(276);
+emit_16(210);
+emit_16(277);
+emit_16(211);
+emit_16(277);
+emit_16(210);
+emit_16(277);
+emit_16(211);
+emit_16(278);
+emit_16(212);
+emit_16(278);
+emit_16(211);
+emit_16(278);
+emit_16(212);
+emit_16(279);
+emit_16(213);
+emit_16(279);
+emit_16(212);
+emit_16(279);
+emit_16(213);
+emit_16(280);
+emit_16(214);
+emit_16(280);
+emit_16(213);
+emit_16(280);
+emit_16(214);
+emit_16(281);
+emit_16(215);
+emit_16(281);
+emit_16(214);
+emit_16(281);
+emit_16(215);
+emit_16(282);
+emit_16(216);
+emit_16(282);
+emit_16(215);
+emit_16(282);
+emit_16(216);
+emit_16(283);
+emit_16(217);
+emit_16(283);
+emit_16(216);
+emit_16(283);
+emit_16(217);
+emit_16(284);
+emit_16(218);
+emit_16(284);
+emit_16(217);
+emit_16(284);
+emit_16(218);
+emit_16(285);
+emit_16(219);
+emit_16(285);
+emit_16(218);
+emit_16(285);
+emit_16(219);
+emit_16(286);
+emit_16(220);
+emit_16(286);
+emit_16(219);
+emit_16(286);
+emit_16(220);
+emit_16(287);
+emit_16(221);
+emit_16(287);
+emit_16(220);
+emit_16(287);
+emit_16(221);
+emit_16(288);
+emit_16(222);
+emit_16(288);
+emit_16(221);
+emit_16(288);
+emit_16(222);
+emit_16(289);
+emit_16(223);
+emit_16(289);
+emit_16(222);
+emit_16(289);
+emit_16(223);
+emit_16(290);
+emit_16(224);
+emit_16(290);
+emit_16(223);
+emit_16(290);
+emit_16(224);
+emit_16(291);
+emit_16(225);
+emit_16(291);
+emit_16(224);
+emit_16(291);
+emit_16(225);
+emit_16(292);
+emit_16(226);
+emit_16(292);
+emit_16(225);
+emit_16(292);
+emit_16(226);
+emit_16(293);
+emit_16(227);
+emit_16(293);
+emit_16(226);
+emit_16(293);
+emit_16(227);
+emit_16(294);
+emit_16(228);
+emit_16(294);
+emit_16(227);
+emit_16(294);
+emit_16(228);
+emit_16(295);
+emit_16(229);
+emit_16(295);
+emit_16(228);
+emit_16(295);
+emit_16(229);
+emit_16(296);
+emit_16(230);
+emit_16(296);
+emit_16(229);
+emit_16(296);
+emit_16(230);
+emit_16(297);
+emit_16(231);
+emit_16(297);
+emit_16(230);
+emit_16(297);
+emit_16(231);
+emit_16(298);
+emit_16(232);
+emit_16(298);
+emit_16(231);
+emit_16(298);
+emit_16(232);
+emit_16(299);
+emit_16(233);
+emit_16(299);
+emit_16(232);
+emit_16(299);
+emit_16(233);
+emit_16(300);
+emit_16(234);
+emit_16(300);
+emit_16(233);
+emit_16(300);
+emit_16(234);
+emit_16(301);
+emit_16(235);
+emit_16(301);
+emit_16(234);
+emit_16(301);
+emit_16(235);
+emit_16(302);
+emit_16(236);
+emit_16(302);
+emit_16(235);
+emit_16(302);
+emit_16(236);
+emit_16(303);
+emit_16(237);
+emit_16(303);
+emit_16(236);
+emit_16(303);
+emit_16(237);
+emit_16(304);
+emit_16(238);
+emit_16(304);
+emit_16(237);
+emit_16(304);
+emit_16(238);
+emit_16(305);
+emit_16(239);
+emit_16(305);
+emit_16(238);
+emit_16(305);
+emit_16(239);
+emit_16(306);
+emit_16(240);
+emit_16(306);
+emit_16(239);
+emit_16(306);
+emit_16(240);
+emit_16(307);
+emit_16(241);
+emit_16(307);
+emit_16(240);
+emit_16(307);
+emit_16(241);
+emit_16(308);
+emit_16(242);
+emit_16(308);
+emit_16(241);
+emit_16(308);
+emit_16(242);
+emit_16(309);
+emit_16(243);
+emit_16(309);
+emit_16(242);
+emit_16(309);
+emit_16(243);
+emit_16(310);
+emit_16(244);
+emit_16(310);
+emit_16(243);
+emit_16(310);
+emit_16(244);
+emit_16(311);
+emit_16(245);
+emit_16(311);
+emit_16(244);
+emit_16(311);
+emit_16(245);
+emit_16(312);
+emit_16(246);
+emit_16(312);
+emit_16(245);
+emit_16(312);
+emit_16(246);
+emit_16(313);
+emit_16(247);
+emit_16(313);
+emit_16(246);
+emit_16(313);
+emit_16(247);
+emit_16(314);
+emit_16(248);
+emit_16(314);
+emit_16(247);
+emit_16(314);
+emit_16(248);
+emit_16(315);
+emit_16(249);
+emit_16(315);
+emit_16(248);
+emit_16(315);
+emit_16(249);
+emit_16(316);
+emit_16(250);
+emit_16(316);
+emit_16(249);
+emit_16(316);
+emit_16(250);
+emit_16(317);
+emit_16(251);
+emit_16(317);
+emit_16(250);
+emit_16(317);
+emit_16(251);
+emit_16(318);
+emit_16(252);
+emit_16(318);
+emit_16(251);
+emit_16(318);
+emit_16(252);
+emit_16(319);
+emit_16(253);
+emit_16(319);
+emit_16(252);
+emit_16(319);
+emit_16(253);
+emit_16(320);
+emit_16(254);
+emit_16(320);
+emit_16(253);
+emit_16(320);
+emit_16(254);
+emit_16(321);
+emit_16(255);
+emit_16(321);
+emit_16(254);
+emit_16(321);
+emit_16(255);
+emit_16(322);
+emit_16(256);
+emit_16(322);
+emit_16(255);
+emit_16(322);
+emit_16(256);
+emit_16(323);
+emit_16(257);
+emit_16(323);
+emit_16(256);
+emit_16(323);
+emit_16(257);
+emit_16(324);
+emit_16(258);
+emit_16(324);
+emit_16(257);
+emit_16(324);
+emit_16(258);
+emit_16(325);
+emit_16(259);
+emit_16(325);
+emit_16(258);
+emit_16(325);
+emit_16(259);
+emit_16(326);
+emit_16(260);
+emit_16(326);
+emit_16(259);
+emit_16(326);
+emit_16(260);
+emit_16(327);
+emit_16(261);
+emit_16(327);
+emit_16(260);
+emit_16(327);
+emit_16(261);
+emit_16(328);
+emit_16(262);
+emit_16(328);
+emit_16(261);
+emit_16(328);
+emit_16(262);
+emit_16(329);
+emit_16(263);
+emit_16(329);
+emit_16(262);
+emit_16(330);
+emit_16(264);
+emit_16(331);
+emit_16(265);
+emit_16(331);
+emit_16(264);
+emit_16(331);
+emit_16(265);
+emit_16(332);
+emit_16(266);
+emit_16(332);
+emit_16(265);
+emit_16(332);
+emit_16(266);
+emit_16(333);
+emit_16(267);
+emit_16(333);
+emit_16(266);
+emit_16(333);
+emit_16(267);
+emit_16(334);
+emit_16(268);
+emit_16(334);
+emit_16(267);
+emit_16(334);
+emit_16(268);
+emit_16(335);
+emit_16(269);
+emit_16(335);
+emit_16(268);
+emit_16(335);
+emit_16(269);
+emit_16(336);
+emit_16(270);
+emit_16(336);
+emit_16(269);
+emit_16(336);
+emit_16(270);
+emit_16(337);
+emit_16(271);
+emit_16(337);
+emit_16(270);
+emit_16(337);
+emit_16(271);
+emit_16(338);
+emit_16(272);
+emit_16(338);
+emit_16(271);
+emit_16(338);
+emit_16(272);
+emit_16(339);
+emit_16(273);
+emit_16(339);
+emit_16(272);
+emit_16(339);
+emit_16(273);
+emit_16(340);
+emit_16(274);
+emit_16(340);
+emit_16(273);
+emit_16(340);
+emit_16(274);
+emit_16(341);
+emit_16(275);
+emit_16(341);
+emit_16(274);
+emit_16(341);
+emit_16(275);
+emit_16(342);
+emit_16(276);
+emit_16(342);
+emit_16(275);
+emit_16(342);
+emit_16(276);
+emit_16(343);
+emit_16(277);
+emit_16(343);
+emit_16(276);
+emit_16(343);
+emit_16(277);
+emit_16(344);
+emit_16(278);
+emit_16(344);
+emit_16(277);
+emit_16(344);
+emit_16(278);
+emit_16(345);
+emit_16(279);
+emit_16(345);
+emit_16(278);
+emit_16(345);
+emit_16(279);
+emit_16(346);
+emit_16(280);
+emit_16(346);
+emit_16(279);
+emit_16(346);
+emit_16(280);
+emit_16(347);
+emit_16(281);
+emit_16(347);
+emit_16(280);
+emit_16(347);
+emit_16(281);
+emit_16(348);
+emit_16(282);
+emit_16(348);
+emit_16(281);
+emit_16(348);
+emit_16(282);
+emit_16(349);
+emit_16(283);
+emit_16(349);
+emit_16(282);
+emit_16(349);
+emit_16(283);
+emit_16(350);
+emit_16(284);
+emit_16(350);
+emit_16(283);
+emit_16(350);
+emit_16(284);
+emit_16(351);
+emit_16(285);
+emit_16(351);
+emit_16(284);
+emit_16(351);
+emit_16(285);
+emit_16(352);
+emit_16(286);
+emit_16(352);
+emit_16(285);
+emit_16(352);
+emit_16(286);
+emit_16(353);
+emit_16(287);
+emit_16(353);
+emit_16(286);
+emit_16(353);
+emit_16(287);
+emit_16(354);
+emit_16(288);
+emit_16(354);
+emit_16(287);
+emit_16(354);
+emit_16(288);
+emit_16(355);
+emit_16(289);
+emit_16(355);
+emit_16(288);
+emit_16(355);
+emit_16(289);
+emit_16(356);
+emit_16(290);
+emit_16(356);
+emit_16(289);
+emit_16(356);
+emit_16(290);
+emit_16(357);
+emit_16(291);
+emit_16(357);
+emit_16(290);
+emit_16(357);
+emit_16(291);
+emit_16(358);
+emit_16(292);
+emit_16(358);
+emit_16(291);
+emit_16(358);
+emit_16(292);
+emit_16(359);
+emit_16(293);
+emit_16(359);
+emit_16(292);
+emit_16(359);
+emit_16(293);
+emit_16(360);
+emit_16(294);
+emit_16(360);
+emit_16(293);
+emit_16(360);
+emit_16(294);
+emit_16(361);
+emit_16(295);
+emit_16(361);
+emit_16(294);
+emit_16(361);
+emit_16(295);
+emit_16(362);
+emit_16(296);
+emit_16(362);
+emit_16(295);
+emit_16(362);
+emit_16(296);
+emit_16(363);
+emit_16(297);
+emit_16(363);
+emit_16(296);
+emit_16(363);
+emit_16(297);
+emit_16(364);
+emit_16(298);
+emit_16(364);
+emit_16(297);
+emit_16(364);
+emit_16(298);
+emit_16(365);
+emit_16(299);
+emit_16(365);
+emit_16(298);
+emit_16(365);
+emit_16(299);
+emit_16(366);
+emit_16(300);
+emit_16(366);
+emit_16(299);
+emit_16(366);
+emit_16(300);
+emit_16(367);
+emit_16(301);
+emit_16(367);
+emit_16(300);
+emit_16(367);
+emit_16(301);
+emit_16(368);
+emit_16(302);
+emit_16(368);
+emit_16(301);
+emit_16(368);
+emit_16(302);
+emit_16(369);
+emit_16(303);
+emit_16(369);
+emit_16(302);
+emit_16(369);
+emit_16(303);
+emit_16(370);
+emit_16(304);
+emit_16(370);
+emit_16(303);
+emit_16(370);
+emit_16(304);
+emit_16(371);
+emit_16(305);
+emit_16(371);
+emit_16(304);
+emit_16(371);
+emit_16(305);
+emit_16(372);
+emit_16(306);
+emit_16(372);
+emit_16(305);
+emit_16(372);
+emit_16(306);
+emit_16(373);
+emit_16(307);
+emit_16(373);
+emit_16(306);
+emit_16(373);
+emit_16(307);
+emit_16(374);
+emit_16(308);
+emit_16(374);
+emit_16(307);
+emit_16(374);
+emit_16(308);
+emit_16(375);
+emit_16(309);
+emit_16(375);
+emit_16(308);
+emit_16(375);
+emit_16(309);
+emit_16(376);
+emit_16(310);
+emit_16(376);
+emit_16(309);
+emit_16(376);
+emit_16(310);
+emit_16(377);
+emit_16(311);
+emit_16(377);
+emit_16(310);
+emit_16(377);
+emit_16(311);
+emit_16(378);
+emit_16(312);
+emit_16(378);
+emit_16(311);
+emit_16(378);
+emit_16(312);
+emit_16(379);
+emit_16(313);
+emit_16(379);
+emit_16(312);
+emit_16(379);
+emit_16(313);
+emit_16(380);
+emit_16(314);
+emit_16(380);
+emit_16(313);
+emit_16(380);
+emit_16(314);
+emit_16(381);
+emit_16(315);
+emit_16(381);
+emit_16(314);
+emit_16(381);
+emit_16(315);
+emit_16(382);
+emit_16(316);
+emit_16(382);
+emit_16(315);
+emit_16(382);
+emit_16(316);
+emit_16(383);
+emit_16(317);
+emit_16(383);
+emit_16(316);
+emit_16(383);
+emit_16(317);
+emit_16(384);
+emit_16(318);
+emit_16(384);
+emit_16(317);
+emit_16(384);
+emit_16(318);
+emit_16(385);
+emit_16(319);
+emit_16(385);
+emit_16(318);
+emit_16(385);
+emit_16(319);
+emit_16(386);
+emit_16(320);
+emit_16(386);
+emit_16(319);
+emit_16(386);
+emit_16(320);
+emit_16(387);
+emit_16(321);
+emit_16(387);
+emit_16(320);
+emit_16(387);
+emit_16(321);
+emit_16(388);
+emit_16(322);
+emit_16(388);
+emit_16(321);
+emit_16(388);
+emit_16(322);
+emit_16(389);
+emit_16(323);
+emit_16(389);
+emit_16(322);
+emit_16(389);
+emit_16(323);
+emit_16(390);
+emit_16(324);
+emit_16(390);
+emit_16(323);
+emit_16(390);
+emit_16(324);
+emit_16(391);
+emit_16(325);
+emit_16(391);
+emit_16(324);
+emit_16(391);
+emit_16(325);
+emit_16(392);
+emit_16(326);
+emit_16(392);
+emit_16(325);
+emit_16(392);
+emit_16(326);
+emit_16(393);
+emit_16(327);
+emit_16(393);
+emit_16(326);
+emit_16(393);
+emit_16(327);
+emit_16(394);
+emit_16(328);
+emit_16(394);
+emit_16(327);
+emit_16(394);
+emit_16(328);
+emit_16(395);
+emit_16(329);
+emit_16(395);
+emit_16(328);
+emit_16(396);
+emit_16(330);
+emit_16(397);
+emit_16(331);
+emit_16(397);
+emit_16(330);
+emit_16(397);
+emit_16(331);
+emit_16(398);
+emit_16(332);
+emit_16(398);
+emit_16(331);
+emit_16(398);
+emit_16(332);
+emit_16(399);
+emit_16(333);
+emit_16(399);
+emit_16(332);
+emit_16(399);
+emit_16(333);
+emit_16(400);
+emit_16(334);
+emit_16(400);
+emit_16(333);
+emit_16(400);
+emit_16(334);
+emit_16(401);
+emit_16(335);
+emit_16(401);
+emit_16(334);
+emit_16(401);
+emit_16(335);
+emit_16(402);
+emit_16(336);
+emit_16(402);
+emit_16(335);
+emit_16(402);
+emit_16(336);
+emit_16(403);
+emit_16(337);
+emit_16(403);
+emit_16(336);
+emit_16(403);
+emit_16(337);
+emit_16(404);
+emit_16(338);
+emit_16(404);
+emit_16(337);
+emit_16(404);
+emit_16(338);
+emit_16(405);
+emit_16(339);
+emit_16(405);
+emit_16(338);
+emit_16(405);
+emit_16(339);
+emit_16(406);
+emit_16(340);
+emit_16(406);
+emit_16(339);
+emit_16(406);
+emit_16(340);
+emit_16(407);
+emit_16(341);
+emit_16(407);
+emit_16(340);
+emit_16(407);
+emit_16(341);
+emit_16(408);
+emit_16(342);
+emit_16(408);
+emit_16(341);
+emit_16(408);
+emit_16(342);
+emit_16(409);
+emit_16(343);
+emit_16(409);
+emit_16(342);
+emit_16(409);
+emit_16(343);
+emit_16(410);
+emit_16(344);
+emit_16(410);
+emit_16(343);
+emit_16(410);
+emit_16(344);
+emit_16(411);
+emit_16(345);
+emit_16(411);
+emit_16(344);
+emit_16(411);
+emit_16(345);
+emit_16(412);
+emit_16(346);
+emit_16(412);
+emit_16(345);
+emit_16(412);
+emit_16(346);
+emit_16(413);
+emit_16(347);
+emit_16(413);
+emit_16(346);
+emit_16(413);
+emit_16(347);
+emit_16(414);
+emit_16(348);
+emit_16(414);
+emit_16(347);
+emit_16(414);
+emit_16(348);
+emit_16(415);
+emit_16(349);
+emit_16(415);
+emit_16(348);
+emit_16(415);
+emit_16(349);
+emit_16(416);
+emit_16(350);
+emit_16(416);
+emit_16(349);
+emit_16(416);
+emit_16(350);
+emit_16(417);
+emit_16(351);
+emit_16(417);
+emit_16(350);
+emit_16(417);
+emit_16(351);
+emit_16(418);
+emit_16(352);
+emit_16(418);
+emit_16(351);
+emit_16(418);
+emit_16(352);
+emit_16(419);
+emit_16(353);
+emit_16(419);
+emit_16(352);
+emit_16(419);
+emit_16(353);
+emit_16(420);
+emit_16(354);
+emit_16(420);
+emit_16(353);
+emit_16(420);
+emit_16(354);
+emit_16(421);
+emit_16(355);
+emit_16(421);
+emit_16(354);
+emit_16(421);
+emit_16(355);
+emit_16(422);
+emit_16(356);
+emit_16(422);
+emit_16(355);
+emit_16(422);
+emit_16(356);
+emit_16(423);
+emit_16(357);
+emit_16(423);
+emit_16(356);
+emit_16(423);
+emit_16(357);
+emit_16(424);
+emit_16(358);
+emit_16(424);
+emit_16(357);
+emit_16(424);
+emit_16(358);
+emit_16(425);
+emit_16(359);
+emit_16(425);
+emit_16(358);
+emit_16(425);
+emit_16(359);
+emit_16(426);
+emit_16(360);
+emit_16(426);
+emit_16(359);
+emit_16(426);
+emit_16(360);
+emit_16(427);
+emit_16(361);
+emit_16(427);
+emit_16(360);
+emit_16(427);
+emit_16(361);
+emit_16(428);
+emit_16(362);
+emit_16(428);
+emit_16(361);
+emit_16(428);
+emit_16(362);
+emit_16(429);
+emit_16(363);
+emit_16(429);
+emit_16(362);
+emit_16(429);
+emit_16(363);
+emit_16(430);
+emit_16(364);
+emit_16(430);
+emit_16(363);
+emit_16(430);
+emit_16(364);
+emit_16(431);
+emit_16(365);
+emit_16(431);
+emit_16(364);
+emit_16(431);
+emit_16(365);
+emit_16(432);
+emit_16(366);
+emit_16(432);
+emit_16(365);
+emit_16(432);
+emit_16(366);
+emit_16(433);
+emit_16(367);
+emit_16(433);
+emit_16(366);
+emit_16(433);
+emit_16(367);
+emit_16(434);
+emit_16(368);
+emit_16(434);
+emit_16(367);
+emit_16(434);
+emit_16(368);
+emit_16(435);
+emit_16(369);
+emit_16(435);
+emit_16(368);
+emit_16(435);
+emit_16(369);
+emit_16(436);
+emit_16(370);
+emit_16(436);
+emit_16(369);
+emit_16(436);
+emit_16(370);
+emit_16(437);
+emit_16(371);
+emit_16(437);
+emit_16(370);
+emit_16(437);
+emit_16(371);
+emit_16(438);
+emit_16(372);
+emit_16(438);
+emit_16(371);
+emit_16(438);
+emit_16(372);
+emit_16(439);
+emit_16(373);
+emit_16(439);
+emit_16(372);
+emit_16(439);
+emit_16(373);
+emit_16(440);
+emit_16(374);
+emit_16(440);
+emit_16(373);
+emit_16(440);
+emit_16(374);
+emit_16(441);
+emit_16(375);
+emit_16(441);
+emit_16(374);
+emit_16(441);
+emit_16(375);
+emit_16(442);
+emit_16(376);
+emit_16(442);
+emit_16(375);
+emit_16(442);
+emit_16(376);
+emit_16(443);
+emit_16(377);
+emit_16(443);
+emit_16(376);
+emit_16(443);
+emit_16(377);
+emit_16(444);
+emit_16(378);
+emit_16(444);
+emit_16(377);
+emit_16(444);
+emit_16(378);
+emit_16(445);
+emit_16(379);
+emit_16(445);
+emit_16(378);
+emit_16(445);
+emit_16(379);
+emit_16(446);
+emit_16(380);
+emit_16(446);
+emit_16(379);
+emit_16(446);
+emit_16(380);
+emit_16(447);
+emit_16(381);
+emit_16(447);
+emit_16(380);
+emit_16(447);
+emit_16(381);
+emit_16(448);
+emit_16(382);
+emit_16(448);
+emit_16(381);
+emit_16(448);
+emit_16(382);
+emit_16(449);
+emit_16(383);
+emit_16(449);
+emit_16(382);
+emit_16(449);
+emit_16(383);
+emit_16(450);
+emit_16(384);
+emit_16(450);
+emit_16(383);
+emit_16(450);
+emit_16(384);
+emit_16(451);
+emit_16(385);
+emit_16(451);
+emit_16(384);
+emit_16(451);
+emit_16(385);
+emit_16(452);
+emit_16(386);
+emit_16(452);
+emit_16(385);
+emit_16(452);
+emit_16(386);
+emit_16(453);
+emit_16(387);
+emit_16(453);
+emit_16(386);
+emit_16(453);
+emit_16(387);
+emit_16(454);
+emit_16(388);
+emit_16(454);
+emit_16(387);
+emit_16(454);
+emit_16(388);
+emit_16(455);
+emit_16(389);
+emit_16(455);
+emit_16(388);
+emit_16(455);
+emit_16(389);
+emit_16(456);
+emit_16(390);
+emit_16(456);
+emit_16(389);
+emit_16(456);
+emit_16(390);
+emit_16(457);
+emit_16(391);
+emit_16(457);
+emit_16(390);
+emit_16(457);
+emit_16(391);
+emit_16(458);
+emit_16(392);
+emit_16(458);
+emit_16(391);
+emit_16(458);
+emit_16(392);
+emit_16(459);
+emit_16(393);
+emit_16(459);
+emit_16(392);
+emit_16(459);
+emit_16(393);
+emit_16(460);
+emit_16(394);
+emit_16(460);
+emit_16(393);
+emit_16(460);
+emit_16(394);
+emit_16(461);
+emit_16(395);
+emit_16(461);
+emit_16(394);
+emit_16(462);
+emit_16(396);
+emit_16(463);
+emit_16(397);
+emit_16(463);
+emit_16(396);
+emit_16(463);
+emit_16(397);
+emit_16(464);
+emit_16(398);
+emit_16(464);
+emit_16(397);
+emit_16(464);
+emit_16(398);
+emit_16(465);
+emit_16(399);
+emit_16(465);
+emit_16(398);
+emit_16(465);
+emit_16(399);
+emit_16(466);
+emit_16(400);
+emit_16(466);
+emit_16(399);
+emit_16(466);
+emit_16(400);
+emit_16(467);
+emit_16(401);
+emit_16(467);
+emit_16(400);
+emit_16(467);
+emit_16(401);
+emit_16(468);
+emit_16(402);
+emit_16(468);
+emit_16(401);
+emit_16(468);
+emit_16(402);
+emit_16(469);
+emit_16(403);
+emit_16(469);
+emit_16(402);
+emit_16(469);
+emit_16(403);
+emit_16(470);
+emit_16(404);
+emit_16(470);
+emit_16(403);
+emit_16(470);
+emit_16(404);
+emit_16(471);
+emit_16(405);
+emit_16(471);
+emit_16(404);
+emit_16(471);
+emit_16(405);
+emit_16(472);
+emit_16(406);
+emit_16(472);
+emit_16(405);
+emit_16(472);
+emit_16(406);
+emit_16(473);
+emit_16(407);
+emit_16(473);
+emit_16(406);
+emit_16(473);
+emit_16(407);
+emit_16(474);
+emit_16(408);
+emit_16(474);
+emit_16(407);
+emit_16(474);
+emit_16(408);
+emit_16(475);
+emit_16(409);
+emit_16(475);
+emit_16(408);
+emit_16(475);
+emit_16(409);
+emit_16(476);
+emit_16(410);
+emit_16(476);
+emit_16(409);
+emit_16(476);
+emit_16(410);
+emit_16(477);
+emit_16(411);
+emit_16(477);
+emit_16(410);
+emit_16(477);
+emit_16(411);
+emit_16(478);
+emit_16(412);
+emit_16(478);
+emit_16(411);
+emit_16(478);
+emit_16(412);
+emit_16(479);
+emit_16(413);
+emit_16(479);
+emit_16(412);
+emit_16(479);
+emit_16(413);
+emit_16(480);
+emit_16(414);
+emit_16(480);
+emit_16(413);
+emit_16(480);
+emit_16(414);
+emit_16(481);
+emit_16(415);
+emit_16(481);
+emit_16(414);
+emit_16(481);
+emit_16(415);
+emit_16(482);
+emit_16(416);
+emit_16(482);
+emit_16(415);
+emit_16(482);
+emit_16(416);
+emit_16(483);
+emit_16(417);
+emit_16(483);
+emit_16(416);
+emit_16(483);
+emit_16(417);
+emit_16(484);
+emit_16(418);
+emit_16(484);
+emit_16(417);
+emit_16(484);
+emit_16(418);
+emit_16(485);
+emit_16(419);
+emit_16(485);
+emit_16(418);
+emit_16(485);
+emit_16(419);
+emit_16(486);
+emit_16(420);
+emit_16(486);
+emit_16(419);
+emit_16(486);
+emit_16(420);
+emit_16(487);
+emit_16(421);
+emit_16(487);
+emit_16(420);
+emit_16(487);
+emit_16(421);
+emit_16(488);
+emit_16(422);
+emit_16(488);
+emit_16(421);
+emit_16(488);
+emit_16(422);
+emit_16(489);
+emit_16(423);
+emit_16(489);
+emit_16(422);
+emit_16(489);
+emit_16(423);
+emit_16(490);
+emit_16(424);
+emit_16(490);
+emit_16(423);
+emit_16(490);
+emit_16(424);
+emit_16(491);
+emit_16(425);
+emit_16(491);
+emit_16(424);
+emit_16(491);
+emit_16(425);
+emit_16(492);
+emit_16(426);
+emit_16(492);
+emit_16(425);
+emit_16(492);
+emit_16(426);
+emit_16(493);
+emit_16(427);
+emit_16(493);
+emit_16(426);
+emit_16(493);
+emit_16(427);
+emit_16(494);
+emit_16(428);
+emit_16(494);
+emit_16(427);
+emit_16(494);
+emit_16(428);
+emit_16(495);
+emit_16(429);
+emit_16(495);
+emit_16(428);
+emit_16(495);
+emit_16(429);
+emit_16(496);
+emit_16(430);
+emit_16(496);
+emit_16(429);
+emit_16(496);
+emit_16(430);
+emit_16(497);
+emit_16(431);
+emit_16(497);
+emit_16(430);
+emit_16(497);
+emit_16(431);
+emit_16(498);
+emit_16(432);
+emit_16(498);
+emit_16(431);
+emit_16(498);
+emit_16(432);
+emit_16(499);
+emit_16(433);
+emit_16(499);
+emit_16(432);
+emit_16(499);
+emit_16(433);
+emit_16(500);
+emit_16(434);
+emit_16(500);
+emit_16(433);
+emit_16(500);
+emit_16(434);
+emit_16(501);
+emit_16(435);
+emit_16(501);
+emit_16(434);
+emit_16(501);
+emit_16(435);
+emit_16(502);
+emit_16(436);
+emit_16(502);
+emit_16(435);
+emit_16(502);
+emit_16(436);
+emit_16(503);
+emit_16(437);
+emit_16(503);
+emit_16(436);
+emit_16(503);
+emit_16(437);
+emit_16(504);
+emit_16(438);
+emit_16(504);
+emit_16(437);
+emit_16(504);
+emit_16(438);
+emit_16(505);
+emit_16(439);
+emit_16(505);
+emit_16(438);
+emit_16(505);
+emit_16(439);
+emit_16(506);
+emit_16(440);
+emit_16(506);
+emit_16(439);
+emit_16(506);
+emit_16(440);
+emit_16(507);
+emit_16(441);
+emit_16(507);
+emit_16(440);
+emit_16(507);
+emit_16(441);
+emit_16(508);
+emit_16(442);
+emit_16(508);
+emit_16(441);
+emit_16(508);
+emit_16(442);
+emit_16(509);
+emit_16(443);
+emit_16(509);
+emit_16(442);
+emit_16(509);
+emit_16(443);
+emit_16(510);
+emit_16(444);
+emit_16(510);
+emit_16(443);
+emit_16(510);
+emit_16(444);
+emit_16(511);
+emit_16(445);
+emit_16(511);
+emit_16(444);
+emit_16(511);
+emit_16(445);
+emit_16(512);
+emit_16(446);
+emit_16(512);
+emit_16(445);
+emit_16(512);
+emit_16(446);
+emit_16(513);
+emit_16(447);
+emit_16(513);
+emit_16(446);
+emit_16(513);
+emit_16(447);
+emit_16(514);
+emit_16(448);
+emit_16(514);
+emit_16(447);
+emit_16(514);
+emit_16(448);
+emit_16(515);
+emit_16(449);
+emit_16(515);
+emit_16(448);
+emit_16(515);
+emit_16(449);
+emit_16(516);
+emit_16(450);
+emit_16(516);
+emit_16(449);
+emit_16(516);
+emit_16(450);
+emit_16(517);
+emit_16(451);
+emit_16(517);
+emit_16(450);
+emit_16(517);
+emit_16(451);
+emit_16(518);
+emit_16(452);
+emit_16(518);
+emit_16(451);
+emit_16(518);
+emit_16(452);
+emit_16(519);
+emit_16(453);
+emit_16(519);
+emit_16(452);
+emit_16(519);
+emit_16(453);
+emit_16(520);
+emit_16(454);
+emit_16(520);
+emit_16(453);
+emit_16(520);
+emit_16(454);
+emit_16(521);
+emit_16(455);
+emit_16(521);
+emit_16(454);
+emit_16(521);
+emit_16(455);
+emit_16(522);
+emit_16(456);
+emit_16(522);
+emit_16(455);
+emit_16(522);
+emit_16(456);
+emit_16(523);
+emit_16(457);
+emit_16(523);
+emit_16(456);
+emit_16(523);
+emit_16(457);
+emit_16(524);
+emit_16(458);
+emit_16(524);
+emit_16(457);
+emit_16(524);
+emit_16(458);
+emit_16(525);
+emit_16(459);
+emit_16(525);
+emit_16(458);
+emit_16(525);
+emit_16(459);
+emit_16(526);
+emit_16(460);
+emit_16(526);
+emit_16(459);
+emit_16(526);
+emit_16(460);
+emit_16(527);
+emit_16(461);
+emit_16(527);
+emit_16(460);
+emit_16(528);
+emit_16(462);
+emit_16(529);
+emit_16(463);
+emit_16(529);
+emit_16(462);
+emit_16(529);
+emit_16(463);
+emit_16(530);
+emit_16(464);
+emit_16(530);
+emit_16(463);
+emit_16(530);
+emit_16(464);
+emit_16(531);
+emit_16(465);
+emit_16(531);
+emit_16(464);
+emit_16(531);
+emit_16(465);
+emit_16(532);
+emit_16(466);
+emit_16(532);
+emit_16(465);
+emit_16(532);
+emit_16(466);
+emit_16(533);
+emit_16(467);
+emit_16(533);
+emit_16(466);
+emit_16(533);
+emit_16(467);
+emit_16(534);
+emit_16(468);
+emit_16(534);
+emit_16(467);
+emit_16(534);
+emit_16(468);
+emit_16(535);
+emit_16(469);
+emit_16(535);
+emit_16(468);
+emit_16(535);
+emit_16(469);
+emit_16(536);
+emit_16(470);
+emit_16(536);
+emit_16(469);
+emit_16(536);
+emit_16(470);
+emit_16(537);
+emit_16(471);
+emit_16(537);
+emit_16(470);
+emit_16(537);
+emit_16(471);
+emit_16(538);
+emit_16(472);
+emit_16(538);
+emit_16(471);
+emit_16(538);
+emit_16(472);
+emit_16(539);
+emit_16(473);
+emit_16(539);
+emit_16(472);
+emit_16(539);
+emit_16(473);
+emit_16(540);
+emit_16(474);
+emit_16(540);
+emit_16(473);
+emit_16(540);
+emit_16(474);
+emit_16(541);
+emit_16(475);
+emit_16(541);
+emit_16(474);
+emit_16(541);
+emit_16(475);
+emit_16(542);
+emit_16(476);
+emit_16(542);
+emit_16(475);
+emit_16(542);
+emit_16(476);
+emit_16(543);
+emit_16(477);
+emit_16(543);
+emit_16(476);
+emit_16(543);
+emit_16(477);
+emit_16(544);
+emit_16(478);
+emit_16(544);
+emit_16(477);
+emit_16(544);
+emit_16(478);
+emit_16(545);
+emit_16(479);
+emit_16(545);
+emit_16(478);
+emit_16(545);
+emit_16(479);
+emit_16(546);
+emit_16(480);
+emit_16(546);
+emit_16(479);
+emit_16(546);
+emit_16(480);
+emit_16(547);
+emit_16(481);
+emit_16(547);
+emit_16(480);
+emit_16(547);
+emit_16(481);
+emit_16(548);
+emit_16(482);
+emit_16(548);
+emit_16(481);
+emit_16(548);
+emit_16(482);
+emit_16(549);
+emit_16(483);
+emit_16(549);
+emit_16(482);
+emit_16(549);
+emit_16(483);
+emit_16(550);
+emit_16(484);
+emit_16(550);
+emit_16(483);
+emit_16(550);
+emit_16(484);
+emit_16(551);
+emit_16(485);
+emit_16(551);
+emit_16(484);
+emit_16(551);
+emit_16(485);
+emit_16(552);
+emit_16(486);
+emit_16(552);
+emit_16(485);
+emit_16(552);
+emit_16(486);
+emit_16(553);
+emit_16(487);
+emit_16(553);
+emit_16(486);
+emit_16(553);
+emit_16(487);
+emit_16(554);
+emit_16(488);
+emit_16(554);
+emit_16(487);
+emit_16(554);
+emit_16(488);
+emit_16(555);
+emit_16(489);
+emit_16(555);
+emit_16(488);
+emit_16(555);
+emit_16(489);
+emit_16(556);
+emit_16(490);
+emit_16(556);
+emit_16(489);
+emit_16(556);
+emit_16(490);
+emit_16(557);
+emit_16(491);
+emit_16(557);
+emit_16(490);
+emit_16(557);
+emit_16(491);
+emit_16(558);
+emit_16(492);
+emit_16(558);
+emit_16(491);
+emit_16(558);
+emit_16(492);
+emit_16(559);
+emit_16(493);
+emit_16(559);
+emit_16(492);
+emit_16(559);
+emit_16(493);
+emit_16(560);
+emit_16(494);
+emit_16(560);
+emit_16(493);
+emit_16(560);
+emit_16(494);
+emit_16(561);
+emit_16(495);
+emit_16(561);
+emit_16(494);
+emit_16(561);
+emit_16(495);
+emit_16(562);
+emit_16(496);
+emit_16(562);
+emit_16(495);
+emit_16(562);
+emit_16(496);
+emit_16(563);
+emit_16(497);
+emit_16(563);
+emit_16(496);
+emit_16(563);
+emit_16(497);
+emit_16(564);
+emit_16(498);
+emit_16(564);
+emit_16(497);
+emit_16(564);
+emit_16(498);
+emit_16(565);
+emit_16(499);
+emit_16(565);
+emit_16(498);
+emit_16(565);
+emit_16(499);
+emit_16(566);
+emit_16(500);
+emit_16(566);
+emit_16(499);
+emit_16(566);
+emit_16(500);
+emit_16(567);
+emit_16(501);
+emit_16(567);
+emit_16(500);
+emit_16(567);
+emit_16(501);
+emit_16(568);
+emit_16(502);
+emit_16(568);
+emit_16(501);
+emit_16(568);
+emit_16(502);
+emit_16(569);
+emit_16(503);
+emit_16(569);
+emit_16(502);
+emit_16(569);
+emit_16(503);
+emit_16(570);
+emit_16(504);
+emit_16(570);
+emit_16(503);
+emit_16(570);
+emit_16(504);
+emit_16(571);
+emit_16(505);
+emit_16(571);
+emit_16(504);
+emit_16(571);
+emit_16(505);
+emit_16(572);
+emit_16(506);
+emit_16(572);
+emit_16(505);
+emit_16(572);
+emit_16(506);
+emit_16(573);
+emit_16(507);
+emit_16(573);
+emit_16(506);
+emit_16(573);
+emit_16(507);
+emit_16(574);
+emit_16(508);
+emit_16(574);
+emit_16(507);
+emit_16(574);
+emit_16(508);
+emit_16(575);
+emit_16(509);
+emit_16(575);
+emit_16(508);
+emit_16(575);
+emit_16(509);
+emit_16(576);
+emit_16(510);
+emit_16(576);
+emit_16(509);
+emit_16(576);
+emit_16(510);
+emit_16(577);
+emit_16(511);
+emit_16(577);
+emit_16(510);
+emit_16(577);
+emit_16(511);
+emit_16(578);
+emit_16(512);
+emit_16(578);
+emit_16(511);
+emit_16(578);
+emit_16(512);
+emit_16(579);
+emit_16(513);
+emit_16(579);
+emit_16(512);
+emit_16(579);
+emit_16(513);
+emit_16(580);
+emit_16(514);
+emit_16(580);
+emit_16(513);
+emit_16(580);
+emit_16(514);
+emit_16(581);
+emit_16(515);
+emit_16(581);
+emit_16(514);
+emit_16(581);
+emit_16(515);
+emit_16(582);
+emit_16(516);
+emit_16(582);
+emit_16(515);
+emit_16(582);
+emit_16(516);
+emit_16(583);
+emit_16(517);
+emit_16(583);
+emit_16(516);
+emit_16(583);
+emit_16(517);
+emit_16(584);
+emit_16(518);
+emit_16(584);
+emit_16(517);
+emit_16(584);
+emit_16(518);
+emit_16(585);
+emit_16(519);
+emit_16(585);
+emit_16(518);
+emit_16(585);
+emit_16(519);
+emit_16(586);
+emit_16(520);
+emit_16(586);
+emit_16(519);
+emit_16(586);
+emit_16(520);
+emit_16(587);
+emit_16(521);
+emit_16(587);
+emit_16(520);
+emit_16(587);
+emit_16(521);
+emit_16(588);
+emit_16(522);
+emit_16(588);
+emit_16(521);
+emit_16(588);
+emit_16(522);
+emit_16(589);
+emit_16(523);
+emit_16(589);
+emit_16(522);
+emit_16(589);
+emit_16(523);
+emit_16(590);
+emit_16(524);
+emit_16(590);
+emit_16(523);
+emit_16(590);
+emit_16(524);
+emit_16(591);
+emit_16(525);
+emit_16(591);
+emit_16(524);
+emit_16(591);
+emit_16(525);
+emit_16(592);
+emit_16(526);
+emit_16(592);
+emit_16(525);
+emit_16(592);
+emit_16(526);
+emit_16(593);
+emit_16(527);
+emit_16(593);
+emit_16(526);
+emit_16(594);
+emit_16(528);
+emit_16(595);
+emit_16(529);
+emit_16(595);
+emit_16(528);
+emit_16(595);
+emit_16(529);
+emit_16(596);
+emit_16(530);
+emit_16(596);
+emit_16(529);
+emit_16(596);
+emit_16(530);
+emit_16(597);
+emit_16(531);
+emit_16(597);
+emit_16(530);
+emit_16(597);
+emit_16(531);
+emit_16(598);
+emit_16(532);
+emit_16(598);
+emit_16(531);
+emit_16(598);
+emit_16(532);
+emit_16(599);
+emit_16(533);
+emit_16(599);
+emit_16(532);
+emit_16(599);
+emit_16(533);
+emit_16(600);
+emit_16(534);
+emit_16(600);
+emit_16(533);
+emit_16(600);
+emit_16(534);
+emit_16(601);
+emit_16(535);
+emit_16(601);
+emit_16(534);
+emit_16(601);
+emit_16(535);
+emit_16(602);
+emit_16(536);
+emit_16(602);
+emit_16(535);
+emit_16(602);
+emit_16(536);
+emit_16(603);
+emit_16(537);
+emit_16(603);
+emit_16(536);
+emit_16(603);
+emit_16(537);
+emit_16(604);
+emit_16(538);
+emit_16(604);
+emit_16(537);
+emit_16(604);
+emit_16(538);
+emit_16(605);
+emit_16(539);
+emit_16(605);
+emit_16(538);
+emit_16(605);
+emit_16(539);
+emit_16(606);
+emit_16(540);
+emit_16(606);
+emit_16(539);
+emit_16(606);
+emit_16(540);
+emit_16(607);
+emit_16(541);
+emit_16(607);
+emit_16(540);
+emit_16(607);
+emit_16(541);
+emit_16(608);
+emit_16(542);
+emit_16(608);
+emit_16(541);
+emit_16(608);
+emit_16(542);
+emit_16(609);
+emit_16(543);
+emit_16(609);
+emit_16(542);
+emit_16(609);
+emit_16(543);
+emit_16(610);
+emit_16(544);
+emit_16(610);
+emit_16(543);
+emit_16(610);
+emit_16(544);
+emit_16(611);
+emit_16(545);
+emit_16(611);
+emit_16(544);
+emit_16(611);
+emit_16(545);
+emit_16(612);
+emit_16(546);
+emit_16(612);
+emit_16(545);
+emit_16(612);
+emit_16(546);
+emit_16(613);
+emit_16(547);
+emit_16(613);
+emit_16(546);
+emit_16(613);
+emit_16(547);
+emit_16(614);
+emit_16(548);
+emit_16(614);
+emit_16(547);
+emit_16(614);
+emit_16(548);
+emit_16(615);
+emit_16(549);
+emit_16(615);
+emit_16(548);
+emit_16(615);
+emit_16(549);
+emit_16(616);
+emit_16(550);
+emit_16(616);
+emit_16(549);
+emit_16(616);
+emit_16(550);
+emit_16(617);
+emit_16(551);
+emit_16(617);
+emit_16(550);
+emit_16(617);
+emit_16(551);
+emit_16(618);
+emit_16(552);
+emit_16(618);
+emit_16(551);
+emit_16(618);
+emit_16(552);
+emit_16(619);
+emit_16(553);
+emit_16(619);
+emit_16(552);
+emit_16(619);
+emit_16(553);
+emit_16(620);
+emit_16(554);
+emit_16(620);
+emit_16(553);
+emit_16(620);
+emit_16(554);
+emit_16(621);
+emit_16(555);
+emit_16(621);
+emit_16(554);
+emit_16(621);
+emit_16(555);
+emit_16(622);
+emit_16(556);
+emit_16(622);
+emit_16(555);
+emit_16(622);
+emit_16(556);
+emit_16(623);
+emit_16(557);
+emit_16(623);
+emit_16(556);
+emit_16(623);
+emit_16(557);
+emit_16(624);
+emit_16(558);
+emit_16(624);
+emit_16(557);
+emit_16(624);
+emit_16(558);
+emit_16(625);
+emit_16(559);
+emit_16(625);
+emit_16(558);
+emit_16(625);
+emit_16(559);
+emit_16(626);
+emit_16(560);
+emit_16(626);
+emit_16(559);
+emit_16(626);
+emit_16(560);
+emit_16(627);
+emit_16(561);
+emit_16(627);
+emit_16(560);
+emit_16(627);
+emit_16(561);
+emit_16(628);
+emit_16(562);
+emit_16(628);
+emit_16(561);
+emit_16(628);
+emit_16(562);
+emit_16(629);
+emit_16(563);
+emit_16(629);
+emit_16(562);
+emit_16(629);
+emit_16(563);
+emit_16(630);
+emit_16(564);
+emit_16(630);
+emit_16(563);
+emit_16(630);
+emit_16(564);
+emit_16(631);
+emit_16(565);
+emit_16(631);
+emit_16(564);
+emit_16(631);
+emit_16(565);
+emit_16(632);
+emit_16(566);
+emit_16(632);
+emit_16(565);
+emit_16(632);
+emit_16(566);
+emit_16(633);
+emit_16(567);
+emit_16(633);
+emit_16(566);
+emit_16(633);
+emit_16(567);
+emit_16(634);
+emit_16(568);
+emit_16(634);
+emit_16(567);
+emit_16(634);
+emit_16(568);
+emit_16(635);
+emit_16(569);
+emit_16(635);
+emit_16(568);
+emit_16(635);
+emit_16(569);
+emit_16(636);
+emit_16(570);
+emit_16(636);
+emit_16(569);
+emit_16(636);
+emit_16(570);
+emit_16(637);
+emit_16(571);
+emit_16(637);
+emit_16(570);
+emit_16(637);
+emit_16(571);
+emit_16(638);
+emit_16(572);
+emit_16(638);
+emit_16(571);
+emit_16(638);
+emit_16(572);
+emit_16(639);
+emit_16(573);
+emit_16(639);
+emit_16(572);
+emit_16(639);
+emit_16(573);
+emit_16(640);
+emit_16(574);
+emit_16(640);
+emit_16(573);
+emit_16(640);
+emit_16(574);
+emit_16(641);
+emit_16(575);
+emit_16(641);
+emit_16(574);
+emit_16(641);
+emit_16(575);
+emit_16(642);
+emit_16(576);
+emit_16(642);
+emit_16(575);
+emit_16(642);
+emit_16(576);
+emit_16(643);
+emit_16(577);
+emit_16(643);
+emit_16(576);
+emit_16(643);
+emit_16(577);
+emit_16(644);
+emit_16(578);
+emit_16(644);
+emit_16(577);
+emit_16(644);
+emit_16(578);
+emit_16(645);
+emit_16(579);
+emit_16(645);
+emit_16(578);
+emit_16(645);
+emit_16(579);
+emit_16(646);
+emit_16(580);
+emit_16(646);
+emit_16(579);
+emit_16(646);
+emit_16(580);
+emit_16(647);
+emit_16(581);
+emit_16(647);
+emit_16(580);
+emit_16(647);
+emit_16(581);
+emit_16(648);
+emit_16(582);
+emit_16(648);
+emit_16(581);
+emit_16(648);
+emit_16(582);
+emit_16(649);
+emit_16(583);
+emit_16(649);
+emit_16(582);
+emit_16(649);
+emit_16(583);
+emit_16(650);
+emit_16(584);
+emit_16(650);
+emit_16(583);
+emit_16(650);
+emit_16(584);
+emit_16(651);
+emit_16(585);
+emit_16(651);
+emit_16(584);
+emit_16(651);
+emit_16(585);
+emit_16(652);
+emit_16(586);
+emit_16(652);
+emit_16(585);
+emit_16(652);
+emit_16(586);
+emit_16(653);
+emit_16(587);
+emit_16(653);
+emit_16(586);
+emit_16(653);
+emit_16(587);
+emit_16(654);
+emit_16(588);
+emit_16(654);
+emit_16(587);
+emit_16(654);
+emit_16(588);
+emit_16(655);
+emit_16(589);
+emit_16(655);
+emit_16(588);
+emit_16(655);
+emit_16(589);
+emit_16(656);
+emit_16(590);
+emit_16(656);
+emit_16(589);
+emit_16(656);
+emit_16(590);
+emit_16(657);
+emit_16(591);
+emit_16(657);
+emit_16(590);
+emit_16(657);
+emit_16(591);
+emit_16(658);
+emit_16(592);
+emit_16(658);
+emit_16(591);
+emit_16(658);
+emit_16(592);
+emit_16(659);
+emit_16(593);
+emit_16(659);
+emit_16(592);
+emit_16(660);
+emit_16(594);
+emit_16(661);
+emit_16(595);
+emit_16(661);
+emit_16(594);
+emit_16(661);
+emit_16(595);
+emit_16(662);
+emit_16(596);
+emit_16(662);
+emit_16(595);
+emit_16(662);
+emit_16(596);
+emit_16(663);
+emit_16(597);
+emit_16(663);
+emit_16(596);
+emit_16(663);
+emit_16(597);
+emit_16(664);
+emit_16(598);
+emit_16(664);
+emit_16(597);
+emit_16(664);
+emit_16(598);
+emit_16(665);
+emit_16(599);
+emit_16(665);
+emit_16(598);
+emit_16(665);
+emit_16(599);
+emit_16(666);
+emit_16(600);
+emit_16(666);
+emit_16(599);
+emit_16(666);
+emit_16(600);
+emit_16(667);
+emit_16(601);
+emit_16(667);
+emit_16(600);
+emit_16(667);
+emit_16(601);
+emit_16(668);
+emit_16(602);
+emit_16(668);
+emit_16(601);
+emit_16(668);
+emit_16(602);
+emit_16(669);
+emit_16(603);
+emit_16(669);
+emit_16(602);
+emit_16(669);
+emit_16(603);
+emit_16(670);
+emit_16(604);
+emit_16(670);
+emit_16(603);
+emit_16(670);
+emit_16(604);
+emit_16(671);
+emit_16(605);
+emit_16(671);
+emit_16(604);
+emit_16(671);
+emit_16(605);
+emit_16(672);
+emit_16(606);
+emit_16(672);
+emit_16(605);
+emit_16(672);
+emit_16(606);
+emit_16(673);
+emit_16(607);
+emit_16(673);
+emit_16(606);
+emit_16(673);
+emit_16(607);
+emit_16(674);
+emit_16(608);
+emit_16(674);
+emit_16(607);
+emit_16(674);
+emit_16(608);
+emit_16(675);
+emit_16(609);
+emit_16(675);
+emit_16(608);
+emit_16(675);
+emit_16(609);
+emit_16(676);
+emit_16(610);
+emit_16(676);
+emit_16(609);
+emit_16(676);
+emit_16(610);
+emit_16(677);
+emit_16(611);
+emit_16(677);
+emit_16(610);
+emit_16(677);
+emit_16(611);
+emit_16(678);
+emit_16(612);
+emit_16(678);
+emit_16(611);
+emit_16(678);
+emit_16(612);
+emit_16(679);
+emit_16(613);
+emit_16(679);
+emit_16(612);
+emit_16(679);
+emit_16(613);
+emit_16(680);
+emit_16(614);
+emit_16(680);
+emit_16(613);
+emit_16(680);
+emit_16(614);
+emit_16(681);
+emit_16(615);
+emit_16(681);
+emit_16(614);
+emit_16(681);
+emit_16(615);
+emit_16(682);
+emit_16(616);
+emit_16(682);
+emit_16(615);
+emit_16(682);
+emit_16(616);
+emit_16(683);
+emit_16(617);
+emit_16(683);
+emit_16(616);
+emit_16(683);
+emit_16(617);
+emit_16(684);
+emit_16(618);
+emit_16(684);
+emit_16(617);
+emit_16(684);
+emit_16(618);
+emit_16(685);
+emit_16(619);
+emit_16(685);
+emit_16(618);
+emit_16(685);
+emit_16(619);
+emit_16(686);
+emit_16(620);
+emit_16(686);
+emit_16(619);
+emit_16(686);
+emit_16(620);
+emit_16(687);
+emit_16(621);
+emit_16(687);
+emit_16(620);
+emit_16(687);
+emit_16(621);
+emit_16(688);
+emit_16(622);
+emit_16(688);
+emit_16(621);
+emit_16(688);
+emit_16(622);
+emit_16(689);
+emit_16(623);
+emit_16(689);
+emit_16(622);
+emit_16(689);
+emit_16(623);
+emit_16(690);
+emit_16(624);
+emit_16(690);
+emit_16(623);
+emit_16(690);
+emit_16(624);
+emit_16(691);
+emit_16(625);
+emit_16(691);
+emit_16(624);
+emit_16(691);
+emit_16(625);
+emit_16(692);
+emit_16(626);
+emit_16(692);
+emit_16(625);
+emit_16(692);
+emit_16(626);
+emit_16(693);
+emit_16(627);
+emit_16(693);
+emit_16(626);
+emit_16(693);
+emit_16(627);
+emit_16(694);
+emit_16(628);
+emit_16(694);
+emit_16(627);
+emit_16(694);
+emit_16(628);
+emit_16(695);
+emit_16(629);
+emit_16(695);
+emit_16(628);
+emit_16(695);
+emit_16(629);
+emit_16(696);
+emit_16(630);
+emit_16(696);
+emit_16(629);
+emit_16(696);
+emit_16(630);
+emit_16(697);
+emit_16(631);
+emit_16(697);
+emit_16(630);
+emit_16(697);
+emit_16(631);
+emit_16(698);
+emit_16(632);
+emit_16(698);
+emit_16(631);
+emit_16(698);
+emit_16(632);
+emit_16(699);
+emit_16(633);
+emit_16(699);
+emit_16(632);
+emit_16(699);
+emit_16(633);
+emit_16(700);
+emit_16(634);
+emit_16(700);
+emit_16(633);
+emit_16(700);
+emit_16(634);
+emit_16(701);
+emit_16(635);
+emit_16(701);
+emit_16(634);
+emit_16(701);
+emit_16(635);
+emit_16(702);
+emit_16(636);
+emit_16(702);
+emit_16(635);
+emit_16(702);
+emit_16(636);
+emit_16(703);
+emit_16(637);
+emit_16(703);
+emit_16(636);
+emit_16(703);
+emit_16(637);
+emit_16(704);
+emit_16(638);
+emit_16(704);
+emit_16(637);
+emit_16(704);
+emit_16(638);
+emit_16(705);
+emit_16(639);
+emit_16(705);
+emit_16(638);
+emit_16(705);
+emit_16(639);
+emit_16(706);
+emit_16(640);
+emit_16(706);
+emit_16(639);
+emit_16(706);
+emit_16(640);
+emit_16(707);
+emit_16(641);
+emit_16(707);
+emit_16(640);
+emit_16(707);
+emit_16(641);
+emit_16(708);
+emit_16(642);
+emit_16(708);
+emit_16(641);
+emit_16(708);
+emit_16(642);
+emit_16(709);
+emit_16(643);
+emit_16(709);
+emit_16(642);
+emit_16(709);
+emit_16(643);
+emit_16(710);
+emit_16(644);
+emit_16(710);
+emit_16(643);
+emit_16(710);
+emit_16(644);
+emit_16(711);
+emit_16(645);
+emit_16(711);
+emit_16(644);
+emit_16(711);
+emit_16(645);
+emit_16(712);
+emit_16(646);
+emit_16(712);
+emit_16(645);
+emit_16(712);
+emit_16(646);
+emit_16(713);
+emit_16(647);
+emit_16(713);
+emit_16(646);
+emit_16(713);
+emit_16(647);
+emit_16(714);
+emit_16(648);
+emit_16(714);
+emit_16(647);
+emit_16(714);
+emit_16(648);
+emit_16(715);
+emit_16(649);
+emit_16(715);
+emit_16(648);
+emit_16(715);
+emit_16(649);
+emit_16(716);
+emit_16(650);
+emit_16(716);
+emit_16(649);
+emit_16(716);
+emit_16(650);
+emit_16(717);
+emit_16(651);
+emit_16(717);
+emit_16(650);
+emit_16(717);
+emit_16(651);
+emit_16(718);
+emit_16(652);
+emit_16(718);
+emit_16(651);
+emit_16(718);
+emit_16(652);
+emit_16(719);
+emit_16(653);
+emit_16(719);
+emit_16(652);
+emit_16(719);
+emit_16(653);
+emit_16(720);
+emit_16(654);
+emit_16(720);
+emit_16(653);
+emit_16(720);
+emit_16(654);
+emit_16(721);
+emit_16(655);
+emit_16(721);
+emit_16(654);
+emit_16(721);
+emit_16(655);
+emit_16(722);
+emit_16(656);
+emit_16(722);
+emit_16(655);
+emit_16(722);
+emit_16(656);
+emit_16(723);
+emit_16(657);
+emit_16(723);
+emit_16(656);
+emit_16(723);
+emit_16(657);
+emit_16(724);
+emit_16(658);
+emit_16(724);
+emit_16(657);
+emit_16(724);
+emit_16(658);
+emit_16(725);
+emit_16(659);
+emit_16(725);
+emit_16(658);
+emit_16(726);
+emit_16(660);
+emit_16(727);
+emit_16(661);
+emit_16(727);
+emit_16(660);
+emit_16(727);
+emit_16(661);
+emit_16(728);
+emit_16(662);
+emit_16(728);
+emit_16(661);
+emit_16(728);
+emit_16(662);
+emit_16(729);
+emit_16(663);
+emit_16(729);
+emit_16(662);
+emit_16(729);
+emit_16(663);
+emit_16(730);
+emit_16(664);
+emit_16(730);
+emit_16(663);
+emit_16(730);
+emit_16(664);
+emit_16(731);
+emit_16(665);
+emit_16(731);
+emit_16(664);
+emit_16(731);
+emit_16(665);
+emit_16(732);
+emit_16(666);
+emit_16(732);
+emit_16(665);
+emit_16(732);
+emit_16(666);
+emit_16(733);
+emit_16(667);
+emit_16(733);
+emit_16(666);
+emit_16(733);
+emit_16(667);
+emit_16(734);
+emit_16(668);
+emit_16(734);
+emit_16(667);
+emit_16(734);
+emit_16(668);
+emit_16(735);
+emit_16(669);
+emit_16(735);
+emit_16(668);
+emit_16(735);
+emit_16(669);
+emit_16(736);
+emit_16(670);
+emit_16(736);
+emit_16(669);
+emit_16(736);
+emit_16(670);
+emit_16(737);
+emit_16(671);
+emit_16(737);
+emit_16(670);
+emit_16(737);
+emit_16(671);
+emit_16(738);
+emit_16(672);
+emit_16(738);
+emit_16(671);
+emit_16(738);
+emit_16(672);
+emit_16(739);
+emit_16(673);
+emit_16(739);
+emit_16(672);
+emit_16(739);
+emit_16(673);
+emit_16(740);
+emit_16(674);
+emit_16(740);
+emit_16(673);
+emit_16(740);
+emit_16(674);
+emit_16(741);
+emit_16(675);
+emit_16(741);
+emit_16(674);
+emit_16(741);
+emit_16(675);
+emit_16(742);
+emit_16(676);
+emit_16(742);
+emit_16(675);
+emit_16(742);
+emit_16(676);
+emit_16(743);
+emit_16(677);
+emit_16(743);
+emit_16(676);
+emit_16(743);
+emit_16(677);
+emit_16(744);
+emit_16(678);
+emit_16(744);
+emit_16(677);
+emit_16(744);
+emit_16(678);
+emit_16(745);
+emit_16(679);
+emit_16(745);
+emit_16(678);
+emit_16(745);
+emit_16(679);
+emit_16(746);
+emit_16(680);
+emit_16(746);
+emit_16(679);
+emit_16(746);
+emit_16(680);
+emit_16(747);
+emit_16(681);
+emit_16(747);
+emit_16(680);
+emit_16(747);
+emit_16(681);
+emit_16(748);
+emit_16(682);
+emit_16(748);
+emit_16(681);
+emit_16(748);
+emit_16(682);
+emit_16(749);
+emit_16(683);
+emit_16(749);
+emit_16(682);
+emit_16(749);
+emit_16(683);
+emit_16(750);
+emit_16(684);
+emit_16(750);
+emit_16(683);
+emit_16(750);
+emit_16(684);
+emit_16(751);
+emit_16(685);
+emit_16(751);
+emit_16(684);
+emit_16(751);
+emit_16(685);
+emit_16(752);
+emit_16(686);
+emit_16(752);
+emit_16(685);
+emit_16(752);
+emit_16(686);
+emit_16(753);
+emit_16(687);
+emit_16(753);
+emit_16(686);
+emit_16(753);
+emit_16(687);
+emit_16(754);
+emit_16(688);
+emit_16(754);
+emit_16(687);
+emit_16(754);
+emit_16(688);
+emit_16(755);
+emit_16(689);
+emit_16(755);
+emit_16(688);
+emit_16(755);
+emit_16(689);
+emit_16(756);
+emit_16(690);
+emit_16(756);
+emit_16(689);
+emit_16(756);
+emit_16(690);
+emit_16(757);
+emit_16(691);
+emit_16(757);
+emit_16(690);
+emit_16(757);
+emit_16(691);
+emit_16(758);
+emit_16(692);
+emit_16(758);
+emit_16(691);
+emit_16(758);
+emit_16(692);
+emit_16(759);
+emit_16(693);
+emit_16(759);
+emit_16(692);
+emit_16(759);
+emit_16(693);
+emit_16(760);
+emit_16(694);
+emit_16(760);
+emit_16(693);
+emit_16(760);
+emit_16(694);
+emit_16(761);
+emit_16(695);
+emit_16(761);
+emit_16(694);
+emit_16(761);
+emit_16(695);
+emit_16(762);
+emit_16(696);
+emit_16(762);
+emit_16(695);
+emit_16(762);
+emit_16(696);
+emit_16(763);
+emit_16(697);
+emit_16(763);
+emit_16(696);
+emit_16(763);
+emit_16(697);
+emit_16(764);
+emit_16(698);
+emit_16(764);
+emit_16(697);
+emit_16(764);
+emit_16(698);
+emit_16(765);
+emit_16(699);
+emit_16(765);
+emit_16(698);
+emit_16(765);
+emit_16(699);
+emit_16(766);
+emit_16(700);
+emit_16(766);
+emit_16(699);
+emit_16(766);
+emit_16(700);
+emit_16(767);
+emit_16(701);
+emit_16(767);
+emit_16(700);
+emit_16(767);
+emit_16(701);
+emit_16(768);
+emit_16(702);
+emit_16(768);
+emit_16(701);
+emit_16(768);
+emit_16(702);
+emit_16(769);
+emit_16(703);
+emit_16(769);
+emit_16(702);
+emit_16(769);
+emit_16(703);
+emit_16(770);
+emit_16(704);
+emit_16(770);
+emit_16(703);
+emit_16(770);
+emit_16(704);
+emit_16(771);
+emit_16(705);
+emit_16(771);
+emit_16(704);
+emit_16(771);
+emit_16(705);
+emit_16(772);
+emit_16(706);
+emit_16(772);
+emit_16(705);
+emit_16(772);
+emit_16(706);
+emit_16(773);
+emit_16(707);
+emit_16(773);
+emit_16(706);
+emit_16(773);
+emit_16(707);
+emit_16(774);
+emit_16(708);
+emit_16(774);
+emit_16(707);
+emit_16(774);
+emit_16(708);
+emit_16(775);
+emit_16(709);
+emit_16(775);
+emit_16(708);
+emit_16(775);
+emit_16(709);
+emit_16(776);
+emit_16(710);
+emit_16(776);
+emit_16(709);
+emit_16(776);
+emit_16(710);
+emit_16(777);
+emit_16(711);
+emit_16(777);
+emit_16(710);
+emit_16(777);
+emit_16(711);
+emit_16(778);
+emit_16(712);
+emit_16(778);
+emit_16(711);
+emit_16(778);
+emit_16(712);
+emit_16(779);
+emit_16(713);
+emit_16(779);
+emit_16(712);
+emit_16(779);
+emit_16(713);
+emit_16(780);
+emit_16(714);
+emit_16(780);
+emit_16(713);
+emit_16(780);
+emit_16(714);
+emit_16(781);
+emit_16(715);
+emit_16(781);
+emit_16(714);
+emit_16(781);
+emit_16(715);
+emit_16(782);
+emit_16(716);
+emit_16(782);
+emit_16(715);
+emit_16(782);
+emit_16(716);
+emit_16(783);
+emit_16(717);
+emit_16(783);
+emit_16(716);
+emit_16(783);
+emit_16(717);
+emit_16(784);
+emit_16(718);
+emit_16(784);
+emit_16(717);
+emit_16(784);
+emit_16(718);
+emit_16(785);
+emit_16(719);
+emit_16(785);
+emit_16(718);
+emit_16(785);
+emit_16(719);
+emit_16(786);
+emit_16(720);
+emit_16(786);
+emit_16(719);
+emit_16(786);
+emit_16(720);
+emit_16(787);
+emit_16(721);
+emit_16(787);
+emit_16(720);
+emit_16(787);
+emit_16(721);
+emit_16(788);
+emit_16(722);
+emit_16(788);
+emit_16(721);
+emit_16(788);
+emit_16(722);
+emit_16(789);
+emit_16(723);
+emit_16(789);
+emit_16(722);
+emit_16(789);
+emit_16(723);
+emit_16(790);
+emit_16(724);
+emit_16(790);
+emit_16(723);
+emit_16(790);
+emit_16(724);
+emit_16(791);
+emit_16(725);
+emit_16(791);
+emit_16(724);
+emit_16(792);
+emit_16(726);
+emit_16(793);
+emit_16(727);
+emit_16(793);
+emit_16(726);
+emit_16(793);
+emit_16(727);
+emit_16(794);
+emit_16(728);
+emit_16(794);
+emit_16(727);
+emit_16(794);
+emit_16(728);
+emit_16(795);
+emit_16(729);
+emit_16(795);
+emit_16(728);
+emit_16(795);
+emit_16(729);
+emit_16(796);
+emit_16(730);
+emit_16(796);
+emit_16(729);
+emit_16(796);
+emit_16(730);
+emit_16(797);
+emit_16(731);
+emit_16(797);
+emit_16(730);
+emit_16(797);
+emit_16(731);
+emit_16(798);
+emit_16(732);
+emit_16(798);
+emit_16(731);
+emit_16(798);
+emit_16(732);
+emit_16(799);
+emit_16(733);
+emit_16(799);
+emit_16(732);
+emit_16(799);
+emit_16(733);
+emit_16(800);
+emit_16(734);
+emit_16(800);
+emit_16(733);
+emit_16(800);
+emit_16(734);
+emit_16(801);
+emit_16(735);
+emit_16(801);
+emit_16(734);
+emit_16(801);
+emit_16(735);
+emit_16(802);
+emit_16(736);
+emit_16(802);
+emit_16(735);
+emit_16(802);
+emit_16(736);
+emit_16(803);
+emit_16(737);
+emit_16(803);
+emit_16(736);
+emit_16(803);
+emit_16(737);
+emit_16(804);
+emit_16(738);
+emit_16(804);
+emit_16(737);
+emit_16(804);
+emit_16(738);
+emit_16(805);
+emit_16(739);
+emit_16(805);
+emit_16(738);
+emit_16(805);
+emit_16(739);
+emit_16(806);
+emit_16(740);
+emit_16(806);
+emit_16(739);
+emit_16(806);
+emit_16(740);
+emit_16(807);
+emit_16(741);
+emit_16(807);
+emit_16(740);
+emit_16(807);
+emit_16(741);
+emit_16(808);
+emit_16(742);
+emit_16(808);
+emit_16(741);
+emit_16(808);
+emit_16(742);
+emit_16(809);
+emit_16(743);
+emit_16(809);
+emit_16(742);
+emit_16(809);
+emit_16(743);
+emit_16(810);
+emit_16(744);
+emit_16(810);
+emit_16(743);
+emit_16(810);
+emit_16(744);
+emit_16(811);
+emit_16(745);
+emit_16(811);
+emit_16(744);
+emit_16(811);
+emit_16(745);
+emit_16(812);
+emit_16(746);
+emit_16(812);
+emit_16(745);
+emit_16(812);
+emit_16(746);
+emit_16(813);
+emit_16(747);
+emit_16(813);
+emit_16(746);
+emit_16(813);
+emit_16(747);
+emit_16(814);
+emit_16(748);
+emit_16(814);
+emit_16(747);
+emit_16(814);
+emit_16(748);
+emit_16(815);
+emit_16(749);
+emit_16(815);
+emit_16(748);
+emit_16(815);
+emit_16(749);
+emit_16(816);
+emit_16(750);
+emit_16(816);
+emit_16(749);
+emit_16(816);
+emit_16(750);
+emit_16(817);
+emit_16(751);
+emit_16(817);
+emit_16(750);
+emit_16(817);
+emit_16(751);
+emit_16(818);
+emit_16(752);
+emit_16(818);
+emit_16(751);
+emit_16(818);
+emit_16(752);
+emit_16(819);
+emit_16(753);
+emit_16(819);
+emit_16(752);
+emit_16(819);
+emit_16(753);
+emit_16(820);
+emit_16(754);
+emit_16(820);
+emit_16(753);
+emit_16(820);
+emit_16(754);
+emit_16(821);
+emit_16(755);
+emit_16(821);
+emit_16(754);
+emit_16(821);
+emit_16(755);
+emit_16(822);
+emit_16(756);
+emit_16(822);
+emit_16(755);
+emit_16(822);
+emit_16(756);
+emit_16(823);
+emit_16(757);
+emit_16(823);
+emit_16(756);
+emit_16(823);
+emit_16(757);
+emit_16(824);
+emit_16(758);
+emit_16(824);
+emit_16(757);
+emit_16(824);
+emit_16(758);
+emit_16(825);
+emit_16(759);
+emit_16(825);
+emit_16(758);
+emit_16(825);
+emit_16(759);
+emit_16(826);
+emit_16(760);
+emit_16(826);
+emit_16(759);
+emit_16(826);
+emit_16(760);
+emit_16(827);
+emit_16(761);
+emit_16(827);
+emit_16(760);
+emit_16(827);
+emit_16(761);
+emit_16(828);
+emit_16(762);
+emit_16(828);
+emit_16(761);
+emit_16(828);
+emit_16(762);
+emit_16(829);
+emit_16(763);
+emit_16(829);
+emit_16(762);
+emit_16(829);
+emit_16(763);
+emit_16(830);
+emit_16(764);
+emit_16(830);
+emit_16(763);
+emit_16(830);
+emit_16(764);
+emit_16(831);
+emit_16(765);
+emit_16(831);
+emit_16(764);
+emit_16(831);
+emit_16(765);
+emit_16(832);
+emit_16(766);
+emit_16(832);
+emit_16(765);
+emit_16(832);
+emit_16(766);
+emit_16(833);
+emit_16(767);
+emit_16(833);
+emit_16(766);
+emit_16(833);
+emit_16(767);
+emit_16(834);
+emit_16(768);
+emit_16(834);
+emit_16(767);
+emit_16(834);
+emit_16(768);
+emit_16(835);
+emit_16(769);
+emit_16(835);
+emit_16(768);
+emit_16(835);
+emit_16(769);
+emit_16(836);
+emit_16(770);
+emit_16(836);
+emit_16(769);
+emit_16(836);
+emit_16(770);
+emit_16(837);
+emit_16(771);
+emit_16(837);
+emit_16(770);
+emit_16(837);
+emit_16(771);
+emit_16(838);
+emit_16(772);
+emit_16(838);
+emit_16(771);
+emit_16(838);
+emit_16(772);
+emit_16(839);
+emit_16(773);
+emit_16(839);
+emit_16(772);
+emit_16(839);
+emit_16(773);
+emit_16(840);
+emit_16(774);
+emit_16(840);
+emit_16(773);
+emit_16(840);
+emit_16(774);
+emit_16(841);
+emit_16(775);
+emit_16(841);
+emit_16(774);
+emit_16(841);
+emit_16(775);
+emit_16(842);
+emit_16(776);
+emit_16(842);
+emit_16(775);
+emit_16(842);
+emit_16(776);
+emit_16(843);
+emit_16(777);
+emit_16(843);
+emit_16(776);
+emit_16(843);
+emit_16(777);
+emit_16(844);
+emit_16(778);
+emit_16(844);
+emit_16(777);
+emit_16(844);
+emit_16(778);
+emit_16(845);
+emit_16(779);
+emit_16(845);
+emit_16(778);
+emit_16(845);
+emit_16(779);
+emit_16(846);
+emit_16(780);
+emit_16(846);
+emit_16(779);
+emit_16(846);
+emit_16(780);
+emit_16(847);
+emit_16(781);
+emit_16(847);
+emit_16(780);
+emit_16(847);
+emit_16(781);
+emit_16(848);
+emit_16(782);
+emit_16(848);
+emit_16(781);
+emit_16(848);
+emit_16(782);
+emit_16(849);
+emit_16(783);
+emit_16(849);
+emit_16(782);
+emit_16(849);
+emit_16(783);
+emit_16(850);
+emit_16(784);
+emit_16(850);
+emit_16(783);
+emit_16(850);
+emit_16(784);
+emit_16(851);
+emit_16(785);
+emit_16(851);
+emit_16(784);
+emit_16(851);
+emit_16(785);
+emit_16(852);
+emit_16(786);
+emit_16(852);
+emit_16(785);
+emit_16(852);
+emit_16(786);
+emit_16(853);
+emit_16(787);
+emit_16(853);
+emit_16(786);
+emit_16(853);
+emit_16(787);
+emit_16(854);
+emit_16(788);
+emit_16(854);
+emit_16(787);
+emit_16(854);
+emit_16(788);
+emit_16(855);
+emit_16(789);
+emit_16(855);
+emit_16(788);
+emit_16(855);
+emit_16(789);
+emit_16(856);
+emit_16(790);
+emit_16(856);
+emit_16(789);
+emit_16(856);
+emit_16(790);
+emit_16(857);
+emit_16(791);
+emit_16(857);
+emit_16(790);
+emit_16(858);
+emit_16(792);
+emit_16(859);
+emit_16(793);
+emit_16(859);
+emit_16(792);
+emit_16(859);
+emit_16(793);
+emit_16(860);
+emit_16(794);
+emit_16(860);
+emit_16(793);
+emit_16(860);
+emit_16(794);
+emit_16(861);
+emit_16(795);
+emit_16(861);
+emit_16(794);
+emit_16(861);
+emit_16(795);
+emit_16(862);
+emit_16(796);
+emit_16(862);
+emit_16(795);
+emit_16(862);
+emit_16(796);
+emit_16(863);
+emit_16(797);
+emit_16(863);
+emit_16(796);
+emit_16(863);
+emit_16(797);
+emit_16(864);
+emit_16(798);
+emit_16(864);
+emit_16(797);
+emit_16(864);
+emit_16(798);
+emit_16(865);
+emit_16(799);
+emit_16(865);
+emit_16(798);
+emit_16(865);
+emit_16(799);
+emit_16(866);
+emit_16(800);
+emit_16(866);
+emit_16(799);
+emit_16(866);
+emit_16(800);
+emit_16(867);
+emit_16(801);
+emit_16(867);
+emit_16(800);
+emit_16(867);
+emit_16(801);
+emit_16(868);
+emit_16(802);
+emit_16(868);
+emit_16(801);
+emit_16(868);
+emit_16(802);
+emit_16(869);
+emit_16(803);
+emit_16(869);
+emit_16(802);
+emit_16(869);
+emit_16(803);
+emit_16(870);
+emit_16(804);
+emit_16(870);
+emit_16(803);
+emit_16(870);
+emit_16(804);
+emit_16(871);
+emit_16(805);
+emit_16(871);
+emit_16(804);
+emit_16(871);
+emit_16(805);
+emit_16(872);
+emit_16(806);
+emit_16(872);
+emit_16(805);
+emit_16(872);
+emit_16(806);
+emit_16(873);
+emit_16(807);
+emit_16(873);
+emit_16(806);
+emit_16(873);
+emit_16(807);
+emit_16(874);
+emit_16(808);
+emit_16(874);
+emit_16(807);
+emit_16(874);
+emit_16(808);
+emit_16(875);
+emit_16(809);
+emit_16(875);
+emit_16(808);
+emit_16(875);
+emit_16(809);
+emit_16(876);
+emit_16(810);
+emit_16(876);
+emit_16(809);
+emit_16(876);
+emit_16(810);
+emit_16(877);
+emit_16(811);
+emit_16(877);
+emit_16(810);
+emit_16(877);
+emit_16(811);
+emit_16(878);
+emit_16(812);
+emit_16(878);
+emit_16(811);
+emit_16(878);
+emit_16(812);
+emit_16(879);
+emit_16(813);
+emit_16(879);
+emit_16(812);
+emit_16(879);
+emit_16(813);
+emit_16(880);
+emit_16(814);
+emit_16(880);
+emit_16(813);
+emit_16(880);
+emit_16(814);
+emit_16(881);
+emit_16(815);
+emit_16(881);
+emit_16(814);
+emit_16(881);
+emit_16(815);
+emit_16(882);
+emit_16(816);
+emit_16(882);
+emit_16(815);
+emit_16(882);
+emit_16(816);
+emit_16(883);
+emit_16(817);
+emit_16(883);
+emit_16(816);
+emit_16(883);
+emit_16(817);
+emit_16(884);
+emit_16(818);
+emit_16(884);
+emit_16(817);
+emit_16(884);
+emit_16(818);
+emit_16(885);
+emit_16(819);
+emit_16(885);
+emit_16(818);
+emit_16(885);
+emit_16(819);
+emit_16(886);
+emit_16(820);
+emit_16(886);
+emit_16(819);
+emit_16(886);
+emit_16(820);
+emit_16(887);
+emit_16(821);
+emit_16(887);
+emit_16(820);
+emit_16(887);
+emit_16(821);
+emit_16(888);
+emit_16(822);
+emit_16(888);
+emit_16(821);
+emit_16(888);
+emit_16(822);
+emit_16(889);
+emit_16(823);
+emit_16(889);
+emit_16(822);
+emit_16(889);
+emit_16(823);
+emit_16(890);
+emit_16(824);
+emit_16(890);
+emit_16(823);
+emit_16(890);
+emit_16(824);
+emit_16(891);
+emit_16(825);
+emit_16(891);
+emit_16(824);
+emit_16(891);
+emit_16(825);
+emit_16(892);
+emit_16(826);
+emit_16(892);
+emit_16(825);
+emit_16(892);
+emit_16(826);
+emit_16(893);
+emit_16(827);
+emit_16(893);
+emit_16(826);
+emit_16(893);
+emit_16(827);
+emit_16(894);
+emit_16(828);
+emit_16(894);
+emit_16(827);
+emit_16(894);
+emit_16(828);
+emit_16(895);
+emit_16(829);
+emit_16(895);
+emit_16(828);
+emit_16(895);
+emit_16(829);
+emit_16(896);
+emit_16(830);
+emit_16(896);
+emit_16(829);
+emit_16(896);
+emit_16(830);
+emit_16(897);
+emit_16(831);
+emit_16(897);
+emit_16(830);
+emit_16(897);
+emit_16(831);
+emit_16(898);
+emit_16(832);
+emit_16(898);
+emit_16(831);
+emit_16(898);
+emit_16(832);
+emit_16(899);
+emit_16(833);
+emit_16(899);
+emit_16(832);
+emit_16(899);
+emit_16(833);
+emit_16(900);
+emit_16(834);
+emit_16(900);
+emit_16(833);
+emit_16(900);
+emit_16(834);
+emit_16(901);
+emit_16(835);
+emit_16(901);
+emit_16(834);
+emit_16(901);
+emit_16(835);
+emit_16(902);
+emit_16(836);
+emit_16(902);
+emit_16(835);
+emit_16(902);
+emit_16(836);
+emit_16(903);
+emit_16(837);
+emit_16(903);
+emit_16(836);
+emit_16(903);
+emit_16(837);
+emit_16(904);
+emit_16(838);
+emit_16(904);
+emit_16(837);
+emit_16(904);
+emit_16(838);
+emit_16(905);
+emit_16(839);
+emit_16(905);
+emit_16(838);
+emit_16(905);
+emit_16(839);
+emit_16(906);
+emit_16(840);
+emit_16(906);
+emit_16(839);
+emit_16(906);
+emit_16(840);
+emit_16(907);
+emit_16(841);
+emit_16(907);
+emit_16(840);
+emit_16(907);
+emit_16(841);
+emit_16(908);
+emit_16(842);
+emit_16(908);
+emit_16(841);
+emit_16(908);
+emit_16(842);
+emit_16(909);
+emit_16(843);
+emit_16(909);
+emit_16(842);
+emit_16(909);
+emit_16(843);
+emit_16(910);
+emit_16(844);
+emit_16(910);
+emit_16(843);
+emit_16(910);
+emit_16(844);
+emit_16(911);
+emit_16(845);
+emit_16(911);
+emit_16(844);
+emit_16(911);
+emit_16(845);
+emit_16(912);
+emit_16(846);
+emit_16(912);
+emit_16(845);
+emit_16(912);
+emit_16(846);
+emit_16(913);
+emit_16(847);
+emit_16(913);
+emit_16(846);
+emit_16(913);
+emit_16(847);
+emit_16(914);
+emit_16(848);
+emit_16(914);
+emit_16(847);
+emit_16(914);
+emit_16(848);
+emit_16(915);
+emit_16(849);
+emit_16(915);
+emit_16(848);
+emit_16(915);
+emit_16(849);
+emit_16(916);
+emit_16(850);
+emit_16(916);
+emit_16(849);
+emit_16(916);
+emit_16(850);
+emit_16(917);
+emit_16(851);
+emit_16(917);
+emit_16(850);
+emit_16(917);
+emit_16(851);
+emit_16(918);
+emit_16(852);
+emit_16(918);
+emit_16(851);
+emit_16(918);
+emit_16(852);
+emit_16(919);
+emit_16(853);
+emit_16(919);
+emit_16(852);
+emit_16(919);
+emit_16(853);
+emit_16(920);
+emit_16(854);
+emit_16(920);
+emit_16(853);
+emit_16(920);
+emit_16(854);
+emit_16(921);
+emit_16(855);
+emit_16(921);
+emit_16(854);
+emit_16(921);
+emit_16(855);
+emit_16(922);
+emit_16(856);
+emit_16(922);
+emit_16(855);
+emit_16(922);
+emit_16(856);
+emit_16(923);
+emit_16(857);
+emit_16(923);
+emit_16(856);
+emit_16(924);
+emit_16(858);
+emit_16(925);
+emit_16(859);
+emit_16(925);
+emit_16(858);
+emit_16(925);
+emit_16(859);
+emit_16(926);
+emit_16(860);
+emit_16(926);
+emit_16(859);
+emit_16(926);
+emit_16(860);
+emit_16(927);
+emit_16(861);
+emit_16(927);
+emit_16(860);
+emit_16(927);
+emit_16(861);
+emit_16(928);
+emit_16(862);
+emit_16(928);
+emit_16(861);
+emit_16(928);
+emit_16(862);
+emit_16(929);
+emit_16(863);
+emit_16(929);
+emit_16(862);
+emit_16(929);
+emit_16(863);
+emit_16(930);
+emit_16(864);
+emit_16(930);
+emit_16(863);
+emit_16(930);
+emit_16(864);
+emit_16(931);
+emit_16(865);
+emit_16(931);
+emit_16(864);
+emit_16(931);
+emit_16(865);
+emit_16(932);
+emit_16(866);
+emit_16(932);
+emit_16(865);
+emit_16(932);
+emit_16(866);
+emit_16(933);
+emit_16(867);
+emit_16(933);
+emit_16(866);
+emit_16(933);
+emit_16(867);
+emit_16(934);
+emit_16(868);
+emit_16(934);
+emit_16(867);
+emit_16(934);
+emit_16(868);
+emit_16(935);
+emit_16(869);
+emit_16(935);
+emit_16(868);
+emit_16(935);
+emit_16(869);
+emit_16(936);
+emit_16(870);
+emit_16(936);
+emit_16(869);
+emit_16(936);
+emit_16(870);
+emit_16(937);
+emit_16(871);
+emit_16(937);
+emit_16(870);
+emit_16(937);
+emit_16(871);
+emit_16(938);
+emit_16(872);
+emit_16(938);
+emit_16(871);
+emit_16(938);
+emit_16(872);
+emit_16(939);
+emit_16(873);
+emit_16(939);
+emit_16(872);
+emit_16(939);
+emit_16(873);
+emit_16(940);
+emit_16(874);
+emit_16(940);
+emit_16(873);
+emit_16(940);
+emit_16(874);
+emit_16(941);
+emit_16(875);
+emit_16(941);
+emit_16(874);
+emit_16(941);
+emit_16(875);
+emit_16(942);
+emit_16(876);
+emit_16(942);
+emit_16(875);
+emit_16(942);
+emit_16(876);
+emit_16(943);
+emit_16(877);
+emit_16(943);
+emit_16(876);
+emit_16(943);
+emit_16(877);
+emit_16(944);
+emit_16(878);
+emit_16(944);
+emit_16(877);
+emit_16(944);
+emit_16(878);
+emit_16(945);
+emit_16(879);
+emit_16(945);
+emit_16(878);
+emit_16(945);
+emit_16(879);
+emit_16(946);
+emit_16(880);
+emit_16(946);
+emit_16(879);
+emit_16(946);
+emit_16(880);
+emit_16(947);
+emit_16(881);
+emit_16(947);
+emit_16(880);
+emit_16(947);
+emit_16(881);
+emit_16(948);
+emit_16(882);
+emit_16(948);
+emit_16(881);
+emit_16(948);
+emit_16(882);
+emit_16(949);
+emit_16(883);
+emit_16(949);
+emit_16(882);
+emit_16(949);
+emit_16(883);
+emit_16(950);
+emit_16(884);
+emit_16(950);
+emit_16(883);
+emit_16(950);
+emit_16(884);
+emit_16(951);
+emit_16(885);
+emit_16(951);
+emit_16(884);
+emit_16(951);
+emit_16(885);
+emit_16(952);
+emit_16(886);
+emit_16(952);
+emit_16(885);
+emit_16(952);
+emit_16(886);
+emit_16(953);
+emit_16(887);
+emit_16(953);
+emit_16(886);
+emit_16(953);
+emit_16(887);
+emit_16(954);
+emit_16(888);
+emit_16(954);
+emit_16(887);
+emit_16(954);
+emit_16(888);
+emit_16(955);
+emit_16(889);
+emit_16(955);
+emit_16(888);
+emit_16(955);
+emit_16(889);
+emit_16(956);
+emit_16(890);
+emit_16(956);
+emit_16(889);
+emit_16(956);
+emit_16(890);
+emit_16(957);
+emit_16(891);
+emit_16(957);
+emit_16(890);
+emit_16(957);
+emit_16(891);
+emit_16(958);
+emit_16(892);
+emit_16(958);
+emit_16(891);
+emit_16(958);
+emit_16(892);
+emit_16(959);
+emit_16(893);
+emit_16(959);
+emit_16(892);
+emit_16(959);
+emit_16(893);
+emit_16(960);
+emit_16(894);
+emit_16(960);
+emit_16(893);
+emit_16(960);
+emit_16(894);
+emit_16(961);
+emit_16(895);
+emit_16(961);
+emit_16(894);
+emit_16(961);
+emit_16(895);
+emit_16(962);
+emit_16(896);
+emit_16(962);
+emit_16(895);
+emit_16(962);
+emit_16(896);
+emit_16(963);
+emit_16(897);
+emit_16(963);
+emit_16(896);
+emit_16(963);
+emit_16(897);
+emit_16(964);
+emit_16(898);
+emit_16(964);
+emit_16(897);
+emit_16(964);
+emit_16(898);
+emit_16(965);
+emit_16(899);
+emit_16(965);
+emit_16(898);
+emit_16(965);
+emit_16(899);
+emit_16(966);
+emit_16(900);
+emit_16(966);
+emit_16(899);
+emit_16(966);
+emit_16(900);
+emit_16(967);
+emit_16(901);
+emit_16(967);
+emit_16(900);
+emit_16(967);
+emit_16(901);
+emit_16(968);
+emit_16(902);
+emit_16(968);
+emit_16(901);
+emit_16(968);
+emit_16(902);
+emit_16(969);
+emit_16(903);
+emit_16(969);
+emit_16(902);
+emit_16(969);
+emit_16(903);
+emit_16(970);
+emit_16(904);
+emit_16(970);
+emit_16(903);
+emit_16(970);
+emit_16(904);
+emit_16(971);
+emit_16(905);
+emit_16(971);
+emit_16(904);
+emit_16(971);
+emit_16(905);
+emit_16(972);
+emit_16(906);
+emit_16(972);
+emit_16(905);
+emit_16(972);
+emit_16(906);
+emit_16(973);
+emit_16(907);
+emit_16(973);
+emit_16(906);
+emit_16(973);
+emit_16(907);
+emit_16(974);
+emit_16(908);
+emit_16(974);
+emit_16(907);
+emit_16(974);
+emit_16(908);
+emit_16(975);
+emit_16(909);
+emit_16(975);
+emit_16(908);
+emit_16(975);
+emit_16(909);
+emit_16(976);
+emit_16(910);
+emit_16(976);
+emit_16(909);
+emit_16(976);
+emit_16(910);
+emit_16(977);
+emit_16(911);
+emit_16(977);
+emit_16(910);
+emit_16(977);
+emit_16(911);
+emit_16(978);
+emit_16(912);
+emit_16(978);
+emit_16(911);
+emit_16(978);
+emit_16(912);
+emit_16(979);
+emit_16(913);
+emit_16(979);
+emit_16(912);
+emit_16(979);
+emit_16(913);
+emit_16(980);
+emit_16(914);
+emit_16(980);
+emit_16(913);
+emit_16(980);
+emit_16(914);
+emit_16(981);
+emit_16(915);
+emit_16(981);
+emit_16(914);
+emit_16(981);
+emit_16(915);
+emit_16(982);
+emit_16(916);
+emit_16(982);
+emit_16(915);
+emit_16(982);
+emit_16(916);
+emit_16(983);
+emit_16(917);
+emit_16(983);
+emit_16(916);
+emit_16(983);
+emit_16(917);
+emit_16(984);
+emit_16(918);
+emit_16(984);
+emit_16(917);
+emit_16(984);
+emit_16(918);
+emit_16(985);
+emit_16(919);
+emit_16(985);
+emit_16(918);
+emit_16(985);
+emit_16(919);
+emit_16(986);
+emit_16(920);
+emit_16(986);
+emit_16(919);
+emit_16(986);
+emit_16(920);
+emit_16(987);
+emit_16(921);
+emit_16(987);
+emit_16(920);
+emit_16(987);
+emit_16(921);
+emit_16(988);
+emit_16(922);
+emit_16(988);
+emit_16(921);
+emit_16(988);
+emit_16(922);
+emit_16(989);
+emit_16(923);
+emit_16(989);
+emit_16(922);
+emit_16(990);
+emit_16(924);
+emit_16(991);
+emit_16(925);
+emit_16(991);
+emit_16(924);
+emit_16(991);
+emit_16(925);
+emit_16(992);
+emit_16(926);
+emit_16(992);
+emit_16(925);
+emit_16(992);
+emit_16(926);
+emit_16(993);
+emit_16(927);
+emit_16(993);
+emit_16(926);
+emit_16(993);
+emit_16(927);
+emit_16(994);
+emit_16(928);
+emit_16(994);
+emit_16(927);
+emit_16(994);
+emit_16(928);
+emit_16(995);
+emit_16(929);
+emit_16(995);
+emit_16(928);
+emit_16(995);
+emit_16(929);
+emit_16(996);
+emit_16(930);
+emit_16(996);
+emit_16(929);
+emit_16(996);
+emit_16(930);
+emit_16(997);
+emit_16(931);
+emit_16(997);
+emit_16(930);
+emit_16(997);
+emit_16(931);
+emit_16(998);
+emit_16(932);
+emit_16(998);
+emit_16(931);
+emit_16(998);
+emit_16(932);
+emit_16(999);
+emit_16(933);
+emit_16(999);
+emit_16(932);
+emit_16(999);
+emit_16(933);
+emit_16(1000);
+emit_16(934);
+emit_16(1000);
+emit_16(933);
+emit_16(1000);
+emit_16(934);
+emit_16(1001);
+emit_16(935);
+emit_16(1001);
+emit_16(934);
+emit_16(1001);
+emit_16(935);
+emit_16(1002);
+emit_16(936);
+emit_16(1002);
+emit_16(935);
+emit_16(1002);
+emit_16(936);
+emit_16(1003);
+emit_16(937);
+emit_16(1003);
+emit_16(936);
+emit_16(1003);
+emit_16(937);
+emit_16(1004);
+emit_16(938);
+emit_16(1004);
+emit_16(937);
+emit_16(1004);
+emit_16(938);
+emit_16(1005);
+emit_16(939);
+emit_16(1005);
+emit_16(938);
+emit_16(1005);
+emit_16(939);
+emit_16(1006);
+emit_16(940);
+emit_16(1006);
+emit_16(939);
+emit_16(1006);
+emit_16(940);
+emit_16(1007);
+emit_16(941);
+emit_16(1007);
+emit_16(940);
+emit_16(1007);
+emit_16(941);
+emit_16(1008);
+emit_16(942);
+emit_16(1008);
+emit_16(941);
+emit_16(1008);
+emit_16(942);
+emit_16(1009);
+emit_16(943);
+emit_16(1009);
+emit_16(942);
+emit_16(1009);
+emit_16(943);
+emit_16(1010);
+emit_16(944);
+emit_16(1010);
+emit_16(943);
+emit_16(1010);
+emit_16(944);
+emit_16(1011);
+emit_16(945);
+emit_16(1011);
+emit_16(944);
+emit_16(1011);
+emit_16(945);
+emit_16(1012);
+emit_16(946);
+emit_16(1012);
+emit_16(945);
+emit_16(1012);
+emit_16(946);
+emit_16(1013);
+emit_16(947);
+emit_16(1013);
+emit_16(946);
+emit_16(1013);
+emit_16(947);
+emit_16(1014);
+emit_16(948);
+emit_16(1014);
+emit_16(947);
+emit_16(1014);
+emit_16(948);
+emit_16(1015);
+emit_16(949);
+emit_16(1015);
+emit_16(948);
+emit_16(1015);
+emit_16(949);
+emit_16(1016);
+emit_16(950);
+emit_16(1016);
+emit_16(949);
+emit_16(1016);
+emit_16(950);
+emit_16(1017);
+emit_16(951);
+emit_16(1017);
+emit_16(950);
+emit_16(1017);
+emit_16(951);
+emit_16(1018);
+emit_16(952);
+emit_16(1018);
+emit_16(951);
+emit_16(1018);
+emit_16(952);
+emit_16(1019);
+emit_16(953);
+emit_16(1019);
+emit_16(952);
+emit_16(1019);
+emit_16(953);
+emit_16(1020);
+emit_16(954);
+emit_16(1020);
+emit_16(953);
+emit_16(1020);
+emit_16(954);
+emit_16(1021);
+emit_16(955);
+emit_16(1021);
+emit_16(954);
+emit_16(1021);
+emit_16(955);
+emit_16(1022);
+emit_16(956);
+emit_16(1022);
+emit_16(955);
+emit_16(1022);
+emit_16(956);
+emit_16(1023);
+emit_16(957);
+emit_16(1023);
+emit_16(956);
+emit_16(1023);
+emit_16(957);
+emit_16(1024);
+emit_16(958);
+emit_16(1024);
+emit_16(957);
+emit_16(1024);
+emit_16(958);
+emit_16(1025);
+emit_16(959);
+emit_16(1025);
+emit_16(958);
+emit_16(1025);
+emit_16(959);
+emit_16(1026);
+emit_16(960);
+emit_16(1026);
+emit_16(959);
+emit_16(1026);
+emit_16(960);
+emit_16(1027);
+emit_16(961);
+emit_16(1027);
+emit_16(960);
+emit_16(1027);
+emit_16(961);
+emit_16(1028);
+emit_16(962);
+emit_16(1028);
+emit_16(961);
+emit_16(1028);
+emit_16(962);
+emit_16(1029);
+emit_16(963);
+emit_16(1029);
+emit_16(962);
+emit_16(1029);
+emit_16(963);
+emit_16(1030);
+emit_16(964);
+emit_16(1030);
+emit_16(963);
+emit_16(1030);
+emit_16(964);
+emit_16(1031);
+emit_16(965);
+emit_16(1031);
+emit_16(964);
+emit_16(1031);
+emit_16(965);
+emit_16(1032);
+emit_16(966);
+emit_16(1032);
+emit_16(965);
+emit_16(1032);
+emit_16(966);
+emit_16(1033);
+emit_16(967);
+emit_16(1033);
+emit_16(966);
+emit_16(1033);
+emit_16(967);
+emit_16(1034);
+emit_16(968);
+emit_16(1034);
+emit_16(967);
+emit_16(1034);
+emit_16(968);
+emit_16(1035);
+emit_16(969);
+emit_16(1035);
+emit_16(968);
+emit_16(1035);
+emit_16(969);
+emit_16(1036);
+emit_16(970);
+emit_16(1036);
+emit_16(969);
+emit_16(1036);
+emit_16(970);
+emit_16(1037);
+emit_16(971);
+emit_16(1037);
+emit_16(970);
+emit_16(1037);
+emit_16(971);
+emit_16(1038);
+emit_16(972);
+emit_16(1038);
+emit_16(971);
+emit_16(1038);
+emit_16(972);
+emit_16(1039);
+emit_16(973);
+emit_16(1039);
+emit_16(972);
+emit_16(1039);
+emit_16(973);
+emit_16(1040);
+emit_16(974);
+emit_16(1040);
+emit_16(973);
+emit_16(1040);
+emit_16(974);
+emit_16(1041);
+emit_16(975);
+emit_16(1041);
+emit_16(974);
+emit_16(1041);
+emit_16(975);
+emit_16(1042);
+emit_16(976);
+emit_16(1042);
+emit_16(975);
+emit_16(1042);
+emit_16(976);
+emit_16(1043);
+emit_16(977);
+emit_16(1043);
+emit_16(976);
+emit_16(1043);
+emit_16(977);
+emit_16(1044);
+emit_16(978);
+emit_16(1044);
+emit_16(977);
+emit_16(1044);
+emit_16(978);
+emit_16(1045);
+emit_16(979);
+emit_16(1045);
+emit_16(978);
+emit_16(1045);
+emit_16(979);
+emit_16(1046);
+emit_16(980);
+emit_16(1046);
+emit_16(979);
+emit_16(1046);
+emit_16(980);
+emit_16(1047);
+emit_16(981);
+emit_16(1047);
+emit_16(980);
+emit_16(1047);
+emit_16(981);
+emit_16(1048);
+emit_16(982);
+emit_16(1048);
+emit_16(981);
+emit_16(1048);
+emit_16(982);
+emit_16(1049);
+emit_16(983);
+emit_16(1049);
+emit_16(982);
+emit_16(1049);
+emit_16(983);
+emit_16(1050);
+emit_16(984);
+emit_16(1050);
+emit_16(983);
+emit_16(1050);
+emit_16(984);
+emit_16(1051);
+emit_16(985);
+emit_16(1051);
+emit_16(984);
+emit_16(1051);
+emit_16(985);
+emit_16(1052);
+emit_16(986);
+emit_16(1052);
+emit_16(985);
+emit_16(1052);
+emit_16(986);
+emit_16(1053);
+emit_16(987);
+emit_16(1053);
+emit_16(986);
+emit_16(1053);
+emit_16(987);
+emit_16(1054);
+emit_16(988);
+emit_16(1054);
+emit_16(987);
+emit_16(1054);
+emit_16(988);
+emit_16(1055);
+emit_16(989);
+emit_16(1055);
+emit_16(988);
+emit_16(1056);
+emit_16(990);
+emit_16(1057);
+emit_16(991);
+emit_16(1057);
+emit_16(990);
+emit_16(1057);
+emit_16(991);
+emit_16(1058);
+emit_16(992);
+emit_16(1058);
+emit_16(991);
+emit_16(1058);
+emit_16(992);
+emit_16(1059);
+emit_16(993);
+emit_16(1059);
+emit_16(992);
+emit_16(1059);
+emit_16(993);
+emit_16(1060);
+emit_16(994);
+emit_16(1060);
+emit_16(993);
+emit_16(1060);
+emit_16(994);
+emit_16(1061);
+emit_16(995);
+emit_16(1061);
+emit_16(994);
+emit_16(1061);
+emit_16(995);
+emit_16(1062);
+emit_16(996);
+emit_16(1062);
+emit_16(995);
+emit_16(1062);
+emit_16(996);
+emit_16(1063);
+emit_16(997);
+emit_16(1063);
+emit_16(996);
+emit_16(1063);
+emit_16(997);
+emit_16(1064);
+emit_16(998);
+emit_16(1064);
+emit_16(997);
+emit_16(1064);
+emit_16(998);
+emit_16(1065);
+emit_16(999);
+emit_16(1065);
+emit_16(998);
+emit_16(1065);
+emit_16(999);
+emit_16(1066);
+emit_16(1000);
+emit_16(1066);
+emit_16(999);
+emit_16(1066);
+emit_16(1000);
+emit_16(1067);
+emit_16(1001);
+emit_16(1067);
+emit_16(1000);
+emit_16(1067);
+emit_16(1001);
+emit_16(1068);
+emit_16(1002);
+emit_16(1068);
+emit_16(1001);
+emit_16(1068);
+emit_16(1002);
+emit_16(1069);
+emit_16(1003);
+emit_16(1069);
+emit_16(1002);
+emit_16(1069);
+emit_16(1003);
+emit_16(1070);
+emit_16(1004);
+emit_16(1070);
+emit_16(1003);
+emit_16(1070);
+emit_16(1004);
+emit_16(1071);
+emit_16(1005);
+emit_16(1071);
+emit_16(1004);
+emit_16(1071);
+emit_16(1005);
+emit_16(1072);
+emit_16(1006);
+emit_16(1072);
+emit_16(1005);
+emit_16(1072);
+emit_16(1006);
+emit_16(1073);
+emit_16(1007);
+emit_16(1073);
+emit_16(1006);
+emit_16(1073);
+emit_16(1007);
+emit_16(1074);
+emit_16(1008);
+emit_16(1074);
+emit_16(1007);
+emit_16(1074);
+emit_16(1008);
+emit_16(1075);
+emit_16(1009);
+emit_16(1075);
+emit_16(1008);
+emit_16(1075);
+emit_16(1009);
+emit_16(1076);
+emit_16(1010);
+emit_16(1076);
+emit_16(1009);
+emit_16(1076);
+emit_16(1010);
+emit_16(1077);
+emit_16(1011);
+emit_16(1077);
+emit_16(1010);
+emit_16(1077);
+emit_16(1011);
+emit_16(1078);
+emit_16(1012);
+emit_16(1078);
+emit_16(1011);
+emit_16(1078);
+emit_16(1012);
+emit_16(1079);
+emit_16(1013);
+emit_16(1079);
+emit_16(1012);
+emit_16(1079);
+emit_16(1013);
+emit_16(1080);
+emit_16(1014);
+emit_16(1080);
+emit_16(1013);
+emit_16(1080);
+emit_16(1014);
+emit_16(1081);
+emit_16(1015);
+emit_16(1081);
+emit_16(1014);
+emit_16(1081);
+emit_16(1015);
+emit_16(1082);
+emit_16(1016);
+emit_16(1082);
+emit_16(1015);
+emit_16(1082);
+emit_16(1016);
+emit_16(1083);
+emit_16(1017);
+emit_16(1083);
+emit_16(1016);
+emit_16(1083);
+emit_16(1017);
+emit_16(1084);
+emit_16(1018);
+emit_16(1084);
+emit_16(1017);
+emit_16(1084);
+emit_16(1018);
+emit_16(1085);
+emit_16(1019);
+emit_16(1085);
+emit_16(1018);
+emit_16(1085);
+emit_16(1019);
+emit_16(1086);
+emit_16(1020);
+emit_16(1086);
+emit_16(1019);
+emit_16(1086);
+emit_16(1020);
+emit_16(1087);
+emit_16(1021);
+emit_16(1087);
+emit_16(1020);
+emit_16(1087);
+emit_16(1021);
+emit_16(1088);
+emit_16(1022);
+emit_16(1088);
+emit_16(1021);
+emit_16(1088);
+emit_16(1022);
+emit_16(1089);
+emit_16(1023);
+emit_16(1089);
+emit_16(1022);
+emit_16(1089);
+emit_16(1023);
+emit_16(1090);
+emit_16(1024);
+emit_16(1090);
+emit_16(1023);
+emit_16(1090);
+emit_16(1024);
+emit_16(1091);
+emit_16(1025);
+emit_16(1091);
+emit_16(1024);
+emit_16(1091);
+emit_16(1025);
+emit_16(1092);
+emit_16(1026);
+emit_16(1092);
+emit_16(1025);
+emit_16(1092);
+emit_16(1026);
+emit_16(1093);
+emit_16(1027);
+emit_16(1093);
+emit_16(1026);
+emit_16(1093);
+emit_16(1027);
+emit_16(1094);
+emit_16(1028);
+emit_16(1094);
+emit_16(1027);
+emit_16(1094);
+emit_16(1028);
+emit_16(1095);
+emit_16(1029);
+emit_16(1095);
+emit_16(1028);
+emit_16(1095);
+emit_16(1029);
+emit_16(1096);
+emit_16(1030);
+emit_16(1096);
+emit_16(1029);
+emit_16(1096);
+emit_16(1030);
+emit_16(1097);
+emit_16(1031);
+emit_16(1097);
+emit_16(1030);
+emit_16(1097);
+emit_16(1031);
+emit_16(1098);
+emit_16(1032);
+emit_16(1098);
+emit_16(1031);
+emit_16(1098);
+emit_16(1032);
+emit_16(1099);
+emit_16(1033);
+emit_16(1099);
+emit_16(1032);
+emit_16(1099);
+emit_16(1033);
+emit_16(1100);
+emit_16(1034);
+emit_16(1100);
+emit_16(1033);
+emit_16(1100);
+emit_16(1034);
+emit_16(1101);
+emit_16(1035);
+emit_16(1101);
+emit_16(1034);
+emit_16(1101);
+emit_16(1035);
+emit_16(1102);
+emit_16(1036);
+emit_16(1102);
+emit_16(1035);
+emit_16(1102);
+emit_16(1036);
+emit_16(1103);
+emit_16(1037);
+emit_16(1103);
+emit_16(1036);
+emit_16(1103);
+emit_16(1037);
+emit_16(1104);
+emit_16(1038);
+emit_16(1104);
+emit_16(1037);
+emit_16(1104);
+emit_16(1038);
+emit_16(1105);
+emit_16(1039);
+emit_16(1105);
+emit_16(1038);
+emit_16(1105);
+emit_16(1039);
+emit_16(1106);
+emit_16(1040);
+emit_16(1106);
+emit_16(1039);
+emit_16(1106);
+emit_16(1040);
+emit_16(1107);
+emit_16(1041);
+emit_16(1107);
+emit_16(1040);
+emit_16(1107);
+emit_16(1041);
+emit_16(1108);
+emit_16(1042);
+emit_16(1108);
+emit_16(1041);
+emit_16(1108);
+emit_16(1042);
+emit_16(1109);
+emit_16(1043);
+emit_16(1109);
+emit_16(1042);
+emit_16(1109);
+emit_16(1043);
+emit_16(1110);
+emit_16(1044);
+emit_16(1110);
+emit_16(1043);
+emit_16(1110);
+emit_16(1044);
+emit_16(1111);
+emit_16(1045);
+emit_16(1111);
+emit_16(1044);
+emit_16(1111);
+emit_16(1045);
+emit_16(1112);
+emit_16(1046);
+emit_16(1112);
+emit_16(1045);
+emit_16(1112);
+emit_16(1046);
+emit_16(1113);
+emit_16(1047);
+emit_16(1113);
+emit_16(1046);
+emit_16(1113);
+emit_16(1047);
+emit_16(1114);
+emit_16(1048);
+emit_16(1114);
+emit_16(1047);
+emit_16(1114);
+emit_16(1048);
+emit_16(1115);
+emit_16(1049);
+emit_16(1115);
+emit_16(1048);
+emit_16(1115);
+emit_16(1049);
+emit_16(1116);
+emit_16(1050);
+emit_16(1116);
+emit_16(1049);
+emit_16(1116);
+emit_16(1050);
+emit_16(1117);
+emit_16(1051);
+emit_16(1117);
+emit_16(1050);
+emit_16(1117);
+emit_16(1051);
+emit_16(1118);
+emit_16(1052);
+emit_16(1118);
+emit_16(1051);
+emit_16(1118);
+emit_16(1052);
+emit_16(1119);
+emit_16(1053);
+emit_16(1119);
+emit_16(1052);
+emit_16(1119);
+emit_16(1053);
+emit_16(1120);
+emit_16(1054);
+emit_16(1120);
+emit_16(1053);
+emit_16(1120);
+emit_16(1054);
+emit_16(1121);
+emit_16(1055);
+emit_16(1121);
+emit_16(1054);
+emit_16(1122);
+emit_16(1056);
+emit_16(1123);
+emit_16(1057);
+emit_16(1123);
+emit_16(1056);
+emit_16(1123);
+emit_16(1057);
+emit_16(1124);
+emit_16(1058);
+emit_16(1124);
+emit_16(1057);
+emit_16(1124);
+emit_16(1058);
+emit_16(1125);
+emit_16(1059);
+emit_16(1125);
+emit_16(1058);
+emit_16(1125);
+emit_16(1059);
+emit_16(1126);
+emit_16(1060);
+emit_16(1126);
+emit_16(1059);
+emit_16(1126);
+emit_16(1060);
+emit_16(1127);
+emit_16(1061);
+emit_16(1127);
+emit_16(1060);
+emit_16(1127);
+emit_16(1061);
+emit_16(1128);
+emit_16(1062);
+emit_16(1128);
+emit_16(1061);
+emit_16(1128);
+emit_16(1062);
+emit_16(1129);
+emit_16(1063);
+emit_16(1129);
+emit_16(1062);
+emit_16(1129);
+emit_16(1063);
+emit_16(1130);
+emit_16(1064);
+emit_16(1130);
+emit_16(1063);
+emit_16(1130);
+emit_16(1064);
+emit_16(1131);
+emit_16(1065);
+emit_16(1131);
+emit_16(1064);
+emit_16(1131);
+emit_16(1065);
+emit_16(1132);
+emit_16(1066);
+emit_16(1132);
+emit_16(1065);
+emit_16(1132);
+emit_16(1066);
+emit_16(1133);
+emit_16(1067);
+emit_16(1133);
+emit_16(1066);
+emit_16(1133);
+emit_16(1067);
+emit_16(1134);
+emit_16(1068);
+emit_16(1134);
+emit_16(1067);
+emit_16(1134);
+emit_16(1068);
+emit_16(1135);
+emit_16(1069);
+emit_16(1135);
+emit_16(1068);
+emit_16(1135);
+emit_16(1069);
+emit_16(1136);
+emit_16(1070);
+emit_16(1136);
+emit_16(1069);
+emit_16(1136);
+emit_16(1070);
+emit_16(1137);
+emit_16(1071);
+emit_16(1137);
+emit_16(1070);
+emit_16(1137);
+emit_16(1071);
+emit_16(1138);
+emit_16(1072);
+emit_16(1138);
+emit_16(1071);
+emit_16(1138);
+emit_16(1072);
+emit_16(1139);
+emit_16(1073);
+emit_16(1139);
+emit_16(1072);
+emit_16(1139);
+emit_16(1073);
+emit_16(1140);
+emit_16(1074);
+emit_16(1140);
+emit_16(1073);
+emit_16(1140);
+emit_16(1074);
+emit_16(1141);
+emit_16(1075);
+emit_16(1141);
+emit_16(1074);
+emit_16(1141);
+emit_16(1075);
+emit_16(1142);
+emit_16(1076);
+emit_16(1142);
+emit_16(1075);
+emit_16(1142);
+emit_16(1076);
+emit_16(1143);
+emit_16(1077);
+emit_16(1143);
+emit_16(1076);
+emit_16(1143);
+emit_16(1077);
+emit_16(1144);
+emit_16(1078);
+emit_16(1144);
+emit_16(1077);
+emit_16(1144);
+emit_16(1078);
+emit_16(1145);
+emit_16(1079);
+emit_16(1145);
+emit_16(1078);
+emit_16(1145);
+emit_16(1079);
+emit_16(1146);
+emit_16(1080);
+emit_16(1146);
+emit_16(1079);
+emit_16(1146);
+emit_16(1080);
+emit_16(1147);
+emit_16(1081);
+emit_16(1147);
+emit_16(1080);
+emit_16(1147);
+emit_16(1081);
+emit_16(1148);
+emit_16(1082);
+emit_16(1148);
+emit_16(1081);
+emit_16(1148);
+emit_16(1082);
+emit_16(1149);
+emit_16(1083);
+emit_16(1149);
+emit_16(1082);
+emit_16(1149);
+emit_16(1083);
+emit_16(1150);
+emit_16(1084);
+emit_16(1150);
+emit_16(1083);
+emit_16(1150);
+emit_16(1084);
+emit_16(1151);
+emit_16(1085);
+emit_16(1151);
+emit_16(1084);
+emit_16(1151);
+emit_16(1085);
+emit_16(1152);
+emit_16(1086);
+emit_16(1152);
+emit_16(1085);
+emit_16(1152);
+emit_16(1086);
+emit_16(1153);
+emit_16(1087);
+emit_16(1153);
+emit_16(1086);
+emit_16(1153);
+emit_16(1087);
+emit_16(1154);
+emit_16(1088);
+emit_16(1154);
+emit_16(1087);
+emit_16(1154);
+emit_16(1088);
+emit_16(1155);
+emit_16(1089);
+emit_16(1155);
+emit_16(1088);
+emit_16(1155);
+emit_16(1089);
+emit_16(1156);
+emit_16(1090);
+emit_16(1156);
+emit_16(1089);
+emit_16(1156);
+emit_16(1090);
+emit_16(1157);
+emit_16(1091);
+emit_16(1157);
+emit_16(1090);
+emit_16(1157);
+emit_16(1091);
+emit_16(1158);
+emit_16(1092);
+emit_16(1158);
+emit_16(1091);
+emit_16(1158);
+emit_16(1092);
+emit_16(1159);
+emit_16(1093);
+emit_16(1159);
+emit_16(1092);
+emit_16(1159);
+emit_16(1093);
+emit_16(1160);
+emit_16(1094);
+emit_16(1160);
+emit_16(1093);
+emit_16(1160);
+emit_16(1094);
+emit_16(1161);
+emit_16(1095);
+emit_16(1161);
+emit_16(1094);
+emit_16(1161);
+emit_16(1095);
+emit_16(1162);
+emit_16(1096);
+emit_16(1162);
+emit_16(1095);
+emit_16(1162);
+emit_16(1096);
+emit_16(1163);
+emit_16(1097);
+emit_16(1163);
+emit_16(1096);
+emit_16(1163);
+emit_16(1097);
+emit_16(1164);
+emit_16(1098);
+emit_16(1164);
+emit_16(1097);
+emit_16(1164);
+emit_16(1098);
+emit_16(1165);
+emit_16(1099);
+emit_16(1165);
+emit_16(1098);
+emit_16(1165);
+emit_16(1099);
+emit_16(1166);
+emit_16(1100);
+emit_16(1166);
+emit_16(1099);
+emit_16(1166);
+emit_16(1100);
+emit_16(1167);
+emit_16(1101);
+emit_16(1167);
+emit_16(1100);
+emit_16(1167);
+emit_16(1101);
+emit_16(1168);
+emit_16(1102);
+emit_16(1168);
+emit_16(1101);
+emit_16(1168);
+emit_16(1102);
+emit_16(1169);
+emit_16(1103);
+emit_16(1169);
+emit_16(1102);
+emit_16(1169);
+emit_16(1103);
+emit_16(1170);
+emit_16(1104);
+emit_16(1170);
+emit_16(1103);
+emit_16(1170);
+emit_16(1104);
+emit_16(1171);
+emit_16(1105);
+emit_16(1171);
+emit_16(1104);
+emit_16(1171);
+emit_16(1105);
+emit_16(1172);
+emit_16(1106);
+emit_16(1172);
+emit_16(1105);
+emit_16(1172);
+emit_16(1106);
+emit_16(1173);
+emit_16(1107);
+emit_16(1173);
+emit_16(1106);
+emit_16(1173);
+emit_16(1107);
+emit_16(1174);
+emit_16(1108);
+emit_16(1174);
+emit_16(1107);
+emit_16(1174);
+emit_16(1108);
+emit_16(1175);
+emit_16(1109);
+emit_16(1175);
+emit_16(1108);
+emit_16(1175);
+emit_16(1109);
+emit_16(1176);
+emit_16(1110);
+emit_16(1176);
+emit_16(1109);
+emit_16(1176);
+emit_16(1110);
+emit_16(1177);
+emit_16(1111);
+emit_16(1177);
+emit_16(1110);
+emit_16(1177);
+emit_16(1111);
+emit_16(1178);
+emit_16(1112);
+emit_16(1178);
+emit_16(1111);
+emit_16(1178);
+emit_16(1112);
+emit_16(1179);
+emit_16(1113);
+emit_16(1179);
+emit_16(1112);
+emit_16(1179);
+emit_16(1113);
+emit_16(1180);
+emit_16(1114);
+emit_16(1180);
+emit_16(1113);
+emit_16(1180);
+emit_16(1114);
+emit_16(1181);
+emit_16(1115);
+emit_16(1181);
+emit_16(1114);
+emit_16(1181);
+emit_16(1115);
+emit_16(1182);
+emit_16(1116);
+emit_16(1182);
+emit_16(1115);
+emit_16(1182);
+emit_16(1116);
+emit_16(1183);
+emit_16(1117);
+emit_16(1183);
+emit_16(1116);
+emit_16(1183);
+emit_16(1117);
+emit_16(1184);
+emit_16(1118);
+emit_16(1184);
+emit_16(1117);
+emit_16(1184);
+emit_16(1118);
+emit_16(1185);
+emit_16(1119);
+emit_16(1185);
+emit_16(1118);
+emit_16(1185);
+emit_16(1119);
+emit_16(1186);
+emit_16(1120);
+emit_16(1186);
+emit_16(1119);
+emit_16(1186);
+emit_16(1120);
+emit_16(1187);
+emit_16(1121);
+emit_16(1187);
+emit_16(1120);
+emit_16(1188);
+emit_16(1122);
+emit_16(1189);
+emit_16(1123);
+emit_16(1189);
+emit_16(1122);
+emit_16(1189);
+emit_16(1123);
+emit_16(1190);
+emit_16(1124);
+emit_16(1190);
+emit_16(1123);
+emit_16(1190);
+emit_16(1124);
+emit_16(1191);
+emit_16(1125);
+emit_16(1191);
+emit_16(1124);
+emit_16(1191);
+emit_16(1125);
+emit_16(1192);
+emit_16(1126);
+emit_16(1192);
+emit_16(1125);
+emit_16(1192);
+emit_16(1126);
+emit_16(1193);
+emit_16(1127);
+emit_16(1193);
+emit_16(1126);
+emit_16(1193);
+emit_16(1127);
+emit_16(1194);
+emit_16(1128);
+emit_16(1194);
+emit_16(1127);
+emit_16(1194);
+emit_16(1128);
+emit_16(1195);
+emit_16(1129);
+emit_16(1195);
+emit_16(1128);
+emit_16(1195);
+emit_16(1129);
+emit_16(1196);
+emit_16(1130);
+emit_16(1196);
+emit_16(1129);
+emit_16(1196);
+emit_16(1130);
+emit_16(1197);
+emit_16(1131);
+emit_16(1197);
+emit_16(1130);
+emit_16(1197);
+emit_16(1131);
+emit_16(1198);
+emit_16(1132);
+emit_16(1198);
+emit_16(1131);
+emit_16(1198);
+emit_16(1132);
+emit_16(1199);
+emit_16(1133);
+emit_16(1199);
+emit_16(1132);
+emit_16(1199);
+emit_16(1133);
+emit_16(1200);
+emit_16(1134);
+emit_16(1200);
+emit_16(1133);
+emit_16(1200);
+emit_16(1134);
+emit_16(1201);
+emit_16(1135);
+emit_16(1201);
+emit_16(1134);
+emit_16(1201);
+emit_16(1135);
+emit_16(1202);
+emit_16(1136);
+emit_16(1202);
+emit_16(1135);
+emit_16(1202);
+emit_16(1136);
+emit_16(1203);
+emit_16(1137);
+emit_16(1203);
+emit_16(1136);
+emit_16(1203);
+emit_16(1137);
+emit_16(1204);
+emit_16(1138);
+emit_16(1204);
+emit_16(1137);
+emit_16(1204);
+emit_16(1138);
+emit_16(1205);
+emit_16(1139);
+emit_16(1205);
+emit_16(1138);
+emit_16(1205);
+emit_16(1139);
+emit_16(1206);
+emit_16(1140);
+emit_16(1206);
+emit_16(1139);
+emit_16(1206);
+emit_16(1140);
+emit_16(1207);
+emit_16(1141);
+emit_16(1207);
+emit_16(1140);
+emit_16(1207);
+emit_16(1141);
+emit_16(1208);
+emit_16(1142);
+emit_16(1208);
+emit_16(1141);
+emit_16(1208);
+emit_16(1142);
+emit_16(1209);
+emit_16(1143);
+emit_16(1209);
+emit_16(1142);
+emit_16(1209);
+emit_16(1143);
+emit_16(1210);
+emit_16(1144);
+emit_16(1210);
+emit_16(1143);
+emit_16(1210);
+emit_16(1144);
+emit_16(1211);
+emit_16(1145);
+emit_16(1211);
+emit_16(1144);
+emit_16(1211);
+emit_16(1145);
+emit_16(1212);
+emit_16(1146);
+emit_16(1212);
+emit_16(1145);
+emit_16(1212);
+emit_16(1146);
+emit_16(1213);
+emit_16(1147);
+emit_16(1213);
+emit_16(1146);
+emit_16(1213);
+emit_16(1147);
+emit_16(1214);
+emit_16(1148);
+emit_16(1214);
+emit_16(1147);
+emit_16(1214);
+emit_16(1148);
+emit_16(1215);
+emit_16(1149);
+emit_16(1215);
+emit_16(1148);
+emit_16(1215);
+emit_16(1149);
+emit_16(1216);
+emit_16(1150);
+emit_16(1216);
+emit_16(1149);
+emit_16(1216);
+emit_16(1150);
+emit_16(1217);
+emit_16(1151);
+emit_16(1217);
+emit_16(1150);
+emit_16(1217);
+emit_16(1151);
+emit_16(1218);
+emit_16(1152);
+emit_16(1218);
+emit_16(1151);
+emit_16(1218);
+emit_16(1152);
+emit_16(1219);
+emit_16(1153);
+emit_16(1219);
+emit_16(1152);
+emit_16(1219);
+emit_16(1153);
+emit_16(1220);
+emit_16(1154);
+emit_16(1220);
+emit_16(1153);
+emit_16(1220);
+emit_16(1154);
+emit_16(1221);
+emit_16(1155);
+emit_16(1221);
+emit_16(1154);
+emit_16(1221);
+emit_16(1155);
+emit_16(1222);
+emit_16(1156);
+emit_16(1222);
+emit_16(1155);
+emit_16(1222);
+emit_16(1156);
+emit_16(1223);
+emit_16(1157);
+emit_16(1223);
+emit_16(1156);
+emit_16(1223);
+emit_16(1157);
+emit_16(1224);
+emit_16(1158);
+emit_16(1224);
+emit_16(1157);
+emit_16(1224);
+emit_16(1158);
+emit_16(1225);
+emit_16(1159);
+emit_16(1225);
+emit_16(1158);
+emit_16(1225);
+emit_16(1159);
+emit_16(1226);
+emit_16(1160);
+emit_16(1226);
+emit_16(1159);
+emit_16(1226);
+emit_16(1160);
+emit_16(1227);
+emit_16(1161);
+emit_16(1227);
+emit_16(1160);
+emit_16(1227);
+emit_16(1161);
+emit_16(1228);
+emit_16(1162);
+emit_16(1228);
+emit_16(1161);
+emit_16(1228);
+emit_16(1162);
+emit_16(1229);
+emit_16(1163);
+emit_16(1229);
+emit_16(1162);
+emit_16(1229);
+emit_16(1163);
+emit_16(1230);
+emit_16(1164);
+emit_16(1230);
+emit_16(1163);
+emit_16(1230);
+emit_16(1164);
+emit_16(1231);
+emit_16(1165);
+emit_16(1231);
+emit_16(1164);
+emit_16(1231);
+emit_16(1165);
+emit_16(1232);
+emit_16(1166);
+emit_16(1232);
+emit_16(1165);
+emit_16(1232);
+emit_16(1166);
+emit_16(1233);
+emit_16(1167);
+emit_16(1233);
+emit_16(1166);
+emit_16(1233);
+emit_16(1167);
+emit_16(1234);
+emit_16(1168);
+emit_16(1234);
+emit_16(1167);
+emit_16(1234);
+emit_16(1168);
+emit_16(1235);
+emit_16(1169);
+emit_16(1235);
+emit_16(1168);
+emit_16(1235);
+emit_16(1169);
+emit_16(1236);
+emit_16(1170);
+emit_16(1236);
+emit_16(1169);
+emit_16(1236);
+emit_16(1170);
+emit_16(1237);
+emit_16(1171);
+emit_16(1237);
+emit_16(1170);
+emit_16(1237);
+emit_16(1171);
+emit_16(1238);
+emit_16(1172);
+emit_16(1238);
+emit_16(1171);
+emit_16(1238);
+emit_16(1172);
+emit_16(1239);
+emit_16(1173);
+emit_16(1239);
+emit_16(1172);
+emit_16(1239);
+emit_16(1173);
+emit_16(1240);
+emit_16(1174);
+emit_16(1240);
+emit_16(1173);
+emit_16(1240);
+emit_16(1174);
+emit_16(1241);
+emit_16(1175);
+emit_16(1241);
+emit_16(1174);
+emit_16(1241);
+emit_16(1175);
+emit_16(1242);
+emit_16(1176);
+emit_16(1242);
+emit_16(1175);
+emit_16(1242);
+emit_16(1176);
+emit_16(1243);
+emit_16(1177);
+emit_16(1243);
+emit_16(1176);
+emit_16(1243);
+emit_16(1177);
+emit_16(1244);
+emit_16(1178);
+emit_16(1244);
+emit_16(1177);
+emit_16(1244);
+emit_16(1178);
+emit_16(1245);
+emit_16(1179);
+emit_16(1245);
+emit_16(1178);
+emit_16(1245);
+emit_16(1179);
+emit_16(1246);
+emit_16(1180);
+emit_16(1246);
+emit_16(1179);
+emit_16(1246);
+emit_16(1180);
+emit_16(1247);
+emit_16(1181);
+emit_16(1247);
+emit_16(1180);
+emit_16(1247);
+emit_16(1181);
+emit_16(1248);
+emit_16(1182);
+emit_16(1248);
+emit_16(1181);
+emit_16(1248);
+emit_16(1182);
+emit_16(1249);
+emit_16(1183);
+emit_16(1249);
+emit_16(1182);
+emit_16(1249);
+emit_16(1183);
+emit_16(1250);
+emit_16(1184);
+emit_16(1250);
+emit_16(1183);
+emit_16(1250);
+emit_16(1184);
+emit_16(1251);
+emit_16(1185);
+emit_16(1251);
+emit_16(1184);
+emit_16(1251);
+emit_16(1185);
+emit_16(1252);
+emit_16(1186);
+emit_16(1252);
+emit_16(1185);
+emit_16(1252);
+emit_16(1186);
+emit_16(1253);
+emit_16(1187);
+emit_16(1253);
+emit_16(1186);
+emit_16(1254);
+emit_16(1188);
+emit_16(1255);
+emit_16(1189);
+emit_16(1255);
+emit_16(1188);
+emit_16(1255);
+emit_16(1189);
+emit_16(1256);
+emit_16(1190);
+emit_16(1256);
+emit_16(1189);
+emit_16(1256);
+emit_16(1190);
+emit_16(1257);
+emit_16(1191);
+emit_16(1257);
+emit_16(1190);
+emit_16(1257);
+emit_16(1191);
+emit_16(1258);
+emit_16(1192);
+emit_16(1258);
+emit_16(1191);
+emit_16(1258);
+emit_16(1192);
+emit_16(1259);
+emit_16(1193);
+emit_16(1259);
+emit_16(1192);
+emit_16(1259);
+emit_16(1193);
+emit_16(1260);
+emit_16(1194);
+emit_16(1260);
+emit_16(1193);
+emit_16(1260);
+emit_16(1194);
+emit_16(1261);
+emit_16(1195);
+emit_16(1261);
+emit_16(1194);
+emit_16(1261);
+emit_16(1195);
+emit_16(1262);
+emit_16(1196);
+emit_16(1262);
+emit_16(1195);
+emit_16(1262);
+emit_16(1196);
+emit_16(1263);
+emit_16(1197);
+emit_16(1263);
+emit_16(1196);
+emit_16(1263);
+emit_16(1197);
+emit_16(1264);
+emit_16(1198);
+emit_16(1264);
+emit_16(1197);
+emit_16(1264);
+emit_16(1198);
+emit_16(1265);
+emit_16(1199);
+emit_16(1265);
+emit_16(1198);
+emit_16(1265);
+emit_16(1199);
+emit_16(1266);
+emit_16(1200);
+emit_16(1266);
+emit_16(1199);
+emit_16(1266);
+emit_16(1200);
+emit_16(1267);
+emit_16(1201);
+emit_16(1267);
+emit_16(1200);
+emit_16(1267);
+emit_16(1201);
+emit_16(1268);
+emit_16(1202);
+emit_16(1268);
+emit_16(1201);
+emit_16(1268);
+emit_16(1202);
+emit_16(1269);
+emit_16(1203);
+emit_16(1269);
+emit_16(1202);
+emit_16(1269);
+emit_16(1203);
+emit_16(1270);
+emit_16(1204);
+emit_16(1270);
+emit_16(1203);
+emit_16(1270);
+emit_16(1204);
+emit_16(1271);
+emit_16(1205);
+emit_16(1271);
+emit_16(1204);
+emit_16(1271);
+emit_16(1205);
+emit_16(1272);
+emit_16(1206);
+emit_16(1272);
+emit_16(1205);
+emit_16(1272);
+emit_16(1206);
+emit_16(1273);
+emit_16(1207);
+emit_16(1273);
+emit_16(1206);
+emit_16(1273);
+emit_16(1207);
+emit_16(1274);
+emit_16(1208);
+emit_16(1274);
+emit_16(1207);
+emit_16(1274);
+emit_16(1208);
+emit_16(1275);
+emit_16(1209);
+emit_16(1275);
+emit_16(1208);
+emit_16(1275);
+emit_16(1209);
+emit_16(1276);
+emit_16(1210);
+emit_16(1276);
+emit_16(1209);
+emit_16(1276);
+emit_16(1210);
+emit_16(1277);
+emit_16(1211);
+emit_16(1277);
+emit_16(1210);
+emit_16(1277);
+emit_16(1211);
+emit_16(1278);
+emit_16(1212);
+emit_16(1278);
+emit_16(1211);
+emit_16(1278);
+emit_16(1212);
+emit_16(1279);
+emit_16(1213);
+emit_16(1279);
+emit_16(1212);
+emit_16(1279);
+emit_16(1213);
+emit_16(1280);
+emit_16(1214);
+emit_16(1280);
+emit_16(1213);
+emit_16(1280);
+emit_16(1214);
+emit_16(1281);
+emit_16(1215);
+emit_16(1281);
+emit_16(1214);
+emit_16(1281);
+emit_16(1215);
+emit_16(1282);
+emit_16(1216);
+emit_16(1282);
+emit_16(1215);
+emit_16(1282);
+emit_16(1216);
+emit_16(1283);
+emit_16(1217);
+emit_16(1283);
+emit_16(1216);
+emit_16(1283);
+emit_16(1217);
+emit_16(1284);
+emit_16(1218);
+emit_16(1284);
+emit_16(1217);
+emit_16(1284);
+emit_16(1218);
+emit_16(1285);
+emit_16(1219);
+emit_16(1285);
+emit_16(1218);
+emit_16(1285);
+emit_16(1219);
+emit_16(1286);
+emit_16(1220);
+emit_16(1286);
+emit_16(1219);
+emit_16(1286);
+emit_16(1220);
+emit_16(1287);
+emit_16(1221);
+emit_16(1287);
+emit_16(1220);
+emit_16(1287);
+emit_16(1221);
+emit_16(1288);
+emit_16(1222);
+emit_16(1288);
+emit_16(1221);
+emit_16(1288);
+emit_16(1222);
+emit_16(1289);
+emit_16(1223);
+emit_16(1289);
+emit_16(1222);
+emit_16(1289);
+emit_16(1223);
+emit_16(1290);
+emit_16(1224);
+emit_16(1290);
+emit_16(1223);
+emit_16(1290);
+emit_16(1224);
+emit_16(1291);
+emit_16(1225);
+emit_16(1291);
+emit_16(1224);
+emit_16(1291);
+emit_16(1225);
+emit_16(1292);
+emit_16(1226);
+emit_16(1292);
+emit_16(1225);
+emit_16(1292);
+emit_16(1226);
+emit_16(1293);
+emit_16(1227);
+emit_16(1293);
+emit_16(1226);
+emit_16(1293);
+emit_16(1227);
+emit_16(1294);
+emit_16(1228);
+emit_16(1294);
+emit_16(1227);
+emit_16(1294);
+emit_16(1228);
+emit_16(1295);
+emit_16(1229);
+emit_16(1295);
+emit_16(1228);
+emit_16(1295);
+emit_16(1229);
+emit_16(1296);
+emit_16(1230);
+emit_16(1296);
+emit_16(1229);
+emit_16(1296);
+emit_16(1230);
+emit_16(1297);
+emit_16(1231);
+emit_16(1297);
+emit_16(1230);
+emit_16(1297);
+emit_16(1231);
+emit_16(1298);
+emit_16(1232);
+emit_16(1298);
+emit_16(1231);
+emit_16(1298);
+emit_16(1232);
+emit_16(1299);
+emit_16(1233);
+emit_16(1299);
+emit_16(1232);
+emit_16(1299);
+emit_16(1233);
+emit_16(1300);
+emit_16(1234);
+emit_16(1300);
+emit_16(1233);
+emit_16(1300);
+emit_16(1234);
+emit_16(1301);
+emit_16(1235);
+emit_16(1301);
+emit_16(1234);
+emit_16(1301);
+emit_16(1235);
+emit_16(1302);
+emit_16(1236);
+emit_16(1302);
+emit_16(1235);
+emit_16(1302);
+emit_16(1236);
+emit_16(1303);
+emit_16(1237);
+emit_16(1303);
+emit_16(1236);
+emit_16(1303);
+emit_16(1237);
+emit_16(1304);
+emit_16(1238);
+emit_16(1304);
+emit_16(1237);
+emit_16(1304);
+emit_16(1238);
+emit_16(1305);
+emit_16(1239);
+emit_16(1305);
+emit_16(1238);
+emit_16(1305);
+emit_16(1239);
+emit_16(1306);
+emit_16(1240);
+emit_16(1306);
+emit_16(1239);
+emit_16(1306);
+emit_16(1240);
+emit_16(1307);
+emit_16(1241);
+emit_16(1307);
+emit_16(1240);
+emit_16(1307);
+emit_16(1241);
+emit_16(1308);
+emit_16(1242);
+emit_16(1308);
+emit_16(1241);
+emit_16(1308);
+emit_16(1242);
+emit_16(1309);
+emit_16(1243);
+emit_16(1309);
+emit_16(1242);
+emit_16(1309);
+emit_16(1243);
+emit_16(1310);
+emit_16(1244);
+emit_16(1310);
+emit_16(1243);
+emit_16(1310);
+emit_16(1244);
+emit_16(1311);
+emit_16(1245);
+emit_16(1311);
+emit_16(1244);
+emit_16(1311);
+emit_16(1245);
+emit_16(1312);
+emit_16(1246);
+emit_16(1312);
+emit_16(1245);
+emit_16(1312);
+emit_16(1246);
+emit_16(1313);
+emit_16(1247);
+emit_16(1313);
+emit_16(1246);
+emit_16(1313);
+emit_16(1247);
+emit_16(1314);
+emit_16(1248);
+emit_16(1314);
+emit_16(1247);
+emit_16(1314);
+emit_16(1248);
+emit_16(1315);
+emit_16(1249);
+emit_16(1315);
+emit_16(1248);
+emit_16(1315);
+emit_16(1249);
+emit_16(1316);
+emit_16(1250);
+emit_16(1316);
+emit_16(1249);
+emit_16(1316);
+emit_16(1250);
+emit_16(1317);
+emit_16(1251);
+emit_16(1317);
+emit_16(1250);
+emit_16(1317);
+emit_16(1251);
+emit_16(1318);
+emit_16(1252);
+emit_16(1318);
+emit_16(1251);
+emit_16(1318);
+emit_16(1252);
+emit_16(1319);
+emit_16(1253);
+emit_16(1319);
+emit_16(1252);
+emit_16(1320);
+emit_16(1254);
+emit_16(1321);
+emit_16(1255);
+emit_16(1321);
+emit_16(1254);
+emit_16(1321);
+emit_16(1255);
+emit_16(1322);
+emit_16(1256);
+emit_16(1322);
+emit_16(1255);
+emit_16(1322);
+emit_16(1256);
+emit_16(1323);
+emit_16(1257);
+emit_16(1323);
+emit_16(1256);
+emit_16(1323);
+emit_16(1257);
+emit_16(1324);
+emit_16(1258);
+emit_16(1324);
+emit_16(1257);
+emit_16(1324);
+emit_16(1258);
+emit_16(1325);
+emit_16(1259);
+emit_16(1325);
+emit_16(1258);
+emit_16(1325);
+emit_16(1259);
+emit_16(1326);
+emit_16(1260);
+emit_16(1326);
+emit_16(1259);
+emit_16(1326);
+emit_16(1260);
+emit_16(1327);
+emit_16(1261);
+emit_16(1327);
+emit_16(1260);
+emit_16(1327);
+emit_16(1261);
+emit_16(1328);
+emit_16(1262);
+emit_16(1328);
+emit_16(1261);
+emit_16(1328);
+emit_16(1262);
+emit_16(1329);
+emit_16(1263);
+emit_16(1329);
+emit_16(1262);
+emit_16(1329);
+emit_16(1263);
+emit_16(1330);
+emit_16(1264);
+emit_16(1330);
+emit_16(1263);
+emit_16(1330);
+emit_16(1264);
+emit_16(1331);
+emit_16(1265);
+emit_16(1331);
+emit_16(1264);
+emit_16(1331);
+emit_16(1265);
+emit_16(1332);
+emit_16(1266);
+emit_16(1332);
+emit_16(1265);
+emit_16(1332);
+emit_16(1266);
+emit_16(1333);
+emit_16(1267);
+emit_16(1333);
+emit_16(1266);
+emit_16(1333);
+emit_16(1267);
+emit_16(1334);
+emit_16(1268);
+emit_16(1334);
+emit_16(1267);
+emit_16(1334);
+emit_16(1268);
+emit_16(1335);
+emit_16(1269);
+emit_16(1335);
+emit_16(1268);
+emit_16(1335);
+emit_16(1269);
+emit_16(1336);
+emit_16(1270);
+emit_16(1336);
+emit_16(1269);
+emit_16(1336);
+emit_16(1270);
+emit_16(1337);
+emit_16(1271);
+emit_16(1337);
+emit_16(1270);
+emit_16(1337);
+emit_16(1271);
+emit_16(1338);
+emit_16(1272);
+emit_16(1338);
+emit_16(1271);
+emit_16(1338);
+emit_16(1272);
+emit_16(1339);
+emit_16(1273);
+emit_16(1339);
+emit_16(1272);
+emit_16(1339);
+emit_16(1273);
+emit_16(1340);
+emit_16(1274);
+emit_16(1340);
+emit_16(1273);
+emit_16(1340);
+emit_16(1274);
+emit_16(1341);
+emit_16(1275);
+emit_16(1341);
+emit_16(1274);
+emit_16(1341);
+emit_16(1275);
+emit_16(1342);
+emit_16(1276);
+emit_16(1342);
+emit_16(1275);
+emit_16(1342);
+emit_16(1276);
+emit_16(1343);
+emit_16(1277);
+emit_16(1343);
+emit_16(1276);
+emit_16(1343);
+emit_16(1277);
+emit_16(1344);
+emit_16(1278);
+emit_16(1344);
+emit_16(1277);
+emit_16(1344);
+emit_16(1278);
+emit_16(1345);
+emit_16(1279);
+emit_16(1345);
+emit_16(1278);
+emit_16(1345);
+emit_16(1279);
+emit_16(1346);
+emit_16(1280);
+emit_16(1346);
+emit_16(1279);
+emit_16(1346);
+emit_16(1280);
+emit_16(1347);
+emit_16(1281);
+emit_16(1347);
+emit_16(1280);
+emit_16(1347);
+emit_16(1281);
+emit_16(1348);
+emit_16(1282);
+emit_16(1348);
+emit_16(1281);
+emit_16(1348);
+emit_16(1282);
+emit_16(1349);
+emit_16(1283);
+emit_16(1349);
+emit_16(1282);
+emit_16(1349);
+emit_16(1283);
+emit_16(1350);
+emit_16(1284);
+emit_16(1350);
+emit_16(1283);
+emit_16(1350);
+emit_16(1284);
+emit_16(1351);
+emit_16(1285);
+emit_16(1351);
+emit_16(1284);
+emit_16(1351);
+emit_16(1285);
+emit_16(1352);
+emit_16(1286);
+emit_16(1352);
+emit_16(1285);
+emit_16(1352);
+emit_16(1286);
+emit_16(1353);
+emit_16(1287);
+emit_16(1353);
+emit_16(1286);
+emit_16(1353);
+emit_16(1287);
+emit_16(1354);
+emit_16(1288);
+emit_16(1354);
+emit_16(1287);
+emit_16(1354);
+emit_16(1288);
+emit_16(1355);
+emit_16(1289);
+emit_16(1355);
+emit_16(1288);
+emit_16(1355);
+emit_16(1289);
+emit_16(1356);
+emit_16(1290);
+emit_16(1356);
+emit_16(1289);
+emit_16(1356);
+emit_16(1290);
+emit_16(1357);
+emit_16(1291);
+emit_16(1357);
+emit_16(1290);
+emit_16(1357);
+emit_16(1291);
+emit_16(1358);
+emit_16(1292);
+emit_16(1358);
+emit_16(1291);
+emit_16(1358);
+emit_16(1292);
+emit_16(1359);
+emit_16(1293);
+emit_16(1359);
+emit_16(1292);
+emit_16(1359);
+emit_16(1293);
+emit_16(1360);
+emit_16(1294);
+emit_16(1360);
+emit_16(1293);
+emit_16(1360);
+emit_16(1294);
+emit_16(1361);
+emit_16(1295);
+emit_16(1361);
+emit_16(1294);
+emit_16(1361);
+emit_16(1295);
+emit_16(1362);
+emit_16(1296);
+emit_16(1362);
+emit_16(1295);
+emit_16(1362);
+emit_16(1296);
+emit_16(1363);
+emit_16(1297);
+emit_16(1363);
+emit_16(1296);
+emit_16(1363);
+emit_16(1297);
+emit_16(1364);
+emit_16(1298);
+emit_16(1364);
+emit_16(1297);
+emit_16(1364);
+emit_16(1298);
+emit_16(1365);
+emit_16(1299);
+emit_16(1365);
+emit_16(1298);
+emit_16(1365);
+emit_16(1299);
+emit_16(1366);
+emit_16(1300);
+emit_16(1366);
+emit_16(1299);
+emit_16(1366);
+emit_16(1300);
+emit_16(1367);
+emit_16(1301);
+emit_16(1367);
+emit_16(1300);
+emit_16(1367);
+emit_16(1301);
+emit_16(1368);
+emit_16(1302);
+emit_16(1368);
+emit_16(1301);
+emit_16(1368);
+emit_16(1302);
+emit_16(1369);
+emit_16(1303);
+emit_16(1369);
+emit_16(1302);
+emit_16(1369);
+emit_16(1303);
+emit_16(1370);
+emit_16(1304);
+emit_16(1370);
+emit_16(1303);
+emit_16(1370);
+emit_16(1304);
+emit_16(1371);
+emit_16(1305);
+emit_16(1371);
+emit_16(1304);
+emit_16(1371);
+emit_16(1305);
+emit_16(1372);
+emit_16(1306);
+emit_16(1372);
+emit_16(1305);
+emit_16(1372);
+emit_16(1306);
+emit_16(1373);
+emit_16(1307);
+emit_16(1373);
+emit_16(1306);
+emit_16(1373);
+emit_16(1307);
+emit_16(1374);
+emit_16(1308);
+emit_16(1374);
+emit_16(1307);
+emit_16(1374);
+emit_16(1308);
+emit_16(1375);
+emit_16(1309);
+emit_16(1375);
+emit_16(1308);
+emit_16(1375);
+emit_16(1309);
+emit_16(1376);
+emit_16(1310);
+emit_16(1376);
+emit_16(1309);
+emit_16(1376);
+emit_16(1310);
+emit_16(1377);
+emit_16(1311);
+emit_16(1377);
+emit_16(1310);
+emit_16(1377);
+emit_16(1311);
+emit_16(1378);
+emit_16(1312);
+emit_16(1378);
+emit_16(1311);
+emit_16(1378);
+emit_16(1312);
+emit_16(1379);
+emit_16(1313);
+emit_16(1379);
+emit_16(1312);
+emit_16(1379);
+emit_16(1313);
+emit_16(1380);
+emit_16(1314);
+emit_16(1380);
+emit_16(1313);
+emit_16(1380);
+emit_16(1314);
+emit_16(1381);
+emit_16(1315);
+emit_16(1381);
+emit_16(1314);
+emit_16(1381);
+emit_16(1315);
+emit_16(1382);
+emit_16(1316);
+emit_16(1382);
+emit_16(1315);
+emit_16(1382);
+emit_16(1316);
+emit_16(1383);
+emit_16(1317);
+emit_16(1383);
+emit_16(1316);
+emit_16(1383);
+emit_16(1317);
+emit_16(1384);
+emit_16(1318);
+emit_16(1384);
+emit_16(1317);
+emit_16(1384);
+emit_16(1318);
+emit_16(1385);
+emit_16(1319);
+emit_16(1385);
+emit_16(1318);
+emit_16(1386);
+emit_16(1320);
+emit_16(1387);
+emit_16(1321);
+emit_16(1387);
+emit_16(1320);
+emit_16(1387);
+emit_16(1321);
+emit_16(1388);
+emit_16(1322);
+emit_16(1388);
+emit_16(1321);
+emit_16(1388);
+emit_16(1322);
+emit_16(1389);
+emit_16(1323);
+emit_16(1389);
+emit_16(1322);
+emit_16(1389);
+emit_16(1323);
+emit_16(1390);
+emit_16(1324);
+emit_16(1390);
+emit_16(1323);
+emit_16(1390);
+emit_16(1324);
+emit_16(1391);
+emit_16(1325);
+emit_16(1391);
+emit_16(1324);
+emit_16(1391);
+emit_16(1325);
+emit_16(1392);
+emit_16(1326);
+emit_16(1392);
+emit_16(1325);
+emit_16(1392);
+emit_16(1326);
+emit_16(1393);
+emit_16(1327);
+emit_16(1393);
+emit_16(1326);
+emit_16(1393);
+emit_16(1327);
+emit_16(1394);
+emit_16(1328);
+emit_16(1394);
+emit_16(1327);
+emit_16(1394);
+emit_16(1328);
+emit_16(1395);
+emit_16(1329);
+emit_16(1395);
+emit_16(1328);
+emit_16(1395);
+emit_16(1329);
+emit_16(1396);
+emit_16(1330);
+emit_16(1396);
+emit_16(1329);
+emit_16(1396);
+emit_16(1330);
+emit_16(1397);
+emit_16(1331);
+emit_16(1397);
+emit_16(1330);
+emit_16(1397);
+emit_16(1331);
+emit_16(1398);
+emit_16(1332);
+emit_16(1398);
+emit_16(1331);
+emit_16(1398);
+emit_16(1332);
+emit_16(1399);
+emit_16(1333);
+emit_16(1399);
+emit_16(1332);
+emit_16(1399);
+emit_16(1333);
+emit_16(1400);
+emit_16(1334);
+emit_16(1400);
+emit_16(1333);
+emit_16(1400);
+emit_16(1334);
+emit_16(1401);
+emit_16(1335);
+emit_16(1401);
+emit_16(1334);
+emit_16(1401);
+emit_16(1335);
+emit_16(1402);
+emit_16(1336);
+emit_16(1402);
+emit_16(1335);
+emit_16(1402);
+emit_16(1336);
+emit_16(1403);
+emit_16(1337);
+emit_16(1403);
+emit_16(1336);
+emit_16(1403);
+emit_16(1337);
+emit_16(1404);
+emit_16(1338);
+emit_16(1404);
+emit_16(1337);
+emit_16(1404);
+emit_16(1338);
+emit_16(1405);
+emit_16(1339);
+emit_16(1405);
+emit_16(1338);
+emit_16(1405);
+emit_16(1339);
+emit_16(1406);
+emit_16(1340);
+emit_16(1406);
+emit_16(1339);
+emit_16(1406);
+emit_16(1340);
+emit_16(1407);
+emit_16(1341);
+emit_16(1407);
+emit_16(1340);
+emit_16(1407);
+emit_16(1341);
+emit_16(1408);
+emit_16(1342);
+emit_16(1408);
+emit_16(1341);
+emit_16(1408);
+emit_16(1342);
+emit_16(1409);
+emit_16(1343);
+emit_16(1409);
+emit_16(1342);
+emit_16(1409);
+emit_16(1343);
+emit_16(1410);
+emit_16(1344);
+emit_16(1410);
+emit_16(1343);
+emit_16(1410);
+emit_16(1344);
+emit_16(1411);
+emit_16(1345);
+emit_16(1411);
+emit_16(1344);
+emit_16(1411);
+emit_16(1345);
+emit_16(1412);
+emit_16(1346);
+emit_16(1412);
+emit_16(1345);
+emit_16(1412);
+emit_16(1346);
+emit_16(1413);
+emit_16(1347);
+emit_16(1413);
+emit_16(1346);
+emit_16(1413);
+emit_16(1347);
+emit_16(1414);
+emit_16(1348);
+emit_16(1414);
+emit_16(1347);
+emit_16(1414);
+emit_16(1348);
+emit_16(1415);
+emit_16(1349);
+emit_16(1415);
+emit_16(1348);
+emit_16(1415);
+emit_16(1349);
+emit_16(1416);
+emit_16(1350);
+emit_16(1416);
+emit_16(1349);
+emit_16(1416);
+emit_16(1350);
+emit_16(1417);
+emit_16(1351);
+emit_16(1417);
+emit_16(1350);
+emit_16(1417);
+emit_16(1351);
+emit_16(1418);
+emit_16(1352);
+emit_16(1418);
+emit_16(1351);
+emit_16(1418);
+emit_16(1352);
+emit_16(1419);
+emit_16(1353);
+emit_16(1419);
+emit_16(1352);
+emit_16(1419);
+emit_16(1353);
+emit_16(1420);
+emit_16(1354);
+emit_16(1420);
+emit_16(1353);
+emit_16(1420);
+emit_16(1354);
+emit_16(1421);
+emit_16(1355);
+emit_16(1421);
+emit_16(1354);
+emit_16(1421);
+emit_16(1355);
+emit_16(1422);
+emit_16(1356);
+emit_16(1422);
+emit_16(1355);
+emit_16(1422);
+emit_16(1356);
+emit_16(1423);
+emit_16(1357);
+emit_16(1423);
+emit_16(1356);
+emit_16(1423);
+emit_16(1357);
+emit_16(1424);
+emit_16(1358);
+emit_16(1424);
+emit_16(1357);
+emit_16(1424);
+emit_16(1358);
+emit_16(1425);
+emit_16(1359);
+emit_16(1425);
+emit_16(1358);
+emit_16(1425);
+emit_16(1359);
+emit_16(1426);
+emit_16(1360);
+emit_16(1426);
+emit_16(1359);
+emit_16(1426);
+emit_16(1360);
+emit_16(1427);
+emit_16(1361);
+emit_16(1427);
+emit_16(1360);
+emit_16(1427);
+emit_16(1361);
+emit_16(1428);
+emit_16(1362);
+emit_16(1428);
+emit_16(1361);
+emit_16(1428);
+emit_16(1362);
+emit_16(1429);
+emit_16(1363);
+emit_16(1429);
+emit_16(1362);
+emit_16(1429);
+emit_16(1363);
+emit_16(1430);
+emit_16(1364);
+emit_16(1430);
+emit_16(1363);
+emit_16(1430);
+emit_16(1364);
+emit_16(1431);
+emit_16(1365);
+emit_16(1431);
+emit_16(1364);
+emit_16(1431);
+emit_16(1365);
+emit_16(1432);
+emit_16(1366);
+emit_16(1432);
+emit_16(1365);
+emit_16(1432);
+emit_16(1366);
+emit_16(1433);
+emit_16(1367);
+emit_16(1433);
+emit_16(1366);
+emit_16(1433);
+emit_16(1367);
+emit_16(1434);
+emit_16(1368);
+emit_16(1434);
+emit_16(1367);
+emit_16(1434);
+emit_16(1368);
+emit_16(1435);
+emit_16(1369);
+emit_16(1435);
+emit_16(1368);
+emit_16(1435);
+emit_16(1369);
+emit_16(1436);
+emit_16(1370);
+emit_16(1436);
+emit_16(1369);
+emit_16(1436);
+emit_16(1370);
+emit_16(1437);
+emit_16(1371);
+emit_16(1437);
+emit_16(1370);
+emit_16(1437);
+emit_16(1371);
+emit_16(1438);
+emit_16(1372);
+emit_16(1438);
+emit_16(1371);
+emit_16(1438);
+emit_16(1372);
+emit_16(1439);
+emit_16(1373);
+emit_16(1439);
+emit_16(1372);
+emit_16(1439);
+emit_16(1373);
+emit_16(1440);
+emit_16(1374);
+emit_16(1440);
+emit_16(1373);
+emit_16(1440);
+emit_16(1374);
+emit_16(1441);
+emit_16(1375);
+emit_16(1441);
+emit_16(1374);
+emit_16(1441);
+emit_16(1375);
+emit_16(1442);
+emit_16(1376);
+emit_16(1442);
+emit_16(1375);
+emit_16(1442);
+emit_16(1376);
+emit_16(1443);
+emit_16(1377);
+emit_16(1443);
+emit_16(1376);
+emit_16(1443);
+emit_16(1377);
+emit_16(1444);
+emit_16(1378);
+emit_16(1444);
+emit_16(1377);
+emit_16(1444);
+emit_16(1378);
+emit_16(1445);
+emit_16(1379);
+emit_16(1445);
+emit_16(1378);
+emit_16(1445);
+emit_16(1379);
+emit_16(1446);
+emit_16(1380);
+emit_16(1446);
+emit_16(1379);
+emit_16(1446);
+emit_16(1380);
+emit_16(1447);
+emit_16(1381);
+emit_16(1447);
+emit_16(1380);
+emit_16(1447);
+emit_16(1381);
+emit_16(1448);
+emit_16(1382);
+emit_16(1448);
+emit_16(1381);
+emit_16(1448);
+emit_16(1382);
+emit_16(1449);
+emit_16(1383);
+emit_16(1449);
+emit_16(1382);
+emit_16(1449);
+emit_16(1383);
+emit_16(1450);
+emit_16(1384);
+emit_16(1450);
+emit_16(1383);
+emit_16(1450);
+emit_16(1384);
+emit_16(1451);
+emit_16(1385);
+emit_16(1451);
+emit_16(1384);
+emit_16(1452);
+emit_16(1386);
+emit_16(1453);
+emit_16(1387);
+emit_16(1453);
+emit_16(1386);
+emit_16(1453);
+emit_16(1387);
+emit_16(1454);
+emit_16(1388);
+emit_16(1454);
+emit_16(1387);
+emit_16(1454);
+emit_16(1388);
+emit_16(1455);
+emit_16(1389);
+emit_16(1455);
+emit_16(1388);
+emit_16(1455);
+emit_16(1389);
+emit_16(1456);
+emit_16(1390);
+emit_16(1456);
+emit_16(1389);
+emit_16(1456);
+emit_16(1390);
+emit_16(1457);
+emit_16(1391);
+emit_16(1457);
+emit_16(1390);
+emit_16(1457);
+emit_16(1391);
+emit_16(1458);
+emit_16(1392);
+emit_16(1458);
+emit_16(1391);
+emit_16(1458);
+emit_16(1392);
+emit_16(1459);
+emit_16(1393);
+emit_16(1459);
+emit_16(1392);
+emit_16(1459);
+emit_16(1393);
+emit_16(1460);
+emit_16(1394);
+emit_16(1460);
+emit_16(1393);
+emit_16(1460);
+emit_16(1394);
+emit_16(1461);
+emit_16(1395);
+emit_16(1461);
+emit_16(1394);
+emit_16(1461);
+emit_16(1395);
+emit_16(1462);
+emit_16(1396);
+emit_16(1462);
+emit_16(1395);
+emit_16(1462);
+emit_16(1396);
+emit_16(1463);
+emit_16(1397);
+emit_16(1463);
+emit_16(1396);
+emit_16(1463);
+emit_16(1397);
+emit_16(1464);
+emit_16(1398);
+emit_16(1464);
+emit_16(1397);
+emit_16(1464);
+emit_16(1398);
+emit_16(1465);
+emit_16(1399);
+emit_16(1465);
+emit_16(1398);
+emit_16(1465);
+emit_16(1399);
+emit_16(1466);
+emit_16(1400);
+emit_16(1466);
+emit_16(1399);
+emit_16(1466);
+emit_16(1400);
+emit_16(1467);
+emit_16(1401);
+emit_16(1467);
+emit_16(1400);
+emit_16(1467);
+emit_16(1401);
+emit_16(1468);
+emit_16(1402);
+emit_16(1468);
+emit_16(1401);
+emit_16(1468);
+emit_16(1402);
+emit_16(1469);
+emit_16(1403);
+emit_16(1469);
+emit_16(1402);
+emit_16(1469);
+emit_16(1403);
+emit_16(1470);
+emit_16(1404);
+emit_16(1470);
+emit_16(1403);
+emit_16(1470);
+emit_16(1404);
+emit_16(1471);
+emit_16(1405);
+emit_16(1471);
+emit_16(1404);
+emit_16(1471);
+emit_16(1405);
+emit_16(1472);
+emit_16(1406);
+emit_16(1472);
+emit_16(1405);
+emit_16(1472);
+emit_16(1406);
+emit_16(1473);
+emit_16(1407);
+emit_16(1473);
+emit_16(1406);
+emit_16(1473);
+emit_16(1407);
+emit_16(1474);
+emit_16(1408);
+emit_16(1474);
+emit_16(1407);
+emit_16(1474);
+emit_16(1408);
+emit_16(1475);
+emit_16(1409);
+emit_16(1475);
+emit_16(1408);
+emit_16(1475);
+emit_16(1409);
+emit_16(1476);
+emit_16(1410);
+emit_16(1476);
+emit_16(1409);
+emit_16(1476);
+emit_16(1410);
+emit_16(1477);
+emit_16(1411);
+emit_16(1477);
+emit_16(1410);
+emit_16(1477);
+emit_16(1411);
+emit_16(1478);
+emit_16(1412);
+emit_16(1478);
+emit_16(1411);
+emit_16(1478);
+emit_16(1412);
+emit_16(1479);
+emit_16(1413);
+emit_16(1479);
+emit_16(1412);
+emit_16(1479);
+emit_16(1413);
+emit_16(1480);
+emit_16(1414);
+emit_16(1480);
+emit_16(1413);
+emit_16(1480);
+emit_16(1414);
+emit_16(1481);
+emit_16(1415);
+emit_16(1481);
+emit_16(1414);
+emit_16(1481);
+emit_16(1415);
+emit_16(1482);
+emit_16(1416);
+emit_16(1482);
+emit_16(1415);
+emit_16(1482);
+emit_16(1416);
+emit_16(1483);
+emit_16(1417);
+emit_16(1483);
+emit_16(1416);
+emit_16(1483);
+emit_16(1417);
+emit_16(1484);
+emit_16(1418);
+emit_16(1484);
+emit_16(1417);
+emit_16(1484);
+emit_16(1418);
+emit_16(1485);
+emit_16(1419);
+emit_16(1485);
+emit_16(1418);
+emit_16(1485);
+emit_16(1419);
+emit_16(1486);
+emit_16(1420);
+emit_16(1486);
+emit_16(1419);
+emit_16(1486);
+emit_16(1420);
+emit_16(1487);
+emit_16(1421);
+emit_16(1487);
+emit_16(1420);
+emit_16(1487);
+emit_16(1421);
+emit_16(1488);
+emit_16(1422);
+emit_16(1488);
+emit_16(1421);
+emit_16(1488);
+emit_16(1422);
+emit_16(1489);
+emit_16(1423);
+emit_16(1489);
+emit_16(1422);
+emit_16(1489);
+emit_16(1423);
+emit_16(1490);
+emit_16(1424);
+emit_16(1490);
+emit_16(1423);
+emit_16(1490);
+emit_16(1424);
+emit_16(1491);
+emit_16(1425);
+emit_16(1491);
+emit_16(1424);
+emit_16(1491);
+emit_16(1425);
+emit_16(1492);
+emit_16(1426);
+emit_16(1492);
+emit_16(1425);
+emit_16(1492);
+emit_16(1426);
+emit_16(1493);
+emit_16(1427);
+emit_16(1493);
+emit_16(1426);
+emit_16(1493);
+emit_16(1427);
+emit_16(1494);
+emit_16(1428);
+emit_16(1494);
+emit_16(1427);
+emit_16(1494);
+emit_16(1428);
+emit_16(1495);
+emit_16(1429);
+emit_16(1495);
+emit_16(1428);
+emit_16(1495);
+emit_16(1429);
+emit_16(1496);
+emit_16(1430);
+emit_16(1496);
+emit_16(1429);
+emit_16(1496);
+emit_16(1430);
+emit_16(1497);
+emit_16(1431);
+emit_16(1497);
+emit_16(1430);
+emit_16(1497);
+emit_16(1431);
+emit_16(1498);
+emit_16(1432);
+emit_16(1498);
+emit_16(1431);
+emit_16(1498);
+emit_16(1432);
+emit_16(1499);
+emit_16(1433);
+emit_16(1499);
+emit_16(1432);
+emit_16(1499);
+emit_16(1433);
+emit_16(1500);
+emit_16(1434);
+emit_16(1500);
+emit_16(1433);
+emit_16(1500);
+emit_16(1434);
+emit_16(1501);
+emit_16(1435);
+emit_16(1501);
+emit_16(1434);
+emit_16(1501);
+emit_16(1435);
+emit_16(1502);
+emit_16(1436);
+emit_16(1502);
+emit_16(1435);
+emit_16(1502);
+emit_16(1436);
+emit_16(1503);
+emit_16(1437);
+emit_16(1503);
+emit_16(1436);
+emit_16(1503);
+emit_16(1437);
+emit_16(1504);
+emit_16(1438);
+emit_16(1504);
+emit_16(1437);
+emit_16(1504);
+emit_16(1438);
+emit_16(1505);
+emit_16(1439);
+emit_16(1505);
+emit_16(1438);
+emit_16(1505);
+emit_16(1439);
+emit_16(1506);
+emit_16(1440);
+emit_16(1506);
+emit_16(1439);
+emit_16(1506);
+emit_16(1440);
+emit_16(1507);
+emit_16(1441);
+emit_16(1507);
+emit_16(1440);
+emit_16(1507);
+emit_16(1441);
+emit_16(1508);
+emit_16(1442);
+emit_16(1508);
+emit_16(1441);
+emit_16(1508);
+emit_16(1442);
+emit_16(1509);
+emit_16(1443);
+emit_16(1509);
+emit_16(1442);
+emit_16(1509);
+emit_16(1443);
+emit_16(1510);
+emit_16(1444);
+emit_16(1510);
+emit_16(1443);
+emit_16(1510);
+emit_16(1444);
+emit_16(1511);
+emit_16(1445);
+emit_16(1511);
+emit_16(1444);
+emit_16(1511);
+emit_16(1445);
+emit_16(1512);
+emit_16(1446);
+emit_16(1512);
+emit_16(1445);
+emit_16(1512);
+emit_16(1446);
+emit_16(1513);
+emit_16(1447);
+emit_16(1513);
+emit_16(1446);
+emit_16(1513);
+emit_16(1447);
+emit_16(1514);
+emit_16(1448);
+emit_16(1514);
+emit_16(1447);
+emit_16(1514);
+emit_16(1448);
+emit_16(1515);
+emit_16(1449);
+emit_16(1515);
+emit_16(1448);
+emit_16(1515);
+emit_16(1449);
+emit_16(1516);
+emit_16(1450);
+emit_16(1516);
+emit_16(1449);
+emit_16(1516);
+emit_16(1450);
+emit_16(1517);
+emit_16(1451);
+emit_16(1517);
+emit_16(1450);
+emit_16(1518);
+emit_16(1452);
+emit_16(1519);
+emit_16(1453);
+emit_16(1519);
+emit_16(1452);
+emit_16(1519);
+emit_16(1453);
+emit_16(1520);
+emit_16(1454);
+emit_16(1520);
+emit_16(1453);
+emit_16(1520);
+emit_16(1454);
+emit_16(1521);
+emit_16(1455);
+emit_16(1521);
+emit_16(1454);
+emit_16(1521);
+emit_16(1455);
+emit_16(1522);
+emit_16(1456);
+emit_16(1522);
+emit_16(1455);
+emit_16(1522);
+emit_16(1456);
+emit_16(1523);
+emit_16(1457);
+emit_16(1523);
+emit_16(1456);
+emit_16(1523);
+emit_16(1457);
+emit_16(1524);
+emit_16(1458);
+emit_16(1524);
+emit_16(1457);
+emit_16(1524);
+emit_16(1458);
+emit_16(1525);
+emit_16(1459);
+emit_16(1525);
+emit_16(1458);
+emit_16(1525);
+emit_16(1459);
+emit_16(1526);
+emit_16(1460);
+emit_16(1526);
+emit_16(1459);
+emit_16(1526);
+emit_16(1460);
+emit_16(1527);
+emit_16(1461);
+emit_16(1527);
+emit_16(1460);
+emit_16(1527);
+emit_16(1461);
+emit_16(1528);
+emit_16(1462);
+emit_16(1528);
+emit_16(1461);
+emit_16(1528);
+emit_16(1462);
+emit_16(1529);
+emit_16(1463);
+emit_16(1529);
+emit_16(1462);
+emit_16(1529);
+emit_16(1463);
+emit_16(1530);
+emit_16(1464);
+emit_16(1530);
+emit_16(1463);
+emit_16(1530);
+emit_16(1464);
+emit_16(1531);
+emit_16(1465);
+emit_16(1531);
+emit_16(1464);
+emit_16(1531);
+emit_16(1465);
+emit_16(1532);
+emit_16(1466);
+emit_16(1532);
+emit_16(1465);
+emit_16(1532);
+emit_16(1466);
+emit_16(1533);
+emit_16(1467);
+emit_16(1533);
+emit_16(1466);
+emit_16(1533);
+emit_16(1467);
+emit_16(1534);
+emit_16(1468);
+emit_16(1534);
+emit_16(1467);
+emit_16(1534);
+emit_16(1468);
+emit_16(1535);
+emit_16(1469);
+emit_16(1535);
+emit_16(1468);
+emit_16(1535);
+emit_16(1469);
+emit_16(1536);
+emit_16(1470);
+emit_16(1536);
+emit_16(1469);
+emit_16(1536);
+emit_16(1470);
+emit_16(1537);
+emit_16(1471);
+emit_16(1537);
+emit_16(1470);
+emit_16(1537);
+emit_16(1471);
+emit_16(1538);
+emit_16(1472);
+emit_16(1538);
+emit_16(1471);
+emit_16(1538);
+emit_16(1472);
+emit_16(1539);
+emit_16(1473);
+emit_16(1539);
+emit_16(1472);
+emit_16(1539);
+emit_16(1473);
+emit_16(1540);
+emit_16(1474);
+emit_16(1540);
+emit_16(1473);
+emit_16(1540);
+emit_16(1474);
+emit_16(1541);
+emit_16(1475);
+emit_16(1541);
+emit_16(1474);
+emit_16(1541);
+emit_16(1475);
+emit_16(1542);
+emit_16(1476);
+emit_16(1542);
+emit_16(1475);
+emit_16(1542);
+emit_16(1476);
+emit_16(1543);
+emit_16(1477);
+emit_16(1543);
+emit_16(1476);
+emit_16(1543);
+emit_16(1477);
+emit_16(1544);
+emit_16(1478);
+emit_16(1544);
+emit_16(1477);
+emit_16(1544);
+emit_16(1478);
+emit_16(1545);
+emit_16(1479);
+emit_16(1545);
+emit_16(1478);
+emit_16(1545);
+emit_16(1479);
+emit_16(1546);
+emit_16(1480);
+emit_16(1546);
+emit_16(1479);
+emit_16(1546);
+emit_16(1480);
+emit_16(1547);
+emit_16(1481);
+emit_16(1547);
+emit_16(1480);
+emit_16(1547);
+emit_16(1481);
+emit_16(1548);
+emit_16(1482);
+emit_16(1548);
+emit_16(1481);
+emit_16(1548);
+emit_16(1482);
+emit_16(1549);
+emit_16(1483);
+emit_16(1549);
+emit_16(1482);
+emit_16(1549);
+emit_16(1483);
+emit_16(1550);
+emit_16(1484);
+emit_16(1550);
+emit_16(1483);
+emit_16(1550);
+emit_16(1484);
+emit_16(1551);
+emit_16(1485);
+emit_16(1551);
+emit_16(1484);
+emit_16(1551);
+emit_16(1485);
+emit_16(1552);
+emit_16(1486);
+emit_16(1552);
+emit_16(1485);
+emit_16(1552);
+emit_16(1486);
+emit_16(1553);
+emit_16(1487);
+emit_16(1553);
+emit_16(1486);
+emit_16(1553);
+emit_16(1487);
+emit_16(1554);
+emit_16(1488);
+emit_16(1554);
+emit_16(1487);
+emit_16(1554);
+emit_16(1488);
+emit_16(1555);
+emit_16(1489);
+emit_16(1555);
+emit_16(1488);
+emit_16(1555);
+emit_16(1489);
+emit_16(1556);
+emit_16(1490);
+emit_16(1556);
+emit_16(1489);
+emit_16(1556);
+emit_16(1490);
+emit_16(1557);
+emit_16(1491);
+emit_16(1557);
+emit_16(1490);
+emit_16(1557);
+emit_16(1491);
+emit_16(1558);
+emit_16(1492);
+emit_16(1558);
+emit_16(1491);
+emit_16(1558);
+emit_16(1492);
+emit_16(1559);
+emit_16(1493);
+emit_16(1559);
+emit_16(1492);
+emit_16(1559);
+emit_16(1493);
+emit_16(1560);
+emit_16(1494);
+emit_16(1560);
+emit_16(1493);
+emit_16(1560);
+emit_16(1494);
+emit_16(1561);
+emit_16(1495);
+emit_16(1561);
+emit_16(1494);
+emit_16(1561);
+emit_16(1495);
+emit_16(1562);
+emit_16(1496);
+emit_16(1562);
+emit_16(1495);
+emit_16(1562);
+emit_16(1496);
+emit_16(1563);
+emit_16(1497);
+emit_16(1563);
+emit_16(1496);
+emit_16(1563);
+emit_16(1497);
+emit_16(1564);
+emit_16(1498);
+emit_16(1564);
+emit_16(1497);
+emit_16(1564);
+emit_16(1498);
+emit_16(1565);
+emit_16(1499);
+emit_16(1565);
+emit_16(1498);
+emit_16(1565);
+emit_16(1499);
+emit_16(1566);
+emit_16(1500);
+emit_16(1566);
+emit_16(1499);
+emit_16(1566);
+emit_16(1500);
+emit_16(1567);
+emit_16(1501);
+emit_16(1567);
+emit_16(1500);
+emit_16(1567);
+emit_16(1501);
+emit_16(1568);
+emit_16(1502);
+emit_16(1568);
+emit_16(1501);
+emit_16(1568);
+emit_16(1502);
+emit_16(1569);
+emit_16(1503);
+emit_16(1569);
+emit_16(1502);
+emit_16(1569);
+emit_16(1503);
+emit_16(1570);
+emit_16(1504);
+emit_16(1570);
+emit_16(1503);
+emit_16(1570);
+emit_16(1504);
+emit_16(1571);
+emit_16(1505);
+emit_16(1571);
+emit_16(1504);
+emit_16(1571);
+emit_16(1505);
+emit_16(1572);
+emit_16(1506);
+emit_16(1572);
+emit_16(1505);
+emit_16(1572);
+emit_16(1506);
+emit_16(1573);
+emit_16(1507);
+emit_16(1573);
+emit_16(1506);
+emit_16(1573);
+emit_16(1507);
+emit_16(1574);
+emit_16(1508);
+emit_16(1574);
+emit_16(1507);
+emit_16(1574);
+emit_16(1508);
+emit_16(1575);
+emit_16(1509);
+emit_16(1575);
+emit_16(1508);
+emit_16(1575);
+emit_16(1509);
+emit_16(1576);
+emit_16(1510);
+emit_16(1576);
+emit_16(1509);
+emit_16(1576);
+emit_16(1510);
+emit_16(1577);
+emit_16(1511);
+emit_16(1577);
+emit_16(1510);
+emit_16(1577);
+emit_16(1511);
+emit_16(1578);
+emit_16(1512);
+emit_16(1578);
+emit_16(1511);
+emit_16(1578);
+emit_16(1512);
+emit_16(1579);
+emit_16(1513);
+emit_16(1579);
+emit_16(1512);
+emit_16(1579);
+emit_16(1513);
+emit_16(1580);
+emit_16(1514);
+emit_16(1580);
+emit_16(1513);
+emit_16(1580);
+emit_16(1514);
+emit_16(1581);
+emit_16(1515);
+emit_16(1581);
+emit_16(1514);
+emit_16(1581);
+emit_16(1515);
+emit_16(1582);
+emit_16(1516);
+emit_16(1582);
+emit_16(1515);
+emit_16(1582);
+emit_16(1516);
+emit_16(1583);
+emit_16(1517);
+emit_16(1583);
+emit_16(1516);
+emit_16(1584);
+emit_16(1518);
+emit_16(1585);
+emit_16(1519);
+emit_16(1585);
+emit_16(1518);
+emit_16(1585);
+emit_16(1519);
+emit_16(1586);
+emit_16(1520);
+emit_16(1586);
+emit_16(1519);
+emit_16(1586);
+emit_16(1520);
+emit_16(1587);
+emit_16(1521);
+emit_16(1587);
+emit_16(1520);
+emit_16(1587);
+emit_16(1521);
+emit_16(1588);
+emit_16(1522);
+emit_16(1588);
+emit_16(1521);
+emit_16(1588);
+emit_16(1522);
+emit_16(1589);
+emit_16(1523);
+emit_16(1589);
+emit_16(1522);
+emit_16(1589);
+emit_16(1523);
+emit_16(1590);
+emit_16(1524);
+emit_16(1590);
+emit_16(1523);
+emit_16(1590);
+emit_16(1524);
+emit_16(1591);
+emit_16(1525);
+emit_16(1591);
+emit_16(1524);
+emit_16(1591);
+emit_16(1525);
+emit_16(1592);
+emit_16(1526);
+emit_16(1592);
+emit_16(1525);
+emit_16(1592);
+emit_16(1526);
+emit_16(1593);
+emit_16(1527);
+emit_16(1593);
+emit_16(1526);
+emit_16(1593);
+emit_16(1527);
+emit_16(1594);
+emit_16(1528);
+emit_16(1594);
+emit_16(1527);
+emit_16(1594);
+emit_16(1528);
+emit_16(1595);
+emit_16(1529);
+emit_16(1595);
+emit_16(1528);
+emit_16(1595);
+emit_16(1529);
+emit_16(1596);
+emit_16(1530);
+emit_16(1596);
+emit_16(1529);
+emit_16(1596);
+emit_16(1530);
+emit_16(1597);
+emit_16(1531);
+emit_16(1597);
+emit_16(1530);
+emit_16(1597);
+emit_16(1531);
+emit_16(1598);
+emit_16(1532);
+emit_16(1598);
+emit_16(1531);
+emit_16(1598);
+emit_16(1532);
+emit_16(1599);
+emit_16(1533);
+emit_16(1599);
+emit_16(1532);
+emit_16(1599);
+emit_16(1533);
+emit_16(1600);
+emit_16(1534);
+emit_16(1600);
+emit_16(1533);
+emit_16(1600);
+emit_16(1534);
+emit_16(1601);
+emit_16(1535);
+emit_16(1601);
+emit_16(1534);
+emit_16(1601);
+emit_16(1535);
+emit_16(1602);
+emit_16(1536);
+emit_16(1602);
+emit_16(1535);
+emit_16(1602);
+emit_16(1536);
+emit_16(1603);
+emit_16(1537);
+emit_16(1603);
+emit_16(1536);
+emit_16(1603);
+emit_16(1537);
+emit_16(1604);
+emit_16(1538);
+emit_16(1604);
+emit_16(1537);
+emit_16(1604);
+emit_16(1538);
+emit_16(1605);
+emit_16(1539);
+emit_16(1605);
+emit_16(1538);
+emit_16(1605);
+emit_16(1539);
+emit_16(1606);
+emit_16(1540);
+emit_16(1606);
+emit_16(1539);
+emit_16(1606);
+emit_16(1540);
+emit_16(1607);
+emit_16(1541);
+emit_16(1607);
+emit_16(1540);
+emit_16(1607);
+emit_16(1541);
+emit_16(1608);
+emit_16(1542);
+emit_16(1608);
+emit_16(1541);
+emit_16(1608);
+emit_16(1542);
+emit_16(1609);
+emit_16(1543);
+emit_16(1609);
+emit_16(1542);
+emit_16(1609);
+emit_16(1543);
+emit_16(1610);
+emit_16(1544);
+emit_16(1610);
+emit_16(1543);
+emit_16(1610);
+emit_16(1544);
+emit_16(1611);
+emit_16(1545);
+emit_16(1611);
+emit_16(1544);
+emit_16(1611);
+emit_16(1545);
+emit_16(1612);
+emit_16(1546);
+emit_16(1612);
+emit_16(1545);
+emit_16(1612);
+emit_16(1546);
+emit_16(1613);
+emit_16(1547);
+emit_16(1613);
+emit_16(1546);
+emit_16(1613);
+emit_16(1547);
+emit_16(1614);
+emit_16(1548);
+emit_16(1614);
+emit_16(1547);
+emit_16(1614);
+emit_16(1548);
+emit_16(1615);
+emit_16(1549);
+emit_16(1615);
+emit_16(1548);
+emit_16(1615);
+emit_16(1549);
+emit_16(1616);
+emit_16(1550);
+emit_16(1616);
+emit_16(1549);
+emit_16(1616);
+emit_16(1550);
+emit_16(1617);
+emit_16(1551);
+emit_16(1617);
+emit_16(1550);
+emit_16(1617);
+emit_16(1551);
+emit_16(1618);
+emit_16(1552);
+emit_16(1618);
+emit_16(1551);
+emit_16(1618);
+emit_16(1552);
+emit_16(1619);
+emit_16(1553);
+emit_16(1619);
+emit_16(1552);
+emit_16(1619);
+emit_16(1553);
+emit_16(1620);
+emit_16(1554);
+emit_16(1620);
+emit_16(1553);
+emit_16(1620);
+emit_16(1554);
+emit_16(1621);
+emit_16(1555);
+emit_16(1621);
+emit_16(1554);
+emit_16(1621);
+emit_16(1555);
+emit_16(1622);
+emit_16(1556);
+emit_16(1622);
+emit_16(1555);
+emit_16(1622);
+emit_16(1556);
+emit_16(1623);
+emit_16(1557);
+emit_16(1623);
+emit_16(1556);
+emit_16(1623);
+emit_16(1557);
+emit_16(1624);
+emit_16(1558);
+emit_16(1624);
+emit_16(1557);
+emit_16(1624);
+emit_16(1558);
+emit_16(1625);
+emit_16(1559);
+emit_16(1625);
+emit_16(1558);
+emit_16(1625);
+emit_16(1559);
+emit_16(1626);
+emit_16(1560);
+emit_16(1626);
+emit_16(1559);
+emit_16(1626);
+emit_16(1560);
+emit_16(1627);
+emit_16(1561);
+emit_16(1627);
+emit_16(1560);
+emit_16(1627);
+emit_16(1561);
+emit_16(1628);
+emit_16(1562);
+emit_16(1628);
+emit_16(1561);
+emit_16(1628);
+emit_16(1562);
+emit_16(1629);
+emit_16(1563);
+emit_16(1629);
+emit_16(1562);
+emit_16(1629);
+emit_16(1563);
+emit_16(1630);
+emit_16(1564);
+emit_16(1630);
+emit_16(1563);
+emit_16(1630);
+emit_16(1564);
+emit_16(1631);
+emit_16(1565);
+emit_16(1631);
+emit_16(1564);
+emit_16(1631);
+emit_16(1565);
+emit_16(1632);
+emit_16(1566);
+emit_16(1632);
+emit_16(1565);
+emit_16(1632);
+emit_16(1566);
+emit_16(1633);
+emit_16(1567);
+emit_16(1633);
+emit_16(1566);
+emit_16(1633);
+emit_16(1567);
+emit_16(1634);
+emit_16(1568);
+emit_16(1634);
+emit_16(1567);
+emit_16(1634);
+emit_16(1568);
+emit_16(1635);
+emit_16(1569);
+emit_16(1635);
+emit_16(1568);
+emit_16(1635);
+emit_16(1569);
+emit_16(1636);
+emit_16(1570);
+emit_16(1636);
+emit_16(1569);
+emit_16(1636);
+emit_16(1570);
+emit_16(1637);
+emit_16(1571);
+emit_16(1637);
+emit_16(1570);
+emit_16(1637);
+emit_16(1571);
+emit_16(1638);
+emit_16(1572);
+emit_16(1638);
+emit_16(1571);
+emit_16(1638);
+emit_16(1572);
+emit_16(1639);
+emit_16(1573);
+emit_16(1639);
+emit_16(1572);
+emit_16(1639);
+emit_16(1573);
+emit_16(1640);
+emit_16(1574);
+emit_16(1640);
+emit_16(1573);
+emit_16(1640);
+emit_16(1574);
+emit_16(1641);
+emit_16(1575);
+emit_16(1641);
+emit_16(1574);
+emit_16(1641);
+emit_16(1575);
+emit_16(1642);
+emit_16(1576);
+emit_16(1642);
+emit_16(1575);
+emit_16(1642);
+emit_16(1576);
+emit_16(1643);
+emit_16(1577);
+emit_16(1643);
+emit_16(1576);
+emit_16(1643);
+emit_16(1577);
+emit_16(1644);
+emit_16(1578);
+emit_16(1644);
+emit_16(1577);
+emit_16(1644);
+emit_16(1578);
+emit_16(1645);
+emit_16(1579);
+emit_16(1645);
+emit_16(1578);
+emit_16(1645);
+emit_16(1579);
+emit_16(1646);
+emit_16(1580);
+emit_16(1646);
+emit_16(1579);
+emit_16(1646);
+emit_16(1580);
+emit_16(1647);
+emit_16(1581);
+emit_16(1647);
+emit_16(1580);
+emit_16(1647);
+emit_16(1581);
+emit_16(1648);
+emit_16(1582);
+emit_16(1648);
+emit_16(1581);
+emit_16(1648);
+emit_16(1582);
+emit_16(1649);
+emit_16(1583);
+emit_16(1649);
+emit_16(1582);
+emit_16(1650);
+emit_16(1584);
+emit_16(1651);
+emit_16(1585);
+emit_16(1651);
+emit_16(1584);
+emit_16(1651);
+emit_16(1585);
+emit_16(1652);
+emit_16(1586);
+emit_16(1652);
+emit_16(1585);
+emit_16(1652);
+emit_16(1586);
+emit_16(1653);
+emit_16(1587);
+emit_16(1653);
+emit_16(1586);
+emit_16(1653);
+emit_16(1587);
+emit_16(1654);
+emit_16(1588);
+emit_16(1654);
+emit_16(1587);
+emit_16(1654);
+emit_16(1588);
+emit_16(1655);
+emit_16(1589);
+emit_16(1655);
+emit_16(1588);
+emit_16(1655);
+emit_16(1589);
+emit_16(1656);
+emit_16(1590);
+emit_16(1656);
+emit_16(1589);
+emit_16(1656);
+emit_16(1590);
+emit_16(1657);
+emit_16(1591);
+emit_16(1657);
+emit_16(1590);
+emit_16(1657);
+emit_16(1591);
+emit_16(1658);
+emit_16(1592);
+emit_16(1658);
+emit_16(1591);
+emit_16(1658);
+emit_16(1592);
+emit_16(1659);
+emit_16(1593);
+emit_16(1659);
+emit_16(1592);
+emit_16(1659);
+emit_16(1593);
+emit_16(1660);
+emit_16(1594);
+emit_16(1660);
+emit_16(1593);
+emit_16(1660);
+emit_16(1594);
+emit_16(1661);
+emit_16(1595);
+emit_16(1661);
+emit_16(1594);
+emit_16(1661);
+emit_16(1595);
+emit_16(1662);
+emit_16(1596);
+emit_16(1662);
+emit_16(1595);
+emit_16(1662);
+emit_16(1596);
+emit_16(1663);
+emit_16(1597);
+emit_16(1663);
+emit_16(1596);
+emit_16(1663);
+emit_16(1597);
+emit_16(1664);
+emit_16(1598);
+emit_16(1664);
+emit_16(1597);
+emit_16(1664);
+emit_16(1598);
+emit_16(1665);
+emit_16(1599);
+emit_16(1665);
+emit_16(1598);
+emit_16(1665);
+emit_16(1599);
+emit_16(1666);
+emit_16(1600);
+emit_16(1666);
+emit_16(1599);
+emit_16(1666);
+emit_16(1600);
+emit_16(1667);
+emit_16(1601);
+emit_16(1667);
+emit_16(1600);
+emit_16(1667);
+emit_16(1601);
+emit_16(1668);
+emit_16(1602);
+emit_16(1668);
+emit_16(1601);
+emit_16(1668);
+emit_16(1602);
+emit_16(1669);
+emit_16(1603);
+emit_16(1669);
+emit_16(1602);
+emit_16(1669);
+emit_16(1603);
+emit_16(1670);
+emit_16(1604);
+emit_16(1670);
+emit_16(1603);
+emit_16(1670);
+emit_16(1604);
+emit_16(1671);
+emit_16(1605);
+emit_16(1671);
+emit_16(1604);
+emit_16(1671);
+emit_16(1605);
+emit_16(1672);
+emit_16(1606);
+emit_16(1672);
+emit_16(1605);
+emit_16(1672);
+emit_16(1606);
+emit_16(1673);
+emit_16(1607);
+emit_16(1673);
+emit_16(1606);
+emit_16(1673);
+emit_16(1607);
+emit_16(1674);
+emit_16(1608);
+emit_16(1674);
+emit_16(1607);
+emit_16(1674);
+emit_16(1608);
+emit_16(1675);
+emit_16(1609);
+emit_16(1675);
+emit_16(1608);
+emit_16(1675);
+emit_16(1609);
+emit_16(1676);
+emit_16(1610);
+emit_16(1676);
+emit_16(1609);
+emit_16(1676);
+emit_16(1610);
+emit_16(1677);
+emit_16(1611);
+emit_16(1677);
+emit_16(1610);
+emit_16(1677);
+emit_16(1611);
+emit_16(1678);
+emit_16(1612);
+emit_16(1678);
+emit_16(1611);
+emit_16(1678);
+emit_16(1612);
+emit_16(1679);
+emit_16(1613);
+emit_16(1679);
+emit_16(1612);
+emit_16(1679);
+emit_16(1613);
+emit_16(1680);
+emit_16(1614);
+emit_16(1680);
+emit_16(1613);
+emit_16(1680);
+emit_16(1614);
+emit_16(1681);
+emit_16(1615);
+emit_16(1681);
+emit_16(1614);
+emit_16(1681);
+emit_16(1615);
+emit_16(1682);
+emit_16(1616);
+emit_16(1682);
+emit_16(1615);
+emit_16(1682);
+emit_16(1616);
+emit_16(1683);
+emit_16(1617);
+emit_16(1683);
+emit_16(1616);
+emit_16(1683);
+emit_16(1617);
+emit_16(1684);
+emit_16(1618);
+emit_16(1684);
+emit_16(1617);
+emit_16(1684);
+emit_16(1618);
+emit_16(1685);
+emit_16(1619);
+emit_16(1685);
+emit_16(1618);
+emit_16(1685);
+emit_16(1619);
+emit_16(1686);
+emit_16(1620);
+emit_16(1686);
+emit_16(1619);
+emit_16(1686);
+emit_16(1620);
+emit_16(1687);
+emit_16(1621);
+emit_16(1687);
+emit_16(1620);
+emit_16(1687);
+emit_16(1621);
+emit_16(1688);
+emit_16(1622);
+emit_16(1688);
+emit_16(1621);
+emit_16(1688);
+emit_16(1622);
+emit_16(1689);
+emit_16(1623);
+emit_16(1689);
+emit_16(1622);
+emit_16(1689);
+emit_16(1623);
+emit_16(1690);
+emit_16(1624);
+emit_16(1690);
+emit_16(1623);
+emit_16(1690);
+emit_16(1624);
+emit_16(1691);
+emit_16(1625);
+emit_16(1691);
+emit_16(1624);
+emit_16(1691);
+emit_16(1625);
+emit_16(1692);
+emit_16(1626);
+emit_16(1692);
+emit_16(1625);
+emit_16(1692);
+emit_16(1626);
+emit_16(1693);
+emit_16(1627);
+emit_16(1693);
+emit_16(1626);
+emit_16(1693);
+emit_16(1627);
+emit_16(1694);
+emit_16(1628);
+emit_16(1694);
+emit_16(1627);
+emit_16(1694);
+emit_16(1628);
+emit_16(1695);
+emit_16(1629);
+emit_16(1695);
+emit_16(1628);
+emit_16(1695);
+emit_16(1629);
+emit_16(1696);
+emit_16(1630);
+emit_16(1696);
+emit_16(1629);
+emit_16(1696);
+emit_16(1630);
+emit_16(1697);
+emit_16(1631);
+emit_16(1697);
+emit_16(1630);
+emit_16(1697);
+emit_16(1631);
+emit_16(1698);
+emit_16(1632);
+emit_16(1698);
+emit_16(1631);
+emit_16(1698);
+emit_16(1632);
+emit_16(1699);
+emit_16(1633);
+emit_16(1699);
+emit_16(1632);
+emit_16(1699);
+emit_16(1633);
+emit_16(1700);
+emit_16(1634);
+emit_16(1700);
+emit_16(1633);
+emit_16(1700);
+emit_16(1634);
+emit_16(1701);
+emit_16(1635);
+emit_16(1701);
+emit_16(1634);
+emit_16(1701);
+emit_16(1635);
+emit_16(1702);
+emit_16(1636);
+emit_16(1702);
+emit_16(1635);
+emit_16(1702);
+emit_16(1636);
+emit_16(1703);
+emit_16(1637);
+emit_16(1703);
+emit_16(1636);
+emit_16(1703);
+emit_16(1637);
+emit_16(1704);
+emit_16(1638);
+emit_16(1704);
+emit_16(1637);
+emit_16(1704);
+emit_16(1638);
+emit_16(1705);
+emit_16(1639);
+emit_16(1705);
+emit_16(1638);
+emit_16(1705);
+emit_16(1639);
+emit_16(1706);
+emit_16(1640);
+emit_16(1706);
+emit_16(1639);
+emit_16(1706);
+emit_16(1640);
+emit_16(1707);
+emit_16(1641);
+emit_16(1707);
+emit_16(1640);
+emit_16(1707);
+emit_16(1641);
+emit_16(1708);
+emit_16(1642);
+emit_16(1708);
+emit_16(1641);
+emit_16(1708);
+emit_16(1642);
+emit_16(1709);
+emit_16(1643);
+emit_16(1709);
+emit_16(1642);
+emit_16(1709);
+emit_16(1643);
+emit_16(1710);
+emit_16(1644);
+emit_16(1710);
+emit_16(1643);
+emit_16(1710);
+emit_16(1644);
+emit_16(1711);
+emit_16(1645);
+emit_16(1711);
+emit_16(1644);
+emit_16(1711);
+emit_16(1645);
+emit_16(1712);
+emit_16(1646);
+emit_16(1712);
+emit_16(1645);
+emit_16(1712);
+emit_16(1646);
+emit_16(1713);
+emit_16(1647);
+emit_16(1713);
+emit_16(1646);
+emit_16(1713);
+emit_16(1647);
+emit_16(1714);
+emit_16(1648);
+emit_16(1714);
+emit_16(1647);
+emit_16(1714);
+emit_16(1648);
+emit_16(1715);
+emit_16(1649);
+emit_16(1715);
+emit_16(1648);
+emit_16(1716);
+emit_16(1650);
+emit_16(1717);
+emit_16(1651);
+emit_16(1717);
+emit_16(1650);
+emit_16(1717);
+emit_16(1651);
+emit_16(1718);
+emit_16(1652);
+emit_16(1718);
+emit_16(1651);
+emit_16(1718);
+emit_16(1652);
+emit_16(1719);
+emit_16(1653);
+emit_16(1719);
+emit_16(1652);
+emit_16(1719);
+emit_16(1653);
+emit_16(1720);
+emit_16(1654);
+emit_16(1720);
+emit_16(1653);
+emit_16(1720);
+emit_16(1654);
+emit_16(1721);
+emit_16(1655);
+emit_16(1721);
+emit_16(1654);
+emit_16(1721);
+emit_16(1655);
+emit_16(1722);
+emit_16(1656);
+emit_16(1722);
+emit_16(1655);
+emit_16(1722);
+emit_16(1656);
+emit_16(1723);
+emit_16(1657);
+emit_16(1723);
+emit_16(1656);
+emit_16(1723);
+emit_16(1657);
+emit_16(1724);
+emit_16(1658);
+emit_16(1724);
+emit_16(1657);
+emit_16(1724);
+emit_16(1658);
+emit_16(1725);
+emit_16(1659);
+emit_16(1725);
+emit_16(1658);
+emit_16(1725);
+emit_16(1659);
+emit_16(1726);
+emit_16(1660);
+emit_16(1726);
+emit_16(1659);
+emit_16(1726);
+emit_16(1660);
+emit_16(1727);
+emit_16(1661);
+emit_16(1727);
+emit_16(1660);
+emit_16(1727);
+emit_16(1661);
+emit_16(1728);
+emit_16(1662);
+emit_16(1728);
+emit_16(1661);
+emit_16(1728);
+emit_16(1662);
+emit_16(1729);
+emit_16(1663);
+emit_16(1729);
+emit_16(1662);
+emit_16(1729);
+emit_16(1663);
+emit_16(1730);
+emit_16(1664);
+emit_16(1730);
+emit_16(1663);
+emit_16(1730);
+emit_16(1664);
+emit_16(1731);
+emit_16(1665);
+emit_16(1731);
+emit_16(1664);
+emit_16(1731);
+emit_16(1665);
+emit_16(1732);
+emit_16(1666);
+emit_16(1732);
+emit_16(1665);
+emit_16(1732);
+emit_16(1666);
+emit_16(1733);
+emit_16(1667);
+emit_16(1733);
+emit_16(1666);
+emit_16(1733);
+emit_16(1667);
+emit_16(1734);
+emit_16(1668);
+emit_16(1734);
+emit_16(1667);
+emit_16(1734);
+emit_16(1668);
+emit_16(1735);
+emit_16(1669);
+emit_16(1735);
+emit_16(1668);
+emit_16(1735);
+emit_16(1669);
+emit_16(1736);
+emit_16(1670);
+emit_16(1736);
+emit_16(1669);
+emit_16(1736);
+emit_16(1670);
+emit_16(1737);
+emit_16(1671);
+emit_16(1737);
+emit_16(1670);
+emit_16(1737);
+emit_16(1671);
+emit_16(1738);
+emit_16(1672);
+emit_16(1738);
+emit_16(1671);
+emit_16(1738);
+emit_16(1672);
+emit_16(1739);
+emit_16(1673);
+emit_16(1739);
+emit_16(1672);
+emit_16(1739);
+emit_16(1673);
+emit_16(1740);
+emit_16(1674);
+emit_16(1740);
+emit_16(1673);
+emit_16(1740);
+emit_16(1674);
+emit_16(1741);
+emit_16(1675);
+emit_16(1741);
+emit_16(1674);
+emit_16(1741);
+emit_16(1675);
+emit_16(1742);
+emit_16(1676);
+emit_16(1742);
+emit_16(1675);
+emit_16(1742);
+emit_16(1676);
+emit_16(1743);
+emit_16(1677);
+emit_16(1743);
+emit_16(1676);
+emit_16(1743);
+emit_16(1677);
+emit_16(1744);
+emit_16(1678);
+emit_16(1744);
+emit_16(1677);
+emit_16(1744);
+emit_16(1678);
+emit_16(1745);
+emit_16(1679);
+emit_16(1745);
+emit_16(1678);
+emit_16(1745);
+emit_16(1679);
+emit_16(1746);
+emit_16(1680);
+emit_16(1746);
+emit_16(1679);
+emit_16(1746);
+emit_16(1680);
+emit_16(1747);
+emit_16(1681);
+emit_16(1747);
+emit_16(1680);
+emit_16(1747);
+emit_16(1681);
+emit_16(1748);
+emit_16(1682);
+emit_16(1748);
+emit_16(1681);
+emit_16(1748);
+emit_16(1682);
+emit_16(1749);
+emit_16(1683);
+emit_16(1749);
+emit_16(1682);
+emit_16(1749);
+emit_16(1683);
+emit_16(1750);
+emit_16(1684);
+emit_16(1750);
+emit_16(1683);
+emit_16(1750);
+emit_16(1684);
+emit_16(1751);
+emit_16(1685);
+emit_16(1751);
+emit_16(1684);
+emit_16(1751);
+emit_16(1685);
+emit_16(1752);
+emit_16(1686);
+emit_16(1752);
+emit_16(1685);
+emit_16(1752);
+emit_16(1686);
+emit_16(1753);
+emit_16(1687);
+emit_16(1753);
+emit_16(1686);
+emit_16(1753);
+emit_16(1687);
+emit_16(1754);
+emit_16(1688);
+emit_16(1754);
+emit_16(1687);
+emit_16(1754);
+emit_16(1688);
+emit_16(1755);
+emit_16(1689);
+emit_16(1755);
+emit_16(1688);
+emit_16(1755);
+emit_16(1689);
+emit_16(1756);
+emit_16(1690);
+emit_16(1756);
+emit_16(1689);
+emit_16(1756);
+emit_16(1690);
+emit_16(1757);
+emit_16(1691);
+emit_16(1757);
+emit_16(1690);
+emit_16(1757);
+emit_16(1691);
+emit_16(1758);
+emit_16(1692);
+emit_16(1758);
+emit_16(1691);
+emit_16(1758);
+emit_16(1692);
+emit_16(1759);
+emit_16(1693);
+emit_16(1759);
+emit_16(1692);
+emit_16(1759);
+emit_16(1693);
+emit_16(1760);
+emit_16(1694);
+emit_16(1760);
+emit_16(1693);
+emit_16(1760);
+emit_16(1694);
+emit_16(1761);
+emit_16(1695);
+emit_16(1761);
+emit_16(1694);
+emit_16(1761);
+emit_16(1695);
+emit_16(1762);
+emit_16(1696);
+emit_16(1762);
+emit_16(1695);
+emit_16(1762);
+emit_16(1696);
+emit_16(1763);
+emit_16(1697);
+emit_16(1763);
+emit_16(1696);
+emit_16(1763);
+emit_16(1697);
+emit_16(1764);
+emit_16(1698);
+emit_16(1764);
+emit_16(1697);
+emit_16(1764);
+emit_16(1698);
+emit_16(1765);
+emit_16(1699);
+emit_16(1765);
+emit_16(1698);
+emit_16(1765);
+emit_16(1699);
+emit_16(1766);
+emit_16(1700);
+emit_16(1766);
+emit_16(1699);
+emit_16(1766);
+emit_16(1700);
+emit_16(1767);
+emit_16(1701);
+emit_16(1767);
+emit_16(1700);
+emit_16(1767);
+emit_16(1701);
+emit_16(1768);
+emit_16(1702);
+emit_16(1768);
+emit_16(1701);
+emit_16(1768);
+emit_16(1702);
+emit_16(1769);
+emit_16(1703);
+emit_16(1769);
+emit_16(1702);
+emit_16(1769);
+emit_16(1703);
+emit_16(1770);
+emit_16(1704);
+emit_16(1770);
+emit_16(1703);
+emit_16(1770);
+emit_16(1704);
+emit_16(1771);
+emit_16(1705);
+emit_16(1771);
+emit_16(1704);
+emit_16(1771);
+emit_16(1705);
+emit_16(1772);
+emit_16(1706);
+emit_16(1772);
+emit_16(1705);
+emit_16(1772);
+emit_16(1706);
+emit_16(1773);
+emit_16(1707);
+emit_16(1773);
+emit_16(1706);
+emit_16(1773);
+emit_16(1707);
+emit_16(1774);
+emit_16(1708);
+emit_16(1774);
+emit_16(1707);
+emit_16(1774);
+emit_16(1708);
+emit_16(1775);
+emit_16(1709);
+emit_16(1775);
+emit_16(1708);
+emit_16(1775);
+emit_16(1709);
+emit_16(1776);
+emit_16(1710);
+emit_16(1776);
+emit_16(1709);
+emit_16(1776);
+emit_16(1710);
+emit_16(1777);
+emit_16(1711);
+emit_16(1777);
+emit_16(1710);
+emit_16(1777);
+emit_16(1711);
+emit_16(1778);
+emit_16(1712);
+emit_16(1778);
+emit_16(1711);
+emit_16(1778);
+emit_16(1712);
+emit_16(1779);
+emit_16(1713);
+emit_16(1779);
+emit_16(1712);
+emit_16(1779);
+emit_16(1713);
+emit_16(1780);
+emit_16(1714);
+emit_16(1780);
+emit_16(1713);
+emit_16(1780);
+emit_16(1714);
+emit_16(1781);
+emit_16(1715);
+emit_16(1781);
+emit_16(1714);
+emit_16(1782);
+emit_16(1716);
+emit_16(1783);
+emit_16(1717);
+emit_16(1783);
+emit_16(1716);
+emit_16(1783);
+emit_16(1717);
+emit_16(1784);
+emit_16(1718);
+emit_16(1784);
+emit_16(1717);
+emit_16(1784);
+emit_16(1718);
+emit_16(1785);
+emit_16(1719);
+emit_16(1785);
+emit_16(1718);
+emit_16(1785);
+emit_16(1719);
+emit_16(1786);
+emit_16(1720);
+emit_16(1786);
+emit_16(1719);
+emit_16(1786);
+emit_16(1720);
+emit_16(1787);
+emit_16(1721);
+emit_16(1787);
+emit_16(1720);
+emit_16(1787);
+emit_16(1721);
+emit_16(1788);
+emit_16(1722);
+emit_16(1788);
+emit_16(1721);
+emit_16(1788);
+emit_16(1722);
+emit_16(1789);
+emit_16(1723);
+emit_16(1789);
+emit_16(1722);
+emit_16(1789);
+emit_16(1723);
+emit_16(1790);
+emit_16(1724);
+emit_16(1790);
+emit_16(1723);
+emit_16(1790);
+emit_16(1724);
+emit_16(1791);
+emit_16(1725);
+emit_16(1791);
+emit_16(1724);
+emit_16(1791);
+emit_16(1725);
+emit_16(1792);
+emit_16(1726);
+emit_16(1792);
+emit_16(1725);
+emit_16(1792);
+emit_16(1726);
+emit_16(1793);
+emit_16(1727);
+emit_16(1793);
+emit_16(1726);
+emit_16(1793);
+emit_16(1727);
+emit_16(1794);
+emit_16(1728);
+emit_16(1794);
+emit_16(1727);
+emit_16(1794);
+emit_16(1728);
+emit_16(1795);
+emit_16(1729);
+emit_16(1795);
+emit_16(1728);
+emit_16(1795);
+emit_16(1729);
+emit_16(1796);
+emit_16(1730);
+emit_16(1796);
+emit_16(1729);
+emit_16(1796);
+emit_16(1730);
+emit_16(1797);
+emit_16(1731);
+emit_16(1797);
+emit_16(1730);
+emit_16(1797);
+emit_16(1731);
+emit_16(1798);
+emit_16(1732);
+emit_16(1798);
+emit_16(1731);
+emit_16(1798);
+emit_16(1732);
+emit_16(1799);
+emit_16(1733);
+emit_16(1799);
+emit_16(1732);
+emit_16(1799);
+emit_16(1733);
+emit_16(1800);
+emit_16(1734);
+emit_16(1800);
+emit_16(1733);
+emit_16(1800);
+emit_16(1734);
+emit_16(1801);
+emit_16(1735);
+emit_16(1801);
+emit_16(1734);
+emit_16(1801);
+emit_16(1735);
+emit_16(1802);
+emit_16(1736);
+emit_16(1802);
+emit_16(1735);
+emit_16(1802);
+emit_16(1736);
+emit_16(1803);
+emit_16(1737);
+emit_16(1803);
+emit_16(1736);
+emit_16(1803);
+emit_16(1737);
+emit_16(1804);
+emit_16(1738);
+emit_16(1804);
+emit_16(1737);
+emit_16(1804);
+emit_16(1738);
+emit_16(1805);
+emit_16(1739);
+emit_16(1805);
+emit_16(1738);
+emit_16(1805);
+emit_16(1739);
+emit_16(1806);
+emit_16(1740);
+emit_16(1806);
+emit_16(1739);
+emit_16(1806);
+emit_16(1740);
+emit_16(1807);
+emit_16(1741);
+emit_16(1807);
+emit_16(1740);
+emit_16(1807);
+emit_16(1741);
+emit_16(1808);
+emit_16(1742);
+emit_16(1808);
+emit_16(1741);
+emit_16(1808);
+emit_16(1742);
+emit_16(1809);
+emit_16(1743);
+emit_16(1809);
+emit_16(1742);
+emit_16(1809);
+emit_16(1743);
+emit_16(1810);
+emit_16(1744);
+emit_16(1810);
+emit_16(1743);
+emit_16(1810);
+emit_16(1744);
+emit_16(1811);
+emit_16(1745);
+emit_16(1811);
+emit_16(1744);
+emit_16(1811);
+emit_16(1745);
+emit_16(1812);
+emit_16(1746);
+emit_16(1812);
+emit_16(1745);
+emit_16(1812);
+emit_16(1746);
+emit_16(1813);
+emit_16(1747);
+emit_16(1813);
+emit_16(1746);
+emit_16(1813);
+emit_16(1747);
+emit_16(1814);
+emit_16(1748);
+emit_16(1814);
+emit_16(1747);
+emit_16(1814);
+emit_16(1748);
+emit_16(1815);
+emit_16(1749);
+emit_16(1815);
+emit_16(1748);
+emit_16(1815);
+emit_16(1749);
+emit_16(1816);
+emit_16(1750);
+emit_16(1816);
+emit_16(1749);
+emit_16(1816);
+emit_16(1750);
+emit_16(1817);
+emit_16(1751);
+emit_16(1817);
+emit_16(1750);
+emit_16(1817);
+emit_16(1751);
+emit_16(1818);
+emit_16(1752);
+emit_16(1818);
+emit_16(1751);
+emit_16(1818);
+emit_16(1752);
+emit_16(1819);
+emit_16(1753);
+emit_16(1819);
+emit_16(1752);
+emit_16(1819);
+emit_16(1753);
+emit_16(1820);
+emit_16(1754);
+emit_16(1820);
+emit_16(1753);
+emit_16(1820);
+emit_16(1754);
+emit_16(1821);
+emit_16(1755);
+emit_16(1821);
+emit_16(1754);
+emit_16(1821);
+emit_16(1755);
+emit_16(1822);
+emit_16(1756);
+emit_16(1822);
+emit_16(1755);
+emit_16(1822);
+emit_16(1756);
+emit_16(1823);
+emit_16(1757);
+emit_16(1823);
+emit_16(1756);
+emit_16(1823);
+emit_16(1757);
+emit_16(1824);
+emit_16(1758);
+emit_16(1824);
+emit_16(1757);
+emit_16(1824);
+emit_16(1758);
+emit_16(1825);
+emit_16(1759);
+emit_16(1825);
+emit_16(1758);
+emit_16(1825);
+emit_16(1759);
+emit_16(1826);
+emit_16(1760);
+emit_16(1826);
+emit_16(1759);
+emit_16(1826);
+emit_16(1760);
+emit_16(1827);
+emit_16(1761);
+emit_16(1827);
+emit_16(1760);
+emit_16(1827);
+emit_16(1761);
+emit_16(1828);
+emit_16(1762);
+emit_16(1828);
+emit_16(1761);
+emit_16(1828);
+emit_16(1762);
+emit_16(1829);
+emit_16(1763);
+emit_16(1829);
+emit_16(1762);
+emit_16(1829);
+emit_16(1763);
+emit_16(1830);
+emit_16(1764);
+emit_16(1830);
+emit_16(1763);
+emit_16(1830);
+emit_16(1764);
+emit_16(1831);
+emit_16(1765);
+emit_16(1831);
+emit_16(1764);
+emit_16(1831);
+emit_16(1765);
+emit_16(1832);
+emit_16(1766);
+emit_16(1832);
+emit_16(1765);
+emit_16(1832);
+emit_16(1766);
+emit_16(1833);
+emit_16(1767);
+emit_16(1833);
+emit_16(1766);
+emit_16(1833);
+emit_16(1767);
+emit_16(1834);
+emit_16(1768);
+emit_16(1834);
+emit_16(1767);
+emit_16(1834);
+emit_16(1768);
+emit_16(1835);
+emit_16(1769);
+emit_16(1835);
+emit_16(1768);
+emit_16(1835);
+emit_16(1769);
+emit_16(1836);
+emit_16(1770);
+emit_16(1836);
+emit_16(1769);
+emit_16(1836);
+emit_16(1770);
+emit_16(1837);
+emit_16(1771);
+emit_16(1837);
+emit_16(1770);
+emit_16(1837);
+emit_16(1771);
+emit_16(1838);
+emit_16(1772);
+emit_16(1838);
+emit_16(1771);
+emit_16(1838);
+emit_16(1772);
+emit_16(1839);
+emit_16(1773);
+emit_16(1839);
+emit_16(1772);
+emit_16(1839);
+emit_16(1773);
+emit_16(1840);
+emit_16(1774);
+emit_16(1840);
+emit_16(1773);
+emit_16(1840);
+emit_16(1774);
+emit_16(1841);
+emit_16(1775);
+emit_16(1841);
+emit_16(1774);
+emit_16(1841);
+emit_16(1775);
+emit_16(1842);
+emit_16(1776);
+emit_16(1842);
+emit_16(1775);
+emit_16(1842);
+emit_16(1776);
+emit_16(1843);
+emit_16(1777);
+emit_16(1843);
+emit_16(1776);
+emit_16(1843);
+emit_16(1777);
+emit_16(1844);
+emit_16(1778);
+emit_16(1844);
+emit_16(1777);
+emit_16(1844);
+emit_16(1778);
+emit_16(1845);
+emit_16(1779);
+emit_16(1845);
+emit_16(1778);
+emit_16(1845);
+emit_16(1779);
+emit_16(1846);
+emit_16(1780);
+emit_16(1846);
+emit_16(1779);
+emit_16(1846);
+emit_16(1780);
+emit_16(1847);
+emit_16(1781);
+emit_16(1847);
+emit_16(1780);
+emit_16(1848);
+emit_16(1782);
+emit_16(1849);
+emit_16(1783);
+emit_16(1849);
+emit_16(1782);
+emit_16(1849);
+emit_16(1783);
+emit_16(1850);
+emit_16(1784);
+emit_16(1850);
+emit_16(1783);
+emit_16(1850);
+emit_16(1784);
+emit_16(1851);
+emit_16(1785);
+emit_16(1851);
+emit_16(1784);
+emit_16(1851);
+emit_16(1785);
+emit_16(1852);
+emit_16(1786);
+emit_16(1852);
+emit_16(1785);
+emit_16(1852);
+emit_16(1786);
+emit_16(1853);
+emit_16(1787);
+emit_16(1853);
+emit_16(1786);
+emit_16(1853);
+emit_16(1787);
+emit_16(1854);
+emit_16(1788);
+emit_16(1854);
+emit_16(1787);
+emit_16(1854);
+emit_16(1788);
+emit_16(1855);
+emit_16(1789);
+emit_16(1855);
+emit_16(1788);
+emit_16(1855);
+emit_16(1789);
+emit_16(1856);
+emit_16(1790);
+emit_16(1856);
+emit_16(1789);
+emit_16(1856);
+emit_16(1790);
+emit_16(1857);
+emit_16(1791);
+emit_16(1857);
+emit_16(1790);
+emit_16(1857);
+emit_16(1791);
+emit_16(1858);
+emit_16(1792);
+emit_16(1858);
+emit_16(1791);
+emit_16(1858);
+emit_16(1792);
+emit_16(1859);
+emit_16(1793);
+emit_16(1859);
+emit_16(1792);
+emit_16(1859);
+emit_16(1793);
+emit_16(1860);
+emit_16(1794);
+emit_16(1860);
+emit_16(1793);
+emit_16(1860);
+emit_16(1794);
+emit_16(1861);
+emit_16(1795);
+emit_16(1861);
+emit_16(1794);
+emit_16(1861);
+emit_16(1795);
+emit_16(1862);
+emit_16(1796);
+emit_16(1862);
+emit_16(1795);
+emit_16(1862);
+emit_16(1796);
+emit_16(1863);
+emit_16(1797);
+emit_16(1863);
+emit_16(1796);
+emit_16(1863);
+emit_16(1797);
+emit_16(1864);
+emit_16(1798);
+emit_16(1864);
+emit_16(1797);
+emit_16(1864);
+emit_16(1798);
+emit_16(1865);
+emit_16(1799);
+emit_16(1865);
+emit_16(1798);
+emit_16(1865);
+emit_16(1799);
+emit_16(1866);
+emit_16(1800);
+emit_16(1866);
+emit_16(1799);
+emit_16(1866);
+emit_16(1800);
+emit_16(1867);
+emit_16(1801);
+emit_16(1867);
+emit_16(1800);
+emit_16(1867);
+emit_16(1801);
+emit_16(1868);
+emit_16(1802);
+emit_16(1868);
+emit_16(1801);
+emit_16(1868);
+emit_16(1802);
+emit_16(1869);
+emit_16(1803);
+emit_16(1869);
+emit_16(1802);
+emit_16(1869);
+emit_16(1803);
+emit_16(1870);
+emit_16(1804);
+emit_16(1870);
+emit_16(1803);
+emit_16(1870);
+emit_16(1804);
+emit_16(1871);
+emit_16(1805);
+emit_16(1871);
+emit_16(1804);
+emit_16(1871);
+emit_16(1805);
+emit_16(1872);
+emit_16(1806);
+emit_16(1872);
+emit_16(1805);
+emit_16(1872);
+emit_16(1806);
+emit_16(1873);
+emit_16(1807);
+emit_16(1873);
+emit_16(1806);
+emit_16(1873);
+emit_16(1807);
+emit_16(1874);
+emit_16(1808);
+emit_16(1874);
+emit_16(1807);
+emit_16(1874);
+emit_16(1808);
+emit_16(1875);
+emit_16(1809);
+emit_16(1875);
+emit_16(1808);
+emit_16(1875);
+emit_16(1809);
+emit_16(1876);
+emit_16(1810);
+emit_16(1876);
+emit_16(1809);
+emit_16(1876);
+emit_16(1810);
+emit_16(1877);
+emit_16(1811);
+emit_16(1877);
+emit_16(1810);
+emit_16(1877);
+emit_16(1811);
+emit_16(1878);
+emit_16(1812);
+emit_16(1878);
+emit_16(1811);
+emit_16(1878);
+emit_16(1812);
+emit_16(1879);
+emit_16(1813);
+emit_16(1879);
+emit_16(1812);
+emit_16(1879);
+emit_16(1813);
+emit_16(1880);
+emit_16(1814);
+emit_16(1880);
+emit_16(1813);
+emit_16(1880);
+emit_16(1814);
+emit_16(1881);
+emit_16(1815);
+emit_16(1881);
+emit_16(1814);
+emit_16(1881);
+emit_16(1815);
+emit_16(1882);
+emit_16(1816);
+emit_16(1882);
+emit_16(1815);
+emit_16(1882);
+emit_16(1816);
+emit_16(1883);
+emit_16(1817);
+emit_16(1883);
+emit_16(1816);
+emit_16(1883);
+emit_16(1817);
+emit_16(1884);
+emit_16(1818);
+emit_16(1884);
+emit_16(1817);
+emit_16(1884);
+emit_16(1818);
+emit_16(1885);
+emit_16(1819);
+emit_16(1885);
+emit_16(1818);
+emit_16(1885);
+emit_16(1819);
+emit_16(1886);
+emit_16(1820);
+emit_16(1886);
+emit_16(1819);
+emit_16(1886);
+emit_16(1820);
+emit_16(1887);
+emit_16(1821);
+emit_16(1887);
+emit_16(1820);
+emit_16(1887);
+emit_16(1821);
+emit_16(1888);
+emit_16(1822);
+emit_16(1888);
+emit_16(1821);
+emit_16(1888);
+emit_16(1822);
+emit_16(1889);
+emit_16(1823);
+emit_16(1889);
+emit_16(1822);
+emit_16(1889);
+emit_16(1823);
+emit_16(1890);
+emit_16(1824);
+emit_16(1890);
+emit_16(1823);
+emit_16(1890);
+emit_16(1824);
+emit_16(1891);
+emit_16(1825);
+emit_16(1891);
+emit_16(1824);
+emit_16(1891);
+emit_16(1825);
+emit_16(1892);
+emit_16(1826);
+emit_16(1892);
+emit_16(1825);
+emit_16(1892);
+emit_16(1826);
+emit_16(1893);
+emit_16(1827);
+emit_16(1893);
+emit_16(1826);
+emit_16(1893);
+emit_16(1827);
+emit_16(1894);
+emit_16(1828);
+emit_16(1894);
+emit_16(1827);
+emit_16(1894);
+emit_16(1828);
+emit_16(1895);
+emit_16(1829);
+emit_16(1895);
+emit_16(1828);
+emit_16(1895);
+emit_16(1829);
+emit_16(1896);
+emit_16(1830);
+emit_16(1896);
+emit_16(1829);
+emit_16(1896);
+emit_16(1830);
+emit_16(1897);
+emit_16(1831);
+emit_16(1897);
+emit_16(1830);
+emit_16(1897);
+emit_16(1831);
+emit_16(1898);
+emit_16(1832);
+emit_16(1898);
+emit_16(1831);
+emit_16(1898);
+emit_16(1832);
+emit_16(1899);
+emit_16(1833);
+emit_16(1899);
+emit_16(1832);
+emit_16(1899);
+emit_16(1833);
+emit_16(1900);
+emit_16(1834);
+emit_16(1900);
+emit_16(1833);
+emit_16(1900);
+emit_16(1834);
+emit_16(1901);
+emit_16(1835);
+emit_16(1901);
+emit_16(1834);
+emit_16(1901);
+emit_16(1835);
+emit_16(1902);
+emit_16(1836);
+emit_16(1902);
+emit_16(1835);
+emit_16(1902);
+emit_16(1836);
+emit_16(1903);
+emit_16(1837);
+emit_16(1903);
+emit_16(1836);
+emit_16(1903);
+emit_16(1837);
+emit_16(1904);
+emit_16(1838);
+emit_16(1904);
+emit_16(1837);
+emit_16(1904);
+emit_16(1838);
+emit_16(1905);
+emit_16(1839);
+emit_16(1905);
+emit_16(1838);
+emit_16(1905);
+emit_16(1839);
+emit_16(1906);
+emit_16(1840);
+emit_16(1906);
+emit_16(1839);
+emit_16(1906);
+emit_16(1840);
+emit_16(1907);
+emit_16(1841);
+emit_16(1907);
+emit_16(1840);
+emit_16(1907);
+emit_16(1841);
+emit_16(1908);
+emit_16(1842);
+emit_16(1908);
+emit_16(1841);
+emit_16(1908);
+emit_16(1842);
+emit_16(1909);
+emit_16(1843);
+emit_16(1909);
+emit_16(1842);
+emit_16(1909);
+emit_16(1843);
+emit_16(1910);
+emit_16(1844);
+emit_16(1910);
+emit_16(1843);
+emit_16(1910);
+emit_16(1844);
+emit_16(1911);
+emit_16(1845);
+emit_16(1911);
+emit_16(1844);
+emit_16(1911);
+emit_16(1845);
+emit_16(1912);
+emit_16(1846);
+emit_16(1912);
+emit_16(1845);
+emit_16(1912);
+emit_16(1846);
+emit_16(1913);
+emit_16(1847);
+emit_16(1913);
+emit_16(1846);
+emit_16(1914);
+emit_16(1848);
+emit_16(1915);
+emit_16(1849);
+emit_16(1915);
+emit_16(1848);
+emit_16(1915);
+emit_16(1849);
+emit_16(1916);
+emit_16(1850);
+emit_16(1916);
+emit_16(1849);
+emit_16(1916);
+emit_16(1850);
+emit_16(1917);
+emit_16(1851);
+emit_16(1917);
+emit_16(1850);
+emit_16(1917);
+emit_16(1851);
+emit_16(1918);
+emit_16(1852);
+emit_16(1918);
+emit_16(1851);
+emit_16(1918);
+emit_16(1852);
+emit_16(1919);
+emit_16(1853);
+emit_16(1919);
+emit_16(1852);
+emit_16(1919);
+emit_16(1853);
+emit_16(1920);
+emit_16(1854);
+emit_16(1920);
+emit_16(1853);
+emit_16(1920);
+emit_16(1854);
+emit_16(1921);
+emit_16(1855);
+emit_16(1921);
+emit_16(1854);
+emit_16(1921);
+emit_16(1855);
+emit_16(1922);
+emit_16(1856);
+emit_16(1922);
+emit_16(1855);
+emit_16(1922);
+emit_16(1856);
+emit_16(1923);
+emit_16(1857);
+emit_16(1923);
+emit_16(1856);
+emit_16(1923);
+emit_16(1857);
+emit_16(1924);
+emit_16(1858);
+emit_16(1924);
+emit_16(1857);
+emit_16(1924);
+emit_16(1858);
+emit_16(1925);
+emit_16(1859);
+emit_16(1925);
+emit_16(1858);
+emit_16(1925);
+emit_16(1859);
+emit_16(1926);
+emit_16(1860);
+emit_16(1926);
+emit_16(1859);
+emit_16(1926);
+emit_16(1860);
+emit_16(1927);
+emit_16(1861);
+emit_16(1927);
+emit_16(1860);
+emit_16(1927);
+emit_16(1861);
+emit_16(1928);
+emit_16(1862);
+emit_16(1928);
+emit_16(1861);
+emit_16(1928);
+emit_16(1862);
+emit_16(1929);
+emit_16(1863);
+emit_16(1929);
+emit_16(1862);
+emit_16(1929);
+emit_16(1863);
+emit_16(1930);
+emit_16(1864);
+emit_16(1930);
+emit_16(1863);
+emit_16(1930);
+emit_16(1864);
+emit_16(1931);
+emit_16(1865);
+emit_16(1931);
+emit_16(1864);
+emit_16(1931);
+emit_16(1865);
+emit_16(1932);
+emit_16(1866);
+emit_16(1932);
+emit_16(1865);
+emit_16(1932);
+emit_16(1866);
+emit_16(1933);
+emit_16(1867);
+emit_16(1933);
+emit_16(1866);
+emit_16(1933);
+emit_16(1867);
+emit_16(1934);
+emit_16(1868);
+emit_16(1934);
+emit_16(1867);
+emit_16(1934);
+emit_16(1868);
+emit_16(1935);
+emit_16(1869);
+emit_16(1935);
+emit_16(1868);
+emit_16(1935);
+emit_16(1869);
+emit_16(1936);
+emit_16(1870);
+emit_16(1936);
+emit_16(1869);
+emit_16(1936);
+emit_16(1870);
+emit_16(1937);
+emit_16(1871);
+emit_16(1937);
+emit_16(1870);
+emit_16(1937);
+emit_16(1871);
+emit_16(1938);
+emit_16(1872);
+emit_16(1938);
+emit_16(1871);
+emit_16(1938);
+emit_16(1872);
+emit_16(1939);
+emit_16(1873);
+emit_16(1939);
+emit_16(1872);
+emit_16(1939);
+emit_16(1873);
+emit_16(1940);
+emit_16(1874);
+emit_16(1940);
+emit_16(1873);
+emit_16(1940);
+emit_16(1874);
+emit_16(1941);
+emit_16(1875);
+emit_16(1941);
+emit_16(1874);
+emit_16(1941);
+emit_16(1875);
+emit_16(1942);
+emit_16(1876);
+emit_16(1942);
+emit_16(1875);
+emit_16(1942);
+emit_16(1876);
+emit_16(1943);
+emit_16(1877);
+emit_16(1943);
+emit_16(1876);
+emit_16(1943);
+emit_16(1877);
+emit_16(1944);
+emit_16(1878);
+emit_16(1944);
+emit_16(1877);
+emit_16(1944);
+emit_16(1878);
+emit_16(1945);
+emit_16(1879);
+emit_16(1945);
+emit_16(1878);
+emit_16(1945);
+emit_16(1879);
+emit_16(1946);
+emit_16(1880);
+emit_16(1946);
+emit_16(1879);
+emit_16(1946);
+emit_16(1880);
+emit_16(1947);
+emit_16(1881);
+emit_16(1947);
+emit_16(1880);
+emit_16(1947);
+emit_16(1881);
+emit_16(1948);
+emit_16(1882);
+emit_16(1948);
+emit_16(1881);
+emit_16(1948);
+emit_16(1882);
+emit_16(1949);
+emit_16(1883);
+emit_16(1949);
+emit_16(1882);
+emit_16(1949);
+emit_16(1883);
+emit_16(1950);
+emit_16(1884);
+emit_16(1950);
+emit_16(1883);
+emit_16(1950);
+emit_16(1884);
+emit_16(1951);
+emit_16(1885);
+emit_16(1951);
+emit_16(1884);
+emit_16(1951);
+emit_16(1885);
+emit_16(1952);
+emit_16(1886);
+emit_16(1952);
+emit_16(1885);
+emit_16(1952);
+emit_16(1886);
+emit_16(1953);
+emit_16(1887);
+emit_16(1953);
+emit_16(1886);
+emit_16(1953);
+emit_16(1887);
+emit_16(1954);
+emit_16(1888);
+emit_16(1954);
+emit_16(1887);
+emit_16(1954);
+emit_16(1888);
+emit_16(1955);
+emit_16(1889);
+emit_16(1955);
+emit_16(1888);
+emit_16(1955);
+emit_16(1889);
+emit_16(1956);
+emit_16(1890);
+emit_16(1956);
+emit_16(1889);
+emit_16(1956);
+emit_16(1890);
+emit_16(1957);
+emit_16(1891);
+emit_16(1957);
+emit_16(1890);
+emit_16(1957);
+emit_16(1891);
+emit_16(1958);
+emit_16(1892);
+emit_16(1958);
+emit_16(1891);
+emit_16(1958);
+emit_16(1892);
+emit_16(1959);
+emit_16(1893);
+emit_16(1959);
+emit_16(1892);
+emit_16(1959);
+emit_16(1893);
+emit_16(1960);
+emit_16(1894);
+emit_16(1960);
+emit_16(1893);
+emit_16(1960);
+emit_16(1894);
+emit_16(1961);
+emit_16(1895);
+emit_16(1961);
+emit_16(1894);
+emit_16(1961);
+emit_16(1895);
+emit_16(1962);
+emit_16(1896);
+emit_16(1962);
+emit_16(1895);
+emit_16(1962);
+emit_16(1896);
+emit_16(1963);
+emit_16(1897);
+emit_16(1963);
+emit_16(1896);
+emit_16(1963);
+emit_16(1897);
+emit_16(1964);
+emit_16(1898);
+emit_16(1964);
+emit_16(1897);
+emit_16(1964);
+emit_16(1898);
+emit_16(1965);
+emit_16(1899);
+emit_16(1965);
+emit_16(1898);
+emit_16(1965);
+emit_16(1899);
+emit_16(1966);
+emit_16(1900);
+emit_16(1966);
+emit_16(1899);
+emit_16(1966);
+emit_16(1900);
+emit_16(1967);
+emit_16(1901);
+emit_16(1967);
+emit_16(1900);
+emit_16(1967);
+emit_16(1901);
+emit_16(1968);
+emit_16(1902);
+emit_16(1968);
+emit_16(1901);
+emit_16(1968);
+emit_16(1902);
+emit_16(1969);
+emit_16(1903);
+emit_16(1969);
+emit_16(1902);
+emit_16(1969);
+emit_16(1903);
+emit_16(1970);
+emit_16(1904);
+emit_16(1970);
+emit_16(1903);
+emit_16(1970);
+emit_16(1904);
+emit_16(1971);
+emit_16(1905);
+emit_16(1971);
+emit_16(1904);
+emit_16(1971);
+emit_16(1905);
+emit_16(1972);
+emit_16(1906);
+emit_16(1972);
+emit_16(1905);
+emit_16(1972);
+emit_16(1906);
+emit_16(1973);
+emit_16(1907);
+emit_16(1973);
+emit_16(1906);
+emit_16(1973);
+emit_16(1907);
+emit_16(1974);
+emit_16(1908);
+emit_16(1974);
+emit_16(1907);
+emit_16(1974);
+emit_16(1908);
+emit_16(1975);
+emit_16(1909);
+emit_16(1975);
+emit_16(1908);
+emit_16(1975);
+emit_16(1909);
+emit_16(1976);
+emit_16(1910);
+emit_16(1976);
+emit_16(1909);
+emit_16(1976);
+emit_16(1910);
+emit_16(1977);
+emit_16(1911);
+emit_16(1977);
+emit_16(1910);
+emit_16(1977);
+emit_16(1911);
+emit_16(1978);
+emit_16(1912);
+emit_16(1978);
+emit_16(1911);
+emit_16(1978);
+emit_16(1912);
+emit_16(1979);
+emit_16(1913);
+emit_16(1979);
+emit_16(1912);
+emit_16(1980);
+emit_16(1914);
+emit_16(1981);
+emit_16(1915);
+emit_16(1981);
+emit_16(1914);
+emit_16(1981);
+emit_16(1915);
+emit_16(1982);
+emit_16(1916);
+emit_16(1982);
+emit_16(1915);
+emit_16(1982);
+emit_16(1916);
+emit_16(1983);
+emit_16(1917);
+emit_16(1983);
+emit_16(1916);
+emit_16(1983);
+emit_16(1917);
+emit_16(1984);
+emit_16(1918);
+emit_16(1984);
+emit_16(1917);
+emit_16(1984);
+emit_16(1918);
+emit_16(1985);
+emit_16(1919);
+emit_16(1985);
+emit_16(1918);
+emit_16(1985);
+emit_16(1919);
+emit_16(1986);
+emit_16(1920);
+emit_16(1986);
+emit_16(1919);
+emit_16(1986);
+emit_16(1920);
+emit_16(1987);
+emit_16(1921);
+emit_16(1987);
+emit_16(1920);
+emit_16(1987);
+emit_16(1921);
+emit_16(1988);
+emit_16(1922);
+emit_16(1988);
+emit_16(1921);
+emit_16(1988);
+emit_16(1922);
+emit_16(1989);
+emit_16(1923);
+emit_16(1989);
+emit_16(1922);
+emit_16(1989);
+emit_16(1923);
+emit_16(1990);
+emit_16(1924);
+emit_16(1990);
+emit_16(1923);
+emit_16(1990);
+emit_16(1924);
+emit_16(1991);
+emit_16(1925);
+emit_16(1991);
+emit_16(1924);
+emit_16(1991);
+emit_16(1925);
+emit_16(1992);
+emit_16(1926);
+emit_16(1992);
+emit_16(1925);
+emit_16(1992);
+emit_16(1926);
+emit_16(1993);
+emit_16(1927);
+emit_16(1993);
+emit_16(1926);
+emit_16(1993);
+emit_16(1927);
+emit_16(1994);
+emit_16(1928);
+emit_16(1994);
+emit_16(1927);
+emit_16(1994);
+emit_16(1928);
+emit_16(1995);
+emit_16(1929);
+emit_16(1995);
+emit_16(1928);
+emit_16(1995);
+emit_16(1929);
+emit_16(1996);
+emit_16(1930);
+emit_16(1996);
+emit_16(1929);
+emit_16(1996);
+emit_16(1930);
+emit_16(1997);
+emit_16(1931);
+emit_16(1997);
+emit_16(1930);
+emit_16(1997);
+emit_16(1931);
+emit_16(1998);
+emit_16(1932);
+emit_16(1998);
+emit_16(1931);
+emit_16(1998);
+emit_16(1932);
+emit_16(1999);
+emit_16(1933);
+emit_16(1999);
+emit_16(1932);
+emit_16(1999);
+emit_16(1933);
+emit_16(2000);
+emit_16(1934);
+emit_16(2000);
+emit_16(1933);
+emit_16(2000);
+emit_16(1934);
+emit_16(2001);
+emit_16(1935);
+emit_16(2001);
+emit_16(1934);
+emit_16(2001);
+emit_16(1935);
+emit_16(2002);
+emit_16(1936);
+emit_16(2002);
+emit_16(1935);
+emit_16(2002);
+emit_16(1936);
+emit_16(2003);
+emit_16(1937);
+emit_16(2003);
+emit_16(1936);
+emit_16(2003);
+emit_16(1937);
+emit_16(2004);
+emit_16(1938);
+emit_16(2004);
+emit_16(1937);
+emit_16(2004);
+emit_16(1938);
+emit_16(2005);
+emit_16(1939);
+emit_16(2005);
+emit_16(1938);
+emit_16(2005);
+emit_16(1939);
+emit_16(2006);
+emit_16(1940);
+emit_16(2006);
+emit_16(1939);
+emit_16(2006);
+emit_16(1940);
+emit_16(2007);
+emit_16(1941);
+emit_16(2007);
+emit_16(1940);
+emit_16(2007);
+emit_16(1941);
+emit_16(2008);
+emit_16(1942);
+emit_16(2008);
+emit_16(1941);
+emit_16(2008);
+emit_16(1942);
+emit_16(2009);
+emit_16(1943);
+emit_16(2009);
+emit_16(1942);
+emit_16(2009);
+emit_16(1943);
+emit_16(2010);
+emit_16(1944);
+emit_16(2010);
+emit_16(1943);
+emit_16(2010);
+emit_16(1944);
+emit_16(2011);
+emit_16(1945);
+emit_16(2011);
+emit_16(1944);
+emit_16(2011);
+emit_16(1945);
+emit_16(2012);
+emit_16(1946);
+emit_16(2012);
+emit_16(1945);
+emit_16(2012);
+emit_16(1946);
+emit_16(2013);
+emit_16(1947);
+emit_16(2013);
+emit_16(1946);
+emit_16(2013);
+emit_16(1947);
+emit_16(2014);
+emit_16(1948);
+emit_16(2014);
+emit_16(1947);
+emit_16(2014);
+emit_16(1948);
+emit_16(2015);
+emit_16(1949);
+emit_16(2015);
+emit_16(1948);
+emit_16(2015);
+emit_16(1949);
+emit_16(2016);
+emit_16(1950);
+emit_16(2016);
+emit_16(1949);
+emit_16(2016);
+emit_16(1950);
+emit_16(2017);
+emit_16(1951);
+emit_16(2017);
+emit_16(1950);
+emit_16(2017);
+emit_16(1951);
+emit_16(2018);
+emit_16(1952);
+emit_16(2018);
+emit_16(1951);
+emit_16(2018);
+emit_16(1952);
+emit_16(2019);
+emit_16(1953);
+emit_16(2019);
+emit_16(1952);
+emit_16(2019);
+emit_16(1953);
+emit_16(2020);
+emit_16(1954);
+emit_16(2020);
+emit_16(1953);
+emit_16(2020);
+emit_16(1954);
+emit_16(2021);
+emit_16(1955);
+emit_16(2021);
+emit_16(1954);
+emit_16(2021);
+emit_16(1955);
+emit_16(2022);
+emit_16(1956);
+emit_16(2022);
+emit_16(1955);
+emit_16(2022);
+emit_16(1956);
+emit_16(2023);
+emit_16(1957);
+emit_16(2023);
+emit_16(1956);
+emit_16(2023);
+emit_16(1957);
+emit_16(2024);
+emit_16(1958);
+emit_16(2024);
+emit_16(1957);
+emit_16(2024);
+emit_16(1958);
+emit_16(2025);
+emit_16(1959);
+emit_16(2025);
+emit_16(1958);
+emit_16(2025);
+emit_16(1959);
+emit_16(2026);
+emit_16(1960);
+emit_16(2026);
+emit_16(1959);
+emit_16(2026);
+emit_16(1960);
+emit_16(2027);
+emit_16(1961);
+emit_16(2027);
+emit_16(1960);
+emit_16(2027);
+emit_16(1961);
+emit_16(2028);
+emit_16(1962);
+emit_16(2028);
+emit_16(1961);
+emit_16(2028);
+emit_16(1962);
+emit_16(2029);
+emit_16(1963);
+emit_16(2029);
+emit_16(1962);
+emit_16(2029);
+emit_16(1963);
+emit_16(2030);
+emit_16(1964);
+emit_16(2030);
+emit_16(1963);
+emit_16(2030);
+emit_16(1964);
+emit_16(2031);
+emit_16(1965);
+emit_16(2031);
+emit_16(1964);
+emit_16(2031);
+emit_16(1965);
+emit_16(2032);
+emit_16(1966);
+emit_16(2032);
+emit_16(1965);
+emit_16(2032);
+emit_16(1966);
+emit_16(2033);
+emit_16(1967);
+emit_16(2033);
+emit_16(1966);
+emit_16(2033);
+emit_16(1967);
+emit_16(2034);
+emit_16(1968);
+emit_16(2034);
+emit_16(1967);
+emit_16(2034);
+emit_16(1968);
+emit_16(2035);
+emit_16(1969);
+emit_16(2035);
+emit_16(1968);
+emit_16(2035);
+emit_16(1969);
+emit_16(2036);
+emit_16(1970);
+emit_16(2036);
+emit_16(1969);
+emit_16(2036);
+emit_16(1970);
+emit_16(2037);
+emit_16(1971);
+emit_16(2037);
+emit_16(1970);
+emit_16(2037);
+emit_16(1971);
+emit_16(2038);
+emit_16(1972);
+emit_16(2038);
+emit_16(1971);
+emit_16(2038);
+emit_16(1972);
+emit_16(2039);
+emit_16(1973);
+emit_16(2039);
+emit_16(1972);
+emit_16(2039);
+emit_16(1973);
+emit_16(2040);
+emit_16(1974);
+emit_16(2040);
+emit_16(1973);
+emit_16(2040);
+emit_16(1974);
+emit_16(2041);
+emit_16(1975);
+emit_16(2041);
+emit_16(1974);
+emit_16(2041);
+emit_16(1975);
+emit_16(2042);
+emit_16(1976);
+emit_16(2042);
+emit_16(1975);
+emit_16(2042);
+emit_16(1976);
+emit_16(2043);
+emit_16(1977);
+emit_16(2043);
+emit_16(1976);
+emit_16(2043);
+emit_16(1977);
+emit_16(2044);
+emit_16(1978);
+emit_16(2044);
+emit_16(1977);
+emit_16(2044);
+emit_16(1978);
+emit_16(2045);
+emit_16(1979);
+emit_16(2045);
+emit_16(1978);
+emit_16(2046);
+emit_16(1980);
+emit_16(2047);
+emit_16(1981);
+emit_16(2047);
+emit_16(1980);
+emit_16(2047);
+emit_16(1981);
+emit_16(2048);
+emit_16(1982);
+emit_16(2048);
+emit_16(1981);
+emit_16(2048);
+emit_16(1982);
+emit_16(2049);
+emit_16(1983);
+emit_16(2049);
+emit_16(1982);
+emit_16(2049);
+emit_16(1983);
+emit_16(2050);
+emit_16(1984);
+emit_16(2050);
+emit_16(1983);
+emit_16(2050);
+emit_16(1984);
+emit_16(2051);
+emit_16(1985);
+emit_16(2051);
+emit_16(1984);
+emit_16(2051);
+emit_16(1985);
+emit_16(2052);
+emit_16(1986);
+emit_16(2052);
+emit_16(1985);
+emit_16(2052);
+emit_16(1986);
+emit_16(2053);
+emit_16(1987);
+emit_16(2053);
+emit_16(1986);
+emit_16(2053);
+emit_16(1987);
+emit_16(2054);
+emit_16(1988);
+emit_16(2054);
+emit_16(1987);
+emit_16(2054);
+emit_16(1988);
+emit_16(2055);
+emit_16(1989);
+emit_16(2055);
+emit_16(1988);
+emit_16(2055);
+emit_16(1989);
+emit_16(2056);
+emit_16(1990);
+emit_16(2056);
+emit_16(1989);
+emit_16(2056);
+emit_16(1990);
+emit_16(2057);
+emit_16(1991);
+emit_16(2057);
+emit_16(1990);
+emit_16(2057);
+emit_16(1991);
+emit_16(2058);
+emit_16(1992);
+emit_16(2058);
+emit_16(1991);
+emit_16(2058);
+emit_16(1992);
+emit_16(2059);
+emit_16(1993);
+emit_16(2059);
+emit_16(1992);
+emit_16(2059);
+emit_16(1993);
+emit_16(2060);
+emit_16(1994);
+emit_16(2060);
+emit_16(1993);
+emit_16(2060);
+emit_16(1994);
+emit_16(2061);
+emit_16(1995);
+emit_16(2061);
+emit_16(1994);
+emit_16(2061);
+emit_16(1995);
+emit_16(2062);
+emit_16(1996);
+emit_16(2062);
+emit_16(1995);
+emit_16(2062);
+emit_16(1996);
+emit_16(2063);
+emit_16(1997);
+emit_16(2063);
+emit_16(1996);
+emit_16(2063);
+emit_16(1997);
+emit_16(2064);
+emit_16(1998);
+emit_16(2064);
+emit_16(1997);
+emit_16(2064);
+emit_16(1998);
+emit_16(2065);
+emit_16(1999);
+emit_16(2065);
+emit_16(1998);
+emit_16(2065);
+emit_16(1999);
+emit_16(2066);
+emit_16(2000);
+emit_16(2066);
+emit_16(1999);
+emit_16(2066);
+emit_16(2000);
+emit_16(2067);
+emit_16(2001);
+emit_16(2067);
+emit_16(2000);
+emit_16(2067);
+emit_16(2001);
+emit_16(2068);
+emit_16(2002);
+emit_16(2068);
+emit_16(2001);
+emit_16(2068);
+emit_16(2002);
+emit_16(2069);
+emit_16(2003);
+emit_16(2069);
+emit_16(2002);
+emit_16(2069);
+emit_16(2003);
+emit_16(2070);
+emit_16(2004);
+emit_16(2070);
+emit_16(2003);
+emit_16(2070);
+emit_16(2004);
+emit_16(2071);
+emit_16(2005);
+emit_16(2071);
+emit_16(2004);
+emit_16(2071);
+emit_16(2005);
+emit_16(2072);
+emit_16(2006);
+emit_16(2072);
+emit_16(2005);
+emit_16(2072);
+emit_16(2006);
+emit_16(2073);
+emit_16(2007);
+emit_16(2073);
+emit_16(2006);
+emit_16(2073);
+emit_16(2007);
+emit_16(2074);
+emit_16(2008);
+emit_16(2074);
+emit_16(2007);
+emit_16(2074);
+emit_16(2008);
+emit_16(2075);
+emit_16(2009);
+emit_16(2075);
+emit_16(2008);
+emit_16(2075);
+emit_16(2009);
+emit_16(2076);
+emit_16(2010);
+emit_16(2076);
+emit_16(2009);
+emit_16(2076);
+emit_16(2010);
+emit_16(2077);
+emit_16(2011);
+emit_16(2077);
+emit_16(2010);
+emit_16(2077);
+emit_16(2011);
+emit_16(2078);
+emit_16(2012);
+emit_16(2078);
+emit_16(2011);
+emit_16(2078);
+emit_16(2012);
+emit_16(2079);
+emit_16(2013);
+emit_16(2079);
+emit_16(2012);
+emit_16(2079);
+emit_16(2013);
+emit_16(2080);
+emit_16(2014);
+emit_16(2080);
+emit_16(2013);
+emit_16(2080);
+emit_16(2014);
+emit_16(2081);
+emit_16(2015);
+emit_16(2081);
+emit_16(2014);
+emit_16(2081);
+emit_16(2015);
+emit_16(2082);
+emit_16(2016);
+emit_16(2082);
+emit_16(2015);
+emit_16(2082);
+emit_16(2016);
+emit_16(2083);
+emit_16(2017);
+emit_16(2083);
+emit_16(2016);
+emit_16(2083);
+emit_16(2017);
+emit_16(2084);
+emit_16(2018);
+emit_16(2084);
+emit_16(2017);
+emit_16(2084);
+emit_16(2018);
+emit_16(2085);
+emit_16(2019);
+emit_16(2085);
+emit_16(2018);
+emit_16(2085);
+emit_16(2019);
+emit_16(2086);
+emit_16(2020);
+emit_16(2086);
+emit_16(2019);
+emit_16(2086);
+emit_16(2020);
+emit_16(2087);
+emit_16(2021);
+emit_16(2087);
+emit_16(2020);
+emit_16(2087);
+emit_16(2021);
+emit_16(2088);
+emit_16(2022);
+emit_16(2088);
+emit_16(2021);
+emit_16(2088);
+emit_16(2022);
+emit_16(2089);
+emit_16(2023);
+emit_16(2089);
+emit_16(2022);
+emit_16(2089);
+emit_16(2023);
+emit_16(2090);
+emit_16(2024);
+emit_16(2090);
+emit_16(2023);
+emit_16(2090);
+emit_16(2024);
+emit_16(2091);
+emit_16(2025);
+emit_16(2091);
+emit_16(2024);
+emit_16(2091);
+emit_16(2025);
+emit_16(2092);
+emit_16(2026);
+emit_16(2092);
+emit_16(2025);
+emit_16(2092);
+emit_16(2026);
+emit_16(2093);
+emit_16(2027);
+emit_16(2093);
+emit_16(2026);
+emit_16(2093);
+emit_16(2027);
+emit_16(2094);
+emit_16(2028);
+emit_16(2094);
+emit_16(2027);
+emit_16(2094);
+emit_16(2028);
+emit_16(2095);
+emit_16(2029);
+emit_16(2095);
+emit_16(2028);
+emit_16(2095);
+emit_16(2029);
+emit_16(2096);
+emit_16(2030);
+emit_16(2096);
+emit_16(2029);
+emit_16(2096);
+emit_16(2030);
+emit_16(2097);
+emit_16(2031);
+emit_16(2097);
+emit_16(2030);
+emit_16(2097);
+emit_16(2031);
+emit_16(2098);
+emit_16(2032);
+emit_16(2098);
+emit_16(2031);
+emit_16(2098);
+emit_16(2032);
+emit_16(2099);
+emit_16(2033);
+emit_16(2099);
+emit_16(2032);
+emit_16(2099);
+emit_16(2033);
+emit_16(2100);
+emit_16(2034);
+emit_16(2100);
+emit_16(2033);
+emit_16(2100);
+emit_16(2034);
+emit_16(2101);
+emit_16(2035);
+emit_16(2101);
+emit_16(2034);
+emit_16(2101);
+emit_16(2035);
+emit_16(2102);
+emit_16(2036);
+emit_16(2102);
+emit_16(2035);
+emit_16(2102);
+emit_16(2036);
+emit_16(2103);
+emit_16(2037);
+emit_16(2103);
+emit_16(2036);
+emit_16(2103);
+emit_16(2037);
+emit_16(2104);
+emit_16(2038);
+emit_16(2104);
+emit_16(2037);
+emit_16(2104);
+emit_16(2038);
+emit_16(2105);
+emit_16(2039);
+emit_16(2105);
+emit_16(2038);
+emit_16(2105);
+emit_16(2039);
+emit_16(2106);
+emit_16(2040);
+emit_16(2106);
+emit_16(2039);
+emit_16(2106);
+emit_16(2040);
+emit_16(2107);
+emit_16(2041);
+emit_16(2107);
+emit_16(2040);
+emit_16(2107);
+emit_16(2041);
+emit_16(2108);
+emit_16(2042);
+emit_16(2108);
+emit_16(2041);
+emit_16(2108);
+emit_16(2042);
+emit_16(2109);
+emit_16(2043);
+emit_16(2109);
+emit_16(2042);
+emit_16(2109);
+emit_16(2043);
+emit_16(2110);
+emit_16(2044);
+emit_16(2110);
+emit_16(2043);
+emit_16(2110);
+emit_16(2044);
+emit_16(2111);
+emit_16(2045);
+emit_16(2111);
+emit_16(2044);
+emit_16(2112);
+emit_16(2046);
+emit_16(2113);
+emit_16(2047);
+emit_16(2113);
+emit_16(2046);
+emit_16(2113);
+emit_16(2047);
+emit_16(2114);
+emit_16(2048);
+emit_16(2114);
+emit_16(2047);
+emit_16(2114);
+emit_16(2048);
+emit_16(2115);
+emit_16(2049);
+emit_16(2115);
+emit_16(2048);
+emit_16(2115);
+emit_16(2049);
+emit_16(2116);
+emit_16(2050);
+emit_16(2116);
+emit_16(2049);
+emit_16(2116);
+emit_16(2050);
+emit_16(2117);
+emit_16(2051);
+emit_16(2117);
+emit_16(2050);
+emit_16(2117);
+emit_16(2051);
+emit_16(2118);
+emit_16(2052);
+emit_16(2118);
+emit_16(2051);
+emit_16(2118);
+emit_16(2052);
+emit_16(2119);
+emit_16(2053);
+emit_16(2119);
+emit_16(2052);
+emit_16(2119);
+emit_16(2053);
+emit_16(2120);
+emit_16(2054);
+emit_16(2120);
+emit_16(2053);
+emit_16(2120);
+emit_16(2054);
+emit_16(2121);
+emit_16(2055);
+emit_16(2121);
+emit_16(2054);
+emit_16(2121);
+emit_16(2055);
+emit_16(2122);
+emit_16(2056);
+emit_16(2122);
+emit_16(2055);
+emit_16(2122);
+emit_16(2056);
+emit_16(2123);
+emit_16(2057);
+emit_16(2123);
+emit_16(2056);
+emit_16(2123);
+emit_16(2057);
+emit_16(2124);
+emit_16(2058);
+emit_16(2124);
+emit_16(2057);
+emit_16(2124);
+emit_16(2058);
+emit_16(2125);
+emit_16(2059);
+emit_16(2125);
+emit_16(2058);
+emit_16(2125);
+emit_16(2059);
+emit_16(2126);
+emit_16(2060);
+emit_16(2126);
+emit_16(2059);
+emit_16(2126);
+emit_16(2060);
+emit_16(2127);
+emit_16(2061);
+emit_16(2127);
+emit_16(2060);
+emit_16(2127);
+emit_16(2061);
+emit_16(2128);
+emit_16(2062);
+emit_16(2128);
+emit_16(2061);
+emit_16(2128);
+emit_16(2062);
+emit_16(2129);
+emit_16(2063);
+emit_16(2129);
+emit_16(2062);
+emit_16(2129);
+emit_16(2063);
+emit_16(2130);
+emit_16(2064);
+emit_16(2130);
+emit_16(2063);
+emit_16(2130);
+emit_16(2064);
+emit_16(2131);
+emit_16(2065);
+emit_16(2131);
+emit_16(2064);
+emit_16(2131);
+emit_16(2065);
+emit_16(2132);
+emit_16(2066);
+emit_16(2132);
+emit_16(2065);
+emit_16(2132);
+emit_16(2066);
+emit_16(2133);
+emit_16(2067);
+emit_16(2133);
+emit_16(2066);
+emit_16(2133);
+emit_16(2067);
+emit_16(2134);
+emit_16(2068);
+emit_16(2134);
+emit_16(2067);
+emit_16(2134);
+emit_16(2068);
+emit_16(2135);
+emit_16(2069);
+emit_16(2135);
+emit_16(2068);
+emit_16(2135);
+emit_16(2069);
+emit_16(2136);
+emit_16(2070);
+emit_16(2136);
+emit_16(2069);
+emit_16(2136);
+emit_16(2070);
+emit_16(2137);
+emit_16(2071);
+emit_16(2137);
+emit_16(2070);
+emit_16(2137);
+emit_16(2071);
+emit_16(2138);
+emit_16(2072);
+emit_16(2138);
+emit_16(2071);
+emit_16(2138);
+emit_16(2072);
+emit_16(2139);
+emit_16(2073);
+emit_16(2139);
+emit_16(2072);
+emit_16(2139);
+emit_16(2073);
+emit_16(2140);
+emit_16(2074);
+emit_16(2140);
+emit_16(2073);
+emit_16(2140);
+emit_16(2074);
+emit_16(2141);
+emit_16(2075);
+emit_16(2141);
+emit_16(2074);
+emit_16(2141);
+emit_16(2075);
+emit_16(2142);
+emit_16(2076);
+emit_16(2142);
+emit_16(2075);
+emit_16(2142);
+emit_16(2076);
+emit_16(2143);
+emit_16(2077);
+emit_16(2143);
+emit_16(2076);
+emit_16(2143);
+emit_16(2077);
+emit_16(2144);
+emit_16(2078);
+emit_16(2144);
+emit_16(2077);
+emit_16(2144);
+emit_16(2078);
+emit_16(2145);
+emit_16(2079);
+emit_16(2145);
+emit_16(2078);
+emit_16(2145);
+emit_16(2079);
+emit_16(2146);
+emit_16(2080);
+emit_16(2146);
+emit_16(2079);
+emit_16(2146);
+emit_16(2080);
+emit_16(2147);
+emit_16(2081);
+emit_16(2147);
+emit_16(2080);
+emit_16(2147);
+emit_16(2081);
+emit_16(2148);
+emit_16(2082);
+emit_16(2148);
+emit_16(2081);
+emit_16(2148);
+emit_16(2082);
+emit_16(2149);
+emit_16(2083);
+emit_16(2149);
+emit_16(2082);
+emit_16(2149);
+emit_16(2083);
+emit_16(2150);
+emit_16(2084);
+emit_16(2150);
+emit_16(2083);
+emit_16(2150);
+emit_16(2084);
+emit_16(2151);
+emit_16(2085);
+emit_16(2151);
+emit_16(2084);
+emit_16(2151);
+emit_16(2085);
+emit_16(2152);
+emit_16(2086);
+emit_16(2152);
+emit_16(2085);
+emit_16(2152);
+emit_16(2086);
+emit_16(2153);
+emit_16(2087);
+emit_16(2153);
+emit_16(2086);
+emit_16(2153);
+emit_16(2087);
+emit_16(2154);
+emit_16(2088);
+emit_16(2154);
+emit_16(2087);
+emit_16(2154);
+emit_16(2088);
+emit_16(2155);
+emit_16(2089);
+emit_16(2155);
+emit_16(2088);
+emit_16(2155);
+emit_16(2089);
+emit_16(2156);
+emit_16(2090);
+emit_16(2156);
+emit_16(2089);
+emit_16(2156);
+emit_16(2090);
+emit_16(2157);
+emit_16(2091);
+emit_16(2157);
+emit_16(2090);
+emit_16(2157);
+emit_16(2091);
+emit_16(2158);
+emit_16(2092);
+emit_16(2158);
+emit_16(2091);
+emit_16(2158);
+emit_16(2092);
+emit_16(2159);
+emit_16(2093);
+emit_16(2159);
+emit_16(2092);
+emit_16(2159);
+emit_16(2093);
+emit_16(2160);
+emit_16(2094);
+emit_16(2160);
+emit_16(2093);
+emit_16(2160);
+emit_16(2094);
+emit_16(2161);
+emit_16(2095);
+emit_16(2161);
+emit_16(2094);
+emit_16(2161);
+emit_16(2095);
+emit_16(2162);
+emit_16(2096);
+emit_16(2162);
+emit_16(2095);
+emit_16(2162);
+emit_16(2096);
+emit_16(2163);
+emit_16(2097);
+emit_16(2163);
+emit_16(2096);
+emit_16(2163);
+emit_16(2097);
+emit_16(2164);
+emit_16(2098);
+emit_16(2164);
+emit_16(2097);
+emit_16(2164);
+emit_16(2098);
+emit_16(2165);
+emit_16(2099);
+emit_16(2165);
+emit_16(2098);
+emit_16(2165);
+emit_16(2099);
+emit_16(2166);
+emit_16(2100);
+emit_16(2166);
+emit_16(2099);
+emit_16(2166);
+emit_16(2100);
+emit_16(2167);
+emit_16(2101);
+emit_16(2167);
+emit_16(2100);
+emit_16(2167);
+emit_16(2101);
+emit_16(2168);
+emit_16(2102);
+emit_16(2168);
+emit_16(2101);
+emit_16(2168);
+emit_16(2102);
+emit_16(2169);
+emit_16(2103);
+emit_16(2169);
+emit_16(2102);
+emit_16(2169);
+emit_16(2103);
+emit_16(2170);
+emit_16(2104);
+emit_16(2170);
+emit_16(2103);
+emit_16(2170);
+emit_16(2104);
+emit_16(2171);
+emit_16(2105);
+emit_16(2171);
+emit_16(2104);
+emit_16(2171);
+emit_16(2105);
+emit_16(2172);
+emit_16(2106);
+emit_16(2172);
+emit_16(2105);
+emit_16(2172);
+emit_16(2106);
+emit_16(2173);
+emit_16(2107);
+emit_16(2173);
+emit_16(2106);
+emit_16(2173);
+emit_16(2107);
+emit_16(2174);
+emit_16(2108);
+emit_16(2174);
+emit_16(2107);
+emit_16(2174);
+emit_16(2108);
+emit_16(2175);
+emit_16(2109);
+emit_16(2175);
+emit_16(2108);
+emit_16(2175);
+emit_16(2109);
+emit_16(2176);
+emit_16(2110);
+emit_16(2176);
+emit_16(2109);
+emit_16(2176);
+emit_16(2110);
+emit_16(2177);
+emit_16(2111);
+emit_16(2177);
+emit_16(2110);
+emit_16(2178);
+emit_16(2112);
+emit_16(2179);
+emit_16(2113);
+emit_16(2179);
+emit_16(2112);
+emit_16(2179);
+emit_16(2113);
+emit_16(2180);
+emit_16(2114);
+emit_16(2180);
+emit_16(2113);
+emit_16(2180);
+emit_16(2114);
+emit_16(2181);
+emit_16(2115);
+emit_16(2181);
+emit_16(2114);
+emit_16(2181);
+emit_16(2115);
+emit_16(2182);
+emit_16(2116);
+emit_16(2182);
+emit_16(2115);
+emit_16(2182);
+emit_16(2116);
+emit_16(2183);
+emit_16(2117);
+emit_16(2183);
+emit_16(2116);
+emit_16(2183);
+emit_16(2117);
+emit_16(2184);
+emit_16(2118);
+emit_16(2184);
+emit_16(2117);
+emit_16(2184);
+emit_16(2118);
+emit_16(2185);
+emit_16(2119);
+emit_16(2185);
+emit_16(2118);
+emit_16(2185);
+emit_16(2119);
+emit_16(2186);
+emit_16(2120);
+emit_16(2186);
+emit_16(2119);
+emit_16(2186);
+emit_16(2120);
+emit_16(2187);
+emit_16(2121);
+emit_16(2187);
+emit_16(2120);
+emit_16(2187);
+emit_16(2121);
+emit_16(2188);
+emit_16(2122);
+emit_16(2188);
+emit_16(2121);
+emit_16(2188);
+emit_16(2122);
+emit_16(2189);
+emit_16(2123);
+emit_16(2189);
+emit_16(2122);
+emit_16(2189);
+emit_16(2123);
+emit_16(2190);
+emit_16(2124);
+emit_16(2190);
+emit_16(2123);
+emit_16(2190);
+emit_16(2124);
+emit_16(2191);
+emit_16(2125);
+emit_16(2191);
+emit_16(2124);
+emit_16(2191);
+emit_16(2125);
+emit_16(2192);
+emit_16(2126);
+emit_16(2192);
+emit_16(2125);
+emit_16(2192);
+emit_16(2126);
+emit_16(2193);
+emit_16(2127);
+emit_16(2193);
+emit_16(2126);
+emit_16(2193);
+emit_16(2127);
+emit_16(2194);
+emit_16(2128);
+emit_16(2194);
+emit_16(2127);
+emit_16(2194);
+emit_16(2128);
+emit_16(2195);
+emit_16(2129);
+emit_16(2195);
+emit_16(2128);
+emit_16(2195);
+emit_16(2129);
+emit_16(2196);
+emit_16(2130);
+emit_16(2196);
+emit_16(2129);
+emit_16(2196);
+emit_16(2130);
+emit_16(2197);
+emit_16(2131);
+emit_16(2197);
+emit_16(2130);
+emit_16(2197);
+emit_16(2131);
+emit_16(2198);
+emit_16(2132);
+emit_16(2198);
+emit_16(2131);
+emit_16(2198);
+emit_16(2132);
+emit_16(2199);
+emit_16(2133);
+emit_16(2199);
+emit_16(2132);
+emit_16(2199);
+emit_16(2133);
+emit_16(2200);
+emit_16(2134);
+emit_16(2200);
+emit_16(2133);
+emit_16(2200);
+emit_16(2134);
+emit_16(2201);
+emit_16(2135);
+emit_16(2201);
+emit_16(2134);
+emit_16(2201);
+emit_16(2135);
+emit_16(2202);
+emit_16(2136);
+emit_16(2202);
+emit_16(2135);
+emit_16(2202);
+emit_16(2136);
+emit_16(2203);
+emit_16(2137);
+emit_16(2203);
+emit_16(2136);
+emit_16(2203);
+emit_16(2137);
+emit_16(2204);
+emit_16(2138);
+emit_16(2204);
+emit_16(2137);
+emit_16(2204);
+emit_16(2138);
+emit_16(2205);
+emit_16(2139);
+emit_16(2205);
+emit_16(2138);
+emit_16(2205);
+emit_16(2139);
+emit_16(2206);
+emit_16(2140);
+emit_16(2206);
+emit_16(2139);
+emit_16(2206);
+emit_16(2140);
+emit_16(2207);
+emit_16(2141);
+emit_16(2207);
+emit_16(2140);
+emit_16(2207);
+emit_16(2141);
+emit_16(2208);
+emit_16(2142);
+emit_16(2208);
+emit_16(2141);
+emit_16(2208);
+emit_16(2142);
+emit_16(2209);
+emit_16(2143);
+emit_16(2209);
+emit_16(2142);
+emit_16(2209);
+emit_16(2143);
+emit_16(2210);
+emit_16(2144);
+emit_16(2210);
+emit_16(2143);
+emit_16(2210);
+emit_16(2144);
+emit_16(2211);
+emit_16(2145);
+emit_16(2211);
+emit_16(2144);
+emit_16(2211);
+emit_16(2145);
+emit_16(2212);
+emit_16(2146);
+emit_16(2212);
+emit_16(2145);
+emit_16(2212);
+emit_16(2146);
+emit_16(2213);
+emit_16(2147);
+emit_16(2213);
+emit_16(2146);
+emit_16(2213);
+emit_16(2147);
+emit_16(2214);
+emit_16(2148);
+emit_16(2214);
+emit_16(2147);
+emit_16(2214);
+emit_16(2148);
+emit_16(2215);
+emit_16(2149);
+emit_16(2215);
+emit_16(2148);
+emit_16(2215);
+emit_16(2149);
+emit_16(2216);
+emit_16(2150);
+emit_16(2216);
+emit_16(2149);
+emit_16(2216);
+emit_16(2150);
+emit_16(2217);
+emit_16(2151);
+emit_16(2217);
+emit_16(2150);
+emit_16(2217);
+emit_16(2151);
+emit_16(2218);
+emit_16(2152);
+emit_16(2218);
+emit_16(2151);
+emit_16(2218);
+emit_16(2152);
+emit_16(2219);
+emit_16(2153);
+emit_16(2219);
+emit_16(2152);
+emit_16(2219);
+emit_16(2153);
+emit_16(2220);
+emit_16(2154);
+emit_16(2220);
+emit_16(2153);
+emit_16(2220);
+emit_16(2154);
+emit_16(2221);
+emit_16(2155);
+emit_16(2221);
+emit_16(2154);
+emit_16(2221);
+emit_16(2155);
+emit_16(2222);
+emit_16(2156);
+emit_16(2222);
+emit_16(2155);
+emit_16(2222);
+emit_16(2156);
+emit_16(2223);
+emit_16(2157);
+emit_16(2223);
+emit_16(2156);
+emit_16(2223);
+emit_16(2157);
+emit_16(2224);
+emit_16(2158);
+emit_16(2224);
+emit_16(2157);
+emit_16(2224);
+emit_16(2158);
+emit_16(2225);
+emit_16(2159);
+emit_16(2225);
+emit_16(2158);
+emit_16(2225);
+emit_16(2159);
+emit_16(2226);
+emit_16(2160);
+emit_16(2226);
+emit_16(2159);
+emit_16(2226);
+emit_16(2160);
+emit_16(2227);
+emit_16(2161);
+emit_16(2227);
+emit_16(2160);
+emit_16(2227);
+emit_16(2161);
+emit_16(2228);
+emit_16(2162);
+emit_16(2228);
+emit_16(2161);
+emit_16(2228);
+emit_16(2162);
+emit_16(2229);
+emit_16(2163);
+emit_16(2229);
+emit_16(2162);
+emit_16(2229);
+emit_16(2163);
+emit_16(2230);
+emit_16(2164);
+emit_16(2230);
+emit_16(2163);
+emit_16(2230);
+emit_16(2164);
+emit_16(2231);
+emit_16(2165);
+emit_16(2231);
+emit_16(2164);
+emit_16(2231);
+emit_16(2165);
+emit_16(2232);
+emit_16(2166);
+emit_16(2232);
+emit_16(2165);
+emit_16(2232);
+emit_16(2166);
+emit_16(2233);
+emit_16(2167);
+emit_16(2233);
+emit_16(2166);
+emit_16(2233);
+emit_16(2167);
+emit_16(2234);
+emit_16(2168);
+emit_16(2234);
+emit_16(2167);
+emit_16(2234);
+emit_16(2168);
+emit_16(2235);
+emit_16(2169);
+emit_16(2235);
+emit_16(2168);
+emit_16(2235);
+emit_16(2169);
+emit_16(2236);
+emit_16(2170);
+emit_16(2236);
+emit_16(2169);
+emit_16(2236);
+emit_16(2170);
+emit_16(2237);
+emit_16(2171);
+emit_16(2237);
+emit_16(2170);
+emit_16(2237);
+emit_16(2171);
+emit_16(2238);
+emit_16(2172);
+emit_16(2238);
+emit_16(2171);
+emit_16(2238);
+emit_16(2172);
+emit_16(2239);
+emit_16(2173);
+emit_16(2239);
+emit_16(2172);
+emit_16(2239);
+emit_16(2173);
+emit_16(2240);
+emit_16(2174);
+emit_16(2240);
+emit_16(2173);
+emit_16(2240);
+emit_16(2174);
+emit_16(2241);
+emit_16(2175);
+emit_16(2241);
+emit_16(2174);
+emit_16(2241);
+emit_16(2175);
+emit_16(2242);
+emit_16(2176);
+emit_16(2242);
+emit_16(2175);
+emit_16(2242);
+emit_16(2176);
+emit_16(2243);
+emit_16(2177);
+emit_16(2243);
+emit_16(2176);
+emit_16(2244);
+emit_16(2178);
+emit_16(2245);
+emit_16(2179);
+emit_16(2245);
+emit_16(2178);
+emit_16(2245);
+emit_16(2179);
+emit_16(2246);
+emit_16(2180);
+emit_16(2246);
+emit_16(2179);
+emit_16(2246);
+emit_16(2180);
+emit_16(2247);
+emit_16(2181);
+emit_16(2247);
+emit_16(2180);
+emit_16(2247);
+emit_16(2181);
+emit_16(2248);
+emit_16(2182);
+emit_16(2248);
+emit_16(2181);
+emit_16(2248);
+emit_16(2182);
+emit_16(2249);
+emit_16(2183);
+emit_16(2249);
+emit_16(2182);
+emit_16(2249);
+emit_16(2183);
+emit_16(2250);
+emit_16(2184);
+emit_16(2250);
+emit_16(2183);
+emit_16(2250);
+emit_16(2184);
+emit_16(2251);
+emit_16(2185);
+emit_16(2251);
+emit_16(2184);
+emit_16(2251);
+emit_16(2185);
+emit_16(2252);
+emit_16(2186);
+emit_16(2252);
+emit_16(2185);
+emit_16(2252);
+emit_16(2186);
+emit_16(2253);
+emit_16(2187);
+emit_16(2253);
+emit_16(2186);
+emit_16(2253);
+emit_16(2187);
+emit_16(2254);
+emit_16(2188);
+emit_16(2254);
+emit_16(2187);
+emit_16(2254);
+emit_16(2188);
+emit_16(2255);
+emit_16(2189);
+emit_16(2255);
+emit_16(2188);
+emit_16(2255);
+emit_16(2189);
+emit_16(2256);
+emit_16(2190);
+emit_16(2256);
+emit_16(2189);
+emit_16(2256);
+emit_16(2190);
+emit_16(2257);
+emit_16(2191);
+emit_16(2257);
+emit_16(2190);
+emit_16(2257);
+emit_16(2191);
+emit_16(2258);
+emit_16(2192);
+emit_16(2258);
+emit_16(2191);
+emit_16(2258);
+emit_16(2192);
+emit_16(2259);
+emit_16(2193);
+emit_16(2259);
+emit_16(2192);
+emit_16(2259);
+emit_16(2193);
+emit_16(2260);
+emit_16(2194);
+emit_16(2260);
+emit_16(2193);
+emit_16(2260);
+emit_16(2194);
+emit_16(2261);
+emit_16(2195);
+emit_16(2261);
+emit_16(2194);
+emit_16(2261);
+emit_16(2195);
+emit_16(2262);
+emit_16(2196);
+emit_16(2262);
+emit_16(2195);
+emit_16(2262);
+emit_16(2196);
+emit_16(2263);
+emit_16(2197);
+emit_16(2263);
+emit_16(2196);
+emit_16(2263);
+emit_16(2197);
+emit_16(2264);
+emit_16(2198);
+emit_16(2264);
+emit_16(2197);
+emit_16(2264);
+emit_16(2198);
+emit_16(2265);
+emit_16(2199);
+emit_16(2265);
+emit_16(2198);
+emit_16(2265);
+emit_16(2199);
+emit_16(2266);
+emit_16(2200);
+emit_16(2266);
+emit_16(2199);
+emit_16(2266);
+emit_16(2200);
+emit_16(2267);
+emit_16(2201);
+emit_16(2267);
+emit_16(2200);
+emit_16(2267);
+emit_16(2201);
+emit_16(2268);
+emit_16(2202);
+emit_16(2268);
+emit_16(2201);
+emit_16(2268);
+emit_16(2202);
+emit_16(2269);
+emit_16(2203);
+emit_16(2269);
+emit_16(2202);
+emit_16(2269);
+emit_16(2203);
+emit_16(2270);
+emit_16(2204);
+emit_16(2270);
+emit_16(2203);
+emit_16(2270);
+emit_16(2204);
+emit_16(2271);
+emit_16(2205);
+emit_16(2271);
+emit_16(2204);
+emit_16(2271);
+emit_16(2205);
+emit_16(2272);
+emit_16(2206);
+emit_16(2272);
+emit_16(2205);
+emit_16(2272);
+emit_16(2206);
+emit_16(2273);
+emit_16(2207);
+emit_16(2273);
+emit_16(2206);
+emit_16(2273);
+emit_16(2207);
+emit_16(2274);
+emit_16(2208);
+emit_16(2274);
+emit_16(2207);
+emit_16(2274);
+emit_16(2208);
+emit_16(2275);
+emit_16(2209);
+emit_16(2275);
+emit_16(2208);
+emit_16(2275);
+emit_16(2209);
+emit_16(2276);
+emit_16(2210);
+emit_16(2276);
+emit_16(2209);
+emit_16(2276);
+emit_16(2210);
+emit_16(2277);
+emit_16(2211);
+emit_16(2277);
+emit_16(2210);
+emit_16(2277);
+emit_16(2211);
+emit_16(2278);
+emit_16(2212);
+emit_16(2278);
+emit_16(2211);
+emit_16(2278);
+emit_16(2212);
+emit_16(2279);
+emit_16(2213);
+emit_16(2279);
+emit_16(2212);
+emit_16(2279);
+emit_16(2213);
+emit_16(2280);
+emit_16(2214);
+emit_16(2280);
+emit_16(2213);
+emit_16(2280);
+emit_16(2214);
+emit_16(2281);
+emit_16(2215);
+emit_16(2281);
+emit_16(2214);
+emit_16(2281);
+emit_16(2215);
+emit_16(2282);
+emit_16(2216);
+emit_16(2282);
+emit_16(2215);
+emit_16(2282);
+emit_16(2216);
+emit_16(2283);
+emit_16(2217);
+emit_16(2283);
+emit_16(2216);
+emit_16(2283);
+emit_16(2217);
+emit_16(2284);
+emit_16(2218);
+emit_16(2284);
+emit_16(2217);
+emit_16(2284);
+emit_16(2218);
+emit_16(2285);
+emit_16(2219);
+emit_16(2285);
+emit_16(2218);
+emit_16(2285);
+emit_16(2219);
+emit_16(2286);
+emit_16(2220);
+emit_16(2286);
+emit_16(2219);
+emit_16(2286);
+emit_16(2220);
+emit_16(2287);
+emit_16(2221);
+emit_16(2287);
+emit_16(2220);
+emit_16(2287);
+emit_16(2221);
+emit_16(2288);
+emit_16(2222);
+emit_16(2288);
+emit_16(2221);
+emit_16(2288);
+emit_16(2222);
+emit_16(2289);
+emit_16(2223);
+emit_16(2289);
+emit_16(2222);
+emit_16(2289);
+emit_16(2223);
+emit_16(2290);
+emit_16(2224);
+emit_16(2290);
+emit_16(2223);
+emit_16(2290);
+emit_16(2224);
+emit_16(2291);
+emit_16(2225);
+emit_16(2291);
+emit_16(2224);
+emit_16(2291);
+emit_16(2225);
+emit_16(2292);
+emit_16(2226);
+emit_16(2292);
+emit_16(2225);
+emit_16(2292);
+emit_16(2226);
+emit_16(2293);
+emit_16(2227);
+emit_16(2293);
+emit_16(2226);
+emit_16(2293);
+emit_16(2227);
+emit_16(2294);
+emit_16(2228);
+emit_16(2294);
+emit_16(2227);
+emit_16(2294);
+emit_16(2228);
+emit_16(2295);
+emit_16(2229);
+emit_16(2295);
+emit_16(2228);
+emit_16(2295);
+emit_16(2229);
+emit_16(2296);
+emit_16(2230);
+emit_16(2296);
+emit_16(2229);
+emit_16(2296);
+emit_16(2230);
+emit_16(2297);
+emit_16(2231);
+emit_16(2297);
+emit_16(2230);
+emit_16(2297);
+emit_16(2231);
+emit_16(2298);
+emit_16(2232);
+emit_16(2298);
+emit_16(2231);
+emit_16(2298);
+emit_16(2232);
+emit_16(2299);
+emit_16(2233);
+emit_16(2299);
+emit_16(2232);
+emit_16(2299);
+emit_16(2233);
+emit_16(2300);
+emit_16(2234);
+emit_16(2300);
+emit_16(2233);
+emit_16(2300);
+emit_16(2234);
+emit_16(2301);
+emit_16(2235);
+emit_16(2301);
+emit_16(2234);
+emit_16(2301);
+emit_16(2235);
+emit_16(2302);
+emit_16(2236);
+emit_16(2302);
+emit_16(2235);
+emit_16(2302);
+emit_16(2236);
+emit_16(2303);
+emit_16(2237);
+emit_16(2303);
+emit_16(2236);
+emit_16(2303);
+emit_16(2237);
+emit_16(2304);
+emit_16(2238);
+emit_16(2304);
+emit_16(2237);
+emit_16(2304);
+emit_16(2238);
+emit_16(2305);
+emit_16(2239);
+emit_16(2305);
+emit_16(2238);
+emit_16(2305);
+emit_16(2239);
+emit_16(2306);
+emit_16(2240);
+emit_16(2306);
+emit_16(2239);
+emit_16(2306);
+emit_16(2240);
+emit_16(2307);
+emit_16(2241);
+emit_16(2307);
+emit_16(2240);
+emit_16(2307);
+emit_16(2241);
+emit_16(2308);
+emit_16(2242);
+emit_16(2308);
+emit_16(2241);
+emit_16(2308);
+emit_16(2242);
+emit_16(2309);
+emit_16(2243);
+emit_16(2309);
+emit_16(2242);
+emit_start(Landscape07Idx)
+emit_16(0);
+emit_16(1);
+emit_16(2);
+emit_16(3);
+emit_16(2);
+emit_16(1);
+emit_16(2);
+emit_16(3);
+emit_16(4);
+emit_16(5);
+emit_16(4);
+emit_16(3);
+emit_16(4);
+emit_16(5);
+emit_16(6);
+emit_16(7);
+emit_16(6);
+emit_16(5);
+emit_16(6);
+emit_16(7);
+emit_16(8);
+emit_16(9);
+emit_16(8);
+emit_16(7);
+emit_16(8);
+emit_16(9);
+emit_16(10);
+emit_16(11);
+emit_16(10);
+emit_16(9);
+emit_16(10);
+emit_16(11);
+emit_16(12);
+emit_16(13);
+emit_16(12);
+emit_16(11);
+emit_16(12);
+emit_16(13);
+emit_16(14);
+emit_16(15);
+emit_16(14);
+emit_16(13);
+emit_16(14);
+emit_16(15);
+emit_16(16);
+emit_16(17);
+emit_16(16);
+emit_16(15);
+emit_16(16);
+emit_16(17);
+emit_16(18);
+emit_16(19);
+emit_16(18);
+emit_16(17);
+emit_16(18);
+emit_16(19);
+emit_16(20);
+emit_16(21);
+emit_16(20);
+emit_16(19);
+emit_16(20);
+emit_16(21);
+emit_16(22);
+emit_16(23);
+emit_16(22);
+emit_16(21);
+emit_16(22);
+emit_16(23);
+emit_16(24);
+emit_16(25);
+emit_16(24);
+emit_16(23);
+emit_16(24);
+emit_16(25);
+emit_16(26);
+emit_16(27);
+emit_16(26);
+emit_16(25);
+emit_16(26);
+emit_16(27);
+emit_16(28);
+emit_16(29);
+emit_16(28);
+emit_16(27);
+emit_16(28);
+emit_16(29);
+emit_16(30);
+emit_16(31);
+emit_16(30);
+emit_16(29);
+emit_16(30);
+emit_16(31);
+emit_16(32);
+emit_16(33);
+emit_16(32);
+emit_16(31);
+emit_16(32);
+emit_16(33);
+emit_16(34);
+emit_16(35);
+emit_16(34);
+emit_16(33);
+emit_16(34);
+emit_16(35);
+emit_16(36);
+emit_16(37);
+emit_16(36);
+emit_16(35);
+emit_16(36);
+emit_16(37);
+emit_16(38);
+emit_16(39);
+emit_16(38);
+emit_16(37);
+emit_16(38);
+emit_16(39);
+emit_16(40);
+emit_16(41);
+emit_16(40);
+emit_16(39);
+emit_16(40);
+emit_16(41);
+emit_16(42);
+emit_16(43);
+emit_16(42);
+emit_16(41);
+emit_16(42);
+emit_16(43);
+emit_16(44);
+emit_16(45);
+emit_16(44);
+emit_16(43);
+emit_16(44);
+emit_16(45);
+emit_16(46);
+emit_16(47);
+emit_16(46);
+emit_16(45);
+emit_16(46);
+emit_16(47);
+emit_16(48);
+emit_16(49);
+emit_16(48);
+emit_16(47);
+emit_16(48);
+emit_16(49);
+emit_16(50);
+emit_16(51);
+emit_16(50);
+emit_16(49);
+emit_16(50);
+emit_16(51);
+emit_16(52);
+emit_16(53);
+emit_16(52);
+emit_16(51);
+emit_16(52);
+emit_16(53);
+emit_16(54);
+emit_16(55);
+emit_16(54);
+emit_16(53);
+emit_16(54);
+emit_16(55);
+emit_16(56);
+emit_16(57);
+emit_16(56);
+emit_16(55);
+emit_16(56);
+emit_16(57);
+emit_16(58);
+emit_16(59);
+emit_16(58);
+emit_16(57);
+emit_16(58);
+emit_16(59);
+emit_16(60);
+emit_16(61);
+emit_16(60);
+emit_16(59);
+emit_16(60);
+emit_16(61);
+emit_16(62);
+emit_16(63);
+emit_16(62);
+emit_16(61);
+emit_16(62);
+emit_16(63);
+emit_16(64);
+emit_16(65);
+emit_16(64);
+emit_16(63);
+emit_16(64);
+emit_16(65);
+emit_16(66);
+emit_16(67);
+emit_16(66);
+emit_16(65);
+emit_16(66);
+emit_16(67);
+emit_16(68);
+emit_16(69);
+emit_16(68);
+emit_16(67);
+emit_16(68);
+emit_16(69);
+emit_16(70);
+emit_16(71);
+emit_16(70);
+emit_16(69);
+emit_16(70);
+emit_16(71);
+emit_16(72);
+emit_16(73);
+emit_16(72);
+emit_16(71);
+emit_16(72);
+emit_16(73);
+emit_16(74);
+emit_16(75);
+emit_16(74);
+emit_16(73);
+emit_16(74);
+emit_16(75);
+emit_16(76);
+emit_16(77);
+emit_16(76);
+emit_16(75);
+emit_16(76);
+emit_16(77);
+emit_16(78);
+emit_16(79);
+emit_16(78);
+emit_16(77);
+emit_16(78);
+emit_16(79);
+emit_16(80);
+emit_16(81);
+emit_16(80);
+emit_16(79);
+emit_16(80);
+emit_16(81);
+emit_16(82);
+emit_16(83);
+emit_16(82);
+emit_16(81);
+emit_16(82);
+emit_16(83);
+emit_16(84);
+emit_16(85);
+emit_16(84);
+emit_16(83);
+emit_16(84);
+emit_16(85);
+emit_16(86);
+emit_16(87);
+emit_16(86);
+emit_16(85);
+emit_16(86);
+emit_16(87);
+emit_16(88);
+emit_16(89);
+emit_16(88);
+emit_16(87);
+emit_16(88);
+emit_16(89);
+emit_16(90);
+emit_16(91);
+emit_16(90);
+emit_16(89);
+emit_16(90);
+emit_16(91);
+emit_16(92);
+emit_16(93);
+emit_16(92);
+emit_16(91);
+emit_16(92);
+emit_16(93);
+emit_16(94);
+emit_16(95);
+emit_16(94);
+emit_16(93);
+emit_16(94);
+emit_16(95);
+emit_16(96);
+emit_16(97);
+emit_16(96);
+emit_16(95);
+emit_16(96);
+emit_16(97);
+emit_16(98);
+emit_16(99);
+emit_16(98);
+emit_16(97);
+emit_16(98);
+emit_16(99);
+emit_16(100);
+emit_16(101);
+emit_16(100);
+emit_16(99);
+emit_16(100);
+emit_16(101);
+emit_16(102);
+emit_16(103);
+emit_16(102);
+emit_16(101);
+emit_16(102);
+emit_16(103);
+emit_16(104);
+emit_16(105);
+emit_16(104);
+emit_16(103);
+emit_16(104);
+emit_16(105);
+emit_16(106);
+emit_16(107);
+emit_16(106);
+emit_16(105);
+emit_16(106);
+emit_16(107);
+emit_16(108);
+emit_16(109);
+emit_16(108);
+emit_16(107);
+emit_16(108);
+emit_16(109);
+emit_16(110);
+emit_16(111);
+emit_16(110);
+emit_16(109);
+emit_16(110);
+emit_16(111);
+emit_16(112);
+emit_16(113);
+emit_16(112);
+emit_16(111);
+emit_16(112);
+emit_16(113);
+emit_16(114);
+emit_16(115);
+emit_16(114);
+emit_16(113);
+emit_16(114);
+emit_16(115);
+emit_16(116);
+emit_16(117);
+emit_16(116);
+emit_16(115);
+emit_16(116);
+emit_16(117);
+emit_16(118);
+emit_16(119);
+emit_16(118);
+emit_16(117);
+emit_16(118);
+emit_16(119);
+emit_16(120);
+emit_16(121);
+emit_16(120);
+emit_16(119);
+emit_16(120);
+emit_16(121);
+emit_16(122);
+emit_16(123);
+emit_16(122);
+emit_16(121);
+emit_16(122);
+emit_16(123);
+emit_16(124);
+emit_16(125);
+emit_16(124);
+emit_16(123);
+emit_16(124);
+emit_16(125);
+emit_16(126);
+emit_16(127);
+emit_16(126);
+emit_16(125);
+emit_16(128);
+emit_16(0);
+emit_16(129);
+emit_16(2);
+emit_16(129);
+emit_16(0);
+emit_16(129);
+emit_16(2);
+emit_16(130);
+emit_16(4);
+emit_16(130);
+emit_16(2);
+emit_16(130);
+emit_16(4);
+emit_16(131);
+emit_16(6);
+emit_16(131);
+emit_16(4);
+emit_16(131);
+emit_16(6);
+emit_16(132);
+emit_16(8);
+emit_16(132);
+emit_16(6);
+emit_16(132);
+emit_16(8);
+emit_16(133);
+emit_16(10);
+emit_16(133);
+emit_16(8);
+emit_16(133);
+emit_16(10);
+emit_16(134);
+emit_16(12);
+emit_16(134);
+emit_16(10);
+emit_16(134);
+emit_16(12);
+emit_16(135);
+emit_16(14);
+emit_16(135);
+emit_16(12);
+emit_16(135);
+emit_16(14);
+emit_16(136);
+emit_16(16);
+emit_16(136);
+emit_16(14);
+emit_16(136);
+emit_16(16);
+emit_16(137);
+emit_16(18);
+emit_16(137);
+emit_16(16);
+emit_16(137);
+emit_16(18);
+emit_16(138);
+emit_16(20);
+emit_16(138);
+emit_16(18);
+emit_16(138);
+emit_16(20);
+emit_16(139);
+emit_16(22);
+emit_16(139);
+emit_16(20);
+emit_16(139);
+emit_16(22);
+emit_16(140);
+emit_16(24);
+emit_16(140);
+emit_16(22);
+emit_16(140);
+emit_16(24);
+emit_16(141);
+emit_16(26);
+emit_16(141);
+emit_16(24);
+emit_16(141);
+emit_16(26);
+emit_16(142);
+emit_16(28);
+emit_16(142);
+emit_16(26);
+emit_16(142);
+emit_16(28);
+emit_16(143);
+emit_16(30);
+emit_16(143);
+emit_16(28);
+emit_16(143);
+emit_16(30);
+emit_16(144);
+emit_16(32);
+emit_16(144);
+emit_16(30);
+emit_16(144);
+emit_16(32);
+emit_16(145);
+emit_16(34);
+emit_16(145);
+emit_16(32);
+emit_16(145);
+emit_16(34);
+emit_16(146);
+emit_16(36);
+emit_16(146);
+emit_16(34);
+emit_16(146);
+emit_16(36);
+emit_16(147);
+emit_16(38);
+emit_16(147);
+emit_16(36);
+emit_16(147);
+emit_16(38);
+emit_16(148);
+emit_16(40);
+emit_16(148);
+emit_16(38);
+emit_16(148);
+emit_16(40);
+emit_16(149);
+emit_16(42);
+emit_16(149);
+emit_16(40);
+emit_16(149);
+emit_16(42);
+emit_16(150);
+emit_16(44);
+emit_16(150);
+emit_16(42);
+emit_16(150);
+emit_16(44);
+emit_16(151);
+emit_16(46);
+emit_16(151);
+emit_16(44);
+emit_16(151);
+emit_16(46);
+emit_16(152);
+emit_16(48);
+emit_16(152);
+emit_16(46);
+emit_16(152);
+emit_16(48);
+emit_16(153);
+emit_16(50);
+emit_16(153);
+emit_16(48);
+emit_16(153);
+emit_16(50);
+emit_16(154);
+emit_16(52);
+emit_16(154);
+emit_16(50);
+emit_16(154);
+emit_16(52);
+emit_16(155);
+emit_16(54);
+emit_16(155);
+emit_16(52);
+emit_16(155);
+emit_16(54);
+emit_16(156);
+emit_16(56);
+emit_16(156);
+emit_16(54);
+emit_16(156);
+emit_16(56);
+emit_16(157);
+emit_16(58);
+emit_16(157);
+emit_16(56);
+emit_16(157);
+emit_16(58);
+emit_16(158);
+emit_16(60);
+emit_16(158);
+emit_16(58);
+emit_16(158);
+emit_16(60);
+emit_16(159);
+emit_16(62);
+emit_16(159);
+emit_16(60);
+emit_16(159);
+emit_16(62);
+emit_16(160);
+emit_16(64);
+emit_16(160);
+emit_16(62);
+emit_16(160);
+emit_16(64);
+emit_16(161);
+emit_16(66);
+emit_16(161);
+emit_16(64);
+emit_16(161);
+emit_16(66);
+emit_16(162);
+emit_16(68);
+emit_16(162);
+emit_16(66);
+emit_16(162);
+emit_16(68);
+emit_16(163);
+emit_16(70);
+emit_16(163);
+emit_16(68);
+emit_16(163);
+emit_16(70);
+emit_16(164);
+emit_16(72);
+emit_16(164);
+emit_16(70);
+emit_16(164);
+emit_16(72);
+emit_16(165);
+emit_16(74);
+emit_16(165);
+emit_16(72);
+emit_16(165);
+emit_16(74);
+emit_16(166);
+emit_16(76);
+emit_16(166);
+emit_16(74);
+emit_16(166);
+emit_16(76);
+emit_16(167);
+emit_16(78);
+emit_16(167);
+emit_16(76);
+emit_16(167);
+emit_16(78);
+emit_16(168);
+emit_16(80);
+emit_16(168);
+emit_16(78);
+emit_16(168);
+emit_16(80);
+emit_16(169);
+emit_16(82);
+emit_16(169);
+emit_16(80);
+emit_16(169);
+emit_16(82);
+emit_16(170);
+emit_16(84);
+emit_16(170);
+emit_16(82);
+emit_16(170);
+emit_16(84);
+emit_16(171);
+emit_16(86);
+emit_16(171);
+emit_16(84);
+emit_16(171);
+emit_16(86);
+emit_16(172);
+emit_16(88);
+emit_16(172);
+emit_16(86);
+emit_16(172);
+emit_16(88);
+emit_16(173);
+emit_16(90);
+emit_16(173);
+emit_16(88);
+emit_16(173);
+emit_16(90);
+emit_16(174);
+emit_16(92);
+emit_16(174);
+emit_16(90);
+emit_16(174);
+emit_16(92);
+emit_16(175);
+emit_16(94);
+emit_16(175);
+emit_16(92);
+emit_16(175);
+emit_16(94);
+emit_16(176);
+emit_16(96);
+emit_16(176);
+emit_16(94);
+emit_16(176);
+emit_16(96);
+emit_16(177);
+emit_16(98);
+emit_16(177);
+emit_16(96);
+emit_16(177);
+emit_16(98);
+emit_16(178);
+emit_16(100);
+emit_16(178);
+emit_16(98);
+emit_16(178);
+emit_16(100);
+emit_16(179);
+emit_16(102);
+emit_16(179);
+emit_16(100);
+emit_16(179);
+emit_16(102);
+emit_16(180);
+emit_16(104);
+emit_16(180);
+emit_16(102);
+emit_16(180);
+emit_16(104);
+emit_16(181);
+emit_16(106);
+emit_16(181);
+emit_16(104);
+emit_16(181);
+emit_16(106);
+emit_16(182);
+emit_16(108);
+emit_16(182);
+emit_16(106);
+emit_16(182);
+emit_16(108);
+emit_16(183);
+emit_16(110);
+emit_16(183);
+emit_16(108);
+emit_16(183);
+emit_16(110);
+emit_16(184);
+emit_16(112);
+emit_16(184);
+emit_16(110);
+emit_16(184);
+emit_16(112);
+emit_16(185);
+emit_16(114);
+emit_16(185);
+emit_16(112);
+emit_16(185);
+emit_16(114);
+emit_16(186);
+emit_16(116);
+emit_16(186);
+emit_16(114);
+emit_16(186);
+emit_16(116);
+emit_16(187);
+emit_16(118);
+emit_16(187);
+emit_16(116);
+emit_16(187);
+emit_16(118);
+emit_16(188);
+emit_16(120);
+emit_16(188);
+emit_16(118);
+emit_16(188);
+emit_16(120);
+emit_16(189);
+emit_16(122);
+emit_16(189);
+emit_16(120);
+emit_16(189);
+emit_16(122);
+emit_16(190);
+emit_16(124);
+emit_16(190);
+emit_16(122);
+emit_16(190);
+emit_16(124);
+emit_16(191);
+emit_16(126);
+emit_16(191);
+emit_16(124);
+emit_16(192);
+emit_16(128);
+emit_16(193);
+emit_16(129);
+emit_16(193);
+emit_16(128);
+emit_16(193);
+emit_16(129);
+emit_16(194);
+emit_16(130);
+emit_16(194);
+emit_16(129);
+emit_16(194);
+emit_16(130);
+emit_16(195);
+emit_16(131);
+emit_16(195);
+emit_16(130);
+emit_16(195);
+emit_16(131);
+emit_16(196);
+emit_16(132);
+emit_16(196);
+emit_16(131);
+emit_16(196);
+emit_16(132);
+emit_16(197);
+emit_16(133);
+emit_16(197);
+emit_16(132);
+emit_16(197);
+emit_16(133);
+emit_16(198);
+emit_16(134);
+emit_16(198);
+emit_16(133);
+emit_16(198);
+emit_16(134);
+emit_16(199);
+emit_16(135);
+emit_16(199);
+emit_16(134);
+emit_16(199);
+emit_16(135);
+emit_16(200);
+emit_16(136);
+emit_16(200);
+emit_16(135);
+emit_16(200);
+emit_16(136);
+emit_16(201);
+emit_16(137);
+emit_16(201);
+emit_16(136);
+emit_16(201);
+emit_16(137);
+emit_16(202);
+emit_16(138);
+emit_16(202);
+emit_16(137);
+emit_16(202);
+emit_16(138);
+emit_16(203);
+emit_16(139);
+emit_16(203);
+emit_16(138);
+emit_16(203);
+emit_16(139);
+emit_16(204);
+emit_16(140);
+emit_16(204);
+emit_16(139);
+emit_16(204);
+emit_16(140);
+emit_16(205);
+emit_16(141);
+emit_16(205);
+emit_16(140);
+emit_16(205);
+emit_16(141);
+emit_16(206);
+emit_16(142);
+emit_16(206);
+emit_16(141);
+emit_16(206);
+emit_16(142);
+emit_16(207);
+emit_16(143);
+emit_16(207);
+emit_16(142);
+emit_16(207);
+emit_16(143);
+emit_16(208);
+emit_16(144);
+emit_16(208);
+emit_16(143);
+emit_16(208);
+emit_16(144);
+emit_16(209);
+emit_16(145);
+emit_16(209);
+emit_16(144);
+emit_16(209);
+emit_16(145);
+emit_16(210);
+emit_16(146);
+emit_16(210);
+emit_16(145);
+emit_16(210);
+emit_16(146);
+emit_16(211);
+emit_16(147);
+emit_16(211);
+emit_16(146);
+emit_16(211);
+emit_16(147);
+emit_16(212);
+emit_16(148);
+emit_16(212);
+emit_16(147);
+emit_16(212);
+emit_16(148);
+emit_16(213);
+emit_16(149);
+emit_16(213);
+emit_16(148);
+emit_16(213);
+emit_16(149);
+emit_16(214);
+emit_16(150);
+emit_16(214);
+emit_16(149);
+emit_16(214);
+emit_16(150);
+emit_16(215);
+emit_16(151);
+emit_16(215);
+emit_16(150);
+emit_16(215);
+emit_16(151);
+emit_16(216);
+emit_16(152);
+emit_16(216);
+emit_16(151);
+emit_16(216);
+emit_16(152);
+emit_16(217);
+emit_16(153);
+emit_16(217);
+emit_16(152);
+emit_16(217);
+emit_16(153);
+emit_16(218);
+emit_16(154);
+emit_16(218);
+emit_16(153);
+emit_16(218);
+emit_16(154);
+emit_16(219);
+emit_16(155);
+emit_16(219);
+emit_16(154);
+emit_16(219);
+emit_16(155);
+emit_16(220);
+emit_16(156);
+emit_16(220);
+emit_16(155);
+emit_16(220);
+emit_16(156);
+emit_16(221);
+emit_16(157);
+emit_16(221);
+emit_16(156);
+emit_16(221);
+emit_16(157);
+emit_16(222);
+emit_16(158);
+emit_16(222);
+emit_16(157);
+emit_16(222);
+emit_16(158);
+emit_16(223);
+emit_16(159);
+emit_16(223);
+emit_16(158);
+emit_16(223);
+emit_16(159);
+emit_16(224);
+emit_16(160);
+emit_16(224);
+emit_16(159);
+emit_16(224);
+emit_16(160);
+emit_16(225);
+emit_16(161);
+emit_16(225);
+emit_16(160);
+emit_16(225);
+emit_16(161);
+emit_16(226);
+emit_16(162);
+emit_16(226);
+emit_16(161);
+emit_16(226);
+emit_16(162);
+emit_16(227);
+emit_16(163);
+emit_16(227);
+emit_16(162);
+emit_16(227);
+emit_16(163);
+emit_16(228);
+emit_16(164);
+emit_16(228);
+emit_16(163);
+emit_16(228);
+emit_16(164);
+emit_16(229);
+emit_16(165);
+emit_16(229);
+emit_16(164);
+emit_16(229);
+emit_16(165);
+emit_16(230);
+emit_16(166);
+emit_16(230);
+emit_16(165);
+emit_16(230);
+emit_16(166);
+emit_16(231);
+emit_16(167);
+emit_16(231);
+emit_16(166);
+emit_16(231);
+emit_16(167);
+emit_16(232);
+emit_16(168);
+emit_16(232);
+emit_16(167);
+emit_16(232);
+emit_16(168);
+emit_16(233);
+emit_16(169);
+emit_16(233);
+emit_16(168);
+emit_16(233);
+emit_16(169);
+emit_16(234);
+emit_16(170);
+emit_16(234);
+emit_16(169);
+emit_16(234);
+emit_16(170);
+emit_16(235);
+emit_16(171);
+emit_16(235);
+emit_16(170);
+emit_16(235);
+emit_16(171);
+emit_16(236);
+emit_16(172);
+emit_16(236);
+emit_16(171);
+emit_16(236);
+emit_16(172);
+emit_16(237);
+emit_16(173);
+emit_16(237);
+emit_16(172);
+emit_16(237);
+emit_16(173);
+emit_16(238);
+emit_16(174);
+emit_16(238);
+emit_16(173);
+emit_16(238);
+emit_16(174);
+emit_16(239);
+emit_16(175);
+emit_16(239);
+emit_16(174);
+emit_16(239);
+emit_16(175);
+emit_16(240);
+emit_16(176);
+emit_16(240);
+emit_16(175);
+emit_16(240);
+emit_16(176);
+emit_16(241);
+emit_16(177);
+emit_16(241);
+emit_16(176);
+emit_16(241);
+emit_16(177);
+emit_16(242);
+emit_16(178);
+emit_16(242);
+emit_16(177);
+emit_16(242);
+emit_16(178);
+emit_16(243);
+emit_16(179);
+emit_16(243);
+emit_16(178);
+emit_16(243);
+emit_16(179);
+emit_16(244);
+emit_16(180);
+emit_16(244);
+emit_16(179);
+emit_16(244);
+emit_16(180);
+emit_16(245);
+emit_16(181);
+emit_16(245);
+emit_16(180);
+emit_16(245);
+emit_16(181);
+emit_16(246);
+emit_16(182);
+emit_16(246);
+emit_16(181);
+emit_16(246);
+emit_16(182);
+emit_16(247);
+emit_16(183);
+emit_16(247);
+emit_16(182);
+emit_16(247);
+emit_16(183);
+emit_16(248);
+emit_16(184);
+emit_16(248);
+emit_16(183);
+emit_16(248);
+emit_16(184);
+emit_16(249);
+emit_16(185);
+emit_16(249);
+emit_16(184);
+emit_16(249);
+emit_16(185);
+emit_16(250);
+emit_16(186);
+emit_16(250);
+emit_16(185);
+emit_16(250);
+emit_16(186);
+emit_16(251);
+emit_16(187);
+emit_16(251);
+emit_16(186);
+emit_16(251);
+emit_16(187);
+emit_16(252);
+emit_16(188);
+emit_16(252);
+emit_16(187);
+emit_16(252);
+emit_16(188);
+emit_16(253);
+emit_16(189);
+emit_16(253);
+emit_16(188);
+emit_16(253);
+emit_16(189);
+emit_16(254);
+emit_16(190);
+emit_16(254);
+emit_16(189);
+emit_16(254);
+emit_16(190);
+emit_16(255);
+emit_16(191);
+emit_16(255);
+emit_16(190);
+emit_16(256);
+emit_16(192);
+emit_16(257);
+emit_16(193);
+emit_16(257);
+emit_16(192);
+emit_16(257);
+emit_16(193);
+emit_16(258);
+emit_16(194);
+emit_16(258);
+emit_16(193);
+emit_16(258);
+emit_16(194);
+emit_16(259);
+emit_16(195);
+emit_16(259);
+emit_16(194);
+emit_16(259);
+emit_16(195);
+emit_16(260);
+emit_16(196);
+emit_16(260);
+emit_16(195);
+emit_16(260);
+emit_16(196);
+emit_16(261);
+emit_16(197);
+emit_16(261);
+emit_16(196);
+emit_16(261);
+emit_16(197);
+emit_16(262);
+emit_16(198);
+emit_16(262);
+emit_16(197);
+emit_16(262);
+emit_16(198);
+emit_16(263);
+emit_16(199);
+emit_16(263);
+emit_16(198);
+emit_16(263);
+emit_16(199);
+emit_16(264);
+emit_16(200);
+emit_16(264);
+emit_16(199);
+emit_16(264);
+emit_16(200);
+emit_16(265);
+emit_16(201);
+emit_16(265);
+emit_16(200);
+emit_16(265);
+emit_16(201);
+emit_16(266);
+emit_16(202);
+emit_16(266);
+emit_16(201);
+emit_16(266);
+emit_16(202);
+emit_16(267);
+emit_16(203);
+emit_16(267);
+emit_16(202);
+emit_16(267);
+emit_16(203);
+emit_16(268);
+emit_16(204);
+emit_16(268);
+emit_16(203);
+emit_16(268);
+emit_16(204);
+emit_16(269);
+emit_16(205);
+emit_16(269);
+emit_16(204);
+emit_16(269);
+emit_16(205);
+emit_16(270);
+emit_16(206);
+emit_16(270);
+emit_16(205);
+emit_16(270);
+emit_16(206);
+emit_16(271);
+emit_16(207);
+emit_16(271);
+emit_16(206);
+emit_16(271);
+emit_16(207);
+emit_16(272);
+emit_16(208);
+emit_16(272);
+emit_16(207);
+emit_16(272);
+emit_16(208);
+emit_16(273);
+emit_16(209);
+emit_16(273);
+emit_16(208);
+emit_16(273);
+emit_16(209);
+emit_16(274);
+emit_16(210);
+emit_16(274);
+emit_16(209);
+emit_16(274);
+emit_16(210);
+emit_16(275);
+emit_16(211);
+emit_16(275);
+emit_16(210);
+emit_16(275);
+emit_16(211);
+emit_16(276);
+emit_16(212);
+emit_16(276);
+emit_16(211);
+emit_16(276);
+emit_16(212);
+emit_16(277);
+emit_16(213);
+emit_16(277);
+emit_16(212);
+emit_16(277);
+emit_16(213);
+emit_16(278);
+emit_16(214);
+emit_16(278);
+emit_16(213);
+emit_16(278);
+emit_16(214);
+emit_16(279);
+emit_16(215);
+emit_16(279);
+emit_16(214);
+emit_16(279);
+emit_16(215);
+emit_16(280);
+emit_16(216);
+emit_16(280);
+emit_16(215);
+emit_16(280);
+emit_16(216);
+emit_16(281);
+emit_16(217);
+emit_16(281);
+emit_16(216);
+emit_16(281);
+emit_16(217);
+emit_16(282);
+emit_16(218);
+emit_16(282);
+emit_16(217);
+emit_16(282);
+emit_16(218);
+emit_16(283);
+emit_16(219);
+emit_16(283);
+emit_16(218);
+emit_16(283);
+emit_16(219);
+emit_16(284);
+emit_16(220);
+emit_16(284);
+emit_16(219);
+emit_16(284);
+emit_16(220);
+emit_16(285);
+emit_16(221);
+emit_16(285);
+emit_16(220);
+emit_16(285);
+emit_16(221);
+emit_16(286);
+emit_16(222);
+emit_16(286);
+emit_16(221);
+emit_16(286);
+emit_16(222);
+emit_16(287);
+emit_16(223);
+emit_16(287);
+emit_16(222);
+emit_16(287);
+emit_16(223);
+emit_16(288);
+emit_16(224);
+emit_16(288);
+emit_16(223);
+emit_16(288);
+emit_16(224);
+emit_16(289);
+emit_16(225);
+emit_16(289);
+emit_16(224);
+emit_16(289);
+emit_16(225);
+emit_16(290);
+emit_16(226);
+emit_16(290);
+emit_16(225);
+emit_16(290);
+emit_16(226);
+emit_16(291);
+emit_16(227);
+emit_16(291);
+emit_16(226);
+emit_16(291);
+emit_16(227);
+emit_16(292);
+emit_16(228);
+emit_16(292);
+emit_16(227);
+emit_16(292);
+emit_16(228);
+emit_16(293);
+emit_16(229);
+emit_16(293);
+emit_16(228);
+emit_16(293);
+emit_16(229);
+emit_16(294);
+emit_16(230);
+emit_16(294);
+emit_16(229);
+emit_16(294);
+emit_16(230);
+emit_16(295);
+emit_16(231);
+emit_16(295);
+emit_16(230);
+emit_16(295);
+emit_16(231);
+emit_16(296);
+emit_16(232);
+emit_16(296);
+emit_16(231);
+emit_16(296);
+emit_16(232);
+emit_16(297);
+emit_16(233);
+emit_16(297);
+emit_16(232);
+emit_16(297);
+emit_16(233);
+emit_16(298);
+emit_16(234);
+emit_16(298);
+emit_16(233);
+emit_16(298);
+emit_16(234);
+emit_16(299);
+emit_16(235);
+emit_16(299);
+emit_16(234);
+emit_16(299);
+emit_16(235);
+emit_16(300);
+emit_16(236);
+emit_16(300);
+emit_16(235);
+emit_16(300);
+emit_16(236);
+emit_16(301);
+emit_16(237);
+emit_16(301);
+emit_16(236);
+emit_16(301);
+emit_16(237);
+emit_16(302);
+emit_16(238);
+emit_16(302);
+emit_16(237);
+emit_16(302);
+emit_16(238);
+emit_16(303);
+emit_16(239);
+emit_16(303);
+emit_16(238);
+emit_16(303);
+emit_16(239);
+emit_16(304);
+emit_16(240);
+emit_16(304);
+emit_16(239);
+emit_16(304);
+emit_16(240);
+emit_16(305);
+emit_16(241);
+emit_16(305);
+emit_16(240);
+emit_16(305);
+emit_16(241);
+emit_16(306);
+emit_16(242);
+emit_16(306);
+emit_16(241);
+emit_16(306);
+emit_16(242);
+emit_16(307);
+emit_16(243);
+emit_16(307);
+emit_16(242);
+emit_16(307);
+emit_16(243);
+emit_16(308);
+emit_16(244);
+emit_16(308);
+emit_16(243);
+emit_16(308);
+emit_16(244);
+emit_16(309);
+emit_16(245);
+emit_16(309);
+emit_16(244);
+emit_16(309);
+emit_16(245);
+emit_16(310);
+emit_16(246);
+emit_16(310);
+emit_16(245);
+emit_16(310);
+emit_16(246);
+emit_16(311);
+emit_16(247);
+emit_16(311);
+emit_16(246);
+emit_16(311);
+emit_16(247);
+emit_16(312);
+emit_16(248);
+emit_16(312);
+emit_16(247);
+emit_16(312);
+emit_16(248);
+emit_16(313);
+emit_16(249);
+emit_16(313);
+emit_16(248);
+emit_16(313);
+emit_16(249);
+emit_16(314);
+emit_16(250);
+emit_16(314);
+emit_16(249);
+emit_16(314);
+emit_16(250);
+emit_16(315);
+emit_16(251);
+emit_16(315);
+emit_16(250);
+emit_16(315);
+emit_16(251);
+emit_16(316);
+emit_16(252);
+emit_16(316);
+emit_16(251);
+emit_16(316);
+emit_16(252);
+emit_16(317);
+emit_16(253);
+emit_16(317);
+emit_16(252);
+emit_16(317);
+emit_16(253);
+emit_16(318);
+emit_16(254);
+emit_16(318);
+emit_16(253);
+emit_16(318);
+emit_16(254);
+emit_16(319);
+emit_16(255);
+emit_16(319);
+emit_16(254);
+emit_16(320);
+emit_16(256);
+emit_16(321);
+emit_16(257);
+emit_16(321);
+emit_16(256);
+emit_16(321);
+emit_16(257);
+emit_16(322);
+emit_16(258);
+emit_16(322);
+emit_16(257);
+emit_16(322);
+emit_16(258);
+emit_16(323);
+emit_16(259);
+emit_16(323);
+emit_16(258);
+emit_16(323);
+emit_16(259);
+emit_16(324);
+emit_16(260);
+emit_16(324);
+emit_16(259);
+emit_16(324);
+emit_16(260);
+emit_16(325);
+emit_16(261);
+emit_16(325);
+emit_16(260);
+emit_16(325);
+emit_16(261);
+emit_16(326);
+emit_16(262);
+emit_16(326);
+emit_16(261);
+emit_16(326);
+emit_16(262);
+emit_16(327);
+emit_16(263);
+emit_16(327);
+emit_16(262);
+emit_16(327);
+emit_16(263);
+emit_16(328);
+emit_16(264);
+emit_16(328);
+emit_16(263);
+emit_16(328);
+emit_16(264);
+emit_16(329);
+emit_16(265);
+emit_16(329);
+emit_16(264);
+emit_16(329);
+emit_16(265);
+emit_16(330);
+emit_16(266);
+emit_16(330);
+emit_16(265);
+emit_16(330);
+emit_16(266);
+emit_16(331);
+emit_16(267);
+emit_16(331);
+emit_16(266);
+emit_16(331);
+emit_16(267);
+emit_16(332);
+emit_16(268);
+emit_16(332);
+emit_16(267);
+emit_16(332);
+emit_16(268);
+emit_16(333);
+emit_16(269);
+emit_16(333);
+emit_16(268);
+emit_16(333);
+emit_16(269);
+emit_16(334);
+emit_16(270);
+emit_16(334);
+emit_16(269);
+emit_16(334);
+emit_16(270);
+emit_16(335);
+emit_16(271);
+emit_16(335);
+emit_16(270);
+emit_16(335);
+emit_16(271);
+emit_16(336);
+emit_16(272);
+emit_16(336);
+emit_16(271);
+emit_16(336);
+emit_16(272);
+emit_16(337);
+emit_16(273);
+emit_16(337);
+emit_16(272);
+emit_16(337);
+emit_16(273);
+emit_16(338);
+emit_16(274);
+emit_16(338);
+emit_16(273);
+emit_16(338);
+emit_16(274);
+emit_16(339);
+emit_16(275);
+emit_16(339);
+emit_16(274);
+emit_16(339);
+emit_16(275);
+emit_16(340);
+emit_16(276);
+emit_16(340);
+emit_16(275);
+emit_16(340);
+emit_16(276);
+emit_16(341);
+emit_16(277);
+emit_16(341);
+emit_16(276);
+emit_16(341);
+emit_16(277);
+emit_16(342);
+emit_16(278);
+emit_16(342);
+emit_16(277);
+emit_16(342);
+emit_16(278);
+emit_16(343);
+emit_16(279);
+emit_16(343);
+emit_16(278);
+emit_16(343);
+emit_16(279);
+emit_16(344);
+emit_16(280);
+emit_16(344);
+emit_16(279);
+emit_16(344);
+emit_16(280);
+emit_16(345);
+emit_16(281);
+emit_16(345);
+emit_16(280);
+emit_16(345);
+emit_16(281);
+emit_16(346);
+emit_16(282);
+emit_16(346);
+emit_16(281);
+emit_16(346);
+emit_16(282);
+emit_16(347);
+emit_16(283);
+emit_16(347);
+emit_16(282);
+emit_16(347);
+emit_16(283);
+emit_16(348);
+emit_16(284);
+emit_16(348);
+emit_16(283);
+emit_16(348);
+emit_16(284);
+emit_16(349);
+emit_16(285);
+emit_16(349);
+emit_16(284);
+emit_16(349);
+emit_16(285);
+emit_16(350);
+emit_16(286);
+emit_16(350);
+emit_16(285);
+emit_16(350);
+emit_16(286);
+emit_16(351);
+emit_16(287);
+emit_16(351);
+emit_16(286);
+emit_16(351);
+emit_16(287);
+emit_16(352);
+emit_16(288);
+emit_16(352);
+emit_16(287);
+emit_16(352);
+emit_16(288);
+emit_16(353);
+emit_16(289);
+emit_16(353);
+emit_16(288);
+emit_16(353);
+emit_16(289);
+emit_16(354);
+emit_16(290);
+emit_16(354);
+emit_16(289);
+emit_16(354);
+emit_16(290);
+emit_16(355);
+emit_16(291);
+emit_16(355);
+emit_16(290);
+emit_16(355);
+emit_16(291);
+emit_16(356);
+emit_16(292);
+emit_16(356);
+emit_16(291);
+emit_16(356);
+emit_16(292);
+emit_16(357);
+emit_16(293);
+emit_16(357);
+emit_16(292);
+emit_16(357);
+emit_16(293);
+emit_16(358);
+emit_16(294);
+emit_16(358);
+emit_16(293);
+emit_16(358);
+emit_16(294);
+emit_16(359);
+emit_16(295);
+emit_16(359);
+emit_16(294);
+emit_16(359);
+emit_16(295);
+emit_16(360);
+emit_16(296);
+emit_16(360);
+emit_16(295);
+emit_16(360);
+emit_16(296);
+emit_16(361);
+emit_16(297);
+emit_16(361);
+emit_16(296);
+emit_16(361);
+emit_16(297);
+emit_16(362);
+emit_16(298);
+emit_16(362);
+emit_16(297);
+emit_16(362);
+emit_16(298);
+emit_16(363);
+emit_16(299);
+emit_16(363);
+emit_16(298);
+emit_16(363);
+emit_16(299);
+emit_16(364);
+emit_16(300);
+emit_16(364);
+emit_16(299);
+emit_16(364);
+emit_16(300);
+emit_16(365);
+emit_16(301);
+emit_16(365);
+emit_16(300);
+emit_16(365);
+emit_16(301);
+emit_16(366);
+emit_16(302);
+emit_16(366);
+emit_16(301);
+emit_16(366);
+emit_16(302);
+emit_16(367);
+emit_16(303);
+emit_16(367);
+emit_16(302);
+emit_16(367);
+emit_16(303);
+emit_16(368);
+emit_16(304);
+emit_16(368);
+emit_16(303);
+emit_16(368);
+emit_16(304);
+emit_16(369);
+emit_16(305);
+emit_16(369);
+emit_16(304);
+emit_16(369);
+emit_16(305);
+emit_16(370);
+emit_16(306);
+emit_16(370);
+emit_16(305);
+emit_16(370);
+emit_16(306);
+emit_16(371);
+emit_16(307);
+emit_16(371);
+emit_16(306);
+emit_16(371);
+emit_16(307);
+emit_16(372);
+emit_16(308);
+emit_16(372);
+emit_16(307);
+emit_16(372);
+emit_16(308);
+emit_16(373);
+emit_16(309);
+emit_16(373);
+emit_16(308);
+emit_16(373);
+emit_16(309);
+emit_16(374);
+emit_16(310);
+emit_16(374);
+emit_16(309);
+emit_16(374);
+emit_16(310);
+emit_16(375);
+emit_16(311);
+emit_16(375);
+emit_16(310);
+emit_16(375);
+emit_16(311);
+emit_16(376);
+emit_16(312);
+emit_16(376);
+emit_16(311);
+emit_16(376);
+emit_16(312);
+emit_16(377);
+emit_16(313);
+emit_16(377);
+emit_16(312);
+emit_16(377);
+emit_16(313);
+emit_16(378);
+emit_16(314);
+emit_16(378);
+emit_16(313);
+emit_16(378);
+emit_16(314);
+emit_16(379);
+emit_16(315);
+emit_16(379);
+emit_16(314);
+emit_16(379);
+emit_16(315);
+emit_16(380);
+emit_16(316);
+emit_16(380);
+emit_16(315);
+emit_16(380);
+emit_16(316);
+emit_16(381);
+emit_16(317);
+emit_16(381);
+emit_16(316);
+emit_16(381);
+emit_16(317);
+emit_16(382);
+emit_16(318);
+emit_16(382);
+emit_16(317);
+emit_16(382);
+emit_16(318);
+emit_16(383);
+emit_16(319);
+emit_16(383);
+emit_16(318);
+emit_16(384);
+emit_16(320);
+emit_16(385);
+emit_16(321);
+emit_16(385);
+emit_16(320);
+emit_16(385);
+emit_16(321);
+emit_16(386);
+emit_16(322);
+emit_16(386);
+emit_16(321);
+emit_16(386);
+emit_16(322);
+emit_16(387);
+emit_16(323);
+emit_16(387);
+emit_16(322);
+emit_16(387);
+emit_16(323);
+emit_16(388);
+emit_16(324);
+emit_16(388);
+emit_16(323);
+emit_16(388);
+emit_16(324);
+emit_16(389);
+emit_16(325);
+emit_16(389);
+emit_16(324);
+emit_16(389);
+emit_16(325);
+emit_16(390);
+emit_16(326);
+emit_16(390);
+emit_16(325);
+emit_16(390);
+emit_16(326);
+emit_16(391);
+emit_16(327);
+emit_16(391);
+emit_16(326);
+emit_16(391);
+emit_16(327);
+emit_16(392);
+emit_16(328);
+emit_16(392);
+emit_16(327);
+emit_16(392);
+emit_16(328);
+emit_16(393);
+emit_16(329);
+emit_16(393);
+emit_16(328);
+emit_16(393);
+emit_16(329);
+emit_16(394);
+emit_16(330);
+emit_16(394);
+emit_16(329);
+emit_16(394);
+emit_16(330);
+emit_16(395);
+emit_16(331);
+emit_16(395);
+emit_16(330);
+emit_16(395);
+emit_16(331);
+emit_16(396);
+emit_16(332);
+emit_16(396);
+emit_16(331);
+emit_16(396);
+emit_16(332);
+emit_16(397);
+emit_16(333);
+emit_16(397);
+emit_16(332);
+emit_16(397);
+emit_16(333);
+emit_16(398);
+emit_16(334);
+emit_16(398);
+emit_16(333);
+emit_16(398);
+emit_16(334);
+emit_16(399);
+emit_16(335);
+emit_16(399);
+emit_16(334);
+emit_16(399);
+emit_16(335);
+emit_16(400);
+emit_16(336);
+emit_16(400);
+emit_16(335);
+emit_16(400);
+emit_16(336);
+emit_16(401);
+emit_16(337);
+emit_16(401);
+emit_16(336);
+emit_16(401);
+emit_16(337);
+emit_16(402);
+emit_16(338);
+emit_16(402);
+emit_16(337);
+emit_16(402);
+emit_16(338);
+emit_16(403);
+emit_16(339);
+emit_16(403);
+emit_16(338);
+emit_16(403);
+emit_16(339);
+emit_16(404);
+emit_16(340);
+emit_16(404);
+emit_16(339);
+emit_16(404);
+emit_16(340);
+emit_16(405);
+emit_16(341);
+emit_16(405);
+emit_16(340);
+emit_16(405);
+emit_16(341);
+emit_16(406);
+emit_16(342);
+emit_16(406);
+emit_16(341);
+emit_16(406);
+emit_16(342);
+emit_16(407);
+emit_16(343);
+emit_16(407);
+emit_16(342);
+emit_16(407);
+emit_16(343);
+emit_16(408);
+emit_16(344);
+emit_16(408);
+emit_16(343);
+emit_16(408);
+emit_16(344);
+emit_16(409);
+emit_16(345);
+emit_16(409);
+emit_16(344);
+emit_16(409);
+emit_16(345);
+emit_16(410);
+emit_16(346);
+emit_16(410);
+emit_16(345);
+emit_16(410);
+emit_16(346);
+emit_16(411);
+emit_16(347);
+emit_16(411);
+emit_16(346);
+emit_16(411);
+emit_16(347);
+emit_16(412);
+emit_16(348);
+emit_16(412);
+emit_16(347);
+emit_16(412);
+emit_16(348);
+emit_16(413);
+emit_16(349);
+emit_16(413);
+emit_16(348);
+emit_16(413);
+emit_16(349);
+emit_16(414);
+emit_16(350);
+emit_16(414);
+emit_16(349);
+emit_16(414);
+emit_16(350);
+emit_16(415);
+emit_16(351);
+emit_16(415);
+emit_16(350);
+emit_16(415);
+emit_16(351);
+emit_16(416);
+emit_16(352);
+emit_16(416);
+emit_16(351);
+emit_16(416);
+emit_16(352);
+emit_16(417);
+emit_16(353);
+emit_16(417);
+emit_16(352);
+emit_16(417);
+emit_16(353);
+emit_16(418);
+emit_16(354);
+emit_16(418);
+emit_16(353);
+emit_16(418);
+emit_16(354);
+emit_16(419);
+emit_16(355);
+emit_16(419);
+emit_16(354);
+emit_16(419);
+emit_16(355);
+emit_16(420);
+emit_16(356);
+emit_16(420);
+emit_16(355);
+emit_16(420);
+emit_16(356);
+emit_16(421);
+emit_16(357);
+emit_16(421);
+emit_16(356);
+emit_16(421);
+emit_16(357);
+emit_16(422);
+emit_16(358);
+emit_16(422);
+emit_16(357);
+emit_16(422);
+emit_16(358);
+emit_16(423);
+emit_16(359);
+emit_16(423);
+emit_16(358);
+emit_16(423);
+emit_16(359);
+emit_16(424);
+emit_16(360);
+emit_16(424);
+emit_16(359);
+emit_16(424);
+emit_16(360);
+emit_16(425);
+emit_16(361);
+emit_16(425);
+emit_16(360);
+emit_16(425);
+emit_16(361);
+emit_16(426);
+emit_16(362);
+emit_16(426);
+emit_16(361);
+emit_16(426);
+emit_16(362);
+emit_16(427);
+emit_16(363);
+emit_16(427);
+emit_16(362);
+emit_16(427);
+emit_16(363);
+emit_16(428);
+emit_16(364);
+emit_16(428);
+emit_16(363);
+emit_16(428);
+emit_16(364);
+emit_16(429);
+emit_16(365);
+emit_16(429);
+emit_16(364);
+emit_16(429);
+emit_16(365);
+emit_16(430);
+emit_16(366);
+emit_16(430);
+emit_16(365);
+emit_16(430);
+emit_16(366);
+emit_16(431);
+emit_16(367);
+emit_16(431);
+emit_16(366);
+emit_16(431);
+emit_16(367);
+emit_16(432);
+emit_16(368);
+emit_16(432);
+emit_16(367);
+emit_16(432);
+emit_16(368);
+emit_16(433);
+emit_16(369);
+emit_16(433);
+emit_16(368);
+emit_16(433);
+emit_16(369);
+emit_16(434);
+emit_16(370);
+emit_16(434);
+emit_16(369);
+emit_16(434);
+emit_16(370);
+emit_16(435);
+emit_16(371);
+emit_16(435);
+emit_16(370);
+emit_16(435);
+emit_16(371);
+emit_16(436);
+emit_16(372);
+emit_16(436);
+emit_16(371);
+emit_16(436);
+emit_16(372);
+emit_16(437);
+emit_16(373);
+emit_16(437);
+emit_16(372);
+emit_16(437);
+emit_16(373);
+emit_16(438);
+emit_16(374);
+emit_16(438);
+emit_16(373);
+emit_16(438);
+emit_16(374);
+emit_16(439);
+emit_16(375);
+emit_16(439);
+emit_16(374);
+emit_16(439);
+emit_16(375);
+emit_16(440);
+emit_16(376);
+emit_16(440);
+emit_16(375);
+emit_16(440);
+emit_16(376);
+emit_16(441);
+emit_16(377);
+emit_16(441);
+emit_16(376);
+emit_16(441);
+emit_16(377);
+emit_16(442);
+emit_16(378);
+emit_16(442);
+emit_16(377);
+emit_16(442);
+emit_16(378);
+emit_16(443);
+emit_16(379);
+emit_16(443);
+emit_16(378);
+emit_16(443);
+emit_16(379);
+emit_16(444);
+emit_16(380);
+emit_16(444);
+emit_16(379);
+emit_16(444);
+emit_16(380);
+emit_16(445);
+emit_16(381);
+emit_16(445);
+emit_16(380);
+emit_16(445);
+emit_16(381);
+emit_16(446);
+emit_16(382);
+emit_16(446);
+emit_16(381);
+emit_16(446);
+emit_16(382);
+emit_16(447);
+emit_16(383);
+emit_16(447);
+emit_16(382);
+emit_16(448);
+emit_16(384);
+emit_16(449);
+emit_16(385);
+emit_16(449);
+emit_16(384);
+emit_16(449);
+emit_16(385);
+emit_16(450);
+emit_16(386);
+emit_16(450);
+emit_16(385);
+emit_16(450);
+emit_16(386);
+emit_16(451);
+emit_16(387);
+emit_16(451);
+emit_16(386);
+emit_16(451);
+emit_16(387);
+emit_16(452);
+emit_16(388);
+emit_16(452);
+emit_16(387);
+emit_16(452);
+emit_16(388);
+emit_16(453);
+emit_16(389);
+emit_16(453);
+emit_16(388);
+emit_16(453);
+emit_16(389);
+emit_16(454);
+emit_16(390);
+emit_16(454);
+emit_16(389);
+emit_16(454);
+emit_16(390);
+emit_16(455);
+emit_16(391);
+emit_16(455);
+emit_16(390);
+emit_16(455);
+emit_16(391);
+emit_16(456);
+emit_16(392);
+emit_16(456);
+emit_16(391);
+emit_16(456);
+emit_16(392);
+emit_16(457);
+emit_16(393);
+emit_16(457);
+emit_16(392);
+emit_16(457);
+emit_16(393);
+emit_16(458);
+emit_16(394);
+emit_16(458);
+emit_16(393);
+emit_16(458);
+emit_16(394);
+emit_16(459);
+emit_16(395);
+emit_16(459);
+emit_16(394);
+emit_16(459);
+emit_16(395);
+emit_16(460);
+emit_16(396);
+emit_16(460);
+emit_16(395);
+emit_16(460);
+emit_16(396);
+emit_16(461);
+emit_16(397);
+emit_16(461);
+emit_16(396);
+emit_16(461);
+emit_16(397);
+emit_16(462);
+emit_16(398);
+emit_16(462);
+emit_16(397);
+emit_16(462);
+emit_16(398);
+emit_16(463);
+emit_16(399);
+emit_16(463);
+emit_16(398);
+emit_16(463);
+emit_16(399);
+emit_16(464);
+emit_16(400);
+emit_16(464);
+emit_16(399);
+emit_16(464);
+emit_16(400);
+emit_16(465);
+emit_16(401);
+emit_16(465);
+emit_16(400);
+emit_16(465);
+emit_16(401);
+emit_16(466);
+emit_16(402);
+emit_16(466);
+emit_16(401);
+emit_16(466);
+emit_16(402);
+emit_16(467);
+emit_16(403);
+emit_16(467);
+emit_16(402);
+emit_16(467);
+emit_16(403);
+emit_16(468);
+emit_16(404);
+emit_16(468);
+emit_16(403);
+emit_16(468);
+emit_16(404);
+emit_16(469);
+emit_16(405);
+emit_16(469);
+emit_16(404);
+emit_16(469);
+emit_16(405);
+emit_16(470);
+emit_16(406);
+emit_16(470);
+emit_16(405);
+emit_16(470);
+emit_16(406);
+emit_16(471);
+emit_16(407);
+emit_16(471);
+emit_16(406);
+emit_16(471);
+emit_16(407);
+emit_16(472);
+emit_16(408);
+emit_16(472);
+emit_16(407);
+emit_16(472);
+emit_16(408);
+emit_16(473);
+emit_16(409);
+emit_16(473);
+emit_16(408);
+emit_16(473);
+emit_16(409);
+emit_16(474);
+emit_16(410);
+emit_16(474);
+emit_16(409);
+emit_16(474);
+emit_16(410);
+emit_16(475);
+emit_16(411);
+emit_16(475);
+emit_16(410);
+emit_16(475);
+emit_16(411);
+emit_16(476);
+emit_16(412);
+emit_16(476);
+emit_16(411);
+emit_16(476);
+emit_16(412);
+emit_16(477);
+emit_16(413);
+emit_16(477);
+emit_16(412);
+emit_16(477);
+emit_16(413);
+emit_16(478);
+emit_16(414);
+emit_16(478);
+emit_16(413);
+emit_16(478);
+emit_16(414);
+emit_16(479);
+emit_16(415);
+emit_16(479);
+emit_16(414);
+emit_16(479);
+emit_16(415);
+emit_16(480);
+emit_16(416);
+emit_16(480);
+emit_16(415);
+emit_16(480);
+emit_16(416);
+emit_16(481);
+emit_16(417);
+emit_16(481);
+emit_16(416);
+emit_16(481);
+emit_16(417);
+emit_16(482);
+emit_16(418);
+emit_16(482);
+emit_16(417);
+emit_16(482);
+emit_16(418);
+emit_16(483);
+emit_16(419);
+emit_16(483);
+emit_16(418);
+emit_16(483);
+emit_16(419);
+emit_16(484);
+emit_16(420);
+emit_16(484);
+emit_16(419);
+emit_16(484);
+emit_16(420);
+emit_16(485);
+emit_16(421);
+emit_16(485);
+emit_16(420);
+emit_16(485);
+emit_16(421);
+emit_16(486);
+emit_16(422);
+emit_16(486);
+emit_16(421);
+emit_16(486);
+emit_16(422);
+emit_16(487);
+emit_16(423);
+emit_16(487);
+emit_16(422);
+emit_16(487);
+emit_16(423);
+emit_16(488);
+emit_16(424);
+emit_16(488);
+emit_16(423);
+emit_16(488);
+emit_16(424);
+emit_16(489);
+emit_16(425);
+emit_16(489);
+emit_16(424);
+emit_16(489);
+emit_16(425);
+emit_16(490);
+emit_16(426);
+emit_16(490);
+emit_16(425);
+emit_16(490);
+emit_16(426);
+emit_16(491);
+emit_16(427);
+emit_16(491);
+emit_16(426);
+emit_16(491);
+emit_16(427);
+emit_16(492);
+emit_16(428);
+emit_16(492);
+emit_16(427);
+emit_16(492);
+emit_16(428);
+emit_16(493);
+emit_16(429);
+emit_16(493);
+emit_16(428);
+emit_16(493);
+emit_16(429);
+emit_16(494);
+emit_16(430);
+emit_16(494);
+emit_16(429);
+emit_16(494);
+emit_16(430);
+emit_16(495);
+emit_16(431);
+emit_16(495);
+emit_16(430);
+emit_16(495);
+emit_16(431);
+emit_16(496);
+emit_16(432);
+emit_16(496);
+emit_16(431);
+emit_16(496);
+emit_16(432);
+emit_16(497);
+emit_16(433);
+emit_16(497);
+emit_16(432);
+emit_16(497);
+emit_16(433);
+emit_16(498);
+emit_16(434);
+emit_16(498);
+emit_16(433);
+emit_16(498);
+emit_16(434);
+emit_16(499);
+emit_16(435);
+emit_16(499);
+emit_16(434);
+emit_16(499);
+emit_16(435);
+emit_16(500);
+emit_16(436);
+emit_16(500);
+emit_16(435);
+emit_16(500);
+emit_16(436);
+emit_16(501);
+emit_16(437);
+emit_16(501);
+emit_16(436);
+emit_16(501);
+emit_16(437);
+emit_16(502);
+emit_16(438);
+emit_16(502);
+emit_16(437);
+emit_16(502);
+emit_16(438);
+emit_16(503);
+emit_16(439);
+emit_16(503);
+emit_16(438);
+emit_16(503);
+emit_16(439);
+emit_16(504);
+emit_16(440);
+emit_16(504);
+emit_16(439);
+emit_16(504);
+emit_16(440);
+emit_16(505);
+emit_16(441);
+emit_16(505);
+emit_16(440);
+emit_16(505);
+emit_16(441);
+emit_16(506);
+emit_16(442);
+emit_16(506);
+emit_16(441);
+emit_16(506);
+emit_16(442);
+emit_16(507);
+emit_16(443);
+emit_16(507);
+emit_16(442);
+emit_16(507);
+emit_16(443);
+emit_16(508);
+emit_16(444);
+emit_16(508);
+emit_16(443);
+emit_16(508);
+emit_16(444);
+emit_16(509);
+emit_16(445);
+emit_16(509);
+emit_16(444);
+emit_16(509);
+emit_16(445);
+emit_16(510);
+emit_16(446);
+emit_16(510);
+emit_16(445);
+emit_16(510);
+emit_16(446);
+emit_16(511);
+emit_16(447);
+emit_16(511);
+emit_16(446);
+emit_16(512);
+emit_16(448);
+emit_16(513);
+emit_16(449);
+emit_16(513);
+emit_16(448);
+emit_16(513);
+emit_16(449);
+emit_16(514);
+emit_16(450);
+emit_16(514);
+emit_16(449);
+emit_16(514);
+emit_16(450);
+emit_16(515);
+emit_16(451);
+emit_16(515);
+emit_16(450);
+emit_16(515);
+emit_16(451);
+emit_16(516);
+emit_16(452);
+emit_16(516);
+emit_16(451);
+emit_16(516);
+emit_16(452);
+emit_16(517);
+emit_16(453);
+emit_16(517);
+emit_16(452);
+emit_16(517);
+emit_16(453);
+emit_16(518);
+emit_16(454);
+emit_16(518);
+emit_16(453);
+emit_16(518);
+emit_16(454);
+emit_16(519);
+emit_16(455);
+emit_16(519);
+emit_16(454);
+emit_16(519);
+emit_16(455);
+emit_16(520);
+emit_16(456);
+emit_16(520);
+emit_16(455);
+emit_16(520);
+emit_16(456);
+emit_16(521);
+emit_16(457);
+emit_16(521);
+emit_16(456);
+emit_16(521);
+emit_16(457);
+emit_16(522);
+emit_16(458);
+emit_16(522);
+emit_16(457);
+emit_16(522);
+emit_16(458);
+emit_16(523);
+emit_16(459);
+emit_16(523);
+emit_16(458);
+emit_16(523);
+emit_16(459);
+emit_16(524);
+emit_16(460);
+emit_16(524);
+emit_16(459);
+emit_16(524);
+emit_16(460);
+emit_16(525);
+emit_16(461);
+emit_16(525);
+emit_16(460);
+emit_16(525);
+emit_16(461);
+emit_16(526);
+emit_16(462);
+emit_16(526);
+emit_16(461);
+emit_16(526);
+emit_16(462);
+emit_16(527);
+emit_16(463);
+emit_16(527);
+emit_16(462);
+emit_16(527);
+emit_16(463);
+emit_16(528);
+emit_16(464);
+emit_16(528);
+emit_16(463);
+emit_16(528);
+emit_16(464);
+emit_16(529);
+emit_16(465);
+emit_16(529);
+emit_16(464);
+emit_16(529);
+emit_16(465);
+emit_16(530);
+emit_16(466);
+emit_16(530);
+emit_16(465);
+emit_16(530);
+emit_16(466);
+emit_16(531);
+emit_16(467);
+emit_16(531);
+emit_16(466);
+emit_16(531);
+emit_16(467);
+emit_16(532);
+emit_16(468);
+emit_16(532);
+emit_16(467);
+emit_16(532);
+emit_16(468);
+emit_16(533);
+emit_16(469);
+emit_16(533);
+emit_16(468);
+emit_16(533);
+emit_16(469);
+emit_16(534);
+emit_16(470);
+emit_16(534);
+emit_16(469);
+emit_16(534);
+emit_16(470);
+emit_16(535);
+emit_16(471);
+emit_16(535);
+emit_16(470);
+emit_16(535);
+emit_16(471);
+emit_16(536);
+emit_16(472);
+emit_16(536);
+emit_16(471);
+emit_16(536);
+emit_16(472);
+emit_16(537);
+emit_16(473);
+emit_16(537);
+emit_16(472);
+emit_16(537);
+emit_16(473);
+emit_16(538);
+emit_16(474);
+emit_16(538);
+emit_16(473);
+emit_16(538);
+emit_16(474);
+emit_16(539);
+emit_16(475);
+emit_16(539);
+emit_16(474);
+emit_16(539);
+emit_16(475);
+emit_16(540);
+emit_16(476);
+emit_16(540);
+emit_16(475);
+emit_16(540);
+emit_16(476);
+emit_16(541);
+emit_16(477);
+emit_16(541);
+emit_16(476);
+emit_16(541);
+emit_16(477);
+emit_16(542);
+emit_16(478);
+emit_16(542);
+emit_16(477);
+emit_16(542);
+emit_16(478);
+emit_16(543);
+emit_16(479);
+emit_16(543);
+emit_16(478);
+emit_16(543);
+emit_16(479);
+emit_16(544);
+emit_16(480);
+emit_16(544);
+emit_16(479);
+emit_16(544);
+emit_16(480);
+emit_16(545);
+emit_16(481);
+emit_16(545);
+emit_16(480);
+emit_16(545);
+emit_16(481);
+emit_16(546);
+emit_16(482);
+emit_16(546);
+emit_16(481);
+emit_16(546);
+emit_16(482);
+emit_16(547);
+emit_16(483);
+emit_16(547);
+emit_16(482);
+emit_16(547);
+emit_16(483);
+emit_16(548);
+emit_16(484);
+emit_16(548);
+emit_16(483);
+emit_16(548);
+emit_16(484);
+emit_16(549);
+emit_16(485);
+emit_16(549);
+emit_16(484);
+emit_16(549);
+emit_16(485);
+emit_16(550);
+emit_16(486);
+emit_16(550);
+emit_16(485);
+emit_16(550);
+emit_16(486);
+emit_16(551);
+emit_16(487);
+emit_16(551);
+emit_16(486);
+emit_16(551);
+emit_16(487);
+emit_16(552);
+emit_16(488);
+emit_16(552);
+emit_16(487);
+emit_16(552);
+emit_16(488);
+emit_16(553);
+emit_16(489);
+emit_16(553);
+emit_16(488);
+emit_16(553);
+emit_16(489);
+emit_16(554);
+emit_16(490);
+emit_16(554);
+emit_16(489);
+emit_16(554);
+emit_16(490);
+emit_16(555);
+emit_16(491);
+emit_16(555);
+emit_16(490);
+emit_16(555);
+emit_16(491);
+emit_16(556);
+emit_16(492);
+emit_16(556);
+emit_16(491);
+emit_16(556);
+emit_16(492);
+emit_16(557);
+emit_16(493);
+emit_16(557);
+emit_16(492);
+emit_16(557);
+emit_16(493);
+emit_16(558);
+emit_16(494);
+emit_16(558);
+emit_16(493);
+emit_16(558);
+emit_16(494);
+emit_16(559);
+emit_16(495);
+emit_16(559);
+emit_16(494);
+emit_16(559);
+emit_16(495);
+emit_16(560);
+emit_16(496);
+emit_16(560);
+emit_16(495);
+emit_16(560);
+emit_16(496);
+emit_16(561);
+emit_16(497);
+emit_16(561);
+emit_16(496);
+emit_16(561);
+emit_16(497);
+emit_16(562);
+emit_16(498);
+emit_16(562);
+emit_16(497);
+emit_16(562);
+emit_16(498);
+emit_16(563);
+emit_16(499);
+emit_16(563);
+emit_16(498);
+emit_16(563);
+emit_16(499);
+emit_16(564);
+emit_16(500);
+emit_16(564);
+emit_16(499);
+emit_16(564);
+emit_16(500);
+emit_16(565);
+emit_16(501);
+emit_16(565);
+emit_16(500);
+emit_16(565);
+emit_16(501);
+emit_16(566);
+emit_16(502);
+emit_16(566);
+emit_16(501);
+emit_16(566);
+emit_16(502);
+emit_16(567);
+emit_16(503);
+emit_16(567);
+emit_16(502);
+emit_16(567);
+emit_16(503);
+emit_16(568);
+emit_16(504);
+emit_16(568);
+emit_16(503);
+emit_16(568);
+emit_16(504);
+emit_16(569);
+emit_16(505);
+emit_16(569);
+emit_16(504);
+emit_16(569);
+emit_16(505);
+emit_16(570);
+emit_16(506);
+emit_16(570);
+emit_16(505);
+emit_16(570);
+emit_16(506);
+emit_16(571);
+emit_16(507);
+emit_16(571);
+emit_16(506);
+emit_16(571);
+emit_16(507);
+emit_16(572);
+emit_16(508);
+emit_16(572);
+emit_16(507);
+emit_16(572);
+emit_16(508);
+emit_16(573);
+emit_16(509);
+emit_16(573);
+emit_16(508);
+emit_16(573);
+emit_16(509);
+emit_16(574);
+emit_16(510);
+emit_16(574);
+emit_16(509);
+emit_16(574);
+emit_16(510);
+emit_16(575);
+emit_16(511);
+emit_16(575);
+emit_16(510);
+emit_16(576);
+emit_16(512);
+emit_16(577);
+emit_16(513);
+emit_16(577);
+emit_16(512);
+emit_16(577);
+emit_16(513);
+emit_16(578);
+emit_16(514);
+emit_16(578);
+emit_16(513);
+emit_16(578);
+emit_16(514);
+emit_16(579);
+emit_16(515);
+emit_16(579);
+emit_16(514);
+emit_16(579);
+emit_16(515);
+emit_16(580);
+emit_16(516);
+emit_16(580);
+emit_16(515);
+emit_16(580);
+emit_16(516);
+emit_16(581);
+emit_16(517);
+emit_16(581);
+emit_16(516);
+emit_16(581);
+emit_16(517);
+emit_16(582);
+emit_16(518);
+emit_16(582);
+emit_16(517);
+emit_16(582);
+emit_16(518);
+emit_16(583);
+emit_16(519);
+emit_16(583);
+emit_16(518);
+emit_16(583);
+emit_16(519);
+emit_16(584);
+emit_16(520);
+emit_16(584);
+emit_16(519);
+emit_16(584);
+emit_16(520);
+emit_16(585);
+emit_16(521);
+emit_16(585);
+emit_16(520);
+emit_16(585);
+emit_16(521);
+emit_16(586);
+emit_16(522);
+emit_16(586);
+emit_16(521);
+emit_16(586);
+emit_16(522);
+emit_16(587);
+emit_16(523);
+emit_16(587);
+emit_16(522);
+emit_16(587);
+emit_16(523);
+emit_16(588);
+emit_16(524);
+emit_16(588);
+emit_16(523);
+emit_16(588);
+emit_16(524);
+emit_16(589);
+emit_16(525);
+emit_16(589);
+emit_16(524);
+emit_16(589);
+emit_16(525);
+emit_16(590);
+emit_16(526);
+emit_16(590);
+emit_16(525);
+emit_16(590);
+emit_16(526);
+emit_16(591);
+emit_16(527);
+emit_16(591);
+emit_16(526);
+emit_16(591);
+emit_16(527);
+emit_16(592);
+emit_16(528);
+emit_16(592);
+emit_16(527);
+emit_16(592);
+emit_16(528);
+emit_16(593);
+emit_16(529);
+emit_16(593);
+emit_16(528);
+emit_16(593);
+emit_16(529);
+emit_16(594);
+emit_16(530);
+emit_16(594);
+emit_16(529);
+emit_16(594);
+emit_16(530);
+emit_16(595);
+emit_16(531);
+emit_16(595);
+emit_16(530);
+emit_16(595);
+emit_16(531);
+emit_16(596);
+emit_16(532);
+emit_16(596);
+emit_16(531);
+emit_16(596);
+emit_16(532);
+emit_16(597);
+emit_16(533);
+emit_16(597);
+emit_16(532);
+emit_16(597);
+emit_16(533);
+emit_16(598);
+emit_16(534);
+emit_16(598);
+emit_16(533);
+emit_16(598);
+emit_16(534);
+emit_16(599);
+emit_16(535);
+emit_16(599);
+emit_16(534);
+emit_16(599);
+emit_16(535);
+emit_16(600);
+emit_16(536);
+emit_16(600);
+emit_16(535);
+emit_16(600);
+emit_16(536);
+emit_16(601);
+emit_16(537);
+emit_16(601);
+emit_16(536);
+emit_16(601);
+emit_16(537);
+emit_16(602);
+emit_16(538);
+emit_16(602);
+emit_16(537);
+emit_16(602);
+emit_16(538);
+emit_16(603);
+emit_16(539);
+emit_16(603);
+emit_16(538);
+emit_16(603);
+emit_16(539);
+emit_16(604);
+emit_16(540);
+emit_16(604);
+emit_16(539);
+emit_16(604);
+emit_16(540);
+emit_16(605);
+emit_16(541);
+emit_16(605);
+emit_16(540);
+emit_16(605);
+emit_16(541);
+emit_16(606);
+emit_16(542);
+emit_16(606);
+emit_16(541);
+emit_16(606);
+emit_16(542);
+emit_16(607);
+emit_16(543);
+emit_16(607);
+emit_16(542);
+emit_16(607);
+emit_16(543);
+emit_16(608);
+emit_16(544);
+emit_16(608);
+emit_16(543);
+emit_16(608);
+emit_16(544);
+emit_16(609);
+emit_16(545);
+emit_16(609);
+emit_16(544);
+emit_16(609);
+emit_16(545);
+emit_16(610);
+emit_16(546);
+emit_16(610);
+emit_16(545);
+emit_16(610);
+emit_16(546);
+emit_16(611);
+emit_16(547);
+emit_16(611);
+emit_16(546);
+emit_16(611);
+emit_16(547);
+emit_16(612);
+emit_16(548);
+emit_16(612);
+emit_16(547);
+emit_16(612);
+emit_16(548);
+emit_16(613);
+emit_16(549);
+emit_16(613);
+emit_16(548);
+emit_16(613);
+emit_16(549);
+emit_16(614);
+emit_16(550);
+emit_16(614);
+emit_16(549);
+emit_16(614);
+emit_16(550);
+emit_16(615);
+emit_16(551);
+emit_16(615);
+emit_16(550);
+emit_16(615);
+emit_16(551);
+emit_16(616);
+emit_16(552);
+emit_16(616);
+emit_16(551);
+emit_16(616);
+emit_16(552);
+emit_16(617);
+emit_16(553);
+emit_16(617);
+emit_16(552);
+emit_16(617);
+emit_16(553);
+emit_16(618);
+emit_16(554);
+emit_16(618);
+emit_16(553);
+emit_16(618);
+emit_16(554);
+emit_16(619);
+emit_16(555);
+emit_16(619);
+emit_16(554);
+emit_16(619);
+emit_16(555);
+emit_16(620);
+emit_16(556);
+emit_16(620);
+emit_16(555);
+emit_16(620);
+emit_16(556);
+emit_16(621);
+emit_16(557);
+emit_16(621);
+emit_16(556);
+emit_16(621);
+emit_16(557);
+emit_16(622);
+emit_16(558);
+emit_16(622);
+emit_16(557);
+emit_16(622);
+emit_16(558);
+emit_16(623);
+emit_16(559);
+emit_16(623);
+emit_16(558);
+emit_16(623);
+emit_16(559);
+emit_16(624);
+emit_16(560);
+emit_16(624);
+emit_16(559);
+emit_16(624);
+emit_16(560);
+emit_16(625);
+emit_16(561);
+emit_16(625);
+emit_16(560);
+emit_16(625);
+emit_16(561);
+emit_16(626);
+emit_16(562);
+emit_16(626);
+emit_16(561);
+emit_16(626);
+emit_16(562);
+emit_16(627);
+emit_16(563);
+emit_16(627);
+emit_16(562);
+emit_16(627);
+emit_16(563);
+emit_16(628);
+emit_16(564);
+emit_16(628);
+emit_16(563);
+emit_16(628);
+emit_16(564);
+emit_16(629);
+emit_16(565);
+emit_16(629);
+emit_16(564);
+emit_16(629);
+emit_16(565);
+emit_16(630);
+emit_16(566);
+emit_16(630);
+emit_16(565);
+emit_16(630);
+emit_16(566);
+emit_16(631);
+emit_16(567);
+emit_16(631);
+emit_16(566);
+emit_16(631);
+emit_16(567);
+emit_16(632);
+emit_16(568);
+emit_16(632);
+emit_16(567);
+emit_16(632);
+emit_16(568);
+emit_16(633);
+emit_16(569);
+emit_16(633);
+emit_16(568);
+emit_16(633);
+emit_16(569);
+emit_16(634);
+emit_16(570);
+emit_16(634);
+emit_16(569);
+emit_16(634);
+emit_16(570);
+emit_16(635);
+emit_16(571);
+emit_16(635);
+emit_16(570);
+emit_16(635);
+emit_16(571);
+emit_16(636);
+emit_16(572);
+emit_16(636);
+emit_16(571);
+emit_16(636);
+emit_16(572);
+emit_16(637);
+emit_16(573);
+emit_16(637);
+emit_16(572);
+emit_16(637);
+emit_16(573);
+emit_16(638);
+emit_16(574);
+emit_16(638);
+emit_16(573);
+emit_16(638);
+emit_16(574);
+emit_16(639);
+emit_16(575);
+emit_16(639);
+emit_16(574);
+emit_16(640);
+emit_16(576);
+emit_16(641);
+emit_16(577);
+emit_16(641);
+emit_16(576);
+emit_16(641);
+emit_16(577);
+emit_16(642);
+emit_16(578);
+emit_16(642);
+emit_16(577);
+emit_16(642);
+emit_16(578);
+emit_16(643);
+emit_16(579);
+emit_16(643);
+emit_16(578);
+emit_16(643);
+emit_16(579);
+emit_16(644);
+emit_16(580);
+emit_16(644);
+emit_16(579);
+emit_16(644);
+emit_16(580);
+emit_16(645);
+emit_16(581);
+emit_16(645);
+emit_16(580);
+emit_16(645);
+emit_16(581);
+emit_16(646);
+emit_16(582);
+emit_16(646);
+emit_16(581);
+emit_16(646);
+emit_16(582);
+emit_16(647);
+emit_16(583);
+emit_16(647);
+emit_16(582);
+emit_16(647);
+emit_16(583);
+emit_16(648);
+emit_16(584);
+emit_16(648);
+emit_16(583);
+emit_16(648);
+emit_16(584);
+emit_16(649);
+emit_16(585);
+emit_16(649);
+emit_16(584);
+emit_16(649);
+emit_16(585);
+emit_16(650);
+emit_16(586);
+emit_16(650);
+emit_16(585);
+emit_16(650);
+emit_16(586);
+emit_16(651);
+emit_16(587);
+emit_16(651);
+emit_16(586);
+emit_16(651);
+emit_16(587);
+emit_16(652);
+emit_16(588);
+emit_16(652);
+emit_16(587);
+emit_16(652);
+emit_16(588);
+emit_16(653);
+emit_16(589);
+emit_16(653);
+emit_16(588);
+emit_16(653);
+emit_16(589);
+emit_16(654);
+emit_16(590);
+emit_16(654);
+emit_16(589);
+emit_16(654);
+emit_16(590);
+emit_16(655);
+emit_16(591);
+emit_16(655);
+emit_16(590);
+emit_16(655);
+emit_16(591);
+emit_16(656);
+emit_16(592);
+emit_16(656);
+emit_16(591);
+emit_16(656);
+emit_16(592);
+emit_16(657);
+emit_16(593);
+emit_16(657);
+emit_16(592);
+emit_16(657);
+emit_16(593);
+emit_16(658);
+emit_16(594);
+emit_16(658);
+emit_16(593);
+emit_16(658);
+emit_16(594);
+emit_16(659);
+emit_16(595);
+emit_16(659);
+emit_16(594);
+emit_16(659);
+emit_16(595);
+emit_16(660);
+emit_16(596);
+emit_16(660);
+emit_16(595);
+emit_16(660);
+emit_16(596);
+emit_16(661);
+emit_16(597);
+emit_16(661);
+emit_16(596);
+emit_16(661);
+emit_16(597);
+emit_16(662);
+emit_16(598);
+emit_16(662);
+emit_16(597);
+emit_16(662);
+emit_16(598);
+emit_16(663);
+emit_16(599);
+emit_16(663);
+emit_16(598);
+emit_16(663);
+emit_16(599);
+emit_16(664);
+emit_16(600);
+emit_16(664);
+emit_16(599);
+emit_16(664);
+emit_16(600);
+emit_16(665);
+emit_16(601);
+emit_16(665);
+emit_16(600);
+emit_16(665);
+emit_16(601);
+emit_16(666);
+emit_16(602);
+emit_16(666);
+emit_16(601);
+emit_16(666);
+emit_16(602);
+emit_16(667);
+emit_16(603);
+emit_16(667);
+emit_16(602);
+emit_16(667);
+emit_16(603);
+emit_16(668);
+emit_16(604);
+emit_16(668);
+emit_16(603);
+emit_16(668);
+emit_16(604);
+emit_16(669);
+emit_16(605);
+emit_16(669);
+emit_16(604);
+emit_16(669);
+emit_16(605);
+emit_16(670);
+emit_16(606);
+emit_16(670);
+emit_16(605);
+emit_16(670);
+emit_16(606);
+emit_16(671);
+emit_16(607);
+emit_16(671);
+emit_16(606);
+emit_16(671);
+emit_16(607);
+emit_16(672);
+emit_16(608);
+emit_16(672);
+emit_16(607);
+emit_16(672);
+emit_16(608);
+emit_16(673);
+emit_16(609);
+emit_16(673);
+emit_16(608);
+emit_16(673);
+emit_16(609);
+emit_16(674);
+emit_16(610);
+emit_16(674);
+emit_16(609);
+emit_16(674);
+emit_16(610);
+emit_16(675);
+emit_16(611);
+emit_16(675);
+emit_16(610);
+emit_16(675);
+emit_16(611);
+emit_16(676);
+emit_16(612);
+emit_16(676);
+emit_16(611);
+emit_16(676);
+emit_16(612);
+emit_16(677);
+emit_16(613);
+emit_16(677);
+emit_16(612);
+emit_16(677);
+emit_16(613);
+emit_16(678);
+emit_16(614);
+emit_16(678);
+emit_16(613);
+emit_16(678);
+emit_16(614);
+emit_16(679);
+emit_16(615);
+emit_16(679);
+emit_16(614);
+emit_16(679);
+emit_16(615);
+emit_16(680);
+emit_16(616);
+emit_16(680);
+emit_16(615);
+emit_16(680);
+emit_16(616);
+emit_16(681);
+emit_16(617);
+emit_16(681);
+emit_16(616);
+emit_16(681);
+emit_16(617);
+emit_16(682);
+emit_16(618);
+emit_16(682);
+emit_16(617);
+emit_16(682);
+emit_16(618);
+emit_16(683);
+emit_16(619);
+emit_16(683);
+emit_16(618);
+emit_16(683);
+emit_16(619);
+emit_16(684);
+emit_16(620);
+emit_16(684);
+emit_16(619);
+emit_16(684);
+emit_16(620);
+emit_16(685);
+emit_16(621);
+emit_16(685);
+emit_16(620);
+emit_16(685);
+emit_16(621);
+emit_16(686);
+emit_16(622);
+emit_16(686);
+emit_16(621);
+emit_16(686);
+emit_16(622);
+emit_16(687);
+emit_16(623);
+emit_16(687);
+emit_16(622);
+emit_16(687);
+emit_16(623);
+emit_16(688);
+emit_16(624);
+emit_16(688);
+emit_16(623);
+emit_16(688);
+emit_16(624);
+emit_16(689);
+emit_16(625);
+emit_16(689);
+emit_16(624);
+emit_16(689);
+emit_16(625);
+emit_16(690);
+emit_16(626);
+emit_16(690);
+emit_16(625);
+emit_16(690);
+emit_16(626);
+emit_16(691);
+emit_16(627);
+emit_16(691);
+emit_16(626);
+emit_16(691);
+emit_16(627);
+emit_16(692);
+emit_16(628);
+emit_16(692);
+emit_16(627);
+emit_16(692);
+emit_16(628);
+emit_16(693);
+emit_16(629);
+emit_16(693);
+emit_16(628);
+emit_16(693);
+emit_16(629);
+emit_16(694);
+emit_16(630);
+emit_16(694);
+emit_16(629);
+emit_16(694);
+emit_16(630);
+emit_16(695);
+emit_16(631);
+emit_16(695);
+emit_16(630);
+emit_16(695);
+emit_16(631);
+emit_16(696);
+emit_16(632);
+emit_16(696);
+emit_16(631);
+emit_16(696);
+emit_16(632);
+emit_16(697);
+emit_16(633);
+emit_16(697);
+emit_16(632);
+emit_16(697);
+emit_16(633);
+emit_16(698);
+emit_16(634);
+emit_16(698);
+emit_16(633);
+emit_16(698);
+emit_16(634);
+emit_16(699);
+emit_16(635);
+emit_16(699);
+emit_16(634);
+emit_16(699);
+emit_16(635);
+emit_16(700);
+emit_16(636);
+emit_16(700);
+emit_16(635);
+emit_16(700);
+emit_16(636);
+emit_16(701);
+emit_16(637);
+emit_16(701);
+emit_16(636);
+emit_16(701);
+emit_16(637);
+emit_16(702);
+emit_16(638);
+emit_16(702);
+emit_16(637);
+emit_16(702);
+emit_16(638);
+emit_16(703);
+emit_16(639);
+emit_16(703);
+emit_16(638);
+emit_16(704);
+emit_16(640);
+emit_16(705);
+emit_16(641);
+emit_16(705);
+emit_16(640);
+emit_16(705);
+emit_16(641);
+emit_16(706);
+emit_16(642);
+emit_16(706);
+emit_16(641);
+emit_16(706);
+emit_16(642);
+emit_16(707);
+emit_16(643);
+emit_16(707);
+emit_16(642);
+emit_16(707);
+emit_16(643);
+emit_16(708);
+emit_16(644);
+emit_16(708);
+emit_16(643);
+emit_16(708);
+emit_16(644);
+emit_16(709);
+emit_16(645);
+emit_16(709);
+emit_16(644);
+emit_16(709);
+emit_16(645);
+emit_16(710);
+emit_16(646);
+emit_16(710);
+emit_16(645);
+emit_16(710);
+emit_16(646);
+emit_16(711);
+emit_16(647);
+emit_16(711);
+emit_16(646);
+emit_16(711);
+emit_16(647);
+emit_16(712);
+emit_16(648);
+emit_16(712);
+emit_16(647);
+emit_16(712);
+emit_16(648);
+emit_16(713);
+emit_16(649);
+emit_16(713);
+emit_16(648);
+emit_16(713);
+emit_16(649);
+emit_16(714);
+emit_16(650);
+emit_16(714);
+emit_16(649);
+emit_16(714);
+emit_16(650);
+emit_16(715);
+emit_16(651);
+emit_16(715);
+emit_16(650);
+emit_16(715);
+emit_16(651);
+emit_16(716);
+emit_16(652);
+emit_16(716);
+emit_16(651);
+emit_16(716);
+emit_16(652);
+emit_16(717);
+emit_16(653);
+emit_16(717);
+emit_16(652);
+emit_16(717);
+emit_16(653);
+emit_16(718);
+emit_16(654);
+emit_16(718);
+emit_16(653);
+emit_16(718);
+emit_16(654);
+emit_16(719);
+emit_16(655);
+emit_16(719);
+emit_16(654);
+emit_16(719);
+emit_16(655);
+emit_16(720);
+emit_16(656);
+emit_16(720);
+emit_16(655);
+emit_16(720);
+emit_16(656);
+emit_16(721);
+emit_16(657);
+emit_16(721);
+emit_16(656);
+emit_16(721);
+emit_16(657);
+emit_16(722);
+emit_16(658);
+emit_16(722);
+emit_16(657);
+emit_16(722);
+emit_16(658);
+emit_16(723);
+emit_16(659);
+emit_16(723);
+emit_16(658);
+emit_16(723);
+emit_16(659);
+emit_16(724);
+emit_16(660);
+emit_16(724);
+emit_16(659);
+emit_16(724);
+emit_16(660);
+emit_16(725);
+emit_16(661);
+emit_16(725);
+emit_16(660);
+emit_16(725);
+emit_16(661);
+emit_16(726);
+emit_16(662);
+emit_16(726);
+emit_16(661);
+emit_16(726);
+emit_16(662);
+emit_16(727);
+emit_16(663);
+emit_16(727);
+emit_16(662);
+emit_16(727);
+emit_16(663);
+emit_16(728);
+emit_16(664);
+emit_16(728);
+emit_16(663);
+emit_16(728);
+emit_16(664);
+emit_16(729);
+emit_16(665);
+emit_16(729);
+emit_16(664);
+emit_16(729);
+emit_16(665);
+emit_16(730);
+emit_16(666);
+emit_16(730);
+emit_16(665);
+emit_16(730);
+emit_16(666);
+emit_16(731);
+emit_16(667);
+emit_16(731);
+emit_16(666);
+emit_16(731);
+emit_16(667);
+emit_16(732);
+emit_16(668);
+emit_16(732);
+emit_16(667);
+emit_16(732);
+emit_16(668);
+emit_16(733);
+emit_16(669);
+emit_16(733);
+emit_16(668);
+emit_16(733);
+emit_16(669);
+emit_16(734);
+emit_16(670);
+emit_16(734);
+emit_16(669);
+emit_16(734);
+emit_16(670);
+emit_16(735);
+emit_16(671);
+emit_16(735);
+emit_16(670);
+emit_16(735);
+emit_16(671);
+emit_16(736);
+emit_16(672);
+emit_16(736);
+emit_16(671);
+emit_16(736);
+emit_16(672);
+emit_16(737);
+emit_16(673);
+emit_16(737);
+emit_16(672);
+emit_16(737);
+emit_16(673);
+emit_16(738);
+emit_16(674);
+emit_16(738);
+emit_16(673);
+emit_16(738);
+emit_16(674);
+emit_16(739);
+emit_16(675);
+emit_16(739);
+emit_16(674);
+emit_16(739);
+emit_16(675);
+emit_16(740);
+emit_16(676);
+emit_16(740);
+emit_16(675);
+emit_16(740);
+emit_16(676);
+emit_16(741);
+emit_16(677);
+emit_16(741);
+emit_16(676);
+emit_16(741);
+emit_16(677);
+emit_16(742);
+emit_16(678);
+emit_16(742);
+emit_16(677);
+emit_16(742);
+emit_16(678);
+emit_16(743);
+emit_16(679);
+emit_16(743);
+emit_16(678);
+emit_16(743);
+emit_16(679);
+emit_16(744);
+emit_16(680);
+emit_16(744);
+emit_16(679);
+emit_16(744);
+emit_16(680);
+emit_16(745);
+emit_16(681);
+emit_16(745);
+emit_16(680);
+emit_16(745);
+emit_16(681);
+emit_16(746);
+emit_16(682);
+emit_16(746);
+emit_16(681);
+emit_16(746);
+emit_16(682);
+emit_16(747);
+emit_16(683);
+emit_16(747);
+emit_16(682);
+emit_16(747);
+emit_16(683);
+emit_16(748);
+emit_16(684);
+emit_16(748);
+emit_16(683);
+emit_16(748);
+emit_16(684);
+emit_16(749);
+emit_16(685);
+emit_16(749);
+emit_16(684);
+emit_16(749);
+emit_16(685);
+emit_16(750);
+emit_16(686);
+emit_16(750);
+emit_16(685);
+emit_16(750);
+emit_16(686);
+emit_16(751);
+emit_16(687);
+emit_16(751);
+emit_16(686);
+emit_16(751);
+emit_16(687);
+emit_16(752);
+emit_16(688);
+emit_16(752);
+emit_16(687);
+emit_16(752);
+emit_16(688);
+emit_16(753);
+emit_16(689);
+emit_16(753);
+emit_16(688);
+emit_16(753);
+emit_16(689);
+emit_16(754);
+emit_16(690);
+emit_16(754);
+emit_16(689);
+emit_16(754);
+emit_16(690);
+emit_16(755);
+emit_16(691);
+emit_16(755);
+emit_16(690);
+emit_16(755);
+emit_16(691);
+emit_16(756);
+emit_16(692);
+emit_16(756);
+emit_16(691);
+emit_16(756);
+emit_16(692);
+emit_16(757);
+emit_16(693);
+emit_16(757);
+emit_16(692);
+emit_16(757);
+emit_16(693);
+emit_16(758);
+emit_16(694);
+emit_16(758);
+emit_16(693);
+emit_16(758);
+emit_16(694);
+emit_16(759);
+emit_16(695);
+emit_16(759);
+emit_16(694);
+emit_16(759);
+emit_16(695);
+emit_16(760);
+emit_16(696);
+emit_16(760);
+emit_16(695);
+emit_16(760);
+emit_16(696);
+emit_16(761);
+emit_16(697);
+emit_16(761);
+emit_16(696);
+emit_16(761);
+emit_16(697);
+emit_16(762);
+emit_16(698);
+emit_16(762);
+emit_16(697);
+emit_16(762);
+emit_16(698);
+emit_16(763);
+emit_16(699);
+emit_16(763);
+emit_16(698);
+emit_16(763);
+emit_16(699);
+emit_16(764);
+emit_16(700);
+emit_16(764);
+emit_16(699);
+emit_16(764);
+emit_16(700);
+emit_16(765);
+emit_16(701);
+emit_16(765);
+emit_16(700);
+emit_16(765);
+emit_16(701);
+emit_16(766);
+emit_16(702);
+emit_16(766);
+emit_16(701);
+emit_16(766);
+emit_16(702);
+emit_16(767);
+emit_16(703);
+emit_16(767);
+emit_16(702);
+emit_16(768);
+emit_16(704);
+emit_16(769);
+emit_16(705);
+emit_16(769);
+emit_16(704);
+emit_16(769);
+emit_16(705);
+emit_16(770);
+emit_16(706);
+emit_16(770);
+emit_16(705);
+emit_16(770);
+emit_16(706);
+emit_16(771);
+emit_16(707);
+emit_16(771);
+emit_16(706);
+emit_16(771);
+emit_16(707);
+emit_16(772);
+emit_16(708);
+emit_16(772);
+emit_16(707);
+emit_16(772);
+emit_16(708);
+emit_16(773);
+emit_16(709);
+emit_16(773);
+emit_16(708);
+emit_16(773);
+emit_16(709);
+emit_16(774);
+emit_16(710);
+emit_16(774);
+emit_16(709);
+emit_16(774);
+emit_16(710);
+emit_16(775);
+emit_16(711);
+emit_16(775);
+emit_16(710);
+emit_16(775);
+emit_16(711);
+emit_16(776);
+emit_16(712);
+emit_16(776);
+emit_16(711);
+emit_16(776);
+emit_16(712);
+emit_16(777);
+emit_16(713);
+emit_16(777);
+emit_16(712);
+emit_16(777);
+emit_16(713);
+emit_16(778);
+emit_16(714);
+emit_16(778);
+emit_16(713);
+emit_16(778);
+emit_16(714);
+emit_16(779);
+emit_16(715);
+emit_16(779);
+emit_16(714);
+emit_16(779);
+emit_16(715);
+emit_16(780);
+emit_16(716);
+emit_16(780);
+emit_16(715);
+emit_16(780);
+emit_16(716);
+emit_16(781);
+emit_16(717);
+emit_16(781);
+emit_16(716);
+emit_16(781);
+emit_16(717);
+emit_16(782);
+emit_16(718);
+emit_16(782);
+emit_16(717);
+emit_16(782);
+emit_16(718);
+emit_16(783);
+emit_16(719);
+emit_16(783);
+emit_16(718);
+emit_16(783);
+emit_16(719);
+emit_16(784);
+emit_16(720);
+emit_16(784);
+emit_16(719);
+emit_16(784);
+emit_16(720);
+emit_16(785);
+emit_16(721);
+emit_16(785);
+emit_16(720);
+emit_16(785);
+emit_16(721);
+emit_16(786);
+emit_16(722);
+emit_16(786);
+emit_16(721);
+emit_16(786);
+emit_16(722);
+emit_16(787);
+emit_16(723);
+emit_16(787);
+emit_16(722);
+emit_16(787);
+emit_16(723);
+emit_16(788);
+emit_16(724);
+emit_16(788);
+emit_16(723);
+emit_16(788);
+emit_16(724);
+emit_16(789);
+emit_16(725);
+emit_16(789);
+emit_16(724);
+emit_16(789);
+emit_16(725);
+emit_16(790);
+emit_16(726);
+emit_16(790);
+emit_16(725);
+emit_16(790);
+emit_16(726);
+emit_16(791);
+emit_16(727);
+emit_16(791);
+emit_16(726);
+emit_16(791);
+emit_16(727);
+emit_16(792);
+emit_16(728);
+emit_16(792);
+emit_16(727);
+emit_16(792);
+emit_16(728);
+emit_16(793);
+emit_16(729);
+emit_16(793);
+emit_16(728);
+emit_16(793);
+emit_16(729);
+emit_16(794);
+emit_16(730);
+emit_16(794);
+emit_16(729);
+emit_16(794);
+emit_16(730);
+emit_16(795);
+emit_16(731);
+emit_16(795);
+emit_16(730);
+emit_16(795);
+emit_16(731);
+emit_16(796);
+emit_16(732);
+emit_16(796);
+emit_16(731);
+emit_16(796);
+emit_16(732);
+emit_16(797);
+emit_16(733);
+emit_16(797);
+emit_16(732);
+emit_16(797);
+emit_16(733);
+emit_16(798);
+emit_16(734);
+emit_16(798);
+emit_16(733);
+emit_16(798);
+emit_16(734);
+emit_16(799);
+emit_16(735);
+emit_16(799);
+emit_16(734);
+emit_16(799);
+emit_16(735);
+emit_16(800);
+emit_16(736);
+emit_16(800);
+emit_16(735);
+emit_16(800);
+emit_16(736);
+emit_16(801);
+emit_16(737);
+emit_16(801);
+emit_16(736);
+emit_16(801);
+emit_16(737);
+emit_16(802);
+emit_16(738);
+emit_16(802);
+emit_16(737);
+emit_16(802);
+emit_16(738);
+emit_16(803);
+emit_16(739);
+emit_16(803);
+emit_16(738);
+emit_16(803);
+emit_16(739);
+emit_16(804);
+emit_16(740);
+emit_16(804);
+emit_16(739);
+emit_16(804);
+emit_16(740);
+emit_16(805);
+emit_16(741);
+emit_16(805);
+emit_16(740);
+emit_16(805);
+emit_16(741);
+emit_16(806);
+emit_16(742);
+emit_16(806);
+emit_16(741);
+emit_16(806);
+emit_16(742);
+emit_16(807);
+emit_16(743);
+emit_16(807);
+emit_16(742);
+emit_16(807);
+emit_16(743);
+emit_16(808);
+emit_16(744);
+emit_16(808);
+emit_16(743);
+emit_16(808);
+emit_16(744);
+emit_16(809);
+emit_16(745);
+emit_16(809);
+emit_16(744);
+emit_16(809);
+emit_16(745);
+emit_16(810);
+emit_16(746);
+emit_16(810);
+emit_16(745);
+emit_16(810);
+emit_16(746);
+emit_16(811);
+emit_16(747);
+emit_16(811);
+emit_16(746);
+emit_16(811);
+emit_16(747);
+emit_16(812);
+emit_16(748);
+emit_16(812);
+emit_16(747);
+emit_16(812);
+emit_16(748);
+emit_16(813);
+emit_16(749);
+emit_16(813);
+emit_16(748);
+emit_16(813);
+emit_16(749);
+emit_16(814);
+emit_16(750);
+emit_16(814);
+emit_16(749);
+emit_16(814);
+emit_16(750);
+emit_16(815);
+emit_16(751);
+emit_16(815);
+emit_16(750);
+emit_16(815);
+emit_16(751);
+emit_16(816);
+emit_16(752);
+emit_16(816);
+emit_16(751);
+emit_16(816);
+emit_16(752);
+emit_16(817);
+emit_16(753);
+emit_16(817);
+emit_16(752);
+emit_16(817);
+emit_16(753);
+emit_16(818);
+emit_16(754);
+emit_16(818);
+emit_16(753);
+emit_16(818);
+emit_16(754);
+emit_16(819);
+emit_16(755);
+emit_16(819);
+emit_16(754);
+emit_16(819);
+emit_16(755);
+emit_16(820);
+emit_16(756);
+emit_16(820);
+emit_16(755);
+emit_16(820);
+emit_16(756);
+emit_16(821);
+emit_16(757);
+emit_16(821);
+emit_16(756);
+emit_16(821);
+emit_16(757);
+emit_16(822);
+emit_16(758);
+emit_16(822);
+emit_16(757);
+emit_16(822);
+emit_16(758);
+emit_16(823);
+emit_16(759);
+emit_16(823);
+emit_16(758);
+emit_16(823);
+emit_16(759);
+emit_16(824);
+emit_16(760);
+emit_16(824);
+emit_16(759);
+emit_16(824);
+emit_16(760);
+emit_16(825);
+emit_16(761);
+emit_16(825);
+emit_16(760);
+emit_16(825);
+emit_16(761);
+emit_16(826);
+emit_16(762);
+emit_16(826);
+emit_16(761);
+emit_16(826);
+emit_16(762);
+emit_16(827);
+emit_16(763);
+emit_16(827);
+emit_16(762);
+emit_16(827);
+emit_16(763);
+emit_16(828);
+emit_16(764);
+emit_16(828);
+emit_16(763);
+emit_16(828);
+emit_16(764);
+emit_16(829);
+emit_16(765);
+emit_16(829);
+emit_16(764);
+emit_16(829);
+emit_16(765);
+emit_16(830);
+emit_16(766);
+emit_16(830);
+emit_16(765);
+emit_16(830);
+emit_16(766);
+emit_16(831);
+emit_16(767);
+emit_16(831);
+emit_16(766);
+emit_16(832);
+emit_16(768);
+emit_16(833);
+emit_16(769);
+emit_16(833);
+emit_16(768);
+emit_16(833);
+emit_16(769);
+emit_16(834);
+emit_16(770);
+emit_16(834);
+emit_16(769);
+emit_16(834);
+emit_16(770);
+emit_16(835);
+emit_16(771);
+emit_16(835);
+emit_16(770);
+emit_16(835);
+emit_16(771);
+emit_16(836);
+emit_16(772);
+emit_16(836);
+emit_16(771);
+emit_16(836);
+emit_16(772);
+emit_16(837);
+emit_16(773);
+emit_16(837);
+emit_16(772);
+emit_16(837);
+emit_16(773);
+emit_16(838);
+emit_16(774);
+emit_16(838);
+emit_16(773);
+emit_16(838);
+emit_16(774);
+emit_16(839);
+emit_16(775);
+emit_16(839);
+emit_16(774);
+emit_16(839);
+emit_16(775);
+emit_16(840);
+emit_16(776);
+emit_16(840);
+emit_16(775);
+emit_16(840);
+emit_16(776);
+emit_16(841);
+emit_16(777);
+emit_16(841);
+emit_16(776);
+emit_16(841);
+emit_16(777);
+emit_16(842);
+emit_16(778);
+emit_16(842);
+emit_16(777);
+emit_16(842);
+emit_16(778);
+emit_16(843);
+emit_16(779);
+emit_16(843);
+emit_16(778);
+emit_16(843);
+emit_16(779);
+emit_16(844);
+emit_16(780);
+emit_16(844);
+emit_16(779);
+emit_16(844);
+emit_16(780);
+emit_16(845);
+emit_16(781);
+emit_16(845);
+emit_16(780);
+emit_16(845);
+emit_16(781);
+emit_16(846);
+emit_16(782);
+emit_16(846);
+emit_16(781);
+emit_16(846);
+emit_16(782);
+emit_16(847);
+emit_16(783);
+emit_16(847);
+emit_16(782);
+emit_16(847);
+emit_16(783);
+emit_16(848);
+emit_16(784);
+emit_16(848);
+emit_16(783);
+emit_16(848);
+emit_16(784);
+emit_16(849);
+emit_16(785);
+emit_16(849);
+emit_16(784);
+emit_16(849);
+emit_16(785);
+emit_16(850);
+emit_16(786);
+emit_16(850);
+emit_16(785);
+emit_16(850);
+emit_16(786);
+emit_16(851);
+emit_16(787);
+emit_16(851);
+emit_16(786);
+emit_16(851);
+emit_16(787);
+emit_16(852);
+emit_16(788);
+emit_16(852);
+emit_16(787);
+emit_16(852);
+emit_16(788);
+emit_16(853);
+emit_16(789);
+emit_16(853);
+emit_16(788);
+emit_16(853);
+emit_16(789);
+emit_16(854);
+emit_16(790);
+emit_16(854);
+emit_16(789);
+emit_16(854);
+emit_16(790);
+emit_16(855);
+emit_16(791);
+emit_16(855);
+emit_16(790);
+emit_16(855);
+emit_16(791);
+emit_16(856);
+emit_16(792);
+emit_16(856);
+emit_16(791);
+emit_16(856);
+emit_16(792);
+emit_16(857);
+emit_16(793);
+emit_16(857);
+emit_16(792);
+emit_16(857);
+emit_16(793);
+emit_16(858);
+emit_16(794);
+emit_16(858);
+emit_16(793);
+emit_16(858);
+emit_16(794);
+emit_16(859);
+emit_16(795);
+emit_16(859);
+emit_16(794);
+emit_16(859);
+emit_16(795);
+emit_16(860);
+emit_16(796);
+emit_16(860);
+emit_16(795);
+emit_16(860);
+emit_16(796);
+emit_16(861);
+emit_16(797);
+emit_16(861);
+emit_16(796);
+emit_16(861);
+emit_16(797);
+emit_16(862);
+emit_16(798);
+emit_16(862);
+emit_16(797);
+emit_16(862);
+emit_16(798);
+emit_16(863);
+emit_16(799);
+emit_16(863);
+emit_16(798);
+emit_16(863);
+emit_16(799);
+emit_16(864);
+emit_16(800);
+emit_16(864);
+emit_16(799);
+emit_16(864);
+emit_16(800);
+emit_16(865);
+emit_16(801);
+emit_16(865);
+emit_16(800);
+emit_16(865);
+emit_16(801);
+emit_16(866);
+emit_16(802);
+emit_16(866);
+emit_16(801);
+emit_16(866);
+emit_16(802);
+emit_16(867);
+emit_16(803);
+emit_16(867);
+emit_16(802);
+emit_16(867);
+emit_16(803);
+emit_16(868);
+emit_16(804);
+emit_16(868);
+emit_16(803);
+emit_16(868);
+emit_16(804);
+emit_16(869);
+emit_16(805);
+emit_16(869);
+emit_16(804);
+emit_16(869);
+emit_16(805);
+emit_16(870);
+emit_16(806);
+emit_16(870);
+emit_16(805);
+emit_16(870);
+emit_16(806);
+emit_16(871);
+emit_16(807);
+emit_16(871);
+emit_16(806);
+emit_16(871);
+emit_16(807);
+emit_16(872);
+emit_16(808);
+emit_16(872);
+emit_16(807);
+emit_16(872);
+emit_16(808);
+emit_16(873);
+emit_16(809);
+emit_16(873);
+emit_16(808);
+emit_16(873);
+emit_16(809);
+emit_16(874);
+emit_16(810);
+emit_16(874);
+emit_16(809);
+emit_16(874);
+emit_16(810);
+emit_16(875);
+emit_16(811);
+emit_16(875);
+emit_16(810);
+emit_16(875);
+emit_16(811);
+emit_16(876);
+emit_16(812);
+emit_16(876);
+emit_16(811);
+emit_16(876);
+emit_16(812);
+emit_16(877);
+emit_16(813);
+emit_16(877);
+emit_16(812);
+emit_16(877);
+emit_16(813);
+emit_16(878);
+emit_16(814);
+emit_16(878);
+emit_16(813);
+emit_16(878);
+emit_16(814);
+emit_16(879);
+emit_16(815);
+emit_16(879);
+emit_16(814);
+emit_16(879);
+emit_16(815);
+emit_16(880);
+emit_16(816);
+emit_16(880);
+emit_16(815);
+emit_16(880);
+emit_16(816);
+emit_16(881);
+emit_16(817);
+emit_16(881);
+emit_16(816);
+emit_16(881);
+emit_16(817);
+emit_16(882);
+emit_16(818);
+emit_16(882);
+emit_16(817);
+emit_16(882);
+emit_16(818);
+emit_16(883);
+emit_16(819);
+emit_16(883);
+emit_16(818);
+emit_16(883);
+emit_16(819);
+emit_16(884);
+emit_16(820);
+emit_16(884);
+emit_16(819);
+emit_16(884);
+emit_16(820);
+emit_16(885);
+emit_16(821);
+emit_16(885);
+emit_16(820);
+emit_16(885);
+emit_16(821);
+emit_16(886);
+emit_16(822);
+emit_16(886);
+emit_16(821);
+emit_16(886);
+emit_16(822);
+emit_16(887);
+emit_16(823);
+emit_16(887);
+emit_16(822);
+emit_16(887);
+emit_16(823);
+emit_16(888);
+emit_16(824);
+emit_16(888);
+emit_16(823);
+emit_16(888);
+emit_16(824);
+emit_16(889);
+emit_16(825);
+emit_16(889);
+emit_16(824);
+emit_16(889);
+emit_16(825);
+emit_16(890);
+emit_16(826);
+emit_16(890);
+emit_16(825);
+emit_16(890);
+emit_16(826);
+emit_16(891);
+emit_16(827);
+emit_16(891);
+emit_16(826);
+emit_16(891);
+emit_16(827);
+emit_16(892);
+emit_16(828);
+emit_16(892);
+emit_16(827);
+emit_16(892);
+emit_16(828);
+emit_16(893);
+emit_16(829);
+emit_16(893);
+emit_16(828);
+emit_16(893);
+emit_16(829);
+emit_16(894);
+emit_16(830);
+emit_16(894);
+emit_16(829);
+emit_16(894);
+emit_16(830);
+emit_16(895);
+emit_16(831);
+emit_16(895);
+emit_16(830);
+emit_16(896);
+emit_16(832);
+emit_16(897);
+emit_16(833);
+emit_16(897);
+emit_16(832);
+emit_16(897);
+emit_16(833);
+emit_16(898);
+emit_16(834);
+emit_16(898);
+emit_16(833);
+emit_16(898);
+emit_16(834);
+emit_16(899);
+emit_16(835);
+emit_16(899);
+emit_16(834);
+emit_16(899);
+emit_16(835);
+emit_16(900);
+emit_16(836);
+emit_16(900);
+emit_16(835);
+emit_16(900);
+emit_16(836);
+emit_16(901);
+emit_16(837);
+emit_16(901);
+emit_16(836);
+emit_16(901);
+emit_16(837);
+emit_16(902);
+emit_16(838);
+emit_16(902);
+emit_16(837);
+emit_16(902);
+emit_16(838);
+emit_16(903);
+emit_16(839);
+emit_16(903);
+emit_16(838);
+emit_16(903);
+emit_16(839);
+emit_16(904);
+emit_16(840);
+emit_16(904);
+emit_16(839);
+emit_16(904);
+emit_16(840);
+emit_16(905);
+emit_16(841);
+emit_16(905);
+emit_16(840);
+emit_16(905);
+emit_16(841);
+emit_16(906);
+emit_16(842);
+emit_16(906);
+emit_16(841);
+emit_16(906);
+emit_16(842);
+emit_16(907);
+emit_16(843);
+emit_16(907);
+emit_16(842);
+emit_16(907);
+emit_16(843);
+emit_16(908);
+emit_16(844);
+emit_16(908);
+emit_16(843);
+emit_16(908);
+emit_16(844);
+emit_16(909);
+emit_16(845);
+emit_16(909);
+emit_16(844);
+emit_16(909);
+emit_16(845);
+emit_16(910);
+emit_16(846);
+emit_16(910);
+emit_16(845);
+emit_16(910);
+emit_16(846);
+emit_16(911);
+emit_16(847);
+emit_16(911);
+emit_16(846);
+emit_16(911);
+emit_16(847);
+emit_16(912);
+emit_16(848);
+emit_16(912);
+emit_16(847);
+emit_16(912);
+emit_16(848);
+emit_16(913);
+emit_16(849);
+emit_16(913);
+emit_16(848);
+emit_16(913);
+emit_16(849);
+emit_16(914);
+emit_16(850);
+emit_16(914);
+emit_16(849);
+emit_16(914);
+emit_16(850);
+emit_16(915);
+emit_16(851);
+emit_16(915);
+emit_16(850);
+emit_16(915);
+emit_16(851);
+emit_16(916);
+emit_16(852);
+emit_16(916);
+emit_16(851);
+emit_16(916);
+emit_16(852);
+emit_16(917);
+emit_16(853);
+emit_16(917);
+emit_16(852);
+emit_16(917);
+emit_16(853);
+emit_16(918);
+emit_16(854);
+emit_16(918);
+emit_16(853);
+emit_16(918);
+emit_16(854);
+emit_16(919);
+emit_16(855);
+emit_16(919);
+emit_16(854);
+emit_16(919);
+emit_16(855);
+emit_16(920);
+emit_16(856);
+emit_16(920);
+emit_16(855);
+emit_16(920);
+emit_16(856);
+emit_16(921);
+emit_16(857);
+emit_16(921);
+emit_16(856);
+emit_16(921);
+emit_16(857);
+emit_16(922);
+emit_16(858);
+emit_16(922);
+emit_16(857);
+emit_16(922);
+emit_16(858);
+emit_16(923);
+emit_16(859);
+emit_16(923);
+emit_16(858);
+emit_16(923);
+emit_16(859);
+emit_16(924);
+emit_16(860);
+emit_16(924);
+emit_16(859);
+emit_16(924);
+emit_16(860);
+emit_16(925);
+emit_16(861);
+emit_16(925);
+emit_16(860);
+emit_16(925);
+emit_16(861);
+emit_16(926);
+emit_16(862);
+emit_16(926);
+emit_16(861);
+emit_16(926);
+emit_16(862);
+emit_16(927);
+emit_16(863);
+emit_16(927);
+emit_16(862);
+emit_16(927);
+emit_16(863);
+emit_16(928);
+emit_16(864);
+emit_16(928);
+emit_16(863);
+emit_16(928);
+emit_16(864);
+emit_16(929);
+emit_16(865);
+emit_16(929);
+emit_16(864);
+emit_16(929);
+emit_16(865);
+emit_16(930);
+emit_16(866);
+emit_16(930);
+emit_16(865);
+emit_16(930);
+emit_16(866);
+emit_16(931);
+emit_16(867);
+emit_16(931);
+emit_16(866);
+emit_16(931);
+emit_16(867);
+emit_16(932);
+emit_16(868);
+emit_16(932);
+emit_16(867);
+emit_16(932);
+emit_16(868);
+emit_16(933);
+emit_16(869);
+emit_16(933);
+emit_16(868);
+emit_16(933);
+emit_16(869);
+emit_16(934);
+emit_16(870);
+emit_16(934);
+emit_16(869);
+emit_16(934);
+emit_16(870);
+emit_16(935);
+emit_16(871);
+emit_16(935);
+emit_16(870);
+emit_16(935);
+emit_16(871);
+emit_16(936);
+emit_16(872);
+emit_16(936);
+emit_16(871);
+emit_16(936);
+emit_16(872);
+emit_16(937);
+emit_16(873);
+emit_16(937);
+emit_16(872);
+emit_16(937);
+emit_16(873);
+emit_16(938);
+emit_16(874);
+emit_16(938);
+emit_16(873);
+emit_16(938);
+emit_16(874);
+emit_16(939);
+emit_16(875);
+emit_16(939);
+emit_16(874);
+emit_16(939);
+emit_16(875);
+emit_16(940);
+emit_16(876);
+emit_16(940);
+emit_16(875);
+emit_16(940);
+emit_16(876);
+emit_16(941);
+emit_16(877);
+emit_16(941);
+emit_16(876);
+emit_16(941);
+emit_16(877);
+emit_16(942);
+emit_16(878);
+emit_16(942);
+emit_16(877);
+emit_16(942);
+emit_16(878);
+emit_16(943);
+emit_16(879);
+emit_16(943);
+emit_16(878);
+emit_16(943);
+emit_16(879);
+emit_16(944);
+emit_16(880);
+emit_16(944);
+emit_16(879);
+emit_16(944);
+emit_16(880);
+emit_16(945);
+emit_16(881);
+emit_16(945);
+emit_16(880);
+emit_16(945);
+emit_16(881);
+emit_16(946);
+emit_16(882);
+emit_16(946);
+emit_16(881);
+emit_16(946);
+emit_16(882);
+emit_16(947);
+emit_16(883);
+emit_16(947);
+emit_16(882);
+emit_16(947);
+emit_16(883);
+emit_16(948);
+emit_16(884);
+emit_16(948);
+emit_16(883);
+emit_16(948);
+emit_16(884);
+emit_16(949);
+emit_16(885);
+emit_16(949);
+emit_16(884);
+emit_16(949);
+emit_16(885);
+emit_16(950);
+emit_16(886);
+emit_16(950);
+emit_16(885);
+emit_16(950);
+emit_16(886);
+emit_16(951);
+emit_16(887);
+emit_16(951);
+emit_16(886);
+emit_16(951);
+emit_16(887);
+emit_16(952);
+emit_16(888);
+emit_16(952);
+emit_16(887);
+emit_16(952);
+emit_16(888);
+emit_16(953);
+emit_16(889);
+emit_16(953);
+emit_16(888);
+emit_16(953);
+emit_16(889);
+emit_16(954);
+emit_16(890);
+emit_16(954);
+emit_16(889);
+emit_16(954);
+emit_16(890);
+emit_16(955);
+emit_16(891);
+emit_16(955);
+emit_16(890);
+emit_16(955);
+emit_16(891);
+emit_16(956);
+emit_16(892);
+emit_16(956);
+emit_16(891);
+emit_16(956);
+emit_16(892);
+emit_16(957);
+emit_16(893);
+emit_16(957);
+emit_16(892);
+emit_16(957);
+emit_16(893);
+emit_16(958);
+emit_16(894);
+emit_16(958);
+emit_16(893);
+emit_16(958);
+emit_16(894);
+emit_16(959);
+emit_16(895);
+emit_16(959);
+emit_16(894);
+emit_16(960);
+emit_16(896);
+emit_16(961);
+emit_16(897);
+emit_16(961);
+emit_16(896);
+emit_16(961);
+emit_16(897);
+emit_16(962);
+emit_16(898);
+emit_16(962);
+emit_16(897);
+emit_16(962);
+emit_16(898);
+emit_16(963);
+emit_16(899);
+emit_16(963);
+emit_16(898);
+emit_16(963);
+emit_16(899);
+emit_16(964);
+emit_16(900);
+emit_16(964);
+emit_16(899);
+emit_16(964);
+emit_16(900);
+emit_16(965);
+emit_16(901);
+emit_16(965);
+emit_16(900);
+emit_16(965);
+emit_16(901);
+emit_16(966);
+emit_16(902);
+emit_16(966);
+emit_16(901);
+emit_16(966);
+emit_16(902);
+emit_16(967);
+emit_16(903);
+emit_16(967);
+emit_16(902);
+emit_16(967);
+emit_16(903);
+emit_16(968);
+emit_16(904);
+emit_16(968);
+emit_16(903);
+emit_16(968);
+emit_16(904);
+emit_16(969);
+emit_16(905);
+emit_16(969);
+emit_16(904);
+emit_16(969);
+emit_16(905);
+emit_16(970);
+emit_16(906);
+emit_16(970);
+emit_16(905);
+emit_16(970);
+emit_16(906);
+emit_16(971);
+emit_16(907);
+emit_16(971);
+emit_16(906);
+emit_16(971);
+emit_16(907);
+emit_16(972);
+emit_16(908);
+emit_16(972);
+emit_16(907);
+emit_16(972);
+emit_16(908);
+emit_16(973);
+emit_16(909);
+emit_16(973);
+emit_16(908);
+emit_16(973);
+emit_16(909);
+emit_16(974);
+emit_16(910);
+emit_16(974);
+emit_16(909);
+emit_16(974);
+emit_16(910);
+emit_16(975);
+emit_16(911);
+emit_16(975);
+emit_16(910);
+emit_16(975);
+emit_16(911);
+emit_16(976);
+emit_16(912);
+emit_16(976);
+emit_16(911);
+emit_16(976);
+emit_16(912);
+emit_16(977);
+emit_16(913);
+emit_16(977);
+emit_16(912);
+emit_16(977);
+emit_16(913);
+emit_16(978);
+emit_16(914);
+emit_16(978);
+emit_16(913);
+emit_16(978);
+emit_16(914);
+emit_16(979);
+emit_16(915);
+emit_16(979);
+emit_16(914);
+emit_16(979);
+emit_16(915);
+emit_16(980);
+emit_16(916);
+emit_16(980);
+emit_16(915);
+emit_16(980);
+emit_16(916);
+emit_16(981);
+emit_16(917);
+emit_16(981);
+emit_16(916);
+emit_16(981);
+emit_16(917);
+emit_16(982);
+emit_16(918);
+emit_16(982);
+emit_16(917);
+emit_16(982);
+emit_16(918);
+emit_16(983);
+emit_16(919);
+emit_16(983);
+emit_16(918);
+emit_16(983);
+emit_16(919);
+emit_16(984);
+emit_16(920);
+emit_16(984);
+emit_16(919);
+emit_16(984);
+emit_16(920);
+emit_16(985);
+emit_16(921);
+emit_16(985);
+emit_16(920);
+emit_16(985);
+emit_16(921);
+emit_16(986);
+emit_16(922);
+emit_16(986);
+emit_16(921);
+emit_16(986);
+emit_16(922);
+emit_16(987);
+emit_16(923);
+emit_16(987);
+emit_16(922);
+emit_16(987);
+emit_16(923);
+emit_16(988);
+emit_16(924);
+emit_16(988);
+emit_16(923);
+emit_16(988);
+emit_16(924);
+emit_16(989);
+emit_16(925);
+emit_16(989);
+emit_16(924);
+emit_16(989);
+emit_16(925);
+emit_16(990);
+emit_16(926);
+emit_16(990);
+emit_16(925);
+emit_16(990);
+emit_16(926);
+emit_16(991);
+emit_16(927);
+emit_16(991);
+emit_16(926);
+emit_16(991);
+emit_16(927);
+emit_16(992);
+emit_16(928);
+emit_16(992);
+emit_16(927);
+emit_16(992);
+emit_16(928);
+emit_16(993);
+emit_16(929);
+emit_16(993);
+emit_16(928);
+emit_16(993);
+emit_16(929);
+emit_16(994);
+emit_16(930);
+emit_16(994);
+emit_16(929);
+emit_16(994);
+emit_16(930);
+emit_16(995);
+emit_16(931);
+emit_16(995);
+emit_16(930);
+emit_16(995);
+emit_16(931);
+emit_16(996);
+emit_16(932);
+emit_16(996);
+emit_16(931);
+emit_16(996);
+emit_16(932);
+emit_16(997);
+emit_16(933);
+emit_16(997);
+emit_16(932);
+emit_16(997);
+emit_16(933);
+emit_16(998);
+emit_16(934);
+emit_16(998);
+emit_16(933);
+emit_16(998);
+emit_16(934);
+emit_16(999);
+emit_16(935);
+emit_16(999);
+emit_16(934);
+emit_16(999);
+emit_16(935);
+emit_16(1000);
+emit_16(936);
+emit_16(1000);
+emit_16(935);
+emit_16(1000);
+emit_16(936);
+emit_16(1001);
+emit_16(937);
+emit_16(1001);
+emit_16(936);
+emit_16(1001);
+emit_16(937);
+emit_16(1002);
+emit_16(938);
+emit_16(1002);
+emit_16(937);
+emit_16(1002);
+emit_16(938);
+emit_16(1003);
+emit_16(939);
+emit_16(1003);
+emit_16(938);
+emit_16(1003);
+emit_16(939);
+emit_16(1004);
+emit_16(940);
+emit_16(1004);
+emit_16(939);
+emit_16(1004);
+emit_16(940);
+emit_16(1005);
+emit_16(941);
+emit_16(1005);
+emit_16(940);
+emit_16(1005);
+emit_16(941);
+emit_16(1006);
+emit_16(942);
+emit_16(1006);
+emit_16(941);
+emit_16(1006);
+emit_16(942);
+emit_16(1007);
+emit_16(943);
+emit_16(1007);
+emit_16(942);
+emit_16(1007);
+emit_16(943);
+emit_16(1008);
+emit_16(944);
+emit_16(1008);
+emit_16(943);
+emit_16(1008);
+emit_16(944);
+emit_16(1009);
+emit_16(945);
+emit_16(1009);
+emit_16(944);
+emit_16(1009);
+emit_16(945);
+emit_16(1010);
+emit_16(946);
+emit_16(1010);
+emit_16(945);
+emit_16(1010);
+emit_16(946);
+emit_16(1011);
+emit_16(947);
+emit_16(1011);
+emit_16(946);
+emit_16(1011);
+emit_16(947);
+emit_16(1012);
+emit_16(948);
+emit_16(1012);
+emit_16(947);
+emit_16(1012);
+emit_16(948);
+emit_16(1013);
+emit_16(949);
+emit_16(1013);
+emit_16(948);
+emit_16(1013);
+emit_16(949);
+emit_16(1014);
+emit_16(950);
+emit_16(1014);
+emit_16(949);
+emit_16(1014);
+emit_16(950);
+emit_16(1015);
+emit_16(951);
+emit_16(1015);
+emit_16(950);
+emit_16(1015);
+emit_16(951);
+emit_16(1016);
+emit_16(952);
+emit_16(1016);
+emit_16(951);
+emit_16(1016);
+emit_16(952);
+emit_16(1017);
+emit_16(953);
+emit_16(1017);
+emit_16(952);
+emit_16(1017);
+emit_16(953);
+emit_16(1018);
+emit_16(954);
+emit_16(1018);
+emit_16(953);
+emit_16(1018);
+emit_16(954);
+emit_16(1019);
+emit_16(955);
+emit_16(1019);
+emit_16(954);
+emit_16(1019);
+emit_16(955);
+emit_16(1020);
+emit_16(956);
+emit_16(1020);
+emit_16(955);
+emit_16(1020);
+emit_16(956);
+emit_16(1021);
+emit_16(957);
+emit_16(1021);
+emit_16(956);
+emit_16(1021);
+emit_16(957);
+emit_16(1022);
+emit_16(958);
+emit_16(1022);
+emit_16(957);
+emit_16(1022);
+emit_16(958);
+emit_16(1023);
+emit_16(959);
+emit_16(1023);
+emit_16(958);
+emit_16(1024);
+emit_16(960);
+emit_16(1025);
+emit_16(961);
+emit_16(1025);
+emit_16(960);
+emit_16(1025);
+emit_16(961);
+emit_16(1026);
+emit_16(962);
+emit_16(1026);
+emit_16(961);
+emit_16(1026);
+emit_16(962);
+emit_16(1027);
+emit_16(963);
+emit_16(1027);
+emit_16(962);
+emit_16(1027);
+emit_16(963);
+emit_16(1028);
+emit_16(964);
+emit_16(1028);
+emit_16(963);
+emit_16(1028);
+emit_16(964);
+emit_16(1029);
+emit_16(965);
+emit_16(1029);
+emit_16(964);
+emit_16(1029);
+emit_16(965);
+emit_16(1030);
+emit_16(966);
+emit_16(1030);
+emit_16(965);
+emit_16(1030);
+emit_16(966);
+emit_16(1031);
+emit_16(967);
+emit_16(1031);
+emit_16(966);
+emit_16(1031);
+emit_16(967);
+emit_16(1032);
+emit_16(968);
+emit_16(1032);
+emit_16(967);
+emit_16(1032);
+emit_16(968);
+emit_16(1033);
+emit_16(969);
+emit_16(1033);
+emit_16(968);
+emit_16(1033);
+emit_16(969);
+emit_16(1034);
+emit_16(970);
+emit_16(1034);
+emit_16(969);
+emit_16(1034);
+emit_16(970);
+emit_16(1035);
+emit_16(971);
+emit_16(1035);
+emit_16(970);
+emit_16(1035);
+emit_16(971);
+emit_16(1036);
+emit_16(972);
+emit_16(1036);
+emit_16(971);
+emit_16(1036);
+emit_16(972);
+emit_16(1037);
+emit_16(973);
+emit_16(1037);
+emit_16(972);
+emit_16(1037);
+emit_16(973);
+emit_16(1038);
+emit_16(974);
+emit_16(1038);
+emit_16(973);
+emit_16(1038);
+emit_16(974);
+emit_16(1039);
+emit_16(975);
+emit_16(1039);
+emit_16(974);
+emit_16(1039);
+emit_16(975);
+emit_16(1040);
+emit_16(976);
+emit_16(1040);
+emit_16(975);
+emit_16(1040);
+emit_16(976);
+emit_16(1041);
+emit_16(977);
+emit_16(1041);
+emit_16(976);
+emit_16(1041);
+emit_16(977);
+emit_16(1042);
+emit_16(978);
+emit_16(1042);
+emit_16(977);
+emit_16(1042);
+emit_16(978);
+emit_16(1043);
+emit_16(979);
+emit_16(1043);
+emit_16(978);
+emit_16(1043);
+emit_16(979);
+emit_16(1044);
+emit_16(980);
+emit_16(1044);
+emit_16(979);
+emit_16(1044);
+emit_16(980);
+emit_16(1045);
+emit_16(981);
+emit_16(1045);
+emit_16(980);
+emit_16(1045);
+emit_16(981);
+emit_16(1046);
+emit_16(982);
+emit_16(1046);
+emit_16(981);
+emit_16(1046);
+emit_16(982);
+emit_16(1047);
+emit_16(983);
+emit_16(1047);
+emit_16(982);
+emit_16(1047);
+emit_16(983);
+emit_16(1048);
+emit_16(984);
+emit_16(1048);
+emit_16(983);
+emit_16(1048);
+emit_16(984);
+emit_16(1049);
+emit_16(985);
+emit_16(1049);
+emit_16(984);
+emit_16(1049);
+emit_16(985);
+emit_16(1050);
+emit_16(986);
+emit_16(1050);
+emit_16(985);
+emit_16(1050);
+emit_16(986);
+emit_16(1051);
+emit_16(987);
+emit_16(1051);
+emit_16(986);
+emit_16(1051);
+emit_16(987);
+emit_16(1052);
+emit_16(988);
+emit_16(1052);
+emit_16(987);
+emit_16(1052);
+emit_16(988);
+emit_16(1053);
+emit_16(989);
+emit_16(1053);
+emit_16(988);
+emit_16(1053);
+emit_16(989);
+emit_16(1054);
+emit_16(990);
+emit_16(1054);
+emit_16(989);
+emit_16(1054);
+emit_16(990);
+emit_16(1055);
+emit_16(991);
+emit_16(1055);
+emit_16(990);
+emit_16(1055);
+emit_16(991);
+emit_16(1056);
+emit_16(992);
+emit_16(1056);
+emit_16(991);
+emit_16(1056);
+emit_16(992);
+emit_16(1057);
+emit_16(993);
+emit_16(1057);
+emit_16(992);
+emit_16(1057);
+emit_16(993);
+emit_16(1058);
+emit_16(994);
+emit_16(1058);
+emit_16(993);
+emit_16(1058);
+emit_16(994);
+emit_16(1059);
+emit_16(995);
+emit_16(1059);
+emit_16(994);
+emit_16(1059);
+emit_16(995);
+emit_16(1060);
+emit_16(996);
+emit_16(1060);
+emit_16(995);
+emit_16(1060);
+emit_16(996);
+emit_16(1061);
+emit_16(997);
+emit_16(1061);
+emit_16(996);
+emit_16(1061);
+emit_16(997);
+emit_16(1062);
+emit_16(998);
+emit_16(1062);
+emit_16(997);
+emit_16(1062);
+emit_16(998);
+emit_16(1063);
+emit_16(999);
+emit_16(1063);
+emit_16(998);
+emit_16(1063);
+emit_16(999);
+emit_16(1064);
+emit_16(1000);
+emit_16(1064);
+emit_16(999);
+emit_16(1064);
+emit_16(1000);
+emit_16(1065);
+emit_16(1001);
+emit_16(1065);
+emit_16(1000);
+emit_16(1065);
+emit_16(1001);
+emit_16(1066);
+emit_16(1002);
+emit_16(1066);
+emit_16(1001);
+emit_16(1066);
+emit_16(1002);
+emit_16(1067);
+emit_16(1003);
+emit_16(1067);
+emit_16(1002);
+emit_16(1067);
+emit_16(1003);
+emit_16(1068);
+emit_16(1004);
+emit_16(1068);
+emit_16(1003);
+emit_16(1068);
+emit_16(1004);
+emit_16(1069);
+emit_16(1005);
+emit_16(1069);
+emit_16(1004);
+emit_16(1069);
+emit_16(1005);
+emit_16(1070);
+emit_16(1006);
+emit_16(1070);
+emit_16(1005);
+emit_16(1070);
+emit_16(1006);
+emit_16(1071);
+emit_16(1007);
+emit_16(1071);
+emit_16(1006);
+emit_16(1071);
+emit_16(1007);
+emit_16(1072);
+emit_16(1008);
+emit_16(1072);
+emit_16(1007);
+emit_16(1072);
+emit_16(1008);
+emit_16(1073);
+emit_16(1009);
+emit_16(1073);
+emit_16(1008);
+emit_16(1073);
+emit_16(1009);
+emit_16(1074);
+emit_16(1010);
+emit_16(1074);
+emit_16(1009);
+emit_16(1074);
+emit_16(1010);
+emit_16(1075);
+emit_16(1011);
+emit_16(1075);
+emit_16(1010);
+emit_16(1075);
+emit_16(1011);
+emit_16(1076);
+emit_16(1012);
+emit_16(1076);
+emit_16(1011);
+emit_16(1076);
+emit_16(1012);
+emit_16(1077);
+emit_16(1013);
+emit_16(1077);
+emit_16(1012);
+emit_16(1077);
+emit_16(1013);
+emit_16(1078);
+emit_16(1014);
+emit_16(1078);
+emit_16(1013);
+emit_16(1078);
+emit_16(1014);
+emit_16(1079);
+emit_16(1015);
+emit_16(1079);
+emit_16(1014);
+emit_16(1079);
+emit_16(1015);
+emit_16(1080);
+emit_16(1016);
+emit_16(1080);
+emit_16(1015);
+emit_16(1080);
+emit_16(1016);
+emit_16(1081);
+emit_16(1017);
+emit_16(1081);
+emit_16(1016);
+emit_16(1081);
+emit_16(1017);
+emit_16(1082);
+emit_16(1018);
+emit_16(1082);
+emit_16(1017);
+emit_16(1082);
+emit_16(1018);
+emit_16(1083);
+emit_16(1019);
+emit_16(1083);
+emit_16(1018);
+emit_16(1083);
+emit_16(1019);
+emit_16(1084);
+emit_16(1020);
+emit_16(1084);
+emit_16(1019);
+emit_16(1084);
+emit_16(1020);
+emit_16(1085);
+emit_16(1021);
+emit_16(1085);
+emit_16(1020);
+emit_16(1085);
+emit_16(1021);
+emit_16(1086);
+emit_16(1022);
+emit_16(1086);
+emit_16(1021);
+emit_16(1086);
+emit_16(1022);
+emit_16(1087);
+emit_16(1023);
+emit_16(1087);
+emit_16(1022);
+emit_16(1088);
+emit_16(1024);
+emit_16(1089);
+emit_16(1025);
+emit_16(1089);
+emit_16(1024);
+emit_16(1089);
+emit_16(1025);
+emit_16(1090);
+emit_16(1026);
+emit_16(1090);
+emit_16(1025);
+emit_16(1090);
+emit_16(1026);
+emit_16(1091);
+emit_16(1027);
+emit_16(1091);
+emit_16(1026);
+emit_16(1091);
+emit_16(1027);
+emit_16(1092);
+emit_16(1028);
+emit_16(1092);
+emit_16(1027);
+emit_16(1092);
+emit_16(1028);
+emit_16(1093);
+emit_16(1029);
+emit_16(1093);
+emit_16(1028);
+emit_16(1093);
+emit_16(1029);
+emit_16(1094);
+emit_16(1030);
+emit_16(1094);
+emit_16(1029);
+emit_16(1094);
+emit_16(1030);
+emit_16(1095);
+emit_16(1031);
+emit_16(1095);
+emit_16(1030);
+emit_16(1095);
+emit_16(1031);
+emit_16(1096);
+emit_16(1032);
+emit_16(1096);
+emit_16(1031);
+emit_16(1096);
+emit_16(1032);
+emit_16(1097);
+emit_16(1033);
+emit_16(1097);
+emit_16(1032);
+emit_16(1097);
+emit_16(1033);
+emit_16(1098);
+emit_16(1034);
+emit_16(1098);
+emit_16(1033);
+emit_16(1098);
+emit_16(1034);
+emit_16(1099);
+emit_16(1035);
+emit_16(1099);
+emit_16(1034);
+emit_16(1099);
+emit_16(1035);
+emit_16(1100);
+emit_16(1036);
+emit_16(1100);
+emit_16(1035);
+emit_16(1100);
+emit_16(1036);
+emit_16(1101);
+emit_16(1037);
+emit_16(1101);
+emit_16(1036);
+emit_16(1101);
+emit_16(1037);
+emit_16(1102);
+emit_16(1038);
+emit_16(1102);
+emit_16(1037);
+emit_16(1102);
+emit_16(1038);
+emit_16(1103);
+emit_16(1039);
+emit_16(1103);
+emit_16(1038);
+emit_16(1103);
+emit_16(1039);
+emit_16(1104);
+emit_16(1040);
+emit_16(1104);
+emit_16(1039);
+emit_16(1104);
+emit_16(1040);
+emit_16(1105);
+emit_16(1041);
+emit_16(1105);
+emit_16(1040);
+emit_16(1105);
+emit_16(1041);
+emit_16(1106);
+emit_16(1042);
+emit_16(1106);
+emit_16(1041);
+emit_16(1106);
+emit_16(1042);
+emit_16(1107);
+emit_16(1043);
+emit_16(1107);
+emit_16(1042);
+emit_16(1107);
+emit_16(1043);
+emit_16(1108);
+emit_16(1044);
+emit_16(1108);
+emit_16(1043);
+emit_16(1108);
+emit_16(1044);
+emit_16(1109);
+emit_16(1045);
+emit_16(1109);
+emit_16(1044);
+emit_16(1109);
+emit_16(1045);
+emit_16(1110);
+emit_16(1046);
+emit_16(1110);
+emit_16(1045);
+emit_16(1110);
+emit_16(1046);
+emit_16(1111);
+emit_16(1047);
+emit_16(1111);
+emit_16(1046);
+emit_16(1111);
+emit_16(1047);
+emit_16(1112);
+emit_16(1048);
+emit_16(1112);
+emit_16(1047);
+emit_16(1112);
+emit_16(1048);
+emit_16(1113);
+emit_16(1049);
+emit_16(1113);
+emit_16(1048);
+emit_16(1113);
+emit_16(1049);
+emit_16(1114);
+emit_16(1050);
+emit_16(1114);
+emit_16(1049);
+emit_16(1114);
+emit_16(1050);
+emit_16(1115);
+emit_16(1051);
+emit_16(1115);
+emit_16(1050);
+emit_16(1115);
+emit_16(1051);
+emit_16(1116);
+emit_16(1052);
+emit_16(1116);
+emit_16(1051);
+emit_16(1116);
+emit_16(1052);
+emit_16(1117);
+emit_16(1053);
+emit_16(1117);
+emit_16(1052);
+emit_16(1117);
+emit_16(1053);
+emit_16(1118);
+emit_16(1054);
+emit_16(1118);
+emit_16(1053);
+emit_16(1118);
+emit_16(1054);
+emit_16(1119);
+emit_16(1055);
+emit_16(1119);
+emit_16(1054);
+emit_16(1119);
+emit_16(1055);
+emit_16(1120);
+emit_16(1056);
+emit_16(1120);
+emit_16(1055);
+emit_16(1120);
+emit_16(1056);
+emit_16(1121);
+emit_16(1057);
+emit_16(1121);
+emit_16(1056);
+emit_16(1121);
+emit_16(1057);
+emit_16(1122);
+emit_16(1058);
+emit_16(1122);
+emit_16(1057);
+emit_16(1122);
+emit_16(1058);
+emit_16(1123);
+emit_16(1059);
+emit_16(1123);
+emit_16(1058);
+emit_16(1123);
+emit_16(1059);
+emit_16(1124);
+emit_16(1060);
+emit_16(1124);
+emit_16(1059);
+emit_16(1124);
+emit_16(1060);
+emit_16(1125);
+emit_16(1061);
+emit_16(1125);
+emit_16(1060);
+emit_16(1125);
+emit_16(1061);
+emit_16(1126);
+emit_16(1062);
+emit_16(1126);
+emit_16(1061);
+emit_16(1126);
+emit_16(1062);
+emit_16(1127);
+emit_16(1063);
+emit_16(1127);
+emit_16(1062);
+emit_16(1127);
+emit_16(1063);
+emit_16(1128);
+emit_16(1064);
+emit_16(1128);
+emit_16(1063);
+emit_16(1128);
+emit_16(1064);
+emit_16(1129);
+emit_16(1065);
+emit_16(1129);
+emit_16(1064);
+emit_16(1129);
+emit_16(1065);
+emit_16(1130);
+emit_16(1066);
+emit_16(1130);
+emit_16(1065);
+emit_16(1130);
+emit_16(1066);
+emit_16(1131);
+emit_16(1067);
+emit_16(1131);
+emit_16(1066);
+emit_16(1131);
+emit_16(1067);
+emit_16(1132);
+emit_16(1068);
+emit_16(1132);
+emit_16(1067);
+emit_16(1132);
+emit_16(1068);
+emit_16(1133);
+emit_16(1069);
+emit_16(1133);
+emit_16(1068);
+emit_16(1133);
+emit_16(1069);
+emit_16(1134);
+emit_16(1070);
+emit_16(1134);
+emit_16(1069);
+emit_16(1134);
+emit_16(1070);
+emit_16(1135);
+emit_16(1071);
+emit_16(1135);
+emit_16(1070);
+emit_16(1135);
+emit_16(1071);
+emit_16(1136);
+emit_16(1072);
+emit_16(1136);
+emit_16(1071);
+emit_16(1136);
+emit_16(1072);
+emit_16(1137);
+emit_16(1073);
+emit_16(1137);
+emit_16(1072);
+emit_16(1137);
+emit_16(1073);
+emit_16(1138);
+emit_16(1074);
+emit_16(1138);
+emit_16(1073);
+emit_16(1138);
+emit_16(1074);
+emit_16(1139);
+emit_16(1075);
+emit_16(1139);
+emit_16(1074);
+emit_16(1139);
+emit_16(1075);
+emit_16(1140);
+emit_16(1076);
+emit_16(1140);
+emit_16(1075);
+emit_16(1140);
+emit_16(1076);
+emit_16(1141);
+emit_16(1077);
+emit_16(1141);
+emit_16(1076);
+emit_16(1141);
+emit_16(1077);
+emit_16(1142);
+emit_16(1078);
+emit_16(1142);
+emit_16(1077);
+emit_16(1142);
+emit_16(1078);
+emit_16(1143);
+emit_16(1079);
+emit_16(1143);
+emit_16(1078);
+emit_16(1143);
+emit_16(1079);
+emit_16(1144);
+emit_16(1080);
+emit_16(1144);
+emit_16(1079);
+emit_16(1144);
+emit_16(1080);
+emit_16(1145);
+emit_16(1081);
+emit_16(1145);
+emit_16(1080);
+emit_16(1145);
+emit_16(1081);
+emit_16(1146);
+emit_16(1082);
+emit_16(1146);
+emit_16(1081);
+emit_16(1146);
+emit_16(1082);
+emit_16(1147);
+emit_16(1083);
+emit_16(1147);
+emit_16(1082);
+emit_16(1147);
+emit_16(1083);
+emit_16(1148);
+emit_16(1084);
+emit_16(1148);
+emit_16(1083);
+emit_16(1148);
+emit_16(1084);
+emit_16(1149);
+emit_16(1085);
+emit_16(1149);
+emit_16(1084);
+emit_16(1149);
+emit_16(1085);
+emit_16(1150);
+emit_16(1086);
+emit_16(1150);
+emit_16(1085);
+emit_16(1150);
+emit_16(1086);
+emit_16(1151);
+emit_16(1087);
+emit_16(1151);
+emit_16(1086);
+emit_16(1152);
+emit_16(1088);
+emit_16(1153);
+emit_16(1089);
+emit_16(1153);
+emit_16(1088);
+emit_16(1153);
+emit_16(1089);
+emit_16(1154);
+emit_16(1090);
+emit_16(1154);
+emit_16(1089);
+emit_16(1154);
+emit_16(1090);
+emit_16(1155);
+emit_16(1091);
+emit_16(1155);
+emit_16(1090);
+emit_16(1155);
+emit_16(1091);
+emit_16(1156);
+emit_16(1092);
+emit_16(1156);
+emit_16(1091);
+emit_16(1156);
+emit_16(1092);
+emit_16(1157);
+emit_16(1093);
+emit_16(1157);
+emit_16(1092);
+emit_16(1157);
+emit_16(1093);
+emit_16(1158);
+emit_16(1094);
+emit_16(1158);
+emit_16(1093);
+emit_16(1158);
+emit_16(1094);
+emit_16(1159);
+emit_16(1095);
+emit_16(1159);
+emit_16(1094);
+emit_16(1159);
+emit_16(1095);
+emit_16(1160);
+emit_16(1096);
+emit_16(1160);
+emit_16(1095);
+emit_16(1160);
+emit_16(1096);
+emit_16(1161);
+emit_16(1097);
+emit_16(1161);
+emit_16(1096);
+emit_16(1161);
+emit_16(1097);
+emit_16(1162);
+emit_16(1098);
+emit_16(1162);
+emit_16(1097);
+emit_16(1162);
+emit_16(1098);
+emit_16(1163);
+emit_16(1099);
+emit_16(1163);
+emit_16(1098);
+emit_16(1163);
+emit_16(1099);
+emit_16(1164);
+emit_16(1100);
+emit_16(1164);
+emit_16(1099);
+emit_16(1164);
+emit_16(1100);
+emit_16(1165);
+emit_16(1101);
+emit_16(1165);
+emit_16(1100);
+emit_16(1165);
+emit_16(1101);
+emit_16(1166);
+emit_16(1102);
+emit_16(1166);
+emit_16(1101);
+emit_16(1166);
+emit_16(1102);
+emit_16(1167);
+emit_16(1103);
+emit_16(1167);
+emit_16(1102);
+emit_16(1167);
+emit_16(1103);
+emit_16(1168);
+emit_16(1104);
+emit_16(1168);
+emit_16(1103);
+emit_16(1168);
+emit_16(1104);
+emit_16(1169);
+emit_16(1105);
+emit_16(1169);
+emit_16(1104);
+emit_16(1169);
+emit_16(1105);
+emit_16(1170);
+emit_16(1106);
+emit_16(1170);
+emit_16(1105);
+emit_16(1170);
+emit_16(1106);
+emit_16(1171);
+emit_16(1107);
+emit_16(1171);
+emit_16(1106);
+emit_16(1171);
+emit_16(1107);
+emit_16(1172);
+emit_16(1108);
+emit_16(1172);
+emit_16(1107);
+emit_16(1172);
+emit_16(1108);
+emit_16(1173);
+emit_16(1109);
+emit_16(1173);
+emit_16(1108);
+emit_16(1173);
+emit_16(1109);
+emit_16(1174);
+emit_16(1110);
+emit_16(1174);
+emit_16(1109);
+emit_16(1174);
+emit_16(1110);
+emit_16(1175);
+emit_16(1111);
+emit_16(1175);
+emit_16(1110);
+emit_16(1175);
+emit_16(1111);
+emit_16(1176);
+emit_16(1112);
+emit_16(1176);
+emit_16(1111);
+emit_16(1176);
+emit_16(1112);
+emit_16(1177);
+emit_16(1113);
+emit_16(1177);
+emit_16(1112);
+emit_16(1177);
+emit_16(1113);
+emit_16(1178);
+emit_16(1114);
+emit_16(1178);
+emit_16(1113);
+emit_16(1178);
+emit_16(1114);
+emit_16(1179);
+emit_16(1115);
+emit_16(1179);
+emit_16(1114);
+emit_16(1179);
+emit_16(1115);
+emit_16(1180);
+emit_16(1116);
+emit_16(1180);
+emit_16(1115);
+emit_16(1180);
+emit_16(1116);
+emit_16(1181);
+emit_16(1117);
+emit_16(1181);
+emit_16(1116);
+emit_16(1181);
+emit_16(1117);
+emit_16(1182);
+emit_16(1118);
+emit_16(1182);
+emit_16(1117);
+emit_16(1182);
+emit_16(1118);
+emit_16(1183);
+emit_16(1119);
+emit_16(1183);
+emit_16(1118);
+emit_16(1183);
+emit_16(1119);
+emit_16(1184);
+emit_16(1120);
+emit_16(1184);
+emit_16(1119);
+emit_16(1184);
+emit_16(1120);
+emit_16(1185);
+emit_16(1121);
+emit_16(1185);
+emit_16(1120);
+emit_16(1185);
+emit_16(1121);
+emit_16(1186);
+emit_16(1122);
+emit_16(1186);
+emit_16(1121);
+emit_16(1186);
+emit_16(1122);
+emit_16(1187);
+emit_16(1123);
+emit_16(1187);
+emit_16(1122);
+emit_16(1187);
+emit_16(1123);
+emit_16(1188);
+emit_16(1124);
+emit_16(1188);
+emit_16(1123);
+emit_16(1188);
+emit_16(1124);
+emit_16(1189);
+emit_16(1125);
+emit_16(1189);
+emit_16(1124);
+emit_16(1189);
+emit_16(1125);
+emit_16(1190);
+emit_16(1126);
+emit_16(1190);
+emit_16(1125);
+emit_16(1190);
+emit_16(1126);
+emit_16(1191);
+emit_16(1127);
+emit_16(1191);
+emit_16(1126);
+emit_16(1191);
+emit_16(1127);
+emit_16(1192);
+emit_16(1128);
+emit_16(1192);
+emit_16(1127);
+emit_16(1192);
+emit_16(1128);
+emit_16(1193);
+emit_16(1129);
+emit_16(1193);
+emit_16(1128);
+emit_16(1193);
+emit_16(1129);
+emit_16(1194);
+emit_16(1130);
+emit_16(1194);
+emit_16(1129);
+emit_16(1194);
+emit_16(1130);
+emit_16(1195);
+emit_16(1131);
+emit_16(1195);
+emit_16(1130);
+emit_16(1195);
+emit_16(1131);
+emit_16(1196);
+emit_16(1132);
+emit_16(1196);
+emit_16(1131);
+emit_16(1196);
+emit_16(1132);
+emit_16(1197);
+emit_16(1133);
+emit_16(1197);
+emit_16(1132);
+emit_16(1197);
+emit_16(1133);
+emit_16(1198);
+emit_16(1134);
+emit_16(1198);
+emit_16(1133);
+emit_16(1198);
+emit_16(1134);
+emit_16(1199);
+emit_16(1135);
+emit_16(1199);
+emit_16(1134);
+emit_16(1199);
+emit_16(1135);
+emit_16(1200);
+emit_16(1136);
+emit_16(1200);
+emit_16(1135);
+emit_16(1200);
+emit_16(1136);
+emit_16(1201);
+emit_16(1137);
+emit_16(1201);
+emit_16(1136);
+emit_16(1201);
+emit_16(1137);
+emit_16(1202);
+emit_16(1138);
+emit_16(1202);
+emit_16(1137);
+emit_16(1202);
+emit_16(1138);
+emit_16(1203);
+emit_16(1139);
+emit_16(1203);
+emit_16(1138);
+emit_16(1203);
+emit_16(1139);
+emit_16(1204);
+emit_16(1140);
+emit_16(1204);
+emit_16(1139);
+emit_16(1204);
+emit_16(1140);
+emit_16(1205);
+emit_16(1141);
+emit_16(1205);
+emit_16(1140);
+emit_16(1205);
+emit_16(1141);
+emit_16(1206);
+emit_16(1142);
+emit_16(1206);
+emit_16(1141);
+emit_16(1206);
+emit_16(1142);
+emit_16(1207);
+emit_16(1143);
+emit_16(1207);
+emit_16(1142);
+emit_16(1207);
+emit_16(1143);
+emit_16(1208);
+emit_16(1144);
+emit_16(1208);
+emit_16(1143);
+emit_16(1208);
+emit_16(1144);
+emit_16(1209);
+emit_16(1145);
+emit_16(1209);
+emit_16(1144);
+emit_16(1209);
+emit_16(1145);
+emit_16(1210);
+emit_16(1146);
+emit_16(1210);
+emit_16(1145);
+emit_16(1210);
+emit_16(1146);
+emit_16(1211);
+emit_16(1147);
+emit_16(1211);
+emit_16(1146);
+emit_16(1211);
+emit_16(1147);
+emit_16(1212);
+emit_16(1148);
+emit_16(1212);
+emit_16(1147);
+emit_16(1212);
+emit_16(1148);
+emit_16(1213);
+emit_16(1149);
+emit_16(1213);
+emit_16(1148);
+emit_16(1213);
+emit_16(1149);
+emit_16(1214);
+emit_16(1150);
+emit_16(1214);
+emit_16(1149);
+emit_16(1214);
+emit_16(1150);
+emit_16(1215);
+emit_16(1151);
+emit_16(1215);
+emit_16(1150);
+emit_16(1216);
+emit_16(1152);
+emit_16(1217);
+emit_16(1153);
+emit_16(1217);
+emit_16(1152);
+emit_16(1217);
+emit_16(1153);
+emit_16(1218);
+emit_16(1154);
+emit_16(1218);
+emit_16(1153);
+emit_16(1218);
+emit_16(1154);
+emit_16(1219);
+emit_16(1155);
+emit_16(1219);
+emit_16(1154);
+emit_16(1219);
+emit_16(1155);
+emit_16(1220);
+emit_16(1156);
+emit_16(1220);
+emit_16(1155);
+emit_16(1220);
+emit_16(1156);
+emit_16(1221);
+emit_16(1157);
+emit_16(1221);
+emit_16(1156);
+emit_16(1221);
+emit_16(1157);
+emit_16(1222);
+emit_16(1158);
+emit_16(1222);
+emit_16(1157);
+emit_16(1222);
+emit_16(1158);
+emit_16(1223);
+emit_16(1159);
+emit_16(1223);
+emit_16(1158);
+emit_16(1223);
+emit_16(1159);
+emit_16(1224);
+emit_16(1160);
+emit_16(1224);
+emit_16(1159);
+emit_16(1224);
+emit_16(1160);
+emit_16(1225);
+emit_16(1161);
+emit_16(1225);
+emit_16(1160);
+emit_16(1225);
+emit_16(1161);
+emit_16(1226);
+emit_16(1162);
+emit_16(1226);
+emit_16(1161);
+emit_16(1226);
+emit_16(1162);
+emit_16(1227);
+emit_16(1163);
+emit_16(1227);
+emit_16(1162);
+emit_16(1227);
+emit_16(1163);
+emit_16(1228);
+emit_16(1164);
+emit_16(1228);
+emit_16(1163);
+emit_16(1228);
+emit_16(1164);
+emit_16(1229);
+emit_16(1165);
+emit_16(1229);
+emit_16(1164);
+emit_16(1229);
+emit_16(1165);
+emit_16(1230);
+emit_16(1166);
+emit_16(1230);
+emit_16(1165);
+emit_16(1230);
+emit_16(1166);
+emit_16(1231);
+emit_16(1167);
+emit_16(1231);
+emit_16(1166);
+emit_16(1231);
+emit_16(1167);
+emit_16(1232);
+emit_16(1168);
+emit_16(1232);
+emit_16(1167);
+emit_16(1232);
+emit_16(1168);
+emit_16(1233);
+emit_16(1169);
+emit_16(1233);
+emit_16(1168);
+emit_16(1233);
+emit_16(1169);
+emit_16(1234);
+emit_16(1170);
+emit_16(1234);
+emit_16(1169);
+emit_16(1234);
+emit_16(1170);
+emit_16(1235);
+emit_16(1171);
+emit_16(1235);
+emit_16(1170);
+emit_16(1235);
+emit_16(1171);
+emit_16(1236);
+emit_16(1172);
+emit_16(1236);
+emit_16(1171);
+emit_16(1236);
+emit_16(1172);
+emit_16(1237);
+emit_16(1173);
+emit_16(1237);
+emit_16(1172);
+emit_16(1237);
+emit_16(1173);
+emit_16(1238);
+emit_16(1174);
+emit_16(1238);
+emit_16(1173);
+emit_16(1238);
+emit_16(1174);
+emit_16(1239);
+emit_16(1175);
+emit_16(1239);
+emit_16(1174);
+emit_16(1239);
+emit_16(1175);
+emit_16(1240);
+emit_16(1176);
+emit_16(1240);
+emit_16(1175);
+emit_16(1240);
+emit_16(1176);
+emit_16(1241);
+emit_16(1177);
+emit_16(1241);
+emit_16(1176);
+emit_16(1241);
+emit_16(1177);
+emit_16(1242);
+emit_16(1178);
+emit_16(1242);
+emit_16(1177);
+emit_16(1242);
+emit_16(1178);
+emit_16(1243);
+emit_16(1179);
+emit_16(1243);
+emit_16(1178);
+emit_16(1243);
+emit_16(1179);
+emit_16(1244);
+emit_16(1180);
+emit_16(1244);
+emit_16(1179);
+emit_16(1244);
+emit_16(1180);
+emit_16(1245);
+emit_16(1181);
+emit_16(1245);
+emit_16(1180);
+emit_16(1245);
+emit_16(1181);
+emit_16(1246);
+emit_16(1182);
+emit_16(1246);
+emit_16(1181);
+emit_16(1246);
+emit_16(1182);
+emit_16(1247);
+emit_16(1183);
+emit_16(1247);
+emit_16(1182);
+emit_16(1247);
+emit_16(1183);
+emit_16(1248);
+emit_16(1184);
+emit_16(1248);
+emit_16(1183);
+emit_16(1248);
+emit_16(1184);
+emit_16(1249);
+emit_16(1185);
+emit_16(1249);
+emit_16(1184);
+emit_16(1249);
+emit_16(1185);
+emit_16(1250);
+emit_16(1186);
+emit_16(1250);
+emit_16(1185);
+emit_16(1250);
+emit_16(1186);
+emit_16(1251);
+emit_16(1187);
+emit_16(1251);
+emit_16(1186);
+emit_16(1251);
+emit_16(1187);
+emit_16(1252);
+emit_16(1188);
+emit_16(1252);
+emit_16(1187);
+emit_16(1252);
+emit_16(1188);
+emit_16(1253);
+emit_16(1189);
+emit_16(1253);
+emit_16(1188);
+emit_16(1253);
+emit_16(1189);
+emit_16(1254);
+emit_16(1190);
+emit_16(1254);
+emit_16(1189);
+emit_16(1254);
+emit_16(1190);
+emit_16(1255);
+emit_16(1191);
+emit_16(1255);
+emit_16(1190);
+emit_16(1255);
+emit_16(1191);
+emit_16(1256);
+emit_16(1192);
+emit_16(1256);
+emit_16(1191);
+emit_16(1256);
+emit_16(1192);
+emit_16(1257);
+emit_16(1193);
+emit_16(1257);
+emit_16(1192);
+emit_16(1257);
+emit_16(1193);
+emit_16(1258);
+emit_16(1194);
+emit_16(1258);
+emit_16(1193);
+emit_16(1258);
+emit_16(1194);
+emit_16(1259);
+emit_16(1195);
+emit_16(1259);
+emit_16(1194);
+emit_16(1259);
+emit_16(1195);
+emit_16(1260);
+emit_16(1196);
+emit_16(1260);
+emit_16(1195);
+emit_16(1260);
+emit_16(1196);
+emit_16(1261);
+emit_16(1197);
+emit_16(1261);
+emit_16(1196);
+emit_16(1261);
+emit_16(1197);
+emit_16(1262);
+emit_16(1198);
+emit_16(1262);
+emit_16(1197);
+emit_16(1262);
+emit_16(1198);
+emit_16(1263);
+emit_16(1199);
+emit_16(1263);
+emit_16(1198);
+emit_16(1263);
+emit_16(1199);
+emit_16(1264);
+emit_16(1200);
+emit_16(1264);
+emit_16(1199);
+emit_16(1264);
+emit_16(1200);
+emit_16(1265);
+emit_16(1201);
+emit_16(1265);
+emit_16(1200);
+emit_16(1265);
+emit_16(1201);
+emit_16(1266);
+emit_16(1202);
+emit_16(1266);
+emit_16(1201);
+emit_16(1266);
+emit_16(1202);
+emit_16(1267);
+emit_16(1203);
+emit_16(1267);
+emit_16(1202);
+emit_16(1267);
+emit_16(1203);
+emit_16(1268);
+emit_16(1204);
+emit_16(1268);
+emit_16(1203);
+emit_16(1268);
+emit_16(1204);
+emit_16(1269);
+emit_16(1205);
+emit_16(1269);
+emit_16(1204);
+emit_16(1269);
+emit_16(1205);
+emit_16(1270);
+emit_16(1206);
+emit_16(1270);
+emit_16(1205);
+emit_16(1270);
+emit_16(1206);
+emit_16(1271);
+emit_16(1207);
+emit_16(1271);
+emit_16(1206);
+emit_16(1271);
+emit_16(1207);
+emit_16(1272);
+emit_16(1208);
+emit_16(1272);
+emit_16(1207);
+emit_16(1272);
+emit_16(1208);
+emit_16(1273);
+emit_16(1209);
+emit_16(1273);
+emit_16(1208);
+emit_16(1273);
+emit_16(1209);
+emit_16(1274);
+emit_16(1210);
+emit_16(1274);
+emit_16(1209);
+emit_16(1274);
+emit_16(1210);
+emit_16(1275);
+emit_16(1211);
+emit_16(1275);
+emit_16(1210);
+emit_16(1275);
+emit_16(1211);
+emit_16(1276);
+emit_16(1212);
+emit_16(1276);
+emit_16(1211);
+emit_16(1276);
+emit_16(1212);
+emit_16(1277);
+emit_16(1213);
+emit_16(1277);
+emit_16(1212);
+emit_16(1277);
+emit_16(1213);
+emit_16(1278);
+emit_16(1214);
+emit_16(1278);
+emit_16(1213);
+emit_16(1278);
+emit_16(1214);
+emit_16(1279);
+emit_16(1215);
+emit_16(1279);
+emit_16(1214);
+emit_16(1280);
+emit_16(1216);
+emit_16(1281);
+emit_16(1217);
+emit_16(1281);
+emit_16(1216);
+emit_16(1281);
+emit_16(1217);
+emit_16(1282);
+emit_16(1218);
+emit_16(1282);
+emit_16(1217);
+emit_16(1282);
+emit_16(1218);
+emit_16(1283);
+emit_16(1219);
+emit_16(1283);
+emit_16(1218);
+emit_16(1283);
+emit_16(1219);
+emit_16(1284);
+emit_16(1220);
+emit_16(1284);
+emit_16(1219);
+emit_16(1284);
+emit_16(1220);
+emit_16(1285);
+emit_16(1221);
+emit_16(1285);
+emit_16(1220);
+emit_16(1285);
+emit_16(1221);
+emit_16(1286);
+emit_16(1222);
+emit_16(1286);
+emit_16(1221);
+emit_16(1286);
+emit_16(1222);
+emit_16(1287);
+emit_16(1223);
+emit_16(1287);
+emit_16(1222);
+emit_16(1287);
+emit_16(1223);
+emit_16(1288);
+emit_16(1224);
+emit_16(1288);
+emit_16(1223);
+emit_16(1288);
+emit_16(1224);
+emit_16(1289);
+emit_16(1225);
+emit_16(1289);
+emit_16(1224);
+emit_16(1289);
+emit_16(1225);
+emit_16(1290);
+emit_16(1226);
+emit_16(1290);
+emit_16(1225);
+emit_16(1290);
+emit_16(1226);
+emit_16(1291);
+emit_16(1227);
+emit_16(1291);
+emit_16(1226);
+emit_16(1291);
+emit_16(1227);
+emit_16(1292);
+emit_16(1228);
+emit_16(1292);
+emit_16(1227);
+emit_16(1292);
+emit_16(1228);
+emit_16(1293);
+emit_16(1229);
+emit_16(1293);
+emit_16(1228);
+emit_16(1293);
+emit_16(1229);
+emit_16(1294);
+emit_16(1230);
+emit_16(1294);
+emit_16(1229);
+emit_16(1294);
+emit_16(1230);
+emit_16(1295);
+emit_16(1231);
+emit_16(1295);
+emit_16(1230);
+emit_16(1295);
+emit_16(1231);
+emit_16(1296);
+emit_16(1232);
+emit_16(1296);
+emit_16(1231);
+emit_16(1296);
+emit_16(1232);
+emit_16(1297);
+emit_16(1233);
+emit_16(1297);
+emit_16(1232);
+emit_16(1297);
+emit_16(1233);
+emit_16(1298);
+emit_16(1234);
+emit_16(1298);
+emit_16(1233);
+emit_16(1298);
+emit_16(1234);
+emit_16(1299);
+emit_16(1235);
+emit_16(1299);
+emit_16(1234);
+emit_16(1299);
+emit_16(1235);
+emit_16(1300);
+emit_16(1236);
+emit_16(1300);
+emit_16(1235);
+emit_16(1300);
+emit_16(1236);
+emit_16(1301);
+emit_16(1237);
+emit_16(1301);
+emit_16(1236);
+emit_16(1301);
+emit_16(1237);
+emit_16(1302);
+emit_16(1238);
+emit_16(1302);
+emit_16(1237);
+emit_16(1302);
+emit_16(1238);
+emit_16(1303);
+emit_16(1239);
+emit_16(1303);
+emit_16(1238);
+emit_16(1303);
+emit_16(1239);
+emit_16(1304);
+emit_16(1240);
+emit_16(1304);
+emit_16(1239);
+emit_16(1304);
+emit_16(1240);
+emit_16(1305);
+emit_16(1241);
+emit_16(1305);
+emit_16(1240);
+emit_16(1305);
+emit_16(1241);
+emit_16(1306);
+emit_16(1242);
+emit_16(1306);
+emit_16(1241);
+emit_16(1306);
+emit_16(1242);
+emit_16(1307);
+emit_16(1243);
+emit_16(1307);
+emit_16(1242);
+emit_16(1307);
+emit_16(1243);
+emit_16(1308);
+emit_16(1244);
+emit_16(1308);
+emit_16(1243);
+emit_16(1308);
+emit_16(1244);
+emit_16(1309);
+emit_16(1245);
+emit_16(1309);
+emit_16(1244);
+emit_16(1309);
+emit_16(1245);
+emit_16(1310);
+emit_16(1246);
+emit_16(1310);
+emit_16(1245);
+emit_16(1310);
+emit_16(1246);
+emit_16(1311);
+emit_16(1247);
+emit_16(1311);
+emit_16(1246);
+emit_16(1311);
+emit_16(1247);
+emit_16(1312);
+emit_16(1248);
+emit_16(1312);
+emit_16(1247);
+emit_16(1312);
+emit_16(1248);
+emit_16(1313);
+emit_16(1249);
+emit_16(1313);
+emit_16(1248);
+emit_16(1313);
+emit_16(1249);
+emit_16(1314);
+emit_16(1250);
+emit_16(1314);
+emit_16(1249);
+emit_16(1314);
+emit_16(1250);
+emit_16(1315);
+emit_16(1251);
+emit_16(1315);
+emit_16(1250);
+emit_16(1315);
+emit_16(1251);
+emit_16(1316);
+emit_16(1252);
+emit_16(1316);
+emit_16(1251);
+emit_16(1316);
+emit_16(1252);
+emit_16(1317);
+emit_16(1253);
+emit_16(1317);
+emit_16(1252);
+emit_16(1317);
+emit_16(1253);
+emit_16(1318);
+emit_16(1254);
+emit_16(1318);
+emit_16(1253);
+emit_16(1318);
+emit_16(1254);
+emit_16(1319);
+emit_16(1255);
+emit_16(1319);
+emit_16(1254);
+emit_16(1319);
+emit_16(1255);
+emit_16(1320);
+emit_16(1256);
+emit_16(1320);
+emit_16(1255);
+emit_16(1320);
+emit_16(1256);
+emit_16(1321);
+emit_16(1257);
+emit_16(1321);
+emit_16(1256);
+emit_16(1321);
+emit_16(1257);
+emit_16(1322);
+emit_16(1258);
+emit_16(1322);
+emit_16(1257);
+emit_16(1322);
+emit_16(1258);
+emit_16(1323);
+emit_16(1259);
+emit_16(1323);
+emit_16(1258);
+emit_16(1323);
+emit_16(1259);
+emit_16(1324);
+emit_16(1260);
+emit_16(1324);
+emit_16(1259);
+emit_16(1324);
+emit_16(1260);
+emit_16(1325);
+emit_16(1261);
+emit_16(1325);
+emit_16(1260);
+emit_16(1325);
+emit_16(1261);
+emit_16(1326);
+emit_16(1262);
+emit_16(1326);
+emit_16(1261);
+emit_16(1326);
+emit_16(1262);
+emit_16(1327);
+emit_16(1263);
+emit_16(1327);
+emit_16(1262);
+emit_16(1327);
+emit_16(1263);
+emit_16(1328);
+emit_16(1264);
+emit_16(1328);
+emit_16(1263);
+emit_16(1328);
+emit_16(1264);
+emit_16(1329);
+emit_16(1265);
+emit_16(1329);
+emit_16(1264);
+emit_16(1329);
+emit_16(1265);
+emit_16(1330);
+emit_16(1266);
+emit_16(1330);
+emit_16(1265);
+emit_16(1330);
+emit_16(1266);
+emit_16(1331);
+emit_16(1267);
+emit_16(1331);
+emit_16(1266);
+emit_16(1331);
+emit_16(1267);
+emit_16(1332);
+emit_16(1268);
+emit_16(1332);
+emit_16(1267);
+emit_16(1332);
+emit_16(1268);
+emit_16(1333);
+emit_16(1269);
+emit_16(1333);
+emit_16(1268);
+emit_16(1333);
+emit_16(1269);
+emit_16(1334);
+emit_16(1270);
+emit_16(1334);
+emit_16(1269);
+emit_16(1334);
+emit_16(1270);
+emit_16(1335);
+emit_16(1271);
+emit_16(1335);
+emit_16(1270);
+emit_16(1335);
+emit_16(1271);
+emit_16(1336);
+emit_16(1272);
+emit_16(1336);
+emit_16(1271);
+emit_16(1336);
+emit_16(1272);
+emit_16(1337);
+emit_16(1273);
+emit_16(1337);
+emit_16(1272);
+emit_16(1337);
+emit_16(1273);
+emit_16(1338);
+emit_16(1274);
+emit_16(1338);
+emit_16(1273);
+emit_16(1338);
+emit_16(1274);
+emit_16(1339);
+emit_16(1275);
+emit_16(1339);
+emit_16(1274);
+emit_16(1339);
+emit_16(1275);
+emit_16(1340);
+emit_16(1276);
+emit_16(1340);
+emit_16(1275);
+emit_16(1340);
+emit_16(1276);
+emit_16(1341);
+emit_16(1277);
+emit_16(1341);
+emit_16(1276);
+emit_16(1341);
+emit_16(1277);
+emit_16(1342);
+emit_16(1278);
+emit_16(1342);
+emit_16(1277);
+emit_16(1342);
+emit_16(1278);
+emit_16(1343);
+emit_16(1279);
+emit_16(1343);
+emit_16(1278);
+emit_16(1344);
+emit_16(1280);
+emit_16(1345);
+emit_16(1281);
+emit_16(1345);
+emit_16(1280);
+emit_16(1345);
+emit_16(1281);
+emit_16(1346);
+emit_16(1282);
+emit_16(1346);
+emit_16(1281);
+emit_16(1346);
+emit_16(1282);
+emit_16(1347);
+emit_16(1283);
+emit_16(1347);
+emit_16(1282);
+emit_16(1347);
+emit_16(1283);
+emit_16(1348);
+emit_16(1284);
+emit_16(1348);
+emit_16(1283);
+emit_16(1348);
+emit_16(1284);
+emit_16(1349);
+emit_16(1285);
+emit_16(1349);
+emit_16(1284);
+emit_16(1349);
+emit_16(1285);
+emit_16(1350);
+emit_16(1286);
+emit_16(1350);
+emit_16(1285);
+emit_16(1350);
+emit_16(1286);
+emit_16(1351);
+emit_16(1287);
+emit_16(1351);
+emit_16(1286);
+emit_16(1351);
+emit_16(1287);
+emit_16(1352);
+emit_16(1288);
+emit_16(1352);
+emit_16(1287);
+emit_16(1352);
+emit_16(1288);
+emit_16(1353);
+emit_16(1289);
+emit_16(1353);
+emit_16(1288);
+emit_16(1353);
+emit_16(1289);
+emit_16(1354);
+emit_16(1290);
+emit_16(1354);
+emit_16(1289);
+emit_16(1354);
+emit_16(1290);
+emit_16(1355);
+emit_16(1291);
+emit_16(1355);
+emit_16(1290);
+emit_16(1355);
+emit_16(1291);
+emit_16(1356);
+emit_16(1292);
+emit_16(1356);
+emit_16(1291);
+emit_16(1356);
+emit_16(1292);
+emit_16(1357);
+emit_16(1293);
+emit_16(1357);
+emit_16(1292);
+emit_16(1357);
+emit_16(1293);
+emit_16(1358);
+emit_16(1294);
+emit_16(1358);
+emit_16(1293);
+emit_16(1358);
+emit_16(1294);
+emit_16(1359);
+emit_16(1295);
+emit_16(1359);
+emit_16(1294);
+emit_16(1359);
+emit_16(1295);
+emit_16(1360);
+emit_16(1296);
+emit_16(1360);
+emit_16(1295);
+emit_16(1360);
+emit_16(1296);
+emit_16(1361);
+emit_16(1297);
+emit_16(1361);
+emit_16(1296);
+emit_16(1361);
+emit_16(1297);
+emit_16(1362);
+emit_16(1298);
+emit_16(1362);
+emit_16(1297);
+emit_16(1362);
+emit_16(1298);
+emit_16(1363);
+emit_16(1299);
+emit_16(1363);
+emit_16(1298);
+emit_16(1363);
+emit_16(1299);
+emit_16(1364);
+emit_16(1300);
+emit_16(1364);
+emit_16(1299);
+emit_16(1364);
+emit_16(1300);
+emit_16(1365);
+emit_16(1301);
+emit_16(1365);
+emit_16(1300);
+emit_16(1365);
+emit_16(1301);
+emit_16(1366);
+emit_16(1302);
+emit_16(1366);
+emit_16(1301);
+emit_16(1366);
+emit_16(1302);
+emit_16(1367);
+emit_16(1303);
+emit_16(1367);
+emit_16(1302);
+emit_16(1367);
+emit_16(1303);
+emit_16(1368);
+emit_16(1304);
+emit_16(1368);
+emit_16(1303);
+emit_16(1368);
+emit_16(1304);
+emit_16(1369);
+emit_16(1305);
+emit_16(1369);
+emit_16(1304);
+emit_16(1369);
+emit_16(1305);
+emit_16(1370);
+emit_16(1306);
+emit_16(1370);
+emit_16(1305);
+emit_16(1370);
+emit_16(1306);
+emit_16(1371);
+emit_16(1307);
+emit_16(1371);
+emit_16(1306);
+emit_16(1371);
+emit_16(1307);
+emit_16(1372);
+emit_16(1308);
+emit_16(1372);
+emit_16(1307);
+emit_16(1372);
+emit_16(1308);
+emit_16(1373);
+emit_16(1309);
+emit_16(1373);
+emit_16(1308);
+emit_16(1373);
+emit_16(1309);
+emit_16(1374);
+emit_16(1310);
+emit_16(1374);
+emit_16(1309);
+emit_16(1374);
+emit_16(1310);
+emit_16(1375);
+emit_16(1311);
+emit_16(1375);
+emit_16(1310);
+emit_16(1375);
+emit_16(1311);
+emit_16(1376);
+emit_16(1312);
+emit_16(1376);
+emit_16(1311);
+emit_16(1376);
+emit_16(1312);
+emit_16(1377);
+emit_16(1313);
+emit_16(1377);
+emit_16(1312);
+emit_16(1377);
+emit_16(1313);
+emit_16(1378);
+emit_16(1314);
+emit_16(1378);
+emit_16(1313);
+emit_16(1378);
+emit_16(1314);
+emit_16(1379);
+emit_16(1315);
+emit_16(1379);
+emit_16(1314);
+emit_16(1379);
+emit_16(1315);
+emit_16(1380);
+emit_16(1316);
+emit_16(1380);
+emit_16(1315);
+emit_16(1380);
+emit_16(1316);
+emit_16(1381);
+emit_16(1317);
+emit_16(1381);
+emit_16(1316);
+emit_16(1381);
+emit_16(1317);
+emit_16(1382);
+emit_16(1318);
+emit_16(1382);
+emit_16(1317);
+emit_16(1382);
+emit_16(1318);
+emit_16(1383);
+emit_16(1319);
+emit_16(1383);
+emit_16(1318);
+emit_16(1383);
+emit_16(1319);
+emit_16(1384);
+emit_16(1320);
+emit_16(1384);
+emit_16(1319);
+emit_16(1384);
+emit_16(1320);
+emit_16(1385);
+emit_16(1321);
+emit_16(1385);
+emit_16(1320);
+emit_16(1385);
+emit_16(1321);
+emit_16(1386);
+emit_16(1322);
+emit_16(1386);
+emit_16(1321);
+emit_16(1386);
+emit_16(1322);
+emit_16(1387);
+emit_16(1323);
+emit_16(1387);
+emit_16(1322);
+emit_16(1387);
+emit_16(1323);
+emit_16(1388);
+emit_16(1324);
+emit_16(1388);
+emit_16(1323);
+emit_16(1388);
+emit_16(1324);
+emit_16(1389);
+emit_16(1325);
+emit_16(1389);
+emit_16(1324);
+emit_16(1389);
+emit_16(1325);
+emit_16(1390);
+emit_16(1326);
+emit_16(1390);
+emit_16(1325);
+emit_16(1390);
+emit_16(1326);
+emit_16(1391);
+emit_16(1327);
+emit_16(1391);
+emit_16(1326);
+emit_16(1391);
+emit_16(1327);
+emit_16(1392);
+emit_16(1328);
+emit_16(1392);
+emit_16(1327);
+emit_16(1392);
+emit_16(1328);
+emit_16(1393);
+emit_16(1329);
+emit_16(1393);
+emit_16(1328);
+emit_16(1393);
+emit_16(1329);
+emit_16(1394);
+emit_16(1330);
+emit_16(1394);
+emit_16(1329);
+emit_16(1394);
+emit_16(1330);
+emit_16(1395);
+emit_16(1331);
+emit_16(1395);
+emit_16(1330);
+emit_16(1395);
+emit_16(1331);
+emit_16(1396);
+emit_16(1332);
+emit_16(1396);
+emit_16(1331);
+emit_16(1396);
+emit_16(1332);
+emit_16(1397);
+emit_16(1333);
+emit_16(1397);
+emit_16(1332);
+emit_16(1397);
+emit_16(1333);
+emit_16(1398);
+emit_16(1334);
+emit_16(1398);
+emit_16(1333);
+emit_16(1398);
+emit_16(1334);
+emit_16(1399);
+emit_16(1335);
+emit_16(1399);
+emit_16(1334);
+emit_16(1399);
+emit_16(1335);
+emit_16(1400);
+emit_16(1336);
+emit_16(1400);
+emit_16(1335);
+emit_16(1400);
+emit_16(1336);
+emit_16(1401);
+emit_16(1337);
+emit_16(1401);
+emit_16(1336);
+emit_16(1401);
+emit_16(1337);
+emit_16(1402);
+emit_16(1338);
+emit_16(1402);
+emit_16(1337);
+emit_16(1402);
+emit_16(1338);
+emit_16(1403);
+emit_16(1339);
+emit_16(1403);
+emit_16(1338);
+emit_16(1403);
+emit_16(1339);
+emit_16(1404);
+emit_16(1340);
+emit_16(1404);
+emit_16(1339);
+emit_16(1404);
+emit_16(1340);
+emit_16(1405);
+emit_16(1341);
+emit_16(1405);
+emit_16(1340);
+emit_16(1405);
+emit_16(1341);
+emit_16(1406);
+emit_16(1342);
+emit_16(1406);
+emit_16(1341);
+emit_16(1406);
+emit_16(1342);
+emit_16(1407);
+emit_16(1343);
+emit_16(1407);
+emit_16(1342);
+emit_16(1408);
+emit_16(1344);
+emit_16(1409);
+emit_16(1345);
+emit_16(1409);
+emit_16(1344);
+emit_16(1409);
+emit_16(1345);
+emit_16(1410);
+emit_16(1346);
+emit_16(1410);
+emit_16(1345);
+emit_16(1410);
+emit_16(1346);
+emit_16(1411);
+emit_16(1347);
+emit_16(1411);
+emit_16(1346);
+emit_16(1411);
+emit_16(1347);
+emit_16(1412);
+emit_16(1348);
+emit_16(1412);
+emit_16(1347);
+emit_16(1412);
+emit_16(1348);
+emit_16(1413);
+emit_16(1349);
+emit_16(1413);
+emit_16(1348);
+emit_16(1413);
+emit_16(1349);
+emit_16(1414);
+emit_16(1350);
+emit_16(1414);
+emit_16(1349);
+emit_16(1414);
+emit_16(1350);
+emit_16(1415);
+emit_16(1351);
+emit_16(1415);
+emit_16(1350);
+emit_16(1415);
+emit_16(1351);
+emit_16(1416);
+emit_16(1352);
+emit_16(1416);
+emit_16(1351);
+emit_16(1416);
+emit_16(1352);
+emit_16(1417);
+emit_16(1353);
+emit_16(1417);
+emit_16(1352);
+emit_16(1417);
+emit_16(1353);
+emit_16(1418);
+emit_16(1354);
+emit_16(1418);
+emit_16(1353);
+emit_16(1418);
+emit_16(1354);
+emit_16(1419);
+emit_16(1355);
+emit_16(1419);
+emit_16(1354);
+emit_16(1419);
+emit_16(1355);
+emit_16(1420);
+emit_16(1356);
+emit_16(1420);
+emit_16(1355);
+emit_16(1420);
+emit_16(1356);
+emit_16(1421);
+emit_16(1357);
+emit_16(1421);
+emit_16(1356);
+emit_16(1421);
+emit_16(1357);
+emit_16(1422);
+emit_16(1358);
+emit_16(1422);
+emit_16(1357);
+emit_16(1422);
+emit_16(1358);
+emit_16(1423);
+emit_16(1359);
+emit_16(1423);
+emit_16(1358);
+emit_16(1423);
+emit_16(1359);
+emit_16(1424);
+emit_16(1360);
+emit_16(1424);
+emit_16(1359);
+emit_16(1424);
+emit_16(1360);
+emit_16(1425);
+emit_16(1361);
+emit_16(1425);
+emit_16(1360);
+emit_16(1425);
+emit_16(1361);
+emit_16(1426);
+emit_16(1362);
+emit_16(1426);
+emit_16(1361);
+emit_16(1426);
+emit_16(1362);
+emit_16(1427);
+emit_16(1363);
+emit_16(1427);
+emit_16(1362);
+emit_16(1427);
+emit_16(1363);
+emit_16(1428);
+emit_16(1364);
+emit_16(1428);
+emit_16(1363);
+emit_16(1428);
+emit_16(1364);
+emit_16(1429);
+emit_16(1365);
+emit_16(1429);
+emit_16(1364);
+emit_16(1429);
+emit_16(1365);
+emit_16(1430);
+emit_16(1366);
+emit_16(1430);
+emit_16(1365);
+emit_16(1430);
+emit_16(1366);
+emit_16(1431);
+emit_16(1367);
+emit_16(1431);
+emit_16(1366);
+emit_16(1431);
+emit_16(1367);
+emit_16(1432);
+emit_16(1368);
+emit_16(1432);
+emit_16(1367);
+emit_16(1432);
+emit_16(1368);
+emit_16(1433);
+emit_16(1369);
+emit_16(1433);
+emit_16(1368);
+emit_16(1433);
+emit_16(1369);
+emit_16(1434);
+emit_16(1370);
+emit_16(1434);
+emit_16(1369);
+emit_16(1434);
+emit_16(1370);
+emit_16(1435);
+emit_16(1371);
+emit_16(1435);
+emit_16(1370);
+emit_16(1435);
+emit_16(1371);
+emit_16(1436);
+emit_16(1372);
+emit_16(1436);
+emit_16(1371);
+emit_16(1436);
+emit_16(1372);
+emit_16(1437);
+emit_16(1373);
+emit_16(1437);
+emit_16(1372);
+emit_16(1437);
+emit_16(1373);
+emit_16(1438);
+emit_16(1374);
+emit_16(1438);
+emit_16(1373);
+emit_16(1438);
+emit_16(1374);
+emit_16(1439);
+emit_16(1375);
+emit_16(1439);
+emit_16(1374);
+emit_16(1439);
+emit_16(1375);
+emit_16(1440);
+emit_16(1376);
+emit_16(1440);
+emit_16(1375);
+emit_16(1440);
+emit_16(1376);
+emit_16(1441);
+emit_16(1377);
+emit_16(1441);
+emit_16(1376);
+emit_16(1441);
+emit_16(1377);
+emit_16(1442);
+emit_16(1378);
+emit_16(1442);
+emit_16(1377);
+emit_16(1442);
+emit_16(1378);
+emit_16(1443);
+emit_16(1379);
+emit_16(1443);
+emit_16(1378);
+emit_16(1443);
+emit_16(1379);
+emit_16(1444);
+emit_16(1380);
+emit_16(1444);
+emit_16(1379);
+emit_16(1444);
+emit_16(1380);
+emit_16(1445);
+emit_16(1381);
+emit_16(1445);
+emit_16(1380);
+emit_16(1445);
+emit_16(1381);
+emit_16(1446);
+emit_16(1382);
+emit_16(1446);
+emit_16(1381);
+emit_16(1446);
+emit_16(1382);
+emit_16(1447);
+emit_16(1383);
+emit_16(1447);
+emit_16(1382);
+emit_16(1447);
+emit_16(1383);
+emit_16(1448);
+emit_16(1384);
+emit_16(1448);
+emit_16(1383);
+emit_16(1448);
+emit_16(1384);
+emit_16(1449);
+emit_16(1385);
+emit_16(1449);
+emit_16(1384);
+emit_16(1449);
+emit_16(1385);
+emit_16(1450);
+emit_16(1386);
+emit_16(1450);
+emit_16(1385);
+emit_16(1450);
+emit_16(1386);
+emit_16(1451);
+emit_16(1387);
+emit_16(1451);
+emit_16(1386);
+emit_16(1451);
+emit_16(1387);
+emit_16(1452);
+emit_16(1388);
+emit_16(1452);
+emit_16(1387);
+emit_16(1452);
+emit_16(1388);
+emit_16(1453);
+emit_16(1389);
+emit_16(1453);
+emit_16(1388);
+emit_16(1453);
+emit_16(1389);
+emit_16(1454);
+emit_16(1390);
+emit_16(1454);
+emit_16(1389);
+emit_16(1454);
+emit_16(1390);
+emit_16(1455);
+emit_16(1391);
+emit_16(1455);
+emit_16(1390);
+emit_16(1455);
+emit_16(1391);
+emit_16(1456);
+emit_16(1392);
+emit_16(1456);
+emit_16(1391);
+emit_16(1456);
+emit_16(1392);
+emit_16(1457);
+emit_16(1393);
+emit_16(1457);
+emit_16(1392);
+emit_16(1457);
+emit_16(1393);
+emit_16(1458);
+emit_16(1394);
+emit_16(1458);
+emit_16(1393);
+emit_16(1458);
+emit_16(1394);
+emit_16(1459);
+emit_16(1395);
+emit_16(1459);
+emit_16(1394);
+emit_16(1459);
+emit_16(1395);
+emit_16(1460);
+emit_16(1396);
+emit_16(1460);
+emit_16(1395);
+emit_16(1460);
+emit_16(1396);
+emit_16(1461);
+emit_16(1397);
+emit_16(1461);
+emit_16(1396);
+emit_16(1461);
+emit_16(1397);
+emit_16(1462);
+emit_16(1398);
+emit_16(1462);
+emit_16(1397);
+emit_16(1462);
+emit_16(1398);
+emit_16(1463);
+emit_16(1399);
+emit_16(1463);
+emit_16(1398);
+emit_16(1463);
+emit_16(1399);
+emit_16(1464);
+emit_16(1400);
+emit_16(1464);
+emit_16(1399);
+emit_16(1464);
+emit_16(1400);
+emit_16(1465);
+emit_16(1401);
+emit_16(1465);
+emit_16(1400);
+emit_16(1465);
+emit_16(1401);
+emit_16(1466);
+emit_16(1402);
+emit_16(1466);
+emit_16(1401);
+emit_16(1466);
+emit_16(1402);
+emit_16(1467);
+emit_16(1403);
+emit_16(1467);
+emit_16(1402);
+emit_16(1467);
+emit_16(1403);
+emit_16(1468);
+emit_16(1404);
+emit_16(1468);
+emit_16(1403);
+emit_16(1468);
+emit_16(1404);
+emit_16(1469);
+emit_16(1405);
+emit_16(1469);
+emit_16(1404);
+emit_16(1469);
+emit_16(1405);
+emit_16(1470);
+emit_16(1406);
+emit_16(1470);
+emit_16(1405);
+emit_16(1470);
+emit_16(1406);
+emit_16(1471);
+emit_16(1407);
+emit_16(1471);
+emit_16(1406);
+emit_16(1472);
+emit_16(1408);
+emit_16(1473);
+emit_16(1409);
+emit_16(1473);
+emit_16(1408);
+emit_16(1473);
+emit_16(1409);
+emit_16(1474);
+emit_16(1410);
+emit_16(1474);
+emit_16(1409);
+emit_16(1474);
+emit_16(1410);
+emit_16(1475);
+emit_16(1411);
+emit_16(1475);
+emit_16(1410);
+emit_16(1475);
+emit_16(1411);
+emit_16(1476);
+emit_16(1412);
+emit_16(1476);
+emit_16(1411);
+emit_16(1476);
+emit_16(1412);
+emit_16(1477);
+emit_16(1413);
+emit_16(1477);
+emit_16(1412);
+emit_16(1477);
+emit_16(1413);
+emit_16(1478);
+emit_16(1414);
+emit_16(1478);
+emit_16(1413);
+emit_16(1478);
+emit_16(1414);
+emit_16(1479);
+emit_16(1415);
+emit_16(1479);
+emit_16(1414);
+emit_16(1479);
+emit_16(1415);
+emit_16(1480);
+emit_16(1416);
+emit_16(1480);
+emit_16(1415);
+emit_16(1480);
+emit_16(1416);
+emit_16(1481);
+emit_16(1417);
+emit_16(1481);
+emit_16(1416);
+emit_16(1481);
+emit_16(1417);
+emit_16(1482);
+emit_16(1418);
+emit_16(1482);
+emit_16(1417);
+emit_16(1482);
+emit_16(1418);
+emit_16(1483);
+emit_16(1419);
+emit_16(1483);
+emit_16(1418);
+emit_16(1483);
+emit_16(1419);
+emit_16(1484);
+emit_16(1420);
+emit_16(1484);
+emit_16(1419);
+emit_16(1484);
+emit_16(1420);
+emit_16(1485);
+emit_16(1421);
+emit_16(1485);
+emit_16(1420);
+emit_16(1485);
+emit_16(1421);
+emit_16(1486);
+emit_16(1422);
+emit_16(1486);
+emit_16(1421);
+emit_16(1486);
+emit_16(1422);
+emit_16(1487);
+emit_16(1423);
+emit_16(1487);
+emit_16(1422);
+emit_16(1487);
+emit_16(1423);
+emit_16(1488);
+emit_16(1424);
+emit_16(1488);
+emit_16(1423);
+emit_16(1488);
+emit_16(1424);
+emit_16(1489);
+emit_16(1425);
+emit_16(1489);
+emit_16(1424);
+emit_16(1489);
+emit_16(1425);
+emit_16(1490);
+emit_16(1426);
+emit_16(1490);
+emit_16(1425);
+emit_16(1490);
+emit_16(1426);
+emit_16(1491);
+emit_16(1427);
+emit_16(1491);
+emit_16(1426);
+emit_16(1491);
+emit_16(1427);
+emit_16(1492);
+emit_16(1428);
+emit_16(1492);
+emit_16(1427);
+emit_16(1492);
+emit_16(1428);
+emit_16(1493);
+emit_16(1429);
+emit_16(1493);
+emit_16(1428);
+emit_16(1493);
+emit_16(1429);
+emit_16(1494);
+emit_16(1430);
+emit_16(1494);
+emit_16(1429);
+emit_16(1494);
+emit_16(1430);
+emit_16(1495);
+emit_16(1431);
+emit_16(1495);
+emit_16(1430);
+emit_16(1495);
+emit_16(1431);
+emit_16(1496);
+emit_16(1432);
+emit_16(1496);
+emit_16(1431);
+emit_16(1496);
+emit_16(1432);
+emit_16(1497);
+emit_16(1433);
+emit_16(1497);
+emit_16(1432);
+emit_16(1497);
+emit_16(1433);
+emit_16(1498);
+emit_16(1434);
+emit_16(1498);
+emit_16(1433);
+emit_16(1498);
+emit_16(1434);
+emit_16(1499);
+emit_16(1435);
+emit_16(1499);
+emit_16(1434);
+emit_16(1499);
+emit_16(1435);
+emit_16(1500);
+emit_16(1436);
+emit_16(1500);
+emit_16(1435);
+emit_16(1500);
+emit_16(1436);
+emit_16(1501);
+emit_16(1437);
+emit_16(1501);
+emit_16(1436);
+emit_16(1501);
+emit_16(1437);
+emit_16(1502);
+emit_16(1438);
+emit_16(1502);
+emit_16(1437);
+emit_16(1502);
+emit_16(1438);
+emit_16(1503);
+emit_16(1439);
+emit_16(1503);
+emit_16(1438);
+emit_16(1503);
+emit_16(1439);
+emit_16(1504);
+emit_16(1440);
+emit_16(1504);
+emit_16(1439);
+emit_16(1504);
+emit_16(1440);
+emit_16(1505);
+emit_16(1441);
+emit_16(1505);
+emit_16(1440);
+emit_16(1505);
+emit_16(1441);
+emit_16(1506);
+emit_16(1442);
+emit_16(1506);
+emit_16(1441);
+emit_16(1506);
+emit_16(1442);
+emit_16(1507);
+emit_16(1443);
+emit_16(1507);
+emit_16(1442);
+emit_16(1507);
+emit_16(1443);
+emit_16(1508);
+emit_16(1444);
+emit_16(1508);
+emit_16(1443);
+emit_16(1508);
+emit_16(1444);
+emit_16(1509);
+emit_16(1445);
+emit_16(1509);
+emit_16(1444);
+emit_16(1509);
+emit_16(1445);
+emit_16(1510);
+emit_16(1446);
+emit_16(1510);
+emit_16(1445);
+emit_16(1510);
+emit_16(1446);
+emit_16(1511);
+emit_16(1447);
+emit_16(1511);
+emit_16(1446);
+emit_16(1511);
+emit_16(1447);
+emit_16(1512);
+emit_16(1448);
+emit_16(1512);
+emit_16(1447);
+emit_16(1512);
+emit_16(1448);
+emit_16(1513);
+emit_16(1449);
+emit_16(1513);
+emit_16(1448);
+emit_16(1513);
+emit_16(1449);
+emit_16(1514);
+emit_16(1450);
+emit_16(1514);
+emit_16(1449);
+emit_16(1514);
+emit_16(1450);
+emit_16(1515);
+emit_16(1451);
+emit_16(1515);
+emit_16(1450);
+emit_16(1515);
+emit_16(1451);
+emit_16(1516);
+emit_16(1452);
+emit_16(1516);
+emit_16(1451);
+emit_16(1516);
+emit_16(1452);
+emit_16(1517);
+emit_16(1453);
+emit_16(1517);
+emit_16(1452);
+emit_16(1517);
+emit_16(1453);
+emit_16(1518);
+emit_16(1454);
+emit_16(1518);
+emit_16(1453);
+emit_16(1518);
+emit_16(1454);
+emit_16(1519);
+emit_16(1455);
+emit_16(1519);
+emit_16(1454);
+emit_16(1519);
+emit_16(1455);
+emit_16(1520);
+emit_16(1456);
+emit_16(1520);
+emit_16(1455);
+emit_16(1520);
+emit_16(1456);
+emit_16(1521);
+emit_16(1457);
+emit_16(1521);
+emit_16(1456);
+emit_16(1521);
+emit_16(1457);
+emit_16(1522);
+emit_16(1458);
+emit_16(1522);
+emit_16(1457);
+emit_16(1522);
+emit_16(1458);
+emit_16(1523);
+emit_16(1459);
+emit_16(1523);
+emit_16(1458);
+emit_16(1523);
+emit_16(1459);
+emit_16(1524);
+emit_16(1460);
+emit_16(1524);
+emit_16(1459);
+emit_16(1524);
+emit_16(1460);
+emit_16(1525);
+emit_16(1461);
+emit_16(1525);
+emit_16(1460);
+emit_16(1525);
+emit_16(1461);
+emit_16(1526);
+emit_16(1462);
+emit_16(1526);
+emit_16(1461);
+emit_16(1526);
+emit_16(1462);
+emit_16(1527);
+emit_16(1463);
+emit_16(1527);
+emit_16(1462);
+emit_16(1527);
+emit_16(1463);
+emit_16(1528);
+emit_16(1464);
+emit_16(1528);
+emit_16(1463);
+emit_16(1528);
+emit_16(1464);
+emit_16(1529);
+emit_16(1465);
+emit_16(1529);
+emit_16(1464);
+emit_16(1529);
+emit_16(1465);
+emit_16(1530);
+emit_16(1466);
+emit_16(1530);
+emit_16(1465);
+emit_16(1530);
+emit_16(1466);
+emit_16(1531);
+emit_16(1467);
+emit_16(1531);
+emit_16(1466);
+emit_16(1531);
+emit_16(1467);
+emit_16(1532);
+emit_16(1468);
+emit_16(1532);
+emit_16(1467);
+emit_16(1532);
+emit_16(1468);
+emit_16(1533);
+emit_16(1469);
+emit_16(1533);
+emit_16(1468);
+emit_16(1533);
+emit_16(1469);
+emit_16(1534);
+emit_16(1470);
+emit_16(1534);
+emit_16(1469);
+emit_16(1534);
+emit_16(1470);
+emit_16(1535);
+emit_16(1471);
+emit_16(1535);
+emit_16(1470);
+emit_16(1536);
+emit_16(1472);
+emit_16(1537);
+emit_16(1473);
+emit_16(1537);
+emit_16(1472);
+emit_16(1537);
+emit_16(1473);
+emit_16(1538);
+emit_16(1474);
+emit_16(1538);
+emit_16(1473);
+emit_16(1538);
+emit_16(1474);
+emit_16(1539);
+emit_16(1475);
+emit_16(1539);
+emit_16(1474);
+emit_16(1539);
+emit_16(1475);
+emit_16(1540);
+emit_16(1476);
+emit_16(1540);
+emit_16(1475);
+emit_16(1540);
+emit_16(1476);
+emit_16(1541);
+emit_16(1477);
+emit_16(1541);
+emit_16(1476);
+emit_16(1541);
+emit_16(1477);
+emit_16(1542);
+emit_16(1478);
+emit_16(1542);
+emit_16(1477);
+emit_16(1542);
+emit_16(1478);
+emit_16(1543);
+emit_16(1479);
+emit_16(1543);
+emit_16(1478);
+emit_16(1543);
+emit_16(1479);
+emit_16(1544);
+emit_16(1480);
+emit_16(1544);
+emit_16(1479);
+emit_16(1544);
+emit_16(1480);
+emit_16(1545);
+emit_16(1481);
+emit_16(1545);
+emit_16(1480);
+emit_16(1545);
+emit_16(1481);
+emit_16(1546);
+emit_16(1482);
+emit_16(1546);
+emit_16(1481);
+emit_16(1546);
+emit_16(1482);
+emit_16(1547);
+emit_16(1483);
+emit_16(1547);
+emit_16(1482);
+emit_16(1547);
+emit_16(1483);
+emit_16(1548);
+emit_16(1484);
+emit_16(1548);
+emit_16(1483);
+emit_16(1548);
+emit_16(1484);
+emit_16(1549);
+emit_16(1485);
+emit_16(1549);
+emit_16(1484);
+emit_16(1549);
+emit_16(1485);
+emit_16(1550);
+emit_16(1486);
+emit_16(1550);
+emit_16(1485);
+emit_16(1550);
+emit_16(1486);
+emit_16(1551);
+emit_16(1487);
+emit_16(1551);
+emit_16(1486);
+emit_16(1551);
+emit_16(1487);
+emit_16(1552);
+emit_16(1488);
+emit_16(1552);
+emit_16(1487);
+emit_16(1552);
+emit_16(1488);
+emit_16(1553);
+emit_16(1489);
+emit_16(1553);
+emit_16(1488);
+emit_16(1553);
+emit_16(1489);
+emit_16(1554);
+emit_16(1490);
+emit_16(1554);
+emit_16(1489);
+emit_16(1554);
+emit_16(1490);
+emit_16(1555);
+emit_16(1491);
+emit_16(1555);
+emit_16(1490);
+emit_16(1555);
+emit_16(1491);
+emit_16(1556);
+emit_16(1492);
+emit_16(1556);
+emit_16(1491);
+emit_16(1556);
+emit_16(1492);
+emit_16(1557);
+emit_16(1493);
+emit_16(1557);
+emit_16(1492);
+emit_16(1557);
+emit_16(1493);
+emit_16(1558);
+emit_16(1494);
+emit_16(1558);
+emit_16(1493);
+emit_16(1558);
+emit_16(1494);
+emit_16(1559);
+emit_16(1495);
+emit_16(1559);
+emit_16(1494);
+emit_16(1559);
+emit_16(1495);
+emit_16(1560);
+emit_16(1496);
+emit_16(1560);
+emit_16(1495);
+emit_16(1560);
+emit_16(1496);
+emit_16(1561);
+emit_16(1497);
+emit_16(1561);
+emit_16(1496);
+emit_16(1561);
+emit_16(1497);
+emit_16(1562);
+emit_16(1498);
+emit_16(1562);
+emit_16(1497);
+emit_16(1562);
+emit_16(1498);
+emit_16(1563);
+emit_16(1499);
+emit_16(1563);
+emit_16(1498);
+emit_16(1563);
+emit_16(1499);
+emit_16(1564);
+emit_16(1500);
+emit_16(1564);
+emit_16(1499);
+emit_16(1564);
+emit_16(1500);
+emit_16(1565);
+emit_16(1501);
+emit_16(1565);
+emit_16(1500);
+emit_16(1565);
+emit_16(1501);
+emit_16(1566);
+emit_16(1502);
+emit_16(1566);
+emit_16(1501);
+emit_16(1566);
+emit_16(1502);
+emit_16(1567);
+emit_16(1503);
+emit_16(1567);
+emit_16(1502);
+emit_16(1567);
+emit_16(1503);
+emit_16(1568);
+emit_16(1504);
+emit_16(1568);
+emit_16(1503);
+emit_16(1568);
+emit_16(1504);
+emit_16(1569);
+emit_16(1505);
+emit_16(1569);
+emit_16(1504);
+emit_16(1569);
+emit_16(1505);
+emit_16(1570);
+emit_16(1506);
+emit_16(1570);
+emit_16(1505);
+emit_16(1570);
+emit_16(1506);
+emit_16(1571);
+emit_16(1507);
+emit_16(1571);
+emit_16(1506);
+emit_16(1571);
+emit_16(1507);
+emit_16(1572);
+emit_16(1508);
+emit_16(1572);
+emit_16(1507);
+emit_16(1572);
+emit_16(1508);
+emit_16(1573);
+emit_16(1509);
+emit_16(1573);
+emit_16(1508);
+emit_16(1573);
+emit_16(1509);
+emit_16(1574);
+emit_16(1510);
+emit_16(1574);
+emit_16(1509);
+emit_16(1574);
+emit_16(1510);
+emit_16(1575);
+emit_16(1511);
+emit_16(1575);
+emit_16(1510);
+emit_16(1575);
+emit_16(1511);
+emit_16(1576);
+emit_16(1512);
+emit_16(1576);
+emit_16(1511);
+emit_16(1576);
+emit_16(1512);
+emit_16(1577);
+emit_16(1513);
+emit_16(1577);
+emit_16(1512);
+emit_16(1577);
+emit_16(1513);
+emit_16(1578);
+emit_16(1514);
+emit_16(1578);
+emit_16(1513);
+emit_16(1578);
+emit_16(1514);
+emit_16(1579);
+emit_16(1515);
+emit_16(1579);
+emit_16(1514);
+emit_16(1579);
+emit_16(1515);
+emit_16(1580);
+emit_16(1516);
+emit_16(1580);
+emit_16(1515);
+emit_16(1580);
+emit_16(1516);
+emit_16(1581);
+emit_16(1517);
+emit_16(1581);
+emit_16(1516);
+emit_16(1581);
+emit_16(1517);
+emit_16(1582);
+emit_16(1518);
+emit_16(1582);
+emit_16(1517);
+emit_16(1582);
+emit_16(1518);
+emit_16(1583);
+emit_16(1519);
+emit_16(1583);
+emit_16(1518);
+emit_16(1583);
+emit_16(1519);
+emit_16(1584);
+emit_16(1520);
+emit_16(1584);
+emit_16(1519);
+emit_16(1584);
+emit_16(1520);
+emit_16(1585);
+emit_16(1521);
+emit_16(1585);
+emit_16(1520);
+emit_16(1585);
+emit_16(1521);
+emit_16(1586);
+emit_16(1522);
+emit_16(1586);
+emit_16(1521);
+emit_16(1586);
+emit_16(1522);
+emit_16(1587);
+emit_16(1523);
+emit_16(1587);
+emit_16(1522);
+emit_16(1587);
+emit_16(1523);
+emit_16(1588);
+emit_16(1524);
+emit_16(1588);
+emit_16(1523);
+emit_16(1588);
+emit_16(1524);
+emit_16(1589);
+emit_16(1525);
+emit_16(1589);
+emit_16(1524);
+emit_16(1589);
+emit_16(1525);
+emit_16(1590);
+emit_16(1526);
+emit_16(1590);
+emit_16(1525);
+emit_16(1590);
+emit_16(1526);
+emit_16(1591);
+emit_16(1527);
+emit_16(1591);
+emit_16(1526);
+emit_16(1591);
+emit_16(1527);
+emit_16(1592);
+emit_16(1528);
+emit_16(1592);
+emit_16(1527);
+emit_16(1592);
+emit_16(1528);
+emit_16(1593);
+emit_16(1529);
+emit_16(1593);
+emit_16(1528);
+emit_16(1593);
+emit_16(1529);
+emit_16(1594);
+emit_16(1530);
+emit_16(1594);
+emit_16(1529);
+emit_16(1594);
+emit_16(1530);
+emit_16(1595);
+emit_16(1531);
+emit_16(1595);
+emit_16(1530);
+emit_16(1595);
+emit_16(1531);
+emit_16(1596);
+emit_16(1532);
+emit_16(1596);
+emit_16(1531);
+emit_16(1596);
+emit_16(1532);
+emit_16(1597);
+emit_16(1533);
+emit_16(1597);
+emit_16(1532);
+emit_16(1597);
+emit_16(1533);
+emit_16(1598);
+emit_16(1534);
+emit_16(1598);
+emit_16(1533);
+emit_16(1598);
+emit_16(1534);
+emit_16(1599);
+emit_16(1535);
+emit_16(1599);
+emit_16(1534);
+emit_16(1600);
+emit_16(1536);
+emit_16(1601);
+emit_16(1537);
+emit_16(1601);
+emit_16(1536);
+emit_16(1601);
+emit_16(1537);
+emit_16(1602);
+emit_16(1538);
+emit_16(1602);
+emit_16(1537);
+emit_16(1602);
+emit_16(1538);
+emit_16(1603);
+emit_16(1539);
+emit_16(1603);
+emit_16(1538);
+emit_16(1603);
+emit_16(1539);
+emit_16(1604);
+emit_16(1540);
+emit_16(1604);
+emit_16(1539);
+emit_16(1604);
+emit_16(1540);
+emit_16(1605);
+emit_16(1541);
+emit_16(1605);
+emit_16(1540);
+emit_16(1605);
+emit_16(1541);
+emit_16(1606);
+emit_16(1542);
+emit_16(1606);
+emit_16(1541);
+emit_16(1606);
+emit_16(1542);
+emit_16(1607);
+emit_16(1543);
+emit_16(1607);
+emit_16(1542);
+emit_16(1607);
+emit_16(1543);
+emit_16(1608);
+emit_16(1544);
+emit_16(1608);
+emit_16(1543);
+emit_16(1608);
+emit_16(1544);
+emit_16(1609);
+emit_16(1545);
+emit_16(1609);
+emit_16(1544);
+emit_16(1609);
+emit_16(1545);
+emit_16(1610);
+emit_16(1546);
+emit_16(1610);
+emit_16(1545);
+emit_16(1610);
+emit_16(1546);
+emit_16(1611);
+emit_16(1547);
+emit_16(1611);
+emit_16(1546);
+emit_16(1611);
+emit_16(1547);
+emit_16(1612);
+emit_16(1548);
+emit_16(1612);
+emit_16(1547);
+emit_16(1612);
+emit_16(1548);
+emit_16(1613);
+emit_16(1549);
+emit_16(1613);
+emit_16(1548);
+emit_16(1613);
+emit_16(1549);
+emit_16(1614);
+emit_16(1550);
+emit_16(1614);
+emit_16(1549);
+emit_16(1614);
+emit_16(1550);
+emit_16(1615);
+emit_16(1551);
+emit_16(1615);
+emit_16(1550);
+emit_16(1615);
+emit_16(1551);
+emit_16(1616);
+emit_16(1552);
+emit_16(1616);
+emit_16(1551);
+emit_16(1616);
+emit_16(1552);
+emit_16(1617);
+emit_16(1553);
+emit_16(1617);
+emit_16(1552);
+emit_16(1617);
+emit_16(1553);
+emit_16(1618);
+emit_16(1554);
+emit_16(1618);
+emit_16(1553);
+emit_16(1618);
+emit_16(1554);
+emit_16(1619);
+emit_16(1555);
+emit_16(1619);
+emit_16(1554);
+emit_16(1619);
+emit_16(1555);
+emit_16(1620);
+emit_16(1556);
+emit_16(1620);
+emit_16(1555);
+emit_16(1620);
+emit_16(1556);
+emit_16(1621);
+emit_16(1557);
+emit_16(1621);
+emit_16(1556);
+emit_16(1621);
+emit_16(1557);
+emit_16(1622);
+emit_16(1558);
+emit_16(1622);
+emit_16(1557);
+emit_16(1622);
+emit_16(1558);
+emit_16(1623);
+emit_16(1559);
+emit_16(1623);
+emit_16(1558);
+emit_16(1623);
+emit_16(1559);
+emit_16(1624);
+emit_16(1560);
+emit_16(1624);
+emit_16(1559);
+emit_16(1624);
+emit_16(1560);
+emit_16(1625);
+emit_16(1561);
+emit_16(1625);
+emit_16(1560);
+emit_16(1625);
+emit_16(1561);
+emit_16(1626);
+emit_16(1562);
+emit_16(1626);
+emit_16(1561);
+emit_16(1626);
+emit_16(1562);
+emit_16(1627);
+emit_16(1563);
+emit_16(1627);
+emit_16(1562);
+emit_16(1627);
+emit_16(1563);
+emit_16(1628);
+emit_16(1564);
+emit_16(1628);
+emit_16(1563);
+emit_16(1628);
+emit_16(1564);
+emit_16(1629);
+emit_16(1565);
+emit_16(1629);
+emit_16(1564);
+emit_16(1629);
+emit_16(1565);
+emit_16(1630);
+emit_16(1566);
+emit_16(1630);
+emit_16(1565);
+emit_16(1630);
+emit_16(1566);
+emit_16(1631);
+emit_16(1567);
+emit_16(1631);
+emit_16(1566);
+emit_16(1631);
+emit_16(1567);
+emit_16(1632);
+emit_16(1568);
+emit_16(1632);
+emit_16(1567);
+emit_16(1632);
+emit_16(1568);
+emit_16(1633);
+emit_16(1569);
+emit_16(1633);
+emit_16(1568);
+emit_16(1633);
+emit_16(1569);
+emit_16(1634);
+emit_16(1570);
+emit_16(1634);
+emit_16(1569);
+emit_16(1634);
+emit_16(1570);
+emit_16(1635);
+emit_16(1571);
+emit_16(1635);
+emit_16(1570);
+emit_16(1635);
+emit_16(1571);
+emit_16(1636);
+emit_16(1572);
+emit_16(1636);
+emit_16(1571);
+emit_16(1636);
+emit_16(1572);
+emit_16(1637);
+emit_16(1573);
+emit_16(1637);
+emit_16(1572);
+emit_16(1637);
+emit_16(1573);
+emit_16(1638);
+emit_16(1574);
+emit_16(1638);
+emit_16(1573);
+emit_16(1638);
+emit_16(1574);
+emit_16(1639);
+emit_16(1575);
+emit_16(1639);
+emit_16(1574);
+emit_16(1639);
+emit_16(1575);
+emit_16(1640);
+emit_16(1576);
+emit_16(1640);
+emit_16(1575);
+emit_16(1640);
+emit_16(1576);
+emit_16(1641);
+emit_16(1577);
+emit_16(1641);
+emit_16(1576);
+emit_16(1641);
+emit_16(1577);
+emit_16(1642);
+emit_16(1578);
+emit_16(1642);
+emit_16(1577);
+emit_16(1642);
+emit_16(1578);
+emit_16(1643);
+emit_16(1579);
+emit_16(1643);
+emit_16(1578);
+emit_16(1643);
+emit_16(1579);
+emit_16(1644);
+emit_16(1580);
+emit_16(1644);
+emit_16(1579);
+emit_16(1644);
+emit_16(1580);
+emit_16(1645);
+emit_16(1581);
+emit_16(1645);
+emit_16(1580);
+emit_16(1645);
+emit_16(1581);
+emit_16(1646);
+emit_16(1582);
+emit_16(1646);
+emit_16(1581);
+emit_16(1646);
+emit_16(1582);
+emit_16(1647);
+emit_16(1583);
+emit_16(1647);
+emit_16(1582);
+emit_16(1647);
+emit_16(1583);
+emit_16(1648);
+emit_16(1584);
+emit_16(1648);
+emit_16(1583);
+emit_16(1648);
+emit_16(1584);
+emit_16(1649);
+emit_16(1585);
+emit_16(1649);
+emit_16(1584);
+emit_16(1649);
+emit_16(1585);
+emit_16(1650);
+emit_16(1586);
+emit_16(1650);
+emit_16(1585);
+emit_16(1650);
+emit_16(1586);
+emit_16(1651);
+emit_16(1587);
+emit_16(1651);
+emit_16(1586);
+emit_16(1651);
+emit_16(1587);
+emit_16(1652);
+emit_16(1588);
+emit_16(1652);
+emit_16(1587);
+emit_16(1652);
+emit_16(1588);
+emit_16(1653);
+emit_16(1589);
+emit_16(1653);
+emit_16(1588);
+emit_16(1653);
+emit_16(1589);
+emit_16(1654);
+emit_16(1590);
+emit_16(1654);
+emit_16(1589);
+emit_16(1654);
+emit_16(1590);
+emit_16(1655);
+emit_16(1591);
+emit_16(1655);
+emit_16(1590);
+emit_16(1655);
+emit_16(1591);
+emit_16(1656);
+emit_16(1592);
+emit_16(1656);
+emit_16(1591);
+emit_16(1656);
+emit_16(1592);
+emit_16(1657);
+emit_16(1593);
+emit_16(1657);
+emit_16(1592);
+emit_16(1657);
+emit_16(1593);
+emit_16(1658);
+emit_16(1594);
+emit_16(1658);
+emit_16(1593);
+emit_16(1658);
+emit_16(1594);
+emit_16(1659);
+emit_16(1595);
+emit_16(1659);
+emit_16(1594);
+emit_16(1659);
+emit_16(1595);
+emit_16(1660);
+emit_16(1596);
+emit_16(1660);
+emit_16(1595);
+emit_16(1660);
+emit_16(1596);
+emit_16(1661);
+emit_16(1597);
+emit_16(1661);
+emit_16(1596);
+emit_16(1661);
+emit_16(1597);
+emit_16(1662);
+emit_16(1598);
+emit_16(1662);
+emit_16(1597);
+emit_16(1662);
+emit_16(1598);
+emit_16(1663);
+emit_16(1599);
+emit_16(1663);
+emit_16(1598);
+emit_16(1664);
+emit_16(1600);
+emit_16(1665);
+emit_16(1601);
+emit_16(1665);
+emit_16(1600);
+emit_16(1665);
+emit_16(1601);
+emit_16(1666);
+emit_16(1602);
+emit_16(1666);
+emit_16(1601);
+emit_16(1666);
+emit_16(1602);
+emit_16(1667);
+emit_16(1603);
+emit_16(1667);
+emit_16(1602);
+emit_16(1667);
+emit_16(1603);
+emit_16(1668);
+emit_16(1604);
+emit_16(1668);
+emit_16(1603);
+emit_16(1668);
+emit_16(1604);
+emit_16(1669);
+emit_16(1605);
+emit_16(1669);
+emit_16(1604);
+emit_16(1669);
+emit_16(1605);
+emit_16(1670);
+emit_16(1606);
+emit_16(1670);
+emit_16(1605);
+emit_16(1670);
+emit_16(1606);
+emit_16(1671);
+emit_16(1607);
+emit_16(1671);
+emit_16(1606);
+emit_16(1671);
+emit_16(1607);
+emit_16(1672);
+emit_16(1608);
+emit_16(1672);
+emit_16(1607);
+emit_16(1672);
+emit_16(1608);
+emit_16(1673);
+emit_16(1609);
+emit_16(1673);
+emit_16(1608);
+emit_16(1673);
+emit_16(1609);
+emit_16(1674);
+emit_16(1610);
+emit_16(1674);
+emit_16(1609);
+emit_16(1674);
+emit_16(1610);
+emit_16(1675);
+emit_16(1611);
+emit_16(1675);
+emit_16(1610);
+emit_16(1675);
+emit_16(1611);
+emit_16(1676);
+emit_16(1612);
+emit_16(1676);
+emit_16(1611);
+emit_16(1676);
+emit_16(1612);
+emit_16(1677);
+emit_16(1613);
+emit_16(1677);
+emit_16(1612);
+emit_16(1677);
+emit_16(1613);
+emit_16(1678);
+emit_16(1614);
+emit_16(1678);
+emit_16(1613);
+emit_16(1678);
+emit_16(1614);
+emit_16(1679);
+emit_16(1615);
+emit_16(1679);
+emit_16(1614);
+emit_16(1679);
+emit_16(1615);
+emit_16(1680);
+emit_16(1616);
+emit_16(1680);
+emit_16(1615);
+emit_16(1680);
+emit_16(1616);
+emit_16(1681);
+emit_16(1617);
+emit_16(1681);
+emit_16(1616);
+emit_16(1681);
+emit_16(1617);
+emit_16(1682);
+emit_16(1618);
+emit_16(1682);
+emit_16(1617);
+emit_16(1682);
+emit_16(1618);
+emit_16(1683);
+emit_16(1619);
+emit_16(1683);
+emit_16(1618);
+emit_16(1683);
+emit_16(1619);
+emit_16(1684);
+emit_16(1620);
+emit_16(1684);
+emit_16(1619);
+emit_16(1684);
+emit_16(1620);
+emit_16(1685);
+emit_16(1621);
+emit_16(1685);
+emit_16(1620);
+emit_16(1685);
+emit_16(1621);
+emit_16(1686);
+emit_16(1622);
+emit_16(1686);
+emit_16(1621);
+emit_16(1686);
+emit_16(1622);
+emit_16(1687);
+emit_16(1623);
+emit_16(1687);
+emit_16(1622);
+emit_16(1687);
+emit_16(1623);
+emit_16(1688);
+emit_16(1624);
+emit_16(1688);
+emit_16(1623);
+emit_16(1688);
+emit_16(1624);
+emit_16(1689);
+emit_16(1625);
+emit_16(1689);
+emit_16(1624);
+emit_16(1689);
+emit_16(1625);
+emit_16(1690);
+emit_16(1626);
+emit_16(1690);
+emit_16(1625);
+emit_16(1690);
+emit_16(1626);
+emit_16(1691);
+emit_16(1627);
+emit_16(1691);
+emit_16(1626);
+emit_16(1691);
+emit_16(1627);
+emit_16(1692);
+emit_16(1628);
+emit_16(1692);
+emit_16(1627);
+emit_16(1692);
+emit_16(1628);
+emit_16(1693);
+emit_16(1629);
+emit_16(1693);
+emit_16(1628);
+emit_16(1693);
+emit_16(1629);
+emit_16(1694);
+emit_16(1630);
+emit_16(1694);
+emit_16(1629);
+emit_16(1694);
+emit_16(1630);
+emit_16(1695);
+emit_16(1631);
+emit_16(1695);
+emit_16(1630);
+emit_16(1695);
+emit_16(1631);
+emit_16(1696);
+emit_16(1632);
+emit_16(1696);
+emit_16(1631);
+emit_16(1696);
+emit_16(1632);
+emit_16(1697);
+emit_16(1633);
+emit_16(1697);
+emit_16(1632);
+emit_16(1697);
+emit_16(1633);
+emit_16(1698);
+emit_16(1634);
+emit_16(1698);
+emit_16(1633);
+emit_16(1698);
+emit_16(1634);
+emit_16(1699);
+emit_16(1635);
+emit_16(1699);
+emit_16(1634);
+emit_16(1699);
+emit_16(1635);
+emit_16(1700);
+emit_16(1636);
+emit_16(1700);
+emit_16(1635);
+emit_16(1700);
+emit_16(1636);
+emit_16(1701);
+emit_16(1637);
+emit_16(1701);
+emit_16(1636);
+emit_16(1701);
+emit_16(1637);
+emit_16(1702);
+emit_16(1638);
+emit_16(1702);
+emit_16(1637);
+emit_16(1702);
+emit_16(1638);
+emit_16(1703);
+emit_16(1639);
+emit_16(1703);
+emit_16(1638);
+emit_16(1703);
+emit_16(1639);
+emit_16(1704);
+emit_16(1640);
+emit_16(1704);
+emit_16(1639);
+emit_16(1704);
+emit_16(1640);
+emit_16(1705);
+emit_16(1641);
+emit_16(1705);
+emit_16(1640);
+emit_16(1705);
+emit_16(1641);
+emit_16(1706);
+emit_16(1642);
+emit_16(1706);
+emit_16(1641);
+emit_16(1706);
+emit_16(1642);
+emit_16(1707);
+emit_16(1643);
+emit_16(1707);
+emit_16(1642);
+emit_16(1707);
+emit_16(1643);
+emit_16(1708);
+emit_16(1644);
+emit_16(1708);
+emit_16(1643);
+emit_16(1708);
+emit_16(1644);
+emit_16(1709);
+emit_16(1645);
+emit_16(1709);
+emit_16(1644);
+emit_16(1709);
+emit_16(1645);
+emit_16(1710);
+emit_16(1646);
+emit_16(1710);
+emit_16(1645);
+emit_16(1710);
+emit_16(1646);
+emit_16(1711);
+emit_16(1647);
+emit_16(1711);
+emit_16(1646);
+emit_16(1711);
+emit_16(1647);
+emit_16(1712);
+emit_16(1648);
+emit_16(1712);
+emit_16(1647);
+emit_16(1712);
+emit_16(1648);
+emit_16(1713);
+emit_16(1649);
+emit_16(1713);
+emit_16(1648);
+emit_16(1713);
+emit_16(1649);
+emit_16(1714);
+emit_16(1650);
+emit_16(1714);
+emit_16(1649);
+emit_16(1714);
+emit_16(1650);
+emit_16(1715);
+emit_16(1651);
+emit_16(1715);
+emit_16(1650);
+emit_16(1715);
+emit_16(1651);
+emit_16(1716);
+emit_16(1652);
+emit_16(1716);
+emit_16(1651);
+emit_16(1716);
+emit_16(1652);
+emit_16(1717);
+emit_16(1653);
+emit_16(1717);
+emit_16(1652);
+emit_16(1717);
+emit_16(1653);
+emit_16(1718);
+emit_16(1654);
+emit_16(1718);
+emit_16(1653);
+emit_16(1718);
+emit_16(1654);
+emit_16(1719);
+emit_16(1655);
+emit_16(1719);
+emit_16(1654);
+emit_16(1719);
+emit_16(1655);
+emit_16(1720);
+emit_16(1656);
+emit_16(1720);
+emit_16(1655);
+emit_16(1720);
+emit_16(1656);
+emit_16(1721);
+emit_16(1657);
+emit_16(1721);
+emit_16(1656);
+emit_16(1721);
+emit_16(1657);
+emit_16(1722);
+emit_16(1658);
+emit_16(1722);
+emit_16(1657);
+emit_16(1722);
+emit_16(1658);
+emit_16(1723);
+emit_16(1659);
+emit_16(1723);
+emit_16(1658);
+emit_16(1723);
+emit_16(1659);
+emit_16(1724);
+emit_16(1660);
+emit_16(1724);
+emit_16(1659);
+emit_16(1724);
+emit_16(1660);
+emit_16(1725);
+emit_16(1661);
+emit_16(1725);
+emit_16(1660);
+emit_16(1725);
+emit_16(1661);
+emit_16(1726);
+emit_16(1662);
+emit_16(1726);
+emit_16(1661);
+emit_16(1726);
+emit_16(1662);
+emit_16(1727);
+emit_16(1663);
+emit_16(1727);
+emit_16(1662);
+emit_16(1728);
+emit_16(1664);
+emit_16(1729);
+emit_16(1665);
+emit_16(1729);
+emit_16(1664);
+emit_16(1729);
+emit_16(1665);
+emit_16(1730);
+emit_16(1666);
+emit_16(1730);
+emit_16(1665);
+emit_16(1730);
+emit_16(1666);
+emit_16(1731);
+emit_16(1667);
+emit_16(1731);
+emit_16(1666);
+emit_16(1731);
+emit_16(1667);
+emit_16(1732);
+emit_16(1668);
+emit_16(1732);
+emit_16(1667);
+emit_16(1732);
+emit_16(1668);
+emit_16(1733);
+emit_16(1669);
+emit_16(1733);
+emit_16(1668);
+emit_16(1733);
+emit_16(1669);
+emit_16(1734);
+emit_16(1670);
+emit_16(1734);
+emit_16(1669);
+emit_16(1734);
+emit_16(1670);
+emit_16(1735);
+emit_16(1671);
+emit_16(1735);
+emit_16(1670);
+emit_16(1735);
+emit_16(1671);
+emit_16(1736);
+emit_16(1672);
+emit_16(1736);
+emit_16(1671);
+emit_16(1736);
+emit_16(1672);
+emit_16(1737);
+emit_16(1673);
+emit_16(1737);
+emit_16(1672);
+emit_16(1737);
+emit_16(1673);
+emit_16(1738);
+emit_16(1674);
+emit_16(1738);
+emit_16(1673);
+emit_16(1738);
+emit_16(1674);
+emit_16(1739);
+emit_16(1675);
+emit_16(1739);
+emit_16(1674);
+emit_16(1739);
+emit_16(1675);
+emit_16(1740);
+emit_16(1676);
+emit_16(1740);
+emit_16(1675);
+emit_16(1740);
+emit_16(1676);
+emit_16(1741);
+emit_16(1677);
+emit_16(1741);
+emit_16(1676);
+emit_16(1741);
+emit_16(1677);
+emit_16(1742);
+emit_16(1678);
+emit_16(1742);
+emit_16(1677);
+emit_16(1742);
+emit_16(1678);
+emit_16(1743);
+emit_16(1679);
+emit_16(1743);
+emit_16(1678);
+emit_16(1743);
+emit_16(1679);
+emit_16(1744);
+emit_16(1680);
+emit_16(1744);
+emit_16(1679);
+emit_16(1744);
+emit_16(1680);
+emit_16(1745);
+emit_16(1681);
+emit_16(1745);
+emit_16(1680);
+emit_16(1745);
+emit_16(1681);
+emit_16(1746);
+emit_16(1682);
+emit_16(1746);
+emit_16(1681);
+emit_16(1746);
+emit_16(1682);
+emit_16(1747);
+emit_16(1683);
+emit_16(1747);
+emit_16(1682);
+emit_16(1747);
+emit_16(1683);
+emit_16(1748);
+emit_16(1684);
+emit_16(1748);
+emit_16(1683);
+emit_16(1748);
+emit_16(1684);
+emit_16(1749);
+emit_16(1685);
+emit_16(1749);
+emit_16(1684);
+emit_16(1749);
+emit_16(1685);
+emit_16(1750);
+emit_16(1686);
+emit_16(1750);
+emit_16(1685);
+emit_16(1750);
+emit_16(1686);
+emit_16(1751);
+emit_16(1687);
+emit_16(1751);
+emit_16(1686);
+emit_16(1751);
+emit_16(1687);
+emit_16(1752);
+emit_16(1688);
+emit_16(1752);
+emit_16(1687);
+emit_16(1752);
+emit_16(1688);
+emit_16(1753);
+emit_16(1689);
+emit_16(1753);
+emit_16(1688);
+emit_16(1753);
+emit_16(1689);
+emit_16(1754);
+emit_16(1690);
+emit_16(1754);
+emit_16(1689);
+emit_16(1754);
+emit_16(1690);
+emit_16(1755);
+emit_16(1691);
+emit_16(1755);
+emit_16(1690);
+emit_16(1755);
+emit_16(1691);
+emit_16(1756);
+emit_16(1692);
+emit_16(1756);
+emit_16(1691);
+emit_16(1756);
+emit_16(1692);
+emit_16(1757);
+emit_16(1693);
+emit_16(1757);
+emit_16(1692);
+emit_16(1757);
+emit_16(1693);
+emit_16(1758);
+emit_16(1694);
+emit_16(1758);
+emit_16(1693);
+emit_16(1758);
+emit_16(1694);
+emit_16(1759);
+emit_16(1695);
+emit_16(1759);
+emit_16(1694);
+emit_16(1759);
+emit_16(1695);
+emit_16(1760);
+emit_16(1696);
+emit_16(1760);
+emit_16(1695);
+emit_16(1760);
+emit_16(1696);
+emit_16(1761);
+emit_16(1697);
+emit_16(1761);
+emit_16(1696);
+emit_16(1761);
+emit_16(1697);
+emit_16(1762);
+emit_16(1698);
+emit_16(1762);
+emit_16(1697);
+emit_16(1762);
+emit_16(1698);
+emit_16(1763);
+emit_16(1699);
+emit_16(1763);
+emit_16(1698);
+emit_16(1763);
+emit_16(1699);
+emit_16(1764);
+emit_16(1700);
+emit_16(1764);
+emit_16(1699);
+emit_16(1764);
+emit_16(1700);
+emit_16(1765);
+emit_16(1701);
+emit_16(1765);
+emit_16(1700);
+emit_16(1765);
+emit_16(1701);
+emit_16(1766);
+emit_16(1702);
+emit_16(1766);
+emit_16(1701);
+emit_16(1766);
+emit_16(1702);
+emit_16(1767);
+emit_16(1703);
+emit_16(1767);
+emit_16(1702);
+emit_16(1767);
+emit_16(1703);
+emit_16(1768);
+emit_16(1704);
+emit_16(1768);
+emit_16(1703);
+emit_16(1768);
+emit_16(1704);
+emit_16(1769);
+emit_16(1705);
+emit_16(1769);
+emit_16(1704);
+emit_16(1769);
+emit_16(1705);
+emit_16(1770);
+emit_16(1706);
+emit_16(1770);
+emit_16(1705);
+emit_16(1770);
+emit_16(1706);
+emit_16(1771);
+emit_16(1707);
+emit_16(1771);
+emit_16(1706);
+emit_16(1771);
+emit_16(1707);
+emit_16(1772);
+emit_16(1708);
+emit_16(1772);
+emit_16(1707);
+emit_16(1772);
+emit_16(1708);
+emit_16(1773);
+emit_16(1709);
+emit_16(1773);
+emit_16(1708);
+emit_16(1773);
+emit_16(1709);
+emit_16(1774);
+emit_16(1710);
+emit_16(1774);
+emit_16(1709);
+emit_16(1774);
+emit_16(1710);
+emit_16(1775);
+emit_16(1711);
+emit_16(1775);
+emit_16(1710);
+emit_16(1775);
+emit_16(1711);
+emit_16(1776);
+emit_16(1712);
+emit_16(1776);
+emit_16(1711);
+emit_16(1776);
+emit_16(1712);
+emit_16(1777);
+emit_16(1713);
+emit_16(1777);
+emit_16(1712);
+emit_16(1777);
+emit_16(1713);
+emit_16(1778);
+emit_16(1714);
+emit_16(1778);
+emit_16(1713);
+emit_16(1778);
+emit_16(1714);
+emit_16(1779);
+emit_16(1715);
+emit_16(1779);
+emit_16(1714);
+emit_16(1779);
+emit_16(1715);
+emit_16(1780);
+emit_16(1716);
+emit_16(1780);
+emit_16(1715);
+emit_16(1780);
+emit_16(1716);
+emit_16(1781);
+emit_16(1717);
+emit_16(1781);
+emit_16(1716);
+emit_16(1781);
+emit_16(1717);
+emit_16(1782);
+emit_16(1718);
+emit_16(1782);
+emit_16(1717);
+emit_16(1782);
+emit_16(1718);
+emit_16(1783);
+emit_16(1719);
+emit_16(1783);
+emit_16(1718);
+emit_16(1783);
+emit_16(1719);
+emit_16(1784);
+emit_16(1720);
+emit_16(1784);
+emit_16(1719);
+emit_16(1784);
+emit_16(1720);
+emit_16(1785);
+emit_16(1721);
+emit_16(1785);
+emit_16(1720);
+emit_16(1785);
+emit_16(1721);
+emit_16(1786);
+emit_16(1722);
+emit_16(1786);
+emit_16(1721);
+emit_16(1786);
+emit_16(1722);
+emit_16(1787);
+emit_16(1723);
+emit_16(1787);
+emit_16(1722);
+emit_16(1787);
+emit_16(1723);
+emit_16(1788);
+emit_16(1724);
+emit_16(1788);
+emit_16(1723);
+emit_16(1788);
+emit_16(1724);
+emit_16(1789);
+emit_16(1725);
+emit_16(1789);
+emit_16(1724);
+emit_16(1789);
+emit_16(1725);
+emit_16(1790);
+emit_16(1726);
+emit_16(1790);
+emit_16(1725);
+emit_16(1790);
+emit_16(1726);
+emit_16(1791);
+emit_16(1727);
+emit_16(1791);
+emit_16(1726);
+emit_16(1792);
+emit_16(1728);
+emit_16(1793);
+emit_16(1729);
+emit_16(1793);
+emit_16(1728);
+emit_16(1793);
+emit_16(1729);
+emit_16(1794);
+emit_16(1730);
+emit_16(1794);
+emit_16(1729);
+emit_16(1794);
+emit_16(1730);
+emit_16(1795);
+emit_16(1731);
+emit_16(1795);
+emit_16(1730);
+emit_16(1795);
+emit_16(1731);
+emit_16(1796);
+emit_16(1732);
+emit_16(1796);
+emit_16(1731);
+emit_16(1796);
+emit_16(1732);
+emit_16(1797);
+emit_16(1733);
+emit_16(1797);
+emit_16(1732);
+emit_16(1797);
+emit_16(1733);
+emit_16(1798);
+emit_16(1734);
+emit_16(1798);
+emit_16(1733);
+emit_16(1798);
+emit_16(1734);
+emit_16(1799);
+emit_16(1735);
+emit_16(1799);
+emit_16(1734);
+emit_16(1799);
+emit_16(1735);
+emit_16(1800);
+emit_16(1736);
+emit_16(1800);
+emit_16(1735);
+emit_16(1800);
+emit_16(1736);
+emit_16(1801);
+emit_16(1737);
+emit_16(1801);
+emit_16(1736);
+emit_16(1801);
+emit_16(1737);
+emit_16(1802);
+emit_16(1738);
+emit_16(1802);
+emit_16(1737);
+emit_16(1802);
+emit_16(1738);
+emit_16(1803);
+emit_16(1739);
+emit_16(1803);
+emit_16(1738);
+emit_16(1803);
+emit_16(1739);
+emit_16(1804);
+emit_16(1740);
+emit_16(1804);
+emit_16(1739);
+emit_16(1804);
+emit_16(1740);
+emit_16(1805);
+emit_16(1741);
+emit_16(1805);
+emit_16(1740);
+emit_16(1805);
+emit_16(1741);
+emit_16(1806);
+emit_16(1742);
+emit_16(1806);
+emit_16(1741);
+emit_16(1806);
+emit_16(1742);
+emit_16(1807);
+emit_16(1743);
+emit_16(1807);
+emit_16(1742);
+emit_16(1807);
+emit_16(1743);
+emit_16(1808);
+emit_16(1744);
+emit_16(1808);
+emit_16(1743);
+emit_16(1808);
+emit_16(1744);
+emit_16(1809);
+emit_16(1745);
+emit_16(1809);
+emit_16(1744);
+emit_16(1809);
+emit_16(1745);
+emit_16(1810);
+emit_16(1746);
+emit_16(1810);
+emit_16(1745);
+emit_16(1810);
+emit_16(1746);
+emit_16(1811);
+emit_16(1747);
+emit_16(1811);
+emit_16(1746);
+emit_16(1811);
+emit_16(1747);
+emit_16(1812);
+emit_16(1748);
+emit_16(1812);
+emit_16(1747);
+emit_16(1812);
+emit_16(1748);
+emit_16(1813);
+emit_16(1749);
+emit_16(1813);
+emit_16(1748);
+emit_16(1813);
+emit_16(1749);
+emit_16(1814);
+emit_16(1750);
+emit_16(1814);
+emit_16(1749);
+emit_16(1814);
+emit_16(1750);
+emit_16(1815);
+emit_16(1751);
+emit_16(1815);
+emit_16(1750);
+emit_16(1815);
+emit_16(1751);
+emit_16(1816);
+emit_16(1752);
+emit_16(1816);
+emit_16(1751);
+emit_16(1816);
+emit_16(1752);
+emit_16(1817);
+emit_16(1753);
+emit_16(1817);
+emit_16(1752);
+emit_16(1817);
+emit_16(1753);
+emit_16(1818);
+emit_16(1754);
+emit_16(1818);
+emit_16(1753);
+emit_16(1818);
+emit_16(1754);
+emit_16(1819);
+emit_16(1755);
+emit_16(1819);
+emit_16(1754);
+emit_16(1819);
+emit_16(1755);
+emit_16(1820);
+emit_16(1756);
+emit_16(1820);
+emit_16(1755);
+emit_16(1820);
+emit_16(1756);
+emit_16(1821);
+emit_16(1757);
+emit_16(1821);
+emit_16(1756);
+emit_16(1821);
+emit_16(1757);
+emit_16(1822);
+emit_16(1758);
+emit_16(1822);
+emit_16(1757);
+emit_16(1822);
+emit_16(1758);
+emit_16(1823);
+emit_16(1759);
+emit_16(1823);
+emit_16(1758);
+emit_16(1823);
+emit_16(1759);
+emit_16(1824);
+emit_16(1760);
+emit_16(1824);
+emit_16(1759);
+emit_16(1824);
+emit_16(1760);
+emit_16(1825);
+emit_16(1761);
+emit_16(1825);
+emit_16(1760);
+emit_16(1825);
+emit_16(1761);
+emit_16(1826);
+emit_16(1762);
+emit_16(1826);
+emit_16(1761);
+emit_16(1826);
+emit_16(1762);
+emit_16(1827);
+emit_16(1763);
+emit_16(1827);
+emit_16(1762);
+emit_16(1827);
+emit_16(1763);
+emit_16(1828);
+emit_16(1764);
+emit_16(1828);
+emit_16(1763);
+emit_16(1828);
+emit_16(1764);
+emit_16(1829);
+emit_16(1765);
+emit_16(1829);
+emit_16(1764);
+emit_16(1829);
+emit_16(1765);
+emit_16(1830);
+emit_16(1766);
+emit_16(1830);
+emit_16(1765);
+emit_16(1830);
+emit_16(1766);
+emit_16(1831);
+emit_16(1767);
+emit_16(1831);
+emit_16(1766);
+emit_16(1831);
+emit_16(1767);
+emit_16(1832);
+emit_16(1768);
+emit_16(1832);
+emit_16(1767);
+emit_16(1832);
+emit_16(1768);
+emit_16(1833);
+emit_16(1769);
+emit_16(1833);
+emit_16(1768);
+emit_16(1833);
+emit_16(1769);
+emit_16(1834);
+emit_16(1770);
+emit_16(1834);
+emit_16(1769);
+emit_16(1834);
+emit_16(1770);
+emit_16(1835);
+emit_16(1771);
+emit_16(1835);
+emit_16(1770);
+emit_16(1835);
+emit_16(1771);
+emit_16(1836);
+emit_16(1772);
+emit_16(1836);
+emit_16(1771);
+emit_16(1836);
+emit_16(1772);
+emit_16(1837);
+emit_16(1773);
+emit_16(1837);
+emit_16(1772);
+emit_16(1837);
+emit_16(1773);
+emit_16(1838);
+emit_16(1774);
+emit_16(1838);
+emit_16(1773);
+emit_16(1838);
+emit_16(1774);
+emit_16(1839);
+emit_16(1775);
+emit_16(1839);
+emit_16(1774);
+emit_16(1839);
+emit_16(1775);
+emit_16(1840);
+emit_16(1776);
+emit_16(1840);
+emit_16(1775);
+emit_16(1840);
+emit_16(1776);
+emit_16(1841);
+emit_16(1777);
+emit_16(1841);
+emit_16(1776);
+emit_16(1841);
+emit_16(1777);
+emit_16(1842);
+emit_16(1778);
+emit_16(1842);
+emit_16(1777);
+emit_16(1842);
+emit_16(1778);
+emit_16(1843);
+emit_16(1779);
+emit_16(1843);
+emit_16(1778);
+emit_16(1843);
+emit_16(1779);
+emit_16(1844);
+emit_16(1780);
+emit_16(1844);
+emit_16(1779);
+emit_16(1844);
+emit_16(1780);
+emit_16(1845);
+emit_16(1781);
+emit_16(1845);
+emit_16(1780);
+emit_16(1845);
+emit_16(1781);
+emit_16(1846);
+emit_16(1782);
+emit_16(1846);
+emit_16(1781);
+emit_16(1846);
+emit_16(1782);
+emit_16(1847);
+emit_16(1783);
+emit_16(1847);
+emit_16(1782);
+emit_16(1847);
+emit_16(1783);
+emit_16(1848);
+emit_16(1784);
+emit_16(1848);
+emit_16(1783);
+emit_16(1848);
+emit_16(1784);
+emit_16(1849);
+emit_16(1785);
+emit_16(1849);
+emit_16(1784);
+emit_16(1849);
+emit_16(1785);
+emit_16(1850);
+emit_16(1786);
+emit_16(1850);
+emit_16(1785);
+emit_16(1850);
+emit_16(1786);
+emit_16(1851);
+emit_16(1787);
+emit_16(1851);
+emit_16(1786);
+emit_16(1851);
+emit_16(1787);
+emit_16(1852);
+emit_16(1788);
+emit_16(1852);
+emit_16(1787);
+emit_16(1852);
+emit_16(1788);
+emit_16(1853);
+emit_16(1789);
+emit_16(1853);
+emit_16(1788);
+emit_16(1853);
+emit_16(1789);
+emit_16(1854);
+emit_16(1790);
+emit_16(1854);
+emit_16(1789);
+emit_16(1854);
+emit_16(1790);
+emit_16(1855);
+emit_16(1791);
+emit_16(1855);
+emit_16(1790);
+emit_16(1856);
+emit_16(1792);
+emit_16(1857);
+emit_16(1793);
+emit_16(1857);
+emit_16(1792);
+emit_16(1857);
+emit_16(1793);
+emit_16(1858);
+emit_16(1794);
+emit_16(1858);
+emit_16(1793);
+emit_16(1858);
+emit_16(1794);
+emit_16(1859);
+emit_16(1795);
+emit_16(1859);
+emit_16(1794);
+emit_16(1859);
+emit_16(1795);
+emit_16(1860);
+emit_16(1796);
+emit_16(1860);
+emit_16(1795);
+emit_16(1860);
+emit_16(1796);
+emit_16(1861);
+emit_16(1797);
+emit_16(1861);
+emit_16(1796);
+emit_16(1861);
+emit_16(1797);
+emit_16(1862);
+emit_16(1798);
+emit_16(1862);
+emit_16(1797);
+emit_16(1862);
+emit_16(1798);
+emit_16(1863);
+emit_16(1799);
+emit_16(1863);
+emit_16(1798);
+emit_16(1863);
+emit_16(1799);
+emit_16(1864);
+emit_16(1800);
+emit_16(1864);
+emit_16(1799);
+emit_16(1864);
+emit_16(1800);
+emit_16(1865);
+emit_16(1801);
+emit_16(1865);
+emit_16(1800);
+emit_16(1865);
+emit_16(1801);
+emit_16(1866);
+emit_16(1802);
+emit_16(1866);
+emit_16(1801);
+emit_16(1866);
+emit_16(1802);
+emit_16(1867);
+emit_16(1803);
+emit_16(1867);
+emit_16(1802);
+emit_16(1867);
+emit_16(1803);
+emit_16(1868);
+emit_16(1804);
+emit_16(1868);
+emit_16(1803);
+emit_16(1868);
+emit_16(1804);
+emit_16(1869);
+emit_16(1805);
+emit_16(1869);
+emit_16(1804);
+emit_16(1869);
+emit_16(1805);
+emit_16(1870);
+emit_16(1806);
+emit_16(1870);
+emit_16(1805);
+emit_16(1870);
+emit_16(1806);
+emit_16(1871);
+emit_16(1807);
+emit_16(1871);
+emit_16(1806);
+emit_16(1871);
+emit_16(1807);
+emit_16(1872);
+emit_16(1808);
+emit_16(1872);
+emit_16(1807);
+emit_16(1872);
+emit_16(1808);
+emit_16(1873);
+emit_16(1809);
+emit_16(1873);
+emit_16(1808);
+emit_16(1873);
+emit_16(1809);
+emit_16(1874);
+emit_16(1810);
+emit_16(1874);
+emit_16(1809);
+emit_16(1874);
+emit_16(1810);
+emit_16(1875);
+emit_16(1811);
+emit_16(1875);
+emit_16(1810);
+emit_16(1875);
+emit_16(1811);
+emit_16(1876);
+emit_16(1812);
+emit_16(1876);
+emit_16(1811);
+emit_16(1876);
+emit_16(1812);
+emit_16(1877);
+emit_16(1813);
+emit_16(1877);
+emit_16(1812);
+emit_16(1877);
+emit_16(1813);
+emit_16(1878);
+emit_16(1814);
+emit_16(1878);
+emit_16(1813);
+emit_16(1878);
+emit_16(1814);
+emit_16(1879);
+emit_16(1815);
+emit_16(1879);
+emit_16(1814);
+emit_16(1879);
+emit_16(1815);
+emit_16(1880);
+emit_16(1816);
+emit_16(1880);
+emit_16(1815);
+emit_16(1880);
+emit_16(1816);
+emit_16(1881);
+emit_16(1817);
+emit_16(1881);
+emit_16(1816);
+emit_16(1881);
+emit_16(1817);
+emit_16(1882);
+emit_16(1818);
+emit_16(1882);
+emit_16(1817);
+emit_16(1882);
+emit_16(1818);
+emit_16(1883);
+emit_16(1819);
+emit_16(1883);
+emit_16(1818);
+emit_16(1883);
+emit_16(1819);
+emit_16(1884);
+emit_16(1820);
+emit_16(1884);
+emit_16(1819);
+emit_16(1884);
+emit_16(1820);
+emit_16(1885);
+emit_16(1821);
+emit_16(1885);
+emit_16(1820);
+emit_16(1885);
+emit_16(1821);
+emit_16(1886);
+emit_16(1822);
+emit_16(1886);
+emit_16(1821);
+emit_16(1886);
+emit_16(1822);
+emit_16(1887);
+emit_16(1823);
+emit_16(1887);
+emit_16(1822);
+emit_16(1887);
+emit_16(1823);
+emit_16(1888);
+emit_16(1824);
+emit_16(1888);
+emit_16(1823);
+emit_16(1888);
+emit_16(1824);
+emit_16(1889);
+emit_16(1825);
+emit_16(1889);
+emit_16(1824);
+emit_16(1889);
+emit_16(1825);
+emit_16(1890);
+emit_16(1826);
+emit_16(1890);
+emit_16(1825);
+emit_16(1890);
+emit_16(1826);
+emit_16(1891);
+emit_16(1827);
+emit_16(1891);
+emit_16(1826);
+emit_16(1891);
+emit_16(1827);
+emit_16(1892);
+emit_16(1828);
+emit_16(1892);
+emit_16(1827);
+emit_16(1892);
+emit_16(1828);
+emit_16(1893);
+emit_16(1829);
+emit_16(1893);
+emit_16(1828);
+emit_16(1893);
+emit_16(1829);
+emit_16(1894);
+emit_16(1830);
+emit_16(1894);
+emit_16(1829);
+emit_16(1894);
+emit_16(1830);
+emit_16(1895);
+emit_16(1831);
+emit_16(1895);
+emit_16(1830);
+emit_16(1895);
+emit_16(1831);
+emit_16(1896);
+emit_16(1832);
+emit_16(1896);
+emit_16(1831);
+emit_16(1896);
+emit_16(1832);
+emit_16(1897);
+emit_16(1833);
+emit_16(1897);
+emit_16(1832);
+emit_16(1897);
+emit_16(1833);
+emit_16(1898);
+emit_16(1834);
+emit_16(1898);
+emit_16(1833);
+emit_16(1898);
+emit_16(1834);
+emit_16(1899);
+emit_16(1835);
+emit_16(1899);
+emit_16(1834);
+emit_16(1899);
+emit_16(1835);
+emit_16(1900);
+emit_16(1836);
+emit_16(1900);
+emit_16(1835);
+emit_16(1900);
+emit_16(1836);
+emit_16(1901);
+emit_16(1837);
+emit_16(1901);
+emit_16(1836);
+emit_16(1901);
+emit_16(1837);
+emit_16(1902);
+emit_16(1838);
+emit_16(1902);
+emit_16(1837);
+emit_16(1902);
+emit_16(1838);
+emit_16(1903);
+emit_16(1839);
+emit_16(1903);
+emit_16(1838);
+emit_16(1903);
+emit_16(1839);
+emit_16(1904);
+emit_16(1840);
+emit_16(1904);
+emit_16(1839);
+emit_16(1904);
+emit_16(1840);
+emit_16(1905);
+emit_16(1841);
+emit_16(1905);
+emit_16(1840);
+emit_16(1905);
+emit_16(1841);
+emit_16(1906);
+emit_16(1842);
+emit_16(1906);
+emit_16(1841);
+emit_16(1906);
+emit_16(1842);
+emit_16(1907);
+emit_16(1843);
+emit_16(1907);
+emit_16(1842);
+emit_16(1907);
+emit_16(1843);
+emit_16(1908);
+emit_16(1844);
+emit_16(1908);
+emit_16(1843);
+emit_16(1908);
+emit_16(1844);
+emit_16(1909);
+emit_16(1845);
+emit_16(1909);
+emit_16(1844);
+emit_16(1909);
+emit_16(1845);
+emit_16(1910);
+emit_16(1846);
+emit_16(1910);
+emit_16(1845);
+emit_16(1910);
+emit_16(1846);
+emit_16(1911);
+emit_16(1847);
+emit_16(1911);
+emit_16(1846);
+emit_16(1911);
+emit_16(1847);
+emit_16(1912);
+emit_16(1848);
+emit_16(1912);
+emit_16(1847);
+emit_16(1912);
+emit_16(1848);
+emit_16(1913);
+emit_16(1849);
+emit_16(1913);
+emit_16(1848);
+emit_16(1913);
+emit_16(1849);
+emit_16(1914);
+emit_16(1850);
+emit_16(1914);
+emit_16(1849);
+emit_16(1914);
+emit_16(1850);
+emit_16(1915);
+emit_16(1851);
+emit_16(1915);
+emit_16(1850);
+emit_16(1915);
+emit_16(1851);
+emit_16(1916);
+emit_16(1852);
+emit_16(1916);
+emit_16(1851);
+emit_16(1916);
+emit_16(1852);
+emit_16(1917);
+emit_16(1853);
+emit_16(1917);
+emit_16(1852);
+emit_16(1917);
+emit_16(1853);
+emit_16(1918);
+emit_16(1854);
+emit_16(1918);
+emit_16(1853);
+emit_16(1918);
+emit_16(1854);
+emit_16(1919);
+emit_16(1855);
+emit_16(1919);
+emit_16(1854);
+emit_16(1920);
+emit_16(1856);
+emit_16(1921);
+emit_16(1857);
+emit_16(1921);
+emit_16(1856);
+emit_16(1921);
+emit_16(1857);
+emit_16(1922);
+emit_16(1858);
+emit_16(1922);
+emit_16(1857);
+emit_16(1922);
+emit_16(1858);
+emit_16(1923);
+emit_16(1859);
+emit_16(1923);
+emit_16(1858);
+emit_16(1923);
+emit_16(1859);
+emit_16(1924);
+emit_16(1860);
+emit_16(1924);
+emit_16(1859);
+emit_16(1924);
+emit_16(1860);
+emit_16(1925);
+emit_16(1861);
+emit_16(1925);
+emit_16(1860);
+emit_16(1925);
+emit_16(1861);
+emit_16(1926);
+emit_16(1862);
+emit_16(1926);
+emit_16(1861);
+emit_16(1926);
+emit_16(1862);
+emit_16(1927);
+emit_16(1863);
+emit_16(1927);
+emit_16(1862);
+emit_16(1927);
+emit_16(1863);
+emit_16(1928);
+emit_16(1864);
+emit_16(1928);
+emit_16(1863);
+emit_16(1928);
+emit_16(1864);
+emit_16(1929);
+emit_16(1865);
+emit_16(1929);
+emit_16(1864);
+emit_16(1929);
+emit_16(1865);
+emit_16(1930);
+emit_16(1866);
+emit_16(1930);
+emit_16(1865);
+emit_16(1930);
+emit_16(1866);
+emit_16(1931);
+emit_16(1867);
+emit_16(1931);
+emit_16(1866);
+emit_16(1931);
+emit_16(1867);
+emit_16(1932);
+emit_16(1868);
+emit_16(1932);
+emit_16(1867);
+emit_16(1932);
+emit_16(1868);
+emit_16(1933);
+emit_16(1869);
+emit_16(1933);
+emit_16(1868);
+emit_16(1933);
+emit_16(1869);
+emit_16(1934);
+emit_16(1870);
+emit_16(1934);
+emit_16(1869);
+emit_16(1934);
+emit_16(1870);
+emit_16(1935);
+emit_16(1871);
+emit_16(1935);
+emit_16(1870);
+emit_16(1935);
+emit_16(1871);
+emit_16(1936);
+emit_16(1872);
+emit_16(1936);
+emit_16(1871);
+emit_16(1936);
+emit_16(1872);
+emit_16(1937);
+emit_16(1873);
+emit_16(1937);
+emit_16(1872);
+emit_16(1937);
+emit_16(1873);
+emit_16(1938);
+emit_16(1874);
+emit_16(1938);
+emit_16(1873);
+emit_16(1938);
+emit_16(1874);
+emit_16(1939);
+emit_16(1875);
+emit_16(1939);
+emit_16(1874);
+emit_16(1939);
+emit_16(1875);
+emit_16(1940);
+emit_16(1876);
+emit_16(1940);
+emit_16(1875);
+emit_16(1940);
+emit_16(1876);
+emit_16(1941);
+emit_16(1877);
+emit_16(1941);
+emit_16(1876);
+emit_16(1941);
+emit_16(1877);
+emit_16(1942);
+emit_16(1878);
+emit_16(1942);
+emit_16(1877);
+emit_16(1942);
+emit_16(1878);
+emit_16(1943);
+emit_16(1879);
+emit_16(1943);
+emit_16(1878);
+emit_16(1943);
+emit_16(1879);
+emit_16(1944);
+emit_16(1880);
+emit_16(1944);
+emit_16(1879);
+emit_16(1944);
+emit_16(1880);
+emit_16(1945);
+emit_16(1881);
+emit_16(1945);
+emit_16(1880);
+emit_16(1945);
+emit_16(1881);
+emit_16(1946);
+emit_16(1882);
+emit_16(1946);
+emit_16(1881);
+emit_16(1946);
+emit_16(1882);
+emit_16(1947);
+emit_16(1883);
+emit_16(1947);
+emit_16(1882);
+emit_16(1947);
+emit_16(1883);
+emit_16(1948);
+emit_16(1884);
+emit_16(1948);
+emit_16(1883);
+emit_16(1948);
+emit_16(1884);
+emit_16(1949);
+emit_16(1885);
+emit_16(1949);
+emit_16(1884);
+emit_16(1949);
+emit_16(1885);
+emit_16(1950);
+emit_16(1886);
+emit_16(1950);
+emit_16(1885);
+emit_16(1950);
+emit_16(1886);
+emit_16(1951);
+emit_16(1887);
+emit_16(1951);
+emit_16(1886);
+emit_16(1951);
+emit_16(1887);
+emit_16(1952);
+emit_16(1888);
+emit_16(1952);
+emit_16(1887);
+emit_16(1952);
+emit_16(1888);
+emit_16(1953);
+emit_16(1889);
+emit_16(1953);
+emit_16(1888);
+emit_16(1953);
+emit_16(1889);
+emit_16(1954);
+emit_16(1890);
+emit_16(1954);
+emit_16(1889);
+emit_16(1954);
+emit_16(1890);
+emit_16(1955);
+emit_16(1891);
+emit_16(1955);
+emit_16(1890);
+emit_16(1955);
+emit_16(1891);
+emit_16(1956);
+emit_16(1892);
+emit_16(1956);
+emit_16(1891);
+emit_16(1956);
+emit_16(1892);
+emit_16(1957);
+emit_16(1893);
+emit_16(1957);
+emit_16(1892);
+emit_16(1957);
+emit_16(1893);
+emit_16(1958);
+emit_16(1894);
+emit_16(1958);
+emit_16(1893);
+emit_16(1958);
+emit_16(1894);
+emit_16(1959);
+emit_16(1895);
+emit_16(1959);
+emit_16(1894);
+emit_16(1959);
+emit_16(1895);
+emit_16(1960);
+emit_16(1896);
+emit_16(1960);
+emit_16(1895);
+emit_16(1960);
+emit_16(1896);
+emit_16(1961);
+emit_16(1897);
+emit_16(1961);
+emit_16(1896);
+emit_16(1961);
+emit_16(1897);
+emit_16(1962);
+emit_16(1898);
+emit_16(1962);
+emit_16(1897);
+emit_16(1962);
+emit_16(1898);
+emit_16(1963);
+emit_16(1899);
+emit_16(1963);
+emit_16(1898);
+emit_16(1963);
+emit_16(1899);
+emit_16(1964);
+emit_16(1900);
+emit_16(1964);
+emit_16(1899);
+emit_16(1964);
+emit_16(1900);
+emit_16(1965);
+emit_16(1901);
+emit_16(1965);
+emit_16(1900);
+emit_16(1965);
+emit_16(1901);
+emit_16(1966);
+emit_16(1902);
+emit_16(1966);
+emit_16(1901);
+emit_16(1966);
+emit_16(1902);
+emit_16(1967);
+emit_16(1903);
+emit_16(1967);
+emit_16(1902);
+emit_16(1967);
+emit_16(1903);
+emit_16(1968);
+emit_16(1904);
+emit_16(1968);
+emit_16(1903);
+emit_16(1968);
+emit_16(1904);
+emit_16(1969);
+emit_16(1905);
+emit_16(1969);
+emit_16(1904);
+emit_16(1969);
+emit_16(1905);
+emit_16(1970);
+emit_16(1906);
+emit_16(1970);
+emit_16(1905);
+emit_16(1970);
+emit_16(1906);
+emit_16(1971);
+emit_16(1907);
+emit_16(1971);
+emit_16(1906);
+emit_16(1971);
+emit_16(1907);
+emit_16(1972);
+emit_16(1908);
+emit_16(1972);
+emit_16(1907);
+emit_16(1972);
+emit_16(1908);
+emit_16(1973);
+emit_16(1909);
+emit_16(1973);
+emit_16(1908);
+emit_16(1973);
+emit_16(1909);
+emit_16(1974);
+emit_16(1910);
+emit_16(1974);
+emit_16(1909);
+emit_16(1974);
+emit_16(1910);
+emit_16(1975);
+emit_16(1911);
+emit_16(1975);
+emit_16(1910);
+emit_16(1975);
+emit_16(1911);
+emit_16(1976);
+emit_16(1912);
+emit_16(1976);
+emit_16(1911);
+emit_16(1976);
+emit_16(1912);
+emit_16(1977);
+emit_16(1913);
+emit_16(1977);
+emit_16(1912);
+emit_16(1977);
+emit_16(1913);
+emit_16(1978);
+emit_16(1914);
+emit_16(1978);
+emit_16(1913);
+emit_16(1978);
+emit_16(1914);
+emit_16(1979);
+emit_16(1915);
+emit_16(1979);
+emit_16(1914);
+emit_16(1979);
+emit_16(1915);
+emit_16(1980);
+emit_16(1916);
+emit_16(1980);
+emit_16(1915);
+emit_16(1980);
+emit_16(1916);
+emit_16(1981);
+emit_16(1917);
+emit_16(1981);
+emit_16(1916);
+emit_16(1981);
+emit_16(1917);
+emit_16(1982);
+emit_16(1918);
+emit_16(1982);
+emit_16(1917);
+emit_16(1982);
+emit_16(1918);
+emit_16(1983);
+emit_16(1919);
+emit_16(1983);
+emit_16(1918);
+emit_16(1984);
+emit_16(1920);
+emit_16(1985);
+emit_16(1921);
+emit_16(1985);
+emit_16(1920);
+emit_16(1985);
+emit_16(1921);
+emit_16(1986);
+emit_16(1922);
+emit_16(1986);
+emit_16(1921);
+emit_16(1986);
+emit_16(1922);
+emit_16(1987);
+emit_16(1923);
+emit_16(1987);
+emit_16(1922);
+emit_16(1987);
+emit_16(1923);
+emit_16(1988);
+emit_16(1924);
+emit_16(1988);
+emit_16(1923);
+emit_16(1988);
+emit_16(1924);
+emit_16(1989);
+emit_16(1925);
+emit_16(1989);
+emit_16(1924);
+emit_16(1989);
+emit_16(1925);
+emit_16(1990);
+emit_16(1926);
+emit_16(1990);
+emit_16(1925);
+emit_16(1990);
+emit_16(1926);
+emit_16(1991);
+emit_16(1927);
+emit_16(1991);
+emit_16(1926);
+emit_16(1991);
+emit_16(1927);
+emit_16(1992);
+emit_16(1928);
+emit_16(1992);
+emit_16(1927);
+emit_16(1992);
+emit_16(1928);
+emit_16(1993);
+emit_16(1929);
+emit_16(1993);
+emit_16(1928);
+emit_16(1993);
+emit_16(1929);
+emit_16(1994);
+emit_16(1930);
+emit_16(1994);
+emit_16(1929);
+emit_16(1994);
+emit_16(1930);
+emit_16(1995);
+emit_16(1931);
+emit_16(1995);
+emit_16(1930);
+emit_16(1995);
+emit_16(1931);
+emit_16(1996);
+emit_16(1932);
+emit_16(1996);
+emit_16(1931);
+emit_16(1996);
+emit_16(1932);
+emit_16(1997);
+emit_16(1933);
+emit_16(1997);
+emit_16(1932);
+emit_16(1997);
+emit_16(1933);
+emit_16(1998);
+emit_16(1934);
+emit_16(1998);
+emit_16(1933);
+emit_16(1998);
+emit_16(1934);
+emit_16(1999);
+emit_16(1935);
+emit_16(1999);
+emit_16(1934);
+emit_16(1999);
+emit_16(1935);
+emit_16(2000);
+emit_16(1936);
+emit_16(2000);
+emit_16(1935);
+emit_16(2000);
+emit_16(1936);
+emit_16(2001);
+emit_16(1937);
+emit_16(2001);
+emit_16(1936);
+emit_16(2001);
+emit_16(1937);
+emit_16(2002);
+emit_16(1938);
+emit_16(2002);
+emit_16(1937);
+emit_16(2002);
+emit_16(1938);
+emit_16(2003);
+emit_16(1939);
+emit_16(2003);
+emit_16(1938);
+emit_16(2003);
+emit_16(1939);
+emit_16(2004);
+emit_16(1940);
+emit_16(2004);
+emit_16(1939);
+emit_16(2004);
+emit_16(1940);
+emit_16(2005);
+emit_16(1941);
+emit_16(2005);
+emit_16(1940);
+emit_16(2005);
+emit_16(1941);
+emit_16(2006);
+emit_16(1942);
+emit_16(2006);
+emit_16(1941);
+emit_16(2006);
+emit_16(1942);
+emit_16(2007);
+emit_16(1943);
+emit_16(2007);
+emit_16(1942);
+emit_16(2007);
+emit_16(1943);
+emit_16(2008);
+emit_16(1944);
+emit_16(2008);
+emit_16(1943);
+emit_16(2008);
+emit_16(1944);
+emit_16(2009);
+emit_16(1945);
+emit_16(2009);
+emit_16(1944);
+emit_16(2009);
+emit_16(1945);
+emit_16(2010);
+emit_16(1946);
+emit_16(2010);
+emit_16(1945);
+emit_16(2010);
+emit_16(1946);
+emit_16(2011);
+emit_16(1947);
+emit_16(2011);
+emit_16(1946);
+emit_16(2011);
+emit_16(1947);
+emit_16(2012);
+emit_16(1948);
+emit_16(2012);
+emit_16(1947);
+emit_16(2012);
+emit_16(1948);
+emit_16(2013);
+emit_16(1949);
+emit_16(2013);
+emit_16(1948);
+emit_16(2013);
+emit_16(1949);
+emit_16(2014);
+emit_16(1950);
+emit_16(2014);
+emit_16(1949);
+emit_16(2014);
+emit_16(1950);
+emit_16(2015);
+emit_16(1951);
+emit_16(2015);
+emit_16(1950);
+emit_16(2015);
+emit_16(1951);
+emit_16(2016);
+emit_16(1952);
+emit_16(2016);
+emit_16(1951);
+emit_16(2016);
+emit_16(1952);
+emit_16(2017);
+emit_16(1953);
+emit_16(2017);
+emit_16(1952);
+emit_16(2017);
+emit_16(1953);
+emit_16(2018);
+emit_16(1954);
+emit_16(2018);
+emit_16(1953);
+emit_16(2018);
+emit_16(1954);
+emit_16(2019);
+emit_16(1955);
+emit_16(2019);
+emit_16(1954);
+emit_16(2019);
+emit_16(1955);
+emit_16(2020);
+emit_16(1956);
+emit_16(2020);
+emit_16(1955);
+emit_16(2020);
+emit_16(1956);
+emit_16(2021);
+emit_16(1957);
+emit_16(2021);
+emit_16(1956);
+emit_16(2021);
+emit_16(1957);
+emit_16(2022);
+emit_16(1958);
+emit_16(2022);
+emit_16(1957);
+emit_16(2022);
+emit_16(1958);
+emit_16(2023);
+emit_16(1959);
+emit_16(2023);
+emit_16(1958);
+emit_16(2023);
+emit_16(1959);
+emit_16(2024);
+emit_16(1960);
+emit_16(2024);
+emit_16(1959);
+emit_16(2024);
+emit_16(1960);
+emit_16(2025);
+emit_16(1961);
+emit_16(2025);
+emit_16(1960);
+emit_16(2025);
+emit_16(1961);
+emit_16(2026);
+emit_16(1962);
+emit_16(2026);
+emit_16(1961);
+emit_16(2026);
+emit_16(1962);
+emit_16(2027);
+emit_16(1963);
+emit_16(2027);
+emit_16(1962);
+emit_16(2027);
+emit_16(1963);
+emit_16(2028);
+emit_16(1964);
+emit_16(2028);
+emit_16(1963);
+emit_16(2028);
+emit_16(1964);
+emit_16(2029);
+emit_16(1965);
+emit_16(2029);
+emit_16(1964);
+emit_16(2029);
+emit_16(1965);
+emit_16(2030);
+emit_16(1966);
+emit_16(2030);
+emit_16(1965);
+emit_16(2030);
+emit_16(1966);
+emit_16(2031);
+emit_16(1967);
+emit_16(2031);
+emit_16(1966);
+emit_16(2031);
+emit_16(1967);
+emit_16(2032);
+emit_16(1968);
+emit_16(2032);
+emit_16(1967);
+emit_16(2032);
+emit_16(1968);
+emit_16(2033);
+emit_16(1969);
+emit_16(2033);
+emit_16(1968);
+emit_16(2033);
+emit_16(1969);
+emit_16(2034);
+emit_16(1970);
+emit_16(2034);
+emit_16(1969);
+emit_16(2034);
+emit_16(1970);
+emit_16(2035);
+emit_16(1971);
+emit_16(2035);
+emit_16(1970);
+emit_16(2035);
+emit_16(1971);
+emit_16(2036);
+emit_16(1972);
+emit_16(2036);
+emit_16(1971);
+emit_16(2036);
+emit_16(1972);
+emit_16(2037);
+emit_16(1973);
+emit_16(2037);
+emit_16(1972);
+emit_16(2037);
+emit_16(1973);
+emit_16(2038);
+emit_16(1974);
+emit_16(2038);
+emit_16(1973);
+emit_16(2038);
+emit_16(1974);
+emit_16(2039);
+emit_16(1975);
+emit_16(2039);
+emit_16(1974);
+emit_16(2039);
+emit_16(1975);
+emit_16(2040);
+emit_16(1976);
+emit_16(2040);
+emit_16(1975);
+emit_16(2040);
+emit_16(1976);
+emit_16(2041);
+emit_16(1977);
+emit_16(2041);
+emit_16(1976);
+emit_16(2041);
+emit_16(1977);
+emit_16(2042);
+emit_16(1978);
+emit_16(2042);
+emit_16(1977);
+emit_16(2042);
+emit_16(1978);
+emit_16(2043);
+emit_16(1979);
+emit_16(2043);
+emit_16(1978);
+emit_16(2043);
+emit_16(1979);
+emit_16(2044);
+emit_16(1980);
+emit_16(2044);
+emit_16(1979);
+emit_16(2044);
+emit_16(1980);
+emit_16(2045);
+emit_16(1981);
+emit_16(2045);
+emit_16(1980);
+emit_16(2045);
+emit_16(1981);
+emit_16(2046);
+emit_16(1982);
+emit_16(2046);
+emit_16(1981);
+emit_16(2046);
+emit_16(1982);
+emit_16(2047);
+emit_16(1983);
+emit_16(2047);
+emit_16(1982);
+emit_16(2048);
+emit_16(1984);
+emit_16(2049);
+emit_16(1985);
+emit_16(2049);
+emit_16(1984);
+emit_16(2049);
+emit_16(1985);
+emit_16(2050);
+emit_16(1986);
+emit_16(2050);
+emit_16(1985);
+emit_16(2050);
+emit_16(1986);
+emit_16(2051);
+emit_16(1987);
+emit_16(2051);
+emit_16(1986);
+emit_16(2051);
+emit_16(1987);
+emit_16(2052);
+emit_16(1988);
+emit_16(2052);
+emit_16(1987);
+emit_16(2052);
+emit_16(1988);
+emit_16(2053);
+emit_16(1989);
+emit_16(2053);
+emit_16(1988);
+emit_16(2053);
+emit_16(1989);
+emit_16(2054);
+emit_16(1990);
+emit_16(2054);
+emit_16(1989);
+emit_16(2054);
+emit_16(1990);
+emit_16(2055);
+emit_16(1991);
+emit_16(2055);
+emit_16(1990);
+emit_16(2055);
+emit_16(1991);
+emit_16(2056);
+emit_16(1992);
+emit_16(2056);
+emit_16(1991);
+emit_16(2056);
+emit_16(1992);
+emit_16(2057);
+emit_16(1993);
+emit_16(2057);
+emit_16(1992);
+emit_16(2057);
+emit_16(1993);
+emit_16(2058);
+emit_16(1994);
+emit_16(2058);
+emit_16(1993);
+emit_16(2058);
+emit_16(1994);
+emit_16(2059);
+emit_16(1995);
+emit_16(2059);
+emit_16(1994);
+emit_16(2059);
+emit_16(1995);
+emit_16(2060);
+emit_16(1996);
+emit_16(2060);
+emit_16(1995);
+emit_16(2060);
+emit_16(1996);
+emit_16(2061);
+emit_16(1997);
+emit_16(2061);
+emit_16(1996);
+emit_16(2061);
+emit_16(1997);
+emit_16(2062);
+emit_16(1998);
+emit_16(2062);
+emit_16(1997);
+emit_16(2062);
+emit_16(1998);
+emit_16(2063);
+emit_16(1999);
+emit_16(2063);
+emit_16(1998);
+emit_16(2063);
+emit_16(1999);
+emit_16(2064);
+emit_16(2000);
+emit_16(2064);
+emit_16(1999);
+emit_16(2064);
+emit_16(2000);
+emit_16(2065);
+emit_16(2001);
+emit_16(2065);
+emit_16(2000);
+emit_16(2065);
+emit_16(2001);
+emit_16(2066);
+emit_16(2002);
+emit_16(2066);
+emit_16(2001);
+emit_16(2066);
+emit_16(2002);
+emit_16(2067);
+emit_16(2003);
+emit_16(2067);
+emit_16(2002);
+emit_16(2067);
+emit_16(2003);
+emit_16(2068);
+emit_16(2004);
+emit_16(2068);
+emit_16(2003);
+emit_16(2068);
+emit_16(2004);
+emit_16(2069);
+emit_16(2005);
+emit_16(2069);
+emit_16(2004);
+emit_16(2069);
+emit_16(2005);
+emit_16(2070);
+emit_16(2006);
+emit_16(2070);
+emit_16(2005);
+emit_16(2070);
+emit_16(2006);
+emit_16(2071);
+emit_16(2007);
+emit_16(2071);
+emit_16(2006);
+emit_16(2071);
+emit_16(2007);
+emit_16(2072);
+emit_16(2008);
+emit_16(2072);
+emit_16(2007);
+emit_16(2072);
+emit_16(2008);
+emit_16(2073);
+emit_16(2009);
+emit_16(2073);
+emit_16(2008);
+emit_16(2073);
+emit_16(2009);
+emit_16(2074);
+emit_16(2010);
+emit_16(2074);
+emit_16(2009);
+emit_16(2074);
+emit_16(2010);
+emit_16(2075);
+emit_16(2011);
+emit_16(2075);
+emit_16(2010);
+emit_16(2075);
+emit_16(2011);
+emit_16(2076);
+emit_16(2012);
+emit_16(2076);
+emit_16(2011);
+emit_16(2076);
+emit_16(2012);
+emit_16(2077);
+emit_16(2013);
+emit_16(2077);
+emit_16(2012);
+emit_16(2077);
+emit_16(2013);
+emit_16(2078);
+emit_16(2014);
+emit_16(2078);
+emit_16(2013);
+emit_16(2078);
+emit_16(2014);
+emit_16(2079);
+emit_16(2015);
+emit_16(2079);
+emit_16(2014);
+emit_16(2079);
+emit_16(2015);
+emit_16(2080);
+emit_16(2016);
+emit_16(2080);
+emit_16(2015);
+emit_16(2080);
+emit_16(2016);
+emit_16(2081);
+emit_16(2017);
+emit_16(2081);
+emit_16(2016);
+emit_16(2081);
+emit_16(2017);
+emit_16(2082);
+emit_16(2018);
+emit_16(2082);
+emit_16(2017);
+emit_16(2082);
+emit_16(2018);
+emit_16(2083);
+emit_16(2019);
+emit_16(2083);
+emit_16(2018);
+emit_16(2083);
+emit_16(2019);
+emit_16(2084);
+emit_16(2020);
+emit_16(2084);
+emit_16(2019);
+emit_16(2084);
+emit_16(2020);
+emit_16(2085);
+emit_16(2021);
+emit_16(2085);
+emit_16(2020);
+emit_16(2085);
+emit_16(2021);
+emit_16(2086);
+emit_16(2022);
+emit_16(2086);
+emit_16(2021);
+emit_16(2086);
+emit_16(2022);
+emit_16(2087);
+emit_16(2023);
+emit_16(2087);
+emit_16(2022);
+emit_16(2087);
+emit_16(2023);
+emit_16(2088);
+emit_16(2024);
+emit_16(2088);
+emit_16(2023);
+emit_16(2088);
+emit_16(2024);
+emit_16(2089);
+emit_16(2025);
+emit_16(2089);
+emit_16(2024);
+emit_16(2089);
+emit_16(2025);
+emit_16(2090);
+emit_16(2026);
+emit_16(2090);
+emit_16(2025);
+emit_16(2090);
+emit_16(2026);
+emit_16(2091);
+emit_16(2027);
+emit_16(2091);
+emit_16(2026);
+emit_16(2091);
+emit_16(2027);
+emit_16(2092);
+emit_16(2028);
+emit_16(2092);
+emit_16(2027);
+emit_16(2092);
+emit_16(2028);
+emit_16(2093);
+emit_16(2029);
+emit_16(2093);
+emit_16(2028);
+emit_16(2093);
+emit_16(2029);
+emit_16(2094);
+emit_16(2030);
+emit_16(2094);
+emit_16(2029);
+emit_16(2094);
+emit_16(2030);
+emit_16(2095);
+emit_16(2031);
+emit_16(2095);
+emit_16(2030);
+emit_16(2095);
+emit_16(2031);
+emit_16(2096);
+emit_16(2032);
+emit_16(2096);
+emit_16(2031);
+emit_16(2096);
+emit_16(2032);
+emit_16(2097);
+emit_16(2033);
+emit_16(2097);
+emit_16(2032);
+emit_16(2097);
+emit_16(2033);
+emit_16(2098);
+emit_16(2034);
+emit_16(2098);
+emit_16(2033);
+emit_16(2098);
+emit_16(2034);
+emit_16(2099);
+emit_16(2035);
+emit_16(2099);
+emit_16(2034);
+emit_16(2099);
+emit_16(2035);
+emit_16(2100);
+emit_16(2036);
+emit_16(2100);
+emit_16(2035);
+emit_16(2100);
+emit_16(2036);
+emit_16(2101);
+emit_16(2037);
+emit_16(2101);
+emit_16(2036);
+emit_16(2101);
+emit_16(2037);
+emit_16(2102);
+emit_16(2038);
+emit_16(2102);
+emit_16(2037);
+emit_16(2102);
+emit_16(2038);
+emit_16(2103);
+emit_16(2039);
+emit_16(2103);
+emit_16(2038);
+emit_16(2103);
+emit_16(2039);
+emit_16(2104);
+emit_16(2040);
+emit_16(2104);
+emit_16(2039);
+emit_16(2104);
+emit_16(2040);
+emit_16(2105);
+emit_16(2041);
+emit_16(2105);
+emit_16(2040);
+emit_16(2105);
+emit_16(2041);
+emit_16(2106);
+emit_16(2042);
+emit_16(2106);
+emit_16(2041);
+emit_16(2106);
+emit_16(2042);
+emit_16(2107);
+emit_16(2043);
+emit_16(2107);
+emit_16(2042);
+emit_16(2107);
+emit_16(2043);
+emit_16(2108);
+emit_16(2044);
+emit_16(2108);
+emit_16(2043);
+emit_16(2108);
+emit_16(2044);
+emit_16(2109);
+emit_16(2045);
+emit_16(2109);
+emit_16(2044);
+emit_16(2109);
+emit_16(2045);
+emit_16(2110);
+emit_16(2046);
+emit_16(2110);
+emit_16(2045);
+emit_16(2110);
+emit_16(2046);
+emit_16(2111);
+emit_16(2047);
+emit_16(2111);
+emit_16(2046);
+emit_16(2112);
+emit_16(2048);
+emit_16(2113);
+emit_16(2049);
+emit_16(2113);
+emit_16(2048);
+emit_16(2113);
+emit_16(2049);
+emit_16(2114);
+emit_16(2050);
+emit_16(2114);
+emit_16(2049);
+emit_16(2114);
+emit_16(2050);
+emit_16(2115);
+emit_16(2051);
+emit_16(2115);
+emit_16(2050);
+emit_16(2115);
+emit_16(2051);
+emit_16(2116);
+emit_16(2052);
+emit_16(2116);
+emit_16(2051);
+emit_16(2116);
+emit_16(2052);
+emit_16(2117);
+emit_16(2053);
+emit_16(2117);
+emit_16(2052);
+emit_16(2117);
+emit_16(2053);
+emit_16(2118);
+emit_16(2054);
+emit_16(2118);
+emit_16(2053);
+emit_16(2118);
+emit_16(2054);
+emit_16(2119);
+emit_16(2055);
+emit_16(2119);
+emit_16(2054);
+emit_16(2119);
+emit_16(2055);
+emit_16(2120);
+emit_16(2056);
+emit_16(2120);
+emit_16(2055);
+emit_16(2120);
+emit_16(2056);
+emit_16(2121);
+emit_16(2057);
+emit_16(2121);
+emit_16(2056);
+emit_16(2121);
+emit_16(2057);
+emit_16(2122);
+emit_16(2058);
+emit_16(2122);
+emit_16(2057);
+emit_16(2122);
+emit_16(2058);
+emit_16(2123);
+emit_16(2059);
+emit_16(2123);
+emit_16(2058);
+emit_16(2123);
+emit_16(2059);
+emit_16(2124);
+emit_16(2060);
+emit_16(2124);
+emit_16(2059);
+emit_16(2124);
+emit_16(2060);
+emit_16(2125);
+emit_16(2061);
+emit_16(2125);
+emit_16(2060);
+emit_16(2125);
+emit_16(2061);
+emit_16(2126);
+emit_16(2062);
+emit_16(2126);
+emit_16(2061);
+emit_16(2126);
+emit_16(2062);
+emit_16(2127);
+emit_16(2063);
+emit_16(2127);
+emit_16(2062);
+emit_16(2127);
+emit_16(2063);
+emit_16(2128);
+emit_16(2064);
+emit_16(2128);
+emit_16(2063);
+emit_16(2128);
+emit_16(2064);
+emit_16(2129);
+emit_16(2065);
+emit_16(2129);
+emit_16(2064);
+emit_16(2129);
+emit_16(2065);
+emit_16(2130);
+emit_16(2066);
+emit_16(2130);
+emit_16(2065);
+emit_16(2130);
+emit_16(2066);
+emit_16(2131);
+emit_16(2067);
+emit_16(2131);
+emit_16(2066);
+emit_16(2131);
+emit_16(2067);
+emit_16(2132);
+emit_16(2068);
+emit_16(2132);
+emit_16(2067);
+emit_16(2132);
+emit_16(2068);
+emit_16(2133);
+emit_16(2069);
+emit_16(2133);
+emit_16(2068);
+emit_16(2133);
+emit_16(2069);
+emit_16(2134);
+emit_16(2070);
+emit_16(2134);
+emit_16(2069);
+emit_16(2134);
+emit_16(2070);
+emit_16(2135);
+emit_16(2071);
+emit_16(2135);
+emit_16(2070);
+emit_16(2135);
+emit_16(2071);
+emit_16(2136);
+emit_16(2072);
+emit_16(2136);
+emit_16(2071);
+emit_16(2136);
+emit_16(2072);
+emit_16(2137);
+emit_16(2073);
+emit_16(2137);
+emit_16(2072);
+emit_16(2137);
+emit_16(2073);
+emit_16(2138);
+emit_16(2074);
+emit_16(2138);
+emit_16(2073);
+emit_16(2138);
+emit_16(2074);
+emit_16(2139);
+emit_16(2075);
+emit_16(2139);
+emit_16(2074);
+emit_16(2139);
+emit_16(2075);
+emit_16(2140);
+emit_16(2076);
+emit_16(2140);
+emit_16(2075);
+emit_16(2140);
+emit_16(2076);
+emit_16(2141);
+emit_16(2077);
+emit_16(2141);
+emit_16(2076);
+emit_16(2141);
+emit_16(2077);
+emit_16(2142);
+emit_16(2078);
+emit_16(2142);
+emit_16(2077);
+emit_16(2142);
+emit_16(2078);
+emit_16(2143);
+emit_16(2079);
+emit_16(2143);
+emit_16(2078);
+emit_16(2143);
+emit_16(2079);
+emit_16(2144);
+emit_16(2080);
+emit_16(2144);
+emit_16(2079);
+emit_16(2144);
+emit_16(2080);
+emit_16(2145);
+emit_16(2081);
+emit_16(2145);
+emit_16(2080);
+emit_16(2145);
+emit_16(2081);
+emit_16(2146);
+emit_16(2082);
+emit_16(2146);
+emit_16(2081);
+emit_16(2146);
+emit_16(2082);
+emit_16(2147);
+emit_16(2083);
+emit_16(2147);
+emit_16(2082);
+emit_16(2147);
+emit_16(2083);
+emit_16(2148);
+emit_16(2084);
+emit_16(2148);
+emit_16(2083);
+emit_16(2148);
+emit_16(2084);
+emit_16(2149);
+emit_16(2085);
+emit_16(2149);
+emit_16(2084);
+emit_16(2149);
+emit_16(2085);
+emit_16(2150);
+emit_16(2086);
+emit_16(2150);
+emit_16(2085);
+emit_16(2150);
+emit_16(2086);
+emit_16(2151);
+emit_16(2087);
+emit_16(2151);
+emit_16(2086);
+emit_16(2151);
+emit_16(2087);
+emit_16(2152);
+emit_16(2088);
+emit_16(2152);
+emit_16(2087);
+emit_16(2152);
+emit_16(2088);
+emit_16(2153);
+emit_16(2089);
+emit_16(2153);
+emit_16(2088);
+emit_16(2153);
+emit_16(2089);
+emit_16(2154);
+emit_16(2090);
+emit_16(2154);
+emit_16(2089);
+emit_16(2154);
+emit_16(2090);
+emit_16(2155);
+emit_16(2091);
+emit_16(2155);
+emit_16(2090);
+emit_16(2155);
+emit_16(2091);
+emit_16(2156);
+emit_16(2092);
+emit_16(2156);
+emit_16(2091);
+emit_16(2156);
+emit_16(2092);
+emit_16(2157);
+emit_16(2093);
+emit_16(2157);
+emit_16(2092);
+emit_16(2157);
+emit_16(2093);
+emit_16(2158);
+emit_16(2094);
+emit_16(2158);
+emit_16(2093);
+emit_16(2158);
+emit_16(2094);
+emit_16(2159);
+emit_16(2095);
+emit_16(2159);
+emit_16(2094);
+emit_16(2159);
+emit_16(2095);
+emit_16(2160);
+emit_16(2096);
+emit_16(2160);
+emit_16(2095);
+emit_16(2160);
+emit_16(2096);
+emit_16(2161);
+emit_16(2097);
+emit_16(2161);
+emit_16(2096);
+emit_16(2161);
+emit_16(2097);
+emit_16(2162);
+emit_16(2098);
+emit_16(2162);
+emit_16(2097);
+emit_16(2162);
+emit_16(2098);
+emit_16(2163);
+emit_16(2099);
+emit_16(2163);
+emit_16(2098);
+emit_16(2163);
+emit_16(2099);
+emit_16(2164);
+emit_16(2100);
+emit_16(2164);
+emit_16(2099);
+emit_16(2164);
+emit_16(2100);
+emit_16(2165);
+emit_16(2101);
+emit_16(2165);
+emit_16(2100);
+emit_16(2165);
+emit_16(2101);
+emit_16(2166);
+emit_16(2102);
+emit_16(2166);
+emit_16(2101);
+emit_16(2166);
+emit_16(2102);
+emit_16(2167);
+emit_16(2103);
+emit_16(2167);
+emit_16(2102);
+emit_16(2167);
+emit_16(2103);
+emit_16(2168);
+emit_16(2104);
+emit_16(2168);
+emit_16(2103);
+emit_16(2168);
+emit_16(2104);
+emit_16(2169);
+emit_16(2105);
+emit_16(2169);
+emit_16(2104);
+emit_16(2169);
+emit_16(2105);
+emit_16(2170);
+emit_16(2106);
+emit_16(2170);
+emit_16(2105);
+emit_16(2170);
+emit_16(2106);
+emit_16(2171);
+emit_16(2107);
+emit_16(2171);
+emit_16(2106);
+emit_16(2171);
+emit_16(2107);
+emit_16(2172);
+emit_16(2108);
+emit_16(2172);
+emit_16(2107);
+emit_16(2172);
+emit_16(2108);
+emit_16(2173);
+emit_16(2109);
+emit_16(2173);
+emit_16(2108);
+emit_16(2173);
+emit_16(2109);
+emit_16(2174);
+emit_16(2110);
+emit_16(2174);
+emit_16(2109);
+emit_16(2174);
+emit_16(2110);
+emit_16(2175);
+emit_16(2111);
+emit_16(2175);
+emit_16(2110);
+emit_16(2176);
+emit_16(2112);
+emit_16(2177);
+emit_16(2113);
+emit_16(2177);
+emit_16(2112);
+emit_16(2177);
+emit_16(2113);
+emit_16(2178);
+emit_16(2114);
+emit_16(2178);
+emit_16(2113);
+emit_16(2178);
+emit_16(2114);
+emit_16(2179);
+emit_16(2115);
+emit_16(2179);
+emit_16(2114);
+emit_16(2179);
+emit_16(2115);
+emit_16(2180);
+emit_16(2116);
+emit_16(2180);
+emit_16(2115);
+emit_16(2180);
+emit_16(2116);
+emit_16(2181);
+emit_16(2117);
+emit_16(2181);
+emit_16(2116);
+emit_16(2181);
+emit_16(2117);
+emit_16(2182);
+emit_16(2118);
+emit_16(2182);
+emit_16(2117);
+emit_16(2182);
+emit_16(2118);
+emit_16(2183);
+emit_16(2119);
+emit_16(2183);
+emit_16(2118);
+emit_16(2183);
+emit_16(2119);
+emit_16(2184);
+emit_16(2120);
+emit_16(2184);
+emit_16(2119);
+emit_16(2184);
+emit_16(2120);
+emit_16(2185);
+emit_16(2121);
+emit_16(2185);
+emit_16(2120);
+emit_16(2185);
+emit_16(2121);
+emit_16(2186);
+emit_16(2122);
+emit_16(2186);
+emit_16(2121);
+emit_16(2186);
+emit_16(2122);
+emit_16(2187);
+emit_16(2123);
+emit_16(2187);
+emit_16(2122);
+emit_16(2187);
+emit_16(2123);
+emit_16(2188);
+emit_16(2124);
+emit_16(2188);
+emit_16(2123);
+emit_16(2188);
+emit_16(2124);
+emit_16(2189);
+emit_16(2125);
+emit_16(2189);
+emit_16(2124);
+emit_16(2189);
+emit_16(2125);
+emit_16(2190);
+emit_16(2126);
+emit_16(2190);
+emit_16(2125);
+emit_16(2190);
+emit_16(2126);
+emit_16(2191);
+emit_16(2127);
+emit_16(2191);
+emit_16(2126);
+emit_16(2191);
+emit_16(2127);
+emit_16(2192);
+emit_16(2128);
+emit_16(2192);
+emit_16(2127);
+emit_16(2192);
+emit_16(2128);
+emit_16(2193);
+emit_16(2129);
+emit_16(2193);
+emit_16(2128);
+emit_16(2193);
+emit_16(2129);
+emit_16(2194);
+emit_16(2130);
+emit_16(2194);
+emit_16(2129);
+emit_16(2194);
+emit_16(2130);
+emit_16(2195);
+emit_16(2131);
+emit_16(2195);
+emit_16(2130);
+emit_16(2195);
+emit_16(2131);
+emit_16(2196);
+emit_16(2132);
+emit_16(2196);
+emit_16(2131);
+emit_16(2196);
+emit_16(2132);
+emit_16(2197);
+emit_16(2133);
+emit_16(2197);
+emit_16(2132);
+emit_16(2197);
+emit_16(2133);
+emit_16(2198);
+emit_16(2134);
+emit_16(2198);
+emit_16(2133);
+emit_16(2198);
+emit_16(2134);
+emit_16(2199);
+emit_16(2135);
+emit_16(2199);
+emit_16(2134);
+emit_16(2199);
+emit_16(2135);
+emit_16(2200);
+emit_16(2136);
+emit_16(2200);
+emit_16(2135);
+emit_16(2200);
+emit_16(2136);
+emit_16(2201);
+emit_16(2137);
+emit_16(2201);
+emit_16(2136);
+emit_16(2201);
+emit_16(2137);
+emit_16(2202);
+emit_16(2138);
+emit_16(2202);
+emit_16(2137);
+emit_16(2202);
+emit_16(2138);
+emit_16(2203);
+emit_16(2139);
+emit_16(2203);
+emit_16(2138);
+emit_16(2203);
+emit_16(2139);
+emit_16(2204);
+emit_16(2140);
+emit_16(2204);
+emit_16(2139);
+emit_16(2204);
+emit_16(2140);
+emit_16(2205);
+emit_16(2141);
+emit_16(2205);
+emit_16(2140);
+emit_16(2205);
+emit_16(2141);
+emit_16(2206);
+emit_16(2142);
+emit_16(2206);
+emit_16(2141);
+emit_16(2206);
+emit_16(2142);
+emit_16(2207);
+emit_16(2143);
+emit_16(2207);
+emit_16(2142);
+emit_16(2207);
+emit_16(2143);
+emit_16(2208);
+emit_16(2144);
+emit_16(2208);
+emit_16(2143);
+emit_16(2208);
+emit_16(2144);
+emit_16(2209);
+emit_16(2145);
+emit_16(2209);
+emit_16(2144);
+emit_16(2209);
+emit_16(2145);
+emit_16(2210);
+emit_16(2146);
+emit_16(2210);
+emit_16(2145);
+emit_16(2210);
+emit_16(2146);
+emit_16(2211);
+emit_16(2147);
+emit_16(2211);
+emit_16(2146);
+emit_16(2211);
+emit_16(2147);
+emit_16(2212);
+emit_16(2148);
+emit_16(2212);
+emit_16(2147);
+emit_16(2212);
+emit_16(2148);
+emit_16(2213);
+emit_16(2149);
+emit_16(2213);
+emit_16(2148);
+emit_16(2213);
+emit_16(2149);
+emit_16(2214);
+emit_16(2150);
+emit_16(2214);
+emit_16(2149);
+emit_16(2214);
+emit_16(2150);
+emit_16(2215);
+emit_16(2151);
+emit_16(2215);
+emit_16(2150);
+emit_16(2215);
+emit_16(2151);
+emit_16(2216);
+emit_16(2152);
+emit_16(2216);
+emit_16(2151);
+emit_16(2216);
+emit_16(2152);
+emit_16(2217);
+emit_16(2153);
+emit_16(2217);
+emit_16(2152);
+emit_16(2217);
+emit_16(2153);
+emit_16(2218);
+emit_16(2154);
+emit_16(2218);
+emit_16(2153);
+emit_16(2218);
+emit_16(2154);
+emit_16(2219);
+emit_16(2155);
+emit_16(2219);
+emit_16(2154);
+emit_16(2219);
+emit_16(2155);
+emit_16(2220);
+emit_16(2156);
+emit_16(2220);
+emit_16(2155);
+emit_16(2220);
+emit_16(2156);
+emit_16(2221);
+emit_16(2157);
+emit_16(2221);
+emit_16(2156);
+emit_16(2221);
+emit_16(2157);
+emit_16(2222);
+emit_16(2158);
+emit_16(2222);
+emit_16(2157);
+emit_16(2222);
+emit_16(2158);
+emit_16(2223);
+emit_16(2159);
+emit_16(2223);
+emit_16(2158);
+emit_16(2223);
+emit_16(2159);
+emit_16(2224);
+emit_16(2160);
+emit_16(2224);
+emit_16(2159);
+emit_16(2224);
+emit_16(2160);
+emit_16(2225);
+emit_16(2161);
+emit_16(2225);
+emit_16(2160);
+emit_16(2225);
+emit_16(2161);
+emit_16(2226);
+emit_16(2162);
+emit_16(2226);
+emit_16(2161);
+emit_16(2226);
+emit_16(2162);
+emit_16(2227);
+emit_16(2163);
+emit_16(2227);
+emit_16(2162);
+emit_16(2227);
+emit_16(2163);
+emit_16(2228);
+emit_16(2164);
+emit_16(2228);
+emit_16(2163);
+emit_16(2228);
+emit_16(2164);
+emit_16(2229);
+emit_16(2165);
+emit_16(2229);
+emit_16(2164);
+emit_16(2229);
+emit_16(2165);
+emit_16(2230);
+emit_16(2166);
+emit_16(2230);
+emit_16(2165);
+emit_16(2230);
+emit_16(2166);
+emit_16(2231);
+emit_16(2167);
+emit_16(2231);
+emit_16(2166);
+emit_16(2231);
+emit_16(2167);
+emit_16(2232);
+emit_16(2168);
+emit_16(2232);
+emit_16(2167);
+emit_16(2232);
+emit_16(2168);
+emit_16(2233);
+emit_16(2169);
+emit_16(2233);
+emit_16(2168);
+emit_16(2233);
+emit_16(2169);
+emit_16(2234);
+emit_16(2170);
+emit_16(2234);
+emit_16(2169);
+emit_16(2234);
+emit_16(2170);
+emit_16(2235);
+emit_16(2171);
+emit_16(2235);
+emit_16(2170);
+emit_16(2235);
+emit_16(2171);
+emit_16(2236);
+emit_16(2172);
+emit_16(2236);
+emit_16(2171);
+emit_16(2236);
+emit_16(2172);
+emit_16(2237);
+emit_16(2173);
+emit_16(2237);
+emit_16(2172);
+emit_16(2237);
+emit_16(2173);
+emit_16(2238);
+emit_16(2174);
+emit_16(2238);
+emit_16(2173);
+emit_16(2238);
+emit_16(2174);
+emit_16(2239);
+emit_16(2175);
+emit_16(2239);
+emit_16(2174);
+emit_start(Landscape08Idx)
+emit_16(0);
+emit_16(1);
+emit_16(2);
+emit_16(3);
+emit_16(2);
+emit_16(1);
+emit_16(2);
+emit_16(3);
+emit_16(4);
+emit_16(5);
+emit_16(4);
+emit_16(3);
+emit_16(4);
+emit_16(5);
+emit_16(6);
+emit_16(7);
+emit_16(6);
+emit_16(5);
+emit_16(6);
+emit_16(7);
+emit_16(8);
+emit_16(9);
+emit_16(8);
+emit_16(7);
+emit_16(8);
+emit_16(9);
+emit_16(10);
+emit_16(11);
+emit_16(10);
+emit_16(9);
+emit_16(10);
+emit_16(11);
+emit_16(12);
+emit_16(13);
+emit_16(12);
+emit_16(11);
+emit_16(12);
+emit_16(13);
+emit_16(14);
+emit_16(15);
+emit_16(14);
+emit_16(13);
+emit_16(14);
+emit_16(15);
+emit_16(16);
+emit_16(17);
+emit_16(16);
+emit_16(15);
+emit_16(16);
+emit_16(17);
+emit_16(18);
+emit_16(19);
+emit_16(18);
+emit_16(17);
+emit_16(18);
+emit_16(19);
+emit_16(20);
+emit_16(21);
+emit_16(20);
+emit_16(19);
+emit_16(20);
+emit_16(21);
+emit_16(22);
+emit_16(23);
+emit_16(22);
+emit_16(21);
+emit_16(22);
+emit_16(23);
+emit_16(24);
+emit_16(25);
+emit_16(24);
+emit_16(23);
+emit_16(24);
+emit_16(25);
+emit_16(26);
+emit_16(27);
+emit_16(26);
+emit_16(25);
+emit_16(26);
+emit_16(27);
+emit_16(28);
+emit_16(29);
+emit_16(28);
+emit_16(27);
+emit_16(28);
+emit_16(29);
+emit_16(30);
+emit_16(31);
+emit_16(30);
+emit_16(29);
+emit_16(30);
+emit_16(31);
+emit_16(32);
+emit_16(33);
+emit_16(32);
+emit_16(31);
+emit_16(32);
+emit_16(33);
+emit_16(34);
+emit_16(35);
+emit_16(34);
+emit_16(33);
+emit_16(34);
+emit_16(35);
+emit_16(36);
+emit_16(37);
+emit_16(36);
+emit_16(35);
+emit_16(36);
+emit_16(37);
+emit_16(38);
+emit_16(39);
+emit_16(38);
+emit_16(37);
+emit_16(38);
+emit_16(39);
+emit_16(40);
+emit_16(41);
+emit_16(40);
+emit_16(39);
+emit_16(40);
+emit_16(41);
+emit_16(42);
+emit_16(43);
+emit_16(42);
+emit_16(41);
+emit_16(42);
+emit_16(43);
+emit_16(44);
+emit_16(45);
+emit_16(44);
+emit_16(43);
+emit_16(44);
+emit_16(45);
+emit_16(46);
+emit_16(47);
+emit_16(46);
+emit_16(45);
+emit_16(46);
+emit_16(47);
+emit_16(48);
+emit_16(49);
+emit_16(48);
+emit_16(47);
+emit_16(48);
+emit_16(49);
+emit_16(50);
+emit_16(51);
+emit_16(50);
+emit_16(49);
+emit_16(50);
+emit_16(51);
+emit_16(52);
+emit_16(53);
+emit_16(52);
+emit_16(51);
+emit_16(52);
+emit_16(53);
+emit_16(54);
+emit_16(55);
+emit_16(54);
+emit_16(53);
+emit_16(54);
+emit_16(55);
+emit_16(56);
+emit_16(57);
+emit_16(56);
+emit_16(55);
+emit_16(56);
+emit_16(57);
+emit_16(58);
+emit_16(59);
+emit_16(58);
+emit_16(57);
+emit_16(58);
+emit_16(59);
+emit_16(60);
+emit_16(61);
+emit_16(60);
+emit_16(59);
+emit_16(60);
+emit_16(61);
+emit_16(62);
+emit_16(63);
+emit_16(62);
+emit_16(61);
+emit_16(62);
+emit_16(63);
+emit_16(64);
+emit_16(65);
+emit_16(64);
+emit_16(63);
+emit_16(64);
+emit_16(65);
+emit_16(66);
+emit_16(67);
+emit_16(66);
+emit_16(65);
+emit_16(66);
+emit_16(67);
+emit_16(68);
+emit_16(69);
+emit_16(68);
+emit_16(67);
+emit_16(68);
+emit_16(69);
+emit_16(70);
+emit_16(71);
+emit_16(70);
+emit_16(69);
+emit_16(70);
+emit_16(71);
+emit_16(72);
+emit_16(73);
+emit_16(72);
+emit_16(71);
+emit_16(72);
+emit_16(73);
+emit_16(74);
+emit_16(75);
+emit_16(74);
+emit_16(73);
+emit_16(74);
+emit_16(75);
+emit_16(76);
+emit_16(77);
+emit_16(76);
+emit_16(75);
+emit_16(76);
+emit_16(77);
+emit_16(78);
+emit_16(79);
+emit_16(78);
+emit_16(77);
+emit_16(78);
+emit_16(79);
+emit_16(80);
+emit_16(81);
+emit_16(80);
+emit_16(79);
+emit_16(80);
+emit_16(81);
+emit_16(82);
+emit_16(83);
+emit_16(82);
+emit_16(81);
+emit_16(82);
+emit_16(83);
+emit_16(84);
+emit_16(85);
+emit_16(84);
+emit_16(83);
+emit_16(84);
+emit_16(85);
+emit_16(86);
+emit_16(87);
+emit_16(86);
+emit_16(85);
+emit_16(86);
+emit_16(87);
+emit_16(88);
+emit_16(89);
+emit_16(88);
+emit_16(87);
+emit_16(88);
+emit_16(89);
+emit_16(90);
+emit_16(91);
+emit_16(90);
+emit_16(89);
+emit_16(90);
+emit_16(91);
+emit_16(92);
+emit_16(93);
+emit_16(92);
+emit_16(91);
+emit_16(92);
+emit_16(93);
+emit_16(94);
+emit_16(95);
+emit_16(94);
+emit_16(93);
+emit_16(94);
+emit_16(95);
+emit_16(96);
+emit_16(97);
+emit_16(96);
+emit_16(95);
+emit_16(96);
+emit_16(97);
+emit_16(98);
+emit_16(99);
+emit_16(98);
+emit_16(97);
+emit_16(98);
+emit_16(99);
+emit_16(100);
+emit_16(101);
+emit_16(100);
+emit_16(99);
+emit_16(100);
+emit_16(101);
+emit_16(102);
+emit_16(103);
+emit_16(102);
+emit_16(101);
+emit_16(102);
+emit_16(103);
+emit_16(104);
+emit_16(105);
+emit_16(104);
+emit_16(103);
+emit_16(104);
+emit_16(105);
+emit_16(106);
+emit_16(107);
+emit_16(106);
+emit_16(105);
+emit_16(106);
+emit_16(107);
+emit_16(108);
+emit_16(109);
+emit_16(108);
+emit_16(107);
+emit_16(108);
+emit_16(109);
+emit_16(110);
+emit_16(111);
+emit_16(110);
+emit_16(109);
+emit_16(110);
+emit_16(111);
+emit_16(112);
+emit_16(113);
+emit_16(112);
+emit_16(111);
+emit_16(112);
+emit_16(113);
+emit_16(114);
+emit_16(115);
+emit_16(114);
+emit_16(113);
+emit_16(114);
+emit_16(115);
+emit_16(116);
+emit_16(117);
+emit_16(116);
+emit_16(115);
+emit_16(116);
+emit_16(117);
+emit_16(118);
+emit_16(119);
+emit_16(118);
+emit_16(117);
+emit_16(118);
+emit_16(119);
+emit_16(120);
+emit_16(121);
+emit_16(120);
+emit_16(119);
+emit_16(120);
+emit_16(121);
+emit_16(122);
+emit_16(123);
+emit_16(122);
+emit_16(121);
+emit_16(122);
+emit_16(123);
+emit_16(124);
+emit_16(125);
+emit_16(124);
+emit_16(123);
+emit_16(124);
+emit_16(125);
+emit_16(126);
+emit_16(127);
+emit_16(126);
+emit_16(125);
+emit_16(126);
+emit_16(127);
+emit_16(128);
+emit_16(129);
+emit_16(128);
+emit_16(127);
+emit_16(128);
+emit_16(129);
+emit_16(130);
+emit_16(131);
+emit_16(130);
+emit_16(129);
+emit_16(132);
+emit_16(0);
+emit_16(133);
+emit_16(2);
+emit_16(133);
+emit_16(0);
+emit_16(133);
+emit_16(2);
+emit_16(134);
+emit_16(4);
+emit_16(134);
+emit_16(2);
+emit_16(134);
+emit_16(4);
+emit_16(135);
+emit_16(6);
+emit_16(135);
+emit_16(4);
+emit_16(135);
+emit_16(6);
+emit_16(136);
+emit_16(8);
+emit_16(136);
+emit_16(6);
+emit_16(136);
+emit_16(8);
+emit_16(137);
+emit_16(10);
+emit_16(137);
+emit_16(8);
+emit_16(137);
+emit_16(10);
+emit_16(138);
+emit_16(12);
+emit_16(138);
+emit_16(10);
+emit_16(138);
+emit_16(12);
+emit_16(139);
+emit_16(14);
+emit_16(139);
+emit_16(12);
+emit_16(139);
+emit_16(14);
+emit_16(140);
+emit_16(16);
+emit_16(140);
+emit_16(14);
+emit_16(140);
+emit_16(16);
+emit_16(141);
+emit_16(18);
+emit_16(141);
+emit_16(16);
+emit_16(141);
+emit_16(18);
+emit_16(142);
+emit_16(20);
+emit_16(142);
+emit_16(18);
+emit_16(142);
+emit_16(20);
+emit_16(143);
+emit_16(22);
+emit_16(143);
+emit_16(20);
+emit_16(143);
+emit_16(22);
+emit_16(144);
+emit_16(24);
+emit_16(144);
+emit_16(22);
+emit_16(144);
+emit_16(24);
+emit_16(145);
+emit_16(26);
+emit_16(145);
+emit_16(24);
+emit_16(145);
+emit_16(26);
+emit_16(146);
+emit_16(28);
+emit_16(146);
+emit_16(26);
+emit_16(146);
+emit_16(28);
+emit_16(147);
+emit_16(30);
+emit_16(147);
+emit_16(28);
+emit_16(147);
+emit_16(30);
+emit_16(148);
+emit_16(32);
+emit_16(148);
+emit_16(30);
+emit_16(148);
+emit_16(32);
+emit_16(149);
+emit_16(34);
+emit_16(149);
+emit_16(32);
+emit_16(149);
+emit_16(34);
+emit_16(150);
+emit_16(36);
+emit_16(150);
+emit_16(34);
+emit_16(150);
+emit_16(36);
+emit_16(151);
+emit_16(38);
+emit_16(151);
+emit_16(36);
+emit_16(151);
+emit_16(38);
+emit_16(152);
+emit_16(40);
+emit_16(152);
+emit_16(38);
+emit_16(152);
+emit_16(40);
+emit_16(153);
+emit_16(42);
+emit_16(153);
+emit_16(40);
+emit_16(153);
+emit_16(42);
+emit_16(154);
+emit_16(44);
+emit_16(154);
+emit_16(42);
+emit_16(154);
+emit_16(44);
+emit_16(155);
+emit_16(46);
+emit_16(155);
+emit_16(44);
+emit_16(155);
+emit_16(46);
+emit_16(156);
+emit_16(48);
+emit_16(156);
+emit_16(46);
+emit_16(156);
+emit_16(48);
+emit_16(157);
+emit_16(50);
+emit_16(157);
+emit_16(48);
+emit_16(157);
+emit_16(50);
+emit_16(158);
+emit_16(52);
+emit_16(158);
+emit_16(50);
+emit_16(158);
+emit_16(52);
+emit_16(159);
+emit_16(54);
+emit_16(159);
+emit_16(52);
+emit_16(159);
+emit_16(54);
+emit_16(160);
+emit_16(56);
+emit_16(160);
+emit_16(54);
+emit_16(160);
+emit_16(56);
+emit_16(161);
+emit_16(58);
+emit_16(161);
+emit_16(56);
+emit_16(161);
+emit_16(58);
+emit_16(162);
+emit_16(60);
+emit_16(162);
+emit_16(58);
+emit_16(162);
+emit_16(60);
+emit_16(163);
+emit_16(62);
+emit_16(163);
+emit_16(60);
+emit_16(163);
+emit_16(62);
+emit_16(164);
+emit_16(64);
+emit_16(164);
+emit_16(62);
+emit_16(164);
+emit_16(64);
+emit_16(165);
+emit_16(66);
+emit_16(165);
+emit_16(64);
+emit_16(165);
+emit_16(66);
+emit_16(166);
+emit_16(68);
+emit_16(166);
+emit_16(66);
+emit_16(166);
+emit_16(68);
+emit_16(167);
+emit_16(70);
+emit_16(167);
+emit_16(68);
+emit_16(167);
+emit_16(70);
+emit_16(168);
+emit_16(72);
+emit_16(168);
+emit_16(70);
+emit_16(168);
+emit_16(72);
+emit_16(169);
+emit_16(74);
+emit_16(169);
+emit_16(72);
+emit_16(169);
+emit_16(74);
+emit_16(170);
+emit_16(76);
+emit_16(170);
+emit_16(74);
+emit_16(170);
+emit_16(76);
+emit_16(171);
+emit_16(78);
+emit_16(171);
+emit_16(76);
+emit_16(171);
+emit_16(78);
+emit_16(172);
+emit_16(80);
+emit_16(172);
+emit_16(78);
+emit_16(172);
+emit_16(80);
+emit_16(173);
+emit_16(82);
+emit_16(173);
+emit_16(80);
+emit_16(173);
+emit_16(82);
+emit_16(174);
+emit_16(84);
+emit_16(174);
+emit_16(82);
+emit_16(174);
+emit_16(84);
+emit_16(175);
+emit_16(86);
+emit_16(175);
+emit_16(84);
+emit_16(175);
+emit_16(86);
+emit_16(176);
+emit_16(88);
+emit_16(176);
+emit_16(86);
+emit_16(176);
+emit_16(88);
+emit_16(177);
+emit_16(90);
+emit_16(177);
+emit_16(88);
+emit_16(177);
+emit_16(90);
+emit_16(178);
+emit_16(92);
+emit_16(178);
+emit_16(90);
+emit_16(178);
+emit_16(92);
+emit_16(179);
+emit_16(94);
+emit_16(179);
+emit_16(92);
+emit_16(179);
+emit_16(94);
+emit_16(180);
+emit_16(96);
+emit_16(180);
+emit_16(94);
+emit_16(180);
+emit_16(96);
+emit_16(181);
+emit_16(98);
+emit_16(181);
+emit_16(96);
+emit_16(181);
+emit_16(98);
+emit_16(182);
+emit_16(100);
+emit_16(182);
+emit_16(98);
+emit_16(182);
+emit_16(100);
+emit_16(183);
+emit_16(102);
+emit_16(183);
+emit_16(100);
+emit_16(183);
+emit_16(102);
+emit_16(184);
+emit_16(104);
+emit_16(184);
+emit_16(102);
+emit_16(184);
+emit_16(104);
+emit_16(185);
+emit_16(106);
+emit_16(185);
+emit_16(104);
+emit_16(185);
+emit_16(106);
+emit_16(186);
+emit_16(108);
+emit_16(186);
+emit_16(106);
+emit_16(186);
+emit_16(108);
+emit_16(187);
+emit_16(110);
+emit_16(187);
+emit_16(108);
+emit_16(187);
+emit_16(110);
+emit_16(188);
+emit_16(112);
+emit_16(188);
+emit_16(110);
+emit_16(188);
+emit_16(112);
+emit_16(189);
+emit_16(114);
+emit_16(189);
+emit_16(112);
+emit_16(189);
+emit_16(114);
+emit_16(190);
+emit_16(116);
+emit_16(190);
+emit_16(114);
+emit_16(190);
+emit_16(116);
+emit_16(191);
+emit_16(118);
+emit_16(191);
+emit_16(116);
+emit_16(191);
+emit_16(118);
+emit_16(192);
+emit_16(120);
+emit_16(192);
+emit_16(118);
+emit_16(192);
+emit_16(120);
+emit_16(193);
+emit_16(122);
+emit_16(193);
+emit_16(120);
+emit_16(193);
+emit_16(122);
+emit_16(194);
+emit_16(124);
+emit_16(194);
+emit_16(122);
+emit_16(194);
+emit_16(124);
+emit_16(195);
+emit_16(126);
+emit_16(195);
+emit_16(124);
+emit_16(195);
+emit_16(126);
+emit_16(196);
+emit_16(128);
+emit_16(196);
+emit_16(126);
+emit_16(196);
+emit_16(128);
+emit_16(197);
+emit_16(130);
+emit_16(197);
+emit_16(128);
+emit_16(198);
+emit_16(132);
+emit_16(199);
+emit_16(133);
+emit_16(199);
+emit_16(132);
+emit_16(199);
+emit_16(133);
+emit_16(200);
+emit_16(134);
+emit_16(200);
+emit_16(133);
+emit_16(200);
+emit_16(134);
+emit_16(201);
+emit_16(135);
+emit_16(201);
+emit_16(134);
+emit_16(201);
+emit_16(135);
+emit_16(202);
+emit_16(136);
+emit_16(202);
+emit_16(135);
+emit_16(202);
+emit_16(136);
+emit_16(203);
+emit_16(137);
+emit_16(203);
+emit_16(136);
+emit_16(203);
+emit_16(137);
+emit_16(204);
+emit_16(138);
+emit_16(204);
+emit_16(137);
+emit_16(204);
+emit_16(138);
+emit_16(205);
+emit_16(139);
+emit_16(205);
+emit_16(138);
+emit_16(205);
+emit_16(139);
+emit_16(206);
+emit_16(140);
+emit_16(206);
+emit_16(139);
+emit_16(206);
+emit_16(140);
+emit_16(207);
+emit_16(141);
+emit_16(207);
+emit_16(140);
+emit_16(207);
+emit_16(141);
+emit_16(208);
+emit_16(142);
+emit_16(208);
+emit_16(141);
+emit_16(208);
+emit_16(142);
+emit_16(209);
+emit_16(143);
+emit_16(209);
+emit_16(142);
+emit_16(209);
+emit_16(143);
+emit_16(210);
+emit_16(144);
+emit_16(210);
+emit_16(143);
+emit_16(210);
+emit_16(144);
+emit_16(211);
+emit_16(145);
+emit_16(211);
+emit_16(144);
+emit_16(211);
+emit_16(145);
+emit_16(212);
+emit_16(146);
+emit_16(212);
+emit_16(145);
+emit_16(212);
+emit_16(146);
+emit_16(213);
+emit_16(147);
+emit_16(213);
+emit_16(146);
+emit_16(213);
+emit_16(147);
+emit_16(214);
+emit_16(148);
+emit_16(214);
+emit_16(147);
+emit_16(214);
+emit_16(148);
+emit_16(215);
+emit_16(149);
+emit_16(215);
+emit_16(148);
+emit_16(215);
+emit_16(149);
+emit_16(216);
+emit_16(150);
+emit_16(216);
+emit_16(149);
+emit_16(216);
+emit_16(150);
+emit_16(217);
+emit_16(151);
+emit_16(217);
+emit_16(150);
+emit_16(217);
+emit_16(151);
+emit_16(218);
+emit_16(152);
+emit_16(218);
+emit_16(151);
+emit_16(218);
+emit_16(152);
+emit_16(219);
+emit_16(153);
+emit_16(219);
+emit_16(152);
+emit_16(219);
+emit_16(153);
+emit_16(220);
+emit_16(154);
+emit_16(220);
+emit_16(153);
+emit_16(220);
+emit_16(154);
+emit_16(221);
+emit_16(155);
+emit_16(221);
+emit_16(154);
+emit_16(221);
+emit_16(155);
+emit_16(222);
+emit_16(156);
+emit_16(222);
+emit_16(155);
+emit_16(222);
+emit_16(156);
+emit_16(223);
+emit_16(157);
+emit_16(223);
+emit_16(156);
+emit_16(223);
+emit_16(157);
+emit_16(224);
+emit_16(158);
+emit_16(224);
+emit_16(157);
+emit_16(224);
+emit_16(158);
+emit_16(225);
+emit_16(159);
+emit_16(225);
+emit_16(158);
+emit_16(225);
+emit_16(159);
+emit_16(226);
+emit_16(160);
+emit_16(226);
+emit_16(159);
+emit_16(226);
+emit_16(160);
+emit_16(227);
+emit_16(161);
+emit_16(227);
+emit_16(160);
+emit_16(227);
+emit_16(161);
+emit_16(228);
+emit_16(162);
+emit_16(228);
+emit_16(161);
+emit_16(228);
+emit_16(162);
+emit_16(229);
+emit_16(163);
+emit_16(229);
+emit_16(162);
+emit_16(229);
+emit_16(163);
+emit_16(230);
+emit_16(164);
+emit_16(230);
+emit_16(163);
+emit_16(230);
+emit_16(164);
+emit_16(231);
+emit_16(165);
+emit_16(231);
+emit_16(164);
+emit_16(231);
+emit_16(165);
+emit_16(232);
+emit_16(166);
+emit_16(232);
+emit_16(165);
+emit_16(232);
+emit_16(166);
+emit_16(233);
+emit_16(167);
+emit_16(233);
+emit_16(166);
+emit_16(233);
+emit_16(167);
+emit_16(234);
+emit_16(168);
+emit_16(234);
+emit_16(167);
+emit_16(234);
+emit_16(168);
+emit_16(235);
+emit_16(169);
+emit_16(235);
+emit_16(168);
+emit_16(235);
+emit_16(169);
+emit_16(236);
+emit_16(170);
+emit_16(236);
+emit_16(169);
+emit_16(236);
+emit_16(170);
+emit_16(237);
+emit_16(171);
+emit_16(237);
+emit_16(170);
+emit_16(237);
+emit_16(171);
+emit_16(238);
+emit_16(172);
+emit_16(238);
+emit_16(171);
+emit_16(238);
+emit_16(172);
+emit_16(239);
+emit_16(173);
+emit_16(239);
+emit_16(172);
+emit_16(239);
+emit_16(173);
+emit_16(240);
+emit_16(174);
+emit_16(240);
+emit_16(173);
+emit_16(240);
+emit_16(174);
+emit_16(241);
+emit_16(175);
+emit_16(241);
+emit_16(174);
+emit_16(241);
+emit_16(175);
+emit_16(242);
+emit_16(176);
+emit_16(242);
+emit_16(175);
+emit_16(242);
+emit_16(176);
+emit_16(243);
+emit_16(177);
+emit_16(243);
+emit_16(176);
+emit_16(243);
+emit_16(177);
+emit_16(244);
+emit_16(178);
+emit_16(244);
+emit_16(177);
+emit_16(244);
+emit_16(178);
+emit_16(245);
+emit_16(179);
+emit_16(245);
+emit_16(178);
+emit_16(245);
+emit_16(179);
+emit_16(246);
+emit_16(180);
+emit_16(246);
+emit_16(179);
+emit_16(246);
+emit_16(180);
+emit_16(247);
+emit_16(181);
+emit_16(247);
+emit_16(180);
+emit_16(247);
+emit_16(181);
+emit_16(248);
+emit_16(182);
+emit_16(248);
+emit_16(181);
+emit_16(248);
+emit_16(182);
+emit_16(249);
+emit_16(183);
+emit_16(249);
+emit_16(182);
+emit_16(249);
+emit_16(183);
+emit_16(250);
+emit_16(184);
+emit_16(250);
+emit_16(183);
+emit_16(250);
+emit_16(184);
+emit_16(251);
+emit_16(185);
+emit_16(251);
+emit_16(184);
+emit_16(251);
+emit_16(185);
+emit_16(252);
+emit_16(186);
+emit_16(252);
+emit_16(185);
+emit_16(252);
+emit_16(186);
+emit_16(253);
+emit_16(187);
+emit_16(253);
+emit_16(186);
+emit_16(253);
+emit_16(187);
+emit_16(254);
+emit_16(188);
+emit_16(254);
+emit_16(187);
+emit_16(254);
+emit_16(188);
+emit_16(255);
+emit_16(189);
+emit_16(255);
+emit_16(188);
+emit_16(255);
+emit_16(189);
+emit_16(256);
+emit_16(190);
+emit_16(256);
+emit_16(189);
+emit_16(256);
+emit_16(190);
+emit_16(257);
+emit_16(191);
+emit_16(257);
+emit_16(190);
+emit_16(257);
+emit_16(191);
+emit_16(258);
+emit_16(192);
+emit_16(258);
+emit_16(191);
+emit_16(258);
+emit_16(192);
+emit_16(259);
+emit_16(193);
+emit_16(259);
+emit_16(192);
+emit_16(259);
+emit_16(193);
+emit_16(260);
+emit_16(194);
+emit_16(260);
+emit_16(193);
+emit_16(260);
+emit_16(194);
+emit_16(261);
+emit_16(195);
+emit_16(261);
+emit_16(194);
+emit_16(261);
+emit_16(195);
+emit_16(262);
+emit_16(196);
+emit_16(262);
+emit_16(195);
+emit_16(262);
+emit_16(196);
+emit_16(263);
+emit_16(197);
+emit_16(263);
+emit_16(196);
+emit_16(264);
+emit_16(198);
+emit_16(265);
+emit_16(199);
+emit_16(265);
+emit_16(198);
+emit_16(265);
+emit_16(199);
+emit_16(266);
+emit_16(200);
+emit_16(266);
+emit_16(199);
+emit_16(266);
+emit_16(200);
+emit_16(267);
+emit_16(201);
+emit_16(267);
+emit_16(200);
+emit_16(267);
+emit_16(201);
+emit_16(268);
+emit_16(202);
+emit_16(268);
+emit_16(201);
+emit_16(268);
+emit_16(202);
+emit_16(269);
+emit_16(203);
+emit_16(269);
+emit_16(202);
+emit_16(269);
+emit_16(203);
+emit_16(270);
+emit_16(204);
+emit_16(270);
+emit_16(203);
+emit_16(270);
+emit_16(204);
+emit_16(271);
+emit_16(205);
+emit_16(271);
+emit_16(204);
+emit_16(271);
+emit_16(205);
+emit_16(272);
+emit_16(206);
+emit_16(272);
+emit_16(205);
+emit_16(272);
+emit_16(206);
+emit_16(273);
+emit_16(207);
+emit_16(273);
+emit_16(206);
+emit_16(273);
+emit_16(207);
+emit_16(274);
+emit_16(208);
+emit_16(274);
+emit_16(207);
+emit_16(274);
+emit_16(208);
+emit_16(275);
+emit_16(209);
+emit_16(275);
+emit_16(208);
+emit_16(275);
+emit_16(209);
+emit_16(276);
+emit_16(210);
+emit_16(276);
+emit_16(209);
+emit_16(276);
+emit_16(210);
+emit_16(277);
+emit_16(211);
+emit_16(277);
+emit_16(210);
+emit_16(277);
+emit_16(211);
+emit_16(278);
+emit_16(212);
+emit_16(278);
+emit_16(211);
+emit_16(278);
+emit_16(212);
+emit_16(279);
+emit_16(213);
+emit_16(279);
+emit_16(212);
+emit_16(279);
+emit_16(213);
+emit_16(280);
+emit_16(214);
+emit_16(280);
+emit_16(213);
+emit_16(280);
+emit_16(214);
+emit_16(281);
+emit_16(215);
+emit_16(281);
+emit_16(214);
+emit_16(281);
+emit_16(215);
+emit_16(282);
+emit_16(216);
+emit_16(282);
+emit_16(215);
+emit_16(282);
+emit_16(216);
+emit_16(283);
+emit_16(217);
+emit_16(283);
+emit_16(216);
+emit_16(283);
+emit_16(217);
+emit_16(284);
+emit_16(218);
+emit_16(284);
+emit_16(217);
+emit_16(284);
+emit_16(218);
+emit_16(285);
+emit_16(219);
+emit_16(285);
+emit_16(218);
+emit_16(285);
+emit_16(219);
+emit_16(286);
+emit_16(220);
+emit_16(286);
+emit_16(219);
+emit_16(286);
+emit_16(220);
+emit_16(287);
+emit_16(221);
+emit_16(287);
+emit_16(220);
+emit_16(287);
+emit_16(221);
+emit_16(288);
+emit_16(222);
+emit_16(288);
+emit_16(221);
+emit_16(288);
+emit_16(222);
+emit_16(289);
+emit_16(223);
+emit_16(289);
+emit_16(222);
+emit_16(289);
+emit_16(223);
+emit_16(290);
+emit_16(224);
+emit_16(290);
+emit_16(223);
+emit_16(290);
+emit_16(224);
+emit_16(291);
+emit_16(225);
+emit_16(291);
+emit_16(224);
+emit_16(291);
+emit_16(225);
+emit_16(292);
+emit_16(226);
+emit_16(292);
+emit_16(225);
+emit_16(292);
+emit_16(226);
+emit_16(293);
+emit_16(227);
+emit_16(293);
+emit_16(226);
+emit_16(293);
+emit_16(227);
+emit_16(294);
+emit_16(228);
+emit_16(294);
+emit_16(227);
+emit_16(294);
+emit_16(228);
+emit_16(295);
+emit_16(229);
+emit_16(295);
+emit_16(228);
+emit_16(295);
+emit_16(229);
+emit_16(296);
+emit_16(230);
+emit_16(296);
+emit_16(229);
+emit_16(296);
+emit_16(230);
+emit_16(297);
+emit_16(231);
+emit_16(297);
+emit_16(230);
+emit_16(297);
+emit_16(231);
+emit_16(298);
+emit_16(232);
+emit_16(298);
+emit_16(231);
+emit_16(298);
+emit_16(232);
+emit_16(299);
+emit_16(233);
+emit_16(299);
+emit_16(232);
+emit_16(299);
+emit_16(233);
+emit_16(300);
+emit_16(234);
+emit_16(300);
+emit_16(233);
+emit_16(300);
+emit_16(234);
+emit_16(301);
+emit_16(235);
+emit_16(301);
+emit_16(234);
+emit_16(301);
+emit_16(235);
+emit_16(302);
+emit_16(236);
+emit_16(302);
+emit_16(235);
+emit_16(302);
+emit_16(236);
+emit_16(303);
+emit_16(237);
+emit_16(303);
+emit_16(236);
+emit_16(303);
+emit_16(237);
+emit_16(304);
+emit_16(238);
+emit_16(304);
+emit_16(237);
+emit_16(304);
+emit_16(238);
+emit_16(305);
+emit_16(239);
+emit_16(305);
+emit_16(238);
+emit_16(305);
+emit_16(239);
+emit_16(306);
+emit_16(240);
+emit_16(306);
+emit_16(239);
+emit_16(306);
+emit_16(240);
+emit_16(307);
+emit_16(241);
+emit_16(307);
+emit_16(240);
+emit_16(307);
+emit_16(241);
+emit_16(308);
+emit_16(242);
+emit_16(308);
+emit_16(241);
+emit_16(308);
+emit_16(242);
+emit_16(309);
+emit_16(243);
+emit_16(309);
+emit_16(242);
+emit_16(309);
+emit_16(243);
+emit_16(310);
+emit_16(244);
+emit_16(310);
+emit_16(243);
+emit_16(310);
+emit_16(244);
+emit_16(311);
+emit_16(245);
+emit_16(311);
+emit_16(244);
+emit_16(311);
+emit_16(245);
+emit_16(312);
+emit_16(246);
+emit_16(312);
+emit_16(245);
+emit_16(312);
+emit_16(246);
+emit_16(313);
+emit_16(247);
+emit_16(313);
+emit_16(246);
+emit_16(313);
+emit_16(247);
+emit_16(314);
+emit_16(248);
+emit_16(314);
+emit_16(247);
+emit_16(314);
+emit_16(248);
+emit_16(315);
+emit_16(249);
+emit_16(315);
+emit_16(248);
+emit_16(315);
+emit_16(249);
+emit_16(316);
+emit_16(250);
+emit_16(316);
+emit_16(249);
+emit_16(316);
+emit_16(250);
+emit_16(317);
+emit_16(251);
+emit_16(317);
+emit_16(250);
+emit_16(317);
+emit_16(251);
+emit_16(318);
+emit_16(252);
+emit_16(318);
+emit_16(251);
+emit_16(318);
+emit_16(252);
+emit_16(319);
+emit_16(253);
+emit_16(319);
+emit_16(252);
+emit_16(319);
+emit_16(253);
+emit_16(320);
+emit_16(254);
+emit_16(320);
+emit_16(253);
+emit_16(320);
+emit_16(254);
+emit_16(321);
+emit_16(255);
+emit_16(321);
+emit_16(254);
+emit_16(321);
+emit_16(255);
+emit_16(322);
+emit_16(256);
+emit_16(322);
+emit_16(255);
+emit_16(322);
+emit_16(256);
+emit_16(323);
+emit_16(257);
+emit_16(323);
+emit_16(256);
+emit_16(323);
+emit_16(257);
+emit_16(324);
+emit_16(258);
+emit_16(324);
+emit_16(257);
+emit_16(324);
+emit_16(258);
+emit_16(325);
+emit_16(259);
+emit_16(325);
+emit_16(258);
+emit_16(325);
+emit_16(259);
+emit_16(326);
+emit_16(260);
+emit_16(326);
+emit_16(259);
+emit_16(326);
+emit_16(260);
+emit_16(327);
+emit_16(261);
+emit_16(327);
+emit_16(260);
+emit_16(327);
+emit_16(261);
+emit_16(328);
+emit_16(262);
+emit_16(328);
+emit_16(261);
+emit_16(328);
+emit_16(262);
+emit_16(329);
+emit_16(263);
+emit_16(329);
+emit_16(262);
+emit_16(330);
+emit_16(264);
+emit_16(331);
+emit_16(265);
+emit_16(331);
+emit_16(264);
+emit_16(331);
+emit_16(265);
+emit_16(332);
+emit_16(266);
+emit_16(332);
+emit_16(265);
+emit_16(332);
+emit_16(266);
+emit_16(333);
+emit_16(267);
+emit_16(333);
+emit_16(266);
+emit_16(333);
+emit_16(267);
+emit_16(334);
+emit_16(268);
+emit_16(334);
+emit_16(267);
+emit_16(334);
+emit_16(268);
+emit_16(335);
+emit_16(269);
+emit_16(335);
+emit_16(268);
+emit_16(335);
+emit_16(269);
+emit_16(336);
+emit_16(270);
+emit_16(336);
+emit_16(269);
+emit_16(336);
+emit_16(270);
+emit_16(337);
+emit_16(271);
+emit_16(337);
+emit_16(270);
+emit_16(337);
+emit_16(271);
+emit_16(338);
+emit_16(272);
+emit_16(338);
+emit_16(271);
+emit_16(338);
+emit_16(272);
+emit_16(339);
+emit_16(273);
+emit_16(339);
+emit_16(272);
+emit_16(339);
+emit_16(273);
+emit_16(340);
+emit_16(274);
+emit_16(340);
+emit_16(273);
+emit_16(340);
+emit_16(274);
+emit_16(341);
+emit_16(275);
+emit_16(341);
+emit_16(274);
+emit_16(341);
+emit_16(275);
+emit_16(342);
+emit_16(276);
+emit_16(342);
+emit_16(275);
+emit_16(342);
+emit_16(276);
+emit_16(343);
+emit_16(277);
+emit_16(343);
+emit_16(276);
+emit_16(343);
+emit_16(277);
+emit_16(344);
+emit_16(278);
+emit_16(344);
+emit_16(277);
+emit_16(344);
+emit_16(278);
+emit_16(345);
+emit_16(279);
+emit_16(345);
+emit_16(278);
+emit_16(345);
+emit_16(279);
+emit_16(346);
+emit_16(280);
+emit_16(346);
+emit_16(279);
+emit_16(346);
+emit_16(280);
+emit_16(347);
+emit_16(281);
+emit_16(347);
+emit_16(280);
+emit_16(347);
+emit_16(281);
+emit_16(348);
+emit_16(282);
+emit_16(348);
+emit_16(281);
+emit_16(348);
+emit_16(282);
+emit_16(349);
+emit_16(283);
+emit_16(349);
+emit_16(282);
+emit_16(349);
+emit_16(283);
+emit_16(350);
+emit_16(284);
+emit_16(350);
+emit_16(283);
+emit_16(350);
+emit_16(284);
+emit_16(351);
+emit_16(285);
+emit_16(351);
+emit_16(284);
+emit_16(351);
+emit_16(285);
+emit_16(352);
+emit_16(286);
+emit_16(352);
+emit_16(285);
+emit_16(352);
+emit_16(286);
+emit_16(353);
+emit_16(287);
+emit_16(353);
+emit_16(286);
+emit_16(353);
+emit_16(287);
+emit_16(354);
+emit_16(288);
+emit_16(354);
+emit_16(287);
+emit_16(354);
+emit_16(288);
+emit_16(355);
+emit_16(289);
+emit_16(355);
+emit_16(288);
+emit_16(355);
+emit_16(289);
+emit_16(356);
+emit_16(290);
+emit_16(356);
+emit_16(289);
+emit_16(356);
+emit_16(290);
+emit_16(357);
+emit_16(291);
+emit_16(357);
+emit_16(290);
+emit_16(357);
+emit_16(291);
+emit_16(358);
+emit_16(292);
+emit_16(358);
+emit_16(291);
+emit_16(358);
+emit_16(292);
+emit_16(359);
+emit_16(293);
+emit_16(359);
+emit_16(292);
+emit_16(359);
+emit_16(293);
+emit_16(360);
+emit_16(294);
+emit_16(360);
+emit_16(293);
+emit_16(360);
+emit_16(294);
+emit_16(361);
+emit_16(295);
+emit_16(361);
+emit_16(294);
+emit_16(361);
+emit_16(295);
+emit_16(362);
+emit_16(296);
+emit_16(362);
+emit_16(295);
+emit_16(362);
+emit_16(296);
+emit_16(363);
+emit_16(297);
+emit_16(363);
+emit_16(296);
+emit_16(363);
+emit_16(297);
+emit_16(364);
+emit_16(298);
+emit_16(364);
+emit_16(297);
+emit_16(364);
+emit_16(298);
+emit_16(365);
+emit_16(299);
+emit_16(365);
+emit_16(298);
+emit_16(365);
+emit_16(299);
+emit_16(366);
+emit_16(300);
+emit_16(366);
+emit_16(299);
+emit_16(366);
+emit_16(300);
+emit_16(367);
+emit_16(301);
+emit_16(367);
+emit_16(300);
+emit_16(367);
+emit_16(301);
+emit_16(368);
+emit_16(302);
+emit_16(368);
+emit_16(301);
+emit_16(368);
+emit_16(302);
+emit_16(369);
+emit_16(303);
+emit_16(369);
+emit_16(302);
+emit_16(369);
+emit_16(303);
+emit_16(370);
+emit_16(304);
+emit_16(370);
+emit_16(303);
+emit_16(370);
+emit_16(304);
+emit_16(371);
+emit_16(305);
+emit_16(371);
+emit_16(304);
+emit_16(371);
+emit_16(305);
+emit_16(372);
+emit_16(306);
+emit_16(372);
+emit_16(305);
+emit_16(372);
+emit_16(306);
+emit_16(373);
+emit_16(307);
+emit_16(373);
+emit_16(306);
+emit_16(373);
+emit_16(307);
+emit_16(374);
+emit_16(308);
+emit_16(374);
+emit_16(307);
+emit_16(374);
+emit_16(308);
+emit_16(375);
+emit_16(309);
+emit_16(375);
+emit_16(308);
+emit_16(375);
+emit_16(309);
+emit_16(376);
+emit_16(310);
+emit_16(376);
+emit_16(309);
+emit_16(376);
+emit_16(310);
+emit_16(377);
+emit_16(311);
+emit_16(377);
+emit_16(310);
+emit_16(377);
+emit_16(311);
+emit_16(378);
+emit_16(312);
+emit_16(378);
+emit_16(311);
+emit_16(378);
+emit_16(312);
+emit_16(379);
+emit_16(313);
+emit_16(379);
+emit_16(312);
+emit_16(379);
+emit_16(313);
+emit_16(380);
+emit_16(314);
+emit_16(380);
+emit_16(313);
+emit_16(380);
+emit_16(314);
+emit_16(381);
+emit_16(315);
+emit_16(381);
+emit_16(314);
+emit_16(381);
+emit_16(315);
+emit_16(382);
+emit_16(316);
+emit_16(382);
+emit_16(315);
+emit_16(382);
+emit_16(316);
+emit_16(383);
+emit_16(317);
+emit_16(383);
+emit_16(316);
+emit_16(383);
+emit_16(317);
+emit_16(384);
+emit_16(318);
+emit_16(384);
+emit_16(317);
+emit_16(384);
+emit_16(318);
+emit_16(385);
+emit_16(319);
+emit_16(385);
+emit_16(318);
+emit_16(385);
+emit_16(319);
+emit_16(386);
+emit_16(320);
+emit_16(386);
+emit_16(319);
+emit_16(386);
+emit_16(320);
+emit_16(387);
+emit_16(321);
+emit_16(387);
+emit_16(320);
+emit_16(387);
+emit_16(321);
+emit_16(388);
+emit_16(322);
+emit_16(388);
+emit_16(321);
+emit_16(388);
+emit_16(322);
+emit_16(389);
+emit_16(323);
+emit_16(389);
+emit_16(322);
+emit_16(389);
+emit_16(323);
+emit_16(390);
+emit_16(324);
+emit_16(390);
+emit_16(323);
+emit_16(390);
+emit_16(324);
+emit_16(391);
+emit_16(325);
+emit_16(391);
+emit_16(324);
+emit_16(391);
+emit_16(325);
+emit_16(392);
+emit_16(326);
+emit_16(392);
+emit_16(325);
+emit_16(392);
+emit_16(326);
+emit_16(393);
+emit_16(327);
+emit_16(393);
+emit_16(326);
+emit_16(393);
+emit_16(327);
+emit_16(394);
+emit_16(328);
+emit_16(394);
+emit_16(327);
+emit_16(394);
+emit_16(328);
+emit_16(395);
+emit_16(329);
+emit_16(395);
+emit_16(328);
+emit_16(396);
+emit_16(330);
+emit_16(397);
+emit_16(331);
+emit_16(397);
+emit_16(330);
+emit_16(397);
+emit_16(331);
+emit_16(398);
+emit_16(332);
+emit_16(398);
+emit_16(331);
+emit_16(398);
+emit_16(332);
+emit_16(399);
+emit_16(333);
+emit_16(399);
+emit_16(332);
+emit_16(399);
+emit_16(333);
+emit_16(400);
+emit_16(334);
+emit_16(400);
+emit_16(333);
+emit_16(400);
+emit_16(334);
+emit_16(401);
+emit_16(335);
+emit_16(401);
+emit_16(334);
+emit_16(401);
+emit_16(335);
+emit_16(402);
+emit_16(336);
+emit_16(402);
+emit_16(335);
+emit_16(402);
+emit_16(336);
+emit_16(403);
+emit_16(337);
+emit_16(403);
+emit_16(336);
+emit_16(403);
+emit_16(337);
+emit_16(404);
+emit_16(338);
+emit_16(404);
+emit_16(337);
+emit_16(404);
+emit_16(338);
+emit_16(405);
+emit_16(339);
+emit_16(405);
+emit_16(338);
+emit_16(405);
+emit_16(339);
+emit_16(406);
+emit_16(340);
+emit_16(406);
+emit_16(339);
+emit_16(406);
+emit_16(340);
+emit_16(407);
+emit_16(341);
+emit_16(407);
+emit_16(340);
+emit_16(407);
+emit_16(341);
+emit_16(408);
+emit_16(342);
+emit_16(408);
+emit_16(341);
+emit_16(408);
+emit_16(342);
+emit_16(409);
+emit_16(343);
+emit_16(409);
+emit_16(342);
+emit_16(409);
+emit_16(343);
+emit_16(410);
+emit_16(344);
+emit_16(410);
+emit_16(343);
+emit_16(410);
+emit_16(344);
+emit_16(411);
+emit_16(345);
+emit_16(411);
+emit_16(344);
+emit_16(411);
+emit_16(345);
+emit_16(412);
+emit_16(346);
+emit_16(412);
+emit_16(345);
+emit_16(412);
+emit_16(346);
+emit_16(413);
+emit_16(347);
+emit_16(413);
+emit_16(346);
+emit_16(413);
+emit_16(347);
+emit_16(414);
+emit_16(348);
+emit_16(414);
+emit_16(347);
+emit_16(414);
+emit_16(348);
+emit_16(415);
+emit_16(349);
+emit_16(415);
+emit_16(348);
+emit_16(415);
+emit_16(349);
+emit_16(416);
+emit_16(350);
+emit_16(416);
+emit_16(349);
+emit_16(416);
+emit_16(350);
+emit_16(417);
+emit_16(351);
+emit_16(417);
+emit_16(350);
+emit_16(417);
+emit_16(351);
+emit_16(418);
+emit_16(352);
+emit_16(418);
+emit_16(351);
+emit_16(418);
+emit_16(352);
+emit_16(419);
+emit_16(353);
+emit_16(419);
+emit_16(352);
+emit_16(419);
+emit_16(353);
+emit_16(420);
+emit_16(354);
+emit_16(420);
+emit_16(353);
+emit_16(420);
+emit_16(354);
+emit_16(421);
+emit_16(355);
+emit_16(421);
+emit_16(354);
+emit_16(421);
+emit_16(355);
+emit_16(422);
+emit_16(356);
+emit_16(422);
+emit_16(355);
+emit_16(422);
+emit_16(356);
+emit_16(423);
+emit_16(357);
+emit_16(423);
+emit_16(356);
+emit_16(423);
+emit_16(357);
+emit_16(424);
+emit_16(358);
+emit_16(424);
+emit_16(357);
+emit_16(424);
+emit_16(358);
+emit_16(425);
+emit_16(359);
+emit_16(425);
+emit_16(358);
+emit_16(425);
+emit_16(359);
+emit_16(426);
+emit_16(360);
+emit_16(426);
+emit_16(359);
+emit_16(426);
+emit_16(360);
+emit_16(427);
+emit_16(361);
+emit_16(427);
+emit_16(360);
+emit_16(427);
+emit_16(361);
+emit_16(428);
+emit_16(362);
+emit_16(428);
+emit_16(361);
+emit_16(428);
+emit_16(362);
+emit_16(429);
+emit_16(363);
+emit_16(429);
+emit_16(362);
+emit_16(429);
+emit_16(363);
+emit_16(430);
+emit_16(364);
+emit_16(430);
+emit_16(363);
+emit_16(430);
+emit_16(364);
+emit_16(431);
+emit_16(365);
+emit_16(431);
+emit_16(364);
+emit_16(431);
+emit_16(365);
+emit_16(432);
+emit_16(366);
+emit_16(432);
+emit_16(365);
+emit_16(432);
+emit_16(366);
+emit_16(433);
+emit_16(367);
+emit_16(433);
+emit_16(366);
+emit_16(433);
+emit_16(367);
+emit_16(434);
+emit_16(368);
+emit_16(434);
+emit_16(367);
+emit_16(434);
+emit_16(368);
+emit_16(435);
+emit_16(369);
+emit_16(435);
+emit_16(368);
+emit_16(435);
+emit_16(369);
+emit_16(436);
+emit_16(370);
+emit_16(436);
+emit_16(369);
+emit_16(436);
+emit_16(370);
+emit_16(437);
+emit_16(371);
+emit_16(437);
+emit_16(370);
+emit_16(437);
+emit_16(371);
+emit_16(438);
+emit_16(372);
+emit_16(438);
+emit_16(371);
+emit_16(438);
+emit_16(372);
+emit_16(439);
+emit_16(373);
+emit_16(439);
+emit_16(372);
+emit_16(439);
+emit_16(373);
+emit_16(440);
+emit_16(374);
+emit_16(440);
+emit_16(373);
+emit_16(440);
+emit_16(374);
+emit_16(441);
+emit_16(375);
+emit_16(441);
+emit_16(374);
+emit_16(441);
+emit_16(375);
+emit_16(442);
+emit_16(376);
+emit_16(442);
+emit_16(375);
+emit_16(442);
+emit_16(376);
+emit_16(443);
+emit_16(377);
+emit_16(443);
+emit_16(376);
+emit_16(443);
+emit_16(377);
+emit_16(444);
+emit_16(378);
+emit_16(444);
+emit_16(377);
+emit_16(444);
+emit_16(378);
+emit_16(445);
+emit_16(379);
+emit_16(445);
+emit_16(378);
+emit_16(445);
+emit_16(379);
+emit_16(446);
+emit_16(380);
+emit_16(446);
+emit_16(379);
+emit_16(446);
+emit_16(380);
+emit_16(447);
+emit_16(381);
+emit_16(447);
+emit_16(380);
+emit_16(447);
+emit_16(381);
+emit_16(448);
+emit_16(382);
+emit_16(448);
+emit_16(381);
+emit_16(448);
+emit_16(382);
+emit_16(449);
+emit_16(383);
+emit_16(449);
+emit_16(382);
+emit_16(449);
+emit_16(383);
+emit_16(450);
+emit_16(384);
+emit_16(450);
+emit_16(383);
+emit_16(450);
+emit_16(384);
+emit_16(451);
+emit_16(385);
+emit_16(451);
+emit_16(384);
+emit_16(451);
+emit_16(385);
+emit_16(452);
+emit_16(386);
+emit_16(452);
+emit_16(385);
+emit_16(452);
+emit_16(386);
+emit_16(453);
+emit_16(387);
+emit_16(453);
+emit_16(386);
+emit_16(453);
+emit_16(387);
+emit_16(454);
+emit_16(388);
+emit_16(454);
+emit_16(387);
+emit_16(454);
+emit_16(388);
+emit_16(455);
+emit_16(389);
+emit_16(455);
+emit_16(388);
+emit_16(455);
+emit_16(389);
+emit_16(456);
+emit_16(390);
+emit_16(456);
+emit_16(389);
+emit_16(456);
+emit_16(390);
+emit_16(457);
+emit_16(391);
+emit_16(457);
+emit_16(390);
+emit_16(457);
+emit_16(391);
+emit_16(458);
+emit_16(392);
+emit_16(458);
+emit_16(391);
+emit_16(458);
+emit_16(392);
+emit_16(459);
+emit_16(393);
+emit_16(459);
+emit_16(392);
+emit_16(459);
+emit_16(393);
+emit_16(460);
+emit_16(394);
+emit_16(460);
+emit_16(393);
+emit_16(460);
+emit_16(394);
+emit_16(461);
+emit_16(395);
+emit_16(461);
+emit_16(394);
+emit_16(462);
+emit_16(396);
+emit_16(463);
+emit_16(397);
+emit_16(463);
+emit_16(396);
+emit_16(463);
+emit_16(397);
+emit_16(464);
+emit_16(398);
+emit_16(464);
+emit_16(397);
+emit_16(464);
+emit_16(398);
+emit_16(465);
+emit_16(399);
+emit_16(465);
+emit_16(398);
+emit_16(465);
+emit_16(399);
+emit_16(466);
+emit_16(400);
+emit_16(466);
+emit_16(399);
+emit_16(466);
+emit_16(400);
+emit_16(467);
+emit_16(401);
+emit_16(467);
+emit_16(400);
+emit_16(467);
+emit_16(401);
+emit_16(468);
+emit_16(402);
+emit_16(468);
+emit_16(401);
+emit_16(468);
+emit_16(402);
+emit_16(469);
+emit_16(403);
+emit_16(469);
+emit_16(402);
+emit_16(469);
+emit_16(403);
+emit_16(470);
+emit_16(404);
+emit_16(470);
+emit_16(403);
+emit_16(470);
+emit_16(404);
+emit_16(471);
+emit_16(405);
+emit_16(471);
+emit_16(404);
+emit_16(471);
+emit_16(405);
+emit_16(472);
+emit_16(406);
+emit_16(472);
+emit_16(405);
+emit_16(472);
+emit_16(406);
+emit_16(473);
+emit_16(407);
+emit_16(473);
+emit_16(406);
+emit_16(473);
+emit_16(407);
+emit_16(474);
+emit_16(408);
+emit_16(474);
+emit_16(407);
+emit_16(474);
+emit_16(408);
+emit_16(475);
+emit_16(409);
+emit_16(475);
+emit_16(408);
+emit_16(475);
+emit_16(409);
+emit_16(476);
+emit_16(410);
+emit_16(476);
+emit_16(409);
+emit_16(476);
+emit_16(410);
+emit_16(477);
+emit_16(411);
+emit_16(477);
+emit_16(410);
+emit_16(477);
+emit_16(411);
+emit_16(478);
+emit_16(412);
+emit_16(478);
+emit_16(411);
+emit_16(478);
+emit_16(412);
+emit_16(479);
+emit_16(413);
+emit_16(479);
+emit_16(412);
+emit_16(479);
+emit_16(413);
+emit_16(480);
+emit_16(414);
+emit_16(480);
+emit_16(413);
+emit_16(480);
+emit_16(414);
+emit_16(481);
+emit_16(415);
+emit_16(481);
+emit_16(414);
+emit_16(481);
+emit_16(415);
+emit_16(482);
+emit_16(416);
+emit_16(482);
+emit_16(415);
+emit_16(482);
+emit_16(416);
+emit_16(483);
+emit_16(417);
+emit_16(483);
+emit_16(416);
+emit_16(483);
+emit_16(417);
+emit_16(484);
+emit_16(418);
+emit_16(484);
+emit_16(417);
+emit_16(484);
+emit_16(418);
+emit_16(485);
+emit_16(419);
+emit_16(485);
+emit_16(418);
+emit_16(485);
+emit_16(419);
+emit_16(486);
+emit_16(420);
+emit_16(486);
+emit_16(419);
+emit_16(486);
+emit_16(420);
+emit_16(487);
+emit_16(421);
+emit_16(487);
+emit_16(420);
+emit_16(487);
+emit_16(421);
+emit_16(488);
+emit_16(422);
+emit_16(488);
+emit_16(421);
+emit_16(488);
+emit_16(422);
+emit_16(489);
+emit_16(423);
+emit_16(489);
+emit_16(422);
+emit_16(489);
+emit_16(423);
+emit_16(490);
+emit_16(424);
+emit_16(490);
+emit_16(423);
+emit_16(490);
+emit_16(424);
+emit_16(491);
+emit_16(425);
+emit_16(491);
+emit_16(424);
+emit_16(491);
+emit_16(425);
+emit_16(492);
+emit_16(426);
+emit_16(492);
+emit_16(425);
+emit_16(492);
+emit_16(426);
+emit_16(493);
+emit_16(427);
+emit_16(493);
+emit_16(426);
+emit_16(493);
+emit_16(427);
+emit_16(494);
+emit_16(428);
+emit_16(494);
+emit_16(427);
+emit_16(494);
+emit_16(428);
+emit_16(495);
+emit_16(429);
+emit_16(495);
+emit_16(428);
+emit_16(495);
+emit_16(429);
+emit_16(496);
+emit_16(430);
+emit_16(496);
+emit_16(429);
+emit_16(496);
+emit_16(430);
+emit_16(497);
+emit_16(431);
+emit_16(497);
+emit_16(430);
+emit_16(497);
+emit_16(431);
+emit_16(498);
+emit_16(432);
+emit_16(498);
+emit_16(431);
+emit_16(498);
+emit_16(432);
+emit_16(499);
+emit_16(433);
+emit_16(499);
+emit_16(432);
+emit_16(499);
+emit_16(433);
+emit_16(500);
+emit_16(434);
+emit_16(500);
+emit_16(433);
+emit_16(500);
+emit_16(434);
+emit_16(501);
+emit_16(435);
+emit_16(501);
+emit_16(434);
+emit_16(501);
+emit_16(435);
+emit_16(502);
+emit_16(436);
+emit_16(502);
+emit_16(435);
+emit_16(502);
+emit_16(436);
+emit_16(503);
+emit_16(437);
+emit_16(503);
+emit_16(436);
+emit_16(503);
+emit_16(437);
+emit_16(504);
+emit_16(438);
+emit_16(504);
+emit_16(437);
+emit_16(504);
+emit_16(438);
+emit_16(505);
+emit_16(439);
+emit_16(505);
+emit_16(438);
+emit_16(505);
+emit_16(439);
+emit_16(506);
+emit_16(440);
+emit_16(506);
+emit_16(439);
+emit_16(506);
+emit_16(440);
+emit_16(507);
+emit_16(441);
+emit_16(507);
+emit_16(440);
+emit_16(507);
+emit_16(441);
+emit_16(508);
+emit_16(442);
+emit_16(508);
+emit_16(441);
+emit_16(508);
+emit_16(442);
+emit_16(509);
+emit_16(443);
+emit_16(509);
+emit_16(442);
+emit_16(509);
+emit_16(443);
+emit_16(510);
+emit_16(444);
+emit_16(510);
+emit_16(443);
+emit_16(510);
+emit_16(444);
+emit_16(511);
+emit_16(445);
+emit_16(511);
+emit_16(444);
+emit_16(511);
+emit_16(445);
+emit_16(512);
+emit_16(446);
+emit_16(512);
+emit_16(445);
+emit_16(512);
+emit_16(446);
+emit_16(513);
+emit_16(447);
+emit_16(513);
+emit_16(446);
+emit_16(513);
+emit_16(447);
+emit_16(514);
+emit_16(448);
+emit_16(514);
+emit_16(447);
+emit_16(514);
+emit_16(448);
+emit_16(515);
+emit_16(449);
+emit_16(515);
+emit_16(448);
+emit_16(515);
+emit_16(449);
+emit_16(516);
+emit_16(450);
+emit_16(516);
+emit_16(449);
+emit_16(516);
+emit_16(450);
+emit_16(517);
+emit_16(451);
+emit_16(517);
+emit_16(450);
+emit_16(517);
+emit_16(451);
+emit_16(518);
+emit_16(452);
+emit_16(518);
+emit_16(451);
+emit_16(518);
+emit_16(452);
+emit_16(519);
+emit_16(453);
+emit_16(519);
+emit_16(452);
+emit_16(519);
+emit_16(453);
+emit_16(520);
+emit_16(454);
+emit_16(520);
+emit_16(453);
+emit_16(520);
+emit_16(454);
+emit_16(521);
+emit_16(455);
+emit_16(521);
+emit_16(454);
+emit_16(521);
+emit_16(455);
+emit_16(522);
+emit_16(456);
+emit_16(522);
+emit_16(455);
+emit_16(522);
+emit_16(456);
+emit_16(523);
+emit_16(457);
+emit_16(523);
+emit_16(456);
+emit_16(523);
+emit_16(457);
+emit_16(524);
+emit_16(458);
+emit_16(524);
+emit_16(457);
+emit_16(524);
+emit_16(458);
+emit_16(525);
+emit_16(459);
+emit_16(525);
+emit_16(458);
+emit_16(525);
+emit_16(459);
+emit_16(526);
+emit_16(460);
+emit_16(526);
+emit_16(459);
+emit_16(526);
+emit_16(460);
+emit_16(527);
+emit_16(461);
+emit_16(527);
+emit_16(460);
+emit_16(528);
+emit_16(462);
+emit_16(529);
+emit_16(463);
+emit_16(529);
+emit_16(462);
+emit_16(529);
+emit_16(463);
+emit_16(530);
+emit_16(464);
+emit_16(530);
+emit_16(463);
+emit_16(530);
+emit_16(464);
+emit_16(531);
+emit_16(465);
+emit_16(531);
+emit_16(464);
+emit_16(531);
+emit_16(465);
+emit_16(532);
+emit_16(466);
+emit_16(532);
+emit_16(465);
+emit_16(532);
+emit_16(466);
+emit_16(533);
+emit_16(467);
+emit_16(533);
+emit_16(466);
+emit_16(533);
+emit_16(467);
+emit_16(534);
+emit_16(468);
+emit_16(534);
+emit_16(467);
+emit_16(534);
+emit_16(468);
+emit_16(535);
+emit_16(469);
+emit_16(535);
+emit_16(468);
+emit_16(535);
+emit_16(469);
+emit_16(536);
+emit_16(470);
+emit_16(536);
+emit_16(469);
+emit_16(536);
+emit_16(470);
+emit_16(537);
+emit_16(471);
+emit_16(537);
+emit_16(470);
+emit_16(537);
+emit_16(471);
+emit_16(538);
+emit_16(472);
+emit_16(538);
+emit_16(471);
+emit_16(538);
+emit_16(472);
+emit_16(539);
+emit_16(473);
+emit_16(539);
+emit_16(472);
+emit_16(539);
+emit_16(473);
+emit_16(540);
+emit_16(474);
+emit_16(540);
+emit_16(473);
+emit_16(540);
+emit_16(474);
+emit_16(541);
+emit_16(475);
+emit_16(541);
+emit_16(474);
+emit_16(541);
+emit_16(475);
+emit_16(542);
+emit_16(476);
+emit_16(542);
+emit_16(475);
+emit_16(542);
+emit_16(476);
+emit_16(543);
+emit_16(477);
+emit_16(543);
+emit_16(476);
+emit_16(543);
+emit_16(477);
+emit_16(544);
+emit_16(478);
+emit_16(544);
+emit_16(477);
+emit_16(544);
+emit_16(478);
+emit_16(545);
+emit_16(479);
+emit_16(545);
+emit_16(478);
+emit_16(545);
+emit_16(479);
+emit_16(546);
+emit_16(480);
+emit_16(546);
+emit_16(479);
+emit_16(546);
+emit_16(480);
+emit_16(547);
+emit_16(481);
+emit_16(547);
+emit_16(480);
+emit_16(547);
+emit_16(481);
+emit_16(548);
+emit_16(482);
+emit_16(548);
+emit_16(481);
+emit_16(548);
+emit_16(482);
+emit_16(549);
+emit_16(483);
+emit_16(549);
+emit_16(482);
+emit_16(549);
+emit_16(483);
+emit_16(550);
+emit_16(484);
+emit_16(550);
+emit_16(483);
+emit_16(550);
+emit_16(484);
+emit_16(551);
+emit_16(485);
+emit_16(551);
+emit_16(484);
+emit_16(551);
+emit_16(485);
+emit_16(552);
+emit_16(486);
+emit_16(552);
+emit_16(485);
+emit_16(552);
+emit_16(486);
+emit_16(553);
+emit_16(487);
+emit_16(553);
+emit_16(486);
+emit_16(553);
+emit_16(487);
+emit_16(554);
+emit_16(488);
+emit_16(554);
+emit_16(487);
+emit_16(554);
+emit_16(488);
+emit_16(555);
+emit_16(489);
+emit_16(555);
+emit_16(488);
+emit_16(555);
+emit_16(489);
+emit_16(556);
+emit_16(490);
+emit_16(556);
+emit_16(489);
+emit_16(556);
+emit_16(490);
+emit_16(557);
+emit_16(491);
+emit_16(557);
+emit_16(490);
+emit_16(557);
+emit_16(491);
+emit_16(558);
+emit_16(492);
+emit_16(558);
+emit_16(491);
+emit_16(558);
+emit_16(492);
+emit_16(559);
+emit_16(493);
+emit_16(559);
+emit_16(492);
+emit_16(559);
+emit_16(493);
+emit_16(560);
+emit_16(494);
+emit_16(560);
+emit_16(493);
+emit_16(560);
+emit_16(494);
+emit_16(561);
+emit_16(495);
+emit_16(561);
+emit_16(494);
+emit_16(561);
+emit_16(495);
+emit_16(562);
+emit_16(496);
+emit_16(562);
+emit_16(495);
+emit_16(562);
+emit_16(496);
+emit_16(563);
+emit_16(497);
+emit_16(563);
+emit_16(496);
+emit_16(563);
+emit_16(497);
+emit_16(564);
+emit_16(498);
+emit_16(564);
+emit_16(497);
+emit_16(564);
+emit_16(498);
+emit_16(565);
+emit_16(499);
+emit_16(565);
+emit_16(498);
+emit_16(565);
+emit_16(499);
+emit_16(566);
+emit_16(500);
+emit_16(566);
+emit_16(499);
+emit_16(566);
+emit_16(500);
+emit_16(567);
+emit_16(501);
+emit_16(567);
+emit_16(500);
+emit_16(567);
+emit_16(501);
+emit_16(568);
+emit_16(502);
+emit_16(568);
+emit_16(501);
+emit_16(568);
+emit_16(502);
+emit_16(569);
+emit_16(503);
+emit_16(569);
+emit_16(502);
+emit_16(569);
+emit_16(503);
+emit_16(570);
+emit_16(504);
+emit_16(570);
+emit_16(503);
+emit_16(570);
+emit_16(504);
+emit_16(571);
+emit_16(505);
+emit_16(571);
+emit_16(504);
+emit_16(571);
+emit_16(505);
+emit_16(572);
+emit_16(506);
+emit_16(572);
+emit_16(505);
+emit_16(572);
+emit_16(506);
+emit_16(573);
+emit_16(507);
+emit_16(573);
+emit_16(506);
+emit_16(573);
+emit_16(507);
+emit_16(574);
+emit_16(508);
+emit_16(574);
+emit_16(507);
+emit_16(574);
+emit_16(508);
+emit_16(575);
+emit_16(509);
+emit_16(575);
+emit_16(508);
+emit_16(575);
+emit_16(509);
+emit_16(576);
+emit_16(510);
+emit_16(576);
+emit_16(509);
+emit_16(576);
+emit_16(510);
+emit_16(577);
+emit_16(511);
+emit_16(577);
+emit_16(510);
+emit_16(577);
+emit_16(511);
+emit_16(578);
+emit_16(512);
+emit_16(578);
+emit_16(511);
+emit_16(578);
+emit_16(512);
+emit_16(579);
+emit_16(513);
+emit_16(579);
+emit_16(512);
+emit_16(579);
+emit_16(513);
+emit_16(580);
+emit_16(514);
+emit_16(580);
+emit_16(513);
+emit_16(580);
+emit_16(514);
+emit_16(581);
+emit_16(515);
+emit_16(581);
+emit_16(514);
+emit_16(581);
+emit_16(515);
+emit_16(582);
+emit_16(516);
+emit_16(582);
+emit_16(515);
+emit_16(582);
+emit_16(516);
+emit_16(583);
+emit_16(517);
+emit_16(583);
+emit_16(516);
+emit_16(583);
+emit_16(517);
+emit_16(584);
+emit_16(518);
+emit_16(584);
+emit_16(517);
+emit_16(584);
+emit_16(518);
+emit_16(585);
+emit_16(519);
+emit_16(585);
+emit_16(518);
+emit_16(585);
+emit_16(519);
+emit_16(586);
+emit_16(520);
+emit_16(586);
+emit_16(519);
+emit_16(586);
+emit_16(520);
+emit_16(587);
+emit_16(521);
+emit_16(587);
+emit_16(520);
+emit_16(587);
+emit_16(521);
+emit_16(588);
+emit_16(522);
+emit_16(588);
+emit_16(521);
+emit_16(588);
+emit_16(522);
+emit_16(589);
+emit_16(523);
+emit_16(589);
+emit_16(522);
+emit_16(589);
+emit_16(523);
+emit_16(590);
+emit_16(524);
+emit_16(590);
+emit_16(523);
+emit_16(590);
+emit_16(524);
+emit_16(591);
+emit_16(525);
+emit_16(591);
+emit_16(524);
+emit_16(591);
+emit_16(525);
+emit_16(592);
+emit_16(526);
+emit_16(592);
+emit_16(525);
+emit_16(592);
+emit_16(526);
+emit_16(593);
+emit_16(527);
+emit_16(593);
+emit_16(526);
+emit_16(594);
+emit_16(528);
+emit_16(595);
+emit_16(529);
+emit_16(595);
+emit_16(528);
+emit_16(595);
+emit_16(529);
+emit_16(596);
+emit_16(530);
+emit_16(596);
+emit_16(529);
+emit_16(596);
+emit_16(530);
+emit_16(597);
+emit_16(531);
+emit_16(597);
+emit_16(530);
+emit_16(597);
+emit_16(531);
+emit_16(598);
+emit_16(532);
+emit_16(598);
+emit_16(531);
+emit_16(598);
+emit_16(532);
+emit_16(599);
+emit_16(533);
+emit_16(599);
+emit_16(532);
+emit_16(599);
+emit_16(533);
+emit_16(600);
+emit_16(534);
+emit_16(600);
+emit_16(533);
+emit_16(600);
+emit_16(534);
+emit_16(601);
+emit_16(535);
+emit_16(601);
+emit_16(534);
+emit_16(601);
+emit_16(535);
+emit_16(602);
+emit_16(536);
+emit_16(602);
+emit_16(535);
+emit_16(602);
+emit_16(536);
+emit_16(603);
+emit_16(537);
+emit_16(603);
+emit_16(536);
+emit_16(603);
+emit_16(537);
+emit_16(604);
+emit_16(538);
+emit_16(604);
+emit_16(537);
+emit_16(604);
+emit_16(538);
+emit_16(605);
+emit_16(539);
+emit_16(605);
+emit_16(538);
+emit_16(605);
+emit_16(539);
+emit_16(606);
+emit_16(540);
+emit_16(606);
+emit_16(539);
+emit_16(606);
+emit_16(540);
+emit_16(607);
+emit_16(541);
+emit_16(607);
+emit_16(540);
+emit_16(607);
+emit_16(541);
+emit_16(608);
+emit_16(542);
+emit_16(608);
+emit_16(541);
+emit_16(608);
+emit_16(542);
+emit_16(609);
+emit_16(543);
+emit_16(609);
+emit_16(542);
+emit_16(609);
+emit_16(543);
+emit_16(610);
+emit_16(544);
+emit_16(610);
+emit_16(543);
+emit_16(610);
+emit_16(544);
+emit_16(611);
+emit_16(545);
+emit_16(611);
+emit_16(544);
+emit_16(611);
+emit_16(545);
+emit_16(612);
+emit_16(546);
+emit_16(612);
+emit_16(545);
+emit_16(612);
+emit_16(546);
+emit_16(613);
+emit_16(547);
+emit_16(613);
+emit_16(546);
+emit_16(613);
+emit_16(547);
+emit_16(614);
+emit_16(548);
+emit_16(614);
+emit_16(547);
+emit_16(614);
+emit_16(548);
+emit_16(615);
+emit_16(549);
+emit_16(615);
+emit_16(548);
+emit_16(615);
+emit_16(549);
+emit_16(616);
+emit_16(550);
+emit_16(616);
+emit_16(549);
+emit_16(616);
+emit_16(550);
+emit_16(617);
+emit_16(551);
+emit_16(617);
+emit_16(550);
+emit_16(617);
+emit_16(551);
+emit_16(618);
+emit_16(552);
+emit_16(618);
+emit_16(551);
+emit_16(618);
+emit_16(552);
+emit_16(619);
+emit_16(553);
+emit_16(619);
+emit_16(552);
+emit_16(619);
+emit_16(553);
+emit_16(620);
+emit_16(554);
+emit_16(620);
+emit_16(553);
+emit_16(620);
+emit_16(554);
+emit_16(621);
+emit_16(555);
+emit_16(621);
+emit_16(554);
+emit_16(621);
+emit_16(555);
+emit_16(622);
+emit_16(556);
+emit_16(622);
+emit_16(555);
+emit_16(622);
+emit_16(556);
+emit_16(623);
+emit_16(557);
+emit_16(623);
+emit_16(556);
+emit_16(623);
+emit_16(557);
+emit_16(624);
+emit_16(558);
+emit_16(624);
+emit_16(557);
+emit_16(624);
+emit_16(558);
+emit_16(625);
+emit_16(559);
+emit_16(625);
+emit_16(558);
+emit_16(625);
+emit_16(559);
+emit_16(626);
+emit_16(560);
+emit_16(626);
+emit_16(559);
+emit_16(626);
+emit_16(560);
+emit_16(627);
+emit_16(561);
+emit_16(627);
+emit_16(560);
+emit_16(627);
+emit_16(561);
+emit_16(628);
+emit_16(562);
+emit_16(628);
+emit_16(561);
+emit_16(628);
+emit_16(562);
+emit_16(629);
+emit_16(563);
+emit_16(629);
+emit_16(562);
+emit_16(629);
+emit_16(563);
+emit_16(630);
+emit_16(564);
+emit_16(630);
+emit_16(563);
+emit_16(630);
+emit_16(564);
+emit_16(631);
+emit_16(565);
+emit_16(631);
+emit_16(564);
+emit_16(631);
+emit_16(565);
+emit_16(632);
+emit_16(566);
+emit_16(632);
+emit_16(565);
+emit_16(632);
+emit_16(566);
+emit_16(633);
+emit_16(567);
+emit_16(633);
+emit_16(566);
+emit_16(633);
+emit_16(567);
+emit_16(634);
+emit_16(568);
+emit_16(634);
+emit_16(567);
+emit_16(634);
+emit_16(568);
+emit_16(635);
+emit_16(569);
+emit_16(635);
+emit_16(568);
+emit_16(635);
+emit_16(569);
+emit_16(636);
+emit_16(570);
+emit_16(636);
+emit_16(569);
+emit_16(636);
+emit_16(570);
+emit_16(637);
+emit_16(571);
+emit_16(637);
+emit_16(570);
+emit_16(637);
+emit_16(571);
+emit_16(638);
+emit_16(572);
+emit_16(638);
+emit_16(571);
+emit_16(638);
+emit_16(572);
+emit_16(639);
+emit_16(573);
+emit_16(639);
+emit_16(572);
+emit_16(639);
+emit_16(573);
+emit_16(640);
+emit_16(574);
+emit_16(640);
+emit_16(573);
+emit_16(640);
+emit_16(574);
+emit_16(641);
+emit_16(575);
+emit_16(641);
+emit_16(574);
+emit_16(641);
+emit_16(575);
+emit_16(642);
+emit_16(576);
+emit_16(642);
+emit_16(575);
+emit_16(642);
+emit_16(576);
+emit_16(643);
+emit_16(577);
+emit_16(643);
+emit_16(576);
+emit_16(643);
+emit_16(577);
+emit_16(644);
+emit_16(578);
+emit_16(644);
+emit_16(577);
+emit_16(644);
+emit_16(578);
+emit_16(645);
+emit_16(579);
+emit_16(645);
+emit_16(578);
+emit_16(645);
+emit_16(579);
+emit_16(646);
+emit_16(580);
+emit_16(646);
+emit_16(579);
+emit_16(646);
+emit_16(580);
+emit_16(647);
+emit_16(581);
+emit_16(647);
+emit_16(580);
+emit_16(647);
+emit_16(581);
+emit_16(648);
+emit_16(582);
+emit_16(648);
+emit_16(581);
+emit_16(648);
+emit_16(582);
+emit_16(649);
+emit_16(583);
+emit_16(649);
+emit_16(582);
+emit_16(649);
+emit_16(583);
+emit_16(650);
+emit_16(584);
+emit_16(650);
+emit_16(583);
+emit_16(650);
+emit_16(584);
+emit_16(651);
+emit_16(585);
+emit_16(651);
+emit_16(584);
+emit_16(651);
+emit_16(585);
+emit_16(652);
+emit_16(586);
+emit_16(652);
+emit_16(585);
+emit_16(652);
+emit_16(586);
+emit_16(653);
+emit_16(587);
+emit_16(653);
+emit_16(586);
+emit_16(653);
+emit_16(587);
+emit_16(654);
+emit_16(588);
+emit_16(654);
+emit_16(587);
+emit_16(654);
+emit_16(588);
+emit_16(655);
+emit_16(589);
+emit_16(655);
+emit_16(588);
+emit_16(655);
+emit_16(589);
+emit_16(656);
+emit_16(590);
+emit_16(656);
+emit_16(589);
+emit_16(656);
+emit_16(590);
+emit_16(657);
+emit_16(591);
+emit_16(657);
+emit_16(590);
+emit_16(657);
+emit_16(591);
+emit_16(658);
+emit_16(592);
+emit_16(658);
+emit_16(591);
+emit_16(658);
+emit_16(592);
+emit_16(659);
+emit_16(593);
+emit_16(659);
+emit_16(592);
+emit_16(660);
+emit_16(594);
+emit_16(661);
+emit_16(595);
+emit_16(661);
+emit_16(594);
+emit_16(661);
+emit_16(595);
+emit_16(662);
+emit_16(596);
+emit_16(662);
+emit_16(595);
+emit_16(662);
+emit_16(596);
+emit_16(663);
+emit_16(597);
+emit_16(663);
+emit_16(596);
+emit_16(663);
+emit_16(597);
+emit_16(664);
+emit_16(598);
+emit_16(664);
+emit_16(597);
+emit_16(664);
+emit_16(598);
+emit_16(665);
+emit_16(599);
+emit_16(665);
+emit_16(598);
+emit_16(665);
+emit_16(599);
+emit_16(666);
+emit_16(600);
+emit_16(666);
+emit_16(599);
+emit_16(666);
+emit_16(600);
+emit_16(667);
+emit_16(601);
+emit_16(667);
+emit_16(600);
+emit_16(667);
+emit_16(601);
+emit_16(668);
+emit_16(602);
+emit_16(668);
+emit_16(601);
+emit_16(668);
+emit_16(602);
+emit_16(669);
+emit_16(603);
+emit_16(669);
+emit_16(602);
+emit_16(669);
+emit_16(603);
+emit_16(670);
+emit_16(604);
+emit_16(670);
+emit_16(603);
+emit_16(670);
+emit_16(604);
+emit_16(671);
+emit_16(605);
+emit_16(671);
+emit_16(604);
+emit_16(671);
+emit_16(605);
+emit_16(672);
+emit_16(606);
+emit_16(672);
+emit_16(605);
+emit_16(672);
+emit_16(606);
+emit_16(673);
+emit_16(607);
+emit_16(673);
+emit_16(606);
+emit_16(673);
+emit_16(607);
+emit_16(674);
+emit_16(608);
+emit_16(674);
+emit_16(607);
+emit_16(674);
+emit_16(608);
+emit_16(675);
+emit_16(609);
+emit_16(675);
+emit_16(608);
+emit_16(675);
+emit_16(609);
+emit_16(676);
+emit_16(610);
+emit_16(676);
+emit_16(609);
+emit_16(676);
+emit_16(610);
+emit_16(677);
+emit_16(611);
+emit_16(677);
+emit_16(610);
+emit_16(677);
+emit_16(611);
+emit_16(678);
+emit_16(612);
+emit_16(678);
+emit_16(611);
+emit_16(678);
+emit_16(612);
+emit_16(679);
+emit_16(613);
+emit_16(679);
+emit_16(612);
+emit_16(679);
+emit_16(613);
+emit_16(680);
+emit_16(614);
+emit_16(680);
+emit_16(613);
+emit_16(680);
+emit_16(614);
+emit_16(681);
+emit_16(615);
+emit_16(681);
+emit_16(614);
+emit_16(681);
+emit_16(615);
+emit_16(682);
+emit_16(616);
+emit_16(682);
+emit_16(615);
+emit_16(682);
+emit_16(616);
+emit_16(683);
+emit_16(617);
+emit_16(683);
+emit_16(616);
+emit_16(683);
+emit_16(617);
+emit_16(684);
+emit_16(618);
+emit_16(684);
+emit_16(617);
+emit_16(684);
+emit_16(618);
+emit_16(685);
+emit_16(619);
+emit_16(685);
+emit_16(618);
+emit_16(685);
+emit_16(619);
+emit_16(686);
+emit_16(620);
+emit_16(686);
+emit_16(619);
+emit_16(686);
+emit_16(620);
+emit_16(687);
+emit_16(621);
+emit_16(687);
+emit_16(620);
+emit_16(687);
+emit_16(621);
+emit_16(688);
+emit_16(622);
+emit_16(688);
+emit_16(621);
+emit_16(688);
+emit_16(622);
+emit_16(689);
+emit_16(623);
+emit_16(689);
+emit_16(622);
+emit_16(689);
+emit_16(623);
+emit_16(690);
+emit_16(624);
+emit_16(690);
+emit_16(623);
+emit_16(690);
+emit_16(624);
+emit_16(691);
+emit_16(625);
+emit_16(691);
+emit_16(624);
+emit_16(691);
+emit_16(625);
+emit_16(692);
+emit_16(626);
+emit_16(692);
+emit_16(625);
+emit_16(692);
+emit_16(626);
+emit_16(693);
+emit_16(627);
+emit_16(693);
+emit_16(626);
+emit_16(693);
+emit_16(627);
+emit_16(694);
+emit_16(628);
+emit_16(694);
+emit_16(627);
+emit_16(694);
+emit_16(628);
+emit_16(695);
+emit_16(629);
+emit_16(695);
+emit_16(628);
+emit_16(695);
+emit_16(629);
+emit_16(696);
+emit_16(630);
+emit_16(696);
+emit_16(629);
+emit_16(696);
+emit_16(630);
+emit_16(697);
+emit_16(631);
+emit_16(697);
+emit_16(630);
+emit_16(697);
+emit_16(631);
+emit_16(698);
+emit_16(632);
+emit_16(698);
+emit_16(631);
+emit_16(698);
+emit_16(632);
+emit_16(699);
+emit_16(633);
+emit_16(699);
+emit_16(632);
+emit_16(699);
+emit_16(633);
+emit_16(700);
+emit_16(634);
+emit_16(700);
+emit_16(633);
+emit_16(700);
+emit_16(634);
+emit_16(701);
+emit_16(635);
+emit_16(701);
+emit_16(634);
+emit_16(701);
+emit_16(635);
+emit_16(702);
+emit_16(636);
+emit_16(702);
+emit_16(635);
+emit_16(702);
+emit_16(636);
+emit_16(703);
+emit_16(637);
+emit_16(703);
+emit_16(636);
+emit_16(703);
+emit_16(637);
+emit_16(704);
+emit_16(638);
+emit_16(704);
+emit_16(637);
+emit_16(704);
+emit_16(638);
+emit_16(705);
+emit_16(639);
+emit_16(705);
+emit_16(638);
+emit_16(705);
+emit_16(639);
+emit_16(706);
+emit_16(640);
+emit_16(706);
+emit_16(639);
+emit_16(706);
+emit_16(640);
+emit_16(707);
+emit_16(641);
+emit_16(707);
+emit_16(640);
+emit_16(707);
+emit_16(641);
+emit_16(708);
+emit_16(642);
+emit_16(708);
+emit_16(641);
+emit_16(708);
+emit_16(642);
+emit_16(709);
+emit_16(643);
+emit_16(709);
+emit_16(642);
+emit_16(709);
+emit_16(643);
+emit_16(710);
+emit_16(644);
+emit_16(710);
+emit_16(643);
+emit_16(710);
+emit_16(644);
+emit_16(711);
+emit_16(645);
+emit_16(711);
+emit_16(644);
+emit_16(711);
+emit_16(645);
+emit_16(712);
+emit_16(646);
+emit_16(712);
+emit_16(645);
+emit_16(712);
+emit_16(646);
+emit_16(713);
+emit_16(647);
+emit_16(713);
+emit_16(646);
+emit_16(713);
+emit_16(647);
+emit_16(714);
+emit_16(648);
+emit_16(714);
+emit_16(647);
+emit_16(714);
+emit_16(648);
+emit_16(715);
+emit_16(649);
+emit_16(715);
+emit_16(648);
+emit_16(715);
+emit_16(649);
+emit_16(716);
+emit_16(650);
+emit_16(716);
+emit_16(649);
+emit_16(716);
+emit_16(650);
+emit_16(717);
+emit_16(651);
+emit_16(717);
+emit_16(650);
+emit_16(717);
+emit_16(651);
+emit_16(718);
+emit_16(652);
+emit_16(718);
+emit_16(651);
+emit_16(718);
+emit_16(652);
+emit_16(719);
+emit_16(653);
+emit_16(719);
+emit_16(652);
+emit_16(719);
+emit_16(653);
+emit_16(720);
+emit_16(654);
+emit_16(720);
+emit_16(653);
+emit_16(720);
+emit_16(654);
+emit_16(721);
+emit_16(655);
+emit_16(721);
+emit_16(654);
+emit_16(721);
+emit_16(655);
+emit_16(722);
+emit_16(656);
+emit_16(722);
+emit_16(655);
+emit_16(722);
+emit_16(656);
+emit_16(723);
+emit_16(657);
+emit_16(723);
+emit_16(656);
+emit_16(723);
+emit_16(657);
+emit_16(724);
+emit_16(658);
+emit_16(724);
+emit_16(657);
+emit_16(724);
+emit_16(658);
+emit_16(725);
+emit_16(659);
+emit_16(725);
+emit_16(658);
+emit_16(726);
+emit_16(660);
+emit_16(727);
+emit_16(661);
+emit_16(727);
+emit_16(660);
+emit_16(727);
+emit_16(661);
+emit_16(728);
+emit_16(662);
+emit_16(728);
+emit_16(661);
+emit_16(728);
+emit_16(662);
+emit_16(729);
+emit_16(663);
+emit_16(729);
+emit_16(662);
+emit_16(729);
+emit_16(663);
+emit_16(730);
+emit_16(664);
+emit_16(730);
+emit_16(663);
+emit_16(730);
+emit_16(664);
+emit_16(731);
+emit_16(665);
+emit_16(731);
+emit_16(664);
+emit_16(731);
+emit_16(665);
+emit_16(732);
+emit_16(666);
+emit_16(732);
+emit_16(665);
+emit_16(732);
+emit_16(666);
+emit_16(733);
+emit_16(667);
+emit_16(733);
+emit_16(666);
+emit_16(733);
+emit_16(667);
+emit_16(734);
+emit_16(668);
+emit_16(734);
+emit_16(667);
+emit_16(734);
+emit_16(668);
+emit_16(735);
+emit_16(669);
+emit_16(735);
+emit_16(668);
+emit_16(735);
+emit_16(669);
+emit_16(736);
+emit_16(670);
+emit_16(736);
+emit_16(669);
+emit_16(736);
+emit_16(670);
+emit_16(737);
+emit_16(671);
+emit_16(737);
+emit_16(670);
+emit_16(737);
+emit_16(671);
+emit_16(738);
+emit_16(672);
+emit_16(738);
+emit_16(671);
+emit_16(738);
+emit_16(672);
+emit_16(739);
+emit_16(673);
+emit_16(739);
+emit_16(672);
+emit_16(739);
+emit_16(673);
+emit_16(740);
+emit_16(674);
+emit_16(740);
+emit_16(673);
+emit_16(740);
+emit_16(674);
+emit_16(741);
+emit_16(675);
+emit_16(741);
+emit_16(674);
+emit_16(741);
+emit_16(675);
+emit_16(742);
+emit_16(676);
+emit_16(742);
+emit_16(675);
+emit_16(742);
+emit_16(676);
+emit_16(743);
+emit_16(677);
+emit_16(743);
+emit_16(676);
+emit_16(743);
+emit_16(677);
+emit_16(744);
+emit_16(678);
+emit_16(744);
+emit_16(677);
+emit_16(744);
+emit_16(678);
+emit_16(745);
+emit_16(679);
+emit_16(745);
+emit_16(678);
+emit_16(745);
+emit_16(679);
+emit_16(746);
+emit_16(680);
+emit_16(746);
+emit_16(679);
+emit_16(746);
+emit_16(680);
+emit_16(747);
+emit_16(681);
+emit_16(747);
+emit_16(680);
+emit_16(747);
+emit_16(681);
+emit_16(748);
+emit_16(682);
+emit_16(748);
+emit_16(681);
+emit_16(748);
+emit_16(682);
+emit_16(749);
+emit_16(683);
+emit_16(749);
+emit_16(682);
+emit_16(749);
+emit_16(683);
+emit_16(750);
+emit_16(684);
+emit_16(750);
+emit_16(683);
+emit_16(750);
+emit_16(684);
+emit_16(751);
+emit_16(685);
+emit_16(751);
+emit_16(684);
+emit_16(751);
+emit_16(685);
+emit_16(752);
+emit_16(686);
+emit_16(752);
+emit_16(685);
+emit_16(752);
+emit_16(686);
+emit_16(753);
+emit_16(687);
+emit_16(753);
+emit_16(686);
+emit_16(753);
+emit_16(687);
+emit_16(754);
+emit_16(688);
+emit_16(754);
+emit_16(687);
+emit_16(754);
+emit_16(688);
+emit_16(755);
+emit_16(689);
+emit_16(755);
+emit_16(688);
+emit_16(755);
+emit_16(689);
+emit_16(756);
+emit_16(690);
+emit_16(756);
+emit_16(689);
+emit_16(756);
+emit_16(690);
+emit_16(757);
+emit_16(691);
+emit_16(757);
+emit_16(690);
+emit_16(757);
+emit_16(691);
+emit_16(758);
+emit_16(692);
+emit_16(758);
+emit_16(691);
+emit_16(758);
+emit_16(692);
+emit_16(759);
+emit_16(693);
+emit_16(759);
+emit_16(692);
+emit_16(759);
+emit_16(693);
+emit_16(760);
+emit_16(694);
+emit_16(760);
+emit_16(693);
+emit_16(760);
+emit_16(694);
+emit_16(761);
+emit_16(695);
+emit_16(761);
+emit_16(694);
+emit_16(761);
+emit_16(695);
+emit_16(762);
+emit_16(696);
+emit_16(762);
+emit_16(695);
+emit_16(762);
+emit_16(696);
+emit_16(763);
+emit_16(697);
+emit_16(763);
+emit_16(696);
+emit_16(763);
+emit_16(697);
+emit_16(764);
+emit_16(698);
+emit_16(764);
+emit_16(697);
+emit_16(764);
+emit_16(698);
+emit_16(765);
+emit_16(699);
+emit_16(765);
+emit_16(698);
+emit_16(765);
+emit_16(699);
+emit_16(766);
+emit_16(700);
+emit_16(766);
+emit_16(699);
+emit_16(766);
+emit_16(700);
+emit_16(767);
+emit_16(701);
+emit_16(767);
+emit_16(700);
+emit_16(767);
+emit_16(701);
+emit_16(768);
+emit_16(702);
+emit_16(768);
+emit_16(701);
+emit_16(768);
+emit_16(702);
+emit_16(769);
+emit_16(703);
+emit_16(769);
+emit_16(702);
+emit_16(769);
+emit_16(703);
+emit_16(770);
+emit_16(704);
+emit_16(770);
+emit_16(703);
+emit_16(770);
+emit_16(704);
+emit_16(771);
+emit_16(705);
+emit_16(771);
+emit_16(704);
+emit_16(771);
+emit_16(705);
+emit_16(772);
+emit_16(706);
+emit_16(772);
+emit_16(705);
+emit_16(772);
+emit_16(706);
+emit_16(773);
+emit_16(707);
+emit_16(773);
+emit_16(706);
+emit_16(773);
+emit_16(707);
+emit_16(774);
+emit_16(708);
+emit_16(774);
+emit_16(707);
+emit_16(774);
+emit_16(708);
+emit_16(775);
+emit_16(709);
+emit_16(775);
+emit_16(708);
+emit_16(775);
+emit_16(709);
+emit_16(776);
+emit_16(710);
+emit_16(776);
+emit_16(709);
+emit_16(776);
+emit_16(710);
+emit_16(777);
+emit_16(711);
+emit_16(777);
+emit_16(710);
+emit_16(777);
+emit_16(711);
+emit_16(778);
+emit_16(712);
+emit_16(778);
+emit_16(711);
+emit_16(778);
+emit_16(712);
+emit_16(779);
+emit_16(713);
+emit_16(779);
+emit_16(712);
+emit_16(779);
+emit_16(713);
+emit_16(780);
+emit_16(714);
+emit_16(780);
+emit_16(713);
+emit_16(780);
+emit_16(714);
+emit_16(781);
+emit_16(715);
+emit_16(781);
+emit_16(714);
+emit_16(781);
+emit_16(715);
+emit_16(782);
+emit_16(716);
+emit_16(782);
+emit_16(715);
+emit_16(782);
+emit_16(716);
+emit_16(783);
+emit_16(717);
+emit_16(783);
+emit_16(716);
+emit_16(783);
+emit_16(717);
+emit_16(784);
+emit_16(718);
+emit_16(784);
+emit_16(717);
+emit_16(784);
+emit_16(718);
+emit_16(785);
+emit_16(719);
+emit_16(785);
+emit_16(718);
+emit_16(785);
+emit_16(719);
+emit_16(786);
+emit_16(720);
+emit_16(786);
+emit_16(719);
+emit_16(786);
+emit_16(720);
+emit_16(787);
+emit_16(721);
+emit_16(787);
+emit_16(720);
+emit_16(787);
+emit_16(721);
+emit_16(788);
+emit_16(722);
+emit_16(788);
+emit_16(721);
+emit_16(788);
+emit_16(722);
+emit_16(789);
+emit_16(723);
+emit_16(789);
+emit_16(722);
+emit_16(789);
+emit_16(723);
+emit_16(790);
+emit_16(724);
+emit_16(790);
+emit_16(723);
+emit_16(790);
+emit_16(724);
+emit_16(791);
+emit_16(725);
+emit_16(791);
+emit_16(724);
+emit_16(792);
+emit_16(726);
+emit_16(793);
+emit_16(727);
+emit_16(793);
+emit_16(726);
+emit_16(793);
+emit_16(727);
+emit_16(794);
+emit_16(728);
+emit_16(794);
+emit_16(727);
+emit_16(794);
+emit_16(728);
+emit_16(795);
+emit_16(729);
+emit_16(795);
+emit_16(728);
+emit_16(795);
+emit_16(729);
+emit_16(796);
+emit_16(730);
+emit_16(796);
+emit_16(729);
+emit_16(796);
+emit_16(730);
+emit_16(797);
+emit_16(731);
+emit_16(797);
+emit_16(730);
+emit_16(797);
+emit_16(731);
+emit_16(798);
+emit_16(732);
+emit_16(798);
+emit_16(731);
+emit_16(798);
+emit_16(732);
+emit_16(799);
+emit_16(733);
+emit_16(799);
+emit_16(732);
+emit_16(799);
+emit_16(733);
+emit_16(800);
+emit_16(734);
+emit_16(800);
+emit_16(733);
+emit_16(800);
+emit_16(734);
+emit_16(801);
+emit_16(735);
+emit_16(801);
+emit_16(734);
+emit_16(801);
+emit_16(735);
+emit_16(802);
+emit_16(736);
+emit_16(802);
+emit_16(735);
+emit_16(802);
+emit_16(736);
+emit_16(803);
+emit_16(737);
+emit_16(803);
+emit_16(736);
+emit_16(803);
+emit_16(737);
+emit_16(804);
+emit_16(738);
+emit_16(804);
+emit_16(737);
+emit_16(804);
+emit_16(738);
+emit_16(805);
+emit_16(739);
+emit_16(805);
+emit_16(738);
+emit_16(805);
+emit_16(739);
+emit_16(806);
+emit_16(740);
+emit_16(806);
+emit_16(739);
+emit_16(806);
+emit_16(740);
+emit_16(807);
+emit_16(741);
+emit_16(807);
+emit_16(740);
+emit_16(807);
+emit_16(741);
+emit_16(808);
+emit_16(742);
+emit_16(808);
+emit_16(741);
+emit_16(808);
+emit_16(742);
+emit_16(809);
+emit_16(743);
+emit_16(809);
+emit_16(742);
+emit_16(809);
+emit_16(743);
+emit_16(810);
+emit_16(744);
+emit_16(810);
+emit_16(743);
+emit_16(810);
+emit_16(744);
+emit_16(811);
+emit_16(745);
+emit_16(811);
+emit_16(744);
+emit_16(811);
+emit_16(745);
+emit_16(812);
+emit_16(746);
+emit_16(812);
+emit_16(745);
+emit_16(812);
+emit_16(746);
+emit_16(813);
+emit_16(747);
+emit_16(813);
+emit_16(746);
+emit_16(813);
+emit_16(747);
+emit_16(814);
+emit_16(748);
+emit_16(814);
+emit_16(747);
+emit_16(814);
+emit_16(748);
+emit_16(815);
+emit_16(749);
+emit_16(815);
+emit_16(748);
+emit_16(815);
+emit_16(749);
+emit_16(816);
+emit_16(750);
+emit_16(816);
+emit_16(749);
+emit_16(816);
+emit_16(750);
+emit_16(817);
+emit_16(751);
+emit_16(817);
+emit_16(750);
+emit_16(817);
+emit_16(751);
+emit_16(818);
+emit_16(752);
+emit_16(818);
+emit_16(751);
+emit_16(818);
+emit_16(752);
+emit_16(819);
+emit_16(753);
+emit_16(819);
+emit_16(752);
+emit_16(819);
+emit_16(753);
+emit_16(820);
+emit_16(754);
+emit_16(820);
+emit_16(753);
+emit_16(820);
+emit_16(754);
+emit_16(821);
+emit_16(755);
+emit_16(821);
+emit_16(754);
+emit_16(821);
+emit_16(755);
+emit_16(822);
+emit_16(756);
+emit_16(822);
+emit_16(755);
+emit_16(822);
+emit_16(756);
+emit_16(823);
+emit_16(757);
+emit_16(823);
+emit_16(756);
+emit_16(823);
+emit_16(757);
+emit_16(824);
+emit_16(758);
+emit_16(824);
+emit_16(757);
+emit_16(824);
+emit_16(758);
+emit_16(825);
+emit_16(759);
+emit_16(825);
+emit_16(758);
+emit_16(825);
+emit_16(759);
+emit_16(826);
+emit_16(760);
+emit_16(826);
+emit_16(759);
+emit_16(826);
+emit_16(760);
+emit_16(827);
+emit_16(761);
+emit_16(827);
+emit_16(760);
+emit_16(827);
+emit_16(761);
+emit_16(828);
+emit_16(762);
+emit_16(828);
+emit_16(761);
+emit_16(828);
+emit_16(762);
+emit_16(829);
+emit_16(763);
+emit_16(829);
+emit_16(762);
+emit_16(829);
+emit_16(763);
+emit_16(830);
+emit_16(764);
+emit_16(830);
+emit_16(763);
+emit_16(830);
+emit_16(764);
+emit_16(831);
+emit_16(765);
+emit_16(831);
+emit_16(764);
+emit_16(831);
+emit_16(765);
+emit_16(832);
+emit_16(766);
+emit_16(832);
+emit_16(765);
+emit_16(832);
+emit_16(766);
+emit_16(833);
+emit_16(767);
+emit_16(833);
+emit_16(766);
+emit_16(833);
+emit_16(767);
+emit_16(834);
+emit_16(768);
+emit_16(834);
+emit_16(767);
+emit_16(834);
+emit_16(768);
+emit_16(835);
+emit_16(769);
+emit_16(835);
+emit_16(768);
+emit_16(835);
+emit_16(769);
+emit_16(836);
+emit_16(770);
+emit_16(836);
+emit_16(769);
+emit_16(836);
+emit_16(770);
+emit_16(837);
+emit_16(771);
+emit_16(837);
+emit_16(770);
+emit_16(837);
+emit_16(771);
+emit_16(838);
+emit_16(772);
+emit_16(838);
+emit_16(771);
+emit_16(838);
+emit_16(772);
+emit_16(839);
+emit_16(773);
+emit_16(839);
+emit_16(772);
+emit_16(839);
+emit_16(773);
+emit_16(840);
+emit_16(774);
+emit_16(840);
+emit_16(773);
+emit_16(840);
+emit_16(774);
+emit_16(841);
+emit_16(775);
+emit_16(841);
+emit_16(774);
+emit_16(841);
+emit_16(775);
+emit_16(842);
+emit_16(776);
+emit_16(842);
+emit_16(775);
+emit_16(842);
+emit_16(776);
+emit_16(843);
+emit_16(777);
+emit_16(843);
+emit_16(776);
+emit_16(843);
+emit_16(777);
+emit_16(844);
+emit_16(778);
+emit_16(844);
+emit_16(777);
+emit_16(844);
+emit_16(778);
+emit_16(845);
+emit_16(779);
+emit_16(845);
+emit_16(778);
+emit_16(845);
+emit_16(779);
+emit_16(846);
+emit_16(780);
+emit_16(846);
+emit_16(779);
+emit_16(846);
+emit_16(780);
+emit_16(847);
+emit_16(781);
+emit_16(847);
+emit_16(780);
+emit_16(847);
+emit_16(781);
+emit_16(848);
+emit_16(782);
+emit_16(848);
+emit_16(781);
+emit_16(848);
+emit_16(782);
+emit_16(849);
+emit_16(783);
+emit_16(849);
+emit_16(782);
+emit_16(849);
+emit_16(783);
+emit_16(850);
+emit_16(784);
+emit_16(850);
+emit_16(783);
+emit_16(850);
+emit_16(784);
+emit_16(851);
+emit_16(785);
+emit_16(851);
+emit_16(784);
+emit_16(851);
+emit_16(785);
+emit_16(852);
+emit_16(786);
+emit_16(852);
+emit_16(785);
+emit_16(852);
+emit_16(786);
+emit_16(853);
+emit_16(787);
+emit_16(853);
+emit_16(786);
+emit_16(853);
+emit_16(787);
+emit_16(854);
+emit_16(788);
+emit_16(854);
+emit_16(787);
+emit_16(854);
+emit_16(788);
+emit_16(855);
+emit_16(789);
+emit_16(855);
+emit_16(788);
+emit_16(855);
+emit_16(789);
+emit_16(856);
+emit_16(790);
+emit_16(856);
+emit_16(789);
+emit_16(856);
+emit_16(790);
+emit_16(857);
+emit_16(791);
+emit_16(857);
+emit_16(790);
+emit_16(858);
+emit_16(792);
+emit_16(859);
+emit_16(793);
+emit_16(859);
+emit_16(792);
+emit_16(859);
+emit_16(793);
+emit_16(860);
+emit_16(794);
+emit_16(860);
+emit_16(793);
+emit_16(860);
+emit_16(794);
+emit_16(861);
+emit_16(795);
+emit_16(861);
+emit_16(794);
+emit_16(861);
+emit_16(795);
+emit_16(862);
+emit_16(796);
+emit_16(862);
+emit_16(795);
+emit_16(862);
+emit_16(796);
+emit_16(863);
+emit_16(797);
+emit_16(863);
+emit_16(796);
+emit_16(863);
+emit_16(797);
+emit_16(864);
+emit_16(798);
+emit_16(864);
+emit_16(797);
+emit_16(864);
+emit_16(798);
+emit_16(865);
+emit_16(799);
+emit_16(865);
+emit_16(798);
+emit_16(865);
+emit_16(799);
+emit_16(866);
+emit_16(800);
+emit_16(866);
+emit_16(799);
+emit_16(866);
+emit_16(800);
+emit_16(867);
+emit_16(801);
+emit_16(867);
+emit_16(800);
+emit_16(867);
+emit_16(801);
+emit_16(868);
+emit_16(802);
+emit_16(868);
+emit_16(801);
+emit_16(868);
+emit_16(802);
+emit_16(869);
+emit_16(803);
+emit_16(869);
+emit_16(802);
+emit_16(869);
+emit_16(803);
+emit_16(870);
+emit_16(804);
+emit_16(870);
+emit_16(803);
+emit_16(870);
+emit_16(804);
+emit_16(871);
+emit_16(805);
+emit_16(871);
+emit_16(804);
+emit_16(871);
+emit_16(805);
+emit_16(872);
+emit_16(806);
+emit_16(872);
+emit_16(805);
+emit_16(872);
+emit_16(806);
+emit_16(873);
+emit_16(807);
+emit_16(873);
+emit_16(806);
+emit_16(873);
+emit_16(807);
+emit_16(874);
+emit_16(808);
+emit_16(874);
+emit_16(807);
+emit_16(874);
+emit_16(808);
+emit_16(875);
+emit_16(809);
+emit_16(875);
+emit_16(808);
+emit_16(875);
+emit_16(809);
+emit_16(876);
+emit_16(810);
+emit_16(876);
+emit_16(809);
+emit_16(876);
+emit_16(810);
+emit_16(877);
+emit_16(811);
+emit_16(877);
+emit_16(810);
+emit_16(877);
+emit_16(811);
+emit_16(878);
+emit_16(812);
+emit_16(878);
+emit_16(811);
+emit_16(878);
+emit_16(812);
+emit_16(879);
+emit_16(813);
+emit_16(879);
+emit_16(812);
+emit_16(879);
+emit_16(813);
+emit_16(880);
+emit_16(814);
+emit_16(880);
+emit_16(813);
+emit_16(880);
+emit_16(814);
+emit_16(881);
+emit_16(815);
+emit_16(881);
+emit_16(814);
+emit_16(881);
+emit_16(815);
+emit_16(882);
+emit_16(816);
+emit_16(882);
+emit_16(815);
+emit_16(882);
+emit_16(816);
+emit_16(883);
+emit_16(817);
+emit_16(883);
+emit_16(816);
+emit_16(883);
+emit_16(817);
+emit_16(884);
+emit_16(818);
+emit_16(884);
+emit_16(817);
+emit_16(884);
+emit_16(818);
+emit_16(885);
+emit_16(819);
+emit_16(885);
+emit_16(818);
+emit_16(885);
+emit_16(819);
+emit_16(886);
+emit_16(820);
+emit_16(886);
+emit_16(819);
+emit_16(886);
+emit_16(820);
+emit_16(887);
+emit_16(821);
+emit_16(887);
+emit_16(820);
+emit_16(887);
+emit_16(821);
+emit_16(888);
+emit_16(822);
+emit_16(888);
+emit_16(821);
+emit_16(888);
+emit_16(822);
+emit_16(889);
+emit_16(823);
+emit_16(889);
+emit_16(822);
+emit_16(889);
+emit_16(823);
+emit_16(890);
+emit_16(824);
+emit_16(890);
+emit_16(823);
+emit_16(890);
+emit_16(824);
+emit_16(891);
+emit_16(825);
+emit_16(891);
+emit_16(824);
+emit_16(891);
+emit_16(825);
+emit_16(892);
+emit_16(826);
+emit_16(892);
+emit_16(825);
+emit_16(892);
+emit_16(826);
+emit_16(893);
+emit_16(827);
+emit_16(893);
+emit_16(826);
+emit_16(893);
+emit_16(827);
+emit_16(894);
+emit_16(828);
+emit_16(894);
+emit_16(827);
+emit_16(894);
+emit_16(828);
+emit_16(895);
+emit_16(829);
+emit_16(895);
+emit_16(828);
+emit_16(895);
+emit_16(829);
+emit_16(896);
+emit_16(830);
+emit_16(896);
+emit_16(829);
+emit_16(896);
+emit_16(830);
+emit_16(897);
+emit_16(831);
+emit_16(897);
+emit_16(830);
+emit_16(897);
+emit_16(831);
+emit_16(898);
+emit_16(832);
+emit_16(898);
+emit_16(831);
+emit_16(898);
+emit_16(832);
+emit_16(899);
+emit_16(833);
+emit_16(899);
+emit_16(832);
+emit_16(899);
+emit_16(833);
+emit_16(900);
+emit_16(834);
+emit_16(900);
+emit_16(833);
+emit_16(900);
+emit_16(834);
+emit_16(901);
+emit_16(835);
+emit_16(901);
+emit_16(834);
+emit_16(901);
+emit_16(835);
+emit_16(902);
+emit_16(836);
+emit_16(902);
+emit_16(835);
+emit_16(902);
+emit_16(836);
+emit_16(903);
+emit_16(837);
+emit_16(903);
+emit_16(836);
+emit_16(903);
+emit_16(837);
+emit_16(904);
+emit_16(838);
+emit_16(904);
+emit_16(837);
+emit_16(904);
+emit_16(838);
+emit_16(905);
+emit_16(839);
+emit_16(905);
+emit_16(838);
+emit_16(905);
+emit_16(839);
+emit_16(906);
+emit_16(840);
+emit_16(906);
+emit_16(839);
+emit_16(906);
+emit_16(840);
+emit_16(907);
+emit_16(841);
+emit_16(907);
+emit_16(840);
+emit_16(907);
+emit_16(841);
+emit_16(908);
+emit_16(842);
+emit_16(908);
+emit_16(841);
+emit_16(908);
+emit_16(842);
+emit_16(909);
+emit_16(843);
+emit_16(909);
+emit_16(842);
+emit_16(909);
+emit_16(843);
+emit_16(910);
+emit_16(844);
+emit_16(910);
+emit_16(843);
+emit_16(910);
+emit_16(844);
+emit_16(911);
+emit_16(845);
+emit_16(911);
+emit_16(844);
+emit_16(911);
+emit_16(845);
+emit_16(912);
+emit_16(846);
+emit_16(912);
+emit_16(845);
+emit_16(912);
+emit_16(846);
+emit_16(913);
+emit_16(847);
+emit_16(913);
+emit_16(846);
+emit_16(913);
+emit_16(847);
+emit_16(914);
+emit_16(848);
+emit_16(914);
+emit_16(847);
+emit_16(914);
+emit_16(848);
+emit_16(915);
+emit_16(849);
+emit_16(915);
+emit_16(848);
+emit_16(915);
+emit_16(849);
+emit_16(916);
+emit_16(850);
+emit_16(916);
+emit_16(849);
+emit_16(916);
+emit_16(850);
+emit_16(917);
+emit_16(851);
+emit_16(917);
+emit_16(850);
+emit_16(917);
+emit_16(851);
+emit_16(918);
+emit_16(852);
+emit_16(918);
+emit_16(851);
+emit_16(918);
+emit_16(852);
+emit_16(919);
+emit_16(853);
+emit_16(919);
+emit_16(852);
+emit_16(919);
+emit_16(853);
+emit_16(920);
+emit_16(854);
+emit_16(920);
+emit_16(853);
+emit_16(920);
+emit_16(854);
+emit_16(921);
+emit_16(855);
+emit_16(921);
+emit_16(854);
+emit_16(921);
+emit_16(855);
+emit_16(922);
+emit_16(856);
+emit_16(922);
+emit_16(855);
+emit_16(922);
+emit_16(856);
+emit_16(923);
+emit_16(857);
+emit_16(923);
+emit_16(856);
+emit_16(924);
+emit_16(858);
+emit_16(925);
+emit_16(859);
+emit_16(925);
+emit_16(858);
+emit_16(925);
+emit_16(859);
+emit_16(926);
+emit_16(860);
+emit_16(926);
+emit_16(859);
+emit_16(926);
+emit_16(860);
+emit_16(927);
+emit_16(861);
+emit_16(927);
+emit_16(860);
+emit_16(927);
+emit_16(861);
+emit_16(928);
+emit_16(862);
+emit_16(928);
+emit_16(861);
+emit_16(928);
+emit_16(862);
+emit_16(929);
+emit_16(863);
+emit_16(929);
+emit_16(862);
+emit_16(929);
+emit_16(863);
+emit_16(930);
+emit_16(864);
+emit_16(930);
+emit_16(863);
+emit_16(930);
+emit_16(864);
+emit_16(931);
+emit_16(865);
+emit_16(931);
+emit_16(864);
+emit_16(931);
+emit_16(865);
+emit_16(932);
+emit_16(866);
+emit_16(932);
+emit_16(865);
+emit_16(932);
+emit_16(866);
+emit_16(933);
+emit_16(867);
+emit_16(933);
+emit_16(866);
+emit_16(933);
+emit_16(867);
+emit_16(934);
+emit_16(868);
+emit_16(934);
+emit_16(867);
+emit_16(934);
+emit_16(868);
+emit_16(935);
+emit_16(869);
+emit_16(935);
+emit_16(868);
+emit_16(935);
+emit_16(869);
+emit_16(936);
+emit_16(870);
+emit_16(936);
+emit_16(869);
+emit_16(936);
+emit_16(870);
+emit_16(937);
+emit_16(871);
+emit_16(937);
+emit_16(870);
+emit_16(937);
+emit_16(871);
+emit_16(938);
+emit_16(872);
+emit_16(938);
+emit_16(871);
+emit_16(938);
+emit_16(872);
+emit_16(939);
+emit_16(873);
+emit_16(939);
+emit_16(872);
+emit_16(939);
+emit_16(873);
+emit_16(940);
+emit_16(874);
+emit_16(940);
+emit_16(873);
+emit_16(940);
+emit_16(874);
+emit_16(941);
+emit_16(875);
+emit_16(941);
+emit_16(874);
+emit_16(941);
+emit_16(875);
+emit_16(942);
+emit_16(876);
+emit_16(942);
+emit_16(875);
+emit_16(942);
+emit_16(876);
+emit_16(943);
+emit_16(877);
+emit_16(943);
+emit_16(876);
+emit_16(943);
+emit_16(877);
+emit_16(944);
+emit_16(878);
+emit_16(944);
+emit_16(877);
+emit_16(944);
+emit_16(878);
+emit_16(945);
+emit_16(879);
+emit_16(945);
+emit_16(878);
+emit_16(945);
+emit_16(879);
+emit_16(946);
+emit_16(880);
+emit_16(946);
+emit_16(879);
+emit_16(946);
+emit_16(880);
+emit_16(947);
+emit_16(881);
+emit_16(947);
+emit_16(880);
+emit_16(947);
+emit_16(881);
+emit_16(948);
+emit_16(882);
+emit_16(948);
+emit_16(881);
+emit_16(948);
+emit_16(882);
+emit_16(949);
+emit_16(883);
+emit_16(949);
+emit_16(882);
+emit_16(949);
+emit_16(883);
+emit_16(950);
+emit_16(884);
+emit_16(950);
+emit_16(883);
+emit_16(950);
+emit_16(884);
+emit_16(951);
+emit_16(885);
+emit_16(951);
+emit_16(884);
+emit_16(951);
+emit_16(885);
+emit_16(952);
+emit_16(886);
+emit_16(952);
+emit_16(885);
+emit_16(952);
+emit_16(886);
+emit_16(953);
+emit_16(887);
+emit_16(953);
+emit_16(886);
+emit_16(953);
+emit_16(887);
+emit_16(954);
+emit_16(888);
+emit_16(954);
+emit_16(887);
+emit_16(954);
+emit_16(888);
+emit_16(955);
+emit_16(889);
+emit_16(955);
+emit_16(888);
+emit_16(955);
+emit_16(889);
+emit_16(956);
+emit_16(890);
+emit_16(956);
+emit_16(889);
+emit_16(956);
+emit_16(890);
+emit_16(957);
+emit_16(891);
+emit_16(957);
+emit_16(890);
+emit_16(957);
+emit_16(891);
+emit_16(958);
+emit_16(892);
+emit_16(958);
+emit_16(891);
+emit_16(958);
+emit_16(892);
+emit_16(959);
+emit_16(893);
+emit_16(959);
+emit_16(892);
+emit_16(959);
+emit_16(893);
+emit_16(960);
+emit_16(894);
+emit_16(960);
+emit_16(893);
+emit_16(960);
+emit_16(894);
+emit_16(961);
+emit_16(895);
+emit_16(961);
+emit_16(894);
+emit_16(961);
+emit_16(895);
+emit_16(962);
+emit_16(896);
+emit_16(962);
+emit_16(895);
+emit_16(962);
+emit_16(896);
+emit_16(963);
+emit_16(897);
+emit_16(963);
+emit_16(896);
+emit_16(963);
+emit_16(897);
+emit_16(964);
+emit_16(898);
+emit_16(964);
+emit_16(897);
+emit_16(964);
+emit_16(898);
+emit_16(965);
+emit_16(899);
+emit_16(965);
+emit_16(898);
+emit_16(965);
+emit_16(899);
+emit_16(966);
+emit_16(900);
+emit_16(966);
+emit_16(899);
+emit_16(966);
+emit_16(900);
+emit_16(967);
+emit_16(901);
+emit_16(967);
+emit_16(900);
+emit_16(967);
+emit_16(901);
+emit_16(968);
+emit_16(902);
+emit_16(968);
+emit_16(901);
+emit_16(968);
+emit_16(902);
+emit_16(969);
+emit_16(903);
+emit_16(969);
+emit_16(902);
+emit_16(969);
+emit_16(903);
+emit_16(970);
+emit_16(904);
+emit_16(970);
+emit_16(903);
+emit_16(970);
+emit_16(904);
+emit_16(971);
+emit_16(905);
+emit_16(971);
+emit_16(904);
+emit_16(971);
+emit_16(905);
+emit_16(972);
+emit_16(906);
+emit_16(972);
+emit_16(905);
+emit_16(972);
+emit_16(906);
+emit_16(973);
+emit_16(907);
+emit_16(973);
+emit_16(906);
+emit_16(973);
+emit_16(907);
+emit_16(974);
+emit_16(908);
+emit_16(974);
+emit_16(907);
+emit_16(974);
+emit_16(908);
+emit_16(975);
+emit_16(909);
+emit_16(975);
+emit_16(908);
+emit_16(975);
+emit_16(909);
+emit_16(976);
+emit_16(910);
+emit_16(976);
+emit_16(909);
+emit_16(976);
+emit_16(910);
+emit_16(977);
+emit_16(911);
+emit_16(977);
+emit_16(910);
+emit_16(977);
+emit_16(911);
+emit_16(978);
+emit_16(912);
+emit_16(978);
+emit_16(911);
+emit_16(978);
+emit_16(912);
+emit_16(979);
+emit_16(913);
+emit_16(979);
+emit_16(912);
+emit_16(979);
+emit_16(913);
+emit_16(980);
+emit_16(914);
+emit_16(980);
+emit_16(913);
+emit_16(980);
+emit_16(914);
+emit_16(981);
+emit_16(915);
+emit_16(981);
+emit_16(914);
+emit_16(981);
+emit_16(915);
+emit_16(982);
+emit_16(916);
+emit_16(982);
+emit_16(915);
+emit_16(982);
+emit_16(916);
+emit_16(983);
+emit_16(917);
+emit_16(983);
+emit_16(916);
+emit_16(983);
+emit_16(917);
+emit_16(984);
+emit_16(918);
+emit_16(984);
+emit_16(917);
+emit_16(984);
+emit_16(918);
+emit_16(985);
+emit_16(919);
+emit_16(985);
+emit_16(918);
+emit_16(985);
+emit_16(919);
+emit_16(986);
+emit_16(920);
+emit_16(986);
+emit_16(919);
+emit_16(986);
+emit_16(920);
+emit_16(987);
+emit_16(921);
+emit_16(987);
+emit_16(920);
+emit_16(987);
+emit_16(921);
+emit_16(988);
+emit_16(922);
+emit_16(988);
+emit_16(921);
+emit_16(988);
+emit_16(922);
+emit_16(989);
+emit_16(923);
+emit_16(989);
+emit_16(922);
+emit_16(990);
+emit_16(924);
+emit_16(991);
+emit_16(925);
+emit_16(991);
+emit_16(924);
+emit_16(991);
+emit_16(925);
+emit_16(992);
+emit_16(926);
+emit_16(992);
+emit_16(925);
+emit_16(992);
+emit_16(926);
+emit_16(993);
+emit_16(927);
+emit_16(993);
+emit_16(926);
+emit_16(993);
+emit_16(927);
+emit_16(994);
+emit_16(928);
+emit_16(994);
+emit_16(927);
+emit_16(994);
+emit_16(928);
+emit_16(995);
+emit_16(929);
+emit_16(995);
+emit_16(928);
+emit_16(995);
+emit_16(929);
+emit_16(996);
+emit_16(930);
+emit_16(996);
+emit_16(929);
+emit_16(996);
+emit_16(930);
+emit_16(997);
+emit_16(931);
+emit_16(997);
+emit_16(930);
+emit_16(997);
+emit_16(931);
+emit_16(998);
+emit_16(932);
+emit_16(998);
+emit_16(931);
+emit_16(998);
+emit_16(932);
+emit_16(999);
+emit_16(933);
+emit_16(999);
+emit_16(932);
+emit_16(999);
+emit_16(933);
+emit_16(1000);
+emit_16(934);
+emit_16(1000);
+emit_16(933);
+emit_16(1000);
+emit_16(934);
+emit_16(1001);
+emit_16(935);
+emit_16(1001);
+emit_16(934);
+emit_16(1001);
+emit_16(935);
+emit_16(1002);
+emit_16(936);
+emit_16(1002);
+emit_16(935);
+emit_16(1002);
+emit_16(936);
+emit_16(1003);
+emit_16(937);
+emit_16(1003);
+emit_16(936);
+emit_16(1003);
+emit_16(937);
+emit_16(1004);
+emit_16(938);
+emit_16(1004);
+emit_16(937);
+emit_16(1004);
+emit_16(938);
+emit_16(1005);
+emit_16(939);
+emit_16(1005);
+emit_16(938);
+emit_16(1005);
+emit_16(939);
+emit_16(1006);
+emit_16(940);
+emit_16(1006);
+emit_16(939);
+emit_16(1006);
+emit_16(940);
+emit_16(1007);
+emit_16(941);
+emit_16(1007);
+emit_16(940);
+emit_16(1007);
+emit_16(941);
+emit_16(1008);
+emit_16(942);
+emit_16(1008);
+emit_16(941);
+emit_16(1008);
+emit_16(942);
+emit_16(1009);
+emit_16(943);
+emit_16(1009);
+emit_16(942);
+emit_16(1009);
+emit_16(943);
+emit_16(1010);
+emit_16(944);
+emit_16(1010);
+emit_16(943);
+emit_16(1010);
+emit_16(944);
+emit_16(1011);
+emit_16(945);
+emit_16(1011);
+emit_16(944);
+emit_16(1011);
+emit_16(945);
+emit_16(1012);
+emit_16(946);
+emit_16(1012);
+emit_16(945);
+emit_16(1012);
+emit_16(946);
+emit_16(1013);
+emit_16(947);
+emit_16(1013);
+emit_16(946);
+emit_16(1013);
+emit_16(947);
+emit_16(1014);
+emit_16(948);
+emit_16(1014);
+emit_16(947);
+emit_16(1014);
+emit_16(948);
+emit_16(1015);
+emit_16(949);
+emit_16(1015);
+emit_16(948);
+emit_16(1015);
+emit_16(949);
+emit_16(1016);
+emit_16(950);
+emit_16(1016);
+emit_16(949);
+emit_16(1016);
+emit_16(950);
+emit_16(1017);
+emit_16(951);
+emit_16(1017);
+emit_16(950);
+emit_16(1017);
+emit_16(951);
+emit_16(1018);
+emit_16(952);
+emit_16(1018);
+emit_16(951);
+emit_16(1018);
+emit_16(952);
+emit_16(1019);
+emit_16(953);
+emit_16(1019);
+emit_16(952);
+emit_16(1019);
+emit_16(953);
+emit_16(1020);
+emit_16(954);
+emit_16(1020);
+emit_16(953);
+emit_16(1020);
+emit_16(954);
+emit_16(1021);
+emit_16(955);
+emit_16(1021);
+emit_16(954);
+emit_16(1021);
+emit_16(955);
+emit_16(1022);
+emit_16(956);
+emit_16(1022);
+emit_16(955);
+emit_16(1022);
+emit_16(956);
+emit_16(1023);
+emit_16(957);
+emit_16(1023);
+emit_16(956);
+emit_16(1023);
+emit_16(957);
+emit_16(1024);
+emit_16(958);
+emit_16(1024);
+emit_16(957);
+emit_16(1024);
+emit_16(958);
+emit_16(1025);
+emit_16(959);
+emit_16(1025);
+emit_16(958);
+emit_16(1025);
+emit_16(959);
+emit_16(1026);
+emit_16(960);
+emit_16(1026);
+emit_16(959);
+emit_16(1026);
+emit_16(960);
+emit_16(1027);
+emit_16(961);
+emit_16(1027);
+emit_16(960);
+emit_16(1027);
+emit_16(961);
+emit_16(1028);
+emit_16(962);
+emit_16(1028);
+emit_16(961);
+emit_16(1028);
+emit_16(962);
+emit_16(1029);
+emit_16(963);
+emit_16(1029);
+emit_16(962);
+emit_16(1029);
+emit_16(963);
+emit_16(1030);
+emit_16(964);
+emit_16(1030);
+emit_16(963);
+emit_16(1030);
+emit_16(964);
+emit_16(1031);
+emit_16(965);
+emit_16(1031);
+emit_16(964);
+emit_16(1031);
+emit_16(965);
+emit_16(1032);
+emit_16(966);
+emit_16(1032);
+emit_16(965);
+emit_16(1032);
+emit_16(966);
+emit_16(1033);
+emit_16(967);
+emit_16(1033);
+emit_16(966);
+emit_16(1033);
+emit_16(967);
+emit_16(1034);
+emit_16(968);
+emit_16(1034);
+emit_16(967);
+emit_16(1034);
+emit_16(968);
+emit_16(1035);
+emit_16(969);
+emit_16(1035);
+emit_16(968);
+emit_16(1035);
+emit_16(969);
+emit_16(1036);
+emit_16(970);
+emit_16(1036);
+emit_16(969);
+emit_16(1036);
+emit_16(970);
+emit_16(1037);
+emit_16(971);
+emit_16(1037);
+emit_16(970);
+emit_16(1037);
+emit_16(971);
+emit_16(1038);
+emit_16(972);
+emit_16(1038);
+emit_16(971);
+emit_16(1038);
+emit_16(972);
+emit_16(1039);
+emit_16(973);
+emit_16(1039);
+emit_16(972);
+emit_16(1039);
+emit_16(973);
+emit_16(1040);
+emit_16(974);
+emit_16(1040);
+emit_16(973);
+emit_16(1040);
+emit_16(974);
+emit_16(1041);
+emit_16(975);
+emit_16(1041);
+emit_16(974);
+emit_16(1041);
+emit_16(975);
+emit_16(1042);
+emit_16(976);
+emit_16(1042);
+emit_16(975);
+emit_16(1042);
+emit_16(976);
+emit_16(1043);
+emit_16(977);
+emit_16(1043);
+emit_16(976);
+emit_16(1043);
+emit_16(977);
+emit_16(1044);
+emit_16(978);
+emit_16(1044);
+emit_16(977);
+emit_16(1044);
+emit_16(978);
+emit_16(1045);
+emit_16(979);
+emit_16(1045);
+emit_16(978);
+emit_16(1045);
+emit_16(979);
+emit_16(1046);
+emit_16(980);
+emit_16(1046);
+emit_16(979);
+emit_16(1046);
+emit_16(980);
+emit_16(1047);
+emit_16(981);
+emit_16(1047);
+emit_16(980);
+emit_16(1047);
+emit_16(981);
+emit_16(1048);
+emit_16(982);
+emit_16(1048);
+emit_16(981);
+emit_16(1048);
+emit_16(982);
+emit_16(1049);
+emit_16(983);
+emit_16(1049);
+emit_16(982);
+emit_16(1049);
+emit_16(983);
+emit_16(1050);
+emit_16(984);
+emit_16(1050);
+emit_16(983);
+emit_16(1050);
+emit_16(984);
+emit_16(1051);
+emit_16(985);
+emit_16(1051);
+emit_16(984);
+emit_16(1051);
+emit_16(985);
+emit_16(1052);
+emit_16(986);
+emit_16(1052);
+emit_16(985);
+emit_16(1052);
+emit_16(986);
+emit_16(1053);
+emit_16(987);
+emit_16(1053);
+emit_16(986);
+emit_16(1053);
+emit_16(987);
+emit_16(1054);
+emit_16(988);
+emit_16(1054);
+emit_16(987);
+emit_16(1054);
+emit_16(988);
+emit_16(1055);
+emit_16(989);
+emit_16(1055);
+emit_16(988);
+emit_16(1056);
+emit_16(990);
+emit_16(1057);
+emit_16(991);
+emit_16(1057);
+emit_16(990);
+emit_16(1057);
+emit_16(991);
+emit_16(1058);
+emit_16(992);
+emit_16(1058);
+emit_16(991);
+emit_16(1058);
+emit_16(992);
+emit_16(1059);
+emit_16(993);
+emit_16(1059);
+emit_16(992);
+emit_16(1059);
+emit_16(993);
+emit_16(1060);
+emit_16(994);
+emit_16(1060);
+emit_16(993);
+emit_16(1060);
+emit_16(994);
+emit_16(1061);
+emit_16(995);
+emit_16(1061);
+emit_16(994);
+emit_16(1061);
+emit_16(995);
+emit_16(1062);
+emit_16(996);
+emit_16(1062);
+emit_16(995);
+emit_16(1062);
+emit_16(996);
+emit_16(1063);
+emit_16(997);
+emit_16(1063);
+emit_16(996);
+emit_16(1063);
+emit_16(997);
+emit_16(1064);
+emit_16(998);
+emit_16(1064);
+emit_16(997);
+emit_16(1064);
+emit_16(998);
+emit_16(1065);
+emit_16(999);
+emit_16(1065);
+emit_16(998);
+emit_16(1065);
+emit_16(999);
+emit_16(1066);
+emit_16(1000);
+emit_16(1066);
+emit_16(999);
+emit_16(1066);
+emit_16(1000);
+emit_16(1067);
+emit_16(1001);
+emit_16(1067);
+emit_16(1000);
+emit_16(1067);
+emit_16(1001);
+emit_16(1068);
+emit_16(1002);
+emit_16(1068);
+emit_16(1001);
+emit_16(1068);
+emit_16(1002);
+emit_16(1069);
+emit_16(1003);
+emit_16(1069);
+emit_16(1002);
+emit_16(1069);
+emit_16(1003);
+emit_16(1070);
+emit_16(1004);
+emit_16(1070);
+emit_16(1003);
+emit_16(1070);
+emit_16(1004);
+emit_16(1071);
+emit_16(1005);
+emit_16(1071);
+emit_16(1004);
+emit_16(1071);
+emit_16(1005);
+emit_16(1072);
+emit_16(1006);
+emit_16(1072);
+emit_16(1005);
+emit_16(1072);
+emit_16(1006);
+emit_16(1073);
+emit_16(1007);
+emit_16(1073);
+emit_16(1006);
+emit_16(1073);
+emit_16(1007);
+emit_16(1074);
+emit_16(1008);
+emit_16(1074);
+emit_16(1007);
+emit_16(1074);
+emit_16(1008);
+emit_16(1075);
+emit_16(1009);
+emit_16(1075);
+emit_16(1008);
+emit_16(1075);
+emit_16(1009);
+emit_16(1076);
+emit_16(1010);
+emit_16(1076);
+emit_16(1009);
+emit_16(1076);
+emit_16(1010);
+emit_16(1077);
+emit_16(1011);
+emit_16(1077);
+emit_16(1010);
+emit_16(1077);
+emit_16(1011);
+emit_16(1078);
+emit_16(1012);
+emit_16(1078);
+emit_16(1011);
+emit_16(1078);
+emit_16(1012);
+emit_16(1079);
+emit_16(1013);
+emit_16(1079);
+emit_16(1012);
+emit_16(1079);
+emit_16(1013);
+emit_16(1080);
+emit_16(1014);
+emit_16(1080);
+emit_16(1013);
+emit_16(1080);
+emit_16(1014);
+emit_16(1081);
+emit_16(1015);
+emit_16(1081);
+emit_16(1014);
+emit_16(1081);
+emit_16(1015);
+emit_16(1082);
+emit_16(1016);
+emit_16(1082);
+emit_16(1015);
+emit_16(1082);
+emit_16(1016);
+emit_16(1083);
+emit_16(1017);
+emit_16(1083);
+emit_16(1016);
+emit_16(1083);
+emit_16(1017);
+emit_16(1084);
+emit_16(1018);
+emit_16(1084);
+emit_16(1017);
+emit_16(1084);
+emit_16(1018);
+emit_16(1085);
+emit_16(1019);
+emit_16(1085);
+emit_16(1018);
+emit_16(1085);
+emit_16(1019);
+emit_16(1086);
+emit_16(1020);
+emit_16(1086);
+emit_16(1019);
+emit_16(1086);
+emit_16(1020);
+emit_16(1087);
+emit_16(1021);
+emit_16(1087);
+emit_16(1020);
+emit_16(1087);
+emit_16(1021);
+emit_16(1088);
+emit_16(1022);
+emit_16(1088);
+emit_16(1021);
+emit_16(1088);
+emit_16(1022);
+emit_16(1089);
+emit_16(1023);
+emit_16(1089);
+emit_16(1022);
+emit_16(1089);
+emit_16(1023);
+emit_16(1090);
+emit_16(1024);
+emit_16(1090);
+emit_16(1023);
+emit_16(1090);
+emit_16(1024);
+emit_16(1091);
+emit_16(1025);
+emit_16(1091);
+emit_16(1024);
+emit_16(1091);
+emit_16(1025);
+emit_16(1092);
+emit_16(1026);
+emit_16(1092);
+emit_16(1025);
+emit_16(1092);
+emit_16(1026);
+emit_16(1093);
+emit_16(1027);
+emit_16(1093);
+emit_16(1026);
+emit_16(1093);
+emit_16(1027);
+emit_16(1094);
+emit_16(1028);
+emit_16(1094);
+emit_16(1027);
+emit_16(1094);
+emit_16(1028);
+emit_16(1095);
+emit_16(1029);
+emit_16(1095);
+emit_16(1028);
+emit_16(1095);
+emit_16(1029);
+emit_16(1096);
+emit_16(1030);
+emit_16(1096);
+emit_16(1029);
+emit_16(1096);
+emit_16(1030);
+emit_16(1097);
+emit_16(1031);
+emit_16(1097);
+emit_16(1030);
+emit_16(1097);
+emit_16(1031);
+emit_16(1098);
+emit_16(1032);
+emit_16(1098);
+emit_16(1031);
+emit_16(1098);
+emit_16(1032);
+emit_16(1099);
+emit_16(1033);
+emit_16(1099);
+emit_16(1032);
+emit_16(1099);
+emit_16(1033);
+emit_16(1100);
+emit_16(1034);
+emit_16(1100);
+emit_16(1033);
+emit_16(1100);
+emit_16(1034);
+emit_16(1101);
+emit_16(1035);
+emit_16(1101);
+emit_16(1034);
+emit_16(1101);
+emit_16(1035);
+emit_16(1102);
+emit_16(1036);
+emit_16(1102);
+emit_16(1035);
+emit_16(1102);
+emit_16(1036);
+emit_16(1103);
+emit_16(1037);
+emit_16(1103);
+emit_16(1036);
+emit_16(1103);
+emit_16(1037);
+emit_16(1104);
+emit_16(1038);
+emit_16(1104);
+emit_16(1037);
+emit_16(1104);
+emit_16(1038);
+emit_16(1105);
+emit_16(1039);
+emit_16(1105);
+emit_16(1038);
+emit_16(1105);
+emit_16(1039);
+emit_16(1106);
+emit_16(1040);
+emit_16(1106);
+emit_16(1039);
+emit_16(1106);
+emit_16(1040);
+emit_16(1107);
+emit_16(1041);
+emit_16(1107);
+emit_16(1040);
+emit_16(1107);
+emit_16(1041);
+emit_16(1108);
+emit_16(1042);
+emit_16(1108);
+emit_16(1041);
+emit_16(1108);
+emit_16(1042);
+emit_16(1109);
+emit_16(1043);
+emit_16(1109);
+emit_16(1042);
+emit_16(1109);
+emit_16(1043);
+emit_16(1110);
+emit_16(1044);
+emit_16(1110);
+emit_16(1043);
+emit_16(1110);
+emit_16(1044);
+emit_16(1111);
+emit_16(1045);
+emit_16(1111);
+emit_16(1044);
+emit_16(1111);
+emit_16(1045);
+emit_16(1112);
+emit_16(1046);
+emit_16(1112);
+emit_16(1045);
+emit_16(1112);
+emit_16(1046);
+emit_16(1113);
+emit_16(1047);
+emit_16(1113);
+emit_16(1046);
+emit_16(1113);
+emit_16(1047);
+emit_16(1114);
+emit_16(1048);
+emit_16(1114);
+emit_16(1047);
+emit_16(1114);
+emit_16(1048);
+emit_16(1115);
+emit_16(1049);
+emit_16(1115);
+emit_16(1048);
+emit_16(1115);
+emit_16(1049);
+emit_16(1116);
+emit_16(1050);
+emit_16(1116);
+emit_16(1049);
+emit_16(1116);
+emit_16(1050);
+emit_16(1117);
+emit_16(1051);
+emit_16(1117);
+emit_16(1050);
+emit_16(1117);
+emit_16(1051);
+emit_16(1118);
+emit_16(1052);
+emit_16(1118);
+emit_16(1051);
+emit_16(1118);
+emit_16(1052);
+emit_16(1119);
+emit_16(1053);
+emit_16(1119);
+emit_16(1052);
+emit_16(1119);
+emit_16(1053);
+emit_16(1120);
+emit_16(1054);
+emit_16(1120);
+emit_16(1053);
+emit_16(1120);
+emit_16(1054);
+emit_16(1121);
+emit_16(1055);
+emit_16(1121);
+emit_16(1054);
+emit_16(1122);
+emit_16(1056);
+emit_16(1123);
+emit_16(1057);
+emit_16(1123);
+emit_16(1056);
+emit_16(1123);
+emit_16(1057);
+emit_16(1124);
+emit_16(1058);
+emit_16(1124);
+emit_16(1057);
+emit_16(1124);
+emit_16(1058);
+emit_16(1125);
+emit_16(1059);
+emit_16(1125);
+emit_16(1058);
+emit_16(1125);
+emit_16(1059);
+emit_16(1126);
+emit_16(1060);
+emit_16(1126);
+emit_16(1059);
+emit_16(1126);
+emit_16(1060);
+emit_16(1127);
+emit_16(1061);
+emit_16(1127);
+emit_16(1060);
+emit_16(1127);
+emit_16(1061);
+emit_16(1128);
+emit_16(1062);
+emit_16(1128);
+emit_16(1061);
+emit_16(1128);
+emit_16(1062);
+emit_16(1129);
+emit_16(1063);
+emit_16(1129);
+emit_16(1062);
+emit_16(1129);
+emit_16(1063);
+emit_16(1130);
+emit_16(1064);
+emit_16(1130);
+emit_16(1063);
+emit_16(1130);
+emit_16(1064);
+emit_16(1131);
+emit_16(1065);
+emit_16(1131);
+emit_16(1064);
+emit_16(1131);
+emit_16(1065);
+emit_16(1132);
+emit_16(1066);
+emit_16(1132);
+emit_16(1065);
+emit_16(1132);
+emit_16(1066);
+emit_16(1133);
+emit_16(1067);
+emit_16(1133);
+emit_16(1066);
+emit_16(1133);
+emit_16(1067);
+emit_16(1134);
+emit_16(1068);
+emit_16(1134);
+emit_16(1067);
+emit_16(1134);
+emit_16(1068);
+emit_16(1135);
+emit_16(1069);
+emit_16(1135);
+emit_16(1068);
+emit_16(1135);
+emit_16(1069);
+emit_16(1136);
+emit_16(1070);
+emit_16(1136);
+emit_16(1069);
+emit_16(1136);
+emit_16(1070);
+emit_16(1137);
+emit_16(1071);
+emit_16(1137);
+emit_16(1070);
+emit_16(1137);
+emit_16(1071);
+emit_16(1138);
+emit_16(1072);
+emit_16(1138);
+emit_16(1071);
+emit_16(1138);
+emit_16(1072);
+emit_16(1139);
+emit_16(1073);
+emit_16(1139);
+emit_16(1072);
+emit_16(1139);
+emit_16(1073);
+emit_16(1140);
+emit_16(1074);
+emit_16(1140);
+emit_16(1073);
+emit_16(1140);
+emit_16(1074);
+emit_16(1141);
+emit_16(1075);
+emit_16(1141);
+emit_16(1074);
+emit_16(1141);
+emit_16(1075);
+emit_16(1142);
+emit_16(1076);
+emit_16(1142);
+emit_16(1075);
+emit_16(1142);
+emit_16(1076);
+emit_16(1143);
+emit_16(1077);
+emit_16(1143);
+emit_16(1076);
+emit_16(1143);
+emit_16(1077);
+emit_16(1144);
+emit_16(1078);
+emit_16(1144);
+emit_16(1077);
+emit_16(1144);
+emit_16(1078);
+emit_16(1145);
+emit_16(1079);
+emit_16(1145);
+emit_16(1078);
+emit_16(1145);
+emit_16(1079);
+emit_16(1146);
+emit_16(1080);
+emit_16(1146);
+emit_16(1079);
+emit_16(1146);
+emit_16(1080);
+emit_16(1147);
+emit_16(1081);
+emit_16(1147);
+emit_16(1080);
+emit_16(1147);
+emit_16(1081);
+emit_16(1148);
+emit_16(1082);
+emit_16(1148);
+emit_16(1081);
+emit_16(1148);
+emit_16(1082);
+emit_16(1149);
+emit_16(1083);
+emit_16(1149);
+emit_16(1082);
+emit_16(1149);
+emit_16(1083);
+emit_16(1150);
+emit_16(1084);
+emit_16(1150);
+emit_16(1083);
+emit_16(1150);
+emit_16(1084);
+emit_16(1151);
+emit_16(1085);
+emit_16(1151);
+emit_16(1084);
+emit_16(1151);
+emit_16(1085);
+emit_16(1152);
+emit_16(1086);
+emit_16(1152);
+emit_16(1085);
+emit_16(1152);
+emit_16(1086);
+emit_16(1153);
+emit_16(1087);
+emit_16(1153);
+emit_16(1086);
+emit_16(1153);
+emit_16(1087);
+emit_16(1154);
+emit_16(1088);
+emit_16(1154);
+emit_16(1087);
+emit_16(1154);
+emit_16(1088);
+emit_16(1155);
+emit_16(1089);
+emit_16(1155);
+emit_16(1088);
+emit_16(1155);
+emit_16(1089);
+emit_16(1156);
+emit_16(1090);
+emit_16(1156);
+emit_16(1089);
+emit_16(1156);
+emit_16(1090);
+emit_16(1157);
+emit_16(1091);
+emit_16(1157);
+emit_16(1090);
+emit_16(1157);
+emit_16(1091);
+emit_16(1158);
+emit_16(1092);
+emit_16(1158);
+emit_16(1091);
+emit_16(1158);
+emit_16(1092);
+emit_16(1159);
+emit_16(1093);
+emit_16(1159);
+emit_16(1092);
+emit_16(1159);
+emit_16(1093);
+emit_16(1160);
+emit_16(1094);
+emit_16(1160);
+emit_16(1093);
+emit_16(1160);
+emit_16(1094);
+emit_16(1161);
+emit_16(1095);
+emit_16(1161);
+emit_16(1094);
+emit_16(1161);
+emit_16(1095);
+emit_16(1162);
+emit_16(1096);
+emit_16(1162);
+emit_16(1095);
+emit_16(1162);
+emit_16(1096);
+emit_16(1163);
+emit_16(1097);
+emit_16(1163);
+emit_16(1096);
+emit_16(1163);
+emit_16(1097);
+emit_16(1164);
+emit_16(1098);
+emit_16(1164);
+emit_16(1097);
+emit_16(1164);
+emit_16(1098);
+emit_16(1165);
+emit_16(1099);
+emit_16(1165);
+emit_16(1098);
+emit_16(1165);
+emit_16(1099);
+emit_16(1166);
+emit_16(1100);
+emit_16(1166);
+emit_16(1099);
+emit_16(1166);
+emit_16(1100);
+emit_16(1167);
+emit_16(1101);
+emit_16(1167);
+emit_16(1100);
+emit_16(1167);
+emit_16(1101);
+emit_16(1168);
+emit_16(1102);
+emit_16(1168);
+emit_16(1101);
+emit_16(1168);
+emit_16(1102);
+emit_16(1169);
+emit_16(1103);
+emit_16(1169);
+emit_16(1102);
+emit_16(1169);
+emit_16(1103);
+emit_16(1170);
+emit_16(1104);
+emit_16(1170);
+emit_16(1103);
+emit_16(1170);
+emit_16(1104);
+emit_16(1171);
+emit_16(1105);
+emit_16(1171);
+emit_16(1104);
+emit_16(1171);
+emit_16(1105);
+emit_16(1172);
+emit_16(1106);
+emit_16(1172);
+emit_16(1105);
+emit_16(1172);
+emit_16(1106);
+emit_16(1173);
+emit_16(1107);
+emit_16(1173);
+emit_16(1106);
+emit_16(1173);
+emit_16(1107);
+emit_16(1174);
+emit_16(1108);
+emit_16(1174);
+emit_16(1107);
+emit_16(1174);
+emit_16(1108);
+emit_16(1175);
+emit_16(1109);
+emit_16(1175);
+emit_16(1108);
+emit_16(1175);
+emit_16(1109);
+emit_16(1176);
+emit_16(1110);
+emit_16(1176);
+emit_16(1109);
+emit_16(1176);
+emit_16(1110);
+emit_16(1177);
+emit_16(1111);
+emit_16(1177);
+emit_16(1110);
+emit_16(1177);
+emit_16(1111);
+emit_16(1178);
+emit_16(1112);
+emit_16(1178);
+emit_16(1111);
+emit_16(1178);
+emit_16(1112);
+emit_16(1179);
+emit_16(1113);
+emit_16(1179);
+emit_16(1112);
+emit_16(1179);
+emit_16(1113);
+emit_16(1180);
+emit_16(1114);
+emit_16(1180);
+emit_16(1113);
+emit_16(1180);
+emit_16(1114);
+emit_16(1181);
+emit_16(1115);
+emit_16(1181);
+emit_16(1114);
+emit_16(1181);
+emit_16(1115);
+emit_16(1182);
+emit_16(1116);
+emit_16(1182);
+emit_16(1115);
+emit_16(1182);
+emit_16(1116);
+emit_16(1183);
+emit_16(1117);
+emit_16(1183);
+emit_16(1116);
+emit_16(1183);
+emit_16(1117);
+emit_16(1184);
+emit_16(1118);
+emit_16(1184);
+emit_16(1117);
+emit_16(1184);
+emit_16(1118);
+emit_16(1185);
+emit_16(1119);
+emit_16(1185);
+emit_16(1118);
+emit_16(1185);
+emit_16(1119);
+emit_16(1186);
+emit_16(1120);
+emit_16(1186);
+emit_16(1119);
+emit_16(1186);
+emit_16(1120);
+emit_16(1187);
+emit_16(1121);
+emit_16(1187);
+emit_16(1120);
+emit_16(1188);
+emit_16(1122);
+emit_16(1189);
+emit_16(1123);
+emit_16(1189);
+emit_16(1122);
+emit_16(1189);
+emit_16(1123);
+emit_16(1190);
+emit_16(1124);
+emit_16(1190);
+emit_16(1123);
+emit_16(1190);
+emit_16(1124);
+emit_16(1191);
+emit_16(1125);
+emit_16(1191);
+emit_16(1124);
+emit_16(1191);
+emit_16(1125);
+emit_16(1192);
+emit_16(1126);
+emit_16(1192);
+emit_16(1125);
+emit_16(1192);
+emit_16(1126);
+emit_16(1193);
+emit_16(1127);
+emit_16(1193);
+emit_16(1126);
+emit_16(1193);
+emit_16(1127);
+emit_16(1194);
+emit_16(1128);
+emit_16(1194);
+emit_16(1127);
+emit_16(1194);
+emit_16(1128);
+emit_16(1195);
+emit_16(1129);
+emit_16(1195);
+emit_16(1128);
+emit_16(1195);
+emit_16(1129);
+emit_16(1196);
+emit_16(1130);
+emit_16(1196);
+emit_16(1129);
+emit_16(1196);
+emit_16(1130);
+emit_16(1197);
+emit_16(1131);
+emit_16(1197);
+emit_16(1130);
+emit_16(1197);
+emit_16(1131);
+emit_16(1198);
+emit_16(1132);
+emit_16(1198);
+emit_16(1131);
+emit_16(1198);
+emit_16(1132);
+emit_16(1199);
+emit_16(1133);
+emit_16(1199);
+emit_16(1132);
+emit_16(1199);
+emit_16(1133);
+emit_16(1200);
+emit_16(1134);
+emit_16(1200);
+emit_16(1133);
+emit_16(1200);
+emit_16(1134);
+emit_16(1201);
+emit_16(1135);
+emit_16(1201);
+emit_16(1134);
+emit_16(1201);
+emit_16(1135);
+emit_16(1202);
+emit_16(1136);
+emit_16(1202);
+emit_16(1135);
+emit_16(1202);
+emit_16(1136);
+emit_16(1203);
+emit_16(1137);
+emit_16(1203);
+emit_16(1136);
+emit_16(1203);
+emit_16(1137);
+emit_16(1204);
+emit_16(1138);
+emit_16(1204);
+emit_16(1137);
+emit_16(1204);
+emit_16(1138);
+emit_16(1205);
+emit_16(1139);
+emit_16(1205);
+emit_16(1138);
+emit_16(1205);
+emit_16(1139);
+emit_16(1206);
+emit_16(1140);
+emit_16(1206);
+emit_16(1139);
+emit_16(1206);
+emit_16(1140);
+emit_16(1207);
+emit_16(1141);
+emit_16(1207);
+emit_16(1140);
+emit_16(1207);
+emit_16(1141);
+emit_16(1208);
+emit_16(1142);
+emit_16(1208);
+emit_16(1141);
+emit_16(1208);
+emit_16(1142);
+emit_16(1209);
+emit_16(1143);
+emit_16(1209);
+emit_16(1142);
+emit_16(1209);
+emit_16(1143);
+emit_16(1210);
+emit_16(1144);
+emit_16(1210);
+emit_16(1143);
+emit_16(1210);
+emit_16(1144);
+emit_16(1211);
+emit_16(1145);
+emit_16(1211);
+emit_16(1144);
+emit_16(1211);
+emit_16(1145);
+emit_16(1212);
+emit_16(1146);
+emit_16(1212);
+emit_16(1145);
+emit_16(1212);
+emit_16(1146);
+emit_16(1213);
+emit_16(1147);
+emit_16(1213);
+emit_16(1146);
+emit_16(1213);
+emit_16(1147);
+emit_16(1214);
+emit_16(1148);
+emit_16(1214);
+emit_16(1147);
+emit_16(1214);
+emit_16(1148);
+emit_16(1215);
+emit_16(1149);
+emit_16(1215);
+emit_16(1148);
+emit_16(1215);
+emit_16(1149);
+emit_16(1216);
+emit_16(1150);
+emit_16(1216);
+emit_16(1149);
+emit_16(1216);
+emit_16(1150);
+emit_16(1217);
+emit_16(1151);
+emit_16(1217);
+emit_16(1150);
+emit_16(1217);
+emit_16(1151);
+emit_16(1218);
+emit_16(1152);
+emit_16(1218);
+emit_16(1151);
+emit_16(1218);
+emit_16(1152);
+emit_16(1219);
+emit_16(1153);
+emit_16(1219);
+emit_16(1152);
+emit_16(1219);
+emit_16(1153);
+emit_16(1220);
+emit_16(1154);
+emit_16(1220);
+emit_16(1153);
+emit_16(1220);
+emit_16(1154);
+emit_16(1221);
+emit_16(1155);
+emit_16(1221);
+emit_16(1154);
+emit_16(1221);
+emit_16(1155);
+emit_16(1222);
+emit_16(1156);
+emit_16(1222);
+emit_16(1155);
+emit_16(1222);
+emit_16(1156);
+emit_16(1223);
+emit_16(1157);
+emit_16(1223);
+emit_16(1156);
+emit_16(1223);
+emit_16(1157);
+emit_16(1224);
+emit_16(1158);
+emit_16(1224);
+emit_16(1157);
+emit_16(1224);
+emit_16(1158);
+emit_16(1225);
+emit_16(1159);
+emit_16(1225);
+emit_16(1158);
+emit_16(1225);
+emit_16(1159);
+emit_16(1226);
+emit_16(1160);
+emit_16(1226);
+emit_16(1159);
+emit_16(1226);
+emit_16(1160);
+emit_16(1227);
+emit_16(1161);
+emit_16(1227);
+emit_16(1160);
+emit_16(1227);
+emit_16(1161);
+emit_16(1228);
+emit_16(1162);
+emit_16(1228);
+emit_16(1161);
+emit_16(1228);
+emit_16(1162);
+emit_16(1229);
+emit_16(1163);
+emit_16(1229);
+emit_16(1162);
+emit_16(1229);
+emit_16(1163);
+emit_16(1230);
+emit_16(1164);
+emit_16(1230);
+emit_16(1163);
+emit_16(1230);
+emit_16(1164);
+emit_16(1231);
+emit_16(1165);
+emit_16(1231);
+emit_16(1164);
+emit_16(1231);
+emit_16(1165);
+emit_16(1232);
+emit_16(1166);
+emit_16(1232);
+emit_16(1165);
+emit_16(1232);
+emit_16(1166);
+emit_16(1233);
+emit_16(1167);
+emit_16(1233);
+emit_16(1166);
+emit_16(1233);
+emit_16(1167);
+emit_16(1234);
+emit_16(1168);
+emit_16(1234);
+emit_16(1167);
+emit_16(1234);
+emit_16(1168);
+emit_16(1235);
+emit_16(1169);
+emit_16(1235);
+emit_16(1168);
+emit_16(1235);
+emit_16(1169);
+emit_16(1236);
+emit_16(1170);
+emit_16(1236);
+emit_16(1169);
+emit_16(1236);
+emit_16(1170);
+emit_16(1237);
+emit_16(1171);
+emit_16(1237);
+emit_16(1170);
+emit_16(1237);
+emit_16(1171);
+emit_16(1238);
+emit_16(1172);
+emit_16(1238);
+emit_16(1171);
+emit_16(1238);
+emit_16(1172);
+emit_16(1239);
+emit_16(1173);
+emit_16(1239);
+emit_16(1172);
+emit_16(1239);
+emit_16(1173);
+emit_16(1240);
+emit_16(1174);
+emit_16(1240);
+emit_16(1173);
+emit_16(1240);
+emit_16(1174);
+emit_16(1241);
+emit_16(1175);
+emit_16(1241);
+emit_16(1174);
+emit_16(1241);
+emit_16(1175);
+emit_16(1242);
+emit_16(1176);
+emit_16(1242);
+emit_16(1175);
+emit_16(1242);
+emit_16(1176);
+emit_16(1243);
+emit_16(1177);
+emit_16(1243);
+emit_16(1176);
+emit_16(1243);
+emit_16(1177);
+emit_16(1244);
+emit_16(1178);
+emit_16(1244);
+emit_16(1177);
+emit_16(1244);
+emit_16(1178);
+emit_16(1245);
+emit_16(1179);
+emit_16(1245);
+emit_16(1178);
+emit_16(1245);
+emit_16(1179);
+emit_16(1246);
+emit_16(1180);
+emit_16(1246);
+emit_16(1179);
+emit_16(1246);
+emit_16(1180);
+emit_16(1247);
+emit_16(1181);
+emit_16(1247);
+emit_16(1180);
+emit_16(1247);
+emit_16(1181);
+emit_16(1248);
+emit_16(1182);
+emit_16(1248);
+emit_16(1181);
+emit_16(1248);
+emit_16(1182);
+emit_16(1249);
+emit_16(1183);
+emit_16(1249);
+emit_16(1182);
+emit_16(1249);
+emit_16(1183);
+emit_16(1250);
+emit_16(1184);
+emit_16(1250);
+emit_16(1183);
+emit_16(1250);
+emit_16(1184);
+emit_16(1251);
+emit_16(1185);
+emit_16(1251);
+emit_16(1184);
+emit_16(1251);
+emit_16(1185);
+emit_16(1252);
+emit_16(1186);
+emit_16(1252);
+emit_16(1185);
+emit_16(1252);
+emit_16(1186);
+emit_16(1253);
+emit_16(1187);
+emit_16(1253);
+emit_16(1186);
+emit_16(1254);
+emit_16(1188);
+emit_16(1255);
+emit_16(1189);
+emit_16(1255);
+emit_16(1188);
+emit_16(1255);
+emit_16(1189);
+emit_16(1256);
+emit_16(1190);
+emit_16(1256);
+emit_16(1189);
+emit_16(1256);
+emit_16(1190);
+emit_16(1257);
+emit_16(1191);
+emit_16(1257);
+emit_16(1190);
+emit_16(1257);
+emit_16(1191);
+emit_16(1258);
+emit_16(1192);
+emit_16(1258);
+emit_16(1191);
+emit_16(1258);
+emit_16(1192);
+emit_16(1259);
+emit_16(1193);
+emit_16(1259);
+emit_16(1192);
+emit_16(1259);
+emit_16(1193);
+emit_16(1260);
+emit_16(1194);
+emit_16(1260);
+emit_16(1193);
+emit_16(1260);
+emit_16(1194);
+emit_16(1261);
+emit_16(1195);
+emit_16(1261);
+emit_16(1194);
+emit_16(1261);
+emit_16(1195);
+emit_16(1262);
+emit_16(1196);
+emit_16(1262);
+emit_16(1195);
+emit_16(1262);
+emit_16(1196);
+emit_16(1263);
+emit_16(1197);
+emit_16(1263);
+emit_16(1196);
+emit_16(1263);
+emit_16(1197);
+emit_16(1264);
+emit_16(1198);
+emit_16(1264);
+emit_16(1197);
+emit_16(1264);
+emit_16(1198);
+emit_16(1265);
+emit_16(1199);
+emit_16(1265);
+emit_16(1198);
+emit_16(1265);
+emit_16(1199);
+emit_16(1266);
+emit_16(1200);
+emit_16(1266);
+emit_16(1199);
+emit_16(1266);
+emit_16(1200);
+emit_16(1267);
+emit_16(1201);
+emit_16(1267);
+emit_16(1200);
+emit_16(1267);
+emit_16(1201);
+emit_16(1268);
+emit_16(1202);
+emit_16(1268);
+emit_16(1201);
+emit_16(1268);
+emit_16(1202);
+emit_16(1269);
+emit_16(1203);
+emit_16(1269);
+emit_16(1202);
+emit_16(1269);
+emit_16(1203);
+emit_16(1270);
+emit_16(1204);
+emit_16(1270);
+emit_16(1203);
+emit_16(1270);
+emit_16(1204);
+emit_16(1271);
+emit_16(1205);
+emit_16(1271);
+emit_16(1204);
+emit_16(1271);
+emit_16(1205);
+emit_16(1272);
+emit_16(1206);
+emit_16(1272);
+emit_16(1205);
+emit_16(1272);
+emit_16(1206);
+emit_16(1273);
+emit_16(1207);
+emit_16(1273);
+emit_16(1206);
+emit_16(1273);
+emit_16(1207);
+emit_16(1274);
+emit_16(1208);
+emit_16(1274);
+emit_16(1207);
+emit_16(1274);
+emit_16(1208);
+emit_16(1275);
+emit_16(1209);
+emit_16(1275);
+emit_16(1208);
+emit_16(1275);
+emit_16(1209);
+emit_16(1276);
+emit_16(1210);
+emit_16(1276);
+emit_16(1209);
+emit_16(1276);
+emit_16(1210);
+emit_16(1277);
+emit_16(1211);
+emit_16(1277);
+emit_16(1210);
+emit_16(1277);
+emit_16(1211);
+emit_16(1278);
+emit_16(1212);
+emit_16(1278);
+emit_16(1211);
+emit_16(1278);
+emit_16(1212);
+emit_16(1279);
+emit_16(1213);
+emit_16(1279);
+emit_16(1212);
+emit_16(1279);
+emit_16(1213);
+emit_16(1280);
+emit_16(1214);
+emit_16(1280);
+emit_16(1213);
+emit_16(1280);
+emit_16(1214);
+emit_16(1281);
+emit_16(1215);
+emit_16(1281);
+emit_16(1214);
+emit_16(1281);
+emit_16(1215);
+emit_16(1282);
+emit_16(1216);
+emit_16(1282);
+emit_16(1215);
+emit_16(1282);
+emit_16(1216);
+emit_16(1283);
+emit_16(1217);
+emit_16(1283);
+emit_16(1216);
+emit_16(1283);
+emit_16(1217);
+emit_16(1284);
+emit_16(1218);
+emit_16(1284);
+emit_16(1217);
+emit_16(1284);
+emit_16(1218);
+emit_16(1285);
+emit_16(1219);
+emit_16(1285);
+emit_16(1218);
+emit_16(1285);
+emit_16(1219);
+emit_16(1286);
+emit_16(1220);
+emit_16(1286);
+emit_16(1219);
+emit_16(1286);
+emit_16(1220);
+emit_16(1287);
+emit_16(1221);
+emit_16(1287);
+emit_16(1220);
+emit_16(1287);
+emit_16(1221);
+emit_16(1288);
+emit_16(1222);
+emit_16(1288);
+emit_16(1221);
+emit_16(1288);
+emit_16(1222);
+emit_16(1289);
+emit_16(1223);
+emit_16(1289);
+emit_16(1222);
+emit_16(1289);
+emit_16(1223);
+emit_16(1290);
+emit_16(1224);
+emit_16(1290);
+emit_16(1223);
+emit_16(1290);
+emit_16(1224);
+emit_16(1291);
+emit_16(1225);
+emit_16(1291);
+emit_16(1224);
+emit_16(1291);
+emit_16(1225);
+emit_16(1292);
+emit_16(1226);
+emit_16(1292);
+emit_16(1225);
+emit_16(1292);
+emit_16(1226);
+emit_16(1293);
+emit_16(1227);
+emit_16(1293);
+emit_16(1226);
+emit_16(1293);
+emit_16(1227);
+emit_16(1294);
+emit_16(1228);
+emit_16(1294);
+emit_16(1227);
+emit_16(1294);
+emit_16(1228);
+emit_16(1295);
+emit_16(1229);
+emit_16(1295);
+emit_16(1228);
+emit_16(1295);
+emit_16(1229);
+emit_16(1296);
+emit_16(1230);
+emit_16(1296);
+emit_16(1229);
+emit_16(1296);
+emit_16(1230);
+emit_16(1297);
+emit_16(1231);
+emit_16(1297);
+emit_16(1230);
+emit_16(1297);
+emit_16(1231);
+emit_16(1298);
+emit_16(1232);
+emit_16(1298);
+emit_16(1231);
+emit_16(1298);
+emit_16(1232);
+emit_16(1299);
+emit_16(1233);
+emit_16(1299);
+emit_16(1232);
+emit_16(1299);
+emit_16(1233);
+emit_16(1300);
+emit_16(1234);
+emit_16(1300);
+emit_16(1233);
+emit_16(1300);
+emit_16(1234);
+emit_16(1301);
+emit_16(1235);
+emit_16(1301);
+emit_16(1234);
+emit_16(1301);
+emit_16(1235);
+emit_16(1302);
+emit_16(1236);
+emit_16(1302);
+emit_16(1235);
+emit_16(1302);
+emit_16(1236);
+emit_16(1303);
+emit_16(1237);
+emit_16(1303);
+emit_16(1236);
+emit_16(1303);
+emit_16(1237);
+emit_16(1304);
+emit_16(1238);
+emit_16(1304);
+emit_16(1237);
+emit_16(1304);
+emit_16(1238);
+emit_16(1305);
+emit_16(1239);
+emit_16(1305);
+emit_16(1238);
+emit_16(1305);
+emit_16(1239);
+emit_16(1306);
+emit_16(1240);
+emit_16(1306);
+emit_16(1239);
+emit_16(1306);
+emit_16(1240);
+emit_16(1307);
+emit_16(1241);
+emit_16(1307);
+emit_16(1240);
+emit_16(1307);
+emit_16(1241);
+emit_16(1308);
+emit_16(1242);
+emit_16(1308);
+emit_16(1241);
+emit_16(1308);
+emit_16(1242);
+emit_16(1309);
+emit_16(1243);
+emit_16(1309);
+emit_16(1242);
+emit_16(1309);
+emit_16(1243);
+emit_16(1310);
+emit_16(1244);
+emit_16(1310);
+emit_16(1243);
+emit_16(1310);
+emit_16(1244);
+emit_16(1311);
+emit_16(1245);
+emit_16(1311);
+emit_16(1244);
+emit_16(1311);
+emit_16(1245);
+emit_16(1312);
+emit_16(1246);
+emit_16(1312);
+emit_16(1245);
+emit_16(1312);
+emit_16(1246);
+emit_16(1313);
+emit_16(1247);
+emit_16(1313);
+emit_16(1246);
+emit_16(1313);
+emit_16(1247);
+emit_16(1314);
+emit_16(1248);
+emit_16(1314);
+emit_16(1247);
+emit_16(1314);
+emit_16(1248);
+emit_16(1315);
+emit_16(1249);
+emit_16(1315);
+emit_16(1248);
+emit_16(1315);
+emit_16(1249);
+emit_16(1316);
+emit_16(1250);
+emit_16(1316);
+emit_16(1249);
+emit_16(1316);
+emit_16(1250);
+emit_16(1317);
+emit_16(1251);
+emit_16(1317);
+emit_16(1250);
+emit_16(1317);
+emit_16(1251);
+emit_16(1318);
+emit_16(1252);
+emit_16(1318);
+emit_16(1251);
+emit_16(1318);
+emit_16(1252);
+emit_16(1319);
+emit_16(1253);
+emit_16(1319);
+emit_16(1252);
+emit_16(1320);
+emit_16(1254);
+emit_16(1321);
+emit_16(1255);
+emit_16(1321);
+emit_16(1254);
+emit_16(1321);
+emit_16(1255);
+emit_16(1322);
+emit_16(1256);
+emit_16(1322);
+emit_16(1255);
+emit_16(1322);
+emit_16(1256);
+emit_16(1323);
+emit_16(1257);
+emit_16(1323);
+emit_16(1256);
+emit_16(1323);
+emit_16(1257);
+emit_16(1324);
+emit_16(1258);
+emit_16(1324);
+emit_16(1257);
+emit_16(1324);
+emit_16(1258);
+emit_16(1325);
+emit_16(1259);
+emit_16(1325);
+emit_16(1258);
+emit_16(1325);
+emit_16(1259);
+emit_16(1326);
+emit_16(1260);
+emit_16(1326);
+emit_16(1259);
+emit_16(1326);
+emit_16(1260);
+emit_16(1327);
+emit_16(1261);
+emit_16(1327);
+emit_16(1260);
+emit_16(1327);
+emit_16(1261);
+emit_16(1328);
+emit_16(1262);
+emit_16(1328);
+emit_16(1261);
+emit_16(1328);
+emit_16(1262);
+emit_16(1329);
+emit_16(1263);
+emit_16(1329);
+emit_16(1262);
+emit_16(1329);
+emit_16(1263);
+emit_16(1330);
+emit_16(1264);
+emit_16(1330);
+emit_16(1263);
+emit_16(1330);
+emit_16(1264);
+emit_16(1331);
+emit_16(1265);
+emit_16(1331);
+emit_16(1264);
+emit_16(1331);
+emit_16(1265);
+emit_16(1332);
+emit_16(1266);
+emit_16(1332);
+emit_16(1265);
+emit_16(1332);
+emit_16(1266);
+emit_16(1333);
+emit_16(1267);
+emit_16(1333);
+emit_16(1266);
+emit_16(1333);
+emit_16(1267);
+emit_16(1334);
+emit_16(1268);
+emit_16(1334);
+emit_16(1267);
+emit_16(1334);
+emit_16(1268);
+emit_16(1335);
+emit_16(1269);
+emit_16(1335);
+emit_16(1268);
+emit_16(1335);
+emit_16(1269);
+emit_16(1336);
+emit_16(1270);
+emit_16(1336);
+emit_16(1269);
+emit_16(1336);
+emit_16(1270);
+emit_16(1337);
+emit_16(1271);
+emit_16(1337);
+emit_16(1270);
+emit_16(1337);
+emit_16(1271);
+emit_16(1338);
+emit_16(1272);
+emit_16(1338);
+emit_16(1271);
+emit_16(1338);
+emit_16(1272);
+emit_16(1339);
+emit_16(1273);
+emit_16(1339);
+emit_16(1272);
+emit_16(1339);
+emit_16(1273);
+emit_16(1340);
+emit_16(1274);
+emit_16(1340);
+emit_16(1273);
+emit_16(1340);
+emit_16(1274);
+emit_16(1341);
+emit_16(1275);
+emit_16(1341);
+emit_16(1274);
+emit_16(1341);
+emit_16(1275);
+emit_16(1342);
+emit_16(1276);
+emit_16(1342);
+emit_16(1275);
+emit_16(1342);
+emit_16(1276);
+emit_16(1343);
+emit_16(1277);
+emit_16(1343);
+emit_16(1276);
+emit_16(1343);
+emit_16(1277);
+emit_16(1344);
+emit_16(1278);
+emit_16(1344);
+emit_16(1277);
+emit_16(1344);
+emit_16(1278);
+emit_16(1345);
+emit_16(1279);
+emit_16(1345);
+emit_16(1278);
+emit_16(1345);
+emit_16(1279);
+emit_16(1346);
+emit_16(1280);
+emit_16(1346);
+emit_16(1279);
+emit_16(1346);
+emit_16(1280);
+emit_16(1347);
+emit_16(1281);
+emit_16(1347);
+emit_16(1280);
+emit_16(1347);
+emit_16(1281);
+emit_16(1348);
+emit_16(1282);
+emit_16(1348);
+emit_16(1281);
+emit_16(1348);
+emit_16(1282);
+emit_16(1349);
+emit_16(1283);
+emit_16(1349);
+emit_16(1282);
+emit_16(1349);
+emit_16(1283);
+emit_16(1350);
+emit_16(1284);
+emit_16(1350);
+emit_16(1283);
+emit_16(1350);
+emit_16(1284);
+emit_16(1351);
+emit_16(1285);
+emit_16(1351);
+emit_16(1284);
+emit_16(1351);
+emit_16(1285);
+emit_16(1352);
+emit_16(1286);
+emit_16(1352);
+emit_16(1285);
+emit_16(1352);
+emit_16(1286);
+emit_16(1353);
+emit_16(1287);
+emit_16(1353);
+emit_16(1286);
+emit_16(1353);
+emit_16(1287);
+emit_16(1354);
+emit_16(1288);
+emit_16(1354);
+emit_16(1287);
+emit_16(1354);
+emit_16(1288);
+emit_16(1355);
+emit_16(1289);
+emit_16(1355);
+emit_16(1288);
+emit_16(1355);
+emit_16(1289);
+emit_16(1356);
+emit_16(1290);
+emit_16(1356);
+emit_16(1289);
+emit_16(1356);
+emit_16(1290);
+emit_16(1357);
+emit_16(1291);
+emit_16(1357);
+emit_16(1290);
+emit_16(1357);
+emit_16(1291);
+emit_16(1358);
+emit_16(1292);
+emit_16(1358);
+emit_16(1291);
+emit_16(1358);
+emit_16(1292);
+emit_16(1359);
+emit_16(1293);
+emit_16(1359);
+emit_16(1292);
+emit_16(1359);
+emit_16(1293);
+emit_16(1360);
+emit_16(1294);
+emit_16(1360);
+emit_16(1293);
+emit_16(1360);
+emit_16(1294);
+emit_16(1361);
+emit_16(1295);
+emit_16(1361);
+emit_16(1294);
+emit_16(1361);
+emit_16(1295);
+emit_16(1362);
+emit_16(1296);
+emit_16(1362);
+emit_16(1295);
+emit_16(1362);
+emit_16(1296);
+emit_16(1363);
+emit_16(1297);
+emit_16(1363);
+emit_16(1296);
+emit_16(1363);
+emit_16(1297);
+emit_16(1364);
+emit_16(1298);
+emit_16(1364);
+emit_16(1297);
+emit_16(1364);
+emit_16(1298);
+emit_16(1365);
+emit_16(1299);
+emit_16(1365);
+emit_16(1298);
+emit_16(1365);
+emit_16(1299);
+emit_16(1366);
+emit_16(1300);
+emit_16(1366);
+emit_16(1299);
+emit_16(1366);
+emit_16(1300);
+emit_16(1367);
+emit_16(1301);
+emit_16(1367);
+emit_16(1300);
+emit_16(1367);
+emit_16(1301);
+emit_16(1368);
+emit_16(1302);
+emit_16(1368);
+emit_16(1301);
+emit_16(1368);
+emit_16(1302);
+emit_16(1369);
+emit_16(1303);
+emit_16(1369);
+emit_16(1302);
+emit_16(1369);
+emit_16(1303);
+emit_16(1370);
+emit_16(1304);
+emit_16(1370);
+emit_16(1303);
+emit_16(1370);
+emit_16(1304);
+emit_16(1371);
+emit_16(1305);
+emit_16(1371);
+emit_16(1304);
+emit_16(1371);
+emit_16(1305);
+emit_16(1372);
+emit_16(1306);
+emit_16(1372);
+emit_16(1305);
+emit_16(1372);
+emit_16(1306);
+emit_16(1373);
+emit_16(1307);
+emit_16(1373);
+emit_16(1306);
+emit_16(1373);
+emit_16(1307);
+emit_16(1374);
+emit_16(1308);
+emit_16(1374);
+emit_16(1307);
+emit_16(1374);
+emit_16(1308);
+emit_16(1375);
+emit_16(1309);
+emit_16(1375);
+emit_16(1308);
+emit_16(1375);
+emit_16(1309);
+emit_16(1376);
+emit_16(1310);
+emit_16(1376);
+emit_16(1309);
+emit_16(1376);
+emit_16(1310);
+emit_16(1377);
+emit_16(1311);
+emit_16(1377);
+emit_16(1310);
+emit_16(1377);
+emit_16(1311);
+emit_16(1378);
+emit_16(1312);
+emit_16(1378);
+emit_16(1311);
+emit_16(1378);
+emit_16(1312);
+emit_16(1379);
+emit_16(1313);
+emit_16(1379);
+emit_16(1312);
+emit_16(1379);
+emit_16(1313);
+emit_16(1380);
+emit_16(1314);
+emit_16(1380);
+emit_16(1313);
+emit_16(1380);
+emit_16(1314);
+emit_16(1381);
+emit_16(1315);
+emit_16(1381);
+emit_16(1314);
+emit_16(1381);
+emit_16(1315);
+emit_16(1382);
+emit_16(1316);
+emit_16(1382);
+emit_16(1315);
+emit_16(1382);
+emit_16(1316);
+emit_16(1383);
+emit_16(1317);
+emit_16(1383);
+emit_16(1316);
+emit_16(1383);
+emit_16(1317);
+emit_16(1384);
+emit_16(1318);
+emit_16(1384);
+emit_16(1317);
+emit_16(1384);
+emit_16(1318);
+emit_16(1385);
+emit_16(1319);
+emit_16(1385);
+emit_16(1318);
+emit_16(1386);
+emit_16(1320);
+emit_16(1387);
+emit_16(1321);
+emit_16(1387);
+emit_16(1320);
+emit_16(1387);
+emit_16(1321);
+emit_16(1388);
+emit_16(1322);
+emit_16(1388);
+emit_16(1321);
+emit_16(1388);
+emit_16(1322);
+emit_16(1389);
+emit_16(1323);
+emit_16(1389);
+emit_16(1322);
+emit_16(1389);
+emit_16(1323);
+emit_16(1390);
+emit_16(1324);
+emit_16(1390);
+emit_16(1323);
+emit_16(1390);
+emit_16(1324);
+emit_16(1391);
+emit_16(1325);
+emit_16(1391);
+emit_16(1324);
+emit_16(1391);
+emit_16(1325);
+emit_16(1392);
+emit_16(1326);
+emit_16(1392);
+emit_16(1325);
+emit_16(1392);
+emit_16(1326);
+emit_16(1393);
+emit_16(1327);
+emit_16(1393);
+emit_16(1326);
+emit_16(1393);
+emit_16(1327);
+emit_16(1394);
+emit_16(1328);
+emit_16(1394);
+emit_16(1327);
+emit_16(1394);
+emit_16(1328);
+emit_16(1395);
+emit_16(1329);
+emit_16(1395);
+emit_16(1328);
+emit_16(1395);
+emit_16(1329);
+emit_16(1396);
+emit_16(1330);
+emit_16(1396);
+emit_16(1329);
+emit_16(1396);
+emit_16(1330);
+emit_16(1397);
+emit_16(1331);
+emit_16(1397);
+emit_16(1330);
+emit_16(1397);
+emit_16(1331);
+emit_16(1398);
+emit_16(1332);
+emit_16(1398);
+emit_16(1331);
+emit_16(1398);
+emit_16(1332);
+emit_16(1399);
+emit_16(1333);
+emit_16(1399);
+emit_16(1332);
+emit_16(1399);
+emit_16(1333);
+emit_16(1400);
+emit_16(1334);
+emit_16(1400);
+emit_16(1333);
+emit_16(1400);
+emit_16(1334);
+emit_16(1401);
+emit_16(1335);
+emit_16(1401);
+emit_16(1334);
+emit_16(1401);
+emit_16(1335);
+emit_16(1402);
+emit_16(1336);
+emit_16(1402);
+emit_16(1335);
+emit_16(1402);
+emit_16(1336);
+emit_16(1403);
+emit_16(1337);
+emit_16(1403);
+emit_16(1336);
+emit_16(1403);
+emit_16(1337);
+emit_16(1404);
+emit_16(1338);
+emit_16(1404);
+emit_16(1337);
+emit_16(1404);
+emit_16(1338);
+emit_16(1405);
+emit_16(1339);
+emit_16(1405);
+emit_16(1338);
+emit_16(1405);
+emit_16(1339);
+emit_16(1406);
+emit_16(1340);
+emit_16(1406);
+emit_16(1339);
+emit_16(1406);
+emit_16(1340);
+emit_16(1407);
+emit_16(1341);
+emit_16(1407);
+emit_16(1340);
+emit_16(1407);
+emit_16(1341);
+emit_16(1408);
+emit_16(1342);
+emit_16(1408);
+emit_16(1341);
+emit_16(1408);
+emit_16(1342);
+emit_16(1409);
+emit_16(1343);
+emit_16(1409);
+emit_16(1342);
+emit_16(1409);
+emit_16(1343);
+emit_16(1410);
+emit_16(1344);
+emit_16(1410);
+emit_16(1343);
+emit_16(1410);
+emit_16(1344);
+emit_16(1411);
+emit_16(1345);
+emit_16(1411);
+emit_16(1344);
+emit_16(1411);
+emit_16(1345);
+emit_16(1412);
+emit_16(1346);
+emit_16(1412);
+emit_16(1345);
+emit_16(1412);
+emit_16(1346);
+emit_16(1413);
+emit_16(1347);
+emit_16(1413);
+emit_16(1346);
+emit_16(1413);
+emit_16(1347);
+emit_16(1414);
+emit_16(1348);
+emit_16(1414);
+emit_16(1347);
+emit_16(1414);
+emit_16(1348);
+emit_16(1415);
+emit_16(1349);
+emit_16(1415);
+emit_16(1348);
+emit_16(1415);
+emit_16(1349);
+emit_16(1416);
+emit_16(1350);
+emit_16(1416);
+emit_16(1349);
+emit_16(1416);
+emit_16(1350);
+emit_16(1417);
+emit_16(1351);
+emit_16(1417);
+emit_16(1350);
+emit_16(1417);
+emit_16(1351);
+emit_16(1418);
+emit_16(1352);
+emit_16(1418);
+emit_16(1351);
+emit_16(1418);
+emit_16(1352);
+emit_16(1419);
+emit_16(1353);
+emit_16(1419);
+emit_16(1352);
+emit_16(1419);
+emit_16(1353);
+emit_16(1420);
+emit_16(1354);
+emit_16(1420);
+emit_16(1353);
+emit_16(1420);
+emit_16(1354);
+emit_16(1421);
+emit_16(1355);
+emit_16(1421);
+emit_16(1354);
+emit_16(1421);
+emit_16(1355);
+emit_16(1422);
+emit_16(1356);
+emit_16(1422);
+emit_16(1355);
+emit_16(1422);
+emit_16(1356);
+emit_16(1423);
+emit_16(1357);
+emit_16(1423);
+emit_16(1356);
+emit_16(1423);
+emit_16(1357);
+emit_16(1424);
+emit_16(1358);
+emit_16(1424);
+emit_16(1357);
+emit_16(1424);
+emit_16(1358);
+emit_16(1425);
+emit_16(1359);
+emit_16(1425);
+emit_16(1358);
+emit_16(1425);
+emit_16(1359);
+emit_16(1426);
+emit_16(1360);
+emit_16(1426);
+emit_16(1359);
+emit_16(1426);
+emit_16(1360);
+emit_16(1427);
+emit_16(1361);
+emit_16(1427);
+emit_16(1360);
+emit_16(1427);
+emit_16(1361);
+emit_16(1428);
+emit_16(1362);
+emit_16(1428);
+emit_16(1361);
+emit_16(1428);
+emit_16(1362);
+emit_16(1429);
+emit_16(1363);
+emit_16(1429);
+emit_16(1362);
+emit_16(1429);
+emit_16(1363);
+emit_16(1430);
+emit_16(1364);
+emit_16(1430);
+emit_16(1363);
+emit_16(1430);
+emit_16(1364);
+emit_16(1431);
+emit_16(1365);
+emit_16(1431);
+emit_16(1364);
+emit_16(1431);
+emit_16(1365);
+emit_16(1432);
+emit_16(1366);
+emit_16(1432);
+emit_16(1365);
+emit_16(1432);
+emit_16(1366);
+emit_16(1433);
+emit_16(1367);
+emit_16(1433);
+emit_16(1366);
+emit_16(1433);
+emit_16(1367);
+emit_16(1434);
+emit_16(1368);
+emit_16(1434);
+emit_16(1367);
+emit_16(1434);
+emit_16(1368);
+emit_16(1435);
+emit_16(1369);
+emit_16(1435);
+emit_16(1368);
+emit_16(1435);
+emit_16(1369);
+emit_16(1436);
+emit_16(1370);
+emit_16(1436);
+emit_16(1369);
+emit_16(1436);
+emit_16(1370);
+emit_16(1437);
+emit_16(1371);
+emit_16(1437);
+emit_16(1370);
+emit_16(1437);
+emit_16(1371);
+emit_16(1438);
+emit_16(1372);
+emit_16(1438);
+emit_16(1371);
+emit_16(1438);
+emit_16(1372);
+emit_16(1439);
+emit_16(1373);
+emit_16(1439);
+emit_16(1372);
+emit_16(1439);
+emit_16(1373);
+emit_16(1440);
+emit_16(1374);
+emit_16(1440);
+emit_16(1373);
+emit_16(1440);
+emit_16(1374);
+emit_16(1441);
+emit_16(1375);
+emit_16(1441);
+emit_16(1374);
+emit_16(1441);
+emit_16(1375);
+emit_16(1442);
+emit_16(1376);
+emit_16(1442);
+emit_16(1375);
+emit_16(1442);
+emit_16(1376);
+emit_16(1443);
+emit_16(1377);
+emit_16(1443);
+emit_16(1376);
+emit_16(1443);
+emit_16(1377);
+emit_16(1444);
+emit_16(1378);
+emit_16(1444);
+emit_16(1377);
+emit_16(1444);
+emit_16(1378);
+emit_16(1445);
+emit_16(1379);
+emit_16(1445);
+emit_16(1378);
+emit_16(1445);
+emit_16(1379);
+emit_16(1446);
+emit_16(1380);
+emit_16(1446);
+emit_16(1379);
+emit_16(1446);
+emit_16(1380);
+emit_16(1447);
+emit_16(1381);
+emit_16(1447);
+emit_16(1380);
+emit_16(1447);
+emit_16(1381);
+emit_16(1448);
+emit_16(1382);
+emit_16(1448);
+emit_16(1381);
+emit_16(1448);
+emit_16(1382);
+emit_16(1449);
+emit_16(1383);
+emit_16(1449);
+emit_16(1382);
+emit_16(1449);
+emit_16(1383);
+emit_16(1450);
+emit_16(1384);
+emit_16(1450);
+emit_16(1383);
+emit_16(1450);
+emit_16(1384);
+emit_16(1451);
+emit_16(1385);
+emit_16(1451);
+emit_16(1384);
+emit_16(1452);
+emit_16(1386);
+emit_16(1453);
+emit_16(1387);
+emit_16(1453);
+emit_16(1386);
+emit_16(1453);
+emit_16(1387);
+emit_16(1454);
+emit_16(1388);
+emit_16(1454);
+emit_16(1387);
+emit_16(1454);
+emit_16(1388);
+emit_16(1455);
+emit_16(1389);
+emit_16(1455);
+emit_16(1388);
+emit_16(1455);
+emit_16(1389);
+emit_16(1456);
+emit_16(1390);
+emit_16(1456);
+emit_16(1389);
+emit_16(1456);
+emit_16(1390);
+emit_16(1457);
+emit_16(1391);
+emit_16(1457);
+emit_16(1390);
+emit_16(1457);
+emit_16(1391);
+emit_16(1458);
+emit_16(1392);
+emit_16(1458);
+emit_16(1391);
+emit_16(1458);
+emit_16(1392);
+emit_16(1459);
+emit_16(1393);
+emit_16(1459);
+emit_16(1392);
+emit_16(1459);
+emit_16(1393);
+emit_16(1460);
+emit_16(1394);
+emit_16(1460);
+emit_16(1393);
+emit_16(1460);
+emit_16(1394);
+emit_16(1461);
+emit_16(1395);
+emit_16(1461);
+emit_16(1394);
+emit_16(1461);
+emit_16(1395);
+emit_16(1462);
+emit_16(1396);
+emit_16(1462);
+emit_16(1395);
+emit_16(1462);
+emit_16(1396);
+emit_16(1463);
+emit_16(1397);
+emit_16(1463);
+emit_16(1396);
+emit_16(1463);
+emit_16(1397);
+emit_16(1464);
+emit_16(1398);
+emit_16(1464);
+emit_16(1397);
+emit_16(1464);
+emit_16(1398);
+emit_16(1465);
+emit_16(1399);
+emit_16(1465);
+emit_16(1398);
+emit_16(1465);
+emit_16(1399);
+emit_16(1466);
+emit_16(1400);
+emit_16(1466);
+emit_16(1399);
+emit_16(1466);
+emit_16(1400);
+emit_16(1467);
+emit_16(1401);
+emit_16(1467);
+emit_16(1400);
+emit_16(1467);
+emit_16(1401);
+emit_16(1468);
+emit_16(1402);
+emit_16(1468);
+emit_16(1401);
+emit_16(1468);
+emit_16(1402);
+emit_16(1469);
+emit_16(1403);
+emit_16(1469);
+emit_16(1402);
+emit_16(1469);
+emit_16(1403);
+emit_16(1470);
+emit_16(1404);
+emit_16(1470);
+emit_16(1403);
+emit_16(1470);
+emit_16(1404);
+emit_16(1471);
+emit_16(1405);
+emit_16(1471);
+emit_16(1404);
+emit_16(1471);
+emit_16(1405);
+emit_16(1472);
+emit_16(1406);
+emit_16(1472);
+emit_16(1405);
+emit_16(1472);
+emit_16(1406);
+emit_16(1473);
+emit_16(1407);
+emit_16(1473);
+emit_16(1406);
+emit_16(1473);
+emit_16(1407);
+emit_16(1474);
+emit_16(1408);
+emit_16(1474);
+emit_16(1407);
+emit_16(1474);
+emit_16(1408);
+emit_16(1475);
+emit_16(1409);
+emit_16(1475);
+emit_16(1408);
+emit_16(1475);
+emit_16(1409);
+emit_16(1476);
+emit_16(1410);
+emit_16(1476);
+emit_16(1409);
+emit_16(1476);
+emit_16(1410);
+emit_16(1477);
+emit_16(1411);
+emit_16(1477);
+emit_16(1410);
+emit_16(1477);
+emit_16(1411);
+emit_16(1478);
+emit_16(1412);
+emit_16(1478);
+emit_16(1411);
+emit_16(1478);
+emit_16(1412);
+emit_16(1479);
+emit_16(1413);
+emit_16(1479);
+emit_16(1412);
+emit_16(1479);
+emit_16(1413);
+emit_16(1480);
+emit_16(1414);
+emit_16(1480);
+emit_16(1413);
+emit_16(1480);
+emit_16(1414);
+emit_16(1481);
+emit_16(1415);
+emit_16(1481);
+emit_16(1414);
+emit_16(1481);
+emit_16(1415);
+emit_16(1482);
+emit_16(1416);
+emit_16(1482);
+emit_16(1415);
+emit_16(1482);
+emit_16(1416);
+emit_16(1483);
+emit_16(1417);
+emit_16(1483);
+emit_16(1416);
+emit_16(1483);
+emit_16(1417);
+emit_16(1484);
+emit_16(1418);
+emit_16(1484);
+emit_16(1417);
+emit_16(1484);
+emit_16(1418);
+emit_16(1485);
+emit_16(1419);
+emit_16(1485);
+emit_16(1418);
+emit_16(1485);
+emit_16(1419);
+emit_16(1486);
+emit_16(1420);
+emit_16(1486);
+emit_16(1419);
+emit_16(1486);
+emit_16(1420);
+emit_16(1487);
+emit_16(1421);
+emit_16(1487);
+emit_16(1420);
+emit_16(1487);
+emit_16(1421);
+emit_16(1488);
+emit_16(1422);
+emit_16(1488);
+emit_16(1421);
+emit_16(1488);
+emit_16(1422);
+emit_16(1489);
+emit_16(1423);
+emit_16(1489);
+emit_16(1422);
+emit_16(1489);
+emit_16(1423);
+emit_16(1490);
+emit_16(1424);
+emit_16(1490);
+emit_16(1423);
+emit_16(1490);
+emit_16(1424);
+emit_16(1491);
+emit_16(1425);
+emit_16(1491);
+emit_16(1424);
+emit_16(1491);
+emit_16(1425);
+emit_16(1492);
+emit_16(1426);
+emit_16(1492);
+emit_16(1425);
+emit_16(1492);
+emit_16(1426);
+emit_16(1493);
+emit_16(1427);
+emit_16(1493);
+emit_16(1426);
+emit_16(1493);
+emit_16(1427);
+emit_16(1494);
+emit_16(1428);
+emit_16(1494);
+emit_16(1427);
+emit_16(1494);
+emit_16(1428);
+emit_16(1495);
+emit_16(1429);
+emit_16(1495);
+emit_16(1428);
+emit_16(1495);
+emit_16(1429);
+emit_16(1496);
+emit_16(1430);
+emit_16(1496);
+emit_16(1429);
+emit_16(1496);
+emit_16(1430);
+emit_16(1497);
+emit_16(1431);
+emit_16(1497);
+emit_16(1430);
+emit_16(1497);
+emit_16(1431);
+emit_16(1498);
+emit_16(1432);
+emit_16(1498);
+emit_16(1431);
+emit_16(1498);
+emit_16(1432);
+emit_16(1499);
+emit_16(1433);
+emit_16(1499);
+emit_16(1432);
+emit_16(1499);
+emit_16(1433);
+emit_16(1500);
+emit_16(1434);
+emit_16(1500);
+emit_16(1433);
+emit_16(1500);
+emit_16(1434);
+emit_16(1501);
+emit_16(1435);
+emit_16(1501);
+emit_16(1434);
+emit_16(1501);
+emit_16(1435);
+emit_16(1502);
+emit_16(1436);
+emit_16(1502);
+emit_16(1435);
+emit_16(1502);
+emit_16(1436);
+emit_16(1503);
+emit_16(1437);
+emit_16(1503);
+emit_16(1436);
+emit_16(1503);
+emit_16(1437);
+emit_16(1504);
+emit_16(1438);
+emit_16(1504);
+emit_16(1437);
+emit_16(1504);
+emit_16(1438);
+emit_16(1505);
+emit_16(1439);
+emit_16(1505);
+emit_16(1438);
+emit_16(1505);
+emit_16(1439);
+emit_16(1506);
+emit_16(1440);
+emit_16(1506);
+emit_16(1439);
+emit_16(1506);
+emit_16(1440);
+emit_16(1507);
+emit_16(1441);
+emit_16(1507);
+emit_16(1440);
+emit_16(1507);
+emit_16(1441);
+emit_16(1508);
+emit_16(1442);
+emit_16(1508);
+emit_16(1441);
+emit_16(1508);
+emit_16(1442);
+emit_16(1509);
+emit_16(1443);
+emit_16(1509);
+emit_16(1442);
+emit_16(1509);
+emit_16(1443);
+emit_16(1510);
+emit_16(1444);
+emit_16(1510);
+emit_16(1443);
+emit_16(1510);
+emit_16(1444);
+emit_16(1511);
+emit_16(1445);
+emit_16(1511);
+emit_16(1444);
+emit_16(1511);
+emit_16(1445);
+emit_16(1512);
+emit_16(1446);
+emit_16(1512);
+emit_16(1445);
+emit_16(1512);
+emit_16(1446);
+emit_16(1513);
+emit_16(1447);
+emit_16(1513);
+emit_16(1446);
+emit_16(1513);
+emit_16(1447);
+emit_16(1514);
+emit_16(1448);
+emit_16(1514);
+emit_16(1447);
+emit_16(1514);
+emit_16(1448);
+emit_16(1515);
+emit_16(1449);
+emit_16(1515);
+emit_16(1448);
+emit_16(1515);
+emit_16(1449);
+emit_16(1516);
+emit_16(1450);
+emit_16(1516);
+emit_16(1449);
+emit_16(1516);
+emit_16(1450);
+emit_16(1517);
+emit_16(1451);
+emit_16(1517);
+emit_16(1450);
+emit_16(1518);
+emit_16(1452);
+emit_16(1519);
+emit_16(1453);
+emit_16(1519);
+emit_16(1452);
+emit_16(1519);
+emit_16(1453);
+emit_16(1520);
+emit_16(1454);
+emit_16(1520);
+emit_16(1453);
+emit_16(1520);
+emit_16(1454);
+emit_16(1521);
+emit_16(1455);
+emit_16(1521);
+emit_16(1454);
+emit_16(1521);
+emit_16(1455);
+emit_16(1522);
+emit_16(1456);
+emit_16(1522);
+emit_16(1455);
+emit_16(1522);
+emit_16(1456);
+emit_16(1523);
+emit_16(1457);
+emit_16(1523);
+emit_16(1456);
+emit_16(1523);
+emit_16(1457);
+emit_16(1524);
+emit_16(1458);
+emit_16(1524);
+emit_16(1457);
+emit_16(1524);
+emit_16(1458);
+emit_16(1525);
+emit_16(1459);
+emit_16(1525);
+emit_16(1458);
+emit_16(1525);
+emit_16(1459);
+emit_16(1526);
+emit_16(1460);
+emit_16(1526);
+emit_16(1459);
+emit_16(1526);
+emit_16(1460);
+emit_16(1527);
+emit_16(1461);
+emit_16(1527);
+emit_16(1460);
+emit_16(1527);
+emit_16(1461);
+emit_16(1528);
+emit_16(1462);
+emit_16(1528);
+emit_16(1461);
+emit_16(1528);
+emit_16(1462);
+emit_16(1529);
+emit_16(1463);
+emit_16(1529);
+emit_16(1462);
+emit_16(1529);
+emit_16(1463);
+emit_16(1530);
+emit_16(1464);
+emit_16(1530);
+emit_16(1463);
+emit_16(1530);
+emit_16(1464);
+emit_16(1531);
+emit_16(1465);
+emit_16(1531);
+emit_16(1464);
+emit_16(1531);
+emit_16(1465);
+emit_16(1532);
+emit_16(1466);
+emit_16(1532);
+emit_16(1465);
+emit_16(1532);
+emit_16(1466);
+emit_16(1533);
+emit_16(1467);
+emit_16(1533);
+emit_16(1466);
+emit_16(1533);
+emit_16(1467);
+emit_16(1534);
+emit_16(1468);
+emit_16(1534);
+emit_16(1467);
+emit_16(1534);
+emit_16(1468);
+emit_16(1535);
+emit_16(1469);
+emit_16(1535);
+emit_16(1468);
+emit_16(1535);
+emit_16(1469);
+emit_16(1536);
+emit_16(1470);
+emit_16(1536);
+emit_16(1469);
+emit_16(1536);
+emit_16(1470);
+emit_16(1537);
+emit_16(1471);
+emit_16(1537);
+emit_16(1470);
+emit_16(1537);
+emit_16(1471);
+emit_16(1538);
+emit_16(1472);
+emit_16(1538);
+emit_16(1471);
+emit_16(1538);
+emit_16(1472);
+emit_16(1539);
+emit_16(1473);
+emit_16(1539);
+emit_16(1472);
+emit_16(1539);
+emit_16(1473);
+emit_16(1540);
+emit_16(1474);
+emit_16(1540);
+emit_16(1473);
+emit_16(1540);
+emit_16(1474);
+emit_16(1541);
+emit_16(1475);
+emit_16(1541);
+emit_16(1474);
+emit_16(1541);
+emit_16(1475);
+emit_16(1542);
+emit_16(1476);
+emit_16(1542);
+emit_16(1475);
+emit_16(1542);
+emit_16(1476);
+emit_16(1543);
+emit_16(1477);
+emit_16(1543);
+emit_16(1476);
+emit_16(1543);
+emit_16(1477);
+emit_16(1544);
+emit_16(1478);
+emit_16(1544);
+emit_16(1477);
+emit_16(1544);
+emit_16(1478);
+emit_16(1545);
+emit_16(1479);
+emit_16(1545);
+emit_16(1478);
+emit_16(1545);
+emit_16(1479);
+emit_16(1546);
+emit_16(1480);
+emit_16(1546);
+emit_16(1479);
+emit_16(1546);
+emit_16(1480);
+emit_16(1547);
+emit_16(1481);
+emit_16(1547);
+emit_16(1480);
+emit_16(1547);
+emit_16(1481);
+emit_16(1548);
+emit_16(1482);
+emit_16(1548);
+emit_16(1481);
+emit_16(1548);
+emit_16(1482);
+emit_16(1549);
+emit_16(1483);
+emit_16(1549);
+emit_16(1482);
+emit_16(1549);
+emit_16(1483);
+emit_16(1550);
+emit_16(1484);
+emit_16(1550);
+emit_16(1483);
+emit_16(1550);
+emit_16(1484);
+emit_16(1551);
+emit_16(1485);
+emit_16(1551);
+emit_16(1484);
+emit_16(1551);
+emit_16(1485);
+emit_16(1552);
+emit_16(1486);
+emit_16(1552);
+emit_16(1485);
+emit_16(1552);
+emit_16(1486);
+emit_16(1553);
+emit_16(1487);
+emit_16(1553);
+emit_16(1486);
+emit_16(1553);
+emit_16(1487);
+emit_16(1554);
+emit_16(1488);
+emit_16(1554);
+emit_16(1487);
+emit_16(1554);
+emit_16(1488);
+emit_16(1555);
+emit_16(1489);
+emit_16(1555);
+emit_16(1488);
+emit_16(1555);
+emit_16(1489);
+emit_16(1556);
+emit_16(1490);
+emit_16(1556);
+emit_16(1489);
+emit_16(1556);
+emit_16(1490);
+emit_16(1557);
+emit_16(1491);
+emit_16(1557);
+emit_16(1490);
+emit_16(1557);
+emit_16(1491);
+emit_16(1558);
+emit_16(1492);
+emit_16(1558);
+emit_16(1491);
+emit_16(1558);
+emit_16(1492);
+emit_16(1559);
+emit_16(1493);
+emit_16(1559);
+emit_16(1492);
+emit_16(1559);
+emit_16(1493);
+emit_16(1560);
+emit_16(1494);
+emit_16(1560);
+emit_16(1493);
+emit_16(1560);
+emit_16(1494);
+emit_16(1561);
+emit_16(1495);
+emit_16(1561);
+emit_16(1494);
+emit_16(1561);
+emit_16(1495);
+emit_16(1562);
+emit_16(1496);
+emit_16(1562);
+emit_16(1495);
+emit_16(1562);
+emit_16(1496);
+emit_16(1563);
+emit_16(1497);
+emit_16(1563);
+emit_16(1496);
+emit_16(1563);
+emit_16(1497);
+emit_16(1564);
+emit_16(1498);
+emit_16(1564);
+emit_16(1497);
+emit_16(1564);
+emit_16(1498);
+emit_16(1565);
+emit_16(1499);
+emit_16(1565);
+emit_16(1498);
+emit_16(1565);
+emit_16(1499);
+emit_16(1566);
+emit_16(1500);
+emit_16(1566);
+emit_16(1499);
+emit_16(1566);
+emit_16(1500);
+emit_16(1567);
+emit_16(1501);
+emit_16(1567);
+emit_16(1500);
+emit_16(1567);
+emit_16(1501);
+emit_16(1568);
+emit_16(1502);
+emit_16(1568);
+emit_16(1501);
+emit_16(1568);
+emit_16(1502);
+emit_16(1569);
+emit_16(1503);
+emit_16(1569);
+emit_16(1502);
+emit_16(1569);
+emit_16(1503);
+emit_16(1570);
+emit_16(1504);
+emit_16(1570);
+emit_16(1503);
+emit_16(1570);
+emit_16(1504);
+emit_16(1571);
+emit_16(1505);
+emit_16(1571);
+emit_16(1504);
+emit_16(1571);
+emit_16(1505);
+emit_16(1572);
+emit_16(1506);
+emit_16(1572);
+emit_16(1505);
+emit_16(1572);
+emit_16(1506);
+emit_16(1573);
+emit_16(1507);
+emit_16(1573);
+emit_16(1506);
+emit_16(1573);
+emit_16(1507);
+emit_16(1574);
+emit_16(1508);
+emit_16(1574);
+emit_16(1507);
+emit_16(1574);
+emit_16(1508);
+emit_16(1575);
+emit_16(1509);
+emit_16(1575);
+emit_16(1508);
+emit_16(1575);
+emit_16(1509);
+emit_16(1576);
+emit_16(1510);
+emit_16(1576);
+emit_16(1509);
+emit_16(1576);
+emit_16(1510);
+emit_16(1577);
+emit_16(1511);
+emit_16(1577);
+emit_16(1510);
+emit_16(1577);
+emit_16(1511);
+emit_16(1578);
+emit_16(1512);
+emit_16(1578);
+emit_16(1511);
+emit_16(1578);
+emit_16(1512);
+emit_16(1579);
+emit_16(1513);
+emit_16(1579);
+emit_16(1512);
+emit_16(1579);
+emit_16(1513);
+emit_16(1580);
+emit_16(1514);
+emit_16(1580);
+emit_16(1513);
+emit_16(1580);
+emit_16(1514);
+emit_16(1581);
+emit_16(1515);
+emit_16(1581);
+emit_16(1514);
+emit_16(1581);
+emit_16(1515);
+emit_16(1582);
+emit_16(1516);
+emit_16(1582);
+emit_16(1515);
+emit_16(1582);
+emit_16(1516);
+emit_16(1583);
+emit_16(1517);
+emit_16(1583);
+emit_16(1516);
+emit_16(1584);
+emit_16(1518);
+emit_16(1585);
+emit_16(1519);
+emit_16(1585);
+emit_16(1518);
+emit_16(1585);
+emit_16(1519);
+emit_16(1586);
+emit_16(1520);
+emit_16(1586);
+emit_16(1519);
+emit_16(1586);
+emit_16(1520);
+emit_16(1587);
+emit_16(1521);
+emit_16(1587);
+emit_16(1520);
+emit_16(1587);
+emit_16(1521);
+emit_16(1588);
+emit_16(1522);
+emit_16(1588);
+emit_16(1521);
+emit_16(1588);
+emit_16(1522);
+emit_16(1589);
+emit_16(1523);
+emit_16(1589);
+emit_16(1522);
+emit_16(1589);
+emit_16(1523);
+emit_16(1590);
+emit_16(1524);
+emit_16(1590);
+emit_16(1523);
+emit_16(1590);
+emit_16(1524);
+emit_16(1591);
+emit_16(1525);
+emit_16(1591);
+emit_16(1524);
+emit_16(1591);
+emit_16(1525);
+emit_16(1592);
+emit_16(1526);
+emit_16(1592);
+emit_16(1525);
+emit_16(1592);
+emit_16(1526);
+emit_16(1593);
+emit_16(1527);
+emit_16(1593);
+emit_16(1526);
+emit_16(1593);
+emit_16(1527);
+emit_16(1594);
+emit_16(1528);
+emit_16(1594);
+emit_16(1527);
+emit_16(1594);
+emit_16(1528);
+emit_16(1595);
+emit_16(1529);
+emit_16(1595);
+emit_16(1528);
+emit_16(1595);
+emit_16(1529);
+emit_16(1596);
+emit_16(1530);
+emit_16(1596);
+emit_16(1529);
+emit_16(1596);
+emit_16(1530);
+emit_16(1597);
+emit_16(1531);
+emit_16(1597);
+emit_16(1530);
+emit_16(1597);
+emit_16(1531);
+emit_16(1598);
+emit_16(1532);
+emit_16(1598);
+emit_16(1531);
+emit_16(1598);
+emit_16(1532);
+emit_16(1599);
+emit_16(1533);
+emit_16(1599);
+emit_16(1532);
+emit_16(1599);
+emit_16(1533);
+emit_16(1600);
+emit_16(1534);
+emit_16(1600);
+emit_16(1533);
+emit_16(1600);
+emit_16(1534);
+emit_16(1601);
+emit_16(1535);
+emit_16(1601);
+emit_16(1534);
+emit_16(1601);
+emit_16(1535);
+emit_16(1602);
+emit_16(1536);
+emit_16(1602);
+emit_16(1535);
+emit_16(1602);
+emit_16(1536);
+emit_16(1603);
+emit_16(1537);
+emit_16(1603);
+emit_16(1536);
+emit_16(1603);
+emit_16(1537);
+emit_16(1604);
+emit_16(1538);
+emit_16(1604);
+emit_16(1537);
+emit_16(1604);
+emit_16(1538);
+emit_16(1605);
+emit_16(1539);
+emit_16(1605);
+emit_16(1538);
+emit_16(1605);
+emit_16(1539);
+emit_16(1606);
+emit_16(1540);
+emit_16(1606);
+emit_16(1539);
+emit_16(1606);
+emit_16(1540);
+emit_16(1607);
+emit_16(1541);
+emit_16(1607);
+emit_16(1540);
+emit_16(1607);
+emit_16(1541);
+emit_16(1608);
+emit_16(1542);
+emit_16(1608);
+emit_16(1541);
+emit_16(1608);
+emit_16(1542);
+emit_16(1609);
+emit_16(1543);
+emit_16(1609);
+emit_16(1542);
+emit_16(1609);
+emit_16(1543);
+emit_16(1610);
+emit_16(1544);
+emit_16(1610);
+emit_16(1543);
+emit_16(1610);
+emit_16(1544);
+emit_16(1611);
+emit_16(1545);
+emit_16(1611);
+emit_16(1544);
+emit_16(1611);
+emit_16(1545);
+emit_16(1612);
+emit_16(1546);
+emit_16(1612);
+emit_16(1545);
+emit_16(1612);
+emit_16(1546);
+emit_16(1613);
+emit_16(1547);
+emit_16(1613);
+emit_16(1546);
+emit_16(1613);
+emit_16(1547);
+emit_16(1614);
+emit_16(1548);
+emit_16(1614);
+emit_16(1547);
+emit_16(1614);
+emit_16(1548);
+emit_16(1615);
+emit_16(1549);
+emit_16(1615);
+emit_16(1548);
+emit_16(1615);
+emit_16(1549);
+emit_16(1616);
+emit_16(1550);
+emit_16(1616);
+emit_16(1549);
+emit_16(1616);
+emit_16(1550);
+emit_16(1617);
+emit_16(1551);
+emit_16(1617);
+emit_16(1550);
+emit_16(1617);
+emit_16(1551);
+emit_16(1618);
+emit_16(1552);
+emit_16(1618);
+emit_16(1551);
+emit_16(1618);
+emit_16(1552);
+emit_16(1619);
+emit_16(1553);
+emit_16(1619);
+emit_16(1552);
+emit_16(1619);
+emit_16(1553);
+emit_16(1620);
+emit_16(1554);
+emit_16(1620);
+emit_16(1553);
+emit_16(1620);
+emit_16(1554);
+emit_16(1621);
+emit_16(1555);
+emit_16(1621);
+emit_16(1554);
+emit_16(1621);
+emit_16(1555);
+emit_16(1622);
+emit_16(1556);
+emit_16(1622);
+emit_16(1555);
+emit_16(1622);
+emit_16(1556);
+emit_16(1623);
+emit_16(1557);
+emit_16(1623);
+emit_16(1556);
+emit_16(1623);
+emit_16(1557);
+emit_16(1624);
+emit_16(1558);
+emit_16(1624);
+emit_16(1557);
+emit_16(1624);
+emit_16(1558);
+emit_16(1625);
+emit_16(1559);
+emit_16(1625);
+emit_16(1558);
+emit_16(1625);
+emit_16(1559);
+emit_16(1626);
+emit_16(1560);
+emit_16(1626);
+emit_16(1559);
+emit_16(1626);
+emit_16(1560);
+emit_16(1627);
+emit_16(1561);
+emit_16(1627);
+emit_16(1560);
+emit_16(1627);
+emit_16(1561);
+emit_16(1628);
+emit_16(1562);
+emit_16(1628);
+emit_16(1561);
+emit_16(1628);
+emit_16(1562);
+emit_16(1629);
+emit_16(1563);
+emit_16(1629);
+emit_16(1562);
+emit_16(1629);
+emit_16(1563);
+emit_16(1630);
+emit_16(1564);
+emit_16(1630);
+emit_16(1563);
+emit_16(1630);
+emit_16(1564);
+emit_16(1631);
+emit_16(1565);
+emit_16(1631);
+emit_16(1564);
+emit_16(1631);
+emit_16(1565);
+emit_16(1632);
+emit_16(1566);
+emit_16(1632);
+emit_16(1565);
+emit_16(1632);
+emit_16(1566);
+emit_16(1633);
+emit_16(1567);
+emit_16(1633);
+emit_16(1566);
+emit_16(1633);
+emit_16(1567);
+emit_16(1634);
+emit_16(1568);
+emit_16(1634);
+emit_16(1567);
+emit_16(1634);
+emit_16(1568);
+emit_16(1635);
+emit_16(1569);
+emit_16(1635);
+emit_16(1568);
+emit_16(1635);
+emit_16(1569);
+emit_16(1636);
+emit_16(1570);
+emit_16(1636);
+emit_16(1569);
+emit_16(1636);
+emit_16(1570);
+emit_16(1637);
+emit_16(1571);
+emit_16(1637);
+emit_16(1570);
+emit_16(1637);
+emit_16(1571);
+emit_16(1638);
+emit_16(1572);
+emit_16(1638);
+emit_16(1571);
+emit_16(1638);
+emit_16(1572);
+emit_16(1639);
+emit_16(1573);
+emit_16(1639);
+emit_16(1572);
+emit_16(1639);
+emit_16(1573);
+emit_16(1640);
+emit_16(1574);
+emit_16(1640);
+emit_16(1573);
+emit_16(1640);
+emit_16(1574);
+emit_16(1641);
+emit_16(1575);
+emit_16(1641);
+emit_16(1574);
+emit_16(1641);
+emit_16(1575);
+emit_16(1642);
+emit_16(1576);
+emit_16(1642);
+emit_16(1575);
+emit_16(1642);
+emit_16(1576);
+emit_16(1643);
+emit_16(1577);
+emit_16(1643);
+emit_16(1576);
+emit_16(1643);
+emit_16(1577);
+emit_16(1644);
+emit_16(1578);
+emit_16(1644);
+emit_16(1577);
+emit_16(1644);
+emit_16(1578);
+emit_16(1645);
+emit_16(1579);
+emit_16(1645);
+emit_16(1578);
+emit_16(1645);
+emit_16(1579);
+emit_16(1646);
+emit_16(1580);
+emit_16(1646);
+emit_16(1579);
+emit_16(1646);
+emit_16(1580);
+emit_16(1647);
+emit_16(1581);
+emit_16(1647);
+emit_16(1580);
+emit_16(1647);
+emit_16(1581);
+emit_16(1648);
+emit_16(1582);
+emit_16(1648);
+emit_16(1581);
+emit_16(1648);
+emit_16(1582);
+emit_16(1649);
+emit_16(1583);
+emit_16(1649);
+emit_16(1582);
+emit_16(1650);
+emit_16(1584);
+emit_16(1651);
+emit_16(1585);
+emit_16(1651);
+emit_16(1584);
+emit_16(1651);
+emit_16(1585);
+emit_16(1652);
+emit_16(1586);
+emit_16(1652);
+emit_16(1585);
+emit_16(1652);
+emit_16(1586);
+emit_16(1653);
+emit_16(1587);
+emit_16(1653);
+emit_16(1586);
+emit_16(1653);
+emit_16(1587);
+emit_16(1654);
+emit_16(1588);
+emit_16(1654);
+emit_16(1587);
+emit_16(1654);
+emit_16(1588);
+emit_16(1655);
+emit_16(1589);
+emit_16(1655);
+emit_16(1588);
+emit_16(1655);
+emit_16(1589);
+emit_16(1656);
+emit_16(1590);
+emit_16(1656);
+emit_16(1589);
+emit_16(1656);
+emit_16(1590);
+emit_16(1657);
+emit_16(1591);
+emit_16(1657);
+emit_16(1590);
+emit_16(1657);
+emit_16(1591);
+emit_16(1658);
+emit_16(1592);
+emit_16(1658);
+emit_16(1591);
+emit_16(1658);
+emit_16(1592);
+emit_16(1659);
+emit_16(1593);
+emit_16(1659);
+emit_16(1592);
+emit_16(1659);
+emit_16(1593);
+emit_16(1660);
+emit_16(1594);
+emit_16(1660);
+emit_16(1593);
+emit_16(1660);
+emit_16(1594);
+emit_16(1661);
+emit_16(1595);
+emit_16(1661);
+emit_16(1594);
+emit_16(1661);
+emit_16(1595);
+emit_16(1662);
+emit_16(1596);
+emit_16(1662);
+emit_16(1595);
+emit_16(1662);
+emit_16(1596);
+emit_16(1663);
+emit_16(1597);
+emit_16(1663);
+emit_16(1596);
+emit_16(1663);
+emit_16(1597);
+emit_16(1664);
+emit_16(1598);
+emit_16(1664);
+emit_16(1597);
+emit_16(1664);
+emit_16(1598);
+emit_16(1665);
+emit_16(1599);
+emit_16(1665);
+emit_16(1598);
+emit_16(1665);
+emit_16(1599);
+emit_16(1666);
+emit_16(1600);
+emit_16(1666);
+emit_16(1599);
+emit_16(1666);
+emit_16(1600);
+emit_16(1667);
+emit_16(1601);
+emit_16(1667);
+emit_16(1600);
+emit_16(1667);
+emit_16(1601);
+emit_16(1668);
+emit_16(1602);
+emit_16(1668);
+emit_16(1601);
+emit_16(1668);
+emit_16(1602);
+emit_16(1669);
+emit_16(1603);
+emit_16(1669);
+emit_16(1602);
+emit_16(1669);
+emit_16(1603);
+emit_16(1670);
+emit_16(1604);
+emit_16(1670);
+emit_16(1603);
+emit_16(1670);
+emit_16(1604);
+emit_16(1671);
+emit_16(1605);
+emit_16(1671);
+emit_16(1604);
+emit_16(1671);
+emit_16(1605);
+emit_16(1672);
+emit_16(1606);
+emit_16(1672);
+emit_16(1605);
+emit_16(1672);
+emit_16(1606);
+emit_16(1673);
+emit_16(1607);
+emit_16(1673);
+emit_16(1606);
+emit_16(1673);
+emit_16(1607);
+emit_16(1674);
+emit_16(1608);
+emit_16(1674);
+emit_16(1607);
+emit_16(1674);
+emit_16(1608);
+emit_16(1675);
+emit_16(1609);
+emit_16(1675);
+emit_16(1608);
+emit_16(1675);
+emit_16(1609);
+emit_16(1676);
+emit_16(1610);
+emit_16(1676);
+emit_16(1609);
+emit_16(1676);
+emit_16(1610);
+emit_16(1677);
+emit_16(1611);
+emit_16(1677);
+emit_16(1610);
+emit_16(1677);
+emit_16(1611);
+emit_16(1678);
+emit_16(1612);
+emit_16(1678);
+emit_16(1611);
+emit_16(1678);
+emit_16(1612);
+emit_16(1679);
+emit_16(1613);
+emit_16(1679);
+emit_16(1612);
+emit_16(1679);
+emit_16(1613);
+emit_16(1680);
+emit_16(1614);
+emit_16(1680);
+emit_16(1613);
+emit_16(1680);
+emit_16(1614);
+emit_16(1681);
+emit_16(1615);
+emit_16(1681);
+emit_16(1614);
+emit_16(1681);
+emit_16(1615);
+emit_16(1682);
+emit_16(1616);
+emit_16(1682);
+emit_16(1615);
+emit_16(1682);
+emit_16(1616);
+emit_16(1683);
+emit_16(1617);
+emit_16(1683);
+emit_16(1616);
+emit_16(1683);
+emit_16(1617);
+emit_16(1684);
+emit_16(1618);
+emit_16(1684);
+emit_16(1617);
+emit_16(1684);
+emit_16(1618);
+emit_16(1685);
+emit_16(1619);
+emit_16(1685);
+emit_16(1618);
+emit_16(1685);
+emit_16(1619);
+emit_16(1686);
+emit_16(1620);
+emit_16(1686);
+emit_16(1619);
+emit_16(1686);
+emit_16(1620);
+emit_16(1687);
+emit_16(1621);
+emit_16(1687);
+emit_16(1620);
+emit_16(1687);
+emit_16(1621);
+emit_16(1688);
+emit_16(1622);
+emit_16(1688);
+emit_16(1621);
+emit_16(1688);
+emit_16(1622);
+emit_16(1689);
+emit_16(1623);
+emit_16(1689);
+emit_16(1622);
+emit_16(1689);
+emit_16(1623);
+emit_16(1690);
+emit_16(1624);
+emit_16(1690);
+emit_16(1623);
+emit_16(1690);
+emit_16(1624);
+emit_16(1691);
+emit_16(1625);
+emit_16(1691);
+emit_16(1624);
+emit_16(1691);
+emit_16(1625);
+emit_16(1692);
+emit_16(1626);
+emit_16(1692);
+emit_16(1625);
+emit_16(1692);
+emit_16(1626);
+emit_16(1693);
+emit_16(1627);
+emit_16(1693);
+emit_16(1626);
+emit_16(1693);
+emit_16(1627);
+emit_16(1694);
+emit_16(1628);
+emit_16(1694);
+emit_16(1627);
+emit_16(1694);
+emit_16(1628);
+emit_16(1695);
+emit_16(1629);
+emit_16(1695);
+emit_16(1628);
+emit_16(1695);
+emit_16(1629);
+emit_16(1696);
+emit_16(1630);
+emit_16(1696);
+emit_16(1629);
+emit_16(1696);
+emit_16(1630);
+emit_16(1697);
+emit_16(1631);
+emit_16(1697);
+emit_16(1630);
+emit_16(1697);
+emit_16(1631);
+emit_16(1698);
+emit_16(1632);
+emit_16(1698);
+emit_16(1631);
+emit_16(1698);
+emit_16(1632);
+emit_16(1699);
+emit_16(1633);
+emit_16(1699);
+emit_16(1632);
+emit_16(1699);
+emit_16(1633);
+emit_16(1700);
+emit_16(1634);
+emit_16(1700);
+emit_16(1633);
+emit_16(1700);
+emit_16(1634);
+emit_16(1701);
+emit_16(1635);
+emit_16(1701);
+emit_16(1634);
+emit_16(1701);
+emit_16(1635);
+emit_16(1702);
+emit_16(1636);
+emit_16(1702);
+emit_16(1635);
+emit_16(1702);
+emit_16(1636);
+emit_16(1703);
+emit_16(1637);
+emit_16(1703);
+emit_16(1636);
+emit_16(1703);
+emit_16(1637);
+emit_16(1704);
+emit_16(1638);
+emit_16(1704);
+emit_16(1637);
+emit_16(1704);
+emit_16(1638);
+emit_16(1705);
+emit_16(1639);
+emit_16(1705);
+emit_16(1638);
+emit_16(1705);
+emit_16(1639);
+emit_16(1706);
+emit_16(1640);
+emit_16(1706);
+emit_16(1639);
+emit_16(1706);
+emit_16(1640);
+emit_16(1707);
+emit_16(1641);
+emit_16(1707);
+emit_16(1640);
+emit_16(1707);
+emit_16(1641);
+emit_16(1708);
+emit_16(1642);
+emit_16(1708);
+emit_16(1641);
+emit_16(1708);
+emit_16(1642);
+emit_16(1709);
+emit_16(1643);
+emit_16(1709);
+emit_16(1642);
+emit_16(1709);
+emit_16(1643);
+emit_16(1710);
+emit_16(1644);
+emit_16(1710);
+emit_16(1643);
+emit_16(1710);
+emit_16(1644);
+emit_16(1711);
+emit_16(1645);
+emit_16(1711);
+emit_16(1644);
+emit_16(1711);
+emit_16(1645);
+emit_16(1712);
+emit_16(1646);
+emit_16(1712);
+emit_16(1645);
+emit_16(1712);
+emit_16(1646);
+emit_16(1713);
+emit_16(1647);
+emit_16(1713);
+emit_16(1646);
+emit_16(1713);
+emit_16(1647);
+emit_16(1714);
+emit_16(1648);
+emit_16(1714);
+emit_16(1647);
+emit_16(1714);
+emit_16(1648);
+emit_16(1715);
+emit_16(1649);
+emit_16(1715);
+emit_16(1648);
+emit_16(1716);
+emit_16(1650);
+emit_16(1717);
+emit_16(1651);
+emit_16(1717);
+emit_16(1650);
+emit_16(1717);
+emit_16(1651);
+emit_16(1718);
+emit_16(1652);
+emit_16(1718);
+emit_16(1651);
+emit_16(1718);
+emit_16(1652);
+emit_16(1719);
+emit_16(1653);
+emit_16(1719);
+emit_16(1652);
+emit_16(1719);
+emit_16(1653);
+emit_16(1720);
+emit_16(1654);
+emit_16(1720);
+emit_16(1653);
+emit_16(1720);
+emit_16(1654);
+emit_16(1721);
+emit_16(1655);
+emit_16(1721);
+emit_16(1654);
+emit_16(1721);
+emit_16(1655);
+emit_16(1722);
+emit_16(1656);
+emit_16(1722);
+emit_16(1655);
+emit_16(1722);
+emit_16(1656);
+emit_16(1723);
+emit_16(1657);
+emit_16(1723);
+emit_16(1656);
+emit_16(1723);
+emit_16(1657);
+emit_16(1724);
+emit_16(1658);
+emit_16(1724);
+emit_16(1657);
+emit_16(1724);
+emit_16(1658);
+emit_16(1725);
+emit_16(1659);
+emit_16(1725);
+emit_16(1658);
+emit_16(1725);
+emit_16(1659);
+emit_16(1726);
+emit_16(1660);
+emit_16(1726);
+emit_16(1659);
+emit_16(1726);
+emit_16(1660);
+emit_16(1727);
+emit_16(1661);
+emit_16(1727);
+emit_16(1660);
+emit_16(1727);
+emit_16(1661);
+emit_16(1728);
+emit_16(1662);
+emit_16(1728);
+emit_16(1661);
+emit_16(1728);
+emit_16(1662);
+emit_16(1729);
+emit_16(1663);
+emit_16(1729);
+emit_16(1662);
+emit_16(1729);
+emit_16(1663);
+emit_16(1730);
+emit_16(1664);
+emit_16(1730);
+emit_16(1663);
+emit_16(1730);
+emit_16(1664);
+emit_16(1731);
+emit_16(1665);
+emit_16(1731);
+emit_16(1664);
+emit_16(1731);
+emit_16(1665);
+emit_16(1732);
+emit_16(1666);
+emit_16(1732);
+emit_16(1665);
+emit_16(1732);
+emit_16(1666);
+emit_16(1733);
+emit_16(1667);
+emit_16(1733);
+emit_16(1666);
+emit_16(1733);
+emit_16(1667);
+emit_16(1734);
+emit_16(1668);
+emit_16(1734);
+emit_16(1667);
+emit_16(1734);
+emit_16(1668);
+emit_16(1735);
+emit_16(1669);
+emit_16(1735);
+emit_16(1668);
+emit_16(1735);
+emit_16(1669);
+emit_16(1736);
+emit_16(1670);
+emit_16(1736);
+emit_16(1669);
+emit_16(1736);
+emit_16(1670);
+emit_16(1737);
+emit_16(1671);
+emit_16(1737);
+emit_16(1670);
+emit_16(1737);
+emit_16(1671);
+emit_16(1738);
+emit_16(1672);
+emit_16(1738);
+emit_16(1671);
+emit_16(1738);
+emit_16(1672);
+emit_16(1739);
+emit_16(1673);
+emit_16(1739);
+emit_16(1672);
+emit_16(1739);
+emit_16(1673);
+emit_16(1740);
+emit_16(1674);
+emit_16(1740);
+emit_16(1673);
+emit_16(1740);
+emit_16(1674);
+emit_16(1741);
+emit_16(1675);
+emit_16(1741);
+emit_16(1674);
+emit_16(1741);
+emit_16(1675);
+emit_16(1742);
+emit_16(1676);
+emit_16(1742);
+emit_16(1675);
+emit_16(1742);
+emit_16(1676);
+emit_16(1743);
+emit_16(1677);
+emit_16(1743);
+emit_16(1676);
+emit_16(1743);
+emit_16(1677);
+emit_16(1744);
+emit_16(1678);
+emit_16(1744);
+emit_16(1677);
+emit_16(1744);
+emit_16(1678);
+emit_16(1745);
+emit_16(1679);
+emit_16(1745);
+emit_16(1678);
+emit_16(1745);
+emit_16(1679);
+emit_16(1746);
+emit_16(1680);
+emit_16(1746);
+emit_16(1679);
+emit_16(1746);
+emit_16(1680);
+emit_16(1747);
+emit_16(1681);
+emit_16(1747);
+emit_16(1680);
+emit_16(1747);
+emit_16(1681);
+emit_16(1748);
+emit_16(1682);
+emit_16(1748);
+emit_16(1681);
+emit_16(1748);
+emit_16(1682);
+emit_16(1749);
+emit_16(1683);
+emit_16(1749);
+emit_16(1682);
+emit_16(1749);
+emit_16(1683);
+emit_16(1750);
+emit_16(1684);
+emit_16(1750);
+emit_16(1683);
+emit_16(1750);
+emit_16(1684);
+emit_16(1751);
+emit_16(1685);
+emit_16(1751);
+emit_16(1684);
+emit_16(1751);
+emit_16(1685);
+emit_16(1752);
+emit_16(1686);
+emit_16(1752);
+emit_16(1685);
+emit_16(1752);
+emit_16(1686);
+emit_16(1753);
+emit_16(1687);
+emit_16(1753);
+emit_16(1686);
+emit_16(1753);
+emit_16(1687);
+emit_16(1754);
+emit_16(1688);
+emit_16(1754);
+emit_16(1687);
+emit_16(1754);
+emit_16(1688);
+emit_16(1755);
+emit_16(1689);
+emit_16(1755);
+emit_16(1688);
+emit_16(1755);
+emit_16(1689);
+emit_16(1756);
+emit_16(1690);
+emit_16(1756);
+emit_16(1689);
+emit_16(1756);
+emit_16(1690);
+emit_16(1757);
+emit_16(1691);
+emit_16(1757);
+emit_16(1690);
+emit_16(1757);
+emit_16(1691);
+emit_16(1758);
+emit_16(1692);
+emit_16(1758);
+emit_16(1691);
+emit_16(1758);
+emit_16(1692);
+emit_16(1759);
+emit_16(1693);
+emit_16(1759);
+emit_16(1692);
+emit_16(1759);
+emit_16(1693);
+emit_16(1760);
+emit_16(1694);
+emit_16(1760);
+emit_16(1693);
+emit_16(1760);
+emit_16(1694);
+emit_16(1761);
+emit_16(1695);
+emit_16(1761);
+emit_16(1694);
+emit_16(1761);
+emit_16(1695);
+emit_16(1762);
+emit_16(1696);
+emit_16(1762);
+emit_16(1695);
+emit_16(1762);
+emit_16(1696);
+emit_16(1763);
+emit_16(1697);
+emit_16(1763);
+emit_16(1696);
+emit_16(1763);
+emit_16(1697);
+emit_16(1764);
+emit_16(1698);
+emit_16(1764);
+emit_16(1697);
+emit_16(1764);
+emit_16(1698);
+emit_16(1765);
+emit_16(1699);
+emit_16(1765);
+emit_16(1698);
+emit_16(1765);
+emit_16(1699);
+emit_16(1766);
+emit_16(1700);
+emit_16(1766);
+emit_16(1699);
+emit_16(1766);
+emit_16(1700);
+emit_16(1767);
+emit_16(1701);
+emit_16(1767);
+emit_16(1700);
+emit_16(1767);
+emit_16(1701);
+emit_16(1768);
+emit_16(1702);
+emit_16(1768);
+emit_16(1701);
+emit_16(1768);
+emit_16(1702);
+emit_16(1769);
+emit_16(1703);
+emit_16(1769);
+emit_16(1702);
+emit_16(1769);
+emit_16(1703);
+emit_16(1770);
+emit_16(1704);
+emit_16(1770);
+emit_16(1703);
+emit_16(1770);
+emit_16(1704);
+emit_16(1771);
+emit_16(1705);
+emit_16(1771);
+emit_16(1704);
+emit_16(1771);
+emit_16(1705);
+emit_16(1772);
+emit_16(1706);
+emit_16(1772);
+emit_16(1705);
+emit_16(1772);
+emit_16(1706);
+emit_16(1773);
+emit_16(1707);
+emit_16(1773);
+emit_16(1706);
+emit_16(1773);
+emit_16(1707);
+emit_16(1774);
+emit_16(1708);
+emit_16(1774);
+emit_16(1707);
+emit_16(1774);
+emit_16(1708);
+emit_16(1775);
+emit_16(1709);
+emit_16(1775);
+emit_16(1708);
+emit_16(1775);
+emit_16(1709);
+emit_16(1776);
+emit_16(1710);
+emit_16(1776);
+emit_16(1709);
+emit_16(1776);
+emit_16(1710);
+emit_16(1777);
+emit_16(1711);
+emit_16(1777);
+emit_16(1710);
+emit_16(1777);
+emit_16(1711);
+emit_16(1778);
+emit_16(1712);
+emit_16(1778);
+emit_16(1711);
+emit_16(1778);
+emit_16(1712);
+emit_16(1779);
+emit_16(1713);
+emit_16(1779);
+emit_16(1712);
+emit_16(1779);
+emit_16(1713);
+emit_16(1780);
+emit_16(1714);
+emit_16(1780);
+emit_16(1713);
+emit_16(1780);
+emit_16(1714);
+emit_16(1781);
+emit_16(1715);
+emit_16(1781);
+emit_16(1714);
+emit_16(1782);
+emit_16(1716);
+emit_16(1783);
+emit_16(1717);
+emit_16(1783);
+emit_16(1716);
+emit_16(1783);
+emit_16(1717);
+emit_16(1784);
+emit_16(1718);
+emit_16(1784);
+emit_16(1717);
+emit_16(1784);
+emit_16(1718);
+emit_16(1785);
+emit_16(1719);
+emit_16(1785);
+emit_16(1718);
+emit_16(1785);
+emit_16(1719);
+emit_16(1786);
+emit_16(1720);
+emit_16(1786);
+emit_16(1719);
+emit_16(1786);
+emit_16(1720);
+emit_16(1787);
+emit_16(1721);
+emit_16(1787);
+emit_16(1720);
+emit_16(1787);
+emit_16(1721);
+emit_16(1788);
+emit_16(1722);
+emit_16(1788);
+emit_16(1721);
+emit_16(1788);
+emit_16(1722);
+emit_16(1789);
+emit_16(1723);
+emit_16(1789);
+emit_16(1722);
+emit_16(1789);
+emit_16(1723);
+emit_16(1790);
+emit_16(1724);
+emit_16(1790);
+emit_16(1723);
+emit_16(1790);
+emit_16(1724);
+emit_16(1791);
+emit_16(1725);
+emit_16(1791);
+emit_16(1724);
+emit_16(1791);
+emit_16(1725);
+emit_16(1792);
+emit_16(1726);
+emit_16(1792);
+emit_16(1725);
+emit_16(1792);
+emit_16(1726);
+emit_16(1793);
+emit_16(1727);
+emit_16(1793);
+emit_16(1726);
+emit_16(1793);
+emit_16(1727);
+emit_16(1794);
+emit_16(1728);
+emit_16(1794);
+emit_16(1727);
+emit_16(1794);
+emit_16(1728);
+emit_16(1795);
+emit_16(1729);
+emit_16(1795);
+emit_16(1728);
+emit_16(1795);
+emit_16(1729);
+emit_16(1796);
+emit_16(1730);
+emit_16(1796);
+emit_16(1729);
+emit_16(1796);
+emit_16(1730);
+emit_16(1797);
+emit_16(1731);
+emit_16(1797);
+emit_16(1730);
+emit_16(1797);
+emit_16(1731);
+emit_16(1798);
+emit_16(1732);
+emit_16(1798);
+emit_16(1731);
+emit_16(1798);
+emit_16(1732);
+emit_16(1799);
+emit_16(1733);
+emit_16(1799);
+emit_16(1732);
+emit_16(1799);
+emit_16(1733);
+emit_16(1800);
+emit_16(1734);
+emit_16(1800);
+emit_16(1733);
+emit_16(1800);
+emit_16(1734);
+emit_16(1801);
+emit_16(1735);
+emit_16(1801);
+emit_16(1734);
+emit_16(1801);
+emit_16(1735);
+emit_16(1802);
+emit_16(1736);
+emit_16(1802);
+emit_16(1735);
+emit_16(1802);
+emit_16(1736);
+emit_16(1803);
+emit_16(1737);
+emit_16(1803);
+emit_16(1736);
+emit_16(1803);
+emit_16(1737);
+emit_16(1804);
+emit_16(1738);
+emit_16(1804);
+emit_16(1737);
+emit_16(1804);
+emit_16(1738);
+emit_16(1805);
+emit_16(1739);
+emit_16(1805);
+emit_16(1738);
+emit_16(1805);
+emit_16(1739);
+emit_16(1806);
+emit_16(1740);
+emit_16(1806);
+emit_16(1739);
+emit_16(1806);
+emit_16(1740);
+emit_16(1807);
+emit_16(1741);
+emit_16(1807);
+emit_16(1740);
+emit_16(1807);
+emit_16(1741);
+emit_16(1808);
+emit_16(1742);
+emit_16(1808);
+emit_16(1741);
+emit_16(1808);
+emit_16(1742);
+emit_16(1809);
+emit_16(1743);
+emit_16(1809);
+emit_16(1742);
+emit_16(1809);
+emit_16(1743);
+emit_16(1810);
+emit_16(1744);
+emit_16(1810);
+emit_16(1743);
+emit_16(1810);
+emit_16(1744);
+emit_16(1811);
+emit_16(1745);
+emit_16(1811);
+emit_16(1744);
+emit_16(1811);
+emit_16(1745);
+emit_16(1812);
+emit_16(1746);
+emit_16(1812);
+emit_16(1745);
+emit_16(1812);
+emit_16(1746);
+emit_16(1813);
+emit_16(1747);
+emit_16(1813);
+emit_16(1746);
+emit_16(1813);
+emit_16(1747);
+emit_16(1814);
+emit_16(1748);
+emit_16(1814);
+emit_16(1747);
+emit_16(1814);
+emit_16(1748);
+emit_16(1815);
+emit_16(1749);
+emit_16(1815);
+emit_16(1748);
+emit_16(1815);
+emit_16(1749);
+emit_16(1816);
+emit_16(1750);
+emit_16(1816);
+emit_16(1749);
+emit_16(1816);
+emit_16(1750);
+emit_16(1817);
+emit_16(1751);
+emit_16(1817);
+emit_16(1750);
+emit_16(1817);
+emit_16(1751);
+emit_16(1818);
+emit_16(1752);
+emit_16(1818);
+emit_16(1751);
+emit_16(1818);
+emit_16(1752);
+emit_16(1819);
+emit_16(1753);
+emit_16(1819);
+emit_16(1752);
+emit_16(1819);
+emit_16(1753);
+emit_16(1820);
+emit_16(1754);
+emit_16(1820);
+emit_16(1753);
+emit_16(1820);
+emit_16(1754);
+emit_16(1821);
+emit_16(1755);
+emit_16(1821);
+emit_16(1754);
+emit_16(1821);
+emit_16(1755);
+emit_16(1822);
+emit_16(1756);
+emit_16(1822);
+emit_16(1755);
+emit_16(1822);
+emit_16(1756);
+emit_16(1823);
+emit_16(1757);
+emit_16(1823);
+emit_16(1756);
+emit_16(1823);
+emit_16(1757);
+emit_16(1824);
+emit_16(1758);
+emit_16(1824);
+emit_16(1757);
+emit_16(1824);
+emit_16(1758);
+emit_16(1825);
+emit_16(1759);
+emit_16(1825);
+emit_16(1758);
+emit_16(1825);
+emit_16(1759);
+emit_16(1826);
+emit_16(1760);
+emit_16(1826);
+emit_16(1759);
+emit_16(1826);
+emit_16(1760);
+emit_16(1827);
+emit_16(1761);
+emit_16(1827);
+emit_16(1760);
+emit_16(1827);
+emit_16(1761);
+emit_16(1828);
+emit_16(1762);
+emit_16(1828);
+emit_16(1761);
+emit_16(1828);
+emit_16(1762);
+emit_16(1829);
+emit_16(1763);
+emit_16(1829);
+emit_16(1762);
+emit_16(1829);
+emit_16(1763);
+emit_16(1830);
+emit_16(1764);
+emit_16(1830);
+emit_16(1763);
+emit_16(1830);
+emit_16(1764);
+emit_16(1831);
+emit_16(1765);
+emit_16(1831);
+emit_16(1764);
+emit_16(1831);
+emit_16(1765);
+emit_16(1832);
+emit_16(1766);
+emit_16(1832);
+emit_16(1765);
+emit_16(1832);
+emit_16(1766);
+emit_16(1833);
+emit_16(1767);
+emit_16(1833);
+emit_16(1766);
+emit_16(1833);
+emit_16(1767);
+emit_16(1834);
+emit_16(1768);
+emit_16(1834);
+emit_16(1767);
+emit_16(1834);
+emit_16(1768);
+emit_16(1835);
+emit_16(1769);
+emit_16(1835);
+emit_16(1768);
+emit_16(1835);
+emit_16(1769);
+emit_16(1836);
+emit_16(1770);
+emit_16(1836);
+emit_16(1769);
+emit_16(1836);
+emit_16(1770);
+emit_16(1837);
+emit_16(1771);
+emit_16(1837);
+emit_16(1770);
+emit_16(1837);
+emit_16(1771);
+emit_16(1838);
+emit_16(1772);
+emit_16(1838);
+emit_16(1771);
+emit_16(1838);
+emit_16(1772);
+emit_16(1839);
+emit_16(1773);
+emit_16(1839);
+emit_16(1772);
+emit_16(1839);
+emit_16(1773);
+emit_16(1840);
+emit_16(1774);
+emit_16(1840);
+emit_16(1773);
+emit_16(1840);
+emit_16(1774);
+emit_16(1841);
+emit_16(1775);
+emit_16(1841);
+emit_16(1774);
+emit_16(1841);
+emit_16(1775);
+emit_16(1842);
+emit_16(1776);
+emit_16(1842);
+emit_16(1775);
+emit_16(1842);
+emit_16(1776);
+emit_16(1843);
+emit_16(1777);
+emit_16(1843);
+emit_16(1776);
+emit_16(1843);
+emit_16(1777);
+emit_16(1844);
+emit_16(1778);
+emit_16(1844);
+emit_16(1777);
+emit_16(1844);
+emit_16(1778);
+emit_16(1845);
+emit_16(1779);
+emit_16(1845);
+emit_16(1778);
+emit_16(1845);
+emit_16(1779);
+emit_16(1846);
+emit_16(1780);
+emit_16(1846);
+emit_16(1779);
+emit_16(1846);
+emit_16(1780);
+emit_16(1847);
+emit_16(1781);
+emit_16(1847);
+emit_16(1780);
+emit_16(1848);
+emit_16(1782);
+emit_16(1849);
+emit_16(1783);
+emit_16(1849);
+emit_16(1782);
+emit_16(1849);
+emit_16(1783);
+emit_16(1850);
+emit_16(1784);
+emit_16(1850);
+emit_16(1783);
+emit_16(1850);
+emit_16(1784);
+emit_16(1851);
+emit_16(1785);
+emit_16(1851);
+emit_16(1784);
+emit_16(1851);
+emit_16(1785);
+emit_16(1852);
+emit_16(1786);
+emit_16(1852);
+emit_16(1785);
+emit_16(1852);
+emit_16(1786);
+emit_16(1853);
+emit_16(1787);
+emit_16(1853);
+emit_16(1786);
+emit_16(1853);
+emit_16(1787);
+emit_16(1854);
+emit_16(1788);
+emit_16(1854);
+emit_16(1787);
+emit_16(1854);
+emit_16(1788);
+emit_16(1855);
+emit_16(1789);
+emit_16(1855);
+emit_16(1788);
+emit_16(1855);
+emit_16(1789);
+emit_16(1856);
+emit_16(1790);
+emit_16(1856);
+emit_16(1789);
+emit_16(1856);
+emit_16(1790);
+emit_16(1857);
+emit_16(1791);
+emit_16(1857);
+emit_16(1790);
+emit_16(1857);
+emit_16(1791);
+emit_16(1858);
+emit_16(1792);
+emit_16(1858);
+emit_16(1791);
+emit_16(1858);
+emit_16(1792);
+emit_16(1859);
+emit_16(1793);
+emit_16(1859);
+emit_16(1792);
+emit_16(1859);
+emit_16(1793);
+emit_16(1860);
+emit_16(1794);
+emit_16(1860);
+emit_16(1793);
+emit_16(1860);
+emit_16(1794);
+emit_16(1861);
+emit_16(1795);
+emit_16(1861);
+emit_16(1794);
+emit_16(1861);
+emit_16(1795);
+emit_16(1862);
+emit_16(1796);
+emit_16(1862);
+emit_16(1795);
+emit_16(1862);
+emit_16(1796);
+emit_16(1863);
+emit_16(1797);
+emit_16(1863);
+emit_16(1796);
+emit_16(1863);
+emit_16(1797);
+emit_16(1864);
+emit_16(1798);
+emit_16(1864);
+emit_16(1797);
+emit_16(1864);
+emit_16(1798);
+emit_16(1865);
+emit_16(1799);
+emit_16(1865);
+emit_16(1798);
+emit_16(1865);
+emit_16(1799);
+emit_16(1866);
+emit_16(1800);
+emit_16(1866);
+emit_16(1799);
+emit_16(1866);
+emit_16(1800);
+emit_16(1867);
+emit_16(1801);
+emit_16(1867);
+emit_16(1800);
+emit_16(1867);
+emit_16(1801);
+emit_16(1868);
+emit_16(1802);
+emit_16(1868);
+emit_16(1801);
+emit_16(1868);
+emit_16(1802);
+emit_16(1869);
+emit_16(1803);
+emit_16(1869);
+emit_16(1802);
+emit_16(1869);
+emit_16(1803);
+emit_16(1870);
+emit_16(1804);
+emit_16(1870);
+emit_16(1803);
+emit_16(1870);
+emit_16(1804);
+emit_16(1871);
+emit_16(1805);
+emit_16(1871);
+emit_16(1804);
+emit_16(1871);
+emit_16(1805);
+emit_16(1872);
+emit_16(1806);
+emit_16(1872);
+emit_16(1805);
+emit_16(1872);
+emit_16(1806);
+emit_16(1873);
+emit_16(1807);
+emit_16(1873);
+emit_16(1806);
+emit_16(1873);
+emit_16(1807);
+emit_16(1874);
+emit_16(1808);
+emit_16(1874);
+emit_16(1807);
+emit_16(1874);
+emit_16(1808);
+emit_16(1875);
+emit_16(1809);
+emit_16(1875);
+emit_16(1808);
+emit_16(1875);
+emit_16(1809);
+emit_16(1876);
+emit_16(1810);
+emit_16(1876);
+emit_16(1809);
+emit_16(1876);
+emit_16(1810);
+emit_16(1877);
+emit_16(1811);
+emit_16(1877);
+emit_16(1810);
+emit_16(1877);
+emit_16(1811);
+emit_16(1878);
+emit_16(1812);
+emit_16(1878);
+emit_16(1811);
+emit_16(1878);
+emit_16(1812);
+emit_16(1879);
+emit_16(1813);
+emit_16(1879);
+emit_16(1812);
+emit_16(1879);
+emit_16(1813);
+emit_16(1880);
+emit_16(1814);
+emit_16(1880);
+emit_16(1813);
+emit_16(1880);
+emit_16(1814);
+emit_16(1881);
+emit_16(1815);
+emit_16(1881);
+emit_16(1814);
+emit_16(1881);
+emit_16(1815);
+emit_16(1882);
+emit_16(1816);
+emit_16(1882);
+emit_16(1815);
+emit_16(1882);
+emit_16(1816);
+emit_16(1883);
+emit_16(1817);
+emit_16(1883);
+emit_16(1816);
+emit_16(1883);
+emit_16(1817);
+emit_16(1884);
+emit_16(1818);
+emit_16(1884);
+emit_16(1817);
+emit_16(1884);
+emit_16(1818);
+emit_16(1885);
+emit_16(1819);
+emit_16(1885);
+emit_16(1818);
+emit_16(1885);
+emit_16(1819);
+emit_16(1886);
+emit_16(1820);
+emit_16(1886);
+emit_16(1819);
+emit_16(1886);
+emit_16(1820);
+emit_16(1887);
+emit_16(1821);
+emit_16(1887);
+emit_16(1820);
+emit_16(1887);
+emit_16(1821);
+emit_16(1888);
+emit_16(1822);
+emit_16(1888);
+emit_16(1821);
+emit_16(1888);
+emit_16(1822);
+emit_16(1889);
+emit_16(1823);
+emit_16(1889);
+emit_16(1822);
+emit_16(1889);
+emit_16(1823);
+emit_16(1890);
+emit_16(1824);
+emit_16(1890);
+emit_16(1823);
+emit_16(1890);
+emit_16(1824);
+emit_16(1891);
+emit_16(1825);
+emit_16(1891);
+emit_16(1824);
+emit_16(1891);
+emit_16(1825);
+emit_16(1892);
+emit_16(1826);
+emit_16(1892);
+emit_16(1825);
+emit_16(1892);
+emit_16(1826);
+emit_16(1893);
+emit_16(1827);
+emit_16(1893);
+emit_16(1826);
+emit_16(1893);
+emit_16(1827);
+emit_16(1894);
+emit_16(1828);
+emit_16(1894);
+emit_16(1827);
+emit_16(1894);
+emit_16(1828);
+emit_16(1895);
+emit_16(1829);
+emit_16(1895);
+emit_16(1828);
+emit_16(1895);
+emit_16(1829);
+emit_16(1896);
+emit_16(1830);
+emit_16(1896);
+emit_16(1829);
+emit_16(1896);
+emit_16(1830);
+emit_16(1897);
+emit_16(1831);
+emit_16(1897);
+emit_16(1830);
+emit_16(1897);
+emit_16(1831);
+emit_16(1898);
+emit_16(1832);
+emit_16(1898);
+emit_16(1831);
+emit_16(1898);
+emit_16(1832);
+emit_16(1899);
+emit_16(1833);
+emit_16(1899);
+emit_16(1832);
+emit_16(1899);
+emit_16(1833);
+emit_16(1900);
+emit_16(1834);
+emit_16(1900);
+emit_16(1833);
+emit_16(1900);
+emit_16(1834);
+emit_16(1901);
+emit_16(1835);
+emit_16(1901);
+emit_16(1834);
+emit_16(1901);
+emit_16(1835);
+emit_16(1902);
+emit_16(1836);
+emit_16(1902);
+emit_16(1835);
+emit_16(1902);
+emit_16(1836);
+emit_16(1903);
+emit_16(1837);
+emit_16(1903);
+emit_16(1836);
+emit_16(1903);
+emit_16(1837);
+emit_16(1904);
+emit_16(1838);
+emit_16(1904);
+emit_16(1837);
+emit_16(1904);
+emit_16(1838);
+emit_16(1905);
+emit_16(1839);
+emit_16(1905);
+emit_16(1838);
+emit_16(1905);
+emit_16(1839);
+emit_16(1906);
+emit_16(1840);
+emit_16(1906);
+emit_16(1839);
+emit_16(1906);
+emit_16(1840);
+emit_16(1907);
+emit_16(1841);
+emit_16(1907);
+emit_16(1840);
+emit_16(1907);
+emit_16(1841);
+emit_16(1908);
+emit_16(1842);
+emit_16(1908);
+emit_16(1841);
+emit_16(1908);
+emit_16(1842);
+emit_16(1909);
+emit_16(1843);
+emit_16(1909);
+emit_16(1842);
+emit_16(1909);
+emit_16(1843);
+emit_16(1910);
+emit_16(1844);
+emit_16(1910);
+emit_16(1843);
+emit_16(1910);
+emit_16(1844);
+emit_16(1911);
+emit_16(1845);
+emit_16(1911);
+emit_16(1844);
+emit_16(1911);
+emit_16(1845);
+emit_16(1912);
+emit_16(1846);
+emit_16(1912);
+emit_16(1845);
+emit_16(1912);
+emit_16(1846);
+emit_16(1913);
+emit_16(1847);
+emit_16(1913);
+emit_16(1846);
+emit_16(1914);
+emit_16(1848);
+emit_16(1915);
+emit_16(1849);
+emit_16(1915);
+emit_16(1848);
+emit_16(1915);
+emit_16(1849);
+emit_16(1916);
+emit_16(1850);
+emit_16(1916);
+emit_16(1849);
+emit_16(1916);
+emit_16(1850);
+emit_16(1917);
+emit_16(1851);
+emit_16(1917);
+emit_16(1850);
+emit_16(1917);
+emit_16(1851);
+emit_16(1918);
+emit_16(1852);
+emit_16(1918);
+emit_16(1851);
+emit_16(1918);
+emit_16(1852);
+emit_16(1919);
+emit_16(1853);
+emit_16(1919);
+emit_16(1852);
+emit_16(1919);
+emit_16(1853);
+emit_16(1920);
+emit_16(1854);
+emit_16(1920);
+emit_16(1853);
+emit_16(1920);
+emit_16(1854);
+emit_16(1921);
+emit_16(1855);
+emit_16(1921);
+emit_16(1854);
+emit_16(1921);
+emit_16(1855);
+emit_16(1922);
+emit_16(1856);
+emit_16(1922);
+emit_16(1855);
+emit_16(1922);
+emit_16(1856);
+emit_16(1923);
+emit_16(1857);
+emit_16(1923);
+emit_16(1856);
+emit_16(1923);
+emit_16(1857);
+emit_16(1924);
+emit_16(1858);
+emit_16(1924);
+emit_16(1857);
+emit_16(1924);
+emit_16(1858);
+emit_16(1925);
+emit_16(1859);
+emit_16(1925);
+emit_16(1858);
+emit_16(1925);
+emit_16(1859);
+emit_16(1926);
+emit_16(1860);
+emit_16(1926);
+emit_16(1859);
+emit_16(1926);
+emit_16(1860);
+emit_16(1927);
+emit_16(1861);
+emit_16(1927);
+emit_16(1860);
+emit_16(1927);
+emit_16(1861);
+emit_16(1928);
+emit_16(1862);
+emit_16(1928);
+emit_16(1861);
+emit_16(1928);
+emit_16(1862);
+emit_16(1929);
+emit_16(1863);
+emit_16(1929);
+emit_16(1862);
+emit_16(1929);
+emit_16(1863);
+emit_16(1930);
+emit_16(1864);
+emit_16(1930);
+emit_16(1863);
+emit_16(1930);
+emit_16(1864);
+emit_16(1931);
+emit_16(1865);
+emit_16(1931);
+emit_16(1864);
+emit_16(1931);
+emit_16(1865);
+emit_16(1932);
+emit_16(1866);
+emit_16(1932);
+emit_16(1865);
+emit_16(1932);
+emit_16(1866);
+emit_16(1933);
+emit_16(1867);
+emit_16(1933);
+emit_16(1866);
+emit_16(1933);
+emit_16(1867);
+emit_16(1934);
+emit_16(1868);
+emit_16(1934);
+emit_16(1867);
+emit_16(1934);
+emit_16(1868);
+emit_16(1935);
+emit_16(1869);
+emit_16(1935);
+emit_16(1868);
+emit_16(1935);
+emit_16(1869);
+emit_16(1936);
+emit_16(1870);
+emit_16(1936);
+emit_16(1869);
+emit_16(1936);
+emit_16(1870);
+emit_16(1937);
+emit_16(1871);
+emit_16(1937);
+emit_16(1870);
+emit_16(1937);
+emit_16(1871);
+emit_16(1938);
+emit_16(1872);
+emit_16(1938);
+emit_16(1871);
+emit_16(1938);
+emit_16(1872);
+emit_16(1939);
+emit_16(1873);
+emit_16(1939);
+emit_16(1872);
+emit_16(1939);
+emit_16(1873);
+emit_16(1940);
+emit_16(1874);
+emit_16(1940);
+emit_16(1873);
+emit_16(1940);
+emit_16(1874);
+emit_16(1941);
+emit_16(1875);
+emit_16(1941);
+emit_16(1874);
+emit_16(1941);
+emit_16(1875);
+emit_16(1942);
+emit_16(1876);
+emit_16(1942);
+emit_16(1875);
+emit_16(1942);
+emit_16(1876);
+emit_16(1943);
+emit_16(1877);
+emit_16(1943);
+emit_16(1876);
+emit_16(1943);
+emit_16(1877);
+emit_16(1944);
+emit_16(1878);
+emit_16(1944);
+emit_16(1877);
+emit_16(1944);
+emit_16(1878);
+emit_16(1945);
+emit_16(1879);
+emit_16(1945);
+emit_16(1878);
+emit_16(1945);
+emit_16(1879);
+emit_16(1946);
+emit_16(1880);
+emit_16(1946);
+emit_16(1879);
+emit_16(1946);
+emit_16(1880);
+emit_16(1947);
+emit_16(1881);
+emit_16(1947);
+emit_16(1880);
+emit_16(1947);
+emit_16(1881);
+emit_16(1948);
+emit_16(1882);
+emit_16(1948);
+emit_16(1881);
+emit_16(1948);
+emit_16(1882);
+emit_16(1949);
+emit_16(1883);
+emit_16(1949);
+emit_16(1882);
+emit_16(1949);
+emit_16(1883);
+emit_16(1950);
+emit_16(1884);
+emit_16(1950);
+emit_16(1883);
+emit_16(1950);
+emit_16(1884);
+emit_16(1951);
+emit_16(1885);
+emit_16(1951);
+emit_16(1884);
+emit_16(1951);
+emit_16(1885);
+emit_16(1952);
+emit_16(1886);
+emit_16(1952);
+emit_16(1885);
+emit_16(1952);
+emit_16(1886);
+emit_16(1953);
+emit_16(1887);
+emit_16(1953);
+emit_16(1886);
+emit_16(1953);
+emit_16(1887);
+emit_16(1954);
+emit_16(1888);
+emit_16(1954);
+emit_16(1887);
+emit_16(1954);
+emit_16(1888);
+emit_16(1955);
+emit_16(1889);
+emit_16(1955);
+emit_16(1888);
+emit_16(1955);
+emit_16(1889);
+emit_16(1956);
+emit_16(1890);
+emit_16(1956);
+emit_16(1889);
+emit_16(1956);
+emit_16(1890);
+emit_16(1957);
+emit_16(1891);
+emit_16(1957);
+emit_16(1890);
+emit_16(1957);
+emit_16(1891);
+emit_16(1958);
+emit_16(1892);
+emit_16(1958);
+emit_16(1891);
+emit_16(1958);
+emit_16(1892);
+emit_16(1959);
+emit_16(1893);
+emit_16(1959);
+emit_16(1892);
+emit_16(1959);
+emit_16(1893);
+emit_16(1960);
+emit_16(1894);
+emit_16(1960);
+emit_16(1893);
+emit_16(1960);
+emit_16(1894);
+emit_16(1961);
+emit_16(1895);
+emit_16(1961);
+emit_16(1894);
+emit_16(1961);
+emit_16(1895);
+emit_16(1962);
+emit_16(1896);
+emit_16(1962);
+emit_16(1895);
+emit_16(1962);
+emit_16(1896);
+emit_16(1963);
+emit_16(1897);
+emit_16(1963);
+emit_16(1896);
+emit_16(1963);
+emit_16(1897);
+emit_16(1964);
+emit_16(1898);
+emit_16(1964);
+emit_16(1897);
+emit_16(1964);
+emit_16(1898);
+emit_16(1965);
+emit_16(1899);
+emit_16(1965);
+emit_16(1898);
+emit_16(1965);
+emit_16(1899);
+emit_16(1966);
+emit_16(1900);
+emit_16(1966);
+emit_16(1899);
+emit_16(1966);
+emit_16(1900);
+emit_16(1967);
+emit_16(1901);
+emit_16(1967);
+emit_16(1900);
+emit_16(1967);
+emit_16(1901);
+emit_16(1968);
+emit_16(1902);
+emit_16(1968);
+emit_16(1901);
+emit_16(1968);
+emit_16(1902);
+emit_16(1969);
+emit_16(1903);
+emit_16(1969);
+emit_16(1902);
+emit_16(1969);
+emit_16(1903);
+emit_16(1970);
+emit_16(1904);
+emit_16(1970);
+emit_16(1903);
+emit_16(1970);
+emit_16(1904);
+emit_16(1971);
+emit_16(1905);
+emit_16(1971);
+emit_16(1904);
+emit_16(1971);
+emit_16(1905);
+emit_16(1972);
+emit_16(1906);
+emit_16(1972);
+emit_16(1905);
+emit_16(1972);
+emit_16(1906);
+emit_16(1973);
+emit_16(1907);
+emit_16(1973);
+emit_16(1906);
+emit_16(1973);
+emit_16(1907);
+emit_16(1974);
+emit_16(1908);
+emit_16(1974);
+emit_16(1907);
+emit_16(1974);
+emit_16(1908);
+emit_16(1975);
+emit_16(1909);
+emit_16(1975);
+emit_16(1908);
+emit_16(1975);
+emit_16(1909);
+emit_16(1976);
+emit_16(1910);
+emit_16(1976);
+emit_16(1909);
+emit_16(1976);
+emit_16(1910);
+emit_16(1977);
+emit_16(1911);
+emit_16(1977);
+emit_16(1910);
+emit_16(1977);
+emit_16(1911);
+emit_16(1978);
+emit_16(1912);
+emit_16(1978);
+emit_16(1911);
+emit_16(1978);
+emit_16(1912);
+emit_16(1979);
+emit_16(1913);
+emit_16(1979);
+emit_16(1912);
+emit_16(1980);
+emit_16(1914);
+emit_16(1981);
+emit_16(1915);
+emit_16(1981);
+emit_16(1914);
+emit_16(1981);
+emit_16(1915);
+emit_16(1982);
+emit_16(1916);
+emit_16(1982);
+emit_16(1915);
+emit_16(1982);
+emit_16(1916);
+emit_16(1983);
+emit_16(1917);
+emit_16(1983);
+emit_16(1916);
+emit_16(1983);
+emit_16(1917);
+emit_16(1984);
+emit_16(1918);
+emit_16(1984);
+emit_16(1917);
+emit_16(1984);
+emit_16(1918);
+emit_16(1985);
+emit_16(1919);
+emit_16(1985);
+emit_16(1918);
+emit_16(1985);
+emit_16(1919);
+emit_16(1986);
+emit_16(1920);
+emit_16(1986);
+emit_16(1919);
+emit_16(1986);
+emit_16(1920);
+emit_16(1987);
+emit_16(1921);
+emit_16(1987);
+emit_16(1920);
+emit_16(1987);
+emit_16(1921);
+emit_16(1988);
+emit_16(1922);
+emit_16(1988);
+emit_16(1921);
+emit_16(1988);
+emit_16(1922);
+emit_16(1989);
+emit_16(1923);
+emit_16(1989);
+emit_16(1922);
+emit_16(1989);
+emit_16(1923);
+emit_16(1990);
+emit_16(1924);
+emit_16(1990);
+emit_16(1923);
+emit_16(1990);
+emit_16(1924);
+emit_16(1991);
+emit_16(1925);
+emit_16(1991);
+emit_16(1924);
+emit_16(1991);
+emit_16(1925);
+emit_16(1992);
+emit_16(1926);
+emit_16(1992);
+emit_16(1925);
+emit_16(1992);
+emit_16(1926);
+emit_16(1993);
+emit_16(1927);
+emit_16(1993);
+emit_16(1926);
+emit_16(1993);
+emit_16(1927);
+emit_16(1994);
+emit_16(1928);
+emit_16(1994);
+emit_16(1927);
+emit_16(1994);
+emit_16(1928);
+emit_16(1995);
+emit_16(1929);
+emit_16(1995);
+emit_16(1928);
+emit_16(1995);
+emit_16(1929);
+emit_16(1996);
+emit_16(1930);
+emit_16(1996);
+emit_16(1929);
+emit_16(1996);
+emit_16(1930);
+emit_16(1997);
+emit_16(1931);
+emit_16(1997);
+emit_16(1930);
+emit_16(1997);
+emit_16(1931);
+emit_16(1998);
+emit_16(1932);
+emit_16(1998);
+emit_16(1931);
+emit_16(1998);
+emit_16(1932);
+emit_16(1999);
+emit_16(1933);
+emit_16(1999);
+emit_16(1932);
+emit_16(1999);
+emit_16(1933);
+emit_16(2000);
+emit_16(1934);
+emit_16(2000);
+emit_16(1933);
+emit_16(2000);
+emit_16(1934);
+emit_16(2001);
+emit_16(1935);
+emit_16(2001);
+emit_16(1934);
+emit_16(2001);
+emit_16(1935);
+emit_16(2002);
+emit_16(1936);
+emit_16(2002);
+emit_16(1935);
+emit_16(2002);
+emit_16(1936);
+emit_16(2003);
+emit_16(1937);
+emit_16(2003);
+emit_16(1936);
+emit_16(2003);
+emit_16(1937);
+emit_16(2004);
+emit_16(1938);
+emit_16(2004);
+emit_16(1937);
+emit_16(2004);
+emit_16(1938);
+emit_16(2005);
+emit_16(1939);
+emit_16(2005);
+emit_16(1938);
+emit_16(2005);
+emit_16(1939);
+emit_16(2006);
+emit_16(1940);
+emit_16(2006);
+emit_16(1939);
+emit_16(2006);
+emit_16(1940);
+emit_16(2007);
+emit_16(1941);
+emit_16(2007);
+emit_16(1940);
+emit_16(2007);
+emit_16(1941);
+emit_16(2008);
+emit_16(1942);
+emit_16(2008);
+emit_16(1941);
+emit_16(2008);
+emit_16(1942);
+emit_16(2009);
+emit_16(1943);
+emit_16(2009);
+emit_16(1942);
+emit_16(2009);
+emit_16(1943);
+emit_16(2010);
+emit_16(1944);
+emit_16(2010);
+emit_16(1943);
+emit_16(2010);
+emit_16(1944);
+emit_16(2011);
+emit_16(1945);
+emit_16(2011);
+emit_16(1944);
+emit_16(2011);
+emit_16(1945);
+emit_16(2012);
+emit_16(1946);
+emit_16(2012);
+emit_16(1945);
+emit_16(2012);
+emit_16(1946);
+emit_16(2013);
+emit_16(1947);
+emit_16(2013);
+emit_16(1946);
+emit_16(2013);
+emit_16(1947);
+emit_16(2014);
+emit_16(1948);
+emit_16(2014);
+emit_16(1947);
+emit_16(2014);
+emit_16(1948);
+emit_16(2015);
+emit_16(1949);
+emit_16(2015);
+emit_16(1948);
+emit_16(2015);
+emit_16(1949);
+emit_16(2016);
+emit_16(1950);
+emit_16(2016);
+emit_16(1949);
+emit_16(2016);
+emit_16(1950);
+emit_16(2017);
+emit_16(1951);
+emit_16(2017);
+emit_16(1950);
+emit_16(2017);
+emit_16(1951);
+emit_16(2018);
+emit_16(1952);
+emit_16(2018);
+emit_16(1951);
+emit_16(2018);
+emit_16(1952);
+emit_16(2019);
+emit_16(1953);
+emit_16(2019);
+emit_16(1952);
+emit_16(2019);
+emit_16(1953);
+emit_16(2020);
+emit_16(1954);
+emit_16(2020);
+emit_16(1953);
+emit_16(2020);
+emit_16(1954);
+emit_16(2021);
+emit_16(1955);
+emit_16(2021);
+emit_16(1954);
+emit_16(2021);
+emit_16(1955);
+emit_16(2022);
+emit_16(1956);
+emit_16(2022);
+emit_16(1955);
+emit_16(2022);
+emit_16(1956);
+emit_16(2023);
+emit_16(1957);
+emit_16(2023);
+emit_16(1956);
+emit_16(2023);
+emit_16(1957);
+emit_16(2024);
+emit_16(1958);
+emit_16(2024);
+emit_16(1957);
+emit_16(2024);
+emit_16(1958);
+emit_16(2025);
+emit_16(1959);
+emit_16(2025);
+emit_16(1958);
+emit_16(2025);
+emit_16(1959);
+emit_16(2026);
+emit_16(1960);
+emit_16(2026);
+emit_16(1959);
+emit_16(2026);
+emit_16(1960);
+emit_16(2027);
+emit_16(1961);
+emit_16(2027);
+emit_16(1960);
+emit_16(2027);
+emit_16(1961);
+emit_16(2028);
+emit_16(1962);
+emit_16(2028);
+emit_16(1961);
+emit_16(2028);
+emit_16(1962);
+emit_16(2029);
+emit_16(1963);
+emit_16(2029);
+emit_16(1962);
+emit_16(2029);
+emit_16(1963);
+emit_16(2030);
+emit_16(1964);
+emit_16(2030);
+emit_16(1963);
+emit_16(2030);
+emit_16(1964);
+emit_16(2031);
+emit_16(1965);
+emit_16(2031);
+emit_16(1964);
+emit_16(2031);
+emit_16(1965);
+emit_16(2032);
+emit_16(1966);
+emit_16(2032);
+emit_16(1965);
+emit_16(2032);
+emit_16(1966);
+emit_16(2033);
+emit_16(1967);
+emit_16(2033);
+emit_16(1966);
+emit_16(2033);
+emit_16(1967);
+emit_16(2034);
+emit_16(1968);
+emit_16(2034);
+emit_16(1967);
+emit_16(2034);
+emit_16(1968);
+emit_16(2035);
+emit_16(1969);
+emit_16(2035);
+emit_16(1968);
+emit_16(2035);
+emit_16(1969);
+emit_16(2036);
+emit_16(1970);
+emit_16(2036);
+emit_16(1969);
+emit_16(2036);
+emit_16(1970);
+emit_16(2037);
+emit_16(1971);
+emit_16(2037);
+emit_16(1970);
+emit_16(2037);
+emit_16(1971);
+emit_16(2038);
+emit_16(1972);
+emit_16(2038);
+emit_16(1971);
+emit_16(2038);
+emit_16(1972);
+emit_16(2039);
+emit_16(1973);
+emit_16(2039);
+emit_16(1972);
+emit_16(2039);
+emit_16(1973);
+emit_16(2040);
+emit_16(1974);
+emit_16(2040);
+emit_16(1973);
+emit_16(2040);
+emit_16(1974);
+emit_16(2041);
+emit_16(1975);
+emit_16(2041);
+emit_16(1974);
+emit_16(2041);
+emit_16(1975);
+emit_16(2042);
+emit_16(1976);
+emit_16(2042);
+emit_16(1975);
+emit_16(2042);
+emit_16(1976);
+emit_16(2043);
+emit_16(1977);
+emit_16(2043);
+emit_16(1976);
+emit_16(2043);
+emit_16(1977);
+emit_16(2044);
+emit_16(1978);
+emit_16(2044);
+emit_16(1977);
+emit_16(2044);
+emit_16(1978);
+emit_16(2045);
+emit_16(1979);
+emit_16(2045);
+emit_16(1978);
+emit_16(2046);
+emit_16(1980);
+emit_16(2047);
+emit_16(1981);
+emit_16(2047);
+emit_16(1980);
+emit_16(2047);
+emit_16(1981);
+emit_16(2048);
+emit_16(1982);
+emit_16(2048);
+emit_16(1981);
+emit_16(2048);
+emit_16(1982);
+emit_16(2049);
+emit_16(1983);
+emit_16(2049);
+emit_16(1982);
+emit_16(2049);
+emit_16(1983);
+emit_16(2050);
+emit_16(1984);
+emit_16(2050);
+emit_16(1983);
+emit_16(2050);
+emit_16(1984);
+emit_16(2051);
+emit_16(1985);
+emit_16(2051);
+emit_16(1984);
+emit_16(2051);
+emit_16(1985);
+emit_16(2052);
+emit_16(1986);
+emit_16(2052);
+emit_16(1985);
+emit_16(2052);
+emit_16(1986);
+emit_16(2053);
+emit_16(1987);
+emit_16(2053);
+emit_16(1986);
+emit_16(2053);
+emit_16(1987);
+emit_16(2054);
+emit_16(1988);
+emit_16(2054);
+emit_16(1987);
+emit_16(2054);
+emit_16(1988);
+emit_16(2055);
+emit_16(1989);
+emit_16(2055);
+emit_16(1988);
+emit_16(2055);
+emit_16(1989);
+emit_16(2056);
+emit_16(1990);
+emit_16(2056);
+emit_16(1989);
+emit_16(2056);
+emit_16(1990);
+emit_16(2057);
+emit_16(1991);
+emit_16(2057);
+emit_16(1990);
+emit_16(2057);
+emit_16(1991);
+emit_16(2058);
+emit_16(1992);
+emit_16(2058);
+emit_16(1991);
+emit_16(2058);
+emit_16(1992);
+emit_16(2059);
+emit_16(1993);
+emit_16(2059);
+emit_16(1992);
+emit_16(2059);
+emit_16(1993);
+emit_16(2060);
+emit_16(1994);
+emit_16(2060);
+emit_16(1993);
+emit_16(2060);
+emit_16(1994);
+emit_16(2061);
+emit_16(1995);
+emit_16(2061);
+emit_16(1994);
+emit_16(2061);
+emit_16(1995);
+emit_16(2062);
+emit_16(1996);
+emit_16(2062);
+emit_16(1995);
+emit_16(2062);
+emit_16(1996);
+emit_16(2063);
+emit_16(1997);
+emit_16(2063);
+emit_16(1996);
+emit_16(2063);
+emit_16(1997);
+emit_16(2064);
+emit_16(1998);
+emit_16(2064);
+emit_16(1997);
+emit_16(2064);
+emit_16(1998);
+emit_16(2065);
+emit_16(1999);
+emit_16(2065);
+emit_16(1998);
+emit_16(2065);
+emit_16(1999);
+emit_16(2066);
+emit_16(2000);
+emit_16(2066);
+emit_16(1999);
+emit_16(2066);
+emit_16(2000);
+emit_16(2067);
+emit_16(2001);
+emit_16(2067);
+emit_16(2000);
+emit_16(2067);
+emit_16(2001);
+emit_16(2068);
+emit_16(2002);
+emit_16(2068);
+emit_16(2001);
+emit_16(2068);
+emit_16(2002);
+emit_16(2069);
+emit_16(2003);
+emit_16(2069);
+emit_16(2002);
+emit_16(2069);
+emit_16(2003);
+emit_16(2070);
+emit_16(2004);
+emit_16(2070);
+emit_16(2003);
+emit_16(2070);
+emit_16(2004);
+emit_16(2071);
+emit_16(2005);
+emit_16(2071);
+emit_16(2004);
+emit_16(2071);
+emit_16(2005);
+emit_16(2072);
+emit_16(2006);
+emit_16(2072);
+emit_16(2005);
+emit_16(2072);
+emit_16(2006);
+emit_16(2073);
+emit_16(2007);
+emit_16(2073);
+emit_16(2006);
+emit_16(2073);
+emit_16(2007);
+emit_16(2074);
+emit_16(2008);
+emit_16(2074);
+emit_16(2007);
+emit_16(2074);
+emit_16(2008);
+emit_16(2075);
+emit_16(2009);
+emit_16(2075);
+emit_16(2008);
+emit_16(2075);
+emit_16(2009);
+emit_16(2076);
+emit_16(2010);
+emit_16(2076);
+emit_16(2009);
+emit_16(2076);
+emit_16(2010);
+emit_16(2077);
+emit_16(2011);
+emit_16(2077);
+emit_16(2010);
+emit_16(2077);
+emit_16(2011);
+emit_16(2078);
+emit_16(2012);
+emit_16(2078);
+emit_16(2011);
+emit_16(2078);
+emit_16(2012);
+emit_16(2079);
+emit_16(2013);
+emit_16(2079);
+emit_16(2012);
+emit_16(2079);
+emit_16(2013);
+emit_16(2080);
+emit_16(2014);
+emit_16(2080);
+emit_16(2013);
+emit_16(2080);
+emit_16(2014);
+emit_16(2081);
+emit_16(2015);
+emit_16(2081);
+emit_16(2014);
+emit_16(2081);
+emit_16(2015);
+emit_16(2082);
+emit_16(2016);
+emit_16(2082);
+emit_16(2015);
+emit_16(2082);
+emit_16(2016);
+emit_16(2083);
+emit_16(2017);
+emit_16(2083);
+emit_16(2016);
+emit_16(2083);
+emit_16(2017);
+emit_16(2084);
+emit_16(2018);
+emit_16(2084);
+emit_16(2017);
+emit_16(2084);
+emit_16(2018);
+emit_16(2085);
+emit_16(2019);
+emit_16(2085);
+emit_16(2018);
+emit_16(2085);
+emit_16(2019);
+emit_16(2086);
+emit_16(2020);
+emit_16(2086);
+emit_16(2019);
+emit_16(2086);
+emit_16(2020);
+emit_16(2087);
+emit_16(2021);
+emit_16(2087);
+emit_16(2020);
+emit_16(2087);
+emit_16(2021);
+emit_16(2088);
+emit_16(2022);
+emit_16(2088);
+emit_16(2021);
+emit_16(2088);
+emit_16(2022);
+emit_16(2089);
+emit_16(2023);
+emit_16(2089);
+emit_16(2022);
+emit_16(2089);
+emit_16(2023);
+emit_16(2090);
+emit_16(2024);
+emit_16(2090);
+emit_16(2023);
+emit_16(2090);
+emit_16(2024);
+emit_16(2091);
+emit_16(2025);
+emit_16(2091);
+emit_16(2024);
+emit_16(2091);
+emit_16(2025);
+emit_16(2092);
+emit_16(2026);
+emit_16(2092);
+emit_16(2025);
+emit_16(2092);
+emit_16(2026);
+emit_16(2093);
+emit_16(2027);
+emit_16(2093);
+emit_16(2026);
+emit_16(2093);
+emit_16(2027);
+emit_16(2094);
+emit_16(2028);
+emit_16(2094);
+emit_16(2027);
+emit_16(2094);
+emit_16(2028);
+emit_16(2095);
+emit_16(2029);
+emit_16(2095);
+emit_16(2028);
+emit_16(2095);
+emit_16(2029);
+emit_16(2096);
+emit_16(2030);
+emit_16(2096);
+emit_16(2029);
+emit_16(2096);
+emit_16(2030);
+emit_16(2097);
+emit_16(2031);
+emit_16(2097);
+emit_16(2030);
+emit_16(2097);
+emit_16(2031);
+emit_16(2098);
+emit_16(2032);
+emit_16(2098);
+emit_16(2031);
+emit_16(2098);
+emit_16(2032);
+emit_16(2099);
+emit_16(2033);
+emit_16(2099);
+emit_16(2032);
+emit_16(2099);
+emit_16(2033);
+emit_16(2100);
+emit_16(2034);
+emit_16(2100);
+emit_16(2033);
+emit_16(2100);
+emit_16(2034);
+emit_16(2101);
+emit_16(2035);
+emit_16(2101);
+emit_16(2034);
+emit_16(2101);
+emit_16(2035);
+emit_16(2102);
+emit_16(2036);
+emit_16(2102);
+emit_16(2035);
+emit_16(2102);
+emit_16(2036);
+emit_16(2103);
+emit_16(2037);
+emit_16(2103);
+emit_16(2036);
+emit_16(2103);
+emit_16(2037);
+emit_16(2104);
+emit_16(2038);
+emit_16(2104);
+emit_16(2037);
+emit_16(2104);
+emit_16(2038);
+emit_16(2105);
+emit_16(2039);
+emit_16(2105);
+emit_16(2038);
+emit_16(2105);
+emit_16(2039);
+emit_16(2106);
+emit_16(2040);
+emit_16(2106);
+emit_16(2039);
+emit_16(2106);
+emit_16(2040);
+emit_16(2107);
+emit_16(2041);
+emit_16(2107);
+emit_16(2040);
+emit_16(2107);
+emit_16(2041);
+emit_16(2108);
+emit_16(2042);
+emit_16(2108);
+emit_16(2041);
+emit_16(2108);
+emit_16(2042);
+emit_16(2109);
+emit_16(2043);
+emit_16(2109);
+emit_16(2042);
+emit_16(2109);
+emit_16(2043);
+emit_16(2110);
+emit_16(2044);
+emit_16(2110);
+emit_16(2043);
+emit_16(2110);
+emit_16(2044);
+emit_16(2111);
+emit_16(2045);
+emit_16(2111);
+emit_16(2044);
+emit_16(2112);
+emit_16(2046);
+emit_16(2113);
+emit_16(2047);
+emit_16(2113);
+emit_16(2046);
+emit_16(2113);
+emit_16(2047);
+emit_16(2114);
+emit_16(2048);
+emit_16(2114);
+emit_16(2047);
+emit_16(2114);
+emit_16(2048);
+emit_16(2115);
+emit_16(2049);
+emit_16(2115);
+emit_16(2048);
+emit_16(2115);
+emit_16(2049);
+emit_16(2116);
+emit_16(2050);
+emit_16(2116);
+emit_16(2049);
+emit_16(2116);
+emit_16(2050);
+emit_16(2117);
+emit_16(2051);
+emit_16(2117);
+emit_16(2050);
+emit_16(2117);
+emit_16(2051);
+emit_16(2118);
+emit_16(2052);
+emit_16(2118);
+emit_16(2051);
+emit_16(2118);
+emit_16(2052);
+emit_16(2119);
+emit_16(2053);
+emit_16(2119);
+emit_16(2052);
+emit_16(2119);
+emit_16(2053);
+emit_16(2120);
+emit_16(2054);
+emit_16(2120);
+emit_16(2053);
+emit_16(2120);
+emit_16(2054);
+emit_16(2121);
+emit_16(2055);
+emit_16(2121);
+emit_16(2054);
+emit_16(2121);
+emit_16(2055);
+emit_16(2122);
+emit_16(2056);
+emit_16(2122);
+emit_16(2055);
+emit_16(2122);
+emit_16(2056);
+emit_16(2123);
+emit_16(2057);
+emit_16(2123);
+emit_16(2056);
+emit_16(2123);
+emit_16(2057);
+emit_16(2124);
+emit_16(2058);
+emit_16(2124);
+emit_16(2057);
+emit_16(2124);
+emit_16(2058);
+emit_16(2125);
+emit_16(2059);
+emit_16(2125);
+emit_16(2058);
+emit_16(2125);
+emit_16(2059);
+emit_16(2126);
+emit_16(2060);
+emit_16(2126);
+emit_16(2059);
+emit_16(2126);
+emit_16(2060);
+emit_16(2127);
+emit_16(2061);
+emit_16(2127);
+emit_16(2060);
+emit_16(2127);
+emit_16(2061);
+emit_16(2128);
+emit_16(2062);
+emit_16(2128);
+emit_16(2061);
+emit_16(2128);
+emit_16(2062);
+emit_16(2129);
+emit_16(2063);
+emit_16(2129);
+emit_16(2062);
+emit_16(2129);
+emit_16(2063);
+emit_16(2130);
+emit_16(2064);
+emit_16(2130);
+emit_16(2063);
+emit_16(2130);
+emit_16(2064);
+emit_16(2131);
+emit_16(2065);
+emit_16(2131);
+emit_16(2064);
+emit_16(2131);
+emit_16(2065);
+emit_16(2132);
+emit_16(2066);
+emit_16(2132);
+emit_16(2065);
+emit_16(2132);
+emit_16(2066);
+emit_16(2133);
+emit_16(2067);
+emit_16(2133);
+emit_16(2066);
+emit_16(2133);
+emit_16(2067);
+emit_16(2134);
+emit_16(2068);
+emit_16(2134);
+emit_16(2067);
+emit_16(2134);
+emit_16(2068);
+emit_16(2135);
+emit_16(2069);
+emit_16(2135);
+emit_16(2068);
+emit_16(2135);
+emit_16(2069);
+emit_16(2136);
+emit_16(2070);
+emit_16(2136);
+emit_16(2069);
+emit_16(2136);
+emit_16(2070);
+emit_16(2137);
+emit_16(2071);
+emit_16(2137);
+emit_16(2070);
+emit_16(2137);
+emit_16(2071);
+emit_16(2138);
+emit_16(2072);
+emit_16(2138);
+emit_16(2071);
+emit_16(2138);
+emit_16(2072);
+emit_16(2139);
+emit_16(2073);
+emit_16(2139);
+emit_16(2072);
+emit_16(2139);
+emit_16(2073);
+emit_16(2140);
+emit_16(2074);
+emit_16(2140);
+emit_16(2073);
+emit_16(2140);
+emit_16(2074);
+emit_16(2141);
+emit_16(2075);
+emit_16(2141);
+emit_16(2074);
+emit_16(2141);
+emit_16(2075);
+emit_16(2142);
+emit_16(2076);
+emit_16(2142);
+emit_16(2075);
+emit_16(2142);
+emit_16(2076);
+emit_16(2143);
+emit_16(2077);
+emit_16(2143);
+emit_16(2076);
+emit_16(2143);
+emit_16(2077);
+emit_16(2144);
+emit_16(2078);
+emit_16(2144);
+emit_16(2077);
+emit_16(2144);
+emit_16(2078);
+emit_16(2145);
+emit_16(2079);
+emit_16(2145);
+emit_16(2078);
+emit_16(2145);
+emit_16(2079);
+emit_16(2146);
+emit_16(2080);
+emit_16(2146);
+emit_16(2079);
+emit_16(2146);
+emit_16(2080);
+emit_16(2147);
+emit_16(2081);
+emit_16(2147);
+emit_16(2080);
+emit_16(2147);
+emit_16(2081);
+emit_16(2148);
+emit_16(2082);
+emit_16(2148);
+emit_16(2081);
+emit_16(2148);
+emit_16(2082);
+emit_16(2149);
+emit_16(2083);
+emit_16(2149);
+emit_16(2082);
+emit_16(2149);
+emit_16(2083);
+emit_16(2150);
+emit_16(2084);
+emit_16(2150);
+emit_16(2083);
+emit_16(2150);
+emit_16(2084);
+emit_16(2151);
+emit_16(2085);
+emit_16(2151);
+emit_16(2084);
+emit_16(2151);
+emit_16(2085);
+emit_16(2152);
+emit_16(2086);
+emit_16(2152);
+emit_16(2085);
+emit_16(2152);
+emit_16(2086);
+emit_16(2153);
+emit_16(2087);
+emit_16(2153);
+emit_16(2086);
+emit_16(2153);
+emit_16(2087);
+emit_16(2154);
+emit_16(2088);
+emit_16(2154);
+emit_16(2087);
+emit_16(2154);
+emit_16(2088);
+emit_16(2155);
+emit_16(2089);
+emit_16(2155);
+emit_16(2088);
+emit_16(2155);
+emit_16(2089);
+emit_16(2156);
+emit_16(2090);
+emit_16(2156);
+emit_16(2089);
+emit_16(2156);
+emit_16(2090);
+emit_16(2157);
+emit_16(2091);
+emit_16(2157);
+emit_16(2090);
+emit_16(2157);
+emit_16(2091);
+emit_16(2158);
+emit_16(2092);
+emit_16(2158);
+emit_16(2091);
+emit_16(2158);
+emit_16(2092);
+emit_16(2159);
+emit_16(2093);
+emit_16(2159);
+emit_16(2092);
+emit_16(2159);
+emit_16(2093);
+emit_16(2160);
+emit_16(2094);
+emit_16(2160);
+emit_16(2093);
+emit_16(2160);
+emit_16(2094);
+emit_16(2161);
+emit_16(2095);
+emit_16(2161);
+emit_16(2094);
+emit_16(2161);
+emit_16(2095);
+emit_16(2162);
+emit_16(2096);
+emit_16(2162);
+emit_16(2095);
+emit_16(2162);
+emit_16(2096);
+emit_16(2163);
+emit_16(2097);
+emit_16(2163);
+emit_16(2096);
+emit_16(2163);
+emit_16(2097);
+emit_16(2164);
+emit_16(2098);
+emit_16(2164);
+emit_16(2097);
+emit_16(2164);
+emit_16(2098);
+emit_16(2165);
+emit_16(2099);
+emit_16(2165);
+emit_16(2098);
+emit_16(2165);
+emit_16(2099);
+emit_16(2166);
+emit_16(2100);
+emit_16(2166);
+emit_16(2099);
+emit_16(2166);
+emit_16(2100);
+emit_16(2167);
+emit_16(2101);
+emit_16(2167);
+emit_16(2100);
+emit_16(2167);
+emit_16(2101);
+emit_16(2168);
+emit_16(2102);
+emit_16(2168);
+emit_16(2101);
+emit_16(2168);
+emit_16(2102);
+emit_16(2169);
+emit_16(2103);
+emit_16(2169);
+emit_16(2102);
+emit_16(2169);
+emit_16(2103);
+emit_16(2170);
+emit_16(2104);
+emit_16(2170);
+emit_16(2103);
+emit_16(2170);
+emit_16(2104);
+emit_16(2171);
+emit_16(2105);
+emit_16(2171);
+emit_16(2104);
+emit_16(2171);
+emit_16(2105);
+emit_16(2172);
+emit_16(2106);
+emit_16(2172);
+emit_16(2105);
+emit_16(2172);
+emit_16(2106);
+emit_16(2173);
+emit_16(2107);
+emit_16(2173);
+emit_16(2106);
+emit_16(2173);
+emit_16(2107);
+emit_16(2174);
+emit_16(2108);
+emit_16(2174);
+emit_16(2107);
+emit_16(2174);
+emit_16(2108);
+emit_16(2175);
+emit_16(2109);
+emit_16(2175);
+emit_16(2108);
+emit_16(2175);
+emit_16(2109);
+emit_16(2176);
+emit_16(2110);
+emit_16(2176);
+emit_16(2109);
+emit_16(2176);
+emit_16(2110);
+emit_16(2177);
+emit_16(2111);
+emit_16(2177);
+emit_16(2110);
+emit_start(LandscapeIdxCount)
+emit_32(11718);
+emit_32(11310);
+emit_32(11718);
+emit_32(12096);
+emit_32(12870);
+emit_32(13260);
+emit_32(12852);
+emit_32(12480);
+emit_start(_ZTV14BenchmarkDemo4)
+emit_32(0);
+emit_32(_ZTI14BenchmarkDemo4);
+emit_32(_ZN15DemoApplication6myinitEv__index__);
+emit_32(_ZN15DemoApplication16getDynamicsWorldEv__index__);
+emit_32(_ZN15DemoApplication20localCreateRigidBodyEfRK11btTransformP16btCollisionShape__index__);
+emit_32(_ZN14BenchmarkDemo4D1Ev__index__);
+emit_32(_ZN14BenchmarkDemo4D0Ev__index__);
+emit_32(_ZN13BenchmarkDemo20clientMoveAndDisplayEv__index__);
+emit_32(_ZN13BenchmarkDemo15displayCallbackEv__index__);
+emit_start(_ZTI14BenchmarkDemo4)
+emit_32(_ZTVN10__cxxabiv120__si_class_type_infoE+8);
+emit_32(_ZTS14BenchmarkDemo4);
+emit_32(_ZTI13BenchmarkDemo);
+emit_start(_ZTS14BenchmarkDemo4)
+emit_string('14BenchmarkDemo4\x00');
+emit_start(_ZL14benchmarkDemo4)
+emit_32(_ZTV14BenchmarkDemo4+8);
+emit_32(0);
+emit_32(1566444395);
+emit_fill(0,1);
+emit_fill(0,3);
+emit_32(0);
+emit_32(0);
+emit_32(0);
+emit_8(1);
+emit_fill(0,3);
+emit_fill(0,1);
+emit_fill(0,3);
+emit_32(0);
+emit_32(0);
+emit_32(0);
+emit_8(1);
+emit_fill(0,3);
+emit_32(0);
+emit_32(0);
+emit_32(0);
+emit_32(0);
+emit_32(4);
+emit_32(0);
+emit_32(0);
+emit_start(_ZTI21btBroadphaseInterface)
+emit_32(_ZTVN10__cxxabiv117__class_type_infoE+8);
+emit_32(_ZTS21btBroadphaseInterface);
+emit_start(_ZTS21btBroadphaseInterface)
+emit_string('21btBroadphaseInterface\x00');
+emit_start(_ZTI25btOverlappingPairCallback)
+emit_32(_ZTVN10__cxxabiv117__class_type_infoE+8);
+emit_32(_ZTS25btOverlappingPairCallback);
+emit_start(_ZTS25btOverlappingPairCallback)
+emit_string('25btOverlappingPairCallback\x00');
+emit_start(_ZTI22btOverlappingPairCache)
+emit_32(_ZTVN10__cxxabiv120__si_class_type_infoE+8);
+emit_32(_ZTS22btOverlappingPairCache);
+emit_32(_ZTI25btOverlappingPairCallback);
+emit_start(_ZTS22btOverlappingPairCache)
+emit_string('22btOverlappingPairCache\x00');
+emit_start(_ZTV15btNullPairCache)
+emit_32(0);
+emit_32(_ZTI15btNullPairCache);
+emit_32(_ZN15btNullPairCacheD1Ev__index__);
+emit_32(_ZN15btNullPairCacheD0Ev__index__);
+emit_32(_ZN15btNullPairCache18addOverlappingPairEP17btBroadphaseProxyS1___index__);
+emit_32(_ZN15btNullPairCache21removeOverlappingPairEP17btBroadphaseProxyS1_P12btDispatcher__index__);
+emit_32(_ZN15btNullPairCache37removeOverlappingPairsContainingProxyEP17btBroadphaseProxyP12btDispatcher__index__);
+emit_32(_ZN15btNullPairCache26getOverlappingPairArrayPtrEv__index__);
+emit_32(_ZNK15btNullPairCache26getOverlappingPairArrayPtrEv__index__);
+emit_32(_ZN15btNullPairCache23getOverlappingPairArrayEv__index__);
+emit_32(_ZN15btNullPairCache20cleanOverlappingPairER16btBroadphasePairP12btDispatcher__index__);
+emit_32(_ZNK15btNullPairCache22getNumOverlappingPairsEv__index__);
+emit_32(_ZN15btNullPairCache19cleanProxyFromPairsEP17btBroadphaseProxyP12btDispatcher__index__);
+emit_32(_ZN15btNullPairCache24setOverlapFilterCallbackEP23btOverlapFilterCallback__index__);
+emit_32(_ZN15btNullPairCache26processAllOverlappingPairsEP17btOverlapCallbackP12btDispatcher__index__);
+emit_32(_ZN15btNullPairCache8findPairEP17btBroadphaseProxyS1___index__);
+emit_32(_ZN15btNullPairCache18hasDeferredRemovalEv__index__);
+emit_32(_ZN15btNullPairCache28setInternalGhostPairCallbackEP25btOverlappingPairCallback__index__);
+emit_32(_ZN15btNullPairCache20sortOverlappingPairsEP12btDispatcher__index__);
+emit_start(_ZTI15btNullPairCache)
+emit_32(_ZTVN10__cxxabiv120__si_class_type_infoE+8);
+emit_32(_ZTS15btNullPairCache);
+emit_32(_ZTI22btOverlappingPairCache);
+emit_start(_ZTS15btNullPairCache)
+emit_string('15btNullPairCache\x00');
+emit_start(_2E_str11)
+emit_string('handle > 0 && handle < m_maxHandles\x00');
+emit_start(_2E_str112)
+emit_string('../../../../src/BulletCollision/BroadphaseCollision/btAxisSweep3.h\x00');
+emit_start(_2E_str213)
+emit_string('m_firstFreeHandle\x00');
+emit_start(_2E_str314)
+emit_string('!pair.m_algorithm\x00');
+emit_start(_ZTV20btAxisSweep3InternalItE)
+emit_32(0);
+emit_32(_ZTI20btAxisSweep3InternalItE);
+emit_32(_ZN20btAxisSweep3InternalItED1Ev__index__);
+emit_32(_ZN20btAxisSweep3InternalItED0Ev__index__);
+emit_32(_ZN20btAxisSweep3InternalItE11createProxyERK9btVector3S3_iPvssP12btDispatcherS4___index__);
+emit_32(_ZN20btAxisSweep3InternalItE12destroyProxyEP17btBroadphaseProxyP12btDispatcher__index__);
+emit_32(_ZN20btAxisSweep3InternalItE7setAabbEP17btBroadphaseProxyRK9btVector3S5_P12btDispatcher__index__);
+emit_32(_ZNK20btAxisSweep3InternalItE7getAabbEP17btBroadphaseProxyR9btVector3S4___index__);
+emit_32(_ZN20btAxisSweep3InternalItE7rayTestERK9btVector3S3_R23btBroadphaseRayCallbackS3_S3___index__);
+emit_32(_ZN20btAxisSweep3InternalItE8aabbTestERK9btVector3S3_R24btBroadphaseAabbCallback__index__);
+emit_32(_ZN20btAxisSweep3InternalItE25calculateOverlappingPairsEP12btDispatcher__index__);
+emit_32(_ZN20btAxisSweep3InternalItE23getOverlappingPairCacheEv__index__);
+emit_32(_ZNK20btAxisSweep3InternalItE23getOverlappingPairCacheEv__index__);
+emit_32(_ZNK20btAxisSweep3InternalItE17getBroadphaseAabbER9btVector3S2___index__);
+emit_32(_ZN20btAxisSweep3InternalItE9resetPoolEP12btDispatcher__index__);
+emit_32(_ZN20btAxisSweep3InternalItE10printStatsEv__index__);
+emit_start(_ZTI20btAxisSweep3InternalItE)
+emit_32(_ZTVN10__cxxabiv120__si_class_type_infoE+8);
+emit_32(_ZTS20btAxisSweep3InternalItE);
+emit_32(_ZTI21btBroadphaseInterface);
+emit_start(_ZTS20btAxisSweep3InternalItE)
+emit_string('20btAxisSweep3InternalItE\x00');
+emit_start(_ZTV12btAxisSweep3)
+emit_32(0);
+emit_32(_ZTI12btAxisSweep3);
+emit_32(_ZN12btAxisSweep3D1Ev__index__);
+emit_32(_ZN12btAxisSweep3D0Ev__index__);
+emit_32(_ZN20btAxisSweep3InternalItE11createProxyERK9btVector3S3_iPvssP12btDispatcherS4___index__);
+emit_32(_ZN20btAxisSweep3InternalItE12destroyProxyEP17btBroadphaseProxyP12btDispatcher__index__);
+emit_32(_ZN20btAxisSweep3InternalItE7setAabbEP17btBroadphaseProxyRK9btVector3S5_P12btDispatcher__index__);
+emit_32(_ZNK20btAxisSweep3InternalItE7getAabbEP17btBroadphaseProxyR9btVector3S4___index__);
+emit_32(_ZN20btAxisSweep3InternalItE7rayTestERK9btVector3S3_R23btBroadphaseRayCallbackS3_S3___index__);
+emit_32(_ZN20btAxisSweep3InternalItE8aabbTestERK9btVector3S3_R24btBroadphaseAabbCallback__index__);
+emit_32(_ZN20btAxisSweep3InternalItE25calculateOverlappingPairsEP12btDispatcher__index__);
+emit_32(_ZN20btAxisSweep3InternalItE23getOverlappingPairCacheEv__index__);
+emit_32(_ZNK20btAxisSweep3InternalItE23getOverlappingPairCacheEv__index__);
+emit_32(_ZNK20btAxisSweep3InternalItE17getBroadphaseAabbER9btVector3S2___index__);
+emit_32(_ZN20btAxisSweep3InternalItE9resetPoolEP12btDispatcher__index__);
+emit_32(_ZN20btAxisSweep3InternalItE10printStatsEv__index__);
+emit_start(_ZTI12btAxisSweep3)
+emit_32(_ZTVN10__cxxabiv120__si_class_type_infoE+8);
+emit_32(_ZTS12btAxisSweep3);
+emit_32(_ZTI20btAxisSweep3InternalItE);
+emit_start(_ZTS12btAxisSweep3)
+emit_string('12btAxisSweep3\x00');
+emit_start(_ZTV20btCollisionAlgorithm)
+emit_32(0);
+emit_32(_ZTI20btCollisionAlgorithm);
+emit_32(_ZN20btCollisionAlgorithmD1Ev__index__);
+emit_32(_ZN20btCollisionAlgorithmD0Ev__index__);
+emit_32(__cxa_pure_virtual__index__);
+emit_32(__cxa_pure_virtual__index__);
+emit_32(__cxa_pure_virtual__index__);
+emit_start(_ZTI20btCollisionAlgorithm)
+emit_32(_ZTVN10__cxxabiv117__class_type_infoE+8);
+emit_32(_ZTS20btCollisionAlgorithm);
+emit_start(_ZTS20btCollisionAlgorithm)
+emit_string('20btCollisionAlgorithm\x00');
+emit_start(_ZTIN6btDbvt8ICollideE)
+emit_32(_ZTVN10__cxxabiv117__class_type_infoE+8);
+emit_32(_ZTSN6btDbvt8ICollideE);
+emit_start(_ZTSN6btDbvt8ICollideE)
+emit_string('N6btDbvt8ICollideE\x00');
+emit_start(_2E_str1118)
+emit_string('../../../../src/BulletCollision/BroadphaseCollision/btDbvt.cpp\x00');
+emit_start(_2E_str22)
+emit_string('n==p->childs[i]\x00');
+emit_start(_ZTV18btDbvtTreeCollider)
+emit_32(0);
+emit_32(_ZTI18btDbvtTreeCollider);
+emit_32(_ZN18btDbvtTreeColliderD1Ev__index__);
+emit_32(_ZN18btDbvtTreeColliderD0Ev__index__);
+emit_32(_ZN18btDbvtTreeCollider7ProcessEPK10btDbvtNodeS2___index__);
+emit_32(_ZN18btDbvtTreeCollider7ProcessEPK10btDbvtNode__index__);
+emit_32(_ZN6btDbvt8ICollide7ProcessEPK10btDbvtNodef__index__);
+emit_32(_ZN6btDbvt8ICollide7DescentEPK10btDbvtNode__index__);
+emit_32(_ZN6btDbvt8ICollide9AllLeavesEPK10btDbvtNode__index__);
+emit_start(_ZTI18btDbvtTreeCollider)
+emit_32(_ZTVN10__cxxabiv120__si_class_type_infoE+8);
+emit_32(_ZTS18btDbvtTreeCollider);
+emit_32(_ZTIN6btDbvt8ICollideE);
+emit_start(_ZTS18btDbvtTreeCollider)
+emit_string('18btDbvtTreeCollider\x00');
+emit_start(_ZTV19BroadphaseRayTester)
+emit_32(0);
+emit_32(_ZTI19BroadphaseRayTester);
+emit_32(_ZN19BroadphaseRayTesterD1Ev__index__);
+emit_32(_ZN19BroadphaseRayTesterD0Ev__index__);
+emit_32(_ZN6btDbvt8ICollide7ProcessEPK10btDbvtNodeS3___index__);
+emit_32(_ZN19BroadphaseRayTester7ProcessEPK10btDbvtNode__index__);
+emit_32(_ZN6btDbvt8ICollide7ProcessEPK10btDbvtNodef__index__);
+emit_32(_ZN6btDbvt8ICollide7DescentEPK10btDbvtNode__index__);
+emit_32(_ZN6btDbvt8ICollide9AllLeavesEPK10btDbvtNode__index__);
+emit_start(_ZTI19BroadphaseRayTester)
+emit_32(_ZTVN10__cxxabiv120__si_class_type_infoE+8);
+emit_32(_ZTS19BroadphaseRayTester);
+emit_32(_ZTIN6btDbvt8ICollideE);
+emit_start(_ZTS19BroadphaseRayTester)
+emit_string('19BroadphaseRayTester\x00');
+emit_start(_ZTV20BroadphaseAabbTester)
+emit_32(0);
+emit_32(_ZTI20BroadphaseAabbTester);
+emit_32(_ZN20BroadphaseAabbTesterD1Ev__index__);
+emit_32(_ZN20BroadphaseAabbTesterD0Ev__index__);
+emit_32(_ZN6btDbvt8ICollide7ProcessEPK10btDbvtNodeS3___index__);
+emit_32(_ZN20BroadphaseAabbTester7ProcessEPK10btDbvtNode__index__);
+emit_32(_ZN6btDbvt8ICollide7ProcessEPK10btDbvtNodef__index__);
+emit_32(_ZN6btDbvt8ICollide7DescentEPK10btDbvtNode__index__);
+emit_32(_ZN6btDbvt8ICollide9AllLeavesEPK10btDbvtNode__index__);
+emit_start(_ZTI20BroadphaseAabbTester)
+emit_32(_ZTVN10__cxxabiv120__si_class_type_infoE+8);
+emit_32(_ZTS20BroadphaseAabbTester);
+emit_32(_ZTIN6btDbvt8ICollideE);
+emit_start(_ZTS20BroadphaseAabbTester)
+emit_string('20BroadphaseAabbTester\x00');
+emit_start(_2E_str18)
+emit_string('../../../../src/BulletCollision/BroadphaseCollision/btDbvtBroadphase.cpp\x00');
+emit_start(_ZTV16btDbvtBroadphase)
+emit_32(0);
+emit_32(_ZTI16btDbvtBroadphase);
+emit_32(_ZN16btDbvtBroadphaseD1Ev__index__);
+emit_32(_ZN16btDbvtBroadphaseD0Ev__index__);
+emit_32(_ZN16btDbvtBroadphase11createProxyERK9btVector3S2_iPvssP12btDispatcherS3___index__);
+emit_32(_ZN16btDbvtBroadphase12destroyProxyEP17btBroadphaseProxyP12btDispatcher__index__);
+emit_32(_ZN16btDbvtBroadphase7setAabbEP17btBroadphaseProxyRK9btVector3S4_P12btDispatcher__index__);
+emit_32(_ZNK16btDbvtBroadphase7getAabbEP17btBroadphaseProxyR9btVector3S3___index__);
+emit_32(_ZN16btDbvtBroadphase7rayTestERK9btVector3S2_R23btBroadphaseRayCallbackS2_S2___index__);
+emit_32(_ZN16btDbvtBroadphase8aabbTestERK9btVector3S2_R24btBroadphaseAabbCallback__index__);
+emit_32(_ZN16btDbvtBroadphase25calculateOverlappingPairsEP12btDispatcher__index__);
+emit_32(_ZN16btDbvtBroadphase23getOverlappingPairCacheEv__index__);
+emit_32(_ZNK16btDbvtBroadphase23getOverlappingPairCacheEv__index__);
+emit_32(_ZNK16btDbvtBroadphase17getBroadphaseAabbER9btVector3S1___index__);
+emit_32(_ZN16btDbvtBroadphase9resetPoolEP12btDispatcher__index__);
+emit_32(_ZN16btDbvtBroadphase10printStatsEv__index__);
+emit_start(_ZTI16btDbvtBroadphase)
+emit_32(_ZTVN10__cxxabiv120__si_class_type_infoE+8);
+emit_32(_ZTS16btDbvtBroadphase);
+emit_32(_ZTI21btBroadphaseInterface);
+emit_start(_ZTS16btDbvtBroadphase)
+emit_string('16btDbvtBroadphase\x00');
+emit_start(_ZTV12btDispatcher)
+emit_32(0);
+emit_32(_ZTI12btDispatcher);
+emit_32(_ZN12btDispatcherD1Ev__index__);
+emit_32(_ZN12btDispatcherD0Ev__index__);
+emit_32(__cxa_pure_virtual__index__);
+emit_32(__cxa_pure_virtual__index__);
+emit_32(__cxa_pure_virtual__index__);
+emit_32(__cxa_pure_virtual__index__);
+emit_32(__cxa_pure_virtual__index__);
+emit_32(__cxa_pure_virtual__index__);
+emit_32(__cxa_pure_virtual__index__);
+emit_32(__cxa_pure_virtual__index__);
+emit_32(__cxa_pure_virtual__index__);
+emit_32(__cxa_pure_virtual__index__);
+emit_32(__cxa_pure_virtual__index__);
+emit_32(__cxa_pure_virtual__index__);
+emit_start(_ZTI12btDispatcher)
+emit_32(_ZTVN10__cxxabiv117__class_type_infoE+8);
+emit_32(_ZTS12btDispatcher);
+emit_start(_ZTS12btDispatcher)
+emit_string('12btDispatcher\x00');
+emit_start(_ZTI21btNodeOverlapCallback)
+emit_32(_ZTVN10__cxxabiv117__class_type_infoE+8);
+emit_32(_ZTS21btNodeOverlapCallback);
+emit_start(_ZTS21btNodeOverlapCallback)
+emit_string('21btNodeOverlapCallback\x00');
+emit_start(_2E_str10)
+emit_string('0\x00');
+emit_start(_2E_str212)
+emit_string('m_useQuantization\x00');
+emit_start(_2E_str313)
+emit_string('../../../../src/BulletCollision/BroadphaseCollision/btQuantizedBvh.h\x00');
+emit_start(_2E_str414)
+emit_string('point.getX() <= m_bvhAabbMax.getX()\x00');
+emit_start(_2E_str515)
+emit_string('point.getY() <= m_bvhAabbMax.getY()\x00');
+emit_start(_2E_str616)
+emit_string('point.getZ() <= m_bvhAabbMax.getZ()\x00');
+emit_start(_2E_str717)
+emit_string('point.getX() >= m_bvhAabbMin.getX()\x00');
+emit_start(_2E_str820)
+emit_string('point.getY() >= m_bvhAabbMin.getY()\x00');
+emit_start(_2E_str9)
+emit_string('point.getZ() >= m_bvhAabbMin.getZ()\x00');
+emit_start(_ZTI17btOverlapCallback)
+emit_32(_ZTVN10__cxxabiv117__class_type_infoE+8);
+emit_32(_ZTS17btOverlapCallback);
+emit_start(_ZTS17btOverlapCallback)
+emit_string('17btOverlapCallback\x00');
+emit_start(_ZTVZN28btHashedOverlappingPairCache19cleanProxyFromPairsEP17btBroadphaseProxyP12btDispatcherE17CleanPairCallback)
+emit_32(0);
+emit_32(_ZTIZN28btHashedOverlappingPairCache19cleanProxyFromPairsEP17btBroadphaseProxyP12btDispatcherE17CleanPairCallback);
+emit_32(_ZZN28btHashedOverlappingPairCache19cleanProxyFromPairsEP17btBroadphaseProxyP12btDispatcherEN17CleanPairCallbackD1Ev__index__);
+emit_32(_ZZN28btHashedOverlappingPairCache19cleanProxyFromPairsEP17btBroadphaseProxyP12btDispatcherEN17CleanPairCallbackD0Ev__index__);
+emit_32(_ZZN28btHashedOverlappingPairCache19cleanProxyFromPairsEP17btBroadphaseProxyP12btDispatcherEN17CleanPairCallback14processOverlapER16btBroadphasePair__index__);
+emit_start(_ZTIZN28btHashedOverlappingPairCache19cleanProxyFromPairsEP17btBroadphaseProxyP12btDispatcherE17CleanPairCallback)
+emit_32(_ZTVN10__cxxabiv120__si_class_type_infoE+8);
+emit_32(_ZTSZN28btHashedOverlappingPairCache19cleanProxyFromPairsEP17btBroadphaseProxyP12btDispatcherE17CleanPairCallback);
+emit_32(_ZTI17btOverlapCallback);
+emit_start(_ZTSZN28btHashedOverlappingPairCache19cleanProxyFromPairsEP17btBroadphaseProxyP12btDispatcherE17CleanPairCallback)
+emit_string('ZN28btHashedOverlappingPairCache19cleanProxyFromPairsEP17btBroadphaseProxyP12btDispatcherE17CleanPairCallback\x00');
+emit_start(_ZTVZN28btHashedOverlappingPairCache37removeOverlappingPairsContainingProxyEP17btBroadphaseProxyP12btDispatcherE18RemovePairCallback)
+emit_32(0);
+emit_32(_ZTIZN28btHashedOverlappingPairCache37removeOverlappingPairsContainingProxyEP17btBroadphaseProxyP12btDispatcherE18RemovePairCallback);
+emit_32(_ZZN28btHashedOverlappingPairCache37removeOverlappingPairsContainingProxyEP17btBroadphaseProxyP12btDispatcherEN18RemovePairCallbackD1Ev__index__);
+emit_32(_ZZN28btHashedOverlappingPairCache37removeOverlappingPairsContainingProxyEP17btBroadphaseProxyP12btDispatcherEN18RemovePairCallbackD0Ev__index__);
+emit_32(_ZZN28btHashedOverlappingPairCache37removeOverlappingPairsContainingProxyEP17btBroadphaseProxyP12btDispatcherEN18RemovePairCallback14processOverlapER16btBroadphasePair__index__);
+emit_start(_ZTIZN28btHashedOverlappingPairCache37removeOverlappingPairsContainingProxyEP17btBroadphaseProxyP12btDispatcherE18RemovePairCallback)
+emit_32(_ZTVN10__cxxabiv120__si_class_type_infoE+8);
+emit_32(_ZTSZN28btHashedOverlappingPairCache37removeOverlappingPairsContainingProxyEP17btBroadphaseProxyP12btDispatcherE18RemovePairCallback);
+emit_32(_ZTI17btOverlapCallback);
+emit_start(_ZTSZN28btHashedOverlappingPairCache37removeOverlappingPairsContainingProxyEP17btBroadphaseProxyP12btDispatcherE18RemovePairCallback)
+emit_string('ZN28btHashedOverlappingPairCache37removeOverlappingPairsContainingProxyEP17btBroadphaseProxyP12btDispatcherE18RemovePairCallback\x00');
+emit_start(_ZTV28btHashedOverlappingPairCache)
+emit_32(0);
+emit_32(_ZTI28btHashedOverlappingPairCache);
+emit_32(_ZN28btHashedOverlappingPairCacheD1Ev__index__);
+emit_32(_ZN28btHashedOverlappingPairCacheD0Ev__index__);
+emit_32(_ZN28btHashedOverlappingPairCache18addOverlappingPairEP17btBroadphaseProxyS1___index__);
+emit_32(_ZN28btHashedOverlappingPairCache21removeOverlappingPairEP17btBroadphaseProxyS1_P12btDispatcher__index__);
+emit_32(_ZN28btHashedOverlappingPairCache37removeOverlappingPairsContainingProxyEP17btBroadphaseProxyP12btDispatcher__index__);
+emit_32(_ZN28btHashedOverlappingPairCache26getOverlappingPairArrayPtrEv__index__);
+emit_32(_ZNK28btHashedOverlappingPairCache26getOverlappingPairArrayPtrEv__index__);
+emit_32(_ZN28btHashedOverlappingPairCache23getOverlappingPairArrayEv__index__);
+emit_32(_ZN28btHashedOverlappingPairCache20cleanOverlappingPairER16btBroadphasePairP12btDispatcher__index__);
+emit_32(_ZNK28btHashedOverlappingPairCache22getNumOverlappingPairsEv__index__);
+emit_32(_ZN28btHashedOverlappingPairCache19cleanProxyFromPairsEP17btBroadphaseProxyP12btDispatcher__index__);
+emit_32(_ZN28btHashedOverlappingPairCache24setOverlapFilterCallbackEP23btOverlapFilterCallback__index__);
+emit_32(_ZN28btHashedOverlappingPairCache26processAllOverlappingPairsEP17btOverlapCallbackP12btDispatcher__index__);
+emit_32(_ZN28btHashedOverlappingPairCache8findPairEP17btBroadphaseProxyS1___index__);
+emit_32(_ZN28btHashedOverlappingPairCache18hasDeferredRemovalEv__index__);
+emit_32(_ZN28btHashedOverlappingPairCache28setInternalGhostPairCallbackEP25btOverlappingPairCallback__index__);
+emit_32(_ZN28btHashedOverlappingPairCache20sortOverlappingPairsEP12btDispatcher__index__);
+emit_start(_ZTI28btHashedOverlappingPairCache)
+emit_32(_ZTVN10__cxxabiv120__si_class_type_infoE+8);
+emit_32(_ZTS28btHashedOverlappingPairCache);
+emit_32(_ZTI22btOverlappingPairCache);
+emit_start(_ZTS28btHashedOverlappingPairCache)
+emit_string('28btHashedOverlappingPairCache\x00');
+emit_start(_2E_str121)
+emit_string('../../../../src/BulletCollision/BroadphaseCollision/btOverlappingPairCache.cpp\x00');
+emit_start(_2E_str222)
+emit_string('index < m_overlappingPairArray.size()\x00');
+emit_start(_2E_str323)
+emit_string('../../../../src/BulletCollision/BroadphaseCollision/btOverlappingPairCache.h\x00');
+emit_start(_2E_str424)
+emit_string('pair->m_pProxy0->getUid() == proxyId1\x00');
+emit_start(_2E_str525)
+emit_string('pair->m_pProxy1->getUid() == proxyId2\x00');
+emit_start(_2E_str626)
+emit_string('pairIndex < m_overlappingPairArray.size()\x00');
+emit_start(_2E_str727)
+emit_string('index != BT_NULL_PAIR\x00');
+emit_start(_2E_str32)
+emit_string('btOptimizedBvhNodeData\x00');
+emit_start(_2E_str133)
+emit_string('btQuantizedBvhNodeData\x00');
+emit_start(_2E_str234)
+emit_string('btBvhSubtreeInfoData\x00');
+emit_start(_2E_str335)
+emit_string('btQuantizedBvhFloatData\x00');
+emit_start(_ZTV14btQuantizedBvh)
+emit_32(0);
+emit_32(_ZTI14btQuantizedBvh);
+emit_32(_ZN14btQuantizedBvhD1Ev__index__);
+emit_32(_ZN14btQuantizedBvhD0Ev__index__);
+emit_32(_ZNK14btQuantizedBvh9serializeEPvjb__index__);
+emit_32(_ZNK14btQuantizedBvh31calculateSerializeBufferSizeNewEv__index__);
+emit_32(_ZNK14btQuantizedBvh9serializeEPvP12btSerializer__index__);
+emit_32(_ZN14btQuantizedBvh16deSerializeFloatER23btQuantizedBvhFloatData__index__);
+emit_32(_ZN14btQuantizedBvh17deSerializeDoubleER24btQuantizedBvhDoubleData__index__);
+emit_start(_ZTI14btQuantizedBvh)
+emit_32(_ZTVN10__cxxabiv117__class_type_infoE+8);
+emit_32(_ZTS14btQuantizedBvh);
+emit_start(_ZTS14btQuantizedBvh)
+emit_string('14btQuantizedBvh\x00');
+emit_start(_2E_str537)
+emit_string('../../../../src/BulletCollision/BroadphaseCollision/btQuantizedBvh.cpp\x00');
+emit_start(_2E_str638)
+emit_string('m_subtreeHeaderCount == m_SubtreeHeaders.size()\x00');
+emit_start(_2E_str739)
+emit_string('isLeafNode()\x00');
+emit_start(_2E_str941)
+emit_string('!isLeafNode()\x00');
+emit_start(_2E_str1143)
+emit_string('walkIterations < subTreeSize\x00');
+emit_start(_2E_str1844)
+emit_string('!m_useQuantization\x00');
+emit_start(_2E_str1921)
+emit_string('walkIterations < m_curNodeIndex\x00');
+emit_start(_2E_str21)
+emit_string('!unbal\x00');
+emit_start(_2E_str2246)
+emit_string('numIndices>0\x00');
+emit_start(_ZTV30btActivatingCollisionAlgorithm)
+emit_32(0);
+emit_32(_ZTI30btActivatingCollisionAlgorithm);
+emit_32(_ZN30btActivatingCollisionAlgorithmD1Ev__index__);
+emit_32(_ZN30btActivatingCollisionAlgorithmD0Ev__index__);
+emit_32(__cxa_pure_virtual__index__);
+emit_32(__cxa_pure_virtual__index__);
+emit_32(__cxa_pure_virtual__index__);
+emit_start(_ZTI30btActivatingCollisionAlgorithm)
+emit_32(_ZTVN10__cxxabiv120__si_class_type_infoE+8);
+emit_32(_ZTS30btActivatingCollisionAlgorithm);
+emit_32(_ZTI20btCollisionAlgorithm);
+emit_start(_ZTS30btActivatingCollisionAlgorithm)
+emit_string('30btActivatingCollisionAlgorithm\x00');
+emit_start(_2E_str59)
+emit_string('m_manifoldPtr\x00');
+emit_start(_2E_str160)
+emit_string('../../../../src/BulletCollision/CollisionDispatch/btManifoldResult.h\x00');
+emit_start(_ZTV26btBoxBoxCollisionAlgorithm)
+emit_32(0);
+emit_32(_ZTI26btBoxBoxCollisionAlgorithm);
+emit_32(_ZN26btBoxBoxCollisionAlgorithmD1Ev__index__);
+emit_32(_ZN26btBoxBoxCollisionAlgorithmD0Ev__index__);
+emit_32(_ZN26btBoxBoxCollisionAlgorithm16processCollisionEP17btCollisionObjectS1_RK16btDispatcherInfoP16btManifoldResult__index__);
+emit_32(_ZN26btBoxBoxCollisionAlgorithm21calculateTimeOfImpactEP17btCollisionObjectS1_RK16btDispatcherInfoP16btManifoldResult__index__);
+emit_32(_ZN26btBoxBoxCollisionAlgorithm22getAllContactManifoldsER20btAlignedObjectArrayIP20btPersistentManifoldE__index__);
+emit_start(_ZTI26btBoxBoxCollisionAlgorithm)
+emit_32(_ZTVN10__cxxabiv120__si_class_type_infoE+8);
+emit_32(_ZTS26btBoxBoxCollisionAlgorithm);
+emit_32(_ZTI30btActivatingCollisionAlgorithm);
+emit_start(_ZTS26btBoxBoxCollisionAlgorithm)
+emit_string('26btBoxBoxCollisionAlgorithm\x00');
+emit_start(_ZTI36btDiscreteCollisionDetectorInterface)
+emit_32(_ZTVN10__cxxabiv117__class_type_infoE+8);
+emit_32(_ZTS36btDiscreteCollisionDetectorInterface);
+emit_start(_ZTS36btDiscreteCollisionDetectorInterface)
+emit_string('36btDiscreteCollisionDetectorInterface\x00');
+emit_start(_ZTV16btBoxBoxDetector)
+emit_32(0);
+emit_32(_ZTI16btBoxBoxDetector);
+emit_32(_ZN16btBoxBoxDetectorD1Ev__index__);
+emit_32(_ZN16btBoxBoxDetectorD0Ev__index__);
+emit_32(_ZN16btBoxBoxDetector16getClosestPointsERKN36btDiscreteCollisionDetectorInterface17ClosestPointInputERNS0_6ResultEP12btIDebugDrawb__index__);
+emit_start(_ZTI16btBoxBoxDetector)
+emit_32(_ZTVN10__cxxabiv120__si_class_type_infoE+8);
+emit_32(_ZTS16btBoxBoxDetector);
+emit_32(_ZTI36btDiscreteCollisionDetectorInterface);
+emit_start(_ZTS16btBoxBoxDetector)
+emit_string('16btBoxBoxDetector\x00');
+emit_start(_2E_str65)
+emit_string('*iret != i0\x00');
+emit_start(_2E_str166)
+emit_string('../../../../src/BulletCollision/CollisionDispatch/btBoxBoxDetector.cpp\x00');
+emit_start(_ZTIN36btDiscreteCollisionDetectorInterface6ResultE)
+emit_32(_ZTVN10__cxxabiv117__class_type_infoE+8);
+emit_32(_ZTSN36btDiscreteCollisionDetectorInterface6ResultE);
+emit_start(_ZTSN36btDiscreteCollisionDetectorInterface6ResultE)
+emit_string('N36btDiscreteCollisionDetectorInterface6ResultE\x00');
+emit_start(_ZTV23btCollisionPairCallback)
+emit_32(0);
+emit_32(_ZTI23btCollisionPairCallback);
+emit_32(_ZN23btCollisionPairCallbackD1Ev__index__);
+emit_32(_ZN23btCollisionPairCallbackD0Ev__index__);
+emit_32(_ZN23btCollisionPairCallback14processOverlapER16btBroadphasePair__index__);
+emit_start(_ZTI23btCollisionPairCallback)
+emit_32(_ZTVN10__cxxabiv120__si_class_type_infoE+8);
+emit_32(_ZTS23btCollisionPairCallback);
+emit_32(_ZTI17btOverlapCallback);
+emit_start(_ZTS23btCollisionPairCallback)
+emit_string('23btCollisionPairCallback\x00');
+emit_start(_2E_str169)
+emit_string('../../../../src/LinearMath/btPoolAllocator.h\x00');
+emit_start(_2E_str270)
+emit_string('!size || size<=m_elemSize\x00');
+emit_start(_2E_str371)
+emit_string('m_freeCount>0\x00');
+emit_start(_2E_str472)
+emit_string('findIndex < m_manifoldsPtr.size()\x00');
+emit_start(_2E_str573)
+emit_string('../../../../src/BulletCollision/CollisionDispatch/btCollisionDispatcher.cpp\x00');
+emit_start(_ZTV21btCollisionDispatcher)
+emit_32(0);
+emit_32(_ZTI21btCollisionDispatcher);
+emit_32(_ZN21btCollisionDispatcherD1Ev__index__);
+emit_32(_ZN21btCollisionDispatcherD0Ev__index__);
+emit_32(_ZN21btCollisionDispatcher13findAlgorithmEP17btCollisionObjectS1_P20btPersistentManifold__index__);
+emit_32(_ZN21btCollisionDispatcher14getNewManifoldEPvS0___index__);
+emit_32(_ZN21btCollisionDispatcher15releaseManifoldEP20btPersistentManifold__index__);
+emit_32(_ZN21btCollisionDispatcher13clearManifoldEP20btPersistentManifold__index__);
+emit_32(_ZN21btCollisionDispatcher14needsCollisionEP17btCollisionObjectS1___index__);
+emit_32(_ZN21btCollisionDispatcher13needsResponseEP17btCollisionObjectS1___index__);
+emit_32(_ZN21btCollisionDispatcher25dispatchAllCollisionPairsEP22btOverlappingPairCacheRK16btDispatcherInfoP12btDispatcher__index__);
+emit_32(_ZNK21btCollisionDispatcher15getNumManifoldsEv__index__);
+emit_32(_ZN21btCollisionDispatcher26getManifoldByIndexInternalEi__index__);
+emit_32(_ZN21btCollisionDispatcher26getInternalManifoldPointerEv__index__);
+emit_32(_ZN21btCollisionDispatcher26allocateCollisionAlgorithmEi__index__);
+emit_32(_ZN21btCollisionDispatcher22freeCollisionAlgorithmEPv__index__);
+emit_start(_ZTI21btCollisionDispatcher)
+emit_32(_ZTVN10__cxxabiv120__si_class_type_infoE+8);
+emit_32(_ZTS21btCollisionDispatcher);
+emit_32(_ZTI12btDispatcher);
+emit_start(_ZTS21btCollisionDispatcher)
+emit_string('21btCollisionDispatcher\x00');
+emit_start(_2E_str674)
+emit_string('m_doubleDispatch[i][j]\x00');
+emit_start(_2E_str775)
+emit_string('body0\x00');
+emit_start(_2E_str876)
+emit_string('body1\x00');
+emit_start(_2E_str977)
+emit_string('warning btCollisionDispatcher::needsCollision: static-static collision!\x0a\x00');
+emit_start(_ZTV17btCollisionObject)
+emit_32(0);
+emit_32(_ZTI17btCollisionObject);
+emit_32(_ZN17btCollisionObject24checkCollideWithOverrideEPS___index__);
+emit_32(_ZN17btCollisionObjectD1Ev__index__);
+emit_32(_ZN17btCollisionObjectD0Ev__index__);
+emit_32(_ZN17btCollisionObject17setCollisionShapeEP16btCollisionShape__index__);
+emit_32(_ZNK17btCollisionObject28calculateSerializeBufferSizeEv__index__);
+emit_32(_ZNK17btCollisionObject9serializeEPvP12btSerializer__index__);
+emit_32(_ZNK17btCollisionObject21serializeSingleObjectEP12btSerializer__index__);
+emit_start(_ZTI17btCollisionObject)
+emit_32(_ZTVN10__cxxabiv117__class_type_infoE+8);
+emit_32(_ZTS17btCollisionObject);
+emit_start(_ZTS17btCollisionObject)
+emit_string('17btCollisionObject\x00');
+emit_start(_2E_str78)
+emit_string('btCollisionObjectFloatData\x00');
+emit_start(_ZTIN16btCollisionWorld20ConvexResultCallbackE)
+emit_32(_ZTVN10__cxxabiv117__class_type_infoE+8);
+emit_32(_ZTSN16btCollisionWorld20ConvexResultCallbackE);
+emit_start(_ZTSN16btCollisionWorld20ConvexResultCallbackE)
+emit_string('N16btCollisionWorld20ConvexResultCallbackE\x00');
+emit_start(_ZTI30btConvexPenetrationDepthSolver)
+emit_32(_ZTVN10__cxxabiv117__class_type_infoE+8);
+emit_32(_ZTS30btConvexPenetrationDepthSolver);
+emit_start(_ZTS30btConvexPenetrationDepthSolver)
+emit_string('30btConvexPenetrationDepthSolver\x00');
+emit_start(_ZTVN12btConvexCast10CastResultE)
+emit_32(0);
+emit_32(_ZTIN12btConvexCast10CastResultE);
+emit_32(_ZN12btConvexCast10CastResult9DebugDrawEf__index__);
+emit_32(_ZN12btConvexCast10CastResult15drawCoordSystemERK11btTransform__index__);
+emit_32(_ZN12btConvexCast10CastResultD1Ev__index__);
+emit_32(_ZN12btConvexCast10CastResultD0Ev__index__);
+emit_start(_ZTIN12btConvexCast10CastResultE)
+emit_32(_ZTVN10__cxxabiv117__class_type_infoE+8);
+emit_32(_ZTSN12btConvexCast10CastResultE);
+emit_start(_ZTSN12btConvexCast10CastResultE)
+emit_string('N12btConvexCast10CastResultE\x00');
+emit_start(_ZTVZN16btCollisionWorld13rayTestSingleERK11btTransformS2_P17btCollisionObjectPK16btCollisionShapeS2_RNS_17RayResultCallbackEE15LocalInfoAdder2)
+emit_32(0);
+emit_32(_ZTIZN16btCollisionWorld13rayTestSingleERK11btTransformS2_P17btCollisionObjectPK16btCollisionShapeS2_RNS_17RayResultCallbackEE15LocalInfoAdder2);
+emit_32(_ZZN16btCollisionWorld13rayTestSingleERK11btTransformS2_P17btCollisionObjectPK16btCollisionShapeS2_RNS_17RayResultCallbackEEN15LocalInfoAdder2D1Ev__index__);
+emit_32(_ZZN16btCollisionWorld13rayTestSingleERK11btTransformS2_P17btCollisionObjectPK16btCollisionShapeS2_RNS_17RayResultCallbackEEN15LocalInfoAdder2D0Ev__index__);
+emit_32(_ZNK16btCollisionWorld17RayResultCallback14needsCollisionEP17btBroadphaseProxy__index__);
+emit_32(_ZZN16btCollisionWorld13rayTestSingleERK11btTransformS2_P17btCollisionObjectPK16btCollisionShapeS2_RNS_17RayResultCallbackEEN15LocalInfoAdder215addSingleResultERNS_14LocalRayResultEb__index__);
+emit_start(_ZTIZN16btCollisionWorld13rayTestSingleERK11btTransformS2_P17btCollisionObjectPK16btCollisionShapeS2_RNS_17RayResultCallbackEE15LocalInfoAdder2)
+emit_32(_ZTVN10__cxxabiv120__si_class_type_infoE+8);
+emit_32(_ZTSZN16btCollisionWorld13rayTestSingleERK11btTransformS2_P17btCollisionObjectPK16btCollisionShapeS2_RNS_17RayResultCallbackEE15LocalInfoAdder2);
+emit_32(_ZTIN16btCollisionWorld17RayResultCallbackE);
+emit_start(_ZTSZN16btCollisionWorld13rayTestSingleERK11btTransformS2_P17btCollisionObjectPK16btCollisionShapeS2_RNS_17RayResultCallbackEE15LocalInfoAdder2)
+emit_string('ZN16btCollisionWorld13rayTestSingleERK11btTransformS2_P17btCollisionObjectPK16btCollisionShapeS2_RNS_17RayResultCallbackEE15LocalInfoAdder2\x00');
+emit_start(_ZTVZN16btCollisionWorld17objectQuerySingleEPK13btConvexShapeRK11btTransformS5_P17btCollisionObjectPK16btCollisionShapeS5_RNS_20ConvexResultCallbackEfE14LocalInfoAdder)
+emit_32(0);
+emit_32(_ZTIZN16btCollisionWorld17objectQuerySingleEPK13btConvexShapeRK11btTransformS5_P17btCollisionObjectPK16btCollisionShapeS5_RNS_20ConvexResultCallbackEfE14LocalInfoAdder);
+emit_32(_ZZN16btCollisionWorld17objectQuerySingleEPK13btConvexShapeRK11btTransformS5_P17btCollisionObjectPK16btCollisionShapeS5_RNS_20ConvexResultCallbackEfEN14LocalInfoAdderD1Ev__index__);
+emit_32(_ZZN16btCollisionWorld17objectQuerySingleEPK13btConvexShapeRK11btTransformS5_P17btCollisionObjectPK16btCollisionShapeS5_RNS_20ConvexResultCallbackEfEN14LocalInfoAdderD0Ev__index__);
+emit_32(_ZNK16btCollisionWorld20ConvexResultCallback14needsCollisionEP17btBroadphaseProxy__index__);
+emit_32(_ZZN16btCollisionWorld17objectQuerySingleEPK13btConvexShapeRK11btTransformS5_P17btCollisionObjectPK16btCollisionShapeS5_RNS_20ConvexResultCallbackEfEN14LocalInfoAdder15addSingleResultERNS_17LocalConvexResultEb__index__);
+emit_start(_ZTIZN16btCollisionWorld17objectQuerySingleEPK13btConvexShapeRK11btTransformS5_P17btCollisionObjectPK16btCollisionShapeS5_RNS_20ConvexResultCallbackEfE14LocalInfoAdder)
+emit_32(_ZTVN10__cxxabiv120__si_class_type_infoE+8);
+emit_32(_ZTSZN16btCollisionWorld17objectQuerySingleEPK13btConvexShapeRK11btTransformS5_P17btCollisionObjectPK16btCollisionShapeS5_RNS_20ConvexResultCallbackEfE14LocalInfoAdder);
+emit_32(_ZTIN16btCollisionWorld20ConvexResultCallbackE);
+emit_start(_ZTSZN16btCollisionWorld17objectQuerySingleEPK13btConvexShapeRK11btTransformS5_P17btCollisionObjectPK16btCollisionShapeS5_RNS_20ConvexResultCallbackEfE14LocalInfoAdder)
+emit_string('ZN16btCollisionWorld17objectQuerySingleEPK13btConvexShapeRK11btTransformS5_P17btCollisionObjectPK16btCollisionShapeS5_RNS_20ConvexResultCallbackEfE14LocalInfoAdder\x00');
+emit_start(_ZTI24btBroadphaseAabbCallback)
+emit_32(_ZTVN10__cxxabiv117__class_type_infoE+8);
+emit_32(_ZTS24btBroadphaseAabbCallback);
+emit_start(_ZTS24btBroadphaseAabbCallback)
+emit_string('24btBroadphaseAabbCallback\x00');
+emit_start(_ZTI23btBroadphaseRayCallback)
+emit_32(_ZTVN10__cxxabiv120__si_class_type_infoE+8);
+emit_32(_ZTS23btBroadphaseRayCallback);
+emit_32(_ZTI24btBroadphaseAabbCallback);
+emit_start(_ZTS23btBroadphaseRayCallback)
+emit_string('23btBroadphaseRayCallback\x00');
+emit_start(_ZTV17DebugDrawcallback)
+emit_32(0);
+emit_32(_ZTI17DebugDrawcallback);
+emit_32(_ZN17DebugDrawcallbackD1Ev__index__);
+emit_32(_ZN17DebugDrawcallbackD0Ev__index__);
+emit_32(_ZN17DebugDrawcallback15processTriangleEP9btVector3ii__index__);
+emit_32(_ZN17DebugDrawcallback28internalProcessTriangleIndexEP9btVector3ii__index__);
+emit_32(4294967292);
+emit_32(_ZTI17DebugDrawcallback);
+emit_32(_ZThn4_N17DebugDrawcallbackD1Ev__index__);
+emit_32(_ZThn4_N17DebugDrawcallbackD0Ev__index__);
+emit_32(_ZThn4_N17DebugDrawcallback28internalProcessTriangleIndexEP9btVector3ii__index__);
+emit_start(_ZTI17DebugDrawcallback)
+emit_32(_ZTVN10__cxxabiv121__vmi_class_type_infoE+8);
+emit_32(_ZTS17DebugDrawcallback);
+emit_32(0);
+emit_32(2);
+emit_32(_ZTI18btTriangleCallback);
+emit_32(2);
+emit_32(_ZTI31btInternalTriangleIndexCallback);
+emit_32(1026);
+emit_start(_ZTS17DebugDrawcallback)
+emit_string('17DebugDrawcallback\x00');
+emit_start(_ZTI18btTriangleCallback)
+emit_32(_ZTVN10__cxxabiv117__class_type_infoE+8);
+emit_32(_ZTS18btTriangleCallback);
+emit_start(_ZTS18btTriangleCallback)
+emit_string('18btTriangleCallback\x00');
+emit_start(_ZTI31btInternalTriangleIndexCallback)
+emit_32(_ZTVN10__cxxabiv117__class_type_infoE+8);
+emit_32(_ZTS31btInternalTriangleIndexCallback);
+emit_start(_ZTS31btInternalTriangleIndexCallback)
+emit_string('31btInternalTriangleIndexCallback\x00');
+emit_start(_ZTV16btCollisionWorld)
+emit_32(0);
+emit_32(_ZTI16btCollisionWorld);
+emit_32(_ZN16btCollisionWorldD1Ev__index__);
+emit_32(_ZN16btCollisionWorldD0Ev__index__);
+emit_32(_ZN16btCollisionWorld11updateAabbsEv__index__);
+emit_32(_ZN16btCollisionWorld14setDebugDrawerEP12btIDebugDraw__index__);
+emit_32(_ZN16btCollisionWorld14getDebugDrawerEv__index__);
+emit_32(_ZN16btCollisionWorld14debugDrawWorldEv__index__);
+emit_32(_ZN16btCollisionWorld15debugDrawObjectERK11btTransformPK16btCollisionShapeRK9btVector3__index__);
+emit_32(_ZNK16btCollisionWorld7rayTestERK9btVector3S2_RNS_17RayResultCallbackE__index__);
+emit_32(_ZN16btCollisionWorld18addCollisionObjectEP17btCollisionObjectss__index__);
+emit_32(_ZN16btCollisionWorld21removeCollisionObjectEP17btCollisionObject__index__);
+emit_32(_ZN16btCollisionWorld33performDiscreteCollisionDetectionEv__index__);
+emit_32(_ZN16btCollisionWorld9serializeEP12btSerializer__index__);
+emit_start(_ZTI16btCollisionWorld)
+emit_32(_ZTVN10__cxxabiv117__class_type_infoE+8);
+emit_32(_ZTS16btCollisionWorld);
+emit_start(_ZTS16btCollisionWorld)
+emit_string('16btCollisionWorld\x00');
+emit_start(_ZTI16btManifoldResult)
+emit_32(_ZTVN10__cxxabiv120__si_class_type_infoE+8);
+emit_32(_ZTS16btManifoldResult);
+emit_32(_ZTIN36btDiscreteCollisionDetectorInterface6ResultE);
+emit_start(_ZTS16btManifoldResult)
+emit_string('16btManifoldResult\x00');
+emit_start(_ZTV21btSingleSweepCallback)
+emit_32(0);
+emit_32(_ZTI21btSingleSweepCallback);
+emit_32(_ZN21btSingleSweepCallbackD1Ev__index__);
+emit_32(_ZN21btSingleSweepCallbackD0Ev__index__);
+emit_32(_ZN21btSingleSweepCallback7processEPK17btBroadphaseProxy__index__);
+emit_start(_ZTI21btSingleSweepCallback)
+emit_32(_ZTVN10__cxxabiv120__si_class_type_infoE+8);
+emit_32(_ZTS21btSingleSweepCallback);
+emit_32(_ZTI23btBroadphaseRayCallback);
+emit_start(_ZTS21btSingleSweepCallback)
+emit_string('21btSingleSweepCallback\x00');
+emit_start(_ZTV19btSingleRayCallback)
+emit_32(0);
+emit_32(_ZTI19btSingleRayCallback);
+emit_32(_ZN19btSingleRayCallbackD1Ev__index__);
+emit_32(_ZN19btSingleRayCallbackD0Ev__index__);
+emit_32(_ZN19btSingleRayCallback7processEPK17btBroadphaseProxy__index__);
+emit_start(_ZTI19btSingleRayCallback)
+emit_32(_ZTVN10__cxxabiv120__si_class_type_infoE+8);
+emit_32(_ZTS19btSingleRayCallback);
+emit_32(_ZTI23btBroadphaseRayCallback);
+emit_start(_ZTS19btSingleRayCallback)
+emit_string('19btSingleRayCallback\x00');
+emit_start(_2E_str382)
+emit_string('index < m_cachedPoints\x00');
+emit_start(_2E_str483)
+emit_string('../../../../src/BulletCollision/NarrowPhaseCollision/btPersistentManifold.h\x00');
+emit_start(_2E_str584)
+emit_string('s != btScalar(0.0)\x00');
+emit_start(_2E_str685)
+emit_string('../../../../src/LinearMath/btQuaternion.h\x00');
+emit_start(_2E_str786)
+emit_string('collisionObject\x00');
+emit_start(_2E_str887)
+emit_string('../../../../src/BulletCollision/CollisionDispatch/btCollisionWorld.cpp\x00');
+emit_start(_2E_str988)
+emit_string('m_collisionObjects.findLinearSearch(collisionObject) == m_collisionObjects.size()\x00');
+emit_start(_ZTVZN16btCollisionWorld17objectQuerySingleEPK13btConvexShapeRK11btTransformS5_P17btCollisionObjectPK16btCollisionShapeS5_RNS_20ConvexResultCallbackEfE32BridgeTriangleConvexcastCallback_0)
+emit_32(0);
+emit_32(_ZTIZN16btCollisionWorld17objectQuerySingleEPK13btConvexShapeRK11btTransformS5_P17btCollisionObjectPK16btCollisionShapeS5_RNS_20ConvexResultCallbackEfE32BridgeTriangleConvexcastCallback_0);
+emit_32(_ZZN16btCollisionWorld17objectQuerySingleEPK13btConvexShapeRK11btTransformS5_P17btCollisionObjectPK16btCollisionShapeS5_RNS_20ConvexResultCallbackEfEN32BridgeTriangleConvexcastCallbackD1E_0v__index__);
+emit_32(_ZZN16btCollisionWorld17objectQuerySingleEPK13btConvexShapeRK11btTransformS5_P17btCollisionObjectPK16btCollisionShapeS5_RNS_20ConvexResultCallbackEfEN32BridgeTriangleConvexcastCallbackD0E_0v__index__);
+emit_32(_ZN28btTriangleConvexcastCallback15processTriangleEP9btVector3ii__index__);
+emit_32(_ZZN16btCollisionWorld17objectQuerySingleEPK13btConvexShapeRK11btTransformS5_P17btCollisionObjectPK16btCollisionShapeS5_RNS_20ConvexResultCallbackEfEN32BridgeTriangleConvexcastCallback9reportHitE_0RK9btVector3SG_fii__index__);
+emit_start(_ZTIZN16btCollisionWorld17objectQuerySingleEPK13btConvexShapeRK11btTransformS5_P17btCollisionObjectPK16btCollisionShapeS5_RNS_20ConvexResultCallbackEfE32BridgeTriangleConvexcastCallback_0)
+emit_32(_ZTVN10__cxxabiv120__si_class_type_infoE+8);
+emit_32(_ZTSZN16btCollisionWorld17objectQuerySingleEPK13btConvexShapeRK11btTransformS5_P17btCollisionObjectPK16btCollisionShapeS5_RNS_20ConvexResultCallbackEfE32BridgeTriangleConvexcastCallback_0);
+emit_32(_ZTI28btTriangleConvexcastCallback);
+emit_start(_ZTSZN16btCollisionWorld17objectQuerySingleEPK13btConvexShapeRK11btTransformS5_P17btCollisionObjectPK16btCollisionShapeS5_RNS_20ConvexResultCallbackEfE32BridgeTriangleConvexcastCallback_0)
+emit_string('ZN16btCollisionWorld17objectQuerySingleEPK13btConvexShapeRK11btTransformS5_P17btCollisionObjectPK16btCollisionShapeS5_RNS_20ConvexResultCallbackEfE32BridgeTriangleConvexcastCallback_0\x00');
+emit_start(_ZTI28btTriangleConvexcastCallback)
+emit_32(_ZTVN10__cxxabiv120__si_class_type_infoE+8);
+emit_32(_ZTS28btTriangleConvexcastCallback);
+emit_32(_ZTI18btTriangleCallback);
+emit_start(_ZTS28btTriangleConvexcastCallback)
+emit_string('28btTriangleConvexcastCallback\x00');
+emit_start(_ZTVZN16btCollisionWorld17objectQuerySingleEPK13btConvexShapeRK11btTransformS5_P17btCollisionObjectPK16btCollisionShapeS5_RNS_20ConvexResultCallbackEfE32BridgeTriangleConvexcastCallback)
+emit_32(0);
+emit_32(_ZTIZN16btCollisionWorld17objectQuerySingleEPK13btConvexShapeRK11btTransformS5_P17btCollisionObjectPK16btCollisionShapeS5_RNS_20ConvexResultCallbackEfE32BridgeTriangleConvexcastCallback);
+emit_32(_ZZN16btCollisionWorld17objectQuerySingleEPK13btConvexShapeRK11btTransformS5_P17btCollisionObjectPK16btCollisionShapeS5_RNS_20ConvexResultCallbackEfEN32BridgeTriangleConvexcastCallbackD1Ev__index__);
+emit_32(_ZZN16btCollisionWorld17objectQuerySingleEPK13btConvexShapeRK11btTransformS5_P17btCollisionObjectPK16btCollisionShapeS5_RNS_20ConvexResultCallbackEfEN32BridgeTriangleConvexcastCallbackD0Ev__index__);
+emit_32(_ZN28btTriangleConvexcastCallback15processTriangleEP9btVector3ii__index__);
+emit_32(_ZZN16btCollisionWorld17objectQuerySingleEPK13btConvexShapeRK11btTransformS5_P17btCollisionObjectPK16btCollisionShapeS5_RNS_20ConvexResultCallbackEfEN32BridgeTriangleConvexcastCallback9reportHitERK9btVector3SG_fii__index__);
+emit_start(_ZTIZN16btCollisionWorld17objectQuerySingleEPK13btConvexShapeRK11btTransformS5_P17btCollisionObjectPK16btCollisionShapeS5_RNS_20ConvexResultCallbackEfE32BridgeTriangleConvexcastCallback)
+emit_32(_ZTVN10__cxxabiv120__si_class_type_infoE+8);
+emit_32(_ZTSZN16btCollisionWorld17objectQuerySingleEPK13btConvexShapeRK11btTransformS5_P17btCollisionObjectPK16btCollisionShapeS5_RNS_20ConvexResultCallbackEfE32BridgeTriangleConvexcastCallback);
+emit_32(_ZTI28btTriangleConvexcastCallback);
+emit_start(_ZTSZN16btCollisionWorld17objectQuerySingleEPK13btConvexShapeRK11btTransformS5_P17btCollisionObjectPK16btCollisionShapeS5_RNS_20ConvexResultCallbackEfE32BridgeTriangleConvexcastCallback)
+emit_string('ZN16btCollisionWorld17objectQuerySingleEPK13btConvexShapeRK11btTransformS5_P17btCollisionObjectPK16btCollisionShapeS5_RNS_20ConvexResultCallbackEfE32BridgeTriangleConvexcastCallback\x00');
+emit_start(_ZTVZN16btCollisionWorld13rayTestSingleERK11btTransformS2_P17btCollisionObjectPK16btCollisionShapeS2_RNS_17RayResultCallbackEE29BridgeTriangleRaycastCallback_0)
+emit_32(0);
+emit_32(_ZTIZN16btCollisionWorld13rayTestSingleERK11btTransformS2_P17btCollisionObjectPK16btCollisionShapeS2_RNS_17RayResultCallbackEE29BridgeTriangleRaycastCallback_0);
+emit_32(_ZZN16btCollisionWorld13rayTestSingleERK11btTransformS2_P17btCollisionObjectPK16btCollisionShapeS2_RNS_17RayResultCallbackEEN29BridgeTriangleRaycastCallbackD1E_0v__index__);
+emit_32(_ZZN16btCollisionWorld13rayTestSingleERK11btTransformS2_P17btCollisionObjectPK16btCollisionShapeS2_RNS_17RayResultCallbackEEN29BridgeTriangleRaycastCallbackD0E_0v__index__);
+emit_32(_ZN25btTriangleRaycastCallback15processTriangleEP9btVector3ii__index__);
+emit_32(_ZZN16btCollisionWorld13rayTestSingleERK11btTransformS2_P17btCollisionObjectPK16btCollisionShapeS2_RNS_17RayResultCallbackEEN29BridgeTriangleRaycastCallback9reportHitE_0RK9btVector3fii__index__);
+emit_start(_ZTIZN16btCollisionWorld13rayTestSingleERK11btTransformS2_P17btCollisionObjectPK16btCollisionShapeS2_RNS_17RayResultCallbackEE29BridgeTriangleRaycastCallback_0)
+emit_32(_ZTVN10__cxxabiv120__si_class_type_infoE+8);
+emit_32(_ZTSZN16btCollisionWorld13rayTestSingleERK11btTransformS2_P17btCollisionObjectPK16btCollisionShapeS2_RNS_17RayResultCallbackEE29BridgeTriangleRaycastCallback_0);
+emit_32(_ZTI25btTriangleRaycastCallback);
+emit_start(_ZTSZN16btCollisionWorld13rayTestSingleERK11btTransformS2_P17btCollisionObjectPK16btCollisionShapeS2_RNS_17RayResultCallbackEE29BridgeTriangleRaycastCallback_0)
+emit_string('ZN16btCollisionWorld13rayTestSingleERK11btTransformS2_P17btCollisionObjectPK16btCollisionShapeS2_RNS_17RayResultCallbackEE29BridgeTriangleRaycastCallback_0\x00');
+emit_start(_ZTI25btTriangleRaycastCallback)
+emit_32(_ZTVN10__cxxabiv120__si_class_type_infoE+8);
+emit_32(_ZTS25btTriangleRaycastCallback);
+emit_32(_ZTI18btTriangleCallback);
+emit_start(_ZTS25btTriangleRaycastCallback)
+emit_string('25btTriangleRaycastCallback\x00');
+emit_start(_ZTVZN16btCollisionWorld13rayTestSingleERK11btTransformS2_P17btCollisionObjectPK16btCollisionShapeS2_RNS_17RayResultCallbackEE29BridgeTriangleRaycastCallback)
+emit_32(0);
+emit_32(_ZTIZN16btCollisionWorld13rayTestSingleERK11btTransformS2_P17btCollisionObjectPK16btCollisionShapeS2_RNS_17RayResultCallbackEE29BridgeTriangleRaycastCallback);
+emit_32(_ZZN16btCollisionWorld13rayTestSingleERK11btTransformS2_P17btCollisionObjectPK16btCollisionShapeS2_RNS_17RayResultCallbackEEN29BridgeTriangleRaycastCallbackD1Ev__index__);
+emit_32(_ZZN16btCollisionWorld13rayTestSingleERK11btTransformS2_P17btCollisionObjectPK16btCollisionShapeS2_RNS_17RayResultCallbackEEN29BridgeTriangleRaycastCallbackD0Ev__index__);
+emit_32(_ZN25btTriangleRaycastCallback15processTriangleEP9btVector3ii__index__);
+emit_32(_ZZN16btCollisionWorld13rayTestSingleERK11btTransformS2_P17btCollisionObjectPK16btCollisionShapeS2_RNS_17RayResultCallbackEEN29BridgeTriangleRaycastCallback9reportHitERK9btVector3fii__index__);
+emit_start(_ZTIZN16btCollisionWorld13rayTestSingleERK11btTransformS2_P17btCollisionObjectPK16btCollisionShapeS2_RNS_17RayResultCallbackEE29BridgeTriangleRaycastCallback)
+emit_32(_ZTVN10__cxxabiv120__si_class_type_infoE+8);
+emit_32(_ZTSZN16btCollisionWorld13rayTestSingleERK11btTransformS2_P17btCollisionObjectPK16btCollisionShapeS2_RNS_17RayResultCallbackEE29BridgeTriangleRaycastCallback);
+emit_32(_ZTI25btTriangleRaycastCallback);
+emit_start(_ZTSZN16btCollisionWorld13rayTestSingleERK11btTransformS2_P17btCollisionObjectPK16btCollisionShapeS2_RNS_17RayResultCallbackEE29BridgeTriangleRaycastCallback)
+emit_string('ZN16btCollisionWorld13rayTestSingleERK11btTransformS2_P17btCollisionObjectPK16btCollisionShapeS2_RNS_17RayResultCallbackEE29BridgeTriangleRaycastCallback\x00');
+emit_start(_2E_str1089)
+emit_string('convexSweepTest\x00');
+emit_start(_2E_str1190)
+emit_string('performDiscreteCollisionDetection\x00');
+emit_start(_2E_str1291)
+emit_string('calculateOverlappingPairs\x00');
+emit_start(_2E_str1392)
+emit_string('dispatchAllCollisionPairs\x00');
+emit_start(_2E_str1493)
+emit_string('convexSweepCompound\x00');
+emit_start(_2E_str1594)
+emit_string('Overflow in AABB, object removed from simulation\x00');
+emit_start(_2E_str1695)
+emit_string('If you can reproduce this, please email bugs@continuousphysics.com\x0a\x00');
+emit_start(_2E_str1796)
+emit_string('Please include above information, your Platform, version of OS.\x0a\x00');
+emit_start(_2E_str1897)
+emit_string('Thanks.\x0a\x00');
+emit_start(_2E_str1998)
+emit_string('updateAabbs\x00');
+emit_start(_ZTV22btCompoundLeafCallback)
+emit_32(0);
+emit_32(_ZTI22btCompoundLeafCallback);
+emit_32(_ZN22btCompoundLeafCallbackD1Ev__index__);
+emit_32(_ZN22btCompoundLeafCallbackD0Ev__index__);
+emit_32(_ZN6btDbvt8ICollide7ProcessEPK10btDbvtNodeS3___index__);
+emit_32(_ZN22btCompoundLeafCallback7ProcessEPK10btDbvtNode__index__);
+emit_32(_ZN6btDbvt8ICollide7ProcessEPK10btDbvtNodef__index__);
+emit_32(_ZN6btDbvt8ICollide7DescentEPK10btDbvtNode__index__);
+emit_32(_ZN6btDbvt8ICollide9AllLeavesEPK10btDbvtNode__index__);
+emit_start(_ZTI22btCompoundLeafCallback)
+emit_32(_ZTVN10__cxxabiv120__si_class_type_infoE+8);
+emit_32(_ZTS22btCompoundLeafCallback);
+emit_32(_ZTIN6btDbvt8ICollideE);
+emit_start(_ZTS22btCompoundLeafCallback)
+emit_string('22btCompoundLeafCallback\x00');
+emit_start(_2E_str99)
+emit_string('colObj->getCollisionShape()->isCompound()\x00');
+emit_start(_2E_str1100)
+emit_string('../../../../src/BulletCollision/CollisionDispatch/btCompoundCollisionAlgorithm.cpp\x00');
+emit_start(_2E_str2101)
+emit_string('localAabbMin.getX() <= localAabbMax.getX()\x00');
+emit_start(_2E_str3102)
+emit_string('../../../../src/LinearMath/btAabbUtil2.h\x00');
+emit_start(_2E_str4103)
+emit_string('localAabbMin.getY() <= localAabbMax.getY()\x00');
+emit_start(_2E_str5104)
+emit_string('localAabbMin.getZ() <= localAabbMax.getZ()\x00');
+emit_start(_2E_str6105)
+emit_string('index>=0\x00');
+emit_start(_2E_str7106)
+emit_string('index<compoundShape->getNumChildShapes()\x00');
+emit_start(_ZTV28btCompoundCollisionAlgorithm)
+emit_32(0);
+emit_32(_ZTI28btCompoundCollisionAlgorithm);
+emit_32(_ZN28btCompoundCollisionAlgorithmD1Ev__index__);
+emit_32(_ZN28btCompoundCollisionAlgorithmD0Ev__index__);
+emit_32(_ZN28btCompoundCollisionAlgorithm16processCollisionEP17btCollisionObjectS1_RK16btDispatcherInfoP16btManifoldResult__index__);
+emit_32(_ZN28btCompoundCollisionAlgorithm21calculateTimeOfImpactEP17btCollisionObjectS1_RK16btDispatcherInfoP16btManifoldResult__index__);
+emit_32(_ZN28btCompoundCollisionAlgorithm22getAllContactManifoldsER20btAlignedObjectArrayIP20btPersistentManifoldE__index__);
+emit_start(_ZTI28btCompoundCollisionAlgorithm)
+emit_32(_ZTVN10__cxxabiv120__si_class_type_infoE+8);
+emit_32(_ZTS28btCompoundCollisionAlgorithm);
+emit_32(_ZTI30btActivatingCollisionAlgorithm);
+emit_start(_ZTS28btCompoundCollisionAlgorithm)
+emit_string('28btCompoundCollisionAlgorithm\x00');
+emit_start(_2E_str109)
+emit_string('Triangle\x00');
+emit_start(_ZTV24btConvexTriangleCallback)
+emit_32(0);
+emit_32(_ZTI24btConvexTriangleCallback);
+emit_32(_ZN24btConvexTriangleCallbackD1Ev__index__);
+emit_32(_ZN24btConvexTriangleCallbackD0Ev__index__);
+emit_32(_ZN24btConvexTriangleCallback15processTriangleEP9btVector3ii__index__);
+emit_start(_ZTI24btConvexTriangleCallback)
+emit_32(_ZTVN10__cxxabiv120__si_class_type_infoE+8);
+emit_32(_ZTS24btConvexTriangleCallback);
+emit_32(_ZTI18btTriangleCallback);
+emit_start(_ZTS24btConvexTriangleCallback)
+emit_string('24btConvexTriangleCallback\x00');
+emit_start(_ZTVZN33btConvexConcaveCollisionAlgorithm21calculateTimeOfImpactEP17btCollisionObjectS1_RK16btDispatcherInfoP16btManifoldResultE31LocalTriangleSphereCastCallback)
+emit_32(0);
+emit_32(_ZTIZN33btConvexConcaveCollisionAlgorithm21calculateTimeOfImpactEP17btCollisionObjectS1_RK16btDispatcherInfoP16btManifoldResultE31LocalTriangleSphereCastCallback);
+emit_32(_ZZN33btConvexConcaveCollisionAlgorithm21calculateTimeOfImpactEP17btCollisionObjectS1_RK16btDispatcherInfoP16btManifoldResultEN31LocalTriangleSphereCastCallbackD1Ev__index__);
+emit_32(_ZZN33btConvexConcaveCollisionAlgorithm21calculateTimeOfImpactEP17btCollisionObjectS1_RK16btDispatcherInfoP16btManifoldResultEN31LocalTriangleSphereCastCallbackD0Ev__index__);
+emit_32(_ZZN33btConvexConcaveCollisionAlgorithm21calculateTimeOfImpactEP17btCollisionObjectS1_RK16btDispatcherInfoP16btManifoldResultEN31LocalTriangleSphereCastCallback15processTriangleEP9btVector3ii__index__);
+emit_start(_ZTIZN33btConvexConcaveCollisionAlgorithm21calculateTimeOfImpactEP17btCollisionObjectS1_RK16btDispatcherInfoP16btManifoldResultE31LocalTriangleSphereCastCallback)
+emit_32(_ZTVN10__cxxabiv120__si_class_type_infoE+8);
+emit_32(_ZTSZN33btConvexConcaveCollisionAlgorithm21calculateTimeOfImpactEP17btCollisionObjectS1_RK16btDispatcherInfoP16btManifoldResultE31LocalTriangleSphereCastCallback);
+emit_32(_ZTI18btTriangleCallback);
+emit_start(_ZTSZN33btConvexConcaveCollisionAlgorithm21calculateTimeOfImpactEP17btCollisionObjectS1_RK16btDispatcherInfoP16btManifoldResultE31LocalTriangleSphereCastCallback)
+emit_string('ZN33btConvexConcaveCollisionAlgorithm21calculateTimeOfImpactEP17btCollisionObjectS1_RK16btDispatcherInfoP16btManifoldResultE31LocalTriangleSphereCastCallback\x00');
+emit_start(_ZTV15btTriangleShape)
+emit_32(0);
+emit_32(_ZTI15btTriangleShape);
+emit_32(_ZN15btTriangleShapeD1Ev__index__);
+emit_32(_ZN15btTriangleShapeD0Ev__index__);
+emit_32(_ZNK15btTriangleShape7getAabbERK11btTransformR9btVector3S4___index__);
+emit_32(_ZNK16btCollisionShape17getBoundingSphereER9btVector3Rf__index__);
+emit_32(_ZNK16btCollisionShape20getAngularMotionDiscEv__index__);
+emit_32(_ZNK16btCollisionShape27getContactBreakingThresholdEf__index__);
+emit_32(_ZN21btConvexInternalShape15setLocalScalingERK9btVector3__index__);
+emit_32(_ZNK21btConvexInternalShape15getLocalScalingEv__index__);
+emit_32(_ZNK15btTriangleShape21calculateLocalInertiaEfR9btVector3__index__);
+emit_32(_ZNK15btTriangleShape7getNameEv__index__);
+emit_32(_ZN21btConvexInternalShape9setMarginEf__index__);
+emit_32(_ZNK21btConvexInternalShape9getMarginEv__index__);
+emit_32(_ZNK21btConvexInternalShape28calculateSerializeBufferSizeEv__index__);
+emit_32(_ZNK21btConvexInternalShape9serializeEPvP12btSerializer__index__);
+emit_32(_ZNK16btCollisionShape20serializeSingleShapeEP12btSerializer__index__);
+emit_32(_ZNK21btConvexInternalShape24localGetSupportingVertexERK9btVector3__index__);
+emit_32(_ZNK15btTriangleShape37localGetSupportingVertexWithoutMarginERK9btVector3__index__);
+emit_32(_ZNK15btTriangleShape49batchedUnitVectorGetSupportingVertexWithoutMarginEPK9btVector3PS0_i__index__);
+emit_32(_ZNK21btConvexInternalShape11getAabbSlowERK11btTransformR9btVector3S4___index__);
+emit_32(_ZNK15btTriangleShape36getNumPreferredPenetrationDirectionsEv__index__);
+emit_32(_ZNK15btTriangleShape32getPreferredPenetrationDirectionEiR9btVector3__index__);
+emit_32(_ZNK15btTriangleShape14getNumVerticesEv__index__);
+emit_32(_ZNK15btTriangleShape11getNumEdgesEv__index__);
+emit_32(_ZNK15btTriangleShape7getEdgeEiR9btVector3S1___index__);
+emit_32(_ZNK15btTriangleShape9getVertexEiR9btVector3__index__);
+emit_32(_ZNK15btTriangleShape12getNumPlanesEv__index__);
+emit_32(_ZNK15btTriangleShape8getPlaneER9btVector3S1_i__index__);
+emit_32(_ZNK15btTriangleShape8isInsideERK9btVector3f__index__);
+emit_32(_ZNK15btTriangleShape16getPlaneEquationEiR9btVector3S1___index__);
+emit_start(_ZTI15btTriangleShape)
+emit_32(_ZTVN10__cxxabiv120__si_class_type_infoE+8);
+emit_32(_ZTS15btTriangleShape);
+emit_32(_ZTI23btPolyhedralConvexShape);
+emit_start(_ZTS15btTriangleShape)
+emit_string('15btTriangleShape\x00');
+emit_start(_ZTI23btPolyhedralConvexShape)
+emit_32(_ZTVN10__cxxabiv120__si_class_type_infoE+8);
+emit_32(_ZTS23btPolyhedralConvexShape);
+emit_32(_ZTI21btConvexInternalShape);
+emit_start(_ZTS23btPolyhedralConvexShape)
+emit_string('23btPolyhedralConvexShape\x00');
+emit_start(_ZTI21btConvexInternalShape)
+emit_32(_ZTVN10__cxxabiv120__si_class_type_infoE+8);
+emit_32(_ZTS21btConvexInternalShape);
+emit_32(_ZTI13btConvexShape);
+emit_start(_ZTS21btConvexInternalShape)
+emit_string('21btConvexInternalShape\x00');
+emit_start(_ZTI13btConvexShape)
+emit_32(_ZTVN10__cxxabiv120__si_class_type_infoE+8);
+emit_32(_ZTS13btConvexShape);
+emit_32(_ZTI16btCollisionShape);
+emit_start(_ZTS13btConvexShape)
+emit_string('13btConvexShape\x00');
+emit_start(_ZTI16btCollisionShape)
+emit_32(_ZTVN10__cxxabiv117__class_type_infoE+8);
+emit_32(_ZTS16btCollisionShape);
+emit_start(_ZTS16btCollisionShape)
+emit_string('16btCollisionShape\x00');
+emit_start(_2E_str1110)
+emit_string('btConvexInternalShapeData\x00');
+emit_start(_2E_str3112)
+emit_string('../../../../src/BulletCollision/CollisionShapes/btTriangleShape.h\x00');
+emit_start(_ZTV33btConvexConcaveCollisionAlgorithm)
+emit_32(0);
+emit_32(_ZTI33btConvexConcaveCollisionAlgorithm);
+emit_32(_ZN33btConvexConcaveCollisionAlgorithmD1Ev__index__);
+emit_32(_ZN33btConvexConcaveCollisionAlgorithmD0Ev__index__);
+emit_32(_ZN33btConvexConcaveCollisionAlgorithm16processCollisionEP17btCollisionObjectS1_RK16btDispatcherInfoP16btManifoldResult__index__);
+emit_32(_ZN33btConvexConcaveCollisionAlgorithm21calculateTimeOfImpactEP17btCollisionObjectS1_RK16btDispatcherInfoP16btManifoldResult__index__);
+emit_32(_ZN33btConvexConcaveCollisionAlgorithm22getAllContactManifoldsER20btAlignedObjectArrayIP20btPersistentManifoldE__index__);
+emit_start(_ZTI33btConvexConcaveCollisionAlgorithm)
+emit_32(_ZTVN10__cxxabiv120__si_class_type_infoE+8);
+emit_32(_ZTS33btConvexConcaveCollisionAlgorithm);
+emit_32(_ZTI30btActivatingCollisionAlgorithm);
+emit_start(_ZTS33btConvexConcaveCollisionAlgorithm)
+emit_string('33btConvexConcaveCollisionAlgorithm\x00');
+emit_start(_ZTI30btCollisionAlgorithmCreateFunc)
+emit_32(_ZTVN10__cxxabiv117__class_type_infoE+8);
+emit_32(_ZTS30btCollisionAlgorithmCreateFunc);
+emit_start(_ZTS30btCollisionAlgorithmCreateFunc)
+emit_string('30btCollisionAlgorithmCreateFunc\x00');
+emit_start(_ZTVN23btConvexConvexAlgorithm10CreateFuncE)
+emit_32(0);
+emit_32(_ZTIN23btConvexConvexAlgorithm10CreateFuncE);
+emit_32(_ZN23btConvexConvexAlgorithm10CreateFuncD1Ev__index__);
+emit_32(_ZN23btConvexConvexAlgorithm10CreateFuncD0Ev__index__);
+emit_32(_ZN23btConvexConvexAlgorithm10CreateFunc24CreateCollisionAlgorithmER36btCollisionAlgorithmConstructionInfoP17btCollisionObjectS4___index__);
+emit_start(_ZTIN23btConvexConvexAlgorithm10CreateFuncE)
+emit_32(_ZTVN10__cxxabiv120__si_class_type_infoE+8);
+emit_32(_ZTSN23btConvexConvexAlgorithm10CreateFuncE);
+emit_32(_ZTI30btCollisionAlgorithmCreateFunc);
+emit_start(_ZTSN23btConvexConvexAlgorithm10CreateFuncE)
+emit_string('N23btConvexConvexAlgorithm10CreateFuncE\x00');
+emit_start(_ZTV24btPerturbedContactResult)
+emit_32(0);
+emit_32(_ZTI24btPerturbedContactResult);
+emit_32(_ZN24btPerturbedContactResultD1Ev__index__);
+emit_32(_ZN24btPerturbedContactResultD0Ev__index__);
+emit_32(_ZN16btManifoldResult20setShapeIdentifiersAEii__index__);
+emit_32(_ZN16btManifoldResult20setShapeIdentifiersBEii__index__);
+emit_32(_ZN24btPerturbedContactResult15addContactPointERK9btVector3S2_f__index__);
+emit_start(_ZTI24btPerturbedContactResult)
+emit_32(_ZTVN10__cxxabiv120__si_class_type_infoE+8);
+emit_32(_ZTS24btPerturbedContactResult);
+emit_32(_ZTI16btManifoldResult);
+emit_start(_ZTS24btPerturbedContactResult)
+emit_string('24btPerturbedContactResult\x00');
+emit_start(_2E_str115)
+emit_string('d != btScalar(0.0)\x00');
+emit_start(_2E_str4119)
+emit_string('normalOnB.length2()>=(SIMD_EPSILON*SIMD_EPSILON)\x00');
+emit_start(_2E_str5120)
+emit_string('../../../../src/BulletCollision/CollisionDispatch/btConvexConvexAlgorithm.cpp\x00');
+emit_start(_ZTV23btConvexConvexAlgorithm)
+emit_32(0);
+emit_32(_ZTI23btConvexConvexAlgorithm);
+emit_32(_ZN23btConvexConvexAlgorithmD1Ev__index__);
+emit_32(_ZN23btConvexConvexAlgorithmD0Ev__index__);
+emit_32(_ZN23btConvexConvexAlgorithm16processCollisionEP17btCollisionObjectS1_RK16btDispatcherInfoP16btManifoldResult__index__);
+emit_32(_ZN23btConvexConvexAlgorithm21calculateTimeOfImpactEP17btCollisionObjectS1_RK16btDispatcherInfoP16btManifoldResult__index__);
+emit_32(_ZN23btConvexConvexAlgorithm22getAllContactManifoldsER20btAlignedObjectArrayIP20btPersistentManifoldE__index__);
+emit_start(_ZTI23btConvexConvexAlgorithm)
+emit_32(_ZTVN10__cxxabiv120__si_class_type_infoE+8);
+emit_32(_ZTS23btConvexConvexAlgorithm);
+emit_32(_ZTI30btActivatingCollisionAlgorithm);
+emit_start(_ZTS23btConvexConvexAlgorithm)
+emit_string('23btConvexConvexAlgorithm\x00');
+emit_start(_ZTV31btConvexPlaneCollisionAlgorithm)
+emit_32(0);
+emit_32(_ZTI31btConvexPlaneCollisionAlgorithm);
+emit_32(_ZN31btConvexPlaneCollisionAlgorithmD1Ev__index__);
+emit_32(_ZN31btConvexPlaneCollisionAlgorithmD0Ev__index__);
+emit_32(_ZN31btConvexPlaneCollisionAlgorithm16processCollisionEP17btCollisionObjectS1_RK16btDispatcherInfoP16btManifoldResult__index__);
+emit_32(_ZN31btConvexPlaneCollisionAlgorithm21calculateTimeOfImpactEP17btCollisionObjectS1_RK16btDispatcherInfoP16btManifoldResult__index__);
+emit_32(_ZN31btConvexPlaneCollisionAlgorithm22getAllContactManifoldsER20btAlignedObjectArrayIP20btPersistentManifoldE__index__);
+emit_start(_ZTI31btConvexPlaneCollisionAlgorithm)
+emit_32(_ZTVN10__cxxabiv120__si_class_type_infoE+8);
+emit_32(_ZTS31btConvexPlaneCollisionAlgorithm);
+emit_32(_ZTI20btCollisionAlgorithm);
+emit_start(_ZTS31btConvexPlaneCollisionAlgorithm)
+emit_string('31btConvexPlaneCollisionAlgorithm\x00');
+emit_start(_ZTVN31btConvexPlaneCollisionAlgorithm10CreateFuncE)
+emit_32(0);
+emit_32(_ZTIN31btConvexPlaneCollisionAlgorithm10CreateFuncE);
+emit_32(_ZN31btConvexPlaneCollisionAlgorithm10CreateFuncD1Ev__index__);
+emit_32(_ZN31btConvexPlaneCollisionAlgorithm10CreateFuncD0Ev__index__);
+emit_32(_ZN31btConvexPlaneCollisionAlgorithm10CreateFunc24CreateCollisionAlgorithmER36btCollisionAlgorithmConstructionInfoP17btCollisionObjectS4___index__);
+emit_start(_ZTIN31btConvexPlaneCollisionAlgorithm10CreateFuncE)
+emit_32(_ZTVN10__cxxabiv120__si_class_type_infoE+8);
+emit_32(_ZTSN31btConvexPlaneCollisionAlgorithm10CreateFuncE);
+emit_32(_ZTI30btCollisionAlgorithmCreateFunc);
+emit_start(_ZTSN31btConvexPlaneCollisionAlgorithm10CreateFuncE)
+emit_string('N31btConvexPlaneCollisionAlgorithm10CreateFuncE\x00');
+emit_start(_ZTI24btCollisionConfiguration)
+emit_32(_ZTVN10__cxxabiv117__class_type_infoE+8);
+emit_32(_ZTS24btCollisionConfiguration);
+emit_start(_ZTS24btCollisionConfiguration)
+emit_string('24btCollisionConfiguration\x00');
+emit_start(_ZTVN33btConvexConcaveCollisionAlgorithm10CreateFuncE)
+emit_32(0);
+emit_32(_ZTIN33btConvexConcaveCollisionAlgorithm10CreateFuncE);
+emit_32(_ZN33btConvexConcaveCollisionAlgorithm10CreateFuncD1Ev__index__);
+emit_32(_ZN33btConvexConcaveCollisionAlgorithm10CreateFuncD0Ev__index__);
+emit_32(_ZN33btConvexConcaveCollisionAlgorithm10CreateFunc24CreateCollisionAlgorithmER36btCollisionAlgorithmConstructionInfoP17btCollisionObjectS4___index__);
+emit_start(_ZTIN33btConvexConcaveCollisionAlgorithm10CreateFuncE)
+emit_32(_ZTVN10__cxxabiv120__si_class_type_infoE+8);
+emit_32(_ZTSN33btConvexConcaveCollisionAlgorithm10CreateFuncE);
+emit_32(_ZTI30btCollisionAlgorithmCreateFunc);
+emit_start(_ZTSN33btConvexConcaveCollisionAlgorithm10CreateFuncE)
+emit_string('N33btConvexConcaveCollisionAlgorithm10CreateFuncE\x00');
+emit_start(_ZTVN33btConvexConcaveCollisionAlgorithm17SwappedCreateFuncE)
+emit_32(0);
+emit_32(_ZTIN33btConvexConcaveCollisionAlgorithm17SwappedCreateFuncE);
+emit_32(_ZN33btConvexConcaveCollisionAlgorithm17SwappedCreateFuncD1Ev__index__);
+emit_32(_ZN33btConvexConcaveCollisionAlgorithm17SwappedCreateFuncD0Ev__index__);
+emit_32(_ZN33btConvexConcaveCollisionAlgorithm17SwappedCreateFunc24CreateCollisionAlgorithmER36btCollisionAlgorithmConstructionInfoP17btCollisionObjectS4___index__);
+emit_start(_ZTIN33btConvexConcaveCollisionAlgorithm17SwappedCreateFuncE)
+emit_32(_ZTVN10__cxxabiv120__si_class_type_infoE+8);
+emit_32(_ZTSN33btConvexConcaveCollisionAlgorithm17SwappedCreateFuncE);
+emit_32(_ZTI30btCollisionAlgorithmCreateFunc);
+emit_start(_ZTSN33btConvexConcaveCollisionAlgorithm17SwappedCreateFuncE)
+emit_string('N33btConvexConcaveCollisionAlgorithm17SwappedCreateFuncE\x00');
+emit_start(_ZTVN28btCompoundCollisionAlgorithm10CreateFuncE)
+emit_32(0);
+emit_32(_ZTIN28btCompoundCollisionAlgorithm10CreateFuncE);
+emit_32(_ZN28btCompoundCollisionAlgorithm10CreateFuncD1Ev__index__);
+emit_32(_ZN28btCompoundCollisionAlgorithm10CreateFuncD0Ev__index__);
+emit_32(_ZN28btCompoundCollisionAlgorithm10CreateFunc24CreateCollisionAlgorithmER36btCollisionAlgorithmConstructionInfoP17btCollisionObjectS4___index__);
+emit_start(_ZTIN28btCompoundCollisionAlgorithm10CreateFuncE)
+emit_32(_ZTVN10__cxxabiv120__si_class_type_infoE+8);
+emit_32(_ZTSN28btCompoundCollisionAlgorithm10CreateFuncE);
+emit_32(_ZTI30btCollisionAlgorithmCreateFunc);
+emit_start(_ZTSN28btCompoundCollisionAlgorithm10CreateFuncE)
+emit_string('N28btCompoundCollisionAlgorithm10CreateFuncE\x00');
+emit_start(_ZTVN28btCompoundCollisionAlgorithm17SwappedCreateFuncE)
+emit_32(0);
+emit_32(_ZTIN28btCompoundCollisionAlgorithm17SwappedCreateFuncE);
+emit_32(_ZN28btCompoundCollisionAlgorithm17SwappedCreateFuncD1Ev__index__);
+emit_32(_ZN28btCompoundCollisionAlgorithm17SwappedCreateFuncD0Ev__index__);
+emit_32(_ZN28btCompoundCollisionAlgorithm17SwappedCreateFunc24CreateCollisionAlgorithmER36btCollisionAlgorithmConstructionInfoP17btCollisionObjectS4___index__);
+emit_start(_ZTIN28btCompoundCollisionAlgorithm17SwappedCreateFuncE)
+emit_32(_ZTVN10__cxxabiv120__si_class_type_infoE+8);
+emit_32(_ZTSN28btCompoundCollisionAlgorithm17SwappedCreateFuncE);
+emit_32(_ZTI30btCollisionAlgorithmCreateFunc);
+emit_start(_ZTSN28btCompoundCollisionAlgorithm17SwappedCreateFuncE)
+emit_string('N28btCompoundCollisionAlgorithm17SwappedCreateFuncE\x00');
+emit_start(_ZTVN16btEmptyAlgorithm10CreateFuncE)
+emit_32(0);
+emit_32(_ZTIN16btEmptyAlgorithm10CreateFuncE);
+emit_32(_ZN16btEmptyAlgorithm10CreateFuncD1Ev__index__);
+emit_32(_ZN16btEmptyAlgorithm10CreateFuncD0Ev__index__);
+emit_32(_ZN16btEmptyAlgorithm10CreateFunc24CreateCollisionAlgorithmER36btCollisionAlgorithmConstructionInfoP17btCollisionObjectS4___index__);
+emit_start(_ZTIN16btEmptyAlgorithm10CreateFuncE)
+emit_32(_ZTVN10__cxxabiv120__si_class_type_infoE+8);
+emit_32(_ZTSN16btEmptyAlgorithm10CreateFuncE);
+emit_32(_ZTI30btCollisionAlgorithmCreateFunc);
+emit_start(_ZTSN16btEmptyAlgorithm10CreateFuncE)
+emit_string('N16btEmptyAlgorithm10CreateFuncE\x00');
+emit_start(_ZTVN32btSphereSphereCollisionAlgorithm10CreateFuncE)
+emit_32(0);
+emit_32(_ZTIN32btSphereSphereCollisionAlgorithm10CreateFuncE);
+emit_32(_ZN32btSphereSphereCollisionAlgorithm10CreateFuncD1Ev__index__);
+emit_32(_ZN32btSphereSphereCollisionAlgorithm10CreateFuncD0Ev__index__);
+emit_32(_ZN32btSphereSphereCollisionAlgorithm10CreateFunc24CreateCollisionAlgorithmER36btCollisionAlgorithmConstructionInfoP17btCollisionObjectS4___index__);
+emit_start(_ZTIN32btSphereSphereCollisionAlgorithm10CreateFuncE)
+emit_32(_ZTVN10__cxxabiv120__si_class_type_infoE+8);
+emit_32(_ZTSN32btSphereSphereCollisionAlgorithm10CreateFuncE);
+emit_32(_ZTI30btCollisionAlgorithmCreateFunc);
+emit_start(_ZTSN32btSphereSphereCollisionAlgorithm10CreateFuncE)
+emit_string('N32btSphereSphereCollisionAlgorithm10CreateFuncE\x00');
+emit_start(_ZTVN34btSphereTriangleCollisionAlgorithm10CreateFuncE)
+emit_32(0);
+emit_32(_ZTIN34btSphereTriangleCollisionAlgorithm10CreateFuncE);
+emit_32(_ZN34btSphereTriangleCollisionAlgorithm10CreateFuncD1Ev__index__);
+emit_32(_ZN34btSphereTriangleCollisionAlgorithm10CreateFuncD0Ev__index__);
+emit_32(_ZN34btSphereTriangleCollisionAlgorithm10CreateFunc24CreateCollisionAlgorithmER36btCollisionAlgorithmConstructionInfoP17btCollisionObjectS4___index__);
+emit_start(_ZTIN34btSphereTriangleCollisionAlgorithm10CreateFuncE)
+emit_32(_ZTVN10__cxxabiv120__si_class_type_infoE+8);
+emit_32(_ZTSN34btSphereTriangleCollisionAlgorithm10CreateFuncE);
+emit_32(_ZTI30btCollisionAlgorithmCreateFunc);
+emit_start(_ZTSN34btSphereTriangleCollisionAlgorithm10CreateFuncE)
+emit_string('N34btSphereTriangleCollisionAlgorithm10CreateFuncE\x00');
+emit_start(_ZTVN26btBoxBoxCollisionAlgorithm10CreateFuncE)
+emit_32(0);
+emit_32(_ZTIN26btBoxBoxCollisionAlgorithm10CreateFuncE);
+emit_32(_ZN26btBoxBoxCollisionAlgorithm10CreateFuncD1Ev__index__);
+emit_32(_ZN26btBoxBoxCollisionAlgorithm10CreateFuncD0Ev__index__);
+emit_32(_ZN26btBoxBoxCollisionAlgorithm10CreateFunc24CreateCollisionAlgorithmER36btCollisionAlgorithmConstructionInfoP17btCollisionObjectS4___index__);
+emit_start(_ZTIN26btBoxBoxCollisionAlgorithm10CreateFuncE)
+emit_32(_ZTVN10__cxxabiv120__si_class_type_infoE+8);
+emit_32(_ZTSN26btBoxBoxCollisionAlgorithm10CreateFuncE);
+emit_32(_ZTI30btCollisionAlgorithmCreateFunc);
+emit_start(_ZTSN26btBoxBoxCollisionAlgorithm10CreateFuncE)
+emit_string('N26btBoxBoxCollisionAlgorithm10CreateFuncE\x00');
+emit_start(_2E_str128)
+emit_string('usedsize==0\x00');
+emit_start(_2E_str1129)
+emit_string('../../../../src/LinearMath/btStackAlloc.h\x00');
+emit_start(_ZTV31btDefaultCollisionConfiguration)
+emit_32(0);
+emit_32(_ZTI31btDefaultCollisionConfiguration);
+emit_32(_ZN31btDefaultCollisionConfigurationD1Ev__index__);
+emit_32(_ZN31btDefaultCollisionConfigurationD0Ev__index__);
+emit_32(_ZN31btDefaultCollisionConfiguration25getPersistentManifoldPoolEv__index__);
+emit_32(_ZN31btDefaultCollisionConfiguration25getCollisionAlgorithmPoolEv__index__);
+emit_32(_ZN31btDefaultCollisionConfiguration17getStackAllocatorEv__index__);
+emit_32(_ZN31btDefaultCollisionConfiguration31getCollisionAlgorithmCreateFuncEii__index__);
+emit_32(_ZN31btDefaultCollisionConfiguration16getSimplexSolverEv__index__);
+emit_start(_ZTI31btDefaultCollisionConfiguration)
+emit_32(_ZTVN10__cxxabiv120__si_class_type_infoE+8);
+emit_32(_ZTS31btDefaultCollisionConfiguration);
+emit_32(_ZTI24btCollisionConfiguration);
+emit_start(_ZTS31btDefaultCollisionConfiguration)
+emit_string('31btDefaultCollisionConfiguration\x00');
+emit_start(_ZTV16btEmptyAlgorithm)
+emit_32(0);
+emit_32(_ZTI16btEmptyAlgorithm);
+emit_32(_ZN16btEmptyAlgorithmD1Ev__index__);
+emit_32(_ZN16btEmptyAlgorithmD0Ev__index__);
+emit_32(_ZN16btEmptyAlgorithm16processCollisionEP17btCollisionObjectS1_RK16btDispatcherInfoP16btManifoldResult__index__);
+emit_32(_ZN16btEmptyAlgorithm21calculateTimeOfImpactEP17btCollisionObjectS1_RK16btDispatcherInfoP16btManifoldResult__index__);
+emit_32(_ZN16btEmptyAlgorithm22getAllContactManifoldsER20btAlignedObjectArrayIP20btPersistentManifoldE__index__);
+emit_start(_ZTI16btEmptyAlgorithm)
+emit_32(_ZTVN10__cxxabiv120__si_class_type_infoE+8);
+emit_32(_ZTS16btEmptyAlgorithm);
+emit_32(_ZTI20btCollisionAlgorithm);
+emit_start(_ZTS16btEmptyAlgorithm)
+emit_string('16btEmptyAlgorithm\x00');
+emit_start(_ZTV16btManifoldResult)
+emit_32(0);
+emit_32(_ZTI16btManifoldResult);
+emit_32(_ZN16btManifoldResultD1Ev__index__);
+emit_32(_ZN16btManifoldResultD0Ev__index__);
+emit_32(_ZN16btManifoldResult20setShapeIdentifiersAEii__index__);
+emit_32(_ZN16btManifoldResult20setShapeIdentifiersBEii__index__);
+emit_32(_ZN16btManifoldResult15addContactPointERK9btVector3S2_f__index__);
+emit_start(_2E_str2149)
+emit_string('validContactDistance(newPoint)\x00');
+emit_start(_2E_str3150)
+emit_string('lifeTime>=0\x00');
+emit_start(_2E_str5152)
+emit_string('../../../../src/BulletCollision/CollisionDispatch/btManifoldResult.cpp\x00');
+emit_start(_2E_str155)
+emit_string('islandUnionFindAndQuickSort\x00');
+emit_start(_2E_str1156)
+emit_string('(colObj0->getIslandTag() == islandId) || (colObj0->getIslandTag() == -1)\x00');
+emit_start(_2E_str2157)
+emit_string('../../../../src/BulletCollision/CollisionDispatch/btSimulationIslandManager.cpp\x00');
+emit_start(_2E_str3158)
+emit_string('processIslands\x00');
+emit_start(_ZTV25btSimulationIslandManager)
+emit_32(0);
+emit_32(_ZTI25btSimulationIslandManager);
+emit_32(_ZN25btSimulationIslandManagerD1Ev__index__);
+emit_32(_ZN25btSimulationIslandManagerD0Ev__index__);
+emit_32(_ZN25btSimulationIslandManager21updateActivationStateEP16btCollisionWorldP12btDispatcher__index__);
+emit_32(_ZN25btSimulationIslandManager26storeIslandActivationStateEP16btCollisionWorld__index__);
+emit_start(_ZTI25btSimulationIslandManager)
+emit_32(_ZTVN10__cxxabiv117__class_type_infoE+8);
+emit_32(_ZTS25btSimulationIslandManager);
+emit_start(_ZTS25btSimulationIslandManager)
+emit_string('25btSimulationIslandManager\x00');
+emit_start(_ZTV32btSphereSphereCollisionAlgorithm)
+emit_32(0);
+emit_32(_ZTI32btSphereSphereCollisionAlgorithm);
+emit_32(_ZN32btSphereSphereCollisionAlgorithmD1Ev__index__);
+emit_32(_ZN32btSphereSphereCollisionAlgorithmD0Ev__index__);
+emit_32(_ZN32btSphereSphereCollisionAlgorithm16processCollisionEP17btCollisionObjectS1_RK16btDispatcherInfoP16btManifoldResult__index__);
+emit_32(_ZN32btSphereSphereCollisionAlgorithm21calculateTimeOfImpactEP17btCollisionObjectS1_RK16btDispatcherInfoP16btManifoldResult__index__);
+emit_32(_ZN32btSphereSphereCollisionAlgorithm22getAllContactManifoldsER20btAlignedObjectArrayIP20btPersistentManifoldE__index__);
+emit_start(_ZTI32btSphereSphereCollisionAlgorithm)
+emit_32(_ZTVN10__cxxabiv120__si_class_type_infoE+8);
+emit_32(_ZTS32btSphereSphereCollisionAlgorithm);
+emit_32(_ZTI30btActivatingCollisionAlgorithm);
+emit_start(_ZTS32btSphereSphereCollisionAlgorithm)
+emit_string('32btSphereSphereCollisionAlgorithm\x00');
+emit_start(_ZTV34btSphereTriangleCollisionAlgorithm)
+emit_32(0);
+emit_32(_ZTI34btSphereTriangleCollisionAlgorithm);
+emit_32(_ZN34btSphereTriangleCollisionAlgorithmD1Ev__index__);
+emit_32(_ZN34btSphereTriangleCollisionAlgorithmD0Ev__index__);
+emit_32(_ZN34btSphereTriangleCollisionAlgorithm16processCollisionEP17btCollisionObjectS1_RK16btDispatcherInfoP16btManifoldResult__index__);
+emit_32(_ZN34btSphereTriangleCollisionAlgorithm21calculateTimeOfImpactEP17btCollisionObjectS1_RK16btDispatcherInfoP16btManifoldResult__index__);
+emit_32(_ZN34btSphereTriangleCollisionAlgorithm22getAllContactManifoldsER20btAlignedObjectArrayIP20btPersistentManifoldE__index__);
+emit_start(_ZTI34btSphereTriangleCollisionAlgorithm)
+emit_32(_ZTVN10__cxxabiv120__si_class_type_infoE+8);
+emit_32(_ZTS34btSphereTriangleCollisionAlgorithm);
+emit_32(_ZTI30btActivatingCollisionAlgorithm);
+emit_start(_ZTS34btSphereTriangleCollisionAlgorithm)
+emit_string('34btSphereTriangleCollisionAlgorithm\x00');
+emit_start(_ZTV22SphereTriangleDetector)
+emit_32(0);
+emit_32(_ZTI22SphereTriangleDetector);
+emit_32(_ZN22SphereTriangleDetectorD1Ev__index__);
+emit_32(_ZN22SphereTriangleDetectorD0Ev__index__);
+emit_32(_ZN22SphereTriangleDetector16getClosestPointsERKN36btDiscreteCollisionDetectorInterface17ClosestPointInputERNS0_6ResultEP12btIDebugDrawb__index__);
+emit_start(_ZTI22SphereTriangleDetector)
+emit_32(_ZTVN10__cxxabiv120__si_class_type_infoE+8);
+emit_32(_ZTS22SphereTriangleDetector);
+emit_32(_ZTI36btDiscreteCollisionDetectorInterface);
+emit_start(_ZTS22SphereTriangleDetector)
+emit_string('22SphereTriangleDetector\x00');
+emit_start(_2E_str173)
+emit_string('Box\x00');
+emit_start(_2E_str2175)
+emit_string('../../../../src/BulletCollision/CollisionShapes/btBoxShape.h\x00');
+emit_start(_ZTV10btBoxShape)
+emit_32(0);
+emit_32(_ZTI10btBoxShape);
+emit_32(_ZN10btBoxShapeD1Ev__index__);
+emit_32(_ZN10btBoxShapeD0Ev__index__);
+emit_32(_ZNK10btBoxShape7getAabbERK11btTransformR9btVector3S4___index__);
+emit_32(_ZNK16btCollisionShape17getBoundingSphereER9btVector3Rf__index__);
+emit_32(_ZNK16btCollisionShape20getAngularMotionDiscEv__index__);
+emit_32(_ZNK16btCollisionShape27getContactBreakingThresholdEf__index__);
+emit_32(_ZN10btBoxShape15setLocalScalingERK9btVector3__index__);
+emit_32(_ZNK21btConvexInternalShape15getLocalScalingEv__index__);
+emit_32(_ZNK10btBoxShape21calculateLocalInertiaEfR9btVector3__index__);
+emit_32(_ZNK10btBoxShape7getNameEv__index__);
+emit_32(_ZN10btBoxShape9setMarginEf__index__);
+emit_32(_ZNK21btConvexInternalShape9getMarginEv__index__);
+emit_32(_ZNK21btConvexInternalShape28calculateSerializeBufferSizeEv__index__);
+emit_32(_ZNK21btConvexInternalShape9serializeEPvP12btSerializer__index__);
+emit_32(_ZNK16btCollisionShape20serializeSingleShapeEP12btSerializer__index__);
+emit_32(_ZNK10btBoxShape24localGetSupportingVertexERK9btVector3__index__);
+emit_32(_ZNK10btBoxShape37localGetSupportingVertexWithoutMarginERK9btVector3__index__);
+emit_32(_ZNK10btBoxShape49batchedUnitVectorGetSupportingVertexWithoutMarginEPK9btVector3PS0_i__index__);
+emit_32(_ZNK21btConvexInternalShape11getAabbSlowERK11btTransformR9btVector3S4___index__);
+emit_32(_ZNK10btBoxShape36getNumPreferredPenetrationDirectionsEv__index__);
+emit_32(_ZNK10btBoxShape32getPreferredPenetrationDirectionEiR9btVector3__index__);
+emit_32(_ZNK10btBoxShape14getNumVerticesEv__index__);
+emit_32(_ZNK10btBoxShape11getNumEdgesEv__index__);
+emit_32(_ZNK10btBoxShape7getEdgeEiR9btVector3S1___index__);
+emit_32(_ZNK10btBoxShape9getVertexEiR9btVector3__index__);
+emit_32(_ZNK10btBoxShape12getNumPlanesEv__index__);
+emit_32(_ZNK10btBoxShape8getPlaneER9btVector3S1_i__index__);
+emit_32(_ZNK10btBoxShape8isInsideERK9btVector3f__index__);
+emit_32(_ZNK10btBoxShape16getPlaneEquationER9btVector4i__index__);
+emit_start(_ZTI10btBoxShape)
+emit_32(_ZTVN10__cxxabiv120__si_class_type_infoE+8);
+emit_32(_ZTS10btBoxShape);
+emit_32(_ZTI23btPolyhedralConvexShape);
+emit_start(_ZTS10btBoxShape)
+emit_string('10btBoxShape\x00');
+emit_start(_2E_str181)
+emit_string('BVHTRIANGLEMESH\x00');
+emit_start(_ZTVZN22btBvhTriangleMeshShape14performRaycastEP18btTriangleCallbackRK9btVector3S4_E21MyNodeOverlapCallback)
+emit_32(0);
+emit_32(_ZTIZN22btBvhTriangleMeshShape14performRaycastEP18btTriangleCallbackRK9btVector3S4_E21MyNodeOverlapCallback);
+emit_32(_ZZN22btBvhTriangleMeshShape14performRaycastEP18btTriangleCallbackRK9btVector3S4_EN21MyNodeOverlapCallbackD1Ev__index__);
+emit_32(_ZZN22btBvhTriangleMeshShape14performRaycastEP18btTriangleCallbackRK9btVector3S4_EN21MyNodeOverlapCallbackD0Ev__index__);
+emit_32(_ZZN22btBvhTriangleMeshShape14performRaycastEP18btTriangleCallbackRK9btVector3S4_EN21MyNodeOverlapCallback11processNodeEii__index__);
+emit_start(_ZTIZN22btBvhTriangleMeshShape14performRaycastEP18btTriangleCallbackRK9btVector3S4_E21MyNodeOverlapCallback)
+emit_32(_ZTVN10__cxxabiv120__si_class_type_infoE+8);
+emit_32(_ZTSZN22btBvhTriangleMeshShape14performRaycastEP18btTriangleCallbackRK9btVector3S4_E21MyNodeOverlapCallback);
+emit_32(_ZTI21btNodeOverlapCallback);
+emit_start(_ZTSZN22btBvhTriangleMeshShape14performRaycastEP18btTriangleCallbackRK9btVector3S4_E21MyNodeOverlapCallback)
+emit_string('ZN22btBvhTriangleMeshShape14performRaycastEP18btTriangleCallbackRK9btVector3S4_E21MyNodeOverlapCallback\x00');
+emit_start(_ZTVZN22btBvhTriangleMeshShape17performConvexcastEP18btTriangleCallbackRK9btVector3S4_S4_S4_E21MyNodeOverlapCallback)
+emit_32(0);
+emit_32(_ZTIZN22btBvhTriangleMeshShape17performConvexcastEP18btTriangleCallbackRK9btVector3S4_S4_S4_E21MyNodeOverlapCallback);
+emit_32(_ZZN22btBvhTriangleMeshShape17performConvexcastEP18btTriangleCallbackRK9btVector3S4_S4_S4_EN21MyNodeOverlapCallbackD1Ev__index__);
+emit_32(_ZZN22btBvhTriangleMeshShape17performConvexcastEP18btTriangleCallbackRK9btVector3S4_S4_S4_EN21MyNodeOverlapCallbackD0Ev__index__);
+emit_32(_ZZN22btBvhTriangleMeshShape17performConvexcastEP18btTriangleCallbackRK9btVector3S4_S4_S4_EN21MyNodeOverlapCallback11processNodeEii__index__);
+emit_start(_ZTIZN22btBvhTriangleMeshShape17performConvexcastEP18btTriangleCallbackRK9btVector3S4_S4_S4_E21MyNodeOverlapCallback)
+emit_32(_ZTVN10__cxxabiv120__si_class_type_infoE+8);
+emit_32(_ZTSZN22btBvhTriangleMeshShape17performConvexcastEP18btTriangleCallbackRK9btVector3S4_S4_S4_E21MyNodeOverlapCallback);
+emit_32(_ZTI21btNodeOverlapCallback);
+emit_start(_ZTSZN22btBvhTriangleMeshShape17performConvexcastEP18btTriangleCallbackRK9btVector3S4_S4_S4_E21MyNodeOverlapCallback)
+emit_string('ZN22btBvhTriangleMeshShape17performConvexcastEP18btTriangleCallbackRK9btVector3S4_S4_S4_E21MyNodeOverlapCallback\x00');
+emit_start(_ZTVZNK22btBvhTriangleMeshShape19processAllTrianglesEP18btTriangleCallbackRK9btVector3S4_E21MyNodeOverlapCallback)
+emit_32(0);
+emit_32(_ZTIZNK22btBvhTriangleMeshShape19processAllTrianglesEP18btTriangleCallbackRK9btVector3S4_E21MyNodeOverlapCallback);
+emit_32(_ZZNK22btBvhTriangleMeshShape19processAllTrianglesEP18btTriangleCallbackRK9btVector3S4_EN21MyNodeOverlapCallbackD1Ev__index__);
+emit_32(_ZZNK22btBvhTriangleMeshShape19processAllTrianglesEP18btTriangleCallbackRK9btVector3S4_EN21MyNodeOverlapCallbackD0Ev__index__);
+emit_32(_ZZNK22btBvhTriangleMeshShape19processAllTrianglesEP18btTriangleCallbackRK9btVector3S4_EN21MyNodeOverlapCallback11processNodeEii__index__);
+emit_start(_ZTIZNK22btBvhTriangleMeshShape19processAllTrianglesEP18btTriangleCallbackRK9btVector3S4_E21MyNodeOverlapCallback)
+emit_32(_ZTVN10__cxxabiv120__si_class_type_infoE+8);
+emit_32(_ZTSZNK22btBvhTriangleMeshShape19processAllTrianglesEP18btTriangleCallbackRK9btVector3S4_E21MyNodeOverlapCallback);
+emit_32(_ZTI21btNodeOverlapCallback);
+emit_start(_ZTSZNK22btBvhTriangleMeshShape19processAllTrianglesEP18btTriangleCallbackRK9btVector3S4_E21MyNodeOverlapCallback)
+emit_string('ZNK22btBvhTriangleMeshShape19processAllTrianglesEP18btTriangleCallbackRK9btVector3S4_E21MyNodeOverlapCallback\x00');
+emit_start(_2E_str5186)
+emit_string('../../../../src/BulletCollision/CollisionShapes/btTriangleMeshShape.h\x00');
+emit_start(_2E_str6187)
+emit_string('indicestype==PHY_INTEGER||indicestype==PHY_SHORT\x00');
+emit_start(_2E_str7188)
+emit_string('../../../../src/BulletCollision/CollisionShapes/btBvhTriangleMeshShape.cpp\x00');
+emit_start(_2E_str8189)
+emit_string('btTriangleMeshShapeData\x00');
+emit_start(_ZTV22btBvhTriangleMeshShape)
+emit_32(0);
+emit_32(_ZTI22btBvhTriangleMeshShape);
+emit_32(_ZN22btBvhTriangleMeshShapeD1Ev__index__);
+emit_32(_ZN22btBvhTriangleMeshShapeD0Ev__index__);
+emit_32(_ZNK19btTriangleMeshShape7getAabbERK11btTransformR9btVector3S4___index__);
+emit_32(_ZNK16btCollisionShape17getBoundingSphereER9btVector3Rf__index__);
+emit_32(_ZNK16btCollisionShape20getAngularMotionDiscEv__index__);
+emit_32(_ZNK16btCollisionShape27getContactBreakingThresholdEf__index__);
+emit_32(_ZN22btBvhTriangleMeshShape15setLocalScalingERK9btVector3__index__);
+emit_32(_ZNK19btTriangleMeshShape15getLocalScalingEv__index__);
+emit_32(_ZNK19btTriangleMeshShape21calculateLocalInertiaEfR9btVector3__index__);
+emit_32(_ZNK22btBvhTriangleMeshShape7getNameEv__index__);
+emit_32(_ZN14btConcaveShape9setMarginEf__index__);
+emit_32(_ZNK14btConcaveShape9getMarginEv__index__);
+emit_32(_ZNK22btBvhTriangleMeshShape28calculateSerializeBufferSizeEv__index__);
+emit_32(_ZNK22btBvhTriangleMeshShape9serializeEPvP12btSerializer__index__);
+emit_32(_ZNK16btCollisionShape20serializeSingleShapeEP12btSerializer__index__);
+emit_32(_ZNK22btBvhTriangleMeshShape19processAllTrianglesEP18btTriangleCallbackRK9btVector3S4___index__);
+emit_32(_ZNK19btTriangleMeshShape24localGetSupportingVertexERK9btVector3__index__);
+emit_32(_ZNK19btTriangleMeshShape37localGetSupportingVertexWithoutMarginERK9btVector3__index__);
+emit_32(_ZNK22btBvhTriangleMeshShape18serializeSingleBvhEP12btSerializer__index__);
+emit_32(_ZNK22btBvhTriangleMeshShape30serializeSingleTriangleInfoMapEP12btSerializer__index__);
+emit_start(_ZTI22btBvhTriangleMeshShape)
+emit_32(_ZTVN10__cxxabiv120__si_class_type_infoE+8);
+emit_32(_ZTS22btBvhTriangleMeshShape);
+emit_32(_ZTI19btTriangleMeshShape);
+emit_start(_ZTS22btBvhTriangleMeshShape)
+emit_string('22btBvhTriangleMeshShape\x00');
+emit_start(_ZTI19btTriangleMeshShape)
+emit_32(_ZTVN10__cxxabiv120__si_class_type_infoE+8);
+emit_32(_ZTS19btTriangleMeshShape);
+emit_32(_ZTI14btConcaveShape);
+emit_start(_ZTS19btTriangleMeshShape)
+emit_string('19btTriangleMeshShape\x00');
+emit_start(_ZTI14btConcaveShape)
+emit_32(_ZTVN10__cxxabiv120__si_class_type_infoE+8);
+emit_32(_ZTS14btConcaveShape);
+emit_32(_ZTI16btCollisionShape);
+emit_start(_ZTS14btConcaveShape)
+emit_string('14btConcaveShape\x00');
+emit_start(_2E_str194)
+emit_string('CapsuleShape\x00');
+emit_start(_2E_str4198)
+emit_string('../../../../src/BulletCollision/CollisionShapes/btConvexInternalShape.h\x00');
+emit_start(_2E_str6199)
+emit_string('btCapsuleShapeData\x00');
+emit_start(_ZTV14btCapsuleShape)
+emit_32(0);
+emit_32(_ZTI14btCapsuleShape);
+emit_32(_ZN14btCapsuleShapeD1Ev__index__);
+emit_32(_ZN14btCapsuleShapeD0Ev__index__);
+emit_32(_ZNK14btCapsuleShape7getAabbERK11btTransformR9btVector3S4___index__);
+emit_32(_ZNK16btCollisionShape17getBoundingSphereER9btVector3Rf__index__);
+emit_32(_ZNK16btCollisionShape20getAngularMotionDiscEv__index__);
+emit_32(_ZNK16btCollisionShape27getContactBreakingThresholdEf__index__);
+emit_32(_ZN14btCapsuleShape15setLocalScalingERK9btVector3__index__);
+emit_32(_ZNK21btConvexInternalShape15getLocalScalingEv__index__);
+emit_32(_ZNK14btCapsuleShape21calculateLocalInertiaEfR9btVector3__index__);
+emit_32(_ZNK14btCapsuleShape7getNameEv__index__);
+emit_32(_ZN14btCapsuleShape9setMarginEf__index__);
+emit_32(_ZNK21btConvexInternalShape9getMarginEv__index__);
+emit_32(_ZNK14btCapsuleShape28calculateSerializeBufferSizeEv__index__);
+emit_32(_ZNK14btCapsuleShape9serializeEPvP12btSerializer__index__);
+emit_32(_ZNK16btCollisionShape20serializeSingleShapeEP12btSerializer__index__);
+emit_32(_ZNK21btConvexInternalShape24localGetSupportingVertexERK9btVector3__index__);
+emit_32(_ZNK14btCapsuleShape37localGetSupportingVertexWithoutMarginERK9btVector3__index__);
+emit_32(_ZNK14btCapsuleShape49batchedUnitVectorGetSupportingVertexWithoutMarginEPK9btVector3PS0_i__index__);
+emit_32(_ZNK21btConvexInternalShape11getAabbSlowERK11btTransformR9btVector3S4___index__);
+emit_32(_ZNK21btConvexInternalShape36getNumPreferredPenetrationDirectionsEv__index__);
+emit_32(_ZNK21btConvexInternalShape32getPreferredPenetrationDirectionEiR9btVector3__index__);
+emit_start(_ZTI14btCapsuleShape)
+emit_32(_ZTVN10__cxxabiv120__si_class_type_infoE+8);
+emit_32(_ZTS14btCapsuleShape);
+emit_32(_ZTI21btConvexInternalShape);
+emit_start(_ZTS14btCapsuleShape)
+emit_string('14btCapsuleShape\x00');
+emit_start(_2E_str200)
+emit_string('btCollisionShapeData\x00');
+emit_start(_ZTV14btConcaveShape)
+emit_32(0);
+emit_32(_ZTI14btConcaveShape);
+emit_32(_ZN14btConcaveShapeD1Ev__index__);
+emit_32(_ZN14btConcaveShapeD0Ev__index__);
+emit_32(__cxa_pure_virtual__index__);
+emit_32(_ZNK16btCollisionShape17getBoundingSphereER9btVector3Rf__index__);
+emit_32(_ZNK16btCollisionShape20getAngularMotionDiscEv__index__);
+emit_32(_ZNK16btCollisionShape27getContactBreakingThresholdEf__index__);
+emit_32(__cxa_pure_virtual__index__);
+emit_32(__cxa_pure_virtual__index__);
+emit_32(__cxa_pure_virtual__index__);
+emit_32(__cxa_pure_virtual__index__);
+emit_32(_ZN14btConcaveShape9setMarginEf__index__);
+emit_32(_ZNK14btConcaveShape9getMarginEv__index__);
+emit_32(_ZNK16btCollisionShape28calculateSerializeBufferSizeEv__index__);
+emit_32(_ZNK16btCollisionShape9serializeEPvP12btSerializer__index__);
+emit_32(_ZNK16btCollisionShape20serializeSingleShapeEP12btSerializer__index__);
+emit_32(__cxa_pure_virtual__index__);
+emit_start(_2E_str219)
+emit_string('Convex\x00');
+emit_start(_2E_str3222)
+emit_string('../../../../src/BulletCollision/CollisionShapes/btConvexHullShape.cpp\x00');
+emit_start(_ZTV17btConvexHullShape)
+emit_32(0);
+emit_32(_ZTI17btConvexHullShape);
+emit_32(_ZN17btConvexHullShapeD1Ev__index__);
+emit_32(_ZN17btConvexHullShapeD0Ev__index__);
+emit_32(_ZNK34btPolyhedralConvexAabbCachingShape7getAabbERK11btTransformR9btVector3S4___index__);
+emit_32(_ZNK16btCollisionShape17getBoundingSphereER9btVector3Rf__index__);
+emit_32(_ZNK16btCollisionShape20getAngularMotionDiscEv__index__);
+emit_32(_ZNK16btCollisionShape27getContactBreakingThresholdEf__index__);
+emit_32(_ZN17btConvexHullShape15setLocalScalingERK9btVector3__index__);
+emit_32(_ZNK21btConvexInternalShape15getLocalScalingEv__index__);
+emit_32(_ZNK23btPolyhedralConvexShape21calculateLocalInertiaEfR9btVector3__index__);
+emit_32(_ZNK17btConvexHullShape7getNameEv__index__);
+emit_32(_ZN21btConvexInternalShape9setMarginEf__index__);
+emit_32(_ZNK21btConvexInternalShape9getMarginEv__index__);
+emit_32(_ZNK17btConvexHullShape28calculateSerializeBufferSizeEv__index__);
+emit_32(_ZNK17btConvexHullShape9serializeEPvP12btSerializer__index__);
+emit_32(_ZNK16btCollisionShape20serializeSingleShapeEP12btSerializer__index__);
+emit_32(_ZNK17btConvexHullShape24localGetSupportingVertexERK9btVector3__index__);
+emit_32(_ZNK17btConvexHullShape37localGetSupportingVertexWithoutMarginERK9btVector3__index__);
+emit_32(_ZNK17btConvexHullShape49batchedUnitVectorGetSupportingVertexWithoutMarginEPK9btVector3PS0_i__index__);
+emit_32(_ZNK21btConvexInternalShape11getAabbSlowERK11btTransformR9btVector3S4___index__);
+emit_32(_ZNK21btConvexInternalShape36getNumPreferredPenetrationDirectionsEv__index__);
+emit_32(_ZNK21btConvexInternalShape32getPreferredPenetrationDirectionEiR9btVector3__index__);
+emit_32(_ZNK17btConvexHullShape14getNumVerticesEv__index__);
+emit_32(_ZNK17btConvexHullShape11getNumEdgesEv__index__);
+emit_32(_ZNK17btConvexHullShape7getEdgeEiR9btVector3S1___index__);
+emit_32(_ZNK17btConvexHullShape9getVertexEiR9btVector3__index__);
+emit_32(_ZNK17btConvexHullShape12getNumPlanesEv__index__);
+emit_32(_ZNK17btConvexHullShape8getPlaneER9btVector3S1_i__index__);
+emit_32(_ZNK17btConvexHullShape8isInsideERK9btVector3f__index__);
+emit_start(_ZTI17btConvexHullShape)
+emit_32(_ZTVN10__cxxabiv120__si_class_type_infoE+8);
+emit_32(_ZTS17btConvexHullShape);
+emit_32(_ZTI34btPolyhedralConvexAabbCachingShape);
+emit_start(_ZTS17btConvexHullShape)
+emit_string('17btConvexHullShape\x00');
+emit_start(_ZTI34btPolyhedralConvexAabbCachingShape)
+emit_32(_ZTVN10__cxxabiv120__si_class_type_infoE+8);
+emit_32(_ZTS34btPolyhedralConvexAabbCachingShape);
+emit_32(_ZTI23btPolyhedralConvexShape);
+emit_start(_ZTS34btPolyhedralConvexAabbCachingShape)
+emit_string('34btPolyhedralConvexAabbCachingShape\x00');
+emit_start(_2E_str5223)
+emit_string('btVector3FloatData\x00');
+emit_start(_2E_str6224)
+emit_string('btConvexHullShapeData\x00');
+emit_start(_2E_str6232)
+emit_string('m_isLocalAabbValid\x00');
+emit_start(_ZTV13btConvexShape)
+emit_32(0);
+emit_32(_ZTI13btConvexShape);
+emit_32(_ZN13btConvexShapeD1Ev__index__);
+emit_32(_ZN13btConvexShapeD0Ev__index__);
+emit_32(__cxa_pure_virtual__index__);
+emit_32(_ZNK16btCollisionShape17getBoundingSphereER9btVector3Rf__index__);
+emit_32(_ZNK16btCollisionShape20getAngularMotionDiscEv__index__);
+emit_32(_ZNK16btCollisionShape27getContactBreakingThresholdEf__index__);
+emit_32(__cxa_pure_virtual__index__);
+emit_32(__cxa_pure_virtual__index__);
+emit_32(__cxa_pure_virtual__index__);
+emit_32(__cxa_pure_virtual__index__);
+emit_32(__cxa_pure_virtual__index__);
+emit_32(__cxa_pure_virtual__index__);
+emit_32(_ZNK16btCollisionShape28calculateSerializeBufferSizeEv__index__);
+emit_32(_ZNK16btCollisionShape9serializeEPvP12btSerializer__index__);
+emit_32(_ZNK16btCollisionShape20serializeSingleShapeEP12btSerializer__index__);
+emit_32(__cxa_pure_virtual__index__);
+emit_32(__cxa_pure_virtual__index__);
+emit_32(__cxa_pure_virtual__index__);
+emit_32(__cxa_pure_virtual__index__);
+emit_32(__cxa_pure_virtual__index__);
+emit_32(__cxa_pure_virtual__index__);
+emit_start(_2E_str6249)
+emit_string('ptIndex >= 0\x00');
+emit_start(_2E_str7250)
+emit_string('../../../../src/BulletCollision/CollisionShapes/btConvexShape.cpp\x00');
+emit_start(_ZTVZN14btOptimizedBvh5buildEP23btStridingMeshInterfacebRK9btVector3S4_E20NodeTriangleCallback)
+emit_32(0);
+emit_32(_ZTIZN14btOptimizedBvh5buildEP23btStridingMeshInterfacebRK9btVector3S4_E20NodeTriangleCallback);
+emit_32(_ZZN14btOptimizedBvh5buildEP23btStridingMeshInterfacebRK9btVector3S4_EN20NodeTriangleCallbackD1Ev__index__);
+emit_32(_ZZN14btOptimizedBvh5buildEP23btStridingMeshInterfacebRK9btVector3S4_EN20NodeTriangleCallbackD0Ev__index__);
+emit_32(_ZZN14btOptimizedBvh5buildEP23btStridingMeshInterfacebRK9btVector3S4_EN20NodeTriangleCallback28internalProcessTriangleIndexEPS2_ii__index__);
+emit_start(_ZTIZN14btOptimizedBvh5buildEP23btStridingMeshInterfacebRK9btVector3S4_E20NodeTriangleCallback)
+emit_32(_ZTVN10__cxxabiv120__si_class_type_infoE+8);
+emit_32(_ZTSZN14btOptimizedBvh5buildEP23btStridingMeshInterfacebRK9btVector3S4_E20NodeTriangleCallback);
+emit_32(_ZTI31btInternalTriangleIndexCallback);
+emit_start(_ZTSZN14btOptimizedBvh5buildEP23btStridingMeshInterfacebRK9btVector3S4_E20NodeTriangleCallback)
+emit_string('ZN14btOptimizedBvh5buildEP23btStridingMeshInterfacebRK9btVector3S4_E20NodeTriangleCallback\x00');
+emit_start(_ZTVZN14btOptimizedBvh5buildEP23btStridingMeshInterfacebRK9btVector3S4_E29QuantizedNodeTriangleCallback)
+emit_32(0);
+emit_32(_ZTIZN14btOptimizedBvh5buildEP23btStridingMeshInterfacebRK9btVector3S4_E29QuantizedNodeTriangleCallback);
+emit_32(_ZZN14btOptimizedBvh5buildEP23btStridingMeshInterfacebRK9btVector3S4_EN29QuantizedNodeTriangleCallbackD1Ev__index__);
+emit_32(_ZZN14btOptimizedBvh5buildEP23btStridingMeshInterfacebRK9btVector3S4_EN29QuantizedNodeTriangleCallbackD0Ev__index__);
+emit_32(_ZZN14btOptimizedBvh5buildEP23btStridingMeshInterfacebRK9btVector3S4_EN29QuantizedNodeTriangleCallback28internalProcessTriangleIndexEPS2_ii__index__);
+emit_start(_ZTIZN14btOptimizedBvh5buildEP23btStridingMeshInterfacebRK9btVector3S4_E29QuantizedNodeTriangleCallback)
+emit_32(_ZTVN10__cxxabiv120__si_class_type_infoE+8);
+emit_32(_ZTSZN14btOptimizedBvh5buildEP23btStridingMeshInterfacebRK9btVector3S4_E29QuantizedNodeTriangleCallback);
+emit_32(_ZTI31btInternalTriangleIndexCallback);
+emit_start(_ZTSZN14btOptimizedBvh5buildEP23btStridingMeshInterfacebRK9btVector3S4_E29QuantizedNodeTriangleCallback)
+emit_string('ZN14btOptimizedBvh5buildEP23btStridingMeshInterfacebRK9btVector3S4_E29QuantizedNodeTriangleCallback\x00');
+emit_start(_2E_str10306)
+emit_string('../../../../src/BulletCollision/CollisionShapes/btOptimizedBvh.cpp\x00');
+emit_start(_2E_str18314)
+emit_string('partId < (1<<MAX_NUM_PARTS_IN_BITS)\x00');
+emit_start(_2E_str19315)
+emit_string('triangleIndex < (1<<(31-MAX_NUM_PARTS_IN_BITS))\x00');
+emit_start(_2E_str20316)
+emit_string('triangleIndex>=0\x00');
+emit_start(_ZTV14btOptimizedBvh)
+emit_32(0);
+emit_32(_ZTI14btOptimizedBvh);
+emit_32(_ZN14btOptimizedBvhD1Ev__index__);
+emit_32(_ZN14btOptimizedBvhD0Ev__index__);
+emit_32(_ZNK14btQuantizedBvh9serializeEPvjb__index__);
+emit_32(_ZNK14btQuantizedBvh31calculateSerializeBufferSizeNewEv__index__);
+emit_32(_ZNK14btQuantizedBvh9serializeEPvP12btSerializer__index__);
+emit_32(_ZN14btQuantizedBvh16deSerializeFloatER23btQuantizedBvhFloatData__index__);
+emit_32(_ZN14btQuantizedBvh17deSerializeDoubleER24btQuantizedBvhDoubleData__index__);
+emit_32(_ZNK14btOptimizedBvh16serializeInPlaceEPvjb__index__);
+emit_start(_ZTI14btOptimizedBvh)
+emit_32(_ZTVN10__cxxabiv120__si_class_type_infoE+8);
+emit_32(_ZTS14btOptimizedBvh);
+emit_32(_ZTI14btQuantizedBvh);
+emit_start(_ZTS14btOptimizedBvh)
+emit_string('14btOptimizedBvh\x00');
+emit_start(_2E_str7331)
+emit_string('../../../../src/BulletCollision/CollisionShapes/btPolyhedralConvexShape.h\x00');
+emit_start(_2E_str342)
+emit_string('SPHERE\x00');
+emit_start(_ZTV13btSphereShape)
+emit_32(0);
+emit_32(_ZTI13btSphereShape);
+emit_32(_ZN13btSphereShapeD1Ev__index__);
+emit_32(_ZN13btSphereShapeD0Ev__index__);
+emit_32(_ZNK13btSphereShape7getAabbERK11btTransformR9btVector3S4___index__);
+emit_32(_ZNK16btCollisionShape17getBoundingSphereER9btVector3Rf__index__);
+emit_32(_ZNK16btCollisionShape20getAngularMotionDiscEv__index__);
+emit_32(_ZNK16btCollisionShape27getContactBreakingThresholdEf__index__);
+emit_32(_ZN21btConvexInternalShape15setLocalScalingERK9btVector3__index__);
+emit_32(_ZNK21btConvexInternalShape15getLocalScalingEv__index__);
+emit_32(_ZNK13btSphereShape21calculateLocalInertiaEfR9btVector3__index__);
+emit_32(_ZNK13btSphereShape7getNameEv__index__);
+emit_32(_ZN13btSphereShape9setMarginEf__index__);
+emit_32(_ZNK13btSphereShape9getMarginEv__index__);
+emit_32(_ZNK21btConvexInternalShape28calculateSerializeBufferSizeEv__index__);
+emit_32(_ZNK21btConvexInternalShape9serializeEPvP12btSerializer__index__);
+emit_32(_ZNK16btCollisionShape20serializeSingleShapeEP12btSerializer__index__);
+emit_32(_ZNK13btSphereShape24localGetSupportingVertexERK9btVector3__index__);
+emit_32(_ZNK13btSphereShape37localGetSupportingVertexWithoutMarginERK9btVector3__index__);
+emit_32(_ZNK13btSphereShape49batchedUnitVectorGetSupportingVertexWithoutMarginEPK9btVector3PS0_i__index__);
+emit_32(_ZNK21btConvexInternalShape11getAabbSlowERK11btTransformR9btVector3S4___index__);
+emit_32(_ZNK21btConvexInternalShape36getNumPreferredPenetrationDirectionsEv__index__);
+emit_32(_ZNK21btConvexInternalShape32getPreferredPenetrationDirectionEiR9btVector3__index__);
+emit_start(_ZTI13btSphereShape)
+emit_32(_ZTVN10__cxxabiv120__si_class_type_infoE+8);
+emit_32(_ZTS13btSphereShape);
+emit_32(_ZTI21btConvexInternalShape);
+emit_start(_ZTS13btSphereShape)
+emit_string('13btSphereShape\x00');
+emit_start(_2E_str349)
+emit_string('btIntIndexData\x00');
+emit_start(_2E_str1350)
+emit_string('btShortIntIndexTripletData\x00');
+emit_start(_2E_str3352)
+emit_string('../../../../src/BulletCollision/CollisionShapes/btStridingMeshInterface.cpp\x00');
+emit_start(_2E_str5354)
+emit_string('btVector3DoubleData\x00');
+emit_start(_2E_str6355)
+emit_string('(type == PHY_FLOAT) || (type == PHY_DOUBLE)\x00');
+emit_start(_2E_str7356)
+emit_string('btMeshPartData\x00');
+emit_start(_2E_str8357)
+emit_string('btStridingMeshInterfaceData\x00');
+emit_start(_2E_str9358)
+emit_string('(gfxindextype == PHY_INTEGER) || (gfxindextype == PHY_SHORT)\x00');
+emit_start(_ZTV23btStridingMeshInterface)
+emit_32(0);
+emit_32(_ZTI23btStridingMeshInterface);
+emit_32(_ZN23btStridingMeshInterfaceD1Ev__index__);
+emit_32(_ZN23btStridingMeshInterfaceD0Ev__index__);
+emit_32(_ZNK23btStridingMeshInterface27InternalProcessAllTrianglesEP31btInternalTriangleIndexCallbackRK9btVector3S4___index__);
+emit_32(__cxa_pure_virtual__index__);
+emit_32(__cxa_pure_virtual__index__);
+emit_32(__cxa_pure_virtual__index__);
+emit_32(__cxa_pure_virtual__index__);
+emit_32(__cxa_pure_virtual__index__);
+emit_32(__cxa_pure_virtual__index__);
+emit_32(__cxa_pure_virtual__index__);
+emit_32(_ZNK23btStridingMeshInterface14hasPremadeAabbEv__index__);
+emit_32(_ZNK23btStridingMeshInterface14setPremadeAabbERK9btVector3S2___index__);
+emit_32(_ZNK23btStridingMeshInterface14getPremadeAabbEP9btVector3S1___index__);
+emit_32(_ZNK23btStridingMeshInterface28calculateSerializeBufferSizeEv__index__);
+emit_32(_ZNK23btStridingMeshInterface9serializeEPvP12btSerializer__index__);
+emit_start(_ZTI23btStridingMeshInterface)
+emit_32(_ZTVN10__cxxabiv117__class_type_infoE+8);
+emit_32(_ZTS23btStridingMeshInterface);
+emit_start(_ZTS23btStridingMeshInterface)
+emit_string('23btStridingMeshInterface\x00');
+emit_start(_ZTV31btInternalTriangleIndexCallback)
+emit_32(0);
+emit_32(_ZTI31btInternalTriangleIndexCallback);
+emit_32(_ZN31btInternalTriangleIndexCallbackD1Ev__index__);
+emit_32(_ZN31btInternalTriangleIndexCallbackD0Ev__index__);
+emit_32(__cxa_pure_virtual__index__);
+emit_start(_ZTV18btTriangleCallback)
+emit_32(0);
+emit_32(_ZTI18btTriangleCallback);
+emit_32(_ZN18btTriangleCallbackD1Ev__index__);
+emit_32(_ZN18btTriangleCallbackD0Ev__index__);
+emit_32(__cxa_pure_virtual__index__);
+emit_start(_2E_str367)
+emit_string('subpart< getNumSubParts()\x00');
+emit_start(_2E_str1368)
+emit_string('../../../../src/BulletCollision/CollisionShapes/btTriangleIndexVertexArray.cpp\x00');
+emit_start(_ZTV26btTriangleIndexVertexArray)
+emit_32(0);
+emit_32(_ZTI26btTriangleIndexVertexArray);
+emit_32(_ZN26btTriangleIndexVertexArrayD1Ev__index__);
+emit_32(_ZN26btTriangleIndexVertexArrayD0Ev__index__);
+emit_32(_ZNK23btStridingMeshInterface27InternalProcessAllTrianglesEP31btInternalTriangleIndexCallbackRK9btVector3S4___index__);
+emit_32(_ZN26btTriangleIndexVertexArray24getLockedVertexIndexBaseEPPhRiR14PHY_ScalarTypeS2_S1_S2_S2_S4_i__index__);
+emit_32(_ZNK26btTriangleIndexVertexArray32getLockedReadOnlyVertexIndexBaseEPPKhRiR14PHY_ScalarTypeS3_S2_S3_S3_S5_i__index__);
+emit_32(_ZN26btTriangleIndexVertexArray16unLockVertexBaseEi__index__);
+emit_32(_ZNK26btTriangleIndexVertexArray24unLockReadOnlyVertexBaseEi__index__);
+emit_32(_ZNK26btTriangleIndexVertexArray14getNumSubPartsEv__index__);
+emit_32(_ZN26btTriangleIndexVertexArray19preallocateVerticesEi__index__);
+emit_32(_ZN26btTriangleIndexVertexArray18preallocateIndicesEi__index__);
+emit_32(_ZNK26btTriangleIndexVertexArray14hasPremadeAabbEv__index__);
+emit_32(_ZNK26btTriangleIndexVertexArray14setPremadeAabbERK9btVector3S2___index__);
+emit_32(_ZNK26btTriangleIndexVertexArray14getPremadeAabbEP9btVector3S1___index__);
+emit_32(_ZNK23btStridingMeshInterface28calculateSerializeBufferSizeEv__index__);
+emit_32(_ZNK23btStridingMeshInterface9serializeEPvP12btSerializer__index__);
+emit_start(_ZTI26btTriangleIndexVertexArray)
+emit_32(_ZTVN10__cxxabiv120__si_class_type_infoE+8);
+emit_32(_ZTS26btTriangleIndexVertexArray);
+emit_32(_ZTI23btStridingMeshInterface);
+emit_start(_ZTS26btTriangleIndexVertexArray)
+emit_string('26btTriangleIndexVertexArray\x00');
+emit_start(_2E_str372)
+emit_string('TRIANGLEMESH\x00');
+emit_start(_ZTV21SupportVertexCallback)
+emit_32(0);
+emit_32(_ZTI21SupportVertexCallback);
+emit_32(_ZN21SupportVertexCallbackD1Ev__index__);
+emit_32(_ZN21SupportVertexCallbackD0Ev__index__);
+emit_32(_ZN21SupportVertexCallback15processTriangleEP9btVector3ii__index__);
+emit_start(_ZTI21SupportVertexCallback)
+emit_32(_ZTVN10__cxxabiv120__si_class_type_infoE+8);
+emit_32(_ZTS21SupportVertexCallback);
+emit_32(_ZTI18btTriangleCallback);
+emit_start(_ZTS21SupportVertexCallback)
+emit_string('21SupportVertexCallback\x00');
+emit_start(_ZTVZNK19btTriangleMeshShape19processAllTrianglesEP18btTriangleCallbackRK9btVector3S4_E16FilteredCallback)
+emit_32(0);
+emit_32(_ZTIZNK19btTriangleMeshShape19processAllTrianglesEP18btTriangleCallbackRK9btVector3S4_E16FilteredCallback);
+emit_32(_ZZNK19btTriangleMeshShape19processAllTrianglesEP18btTriangleCallbackRK9btVector3S4_EN16FilteredCallbackD1Ev__index__);
+emit_32(_ZZNK19btTriangleMeshShape19processAllTrianglesEP18btTriangleCallbackRK9btVector3S4_EN16FilteredCallbackD0Ev__index__);
+emit_32(_ZZNK19btTriangleMeshShape19processAllTrianglesEP18btTriangleCallbackRK9btVector3S4_EN16FilteredCallback28internalProcessTriangleIndexEPS2_ii__index__);
+emit_start(_ZTIZNK19btTriangleMeshShape19processAllTrianglesEP18btTriangleCallbackRK9btVector3S4_E16FilteredCallback)
+emit_32(_ZTVN10__cxxabiv120__si_class_type_infoE+8);
+emit_32(_ZTSZNK19btTriangleMeshShape19processAllTrianglesEP18btTriangleCallbackRK9btVector3S4_E16FilteredCallback);
+emit_32(_ZTI31btInternalTriangleIndexCallback);
+emit_start(_ZTSZNK19btTriangleMeshShape19processAllTrianglesEP18btTriangleCallbackRK9btVector3S4_E16FilteredCallback)
+emit_string('ZNK19btTriangleMeshShape19processAllTrianglesEP18btTriangleCallbackRK9btVector3S4_E16FilteredCallback\x00');
+emit_start(_2E_str3375)
+emit_string('../../../../src/BulletCollision/CollisionShapes/btTriangleMeshShape.cpp\x00');
+emit_start(_ZTV19btTriangleMeshShape)
+emit_32(0);
+emit_32(_ZTI19btTriangleMeshShape);
+emit_32(_ZN19btTriangleMeshShapeD1Ev__index__);
+emit_32(_ZN19btTriangleMeshShapeD0Ev__index__);
+emit_32(_ZNK19btTriangleMeshShape7getAabbERK11btTransformR9btVector3S4___index__);
+emit_32(_ZNK16btCollisionShape17getBoundingSphereER9btVector3Rf__index__);
+emit_32(_ZNK16btCollisionShape20getAngularMotionDiscEv__index__);
+emit_32(_ZNK16btCollisionShape27getContactBreakingThresholdEf__index__);
+emit_32(_ZN19btTriangleMeshShape15setLocalScalingERK9btVector3__index__);
+emit_32(_ZNK19btTriangleMeshShape15getLocalScalingEv__index__);
+emit_32(_ZNK19btTriangleMeshShape21calculateLocalInertiaEfR9btVector3__index__);
+emit_32(_ZNK19btTriangleMeshShape7getNameEv__index__);
+emit_32(_ZN14btConcaveShape9setMarginEf__index__);
+emit_32(_ZNK14btConcaveShape9getMarginEv__index__);
+emit_32(_ZNK16btCollisionShape28calculateSerializeBufferSizeEv__index__);
+emit_32(_ZNK16btCollisionShape9serializeEPvP12btSerializer__index__);
+emit_32(_ZNK16btCollisionShape20serializeSingleShapeEP12btSerializer__index__);
+emit_32(_ZNK19btTriangleMeshShape19processAllTrianglesEP18btTriangleCallbackRK9btVector3S4___index__);
+emit_32(_ZNK19btTriangleMeshShape24localGetSupportingVertexERK9btVector3__index__);
+emit_32(_ZNK19btTriangleMeshShape37localGetSupportingVertexWithoutMarginERK9btVector3__index__);
+emit_start(_ZTV16btPointCollector)
+emit_32(0);
+emit_32(_ZTI16btPointCollector);
+emit_32(_ZN16btPointCollectorD1Ev__index__);
+emit_32(_ZN16btPointCollectorD0Ev__index__);
+emit_32(_ZN16btPointCollector20setShapeIdentifiersAEii__index__);
+emit_32(_ZN16btPointCollector20setShapeIdentifiersBEii__index__);
+emit_32(_ZN16btPointCollector15addContactPointERK9btVector3S2_f__index__);
+emit_start(_ZTI16btPointCollector)
+emit_32(_ZTVN10__cxxabiv120__si_class_type_infoE+8);
+emit_32(_ZTS16btPointCollector);
+emit_32(_ZTIN36btDiscreteCollisionDetectorInterface6ResultE);
+emit_start(_ZTS16btPointCollector)
+emit_string('16btPointCollector\x00');
+emit_start(_ZTV27btContinuousConvexCollision)
+emit_32(0);
+emit_32(_ZTI27btContinuousConvexCollision);
+emit_32(_ZN27btContinuousConvexCollisionD1Ev__index__);
+emit_32(_ZN27btContinuousConvexCollisionD0Ev__index__);
+emit_32(_ZN27btContinuousConvexCollision16calcTimeOfImpactERK11btTransformS2_S2_S2_RN12btConvexCast10CastResultE__index__);
+emit_start(_ZTI27btContinuousConvexCollision)
+emit_32(_ZTVN10__cxxabiv120__si_class_type_infoE+8);
+emit_32(_ZTS27btContinuousConvexCollision);
+emit_32(_ZTI12btConvexCast);
+emit_start(_ZTS27btContinuousConvexCollision)
+emit_string('27btContinuousConvexCollision\x00');
+emit_start(_ZTI12btConvexCast)
+emit_32(_ZTVN10__cxxabiv117__class_type_infoE+8);
+emit_32(_ZTS12btConvexCast);
+emit_start(_ZTS12btConvexCast)
+emit_string('12btConvexCast\x00');
+emit_start(_ZTV12btConvexCast)
+emit_32(0);
+emit_32(_ZTI12btConvexCast);
+emit_32(_ZN12btConvexCastD1Ev__index__);
+emit_32(_ZN12btConvexCastD0Ev__index__);
+emit_32(__cxa_pure_virtual__index__);
+emit_start(_ZTV15btGjkConvexCast)
+emit_32(0);
+emit_32(_ZTI15btGjkConvexCast);
+emit_32(_ZN15btGjkConvexCastD1Ev__index__);
+emit_32(_ZN15btGjkConvexCastD0Ev__index__);
+emit_32(_ZN15btGjkConvexCast16calcTimeOfImpactERK11btTransformS2_S2_S2_RN12btConvexCast10CastResultE__index__);
+emit_start(_ZTI15btGjkConvexCast)
+emit_32(_ZTVN10__cxxabiv120__si_class_type_infoE+8);
+emit_32(_ZTS15btGjkConvexCast);
+emit_32(_ZTI12btConvexCast);
+emit_start(_ZTS15btGjkConvexCast)
+emit_string('15btGjkConvexCast\x00');
+emit_start(_ZZN12gjkepa2_impl3GJK13projectoriginERK9btVector3S3_S3_PfRjE4imd3)
+emit_32(1);
+emit_32(2);
+emit_32(0);
+emit_start(_ZZN12gjkepa2_impl3EPA6expandEjPNS_3GJK3sSVEPNS0_5sFaceEjRNS0_8sHorizonEE4i2m3)
+emit_32(2);
+emit_32(0);
+emit_32(1);
+emit_start(_ZTV30btGjkEpaPenetrationDepthSolver)
+emit_32(0);
+emit_32(_ZTI30btGjkEpaPenetrationDepthSolver);
+emit_32(_ZN30btGjkEpaPenetrationDepthSolverD1Ev__index__);
+emit_32(_ZN30btGjkEpaPenetrationDepthSolverD0Ev__index__);
+emit_32(_ZN30btGjkEpaPenetrationDepthSolver12calcPenDepthER22btVoronoiSimplexSolverPK13btConvexShapeS4_RK11btTransformS7_R9btVector3S9_S9_P12btIDebugDrawP12btStackAlloc__index__);
+emit_start(_ZTI30btGjkEpaPenetrationDepthSolver)
+emit_32(_ZTVN10__cxxabiv120__si_class_type_infoE+8);
+emit_32(_ZTS30btGjkEpaPenetrationDepthSolver);
+emit_32(_ZTI30btConvexPenetrationDepthSolver);
+emit_start(_ZTS30btGjkEpaPenetrationDepthSolver)
+emit_string('30btGjkEpaPenetrationDepthSolver\x00');
+emit_start(_ZTV17btGjkPairDetector)
+emit_32(0);
+emit_32(_ZTI17btGjkPairDetector);
+emit_32(_ZN17btGjkPairDetectorD1Ev__index__);
+emit_32(_ZN17btGjkPairDetectorD0Ev__index__);
+emit_32(_ZN17btGjkPairDetector16getClosestPointsERKN36btDiscreteCollisionDetectorInterface17ClosestPointInputERNS0_6ResultEP12btIDebugDrawb__index__);
+emit_start(_ZTI17btGjkPairDetector)
+emit_32(_ZTVN10__cxxabiv120__si_class_type_infoE+8);
+emit_32(_ZTS17btGjkPairDetector);
+emit_32(_ZTI36btDiscreteCollisionDetectorInterface);
+emit_start(_ZTS17btGjkPairDetector)
+emit_string('17btGjkPairDetector\x00');
+emit_start(_2E_str425)
+emit_string('btGjkPairDetector maxIter exceeded:%i\x0a\x00');
+emit_start(_2E_str1426)
+emit_string('sepAxis=(%f,%f,%f), squaredDistance = %f, shapeTypeA=%i,shapeTypeB=%i\x0a\x00');
+emit_start(_2E_str2427)
+emit_string('s > btScalar(0.0)\x00');
+emit_start(_2E_str3428)
+emit_string('../../../../src/BulletCollision/NarrowPhaseCollision/btGjkPairDetector.cpp\x00');
+emit_start(gContactBreakingThreshold)
+emit_32(1017370378);
+emit_start(_2E_str434)
+emit_string('m_pointCache[lastUsedIndex].m_userPersistentData==0\x00');
+emit_start(_2E_str3437)
+emit_string('../../../../src/BulletCollision/NarrowPhaseCollision/btPersistentManifold.cpp\x00');
+emit_start(_2E_str4438)
+emit_string('m_pointCache[insertIndex].m_userPersistentData==0\x00');
+emit_start(_ZTV28btTriangleConvexcastCallback)
+emit_32(0);
+emit_32(_ZTI28btTriangleConvexcastCallback);
+emit_32(_ZN28btTriangleConvexcastCallbackD1Ev__index__);
+emit_32(_ZN28btTriangleConvexcastCallbackD0Ev__index__);
+emit_32(_ZN28btTriangleConvexcastCallback15processTriangleEP9btVector3ii__index__);
+emit_32(__cxa_pure_virtual__index__);
+emit_start(_ZTV22btSubsimplexConvexCast)
+emit_32(0);
+emit_32(_ZTI22btSubsimplexConvexCast);
+emit_32(_ZN22btSubsimplexConvexCastD1Ev__index__);
+emit_32(_ZN22btSubsimplexConvexCastD0Ev__index__);
+emit_32(_ZN22btSubsimplexConvexCast16calcTimeOfImpactERK11btTransformS2_S2_S2_RN12btConvexCast10CastResultE__index__);
+emit_start(_ZTI22btSubsimplexConvexCast)
+emit_32(_ZTVN10__cxxabiv120__si_class_type_infoE+8);
+emit_32(_ZTS22btSubsimplexConvexCast);
+emit_32(_ZTI12btConvexCast);
+emit_start(_ZTS22btSubsimplexConvexCast)
+emit_string('22btSubsimplexConvexCast\x00');
+emit_start(_2E_str457)
+emit_string('m_numVertices>0\x00');
+emit_start(_2E_str1458)
+emit_string('../../../../src/BulletCollision/NarrowPhaseCollision/btVoronoiSimplexSolver.cpp\x00');
+emit_start(_ZTVN16btCollisionWorld27ClosestConvexResultCallbackE)
+emit_32(0);
+emit_32(_ZTIN16btCollisionWorld27ClosestConvexResultCallbackE);
+emit_32(_ZN16btCollisionWorld27ClosestConvexResultCallbackD1Ev__index__);
+emit_32(_ZN16btCollisionWorld27ClosestConvexResultCallbackD0Ev__index__);
+emit_32(_ZNK16btCollisionWorld20ConvexResultCallback14needsCollisionEP17btBroadphaseProxy__index__);
+emit_32(_ZN16btCollisionWorld27ClosestConvexResultCallback15addSingleResultERNS_17LocalConvexResultEb__index__);
+emit_start(_ZTIN16btCollisionWorld27ClosestConvexResultCallbackE)
+emit_32(_ZTVN10__cxxabiv120__si_class_type_infoE+8);
+emit_32(_ZTSN16btCollisionWorld27ClosestConvexResultCallbackE);
+emit_32(_ZTIN16btCollisionWorld20ConvexResultCallbackE);
+emit_start(_ZTSN16btCollisionWorld27ClosestConvexResultCallbackE)
+emit_string('N16btCollisionWorld27ClosestConvexResultCallbackE\x00');
+emit_start(_2E_str36)
+emit_string('convexResult.m_hitFraction <= m_closestHitFraction\x00');
+emit_start(_2E_str239)
+emit_string('btConeTwistConstraintData\x00');
+emit_start(_ZTV21btConeTwistConstraint)
+emit_32(0);
+emit_32(_ZTI21btConeTwistConstraint);
+emit_32(_ZN21btConeTwistConstraintD1Ev__index__);
+emit_32(_ZN21btConeTwistConstraintD0Ev__index__);
+emit_32(_ZN21btConeTwistConstraint13buildJacobianEv__index__);
+emit_32(_ZN17btTypedConstraint21setupSolverConstraintER20btAlignedObjectArrayI18btSolverConstraintEiif__index__);
+emit_32(_ZN21btConeTwistConstraint8getInfo1EPN17btTypedConstraint17btConstraintInfo1E__index__);
+emit_32(_ZN21btConeTwistConstraint8getInfo2EPN17btTypedConstraint17btConstraintInfo2E__index__);
+emit_32(_ZN21btConeTwistConstraint23solveConstraintObsoleteER11btRigidBodyS1_f__index__);
+emit_32(_ZN21btConeTwistConstraint8setParamEifi__index__);
+emit_32(_ZNK21btConeTwistConstraint8getParamEii__index__);
+emit_32(_ZNK21btConeTwistConstraint28calculateSerializeBufferSizeEv__index__);
+emit_32(_ZNK21btConeTwistConstraint9serializeEPvP12btSerializer__index__);
+emit_start(_ZTI21btConeTwistConstraint)
+emit_32(_ZTVN10__cxxabiv120__si_class_type_infoE+8);
+emit_32(_ZTS21btConeTwistConstraint);
+emit_32(_ZTI17btTypedConstraint);
+emit_start(_ZTS21btConeTwistConstraint)
+emit_string('21btConeTwistConstraint\x00');
+emit_start(_2E_str1340)
+emit_string('m_flags & BT_CONETWIST_FLAGS_LIN_ERP\x00');
+emit_start(_2E_str24)
+emit_string('../../../../src/BulletDynamics/ConstraintSolver/btConeTwistConstraint.cpp\x00');
+emit_start(_2E_str442)
+emit_string('m_flags & BT_CONETWIST_FLAGS_LIN_CFM\x00');
+emit_start(_2E_str543)
+emit_string('m_flags & BT_CONETWIST_FLAGS_ANG_CFM\x00');
+emit_start(_2E_str846)
+emit_string('m_Adiag > btScalar(0.0)\x00');
+emit_start(_2E_str947)
+emit_string('../../../../src/BulletDynamics/ConstraintSolver/btJacobianEntry.h\x00');
+emit_start(_2E_str1149)
+emit_string('!m_useSolveConstraintObsolete\x00');
+emit_start(_2E_str29)
+emit_string('btHingeConstraintFloatData\x00');
+emit_start(_ZTV17btHingeConstraint)
+emit_32(0);
+emit_32(_ZTI17btHingeConstraint);
+emit_32(_ZN17btHingeConstraintD1Ev__index__);
+emit_32(_ZN17btHingeConstraintD0Ev__index__);
+emit_32(_ZN17btHingeConstraint13buildJacobianEv__index__);
+emit_32(_ZN17btTypedConstraint21setupSolverConstraintER20btAlignedObjectArrayI18btSolverConstraintEiif__index__);
+emit_32(_ZN17btHingeConstraint8getInfo1EPN17btTypedConstraint17btConstraintInfo1E__index__);
+emit_32(_ZN17btHingeConstraint8getInfo2EPN17btTypedConstraint17btConstraintInfo2E__index__);
+emit_32(_ZN17btTypedConstraint23solveConstraintObsoleteER11btRigidBodyS1_f__index__);
+emit_32(_ZN17btHingeConstraint8setParamEifi__index__);
+emit_32(_ZNK17btHingeConstraint8getParamEii__index__);
+emit_32(_ZNK17btHingeConstraint28calculateSerializeBufferSizeEv__index__);
+emit_32(_ZNK17btHingeConstraint9serializeEPvP12btSerializer__index__);
+emit_start(_ZTI17btHingeConstraint)
+emit_32(_ZTVN10__cxxabiv120__si_class_type_infoE+8);
+emit_32(_ZTS17btHingeConstraint);
+emit_32(_ZTI17btTypedConstraint);
+emit_start(_ZTS17btHingeConstraint)
+emit_string('17btHingeConstraint\x00');
+emit_start(_2E_str130)
+emit_string('m_flags & BT_HINGE_FLAGS_ERP_STOP\x00');
+emit_start(_2E_str231)
+emit_string('../../../../src/BulletDynamics/ConstraintSolver/btHingeConstraint.cpp\x00');
+emit_start(_2E_str332)
+emit_string('m_flags & BT_HINGE_FLAGS_CFM_STOP\x00');
+emit_start(_2E_str433)
+emit_string('m_flags & BT_HINGE_FLAGS_CFM_NORM\x00');
+emit_start(_ZTI18btConstraintSolver)
+emit_32(_ZTVN10__cxxabiv117__class_type_infoE+8);
+emit_32(_ZTS18btConstraintSolver);
+emit_start(_ZTS18btConstraintSolver)
+emit_string('18btConstraintSolver\x00');
+emit_start(_ZTV35btSequentialImpulseConstraintSolver)
+emit_32(0);
+emit_32(_ZTI35btSequentialImpulseConstraintSolver);
+emit_32(_ZN35btSequentialImpulseConstraintSolverD1Ev__index__);
+emit_32(_ZN35btSequentialImpulseConstraintSolverD0Ev__index__);
+emit_32(_ZN18btConstraintSolver12prepareSolveEii__index__);
+emit_32(_ZN35btSequentialImpulseConstraintSolver10solveGroupEPP17btCollisionObjectiPP20btPersistentManifoldiPP17btTypedConstraintiRK19btContactSolverInfoP12btIDebugDrawP12btStackAllocP12btDispatcher__index__);
+emit_32(_ZN18btConstraintSolver9allSolvedERK19btContactSolverInfoP12btIDebugDrawP12btStackAlloc__index__);
+emit_32(_ZN35btSequentialImpulseConstraintSolver5resetEv__index__);
+emit_32(_ZN35btSequentialImpulseConstraintSolver45solveGroupCacheFriendlySplitImpulseIterationsEPP17btCollisionObjectiPP20btPersistentManifoldiPP17btTypedConstraintiRK19btContactSolverInfoP12btIDebugDrawP12btStackAlloc__index__);
+emit_32(_ZN35btSequentialImpulseConstraintSolver29solveGroupCacheFriendlyFinishEPP17btCollisionObjectiPP20btPersistentManifoldiPP17btTypedConstraintiRK19btContactSolverInfoP12btIDebugDrawP12btStackAlloc__index__);
+emit_32(_ZN35btSequentialImpulseConstraintSolver28solveGroupCacheFriendlySetupEPP17btCollisionObjectiPP20btPersistentManifoldiPP17btTypedConstraintiRK19btContactSolverInfoP12btIDebugDrawP12btStackAlloc__index__);
+emit_32(_ZN35btSequentialImpulseConstraintSolver33solveGroupCacheFriendlyIterationsEPP17btCollisionObjectiPP20btPersistentManifoldiPP17btTypedConstraintiRK19btContactSolverInfoP12btIDebugDrawP12btStackAlloc__index__);
+emit_start(_ZTI35btSequentialImpulseConstraintSolver)
+emit_32(_ZTVN10__cxxabiv120__si_class_type_infoE+8);
+emit_32(_ZTS35btSequentialImpulseConstraintSolver);
+emit_32(_ZTI18btConstraintSolver);
+emit_start(_ZTS35btSequentialImpulseConstraintSolver)
+emit_string('35btSequentialImpulseConstraintSolver\x00');
+emit_start(_2E_str248)
+emit_string('m_constraintRefs.size()==0\x00');
+emit_start(_2E_str34955)
+emit_string('../../../../src/BulletDynamics/Dynamics/btRigidBody.h\x00');
+emit_start(_2E_str450)
+emit_string('solveGroup\x00');
+emit_start(_2E_str551)
+emit_string('bodies\x00');
+emit_start(_2E_str652)
+emit_string('../../../../src/BulletDynamics/ConstraintSolver/btSequentialImpulseConstraintSolver.cpp\x00');
+emit_start(_2E_str753)
+emit_string('numBodies\x00');
+emit_start(_2E_str854)
+emit_string('solveGroupCacheFriendlyIterations\x00');
+emit_start(_2E_str955)
+emit_string('pt\x00');
+emit_start(_2E_str1056)
+emit_string('solveGroupCacheFriendlySetup\x00');
+emit_start(_2E_str1157)
+emit_string('currentRow<totalNumRows\x00');
+emit_start(_2E_str76)
+emit_string('btTypedConstraintData\x00');
+emit_start(_ZTI23btDiscreteDynamicsWorld)
+emit_32(_ZTVN10__cxxabiv120__si_class_type_infoE+8);
+emit_32(_ZTS23btDiscreteDynamicsWorld);
+emit_32(_ZTI15btDynamicsWorld);
+emit_start(_ZTS23btDiscreteDynamicsWorld)
+emit_string('23btDiscreteDynamicsWorld\x00');
+emit_start(_ZTI15btDynamicsWorld)
+emit_32(_ZTVN10__cxxabiv120__si_class_type_infoE+8);
+emit_32(_ZTS15btDynamicsWorld);
+emit_32(_ZTI16btCollisionWorld);
+emit_start(_ZTS15btDynamicsWorld)
+emit_string('15btDynamicsWorld\x00');
+emit_start(_ZTIN25btSimulationIslandManager14IslandCallbackE)
+emit_32(_ZTVN10__cxxabiv117__class_type_infoE+8);
+emit_32(_ZTSN25btSimulationIslandManager14IslandCallbackE);
+emit_start(_ZTSN25btSimulationIslandManager14IslandCallbackE)
+emit_string('N25btSimulationIslandManager14IslandCallbackE\x00');
+emit_start(_ZTV34btClosestNotMeConvexResultCallback)
+emit_32(0);
+emit_32(_ZTI34btClosestNotMeConvexResultCallback);
+emit_32(_ZN34btClosestNotMeConvexResultCallbackD1Ev__index__);
+emit_32(_ZN34btClosestNotMeConvexResultCallbackD0Ev__index__);
+emit_32(_ZNK34btClosestNotMeConvexResultCallback14needsCollisionEP17btBroadphaseProxy__index__);
+emit_32(_ZN34btClosestNotMeConvexResultCallback15addSingleResultERN16btCollisionWorld17LocalConvexResultEb__index__);
+emit_start(_ZTI34btClosestNotMeConvexResultCallback)
+emit_32(_ZTVN10__cxxabiv120__si_class_type_infoE+8);
+emit_32(_ZTS34btClosestNotMeConvexResultCallback);
+emit_32(_ZTIN16btCollisionWorld27ClosestConvexResultCallbackE);
+emit_start(_ZTS34btClosestNotMeConvexResultCallback)
+emit_string('34btClosestNotMeConvexResultCallback\x00');
+emit_start(_ZTVZN23btDiscreteDynamicsWorld16solveConstraintsER19btContactSolverInfoE27InplaceSolverIslandCallback)
+emit_32(0);
+emit_32(_ZTIZN23btDiscreteDynamicsWorld16solveConstraintsER19btContactSolverInfoE27InplaceSolverIslandCallback);
+emit_32(_ZZN23btDiscreteDynamicsWorld16solveConstraintsER19btContactSolverInfoEN27InplaceSolverIslandCallbackD1Ev__index__);
+emit_32(_ZZN23btDiscreteDynamicsWorld16solveConstraintsER19btContactSolverInfoEN27InplaceSolverIslandCallbackD0Ev__index__);
+emit_32(_ZZN23btDiscreteDynamicsWorld16solveConstraintsER19btContactSolverInfoEN27InplaceSolverIslandCallback13ProcessIslandEPP17btCollisionObjectiPP20btPersistentManifoldii__index__);
+emit_start(_ZTIZN23btDiscreteDynamicsWorld16solveConstraintsER19btContactSolverInfoE27InplaceSolverIslandCallback)
+emit_32(_ZTVN10__cxxabiv120__si_class_type_infoE+8);
+emit_32(_ZTSZN23btDiscreteDynamicsWorld16solveConstraintsER19btContactSolverInfoE27InplaceSolverIslandCallback);
+emit_32(_ZTIN25btSimulationIslandManager14IslandCallbackE);
+emit_start(_ZTSZN23btDiscreteDynamicsWorld16solveConstraintsER19btContactSolverInfoE27InplaceSolverIslandCallback)
+emit_string('ZN23btDiscreteDynamicsWorld16solveConstraintsER19btContactSolverInfoE27InplaceSolverIslandCallback\x00');
+emit_start(_2E_str87)
+emit_string('predictUnconstraintMotion\x00');
+emit_start(_2E_str188)
+emit_string('calculateSimulationIslands\x00');
+emit_start(_2E_str289)
+emit_string('updateActions\x00');
+emit_start(_2E_str794)
+emit_string('integrateTransforms\x00');
+emit_start(_2E_str895)
+emit_string('CCD motion clamping\x00');
+emit_start(_2E_str996)
+emit_string('solveConstraints\x00');
+emit_start(_2E_str1097)
+emit_string('updateActivationState\x00');
+emit_start(_2E_str1198)
+emit_string('internalSingleStepSimulation\x00');
+emit_start(_2E_str1299)
+emit_string('stepSimulation\x00');
+emit_start(_2E_str13100)
+emit_string('body\x00');
+emit_start(_2E_str1461)
+emit_string('../../../../src/BulletDynamics/Dynamics/btDiscreteDynamicsWorld.cpp\x00');
+emit_start(_2E_str1562)
+emit_string('synchronizeMotionStates\x00');
+emit_start(_2E_str16101)
+emit_string('debugDrawWorld\x00');
+emit_start(_ZTV15btDynamicsWorld)
+emit_32(0);
+emit_32(_ZTI15btDynamicsWorld);
+emit_32(_ZN15btDynamicsWorldD1Ev__index__);
+emit_32(_ZN15btDynamicsWorldD0Ev__index__);
+emit_32(_ZN16btCollisionWorld11updateAabbsEv__index__);
+emit_32(_ZN16btCollisionWorld14setDebugDrawerEP12btIDebugDraw__index__);
+emit_32(_ZN16btCollisionWorld14getDebugDrawerEv__index__);
+emit_32(__cxa_pure_virtual__index__);
+emit_32(_ZN16btCollisionWorld15debugDrawObjectERK11btTransformPK16btCollisionShapeRK9btVector3__index__);
+emit_32(_ZNK16btCollisionWorld7rayTestERK9btVector3S2_RNS_17RayResultCallbackE__index__);
+emit_32(_ZN16btCollisionWorld18addCollisionObjectEP17btCollisionObjectss__index__);
+emit_32(_ZN16btCollisionWorld21removeCollisionObjectEP17btCollisionObject__index__);
+emit_32(_ZN16btCollisionWorld33performDiscreteCollisionDetectionEv__index__);
+emit_32(_ZN16btCollisionWorld9serializeEP12btSerializer__index__);
+emit_32(__cxa_pure_virtual__index__);
+emit_32(_ZN15btDynamicsWorld13addConstraintEP17btTypedConstraintb__index__);
+emit_32(_ZN15btDynamicsWorld16removeConstraintEP17btTypedConstraint__index__);
+emit_32(__cxa_pure_virtual__index__);
+emit_32(__cxa_pure_virtual__index__);
+emit_32(__cxa_pure_virtual__index__);
+emit_32(__cxa_pure_virtual__index__);
+emit_32(__cxa_pure_virtual__index__);
+emit_32(__cxa_pure_virtual__index__);
+emit_32(__cxa_pure_virtual__index__);
+emit_32(__cxa_pure_virtual__index__);
+emit_32(__cxa_pure_virtual__index__);
+emit_32(_ZNK15btDynamicsWorld17getNumConstraintsEv__index__);
+emit_32(_ZN15btDynamicsWorld13getConstraintEi__index__);
+emit_32(_ZNK15btDynamicsWorld13getConstraintEi__index__);
+emit_32(__cxa_pure_virtual__index__);
+emit_32(__cxa_pure_virtual__index__);
+emit_32(_ZN15btDynamicsWorld10addVehicleEP17btActionInterface__index__);
+emit_32(_ZN15btDynamicsWorld13removeVehicleEP17btActionInterface__index__);
+emit_32(_ZN15btDynamicsWorld12addCharacterEP17btActionInterface__index__);
+emit_32(_ZN15btDynamicsWorld15removeCharacterEP17btActionInterface__index__);
+emit_start(_ZTV23btDiscreteDynamicsWorld)
+emit_32(0);
+emit_32(_ZTI23btDiscreteDynamicsWorld);
+emit_32(_ZN23btDiscreteDynamicsWorldD1Ev__index__);
+emit_32(_ZN23btDiscreteDynamicsWorldD0Ev__index__);
+emit_32(_ZN16btCollisionWorld11updateAabbsEv__index__);
+emit_32(_ZN16btCollisionWorld14setDebugDrawerEP12btIDebugDraw__index__);
+emit_32(_ZN16btCollisionWorld14getDebugDrawerEv__index__);
+emit_32(_ZN23btDiscreteDynamicsWorld14debugDrawWorldEv__index__);
+emit_32(_ZN16btCollisionWorld15debugDrawObjectERK11btTransformPK16btCollisionShapeRK9btVector3__index__);
+emit_32(_ZNK16btCollisionWorld7rayTestERK9btVector3S2_RNS_17RayResultCallbackE__index__);
+emit_32(_ZN23btDiscreteDynamicsWorld18addCollisionObjectEP17btCollisionObjectss__index__);
+emit_32(_ZN23btDiscreteDynamicsWorld21removeCollisionObjectEP17btCollisionObject__index__);
+emit_32(_ZN16btCollisionWorld33performDiscreteCollisionDetectionEv__index__);
+emit_32(_ZN23btDiscreteDynamicsWorld9serializeEP12btSerializer__index__);
+emit_32(_ZN23btDiscreteDynamicsWorld14stepSimulationEfif__index__);
+emit_32(_ZN23btDiscreteDynamicsWorld13addConstraintEP17btTypedConstraintb__index__);
+emit_32(_ZN23btDiscreteDynamicsWorld16removeConstraintEP17btTypedConstraint__index__);
+emit_32(_ZN23btDiscreteDynamicsWorld9addActionEP17btActionInterface__index__);
+emit_32(_ZN23btDiscreteDynamicsWorld12removeActionEP17btActionInterface__index__);
+emit_32(_ZN23btDiscreteDynamicsWorld10setGravityERK9btVector3__index__);
+emit_32(_ZNK23btDiscreteDynamicsWorld10getGravityEv__index__);
+emit_32(_ZN23btDiscreteDynamicsWorld23synchronizeMotionStatesEv__index__);
+emit_32(_ZN23btDiscreteDynamicsWorld12addRigidBodyEP11btRigidBody__index__);
+emit_32(_ZN23btDiscreteDynamicsWorld15removeRigidBodyEP11btRigidBody__index__);
+emit_32(_ZN23btDiscreteDynamicsWorld19setConstraintSolverEP18btConstraintSolver__index__);
+emit_32(_ZN23btDiscreteDynamicsWorld19getConstraintSolverEv__index__);
+emit_32(_ZNK23btDiscreteDynamicsWorld17getNumConstraintsEv__index__);
+emit_32(_ZN23btDiscreteDynamicsWorld13getConstraintEi__index__);
+emit_32(_ZNK23btDiscreteDynamicsWorld13getConstraintEi__index__);
+emit_32(_ZNK23btDiscreteDynamicsWorld12getWorldTypeEv__index__);
+emit_32(_ZN23btDiscreteDynamicsWorld11clearForcesEv__index__);
+emit_32(_ZN23btDiscreteDynamicsWorld10addVehicleEP17btActionInterface__index__);
+emit_32(_ZN23btDiscreteDynamicsWorld13removeVehicleEP17btActionInterface__index__);
+emit_32(_ZN23btDiscreteDynamicsWorld12addCharacterEP17btActionInterface__index__);
+emit_32(_ZN23btDiscreteDynamicsWorld15removeCharacterEP17btActionInterface__index__);
+emit_32(_ZN23btDiscreteDynamicsWorld25predictUnconstraintMotionEf__index__);
+emit_32(_ZN23btDiscreteDynamicsWorld19integrateTransformsEf__index__);
+emit_32(_ZN23btDiscreteDynamicsWorld26calculateSimulationIslandsEv__index__);
+emit_32(_ZN23btDiscreteDynamicsWorld16solveConstraintsER19btContactSolverInfo__index__);
+emit_32(_ZN23btDiscreteDynamicsWorld28internalSingleStepSimulationEf__index__);
+emit_32(_ZN23btDiscreteDynamicsWorld18saveKinematicStateEf__index__);
+emit_32(_ZN23btDiscreteDynamicsWorld12addRigidBodyEP11btRigidBodyss__index__);
+emit_32(_ZN23btDiscreteDynamicsWorld12applyGravityEv__index__);
+emit_32(_ZN23btDiscreteDynamicsWorld11setNumTasksEi__index__);
+emit_32(_ZN23btDiscreteDynamicsWorld14updateVehiclesEf__index__);
+emit_start(_ZTV11btRigidBody)
+emit_32(0);
+emit_32(_ZTI11btRigidBody);
+emit_32(_ZN11btRigidBody24checkCollideWithOverrideEP17btCollisionObject__index__);
+emit_32(_ZN11btRigidBodyD1Ev__index__);
+emit_32(_ZN11btRigidBodyD0Ev__index__);
+emit_32(_ZN17btCollisionObject17setCollisionShapeEP16btCollisionShape__index__);
+emit_32(_ZNK11btRigidBody28calculateSerializeBufferSizeEv__index__);
+emit_32(_ZNK11btRigidBody9serializeEPvP12btSerializer__index__);
+emit_32(_ZNK11btRigidBody21serializeSingleObjectEP12btSerializer__index__);
+emit_start(_ZTI11btRigidBody)
+emit_32(_ZTVN10__cxxabiv120__si_class_type_infoE+8);
+emit_32(_ZTS11btRigidBody);
+emit_32(_ZTI17btCollisionObject);
+emit_start(_ZTS11btRigidBody)
+emit_string('11btRigidBody\x00');
+emit_start(_2E_str4144)
+emit_string('btRigidBodyFloatData\x00');
+emit_start(_ZN15CProfileManager11CurrentNodeE)
+emit_32(_ZN15CProfileManager4RootE);
+emit_start(_2E_str729)
+emit_string('Root\x00');
+emit_start(llvm_2E_eh_2E_catch_2E_all_2E_value)
+emit_32(0);
+emit_start(_ZTIN4__rw10__rw_facetE)
+emit_32(_ZTVN10__cxxabiv120__si_class_type_infoE+8);
+emit_32(_ZTSN4__rw10__rw_facetE);
+emit_32(_ZTIN4__rw17__rw_synchronizedE);
+emit_start(_ZTSN4__rw10__rw_facetE)
+emit_string('N4__rw10__rw_facetE\x00');
+emit_start(_ZTIN4__rw17__rw_synchronizedE)
+emit_32(_ZTVN10__cxxabiv117__class_type_infoE+8);
+emit_32(_ZTSN4__rw17__rw_synchronizedE);
+emit_start(_ZTSN4__rw17__rw_synchronizedE)
+emit_string('N4__rw17__rw_synchronizedE\x00');
+emit_start(_2E_str4131)
+emit_string('exception\x00');
+emit_start(_2E_str15132)
+emit_string('unexpected exception\x00');
+emit_start(_2E_str26)
+emit_fill(0,1);
+emit_start(_2E_str3133)
+emit_string('Exception: %s.\x0a\x00');
+emit_start(_2E_str47)
+emit_string('bad_alloc: out of memory\x00');
+emit_start(_2E_str5134)
+emit_string('unknown exception\x00');
+emit_start(_ZZN4__rwL13__rw_vfmtwhatEPcjiS0_E6buffer)
+emit_string('rwstderr:1\x00');
+emit_start(_2E_str7136)
+emit_string('%d\x00');
+emit_start(_ZZN4__rwL13__rw_vfmtwhatEPcjiS0_E8__catset)
+emit_32(1);
+emit_start(_ZZN4__rwL13__rw_vfmtwhatEPcjiS0_E5__cat)
+emit_32(4294967295);
+emit_start(_ZZN4__rw10__rw_throwEizE6errors)
+emit_32(_2E_str8137);
+emit_32(_2E_str9138);
+emit_32(_2E_str10139);
+emit_32(_2E_str11140);
+emit_32(_2E_str12141);
+emit_32(_2E_str138142);
+emit_32(_2E_str14143);
+emit_32(_2E_str159144);
+emit_32(_2E_str16145);
+emit_32(_2E_str17146);
+emit_32(_2E_str18147);
+emit_32(_2E_str19148);
+emit_32(_2E_str20149);
+emit_32(_2E_str21150);
+emit_32(_2E_str22151);
+emit_32(_2E_str23152);
+emit_32(_2E_str24153);
+emit_32(_2E_str25154);
+emit_32(_2E_str2610);
+emit_32(_2E_str27);
+emit_32(_2E_str28155);
+emit_32(_2E_str29156);
+emit_32(_2E_str30);
+emit_32(_2E_str31);
+emit_32(_2E_str32157);
+emit_start(_2E_str8137)
+emit_string('%s: %s: unspecified error\x00');
+emit_start(_2E_str9138)
+emit_string('%s: %s: exception\x00');
+emit_start(_2E_str10139)
+emit_string('%s: %s: unexpected exception\x00');
+emit_start(_2E_str11140)
+emit_string('%s: %s: bad_alloc: out of memory\x00');
+emit_start(_2E_str12141)
+emit_string('%s: %s: bad cast\x00');
+emit_start(_2E_str138142)
+emit_string('%s: %s: logic error\x00');
+emit_start(_2E_str14143)
+emit_string('%s: %s: domain error\x00');
+emit_start(_2E_str159144)
+emit_string('%s: %s: invalid argument\x00');
+emit_start(_2E_str16145)
+emit_string('%s: %s: length error: size %u out of range [0, %u)\x00');
+emit_start(_2E_str17146)
+emit_string('%s: %s: argument value %u out of range [0, %u)\x00');
+emit_start(_2E_str18147)
+emit_string('%s: %s: runtime error\x00');
+emit_start(_2E_str19148)
+emit_string('%s: %s: range error: invalid range [%d, %d)\x00');
+emit_start(_2E_str20149)
+emit_string('%s: %s: overflow error\x00');
+emit_start(_2E_str21150)
+emit_string('%s: %s: underflow error\x00');
+emit_start(_2E_str22151)
+emit_string('%s: stream object has set ios::failbit\x00');
+emit_start(_2E_str23152)
+emit_string('%s: stream object has set ios::badbit\x00');
+emit_start(_2E_str24153)
+emit_string('%s: stream object has set ios::eofbit\x00');
+emit_start(_2E_str25154)
+emit_string('%s: stream object has set %s\x00');
+emit_start(_2E_str2610)
+emit_string('%s: %s: facet %u not found in locale (\x22%s\x22)\x00');
+emit_start(_2E_str27)
+emit_string('%s: %s: bad locale name: \x22%s\x22\x00');
+emit_start(_2E_str28155)
+emit_string('%s: %s: failed to construct locale name\x00');
+emit_start(_2E_str29156)
+emit_string('%s: %s: conversion failed\x00');
+emit_start(_2E_str30)
+emit_string('%s: %s: invalid pointer %p\x00');
+emit_start(_2E_str31)
+emit_string('%s: %s: transformation failed\x00');
+emit_start(_2E_str32157)
+emit_string('%s: %s: bad category value: %#x\x00');
+emit_start(_2E_str33)
+emit_string('LC_COLLATE\x00');
+emit_start(_2E_str134)
+emit_string('LC_CTYPE\x00');
+emit_start(_2E_str235)
+emit_string('LC_MONETARY\x00');
+emit_start(_2E_str336)
+emit_string('LC_NUMERIC\x00');
+emit_start(_2E_str437)
+emit_string('LC_TIME\x00');
+emit_start(_ZTVN4__rw10__rw_facetE)
+emit_32(0);
+emit_32(_ZTIN4__rw10__rw_facetE);
+emit_32(_ZN4__rw10__rw_facetD1Ev__index__);
+emit_32(_ZN4__rw10__rw_facetD0Ev__index__);
+emit_start(_2E_str538)
+emit_string('C\x00');
+emit_start(_ZZN4__rw10__rw_facet9_C_manageEPS0_NS0_13_C_facet_typeEPKcPFS1_jS4_EE10std_facets)
+emit_32(_ZZN4__rw10__rw_facet9_C_manageEPS0_NS0_13_C_facet_typeEPKcPFS1_jS4_EE13std_facet_buf);
+emit_start(_ZZN4__rw10__rw_facet9_C_manageEPS0_NS0_13_C_facet_typeEPKcPFS1_jS4_EE17std_facet_bufsize)
+emit_32(416);
+emit_start(_ZZN4__rw10__rw_facetD4EvE9destroyed)
+emit_string('*** destroyed facet ***\x00');
+emit_start(_ZN4__rw9__rw_catsE)
+emit_32(1);
+emit_32(_2E_str33);
+emit_32(8193);
+emit_32(2);
+emit_32(_2E_str134);
+emit_32(49158);
+emit_32(3);
+emit_32(_2E_str235);
+emit_32(983160);
+emit_32(4);
+emit_32(_2E_str336);
+emit_32(7340928);
+emit_32(5);
+emit_32(_2E_str437);
+emit_32(25168896);
+emit_32(1);
+emit_32(_2E_str33);
+emit_32(8193);
+emit_start(_2E_str785)
+emit_string(';\x00');
+emit_start(_ZZN4__rw11__rw_locale9_C_manageEPS0_PKcE7locales)
+emit_32(_ZZN4__rw11__rw_locale9_C_manageEPS0_PKcE10locale_buf);
+emit_start(_ZZN4__rw11__rw_locale9_C_manageEPS0_PKcE14locale_bufsize)
+emit_32(8);
+emit_start(_2E_str292167)
+emit_string('LC_\x00');
+emit_start(_2E_str10100175)
+emit_string('locale::locale (const char*)\x00');
+emit_start(_2E_str12102177)
+emit_string('../stdcxx/locale_combine.cpp:650\x00');
+emit_start(_ZZN4__rwL20__rw_manage_cat_dataERiPNS_18__rw_open_cat_dataEE8catalogs)
+emit_32(_ZZN4__rwL20__rw_manage_cat_dataERiPNS_18__rw_open_cat_dataEE11catalog_buf);
+emit_start(_ZZN4__rwL20__rw_manage_cat_dataERiPNS_18__rw_open_cat_dataEE15catalog_bufsize)
+emit_32(8);
+emit_start(_2E_str115180)
+emit_string('../stdcxx/messages.cpp:308\x00');
+emit_start(_2E_str1116181)
+emit_string('__rw_cat_close (int cat)\x00');
+emit_start(_2E_str2131)
+emit_string('.\x00');
+emit_start(_2E_str4133)
+emit_string(',\x00');
+emit_start(_ZTVSt8messagesIcE)
+emit_32(0);
+emit_32(_ZTISt8messagesIcE);
+emit_32(_ZNSt8messagesIcED1Ev__index__);
+emit_32(_ZNSt8messagesIcED0Ev__index__);
+emit_32(_ZNKSt8messagesIcE7do_openERKSsRKSt6locale__index__);
+emit_32(_ZNKSt8messagesIcE6do_getEiiiRKSs__index__);
+emit_32(_ZNKSt8messagesIcE8do_closeEi__index__);
+emit_start(_ZTISt8messagesIcE)
+emit_32(_ZTVN10__cxxabiv121__vmi_class_type_infoE+8);
+emit_32(_ZTSSt8messagesIcE);
+emit_32(0);
+emit_32(2);
+emit_32(_ZTIN4__rw10__rw_facetE);
+emit_32(2);
+emit_32(_ZTISt13messages_base);
+emit_32(2);
+emit_start(_ZTSSt8messagesIcE)
+emit_string('St8messagesIcE\x00');
+emit_start(_ZTISt13messages_base)
+emit_32(_ZTVN10__cxxabiv117__class_type_infoE+8);
+emit_32(_ZTSSt13messages_base);
+emit_start(_ZTSSt13messages_base)
+emit_string('St13messages_base\x00');
+emit_start(_2E_str2360)
+emit_string('../stdcxx/include/string.cc:88\x00');
+emit_start(_2E_str3361)
+emit_string('basic_string::_C_get_rep (size_type, size_type)\x00');
+emit_start(_2E_str4362)
+emit_string('../stdcxx/include/string.cc:95\x00');
+emit_start(_ZTVSt9type_info)
+emit_32(0);
+emit_32(_ZTISt9type_info);
+emit_32(_ZNSt9type_infoD1Ev__index__);
+emit_32(_ZNSt9type_infoD0Ev__index__);
+emit_32(_ZNKSt9type_info15__is_function_pEv__index__);
+emit_32(_ZNKSt9type_info10__do_catchEPKS_PPvj__index__);
+emit_start(_ZTISt9type_info)
+emit_32(_ZTVN10__cxxabiv117__class_type_infoE+8);
+emit_32(_ZTSSt9type_info);
+emit_start(_ZTSSt9type_info)
+emit_string('St9type_info\x00');
+emit_start(_2E_str643)
+emit_string('tlsf_create: Pool size must be between %d and %d bytes.\x0a\x00');
+emit_start(_2E_str1648)
+emit_string('rb\x00');
+emit_start(_2E_str4651)
+emit_string('rb+\x00');
+emit_start(_2E_str5652)
+emit_string('wb+\x00');
+emit_start(my_ctype)
+emit_32(0);
+emit_32(32);
+emit_32(32);
+emit_32(32);
+emit_32(32);
+emit_32(32);
+emit_32(32);
+emit_32(32);
+emit_32(32);
+emit_32(32);
+emit_32(40);
+emit_32(40);
+emit_32(40);
+emit_32(40);
+emit_32(40);
+emit_32(32);
+emit_32(32);
+emit_32(32);
+emit_32(32);
+emit_32(32);
+emit_32(32);
+emit_32(32);
+emit_32(32);
+emit_32(32);
+emit_32(32);
+emit_32(32);
+emit_32(32);
+emit_32(32);
+emit_32(32);
+emit_32(32);
+emit_32(32);
+emit_32(32);
+emit_32(32);
+emit_32(72);
+emit_32(16);
+emit_32(16);
+emit_32(16);
+emit_32(16);
+emit_32(16);
+emit_32(16);
+emit_32(16);
+emit_32(16);
+emit_32(16);
+emit_32(16);
+emit_32(16);
+emit_32(16);
+emit_32(16);
+emit_32(16);
+emit_32(16);
+emit_32(132);
+emit_32(132);
+emit_32(132);
+emit_32(132);
+emit_32(132);
+emit_32(132);
+emit_32(132);
+emit_32(132);
+emit_32(132);
+emit_32(132);
+emit_32(16);
+emit_32(16);
+emit_32(16);
+emit_32(16);
+emit_32(16);
+emit_32(16);
+emit_32(16);
+emit_32(129);
+emit_32(129);
+emit_32(129);
+emit_32(129);
+emit_32(129);
+emit_32(129);
+emit_32(1);
+emit_32(1);
+emit_32(1);
+emit_32(1);
+emit_32(1);
+emit_32(1);
+emit_32(1);
+emit_32(1);
+emit_32(1);
+emit_32(1);
+emit_32(1);
+emit_32(1);
+emit_32(1);
+emit_32(1);
+emit_32(1);
+emit_32(1);
+emit_32(1);
+emit_32(1);
+emit_32(1);
+emit_32(1);
+emit_32(16);
+emit_32(16);
+emit_32(16);
+emit_32(16);
+emit_32(16);
+emit_32(16);
+emit_32(130);
+emit_32(130);
+emit_32(130);
+emit_32(130);
+emit_32(130);
+emit_32(130);
+emit_32(2);
+emit_32(2);
+emit_32(2);
+emit_32(2);
+emit_32(2);
+emit_32(2);
+emit_32(2);
+emit_32(2);
+emit_32(2);
+emit_32(2);
+emit_32(2);
+emit_32(2);
+emit_32(2);
+emit_32(2);
+emit_32(2);
+emit_32(2);
+emit_32(2);
+emit_32(2);
+emit_32(2);
+emit_32(2);
+emit_32(16);
+emit_32(16);
+emit_32(16);
+emit_32(16);
+emit_32(32);
+emit_32(0);
+emit_32(0);
+emit_32(0);
+emit_32(0);
+emit_32(0);
+emit_32(0);
+emit_32(0);
+emit_32(0);
+emit_32(0);
+emit_32(0);
+emit_32(0);
+emit_32(0);
+emit_32(0);
+emit_32(0);
+emit_32(0);
+emit_32(0);
+emit_32(0);
+emit_32(0);
+emit_32(0);
+emit_32(0);
+emit_32(0);
+emit_32(0);
+emit_32(0);
+emit_32(0);
+emit_32(0);
+emit_32(0);
+emit_32(0);
+emit_32(0);
+emit_32(0);
+emit_32(0);
+emit_32(0);
+emit_32(0);
+emit_32(0);
+emit_32(0);
+emit_32(0);
+emit_32(0);
+emit_32(0);
+emit_32(0);
+emit_32(0);
+emit_32(0);
+emit_32(0);
+emit_32(0);
+emit_32(0);
+emit_32(0);
+emit_32(0);
+emit_32(0);
+emit_32(0);
+emit_32(0);
+emit_32(0);
+emit_32(0);
+emit_32(0);
+emit_32(0);
+emit_32(0);
+emit_32(0);
+emit_32(0);
+emit_32(0);
+emit_32(0);
+emit_32(0);
+emit_32(0);
+emit_32(0);
+emit_32(0);
+emit_32(0);
+emit_32(0);
+emit_32(0);
+emit_32(0);
+emit_32(0);
+emit_32(0);
+emit_32(0);
+emit_32(0);
+emit_32(0);
+emit_32(0);
+emit_32(0);
+emit_32(0);
+emit_32(0);
+emit_32(0);
+emit_32(0);
+emit_32(0);
+emit_32(0);
+emit_32(0);
+emit_32(0);
+emit_32(0);
+emit_32(0);
+emit_32(0);
+emit_32(0);
+emit_32(0);
+emit_32(0);
+emit_32(0);
+emit_32(0);
+emit_32(0);
+emit_32(0);
+emit_32(0);
+emit_32(0);
+emit_32(0);
+emit_32(0);
+emit_32(0);
+emit_32(0);
+emit_32(0);
+emit_32(0);
+emit_32(0);
+emit_32(0);
+emit_32(0);
+emit_32(0);
+emit_32(0);
+emit_32(0);
+emit_32(0);
+emit_32(0);
+emit_32(0);
+emit_32(0);
+emit_32(0);
+emit_32(0);
+emit_32(0);
+emit_32(0);
+emit_32(0);
+emit_32(0);
+emit_32(0);
+emit_32(0);
+emit_32(0);
+emit_32(0);
+emit_32(0);
+emit_32(0);
+emit_32(0);
+emit_32(0);
+emit_32(0);
+emit_32(0);
+emit_32(0);
+emit_32(0);
+emit_32(0);
+emit_32(0);
+emit_start(_ZL8nextRand)
+emit_32(1);
+emit_start(_2E_str7654)
+emit_string('inf\x00');
+emit_start(_2E_str9655)
+emit_string('nan\x00');
+emit_start(_ZL8pad_line)
+emit_string('                \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00');
+emit_string('0000000000000000\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00');
+emit_start(_ZTI14CFileInterface)
+emit_32(_ZTVN10__cxxabiv117__class_type_infoE+8);
+emit_32(_ZTS14CFileInterface);
+emit_start(_ZTS14CFileInterface)
+emit_string('14CFileInterface\x00');
+emit_start(_ZTV11CFileSystem)
+emit_32(0);
+emit_32(_ZTI11CFileSystem);
+emit_32(_ZNK11CFileSystem12IsFileSystemEv__index__);
+emit_32(_ZN11CFileSystem5freadEPvjj__index__);
+emit_32(_ZN11CFileSystem6fwriteEPKvjj__index__);
+emit_32(_ZN11CFileSystem6fflushEv__index__);
+emit_32(_ZN11CFileSystem6fcloseEv__index__);
+emit_32(_ZN11CFileSystem5ftellEv__index__);
+emit_32(_ZN11CFileSystem4feofEv__index__);
+emit_32(_ZN11CFileSystem5fseekEli__index__);
+emit_32(_ZN11CFileSystem6ungetcEi__index__);
+emit_start(_ZTI11CFileSystem)
+emit_32(_ZTVN10__cxxabiv120__si_class_type_infoE+8);
+emit_32(_ZTS11CFileSystem);
+emit_32(_ZTI14CFileInterface);
+emit_start(_ZTS11CFileSystem)
+emit_string('11CFileSystem\x00');
+emit_start(_ZL13s_file_stdout)
+emit_32(_ZTV11CFileStdout+8);
+emit_start(_ZTV7CFileLS)
+emit_32(0);
+emit_32(_ZTI7CFileLS);
+emit_32(_ZNK14CFileInterface12IsFileSystemEv__index__);
+emit_32(_ZN7CFileLS5freadEPvjj__index__);
+emit_32(_ZN7CFileLS6fwriteEPKvjj__index__);
+emit_32(_ZN7CFileLS6fflushEv__index__);
+emit_32(_ZN7CFileLS6fcloseEv__index__);
+emit_32(_ZN7CFileLS5ftellEv__index__);
+emit_32(_ZN7CFileLS4feofEv__index__);
+emit_32(_ZN7CFileLS5fseekEli__index__);
+emit_32(_ZN7CFileLS6ungetcEi__index__);
+emit_start(_ZTI7CFileLS)
+emit_32(_ZTVN10__cxxabiv120__si_class_type_infoE+8);
+emit_32(_ZTS7CFileLS);
+emit_32(_ZTI14CFileInterface);
+emit_start(_ZTS7CFileLS)
+emit_string('7CFileLS\x00');
+emit_start(_ZTV10CFileCloud)
+emit_32(0);
+emit_32(_ZTI10CFileCloud);
+emit_32(_ZNK14CFileInterface12IsFileSystemEv__index__);
+emit_32(_ZN10CFileCloud5freadEPvjj__index__);
+emit_32(_ZN10CFileCloud6fwriteEPKvjj__index__);
+emit_32(_ZN10CFileCloud6fflushEv__index__);
+emit_32(_ZN10CFileCloud6fcloseEv__index__);
+emit_32(_ZN10CFileCloud5ftellEv__index__);
+emit_32(_ZN10CFileCloud4feofEv__index__);
+emit_32(_ZN10CFileCloud5fseekEli__index__);
+emit_32(_ZN10CFileCloud6ungetcEi__index__);
+emit_start(_ZTI10CFileCloud)
+emit_32(_ZTVN10__cxxabiv120__si_class_type_infoE+8);
+emit_32(_ZTS10CFileCloud);
+emit_32(_ZTI14CFileInterface);
+emit_start(_ZTS10CFileCloud)
+emit_string('10CFileCloud\x00');
+emit_start(_ZTV11CFileStdout)
+emit_32(0);
+emit_32(_ZTI11CFileStdout);
+emit_32(_ZNK14CFileInterface12IsFileSystemEv__index__);
+emit_32(_ZN11CFileStdout5freadEPvjj__index__);
+emit_32(_ZN11CFileStdout6fwriteEPKvjj__index__);
+emit_32(_ZN11CFileStdout6fflushEv__index__);
+emit_32(_ZN11CFileStdout6fcloseEv__index__);
+emit_32(_ZN11CFileStdout5ftellEv__index__);
+emit_32(_ZN11CFileStdout4feofEv__index__);
+emit_32(_ZN11CFileStdout5fseekEli__index__);
+emit_32(_ZN11CFileStdout6ungetcEi__index__);
+emit_start(_ZTI11CFileStdout)
+emit_32(_ZTVN10__cxxabiv120__si_class_type_infoE+8);
+emit_32(_ZTS11CFileStdout);
+emit_32(_ZTI14CFileInterface);
+emit_start(_ZTS11CFileStdout)
+emit_string('11CFileStdout\x00');
+emit_start(_2E_str31677)
+emit_string('r+b\x00');
+emit_start(_2E_str32678)
+emit_string('w+b\x00');
+emit_start(_2E_str33679)
+emit_string('/ls/\x00');
+emit_start(_2E_str34680)
+emit_string('/cloud/\x00');
+emit_start(_2E_str35681)
+emit_string('trying to open file (%s) with write attributes (%s)\x0a\x00');
+emit_start(_2E_str37683)
+emit_string('/ls\x00');
+emit_start(_2E_str38684)
+emit_string('(null)\x00');
+emit_start(_ZN12mandreel_b64L9b64_charsE)
+emit_string('ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\x00');
+emit_start(_ZN12mandreel_b64L11b64_indexesE)
+emit_string('\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff>\xff\xff\xff?456789:;<=\xff\xff\xff\xff\xff\xff\xff\x00\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\xff\xff\xff\xff\xff\xff\x1a\x1b\x1c\x1d\x1e\x1f !\x22#$%&\x27()*+,-./0123\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff');
+emit_start(_ZL25s_mandreel_internal_width)
+emit_32(1024);
+emit_start(_ZL26s_mandreel_internal_height)
+emit_32(768);
+emit_start(_2E_str779)
+emit_string('mandreel.fat\x00');
+emit_start(_2E_str3782)
+emit_string('asynctexture\x00');
+emit_start(_2E_str4783)
+emit_string('warning: asynctexture data not valid\x00');
+emit_start(_2E_str5784)
+emit_string('packtexture\x00');
+emit_start(_2E_str6785)
+emit_string('unpackedtextures\x00');
+emit_start(_ZTVN10__cxxabiv120__si_class_type_infoE)
+emit_32(0);
+emit_32(_ZTIN10__cxxabiv120__si_class_type_infoE);
+emit_32(_ZN10__cxxabiv120__si_class_type_infoD1Ev__index__);
+emit_32(_ZN10__cxxabiv120__si_class_type_infoD0Ev__index__);
+emit_32(_ZNKSt9type_info15__is_function_pEv__index__);
+emit_32(_ZNK10__cxxabiv117__class_type_info10__do_catchEPKSt9type_infoPPvj__index__);
+emit_32(_ZNK10__cxxabiv117__class_type_info11__do_upcastEPKS0_PPv__index__);
+emit_32(_ZNK10__cxxabiv120__si_class_type_info11__do_upcastEPKNS_17__class_type_infoEPKvRNS1_15__upcast_resultE__index__);
+emit_32(_ZNK10__cxxabiv120__si_class_type_info12__do_dyncastEiNS_17__class_type_info10__sub_kindEPKS1_PKvS4_S6_RNS1_16__dyncast_resultE__index__);
+emit_32(_ZNK10__cxxabiv120__si_class_type_info20__do_find_public_srcEiPKvPKNS_17__class_type_infoES2___index__);
+emit_start(_ZTIN10__cxxabiv120__si_class_type_infoE)
+emit_32(_ZTVN10__cxxabiv120__si_class_type_infoE+8);
+emit_32(_ZTSN10__cxxabiv120__si_class_type_infoE);
+emit_32(_ZTIN10__cxxabiv117__class_type_infoE);
+emit_start(_ZTSN10__cxxabiv120__si_class_type_infoE)
+emit_string('N10__cxxabiv120__si_class_type_infoE\x00');
+emit_start(_ZTIN10__cxxabiv117__class_type_infoE)
+emit_32(_ZTVN10__cxxabiv120__si_class_type_infoE+8);
+emit_32(_ZTSN10__cxxabiv117__class_type_infoE);
+emit_32(_ZTISt9type_info);
+emit_start(_ZTSN10__cxxabiv117__class_type_infoE)
+emit_string('N10__cxxabiv117__class_type_infoE\x00');
+emit_start(_ZTVN10__cxxabiv117__class_type_infoE)
+emit_32(0);
+emit_32(_ZTIN10__cxxabiv117__class_type_infoE);
+emit_32(_ZN10__cxxabiv117__class_type_infoD1Ev__index__);
+emit_32(_ZN10__cxxabiv117__class_type_infoD0Ev__index__);
+emit_32(_ZNKSt9type_info15__is_function_pEv__index__);
+emit_32(_ZNK10__cxxabiv117__class_type_info10__do_catchEPKSt9type_infoPPvj__index__);
+emit_32(_ZNK10__cxxabiv117__class_type_info11__do_upcastEPKS0_PPv__index__);
+emit_32(_ZNK10__cxxabiv117__class_type_info11__do_upcastEPKS0_PKvRNS0_15__upcast_resultE__index__);
+emit_32(_ZNK10__cxxabiv117__class_type_info12__do_dyncastEiNS0_10__sub_kindEPKS0_PKvS3_S5_RNS0_16__dyncast_resultE__index__);
+emit_32(_ZNK10__cxxabiv117__class_type_info20__do_find_public_srcEiPKvPKS0_S2___index__);
+emit_start(_ZTVN10__cxxabiv121__vmi_class_type_infoE)
+emit_32(0);
+emit_32(_ZTIN10__cxxabiv121__vmi_class_type_infoE);
+emit_32(_ZN10__cxxabiv121__vmi_class_type_infoD1Ev__index__);
+emit_32(_ZN10__cxxabiv121__vmi_class_type_infoD0Ev__index__);
+emit_32(_ZNKSt9type_info15__is_function_pEv__index__);
+emit_32(_ZNK10__cxxabiv117__class_type_info10__do_catchEPKSt9type_infoPPvj__index__);
+emit_32(_ZNK10__cxxabiv117__class_type_info11__do_upcastEPKS0_PPv__index__);
+emit_32(_ZNK10__cxxabiv121__vmi_class_type_info11__do_upcastEPKNS_17__class_type_infoEPKvRNS1_15__upcast_resultE__index__);
+emit_32(_ZNK10__cxxabiv121__vmi_class_type_info12__do_dyncastEiNS_17__class_type_info10__sub_kindEPKS1_PKvS4_S6_RNS1_16__dyncast_resultE__index__);
+emit_32(_ZNK10__cxxabiv121__vmi_class_type_info20__do_find_public_srcEiPKvPKNS_17__class_type_infoES2___index__);
+emit_start(_ZTIN10__cxxabiv121__vmi_class_type_infoE)
+emit_32(_ZTVN10__cxxabiv120__si_class_type_infoE+8);
+emit_32(_ZTSN10__cxxabiv121__vmi_class_type_infoE);
+emit_32(_ZTIN10__cxxabiv117__class_type_infoE);
+emit_start(_ZTSN10__cxxabiv121__vmi_class_type_infoE)
+emit_string('N10__cxxabiv121__vmi_class_type_infoE\x00');
+emit_start(_2E_str221)
+emit_string('g_bInit\x00');
+emit_start(_2E_str1222)
+emit_string('MandreelAudioLib.cpp\x00');
+emit_start(_2E_str3224)
+emit_string('Mandreel_Audio_GetSoundDuration warning: sound duration not found(%s)\x0a\x00');
+emit_start(_2E_str4225)
+emit_string('sandbox\x00');
+emit_start(_2E_str12233)
+emit_string('%s%s\x00');
+emit_start(_2E_str22243)
+emit_string('LoadSoundDuractions\x0a\x00');
+emit_start(_2E_str24245)
+emit_string('error: mandreel.fat file not found. Maybe the working folder is not correctly set???\x0a\x00');
+emit_start(_2E_str26247)
+emit_string('version\x00');
+emit_start(_2E_str27248)
+emit_string('1.4\x00');
+emit_start(_2E_str28249)
+emit_string('ERROR: mandreel.fat version number is (%s) instead of (%s)\x0a\x00');
+emit_start(_2E_str29250)
+emit_string('audiofile\x00');
+emit_start(_2E_str30251)
+emit_string('??\x00');
+emit_start(_2E_str31252)
+emit_string('warning: audiofile(%s) duration can\x27t be read, invalid mandreel.fat file?\x0a\x00');
+emit_start(_2E_str32253)
+emit_string('file\x00');
+emit_start(_2E_str33254)
+emit_string('dir\x00');
+emit_start(_2E_str34255)
+emit_string('!g_bInit\x00');
+emit_start(_2E_str35256)
+emit_string('Mandreel_Audio_Init()\x00');
+emit_start(_ZL13s_fifo_errors)
+emit_32(0);
+emit_32(_ZL13s_fifo_errors+8);
+emit_32(0);
+emit_32(_ZL13s_fifo_errors+8);
+emit_32(0);
+emit_32(0);
+emit_start(llvm_2E_global_ctors)
+emit_32(65535);
+emit_32(_GLOBAL__I_Landscape02Vtx__index__);
+emit_32(65535);
+emit_32(_GLOBAL__I__ZN7btClockC2Ev__index__);
+emit_32(65535);
+emit_32(_GLOBAL__I__ZN4__rw9__catfindEPNS_8__rw_catE__index__);
+emit_32(65535);
+emit_32(_GLOBAL__I__mandreel_create_tcp_socket__index__);
+emit_32(65535);
+emit_32(_GLOBAL__I__ZN5my_gl14glAttachShaderEjj__index__);
+emit_start(llvm_2E_global_dtors)
+emit_32(65535);
+emit_32(_GLOBAL__D_Landscape02Vtx__index__);
+emit_32(65535);
+emit_32(_GLOBAL__D__Z6mymainiPPc__index__);
+emit_32(65535);
+emit_32(_GLOBAL__D__ZN19btGenericMemoryPool24allocate_from_free_nodesEj__index__);
+emit_32(65535);
+emit_32(_GLOBAL__D__ZN7btClockC2Ev__index__);
+emit_32(65535);
+emit_32(_GLOBAL__D__ZN4__rw9__catfindEPNS_8__rw_catE__index__);
+emit_32(65535);
+emit_32(_GLOBAL__D__ZN8OpenGLES12OpenGLESUtil15getCurrentErrorEv__index__);
+emit_32(65535);
+emit_32(_GLOBAL__D__ZN5my_gl14glAttachShaderEjj__index__);
+emit_start(llvm_2E_used)
+emit_32(llvm_2E_eh_2E_catch_2E_all_2E_value);
+emit_32(llvm_2E_eh_2E_catch_2E_all_2E_value);
+emit_32(llvm_2E_eh_2E_catch_2E_all_2E_value);
+emit_32(llvm_2E_eh_2E_catch_2E_all_2E_value);
+emit_32(llvm_2E_eh_2E_catch_2E_all_2E_value);
+emit_32(llvm_2E_eh_2E_catch_2E_all_2E_value);
+emit_32(llvm_2E_eh_2E_catch_2E_all_2E_value);
+emit_32(llvm_2E_eh_2E_catch_2E_all_2E_value);
+emit_32(llvm_2E_eh_2E_catch_2E_all_2E_value);
+emit_32(llvm_2E_eh_2E_catch_2E_all_2E_value);
+emit_32(llvm_2E_eh_2E_catch_2E_all_2E_value);
+emit_32(llvm_2E_eh_2E_catch_2E_all_2E_value);
+emit_32(llvm_2E_eh_2E_catch_2E_all_2E_value);
+emit_32(llvm_2E_eh_2E_catch_2E_all_2E_value);
+emit_32(llvm_2E_eh_2E_catch_2E_all_2E_value);
+emit_32(llvm_2E_eh_2E_catch_2E_all_2E_value);
+emit_32(llvm_2E_eh_2E_catch_2E_all_2E_value);
+emit_32(llvm_2E_eh_2E_catch_2E_all_2E_value);
+emit_32(llvm_2E_eh_2E_catch_2E_all_2E_value);
+emit_32(llvm_2E_eh_2E_catch_2E_all_2E_value);
+emit_32(llvm_2E_eh_2E_catch_2E_all_2E_value);
+emit_32(llvm_2E_eh_2E_catch_2E_all_2E_value);
+emit_32(llvm_2E_eh_2E_catch_2E_all_2E_value);
+emit_32(llvm_2E_eh_2E_catch_2E_all_2E_value);
+emit_32(llvm_2E_eh_2E_catch_2E_all_2E_value);
+emit_32(llvm_2E_eh_2E_catch_2E_all_2E_value);
+emit_32(llvm_2E_eh_2E_catch_2E_all_2E_value);
+emit_32(llvm_2E_eh_2E_catch_2E_all_2E_value);
+emit_32(llvm_2E_eh_2E_catch_2E_all_2E_value);
+emit_32(llvm_2E_eh_2E_catch_2E_all_2E_value);
+emit_32(llvm_2E_eh_2E_catch_2E_all_2E_value);
+emit_32(llvm_2E_eh_2E_catch_2E_all_2E_value);
+emit_32(llvm_2E_eh_2E_catch_2E_all_2E_value);
+emit_32(llvm_2E_eh_2E_catch_2E_all_2E_value);
+emit_32(llvm_2E_eh_2E_catch_2E_all_2E_value);
+emit_32(llvm_2E_eh_2E_catch_2E_all_2E_value);
+emit_32(llvm_2E_eh_2E_catch_2E_all_2E_value);
+emit_32(llvm_2E_eh_2E_catch_2E_all_2E_value);
+emit_32(llvm_2E_eh_2E_catch_2E_all_2E_value);
+emit_32(llvm_2E_eh_2E_catch_2E_all_2E_value);
+emit_32(llvm_2E_eh_2E_catch_2E_all_2E_value);
+emit_32(llvm_2E_eh_2E_catch_2E_all_2E_value);
+emit_32(llvm_2E_eh_2E_catch_2E_all_2E_value);
+emit_32(llvm_2E_eh_2E_catch_2E_all_2E_value);
+emit_32(llvm_2E_eh_2E_catch_2E_all_2E_value);
+emit_32(llvm_2E_eh_2E_catch_2E_all_2E_value);
+emit_32(llvm_2E_eh_2E_catch_2E_all_2E_value);
+emit_32(llvm_2E_eh_2E_catch_2E_all_2E_value);
+emit_32(llvm_2E_eh_2E_catch_2E_all_2E_value);
+emit_32(llvm_2E_eh_2E_catch_2E_all_2E_value);
+emit_32(llvm_2E_eh_2E_catch_2E_all_2E_value);
+emit_32(llvm_2E_eh_2E_catch_2E_all_2E_value);
+emit_32(llvm_2E_eh_2E_catch_2E_all_2E_value);
+emit_32(llvm_2E_eh_2E_catch_2E_all_2E_value);
+emit_32(llvm_2E_eh_2E_catch_2E_all_2E_value);
+emit_32(llvm_2E_eh_2E_catch_2E_all_2E_value);
+emit_32(llvm_2E_eh_2E_catch_2E_all_2E_value);
+emit_32(llvm_2E_eh_2E_catch_2E_all_2E_value);
+emit_32(llvm_2E_eh_2E_catch_2E_all_2E_value);
+emit_32(llvm_2E_eh_2E_catch_2E_all_2E_value);
+emit_32(llvm_2E_eh_2E_catch_2E_all_2E_value);
+emit_32(llvm_2E_eh_2E_catch_2E_all_2E_value);
+emit_32(llvm_2E_eh_2E_catch_2E_all_2E_value);
+emit_32(llvm_2E_eh_2E_catch_2E_all_2E_value);
+emit_32(llvm_2E_eh_2E_catch_2E_all_2E_value);
+emit_32(llvm_2E_eh_2E_catch_2E_all_2E_value);
+emit_32(llvm_2E_eh_2E_catch_2E_all_2E_value);
+emit_32(llvm_2E_eh_2E_catch_2E_all_2E_value);
+emit_32(llvm_2E_eh_2E_catch_2E_all_2E_value);
+emit_32(llvm_2E_eh_2E_catch_2E_all_2E_value);
+emit_32(llvm_2E_eh_2E_catch_2E_all_2E_value);
+emit_32(llvm_2E_eh_2E_catch_2E_all_2E_value);
+emit_32(llvm_2E_eh_2E_catch_2E_all_2E_value);
+emit_32(llvm_2E_eh_2E_catch_2E_all_2E_value);
+emit_32(llvm_2E_eh_2E_catch_2E_all_2E_value);
+mandreel_call_constructors(llvm_2E_global_ctors,5,stackPos);
+}
+var _GLOBAL__D_Landscape02Vtx__index__ = register_delegate(_GLOBAL__D_Landscape02Vtx);
+var _GLOBAL__D__Z6mymainiPPc__index__ = register_delegate(_GLOBAL__D__Z6mymainiPPc);
+var _GLOBAL__D__ZN19btGenericMemoryPool24allocate_from_free_nodesEj__index__ = register_delegate(_GLOBAL__D__ZN19btGenericMemoryPool24allocate_from_free_nodesEj);
+var _GLOBAL__D__ZN4__rw9__catfindEPNS_8__rw_catE__index__ = register_delegate(_GLOBAL__D__ZN4__rw9__catfindEPNS_8__rw_catE);
+var _GLOBAL__D__ZN5my_gl14glAttachShaderEjj__index__ = register_delegate(_GLOBAL__D__ZN5my_gl14glAttachShaderEjj);
+var _GLOBAL__D__ZN7btClockC2Ev__index__ = register_delegate(_GLOBAL__D__ZN7btClockC2Ev);
+var _GLOBAL__D__ZN8OpenGLES12OpenGLESUtil15getCurrentErrorEv__index__ = register_delegate(_GLOBAL__D__ZN8OpenGLES12OpenGLESUtil15getCurrentErrorEv);
+var _GLOBAL__I_Landscape02Vtx__index__ = register_delegate(_GLOBAL__I_Landscape02Vtx);
+var _GLOBAL__I__ZN4__rw9__catfindEPNS_8__rw_catE__index__ = register_delegate(_GLOBAL__I__ZN4__rw9__catfindEPNS_8__rw_catE);
+var _GLOBAL__I__ZN5my_gl14glAttachShaderEjj__index__ = register_delegate(_GLOBAL__I__ZN5my_gl14glAttachShaderEjj);
+var _GLOBAL__I__ZN7btClockC2Ev__index__ = register_delegate(_GLOBAL__I__ZN7btClockC2Ev);
+var _GLOBAL__I__mandreel_create_tcp_socket__index__ = register_delegate(_GLOBAL__I__mandreel_create_tcp_socket);
+var _Z31MandreelDefaultDebugMsgCallbackiPKc__index__ = register_delegate(_Z31MandreelDefaultDebugMsgCallbackiPKc);
+var _ZN10CFileCloud4feofEv__index__ = register_delegate(_ZN10CFileCloud4feofEv);
+var _ZN10CFileCloud5freadEPvjj__index__ = register_delegate(_ZN10CFileCloud5freadEPvjj);
+var _ZN10CFileCloud5fseekEli__index__ = register_delegate(_ZN10CFileCloud5fseekEli);
+var _ZN10CFileCloud5ftellEv__index__ = register_delegate(_ZN10CFileCloud5ftellEv);
+var _ZN10CFileCloud6fcloseEv__index__ = register_delegate(_ZN10CFileCloud6fcloseEv);
+var _ZN10CFileCloud6fflushEv__index__ = register_delegate(_ZN10CFileCloud6fflushEv);
+var _ZN10CFileCloud6fwriteEPKvjj__index__ = register_delegate(_ZN10CFileCloud6fwriteEPKvjj);
+var _ZN10CFileCloud6ungetcEi__index__ = register_delegate(_ZN10CFileCloud6ungetcEi);
+var _ZN10__cxxabiv117__class_type_infoD0Ev__index__ = register_delegate(_ZN10__cxxabiv117__class_type_infoD0Ev);
+var _ZN10__cxxabiv117__class_type_infoD1Ev__index__ = register_delegate(_ZN10__cxxabiv117__class_type_infoD1Ev);
+var _ZN10__cxxabiv120__si_class_type_infoD0Ev__index__ = register_delegate(_ZN10__cxxabiv120__si_class_type_infoD0Ev);
+var _ZN10__cxxabiv120__si_class_type_infoD1Ev__index__ = register_delegate(_ZN10__cxxabiv120__si_class_type_infoD1Ev);
+var _ZN10__cxxabiv121__vmi_class_type_infoD0Ev__index__ = register_delegate(_ZN10__cxxabiv121__vmi_class_type_infoD0Ev);
+var _ZN10__cxxabiv121__vmi_class_type_infoD1Ev__index__ = register_delegate(_ZN10__cxxabiv121__vmi_class_type_infoD1Ev);
+var _ZN10btBoxShape15setLocalScalingERK9btVector3__index__ = register_delegate(_ZN10btBoxShape15setLocalScalingERK9btVector3);
+var _ZN10btBoxShape9setMarginEf__index__ = register_delegate(_ZN10btBoxShape9setMarginEf);
+var _ZN10btBoxShapeD0Ev__index__ = register_delegate(_ZN10btBoxShapeD0Ev);
+var _ZN10btBoxShapeD1Ev__index__ = register_delegate(_ZN10btBoxShapeD1Ev);
+var _ZN11CFileStdout4feofEv__index__ = register_delegate(_ZN11CFileStdout4feofEv);
+var _ZN11CFileStdout5freadEPvjj__index__ = register_delegate(_ZN11CFileStdout5freadEPvjj);
+var _ZN11CFileStdout5fseekEli__index__ = register_delegate(_ZN11CFileStdout5fseekEli);
+var _ZN11CFileStdout5ftellEv__index__ = register_delegate(_ZN11CFileStdout5ftellEv);
+var _ZN11CFileStdout6fcloseEv__index__ = register_delegate(_ZN11CFileStdout6fcloseEv);
+var _ZN11CFileStdout6fflushEv__index__ = register_delegate(_ZN11CFileStdout6fflushEv);
+var _ZN11CFileStdout6fwriteEPKvjj__index__ = register_delegate(_ZN11CFileStdout6fwriteEPKvjj);
+var _ZN11CFileStdout6ungetcEi__index__ = register_delegate(_ZN11CFileStdout6ungetcEi);
+var _ZN11CFileSystem4feofEv__index__ = register_delegate(_ZN11CFileSystem4feofEv);
+var _ZN11CFileSystem5freadEPvjj__index__ = register_delegate(_ZN11CFileSystem5freadEPvjj);
+var _ZN11CFileSystem5fseekEli__index__ = register_delegate(_ZN11CFileSystem5fseekEli);
+var _ZN11CFileSystem5ftellEv__index__ = register_delegate(_ZN11CFileSystem5ftellEv);
+var _ZN11CFileSystem6fcloseEv__index__ = register_delegate(_ZN11CFileSystem6fcloseEv);
+var _ZN11CFileSystem6fflushEv__index__ = register_delegate(_ZN11CFileSystem6fflushEv);
+var _ZN11CFileSystem6fwriteEPKvjj__index__ = register_delegate(_ZN11CFileSystem6fwriteEPKvjj);
+var _ZN11CFileSystem6ungetcEi__index__ = register_delegate(_ZN11CFileSystem6ungetcEi);
+var _ZN11btRigidBody24checkCollideWithOverrideEP17btCollisionObject__index__ = register_delegate(_ZN11btRigidBody24checkCollideWithOverrideEP17btCollisionObject);
+var _ZN11btRigidBodyD0Ev__index__ = register_delegate(_ZN11btRigidBodyD0Ev);
+var _ZN11btRigidBodyD1Ev__index__ = register_delegate(_ZN11btRigidBodyD1Ev);
+var _ZN12btAxisSweep3D0Ev__index__ = register_delegate(_ZN12btAxisSweep3D0Ev);
+var _ZN12btAxisSweep3D1Ev__index__ = register_delegate(_ZN12btAxisSweep3D1Ev);
+var _ZN12btConvexCast10CastResult15drawCoordSystemERK11btTransform__index__ = register_delegate(_ZN12btConvexCast10CastResult15drawCoordSystemERK11btTransform);
+var _ZN12btConvexCast10CastResult9DebugDrawEf__index__ = register_delegate(_ZN12btConvexCast10CastResult9DebugDrawEf);
+var _ZN12btConvexCast10CastResultD0Ev__index__ = register_delegate(_ZN12btConvexCast10CastResultD0Ev);
+var _ZN12btConvexCast10CastResultD1Ev__index__ = register_delegate(_ZN12btConvexCast10CastResultD1Ev);
+var _ZN12btConvexCastD0Ev__index__ = register_delegate(_ZN12btConvexCastD0Ev);
+var _ZN12btConvexCastD1Ev__index__ = register_delegate(_ZN12btConvexCastD1Ev);
+var _ZN12btDispatcherD0Ev__index__ = register_delegate(_ZN12btDispatcherD0Ev);
+var _ZN12btDispatcherD1Ev__index__ = register_delegate(_ZN12btDispatcherD1Ev);
+var _ZN13BenchmarkDemo15displayCallbackEv__index__ = register_delegate(_ZN13BenchmarkDemo15displayCallbackEv);
+var _ZN13BenchmarkDemo20clientMoveAndDisplayEv__index__ = register_delegate(_ZN13BenchmarkDemo20clientMoveAndDisplayEv);
+var _ZN13BenchmarkDemoD0Ev__index__ = register_delegate(_ZN13BenchmarkDemoD0Ev);
+var _ZN13BenchmarkDemoD1Ev__index__ = register_delegate(_ZN13BenchmarkDemoD1Ev);
+var _ZN13btConvexShapeD0Ev__index__ = register_delegate(_ZN13btConvexShapeD0Ev);
+var _ZN13btConvexShapeD1Ev__index__ = register_delegate(_ZN13btConvexShapeD1Ev);
+var _ZN13btSphereShape9setMarginEf__index__ = register_delegate(_ZN13btSphereShape9setMarginEf);
+var _ZN13btSphereShapeD0Ev__index__ = register_delegate(_ZN13btSphereShapeD0Ev);
+var _ZN13btSphereShapeD1Ev__index__ = register_delegate(_ZN13btSphereShapeD1Ev);
+var _ZN14BenchmarkDemo4D0Ev__index__ = register_delegate(_ZN14BenchmarkDemo4D0Ev);
+var _ZN14BenchmarkDemo4D1Ev__index__ = register_delegate(_ZN14BenchmarkDemo4D1Ev);
+var _ZN14btCapsuleShape15setLocalScalingERK9btVector3__index__ = register_delegate(_ZN14btCapsuleShape15setLocalScalingERK9btVector3);
+var _ZN14btCapsuleShape9setMarginEf__index__ = register_delegate(_ZN14btCapsuleShape9setMarginEf);
+var _ZN14btCapsuleShapeD0Ev__index__ = register_delegate(_ZN14btCapsuleShapeD0Ev);
+var _ZN14btCapsuleShapeD1Ev__index__ = register_delegate(_ZN14btCapsuleShapeD1Ev);
+var _ZN14btConcaveShape9setMarginEf__index__ = register_delegate(_ZN14btConcaveShape9setMarginEf);
+var _ZN14btConcaveShapeD0Ev__index__ = register_delegate(_ZN14btConcaveShapeD0Ev);
+var _ZN14btConcaveShapeD1Ev__index__ = register_delegate(_ZN14btConcaveShapeD1Ev);
+var _ZN14btOptimizedBvhD0Ev__index__ = register_delegate(_ZN14btOptimizedBvhD0Ev);
+var _ZN14btOptimizedBvhD1Ev__index__ = register_delegate(_ZN14btOptimizedBvhD1Ev);
+var _ZN14btQuantizedBvh16deSerializeFloatER23btQuantizedBvhFloatData__index__ = register_delegate(_ZN14btQuantizedBvh16deSerializeFloatER23btQuantizedBvhFloatData);
+var _ZN14btQuantizedBvh17deSerializeDoubleER24btQuantizedBvhDoubleData__index__ = register_delegate(_ZN14btQuantizedBvh17deSerializeDoubleER24btQuantizedBvhDoubleData);
+var _ZN14btQuantizedBvhD0Ev__index__ = register_delegate(_ZN14btQuantizedBvhD0Ev);
+var _ZN14btQuantizedBvhD1Ev__index__ = register_delegate(_ZN14btQuantizedBvhD1Ev);
+var _ZN15DemoApplication16getDynamicsWorldEv__index__ = register_delegate(_ZN15DemoApplication16getDynamicsWorldEv);
+var _ZN15DemoApplication20localCreateRigidBodyEfRK11btTransformP16btCollisionShape__index__ = register_delegate(_ZN15DemoApplication20localCreateRigidBodyEfRK11btTransformP16btCollisionShape);
+var _ZN15DemoApplication6myinitEv__index__ = register_delegate(_ZN15DemoApplication6myinitEv);
+var _ZN15btDynamicsWorld10addVehicleEP17btActionInterface__index__ = register_delegate(_ZN15btDynamicsWorld10addVehicleEP17btActionInterface);
+var _ZN15btDynamicsWorld12addCharacterEP17btActionInterface__index__ = register_delegate(_ZN15btDynamicsWorld12addCharacterEP17btActionInterface);
+var _ZN15btDynamicsWorld13addConstraintEP17btTypedConstraintb__index__ = register_delegate(_ZN15btDynamicsWorld13addConstraintEP17btTypedConstraintb);
+var _ZN15btDynamicsWorld13getConstraintEi__index__ = register_delegate(_ZN15btDynamicsWorld13getConstraintEi);
+var _ZN15btDynamicsWorld13removeVehicleEP17btActionInterface__index__ = register_delegate(_ZN15btDynamicsWorld13removeVehicleEP17btActionInterface);
+var _ZN15btDynamicsWorld15removeCharacterEP17btActionInterface__index__ = register_delegate(_ZN15btDynamicsWorld15removeCharacterEP17btActionInterface);
+var _ZN15btDynamicsWorld16removeConstraintEP17btTypedConstraint__index__ = register_delegate(_ZN15btDynamicsWorld16removeConstraintEP17btTypedConstraint);
+var _ZN15btDynamicsWorldD0Ev__index__ = register_delegate(_ZN15btDynamicsWorldD0Ev);
+var _ZN15btDynamicsWorldD1Ev__index__ = register_delegate(_ZN15btDynamicsWorldD1Ev);
+var _ZN15btGjkConvexCast16calcTimeOfImpactERK11btTransformS2_S2_S2_RN12btConvexCast10CastResultE__index__ = register_delegate(_ZN15btGjkConvexCast16calcTimeOfImpactERK11btTransformS2_S2_S2_RN12btConvexCast10CastResultE);
+var _ZN15btGjkConvexCastD0Ev__index__ = register_delegate(_ZN15btGjkConvexCastD0Ev);
+var _ZN15btGjkConvexCastD1Ev__index__ = register_delegate(_ZN15btGjkConvexCastD1Ev);
+var _ZN15btNullPairCache18addOverlappingPairEP17btBroadphaseProxyS1___index__ = register_delegate(_ZN15btNullPairCache18addOverlappingPairEP17btBroadphaseProxyS1_);
+var _ZN15btNullPairCache18hasDeferredRemovalEv__index__ = register_delegate(_ZN15btNullPairCache18hasDeferredRemovalEv);
+var _ZN15btNullPairCache19cleanProxyFromPairsEP17btBroadphaseProxyP12btDispatcher__index__ = register_delegate(_ZN15btNullPairCache19cleanProxyFromPairsEP17btBroadphaseProxyP12btDispatcher);
+var _ZN15btNullPairCache20cleanOverlappingPairER16btBroadphasePairP12btDispatcher__index__ = register_delegate(_ZN15btNullPairCache20cleanOverlappingPairER16btBroadphasePairP12btDispatcher);
+var _ZN15btNullPairCache20sortOverlappingPairsEP12btDispatcher__index__ = register_delegate(_ZN15btNullPairCache20sortOverlappingPairsEP12btDispatcher);
+var _ZN15btNullPairCache21removeOverlappingPairEP17btBroadphaseProxyS1_P12btDispatcher__index__ = register_delegate(_ZN15btNullPairCache21removeOverlappingPairEP17btBroadphaseProxyS1_P12btDispatcher);
+var _ZN15btNullPairCache23getOverlappingPairArrayEv__index__ = register_delegate(_ZN15btNullPairCache23getOverlappingPairArrayEv);
+var _ZN15btNullPairCache24setOverlapFilterCallbackEP23btOverlapFilterCallback__index__ = register_delegate(_ZN15btNullPairCache24setOverlapFilterCallbackEP23btOverlapFilterCallback);
+var _ZN15btNullPairCache26getOverlappingPairArrayPtrEv__index__ = register_delegate(_ZN15btNullPairCache26getOverlappingPairArrayPtrEv);
+var _ZN15btNullPairCache26processAllOverlappingPairsEP17btOverlapCallbackP12btDispatcher__index__ = register_delegate(_ZN15btNullPairCache26processAllOverlappingPairsEP17btOverlapCallbackP12btDispatcher);
+var _ZN15btNullPairCache28setInternalGhostPairCallbackEP25btOverlappingPairCallback__index__ = register_delegate(_ZN15btNullPairCache28setInternalGhostPairCallbackEP25btOverlappingPairCallback);
+var _ZN15btNullPairCache37removeOverlappingPairsContainingProxyEP17btBroadphaseProxyP12btDispatcher__index__ = register_delegate(_ZN15btNullPairCache37removeOverlappingPairsContainingProxyEP17btBroadphaseProxyP12btDispatcher);
+var _ZN15btNullPairCache8findPairEP17btBroadphaseProxyS1___index__ = register_delegate(_ZN15btNullPairCache8findPairEP17btBroadphaseProxyS1_);
+var _ZN15btNullPairCacheD0Ev__index__ = register_delegate(_ZN15btNullPairCacheD0Ev);
+var _ZN15btNullPairCacheD1Ev__index__ = register_delegate(_ZN15btNullPairCacheD1Ev);
+var _ZN15btTriangleShapeD0Ev__index__ = register_delegate(_ZN15btTriangleShapeD0Ev);
+var _ZN15btTriangleShapeD1Ev__index__ = register_delegate(_ZN15btTriangleShapeD1Ev);
+var _ZN16btBoxBoxDetector16getClosestPointsERKN36btDiscreteCollisionDetectorInterface17ClosestPointInputERNS0_6ResultEP12btIDebugDrawb__index__ = register_delegate(_ZN16btBoxBoxDetector16getClosestPointsERKN36btDiscreteCollisionDetectorInterface17ClosestPointInputERNS0_6ResultEP12btIDebugDrawb);
+var _ZN16btBoxBoxDetectorD0Ev__index__ = register_delegate(_ZN16btBoxBoxDetectorD0Ev);
+var _ZN16btBoxBoxDetectorD1Ev__index__ = register_delegate(_ZN16btBoxBoxDetectorD1Ev);
+var _ZN16btCollisionWorld11updateAabbsEv__index__ = register_delegate(_ZN16btCollisionWorld11updateAabbsEv);
+var _ZN16btCollisionWorld14debugDrawWorldEv__index__ = register_delegate(_ZN16btCollisionWorld14debugDrawWorldEv);
+var _ZN16btCollisionWorld14getDebugDrawerEv__index__ = register_delegate(_ZN16btCollisionWorld14getDebugDrawerEv);
+var _ZN16btCollisionWorld14setDebugDrawerEP12btIDebugDraw__index__ = register_delegate(_ZN16btCollisionWorld14setDebugDrawerEP12btIDebugDraw);
+var _ZN16btCollisionWorld15debugDrawObjectERK11btTransformPK16btCollisionShapeRK9btVector3__index__ = register_delegate(_ZN16btCollisionWorld15debugDrawObjectERK11btTransformPK16btCollisionShapeRK9btVector3);
+var _ZN16btCollisionWorld18addCollisionObjectEP17btCollisionObjectss__index__ = register_delegate(_ZN16btCollisionWorld18addCollisionObjectEP17btCollisionObjectss);
+var _ZN16btCollisionWorld21removeCollisionObjectEP17btCollisionObject__index__ = register_delegate(_ZN16btCollisionWorld21removeCollisionObjectEP17btCollisionObject);
+var _ZN16btCollisionWorld24ClosestRayResultCallback15addSingleResultERNS_14LocalRayResultEb__index__ = register_delegate(_ZN16btCollisionWorld24ClosestRayResultCallback15addSingleResultERNS_14LocalRayResultEb);
+var _ZN16btCollisionWorld24ClosestRayResultCallbackD0Ev__index__ = register_delegate(_ZN16btCollisionWorld24ClosestRayResultCallbackD0Ev);
+var _ZN16btCollisionWorld24ClosestRayResultCallbackD1Ev__index__ = register_delegate(_ZN16btCollisionWorld24ClosestRayResultCallbackD1Ev);
+var _ZN16btCollisionWorld27ClosestConvexResultCallback15addSingleResultERNS_17LocalConvexResultEb__index__ = register_delegate(_ZN16btCollisionWorld27ClosestConvexResultCallback15addSingleResultERNS_17LocalConvexResultEb);
+var _ZN16btCollisionWorld27ClosestConvexResultCallbackD0Ev__index__ = register_delegate(_ZN16btCollisionWorld27ClosestConvexResultCallbackD0Ev);
+var _ZN16btCollisionWorld27ClosestConvexResultCallbackD1Ev__index__ = register_delegate(_ZN16btCollisionWorld27ClosestConvexResultCallbackD1Ev);
+var _ZN16btCollisionWorld33performDiscreteCollisionDetectionEv__index__ = register_delegate(_ZN16btCollisionWorld33performDiscreteCollisionDetectionEv);
+var _ZN16btCollisionWorld9serializeEP12btSerializer__index__ = register_delegate(_ZN16btCollisionWorld9serializeEP12btSerializer);
+var _ZN16btCollisionWorldD0Ev__index__ = register_delegate(_ZN16btCollisionWorldD0Ev);
+var _ZN16btCollisionWorldD1Ev__index__ = register_delegate(_ZN16btCollisionWorldD1Ev);
+var _ZN16btDbvtBroadphase10printStatsEv__index__ = register_delegate(_ZN16btDbvtBroadphase10printStatsEv);
+var _ZN16btDbvtBroadphase11createProxyERK9btVector3S2_iPvssP12btDispatcherS3___index__ = register_delegate(_ZN16btDbvtBroadphase11createProxyERK9btVector3S2_iPvssP12btDispatcherS3_);
+var _ZN16btDbvtBroadphase12destroyProxyEP17btBroadphaseProxyP12btDispatcher__index__ = register_delegate(_ZN16btDbvtBroadphase12destroyProxyEP17btBroadphaseProxyP12btDispatcher);
+var _ZN16btDbvtBroadphase23getOverlappingPairCacheEv__index__ = register_delegate(_ZN16btDbvtBroadphase23getOverlappingPairCacheEv);
+var _ZN16btDbvtBroadphase25calculateOverlappingPairsEP12btDispatcher__index__ = register_delegate(_ZN16btDbvtBroadphase25calculateOverlappingPairsEP12btDispatcher);
+var _ZN16btDbvtBroadphase7rayTestERK9btVector3S2_R23btBroadphaseRayCallbackS2_S2___index__ = register_delegate(_ZN16btDbvtBroadphase7rayTestERK9btVector3S2_R23btBroadphaseRayCallbackS2_S2_);
+var _ZN16btDbvtBroadphase7setAabbEP17btBroadphaseProxyRK9btVector3S4_P12btDispatcher__index__ = register_delegate(_ZN16btDbvtBroadphase7setAabbEP17btBroadphaseProxyRK9btVector3S4_P12btDispatcher);
+var _ZN16btDbvtBroadphase8aabbTestERK9btVector3S2_R24btBroadphaseAabbCallback__index__ = register_delegate(_ZN16btDbvtBroadphase8aabbTestERK9btVector3S2_R24btBroadphaseAabbCallback);
+var _ZN16btDbvtBroadphase9resetPoolEP12btDispatcher__index__ = register_delegate(_ZN16btDbvtBroadphase9resetPoolEP12btDispatcher);
+var _ZN16btDbvtBroadphaseD0Ev__index__ = register_delegate(_ZN16btDbvtBroadphaseD0Ev);
+var _ZN16btDbvtBroadphaseD1Ev__index__ = register_delegate(_ZN16btDbvtBroadphaseD1Ev);
+var _ZN16btEmptyAlgorithm10CreateFunc24CreateCollisionAlgorithmER36btCollisionAlgorithmConstructionInfoP17btCollisionObjectS4___index__ = register_delegate(_ZN16btEmptyAlgorithm10CreateFunc24CreateCollisionAlgorithmER36btCollisionAlgorithmConstructionInfoP17btCollisionObjectS4_);
+var _ZN16btEmptyAlgorithm10CreateFuncD0Ev__index__ = register_delegate(_ZN16btEmptyAlgorithm10CreateFuncD0Ev);
+var _ZN16btEmptyAlgorithm10CreateFuncD1Ev__index__ = register_delegate(_ZN16btEmptyAlgorithm10CreateFuncD1Ev);
+var _ZN16btEmptyAlgorithm16processCollisionEP17btCollisionObjectS1_RK16btDispatcherInfoP16btManifoldResult__index__ = register_delegate(_ZN16btEmptyAlgorithm16processCollisionEP17btCollisionObjectS1_RK16btDispatcherInfoP16btManifoldResult);
+var _ZN16btEmptyAlgorithm21calculateTimeOfImpactEP17btCollisionObjectS1_RK16btDispatcherInfoP16btManifoldResult__index__ = register_delegate(_ZN16btEmptyAlgorithm21calculateTimeOfImpactEP17btCollisionObjectS1_RK16btDispatcherInfoP16btManifoldResult);
+var _ZN16btEmptyAlgorithm22getAllContactManifoldsER20btAlignedObjectArrayIP20btPersistentManifoldE__index__ = register_delegate(_ZN16btEmptyAlgorithm22getAllContactManifoldsER20btAlignedObjectArrayIP20btPersistentManifoldE);
+var _ZN16btEmptyAlgorithmD0Ev__index__ = register_delegate(_ZN16btEmptyAlgorithmD0Ev);
+var _ZN16btEmptyAlgorithmD1Ev__index__ = register_delegate(_ZN16btEmptyAlgorithmD1Ev);
+var _ZN16btManifoldResult15addContactPointERK9btVector3S2_f__index__ = register_delegate(_ZN16btManifoldResult15addContactPointERK9btVector3S2_f);
+var _ZN16btManifoldResult20setShapeIdentifiersAEii__index__ = register_delegate(_ZN16btManifoldResult20setShapeIdentifiersAEii);
+var _ZN16btManifoldResult20setShapeIdentifiersBEii__index__ = register_delegate(_ZN16btManifoldResult20setShapeIdentifiersBEii);
+var _ZN16btManifoldResultD0Ev__index__ = register_delegate(_ZN16btManifoldResultD0Ev);
+var _ZN16btManifoldResultD1Ev__index__ = register_delegate(_ZN16btManifoldResultD1Ev);
+var _ZN16btPointCollector15addContactPointERK9btVector3S2_f__index__ = register_delegate(_ZN16btPointCollector15addContactPointERK9btVector3S2_f);
+var _ZN16btPointCollector20setShapeIdentifiersAEii__index__ = register_delegate(_ZN16btPointCollector20setShapeIdentifiersAEii);
+var _ZN16btPointCollector20setShapeIdentifiersBEii__index__ = register_delegate(_ZN16btPointCollector20setShapeIdentifiersBEii);
+var _ZN16btPointCollectorD0Ev__index__ = register_delegate(_ZN16btPointCollectorD0Ev);
+var _ZN16btPointCollectorD1Ev__index__ = register_delegate(_ZN16btPointCollectorD1Ev);
+var _ZN17DebugDrawcallback15processTriangleEP9btVector3ii__index__ = register_delegate(_ZN17DebugDrawcallback15processTriangleEP9btVector3ii);
+var _ZN17DebugDrawcallback28internalProcessTriangleIndexEP9btVector3ii__index__ = register_delegate(_ZN17DebugDrawcallback28internalProcessTriangleIndexEP9btVector3ii);
+var _ZN17DebugDrawcallbackD0Ev__index__ = register_delegate(_ZN17DebugDrawcallbackD0Ev);
+var _ZN17DebugDrawcallbackD1Ev__index__ = register_delegate(_ZN17DebugDrawcallbackD1Ev);
+var _ZN17btCollisionObject17setCollisionShapeEP16btCollisionShape__index__ = register_delegate(_ZN17btCollisionObject17setCollisionShapeEP16btCollisionShape);
+var _ZN17btCollisionObject24checkCollideWithOverrideEPS___index__ = register_delegate(_ZN17btCollisionObject24checkCollideWithOverrideEPS_);
+var _ZN17btCollisionObjectD0Ev__index__ = register_delegate(_ZN17btCollisionObjectD0Ev);
+var _ZN17btCollisionObjectD1Ev__index__ = register_delegate(_ZN17btCollisionObjectD1Ev);
+var _ZN17btConvexHullShape15setLocalScalingERK9btVector3__index__ = register_delegate(_ZN17btConvexHullShape15setLocalScalingERK9btVector3);
+var _ZN17btConvexHullShapeD0Ev__index__ = register_delegate(_ZN17btConvexHullShapeD0Ev);
+var _ZN17btConvexHullShapeD1Ev__index__ = register_delegate(_ZN17btConvexHullShapeD1Ev);
+var _ZN17btGjkPairDetector16getClosestPointsERKN36btDiscreteCollisionDetectorInterface17ClosestPointInputERNS0_6ResultEP12btIDebugDrawb__index__ = register_delegate(_ZN17btGjkPairDetector16getClosestPointsERKN36btDiscreteCollisionDetectorInterface17ClosestPointInputERNS0_6ResultEP12btIDebugDrawb);
+var _ZN17btGjkPairDetectorD0Ev__index__ = register_delegate(_ZN17btGjkPairDetectorD0Ev);
+var _ZN17btGjkPairDetectorD1Ev__index__ = register_delegate(_ZN17btGjkPairDetectorD1Ev);
+var _ZN17btHingeConstraint13buildJacobianEv__index__ = register_delegate(_ZN17btHingeConstraint13buildJacobianEv);
+var _ZN17btHingeConstraint8getInfo1EPN17btTypedConstraint17btConstraintInfo1E__index__ = register_delegate(_ZN17btHingeConstraint8getInfo1EPN17btTypedConstraint17btConstraintInfo1E);
+var _ZN17btHingeConstraint8getInfo2EPN17btTypedConstraint17btConstraintInfo2E__index__ = register_delegate(_ZN17btHingeConstraint8getInfo2EPN17btTypedConstraint17btConstraintInfo2E);
+var _ZN17btHingeConstraint8setParamEifi__index__ = register_delegate(_ZN17btHingeConstraint8setParamEifi);
+var _ZN17btHingeConstraintD0Ev__index__ = register_delegate(_ZN17btHingeConstraintD0Ev);
+var _ZN17btHingeConstraintD1Ev__index__ = register_delegate(_ZN17btHingeConstraintD1Ev);
+var _ZN17btTypedConstraint21setupSolverConstraintER20btAlignedObjectArrayI18btSolverConstraintEiif__index__ = register_delegate(_ZN17btTypedConstraint21setupSolverConstraintER20btAlignedObjectArrayI18btSolverConstraintEiif);
+var _ZN17btTypedConstraint23solveConstraintObsoleteER11btRigidBodyS1_f__index__ = register_delegate(_ZN17btTypedConstraint23solveConstraintObsoleteER11btRigidBodyS1_f);
+var _ZN18btConstraintSolver12prepareSolveEii__index__ = register_delegate(_ZN18btConstraintSolver12prepareSolveEii);
+var _ZN18btConstraintSolver9allSolvedERK19btContactSolverInfoP12btIDebugDrawP12btStackAlloc__index__ = register_delegate(_ZN18btConstraintSolver9allSolvedERK19btContactSolverInfoP12btIDebugDrawP12btStackAlloc);
+var _ZN18btDbvtTreeCollider7ProcessEPK10btDbvtNode__index__ = register_delegate(_ZN18btDbvtTreeCollider7ProcessEPK10btDbvtNode);
+var _ZN18btDbvtTreeCollider7ProcessEPK10btDbvtNodeS2___index__ = register_delegate(_ZN18btDbvtTreeCollider7ProcessEPK10btDbvtNodeS2_);
+var _ZN18btDbvtTreeColliderD0Ev__index__ = register_delegate(_ZN18btDbvtTreeColliderD0Ev);
+var _ZN18btDbvtTreeColliderD1Ev__index__ = register_delegate(_ZN18btDbvtTreeColliderD1Ev);
+var _ZN18btTriangleCallbackD0Ev__index__ = register_delegate(_ZN18btTriangleCallbackD0Ev);
+var _ZN18btTriangleCallbackD1Ev__index__ = register_delegate(_ZN18btTriangleCallbackD1Ev);
+var _ZN19BroadphaseRayTester7ProcessEPK10btDbvtNode__index__ = register_delegate(_ZN19BroadphaseRayTester7ProcessEPK10btDbvtNode);
+var _ZN19BroadphaseRayTesterD0Ev__index__ = register_delegate(_ZN19BroadphaseRayTesterD0Ev);
+var _ZN19BroadphaseRayTesterD1Ev__index__ = register_delegate(_ZN19BroadphaseRayTesterD1Ev);
+var _ZN19btSingleRayCallback7processEPK17btBroadphaseProxy__index__ = register_delegate(_ZN19btSingleRayCallback7processEPK17btBroadphaseProxy);
+var _ZN19btSingleRayCallbackD0Ev__index__ = register_delegate(_ZN19btSingleRayCallbackD0Ev);
+var _ZN19btSingleRayCallbackD1Ev__index__ = register_delegate(_ZN19btSingleRayCallbackD1Ev);
+var _ZN19btTriangleMeshShape15setLocalScalingERK9btVector3__index__ = register_delegate(_ZN19btTriangleMeshShape15setLocalScalingERK9btVector3);
+var _ZN19btTriangleMeshShapeD0Ev__index__ = register_delegate(_ZN19btTriangleMeshShapeD0Ev);
+var _ZN19btTriangleMeshShapeD1Ev__index__ = register_delegate(_ZN19btTriangleMeshShapeD1Ev);
+var _ZN20BroadphaseAabbTester7ProcessEPK10btDbvtNode__index__ = register_delegate(_ZN20BroadphaseAabbTester7ProcessEPK10btDbvtNode);
+var _ZN20BroadphaseAabbTesterD0Ev__index__ = register_delegate(_ZN20BroadphaseAabbTesterD0Ev);
+var _ZN20BroadphaseAabbTesterD1Ev__index__ = register_delegate(_ZN20BroadphaseAabbTesterD1Ev);
+var _ZN20btAxisSweep3InternalItE10printStatsEv__index__ = register_delegate(_ZN20btAxisSweep3InternalItE10printStatsEv);
+var _ZN20btAxisSweep3InternalItE11createProxyERK9btVector3S3_iPvssP12btDispatcherS4___index__ = register_delegate(_ZN20btAxisSweep3InternalItE11createProxyERK9btVector3S3_iPvssP12btDispatcherS4_);
+var _ZN20btAxisSweep3InternalItE12destroyProxyEP17btBroadphaseProxyP12btDispatcher__index__ = register_delegate(_ZN20btAxisSweep3InternalItE12destroyProxyEP17btBroadphaseProxyP12btDispatcher);
+var _ZN20btAxisSweep3InternalItE23getOverlappingPairCacheEv__index__ = register_delegate(_ZN20btAxisSweep3InternalItE23getOverlappingPairCacheEv);
+var _ZN20btAxisSweep3InternalItE25calculateOverlappingPairsEP12btDispatcher__index__ = register_delegate(_ZN20btAxisSweep3InternalItE25calculateOverlappingPairsEP12btDispatcher);
+var _ZN20btAxisSweep3InternalItE7rayTestERK9btVector3S3_R23btBroadphaseRayCallbackS3_S3___index__ = register_delegate(_ZN20btAxisSweep3InternalItE7rayTestERK9btVector3S3_R23btBroadphaseRayCallbackS3_S3_);
+var _ZN20btAxisSweep3InternalItE7setAabbEP17btBroadphaseProxyRK9btVector3S5_P12btDispatcher__index__ = register_delegate(_ZN20btAxisSweep3InternalItE7setAabbEP17btBroadphaseProxyRK9btVector3S5_P12btDispatcher);
+var _ZN20btAxisSweep3InternalItE8aabbTestERK9btVector3S3_R24btBroadphaseAabbCallback__index__ = register_delegate(_ZN20btAxisSweep3InternalItE8aabbTestERK9btVector3S3_R24btBroadphaseAabbCallback);
+var _ZN20btAxisSweep3InternalItE9resetPoolEP12btDispatcher__index__ = register_delegate(_ZN20btAxisSweep3InternalItE9resetPoolEP12btDispatcher);
+var _ZN20btAxisSweep3InternalItED0Ev__index__ = register_delegate(_ZN20btAxisSweep3InternalItED0Ev);
+var _ZN20btAxisSweep3InternalItED1Ev__index__ = register_delegate(_ZN20btAxisSweep3InternalItED1Ev);
+var _ZN20btCollisionAlgorithmD0Ev__index__ = register_delegate(_ZN20btCollisionAlgorithmD0Ev);
+var _ZN20btCollisionAlgorithmD1Ev__index__ = register_delegate(_ZN20btCollisionAlgorithmD1Ev);
+var _ZN20btDefaultMotionState17setWorldTransformERK11btTransform__index__ = register_delegate(_ZN20btDefaultMotionState17setWorldTransformERK11btTransform);
+var _ZN20btDefaultMotionStateD0Ev__index__ = register_delegate(_ZN20btDefaultMotionStateD0Ev);
+var _ZN20btDefaultMotionStateD1Ev__index__ = register_delegate(_ZN20btDefaultMotionStateD1Ev);
+var _ZN21SupportVertexCallback15processTriangleEP9btVector3ii__index__ = register_delegate(_ZN21SupportVertexCallback15processTriangleEP9btVector3ii);
+var _ZN21SupportVertexCallbackD0Ev__index__ = register_delegate(_ZN21SupportVertexCallbackD0Ev);
+var _ZN21SupportVertexCallbackD1Ev__index__ = register_delegate(_ZN21SupportVertexCallbackD1Ev);
+var _ZN21btCollisionDispatcher13clearManifoldEP20btPersistentManifold__index__ = register_delegate(_ZN21btCollisionDispatcher13clearManifoldEP20btPersistentManifold);
+var _ZN21btCollisionDispatcher13findAlgorithmEP17btCollisionObjectS1_P20btPersistentManifold__index__ = register_delegate(_ZN21btCollisionDispatcher13findAlgorithmEP17btCollisionObjectS1_P20btPersistentManifold);
+var _ZN21btCollisionDispatcher13needsResponseEP17btCollisionObjectS1___index__ = register_delegate(_ZN21btCollisionDispatcher13needsResponseEP17btCollisionObjectS1_);
+var _ZN21btCollisionDispatcher14getNewManifoldEPvS0___index__ = register_delegate(_ZN21btCollisionDispatcher14getNewManifoldEPvS0_);
+var _ZN21btCollisionDispatcher14needsCollisionEP17btCollisionObjectS1___index__ = register_delegate(_ZN21btCollisionDispatcher14needsCollisionEP17btCollisionObjectS1_);
+var _ZN21btCollisionDispatcher15releaseManifoldEP20btPersistentManifold__index__ = register_delegate(_ZN21btCollisionDispatcher15releaseManifoldEP20btPersistentManifold);
+var _ZN21btCollisionDispatcher19defaultNearCallbackER16btBroadphasePairRS_RK16btDispatcherInfo__index__ = register_delegate(_ZN21btCollisionDispatcher19defaultNearCallbackER16btBroadphasePairRS_RK16btDispatcherInfo);
+var _ZN21btCollisionDispatcher22freeCollisionAlgorithmEPv__index__ = register_delegate(_ZN21btCollisionDispatcher22freeCollisionAlgorithmEPv);
+var _ZN21btCollisionDispatcher25dispatchAllCollisionPairsEP22btOverlappingPairCacheRK16btDispatcherInfoP12btDispatcher__index__ = register_delegate(_ZN21btCollisionDispatcher25dispatchAllCollisionPairsEP22btOverlappingPairCacheRK16btDispatcherInfoP12btDispatcher);
+var _ZN21btCollisionDispatcher26allocateCollisionAlgorithmEi__index__ = register_delegate(_ZN21btCollisionDispatcher26allocateCollisionAlgorithmEi);
+var _ZN21btCollisionDispatcher26getInternalManifoldPointerEv__index__ = register_delegate(_ZN21btCollisionDispatcher26getInternalManifoldPointerEv);
+var _ZN21btCollisionDispatcher26getManifoldByIndexInternalEi__index__ = register_delegate(_ZN21btCollisionDispatcher26getManifoldByIndexInternalEi);
+var _ZN21btCollisionDispatcherD0Ev__index__ = register_delegate(_ZN21btCollisionDispatcherD0Ev);
+var _ZN21btCollisionDispatcherD1Ev__index__ = register_delegate(_ZN21btCollisionDispatcherD1Ev);
+var _ZN21btConeTwistConstraint13buildJacobianEv__index__ = register_delegate(_ZN21btConeTwistConstraint13buildJacobianEv);
+var _ZN21btConeTwistConstraint23solveConstraintObsoleteER11btRigidBodyS1_f__index__ = register_delegate(_ZN21btConeTwistConstraint23solveConstraintObsoleteER11btRigidBodyS1_f);
+var _ZN21btConeTwistConstraint8getInfo1EPN17btTypedConstraint17btConstraintInfo1E__index__ = register_delegate(_ZN21btConeTwistConstraint8getInfo1EPN17btTypedConstraint17btConstraintInfo1E);
+var _ZN21btConeTwistConstraint8getInfo2EPN17btTypedConstraint17btConstraintInfo2E__index__ = register_delegate(_ZN21btConeTwistConstraint8getInfo2EPN17btTypedConstraint17btConstraintInfo2E);
+var _ZN21btConeTwistConstraint8setParamEifi__index__ = register_delegate(_ZN21btConeTwistConstraint8setParamEifi);
+var _ZN21btConeTwistConstraintD0Ev__index__ = register_delegate(_ZN21btConeTwistConstraintD0Ev);
+var _ZN21btConeTwistConstraintD1Ev__index__ = register_delegate(_ZN21btConeTwistConstraintD1Ev);
+var _ZN21btConvexInternalShape15setLocalScalingERK9btVector3__index__ = register_delegate(_ZN21btConvexInternalShape15setLocalScalingERK9btVector3);
+var _ZN21btConvexInternalShape9setMarginEf__index__ = register_delegate(_ZN21btConvexInternalShape9setMarginEf);
+var _ZN21btSingleSweepCallback7processEPK17btBroadphaseProxy__index__ = register_delegate(_ZN21btSingleSweepCallback7processEPK17btBroadphaseProxy);
+var _ZN21btSingleSweepCallbackD0Ev__index__ = register_delegate(_ZN21btSingleSweepCallbackD0Ev);
+var _ZN21btSingleSweepCallbackD1Ev__index__ = register_delegate(_ZN21btSingleSweepCallbackD1Ev);
+var _ZN22SphereTriangleDetector16getClosestPointsERKN36btDiscreteCollisionDetectorInterface17ClosestPointInputERNS0_6ResultEP12btIDebugDrawb__index__ = register_delegate(_ZN22SphereTriangleDetector16getClosestPointsERKN36btDiscreteCollisionDetectorInterface17ClosestPointInputERNS0_6ResultEP12btIDebugDrawb);
+var _ZN22SphereTriangleDetectorD0Ev__index__ = register_delegate(_ZN22SphereTriangleDetectorD0Ev);
+var _ZN22SphereTriangleDetectorD1Ev__index__ = register_delegate(_ZN22SphereTriangleDetectorD1Ev);
+var _ZN22btBvhTriangleMeshShape15setLocalScalingERK9btVector3__index__ = register_delegate(_ZN22btBvhTriangleMeshShape15setLocalScalingERK9btVector3);
+var _ZN22btBvhTriangleMeshShapeD0Ev__index__ = register_delegate(_ZN22btBvhTriangleMeshShapeD0Ev);
+var _ZN22btBvhTriangleMeshShapeD1Ev__index__ = register_delegate(_ZN22btBvhTriangleMeshShapeD1Ev);
+var _ZN22btCompoundLeafCallback7ProcessEPK10btDbvtNode__index__ = register_delegate(_ZN22btCompoundLeafCallback7ProcessEPK10btDbvtNode);
+var _ZN22btCompoundLeafCallbackD0Ev__index__ = register_delegate(_ZN22btCompoundLeafCallbackD0Ev);
+var _ZN22btCompoundLeafCallbackD1Ev__index__ = register_delegate(_ZN22btCompoundLeafCallbackD1Ev);
+var _ZN22btSubsimplexConvexCast16calcTimeOfImpactERK11btTransformS2_S2_S2_RN12btConvexCast10CastResultE__index__ = register_delegate(_ZN22btSubsimplexConvexCast16calcTimeOfImpactERK11btTransformS2_S2_S2_RN12btConvexCast10CastResultE);
+var _ZN22btSubsimplexConvexCastD0Ev__index__ = register_delegate(_ZN22btSubsimplexConvexCastD0Ev);
+var _ZN22btSubsimplexConvexCastD1Ev__index__ = register_delegate(_ZN22btSubsimplexConvexCastD1Ev);
+var _ZN23btCollisionPairCallback14processOverlapER16btBroadphasePair__index__ = register_delegate(_ZN23btCollisionPairCallback14processOverlapER16btBroadphasePair);
+var _ZN23btCollisionPairCallbackD0Ev__index__ = register_delegate(_ZN23btCollisionPairCallbackD0Ev);
+var _ZN23btCollisionPairCallbackD1Ev__index__ = register_delegate(_ZN23btCollisionPairCallbackD1Ev);
+var _ZN23btConvexConvexAlgorithm10CreateFunc24CreateCollisionAlgorithmER36btCollisionAlgorithmConstructionInfoP17btCollisionObjectS4___index__ = register_delegate(_ZN23btConvexConvexAlgorithm10CreateFunc24CreateCollisionAlgorithmER36btCollisionAlgorithmConstructionInfoP17btCollisionObjectS4_);
+var _ZN23btConvexConvexAlgorithm10CreateFuncD0Ev__index__ = register_delegate(_ZN23btConvexConvexAlgorithm10CreateFuncD0Ev);
+var _ZN23btConvexConvexAlgorithm10CreateFuncD1Ev__index__ = register_delegate(_ZN23btConvexConvexAlgorithm10CreateFuncD1Ev);
+var _ZN23btConvexConvexAlgorithm16processCollisionEP17btCollisionObjectS1_RK16btDispatcherInfoP16btManifoldResult__index__ = register_delegate(_ZN23btConvexConvexAlgorithm16processCollisionEP17btCollisionObjectS1_RK16btDispatcherInfoP16btManifoldResult);
+var _ZN23btConvexConvexAlgorithm21calculateTimeOfImpactEP17btCollisionObjectS1_RK16btDispatcherInfoP16btManifoldResult__index__ = register_delegate(_ZN23btConvexConvexAlgorithm21calculateTimeOfImpactEP17btCollisionObjectS1_RK16btDispatcherInfoP16btManifoldResult);
+var _ZN23btConvexConvexAlgorithm22getAllContactManifoldsER20btAlignedObjectArrayIP20btPersistentManifoldE__index__ = register_delegate(_ZN23btConvexConvexAlgorithm22getAllContactManifoldsER20btAlignedObjectArrayIP20btPersistentManifoldE);
+var _ZN23btConvexConvexAlgorithmD0Ev__index__ = register_delegate(_ZN23btConvexConvexAlgorithmD0Ev);
+var _ZN23btConvexConvexAlgorithmD1Ev__index__ = register_delegate(_ZN23btConvexConvexAlgorithmD1Ev);
+var _ZN23btDiscreteDynamicsWorld10addVehicleEP17btActionInterface__index__ = register_delegate(_ZN23btDiscreteDynamicsWorld10addVehicleEP17btActionInterface);
+var _ZN23btDiscreteDynamicsWorld10setGravityERK9btVector3__index__ = register_delegate(_ZN23btDiscreteDynamicsWorld10setGravityERK9btVector3);
+var _ZN23btDiscreteDynamicsWorld11clearForcesEv__index__ = register_delegate(_ZN23btDiscreteDynamicsWorld11clearForcesEv);
+var _ZN23btDiscreteDynamicsWorld11setNumTasksEi__index__ = register_delegate(_ZN23btDiscreteDynamicsWorld11setNumTasksEi);
+var _ZN23btDiscreteDynamicsWorld12addCharacterEP17btActionInterface__index__ = register_delegate(_ZN23btDiscreteDynamicsWorld12addCharacterEP17btActionInterface);
+var _ZN23btDiscreteDynamicsWorld12addRigidBodyEP11btRigidBody__index__ = register_delegate(_ZN23btDiscreteDynamicsWorld12addRigidBodyEP11btRigidBody);
+var _ZN23btDiscreteDynamicsWorld12addRigidBodyEP11btRigidBodyss__index__ = register_delegate(_ZN23btDiscreteDynamicsWorld12addRigidBodyEP11btRigidBodyss);
+var _ZN23btDiscreteDynamicsWorld12applyGravityEv__index__ = register_delegate(_ZN23btDiscreteDynamicsWorld12applyGravityEv);
+var _ZN23btDiscreteDynamicsWorld12removeActionEP17btActionInterface__index__ = register_delegate(_ZN23btDiscreteDynamicsWorld12removeActionEP17btActionInterface);
+var _ZN23btDiscreteDynamicsWorld13addConstraintEP17btTypedConstraintb__index__ = register_delegate(_ZN23btDiscreteDynamicsWorld13addConstraintEP17btTypedConstraintb);
+var _ZN23btDiscreteDynamicsWorld13getConstraintEi__index__ = register_delegate(_ZN23btDiscreteDynamicsWorld13getConstraintEi);
+var _ZN23btDiscreteDynamicsWorld13removeVehicleEP17btActionInterface__index__ = register_delegate(_ZN23btDiscreteDynamicsWorld13removeVehicleEP17btActionInterface);
+var _ZN23btDiscreteDynamicsWorld14debugDrawWorldEv__index__ = register_delegate(_ZN23btDiscreteDynamicsWorld14debugDrawWorldEv);
+var _ZN23btDiscreteDynamicsWorld14stepSimulationEfif__index__ = register_delegate(_ZN23btDiscreteDynamicsWorld14stepSimulationEfif);
+var _ZN23btDiscreteDynamicsWorld14updateVehiclesEf__index__ = register_delegate(_ZN23btDiscreteDynamicsWorld14updateVehiclesEf);
+var _ZN23btDiscreteDynamicsWorld15removeCharacterEP17btActionInterface__index__ = register_delegate(_ZN23btDiscreteDynamicsWorld15removeCharacterEP17btActionInterface);
+var _ZN23btDiscreteDynamicsWorld15removeRigidBodyEP11btRigidBody__index__ = register_delegate(_ZN23btDiscreteDynamicsWorld15removeRigidBodyEP11btRigidBody);
+var _ZN23btDiscreteDynamicsWorld16removeConstraintEP17btTypedConstraint__index__ = register_delegate(_ZN23btDiscreteDynamicsWorld16removeConstraintEP17btTypedConstraint);
+var _ZN23btDiscreteDynamicsWorld16solveConstraintsER19btContactSolverInfo__index__ = register_delegate(_ZN23btDiscreteDynamicsWorld16solveConstraintsER19btContactSolverInfo);
+var _ZN23btDiscreteDynamicsWorld18addCollisionObjectEP17btCollisionObjectss__index__ = register_delegate(_ZN23btDiscreteDynamicsWorld18addCollisionObjectEP17btCollisionObjectss);
+var _ZN23btDiscreteDynamicsWorld18saveKinematicStateEf__index__ = register_delegate(_ZN23btDiscreteDynamicsWorld18saveKinematicStateEf);
+var _ZN23btDiscreteDynamicsWorld19getConstraintSolverEv__index__ = register_delegate(_ZN23btDiscreteDynamicsWorld19getConstraintSolverEv);
+var _ZN23btDiscreteDynamicsWorld19integrateTransformsEf__index__ = register_delegate(_ZN23btDiscreteDynamicsWorld19integrateTransformsEf);
+var _ZN23btDiscreteDynamicsWorld19setConstraintSolverEP18btConstraintSolver__index__ = register_delegate(_ZN23btDiscreteDynamicsWorld19setConstraintSolverEP18btConstraintSolver);
+var _ZN23btDiscreteDynamicsWorld21removeCollisionObjectEP17btCollisionObject__index__ = register_delegate(_ZN23btDiscreteDynamicsWorld21removeCollisionObjectEP17btCollisionObject);
+var _ZN23btDiscreteDynamicsWorld23synchronizeMotionStatesEv__index__ = register_delegate(_ZN23btDiscreteDynamicsWorld23synchronizeMotionStatesEv);
+var _ZN23btDiscreteDynamicsWorld25predictUnconstraintMotionEf__index__ = register_delegate(_ZN23btDiscreteDynamicsWorld25predictUnconstraintMotionEf);
+var _ZN23btDiscreteDynamicsWorld26calculateSimulationIslandsEv__index__ = register_delegate(_ZN23btDiscreteDynamicsWorld26calculateSimulationIslandsEv);
+var _ZN23btDiscreteDynamicsWorld28internalSingleStepSimulationEf__index__ = register_delegate(_ZN23btDiscreteDynamicsWorld28internalSingleStepSimulationEf);
+var _ZN23btDiscreteDynamicsWorld9addActionEP17btActionInterface__index__ = register_delegate(_ZN23btDiscreteDynamicsWorld9addActionEP17btActionInterface);
+var _ZN23btDiscreteDynamicsWorld9serializeEP12btSerializer__index__ = register_delegate(_ZN23btDiscreteDynamicsWorld9serializeEP12btSerializer);
+var _ZN23btDiscreteDynamicsWorldD0Ev__index__ = register_delegate(_ZN23btDiscreteDynamicsWorldD0Ev);
+var _ZN23btDiscreteDynamicsWorldD1Ev__index__ = register_delegate(_ZN23btDiscreteDynamicsWorldD1Ev);
+var _ZN23btStridingMeshInterfaceD0Ev__index__ = register_delegate(_ZN23btStridingMeshInterfaceD0Ev);
+var _ZN23btStridingMeshInterfaceD1Ev__index__ = register_delegate(_ZN23btStridingMeshInterfaceD1Ev);
+var _ZN24btConvexTriangleCallback15processTriangleEP9btVector3ii__index__ = register_delegate(_ZN24btConvexTriangleCallback15processTriangleEP9btVector3ii);
+var _ZN24btConvexTriangleCallbackD0Ev__index__ = register_delegate(_ZN24btConvexTriangleCallbackD0Ev);
+var _ZN24btConvexTriangleCallbackD1Ev__index__ = register_delegate(_ZN24btConvexTriangleCallbackD1Ev);
+var _ZN24btPerturbedContactResult15addContactPointERK9btVector3S2_f__index__ = register_delegate(_ZN24btPerturbedContactResult15addContactPointERK9btVector3S2_f);
+var _ZN24btPerturbedContactResultD0Ev__index__ = register_delegate(_ZN24btPerturbedContactResultD0Ev);
+var _ZN24btPerturbedContactResultD1Ev__index__ = register_delegate(_ZN24btPerturbedContactResultD1Ev);
+var _ZN25btSimulationIslandManager21updateActivationStateEP16btCollisionWorldP12btDispatcher__index__ = register_delegate(_ZN25btSimulationIslandManager21updateActivationStateEP16btCollisionWorldP12btDispatcher);
+var _ZN25btSimulationIslandManager26storeIslandActivationStateEP16btCollisionWorld__index__ = register_delegate(_ZN25btSimulationIslandManager26storeIslandActivationStateEP16btCollisionWorld);
+var _ZN25btSimulationIslandManagerD0Ev__index__ = register_delegate(_ZN25btSimulationIslandManagerD0Ev);
+var _ZN25btSimulationIslandManagerD1Ev__index__ = register_delegate(_ZN25btSimulationIslandManagerD1Ev);
+var _ZN25btTriangleRaycastCallback15processTriangleEP9btVector3ii__index__ = register_delegate(_ZN25btTriangleRaycastCallback15processTriangleEP9btVector3ii);
+var _ZN26btBoxBoxCollisionAlgorithm10CreateFunc24CreateCollisionAlgorithmER36btCollisionAlgorithmConstructionInfoP17btCollisionObjectS4___index__ = register_delegate(_ZN26btBoxBoxCollisionAlgorithm10CreateFunc24CreateCollisionAlgorithmER36btCollisionAlgorithmConstructionInfoP17btCollisionObjectS4_);
+var _ZN26btBoxBoxCollisionAlgorithm10CreateFuncD0Ev__index__ = register_delegate(_ZN26btBoxBoxCollisionAlgorithm10CreateFuncD0Ev);
+var _ZN26btBoxBoxCollisionAlgorithm10CreateFuncD1Ev__index__ = register_delegate(_ZN26btBoxBoxCollisionAlgorithm10CreateFuncD1Ev);
+var _ZN26btBoxBoxCollisionAlgorithm16processCollisionEP17btCollisionObjectS1_RK16btDispatcherInfoP16btManifoldResult__index__ = register_delegate(_ZN26btBoxBoxCollisionAlgorithm16processCollisionEP17btCollisionObjectS1_RK16btDispatcherInfoP16btManifoldResult);
+var _ZN26btBoxBoxCollisionAlgorithm21calculateTimeOfImpactEP17btCollisionObjectS1_RK16btDispatcherInfoP16btManifoldResult__index__ = register_delegate(_ZN26btBoxBoxCollisionAlgorithm21calculateTimeOfImpactEP17btCollisionObjectS1_RK16btDispatcherInfoP16btManifoldResult);
+var _ZN26btBoxBoxCollisionAlgorithm22getAllContactManifoldsER20btAlignedObjectArrayIP20btPersistentManifoldE__index__ = register_delegate(_ZN26btBoxBoxCollisionAlgorithm22getAllContactManifoldsER20btAlignedObjectArrayIP20btPersistentManifoldE);
+var _ZN26btBoxBoxCollisionAlgorithmD0Ev__index__ = register_delegate(_ZN26btBoxBoxCollisionAlgorithmD0Ev);
+var _ZN26btBoxBoxCollisionAlgorithmD1Ev__index__ = register_delegate(_ZN26btBoxBoxCollisionAlgorithmD1Ev);
+var _ZN26btTriangleIndexVertexArray16unLockVertexBaseEi__index__ = register_delegate(_ZN26btTriangleIndexVertexArray16unLockVertexBaseEi);
+var _ZN26btTriangleIndexVertexArray18preallocateIndicesEi__index__ = register_delegate(_ZN26btTriangleIndexVertexArray18preallocateIndicesEi);
+var _ZN26btTriangleIndexVertexArray19preallocateVerticesEi__index__ = register_delegate(_ZN26btTriangleIndexVertexArray19preallocateVerticesEi);
+var _ZN26btTriangleIndexVertexArray24getLockedVertexIndexBaseEPPhRiR14PHY_ScalarTypeS2_S1_S2_S2_S4_i__index__ = register_delegate(_ZN26btTriangleIndexVertexArray24getLockedVertexIndexBaseEPPhRiR14PHY_ScalarTypeS2_S1_S2_S2_S4_i);
+var _ZN26btTriangleIndexVertexArrayD0Ev__index__ = register_delegate(_ZN26btTriangleIndexVertexArrayD0Ev);
+var _ZN26btTriangleIndexVertexArrayD1Ev__index__ = register_delegate(_ZN26btTriangleIndexVertexArrayD1Ev);
+var _ZN27btContinuousConvexCollision16calcTimeOfImpactERK11btTransformS2_S2_S2_RN12btConvexCast10CastResultE__index__ = register_delegate(_ZN27btContinuousConvexCollision16calcTimeOfImpactERK11btTransformS2_S2_S2_RN12btConvexCast10CastResultE);
+var _ZN27btContinuousConvexCollisionD0Ev__index__ = register_delegate(_ZN27btContinuousConvexCollisionD0Ev);
+var _ZN27btContinuousConvexCollisionD1Ev__index__ = register_delegate(_ZN27btContinuousConvexCollisionD1Ev);
+var _ZN28btCompoundCollisionAlgorithm10CreateFunc24CreateCollisionAlgorithmER36btCollisionAlgorithmConstructionInfoP17btCollisionObjectS4___index__ = register_delegate(_ZN28btCompoundCollisionAlgorithm10CreateFunc24CreateCollisionAlgorithmER36btCollisionAlgorithmConstructionInfoP17btCollisionObjectS4_);
+var _ZN28btCompoundCollisionAlgorithm10CreateFuncD0Ev__index__ = register_delegate(_ZN28btCompoundCollisionAlgorithm10CreateFuncD0Ev);
+var _ZN28btCompoundCollisionAlgorithm10CreateFuncD1Ev__index__ = register_delegate(_ZN28btCompoundCollisionAlgorithm10CreateFuncD1Ev);
+var _ZN28btCompoundCollisionAlgorithm16processCollisionEP17btCollisionObjectS1_RK16btDispatcherInfoP16btManifoldResult__index__ = register_delegate(_ZN28btCompoundCollisionAlgorithm16processCollisionEP17btCollisionObjectS1_RK16btDispatcherInfoP16btManifoldResult);
+var _ZN28btCompoundCollisionAlgorithm17SwappedCreateFunc24CreateCollisionAlgorithmER36btCollisionAlgorithmConstructionInfoP17btCollisionObjectS4___index__ = register_delegate(_ZN28btCompoundCollisionAlgorithm17SwappedCreateFunc24CreateCollisionAlgorithmER36btCollisionAlgorithmConstructionInfoP17btCollisionObjectS4_);
+var _ZN28btCompoundCollisionAlgorithm17SwappedCreateFuncD0Ev__index__ = register_delegate(_ZN28btCompoundCollisionAlgorithm17SwappedCreateFuncD0Ev);
+var _ZN28btCompoundCollisionAlgorithm17SwappedCreateFuncD1Ev__index__ = register_delegate(_ZN28btCompoundCollisionAlgorithm17SwappedCreateFuncD1Ev);
+var _ZN28btCompoundCollisionAlgorithm21calculateTimeOfImpactEP17btCollisionObjectS1_RK16btDispatcherInfoP16btManifoldResult__index__ = register_delegate(_ZN28btCompoundCollisionAlgorithm21calculateTimeOfImpactEP17btCollisionObjectS1_RK16btDispatcherInfoP16btManifoldResult);
+var _ZN28btCompoundCollisionAlgorithm22getAllContactManifoldsER20btAlignedObjectArrayIP20btPersistentManifoldE__index__ = register_delegate(_ZN28btCompoundCollisionAlgorithm22getAllContactManifoldsER20btAlignedObjectArrayIP20btPersistentManifoldE);
+var _ZN28btCompoundCollisionAlgorithmD0Ev__index__ = register_delegate(_ZN28btCompoundCollisionAlgorithmD0Ev);
+var _ZN28btCompoundCollisionAlgorithmD1Ev__index__ = register_delegate(_ZN28btCompoundCollisionAlgorithmD1Ev);
+var _ZN28btHashedOverlappingPairCache18addOverlappingPairEP17btBroadphaseProxyS1___index__ = register_delegate(_ZN28btHashedOverlappingPairCache18addOverlappingPairEP17btBroadphaseProxyS1_);
+var _ZN28btHashedOverlappingPairCache18hasDeferredRemovalEv__index__ = register_delegate(_ZN28btHashedOverlappingPairCache18hasDeferredRemovalEv);
+var _ZN28btHashedOverlappingPairCache19cleanProxyFromPairsEP17btBroadphaseProxyP12btDispatcher__index__ = register_delegate(_ZN28btHashedOverlappingPairCache19cleanProxyFromPairsEP17btBroadphaseProxyP12btDispatcher);
+var _ZN28btHashedOverlappingPairCache20cleanOverlappingPairER16btBroadphasePairP12btDispatcher__index__ = register_delegate(_ZN28btHashedOverlappingPairCache20cleanOverlappingPairER16btBroadphasePairP12btDispatcher);
+var _ZN28btHashedOverlappingPairCache20sortOverlappingPairsEP12btDispatcher__index__ = register_delegate(_ZN28btHashedOverlappingPairCache20sortOverlappingPairsEP12btDispatcher);
+var _ZN28btHashedOverlappingPairCache21removeOverlappingPairEP17btBroadphaseProxyS1_P12btDispatcher__index__ = register_delegate(_ZN28btHashedOverlappingPairCache21removeOverlappingPairEP17btBroadphaseProxyS1_P12btDispatcher);
+var _ZN28btHashedOverlappingPairCache23getOverlappingPairArrayEv__index__ = register_delegate(_ZN28btHashedOverlappingPairCache23getOverlappingPairArrayEv);
+var _ZN28btHashedOverlappingPairCache24setOverlapFilterCallbackEP23btOverlapFilterCallback__index__ = register_delegate(_ZN28btHashedOverlappingPairCache24setOverlapFilterCallbackEP23btOverlapFilterCallback);
+var _ZN28btHashedOverlappingPairCache26getOverlappingPairArrayPtrEv__index__ = register_delegate(_ZN28btHashedOverlappingPairCache26getOverlappingPairArrayPtrEv);
+var _ZN28btHashedOverlappingPairCache26processAllOverlappingPairsEP17btOverlapCallbackP12btDispatcher__index__ = register_delegate(_ZN28btHashedOverlappingPairCache26processAllOverlappingPairsEP17btOverlapCallbackP12btDispatcher);
+var _ZN28btHashedOverlappingPairCache28setInternalGhostPairCallbackEP25btOverlappingPairCallback__index__ = register_delegate(_ZN28btHashedOverlappingPairCache28setInternalGhostPairCallbackEP25btOverlappingPairCallback);
+var _ZN28btHashedOverlappingPairCache37removeOverlappingPairsContainingProxyEP17btBroadphaseProxyP12btDispatcher__index__ = register_delegate(_ZN28btHashedOverlappingPairCache37removeOverlappingPairsContainingProxyEP17btBroadphaseProxyP12btDispatcher);
+var _ZN28btHashedOverlappingPairCache8findPairEP17btBroadphaseProxyS1___index__ = register_delegate(_ZN28btHashedOverlappingPairCache8findPairEP17btBroadphaseProxyS1_);
+var _ZN28btHashedOverlappingPairCacheD0Ev__index__ = register_delegate(_ZN28btHashedOverlappingPairCacheD0Ev);
+var _ZN28btHashedOverlappingPairCacheD1Ev__index__ = register_delegate(_ZN28btHashedOverlappingPairCacheD1Ev);
+var _ZN28btTriangleConvexcastCallback15processTriangleEP9btVector3ii__index__ = register_delegate(_ZN28btTriangleConvexcastCallback15processTriangleEP9btVector3ii);
+var _ZN28btTriangleConvexcastCallbackD0Ev__index__ = register_delegate(_ZN28btTriangleConvexcastCallbackD0Ev);
+var _ZN28btTriangleConvexcastCallbackD1Ev__index__ = register_delegate(_ZN28btTriangleConvexcastCallbackD1Ev);
+var _ZN30btActivatingCollisionAlgorithmD0Ev__index__ = register_delegate(_ZN30btActivatingCollisionAlgorithmD0Ev);
+var _ZN30btActivatingCollisionAlgorithmD1Ev__index__ = register_delegate(_ZN30btActivatingCollisionAlgorithmD1Ev);
+var _ZN30btGjkEpaPenetrationDepthSolver12calcPenDepthER22btVoronoiSimplexSolverPK13btConvexShapeS4_RK11btTransformS7_R9btVector3S9_S9_P12btIDebugDrawP12btStackAlloc__index__ = register_delegate(_ZN30btGjkEpaPenetrationDepthSolver12calcPenDepthER22btVoronoiSimplexSolverPK13btConvexShapeS4_RK11btTransformS7_R9btVector3S9_S9_P12btIDebugDrawP12btStackAlloc);
+var _ZN30btGjkEpaPenetrationDepthSolverD0Ev__index__ = register_delegate(_ZN30btGjkEpaPenetrationDepthSolverD0Ev);
+var _ZN30btGjkEpaPenetrationDepthSolverD1Ev__index__ = register_delegate(_ZN30btGjkEpaPenetrationDepthSolverD1Ev);
+var _ZN31btConvexPlaneCollisionAlgorithm10CreateFunc24CreateCollisionAlgorithmER36btCollisionAlgorithmConstructionInfoP17btCollisionObjectS4___index__ = register_delegate(_ZN31btConvexPlaneCollisionAlgorithm10CreateFunc24CreateCollisionAlgorithmER36btCollisionAlgorithmConstructionInfoP17btCollisionObjectS4_);
+var _ZN31btConvexPlaneCollisionAlgorithm10CreateFuncD0Ev__index__ = register_delegate(_ZN31btConvexPlaneCollisionAlgorithm10CreateFuncD0Ev);
+var _ZN31btConvexPlaneCollisionAlgorithm10CreateFuncD1Ev__index__ = register_delegate(_ZN31btConvexPlaneCollisionAlgorithm10CreateFuncD1Ev);
+var _ZN31btConvexPlaneCollisionAlgorithm16processCollisionEP17btCollisionObjectS1_RK16btDispatcherInfoP16btManifoldResult__index__ = register_delegate(_ZN31btConvexPlaneCollisionAlgorithm16processCollisionEP17btCollisionObjectS1_RK16btDispatcherInfoP16btManifoldResult);
+var _ZN31btConvexPlaneCollisionAlgorithm21calculateTimeOfImpactEP17btCollisionObjectS1_RK16btDispatcherInfoP16btManifoldResult__index__ = register_delegate(_ZN31btConvexPlaneCollisionAlgorithm21calculateTimeOfImpactEP17btCollisionObjectS1_RK16btDispatcherInfoP16btManifoldResult);
+var _ZN31btConvexPlaneCollisionAlgorithm22getAllContactManifoldsER20btAlignedObjectArrayIP20btPersistentManifoldE__index__ = register_delegate(_ZN31btConvexPlaneCollisionAlgorithm22getAllContactManifoldsER20btAlignedObjectArrayIP20btPersistentManifoldE);
+var _ZN31btConvexPlaneCollisionAlgorithmD0Ev__index__ = register_delegate(_ZN31btConvexPlaneCollisionAlgorithmD0Ev);
+var _ZN31btConvexPlaneCollisionAlgorithmD1Ev__index__ = register_delegate(_ZN31btConvexPlaneCollisionAlgorithmD1Ev);
+var _ZN31btDefaultCollisionConfiguration16getSimplexSolverEv__index__ = register_delegate(_ZN31btDefaultCollisionConfiguration16getSimplexSolverEv);
+var _ZN31btDefaultCollisionConfiguration17getStackAllocatorEv__index__ = register_delegate(_ZN31btDefaultCollisionConfiguration17getStackAllocatorEv);
+var _ZN31btDefaultCollisionConfiguration25getCollisionAlgorithmPoolEv__index__ = register_delegate(_ZN31btDefaultCollisionConfiguration25getCollisionAlgorithmPoolEv);
+var _ZN31btDefaultCollisionConfiguration25getPersistentManifoldPoolEv__index__ = register_delegate(_ZN31btDefaultCollisionConfiguration25getPersistentManifoldPoolEv);
+var _ZN31btDefaultCollisionConfiguration31getCollisionAlgorithmCreateFuncEii__index__ = register_delegate(_ZN31btDefaultCollisionConfiguration31getCollisionAlgorithmCreateFuncEii);
+var _ZN31btDefaultCollisionConfigurationD0Ev__index__ = register_delegate(_ZN31btDefaultCollisionConfigurationD0Ev);
+var _ZN31btDefaultCollisionConfigurationD1Ev__index__ = register_delegate(_ZN31btDefaultCollisionConfigurationD1Ev);
+var _ZN31btInternalTriangleIndexCallbackD0Ev__index__ = register_delegate(_ZN31btInternalTriangleIndexCallbackD0Ev);
+var _ZN31btInternalTriangleIndexCallbackD1Ev__index__ = register_delegate(_ZN31btInternalTriangleIndexCallbackD1Ev);
+var _ZN32btSphereSphereCollisionAlgorithm10CreateFunc24CreateCollisionAlgorithmER36btCollisionAlgorithmConstructionInfoP17btCollisionObjectS4___index__ = register_delegate(_ZN32btSphereSphereCollisionAlgorithm10CreateFunc24CreateCollisionAlgorithmER36btCollisionAlgorithmConstructionInfoP17btCollisionObjectS4_);
+var _ZN32btSphereSphereCollisionAlgorithm10CreateFuncD0Ev__index__ = register_delegate(_ZN32btSphereSphereCollisionAlgorithm10CreateFuncD0Ev);
+var _ZN32btSphereSphereCollisionAlgorithm10CreateFuncD1Ev__index__ = register_delegate(_ZN32btSphereSphereCollisionAlgorithm10CreateFuncD1Ev);
+var _ZN32btSphereSphereCollisionAlgorithm16processCollisionEP17btCollisionObjectS1_RK16btDispatcherInfoP16btManifoldResult__index__ = register_delegate(_ZN32btSphereSphereCollisionAlgorithm16processCollisionEP17btCollisionObjectS1_RK16btDispatcherInfoP16btManifoldResult);
+var _ZN32btSphereSphereCollisionAlgorithm21calculateTimeOfImpactEP17btCollisionObjectS1_RK16btDispatcherInfoP16btManifoldResult__index__ = register_delegate(_ZN32btSphereSphereCollisionAlgorithm21calculateTimeOfImpactEP17btCollisionObjectS1_RK16btDispatcherInfoP16btManifoldResult);
+var _ZN32btSphereSphereCollisionAlgorithm22getAllContactManifoldsER20btAlignedObjectArrayIP20btPersistentManifoldE__index__ = register_delegate(_ZN32btSphereSphereCollisionAlgorithm22getAllContactManifoldsER20btAlignedObjectArrayIP20btPersistentManifoldE);
+var _ZN32btSphereSphereCollisionAlgorithmD0Ev__index__ = register_delegate(_ZN32btSphereSphereCollisionAlgorithmD0Ev);
+var _ZN32btSphereSphereCollisionAlgorithmD1Ev__index__ = register_delegate(_ZN32btSphereSphereCollisionAlgorithmD1Ev);
+var _ZN33btConvexConcaveCollisionAlgorithm10CreateFunc24CreateCollisionAlgorithmER36btCollisionAlgorithmConstructionInfoP17btCollisionObjectS4___index__ = register_delegate(_ZN33btConvexConcaveCollisionAlgorithm10CreateFunc24CreateCollisionAlgorithmER36btCollisionAlgorithmConstructionInfoP17btCollisionObjectS4_);
+var _ZN33btConvexConcaveCollisionAlgorithm10CreateFuncD0Ev__index__ = register_delegate(_ZN33btConvexConcaveCollisionAlgorithm10CreateFuncD0Ev);
+var _ZN33btConvexConcaveCollisionAlgorithm10CreateFuncD1Ev__index__ = register_delegate(_ZN33btConvexConcaveCollisionAlgorithm10CreateFuncD1Ev);
+var _ZN33btConvexConcaveCollisionAlgorithm16processCollisionEP17btCollisionObjectS1_RK16btDispatcherInfoP16btManifoldResult__index__ = register_delegate(_ZN33btConvexConcaveCollisionAlgorithm16processCollisionEP17btCollisionObjectS1_RK16btDispatcherInfoP16btManifoldResult);
+var _ZN33btConvexConcaveCollisionAlgorithm17SwappedCreateFunc24CreateCollisionAlgorithmER36btCollisionAlgorithmConstructionInfoP17btCollisionObjectS4___index__ = register_delegate(_ZN33btConvexConcaveCollisionAlgorithm17SwappedCreateFunc24CreateCollisionAlgorithmER36btCollisionAlgorithmConstructionInfoP17btCollisionObjectS4_);
+var _ZN33btConvexConcaveCollisionAlgorithm17SwappedCreateFuncD0Ev__index__ = register_delegate(_ZN33btConvexConcaveCollisionAlgorithm17SwappedCreateFuncD0Ev);
+var _ZN33btConvexConcaveCollisionAlgorithm17SwappedCreateFuncD1Ev__index__ = register_delegate(_ZN33btConvexConcaveCollisionAlgorithm17SwappedCreateFuncD1Ev);
+var _ZN33btConvexConcaveCollisionAlgorithm21calculateTimeOfImpactEP17btCollisionObjectS1_RK16btDispatcherInfoP16btManifoldResult__index__ = register_delegate(_ZN33btConvexConcaveCollisionAlgorithm21calculateTimeOfImpactEP17btCollisionObjectS1_RK16btDispatcherInfoP16btManifoldResult);
+var _ZN33btConvexConcaveCollisionAlgorithm22getAllContactManifoldsER20btAlignedObjectArrayIP20btPersistentManifoldE__index__ = register_delegate(_ZN33btConvexConcaveCollisionAlgorithm22getAllContactManifoldsER20btAlignedObjectArrayIP20btPersistentManifoldE);
+var _ZN33btConvexConcaveCollisionAlgorithmD0Ev__index__ = register_delegate(_ZN33btConvexConcaveCollisionAlgorithmD0Ev);
+var _ZN33btConvexConcaveCollisionAlgorithmD1Ev__index__ = register_delegate(_ZN33btConvexConcaveCollisionAlgorithmD1Ev);
+var _ZN34btClosestNotMeConvexResultCallback15addSingleResultERN16btCollisionWorld17LocalConvexResultEb__index__ = register_delegate(_ZN34btClosestNotMeConvexResultCallback15addSingleResultERN16btCollisionWorld17LocalConvexResultEb);
+var _ZN34btClosestNotMeConvexResultCallbackD0Ev__index__ = register_delegate(_ZN34btClosestNotMeConvexResultCallbackD0Ev);
+var _ZN34btClosestNotMeConvexResultCallbackD1Ev__index__ = register_delegate(_ZN34btClosestNotMeConvexResultCallbackD1Ev);
+var _ZN34btSphereTriangleCollisionAlgorithm10CreateFunc24CreateCollisionAlgorithmER36btCollisionAlgorithmConstructionInfoP17btCollisionObjectS4___index__ = register_delegate(_ZN34btSphereTriangleCollisionAlgorithm10CreateFunc24CreateCollisionAlgorithmER36btCollisionAlgorithmConstructionInfoP17btCollisionObjectS4_);
+var _ZN34btSphereTriangleCollisionAlgorithm10CreateFuncD0Ev__index__ = register_delegate(_ZN34btSphereTriangleCollisionAlgorithm10CreateFuncD0Ev);
+var _ZN34btSphereTriangleCollisionAlgorithm10CreateFuncD1Ev__index__ = register_delegate(_ZN34btSphereTriangleCollisionAlgorithm10CreateFuncD1Ev);
+var _ZN34btSphereTriangleCollisionAlgorithm16processCollisionEP17btCollisionObjectS1_RK16btDispatcherInfoP16btManifoldResult__index__ = register_delegate(_ZN34btSphereTriangleCollisionAlgorithm16processCollisionEP17btCollisionObjectS1_RK16btDispatcherInfoP16btManifoldResult);
+var _ZN34btSphereTriangleCollisionAlgorithm21calculateTimeOfImpactEP17btCollisionObjectS1_RK16btDispatcherInfoP16btManifoldResult__index__ = register_delegate(_ZN34btSphereTriangleCollisionAlgorithm21calculateTimeOfImpactEP17btCollisionObjectS1_RK16btDispatcherInfoP16btManifoldResult);
+var _ZN34btSphereTriangleCollisionAlgorithm22getAllContactManifoldsER20btAlignedObjectArrayIP20btPersistentManifoldE__index__ = register_delegate(_ZN34btSphereTriangleCollisionAlgorithm22getAllContactManifoldsER20btAlignedObjectArrayIP20btPersistentManifoldE);
+var _ZN34btSphereTriangleCollisionAlgorithmD0Ev__index__ = register_delegate(_ZN34btSphereTriangleCollisionAlgorithmD0Ev);
+var _ZN34btSphereTriangleCollisionAlgorithmD1Ev__index__ = register_delegate(_ZN34btSphereTriangleCollisionAlgorithmD1Ev);
+var _ZN35btSequentialImpulseConstraintSolver10solveGroupEPP17btCollisionObjectiPP20btPersistentManifoldiPP17btTypedConstraintiRK19btContactSolverInfoP12btIDebugDrawP12btStackAllocP12btDispatcher__index__ = register_delegate(_ZN35btSequentialImpulseConstraintSolver10solveGroupEPP17btCollisionObjectiPP20btPersistentManifoldiPP17btTypedConstraintiRK19btContactSolverInfoP12btIDebugDrawP12btStackAllocP12btDispatcher);
+var _ZN35btSequentialImpulseConstraintSolver28solveGroupCacheFriendlySetupEPP17btCollisionObjectiPP20btPersistentManifoldiPP17btTypedConstraintiRK19btContactSolverInfoP12btIDebugDrawP12btStackAlloc__index__ = register_delegate(_ZN35btSequentialImpulseConstraintSolver28solveGroupCacheFriendlySetupEPP17btCollisionObjectiPP20btPersistentManifoldiPP17btTypedConstraintiRK19btContactSolverInfoP12btIDebugDrawP12btStackAlloc);
+var _ZN35btSequentialImpulseConstraintSolver29solveGroupCacheFriendlyFinishEPP17btCollisionObjectiPP20btPersistentManifoldiPP17btTypedConstraintiRK19btContactSolverInfoP12btIDebugDrawP12btStackAlloc__index__ = register_delegate(_ZN35btSequentialImpulseConstraintSolver29solveGroupCacheFriendlyFinishEPP17btCollisionObjectiPP20btPersistentManifoldiPP17btTypedConstraintiRK19btContactSolverInfoP12btIDebugDrawP12btStackAlloc);
+var _ZN35btSequentialImpulseConstraintSolver33solveGroupCacheFriendlyIterationsEPP17btCollisionObjectiPP20btPersistentManifoldiPP17btTypedConstraintiRK19btContactSolverInfoP12btIDebugDrawP12btStackAlloc__index__ = register_delegate(_ZN35btSequentialImpulseConstraintSolver33solveGroupCacheFriendlyIterationsEPP17btCollisionObjectiPP20btPersistentManifoldiPP17btTypedConstraintiRK19btContactSolverInfoP12btIDebugDrawP12btStackAlloc);
+var _ZN35btSequentialImpulseConstraintSolver45solveGroupCacheFriendlySplitImpulseIterationsEPP17btCollisionObjectiPP20btPersistentManifoldiPP17btTypedConstraintiRK19btContactSolverInfoP12btIDebugDrawP12btStackAlloc__index__ = register_delegate(_ZN35btSequentialImpulseConstraintSolver45solveGroupCacheFriendlySplitImpulseIterationsEPP17btCollisionObjectiPP20btPersistentManifoldiPP17btTypedConstraintiRK19btContactSolverInfoP12btIDebugDrawP12btStackAlloc);
+var _ZN35btSequentialImpulseConstraintSolver5resetEv__index__ = register_delegate(_ZN35btSequentialImpulseConstraintSolver5resetEv);
+var _ZN35btSequentialImpulseConstraintSolverD0Ev__index__ = register_delegate(_ZN35btSequentialImpulseConstraintSolverD0Ev);
+var _ZN35btSequentialImpulseConstraintSolverD1Ev__index__ = register_delegate(_ZN35btSequentialImpulseConstraintSolverD1Ev);
+var _ZN4__rw10__rw_facetD0Ev__index__ = register_delegate(_ZN4__rw10__rw_facetD0Ev);
+var _ZN4__rw10__rw_facetD1Ev__index__ = register_delegate(_ZN4__rw10__rw_facetD1Ev);
+var _ZN6btDbvt8ICollide7DescentEPK10btDbvtNode__index__ = register_delegate(_ZN6btDbvt8ICollide7DescentEPK10btDbvtNode);
+var _ZN6btDbvt8ICollide7ProcessEPK10btDbvtNodeS3___index__ = register_delegate(_ZN6btDbvt8ICollide7ProcessEPK10btDbvtNodeS3_);
+var _ZN6btDbvt8ICollide7ProcessEPK10btDbvtNodef__index__ = register_delegate(_ZN6btDbvt8ICollide7ProcessEPK10btDbvtNodef);
+var _ZN6btDbvt8ICollide9AllLeavesEPK10btDbvtNode__index__ = register_delegate(_ZN6btDbvt8ICollide9AllLeavesEPK10btDbvtNode);
+var _ZN7CFileLS4feofEv__index__ = register_delegate(_ZN7CFileLS4feofEv);
+var _ZN7CFileLS5freadEPvjj__index__ = register_delegate(_ZN7CFileLS5freadEPvjj);
+var _ZN7CFileLS5fseekEli__index__ = register_delegate(_ZN7CFileLS5fseekEli);
+var _ZN7CFileLS5ftellEv__index__ = register_delegate(_ZN7CFileLS5ftellEv);
+var _ZN7CFileLS6fcloseEv__index__ = register_delegate(_ZN7CFileLS6fcloseEv);
+var _ZN7CFileLS6fflushEv__index__ = register_delegate(_ZN7CFileLS6fflushEv);
+var _ZN7CFileLS6fwriteEPKvjj__index__ = register_delegate(_ZN7CFileLS6fwriteEPKvjj);
+var _ZN7CFileLS6ungetcEi__index__ = register_delegate(_ZN7CFileLS6ungetcEi);
+var _ZN7RagDollD0Ev__index__ = register_delegate(_ZN7RagDollD0Ev);
+var _ZN7RagDollD1Ev__index__ = register_delegate(_ZN7RagDollD1Ev);
+var _ZNK10__cxxabiv117__class_type_info10__do_catchEPKSt9type_infoPPvj__index__ = register_delegate(_ZNK10__cxxabiv117__class_type_info10__do_catchEPKSt9type_infoPPvj);
+var _ZNK10__cxxabiv117__class_type_info11__do_upcastEPKS0_PKvRNS0_15__upcast_resultE__index__ = register_delegate(_ZNK10__cxxabiv117__class_type_info11__do_upcastEPKS0_PKvRNS0_15__upcast_resultE);
+var _ZNK10__cxxabiv117__class_type_info11__do_upcastEPKS0_PPv__index__ = register_delegate(_ZNK10__cxxabiv117__class_type_info11__do_upcastEPKS0_PPv);
+var _ZNK10__cxxabiv117__class_type_info12__do_dyncastEiNS0_10__sub_kindEPKS0_PKvS3_S5_RNS0_16__dyncast_resultE__index__ = register_delegate(_ZNK10__cxxabiv117__class_type_info12__do_dyncastEiNS0_10__sub_kindEPKS0_PKvS3_S5_RNS0_16__dyncast_resultE);
+var _ZNK10__cxxabiv117__class_type_info20__do_find_public_srcEiPKvPKS0_S2___index__ = register_delegate(_ZNK10__cxxabiv117__class_type_info20__do_find_public_srcEiPKvPKS0_S2_);
+var _ZNK10__cxxabiv120__si_class_type_info11__do_upcastEPKNS_17__class_type_infoEPKvRNS1_15__upcast_resultE__index__ = register_delegate(_ZNK10__cxxabiv120__si_class_type_info11__do_upcastEPKNS_17__class_type_infoEPKvRNS1_15__upcast_resultE);
+var _ZNK10__cxxabiv120__si_class_type_info12__do_dyncastEiNS_17__class_type_info10__sub_kindEPKS1_PKvS4_S6_RNS1_16__dyncast_resultE__index__ = register_delegate(_ZNK10__cxxabiv120__si_class_type_info12__do_dyncastEiNS_17__class_type_info10__sub_kindEPKS1_PKvS4_S6_RNS1_16__dyncast_resultE);
+var _ZNK10__cxxabiv120__si_class_type_info20__do_find_public_srcEiPKvPKNS_17__class_type_infoES2___index__ = register_delegate(_ZNK10__cxxabiv120__si_class_type_info20__do_find_public_srcEiPKvPKNS_17__class_type_infoES2_);
+var _ZNK10__cxxabiv121__vmi_class_type_info11__do_upcastEPKNS_17__class_type_infoEPKvRNS1_15__upcast_resultE__index__ = register_delegate(_ZNK10__cxxabiv121__vmi_class_type_info11__do_upcastEPKNS_17__class_type_infoEPKvRNS1_15__upcast_resultE);
+var _ZNK10__cxxabiv121__vmi_class_type_info12__do_dyncastEiNS_17__class_type_info10__sub_kindEPKS1_PKvS4_S6_RNS1_16__dyncast_resultE__index__ = register_delegate(_ZNK10__cxxabiv121__vmi_class_type_info12__do_dyncastEiNS_17__class_type_info10__sub_kindEPKS1_PKvS4_S6_RNS1_16__dyncast_resultE);
+var _ZNK10__cxxabiv121__vmi_class_type_info20__do_find_public_srcEiPKvPKNS_17__class_type_infoES2___index__ = register_delegate(_ZNK10__cxxabiv121__vmi_class_type_info20__do_find_public_srcEiPKvPKNS_17__class_type_infoES2_);
+var _ZNK10btBoxShape11getNumEdgesEv__index__ = register_delegate(_ZNK10btBoxShape11getNumEdgesEv);
+var _ZNK10btBoxShape12getNumPlanesEv__index__ = register_delegate(_ZNK10btBoxShape12getNumPlanesEv);
+var _ZNK10btBoxShape14getNumVerticesEv__index__ = register_delegate(_ZNK10btBoxShape14getNumVerticesEv);
+var _ZNK10btBoxShape16getPlaneEquationER9btVector4i__index__ = register_delegate(_ZNK10btBoxShape16getPlaneEquationER9btVector4i);
+var _ZNK10btBoxShape21calculateLocalInertiaEfR9btVector3__index__ = register_delegate(_ZNK10btBoxShape21calculateLocalInertiaEfR9btVector3);
+var _ZNK10btBoxShape24localGetSupportingVertexERK9btVector3__index__ = register_delegate(_ZNK10btBoxShape24localGetSupportingVertexERK9btVector3);
+var _ZNK10btBoxShape32getPreferredPenetrationDirectionEiR9btVector3__index__ = register_delegate(_ZNK10btBoxShape32getPreferredPenetrationDirectionEiR9btVector3);
+var _ZNK10btBoxShape36getNumPreferredPenetrationDirectionsEv__index__ = register_delegate(_ZNK10btBoxShape36getNumPreferredPenetrationDirectionsEv);
+var _ZNK10btBoxShape37localGetSupportingVertexWithoutMarginERK9btVector3__index__ = register_delegate(_ZNK10btBoxShape37localGetSupportingVertexWithoutMarginERK9btVector3);
+var _ZNK10btBoxShape49batchedUnitVectorGetSupportingVertexWithoutMarginEPK9btVector3PS0_i__index__ = register_delegate(_ZNK10btBoxShape49batchedUnitVectorGetSupportingVertexWithoutMarginEPK9btVector3PS0_i);
+var _ZNK10btBoxShape7getAabbERK11btTransformR9btVector3S4___index__ = register_delegate(_ZNK10btBoxShape7getAabbERK11btTransformR9btVector3S4_);
+var _ZNK10btBoxShape7getEdgeEiR9btVector3S1___index__ = register_delegate(_ZNK10btBoxShape7getEdgeEiR9btVector3S1_);
+var _ZNK10btBoxShape7getNameEv__index__ = register_delegate(_ZNK10btBoxShape7getNameEv);
+var _ZNK10btBoxShape8getPlaneER9btVector3S1_i__index__ = register_delegate(_ZNK10btBoxShape8getPlaneER9btVector3S1_i);
+var _ZNK10btBoxShape8isInsideERK9btVector3f__index__ = register_delegate(_ZNK10btBoxShape8isInsideERK9btVector3f);
+var _ZNK10btBoxShape9getVertexEiR9btVector3__index__ = register_delegate(_ZNK10btBoxShape9getVertexEiR9btVector3);
+var _ZNK11CFileSystem12IsFileSystemEv__index__ = register_delegate(_ZNK11CFileSystem12IsFileSystemEv);
+var _ZNK11btRigidBody21serializeSingleObjectEP12btSerializer__index__ = register_delegate(_ZNK11btRigidBody21serializeSingleObjectEP12btSerializer);
+var _ZNK11btRigidBody28calculateSerializeBufferSizeEv__index__ = register_delegate(_ZNK11btRigidBody28calculateSerializeBufferSizeEv);
+var _ZNK11btRigidBody9serializeEPvP12btSerializer__index__ = register_delegate(_ZNK11btRigidBody9serializeEPvP12btSerializer);
+var _ZNK13btConvexShape31localGetSupportVertexNonVirtualERK9btVector3__index__ = register_delegate(_ZNK13btConvexShape31localGetSupportVertexNonVirtualERK9btVector3);
+var _ZNK13btConvexShape44localGetSupportVertexWithoutMarginNonVirtualERK9btVector3__index__ = register_delegate(_ZNK13btConvexShape44localGetSupportVertexWithoutMarginNonVirtualERK9btVector3);
+var _ZNK13btSphereShape21calculateLocalInertiaEfR9btVector3__index__ = register_delegate(_ZNK13btSphereShape21calculateLocalInertiaEfR9btVector3);
+var _ZNK13btSphereShape24localGetSupportingVertexERK9btVector3__index__ = register_delegate(_ZNK13btSphereShape24localGetSupportingVertexERK9btVector3);
+var _ZNK13btSphereShape37localGetSupportingVertexWithoutMarginERK9btVector3__index__ = register_delegate(_ZNK13btSphereShape37localGetSupportingVertexWithoutMarginERK9btVector3);
+var _ZNK13btSphereShape49batchedUnitVectorGetSupportingVertexWithoutMarginEPK9btVector3PS0_i__index__ = register_delegate(_ZNK13btSphereShape49batchedUnitVectorGetSupportingVertexWithoutMarginEPK9btVector3PS0_i);
+var _ZNK13btSphereShape7getAabbERK11btTransformR9btVector3S4___index__ = register_delegate(_ZNK13btSphereShape7getAabbERK11btTransformR9btVector3S4_);
+var _ZNK13btSphereShape7getNameEv__index__ = register_delegate(_ZNK13btSphereShape7getNameEv);
+var _ZNK13btSphereShape9getMarginEv__index__ = register_delegate(_ZNK13btSphereShape9getMarginEv);
+var _ZNK14CFileInterface12IsFileSystemEv__index__ = register_delegate(_ZNK14CFileInterface12IsFileSystemEv);
+var _ZNK14btCapsuleShape21calculateLocalInertiaEfR9btVector3__index__ = register_delegate(_ZNK14btCapsuleShape21calculateLocalInertiaEfR9btVector3);
+var _ZNK14btCapsuleShape28calculateSerializeBufferSizeEv__index__ = register_delegate(_ZNK14btCapsuleShape28calculateSerializeBufferSizeEv);
+var _ZNK14btCapsuleShape37localGetSupportingVertexWithoutMarginERK9btVector3__index__ = register_delegate(_ZNK14btCapsuleShape37localGetSupportingVertexWithoutMarginERK9btVector3);
+var _ZNK14btCapsuleShape49batchedUnitVectorGetSupportingVertexWithoutMarginEPK9btVector3PS0_i__index__ = register_delegate(_ZNK14btCapsuleShape49batchedUnitVectorGetSupportingVertexWithoutMarginEPK9btVector3PS0_i);
+var _ZNK14btCapsuleShape7getAabbERK11btTransformR9btVector3S4___index__ = register_delegate(_ZNK14btCapsuleShape7getAabbERK11btTransformR9btVector3S4_);
+var _ZNK14btCapsuleShape7getNameEv__index__ = register_delegate(_ZNK14btCapsuleShape7getNameEv);
+var _ZNK14btCapsuleShape9serializeEPvP12btSerializer__index__ = register_delegate(_ZNK14btCapsuleShape9serializeEPvP12btSerializer);
+var _ZNK14btConcaveShape9getMarginEv__index__ = register_delegate(_ZNK14btConcaveShape9getMarginEv);
+var _ZNK14btOptimizedBvh16serializeInPlaceEPvjb__index__ = register_delegate(_ZNK14btOptimizedBvh16serializeInPlaceEPvjb);
+var _ZNK14btQuantizedBvh31calculateSerializeBufferSizeNewEv__index__ = register_delegate(_ZNK14btQuantizedBvh31calculateSerializeBufferSizeNewEv);
+var _ZNK14btQuantizedBvh9serializeEPvP12btSerializer__index__ = register_delegate(_ZNK14btQuantizedBvh9serializeEPvP12btSerializer);
+var _ZNK14btQuantizedBvh9serializeEPvjb__index__ = register_delegate(_ZNK14btQuantizedBvh9serializeEPvjb);
+var _ZNK15btDynamicsWorld13getConstraintEi__index__ = register_delegate(_ZNK15btDynamicsWorld13getConstraintEi);
+var _ZNK15btDynamicsWorld17getNumConstraintsEv__index__ = register_delegate(_ZNK15btDynamicsWorld17getNumConstraintsEv);
+var _ZNK15btNullPairCache22getNumOverlappingPairsEv__index__ = register_delegate(_ZNK15btNullPairCache22getNumOverlappingPairsEv);
+var _ZNK15btNullPairCache26getOverlappingPairArrayPtrEv__index__ = register_delegate(_ZNK15btNullPairCache26getOverlappingPairArrayPtrEv);
+var _ZNK15btTriangleShape11getNumEdgesEv__index__ = register_delegate(_ZNK15btTriangleShape11getNumEdgesEv);
+var _ZNK15btTriangleShape12getNumPlanesEv__index__ = register_delegate(_ZNK15btTriangleShape12getNumPlanesEv);
+var _ZNK15btTriangleShape14getNumVerticesEv__index__ = register_delegate(_ZNK15btTriangleShape14getNumVerticesEv);
+var _ZNK15btTriangleShape16getPlaneEquationEiR9btVector3S1___index__ = register_delegate(_ZNK15btTriangleShape16getPlaneEquationEiR9btVector3S1_);
+var _ZNK15btTriangleShape21calculateLocalInertiaEfR9btVector3__index__ = register_delegate(_ZNK15btTriangleShape21calculateLocalInertiaEfR9btVector3);
+var _ZNK15btTriangleShape32getPreferredPenetrationDirectionEiR9btVector3__index__ = register_delegate(_ZNK15btTriangleShape32getPreferredPenetrationDirectionEiR9btVector3);
+var _ZNK15btTriangleShape36getNumPreferredPenetrationDirectionsEv__index__ = register_delegate(_ZNK15btTriangleShape36getNumPreferredPenetrationDirectionsEv);
+var _ZNK15btTriangleShape37localGetSupportingVertexWithoutMarginERK9btVector3__index__ = register_delegate(_ZNK15btTriangleShape37localGetSupportingVertexWithoutMarginERK9btVector3);
+var _ZNK15btTriangleShape49batchedUnitVectorGetSupportingVertexWithoutMarginEPK9btVector3PS0_i__index__ = register_delegate(_ZNK15btTriangleShape49batchedUnitVectorGetSupportingVertexWithoutMarginEPK9btVector3PS0_i);
+var _ZNK15btTriangleShape7getAabbERK11btTransformR9btVector3S4___index__ = register_delegate(_ZNK15btTriangleShape7getAabbERK11btTransformR9btVector3S4_);
+var _ZNK15btTriangleShape7getEdgeEiR9btVector3S1___index__ = register_delegate(_ZNK15btTriangleShape7getEdgeEiR9btVector3S1_);
+var _ZNK15btTriangleShape7getNameEv__index__ = register_delegate(_ZNK15btTriangleShape7getNameEv);
+var _ZNK15btTriangleShape8getPlaneER9btVector3S1_i__index__ = register_delegate(_ZNK15btTriangleShape8getPlaneER9btVector3S1_i);
+var _ZNK15btTriangleShape8isInsideERK9btVector3f__index__ = register_delegate(_ZNK15btTriangleShape8isInsideERK9btVector3f);
+var _ZNK15btTriangleShape9getVertexEiR9btVector3__index__ = register_delegate(_ZNK15btTriangleShape9getVertexEiR9btVector3);
+var _ZNK16btCollisionShape17getBoundingSphereER9btVector3Rf__index__ = register_delegate(_ZNK16btCollisionShape17getBoundingSphereER9btVector3Rf);
+var _ZNK16btCollisionShape20getAngularMotionDiscEv__index__ = register_delegate(_ZNK16btCollisionShape20getAngularMotionDiscEv);
+var _ZNK16btCollisionShape20serializeSingleShapeEP12btSerializer__index__ = register_delegate(_ZNK16btCollisionShape20serializeSingleShapeEP12btSerializer);
+var _ZNK16btCollisionShape27getContactBreakingThresholdEf__index__ = register_delegate(_ZNK16btCollisionShape27getContactBreakingThresholdEf);
+var _ZNK16btCollisionShape28calculateSerializeBufferSizeEv__index__ = register_delegate(_ZNK16btCollisionShape28calculateSerializeBufferSizeEv);
+var _ZNK16btCollisionShape9serializeEPvP12btSerializer__index__ = register_delegate(_ZNK16btCollisionShape9serializeEPvP12btSerializer);
+var _ZNK16btCollisionWorld17RayResultCallback14needsCollisionEP17btBroadphaseProxy__index__ = register_delegate(_ZNK16btCollisionWorld17RayResultCallback14needsCollisionEP17btBroadphaseProxy);
+var _ZNK16btCollisionWorld20ConvexResultCallback14needsCollisionEP17btBroadphaseProxy__index__ = register_delegate(_ZNK16btCollisionWorld20ConvexResultCallback14needsCollisionEP17btBroadphaseProxy);
+var _ZNK16btCollisionWorld7rayTestERK9btVector3S2_RNS_17RayResultCallbackE__index__ = register_delegate(_ZNK16btCollisionWorld7rayTestERK9btVector3S2_RNS_17RayResultCallbackE);
+var _ZNK16btDbvtBroadphase17getBroadphaseAabbER9btVector3S1___index__ = register_delegate(_ZNK16btDbvtBroadphase17getBroadphaseAabbER9btVector3S1_);
+var _ZNK16btDbvtBroadphase23getOverlappingPairCacheEv__index__ = register_delegate(_ZNK16btDbvtBroadphase23getOverlappingPairCacheEv);
+var _ZNK16btDbvtBroadphase7getAabbEP17btBroadphaseProxyR9btVector3S3___index__ = register_delegate(_ZNK16btDbvtBroadphase7getAabbEP17btBroadphaseProxyR9btVector3S3_);
+var _ZNK17btCollisionObject21serializeSingleObjectEP12btSerializer__index__ = register_delegate(_ZNK17btCollisionObject21serializeSingleObjectEP12btSerializer);
+var _ZNK17btCollisionObject28calculateSerializeBufferSizeEv__index__ = register_delegate(_ZNK17btCollisionObject28calculateSerializeBufferSizeEv);
+var _ZNK17btCollisionObject9serializeEPvP12btSerializer__index__ = register_delegate(_ZNK17btCollisionObject9serializeEPvP12btSerializer);
+var _ZNK17btConvexHullShape11getNumEdgesEv__index__ = register_delegate(_ZNK17btConvexHullShape11getNumEdgesEv);
+var _ZNK17btConvexHullShape12getNumPlanesEv__index__ = register_delegate(_ZNK17btConvexHullShape12getNumPlanesEv);
+var _ZNK17btConvexHullShape14getNumVerticesEv__index__ = register_delegate(_ZNK17btConvexHullShape14getNumVerticesEv);
+var _ZNK17btConvexHullShape24localGetSupportingVertexERK9btVector3__index__ = register_delegate(_ZNK17btConvexHullShape24localGetSupportingVertexERK9btVector3);
+var _ZNK17btConvexHullShape28calculateSerializeBufferSizeEv__index__ = register_delegate(_ZNK17btConvexHullShape28calculateSerializeBufferSizeEv);
+var _ZNK17btConvexHullShape37localGetSupportingVertexWithoutMarginERK9btVector3__index__ = register_delegate(_ZNK17btConvexHullShape37localGetSupportingVertexWithoutMarginERK9btVector3);
+var _ZNK17btConvexHullShape49batchedUnitVectorGetSupportingVertexWithoutMarginEPK9btVector3PS0_i__index__ = register_delegate(_ZNK17btConvexHullShape49batchedUnitVectorGetSupportingVertexWithoutMarginEPK9btVector3PS0_i);
+var _ZNK17btConvexHullShape7getEdgeEiR9btVector3S1___index__ = register_delegate(_ZNK17btConvexHullShape7getEdgeEiR9btVector3S1_);
+var _ZNK17btConvexHullShape7getNameEv__index__ = register_delegate(_ZNK17btConvexHullShape7getNameEv);
+var _ZNK17btConvexHullShape8getPlaneER9btVector3S1_i__index__ = register_delegate(_ZNK17btConvexHullShape8getPlaneER9btVector3S1_i);
+var _ZNK17btConvexHullShape8isInsideERK9btVector3f__index__ = register_delegate(_ZNK17btConvexHullShape8isInsideERK9btVector3f);
+var _ZNK17btConvexHullShape9getVertexEiR9btVector3__index__ = register_delegate(_ZNK17btConvexHullShape9getVertexEiR9btVector3);
+var _ZNK17btConvexHullShape9serializeEPvP12btSerializer__index__ = register_delegate(_ZNK17btConvexHullShape9serializeEPvP12btSerializer);
+var _ZNK17btHingeConstraint28calculateSerializeBufferSizeEv__index__ = register_delegate(_ZNK17btHingeConstraint28calculateSerializeBufferSizeEv);
+var _ZNK17btHingeConstraint8getParamEii__index__ = register_delegate(_ZNK17btHingeConstraint8getParamEii);
+var _ZNK17btHingeConstraint9serializeEPvP12btSerializer__index__ = register_delegate(_ZNK17btHingeConstraint9serializeEPvP12btSerializer);
+var _ZNK19btTriangleMeshShape15getLocalScalingEv__index__ = register_delegate(_ZNK19btTriangleMeshShape15getLocalScalingEv);
+var _ZNK19btTriangleMeshShape19processAllTrianglesEP18btTriangleCallbackRK9btVector3S4___index__ = register_delegate(_ZNK19btTriangleMeshShape19processAllTrianglesEP18btTriangleCallbackRK9btVector3S4_);
+var _ZNK19btTriangleMeshShape21calculateLocalInertiaEfR9btVector3__index__ = register_delegate(_ZNK19btTriangleMeshShape21calculateLocalInertiaEfR9btVector3);
+var _ZNK19btTriangleMeshShape24localGetSupportingVertexERK9btVector3__index__ = register_delegate(_ZNK19btTriangleMeshShape24localGetSupportingVertexERK9btVector3);
+var _ZNK19btTriangleMeshShape37localGetSupportingVertexWithoutMarginERK9btVector3__index__ = register_delegate(_ZNK19btTriangleMeshShape37localGetSupportingVertexWithoutMarginERK9btVector3);
+var _ZNK19btTriangleMeshShape7getAabbERK11btTransformR9btVector3S4___index__ = register_delegate(_ZNK19btTriangleMeshShape7getAabbERK11btTransformR9btVector3S4_);
+var _ZNK19btTriangleMeshShape7getNameEv__index__ = register_delegate(_ZNK19btTriangleMeshShape7getNameEv);
+var _ZNK20btAxisSweep3InternalItE17getBroadphaseAabbER9btVector3S2___index__ = register_delegate(_ZNK20btAxisSweep3InternalItE17getBroadphaseAabbER9btVector3S2_);
+var _ZNK20btAxisSweep3InternalItE23getOverlappingPairCacheEv__index__ = register_delegate(_ZNK20btAxisSweep3InternalItE23getOverlappingPairCacheEv);
+var _ZNK20btAxisSweep3InternalItE7getAabbEP17btBroadphaseProxyR9btVector3S4___index__ = register_delegate(_ZNK20btAxisSweep3InternalItE7getAabbEP17btBroadphaseProxyR9btVector3S4_);
+var _ZNK20btDefaultMotionState17getWorldTransformER11btTransform__index__ = register_delegate(_ZNK20btDefaultMotionState17getWorldTransformER11btTransform);
+var _ZNK21btCollisionDispatcher15getNumManifoldsEv__index__ = register_delegate(_ZNK21btCollisionDispatcher15getNumManifoldsEv);
+var _ZNK21btConeTwistConstraint28calculateSerializeBufferSizeEv__index__ = register_delegate(_ZNK21btConeTwistConstraint28calculateSerializeBufferSizeEv);
+var _ZNK21btConeTwistConstraint8getParamEii__index__ = register_delegate(_ZNK21btConeTwistConstraint8getParamEii);
+var _ZNK21btConeTwistConstraint9serializeEPvP12btSerializer__index__ = register_delegate(_ZNK21btConeTwistConstraint9serializeEPvP12btSerializer);
+var _ZNK21btConvexInternalShape11getAabbSlowERK11btTransformR9btVector3S4___index__ = register_delegate(_ZNK21btConvexInternalShape11getAabbSlowERK11btTransformR9btVector3S4_);
+var _ZNK21btConvexInternalShape15getLocalScalingEv__index__ = register_delegate(_ZNK21btConvexInternalShape15getLocalScalingEv);
+var _ZNK21btConvexInternalShape24localGetSupportingVertexERK9btVector3__index__ = register_delegate(_ZNK21btConvexInternalShape24localGetSupportingVertexERK9btVector3);
+var _ZNK21btConvexInternalShape28calculateSerializeBufferSizeEv__index__ = register_delegate(_ZNK21btConvexInternalShape28calculateSerializeBufferSizeEv);
+var _ZNK21btConvexInternalShape32getPreferredPenetrationDirectionEiR9btVector3__index__ = register_delegate(_ZNK21btConvexInternalShape32getPreferredPenetrationDirectionEiR9btVector3);
+var _ZNK21btConvexInternalShape36getNumPreferredPenetrationDirectionsEv__index__ = register_delegate(_ZNK21btConvexInternalShape36getNumPreferredPenetrationDirectionsEv);
+var _ZNK21btConvexInternalShape9getMarginEv__index__ = register_delegate(_ZNK21btConvexInternalShape9getMarginEv);
+var _ZNK21btConvexInternalShape9serializeEPvP12btSerializer__index__ = register_delegate(_ZNK21btConvexInternalShape9serializeEPvP12btSerializer);
+var _ZNK22btBvhTriangleMeshShape18serializeSingleBvhEP12btSerializer__index__ = register_delegate(_ZNK22btBvhTriangleMeshShape18serializeSingleBvhEP12btSerializer);
+var _ZNK22btBvhTriangleMeshShape19processAllTrianglesEP18btTriangleCallbackRK9btVector3S4___index__ = register_delegate(_ZNK22btBvhTriangleMeshShape19processAllTrianglesEP18btTriangleCallbackRK9btVector3S4_);
+var _ZNK22btBvhTriangleMeshShape28calculateSerializeBufferSizeEv__index__ = register_delegate(_ZNK22btBvhTriangleMeshShape28calculateSerializeBufferSizeEv);
+var _ZNK22btBvhTriangleMeshShape30serializeSingleTriangleInfoMapEP12btSerializer__index__ = register_delegate(_ZNK22btBvhTriangleMeshShape30serializeSingleTriangleInfoMapEP12btSerializer);
+var _ZNK22btBvhTriangleMeshShape7getNameEv__index__ = register_delegate(_ZNK22btBvhTriangleMeshShape7getNameEv);
+var _ZNK22btBvhTriangleMeshShape9serializeEPvP12btSerializer__index__ = register_delegate(_ZNK22btBvhTriangleMeshShape9serializeEPvP12btSerializer);
+var _ZNK23btDiscreteDynamicsWorld10getGravityEv__index__ = register_delegate(_ZNK23btDiscreteDynamicsWorld10getGravityEv);
+var _ZNK23btDiscreteDynamicsWorld12getWorldTypeEv__index__ = register_delegate(_ZNK23btDiscreteDynamicsWorld12getWorldTypeEv);
+var _ZNK23btDiscreteDynamicsWorld13getConstraintEi__index__ = register_delegate(_ZNK23btDiscreteDynamicsWorld13getConstraintEi);
+var _ZNK23btDiscreteDynamicsWorld17getNumConstraintsEv__index__ = register_delegate(_ZNK23btDiscreteDynamicsWorld17getNumConstraintsEv);
+var _ZNK23btPolyhedralConvexShape21calculateLocalInertiaEfR9btVector3__index__ = register_delegate(_ZNK23btPolyhedralConvexShape21calculateLocalInertiaEfR9btVector3);
+var _ZNK23btStridingMeshInterface14getPremadeAabbEP9btVector3S1___index__ = register_delegate(_ZNK23btStridingMeshInterface14getPremadeAabbEP9btVector3S1_);
+var _ZNK23btStridingMeshInterface14hasPremadeAabbEv__index__ = register_delegate(_ZNK23btStridingMeshInterface14hasPremadeAabbEv);
+var _ZNK23btStridingMeshInterface14setPremadeAabbERK9btVector3S2___index__ = register_delegate(_ZNK23btStridingMeshInterface14setPremadeAabbERK9btVector3S2_);
+var _ZNK23btStridingMeshInterface27InternalProcessAllTrianglesEP31btInternalTriangleIndexCallbackRK9btVector3S4___index__ = register_delegate(_ZNK23btStridingMeshInterface27InternalProcessAllTrianglesEP31btInternalTriangleIndexCallbackRK9btVector3S4_);
+var _ZNK23btStridingMeshInterface28calculateSerializeBufferSizeEv__index__ = register_delegate(_ZNK23btStridingMeshInterface28calculateSerializeBufferSizeEv);
+var _ZNK23btStridingMeshInterface9serializeEPvP12btSerializer__index__ = register_delegate(_ZNK23btStridingMeshInterface9serializeEPvP12btSerializer);
+var _ZNK26btTriangleIndexVertexArray14getNumSubPartsEv__index__ = register_delegate(_ZNK26btTriangleIndexVertexArray14getNumSubPartsEv);
+var _ZNK26btTriangleIndexVertexArray14getPremadeAabbEP9btVector3S1___index__ = register_delegate(_ZNK26btTriangleIndexVertexArray14getPremadeAabbEP9btVector3S1_);
+var _ZNK26btTriangleIndexVertexArray14hasPremadeAabbEv__index__ = register_delegate(_ZNK26btTriangleIndexVertexArray14hasPremadeAabbEv);
+var _ZNK26btTriangleIndexVertexArray14setPremadeAabbERK9btVector3S2___index__ = register_delegate(_ZNK26btTriangleIndexVertexArray14setPremadeAabbERK9btVector3S2_);
+var _ZNK26btTriangleIndexVertexArray24unLockReadOnlyVertexBaseEi__index__ = register_delegate(_ZNK26btTriangleIndexVertexArray24unLockReadOnlyVertexBaseEi);
+var _ZNK26btTriangleIndexVertexArray32getLockedReadOnlyVertexIndexBaseEPPKhRiR14PHY_ScalarTypeS3_S2_S3_S3_S5_i__index__ = register_delegate(_ZNK26btTriangleIndexVertexArray32getLockedReadOnlyVertexIndexBaseEPPKhRiR14PHY_ScalarTypeS3_S2_S3_S3_S5_i);
+var _ZNK28btHashedOverlappingPairCache22getNumOverlappingPairsEv__index__ = register_delegate(_ZNK28btHashedOverlappingPairCache22getNumOverlappingPairsEv);
+var _ZNK28btHashedOverlappingPairCache26getOverlappingPairArrayPtrEv__index__ = register_delegate(_ZNK28btHashedOverlappingPairCache26getOverlappingPairArrayPtrEv);
+var _ZNK34btClosestNotMeConvexResultCallback14needsCollisionEP17btBroadphaseProxy__index__ = register_delegate(_ZNK34btClosestNotMeConvexResultCallback14needsCollisionEP17btBroadphaseProxy);
+var _ZNK34btPolyhedralConvexAabbCachingShape7getAabbERK11btTransformR9btVector3S4___index__ = register_delegate(_ZNK34btPolyhedralConvexAabbCachingShape7getAabbERK11btTransformR9btVector3S4_);
+var _ZNKSt8messagesIcE6do_getEiiiRKSs__index__ = register_delegate(_ZNKSt8messagesIcE6do_getEiiiRKSs);
+var _ZNKSt8messagesIcE7do_openERKSsRKSt6locale__index__ = register_delegate(_ZNKSt8messagesIcE7do_openERKSsRKSt6locale);
+var _ZNKSt8messagesIcE8do_closeEi__index__ = register_delegate(_ZNKSt8messagesIcE8do_closeEi);
+var _ZNKSt9type_info10__do_catchEPKS_PPvj__index__ = register_delegate(_ZNKSt9type_info10__do_catchEPKS_PPvj);
+var _ZNKSt9type_info15__is_function_pEv__index__ = register_delegate(_ZNKSt9type_info15__is_function_pEv);
+var _ZNSt8messagesIcED0Ev__index__ = register_delegate(_ZNSt8messagesIcED0Ev);
+var _ZNSt8messagesIcED1Ev__index__ = register_delegate(_ZNSt8messagesIcED1Ev);
+var _ZNSt9type_infoD0Ev__index__ = register_delegate(_ZNSt9type_infoD0Ev);
+var _ZNSt9type_infoD1Ev__index__ = register_delegate(_ZNSt9type_infoD1Ev);
+var _ZThn4_N17DebugDrawcallback28internalProcessTriangleIndexEP9btVector3ii__index__ = register_delegate(_ZThn4_N17DebugDrawcallback28internalProcessTriangleIndexEP9btVector3ii);
+var _ZThn4_N17DebugDrawcallbackD0Ev__index__ = register_delegate(_ZThn4_N17DebugDrawcallbackD0Ev);
+var _ZThn4_N17DebugDrawcallbackD1Ev__index__ = register_delegate(_ZThn4_N17DebugDrawcallbackD1Ev);
+var _ZZN14btOptimizedBvh5buildEP23btStridingMeshInterfacebRK9btVector3S4_EN20NodeTriangleCallback28internalProcessTriangleIndexEPS2_ii__index__ = register_delegate(_ZZN14btOptimizedBvh5buildEP23btStridingMeshInterfacebRK9btVector3S4_EN20NodeTriangleCallback28internalProcessTriangleIndexEPS2_ii);
+var _ZZN14btOptimizedBvh5buildEP23btStridingMeshInterfacebRK9btVector3S4_EN20NodeTriangleCallbackD0Ev__index__ = register_delegate(_ZZN14btOptimizedBvh5buildEP23btStridingMeshInterfacebRK9btVector3S4_EN20NodeTriangleCallbackD0Ev);
+var _ZZN14btOptimizedBvh5buildEP23btStridingMeshInterfacebRK9btVector3S4_EN20NodeTriangleCallbackD1Ev__index__ = register_delegate(_ZZN14btOptimizedBvh5buildEP23btStridingMeshInterfacebRK9btVector3S4_EN20NodeTriangleCallbackD1Ev);
+var _ZZN14btOptimizedBvh5buildEP23btStridingMeshInterfacebRK9btVector3S4_EN29QuantizedNodeTriangleCallback28internalProcessTriangleIndexEPS2_ii__index__ = register_delegate(_ZZN14btOptimizedBvh5buildEP23btStridingMeshInterfacebRK9btVector3S4_EN29QuantizedNodeTriangleCallback28internalProcessTriangleIndexEPS2_ii);
+var _ZZN14btOptimizedBvh5buildEP23btStridingMeshInterfacebRK9btVector3S4_EN29QuantizedNodeTriangleCallbackD0Ev__index__ = register_delegate(_ZZN14btOptimizedBvh5buildEP23btStridingMeshInterfacebRK9btVector3S4_EN29QuantizedNodeTriangleCallbackD0Ev);
+var _ZZN14btOptimizedBvh5buildEP23btStridingMeshInterfacebRK9btVector3S4_EN29QuantizedNodeTriangleCallbackD1Ev__index__ = register_delegate(_ZZN14btOptimizedBvh5buildEP23btStridingMeshInterfacebRK9btVector3S4_EN29QuantizedNodeTriangleCallbackD1Ev);
+var _ZZN16btCollisionWorld13rayTestSingleERK11btTransformS2_P17btCollisionObjectPK16btCollisionShapeS2_RNS_17RayResultCallbackEEN15LocalInfoAdder215addSingleResultERNS_14LocalRayResultEb__index__ = register_delegate(_ZZN16btCollisionWorld13rayTestSingleERK11btTransformS2_P17btCollisionObjectPK16btCollisionShapeS2_RNS_17RayResultCallbackEEN15LocalInfoAdder215addSingleResultERNS_14LocalRayResultEb);
+var _ZZN16btCollisionWorld13rayTestSingleERK11btTransformS2_P17btCollisionObjectPK16btCollisionShapeS2_RNS_17RayResultCallbackEEN15LocalInfoAdder2D0Ev__index__ = register_delegate(_ZZN16btCollisionWorld13rayTestSingleERK11btTransformS2_P17btCollisionObjectPK16btCollisionShapeS2_RNS_17RayResultCallbackEEN15LocalInfoAdder2D0Ev);
+var _ZZN16btCollisionWorld13rayTestSingleERK11btTransformS2_P17btCollisionObjectPK16btCollisionShapeS2_RNS_17RayResultCallbackEEN15LocalInfoAdder2D1Ev__index__ = register_delegate(_ZZN16btCollisionWorld13rayTestSingleERK11btTransformS2_P17btCollisionObjectPK16btCollisionShapeS2_RNS_17RayResultCallbackEEN15LocalInfoAdder2D1Ev);
+var _ZZN16btCollisionWorld13rayTestSingleERK11btTransformS2_P17btCollisionObjectPK16btCollisionShapeS2_RNS_17RayResultCallbackEEN29BridgeTriangleRaycastCallback9reportHitERK9btVector3fii__index__ = register_delegate(_ZZN16btCollisionWorld13rayTestSingleERK11btTransformS2_P17btCollisionObjectPK16btCollisionShapeS2_RNS_17RayResultCallbackEEN29BridgeTriangleRaycastCallback9reportHitERK9btVector3fii);
+var _ZZN16btCollisionWorld13rayTestSingleERK11btTransformS2_P17btCollisionObjectPK16btCollisionShapeS2_RNS_17RayResultCallbackEEN29BridgeTriangleRaycastCallback9reportHitE_0RK9btVector3fii__index__ = register_delegate(_ZZN16btCollisionWorld13rayTestSingleERK11btTransformS2_P17btCollisionObjectPK16btCollisionShapeS2_RNS_17RayResultCallbackEEN29BridgeTriangleRaycastCallback9reportHitE_0RK9btVector3fii);
+var _ZZN16btCollisionWorld13rayTestSingleERK11btTransformS2_P17btCollisionObjectPK16btCollisionShapeS2_RNS_17RayResultCallbackEEN29BridgeTriangleRaycastCallbackD0E_0v__index__ = register_delegate(_ZZN16btCollisionWorld13rayTestSingleERK11btTransformS2_P17btCollisionObjectPK16btCollisionShapeS2_RNS_17RayResultCallbackEEN29BridgeTriangleRaycastCallbackD0E_0v);
+var _ZZN16btCollisionWorld13rayTestSingleERK11btTransformS2_P17btCollisionObjectPK16btCollisionShapeS2_RNS_17RayResultCallbackEEN29BridgeTriangleRaycastCallbackD0Ev__index__ = register_delegate(_ZZN16btCollisionWorld13rayTestSingleERK11btTransformS2_P17btCollisionObjectPK16btCollisionShapeS2_RNS_17RayResultCallbackEEN29BridgeTriangleRaycastCallbackD0Ev);
+var _ZZN16btCollisionWorld13rayTestSingleERK11btTransformS2_P17btCollisionObjectPK16btCollisionShapeS2_RNS_17RayResultCallbackEEN29BridgeTriangleRaycastCallbackD1E_0v__index__ = register_delegate(_ZZN16btCollisionWorld13rayTestSingleERK11btTransformS2_P17btCollisionObjectPK16btCollisionShapeS2_RNS_17RayResultCallbackEEN29BridgeTriangleRaycastCallbackD1E_0v);
+var _ZZN16btCollisionWorld13rayTestSingleERK11btTransformS2_P17btCollisionObjectPK16btCollisionShapeS2_RNS_17RayResultCallbackEEN29BridgeTriangleRaycastCallbackD1Ev__index__ = register_delegate(_ZZN16btCollisionWorld13rayTestSingleERK11btTransformS2_P17btCollisionObjectPK16btCollisionShapeS2_RNS_17RayResultCallbackEEN29BridgeTriangleRaycastCallbackD1Ev);
+var _ZZN16btCollisionWorld17objectQuerySingleEPK13btConvexShapeRK11btTransformS5_P17btCollisionObjectPK16btCollisionShapeS5_RNS_20ConvexResultCallbackEfEN14LocalInfoAdder15addSingleResultERNS_17LocalConvexResultEb__index__ = register_delegate(_ZZN16btCollisionWorld17objectQuerySingleEPK13btConvexShapeRK11btTransformS5_P17btCollisionObjectPK16btCollisionShapeS5_RNS_20ConvexResultCallbackEfEN14LocalInfoAdder15addSingleResultERNS_17LocalConvexResultEb);
+var _ZZN16btCollisionWorld17objectQuerySingleEPK13btConvexShapeRK11btTransformS5_P17btCollisionObjectPK16btCollisionShapeS5_RNS_20ConvexResultCallbackEfEN14LocalInfoAdderD0Ev__index__ = register_delegate(_ZZN16btCollisionWorld17objectQuerySingleEPK13btConvexShapeRK11btTransformS5_P17btCollisionObjectPK16btCollisionShapeS5_RNS_20ConvexResultCallbackEfEN14LocalInfoAdderD0Ev);
+var _ZZN16btCollisionWorld17objectQuerySingleEPK13btConvexShapeRK11btTransformS5_P17btCollisionObjectPK16btCollisionShapeS5_RNS_20ConvexResultCallbackEfEN14LocalInfoAdderD1Ev__index__ = register_delegate(_ZZN16btCollisionWorld17objectQuerySingleEPK13btConvexShapeRK11btTransformS5_P17btCollisionObjectPK16btCollisionShapeS5_RNS_20ConvexResultCallbackEfEN14LocalInfoAdderD1Ev);
+var _ZZN16btCollisionWorld17objectQuerySingleEPK13btConvexShapeRK11btTransformS5_P17btCollisionObjectPK16btCollisionShapeS5_RNS_20ConvexResultCallbackEfEN32BridgeTriangleConvexcastCallback9reportHitERK9btVector3SG_fii__index__ = register_delegate(_ZZN16btCollisionWorld17objectQuerySingleEPK13btConvexShapeRK11btTransformS5_P17btCollisionObjectPK16btCollisionShapeS5_RNS_20ConvexResultCallbackEfEN32BridgeTriangleConvexcastCallback9reportHitERK9btVector3SG_fii);
+var _ZZN16btCollisionWorld17objectQuerySingleEPK13btConvexShapeRK11btTransformS5_P17btCollisionObjectPK16btCollisionShapeS5_RNS_20ConvexResultCallbackEfEN32BridgeTriangleConvexcastCallback9reportHitE_0RK9btVector3SG_fii__index__ = register_delegate(_ZZN16btCollisionWorld17objectQuerySingleEPK13btConvexShapeRK11btTransformS5_P17btCollisionObjectPK16btCollisionShapeS5_RNS_20ConvexResultCallbackEfEN32BridgeTriangleConvexcastCallback9reportHitE_0RK9btVector3SG_fii);
+var _ZZN16btCollisionWorld17objectQuerySingleEPK13btConvexShapeRK11btTransformS5_P17btCollisionObjectPK16btCollisionShapeS5_RNS_20ConvexResultCallbackEfEN32BridgeTriangleConvexcastCallbackD0E_0v__index__ = register_delegate(_ZZN16btCollisionWorld17objectQuerySingleEPK13btConvexShapeRK11btTransformS5_P17btCollisionObjectPK16btCollisionShapeS5_RNS_20ConvexResultCallbackEfEN32BridgeTriangleConvexcastCallbackD0E_0v);
+var _ZZN16btCollisionWorld17objectQuerySingleEPK13btConvexShapeRK11btTransformS5_P17btCollisionObjectPK16btCollisionShapeS5_RNS_20ConvexResultCallbackEfEN32BridgeTriangleConvexcastCallbackD0Ev__index__ = register_delegate(_ZZN16btCollisionWorld17objectQuerySingleEPK13btConvexShapeRK11btTransformS5_P17btCollisionObjectPK16btCollisionShapeS5_RNS_20ConvexResultCallbackEfEN32BridgeTriangleConvexcastCallbackD0Ev);
+var _ZZN16btCollisionWorld17objectQuerySingleEPK13btConvexShapeRK11btTransformS5_P17btCollisionObjectPK16btCollisionShapeS5_RNS_20ConvexResultCallbackEfEN32BridgeTriangleConvexcastCallbackD1E_0v__index__ = register_delegate(_ZZN16btCollisionWorld17objectQuerySingleEPK13btConvexShapeRK11btTransformS5_P17btCollisionObjectPK16btCollisionShapeS5_RNS_20ConvexResultCallbackEfEN32BridgeTriangleConvexcastCallbackD1E_0v);
+var _ZZN16btCollisionWorld17objectQuerySingleEPK13btConvexShapeRK11btTransformS5_P17btCollisionObjectPK16btCollisionShapeS5_RNS_20ConvexResultCallbackEfEN32BridgeTriangleConvexcastCallbackD1Ev__index__ = register_delegate(_ZZN16btCollisionWorld17objectQuerySingleEPK13btConvexShapeRK11btTransformS5_P17btCollisionObjectPK16btCollisionShapeS5_RNS_20ConvexResultCallbackEfEN32BridgeTriangleConvexcastCallbackD1Ev);
+var _ZZN22btBvhTriangleMeshShape14performRaycastEP18btTriangleCallbackRK9btVector3S4_EN21MyNodeOverlapCallback11processNodeEii__index__ = register_delegate(_ZZN22btBvhTriangleMeshShape14performRaycastEP18btTriangleCallbackRK9btVector3S4_EN21MyNodeOverlapCallback11processNodeEii);
+var _ZZN22btBvhTriangleMeshShape14performRaycastEP18btTriangleCallbackRK9btVector3S4_EN21MyNodeOverlapCallbackD0Ev__index__ = register_delegate(_ZZN22btBvhTriangleMeshShape14performRaycastEP18btTriangleCallbackRK9btVector3S4_EN21MyNodeOverlapCallbackD0Ev);
+var _ZZN22btBvhTriangleMeshShape14performRaycastEP18btTriangleCallbackRK9btVector3S4_EN21MyNodeOverlapCallbackD1Ev__index__ = register_delegate(_ZZN22btBvhTriangleMeshShape14performRaycastEP18btTriangleCallbackRK9btVector3S4_EN21MyNodeOverlapCallbackD1Ev);
+var _ZZN22btBvhTriangleMeshShape17performConvexcastEP18btTriangleCallbackRK9btVector3S4_S4_S4_EN21MyNodeOverlapCallback11processNodeEii__index__ = register_delegate(_ZZN22btBvhTriangleMeshShape17performConvexcastEP18btTriangleCallbackRK9btVector3S4_S4_S4_EN21MyNodeOverlapCallback11processNodeEii);
+var _ZZN22btBvhTriangleMeshShape17performConvexcastEP18btTriangleCallbackRK9btVector3S4_S4_S4_EN21MyNodeOverlapCallbackD0Ev__index__ = register_delegate(_ZZN22btBvhTriangleMeshShape17performConvexcastEP18btTriangleCallbackRK9btVector3S4_S4_S4_EN21MyNodeOverlapCallbackD0Ev);
+var _ZZN22btBvhTriangleMeshShape17performConvexcastEP18btTriangleCallbackRK9btVector3S4_S4_S4_EN21MyNodeOverlapCallbackD1Ev__index__ = register_delegate(_ZZN22btBvhTriangleMeshShape17performConvexcastEP18btTriangleCallbackRK9btVector3S4_S4_S4_EN21MyNodeOverlapCallbackD1Ev);
+var _ZZN23btDiscreteDynamicsWorld16solveConstraintsER19btContactSolverInfoEN27InplaceSolverIslandCallback13ProcessIslandEPP17btCollisionObjectiPP20btPersistentManifoldii__index__ = register_delegate(_ZZN23btDiscreteDynamicsWorld16solveConstraintsER19btContactSolverInfoEN27InplaceSolverIslandCallback13ProcessIslandEPP17btCollisionObjectiPP20btPersistentManifoldii);
+var _ZZN23btDiscreteDynamicsWorld16solveConstraintsER19btContactSolverInfoEN27InplaceSolverIslandCallbackD0Ev__index__ = register_delegate(_ZZN23btDiscreteDynamicsWorld16solveConstraintsER19btContactSolverInfoEN27InplaceSolverIslandCallbackD0Ev);
+var _ZZN23btDiscreteDynamicsWorld16solveConstraintsER19btContactSolverInfoEN27InplaceSolverIslandCallbackD1Ev__index__ = register_delegate(_ZZN23btDiscreteDynamicsWorld16solveConstraintsER19btContactSolverInfoEN27InplaceSolverIslandCallbackD1Ev);
+var _ZZN28btHashedOverlappingPairCache19cleanProxyFromPairsEP17btBroadphaseProxyP12btDispatcherEN17CleanPairCallback14processOverlapER16btBroadphasePair__index__ = register_delegate(_ZZN28btHashedOverlappingPairCache19cleanProxyFromPairsEP17btBroadphaseProxyP12btDispatcherEN17CleanPairCallback14processOverlapER16btBroadphasePair);
+var _ZZN28btHashedOverlappingPairCache19cleanProxyFromPairsEP17btBroadphaseProxyP12btDispatcherEN17CleanPairCallbackD0Ev__index__ = register_delegate(_ZZN28btHashedOverlappingPairCache19cleanProxyFromPairsEP17btBroadphaseProxyP12btDispatcherEN17CleanPairCallbackD0Ev);
+var _ZZN28btHashedOverlappingPairCache19cleanProxyFromPairsEP17btBroadphaseProxyP12btDispatcherEN17CleanPairCallbackD1Ev__index__ = register_delegate(_ZZN28btHashedOverlappingPairCache19cleanProxyFromPairsEP17btBroadphaseProxyP12btDispatcherEN17CleanPairCallbackD1Ev);
+var _ZZN28btHashedOverlappingPairCache37removeOverlappingPairsContainingProxyEP17btBroadphaseProxyP12btDispatcherEN18RemovePairCallback14processOverlapER16btBroadphasePair__index__ = register_delegate(_ZZN28btHashedOverlappingPairCache37removeOverlappingPairsContainingProxyEP17btBroadphaseProxyP12btDispatcherEN18RemovePairCallback14processOverlapER16btBroadphasePair);
+var _ZZN28btHashedOverlappingPairCache37removeOverlappingPairsContainingProxyEP17btBroadphaseProxyP12btDispatcherEN18RemovePairCallbackD0Ev__index__ = register_delegate(_ZZN28btHashedOverlappingPairCache37removeOverlappingPairsContainingProxyEP17btBroadphaseProxyP12btDispatcherEN18RemovePairCallbackD0Ev);
+var _ZZN28btHashedOverlappingPairCache37removeOverlappingPairsContainingProxyEP17btBroadphaseProxyP12btDispatcherEN18RemovePairCallbackD1Ev__index__ = register_delegate(_ZZN28btHashedOverlappingPairCache37removeOverlappingPairsContainingProxyEP17btBroadphaseProxyP12btDispatcherEN18RemovePairCallbackD1Ev);
+var _ZZN33btConvexConcaveCollisionAlgorithm21calculateTimeOfImpactEP17btCollisionObjectS1_RK16btDispatcherInfoP16btManifoldResultEN31LocalTriangleSphereCastCallback15processTriangleEP9btVector3ii__index__ = register_delegate(_ZZN33btConvexConcaveCollisionAlgorithm21calculateTimeOfImpactEP17btCollisionObjectS1_RK16btDispatcherInfoP16btManifoldResultEN31LocalTriangleSphereCastCallback15processTriangleEP9btVector3ii);
+var _ZZN33btConvexConcaveCollisionAlgorithm21calculateTimeOfImpactEP17btCollisionObjectS1_RK16btDispatcherInfoP16btManifoldResultEN31LocalTriangleSphereCastCallbackD0Ev__index__ = register_delegate(_ZZN33btConvexConcaveCollisionAlgorithm21calculateTimeOfImpactEP17btCollisionObjectS1_RK16btDispatcherInfoP16btManifoldResultEN31LocalTriangleSphereCastCallbackD0Ev);
+var _ZZN33btConvexConcaveCollisionAlgorithm21calculateTimeOfImpactEP17btCollisionObjectS1_RK16btDispatcherInfoP16btManifoldResultEN31LocalTriangleSphereCastCallbackD1Ev__index__ = register_delegate(_ZZN33btConvexConcaveCollisionAlgorithm21calculateTimeOfImpactEP17btCollisionObjectS1_RK16btDispatcherInfoP16btManifoldResultEN31LocalTriangleSphereCastCallbackD1Ev);
+var _ZZNK19btTriangleMeshShape19processAllTrianglesEP18btTriangleCallbackRK9btVector3S4_EN16FilteredCallback28internalProcessTriangleIndexEPS2_ii__index__ = register_delegate(_ZZNK19btTriangleMeshShape19processAllTrianglesEP18btTriangleCallbackRK9btVector3S4_EN16FilteredCallback28internalProcessTriangleIndexEPS2_ii);
+var _ZZNK19btTriangleMeshShape19processAllTrianglesEP18btTriangleCallbackRK9btVector3S4_EN16FilteredCallbackD0Ev__index__ = register_delegate(_ZZNK19btTriangleMeshShape19processAllTrianglesEP18btTriangleCallbackRK9btVector3S4_EN16FilteredCallbackD0Ev);
+var _ZZNK19btTriangleMeshShape19processAllTrianglesEP18btTriangleCallbackRK9btVector3S4_EN16FilteredCallbackD1Ev__index__ = register_delegate(_ZZNK19btTriangleMeshShape19processAllTrianglesEP18btTriangleCallbackRK9btVector3S4_EN16FilteredCallbackD1Ev);
+var _ZZNK22btBvhTriangleMeshShape19processAllTrianglesEP18btTriangleCallbackRK9btVector3S4_EN21MyNodeOverlapCallback11processNodeEii__index__ = register_delegate(_ZZNK22btBvhTriangleMeshShape19processAllTrianglesEP18btTriangleCallbackRK9btVector3S4_EN21MyNodeOverlapCallback11processNodeEii);
+var _ZZNK22btBvhTriangleMeshShape19processAllTrianglesEP18btTriangleCallbackRK9btVector3S4_EN21MyNodeOverlapCallbackD0Ev__index__ = register_delegate(_ZZNK22btBvhTriangleMeshShape19processAllTrianglesEP18btTriangleCallbackRK9btVector3S4_EN21MyNodeOverlapCallbackD0Ev);
+var _ZZNK22btBvhTriangleMeshShape19processAllTrianglesEP18btTriangleCallbackRK9btVector3S4_EN21MyNodeOverlapCallbackD1Ev__index__ = register_delegate(_ZZNK22btBvhTriangleMeshShape19processAllTrianglesEP18btTriangleCallbackRK9btVector3S4_EN21MyNodeOverlapCallbackD1Ev);
+var __cxa_pure_virtual__index__ = register_delegate(__cxa_pure_virtual);
+var __fwrite__index__ = register_delegate(__fwrite);
+var __mandreel_internal_SetResolution__index__ = register_delegate(__mandreel_internal_SetResolution);
+var __resize__index__ = register_delegate(__resize);
+var cmpfacets__index__ = register_delegate(cmpfacets);
+var cmplocales__index__ = register_delegate(cmplocales);
+var iMandreel_TextureAsync_GetPackOffset__index__ = register_delegate(iMandreel_TextureAsync_GetPackOffset);
+var iMandreel_TextureAsync_IsCompressed__index__ = register_delegate(iMandreel_TextureAsync_IsCompressed);
+var imandreel_restore_glcontext__index__ = register_delegate(imandreel_restore_glcontext);
+var imandreel_viewport_resize__index__ = register_delegate(imandreel_viewport_resize);
+var mandreel_flash_tcp_onError__index__ = register_delegate(mandreel_flash_tcp_onError);
+var swrite__index__ = register_delegate(swrite);
+var _objc_sections = {};
+var _objc_sections_size = {};
+
+// End of mandreel.js file.
diff --git a/suite/cts/deviceTests/browserbench/assets/octane/navier-stokes.js b/suite/cts/deviceTests/browserbench/assets/octane/navier-stokes.js
new file mode 100644
index 0000000..a33e7cd
--- /dev/null
+++ b/suite/cts/deviceTests/browserbench/assets/octane/navier-stokes.js
@@ -0,0 +1,409 @@
+/**
+ * Copyright 2012 the V8 project authors. All rights reserved.
+ * Copyright 2009 Oliver Hunt <http://nerget.com>
+ *
+ * Permission is hereby granted, free of charge, to any person
+ * obtaining a copy of this software and associated documentation
+ * files (the "Software"), to deal in the Software without
+ * restriction, including without limitation the rights to use,
+ * copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following
+ * conditions:
+ *
+ * The above copyright notice and this permission notice shall be
+ * included in all copies or substantial portions of the Software.
+ *
+ * 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 OR COPYRIGHT
+ * HOLDERS 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.
+ */
+
+var NavierStokes = new BenchmarkSuite('NavierStokes', 1484000,
+                                      [new Benchmark('NavierStokes',
+                                                     runNavierStokes,
+                                                     setupNavierStokes,
+                                                     tearDownNavierStokes,
+                                                     16)]);
+
+var solver = null;
+var nsFrameCounter = 0;
+
+function runNavierStokes()
+{
+    solver.update();
+    nsFrameCounter++;
+
+    if(nsFrameCounter==15)
+        checkResult(solver.getDens());
+}
+
+function checkResult(dens) {
+
+    this.result = 0;
+    for (var i=7000;i<7100;i++) {
+        this.result+=~~((dens[i]*10));
+    }
+
+    if (this.result!=74) {
+        alert("checksum failed: " + this.result);
+    }
+}
+
+function setupNavierStokes()
+{
+    solver = new FluidField(null);
+    solver.setResolution(128, 128);
+    solver.setIterations(20);
+    solver.setDisplayFunction(function(){});
+    solver.setUICallback(prepareFrame);
+    solver.reset();
+}
+
+function tearDownNavierStokes()
+{
+    solver = null;
+}
+
+function addPoints(field) {
+    var n = 64;
+    for (var i = 1; i <= n; i++) {
+        field.setVelocity(i, i, n, n);
+        field.setDensity(i, i, 5);
+        field.setVelocity(i, n - i, -n, -n);
+        field.setDensity(i, n - i, 20);
+        field.setVelocity(128 - i, n + i, -n, -n);
+        field.setDensity(128 - i, n + i, 30);
+    }
+}
+
+var framesTillAddingPoints = 0;
+var framesBetweenAddingPoints = 5;
+
+function prepareFrame(field)
+{
+    if (framesTillAddingPoints == 0) {
+        addPoints(field);
+        framesTillAddingPoints = framesBetweenAddingPoints;
+        framesBetweenAddingPoints++;
+    } else {
+        framesTillAddingPoints--;
+    }
+}
+
+// Code from Oliver Hunt (http://nerget.com/fluidSim/pressure.js) starts here.
+function FluidField(canvas) {
+    function addFields(x, s, dt)
+    {
+        for (var i=0; i<size ; i++ ) x[i] += dt*s[i];
+    }
+
+    function set_bnd(b, x)
+    {
+        if (b===1) {
+            for (var i = 1; i <= width; i++) {
+                x[i] =  x[i + rowSize];
+                x[i + (height+1) *rowSize] = x[i + height * rowSize];
+            }
+
+            for (var j = 1; i <= height; i++) {
+                x[j * rowSize] = -x[1 + j * rowSize];
+                x[(width + 1) + j * rowSize] = -x[width + j * rowSize];
+            }
+        } else if (b === 2) {
+            for (var i = 1; i <= width; i++) {
+                x[i] = -x[i + rowSize];
+                x[i + (height + 1) * rowSize] = -x[i + height * rowSize];
+            }
+
+            for (var j = 1; j <= height; j++) {
+                x[j * rowSize] =  x[1 + j * rowSize];
+                x[(width + 1) + j * rowSize] =  x[width + j * rowSize];
+            }
+        } else {
+            for (var i = 1; i <= width; i++) {
+                x[i] =  x[i + rowSize];
+                x[i + (height + 1) * rowSize] = x[i + height * rowSize];
+            }
+
+            for (var j = 1; j <= height; j++) {
+                x[j * rowSize] =  x[1 + j * rowSize];
+                x[(width + 1) + j * rowSize] =  x[width + j * rowSize];
+            }
+        }
+        var maxEdge = (height + 1) * rowSize;
+        x[0]                 = 0.5 * (x[1] + x[rowSize]);
+        x[maxEdge]           = 0.5 * (x[1 + maxEdge] + x[height * rowSize]);
+        x[(width+1)]         = 0.5 * (x[width] + x[(width + 1) + rowSize]);
+        x[(width+1)+maxEdge] = 0.5 * (x[width + maxEdge] + x[(width + 1) + height * rowSize]);
+    }
+
+    function lin_solve(b, x, x0, a, c)
+    {
+        if (a === 0 && c === 1) {
+            for (var j=1 ; j<=height; j++) {
+                var currentRow = j * rowSize;
+                ++currentRow;
+                for (var i = 0; i < width; i++) {
+                    x[currentRow] = x0[currentRow];
+                    ++currentRow;
+                }
+            }
+            set_bnd(b, x);
+        } else {
+            var invC = 1 / c;
+            for (var k=0 ; k<iterations; k++) {
+                for (var j=1 ; j<=height; j++) {
+                    var lastRow = (j - 1) * rowSize;
+                    var currentRow = j * rowSize;
+                    var nextRow = (j + 1) * rowSize;
+                    var lastX = x[currentRow];
+                    ++currentRow;
+                    for (var i=1; i<=width; i++)
+                        lastX = x[currentRow] = (x0[currentRow] + a*(lastX+x[++currentRow]+x[++lastRow]+x[++nextRow])) * invC;
+                }
+                set_bnd(b, x);
+            }
+        }
+    }
+
+    function diffuse(b, x, x0, dt)
+    {
+        var a = 0;
+        lin_solve(b, x, x0, a, 1 + 4*a);
+    }
+
+    function lin_solve2(x, x0, y, y0, a, c)
+    {
+        if (a === 0 && c === 1) {
+            for (var j=1 ; j <= height; j++) {
+                var currentRow = j * rowSize;
+                ++currentRow;
+                for (var i = 0; i < width; i++) {
+                    x[currentRow] = x0[currentRow];
+                    y[currentRow] = y0[currentRow];
+                    ++currentRow;
+                }
+            }
+            set_bnd(1, x);
+            set_bnd(2, y);
+        } else {
+            var invC = 1/c;
+            for (var k=0 ; k<iterations; k++) {
+                for (var j=1 ; j <= height; j++) {
+                    var lastRow = (j - 1) * rowSize;
+                    var currentRow = j * rowSize;
+                    var nextRow = (j + 1) * rowSize;
+                    var lastX = x[currentRow];
+                    var lastY = y[currentRow];
+                    ++currentRow;
+                    for (var i = 1; i <= width; i++) {
+                        lastX = x[currentRow] = (x0[currentRow] + a * (lastX + x[currentRow] + x[lastRow] + x[nextRow])) * invC;
+                        lastY = y[currentRow] = (y0[currentRow] + a * (lastY + y[++currentRow] + y[++lastRow] + y[++nextRow])) * invC;
+                    }
+                }
+                set_bnd(1, x);
+                set_bnd(2, y);
+            }
+        }
+    }
+
+    function diffuse2(x, x0, y, y0, dt)
+    {
+        var a = 0;
+        lin_solve2(x, x0, y, y0, a, 1 + 4 * a);
+    }
+
+    function advect(b, d, d0, u, v, dt)
+    {
+        var Wdt0 = dt * width;
+        var Hdt0 = dt * height;
+        var Wp5 = width + 0.5;
+        var Hp5 = height + 0.5;
+        for (var j = 1; j<= height; j++) {
+            var pos = j * rowSize;
+            for (var i = 1; i <= width; i++) {
+                var x = i - Wdt0 * u[++pos];
+                var y = j - Hdt0 * v[pos];
+                if (x < 0.5)
+                    x = 0.5;
+                else if (x > Wp5)
+                    x = Wp5;
+                var i0 = x | 0;
+                var i1 = i0 + 1;
+                if (y < 0.5)
+                    y = 0.5;
+                else if (y > Hp5)
+                    y = Hp5;
+                var j0 = y | 0;
+                var j1 = j0 + 1;
+                var s1 = x - i0;
+                var s0 = 1 - s1;
+                var t1 = y - j0;
+                var t0 = 1 - t1;
+                var row1 = j0 * rowSize;
+                var row2 = j1 * rowSize;
+                d[pos] = s0 * (t0 * d0[i0 + row1] + t1 * d0[i0 + row2]) + s1 * (t0 * d0[i1 + row1] + t1 * d0[i1 + row2]);
+            }
+        }
+        set_bnd(b, d);
+    }
+
+    function project(u, v, p, div)
+    {
+        var h = -0.5 / Math.sqrt(width * height);
+        for (var j = 1 ; j <= height; j++ ) {
+            var row = j * rowSize;
+            var previousRow = (j - 1) * rowSize;
+            var prevValue = row - 1;
+            var currentRow = row;
+            var nextValue = row + 1;
+            var nextRow = (j + 1) * rowSize;
+            for (var i = 1; i <= width; i++ ) {
+                div[++currentRow] = h * (u[++nextValue] - u[++prevValue] + v[++nextRow] - v[++previousRow]);
+                p[currentRow] = 0;
+            }
+        }
+        set_bnd(0, div);
+        set_bnd(0, p);
+
+        lin_solve(0, p, div, 1, 4 );
+        var wScale = 0.5 * width;
+        var hScale = 0.5 * height;
+        for (var j = 1; j<= height; j++ ) {
+            var prevPos = j * rowSize - 1;
+            var currentPos = j * rowSize;
+            var nextPos = j * rowSize + 1;
+            var prevRow = (j - 1) * rowSize;
+            var currentRow = j * rowSize;
+            var nextRow = (j + 1) * rowSize;
+
+            for (var i = 1; i<= width; i++) {
+                u[++currentPos] -= wScale * (p[++nextPos] - p[++prevPos]);
+                v[currentPos]   -= hScale * (p[++nextRow] - p[++prevRow]);
+            }
+        }
+        set_bnd(1, u);
+        set_bnd(2, v);
+    }
+
+    function dens_step(x, x0, u, v, dt)
+    {
+        addFields(x, x0, dt);
+        diffuse(0, x0, x, dt );
+        advect(0, x, x0, u, v, dt );
+    }
+
+    function vel_step(u, v, u0, v0, dt)
+    {
+        addFields(u, u0, dt );
+        addFields(v, v0, dt );
+        var temp = u0; u0 = u; u = temp;
+        var temp = v0; v0 = v; v = temp;
+        diffuse2(u,u0,v,v0, dt);
+        project(u, v, u0, v0);
+        var temp = u0; u0 = u; u = temp;
+        var temp = v0; v0 = v; v = temp;
+        advect(1, u, u0, u0, v0, dt);
+        advect(2, v, v0, u0, v0, dt);
+        project(u, v, u0, v0 );
+    }
+    var uiCallback = function(d,u,v) {};
+
+    function Field(dens, u, v) {
+        // Just exposing the fields here rather than using accessors is a measurable win during display (maybe 5%)
+        // but makes the code ugly.
+        this.setDensity = function(x, y, d) {
+             dens[(x + 1) + (y + 1) * rowSize] = d;
+        }
+        this.getDensity = function(x, y) {
+             return dens[(x + 1) + (y + 1) * rowSize];
+        }
+        this.setVelocity = function(x, y, xv, yv) {
+             u[(x + 1) + (y + 1) * rowSize] = xv;
+             v[(x + 1) + (y + 1) * rowSize] = yv;
+        }
+        this.getXVelocity = function(x, y) {
+             return u[(x + 1) + (y + 1) * rowSize];
+        }
+        this.getYVelocity = function(x, y) {
+             return v[(x + 1) + (y + 1) * rowSize];
+        }
+        this.width = function() { return width; }
+        this.height = function() { return height; }
+    }
+    function queryUI(d, u, v)
+    {
+        for (var i = 0; i < size; i++)
+            u[i] = v[i] = d[i] = 0.0;
+        uiCallback(new Field(d, u, v));
+    }
+
+    this.update = function () {
+        queryUI(dens_prev, u_prev, v_prev);
+        vel_step(u, v, u_prev, v_prev, dt);
+        dens_step(dens, dens_prev, u, v, dt);
+        displayFunc(new Field(dens, u, v));
+    }
+    this.setDisplayFunction = function(func) {
+        displayFunc = func;
+    }
+
+    this.iterations = function() { return iterations; }
+    this.setIterations = function(iters) {
+        if (iters > 0 && iters <= 100)
+           iterations = iters;
+    }
+    this.setUICallback = function(callback) {
+        uiCallback = callback;
+    }
+    var iterations = 10;
+    var visc = 0.5;
+    var dt = 0.1;
+    var dens;
+    var dens_prev;
+    var u;
+    var u_prev;
+    var v;
+    var v_prev;
+    var width;
+    var height;
+    var rowSize;
+    var size;
+    var displayFunc;
+    function reset()
+    {
+        rowSize = width + 2;
+        size = (width+2)*(height+2);
+        dens = new Array(size);
+        dens_prev = new Array(size);
+        u = new Array(size);
+        u_prev = new Array(size);
+        v = new Array(size);
+        v_prev = new Array(size);
+        for (var i = 0; i < size; i++)
+            dens_prev[i] = u_prev[i] = v_prev[i] = dens[i] = u[i] = v[i] = 0;
+    }
+    this.reset = reset;
+    this.getDens = function()
+    {
+        return dens;
+    }
+    this.setResolution = function (hRes, wRes)
+    {
+        var res = wRes * hRes;
+        if (res > 0 && res < 1000000 && (wRes != width || hRes != height)) {
+            width = wRes;
+            height = hRes;
+            reset();
+            return true;
+        }
+        return false;
+    }
+    this.setResolution(64, 64);
+}
diff --git a/suite/cts/deviceTests/browserbench/assets/octane/pdfjs.js b/suite/cts/deviceTests/browserbench/assets/octane/pdfjs.js
new file mode 100644
index 0000000..a915220
--- /dev/null
+++ b/suite/cts/deviceTests/browserbench/assets/octane/pdfjs.js
@@ -0,0 +1,33056 @@
+// Portions copyright 2012 Google, Inc.
+// Portions copyright 2011 Mozilla Foundation. All rights reserved.
+
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 2 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+// The PDF-JS code in this file has been written by Mozilla.
+// It is available in its latest version from:
+//
+//   https://github.com/mozilla/pdf.js
+
+
+//////// Benchmark set-up. (c) by Google. ////////
+
+var pdf_file = "test.pdf";
+var canvas_logs = [];
+
+var PdfJS = new BenchmarkSuite("PdfJS", 9000000, [
+  new Benchmark("PdfJS", runPdfJS, setupPdfJS, tearDownPdfJS, 4)
+]);
+
+function setupPdfJS() {
+  // Check for Typed Arrays support, throw error if not.
+  if (!(typeof Uint8Array != "undefined" &&
+    typeof Float64Array != "undefined" &&
+    typeof (new Uint8Array(0)).subarray != "undefined")) {
+      throw "TypedArrayUnsupported";
+    }
+
+  PdfJS_window.__resources__[pdf_file] = buffer(PdfJS_window.atob(getPDF()));
+}
+
+function runPdfJS() {
+  PDFJS.getDocument(pdf_file).then(function(pdf) {
+    var canvas = PdfJS_window.document.getElementById('canvas');
+    var context = canvas.getContext('2d');
+    var renderContext = {canvasContext: context};
+    canvas_logs.push(context.__log__);
+
+    // Cycle through all pages.
+    function renderPages(i, j) {
+      if (i > j) return;
+      context.clearRect(0, 0, canvas.width, canvas.height);
+      pdf.getPage(i).then(function(page) {
+        renderContext.viewport = page.getViewport(1);
+        canvas.height = renderContext.viewport.height;
+        canvas.width = renderContext.viewport.width;
+        page.render(renderContext).then(renderPages.bind(null, i + 1, j));
+      });
+    }
+    renderPages(1, pdf.numPages);
+  });
+
+  // Wait for everything to complete.
+  PdfJS_window.flushTimeouts();
+}
+
+function tearDownPdfJS() {
+  // Should produce 36788 939524096 for all runs.
+  for (var i = 0; i < canvas_logs.length; ++i) {
+    var log_length = canvas_logs[i].length;
+    var log_hash = hash(canvas_logs[i].join(" "));
+    var expected_length = 36788;
+    var expected_hash = 939524096;
+    if (log_length !== expected_length || log_hash !== expected_hash) {
+      var message = "PdfJS produced incorrect output: " +
+          "expected " + expected_length + " " + expected_hash + ", " +
+          "got " + log_length + " " + log_hash;
+      console.log(message + "\n");
+      throw message;
+    }
+  }
+  // Allow GC of global state.
+  delete this.PDFJS;
+  delete this.PdfJS_window;
+}
+
+function buffer(s) {
+  var b = new ArrayBuffer(s.length);
+  var a = new Uint8Array(b);
+  for (var i = 0; i < s.length; ++i) a[i] = s.charCodeAt(i);
+  return b;
+}
+
+function hash(s) {
+  var up = Math.floor((s.length + 3) / 4);
+  var h = 0;
+  for (var i = 0; 4*i - 3 < s.length; i += 4) {
+    for (var j = 0; j < 4 && i + j < s.length; ++j)
+      h = (h + s.charCodeAt(i + j) << (8*j)) | 0;
+  }
+  return h;
+}
+
+
+///////// Mocks of relevant browser functionality. (c) by Google. ////////
+
+// Every acces to window will be redirected to PdfJS_window.
+var PdfJS_window = Object.create(this);
+
+function PdfJS_windowInstall(name, x) {
+  Object.defineProperty(PdfJS_window, name, {value: x});
+}
+
+PdfJS_windowInstall("setTimeout", function(cmd, delay) {
+  PdfJS_window.__timeouts__.push(cmd);
+});
+
+PdfJS_windowInstall("flushTimeouts", function() {
+  while (PdfJS_window.__timeouts__.length != 0) {
+    var next = PdfJS_window.__timeouts__.pop();
+    if (typeof next === "function")
+      next({data: "{}"});
+    else
+      eval(next);
+  }
+});
+
+PdfJS_windowInstall("window", PdfJS_window);
+
+PdfJS_window.__timeouts__ = [];
+PdfJS_window.__resources__ = {};
+
+
+// Base64 encoding/decoding is based on code by Grant Galitz.
+PdfJS_window.__to64__ = [
+  "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M",
+  "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z",
+  "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m",
+  "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z",
+  "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "+", "/", "="
+];
+
+PdfJS_windowInstall("btoa", function(data) {
+  var result = "";
+  if (data.length > 0) {
+    var i = 0;
+    while (i < data.length) {
+      var b1 = data.charCodeAt(i++) & 0xff;
+      var b2 = data.charCodeAt(i++ < data.length ? i-1 : 0) & 0xff;
+      var b3 = data.charCodeAt(i++ < data.length ? i-1 : 0) & 0xff;
+      result += PdfJS_window.__to64__[b1 >> 2];
+      if (i === data.length + 2) {
+        result += PdfJS_window.__to64__[(b1 & 0x3) << 4] + "==";
+      } else {
+        result += PdfJS_window.__to64__[((b1 & 0x3) << 4) | (b2 >> 4)];
+        if (i === data.length + 1) {
+          result += PdfJS_window.__to64__[(b2 & 0xF) << 2] + "=";
+        } else {
+          result += PdfJS_window.__to64__[((b2 & 0xF) << 2) | (b3 >> 6)] +
+	      PdfJS_window.__to64__[b3 & 0x3F];
+        }
+      }
+    }
+  }
+  return result;
+});
+
+PdfJS_window.__from64__ =
+  "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";
+
+PdfJS_windowInstall("atob", function(data) {
+  var result = "";
+  var i = 0;
+  while (i < data.length) {
+    var x1 = PdfJS_window.__from64__.indexOf(data.charAt(i++));
+    var x2 = PdfJS_window.__from64__.indexOf(data.charAt(i++));
+    var x3 = PdfJS_window.__from64__.indexOf(data.charAt(i++));
+    var x4 = PdfJS_window.__from64__.indexOf(data.charAt(i++));
+    result += String.fromCharCode((x1 << 2) | (x2 >> 4));
+    if (x3 != 0x40) {
+       result += String.fromCharCode(((x2 & 0x0F) << 4) | (x3 >> 2));
+       if (x4 != 0x40) {
+         result += String.fromCharCode(((x3 & 0x03) << 6) | x4);
+      }
+    }
+  }
+  return result;
+});
+
+
+PdfJS_windowInstall("XMLHttpRequest", function() {
+  this.open = function(type, url, some_bool) {
+    this.url = url;
+  }
+  this.overrideMimeType = function() {}
+  this.send = function() {
+    this.response = PdfJS_window.__resources__[this.url];
+    this.readyState = 4;
+    this.status = 0;
+    this.onreadystatechange();
+  }
+});
+
+PdfJS_windowInstall("console", this.console ? this.console : {
+  log: function(s) {
+    // To verify that the test produces the right results,
+    // uncomment this code.
+    /*
+    var re = new RegExp("%d", "g");
+    var args = arguments;
+    var i = 0;
+    print(s.replace(re, function() { return args[++i] }));
+    */
+  }
+});
+
+PdfJS_windowInstall("location", {
+  protocol: ""
+});
+
+PdfJS_windowInstall("Event", function() {
+  this.initEvent = function(name) {
+    this.name = name;
+  }
+});
+
+PdfJS_windowInstall("Element", function(type) {
+  this.__listeners__ = {};
+  this.element_type = type;
+  this.insertBefore = function() {};
+  this.addEventListener = function(name, listener) {
+    this.__listeners__[name] = listener;
+  };
+  this.removeEventListener = function(name) {
+    delete this.__listeners__[name];
+  };
+  this.dispatchEvent = function(event) {
+    this.__listeners__[event.name](event)
+  };
+  this.getElementsByTagName = function(name) {
+    if (name === "head") {
+      return [{appendChild: function() {}}]
+    }
+  };
+  this.appendChild = function() {};
+  this.setAttribute = function() {};
+  this.sheet = {
+    cssRules: [],
+    insertRule: function() {}
+  };
+});
+
+PdfJS_windowInstall("Context", function() {
+  this.__log__ = [];
+  this.save = function() {
+    this.__log__.push("save","\n");
+  }
+  this.restore = function() {
+    this.__log__.push("restore","\n");
+  }
+  this.transform = function(a,b,c,d,e,f) {
+    this.__log__.push("transform",a,b,c,d,e,f,"\n");
+  }
+  this.translate = function(x,y) {
+    this.__log__.push("translate",x,y,"\n");
+  }
+  this.scale = function(x,y) {
+    this.__log__.push("scale",x,y,"\n");
+  }
+  this.rect = function(x,y,w,h) {
+    this.__log__.push("rect",x,y,w,h,"\n");
+  }
+  this.clip = function() {
+    this.__log__.push("clip","\n");
+  }
+  this.fill = function() {
+    this.__log__.push("fill","\n");
+  }
+  this.stroke = function() {
+    this.__log__.push("stroke","\n");
+  }
+  this.beginPath = function() {
+    this.__log__.push("beginPath","\n");
+  }
+  this.closePath = function() {
+    this.__log__.push("closePath","\n");
+  }
+  this.moveTo = function(x,y) {
+    this.__log__.push("moveTo",x,y,"\n");
+  }
+  this.lineTo = function(x,y) {
+    this.__log__.push("lineTo",x,y,"\n");
+  }
+  this.fillRect = function(x,y,w,h) {
+    this.__log__.push("fillRect",x,y,w,h,"\n");
+  }
+  this.fillText = function(s,x,y,w) {
+    this.__log__.push("fillText",s,x,y,"\n");
+  }
+  this.strokeText = function(s,x,y,w) {
+    this.__log__.push("strokeText",s,x,y,"\n");
+  }
+  this.getImageData = function(x,y,w,h) {
+    this.__log__.push("getImageData",x,y,w,h,"\n");
+    return {data: []};
+  }
+  this.putImageData = function(data,x,y) {
+    this.__log__.push("putImageData","{...}",x,y,"\n");
+  }
+  this.drawImage = function(image,x,y) {
+    this.__log__.push("drawImage","<elem>",x,y,"\n");
+  }
+  this.getParameter = function(name) {
+    this.__log__.push("getParameter",name,"\n");
+    return null;
+  }
+  this.enable = function() {
+    this.__log__.push("enable","\n");
+  }
+  this.disable = function() {
+    this.__log__.push("disable","\n");
+  }
+  this.depthFunc = function(param) {
+    this.__log__.push("depthFunc",param,"\n");
+  }
+  this.clearColor = function(r,g,b,a) {
+    this.__log__.push("clearColor",r,g,b,a,"\n");
+  }
+  this.clear = function(m) {
+    this.__log__.push("clear",m,"\n");
+  }
+  this.clearRect = function(x,y,w,h) {
+    this.__log__.push("createRect",x,y,w,h,"\n");
+  }
+});
+
+PdfJS_windowInstall("Canvas", function() {
+  this.getContext = function() {
+    return new PdfJS_window.Context();
+  }
+  this.width = 100;
+  this.height = 100;
+  this.style = { visibility: "visibile" };
+});
+
+PdfJS_windowInstall("document", {
+  body : new PdfJS_window.Element("body"),
+  documentElement : new PdfJS_window.Element("document"),
+  createElement : function(element_type) {
+    var element;
+    if (element_type === "canvas") {
+      element = new PdfJS_window.Canvas();
+    } else {
+      element = new PdfJS_window.Element(element_type);
+    }
+    element.parentNode = new PdfJS_window.Element("dummy_parent");
+    return element;
+  },
+  getElementById : function(name) {
+    if (name === "canvas") {
+      return new PdfJS_window.Canvas();
+    } else {
+      return undefined;
+    }
+  },
+  getElementsByTagName : function(element) {
+    if (element === "script") {
+      return new Array(new this.createElement(element));
+    }
+  },
+  createEvent : function() { return new PdfJS_window.Event() }
+});
+
+PdfJS_window.window.addEventListener = function(name, listener) {
+  PdfJS_window.setTimeout(listener)
+}
+
+PdfJS_windowInstall("Worker", undefined);
+
+
+///////// The PDF we want to render, encoded in base64. ////////
+
+function getPDF() {
+  return "JVBERi0xLjQKJdDUxdgKMyAwIG9iaiA8PAovTGVuZ3RoIDMxMTAgICAgICAKL0ZpbHRlciAvRmxhdGVEZWNvZGUKPj4Kc3RyZWFtCnjalVlLk+O2Eb7Pr1B8MadqRfP9uGX9iu2yEyc7VU7V7h4wFCTRQ5EKQM7u5pK/nq8flMhdeVO5iECj0Wh0N7o/QF8/3H31fVxs4jJM4jzbPOw3cZGEZVRtyjgP4zrfPOw2r4PfjvdJEXy436ZREnx/X9bB1DdjO/SmE9qvbjg4czq1/UEIv5hxtM7fv3346avvk3gTx2Gd5wmtkBR1WOX1pgiTrBT5b6IoFda4XLJukzwL87jebNMizDGHuX8ajj1WgUY/TIej9S+oUwY/9n5sx4nUsvdx0At1Pzjh/daM5h6EZ/qxo+39032eB+b8glbeZBm2XWy2cRrWs1rfHE13ol2wgIf7Kg7sU9/qRFXhfhsH/7nP6igYDhiB8KEzIjOFKdNcZVYiM4uTupCpf8G0qg6G0T7eb2meO8i8bVqHRVqvJ7767btvv/trKFPd76fjnxsfNrSeahl6KzZMk00d1kVSkAlzGLuAqKwKy0pFvXz0ozPNKOzVgnsbF3GYRwk1wlTt/RIGSPIi8MN+pPXe3SdVYJwVKuleBbYZTpb5yuA0zGOm30njNJCZHNxihQfs586+f0EbT4J2FLb2cxKcTm1PZ15ycKPpSRWdPA6qJi01ugmLNdyklrNi2TiDRTN8Ochkf7x6ncu+bNfBxlmaBL/dVyl1tzDW1IyTszvhEztUSzvUqjtGrfEfpMUKkVzXjpaCNEovo8VldGcfp4OOYj9xsJPxsxtI/nO7syrZyKcZus7y6RPGYc9bi3RThWyKLI7pu6mj6WkBdY5mpFYRNKYXkvpOqM5uJ097ZOZhJu6mRhn2UG4iO0j3vDrzBSkmpvcwYJ7FwTcDu+eZzSqemlMGpnemP0zmYP1Ke3XJuTO0alZEkNo39jxONC/L66BrT+3oZYxMQLTxqMziEvr5IAQo+djZkxc+jgejky6bp87VXMa1sAK2UCUpch1iYJHrWIHPKj75I9gSMvfgSThO60VlkB9NQ+o9YYEyiYIfSaN+ntEq09lIiFsnfYlMEeaPgwSfziGnEv0akoMM7a0hZ3kZRpQIdbkb9D+7m5bipKqgjxvbhmyDQM2Q3o8tEq/bDm5HKhLLLNdLl88tNTrz7w/Sss/3dKC7yRCfCpJQxGgjwTK69nEardAODlvoeHotEQkie6qEp7a3NCb3jeJ/eI4CEZ+XrFQU2PeGsg4XjDq+WJWGTqZvz9ggL11SlPlRZ8lWQBud1bnJHPwy4O2zipIcxyGOmbyjCbm5bWaS6Q4DNDye/Itb6vNaWVxQkkPY2jm/EUmCPC5JfBycj2arEYy6xgxHOyF24SjpvonyiGMdbUOq0TRdXQTtSdlBOy/h4jdRnDUthwYm/SirIwW2B9vzeQRVcgTr2N9KPAdzslucX3YC54akLmd7eSgVc35Ng1cty6TRi0/VfWXwQQYkqZayd2o8saF1VFJoGfipaaz3+6lbLUaZiRPrKupvBs18BrYpFOOUnqYZcu9oOo4/UG+VHaJzXNL3qLMQtJ2Q5DS6DtlECnO2Qf1Js4LBDZQAQCjmohzDRTEOJKyeUv0isSgGk2T6Tyo1ZidxWAFa8ewHzh1pVq9yB/VnOh80+gKYnc6jdFh5fHf2hKMLUMDxn0fYXEx5hJu8MTC9idNMN4feZXNfqCgpL2gtUwxrtCgUt5IMK1gsrJ1R/FPEnhUXzRZ/IRrJicwomfhBWrIRYCHbnYWy1uJargTPgWDfn7uhHWUe52cWuZM01VMUjhoUlwXkFN6IesSeOv1Rqw+Fwsk8SXWk+NF4aTprnAy/E5Nx8HCx4OgjBfJAd7yKSg6jzS0I80mdirN1fc7inA1NA2Qz6iMpdXKWBQkAFjdm4qIVM9qgzyXR0UwkaS+JkYbmmu4seY0oXGTAdykG4R+jrgcOq4KMxGWmyBZJFR14xHZ7bXv5EpICcpeOUaKRz7ymch5brrNH6TrbcHZuJVHrzHFWQRf+Uultf57G9SIUH7fytTtMiywdFRcIR+2d7XRBirksyjWHR8VyRaIP08hLUtt4YRHIAAJq+NSNyJoFAM0DZ8czVRS2+lVorpbMFvlOJd3UfWcp3feMaoHeaGpCRrGO4BKRyJ38xQpOmnsC0+pcBu/10tQrOZPrhSIQucj/jxVRxeg80agC/+K6qY9Kp57ASaORpqWU5uhbaeVIa43wYRyp4BGh06qtE5RxhWRY0HxrSa/QTxjPjnBdKxdKAr2428E/CLOjTIkD/79lnhgkyEVOmLtWqtwtpwFxtb1xlF9Kcji0xo/ii3JlI+CNYgYvYmz6CshMS4QgIZVFrSgJZ9IZAZ2TWVnMaUE6C/cR8yXRob1Wy/5LMJ4e/4+28LeJVgN+6IfR6IlFb49rzcDXSy+EB85prrfuS6VczU+9X1qH3RmCOQ+/EK4Q8mudV+Vv+WEgCh4pZuk8A+UAPU/dTjivt5+YLjpmZ3BVkN47gKRbuvdcBVJyPb8rZEnw1IvWSKWsGUYpimloXYLSK86gWClTRmi6C2Eg03tpKgUlGbXZuKel5DT4h/WoIpcMB8qrjy+lN7T/edyFbKg/KiMPArOSwGtcCBgkiqxl6NnACsr0MiA3dGpcK+elcBGdz3S9tkZyhdAnxYjJfJWmGZzkE2B0P6FiU1TublSS+eRD2QzTVo8MWQ1rOfkC8nth4dwKigYbzEW+qJPk0wp61VDnzDcUSbIgUDCIUN8e+kUZwJhHaF/wOx3GHCUchfeGV8RqrqXo42OLAjowNE6jOji08/2Zu0Y+AhG6ySp/r7nMybA6qz9Yxto4K5xEWZ7FgeLagf3q7FWcRtVi3yxsUCzUqg79zW34dme3lCFS2zCYwrICb0hTflQBdHsphEWxTgWIyAS5DoJ0NNenA6Hw0QPLvIRQtTRREwC0F5YZvJLA4XSW+yQ4BOSli4pKKl0y9u0yaen23sObNDev2AP0YIAv/PY7LeWE5IfJsdvAxQeVHhmmA/uUoASnYtAUtYIL+FCKh3QFj9BsvVeDWQTBCu9tM6nJQG4dUJddHjihb4Xb893qjxJYHq+9JSSxfZ4sokcGVK04mC/wVvhENXlQoS8ANQzr5XKf5rlA3qvkeJFxiX0OYth2p5LGi0StLbR8e+Iwriu55dzYFWzR2iu0y2ZTZuUC9suAZNByZqjgIRi7F6IM0gGwvnHto4D3JTcsls/vL0tx8yHhGzUHe1XRDXd+hFRtribytzCMGAon8GqoqPzEUBhnQ2FIrikfpEOG4hONzNdbYbxI3DvLMJ3azur7GnVW6WdeXa0fsSFbt+SE+5VNApoG2kZVFSzkvLnlpS09yaXzkxVaLR2NrM6XibbQ+zc15MK5t26+aSjmLbgu9v5s5pEv6L0OGVauwcRA+93x20aR8K1Q6fORk4HPvwss8iBkCxClexs/nitYoIEFCptfC+ZklF0MmF4qyOVBtLw+iPKoQljr6L1NwNPddw93/7qLoVm0iTdlsonzIoyrbNOc7l6/jTY70KF3mNbV5h1znTZxFYV5VKLdbV7d/f3ua/qXJyk3eViXJT8eVFmYlDEgQB2iLn38H0xSbaqwLgr+PygLAZs22zSsonr11ABwuXpqQH+nWRLNvSPbUyuuq4wfzcr5URBZuXUNP7Zp3+gsI5/F/y7onexpUKGDLnSiuK85RCv6XwptwCF+d67K4FXXHo5syU45nH1u/bzYM7O76yGk/zryqsI3gu91l+asezP87k/Hmes+5GNHtbTkuY5JdSRMjDBAef3DdKijtx/xEbWq31K0AtxotFZlMN8S5cpWycMXfR+Nn5efh+S6V9G7SHtoBaygdzUaMbPR5NEpXngzWm+yd8N+f8PpSRlmdQ1uqexc1+ioFmUgtq3FthlArt217Edqs4Oo8bMBCket/qd0Zf9o0CsKfR+dvEpk8t8PfZtu8Nat2WSrWRycp8eu9cd5nYW5OIUUxXUJhu7c4iTIjVmsAmRUVXG87nNlE+vcwKGXUlZHmQXg3TFUyINfO2vknYYKcjNJey4PIPqVeYgydLvt3vgj/Su5U25OrxpeW2/HUR8q6WbY71Yiy2DP/1lQHRlFoj60LZedH7aFrO+XFV2whLJ4qV3s9AdD/1fW9B/Xn8L5hZEYojrmKEiSsI5jmKkOq+szpWal/wISIDWMCmVuZHN0cmVhbQplbmRvYmoKMiAwIG9iaiA8PAovVHlwZSAvUGFnZQovQ29udGVudHMgMyAwIFIKL1Jlc291cmNlcyAxIDAgUgovTWVkaWFCb3ggWzAgMCA1OTUuMjc2IDg0MS44OV0KL1BhcmVudCAxMyAwIFIKPj4gZW5kb2JqCjEgMCBvYmogPDwKL0ZvbnQgPDwgL0YxNiA0IDAgUiAvRjIxIDUgMCBSIC9GMTcgNiAwIFIgL0YzMiA3IDAgUiAvRjggOCAwIFIgL0YzNCA5IDAgUiAvRjI3IDEwIDAgUiAvRjI4IDExIDAgUiAvRjMxIDEyIDAgUiA+PgovUHJvY1NldCBbIC9QREYgL1RleHQgXQo+PiBlbmRvYmoKMTQgMCBvYmoKWzUyNSA1MjUgNTI1IDUyNSA1MjUgNTI1IDUyNSA1MjUgNTI1IDUyNSA1MjUgNTI1IDUyNV0KZW5kb2JqCjE1IDAgb2JqClsyODUuNSA1MTMuOSA4NTYuNSA1MTMuOSA4NTYuNSA3OTkuNCAyODUuNSAzOTkuNyAzOTkuNyA1MTMuOSA3OTkuNCAyODUuNSAzNDIuNiAyODUuNSA1MTMuOSA1MTMuOSA1MTMuOSA1MTMuOSA1MTMuOSA1MTMuOSA1MTMuOSA1MTMuOSA1MTMuOSA1MTMuOSA1MTMuOSAyODUuNSAyODUuNSAyODUuNSA3OTkuNCA0ODUuMyA0ODUuMyA3OTkuNCA3NzAuNyA3MjcuOSA3NDIuMyA3ODUgNjk5LjQgNjcwLjggODA2LjUgNzcwLjcgMzcxIDUyOC4xIDc5OS4yIDY0Mi4zIDk0MiA3NzAuNyA3OTkuNCA2OTkuNCA3OTkuNCA3NTYuNSA1NzEgNzQyLjMgNzcwLjcgNzcwLjcgMTA1Ni4yIDc3MC43IDc3MC43IDYyOC4xIDI4NS41IDUxMy45IDI4NS41IDUxMy45IDI4NS41IDI4NS41IDUxMy45IDU3MSA0NTYuOCA1NzEgNDU3LjIgMzE0IDUxMy45IDU3MSAyODUuNSAzMTQgNTQyLjQgMjg1LjUgODU2LjUgNTcxIDUxMy45IDU3MSA1NDIuNCA0MDIgNDA1LjQgMzk5LjcgNTcxIDU0Mi40IDc0Mi4zIDU0Mi40IDU0Mi40XQplbmRvYmoKMTYgMCBvYmoKWzYzOC45XQplbmRvYmoKMTcgMCBvYmoKWzU2Mi41IDU2Mi41IDU2Mi41IDU2Mi41IDU2Mi41IDU2Mi41IDU2Mi41IDU2Mi41IDU2Mi41IDMxMi41IDMxMi41IDM0Mi42IDg3NSA1MzEuMiA1MzEuMiA4NzUgODQ5LjUgNzk5LjggODEyLjUgODYyLjMgNzM4LjQgNzA3LjIgODg0LjMgODc5LjYgNDE5IDU4MSA4ODAuOCA2NzUuOSAxMDY3LjEgODc5LjYgODQ0LjkgNzY4LjUgODQ0LjkgODM5LjEgNjI1IDc4Mi40IDg2NC42IDg0OS41IDExNjIgODQ5LjUgODQ5LjUgNjg3LjUgMzEyLjUgNTgxIDMxMi41IDU2Mi41IDMxMi41IDMxMi41IDU0Ni45IDYyNSA1MDAgNjI1IDUxMy4zIDM0My43IDU2Mi41IDYyNSAzMTIuNSAzNDMuNyA1OTMuNyAzMTIuNSA5MzcuNSA2MjUgNTYyLjUgNjI1IDU5My43IDQ1OS41IDQ0My44IDQzNy41IDYyNV0KZW5kb2JqCjE4IDAgb2JqCls1ODMuMyA1NTUuNiA1NTUuNiA4MzMuMyA4MzMuMyAyNzcuOCAzMDUuNiA1MDAgNTAwIDUwMCA1MDAgNTAwIDc1MCA0NDQuNCA1MDAgNzIyLjIgNzc3LjggNTAwIDkwMi44IDEwMTMuOSA3NzcuOCAyNzcuOCAyNzcuOCA1MDAgODMzLjMgNTAwIDgzMy4zIDc3Ny44IDI3Ny44IDM4OC45IDM4OC45IDUwMCA3NzcuOCAyNzcuOCAzMzMuMyAyNzcuOCA1MDAgNTAwIDUwMCA1MDAgNTAwIDUwMCA1MDAgNTAwIDUwMCA1MDAgNTAwIDI3Ny44IDI3Ny44IDI3Ny44IDc3Ny44IDQ3Mi4yIDQ3Mi4yIDc3Ny44IDc1MCA3MDguMyA3MjIuMiA3NjMuOSA2ODAuNiA2NTIuOCA3ODQuNyA3NTAgMzYxLjEgNTEzLjkgNzc3LjggNjI1IDkxNi43IDc1MCA3NzcuOCA2ODAuNiA3NzcuOCA3MzYuMSA1NTUuNiA3MjIuMiA3NTAgNzUwIDEwMjcuOCA3NTAgNzUwIDYxMS4xIDI3Ny44IDUwMCAyNzcuOCA1MDAgMjc3LjggMjc3LjggNTAwIDU1NS42IDQ0NC40IDU1NS42IDQ0NC40IDMwNS42IDUwMCA1NTUuNiAyNzcuOCAzMDUuNiA1MjcuOCAyNzcuOCA4MzMuMyA1NTUuNiA1MDAgNTU1LjYgNTI3LjggMzkxLjcgMzk0LjQgMzg4LjkgNTU1LjYgNTI3LjggNzIyLjIgNTI3LjggNTI3LjggNDQ0LjRdCmVuZG9iagoxOSAwIG9iagpbODY5LjQgODE4LjEgODMwLjYgODgxLjkgNzU1LjYgNzIzLjYgOTA0LjIgOTAwIDQzNi4xIDU5NC40IDkwMS40IDY5MS43IDEwOTEuNyA5MDAgODYzLjkgNzg2LjEgODYzLjkgODYyLjUgNjM4LjkgODAwIDg4NC43IDg2OS40IDExODguOSA4NjkuNCA4NjkuNCA3MDIuOCAzMTkuNCA2MDIuOCAzMTkuNCA1NzUgMzE5LjQgMzE5LjQgNTU5IDYzOC45IDUxMS4xIDYzOC45IDUyNy4xIDM1MS40IDU3NSA2MzguOSAzMTkuNCAzNTEuNCA2MDYuOSAzMTkuNCA5NTguMyA2MzguOSA1NzUgNjM4LjkgNjA2LjkgNDczLjYgNDUzLjYgNDQ3LjJdCmVuZG9iagoyMCAwIG9iagpbMjcyIDMyNi40IDI3MiA0ODkuNiA0ODkuNiA0ODkuNiA0ODkuNiA0ODkuNiA0ODkuNiA0ODkuNiA0ODkuNiA0ODkuNiA0ODkuNiA0ODkuNiAyNzIgMjcyIDI3MiA3NjEuNiA0NjIuNCA0NjIuNCA3NjEuNiA3MzQgNjkzLjQgNzA3LjIgNzQ3LjggNjY2LjIgNjM5IDc2OC4zIDczNCAzNTMuMiA1MDMgNzYxLjIgNjExLjggODk3LjIgNzM0IDc2MS42IDY2Ni4yIDc2MS42IDcyMC42IDU0NCA3MDcuMiA3MzQgNzM0IDEwMDYgNzM0IDczNCA1OTguNCAyNzIgNDg5LjYgMjcyIDQ4OS42IDI3MiAyNzIgNDg5LjYgNTQ0IDQzNS4yIDU0NCA0MzUuMiAyOTkuMiA0ODkuNiA1NDQgMjcyIDI5OS4yIDUxNi44IDI3MiA4MTYgNTQ0IDQ4OS42IDU0NCA1MTYuOCAzODAuOCAzODYuMiAzODAuOCA1NDQgNTE2LjggNzA3LjIgNTE2LjggNTE2LjggNDM1LjIgNDg5LjYgOTc5LjIgNDg5LjYgNDg5LjYgNDg5LjZdCmVuZG9iagoyMSAwIG9iagpbNTAwXQplbmRvYmoKMjIgMCBvYmoKWzYwMi4xIDcyNi4zIDY5My4zIDMyNy42IDQ3MS41IDcxOS40IDU3NiA4NTAgNjkzLjMgNzE5LjggNjI4LjIgNzE5LjggNjgwLjUgNTEwLjkgNjY3LjYgNjkzLjMgNjkzLjMgOTU0LjUgNjkzLjMgNjkzLjMgNTYzLjEgMjQ5LjYgNDU4LjYgMjQ5LjYgNDU4LjYgMjQ5LjYgMjQ5LjYgNDU4LjYgNTEwLjkgNDA2LjQgNTEwLjkgNDA2LjQgMjc1LjggNDU4LjYgNTEwLjkgMjQ5LjYgMjc1LjggNDg0LjcgMjQ5LjYgNzcyLjEgNTEwLjkgNDU4LjYgNTEwLjkgNDg0LjcgMzU0LjEgMzU5LjQgMzU0LjEgNTEwLjkgNDg0LjcgNjY3LjYgNDg0LjcgNDg0LjddCmVuZG9iagoyMyAwIG9iaiA8PAovTGVuZ3RoMSAxNDc4Ci9MZW5ndGgyIDg1MTgKL0xlbmd0aDMgMAovTGVuZ3RoIDk1MDQgICAgICAKL0ZpbHRlciAvRmxhdGVEZWNvZGUKPj4Kc3RyZWFtCnjajbYFUBtaEzaMuxa3ErRAcXd3Kw7FAwQIFgjBvbh78aItLsWtWPHiFHfXAm1x60d7733t/2e+bzKTnN19dvc8K2fCQKOhzSZlBbEAyUOcYGxc7JzCABk1aQMuTgAnJw87Jyc3BgODDhjmAPpHj8GgB4K6giFOwv+BkIGCgLAnnSwQ9gRUgzgBlN0cAFw8AC5+YS4BYU5OADcnp9A/QAhUGCALdAdbAdTYAcoQJ5ArBoMMxNkLCraxhT3l+ecIYLJkBnAJCQmw/nEHSDmCoGBLoBNADQizBTk+ZbQEOgC0IZZgEMzrv0IwidrCYM7CHBweHh7sQEdXdgjURpyZFeABhtkCtECuIKg7yArwmzJAHegI+psaOwYDQMcW7PqXQRtiDfMAQkGAJ4UD2BLk5Prk4uZkBYICnrIDtJVUAa+cQU5/gVX/ArAC/i4OgIud61/h/vb+HQjs9McZaGkJcXQGOnmBnWwA1mAHEOCVvCo7zBPGCgA6Wf0GAh1cIU/+QHcg2AFo8QT4c3UgQF5KEwB8Yvg3P1dLKNgZ5sruCnb4zZHjd5inMss5WclAHB1BTjBXjN/3kwVDQZZPdffi+Lu59k4QDyeffyRrsJOV9W8aVm7OHLpOYBc3kJLs35gnFca/dTYgGICPk5NTgF8QAHIBgDwtbTl+J9Dxcgb9MXL9Vj9x8PNxhjgDrJ9ogPzA1qCnHwwfV6A7CACDuoH8fP7T8N8SBhcXwApsCQNYgGzAThj/jv6kBln/JT/1Hwr2BBhxPo0fF4Dz9+dfJ5OnCbOCODl4/Rv+p8UcmoYqWrJqL/+m/C+jtDTEE+DDxscPYOPm4wRwcfHzAgSeDn7/HedfFfiH/R+tBhD89+3+I6KSkzUEIPQXiafq/UPE/e/JYPp7bZgB/51BHfI0zyAA07/H35iTj9Py6Yvr/3kJ/rj8/83+7yj/1/H/3xvJuzk4/LEz/QX4/9iBjmAHr78RT/PsBnvaDTXI04Y4/S9UH/TXQktDHKz+16YEAz5tiJSTjcO/ygh2lQd7gqw0wDBL27+G6J8uPAV3ADuBNCCu4N8PDoCNi5Pzf2xPO2dp//SouD716o8J9LRS/51SzskSYvV797if+g6EQoFeGE+tf5L4AD5cT0tqBfL8M9sADnYnCOzJBfBEzg9gDYFi/O4oPx+AQ+q36o8kJADgAP5bEgRwWPxbEgJwWP5L4uLiBXBA/0N8iuP6HyI/gAP2R/yv21q6QaFPm/xnnp6o/CP/eTZAIE+QJcbCLMRSJMSuNqT9ukaKwoNtZ0xsmmFHP52ZzWcB+sntFgc1lbk6+80a9FIqdagHb3lLjulCcpH6weeopR41vDVZs+3O994sUWtypw1jfoK4f7zoSKqujwqdkk1Hctf3wcVXL8gesQW+U5khz8VNEEejgODao1fBs66vbGkkbHZHc7eaXwXzvmyKLVY3xjio+CtDvkXODCktCoyNCo3l2Zkn7teLy+lnueO/qJUTX2L4HcfyvPcxXOeOu5nxXqnQ4XbtIqMnMySlQrx4NjLJ6CO9/1aZZM6n5EPMmtjcO4HI+MHFkN6kGRU9Mlp/DVJoSCmbWFagaicBfVeuh2UW1EHPclwdwPiCug7NJ5ShRME6uYpuqMQshxIccPNAR6WdZABv9fJT9/Ou4xPdThbfpHhSYa7YvTHH55diBJsdOf789zcoHOXASQVV5FRruFW6RfVXxFOj2vl+clpDrrH1RT5Gfb/y2T9csdkh2oX7foA5Gq8K92J6CpJojN1ZaNTvJ59+e3jfmWA7ZNRQQ3hBFDyBZ9YhFLE1AeN+5EluFPgewqrETSKN8608R3BQOX2Nc4bQ0ZVSF0F/QvPWyuCYhnKyTwJn+iGn41uZxJLmybNj3m8grWjFWEyT6Sj2DOcAs4lRSonsoG3Bk3fCkAPhJl1ytyLZZEMjxwxTjkFgw/TybsAsbxpag8M572DSDPEOTFXUn5FaPzO0wkMVKGTzTAOt28V2QzMwcyyPuMvOvWqSOfTUxPWjixbtw0T1QCjdfQLopIuqKfXmAdlQJUBD8SwRKp8leiWnXFB7lylCsT7Jru5/VBqoN13jgqaq/NJsEs1uun4TA/b42l1loYD6E8jYDS1D9UzTJU5UL0lJajaU/PBGCNiOarb6gvFQXrZJSIFOr+39jaS7fdQQrJldjtLXu7zTsACcJfJO/SPWKxVqDsFbMtoztEm8UkWpRYGOWQlx2vJ3hTkksOO3Qx4iLJM7EQ58mJ2Y8vLY0vrbt1yh2s9pHvsQirhZGo4pUL6OmlPECAobJLQG/XDQLSdHbQ5RKjiXMPIoRyDfHLFEZzTcMy8mmyzN7VitwXK1UgTJf0h7QdzM4rq7jz01EaRjJfRVGrheFI33JnTRKG4EmEj/1qaWq+3eGhfVeD8VlfMAXeDbc6DWuCk+U+a9KokdPt0XGkePVe42ujanL9ANet/oX5M6z76poqYkm0z4lBsUm/+65e1jV0j1IGis2F7y1bjmlj60Wa73+Glh3yVf8w4TM0i9otjaTiTOSoIuwYH2Jf9xOVWPDcJuvM/NBT7LzerJtzSySUwCVm3NbRzuD20FdxWML0qcKsmMzWtNNKNDgoX3cTZXWnr4HcicOC2EwhxN2s++sx5xLJa8N35Nz09u9DJIVy6Krr85Ri3/1TET9ngtu+z9hmr1Zhmp8QXLhuS1N8+L4g+ME6n8H0LOuNOWUaI6GZBfMqWeZ9oHmteSyq49ctQOIqTaMz0bSoqLt0/Hc67GgZlfmh5If74NJ92c+WisGOR/+JrA7LL0S1L9IxHaHYElQxeuPxMhzSKGsvucKw6uX/qAkMusx+7Eus9WHn/Ys6ox17FkfLWQDPRrRk22z85v9l5EMkZlqDHWCtTjt+C/hRmu3SEZQ6kCfPlS1Yqb+Wjr3rB0VON2Uh0vHorWxIylysbF1LG2qf60tnuZkng83PGp8wv85VHuUA6tJ2fPlS0dYvmam5Hkot/G/gLtbDDGkJVSohwLOivArnPXZLfPnb0b5tmCRlSKfppkL9f92qGg+oOfVTg7G0gZc69u4EImIRU14IMYdanKFnGDLLadU7USrRehQTgF1rJso+81Y3t+xOcLe/F9cE57z8IxHhwhgWdNzJFFi1uPBMWHsMmPSYMA1oxTvRbXHO+u1PsdKUvsgDZshefTWAX9opYOpf2n443PvbVlFJusED+qxpbwI+W8HYH1dVEbIyybTBjkDTrYfEUc/mSfZPKaeRYJunCBLPjitFV8bV1AMTevzRy+Nw61PeBFbyMzPhSjdbNxKq4uV2FothrhfQGioX+WzF4aRrQuOxK2XLRM2wZPLrLfrC3I6W1v8aYcQWIFzU2QzL2R58ioZ5VTj4wLXQOdDriVHe8cfK0/x/EdvMMSLKFivjj0Lr8Xb+GB4pffgY3IWGdiLW5FsmTRpxjxWcXqwIruo7ub09IlRyehEa6MW7bwq528O6JSI7wkBPiKb33Yn7H2YHYCmGg8fWorXpveH0J2WTckDM+aJHdvtQg1pMHiP7cnjt6fHi+5R+jJzxhL2dp/hKQ3ViGv42ULIlGjIGQgnZ6yoHT2U0WqK5FruhcL8SJ4t/2K5J27cgzCBTgJMlPJ5hyuWZgMLLxD/SV6OqrLZLNzMX+zylRk/oo7LbrloYh0yduCB5lzC/PLBRupjl6NT3s1+rWZ4mlCtGm4UQeIwEF6YHMTOy2O6p43Rv17KGC76zaCuEVcvFMMlFvMo5k8wZb5gtNrcu1bKWluHN2FMpo+gBNtbSWCQsD4LvQZ7IyvapmMJzZFjDru81g72XwrEkkJbs+sr5FW5sZHcb4gpViCkLIcaNMFlieebZWtF82Wvd4X7cEqgXAlzGsd20GgTvIF4QrkaCjoKiSOqQpL38pVV+la7NTkdjoDT813Gjkz0Ur52vh1mRZOuYJXIG4TrxUT3pp6/BZlsw8tscONcRTAxH6wSlAPI+Ma/vRM6lRMbPwaegHQ2zYNuGTZcfS8YAJdVVD+EDPuH66huXnM+yzd+M5CMHCiZdIAezZDrbTmU31M5bP54s1nYAznuPX0aOYB6GkpVp7/9grXz0zMnrn4TFRRkQAr1mrTaf73O9Y5rBpdzmMlvmdV9u1agq0CDefPxcGYESgRjR9BANPOkLrsHPWpAkrJthrbZ/s55tVG0vLhHausqgxfHXUps9v3CeqlQYHtLPQ11E4Qzw0eFQDeRc9PPfoOowKj7piH0HRrXREy3sfo2Np3ZJoodi0/k25D6hKjUGzawqlt0tYgq8vYNAxUuuSEXe22ke9L25aZvuYAuC/2W+Zy6zo/BhcUswI26tczPr0iNZqISBozM5aI04d9ER0M5RBpicVqoN3Voqx0XOmpys1irrosJcySizOGDupzYXVPTyZBUt5PEMB5bc1GLjBLj0SdGXdILtoEHcSMK0s4AuRcXBZSQs4FeU1nJ4c3cTsnZXMbKYH3QgJYW0XNXRM+lUPFWc/KDWnqzczZoIsOC/Esp20u8G+ySN9tUy60zkflw7CQVGXgbaYwhJ0slNEjblVbe13iyVMGoHt2fKa9Qohl6lp6dcq4e5UCIKL1HwlOtQzHG+M1BK/7U90GYbMBb58vIUWQ8PY3R2+JutDqw6SNRfKlSq6RTe4LC5Gf115QWJMOeXh5+SoS5vschun6E4s6dI4AH9W+UyGnY8F1BOKfuC7Ntcyv45pNtvfejc2Iy49F96ZFuSdphg/Z4eY+4pMjJN1W5fATMbyzDESkKxrwb0jATIv68moXGRsRhDAVmRj+ArigzZX5YxwUDtjtkcd0w3Y1BdOSHhyGetV7JLCmNAT7o8ucvU/y39TqTzJvZ6V4sKMNfrkwWKFiH4utyUcSmT2sFFxm9+VeLuy7hQ7zCW41bh5tbFideIPHwYr7Xd2GLz0JO+9hMovktKvEEgb4OmLcGa7eom/TGIoeK4QjVf553VD0xv1l2TBKtarMdlvq2MsSqiVBhHjCt5Q3XtHsnjJTC/25jG86dUtS/RaMlXbII6DUOcO3wyTKNhRYOV0bwrtLshKk5KXDgCRUpqwf5Pjd7G+PqfhiDbSwzDmWbj+V+KAKmVcJrhPhxkdv9i7KP5NlVH0z4ms288g+VJGX5A48XNfeSRMR0GUYsRdB3FLFkpY2P4HZF/mhy/Xs4DYEGkcoamH3j9LKZxx+M8CrCfdd9ho/dfPf0cS3LbfvdOfVQ50uyoMnOnimot86liP4vSQloIeHIA7+Dn/m9b3pfCLbN/UFJr90Kj/MmWT2n4n64HIiYNFUCIUYvEdwsQRlObn/SLYhIm8F4OSk4VQdb1TcU2QVZwij2D8i25IjT3F/vPzl87gRBmnHg0Y2gQks4nfamdynD2Es3/vkUgYgLs9FOiNm2sY5dvHjWvkPjUqwVPFmT/Agzd0UTTpYP5bRSvPlI1NqxcXa8b7PC541RtEnvMu12olmpOOknoRcp8DcjOqnNUdH7uR0B2goSfu+GFOvJrgSeMj9+nldUb1wzN9arj8XixlGoCmIjv2tThSLwdOBMYiiGGP2vBLvxF/adlNsXb6+YI2W27jFhHU7YPqjJBTEVILjIL/H0hf1WuB+IXZx3rwI86OztgRDM9j3S/QNzBfOCO2K2EL0hkJATewme0qAxHVowqmB/M0EXuNkmQc37yreXGiXFYfFiay/EXP1DaoNb3E+z/7DigIjHIezenAPA24q1YJIZTsseRcbPk0YPobUef8Q65DwpsfPQy2TCJ8Dzgf9/XhFYCEnu0Vp2pYdjeFWnKRodNEu9pvLR2+vWYevzL8eaGsBS2cXKvkE41vBXSu6jpCpjBO0Be4iOEuEND/mwJytPe/kdWEyUfyPV6cXSyHyN9ToeZCes75gvNJ32/sKqrhewzqLAj9E5ZZONx+7XCL1/WXqC24cX5P9FNsDbbFbMdxi7XKK//ogskbQGd/URL/93XQMIU+c9XU2O5X83XJKEXxmLgN8isJnklZCuw5WRrgTYl3GMe2KMk7cwwyKmPJ07cpRmw7jreaeu6iMo5VJpJe2guzhhDRDxfUSib94/ZBf9o0Mneenn1rJjMzmi1wePVfo7agpDCzq7zOkk6pPIs0vrTudwgO5yLWI4yJ0aqmWob95DFSZl6T3XZDVr8yInj7n0FCvQzGdSOVh4VS52A466H1Y7m9i9ptGrFI+ULOhnaLnuxX8btZhUy7jyi3TIMCqkpOLO/NOAm2sbWycOW83NYJ3FesWZ5mLDr4H0lr+tqWJhEiJ2sAyR+Nq3j+yiQtQeIAG/PFm2/R9H+8D0RA/1XQKsx3Vqw+LQCJALxDbFOL1EGuaVz7FKESwlhZ5gbY3UM5Q0Ckq6rFZImYvkTKGuPRoJ1mh4Utpf0kcwFso/3gc5urHYvDweV7lg11xxk9LZ5MA/wxB0S7JrYTudJ7GQruWHe6c8DcMqfBCAupjZ/Te/gmmPd1RCOKOqp9V1beErrwij+q6ycKO0eAAwDlmlHFq3XtmWXaJ0Vm4WaH2nGprXq1L7rLTuEmDlpYRbDQPuue4ZlreFGiGI27MLhvrPoBbgkucCzQe2y3t47WsPQ2idXzZ4b4kTxRmQbTp4160ZIbZtJ6dBE0T0a+Q3hHriWj/WessMZfsT02Eyr3lFbI0hksdMyqyFENTlt1Xh0w7ogUGpAMJpOw5+9QTigct2DyKxBEDcKGlyvEXPYgaAtdJqXRfnsdrvWy21N0op9LR2YBnesdM3Xgvp2JqtcRQ30X741E7ml2lryyX0VfAJdxjRuGBbD7r9h39ul7kpHp+x/yjg+MUvwu3sVJYwHpaTOsy3GjncRFthCSQh7kXIw8TXl1gX1mgjhrp6waXQOnOrEq9N4ucCOnazfAoKb45hMH1OcGQlgQjAzGJVzdJRJmBfpqa3kKNn0zp6A316Jccm879UmtG1kHj+dnTn+uixhy9x4FL9QYFRJUS/EmQ8ZPPGwpmj6uBefezjmfJVJcf247VHWiYphdy3p5q3X2VnWl/Z8IWDn+1rfHTmvnFsfs9b9R4ebecsl7AmJFQp+N7EYSIY2gCDhSBJhZ0PHosUu9pOnUSvKwenD6ScVCRaCeg/+GQLqtuKgllGjVlbrhuaKBVWk+BKWAdvE1itK1UrC8lKtm8v5UlVsN/KVFNcGADhx9Dj60zrFB69Cw/iFPdVZXvYgFu7CBRlfqnWxRbHDz/rI2Z+y0Chuou5L1cdXN/gb8Sc70KDY/B9zGPT88w4VQ1r3ae+Vx1p8PGQCnsFJeW/cZsaMVSuVLp3S/geNRwhwh8V2q3VkBFpc7nH12JCEwFVbjS77xYbDhSTntLFgUqDrUBWKJgQiO7wRTL3gd9d5X36GSDS5WeBgb9dAhKkFCBaMy4rstl/JkNzBJly03hoZfazzuD21CYAGn7zsDiNSTa40FXE8a06qVNk2z7n996tOtVT72OV80e7a6/pGvNNYqebgF+jLTMoEE5msq7SbJsULuXvai2VlUKWYkSeiCEfNqK2HQqubgkRoxYcxWku+eWfVh5ZMg/RESzrFqo8ZA+165t9kstvDh4SSko6eWlqX3kNox/mjJu4P34zvFggcdz7jwSrEITW+nqFj2RZBVdtyAGJZX5aCDx06E9OHVEL0DfymtliU8ZN6Fuct9++YjzaPIaU7u1zVZ7RaVlO5a5mQg58Hng3G0ZeWRqg0OzxYbrGUXNow/8kbCST705I0Db+XHmK1YtfEF6YtXrVZtiRHGh0quJUQDeMnTUmiZYuHCOyGPdCYd6UQS3JRVwICl1q4KeKWET14OknugSdpiGxAtXK4jH3Buv834Uvc8SruvZSkm6lnbLuMrwqPCRPW/hT8JlbbS3fgsiPKJvlw6HG0QP0wDauqYIY9HxEOdzvPpf1rR8klLR6AW73y1cCA/hTSgvO/RnWfRexT9Xq4QtzrJqn9mYoZmZNORxhkZVHbIpDBvMXHvX7b9U8E1Cy7c2S4KayCkkLq0BXZay42wSih3RZ0wa1JwKf6WhuTPVyNZy1J8vqlqU4wccRM9ZbZ4uaFWKLClkSUgAlT/r6eBuPHqZ7i9V/mqyKXT0X880rzXkjtnfmIjwjUae8NmWUrZM09S6LsJycbJiWsVdyvbK+NF0CZEdNdcpU5aJR1r+qRjurQVcPh+YptK4r30onEvBmzuMHPbsz5aRbHuMSVZzHhM1io/lHJcoeQANiCAY6hyex78MLdUyKrC/tukbL479RUgUPEmSAkQO7aQtc8Ex/Wgxe1bTsbYwiM6ydR9A9ngMvTpe+O5bJSzchKeHrJ4g/apb1xtnaFnR4gyoUC2riFP9jZ6fnhem2t6AV61sAd+A0a50oq5EKjOb7dIAZFfJwGftr8QSD5RJ8sJwSEUTePHO0ToZk7EeMszVt1EqHLoLfpwKLcXfcaOqxXbsXgGpjwfC52YgSHKJAKSl746JTvwMmfK/klBoEPB0wYtbR26jmZedO3rceSHOV9Sud5ok+6lyorlANpTnvg0AMs4XTtfJeLdX9GSkpYNKVffuPEe5XM1KK8iYjLmHtwy3OwzZp5cxFCSuVjYpgg5B5Dkx9W6NjYIH2Lg8685v7wXxZV1Yk/s7GK9XcI141LDON1xRemGzHATjZd3NOlgieydJd424MiJEKSaysh/dOFcQUAuxZoo0743EvAMfh99r5LOoyOi6JNnnwaXEMIUPQUk/Dh43EKY2OKazawnE7wzn4CGJR4g7VOugIDvyh7U6G+HhfkcUWSf84DdUaWCg0x0Tbifl4T8z2tuaFoIx55BsfypNKEApJ9VotTq1QaMSw33eg17WYMi/m1miLe/gsoNSs0FTXptMgF7EFSwosbSFxDbk7ivpG3VwJHTJJT8/zrJ2dpl7EWgWqPc1+4AGxvJskhpN2PH6G3NWua2LnUlYEZvyUINqjtT6cgO7lZvuWl4epGHvhOj5QSbwQ3zPnbcuP/K4eZPpd+XWiLioMPiAFjyMReFHGPN3vAi6PZhnqZrS6f37JHMFsTW68u0kxyBA0gFb0YQaWmqNj/UMr1JYITrp/kki7KbGmIgavuwkW3aI3XfYcWKWjFFB1W7Yf1XGOmAE9g1bZL+Az+p6ubDhEvZ1B/xmJ49sXpkW6jwpem3HHEVhmte4GgxMCHyUxnK17dvjjjtzPg97xr4epegsBwTKRTsk55tzvN5Ikspw4NgnFELx8uqDIqOVNTakxQKRCTA2X9PtHXl0PVww2QR+dhfLDZrRffvFW93IbArW2Zs2rQKfEmohuGHzzEv2KHBZ7/ZtGJSHYpsxluWTRTC99sfMt1aDVlUR8Z8UeCsnTKcFw5n0hMcy4UP7NobRLvJZzCxFXRgr9RbF6d0QYH4Q1fxWZ+y0UYrIAn18KZdldyRPk9g7pI+Zi1HNjl3MB0V7fNm3K28ldIPIF9m+1bVSENL/CNTiri6jw6Dw8h4TFHCs4abye8nz2fsAbxfJ7N01T9HHhud6KIadp3j8J+VxSD/pTSIr+Pq6hn8Fv7SqYFuu9H1FUmb6+u1Ep6lNCGF26EP+PVnZe1Wly7NGedvbCprCn3ppc/4Yt+p0GNvwX45MDVzEp8KoPcnPTXSn5nnCD8LVi61j8AFqsTiD5Sy1YvSvlr6tpwNx+Q6Ja34SBBh8cubJXSup82TlPv2kPW9upmfGjai/5EEx9wE2Z1YfVoofAg/de/MVmku3r0P+Da5ApISQW6yQJhF3XZi7iDw8U2oI9yGxEIWhyvfdcz741rItjJMmkRuvJmtETZwmv8rPpbiJF3y3YMdCRaxQH3+OZ1zxvGEsous+r1ORAQ6i5q9eIQwSmZtgTD2ijpaUPlbZibDtc0p+tP/VduQaikOT0TwJP2hcPXDc+wsuKojudqIO+/aKhIa8L6dzkXjB/luJ9FAzaqz5zi2ek1AgGXXufvQdmvgEJupNAaZLAktFP5aTrX1F35tB7reoeIGBjOItrDmXi0fve7ZQhKztzcTeoTXlaw14KvdDnAa0vtJEvmpz/nlxuuibpzDmUp/McLrvpxFVRbGgPguxeQxuRyYMdIu/LWn0XMPv+KCR8D1Vb8fChu8kXc1ttiuCR8y0h+9b58OJuPyKwSukZHvtz4OUC3sO2838jZbkcxbCmYdT2mHl0hZo77HWB+FE/ZSgonUaucwJmXBZ1gyj2u/SAjBnE7eRWL+JWums9Ym4phjSI3eYF1dY12mvVyVq40zb45e4ppRd2KbqjfK1Jnb+INcDN3Fpa5Kd4nhpE8ZsITiWCS2plzT99BgLUCyuIIge42DEM4Rf2fpKysBjSboI94gbLI6eJpDPulMUJdXGITm4cPhO4M2PEYEqS6NwK//dlzh2YzpNe6XjYu28ZZjXCO8xsGg9KH00e7BnpoKVkHO5KztNBBrTduOnLqBten30j32fZwj2WzgdWr5jP2+60Vo8tqmsbfdvr9wo1FXG3GmB6/nFP2nV1MFwc41fZD2G1DNm6KG+xV7ycycbOfmRwDtg0z1urLPHWF7HZelt0kAeweD3aI7XRZKTR9TDvjtu7fLTLzQ9Rdzyl9x3Bd0b7zJfRvckF39+sLstR9Y/Sb4OGHi/aGJRa90fwnv12a36fNjCTUXe9JkgvSmTENRcXczoqq0qu5d+08MzUlvB8Ch0yLKxQYdeS1Ua4kf8QXEmR4TXhvsrdxyzH4MbvzirWcGVMhlfMh23BlV9mm7TvMRlE0segnhgOB3qevTqugTE1facdsHvetRtBzEOtqJFy32hY+kxVNqBQzG9oKkaOVo4QLbIlnlHPF/aUr3QKYQ0ebz2EVENkfBcysraJzKZKA7KicFkn9GuSBtJShU5DrvJMJLc6TNrD1pM79NzuNk9JeZ62RjO4ijM/8kkp0Mb9ypkMpAYPTorH0mYDWWAQ63nR3OjzJgxe9J56QCWv43KDV0/Ek5JoMtFzJywIyZnore8nNfHH6+Q7poWAAaJ1XDxYTnn6N65iw6vhC74UK/H8JrEh3d7t4kZGsfF8SzdXyWHRUiShEjy97T6z8csf/ZvjMaYHMh37UIIJo9K8N0ZeE3iwYocT9lHHvdK1VKSIYaoTKcjP2RG2oZp2XhG0fzgrDvBuoQZ66drglJwAAo2xzE1TRQK3jn2BDdlzLFy4MPN7tDq3alXRmr6DmxJpyxGp5uO0arPupzkcDbOOVxQXGtrA3+7ntBKbj+P2EWTWt3iyjtkHm/GtPGmtrwFX7fqXms/VFw7pd13lNsriHed+XlUvIqyWNUKrfHWvN9mbWunSriwbsNWzWn5IMYBXa3E0CU1+RhsPnhQkQQjlmDUSvXnDaOmzh2SicHK49cECECv9vHuNu+X0iv7gdczqePM/Eh+VxBe7w83QV54lPhf4KQFL3wtwNplhcoWG9U+4Qv6SJkvuLriggRIRVEFJ7r6MRpc9s2Fkt+4q/VIBVFkwDsVB0xewpv8oNwEJ+0LH2TfTsIyylDwTND7744ZO2DpyQNQhu52KzvZrkssXupT5z6l6VW+Ghq6BImrF0nyj5G8iJ5hr8+TKt50bhQM056KZzF9TXX7ccAZKIlJOtVv4gMocbW9RP9y73Nthqcazo5/KX1Y79T7k+So0Etft1/bf7RP5qLoNnhcWPhGAl2yLxL+/tMCn3vmZnzexhhDNGiFg1opnaVQ+ajb1Gmwja4clZiAeRHBaJ2XrB/nE7bm01+6xS+tjJAxTER07pj154eL1pm9R2u9NYteQ/a8QoLRMbkOjwr3396JyTvIdbEFJxNTUQy3RssfVJrVmyhKpo+Zb++tUfgPpSTlbJVE3agfQ6h3f9DZrsu03rJ+GYZ9cdEJhYlGSqcA3nK+0e3+GhIQCTAncn7PdLCReS+XG5K1lNwsEzHgK7akREVHj2JH0h1d60NF76uAu2AP/SJCKZ5xHUfXay1Ulu9tJyHCp1Bp+uJBnwmVJpKLBVsselXzbdWXOHi6OGtVv9VCheaOFZ6EW6lhQVEEC5FnxPXThMPcUpN7XY2KD+TMcr0VgbwDqxOC7NFC7Hbw+s2w3A+I6ka7kXNGQZUh2l3nL86DpE3eSOy428tDIlZIabTsDjaK5D/Tqp3RwNYaITHZz2nQFX0S92iK+VkwK1MTaX3PZCUmolnQsggxMjl3mx1vsQb4jg7Eul2FRLO25sbYxCUjlB8jV+Mb1ZA9m5txyBPtL8gWvrR1zbsc0ioQN8dgje31l9VwXCkXAdfdSMNu/Eew7eAakZreyCOS36yHmA5gDM9qu/sXWm+tp+f1fc++rw96Zdc/6iDHuZFTes+oWsP1WqXurehJ+f2wN4sukf+5eCFLid/D/A9GatEbzbQP2WZ1kgJhZpefTIo+LpvvpyJSsZYd6++AO04DgqTfHiMZZl+yq3QRZd3NRmmnjmAmwUOHSqd0v2armaF/r2rbQUTajI2Hy3fwhQ665wo1JHP6uGUly4QEdezA9NbIeg+tPHQgZuQ9D/eHj5c70ikIIMbOrGeGmBpaaIvCzcTGdbMWFLFqvBMLMfBMjk06+LTo1NUIhV8Pgi/iI7W6xAHWNA/Q5QbphrIt4SGj1EgLPE8POiXYqeNiodwBPd3Gt8I96x/aiSken22PjxvLGKmDj8mEMAha6dEFhsckPvySvvzU21vDHSJC2Rc00sXwMgi8eFymsXDRf0IKrPjGhsBdi0CM6jEi/n8AGodoJwplbmRzdHJlYW0KZW5kb2JqCjI0IDAgb2JqIDw8Ci9UeXBlIC9Gb250RGVzY3JpcHRvcgovRm9udE5hbWUgL1FaS1JETStDTUJYMTAKL0ZsYWdzIDQKL0ZvbnRCQm94IFstNTYgLTI1MCAxMTY0IDc1MF0KL0FzY2VudCA2OTQKL0NhcEhlaWdodCA2ODYKL0Rlc2NlbnQgLTE5NAovSXRhbGljQW5nbGUgMAovU3RlbVYgMTE0Ci9YSGVpZ2h0IDQ0NAovQ2hhclNldCAoL0EvYS9iL2Mvci9zL3QpCi9Gb250RmlsZSAyMyAwIFIKPj4gZW5kb2JqCjI1IDAgb2JqIDw8Ci9MZW5ndGgxIDE1MjYKL0xlbmd0aDIgNzE5MwovTGVuZ3RoMyAwCi9MZW5ndGggODE5NCAgICAgIAovRmlsdGVyIC9GbGF0ZURlY29kZQo+PgpzdHJlYW0KeNqNtwVUVN8bLgwiIS2dcihphu6QlpQGSYeZAQaGGRgapEtCBJFWKelS6QaRbqQ7JBQJSSm56K//37fWvWvWmjnPm/vZ+3n3OsPOrGvApwBF2cBUUUg3PkF+ASlASVvRVFAIEBAQ5hcQEMJnZzeEuyFgf9nx2Y1haFc4Cin1rwglNAzsdm1TBrtdB2qjkICGOwIQFAYExaQExaUEBAAhAQHJvwJRaClAGewBhwLa/IAGCglzxWdXQjl7o+F29m7Xff56BDghXICgpKQ47+90QMEJhoZDwEhAG+xmD3O67ggBIwADFAQOc/P+TwlOGXs3N2cpEMjT05Mf7OTKj0LbyXHxAp5wN3tAH+YKQ3vAoMAvyoAO2An2JzV+fHbA0B7u+ofDAGXr5glGw4BrAwIOgSFdr1PckVAYGrjuDhioawEPnGHIP4K1/gjgBf7cHECQX/Dvcn9m/yoER/5OBkMgKCdnMNIbjrQDbOEIGPBAVYvfzcuNFwAjob8CwQhX1HU+2AMMR4BtrgN+Lx0MqCroAeBrhn/yc4Wg4c5urvyucMQvjqBfZa63WQUJVUI5OcGQbq74v9anDEfDINf77g3683AdkShPpO9fyBaOhNr+ogF1dwYZIeEu7jB15T9jrk34/9jsYG6AqICAgLiYJABzAWBeEHvQrwaG3s6w307BX+ZrDn6+zihnwPaaBswPbgu7/sH3dQV7wAA3tDvMz/ffjv8ifEFBAAqHuAE2MDs4Ev+f6tdmmO0f+Pr80XAvwFzgWn6CgMCvz99PltcKg6KQCO9/wn8fMUjNVE1NUY/nT8p/OxUVUV6AL5+oMMAnJCoICAoKSwLiogKA33/r/L0Df7H/bdUFw/9cncA/FdWRtihA8g8S17v3FxGPP5XB+efYcAH/7aCDutYzDOD8R/4WAqICkOsvwf/nIfid8v+n/V9V/q/y/98VqbojEL/9nH8E/H/8YCc4wvvPiGs9u7tdz4Y26npCkP8bagL7Y6AVUQjo//rU3cDXE6KAtEP8vY1wV1W4FwyqC3eD2P8hor9O4bo4Ao6E6aJc4b8uHIBPUEDgf3zXMwdxvL5UXK/P6rcLdj1S/22pgoSgoL9mT0hUDACj0WBvfIFrgQmJigK+gtdDCoV5/dY2AOJHotyuU4Brcn6ALQqN/+tExYUBkPov028kKQmAIH+jX+sBQf8FRQEQ/B8oeO1F/gsKAiDU31DkutL1dfgvtwgAQv8LigEgt39BcQDk/hv+hx3EHY2+nvzf+rum/hf+fc3AYF4wCP70BAoiHerwPrTxx1sFek++tUHZT+xrJilcfL7T6Cb3M2LcRK7yl8GL6GOFxJ4PpHOrKpxH92aYLn236ipxI+oT9BrOH19Yx+uPrDXgTw1TdQ692VKo6GC8xcBneG/98aXLY+MgR6w6zBYN9kwXdwli3WzyH54f1bwqOopm+8Mn1vTWy8U0CS6KRvmeGsVYBOWPsWfZvBqnYcFx42PE4ybb8yIZOzr+RJYxdMWkEc+D7/ftqXCur9mSUOzpuM98iaGQaystG60ZDSPWEVn/yF1fxc0kDepJ34K8Zxrh0Xm2jFYTNXJNJGAXkXfMLdMyRX1Dy300X6yDlIpIVkfCn0H0VtgVe74gDDKaacgyK8TzRy8FrXPwXfWaNy6pfKJLx16iQ+Q7Hd22dYUiUtufI+6EHnHK4zRvRmwmTYpN0WZ3dkj6j3JUPr8KuBc/JWST5Wbe5gv2ItpuviH+47vf0JAaEu+1+aHhw205w2EMhh5WcK+gPXOGNM6j7dcm3Z1lZFeOcpj0hU9Hbmg69L9b1GjxIb5q13m9BQmRn7GSWT+9R3hjadLFcM09dApaZA4biU1zkNJoQ97s0zyPYhUyyH5r/mKr45WiDZl8f4k2ZjAq9L14eQEY/CYpMpuDrjbC7jD/RJdRarBypHD0CcEXaLki9PnjEfWi4Z2w+1aeT7RJyoqHYKzKyruCr4qFTRJyWiP5+4cPWjT4qcQmy8YYZVIMabV7vrFUyYWiaThpS3SCuyhfJxGuhLCmy9WYObQd22f3VPGkGP30LL/6vop/UckW97l9eMVi2USHXymX03jUYldnfZ0hs+lDrfBtYuwxBfl9hDWpa1uhdrhuzUkRQXOst62Bd8HyRIvN0u2B9keS7ozOsZ3HuivdcW913NETXFqy7vaFsePBo93Kg9NZ9W26Y9FW+X40NbVM2K2tY/if+QoGfYy4B2bvCJds+B+v3s/1pA7xWdOTujHeg9vARDyxPMD/YoQS4lVfRJXjQZNcRMeZFkwmYyYTJTaVJqo5O5ZWgfmJx+fitlpTlgAmV2sA+mFJQpTUZDlFDyQbk0qRqDBLXN14POgSe2It0+SqLl3fkqjqpeRHbDOzdEanxxBqVGjEu7ignmB1C6dwHYxwf2Tqi69r24THmbQCFrSXtlqE6eibUxM3ExuDHny88sebmR/Yjk0vbSXBxJLGDOXs5ZhZZwpKbrN9F0J0AcqFmCSHKKd0XdIWSGCG9J7pd3JakBSE1g+SZ9/8OD3aknbB5rxHnsA8zMI4dyBZEaMPyIqb7fsVvpyLs+TZ8oGF0Rjjmqf23qLDcaria+ZeXG1dEsmjYJt+Yaxsxlee1FaWOmYyo5nkXFVOuJNdW53lb+h+krs38WCrQpAyvoT5NIjBH5x+V1zkTcgGdsyXudGWDlxe2XqeviJjVWrIunCH8Ns+2i4Jxw4C+2/W2Ns4iAbKDQUkXtwiOG2tKrjmWKe1i2isRWovK988lW0gAyo1DIdQTqQ6XCqdawt9ftQvii7TenYglUPzueJN99lSafOA/9JPSCbZpPajWwVLkeTMtpLWcrpfy/3wVN8UHpfKYU+tp5AnVqfgruGJJDQySvjAbhjh8WjQbGOf0jrepiWUkeO9719mVdyNaSRX7n+bbMGf66YkdZJaBh+FdSjP0FgETrLQj8Y4pzT4+ungK0EM9LvEwm+HHXJmxTv9C/JDsQMSK7pmmE6bcTisTjBl3cORtIInYvX08S9OJfM8ZO1VWq1NOTu948J1fqTgckrS5W9QQ0UnZLIXTEWKsBtEyZmf7RGaKqXjvFW5o3EcW9xcQ2oxNWZpmkVBU590p7Is/WIawV071k8v9ZChik+OwblH/DixVqv+vLJryux1l5J/RRfi6PSoJIqsAZoq+GZAChR0Btgx81J04TfN+T3NItYb5NnDlRQ29gWaE/WeIia21MqqqleIxDGYpZluYHq78CyvF38nGtWoTAxQ2MLGubXuceIAQg+Pz7wMMWPUJeUSeWs7wfPA2dT6iZs/IJpk/kzfjE3GPlNpwTOlien7uYiuAvkLT3ubloD7p8JwFb/Q4Cpzklynbz4nifqUP9gYP11gmatkiviSh3109tEHmZx+Iea71RBUALZWx16vSnCyTyiC2e5zNNYGbpi7pNfk4/G/mlAScGcwyj5h/NZ0t2htlldh5JYnHwuPSAXbQq7caN2bFFnWMtg9TW6TG40qkeVuN617+DSaXnQR2DAO5kTkHJhBn+0V2kckxb2PfvZRzktnuzB7wXn1mStW3qs6Na3A6Qe59nIHGZ9QTw8/bWUWvKJrxZjRkN7T4LFwwh9kYtCgPRej6f3gSEseO+EUJMmCo0MIPFIebTNv2gM27cU8fRVIIDKyC2Uefun9JLoYSrmLeKPcUY9dFSaTv9lqdvIclgoyB5U+zU8wQJ6+6Vj1Z30aYH2bO9yS8XWVBXyPmfJUYwD+stelL8VJA9CsAGybMp94cxucYhL7HUfC1YzFPME1mNTLbE7vwz1kSH3M9OittMY3BHS+6rukHTPPcov3uGs9aByUtQkY8N+5sJ7XuHWpFKwuLyP6PRebwJDQxzW/ctvPXetRkvZUYFEzi/hrzeZPBFg7JxsN+5/D5yW8HwDRvvv7cW8eZ3o84rrzgV85nIFBOGt6PVGTLZGWImfzVmojwCsc8D4taXTetf2VMnXD0if9q8iE3A+GRNWB/ZB3uMVC3+JD2IMuvJUttCtvG0jen9rTe9o4/gpte6iWb3VhISoakci6Ou1BaR72cKiSi3KDSvOzQa4VQ6U/si61VJvO9JxX4m6OOJioE8r2M3k+kcDKDWRCFjTlPdQS0PKRJh/voESkVk/Tl2tadgAjzES5ESrXgKKDfZ0xS3eeTqSDh/LBSO7pPte6snn2uOSY1RmbRaxF8ymxFpOuad+ijw1xXoZZOGT0xO8qaJuLnVprStP2gRDJfFnQyhLAqTNWaRRXzlcJu2pCB2TE7LsT6hfXeccYOiKo5Oo5lt7f3/5EuCA5Esz3guu05dz9HX6rOw8FohJ69Fmk6kutTyFEyzUigeqHoQaOuRR2iccg3UXYeoy8SaTOj2htSu56orc62PDdHS3bA1vVMVC+PEEORv8LFOlgvzV4gDlzjmhF8aub5ZFPsEUTdTp2ycILfVAqWuTN1uYWlfZZQRLVOEb6pKpnQPcuTJQj1nI/oNKsVXfgjnM3ZuzkZHUeuly+WzcOHNpDMqiVwMGHRd+BPwShvF0UPXcirOaXa4hJu8GRNpP1DNnK2m0ld+PZaOYERyZfeu3NwIXAOdUfzZ7aDwzjypVdNVL69OjrK8/aQnxxb50HNRkuNNccCpUZ08aX6bgujsae75MENLMrhszYx+zPsjFM8i4fyGWsR9AdoL5oJs+w3H81VE48RpIJ1BYLDSqSFhgNiHNovOOs3m1g7Eof2S+FCOqqz8ctn/AjMvXGMB16VNkdMgp0K/EFdxp8bIR6yt6ZBC5o8zhp1oTWdXbZ8rLMgYT9cz6WS58fJ4lng8TbSmX7UHwb+uyBUetLyCQGDcVqhnvIdcwrMQWBLx/sWyn0VSXfZhhOEPrGcWbfTdljWwyLC5DqO7RvoTu5OnqmfeXQuoFbkEE4Rf+NPU71BrVx6NXME7WVbo+aYBz5RwZSS1tSGjBn/c7+6h6SHwErkunFGDGZffMyD0/Mkd3J1aWHXQs3YrfwKD4tNS9PhEh8ZTtrYWWB4Q3Lko07MhIwfrddsA3NSnoWk9FHUEZWGFxJqOtJr1IlmX80xKbTEDojk31ZcPWExcEUu8HUFetSG0039VWlvPLbq3GtC5ZN5m/ctjQ86cyYRgqR8UO9Nwh55YXJWle9xJO+i7HSt1yBmQ+iZJ+ssnaTn18S9CT2uOdSR9tk14ISFtVaKuZYgfu6JxaFFo9sllfH2Y7Rss1cA/JxoDy6E8lYmXQUuaIR6detafEy/kzRwlUaxepVfXUgtSJXEsxCY8xMvnqX0eu2oN16/laJS4pjomxS+LcYPsBMsDH8aXnj/H3z3bK0z6pgrHoDj3ujOfAv1Z4bo96sl9C0qxsf+nbDSdldexf90y2wYKeRPz5ZcsbuzuBLre2DherfyI+Qz835hmWuraplTLzGu/deqjMLUXLW4Qpel9icblarHzWOsm041LjdmDXXvJXbr44p86huJ5ZPfufIUprvYIsKR83PgO0O+DHhyTKKcLLa0Z1j1zOd9LI82TsIQ/VrSuiCc3ul0B2KuoSPfurcC5XUikpDct7yaQ+sezCxG0WSyS6kVhLf2ahsZBpbhgpWjxrvndrwhrBEaKJUBaA2cWC6+m+0V/0ZC7Yialb9JY7POX032gek5vDxUqt+LljywTRqpmzoEvsgQePylO8yLvrte05cecgGswOizjqtq1zTX3cavKd+tcnIC3Yr8IZjvvs+0o/+Wcdeua8qTHthR5qbkbsQfTdb229qtqBbOEPZsdv+0VOLDLQ7VG7xu/QJvE6B3rp5J5ISH6VqPZIKcTzSSR+L/sGEfJR95jFJOc4llJY4m/r8MxvrNpHY6Yjvz128i+KNlbJqC1WPI6NvJowELYGIHXx2L2xzu8ox0u0wBzH/XDIlgjHKOZbnz60cEUrvd71J6ufYGX4ycQ2zI6tNxlVfPgBhUGiTpnqXBvRQjG34H5i5NG0XzjDB1bPDgtjyMpT6DNO5vUKKOizPizaSuA6Z4BmYmG4iZulJxhhjlk5rkUHGnzDiZx6cJwQFlh01ctlhwH/W4e+z893QMOrMNLd9a2gqPgbipwuDRFBFB+EZ3XzCe2IvviuhnS0y9JXhls+mpNRqf8Wyw08ntMdRuu5hLCuR3PNMPJtAr/2GVeuThrw+rfbajxkE3sXhRQkhbw+HRElG9O+BfG239JS++xVDe1vxuieP/adW0RVfmMuxRBouM0bijhpibHVzUDXbgS3an3isOHhTiHfErEGzJr72UwM9uz2gyJG0r/0OGxUGfqM/tzUifAhGXMOjxqs/Ry1POFDfKlio8PdJ1/J1UbDA0B+1Z+OKlvLRMdDQmvdmcLB6/fFF13PGKsy4ToY7XKOGw/7DmmZYCpRnugLYz4JxNHSp/Dnl/CVX7rbnLni0rVhdseCFYDdzNUWYim7Qy9pj6YwGg3VIp94Xsj8VxF6Z8MARnLPzkN8IFBGrEA+6fxxPtcX886BK5/CyzSF75YEIY0ETxXSzzfzV2pu6p5huWar73vvrFWtH3+/u+h546pnzmEVpPM92qcXnqVu+R7C76oTkXXTQRqrYqhM6ERToqzGWG90srXxIXC7xIe2HThh1Qc7VK03SKCl6y49vFJmLOqh15AM1KKN2NzgmFfiPHVt9ZXS7PyTLr7GBbLJX2SH6lUHhy8hG5pvcIav7aVmSFBQSUUxzOiTu1oavvqYJVhMy3d3hxoa90bG6m++u/vjoNJTnakKgsIqFQIoAMw5KbYC7V1r8QazMyPPoAYvK5HkA4/De/pas6rN2mU6mTJIRc5YwLwEKjNurlwSpR2a+vsFP2w8XmPhDaQi3Jfq6OKrNblW2DViD2e2gRP4NAXE2q5uaJmPFW0aZPuH7mMfZ0b06r8Kzj3nVgWHYDvzWxg2EXPXFRukyZDUnvBWbB4RQzBzxp8DyCTvhW88kaNbBfmlCSW4CaUA/Gyb/EhZJHSMf8MGYFxqIacEmnVfixmCo38pOoS3RpvwtoHZYK8P1oW+kciWrCMGPEGVfcKGFg3QNGzKXFNqbwTEwoKlCmMThnLBGCP5053jOWuk2NabgBJSY+KL3AqyiQjwnwtKSJ2P+tafED1s8UJx9qj51I9ARJKRe7RjJUZrviWUj06+YSHb8uEv64Uo8QVkLolXVd6qIl/L45XquJD45B69cCGKLIcfMxeXe20dUkTQUStFvd3iJxWhnHu8b0W6+NxfqKvT9Udu/tu57aF3BEHUtbsSrRvNWzqOUOZWS1bC4l3crNZn5Bdy+cJXkxpHa7h2Njx2IJ+LEIkaQadqea6YyLwke9xC1/Miq3VvwpBFibeiVetw33Ci2kDUpcv/0be6YI/q7v3oohkpsrtPh2Pc0j9LIchveD+ZpXkXBQcvdpA/D7tWkLKEZtKhrWjnOmIT7pB7lKogrPfM35bFeT2nWZ1X7rGD80c0ySnkBStRcyXxrQiBwhTvIfRF71ufQ5jP12+CUt/RbxeiHI9t573Wi3mZUsx+M0NrhYex30xmZ3rUfeCIWN/WgeePgbGnMZFDondUMzY84TGIftfLtCwCukzk6WHx56W3bZG1wxTItd85v9+iYTlFMbQP/sntLMfHORTfUdCeuiuIots5UxQ/j3cvtsLB1mAlZg/VmBgKhV0gudokDRxWEBj1XlamIoxMeS70ww/o5v6LDTrWgh2PlOUgzHxLd7pt+V6U0RirbURYgifxC/z2NQbHgXY3649xE/Az/8Zn0clvNQrijVy7wbMenzamqFiD4JHw2XeHvtO2Ir5/DlxtQs4puuP9uyzVpJnLmwix/raSI/6blzzZL6mwZ5mpKe65+oP1xuq35fcoixFy48GxQr/lihE8ncQcIwMnfDXl4md+QxLsJHYmwOGgRQz1N2S4fm2rdrKNT+SCBoTZuTjpKTmxbme99L1Dc1DyTkDQaE/cLlMyEQ6xBQ6HgXO1IA7RLwOavxBjLXLnil0m0GnhTW7OCQKHGTOo4k7a5jSg+HuVH0V+mqpe1IBVtEEOVUKNrb4BLNbg+41F3mWaUA6/AlCimmdmtFLO0Onmxp97f3liSEOJOEsadpi/Ttri/Us2yK8WPteU/mPoD727pefh0leGtFxha9DqSFWr+sjzgwSZwFuhsMryBsxL/Cr8Fq/fTFVqyyL52qHudcSUH2TTKTqDpLzPX55Wy4u4N1mH9rgehlhhGnrIlmVvnBX8orf/pGR5pZN6mDd3Y3tJrTv25YFsZiTtc5Sk1P8/aR3zXclO7Xjqdu0Ys/uhixUr7w6j3uRq07kiLIV+M+T37Hc0F56V43rRVpHMb1R0tfxNlnseuvVATNbGy996CuDbFFLimItiaarnvWT/uiI9sCI/zoalISeNFWJBEgwpJGgfTZPQ4ictMlNL8/pjPlDXHMfvmUMFmecPSOZ42XgeNW1QhzBehH0xATokfels66ZNVlhoF3XapKJSoPSzxhaO1x/d4rMROpoZO7F93NDNXGgSoL2kZ1uZRB58JeQfz2eOR4xaNlfNX3HxiaVPmgZZuWhaNPHy3Uu/zLI6+/suDzy+r6pxIG4e3hDNcOHkeMAoRFBzGhKZOHnJtpVtSnEe6EiVFi6bcxCTh0rJBBKVpW5kjKGsDB56HtYM/UzXfZMLJ+egHWp81pcbt8TxFrIJYFCPL/LAJOF9UG3i4rSfud1gZKzgVbYLX2Mt2Lcvr+PgsdcK6KSZ2q+OITCSd7dotnbQy716WVG5jZF6Nag5ov4ZjS2/7vLyhFm+7cko7H+2ZXOcSb0faJbI7fEw4npMcsTPcJc+XvUa8Kby4rFlvMLrDx+4lUzI65UzziKyGO2Bqog4UnpxhFyKfxNjuH333C2lgb362BPJzo9zhvq3AUu1YmANTJ+X4w+97bmKpuyJg6TT6raHA76RDDqh7dLZnKjz57U23A3vpzDUaVivmnXGdM+Nm9r4mvFaWc8xnsFQU5xZFkko0uMot9UhWjhvMG7szXnCFKxO5IKiJuVtE7L3s7tYM85AKdtwu59C6jIjY2n61UbsX7pmy3q1O9U1naKNl3zf3KdV4KLGiw7sOrPNq5sGA6Tg5dIZC4ir7LfXEGM8HMUk5Dxc/HjYb/bxkt7ee9Qp2SDUkNmNMzZASN0vSRSjJpP90/MYtKiYb7on9dc0ZN9fu3DbP5/2Xw80hzVLs4Hv2Mwrg6kMVWOn6JGFOSDRyqoFVnDjn4e245A5OWRGb/KA6ymkGkqdqtcezWjl5DJcdifcoY2a/1ZiNd7hOyr+eeryur+8QEHmemuvcb2CREev9JZcB9zjt7ecJx88RrVXiFHjrb844gfQIjXP+i7OaXc01kNkdvRcZhrJxKeEKHG6YJkgTLO/SDm4s6el24S7SomK7JmKpJ+BjPuxJSS8x35QXoIsZhFeSfg37sso5Mzc60NVwkPIDkz2yK5ob39A4025CRPATlffnfbEb7w2egzK7Ht+kONEqnnfKy4CLedLm3WWf84tQ8vnsTlrW3R5gHb3sWCBL7AfQr9M+EXJ+rvlIlrIzkc1P6nTGa+U1cWyg4bwQ0vQn+1Pil1EgwgNtOkf8WTPnIpKaPfDcSnFFgvc6dOtFg6k+Mi33Z3+bqmA/gv0sqYZw8XYY3jbN2+WmaauDZxeCb2eLVMd/yPUimVmSMCGn1QlKxt9y+DNzR+Ptxq/kE+xmX32r+8SaeJYy6Dddkl+eUPn9yMWPpzgrbIkrI1FveYBOR/mNg1bOh0LLT1Y+d6pjfMonsrrXQxctZGoKB0P81Bd/vLBYY15rDRcgLkVAeMctyW+pZ8k2rDg4mM7oe5NgmeNy2oltwKWSyV638jkSAYqTJGo5SCNBuoSJDd7GqQnrbs0HX9GXGxYQI6YMONKGA1WmVrVwe1lYLpFHgIgCXSbd9SA9elu7H+o8/1KFjaH96Lap0+DKTJ7xCHX/gF/kGgVBJ6lBCnfnWbZw/2lVsyKJs38FtU+lwQURaBEijBibaA+Z2A3bXQG9un5xt5QIIug5kuN7h4GiNw/GNJ2102cF5qMZhjGHGlMm+B8ziHkeBHwdR+lGnHLXpT+ZV5S8heeleeMVx0JhWBv9Tv2xzmeUZI6NNXSSOYz7YnZ/W1fKgjE+D2dan1DsJQYvYyGkLsFM/JCca3HucRpMZ8fv/fIrpbVlTb+AO1g4hK6tH3qMCag47rw2m9GjY4bdwarasdjJOs9LNsRDBvam3EbGxMX7VTMvPqQ6UJ4n/MYbxasgUW6jy1xN+1abLVddgbTNaKFdrmpALDmIvBGPqpzLIyZF3qnKHw5dvNOC985J5WLOBXM7pYQg86uLYfugmf7FB6cGz8jiUMh6OavFMQHFpt0tQ1q8z9E8j6SZSt97BeLoCceilgAqZ/2xs023O7WZbeQtlRLkM6xP0bYBmbHVxK/KXNZnOyK1O5LdE9H7j56POwDI+Fhu+rZ5USZuwjAxqY1j/LPOhJ2fhLjNQvOvJWYEv7r44IJ5yKErsU49fccXO3BFkM6KcE/qUpfAiK5TYjEpO4MYX8mea/4WER03t5TUm6XkzMrF+ZmPkb3v1hJvLVkOy9yavbeDQ3s7pRGEkjbQC1tQNjMgDq1dKaqPpwjXHx1ZidqxANRRW/pp94QWhlt5pQ5oAC+7zR+ec5ae+fmatWt2s5fLTS4uT9aXytQCWYrG3myJEu3jY/zAljlnl2HrNP+8lTy9EnTXL9UtJaDdo6MMys64804aSo9PMOn5c2NTV15/nQa/EoIumCBgT5/EVB6LSe9+kzLw/lFn3ZOfF8jqdQxUWd/XTkhvfcbKouvzvj7n1CBvUmxn0sKelScldbvjoiTPM6KOtfVSw7ANPiE0n2OQsX9XuD37vFC45AWsaPCq8OsZKu/oxqwliygXk7RumpmA/VxqzAJRY3OrUAJVc7D0mOphAZ1F1l09hbHrP76lH/b0HgdIeDhpJf8fGS3lGgplbmRzdHJlYW0KZW5kb2JqCjI2IDAgb2JqIDw8Ci9UeXBlIC9Gb250RGVzY3JpcHRvcgovRm9udE5hbWUgL0dYR0dCUStDTUJYMTIKL0ZsYWdzIDQKL0ZvbnRCQm94IFstNTMgLTI1MSAxMTM5IDc1MF0KL0FzY2VudCA2OTQKL0NhcEhlaWdodCA2ODYKL0Rlc2NlbnQgLTE5NAovSXRhbGljQW5nbGUgMAovU3RlbVYgMTA5Ci9YSGVpZ2h0IDQ0NAovQ2hhclNldCAoL0kvYy9kL2kvbi9vL29uZS9yL3QvdSkKL0ZvbnRGaWxlIDI1IDAgUgo+PiBlbmRvYmoKMjcgMCBvYmogPDwKL0xlbmd0aDEgMjIzMgovTGVuZ3RoMiAxNzgzNAovTGVuZ3RoMyAwCi9MZW5ndGggMTkxNDUgICAgIAovRmlsdGVyIC9GbGF0ZURlY29kZQo+PgpzdHJlYW0KeNqM9QNU5W37BgyHybZrp8m2NdmezJ1rZ9uTjcmTbWPihMm2Pdk14e2+n+e58f++td53tdbud5y6zuPEdVGSKqkyiJiCjIESIDtnBhZGZl6AmLwKCzOAmZmNkZmZFZ6SUs3S2Qb4XzE8pQbQ0ckSZMf7DwMxR6CR87vsk5Hzu508yA4g42IDYGEDsHDysnDxMjMDWJmZef5nCHLkBXwycrU0BcgzAmRAdkAneEoxkL2Ho6W5hfP7Mf/7BFCb0ABYeHi46P90B4jYAh0tTYzsAPJGzhZA2/cTTYxsAKogE0ugs8e/QlDzWzg72/MyMbm5uTEa2ToxghzNBWnoAW6WzhYAFaAT0NEVaAr4gzBAwcgW+B9mjPCUADULS6f/yFVBZs5uRo5AwLvAxtIEaOf07uFiZwp0BLwfDlCVlgMo2gPt/mMs9x8DesB/awNgYWT5K9x/vf8IZGn3p7ORiQnI1t7IzsPSzhxgZmkDBChKyDE6uzvTA4zsTP8wNLJxAr37G7kaWdoYGb8b/Jm5EUBCRBlg9E7wv/ScTBwt7Z2dGJ0sbf6gyPRHmPcqi9uZioFsbYF2zk7wf+T3ydIRaPJedg+m/3TW2g7kZuf1X2BmaWdq9gcJUxd7JnU7SwcXoPSn/5q8i+D/lpkDnQEczMzMXDxsAKADAOhuYsH0R3g1D3vgn0qWP8TvDHy87EH2ALN3EkAfSzPg+z94LycjVyDA2dEF6OP1T8W/ETwLC8DU0sQZYAw0t7SD/zv6uxho9h/83nxHS3eADvP77LEAmP/4++tL7328TEF2Nh5/m//ZXyYVbSV5OVW6/zD+SycqCnIHeDGwMwMYWDmYASx/DBnX+4fPv8P8VYD/kf9TqmRk+d/k/hFR2s4MBOD5D4f34v2Ph+t/x4L6vytDA/j3CQqg91kGAqj/Hn1dZg5mk/cflv/PC/Cny/+/uf8jyv/b6P/fhCRcbGz+VFP/qf//URvZWtp4/NfgfZRdnN/XQh70vhx2/9dUE/ifVZYHmlq62P5frbSz0ft6iNiZ2/xVRksnCUt3oKmSpbOJxX9m6H9deA9vY2kHVAI5Wf5x2QAY3hv2f3TvC2di/X6hOL336k8V8H2f/n2kuJ0JyPSPxWPl4AQYOToaecC/t/4dcQC8WN431BTo/udoA5gY7UDO7y6Ad3o+ADOQI/wfHeXkADCJ/CH6D+ICMIn9hbiYAUwSfyM2AJP034gTwCT3N3r3k/8b8QCYFP9C3Kzv8/o3eo+i+jdiBzCp/Y3eo2j+hXjekdHfiBvAZPw3YnlHjkYm1sD3m9zM+W8521/y/8zdX4r3lEz+Quzvx75fWbZ/h/+j9Eym/4DvBwD/gu+VZQL+Kx4L8zsrs7/hu7nZP+AfSsu/3dn+gK5/x2P5Q2Dzj2Dv2Pwf8D09i7+Tfe+QhYe9xfvl/LfFu8zyH/A9P6t/wPfKWf8Dvpfun4e9l8L2H5m/E/9H5D+YgP4++932/UH7h/qdmf3f6ndf+/dHxe5fTWBn+a/03y1gf0/S/n3hQf8o8x+FcPi7Se/BHVxAzkBTY5t/RWRj/1vx76BsPP/V/FvMwvLu4fgP+F4vp3/A91T+afxeL5d/wPd6uf4Dvh/h9o/WvnN2/wd8J+vxD/hOwfNP+K8tNXFxfK+H85/36PsK/w//+VYCge5AE/ileZAJX7BVXXDHQ40IgRvD3rjADOWeZhoNg9eSY6fLEzJMMk11ZuCG451I8nAv6uqOOPWt8DLJi9ev1gaYsLZE5fbf3s8G8SpTe+3wi5PYPyYKfonUDxDBETKoCe97vzh4awRYQ7aCf5ehzHVw4UZW+obx4NYv6V4/ULYyGjq/p7xfzSmL8Fw2zRCtHqUbUDxLmWecNYdLBu3MQARLi37hjjJ7ezeDnjPxRiITTwfvcxLNVuilvcka8zjnuVahxurUjUeBp41LBHmLPjr10Uv0MEUGZ8GrpHD1x6J7K38hSQ4SfeoqAyrjIWtGtaVKpF1zX63r6FIXy25uMiCYiuAHxm5ibWkzpoEjmSJWdbtBJIZzLZs1kOiwy0x0reNOo8fMKpVwmWe6/g0wi6Rl8cu/pcfrd4PD2vDID4b70NS2h+HmkZ0eH81ioQEhQnM3FlpxC52I1RXeDKJUqDLnMYhuTaA0Jir9smsy9zOUUQi/V+Cl6BM+y3YBM7M2N1Qf+CjhGUeu92WMT2XjhULX5izago0bul7QWxCnwpvx99SLiwI8CzZxw8xQ6rwM8Z4veeuxVMp8dcDG2aAypovNSmzGT6UeJHIJ2xyLl4MUhezSkn17C1XDEbqBHlaPPPmMZxqV6u1xHPnKpLsnkQxjh40BQ6JBIf08d6aH23fl5aL6WEcgjceLSrdw0eGYLTWu4LwvXSr+Od1OiumSIpEQRfc7c31wxuSnaqKupLbNsSiaagJPO2PdRc9u9GXSnyipCpfkB2SP+MO8l/QWPxX24dX4C2N/uW32Z63rVHygBkPMRF2LoczcX4EkN+gcbta4fMUXJVBVe/hG7rkJ1rcwPbZD+nNqh8LLplK3mL2/BcDHEZUOaRP/kXRhx//r9YYAdVTEq1lEy7q6m0jDMmFtxuwP4MbJ0OgHUXKYTjZmTMHxEylAQSlV5rpcIR3m23xittW2Z5bwE0lsi0CVk27dOuYtf0i5gG63FjjFxiehcPVjuMn9Z87knGl3yTxlu8Fygq8ReLuW1ZTzSdmkC1PwcqxgOLU62V/RbnYK/WhIo8xCPgfCmhyiRcKC7fDPUWEO1cWmXKpgKLGJ55EGM/DWolGhbb5OiiDLoFQzQi3114nJjIPJOJeBfezz4oKO46yFJw/QmOyb7P41Ny81R5B4HclUOoIssWDuRibBkRTrdqkaTuFd/RYAUuYfPxhPRUCYMvRt4s8iZmEu9YZNf+NvP7I9b2h+XMxcH7a4WM8N3qg88odtbKypyRAaxjMUuuZK+YWNYDCaC6WT3HXN7a7Ez84yR3Qt4DzxIAW2jILEx5ne2uLjKOvCcsT2+6u6GBiU5VfsBinnyrqpGZ87D1zi+VdfE2JK3Q2Hc3/dtrZ9dkV2V1KdDIN76bZvNef11c9YP/ZNIvGZN4jKr+RlHuVztJgrRmNdvTg3cJPmdR/6ABCOOQ7DX8nY8ATuIZOy1Ka1ZBlXZXGPh2l66HEkR2S9jMLFtEUlszvhiYk8VqiRI2SpQvtYFZlnNFKrOKWVKChsfh89VbQwJOJs6nTj/poFjg1HPgziw+LJji58ZKU0TzKu9gy7lxnFS6d3AfnKV7D243quuySk54bNctJ+bactQhroRSqfeuP5Pl6yIdSfL5uEbUKD+3Pifkv3wjzHufKjUOlOzET/zW87aLVfbp2J+x0UuaYKumItGQXjy4p38xPChZqs7iSH3A6kcqbTVTsEoF++uywaTFFDogLCtTdPp6TMCT1aeSDPR4rTx8n7QX/K/srvU8NYblvrW6x6oLK+DUCVwYuQtMVPFJfDPFHbMwloHN5GFmTYxRRT2NIhD877wO7ldQCRBFJJMK6cHYfqldvHUoZfMzXV2ZKeDyU8x7gCQ1QJu9SjLx3SzxYKTw3zXruK6ADkNBZIOVeTOVssKMvGou6PQ2TyJ8e2/cLNmnOhlbgFlbarxpTMS2lQtE+GX3/B9OclbiQymd32Zdl0UiqJs+bxEmuI0KiKyjHt85dhn3FglIlli+Rv3GfZ8FV5/exGoCZvW/wMZScBnUAGGwmWBhbM7aWyCEpA6+lXw6HeNdC8gDAWefWT9QbJIxhgzM+kaqJtvBLGdyJ57MofvnH6l+fW6nfeGzlnk8AKK7L8ymPKApO4JElqYvMgJk/fMUGRl1+YlBzQflnTgbSteGvznIiS8IOGQ7cpeywn65URrAJ+WNQQjdUUJfQ50KCJ+7CqOrRiiUefdx6wXnyugo7dgl3Y2S4RPQhZ1qmUxXjYKfdhyt/94UMRroHO+GeNcDScwesb5dxqJDWlt1vXoNxHeOAIfYL96zJ+kKOfReJTS6IL9mVccJQhnY0XPuw9UPl+Ps5A2AyHkw1fakPJyHXKE099DMugJmcM84d2OQsxbdnuYDR6daw83aCxvX8on9da2ShcQKUyG/ahhgbfYl7HWPgMMhJ6lSKjYvamJX0HN3f5PHHQSV9oiHmOgK7ApjCZxOaTrMSDWp7x77T4Lo2AGBtqG/Oqnqxl4+nK6DXSlsOyuZS5n7pbL49G7MosODWjvoBynm0HjcKW4tFCQIKTvvXpNyfTmAw7ZM/4HliYyvyDAt55QrlsTzy9GLSLMkeEiMJvZUGuCp+6IuUluXgopOUsXz8miiyaE2zZ2XB6gIfJwMVKKDZe8cvC7f1SGitQjBERwR1xDU30W5+2+fbxoPFBa2+hgWppHExzeXIv6GP3N+YAWcArHtZXJks4y6VpFzjjbPxeMXjuwX5PEanCuRw2cHgPxiudXPfW7TVnFhGXyrIsRHuRCUYd9nzVRVZjtyQ6E4BzacGZAhAf14Lw02jdGsIAWTopse9uOR8dl71ugZs7HrrWtiS8/hqHeNXY6mEiFjphjsFqa4pk4/3WxZE/NbEIok0zxtQZi+EqtwvjtQvd2c4S2dO1IN8FvZ/ncMMUJTyovXoj1x1yiDnNKRBtfggPXZNFwn3ibPYwdQNg/mobH93oruFx27iMNpVFpkfu6YubWmzvetWDlEUUGp9+tzhQwugoyvOFAsuuRUusUozlqd+5zFSY/L6EG2zSWiFsNlK2Bjx3hi+/+3g20SZA4okaGmExSuE6ogicb3Or0PS1ovf3KXhCJerzBm1HBP+PorzknQGMYIwySKfuIh7+RslYJDFxwxCNo28Wm53D/ZRYyonjEoUgpc7+7Sm0ID+KsrhOsik2to57JZ4FnhPtaCeeMHAqw51KYqQTx2XNR16FpMKTIaeZ28GkZhJhaLMgxEx9Is21kI+s7G7opTaeCPsUs6ya5xh1bmshP04UeYzf8vfIFItyMEbGNPtoJdD11piKDD3KopRr4cKHk3SVk3sJJGjLVi3VsC+jD/UVAHemBvnyhkEFoaqUavUKbbJcsdWwdCrp8yc6joUZz0NatwMYp1oOQJ+O2kVCxMLI+0WtMKWnG/hxCXB18W8n169RFzOyQd1zKFJRVHWNguDaysLjKNJLm86U+btvKZndOiU0XP0fu55zLcbtshBr8Y60qGZXjHqb1PouqT47+s1upDPZGdglQ8rI5WEjwFKnCMPXHeT+nPwKX9moQOQlK9G4sXKhb51hvN5rd+yLfWooV52vB7tiVKCeB9464PUcju66fS63sdq2/4098YYljcIPw9FW5O3MKRmz98f1lZ32BiRtertA6f2I0+0FKAPTWNgr3mMeAZZUTIwk0gvHBJZR00+76eSceJ8Zxw5h09g+xNxJKc2UgmFK9656fDbjoxy//fcP6C0oNhiI3q2+GQ3ch0+Mw/0pTXRm44OeHiWuQSRbBnWinlUjYTmhN6xCrrMdsNAQx9cdtwthfZ/BjfJJufHmCmzhU1bCcM3dlkhh4GEfuPYk4LSEPVT1fC9DciDSKx9tQKLzRxWJcCQpWa6kzI+HzRESSYGIaxtPZ6XiG0Y64YFmD0ru7P5SIblY3scwms8NfCuSxPOYqFoYZGyiNxxL18/7D1tSumQz5TrQDywp4+mnJhwKDzxl9oKsXDLtoi/XjU5MkGcRTebUN6XuWMr0yM6COlXb3GOJkk4DLQG8JCoUPHqcmB/Dn2w9qmgsG/EiXIePrHrvNEsi5fpVRPWJVESNbL7/cq83yF3QyuKt45Avrv6wsX+2gnkeAYMR016J0kjgV/KbyaogZHNgKY/UZ90w6ezXp4+ahP5DZbvzyp9bKaClNooPUEadpQsqO+D8huYYl7QIL4UX7bDKHVNQDW5O7FYDemGRuhSfd5xFFKAY5JDsUiJThaAM1rH1DUJWzDETGn2zsX/E8kUbEtdMnpbIioatX3AC+5t6Vkmq41vgBZMObb4r28eH4pd/85uh6Q5tynpsLLxiiuaDUcWjQtRvveXddf4gU2slfIzpXl4fJE7NLDnCN96GtaLsABFTOphkrUbVepGNypfNH+dAYLe46xLgbCMnxpL4uR/AMYafCu8Qv9DvMF0YILQbOenJIqZK102Yr8TS50sMHIZQZR1DYCuXSZFfHglOtqG+nGmkgCVuAw4r7zHZ2itwyHKBa74AI7xp+lYW140ipFIqN7VbZ6rZXaLVfb4P9B/03ZRAY6oDpkh/pmglnxyDPZLOgkvDzmrtlczk4MlSHpoUile3nBD/zhAQXRqV1iPwV4VmuQeQX8+0oVkgj+ooh8pZlGkx7AX6qjq+ehhxAOSVtCRL5yb5iHk+RBPqfSidwtECw44MEebwT1jbmKLGh3/IjBdEyOoLah7+JGUV9g11xwnLESvQfTUFfp+xV3B5cr66Om/COrVq2aaf72NKNTn/wfLXmitgHI3Z1K6EZ4Zh82Cz0LcdaRMwYVWpjyn8b1AdCWcfgK52YNwYAVkSgYS6Oxq1ZWwD10aVIqQeHh07vJczdJjZJqT57hdQKYHGE/Kv81+2mMx82DZSMn79LBrcIZMsTUGrPKAyk3eagpkl+ayp/uLzfNfY3KLV3xitj+A/u0BpNTZIKtV1Hqko9QY7PBZDYvDYFMl3GFY3fuUXvy3T4pqHXBegt0oOT7EEU4ayQiVmIRTAkc4frIr7QtR++rOm51I4sRI3C+6rUUWDPwNmuoifSUTokQ1IE7xBnvoqFtoRrLmYfMVwYdJOy8tqxZDN2wbClajKsI1K2ib3xW+zlnSv4Tnvdkapd+TEK+kbtHh12rnAuL3RoT5CwKLFL0VrSMOs5rOMHfuHJ8RKbhePVQrHq5S162QXeDMfE4c+Oo4eD1/SlzW9uawngofuE2R1+krwLudcmn1LXqmr3C7FkP4V6ioDoGLAEZGERterwyQ0tmCFy+FmP4Mkb/jWZb9nUHZIhpS2LmWs+qnrYjcYMdKk544+7uZP0WgPSn8Fte2WJjYB3KrPvzaFOmwxZRIesBlm2ILviSx3FqSEV+MCzCaCXqxbVBh/Zdy+uFL5D9oyolONqe70fmofXbLxeCbB5UrE/oaodTsvVl85YHvUqN9ULenCYSCZAfPQuMRS9BvFmSlqFuF1M3p0+wJ+k/1LLUulXbjB70+CPvbQdPtmZeY8FhRETyUD4HrC5/KPhov6062Ssnd8HOXQBW6Dv9o/7Eo7OpyLlLCZiQRuaKFZulT4967t9l11Tp2fTKNrOaIeEX26veONjV42JYZRKYRcAySKOKMh/mIoi6PHpNluMyorGG6z2J7g0ZktdnmDVT3A5ZFNwAtG61eTLTX6TLHrZj6c2KQYpLMN4R5J4DAYlO/xQZo65a3DCpVDrrhMutuk0cfbgribIt7z0zaG+kRvnFu7VjRd50uFNu/4+UH/RMFAJsv3q0YbvyVgN8EguKHLgzAEvveHihMSrPnV8MOGrz/0lzkJzpiyPaZ+Gxpd5KEXDSFF6FSPR6AaTneNimfn97rh90CdGBETIOZ57lteyRkF46D7WI3UHAwL/86P2PMZ8HNH2T/XbIKCSd+zC3OKSWO2o0X2Qq62EdIu9byOTB5BjxRsOeA+JbFnkJv6OJT/G/Jc1lAQYNhQQtlrmPLtbO37sFOZUJvrz/Yf+rrPX2gTsOZflEe2ShSMzULoVjq61oOzQWRw0UvF6nAdnlPX5sfmY0a7MXEuDRK5U+n8fRifnzzWWsoqJiGeaDsghszv3tiFPrPq9caxl0h9HfuWsXD1Vb9n0kEOCKrLTFM/vfZFvC9MSJjkEjyh+VFwnS5lF5cN0VZSKcJFduT1KVSFn4nV+UV+YPDm0WmvyP+3NY/055sEs/zSzCnI7beJl990GEtFn8VPilNQhxiPt0i7J/vIaGVWVLmQu5e1iKthCQ+hzq1WkIg+Ti+JHMog0pXvh39vbYdFX0YXuE1RyNuj4HStU8VX00L7Qr6CWyWX+sY+Xnx2IJQBNkF1d3Lf9+gngWOqISk3T093gO2EVSH5WrCpz9RS6tDQ92H4DtwiagCl4vFRm7jCM/hTqbMwIts9EP1rRs6h/KKwoBUNv6aF4a58R7jg28K34TffLeDmqcYnmTnv1La2zyg+U8VijhFDOD/UhkSGDhHMcF8g0vITkpR8+KAiyGY6ZO9myMfj1XKbkSXun3QP8F/u9WcTIYnwIRH40uG6vY9VAJ90+wORpFxmOd+UB14m06iylNmGjPncyVtiSNiuSVRHecusjNFOVyhbnGXiYZgER/IU384yiRw11gN68dz1alqhOwRpts9zehr1/G2yHiE5QF2oOgd5kxJ8qPQKH0uoMCxLI3RrFZR7pK+kZsduJkm6hdR4T4UXJc5xDhTeEGBUP/esMdfyV9C0W2xqzkMHdLKbtUp8araIXWFcrFeDoNFXhZpiIA6xc/N5oUcI11ZoEceaFAO/qb5H0EKIVoECNnr2zt5dsHVM68I3LTqfvr5qbXEYxuJI+BpkuPdEB0GqZ3tHUn1OaBwMC5YURlGfR+WURtAlSQ8+WL0TfOYd1jD4DTEsOFfEQyvN7IM906hL5rWIBXvOpr7s+eNy2GVXItMMcnSpIORWaaNkhEY8LpwbJfBZvTDzyY2m6sIcI+InlsMs76apFXlha/UqVrgFjMMgQmFmhxMIiaFVOAFeFlKSK3aHrNJbeTIMYr/saQ+gfeXp5B0S6JPfLzfXoIoRUcjrb1Y2Z9tR3CvCdh47f6GKwNovgBc/r1Nv2ryY+CyTqbtaj01cSXiFbXKyjOv//IjiDf3TucuKZepHhsiB42sEVlX3VNUr3qiMay+9LIk3ONxVQ8hEssZ6XFwmfNpzhnJwg87qOr96z2dewg+ByytCJnR3lJu1cKcK7auiqhw8oQ9BPfXg0WXZZH3z/Zn15odqRx1ru/rGpZoDsNAr1HW0FIAoN+iKh0MarIioxJ0QfUwFUsfKPi3PQv7C0I84jql8IqbSYgSGTOEBPvAMVgBwTk/dnzZXKKMvEZmy7Pi0YwGyDHgLa5qFqntKkWNVImWSVEH92P2rTzj1k9Oj4uesi5NSSlw9ONXEp1q7msMMdRLD6OLy8Qt6X4dEv2znUKCD6V2yUvIrt+5v++5DWuhvEe8cjZ7U+OUPki8PepkW2btNBROBWT5ZHpOAYHkcE8fUvew8f/pwqupdCygZ7JxiB3xpVAN0KKvZKxcqqOgUR9wrggpeNBU5yxhNf2xV4guTHiykHoro41fhHMgiVK2KNfNROq+Ozoe0M0Htq9K1aPYg6bRg5AGQfiFaj0uJkhvPMMOT+Eo+IojzxZQRD6V/UEidlujA6r7ZNQU9PFoMfFr0ABdrlmJTttvegx/136UfRbbQwRb7iATXNJADZpnj/fp6DTxqcN4I+kLOzhBJXhW+RVwdvl02LxptcJYp054YIHZIlBJFQShldf7t4qxxbnTqDmVmuQ86hSBSbUfYqqWAwdBGOUqJW/M7EbTIoGtUcxqEdmNaACIXF8i2zBgZDHf3ToY6T64poKaPbjyX/Up4i2xDN7kpcofYA+yNeMS0Sw6LdxhT+ZKsc26Q4qc/OZf2eTCLcqpgaefhb78gSeatbIkf+PC3d/N1Jzh3hUZap2kNSv52w6jwIuHNC9sKdLhPSNpeZS0MrKnD46uAR7OP1kbO4Mg7lrZoNCSMQtAcOXUb8Mu+DCQ2qSoHHHbHsS2bnLv7DnuU4Vs4+mAp8/OBOkqwWqSIQ0iPgl7OXvOFiOQJYr25nLYWX8MN6Hz8FNxEX/gfWKzr2vlKpfmTFjc1Tc8PWn68VSfrg2qZyQrmhYrWL5NSiuj2Q0dWJScIxrc63siZQWMIAxzgZvXSCa6hlWR4aJveYQRDyGYJLIkRmZOnSqH7Jp+X9CbVmoIOguX7OqG/AM0/FjXAdaOEiNpx9TWekZh6ZS2NxoWWy8PtaDWcy9oxVV80pEtZ/hpOvzEpyMHCdgdFjtpwn/PF0g8eoYEA5pVMGcZ7p/Nvy213uUEyEay/Z8CV002pprUpcuLLcLhXhcU3PL26wcBh5cJ1TMN/RRhl41FCyXALf/+2yj/f1//oriq+KuBpAKt/j9KyPL1lqY7cbcYSH79Yu0vAt90JS/g7Y9NXBvYW1c05mgQ+meBe1lVau7Q7n+DnYED/TT/afQYReYnnMstMQZRDXC12spCcMiyBZrBvcyl6duaI7+IyivBW4tMvICqn8P7MFaAeFqkBiQ6TaJTA8ITxLtuj43xmFU24/+6x9zBk1s3N+dfbYD/ZNnlkxLwJn1c5Vv4075i7qV4sFTiJ+6utGjnOaAtdnO3n8hNEzJDvSnvMVNnyrWtHUTszSwvXdi+G6IBJWiNjx8P8ijI1Dru6sE52k9Ooe4XuxvZsgfHQLKDoWTFD9ABw9oQCVLcO8ZWg3C7048HRdfgp/1rHh7yGhZFsuzuLNgFYnz3TvEjsw/Tj5kf/Ra7iV7+2o2vHPsQuiLTBiQ8Ud2GarQ4WYtd8DmJLImJ8aKWvv/Rkvq5O1sU4dt05sOXEIQMUl/lLe5umXwfFmU8UMZOG3O/vBNeLkKoppNYjPAKfyuCZ5YKb5m8/6EuB40maGEuYoo54tzw5M9aOiFKTtYdYZBezNfj2d/1CIplBrNGFr0ACLUrZQMrfR7pBSdG7nwjyoyIY5DL2sZMNV66j8KKJ8XWJ2FdDnfnNpYiUZnHQrPEFUiz4hVwbWmiNWyJi3QiezZe5deLf0tYvU9mG2DV53oe/vHFVrBc5oI7D0bOkRMahSKWZ5vm2oIGnYlIt+WyyWUxfzTqWHt4n35YGaIKtfXfGRBTitE6mEEvPchjQyvnSwcLMlmvVdVEKflFbg+03Xo364hLQuUqqlOJUGK29RF8F/K53Mn6PbpUy4Dqq6CiFn0b8mnXWYvTmlhDr8qNOptlGs9o1+HCTE6CDmVWaQT99zYXppcfrXXVQZiFlto6Bqa83wfCiBawptdda5qZPoTHJrkBptUfV0WGQLzckiTTwCotCaEfrw8RoHXeoh+5/FBuNxRB99fN4dD+l2EbTw67bBfv8kWJfcyhPJQBbSeypj0qw6+1uUnFfIOc0cRnCikV3edJO1M88WS0U+r5cpIHmZ/TDqeoXmutzP8hUiNUCfVVXDuoMsgDSBl4unaXl9sU1FFDONHjtr/g4lQH4W6O5p6JNul3ECZvXFBn7wy3rBcLGjOWT7rBOzoewMKaFBKrZ3AQWk/gJnA4+WiGErO1U6rvk3oPv+WuBdMYgBPnL+l6+V9SmXiFCzxGeIjTv3ZX4rdQq9kgOUREt0hGe+eyf8tE9ffQZbfe+ELCQVaopKdQlpG/tvjzoMpVXWpZMztzKX8vOrlgV+2XXeN6ye7CODrJpuysZQqbZclCierkfoc+yfrtBLci1Q0usXsjOcGdzL7tmqgiRNg5QBHa+pcggAf11HD/DUomsDxaeOhDScdGh2F5wjXweh63T42Td0dfn6lwXT5bW5jQYCiQWx9M9E4pjFtvllfFviHphI501+ebKWqGjkNKa42y0xRwPr7dVPcNp6WN1vnis14SXlqG7In2u/bpcg0tvfgbVNJZCqN6OZ2BKQZ68PxT1NMOu6M5KSCa//snErpfveqRDg1zYDrI1sBlu/RHqQZjlTu8LXVC+K1QKwrkxBiY3FLNxbfDo4Adx3RZ8z954EX4l/GG+pyvBtz6d/Ejk254jvLVuGj+GSpO+ZxcGfm9NIecjeu9vMBnEZ47oqtrVnJPghKoH9QKThz+LTwq24RDa6qNvcP2ojIevVW1H/Nk5heQ+B+Ws+/7uxed7ViCHfBXFYZI2npZu2OqWOKRwUxLksxWZI81/67Vt62VzhlMPbDVK8NlM6/ZcO9TbvubA4CCO84QvYWmaqlPFhr501tzdyxaLdofyLYF/jNnutxny4ec1hWwtNq88JlJPwsXeNPgmm6URqt6EZHX6HI7IhyZ0uhI5y1pdXEM1KPYAIUd9h0973mw00NvpDjkToxuEyRJfe21zkZAEA23v5YAmxcvtfMdk5ytfu4sc0/pzDyB9mQYzUV9Tab8278iPJRcHi71+0Qzf6Ilj+MG8knOqvR4p7QLXF/fnOYS3w4n3WbDxNKNOB396CbLrBHeZwdejXxDR3wLJ0gyqFiRqXErEI12T5ZxIKPhk3f33nSdq1zj7R+cOqEfc8R10vMQ2UKc+Qfw6fYu8QIs8WrzoQ5nNG4cL6rk0mC3bwKaDYFOBznCqWIV7sz3hw4JGVG9cMEv6taXy/Tk6wachovYtPl8p4PfmWFhGpiXM7WwTc3O1Qc5yslqz7LfZGOCcH3dHGomjfDN8+OCE7WiCDN2Pr7UzPNYU9iq0Ea2/xeisF0QzPNOtoAu/n6MIpkVcDe84sdN1kbCysUEE0NzkhlTaRiTmgfBvtuVrClN71LUyadSWy9uss9NEIpDsJpyPvnDOfV533JzAGTScpSSIXQi0zgqTFrMuEOtchA94gD1mvSbUku9xhmzVCK++ViPMc0KbjMAAuwWy5Bxvh/tQK33hTdJKu3lUIpqwfJ4W3Wx12fSKvmnTM+w0F9uFCYJqToKTbJaD4Da7wVTuE+Fj94v57uIprqB68kIEPGgiHllNGj4icuPHvmQu14Z3B7vC6JDl6Ufatx04wFT4Nk7MXHTgbGlDmbNG4VyeKoBiBS1IbG7aT49g7zm6ZNVuTsKmSZwN1sa3NAprbw/e1pybvDEnJClumkwVsGHJeeRj/sXbjsrAyfNgtmoauYn3zL1MV8AUj5JCpv+WE/Z5E3Jkh8JeZ9MFfXWgvtMrAb4cdEKgJy6Jfag0me1EMPhcVY6+46Xso2S+ztMczfgJjhD64WSYef1ksGJEp+57CaH3wDXICGFcbiG7XjPXZt6XXlUhnSkrSWEF4q51NjPM0Lgn25BBpaMYagX+N2tpR9fo05xXbvdo3W7L4r193DHd3tHQ64LwzHC/ontECz7WJy7PztNYBIEIhaH0ChT0nUSbiq49JqwAdjl2Gbq0fm+DR1vebkF7zq97fPerYkehFIP45Kyexa1mVbanpGgVxiwvj8WOMgYHmAigW7MtYrXz1+pY4QN2iw/S5lDt9oD4MnfgNB0BKSZbd3axjpR6KcEMaOhSDNExmoKvK8ZKAMfQuROFljz9ZhcyYlXWqdUA5azUVR6d8LYj2RJ0fTPsmEMWq+y2xXSJ1hBs03V2R+LoVMfdVz1kIwLlzQhnXm2gqvFM618oZEtRRBOO0LRoZ3M+zD5ugYjSe6zswbPuuBOj5EzxzFZid/45aaSCbE5clp64DUmsdiEYbSqphKUz/zSbiU74W+qSODd3M/t3YVksTihhpmaJnF10yC2ZBQFnipLZftfn+58RirWBbGJW3HNbYx3Z382WtAhrFPVWIqV3HQ1HbV1r2+UroEqSviiSm9erXWwutqyKAw2+x6pQUdX5iOaOyo8aDjNq2hgjiSFMahpNvBVRMlJxoGsx2+MLa9ge4aE+jaDjafBVXo0WIrdbkuwUmbA/GFR3xhp7s6i3nARVrUe4QSztzH7MIiovrbYyzZq835skYEEF1jnocenOgpd+Qk+WvuDOpzm8arb8lGKVco1u1nLK9oM8lGhJk3YwHwRXQYDJc4U0EvGIZBrjydP4UT2vbd8h0dIymPeIEvMTd/EoNwzHBc2YSt0CrnGGscSyLI5gduGgaY/TJ4Vw1SAUxVskQMuyHMSH++vF2M6bcA/2aoEUJF0+vgUCg2wHxJgPxYPuwTllKWBoS0ShaEqapZEsonh2owqBsxMxIJikksPWXoRHnI2CKNMZtoq8VrrWWNbKqriS67FjP8+ETxRxx1e58YPXN02dL3ijnV2f2xsRL1cxcTYyMUiC/Nc3i/kiyBfXfspu2J6A//46xdOhNt2aEE5oCc49wPFkhMqGkKKxWLAhnKEs5wd6G9TXlpGcB6cxMcGqy+dP+WSxeq+lLpfn/KXxw7J3FI9tQNCa49bC0Fooz86v7bZISHaNx9lRKR/Z/WQJIvIg5XL9UIsnLCWF3Lq2IovAoADqc1vaN6Y0hzRNQCAymK53AjTS7kdcP6d9Und5KNCPip4LuA/k+k9bWifhNGAr2ekojxEAI9Tqjro6DSUEIRMwjBO9T1PhSlSSBsImvmxD3nILNn3h6FnSeK0bUbMfe/jLuB7UBTFuGw+9Hem6Hx8snlIldq5XlTRNR7Wjapqq2PIjVuNHuMimd5JhmPzm17GnGCL5/XTpqFeoIXYb/FqjsXi4FTkMmk2WK7BQyV+0iH/e2bxdrtXetpSrVnd4qcEm7ftuLusxvHVLIjieHpOwd+8SnqOCdKi5aMy8ks0nUd5ak8Jgh88yL8wWfkGiVjZANecqCGxNV0AsfBWRcPJtmFXGOlYHKxTJf9yv+1Ibu1r5y8krRaDFvEkA9cSfY9JHO4Zb+rcgzclI9rO8hkOU/CTZVF+SL5QS8Wd95U0YsZqDdg/bKfi3Q1qXnJ/TaS1zNV+YR6W01Gd+zUqbUX3ww+TRi2b6NixqqJ76JfQOG5pbP8JJpwDCzY4W2J9r0YfLWt+RGT0Ees37fQ7zCcJ6DRY9fVmdAODYMmtNp7fcvDGFM9Z349JNZnqJkb4j7lmvSluVA1UsaD5TNyEbC7+/LtY1zIkoWEVrD9VlgUivclmq2MaSSyWnHyskOpOI9ulhbdAiJq39Je01jwZ7+xK2mevyrJ4ZCpxxF/cnKgmkoGvyB51bi8C76MxNq8tFl1oYCfMHPfd+9XgJB2LPbp6lrdGwhAuUbkTYePSB7DlRhc/nmUSL5rBFk5LyVnABQUue7Ni3UW4uGRDjc54kqJI37kEc2YclKnlIY79U+8IGFWe6Vdvml9g3tdx4UEPY/Fbpmpu4NyfXDi+QQKlR1nSQlOk0wJt5gQwazHHoGpGqTnbzuAisNrVPjM0+927riHBXJ3DUNw44YB8gPoiITsz2h2QSb7RA8hNlqob0mF6oH1RcTAsxldguqRSyUMgvPhSlFv1Y+1nlkOuSa6p0EqHIVNtARTTXeE3kyK/bC03fhVjyXL3Qgl2bJBxHs6ZuSwC1BDEaOfaQL7V+3EmPX1eO40pCCj/+e3JOhs313P9iS+qJboonnRRxdsFS0UkgUnqADi5XabLYv7pNtjF1UxX3uoFR9RKCcE7+JxPDPvn1DSDcjFfdayUNGNXIrE2Sr7FJaMarjxOEFOpGPPcMbZxDoCorRDOqVTFdLacCEPvJhPGG/bmj0mJj6auBY7uNoohgjEAC8IOvQ9FPmEGGisXfAiH76muCXYhgKK46xiN+n4Lk+Gov+BKe0WfXF9NxVlg4T+RifuJg6qRflOcsPTit2fE8XnXq1akdyAh8Z3D3Aa08x3HiJJJPCRre40Cc3evGXTRc9SLtcaVBRrdIdhcX5Riyhp4mRpTcXZBQ+xr6f6syrpNa7u3bZq4bzSbqs8rL8cB6Eo1ADfHhaFhI6VtFnF5vSqXiZWOfsISvHChOJ1HxNaKGkQHzh76+pohUU4OwVtw/+hX1DQw3w6ntczKSq2+G8R0Qu8+grdmb0jIPVKjXPotDuqONqExglvCTfJPN75fhTohq37YvrdJeyXi9L+uN1BjiRLRcDB8wHv+pT2P+hGxjpWX39fuGLu8o5ce+GmdiIgSZWpmo53IKdGyoQd/p/bi+OoWw/E6mpQ9GD8cp3+EVBUUE5/Wdf12xWDOeC24l0JqMELweOqPnaXpHjoqkCh+wrUpZS7CULBmUZLSskuHghiQjsGl/0Ilzs38myR+vrv6dulAXyJcDkheyXBY9wUDos3GpMs4JQAHj20zpHlfxS/iK4c0v/v1JLY5a6keesx5Y/SoPZU3bqpLXI2G2BldnEQGbIq1YC9hXpSVrBNao/go2e7+CSW0QJg01xhVxuIpP9hld3GflZvHGbKM2WaQMyx+/Fa+vmXEMI6gGYcAiK3bKi+ZKpco/BCFfDPsfi6k8WQ5h0FMQlXr8cJptOmLibG7Dg8O8vVXW/rrDdd2wI2tUzrgNr7gWK9w2DvrmBQOzAIO4XDSwzNt2Rc6Xe78aBY5d4dQwOtDu9jpftjhWa6D8YkgOzjqeDs1MkZDy+Vns2Tpbw8XwaMG9Vh5TmoGimFvLY+FTEzYT0reqh7arl4P5HyKi7UlGXvp+tYexl+Flzaor7fO3+nlg8uEuYAkl1LP4NB42A8fCYTEg3XrCade9GVArB79sXQ1vPaQ21GpL/twLcWaXN03dmDJxSBfA/ex3yg/Has6gihlLVXY0wga7+ggwr7357qHML08wAykKzuhssZk8e6UMTgRfSwecVtSqY9MUe2O5y9dzwGP2XYRGNfTvDycvfJ0s0z9mAnbc18m1qR5PjV2xbUNtc5+ItJjL+O4WYdgU4SatGOSmAcl5BDcok2uJHvkzX+jNVjSildNUg5tqm5cZ9rzrQnr7KILIpg8ma+Ivws1ogeOBlSvdlC121nJwMAOvso2GJIMz3vQdRvyRnRsn0jyQji1U7vTexZnGw31GyrSpgWHjlTTssqpcg3c4UBQMfqmLdk9ECbM04U3OkJ3mgiFlqWCMyzJhEaIcXZz9Gfj5KFH7hnNjZtmzr3lTtAuNWU4INnrE2q9dF9WGlCMGuqrFO7dOuLIzqao3ROkzLl87tu2w3SIoJHar0QYFVDj11r6jaK8HQ3b6wwtqYQSsg2G0Aqv8+q1uGQ29pNXDmBAUeTf4xjim57ThRHl5i4fl5dMmZIsfw2rtg9K5r7jvCnWlEC5jSt3bWXmNaEr3EpX1GVfN90PpoKsmV8Y2wj4mK/bCpV+Nzl+xEIdvYE9BZRuITGpYgnkDHobXTtvNj9bcQatoPffn5orMVjB9LAtWHZwdxJS6sEYOBAI3c6UA7lbFisTZVcdmCdzxtLEUsC+YmOayRwidx07hYnxaMo0RlCqrdTbP44vj/l8DGvn7KmCEzh4OVQxKXKE/7BZluw+f4CsvhdZDUr3E+58UTFFI9gaSbLIRJ8bRV38ZunsYqqRrHyMi+uJJhqgqK4AFIpiDEWT7tuKk6yUfjf09xwaM0egkusXSPIYa4gtDZHc5T+pYkSQM0fe5cSHqYqo4xRu4O0xfOVFIE1W9XNxbZP2WhboEmQv5sMcO5u2E3Hr825tNpd+jPELdV1ZK46X1ZhWwgsxmV/qHafK9zovoIzJbcp12QLA6rIl+HozQ7WzLnxtdv0wziIYr9A4H/L9gQQ3TpNsnwfK3JNQXC9Ma/po0AqXKxbjeWuMMwAVPwGy7CZ/bCUu8IEE5uktbJZGCJOAKbQrpxo69fMp8qOteV7qTBPhtAQ2I61Nl5pBYUGsmmLc/LWtJMKX4o2rRiVDpknRvrReFlqt9YgHfNscCR94qT4QMCm6/6NxBpvbSKDVKeMspTytCPjcXfOaU4s7y/l6tux7DmxPIjkSBZ2dBkWW1bpgqopNDYX7KRCJasUOuZs8SupEoUnO54w0skow+2d5VyOMmtNosbP0maX2iLrg/erSKS5iNKoSursISda2ssarZ0ysjMdhbdDxMauI7RRZTjdMdJdlmna5o6jEQvclbN7KIHcpzxyK+ovaiS7NW7ZuXzQWtNivUTsXWibwUFtBTOOsTjGpT9bbrJRKulh298eR/1FALW4lsLkckZasYv0JqPoJ3yejzW9r/PmlPGvGEYfHCtFtsSwgS+dw6sJX65SHKkd0NAnMW0xUH6qZAVk6mYBFudH4RD+omoKv16wvmFIFYYRMLJ7Rpvu42vu2VNB4jka3rWV7gevDxK22c9U9zA5ZobtXLpkmjXkdX5s/neg/Le1yKwB+FS9IbWTO9A1+0an5xfWuMn13I7zNEgIKQR3ySF3S77fw5vmMn/LAnALdVotAl0Za9diZjoMwmMxYman1KDINvkT7rUcm+GWeDF4H/FrHcYqxMk3lIADAmtT+471cziFZAZPTS8mkSJYx/OGD3gdSb+Uw09tpnAx0p+93e5fK3FwmbPclYgn4l7/5HDTkXQgSG741z4gPoD+6jK8/nanKNwwkUzPM9yaacqDeCJ7cQO+oS+lsJn0Q/7gQQS2dCRqupy7UgBwvyPrLU1uAh9pl8XbJskTcj/aEHb3JqhOlmphZzbk0wts0O0xtPmRb+dCy81+2fvhwk4dk4aWzw+Wsfrqqu2hlmsO42qE09Fqp3U+sm2Qgh3QpjimhQK73pubCEgl6H5Ba6pMeE2V5qIo/UdwVsLQrKUi4I+1Wcr40eN/zRX13ptw4hPIN+67awn3KG2q7DTF9E8zHYmpSb1pTrudLhsNiElMKJvhTZyeNBWeCuO9PCGpOSWMDIRK+gAcyR8Q/2tZTvltxj9vJTseHBRTPtPZecwhq917bIEggsit70VR4DyHL+o3A5e/tXMszqcuR7vzL1IO4FZ4+p2b4XWhL6c9lmD4fZTB+efYHciT+OFSiIOhdk4Uj6KSSKjPr147lbO9VEC+X+yDoU3vl1qbCl+tjVx3htfEjzMo4e58mXcNh4qBKsvYlyMOoRVBgpDb6XUgnnq5QqYw5LtlIx/AXeiu15yOe85WsTkamPo2J7W9EaMcPi+IeIi+Fhv9yZfzXb2j3sPsx886GAYZwbZsWo6q7J9eU5E+TC2mBwNcl3BeUEeYYp/B4zEnUlmNXi82GVN5ArsSliEIsOr4siR+aIKaag+41NuBmsXmqR7edIaz9SwwGfU4x9VyLFuxSY11/oB8oUr58kJOpXNceKzrCcmZBEB4+SZO0QYRonLKMREKq1TRWlW6DrTJ31n7SN741Z+SA1w0wkEY9vTQ7BL2p9G99DDCWwa+GVzF4wI0mntN9+Ylno1KnnQngiFJT/YBPbeV+l26Dkl3e5Lt4DofZ5u0fve4HSRAOO0aqgZmW5ENMXsZp2ZUh3FAHBDxdW51/5kD8GoDQzCjZgUdcMHpMdm+geJrQP+GDZrgjcCmV6lbk/sHuUFx1+Ue+VBdWgHFVoj76hPu+J1sCRT2PmjDnieChIvSxcwCbST8ORyc+l+QpsG943gUm1SLvD8padoknm0qsYf2yvkEGrHkKyEe5n7Wj3azpJQ00ljuXnkqlB+unzUP62LN5G8UNEnNf/GwPnZGxcabp+eOIYppyhp0uobwQ9SzdH3i5UFj7tycBakoApbher7ipjCfSH1vKDkyjGh70bsr4a0czok1sht2/dyWXGEo8sM53AV9jL8bRPtj77XbiXKpGfCCSsiR7LjoQ2QGGNNqs2iI+/N8XOvRm1XPTiVMa4JzjsKwjX5AaPQu34nLGz5QsxlVJOrjN7nMuOdRAFONQ+gxAYGKw1fH8bOprdSLdK2ctIYtugl3RQNedCAaxJUX7L8lN1BVTXm04mYaw3mR+2x0WphqV8ampCnxH/MKwxccBFrF1la1BwhzgPf4+UkKekODJZABmmto5KF7T0po3z4afViGc8Di2FyL54MSpBbH/vaLnCk9+2oEIED7QTb0KKTRB/zJaClmw5UajssK1Q5furCo3ZkmESVfNVJp9+EAEC4/tYPP/HWJ2vbFUs64hKDnz2DHc6pUk58uDd4KmwQnC15emXtT5s+BFWIZnLr1ctTzB7q3eccPo2Z8g3vDVeWkhmHu6OJ4xcmrrJzjsUU6ed5tVg2/SEuPueMIuNMn2Xlls/DppK3eRuWn80qtVKf2jjN9v0mvNuwOU/V79n8w3cNL+A19tLS307eGSJmOkOP5R+LNE3bQqevwUUb1XweyHLV9aU4lj5kpO8WR02bwuC+gyPB40F5o5ce281gmPQaOhTfMXCOM+0gm63c49ZxRJjxjawWUIczltA3RvIQlIM6aOrZyrVXYsthNdbO1QtU9G22PjZ9Bh+wRrWWS9WlZ7PE5USzSgfLxt3so/AYhxfTtwnW77T9auXD/nhqa10ugTNoj6HkIA/R46U9mHANaAnckTB0lpbctv8BJsBDfGFnjE2rcg5h+i+fL/gMcOYyczt5O6nauWSNtKV46hrcwJyuGloPfVLU/TusiJ0xTl/ArmKUheHDRbL1XtEGLNdCa1Vf64O5GORvNo540fhynY9KsPBEp+c+TJQwPOdXbmpKkvf+GmENXDelYZ7VCO1YL7iejhuexylTKycMi5jaKN72XXqLfU09ZKmLLpBYnENQugBMHlePQhsaF5PnvgqxAkykKexT5zDYPZjKgcYT1siFNTlOOhKfE5ZTwsAXo9nvHajdWmalFk9U5AOOL1iQTJ6o7ateGg2DQWU9dp/Jpc3281aE9a7gTp1WemRkomFi503uGqq9zlu5hYa2ZVjzxGhvLV2g/oCvoSP4tdnCIcSqcPpSfiTR36sMBmKQAAM+NWH4aJVgbeLrgCg1cx86N3KniP7iXjGl6WCi37Iieyr95d9psZg2Pq3iXyKb4bEzGBJ9fIRuqS/C6Q93Am0WFykvgdvi2ce3YpALSXDK47RDPzcbp/JpCGORQuVYdk9r4k8FscQ3qfId9kW9+82ifOJwoYrsO2C2G7m30PSDuiL+2xIhszL6dQTRnNDbYk+lA1yXuvN9edTeCSN7ACeDFNVWOkG16HnHbF9VIWG42umd70tIxo+TaFH5a3glJRRmhtAThDPpK9CNdCPRF3hYk2adaHMmI1BWmsSPo1CT6bNpEVevxkjmqAHlQcn9c2WzfS219OuQOx+1JsP1OrQ0NVgCUpELifbkhjIoTBQnWPRUdrugw8eOZAbsV4+lfeZWrPMXiJtCAkiccS2QqdmwKVisMpY5YQ1dPX8sYX782J+igGktf3ymw9f/CUqlzyO/OdSiJlO8Lgs1Bhv6YNW6NqSbglUp1ASvryL2tNHMoPKFOsAsuTMahiNr2Re2T0vE0eNEpBXEJaiqHDmAyOuP/yX6k/Yws6whltdLzrQvJWr3JWNn5/vlFerF8Bmyw2HxLCz67dGv6WkSltmsceEIE9MiuMJ4+v3fOopkoTYeCu8Io82W2WCsLYbvkaBTeH3+1TOw/lJ2qej8EjVIXhUZMHq5DZhG5R7z//0MdLuKlo/Rs6oA1WG9J507rp5WHusQKPgIIjUP3cxNw6Z8aftGg6kjNNnno1CNwMcX9ukUfaCwx07nmcW03XQTLesf+SNC4RxxdgBVlbjD/W5qmgu/N+S7TLzzysK/HkPWayEiH1S4F/ukeaN+J9u4nzWU7SVq/SCe70m/cCmEtDTMT0gf3DvFF3GyLDdpexoaDVK7irpVGJOlhJfkhLThB5DN3V0D9pAckSliBwDLShqBYXOZZV1tp/2HjE9Aw44KAU9lfUu+mOhvPD3EYQgqeVGmhPiqy6xDCr8Ouq/oinfZFrDamOhpbDq+Ae6J9YyQ5EH4vKMtmkaqDsqZJcxikh9o389rSjIEBWds61TL3rMekZga1AUfvoorGcImB1rHf61YIwGnuLcItgQlxeFJjgTC6l+9hAnv6jVycEBIUVZdAw/rsipiK0ix6teGkbHX4ndyUvADxYKi8PZDwgMOhFg/W1/loFPlhrfkeYCHSC+FV3mq/cos88ARkt7ngYJegub+/W2nDbvKRDUea3qu0AtxuD5w01p6cK48hyOKW+UmQQVBu8z1XcswRAZ70PVlMBcfl1UIUz3kEtFASTbvEka+rCTCEt7U1lD0MUXwXwSJ/nqHSWvifCjwJKLqjG1Jn6QdeG5Oar+ZD8BmBz0JxO8yNYGJDDEB4nK8D0uCUJhoy5qezCWWvtdsK7wxuHTJj18jrDBNYUhejOaOiojT7oiBiMFTHhqxTZCE7N2bw8MvB7D3To2XY/6U8zvWXIt7FJIQUIoJPhJs2O7elPtu6/ssBikvzylkZa19Ch4OitqoQHGrmiceuIzJuUO2UdxsdZI4JDmzVLMLk+/tKJqdC0cn1WRptWTfDTQnL/f7H/dk+n4cpj5DMmQ8nNAG9+1lFPH0zzwuINv5nOdiSk1jQSSbzg7N+WBtY+JH8YHjm0mq1xzbBDysRYMh7GNhdAZb/TKA+QbO2xRrIJN+HHgEqkU7VQipSfzI8kRqacDxDT4QlHKDPIu4eXLyXeZSP6Nxo82gdOvEzlxBXtf8vw3Dw7KvrYkM4rhiDyFpTai3gbzU5zSY4kIT6vgcvkCEJpvGtk7J3BlyeJIwyS6dF4+enKF2MhzbLuYuN+7FgFfRPWKpVg+lGnfEm7Uq0BdBD/wjaQ/VM9SpsCDBJgoqrQnETlDpxwSoaC8+aH6FFXOEQEYQ6Is3JFutL6k5T8J3JC7A+THKXQStO9PzV6SyJMZBU2Mzr7RjDiYK0C69PCFkRorRzwfXG2yfxIrljMUWlyFKZyNZlTHw5Rlg5sPOJWug5vRwA8WslUho83t4Hk9iK6ArZDS3SLX56CVVu3HGa/uERVyzRtX1R24tHEpk8MUl1l+lv5/AjgJx/ZP2C578oV5apsunveomjb9J4Y5drIC75QhTaCMK4xctaAqlG9JTGquwpgPXjnfYWVUFsBG4xIIH2dDrKY3ToEMS3kFpWLrCK+MSvwjy1Yz87LnEAe5MUnKDeNhOcaZG4BLTKeoBIaySfKcfiX07sO4BS2lkGYEN13+HxIWw5RWpJPBEB761OY9l0yWQpPYlWQlzUXApaQZ134E75wwHzykSIjpGiZmQrcP1w5zg6YcW9Fu920cM2ydDW6sCxdftcQRDu56AqnrVLnwtdYf8PDa2d1r0cYpyooIxaiFcECXAOYpcN1Is+c27qv4vGiGL6wQJ2cgA/t7ybJGJpIZ10X8iU+0xni/4EOHRvqL6ed87H10e05MiMBbuJXL2ODh+wQ9YU5eiKTxgFr+0qurcMn/dkmUoj7iHzY5GTh1LZNRjQN3/X2Dw1hEmcJaNEiIeUj/DwpJsMOI6OUM15OSUCs/rjdZwqY3pkZckpqjWwL8WnhSp2uoPf4xEJfsbpV5Bb963EFBjtn98Rvueq10YkzEv+mHXgjw5lC2xQtN5SgqgOVwaDdnl2utzPb6yaAB7nqlGlBibGCDqiG1iJ8okR9keh7HtLuoHCQ/XsF4Yl8uUAkZw3vdGMizLxB26VGIq0PWNORjyh9VMunnRfU+YsWzHwMLtxSVIO2AfV5Ygxpn9oJZmAw3XlHF/4Bz9IOmBZm9ntVn+DUpg9OmUYetKAKw4aO2lIpGTG1celOq70cQAk9PxkDKvWNmqB+Q9RQG/M/gRw6AOBo+eIob/VgwR6/pNOYcTMja8B/V5Rnh9sb8gfrOiYYrgYl7Jk55QgfaeM8kPJVPcXd5yW0WSbgLQhMVbOJ8lgl0AV3QXqd5RQMbXP5pQw6xX4Erk+YgjWVVQciHGpX5L0Ph4wDLQDslLyILjs4ONymjHqjBIJTU04Cv/CSbWhaoABrmO0aT6hwwtI9d4E1XH1bJI8tJ4IoELLyIVbOMyWztHCDEGVXc8Nw3ohDlY1mH+GSLFzdtjhS+HGN0y5Bc9qvSFRAh06NVod/YZlAJ8enIkFV9gS4JpW99HjmqzScFlcf/dmtJOw0VYSa5oFNndIXYTOF7yxGzQVutsWkhBves52wTxwedfQ5ZODtRDlVxV88cvnEVcWaO0+mSkFbcdgTH8MlxhXGa29NmUA22Zjx/UlMFrbpe6Fltwc0inD7nklF7E2odan6Mh2O2h9F6bcUuMASV+IxVPNUtHeIbsG84Z/jpQIYPOMDpz//AVSZPkWbv4gHRj1sgOyI3RYwLqaM/HBKjknWvu5PplYQsOPW9LRNFBrAb/sJoFW8LXfB8Voq9srTpcgP1bIflzXmFRjgGCRbqWyQXcFA+iG8VygWg2jDCq3xA9a/qSu4dl3lOa7ppi9SwJZJj94+0L1PD27u9IgsRl9s1u8zo1UEhyhe5eOOM9j9L0iTfpmbzmnA+1fDwzk/eK25ccdvz+ho343AJRHHcm2JI9EJOVtm5W5KZFuLaktkjeK3h/3TlSasEIQDitjRrEn+ZF3Wt+riFsAf7NXedZCr7YmyIJudIaS77ECXIcjAV/enwHLbPnL2kTbQi82+B3FbufxIpTld1ZykJaUNcw+qLDzaObKgGZA17jMaTlROlwOFEAqAaGtRsUkiOEuvi7tuW3sP3lZaZkT8VGITEhnM4R90aEbLwyPPQx/woHpVxlOzQPnjLuYDM3X8NVKhovw2z/n6czdhtoaduL0XihEJJHimI+tb7nlXWmvjBYoTXeWONjhJzWJEAS6wUtRS/iAawEcGZxFeHuSIaeXMx0WFZLdFX5XpqmItAIQDcE8chGNMpglolPrq4YX2rUNPnDa7oNAzjUMrdlHSGhB7R3fqBdvc5R4KNAVeKIevtcU0410kXpjXl+JmA2Nhopn7g4gdKJI0F8Bsd/odJr5tXPtVQWWH3AjTGUV+UB0l55yBpQ/lO/mQvCKieA5VyGkPDjGmZUUQ2FSOh1FfaLK/uhnNXjOCORsWqLlkHW3+/KTOQlQCEhWVtDr1/ZOsSJMZZPiSnuPL5IQm9ZaYY0Dl+7knP+nOhF82rXCIlV5pR8pBCXgQImyYpHeWlPiPyHqTdvxfWekc7y+SDCrXFjWFMA50gV1ZbJIvhg1JiSFl3BmWhUA8IQAFvbF8GVQvngL5yxH+rjdrCnz3+Ulu7vKTYdmogqoxiXcR1hbN/hOmo9PLdbFZXBYv9p/6QJ3850XnuqlhcDDQiZs5y1sNUNuK8Wbear3QJbNLW6ezgGbmleEQCHoQyhiVforzK/dLxGuHHzbXgY4n7K/sJatVLImGNgD5iJvt9bDFyFo50se4AhMiqcErEMI7X2eXW/oGeorridrhOhXhoVow9J8zeKldQkwRVkDtDs9FExZrRMJVCM6hK1njA/Ne2O12TvNsoq6avSmEqoj+/oiK57l+vUVz7JsFUStgB1YHowm+r2UZTsCiX8KTddvOgbjdG/JXdhkS0236CHImkfPHMHuqo2zKKIiFGPn7yaJoEEBSdc3Q3gjjuwkAp+Z9gaOsMrSKBiId5slXTl6ItbE52prLq7f66XLhGpUWyIPkv2tcFOgTFB/kr6ZLkDl+egDrOVLKxzpl1aWm/7w9SSSN4z5FnuH+EPoqggHMgWJuTMCXEsDs7fU3H6AJlVes9m06yk1IJDd1S2D9KPRwRsuXrZTL2UuWk2gQwCK3JrmndjxCZgnQAKEad5kxQ2E/A3c2tqLXqVvOGc1Z1jgTuCBb4OmedGZ/SOiSzPyY7MVk78T9JCNRWxGzeEKou6/TcxCXAWzwb45QLdBJeZ+QMChHBorH1/ulBVeSUpiiXtv6blMlewyNMQeukHN8qd7K5g/jKMkN59Rj0znKTLhV6Mt59KxFLtEdHwpFZV+ohizyj708aChr/vK7LfuoFdZuFWGbOLkz33HxszURk7GFo/rWff1wgyzJCqoL/QATMcpU1deTRRdTO1OzLhAsv1YD8Ggf1FTdsY72P/QaJOz0m0CqISs6IXaYkCiIKHI53waHbm8tPJdvA6dpMpth+DJXzmlke1B4/HJ6NSZU6bMKhNtu54vd3eLZOfZMZjQQuXJvjq5IL4gkLh4+i8CdJjMt8grHXv7TkdGQXUW5uJaPcnDTW1ftimXJ0a5IKZW5kc3RyZWFtCmVuZG9iagoyOCAwIG9iaiA8PAovVHlwZSAvRm9udERlc2NyaXB0b3IKL0ZvbnROYW1lIC9SWlBNTFMrQ01SMTAKL0ZsYWdzIDQKL0ZvbnRCQm94IFstNDAgLTI1MCAxMDA5IDc1MF0KL0FzY2VudCA2OTQKL0NhcEhlaWdodCA2ODMKL0Rlc2NlbnQgLTE5NAovSXRhbGljQW5nbGUgMAovU3RlbVYgNjkKL1hIZWlnaHQgNDMxCi9DaGFyU2V0ICgvQS9DL0YvSS9ML00vTy9SL1MvVC9XL2EvYi9icmFja2V0bGVmdC9icmFja2V0cmlnaHQvYy9jb21tYS9kL2UvZWlnaHQvZi9mZi9maS9maXZlL2ZsL2cvaC9oeXBoZW4vaS9qL2svbC9tL24vby9vbmUvcC9wYXJlbmxlZnQvcGFyZW5yaWdodC9wZXJpb2QvcS9xdW90ZWRibGxlZnQvcXVvdGVkYmxyaWdodC9xdW90ZXJpZ2h0L3Ivcy90L3Uvdi93L3gveS96KQovRm9udEZpbGUgMjcgMCBSCj4+IGVuZG9iagoyOSAwIG9iaiA8PAovTGVuZ3RoMSAxOTc3Ci9MZW5ndGgyIDEzMDU1Ci9MZW5ndGgzIDAKL0xlbmd0aCAxNDI3MSAgICAgCi9GaWx0ZXIgL0ZsYXRlRGVjb2RlCj4+CnN0cmVhbQp42o23BVSb2xYtjLu7E9zdHYpT3KVQLECQ4O7uFKe4F3d3l1Io7q4tFIo7lMeRe3ru/f8x3hsZI/nmsj3n3mvtJDQUqhosEub2pkAZe7ALCwcruyBAUkmdgxPAzs7Fys7OiURDowlysQX+bUai0QY6OYPswYL/CpB0Apq4vNqkTFxe45TswQAFV1sABxeAg1eQg0+QnR3Ayc4u8J9AeydBgJSJG8gcoMQKULAHA52RaCTtHTydQJZWLq/L/OcRQG/GAOAQEOBj/jMdIGEHdAKZmYABSiYuVkC71xXNTGwBGvZmIKCL53+VoBe2cnFxEGRjc3d3ZzWxc2a1d7IUZWAGuINcrADqQGegkxvQHPCHYICyiR3wL2WsSDQATSuQ8192DXsLF3cTJyDg1WALMgOCnV8zXMHmQCfA6+IADXlFgIoDEPxXsOJfAcyAv/cGwMHK8U+5v7P/KAQC/5lsYmZmb+dgAvYEgS0BFiBbIEBFRpHVxcOFGWACNv8j0MTW2f4138TNBGRrYvoa8CdzE4CMhBrA5FXg3/KczZxADi7OrM4g2z8ksv1R5nWXpcHmkvZ2dkCwizPSH/ykQE5As9dt92T762RtwPbuYO+/gQUIbG7xhwhzVwc2LTDI0RUoL/V3yKsJ6bfNEugC4GFnZ+cT4AYAHQFADzMrtj/Ka3o6AP90cvxhflXg6+1g7wCweBUB9AVZAF8/kLydTdyAABcnV6Cv978d/42QODgA5iAzF4Ap0BIERvpd/dUMtPgLvx6+E8gDYMD+2nscAPY/Xv88Gb62l7k92Nbzd/if58umKvdGV0qN6S/F//jevLH3AHizcHEDWDh5OAAC/PwAPh52gO9/V/lH/3+0/2lVNQH9zY39d0F5sIU9QOAvCa979x8Zbn93Bf3fE8MA+O8VlO1fWxkIoP/d+e/YedjNXt84/p/7/8+U/7+2/6PK/63z/5eQjKut7Z9u+j/9/x+3iR3I1vPvgNdOdnV5nQol+9fZAP9vqA7wr0lWApqDXO3+1yvvYvI6HRJgS9t/thHkLAPyAJqrglzMrP5qof+cwmt5WxAYqGrvDPrjrgGwcLCz/4/vdd7MbF7vE+fXs/rTBXwdp/9eUhpsZm/+x9xx8vACTJycTDyR2F/bi5OHB+DN8Tqg5kCPPzsbwMYKtnd5TQG8yvMFWNg7If1xorx8ADbJP0x/IX4Am9RvJABgk/4H8XEA2GR/I04Am9xvxAVgk/+NuAFsCr/Ra03lfxD/a6TGb/QaqfkbvXLR+QcJvCKT31xeI01cfjtfi5r+Rq9Ezf5B3K+hr/eR3e9kDs7XWuYgoBPQ+fUu+sf6OmRswH/BV0kW/0CeP5C9q9O//K/ULf8FX5ex+hfkAbCB/gV5AWzW/4KvBGz+BV/p2/4LvvK3+w052AFs4N9EXlPBr73wL/8rb/vfcl+T7f/L/crc4bf7lYjD65zZm/8r4pX6v4RxvFL/vS08r07n1wvpt/u1wu+df21ENhd3+3+5X/m5/gu+SnP7E/5Xn5q5Ojm93t9/3iSvTfwf/OeXBRDoATRDWl6wNxMKsa4P6byrlSB2Z9n/KjJLs6/zkYHFe9mpy/UBDT6FoSYraNPpRiLlcz/G2q40/bX4Cvmz94+2Rvjw9iS1jkefp/cJ6tP7HUhLU3jDk0U/JBqGSBFJWDTFD3yeHX20A22g2yB7FGjyHF350VQLsO/cB2U9GobKV8fDFvbVDmp43yI/lc+wxGrFvAssmaPJN82eJ6CEc2EhRWDEOvNAn7u+mcXKnXwhV0hgQvI9juUq9tbf4oy7n/dar9TkdO4lpCbUJyCFvsYan6b1fvM9VQF/0bu0eNNpPG0er2ti2y6Zw/Y7vde+svqd0+GFES3NpCA9IQEbNI58dMxmu1yiXQlFIhx39tmawqaH/AVfm6kzs0oi6EXFlq+BRx1ZYL/vIbfB6zs8PW69LmO4uhVuSgM5eIAnnBQyt4EWLaJw33LkKRZ/492I2frYOk5TqwCasTRpW1fAjmVWvXvg4bomxec1j1H5uXMFr5kIt8NdRlucsyuzTPvhnoMJZ3M7QiPIFJqmpiCR77XtKblSyEzE0XgN2aSuNwJtxLBEsVQpWRl5bVxNqsgj7w3r938gM2TWfO8Ycke6ixg62sUp1yp/kaipyuPPwixClIP/EHffAhW+PeGKJzu1LSi1gRW+rRAR94s+rOBSp6r/cqL78tSwkIVdmLXcUuMNOoqybTK2fo5KvOLpbH4cD7GRQOMAzi/BkrftjLA+P2WQgkJevAciASvhAeUL0sybhDmPjp1Q+KJd1uxGaR4/UuvVhn7R6Q4cnvgfhkZ2gghRPgsReup/Vr12aYXZLYDCE32pW1pz+EbGEaihXQvp+2FE8FPvRrnJpTm71eCit7+/sB3cPKf7yXhu6kMYbqglz7AfdFDq6CkE0n0wCbGAbJBVQIzf5MnlHIMwl8Y0AWqoeU8FlMIAxAK+IpkjY/R1Dw1x6K6wOx1HnnPgpZGylFthc0wORhar7GCjBrjTQ//0Z1Eintds5iNrtkZ0ktIVOUPYqvDnlpifbs+qs1YBVMIc8lQq7/ed14s6Bkdlbi1dawd2T/BMt6xXmVzgwu5ekhLzzx5Rc+1UKxg86B52P9By8nobO1gsWKFH4t9OPmHAx4Jgni3PSZUqJt91KMNXXqKdk9WJaWeUzuB7zGTqAn+aETuAPo29RelLRz9M41vrF1P7SIuXyQ01qD84x5D2q4iJKNJObZAOW4B3e0meD67AhH+fTioLapqSXJe98HysNeOe6WjSfN3wzWEqzgyq2EiiZYmJZ/OpxKf6aaO9lnJjuA/XAngZPKyHoBSm4JhuBViPGhTBvsKDtclTPV/1b5OWI/sCfjVThy6HtloPuF4U5YZ04U5ij2KMFuSbdz7x8zfT9AXSV7J9wz3isB0omGCbTD+v78CTlaihQpUb0YGNXYWcmAaJXIacrx8rwg0GEeE6KnEySLUiB0SeYT1PYwl4rnEdks9a1XO1blsvsGlH2DvbS7Hjg+hSWbYyy+r5sVOmXeRfJDwYxwuptynWLMnVoQnkAjQgSCqE1Pu0IU60tgKOxShsP8UqLVdOc1piq3xfZcUJ1RzkSyJ4aHafTPJnEGuDLpZE2MxL1TbF4TPascnMKbtWEKo0Q0VS7k1mvERdjpUl6f1UtLXsk5k4N0AWoVX0YjZRvVnwHe1zqe2c/3YS74xVBi+sASLn8mbTVG48Gbn+lpvWVcaObaeqDw2D9kgrmt1Z+2JFNikWlghtpwnSt0q8K4W4AeePIe9JC8frE9NhPeP8l4l8vNWDCmJ5BxtzxtLepH3gs5a/JYIPxA8PGP3ImUb03GCCE/lUQoPy8lGcjxtZ/AUC94ibPpGkk1UE8idggtw4Z8aKzqFyZpfJI8VtQtc3rF4sehxTdoELU4pUMC3IqPlDU/5sbjwjbRv3ucOS045H7NM2DxCaLO+DkRV6po34ucb78bh9cklbIyO4cd+VZhZHAfH26U3gywaieF3Hr0/weS0+Ue5KUU5JZjgCm6q49Hs5wjb8HfA1QinlfCNybEmFLdxp6ityBB083VWzAXAL+1pNuIvMMiQ+E4xrwTEh0NiVUSbk+w6RaATByhooUwYUtFWw2PEk+0PU/j7zt3Y0UKKaXZM2tdsIh06uobV64krgqBbXrzrGNGJE6Gr8pFfuslyWpAG/hDqRzYvhWtdsx+wRJ4jaOJ9RkrS2L69de3l3PkouRNMQDelpXtOpX8WMEFnPQOTaL3CQKpWDfRV/fWCCOEsSVPnVxDZufCse/G02dzZuHxcC9zN3a1xjhQISWsgblOjxUeoKPZP5WjlcRIkEf0t2PHm1ZMJL4Q0huLRHNx/hE174OdnlPXGXWEfdsBjR7c8fHOTxq2hq6cl0r9xSxg74fDkaBSBtKyRq3q5UB0CS8xZjIqSmGib1YTBlPGzV2SZcvefFvaRLJfwxxbVmbMOoidJMX11mmDOAzsujvsRi0EcvXXUsoUDB5SwIC2SUKDhaKxxHgdX/VT4q7dyoPB1j12g2VX7Oyrp6L4oS3h8xe5ElqtYTTttGnDriUb3/Y7zNC/wRrScizEaytNbCUYdlOeU5mNcx0h6e8aMDE+uNpbWtfp4TmZUL8YevYlyCnMUuy+fLnrTEMukU7sI3juSnaCe1HTKsSrNo3gRl20IZEuzgB9PEajG3QWw95a9MCmnDuzXYQ7y0edTHmY/xwsieWEdUDui3k7XQYKLgK+taVs29FGSI63CC77QVmOH8+3O5XnVD2bL2EQK943OURvhV9wHqGEXYHuE++hRGQ+jd7tImixZ1Mz8/t4DsXrJiubmJ2UyrlV+O6YjSb6DfrvZz7Xdhnl8c1gVWqFhNKkiMpGc0dIoalWAJuOXOxnsyEsPTydu5tM5WC5orU52mBRUmK84SH5ioe+QNUIQ+mVN0qSNDJmf6R2Q0MZ7nwQX27Akc5OFrVA9JmWPbLA0QJZpS1z5on4+ElRu5pHL7WvEAEzbklCOcBuWq5IuZVVrgeem2igm3JzFtCxrIwzKRQl7ClFWOCFaoPEwgEMdUNHMQtPdZOuhbKBSaWvS7PXU3EbtKKQxrvBbXxBdZmwPK7nFReE4iISZZPiRJKTbyvHdalts/rHK0DCqpYSNz+lYShPHdcqJGlSYp2gNQaX7Uk9rrkTcn8Wz2Y+jjWPtkfsGTnvk6fQijYM6dfay5cURBgYTSg6ppSEwYC7goIfywxgUm0ZCqqThy2NaS9vMssDStCv17qimPOfY0o4o0Ik88ap2WptUD4bqtW49AB/F7Bsj7OcJxagfJzIzhH6QYTOP0rUpxiPOdK6qP2tGJKg75YyMuZpLG7fN5O+yZcYP1AdX8PJV6EvRDdIeJERwKGcgMKEQ12MmzImNgMWmHuLhtE0fMgqh3NfdHdAxf3nMvk3b7vtXLr2FqMl8QNTLb0I7mHcZil9YfdmEefcbBJmSoBN1AA/0BKuQNVbO5PGDMT8Qg/jc8vxgPhkPSPLbAXeLkfdKPUFKqL6LteUBqHPnr1WOjVvByrwmyXrko7l1+gQ3VVrW7WJ/DwHbjy0TSwPO2S1M2HulqL8V7DkDn7KC5U7138ZM5SuIuc9KM+IUh01JzQleU5Cq6V9s1GNMb5pBd/ViruufteQwJM+184MohMXntO6Lhqvi1vakCDsU3tRWTWFQKe/WQTWe9l78GzltJHfDx2XEnADgQX3VDFbAwE97y6StKUZoUplxZHMhzlJKIzVm7DNB95hdko4+Rz5HNz12Bh4MYa+KNGoEhDP+IKhzMlF9f5nQDuMvyyFmyDvwiEtHoX9Mh0LPvNSDfTQHzabjZCRMoq9yjq+wgEZnKDaflbGgqZJkASRbLoij4LeaWDbdypXrcAdtkKRUBXXB3isPjfiT5YnTPOAFOuzflnFZaGio3UKzZDIMAbeEOB0VyNW0knY+vnsV4ZJkapqZKyW0T/oj0CM+nIZTWeTDmK0o1ry7FoCUV2Hwy3CDJHXMvJBBMH2K+HJdmP2dPflvyPvQ42Z4TbVd4vaMcESqijmQEtQ8diizcQylevscIqeuqyoDaXErzSH8B4x5lZsB6sGUrKAnko8L6TVrA3VQDqt156A28V/z2QsZoI0VTBqflGVTRwhMObynG1uqEKbyZ00fytovVBB0iDjR/CcpNsG7B+DlHE2QHdyg4IfAtaZ+KJAueskTZtogAviWPyImOkcfEOD2sR2Dj4MtKjrQ/WW3figs/Poavcu7Vgnyc1FhIcuLHyJ6KjGLyHorAeILPUBuwAZSGvpDNMjg9Q70Jy9Ka2JyjduogYcRP/U5cJnjsIz+GKMgsdhJHvsN2RGlk0ergemsTL0BUw62+f0EtR9saLGliS0vXMUMKRN3nSFriyfVM4G8gZkNpX4DTbt+tKblaLmkbuAgMysZgNJLxJSKnEkNRJT6Iaw1ggXs69Uslshvwsz5LzkpEkHEj0R4GkEe+PVtixYB/R6dXcDMcd6UfFJWLHUsaGbHgc4AlQAuf1TWEtmHhxIe+3Ryg1ukHbmEBKPJEqmHtn7AZREF1kRAYJAUFqKi7Akvwn0T3ZQcnkYu9IB5qrFW/1DBb63wLTMZTX6l25Wt0RD3uuLO2s0UKi8rgyqVYOyMUcEoM+UEUC0I8xDB2HeSnqOehJmowgym919JKf1IZE/LzXS1Fb8W8MxcNiRolQhhDG0+9RyW3bO+Gh4W01Xqydyt+jsplwmygVKPxEhmkLtWCgHQVbsFV4FWXTbsZa1wbD3ez29hrwKe5vh/oyG2YwTGsFFGV9A15WnvPuTYyZ/N8jYNN+2MYCvlQCFgny7eYCFssn3oX08WuZtHH1p5wgxj1SE64eZqZA6TQ2PHhjEuSmRKKXYgH4wZwCV7LWseH3zL42aRkjC8r0UlEl6yqi0qStG8qGfk+GIaZK75xbaV3/zg6RAuYl1VgRD+d69aIZffB+S7pMWzfUwxSjgl4K64s/jHmB87HW4uawb31+2DOjdqiftCCUz7fNGwYDUkBtkfU9AR3MV/0Cf+XlpOQgLrw0QIeG795wV9d2VLuDpQVQtbntRIwD1WIX4011N8168Gg1bHOuCtv4T9L1iXY7HtiV/htuMpRHdLzo00q8zUA3NA32eTxyZAthb4nsStZEHkvJT7KcJEiJsUGa7jLgR18perYT+Afflx5Xu+ZWBQFB5RmSXCJSd/Esapj5L5Bg9yE3Q9MgzWb1PJRuShlatMipW50mhZZDo+MryYGxz83fuMxHk8pZN7aZps7M3IS4hEjEhhbOkMXVctSXpTVB8EHV27eZiVYpoU5iHiHzb5HH01nn5ObEKX/0uiq0zVb7OWTqTneuKstr7RbY8G4WRjC248LP272rXrFSDgtS51nwo3FvZpxXwl96UPE/WUqR5B2wScUULjYXkGQwhuL0DzC7B+k6p+g4EHee3JUjdxWyPShkHnElkN+nUj83SwLcYtHoV0TOOJ39L7HmQRPkQd4mllwmshKaVkhqlV1QcanDnMR+cZeMd6/6DKzIjxQIk9xmTISkb7gC/8UdllMFFDOWO4b37SVlyPNW3fOHhA5dQai147vjMPg3/gXcSh8LS9jjF2s7SlTNEhvGYx1ZjSzvBZf8rOzsXArleRfHxvBDglDRRXQdNAX/2CEGTw+DF0Skgfic2ip4GxOCVJTrGjgqy9y6EVtwTMX/8agbtj3YiW2YmAX6iBGdexRmMbODON+IGbv1XCR2bKGIL/jqvxGDp3uGLLhLA5/SFunHDeGQpd3Dpih23HJ5u/rfOc5kZ1xQr/qK8ARedLF3rvnvPwxYhDu1hU28uAK/1ut80ihLKpnxLsifMkLBYg8hkDazV47pUgaYpjdvPEe+Ix3MBI9fVPjF3wOkpV5hYolWMUKb9rYr28wrzPV/e4L7V54hYLjqhDdVHcYsGVrnnb3VQlo0OstDGk+qLgE+n9o298lsLXolLCB38nHEv28kBu63UTu2ywe8X6ypX73BbbsUgeH9lspAyzV/dfFgNqMmIVHpnx86s/xnAeg9+llb7K93GBOjUkMJQ9HDM2YvgcETse0hzTCMgaP3TdV7ysRs7d1ht3mL76bGP0FZz9MvnoZd2nXro1UxlysadB5CVe4vGAScko35BS30r3c8lWEKY/10OV90wwzXcCnflWGlcupkhwnxlnMbW6dUIdF6jxkEi1vUpaY5tLpoDeRxJeA3JgwIseVvPQCJBNjlXEfx91I84+w+RvbX7kOiaBnB9qpt4/YLn1mlNQfWliMY4i3alDKhHgPlB58hnIHLP0uAm71AK7lBnW2F/T2ncsvcHOBlkTpttLox+5JLa19CyFMATH+DlfmKw26tjgfpHRdyXEKcmSR28hMOZWggFWo+5GMwMXFu02Q+qquB3+bxPc0abAGVso7ddx8uDzPNOnZbfTAzH7o9P5gYuvJJ00BDoJT1aQSp5rm5StDTZ/BaVf2dK8tHaUojW8itfFJ0JdgYsh1ouAZm8z7zF+DsQjAuVjm77GD83fkEoULMtlLNo1spu+ud7/Xu8mv3x58hmpBhs5Xw9rAusyGlKqbO7p8tLlzTi2wEm3OMA5NyDWJLVOtpfezplGtDmsd/SyKjtQkq2Obohg4LQaVnh2+13R2/+kGZj2hjLYvysr1GoK2i0wCMowaIyYodo7mIU7A7J0qCqUsPeUGytBO+f3zdVPY9jHs594+nJQZDAivUBiSmNw0JsqkvQDiVpyV1uBy7R25qPTE6xXCplgO2ZXcWzmPqB099M5DzfqJmYrPkM7xLAMOGjFwFX2SDfV5joJIQdACAh5AMzhD9VlvL8k66PB2MU+Vdo0F1gOmLU0q4ydjyiVAIOKwTUKWDadEpug+LUmwUf36d0J1r2kRC8zIw1SGO0trifUkOo9w0zeq5sI1u8VGM3HMsxToA/lu8/t2S8gKFAl1jMLVdWwa9VCj/VAiSuMCvrqkBqvqXNsPEpxMysHmPyh33CBkeBGlrxMNTlnR87/O6isrB0kRk+72fyO3IsCNKfQhxzp7+02UZyaalYf+7fYD7qwoE3xYMBN3h+e8eCnuBmx23NSb+Z8GeuStncnXiJWkLMZPmDEpkckJ5xMJFMUlLD5l1+raSk68iObUmNaxtxXu1UCi3Paq2BN6GlZj1psLVJfeJCRjgvNR/4ic7zeNH8Ac+1YAdLDX9CpQPXsrgAp8b7eHs6FSC/VrOYzAvd9dxZVReeQOzQbCwywqO/1Fu3CuT6BSrt+Rv5bzc9EkJtd5wdeLi0X/+cyrgmDWQI0MOKZRfHFa9K6ohHeD04a92aY6m/kUBcobxQ7LuCYDP9kTLT502n5YB3fMIklLxaI0OsB/l3QSPK+9JMXcnztWw4ARKdyDSPiOszOerdNEDI3H702WYCeptdQi1KLm8ot4N9ugOkp/sxwL03o4o9FHD1qNm3z0QFIYVx84ufQT335v/0Eq1PlygR9yUq7iIXsVZkzpSi7te9tZ3jcuiJN069OOKp/QAQf+s9AFEfIXR0yxmc5Q7BYRaWk04BS06A5vzttAXwvOc3eTBEMTUVFrmc8tdaG/kNJy0sqfnTtDm6cgWi8QoxJH4buftOOjeZKguh6/FA0KMYInTKkvNKrdTqyevrAE8HtOfImv22r+9ZNM5AzkvNobQ+5En82GegpEh+Cn045oe9CPVGTn409XxEUdYShrlX5QapsYG58OeJss1R+yR0ul8QKpS3r0BI3C/Nl3f3uF16Z9EsLU1CNl47iB1aAKK3+abBfrMCwEYjb1EY69Olmev/bFBNE75mPVJoFlxG1/7zEOXCAyae5LY5GcNnV++n5C1Hn+FLW1gj/Q6VwExez4ReXA5NlAo+O22Iah5QFjzAk7KPdrpSSSZnndiF/J+bH5XahRwM10VJf0C7klt8P6gA183aq6XS41fEve9CEHHqU9TFCjYbbfDL2vqkpqIejlSzM/sYiuKdZK+AZjY29mhmUZbbvCA1EaF9a8gUoKZRi2HCcayWR/dTb+mEVKrjihpNEbNi8FeRI4Aj+74dbcGZj9Ql/TOFCSplfOAj3jltTkDwZPJxF/lBb4inGDkPDw0IVmlPIcrT08UZT2M8WRN+FJmdXzM2VJufbtlg8plqzDyRZP3FYJV08T1Eee2Vm2wdraDdRDfaThUkdeUOkXGXoOW+hv5PS2diqWW+DLQE69AlKEJc+fpT8dmFlMsjgyDsEVBeDLpNp7GJi7RkIgHoaSq8opcJhZXSCPr71rDZy3p0OLcQcoOT2TtDvAbAY2TKvylcjiofjFq0Jd0TeiP8zd0lbz1juHWI5pxqkEf6P7Epwep6zs82GmFLqc5PPJkWvisQvptqXwUd5Vn1z14g0kKfdUq0fvVH7eJHFLHbRC/lXg93fh/NaRAc0/276aHdCpidRvnbslQrZsN/djehoVvuxt52uvn2F9fuCaS/3a6Uv841C9We5g7LZk0fwLez7rw5T9vLopTNUMBAI1c7ip1u43WER3S32xcqkQUCs9FurPXr0sT8GnfXVXScUJca5KBNcvRDJyyG7BH144r7hcxrvwvhO6twdzvnM72H6suCzpxqbFulVeUP2SdBDCChD98pPbOyhodwc++hfPBkx1u4RgD4m3PUMGAsUec9r4815kWgAkB4H/idqvfp1MdKhUSlkYqlEIZ2ZhtbiFWsCN7+1GhuAPK6pJd3Yrpu4PtQcnKdcfed6JnEbtlrwrfFYJU0+aJyTLnRwdsnesJZ4HSyL30s4g0jA3tIf7IqL3BcCKFvRjPmiUF91UYXq7YF3pDE9YQdfkmaqtoeozD5pBT6suSFvWzGQHZTJUiYi6x23jPJc3pqoimDRHXZQxuRiuoJtoU7mhre2lLk1Lju1huwrZWqfC0Uvue9I8HrgrmfkF2502fNzevxiRQ0l6Lq+aieb16vgi/nIUTs4CVfoRp2ZKX+S0xZuHLzrufcw17EBTm7A0d+K2NlFZOUynNVXsSBMUucse3Et7ffCmtANxSJa1Qqx9mR9J7chIdXa38htzvhvoNAHptCcHtXeFbV/IZKH1A2U59bSfWh9G2Jp/VqkT8NlYptT4Fz8SyEcX+8tW/sQtcBX0DxDGazdjeZ+hF5BAkBnRe2JCEqoQeK9WmLVz5MV0O8P00dtBDjzDDhnOpkLJZTjeBFfrCIXlwjx51g2o9fU39QjEi88MNE10lUZeCQ4y1nHmCzpxvqIm21ZZ4YM/Y35BzMfVurc0pt6XKCRf8ZzOfqSYRbcFhJTt3n9YUlq0UszARijYVKB1HYuCB8AXWMU7SAIGn+HvtAL2fMKCES7j88mMTX6eYKIxiruk4TC8lXazdQIZH1AYWIAJghBWOrDVjBjxwoanaEqgxjZd2xo9cs9oxtFrna1Wxg4fr5Rdi83LyzC2ZrK1H7ISpTCof630f/PBAbUk3jZVJ/vJE/hs5QzRRS9k0vOHt6lGl3hFruThPN5psQ5HyDpQXEhBFrIFhpUPBwbY3MrmnK+8F7OiDRN+IIbU0BJZXlXTdF2m3Oy0A/WcfM7CP3SNC+gTETNlHTqii188l5JpKKkowVxHsukKaMQtn9Tj4gE+nkhqiVK63hapKq57HYudij0P8wcT79Q30iUWNCcmf/Sto23duG8XVMbtM0mA5JXWZ3yeQY/OTeO04uXpbxU/3KBKNVIGIHmLed08exfOjZ28mOrdfiTe7ZnoZ9MrvLf5aZeW7KVWtwH7eDlKN5H19uGxhvJd6Qs00eMM5rFHmQ8lxJqr0qFAco7sVf92N1TCtzckethFo/RnqFtJhRg9NVkVHwwXdiW6o6TEn5dxOexkr/RQgAVEG35e0t4pngmL6fl5e99sadlrrcOTJnjZ7jrdVGvAeTEHVRxx9NiWewqN+y+BJ9/QyWqg5nPlLpqsJK7CwT8ci+wx4MIvC5Sfcy6DT/fS+xo8ke+fpXrN81JI98qtciJuT849CB9dJ4XS5GTMRPg2XEMarYPwOC4Vv05wNF9dVBqAUD54M7kC6e9tc5z3qHL0JTsE1RXcq/FCctp0cTrJ7vM/xd8U5+JXeWAshQdb1Fb4AEF6JqpCyA7zrCKViFlFvRWWuAJyyeoHe9ElvdnimgKeoYR4W4EtRr2KOaQd88+aYndRk619KsYN1c/x4A5nL7IxBgmeH+9Dao6IZE5HON8SUQJ4JgeEmbchOJAHovWQI5S3irGidpbIA1GlkryEJw9zD7NURj0riamXBNxfzr9DjLZIPVJkCxJmz3FcH/fp/JxZENido0F9z9jc8qWW2RuLz4s0Y5wdtu1OusgTpWz0JzNoWcIkzBPqVH6tym8YJBjCP+sjZU3+JLfnMcCIpSy5gSAToy7ChHJj2N3F996NHCEtRP50pp8ST8VjIgJ0gXmDlXAT6iAZk19IgKFHl6glOPGVRO8Lsdv7bjVJdKCJnrOoXRGiUszkcE2c8F30DLG2QcAK9fvd8V2xEyWbrnYlDzcVJtfq3qklhVQW+7xY1G26GY+Hz9IRQr1C3qZFUYEtEaW/qvmC3B6Q2ySYXCzN9yTIHhGyYXfZg0prP+yMYYTJCx6pa2F6PFyqyDU6OkSRf43tXY+v8jcYcwQxUKRXoNbd3VNy6IWwphjCP9j9HEe1P9yv/nDlPVxJW128HFsUxcsdkWk5vdiO+6Pcy799wCPlBEsy4od3M7eIv0UkVc1NPVu2rdmkrnuHXZ10746MotFuBX/ObJVc3Db7lb02rE/1r22ITi+8Uf8j95m8DGxrZW+VTjrlw9zHM5umGVmz0FHLkZV9nBorf4nqys41WmfDgdwtso/9So0d4EOcthzpT8scDPfmF/mwek+tii3w78MXcYRDIMc+5DdX4PZwdCHMDu1mPkAk1H0Cm0gt4MLsOcuSBjDkWGr5nMlVSME0ygAMdnWDGhGvEjk/EfVdEjI0k43s8rwNm2EbdPGGY/S+d2GV/W7cbgL1yA6Pfdq3WrKEa4Q400tUfy8f54OfTBXKfRZHVbNhGmvbJhloEKdXfwvt/awdQ2B15VWpu+tn/aJw2OFKqegeEzfi+wtW7HxDnnb3CV2fmVyn9hliiBLLj9OffbrQcbECSxWu96l5BTpgkDTlm7jgPCUOuuP4jUPZsrfbhu4nXS7DnjmBTmWoT0e76oALcLz83J5J4Ze38NCmQZc52uYn5V7pDqqYF6lRStLkYolbAfElmTYWfKcRlbZIh19aZ664GCKl98qTOXYy16wwvgXp2R0pFzXzPfPWTlw/wZqoSiPT3JFfRfelzpNpjGzT3Gh61Nb1JGEzBuhIfI9/qfa4CcrRQPdyDLgESwzAc1Cai740oP7Ur4/GgC+orpuzYx3ncZA1//7YWYso1dcyvwVsW/f8QYP/FS7Etj0YdFzMdbhWvR3cHLupuvX6F+6HWoBlDEV7lQlOlN6Xjw4fupvzutDdcIVTAhsIBJdfJn9F4BRfjyQsPiSI064UFqIyKyO9wZV9OB3AfS9H6eFnCzWrsppJwSTB6fFrv+rzE+untzvoSv4mYsNqfp5wUTuJLVEDTGV0Pso1H6f5C1FHdxsx54wOXtzjSeIzgtDWRB4+JC0/52DYClDEQOvKtufXv0RGUlCOdB+ndF/tLUGTCCmNLZIIbXmH2Gb+tIgeSsXWPGux1yutdvJ5h/BpSNpfBaFgzMVGTdXXB4CKMRDX+a0hQMRO+jKbKaKnNfhhbq+B86IiZv4dvVhPXki4SBhhLJYSRPS6RTVSMAycSlYMuvRN06iLgwtjVO3RcywPb/zxVMlNjBdjFwlr/eZjw2lBjMnlwA+i+BXhB3FtaOaGsNP6tao79rrT2w70VhQiXaPqOoCXNgRZWylV+1X/CtJDnU467Uymwq4mhWil1M+yT5W/aqoEpIvo9K3mZiyVnVHx5LuPUZbls7+kgiCPLlyPQjVdaB9jxwAKqhg7EedIFSq5wV+4b486lHFYlBomCDyQpyJ7GuAmRITFpyzbVUrssiA2ZlTCK9dwNSe1bFzaAPmiCpqC0+++7Dk1myGQH9Tg2eH+UowuNUFL/J6DsC3I9pVXM0oO2j9r+FC1Ct6Ky3475uGXWZQv0wkLgEL5hdl0vdxlexyDcpNE7Mxk2zO8h5pttd1LzyzPKWtBBSXnxLjpsmgp/+3x/nDfXi0PHh4ULOqRaPNqbm1zut8bIQaim/aFTnx5Ghlxvbqi9AS0RZXUJKipd2QQylkk9qiSnl4ytxCtLLBBP2i4R+XQ9Iy3oSbm5TxxHisZJ8eQtHA4MJoq1umqpaqbPYcL/ACqdg8e80MXI58/W3en3BIWAt1I+6qJPzZhf7yanhZO01rce5/KpBGprdBVrDiQWYiFsWYzVb141FLFoW2CjMuamECpY9OPay+vhE4Q272IWzQxl7WVV0AKhbkbcyGbC0eu607X8APvncg7pGuFOOUd/icDDSJfGjil+CkHF0cf8ub4jSpJw4xBPmS5npgi7I3aOmmTfESWEewEKNBbKpG8RVHv8EuQo9tZzXwroaU9kGaEu7rzYKDhXoqGRiz/zXEoafZVTQmIi2Ra+mOdFjft0/i2PyHJgDuWtcQRY9s7vdblVRuOWJ6ZojUspTnGQZiNTu53krVXD8GTJLu4FPg3yRvNdbH5b01GtVg765YiN+XyOeoRdMECV8KeAhhuttlYSJMAJshDtK9rPLEJHSrfoMMfCn00Cs9uQzcK7J1o+049hA4RiIfS1vgQThBlK3atvnnB3UYRiEwEeHrXHiByzcOrJK5m1AasIhdg27B8jUcOkS3IldDlhBL6aV047aGcXETzltPVGKIGWnrsko5BOFn1wcgWTb+XnGuijX2MlLAxTVrUg4GEPkaaqCZT3eZ9EV3Z7apnhf6LTg19FSadXECGcryd7nKJBzHIMZx5VWKiYKxSw0rrcA+7KpFVgt5f8NnwyG9hbBNOcluDuqmed1jQw2U4LYzZuGbsfIvTMZe/dalVcxFTe3hK82YUmSnFXUxKMDnIcsrqLD/uW26XkqN6kUI+zD3NtjymE6nhVQhzQEafRecmTl6cHW6WjkTCXKhSyw9WEhE1kVbYY/XgvKr59YYMRn5046riLTK5x+vASZ4WvtLxcaTkr4JD15JTNAltyjv1Mc8n3R2Lie9/HDxdEPnAw9hSqI4uTVDcz5wVCBaXOuTFSpm1pUyaeQ57RnO+W+A+D7THeijQYfE9S8x9iVc98+haj9MLjjsmMzttns+QQiH2xbpPL9XeAyR/RzBsUp10KzrQeW+scq/Xn1+auUZtYMH/sfuptUe1Lt1urJ5i3cuHd1DxBoRC8BZhjRl5RV6MkM7CMADaC9NKROO6+BETiRtCDr81rITXZwAhVpHNEd1JFhNET1zZcM4vRZ5ZPtyCtDSbXO6JS0aple/Q7anHxiiWIRpCfa0oWqVsg4cnyieh45bRn6ooLnpB5sXdvjIUp3w3yeMnp+qcrAA3/y4dgcTsglFu2ALfs0saOjiyfRPCijMnemxMQxc7HrkQtnp7Cu3dF3YOMM7MG06KvYjZEm8DqySsrC4hUfKf01s3E0KVNoIfa/ALiGTo5x+PbK/tCoyMTsh9RDhd7z3Lo+xtgTKWDqWJkTVR8DxWCRNK1OImdJQ8zTVdtWkRNSXr6Obv3GGItJr2SzyWq77d2B6zU6KxDPrQw0zmjnlW6KW2Ey18CZyvtZlGFsv9RgXusMDKQX2DwWb+pPtDRZA1ay4V9MNxP8Zw1pQrz0+SE63mbaOxcTsGhnvLjihyt6fZpPkUkSlMOGjv2uxUO+UpJ5cyFZ73uO6EiT889n6inrPzAxq1GlF5vc6nBdVFiLC+4jpJY5XUMYMGXYsmZGmZgBVBXom1SsI3fH4pBhg/2S9sSfqQoa6nJ9li02vyBOQ/9csQARcXIPngaI7NQp23Hy22qDrnecWJFDRmA0dOrqknE2OVkD4cRi0rpFV7oUwnhlLuZEIPhlm5SzHqzOD3odIJMT99T9pfQpijn/y87tG2GZqRoKA1nTWhVWqDApEFKfqYwrx3GySNqcfLtK+oM6MhNH7mn6+zggYFdFX+dX4KJZ6L38E3k386Vr0R4Yob4I43RVFzev0N/oqvvT9unFRIJ+LFQ5hkN3YJlG/rODzFEY4cNrfkBHrSMqKfs7672W+EPGayvKvvbcReqyv1sMMe8NWgTxCJWsA+oy2wWlwVGk62eBQEvevpK6Cz5FLnw+D1i9gSBa+/d2P5TisohcKZtpn05dPP9T5CVHp9/YGpPUwPOPay0ks8ej5dn5fds8hDEvixXvprGB/TAnow237B2/Ds/ZV5V87JBG77FJ8ksy7d8rI3SgTXeS67HfPnYlgBNv6HHdCzTVIgsRzihLW0C1d8PL0YpBLm3TCmfT1s5I6FgKBChVxqvcuMN4EtZMU0YYpX69P4M1YVxfCGbDGLD7XTWDn6pr74kJ8lImACjfAPrmjOCI55bdtX0gwWvqgBAmMsuKF3SRYmevwS8erRfyacfhAeaRH3peMEIX+QdYKqQSYcOaZQsM5hRkeL6LyMCrmJS1PGY1UQIqKLLMkMhJ7+3IR9+CugP6qObNgTtewTEYEc4vQDJwn3Ae7CHn+Z8pLSEtunIKVw3hGflUV1qoPwJOkSV4MR4VAvnaO4moZrXq8H7XpDitKayLOu2RuM/urOEgB7z0kSR64B9AFbS1EMtTAECUHMlErtcvVe6h4G0OmR63B302F/mPsA/tGvg7p+cWF0TRB+PJqIkdo5mtAKmfH5ZCWa9nuotjZ87WpqxCR+byi9AF+MEtcx/EXldt8ar+B4z4vGZRX1biP6mVKX2Dp9TOl3QgaD40/+rhkBuxWxDbjdWHnKBjviuGGizbDti809L2qKT+RkIaLbJRF1nFw2XTq8g/nhmdPXl0ElAhWlpw6a7FTlmz0YuLiwNkRn4jmzM2nXjz4tX5fO4NTXxF6uCAmG10c6mIqrMs+dCo2ceOv43aBsPkMd1lKOpku5Lvdn/QBAr7JWmQKXVcPJLh2Espe+SF6FMJa9NFY8jU97K7vtJ+A5jN1PAcdaSTCgkxZEX/rC5bhFSbmZayiSGbP8frrOdGHKiJe9HMwxyRhiWMh6d0iYv42Fx9v99BLC9h5JTP9kxJdwMKWxc/3rl/rT0GIuaocQ62o4heHb0fcBzIxMhORK3dUZJu/20ZyYjd7dns71lAqxjW8if83jp+9rxGA/jM27dnE9vwpOFdBTye4kIuTASpbrnlSxeY76wf+s1E3tOgnOghxqY4UqeaoeC6mLef0Bf9JQ84FgKlv5yFw5DfPTY70lvaRvzbV8/c/tYQvohM/LaB7O06Hm3tKgfZ1wz25aSMWIRMVOUNkjjTXupow2bm+V5I1imYOVqmxJR0Ap3liBLlKj7yzVubz3sw7t/ml8OMDp4YG7xNcIrQ0qC3LWcpSPkQ/iE1csVBBgAVKU5ojwobKGWtjXa11gjvPT81uTXUrCYX4erQmDd5UjWsiNDkjGGL72jbbW+Pa2cj9SDnC9B4hGPaCrgs6/OG8LuhlGVeWKsRIx02myjd/P9d5NrkeL+TS+4Mcbu18yrYq6z960eZPwy9MQIlK9KJP2BYkQ8Mbf4eOaB4Ugi6LHpPQFt5DT3REGFIs3WNry0Z7HRGZjkwt7M4CcKJ3GBryMTvobxftC0xQJ2sKvtg9ORUwA+9K+v6DSAVtMnWQHQo1sYUmIJLMXIj/S3r6FQNCAce3DUnjIzUf5NrVbLNMc2L6ScNFrchwM88uYnffSyjm5ZQQsAUDRI5PoH5QQkwvgpWVAmmPcJuegsoh3d5gQkiz/Sfxtn8/nLOrb1BzPVN3SvmADTjMIrTmJqtZl+dn0/gojtzk2UI2LTWH00nGj815PCmqjmsRzwxZ7MDqKGUg/n0wEyZIuD0c2afuyuHUmeWmTL4PMLUZ++K1xxVbpi4h2e3LjLwUegQ8B7kVt51iIX7+noMYj7llH+GjUtczQ0I3c5eWzM0PQaLqux73ffJPxBsxONNsUGeXiV1IFQeun/bHdipDK1e3MlPZSfkd0T9PWmeL84+ARFLUruplkObBrYpxHgh01t0PlgfpTiMhh/KaZINGNY7Nc4EMRZZzx/iF4WD/d73EpWpH97JZKBUrqLogKIEjvsyHH1looBW7s2D742E3wqHeHaciNtqDkruwRJzm+3doi332pVCkuAH0PGkBAMOW+8nJ/g/BUtUHj1Ch7aU5CS2OPa8hiykR1htSzsBxhO1xZF94/41axBaqrCD7oc77elUqdNXrDtahLxPmUdKxpHulU1EbiFyNsfJdIijZN2oZhlzFBdFjdwcSI064BcK0Xmhe0ULUNqMwWwdxPzDkRVeq9ntNv0jzq5OSyvRraJMfpdn8Y9lBd48kw/uSHqlH7BOsHm/2TuRBx3hIY+V6nOZagPIWWXuVqRs6OvakOk085RHWhzBPRk5JHDsmt+udiExVXIBE1tMP9o4byQloPs9hSt7By6U9uPGNEdyxsqoW1nW8enBpM65kIMyNL52u8h3v2+gn676irIQr2bwgoPGqVI5sgo6G5aYr1qcRTi7BmsgJcNviVuOZBMi/K5DScs+9Hm3TcOj/brEPUvP962/iSDkWbxAdAdl6Ndi7aDTzk2FJ0nYtzvhiVmX/62DRvOytw4M6PcC30JajQiU2D42uRoTIVkY2t8dRxsdebZE3s2NEOkOY6o22i6IJSMQ1j9bwa/K+I3Mmd/nnZ85aUA/ZQtCy0G65UuUaIdrPvU8cbIjT4FmGpYeK9kk/3ExXQzV0/eny57NZ2zQyYbzCSVJDOk1jBkiJN+jMYUquFZ1FHHu2Q9/K2CafTv9bG0cP00cib+uDtQge+NBxffoZdC5QPqoPp8EF83lmGiZ6Qedvd2To/mzi56Fa2SlkbJduXTl3jN1mC0HqoyoumJsz2FSGGX5c347kFP0wBA915gHJxc9VrNumpuwC/DvFhn10IkpJGYeeDriRuk3lKdtZiL9NdZA6iVR0Vc8EvujA/PfAn7TDdEI25C+iRZec46OUmOQsQ8VBtHQaC2EOuxa6OQ4+gweit5qUMzM7N7ZyKslwDaUfrZ6lcXMeBrTmciRlHrtr2fKsybkCVNLScxUxM/nfu79mDDIvrRWirocM+AdCr/agX9u/pfctd3EiWO8O4lUcSrMXGfEwVtwQX1t1CdEYOwTLkdwlvRnm5BDFKn5VehgCt3my6Dr2o6w1vzy1qpdvDg+okMi4sRQNCK2OUm5ttR3yUAv2v3AdJzAy3i8cssGK3HG2JbOBVAfDmaZPolKNzD7AnMUkLdPFpCRmUmhwtRjrTfCDSmMNnjMg8bdFtTVEPoNt3JZdf1/xMzBPTT5dGJlQ8me9hBKE//bSkThPQS4sX22Lf5Shd7JaS4Yd/TK/UTgfbn7LlGJtdVtU9IU1BSHKIi5bVQo6hQvoTPfThqu8wHecKvP7AkSYiJE22OVT++Dxs+KDXV+PEmeDYZ0Owwi1kcIZFPmKO5IzB4CNYfSUmT5TpKag2Ma5bMvZ/AHCfxQkKZW5kc3RyZWFtCmVuZG9iagozMCAwIG9iaiA8PAovVHlwZSAvRm9udERlc2NyaXB0b3IKL0ZvbnROYW1lIC9QSEJYRFErQ01SMTIKL0ZsYWdzIDQKL0ZvbnRCQm94IFstMzQgLTI1MSA5ODggNzUwXQovQXNjZW50IDY5NAovQ2FwSGVpZ2h0IDY4MwovRGVzY2VudCAtMTk0Ci9JdGFsaWNBbmdsZSAwCi9TdGVtViA2NQovWEhlaWdodCA0MzEKL0NoYXJTZXQgKC9DL0QvRS9HL0gvSS9KL04vUy9UL1cvYS9hdC9iL2MvY29tbWEvZGllcmVzaXMvZS9mL2ZvdXIvZy9oL2kvai9rL2wvbS9uL25pbmUvby9vbmUvcC9wZXJpb2Qvci9zL3NpeC90L3R3by91L3YpCi9Gb250RmlsZSAyOSAwIFIKPj4gZW5kb2JqCjMxIDAgb2JqIDw8Ci9MZW5ndGgxIDE2NDkKL0xlbmd0aDIgOTQzMQovTGVuZ3RoMyAwCi9MZW5ndGggMTA0OTAgICAgIAovRmlsdGVyIC9GbGF0ZURlY29kZQo+PgpzdHJlYW0KeNqNtgVQXNkWLox78ODSBHcPFtylcQ8ODTTSjUtw9wQI7pbgBHcI7u7ukuAEDxAemZk7M/f+f9V7dar6nG/Jt/e39lq7mpZKVYNV3AJqBpKBQlxYOdk4BAGSQHVOPgAHBzcbBwcXGi2tJtjFDvSXGY1WG+TkDIZCBP8VIOkEMnV5tkmZujzHAaEQgIKrHYCTG8D5WpCTT5CDA8DFwSHwn0CokyBAytQNbAEAsgEUoBCQMxqtJNTB0wlsZe3yvMx/PgEM5owATgEBPpY/0gHi9iAnsLkpBAA0dbEG2T+vaG5qB9CAmoNBLp7/RcHwxtrFxUGQnd3d3Z3N1N6ZDepkJcLIAnAHu1gD1EHOICc3kAXgt2CAsqk96E9lbGi0AE1rsPOfdg2opYu7qRMI8GywA5uDIM7PGa4QC5AT4HlxgIa8EkDFAQT5M1jpzwAWwF+1AXCycf5N91f2byIw5I9kU3NzqL2DKcQTDLECWILtQAAVGSU2Fw8XFoApxOJ3oKmdM/Q539TNFGxnavYc8MfOTQEy4moA02eBf8lzNncCO7g4szmD7X5LZP9N81xlaYiFJNTeHgRxcUb7vT8psBPI/Lnsnux/nqwtBOoO8foLWIIhFpa/RVi4OrBrQcCOriB5qb9Cnk1o/9isQC4AXg4ODj4BXgDIEQDyMLdm/02v6ekA+sPJ+dv8rMDHywHqALB8FgHyAVuCnl9oXs6mbiCAi5MryMfr347/RmicnAALsLkLwAxkBYag/cP+bAZZ/omfD98J7AF4y/Hce5wAjt/P31+Gz+1lAYXYef4T/sf5sito6gEVlZn/VPy3T0IC6gHwYuXmBrBy8XIABHh4AXw8AgCf/2b5W/9/tP9hVTUF/7U3jn8I5SGWUIDAnxKea/cfGW5/dQXDXxPDCPjvFZShz60MAjD80/kGHLwc5s8/nP/P/f9Hyv9f2/9m+b91/v9uSMbVzu4PN8Mf/v+P29QebOf5V8BzJ7u6PE8FEPo8G5D/DdUB/TnJQJAF2NX+f73yLqbP0yEOsbL7u4xgZxmwB8hCFexibv1nC/3nFJ7p7cAQkCrUGfz7rgGwcnJw/I/ved7MbZ/vE+fns/rDBXoep/9eUhpiDrX4PXdcvK8Bpk5Opp5oHM/txcXLC/DifB5QC5DHH50NYGeDQF2eUwDP8nwAllAntN8nyscBYJf5bfoT8QHYgX8j/mef6j/o2afzNxJ4Rqb/IAEAu/nfiPO5e9lB/4LcAHarf0EeALv1vyAvgB38L8gPYLf7F3xmtv8Hcj5vCfIv+LwQ9F/wmdnpX/CZ2flf8DWA3eVf8FmB6z+Q65nK8w/4X/U1d3Vyer53/piA5+L/B/9xyYFAHiBztMU5qLlQsE11cOttpTipO+vumPA07a5OCiOr16JTm+tPTORExi8ZgetO1+KJg13YK9vSDFdiS5SPXodNtchhzR/VWu69H4zj1Cd3W9AWJgj6xgsOxWt6yVHJWDXF9rwfHb21A2zhm2C/KtDmOLryY6rm4d2698h61PSWLI+Ezu2q7X15rYj+UDLFGqMVbRBQOEOba5Y5S/QKyYWVHIUJ98wDa+bqeho3e/yJUiGOGc3nKIb7k5f+Btf7u9l3q2WaXM4dxDTE+kTk8Fe4I5N0XhLfkhQI572KPkdhN7INc+U9KmQaHkWgLShQMRjt+nd72YwpdiJLHV1vRNJ5gELbhvdu/H2QUM7eybRK1qJE7emE6Ml6dAo326uRQRMGcdjM4bD1r7963866HitMFqYRgM38X4xwtK81Rb5/6ZSMj8YgqK2fVRLrw+LqobFQ0Nl+ZpUn3Rvh1M1fJ6GHo4d5sK46LZoou5SXg424rJrK1461mt65lyxiEmWM8qO1hRg3RgjTPvDNbfScjCZw635c+1MRUA5uk3pnftJTX7Ytwfw8mkqzUncz+cbHytZRIFMOl/DoBUHclVf5I7u4V/ityG2oesjxHX5SF922zuzBFU/At2smjy3rqdZ1nrA6cnn3JIcXQ/FvsqT45870uLUJv7ml9U9WPMpTsD2EPEAnVsO1qg2BMt31LA/rB/3NOu3RQecsmjWzlGb9KCZrbEOalkikr3/iMFj8JJNXF4ARe8NYMveQ/4slmKxDI/rjjX8tc7aV6diS+smrj2/O7GX9Mxn9yKY3a7BIyrqMxWGQ8Xo9vkiDyQ3YpK2OfkzVnuynD0WoOu8LwdtbVX1pzeg7WfKQ1viQmnDZ4ZNHYxUrZtmkDFnATN8y/UwEaGLR68rgglYGwNC2GnWO0chv+VQN5GhVsOPnwbXe7lntU7SpHtFBncejGn0DfkQKvys2pCyHX521u4gz6EN//PQxzitSduBmKPIOS9htkVVk8IUAPm7/A66vWCNylDl2quGooQLJOtHw+7ZaYVQetJzzBXfw2TyF3IvCqzQuAuXOMNMraQvL07CoyDxnosxZqTUUPOxxVi9Po0S1ZvyEbXsyLEp/91hZTGm/DQzBtm+ZaN4kgh1GKy+vZN4Zy7vnDC1Y+ovd7234+5U/0L5J/qDzRabNMFS+cvyyl/TuNc5k1JizO9V4ghwRrgqTAHBo6hVcVa6bBF70VUXvpgijZWESxNDHYvJDhMRSDQn4VxskmzthDk/ORigh2sWVTFw5WMPn5U6IX3EekVEBbAuuF3+yKe14mbFipfEitziKKWK+lFCG4bZRTE84oYht3nutGm/hy4JcqPGH/lXXd+9OqZAX2ogxt7IEs/3aAkeOYk3IyHG4PgupPkg1cKefi3m7yIUgkkyRTbgY4tt2aollZfFZcjsYAKVOUDDHpSnfPtkGYpVUseqP2R9KynGKkcqoiKCjX2jSG1Y1nExxJA0vLdUJqM/hYWwZz3dGxc3Kirddn2BixeV/GmxJLHIv1NHT7FrrC9r2P3Gh+uE9M2Y9wIzMxDL5uCCApWvtyVvqZ85N+wnHOu2YdI3PhkXFYzqs4WolRdM1vHGpXbFbTS3Rh/5CV17rE8wHB1/Cohf+8XOJncWPfVPN0JZrh5VxUuBBgFvCPaRkpW/2SCcszKLVkaAWkXUmumyJcAvL1TO4P73Mb/jjkD8LRUh0kXwl+cmXLhlbIYwbdXLeuSW5sm8G3rHHUIQ75JuDV939/rtMeX1BOhkcisNSoZqppeg1S8GyE8MXK5qzQafJO7a3SHzz3TOsuZ9/dcD/qlOxTJdgrILXmpS0lOZnq3khr8PhtbbVLzvz+SQk4RtqHZ5E1U3kaIgEnjqxA7V1yyoSDubB1y1F4/Wwq6/Ay+tFby2pyLXU0tkoptFjpt7Fs84pVQ/79qxKJ4qDl5tR/OPsukOaxC/52tSDJdhd8THcb3W5Am58dYa0o6oAzUFGN9ZS4IMftZ1fQRmUmkJFb7/lc7ZTzG6Ly7crfsJT4zyvvEdYCzRr0b6CH54Bq2+e1vX98s0fHtmBjxZ4oqYnRTIobCjOwlxCdxg7KItT4OUtrUSyegfPFxtgJStXHj4uyRDwfnH6fqk2hI01V+7NBjHKKDFWBH+LlMLaor7ZQo2f7IwHoQpdywl8YMhgr17ftvAGTt/DvPjBC0/kRjLQsraRjP1KhHD+STBlwM+ft0jRhWm2I2zXp/e7Up8ZOIqIVnnEdIX9J7nNf7Q8rfJXD9fuoti+6rq1kpnLaTHHx3N/18ba+JRoQA+fzxS3AaNNBKP+dYv7PudKn/67K0KM2g5O70HokyIRsCbDAs1sJLWtU6AKttH1Y4Szpt6DtXz+hh+FfYihxWrXmwoMHnxcvPKJq5KrD1HCv/KbrrNcm3THhNWhFzMmhcj7a5kV2nezJJ9MaPDYRd7Vm/EtZj3S2+zLEyOxRNCAd6HfeO4nt7va2ZamR7gKGMV0yvPplbVKt0NohYYiL5biQ5g5hKUZS5gYVZMX3+ZbCdvVMs1prMJc3PW7t2boxRPE26npzHgyPYIYAekwXOB7znQleF+TcyWFe4M2qK+kjaL18apvanPGVOyGPaHDkMys6qWJcl/sYqU4QlkADvMRp794PuYjhq94n1sQDHvvODC5EZBKZGjEDkZ4pUOZf2ZzUYgGTdBaWnhDOWu+c1RQd6dL3sbJ/ua2zaN+F0v3STItuxF4EqartP2qQ6Q4ZTUXnl0GPDJQjwx05zXWmwx0LEhoo7wzhxKufQ2xMWtWn2wZN8lJLn015mNIFEuJEx8c6VHQoUG/yOWZfYp/Nk8X1QNZ4tp1abVB9P+hVqgxd3xce047dqpQJTnTvfpD3kep40OExtv28p/Wimnr3z4W8TAo9ZCfJByURyXjZbMVlr0i5OPItku20R4Pb56qBsnfs3gMdSrz+XUva6d4fMdabUyIDZkLGHBaVcaqsoHaIoiH1zfXpVJOAUQHx9/cqXP4vF3lS5/OJfP7smnQVOsOKuxJvHDnntTM2dTa5JLFQ5j2Gx6Q36dUcbzSC0pcLF8xCUG/FcKcTLMjyUjl+/TamAsorENIp+hH4z0xT8/aMrpYciICk6FeBXXhx0E9A1PZOCAy7zR8ZUNoflOV1U6idoi2wNF1Ga4u3C0/wVvytknL/ohrp+jGLZr9Lu6tbnJk6PdUeTe1j6m4rHlGdftsHYytH4UNrFQzCsoSGs49GY/qsAlR65kwwkXftlt9pZ34uBz1KuIHYMkXI9JubLn8nRJeypjgvXOhedupNNJusnCvJ5o3jP6TCjHzRsXIDpMkKC/NmDpLxNUnBUFgRcB6s1hALQU36/kO/46CUGVEojfOx+iArNm1bpJXPOrNjaPl9jCEVf9aTEOD6UNllwQoyi51ItDvmHzTmd+uHrAb5hPvKEN+tpUNA0ASq77C3XkSGJ0uJiZyW9YKUxXCDTxeIUy++4XuybbbCYc9Y0minT9LgtS4wVmIBh8QmLdIu0mRrRPnEI7rxeGAZjFLI5b26r0gU6/KB47vCqCloo8NgV2dyplqpLYbpQehutko/nbN13qeopkbRcOL7cCSB3xiN9btJaMv8qBPU6ykyPABDcmiorXaGDF2pbJvX2WOSgrRdPjlFiGVuCAeMdSpTX3CRYuf4q0PXdMsveiwHL9rvEwzH5EKE5BvQZBAmc67ecsuGXdjg6siSkOVDsWr+9KB4OjF8ms1yy4f3bOKQGrCLbyZn4qmpSPPkmsqavflkr6ZpxAVB4ynfL/OCpZ6YwxW3wwvdtRNkPH17Fz7FleiyMhj0NkS7uuazPSdqyI4HK+RQI6Qq5ZMQ7oa4qQE7WDfsrGpDj2LFWJluYQGf1S3FyluIgzj5Vr4tLm4zGQJnbtdb3u/DvNHScWy7kK0OGXrs5XQzyPHB4plVh6VRQ/6B+nNRcmN4evfzrq9uDN31xQafWczqhteD7ZikiWgPAl62fANEtWMFA5ubj1LsS3XqhXTbwigROjHBSdgN3M1xx+//+LQ0tDgULdSljpjkh5HsVh+KIwwqbi92SiBexFfDkESAPZM76WdfLJAnet5bXRkRrAL+qZbWeQpcEedATv5zT4CibS6TFoRZFxdmCNZBujOZv3CAONHL7Gy9h4Hmqkfk+RKPcfn/OCi2J3PDD+QfNfHKHPMKIhIcZ+UJbYYie1RGZxImzLY6247Sr5fjfWyeB03oTAswRyhorwe6RIeRbxWpGc2GU39ZV5Qmu+AQNuHUEmNFmBHVfPVvkDwEuY3REQFOfxk/IHJNySyKlo8NhblrTUW/INSZLsGqpvgzoZS7i3BZNX65AHlXL7kGzguq9KS3nL1at4qO8ckkmbKnqvo02DR2Zn5mU04L+jUJsXWLxTBphX7MDrUhZSQCdeDihdUDsaiWZ3mbrr+LKijvjYR4LUcyk/9bz6Hz+GxEJIPG55readeikiUB2Efa0gHua8HCi8j0tg8rWmd0HN4/vLfkULszrWLQbIxyTUkJ8DU9dCsRxtpubF76ESAfdIXAV8TDDEoCzOMwrpneMFEc05fmn7W+xzkqgou8+U9SFSKpfHuvOO+30ryFF6/HGj7kDv74Kb/UVoFHqk5YtBqE1ae6DuWZfT3C91Jrq0KdkeBetvajeojECmDhXsVk6iaeWipVKO/Kf3FVieGxotwQo5L5YyiSSRJ0bqmDWVfjAAGafKoOguZN2/6gHGb3668W9H5NF2HLM10iiItzLcLn3oDIguPlyOPXqg2siUMzdx8WZWVzOkhsMtP4FNrYrHjAGqHPaBFqA5TEOJgM8zXPab8xHc+oVplh8XY6ghSU7oYQbSYl2oCZImWGagirsR7LMPha6EEIdZxQ2vfA2EwkmEyDxkA597a4q/qEFAP5WEvWKgvZyOV1DfYPxeGodnEsa3WnQb/nEN36E7/4LG+5VGqEWPvjjVmc1y0TefHMottXVcHTegR8WyoNdS/BcMr4bBsYNcXY2CN2gaJA7tQqxYCehEe1GxxQjD8BJSSBx/2xN9nN4gNXyu4XbEAHqQ6aqZojGc9mt5rvGPv26Fx702WjimJxNfbxLSThek7vM1LTfbdso55FbUfX/1Vu0Ix6O2slpbQVYnqa07U7ab8SGK3/Y2hBp4EZMp2h1euigzIEGuvABD2VRqemXyeyWmu5KsBEf+87dtskcwkXNLtUY3rixJe+iKCsbM0QFctZWaadhr3CiRl2rZy9BzFyuTSxrn0ZMx6h5RWSUXNJRaFWF0P/TplGVJXi0CWWbDhSmaFpMpjoJ4ApM6n9d2i/t4bhQJ3qHJ2HJgvUdytT9L8Ps2o/7LjLbrJOphCYinuGnq6zRcZRKFJUdQXv/6BxnFAGqNvCumeJYvRTMh0mv6KmCi6mr8dMmwfhR/V3MA0+PR9+4AazX6NmOJqxToO0ewh9autxiFb+s47eZgnduGkFiNTp3f1BSaYSRSPr3NKX8eRzUAkT3vWOwiMuxL6mMlqhG/U6x6R7Qlbszewqy/iOSPnQeVlZhVB0z7ZCZAWmdAP8s6PeyLHrmVVAFgleCvIsM6cqiTBqrLbemaBnYsnrIQgkTLsBzFbu2RI4YABjqJP+I/chQvmYI+bLzcQtOZ3Bj5Z2x/yVN7u1P6QGZqbbdJh7OKpfyPq/4H422qv3JhfKJA4XquYxZyRYyecObtX6mVfxPolcW6a78uNL6k/3gSARwd3PaRMah3V3C2LHJLaZEqWG+9KqBkUYsTo4X0muoRPJCioTB7OGY/z2y2fAlTYofaf3SIusGwiaqshghOg71mfpu2XTsrr4Yy5g6cjAiTTv4xheu5GiVL2aVBjTjag+mvoCUbn+4IPC+RsxrVjeilyGap//MyzkwmjZO7SthV8GGXlS2tM6MwR0svsh2OXuDYRqg5Pb7g1sd8schMmNXVI3bnuL5RGrwFXCSmDSGKbcyRodI+jYn0PEKnRgGZ4GsHiJzdRMkT8bLer0XSc5qKh1OmEVJErEsJIVZe/+rYWDQkf58MEhxBl+SE/a6UcE7YOkR6A+XglM2pHCmbYY2kVRprp03UY3TaWPyZAa3o0V4Vt9JwnStQAQ5i8hnS7BPGSatbr6YjRrMypoX3yQI/ce0K5dhIWxPIuokjGgnqGg+y3ajoB8kVfxe1r2WtM77lmpOIdTJ5AokynHW45y4wmqi7nvPxaZ2sSFwShVXqcAt1Y2bM/3fywvL3tS9eq736OW1tciq2VXAvcXOsDAmfQNSVx6MJzkosFo0MLBYLjDuu9UrejxFuRNOx1avaS/Q15X0U9Okm7Le6GU/9kIFuyPs/N6NHssNPEVtCtbxZIbSNXiPBN/skjEX7uOFDMnOJpm29JPLDEFHjsm/XFkUrt5amLI3+gakuH6zn6lcKq5+jBl/gBAEvq0VQgW/HJA9i0u2RaPDJC+HDmBXNm4GwuhF8NtoLfUxWxc/TnORaNww4iunVzn2v+R+oT8LXWDF9afFAeth1wZi3McFEulqbJrs9RqnI7Ab0vSxIZH5S+2fra6PVofowU0Z0UZYODYgFhcgUTKKJWqxmqVgknU4Q8ooJ8fDrxlg/up7UV7FbKw1m1xguvAMOWhM1RXBOBgXrxS0olMdJSarax4CMU04PmvAxzqkLYrwi5Zxwl87TJHvxxBJkpFA4XD/HAV8eP8BoKeI5EP+wTdCpTMsSoJxfifumHvFPFFy9BQQjN3u0zrK8FCHSJNII1HEWdMeEPXj15VR+esOrkMFM3SmMh3di/naeIMUKbHQ2fon0IfaNuWGhJJSd27Kww/nVUsuf6K2U7As+n5V8fXXPvpGdcr+QnKRbmll5SKob+QjsNPR6LL0UPbSEYDu4qAPO+iL9UGnFZnmJXIZio1cOFeUrb4/Is0uJBWQXw66c79nIK/vG3MpEKoZLALGDPAoRV8BZN2mlfxhr06VtPZZkc3YGM1EIk+kaSSZUy5RYM24cnyY4UuJVr/VBUkUQjRdTLjR6NLMVU3DfIIOSypZug4s9byvPkXcAeEZ0oNXs37NbCaZ2f1EGBebKQ0XTcYRt1+9MZMmu6wT2gjAHMSKLaDEOvBlZ6zSk8rQj6WUd/kvPpU2QjH2QmzXyALcK+A/723GZ6PzqyuWPd8wB7+166jYngUY5UJhnfmPfaFJOtxshIrsv1V1Vaey0D1XFjHjrPBj/SDW7xfC8BefKClAzCEtrYE6PDet67SkDWTJUAVo/9ScHHJemwytZ50mvZyBdjWkwAGfrg4EN/Ed6ar+/Z9Uw5WAfhKgpDGDPvDVxhfwZOhO3detr6nd72/6DLViyZOQ9w0sCM5ul5r4Ey3ng1sCpsVKXKPer4JUCGdHjpA66y8O2dLbl3m0EvpaXgEft67UKKIfNV2eSc18cR8R1UYCIWyzAhsU7CdMcrahiVYZRrBtJMLVzoy64g2chJYxkrvh3buoZwR9FGGGLDsksQdhHUsW6tibhjIwGIyQh84DqQKxvVXahP+CbmMVsQY16nV4Cwsm9xCvnpTE40zt1ynX1wMN86N6KT7zPPqo/00OvrDbuLPYt8NEKMwkVnicpAHvRicXdRk4ym+UHjtIApNjdFLmCRbNSfKzNyxysynvlFZKmyxBopze3SCRPhYZUnAUf4Hg+XLU2PY7lLi2gIi0vVlDettZJQ8oU/z8Yh6tMZKtm6jxTpu835diaeIJtVOO91dcsTnJSVzMTZKSVFW3pRLTYKt+qeOIVCYQG+KCnJKWyy6+zr6iAZhyQse4wo518UYZbBDIIi8NP5khrJX3Oa32NQ38B0iu/JlRZ/JPmFMcVNGreUrX7pKzyEmn10m+TGMSEi18InZ6gjdobRGJTz2UQu1ThHaVzLZLAV65N7ST1d6GX6XsPwt1V7Gol9Fx5aD9DcEiPakYqGRGgFh3Wx341CxJoGaT3wyBR2A2hijhjzrTcg9TGbmkeW0QOZ2e1FjzjJOqK5Grw3jvAVAfrTmSMpp5doj1pPUKVuIWxzaWQn3maeXYJ+xDePUG2jebZddhLypY5wMnqBbH5WrQavDa9VGeZXLRZMomxHk956Frii7kBs2PrF5rIB61tiOoulJZc+EsV49SSax897VoxG8imWXIiHP6q8l0+CnbWY3dGjWAr142GcKIWE9NBEz2Bz9PdvgmKzLaMJh9UjVkP6OW1I59slrfpelbZR9EnFDC6aBWXWxInV491kdne8DLVDP4t0Frv3K9V0+FWG4Ic1NNLDm73V2p7mR1wpQmzni2Sx5VJRaxSbzmlvlIQ7rRSTeEe/7LjeadBi3gDQp9YxCB7mgVUI1fvxYfLLKiXyKjpT4XDM4n3kTRllDOAha92EMVHxyU38isnYqeXFeC+C/kz9p8uFqgjLtlqqTNOFTnaJ6g9dpJ15XPNfRJv0U4upSj7UaJJPPGpMg/vxWtNXNgc2uvv4YC2EaNCeGJphM181BfLQmeqw8u8MVPChsioecwN5huiR1WZGjtkYZaxZ0QM/vtCJT8u2TG8sw2VzDeJuEfZM3RInqGY3p/QWh8c4lbt1w+6yyByxpTFiG36UMLoL8dI5tdzfU/em0zLTkSQR/jnPHSMU8G16nl/XDMJouR1RAseZb3AjU2Jlt6ROg0oaxnxI5AnhWaYKsXcJWrRi+cXEkOj73rilBDr7S+ODl/kAktJkOiPvIDDhfffgzn6GVLNF1DxulB6HVKpizpyeiQ1GRr6c6CSygjmIfcNHza0koy7xJrRGnLZO4dK8/D0wlZVyofMH0nvnNhMWeTPeK+cc3w71r8bU3XFTEZH3aNZrrzWT44ycn3BHklO2XNAQ8k54cRqrLF0dOlkQajOSTwoXE2HmPLlO6q1anHQCrUlzsltT4+Yr9dDJHOunZElrTL2AsMSNH1ypkC6O9F912P76wVyBgjF+S8QkHOrMiHg0hhG6N55hE6b2MeWJbVhdhanXiPKttJBvyZBRPRHXYruh9RaiZkYkQUNBuTBkPytXa3rNcAGRcB0rlrTzyl0vzA582mntfLu7qeqEqRCohRbLL9GfJVc1sQXO34c3s8FK6SJDoaLAjOJvUsHk23TgmH1MMJ3n06WAV8SyItIR8xPkrZGz1VVrHDDCYEg7I854B8J2Iq+GocM05y6kaGqpkSQ2Vuuqca8EIwMmbThCucCVqSWfXRUhCV6tE8ko6qTMCdffxrvZuiW/r9E2hnb2sGrqE7x0OnbTuVZpP/Xy4Gk7yI7J+pjWZRhaVbGoMOw4K9zG0E9SYu0YPe/mtI6S1+dAwu6N2p83wmJfnrNFdNk/T8lDNNFjl83ItK7ZTBx7hEDKHxmn5+9Te1+LD50bfEeqaH9TL/zd2bZn3m4754CLfG/Rlrs8fjftJ8mUFa3NCt9LwVHRiYePtmsR+1iCdpU8xtqxwVEi5dwTj/IkIwmYLztO/cU8eSw3LUvpZ7HVpctF6jOmnXf1KAvRwHvQyK8R7zHHfPkDdzK/cVqepUiEHimEviGiVG8UpSS5f4ivayq1X9AgS8ddp1l2sN+rEpXW91qtIXPXxy3NArIZZ6mo2BEskwNbtGEQxNNNbwhiEBKoGeZSX5VXcWB0q4r4H6bXkN6F8aVby3WNwSdtqSyeIagjXH7qhqIPHt81lXFiE6UasC1L7IrwrPF+ooMPDjrBkLbiJnkMniFPQS98vSxdcHZoxVTMibrTB1xxPTEasKbz/V7ZcdAgghOnlDHYFks5IpQUH9Krf5rlro6gijsnvk0SxVvIUNdyBGPyvngu3eDUFiGjBo6yMt5n+4etXIGbnOQOXb5kgS1YPe/tocndQvu3ypHtIs+tglYVESo/2W2Gwgf1jNJHe6L+1Z1iRmpj4qLv45ozMbj3hSstkcMAvY64UtfPonh5HgTkrOkCVF+4X79Y3kR5eQmGV9S+O0D2wLbhH1Di0+tXP/Nzn4tWWawWYqHsl8/RGUp4h453IWBwtYQVTbJekWSoouSDXReGH+Gt+nqZOa98ul4tVJfOFUPX1pb6NG+Or7USfUaO5m0F6VY0Wgpx5laeuK/UtSUz4eTAVRjBffEsXdhIlautcBaRI3T9J4sN9oNJN4kVYWDdwGXA0zs0cZ7qw+ixxoSmoIblADsAtMRZSBEhgNf9awVtqZtxmnZdE6hznUEL/Z1QhO0ynRSB264bDghKiDlrTZXo+WsqQTzkZmk4R3cC2SdJqIOiWupM+QtsBZeukt+68THF2XyOv5bJEv55BUKKZhBlwDv3idw9RWbJntQBYoP0CCA3BbnY0XRqplpqs2uDxKmodqVbx8zk8ZXw6i4qa+qD/FXvWmCu/3bIKlwB04lw3mJKakYrY1YqgjJlZwV9qZTJt0+Jr2OotuFCQU6AOYxo2Rh0L6mvEnI1qVquck3RWVRo2STjOyE0E/I7WezClXbp9yKuyVuuPr6CAu3cFSkIrMBRxt7hrZbpDOrXNT88qm2hmuMeWftpMYqG9NY+oFnYhnpCNsdzSdO8+IlUUlikZVq9dCAN97epc6YjPZrverZWMlkjbZhRH0zI0T7x10S7hCkuEE3ZHwyGgU71PJosaZZyk06/Mbk2hlkoxhsxQw3DGpXHadU8XC1BpQgVvOR38d6eFuYrFy0OzBtOy1J61nChZVnBxnae8ePSsWvYDNWXSpTkAyKDj4tn/PRfE9fWHeRvy/XeODzuBNJ8YUgiht91AKqrt8JDGNuLZi9fv/+03INlvCsti1IYjOO8ywtvgjeaa8AuOWg5efidCogD/IGcLSd+wnV5oIafX7DV3MQEL31oxk+qX+rMSlPMb9qPRuE76wZTGREW4NYQTwsvIbutgT2nfHHE5aVdYIId9rpUIqaMXhU1sOvIjGnmcSw6wr3AQN8xjU+ROJWw6lEL6TK546yTI4eYcr/ZfoZC+LwE7YOyK7JXOg9tMF5S8KnkVCoelk6YeKqhPqvLLYSXei1TbM3X7d5Kjb918MJNhMfK63iMWa8/9ruPgHIRDqOAvNCiDBCdn7Sq/hY+LtvOjUVikJPWRSXLmPN0Casyf86+27r/Y2fIJZyYmavhNY9zqSpfZ41RwZlRUDBtTeL2Gwa3FUn3B/dZFPOBl5e7VD2o1NacxgyUZGVhNdGt7RChqGSXc0cFe1kZkxSwGVOlZ3jQO8RrLptCQlRW8An2hcEoCKVwyCJPeiHKSHVE6aRYRm0NH36aTdU0+64vcXS7Ekg82GqsoOLKrC4zIWano58l/IILv0PjIAF/IkETi+iUSxTNwBIn4ubQP7DUk3BUsbNFJmLDs+NdE81DWyqxfQYy2ejD1dSN2PePlTMd0qU2oWzrcPR2Zoovj0LsrRWULw5YRmCKwTQhV/p1iAPqsbMyJ7ISyWNNm+2lTauQ9OWB2pWrzvzHQsMCKUf7+KJiWRHVt32ix2IauEUdoiwJXCNpQq6qy8ARu7XafPM+hfIWlhcn7ilqrNOFL6tqb3ztUMY+7ZLqwtbEPqaTl4ZjcOqJ5pMceICU6dSHNEfRDN5MWy9ve+K3uHy8rGZF6upem0pZXG/qiKtMzW6J/tACn4pdoJ7kadHOIv9TBEC3s++TiTed79xeCsztn7eiVq0kboy2cWhIIPfiX8tceR3uoVU0s7ULi+lG8HCaGfvNbT51VpaqNvROTLYPgGD4YmR83LDtmmcIPvreKGMk/9tIUPsYJXzk+VRc/sBnM89fawvdstso2XMsZlqNLps/42Ye8wQH1wC9ljbMMMg4MO91XDRglfFEnbJ22sLu2pdMNpNarHjnASxVSZq9yOrRRN+FeRdfiRi98oOLJZ7VYj0K8bflInPJGWWSZZJ/cMrND0DfKczGpWuPbnvzToBkXVRWzcmw4gdRQ7Npl+CUtCcwhOL0VQlOlaajXiaWHuziqI5yAOnOxFwfsAocjq20FzbAteZyJMHq3fzuhVG9G9qpECWreYV2vPZEUOTq0aQh/QAp7mKo8uPHOvJHh7LUUv0h5Q6zm6zwkJOYsC9+P93L3qYEc9XzO0Bb7hha2dHRtQPxyjN5joKg/KT8kFpOiPaXaHcfQ5XbD2/T1GyGjCtDjW3FBbpvvpPKmKE+7HkuyFR/FB6vF17RsUIXQQmvflNEHDDCaAHUSwTm0JErGk8JNjawEEnQL4ZnSptHSssqmtjSnLdSUcBHwd1vm4DH3SUOFcrMG3808h0SWJMXEPgwyTmYeunfkhUv4mjesNPOeaHgn09RnqiSy5EM5xcMj7GMssjTcydosn7yBQawXSM4NCvIxbik14emIUo2aMIs9LdmIYYylaC4fmUq6/5A9jmND4J9I9NKF5hXfDAgX8YYN+e2OTd60XOe9ZG2Hh12uZ3+YbBs29neHrCR8DZ2fAFvdfesRyly4dDfvC3sddCm6P28DNfxTZtxbOAn84Gc71G619xptHCqFZpZo1LEJYMYZ6Dd8YK9jBYW0fhG3yKnc4pVm2sJdKx7ZgNWWfaqNp/EHuJx6fjM7AZSN5ac3FwmATVZ7XdNLFvloe6rwU07kcUE6mdwYs3BT3Dt5NjIevG5SyNtffIfN+orsPaVxr+Haw8QDimri365mB2O0foR7bO3D7cYQw4smpDXi6NHQ933DdeWn0Db3hQ/a6T3wYv8zOnItj95Bw36uFHzyef/AHsKXDUKZW5kc3RyZWFtCmVuZG9iagozMiAwIG9iaiA8PAovVHlwZSAvRm9udERlc2NyaXB0b3IKL0ZvbnROYW1lIC9KVFlNS04rQ01SMTcKL0ZsYWdzIDQKL0ZvbnRCQm94IFstMzMgLTI1MCA5NDUgNzQ5XQovQXNjZW50IDY5NAovQ2FwSGVpZ2h0IDY4MwovRGVzY2VudCAtMTk1Ci9JdGFsaWNBbmdsZSAwCi9TdGVtViA1MwovWEhlaWdodCA0MzAKL0NoYXJTZXQgKC9GL00vUC9XL2EvYy9lL2cvaC9pL2wvbS9uL28vci9zL3QvdS95KQovRm9udEZpbGUgMzEgMCBSCj4+IGVuZG9iagozMyAwIG9iaiA8PAovTGVuZ3RoMSAyMDEyCi9MZW5ndGgyIDE0MzExCi9MZW5ndGgzIDAKL0xlbmd0aCAxNTU0MyAgICAgCi9GaWx0ZXIgL0ZsYXRlRGVjb2RlCj4+CnN0cmVhbQp42o33BVAc2NYFCuPuwbVxdwju7u4uDXSQxl2COwQnOAQN7u4e3CVo8OBBgvOYmXtn5n7/X/VedRV91va1z96nC2pyVQ1mMUuwOVAa7ODKzM7Cxg+QUFLnA7CxcbKwsXEgUVNrglztgH9Jkai1gc4uILAD/7/0Es5AM9c3maSZ65uZEtgBIO9mB2DnBLC/52fn4WdjA3CwsfH91xDszA+QNHMHWQKUWADyYAegCxK1BNjRyxlkbeP6luW/RwCdBT2AnY+Ph+lPd4CYPdAZZGHmAFAyc7UB2r9ltDCzA2iALUBAV6//CUEnaOPq6sjPyurh4cFiZu/CAna2FqZnAniAXG0A6kAXoLM70BLwB12Aspk98E9iLEjUAE0bkMtfYg2wlauHmTMQ8CawA1kAHVzeHNwcLIHOgLfcAA05RYCKI9DhL2PFvwyYAP9pDYCdhf3vcP/x/iMQyOFPZzMLC7C9o5mDF8jBGmAFsgMCVKQVWVw9XZkAZg6Wfxia2bmA3/zN3M1AdmbmbwZ/Fm4GkBZTA5i98fsPOxcLZ5CjqwuLC8juD4asf4R5a7KUg6UE2N4e6ODqgvRHfZIgZ6DFW9e9WP+8VlsHsIeDz19nK5CDpdUfFCzdHFm1HEBObkA5yf9YvImQ/pFZA10B3GxsbDx8HACgEwDoaWHD+kdwTS9H4J9K9j/Eb/X7+TiCHQFWbxSAfiAr4NsXko+LmTsQ4OrsBvTz+bfifxESOzvAEmThCjAHWoMckP6J/iYGWv2F327eGeQJMGB7Gzx2ANsfn79PRm+zZQl2sPP6x/zPy2XVVJCXlZVj/JPw3ypxcbAnwIeZkw/AzMHNBmBn43wP4Hk7+P1vlL/5/5f7n1JVM9B/amP7J6KcgxUYwPcXhbfe/ZeG+39mgu4/60IP+N8MyuC3OQYC6P4Ze0M2bjaLtz/s/5+H/0+X/38z/0eU/5ex/7/1SLvZ2f2ppftD/f+jNbMH2Xn9R/82xW6ubxuhBH7bC4f/a6oD/GuJlYCWIDf7/6uVczV72wwxB2u7v5sIcpEGeQItVUGuFjZ/DdB/7+AtvB3IAagKdgH98cwAmNnZ2P6P7m3XLGzfnhKXt5v6UwV8W6X/TSnlYAG2/GPnOLjfA8ycnc28kN4u/g1xA3zY35bTEuj551wDWFkcwK5vLoA3en4AK7Az0h/3+Z4HwCrxh+hPxMMBYJX9B70HsCr+jXjZAKyq/yBOAKvGP4jrbSD/QbwAVt2/Ed9bBrN/0JvO/B/E/oaczSxsgW9PsZXrP3LOv+V/Tc/fCj4Aq8XfiOst7durY/9P+D9ayGr5L/iWAPg3fOsQK/B/4nG+JXrrjp2Z/b983ppg9Y/PHwjs5vwv/ZuP9b/gWxE2/5TE/Ya8HG3eXtF/LN5koH/Bt4bY/gu+dcTuX/CN4b+KYX/j808o7jdXh7e5+Jf+jSD4n+xvzuD/Ub9V7/iP+o2/49vGgf/VIfa38v9Fjv2tVpd/wTcP13/Bt/xu/4Jvpbv/C75l9/gHcryV7vkv+Fap1z+lvLl6A53/Kv1/JtrCzdn57ZX/88V5G/f/4j9/UoBAT6AF0soi2EIg5ENdSMddjRiRB/PepNAc9Z5OOj2zz4pzp9sDGnwKfXVW0KbzrVjKaB/G2o4U3Y3oKtmzz3FrA3x4W5Ja+6Pvk0mC+sxeO9LyNO7QVOGxWP0gCSIxs6bovu+zk692oC10K2S3PHWekxsvmmrBuzuPARnP+sGv38fDFvfU9qvfKyA/fZ1ljtWKMQwsmafON89ewKeAc2UmQWDAuvBEn7+5ncPKnXolk09gRPI7ieUs8tHf4oi7X/Ber9DkcOkhoCLQxyeBvsEan6HxET9Mlcdb8iktWhta9mwVLCLLRWVKW2PGYDnkyKwGqUc7NPfXuo+vdLHv5qUAQmiJht7tJtWWNWObOFOo4FS3m0S/c63ltAWSHHZZia933Gr3Wn1II17lm61/BSzwkCfVouZEekys6/L3oHDm5xbKe5xPFJ4mpMsp4H7YfrQi0HnCe5YjPGGxdZcYG9cxWeeujS2x/q6jf5Omc6vy5L9mRK5A4TnSP7wcOePsdiI/XxQjIj2x+v74Xj4bzykSQhi68FLc+MuMFRqtIEdXgnnCbiKxRiWcN242jDBrq+3mvlnnj9Eu1UqKD5d9gYlr+K5bfgZYq5Q4aQaO+wl7JugmyPCnlwXvRI/04E9XsG/JR1sfXaYxJ8nc/NeWYFgjeJWAZBIcjD4Ji5746FQMDSe+RY9rYbb02c01kg8nw6MonBKzUclRWqmd74jhJD3G7i+Oklg/9afMRCVWfOGBdkvW4Hi9dm9fnww8QfGP2PdyvR1TsKT4tmdFrp89FSrC8rNpeLjobPxG076xQPzZbl/2OitvTErLIERfOqiuzFTt2ovedGMGb+3O2hJIIC2XVuSsxTwk7/9KFO15Y33KFaage1aJGu/TuxJQUf87KSMFNWSf54jqpWHvMl1FVOnx6xcRw8wxODoiRexImB9lcRkI3tS5MAuECsryT0mmA+WFs36LOu9bCgby8MUQYlWJMN4rH8VkUkTxmLZ3rCW5LSgjfdE40xX9xQCaG2B68ZT7nsWgwkqR2oPcjOTKLkBlFzQy/kqNOgiIy198dKTMF2cs8Fta/dj+eIdDO1RbV6yuYZxXhDunOtb42Sxc+uaoBp6uyz+7Dr/hFo0SrbWnLCRkHbvie3fI12Vxuhk5Yhp40T7M3P2diV0yv0jm7XR+nz0vMQiqFnv+O5igSNpvfsVzJe8+GBv+fB1oE95xeT4Apo5YD257w5IzrTWusya7XTQTM0PyNbn5JRYBExrlvGCnHOeaXKhI4iwPSEaWlNVYp+f4KgSJc9FmTc97UU1MQz7bC6xyuX0ys8CH8XSuJO9eR1AUR5Ho6fjkRoEWjomvIPkzThUDnDrTYXHvLWiradcdK0KQtW1E/rj+eem7cHPrxs7LMGnsclOIdUjyl7nQD0LCxOy1Acly9nwP5KaP+jT5WvmYOBp6WWpjYCDm3kgd4lL3IQqbTLEw4Lk2U4T/hOVy/wvgSNlyKN8oFaf7TiuRu7r8q9BZIf8szAJzGdH6vDcp2Xv0hGx8GOs1LBq1nRp9OYNGQZ0UU5Emqv4CsP87e/Jd1UHIyeNTSaHgq8lYtDT3l7Vhiv3dmx8Dvau4rbXjpYFcOMqHbvr6TSLZ6Irqjmqnvzq+2NxVBRJ9+yCwd2xxbQSkW2ucCCXYq0J8hMIwXycINWtHYJQc/6r0vGIsQLPq4GatvVW6/uUOWsgll6G68L1hXUDBT8jg6hxiuCurx83PqR15vfajW3jqhh7y7ohT6o63NZd7dP5h5wBbfuT8iFgt9J/mgOaauh/8GxPbiflp5o5bUiuMp9hsmJWQYhaWui+Q2eWZiu+sTBSuFZpOz5af4+RZIO1iY/3O+rwoVu2reshNKFdLPM1nfztyKxu8MKh7uaQlUx3zm7Oe1osC9D6LfVN4gHnnY1W6sumfzlM1R/Yb8R5hWziLvreMbhlyHAUfW20QMbLH+D1Jq4z4VBO9BL5V1pBdZI91i9D0lyOImOf6gYCKojakYUfKd1J5ocdxTW3xqWBqEOglpVOTlxihz52Jmsbn/TKFHIWqm7CWHcpssUOm33nOUe6P4Z2vX37CL7n9RDj8AJu/5pWDLmtsHJST+UnkI0Usr1htfxhkXEzXhsILlo1JQ43O/JrT/kTfGp1O2U9QBmQLIVcurEu8yUZXdjlFBevPUXOmnZk13K9wO4feGTnHe/td2kF91l/sGu8IvvOatMLKlH74MOUpIa1ZMfBFh6KD3Z04myYtSRtP1E+cN1mnpKSgbdQ1D5bPCsHa+gnu98YOvMsS4roCiT1JPLKfp8HNMDmLvoT1ulju/fcKsvEb6GtBPvcpUkm6GUsbvikm0miwwgzX9EeRbl2gMfZ8QDwu6YDUeY9wZHITnD1IbQ5/TDhH8bU0K5P06RQpcvSqFMaX7gg6jUN4i4icITYwkIiWMIr6MCpfORAFD22RhxhqvsBRGBP1l47zu252+M5RCGRlH8UVfsYa4f7noitG6P6J1NSbFn6tuLFbePpjm19jgiXrrqvL/lBFH9hR1HKqmDn9Pqd8IVvTRMLWcGM2wodhuMAy9WFqDKDTbppuP8gj2yxmWnVv6O4PISNnnF/UNyq+pjul0HUIB/VRVwcnl+gNXykLSXq1cpoq4rnBRXESLrWOPa2230QdVFss83MHjWoCAn8snNHQ9SGP0+mxsOLd6Hdr+0ZHM/KIzQT5cX2Fb/qI9Lh51IqyVePV0fru+yznPQ398g73MoWKlmOG76h9fb583Vv5xxZqyRLfLQX5jKcQjRpxntc+wW/gbfAu+M2e/XyFKf9d2OlU2OKmFpU7G7PizPpBceqyI4ZZrGajUkQ0ZDLDafKm5k67c5DuyOwGgrKc12tLm1CQS5Zei6Rf7iGRt8m2YSx+YEL98cZX4HrSG45RNnM8oMiAyCAHQA76zSE+zuObxwRt8jmdKLcuMJHtfoaZRSnGYcU9QZEJIRtrkXIkdWpcQ8nPHPv3Am6x8r3S15u5cbOKzsclhYMf6FCB9zCbxVdqotvQTa8i91juqmyGsoEbHQ64/vlnbDe5/nVctPuz6z0yLT1WSBBF+FzPIL7yCl0bcHlnBuEUl+pcnfe8Pvv0iu7ZzuQFIJTtY92oR81wv3KsSDknC9TYvHmvbOUgIxST8r4J2nEouy9WX1SoS11t0Hc2Fs3RjeFtHhCOauf1r/iIVNsD55cvWaCx/cy5tBe8JQHo8hVTCWOsCdCI5Y1tDyozs4pXjDFnFkGucpAxWKq5F/2xTA3DeNWT54YzqFPEiCNEbLojkx/e/FuhU5XASs6zXdiv/m73YTLtiPCo3fjnhtJtVJykg4lzbhvsuTmYPCo9jNXjU42tQJklqGCAi8ajP6Hku6Iq1mBK+ea1GKVBzyzGQZpt4q+Wmh9Z8hNssofibAu9CVHWPQZaGfOQJlOQ0PjgPQi5Pzu2/xD2DVLWaKXRLnt9FmwllYA8YSkuLSDN+FnRkREYcNKkHf+4Xlxl7zFbIhPMhtP7HlddLwvlSJaGzzoyBL5A+H6FfRxEOqpTndYvJzKUFjJYP1LMQRTWl3KhJ+A1F2QNxr1fKWmrfWyH+hCJDTpoMSqq1HlUq+rzMul+T6CQxz5kIooj62PqGXiAEe95VYNkYl1nbTgo1+waeUaWWRsXHcFtP0CdCyT+7ct22kMMwxrAqQny9jiBCd49hXXy+5ZapHyzf1/yslX/AplDLCcGlPmNKkQbpysBBTuDNslbGnMMjjESWXgK+BoD3PNI+0xnzyBsMHAnw3fYUHPWa8FiziMFuxIK5VfZVYmt8YtOqnBhQt5/WjIATd081BPR1NwhoJHhIqImpR6xWQbzmCQNLE5fl4sdgcaDQ56oEfxzvnjyZdMUjCICz3dfFVli43MgHWvLJ46JpMhe9fu40gtMp4Yvk0DF9nmpxoizkvInFJOKfDGvr//2GUXM+dRZ68Jwv0od2JpuoN3z8IfEpvVpcjscl58qKRAZnQZs14HPlvjtN20PajN1gJ7ww6R2uzL4JHB4OTrk2m5oHQ3hQ46QgOd5zMtA5XXmtz5O9D16uBVymSvXuvZlK3kjglA6hJtvHD5r9CBn9lhe1lTLLL3BET12MWtBrful5HGbI60Xv+sd55YmaGNmJVvGqMl1CPOdekd/u+8JHtwsaN21fGYYmp0I8aKL9IXl/aRYeeRdGCaWtHyIC3U8+GaohgE8r5RC/FKR57zh5JW1r8LDTq2ywW4uVUsBtJwCfcOnnxISx3LU95Vd6Rw+CSOhU3xFQ/mGRKiC/tpmiiWWFg3G9DQfPZdCvZ7NyFShk49bb7mucx2Fl0kJGbYxszBnBl0dQ3o0aPBNNRll0IlQNnfCHlNOVFzcQfBMfA97J7lgw8REmUUImdqyXTG6dKIr9P0XvmiMRVIMWVXoJHISl4iT8G40+ckeTyathPoUSh1/mCOpId2Vs4x2rRzMt0Ybzongkmp09hST4BX8/Duk8IXuuZDrEbVIF3P3diRXooiZ/o4BKmGvM6Fj5h++B1EVkt1ka7Li5S9t46TNY6ysfbvre0Gw1jP2i/cwIhoDeNL3KkQYUr0OPHODGydam3FRWkk/rVbWC5Y6pNDQpz2fK+2L2vu7wlbnTT6HwZZIFqqbHRMv3W06EPROMiwI3UFB/ah230zZ5HhOPBk+3LopXnL9STJxAITfj0bo2NT1jXf7EBgH4J5MZ2j2SUq7dPVsHkE3x1nsnbWDSqLRXiwCkA+qFR/FXHrXXeEKk9N/9jTI+rKxzk2z0/NCYkgpimZWYv0J+okKi3uSygY+eEpgkcz+o5ZnGb3v58E99WJHK0QGPemxFNl373pc0AiZg5HIGIIOugaFmJKpuGC9j/fQbEPMbS+I3UUi5DWlvNk2dU2sNSg2NNe7pbrmkyas1kmfGtL10pCJNXDPTPmyMNJW6wtdoOCjUR1f7ywEB7+VLotIzgTOXxtV399m7CHudeNmvIoPy4jg1vFSNFAElLrO8kndaeDTj2DNDorvevKDzbZ/hlodIlRHS9KkmRAJvtCh8ty8ZiqnKtK2Uc+ZsD92a0JvV73ng/ZylI5q+TUgvIVxYbhJK+EJ7a+o3E4/O3iuvQ8bv5F8U39OqsK2TvFYk59xHTlHIAYwTBksu0APGBnwyHiZOPK68Vam4EwKTshnNNM7l6OgQDSILNPq8uCS6VsKT6Wb3N7OqV+uxr/hgrIU1OmEATU4GsOGcT8BbZwe0TzxmFs9UCrGq9fMri+uheGcV8Ne331dLSUzy/zFEIGGrY7NaHnYw+SRkjf8Q7vEPq8h3r/jSmzmZZ7+9M5XbtcrqyigOYNIFA+p4NOrGHVsBpvDByBCeJNgHKckkRH6VzSiaCEShYv5r/p+9OKgPUqv3xYw8jTHtttuiz9dAl6sl3Vg1wmlDMjUSfA8oLEE5ukL8R40pfU2AyeDe9ncmJDxFCPgNdM2xuJO4n6T9JPbvXeEnqK7+6QuT8MVOVuyNxnuLUn3mxeoc/PpKEWqRQWQCnfaSmcuq8x3+rMQSw5i8jqWw2lUKT6HIkIe1/E30WY9VgdoPL5PccmT75idDvlDiI+nsaoows3S+fys7rq1BgPxqaxu6m/zPiBNVBkmTNGVjb6JSuleobYaZc5PeYGBCoKvo5CcGE7vlxV0A9Wsyr6NIz6NKWGUCtY+pD8doau2WE4P2OxjyIcRdwbFA0B76HjyI6uiemB5ovBSZADB3gpc7oxV/2qwmNeUmzaIcurqiJj3lYumWpK/2VKFBrJHWlCN3cQx3HawfkhQPHyIZktiNUHJ9N1LOXMw295edTyBtYDpXax9IzJw/JPvjrA4I1u8Ehpx1KVhbAwst7mkncGGTgtGe9aHI2H5PbdLunj1tdKt6bTB8H6lx7MsgWAt6Zrp083GsuX29xauA3RXPWOkPfVwavZHfvT2Nojt7xqO3rV1gprYnbfWIR0Socjos9RyzgMiMZcbunvqJ7uOPViTfX62XxUmPG3V4kTIcQpMccVZb1+7MNVO7+9F4mf3fu79fmqp5oKy32EbQXISaqLBGOwVDZlYUxx6KeyzTHRBJlmErcAJPchM7P2OViL002kEU4I5OXEZmqyVnqLYjP+zU/DBIh7b6XcWq4w4DocbCzBTdJX1One18yhlWMut71GIfTUb9wb82N4sWP7acUA25lKioRns5oN8SoJV+KLK7oe7iAjCp9FEte0tIL+w1Qd2jH9zAEWx3X+84g01s3cKQFu2y2glj0bn2Gq4eEkgHizRy8TKeBfU7gLvl1YjFYurKFktM6XBQC+qzBvJTS8x9J0pE9/j5q5xNoNLqHP+PYWSt2tcjtF3MXl6I8WkLDjngBgGOYfU6lwJ4wM1crlOrBI8XDXtxKyai89RezH6dU9YFlEcqwuftDDCChcEJhHEY9K60aTNL6UXqlMSeK8D8GAcdHMb0+RIEmHEFAHGMTcJDH1BmSFglqNUwweNs+1bwr0VmHg9ObcTL3xdl0qRd8ik4+w5JD3dV9Px/IUysFWW1QdOkKXXylTy1l9hHxwUXXZ9xJ30vhl9IEhptHrRE191Po6LOg25+QXqwh+74q5z1IiBK++VqK/Lc+JHCoLm4/MEWsAZqc/5eEvUQoe3iXiptGkssuwzbmlSmj7JMzQEMZRWqThPLPEjszPXdciYYVBI65p3wHOkD6pIMwoCdkhU4x2xhzXp9SDozIK0XxWQSCGKatv1E2fyx2MfRSMi1rtU+LPrdp1rjeP2+ZWK+Vy+oryE5s44iYYwSCY+6KWbYATMCULImQtLXAINzuJaRadLjKiDSIpHPhJRKvBEk2XP/3w4HFH/kJBlyyGWKbxHQxxsXLd+SKDuPSNkhRl5lEp/Z/1BbD2J1jPcXFzVUrB6p8h4No5pjhy9P999Yc9+GVmePKGWQbCqllWjDmqkD0pIaZzPT5fE4Ls65/aDGAejcrDlMcUPdwjp94hSN4kG5yzo+ZNz+srKQZJEJDt9B2Q2+DgxX3zJsC4UDoS5Z6NZuOkUth9w5oQZ4cOCGbnavRZES3E2YLPjpsUXzgz0yFo6km8QK0iYTZ8wY1IikxMuJxLIi0qYfctu1LWVnN8jWlJhfoj9Xe5RBSTMbauMPaWjZjFluf2F6tqThGSKfzkSEJFzeNsQ78C+ZwNAd/Ce+Q5Uz976SOlwb7+LvaFSA/WyEobv0eeh4sagPHyHZgvhaRGV/flV+8t8L1+FbJ8Tbw3HaOEUJudlweSvX0sBC5nXBcEsgRoZcIwjeKI06J1RCYYDM0Y92eY6m/nkBcobRY4rOGb9Z2yJVvEddvHrDu1zSFKSsSgNjvCHEs78lzVXJJh78ydqGDBCX3YhEg6xf4xn6zQSQePy+pAm2EtoLTcLNKu5vhDtZBtURelvfsXC/DCU0eCrB63GRTayLyGIow+cWj7DA+/uPUgGCseehMVcaYvClOH0oqm/D/9dnA8vt844+AEUU6TUif1jKZYlTsAPb1MdYjEwm+2R/JiTUZyNS+XBabPQq+4YW3LPcffBFhrN31kbJlZrEc2u75d0wovQVP92nr8C9hnTWjzydMi3eijnwwsgeXRpKKfHqTPA12q6KfHFlyjArga3hwMCbYmL4rfdHiRw8XPTEe2hnPIME/dtleK4rZIUKR3fpE2R+leZq1AlWp0bxF+17tkO7k5JPPjqnbc8vRgnpQ72jroYsbVJzscPJW2RvLM0JbaQJLnrVn2KGrLyX+fBl8AXLsaObtgWngNo2mgA5eu13bV/qLfjL7JsudGPQj1T8AyHI1e2rbwvdyKI96Hs3IIZcd0H37My8JxMrLtOrj8b9RtJJ5SEQC5JccuF56L2Hp68OpcBil6eLVNl565dojlwqL+3g5LCRUKZ6MkSweNqlJWnKLhj/vH0wVbrckDaTLzavrE8iyzYZfPoT+kEeFHphr/rSstLWmury/dzr1vr3Fr0dRXWsVAm5tCgpdgUBPOmyVuYaDcCgrUrJNx68BCKiVDy7XphO6awptC85ZBa+EXXZBfdYzIXkPJb3FalCgl50Dqbh+GU+E5lDmEiPtCkSG6grRdBRvKkTdJ/NjL8ACxhEBwZsWoOoDCukfgUGv3qyIaMpAGx/7WLu4boM+ERRvNaEPFzlK2hrxBz/HqoQfIeLeYJ7Uh0hZ0NhO9sg3KG3WmwRPdMHrsR09UX8ZH+rRNPGe3XNKcMiu6bOeIsO/QbcKbQZSrPe8u7tS+Nt67ze6CgvTyCZXkKZ8cZEehyCcJs9yxQZtbGS1JOin4Pij3KOmSy7yOU/4i+jmPBB3YNoztpdY2khkveCnAqSileVGbCIJkDG1xlBWn6VAJEcRXKI2KkV3Y2FR2pxIVb6iLa8MVN6A4bm/tzF+bH1fazWlcsHirFRL2aD4P0q2Rh8BE8zipcFLXpJZpAncnDBYHBcaPDyF6j+oj86Oal+rNVH/Ly/RqI5lfvBeRyIuwxaS7N3C86zlre4PpFJRik0LaPFugvwm1LIQEhvITNNZ8wlScmXmyq0eRnrBQLcXCj4sZyE4qVy0viY0KlSEvr9xXpq1zRvvWZdNgRDY2XVQY+JJdnaf96v45DoeJP/UE5jzmf1NCk3z7ZsFR4ID5ppkUkNdyoGZcANlepezO4kfiQWZ/kEqAthWdBRd/8EOvPG7mq/Y3LG5qapNftoKKeLN5B9ivtjt1L2C8ZaIoVLQ8HIjspdnk/P7pfH1DdE+ZEaviwavOYD2f14A6FPIkvPfFCyYUkmULcxq5+Fuf5IVHN+4vXYvfEWoP8KZ7MznS0LOjUzU3b1EjyRUpReBcNVkULQArjlUZaes6tE0zTzz+pI6oDd+t2ej9GCkbn2jdRxEDCVm16tX/06XRIhWK3L5MiVbeQyUu7DgzJ6yEn1amJiE11SLOwMuMPXKEedeU2LapEbEuBoXiokvOCuXtwJqrMVL4QoXpxcOiHHHrE16WdSrMlcAdqE/uQs25bhuMlSTnfu35XMuDzxDSvJfWSG4xDB92QZQoOwN2eBjEKTnEGdJbsEoh9eWrE+1XWuEBWJkYFv43yTSR/yvArwUR7Uau/xAHmDH6rFxDN8gP0yBPUnvROunaNX+Bm5X35SGNmzMUTCH/xLrwzsibniRiBYm0T3ZlylWhvMHzZ0k3hKSQ85Kfo1NJuHoGctxRFFQD/LvjrR8XRVQETN5jQVBcVRJjNWaXufdYAsMosjr2vaAulfdt0QXcGDuENh9kUGoAMD2h6izZs7Gq8rePtgFyXZu5eiWTEQgnyG9y8Sz2JIcBdYGFfPrghWRjQvx+LsjCfCOAdl+jXfFROo95ROAUmIXz/iXZnfF4aIz6cPqBZ2CGPPZQYiaVMYkM0bEy09nsTZlMmtkto/040cn+ryPvDAnXDo3S2ymb4WavU3nTP72Uxa7Zqhd2nJNJUreQtDkfRPKpJqlNL3l8YIjFPox/HEp/ViOv7EgBWCCUJaKTIUBHmVeBt5pk1acK46XfMhKHvrK5rz0F7VCZRUuRXZMeYQRETcbbSOy3jDfl8t19f0QWJJwiXfGhBXquGzW2qMa881Yta4pPx46qXsi8zHBIwosa79SXk2p2IuYzcIQy/aJwWm7HRfwHV3U61otn9ZtG4jqopBPzzLDfHIftDPKovT7TlE9Rvpp0sU0osmqe52LcFdrhweMj7BiLBLuFahtigMj5zP2apOh5pMeobH9m5LzfBfp5ZkAcFCObB3DGVocsPrh1K+KNt1QUc6PDSq7O7xWco48PLmdIn7nGST0PA4Ql1XyUSmZBdjHl+b85FnQvGtJL6968jJZHFDJqwz2ytWNFyggNbfXZXez9Dtao62RQrSySHVGlbEca4V9+XU6IJJTjm7XMhyD14aKImG+kOx0RKhRVISabDc+F5Z7pQ/lpU+izty6z0Ja6Q4wL9PmsrrTz9RWIwsemFZnVIYimI3vC9lu0kgiuCxEIeUaNsDi5l6IiKsNyqh14iyV4hj0v8vNKnBowxmb2sPaYxcWVwJpHNbzY+e3bHZ5t8eJXuQ4udhPn3Wx6bRTexT4onGGXU4Nj6k1NKb9SACm5vhdW7fFTLnYLXI8W5bX4rsXdxh8s//LPSk0POQPHd1HuSMmUjmUnr+S74aewL4k2/f8ywYJ7wVzTzPDAi7n4q1CBMHlsvR03MT2c8a/LJudP4JtdD0PBgir9FQRQivubQ6J625+uW743XYQ3LU70zT3sR1NyWcibilLg7ZtC+dsujaJwoBVIhk+LQiKiUKfGpbTfw7c08EF4mRPY484WUa5lcHmo8/NGTYT4jotHSdZP7mMrfik89zfNplSY2zgNjpazeF/JpMxIaXPjFbKBu7/UY7fMs00Z09TELbLuX1bcrJb786ZPvekWoz7FNaDZhHuoS39fwBh2tspBsI1GMN/gm/U4HESRPplS2XSSJvIvm6u6+Uzy/36dH34UKwMJocyboLkZpd/UmR9ZNwLTSbaXpcMcz4ef5JaVkgphnx3Oqge/4/lYbTpYf8gTkcD/wOY8+o220cNWysM+F9lWWyX14YlA55YeTmQeoPAU7k5Nt68wYtKo2XXGaoy0w9/ilRbTsSXKDe2yEXbLJvWHlCF2osIhewUdCTiYzXTKDRRQJjrBTboMRjDu/ao3uLbBVVHDmKqvBFk71FHiK+0Q496z3lOrom8Sl7WfyG8YQDIPzHjVyWnVlZuQEDqy2uiaXHl5MjdDJXkXOsdDQbLmQGvRBI0UtUf1q5NcPKlGYHYlkuC1/7Q1hTQhacWRMCPsWz+lxHsigW1vygMVxGoCdH+73Bcugr8GqWzDRDUGTF6bRZD+yp1T0WI1k/acCexfBtNeymD5p1yuVnRBxh7iQfq8VKaQrmlnBaJi7H130k936zmo/VJI0l2pd+ndzaZ0EAeghrcVvRl5WIpvGLNtFh17Gjyfw89Fqki1ZNos7Q8TsQiFvhJ/ZD+gkZcQbTPeHxssZGKbOut+rDwoEsH26orKY4inG/up+t3j7JdB8T6LWvi7cAkdgsPZ6SUx5NT/5By6+8hMfzxUcRVpQ2QNiNnVyyZcSxbbfy1fFSCI9HVlI7Cct6Ab3yoQTLsZstj9jwMxLK4fOjeJpvbU5qjGMxQMHmHJBGHqtnB9/aWaTfuwPbjprUmjL2dMgMxFbHRcvsOLs+/zBNAtz7rEfo4/x3foIey/ejdq2AU1jzCM57tjsnLtaGrxYz1mZsgyyAqpnebBGvGf1B6T1lO2f3ol0umx340U0a5BDdfadwSnuQBsygKw3cJNLNPzQrFVKy5XTOyKa9id9/QgvkgXAinI9oVX3s1vih4B3fZpgyrZXA/IuuMwtlbJUvz2OK5LN1G44Qd4k8uGD7X3MrATmpaN6cChZFQeEwlAkgQCzYSAeBehXMOYvUyPmiE8Qly7Ee3LrEDHG/TVxml2bEvEcX2vrIlMVvIA4Iy60PwbX6n5h87j06TYLPDL16mxkNNf5ypw4FCTTAYlLKZEk6o+RnzUNCM0nmII9w+LqMmFF6eQ2/XnJu3od8ykNJi/08FYJEzSJBGz5GP37Kfaa1LVhPtoZ2y1rclpDwzJumY4LYbbmMGBfjUw5ojaCIze2s3KboDwT906nLKuiivN9R4ZiiX6rRcANzaawmiYaDPs6tSloW3PLtiiu1EsYSqzYIiT8wFu+eyUwcwqQzdFz3r5jjXIa6mfFxeK7hjNlwu7SUlTLFLZk/0gr+qMx3jqAcw2e6vDXyJYqZmOGabryjg1m281O2wq2+9p6070+CnHctkWVdectUQF7fBeJopn5UwnfqHYaMcGPjGuFpYJMOs8jvsM9dJ9dzPfwY5HvtHUM1DldLlfrcnchcEIDuQpwT/z1tpP6Jt75KFGNsyC3wDLxfxlpfk8QsdpVtIg9raZO8H2AA75EqLLfWFl2JhRFqQO/SM+XU5BugHZ/54GHFeWDZ6pJyFSKb7r5HbDqIxvRsjPU+acgmiE6mzzsLRYOipQxDBYWyi/Y9dKtwm7KYfa3d2q3C8slKKjkN8KpIluve/39FQDFA37nVT3Yw/rUA7ntVcoa/ASKS+49GLomRn/NL/xF+7l3W/pOOsCrASdEIytNPTB5gQpse4EHmBB3Oq+LnGzKiZdyhXw/C9Mhr5YXYmlGbJllELYgVvOxrN6Rj/N70XTx622hY/eID+1oGaaGAmUV5H2tYEejKS4Lr/0uIKQUwg5BJk7Nq/qY7rUtT64zQo7aTy8N9VtfwvceQ35Lw53drvyIGYnqh9/fTy9+Rp2Wq+lqaxW1cxsW9v/q0RHk7q/73HhC28en5d8FWSTx6dujAio0RcCwM9Xc9xJWhuQVbuPxWwC/xmSZFMK3QKQQL5uaRBM6/qfRjg8wnASo454mGph+Xs4dBefRzXg9xtPzfXaYftxr6Ff6M4bk4oVlOx3YxR+yU4TFyYhpU2NKfxxVRInXaqEs7q8sf8+Qqz/PZhSU5GdYai+4Rlu9zHCTYZrBidBoJ+lAm+tW0u+Or+l2DyRsgbwIjVqXXlxBevVBn//eGRs+3yMoFgCa5Y8eHbha7Hj41kobLMQYW5bWa0cfce5fHelB4ZEGpb7rmP/SQMMXnsUflk8Sl7RKdiNh3hQXC3ciZM+Uz8ty0ZuSPyyjw+V+S7Hp94V0I+kO5RmV3iBHoGs5PZj8yY6kOkNshRpxhKfHGa7CBF3uUzFUmNLXSiborcUcyyEJhMMDSGhzscauhlMaNB9XSj54dRfy3npjjfKD8zamlpITNipTx6SPwbH+1ZQwrFfqcmPkhQZ4Mf2PwwWJweMZHzMq4gNWniwLW5jCrCEbQ3wR3KwuqSCijf00YbdnMvf6KqRzhz99LCgqXm4mLbuIJzXXlM+SIGwtBS7O8YuWROHbmCFAj1DBhED7IYhcKW78zP6pJTNo+Jv7Z6QFix5UVc3zYhK71OxR/0Ppif+lxYI+2jcEoUp2Q3gnekx6Kyoy9qZgEAxHmZKbak591IDe+pkw7nUuy9kDZFFqPu6hm8g3mCcbz64cyP72vB1HayIB9R3cGrQaf6sGViUDSrSZqtJCylMhWUp1LNGGro+wTvQ/JhzNHS5cHHjqdrnP2jHIVuuCBrdTBTO8x2XKO1krZZU0Tb88MwkRHpbyuBjbr62lseWIFMyVDMtaKaHqNd+2lfRT1zqblmTwVUxEwDi16N99j3SvrOSRwK3VYwt9/LiTBSQU3P98zvT8mExXUXfLaGwQUms6JZq04Xxz1DaqSa3bRlBEC/lRpIMEaHA+7fApw6BvoR7dw3Lk7KYy4f3m5IUPx5U/gjd7IMUz5BzadkKbBRU8qgFdKlyQDjhpSDqvxfw258gibECq3/z13hxy4tZApg1Q1BXOEcBDp8208XA0PSXMNI4NMWtl70YwnXhTRIVcy1yEliQCPU9pVBRa0n8liGv2PHqTj4/aBJkZJQf/nRpInGNaX+S8rBEemiXZognQKD5GuIUvS7JFhHrZjNLZGh5Ebpgzuk0DnT+2ojL2xya6pXyDrc9cQVhg4EDsHt/2+VmHk7K1RR8eEi1Mp0OxTvfO+Xf1F9vj+gz0zMSJGbrOa3Z/FfN4uVquWlm5CjX+jDAhPYl4k51Dzr0TfcqBVcNSxwdTi3KMGJLyAt5ryanDClbW67FcXVktbluX+Yr7h7od11O4bF3P9Yc674gInxEbLTrrUng1Mwb/acRkDtwTORGkHzkUnmTYEjeKQiMyw7VaQjyasE3nkx0u+OpbbDLLzNbbfd+wk+nEs6qDe8Jm5b39rVweDXPpG/eZa+3yEIc3Y2nHDziZNr/kPDfCYL0jpBlCGhelw4ez+63vfIWuROrrmBUwyEuRbe1bwoC5o2dxnfDJjUzqgtsR8LWCNMvZSpV5reYZHTT3m3wQ1+r6QaLnK36pksTLpLpcJW3vJ7mCVzgbufvSu3NyhB0YXmB4KDMeLyLnjsWDDLnbQ9kdiTyV9kcQ9pAOT+S5LUrnqPB7knwiDyb0bB/un+qXsEi7NTLRnnsp97FslI05qO1kdvvZP5a45QEnFE/GYpkVlNg6tE/+zAOStj8+GSMWl2c9xlII+n87hkJyWF1774y3sVSJaNzLNgVmm4RwdhxDNOijCf2KidgEicVlvtdc8RqkR2OAU0Ohi0Q4bx+Tqt/KZNO1GCuSATPZBDzeJy0pOGsPFKbclvEUUyggd0aXqgv+gcZ+mEOMcZrightxl9z9pH0JeV+ukEuf9p0cu7qTmyghrXIef6E/FG94oTYrKyz/PRLLg82xzhm6uDCizWvheRioil/cdWkKEClo1X46AH4uuCTs8JyqfXQO/ohyZqxpLbSLwFyIIP1x3LPekR+7cKhOKLZCij1ZzU9aqrtcaeE8QV/dR/nBwATNu3rwKm3BKYGpSxB2OGYGjmwlqCvZffzJYB6C5uwEaF94AyJSr/NRwvZAEH8+IT0DLqCSIDXX+gPHOpWE2Knl/D36KDhkOx6dl52ABWHQn26nJgBji6OOQPMQxKxf5QkN8k+7B89F1bFaGebwOPOqVnEjeWY6HCGvBYR2yP7zUwbyijWYwlcf1HzSj0K+iiUZCXvjKsWyUMYdm/X32hGwxuj64FPSWYzKc8n4U/i2o0P3h2rX16eAogjXkJRSIcLEj6HqgXh5QA+DYcyO5ZURtxX49gSIlEwAVN0Y0SLqAs6BX9yYW39uAbhwFKqXI72SSw58t02EGUN4FXi59R0w8CXPR6OdgcskJGyZU7p/keF99kVzvPChk6D5LoOQu4Oqye9hVeqOIrnYL/Eb1iv3kYw5oTrOOXBKYkSvlH25eDd0wmICSMqKpzWuvSmnzkHW0x5GC/LhEfrYTzCjBzfp5UJqc+W/K+zp97syWVFYKYDErCsslOa0YgPgqcaqsOaajrWPpgFTCyng4FznFlsArfYKLyxMDSp5C8V5I8cKyPIVfEvXpeOP88i06dN2rhWtLyXhtWfpVq8PdeadTbvAqYOktqqmLGra+eubot556u3U98NsONsMaPqDdz2wwHRn6681RtAPtIqp3Uhf0JVc/Ed3LjxcVLsS9c/cHS7xRcdpkBXXU8ZLDp7giiAxJQd5rGaujhp4hj5jX72cDGQbfLXHwPvkSbJLeyC2TyjmMNdcI6V2AqI67cV06zEVOcrbfMYhGOJa9dyp409Iv8JfjDhqNUCWzNLad2pgn+ePQqmyOn4qED7HKaiQf5+2FOEUN/vOJQW/3EY+sQHfD7/hY/TtJJ2Pc41zcH/InfBPcgm0ohHQj9WvuMxfYncS1izzbyEDTwYZItoy4bW2koOAuFJ5Fte9cWoqdtvKHRaMBMplmuNDNs/5oKDH9EBacRQoZ030aCYohPh4Q3QZZd4VyRuzh128cSWFz/OXwD2ZkkPCJY8oXGIp1Wxd6QllrLJrlXQ0H3sexXh+Hc1v2RAY0HUC1ammB0VlYeiMheDBDRhyXjXK3ktIRWkE0oZKoUWuzY5p5wJ1a8ZMBRaDamwT3TzlDjwauSAB/zUvrSHNEoqBM19AeGYVTysVQHC7Vp6UH3t1OdrI/uBLGbMpnetjN4s072abv+ahooauTJwcH1sAZF1wGmlgpLXZhSVXkp8GwnyXtAAcxWbKbY4Cl09+K+JvLX2R+bpPnzL9DJUS3EBjgpadWnUdfZMkPOjggezNzpjWRottD0ob5sSrhlLis+wRZmTlNU4pA2y6r8TDBpDqa69Bl3QHu98u+i7ZpDjn8oR/KY/B8yXJVTE35bQpajjEMteMnCMxF9GFJgH7vtTatmt+bqghhdEhAcB2DJQiFRe+LkNchEIv4DIAw4NWIOUJzDuxoY6D2OtbyMu4dXHO28CUtZdViHaD9DWSvTDN6XOPLPcGWXVd19LHfWXiQ2m1T3n8RXuBVK9RBwVVuKrMEvD2Y93LhTuzJBcE8/dXbJywk15ijgYSqLaxSkTrpJDGuu4hB/KjjU3Kk0ieVaJr4S6o6aY4GJC3Q1cSz3VYYzT9AvABu61FE7BA1vWin1NJgOp2i+aMlE0nwSnAoFgBu6ZlDy4Sr14Y9fEjnn7HJLNPxzu3ogGb7J25uP0HV80cdfQXgnVqD/uMyiz25dBDW7kKyBvZp3TEifYweVeQuwwFChUkAgRdfqKkL05GoH1zOAU9notdNBSf3mik86pDHsek+cOBa5ZLlP+B7tICy27o6hg+kqFtDt7z8KKJ6HAzG2zEDjqxkpIBwxrJryWzz7KMWoB9lOOuTatD1pfITDPXxQy4ymFmSoVHUU0KlLiM/R2OT2YU32Ag8nZzwwXCW1sF6JM1Bh/RfOlZOAa6TcbuL83SxH6cQYNhpTk5Z/sWakZ+4/cmpB9zEXDP6CGKF0sOcX+6dMGJXw2HdpyHkPmawy2PdI1V/oPiKtGGGRwj5Rti8CwoxfSDxJ6iFXhR8fIxNge4vEVuDEAmMV4kDih9ZOXOVIYlFD29MN4zmL4ngJJB85TfP0fKM/3m1ZMPrVyzFuEt+l1vD1jX84hwdnCSkHTyZWwpTuODN1uefXiJzbBFUnk6vrLar0u8ZLLnbAI6/ix6Le+nJ+8ppkM72M8gLYUSAufA5jGMFnuJOcN8Q9UJ2EZL3a6P6KhwcLS4RBZat9V2Eyrkx3IuRCqMaDSSWrdCbogoLwuGZMS3ObxjOIgU3y1FJt6LIRR97UFlO/cJpcQyxGKrRIVaw+0VvKes3VJWwsgtkxZIZ0PzmDmqdezJXUytrQTJDVLclgoyWE99Hd0jFmGN55ejFlOVmp4m/Mydtf8hGGXswJmSZNo7jW3yddtjpUhAgSp+eufR3rknY+650Vbk8++guJRNyN6L5I3xdSH97BoNmou19qFN4tbXwwvDnDQPr6YfpvjLGBELuxJGdiZx0uuWeXvu4deLIgaebCxekZLUU7Z75lFRvLR9Q6EKlFRGUocsGVSfzLQD8qmnmnwoMK3O1J43t8uY4VdkUyxY/bqRr/ttr3P8ZGGigcUZLBo2ByRdCHupPcDJw31NX2TdT1k/TA0ACDy0TXfoQeE/eR0/TRY2UX70grH6tHpeXf8Y1t1TosAj2ouvdpUq3fItuFVJgn2cKtE/ufkH5M/n544A2p254rQsFb7fxfEQCbNxDV9wTo3ZQFS0fRpgCJnVneShAxSLgheZLXKqMQ5DkkfJLmw4eTW52YbmvCuXuVYY/M/Iukm29P4c5x865gTWZBGapMXrXzwyRhDsdnT2oq2M3Rfu9iwhE2h2fhSgBGiHHaDBqUxX26m2wxdsYsoSq47zRj+74p4Wjzr135NDTkjHvNLWNLezkc/8JA/UCkexTSfYw4QXUtkmqmh1RCHWFQqLn0ndWiv0r5/Zy91u6wi5VFVnKTr6dvZLPVLirJBAWpIxx/M1xauxdLa0Is25DK4WmuWuaHXyHIH0h2ZvI2lcdPdT3iCnXuN8NuLBkIr5ZL2wbjHoAKaZVNQjcSr2qB6f5ptNfE4v3kJNWaAMdbuHTpigvfckij8kplW6lqqpE7rSKK3HvVZ9SnD7GocaP7VW1vZ3TCMBELgH8fP3+FncO1/jySTO+gax7B2sAitbF2+u4o4Kux08d4YO16cFHV8n3vkhNhv0ZtiG6qkwf2Sx3w7ZZXM31SjuA0VHv5cKn4KZ7eoUcNG52MwUpXWFGpjMMjUJkBpbGvV+Koqsn2Eyxnr5e9dZQZTkeitdf8pPeUhinc6ytMIB0ZFUsmwpG2t56KJT38QHUiriKcU0bJSeNb6u3DvSag1r9a4zFs8CIp2Erwa6i2HhCIxOzgBMKt92kEp+788106vXRsBRE3WP9IeYLc+sfqkilM/ZkcBBtP+ZPs4oaGA5yviJaH3cJSn9aeIR5sfljv6w3QVfiLIYA86wp8Xnjayj+vReI7xxU4gbrFEvyal09sTPR2H8uvhMSZcPqMFQSPkzHYPsBzZavgw3v9pDtNnhTomiFGGdU+K2N6ZlNAWe+oTk4dyGkkaDfOG32M6hJhhtNmI27ewac3bv3COjc0e9femqzZLdTANgiprYkeEhNmJvL+7xJ8r2omx0PounJr5X+yzgdyYgqkA1hiEe2ayrmycZsuDAS850FE1xY8zDnqgWnLTIx4GUj3k5obmRV8Uv1IBFJLxqWVTCm8oR5RnOgnMb0sFMrucshODxGjn/ovIFgjHO+RgPz0AUFlrg+f4meZ75VtgTbVSVrfIi2zDOsB/j4dRekm9rL+lT3AC8ly2OUwRPaRtUsTF+2OSwyhap3HO8hUlmPUS5Nsrhvf/HUnXVb9o5yuBHHTzaEOJpbZ5LnYfCdhHMNheSrpsJyx14Bde4QRWXOOvwzhR3SuUFq7BFMyZvf2Mh5JPLSayimIUujpLJ4ASUCnGT3wWm/DylutQs3cIfNnZ/1CGNs214jiDmG8tfXaXuSkDOClWRkyCFY3hdU7uf9rlikjmvaUIXaltF0TjhtVlS5vRbVhdLCrcT8CBMIbOlaSmUAkScfkcBZ3ocrTBdbq9mt6n8XmvuR2Uc/GkXh3t8UtxzIT5eJdZThFxlm3Ou92hi2+w6MPzipdReAdV7mMF9pqlbE0EKM486oFiobzMoUXWINSJDs7PeHYoPPz1uYQd5tLBcynwiJbIlV2k/JxGVywrtXsGmd8AeHeEO1gJb5QyN6yf5rvVQrMRiPQYX0zWTx49p+uXIQiTT1Rqx1FCLlPiqoBSI1qO1fUMzQZ/Y2JgZZBk7QCcJwct7CsWxMUf3P6tldzsXx2y3Z848INzKXS0cwwkLObEpvtY/doZs1+Odc7ohxVpowCGX2VRLnLE/NXGT4OZKHkyLJrVpHtOf6cW8+I6sNnEfKi6mzByOfOaW3zJyFdU8JKbWWkGJitwIRWuhIcCr9lJX7pzU08GCePT2D78SflzbWi693kkFOaoJLZFTs7ci2OMOvy5a+jeT4PRauWprRofMfNCUUW8OMoZagSXpz0hHJ+QIfHM3chkWY3d/gwtDQ8sOFU1Wi2HYNQD5V92AnkUho5L2qzE3h1Irwu0GF4Dfgu+j8klQ8G9buehbS1QZscYgSYMJCesX/ffvkI9qZSUhZHWgvokQXwhjNqGxMAU6CAESxfO4ghL7qz1l+c1X08ztHH/apN5UkxCNhmJn5q+1hMzzgNMXpdogJZL8MhSEcW4+Ep+df6UgYe+n79wEMrdSeGhgNFTrQC6uHnB/v2TN//n/AEGINnUKZW5kc3RyZWFtCmVuZG9iagozNCAwIG9iaiA8PAovVHlwZSAvRm9udERlc2NyaXB0b3IKL0ZvbnROYW1lIC9US0pISEkrQ01SOQovRmxhZ3MgNAovRm9udEJCb3ggWy0zOSAtMjUwIDEwMzYgNzUwXQovQXNjZW50IDY5NAovQ2FwSGVpZ2h0IDY4MwovRGVzY2VudCAtMTk0Ci9JdGFsaWNBbmdsZSAwCi9TdGVtViA3NAovWEhlaWdodCA0MzEKL0NoYXJTZXQgKC9DL0gvTC9QL1MvVC9YL2EvYi9icmFja2V0bGVmdC9icmFja2V0cmlnaHQvYy9jb21tYS9kL2UvZWlnaHQvZXhjbGFtL2YvZm91ci9nL2gvaHlwaGVuL2kvay9sL20vbi9uaW5lL28vb25lL3AvcGVyaW9kL3Ivcy90L3Uvdi93L3gveS96ZXJvKQovRm9udEZpbGUgMzMgMCBSCj4+IGVuZG9iagozNSAwIG9iaiA8PAovTGVuZ3RoMSAxNDA4Ci9MZW5ndGgyIDYwMzkKL0xlbmd0aDMgMAovTGVuZ3RoIDY5OTggICAgICAKL0ZpbHRlciAvRmxhdGVEZWNvZGUKPj4Kc3RyZWFtCnjajXgHVFPr0jYC0qQjSDcgvSYgvXeQ3kFqSAIEQoIkdJBepTfpCEoHAeldqQLSBQEVpChdelFBvujx3HvP/f+1vm9lrWS/M8/MvM87z+y9VzjZDIwFlaAoB5g6CokRBAkBpQEqusaWICAACBQVAgJFSDg5TeAYBOxvOwmnGcwDDUchpf8DoeIBA2OwNlUwBgvURSEB9zwRAJAoACQuDZKQBgIBIkCg1N9AlIc0QBXsBYcCdIUA91BIGJqEUwXl7usBd3LGYOv8fQnggfACQFJSEgK/wwFKbjAPOASMBOiCMc4wN2xFCBgBMEZB4DCM7z9S8Mg6YzDu0sLC3t7eQmA3tBDKw0meVwDgDcc4A4xgaJiHFwwK+EUZoAd2g/2hJkTCCTBxhqP/chijHDHeYA8YAGtAwCEwJBob4omEwjwA2OoAYy0dgL47DPkXWOcvgADgz+EAQEKgf6X7E/0rERz5OxgMgaDc3MFIXzjSCeAIR8AA+uo6QhgfjAAAjIT+AoIRaBQ2HuwFhiPADljA762DAepKhgAwluEffmiIB9wdgxZCwxG/OAr/SoM9ZjUkVAXl5gZDYtAkv/anCveAQbDn7iv8p7muSJQ30v/vlSMcCXX8RQPq6S5sioQ/8IRpqf7BYE0k/7Y5wTAAMaCUuLgYCAB7AID5QJyFfxUw8XWH/Xb+NmM5BPq7o9wBjlgasEC4Iwz7Q+KPBnvBABgPT1ig/386/rkiAYEAUDgEA3CAOcGRJP/OjjXDHP9aY/vvAfcBWAGx8gMBgL8+/7qywSoMikIifP8N/91iYVM1rfuW5vx/KP/LqayM8gH4C4pIAQSlxIEAEAgkDpCQEAME/jPPv07gb/a/rQZg+J/d/UdGLaQjCiD1Fwns6f1NxOuPMnj+jA0v4J8V9FBYPcMAPP+WvzVQDAjBfoH+z0PwO+T/p/1fWf5X+f/3jtQ9EYjffp6/AP+PH+wGR/j+QWD17InBzoYuCjshyP+GmsP+GmhdGBTu6fbfXi0MGDsjSkgnrM4FQXeFgHf/ssPR6nAfGNQAjoE4/6Wlv5uBrYGAI2EGKDT8130HGwUE/pcPO3oQV+y9BY1t2W8XDDtZ/6yrhoSgoL9GUERMHAD28AD7kmAVgF2JAfxB2FmFwnx+SxwgLIREYbAhACzHQIAjyoPkV2NFAcJgNJYzHO2K7YPzLyfJPwpAPD08sDP4WwnY6n+vfw88DOYDg5DMz6IgMuEuL8I7zmuVmLwFP48SLC13xSRZ9keLYbjePfF31iHM1ph6oGwPraYfeWwwVx45ORvAxPf1fMzH+lVuyGKGZgEGR61/VXlfsHDo29ErJxgrFMXoNC7xOGaVai/ZkIXC3grfijvVfPYiQqJHdP35l2eXXej1+1LbADdAySklWwYTJl4pv2sb95ElG8cyZtjSmjKB2sMq09NEy3T8EvcRPOFMuSOO4ZvvqlVC1vDHj69zB/ofix4WaffWiFdH0jDc9LvHlj+SMshAm5x7rxmNw6UsdqpSnp7EzlDsFsm1iGcvsfhjumigPXlQ1LPRSU8l5Ib+wzdNnvUosVm5/J7FQ2a7tRyTb8Jk9C0pMc4CtY85lDlroDinw5l7NaKIgl58OlYAQX3X+yvdaVRp2ZmlDu5CUxzhwzBR2y8T9Of28dnJIBGbdDmE5OCnp8riBghW9xFH84UL2XQADSMnjYEWnh6by7LnyB0BoZOn/fBKi9upyOONltcdwz1R+yiOryy0UyFJFp3Z231byc1aYqdvqcz41MQxddrvUN12vIn5idNBRgX5+AbtXRoy9xWl5ibYE81EKQpNqN6Z6KzjZOoRW0pHKAVPU5LTuH4tZ3m+UCX+5olcaItcumQw8OH7if1rqoY7iZR1qzcMe75dt01y8NgXFiGy1S7ouu9sX6rHfQ9zNwnetJ10saFsORWyLzG7WKD80zTIjqbsoXWBY/yPhJP148a9Agul+uj7iJi07qmgVbunb1g67w8kMGe+nNjp7eROX/fRbPx+ir9P4zCsIT3IHl6MqGxKFGtT+ThAG2NqNQDW6ThuIfLoeePYdPyNFGR1JnN3LcTddqNRb8/9R8UDZVUANQX3XISU6Gq1bjCXlD8+abRZkCrZiSQ1GXiiMVRkFimE4+zYRLKGUNBeoCvatuJ41BJLVf9dw33/tJf5I01bHbPwvUE/yBlecai65A8vA9EPn4Qt9MVf+yqhuuu+PtxetzF/wKQaqttKEG15d6n0KLKFqsgyceZNkYWB2r7OpciqnUjrjerWcpRmuj8J6JbPFMPNoS3u7g5PhoB2FNn56XdzvdssRtlqaYclu1mtidO4xz+40lYzEbfVr+isg3SocI2cQc9Z1fMdDkqqxwP5oxBkKuc2gJLi9z08ROHMXo4zqDB+x3H6XN3t3dv1gWcIBWYI32I0+9dq2yCjqi82FW6Ra5Rv4aXh2hX6Q1MJbFo34l5Mv/ixTn9iRPXTDjNtLpPV/eYgc9BTkedOBYbvTSnN9A3TJ7n+AasnJ4aBYNHP6mUIvPSuI0kf/ComwmdTmBRNc6WynuoVmXq2BbPFiZ9kKm3DN8PMUPWP33u15e+kKPTUp92WScutkxv5IC8QPrBaWtllzV75rSk9+9ak0e51LyOV9Lli/FxDVWcSBvJpRTuB/EG6kVyKTldqungHR8S6kta5gS1uRX2W93w2TQlUa0jTz5UHciYa5vMjiTV2KGTHeNjUQKve0V97rHwUzRhB+nXUsqajcFd4x+tV4rhVYeuPOdYWHU79QsXtLM2wyFRq2UUD7oR7T0feB3klzwgMcDSwO5uW6ioc128rLKe6882GS3iRv7sl994AhA5c1aBIVXymlyJmuy+aHmPyuV7SsS0SwOhrWBIV1qrPG95AVgWUmP4yxUkeQRyuQfrse4qR31OaoyPHTf+oCVsqVecPx7JrRf5ZWSvK6SNbs4HfXw7M56NFHLlVjnwXV2rtBp9PP1e0gbBKptYhGSUecIcxfLmmHX1x11Vf7tbuz0rFWVNAStkHhMBHA5Tao8VbX1xx32bxkUsQPcCzWmAj2Dn73jw2tzFtjWoPtX3H0cwV9/no0IZKEpGeuNaMbuUKD38lnLSyYsubzWbyuS8YTHaEu1z1dX6ifpkupNOYvVAmcSP9wtMWxziGREnsMEtcWY7qfZEX8n2WySpRdVZi3XgHe8TkWTmNjTDBqGBQoH/05MCQYsF0Bv8j5mw4+bXLcgh4zB059H61YfrTjH8FmV55KM6eMyf6W8Xmfj4Ap/Xdst4zutC1z1VmC2tjg2Hd4PJsm+MNhRkBUtzdQwdMISI105lSPPlKP9qrx66UwGjzTb1UkjHAFs9gl83Q/Yz4VRLTWauH+FnHK5ni+vsZG90Da15zrFKupL5UCXSNmim+7jKMqkPvVgGpLgy7oNwJ6X2jcJuqjzkOfhoqCuycoQGwj8XebBt1GaPi8SPFRgYbHF+aW6WvOt/yDnUmqN2Z2yiGclf1fu5mEmxtIn0tgiPM1A/gPEgIjJrvZoqb+3CL1G0koub+BWNfkQ655PjL4/l4yMhR4zjq5jxuVWyOjmbx2zbtD8dHTfm8mSeED/L5372HWPqm94+2FxfkXCOhsdN9E3dpL6hYTwikNiO4ZOI+zh2vmzgtxxiXDT2jgCp8rLOgxafhCbMMi+g7c9Uzb7R8uas+J7uhHFifsela/76XcMlol2dhZtxWZI6TEoirdHG54xbejhM3RrGJCHALQ02/3im/y2D4uY22OrzQN48mIDVxwes29R7/w6RnBax9aWqNkIS3L+bxUnQHtt8JV5+y0G1j5iLwLjRh2ZHzBioNm156X9fZNcQDSUt2yL4SFuTbNIIKlW4lvYxL4w9Yr+VZazWbOViK1SirQkiEajsymd/0W/QosNuV+6HB7s9dcXck0kIXUMLTTd+bXhe5x+An/KG+ad5vSqf3fnhAa4zqNdaBu4IU35aBarvuTbGM942/txwpDS5HVRFF179eZphrUVpLa33ViUF01Y1pXhZa4ZiE+KDHdItYIgxi+BqewGDliSWOJV043q4LUfSs55ogXgmiskQ4e/xE714oB5Bl7mdIQ2WvmQK8m5o6xu9oXXKgP6C7WB565eJrkh0f0tto5jb45fEyw4PSN04qwwzJR8l7cy/bsq9J+V1v/2wSrbIYJNyHediW3J8Zeb0UxcK3+1gqbsBjfEbrUSHKpcZ0V/uUxselsE2IWIBg9JzfAVQ7++KAtFcrB6Gqs2d4H0805KzJQBCJOu447OSWnbDsXCKACe6AhM/J4wokQuL41MTuPIZGHTxDJWT426hUyHP8xFMn9nNim4jme4pqw5m+7hL7VlDvR8juaPFoNepQMrFf29vQ6WO8ey4fyJaGPFRoNjY6b6xnu45Uxyzm4fHrq4tzN7KbCPAYmQ3nzR0h9hL7pPZyu+eGzXDmIMY195en/Qmsw4SE6BRcMV8hi7BEPOap0ee8B1+Yi0wKd3FKTqEg7YIi18rKN7EuH4Mqi4iYkEC/WxUaz1mWbz+IaU7cBpebG25y+oVP09970Tpn8YyxqEcUo+UL7Ot6KoQ/fSem3yr1zjOWMNU7am9DU9zda9T5KstO6hYzvfY89KehY0gJ5I1nVFN4jlJhfDVMOxbSJ13r8oMd2dJ8o4s6LI64o/G0vVIpXOAUFxl+Fn/admAUMe/EglKKU2+tNt9WiIV2D+57syZuv/n7R2+UWBZ4iZFfT8dv1M+YdKRR9WYlvdcZWyK/t713uGmrCi+7tCrZl0bL5n1oEelhO7i5aBr1PSAHJ+MOwTcxs/Btx0nT2K0HBiGBZxdTAXJXcdnY95keMf0Ag16CDXS21EEpa0Lg2udUPhIWfid3pWCBWoFXcgEulSJiVCpDoRI5JzOkKXsZNY2P55gpg4Q2hdXLmJiGWkeARRkYo9zltlhcIXZmbxipMyNDN7lB8BPY2qyb++HXe1GoBsXaupWMkCu7/S2lqSDR0hVD2s1uZVaz44cc+1JqRW10SS5yJI9sFACVG3n+3tdr7CjERM+K1b86TXfX381TztpYy9lRKqukXu588GJ8f4Ti9tLLxcm7jYSxrFHPkia+gp4bONK/Ja46Epg17i8QP17tuM78xONZqVXyx1de9p9IOxrrfsTfOu4O8jnT4LgqYAov3hoXCixsHbvxJq257NaH8S710aw0SG1ddnKoHH31K0e2W9du8410VggRCK97E/TFGEm28SjOzz/K9iODtHQq9upxabk9zv/4VN6C7bVbOuxgWHEMQUdufsU+ZaaiuXGeJ/nW9dZM8nVZ3/NcPU8ycBrhVnFZZ79QycAeLkavobgvGiHygrLFVUnLJor3lu45RVCTcdGXK8uMeWQjY2g8AUFW4gxXGZ9tAstgMvcFRBGHYoX+gqt5KEB2aaz/2eOzLtZJxt1a6qut+Qr+NAh5dXCTbOFDX263HbRslulmiJQ7m10Xbqlhx8LJGneJXo5Gw97y9Ux5ctz+stGXLjYN1MgjUQv5e4V+CvOqu8FyeucR1zodkGQs8f4PbjlY8sizz0vybTzqGhp1LfMVPUetxJ7jfAAEH8VorvaQJap6r7Se2zwLJu1kSqLdhj7xV0uhHS7ufeQdMs+wnEUlxEFrtrzuzIjJPfVz5XB15bC5u11Di78PcWwp/F5D2a6Cb56heDhy9EM07/Sx+22EYc2TVMMvWTH4DstltMLuR9caj54wm6Q+6FKflMS3+zmjRJXSjdymMXxLeFXkpp3gz+UnIzvTnU8Q4na4agWXeDNO17Cd+/SAm4/u8oFFsMk15CFGlmkmzvVQmEihXMSNgTd/ZNzxuLVmN315pejc9w7Pao0954J/BRNlKVuHIWuuMJALveTTeuy4rlzJXzXj8WhPbWnPCjO54KSvzRxv+JTjO8cLuZuMn0Lf5SpsQRVFIbyUNqIVjBnkWzPMMzicfLqBmsy9jFmbxfkyKtCny5nXhzzcOxlqQTddLgvUqRgpu6MhEWgWTPquBvfZiop1Rps7L3417ynBz1y729lURbx1Mzyt33OKG2/o6raRNNaHkz0Y8OJqqhk+U1n6LKqH06RzH13vbWLg6Z9Mh+5oG689N8h/xC+YV11eaProcZ36iem5AXu79lhkJH9lx5RlF0yCRgFYyZN+SgSHMjFl6zTIOLkSSr2i5rHUEkyKQ9g/P/kqYz9Du/5FaYJIU7rh+ZNlS00WB1Bq40q75qB/i3fYoJGt5WQ2A7kAyRMO9bK3GZqq84dmjAruh4S+k49bbxoscqrLtYf2DA4oRxGczp8WamjPGTjXP9RrsGrB1xq224oOViHaN6HzW5xyJF4nlp3OSIu7CLlmfxf7VFYDzd7j7rhc/shhH2hETEARSrgQZF0WTLWiJ+LqWAQ+QnnekxDNC6Lcajj0Wt7qPg7Sfm/un6s7vSiq8C4xvlz30OabtDmDzE0qr9tJEZSZ1y1WZK6HK99OIY4ptaBJFDJY1pJRKGAzeRYNELrRjKbbwTs1tVl7HpYiN2kR+/PGZYpYw8vYYI9gXYy8r1xNJN9qiIMKXtdDW7JOTD+TkkddIYK76by/JP3i6Jr18dlcwRCzTgjudlihQSqXBAZDgXvqqeEno+10d+FoMp5VptmTl32zXub7B+P0jB6vzpH9ixOVh/UK3ffC2oVT1NnFTYVqgfLrBLjH/B+0DafDgQzsw9OVk3LbIQfozcXdMB/UPZvldxVsb7wvxPU/CgU+yg/GbI8EiVHtF5mtjJTX81dRFTdXVb+8YJGIrTdFh2Y/ny0f8F3/PNyXSmhSEKcidqHh4bRiStBHKfaGIzHqcRxXQG1iY3cs0cP0jxoVa3OS+Y+3yAprCHS9Pi/xuNzClIatLgHIDsaLkAe7OTZjNv2GuG/M6SP055IZo93IheKeJlTvExtZdd2ayETpybrc+UL0kzt0va8DVE0zR/5SJvA2xX6EtW5QHmSWR3oOllincBoRuUpzP+suq3a0UxR+ef/Gs57ydQoaxbhck6o0wAw3+JSdc0A7wN5QO/BT0evVQ0/VyNzUGPLAI67gyz5JKaHL2dL2dQdGL2UIf5BaN78C6ZBYSTQXQurYotVAfgLpdEyspb4urdCDSZtLIjA21R+DDJC7iKi4WRV/qtSXkA9xNf/uWlxU3ok7YlHDHfbiK0sJXS4FbY+saemLd3rvJXVQUJf36HfkopRR8qRZd5gYDzImMdwW6VBaKX41ibp9vTUCoixonKR/v81hnFtrnnAUw42BA8r89ncJtMVQRi+GR5a4kQSWGac/b3uj3GmON7PYstT6DPIk1BVQ9ON9LgYUUiuH1ew5r5xSlWPz4sb65w2+JhzLKNsaJuqXp4p+6+ZTviFaH+aJbMfjaF7SGiDfuiqw0yeA/bR/S3I7k+Plkn1ooKAUraFwX/Fn3XpYcL7C3KvBoa2p2sZrrJQ7zmt4NrElDvvdxJeb7VuVdlsispPnoxkD/PiUOxjmnopaq/HcumiGe4U/y/UVn3HqJmuFLm6SYUoa57wIwiJnrBlbhR1WJ3sPdc3UaYeBYldj/K5an0XMpeQdMwLLmwGUE+d9TceimKimyqu2QpeKyJLeAPbShi/HX5NmSQoGh6xop3VinQtwEyypaet551BiEq60Sz9T73AGEWqmWOMIVPmMBRyja9A+u8Wa+bLq2lSra1Fz10d3nUtvtN4Xn6CPwHETWJx0NhY0v0+dSI43do+eu7n2bFiubO2Dt97nvHowokI6huNcX2zJYC3cu9duIkYNGMumvSgaMzHCbvt58pvTg59SwDpHtQEeGXd2uZ/DjpB3QjmuGujdGZWR7ZDVWGL9bwfb9tTDRKXuKZn+LUtlWuK3VDK0L1XwhL1r89xuElZ+GDZ+y/Hc8AfrpIrOcdFRcgudT6Y38aeuEpYI9ZbFnOtcZA/Zw9fUUuVHIwOaZOzxKfpJvX5wnt9eqDGx2oXMEtjshcJwY9k1HpsyusQvVRKE+8buY7x8ZqQ9oYbJdJ73fe1uvjCBsqdWPHXgX3+lH2kzh6jx+cQt7n24Km7xQoWyW1WbVZ+Q4VWUYw6Pk6K3jWOJWdZIj9VW0MPtOJD6t01WWwolUa8q4sEV/RyvqRrmJpFrXqQkft8/m7Qsfh8Bzn+86XDnNOeaVY6f73jKDAc+DFT13nVG7DHUSGnHnqc/QtE/Se66r7l89370mvz35Jp1X8Uv/VetpsvfiX7/pdCrKTMI8c/Yl/VVdpAoR7Bx+SS27V9XLI96u5dOJAgtxH/f6bm2ZY3TM4r7hT0z6Izb8+twAC2b/HvRH8CG+Fu9HU9tZ56n0fPOZAn6N+snttbqz34XoTQq62mg8Hm9sU10O9qwn+jYW9lpInml49L4sj0/h/1dBSLHYf/UT6a1LlPLd8Za7d31VyNbMe4eZa66pM2KBIo9MK6XT0TTMxG9wzEY47MvfZwsIbu8G8LuRoPni/MvK9jpRRo9STLVYCli5/x987Xo0vuH3IxEN+taS08yP607RBu+YDzerzVGUBe49J8CkhgY/Qi9GHAoF4NXHnIK0Wj7WevdLIwNX79YPaNT2yIUWIWZiUxRyeneQtHw3hQMuQcZNPv0THqK0XReZLJFfggU/e51KjtFt6F525Mw/cuTyeS7fPp+P9qEIC1HLpC0Skuui6UPc3PjNIk7W3LbEtRplvRZDafnr/e3BJTEkMNaS+qx6cK5ChdvYrOWyWzAaKEGPb71FyZt9YBJqaSr0SYFORPWKcZP7BtuSwDWKqdrTzwqDr2gH/V8MH1rPM4Cqot5OTd77Mp6NrxIRn0PmGmWM+35N+fNFVD4UJngyufMTVz5OK8rlfK0eu1dqerOj5G+3j45DF/D+jvEuvviS6YF304iaPBqffN+Zn4nPTemvs5w/9tmysIgAtGcf0IP+1JLfZh3Oi0qV/HZVTxhUbjHxQJP9XJ39NsAjeNJdFDdOpDCJ3NF1d2WaKljiVTstMr4rY5xvBlDmOnG4SjgBXcsEI1yPtKqdal9lX0t6ojl0+xmtl2NykFqqTPF5A8EiTOaNV2vir6EqCz/WKJoKK+0KX4DovWWe+fTVvxke9P4686LzjVi4IsjtqICxUP/cmOgwEoYrfpkhlFltHKjAX8bjuQ6b80dDriFAwc82dQvQlqTGZV9e1fIddJrZ+DEOZbNJqe6sRK68DTeCP9BhcPuBZG+8tURp9obk83U3NyF2ciUCOYDrkKqhGNkglTjng6RaFxWPRl/5Zfo9ISGNMo2P4zA1ToVO7UNYTmVtV1mUCquOvZBGC77SGNSjTWRPXQMggcSL+lXm7LjwWUQo/EhOOzn2ncgx106YSNWsAbR8FkX/Q9W6JGrCmVuZHN0cmVhbQplbmRvYmoKMzYgMCBvYmogPDwKL1R5cGUgL0ZvbnREZXNjcmlwdG9yCi9Gb250TmFtZSAvVUVJWllXK0NNU1kxMAovRmxhZ3MgNAovRm9udEJCb3ggWy0yOSAtOTYwIDExMTYgNzc1XQovQXNjZW50IDc1MAovQ2FwSGVpZ2h0IDY4MwovRGVzY2VudCAtMTk0Ci9JdGFsaWNBbmdsZSAtMTQKL1N0ZW1WIDQwCi9YSGVpZ2h0IDQzMQovQ2hhclNldCAoL2FzdGVyaXNrbWF0aCkKL0ZvbnRGaWxlIDM1IDAgUgo+PiBlbmRvYmoKMzcgMCBvYmogPDwKL0xlbmd0aDEgMTM5OQovTGVuZ3RoMiA2MDg1Ci9MZW5ndGgzIDAKL0xlbmd0aCA3MDQ3ICAgICAgCi9GaWx0ZXIgL0ZsYXRlRGVjb2RlCj4+CnN0cmVhbQp42o12B1RTa9MuAtKrNBGQANIhJPSq0ntvUhQCCRAhCSShhCIovfcivQgoXQSp0hTpCAgIKE2lg9JBpPxRz/nOf75717p37bX23u/MMzPv884ze21eLiNTUWUoygGmgUJiRcFAkDxAVd/UShoAAkkAQSBxCl5eMzjWDfaXmYLXAobGwFFI+f8FUEXDIFi8TQ2CxeP0UUiAjqcbACwBAEvLg2XkQSCAOAgk9zcQhZYHqEG84FCAPhCgg0LCMBS8qih3HBru7ILFl/n7FSDgKAgAy8nJiPwOBygjYGi4IwQJ0IdgXWAIfEVHiBvAFOUIh2Fx/0ohoOiCxbrLi4l5e3sDIQgMEIV2vikoAvCGY10AJjAMDO0FgwJ+EQYYQBCwP8yAFLwAMxc45o/dFOWE9YagYQC8wQ3uCENi8BGeSCgMDcAXB5hq6wEM3WHIP2C9PwARwF9nAwADwf9J91f0r0Rw5O9giKMjCuEOQeLgSGeAE9wNBjDU0ANifbAiAAgS+gsIccOg8PEQLwjcDeKAB/zeOQSgoWwMgOAJ/kUP44iGu2MxQAzc7RdFsV9p8KesjoSqohAIGBKLofi1PzU4GuaIP3ac2J/OuiJR3ki/vxZOcCTU6RcJqKe7mDkS7uEJ01b7C4I3Ufxjc4ZhAVIgOWlpSRkAzAMA83F0EfuV3gznDvvtBP8y4xkE+Lmj3AFOeBKwALgTDP+g8MNAvGAALNoTFuD3vx3/XlGAwQAo3BELcIA5w5EU/2THm2FOf9b45qPhPgAbEF57YADo1/Wft7t4eUFRSDfcP/Df/RXTNDe0NNMV/sP4Pz4VFZQPwE9UEiAqJymLl6u4HEBGVhoQ8O8s/+H/N/ffViMI/K+9gf5JqI10QgHk/lDAn93fNLz+UoXAXxMjCPh3BQMUXsowgMA/yrcFSYEc8Tfw/7f+f4f832T/K8v/S/n/vSENTze3326B3/7/ww1BwN1wfwHwSvbE4qdCH4WfDeR/Qy1hfyZZHwaFeyL+26uNheCnQxnpjFe4KFgSCJL8Y4djNOA+MKgRHOvo8kdHf7cCX8MNjoQZoTDwXx8cfBQI9F8+/NA5uuI/Khh8w367YPiZ+ndddaQjCvpr+MSlpAEQNBqCowDhNSYuJQXwA+OnFArz+S1vgBgQicLiQwB4jgEAJxSa4ldbJQBiEAyeMxzjiu+Cyy8nxb8KOHqi0fjp+60DfPW/179HHQbzgTlSTE+iHBVC7teGtB7XKLN5iy4NkcwvtkUmWHVHSGH5PuT7ueiRZmqOeajYQyuvDqQbTT0LG530ZxP6djzsY9uZ/XAuTSsPS6De/UVlW7Sg78depzPsOhR1zfmdTHrkF/rvicYctPY2xDb8yZaTp6EyXRIrVctPztowK9ZyGwAEoOSQjiuNDRurnNu2QRhtxXVjEdtvZUsXdwVtk+Fppm3+7owwGh53pNIaw/oD98Um7nH/7Gxv9tvudIndQt3X1dKVYQysjL46XLkDST2sTInZOg0YAj4VqUPVZ6kJ3KzFiDC+OSJE7TiYnf1G3BtWEAJQyn5/QBkecSkJrZWvdH3zfpVSq2LiIGLy6b5v6traSI7bPGPk65nHodaOZ8XefncZDG32CZcAzKodt2zIMkZZrODMGtU8O8e+lYHuB2kEWaPddBcbdE2QMr4E7PRZAj0SA3yk+GCofsCQxNezzSC8tpOEXDd7xcVucfTQ4mKfv3nGg8RpiS/L+6mQD/LFOtb6TdXklazG7ZdPCKV5HjCktZqU5y8jjjUXUzrYgQUQferU6IZm/x7bOSIB8jUL8OyEC/DB5dI9tZhhrUP989AJGdLsW9ZSSs9SbXX1MwxsKmpLMNJP51fvyNNGjLx6KhWaP6S9qKjyssUhnZ9anTncsL05o61ViLNVXHVTgWz1Fq8/uj0Yd71067G2EMdnYvCoaVxsZaprN00WtjZ+I9rUk+rgmTChXMEI5UKqtDbikQ1NgagrCfCRJWk0XfKu/PDngepnrLU037K5nPYJrqRuyun3sohgwqH7V9vLIebsN+a0+PQ2F+06JhWvRvRBxH8GdTMosGwJHsiKjPPKSz3/VmzwlWoDaWMxSd+gEhn3lejVrWBJJgnOOlc1kQq29mWOLrf1XTRisGt9aHd3uVXuZwZv5VmiSX7egDVRoeKCg6FvoGRVjYVQ5Nu24esVmhy+7Zrc9tmLoIOsVu73npsp7g/oBB/yX6GgUJ6Hse/0bOurX3ocLsFASOSYMJOgqz6vTIfWYGwbryWhqXypfpqxAN7Ya5kXoJKtPKHrZTyXWxgYba0pneQHU7AXf7oOFsOpLH0K8rNzgYae3n1eaeZ+KQqX0ZvkkHpqsijEA9RM1qL7Sh8BUs7cICAkZ7Cxc2EQuMTS/9rkNNLdj4Frm8pch1lt1Yps6WJEQAvdw8bW+l73JMCeUepOpfzjt8L3I15xSkhXPrvM0LSj1OM6GtJpyez5YkvyDqHL9xWPUTesFppssenFKoeux30tav+fDoiSH3lhpwjEzYCC7Z4cSoXkjLCuxhlFjPHnlpe1ULWcvBCupvNRHirymqwo5VcVfAVywYcGNdPrYVxS2elJtipaQlphK8BZiRP6qC5eKoKLsmjnlyWGm8ETOYq6DsbT8RZZLTuc68YHPvqgR5lf67/n003n6tFWu/XS7R/0bQ4HzXJRNotZta3UKK6hBeO0CqDKJXWUChKTRRvlURbU56/TtDkQYU/iVLgCvh8RhSglnSx3RnvZSWbWIjCLyzLlFYtrl0cIWd/rhzhI2AGqijHMoywfI6nortfBbcEXRlA2tHlPyz3PLvAMevt7k8haRJTi+tTrR1mUcLrruDs/LbH30j4bqSdAHnEXYTiytIhiHKlXHJ+7tmIHfnKuGMlt7gykvYUCYysaprWxN3ruUuoe31xbjFo5lnVw+3iZfW2/6lOUtH71JiufboE5BhhLKRj3zEh6Wj2eZCLdozC+TwoFI2bVelUadtiN+QAe8GX7IHUS8hCiC2qYxp7KvtnkuK5W50j0aFRNIJsswz1IJGQzfjKI5c1wx6c6lvACCekj25eKD+b9Ys76KESkaqRItotuBvoPBLN396VoMn7Su0harJJWW/c5dX0QmFg9EUv7NUwwieeDULdpCiFY7fv91w9+tozPUNtk+dymZavppBAvSr0qPJgn4GBZHcsdPc2TSb5eyPjF7WYeNViSqO/DEz+EKt/YS+VlqTg4mlw+MVLQ79vJ99Win85NcDtmYf2wA2Oyu8p9mlzDyuz7FK3XugZzxr6r1Q7kfZKVDLjKfXO7TOUhQnEVerx9HgC0CtsqdSsCgqPHdVXBocfK63O7l4Ib2bOXJIuFYBp3glJuTjrFBUkKuspSpr4/Tb1iEHfDXubny/SMe7QpxQx6ThcFH07kU6LT7cvcSq9QvnlkDFW6ytXTmmvn7vEpI8rnnPCwqSGbfNqWLXqVpo5djt7vKbfhmJSfXM+8bMUxg0ih95A6H6vZpRLUcre29r1kkkUBZrajNW0mqi8bCeS7Bi72glMLt88d/AOpgy5pJtl5kjXvHvjnKRtzf37onUGCatQjBYu2N1zN1uGL/dx+Y/g7O5zR5NLrwIKVFS29ca/xxsPww55ui5tstm0Ha+FgYlsQcSW1mOIYTmvTX3q+9Lbf45yzNzEKTSxblz77aVDzCdIzgUD9ompSN+5113Y8nhB6L6Sze6PRTjZnt5jn6LoEB3kTvDSUrruJmWMxySxV3XGCslKkIczhUs0rC1xaobvriFCWMESmwuhV7eYlpWYeixGCq2QH4cpMvExDc7Z5nQzsCeJscwM/p9n3FEHFd31Rwq0bR6eTDa8aQYdjq559F/I255WFl9kb6xO1F/S/nhioEFVVP09meP0ybVbTuKt/7VtBSG1LhNUkxLI+wsNfd/KlzOGaBlkF1xno3nnoVw6FjiE+noCKi8FhMu1S674njLt0nbEsedQD7VfDkrocdaeM1V+V73WTsVe2BBHLzRf1hzfMM9Dy8MUeeVPZ7g34BqDkDHdlf/Zbc2A0buZqvI5V/Ob/Kbcj8pLpzJ1Pkhvn4+mnln3sN/2PB6Y8RzK+WOwurJPKWqKK2yZkLdNcXwzEQFtjFKT4Su19PiTto1ghBTLWCJrq3Ox9YaMsipS1ZFIlmmkXEhoKpae6kOAIG+tmj74UD1KNcMfryrxaU/lEL6GONdItD0XW+68R9dSEfmQJjdr2OZp727BeFGt2n8etMH+kzsw+vDQ28Qln/W65AOOQ5d1dDHSfkdJO1+An26zXkLrMlXpyhxo+rqKgiOSvELIVJbCn3iXfZfok7nbhg4wicRxRZ7F9rhIv0Ce+afTY7UTf+W1wPavmTMD7afHbN3L3b4U8knVa293KWiBjfLGHDnJuYZyIne9KC460quOKsi8LPCJRRKQ2exIQhDMX/Ci+l0ksN1dLDOJpL7pP+WbG8EbHADLXvUCzQW63rJ6KO/BphX+KxM/yABKBYi0im5yw+0SzVQ6FQPT0j+X6awScM5Zviax1NKU4HFO3nTwVGtx5xPKauhgnl546K9BecwgLcxHceAxw2qJqsmdMNX7sW1ga83MQqYV6o/hslRj1tWr2TrFl6NE00c6FcccLxVlnTibrhQ8GbXvh+g3EjVycE1xq0o/KV3nP3uKuzd4vXPO42x2DrdbNY4DsEM4YMXC30DOvWgUvqkaYCTwLOVCgiy+Magvwzuw66U/1/jB0J2LQVjgFVkNSdqP+hZqqZUVg9WVu1Rqz/S+921hFyQP+9g+kKf1uUIJbAzsUU6VRLKtq4lyNwqgVWirFm7HN4zsFpwlb4yFXfOmxD9T00mdM3lPT08qEUXpwE3VLrhCIu8dZ3DcHUUL8qY4WbxTO8hCILFRDSvPfemrQG5xuVhKtSfl2FzbTfzQpDtLIE+fgER+cVqNou3z/no+a2tip9vE7hIHfyZoiSVQlT4+DzTAp6JxygDfqcE17Irb2wpB9PqVHoTD+aq/1BOdM+tcjEcRcgxvp+13gBBdTeSRfBA0BdeISy6T1fuLjOlFT8QqNKp/KweetTjUNmLCki0RkEwDwlJC4taDnpMi0pi45t3JBbL/8HEgQKD3zyjAPSPA+35wwZoTGI1DpiX83dG1Wk8c1oQJ41m5va/tiNCwoa5DAa32+qad+3Mrj9CgA5LEBssNde17ScoQ4wr6+MI0U/V4fN29871kHaqe4pqC4L4fMFNZDZeFHygSgHfUS9oV7ywDrrKvkk4RjGF1bcrJ7pVoCk+bv4uSSclgeLN2yBCtoTvtnpRyJxRCduN6xtGUYg1gg619IysssDBtTbqE0GfxGhJEtlfmZ0FSEzKzp9LkW52UI9c8bQ7GPXuoLFVtmYZY7cyveET/RU0GhCeIOlUgJmp329VIyF6Js7UQ77lcuLbT3DAvk23TfVeDvCqa8kgZce9r7Y69u9fVC7IWuqIBjPiIUW1yiOdlhP6/0zUvJUe9ns967CMy7x4/HPiGuJrRiftAATdoU/K5ETaYxMS20sLK+VjSfoJBLCzo7+yYYraPRGMBgkpHqOp4d+QroMuOmVfSwRXJoz8CDA8XA2OSr87EfZucgv9PlpzGNzHlKXW2lBvYNqrXBVSgM1xFfckgZSnqfV3mW0hplwkYyySVNGR4ZRSxaX35av79UEXA/7NRGKpLrczJV65Oib/kSr9dzfGJW6aOtziqOC1y03aVielDYemGO2QrR3o4Y0P5Yvzdlrn/qJLcRVY5JUGalpVnAi+AynfRBbw8+1sy3InnuWulQXjCffvX6hOyYXs72bMeqX2Bp/2fRLta2G2Np5/6nAhmzRuGyOo9h5WlGJR20Hx2Ew39C5/oj7lxgPqle1WWJePZZA2dDWqktzc98vJ6y4vOKiWQk4N33nkGvexJn7qFk7cZ3zq2MNJF5sxvEhXrtA4Nf6/MRFMepZalmFPS72uMDLoI0hbyV9z67DdpRXJlPKwzQXTNhhPVKf+9KLS87yxo7/+q7mxpBLn1k4f7cfb2efz5qj+fN0ojU6FzYC1t+odkPJzLirfd0SCXzbuxeBt6Zi5197TZNPqJ9qeABJ+0FYtK19LES6RyW99ZVQqmnk3T3ZqhVGz64iWFshW98MGX2yZ3tmCQVYk6mAy4vfnKKS0vFEPRYH5m5iU4f5PfmL3ME/xACQc2/beDCy7Joa9ero7/7x3y55suHSOhuz7NPO6VpD9JtXaLsK4gbGWHUrvqc+mpM1Utg2C9NcOnuI5EtgaSuvNUE+CkyR76f15SKo6DywWS0A0itKtvHOL4Yzu9bTPs6Z5WL7vygGLSRoW9duFRn5dhV881A6sNeBaUCW1gF+0DnyqnZ4gyOxSdamVuUxodYTaTUr8rr/TvVss47ZmlMwr59y7w/ZnYmiwyuSNunkD7mTfpB06oPdB13k+VWsup836Z1WBHVfauempc0lDzK9za53aFpz1cnA9DOoX3RJzK52arJr9JNznIBpurZclebrAMRhV5fceW0R0MHOznWH6SqIQ+ZCgKR5rM/TK5HVhQrCBgvPdnVwoRJmccyy/YMUAutd9oXyIfs8RVJp7h2WwdZV34caq4u7ErdDC4pu08NJoUhervnyPqf3cOV1kXJ1mu5xiPvpWp9YWmeuGNYpHP54XPRqcvpcyrXtn3YTzR4X+g7ACojbdOJOgjMU/ausbWWONwS6HOE67VTQyp2JA92bwPUed3J0S6GnaBlM9p3uQkRpChfnORD0xOT3sy3BsdnwHmzM1fLLiyriWPKe95ZIUn6J/V87WyT0ZIxJ0D2b62PNarNNApgAq++63qaT0Y2Md+WJZA6+CEjF7wmvx69olhpYJ5WjQsMMchKWZk0x6lQ9DOdHvOsk8ul3/voxnmdxKOuhTmca7pIbgDtNyTzqmc1zk4789E5gFUs8Qe0XIZsynRkoCsQbFEDNuFFjBMmi0JaPF6ReQgEmWZUJRJyeAK/RBDSx5tdefyw1r2kaPMCwWx5SJT0tkC4U1/BGPWoOdEiOfjumucsn2W74tTCG1Hr8yS7idDxwRWYH3xEckHn/bzQ9fdvsqW/toragjkPv4Q8dF59YsZIKP+hWY0sXaGw15Yu76SD4Q0zrfO7SFRjQdHUzHuIddgjos0RdUzwbWms0y5Njp+9/GcC7FireHknj+heCZSSLSDuSUR4R0yPgVY50zCg8f7hm9CutcaaV6SEss6PvTJQ51uCnFSNyeoeQp0Pn79VG3tPJEE6x8Cb08RDtXUT6OI7sPz6+uBNYresbBpMZxrY+oJ7D8T30UQ/kOp0Yhqoy5C8lzW3HSHDbzVlkFGQSDMYiGMAsXxKySUUoq8CJAcJr4slzYSX0NyZhb8x0Jp82ggp+EEunog4yNUAtNYUmTUw5ryJp/riRBNNL9LYpP3U1npI7b4eGY08fDLB/2ai70744SrF8iZHkEYtNiFlpYrT+SSJacukz2HpPrQMRzs3coiItfsZz9Wyyh+ZHcQ4LgQwO7nCGgx4gBMMOOxtBa+ocqZ/aOFJW5PfZuQX96qPEmXJciL5TlL7rMzd9VbKm4Rhpskp+mHf06uM75ZDNxfe1hUKZeFUIXbL9BE3P66ndG1acB+MGB4Kk4wbohi9rgEyvSR8vOPfeFP2R8Pc1HTSdF2kzjXbLAPYaerjVEUCbI+frC/xFRpNxb2jpdXYd/Y10gmvOYyv2Imdp/94LuNp0V+WS1cSFDejx+I3wqMslYUdzmp+YKXFG/dcRW9M//kVDBkxTbUB1yCmX7fiGuYJEeCLXrIpgJzCWjo31I5/SvfVbdK9iiT5+Q3lx+2Un1r0G69KOWUkhhAM0+WKLHEH1da0Ssjjf0ko5HQKpFAyQzzB7EFmlhMfgoazlReVW/NqS2BKAd8YXTQsdJhfUCeV5nSDRFv7yVZJogt/NJsd8MuAvHGv1Htk2+70DUbK+Rcx0qfGKXldIZN3QFi7XEfSPL9jnCFmI3pLHPA5mXu79Jvhc9fDpTaY/QtKllhiaNP6wvPy0imhVTTw5jXWIGQ9Vif8xcObeTGnukVsGarxR7MkU8WRSr15w5NYLu9nQ6G5EvwGP3drnVezYCICalnuBbsnht+KsFM2o0aCAzQDXX1HJwq+lvTP6raYjusOb0ObSs18Vbb2NvrM0HM6WyYWKGcF+sqasnHB5UNv5IXredJash6vkmQOooe1dOI9QUQmjY34YCPXxsSdIFbfnOKEL6P96A3TBb18EWxsIPPHL7ueFdRnW6SI8PNDH0pKt8tpjmLXCGrG6GzXoStFHzsUb5iIdW6ak9ePvPq8krVKae+7+eWWh2fH03cl5AEvWAdmX7hXsLdr9PfXZnLeOm2kWvRgzRJUimKelf9kt2jqDTIUeCEW2uZh1JVtMnH+9iy77Sgmp16yO+QFtig24DDa9Im7acdGggbrdlndXm/bElPr6Gzptnnt1oVMRaumPUsrNM+kjF1cfWE5z8TspU3nXX+CVKFRhoV7yQ+GBJkZFscb7opPt/B+kx+uC7c5i+z7EZ/qd3leT9o9fTOmxebBgkOhuKpn7mg2T56jS/XXs5SRhxFjXCXb2kFSjnVdvsnG6tyCYU4Jq5pxFFCSLjdn5KQlq+M7y9mlkAVsOY6b7i3Rqr5+sO5y2neC4u1n1jd+sPVh5mnk2Tgl7q7hsv1DxYS45w+uR1Il4sJ8/RJM7rJjB3NG27XKj+qD3vJ92xHYO/TgrHuCSXeW34dvhzdFNPeeBYH1NJONXAhuW1pmRt10pbDsNF+vadixZxPcdPf5bFru0CLLGt44PiWJk6pIIA4v5JdNvQXOXGUR6dh67yckoix6SugkN0ywlTduUItzvUf8wbKiYO5BUX2ygvMDI0OMoQtylz92mTlHWWIYHBg68Vbi8lFV3rPR93WhLgUFsESBngzetytaXoTrz7c6t8Tv6k/LzdaExeWG2KY2MxoqGV9TfyZbaL/A8JJ29Wi0JW9/p7PBYfbK4mvu0Z8T+VEt3wnhbSrYmLFzOV6j2FvX6+I3HhBi6m2EU8qzsoL10t+dFZjsd6HpZIvjBOaSCNAr9diAgpOlKRVjTRiXsaVJxcpJ+PLk88tPesqxJjWR9xlseho1dc5I5rl9lK/JbWnFGIQxXyvPhN6mDpe8iauab7oan93Xf8+kZox789KC3pHHegfgYwdu7MMYh7o+Oo2kbBKoQhmF46C1S2tuaxORCiPVPrLwSj58fqcjQKoLE3g5iBLbEKSx/zNsMK3p0BROox4JHaJStVI45lnkyYzmcuSaD2HrKU1CSRhyRuF2m220rHbnyby9Im/NlBA08XM/uMdwychaMd49fzpfq8qiJzHvkDDgaYlxb5U5gcIb5nxz02zTbJlMpQ54r5KIVJmPKtWjc/QmkIsR/VDwOOx/ALLUoVYKZW5kc3RyZWFtCmVuZG9iagozOCAwIG9iaiA8PAovVHlwZSAvRm9udERlc2NyaXB0b3IKL0ZvbnROYW1lIC9HVU9XVEsrQ01TWTYKL0ZsYWdzIDQKL0ZvbnRCQm94IFstNCAtOTQ4IDEzMjkgNzg2XQovQXNjZW50IDc1MAovQ2FwSGVpZ2h0IDY4MwovRGVzY2VudCAtMTk0Ci9JdGFsaWNBbmdsZSAtMTQKL1N0ZW1WIDUyCi9YSGVpZ2h0IDQzMQovQ2hhclNldCAoL2FzdGVyaXNrbWF0aCkKL0ZvbnRGaWxlIDM3IDAgUgo+PiBlbmRvYmoKMzkgMCBvYmogPDwKL0xlbmd0aDEgMTQyOAovTGVuZ3RoMiA2Mjk3Ci9MZW5ndGgzIDAKL0xlbmd0aCA3MjYyICAgICAgCi9GaWx0ZXIgL0ZsYXRlRGVjb2RlCj4+CnN0cmVhbQp42o10B1RTa7M2VSA0AZUmsEFAkZLQpal0kSJNpEMIIQRCAiEJIEWqFEWk916lg3REutJ7U5AiTRABaaKAXiznnO98/7/WvStr7eyZeWbeed55ZvNx6xoIK9pibOBqGDROWFQEIgsoaxsaygAQiLgIBCIG4uMzROJQ8D9uEJ8RHOuKxKBl/wOgjIVDcac+FSjuFKeNQQO38ShAVBwQlZIVlZaFQAAxCETmLyAGKwuoQAlIW0BbBLiNQcNdQXzKGGcPLBJhjzs95q9X4ApMABCVkZEW+pUOKDrBsUgYFA1oQ3H2cKfTE2FQFGCAgSHhOI9/lbgib4/DOcuCwW5ubiJQJ1cRDBZxXUAIcEPi7AF9uCscS4DbAj8JAzpQJ/hvZiIgPsDQHun622+AscO5QbFw4NSBQsLgaNfTDDzaFo4FTg8HDDS0gDvOcPRvsNZvgBDw524AURHRv8v9yf5ZCIn+lQyFwTBOzlC0BxKNAOyQKDhwR01LBOeOEwKgaNufQCjKFXOaDyVAkSiozSngV+dQQE1RD4CeEvxDzxWGRTrjXEVckaifFME/y5zesiraVhnj5ARH41xBP/tTQWLhsNNr9wD/nqwjGuOG9vxj2CHRtnY/SdjincF30UgXPFxD5Q/k1AX6x4eA4wBJCARyTVwUgLsAcHeYPfhneUMPZ/iv4C/3KQNvT2eMM2B3SgLujbSDn/6BPF2hBDiAw+Lh3p7/Gfi3BRIVBWyRMBxgA0cg0aB/qp+64Xa/7dPhY5HugBnkVHuiAOTn7+83i1N52WLQKI9/4L/mC9ZW01ZRVBP8zfjvmJISxh3wFJYChMXExQFJCTFASuYa4P3vIn/T/4v6L68uFPmnNcg/9TTQdhhA5jeD06v7iwXhjyiu/FkYAeDfJ+hgTpUMB678I3xziCQEdvoQ/T/L/1fK/0/1P6v8b8L/74bU8CjUr/CVX/H/Jwx1QqI8/gBOhYzHnS6FNuZ0NdD/Db0H/73I2nBbJN7pv6MaOOjpciiiEai/rxHpqoZ0h9vqInEw+19y+WsIp9VRSDRcF+OK/PmlAYRFIZD/ip1uG8zx9GviejqqXyH46TL9+0RVNAxj+3PrxCSlACgWC/UAQU7FJSYpCXiKnq6nLdz9l64BsAgagztNAU7ZeQN2GCzo50BFIWIA+JfvtykKAcDo/zBFATDmP0wJAIz9Zf6rCRgeiz1dzV8qOe3wL/vXdwAOd4fDQG8mMDC5QIfKwBeH5YrsbsLLAwqjfMv3EgSEPd9gm/Df6ChiBcpS/OewB4qx3W1nZxZVr+zffMt14vmxvooiuCFar/HI69gqUn94uRE0NXTh1WDOR8XnnRxUF4UNb654nbh4Gfk5ktYTN9/my3DBX6PTzWI6dOtQd3/eWTjd93BiWW+lTEqT+rhwRDj87mNzv/wxvkyb1HEWnjM4YQ7Kq4zb7vRj+wejjOmDP7huRwqCvDfCxXM9TefFnnwdv/+u2FDMtYWVl9WUhYN0n7FvmN9T6UPcbeZJz4K8x3MKk2kQARGiKXRr1raSreUBOJdbTFh9UtBnJ89mmEj6OaBzyI8K+G5L5Eqyn7DAh5Gs3RbXqTvqHyLTrYDJbN4VijH5WOEPOU+uVdl8sFrRI3hHsdVWvl43FeHyad2fG2meZj/nniOnJHhcbVzPP5Mu8ABTmcgIOip5CdX4bE2cm6e4JdLL1BqEseoERvyLbFMTLd5sPLvpGk/qzN0+PRkv1/y1WfB4fhOAFWgnPxC4C1x1yk1rHYnMkhBkxfBmkXDdrQpQhcWoXi05tiJVB0Xun++hsBUpbrybPSozeHjwNvdSgsXKNW7aeANvMDQ+vzHnQtEaT9cB14jENVUjedrriTpyKWw1oxRpM8sHTWYyvezR3Lk8OY5Wj0Yf8hLpD4/aMI8nDCM6dylpuvFP3AtGjbTtN8a0eMV1SRKmP50beePRSCeZUnxOqBnDMyR9OWS14eqZT6o5gfJkFabEP0bX8mGNnwv7ba6FY3mt1VqWKGfzwRWp37AHe59eBL07bLPwjZZV2t8lXdYw5/WJVxiLzKpa9x0MCajNepJw4U3vucOulK5m7qX1uMrWCr2WKoOrZFZaAx5Lxj2Iq03cl5Tk1GzPeXyToSWoiTS4t/Hfm/FlHlwdgYVqmo2svSz55rBXAgqY+UxbOWeYImzvUJcwRtYSRSk7UbneZwPrHM1yZ//qM4TgdGQhgzxIssw2jbMYKKjifywujnj8WXxl3c1J7AtZyxNnpccpGn2+5HShsj4RLsVqdPNr/qF4+XeWLETbGqoKg1eHbw+JlJi6PRyBbZKJ+zFMXGPfMKmYEBE966Cp6BouV5+73dH45Iv1gL7lmAeXsp4EpUdjyJPZLrplmprX/J6s+IhtPYQaaIg1l4Cq1M3cqntWntXX2gLqga92KKh7oNxA7haEnAaGsDPZ/N+aGTAydrVvkXovnKvaOmeHPSic9MawSMoLDk971Uinzftb7lIwKhHhC6lkXddWOYJLEgNfe0h/XMqieBGRqn952bCJIrQxaIhkyBPmh00Bb9tshN23w/d57NfNvqJgEbbSPLF/65MGuF44iMwurhstuQ69En8/Nu6R3X3uSyd5QYR3pvgXc0SmKzxG7XdVu9O/uZUcngjvEV8kutn44MwisEZyoeYNElg6gmoIJlDrr5/ta67QjfuR91LO+IUyIAVv+siR3CK46RAKn+wxq26R/sx8IGzpEEWc9d5s69xbVhAbIvRJucyjs6HiJTRT7UGvmFWetbJFfQ0JpYLx0VTUTSVOe5TdVlZ4dp98PeYTM8OIGQ4gJCbG9Dy77m+00ile4JT4o1SGudV/O1XhnnNeiOAiaiKiFT0ZzCWOyCi4JP1KtkfPj6X1ZrWuz4jwBv7maIXKlpE5u6vBsyi57+5yoIDbpcWDtKWXnSPiiXdADR43+r5HWCp37zPufNWgreF9ekvdJAM3as1GG0hJv2Y+zayV4sB3YlecMkDq/nptw+BMMsXbx9iNdzMvC85BvssppKHkypfafTO0hzWuYwDltWoeEJXTq9nnEY17hRqxlrI95+94NeNFLN8P6zCs4nfZUtxsrDeGZRokr1fmHM5S2t6+HURT3rEN+bS3a/w0b7ubw/kgncxsALf7bp6Jk7wb/4HLkm8qb8ea4/I+CGL4IJOGTMOTiitIykEhk/UbSZ9b2BRVd1Nu89tQysbeTumHrIddCScvzwxObzB1fn0r6/kt79wz+v30huAbqFtVLxIFduJXr0XcKbXLyXIyRguFPedM6J2Lp9VNImlCIr9PdVsY89PFflI6cvdkS5DkeF1sd1H1Zchs6UsVdtz86v0JGXSvR6ZSEGdnB5C8iBOkWpJ4HEL2vec8vVCG8yRv1k13/hMvzq2OAolbPhKMm49vSxco+c8nyWclD7UVnVOu6NZdGSJO8Wv1xt//0OaV+gXRzkCMFb6QxCDLlvEBv0S8m8m6N2/WrvLBXA6QN96fsXZjG4VEcIZ2a9hbjJKU61h4LPICXmLTC7XHP5zPL/CzKHGAXjrzPAjLnbk0rn4btk5EpZZ6wGmShgn3pmxWTMgbYDoaXcin6BX4GHGCUO06ZITp28YjiBpWd7+mC1mpnU3Oxngx4ZfMit+fOxjT0xCGned1LYubJ9PfCj96dja6t19kjfBxp95CPjXpQGPwgcEzeiPhBGHlMHvD1+5qdKDYizjej/45OUyDHzZjr+lvaqexTVJAxMRXkv1mUeHlltmOpVrfZItK6Km1uK68HePRah+j+cHprxD2Jc0A63B0NvYz9YknqazTD8904jdzzBhdkwWHFHr/UAAZcf68paSD77PiocaoxEsn6tW6te+mAywlzLTjzD/V+Q0w5BPvl4RErnrYSPnntD19vTiU605uP55APQQ4yNTcR3SJJHa17YAb3kuoMXMtJeWEZeXkTs/RxShKH50nM/B+eoVlctWrrc6tiYHf/S4HcPM5wam6itjPhqI+qjaBWEBbWotSOQAELztZ7CwPEeUYVRx8PuoV41I3xkGWwnIiK8n1ubNJjbjadSf8kEnTcvvDg6692cQ+dvUg7l6lxDA6Z8toJmIm+eOEV/oqGV5ZF/mdK49I3gV2xys4s2zb0n9oUngXRib+2kFl+QdhrSuuZHdGFPTqI/TwjP4NdJdK/o4qu+81Nip/0cHWHy0TYqCisNurSlw4C596R6ZetRn88ybijsyHTPa3b+GJfbI6usgKGj5F58WEL41k6WWkfVqgKL9MNfjgbcqQeoYoeRE/BYS7SXgb7rrhKXtL+J6f76poxX7DMTN8Vr22YeER6Rh5oekbr7ZgAVUZGV6pgk+5+d90bgCBpi2apuvZOYQD+NjM9G7vDVzXB+x084MMMd8Drdpz8ypTW0nWLsS1hJDCe53cY6QGac7EX0rOpNdJAGq0e75z6yL9va0hGYW0zw9Fx9+IF5a03o8+rixAJi6c5IHs3i/E4eq8SJo3TCuveF3dWfEzjuLlVVUlfv6O3f3aElI3n1K2aeEb1SI12L7Mgl5kiJK+HlFcny6EfdZrEvVuN8zp5TemNN4ZwGWwvsNRSK8y0r6NnfPMrmRgZH4qt5KFZUV06mt7hYP1Q9ZbZ9rVFGi7W5qiPAM1T6YjbHp4S6FxNDVzU4UyLynNvJjk/c6ZN/hg7lksJfRmeCs4y+neuiMNoqBmMKr27yJqMn6xeovXIPfGpVXkyTuDPfuyVw3UxViSqSr9RMb3TPeUL2+mIOiUdF+U98JDkDTnzc6o9oatDuGRHoSmm+7Ore7xA2EkIaOWuWeC6YXMeyA/Zr8u8W3rONz4PDepSKsf8Hjt5gOvAs0W3a9nJRTBIWd3fCuE7y0MpMamfkoa2WS0jH93znRJQ1gme6IzPEO3zIeJNQYZGB2lsW2y+B7LVUR3R7tCsv8s9kcRd7AtaTqif2HI113IO1Doy/SFT1lJarfQqk2ctUnGnCo8X0fpLDKCiE9QvPy0jPOThCYRk+vefowZFTZ3jzRYDDwTu8Wk3yp8Jn02skFBo6aU7Bg4exmUt+oLBJOK+PB0dD3YW8Klf7rDcl9YXP+IPmzlTa1pv1l8fGQ0/8hit73K9y9e5Yp6c+rKtwBZ88thddbQ8OGARbH6A08FTMZ1cjzZEP8TyEn9XGOMHPxhKUTUwmiAslMMVnCYk/LkuXVSxsNo5Y7bon6M4PRhrbJ732kTTGCO3ZU5OaFDlOQcVPvt3rD8a2+JtZS9Cio6EQF8L0yKuGREHkfuVN9I3mVJIm6Eh1YOCfr6j9O16474HWxpSAh5X8rwIFKdCk48sOAz7LvedxKw/ZbRW6jVgCqH+8HVB60iuzk0VNEJhATc8pD0wy+7HMxmrHdqs9u4KvTJDotMaoKZHnaf2diPM0gxGCuUHE9DCV6n63/ygqiiDkUvVbZ8t9SkYevZ5ZKCr1ZZznxkFFsK5ccWlrKOYkAni00zufhIJQFPYv49ICIi3pE76WHpKjr1275Y36OAm3p+kVeJmJkIw95jkvfFneanknbAr/YLyp4Xp7NWWdGH7vo0rw2p220TMatvFEZGS8T4C+WWPFpXyJM8OuTLfFtvsaSaeivMDt097ev+6JX+xaqdb+laYK7L9YA0pUhK7eJnOPmXwab8wKdlwcHs0BF17+Uglg9t9NjKTJDPFwGaIgt53ljy7TIxfHUOu/wJQX5nUkeXyStLsetYnc0xp49ahELXpOTV8CjnHbmCxiYl/ZSLAiXPMMVrRuvl7dsG31fkO/wT5KCdepyij/H3ISGaHXwc+t0EYjRCLtKzlLDvWNTJvjm05DMViu61DKIIbbl2c7ax0OSgdrzuyhRbqfv2m9gruNdc/MYmO8KNJdJXi9h3IFvu0QJ9qps45WY3OQSUR1Syw8LM7jlKhGr+g2n4Sk6fhs0TxIWn465u84bh/EXP8kz76k4EVIJulbA+xBXCaWr6pLLqaH3aJL9M1txIYZsqzagafE1+tNDaRjHnGLLEEXQRKyJQE4uqOsiM7XK3qmTmvBGiV3JvWFwsiCLpCqpg8SMtR9jKsJffnUkbYbW41WELkbiLpfqpuirnY+THKhZVju7Mq5DXJVuotJW2aZFzKZCBlxO7slro9ls1N8++3i8pz7GemO9WC0DoWfVogN6fJ0cfueiWNTbUFlldSUBMqbNr8jt1NODq7retHZdYERdiqCetJfLvS+QIh0tTijpu2dK7xj51KzB3pzVNj7pGWkW75mGemKRfQ8KeNTeysT2IIuq7OcbpO50ctDuz0lZdxUtWULbdf+lRN3sb9HKt55j/U+RzJh9NlMPwspHS5ufN6Pt3qx6AjUVpDDKXXBTqvtvzS+N3i8jU94wKPlAqWo21indoH399v+DTZhmUjFshgQRXkpCo88u/7joam4z1HmHZPrSfrW5/tPQNEtidA3szUv4xIvY6fSBRzV4kRiqkSWDOU08pptjY7NKscoeGuEPAd/huVAhYx5c0veGuMYNgzkdWognr4A+RPGHkZ3XNzI/miQIalhSNG6BsXsgcsrgYmlvoEi7HeiG2WurRG9SRt8OtPMQtGdrIYf2H3l4XoDhmuiaq4/AL8qTv5UQJUTczZz0ZVEeKi7p66Wlpks5ltYKTVDekBW/QsVtXjwlKtxlyjJEndIeAs9J9ssWistTgy4/DajWSdyUFDEoZjN9wEXTCquABKdFBXVRKI6XNTh5toR1WohMSuOPOz58yvoyh4iFucT9A4pouIMP3X2cGwxlL+trNi4lHX9zfehKFulgYbMFnk0vmfIJIneGSVqdkF2jCvS83mzcKHdbJfDn13ef1Hcu84ITVx2O0HCQE67CiY4L1cLATPagzxDjDvq7gJP469kJFs2yADJxd1GBPR3ljnhe2MnXIRxNK33dun5erLU/IMFP7jFjYoPKdd8dGmfB0hdjD1wYk0gv4bL9Yq4hAOk/3FNrYt7wbspdMd5AvRXuCC1Ep1B607TWWXnpHaZnlWoMhsGZ+1qFb6CiBGUqqwYKer11e9nCWdpZ3tC3en+mSNQ4btAf3KLNex94b375KLyhsWvxxTsh2ttDDLrPAiTCWbIGj+i5HxsFu/ZbBD1M1xWoRE3bvVjFj+ad5E9J33syXdXWsGwzwSnYXeIVSt8ZjR7UOxpZ2axW+udE7PYc4sRtRnh1bpopD+SVShxjeQeNYs6UmtXmMewMWLx74ubxYVnliB+lxcpW5wdGRlmSVFLHihL5lvagYpDjJ4DSS1MAKmpgpiYZGbWXFEX14vOlgh+67OzWd+LhdOS25HpqNqwU/nlntWGki2iFMz0zOvdV1uajKq6NrafUmyN/26wdCRd1BPg+9YTqRshnwvdmroIkuz23ET9RLmnEvXolv9EfNBzt/rmzmeyXhPLYtC1KUehQa0KYvI6kP6TpVRRbkXxqkIlO+tsYzjScKMI0LVqdR9/ENdZKZWMtRRcSHlUpyB2titAwa43XGOaMO7HXtl1S239boRyayCL8MLK1nM9hZW3kUuNp4g8pvJ295PMfg2hEZVxh3YbxQz+AF6sAiwqAO88VKM9IXgHU3jxIFdCWqTXKCq+3SE1ZbtwaKtXt8JqjQlz4XmGXBVf7XS00L5OBjaq2eOpcyPEc+effckPY4RICYEuxZDWqDsmjmrXGmeTw0V1kvfNBT5td0PYNH9Yzdrk3yOis1SYKc5cWGqE6oGSMQAy/n+Ak9XbesNIryBJ6/fqelz7Jw9UkFey25Xhui27iMCJ9kJDQUxVPIZ/X0GcdTrYHAHB4Jwkx9btubZwTf9kbT1/vc5KDl8b7NozmTm4daYaHnPB/0EeYaIgX9KB4N6Fw1uRDdK+iCtDik3ARbagkscoZVhXFEsTt5zImyKeyGBGuuVzM9oU0s8/FEVuM8R9Bvb1x+GCxWacsmVL3UlDzAMIQN2cRFzj3v/hJzIPxCbSaoJI8xLOdMiBqKlVqLyiOU1O7VitoN7Q++Vln+765CWxniHnOy10+RdLSySY43LI02xbY95m4sDs22zacVo3u0OJBMh/xW4AbmGZRzsbu3w/Mk3pKydBHCy4DABG6VQe/tZhLWnUSO+7OUplvAsJtpnrLNtjy+it9qWQiDhxa63soU21f5KRzde+T2Mh19pWYejtC5dweQ8DWM01oaiw1rPUZYZEYdsu8G9Rk5ldWWEOdp27t/WUrX5d+6MuSZzr6y4484yhqynMhm7jqh6sgZi+r1+lTRcGXD1rFrma15A5w5MNMQfst3LIbUZfD2Zbdipc1sXGkTe75vvN+DNMSdd9Z3KjJy52Bje/XRNKXmKZpXd8EJ/QxHVWdL6ygTXyCeVsqYHshDCEtKkbV7nPc0FeIfLOlFWkBlzsoPthjJC5dow20svWZ9s13Ys1t4OiwH+yb5UUwZXmsRrusI5I9hPYUarhZGhrV97CjZMuBkRsTBOiJLjNW6Mlq3GxQINW5LSWrXQFUXwcMOR0983V41XRgmvWFaquPkr3z3wcOqb1O0x5ETEbFyKN8WGJmcpUJ+4ZcXYKIeVb9LH+eDXHgNnMfZqdgNWyi2mQEasIiLpqJqPzXnilRcBP3nkrze9Xbrfj0VZsXBwiGOyxPoPCkyijsFJ+oji7wLlCr9UXtcZnqNq9dc5XVUpBIQsmU6sQXeEdci+pvw0d7ZUFp4vsLDz5ISftUCi0uSzP74J7VIfP5t+l1RDm2zj1VPnZPcRut55kO81BDeTLZ4jX7rPMJJwuCc7xnvi92By3dPWr9qTpWEUrtbQISubdHofVaTUrmo03Zc95lGXm8DJoOQFMKfNWXkwXPORQo0iVZeZJl/rAJRei45CWg/8c66ZvO9f0HoQAhQfwkTgIHQ6+Sxkxz+ADZnTUgR5RWylTAYcexg6MzmI3diP1MYDm27bKrtmHFLyyXyBa0Yk5Zq9MRK84my8Bj51OubC+F07GE1NALnNCw0SJgv6VhyjpgSVW/rXnL0HqDjLV9Oi5CyIva9YbNuO5d8mEVxd0HFswz84SXBZnYO0Sw9OBTC/p4i/odKjXB7TllG+oSGdLelc9Ctp4mfgw7Q8lsYVHimFDhTPkiBGYhr2U2fkPmuazQ7auMwV55O8wmnRf9ijt1f4gSyVhgZ0hBHU8oW6sX1hTF8TCFnU8HQNq397sOqXfib6+18MYbc189uuXS4fMnLZVyk4xw4GUnhm/P09XGrVeZEn6wNmMwpKYXdNHCv9UibTDTzOjwrYAL+Ed60XoZJGzBu4lgw962mnVXmfeipnSXMtirHxK6cekl+0CvR1NyIKPAE3yu1I9+2c18xvfdcImfCxY6jveiXGjXQGoKhE7OncIRpQnXZRuKOD6NpvVTu19x74WPwc4rmiqJtiwxS5Q0rDTWhm7WtgoalMlZsZavZPY54uUcOkj9Yols2YoQD+nRlTTdWk5fx+qFuz9wcJR6aUQZTv832XogZJGbSaGYK1Q34zL60ryRZziUT9drPG8qqxr1HnhcnLUt0eB5MgEtR9KSHlZ6VX/GSnBwqDM7de+da68ZaQW4ZYwDOlyg5THCpGWvmUxXMK5bjkHPc4r/W12CheT08Of3JVZ4lv3YGa0WDR01mfUmB6xzjokLQc3ukfG6xsIT19/vTqKeVAylXqMyCWRsky4VaZsT7Vibuv8GGxC7XToegrvebyXdbtw9p5HgLpTWptCKqTLk+yf8P4ygJngplbmRzdHJlYW0KZW5kb2JqCjQwIDAgb2JqIDw8Ci9UeXBlIC9Gb250RGVzY3JpcHRvcgovRm9udE5hbWUgL01GTURBRitDTVRUOQovRmxhZ3MgNAovRm9udEJCb3ggWy02IC0yMzMgNTQyIDY5OF0KL0FzY2VudCA2MTEKL0NhcEhlaWdodCA2MTEKL0Rlc2NlbnQgLTIyMgovSXRhbGljQW5nbGUgMAovU3RlbVYgNzQKL1hIZWlnaHQgNDMxCi9DaGFyU2V0ICgvZi9uL28vcikKL0ZvbnRGaWxlIDM5IDAgUgo+PiBlbmRvYmoKNyAwIG9iaiA8PAovVHlwZSAvRm9udAovU3VidHlwZSAvVHlwZTEKL0Jhc2VGb250IC9RWktSRE0rQ01CWDEwCi9Gb250RGVzY3JpcHRvciAyNCAwIFIKL0ZpcnN0Q2hhciA2NQovTGFzdENoYXIgMTE2Ci9XaWR0aHMgMTkgMCBSCj4+IGVuZG9iago5IDAgb2JqIDw8Ci9UeXBlIC9Gb250Ci9TdWJ0eXBlIC9UeXBlMQovQmFzZUZvbnQgL0dYR0dCUStDTUJYMTIKL0ZvbnREZXNjcmlwdG9yIDI2IDAgUgovRmlyc3RDaGFyIDQ5Ci9MYXN0Q2hhciAxMTcKL1dpZHRocyAxNyAwIFIKPj4gZW5kb2JqCjggMCBvYmogPDwKL1R5cGUgL0ZvbnQKL1N1YnR5cGUgL1R5cGUxCi9CYXNlRm9udCAvUlpQTUxTK0NNUjEwCi9Gb250RGVzY3JpcHRvciAyOCAwIFIKL0ZpcnN0Q2hhciAxMQovTGFzdENoYXIgMTIyCi9XaWR0aHMgMTggMCBSCj4+IGVuZG9iago2IDAgb2JqIDw8Ci9UeXBlIC9Gb250Ci9TdWJ0eXBlIC9UeXBlMQovQmFzZUZvbnQgL1BIQlhEUStDTVIxMgovRm9udERlc2NyaXB0b3IgMzAgMCBSCi9GaXJzdENoYXIgNDQKL0xhc3RDaGFyIDEyNwovV2lkdGhzIDIwIDAgUgo+PiBlbmRvYmoKNCAwIG9iaiA8PAovVHlwZSAvRm9udAovU3VidHlwZSAvVHlwZTEKL0Jhc2VGb250IC9KVFlNS04rQ01SMTcKL0ZvbnREZXNjcmlwdG9yIDMyIDAgUgovRmlyc3RDaGFyIDcwCi9MYXN0Q2hhciAxMjEKL1dpZHRocyAyMiAwIFIKPj4gZW5kb2JqCjExIDAgb2JqIDw8Ci9UeXBlIC9Gb250Ci9TdWJ0eXBlIC9UeXBlMQovQmFzZUZvbnQgL1RLSkhISStDTVI5Ci9Gb250RGVzY3JpcHRvciAzNCAwIFIKL0ZpcnN0Q2hhciAzMwovTGFzdENoYXIgMTIxCi9XaWR0aHMgMTUgMCBSCj4+IGVuZG9iago1IDAgb2JqIDw8Ci9UeXBlIC9Gb250Ci9TdWJ0eXBlIC9UeXBlMQovQmFzZUZvbnQgL1VFSVpZVytDTVNZMTAKL0ZvbnREZXNjcmlwdG9yIDM2IDAgUgovRmlyc3RDaGFyIDMKL0xhc3RDaGFyIDMKL1dpZHRocyAyMSAwIFIKPj4gZW5kb2JqCjEwIDAgb2JqIDw8Ci9UeXBlIC9Gb250Ci9TdWJ0eXBlIC9UeXBlMQovQmFzZUZvbnQgL0dVT1dUSytDTVNZNgovRm9udERlc2NyaXB0b3IgMzggMCBSCi9GaXJzdENoYXIgMwovTGFzdENoYXIgMwovV2lkdGhzIDE2IDAgUgo+PiBlbmRvYmoKMTIgMCBvYmogPDwKL1R5cGUgL0ZvbnQKL1N1YnR5cGUgL1R5cGUxCi9CYXNlRm9udCAvTUZNREFGK0NNVFQ5Ci9Gb250RGVzY3JpcHRvciA0MCAwIFIKL0ZpcnN0Q2hhciAxMDIKL0xhc3RDaGFyIDExNAovV2lkdGhzIDE0IDAgUgo+PiBlbmRvYmoKMTMgMCBvYmogPDwKL1R5cGUgL1BhZ2VzCi9Db3VudCAxCi9LaWRzIFsyIDAgUl0KPj4gZW5kb2JqCjQxIDAgb2JqIDw8Ci9UeXBlIC9DYXRhbG9nCi9QYWdlcyAxMyAwIFIKPj4gZW5kb2JqCjQyIDAgb2JqIDw8Ci9Qcm9kdWNlciAocGRmVGVYLTEuNDAuMTApCi9DcmVhdG9yIChUZVgpCi9DcmVhdGlvbkRhdGUgKEQ6MjAxMjA2MTExODA4NDYrMDInMDAnKQovTW9kRGF0ZSAoRDoyMDEyMDYxMTE4MDg0NiswMicwMCcpCi9UcmFwcGVkIC9GYWxzZQovUFRFWC5GdWxsYmFubmVyIChUaGlzIGlzIHBkZlRlWCwgVmVyc2lvbiAzLjE0MTU5MjYtMS40MC4xMC0yLjIgKFRlWCBMaXZlIDIwMDkvRGViaWFuKSBrcGF0aHNlYSB2ZXJzaW9uIDUuMC4wKQo+PiBlbmRvYmoKeHJlZgowIDQzCjAwMDAwMDAwMDAgNjU1MzUgZiAKMDAwMDAwMzMxNiAwMDAwMCBuIAowMDAwMDAzMjA0IDAwMDAwIG4gCjAwMDAwMDAwMTUgMDAwMDAgbiAKMDAwMDEwODgzNCAwMDAwMCBuIAowMDAwMTA5MTEyIDAwMDAwIG4gCjAwMDAxMDg2OTUgMDAwMDAgbiAKMDAwMDEwODI3NiAwMDAwMCBuIAowMDAwMTA4NTU2IDAwMDAwIG4gCjAwMDAxMDg0MTYgMDAwMDAgbiAKMDAwMDEwOTI0OSAwMDAwMCBuIAowMDAwMTA4OTczIDAwMDAwIG4gCjAwMDAxMDkzODYgMDAwMDAgbiAKMDAwMDEwOTUyNyAwMDAwMCBuIAowMDAwMDAzNDc0IDAwMDAwIG4gCjAwMDAwMDM1NDQgMDAwMDAgbiAKMDAwMDAwNDA3MSAwMDAwMCBuIAowMDAwMDA0MDk1IDAwMDAwIG4gCjAwMDAwMDQ1MDEgMDAwMDAgbiAKMDAwMDAwNTEyMyAwMDAwMCBuIAowMDAwMDA1NDQxIDAwMDAwIG4gCjAwMDAwMDU5MDYgMDAwMDAgbiAKMDAwMDAwNTkyOCAwMDAwMCBuIAowMDAwMDA2MjU0IDAwMDAwIG4gCjAwMDAwMTU4NzcgMDAwMDAgbiAKMDAwMDAxNjEwOCAwMDAwMCBuIAowMDAwMDI0NDIxIDAwMDAwIG4gCjAwMDAwMjQ2NjAgMDAwMDAgbiAKMDAwMDA0MzkyNSAwMDAwMCBuIAowMDAwMDQ0MzQyIDAwMDAwIG4gCjAwMDAwNTg3MzMgMDAwMDAgbiAKMDAwMDA1OTA1NiAwMDAwMCBuIAowMDAwMDY5NjY1IDAwMDAwIG4gCjAwMDAwNjk5MTcgMDAwMDAgbiAKMDAwMDA4NTU4MCAwMDAwMCBuIAowMDAwMDg1OTMxIDAwMDAwIG4gCjAwMDAwOTMwNDggMDAwMDAgbiAKMDAwMDA5MzI3OSAwMDAwMCBuIAowMDAwMTAwNDQ1IDAwMDAwIG4gCjAwMDAxMDA2NzQgMDAwMDAgbiAKMDAwMDEwODA1NSAwMDAwMCBuIAowMDAwMTA5NTg1IDAwMDAwIG4gCjAwMDAxMDk2MzYgMDAwMDAgbiAKdHJhaWxlcgo8PCAvU2l6ZSA0MwovUm9vdCA0MSAwIFIKL0luZm8gNDIgMCBSCi9JRCBbPEE1MTIyOERDMEI2RDhERTcwNDA5QjM4RUY1MDJDQkYwPiA8QTUxMjI4REMwQjZEOERFNzA0MDlCMzhFRjUwMkNCRjA+XSA+PgpzdGFydHhyZWYKMTA5OTAyCiUlRU9GCg=="
+}
+
+
+///////// Rest taken from generated pdf.js. (c) by Mozilla. ////////
+///////// File unchanged, except that all references to DOM- ////////
+///////// specific global names have been prefixed by PdfJS_window., ////////
+///////// to avoid interference with the benchmark runner script. ////////
+
+/* -*- Mode: Java; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/* vim: set shiftwidth=2 tabstop=2 autoindent cindent expandtab: */
+
+var PDFJS = {};
+
+(function pdfjsWrapper() {
+  // Use strict in our context only - users might not want it
+  'use strict';
+
+  PDFJS.build = '3cc61f0';
+
+  // Files are inserted below - see Makefile
+/* -*- Mode: Java; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/* vim: set shiftwidth=2 tabstop=2 autoindent cindent expandtab: */
+
+'use strict';
+
+var globalScope = (typeof PdfJS_window.window === 'undefined') ? this : PdfJS_window.window;
+
+var isWorker = (typeof PdfJS_window.window == 'undefined');
+
+var ERRORS = 0, WARNINGS = 1, TODOS = 5;
+var verbosity = WARNINGS;
+
+// The global PDFJS object exposes the API
+// In production, it will be declared outside a global wrapper
+// In development, it will be declared here
+if (!globalScope.PDFJS) {
+  globalScope.PDFJS = {};
+}
+
+// getPdf()
+// Convenience function to perform binary Ajax GET
+// Usage: getPdf('http://...', callback)
+//        getPdf({
+//                 url:String ,
+//                 [,progress:Function, error:Function]
+//               },
+//               callback)
+function getPdf(arg, callback) {
+  var params = arg;
+  if (typeof arg === 'string')
+    params = { url: arg };
+
+  var xhr = new PdfJS_window.XMLHttpRequest();
+  xhr.open('GET', params.url);
+  xhr.mozResponseType = xhr.responseType = 'arraybuffer';
+  var protocol = params.url.indexOf(':') < 0 ? PdfJS_window.window.location.protocol :
+    params.url.substring(0, params.url.indexOf(':') + 1);
+  xhr.expected = (protocol === 'http:' || protocol === 'https:') ? 200 : 0;
+
+  if ('progress' in params)
+    xhr.onprogress = params.progress || undefined;
+
+  if ('error' in params)
+    xhr.onerror = params.error || undefined;
+
+  xhr.onreadystatechange = function getPdfOnreadystatechange(e) {
+    if (xhr.readyState === 4) {
+      if (xhr.status === xhr.expected) {
+        var data = (xhr.mozResponseArrayBuffer || xhr.mozResponse ||
+                    xhr.responseArrayBuffer || xhr.response);
+        callback(data);
+      } else if (params.error) {
+        params.error(e);
+      }
+    }
+  };
+  xhr.send(null);
+}
+globalScope.PDFJS.getPdf = getPdf;
+globalScope.PDFJS.pdfBug = false;
+
+var Page = (function PageClosure() {
+  function Page(xref, pageNumber, pageDict, ref) {
+    this.pageNumber = pageNumber;
+    this.pageDict = pageDict;
+    this.xref = xref;
+    this.ref = ref;
+
+    this.displayReadyPromise = null;
+  }
+
+  Page.prototype = {
+    getPageProp: function Page_getPageProp(key) {
+      return this.pageDict.get(key);
+    },
+    inheritPageProp: function Page_inheritPageProp(key) {
+      var dict = this.pageDict;
+      var obj = dict.get(key);
+      while (obj === undefined) {
+        dict = dict.get('Parent');
+        if (!dict)
+          break;
+        obj = dict.get(key);
+      }
+      return obj;
+    },
+    get content() {
+      return shadow(this, 'content', this.getPageProp('Contents'));
+    },
+    get resources() {
+      return shadow(this, 'resources', this.inheritPageProp('Resources'));
+    },
+    get mediaBox() {
+      var obj = this.inheritPageProp('MediaBox');
+      // Reset invalid media box to letter size.
+      if (!isArray(obj) || obj.length !== 4)
+        obj = [0, 0, 612, 792];
+      return shadow(this, 'mediaBox', obj);
+    },
+    get view() {
+      var mediaBox = this.mediaBox;
+      var cropBox = this.inheritPageProp('CropBox');
+      if (!isArray(cropBox) || cropBox.length !== 4)
+        return shadow(this, 'view', mediaBox);
+
+      // From the spec, 6th ed., p.963:
+      // "The crop, bleed, trim, and art boxes should not ordinarily
+      // extend beyond the boundaries of the media box. If they do, they are
+      // effectively reduced to their intersection with the media box."
+      cropBox = Util.intersect(cropBox, mediaBox);
+      if (!cropBox)
+        return shadow(this, 'view', mediaBox);
+
+      return shadow(this, 'view', cropBox);
+    },
+    get annotations() {
+      return shadow(this, 'annotations', this.inheritPageProp('Annots'));
+    },
+    get rotate() {
+      var rotate = this.inheritPageProp('Rotate') || 0;
+      // Normalize rotation so it's a multiple of 90 and between 0 and 270
+      if (rotate % 90 != 0) {
+        rotate = 0;
+      } else if (rotate >= 360) {
+        rotate = rotate % 360;
+      } else if (rotate < 0) {
+        // The spec doesn't cover negatives, assume its counterclockwise
+        // rotation. The following is the other implementation of modulo.
+        rotate = ((rotate % 360) + 360) % 360;
+      }
+      return shadow(this, 'rotate', rotate);
+    },
+
+    getOperatorList: function Page_getOperatorList(handler, dependency) {
+      var xref = this.xref;
+      var content = this.content;
+      var resources = this.resources;
+      if (isArray(content)) {
+        // fetching items
+        var streams = [];
+        var i, n = content.length;
+        for (i = 0; i < n; ++i)
+          streams.push(xref.fetchIfRef(content[i]));
+        content = new StreamsSequenceStream(streams);
+      } else if (isStream(content)) {
+        content.reset();
+      } else if (!content) {
+        // replacing non-existent page content with empty one
+        content = new Stream(new Uint8Array(0));
+      }
+
+      var pe = this.pe = new PartialEvaluator(
+                                xref, handler, 'p' + this.pageNumber + '_');
+
+      return pe.getOperatorList(content, resources, dependency);
+    },
+
+    getLinks: function Page_getLinks() {
+      var links = [];
+      var annotations = pageGetAnnotations();
+      var i, n = annotations.length;
+      for (i = 0; i < n; ++i) {
+        if (annotations[i].type != 'Link')
+          continue;
+        links.push(annotations[i]);
+      }
+      return links;
+    },
+    getAnnotations: function Page_getAnnotations() {
+      var xref = this.xref;
+      function getInheritableProperty(annotation, name) {
+        var item = annotation;
+        while (item && !item.has(name)) {
+          item = item.get('Parent');
+        }
+        if (!item)
+          return null;
+        return item.get(name);
+      }
+      function isValidUrl(url) {
+        if (!url)
+          return false;
+        var colon = url.indexOf(':');
+        if (colon < 0)
+          return false;
+        var protocol = url.substr(0, colon);
+        switch (protocol) {
+          case 'http':
+          case 'https':
+          case 'ftp':
+          case 'mailto':
+            return true;
+          default:
+            return false;
+        }
+      }
+
+      var annotations = this.annotations || [];
+      var i, n = annotations.length;
+      var items = [];
+      for (i = 0; i < n; ++i) {
+        var annotationRef = annotations[i];
+        var annotation = xref.fetch(annotationRef);
+        if (!isDict(annotation))
+          continue;
+        var subtype = annotation.get('Subtype');
+        if (!isName(subtype))
+          continue;
+        var rect = annotation.get('Rect');
+
+        var item = {};
+        item.type = subtype.name;
+        item.rect = rect;
+        switch (subtype.name) {
+          case 'Link':
+            var a = annotation.get('A');
+            if (a) {
+              switch (a.get('S').name) {
+                case 'URI':
+                  var url = a.get('URI');
+                  // TODO: pdf spec mentions urls can be relative to a Base
+                  // entry in the dictionary.
+                  if (!isValidUrl(url))
+                    url = '';
+                  item.url = url;
+                  break;
+                case 'GoTo':
+                  item.dest = a.get('D');
+                  break;
+                default:
+                  TODO('other link types');
+              }
+            } else if (annotation.has('Dest')) {
+              // simple destination link
+              var dest = annotation.get('Dest');
+              item.dest = isName(dest) ? dest.name : dest;
+            }
+            break;
+          case 'Widget':
+            var fieldType = getInheritableProperty(annotation, 'FT');
+            if (!isName(fieldType))
+              break;
+            item.fieldType = fieldType.name;
+            // Building the full field name by collecting the field and
+            // its ancestors 'T' properties and joining them using '.'.
+            var fieldName = [];
+            var namedItem = annotation, ref = annotationRef;
+            while (namedItem) {
+              var parent = namedItem.get('Parent');
+              var parentRef = namedItem.getRaw('Parent');
+              var name = namedItem.get('T');
+              if (name) {
+                fieldName.unshift(stringToPDFString(name));
+              } else {
+                // The field name is absent, that means more than one field
+                // with the same name may exist. Replacing the empty name
+                // with the '`' plus index in the parent's 'Kids' array.
+                // This is not in the PDF spec but necessary to id the
+                // the input controls.
+                var kids = parent.get('Kids');
+                var j, jj;
+                for (j = 0, jj = kids.length; j < jj; j++) {
+                  var kidRef = kids[j];
+                  if (kidRef.num == ref.num && kidRef.gen == ref.gen)
+                    break;
+                }
+                fieldName.unshift('`' + j);
+              }
+              namedItem = parent;
+              ref = parentRef;
+            }
+            item.fullName = fieldName.join('.');
+            var alternativeText = stringToPDFString(annotation.get('TU') || '');
+            item.alternativeText = alternativeText;
+            var da = getInheritableProperty(annotation, 'DA') || '';
+            var m = /([\d\.]+)\sTf/.exec(da);
+            if (m)
+              item.fontSize = parseFloat(m[1]);
+            item.textAlignment = getInheritableProperty(annotation, 'Q');
+            item.flags = getInheritableProperty(annotation, 'Ff') || 0;
+            break;
+          case 'Text':
+            var content = annotation.get('Contents');
+            var title = annotation.get('T');
+            item.content = stringToPDFString(content || '');
+            item.title = stringToPDFString(title || '');
+            item.name = !annotation.has('Name') ? 'Note' :
+              annotation.get('Name').name;
+            break;
+          default:
+            TODO('unimplemented annotation type: ' + subtype.name);
+            break;
+        }
+        items.push(item);
+      }
+      return items;
+    }
+  };
+
+  return Page;
+})();
+
+/**
+ * The `PDFDocument` holds all the data of the PDF file. Compared to the
+ * `PDFDoc`, this one doesn't have any job management code.
+ * Right now there exists one PDFDocument on the main thread + one object
+ * for each worker. If there is no worker support enabled, there are two
+ * `PDFDocument` objects on the main thread created.
+ */
+var PDFDocument = (function PDFDocumentClosure() {
+  function PDFDocument(arg, callback) {
+    if (isStream(arg))
+      init.call(this, arg);
+    else if (isArrayBuffer(arg))
+      init.call(this, new Stream(arg));
+    else
+      error('PDFDocument: Unknown argument type');
+  }
+
+  function init(stream) {
+    assertWellFormed(stream.length > 0, 'stream must have data');
+    this.stream = stream;
+    this.setup();
+    this.acroForm = this.catalog.catDict.get('AcroForm');
+  }
+
+  function find(stream, needle, limit, backwards) {
+    var pos = stream.pos;
+    var end = stream.end;
+    var str = '';
+    if (pos + limit > end)
+      limit = end - pos;
+    for (var n = 0; n < limit; ++n)
+      str += stream.getChar();
+    stream.pos = pos;
+    var index = backwards ? str.lastIndexOf(needle) : str.indexOf(needle);
+    if (index == -1)
+      return false; /* not found */
+    stream.pos += index;
+    return true; /* found */
+  }
+
+  PDFDocument.prototype = {
+    get linearization() {
+      var length = this.stream.length;
+      var linearization = false;
+      if (length) {
+        linearization = new Linearization(this.stream);
+        if (linearization.length != length)
+          linearization = false;
+      }
+      // shadow the prototype getter with a data property
+      return shadow(this, 'linearization', linearization);
+    },
+    get startXRef() {
+      var stream = this.stream;
+      var startXRef = 0;
+      var linearization = this.linearization;
+      if (linearization) {
+        // Find end of first obj.
+        stream.reset();
+        if (find(stream, 'endobj', 1024))
+          startXRef = stream.pos + 6;
+      } else {
+        // Find startxref by jumping backward from the end of the file.
+        var step = 1024;
+        var found = false, pos = stream.end;
+        while (!found && pos > 0) {
+          pos -= step - 'startxref'.length;
+          if (pos < 0)
+            pos = 0;
+          stream.pos = pos;
+          found = find(stream, 'startxref', step, true);
+        }
+        if (found) {
+          stream.skip(9);
+          var ch;
+          do {
+            ch = stream.getChar();
+          } while (Lexer.isSpace(ch));
+          var str = '';
+          while ((ch - '0') <= 9) {
+            str += ch;
+            ch = stream.getChar();
+          }
+          startXRef = parseInt(str, 10);
+          if (isNaN(startXRef))
+            startXRef = 0;
+        }
+      }
+      // shadow the prototype getter with a data property
+      return shadow(this, 'startXRef', startXRef);
+    },
+    get mainXRefEntriesOffset() {
+      var mainXRefEntriesOffset = 0;
+      var linearization = this.linearization;
+      if (linearization)
+        mainXRefEntriesOffset = linearization.mainXRefEntriesOffset;
+      // shadow the prototype getter with a data property
+      return shadow(this, 'mainXRefEntriesOffset', mainXRefEntriesOffset);
+    },
+    // Find the header, remove leading garbage and setup the stream
+    // starting from the header.
+    checkHeader: function PDFDocument_checkHeader() {
+      var stream = this.stream;
+      stream.reset();
+      if (find(stream, '%PDF-', 1024)) {
+        // Found the header, trim off any garbage before it.
+        stream.moveStart();
+        return;
+      }
+      // May not be a PDF file, continue anyway.
+    },
+    setup: function PDFDocument_setup(ownerPassword, userPassword) {
+      this.checkHeader();
+      var xref = new XRef(this.stream,
+                          this.startXRef,
+                          this.mainXRefEntriesOffset);
+      this.xref = xref;
+      this.catalog = new Catalog(xref);
+    },
+    get numPages() {
+      var linearization = this.linearization;
+      var num = linearization ? linearization.numPages : this.catalog.numPages;
+      // shadow the prototype getter
+      return shadow(this, 'numPages', num);
+    },
+    getDocumentInfo: function PDFDocument_getDocumentInfo() {
+      var info;
+      if (this.xref.trailer.has('Info')) {
+        var infoDict = this.xref.trailer.get('Info');
+
+        info = {};
+        infoDict.forEach(function(key, value) {
+          info[key] = typeof value !== 'string' ? value :
+            stringToPDFString(value);
+        });
+      }
+
+      return shadow(this, 'getDocumentInfo', info);
+    },
+    getFingerprint: function PDFDocument_getFingerprint() {
+      var xref = this.xref, fileID;
+      if (xref.trailer.has('ID')) {
+        fileID = '';
+        var id = xref.trailer.get('ID')[0];
+        id.split('').forEach(function(el) {
+          fileID += Number(el.charCodeAt(0)).toString(16);
+        });
+      } else {
+        // If we got no fileID, then we generate one,
+        // from the first 100 bytes of PDF
+        var data = this.stream.bytes.subarray(0, 100);
+        var hash = calculateMD5(data, 0, data.length);
+        fileID = '';
+        for (var i = 0, length = hash.length; i < length; i++) {
+          fileID += Number(hash[i]).toString(16);
+        }
+      }
+
+      return shadow(this, 'getFingerprint', fileID);
+    },
+    getPage: function PDFDocument_getPage(n) {
+      return this.catalog.getPage(n);
+    }
+  };
+
+  return PDFDocument;
+})();
+
+/* -*- Mode: Java; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/* vim: set shiftwidth=2 tabstop=2 autoindent cindent expandtab: */
+
+'use strict';
+
+function log(msg) {
+  if (PdfJS_window.console && PdfJS_window.console.log)
+    PdfJS_window.console.log(msg);
+  else if (print)
+    print(msg);
+}
+
+function warn(msg) {
+  if (verbosity >= WARNINGS)
+    log('Warning: ' + msg);
+}
+
+function backtrace() {
+  try {
+    throw new Error();
+  } catch (e) {
+    return e.stack ? e.stack.split('\n').slice(2).join('\n') : '';
+  }
+}
+
+function error(msg) {
+  log('Error: ' + msg);
+  log(backtrace());
+  throw new Error(msg);
+}
+
+function TODO(what) {
+  if (verbosity >= TODOS)
+    log('TODO: ' + what);
+}
+
+function malformed(msg) {
+  error('Malformed PDF: ' + msg);
+}
+
+function assert(cond, msg) {
+  if (!cond)
+    error(msg);
+}
+
+// In a well-formed PDF, |cond| holds.  If it doesn't, subsequent
+// behavior is undefined.
+function assertWellFormed(cond, msg) {
+  if (!cond)
+    malformed(msg);
+}
+
+function shadow(obj, prop, value) {
+  Object.defineProperty(obj, prop, { value: value,
+                                     enumerable: true,
+                                     configurable: true,
+                                     writable: false });
+  return value;
+}
+
+function bytesToString(bytes) {
+  var str = '';
+  var length = bytes.length;
+  for (var n = 0; n < length; ++n)
+    str += String.fromCharCode(bytes[n]);
+  return str;
+}
+
+function stringToBytes(str) {
+  var length = str.length;
+  var bytes = new Uint8Array(length);
+  for (var n = 0; n < length; ++n)
+    bytes[n] = str.charCodeAt(n) & 0xFF;
+  return bytes;
+}
+
+var IDENTITY_MATRIX = [1, 0, 0, 1, 0, 0];
+
+var Util = PDFJS.Util = (function UtilClosure() {
+  function Util() {}
+
+  Util.makeCssRgb = function Util_makeCssRgb(r, g, b) {
+    var ri = (255 * r) | 0, gi = (255 * g) | 0, bi = (255 * b) | 0;
+    return 'rgb(' + ri + ',' + gi + ',' + bi + ')';
+  };
+
+  Util.makeCssCmyk = function Util_makeCssCmyk(c, m, y, k) {
+    c = (new DeviceCmykCS()).getRgb([c, m, y, k]);
+    var ri = (255 * c[0]) | 0, gi = (255 * c[1]) | 0, bi = (255 * c[2]) | 0;
+    return 'rgb(' + ri + ',' + gi + ',' + bi + ')';
+  };
+
+  // For 2d affine transforms
+  Util.applyTransform = function Util_applyTransform(p, m) {
+    var xt = p[0] * m[0] + p[1] * m[2] + m[4];
+    var yt = p[0] * m[1] + p[1] * m[3] + m[5];
+    return [xt, yt];
+  };
+
+  Util.applyInverseTransform = function Util_applyInverseTransform(p, m) {
+    var d = m[0] * m[3] - m[1] * m[2];
+    var xt = (p[0] * m[3] - p[1] * m[2] + m[2] * m[5] - m[4] * m[3]) / d;
+    var yt = (-p[0] * m[1] + p[1] * m[0] + m[4] * m[1] - m[5] * m[0]) / d;
+    return [xt, yt];
+  };
+
+  Util.inverseTransform = function Util_inverseTransform(m) {
+    var d = m[0] * m[3] - m[1] * m[2];
+    return [m[3] / d, -m[1] / d, -m[2] / d, m[0] / d,
+      (m[2] * m[5] - m[4] * m[3]) / d, (m[4] * m[1] - m[5] * m[0]) / d];
+  };
+
+  // Apply a generic 3d matrix M on a 3-vector v:
+  //   | a b c |   | X |
+  //   | d e f | x | Y |
+  //   | g h i |   | Z |
+  // M is assumed to be serialized as [a,b,c,d,e,f,g,h,i],
+  // with v as [X,Y,Z]
+  Util.apply3dTransform = function Util_apply3dTransform(m, v) {
+    return [
+      m[0] * v[0] + m[1] * v[1] + m[2] * v[2],
+      m[3] * v[0] + m[4] * v[1] + m[5] * v[2],
+      m[6] * v[0] + m[7] * v[1] + m[8] * v[2]
+    ];
+  }
+
+  // Normalize rectangle rect=[x1, y1, x2, y2] so that (x1,y1) < (x2,y2)
+  // For coordinate systems whose origin lies in the bottom-left, this
+  // means normalization to (BL,TR) ordering. For systems with origin in the
+  // top-left, this means (TL,BR) ordering.
+  Util.normalizeRect = function Util_normalizeRect(rect) {
+    var r = rect.slice(0); // clone rect
+    if (rect[0] > rect[2]) {
+      r[0] = rect[2];
+      r[2] = rect[0];
+    }
+    if (rect[1] > rect[3]) {
+      r[1] = rect[3];
+      r[3] = rect[1];
+    }
+    return r;
+  }
+
+  // Returns a rectangle [x1, y1, x2, y2] corresponding to the
+  // intersection of rect1 and rect2. If no intersection, returns 'false'
+  // The rectangle coordinates of rect1, rect2 should be [x1, y1, x2, y2]
+  Util.intersect = function Util_intersect(rect1, rect2) {
+    function compare(a, b) {
+      return a - b;
+    };
+
+    // Order points along the axes
+    var orderedX = [rect1[0], rect1[2], rect2[0], rect2[2]].sort(compare),
+        orderedY = [rect1[1], rect1[3], rect2[1], rect2[3]].sort(compare),
+        result = [];
+
+    rect1 = Util.normalizeRect(rect1);
+    rect2 = Util.normalizeRect(rect2);
+
+    // X: first and second points belong to different rectangles?
+    if ((orderedX[0] === rect1[0] && orderedX[1] === rect2[0]) ||
+        (orderedX[0] === rect2[0] && orderedX[1] === rect1[0])) {
+      // Intersection must be between second and third points
+      result[0] = orderedX[1];
+      result[2] = orderedX[2];
+    } else {
+      return false;
+    }
+
+    // Y: first and second points belong to different rectangles?
+    if ((orderedY[0] === rect1[1] && orderedY[1] === rect2[1]) ||
+        (orderedY[0] === rect2[1] && orderedY[1] === rect1[1])) {
+      // Intersection must be between second and third points
+      result[1] = orderedY[1];
+      result[3] = orderedY[2];
+    } else {
+      return false;
+    }
+
+    return result;
+  };
+
+  Util.sign = function Util_sign(num) {
+    return num < 0 ? -1 : 1;
+  };
+
+  return Util;
+})();
+
+var PageViewport = PDFJS.PageViewport = (function PageViewportClosure() {
+  function PageViewport(viewBox, scale, rotate, offsetX, offsetY) {
+    // creating transform to convert pdf coordinate system to the normal
+    // canvas like coordinates taking in account scale and rotation
+    var centerX = (viewBox[2] + viewBox[0]) / 2;
+    var centerY = (viewBox[3] + viewBox[1]) / 2;
+    var rotateA, rotateB, rotateC, rotateD;
+    switch (rotate) {
+      case -180:
+      case 180:
+        rotateA = -1; rotateB = 0; rotateC = 0; rotateD = 1;
+        break;
+      case -270:
+      case 90:
+        rotateA = 0; rotateB = 1; rotateC = 1; rotateD = 0;
+        break;
+      case -90:
+      case 270:
+        rotateA = 0; rotateB = -1; rotateC = -1; rotateD = 0;
+        break;
+      case 360:
+      case 0:
+      default:
+        rotateA = 1; rotateB = 0; rotateC = 0; rotateD = -1;
+        break;
+    }
+    var offsetCanvasX, offsetCanvasY;
+    var width, height;
+    if (rotateA == 0) {
+      offsetCanvasX = Math.abs(centerY - viewBox[1]) * scale + offsetX;
+      offsetCanvasY = Math.abs(centerX - viewBox[0]) * scale + offsetY;
+      width = Math.abs(viewBox[3] - viewBox[1]) * scale;
+      height = Math.abs(viewBox[2] - viewBox[0]) * scale;
+    } else {
+      offsetCanvasX = Math.abs(centerX - viewBox[0]) * scale + offsetX;
+      offsetCanvasY = Math.abs(centerY - viewBox[1]) * scale + offsetY;
+      width = Math.abs(viewBox[2] - viewBox[0]) * scale;
+      height = Math.abs(viewBox[3] - viewBox[1]) * scale;
+    }
+    // creating transform for the following operations:
+    // translate(-centerX, -centerY), rotate and flip vertically,
+    // scale, and translate(offsetCanvasX, offsetCanvasY)
+    this.transform = [
+      rotateA * scale,
+      rotateB * scale,
+      rotateC * scale,
+      rotateD * scale,
+      offsetCanvasX - rotateA * scale * centerX - rotateC * scale * centerY,
+      offsetCanvasY - rotateB * scale * centerX - rotateD * scale * centerY
+    ];
+
+    this.offsetX = offsetX;
+    this.offsetY = offsetY;
+    this.width = width;
+    this.height = height;
+    this.fontScale = scale;
+  }
+  PageViewport.prototype = {
+    convertToViewportPoint: function PageViewport_convertToViewportPoint(x, y) {
+      return Util.applyTransform([x, y], this.transform);
+    },
+    convertToViewportRectangle:
+      function PageViewport_convertToViewportRectangle(rect) {
+      var tl = Util.applyTransform([rect[0], rect[1]], this.transform);
+      var br = Util.applyTransform([rect[2], rect[3]], this.transform);
+      return [tl[0], tl[1], br[0], br[1]];
+    },
+    convertToPdfPoint: function PageViewport_convertToPdfPoint(x, y) {
+      return Util.applyInverseTransform([x, y], this.transform);
+    }
+  };
+  return PageViewport;
+})();
+
+var PDFStringTranslateTable = [
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0x2D8, 0x2C7, 0x2C6, 0x2D9, 0x2DD, 0x2DB, 0x2DA, 0x2DC, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x2022, 0x2020, 0x2021, 0x2026, 0x2014,
+  0x2013, 0x192, 0x2044, 0x2039, 0x203A, 0x2212, 0x2030, 0x201E, 0x201C,
+  0x201D, 0x2018, 0x2019, 0x201A, 0x2122, 0xFB01, 0xFB02, 0x141, 0x152, 0x160,
+  0x178, 0x17D, 0x131, 0x142, 0x153, 0x161, 0x17E, 0, 0x20AC
+];
+
+function stringToPDFString(str) {
+  var i, n = str.length, str2 = '';
+  if (str[0] === '\xFE' && str[1] === '\xFF') {
+    // UTF16BE BOM
+    for (i = 2; i < n; i += 2)
+      str2 += String.fromCharCode(
+        (str.charCodeAt(i) << 8) | str.charCodeAt(i + 1));
+  } else {
+    for (i = 0; i < n; ++i) {
+      var code = PDFStringTranslateTable[str.charCodeAt(i)];
+      str2 += code ? String.fromCharCode(code) : str.charAt(i);
+    }
+  }
+  return str2;
+}
+
+function isBool(v) {
+  return typeof v == 'boolean';
+}
+
+function isInt(v) {
+  return typeof v == 'number' && ((v | 0) == v);
+}
+
+function isNum(v) {
+  return typeof v == 'number';
+}
+
+function isString(v) {
+  return typeof v == 'string';
+}
+
+function isNull(v) {
+  return v === null;
+}
+
+function isName(v) {
+  return v instanceof Name;
+}
+
+function isCmd(v, cmd) {
+  return v instanceof Cmd && (!cmd || v.cmd == cmd);
+}
+
+function isDict(v, type) {
+  return v instanceof Dict && (!type || v.get('Type').name == type);
+}
+
+function isArray(v) {
+  return v instanceof Array;
+}
+
+function isStream(v) {
+  return typeof v == 'object' && v != null && ('getChar' in v);
+}
+
+function isArrayBuffer(v) {
+  return typeof v == 'object' && v != null && ('byteLength' in v);
+}
+
+function isRef(v) {
+  return v instanceof Ref;
+}
+
+function isPDFFunction(v) {
+  var fnDict;
+  if (typeof v != 'object')
+    return false;
+  else if (isDict(v))
+    fnDict = v;
+  else if (isStream(v))
+    fnDict = v.dict;
+  else
+    return false;
+  return fnDict.has('FunctionType');
+}
+
+/**
+ * 'Promise' object.
+ * Each object that is stored in PDFObjects is based on a Promise object that
+ * contains the status of the object and the data. There migth be situations,
+ * where a function want to use the value of an object, but it isn't ready at
+ * that time. To get a notification, once the object is ready to be used, s.o.
+ * can add a callback using the `then` method on the promise that then calls
+ * the callback once the object gets resolved.
+ * A promise can get resolved only once and only once the data of the promise
+ * can be set. If any of these happens twice or the data is required before
+ * it was set, an exception is throw.
+ */
+var Promise = PDFJS.Promise = (function PromiseClosure() {
+  var EMPTY_PROMISE = {};
+
+  /**
+   * If `data` is passed in this constructor, the promise is created resolved.
+   * If there isn't data, it isn't resolved at the beginning.
+   */
+  function Promise(name, data) {
+    this.name = name;
+    this.isRejected = false;
+    this.error = null;
+    // If you build a promise and pass in some data it's already resolved.
+    if (data != null) {
+      this.isResolved = true;
+      this._data = data;
+      this.hasData = true;
+    } else {
+      this.isResolved = false;
+      this._data = EMPTY_PROMISE;
+    }
+    this.callbacks = [];
+    this.errbacks = [];
+    this.progressbacks = [];
+  };
+  /**
+   * Builds a promise that is resolved when all the passed in promises are
+   * resolved.
+   * @param {Promise[]} promises Array of promises to wait for.
+   * @return {Promise} New dependant promise.
+   */
+  Promise.all = function Promise_all(promises) {
+    var deferred = new Promise();
+    var unresolved = promises.length;
+    var results = [];
+    if (unresolved === 0) {
+      deferred.resolve(results);
+      return deferred;
+    }
+    for (var i = 0, ii = promises.length; i < ii; ++i) {
+      var promise = promises[i];
+      promise.then((function(i) {
+        return function(value) {
+          results[i] = value;
+          unresolved--;
+          if (unresolved === 0)
+            deferred.resolve(results);
+        };
+      })(i));
+    }
+    return deferred;
+  };
+  Promise.prototype = {
+    hasData: false,
+
+    set data(value) {
+      if (value === undefined) {
+        return;
+      }
+      if (this._data !== EMPTY_PROMISE) {
+        error('Promise ' + this.name +
+              ': Cannot set the data of a promise twice');
+      }
+      this._data = value;
+      this.hasData = true;
+
+      if (this.onDataCallback) {
+        this.onDataCallback(value);
+      }
+    },
+
+    get data() {
+      if (this._data === EMPTY_PROMISE) {
+        error('Promise ' + this.name + ': Cannot get data that isn\'t set');
+      }
+      return this._data;
+    },
+
+    onData: function Promise_onData(callback) {
+      if (this._data !== EMPTY_PROMISE) {
+        callback(this._data);
+      } else {
+        this.onDataCallback = callback;
+      }
+    },
+
+    resolve: function Promise_resolve(data) {
+      if (this.isResolved) {
+        error('A Promise can be resolved only once ' + this.name);
+      }
+      if (this.isRejected) {
+        error('The Promise was already rejected ' + this.name);
+      }
+
+      this.isResolved = true;
+      this.data = data || null;
+      var callbacks = this.callbacks;
+
+      for (var i = 0, ii = callbacks.length; i < ii; i++) {
+        callbacks[i].call(null, data);
+      }
+    },
+
+    progress: function Promise_progress(data) {
+      var callbacks = this.progressbacks;
+      for (var i = 0, ii = callbacks.length; i < ii; i++) {
+        callbacks[i].call(null, data);
+      }
+    },
+
+    reject: function Promise_reject(reason) {
+      if (this.isRejected) {
+        error('A Promise can be rejected only once ' + this.name);
+      }
+      if (this.isResolved) {
+        error('The Promise was already resolved ' + this.name);
+      }
+
+      this.isRejected = true;
+      this.error = reason || null;
+      var errbacks = this.errbacks;
+
+      for (var i = 0, ii = errbacks.length; i < ii; i++) {
+        errbacks[i].call(null, reason);
+      }
+    },
+
+    then: function Promise_then(callback, errback, progressback) {
+      if (!callback) {
+        error('Requiring callback' + this.name);
+      }
+
+      // If the promise is already resolved, call the callback directly.
+      if (this.isResolved) {
+        var data = this.data;
+        callback.call(null, data);
+      } else if (this.isRejected && errback) {
+        var error = this.error;
+        errback.call(null, error);
+      } else {
+        this.callbacks.push(callback);
+        if (errback)
+          this.errbacks.push(errback);
+      }
+
+      if (progressback)
+        this.progressbacks.push(progressback);
+    }
+  };
+
+  return Promise;
+})();
+
+var StatTimer = (function StatTimerClosure() {
+  function rpad(str, pad, length) {
+    while (str.length < length)
+      str += pad;
+    return str;
+  }
+  function StatTimer() {
+    this.started = {};
+    this.times = [];
+    this.enabled = true;
+  }
+  StatTimer.prototype = {
+    time: function StatTimer_time(name) {
+      if (!this.enabled)
+        return;
+      if (name in this.started)
+        throw 'Timer is already running for ' + name;
+      this.started[name] = Date.now();
+    },
+    timeEnd: function StatTimer_timeEnd(name) {
+      if (!this.enabled)
+        return;
+      if (!(name in this.started))
+        throw 'Timer has not been started for ' + name;
+      this.times.push({
+        'name': name,
+        'start': this.started[name],
+        'end': Date.now()
+      });
+      // Remove timer from started so it can be called again.
+      delete this.started[name];
+    },
+    toString: function StatTimer_toString() {
+      var times = this.times;
+      var out = '';
+      // Find the longest name for padding purposes.
+      var longest = 0;
+      for (var i = 0, ii = times.length; i < ii; ++i) {
+        var name = times[i]['name'];
+        if (name.length > longest)
+          longest = name.length;
+      }
+      for (var i = 0, ii = times.length; i < ii; ++i) {
+        var span = times[i];
+        var duration = span.end - span.start;
+        out += rpad(span['name'], ' ', longest) + ' ' + duration + 'ms\n';
+      }
+      return out;
+    }
+  };
+  return StatTimer;
+})();
+
+/* -*- Mode: Java; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/* vim: set shiftwidth=2 tabstop=2 autoindent cindent expandtab: */
+
+/**
+ * This is the main entry point for loading a PDF and interacting with it.
+ * NOTE: If a URL is used to fetch the PDF data a standard XMLHttpRequest(XHR)
+ * is used, which means it must follow the same origin rules that any XHR does
+ * e.g. No cross domain requests without CORS.
+ *
+ * @param {string|TypedAray} source Either a url to a PDF is located or a
+ * typed array already populated with data.
+ * @return {Promise} A promise that is resolved with {PDFDocumentProxy} object.
+ */
+PDFJS.getDocument = function getDocument(source) {
+  var promise = new PDFJS.Promise();
+  var transport = new WorkerTransport(promise);
+  if (typeof source === 'string') {
+    // fetch url
+    PDFJS.getPdf(
+      {
+        url: source,
+        progress: function getPDFProgress(evt) {
+          if (evt.lengthComputable)
+            promise.progress({
+              loaded: evt.loaded,
+              total: evt.total
+            });
+        },
+        error: function getPDFError(e) {
+          promise.reject('Unexpected server response of ' +
+            e.target.status + '.');
+        }
+      },
+      function getPDFLoad(data) {
+        transport.sendData(data);
+      });
+  } else {
+    // assuming the source is array, instantiating directly from it
+    transport.sendData(source);
+  }
+  return promise;
+};
+
+/**
+ * Proxy to a PDFDocument in the worker thread. Also, contains commonly used
+ * properties that can be read synchronously.
+ */
+var PDFDocumentProxy = (function PDFDocumentProxyClosure() {
+  function PDFDocumentProxy(pdfInfo, transport) {
+    this.pdfInfo = pdfInfo;
+    this.transport = transport;
+  }
+  PDFDocumentProxy.prototype = {
+    /**
+     * @return {number} Total number of pages the PDF contains.
+     */
+    get numPages() {
+      return this.pdfInfo.numPages;
+    },
+    /**
+     * @return {string} A unique ID to identify a PDF. Not guaranteed to be
+     * unique.
+     */
+    get fingerprint() {
+      return this.pdfInfo.fingerprint;
+    },
+    /**
+     * @param {number} The page number to get. The first page is 1.
+     * @return {Promise} A promise that is resolved with a {PDFPageProxy}
+     * object.
+     */
+    getPage: function PDFDocumentProxy_getPage(number) {
+      return this.transport.getPage(number);
+    },
+    /**
+     * @return {Promise} A promise that is resolved with a lookup table for
+     * mapping named destinations to reference numbers.
+     */
+    getDestinations: function PDFDocumentProxy_getDestinations() {
+      var promise = new PDFJS.Promise();
+      var destinations = this.pdfInfo.destinations;
+      promise.resolve(destinations);
+      return promise;
+    },
+    /**
+     * @return {Promise} A promise that is resolved with an {array} that is a
+     * tree outline (if it has one) of the PDF. The tree is in the format of:
+     * [
+     *  {
+     *   title: string,
+     *   bold: boolean,
+     *   italic: boolean,
+     *   color: rgb array,
+     *   dest: dest obj,
+     *   items: array of more items like this
+     *  },
+     *  ...
+     * ].
+     */
+    getOutline: function PDFDocumentProxy_getOutline() {
+      var promise = new PDFJS.Promise();
+      var outline = this.pdfInfo.outline;
+      promise.resolve(outline);
+      return promise;
+    },
+    /**
+     * @return {Promise} A promise that is resolved with an {object} that has
+     * info and metadata properties.  Info is an {object} filled with anything
+     * available in the information dictionary and similarly metadata is a
+     * {Metadata} object with information from the metadata section of the PDF.
+     */
+    getMetadata: function PDFDocumentProxy_getMetadata() {
+      var promise = new PDFJS.Promise();
+      var info = this.pdfInfo.info;
+      var metadata = this.pdfInfo.metadata;
+      promise.resolve({
+        info: info,
+        metadata: metadata ? new PDFJS.Metadata(metadata) : null
+      });
+      return promise;
+    },
+    destroy: function PDFDocumentProxy_destroy() {
+      this.transport.destroy();
+    }
+  };
+  return PDFDocumentProxy;
+})();
+
+var PDFPageProxy = (function PDFPageProxyClosure() {
+  function PDFPageProxy(pageInfo, transport) {
+    this.pageInfo = pageInfo;
+    this.transport = transport;
+    this.stats = new StatTimer();
+    this.stats.enabled = !!globalScope.PDFJS.enableStats;
+    this.objs = transport.objs;
+    this.renderInProgress = false;
+  }
+  PDFPageProxy.prototype = {
+    /**
+     * @return {number} Page number of the page. First page is 1.
+     */
+    get pageNumber() {
+      return this.pageInfo.pageIndex + 1;
+    },
+    /**
+     * @return {number} The number of degrees the page is rotated clockwise.
+     */
+    get rotate() {
+      return this.pageInfo.rotate;
+    },
+    /**
+     * @return {object} The reference that points to this page. It has 'num' and
+     * 'gen' properties.
+     */
+    get ref() {
+      return this.pageInfo.ref;
+    },
+    /**
+     * @return {array} An array of the visible portion of the PDF page in the
+     * user space units - [x1, y1, x2, y2].
+     */
+    get view() {
+      return this.pageInfo.view;
+    },
+    /**
+     * @param {number} scale The desired scale of the viewport.
+     * @param {number} rotate Degrees to rotate the viewport. If omitted this
+     * defaults to the page rotation.
+     * @return {PageViewport} Contains 'width' and 'height' properties along
+     * with transforms required for rendering.
+     */
+    getViewport: function PDFPageProxy_getViewport(scale, rotate) {
+      if (arguments.length < 2)
+        rotate = this.rotate;
+      return new PDFJS.PageViewport(this.view, scale, rotate, 0, 0);
+    },
+    /**
+     * @return {Promise} A promise that is resolved with an {array} of the
+     * annotation objects.
+     */
+    getAnnotations: function PDFPageProxy_getAnnotations() {
+      if (this.annotationsPromise)
+        return this.annotationsPromise;
+
+      var promise = new PDFJS.Promise();
+      this.annotationsPromise = promise;
+      this.transport.getAnnotations(this.pageInfo.pageIndex);
+      return promise;
+    },
+    /**
+     * Begins the process of rendering a page to the desired context.
+     * @param {object} params A parameter object that supports:
+     * {
+     *   canvasContext(required): A 2D context of a DOM Canvas object.,
+     *   textLayer(optional): An object that has beginLayout, endLayout, and
+     *                        appendText functions.
+     * }.
+     * @return {Promise} A promise that is resolved when the page finishes
+     * rendering.
+     */
+    render: function PDFPageProxy_render(params) {
+      this.renderInProgress = true;
+
+      var promise = new Promise();
+      var stats = this.stats;
+      stats.time('Overall');
+      // If there is no displayReadyPromise yet, then the operatorList was never
+      // requested before. Make the request and create the promise.
+      if (!this.displayReadyPromise) {
+        this.displayReadyPromise = new Promise();
+        this.destroyed = false;
+
+        this.stats.time('Page Request');
+        this.transport.messageHandler.send('RenderPageRequest', {
+          pageIndex: this.pageNumber - 1
+        });
+      }
+
+      var self = this;
+      function complete(error) {
+        self.renderInProgress = false;
+        if (self.destroyed) {
+          delete self.operatorList;
+          delete self.displayReadyPromise;
+        }
+
+        if (error)
+          promise.reject(error);
+        else
+          promise.resolve();
+      };
+
+      // Once the operatorList and fonts are loaded, do the actual rendering.
+      this.displayReadyPromise.then(
+        function pageDisplayReadyPromise() {
+          if (self.destroyed) {
+            complete();
+            return;
+          }
+
+          var gfx = new CanvasGraphics(params.canvasContext,
+            this.objs, params.textLayer);
+          try {
+           this.display(gfx, params.viewport, complete);
+          } catch (e) {
+            complete(e);
+          }
+        }.bind(this),
+        function pageDisplayReadPromiseError(reason) {
+          complete(reason);
+        }
+      );
+
+      return promise;
+    },
+    /**
+     * For internal use only.
+     */
+    startRenderingFromOperatorList:
+      function PDFPageProxy_startRenderingFromOperatorList(operatorList,
+                                                           fonts) {
+      var self = this;
+      this.operatorList = operatorList;
+
+      var displayContinuation = function pageDisplayContinuation() {
+        // Always defer call to display() to work around bug in
+        // Firefox error reporting from XHR callbacks.
+        PdfJS_window.setTimeout(function pageSetTimeout() {
+          self.displayReadyPromise.resolve();
+        });
+      };
+
+      this.ensureFonts(fonts,
+        function pageStartRenderingFromOperatorListEnsureFonts() {
+          displayContinuation();
+        }
+      );
+    },
+    /**
+     * For internal use only.
+     */
+    ensureFonts: function PDFPageProxy_ensureFonts(fonts, callback) {
+      this.stats.time('Font Loading');
+      // Convert the font names to the corresponding font obj.
+      for (var i = 0, ii = fonts.length; i < ii; i++) {
+        fonts[i] = this.objs.objs[fonts[i]].data;
+      }
+
+      // Load all the fonts
+      FontLoader.bind(
+        fonts,
+        function pageEnsureFontsFontObjs(fontObjs) {
+          this.stats.timeEnd('Font Loading');
+
+          callback.call(this);
+        }.bind(this)
+      );
+    },
+    /**
+     * For internal use only.
+     */
+    display: function PDFPageProxy_display(gfx, viewport, callback) {
+      var stats = this.stats;
+      stats.time('Rendering');
+
+      gfx.beginDrawing(viewport);
+
+      var startIdx = 0;
+      var length = this.operatorList.fnArray.length;
+      var operatorList = this.operatorList;
+      var stepper = null;
+      if (PDFJS.pdfBug && StepperManager.enabled) {
+        stepper = StepperManager.create(this.pageNumber - 1);
+        stepper.init(operatorList);
+        stepper.nextBreakPoint = stepper.getNextBreakPoint();
+      }
+
+      var self = this;
+      function next() {
+        startIdx =
+          gfx.executeOperatorList(operatorList, startIdx, next, stepper);
+        if (startIdx == length) {
+          gfx.endDrawing();
+          stats.timeEnd('Rendering');
+          stats.timeEnd('Overall');
+          if (callback) callback();
+        }
+      }
+      next();
+    },
+    /**
+     * Stub for future feature.
+     */
+    getTextContent: function PDFPageProxy_getTextContent() {
+      var promise = new PDFJS.Promise();
+      var textContent = 'page text'; // not implemented
+      promise.resolve(textContent);
+      return promise;
+    },
+    /**
+     * Stub for future feature.
+     */
+    getOperationList: function PDFPageProxy_getOperationList() {
+      var promise = new PDFJS.Promise();
+      var operationList = { // not implemented
+        dependencyFontsID: null,
+        operatorList: null
+      };
+      promise.resolve(operationList);
+      return promise;
+    },
+    /**
+     * Destroys resources allocated by the page.
+     */
+    destroy: function PDFPageProxy_destroy() {
+      this.destroyed = true;
+
+      if (!this.renderInProgress) {
+        delete this.operatorList;
+        delete this.displayReadyPromise;
+      }
+    }
+  };
+  return PDFPageProxy;
+})();
+/**
+ * For internal use only.
+ */
+var WorkerTransport = (function WorkerTransportClosure() {
+  function WorkerTransport(promise) {
+    this.workerReadyPromise = promise;
+    this.objs = new PDFObjects();
+
+    this.pageCache = [];
+    this.pagePromises = [];
+    this.fontsLoading = {};
+
+    // If worker support isn't disabled explicit and the browser has worker
+    // support, create a new web worker and test if it/the browser fullfills
+    // all requirements to run parts of pdf.js in a web worker.
+    // Right now, the requirement is, that an Uint8Array is still an Uint8Array
+    // as it arrives on the worker. Chrome added this with version 15.
+    if (!globalScope.PDFJS.disableWorker && typeof PdfJS_window.Worker !== 'undefined') {
+      var workerSrc = PDFJS.workerSrc;
+      if (typeof workerSrc === 'undefined') {
+        error('No PDFJS.workerSrc specified');
+      }
+
+      try {
+        var worker;
+        if (PDFJS.isFirefoxExtension) {
+          // The firefox extension can't load the worker from the resource://
+          // url so we have to inline the script and then use the blob loader.
+          var bb = new MozBlobBuilder();
+          bb.append(PdfJS_window.document.querySelector('#PDFJS_SCRIPT_TAG').textContent);
+          var blobUrl = PdfJS_window.window.URL.createObjectURL(bb.getBlob());
+          worker = new Worker(blobUrl);
+        } else {
+          // Some versions of FF can't create a worker on localhost, see:
+          // https://bugzilla.mozilla.org/show_bug.cgi?id=683280
+          worker = new Worker(workerSrc);
+        }
+
+        var messageHandler = new MessageHandler('main', worker);
+        this.messageHandler = messageHandler;
+
+        messageHandler.on('test', function transportTest(supportTypedArray) {
+          if (supportTypedArray) {
+            this.worker = worker;
+            this.setupMessageHandler(messageHandler);
+          } else {
+            globalScope.PDFJS.disableWorker = true;
+            this.setupFakeWorker();
+          }
+        }.bind(this));
+
+        var testObj = new Uint8Array(1);
+        // Some versions of Opera throw a DATA_CLONE_ERR on
+        // serializing the typed array.
+        messageHandler.send('test', testObj);
+        return;
+      } catch (e) {
+        warn('The worker has been disabled.');
+      }
+    }
+    // Either workers are disabled, not supported or have thrown an exception.
+    // Thus, we fallback to a faked worker.
+    globalScope.PDFJS.disableWorker = true;
+    this.setupFakeWorker();
+  }
+  WorkerTransport.prototype = {
+    destroy: function WorkerTransport_destroy() {
+      if (this.worker)
+        this.worker.terminate();
+
+      this.pageCache = [];
+      this.pagePromises = [];
+    },
+    setupFakeWorker: function WorkerTransport_setupFakeWorker() {
+      // If we don't use a worker, just post/sendMessage to the main thread.
+      var fakeWorker = {
+        postMessage: function WorkerTransport_postMessage(obj) {
+          fakeWorker.onmessage({data: obj});
+        },
+        terminate: function WorkerTransport_terminate() {}
+      };
+
+      var messageHandler = new MessageHandler('main', fakeWorker);
+      this.setupMessageHandler(messageHandler);
+
+      // If the main thread is our worker, setup the handling for the messages
+      // the main thread sends to it self.
+      WorkerMessageHandler.setup(messageHandler);
+    },
+
+    setupMessageHandler:
+      function WorkerTransport_setupMessageHandler(messageHandler) {
+      this.messageHandler = messageHandler;
+
+      messageHandler.on('GetDoc', function transportDoc(data) {
+        var pdfInfo = data.pdfInfo;
+        var pdfDocument = new PDFDocumentProxy(pdfInfo, this);
+        this.pdfDocument = pdfDocument;
+        this.workerReadyPromise.resolve(pdfDocument);
+      }, this);
+
+      messageHandler.on('GetPage', function transportPage(data) {
+        var pageInfo = data.pageInfo;
+        var page = new PDFPageProxy(pageInfo, this);
+        this.pageCache[pageInfo.pageIndex] = page;
+        var promise = this.pagePromises[pageInfo.pageIndex];
+        promise.resolve(page);
+      }, this);
+
+      messageHandler.on('GetAnnotations', function transportAnnotations(data) {
+        var annotations = data.annotations;
+        var promise = this.pageCache[data.pageIndex].annotationsPromise;
+        promise.resolve(annotations);
+      }, this);
+
+      messageHandler.on('RenderPage', function transportRender(data) {
+        var page = this.pageCache[data.pageIndex];
+        var depFonts = data.depFonts;
+
+        page.stats.timeEnd('Page Request');
+        page.startRenderingFromOperatorList(data.operatorList, depFonts);
+      }, this);
+
+      messageHandler.on('obj', function transportObj(data) {
+        var id = data[0];
+        var type = data[1];
+        if (this.objs.hasData(id))
+          return;
+
+        switch (type) {
+          case 'JpegStream':
+            var imageData = data[2];
+            loadJpegStream(id, imageData, this.objs);
+            break;
+          case 'Image':
+            var imageData = data[2];
+            this.objs.resolve(id, imageData);
+            break;
+          case 'Font':
+            var name = data[2];
+            var file = data[3];
+            var properties = data[4];
+
+            if (file) {
+              // Rewrap the ArrayBuffer in a stream.
+              var fontFileDict = new Dict();
+              file = new Stream(file, 0, file.length, fontFileDict);
+            }
+
+            // At this point, only the font object is created but the font is
+            // not yet attached to the DOM. This is done in `FontLoader.bind`.
+            var font = new Font(name, file, properties);
+            this.objs.resolve(id, font);
+            break;
+          default:
+            error('Got unkown object type ' + type);
+        }
+      }, this);
+
+      messageHandler.on('PageError', function transportError(data) {
+        var page = this.pageCache[data.pageNum - 1];
+        if (page.displayReadyPromise)
+          page.displayReadyPromise.reject(data.error);
+        else
+          error(data.error);
+      }, this);
+
+      messageHandler.on('JpegDecode', function(data, promise) {
+        var imageData = data[0];
+        var components = data[1];
+        if (components != 3 && components != 1)
+          error('Only 3 component or 1 component can be returned');
+
+        var img = new Image();
+        img.onload = (function messageHandler_onloadClosure() {
+          var width = img.width;
+          var height = img.height;
+          var size = width * height;
+          var rgbaLength = size * 4;
+          var buf = new Uint8Array(size * components);
+          var tmpCanvas = createScratchCanvas(width, height);
+          var tmpCtx = tmpCanvas.getContext('2d');
+          tmpCtx.drawImage(img, 0, 0);
+          var data = tmpCtx.getImageData(0, 0, width, height).data;
+
+          if (components == 3) {
+            for (var i = 0, j = 0; i < rgbaLength; i += 4, j += 3) {
+              buf[j] = data[i];
+              buf[j + 1] = data[i + 1];
+              buf[j + 2] = data[i + 2];
+            }
+          } else if (components == 1) {
+            for (var i = 0, j = 0; i < rgbaLength; i += 4, j++) {
+              buf[j] = data[i];
+            }
+          }
+          promise.resolve({ data: buf, width: width, height: height});
+        }).bind(this);
+        var src = 'data:image/jpeg;base64,' + PdfJS_window.window.btoa(imageData);
+        img.src = src;
+      });
+    },
+
+    sendData: function WorkerTransport_sendData(data) {
+      this.messageHandler.send('GetDocRequest', data);
+    },
+
+    getPage: function WorkerTransport_getPage(pageNumber, promise) {
+      var pageIndex = pageNumber - 1;
+      if (pageIndex in this.pagePromises)
+        return this.pagePromises[pageIndex];
+      var promise = new PDFJS.Promise('Page ' + pageNumber);
+      this.pagePromises[pageIndex] = promise;
+      this.messageHandler.send('GetPageRequest', { pageIndex: pageIndex });
+      return promise;
+    },
+
+    getAnnotations: function WorkerTransport_getAnnotations(pageIndex) {
+      this.messageHandler.send('GetAnnotationsRequest',
+        { pageIndex: pageIndex });
+    }
+  };
+  return WorkerTransport;
+
+})();
+
+/* -*- Mode: Java; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/* vim: set shiftwidth=2 tabstop=2 autoindent cindent expandtab: */
+
+'use strict';
+
+// <canvas> contexts store most of the state we need natively.
+// However, PDF needs a bit more state, which we store here.
+
+var TextRenderingMode = {
+  FILL: 0,
+  STROKE: 1,
+  FILL_STROKE: 2,
+  INVISIBLE: 3,
+  FILL_ADD_TO_PATH: 4,
+  STROKE_ADD_TO_PATH: 5,
+  FILL_STROKE_ADD_TO_PATH: 6,
+  ADD_TO_PATH: 7
+};
+
+// Minimal font size that would be used during canvas fillText operations.
+var MIN_FONT_SIZE = 1;
+
+function createScratchCanvas(width, height) {
+  var canvas = PdfJS_window.document.createElement('canvas');
+  canvas.width = width;
+  canvas.height = height;
+  return canvas;
+}
+
+function addContextCurrentTransform(ctx) {
+  // If the context doesn't expose a `mozCurrentTransform`, add a JS based on.
+  if (!ctx.mozCurrentTransform) {
+    // Store the original context
+    ctx._originalSave = ctx.save;
+    ctx._originalRestore = ctx.restore;
+    ctx._originalRotate = ctx.rotate;
+    ctx._originalScale = ctx.scale;
+    ctx._originalTranslate = ctx.translate;
+    ctx._originalTransform = ctx.transform;
+
+    ctx._transformMatrix = [1, 0, 0, 1, 0, 0];
+    ctx._transformStack = [];
+
+    Object.defineProperty(ctx, 'mozCurrentTransform', {
+      get: function getCurrentTransform() {
+        return this._transformMatrix;
+      }
+    });
+
+    Object.defineProperty(ctx, 'mozCurrentTransformInverse', {
+      get: function getCurrentTransformInverse() {
+        // Calculation done using WolframAlpha:
+        // http://www.wolframalpha.com/input/?
+        //   i=Inverse+{{a%2C+c%2C+e}%2C+{b%2C+d%2C+f}%2C+{0%2C+0%2C+1}}
+
+        var m = this._transformMatrix;
+        var a = m[0], b = m[1], c = m[2], d = m[3], e = m[4], f = m[5];
+
+        var ad_bc = a * d - b * c;
+        var bc_ad = b * c - a * d;
+
+        return [
+          d / ad_bc,
+          b / bc_ad,
+          c / bc_ad,
+          a / ad_bc,
+          (d * e - c * f) / bc_ad,
+          (b * e - a * f) / ad_bc
+        ];
+      }
+    });
+
+    ctx.save = function ctxSave() {
+      var old = this._transformMatrix;
+      this._transformStack.push(old);
+      this._transformMatrix = old.slice(0, 6);
+
+      this._originalSave();
+    };
+
+    ctx.restore = function ctxRestore() {
+      var prev = this._transformStack.pop();
+      if (prev) {
+        this._transformMatrix = prev;
+        this._originalRestore();
+      }
+    };
+
+    ctx.translate = function ctxTranslate(x, y) {
+      var m = this._transformMatrix;
+      m[4] = m[0] * x + m[2] * y + m[4];
+      m[5] = m[1] * x + m[3] * y + m[5];
+
+      this._originalTranslate(x, y);
+    };
+
+    ctx.scale = function ctxScale(x, y) {
+      var m = this._transformMatrix;
+      m[0] = m[0] * x;
+      m[1] = m[1] * x;
+      m[2] = m[2] * y;
+      m[3] = m[3] * y;
+
+      this._originalScale(x, y);
+    };
+
+    ctx.transform = function ctxTransform(a, b, c, d, e, f) {
+      var m = this._transformMatrix;
+      this._transformMatrix = [
+        m[0] * a + m[2] * b,
+        m[1] * a + m[3] * b,
+        m[0] * c + m[2] * d,
+        m[1] * c + m[3] * d,
+        m[0] * e + m[2] * f + m[4],
+        m[1] * e + m[3] * f + m[5]
+      ];
+
+      ctx._originalTransform(a, b, c, d, e, f);
+    };
+
+    ctx.rotate = function ctxRotate(angle) {
+      var cosValue = Math.cos(angle);
+      var sinValue = Math.sin(angle);
+
+      var m = this._transformMatrix;
+      this._transformMatrix = [
+        m[0] * cosValue + m[2] * sinValue,
+        m[1] * cosValue + m[3] * sinValue,
+        m[0] * (-sinValue) + m[2] * cosValue,
+        m[1] * (-sinValue) + m[3] * cosValue,
+        m[4],
+        m[5]
+      ];
+
+      this._originalRotate(angle);
+    };
+  }
+}
+
+var CanvasExtraState = (function CanvasExtraStateClosure() {
+  function CanvasExtraState(old) {
+    // Are soft masks and alpha values shapes or opacities?
+    this.alphaIsShape = false;
+    this.fontSize = 0;
+    this.fontSizeScale = 1;
+    this.textMatrix = IDENTITY_MATRIX;
+    this.fontMatrix = IDENTITY_MATRIX;
+    this.leading = 0;
+    // Current point (in user coordinates)
+    this.x = 0;
+    this.y = 0;
+    // Start of text line (in text coordinates)
+    this.lineX = 0;
+    this.lineY = 0;
+    // Character and word spacing
+    this.charSpacing = 0;
+    this.wordSpacing = 0;
+    this.textHScale = 1;
+    this.textRenderingMode = TextRenderingMode.FILL;
+    // Color spaces
+    this.fillColorSpace = new DeviceGrayCS();
+    this.fillColorSpaceObj = null;
+    this.strokeColorSpace = new DeviceGrayCS();
+    this.strokeColorSpaceObj = null;
+    this.fillColorObj = null;
+    this.strokeColorObj = null;
+    // Default fore and background colors
+    this.fillColor = '#000000';
+    this.strokeColor = '#000000';
+    // Note: fill alpha applies to all non-stroking operations
+    this.fillAlpha = 1;
+    this.strokeAlpha = 1;
+    this.lineWidth = 1;
+
+    this.old = old;
+  }
+
+  CanvasExtraState.prototype = {
+    clone: function CanvasExtraState_clone() {
+      return Object.create(this);
+    },
+    setCurrentPoint: function CanvasExtraState_setCurrentPoint(x, y) {
+      this.x = x;
+      this.y = y;
+    }
+  };
+  return CanvasExtraState;
+})();
+
+var CanvasGraphics = (function CanvasGraphicsClosure() {
+  // Defines the time the executeOperatorList is going to be executing
+  // before it stops and shedules a continue of execution.
+  var kExecutionTime = 15;
+
+  function CanvasGraphics(canvasCtx, objs, textLayer) {
+    this.ctx = canvasCtx;
+    this.current = new CanvasExtraState();
+    this.stateStack = [];
+    this.pendingClip = null;
+    this.res = null;
+    this.xobjs = null;
+    this.objs = objs;
+    this.textLayer = textLayer;
+    if (canvasCtx) {
+      addContextCurrentTransform(canvasCtx);
+    }
+  }
+
+  var LINE_CAP_STYLES = ['butt', 'round', 'square'];
+  var LINE_JOIN_STYLES = ['miter', 'round', 'bevel'];
+  var NORMAL_CLIP = {};
+  var EO_CLIP = {};
+
+  CanvasGraphics.prototype = {
+    slowCommands: {
+      'stroke': true,
+      'closeStroke': true,
+      'fill': true,
+      'eoFill': true,
+      'fillStroke': true,
+      'eoFillStroke': true,
+      'closeFillStroke': true,
+      'closeEOFillStroke': true,
+      'showText': true,
+      'showSpacedText': true,
+      'setStrokeColorSpace': true,
+      'setFillColorSpace': true,
+      'setStrokeColor': true,
+      'setStrokeColorN': true,
+      'setFillColor': true,
+      'setFillColorN': true,
+      'setStrokeGray': true,
+      'setFillGray': true,
+      'setStrokeRGBColor': true,
+      'setFillRGBColor': true,
+      'setStrokeCMYKColor': true,
+      'setFillCMYKColor': true,
+      'paintJpegXObject': true,
+      'paintImageXObject': true,
+      'paintImageMaskXObject': true,
+      'shadingFill': true
+    },
+
+    beginDrawing: function CanvasGraphics_beginDrawing(viewport) {
+      var transform = viewport.transform;
+      this.ctx.save();
+      this.ctx.transform.apply(this.ctx, transform);
+
+      if (this.textLayer)
+        this.textLayer.beginLayout();
+    },
+
+    executeOperatorList: function CanvasGraphics_executeOperatorList(
+                                    operatorList,
+                                    executionStartIdx, continueCallback,
+                                    stepper) {
+      var argsArray = operatorList.argsArray;
+      var fnArray = operatorList.fnArray;
+      var i = executionStartIdx || 0;
+      var argsArrayLen = argsArray.length;
+
+      // Sometimes the OperatorList to execute is empty.
+      if (argsArrayLen == i) {
+        return i;
+      }
+
+      var executionEndIdx;
+      var endTime = Date.now() + kExecutionTime;
+
+      var objs = this.objs;
+      var fnName;
+      var slowCommands = this.slowCommands;
+
+      while (true) {
+        if (stepper && i === stepper.nextBreakPoint) {
+          stepper.breakIt(i, continueCallback);
+          return i;
+        }
+
+        fnName = fnArray[i];
+
+        if (fnName !== 'dependency') {
+          this[fnName].apply(this, argsArray[i]);
+        } else {
+          var deps = argsArray[i];
+          for (var n = 0, nn = deps.length; n < nn; n++) {
+            var depObjId = deps[n];
+
+            // If the promise isn't resolved yet, add the continueCallback
+            // to the promise and bail out.
+            if (!objs.isResolved(depObjId)) {
+              objs.get(depObjId, continueCallback);
+              return i;
+            }
+          }
+        }
+
+        i++;
+
+        // If the entire operatorList was executed, stop as were done.
+        if (i == argsArrayLen) {
+          return i;
+        }
+
+        // If the execution took longer then a certain amount of time, shedule
+        // to continue exeution after a short delay.
+        // However, this is only possible if a 'continueCallback' is passed in.
+        if (continueCallback && slowCommands[fnName] && Date.now() > endTime) {
+          PdfJS_window.setTimeout(continueCallback, 0);
+          return i;
+        }
+
+        // If the operatorList isn't executed completely yet OR the execution
+        // time was short enough, do another execution round.
+      }
+    },
+
+    endDrawing: function CanvasGraphics_endDrawing() {
+      this.ctx.restore();
+
+      if (this.textLayer)
+        this.textLayer.endLayout();
+    },
+
+    // Graphics state
+    setLineWidth: function CanvasGraphics_setLineWidth(width) {
+      this.current.lineWidth = width;
+      this.ctx.lineWidth = width;
+    },
+    setLineCap: function CanvasGraphics_setLineCap(style) {
+      this.ctx.lineCap = LINE_CAP_STYLES[style];
+    },
+    setLineJoin: function CanvasGraphics_setLineJoin(style) {
+      this.ctx.lineJoin = LINE_JOIN_STYLES[style];
+    },
+    setMiterLimit: function CanvasGraphics_setMiterLimit(limit) {
+      this.ctx.miterLimit = limit;
+    },
+    setDash: function CanvasGraphics_setDash(dashArray, dashPhase) {
+      this.ctx.mozDash = dashArray;
+      this.ctx.mozDashOffset = dashPhase;
+      this.ctx.webkitLineDash = dashArray;
+      this.ctx.webkitLineDashOffset = dashPhase;
+    },
+    setRenderingIntent: function CanvasGraphics_setRenderingIntent(intent) {
+      TODO('set rendering intent: ' + intent);
+    },
+    setFlatness: function CanvasGraphics_setFlatness(flatness) {
+      TODO('set flatness: ' + flatness);
+    },
+    setGState: function CanvasGraphics_setGState(states) {
+      for (var i = 0, ii = states.length; i < ii; i++) {
+        var state = states[i];
+        var key = state[0];
+        var value = state[1];
+
+        switch (key) {
+          case 'LW':
+            this.setLineWidth(value);
+            break;
+          case 'LC':
+            this.setLineCap(value);
+            break;
+          case 'LJ':
+            this.setLineJoin(value);
+            break;
+          case 'ML':
+            this.setMiterLimit(value);
+            break;
+          case 'D':
+            this.setDash(value[0], value[1]);
+            break;
+          case 'RI':
+            this.setRenderingIntent(value);
+            break;
+          case 'FL':
+            this.setFlatness(value);
+            break;
+          case 'Font':
+            this.setFont(state[1], state[2]);
+            break;
+          case 'CA':
+            this.current.strokeAlpha = state[1];
+            break;
+          case 'ca':
+            this.current.fillAlpha = state[1];
+            this.ctx.globalAlpha = state[1];
+            break;
+        }
+      }
+    },
+    save: function CanvasGraphics_save() {
+      this.ctx.save();
+      var old = this.current;
+      this.stateStack.push(old);
+      this.current = old.clone();
+    },
+    restore: function CanvasGraphics_restore() {
+      var prev = this.stateStack.pop();
+      if (prev) {
+        this.current = prev;
+        this.ctx.restore();
+      }
+    },
+    transform: function CanvasGraphics_transform(a, b, c, d, e, f) {
+      this.ctx.transform(a, b, c, d, e, f);
+    },
+
+    // Path
+    moveTo: function CanvasGraphics_moveTo(x, y) {
+      this.ctx.moveTo(x, y);
+      this.current.setCurrentPoint(x, y);
+    },
+    lineTo: function CanvasGraphics_lineTo(x, y) {
+      this.ctx.lineTo(x, y);
+      this.current.setCurrentPoint(x, y);
+    },
+    curveTo: function CanvasGraphics_curveTo(x1, y1, x2, y2, x3, y3) {
+      this.ctx.bezierCurveTo(x1, y1, x2, y2, x3, y3);
+      this.current.setCurrentPoint(x3, y3);
+    },
+    curveTo2: function CanvasGraphics_curveTo2(x2, y2, x3, y3) {
+      var current = this.current;
+      this.ctx.bezierCurveTo(current.x, current.y, x2, y2, x3, y3);
+      current.setCurrentPoint(x3, y3);
+    },
+    curveTo3: function CanvasGraphics_curveTo3(x1, y1, x3, y3) {
+      this.curveTo(x1, y1, x3, y3, x3, y3);
+      this.current.setCurrentPoint(x3, y3);
+    },
+    closePath: function CanvasGraphics_closePath() {
+      this.ctx.closePath();
+    },
+    rectangle: function CanvasGraphics_rectangle(x, y, width, height) {
+      this.ctx.rect(x, y, width, height);
+    },
+    stroke: function CanvasGraphics_stroke(consumePath) {
+      consumePath = typeof consumePath !== 'undefined' ? consumePath : true;
+      var ctx = this.ctx;
+      var strokeColor = this.current.strokeColor;
+      if (this.current.lineWidth === 0)
+        ctx.lineWidth = this.getSinglePixelWidth();
+      // For stroke we want to temporarily change the global alpha to the
+      // stroking alpha.
+      ctx.globalAlpha = this.current.strokeAlpha;
+      if (strokeColor && strokeColor.hasOwnProperty('type') &&
+          strokeColor.type === 'Pattern') {
+        // for patterns, we transform to pattern space, calculate
+        // the pattern, call stroke, and restore to user space
+        ctx.save();
+        ctx.strokeStyle = strokeColor.getPattern(ctx);
+        ctx.stroke();
+        ctx.restore();
+      } else {
+        ctx.stroke();
+      }
+      if (consumePath)
+        this.consumePath();
+      // Restore the global alpha to the fill alpha
+      ctx.globalAlpha = this.current.fillAlpha;
+    },
+    closeStroke: function CanvasGraphics_closeStroke() {
+      this.closePath();
+      this.stroke();
+    },
+    fill: function CanvasGraphics_fill(consumePath) {
+      consumePath = typeof consumePath !== 'undefined' ? consumePath : true;
+      var ctx = this.ctx;
+      var fillColor = this.current.fillColor;
+
+      if (fillColor && fillColor.hasOwnProperty('type') &&
+          fillColor.type === 'Pattern') {
+        ctx.save();
+        ctx.fillStyle = fillColor.getPattern(ctx);
+        ctx.fill();
+        ctx.restore();
+      } else {
+        ctx.fill();
+      }
+      if (consumePath)
+        this.consumePath();
+    },
+    eoFill: function CanvasGraphics_eoFill() {
+      var savedFillRule = this.setEOFillRule();
+      this.fill();
+      this.restoreFillRule(savedFillRule);
+    },
+    fillStroke: function CanvasGraphics_fillStroke() {
+      this.fill(false);
+      this.stroke(false);
+
+      this.consumePath();
+    },
+    eoFillStroke: function CanvasGraphics_eoFillStroke() {
+      var savedFillRule = this.setEOFillRule();
+      this.fillStroke();
+      this.restoreFillRule(savedFillRule);
+    },
+    closeFillStroke: function CanvasGraphics_closeFillStroke() {
+      this.closePath();
+      this.fillStroke();
+    },
+    closeEOFillStroke: function CanvasGraphics_closeEOFillStroke() {
+      var savedFillRule = this.setEOFillRule();
+      this.closePath();
+      this.fillStroke();
+      this.restoreFillRule(savedFillRule);
+    },
+    endPath: function CanvasGraphics_endPath() {
+      this.consumePath();
+    },
+
+    // Clipping
+    clip: function CanvasGraphics_clip() {
+      this.pendingClip = NORMAL_CLIP;
+    },
+    eoClip: function CanvasGraphics_eoClip() {
+      this.pendingClip = EO_CLIP;
+    },
+
+    // Text
+    beginText: function CanvasGraphics_beginText() {
+      this.current.textMatrix = IDENTITY_MATRIX;
+      this.current.x = this.current.lineX = 0;
+      this.current.y = this.current.lineY = 0;
+    },
+    endText: function CanvasGraphics_endText() {
+    },
+    setCharSpacing: function CanvasGraphics_setCharSpacing(spacing) {
+      this.current.charSpacing = spacing;
+    },
+    setWordSpacing: function CanvasGraphics_setWordSpacing(spacing) {
+      this.current.wordSpacing = spacing;
+    },
+    setHScale: function CanvasGraphics_setHScale(scale) {
+      this.current.textHScale = scale / 100;
+    },
+    setLeading: function CanvasGraphics_setLeading(leading) {
+      this.current.leading = -leading;
+    },
+    setFont: function CanvasGraphics_setFont(fontRefName, size) {
+      var fontObj = this.objs.get(fontRefName);
+      var current = this.current;
+
+      if (!fontObj)
+        error('Can\'t find font for ' + fontRefName);
+
+      // Slice-clone matrix so we can manipulate it without affecting original
+      if (fontObj.fontMatrix)
+        current.fontMatrix = fontObj.fontMatrix.slice(0);
+      else
+        current.fontMatrix = IDENTITY_MATRIX.slice(0);
+
+      // A valid matrix needs all main diagonal elements to be non-zero
+      // This also ensures we bypass FF bugzilla bug #719844.
+      if (current.fontMatrix[0] === 0 ||
+          current.fontMatrix[3] === 0) {
+        warn('Invalid font matrix for font ' + fontRefName);
+      }
+
+      // The spec for Tf (setFont) says that 'size' specifies the font 'scale',
+      // and in some docs this can be negative (inverted x-y axes).
+      // We implement this condition with fontMatrix.
+      if (size < 0) {
+        size = -size;
+        current.fontMatrix[0] *= -1;
+        current.fontMatrix[3] *= -1;
+      }
+
+      this.current.font = fontObj;
+      this.current.fontSize = size;
+
+      if (fontObj.coded)
+        return; // we don't need ctx.font for Type3 fonts
+
+      var name = fontObj.loadedName || 'sans-serif';
+      var bold = fontObj.black ? (fontObj.bold ? 'bolder' : 'bold') :
+                                 (fontObj.bold ? 'bold' : 'normal');
+
+      var italic = fontObj.italic ? 'italic' : 'normal';
+      var serif = fontObj.isSerifFont ? 'serif' : 'sans-serif';
+      var typeface = '"' + name + '", ' + serif;
+
+      // Some font backends cannot handle fonts below certain size.
+      // Keeping the font at minimal size and using the fontSizeScale to change
+      // the current transformation matrix before the fillText/strokeText.
+      // See https://bugzilla.mozilla.org/show_bug.cgi?id=726227
+      var browserFontSize = size >= MIN_FONT_SIZE ? size : MIN_FONT_SIZE;
+      this.current.fontSizeScale = browserFontSize != MIN_FONT_SIZE ? 1.0 :
+                                   size / MIN_FONT_SIZE;
+
+      var rule = italic + ' ' + bold + ' ' + browserFontSize + 'px ' + typeface;
+      this.ctx.font = rule;
+    },
+    setTextRenderingMode: function CanvasGraphics_setTextRenderingMode(mode) {
+      if (mode >= TextRenderingMode.FILL_ADD_TO_PATH)
+        TODO('unsupported text rendering mode: ' + mode);
+      this.current.textRenderingMode = mode;
+    },
+    setTextRise: function CanvasGraphics_setTextRise(rise) {
+      TODO('text rise: ' + rise);
+    },
+    moveText: function CanvasGraphics_moveText(x, y) {
+      this.current.x = this.current.lineX += x;
+      this.current.y = this.current.lineY += y;
+    },
+    setLeadingMoveText: function CanvasGraphics_setLeadingMoveText(x, y) {
+      this.setLeading(-y);
+      this.moveText(x, y);
+    },
+    setTextMatrix: function CanvasGraphics_setTextMatrix(a, b, c, d, e, f) {
+      this.current.textMatrix = [a, b, c, d, e, f];
+
+      this.current.x = this.current.lineX = 0;
+      this.current.y = this.current.lineY = 0;
+    },
+    nextLine: function CanvasGraphics_nextLine() {
+      this.moveText(0, this.current.leading);
+    },
+    applyTextTransforms: function CanvasGraphics_applyTextTransforms() {
+      var ctx = this.ctx;
+      var current = this.current;
+      var textHScale = current.textHScale;
+      var fontMatrix = current.fontMatrix || IDENTITY_MATRIX;
+
+      ctx.transform.apply(ctx, current.textMatrix);
+      ctx.scale(1, -1);
+      ctx.translate(current.x, -1 * current.y);
+      ctx.transform.apply(ctx, fontMatrix);
+      ctx.scale(textHScale, 1);
+    },
+    getTextGeometry: function CanvasGraphics_getTextGeometry() {
+      var geometry = {};
+      var ctx = this.ctx;
+      var font = this.current.font;
+      var ctxMatrix = ctx.mozCurrentTransform;
+      if (ctxMatrix) {
+        var bl = Util.applyTransform([0, 0], ctxMatrix);
+        var tr = Util.applyTransform([1, 1], ctxMatrix);
+        geometry.x = bl[0];
+        geometry.y = bl[1];
+        geometry.hScale = tr[0] - bl[0];
+        geometry.vScale = tr[1] - bl[1];
+      }
+      geometry.spaceWidth = font.spaceWidth;
+      return geometry;
+    },
+
+    showText: function CanvasGraphics_showText(str, skipTextSelection) {
+      var ctx = this.ctx;
+      var current = this.current;
+      var font = current.font;
+      var glyphs = font.charsToGlyphs(str);
+      var fontSize = current.fontSize;
+      var fontSizeScale = current.fontSizeScale;
+      var charSpacing = current.charSpacing;
+      var wordSpacing = current.wordSpacing;
+      var textHScale = current.textHScale;
+      var fontMatrix = current.fontMatrix || IDENTITY_MATRIX;
+      var textHScale2 = textHScale * fontMatrix[0];
+      var glyphsLength = glyphs.length;
+      var textLayer = this.textLayer;
+      var text = {str: '', length: 0, canvasWidth: 0, geom: {}};
+      var textSelection = textLayer && !skipTextSelection ? true : false;
+      var textRenderingMode = current.textRenderingMode;
+
+      // Type3 fonts - each glyph is a "mini-PDF"
+      if (font.coded) {
+        ctx.save();
+        ctx.transform.apply(ctx, current.textMatrix);
+        ctx.translate(current.x, current.y);
+
+        ctx.scale(textHScale, 1);
+
+        if (textSelection) {
+          this.save();
+          ctx.scale(1, -1);
+          text.geom = this.getTextGeometry();
+          this.restore();
+        }
+        for (var i = 0; i < glyphsLength; ++i) {
+
+          var glyph = glyphs[i];
+          if (glyph === null) {
+            // word break
+            this.ctx.translate(wordSpacing, 0);
+            continue;
+          }
+
+          this.save();
+          ctx.scale(fontSize, fontSize);
+          ctx.transform.apply(ctx, fontMatrix);
+          this.executeOperatorList(glyph.operatorList);
+          this.restore();
+
+          var transformed = Util.applyTransform([glyph.width, 0], fontMatrix);
+          var width = transformed[0] * fontSize +
+              Util.sign(current.fontMatrix[0]) * charSpacing;
+
+          ctx.translate(width, 0);
+          current.x += width * textHScale;
+
+          text.str += glyph.unicode;
+          text.length++;
+          text.canvasWidth += width;
+        }
+        ctx.restore();
+      } else {
+        ctx.save();
+        this.applyTextTransforms();
+
+        var lineWidth = current.lineWidth;
+        var scale = Math.abs(current.textMatrix[0] * fontMatrix[0]);
+        if (scale == 0 || lineWidth == 0)
+          lineWidth = this.getSinglePixelWidth();
+        else
+          lineWidth /= scale;
+
+        if (textSelection)
+          text.geom = this.getTextGeometry();
+
+        if (fontSizeScale != 1.0) {
+          ctx.scale(fontSizeScale, fontSizeScale);
+          lineWidth /= fontSizeScale;
+        }
+
+        ctx.lineWidth = lineWidth;
+
+        var x = 0;
+        for (var i = 0; i < glyphsLength; ++i) {
+          var glyph = glyphs[i];
+          if (glyph === null) {
+            // word break
+            x += Util.sign(current.fontMatrix[0]) * wordSpacing;
+            continue;
+          }
+
+          var character = glyph.fontChar;
+          var charWidth = glyph.width * fontSize * 0.001 +
+              Util.sign(current.fontMatrix[0]) * charSpacing;
+
+          if (!glyph.disabled) {
+            var scaledX = x / fontSizeScale;
+            switch (textRenderingMode) {
+              default: // other unsupported rendering modes
+              case TextRenderingMode.FILL:
+              case TextRenderingMode.FILL_ADD_TO_PATH:
+                ctx.fillText(character, scaledX, 0);
+                break;
+              case TextRenderingMode.STROKE:
+              case TextRenderingMode.STROKE_ADD_TO_PATH:
+                ctx.strokeText(character, scaledX, 0);
+                break;
+              case TextRenderingMode.FILL_STROKE:
+              case TextRenderingMode.FILL_STROKE_ADD_TO_PATH:
+                ctx.fillText(character, scaledX, 0);
+                ctx.strokeText(character, scaledX, 0);
+                break;
+              case TextRenderingMode.INVISIBLE:
+                break;
+            }
+          }
+
+          x += charWidth;
+
+          var glyphUnicode = glyph.unicode === ' ' ? '\u00A0' : glyph.unicode;
+          var glyphUnicodeLength = glyphUnicode.length;
+          //reverse an arabic ligature
+          if (glyphUnicodeLength > 1 &&
+              isRTLRangeFor(glyphUnicode.charCodeAt(0))) {
+            for (var ii = glyphUnicodeLength - 1; ii >= 0; ii--)
+              text.str += glyphUnicode[ii];
+          } else
+            text.str += glyphUnicode;
+          text.length += glyphUnicodeLength;
+          text.canvasWidth += charWidth;
+        }
+        current.x += x * textHScale2;
+        ctx.restore();
+      }
+
+      if (textSelection)
+        this.textLayer.appendText(text, font.loadedName, fontSize);
+
+      return text;
+    },
+    showSpacedText: function CanvasGraphics_showSpacedText(arr) {
+      var ctx = this.ctx;
+      var current = this.current;
+      var font = current.font;
+      var fontSize = current.fontSize;
+      var textHScale = current.textHScale;
+      if (!font.coded)
+        textHScale *= (current.fontMatrix || IDENTITY_MATRIX)[0];
+      var arrLength = arr.length;
+      var textLayer = this.textLayer;
+      var text = {str: '', length: 0, canvasWidth: 0, geom: {}};
+      var textSelection = textLayer ? true : false;
+
+      if (textSelection) {
+        ctx.save();
+        // Type3 fonts - each glyph is a "mini-PDF" (see also showText)
+        if (font.coded) {
+          ctx.transform.apply(ctx, current.textMatrix);
+          ctx.scale(1, -1);
+          ctx.translate(current.x, -1 * current.y);
+          ctx.scale(textHScale, 1);
+        } else
+          this.applyTextTransforms();
+        text.geom = this.getTextGeometry();
+        ctx.restore();
+      }
+
+      for (var i = 0; i < arrLength; ++i) {
+        var e = arr[i];
+        if (isNum(e)) {
+          var spacingLength = -e * 0.001 * fontSize * textHScale;
+          current.x += spacingLength;
+
+          if (textSelection) {
+            // Emulate precise spacing via HTML spaces
+            text.canvasWidth += spacingLength;
+            if (e < 0 && text.geom.spaceWidth > 0) { // avoid div by zero
+              var numFakeSpaces = Math.round(-e / text.geom.spaceWidth);
+              if (numFakeSpaces > 0) {
+                text.str += '\u00A0';
+                text.length++;
+              }
+            }
+          }
+        } else if (isString(e)) {
+          var shownText = this.showText(e, true);
+
+          if (textSelection) {
+            if (shownText.str === ' ') {
+              text.str += '\u00A0';
+            } else {
+              text.str += shownText.str;
+            }
+            text.canvasWidth += shownText.canvasWidth;
+            text.length += shownText.length;
+          }
+        } else {
+          malformed('TJ array element ' + e + ' is not string or num');
+        }
+      }
+
+      if (textSelection)
+        this.textLayer.appendText(text, font.loadedName, fontSize);
+    },
+    nextLineShowText: function CanvasGraphics_nextLineShowText(text) {
+      this.nextLine();
+      this.showText(text);
+    },
+    nextLineSetSpacingShowText:
+      function CanvasGraphics_nextLineSetSpacingShowText(wordSpacing,
+                                                         charSpacing,
+                                                         text) {
+      this.setWordSpacing(wordSpacing);
+      this.setCharSpacing(charSpacing);
+      this.nextLineShowText(text);
+    },
+
+    // Type3 fonts
+    setCharWidth: function CanvasGraphics_setCharWidth(xWidth, yWidth) {
+      // We can safely ignore this since the width should be the same
+      // as the width in the Widths array.
+    },
+    setCharWidthAndBounds: function CanvasGraphics_setCharWidthAndBounds(xWidth,
+                                                                        yWidth,
+                                                                        llx,
+                                                                        lly,
+                                                                        urx,
+                                                                        ury) {
+      // TODO According to the spec we're also suppose to ignore any operators
+      // that set color or include images while processing this type3 font.
+      this.rectangle(llx, lly, urx - llx, ury - lly);
+      this.clip();
+      this.endPath();
+    },
+
+    // Color
+    setStrokeColorSpace: function CanvasGraphics_setStrokeColorSpace(raw) {
+      this.current.strokeColorSpace = ColorSpace.fromIR(raw);
+    },
+    setFillColorSpace: function CanvasGraphics_setFillColorSpace(raw) {
+      this.current.fillColorSpace = ColorSpace.fromIR(raw);
+    },
+    setStrokeColor: function CanvasGraphics_setStrokeColor(/*...*/) {
+      var cs = this.current.strokeColorSpace;
+      var rgbColor = cs.getRgb(arguments);
+      var color = Util.makeCssRgb(rgbColor[0], rgbColor[1], rgbColor[2]);
+      this.ctx.strokeStyle = color;
+      this.current.strokeColor = color;
+    },
+    getColorN_Pattern: function CanvasGraphics_getColorN_Pattern(IR, cs) {
+      if (IR[0] == 'TilingPattern') {
+        var args = IR[1];
+        var base = cs.base;
+        var color;
+        if (base) {
+          var baseComps = base.numComps;
+
+          color = [];
+          for (var i = 0; i < baseComps; ++i)
+            color.push(args[i]);
+
+          color = base.getRgb(color);
+        }
+        var pattern = new TilingPattern(IR, color, this.ctx, this.objs);
+      } else if (IR[0] == 'RadialAxial' || IR[0] == 'Dummy') {
+        var pattern = Pattern.shadingFromIR(IR);
+      } else {
+        error('Unkown IR type ' + IR[0]);
+      }
+      return pattern;
+    },
+    setStrokeColorN: function CanvasGraphics_setStrokeColorN(/*...*/) {
+      var cs = this.current.strokeColorSpace;
+
+      if (cs.name == 'Pattern') {
+        this.current.strokeColor = this.getColorN_Pattern(arguments, cs);
+      } else {
+        this.setStrokeColor.apply(this, arguments);
+      }
+    },
+    setFillColor: function CanvasGraphics_setFillColor(/*...*/) {
+      var cs = this.current.fillColorSpace;
+      var rgbColor = cs.getRgb(arguments);
+      var color = Util.makeCssRgb(rgbColor[0], rgbColor[1], rgbColor[2]);
+      this.ctx.fillStyle = color;
+      this.current.fillColor = color;
+    },
+    setFillColorN: function CanvasGraphics_setFillColorN(/*...*/) {
+      var cs = this.current.fillColorSpace;
+
+      if (cs.name == 'Pattern') {
+        this.current.fillColor = this.getColorN_Pattern(arguments, cs);
+      } else {
+        this.setFillColor.apply(this, arguments);
+      }
+    },
+    setStrokeGray: function CanvasGraphics_setStrokeGray(gray) {
+      if (!(this.current.strokeColorSpace instanceof DeviceGrayCS))
+        this.current.strokeColorSpace = new DeviceGrayCS();
+
+      var color = Util.makeCssRgb(gray, gray, gray);
+      this.ctx.strokeStyle = color;
+      this.current.strokeColor = color;
+    },
+    setFillGray: function CanvasGraphics_setFillGray(gray) {
+      if (!(this.current.fillColorSpace instanceof DeviceGrayCS))
+        this.current.fillColorSpace = new DeviceGrayCS();
+
+      var color = Util.makeCssRgb(gray, gray, gray);
+      this.ctx.fillStyle = color;
+      this.current.fillColor = color;
+    },
+    setStrokeRGBColor: function CanvasGraphics_setStrokeRGBColor(r, g, b) {
+      if (!(this.current.strokeColorSpace instanceof DeviceRgbCS))
+        this.current.strokeColorSpace = new DeviceRgbCS();
+
+      var color = Util.makeCssRgb(r, g, b);
+      this.ctx.strokeStyle = color;
+      this.current.strokeColor = color;
+    },
+    setFillRGBColor: function CanvasGraphics_setFillRGBColor(r, g, b) {
+      if (!(this.current.fillColorSpace instanceof DeviceRgbCS))
+        this.current.fillColorSpace = new DeviceRgbCS();
+
+      var color = Util.makeCssRgb(r, g, b);
+      this.ctx.fillStyle = color;
+      this.current.fillColor = color;
+    },
+    setStrokeCMYKColor: function CanvasGraphics_setStrokeCMYKColor(c, m, y, k) {
+      if (!(this.current.strokeColorSpace instanceof DeviceCmykCS))
+        this.current.strokeColorSpace = new DeviceCmykCS();
+
+      var color = Util.makeCssCmyk(c, m, y, k);
+      this.ctx.strokeStyle = color;
+      this.current.strokeColor = color;
+    },
+    setFillCMYKColor: function CanvasGraphics_setFillCMYKColor(c, m, y, k) {
+      if (!(this.current.fillColorSpace instanceof DeviceCmykCS))
+        this.current.fillColorSpace = new DeviceCmykCS();
+
+      var color = Util.makeCssCmyk(c, m, y, k);
+      this.ctx.fillStyle = color;
+      this.current.fillColor = color;
+    },
+
+    shadingFill: function CanvasGraphics_shadingFill(patternIR) {
+      var ctx = this.ctx;
+
+      this.save();
+      var pattern = Pattern.shadingFromIR(patternIR);
+      ctx.fillStyle = pattern.getPattern(ctx);
+
+      var inv = ctx.mozCurrentTransformInverse;
+      if (inv) {
+        var canvas = ctx.canvas;
+        var width = canvas.width;
+        var height = canvas.height;
+
+        var bl = Util.applyTransform([0, 0], inv);
+        var br = Util.applyTransform([0, height], inv);
+        var ul = Util.applyTransform([width, 0], inv);
+        var ur = Util.applyTransform([width, height], inv);
+
+        var x0 = Math.min(bl[0], br[0], ul[0], ur[0]);
+        var y0 = Math.min(bl[1], br[1], ul[1], ur[1]);
+        var x1 = Math.max(bl[0], br[0], ul[0], ur[0]);
+        var y1 = Math.max(bl[1], br[1], ul[1], ur[1]);
+
+        this.ctx.fillRect(x0, y0, x1 - x0, y1 - y0);
+      } else {
+        // HACK to draw the gradient onto an infinite rectangle.
+        // PDF gradients are drawn across the entire image while
+        // Canvas only allows gradients to be drawn in a rectangle
+        // The following bug should allow us to remove this.
+        // https://bugzilla.mozilla.org/show_bug.cgi?id=664884
+
+        this.ctx.fillRect(-1e10, -1e10, 2e10, 2e10);
+      }
+
+      this.restore();
+    },
+
+    // Images
+    beginInlineImage: function CanvasGraphics_beginInlineImage() {
+      error('Should not call beginInlineImage');
+    },
+    beginImageData: function CanvasGraphics_beginImageData() {
+      error('Should not call beginImageData');
+    },
+
+    paintFormXObjectBegin: function CanvasGraphics_paintFormXObjectBegin(matrix,
+                                                                        bbox) {
+      this.save();
+
+      if (matrix && isArray(matrix) && 6 == matrix.length)
+        this.transform.apply(this, matrix);
+
+      if (bbox && isArray(bbox) && 4 == bbox.length) {
+        var width = bbox[2] - bbox[0];
+        var height = bbox[3] - bbox[1];
+        this.rectangle(bbox[0], bbox[1], width, height);
+        this.clip();
+        this.endPath();
+      }
+    },
+
+    paintFormXObjectEnd: function CanvasGraphics_paintFormXObjectEnd() {
+      this.restore();
+    },
+
+    paintJpegXObject: function CanvasGraphics_paintJpegXObject(objId, w, h) {
+      var domImage = this.objs.get(objId);
+      if (!domImage) {
+        error('Dependent image isn\'t ready yet');
+      }
+
+      this.save();
+
+      var ctx = this.ctx;
+      // scale the image to the unit square
+      ctx.scale(1 / w, -1 / h);
+
+      ctx.drawImage(domImage, 0, 0, domImage.width, domImage.height,
+                    0, -h, w, h);
+
+      this.restore();
+    },
+
+    paintImageMaskXObject: function CanvasGraphics_paintImageMaskXObject(
+                             imgArray, inverseDecode, width, height) {
+      function applyStencilMask(buffer, inverseDecode) {
+        var imgArrayPos = 0;
+        var i, j, mask, buf;
+        // removing making non-masked pixels transparent
+        var bufferPos = 3; // alpha component offset
+        for (i = 0; i < height; i++) {
+          mask = 0;
+          for (j = 0; j < width; j++) {
+            if (!mask) {
+              buf = imgArray[imgArrayPos++];
+              mask = 128;
+            }
+            if (!(buf & mask) == inverseDecode) {
+              buffer[bufferPos] = 0;
+            }
+            bufferPos += 4;
+            mask >>= 1;
+          }
+        }
+      }
+
+      this.save();
+
+      var ctx = this.ctx;
+      var w = width, h = height;
+      // scale the image to the unit square
+      ctx.scale(1 / w, -1 / h);
+
+      var tmpCanvas = createScratchCanvas(w, h);
+      var tmpCtx = tmpCanvas.getContext('2d');
+
+      var fillColor = this.current.fillColor;
+      tmpCtx.fillStyle = (fillColor && fillColor.hasOwnProperty('type') &&
+                          fillColor.type === 'Pattern') ?
+                          fillColor.getPattern(tmpCtx) : fillColor;
+      tmpCtx.fillRect(0, 0, w, h);
+
+      var imgData = tmpCtx.getImageData(0, 0, w, h);
+      var pixels = imgData.data;
+
+      applyStencilMask(pixels, inverseDecode);
+
+      tmpCtx.putImageData(imgData, 0, 0);
+      ctx.drawImage(tmpCanvas, 0, -h);
+      this.restore();
+    },
+
+    paintImageXObject: function CanvasGraphics_paintImageXObject(objId) {
+      var imgData = this.objs.get(objId);
+      if (!imgData)
+        error('Dependent image isn\'t ready yet');
+
+      this.save();
+      var ctx = this.ctx;
+      var w = imgData.width;
+      var h = imgData.height;
+      // scale the image to the unit square
+      ctx.scale(1 / w, -1 / h);
+
+      var tmpCanvas = createScratchCanvas(w, h);
+      var tmpCtx = tmpCanvas.getContext('2d');
+      this.putBinaryImageData(tmpCtx, imgData, w, h);
+
+      ctx.drawImage(tmpCanvas, 0, -h);
+      this.restore();
+    },
+
+    putBinaryImageData: function CanvasGraphics_putBinaryImageData() {
+      //
+    },
+
+    // Marked content
+
+    markPoint: function CanvasGraphics_markPoint(tag) {
+      TODO('Marked content');
+    },
+    markPointProps: function CanvasGraphics_markPointProps(tag, properties) {
+      TODO('Marked content');
+    },
+    beginMarkedContent: function CanvasGraphics_beginMarkedContent(tag) {
+      TODO('Marked content');
+    },
+    beginMarkedContentProps: function CanvasGraphics_beginMarkedContentProps(
+                                        tag, properties) {
+      TODO('Marked content');
+    },
+    endMarkedContent: function CanvasGraphics_endMarkedContent() {
+      TODO('Marked content');
+    },
+
+    // Compatibility
+
+    beginCompat: function CanvasGraphics_beginCompat() {
+      TODO('ignore undefined operators (should we do that anyway?)');
+    },
+    endCompat: function CanvasGraphics_endCompat() {
+      TODO('stop ignoring undefined operators');
+    },
+
+    // Helper functions
+
+    consumePath: function CanvasGraphics_consumePath() {
+      if (this.pendingClip) {
+        var savedFillRule = null;
+        if (this.pendingClip == EO_CLIP)
+          savedFillRule = this.setEOFillRule();
+
+        this.ctx.clip();
+
+        this.pendingClip = null;
+        if (savedFillRule !== null)
+          this.restoreFillRule(savedFillRule);
+      }
+      this.ctx.beginPath();
+    },
+    // We generally keep the canvas context set for
+    // nonzero-winding, and just set evenodd for the operations
+    // that need them.
+    setEOFillRule: function CanvasGraphics_setEOFillRule() {
+      var savedFillRule = this.ctx.mozFillRule;
+      this.ctx.mozFillRule = 'evenodd';
+      return savedFillRule;
+    },
+    restoreFillRule: function CanvasGraphics_restoreFillRule(rule) {
+      this.ctx.mozFillRule = rule;
+    },
+    getSinglePixelWidth: function CanvasGraphics_getSinglePixelWidth(scale) {
+      var inverse = this.ctx.mozCurrentTransformInverse;
+      return Math.abs(inverse[0] + inverse[2]);
+    }
+  };
+
+  return CanvasGraphics;
+})();
+
+if (!isWorker) {
+  // Feature detection if the browser can use an Uint8Array directly as imgData.
+  var canvas = PdfJS_window.document.createElement('canvas');
+  canvas.width = 1;
+  canvas.height = 1;
+  var ctx = canvas.getContext('2d');
+
+  try {
+    ctx.putImageData({
+      width: 1,
+      height: 1,
+      data: new Uint8Array(4)
+    }, 0, 0);
+
+    CanvasGraphics.prototype.putBinaryImageData =
+      function CanvasGraphicsPutBinaryImageDataNative(ctx, imgData) {
+        ctx.putImageData(imgData, 0, 0);
+      };
+  } catch (e) {
+    CanvasGraphics.prototype.putBinaryImageData =
+      function CanvasGraphicsPutBinaryImageDataShim(ctx, imgData, w, h) {
+        var tmpImgData = ctx.getImageData(0, 0, w, h);
+
+        // Copy over the imageData pixel by pixel.
+        var tmpImgDataPixels = tmpImgData.data;
+        var len = tmpImgDataPixels.length;
+
+        while (len--) {
+          tmpImgDataPixels[len] = imgData.data[len];
+        }
+
+        ctx.putImageData(tmpImgData, 0, 0);
+      };
+  }
+}
+
+/* -*- Mode: Java; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/* vim: set shiftwidth=2 tabstop=2 autoindent cindent expandtab: */
+
+'use strict';
+
+var Name = (function NameClosure() {
+  function Name(name) {
+    this.name = name;
+  }
+
+  Name.prototype = {};
+
+  return Name;
+})();
+
+var Cmd = (function CmdClosure() {
+  function Cmd(cmd) {
+    this.cmd = cmd;
+  }
+
+  Cmd.prototype = {};
+
+  var cmdCache = {};
+
+  Cmd.get = function Cmd_get(cmd) {
+    var cmdValue = cmdCache[cmd];
+    if (cmdValue)
+      return cmdValue;
+
+    return cmdCache[cmd] = new Cmd(cmd);
+  };
+
+  return Cmd;
+})();
+
+var Dict = (function DictClosure() {
+  // xref is optional
+  function Dict(xref) {
+    // Map should only be used internally, use functions below to access.
+    var map = Object.create(null);
+
+    this.assignXref = function Dict_assignXref(newXref) {
+      xref = newXref;
+    };
+
+    // automatically dereferences Ref objects
+    this.get = function Dict_get(key1, key2, key3) {
+      var value;
+      if (typeof (value = map[key1]) != 'undefined' || key1 in map ||
+          typeof key2 == 'undefined') {
+        return xref ? xref.fetchIfRef(value) : value;
+      }
+      if (typeof (value = map[key2]) != 'undefined' || key2 in map ||
+          typeof key3 == 'undefined') {
+        return xref ? xref.fetchIfRef(value) : value;
+      }
+      value = map[key3] || null;
+      return xref ? xref.fetchIfRef(value) : value;
+    };
+
+    // no dereferencing
+    this.getRaw = function Dict_getRaw(key) {
+      return map[key];
+    };
+
+    // creates new map and dereferences all Refs
+    this.getAll = function Dict_getAll() {
+      var all = {};
+      for (var key in map) {
+        var obj = this.get(key);
+        all[key] = obj instanceof Dict ? obj.getAll() : obj;
+      }
+      return all;
+    };
+
+    this.set = function Dict_set(key, value) {
+      map[key] = value;
+    };
+
+    this.has = function Dict_has(key) {
+      return key in map;
+    };
+
+    this.forEach = function Dict_forEach(callback) {
+      for (var key in map) {
+        callback(key, this.get(key));
+      }
+    };
+  };
+
+  return Dict;
+})();
+
+var Ref = (function RefClosure() {
+  function Ref(num, gen) {
+    this.num = num;
+    this.gen = gen;
+  }
+
+  Ref.prototype = {};
+
+  return Ref;
+})();
+
+// The reference is identified by number and generation,
+// this structure stores only one instance of the reference.
+var RefSet = (function RefSetClosure() {
+  function RefSet() {
+    this.dict = {};
+  }
+
+  RefSet.prototype = {
+    has: function RefSet_has(ref) {
+      return !!this.dict['R' + ref.num + '.' + ref.gen];
+    },
+
+    put: function RefSet_put(ref) {
+      this.dict['R' + ref.num + '.' + ref.gen] = ref;
+    }
+  };
+
+  return RefSet;
+})();
+
+var Catalog = (function CatalogClosure() {
+  function Catalog(xref) {
+    this.xref = xref;
+    var obj = xref.getCatalogObj();
+    assertWellFormed(isDict(obj), 'catalog object is not a dictionary');
+    this.catDict = obj;
+  }
+
+  Catalog.prototype = {
+    get metadata() {
+      var stream = this.catDict.get('Metadata');
+      var metadata;
+      if (stream && isDict(stream.dict)) {
+        var type = stream.dict.get('Type');
+        var subtype = stream.dict.get('Subtype');
+
+        if (isName(type) && isName(subtype) &&
+            type.name === 'Metadata' && subtype.name === 'XML') {
+          metadata = stringToPDFString(bytesToString(stream.getBytes()));
+        }
+      }
+
+      return shadow(this, 'metadata', metadata);
+    },
+    get toplevelPagesDict() {
+      var pagesObj = this.catDict.get('Pages');
+      assertWellFormed(isDict(pagesObj), 'invalid top-level pages dictionary');
+      // shadow the prototype getter
+      return shadow(this, 'toplevelPagesDict', pagesObj);
+    },
+    get documentOutline() {
+      var xref = this.xref;
+      var obj = this.catDict.get('Outlines');
+      var root = { items: [] };
+      if (isDict(obj)) {
+        obj = obj.getRaw('First');
+        var processed = new RefSet();
+        if (isRef(obj)) {
+          var queue = [{obj: obj, parent: root}];
+          // to avoid recursion keeping track of the items
+          // in the processed dictionary
+          processed.put(obj);
+          while (queue.length > 0) {
+            var i = queue.shift();
+            var outlineDict = xref.fetchIfRef(i.obj);
+            if (outlineDict === null)
+              continue;
+            if (!outlineDict.has('Title'))
+              error('Invalid outline item');
+            var dest = outlineDict.get('A');
+            if (dest)
+              dest = dest.get('D');
+            else if (outlineDict.has('Dest')) {
+              dest = outlineDict.getRaw('Dest');
+              if (isName(dest))
+                dest = dest.name;
+            }
+            var title = outlineDict.get('Title');
+            var outlineItem = {
+              dest: dest,
+              title: stringToPDFString(title),
+              color: outlineDict.get('C') || [0, 0, 0],
+              count: outlineDict.get('Count'),
+              bold: !!(outlineDict.get('F') & 2),
+              italic: !!(outlineDict.get('F') & 1),
+              items: []
+            };
+            i.parent.items.push(outlineItem);
+            obj = outlineDict.getRaw('First');
+            if (isRef(obj) && !processed.has(obj)) {
+              queue.push({obj: obj, parent: outlineItem});
+              processed.put(obj);
+            }
+            obj = outlineDict.getRaw('Next');
+            if (isRef(obj) && !processed.has(obj)) {
+              queue.push({obj: obj, parent: i.parent});
+              processed.put(obj);
+            }
+          }
+        }
+      }
+      obj = root.items.length > 0 ? root.items : null;
+      return shadow(this, 'documentOutline', obj);
+    },
+    get numPages() {
+      var obj = this.toplevelPagesDict.get('Count');
+      assertWellFormed(
+        isInt(obj),
+        'page count in top level pages object is not an integer'
+      );
+      // shadow the prototype getter
+      return shadow(this, 'num', obj);
+    },
+    traverseKids: function Catalog_traverseKids(pagesDict) {
+      var pageCache = this.pageCache;
+      var kids = pagesDict.get('Kids');
+      assertWellFormed(isArray(kids),
+                       'page dictionary kids object is not an array');
+      for (var i = 0, ii = kids.length; i < ii; ++i) {
+        var kid = kids[i];
+        assertWellFormed(isRef(kid),
+                        'page dictionary kid is not a reference');
+        var obj = this.xref.fetch(kid);
+        if (isDict(obj, 'Page') || (isDict(obj) && !obj.has('Kids'))) {
+          pageCache.push(new Page(this.xref, pageCache.length, obj, kid));
+        } else { // must be a child page dictionary
+          assertWellFormed(
+            isDict(obj),
+            'page dictionary kid reference points to wrong type of object'
+          );
+          this.traverseKids(obj);
+        }
+      }
+    },
+    get destinations() {
+      function fetchDestination(dest) {
+        return isDict(dest) ? dest.get('D') : dest;
+      }
+
+      var xref = this.xref;
+      var dests = {}, nameTreeRef, nameDictionaryRef;
+      var obj = this.catDict.get('Names');
+      if (obj)
+        nameTreeRef = obj.getRaw('Dests');
+      else if (this.catDict.has('Dests'))
+        nameDictionaryRef = this.catDict.get('Dests');
+
+      if (nameDictionaryRef) {
+        // reading simple destination dictionary
+        obj = nameDictionaryRef;
+        obj.forEach(function catalogForEach(key, value) {
+          if (!value) return;
+          dests[key] = fetchDestination(value);
+        });
+      }
+      if (nameTreeRef) {
+        // reading name tree
+        var processed = new RefSet();
+        processed.put(nameTreeRef);
+        var queue = [nameTreeRef];
+        while (queue.length > 0) {
+          var i, n;
+          obj = xref.fetch(queue.shift());
+          if (obj.has('Kids')) {
+            var kids = obj.get('Kids');
+            for (i = 0, n = kids.length; i < n; i++) {
+              var kid = kids[i];
+              if (processed.has(kid))
+                error('invalid destinations');
+              queue.push(kid);
+              processed.put(kid);
+            }
+            continue;
+          }
+          var names = obj.get('Names');
+          for (i = 0, n = names.length; i < n; i += 2) {
+            dests[names[i]] = fetchDestination(xref.fetchIfRef(names[i + 1]));
+          }
+        }
+      }
+      return shadow(this, 'destinations', dests);
+    },
+    getPage: function Catalog_getPage(n) {
+      var pageCache = this.pageCache;
+      if (!pageCache) {
+        pageCache = this.pageCache = [];
+        this.traverseKids(this.toplevelPagesDict);
+      }
+      return this.pageCache[n - 1];
+    }
+  };
+
+  return Catalog;
+})();
+
+var XRef = (function XRefClosure() {
+  function XRef(stream, startXRef, mainXRefEntriesOffset) {
+    this.stream = stream;
+    this.entries = [];
+    this.xrefstms = {};
+    var trailerDict = this.readXRef(startXRef);
+    trailerDict.assignXref(this);
+    this.trailer = trailerDict;
+    // prepare the XRef cache
+    this.cache = [];
+
+    var encrypt = trailerDict.get('Encrypt');
+    if (encrypt) {
+      var fileId = trailerDict.get('ID');
+      this.encrypt = new CipherTransformFactory(encrypt,
+                                                fileId[0] /*, password */);
+    }
+
+    // get the root dictionary (catalog) object
+    if (!(this.root = trailerDict.get('Root')))
+      error('Invalid root reference');
+  }
+
+  XRef.prototype = {
+    readXRefTable: function XRef_readXRefTable(parser) {
+      // Example of cross-reference table:
+      // xref
+      // 0 1                    <-- subsection header (first obj #, obj count)
+      // 0000000000 65535 f     <-- actual object (offset, generation #, f/n)
+      // 23 2                   <-- subsection header ... and so on ...
+      // 0000025518 00002 n
+      // 0000025635 00000 n
+      // trailer
+      // ...
+
+      // Outer loop is over subsection headers
+      var obj;
+      while (!isCmd(obj = parser.getObj(), 'trailer')) {
+        var first = obj,
+            count = parser.getObj();
+
+        if (!isInt(first) || !isInt(count))
+          error('Invalid XRef table: wrong types in subsection header');
+
+        // Inner loop is over objects themselves
+        for (var i = 0; i < count; i++) {
+          var entry = {};
+          entry.offset = parser.getObj();
+          entry.gen = parser.getObj();
+          var type = parser.getObj();
+
+          if (isCmd(type, 'f'))
+            entry.free = true;
+          else if (isCmd(type, 'n'))
+            entry.uncompressed = true;
+
+          // Validate entry obj
+          if (!isInt(entry.offset) || !isInt(entry.gen) ||
+              !(entry.free || entry.uncompressed)) {
+            error('Invalid entry in XRef subsection: ' + first + ', ' + count);
+          }
+
+          if (!this.entries[i + first])
+            this.entries[i + first] = entry;
+        }
+      }
+
+      // Sanity check: as per spec, first object must be free
+      if (this.entries[0] && !this.entries[0].free)
+        error('Invalid XRef table: unexpected first object');
+
+      // Sanity check
+      if (!isCmd(obj, 'trailer'))
+        error('Invalid XRef table: could not find trailer dictionary');
+
+      // Read trailer dictionary, e.g.
+      // trailer
+      //    << /Size 22
+      //      /Root 20R
+      //      /Info 10R
+      //      /ID [ <81b14aafa313db63dbd6f981e49f94f4> ]
+      //    >>
+      // The parser goes through the entire stream << ... >> and provides
+      // a getter interface for the key-value table
+      var dict = parser.getObj();
+      if (!isDict(dict))
+        error('Invalid XRef table: could not parse trailer dictionary');
+
+      return dict;
+    },
+    readXRefStream: function XRef_readXRefStream(stream) {
+      var streamParameters = stream.parameters;
+      var byteWidths = streamParameters.get('W');
+      var range = streamParameters.get('Index');
+      if (!range)
+        range = [0, streamParameters.get('Size')];
+      var i, j;
+      while (range.length > 0) {
+        var first = range[0], n = range[1];
+        if (!isInt(first) || !isInt(n))
+          error('Invalid XRef range fields: ' + first + ', ' + n);
+        var typeFieldWidth = byteWidths[0];
+        var offsetFieldWidth = byteWidths[1];
+        var generationFieldWidth = byteWidths[2];
+        if (!isInt(typeFieldWidth) || !isInt(offsetFieldWidth) ||
+            !isInt(generationFieldWidth)) {
+          error('Invalid XRef entry fields length: ' + first + ', ' + n);
+        }
+        for (i = 0; i < n; ++i) {
+          var type = 0, offset = 0, generation = 0;
+          for (j = 0; j < typeFieldWidth; ++j)
+            type = (type << 8) | stream.getByte();
+          // if type field is absent, its default value = 1
+          if (typeFieldWidth == 0)
+            type = 1;
+          for (j = 0; j < offsetFieldWidth; ++j)
+            offset = (offset << 8) | stream.getByte();
+          for (j = 0; j < generationFieldWidth; ++j)
+            generation = (generation << 8) | stream.getByte();
+          var entry = {};
+          entry.offset = offset;
+          entry.gen = generation;
+          switch (type) {
+            case 0:
+              entry.free = true;
+              break;
+            case 1:
+              entry.uncompressed = true;
+              break;
+            case 2:
+              break;
+            default:
+              error('Invalid XRef entry type: ' + type);
+          }
+          if (!this.entries[first + i])
+            this.entries[first + i] = entry;
+        }
+        range.splice(0, 2);
+      }
+      return streamParameters;
+    },
+    indexObjects: function XRef_indexObjects() {
+      // Simple scan through the PDF content to find objects,
+      // trailers and XRef streams.
+      function readToken(data, offset) {
+        var token = '', ch = data[offset];
+        while (ch !== 13 && ch !== 10) {
+          if (++offset >= data.length)
+            break;
+          token += String.fromCharCode(ch);
+          ch = data[offset];
+        }
+        return token;
+      }
+      function skipUntil(data, offset, what) {
+        var length = what.length, dataLength = data.length;
+        var skipped = 0;
+        // finding byte sequence
+        while (offset < dataLength) {
+          var i = 0;
+          while (i < length && data[offset + i] == what[i])
+            ++i;
+          if (i >= length)
+            break; // sequence found
+
+          offset++;
+          skipped++;
+        }
+        return skipped;
+      }
+      var trailerBytes = new Uint8Array([116, 114, 97, 105, 108, 101, 114]);
+      var startxrefBytes = new Uint8Array([115, 116, 97, 114, 116, 120, 114,
+                                          101, 102]);
+      var endobjBytes = new Uint8Array([101, 110, 100, 111, 98, 106]);
+      var xrefBytes = new Uint8Array([47, 88, 82, 101, 102]);
+
+      var stream = this.stream;
+      stream.pos = 0;
+      var buffer = stream.getBytes();
+      var position = stream.start, length = buffer.length;
+      var trailers = [], xrefStms = [];
+      var state = 0;
+      var currentToken;
+      while (position < length) {
+        var ch = buffer[position];
+        if (ch === 32 || ch === 9 || ch === 13 || ch === 10) {
+          ++position;
+          continue;
+        }
+        if (ch === 37) { // %-comment
+          do {
+            ++position;
+            ch = buffer[position];
+          } while (ch !== 13 && ch !== 10);
+          continue;
+        }
+        var token = readToken(buffer, position);
+        var m;
+        if (token === 'xref') {
+          position += skipUntil(buffer, position, trailerBytes);
+          trailers.push(position);
+          position += skipUntil(buffer, position, startxrefBytes);
+        } else if ((m = /^(\d+)\s+(\d+)\s+obj\b/.exec(token))) {
+          this.entries[m[1]] = {
+            offset: position,
+            gen: m[2] | 0,
+            uncompressed: true
+          };
+
+          var contentLength = skipUntil(buffer, position, endobjBytes) + 7;
+          var content = buffer.subarray(position, position + contentLength);
+
+          // checking XRef stream suspect
+          // (it shall have '/XRef' and next char is not a letter)
+          var xrefTagOffset = skipUntil(content, 0, xrefBytes);
+          if (xrefTagOffset < contentLength &&
+              content[xrefTagOffset + 5] < 64) {
+            xrefStms.push(position);
+            this.xrefstms[position] = 1; // don't read it recursively
+          }
+
+          position += contentLength;
+        } else
+          position += token.length + 1;
+      }
+      // reading XRef streams
+      for (var i = 0, ii = xrefStms.length; i < ii; ++i) {
+          this.readXRef(xrefStms[i], true);
+      }
+      // finding main trailer
+      var dict;
+      for (var i = 0, ii = trailers.length; i < ii; ++i) {
+        stream.pos = trailers[i];
+        var parser = new Parser(new Lexer(stream), true, null);
+        var obj = parser.getObj();
+        if (!isCmd(obj, 'trailer'))
+          continue;
+        // read the trailer dictionary
+        if (!isDict(dict = parser.getObj()))
+          continue;
+        // taking the first one with 'ID'
+        if (dict.has('ID'))
+          return dict;
+      }
+      // no tailer with 'ID', taking last one (if exists)
+      if (dict)
+        return dict;
+      // nothing helps
+      error('Invalid PDF structure');
+    },
+    readXRef: function XRef_readXRef(startXRef, recoveryMode) {
+      var stream = this.stream;
+      stream.pos = startXRef;
+
+      try {
+        var parser = new Parser(new Lexer(stream), true, null);
+        var obj = parser.getObj();
+        var dict;
+
+        // Get dictionary
+        if (isCmd(obj, 'xref')) {
+          // Parse end-of-file XRef
+          dict = this.readXRefTable(parser);
+
+          // Recursively get other XRefs 'XRefStm', if any
+          obj = dict.get('XRefStm');
+          if (isInt(obj)) {
+            var pos = obj;
+            // ignore previously loaded xref streams
+            // (possible infinite recursion)
+            if (!(pos in this.xrefstms)) {
+              this.xrefstms[pos] = 1;
+              this.readXRef(pos);
+            }
+          }
+        } else if (isInt(obj)) {
+          // Parse in-stream XRef
+          if (!isInt(parser.getObj()) ||
+              !isCmd(parser.getObj(), 'obj') ||
+              !isStream(obj = parser.getObj())) {
+            error('Invalid XRef stream');
+          }
+          dict = this.readXRefStream(obj);
+          if (!dict)
+            error('Failed to read XRef stream');
+        }
+
+        // Recursively get previous dictionary, if any
+        obj = dict.get('Prev');
+        if (isInt(obj))
+          this.readXRef(obj, recoveryMode);
+        else if (isRef(obj)) {
+          // The spec says Prev must not be a reference, i.e. "/Prev NNN"
+          // This is a fallback for non-compliant PDFs, i.e. "/Prev NNN 0 R"
+          this.readXRef(obj.num, recoveryMode);
+        }
+
+        return dict;
+      } catch (e) {
+        log('(while reading XRef): ' + e);
+      }
+
+      if (recoveryMode)
+        return;
+
+      warn('Indexing all PDF objects');
+      return this.indexObjects();
+    },
+    getEntry: function XRef_getEntry(i) {
+      var e = this.entries[i];
+      if (e === null)
+        return null;
+      return e.free ? null : e; // returns null is the entry is free
+    },
+    fetchIfRef: function XRef_fetchIfRef(obj) {
+      if (!isRef(obj))
+        return obj;
+      return this.fetch(obj);
+    },
+    fetch: function XRef_fetch(ref, suppressEncryption) {
+      assertWellFormed(isRef(ref), 'ref object is not a reference');
+      var num = ref.num;
+      if (num in this.cache)
+        return this.cache[num];
+
+      var e = this.getEntry(num);
+
+      // the referenced entry can be free
+      if (e === null)
+        return (this.cache[num] = e);
+
+      var gen = ref.gen;
+      var stream, parser;
+      if (e.uncompressed) {
+        if (e.gen != gen)
+          error('inconsistent generation in XRef');
+        stream = this.stream.makeSubStream(e.offset);
+        parser = new Parser(new Lexer(stream), true, this);
+        var obj1 = parser.getObj();
+        var obj2 = parser.getObj();
+        var obj3 = parser.getObj();
+        if (!isInt(obj1) || obj1 != num ||
+            !isInt(obj2) || obj2 != gen ||
+            !isCmd(obj3)) {
+          error('bad XRef entry');
+        }
+        if (!isCmd(obj3, 'obj')) {
+          // some bad pdfs use "obj1234" and really mean 1234
+          if (obj3.cmd.indexOf('obj') == 0) {
+            num = parseInt(obj3.cmd.substring(3), 10);
+            if (!isNaN(num))
+              return num;
+          }
+          error('bad XRef entry');
+        }
+        if (this.encrypt && !suppressEncryption) {
+          try {
+            e = parser.getObj(this.encrypt.createCipherTransform(num, gen));
+          } catch (ex) {
+            // almost all streams must be encrypted, but sometimes
+            // they are not probably due to some broken generators
+            // re-trying without encryption
+            return this.fetch(ref, true);
+          }
+        } else {
+          e = parser.getObj();
+        }
+        // Don't cache streams since they are mutable (except images).
+        if (!isStream(e) || e instanceof JpegStream)
+          this.cache[num] = e;
+        return e;
+      }
+
+      // compressed entry
+      stream = this.fetch(new Ref(e.offset, 0));
+      if (!isStream(stream))
+        error('bad ObjStm stream');
+      var first = stream.parameters.get('First');
+      var n = stream.parameters.get('N');
+      if (!isInt(first) || !isInt(n)) {
+        error('invalid first and n parameters for ObjStm stream');
+      }
+      parser = new Parser(new Lexer(stream), false, this);
+      var i, entries = [], nums = [];
+      // read the object numbers to populate cache
+      for (i = 0; i < n; ++i) {
+        num = parser.getObj();
+        if (!isInt(num)) {
+          error('invalid object number in the ObjStm stream: ' + num);
+        }
+        nums.push(num);
+        var offset = parser.getObj();
+        if (!isInt(offset)) {
+          error('invalid object offset in the ObjStm stream: ' + offset);
+        }
+      }
+      // read stream objects for cache
+      for (i = 0; i < n; ++i) {
+        entries.push(parser.getObj());
+        this.cache[nums[i]] = entries[i];
+      }
+      e = entries[e.gen];
+      if (!e) {
+        error('bad XRef entry for compressed object');
+      }
+      return e;
+    },
+    getCatalogObj: function XRef_getCatalogObj() {
+      return this.root;
+    }
+  };
+
+  return XRef;
+})();
+
+/**
+ * A PDF document and page is built of many objects. E.g. there are objects
+ * for fonts, images, rendering code and such. These objects might get processed
+ * inside of a worker. The `PDFObjects` implements some basic functions to
+ * manage these objects.
+ */
+var PDFObjects = (function PDFObjectsClosure() {
+  function PDFObjects() {
+    this.objs = {};
+  }
+
+  PDFObjects.prototype = {
+    objs: null,
+
+    /**
+     * Internal function.
+     * Ensures there is an object defined for `objId`. Stores `data` on the
+     * object *if* it is created.
+     */
+    ensureObj: function PDFObjects_ensureObj(objId, data) {
+      if (this.objs[objId])
+        return this.objs[objId];
+      return this.objs[objId] = new Promise(objId, data);
+    },
+
+    /**
+     * If called *without* callback, this returns the data of `objId` but the
+     * object needs to be resolved. If it isn't, this function throws.
+     *
+     * If called *with* a callback, the callback is called with the data of the
+     * object once the object is resolved. That means, if you call this
+     * function and the object is already resolved, the callback gets called
+     * right away.
+     */
+    get: function PDFObjects_get(objId, callback) {
+      // If there is a callback, then the get can be async and the object is
+      // not required to be resolved right now
+      if (callback) {
+        this.ensureObj(objId).then(callback);
+        return null;
+      }
+
+      // If there isn't a callback, the user expects to get the resolved data
+      // directly.
+      var obj = this.objs[objId];
+
+      // If there isn't an object yet or the object isn't resolved, then the
+      // data isn't ready yet!
+      if (!obj || !obj.isResolved)
+        error('Requesting object that isn\'t resolved yet ' + objId);
+
+      return obj.data;
+    },
+
+    /**
+     * Resolves the object `objId` with optional `data`.
+     */
+    resolve: function PDFObjects_resolve(objId, data) {
+      var objs = this.objs;
+
+      // In case there is a promise already on this object, just resolve it.
+      if (objs[objId]) {
+        objs[objId].resolve(data);
+      } else {
+        this.ensureObj(objId, data);
+      }
+    },
+
+    onData: function PDFObjects_onData(objId, callback) {
+      this.ensureObj(objId).onData(callback);
+    },
+
+    isResolved: function PDFObjects_isResolved(objId) {
+      var objs = this.objs;
+      if (!objs[objId]) {
+        return false;
+      } else {
+        return objs[objId].isResolved;
+      }
+    },
+
+    hasData: function PDFObjects_hasData(objId) {
+      var objs = this.objs;
+      if (!objs[objId]) {
+        return false;
+      } else {
+        return objs[objId].hasData;
+      }
+    },
+
+    /**
+     * Sets the data of an object but *doesn't* resolve it.
+     */
+    setData: function PDFObjects_setData(objId, data) {
+      // Watchout! If you call `this.ensureObj(objId, data)` you're going to
+      // create a *resolved* promise which shouldn't be the case!
+      this.ensureObj(objId).data = data;
+    }
+  };
+  return PDFObjects;
+})();
+
+
+/* -*- Mode: Java; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/* vim: set shiftwidth=2 tabstop=2 autoindent cindent expandtab: */
+
+'use strict';
+
+var PDFFunction = (function PDFFunctionClosure() {
+  var CONSTRUCT_SAMPLED = 0;
+  var CONSTRUCT_INTERPOLATED = 2;
+  var CONSTRUCT_STICHED = 3;
+  var CONSTRUCT_POSTSCRIPT = 4;
+
+  return {
+    getSampleArray: function PDFFunction_getSampleArray(size, outputSize, bps,
+                                                       str) {
+      var length = 1;
+      for (var i = 0, ii = size.length; i < ii; i++)
+        length *= size[i];
+      length *= outputSize;
+
+      var array = [];
+      var codeSize = 0;
+      var codeBuf = 0;
+      // 32 is a valid bps so shifting won't work
+      var sampleMul = 1.0 / (Math.pow(2.0, bps) - 1);
+
+      var strBytes = str.getBytes((length * bps + 7) / 8);
+      var strIdx = 0;
+      for (var i = 0; i < length; i++) {
+        while (codeSize < bps) {
+          codeBuf <<= 8;
+          codeBuf |= strBytes[strIdx++];
+          codeSize += 8;
+        }
+        codeSize -= bps;
+        array.push((codeBuf >> codeSize) * sampleMul);
+        codeBuf &= (1 << codeSize) - 1;
+      }
+      return array;
+    },
+
+    getIR: function PDFFunction_getIR(xref, fn) {
+      var dict = fn.dict;
+      if (!dict)
+        dict = fn;
+
+      var types = [this.constructSampled,
+                   null,
+                   this.constructInterpolated,
+                   this.constructStiched,
+                   this.constructPostScript];
+
+      var typeNum = dict.get('FunctionType');
+      var typeFn = types[typeNum];
+      if (!typeFn)
+        error('Unknown type of function');
+
+      return typeFn.call(this, fn, dict, xref);
+    },
+
+    fromIR: function PDFFunction_fromIR(IR) {
+      var type = IR[0];
+      switch (type) {
+        case CONSTRUCT_SAMPLED:
+          return this.constructSampledFromIR(IR);
+        case CONSTRUCT_INTERPOLATED:
+          return this.constructInterpolatedFromIR(IR);
+        case CONSTRUCT_STICHED:
+          return this.constructStichedFromIR(IR);
+        case CONSTRUCT_POSTSCRIPT:
+        default:
+          return this.constructPostScriptFromIR(IR);
+      }
+    },
+
+    parse: function PDFFunction_parse(xref, fn) {
+      var IR = this.getIR(xref, fn);
+      return this.fromIR(IR);
+    },
+
+    constructSampled: function PDFFunction_constructSampled(str, dict) {
+      function toMultiArray(arr) {
+        var inputLength = arr.length;
+        var outputLength = arr.length / 2;
+        var out = [];
+        var index = 0;
+        for (var i = 0; i < inputLength; i += 2) {
+          out[index] = [arr[i], arr[i + 1]];
+          ++index;
+        }
+        return out;
+      }
+      var domain = dict.get('Domain');
+      var range = dict.get('Range');
+
+      if (!domain || !range)
+        error('No domain or range');
+
+      var inputSize = domain.length / 2;
+      var outputSize = range.length / 2;
+
+      domain = toMultiArray(domain);
+      range = toMultiArray(range);
+
+      var size = dict.get('Size');
+      var bps = dict.get('BitsPerSample');
+      var order = dict.get('Order');
+      if (!order)
+        order = 1;
+      if (order !== 1)
+        error('No support for cubic spline interpolation: ' + order);
+
+      var encode = dict.get('Encode');
+      if (!encode) {
+        encode = [];
+        for (var i = 0; i < inputSize; ++i) {
+          encode.push(0);
+          encode.push(size[i] - 1);
+        }
+      }
+      encode = toMultiArray(encode);
+
+      var decode = dict.get('Decode');
+      if (!decode)
+        decode = range;
+      else
+        decode = toMultiArray(decode);
+
+      var samples = this.getSampleArray(size, outputSize, bps, str);
+
+      return [
+        CONSTRUCT_SAMPLED, inputSize, domain, encode, decode, samples, size,
+        outputSize, Math.pow(2, bps) - 1, range
+      ];
+    },
+
+    constructSampledFromIR: function PDFFunction_constructSampledFromIR(IR) {
+      // See chapter 3, page 109 of the PDF reference
+      function interpolate(x, xmin, xmax, ymin, ymax) {
+        return ymin + ((x - xmin) * ((ymax - ymin) / (xmax - xmin)));
+      }
+
+      return function constructSampledFromIRResult(args) {
+        // See chapter 3, page 110 of the PDF reference.
+        var m = IR[1];
+        var domain = IR[2];
+        var encode = IR[3];
+        var decode = IR[4];
+        var samples = IR[5];
+        var size = IR[6];
+        var n = IR[7];
+        var mask = IR[8];
+        var range = IR[9];
+
+        if (m != args.length)
+          error('Incorrect number of arguments: ' + inputSize + ' != ' +
+                args.length);
+
+        var x = args;
+
+        // Building the cube vertices: its part and sample index
+        // http://rjwagner49.com/Mathematics/Interpolation.pdf
+        var cubeVertices = 1 << m;
+        var cubeN = new Float64Array(cubeVertices);
+        var cubeVertex = new Uint32Array(cubeVertices);
+        for (var j = 0; j < cubeVertices; j++)
+          cubeN[j] = 1;
+
+        var k = n, pos = 1;
+        // Map x_i to y_j for 0 <= i < m using the sampled function.
+        for (var i = 0; i < m; ++i) {
+          // x_i' = min(max(x_i, Domain_2i), Domain_2i+1)
+          var domain_2i = domain[i][0];
+          var domain_2i_1 = domain[i][1];
+          var xi = Math.min(Math.max(x[i], domain_2i), domain_2i_1);
+
+          // e_i = Interpolate(x_i', Domain_2i, Domain_2i+1,
+          //                   Encode_2i, Encode_2i+1)
+          var e = interpolate(xi, domain_2i, domain_2i_1,
+                              encode[i][0], encode[i][1]);
+
+          // e_i' = min(max(e_i, 0), Size_i - 1)
+          var size_i = size[i];
+          e = Math.min(Math.max(e, 0), size_i - 1);
+
+          // Adjusting the cube: N and vertex sample index
+          var e0 = e < size_i - 1 ? Math.floor(e) : e - 1; // e1 = e0 + 1;
+          var n0 = e0 + 1 - e; // (e1 - e) / (e1 - e0);
+          var n1 = e - e0; // (e - e0) / (e1 - e0);
+          var offset0 = e0 * k;
+          var offset1 = offset0 + k; // e1 * k
+          for (var j = 0; j < cubeVertices; j++) {
+            if (j & pos) {
+              cubeN[j] *= n1;
+              cubeVertex[j] += offset1;
+            } else {
+              cubeN[j] *= n0;
+              cubeVertex[j] += offset0;
+            }
+          }
+
+          k *= size_i;
+          pos <<= 1;
+        }
+
+        var y = new Float64Array(n);
+        for (var j = 0; j < n; ++j) {
+          // Sum all cube vertices' samples portions
+          var rj = 0;
+          for (var i = 0; i < cubeVertices; i++)
+            rj += samples[cubeVertex[i] + j] * cubeN[i];
+
+          // r_j' = Interpolate(r_j, 0, 2^BitsPerSample - 1,
+          //                    Decode_2j, Decode_2j+1)
+          rj = interpolate(rj, 0, 1, decode[j][0], decode[j][1]);
+
+          // y_j = min(max(r_j, range_2j), range_2j+1)
+          y[j] = Math.min(Math.max(rj, range[j][0]), range[j][1]);
+        }
+
+        return y;
+      }
+    },
+
+    constructInterpolated: function PDFFunction_constructInterpolated(str,
+                                                                      dict) {
+      var c0 = dict.get('C0') || [0];
+      var c1 = dict.get('C1') || [1];
+      var n = dict.get('N');
+
+      if (!isArray(c0) || !isArray(c1))
+        error('Illegal dictionary for interpolated function');
+
+      var length = c0.length;
+      var diff = [];
+      for (var i = 0; i < length; ++i)
+        diff.push(c1[i] - c0[i]);
+
+      return [CONSTRUCT_INTERPOLATED, c0, diff, n];
+    },
+
+    constructInterpolatedFromIR:
+      function PDFFunction_constructInterpolatedFromIR(IR) {
+      var c0 = IR[1];
+      var diff = IR[2];
+      var n = IR[3];
+
+      var length = diff.length;
+
+      return function constructInterpolatedFromIRResult(args) {
+        var x = n == 1 ? args[0] : Math.pow(args[0], n);
+
+        var out = [];
+        for (var j = 0; j < length; ++j)
+          out.push(c0[j] + (x * diff[j]));
+
+        return out;
+
+      }
+    },
+
+    constructStiched: function PDFFunction_constructStiched(fn, dict, xref) {
+      var domain = dict.get('Domain');
+
+      if (!domain)
+        error('No domain');
+
+      var inputSize = domain.length / 2;
+      if (inputSize != 1)
+        error('Bad domain for stiched function');
+
+      var fnRefs = dict.get('Functions');
+      var fns = [];
+      for (var i = 0, ii = fnRefs.length; i < ii; ++i)
+        fns.push(PDFFunction.getIR(xref, xref.fetchIfRef(fnRefs[i])));
+
+      var bounds = dict.get('Bounds');
+      var encode = dict.get('Encode');
+
+      return [CONSTRUCT_STICHED, domain, bounds, encode, fns];
+    },
+
+    constructStichedFromIR: function PDFFunction_constructStichedFromIR(IR) {
+      var domain = IR[1];
+      var bounds = IR[2];
+      var encode = IR[3];
+      var fnsIR = IR[4];
+      var fns = [];
+
+      for (var i = 0, ii = fnsIR.length; i < ii; i++) {
+        fns.push(PDFFunction.fromIR(fnsIR[i]));
+      }
+
+      return function constructStichedFromIRResult(args) {
+        var clip = function constructStichedFromIRClip(v, min, max) {
+          if (v > max)
+            v = max;
+          else if (v < min)
+            v = min;
+          return v;
+        };
+
+        // clip to domain
+        var v = clip(args[0], domain[0], domain[1]);
+        // calulate which bound the value is in
+        for (var i = 0, ii = bounds.length; i < ii; ++i) {
+          if (v < bounds[i])
+            break;
+        }
+
+        // encode value into domain of function
+        var dmin = domain[0];
+        if (i > 0)
+          dmin = bounds[i - 1];
+        var dmax = domain[1];
+        if (i < bounds.length)
+          dmax = bounds[i];
+
+        var rmin = encode[2 * i];
+        var rmax = encode[2 * i + 1];
+
+        var v2 = rmin + (v - dmin) * (rmax - rmin) / (dmax - dmin);
+
+        // call the appropropriate function
+        return fns[i]([v2]);
+      };
+    },
+
+    constructPostScript: function PDFFunction_constructPostScript(fn, dict,
+                                                                  xref) {
+      var domain = dict.get('Domain');
+      var range = dict.get('Range');
+
+      if (!domain)
+        error('No domain.');
+
+      if (!range)
+        error('No range.');
+
+      var lexer = new PostScriptLexer(fn);
+      var parser = new PostScriptParser(lexer);
+      var code = parser.parse();
+
+      return [CONSTRUCT_POSTSCRIPT, domain, range, code];
+    },
+
+    constructPostScriptFromIR: function PDFFunction_constructPostScriptFromIR(
+                                          IR) {
+      var domain = IR[1];
+      var range = IR[2];
+      var code = IR[3];
+      var numOutputs = range.length / 2;
+      var evaluator = new PostScriptEvaluator(code);
+      // Cache the values for a big speed up, the cache size is limited though
+      // since the number of possible values can be huge from a PS function.
+      var cache = new FunctionCache();
+      return function constructPostScriptFromIRResult(args) {
+        var initialStack = [];
+        for (var i = 0, ii = (domain.length / 2); i < ii; ++i) {
+          initialStack.push(args[i]);
+        }
+
+        var key = initialStack.join('_');
+        if (cache.has(key))
+          return cache.get(key);
+
+        var stack = evaluator.execute(initialStack);
+        var transformed = [];
+        for (i = numOutputs - 1; i >= 0; --i) {
+          var out = stack.pop();
+          var rangeIndex = 2 * i;
+          if (out < range[rangeIndex])
+            out = range[rangeIndex];
+          else if (out > range[rangeIndex + 1])
+            out = range[rangeIndex + 1];
+          transformed[i] = out;
+        }
+        cache.set(key, transformed);
+        return transformed;
+      };
+    }
+  };
+})();
+
+var FunctionCache = (function FunctionCacheClosure() {
+  // Of 10 PDF's with type4 functions the maxium number of distinct values seen
+  // was 256. This still may need some tweaking in the future though.
+  var MAX_CACHE_SIZE = 1024;
+  function FunctionCache() {
+    this.cache = {};
+    this.total = 0;
+  }
+  FunctionCache.prototype = {
+    has: function FunctionCache_has(key) {
+      return key in this.cache;
+    },
+    get: function FunctionCache_get(key) {
+      return this.cache[key];
+    },
+    set: function FunctionCache_set(key, value) {
+      if (this.total < MAX_CACHE_SIZE) {
+        this.cache[key] = value;
+        this.total++;
+      }
+    }
+  };
+  return FunctionCache;
+})();
+
+var PostScriptStack = (function PostScriptStackClosure() {
+  var MAX_STACK_SIZE = 100;
+  function PostScriptStack(initialStack) {
+    this.stack = initialStack || [];
+  }
+
+  PostScriptStack.prototype = {
+    push: function PostScriptStack_push(value) {
+      if (this.stack.length >= MAX_STACK_SIZE)
+        error('PostScript function stack overflow.');
+      this.stack.push(value);
+    },
+    pop: function PostScriptStack_pop() {
+      if (this.stack.length <= 0)
+        error('PostScript function stack underflow.');
+      return this.stack.pop();
+    },
+    copy: function PostScriptStack_copy(n) {
+      if (this.stack.length + n >= MAX_STACK_SIZE)
+        error('PostScript function stack overflow.');
+      var stack = this.stack;
+      for (var i = stack.length - n, j = n - 1; j >= 0; j--, i++)
+        stack.push(stack[i]);
+    },
+    index: function PostScriptStack_index(n) {
+      this.push(this.stack[this.stack.length - n - 1]);
+    },
+    // rotate the last n stack elements p times
+    roll: function PostScriptStack_roll(n, p) {
+      var stack = this.stack;
+      var l = stack.length - n;
+      var r = stack.length - 1, c = l + (p - Math.floor(p / n) * n), i, j, t;
+      for (i = l, j = r; i < j; i++, j--) {
+        t = stack[i]; stack[i] = stack[j]; stack[j] = t;
+      }
+      for (i = l, j = c - 1; i < j; i++, j--) {
+        t = stack[i]; stack[i] = stack[j]; stack[j] = t;
+      }
+      for (i = c, j = r; i < j; i++, j--) {
+        t = stack[i]; stack[i] = stack[j]; stack[j] = t;
+      }
+    }
+  };
+  return PostScriptStack;
+})();
+var PostScriptEvaluator = (function PostScriptEvaluatorClosure() {
+  function PostScriptEvaluator(operators, operands) {
+    this.operators = operators;
+    this.operands = operands;
+  }
+  PostScriptEvaluator.prototype = {
+    execute: function PostScriptEvaluator_execute(initialStack) {
+      var stack = new PostScriptStack(initialStack);
+      var counter = 0;
+      var operators = this.operators;
+      var length = operators.length;
+      var operator, a, b;
+      while (counter < length) {
+        operator = operators[counter++];
+        if (typeof operator == 'number') {
+          // Operator is really an operand and should be pushed to the stack.
+          stack.push(operator);
+          continue;
+        }
+        switch (operator) {
+          // non standard ps operators
+          case 'jz': // jump if false
+            b = stack.pop();
+            a = stack.pop();
+            if (!a)
+              counter = b;
+            break;
+          case 'j': // jump
+            a = stack.pop();
+            counter = a;
+            break;
+
+          // all ps operators in alphabetical order (excluding if/ifelse)
+          case 'abs':
+            a = stack.pop();
+            stack.push(Math.abs(a));
+            break;
+          case 'add':
+            b = stack.pop();
+            a = stack.pop();
+            stack.push(a + b);
+            break;
+          case 'and':
+            b = stack.pop();
+            a = stack.pop();
+            if (isBool(a) && isBool(b))
+              stack.push(a && b);
+            else
+              stack.push(a & b);
+            break;
+          case 'atan':
+            a = stack.pop();
+            stack.push(Math.atan(a));
+            break;
+          case 'bitshift':
+            b = stack.pop();
+            a = stack.pop();
+            if (a > 0)
+              stack.push(a << b);
+            else
+              stack.push(a >> b);
+            break;
+          case 'ceiling':
+            a = stack.pop();
+            stack.push(Math.ceil(a));
+            break;
+          case 'copy':
+            a = stack.pop();
+            stack.copy(a);
+            break;
+          case 'cos':
+            a = stack.pop();
+            stack.push(Math.cos(a));
+            break;
+          case 'cvi':
+            a = stack.pop() | 0;
+            stack.push(a);
+            break;
+          case 'cvr':
+            // noop
+            break;
+          case 'div':
+            b = stack.pop();
+            a = stack.pop();
+            stack.push(a / b);
+            break;
+          case 'dup':
+            stack.copy(1);
+            break;
+          case 'eq':
+            b = stack.pop();
+            a = stack.pop();
+            stack.push(a == b);
+            break;
+          case 'exch':
+            stack.roll(2, 1);
+            break;
+          case 'exp':
+            b = stack.pop();
+            a = stack.pop();
+            stack.push(Math.pow(a, b));
+            break;
+          case 'false':
+            stack.push(false);
+            break;
+          case 'floor':
+            a = stack.pop();
+            stack.push(Math.floor(a));
+            break;
+          case 'ge':
+            b = stack.pop();
+            a = stack.pop();
+            stack.push(a >= b);
+            break;
+          case 'gt':
+            b = stack.pop();
+            a = stack.pop();
+            stack.push(a > b);
+            break;
+          case 'idiv':
+            b = stack.pop();
+            a = stack.pop();
+            stack.push((a / b) | 0);
+            break;
+          case 'index':
+            a = stack.pop();
+            stack.index(a);
+            break;
+          case 'le':
+            b = stack.pop();
+            a = stack.pop();
+            stack.push(a <= b);
+            break;
+          case 'ln':
+            a = stack.pop();
+            stack.push(Math.log(a));
+            break;
+          case 'log':
+            a = stack.pop();
+            stack.push(Math.log(a) / Math.LN10);
+            break;
+          case 'lt':
+            b = stack.pop();
+            a = stack.pop();
+            stack.push(a < b);
+            break;
+          case 'mod':
+            b = stack.pop();
+            a = stack.pop();
+            stack.push(a % b);
+            break;
+          case 'mul':
+            b = stack.pop();
+            a = stack.pop();
+            stack.push(a * b);
+            break;
+          case 'ne':
+            b = stack.pop();
+            a = stack.pop();
+            stack.push(a != b);
+            break;
+          case 'neg':
+            a = stack.pop();
+            stack.push(-b);
+            break;
+          case 'not':
+            a = stack.pop();
+            if (isBool(a) && isBool(b))
+              stack.push(a && b);
+            else
+              stack.push(a & b);
+            break;
+          case 'or':
+            b = stack.pop();
+            a = stack.pop();
+            if (isBool(a) && isBool(b))
+              stack.push(a || b);
+            else
+              stack.push(a | b);
+            break;
+          case 'pop':
+            stack.pop();
+            break;
+          case 'roll':
+            b = stack.pop();
+            a = stack.pop();
+            stack.roll(a, b);
+            break;
+          case 'round':
+            a = stack.pop();
+            stack.push(Math.round(a));
+            break;
+          case 'sin':
+            a = stack.pop();
+            stack.push(Math.sin(a));
+            break;
+          case 'sqrt':
+            a = stack.pop();
+            stack.push(Math.sqrt(a));
+            break;
+          case 'sub':
+            b = stack.pop();
+            a = stack.pop();
+            stack.push(a - b);
+            break;
+          case 'true':
+            stack.push(true);
+            break;
+          case 'truncate':
+            a = stack.pop();
+            a = a < 0 ? Math.ceil(a) : Math.floor(a);
+            stack.push(a);
+            break;
+          case 'xor':
+            b = stack.pop();
+            a = stack.pop();
+            if (isBool(a) && isBool(b))
+              stack.push(a != b);
+            else
+              stack.push(a ^ b);
+            break;
+          default:
+            error('Unknown operator ' + operator);
+            break;
+        }
+      }
+      return stack.stack;
+    }
+  };
+  return PostScriptEvaluator;
+})();
+
+var PostScriptParser = (function PostScriptParserClosure() {
+  function PostScriptParser(lexer) {
+    this.lexer = lexer;
+    this.operators = [];
+    this.token;
+    this.prev;
+  }
+  PostScriptParser.prototype = {
+    nextToken: function PostScriptParser_nextToken() {
+      this.prev = this.token;
+      this.token = this.lexer.getToken();
+    },
+    accept: function PostScriptParser_accept(type) {
+      if (this.token.type == type) {
+        this.nextToken();
+        return true;
+      }
+      return false;
+    },
+    expect: function PostScriptParser_expect(type) {
+      if (this.accept(type))
+        return true;
+      error('Unexpected symbol: found ' + this.token.type + ' expected ' +
+            type + '.');
+    },
+    parse: function PostScriptParser_parse() {
+      this.nextToken();
+      this.expect(PostScriptTokenTypes.LBRACE);
+      this.parseBlock();
+      this.expect(PostScriptTokenTypes.RBRACE);
+      return this.operators;
+    },
+    parseBlock: function PostScriptParser_parseBlock() {
+      while (true) {
+        if (this.accept(PostScriptTokenTypes.NUMBER)) {
+          this.operators.push(this.prev.value);
+        } else if (this.accept(PostScriptTokenTypes.OPERATOR)) {
+          this.operators.push(this.prev.value);
+        } else if (this.accept(PostScriptTokenTypes.LBRACE)) {
+          this.parseCondition();
+        } else {
+          return;
+        }
+      }
+    },
+    parseCondition: function PostScriptParser_parseCondition() {
+      // Add two place holders that will be updated later
+      var conditionLocation = this.operators.length;
+      this.operators.push(null, null);
+
+      this.parseBlock();
+      this.expect(PostScriptTokenTypes.RBRACE);
+      if (this.accept(PostScriptTokenTypes.IF)) {
+        // The true block is right after the 'if' so it just falls through on
+        // true else it jumps and skips the true block.
+        this.operators[conditionLocation] = this.operators.length;
+        this.operators[conditionLocation + 1] = 'jz';
+      } else if (this.accept(PostScriptTokenTypes.LBRACE)) {
+        var jumpLocation = this.operators.length;
+        this.operators.push(null, null);
+        var endOfTrue = this.operators.length;
+        this.parseBlock();
+        this.expect(PostScriptTokenTypes.RBRACE);
+        this.expect(PostScriptTokenTypes.IFELSE);
+        // The jump is added at the end of the true block to skip the false
+        // block.
+        this.operators[jumpLocation] = this.operators.length;
+        this.operators[jumpLocation + 1] = 'j';
+
+        this.operators[conditionLocation] = endOfTrue;
+        this.operators[conditionLocation + 1] = 'jz';
+      } else {
+        error('PS Function: error parsing conditional.');
+      }
+    }
+  };
+  return PostScriptParser;
+})();
+
+var PostScriptTokenTypes = {
+  LBRACE: 0,
+  RBRACE: 1,
+  NUMBER: 2,
+  OPERATOR: 3,
+  IF: 4,
+  IFELSE: 5
+};
+
+var PostScriptToken = (function PostScriptTokenClosure() {
+  function PostScriptToken(type, value) {
+    this.type = type;
+    this.value = value;
+  }
+
+  var opCache = {};
+
+  PostScriptToken.getOperator = function PostScriptToken_getOperator(op) {
+    var opValue = opCache[op];
+    if (opValue)
+      return opValue;
+
+    return opCache[op] = new PostScriptToken(PostScriptTokenTypes.OPERATOR, op);
+  };
+
+  PostScriptToken.LBRACE = new PostScriptToken(PostScriptTokenTypes.LBRACE,
+                                                '{');
+  PostScriptToken.RBRACE = new PostScriptToken(PostScriptTokenTypes.RBRACE,
+                                                '}');
+  PostScriptToken.IF = new PostScriptToken(PostScriptTokenTypes.IF, 'IF');
+  PostScriptToken.IFELSE = new PostScriptToken(PostScriptTokenTypes.IFELSE,
+                                                'IFELSE');
+  return PostScriptToken;
+})();
+
+var PostScriptLexer = (function PostScriptLexerClosure() {
+  function PostScriptLexer(stream) {
+    this.stream = stream;
+  }
+  PostScriptLexer.prototype = {
+    getToken: function PostScriptLexer_getToken() {
+      var s = '';
+      var ch;
+      var comment = false;
+      var stream = this.stream;
+
+      // skip comments
+      while (true) {
+        if (!(ch = stream.getChar()))
+          return EOF;
+
+        if (comment) {
+          if (ch == '\x0a' || ch == '\x0d')
+            comment = false;
+        } else if (ch == '%') {
+          comment = true;
+        } else if (!Lexer.isSpace(ch)) {
+          break;
+        }
+      }
+      switch (ch) {
+        case '0': case '1': case '2': case '3': case '4':
+        case '5': case '6': case '7': case '8': case '9':
+        case '+': case '-': case '.':
+          return new PostScriptToken(PostScriptTokenTypes.NUMBER,
+                                      this.getNumber(ch));
+        case '{':
+          return PostScriptToken.LBRACE;
+        case '}':
+          return PostScriptToken.RBRACE;
+      }
+      // operator
+      var str = ch.toLowerCase();
+      while (true) {
+        ch = stream.lookChar();
+        if (ch === null)
+          break;
+        ch = ch.toLowerCase();
+        if (ch >= 'a' && ch <= 'z')
+          str += ch;
+        else
+          break;
+        stream.skip();
+      }
+      switch (str) {
+        case 'if':
+          return PostScriptToken.IF;
+        case 'ifelse':
+          return PostScriptToken.IFELSE;
+        default:
+          return PostScriptToken.getOperator(str);
+      }
+    },
+    getNumber: function PostScriptLexer_getNumber(ch) {
+      var str = ch;
+      var stream = this.stream;
+      while (true) {
+        ch = stream.lookChar();
+        if ((ch >= '0' && ch <= '9') || ch == '-' || ch == '.')
+          str += ch;
+        else
+          break;
+        stream.skip();
+      }
+      var value = parseFloat(str);
+      if (isNaN(value))
+        error('Invalid floating point number: ' + value);
+      return value;
+    }
+  };
+  return PostScriptLexer;
+})();
+
+
+/* -*- Mode: Java; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/* vim: set shiftwidth=2 tabstop=2 autoindent cindent expandtab: */
+
+'use strict';
+
+var ISOAdobeCharset = [
+  '.notdef', 'space', 'exclam', 'quotedbl', 'numbersign', 'dollar',
+  'percent', 'ampersand', 'quoteright', 'parenleft', 'parenright',
+  'asterisk', 'plus', 'comma', 'hyphen', 'period', 'slash', 'zero',
+  'one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight',
+  'nine', 'colon', 'semicolon', 'less', 'equal', 'greater', 'question',
+  'at', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M',
+  'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z',
+  'bracketleft', 'backslash', 'bracketright', 'asciicircum', 'underscore',
+  'quoteleft', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l',
+  'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z',
+  'braceleft', 'bar', 'braceright', 'asciitilde', 'exclamdown', 'cent',
+  'sterling', 'fraction', 'yen', 'florin', 'section', 'currency',
+  'quotesingle', 'quotedblleft', 'guillemotleft', 'guilsinglleft',
+  'guilsinglright', 'fi', 'fl', 'endash', 'dagger', 'daggerdbl',
+  'periodcentered', 'paragraph', 'bullet', 'quotesinglbase',
+  'quotedblbase', 'quotedblright', 'guillemotright', 'ellipsis',
+  'perthousand', 'questiondown', 'grave', 'acute', 'circumflex', 'tilde',
+  'macron', 'breve', 'dotaccent', 'dieresis', 'ring', 'cedilla',
+  'hungarumlaut', 'ogonek', 'caron', 'emdash', 'AE', 'ordfeminine',
+  'Lslash', 'Oslash', 'OE', 'ordmasculine', 'ae', 'dotlessi', 'lslash',
+  'oslash', 'oe', 'germandbls', 'onesuperior', 'logicalnot', 'mu',
+  'trademark', 'Eth', 'onehalf', 'plusminus', 'Thorn', 'onequarter',
+  'divide', 'brokenbar', 'degree', 'thorn', 'threequarters', 'twosuperior',
+  'registered', 'minus', 'eth', 'multiply', 'threesuperior', 'copyright',
+  'Aacute', 'Acircumflex', 'Adieresis', 'Agrave', 'Aring', 'Atilde',
+  'Ccedilla', 'Eacute', 'Ecircumflex', 'Edieresis', 'Egrave', 'Iacute',
+  'Icircumflex', 'Idieresis', 'Igrave', 'Ntilde', 'Oacute', 'Ocircumflex',
+  'Odieresis', 'Ograve', 'Otilde', 'Scaron', 'Uacute', 'Ucircumflex',
+  'Udieresis', 'Ugrave', 'Yacute', 'Ydieresis', 'Zcaron', 'aacute',
+  'acircumflex', 'adieresis', 'agrave', 'aring', 'atilde', 'ccedilla',
+  'eacute', 'ecircumflex', 'edieresis', 'egrave', 'iacute', 'icircumflex',
+  'idieresis', 'igrave', 'ntilde', 'oacute', 'ocircumflex', 'odieresis',
+  'ograve', 'otilde', 'scaron', 'uacute', 'ucircumflex', 'udieresis',
+  'ugrave', 'yacute', 'ydieresis', 'zcaron'
+];
+
+var ExpertCharset = [
+  '.notdef', 'space', 'exclamsmall', 'Hungarumlautsmall', 'dollaroldstyle',
+  'dollarsuperior', 'ampersandsmall', 'Acutesmall', 'parenleftsuperior',
+  'parenrightsuperior', 'twodotenleader', 'onedotenleader', 'comma',
+  'hyphen', 'period', 'fraction', 'zerooldstyle', 'oneoldstyle',
+  'twooldstyle', 'threeoldstyle', 'fouroldstyle', 'fiveoldstyle',
+  'sixoldstyle', 'sevenoldstyle', 'eightoldstyle', 'nineoldstyle',
+  'colon', 'semicolon', 'commasuperior', 'threequartersemdash',
+  'periodsuperior', 'questionsmall', 'asuperior', 'bsuperior',
+  'centsuperior', 'dsuperior', 'esuperior', 'isuperior', 'lsuperior',
+  'msuperior', 'nsuperior', 'osuperior', 'rsuperior', 'ssuperior',
+  'tsuperior', 'ff', 'fi', 'fl', 'ffi', 'ffl', 'parenleftinferior',
+  'parenrightinferior', 'Circumflexsmall', 'hyphensuperior', 'Gravesmall',
+  'Asmall', 'Bsmall', 'Csmall', 'Dsmall', 'Esmall', 'Fsmall', 'Gsmall',
+  'Hsmall', 'Ismall', 'Jsmall', 'Ksmall', 'Lsmall', 'Msmall', 'Nsmall',
+  'Osmall', 'Psmall', 'Qsmall', 'Rsmall', 'Ssmall', 'Tsmall', 'Usmall',
+  'Vsmall', 'Wsmall', 'Xsmall', 'Ysmall', 'Zsmall', 'colonmonetary',
+  'onefitted', 'rupiah', 'Tildesmall', 'exclamdownsmall', 'centoldstyle',
+  'Lslashsmall', 'Scaronsmall', 'Zcaronsmall', 'Dieresissmall',
+  'Brevesmall', 'Caronsmall', 'Dotaccentsmall', 'Macronsmall',
+  'figuredash', 'hypheninferior', 'Ogoneksmall', 'Ringsmall',
+  'Cedillasmall', 'onequarter', 'onehalf', 'threequarters',
+  'questiondownsmall', 'oneeighth', 'threeeighths', 'fiveeighths',
+  'seveneighths', 'onethird', 'twothirds', 'zerosuperior', 'onesuperior',
+  'twosuperior', 'threesuperior', 'foursuperior', 'fivesuperior',
+  'sixsuperior', 'sevensuperior', 'eightsuperior', 'ninesuperior',
+  'zeroinferior', 'oneinferior', 'twoinferior', 'threeinferior',
+  'fourinferior', 'fiveinferior', 'sixinferior', 'seveninferior',
+  'eightinferior', 'nineinferior', 'centinferior', 'dollarinferior',
+  'periodinferior', 'commainferior', 'Agravesmall', 'Aacutesmall',
+  'Acircumflexsmall', 'Atildesmall', 'Adieresissmall', 'Aringsmall',
+  'AEsmall', 'Ccedillasmall', 'Egravesmall', 'Eacutesmall',
+  'Ecircumflexsmall', 'Edieresissmall', 'Igravesmall', 'Iacutesmall',
+  'Icircumflexsmall', 'Idieresissmall', 'Ethsmall', 'Ntildesmall',
+  'Ogravesmall', 'Oacutesmall', 'Ocircumflexsmall', 'Otildesmall',
+  'Odieresissmall', 'OEsmall', 'Oslashsmall', 'Ugravesmall', 'Uacutesmall',
+  'Ucircumflexsmall', 'Udieresissmall', 'Yacutesmall', 'Thornsmall',
+  'Ydieresissmall'
+];
+
+var ExpertSubsetCharset = [
+  '.notdef', 'space', 'dollaroldstyle', 'dollarsuperior',
+  'parenleftsuperior', 'parenrightsuperior', 'twodotenleader',
+  'onedotenleader', 'comma', 'hyphen', 'period', 'fraction',
+  'zerooldstyle', 'oneoldstyle', 'twooldstyle', 'threeoldstyle',
+  'fouroldstyle', 'fiveoldstyle', 'sixoldstyle', 'sevenoldstyle',
+  'eightoldstyle', 'nineoldstyle', 'colon', 'semicolon', 'commasuperior',
+  'threequartersemdash', 'periodsuperior', 'asuperior', 'bsuperior',
+  'centsuperior', 'dsuperior', 'esuperior', 'isuperior', 'lsuperior',
+  'msuperior', 'nsuperior', 'osuperior', 'rsuperior', 'ssuperior',
+  'tsuperior', 'ff', 'fi', 'fl', 'ffi', 'ffl', 'parenleftinferior',
+  'parenrightinferior', 'hyphensuperior', 'colonmonetary', 'onefitted',
+  'rupiah', 'centoldstyle', 'figuredash', 'hypheninferior', 'onequarter',
+  'onehalf', 'threequarters', 'oneeighth', 'threeeighths', 'fiveeighths',
+  'seveneighths', 'onethird', 'twothirds', 'zerosuperior', 'onesuperior',
+  'twosuperior', 'threesuperior', 'foursuperior', 'fivesuperior',
+  'sixsuperior', 'sevensuperior', 'eightsuperior', 'ninesuperior',
+  'zeroinferior', 'oneinferior', 'twoinferior', 'threeinferior',
+  'fourinferior', 'fiveinferior', 'sixinferior', 'seveninferior',
+  'eightinferior', 'nineinferior', 'centinferior', 'dollarinferior',
+  'periodinferior', 'commainferior'
+];
+
+
+/* -*- Mode: Java; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/* vim: set shiftwidth=2 tabstop=2 autoindent cindent expandtab: */
+
+'use strict';
+
+var CIDToUnicodeMaps = {
+  'Adobe-Japan1': [[32, 160], {f: 12, c: 33}, [45, 8209], {f: 46, c: 46}, 165,
+    {f: 2, c: 93}, [95, 818], [96, 768], {f: 27, c: 97}, 166, 125, [732, 771],
+    [700, 8217], 92, [699, 8216], 124, [126, 8764], {f: 3, c: 161}, 8260, 402,
+    0, 164, 8220, 171, {f: 2, c: 8249}, {f: 2, c: 64257}, [8210, 8211], 0, 0,
+    [183, 8729], 0, 8226, 8218, 8222, 8221, 187, 0, 0, 191, {f: 2, c: 769},
+    [175, 772], {f: 3, c: 774}, 778, [184, 807], 779, 808, 780, [822, 8212],
+    198, 170, 321, 216, 338, 186, 230, 305, 322, 248, 339, 223, 173, 169, 172,
+    174, 0, 0, {f: 2, c: 178}, 181, 185, {f: 3, c: 188}, {f: 6, c: 192},
+    {f: 16, c: 199}, 0, {f: 6, c: 217}, {f: 6, c: 224}, {f: 16, c: 231}, 0,
+    {f: 7, c: 249}, 352, 376, 381, [773, 8254], 353, 8482, 382, 0, 8194,
+    {s: 91}, 65512, {s: 3}, {f: 63, c: 65377}, {s: 243}, [8195, 12288],
+    {f: 2, c: 12289}, 65292, 65294, 12539, {f: 2, c: 65306}, 65311, 65281,
+    {f: 2, c: 12443}, 180, 65344, 168, 65342, 65507, 65343, {f: 2, c: 12541},
+    {f: 2, c: 12445}, 12291, 20189, {f: 3, c: 12293}, 12540, 8213, 8208, 65295,
+    65340, [12316, 65374], 8214, 65372, 8230, 8229, {s: 4}, {f: 2, c: 65288},
+    {f: 2, c: 12308}, 65339, 65341, 65371, 65373, {f: 10, c: 12296}, 65291,
+    [8722, 65293], 177, 215, 247, 65309, 8800, 65308, 65310, {f: 2, c: 8806},
+    8734, 8756, 9794, 9792, 176, {f: 2, c: 8242}, 8451, 65509, 65284,
+    {f: 2, c: 65504}, 65285, 65283, 65286, 65290, 65312, 167, 9734, 9733, 9675,
+    9679, 9678, 9671, 9670, 9633, 9632, 9651, 9650, 9661, 9660, 8251, 12306,
+    8594, {f: 2, c: 8592}, 8595, 12307, 8712, 8715, {f: 2, c: 8838},
+    {f: 2, c: 8834}, 8746, 8745, {f: 2, c: 8743}, 65506, 8658, 8660, 8704,
+    8707, 8736, 8869, 8978, 8706, 8711, 8801, 8786, {f: 2, c: 8810}, 8730,
+    8765, 8733, 8757, {f: 2, c: 8747}, 8491, 8240, 9839, 9837, 9834,
+    {f: 2, c: 8224}, 182, 9711, {f: 10, c: 65296}, {f: 26, c: 65313},
+    {f: 26, c: 65345}, {f: 83, c: 12353}, {f: 86, c: 12449}, {f: 17, c: 913},
+    {f: 7, c: 931}, {f: 17, c: 945}, {f: 7, c: 963}, {f: 6, c: 1040}, 1025,
+    {f: 32, c: 1046}, 1105, {f: 26, c: 1078}, 20124, 21782, 23043, 38463,
+    21696, 24859, 25384, 23030, 36898, 33909, 33564, 31312, 24746, 25569,
+    28197, 26093, 33894, 33446, 39925, 26771, 22311, 26017, 25201, 23451,
+    22992, 34427, 39156, 32098, 32190, 39822, 25110, 31903, 34999, 23433,
+    24245, 25353, 26263, 26696, 38343, 38797, 26447, 20197, 20234, 20301,
+    20381, 20553, 22258, 22839, 22996, 23041, 23561, 24799, 24847, 24944,
+    26131, 26885, 28858, 30031, 30064, 31227, 32173, 32239, 32963, 33806,
+    [12176, 34915], 35586, 36949, 36986, 21307, 20117, 20133, 22495, 32946,
+    37057, 30959, [12032, 19968], 22769, 28322, 36920, 31282, 33576, 33419,
+    39983, 20801, 21360, 21693, 21729, 22240, 23035, 24341, 39154, 28139,
+    32996, 34093, 38498, 38512, 38560, 38907, 21515, 21491, 23431, 28879,
+    [12155, 32701], 36802, [12204, 38632], 21359, 40284, 31418, 19985, 30867,
+    [12165, 33276], 28198, 22040, 21764, 27421, 34074, 39995, 23013, 21417,
+    28006, [12128, 29916], 38287, 22082, 20113, 36939, 38642, 33615, 39180,
+    21473, 21942, 23344, 24433, 26144, 26355, 26628, 27704, 27891, 27945,
+    29787, 30408, 31310, 38964, 33521, 34907, 35424, 37613, 28082, 30123,
+    30410, 39365, 24742, 35585, 36234, 38322, 27022, 21421, 20870, 22290,
+    22576, 22852, 23476, 24310, 24616, 25513, 25588, 27839, 28436, 28814,
+    28948, 29017, 29141, 29503, 32257, 33398, 33489, 34199, 36960, 37467,
+    40219, 22633, 26044, 27738, 29989, 20985, 22830, 22885, 24448, 24540,
+    25276, 26106, 27178, 27431, 27572, 29579, 32705, 35158, 40236, 40206,
+    [12009, 40644], 23713, 27798, 33659, 20740, 23627, 25014, 33222, 26742,
+    29281, [12036, 20057], 20474, 21368, 24681, 28201, 31311, [12211, 38899],
+    19979, 21270, 20206, 20309, 20285, 20385, 20339, 21152, 21487, 22025,
+    22799, 23233, 23478, 23521, 31185, 26247, 26524, 26550, 27468, 27827,
+    [12117, 28779], 29634, 31117, [12146, 31166], 31292, 31623, 33457, 33499,
+    33540, 33655, 33775, 33747, 34662, 35506, 22057, 36008, 36838, 36942,
+    38686, 34442, 20420, 23784, 25105, [12123, 29273], 30011, 33253, 33469,
+    34558, 36032, 38597, 39187, 39381, 20171, 20250, 35299, 22238, 22602,
+    22730, 24315, 24555, 24618, 24724, 24674, 25040, 25106, 25296, 25913,
+    39745, 26214, 26800, 28023, 28784, 30028, 30342, 32117, 33445, 34809,
+    38283, 38542, [12185, 35997], 20977, 21182, 22806, 21683, 23475, 23830,
+    24936, 27010, 28079, 30861, 33995, 34903, 35442, 37799, 39608, 28012,
+    39336, 34521, 22435, 26623, 34510, 37390, 21123, 22151, 21508, 24275,
+    25313, 25785, 26684, 26680, 27579, 29554, 30906, 31339, 35226,
+    [12179, 35282], 36203, 36611, 37101, 38307, 38548, [12208, 38761], 23398,
+    23731, 27005, {f: 2, c: 38989}, 25499, 31520, 27179, 27263, 26806, 39949,
+    28511, 21106, 21917, 24688, 25324, 27963, 28167, 28369, 33883, 35088,
+    36676, 19988, 39993, 21494, 26907, 27194, 38788, 26666, 20828, 31427,
+    33970, 37340, 37772, 22107, 40232, 26658, 33541, 33841, 31909, 21000,
+    33477, [12129, 29926], 20094, 20355, 20896, 23506, 21002, 21208, 21223,
+    24059, 21914, 22570, 23014, 23436, 23448, 23515, [12082, 24178], 24185,
+    24739, 24863, 24931, 25022, 25563, 25954, 26577, 26707, 26874, 27454,
+    27475, 27735, 28450, 28567, 28485, 29872, [12130, 29976], 30435, 30475,
+    31487, 31649, 31777, 32233, [12152, 32566], 32752, 32925, 33382, 33694,
+    35251, 35532, 36011, 36996, 37969, 38291, 38289, 38306, 38501, 38867,
+    39208, 33304, 20024, 21547, 23736, 24012, 29609, 30284, 30524, 23721,
+    32747, 36107, 38593, 38929, 38996, 39000, 20225, 20238, 21361, 21916,
+    22120, 22522, 22855, 23305, 23492, 23696, 24076, 24190, 24524, 25582,
+    26426, 26071, 26082, 26399, 26827, 26820, 27231, 24112, 27589, 27671,
+    27773, 30079, 31048, 23395, 31232, 32000, 24509, 35215, 35352, 36020,
+    36215, 36556, 36637, 39138, 39438, [12004, 12225, 39740], [12018, 20096],
+    20605, 20736, 22931, 23452, 25135, 25216, 25836, 27450, 29344, 30097,
+    31047, 32681, 34811, 35516, 35696, 25516, 33738, 38816, 21513, 21507,
+    21931, 26708, 27224, 35440, 30759, 26485, [12233, 40653], 21364, 23458,
+    33050, 34384, 36870, 19992, 20037, 20167, 20241, 21450, 21560, 23470,
+    [12088, 24339], 24613, 25937, 26429, 27714, 27762, 27875, 28792, 29699,
+    31350, 31406, 31496, 32026, 31998, 32102, 26087, [12124, 29275], 21435,
+    23621, 24040, 25298, 25312, 25369, 28192, 34394, 35377, 36317, 37624,
+    28417, 31142, [12226, 39770], 20136, {f: 2, c: 20139}, 20379, 20384, 20689,
+    20807, 31478, 20849, 20982, 21332, 21281, 21375, 21483, 21932, 22659,
+    23777, 24375, 24394, 24623, 24656, 24685, 25375, 25945, 27211, 27841,
+    29378, 29421, 30703, 33016, 33029, 33288, 34126, 37111, 37857, 38911,
+    39255, 39514, 20208, 20957, 23597, 26241, 26989, 23616, 26354, 26997,
+    [12127, 29577], 26704, 31873, 20677, 21220, 22343, [12081, 24062], 37670,
+    [12100, 26020], 27427, 27453, 29748, 31105, 31165, 31563, 32202, 33465,
+    33740, 34943, 35167, 35641, 36817, [12198, 37329], 21535, 37504, 20061,
+    20534, 21477, 21306, 29399, 29590, 30697, 33510, 36527, 39366, 39368,
+    39378, 20855, 24858, 34398, 21936, 31354, 20598, 23507, 36935, 38533,
+    20018, 27355, 37351, 23633, 23624, 25496, 31391, 27795, 38772, 36705,
+    31402, 29066, 38536, 31874, 26647, 32368, 26705, 37740, 21234, 21531,
+    34219, 35347, 32676, 36557, 37089, 21350, 34952, 31041, 20418, 20670,
+    21009, 20804, 21843, 22317, 29674, 22411, 22865, 24418, 24452, 24693,
+    24950, 24935, 25001, 25522, 25658, 25964, 26223, 26690, 28179, 30054,
+    31293, 31995, 32076, 32153, 32331, 32619, 33550, 33610, 34509, 35336,
+    35427, 35686, 36605, 38938, 40335, 33464, 36814, 39912, 21127, 25119,
+    25731, 28608, 38553, 26689, 20625, [12107, 27424], 27770, 28500,
+    [12147, 31348], 32080, [12174, 34880], 35363, [12105, 26376], 20214, 20537,
+    20518, 20581, 20860, 21048, 21091, 21927, 22287, 22533, 23244, 24314,
+    25010, 25080, 25331, 25458, 26908, 27177, 29309, [12125, 29356], 29486,
+    30740, 30831, 32121, 30476, 32937, [12178, 35211], 35609, 36066, 36562,
+    36963, 37749, 38522, 38997, 39443, 40568, 20803, 21407, 21427, 24187,
+    24358, 28187, 28304, [12126, 29572], 29694, 32067, 33335, [12180, 35328],
+    35578, 38480, 20046, 20491, 21476, 21628, 22266, 22993, 23396,
+    [12080, 24049], 24235, 24359, [12094, 25144], 25925, 26543, 28246, 29392,
+    31946, 34996, 32929, 32993, 33776, [11969, 34382], 35463, 36328, 37431,
+    38599, 39015, [12238, 40723], 20116, 20114, 20237, 21320, 21577, 21566,
+    23087, 24460, 24481, 24735, 26791, 27278, 29786, 30849, 35486, 35492,
+    35703, 37264, 20062, 39881, 20132, 20348, 20399, 20505, 20502, 20809,
+    20844, 21151, 21177, 21246, 21402, [12061, 21475], 21521, 21518, 21897,
+    22353, 22434, 22909, 23380, 23389, 23439, [12079, 24037], 24039, 24055,
+    24184, 24195, 24218, 24247, 24344, 24658, 24908, 25239, 25304, 25511,
+    25915, 26114, 26179, 26356, 26477, 26657, 26775, 27083, 27743, 27946,
+    28009, 28207, 28317, 30002, 30343, 30828, 31295, 31968, 32005, 32024,
+    32094, 32177, 32789, 32771, 32943, 32945, 33108, 33167, 33322, 33618,
+    [12175, 34892], 34913, 35611, 36002, 36092, 37066, 37237, 37489, 30783,
+    37628, 38308, 38477, 38917, [12217, 39321], [12220, 39640], 40251, 21083,
+    21163, 21495, 21512, 22741, 25335, 28640, 35946, 36703, 40633, 20811,
+    21051, 21578, 22269, 31296, 37239, 40288, [12234, 40658], 29508, 28425,
+    33136, 29969, 24573, 24794, [12219, 39592], 29403, 36796, 27492, 38915,
+    20170, 22256, 22372, 22718, 23130, 24680, 25031, 26127, 26118, 26681,
+    26801, 28151, 30165, 32058, [12169, 33390], 39746, 20123, 20304, 21449,
+    21766, 23919, 24038, 24046, 26619, 27801, 29811, 30722, 35408, 37782,
+    35039, 22352, 24231, 25387, 20661, 20652, 20877, 26368, 21705, 22622,
+    22971, 23472, 24425, 25165, 25505, 26685, 27507, 28168, 28797, 37319,
+    29312, 30741, 30758, 31085, 25998, 32048, 33756, 35009, 36617, 38555,
+    21092, 22312, 26448, 32618, 36001, 20916, 22338, 38442, 22586, 27018,
+    32948, 21682, 23822, 22524, 30869, 40442, 20316, 21066, 21643, 25662,
+    26152, 26388, 26613, 31364, 31574, 32034, 37679, 26716, 39853, 31545,
+    21273, 20874, 21047, 23519, 25334, 25774, 25830, 26413, 27578, 34217,
+    38609, 30352, 39894, 25420, 37638, 39851, [12139, 30399], 26194, 19977,
+    20632, 21442, [12077, 23665], 24808, 25746, 25955, 26719, 29158, 29642,
+    29987, 31639, 32386, 34453, 35715, 36059, 37240, 39184, 26028, 26283,
+    27531, 20181, 20180, 20282, 20351, 21050, 21496, 21490, 21987, 22235,
+    [12064, 22763], 22987, 22985, 23039, [12070, 23376], 23629, 24066, 24107,
+    24535, 24605, 25351, [12096, 25903], 23388, 26031, 26045, 26088, 26525,
+    [12108, 27490], 27515, [12114, 27663], 29509, 31049, 31169, [12151, 31992],
+    32025, 32043, 32930, 33026, [12164, 33267], 35222, 35422, 35433, 35430,
+    35468, 35566, 36039, 36060, 38604, 39164, [12013, 27503], 20107, 20284,
+    20365, 20816, 23383, 23546, 24904, 25345, 26178, 27425, 28363, 27835,
+    29246, 29885, 30164, 30913, [12144, 31034], [12157, 32780], [12159, 32819],
+    [12163, 33258], 33940, 36766, 27728, [12229, 40575], 24335, 35672, 40235,
+    31482, 36600, 23437, 38635, 19971, 21489, 22519, 22833, 23241, 23460,
+    24713, 28287, 28422, 30142, 36074, 23455, 34048, 31712, 20594, 26612,
+    33437, 23649, 34122, 32286, 33294, 20889, 23556, 25448, 36198, 26012,
+    29038, 31038, 32023, 32773, 35613, [12190, 36554], 36974, 34503, 37034,
+    20511, 21242, 23610, 26451, 28796, 29237, 37196, 37320, 37675, 33509,
+    23490, 24369, 24825, 20027, 21462, 23432, [12095, 25163], 26417, 27530,
+    29417, 29664, 31278, 33131, 36259, 37202, [12216, 39318], 20754, 21463,
+    21610, 23551, 25480, 27193, 32172, 38656, 22234, 21454, 21608, 23447,
+    23601, 24030, 20462, 24833, 25342, 27954, 31168, 31179, 32066, 32333,
+    32722, 33261, [12168, 33311], 33936, 34886, 35186, 35728, 36468, 36655,
+    36913, 37195, 37228, 38598, 37276, 20160, 20303, 20805, [12055, 21313],
+    24467, 25102, 26580, 27713, 28171, 29539, 32294, 37325, 37507, 21460,
+    22809, 23487, 28113, 31069, 32302, 31899, 22654, 29087, 20986, 34899,
+    36848, 20426, 23803, 26149, 30636, 31459, 33308, 39423, 20934, 24490,
+    26092, 26991, 27529, 28147, 28310, 28516, 30462, 32020, 24033, 36981,
+    37255, 38918, 20966, 21021, 25152, 26257, 26329, 28186, 24246, 32210,
+    32626, 26360, 34223, 34295, 35576, 21161, 21465, [12069, 22899], 24207,
+    24464, 24661, 37604, 38500, 20663, 20767, 21213, 21280, 21319, 21484,
+    21736, 21830, 21809, 22039, 22888, 22974, 23100, 23477, 23558,
+    [12073, 23567], 23569, 23578, 24196, 24202, 24288, 24432, 25215, 25220,
+    25307, 25484, 25463, 26119, 26124, 26157, 26230, 26494, 26786, 27167,
+    27189, 27836, 28040, 28169, 28248, 28988, 28966, 29031, 30151, 30465,
+    30813, 30977, 31077, 31216, 31456, 31505, 31911, 32057, 32918, 33750,
+    33931, 34121, 34909, 35059, 35359, 35388, 35412, 35443, 35937, 36062,
+    37284, 37478, 37758, 37912, 38556, 38808, 19978, 19976, 19998, 20055,
+    20887, 21104, 22478, 22580, 22732, 23330, 24120, 24773, 25854, 26465,
+    26454, 27972, 29366, 30067, 31331, 33976, 35698, 37304, 37664, 22065,
+    22516, 39166, 25325, 26893, 27542, 29165, 32340, 32887, [12170, 33394],
+    35302, [12215, 39135], 34645, 36785, 23611, 20280, 20449, 20405, 21767,
+    23072, 23517, 23529, [12092, 24515], 24910, 25391, 26032, 26187, 26862,
+    27035, 28024, 28145, 30003, 30137, 30495, 31070, 31206, 32051,
+    [12162, 33251], 33455, 34218, 35242, 35386, [12189, 36523], [12191, 36763],
+    36914, 37341, 38663, [12040, 20154], 20161, 20995, 22645, 22764, 23563,
+    29978, 23613, 33102, 35338, 36805, 38499, 38765, 31525, 35535, 38920,
+    37218, 22259, 21416, 36887, 21561, 22402, 24101, 25512, [12116, 27700],
+    28810, 30561, 31883, 32736, 34928, 36930, 37204, 37648, 37656, 38543,
+    29790, 39620, 23815, 23913, 25968, 26530, 36264, 38619, 25454, 26441,
+    26905, 33733, 38935, 38592, 35070, 28548, 25722, [12072, 23544], 19990,
+    28716, 30045, 26159, 20932, 21046, 21218, 22995, 24449, 24615, 25104,
+    25919, 25972, 26143, 26228, 26866, 26646, 27491, 28165, 29298,
+    [12131, 29983], 30427, 31934, 32854, 22768, 35069, [11972, 35199], 35488,
+    35475, 35531, 36893, 37266, [11992, 38738], 38745, [12011, 25993], 31246,
+    33030, 38587, 24109, 24796, 25114, 26021, 26132, 26512, [12143, 30707],
+    31309, 31821, 32318, 33034, 36012, [12186, 36196], 36321, 36447, 30889,
+    20999, 25305, 25509, 25666, 25240, 35373, 31363, 31680, 35500, 38634,
+    32118, [12166, 33292], 34633, 20185, 20808, 21315, 21344, 23459, 23554,
+    23574, 24029, 25126, 25159, 25776, 26643, 26676, 27849, 27973, 27927,
+    26579, 28508, 29006, 29053, 26059, 31359, 31661, 32218, 32330, 32680,
+    33146, [12167, 33307], 33337, 34214, 35438, 36046, 36341, 36984, 36983,
+    37549, 37521, 38275, 39854, 21069, 21892, 28472, 28982, 20840, 31109,
+    32341, 33203, 31950, 22092, 22609, 23720, 25514, 26366, 26365, 26970,
+    29401, 30095, 30094, 30990, 31062, 31199, 31895, 32032, 32068, 34311,
+    35380, 38459, 36961, [12239, 40736], 20711, 21109, 21452, 21474, 20489,
+    21930, 22766, 22863, 29245, 23435, 23652, 21277, 24803, 24819, 25436,
+    25475, 25407, 25531, 25805, 26089, 26361, 24035, 27085, 27133, 28437,
+    29157, 20105, 30185, 30456, 31379, 31967, 32207, 32156, 32865, 33609,
+    33624, 33900, 33980, 34299, 35013, [12187, 36208], 36865, 36973, 37783,
+    38684, 39442, 20687, 22679, 24974, 33235, 34101, 36104, 36896, 20419,
+    20596, 21063, 21363, 24687, 25417, 26463, 28204, [12188, 36275], 36895,
+    20439, 23646, 36042, 26063, 32154, 21330, 34966, 20854, 25539, 23384,
+    23403, 23562, 25613, 26449, 36956, 20182, 22810, 22826, 27760, 35409,
+    21822, 22549, 22949, 24816, 25171, 26561, 33333, 26965, 38464, 39364,
+    39464, 20307, 22534, 23550, 32784, 23729, 24111, 24453, 24608, 24907,
+    25140, 26367, 27888, 28382, 32974, 33151, 33492, 34955, 36024, 36864,
+    36910, 38538, 40667, 39899, 20195, 21488, [12068, 22823], 31532, 37261,
+    38988, 40441, 28381, 28711, 21331, 21828, 23429, 25176, 25246, 25299,
+    27810, 28655, 29730, 35351, 37944, 28609, 35582, 33592, 20967, 34552,
+    21482, 21481, 20294, 36948, [12192, 36784], 22890, 33073, 24061, 31466,
+    36799, 26842, [12181, 35895], 29432, 40008, 27197, 35504, 20025, 21336,
+    22022, 22374, 25285, 25506, 26086, 27470, 28129, 28251, 28845, 30701,
+    31471, 31658, 32187, 32829, 32966, 34507, 35477, 37723, 22243, 22727,
+    24382, 26029, 26262, 27264, 27573, 30007, 35527, 20516, 30693, 22320,
+    24347, 24677, 26234, 27744, 30196, 31258, 32622, 33268, 34584, 36933,
+    39347, 31689, 30044, [12149, 31481], 31569, 33988, 36880, 31209, 31378,
+    33590, 23265, 30528, 20013, 20210, 23449, 24544, 25277, 26172, 26609,
+    27880, [12173, 34411], 34935, 35387, 37198, 37619, 39376, 27159, 28710,
+    29482, 33511, 33879, 36015, 19969, 20806, 20939, 21899, 23541, 24086,
+    24115, 24193, 24340, 24373, 24427, 24500, 25074, 25361, 26274, 26397,
+    28526, 29266, 30010, 30522, 32884, 33081, 33144, 34678, 35519, 35548,
+    36229, 36339, 37530, [11985, 12199, 38263], 38914, [12227, 40165], 21189,
+    25431, 30452, 26389, 27784, 29645, 36035, 37806, 38515, 27941, 22684,
+    26894, 27084, 36861, 37786, 30171, 36890, 22618, 26626, 25524, 27131,
+    20291, 28460, 26584, 36795, 34086, 32180, 37716, 26943, 28528, 22378,
+    22775, 23340, 32044, [12118, 29226], 21514, 37347, 40372, 20141, 20302,
+    20572, 20597, 21059, 35998, 21576, 22564, 23450, 24093, 24213, 24237,
+    24311, 24351, 24716, 25269, 25402, 25552, 26799, 27712, 30855, 31118,
+    31243, 32224, 33351, 35330, 35558, 36420, 36883, 37048, 37165, 37336,
+    [12237, 40718], 27877, 25688, 25826, 25973, 28404, 30340, 31515, 36969,
+    37841, 28346, 21746, 24505, 25764, 36685, 36845, 37444, 20856, 22635,
+    22825, 23637, 24215, 28155, 32399, 29980, 36028, 36578, 39003, 28857,
+    20253, 27583, 28593, [12133, 30000], 38651, 20814, 21520, 22581, 22615,
+    22956, 23648, 24466, [12099, 26007], 26460, 28193, 30331, 33759, 36077,
+    36884, 37117, 37709, 30757, 30778, 21162, 24230, [12063, 22303], 22900,
+    24594, 20498, 20826, 20908, 20941, [12049, 20992], 21776, 22612, 22616,
+    22871, 23445, 23798, 23947, 24764, 25237, 25645, 26481, 26691, 26812,
+    26847, 30423, 28120, 28271, 28059, 28783, 29128, 24403, 30168, 31095,
+    31561, 31572, 31570, 31958, 32113, 21040, 33891, 34153, 34276, 35342,
+    35588, [12182, 35910], 36367, 36867, 36879, 37913, 38518, 38957, 39472,
+    38360, 20685, 21205, 21516, 22530, 23566, 24999, 25758, 27934, 30643,
+    31461, 33012, 33796, 36947, 37509, 23776, 40199, 21311, 24471, 24499,
+    28060, 29305, 30563, 31167, 31716, 27602, 29420, 35501, 26627, 27233,
+    20984, 31361, 26932, 23626, 40182, 33515, 23493, [12195, 37193], 28702,
+    22136, 23663, 24775, 25958, 27788, 35930, 36929, 38931, 21585, 26311,
+    37389, 22856, 37027, 20869, 20045, 20970, 34201, 35598, 28760, 25466,
+    37707, 26978, 39348, 32260, 30071, 21335, 26976, 36575, 38627, 27741,
+    [12038, 20108], 23612, 24336, 36841, 21250, 36049, [12161, 32905], 34425,
+    24319, [12103, 26085], 20083, [12042, 20837], 22914, 23615, 38894, 20219,
+    22922, 24525, 35469, 28641, 31152, 31074, 23527, 33905, 29483, 29105,
+    24180, 24565, 25467, 25754, 29123, 31896, 20035, 24316, 20043, 22492,
+    22178, 24745, 28611, 32013, 33021, 33075, 33215, 36786, 35223, 34468,
+    24052, 25226, 25773, 35207, 26487, 27874, 27966, 29750, 30772, 23110,
+    32629, 33453, [12218, 39340], 20467, 24259, 25309, 25490, 25943, 26479,
+    30403, 29260, 32972, 32954, 36649, 37197, 20493, 22521, 23186, 26757,
+    26995, 29028, 29437, 36023, 22770, 36064, 38506, 36889, 34687, 31204,
+    30695, 33833, 20271, 21093, 21338, 25293, 26575, 27850, [12137, 30333],
+    31636, 31893, 33334, 34180, 36843, 26333, 28448, 29190, 32283, 33707,
+    39361, [12008, 40614], 20989, 31665, 30834, 31672, 32903, 31560, 27368,
+    24161, 32908, 30033, 30048, [12043, 20843], 37474, 28300, 30330, 37271,
+    39658, 20240, 32624, 25244, 31567, 38309, 40169, 22138, 22617, 34532,
+    38588, 20276, 21028, 21322, 21453, 21467, 24070, 25644, 26001, 26495,
+    27710, 27726, 29256, 29359, 29677, 30036, 32321, 33324, 34281, 36009,
+    31684, [12196, 37318], 29033, 38930, 39151, 25405, 26217, 30058, 30436,
+    30928, 34115, 34542, 21290, 21329, 21542, 22915, 24199, 24444, 24754,
+    25161, 25209, 25259, 26000, [12112, 27604], 27852, 30130, [12138, 30382],
+    30865, 31192, 32203, 32631, 32933, 34987, 35513, 36027, 36991,
+    [12206, 38750], [12214, 39131], 27147, 31800, 20633, 23614, 24494, 26503,
+    27608, 29749, 30473, 32654, [12240, 40763], 26570, 31255, 21305,
+    [12134, 30091], 39661, 24422, 33181, 33777, 32920, 24380, 24517, 30050,
+    31558, 36924, 26727, 23019, 23195, 32016, 30334, 35628, 20469, 24426,
+    27161, 27703, 28418, 29922, 31080, 34920, 35413, 35961, 24287, 25551,
+    30149, 31186, 33495, 37672, 37618, 33948, 34541, 39981, 21697, 24428,
+    25996, 27996, 28693, 36007, 36051, 38971, 25935, 29942, 19981, 20184,
+    22496, 22827, 23142, 23500, 20904, 24067, 24220, 24598, 25206, 25975,
+    26023, 26222, 28014, [12119, 29238], 31526, 33104, 33178, 33433, 35676,
+    36000, 36070, 36212, [12201, 38428], 38468, 20398, 25771, 27494, 33310,
+    33889, 34154, 37096, 23553, 26963, [12213, 39080], 33914, 34135, 20239,
+    21103, 24489, 24133, 26381, 31119, 33145, 35079, 35206, 28149, 24343,
+    25173, 27832, 20175, 29289, 39826, 20998, 21563, 22132, 22707, 24996,
+    25198, 28954, 22894, 31881, 31966, 32027, 38640, [12098, 25991], 32862,
+    19993, 20341, 20853, 22592, 24163, 24179, 24330, 26564, 20006, 34109,
+    38281, 38491, [12150, 31859], [12212, 38913], 20731, 22721, 30294, 30887,
+    21029, 30629, 34065, 31622, 20559, 22793, [12122, 29255], 31687, 32232,
+    36794, 36820, 36941, 20415, 21193, 23081, 24321, 38829, 20445, 33303,
+    37610, 22275, 25429, 27497, 29995, 35036, 36628, 31298, 21215, 22675,
+    24917, 25098, 26286, [11935, 27597], 31807, 33769, 20515, 20472, 21253,
+    21574, 22577, 22857, 23453, 23792, 23791, 23849, 24214, 25265, 25447,
+    25918, [12101, 26041], 26379, 27861, 27873, 28921, 30770, 32299, 32990,
+    33459, 33804, 34028, 34562, 35090, 35370, 35914, 37030, 37586, 39165,
+    40179, 40300, 20047, 20129, 20621, 21078, 22346, 22952, 24125,
+    {f: 2, c: 24536}, 25151, 26292, 26395, 26576, 26834, 20882, 32033, 32938,
+    33192, 35584, 35980, 36031, 37502, 38450, 21536, 38956, 21271, 20693,
+    [12056, 21340], 22696, 25778, 26420, 29287, 30566, 31302, 37350, 21187,
+    27809, 27526, 22528, 24140, 22868, 26412, 32763, 20961, 30406, 25705,
+    30952, 39764, [12231, 40635], 22475, 22969, 26151, 26522, 27598, 21737,
+    27097, 24149, 33180, 26517, 39850, 26622, 40018, 26717, 20134, 20451,
+    [12060, 21448], 25273, 26411, 27819, 36804, 20397, 32365, 40639, 19975,
+    24930, 28288, 28459, 34067, 21619, 26410, 39749, [11922, 24051], 31637,
+    23724, 23494, 34588, 28234, 34001, 31252, 33032, 22937, 31885,
+    [11936, 27665], 30496, 21209, 22818, 28961, 29279, [12141, 30683], 38695,
+    40289, 26891, 23167, 23064, 20901, 21517, 21629, 26126, 30431, 36855,
+    37528, 40180, 23018, 29277, 28357, 20813, 26825, 32191, 32236,
+    [12207, 38754], 40634, 25720, 27169, 33538, 22916, 23391, [12113, 27611],
+    29467, 30450, 32178, 32791, 33945, 20786, [12106, 26408], 40665,
+    [12140, 30446], 26466, 21247, 39173, 23588, 25147, 31870, 36016, 21839,
+    24758, 32011, [12200, 38272], 21249, 20063, 20918, 22812, 29242, 32822,
+    37326, 24357, [12142, 30690], 21380, 24441, 32004, 34220, 35379, 36493,
+    38742, 26611, 34222, 37971, 24841, 24840, 27833, 30290, 35565, 36664,
+    21807, 20305, 20778, 21191, 21451, 23461, 24189, 24736, 24962, 25558,
+    26377, 26586, 28263, 28044, {f: 2, c: 29494}, 30001, 31056, 35029, 35480,
+    36938, [12194, 37009], 37109, 38596, 34701, [12067, 22805], 20104, 20313,
+    19982, 35465, 36671, 38928, 20653, 24188, 22934, 23481, 24248, 25562,
+    25594, 25793, 26332, 26954, 27096, 27915, 28342, 29076, [12132, 29992],
+    31407, [12154, 32650], 32768, 33865, 33993, 35201, 35617, 36362, 36965,
+    38525, 39178, 24958, 25233, 27442, 27779, 28020, 32716, 32764, 28096,
+    32645, 34746, 35064, 26469, 33713, 38972, 38647, 27931, 32097, 33853,
+    37226, 20081, 21365, 23888, 27396, 28651, 34253, 34349, 35239, 21033,
+    21519, 23653, 26446, 26792, 29702, 29827, 30178, 35023, 35041,
+    [12197, 37324], 38626, 38520, 24459, 29575, [12148, 31435], 33870, 25504,
+    30053, 21129, 27969, 28316, 29705, 30041, 30827, 31890, 38534,
+    [12015, 31452], [12243, 40845], 20406, 24942, 26053, 34396, 20102, 20142,
+    20698, 20001, 20940, 23534, 26009, 26753, 28092, 29471, 30274, 30637,
+    31260, 31975, 33391, 35538, 36988, 37327, 38517, 38936, [12050, 21147],
+    32209, 20523, 21400, 26519, 28107, 29136, 29747, 33256, 36650, 38563,
+    40023, 40607, 29792, 22593, 28057, 32047, 39006, 20196, 20278, 20363,
+    20919, 21169, 23994, 24604, 29618, 31036, 33491, 37428, 38583, 38646,
+    38666, 40599, 40802, 26278, 27508, 21015, 21155, 28872, 35010, 24265,
+    24651, 24976, 28451, 29001, 31806, 32244, 32879, 34030, 36899, 37676,
+    21570, 39791, 27347, 28809, 36034, 36335, 38706, 21172, 23105, 24266,
+    24324, 26391, 27004, 27028, 28010, 28431, 29282, 29436, 31725,
+    [12156, 32769], 32894, 34635, 37070, 20845, 40595, 31108, 32907, 37682,
+    35542, 20525, 21644, 35441, 27498, 36036, 33031, 24785, 26528, 40434,
+    20121, 20120, 39952, 35435, 34241, 34152, 26880, 28286, 30871, 33109,
+    24332, 19984, 19989, 20010, 20017, [12034, 20022], 20028, [12035, 20031],
+    20034, 20054, 20056, 20098, [12037, 20101], 35947, 20106, 33298, 24333,
+    20110, {f: 2, c: 20126}, [12039, 20128], 20130, 20144, 20147, 20150, 20174,
+    20173, 20164, 20166, 20162, 20183, 20190, 20205, 20191, 20215, 20233,
+    20314, 20272, 20315, 20317, 20311, 20295, 20342, 20360, 20367, 20376,
+    20347, 20329, 20336, 20369, 20335, 20358, 20374, 20760, 20436, 20447,
+    20430, 20440, 20443, 20433, 20442, 20432, {f: 2, c: 20452}, 20506, 20520,
+    20500, 20522, 20517, 20485, 20252, 20470, 20513, 20521, 20524, 20478,
+    20463, 20497, 20486, 20547, 20551, 26371, 20565, 20560, 20552, 20570,
+    20566, 20588, 20600, 20608, 20634, 20613, 20660, 20658, {f: 2, c: 20681},
+    20659, 20674, 20694, 20702, 20709, 20717, 20707, 20718, 20729, 20725,
+    20745, {f: 2, c: 20737}, 20758, 20757, 20756, 20762, 20769, 20794, 20791,
+    20796, 20795, [12041, 20799], [11918, 20800], 20818, 20812, 20820, 20834,
+    31480, {f: 2, c: 20841}, 20846, 20864, [12044, 20866], 22232, 20876, 20873,
+    20879, 20881, 20883, 20885, [12045, 20886], 20900, 20902, 20898,
+    {f: 2, c: 20905}, [12046, 20907], 20915, {f: 2, c: 20913}, 20912, 20917,
+    20925, 20933, 20937, 20955, [12047, 20960], 34389, 20969, 20973, 20976,
+    [12048, 20981], 20990, 20996, 21003, 21012, 21006, 21031, 21034, 21038,
+    21043, 21049, 21071, 21060, {f: 2, c: 21067}, 21086, 21076, 21098, 21108,
+    21097, 21107, 21119, 21117, 21133, 21140, 21138, 21105, 21128, 21137,
+    36776, 36775, {f: 2, c: 21164}, 21180, 21173, 21185, 21197, 21207, 21214,
+    21219, 21222, 39149, 21216, 21235, 21237, 21240, [12051, 21241], 21254,
+    21256, 30008, 21261, 21264, 21263, [12052, 21269], [12053, 21274], 21283,
+    21295, 21297, 21299, [12054, 21304], 21312, 21318, 21317, 19991, 21321,
+    21325, 20950, 21342, [12057, 21353], 21358, 22808, 21371, 21367,
+    [12058, 21378], 21398, 21408, 21414, 21413, 21422, 21424, [12059, 21430],
+    21443, 31762, 38617, 21471, 26364, 29166, 21486, 21480, 21485, 21498,
+    21505, 21565, 21568, {f: 2, c: 21548}, 21564, 21550, 21558, 21545, 21533,
+    21582, 21647, 21621, 21646, 21599, 21617, 21623, 21616, 21650, 21627,
+    21632, 21622, 21636, 21648, 21638, 21703, 21666, 21688, 21669, 21676,
+    21700, 21704, 21672, 21675, 21698, 21668, 21694, 21692, 21720,
+    {f: 2, c: 21733}, 21775, 21780, 21757, 21742, 21741, 21754, 21730, 21817,
+    21824, 21859, 21836, 21806, 21852, 21829, {f: 2, c: 21846}, 21816, 21811,
+    21853, 21913, 21888, 21679, 21898, 21919, 21883, 21886, 21912, 21918,
+    21934, 21884, 21891, 21929, 21895, 21928, 21978, 21957, 21983, 21956,
+    21980, 21988, 21972, 22036, 22007, 22038, 22014, 22013, 22043, 22009,
+    22094, 22096, 29151, 22068, 22070, 22066, 22072, 22123, 22116, 22063,
+    22124, 22122, 22150, 22144, 22154, 22176, 22164, 22159, 22181, 22190,
+    22198, 22196, 22210, 22204, 22209, 22211, 22208, 22216, 22222, 22225,
+    22227, [12062, 22231], 22254, 22265, 22272, 22271, 22276, 22281, 22280,
+    22283, 22285, 22291, 22296, 22294, 21959, 22300, 22310, {f: 2, c: 22327},
+    22350, 22331, 22336, 22351, 22377, 22464, 22408, 22369, 22399, 22409,
+    22419, 22432, 22451, 22436, 22442, 22448, 22467, 22470, 22484,
+    {f: 2, c: 22482}, 22538, 22486, 22499, 22539, 22553, 22557, 22642, 22561,
+    22626, 22603, 22640, 27584, 22610, 22589, 22649, 22661, 22713, 22687,
+    22699, 22714, 22750, 22715, 22712, 22702, 22725, 22739, 22737, 22743,
+    22745, 22744, 22757, 22748, 22756, 22751, 22767, 22778, 22777,
+    {f: 3, c: 22779}, [12065, 22786], [12066, 22794], 22800, 22811, 26790,
+    22821, {f: 2, c: 22828}, 22834, 22840, 22846, 31442, 22869, 22864, 22862,
+    22874, 22872, 22882, 22880, 22887, 22892, 22889, 22904, 22913, 22941,
+    20318, 20395, 22947, 22962, 22982, 23016, 23004, 22925, {f: 2, c: 23001},
+    23077, 23071, 23057, 23068, 23049, 23066, 23104, 23148, 23113,
+    {f: 2, c: 23093}, 23138, 23146, 23194, 23228, 23230, 23243, 23234, 23229,
+    23267, 23255, 23270, 23273, 23254, {f: 2, c: 23290}, 23308, 23307, 23318,
+    23346, 23248, 23338, 23350, 23358, 23363, 23365, 23360, 23377, 23381,
+    {f: 2, c: 23386}, 23397, 23401, 23408, 23411, 23413, 23416, 25992, 23418,
+    [12071, 23424], 23427, 23462, 23480, 23491, 23495, 23497, 23508, 23504,
+    23524, 23526, 23522, 23518, 23525, 23531, 23536, 23542, 23539, 23557,
+    {f: 2, c: 23559}, 23565, 23571, 23584, [11920, 12074, 23586], 23592,
+    [12075, 23608], 23609, 23617, 23622, 23630, 23635, 23632, 23631, 23409,
+    23660, [12076, 23662], 20066, 23670, 23673, 23692, 23697, 23700, 22939,
+    23723, 23739, 23734, 23740, 23735, 23749, 23742, 23751, 23769, 23785,
+    23805, 23802, 23789, 23948, 23786, 23819, 23829, 23831, 23900, 23839,
+    23835, 23825, 23828, 23842, 23834, 23833, 23832, 23884, 23890, 23886,
+    23883, 23916, 23923, 23926, 23943, 23940, 23938, 23970, 23965, 23980,
+    23982, 23997, 23952, 23991, 23996, 24009, 24013, 24019, 24018, 24022,
+    [12078, 24027], 24043, 24050, 24053, 24075, 24090, 24089, 24081, 24091,
+    {f: 2, c: 24118}, 24132, 24131, 24128, 24142, 24151, 24148, 24159, 24162,
+    24164, 24135, {f: 2, c: 24181}, [11923, 12083, 24186], 40636,
+    [12084, 24191], 24224, {f: 2, c: 24257}, 24264, 24272, 24271, 24278, 24291,
+    24285, {f: 2, c: 24282}, 24290, 24289, {f: 2, c: 24296}, 24300, 24305,
+    24307, 24304, [12085, 24308], 24312, [12086, 24318], 24323, 24329, 24413,
+    24412, [12087, 24331], 24337, 24342, 24361, 24365, 24376, 24385, 24392,
+    24396, 24398, 24367, [11924, 24401], {f: 2, c: 24406}, 24409,
+    [12090, 24417], 24429, [12091, 24435], 24439, 24451, 24450, 24447, 24458,
+    24456, 24465, 24455, 24478, 24473, 24472, 24480, 24488, 24493, 24508,
+    24534, 24571, 24548, 24568, 24561, 24541, 24755, 24575, 24609, 24672,
+    24601, 24592, 24617, 24590, 24625, 24603, 24597, 24619, 24614, 24591,
+    24634, 24666, 24641, 24682, 24695, 24671, 24650, 24646, 24653, 24675,
+    24643, 24676, 24642, 24684, 24683, 24665, 24705, 24717, 24807, 24707,
+    24730, 24708, 24731, {f: 2, c: 24726}, 24722, 24743, 24715, 24801, 24760,
+    24800, 24787, 24756, 24560, 24765, 24774, 24757, 24792, 24909, 24853,
+    24838, {f: 2, c: 24822}, 24832, 24820, 24826, 24835, 24865, 24827, 24817,
+    {f: 2, c: 24845}, 24903, 24894, 24872, 24871, 24906, 24895, 24892, 24876,
+    24884, 24893, 24898, 24900, 24947, 24951, {f: 3, c: 24920}, 24939, 24948,
+    24943, 24933, 24945, 24927, 24925, 24915, 24949, 24985, 24982, 24967,
+    25004, 24980, 24986, 24970, 24977, 25003, 25006, 25036, 25034, 25033,
+    25079, 25032, 25027, 25030, 25018, 25035, 32633, 25037, 25062, 25059,
+    25078, 25082, 25076, 25087, 25085, 25084, 25086, 25088, [12093, 25096],
+    25097, 25101, 25100, 25108, 25115, 25118, 25121, 25130, 25134, 25136,
+    {f: 2, c: 25138}, 25153, 25166, 25182, 25187, 25179, 25184, 25192, 25212,
+    25218, 25225, 25214, {f: 2, c: 25234}, 25238, 25300, 25219, 25236, 25303,
+    25297, 25275, 25295, 25343, 25286, 25812, 25288, 25308, 25292, 25290,
+    25282, 25287, 25243, 25289, 25356, 25326, 25329, 25383, 25346, 25352,
+    25327, 25333, 25424, 25406, 25421, 25628, 25423, 25494, 25486, 25472,
+    25515, 25462, 25507, 25487, 25481, 25503, 25525, 25451, 25449, 25534,
+    25577, 25536, 25542, 25571, 25545, 25554, 25590, 25540, 25622, 25652,
+    25606, 25619, 25638, 25654, 25885, 25623, 25640, 25615, 25703, 25711,
+    25718, 25678, 25898, 25749, 25747, 25765, 25769, 25736, 25788, 25818,
+    25810, 25797, 25799, 25787, 25816, 25794, 25841, 25831, 33289,
+    {f: 2, c: 25824}, 25260, 25827, 25839, 25900, 25846, 25844, 25842, 25850,
+    25856, 25853, 25880, 25884, 25861, 25892, 25891, 25899, [12097, 25908],
+    [11929, 25909], 25911, 25910, 25912, 30027, 25928, 25942, 25941, 25933,
+    25944, 25950, 25949, 25970, 25976, {f: 2, c: 25986}, 35722, 26011, 26015,
+    26027, 26039, 26051, 26054, 26049, 26052, 26060, 26066, 26075, 26073,
+    [12102, 26080], [11931, 26081], 26097, 26482, 26122, 26115, 26107, 26483,
+    {f: 2, c: 26165}, 26164, 26140, 26191, 26180, 26185, 26177, 26206, 26205,
+    26212, {f: 2, c: 26215}, 26207, 26210, 26224, 26243, 26248, 26254, 26249,
+    26244, 26264, 26269, 26305, 26297, 26313, 26302, 26300, 26308, 26296,
+    26326, 26330, 26336, 26175, 26342, 26345, [12104, 26352], 26357, 26359,
+    26383, 26390, 26398, {f: 2, c: 26406}, 38712, 26414, 26431, 26422, 26433,
+    26424, 26423, 26438, 26462, 26464, 26457, {f: 2, c: 26467}, 26505, 26480,
+    26537, 26492, 26474, 26508, 26507, 26534, 26529, 26501, 26551, 26607,
+    26548, 26604, 26547, 26601, 26552, 26596, 26590, 26589, 26594, 26606,
+    26553, 26574, 26566, 26599, 27292, 26654, 26694, 26665, 26688, 26701,
+    26674, 26702, 26803, 26667, 26713, 26723, 26743, 26751, 26783, 26767,
+    26797, 26772, 26781, 26779, 26755, 27310, 26809, 26740, 26805, 26784,
+    26810, 26895, 26765, 26750, 26881, 26826, 26888, 26840, 26914, 26918,
+    26849, 26892, 26829, 26836, 26855, 26837, 26934, 26898, 26884, 26839,
+    26851, 26917, 26873, 26848, 26863, 26920, 26922, 26906, 26915, 26913,
+    26822, 27001, 26999, 26972, 27000, 26987, 26964, 27006, 26990, 26937,
+    26996, 26941, 26969, 26928, 26977, 26974, 26973, 27009, 26986, 27058,
+    27054, 27088, 27071, 27073, 27091, 27070, 27086, 23528, 27082, 27101,
+    27067, 27075, 27047, 27182, 27025, 27040, 27036, 27029, 27060, 27102,
+    27112, 27138, 27163, 27135, 27402, 27129, 27122, 27111, 27141, 27057,
+    27166, 27117, 27156, 27115, 27146, 27154, 27329, 27171, 27155, 27204,
+    27148, 27250, 27190, 27256, 27207, 27234, 27225, 27238, 27208, 27192,
+    27170, 27280, 27277, 27296, 27268, {f: 2, c: 27298}, 27287, 34327, 27323,
+    27331, 27330, 27320, 27315, 27308, 27358, 27345, 27359, 27306, 27354,
+    27370, 27387, 27397, 34326, 27386, 27410, 27414, 39729, 27423, 27448,
+    27447, 30428, 27449, 39150, 27463, 27459, 27465, 27472, 27481, 27476,
+    27483, 27487, 27489, 27512, [12109, 27513], {f: 2, c: 27519}, 27524, 27523,
+    27533, 27544, 27541, 27550, 27556, {f: 2, c: 27562}, 27567, 27570, 27569,
+    [12110, 27571], 27575, 27580, 27590, [12111, 27595], 27603, 27615, 27628,
+    27627, 27635, 27631, 40638, 27656, 27667, [12115, 27668], 27675, 27684,
+    27683, 27742, 27733, 27746, 27754, 27778, 27789, 27802, 27777, 27803,
+    27774, 27752, 27763, 27794, 27792, 27844, 27889, 27859, 27837, 27863,
+    27845, 27869, 27822, 27825, 27838, 27834, 27867, 27887, 27865, 27882,
+    27935, 34893, 27958, 27947, 27965, 27960, 27929, 27957, 27955, 27922,
+    27916, 28003, 28051, 28004, 27994, 28025, 27993, 28046, 28053, 28644,
+    28037, 28153, 28181, 28170, 28085, 28103, 28134, 28088, 28102, 28140,
+    28126, 28108, 28136, 28114, 28101, 28154, 28121, 28132, 28117, 28138,
+    28142, 28205, 28270, 28206, 28185, 28274, 28255, 28222, 28195, 28267,
+    28203, 28278, 28237, 28191, 28227, 28218, 28238, 28196, 28415, 28189,
+    28216, 28290, 28330, 28312, 28361, 28343, 28371, 28349, 28335, 28356,
+    28338, {f: 2, c: 28372}, 28303, 28325, 28354, 28319, 28481, 28433, 28748,
+    28396, 28408, 28414, 28479, 28402, 28465, 28399, 28466, 28364, 28478,
+    28435, 28407, 28550, 28538, 28536, 28545, 28544, 28527, 28507, 28659,
+    28525, 28546, 28540, 28504, 28558, 28561, 28610, 28518, 28595, 28579,
+    28577, 28580, 28601, 28614, 28586, 28639, 28629, 28652, 28628, 28632,
+    28657, 28654, 28635, 28681, 28683, 28666, 28689, 28673, 28687, 28670,
+    28699, 28698, 28532, 28701, 28696, 28703, 28720, 28734, 28722, 28753,
+    28771, 28825, 28818, 28847, 28913, 28844, 28856, 28851, 28846, 28895,
+    28875, 28893, 28889, 28937, 28925, 28956, 28953, 29029, 29013, 29064,
+    29030, 29026, 29004, 29014, 29036, 29071, 29179, 29060, 29077, 29096,
+    29100, 29143, 29113, 29118, 29138, 29129, 29140, 29134, 29152, 29164,
+    29159, 29173, 29180, 29177, 29183, 29197, 29200, 29211, 29224, 29229,
+    29228, 29232, 29234, [12120, 29243], 29244, [12121, 29247], 29248, 29254,
+    29259, 29272, 29300, 29310, 29314, 29313, 29319, 29330, 29334, 29346,
+    29351, 29369, 29362, 29379, 29382, 29380, 29390, 29394, 29410,
+    {f: 2, c: 29408}, 29433, 29431, 20495, 29463, 29450, 29468, 29462, 29469,
+    29492, 29487, 29481, 29477, 29502, {f: 2, c: 29518}, 40664, 29527, 29546,
+    29544, 29552, 29560, 29557, 29563, 29562, 29640, 29619, 29646, 29627,
+    29632, 29669, 29678, 29662, 29858, 29701, 29807, 29733, 29688, 29746,
+    29754, 29781, 29759, 29791, 29785, 29761, 29788, 29801, 29808, 29795,
+    29802, 29814, 29822, 29835, 29854, 29863, 29898, 29903, 29908, 29681,
+    29920, 29923, 29927, 29929, 29934, 29938, {f: 2, c: 29936}, 29944, 29943,
+    29956, 29955, 29957, 29964, 29966, 29965, 29973, 29971, 29982, 29990,
+    29996, 30012, 30020, 30029, 30026, 30025, 30043, 30022, 30042, 30057,
+    30052, 30055, 30059, 30061, 30072, 30070, {f: 2, c: 30086}, 30068, 30090,
+    30089, 30082, 30100, 30106, 30109, 30117, 30115, 30146, 30131, 30147,
+    30133, 30141, 30136, 30140, 30129, 30157, 30154, 30162, 30169, 30179,
+    30174, {f: 2, c: 30206}, 30204, 30209, 30192, 30202, {f: 2, c: 30194},
+    30219, 30221, 30217, 30239, 30247, {f: 3, c: 30240}, 30244, 30260, 30256,
+    30267, {f: 2, c: 30279}, 30278, 30300, 30296, {f: 2, c: 30305},
+    {f: 3, c: 30312}, 30311, 30316, 30320, 30322, [12136, 30326], 30328, 30332,
+    30336, 30339, 30344, 30347, 30350, 30358, 30355, {f: 2, c: 30361}, 30384,
+    30388, {f: 3, c: 30392}, 30402, 30413, 30422, 30418, 30430, 30433, 30437,
+    30439, 30442, 34351, 30459, 30472, 30471, 30468, 30505, 30500, 30494,
+    {f: 2, c: 30501}, 30491, {f: 2, c: 30519}, 30535, 30554, 30568, 30571,
+    30555, 30565, 30591, 30590, 30585, 30606, 30603, 30609, 30624, 30622,
+    30640, 30646, 30649, 30655, {f: 2, c: 30652}, 30651, 30663, 30669, 30679,
+    30682, 30684, 30691, 30702, 30716, 30732, 30738, 31014, 30752, 31018,
+    30789, 30862, 30836, 30854, 30844, 30874, 30860, 30883, 30901, 30890,
+    30895, 30929, 30918, 30923, 30932, 30910, 30908, 30917, 30922, 30956,
+    30951, 30938, 30973, 30964, 30983, 30994, 30993, 31001, 31020, 31019,
+    31040, 31072, 31063, 31071, 31066, 31061, 31059, 31098, 31103, 31114,
+    31133, 31143, 40779, 31146, 31150, 31155, {f: 2, c: 31161}, 31177, 31189,
+    31207, 31212, 31201, 31203, 31240, 31245, {f: 2, c: 31256}, 31264, 31263,
+    31104, 31281, 31291, 31294, 31287, 31299, 31319, 31305, {f: 2, c: 31329},
+    31337, 40861, 31344, 31353, 31357, 31368, 31383, 31381, 31384, 31382,
+    31401, 31432, 31408, 31414, 31429, 31428, 31423, 36995, 31431, 31434,
+    31437, 31439, 31445, 31443, {f: 2, c: 31449}, 31453, {f: 2, c: 31457},
+    31462, 31469, 31472, 31490, 31503, 31498, 31494, 31539, {f: 2, c: 31512},
+    31518, 31541, 31528, 31542, 31568, 31610, 31492, 31565, 31499, 31564,
+    31557, 31605, 31589, 31604, 31591, {f: 2, c: 31600}, 31596, 31598, 31645,
+    31640, 31647, 31629, 31644, 31642, 31627, 31634, 31631, 31581, 31641,
+    31691, 31681, 31692, 31695, 31668, 31686, 31709, 31721, 31761, 31764,
+    31718, 31717, 31840, 31744, 31751, 31763, 31731, 31735, 31767, 31757,
+    31734, 31779, 31783, 31786, 31775, 31799, 31787, 31805, 31820, 31811,
+    31828, 31823, 31808, 31824, 31832, 31839, 31844, 31830, 31845, 31852,
+    31861, 31875, 31888, 31908, 31917, 31906, 31915, 31905, 31912, 31923,
+    31922, 31921, 31918, 31929, 31933, 31936, 31941, 31938, 31960, 31954,
+    31964, 31970, 39739, 31983, 31986, 31988, 31990, 31994, 32006, 32002,
+    32028, 32021, 32010, 32069, 32075, 32046, 32050, 32063, 32053, 32070,
+    32115, 32086, 32078, 32114, 32104, 32110, 32079, 32099, 32147, 32137,
+    32091, 32143, 32125, 32155, 32186, 32174, 32163, 32181, 32199, 32189,
+    32171, 32317, 32162, 32175, 32220, 32184, 32159, 32176, 32216, 32221,
+    32228, 32222, 32251, 32242, 32225, 32261, 32266, 32291, 32289, 32274,
+    32305, 32287, 32265, 32267, 32290, 32326, 32358, 32315, 32309, 32313,
+    32323, 32311, 32306, 32314, 32359, 32349, 32342, 32350, {f: 2, c: 32345},
+    32377, 32362, 32361, 32380, 32379, 32387, 32213, 32381, 36782, 32383,
+    {f: 2, c: 32392}, 32396, 32402, 32400, {f: 2, c: 32403}, 32406, 32398,
+    {f: 2, c: 32411}, 32568, 32570, 32581, {f: 3, c: 32588}, 32592,
+    [12153, 32593], 32597, 32596, 32600, {f: 2, c: 32607}, {f: 2, c: 32616},
+    32615, 32632, 32642, 32646, 32643, 32648, 32647, 32652, 32660, 32670,
+    32669, 32666, 32675, 32687, 32690, 32697, 32686, 32694, 32696, 35697,
+    {f: 2, c: 32709}, 32714, 32725, 32724, 32737, 32742, 32745, 32755, 32761,
+    39132, 32774, 32772, 32779, [12158, 32786], {f: 2, c: 32792}, 32796, 32801,
+    32808, 32831, 32827, 32842, 32838, 32850, 32856, 32858, 32863, 32866,
+    32872, 32883, 32882, 32880, 32886, 32889, 32893, [12160, 32895], 32900,
+    32902, 32901, 32923, 32915, 32922, 32941, 20880, 32940, 32987, 32997,
+    32985, 32989, 32964, 32986, 32982, 33033, 33007, 33009, 33051, 33065,
+    33059, 33071, 33099, 38539, 33094, 33086, 33107, 33105, 33020, 33137,
+    33134, {f: 2, c: 33125}, 33140, 33155, 33160, 33162, 33152, 33154, 33184,
+    33173, 33188, 33187, 33119, 33171, 33193, 33200, 33205, 33214, 33208,
+    33213, 33216, 33218, 33210, 33225, 33229, 33233, 33241, 33240, 33224,
+    33242, {f: 2, c: 33247}, 33255, {f: 2, c: 33274}, 33278, {f: 2, c: 33281},
+    33285, 33287, 33290, 33293, 33296, 33302, 33321, 33323, 33336, 33331,
+    33344, 33369, 33368, 33373, 33370, 33375, 33380, 33378, 33384,
+    {f: 2, c: 33386}, 33326, 33393, 33399, [12171, 33400], 33406, 33421, 33426,
+    33451, 33439, 33467, 33452, 33505, 33507, 33503, 33490, 33524, 33523,
+    33530, 33683, 33539, 33531, 33529, 33502, 33542, 33500, 33545, 33497,
+    33589, 33588, 33558, 33586, 33585, 33600, 33593, 33616, 33605, 33583,
+    33579, {f: 2, c: 33559}, 33669, 33690, 33706, 33695, 33698, 33686, 33571,
+    33678, 33671, 33674, 33660, 33717, 33651, 33653, 33696, 33673, 33704,
+    33780, 33811, 33771, 33742, 33789, 33795, 33752, 33803, 33729, 33783,
+    33799, 33760, 33778, 33805, 33826, 33824, 33725, 33848, 34054, 33787,
+    33901, 33834, 33852, 34138, 33924, 33911, 33899, 33965, 33902, 33922,
+    33897, 33862, 33836, 33903, 33913, 33845, 33994, 33890, 33977, 33983,
+    33951, 34009, 33997, 33979, 34010, 34000, 33985, 33990, 34006, 33953,
+    34081, 34047, 34036, {f: 2, c: 34071}, 34092, 34079, 34069, 34068, 34044,
+    34112, 34147, 34136, 34120, 34113, 34306, 34123, 34133, 34176, 34212,
+    34184, 34193, 34186, 34216, 34157, 34196, 34203, 34282, 34183, 34204,
+    34167, 34174, 34192, 34249, 34234, 34255, 34233, 34256, 34261, 34269,
+    34277, 34268, 34297, 34314, 34323, 34315, 34302, 34298, 34310, 34338,
+    34330, 34352, 34367, [12172, 34381], 20053, 34388, 34399, 34407, 34417,
+    34451, 34467, {f: 2, c: 34473}, {f: 2, c: 34443}, 34486, 34479, 34500,
+    34502, 34480, 34505, 34851, 34475, 34516, 34526, 34537, 34540, 34527,
+    34523, 34543, 34578, 34566, 34568, 34560, 34563, 34555, 34577, 34569,
+    34573, 34553, 34570, 34612, 34623, 34615, 34619, 34597, 34601, 34586,
+    34656, 34655, 34680, 34636, 34638, 34676, 34647, 34664, 34670, 34649,
+    34643, 34659, 34666, 34821, 34722, 34719, 34690, 34735, 34763, 34749,
+    34752, 34768, 38614, 34731, 34756, 34739, 34759, 34758, 34747, 34799,
+    34802, 34784, 34831, 34829, 34814, {f: 2, c: 34806}, 34830, 34770, 34833,
+    34838, 34837, 34850, 34849, 34865, 34870, 34873, 34855, 34875, 34884,
+    34882, 34898, 34905, 34910, 34914, 34923, 34945, 34942, 34974, 34933,
+    34941, 34997, 34930, 34946, 34967, 34962, 34990, 34969, 34978, 34957,
+    34980, 34992, 35007, 34993, {f: 2, c: 35011}, 35028, {f: 2, c: 35032},
+    35037, 35065, 35074, 35068, 35060, 35048, 35058, 35076, 35084, 35082,
+    35091, 35139, 35102, 35109, {f: 2, c: 35114}, 35137, 35140, 35131, 35126,
+    35128, 35148, 35101, 35168, 35166, 35174, 35172, 35181, 35178, 35183,
+    35188, 35191, [12177, 35198], 35203, 35208, 35210, 35219, 35224, 35233,
+    35241, 35238, 35244, 35247, 35250, 35258, 35261, {f: 2, c: 35263}, 35290,
+    {f: 2, c: 35292}, 35303, 35316, 35320, 35331, 35350, 35344, 35340, 35355,
+    35357, 35365, 35382, 35393, 35419, 35410, 35398, 35400, 35452, 35437,
+    35436, 35426, 35461, 35458, 35460, 35496, 35489, 35473, {f: 2, c: 35493},
+    35482, 35491, 35524, 35533, 35522, 35546, 35563, 35571, 35559, 35556,
+    35569, 35604, 35552, 35554, 35575, 35550, 35547, 35596, 35591, 35610,
+    35553, 35606, 35600, 35607, 35616, 35635, 38827, 35622, 35627, 35646,
+    35624, 35649, 35660, 35663, 35662, 35657, 35670, 35675, 35674, 35691,
+    35679, 35692, 35695, 35700, 35709, 35712, 35724, 35726, {f: 2, c: 35730},
+    35734, {f: 2, c: 35737}, 35898, 35905, 35903, 35912, 35916, 35918, 35920,
+    [12183, 35925], 35938, 35948, [12184, 35960], 35962, 35970, 35977, 35973,
+    35978, {f: 2, c: 35981}, 35988, 35964, 35992, 25117, 36013, 36010, 36029,
+    {f: 2, c: 36018}, 36014, 36022, 36040, 36033, 36068, 36067, 36058, 36093,
+    {f: 2, c: 36090}, {f: 2, c: 36100}, 36106, 36103, 36111, 36109, 36112,
+    40782, 36115, 36045, 36116, 36118, 36199, 36205, 36209, 36211, 36225,
+    36249, 36290, 36286, 36282, 36303, 36314, 36310, 36300, 36315, 36299,
+    {f: 2, c: 36330}, 36319, 36323, 36348, {f: 2, c: 36360}, 36351,
+    {f: 2, c: 36381}, 36368, 36383, 36418, 36405, 36400, 36404, 36426, 36423,
+    36425, 36428, 36432, 36424, 36441, 36452, 36448, 36394, 36451, 36437,
+    36470, 36466, 36476, 36481, 36487, 36485, 36484, 36491, 36490, 36499,
+    36497, 36500, 36505, 36522, 36513, 36524, 36528, 36550, 36529, 36542,
+    36549, 36552, 36555, 36571, 36579, 36604, 36603, 36587, 36606, 36618,
+    36613, 36629, 36626, 36633, 36627, 36636, 36639, 36635, 36620, 36646,
+    36659, 36667, 36665, 36677, 36674, 36670, 36684, 36681, 36678, 36686,
+    36695, 36700, {f: 3, c: 36706}, 36764, 36767, 36771, 36781, 36783, 36791,
+    36826, 36837, 36834, 36842, 36847, 36999, 36852, 36869, {f: 2, c: 36857},
+    36881, 36885, 36897, 36877, 36894, 36886, 36875, 36903, 36918, 36917,
+    36921, 36856, {f: 4, c: 36943}, 36878, 36937, 36926, 36950, 36952, 36958,
+    36968, 36975, 36982, 38568, 36978, 36994, 36989, 36993, 36992, 37002,
+    37001, 37007, 37032, 37039, 37041, 37045, 37090, 37092, 25160, 37083,
+    37122, 37138, 37145, 37170, 37168, 37194, 37206, 37208, 37219, 37221,
+    37225, 37235, 37234, 37259, 37257, 37250, 37282, 37291, 37295, 37290,
+    37301, 37300, 37306, {f: 2, c: 37312}, 37321, 37323, 37328, 37334, 37343,
+    37345, 37339, 37372, {f: 2, c: 37365}, 37406, 37375, 37396, 37420, 37397,
+    37393, 37470, 37463, 37445, 37449, 37476, 37448, 37525, 37439, 37451,
+    37456, 37532, 37526, 37523, 37531, 37466, 37583, 37561, 37559, 37609,
+    37647, 37626, 37700, 37678, 37657, 37666, 37658, 37667, 37690, 37685,
+    37691, 37724, 37728, 37756, 37742, 37718, 37808, {f: 2, c: 37804}, 37780,
+    37817, {f: 2, c: 37846}, 37864, 37861, 37848, 37827, 37853, 37840, 37832,
+    37860, 37914, 37908, 37907, 37891, 37895, 37904, 37942, 37931, 37941,
+    37921, 37946, 37953, 37970, 37956, 37979, 37984, 37986, 37982, 37994,
+    37417, 38000, 38005, 38007, 38013, 37978, 38012, 38014, 38017, 38015,
+    38274, 38279, 38282, 38292, 38294, {f: 2, c: 38296}, 38304, 38312, 38311,
+    38317, 38332, 38331, 38329, 38334, 38346, 28662, 38339, 38349, 38348,
+    38357, 38356, 38358, 38364, 38369, 38373, 38370, 38433, 38440,
+    {f: 2, c: 38446}, 38466, 38476, 38479, 38475, 38519, 38492, 38494, 38493,
+    38495, 38502, 38514, 38508, 38541, 38552, 38549, 38551, 38570, 38567,
+    {f: 2, c: 38577}, 38576, 38580, [12202, 38582], 38584, [12203, 38585],
+    38606, 38603, 38601, 38605, 35149, 38620, 38669, 38613, 38649, 38660,
+    38662, 38664, 38675, 38670, 38673, 38671, 38678, 38681, 38692, 38698,
+    38704, 38713, {f: 2, c: 38717}, 38724, 38726, 38728, 38722, 38729, 38748,
+    38752, 38756, 38758, 38760, 21202, 38763, 38769, 38777, 38789, 38780,
+    38785, 38778, 38790, 38795, {f: 2, c: 38799}, 38812, 38824, 38822, 38819,
+    {f: 2, c: 38835}, 38851, 38854, 38856, [12209, 38859], 38876,
+    [12210, 38893], 40783, 38898, 31455, 38902, 38901, 38927, 38924, 38968,
+    38948, 38945, 38967, 38973, 38982, 38991, 38987, 39019, {f: 3, c: 39023},
+    39028, 39027, 39082, 39087, 39089, 39094, 39108, 39107, 39110, 39145,
+    39147, 39171, 39177, 39186, 39188, 39192, 39201, {f: 2, c: 39197}, 39204,
+    39200, 39212, 39214, {f: 2, c: 39229}, 39234, 39241, 39237, 39248, 39243,
+    {f: 2, c: 39249}, 39244, 39253, {f: 2, c: 39319}, 39333, {f: 2, c: 39341},
+    39356, 39391, 39387, 39389, 39384, 39377, {f: 2, c: 39405},
+    {f: 2, c: 39409}, 39419, 39416, 39425, 39439, 39429, 39394, 39449, 39467,
+    39479, 39493, 39490, 39488, 39491, 39486, 39509, 39501, 39515, 39511,
+    39519, 39522, 39525, 39524, 39529, 39531, 39530, 39597, 39600, 39612,
+    39616, 39631, 39633, {f: 2, c: 39635}, 39646, [12221, 39647],
+    {f: 2, c: 39650}, 39654, 39663, 39659, 39662, 39668, 39665, 39671, 39675,
+    39686, 39704, 39706, 39711, {f: 2, c: 39714}, [12222, 39717],
+    {f: 4, c: 39719}, 39726, [12223, 39727], [12224, 39730], 39748, 39747,
+    39759, {f: 2, c: 39757}, 39761, 39768, 39796, 39827, 39811, 39825,
+    {f: 2, c: 39830}, {f: 2, c: 39839}, 39848, 39860, 39872, 39882, 39865,
+    39878, 39887, {f: 2, c: 39889}, 39907, 39906, 39908, 39892, 39905, 39994,
+    39922, 39921, 39920, 39957, 39956, 39945, 39955, 39948, 39942, 39944,
+    39954, 39946, 39940, 39982, 39963, 39973, 39972, 39969, 39984, 40007,
+    39986, 40006, 39998, 40026, 40032, 40039, 40054, 40056, 40167, 40172,
+    40176, 40201, 40200, 40171, 40195, 40198, 40234, 40230, 40367, 40227,
+    40223, 40260, 40213, 40210, 40257, 40255, 40254, 40262, 40264,
+    {f: 2, c: 40285}, 40292, 40273, 40272, 40281, 40306, 40329, 40327, 40363,
+    40303, 40314, 40346, 40356, 40361, 40370, 40388, 40385, 40379, 40376,
+    40378, 40390, 40399, 40386, 40409, 40403, 40440, 40422, 40429, 40431,
+    40445, {f: 2, c: 40474}, 40478, [12228, 40565], 40569, 40573, 40577, 40584,
+    {f: 2, c: 40587}, 40594, 40597, 40593, 40605, [12230, 40613], 40617, 40632,
+    40618, 40621, 38753, 40652, {f: 3, c: 40654}, 40660, 40668, 40670, 40669,
+    40672, 40677, 40680, 40687, 40692, {f: 2, c: 40694}, [12235, 40697],
+    {f: 2, c: 40699}, [12236, 40701], {f: 2, c: 40711}, 30391, 40725, 40737,
+    40748, 40766, [12241, 40778], [12242, 40786], 40788, 40803,
+    {f: 3, c: 40799}, {f: 2, c: 40806}, 40812, 40810, 40823, 40818, 40822,
+    40853, [12244, 40860], [12245, 40864], 22575, 27079, 36953, 29796, 0,
+    {f: 76, c: 9472}, {f: 20, c: 9312}, {f: 10, c: 8544}, 13129, 13076, 0,
+    13133, 0, 13095, 0, 13110, 13137, 0, 13069, 13094, 0, 13099, 13130, 0,
+    {f: 3, c: 13212}, {f: 2, c: 13198}, 13252, 13217, 12317, 12319, 8470,
+    13261, 0, {f: 5, c: 12964}, {f: 2, c: 12849}, 12857, 13182, 13181, 13180,
+    8750, 8721, {s: 3}, 8735, 8895, 0, 0, 21854, {s: 7}, 167133, 0, 0, 28976,
+    0, 40407, {s: 4}, 64054, 0, 0, 22169, 15694, {s: 4}, 20448, 0, 0, 36544, 0,
+    194797, {s: 4}, 153716, 32363, 33606, 167670, {s: 3}, 40572, 0, 0, 26171,
+    0, 40628, {s: 4}, 26629, {s: 5}, 23650, 0, 194780, 0, 32353, 0, 0, 64070,
+    {s: 5}, 34083, 37292, {s: 7}, 34796, {s: 8}, 25620, 0, 0, 39506, {s: 4},
+    64074, 0, 194692, {s: 4}, 31774, {s: 6}, 64016, 25681, 0, 0, 63980, 22625,
+    39002, 0, 194679, {s: 3}, 31153, 0, 28678, {s: 9}, 22218, {s: 3}, 21085, 0,
+    28497, 37297, {s: 10}, 64106, {s: 6}, 38960, 0, 40629, {s: 9}, 33802,
+    63939, {f: 2, c: 63890}, 63897, 0, 34847, 194575, 0, 194771, 194584,
+    {s: 7}, 137754, 23643, {s: 4}, 25890, 0, 0, 26618, 0, 26766, 0, 148432,
+    194848, {s: 21}, 34110, {s: 15}, 30562, {s: 12}, 65075, 0,
+    {f: 2, c: 65073}, {s: 4}, 65072, {f: 2, c: 65077}, {f: 2, c: 65081}, 0, 0,
+    {f: 2, c: 65079}, {f: 2, c: 65087}, {f: 2, c: 65085}, {f: 4, c: 65089},
+    {f: 2, c: 65083}, {s: 41}, {f: 3, c: 12436}, 0, 0, 22099, {s: 41}, 65508,
+    65287, 65282, 0, 9665, 9655, 8681, 8679, 8678, 8680, 9634, 9831, 9825,
+    9828, 9826, 13216, 13218, {f: 2, c: 13220}, 13207, 8467, 13208, 13235,
+    13234, 13233, 13232, {f: 3, c: 13189}, 13259, 13200, 13268, 13206, 13090,
+    13078, 13080, 13077, 13059, 13091, 13143, 13122, 13113, 13115, 13056,
+    13105, 13127, 13086, 13098, 0, 13183, 8481, 9742, 12342, 12320, {s: 3},
+    {f: 9, c: 9352}, {f: 20, c: 9332}, 12881, {f: 10, c: 8560},
+    {f: 10, c: 12882}, {f: 26, c: 9372}, 12867, 12861, 12863, 12852, 12856,
+    12851, 12860, 12866, 12862, 12854, 12853, 12859, 12864, 12858, 12976,
+    12973, 12969, 12975, 12948, 12970, 12952, 12971, 12946, 12945, 12947,
+    12972, 12974, 12950, {s: 8}, {f: 3, c: 9131}, 0, {f: 3, c: 9127}, 0, 13260,
+    13061, 0, 0, 13215, 13219, 13222, 0, 0, 12958, {f: 2, c: 13192}, 13256,
+    8749, 0, 12848, {f: 6, c: 12842}, 12855, 12865, 10145, {s: 3}, 9673, 9824,
+    9829, 9827, 9830, {f: 4, c: 9728}, 9758, {f: 2, c: 9756}, 9759, 12953,
+    9450, {f: 2, c: 8554}, {s: 3}, {f: 8, c: 9601}, 9615, 9614, 9613, 9612,
+    9611, 9610, 9609, {f: 2, c: 9620}, {f: 2, c: 9581}, 9584, 9583, 9552, 9566,
+    9578, 9569, {f: 2, c: 9698}, 9701, 9700, 0, 0, {f: 3, c: 9585}, {s: 20},
+    20956, 29081, {f: 9, c: 10102}, {s: 3}, {f: 2, c: 8570}, {s: 3}, 8575,
+    8458, 8457, 0, 0, 12292, 8646, {f: 2, c: 8644}, 0, {f: 4, c: 12535}, 0, 0,
+    12957, {s: 3}, 13179, {s: 3}, 13107, 13134, {s: 30}, 32394, 35100, 37704,
+    37512, 34012, 20425, 28859, 26161, 26824, 37625, 26363, 24389,
+    [12033, 20008], 20193, 20220, 20224, 20227, 20281, 20310, 20370, 20362,
+    20378, 20372, 20429, 20544, 20514, 20479, 20510, 20550, 20592, 20546,
+    20628, 20724, 20696, 20810, 20836, 20893, 20926, 20972, 21013, 21148,
+    21158, 21184, 21211, 21248, 0, 21284, 21362, 21395, 21426, 21469, 64014,
+    21660, 21642, 21673, 21759, 21894, 22361, 22373, 22444, 22472, 22471,
+    64015, 0, 22686, 22706, 22795, 22867, 22875, 22877, 22883, 22948, 22970,
+    23382, 23488, 29999, 23512, 0, 23582, 23718, 23738, 23797, 23847, 23891, 0,
+    23874, 23917, {f: 2, c: 23992}, 24016, 24353, 24372, 24423, 24503, 24542,
+    24669, 24709, 24714, 24798, 24789, 24864, 24818, 24849, 24887, 24880,
+    24984, 25107, 25254, 25589, 25696, 25757, 25806, 25934, 26112, 26133,
+    26121, 26158, 0, 26148, 26213, 26199, 26201, 64018, 26227, 26265, 26272,
+    26290, 26303, 26362, 26382, 0, 26470, 26555, 26706, 26560, 0, 26692, 26831,
+    64019, 26984, 64020, 27032, 27106, 27184, 27243, 27206, 27251, 27262,
+    27362, 27364, 27606, 27711, 27740, 27782, 27759, 27866, 27908, 28039,
+    28015, 28054, 28076, 28111, 28152, 28146, 28156, 28217, 28252, 28199,
+    28220, 28351, 28552, 28597, 28661, 28677, 28679, 28712, 28805, 28843,
+    28943, 28932, 29020, {f: 2, c: 28998}, 0, 29121, 29182, 29361, 29374,
+    29476, 64022, 29559, 29629, 29641, 29654, 29667, 29650, 29703, 29685,
+    29734, 29738, 29737, 29742, 0, 29833, 29855, 29953, 30063, 30338, 30364,
+    30366, 30363, 30374, 64023, 30534, 21167, 30753, 30798, 30820, 30842,
+    31024, {f: 3, c: 64024}, 31124, 64027, 31131, 31441, 31463, 64028, 31467,
+    31646, 64029, 32072, 0, 32183, 32160, 32214, 32338, 32583, 32673, 64030,
+    33537, 33634, 33663, 33735, 33782, 33864, 33972, 34131, 34137, 34155,
+    64031, 34224, {f: 2, c: 64032}, 34823, 35061, 35346, 35383, 35449, 35495,
+    35518, 35551, 64034, 35574, 35667, 35711, 36080, 36084, 36114, 36214,
+    64035, 36559, 0, 64037, 36967, 37086, 64038, 37141, 37159, 37338, 37335,
+    37342, {f: 2, c: 37357}, {f: 2, c: 37348}, 37382, 37392, 37386, 37434,
+    37440, 37436, 37454, 37465, 37457, 37433, 37479, 37543, {f: 2, c: 37495},
+    37607, 37591, 37593, 37584, 64039, 37589, 37600, 37587, 37669, 37665,
+    37627, 64040, 37662, 37631, 37661, 37634, 37744, 37719, 37796, 37830,
+    37854, 37880, 37937, 37957, 37960, 38290, 0, 64041, 38557, 38575, 38707,
+    38715, 38723, 38733, 38735, [12205, 38737], 0, 38999, 39013,
+    {f: 2, c: 64042}, 39207, 64044, 39326, 39502, 39641, 39644, 39797, 39794,
+    39823, 39857, 39867, 39936, 40304, 40299, 64045, 40473, 40657, {s: 636},
+    8364, 8486, 0, 0, 64256, {f: 2, c: 64259}, 257, 299, 363, 275, 333, 256,
+    298, 362, 274, 332, {f: 4, c: 8539}, {f: 2, c: 8531}, 8304,
+    {f: 6, c: 8308}, {f: 10, c: 8320}, 461, 282, 0, 7868, 463, 0, 296, 465, 0,
+    467, 366, 360, 462, 283, 0, 7869, 464, 0, 297, 466, 0, 468, 367, 361, 593,
+    8049, 8048, 509, 0, 596, 0, 0, 601, 0, 0, 602, 0, 0, 603, 8051, 8050, 0,
+    331, 629, 652, 0, 0, 658, 643, 720, {s: 682}, {f: 10, c: 12832}, {s: 108},
+    {f: 4, c: 12892}, {f: 15, c: 12977}, {s: 50}, {f: 26, c: 9424},
+    {f: 26, c: 9398}, {s: 48}, {f: 47, c: 13008}, 0, {f: 10, c: 12928}, 12944,
+    {f: 6, c: 12938}, 0, 12959, {s: 6}, {f: 2, c: 12960}, 12955, 12954, 12963,
+    12962, 12951, 0, 12956, 12949, {s: 6}, 9676, {s: 11}, 10111,
+    {f: 10, c: 9451}, {s: 510}, 8414, {s: 815}, 13274, {s: 3}, 8448, 13250, 0,
+    0, 8453, 0, 13169, 0, 0, 13197, 13211, {s: 3}, {f: 2, c: 13271}, {s: 3},
+    {f: 2, c: 13057}, 13060, 13062, 0, 13064, 0, 13063, 13066, 0, 13065, 0,
+    13067, 0, 13068, {f: 6, c: 13070}, 0, 13079, 0, 13081, 0, {f: 4, c: 13082},
+    {f: 3, c: 13087}, 13092, 0, 13093, 0, 0, {f: 2, c: 13096}, 0, 13101, 0, 0,
+    {f: 3, c: 13102}, 13106, 0, 0, {f: 2, c: 13108}, 13116, {s: 3}, 13111, 0,
+    13112, 13114, 13117, 13121, {f: 3, c: 13118}, {f: 4, c: 13123}, 13128,
+    {f: 2, c: 13131}, {f: 2, c: 13135}, 0, 0, 13138, 13140, 0, 0, 13139,
+    {f: 2, c: 13141}, {s: 132}, 8501, 976, 8714, 8463, 0, 981, 987, 977, 0,
+    {f: 2, c: 9832}, 9836, {s: 5}, 12347, 0, {f: 3, c: 12339}, 8252, 8265,
+    {s: 5}, 8723, 0, 8771, {f: 2, c: 8818}, {s: 6}, {f: 2, c: 12312},
+    {f: 2, c: 65375}, {s: 10}, 9115, {f: 2, c: 9117}, 9120, {s: 4}, 9121,
+    {f: 2, c: 9123}, 9126, {s: 12}, [9116, 9119, 9122, 9125, 9130], {s: 8},
+    9986, 0, 0, 12349, 0, 12447, 0, 0, 8709, 8864, 8854, 8856, 8853, 8855,
+    {s: 4}, 9664, 9654, {s: 4}, 8656, 8596, {f: 2, c: 8600}, {f: 2, c: 8598},
+    8652, 8651, {s: 10}, 12336, 8967, {s: 8}, 10048, 10047, {s: 7}, 9643, 0,
+    9642, 0, 10010, {s: 12}, 9702, {s: 4}, 10070, {s: 379}, {f: 2, c: 65093},
+    {s: 679}, 64103, 64098, 32227, [12232, 40643], 28331, 64082, 64061, 64069,
+    64062, 27114, 28212, 64096, 64071, 64056, 64066, 64078, 34395, 64105,
+    64052, 64099, 25581, 25802, 30799, 64084, 63856, 64077, 64097, 64072,
+    64076, {f: 2, c: 64091}, 64081, 64067, 64090, 28041, 29376, 0, 194885,
+    64086, 64080, 64049, 64059, 24034, 64063, 64101, 21373, 64055, 64095,
+    24501, 64064, 0, 64083, 0, 64085, 64104, 64068, 64089, 26202, 64053, 64075,
+    64100, 64065, 64048, 0, 64057, 64051, 27493, 64058, 27599, 64050, 25150,
+    64079, 63773, 63964, 63798, 28122, 63952, 26310, 27511, 64087, 37706, 0,
+    37636, {s: 120}, 133390, {s: 120}, 35999, 11991, [11965, 158033], {s: 5},
+    37555, 38321, 0, 0, 194812, {s: 13}, 194965, {s: 8}, 194794, 0, 26478,
+    11974, 0, 194594, {s: 13}, 13314, 0, 0, 26083, {s: 4}, 134071, {s: 10},
+    171339, 0, 194611, 24378, {s: 8}, 11945, 0, 20465, {s: 7}, 63753, {s: 7},
+    11964, 0, 0, 194732, 26435, {s: 3}, 133732, 35329, 25142, 0, 0, 21555,
+    23067, {s: 3}, 25221, 0, 0, 194819, {s: 6}, 21567, {s: 9}, 27506, {s: 4},
+    29986, 19256, 0, 0, 24063, {s: 6}, 194827, 29626, 134047, {s: 3}, 194600,
+    0, 194849, {s: 5}, 194623, {s: 16}, 194675, {f: 2, c: 11916}, 23577,
+    {s: 3}, 131083, 23426, 194642, {s: 5}, 11997, [11999, 39136],
+    [11998, 169599], 14221, 0, [11927, 14586], 0, 194887, 0, [11909, 20155],
+    131490, {s: 7}, 13599, 0, 194738, 0, 0, [11971, 35200], {s: 4}, 31237,
+    {s: 4}, 35498, 0, 32085, 0, 28568, {s: 7}, 25591, 30246, {s: 4},
+    [11978, 163767], {s: 5}, 146686, {s: 5}, 13351, 0, 0, 33067, 0, 0, 194842,
+    {s: 5}, 11950, {s: 5}, 194714, {s: 3}, 194831, {s: 19}, 22305, 135741,
+    194586, 0, 64003, {s: 7}, 21534, 15240, 20839, {s: 4}, 63839, {s: 9},
+    20023, {s: 13}, [11946, 150804], 24421, 23020, 194658, 0, 24217, {s: 46},
+    13416, {s: 8}, 21200, {s: 9}, 26625, 0, 195024, 195039, {s: 5}, 153215, 0,
+    0, 11959, {s: 4}, 36534, 63775, {s: 3}, 63875, {s: 5}, 31867, 63906, 0,
+    63898, 0, [11961, 32770], 157360, {s: 4}, [11911, 132648], 0, 0, 131210,
+    194604, [11915, 13630], {s: 4}, 21589, 0, 22841, 0, 0, 23414, 194669,
+    23572, 14306, 23782, 0, 20040, 0, 0, 194742, {s: 4}, 158105, 25371, 0, 0,
+    26211, 0, 194779, 0, 0, 27126, 27014, {s: 3}, 27596, 0, 28183, 0, 0, 27818,
+    {s: 3}, [11942, 20012], 0, 0, 29935, 30069, 30188, 30286, 16305, 30570,
+    30633, {s: 6}, 31571, 0, 0, 16996, {s: 3}, 194924, 0, 0, 32328, {s: 5},
+    11955, {s: 4}, 33089, 17491, 0, [11966, 33401], [11967, 64094],
+    [11968, 64093], 0, 20857, 33626, {s: 3}, 17701, 0, 34292, 131248, {s: 4},
+    34429, 0, 13358, 35014, {s: 6}, 18406, {s: 8}, 36808, {s: 19}, 166279, 0,
+    0, 167447, 0, 0, 38969, {s: 6}, 39432, {s: 4}, 39903, {s: 10}, 148206,
+    {s: 5}, 21385, 0, 64017, 194785, 0, 146622, 132625, 0, {f: 2, c: 19972},
+    19999, 20011, {f: 2, c: 20015}, {f: 2, c: 20032}, 20036, [11907, 20058],
+    20095, 20109, 20118, 20153, 20176, 20192, 20221, 20223, 20235, 20245,
+    20320, 20283, 20297, 20308, 20346, {f: 2, c: 20349}, 20375, 20414, 20431,
+    20477, {f: 2, c: 20480}, 20496, 20507, 20519, 20526, 20567, 20582, 20586,
+    20539, 20623, 20630, 20636, 20684, 20710, 20713, 20719, 20744, 20747,
+    20752, 20763, 20766, 20831, 20897, 20924, 0, 20974, 20980, 20993,
+    [11913, 20994], 21011, 21065, 21089, 21094, 21139, 21192, 21232,
+    {f: 2, c: 21258}, 21310, 21324, 21323, 21345, 21356, 21419, 21466, 21478,
+    21493, 21543, 21581, 21606, 21611, 21620, 21645, 21654, 21665, 21677,
+    21689, 21695, 21702, 21709, 21774, 21803, 21813, 21834, 21856, 0, 21896,
+    21902, 22024, {f: 2, c: 22030}, 22071, 22079, 22089, 22091, 22095, 22118,
+    22121, 22127, {f: 2, c: 22129}, 22165, 22170, {f: 2, c: 22188}, 22193,
+    22217, 22237, 22244, 22282, 22293, 22307, 22319, {f: 2, c: 22323}, 22348,
+    22384, 22412, 22428, 22456, 22502, 22509, {f: 2, c: 22517}, 22527, 22537,
+    22560, 22578, 22652, 22656, 22697, 22734, 22736, 22740, 22746, 22761,
+    22796, 22820, 22831, 22881, 22893, 22986, 22994, 23005, {f: 2, c: 23011},
+    23044, 23052, 23075, 23111, 23125, 23139, 23149, 23166, 23198, 23207,
+    23212, 23219, 23264, 23296, 23321, 23333, 23341, 23361, 23420,
+    {f: 2, c: 23422}, 23434, [11919, 23587], 23595, 23600, 23651, 23657, 23676,
+    23755, 23762, 23796, 23844, 23846, 23875, 23878, 23882, 23954, 23956,
+    23961, 23968, 24024, 24032, 24056, 24064, 24082, {f: 2, c: 24084}, 24088,
+    24110, 24152, {f: 2, c: 24171}, 24232, 24234, {f: 2, c: 24254}, 0, 24274,
+    24327, 24334, {f: 2, c: 24348}, 24354, 24360, 24374, 24379, 24384,
+    [12089, 24400], 24408, 24420, 24457, 24476, 24487, 24484, 24495, 24504,
+    [11926, 24516], 24521, 24545, 24553, 24557, 24572, 24599, 24602, 24627,
+    24673, 24703, 24734, 24740, 24752, 24779, 24795, 24824, {f: 3, c: 24850},
+    24860, 24956, 24973, 24991, 25000, 25026, 25055, 25109, 25129, 25155,
+    25158, [11928, 25164], 25169, 25174, 25284, 25340, 25354, 25357, 25368,
+    25401, {f: 2, c: 25410}, 25445, 25460, 25469, 25476, 25479, 25488, 25502,
+    25553, 25564, 25609, 25616, 25634, 25684, 25691, 25709, 25723,
+    {f: 2, c: 25790}, 25829, 25847, 25851, 25860, 25878, 25881, 25927, 25959,
+    25985, 25989, 26050, 26096, 26098, 26156, 26188, {f: 2, c: 26203}, 26209,
+    26219, 0, 26276, 26312, 26348, 26373, 26387, 26419, 26440, 26444, 26486,
+    26491, 26544, 26546, 26617, 26583, 26585, 26608, 26668, {f: 2, c: 26672},
+    26715, 26738, 26741, 26746, 26756, 26789, 26802, 26832, 26838, 26856,
+    26861, {f: 2, c: 26864}, 26876, 26897, 26899, 26933, 26939, 26967, 26979,
+    26994, {f: 2, c: 27007}, 27046, 27053, 27063, {f: 2, c: 27094}, 27137,
+    27151, 27157, 27176, 27188, 27198, 27205, {f: 2, c: 27216}, 27222, 27227,
+    27267, 27273, 27281, {f: 3, c: 27293}, 27356, 27367, 27372, 27422, 27428,
+    27445, 27462, 27478, 27488, 27522, 27582, 27617, 27633, 27664, 27699,
+    [11937, 27701], 11938, 27737, 27766, 27771, 27781, 27797, 27804, 27856,
+    27860, 27862, 27872, {f: 2, c: 27883}, 27886, 27914, 27918, 27921, 27950,
+    27991, 27998, 28005, 28034, 28095, 28100, 28106, 28118, 28137, 28194,
+    28241, 28359, 28362, 28366, 28413, 28442, 28458, 28463, 28467, 28506,
+    28510, 28514, 28541, 28555, 28557, 28562, 28564, 28570, {f: 2, c: 28583},
+    28598, 28634, 28638, 0, 28729, 28732, 0, 28756, {f: 2, c: 28765}, 28772,
+    [11939, 28780], 28798, 28801, 28821, 28855, {f: 2, c: 28883}, 28888, 28892,
+    28935, 28960, 28977, 29002, 29010, 29024, 29049, 29074, 0, 29131, 29139,
+    29142, 29184, 29213, 29227, 29240, 29249, 29267, {f: 2, c: 29269}, 29276,
+    29325, [11944, 29357], 29364, 29383, 29435, {f: 2, c: 29444}, 29480, 29489,
+    29507, 29548, 29564, 29571, {f: 2, c: 29573}, 29589, {f: 3, c: 29598},
+    29606, 29611, 29621, 29623, 29628, 29647, 29657, 29673, 29684, 29693,
+    29700, 29706, {f: 2, c: 29722}, 29732, 29736, 29740, {f: 3, c: 29743},
+    29753, 29764, 29767, 29771, 29773, 29777, 29783, 29798, 29803, 29809,
+    29824, {f: 3, c: 29829}, 29840, 29848, 29852, 29856, 29859, 29864, 29867,
+    29877, 29887, 29896, 29914, 29918, 30030, 30073, 30081, 30096,
+    [12135, 30098], 30099, 30132, 30180, 30201, 30208, 30218, {f: 2, c: 30229},
+    30233, 30238, 30253, 30261, 30275, 30283, 30309, 30317, 30319, 30321,
+    30324, {f: 2, c: 30372}, 30405, 30412, 30444, 30460, 30516, 30518, 30556,
+    {f: 2, c: 30559}, 30578, 30589, 30613, 30634, 30694, 30704, 30708, 30726,
+    30754, {f: 2, c: 30765}, 30768, 30773, 30824, 30878, 30920, 30924, 30926,
+    30948, {f: 2, c: 30944}, 30962, 30967, 30971, 31025, 0, [11949, 31035],
+    31037, 31045, {f: 2, c: 31067}, 31115, 31126, 31128, [12145, 31160], 31163,
+    31178, 31194, 31235, 31241, 31249, 31262, 31277, 31289, 31301, 31308,
+    31325, 0, 31341, 31352, 31392, 31395, 31411, {f: 2, c: 31419}, 31430,
+    31495, 31508, 31527, 31537, 31559, 31566, 31584, 31593, 31597, 31602,
+    31633, 31663, 31703, 31705, 31755, 31759, 31776, 31782, 31793, 31798,
+    31825, 31833, 31847, 31854, 31856, 31932, 31935, {f: 2, c: 31944}, 31959,
+    31961, 31965, 31979, {f: 3, c: 32007}, 32019, 32029, 32035, 32065, 32083,
+    32089, 32093, 32122, 32134, {f: 2, c: 32139}, 32204, 32235, 32241, 32249,
+    32264, 32273, 32277, 32288, 32327, 32354, 32366, 32371, 32397, 32401,
+    32408, 32580, 32591, [11947, 11954, 32594], [11953, 32595], 32609, 32657,
+    32703, 32718, 32735, 32741, 32748, {f: 2, c: 32750}, 32762, 32782, 32785,
+    32788, 32804, 32806, 32826, 32828, 32864, 32881, 32885, 32926, 32934,
+    32939, {f: 2, c: 32983}, 33046, 33048, 33082, 33098, 33100, 33153, 33156,
+    33204, 33231, 33273, 33283, 33313, 33330, 33332, 33350, 33355, 33359,
+    33422, 33454, 33463, 33470, 33478, 33534, 33603, 33617, 33621, 33670,
+    33677, 33682, 33688, 33705, {f: 2, c: 33727}, 33770, 33807, 33809, 33866,
+    33910, 33960, 33967, 33984, 33986, 34032, 34045, 34060, 34100, 34142,
+    34191, 34231, 34254, 34221, 34322, 34345, 34386, 34403, 34412, 34415,
+    34426, 34445, 34449, 34456, {f: 2, c: 34471}, 34554, 34557, 34571, 34579,
+    34585, 34590, 34600, 34622, 34673, 34696, 34713, {f: 2, c: 34732}, 34741,
+    34774, 34795, 34797, 34817, 0, 34822, 34827, 34836, 34844, 34902, 34911,
+    [11970, 34916], 34968, 34986, {f: 2, c: 35005}, 35018, 35026, 35035,
+    {f: 2, c: 35056}, 35078, {f: 3, c: 35096}, 35111, 35120, 35134, 35195,
+    35284, 35286, 35301, 35313, 35335, 35343, 35349, 35362, 35406, 35455,
+    35572, 35615, 35639, {f: 2, c: 35651}, 35668, 35740, 35742, 35911, 35924,
+    35955, 36004, 36057, 36065, 36088, 36094, 36123, 36201, 36204, 36228,
+    36237, 36245, 36262, 36294, 36302, 36324, 36332, 36384, 36427, 36460,
+    36464, 36474, 36498, 36526, 36531, 36561, 36564, 36601, 36631, 36662,
+    36774, [12193, 36789], [11981, 36790], 0, 36832, 36836, 36854, 36866,
+    36908, 36932, 37000, 37013, 37017, 37019, 37026, 37044, 37079, 37085,
+    37108, 37143, 37148, 37169, 37178, 37181, 37192, 37211, 37217, 37220,
+    37262, 37278, 37288, {f: 2, c: 37293}, 37298, 37308, 37360, 37367, 37371,
+    37383, 37416, 37427, 37432, 37443, 37447, 37455, 37472, 37570,
+    {f: 2, c: 37579}, 37599, 37645, 37653, 37663, 37671, 37703, 37714, 0,
+    37738, 37741, 37787, 37818, 37801, 37825, 37834, 37858, 37882, 37885,
+    37903, 37940, 37951, 37973, 37995, 38002, [11986, 38264], 38310, 38313, 0,
+    38324, 38333, 38362, [11983, 11990, 38429], 38465, 38488, 38532, 38564,
+    38569, 38610, 195060, 38622, 38633, 38641, 38658, 38665, 38746, 38755,
+    38766, 38771, 38810, 38818, {f: 2, c: 38837}, 38873, 38878, 38900, 38922,
+    38926, 38942, 38947, 38955, 38974, {f: 2, c: 38994}, 39001, 39020, 39096,
+    39098, 39103, 39112, 39141, {f: 2, c: 39218}, 39232, 39245, 39260, 39263,
+    39345, {f: 2, c: 39353}, 39369, 39426, 39446, 39460, 39463,
+    {f: 2, c: 39469}, 39478, 39480, 39498, 39510, {f: 2, c: 39605}, 39673,
+    39683, 39712, {f: 2, c: 39731}, 39795, 39801, 39847, 39873, 39879, 39895,
+    39911, 39915, 39927, 39930, 39933, 39947, 39975, 39978, 39990, 40001,
+    40019, 40035, 40048, 40055, 40194, 40258, 40263, 40291, 40297, 40316,
+    40318, 40333, 40369, 40387, 40391, 40406, 40415, 40427, 40436, 40469,
+    40477, 40612, 40616, 40620, 40679, 40686, 40720, 40722, 40727, 40729,
+    40751, 40759, 40761, 40769, 40773, 40791, 40808, 40817, 40821, 40848,
+    40852, 40866, 0, 13317, 194564, 22048, 24267, 11925, 0, 144954, 0, 28665,
+    28390, 29107, [11940, 64073], {s: 4}, [11980, 64102], 0, 23986, 0, 20435,
+    20697, 20720, 20931, 22134, 27220, 27905, 28112, 28226, 28377, 29668,
+    29729, 30060, 30801, 34805, 144382, 29608, 15091, 13531, 17420, 16010, 0,
+    0, 19432, 0, 16090, 15138, 0, 17786, 16531, 0, 18021, 16643, 17043, 18094,
+    13448, 140809, {f: 3, c: 63584}, 63610, 63615, {s: 23}, {f: 2, c: 8836},
+    {f: 2, c: 8842}, 8713, 0, {f: 2, c: 8965}, {s: 9}, {f: 2, c: 8741},
+    {s: 14}, 8802, 0, 8773, 8776, {f: 2, c: 8822}, {s: 4}, 8487, {s: 209},
+    {f: 2, c: 8922}, 8533, 8984, {f: 2, c: 7742}, {f: 2, c: 504}, 470, 472,
+    474, 476, 260, 728, 317, 346, 350, 356, 377, 379, 261, 731, 318, 347, 711,
+    351, 357, 378, 733, 380, 340, 258, 313, 262, 268, 280, 270, 323, 327, 336,
+    344, 368, 354, 341, 259, 314, 263, 269, 281, 271, 273, 324, 328, 337, 345,
+    369, 355, 729, 264, 284, 292, 308, 348, 364, 265, 285, 293, 309, 349, 365,
+    625, 651, 638, 620, 622, 633, 648, 598, 627, 637, 642, 656, 635, 621, 607,
+    626, 669, 654, 609, 624, 641, 295, 661, 660, 614, 664, 450, 595, 599, 644,
+    608, 403, 616, 649, 600, 604, 606, 592, 623, 650, 612, 594, 653, 613, 674,
+    673, 597, 657, 634, 615, 865, 712, 716, 721, 8255, 783, {f: 5, c: 741}, 0,
+    0, 805, 812, 825, 796, {f: 2, c: 799}, 829, 809, 815, 734, 804, 816, 828,
+    820, {f: 2, c: 797}, {f: 2, c: 792}, 810, {f: 2, c: 826}, 794, {s: 3},
+    {f: 2, c: 610}, 618, 628, 630, 632, 640, 655, 665, 668, 671, 688, 690, 695,
+    704, {f: 2, c: 736}, {s: 6}, 8862, {s: 287}, 12348, 12543, 0,
+    {f: 2, c: 12310}, 9838, 9835, {f: 2, c: 10548}, 10687, 0, 12448, 0,
+    {f: 2, c: 10746}, {s: 13}, 962, {f: 10, c: 9461}, {f: 2, c: 9750}, 9649,
+    {f: 10, c: 12784}, 0, {f: 6, c: 12794}, {f: 15, c: 9150}, 0, 0, 10003, 0,
+    9251, 9166, {f: 4, c: 9680}, {f: 2, c: 8263}, 0, 8273, 8258,
+    {f: 16, c: 12688}, {s: 13}, {f: 2, c: 9136}, {f: 12, c: 9842},
+    {f: 2, c: 12441}, 8413, {s: 450}, 20296, 20319, 20330, 20332, 20494, 20504,
+    20545, 20722, 20688, 20742, 20739, 20789, 20821, 20823, 13493, 20938,
+    20962, 21079, 21196, 21206, 21243, 21276, 21347, 21405, 21522, 21631,
+    21640, 21840, 21889, 21933, 21966, 22075, 22174, 22185, 22195, 22391,
+    22396, 135963, 22479, 22500, 22628, 22665, 136302, 22738, 22752, 34369,
+    22923, 22930, 22979, 23059, 23143, 23159, 23172, 23236, 137405, 23421,
+    23443, 23570, 64060, 136884, 23674, 23695, 23711, 23715, 23722, 23760,
+    138804, 23821, 23879, 23937, 23972, 23975, 24011, 24158, 24313, 24320,
+    24322, 24355, 24381, 24404, 24445, 24589, 24596, 24600, 24629, 24647,
+    24733, 24788, 24797, 24875, 25020, 25017, 25122, 25178, 25199, 25302,
+    25468, 25573, 25721, 25796, 25808, 25897, 26013, 26170, 26146, 26155,
+    26160, 26163, 26184, 143812, {f: 2, c: 26231}, 26253, 26299, 26331, 26344,
+    26439, 26497, 26515, 26520, 26523, 26620, 26653, 26787, 26890, 26953,
+    144836, 26946, 26980, 27045, 27087, 15286, 15299, 27113, 27125, 145215,
+    27195, 145251, 27284, 27301, 15375, 27419, 27436, 27495, 27561, 27565,
+    27607, 27647, 27653, 27764, 27800, 27899, 27846, 27953, 27961, 27967,
+    27992, 28052, 28074, 28123, 28125, 28228, 28254, 28337, 28353, 28432,
+    28505, 28513, 28542, 28556, 28576, 28604, 28615, 28618, 28656, 28750,
+    28789, 28836, 28900, 28971, 28958, 28974, 29009, 29032, 29061, 29063,
+    29114, 29124, 29205, 15935, 29339, 149489, 29479, 29520, 29542, 29602,
+    29739, 29766, 29794, 29805, 29862, 29865, 29897, 29951, 29975, 16242,
+    30158, 30210, 30216, 30308, 30337, 30365, 30378, 30390, 30414, 30420,
+    30438, 30449, 30474, 30489, {f: 2, c: 30541}, 30586, 30592, 30612, 30688,
+    152718, 30787, 30830, 30896, 152846, 30893, 30976, 31004, 31022, 31028,
+    31046, 31097, 31176, 153457, 31188, 31198, 31211, 31213, 31365, 154052,
+    31438, 31485, 31506, 31533, 31547, 31599, 31745, 31795, 155041, 31853,
+    31865, 31887, 31892, 31904, 31957, 32049, 32092, 32131, 32166, 32194,
+    32296, 32663, 32731, 32821, 32823, 32970, 32992, 33011, 33120,
+    {f: 2, c: 33127}, 33133, 33211, 33226, 33239, 17499, 33376, 33396, 158463,
+    33441, {f: 2, c: 33443}, 33449, 33471, 33493, 33533, 33536, 33570, 33581,
+    33594, 33607, 33661, 33703, 33743, 33745, 33761, 33793, 33798, 33887,
+    33904, 33907, 33925, 33950, 33978, 159296, 34098, 34078, 34095, 34148,
+    34170, 34188, 34210, 34251, 34285, 34303, {f: 2, c: 34308}, 34320, 159988,
+    34328, 34360, 34391, 34402, 17821, 34421, 34488, 34556, 34695, 17898,
+    34826, 34832, 35022, 161412, 35122, 35129, 35136, 35220, 35318, 35399,
+    35421, 35425, 35445, 35536, 35654, 35673, 35689, 35741, 35913, 35944,
+    36271, 36305, 36311, 36387, 36413, 36475, 164471, 18500, 36602, 36638,
+    36653, 36692, 164813, 36840, 36846, 36872, 36909, 37015, 37043, 37054,
+    {f: 2, c: 37060}, 37063, 37103, 37140, 37142, {f: 2, c: 37154}, 37167,
+    37172, 37251, 37361, 37705, {f: 2, c: 37732}, 37795, 37855, 37892, 37939,
+    37962, 37987, 38001, 38286, 38303, 38316, 38326, 38347, 38352, 38355,
+    18864, 38366, 38565, 38639, 38734, 38805, 38830, 38842, 38849, 38857,
+    38875, 38998, 39143, 39256, 39427, 39617, 39619, 39630, 39638, 39682,
+    39688, 19479, 39725, 39774, 39782, 39812, 39818, 39838, 39886, 39909,
+    39928, 39971, {f: 2, c: 40015}, 40037, {f: 2, c: 40221}, 40259, 40274,
+    40330, 40342, 40384, 40364, 40380, 172432, 40423, 40455, 40606, 40623,
+    40855, 131209, 19970, 19983, 19986, 20009, 20014, 20039, 131234, 20049,
+    13318, 131236, 20073, 20125, 13356, 20156, 20163, 20168, 20203, 20186,
+    20209, 20213, 20246, 20324, 20279, 20286, 20312, 131603, {f: 2, c: 20343},
+    20354, 20357, 20454, 20402, 20421, 20427, 20434, 13418, 20466, 20499,
+    20508, 20558, 20563, 20579, 20643, 20616, {f: 2, c: 20626}, 20629, 20650,
+    131883, 20657, {f: 2, c: 20666}, 20676, 20679, 20723, 131969, 20686,
+    131953, 20692, 20705, 13458, 132089, 20759, 132170, 20832, 132361, 20851,
+    20867, 20875, 13500, 20888, 20899, 20909, 13511, 132566, 20979, 21010,
+    21014, 132943, 21077, 21084, 21100, 21111, 21124, 21122, 133127, 21144,
+    133178, 21156, {f: 2, c: 21178}, 21194, 21201, 133305, 21239, 21301, 21314,
+    133500, 133533, 21351, 21370, 21412, 21428, 133843, 21431, 21440, 133917,
+    {f: 2, c: 13661}, 21461, 13667, 21492, 21540, 21544, 13678, 21571, 21602,
+    21612, 21653, 21664, 21670, 21678, 21687, 21690, 21699, 134469, 21740,
+    21743, 21745, 21747, {f: 2, c: 21760}, 21769, 21820, 21825, 13734, 21831,
+    13736, 21860, 134625, 21885, 21890, 21905, 13765, 21970, 134805, 134765,
+    21951, 21961, 21964, 21969, 21981, 13786, 21986, 134756, 21993, 22056,
+    135007, 22023, 22032, 22064, 13812, 22077, 22080, 22087, 22110, 22112,
+    22125, 13829, 22152, 22156, 22173, 22184, 22194, 22213, 22221, 22239,
+    22248, {f: 2, c: 22262}, 135681, 135765, 22313, 135803, {f: 2, c: 22341},
+    22349, 135796, 22376, 22383, {f: 3, c: 22387}, 22395, 135908, 135895,
+    22426, {f: 2, c: 22429}, 22440, 22487, 135933, 22476, 135990, 136004,
+    22494, 22512, 13898, 22520, 22523, 22525, 22532, 22558, 22567, 22585,
+    136132, 22601, 22604, 22631, {f: 2, c: 22666}, 22669, {f: 2, c: 22671},
+    22676, 22685, 22698, 22705, 136301, 22723, 22733, 22754, {f: 2, c: 22771},
+    {f: 2, c: 22789}, 22797, 22804, 136663, 13969, 22845, 13977, 22854, 13974,
+    158761, 22879, 136775, {f: 2, c: 22901}, 22908, 22943, 22958, 22972, 22984,
+    22989, 23006, 23015, 23022, 136966, 137026, 14031, 23053, 23063, 23079,
+    23085, 23141, 23162, 23179, 23196, {f: 2, c: 23199}, 23202, 23217, 23221,
+    23226, 23231, 23258, 23260, 23269, 23280, 23278, 23285, 23304, 23319,
+    23348, 23372, 23378, 23400, 23407, 23425, 23428, 137667, 23446, 23468,
+    {f: 2, c: 14177}, 23502, 23510, 14188, 14187, 23537, 23549, 14197, 23555,
+    23593, 138326, 23647, {f: 2, c: 23655}, 23664, 138541, 138565, 138616,
+    138594, 23688, 23690, 14273, 138657, 138652, 23712, 23714, 23719, 138642,
+    23725, 23733, 138679, 23753, 138720, 138803, 23814, 23824, 23851, 23837,
+    23840, 23857, 23865, 14312, 23905, 23914, 14324, 23920, 139038, 14333,
+    23944, 14336, 23959, 23984, 23988, 139126, 24017, 24023, 139258, 24036,
+    24041, 14383, 14390, 14400, 24095, 24126, 24137, 14428, 24150, 14433,
+    {f: 2, c: 24173}, 139643, 24229, 24236, 24249, 24262, 24281, 140062, 24317,
+    24328, 140205, 24350, 24391, 24419, 24434, 24446, 24463, 24482, 24519,
+    24523, {f: 3, c: 24530}, 24546, {f: 2, c: 24558}, 24563, 14615, 24610,
+    24612, 14618, 24652, 24725, 24744, 141043, 24753, 24766, 24776, 24793,
+    24814, 24821, 24848, 24857, 24862, 24890, 14703, 24897, 24902, 24928,
+    141403, {f: 2, c: 24978}, 24983, 24997, 25005, 141483, 25045, 25053, 25077,
+    141711, 25123, 25170, 25185, 25188, 25211, 25197, 25203, 25241, 25301,
+    142008, 25341, 25347, 25360, {f: 2, c: 142159}, 25394, 25397,
+    {f: 2, c: 25403}, 25409, 25412, 25422, 142150, 25433, 142365, 142246,
+    25452, 25497, 142372, 25492, 25533, {f: 2, c: 25556}, 25568,
+    {f: 2, c: 25579}, 25586, 25630, 25637, 25641, 25647, 25690, 25693, 25715,
+    25725, 25735, 25745, 25759, {f: 2, c: 25803}, 25813, 25815, 142817, 25828,
+    25855, 14958, 25871, 25876, 14963, 25886, 25906, 25924, 25940, 25963,
+    25978, 25988, 25994, 26034, 26037, 26040, 26047, 26057, 26068, 15062,
+    26105, 26108, 26116, 26120, 26145, 26154, 26181, 26193, 26190, 15082,
+    143811, 143861, 143798, 26218, {f: 2, c: 26220}, 26235, 26240, 26256,
+    26258, 15118, 26285, 26289, 26293, 15130, 15132, 15063, 26369, 26386,
+    144242, 26393, 144339, 144338, 26445, 26452, 26461, 144336, 144356, 144341,
+    26484, 144346, 26514, 144351, 33635, 26640, 26563, 26568, 26578, 26587,
+    26615, 144458, 144465, 144459, 26648, 26655, 26669, 144485, 26675, 26683,
+    26686, 26693, 26697, 26700, 26709, 26711, 15223, 26731, 26734, 26748,
+    26754, 26768, 26774, 15213, {f: 3, c: 26776}, 26780, {f: 2, c: 26794},
+    26804, 26811, 26875, 144612, 144730, 26819, 26821, 26828, 26841,
+    {f: 2, c: 26852}, 26860, 26871, 26883, 26887, 15239, 144788, 15245, 26950,
+    26985, 26988, 27002, 27026, 15268, 27030, 27056, 27066, 27068, 27072,
+    27089, 144953, 144967, 144952, 27107, {f: 2, c: 27118}, 27123, 15309,
+    27124, 27134, 27153, 27162, 27165, 145180, {f: 2, c: 27186}, 27199, 27209,
+    27258, 27214, 27218, 27236, 145164, 27275, 15344, 27297, 145252, 27307,
+    27325, 27334, 27348, 27344, 27357, 145407, 145383, {f: 3, c: 27377}, 27389,
+    145444, 27403, {f: 3, c: 27407}, 145469, 27415, 15398, 27439, 27466, 27480,
+    27500, 27509, [11934, 27514], 27521, 27547, 27566, 146072, 27581,
+    {f: 3, c: 27591}, 27610, {f: 2, c: 27622}, 27630, 27650, 27658, 27662,
+    27702, 146559, 27725, 27739, 27757, 27780, 27785, 15555, 27796, 27799,
+    27821, 27842, 15570, 27868, 27881, 27885, 146688, 27904, 27940,
+    {f: 2, c: 27942}, 27751, 27951, 27964, 27995, 28000, 28016,
+    {f: 2, c: 28032}, 28042, 28045, 28049, 28056, 146752, 146938, 146937,
+    146899, 28075, 28078, 28084, 28098, 27956, 28104, 28110, 28127, 28150,
+    28214, 28190, 15633, 28210, {f: 2, c: 28232}, {f: 2, c: 28235}, 28239,
+    {f: 2, c: 28243}, 28247, 28259, 15646, 28307, 28327, 28340, 28355, 28469,
+    28395, 28409, 28411, 28426, 28428, 28440, 28453, 28470, 28476, 147326,
+    28498, 28503, 28512, 28520, 28560, 28566, 28606, 28575, 28581, 28591,
+    15716, {f: 2, c: 28616}, 28649, 147606, 28668, 28672, 28682, 28707, 147715,
+    28730, 28739, 28743, 28747, 15770, 28773, 28777, 28782, 28790, 28806,
+    28823, 147910, 28831, 28849, 147966, 28908, 28874, 28881, 28931, 28934,
+    28936, 28940, 15808, 28975, 29008, 29011, 29022, 15828, 29078, 29056,
+    29083, 29088, 29090, {f: 2, c: 29102}, 148412, 29145, 29148, 29191, 15877,
+    29236, 29241, 29250, 29271, 29283, 149033, {f: 2, c: 29294}, 29304, 29311,
+    29326, 149157, 29358, 29360, 29377, 15968, 29388, 15974, 15976, 29427,
+    29434, 29447, 29458, {f: 2, c: 29464}, 16003, 29497, 29484, 29491, 29501,
+    29522, 16020, 29547, 149654, {f: 2, c: 29550}, 29553, 29569, 29578, 29588,
+    29592, 29596, 29605, 29625, 29631, 29637, 29643, 29665, 29671, 29689,
+    29715, 29690, 29697, 29779, 29760, 29763, 29778, 29789, 29825, 29832,
+    150093, 29842, 29847, 29849, 29857, 29861, 29866, 29881, 29883, 29882,
+    29910, 29912, 29931, 150358, 29946, 150383, 29984, 29988, 29994, 16215,
+    150550, {f: 2, c: 30013}, 30016, 30024, 30032, 30034, 30066, 30065, 30074,
+    {f: 2, c: 30077}, 30092, 16245, 30114, 16247, 30128, 30135,
+    {f: 2, c: 30143}, 30150, 30159, 30163, 30173, {f: 2, c: 30175}, 30183,
+    30190, 30193, 30211, 30232, 30215, 30223, 16302, 151054, 30227,
+    {f: 2, c: 30235}, 151095, 30245, 30248, 30268, 30259, 151146, 16329, 30273,
+    151179, 30281, 30293, 16343, 30318, 30357, 30369, 30368, {f: 2, c: 30375},
+    30383, 151626, 30409, 151637, 30440, 151842, 30487, 30490, 30509, 30517,
+    151977, 16441, 152037, 152013, 30552, 152094, 30588, 152140, 16472, 30618,
+    30623, 30626, 30628, {f: 2, c: 30686}, 30692, 30698, 30700, 30715, 152622,
+    30725, 30729, 30733, 30745, 30764, 30791, 30826, 152793, 30858, 30868,
+    30884, 30877, 30879, 30907, 30933, 30950, {f: 2, c: 30969}, 30974, 152999,
+    30992, 31003, 31013, 31050, 31064, 16645, 31079, 31090, 31125, 31137,
+    31145, 31156, 31170, 31175, {f: 2, c: 31180}, 31190, 16712, 153513, 153524,
+    16719, 31242, 31253, 31259, 16739, 31288, 31303, 31318, 31321, 31324,
+    31327, 31335, 31338, 31349, 31362, 31370, 31376, 31404, 154068, 16820,
+    31417, 31422, 16831, 31436, 31464, 31476, 154340, 154339, 154353, 31549,
+    31530, {f: 2, c: 31534}, 16870, 16883, 31615, 31553, 16878, 31573, 31609,
+    31588, 31590, 31603, 154546, 16903, 31632, 31643, 16910, 31669, 31676,
+    31685, 31690, 154699, 154724, 31700, 31702, 31706, 31722, 31728, 31747,
+    31758, 31813, 31818, 31831, 31838, 31841, 31849, 31855, 155182, 155222,
+    155237, 31910, 155234, {f: 2, c: 31926}, 155352, 31940, 155330, 31949,
+    155368, 155427, 31974, 155484, 31989, 32003, 17094, 32018, 32030, 155616,
+    155604, {f: 2, c: 32061}, 32064, 32071, 155660, 155643, 17110, 32090,
+    32106, 32112, 17117, 32127, 155671, 32136, 32151, 155744, 32157, 32167,
+    32170, 32182, 32192, 32215, 32217, 32230, 17154, 155885, 64088, 32272,
+    32279, 32285, 32295, 32300, 32325, 32373, 32382, {f: 2, c: 32390}, 17195,
+    32410, 17219, 32572, 32571, 32574, 32579, 13505, 156272, 156294,
+    {f: 2, c: 32611}, 32621, {f: 2, c: 32637}, 32656, 20859, 146702, 32662,
+    32668, 32685, 156674, 32707, 32719, 32739, 32754, 32778, 32776, 32790,
+    32812, 32816, 32835, 32870, 32891, 32921, 32924, 32932, 32935, 32952,
+    157310, 32965, 32981, 32998, 33037, 33013, 33019, 17390, 33077, 33054,
+    17392, 33060, 33063, 33068, 157469, 33085, 17416, 33129, 17431, 17436,
+    33157, 17442, 33176, 33202, 33217, 33219, 33238, 33243, 157917, 33252,
+    157930, 33260, 33277, 33279, 158063, 33284, 158173, 33305, 33314, 158238,
+    33340, 33353, 33349, 158296, 17526, 17530, 33367, 158348, 33372, 33379,
+    158391, 17553, 33405, 33407, 33411, 33418, 33427, {f: 2, c: 33447}, 33458,
+    33460, 33466, 33468, 33506, 33512, 33527, {f: 2, c: 33543}, 33548, 33620,
+    33563, 33565, 33584, 33596, 33604, 33623, 17598, 17620, 17587,
+    {f: 2, c: 33684}, 33691, 33693, 33737, 33744, 33748, 33757, 33765, 33785,
+    33813, 158835, 33815, 33849, 33871, {f: 2, c: 33873}, {f: 2, c: 33881},
+    33884, 158941, 33893, 33912, 33916, 33921, 17677, 33943, 33958, 33982,
+    17672, {f: 2, c: 33998}, 34003, 159333, 34023, 34026, 34031, 34033, 34042,
+    34075, {f: 2, c: 34084}, 34091, 34127, 34159, 17731, 34129,
+    {f: 2, c: 34145}, 159636, 34171, 34173, 34175, 34177, 34182, 34195, 34205,
+    34207, 159736, {f: 2, c: 159734}, 34236, 34247, 34250, {f: 2, c: 34264},
+    34271, 34273, 34278, 34294, 34304, 34321, 34334, 34337, 34340, 34343,
+    160013, 34361, 34364, 160057, 34368, 34387, 34390, 34423, 34439, 34441,
+    {f: 2, c: 34460}, 34481, 34483, 34497, 34499, 34513, 34517, 34519, 34531,
+    34534, 17848, 34565, 34567, 34574, 34576, 34591, 34593, 34595, 34609,
+    34618, 34624, 34627, 34641, 34648, {f: 2, c: 34660}, 34674, 34684, 160731,
+    160730, 34727, 34697, 34699, 34707, 34720, 160766, 17893, 34750, 160784,
+    34753, 34766, 34783, 160841, 34787, {f: 2, c: 34789}, 34794, 34835, 34856,
+    34862, 34866, 34876, 17935, 34890, 34904, 161301, 161300, 34921, 161329,
+    34927, 34976, 35004, 35008, 161427, 35025, 35027, 17985, 35073, 161550,
+    35127, 161571, 35138, 35141, 35145, 161618, 35170, 35209, 35216, 35231,
+    35248, 35255, 35288, 35307, 18081, 35315, 35325, 35327, 18095, 35345,
+    35348, 162181, 35361, 35381, 35390, 35397, 35405, 35416, 35502, 35472,
+    35511, 35543, 35580, 162436, 35594, 35589, 35597, 35612, 35629, 18188,
+    35665, 35678, 35702, 35713, 35723, {f: 2, c: 35732}, 35897, 162739, 35901,
+    162750, 162759, 35909, 35919, 35927, 35945, 35949, 163000, 35987, 35986,
+    35993, 18276, 35995, 36054, 36053, 163232, 36081, 163344, 36105, 36110,
+    36296, 36313, 36364, 18429, 36349, 36358, 163978, 36372, 36374,
+    {f: 2, c: 36385}, 36391, 164027, 18454, 36406, 36409, 36436, 36450, 36461,
+    36463, 36504, 36510, 36533, 36539, 164482, 18510, 164595, 36608, 36616,
+    36651, 36672, 36682, 36696, 164876, 36772, 36788, 164949, 36801, 36806,
+    64036, 36810, 36813, 36819, 36821, 36849, 36853, 36859, 36876, 36919,
+    165227, 36931, 36957, {f: 2, c: 165320}, 36997, 37004, 37008, 37025, 18613,
+    37040, 37046, 37059, 37064, 165591, 37084, 37087, 165626, 37110, 37106,
+    37120, 37099, {f: 2, c: 37118}, 37124, 37126, 37144, 37150, 37175, 37177,
+    {f: 2, c: 37190}, 37207, 37209, 37236, 37241, 37253, 37299, 37302,
+    {f: 2, c: 37315}, 166217, 166214, 37356, 37377, {f: 2, c: 37398}, 166251,
+    37442, 37450, 37462, 37473, 37477, 37480, 166280, {f: 2, c: 37500}, 37503,
+    37513, 37517, 37527, 37529, 37535, 37547, {f: 2, c: 166330}, 37554,
+    {f: 2, c: 37567}, 37574, 37582, 37605, 37649, 166430, 166441, 37623, 37673,
+    166513, 166467, 37713, 37722, 37739, 37745, 37747, 37793, 166553, 166605,
+    37768, 37771, 37775, 37790, 37877, 166628, 166621, 37873, 37831, 37852,
+    37863, 37897, {f: 2, c: 37910}, 37883, 37938, 37947, 166849, 166895, 37997,
+    37999, 38265, 38278, {f: 2, c: 38284}, 167184, 167281, 38344, 167419,
+    167455, 38444, {f: 2, c: 38451}, 167478, 38460, 38497, 167561, 38530,
+    167659, 38554, 167730, 18919, 38579, 38586, 38589, 18938, 167928, 38616,
+    38618, 38621, 18948, 38676, 38691, 18985, 38710, 38721, 38727, 38743,
+    38747, 38762, 168608, 168625, 38806, 38814, {f: 2, c: 38833}, 38846, 38860,
+    38865, 38868, 38872, 38881, 38897, 38916, 38925, 38932, 38934, 19132,
+    169104, {f: 2, c: 38962}, 38949, 38983, 39014, 39083, 39085, 39088, 169423,
+    39095, {f: 2, c: 39099}, 39106, 39111, 39115, 39137, 39139, 39146,
+    {f: 2, c: 39152}, 39155, 39176, 19259, 169712, {f: 2, c: 39190}, 169753,
+    {f: 3, c: 39194}, 169808, 39217, {f: 3, c: 39226}, 39233, 39238, 39246,
+    39264, 39331, 39334, 39357, 39359, 39363, 39380, 39385, 39390, 170182,
+    39408, 39417, 39420, 39434, 39441, 39450, 39456, 39473, 39492, 39500,
+    39512, 19394, 39599, 19402, 39607, 19410, 39609, 170610, 39622, 39632,
+    39634, 39637, 39648, 39653, 39657, 39692, 39696, 39698, 39702, 39708,
+    39723, 39741, 19488, 39755, 39779, 39781, {f: 2, c: 39787},
+    {f: 2, c: 39798}, 39846, 39852, 171483, 39858, 39864, 39870, 39923, 39896,
+    39901, 39914, 39919, 39918, 171541, 171658, 171593, 39958,
+    {f: 3, c: 39960}, 39965, 39970, 39977, 171716, 39985, 39991, 40005, 40028,
+    171753, {f: 2, c: 40009}, 171739, 40020, 40024, 40027, 40029, 40031,
+    {f: 3, c: 40041}, {f: 2, c: 40045}, 40050, 40053, 40058, 40166, 40178,
+    40203, [171982, 171991], 40209, {f: 2, c: 40215}, 172079, 19652, 172058,
+    40242, 19665, 40266, 40287, 40290, 172281, 172162, 40307, {f: 2, c: 40310},
+    40324, 40345, 40353, 40383, 40373, 40377, 40381, 40393, 40410, 40416,
+    40419, 19719, 40458, 40450, 40461, 40476, 40571, 139800, 40576, 40581,
+    40603, 172940, 40637, 173111, 40671, 40703, 40706, 19831, 40707, 40762,
+    40765, 40774, 40787, 40789, 40792, 173553, 40797, 173570, 40809, 40813,
+    40816, 173746, 11948, 13844, 14509, 15820, 16348, 17854, 17936, 19326,
+    19512, 19681, 19980, {f: 2, c: 20003}, 20089, 20211, 20236, 20249, 20267,
+    20270, 20273, 20356, 20382, 20407, 20484, 20492, 20556, 20575, 20578,
+    20599, 20622, 20638, 20642, 20675, 20712, 20721, 20734, 20743,
+    {f: 3, c: 20748}, 20787, 20792, 20852, 20868, 20920, 20922, 20936, 20943,
+    20945, {f: 2, c: 20947}, 20952, 20959, 20997, 21030, 21032, 21035,
+    {f: 2, c: 21041}, 21045, 21052, 21082, 21088, 21102, {f: 2, c: 21112},
+    21130, 21132, 21217, 21225, 21233, 21251, 21265, 21279, 21293, 21298,
+    21309, 21349, 21357, 21369, 21374, 21396, 21401, 21418, 21423, 21434,
+    21441, {f: 2, c: 21444}, 21472, 21523, 21546, 21553, {f: 2, c: 21556},
+    21580, 21671, 21674, 21681, 21691, 21710, 21738, 21756, 21765, 21768,
+    21781, 21799, 21802, 21814, 21841, 21862, 21903, 21906, 21908, 21924,
+    21938, 21955, 21958, 21971, 21979, 21996, 21998, 22001, 22006, 22008,
+    22021, 22029, {f: 2, c: 22033}, 22060, 22069, 22073, 22093, 22100, 22149,
+    22175, 22182, 22199, 22220, 22223, 22233, 22241, 22251, 22253, 22257,
+    22279, 22284, {f: 2, c: 22298}, 22301, 22316, 22318, {f: 2, c: 22333},
+    22367, 22379, 22381, 22394, 22403, 22423, 22446, 22485, 22503, 22541,
+    22566, 22605, 22607, 22623, 22637, 22655, 22657, 22680, 22716, 22815,
+    22819, 22873, 22905, 22935, 22959, 22963, 23007, 23025, 23032, 23218,
+    23224, 23274, 23286, 23323, 23325, 23329, 23352, 23479, 23511, 23520,
+    23583, 23594, 23596, 23606, 23641, 23644, 23661, 23773, 23809, 23860,
+    23869, 23897, 23934, 23939, 24007, 24057, 24104, 24114, 24117, 24155,
+    24168, 24170, 24183, 24192, 24203, 24243, 24253, 24273, {f: 2, c: 24276},
+    24397, 24492, 24554, 24583, 24649, 24660, 24679, 24763, 24772, 24829,
+    24842, 24854, 24874, 24886, 24926, 24932, 24955, 24957, 24959, 24989,
+    25016, 25052, 25058, 25061, 25064, 25092, 25095, 25137, 25145, 25149,
+    25210, 25232, 25256, 25306, 25332, 25366, 25386, 25398, 25414, 25419,
+    25427, 25457, 25461, 25471, 25474, 25482, {f: 2, c: 25518}, 25578,
+    {f: 2, c: 25592}, 25618, 25624, 25632, 25636, 25642, 25653, 25661, 25663,
+    25682, 25695, 25716, 25744, {f: 2, c: 25752}, 25772, 25779, 25837, 25840,
+    25883, 25887, 25902, 25929, 25952, 26002, 26005, 26036, 26046, 26056,
+    26062, 26064, 26079, 26238, {f: 2, c: 26251}, 26291, 26304, 26319, 26405,
+    26421, 26453, 26496, 26511, 26513, 26532, 26545, 26549, 26558, 26664,
+    26758, 26859, 26869, 26903, 26931, 26936, 26971, 26981, 27048, 27051,
+    27055, 27109, 27121, 27210, 27221, 27239, 27249, 27311, {f: 2, c: 27336},
+    27395, 27451, 27455, {f: 2, c: 27517}, 27568, 27639, 27641, 27652, 27657,
+    27661, 27692, 27722, 27730, 27732, 27769, 27820, 27828, 27858, 28001,
+    28028, 28089, 28144, 28229, 28275, 28283, 28285, 28297, 28348,
+    {f: 2, c: 28378}, 28454, 28457, 28464, 28551, 28573, 28590, 28599, 28685,
+    28704, 28745, 28824, 28848, {f: 2, c: 28885}, 28997, 29106, 29172, 29207,
+    29215, 29251, {f: 2, c: 29263}, 29274, 29280, 29288, 29303, 29316, 29385,
+    29413, 29428, 29442, 29451, 29470, 29474, {f: 2, c: 29498}, 29517, 29528,
+    29543, 29810, 29871, 29919, 29924, 29940, 29947, 29974, 29985, 30015,
+    30046, 30105, 30116, 30145, 30148, 30156, 30167, 30172, 30177, 30191,
+    30212, 30220, 30237, 30258, 30264, 30277, 30282, 30303, 30381, 30397,
+    30425, 30443, 30448, 30457, 30464, 30478, 30498, 30504, 30511, 30521,
+    30526, 30533, 30538, 30543, 30558, 30564, 30567, 30572, 30596,
+    {f: 2, c: 30604}, 30614, 30631, 30639, 30647, 30654, 30665, 30673, 30681,
+    30705, 30775, 30812, 30846, 30872, 30881, 30897, 30899, 30921, 30931,
+    30988, 31007, {f: 2, c: 31015}, 31039, 31042, 31060, 31083, 31100, 31147,
+    31172, 31210, 31234, 31244, 31280, 31290, 31300, 31360, 31366, 31380,
+    31413, 31421, 31486, 31531, 31607, 31648, 31660, 31664, 31720, 31730,
+    31736, 31740, 31742, 31753, 31784, 31791, 31810, {f: 2, c: 31826},
+    {f: 3, c: 31835}, 31858, 31869, 31879, 31902, 31930, 31943, 31955, 31962,
+    32060, 32077, 32130, 32133, 32141, 32145, 32158, 32179, 32185, 32208,
+    32229, {f: 2, c: 32245}, 32303, 32310, 32324, 32367, 32376, 32385, 32573,
+    32603, 32605, 32613, 32625, {f: 2, c: 32639}, 32651, 32674,
+    {f: 3, c: 32765}, 32775, 32781, 32798, 32825, 32904, 32910, 32975, 32980,
+    33005, 33008, 33015, 33018, 33022, 33027, 33047, 33072, 33111, 33135,
+    33139, 33163, 33168, 33179, 33182, 33227, 33237, {f: 2, c: 33245}, 33249,
+    33263, 33270, 33280, 33291, {f: 2, c: 33299}, 33306, 33338, 33348, 33389,
+    33412, 33417, 33425, 33450, 33456, 33488, 33514, 33519, 33526, 33622,
+    33656, 33784, 33788, 33880, 33939, 33969, 33981, 34043, 34118, 34134,
+    34141, 34181, 34200, 34370, 34374, 34496, 34580, 34594, 34606, 34617,
+    34653, 34683, 34700, 34702, {f: 2, c: 34711}, 34718, 34723, 34734, 34751,
+    34761, 34778, 34840, 34843, 34861, 34874, 34885, 34891, 34894, 34901,
+    34906, 34926, {f: 3, c: 34970}, 35021, 35040, 35055, {f: 2, c: 35086},
+    35110, 35125, 35162, 35164, 35179, 35184, 35196, 35237, 35253, 35260,
+    35285, 35401, 35415, 35431, 35454, 35462, 35478, 35510, 35529, 35537,
+    35549, 35564, 35573, 35590, 35599, 35601, 35653, 35666, 35693, 35704,
+    35708, 35710, 35717, 35743, 35915, 35923, 35963, 36026, 36037, 36041,
+    36050, 36076, 36085, 36087, 36097, 36099, 36119, 36124, 36206, 36241,
+    36255, 36267, 36274, 36309, 36327, {f: 2, c: 36337}, 36340, 36353, 36363,
+    36390, 36401, {f: 2, c: 36416}, 36429, 36431, 36444, 36449, 36457, 36465,
+    36469, 36471, 36489, 36496, 36501, 36506, 36519, 36521, 36525, 36584,
+    36592, 36615, 36632, 36645, 36647, 36652, 36661, 36666, 36675, 36679,
+    36689, 36693, {f: 3, c: 36768}, 36773, 36868, 36891, 36911, 36940, 36955,
+    36976, 36980, 36985, 37003, 37016, 37024, 37042, 37053, 37065, 37104,
+    37125, 37157, 37210, 37223, 37242, 37258, 37265, 37269, 37296, 37307,
+    37309, 37314, 37317, 37376, 37385, 37411, 37494, 37518, 37551,
+    {f: 2, c: 37563}, 37569, 37571, 37573, 37576, 37652, 37683, 37686, 37720,
+    37759, 37762, 37770, 37819, 37836, 37862, 37881, 37890, {f: 2, c: 37901},
+    37934, 37964, 38280, 38305, 38335, 38342, 38345, {f: 2, c: 38353}, 38368,
+    38372, 38374, 38436, 38449, 38456, 38461, 38484, 38516, 38523, 38527,
+    38529, 38531, 38537, 38550, 38574, 38659, 38683, {f: 2, c: 38689}, 38696,
+    38705, 38759, 38774, 38781, 38783, 38809, 38815, 38828, 38841, 38861,
+    38880, 38895, 38919, 38950, 38958, {f: 2, c: 39010}, 39092, 39109, 39170,
+    39185, 39189, 39221, 39240, 39252, 39262, 39393, 39436, 39440, 39459,
+    39489, 39505, {f: 2, c: 39613}, 39681, 39689, 39691, {f: 2, c: 39693},
+    39705, 39733, 39752, 39765, 39784, 39808, 39814, 39824, 39837, 39856,
+    39871, 39880, 39935, 39938, 39964, 39989, 40004, 40022, 40033, 40040,
+    40240, 40253, 40298, 40315, 40421, 40425, 40435, 40570, {f: 3, c: 40578},
+    40624, 40676, 40688, 40690, 40713, 40719, 40724, 40731, 40738, 40742,
+    {f: 2, c: 40746}, 40756, 40794, 40815, 40862, 40869, 131317, 151044,
+    151538, 163187, 194581, 194630, 194713, 194726, 194789, 195038, 13790,
+    {s: 4}, 172722, 0, 0, 131416, {s: 4}, 132529, 0, 0, 132844, {s: 6}, 134488,
+    {s: 21}, 154060, {s: 9}, 14756, 14776, 142914, 0, 0, 14940, 0, 0, 143339,
+    0, 0, 162228, 0, 15044, 15051, {s: 5}, 14981, {s: 8}, 15347, 27384, {s: 5},
+    15665, {s: 9}, 147531, 0, 15936, 14497, {s: 34}, 158878, {s: 12}, 18207,
+    162876, {s: 4}, 18462, {s: 71}, 39709, 39724, 20482, 20958, 21255, 23532,
+    63784, 26142, 63785, 28746, 64021, 21857, 27706, 31328, 156492, 34819,
+    38315, 38741, 171581, 173594],
+  'Adobe-Korea1': [{f: 95, c: 32}, 8361, 8208, 169, 0, 0, [12288, 12644],
+    {f: 2, c: 12289}, 12539, 8229, [8230, 8943], 168, 12291, {f: 2, c: 8211},
+    8214, 65340, 65374, {f: 2, c: 8216}, {f: 2, c: 8220}, {f: 2, c: 12308},
+    {f: 10, c: 12296}, 177, 215, 247, 8800, {f: 2, c: 8804}, 8734, 8756, 176,
+    {f: 2, c: 8242}, 8451, 8491, {f: 2, c: 65504}, 65509, 9794, 9792, 8736,
+    8869, 8978, 8706, 8711, 8801, 8786, 167, 8251, 9734, 9733, 9675, 9679,
+    9678, 9671, 9670, 9633, 9632, 9651, 9650, 9661, 9660, 8594,
+    {f: 2, c: 8592}, {f: 2, c: 8595}, 12307, 171, 187, 8730, 8765, 8733, 8757,
+    {f: 2, c: 8747}, 8712, 8715, {f: 2, c: 8838}, {f: 2, c: 8834}, 8746, 8745,
+    {f: 2, c: 8743}, 65506, 8658, 8660, 8704, 8707, 180, 732, 711, 728, 733,
+    730, 729, 184, 731, 161, 191, 8758, 8750, 8721, 8719, 164, 8457, 8240,
+    9665, 9664, 9655, 9654, 9828, {f: 2, c: 9824}, 9829, 9831, 9827, 9673,
+    9672, 9635, {f: 2, c: 9680}, 9618, {f: 2, c: 9636}, 9640, 9639, 9638, 9641,
+    9832, 9743, 9742, 9756, 9758, 182, {f: 2, c: 8224}, 8597, 8599, 8601, 8598,
+    8600, 9837, {f: 2, c: 9833}, 9836, 12927, 12828, 8470, 13255, 8482, 13250,
+    13272, 8481, {f: 59, c: 65281}, 65510, {f: 33, c: 65341}, 65507,
+    {f: 51, c: 12593}, {f: 42, c: 12645}, {f: 10, c: 8560}, {f: 10, c: 8544},
+    {f: 17, c: 913}, {f: 7, c: 931}, {f: 17, c: 945}, {f: 7, c: 963}, 9472,
+    9474, 9484, 9488, 9496, 9492, 9500, 9516, 9508, 9524, 9532, 9473, 9475,
+    9487, 9491, 9499, 9495, 9507, 9523, 9515, 9531, 9547, 9504, 9519, 9512,
+    9527, 9535, 9501, 9520, 9509, 9528, 9538, 9490, 9489, 9498, 9497, 9494,
+    9493, 9486, 9485, {f: 2, c: 9502}, {f: 2, c: 9505}, {f: 2, c: 9510},
+    {f: 2, c: 9513}, {f: 2, c: 9517}, {f: 2, c: 9521}, {f: 2, c: 9525},
+    {f: 2, c: 9529}, {f: 2, c: 9533}, {f: 2, c: 9536}, {f: 8, c: 9539},
+    {f: 3, c: 13205}, 8467, 13208, 13252, {f: 4, c: 13219}, {f: 10, c: 13209},
+    13258, {f: 3, c: 13197}, 13263, {f: 2, c: 13192}, 13256, {f: 2, c: 13223},
+    {f: 10, c: 13232}, {f: 5, c: 13184}, {f: 6, c: 13242}, {f: 5, c: 13200},
+    8486, {f: 2, c: 13248}, {f: 3, c: 13194}, 13270, 13253, {f: 3, c: 13229},
+    13275, {f: 4, c: 13225}, 13277, 13264, 13267, 13251, 13257, 13276, 13254,
+    198, 208, 170, 294, 306, 319, 321, 216, 338, 186, 222, 358, 330,
+    {f: 28, c: 12896}, {f: 26, c: 9424}, {f: 15, c: 9312}, 189,
+    {f: 2, c: 8531}, 188, 190, {f: 4, c: 8539}, 230, 273, 240, 295, 305, 307,
+    312, 320, 322, 248, 339, 223, 254, 359, 331, 329, {f: 28, c: 12800},
+    {f: 26, c: 9372}, {f: 15, c: 9332}, 185, {f: 2, c: 178}, 8308, 8319,
+    {f: 4, c: 8321}, {f: 83, c: 12353}, {f: 86, c: 12449}, {f: 6, c: 1040},
+    1025, {f: 32, c: 1046}, 1105, {f: 26, c: 1078}, {f: 2, c: 44032}, 44036,
+    {f: 4, c: 44039}, {f: 8, c: 44048}, {f: 5, c: 44057}, 44064, 44068,
+    {f: 2, c: 44076}, {f: 3, c: 44079}, {f: 2, c: 44088}, 44092, 44096, 44107,
+    44109, 44116, 44120, 44124, {f: 2, c: 44144}, 44148, {f: 2, c: 44151},
+    44154, {f: 2, c: 44160}, {f: 4, c: 44163}, {f: 4, c: 44169}, 44176, 44180,
+    {f: 2, c: 44188}, {f: 3, c: 44191}, {f: 3, c: 44200}, 44204,
+    {f: 2, c: 44207}, {f: 2, c: 44216}, {f: 3, c: 44219}, 44225, 44228, 44232,
+    44236, 44245, 44247, {f: 2, c: 44256}, 44260, {f: 2, c: 44263}, 44266,
+    44268, {f: 3, c: 44271}, 44275, {f: 2, c: 44277}, {f: 2, c: 44284}, 44288,
+    44292, 44294, {f: 2, c: 44300}, 44303, 44305, 44312, 44316, 44320, 44329,
+    {f: 2, c: 44332}, {f: 2, c: 44340}, 44344, 44348, {f: 2, c: 44356}, 44359,
+    44361, 44368, 44372, 44376, 44385, 44387, {f: 2, c: 44396}, 44400,
+    {f: 4, c: 44403}, {f: 3, c: 44411}, 44415, {f: 2, c: 44417},
+    {f: 2, c: 44424}, 44428, 44432, {f: 2, c: 44444}, 44452, 44471,
+    {f: 2, c: 44480}, 44484, 44488, {f: 2, c: 44496}, 44499, 44508, 44512,
+    44516, {f: 2, c: 44536}, 44540, {f: 3, c: 44543}, {f: 2, c: 44552}, 44555,
+    44557, 44564, {f: 2, c: 44592}, 44596, {f: 2, c: 44599}, 44602,
+    {f: 2, c: 44608}, 44611, {f: 2, c: 44613}, 44618, {f: 3, c: 44620}, 44624,
+    44628, 44630, {f: 2, c: 44636}, {f: 3, c: 44639}, 44645, {f: 2, c: 44648},
+    44652, 44656, {f: 2, c: 44664}, {f: 3, c: 44667}, {f: 2, c: 44676}, 44684,
+    {f: 3, c: 44732}, 44736, 44740, {f: 2, c: 44748}, {f: 3, c: 44751},
+    {f: 2, c: 44760}, 44764, 44776, 44779, 44781, 44788, 44792, 44796,
+    {f: 2, c: 44807}, 44813, 44816, {f: 2, c: 44844}, 44848, 44850, 44852,
+    {f: 2, c: 44860}, 44863, {f: 3, c: 44865}, {f: 2, c: 44872}, 44880,
+    {f: 2, c: 44892}, {f: 2, c: 44900}, 44921, 44928, 44932, 44936,
+    {f: 2, c: 44944}, 44949, 44956, {f: 2, c: 44984}, 44988, 44992,
+    {f: 3, c: 44999}, 45003, {f: 2, c: 45005}, 45012, 45020, {f: 2, c: 45032},
+    {f: 2, c: 45040}, 45044, 45048, {f: 2, c: 45056}, 45060, 45068, 45072,
+    45076, {f: 2, c: 45084}, 45096, {f: 2, c: 45124}, 45128, 45130, 45132,
+    45134, {f: 3, c: 45139}, 45143, 45145, 45149, {f: 2, c: 45180}, 45184,
+    45188, {f: 2, c: 45196}, 45199, 45201, {f: 3, c: 45208}, 45212,
+    {f: 4, c: 45215}, {f: 2, c: 45224}, {f: 5, c: 45227}, 45233,
+    {f: 3, c: 45235}, 45240, 45244, {f: 2, c: 45252}, {f: 3, c: 45255},
+    {f: 2, c: 45264}, 45268, 45272, 45280, 45285, {f: 2, c: 45320},
+    {f: 2, c: 45323}, 45328, {f: 2, c: 45330}, {f: 2, c: 45336},
+    {f: 3, c: 45339}, {f: 3, c: 45347}, 45352, 45356, {f: 2, c: 45364},
+    {f: 3, c: 45367}, {f: 2, c: 45376}, 45380, 45384, {f: 2, c: 45392},
+    {f: 2, c: 45396}, 45400, 45404, 45408, {f: 2, c: 45432}, 45436, 45440,
+    45442, {f: 2, c: 45448}, 45451, 45453, {f: 3, c: 45458}, 45464, 45468,
+    45480, 45516, 45520, 45524, {f: 2, c: 45532}, 45535, {f: 2, c: 45544},
+    45548, 45552, 45561, 45563, 45565, {f: 2, c: 45572}, 45576,
+    {f: 2, c: 45579}, {f: 2, c: 45588}, 45591, 45593, 45600, 45620, 45628,
+    45656, 45660, 45664, {f: 2, c: 45672}, {f: 2, c: 45684}, 45692,
+    {f: 2, c: 45700}, 45705, {f: 2, c: 45712}, 45716, {f: 3, c: 45720},
+    {f: 2, c: 45728}, 45731, {f: 2, c: 45733}, 45738, 45740, 45744, 45748,
+    {f: 2, c: 45768}, 45772, 45776, 45778, {f: 2, c: 45784}, 45787, 45789,
+    45794, {f: 3, c: 45796}, 45800, {f: 5, c: 45803}, {f: 3, c: 45811},
+    {f: 5, c: 45815}, {f: 3, c: 45823}, 45828, 45832, {f: 2, c: 45840},
+    {f: 3, c: 45843}, 45852, {f: 3, c: 45908}, 45912, {f: 2, c: 45915},
+    {f: 2, c: 45918}, {f: 2, c: 45924}, 45927, 45929, 45931, 45934,
+    {f: 2, c: 45936}, 45940, 45944, {f: 2, c: 45952}, {f: 3, c: 45955}, 45964,
+    45968, 45972, {f: 2, c: 45984}, 45992, 45996, {f: 2, c: 46020}, 46024,
+    {f: 2, c: 46027}, 46030, 46032, {f: 2, c: 46036}, 46039, 46041, 46043,
+    46045, 46048, 46052, 46056, 46076, 46096, 46104, 46108, 46112,
+    {f: 2, c: 46120}, 46123, 46132, {f: 2, c: 46160}, 46164, 46168,
+    {f: 2, c: 46176}, 46179, 46181, 46188, 46208, 46216, 46237, 46244, 46248,
+    46252, 46261, 46263, 46265, 46272, 46276, 46280, 46288, 46293,
+    {f: 2, c: 46300}, 46304, {f: 2, c: 46307}, 46310, {f: 2, c: 46316}, 46319,
+    46321, 46328, {f: 2, c: 46356}, 46360, {f: 2, c: 46363}, {f: 2, c: 46372},
+    {f: 4, c: 46375}, {f: 2, c: 46384}, 46388, 46392, {f: 2, c: 46400},
+    {f: 3, c: 46403}, {f: 3, c: 46411}, 46416, 46420, {f: 2, c: 46428},
+    {f: 3, c: 46431}, {f: 2, c: 46496}, 46500, 46504, {f: 2, c: 46506},
+    {f: 2, c: 46512}, {f: 3, c: 46515}, {f: 3, c: 46523}, 46528, 46532,
+    {f: 2, c: 46540}, {f: 3, c: 46543}, 46552, 46572, {f: 2, c: 46608}, 46612,
+    46616, 46629, 46636, 46644, 46664, 46692, 46696, {f: 2, c: 46748}, 46752,
+    46756, {f: 2, c: 46763}, 46769, 46804, 46832, 46836, 46840,
+    {f: 2, c: 46848}, 46853, {f: 2, c: 46888}, 46892, {f: 2, c: 46895},
+    {f: 2, c: 46904}, 46907, 46916, 46920, 46924, {f: 2, c: 46932}, 46944,
+    46948, 46952, {f: 2, c: 46960}, 46963, 46965, {f: 2, c: 46972}, 46976,
+    46980, {f: 2, c: 46988}, {f: 4, c: 46991}, {f: 4, c: 46998}, 47004, 47008,
+    {f: 2, c: 47016}, {f: 3, c: 47019}, {f: 2, c: 47028}, 47032, 47047, 47049,
+    {f: 2, c: 47084}, 47088, 47092, {f: 2, c: 47100}, {f: 3, c: 47103},
+    {f: 3, c: 47111}, 47116, 47120, {f: 2, c: 47128}, 47131, 47133,
+    {f: 2, c: 47140}, 47144, 47148, {f: 2, c: 47156}, {f: 3, c: 47159}, 47168,
+    47172, 47185, 47187, {f: 2, c: 47196}, 47200, 47204, {f: 2, c: 47212},
+    47215, 47217, 47224, 47228, 47245, 47272, 47280, 47284, 47288,
+    {f: 2, c: 47296}, 47299, 47301, 47308, 47312, 47316, 47325, 47327, 47329,
+    {f: 2, c: 47336}, 47340, 47344, {f: 2, c: 47352}, 47355, 47357, 47364,
+    47384, 47392, {f: 2, c: 47420}, 47424, 47428, 47436, 47439, 47441,
+    {f: 2, c: 47448}, 47452, 47456, {f: 2, c: 47464}, 47467, 47469,
+    {f: 2, c: 47476}, 47480, 47484, {f: 2, c: 47492}, 47495, {f: 2, c: 47497},
+    {f: 2, c: 47501}, {f: 2, c: 47532}, 47536, 47540, {f: 2, c: 47548}, 47551,
+    47553, {f: 2, c: 47560}, 47564, {f: 5, c: 47566}, {f: 2, c: 47576}, 47579,
+    {f: 2, c: 47581}, 47585, {f: 3, c: 47587}, 47592, 47596, {f: 2, c: 47604},
+    {f: 4, c: 47607}, {f: 2, c: 47616}, 47624, 47637, {f: 2, c: 47672}, 47676,
+    47680, 47682, {f: 2, c: 47688}, 47691, {f: 2, c: 47693}, {f: 3, c: 47699},
+    47704, 47708, {f: 2, c: 47716}, {f: 3, c: 47719}, {f: 2, c: 47728}, 47732,
+    47736, {f: 3, c: 47747}, 47751, 47756, {f: 2, c: 47784}, {f: 2, c: 47787},
+    47792, 47794, {f: 2, c: 47800}, 47803, 47805, 47812, 47816,
+    {f: 2, c: 47832}, 47868, 47872, 47876, 47885, 47887, 47889, 47896, 47900,
+    47904, 47913, 47915, {f: 3, c: 47924}, 47928, {f: 4, c: 47931},
+    {f: 2, c: 47940}, 47943, 47945, 47949, {f: 2, c: 47951}, 47956, 47960,
+    47969, 47971, 47980, 48008, 48012, 48016, 48036, 48040, 48044, 48052,
+    48055, 48064, 48068, 48072, 48080, 48083, {f: 2, c: 48120}, 48124,
+    {f: 2, c: 48127}, 48130, {f: 2, c: 48136}, {f: 3, c: 48139}, 48143, 48145,
+    {f: 5, c: 48148}, {f: 5, c: 48155}, {f: 2, c: 48164}, 48167, 48169, 48173,
+    {f: 2, c: 48176}, 48180, 48184, {f: 2, c: 48192}, {f: 3, c: 48195}, 48201,
+    {f: 2, c: 48204}, 48208, 48221, {f: 2, c: 48260}, 48264, {f: 2, c: 48267},
+    48270, {f: 2, c: 48276}, 48279, {f: 2, c: 48281}, {f: 2, c: 48288}, 48292,
+    {f: 2, c: 48295}, {f: 2, c: 48304}, {f: 3, c: 48307}, {f: 2, c: 48316},
+    48320, 48324, 48333, {f: 3, c: 48335}, 48341, 48344, 48348,
+    {f: 3, c: 48372}, 48376, 48380, {f: 2, c: 48388}, 48391, 48393, 48400,
+    48404, 48420, 48428, 48448, {f: 2, c: 48456}, 48460, 48464,
+    {f: 2, c: 48472}, 48484, 48488, {f: 2, c: 48512}, 48516, {f: 4, c: 48519},
+    {f: 2, c: 48528}, 48531, 48533, {f: 2, c: 48537}, 48540, 48548, 48560,
+    48568, {f: 2, c: 48596}, 48600, 48604, 48617, 48624, 48628, 48632, 48640,
+    48643, 48645, {f: 2, c: 48652}, 48656, 48660, {f: 2, c: 48668}, 48671,
+    {f: 2, c: 48708}, 48712, 48716, 48718, {f: 2, c: 48724}, 48727,
+    {f: 3, c: 48729}, {f: 2, c: 48736}, 48740, 48744, 48746, {f: 2, c: 48752},
+    {f: 3, c: 48755}, {f: 3, c: 48763}, 48768, 48772, {f: 2, c: 48780},
+    {f: 3, c: 48783}, {f: 2, c: 48792}, 48808, {f: 2, c: 48848}, 48852,
+    {f: 2, c: 48855}, 48864, {f: 3, c: 48867}, 48876, 48897, {f: 2, c: 48904},
+    {f: 2, c: 48920}, {f: 3, c: 48923}, {f: 2, c: 48960}, 48964, 48968,
+    {f: 2, c: 48976}, 48981, 49044, 49072, 49093, {f: 2, c: 49100}, 49104,
+    49108, 49116, 49119, 49121, 49212, 49233, 49240, 49244, 49248,
+    {f: 2, c: 49256}, {f: 2, c: 49296}, 49300, 49304, {f: 2, c: 49312}, 49315,
+    49317, {f: 2, c: 49324}, {f: 2, c: 49327}, {f: 4, c: 49331},
+    {f: 2, c: 49340}, {f: 3, c: 49343}, 49349, {f: 2, c: 49352}, 49356, 49360,
+    {f: 2, c: 49368}, {f: 3, c: 49371}, {f: 2, c: 49380}, 49384, 49388,
+    {f: 2, c: 49396}, 49399, 49401, 49408, 49412, 49416, 49424, 49429,
+    {f: 5, c: 49436}, {f: 2, c: 49443}, {f: 2, c: 49446}, {f: 2, c: 49452},
+    {f: 3, c: 49455}, 49462, {f: 2, c: 49464}, 49468, 49472, {f: 2, c: 49480},
+    {f: 3, c: 49483}, {f: 2, c: 49492}, 49496, 49500, {f: 2, c: 49508},
+    {f: 3, c: 49511}, 49520, 49524, 49528, 49541, {f: 3, c: 49548}, 49552,
+    49556, 49558, {f: 2, c: 49564}, 49567, 49569, 49573, {f: 2, c: 49576},
+    49580, 49584, 49597, 49604, 49608, 49612, 49620, {f: 2, c: 49623}, 49632,
+    49636, 49640, {f: 2, c: 49648}, 49651, {f: 2, c: 49660}, 49664, 49668,
+    {f: 2, c: 49676}, 49679, 49681, {f: 2, c: 49688}, 49692, {f: 2, c: 49695},
+    {f: 2, c: 49704}, 49707, 49709, 49711, {f: 2, c: 49713}, 49716, 49736,
+    {f: 2, c: 49744}, 49748, 49752, 49760, 49765, {f: 2, c: 49772}, 49776,
+    49780, {f: 2, c: 49788}, 49791, 49793, {f: 2, c: 49800}, 49808, 49816,
+    49819, 49821, {f: 2, c: 49828}, 49832, {f: 2, c: 49836}, {f: 2, c: 49844},
+    49847, 49849, {f: 2, c: 49884}, 49888, {f: 2, c: 49891}, {f: 3, c: 49899},
+    49903, 49905, 49910, {f: 2, c: 49912}, {f: 2, c: 49915}, 49920,
+    {f: 2, c: 49928}, {f: 2, c: 49932}, {f: 3, c: 49939}, 49944, 49948,
+    {f: 2, c: 49956}, {f: 2, c: 49960}, 49989, {f: 2, c: 50024}, 50028, 50032,
+    50034, {f: 2, c: 50040}, {f: 2, c: 50044}, 50052, 50056, 50060, 50112,
+    {f: 2, c: 50136}, 50140, {f: 2, c: 50143}, 50146, {f: 2, c: 50152}, 50157,
+    {f: 2, c: 50164}, 50168, 50184, 50192, 50212, 50220, 50224, 50228,
+    {f: 2, c: 50236}, 50248, {f: 2, c: 50276}, 50280, 50284, {f: 2, c: 50292},
+    50297, 50304, 50324, 50332, 50360, 50364, 50409, {f: 2, c: 50416}, 50420,
+    50424, 50426, {f: 3, c: 50431}, 50444, 50448, 50452, 50460,
+    {f: 2, c: 50472}, 50476, 50480, {f: 2, c: 50488}, 50491, 50493,
+    {f: 2, c: 50500}, {f: 3, c: 50504}, {f: 3, c: 50508}, {f: 3, c: 50515},
+    {f: 3, c: 50519}, {f: 2, c: 50525}, {f: 2, c: 50528}, 50532, 50536,
+    {f: 2, c: 50544}, {f: 3, c: 50547}, {f: 2, c: 50556}, 50560, 50564, 50567,
+    {f: 2, c: 50572}, 50575, 50577, 50581, {f: 2, c: 50583}, 50588, 50592,
+    50601, {f: 2, c: 50612}, {f: 2, c: 50616}, {f: 4, c: 50619},
+    {f: 7, c: 50628}, 50636, 50638, {f: 2, c: 50640}, 50644, 50648,
+    {f: 2, c: 50656}, 50659, 50661, {f: 3, c: 50668}, 50672, 50676,
+    {f: 2, c: 50678}, {f: 6, c: 50684}, {f: 4, c: 50693}, 50700, 50704,
+    {f: 2, c: 50712}, {f: 2, c: 50715}, {f: 2, c: 50724}, 50728,
+    {f: 3, c: 50732}, 50736, {f: 3, c: 50739}, 50743, 50745, 50747,
+    {f: 2, c: 50752}, 50756, 50760, {f: 2, c: 50768}, {f: 3, c: 50771},
+    {f: 2, c: 50780}, 50784, 50796, 50799, 50801, {f: 2, c: 50808}, 50812,
+    50816, {f: 2, c: 50824}, 50827, 50829, {f: 2, c: 50836}, 50840, 50844,
+    {f: 2, c: 50852}, 50855, 50857, {f: 2, c: 50864}, 50868, {f: 3, c: 50872},
+    {f: 2, c: 50880}, 50883, 50885, {f: 2, c: 50892}, 50896, 50900,
+    {f: 2, c: 50908}, {f: 2, c: 50912}, {f: 2, c: 50920}, 50924, 50928,
+    {f: 2, c: 50936}, 50941, {f: 2, c: 50948}, 50952, 50956, {f: 2, c: 50964},
+    50967, 50969, {f: 2, c: 50976}, 50980, 50984, {f: 2, c: 50992}, 50995,
+    50997, 50999, {f: 2, c: 51004}, 51008, 51012, 51018, {f: 2, c: 51020},
+    51023, {f: 8, c: 51025}, 51036, 51040, 51048, 51051, {f: 2, c: 51060},
+    51064, {f: 3, c: 51068}, {f: 3, c: 51075}, {f: 4, c: 51079}, 51086,
+    {f: 2, c: 51088}, 51092, {f: 3, c: 51094}, 51098, {f: 2, c: 51104},
+    {f: 4, c: 51107}, {f: 2, c: 51116}, 51120, 51124, {f: 2, c: 51132},
+    {f: 3, c: 51135}, {f: 2, c: 51144}, 51148, 51150, 51152, 51160, 51165,
+    51172, 51176, 51180, {f: 2, c: 51200}, 51204, 51208, 51210,
+    {f: 2, c: 51216}, 51219, {f: 2, c: 51221}, {f: 2, c: 51228}, 51232, 51236,
+    {f: 2, c: 51244}, 51247, 51249, 51256, 51260, 51264, {f: 2, c: 51272},
+    {f: 2, c: 51276}, 51284, {f: 2, c: 51312}, 51316, 51320, 51322,
+    {f: 2, c: 51328}, 51331, {f: 3, c: 51333}, {f: 3, c: 51339}, 51348, 51357,
+    51359, 51361, 51368, {f: 2, c: 51388}, 51396, 51400, 51404,
+    {f: 2, c: 51412}, 51415, 51417, {f: 2, c: 51424}, 51428, 51445,
+    {f: 2, c: 51452}, 51456, {f: 3, c: 51460}, {f: 2, c: 51468}, 51471, 51473,
+    51480, 51500, 51508, {f: 2, c: 51536}, 51540, 51544, {f: 2, c: 51552},
+    51555, 51564, 51568, 51572, 51580, {f: 2, c: 51592}, 51596, 51600,
+    {f: 2, c: 51608}, 51611, 51613, {f: 2, c: 51648}, 51652, {f: 2, c: 51655},
+    51658, {f: 2, c: 51664}, 51667, {f: 2, c: 51669}, {f: 2, c: 51673},
+    {f: 2, c: 51676}, 51680, 51682, 51684, 51687, {f: 2, c: 51692},
+    {f: 3, c: 51695}, {f: 2, c: 51704}, 51708, 51712, {f: 2, c: 51720},
+    {f: 3, c: 51723}, 51732, 51736, 51753, {f: 2, c: 51788}, 51792, 51796,
+    {f: 2, c: 51804}, {f: 3, c: 51807}, 51816, 51837, 51844, 51864,
+    {f: 2, c: 51900}, 51904, 51908, {f: 2, c: 51916}, 51919, 51921, 51923,
+    {f: 2, c: 51928}, 51936, 51948, 51956, 51976, 51984, 51988, 51992,
+    {f: 2, c: 52000}, 52033, {f: 2, c: 52040}, 52044, 52048, {f: 2, c: 52056},
+    52061, 52068, {f: 2, c: 52088}, 52124, 52152, 52180, 52196, 52199, 52201,
+    {f: 2, c: 52236}, 52240, 52244, {f: 2, c: 52252}, {f: 2, c: 52257},
+    {f: 3, c: 52263}, 52268, 52270, 52272, {f: 2, c: 52280}, {f: 4, c: 52283},
+    {f: 2, c: 52292}, 52296, 52300, {f: 2, c: 52308}, {f: 3, c: 52311}, 52320,
+    52324, 52326, 52328, 52336, 52341, {f: 2, c: 52376}, 52380, 52384,
+    {f: 2, c: 52392}, {f: 3, c: 52395}, {f: 2, c: 52404}, 52408, 52412,
+    {f: 2, c: 52420}, 52423, 52425, 52432, 52436, 52452, 52460, 52464, 52481,
+    {f: 2, c: 52488}, 52492, 52496, {f: 2, c: 52504}, 52507, 52509, 52516,
+    52520, 52524, 52537, 52572, 52576, 52580, {f: 2, c: 52588}, 52591, 52593,
+    52600, 52616, {f: 2, c: 52628}, 52632, 52636, {f: 2, c: 52644}, 52647,
+    52649, 52656, 52676, 52684, 52688, 52712, 52716, 52720, {f: 2, c: 52728},
+    52731, 52733, 52740, 52744, 52748, 52756, 52761, {f: 2, c: 52768}, 52772,
+    52776, {f: 2, c: 52784}, 52787, 52789, {f: 2, c: 52824}, 52828,
+    {f: 3, c: 52831}, {f: 2, c: 52840}, 52843, 52845, {f: 2, c: 52852}, 52856,
+    52860, {f: 2, c: 52868}, 52871, 52873, {f: 2, c: 52880}, 52884, 52888,
+    {f: 2, c: 52896}, {f: 3, c: 52899}, {f: 2, c: 52908}, 52929,
+    {f: 2, c: 52964}, 52968, {f: 2, c: 52971}, {f: 2, c: 52980},
+    {f: 3, c: 52983}, {f: 2, c: 52992}, 52996, 53000, {f: 2, c: 53008}, 53011,
+    53013, 53020, 53024, 53028, {f: 2, c: 53036}, {f: 3, c: 53039}, 53048,
+    {f: 2, c: 53076}, 53080, 53084, {f: 2, c: 53092}, 53095, 53097,
+    {f: 2, c: 53104}, 53108, 53112, 53120, 53125, 53132, 53153, 53160, 53168,
+    53188, {f: 2, c: 53216}, 53220, 53224, {f: 2, c: 53232}, 53235, 53237,
+    53244, 53248, 53252, 53265, 53272, 53293, {f: 2, c: 53300}, 53304, 53308,
+    {f: 2, c: 53316}, 53319, 53321, 53328, 53332, 53336, 53344,
+    {f: 2, c: 53356}, 53360, 53364, {f: 2, c: 53372}, 53377, {f: 2, c: 53412},
+    53416, 53420, {f: 2, c: 53428}, 53431, 53433, {f: 2, c: 53440}, 53444,
+    {f: 2, c: 53448}, {f: 2, c: 53456}, {f: 3, c: 53459}, {f: 2, c: 53468},
+    53472, 53476, {f: 2, c: 53484}, {f: 3, c: 53487}, 53496, 53517,
+    {f: 2, c: 53552}, 53556, 53560, 53562, {f: 2, c: 53568}, {f: 3, c: 53571},
+    {f: 2, c: 53580}, 53584, 53588, {f: 2, c: 53596}, 53599, 53601, 53608,
+    53612, 53628, 53636, 53640, {f: 2, c: 53664}, 53668, 53672,
+    {f: 2, c: 53680}, 53683, 53685, 53690, 53692, 53696, 53720, 53748, 53752,
+    53767, 53769, 53776, {f: 2, c: 53804}, 53808, 53812, {f: 2, c: 53820},
+    53823, 53825, 53832, 53852, 53860, {f: 2, c: 53888}, 53892, 53896,
+    {f: 2, c: 53904}, 53909, 53916, 53920, 53924, 53932, 53937,
+    {f: 2, c: 53944}, 53948, {f: 2, c: 53951}, 53954, {f: 2, c: 53960}, 53963,
+    53972, 53976, 53980, {f: 2, c: 53988}, {f: 2, c: 54000}, 54004, 54008,
+    {f: 2, c: 54016}, 54019, 54021, {f: 3, c: 54028}, 54032, 54036, 54038,
+    {f: 2, c: 54044}, {f: 3, c: 54047}, 54053, {f: 2, c: 54056}, 54060, 54064,
+    {f: 2, c: 54072}, {f: 3, c: 54075}, {f: 2, c: 54084}, {f: 2, c: 54140},
+    54144, 54148, {f: 2, c: 54156}, {f: 3, c: 54159}, {f: 2, c: 54168}, 54172,
+    54176, {f: 2, c: 54184}, 54187, 54189, 54196, 54200, 54204,
+    {f: 2, c: 54212}, {f: 2, c: 54216}, 54224, 54232, 54241, 54243,
+    {f: 2, c: 54252}, 54256, 54260, {f: 2, c: 54268}, 54271, 54273, 54280,
+    54301, 54336, 54340, 54364, 54368, 54372, 54381, 54383, {f: 2, c: 54392},
+    54396, {f: 2, c: 54399}, 54402, {f: 2, c: 54408}, 54411, 54413, 54420,
+    54441, 54476, 54480, 54484, 54492, 54495, 54504, 54508, 54512, 54520,
+    54523, 54525, 54532, 54536, 54540, {f: 2, c: 54548}, 54551,
+    {f: 2, c: 54588}, 54592, 54596, {f: 2, c: 54604}, 54607, 54609,
+    {f: 2, c: 54616}, 54620, 54624, 54629, {f: 2, c: 54632}, 54635, 54637,
+    {f: 2, c: 54644}, 54648, 54652, {f: 2, c: 54660}, {f: 3, c: 54663}, 54672,
+    54693, {f: 2, c: 54728}, 54732, 54736, 54738, {f: 2, c: 54744}, 54747,
+    54749, {f: 2, c: 54756}, 54760, 54764, {f: 2, c: 54772}, 54775, 54777,
+    {f: 2, c: 54784}, 54788, 54792, {f: 2, c: 54800}, {f: 3, c: 54803}, 54812,
+    54816, 54820, 54829, {f: 2, c: 54840}, 54844, 54848, 54853,
+    {f: 2, c: 54856}, 54859, 54861, 54865, {f: 2, c: 54868}, 54872, 54876,
+    54887, 54889, {f: 2, c: 54896}, 54900, 54915, 54917, {f: 2, c: 54924},
+    54928, 54932, 54941, 54943, 54945, 54952, 54956, 54960, 54969, 54971,
+    {f: 2, c: 54980}, 54984, 54988, 54993, 54996, 54999, 55001, 55008, 55012,
+    55016, 55024, 55029, {f: 2, c: 55036}, 55040, 55044, 55057,
+    {f: 2, c: 55064}, 55068, 55072, {f: 2, c: 55080}, 55083, 55085,
+    {f: 2, c: 55092}, 55096, 55100, 55108, 55111, 55113, {f: 2, c: 55120},
+    55124, {f: 4, c: 55126}, {f: 2, c: 55136}, 55139, 55141, 55145, 55148,
+    55152, 55156, {f: 2, c: 55164}, 55169, {f: 2, c: 55176}, 55180, 55184,
+    {f: 2, c: 55192}, 55195, 55197, 20285, 20339, 20551, 20729, 21152, 21487,
+    21621, 21733, 22025, 23233, 23478, 26247, {f: 2, c: 26550}, 26607, 27468,
+    29634, 30146, 31292, 33499, 33540, 34903, 34952, 35382, [36040, 63747],
+    36303, 36603, 36838, 39381, 21051, 21364, 21508, 24682, 24932, 27580,
+    29647, 33050, 35258, [12179, 35282], 38307, 20355, 21002, 22718, 22904,
+    23014, [12082, 24178], 24185, 25031, 25536, 26438, 26604, 26751, 28567,
+    30286, 30475, 30965, 31240, 31487, 31777, 32925, [12169, 33390], 33393,
+    35563, 38291, 20075, 21917, 26359, 28212, 30883, 31469, 33883, 35088,
+    34638, 38824, 21208, 22350, 22570, 23884, 24863, 25022, 25121, 25954,
+    26577, 27204, 28187, [12130, 29976], 30131, 30435, 30640, 32058, 37039,
+    {f: 2, c: 37969}, 40853, 21283, 23724, 30002, 32987, 37440, 38296, 21083,
+    22536, 23004, 23713, 23831, 24247, 24378, 24394, 24951, 27743, 30074,
+    30086, 31968, 32115, 32177, 32652, 33108, 33313, 34193, 35137, 35611,
+    37628, [38477, 64009], 40007, 20171, 20215, 20491, 20977, 22607, 24887,
+    24894, 24936, 25913, 27114, 28433, 30117, 30342, 30422, 31623, 33445,
+    33995, 37799, 38283, 21888, 23458, 22353, 31923, 32697, 37301, 20520,
+    21435, 23621, 24040, 25298, 25454, 25818, 25831, 28192, 28844, 31067,
+    36317, 36382, 36989, 37445, 37624, 20094, 20214, 20581, [12081, 24062],
+    24314, 24838, 26967, 33137, 34388, 36423, 37749, 39467, 20062, 20625,
+    26480, 26688, 20745, 21133, 21138, 27298, 30652, 37392, 40660, 21163,
+    24623, 36850, 20552, 25001, 25581, 25802, 26684, 27268, 28608, 33160,
+    35233, 38548, 22533, 29309, [12125, 29356], 29956, 32121, 32365, 32937,
+    [12178, 35211, 64010], 35700, 36963, 40273, 25225, 27770, 28500, 32080,
+    32570, 35363, 20860, 24906, 31645, 35609, 37463, 37772, 20140, 20435,
+    20510, 20670, 20742, 21185, 21197, 21375, 22384, 22659, 24218, 24465,
+    24950, 25004, 25806, 25964, 26223, 26299, [26356, 63745], 26775, 28039,
+    28805, 28913, 29855, 29861, 29898, 30169, 30828, 30956, 31455, 31478,
+    32069, 32147, 32789, 32831, 33051, 33686, 35686, 36629, 36885, 37857,
+    38915, 38968, 39514, 39912, 20418, 21843, 22586, [22865, 63753], 23395,
+    23622, 24760, 25106, 26690, 26800, 26856, 28330, 30028, 30328, 30926,
+    31293, 31995, 32363, 32380, 35336, 35489, 35903, 38542, 40388, 21476,
+    21481, 21578, 21617, 22266, 22993, 23396, 23611, 24235, 25335, 25911,
+    25925, 25970, 26272, 26543, 27073, 27837, 30204, 30352, 30590, 31295,
+    32660, 32771, 32929, 33167, 33510, 33533, 33776, 34241, 34865, 34996,
+    35493, 36764, 37678, 38599, 39015, [12220, 39640], [12238, 40723], 21741,
+    26011, 26354, 26767, 31296, [12181, 35895], 40288, 22256, 22372, 23825,
+    26118, 26801, 26829, 28414, 29736, 34974, 39908, 27752, [12219, 39592],
+    20379, 20844, 20849, 21151, 23380, [12079, 24037], 24656, 24685, 25329,
+    25511, 25915, 29657, 31354, 34467, 36002, 38799, [20018, 63749], 23521,
+    [12093, 25096], 26524, [12128, 29916], 31185, 33747, 35463, 35506, 36328,
+    36942, 37707, 38982, [24275, 64011], 27112, 34303, 37101, 20896, 23448,
+    23532, 24931, 26874, 27454, 28748, 29743, 29912, 31649, 32592, 33733,
+    35264, 36011, 38364, 39208, 21038, 24669, 25324, 36866, 20362, 20809,
+    21281, 22745, 24291, 26336, 27960, 28826, 29378, 29654, 31568, 33009,
+    37979, 21350, 25499, 32619, 20054, 20608, 22602, 22750, 24618, 24871,
+    25296, 27088, 39745, 23439, 32024, 32945, 36703, 20132, 20689, 21676,
+    21932, 23308, 23968, 24039, 25898, 25934, 26657, 27211, 29409, 30350,
+    30703, 32094, 32761, 33184, 34126, 34527, 36611, 36686, 37066, 39171,
+    39509, 39851, 19992, 20037, 20061, 20167, 20465, 20855, 21246, 21312,
+    [12061, 21475], [21477, 63750], 21646, 22036, 22389, 22434, 23495, 23943,
+    24272, 25084, 25304, 25937, 26552, 26601, 27083, 27472, 27590, 27628,
+    27714, 28317, 28792, 29399, 29590, 29699, 30655, 30697, 31350, 32127,
+    32777, [12165, 33276], 33285, 33290, 33503, 34914, 35635, 36092, 36544,
+    36881, 37041, 37476, 37558, 39378, 39493, 40169, 40407,
+    [12244, 40860, 63751, 63752], 22283, 23616, 33738, 38816, 38827, 40628,
+    21531, 31384, 32676, 35033, 36557, 37089, 22528, 23624, 25496, 31391,
+    23470, [12088, 24339], 31353, 31406, 33422, 36524, 20518, 21048, 21240,
+    21367, 22280, 25331, 25458, 27402, 28099, 30519, 21413, 29527, 34152,
+    36470, 38357, 26426, 27331, 28528, 35437, 36556, 39243, 26231, 27512,
+    36020, [12225, 39740], 21483, 22317, 22862, 25542, 27131, 29674, 30789,
+    31418, 31429, 31998, 33909, 35215, 36211, 36917, 38312, 21243, 22343,
+    30023, 31584, 33740, 37406, 27224, 20811, 21067, 21127, 25119, 26840,
+    26997, 38553, 20677, 21156, 21220, 25027, [12100, 26020], 26681, 27135,
+    29822, 31563, 33465, 33771, 35250, 35641, 36817, 39241, 20170, 22935,
+    25810, 26129, 27278, 29748, 31105, 31165, 33449, {f: 2, c: 34942}, 35167,
+    37670, 20235, 21450, 24613, 25201, 27762, 32026, 32102, 20120, 20834,
+    30684, 32943, 20225, 20238, 20854, 20864, 21980, 22120, 22331, 22522,
+    22524, 22804, 22855, 22931, 23492, 23696, 23822, [12080, 24049], 24190,
+    24524, 25216, 26071, 26083, {f: 2, c: 26398}, 26462, 26827, 26820, 27231,
+    27450, 27683, 27773, 27778, 28103, 29592, 29734, 29738, 29826, 29859,
+    30072, 30079, 30849, 30959, 31041, {f: 2, c: 31047}, 31098, 31637, 32000,
+    32186, 32648, 32774, 32813, 32908, 35352, 35663, [35912, 63744], 36215,
+    37665, 37668, 39138, 39249, {f: 2, c: 39438}, 39525, 40594, 32202, 20342,
+    21513, 25326, 26708, [12198, 37329, 63754], 21931, 20794, 23068, 25062,
+    [25295, 63835], 25343, 37027, [35582, 63837], 26262, 29014, 38627, 25423,
+    25466, 21335, 26511, 26976, 28275, 30007, 32013, 34930, 22218, 23064,
+    20035, 20839, [22856, 63756], 26608, 32784, [12069, 22899, 63873],
+    [24180, 63886], [25754, 63889], [31178, 63893], [24565, 63907], 24684,
+    25288, [25467, 63908], [23527, 63839, 63914], 23511, 21162, 22900, 24361,
+    [24594, 63840], 29785, 39377, 28611, 33215, 36786, 24817, 33126,
+    [23615, 63933], 23273, 35365, [26491, 63944], [32016, 63951], 33021, 23612,
+    [27877, 63971], [21311, 63979], [28346, 63980], 22810, [33590, 63998],
+    [20025, 63838], 20150, 20294, 21934, 22296, 22727, 24406, 26039, 26086,
+    27264, 27573, 28237, 30701, 31471, 31774, 32222, 34507, 34962, 37170,
+    37723, 25787, 28606, 29562, 30136, 36948, 21846, 22349, 25018, 25812,
+    26311, 28129, 28251, 28525, 28601, 30192, 32835, 33213, 34113, 35203,
+    35527, 35674, 37663, 27795, 30035, 31572, 36367, 36957, 21776, 22530,
+    22616, 24162, 25095, 25758, 26848, 30070, [31958, 64003], 34739, 40680,
+    20195, 22408, 22382, [12068, 22823], 23565, 23729, 24118, 24453, 25140,
+    25825, 29619, 33274, 34955, 36024, 38538, 40667, [23429, 64004], 24503,
+    24755, 20498, [12049, 20992], 21040, 22294, 22581, 22615, 23566, 23648,
+    23798, 23947, [24230, 64001], 24466, 24764, 25361, 25481, 25623, 26691,
+    26873, 27330, 28120, 28193, 28372, 28644, 29182, 30428, 30585, 31153,
+    31291, 33796, 35241, 36077, 36339, 36424, 36867, 36884, 36947, 37117,
+    37709, 38518, 38876, 27602, 28678, 29272, 29346, 29544, 30563, 31167,
+    31716, 32411, [35712, 63834], 22697, 24775, 25958, 26109, 26302, 27788,
+    28958, 29129, 35930, 38931, 20077, 31361, 20189, 20908, 20941, 21205,
+    21516, 24999, 26481, 26704, 26847, [27934, 64005], 28540, 30140, 30643,
+    31461, 33012, 33891, 37509, 20828, [12099, 26007], 26460, 26515, 30168,
+    31431, 33651, [12182, 35910], 36887, 38957, 23663, 33216, 33434, 36929,
+    36975, 37389, 24471, 23965, 27225, 29128, 30331, 31561, 34276, 35588,
+    37159, 39472, [21895, 63755], [25078, 63757], [30313, 63758],
+    [32645, 63759], [34367, 63760], [34746, 63761], [35064, 63762],
+    [37007, 63763], [27931, 63765], [28889, 63766], [29662, 63767], 32097,
+    [33853, 63768], [37226, 63769], [39409, 63770], [20098, 63771],
+    [21365, 63772], [27396, 63773], 27410, 28734, [29211, 63774],
+    [34349, 63775], [40478, 63776], 21068, 36771, [23888, 63777], 25829, 25900,
+    27414, [28651, 63778], 31811, 32412, [34253, 63779], [35172, 63780], 35261,
+    [25289, 63781], [33240, 63782], [34847, 63783], [24266, 63784],
+    [26391, 63785], [28010, 63786], [29436, 63787], 29701, 29807, 34690,
+    [37086, 63788], [20358, 63789], 23821, 24480, 33802, [20919, 63790],
+    [25504, 63861], [30053, 63862], [20142, 63863], 20486, [20841, 63864],
+    [20937, 63865], [26753, 63866], 27153, 31918, 31921, [31975, 63867],
+    [33391, 63868], [35538, 63869], 36635, [37327, 63870], 20406, 20791,
+    [21237, 63871], [21570, 63872], [24300, 63874], 24942, 25150,
+    [26053, 63875], 27354, [28670, 63876], [31018, 63877], 34268, 34851,
+    [38317, 63878], 39522, [39530, 63879], [40599, 63880], [40654, 63881],
+    [12050, 21147, 63882], [26310, 63883], [27511, 63884], 28701, 31019,
+    [36706, 63885], 38722, [24976, 63887], [25088, 63888], 25891,
+    [28451, 63890], [29001, 63891], [29833, 63892], [32244, 63894],
+    [32879, 63895], [34030, 63897], [36646, 63896], [36899, 63898],
+    [37706, 63899], 20925, [21015, 63900], [21155, 63901], 27916,
+    [28872, 63903], [35010, 63904], [24265, 63906], 25986, [27566, 63909],
+    28610, [31806, 63910], [29557, 63911], [20196, 63912], 20278,
+    [22265, 63913], 23738, [23994, 63915], [24604, 63916], [29618, 63917],
+    31533, [32666, 63919], 32718, [32838, 63920], 36894, [37428, 63921],
+    [38646, 63922], [38728, 63923], [38936, 63924], 40801, [20363, 63925],
+    28583, [31150, 63926], [37300, 63927], [38583, 63928], [21214, 63791],
+    25736, [25796, 63792], [27347, 63793], 28510, 28696, [29200, 63794],
+    [30439, 63795], [12156, 32769, 63796], [34310, 63797], [34396, 63798],
+    [36335, 63799], 36613, [38706, 63800], [39791, 63801], [40442, 63802],
+    [12228, 40565], [30860, 63803], [31103, 63804], [32160, 63805],
+    [33737, 63806], [37636, 63807], [12229, 40575, 63808], 40595,
+    [35542, 63809], [22751, 63810], [24324, 63811], 26407, 28711, 29903,
+    [31840, 63812], [32894, 63813], 20769, 28712, [29282, 63814],
+    [30922, 63815], [36034, 63816], 36058, 36084, [38647, 63817],
+    [20102, 63930], [20698, 63931], [23534, 63932], 24278, [26009, 63934],
+    [29134, 63936], [30274, 63937], 30637, 32842, [34044, 63938],
+    [36988, 63939], 39719, [12243, 40845, 63940], [22744, 63818], 23105,
+    [23650, 63819], [27155, 63820], [28122, 63821], [28431, 63822], 30267,
+    [32047, 63823], [32311, 63824], 34078, 35128, 37860, [38475, 63825],
+    [21129, 63943], 26066, [26611, 63945], 27060, [27969, 63946],
+    [28316, 63947], 28687, [29705, 63948], 29792, [30041, 63949], 30244,
+    [30827, 63950], 35628, [39006, 63952], [20845, 63953], [25134, 63954],
+    [38520, 63955], 20374, [20523, 63956], [23833, 63957], [28138, 63958],
+    32184, [36650, 63959], [24459, 63960], [24900, 63961], [26647, 63962],
+    [38534, 63964], [21202, 63826], [32907, 63827], [20956, 63828],
+    [20940, 63829], 26974, [31260, 63830], [32190, 63831], [33777, 63832],
+    [38517, 63833], 20442, [21033, 63965], 21400, [21519, 63966], 21774,
+    [23653, 63967], 24743, [26446, 63969], [26792, 63970], 28012, 29313, 29432,
+    [29702, 63972], 29827, [30178, 63973], 31852, [32633, 63974], 32696, 33673,
+    [35023, 63975], [35041, 63976], [12197, 37324, 63977], 37328,
+    [38626, 63978], 39881, [21533, 63981], 28542, [29136, 63982],
+    [29848, 63983], [34298, 63984], 36522, [38563, 63985], [40023, 63986],
+    [40607, 63987], [26519, 63988], [28107, 63989], 29747, [33256, 63990],
+    38678, 30764, [12148, 31435, 63991], [31520, 63992], [31890, 63993], 25705,
+    29802, 30194, 30908, 30952, [12218, 39340], 39764, [12231, 40635], 23518,
+    24149, 28448, 33180, 33707, 37000, 19975, 21325, 23081, 24018, 24398,
+    24930, 25405, 26217, 26364, 28415, 28459, 28771, 30622, 33836, 34067,
+    34875, 36627, 39237, 39995, 21788, 25273, 26411, 27819, 33545, 35178,
+    38778, 20129, 22916, {f: 2, c: 24536}, 26395, 32178, 32596, 33426, 33579,
+    33725, 36638, 37017, 22475, 22969, 23186, 23504, 26151, 26522, 26757,
+    27599, 29028, 32629, 36023, 36067, 36993, 39749, 33032, 35978, 38476,
+    39488, [12230, 40613], 23391, 27667, 29467, 30450, 30431, 33804, 20906,
+    35219, 20813, 20885, 21193, 26825, 27796, 30468, 30496, 32191, 32236,
+    [12207, 38754], 40629, 28357, 34065, 20901, 21517, 21629, 26126, 26269,
+    26919, 28319, [12139, 30399], 30609, 33559, 33986, 34719, 37225, 37528,
+    40180, 34946, 20398, 20882, 21215, 22982, 24125, 24917, {f: 2, c: 25720},
+    26286, 26576, 27169, 27597, [12113, 27611], 29279, 29281, 29761, 30520,
+    [12141, 30683], 32791, 33468, 33541, 35584, 35624, 35980, [12106, 26408],
+    27792, 29287, [12140, 30446], 30566, 31302, 40361, 27519, 27794, 22818,
+    26406, 33945, 21359, 22675, 22937, 24287, 25551, 26164, 26483, 28218,
+    29483, 31447, 33495, 37672, 21209, 24043, 25006, 25035, 25098, 25287,
+    25771, [12102, 26080], 26969, 27494, [12111, 27595], 28961, 29687, 30045,
+    32326, 33310, 33538, 34154, 35491, 36031, 38695, 40289, 22696, 40664,
+    20497, 21006, 21563, 21839, [12098, 25991], 27766, {f: 2, c: 32010}, 32862,
+    34442, [12200, 38272], 38639, 21247, 27797, 29289, 21619, 23194, 23614,
+    23883, 24396, 24494, 26410, 26806, 26979, 28220, 28228, 30473,
+    [12150, 31859], 32654, 34183, 35598, 36855, 38753, 40692, 23735, 24758,
+    24845, 25003, 25935, {f: 2, c: 26107}, 27665, 27887, 29599, 29641, 32225,
+    38292, 23494, 34588, 35600, 21085, 21338, 25293, 25615, 25778, 26420,
+    27192, 27850, 29632, 29854, 31636, 31893, 32283, 33162, 33334, 34180,
+    36843, 38649, 39361, 20276, 21322, 21453, 21467, 25292, 25644, 25856,
+    26001, 27075, 27886, 28504, 29677, 30036, 30242, 30436, 30460, 30928,
+    [30971, 63844], 31020, 32070, 33324, 34784, 36820, 38930, 39151, 21187,
+    25300, 25765, 28196, 28497, 30332, 36299, 37297, 37474, 39662, 39747,
+    20515, 20621, 22346, 22952, 23592, 24135, 24439, 25151, 25918,
+    [12101, 26041], 26049, 26121, 26507, 27036, 28354, 30917, 32033, 32938,
+    33152, 33323, 33459, 33953, 34444, 35370, 35607, 37030, 38450, 40848,
+    20493, 20467, 22521, 24472, 25308, 25490, 26479, 28227, 28953, 30403,
+    32972, 32986, {f: 2, c: 35060}, 35097, 36064, 36649, 37197, 38506, 20271,
+    20336, 24091, 26575, 26658, [12137, 30333], 30334, 39748, 24161, 27146,
+    29033, 29140, 30058, 32321, 34115, 34281, 39132, 20240, 31567, 32624,
+    38309, 20961, 24070, 26805, 27710, 27726, 27867, 29359, 31684, 33539,
+    27861, 29754, 20731, 21128, 22721, 25816, 27287, 29863, 30294, 30887,
+    34327, 38370, 38713, 21342, 24321, 35722, 36776, 36783, 37002, 21029,
+    30629, 40009, 40712, 19993, 20482, 20853, 23643, 24183, 26142, 26170,
+    26564, 26821, 28851, 29953, 30149, 31177, 31453, 36647, 39200, 39432,
+    20445, 22561, 22577, 23542, 26222, 27493, 27921, 28282, 28541, 29668,
+    29995, 33769, 35036, 35091, 35676, 36628, 20239, 20693, 21264,
+    [12056, 21340], 23443, [24489, 63846], 26381, 31119, 33145, 33583, 34068,
+    35079, 35206, 36665, [36667, 64007], 39333, 39954, 26412, 20086, 20472,
+    22857, 23553, {f: 2, c: 23791}, 25447, 26834, 28925, 29090, 29739, 32299,
+    34028, 34562, 36898, 37586, 40179, [19981, 63847], 20184, 20463, 20613,
+    21078, 21103, 21542, 21648, 22496, 22827, 23142, 23386, 23413, 23500,
+    24220, 25206, 25975, 26023, 28014, 28325, [12119, 29238], 31526, 31807,
+    [12152, 32566], {f: 2, c: 33104}, 33178, 33344, 33433, 33705, 35331, 36000,
+    36070, 36091, 36212, 36282, 37096, 37340, [12201, 38428], 38468, 39385,
+    40167, [21271, 63843], 20998, 21545, 22132, 22707, 22868, 22894, 24575,
+    24996, 25198, 26128, 27774, 28954, 30406, 31881, 31966, 32027, 33452,
+    36033, 38640, 20315, 24343, 24447, 25282, 23849, 26379, 26842, 30844,
+    32323, 40300, 19989, 20633, [12052, 21269], 21290, 21329, 22915, 23138,
+    24199, 24754, 24970, 25161, 25209, 26000, 26503, 27047, [12112, 27604],
+    {f: 3, c: 27606}, 27832, 29749, 30202, 30738, 30865, 31189, 31192, 31875,
+    32203, 32737, 32933, 33086, 33218, 33778, 34586, 35048, 35513, 35692,
+    36027, 37145, [12206, 38750], [12214, 39131], [12240, 40763], 22188, 23338,
+    24428, 25996, 27315, 27567, 27996, 28657, 28693, 29277, 29613, 36007,
+    36051, 38971, 24977, 27703, 32856, 39425, 20045, 20107, 20123, 20181,
+    20282, 20284, 20351, 20447, 20735, 21490, 21496, 21766, 21987, 22235,
+    [12064, 22763], 22882, 23057, 23531, 23546, 23556, 24051, 24107, 24473,
+    24605, 25448, 26012, 26031, 26614, 26619, 26797, 27515, 27801, 27863,
+    28195, 28681, 29509, 30722, 31038, 31040, 31072, 31169, 31721, 32023,
+    32114, 32902, 33293, 33678, 34001, 34503, 35039, 35408, 35422, 35613,
+    36060, 36198, 36781, 37034, 39164, 39391, 40605, 21066, 26388, 20632,
+    21034, [12077, 23665], 25955, 27733, 29642, 29987, 30109, 31639, 33948,
+    37240, 38704, 20087, 25746, [27578, 63856], 29022, 34217, 19977, 26441,
+    26862, 28183, 33439, 34072, 34923, 25591, 28545, 37394, 39087, 19978,
+    20663, 20687, 20767, 21830, 21930, 22039, 23360, 23577, 23776, 24120,
+    24202, 24224, 24258, 24819, 26705, 27233, 28248, 29245, 29248,
+    [29376, 63994], 30456, 31077, 31665, 32724, 35059, 35316, 35443, 35937,
+    36062, 38684, [22622, 63852], 29885, 36093, 21959, 31329, [32034, 63850],
+    [12170, 33394], 29298, [12131, 29983], 29989, 31513, 22661, 22779, 23996,
+    24207, 24246, 24464, 24661, 25234, 25471, 25933, 26257, 26329, 26360,
+    26646, 26866, 29312, 29790, 31598, 32110, 32214, 32626, 32997, 33298,
+    34223, 35199, 35475, 36893, 37604, [12233, 40653], [12239, 40736],
+    [12067, 22805], 22893, 24109, 24796, 26132, 26227, 26512, 27728, 28101,
+    28511, [12143, 30707], 30889, 33990, 37323, 37675, 20185, 20682, 20808,
+    21892, 23307, 23459, 25159, 25982, 26059, 28210, 29053, 29697, 29764,
+    29831, 29887, 30316, 31146, 32218, 32341, 32680, 33146, 33203, 33337,
+    34330, 34796, 35445, 36323, 36984, 37521, 37925, 39245, 39854, 21352,
+    23633, 26964, 27844, 27945, 28203, [12166, 33292], 34203, 35131, 35373,
+    [35498, 63855, 63905], 38634, 40807, 21089, 26297, 27570, 32406, 34814,
+    36109, 38275, 38493, 25885, 28041, 29166, 22478, 22995, 23468, 24615,
+    24826, 25104, 26143, 26207, 29481, 29689, 30427, [30465, 63853], 31596,
+    32854, 32882, 33125, 35488, 37266, 19990, 21218, 27506, 27927, 31237,
+    31545, 32048, 36016, 21484, 22063, 22609, 23477, [12073, 23567], 23569,
+    24034, 25152, 25475, 25620, 26157, 26803, 27836, 28040, 28335, 28703,
+    28836, 29138, 29990, 30095, 30094, 30233, 31505, 31712, 31787, 32032,
+    32057, 34092, 34157, 34311, 35380, 36877, 36961, 37045, 37559, 38902,
+    39479, 20439, 23660, 26463, 28049, 31903, 32396, 35606, 36118, 36895,
+    23403, 24061, 25613, 33984, 36956, 39137, [29575, 63841, 63963], 23435,
+    24730, 26494, 28126, 35359, 35494, 36865, 38924, 21047, 28753, 30862,
+    37782, 34928, 37335, 20462, 21463, 22013, 22234, 22402, 22781, 23234,
+    23432, 23723, 23744, 24101, 24833, 25101, [12095, 25163], 25480, 25628,
+    25910, [25976, 63849], 27193, 27530, [12116, 27700], 27929, 28465, 29159,
+    29417, 29560, 29703, 29874, 30246, 30561, 31168, 31319, 31466, 31929,
+    32143, 32172, 32353, 32670, 33065, 33585, 33936, 34010, 34282, 34966,
+    35504, 35728, 36664, 36930, 36995, 37228, 37526, 37561, 38539,
+    {f: 2, c: 38567}, 38614, 38656, 38920, [12216, 39318], 39635, 39706, 21460,
+    22654, 22809, 23408, 23487, 28113, 28506, 29087, 29729, 29881, 32901,
+    33789, 24033, 24455, 24490, 24642, 26092, 26642, 26991, 27219, 27529,
+    27957, 28147, 29667, 30462, 30636, 31565, 32020, 33059, 33308, 33600,
+    34036, 34147, 35426, 35524, 37255, 37662, 38918, 39348, 25100, 34899,
+    36848, 37477, 23815, 23847, 23913, 29791, 33181, 34664, 28629,
+    [25342, 63859], 32722, 35126, 35186, 19998, 20056, 20711, 21213, 21319,
+    25215, 26119, 32361, 34821, 38494, 20365, 21273, 22070, 22987, 23204,
+    [12075, 23608], 23630, 23629, 24066, 24337, 24643, 26045, 26159, 26178,
+    26558, 26612, 29468, [12142, 30690], [12144, 31034], 32709, 33940, 33997,
+    35222, 35430, 35433, 35553, [12183, 35925], 35962, 22516, 23508, 24335,
+    24687, 25325, 26893, 27542, 28252, 29060, 31698, 34645, [35672, 63996],
+    36606, [12215, 39135], 39166, 20280, 20353, 20449, 21627, 23072, 23480,
+    24892, 26032, 26216, 29180, 30003, 31070, 32051, 33102, [12162, 33251],
+    33688, 34218, 34254, 34563, 35338, [12189, 36523], [12191, 36763], 36805,
+    22833, 23460, 23526, 24713, 23529, 23563, [12092, 24515], 27777, 28145,
+    28683, 29978, 33455, 35574, [20160, 63997], [12055, 21313], 38617,
+    [12114, 27663], 20126, 20420, 20818, 21854, 23077, 23784, 25105,
+    [12123, 29273], 33469, 33706, 34558, 34905, 35357, 38463, 38597, 39187,
+    40201, 40285, 22538, 23731, 23997, 24132, [24801, 63929], 24853, 25569,
+    [27138, 63764, 63836, 63935], 28197, 37122, 37716, 38990, 39952, 40823,
+    23433, 23736, 25353, 26191, 26696, 30524, 38593, 38797, 38996, 39839,
+    26017, 35585, 36555, 38332, 21813, 23721, 24022, 24245, 26263, 30284,
+    33780, 38343, 22739, 25276, 29390, 40232, 20208, 22830, 24591, 26171,
+    27523, 31207, 40230, 21395, 21696, 22467, 23830, 24859, 26326, 28079,
+    30861, 33406, 38552, 38724, 21380, 25212, 25494, 28082, 32266, 33099,
+    38989, 27387, 32588, 40367, 40474, 20063, 20539, 20918, 22812, 24825,
+    25590, 26928, 29242, 32822, 37326, 24369, 32004, [33509, 63860], 33903,
+    33979, 34277, 36493, 20335, 22756, 23363, 24665, 25562, 25880, 25965,
+    26264, 26954, 27171, 27915, 28673, 29036, 30162, 30221, 31155, 31344,
+    [12154, 32650], 35140, 35731, 37312, 38525, 39178, 22276, 24481, 26044,
+    28417, 30208, 31142, 35486, 39341, [12226, 39770], 40812, 20740, 25014,
+    25233, 27277, 33222, 20547, 22576, 24422, 28937, [12180, 35328], 35578,
+    23420, 34326, 20474, 20796, 22196, 22852, 25513, 28153, 23978, 26989,
+    20870, 20104, 20313, 22914, 27487, 27741, 29877, 30998, 33287, 33349,
+    33593, 36671, 36701, 39192, 20134, 22495, 24441, [26131, 63968], 30123,
+    32377, 35695, 36870, 39515, 22181, 22567, 23032, 23071, 23476, 24310,
+    25424, 25403, 26941, 27783, 27839, 28046, 28051, 28149, 28436, 28895,
+    28982, 29017, 29123, 29141, 30799, 30831, 31605, 32227, 32303, 34893,
+    36575, 37467, 40182, 24709, 28037, 29105, 38321, 21421, 26579, 28814,
+    28976, 29744, 33398, 33490, 38331, 39653, 40573, 26308, 29121,
+    [33865, 63854], 22603, 23992, 24433, 26144, 26254, 27001, 27054, 27704,
+    27891, 28214, 28481, 28634, 28699, 28719, 29008, 29151, 29552, 29787,
+    29908, 30408, 31310, 32403, 33521, 35424, 36814, 37704, 38681, 20034,
+    20522, 21000, 21473, 26355, 27757, 28618, 29450, 30591, 31330, 33454,
+    34269, 34306, 35028, 35427, 35709, 35947, 37555, 38675, 38928, 20116,
+    20237, 20425, 20658, 21320, 21566, 21555, 21978, 22626, 22714, 22887,
+    23067, 23524, 24735, 25034, 25942, 26111, 26212, 26791, 27738, 28595,
+    28879, 29100, 29522, 31613, 34568, 35492, 39986, 40711, 23627, 27779,
+    29508, [12127, 29577], 37434, 28331, 29797, 30239, 31337, 32277, 34314,
+    20800, 22725, 25793, 29934, 29973, 30320, 32705, 37013, 38605, 39252,
+    28198, [12129, 29926], {f: 2, c: 31401}, 33253, 34521, 34680, 35355, 23113,
+    23436, 23451, 26785, 26880, 28003, 29609, 29715, 29740, 30871, 32233,
+    32747, 33048, 33109, 33694, 35916, [38446, 63942], 38929, [12104, 26352],
+    24448, 26106, 26505, 27754, 29579, 20525, 23043, 27498, 30702, 22806,
+    23916, 24013, 29477, 30031, 20709, 20985, 22575, 22829, 22934, 23002,
+    23525, 23970, 25303, 25622, 25747, 25854, 26332, 27208, 29183, 29796,
+    31368, 31407, 32327, 32350, 32768, 33136, 34799, 35201, 35616, 36953,
+    36992, 39250, 24958, 27442, 28020, 32287, 35109, 36785, 20433, 20653,
+    20887, 21191, 22471, 22665, 23481, 24248, 24898, 27029, 28044, 28263,
+    28342, 29076, 29794, [12132, 29992], 29996, 32883, 33592, 33993, 36362,
+    37780, 37854, 20110, 20305, 20598, 20778, [12060, 21448], 21451, 21491,
+    23431, 23507, 23588, 24858, 24962, 26100, [12124, 29275], 29591, 29760,
+    30402, 31056, 31121, 31161, 32006, [12155, 32701], 33419, 34261, 34398,
+    36802, 36935, 37109, 37354, 38533, [12204, 38632], 38633, 21206, 24423,
+    26093, 26161, 26671, 29020, 31286, 37057, 38922, 20113, 27218, 27550,
+    28560, 29065, 32792, 33464, 34131, 36939, 38549, 38642, 38907, 34074,
+    39729, 20112, 29066, 38596, 20803, 21407, 21729, 22291, 22290, 22435,
+    23195, 23236, 23491, 24616, 24895, 25588, 27781, 27961, 28274, 28304,
+    29232, 29503, 29783, 33489, 34945, 36677, 36960, 38498, 39000, 40219,
+    [12105, 26376], 36234, 37470, 20301, 20553, 20702, 21361, 22285, 22996,
+    23041, 23561, 24944, 26256, 28205, 29234, 29771, 32239, 32963, 33806,
+    33894, 34111, 34655, 34907, 35096, 35586, 36949, [12209, 38859], 39759,
+    20083, 20369, 20754, 20842, 21807, 21929, 23418, 23461, {f: 2, c: 24188},
+    24254, 24736, 24799, {f: 2, c: 24840}, 25540, 25912, 26377, 26580, 26586,
+    {f: 2, c: 26977}, 27833, 27943, 28216, 28641, {f: 2, c: 29494}, 29788,
+    30001, 30290, 32173, 33278, 33848, 35029, 35480, 35547, 35565, 36400,
+    36418, 36938, 36926, 36986, [12195, 37193], 37321, 37742, 22537, 27603,
+    [12161, 32905], 32946, 20801, 22891, 23609, 28516, 29607, 32996, 36103,
+    37399, 38287, [12160, 32895], 25102, 28700, 32104, 34701, 22432, 24681,
+    24903, 27575, 35518, 37504, 38577, [12036, 20057], 21535, 28139, 34093,
+    38512, [12211, 38899], 39150, 25558, 27875, [12194, 37009], 20957, 25033,
+    33210, 40441, 20381, 20506, 20736, 23452, 24847, 25087, 25836, 26885,
+    27589, 30097, 30691, 32681, 33380, 34191, 34811, [12176, 34915], 35516,
+    35696, 37291, [12038, 20108], 20197, 20234, 22839, 23016, 24050, 24347,
+    24411, 24609, 29246, 29669, [30064, 63842], 30157, 31227, [12157, 32780],
+    [12159, 32819], 32900, 33505, 33617, 36029, 36019, 36999, 39156, 39180,
+    28727, 30410, 32714, 32716, 32764, 35610, [12040, 20154], 20161, 20995,
+    21360, [21693, 63902], 22240, 23035, 23493, 24341, 24525, 28270, 32106,
+    33589, 34451, 35469, 38765, 38775, [12032, 19968], 20314, 20350, 22777,
+    [12103, 26085], 28322, 36920, 37808, 39353, 20219, 22764, 22922, 23001,
+    24641, 31252, 33615, 36035, [12042, 20837], 21316, 20173, 21097, 23381,
+    33471, 20180, [21050, 63999], 21672, 22985, 23039, [12070, 23376], 23383,
+    23388, 24675, 24904, 28363, [28825, 63995], 29038, 29574, 29943, 30133,
+    30913, 32043, 32773, [12163, 33258], 33576, 34071, 34249, 35566, 36039,
+    38604, 20316, 21242, 22204, 26027, 26152, 28796, 28856, 29237, 32189,
+    33421, 37196, 38592, 40306, 23409, 26855, 27544, 28538, 30430, 23697,
+    26283, 28507, 31668, 31786, 34870, 38620, 19976, 20183, 21280, 22580,
+    22715, 22767, 22892, 23559, 24115, 24196, 24373, 25484, 26290, 26454,
+    27167, 27299, 27404, 28479, 29254, 29520, 29835, 31456, 31911, 33144,
+    33247, 33255, 33674, 33900, 34083, 34196, 34255, 35037, 36115, 37292,
+    [12199, 38263], 38556, 20877, 21705, 22312, 23472, 25165, 26448, 26685,
+    26771, 28221, 28371, 28797, 32289, 35009, 36001, 36617, 40779, 40782,
+    29229, 31631, 35533, 37658, 20295, 20302, 20786, 21632, 22992, 24213,
+    25269, 26485, 26990, 27159, 27822, 28186, 29401, 29482, 30141, 31672,
+    32053, 33511, 33785, 33879, 34295, 35419, 36015, 36487, 36889, 37048,
+    38606, 40799, 21219, 21514, 23265, 23490, 25688, 25973, 28404, 29380,
+    30340, 31309, 31515, 31821, 32318, 32735, 33659, 35627, 36042,
+    [12186, 36196], 36321, 36447, 36842, 36857, 36969, 37841, 20291, 20346,
+    20659, 20840, 20856, 21069, 21098, 22625, 22652, 22880, 23560, 23637,
+    24283, 24731, 25136, 26643, 27583, 27656, 28593, 29006, 29728,
+    [12133, 30000], 30008, 30033, 30322, 31564, 31627, 31661, 31686, 32399,
+    35438, 36670, 36681, 37439, 37523, 37666, 37931, 38651, 39002, 39019,
+    39198, [20999, 64000], 25130, 25240, 27993, 30308, 31434, 31680, 32118,
+    21344, 23742, 24215, 28472, 28857, 31896, 38673, 39822, 40670, 25509,
+    25722, 34678, 19969, 20117, 20141, 20572, 20597, 21576, 22979, 23450,
+    24128, 24237, 24311, 24449, 24773, 25402, 25919, 25972, 26060, 26230,
+    26232, 26622, 26984, 27273, 27491, 27712, 28096, 28136, 28191, 28254,
+    28702, 28833, 29582, 29693, 30010, 30555, 30855, 31118, 31243, 31357,
+    31934, 32142, 33351, 35330, 35562, 35998, 37165, 37194, 37336, 37478,
+    37580, 37664, 38662, 38742, 38748, 38914, [12237, 40718], 21046, 21137,
+    21884, 22564, 24093, 24351, 24716, 25552, 26799, 28639, 31085, 31532,
+    33229, 34234, 35069, 35576, 36420, 37261, 38500, 38555, 38717, 38988,
+    [12241, 40778], 20430, 20806, 20939, 21161, 22066, 24340, 24427, 25514,
+    25805, 26089, 26177, 26362, 26361, 26397, 26781, 26839, 27133, 28437,
+    28526, 29031, 29157, [12118, 29226], 29866, 30522, 31062, 31066, 31199,
+    31264, 31381, 31895, 31967, 32068, 32368, 32903, 34299, 34468, 35412,
+    35519, 36249, 36481, 36896, 36973, 37347, 38459, 38613, [12227, 40165],
+    26063, 31751, [12188, 36275], 37827, 23384, 23562, 21330, 25305, 29469,
+    20519, 23447, 24478, 24752, 24939, 26837, 28121, 29742, 31278, 32066,
+    32156, 32305, 33131, 36394, 36405, 37758, 37912, 20304, 22352, 24038,
+    24231, 25387, 32618, 20027, 20303, 20367, 20570, 23005, 32964, 21610,
+    21608, 22014, 22863, 23449, 24030, 24282, 26205, 26417, 26609, 26666,
+    27880, 27954, 28234, 28557, 28855, 29664, 30087, 31820, 32002, 32044,
+    32162, [12168, 33311], 34523, 35387, 35461, [12187, 36208], 36490, 36659,
+    36913, 37198, 37202, 37956, 39376, [12149, 31481], 31909, 20426, 20737,
+    20934, 22472, 23535, 23803, 26201, 27197, 27994, 28310, 28652, 28940,
+    30063, 31459, 34850, 36897, 36981, 38603, 39423, 33537, 20013, 20210,
+    34886, 37325, 21373, 27355, 26987, 27713, 33914, 22686, 24974, 26366,
+    25327, 28893, 29969, 30151, 32338, 33976, 35657, 36104, 20043, 21482,
+    21675, 22320, 22336, 24535, 25345, 25351, 25711, [12096, 25903], 26088,
+    26234, 26525, 26547, [12108, 27490], 27744, 27802, 28460, 30693, 30757,
+    31049, 31063, 32025, 32930, 33026, [12164, 33267], 33437, 33463, 34584,
+    35468, 36100, 36286, 36978, 30452, 31257, 31287, 32340, 32887, 21767,
+    21972, 22645, 25391, 25634, 26185, 26187, 26733, 27035, 27524, 27941,
+    28337, 29645, 29800, 29857, 30043, 30137, 30433, 30494, 30603, 31206,
+    32265, 32285, 33275, 34095, 34967, 35386, 36049, 36587,
+    [12192, 36784, 63857], 36914, 37805, 38499, 38515, 38663, 20356, 21489,
+    23018, 23241, 24089, 26702, 29894, 30142, 31209, 31378, 33187, 34541,
+    36074, 36300, 36845, 26015, 26389, 22519, 28503, 32221, 36655, 37878,
+    38598, 24501, 25074, 28548, 19988, 20376, 20511, 21449, 21983, 23919,
+    24046, 27425, 27492, 30923, 31642, 36425, [12190, 36554, 63746], 36974,
+    25417, 25662, 30528, 31364, 37679, 38015, 40810, 25776, 28591, 29158,
+    29864, 29914, 31428, 31762, 32386, 31922, 32408, 35738, 36106, 38013,
+    39184, 39244, 21049, 23519, 25830, 26413, 32046, 20717, [21443, 63851],
+    22649, {f: 2, c: 24920}, 25082, 26028, 31449, 35730, 35734, 20489, 20513,
+    21109, 21809, 23100, 24288, 24432, 24884, 25950, 26124, 26166, 26274,
+    27085, 28356, 28466, 29462, 30241, 31379, 33081, 33369, 33750, 33980,
+    20661, 22512, 23488, 23528, 24425, 25505, 30758, 32181, 33756, 34081,
+    37319, 37365, 20874, 26613, 31574, 36012, 20932, 22971, 24765, 34389,
+    20508, 21076, 23610, 24957, 25114, [25299, 64002], 25842, 26021, 28364,
+    30240, 33034, 36448, 38495, 38587, 20191, 21315, 21912, 22825, 24029,
+    25797, 27849, 28154, 29588, 31359, [12167, 33307], 34214, 36068, 36368,
+    36983, 37351, 38369, 38433, 38854, 20984, 21746, 21894, 24505, 25764,
+    28552, 32180, 36639, 36685, 37941, 20681, 23574, 27838, 28155, 29979,
+    30651, 31805, 31844, 35449, 35522, 22558, 22974, 24086, 25463, 29266,
+    30090, 30571, 35548, 36028, 36626, 24307, 26228, 28152, 32893, 33729,
+    35531, [12205, 38737], 39894, 21059, 26367, 28053, 28399, 32224, 35558,
+    36910, 36958, 39636, 21021, 21119, 21736, 24980, 25220, 25307, 26786,
+    26898, 26970, 27189, 28818, 28966, 30813, 30977, 30990, 31186, 31245,
+    32918, [12171, 33400], 33493, 33609, 34121, 35970, 36229, 37218, 37259,
+    37294, 20419, 22225, 29165, 30679, 34560, 35320, [12072, 23544], 24534,
+    26449, 37032, 21474, 22618, 23541, 24740, 24961, 25696, 32317, 32880,
+    34085, 37507, 25774, 20652, 23828, 26368, 22684, 25277, 25512, 26894,
+    27000, 27166, 28267, 30394, 31179, 33467, 33833, 35535, 36264, 36861,
+    37138, 37195, 37276, 37648, 37656, 37786, 38619, 39478, 39949, 19985,
+    30044, 31069, 31482, 31569, 31689, 32302, 33988, 36441, 36468, 36600,
+    36880, 26149, 26943, 29763, 20986, 26414, 40668, 20805, 24544, 27798,
+    34802, 34909, 34935, 24756, 33205, 33795, 36101, 21462, 21561, 22068,
+    23094, 23601, 28810, 32736, 32858, 33030, 33261, 36259, 37257, 39519,
+    40434, 20596, 20164, 21408, 24827, 28204, 23652, 20360, 20516, 21988,
+    23769, 24159, 24677, 26772, 27835, 28100, 29118, 30164, 30196, 30305,
+    31258, 31305, 32199, 32251, 32622, 33268, 34473, 36636, 38601, 39347,
+    [12242, 40786], 21063, 21189, 39149, 35242, 19971, 26578, 28422, 20405,
+    23522, 26517, [27784, 63858], 28024, 29723, 30759, 37341, 37756, 34756,
+    31204, 31281, 24555, 20182, 21668, 21822, 22702, 22949, 24816, 25171,
+    25302, 26422, 26965, 33333, 38464, 39345, 39389, 20524, 21331, 21828,
+    22396, 25176, 25826, 26219, 26589, 28609, 28655, 29730, 29752, 35351,
+    37944, 21585, 22022, 22374, 24392, 24986, 27470, 28760, 28845, 32187,
+    35477, 22890, 33067, 25506, 30472, 32829, 36010, 22612, 25645, 27067,
+    23445, 24081, 28271, 34153, 20812, 21488, 22826, 24608, 24907, 27526,
+    27760, 27888, 31518, 32974, 33492, 36294, 37040, 39089, 25799, 28580,
+    25745, 25860, 20814, 21520, [12063, 22303], 35342, 24927, 26742, 30171,
+    31570, 32113, 36890, 22534, 27084, 33151, 35114, 36864, 38969, 20600,
+    22871, 22956, 25237, 36879, 39722, 24925, 29305, 38358, 22369, 23110,
+    24052, 25226, 25773, 25850, 26487, 27874, 27966, 29228, 29750, 30772,
+    32631, 33453, 36315, 38935, 21028, 22338, 26495, 29256, 29923, 36009,
+    36774, 37393, 38442, [12043, 20843], 21485, 25420, 20329, 21764, 24726,
+    25943, 27803, 28031, 29260, 29437, 31255, 35207, [12185, 35997], 24429,
+    28558, 28921, 33192, 24846, [20415, 63845], 20559, 25153, [12122, 29255],
+    31687, 32232, 32745, 36941, 38829, 39449, 36022, 22378, 24179, 26544,
+    33805, 35413, 21536, 23318, 24163, 24290, 24330, 25987, 32954, 34109,
+    38281, 38491, 20296, 21253, 21261, 21263, 21638, 21754, 22275, 24067,
+    24598, 25243, 25265, 25429, 27873, 28006, 30129, 30770, 32990, 33071,
+    33502, 33889, 33970, 34957, 35090, 36875, 37610, 39165, 39825, 24133,
+    [26292, 64006], 26333, 28689, 29190, 20469, 21117, 24426, 24915, 26451,
+    27161, 28418, 29922, 31080, 34920, 35961, 39111, 39108, 39491, 21697,
+    31263, 26963, 35575, 35914, [12213, 39080], 39342, 24444, 25259, 30130,
+    [12138, 30382], 34987, 36991, 38466, 21305, 24380, 24517, [27852, 63848],
+    29644, 30050, [12134, 30091], 31558, 33534, 39325, 20047, 36924, 19979,
+    20309, 21414, 22799, 24264, 26160, 27827, 29781, 33655, 34662, 36032,
+    36944, 38686, 39957, 22737, 23416, 34384, 35604, 40372, 23506, 24680,
+    24717, 26097, 27735, 28450, 28579, 28698, 32597, 32752, {f: 2, c: 38289},
+    38480, 38867, 21106, 36676, 20989, 21547, 21688, 21859, 21898, 27323,
+    28085, 32216, 33382, 37532, 38519, 40569, 21512, 21704, 30418, 34532,
+    38308, 38356, 38492, 20130, 20233, 23022, 23270, 24055, 24658, 25239,
+    26477, 26689, 27782, 28207, 32568, 32923, 33322, 38917, 20133, 20565,
+    21683, 22419, 22874, 23401, 23475, 25032, 26999, 28023, 28707, 34809,
+    35299, 35442, 35559, 36994, 39405, 39608, 21182, 26680, 20502, 24184,
+    26447, 33607, [12175, 34892, 64008], 20139, 21521, 22190, 29670, 37141,
+    38911, 39177, 39255, [12217, 39321], 22099, 22687, 34395, 35377, 25010,
+    27382, 29563, 36562, 27463, 38570, 39511, 22869, 29184, 36203,
+    [12208, 38761], 20436, 23796, 24358, 25080, 26203, 27883, 28843,
+    [12126, 29572], 29625, 29694, 30505, 30541, 32067, 32098, 32291, 33335,
+    34898, 36066, 37449, 39023, 23377, [12147, 31348], [12174, 34880],
+    [12212, 38913], 23244, 20448, 21332, 22846, 23805, 25406, 28025, 29433,
+    33029, 33031, 33698, 37583, 38960, 20136, 20804, 21009, 22411, 24418,
+    27842, 28366, 28677, 28752, 28847, 29074, 29673, [29801, 63918], 33610,
+    34722, 34913, 36872, 37026, 37795, 39336, 20846, 24407, 24800, 24935,
+    26291, 34137, 36426, 37295, 38795, 20046, 20114, 21628, 22741, 22778,
+    22909, 23733, 24359, [12094, 25142], 25160, 26122, 26215, 27627, 28009,
+    28111, 28246, 28408, 28564, 28640, 28649, 28765, 29392, 29733, 29786,
+    29920, 30355, 31068, 31946, 32286, 32993, 33446, 33899, 33983, 34382,
+    34399, 34676, 35703, 35946, 37804, 38912, 39013, 24785, 25110, 37239,
+    23130, 26127, 28151, 28222, 29759, 39746, 24573, 24794, 31503, 21700,
+    24344, 27742, 27859, 27946, 28888, 32005, 34425, 35340, 40251, 21270,
+    21644, 23301, 27194, [12117, 28779], 30069, 31117, [12146, 31166], 33457,
+    33775, 35441, 35649, 36008, 38772, 25844, 25899, {f: 2, c: 30906}, 31339,
+    20024, 21914, 22864, 23462, 24187, 24739, 25563, 27489, 26213, 26707,
+    28185, 29029, 29872, 32008, 36996, 39529, 39973, 27963, [28369, 63748],
+    29502, 35905, 38346, 20976, 24140, 24488, 24653, 24822, 24880, 24908,
+    {f: 2, c: 26179}, 27045, 27841, 28255, 28361, 28514, 29004, 29852, 30343,
+    31681, 31783, 33618, 34647, 36945, 38541, [12232, 40643], 21295, 22238,
+    24315, 24458, 24674, 24724, 25079, 26214, 26371, 27292, 28142, 28590,
+    28784, 29546, 32362, 33214, 33588, 34516, 35496, 36036, 21123, 29554,
+    23446, 27243, 37892, 21742, 22150, 23389, 25928, 25989, 26313, 26783,
+    28045, 28102, [12120, 29243], 32948, 37237, 39501, 20399, 20505, 21402,
+    21518, 21564, 21897, 21957, 24127, 24460, 26429, 29030, 29661, 36869,
+    21211, 21235, 22628, 22734, 28932, 29071, 29179, 34224, 35347,
+    [26248, 63941], 34216, 21927, 26244, 29002, 33841, 21321, 21913, 27585,
+    24409, 24509, 25582, 26249, 28999, 35569, 36637, 40638, 20241, 25658,
+    28875, 30054, 34407, 24676, 35662, 40440, 20807, 20982, 21256, 27958,
+    33016, [12234, 40657], 26133, 27427, 28824, 30165, 21507, 23673, 32007,
+    35350, [12107, 27424], 27453, 27462, 21560, 24688, 27965, 32725, 33288,
+    20694, 20958, 21916, 22123, 22221, 23020, 23305, 24076, 24985, 24984,
+    25137, 26206, 26342, 29081, {f: 2, c: 29113}, 29351, 31143, 31232, 32690,
+    35440, {s: 163}, {f: 4, c: 12310}, {s: 14}, 8223, 8219, {f: 2, c: 8314},
+    {s: 7}, 8316, 0, {f: 2, c: 8317}, {s: 23}, 700, {s: 44}, 8942, 8759,
+    {s: 20}, {f: 10, c: 10122}, {s: 36}, {f: 26, c: 9398}, {s: 61},
+    {f: 2, c: 8826}, {f: 2, c: 8910}, {f: 2, c: 8832}, {f: 4, c: 8816}, 0,
+    8842, 0, 8843, {f: 2, c: 8822}, 8825, {f: 2, c: 8922}, {s: 5}, 8773, 8771,
+    8776, 0, 8868, {s: 78}, 8244, {s: 11}, 9839, {s: 4}, 8258, {s: 4}, 10045,
+    0, 0, 8226, {s: 4}, {f: 2, c: 8249}, {s: 16}, 10010, 10006, 0, 9711,
+    {s: 3}, 10070, 0, 9676, {s: 24}, 9775, {s: 6}, 12320, 0, {f: 10, c: 10102},
+    {s: 17}, 12306, 12342, {s: 13}, 8710, 0, 8735, 0, {f: 2, c: 8741}, 0, 8787,
+    8785, {f: 2, c: 8806}, 8723, {f: 3, c: 8853}, 0, 8980, 0, 0, 8802, 0, 9649,
+    0, 8738, 8784, 0, 0, 8867, 0, 0, {f: 2, c: 8814}, 8837, 8836, 8713, 8716,
+    {f: 2, c: 8891}, 8794, 8966, {s: 6}, 12958, 0, 8252, {s: 11}, 9702, {s: 3},
+    9663, 9653, 9657, 9667, {s: 4}, 9674, 12849, 12857, 13259, {f: 5, c: 9327},
+    {s: 18}, 8656, 8655, 8653, {s: 37}, 8657, 8659, {s: 8}, 8626, 8625, 0,
+    8628, 8624, 8627, {s: 14}, 8636, 8640, {s: 10}, {f: 2, c: 8644}, {s: 144},
+    {f: 5, c: 9347}, {s: 33}, 12948, {s: 15}, 12965, {s: 93}, 8672, 8674, 8673,
+    8675, {s: 4}, 8678, 8680, 8679, 8681, {s: 20}, 9757, 9759, {s: 76}, 12944,
+    {f: 6, c: 12938}, {s: 15}, {f: 2, c: 12318}, 8246, 0, 8245, {s: 3}, 12540,
+    0, 0, {f: 2, c: 44034}, {f: 2, c: 44037}, {f: 5, c: 44043}, 44056,
+    {f: 2, c: 44062}, {f: 3, c: 44065}, {f: 7, c: 44069}, 44078,
+    {f: 6, c: 44082}, {f: 2, c: 44090}, {f: 3, c: 44093}, {f: 10, c: 44097},
+    44108, {f: 6, c: 44110}, {f: 3, c: 44117}, {f: 3, c: 44121},
+    {f: 19, c: 44125}, {f: 2, c: 44146}, {f: 2, c: 44149}, 44153,
+    {f: 5, c: 44155}, 44162, {f: 2, c: 44167}, {f: 3, c: 44173},
+    {f: 3, c: 44177}, {f: 7, c: 44181}, 44190, {f: 6, c: 44194}, 44203,
+    {f: 2, c: 44205}, {f: 7, c: 44209}, 44218, {f: 3, c: 44222},
+    {f: 2, c: 44226}, {f: 3, c: 44229}, {f: 3, c: 44233}, {f: 8, c: 44237},
+    44246, {f: 8, c: 44248}, {f: 2, c: 44258}, {f: 2, c: 44261}, 44265, 44267,
+    {f: 2, c: 44269}, 44274, 44276, {f: 5, c: 44279}, {f: 2, c: 44286},
+    {f: 3, c: 44289}, 44293, {f: 5, c: 44295}, 44302, 44304, {f: 6, c: 44306},
+    {f: 3, c: 44313}, {f: 3, c: 44317}, {f: 8, c: 44321}, {f: 2, c: 44330},
+    {f: 6, c: 44334}, {f: 2, c: 44342}, {f: 3, c: 44345}, {f: 7, c: 44349},
+    44358, 44360, {f: 6, c: 44362}, {f: 3, c: 44369}, {f: 3, c: 44373},
+    {f: 8, c: 44377}, 44386, {f: 8, c: 44388}, {f: 2, c: 44398},
+    {f: 2, c: 44401}, {f: 4, c: 44407}, 44414, 44416, {f: 5, c: 44419},
+    {f: 2, c: 44426}, {f: 3, c: 44429}, {f: 11, c: 44433}, {f: 6, c: 44446},
+    {f: 18, c: 44453}, {f: 8, c: 44472}, {f: 2, c: 44482}, {f: 3, c: 44485},
+    {f: 7, c: 44489}, 44498, {f: 8, c: 44500}, {f: 3, c: 44509},
+    {f: 3, c: 44513}, {f: 19, c: 44517}, {f: 2, c: 44538}, {f: 2, c: 44541},
+    {f: 6, c: 44546}, 44554, 44556, {f: 6, c: 44558}, {f: 27, c: 44565},
+    {f: 2, c: 44594}, {f: 2, c: 44597}, 44601, {f: 5, c: 44603}, 44610, 44612,
+    {f: 3, c: 44615}, 44619, 44623, {f: 3, c: 44625}, 44629, {f: 5, c: 44631},
+    44638, {f: 3, c: 44642}, {f: 2, c: 44646}, {f: 2, c: 44650},
+    {f: 3, c: 44653}, {f: 7, c: 44657}, 44666, {f: 6, c: 44670},
+    {f: 6, c: 44678}, {f: 47, c: 44685}, 44735, {f: 3, c: 44737},
+    {f: 7, c: 44741}, 44750, {f: 6, c: 44754}, {f: 2, c: 44762},
+    {f: 11, c: 44765}, {f: 2, c: 44777}, 44780, {f: 6, c: 44782},
+    {f: 3, c: 44789}, {f: 3, c: 44793}, {f: 10, c: 44797}, {f: 4, c: 44809},
+    {f: 2, c: 44814}, {f: 27, c: 44817}, {f: 2, c: 44846}, 44849, 44851,
+    {f: 7, c: 44853}, 44862, 44864, {f: 4, c: 44868}, {f: 6, c: 44874},
+    {f: 11, c: 44881}, {f: 6, c: 44894}, {f: 19, c: 44902}, {f: 6, c: 44922},
+    {f: 3, c: 44929}, {f: 3, c: 44933}, {f: 7, c: 44937}, {f: 3, c: 44946},
+    {f: 6, c: 44950}, {f: 27, c: 44957}, {f: 2, c: 44986}, {f: 3, c: 44989},
+    {f: 6, c: 44993}, 45002, 45004, {f: 5, c: 45007}, {f: 7, c: 45013},
+    {f: 11, c: 45021}, {f: 6, c: 45034}, {f: 2, c: 45042}, {f: 3, c: 45045},
+    {f: 7, c: 45049}, {f: 2, c: 45058}, {f: 7, c: 45061}, {f: 3, c: 45069},
+    {f: 3, c: 45073}, {f: 7, c: 45077}, {f: 10, c: 45086}, {f: 27, c: 45097},
+    {f: 2, c: 45126}, 45129, 45131, 45133, {f: 4, c: 45135}, 45142, 45144,
+    {f: 3, c: 45146}, {f: 30, c: 45150}, {f: 2, c: 45182}, {f: 3, c: 45185},
+    {f: 7, c: 45189}, 45198, 45200, {f: 6, c: 45202}, 45211, {f: 2, c: 45213},
+    {f: 5, c: 45219}, 45226, 45232, 45234, {f: 2, c: 45238}, {f: 3, c: 45241},
+    {f: 7, c: 45245}, 45254, {f: 6, c: 45258}, {f: 2, c: 45266},
+    {f: 3, c: 45269}, {f: 7, c: 45273}, {f: 4, c: 45281}, {f: 34, c: 45286},
+    45322, {f: 3, c: 45325}, 45329, {f: 4, c: 45332}, 45338, {f: 5, c: 45342},
+    {f: 2, c: 45350}, {f: 3, c: 45353}, {f: 7, c: 45357}, 45366,
+    {f: 6, c: 45370}, {f: 2, c: 45378}, {f: 3, c: 45381}, {f: 7, c: 45385},
+    {f: 2, c: 45394}, {f: 2, c: 45398}, {f: 3, c: 45401}, {f: 3, c: 45405},
+    {f: 23, c: 45409}, {f: 2, c: 45434}, {f: 3, c: 45437}, 45441,
+    {f: 5, c: 45443}, 45450, 45452, {f: 4, c: 45454}, {f: 3, c: 45461},
+    {f: 3, c: 45465}, {f: 11, c: 45469}, {f: 35, c: 45481}, {f: 3, c: 45517},
+    {f: 3, c: 45521}, {f: 7, c: 45525}, 45534, {f: 8, c: 45536},
+    {f: 2, c: 45546}, {f: 3, c: 45549}, {f: 8, c: 45553}, 45562, 45564,
+    {f: 6, c: 45566}, {f: 2, c: 45574}, {f: 2, c: 45577}, {f: 7, c: 45581},
+    45590, 45592, {f: 6, c: 45594}, {f: 19, c: 45601}, {f: 7, c: 45621},
+    {f: 27, c: 45629}, {f: 3, c: 45657}, {f: 3, c: 45661}, {f: 7, c: 45665},
+    {f: 10, c: 45674}, {f: 6, c: 45686}, {f: 7, c: 45693}, {f: 3, c: 45702},
+    {f: 6, c: 45706}, {f: 2, c: 45714}, {f: 3, c: 45717}, {f: 5, c: 45723},
+    45730, 45732, {f: 3, c: 45735}, 45739, {f: 3, c: 45741}, {f: 3, c: 45745},
+    {f: 19, c: 45749}, {f: 2, c: 45770}, {f: 3, c: 45773}, 45777,
+    {f: 5, c: 45779}, 45786, 45788, {f: 4, c: 45790}, 45795, 45799,
+    {f: 2, c: 45801}, {f: 3, c: 45808}, 45814, {f: 3, c: 45820},
+    {f: 2, c: 45826}, {f: 3, c: 45829}, {f: 7, c: 45833}, 45842,
+    {f: 6, c: 45846}, {f: 55, c: 45853}, 45911, {f: 2, c: 45913}, 45917,
+    {f: 4, c: 45920}, 45926, 45928, 45930, {f: 2, c: 45932}, 45935,
+    {f: 2, c: 45938}, {f: 3, c: 45941}, {f: 7, c: 45945}, 45954,
+    {f: 6, c: 45958}, {f: 3, c: 45965}, {f: 3, c: 45969}, {f: 11, c: 45973},
+    {f: 6, c: 45986}, {f: 3, c: 45993}, {f: 23, c: 45997}, {f: 2, c: 46022},
+    {f: 2, c: 46025}, 46029, 46031, {f: 3, c: 46033}, 46038, 46040, 46042,
+    46044, {f: 2, c: 46046}, {f: 3, c: 46049}, {f: 3, c: 46053},
+    {f: 19, c: 46057}, {f: 19, c: 46077}, {f: 7, c: 46097}, {f: 3, c: 46105},
+    {f: 3, c: 46109}, {f: 7, c: 46113}, 46122, {f: 8, c: 46124},
+    {f: 27, c: 46133}, {f: 2, c: 46162}, {f: 3, c: 46165}, {f: 7, c: 46169},
+    46178, 46180, {f: 6, c: 46182}, {f: 19, c: 46189}, {f: 7, c: 46209},
+    {f: 20, c: 46217}, {f: 6, c: 46238}, {f: 3, c: 46245}, {f: 3, c: 46249},
+    {f: 8, c: 46253}, 46262, 46264, {f: 6, c: 46266}, {f: 3, c: 46273},
+    {f: 3, c: 46277}, {f: 7, c: 46281}, {f: 4, c: 46289}, {f: 6, c: 46294},
+    {f: 2, c: 46302}, {f: 2, c: 46305}, 46309, {f: 5, c: 46311}, 46318, 46320,
+    {f: 6, c: 46322}, {f: 27, c: 46329}, {f: 2, c: 46358}, {f: 2, c: 46361},
+    {f: 7, c: 46365}, 46374, {f: 5, c: 46379}, {f: 2, c: 46386},
+    {f: 3, c: 46389}, {f: 7, c: 46393}, 46402, {f: 5, c: 46406},
+    {f: 2, c: 46414}, {f: 3, c: 46417}, {f: 7, c: 46421}, 46430,
+    {f: 62, c: 46434}, {f: 2, c: 46498}, {f: 3, c: 46501}, 46505,
+    {f: 4, c: 46508}, 46514, {f: 5, c: 46518}, {f: 2, c: 46526},
+    {f: 3, c: 46529}, {f: 7, c: 46533}, 46542, {f: 6, c: 46546},
+    {f: 19, c: 46553}, {f: 35, c: 46573}, {f: 2, c: 46610}, {f: 3, c: 46613},
+    {f: 12, c: 46617}, {f: 6, c: 46630}, {f: 7, c: 46637}, {f: 19, c: 46645},
+    {f: 27, c: 46665}, {f: 3, c: 46693}, {f: 51, c: 46697}, {f: 2, c: 46750},
+    {f: 3, c: 46753}, {f: 6, c: 46757}, {f: 4, c: 46765}, {f: 34, c: 46770},
+    {f: 27, c: 46805}, {f: 3, c: 46833}, {f: 3, c: 46837}, {f: 7, c: 46841},
+    {f: 3, c: 46850}, {f: 34, c: 46854}, {f: 2, c: 46890}, {f: 2, c: 46893},
+    {f: 7, c: 46897}, 46906, {f: 8, c: 46908}, {f: 3, c: 46917},
+    {f: 3, c: 46921}, {f: 7, c: 46925}, {f: 10, c: 46934}, {f: 3, c: 46945},
+    {f: 3, c: 46949}, {f: 7, c: 46953}, 46962, 46964, {f: 6, c: 46966},
+    {f: 2, c: 46974}, {f: 3, c: 46977}, {f: 7, c: 46981}, 46990,
+    {f: 3, c: 46995}, {f: 2, c: 47002}, {f: 3, c: 47005}, {f: 7, c: 47009},
+    47018, {f: 6, c: 47022}, {f: 2, c: 47030}, {f: 14, c: 47033}, 47048,
+    {f: 34, c: 47050}, {f: 2, c: 47086}, {f: 3, c: 47089}, {f: 7, c: 47093},
+    47102, {f: 5, c: 47106}, {f: 2, c: 47114}, {f: 3, c: 47117},
+    {f: 7, c: 47121}, 47130, 47132, {f: 6, c: 47134}, {f: 2, c: 47142},
+    {f: 3, c: 47145}, {f: 7, c: 47149}, 47158, {f: 6, c: 47162},
+    {f: 3, c: 47169}, {f: 12, c: 47173}, 47186, {f: 8, c: 47188},
+    {f: 2, c: 47198}, {f: 3, c: 47201}, {f: 7, c: 47205}, 47214, 47216,
+    {f: 6, c: 47218}, {f: 3, c: 47225}, {f: 16, c: 47229}, {f: 26, c: 47246},
+    {f: 7, c: 47273}, {f: 3, c: 47281}, {f: 3, c: 47285}, {f: 7, c: 47289},
+    47298, 47300, {f: 6, c: 47302}, {f: 3, c: 47309}, {f: 3, c: 47313},
+    {f: 8, c: 47317}, 47326, 47328, {f: 6, c: 47330}, {f: 2, c: 47338},
+    {f: 3, c: 47341}, {f: 7, c: 47345}, 47354, 47356, {f: 6, c: 47358},
+    {f: 19, c: 47365}, {f: 7, c: 47385}, {f: 27, c: 47393}, {f: 2, c: 47422},
+    {f: 3, c: 47425}, {f: 7, c: 47429}, {f: 2, c: 47437}, 47440,
+    {f: 6, c: 47442}, {f: 2, c: 47450}, {f: 3, c: 47453}, {f: 7, c: 47457},
+    47466, 47468, {f: 6, c: 47470}, {f: 2, c: 47478}, {f: 3, c: 47481},
+    {f: 7, c: 47485}, 47494, 47496, {f: 2, c: 47499}, {f: 29, c: 47503},
+    {f: 2, c: 47534}, {f: 3, c: 47537}, {f: 7, c: 47541}, 47550, 47552,
+    {f: 6, c: 47554}, {f: 2, c: 47562}, 47565, {f: 5, c: 47571}, 47578, 47580,
+    {f: 2, c: 47583}, 47586, {f: 2, c: 47590}, {f: 3, c: 47593},
+    {f: 7, c: 47597}, 47606, {f: 5, c: 47611}, {f: 6, c: 47618},
+    {f: 12, c: 47625}, {f: 34, c: 47638}, {f: 2, c: 47674}, {f: 3, c: 47677},
+    47681, {f: 5, c: 47683}, 47690, 47692, {f: 4, c: 47695}, {f: 2, c: 47702},
+    {f: 3, c: 47705}, {f: 7, c: 47709}, 47718, {f: 6, c: 47722},
+    {f: 2, c: 47730}, {f: 3, c: 47733}, {f: 10, c: 47737}, 47750,
+    {f: 4, c: 47752}, {f: 27, c: 47757}, 47786, {f: 3, c: 47789}, 47793,
+    {f: 5, c: 47795}, 47802, 47804, {f: 6, c: 47806}, {f: 3, c: 47813},
+    {f: 15, c: 47817}, {f: 34, c: 47834}, {f: 3, c: 47869}, {f: 3, c: 47873},
+    {f: 8, c: 47877}, 47886, 47888, {f: 6, c: 47890}, {f: 3, c: 47897},
+    {f: 3, c: 47901}, {f: 8, c: 47905}, 47914, {f: 8, c: 47916}, 47927,
+    {f: 2, c: 47929}, {f: 5, c: 47935}, 47942, 47944, {f: 3, c: 47946}, 47950,
+    {f: 3, c: 47953}, {f: 3, c: 47957}, {f: 8, c: 47961}, 47970,
+    {f: 8, c: 47972}, {f: 27, c: 47981}, {f: 3, c: 48009}, {f: 3, c: 48013},
+    {f: 19, c: 48017}, {f: 3, c: 48037}, {f: 3, c: 48041}, {f: 7, c: 48045},
+    {f: 2, c: 48053}, {f: 8, c: 48056}, {f: 3, c: 48065}, {f: 3, c: 48069},
+    {f: 7, c: 48073}, {f: 2, c: 48081}, {f: 36, c: 48084}, {f: 2, c: 48122},
+    {f: 2, c: 48125}, 48129, {f: 5, c: 48131}, 48138, 48142, 48144,
+    {f: 2, c: 48146}, {f: 2, c: 48153}, {f: 4, c: 48160}, 48166, 48168,
+    {f: 3, c: 48170}, {f: 2, c: 48174}, {f: 2, c: 48178}, {f: 3, c: 48181},
+    {f: 7, c: 48185}, 48194, {f: 3, c: 48198}, {f: 2, c: 48202},
+    {f: 2, c: 48206}, {f: 12, c: 48209}, {f: 38, c: 48222}, {f: 2, c: 48262},
+    {f: 2, c: 48265}, 48269, {f: 5, c: 48271}, 48278, 48280, {f: 5, c: 48283},
+    {f: 2, c: 48290}, {f: 2, c: 48293}, {f: 7, c: 48297}, 48306,
+    {f: 6, c: 48310}, {f: 2, c: 48318}, {f: 3, c: 48321}, {f: 8, c: 48325},
+    48334, {f: 3, c: 48338}, {f: 2, c: 48342}, {f: 3, c: 48345},
+    {f: 23, c: 48349}, 48375, {f: 3, c: 48377}, {f: 7, c: 48381}, 48390, 48392,
+    {f: 6, c: 48394}, {f: 3, c: 48401}, {f: 15, c: 48405}, {f: 7, c: 48421},
+    {f: 19, c: 48429}, {f: 7, c: 48449}, {f: 2, c: 48458}, {f: 3, c: 48461},
+    {f: 7, c: 48465}, {f: 10, c: 48474}, {f: 3, c: 48485}, {f: 23, c: 48489},
+    {f: 2, c: 48514}, {f: 2, c: 48517}, {f: 5, c: 48523}, 48530, 48532,
+    {f: 3, c: 48534}, 48539, {f: 7, c: 48541}, {f: 11, c: 48549},
+    {f: 7, c: 48561}, {f: 27, c: 48569}, {f: 2, c: 48598}, {f: 3, c: 48601},
+    {f: 12, c: 48605}, {f: 6, c: 48618}, {f: 3, c: 48625}, {f: 3, c: 48629},
+    {f: 7, c: 48633}, {f: 2, c: 48641}, 48644, {f: 6, c: 48646},
+    {f: 2, c: 48654}, {f: 3, c: 48657}, {f: 7, c: 48661}, 48670,
+    {f: 36, c: 48672}, {f: 2, c: 48710}, {f: 3, c: 48713}, 48717,
+    {f: 5, c: 48719}, 48726, 48728, {f: 4, c: 48732}, {f: 2, c: 48738},
+    {f: 3, c: 48741}, 48745, {f: 5, c: 48747}, 48754, {f: 5, c: 48758},
+    {f: 2, c: 48766}, {f: 3, c: 48769}, {f: 7, c: 48773}, 48782,
+    {f: 6, c: 48786}, {f: 14, c: 48794}, {f: 39, c: 48809}, {f: 2, c: 48850},
+    {f: 2, c: 48853}, {f: 7, c: 48857}, {f: 2, c: 48865}, {f: 6, c: 48870},
+    {f: 20, c: 48877}, {f: 6, c: 48898}, {f: 14, c: 48906}, 48922,
+    {f: 34, c: 48926}, {f: 2, c: 48962}, {f: 3, c: 48965}, {f: 7, c: 48969},
+    {f: 3, c: 48978}, {f: 62, c: 48982}, {f: 27, c: 49045}, {f: 20, c: 49073},
+    {f: 6, c: 49094}, {f: 2, c: 49102}, {f: 3, c: 49105}, {f: 7, c: 49109},
+    {f: 2, c: 49117}, 49120, {f: 90, c: 49122}, {f: 20, c: 49213},
+    {f: 6, c: 49234}, {f: 3, c: 49241}, {f: 3, c: 49245}, {f: 7, c: 49249},
+    {f: 38, c: 49258}, {f: 2, c: 49298}, {f: 3, c: 49301}, {f: 7, c: 49305},
+    49314, 49316, {f: 6, c: 49318}, 49326, {f: 2, c: 49329}, {f: 5, c: 49335},
+    49342, {f: 3, c: 49346}, {f: 2, c: 49350}, {f: 2, c: 49354},
+    {f: 3, c: 49357}, {f: 7, c: 49361}, 49370, {f: 6, c: 49374},
+    {f: 2, c: 49382}, {f: 3, c: 49385}, {f: 7, c: 49389}, 49398, 49400,
+    {f: 6, c: 49402}, {f: 3, c: 49409}, {f: 3, c: 49413}, {f: 7, c: 49417},
+    {f: 4, c: 49425}, {f: 6, c: 49430}, {f: 2, c: 49441}, 49445,
+    {f: 4, c: 49448}, 49454, {f: 4, c: 49458}, 49463, {f: 2, c: 49466},
+    {f: 3, c: 49469}, {f: 7, c: 49473}, 49482, {f: 6, c: 49486},
+    {f: 2, c: 49494}, {f: 3, c: 49497}, {f: 7, c: 49501}, 49510,
+    {f: 6, c: 49514}, {f: 3, c: 49521}, {f: 3, c: 49525}, {f: 12, c: 49529},
+    {f: 6, c: 49542}, 49551, {f: 3, c: 49553}, 49557, {f: 5, c: 49559}, 49566,
+    49568, {f: 3, c: 49570}, {f: 2, c: 49574}, {f: 2, c: 49578},
+    {f: 3, c: 49581}, {f: 12, c: 49585}, {f: 6, c: 49598}, {f: 3, c: 49605},
+    {f: 3, c: 49609}, {f: 7, c: 49613}, {f: 2, c: 49621}, {f: 7, c: 49625},
+    {f: 3, c: 49633}, {f: 3, c: 49637}, {f: 7, c: 49641}, 49650,
+    {f: 8, c: 49652}, {f: 2, c: 49662}, {f: 3, c: 49665}, {f: 7, c: 49669},
+    49678, 49680, {f: 6, c: 49682}, {f: 2, c: 49690}, {f: 2, c: 49693},
+    {f: 7, c: 49697}, 49706, 49708, 49710, 49712, 49715, {f: 19, c: 49717},
+    {f: 7, c: 49737}, {f: 2, c: 49746}, {f: 3, c: 49749}, {f: 7, c: 49753},
+    {f: 4, c: 49761}, {f: 6, c: 49766}, {f: 2, c: 49774}, {f: 3, c: 49777},
+    {f: 7, c: 49781}, 49790, 49792, {f: 6, c: 49794}, {f: 6, c: 49802},
+    {f: 7, c: 49809}, {f: 2, c: 49817}, 49820, {f: 6, c: 49822},
+    {f: 2, c: 49830}, {f: 3, c: 49833}, {f: 6, c: 49838}, 49846, 49848,
+    {f: 34, c: 49850}, {f: 2, c: 49886}, {f: 2, c: 49889}, {f: 6, c: 49893},
+    49902, 49904, {f: 4, c: 49906}, 49911, 49914, {f: 3, c: 49917},
+    {f: 7, c: 49921}, {f: 2, c: 49930}, {f: 5, c: 49934}, {f: 2, c: 49942},
+    {f: 3, c: 49945}, {f: 7, c: 49949}, {f: 2, c: 49958}, {f: 27, c: 49962},
+    {f: 34, c: 49990}, {f: 2, c: 50026}, {f: 3, c: 50029}, 50033,
+    {f: 5, c: 50035}, {f: 2, c: 50042}, {f: 6, c: 50046}, {f: 3, c: 50053},
+    {f: 3, c: 50057}, {f: 51, c: 50061}, {f: 23, c: 50113}, {f: 2, c: 50138},
+    {f: 2, c: 50141}, 50145, {f: 5, c: 50147}, {f: 3, c: 50154},
+    {f: 6, c: 50158}, {f: 2, c: 50166}, {f: 15, c: 50169}, {f: 7, c: 50185},
+    {f: 19, c: 50193}, {f: 7, c: 50213}, {f: 3, c: 50221}, {f: 3, c: 50225},
+    {f: 7, c: 50229}, {f: 10, c: 50238}, {f: 27, c: 50249}, {f: 2, c: 50278},
+    {f: 3, c: 50281}, {f: 7, c: 50285}, {f: 3, c: 50294}, {f: 6, c: 50298},
+    {f: 19, c: 50305}, {f: 7, c: 50325}, {f: 27, c: 50333}, {f: 3, c: 50361},
+    {f: 44, c: 50365}, {f: 6, c: 50410}, {f: 2, c: 50418}, {f: 3, c: 50421},
+    50425, {f: 4, c: 50427}, {f: 10, c: 50434}, {f: 3, c: 50445},
+    {f: 3, c: 50449}, {f: 7, c: 50453}, {f: 11, c: 50461}, {f: 2, c: 50474},
+    {f: 3, c: 50477}, {f: 7, c: 50481}, 50490, 50492, {f: 6, c: 50494},
+    {f: 2, c: 50502}, 50507, {f: 4, c: 50511}, 50518, {f: 3, c: 50522}, 50527,
+    {f: 2, c: 50530}, {f: 3, c: 50533}, {f: 7, c: 50537}, 50546,
+    {f: 6, c: 50550}, {f: 2, c: 50558}, {f: 3, c: 50561}, {f: 2, c: 50565},
+    {f: 4, c: 50568}, 50574, 50576, {f: 3, c: 50578}, 50582, {f: 3, c: 50585},
+    {f: 3, c: 50589}, {f: 8, c: 50593}, {f: 10, c: 50602}, {f: 2, c: 50614},
+    50618, {f: 5, c: 50623}, 50635, 50637, 50639, {f: 2, c: 50642},
+    {f: 3, c: 50645}, {f: 7, c: 50649}, 50658, 50660, {f: 6, c: 50662}, 50671,
+    {f: 3, c: 50673}, 50677, {f: 4, c: 50680}, {f: 3, c: 50690},
+    {f: 3, c: 50697}, {f: 3, c: 50701}, {f: 7, c: 50705}, 50714,
+    {f: 7, c: 50717}, {f: 2, c: 50726}, {f: 3, c: 50729}, 50735,
+    {f: 2, c: 50737}, 50742, 50744, 50746, {f: 4, c: 50748}, {f: 2, c: 50754},
+    {f: 3, c: 50757}, {f: 7, c: 50761}, 50770, {f: 6, c: 50774},
+    {f: 2, c: 50782}, {f: 11, c: 50785}, {f: 2, c: 50797}, 50800,
+    {f: 6, c: 50802}, {f: 2, c: 50810}, {f: 3, c: 50813}, {f: 7, c: 50817},
+    50826, 50828, {f: 6, c: 50830}, {f: 2, c: 50838}, {f: 3, c: 50841},
+    {f: 7, c: 50845}, 50854, 50856, {f: 6, c: 50858}, {f: 2, c: 50866},
+    {f: 3, c: 50869}, {f: 5, c: 50875}, 50882, 50884, {f: 6, c: 50886},
+    {f: 2, c: 50894}, {f: 3, c: 50897}, {f: 7, c: 50901}, {f: 2, c: 50910},
+    {f: 6, c: 50914}, {f: 2, c: 50922}, {f: 3, c: 50925}, {f: 7, c: 50929},
+    {f: 3, c: 50938}, {f: 6, c: 50942}, {f: 2, c: 50950}, {f: 3, c: 50953},
+    {f: 7, c: 50957}, 50966, 50968, {f: 6, c: 50970}, {f: 2, c: 50978},
+    {f: 3, c: 50981}, {f: 7, c: 50985}, 50994, 50996, 50998, {f: 4, c: 51000},
+    {f: 2, c: 51006}, {f: 3, c: 51009}, {f: 5, c: 51013}, 51019, 51022, 51024,
+    {f: 3, c: 51033}, {f: 3, c: 51037}, {f: 7, c: 51041}, {f: 2, c: 51049},
+    {f: 8, c: 51052}, {f: 2, c: 51062}, {f: 3, c: 51065}, {f: 4, c: 51071},
+    51078, {f: 3, c: 51083}, 51087, {f: 2, c: 51090}, 51093, 51097,
+    {f: 5, c: 51099}, 51106, {f: 5, c: 51111}, {f: 2, c: 51118},
+    {f: 3, c: 51121}, {f: 7, c: 51125}, 51134, {f: 6, c: 51138},
+    {f: 2, c: 51146}, 51149, 51151, {f: 7, c: 51153}, {f: 4, c: 51161},
+    {f: 6, c: 51166}, {f: 3, c: 51173}, {f: 3, c: 51177}, {f: 19, c: 51181},
+    {f: 2, c: 51202}, {f: 3, c: 51205}, 51209, {f: 5, c: 51211}, 51218, 51220,
+    {f: 5, c: 51223}, {f: 2, c: 51230}, {f: 3, c: 51233}, {f: 7, c: 51237},
+    51246, 51248, {f: 6, c: 51250}, {f: 3, c: 51257}, {f: 3, c: 51261},
+    {f: 7, c: 51265}, {f: 2, c: 51274}, {f: 6, c: 51278}, {f: 27, c: 51285},
+    {f: 2, c: 51314}, {f: 3, c: 51317}, 51321, {f: 5, c: 51323}, 51330, 51332,
+    {f: 3, c: 51336}, {f: 6, c: 51342}, {f: 8, c: 51349}, 51358, 51360,
+    {f: 6, c: 51362}, {f: 19, c: 51369}, {f: 6, c: 51390}, {f: 3, c: 51397},
+    {f: 3, c: 51401}, {f: 7, c: 51405}, 51414, 51416, {f: 6, c: 51418},
+    {f: 2, c: 51426}, {f: 16, c: 51429}, {f: 6, c: 51446}, {f: 2, c: 51454},
+    {f: 3, c: 51457}, {f: 5, c: 51463}, 51470, 51472, {f: 6, c: 51474},
+    {f: 19, c: 51481}, {f: 7, c: 51501}, {f: 27, c: 51509}, {f: 2, c: 51538},
+    {f: 3, c: 51541}, {f: 7, c: 51545}, 51554, {f: 8, c: 51556},
+    {f: 3, c: 51565}, {f: 3, c: 51569}, {f: 7, c: 51573}, {f: 11, c: 51581},
+    {f: 2, c: 51594}, {f: 3, c: 51597}, {f: 7, c: 51601}, 51610, 51612,
+    {f: 34, c: 51614}, {f: 2, c: 51650}, {f: 2, c: 51653}, 51657,
+    {f: 5, c: 51659}, 51666, 51668, {f: 2, c: 51671}, 51675, {f: 2, c: 51678},
+    51681, 51683, {f: 2, c: 51685}, {f: 4, c: 51688}, 51694, {f: 6, c: 51698},
+    {f: 2, c: 51706}, {f: 3, c: 51709}, {f: 7, c: 51713}, 51722,
+    {f: 6, c: 51726}, {f: 3, c: 51733}, {f: 16, c: 51737}, {f: 34, c: 51754},
+    {f: 2, c: 51790}, {f: 3, c: 51793}, {f: 7, c: 51797}, 51806,
+    {f: 6, c: 51810}, {f: 20, c: 51817}, {f: 6, c: 51838}, {f: 19, c: 51845},
+    {f: 35, c: 51865}, {f: 2, c: 51902}, {f: 3, c: 51905}, {f: 7, c: 51909},
+    51918, 51920, 51922, {f: 4, c: 51924}, {f: 6, c: 51930}, {f: 11, c: 51937},
+    {f: 7, c: 51949}, {f: 19, c: 51957}, {f: 7, c: 51977}, {f: 3, c: 51985},
+    {f: 3, c: 51989}, {f: 7, c: 51993}, {f: 31, c: 52002}, {f: 6, c: 52034},
+    {f: 2, c: 52042}, {f: 3, c: 52045}, {f: 7, c: 52049}, {f: 3, c: 52058},
+    {f: 6, c: 52062}, {f: 19, c: 52069}, {f: 34, c: 52090}, {f: 27, c: 52125},
+    {f: 27, c: 52153}, {f: 15, c: 52181}, {f: 2, c: 52197}, 52200,
+    {f: 34, c: 52202}, {f: 2, c: 52238}, {f: 3, c: 52241}, {f: 7, c: 52245},
+    {f: 3, c: 52254}, {f: 4, c: 52259}, {f: 2, c: 52266}, 52269, 52271,
+    {f: 7, c: 52273}, 52282, {f: 5, c: 52287}, {f: 2, c: 52294},
+    {f: 3, c: 52297}, {f: 7, c: 52301}, 52310, {f: 6, c: 52314},
+    {f: 3, c: 52321}, 52325, 52327, {f: 7, c: 52329}, {f: 4, c: 52337},
+    {f: 34, c: 52342}, {f: 2, c: 52378}, {f: 3, c: 52381}, {f: 7, c: 52385},
+    52394, {f: 6, c: 52398}, {f: 2, c: 52406}, {f: 3, c: 52409},
+    {f: 7, c: 52413}, 52422, 52424, {f: 6, c: 52426}, {f: 3, c: 52433},
+    {f: 15, c: 52437}, {f: 7, c: 52453}, {f: 3, c: 52461}, {f: 16, c: 52465},
+    {f: 6, c: 52482}, {f: 2, c: 52490}, {f: 3, c: 52493}, {f: 7, c: 52497},
+    52506, 52508, {f: 6, c: 52510}, {f: 3, c: 52517}, {f: 3, c: 52521},
+    {f: 12, c: 52525}, {f: 34, c: 52538}, {f: 3, c: 52573}, {f: 3, c: 52577},
+    {f: 7, c: 52581}, 52590, 52592, {f: 6, c: 52594}, {f: 15, c: 52601},
+    {f: 11, c: 52617}, {f: 2, c: 52630}, {f: 3, c: 52633}, {f: 7, c: 52637},
+    52646, 52648, {f: 6, c: 52650}, {f: 19, c: 52657}, {f: 7, c: 52677},
+    {f: 3, c: 52685}, {f: 23, c: 52689}, {f: 3, c: 52713}, {f: 3, c: 52717},
+    {f: 7, c: 52721}, 52730, 52732, {f: 6, c: 52734}, {f: 3, c: 52741},
+    {f: 3, c: 52745}, {f: 7, c: 52749}, {f: 4, c: 52757}, {f: 6, c: 52762},
+    {f: 2, c: 52770}, {f: 3, c: 52773}, {f: 7, c: 52777}, 52786, 52788,
+    {f: 34, c: 52790}, {f: 2, c: 52826}, {f: 2, c: 52829}, {f: 6, c: 52834},
+    52842, 52844, {f: 6, c: 52846}, {f: 2, c: 52854}, {f: 3, c: 52857},
+    {f: 7, c: 52861}, 52870, 52872, {f: 6, c: 52874}, {f: 2, c: 52882},
+    {f: 3, c: 52885}, {f: 7, c: 52889}, 52898, {f: 6, c: 52902},
+    {f: 19, c: 52910}, {f: 34, c: 52930}, {f: 2, c: 52966}, {f: 2, c: 52969},
+    {f: 7, c: 52973}, 52982, {f: 6, c: 52986}, {f: 2, c: 52994},
+    {f: 3, c: 52997}, {f: 7, c: 53001}, 53010, 53012, {f: 6, c: 53014},
+    {f: 3, c: 53021}, {f: 3, c: 53025}, {f: 7, c: 53029}, 53038,
+    {f: 6, c: 53042}, {f: 27, c: 53049}, {f: 2, c: 53078}, {f: 3, c: 53081},
+    {f: 7, c: 53085}, 53094, 53096, {f: 6, c: 53098}, {f: 2, c: 53106},
+    {f: 3, c: 53109}, {f: 7, c: 53113}, {f: 4, c: 53121}, {f: 6, c: 53126},
+    {f: 20, c: 53133}, {f: 6, c: 53154}, {f: 7, c: 53161}, {f: 19, c: 53169},
+    {f: 27, c: 53189}, {f: 2, c: 53218}, {f: 3, c: 53221}, {f: 7, c: 53225},
+    53234, 53236, {f: 6, c: 53238}, {f: 3, c: 53245}, {f: 3, c: 53249},
+    {f: 12, c: 53253}, {f: 6, c: 53266}, {f: 20, c: 53273}, {f: 6, c: 53294},
+    {f: 2, c: 53302}, {f: 3, c: 53305}, {f: 7, c: 53309}, 53318, 53320,
+    {f: 6, c: 53322}, {f: 3, c: 53329}, {f: 3, c: 53333}, {f: 7, c: 53337},
+    {f: 11, c: 53345}, {f: 2, c: 53358}, {f: 3, c: 53361}, {f: 7, c: 53365},
+    {f: 3, c: 53374}, {f: 34, c: 53378}, {f: 2, c: 53414}, {f: 3, c: 53417},
+    {f: 7, c: 53421}, 53430, 53432, {f: 6, c: 53434}, {f: 2, c: 53442},
+    {f: 3, c: 53445}, {f: 6, c: 53450}, 53458, {f: 6, c: 53462},
+    {f: 2, c: 53470}, {f: 3, c: 53473}, {f: 7, c: 53477}, 53486,
+    {f: 6, c: 53490}, {f: 20, c: 53497}, {f: 34, c: 53518}, {f: 2, c: 53554},
+    {f: 3, c: 53557}, 53561, {f: 5, c: 53563}, 53570, {f: 6, c: 53574},
+    {f: 2, c: 53582}, {f: 3, c: 53585}, {f: 7, c: 53589}, 53598, 53600,
+    {f: 6, c: 53602}, {f: 3, c: 53609}, {f: 15, c: 53613}, {f: 7, c: 53629},
+    {f: 3, c: 53637}, {f: 23, c: 53641}, {f: 2, c: 53666}, {f: 3, c: 53669},
+    {f: 7, c: 53673}, 53682, 53684, {f: 4, c: 53686}, 53691, {f: 3, c: 53693},
+    {f: 23, c: 53697}, {f: 27, c: 53721}, {f: 3, c: 53749}, {f: 14, c: 53753},
+    53768, {f: 6, c: 53770}, {f: 27, c: 53777}, {f: 2, c: 53806},
+    {f: 3, c: 53809}, {f: 7, c: 53813}, 53822, 53824, {f: 6, c: 53826},
+    {f: 19, c: 53833}, {f: 7, c: 53853}, {f: 27, c: 53861}, {f: 2, c: 53890},
+    {f: 3, c: 53893}, {f: 7, c: 53897}, {f: 3, c: 53906}, {f: 6, c: 53910},
+    {f: 3, c: 53917}, {f: 3, c: 53921}, {f: 7, c: 53925}, {f: 4, c: 53933},
+    {f: 6, c: 53938}, {f: 2, c: 53946}, {f: 2, c: 53949}, 53953,
+    {f: 5, c: 53955}, 53962, {f: 8, c: 53964}, {f: 3, c: 53973},
+    {f: 3, c: 53977}, {f: 7, c: 53981}, {f: 10, c: 53990}, {f: 2, c: 54002},
+    {f: 3, c: 54005}, {f: 7, c: 54009}, 54018, 54020, {f: 6, c: 54022}, 54031,
+    {f: 3, c: 54033}, 54037, {f: 5, c: 54039}, 54046, {f: 3, c: 54050},
+    {f: 2, c: 54054}, {f: 2, c: 54058}, {f: 3, c: 54061}, {f: 7, c: 54065},
+    54074, {f: 6, c: 54078}, {f: 54, c: 54086}, {f: 2, c: 54142},
+    {f: 3, c: 54145}, {f: 7, c: 54149}, 54158, {f: 6, c: 54162},
+    {f: 2, c: 54170}, {f: 3, c: 54173}, {f: 7, c: 54177}, 54186, 54188,
+    {f: 6, c: 54190}, {f: 3, c: 54197}, {f: 3, c: 54201}, {f: 7, c: 54205},
+    {f: 2, c: 54214}, {f: 6, c: 54218}, {f: 7, c: 54225}, {f: 8, c: 54233},
+    54242, {f: 8, c: 54244}, {f: 2, c: 54254}, {f: 3, c: 54257},
+    {f: 7, c: 54261}, 54270, 54272, {f: 6, c: 54274}, {f: 20, c: 54281},
+    {f: 34, c: 54302}, {f: 3, c: 54337}, {f: 23, c: 54341}, {f: 3, c: 54365},
+    {f: 3, c: 54369}, {f: 8, c: 54373}, 54382, {f: 8, c: 54384},
+    {f: 2, c: 54394}, {f: 2, c: 54397}, 54401, {f: 5, c: 54403}, 54410, 54412,
+    {f: 6, c: 54414}, {f: 20, c: 54421}, {f: 34, c: 54442}, {f: 3, c: 54477},
+    {f: 3, c: 54481}, {f: 7, c: 54485}, {f: 2, c: 54493}, {f: 8, c: 54496},
+    {f: 3, c: 54505}, {f: 3, c: 54509}, {f: 7, c: 54513}, {f: 2, c: 54521},
+    54524, {f: 6, c: 54526}, {f: 3, c: 54533}, {f: 3, c: 54537},
+    {f: 7, c: 54541}, 54550, {f: 36, c: 54552}, {f: 2, c: 54590},
+    {f: 3, c: 54593}, {f: 7, c: 54597}, 54606, 54608, {f: 6, c: 54610},
+    {f: 2, c: 54618}, {f: 3, c: 54621}, {f: 4, c: 54625}, {f: 2, c: 54630},
+    54634, 54636, {f: 6, c: 54638}, {f: 2, c: 54646}, {f: 3, c: 54649},
+    {f: 7, c: 54653}, 54662, {f: 6, c: 54666}, {f: 20, c: 54673},
+    {f: 34, c: 54694}, {f: 2, c: 54730}, {f: 3, c: 54733}, 54737,
+    {f: 5, c: 54739}, 54746, 54748, {f: 6, c: 54750}, {f: 2, c: 54758},
+    {f: 3, c: 54761}, {f: 7, c: 54765}, 54774, 54776, {f: 6, c: 54778},
+    {f: 2, c: 54786}, {f: 3, c: 54789}, {f: 7, c: 54793}, 54802,
+    {f: 6, c: 54806}, {f: 3, c: 54813}, {f: 3, c: 54817}, {f: 8, c: 54821},
+    {f: 10, c: 54830}, {f: 2, c: 54842}, {f: 3, c: 54845}, {f: 4, c: 54849},
+    {f: 2, c: 54854}, 54858, 54860, {f: 3, c: 54862}, {f: 2, c: 54866},
+    {f: 2, c: 54870}, {f: 3, c: 54873}, {f: 10, c: 54877}, 54888,
+    {f: 6, c: 54890}, {f: 2, c: 54898}, {f: 14, c: 54901}, 54916,
+    {f: 6, c: 54918}, {f: 2, c: 54926}, {f: 3, c: 54929}, {f: 8, c: 54933},
+    54942, 54944, {f: 6, c: 54946}, {f: 3, c: 54953}, {f: 3, c: 54957},
+    {f: 8, c: 54961}, 54970, {f: 8, c: 54972}, {f: 2, c: 54982},
+    {f: 3, c: 54985}, {f: 4, c: 54989}, {f: 2, c: 54994}, {f: 2, c: 54997},
+    55000, {f: 6, c: 55002}, {f: 3, c: 55009}, {f: 3, c: 55013},
+    {f: 7, c: 55017}, {f: 4, c: 55025}, {f: 6, c: 55030}, {f: 2, c: 55038},
+    {f: 3, c: 55041}, {f: 12, c: 55045}, {f: 6, c: 55058}, {f: 2, c: 55066},
+    {f: 3, c: 55069}, {f: 7, c: 55073}, 55082, 55084, {f: 6, c: 55086},
+    {f: 2, c: 55094}, {f: 3, c: 55097}, {f: 7, c: 55101}, {f: 2, c: 55109},
+    55112, {f: 6, c: 55114}, {f: 2, c: 55122}, 55125, {f: 6, c: 55130}, 55138,
+    55140, {f: 3, c: 55142}, {f: 2, c: 55146}, {f: 3, c: 55149},
+    {f: 3, c: 55153}, {f: 7, c: 55157}, {f: 3, c: 55166}, {f: 6, c: 55170},
+    {f: 2, c: 55178}, {f: 3, c: 55181}, {f: 7, c: 55185}, 55194, 55196,
+    {f: 6, c: 55198}],
+  'Adobe-CNS1': [{f: 95, c: 32}, {s: 3}, 12288, 65292, {f: 2, c: 12289}, 65294,
+    8226, 65307, 65306, 65311, 65281, 65072, 8230, 8229, 65104, 65380, 65106,
+    183, {f: 4, c: 65108}, 65372, 8211, 65073, 8212, {s: 4}, {f: 2, c: 65288},
+    {f: 2, c: 65077}, 65371, 65373, {f: 2, c: 65079}, {f: 2, c: 12308},
+    {f: 2, c: 65081}, {f: 2, c: 12304}, {f: 2, c: 65083}, {f: 2, c: 12298},
+    {f: 2, c: 65085}, {f: 2, c: 12296}, {f: 2, c: 65087}, {f: 2, c: 12300},
+    {f: 2, c: 65089}, {f: 2, c: 12302}, {f: 2, c: 65091}, {f: 6, c: 65113},
+    {f: 2, c: 8216}, {f: 2, c: 8220}, {f: 2, c: 12317}, 8245, 8242, 65283,
+    65286, 65290, 8251, 167, 12291, 9675, 9679, 9651, 9650, 9678, 9734, 9733,
+    9671, 9670, 9633, 9632, 9661, 9660, 12963, 8453, 8254, 0, 65343, 0,
+    {f: 2, c: 65097}, {f: 2, c: 65101}, {f: 2, c: 65099}, {f: 3, c: 65119},
+    65291, 65293, 215, 247, 177, 8730, 65308, 65310, 65309, {f: 2, c: 8806},
+    8800, 8734, 8786, 8801, {f: 5, c: 65122}, 8764, {f: 2, c: 8745}, 8869,
+    8736, 8735, 8895, 13266, 13265, 8747, 8750, 8757, 8756, 9792, 9794, 9793,
+    9737, 8593, 8595, 8594, 8592, {f: 2, c: 8598}, 8601, 8600, 8741, 8739, 0,
+    0, 65295, 65340, 65284, 165, 12306, {f: 2, c: 162}, 65285, 65312, 8451,
+    8457, {f: 3, c: 65129}, 13269, {f: 3, c: 13212}, 13262, 13217,
+    {f: 2, c: 13198}, 13252, 176, [20825, 58834], [20827, 58835],
+    [20830, 58837], [20829, 58836], 20833, 20835, 21991, [29929, 58044],
+    [31950, 58191], {f: 8, c: 9601}, 9615, 9614, 9613, 9612, 9611, 9610, 9609,
+    9532, 9524, 9516, 9508, 9500, 9620, 9472, 9474, 9621, 9484, 9488, 9492,
+    9496, {f: 2, c: 9581}, 9584, 9583, 9552, 9566, 9578, 9569, {f: 2, c: 9698},
+    9701, 9700, {f: 3, c: 9585}, {f: 10, c: 65296}, {f: 10, c: 8544},
+    {f: 9, c: 12321}, 0, [21316, 57443], 0, {f: 26, c: 65313},
+    {f: 26, c: 65345}, {f: 17, c: 913}, {f: 7, c: 931}, {f: 17, c: 945},
+    {f: 7, c: 963}, {f: 37, c: 12549}, 729, 714, 711, 715, [9312, 63153],
+    [9313, 63154], [9314, 63155], [9315, 63156], [9316, 63157], [9317, 63158],
+    [9318, 63159], [9319, 63160], [9320, 63161], [9321, 63162], [9332, 63163],
+    [9333, 63164], [9334, 63165], [9335, 63166], [9336, 63167], [9337, 63168],
+    [9338, 63169], [9339, 63170], [9340, 63171], [9341, 63172], [8560, 63173],
+    [8561, 63174], [8562, 63175], [8563, 63176], [8564, 63177], [8565, 63178],
+    [8566, 63179], [8567, 63180], [8568, 63181], [8569, 63182], [12033, 20008],
+    [12034, 20022, 63183], [12035, 20031, 63184], [12037, 20101, 63185],
+    [12039, 20128, 63186], [12044, 20866, 63187], [12045, 20886, 63188],
+    [12046, 20907, 63189], [12051, 21241, 63190], [12054, 21304, 63191],
+    [12057, 21353, 63192], [12059, 21430, 63193],
+    [12065, 12066, 22786, 22794, 63194], [12071, 23424, 63195],
+    [12078, 24027, 63196], [12083, 24186, 63197], [12084, 24191, 63198],
+    [12085, 24308], [12089, 24400, 63200], [12090, 24417, 63201],
+    [12097, 25908, 63202], [12102, 26080], [12135, 30098, 63204],
+    [12136, 30326], [12193, 36789, 63206], [12202, 38582], {f: 32, c: 9216},
+    9249, [12032, 19968], [12036, 20057], 19969, 19971, 20035, 20061, 20102,
+    [12038, 20108], [12040, 20154], [12041, 20799], [12042, 20837],
+    [12043, 20843], [12047, 20960], [12049, 20992], 20993, [12050, 21147],
+    [12052, 21269], [12055, 21313], [12056, 21340], [12060, 21448], 19977,
+    19979, 19976, 19978, 20011, 20024, 20961, 20037, 20040, 20063, 20062,
+    20110, 20129, [20800, 64012], 20995, 21242, 21315, 21449, [12061, 21475],
+    [12063, 22303], [12064, 22763], [12067, 22805], [12068, 22823],
+    [12069, 22899], [12070, 23376], 23377, 23379, [12072, 23544],
+    [12073, 23567], [12074, 23586], [12075, 23608], [12077, 23665], 24029,
+    [12079, 24037], [12080, 24049], {f: 2, c: 24050}, [12081, 24062],
+    [12082, 24178], [12086, 24318], [12087, 24331], [12088, 24339], 25165,
+    19985, 19984, 19981, 20013, 20016, 20025, 20043, 23609, 20104, 20113,
+    20117, 20114, 20116, 20130, 20161, 20160, 20163, {f: 2, c: 20166}, 20173,
+    {f: 2, c: 20170}, 20164, 20803, 20801, 20839, {f: 2, c: 20845}, 20844,
+    20887, 20982, {f: 3, c: 20998}, 21243, {f: 2, c: 21246}, 21270, 21305,
+    21320, 21319, 21317, 21342, 21380, 21451, 21450, 21453, 22764, 22825,
+    22827, 22826, 22829, 23380, 23569, 23588, 23610, 23663, 24052, 24187,
+    24319, {f: 2, c: 24340}, [12092, 24515], [12093, 25096], [12094, 25142],
+    [12095, 25163], 25166, [12096, 25903], [12098, 25991], [12099, 26007],
+    [12100, 26020], [12101, 26041], [12103, 26085], [12104, 26352],
+    [12105, 26376], [12106, 26408], [12107, 27424], [12108, 27490],
+    [12109, 27513], [12111, 27595], [12112, 27604], [12113, 27611],
+    [12114, 27663], [12116, 27700], [12117, 28779], [12118, 29226],
+    [12119, 29238], [12120, 29243], [12122, 29255], [12123, 29273],
+    [12124, 29275], [12125, 29356], 29579, 19993, 19990, 19989, 19988, 19992,
+    20027, 20045, 20047, 20046, 20197, 20184, {f: 4, c: 20180},
+    {f: 2, c: 20195}, 20185, 20190, 20805, 20804, {f: 2, c: 20873}, 20908,
+    {f: 2, c: 20985}, 20984, 21002, 21152, 21151, [21253, 57435], 21254, 21271,
+    21277, 20191, 21322, 21321, 21345, 21344, 21359, 21358, 21435, 21487,
+    21476, 21491, 21484, 21486, 21481, 21480, 21500, 21496, 21493, 21483,
+    21478, 21482, 21490, 21489, 21488, 21477, 21485, 21499, 22235, 22234,
+    22806, 22830, 22833, 22900, 22902, 23381, 23427, 23612, 24040, 24039,
+    24038, {f: 2, c: 24066}, 24179, 24188, 24321, 24344, 24343, 24517, 25098,
+    {f: 2, c: 25171}, 25170, 25169, 26021, 26086, 26414, 26412,
+    {f: 2, c: 26410}, 26413, 27491, 27597, 27665, 27664, 27704, 27713, 27712,
+    27710, 29359, [12126, 29572], [12127, 29577], [12128, 29916],
+    [12129, 29926], [12130, 29976], [12131, 29983], [12132, 29992], 29993,
+    [12133, 30000], {f: 3, c: 30001}, [12134, 30091], [12137, 30333],
+    [12138, 30382], [12139, 30399], [12140, 30446], [12141, 30683],
+    [12142, 30690], [12143, 30707], [12144, 31034], [12146, 31166],
+    [12147, 31348], [12148, 31435], {f: 2, c: 19998}, {f: 2, c: 20050}, 20073,
+    20121, 20132, 20134, 20133, 20223, 20233, 20249, 20234, 20245, 20237,
+    {f: 2, c: 20240}, 20239, 20210, 20214, 20219, 20208, 20211, 20221, 20225,
+    20235, 20809, 20807, 20806, 20808, 20840, 20849, 20877, 20912, 21015,
+    {f: 2, c: 21009}, 21006, 21014, 21155, 21256, 21281, 21280,
+    {f: 2, c: 21360}, 21513, 21519, 21516, 21514, 21520, 21505, 21515, 21508,
+    21521, 21517, 21512, 21507, 21518, 21510, 21522, 22240, 22238, 22237,
+    22323, 22320, 22312, 22317, 22316, 22319, 22313, {f: 2, c: 22809},
+    {f: 2, c: 22839}, 22916, 22904, 22915, 22909, 22905, 22914, 22913,
+    {f: 2, c: 23383}, {f: 2, c: 23431}, 23429, 23433, 23546, 23574, 23673,
+    24030, 24070, 24182, 24180, 24335, 24347, 24537, 24534, 25102,
+    {f: 2, c: 25100}, 25104, 25187, 25179, 25176, 25910, 26089, 26088,
+    {f: 2, c: 26092}, {f: 2, c: 26354}, 26377, 26429, 26420, 26417, 26421,
+    27425, 27492, 27515, 27670, 27741, 27735, 27737, {f: 2, c: 27743}, 27728,
+    27733, 27745, 27739, {f: 2, c: 27725}, 28784, 29279, 29277, 30334,
+    [12149, 31481], [12150, 31859], [12151, 31992], [12152, 32566],
+    [12154, 32650], [12155, 32701], [12156, 32769], 32771, [12157, 32780],
+    [12158, 32786], [12159, 32819], [12160, 32895], [12161, 32905],
+    {f: 2, c: 32907}, [12162, 33251], [12163, 33258], [12164, 33267],
+    [12165, 33276], [12166, 33292], [12167, 33307], [12168, 33311],
+    [12169, 33390], [12170, 33394], 33406, [12173, 34411], [12174, 34880],
+    [12175, 34892], [12176, 34915], 35199, 38433, 20018, 20136, 20301, 20303,
+    20295, 20311, 20318, 20276, 20315, 20309, 20272, {f: 2, c: 20304}, 20285,
+    20282, 20280, 20291, 20308, 20284, 20294, 20323, 20316, 20320, 20271,
+    20302, 20278, 20313, 20317, 20296, 20314, 20812, 20811, 20813, 20853,
+    {f: 2, c: 20918}, 21029, 21028, {f: 2, c: 21033}, 21032, 21163,
+    {f: 2, c: 21161}, 21164, 21283, 21363, 21365, 21533, 21549, 21534, 21566,
+    21542, 21582, 21543, 21574, 21571, 21555, 21576, 21570, 21531, 21545,
+    21578, 21561, 21563, 21560, 21550, {f: 2, c: 21557}, 21536, 21564, 21568,
+    21553, 21547, 21535, 21548, 22250, 22256, 22244, 22251, 22346, 22353,
+    22336, 22349, 22343, 22350, 22334, 22352, 22351, 22331, 22767, 22846,
+    22941, 22930, 22952, 22942, 22947, 22937, 22934, 22925, 22948, 22931,
+    22922, 22949, 23389, 23388, {f: 2, c: 23386}, 23436, 23435, 23439, 23596,
+    {f: 2, c: 23616}, 23615, 23614, {f: 2, c: 23696}, 23700, 23692, 24043,
+    24076, 24207, 24199, 24202, 24311, 24324, 24351, 24420, 24418, 24439,
+    24441, 24536, 24524, 24535, 24525, 24561, 24555, 24568, 24554, 25106,
+    25105, 25220, 25239, 25238, 25216, 25206, 25225, 25197, 25226, 25212,
+    25214, 25209, 25203, 25234, 25199, 25240, 25198, 25237, 25235, 25233,
+    25222, 25913, 25915, 25912, 26097, 26356, 26463, {f: 4, c: 26446}, 26460,
+    26454, [26462, 57801], 26441, 26438, 26464, 26451, 26455, 27493, 27599,
+    27714, 27742, 27801, 27777, {f: 2, c: 27784}, 27781, 27803, 27754, 27770,
+    27792, 27760, 27788, 27752, 27798, 27794, 27773, 27779, 27762, 27774,
+    27764, 27782, 27766, 27789, 27796, 27800, 27778, 28790, {f: 2, c: 28796},
+    28792, 29282, 29281, 29280, 29380, 29378, 29590, 29996, 29995,
+    {f: 2, c: 30007}, 30338, 30447, 30691, 31169, 31168, 31167, 31350, 31995,
+    32597, 32918, 32915, 32925, 32920, 32923, 32922, 32946, 33391, 33426,
+    33419, 33421, [12178, 35211], [12179, 35282], [12180, 35328],
+    [12181, 35895], [12182, 35910], [12183, 35925], [12185, 35997],
+    [12186, 36196], [12187, 36208], [12188, 36275], [12189, 36523],
+    [12190, 36554], [12191, 36763], [12192, 36784], 36802, 36806, 36805, 36804,
+    24033, [12194, 37009], 37026, 37034, 37030, 37027, [12195, 37193],
+    [12196, 37318], [12197, 37324], 38450, 38446, 38449, 38442, 38444, 20006,
+    20054, 20083, 20107, 20123, 20126, {f: 2, c: 20139}, 20335, 20381, 20365,
+    20339, 20351, 20332, 20379, 20363, 20358, 20355, 20336, 20341, 20360,
+    20329, 20347, 20374, 20350, 20367, 20369, 20346, 20820, 20818, 20821,
+    20841, 20855, 20854, 20856, 20925, 20989, 21051, 21048, 21047, 21050,
+    21040, 21038, 21046, 21057, 21182, 21179, 21330, 21332, 21331, 21329,
+    21350, {f: 3, c: 21367}, 21462, 21460, 21463, 21619, 21621, 21654, 21624,
+    21653, 21632, 21627, 21623, 21636, 21650, 21638, 21628, 21648, 21617,
+    21622, 21644, 21658, 21602, 21608, 21643, 21629, 21646, 22266, 22403,
+    22391, 22378, 22377, 22369, 22374, 22372, 22396, 22812, 22857,
+    {f: 2, c: 22855}, 22852, 22868, 22974, 22971, 22996, 22969, 22958, 22993,
+    22982, 22992, 22989, 22987, 22995, 22986, 22959, 22963, 22994, 22981,
+    23391, 23396, 23395, 23447, 23450, 23448, 23452, 23449, 23451, 23578,
+    23624, {f: 2, c: 23621}, 23735, 23713, 23736, 23721, 23723, 23729, 23731,
+    24088, 24090, 24086, 24085, 24091, 24081, 24184, 24218, 24215, 24220,
+    {f: 2, c: 24213}, 24310, {f: 2, c: 24358}, 24361, {f: 2, c: 24448}, 24447,
+    24444, 24541, 24544, 24573, 24565, 24575, 24591, 24596, 24623, 24629,
+    24598, 24618, 24597, 24609, 24615, 24617, 24619, 24603, 25110, 25109,
+    25151, 25150, 25152, 25215, 25289, 25292, 25284, 25279, 25282, 25273,
+    25298, 25307, 25259, {f: 2, c: 25299}, 25291, 25288, 25256, 25277, 25276,
+    [25296, 60582], 25305, 25287, 25293, 25269, 25306, 25265, 25304,
+    {f: 2, c: 25302}, 25286, 25260, [25294, 61010], 25918, 26023, 26044, 26106,
+    26132, 26131, 26124, 26118, 26114, 26126, 26112, 26127, 26133, 26122,
+    26119, 26381, 26379, 26477, 26507, 26517, 26481, 26524, 26483, 26487,
+    26503, 26525, 26519, {f: 2, c: 26479}, 26495, 26505, 26494, 26512, 26485,
+    26522, 26515, 26492, 26474, 26482, 27427, {f: 2, c: 27494}, 27519, 27667,
+    27675, 27875, 27880, 27891, 27825, 27852, 27877, 27827, {f: 2, c: 27837},
+    27836, 27874, 27819, 27861, 27859, 27832, 27844, 27833, 27841, 27822,
+    27863, 27845, 27889, 27839, 27835, 27873, 27867, 27850, 27820, 27887,
+    27868, 27862, 27872, 28821, 28814, 28818, 28810, 28825, {f: 2, c: 29228},
+    29240, 29256, 29287, 29289, 29376, 29390, 29401, 29399, 29392, 29609,
+    29608, 29599, 29611, 29605, 30013, 30109, {f: 2, c: 30105}, 30340, 30402,
+    30450, 30452, 30693, 30717, 31038, {f: 2, c: 31040}, 31177, 31176, 31354,
+    31353, 31482, 31998, 32596, 32652, 32651, [32773, 58236], 32954, 32933,
+    32930, 32945, 32929, 32939, 32937, 32948, 32938, 32943, 33253, 33278,
+    33293, 33459, 33437, 33433, 33453, 33469, 33439, 33465, 33457, 33452,
+    33445, 33455, 33464, 33443, 33456, 33470, 33463, 34382, 34417, 21021,
+    34920, 36555, 36814, 36820, 36817, 37045, 37048, 37041, 37046, 37319,
+    [12198, 37329], [12199, 38263], [12200, 38272], [12201, 38428], 38464,
+    38463, 38459, 38468, 38466, [12203, 38585], [12204, 38632], 38738,
+    [12206, 38750], 20127, {f: 2, c: 20141}, 20449, 20405, 20399, 20415, 20448,
+    20433, 20431, 20445, 20419, 20406, 20440, 20447, 20426, 20439, 20398,
+    20432, 20420, 20418, 20442, 20430, 20446, 20407, 20823, 20882, 20881,
+    20896, 21070, 21059, 21066, 21069, 21068, 21067, 21063, 21191, 21193,
+    21187, 21185, 21261, 21335, 21371, 21402, 21467, 21676, 21696, 21672,
+    21710, 21705, 21688, 21670, 21683, 21703, 21698, 21693, 21674, 21697,
+    21700, 21704, 21679, 21675, 21681, 21691, 21673, 21671, 21695, 22271,
+    22402, 22411, 22432, 22435, 22434, 22478, 22446, 22419, 22869, 22865,
+    22863, 22862, 22864, 23004, 23000, 23039, 23011, 23016, 23043, 23013,
+    23018, 23002, 23014, 23041, 23035, 23401, 23459, 23462, 23460, 23458,
+    23461, 23553, {f: 2, c: 23630}, 23629, 23627, 23769, 23762, 24055, 24093,
+    24101, 24095, 24189, 24224, 24230, 24314, 24328, 24365, 24421, 24456,
+    24453, {f: 2, c: 24458}, 24455, 24460, 24457, 24594, 24605, 24608, 24613,
+    24590, 24616, 24653, 24688, 24680, [24674, 60712], 24646, 24643, 24684,
+    24683, 24682, 24676, 25153, 25308, 25366, 25353, 25340, 25325, 25345,
+    25326, 25341, 25351, 25329, 25335, 25327, 25324, 25342, 25332, 25361,
+    25346, 25919, 25925, 26027, 26045, 26082, 26149, 26157, 26144, 26151,
+    26159, 26143, 26152, 26161, 26148, 26359, 26623, 26579, 26609, 26580,
+    26576, 26604, 26550, 26543, 26613, 26601, 26607, 26564, 26577, 26548,
+    26586, 26597, 26552, 26575, 26590, 26611, 26544, 26585, 26594, 26589,
+    26578, 27498, 27523, 27526, 27573, 27602, 27607, 27679, 27849, 27915,
+    27954, 27946, 27969, 27941, 27916, 27953, 27934, 27927, 27963,
+    {f: 2, c: 27965}, 27958, 27931, 27893, 27961, 27943, 27960, 27945, 27950,
+    27957, 27918, 27947, 28843, 28858, 28851, 28844, 28847, 28845, 28856,
+    28846, 28836, 29232, 29298, 29295, 29300, 29417, {f: 2, c: 29408}, 29623,
+    29642, 29627, 29618, 29645, 29632, 29619, 29978, 29997, 30031, 30028,
+    30030, 30027, 30123, {f: 2, c: 30116}, {f: 2, c: 30114}, 30328,
+    {f: 3, c: 30342}, 30408, 30406, 30403, 30405, 30465, 30457, 30456, 30473,
+    30475, 30462, 30460, 30471, 30684, 30722, 30740, {f: 2, c: 30732}, 31046,
+    31049, 31048, 31047, {f: 2, c: 31161}, {f: 2, c: 31185}, 31179, 31359,
+    31361, 31487, 31485, 31869, 32002, 32005, 32000, 32009, 32007, 32004,
+    32006, 32568, 32654, 32703, 32784, 32781, 32785, 32822, 32982, 32997,
+    32986, {f: 2, c: 32963}, 32972, 32993, 32987, 32974, 32990, 32996, 32989,
+    33268, 33314, 33511, 33539, 33541, 33507, 33499, 33510, 33540, 33509,
+    33538, 33545, 33490, 33495, 33521, 33537, 33500, 33492, 33489, 33502,
+    33491, 33503, 33519, 33542, 34384, 34425, 34427, 34426, 34893, 34923,
+    35201, 35284, 35336, {f: 2, c: 35330}, 35998, 36000, 36212, 36211, 36276,
+    36557, 36556, 36848, 36838, 36834, 36842, 36837, 36845, 36843, 36836,
+    36840, 37066, 37070, 37057, 37059, 37195, 37194, 37325, 38274, 38480,
+    {f: 3, c: 38475}, [12207, 38754], [12208, 38761], [12209, 38859],
+    [12210, 38893], [12211, 38899], [12212, 38913], [12213, 39080],
+    [12214, 39131], [12215, 39135], [12216, 39318], [12217, 39321], 20056,
+    20147, {f: 2, c: 20492}, 20515, 20463, 20518, 20517, 20472, [20521, 57375],
+    20502, 20486, 20540, 20511, 20506, 20498, 20497, 20474, 20480, 20500,
+    20520, 20465, 20513, 20491, 20505, 20504, 20467, 20462, 20525, 20522,
+    20478, 20523, 20489, 20860, {f: 2, c: 20900}, 20898, 20941, 20940, 20934,
+    20939, 21078, 21084, 21076, 21083, 21085, 21290, [21375, 57459], 21407,
+    21405, 21471, 21736, 21776, 21761, 21815, 21756, 21733, 21746, 21766,
+    21754, 21780, 21737, 21741, 21729, 21769, 21742, 21738, 21734, 21799,
+    21767, 21757, 21775, {f: 2, c: 22275}, 22466, 22484, 22475, 22467, 22537,
+    22799, {f: 2, c: 22871}, 22874, 23057, 23064, 23068, 23071, 23067, 23059,
+    23020, 23072, 23075, 23081, 23077, 23052, 23049, 23403, 23640, 23472,
+    23475, 23478, 23476, 23470, 23477, 23481, 23480, 23556, 23633, 23637,
+    23632, 23789, 23805, 23803, 23786, 23784, 23792, 23798, 23809, 23796,
+    24046, 24109, 24107, 24235, 24237, 24231, 24369, 24466, 24465, 24464,
+    24665, 24675, 24677, 24656, 24661, 24685, 24681, 24687, 24708, 24735,
+    24730, 24717, 24724, 24716, 24709, 24726, 25159, 25331, 25352, 25343,
+    25422, 25406, 25391, 25429, 25410, 25414, 25423, 25417, 25402, 25424,
+    25405, {f: 2, c: 25386}, 25384, 25421, 25420, {f: 2, c: 25928}, 26009,
+    26049, 26053, 26178, 26185, 26191, 26179, 26194, 26188, 26181, 26177,
+    26360, {f: 2, c: 26388}, 26391, 26657, 26680, 26696, 26694, 26707, 26681,
+    26690, 26708, 26665, 26803, 26647, 26700, 26705, 26685, 26612, 26704,
+    26688, 26684, 26691, 26666, 26693, 26643, 26648, 26689, 27530, 27529,
+    27575, 27683, {f: 2, c: 27687}, 27686, 27684, 27888, 28010, 28053, 28040,
+    28039, 28006, 28024, 28023, 27993, 28051, 28012, 28041, 28014, 27994,
+    28020, 28009, 28044, 28042, 28025, 28037, 28005, 28052, 28874, 28888,
+    28900, 28889, 28872, 28879, 29241, 29305, 29436, 29433, 29437, 29432,
+    29431, 29574, 29677, 29705, 29678, 29664, 29674, 29662, 30036, 30045,
+    30044, 30042, 30041, 30142, 30149, 30151, {f: 2, c: 30130}, 30141, 30140,
+    30137, 30146, 30136, 30347, 30384, 30410, {f: 2, c: 30413}, 30505,
+    {f: 2, c: 30495}, 30504, 30697, 30768, 30759, 30776, 30749, 30772, 30775,
+    30757, 30765, 30752, 30751, 30770, 31061, 31056, 31072, 31071, 31062,
+    31070, 31069, 31063, 31066, 31204, [31203, 60418], 31207, 31199, 31206,
+    31209, 31192, 31364, 31368, 31449, 31494, 31505, 31881, 32033, 32023,
+    32011, 32010, 32032, 32034, 32020, 32016, 32021, 32026, 32028, 32013,
+    32025, 32027, 32570, 32607, 32660, 32709, 32705, 32774, 32772, 32792,
+    32789, 32793, 32791, 32829, 32831, 33009, 33026, 33008, 33029, 33005,
+    33012, 33030, 33016, 33011, 33032, 33021, 33034, 33020, 33007, 33261,
+    33260, 33280, 33296, {f: 2, c: 33322}, 33320, 33324, 33467, 33579, 33618,
+    33620, 33610, 33592, 33616, 33609, 33589, 33588, 33615, 33586, 33593,
+    33590, 33559, 33600, 33585, 33576, 33603, 34388, 34442, 34474, 34451,
+    34468, 34473, 34444, 34467, 34460, 34928, 34935, {f: 2, c: 34945}, 34941,
+    34937, 35352, 35344, 35342, 35340, 35349, 35338, 35351, 35347, 35350,
+    35343, 35345, 35912, 35962, 35961, {f: 2, c: 36001}, [36215, 58442], 36524,
+    36562, 36564, 36559, 36785, 36865, 36870, 36855, 36864, 36858, 36852,
+    36867, 36861, 36869, 36856, 37013, 37089, 37085, 37090, 37202, 37197,
+    37196, 37336, 37341, 37335, 37340, 37337, 38275, {f: 2, c: 38498}, 38497,
+    38491, 38493, 38500, 38488, 38494, 38587, 39138, [12218, 39340],
+    [12219, 39592], [12220, 39640], [12222, 39717], [12224, 39730],
+    [12225, 39740], 20094, 20602, [20605, 57382], 20572, 20551, 20547, 20556,
+    20570, 20553, 20581, 20598, 20558, 20565, 20597, 20596, 20599, 20559,
+    20495, 20591, 20589, 20828, 20885, 20976, 21098, 21103, 21202, 21209,
+    21208, 21205, 21264, 21263, 21273, {f: 2, c: 21311}, 21310, 21443, 26364,
+    21830, 21866, 21862, 21828, 21854, 21857, 21827, 21834, 21809, 21846,
+    21839, 21845, 21807, 21860, 21816, 21806, 21852, 21804, 21859, 21811,
+    21825, 21847, 22280, 22283, 22281, 22495, 22533, 22538, 22534, 22496,
+    22500, 22522, 22530, 22581, 22519, 22521, 22816, 22882, 23094, 23105,
+    23113, 23142, 23146, 23104, 23100, 23138, 23130, 23110, 23114, 23408,
+    23495, 23493, 23492, 23490, 23487, 23494, 23561, 23560, 23559, 23648,
+    {f: 2, c: 23644}, 23815, 23814, 23822, 23835, 23830, 23842, 23825, 23849,
+    23828, 23833, 23844, 23847, 23831, 24034, 24120, 24118, 24115, 24119,
+    {f: 2, c: 24247}, 24246, 24245, 24254, 24373, 24375, 24407, 24428, 24425,
+    24427, 24471, 24473, 24478, 24472, 24481, 24480, 24476, 24703, 24739,
+    24713, 24736, 24744, 24779, 24756, 24806, 24765, 24773, 24763, 24757,
+    24796, 24764, 24792, 24789, 24774, 24799, 24760, 24794, 24775,
+    {f: 2, c: 25114}, 25160, 25504, 25511, 25458, 25494, 25506, 25509, 25463,
+    25447, 25496, 25514, 25457, 25513, 25481, 25475, 25499, 25451, 25512,
+    25476, 25480, 25497, 25505, 25516, 25490, 25487, 25472, 25467, 25449,
+    25448, 25466, 25949, 25942, 25937, 25945, 25943, 21855, 25935, 25944,
+    25941, 25940, 26012, 26011, 26028, 26063, {f: 2, c: 26059}, 26062, 26205,
+    26202, 26212, 26216, 26214, 26206, 26361, 21207, 26395, 26753, 26799,
+    26786, 26771, 26805, 26751, 26742, 26801, 26791, 26775, 26800, 26755,
+    26820, 26797, 26758, 26757, 26772, 26781, 26792, 26783, 26785, 26754,
+    27442, 27578, {f: 2, c: 27627}, 27691, 28046, 28092, 28147, 28121, 28082,
+    28129, 28108, 28132, 28155, 28154, 28165, 28103, 28107, 28079, 28113,
+    28078, 28126, 28153, 28088, 28151, 28149, 28101, 28114, 28186, 28085,
+    28122, 28139, 28120, 28138, 28145, 28142, 28136, 28102, 28100, 28074,
+    28140, 28095, 28134, 28921, {f: 2, c: 28937}, 28925, 28911, 29245, 29309,
+    29313, 29468, 29467, 29462, 29459, 29465, 29575, 29701, 29706, 29699,
+    29702, 29694, 29709, 29920, {f: 2, c: 29942}, 29980, 29986,
+    {f: 2, c: 30053}, 30050, 30064, 30095, {f: 2, c: 30164}, 30133, 30154,
+    30157, 30350, 30420, 30418, 30427, 30519, 30526, 30524, 30518, 30520,
+    30522, 30827, 30787, 30798, 31077, 31080, 31085, 31227, 31378, 31381,
+    31520, 31528, 31515, 31532, 31526, 31513, 31518, 31534, 31890, 31895,
+    31893, 32070, 32067, 32113, 32046, 32057, 32060, 32064, 32048, 32051,
+    32068, 32047, 32066, 32050, 32049, 32573, 32670, 32666, 32716, 32718,
+    32722, 32796, 32842, 32838, 33071, 33046, 33059, 33067, 33065, 33072,
+    33060, 33282, 33333, 33335, 33334, 33337, 33678, 33694, 33688, 33656,
+    33698, 33686, 33725, 33707, 33682, 33674, 33683, 33673, 33696, 33655,
+    {f: 2, c: 33659}, 33670, 33703, 34389, 24426, 34503, 34496, 34486, 34500,
+    34485, 34502, 34507, 34481, 34479, 34505, 34899, 34974, 34952, 34987,
+    34962, 34966, 34957, 34955, 35219, 35215, 35370, 35357, 35363, 35365,
+    35377, 35373, 35359, 35355, 35362, 35913, 35930, 36009, 36012, 36011,
+    36008, 36010, 36007, 36199, 36198, 36286, 36282, 36571, 36575, 36889,
+    36877, 36890, 36887, 36899, 36895, 36893, 36880, 36885, 36894, 36896,
+    36879, 36898, 36886, 36891, 36884, 37096, 37101, [37117, 58488], 37207,
+    37326, 37365, 37350, 37347, 37351, 37357, 37353, 38281, 38506, 38517,
+    38515, 38520, 38512, 38516, {f: 2, c: 38518}, 38508, 38592, 38634, 38633,
+    31456, 31455, {f: 2, c: 38914}, [12226, 39770], [12227, 40165],
+    [12228, 40565], [12229, 40575], [12230, 40613], [12231, 40635], 20642,
+    20621, 20613, 20633, 20625, 20608, 20630, 20632, 20634, 26368, 20977,
+    21106, {f: 2, c: 21108}, 21097, 21214, 21213, 21211, 21338, 21413, 21883,
+    21888, 21927, 21884, 21898, 21917, 21912, 21890, 21916, 21930, 21908,
+    21895, 21899, 21891, 21939, 21934, 21919, 21822, 21938, 21914, 21947,
+    21932, 21937, 21886, 21897, 21931, 21913, 22285, 22575, 22570, 22580,
+    22564, {f: 2, c: 22576}, 22561, 22557, 22560, {f: 2, c: 22777}, 22880,
+    [23159, 57587], 23194, 23167, 23186, 23195, 23207, 23411, 23409, 23506,
+    23500, 23507, 23504, {f: 2, c: 23562}, 23601, 23884, 23888, 23860, 23879,
+    24061, 24133, 24125, 24128, 24131, 24190, 24266, {f: 2, c: 24257}, 24260,
+    24380, 24429, {f: 2, c: 24489}, 24488, 24785, 24801, 24754, 24758, 24800,
+    24860, 24867, 24826, 24853, 24816, 24827, 24820, 24936, 24817, 24846,
+    24822, 24841, 24832, 24850, 25119, 25161, 25507, 25484, 25551, 25536,
+    25577, 25545, 25542, 25549, 25554, 25571, 25552, 25569, 25558,
+    {f: 2, c: 25581}, 25462, 25588, 25578, 25563, 25682, 25562, 25593, 25950,
+    25958, {f: 2, c: 25954}, 26001, 26000, 26031, 26222, 26224, [26228, 57786],
+    26230, 26223, 26257, 26234, 26238, 26231, {f: 2, c: 26366}, 26399, 26397,
+    26874, 26837, 26848, 26840, 26839, 26885, 26847, 26869, 26862, 26855,
+    26873, 26834, 26866, 26851, 26827, 26829, 26893, 26898, 26894, 26825,
+    26842, 26990, 26875, 27454, 27450, 27453, 27544, 27542, 27580, 27631,
+    {f: 2, c: 27694}, 27692, [28207, 57904], 28216, 28244, 28193, 28210, 28263,
+    28234, 28192, 28197, 28195, 28187, 28251, 28248, 28196, 28246, 28270,
+    28205, 28198, 28271, 28212, 28237, 28218, 28204, 28227, [28189, 57901],
+    28222, 28363, 28297, 28185, 28238, 28259, 28228, 28274, 28265, 28255,
+    {f: 2, c: 28953}, 28966, 28976, 28961, 28982, [29038, 57958], 28956, 29260,
+    29316, 29312, 29494, 29477, 29492, 29481, 29754, 29738, 29747, 29730,
+    29733, {f: 2, c: 29749}, 29748, 29743, 29723, 29734, 29736,
+    {f: 2, c: 29989}, 30059, 30058, 30178, 30171, 30179, 30169, 30168, 30174,
+    30176, {f: 2, c: 30331}, 30358, 30355, 30388, 30428, 30543, 30701, 30813,
+    30828, 30831, 31245, 31240, 31243, 31237, 31232, 31384, 31383, 31382,
+    31461, 31459, 31561, 31574, 31558, 31568, 31570, 31572, 31565, 31563,
+    31567, [31569, 60510], 31903, 31909, 32094, 32080, 32104, 32085, 32043,
+    32110, 32114, 32097, 32102, 32098, 32112, 32115, 21892, {f: 2, c: 32724},
+    32779, 32850, 32901, 33109, 33108, 33099, 33105, 33102, 33081, 33094,
+    33086, 33100, 33107, 33140, 33298, 33308, 33769, 33795, 33784, 33805,
+    33760, 33733, 33803, [33729, 58309], 33775, 33777, 33780, 33879, 33802,
+    33776, 33804, 33740, 33789, 33778, 33738, 33848, 33806, 33796, 33756,
+    33799, 33748, 33759, 34395, 34527, 34521, 34541, 34516, 34523, 34532,
+    34512, 34526, 34903, {f: 2, c: 35009}, 34993, 35203, 35222, 35387, 35424,
+    35413, 35422, 35388, 35393, 35412, 35419, 35408, 35398, 35380, 35386,
+    35382, 35414, 35937, 35970, 36015, 36028, 36019, 36029, 36033, 36027,
+    36032, 36020, 36023, 36022, 36031, 36024, 36234, 36229, 36225, 36302,
+    36317, 36299, 36314, 36305, 36300, 36315, 36294, 36603, 36600, 36604,
+    36764, 36910, 36917, 36913, 36920, 36914, 36918, 37122, 37109, 37129,
+    37118, 37219, 37221, 37327, {f: 2, c: 37396}, 37411, 37385, 37406, 37389,
+    37392, 37383, 37393, 38292, 38287, 38283, 38289, 38291, 38290, 38286,
+    38538, 38542, 38539, 38525, {f: 2, c: 38533}, 38541, 38514, 38532, 38593,
+    38597, 38596, {f: 2, c: 38598}, 38639, 38642, 38860, {f: 2, c: 38917},
+    38920, 39143, 39146, 39151, 39145, 39154, 39149, 39342, 39341,
+    [12232, 40643], [12233, 40653], [12234, 40657], 20098, 20653, 20661,
+    {f: 2, c: 20658}, 20677, 20670, 20652, 20663, 20667, 20655, 20679, 21119,
+    21111, 21117, 21215, 21222, 21220, {f: 2, c: 21218}, 21295, 21983, 21992,
+    21971, 21990, 21966, 21980, 21959, 21969, {f: 2, c: 21987}, 21999, 21978,
+    21985, {f: 2, c: 21957}, 21989, 21961, {f: 2, c: 22290}, 22622, 22609,
+    22616, 22615, 22618, 22612, 22635, 22604, 22637, 22602, 22626, 22610,
+    22603, 22887, 23233, 23241, 23244, 23230, 23229, 23228, 23219, 23234,
+    23218, 23913, 23919, 24140, 24185, 24265, 24264, 24338, 24409, 24492,
+    24494, 24858, 24847, 24904, 24863, 24819, 24859, 24825, 24833, 24840,
+    24910, 24908, 24900, 24909, 24894, 24884, 24871, 24845, 24838, 24887,
+    {f: 2, c: 25121}, 25619, 25662, 25630, 25642, 25645, 25661, 25644, 25615,
+    25628, 25620, 25613, 25654, {f: 2, c: 25622}, 25606, 25964, 26015, 26032,
+    26263, 26249, {f: 2, c: 26247}, 26262, 26244, 26264, 26253, 26371, 27028,
+    26989, 26970, 26999, 26976, 26964, 26997, 26928, 27010, 26954, 26984,
+    26987, 26974, 26963, 27001, 27014, 26973, 26979, 26971, 27463, 27506,
+    27584, 27583, 27603, 27645, 28322, 28335, 28371, 28342, 28354, 28304,
+    28317, 28359, 28357, 28325, 28312, 28348, 28346, 28331, 28369, 28310,
+    28316, 28356, 28372, 28330, 28327, 28340, 29006, 29017, 29033, 29028,
+    29001, 29031, 29020, 29036, 29030, 29004, 29029, 29022, 28998, 29032,
+    29014, 29242, 29266, 29495, 29509, 29503, 29502, 29807, 29786, 29781,
+    29791, 29790, 29761, 29759, 29785, 29787, [29788, 58019], 30070, 30072,
+    30208, 30192, 30209, 30194, 30193, 30202, 30207, 30196, 30195,
+    {f: 2, c: 30430}, 30555, 30571, 30566, 30558, 30563, 30585, 30570, 30572,
+    30556, 30565, 30568, 30562, 30702, 30862, 30896, {f: 2, c: 30871}, 30860,
+    30857, 30844, 30865, 30867, 30847, 31098, 31103, 31105, 33836, 31165,
+    31260, 31258, 31264, 31252, 31263, 31262, {f: 2, c: 31391}, 31607, 31680,
+    31584, 31598, 31591, 31921, 31923, 31925, 32147, 32121, 32145, 32129,
+    32143, 32091, 32622, {f: 2, c: 32617}, 32626, 32681, 32680, 32676, 32854,
+    32856, 32902, 32900, 33137, 33136, 33144, 33125, 33134, 33139, 33131,
+    {f: 2, c: 33145}, 33126, 33285, 33351, 33922, 33911, 33853, 33841, 33909,
+    33894, 33899, 33865, 33900, 33883, 33852, 33845, 33889, 33891, 33897,
+    33901, 33862, 34398, 34396, 34399, 34553, 34579, 34568, 34567, 34560,
+    34558, 34555, {f: 2, c: 34562}, 34566, 34570, 34905, 35039, 35028, 35033,
+    35036, 35032, 35037, 35041, 35018, 35029, 35026, 35228, 35299, 35435,
+    {f: 2, c: 35442}, 35430, 35433, 35440, 35463, 35452, 35427, 35488, 35441,
+    35461, 35437, 35426, 35438, 35436, 35449, 35451, 35390, 35432, 35938,
+    35978, 35977, 36042, {f: 2, c: 36039}, 36036, 36018, 36035, 36034, 36037,
+    36321, 36319, 36328, 36335, 36339, 36346, 36330, 36324, 36326, 36530,
+    36611, 36617, 36606, 36618, 36767, 36786, 36939, 36938, 36947, 36930,
+    36948, 36924, 36949, 36944, 36935, 36943, 36942, 36941, 36945, 36926,
+    36929, 37138, 37143, 37228, 37226, 37225, 37321, 37431, 37463, 37432,
+    37437, 37440, 37438, 37467, 37451, 37476, 37457, 37428, 37449, 37453,
+    37445, 37433, 37439, 37466, 38296, 38552, {f: 2, c: 38548}, 38605, 38603,
+    {f: 2, c: 38601}, 38647, 38651, 38649, 38646, 38742, 38772, 38774,
+    {f: 2, c: 38928}, 38931, 38922, 38930, 38924, 39164, 39156,
+    {f: 2, c: 39165}, 39347, 39345, 39348, 39649, 40169, 40578, [12237, 40718],
+    [12238, 40723], [12239, 40736], 20711, 20718, 20709, 20694, [20717, 60903],
+    20698, 20693, 20687, 20689, 20721, 20686, 20713, 20834, 20979, 21123,
+    21122, 21297, 21421, 22014, 22016, 22043, 22039, 22013, 22036, 22022,
+    22025, {f: 2, c: 22029}, 22007, 22038, 22047, 22024, 22032, 22006, 22296,
+    22294, 22645, 22654, 22659, 22675, 22666, 22649, 22661, 22653, 22781,
+    22821, 22818, 22820, 22890, 22889, 23265, 23270, 23273, 23255, 23254,
+    23256, 23267, 23413, 23518, 23527, 23521, {f: 2, c: 23525}, 23528, 23522,
+    23524, 23519, 23565, 23650, 23940, 23943, 24155, 24163, 24149, 24151,
+    24148, 24275, 24278, 24330, 24390, 24432, 24505, 24903, 24895, 24907,
+    24951, {f: 2, c: 24930}, 24927, 24922, 24920, 24949, 25130, 25735, 25688,
+    25684, 25764, 25720, 25695, 25722, 25681, 25703, 25652, 25709, 25723,
+    25970, 26017, 26071, 26070, 26274, 26280, 26269, 27036, 27048, 27029,
+    27073, 27054, 27091, 27083, 27035, 27063, 27067, 27051, 27060, 27088,
+    27085, 27053, 27084, 27046, 27075, 27043, 27465, 27468, 27699, 28467,
+    28436, 28414, 28435, 28404, 28457, 28478, 28448, 28460, 28431, 28418,
+    28450, 28415, 28399, 28422, 28465, 28472, 28466, 28451, 28437, 28459,
+    28463, 28552, 28458, 28396, 28417, 28402, 28364, 28407, 29076, 29081,
+    29053, 29066, 29060, 29074, 29246, 29330, 29334, 29508, 29520, 29796,
+    29795, 29802, 29808, 29805, 29956, 30097, 30247, 30221, 30219, 30217,
+    30227, 30433, 30435, 30596, 30589, 30591, 30561, 30913, 30879, 30887,
+    30899, 30889, 30883, {f: 2, c: 31118}, 31117, 31278, 31281, 31402, 31401,
+    31469, 31471, 31649, 31637, 31627, 31605, 31639, 31645, 31636, 31631,
+    [31672, 58170], 31623, 31620, 31929, {f: 2, c: 31933}, 32187, 32176, 32156,
+    {f: 2, c: 32189}, 32160, 32202, 32180, 32178, 32177, 32186, 32162, 32191,
+    32181, 32184, 32173, [32210, 58202], 32199, 32172, 32624, {f: 2, c: 32736},
+    32735, 32862, 32858, 32903, 33104, 33152, 33167, 33160, 33162, 33151,
+    33154, 33255, 33274, 33287, 33300, 33310, 33355, 33993, 33983, 33990,
+    33988, 33945, 33950, 33970, 33948, 33995, 33976, 33984, 34003, 33936,
+    33980, 34001, 33994, 34623, 34588, 34619, 34594, 34597, 34612, 34584,
+    34645, 34615, 34601, 35059, 35074, 35060, 35065, 35064, 35069, 35048,
+    35098, 35055, 35494, 35468, 35486, 35491, 35469, 35489, 35475, 35492,
+    35498, 35493, 35496, 35480, 35473, 35482, 35495, 35946, 35981, 35980,
+    36051, {f: 2, c: 36049}, 36203, 36249, 36245, 36348, 36628, 36626, 36629,
+    36627, 36771, 36960, 36952, 36956, 36963, 36953, 36958, 36962, 36957,
+    36955, 37145, 37144, 37150, 37237, 37240, 37239, 37236, 37496, 37548,
+    37504, 37509, 37528, 37526, 37499, 37523, 37532, 37544, 37500, 37521,
+    38305, {f: 2, c: 38312}, 38307, 38309, 38308, 38553, 38556, 38555, 38604,
+    38610, 38656, 38780, 38789, 38902, {f: 2, c: 38935}, 39087, 39089, 39171,
+    39173, 39180, 39177, 39361, {f: 2, c: 39599}, 39654, {f: 2, c: 39745},
+    40180, 40182, 40179, 40636, [12240, 40763], [12241, 40778], 20740, 20736,
+    20731, 20725, 20729, 20738, {f: 2, c: 20744}, 20741, 20956,
+    {f: 3, c: 21127}, 21133, 21130, 21232, 21426, 22062, 22075, 22073, 22066,
+    22079, 22068, 22057, 22099, 22094, 22103, 22132, 22070, {f: 2, c: 22063},
+    22656, 22687, 22686, 22707, 22684, 22702, 22697, 22694, 22893, 23305,
+    23291, 23307, 23285, 23308, 23304, 23534, 23532, 23529, 23531,
+    {f: 2, c: 23652}, 23965, 23956, 24162, 24159, 24161, 24290, 24282, 24287,
+    24285, 24291, 24288, 24392, 24433, 24503, 24501, 24950, 24935, 24942,
+    24925, 24917, 24962, 24956, 24944, 24939, 24958, 24999, 24976, 25003,
+    24974, 25004, 24986, 24996, 24980, 25006, 25134, 25705, 25711, 25721,
+    25758, 25778, 25736, [25744, 57745], 25776, 25765, 25747, 25749, 25769,
+    25746, 25774, 25773, 25771, 25754, 25772, 25753, 25762, 25779, 25973,
+    {f: 2, c: 25975}, 26286, 26283, 26292, 26289, 27171, 27167, 27112, 27137,
+    27166, 27161, 27133, 27169, 27155, 27146, 27123, 27138, 27141, 27117,
+    27153, 27472, 27470, 27556, {f: 2, c: 27589}, 28479, 28540, 28548, 28497,
+    28518, 28500, 28550, 28525, 28507, 28536, 28526, 28558, 28538, 28528,
+    28516, 28567, 28504, 28373, 28527, 28512, 28511, 29087, 29100, 29105,
+    29096, 29270, 29339, 29518, 29527, 29801, 29835, 29827, 29822, 29824,
+    30079, 30240, 30249, 30239, 30244, 30246, {f: 2, c: 30241}, 30362, 30394,
+    30436, 30606, 30599, 30604, 30609, 30603, 30923, 30917, 30906, 30922,
+    30910, 30933, 30908, 30928, 31295, 31292, 31296, 31293, 31287, 31291,
+    31407, 31406, 31661, 31665, 31684, 31668, {f: 2, c: 31686}, 31681, 31648,
+    31692, 31946, 32224, 32244, 32239, 32251, 32216, 32236, 32221, 32232,
+    32227, 32218, 32222, 32233, 32158, 32217, 32242, 32249, 32629, 32631,
+    32687, 32745, 32806, {f: 3, c: 33179}, 33184, 33178, 33176, 34071, 34109,
+    34074, 34030, {f: 2, c: 34092}, 34067, 34065, 34083, 34081, 34068, 34028,
+    34085, 34047, 34054, 34690, 34676, 34678, 34656, 34662, 34680, 34664,
+    34649, 34647, 34636, 34643, 34907, 34909, 35088, 35079, {f: 2, c: 35090},
+    35093, 35082, 35516, 35538, 35527, 35524, 35477, 35531, 35576, 35506,
+    35529, 35522, 35519, 35504, 35542, 35533, 35510, 35513, 35547, 35916,
+    35918, 35948, 36064, 36062, 36070, 36068, {f: 2, c: 36076},
+    {f: 2, c: 36066}, 36060, 36074, 36065, 36205, 36255, 36259, 36395, 36368,
+    36381, 36386, 36367, 36393, 36383, 36385, 36382, 36538, 36637, 36635,
+    36639, 36649, 36646, 36650, 36636, 36638, 36645, 36969, 36974, 36968,
+    36973, 36983, 37168, 37165, 37159, 37169, 37255, 37257, 37259, 37251,
+    37573, 37563, 37559, 37610, 37604, 37569, 37555, 37564, 37586, 37575,
+    37616, 37554, 38317, 38321, 38660, {f: 2, c: 38662}, 38665, 38752, 38797,
+    38795, 38799, 38945, 38955, 38940, 39091, 39178, 39187, 39186, 39192,
+    39389, 39376, 39391, 39387, 39377, 39381, 39378, 39385, 39607,
+    {f: 2, c: 39662}, 39719, 39749, 39748, 39799, 39791, 40198, 40201, 40195,
+    40617, 40638, 40654, 22696, [12242, 40786], 20754, 20760, 20756, 20752,
+    20757, 20864, 20906, 20957, 21137, 21139, 21235, 22105, 22123, 22137,
+    22121, 22116, 22136, 22122, 22120, 22117, 22129, 22127, 22124, 22114,
+    22134, 22721, 22718, 22727, 22725, 22894, 23325, 23348, 23416, 23536,
+    23566, 24394, 25010, 24977, 25001, 24970, 25037, 25014, 25022, 25034,
+    25032, 25136, 25797, 25793, 25803, {f: 2, c: 25787}, 25818, 25796, 25799,
+    25794, 25805, 25791, 25810, 25812, 25790, 25972, 26310, 26313, 26297,
+    26308, 26311, 26296, 27197, 27192, 27194, 27225, 27243, 27224, 27193,
+    27204, 27234, 27233, 27211, 27207, 27189, 27231, 27208, 27481, 27511,
+    27653, 28610, 28593, 28577, 28611, 28580, 28609, 28583, 28595, 28608,
+    28601, [28598, 60318], 28582, 28576, 28596, 29118, 29129, 29136, 29138,
+    29128, 29141, 29113, 29134, 29145, 29148, {f: 2, c: 29123}, 29544, 29852,
+    29859, 29848, 29855, 29854, 29922, {f: 2, c: 29964}, 30260, 30264, 30266,
+    30439, 30437, 30624, {f: 2, c: 30622}, 30629, 30952, 30938, 30956, 30951,
+    31142, {f: 2, c: 31309}, 31302, 31308, 31307, 31418, 31705, 31761, 31689,
+    31716, 31707, 31713, 31721, 31718, {f: 2, c: 31957}, 32266, 32273, 32264,
+    32283, 32291, 32286, [32285, 58211], 32265, 32272, 32633, 32690,
+    {f: 2, c: 32752}, 32750, [32808, 58239], 33203, 33193, 33192, 33275, 33288,
+    {f: 2, c: 33368}, 34122, 34137, 34120, {f: 2, c: 34152}, 34115, 34121,
+    34157, 34154, 34142, 34691, 34719, 34718, 34722, 34701, 34913, 35114,
+    35122, 35109, 35115, 35105, 35242, [35238, 58391], 35558, 35578, 35563,
+    35569, 35584, 35548, 35559, 35566, 35582, {f: 2, c: 35585}, 35575, 35565,
+    35571, 35574, 35580, 35947, 35949, 35987, 36084, 36420, 36401, 36404,
+    36418, 36409, 36405, 36667, 36655, 36664, 36659, 36776, 36774, 36981,
+    36980, 36984, 36978, 36988, 36986, 37172, 37266, 37664, 37686, 37624,
+    37683, 37679, 37666, 37628, 37675, 37636, 37658, 37648, 37670, 37665,
+    37653, 37678, 37657, 38331, {f: 2, c: 38567}, 38570, 38613, 38670, 38673,
+    38678, 38669, 38675, 38671, 38747, [38748, 58565], 38758, 38808, 38960,
+    38968, 38971, 38967, 38957, 38969, 38948, 39184, 39208, 39198, 39195,
+    39201, 39194, 39405, 39394, 39409, 39608, 39612, 39675, 39661, 39720,
+    39825, 40213, 40227, 40230, 40232, 40210, 40219, 40664, 40660,
+    [12243, 40845], [12244, 40860], 20778, 20767, 20769, 20786, 21237, 22158,
+    22144, 22160, 22149, 22151, 22159, 22741, 22739, 22737, 22734, 23344,
+    23338, 23332, 23418, 23607, 23656, 23996, 23994, 23997, 23992, 24171,
+    24396, 24509, 25033, 25026, 25031, 25062, 25035, 25138, 25140, 25806,
+    25802, 25816, 25824, 25840, 25830, 25836, 25841, 25826, 25837,
+    {f: 2, c: 25986}, 26329, 26326, 27264, 27284, 27268, 27298, 27292, 27355,
+    27299, 27262, 27287, 27280, 27296, 27484, 27566, 27610, 27656, 28632,
+    28657, {f: 2, c: 28639}, 28635, 28644, 28651, 28655, 28544, 28652, 28641,
+    28649, 28629, 28654, 28656, 29159, [29151, 60361], 29166, 29158, 29157,
+    29165, 29164, 29172, 29152, 29237, 29254, 29552, 29554, 29865, 29872,
+    29862, 29864, 30278, 30274, 30284, 30442, 30643, 30634, 30640, 30636,
+    30631, 30637, 30703, 30967, 30970, 30964, 30959, 30977, 31143, 31146,
+    31319, 31423, 31751, 31757, 31742, 31735, 31756, 31712, 31968, 31964,
+    31966, 31970, 31967, 31961, 31965, 32302, 32318, 32326, 32311, 32306,
+    32323, 32299, 32317, 32305, 32325, 32321, 32308, 32313, 32328, 32309,
+    32319, 32303, 32580, 32755, 32764, {f: 2, c: 32881}, 32880, 32879, 32883,
+    33222, 33219, 33210, 33218, 33216, 33215, 33213, 33225, 33214, 33256,
+    33289, 33393, 34218, 34180, 34174, 34204, 34193, 34196, 34223, 34203,
+    34183, 34216, 34186, 34214, 34407, 34752, 34769, 34739, 34770, 34758,
+    34731, 34747, 34746, 34760, 34763, 35131, 35126, 35140, 35128, 35133,
+    35244, 35598, 35607, 35609, 35611, 35594, 35616, 35613, 35588, 35600,
+    35905, 35903, 35955, 36090, 36093, 36092, 36088, 36091, 36264, 36425,
+    36427, 36424, 36426, 36676, 36670, 36674, 36677, 36671, 36991, 36989,
+    36996, {f: 2, c: 36993}, 36992, 37177, 37283, 37278, 37276, 37709, 37762,
+    37672, 37749, 37706, 37733, 37707, 37656, 37758, 37740, 37723, 37744,
+    37722, 37716, {f: 3, c: 38346}, 38344, 38342, 38577, 38584, 38614, 38684,
+    38686, 38816, 38867, 38982, 39094, 39221, 39425, 39423, 39854, 39851,
+    39850, 39853, 40251, 40255, 40587, 40655, 40670, {f: 2, c: 40668}, 40667,
+    40766, 40779, 21474, 22165, 22190, 22745, 22744, 23352, 24413, 25059,
+    25139, 25844, 25842, 25854, 25862, {f: 2, c: 25850}, 25847, 26039, 26332,
+    26406, 27315, 27308, 27331, 27323, 27320, 27330, {f: 2, c: 27310}, 27487,
+    27512, 27567, 28681, 28683, 28670, 28678, 28666, 28689, 28687,
+    {f: 2, c: 29179}, 29182, 29176, 29559, 29557, 29863, 29887, 29973, 30294,
+    30296, 30290, 30653, 30655, {f: 2, c: 30651}, 30990, 31150,
+    {f: 2, c: 31329}, 31328, {f: 2, c: 31428}, 31787, 31783, 31786, 31774,
+    31779, 31777, 31975, {f: 2, c: 32340}, 32350, 32346, 32353, 32338, 32345,
+    32584, 32761, 32763, 32887, 32886, 33229, 33231, 33290, 34255, 34217,
+    34253, 34256, 34249, 34224, 34234, 34233, 34799, 34796, 34802, 34784,
+    35206, 35250, 35316, 35624, 35641, 35628, 35627, 35920, 36101, 36441,
+    36451, 36454, 36452, 36447, 36437, 36544, 36681, 36685, 36999, 36995,
+    37000, {f: 2, c: 37291}, 37328, 37780, 37770, 37782, 37794, 37811, 37806,
+    37804, 37808, 37784, 37786, 37783, 38356, 38358, 38352, 38357, 38626,
+    38620, 38617, 38619, 38622, 38692, 38819, 38822, 38829, 38905, 38989,
+    38991, 38988, 38990, 38995, 39098, {f: 2, c: 39230}, 39229, 39214, 39333,
+    39438, 39617, 39683, 39686, 39759, 39758, 39757, 39882, 39881, 39933,
+    39880, 39872, 40273, 40285, 40288, 40672, 40725, 40748, 20787, 22181,
+    22184, {f: 2, c: 22750}, 22754, 23541, 40848, 24300, 25074, 25079, 25078,
+    25077, 25856, 25871, 26336, 26333, 27365, 27357, 27354, 27347, 28699,
+    28703, 28712, 28698, 28701, 28693, 28696, 29190, 29197, 29272, 29346,
+    29560, 29562, 29885, 29898, 29923, 30087, 30086, 30303, 30305, 30663,
+    31001, 31153, 31339, 31337, {f: 2, c: 31806}, 31800, 31805, 31799, 31808,
+    32363, 32365, 32377, {f: 2, c: 32361}, 32371, 32645, 32694, 32697, 32696,
+    33240, 34281, 34269, 34282, 34261, {f: 2, c: 34276}, 34295, 34811, 34821,
+    34829, 34809, 34814, 35168, 35167, 35158, 35166, 35649, 35676, 35672,
+    35657, 35674, {f: 2, c: 35662}, 35654, 35673, 36104, 36106, 36476, 36466,
+    36487, 36470, 36460, 36474, 36468, 36692, 36686, 36781, {f: 2, c: 37002},
+    37297, 37294, 37857, 37841, 37855, 37827, 37832, {f: 2, c: 37852}, 37846,
+    37858, 37837, 37848, 37860, 37847, 37864, 38364, 38580, 38627, 38698,
+    38695, 38753, 38876, 38907, 39006, 39000, 39003, 39100, 39237, 39241,
+    39446, 39449, 39693, 39912, 39911, 39894, 39899, 40329, 40289, 40306,
+    40298, 40300, 40594, 40599, 40595, 40628, 21240, 22199, 22198, 22196,
+    22204, 22756, 23360, 23363, 23421, 23542, 24009, 25080, 25082, 25880,
+    25876, 25881, 26342, 26407, 27372, 28734, 28720, 28722, 29200, 29563,
+    29903, 30306, 30309, 31014, 31018, 31020, 31019, 31431, 31478, 31820,
+    31811, 31821, {f: 2, c: 31983}, 36782, 32381, 32380, 32386, 32588, 32768,
+    33242, 33382, 34299, 34297, 34321, 34298, 34310, 34315, 34311, 34314,
+    {f: 2, c: 34836}, 35172, 35258, 35320, 35696, 35692, 35686, 35695, 35679,
+    35691, 36111, 36109, 36489, 36481, 36485, 36482, 37300, 37323, 37912,
+    37891, 37885, 38369, 38704, 39108, 39250, 39249, 39336, 39467, 39472,
+    39479, 39477, 39955, 39949, 40569, 40629, 40680, 40751, 40799, 40803,
+    40801, {f: 2, c: 20791}, 22209, 22208, 22210, 22804, 23660, 24013, 25084,
+    25086, 25885, 25884, 26005, 26345, 27387, 27396, 27386, 27570, 28748,
+    29211, 29351, 29910, 29908, 30313, 30675, 31824, 32399, 32396, 32700,
+    34327, 34349, 34330, 34851, 34850, 34849, 34847, 35178, 35180, 35261,
+    35700, 35703, 35709, 36115, 36490, 36493, 36491, 36703, 36783, 37306,
+    37934, 37939, 37941, 37946, 37944, 37938, 37931, 38370, {f: 2, c: 38712},
+    38706, [38911, 58586], 39015, 39013, 39255, 39493, 39491, 39488, 39486,
+    39631, 39764, 39761, 39981, 39973, 40367, 40372, 40386, 40376, 40605,
+    40687, 40729, 40796, {f: 2, c: 40806}, 20796, 20795, 22216, 22218, 22217,
+    23423, 24020, 24018, 24398, 25087, 25892, 27402, 27489, 28753, 28760,
+    29568, 29924, 30090, 30318, 30316, 31155, 31840, 31839, 32894, 32893,
+    33247, 35186, 35183, 35324, 35712, {f: 2, c: 36118}, 36497, 36499, 36705,
+    37192, 37956, {f: 2, c: 37969}, {f: 2, c: 38717}, 38851, 38849, 39019,
+    39253, 39509, 39501, 39634, 39706, 40009, 39985, 39998, 39995, 40403,
+    40407, 40756, 40812, 40810, 40852, 22220, 24022, 25088, 25891, 25899,
+    25898, 26348, 27408, 29914, 31434, 31844, 31843, 31845, 32403, 32406,
+    32404, 33250, 34360, 34367, 34865, 35722, 37008, 37007, 37987, 37984,
+    37988, 38760, 39023, 39260, {f: 2, c: 39514}, 39511, {f: 2, c: 39635},
+    39633, 40020, 40023, 40022, 40421, 40607, 40692, 22225, 22761, 25900,
+    28766, {f: 2, c: 30321}, [30679, 60226], 32592, 32648, 34870, 34873, 34914,
+    35731, 35730, 35734, 33399, 36123, 37312, 37994, 38722, 38728, 38724,
+    38854, 39024, 39519, 39714, 39768, 40031, {f: 2, c: 40441},
+    {f: 2, c: 40572}, 40711, 40823, 40818, 24307, 27414, 28771, 31852, 31854,
+    34875, 35264, 36513, 37313, 38002, 38000, 39025, 39262, 39638, 39715,
+    40652, 28772, 30682, 35738, 38007, 38857, 39522, 39525, 32412, 35740,
+    36522, 37317, {f: 2, c: 38013}, 38012, {f: 2, c: 40055}, 40695, 35924,
+    38015, 40474, 29224, 39530, 39729, 40475, 40478, 31858, 20034, 20060,
+    [12048, 20981], [12053, 21274], [12058, 21378], 19975, 19980, 20039, 20109,
+    [12062, 22231], [12076, 23662], [12091, 24435], 19983, 20871, 19982, 20014,
+    20115, 20162, 20169, 20168, 20888, 21244, 21356, 21433, 22304, 22787,
+    22828, [23568, 60417], 24063, 26081, [12110, 27571], 27596, [12115, 27668],
+    [12121, 29247], 20017, 20028, 20200, 20188, 20201, 20193, 20189, 20186,
+    21004, 21001, 21276, 21324, {f: 2, c: 22306}, 22807, 22831, 23425, 23428,
+    23570, 23611, 23668, 23667, 24068, 24192, 24194, 24521, 25097, 25168,
+    27669, 27702, 27715, 27711, 27707, 29358, 29360, 29578, [12145, 31160],
+    32906, 38430, 20238, 20248, 20268, 20213, 20244, 20209, 20224, 20215,
+    20232, 20253, 20226, 20229, 20258, 20243, 20228, 20212, 20242, 20913,
+    21011, 21008, 21158, 21282, 21279, 21325, 21386, 21511, 22241, 22239,
+    22318, 22314, 22324, 22844, 22912, 22908, 22917, 22907, 22910, 22903,
+    22911, 23382, 23573, 23589, 23676, {f: 2, c: 23674}, 23678, 24031,
+    [24181, 57646], 24196, 24322, 24346, 24436, 24533, 24532, 24527, 25180,
+    25182, 25188, 25185, 25190, 25186, 25177, 25184, 25178, 25189, 25911,
+    26095, 26094, 26430, 26425, 26424, 26427, 26426, 26431, 26428, 26419,
+    27672, 27718, 27730, 27740, 27727, [27722, 60796], 27732, {f: 2, c: 27723},
+    28785, 29278, {f: 2, c: 29364}, 29582, 29994, 30335, 31349, [12153, 32593],
+    [12171, 33400], 33404, 33408, 33405, 33407, [12172, 34381], [12177, 35198],
+    37017, [37015, 59347], 37016, 37019, 37012, 38434, 38436, 38432, 38435,
+    20310, 20283, 20322, 20297, 20307, 20324, 20286, 20327, 20306, 20319,
+    20289, 20312, 20269, 20275, 20287, 20321, 20879, 20921, 21020, 21022,
+    21025, {f: 2, c: 21165}, 21257, 21347, 21362, {f: 2, c: 21390}, 21552,
+    21559, 21546, 21588, 21573, 21529, 21532, 21541, 21528, 21565, 21583,
+    21569, 21544, 21540, 21575, 22254, 22247, 22245, 22337, 22341, 22348,
+    22345, 22347, 22354, 22790, 22848, 22950, 22936, 22944, 22935, 22926,
+    22946, 22928, 22927, 22951, 22945, 23438, 23442, 23592, 23594, 23693,
+    23695, 23688, 23691, 23689, 23698, 23690, 23686, 23699, 23701, 24032,
+    24074, 24078, 24203, 24201, 24204, 24200, 24205, 24325, 24349, 24440,
+    24438, 24530, 24529, 24528, 24557, 24552, 24558, 24563, 24545, 24548,
+    24547, 24570, 24559, 24567, 24571, 24576, 24564, 25146, 25219, 25228,
+    {f: 2, c: 25230}, 25236, 25223, 25201, 25211, 25210, 25200, 25217, 25224,
+    25207, 25213, 25202, 25204, 26096, 26100, 26099, 26098, 26101, 26437,
+    26439, 26457, 26453, 26444, 26440, 26461, 26445, 26458, 26443, 27600,
+    {f: 2, c: 27673}, 27768, 27751, 27755, 27780, 27787, 27791, 27761, 27759,
+    27753, 27802, 27757, 27783, 27797, [27804, 57900], 27750, 27763, 27749,
+    27771, 27790, 28788, 28794, 29283, 29375, 29373, 29379, 29382, 29377,
+    29370, 29381, 29589, 29591, {f: 2, c: 29587}, 29586, 30010, 30009,
+    {f: 2, c: 30100}, 30337, 31037, 32820, 32917, 32921, 32912, 32914, 32924,
+    33424, 33423, 33413, 33422, 33425, 33427, 33418, {f: 2, c: 33411},
+    [12184, 35960], 36809, 36799, 37023, 37025, 37029, 37022, 37031, 37024,
+    38448, 38440, 38447, 38445, 20019, 20376, 20348, 20357, 20349, 20352,
+    20359, 20342, 20340, 20361, 20356, 20343, 20300, 20375, 20330, 20378,
+    20345, 20353, 20344, 20368, 20380, 20372, 20382, 20370, 20354, 20373,
+    20331, 20334, 20894, 20924, 20926, 21045, {f: 2, c: 21042}, 21062, 21041,
+    21180, {f: 2, c: 21258}, 21308, 21394, 21396, 21639, 21631, 21633, 21649,
+    21634, 21640, 21611, 21626, 21630, 21605, 21612, 21620, 21606, 21645,
+    21615, 21601, 21600, 21656, 21603, 21607, 21604, 22263, 22265, 22383,
+    22386, 22381, 22379, 22385, 22384, 22390, 22400, 22389, 22395,
+    {f: 2, c: 22387}, 22370, 22376, 22397, 22796, 22853, 22965, 22970, 22991,
+    22990, 22962, 22988, 22977, 22966, 22972, 22979, 22998, 22961, 22973,
+    22976, 22984, 22964, 22983, 23394, 23397, 23443, 23445, 23620, 23623,
+    23726, 23716, 23712, 23733, 23727, 23720, 23724, 23711, 23715, 23725,
+    23714, 23722, 23719, 23709, 23717, 23734, 23728, 23718, 24087, 24084,
+    24089, 24360, {f: 3, c: 24354}, 24404, 24450, 24446, 24445, 24542, 24549,
+    24621, 24614, 24601, 24626, 24587, 24628, 24586, 24599, 24627, 24602,
+    24606, 24620, 24610, 24589, 24592, 24622, 24595, 24593, 24588, 24585,
+    24604, 25108, 25149, 25261, 25268, 25297, 25278, 25258, 25270, 25290,
+    25262, 25267, 25263, 25275, 25257, 25264, 25272, 25917, 26024, 26043,
+    26121, 26108, 26116, 26130, 26120, 26107, 26115, 26123, 26125, 26117,
+    26109, 26129, 26128, 26358, 26378, 26501, 26476, 26510, 26514, 26486,
+    26491, 26520, 26502, 26500, 26484, 26509, 26508, 26490, 26527, 26513,
+    26521, 26499, 26493, 26497, {f: 2, c: 26488}, 26516, 27429, 27520, 27518,
+    27614, 27677, 27795, 27884, 27883, 27886, 27865, 27830, 27860, 27821,
+    27879, 27831, 27856, 27842, 27834, 27843, 27846, 27885, 27890, 27858,
+    27869, 27828, 27786, 27805, 27776, 27870, 27840, 27952, 27853, 27847,
+    27824, 27897, 27855, 27881, 27857, 28820, 28824, 28805, 28819, 28806,
+    28804, 28817, 28822, 28802, 28826, 28803, 29290, 29398, 29387, 29400,
+    29385, 29404, 29394, 29396, 29402, 29388, 29393, 29604, 29601, 29613,
+    29606, 29602, 29600, 29612, 29597, 29917, 29928, {f: 2, c: 30015}, 30014,
+    30092, 30104, 30383, 30451, 30449, 30448, 30453, 30712, 30716, 30713,
+    30715, 30714, 30711, 31042, 31039, 31173, 31352, 31355, 31483, 31861,
+    31997, 32821, 32911, 32942, 32931, 32952, 32949, 32941, 33312, 33440,
+    33472, 33451, 33434, 33432, 33435, 33461, 33447, 33454, 33468, 33438,
+    33466, 33460, 33448, 33441, 33449, 33474, 33444, 33475, 33462, 33442,
+    34416, 34415, {f: 2, c: 34413}, 35926, 36818, 36811, 36819, 36813, 36822,
+    36821, 36823, 37042, 37044, 37039, 37043, 37040, 38457, 38461, 38460,
+    38458, 38467, 20429, 20421, 20435, 20402, 20425, 20427, 20417, 20436,
+    20444, 20441, [20411, 60346], 20403, 20443, 20423, 20438, 20410, 20416,
+    20409, 20460, 21060, 21065, 21184, 21186, 21309, 21372, 21399, 21398,
+    21401, 21400, 21690, 21665, 21677, 21669, 21711, 21699, 33549, 21687,
+    21678, 21718, 21686, {f: 2, c: 21701}, 21664, 21616, 21692, 21666, 21694,
+    21618, 21726, 21680, 22453, {f: 2, c: 22430}, 22436, 22412, 22423, 22429,
+    22427, 22420, 22424, 22415, 22425, 22437, 22426, 22421, 22772, 22797,
+    22867, 23009, 23006, 23022, 23040, 23025, 23005, 23034, 23037, 23036,
+    23030, 23012, 23026, 23031, 23003, 23017, 23027, 23029, 23008, 23038,
+    23028, 23021, 23464, 23628, 23760, 23768, 23756, 23767, 23755, 23771,
+    23774, 23770, 23753, 23751, 23754, 23766, {f: 2, c: 23763}, 23759, 23752,
+    23750, 23758, 23775, 23800, 24057, {f: 3, c: 24097}, 24096, 24100, 24240,
+    24228, 24226, 24219, 24227, 24229, 24327, 24366, 24406, 24454, 24631,
+    24633, 24660, 24690, 24670, 24645, 24659, 24647, 24649, 24667, 24652,
+    24640, 24642, 24671, 24612, 24644, 24664, 24678, 24686, {f: 2, c: 25154},
+    25295, 25357, 25355, 25333, 25358, 25347, 25323, 25337, 25359, 25356,
+    25336, 25334, 25344, {f: 2, c: 25363}, 25338, 25365, 25339, 25328, 25921,
+    25923, 26026, 26047, 26166, 26145, 26162, 26165, 26140, 26150, 26146,
+    26163, 26155, 26170, 26141, 26164, 26169, 26158, {f: 2, c: 26383}, 26561,
+    26610, 26568, 26554, 26588, 26555, 26616, 26584, 26560, 26551, 26565,
+    26603, 26596, 26591, 26549, 26573, 26547, 26615, 26614, 26606, 26595,
+    26562, 26553, 26574, 26599, 26608, 26546, 26620, 26566, 26605, 26572,
+    26542, 26598, 26587, 26618, {f: 2, c: 26569}, 26563, 26602, 26571, 27432,
+    27522, 27524, 27574, 27606, 27608, 27616, {f: 2, c: 27680}, 27944, 27956,
+    27949, 27935, 27964, 27967, 27922, 27914, 27866, 27955, 27908, 27929,
+    27962, 27930, 27921, 27904, 27933, 27970, 27905, 27928, 27959, 27907,
+    27919, 27968, 27911, 27936, 27948, 27912, 27938, 27913, 27920, 28855,
+    28831, 28862, 28849, 28848, 28833, {f: 2, c: 28852}, 28841, 29249,
+    {f: 2, c: 29257}, 29292, 29296, 29299, 29294, 29386, 29412, 29416, 29419,
+    29407, 29418, 29414, 29411, 29573, 29644, 29634, 29640, 29637, 29625,
+    29622, 29621, 29620, 29675, 29631, 29639, 29630, 29635, 29638, 29624,
+    29643, 29932, 29934, 29998, {f: 2, c: 30023}, 30119, 30122, 30329, 30404,
+    30472, {f: 3, c: 30467}, 30474, 30455, 30459, 30458, {f: 2, c: 30695},
+    30726, {f: 2, c: 30737}, 30725, 30736, 30735, 30734, [30729, 58095], 30723,
+    30739, 31050, 31052, 31051, 31045, 31044, 31189, 31181, 31183, 31190,
+    31182, 31360, 31358, 31441, {f: 2, c: 31488}, 31866, {f: 2, c: 31864},
+    {f: 3, c: 31871}, 32003, 32008, 32001, 32600, 32657, 32653, 32702, 32775,
+    {f: 2, c: 32782}, 32788, 32823, 32984, 32967, 32992, 32977, 32968, 32962,
+    32976, 32965, 32995, 32985, 32988, 32970, 32981, 32969, 32975, 32983,
+    32998, 32973, 33279, 33313, 33428, 33497, 33534, 33529, 33543, 33512,
+    33536, 33493, 33594, 33515, 33494, 33524, 33516, 33505, 33522, 33525,
+    33548, 33531, 33526, 33520, 33514, 33508, 33504, 33530, 33523, 33517,
+    34423, 34420, 34428, 34419, 34881, 34894, 34919, 34922, 34921, 35283,
+    35332, 35335, 36210, 36835, 36833, 36846, 36832, 37105, 37053, 37055,
+    37077, 37061, 37054, 37063, 37067, 37064, [37332, 60294], 37331, 38484,
+    38479, 38481, 38483, 38474, 38478, 20510, 20485, 20487, 20499, 20514,
+    20528, 20507, 20469, 20468, 20531, 20535, 20524, {f: 2, c: 20470}, 20503,
+    20508, 20512, 20519, 20533, 20527, 20529, 20494, 20826, 20884, 20883,
+    20938, {f: 2, c: 20932}, 20936, 20942, 21089, 21082, 21074,
+    {f: 2, c: 21086}, 21077, 21090, 21197, 21262, 21406, 21798, 21730, 21783,
+    21778, 21735, 21747, 21732, 21786, 21759, 21764, 21768, 21739, 21777,
+    21765, 21745, 21770, 21755, {f: 2, c: 21751}, 21728, 21774, 21763, 21771,
+    {f: 2, c: 22273}, 22476, 22578, 22485, 22482, 22458, 22470, 22461, 22460,
+    22456, 22454, 22463, 22471, 22480, 22457, 22465, 22798, 22858, 23065,
+    23062, {f: 2, c: 23085}, 23061, 23055, 23063, 23050, 23070, 23091, 23404,
+    23463, 23469, 23468, 23555, 23638, 23636, 23788, 23807, 23790, 23793,
+    23799, 23808, 23801, 24105, 24104, 24232, 24238, 24234, 24236, 24371,
+    24368, 24423, 24669, 24666, 24679, 24641, 24738, 24712, 24704, 24722,
+    24705, 24733, 24707, 24725, 24731, 24727, 24711, 24732, 24718, 25113,
+    25158, 25330, 25360, 25430, 25388, {f: 2, c: 25412}, 25398, 25411, 25572,
+    25401, 25419, 25418, 25404, 25385, 25409, 25396, 25432, 25428, 25433,
+    25389, 25415, 25395, 25434, 25425, 25400, 25431, 25408, 25416, 25930,
+    25926, 26054, {f: 2, c: 26051}, 26050, 26186, 26207, 26183, 26193,
+    {f: 2, c: 26386}, 26655, 26650, 26697, {f: 2, c: 26674}, 26683, 26699,
+    26703, 26646, 26673, 26652, 26677, 26667, 26669, 26671, 26702, 26692,
+    26676, 26653, 26642, 26644, 26662, 26664, 26670, 26701, 26682, 26661,
+    26656, 27436, 27439, 27437, 27441, 27444, 27501, 32898, 27528, 27622,
+    27620, 27624, 27619, 27618, 27623, 27685, 28026, {f: 2, c: 28003}, 28022,
+    27917, 28001, 28050, 27992, 28002, 28013, 28015, 28049, 28045, 28143,
+    28031, 28038, 27998, [28007, 59078], 28000, 28055, 28016, 28028, 27999,
+    28034, 28056, 27951, 28008, 28043, 28030, 28032, 28036, 27926, 28035,
+    28027, 28029, 28021, 28048, 28892, 28883, 28881, 28893, 28875, 32569,
+    28898, 28887, 28882, 28894, 28896, 28884, 28877, {f: 3, c: 28869}, 28890,
+    28878, 28897, 29250, 29304, 29303, 29302, 29440, 29434, 29428, 29438,
+    29430, 29427, 29435, 29441, 29651, 29657, 29669, 29654, 29628, 29671,
+    29667, 29673, 29660, 29650, 29659, 29652, 29661, 29658, {f: 2, c: 29655},
+    29672, {f: 2, c: 29918}, {f: 2, c: 29940}, 29985, 30043, 30047, 30128,
+    30145, 30139, 30148, 30144, 30143, 30134, 30138, 30346, 30409, 30493,
+    30491, 30480, 30483, 30482, 30499, 30481, 30485, {f: 2, c: 30489}, 30498,
+    30503, 30755, 30764, 30754, 30773, 30767, 30760, 30766, 30763, 30753,
+    30761, 30771, 30762, 30769, 31060, 31067, 31055, 31068, 31059, 31058,
+    31057, {f: 2, c: 31211}, 31200, 31214, 31213, 31210, 31196, 31198, 31197,
+    31366, 31369, 31365, {f: 2, c: 31371}, 31370, 31367, 31448, 31504, 31492,
+    31507, 31493, 31503, 31496, 31498, 31502, 31497, 31506, 31876, 31889,
+    31882, 31884, 31880, 31885, 31877, 32030, 32029, 32017, 32014, 32024,
+    32022, 32019, 32031, 32018, 32015, 32012, 32604, 32609, 32606, 32608,
+    32605, 32603, 32662, 32658, 32707, 32706, 32704, 32790, 32830, 32825,
+    33018, 33010, 33017, 33013, 33025, 33019, 33024, 33281, 33327, 33317,
+    33587, 33581, 33604, 33561, 33617, 33573, 33622, 33599, 33601, 33574,
+    33564, 33570, 33602, 33614, 33563, 33578, 33544, 33596, 33613, 33558,
+    33572, 33568, 33591, 33583, 33577, 33607, 33605, 33612, 33619, 33566,
+    33580, 33611, 33575, 33608, 34387, 34386, 34466, 34472, 34454, 34445,
+    34449, 34462, 34439, 34455, 34438, 34443, 34458, 34437, 34469, 34457,
+    34465, 34471, 34453, 34456, 34446, 34461, 34448, 34452, {f: 2, c: 34883},
+    34925, {f: 2, c: 34933}, 34930, 34944, 34929, 34943, 34927, 34947, 34942,
+    34932, 34940, 35346, 35911, 35927, 35963, 36004, 36003, 36214, 36216,
+    36277, 36279, 36278, 36561, 36563, 36862, 36853, 36866, 36863, 36859,
+    36868, 36860, 36854, 37078, 37088, {f: 2, c: 37081}, 37091, 37087, 37093,
+    37080, 37083, 37079, 37084, 37092, 37200, {f: 2, c: 37198}, 37333, 37346,
+    37338, 38492, 38495, 38588, 39139, [12221, 39647], [12223, 39727], 20095,
+    20592, 20586, 20577, 20574, 20576, 20563, 20555, 20573, 20594, 20552,
+    20557, 20545, 20571, 20554, 20578, 20501, 20549, 20575, 20585, 20587,
+    {f: 2, c: 20579}, 20550, 20544, 20590, 20595, 20567, 20561, 20944, 21099,
+    21101, 21100, 21102, 21206, 21203, 21293, 21404, {f: 2, c: 21877}, 21820,
+    21837, 21840, 21812, 21802, 21841, 21858, 21814, 21813, 21808, 21842,
+    21829, 21772, 21810, 21861, 21838, 21817, 21832, 21805, 21819, 21824,
+    21835, 22282, 22279, 22523, 22548, 22498, 22518, 22492, 22516, 22528,
+    22509, 22525, 22536, 22520, 22539, 22515, 22479, 22535, 22510, 22499,
+    22514, 22501, 22508, 22497, 22542, 22524, 22544, 22503, 22529, 22540,
+    22513, 22505, 22512, 22541, 22532, 22876, 23136, 23128, 23125,
+    [23143, 60437], 23134, 23096, 23093, 23149, 23120, 23135, 23141, 23148,
+    23123, 23140, 23127, 23107, 23133, 23122, 23108, 23131, 23112, 23182,
+    23102, 23117, 23097, 23116, 23152, 23145, 23111, 23121, 23126, 23106,
+    23132, 23410, 23406, 23489, 23488, 23641, 23838, 23819, 23837, 23834,
+    23840, 23820, 23848, 23821, 23846, 23845, 23823, 23856, 23826, 23843,
+    23839, 23854, 24126, 24116, 24241, 24244, 24249, {f: 2, c: 24242}, 24374,
+    24376, 24475, 24470, 24479, 24714, 24720, 24710, 24766, 24752, 24762,
+    {f: 2, c: 24787}, 24783, 24804, 24793, 24797, 24776, 24753, 24795, 24759,
+    24778, 24767, 24771, 24781, 24768, 25394, 25445, 25482, 25474, 25469,
+    25533, 25502, 25517, 25501, 25495, 25515, 25486, 25455, 25479, 25488,
+    25454, 25519, 25461, 25500, 25453, 25518, 25468, 25508, 25403, 25503,
+    25464, 25477, 25473, 25489, 25485, 25456, 25939, 26061, 26213, 26209,
+    26203, 26201, 26204, 26210, 26392, 26745, 26759, 26768, 26780,
+    {f: 2, c: 26733}, 26798, 26795, 26966, 26735, 26787, 26796, 26793, 26741,
+    26740, 26802, 26767, 26743, 26770, 26748, 26731, 26738, 26794, 26752,
+    26737, 26750, 26779, 26774, 26763, 26784, 26761, 26788, 26744, 26747,
+    26769, 26764, 26762, 26749, 27446, 27443, {f: 2, c: 27447}, 27537, 27535,
+    {f: 2, c: 27533}, 27532, 27690, 28096, 28075, 28084, 28083, 28276, 28076,
+    28137, 28130, 28087, 28150, 28116, 28160, 28104, 28128, 28127, 28118,
+    28094, 28133, {f: 2, c: 28124}, 28123, 28148, 28106, 28093, 28141, 28144,
+    28090, 28117, 28098, 28111, 28105, 28112, 28146, 28115, 28157, 28119,
+    28109, 28131, 28091, 28922, 28941, 28919, 28951, 28916, 28940, 28912,
+    28932, 28915, 28944, 28924, 28927, 28934, 28947, 28928, 28920, 28918,
+    28939, 28930, 28942, 29310, {f: 2, c: 29307}, 29311, 29469, 29463, 29447,
+    29457, 29464, 29450, 29448, 29439, 29455, 29470, 29576, 29686, 29688,
+    29685, 29700, 29697, 29693, 29703, 29696, 29690, 29692, 29695, 29708,
+    29707, 29684, 29704, 30052, 30051, 30158, 30162, 30159, {f: 2, c: 30155},
+    30161, 30160, 30351, 30345, 30419, 30521, 30511, 30509, {f: 2, c: 30513},
+    30516, 30515, 30525, 30501, 30523, 30517, 30792, 30802, 30793, 30797,
+    30794, 30796, 30758, 30789, 30800, 31076, 31079, {f: 2, c: 31081}, 31075,
+    31083, 31073, 31163, 31226, 31224, {f: 2, c: 31222}, 31375, 31380, 31376,
+    31541, 31547, 31540, 31525, 31536, 31522, 31524, 31539, 31512, 31530,
+    31517, 31537, 31531, 31533, 31535, 31538, 31544, 31514, 31523, 31892,
+    31896, 31894, 31907, 32053, 32061, 32056, 32054, 32058, 32069, 32044,
+    32041, 32065, 32071, {f: 2, c: 32062}, 32074, 32059, 32040, 32611, 32661,
+    {f: 2, c: 32668}, 32667, {f: 2, c: 32714}, 32717, {f: 2, c: 32720}, 32711,
+    32719, 32713, 32799, 32798, 32795, 32839, 32835, 32840, 33048, 33061,
+    33049, 33051, 33069, 33055, 33068, 33054, 33057, 33045, 33063, 33053,
+    33058, 33297, 33336, 33331, 33338, 33332, 33330, 33396, 33680, 33699,
+    33704, 33677, 33658, 33651, 33700, 33652, 33679, 33665, 33685, 33689,
+    33653, 33684, 33705, 33661, 33667, 33676, 33693, 33691, 33706, 33675,
+    33662, 33701, 33711, 33672, 33687, 33712, 33663, 33702, 33671, 33710,
+    33654, 34393, 34390, 34495, 34487, 34498, 34497, 34501, 34490, 34480,
+    34504, 34489, 34483, 34488, 34508, 34484, {f: 2, c: 34491}, 34499,
+    {f: 2, c: 34493}, 34898, 34953, 34965, 34984, 34978, 34986, 34970, 34961,
+    34977, 34975, 34968, 34983, 34969, 34971, 34967, 34980, 34988, 34956,
+    34963, 34958, 35202, 35286, 35289, 35285, 35376, 35367, 35372, 35358,
+    35897, 35899, {f: 2, c: 35932}, 35965, 36005, 36221, 36219, 36217, 36284,
+    36290, 36281, 36287, 36289, 36568, 36574, 36573, 36572, 36567,
+    {f: 2, c: 36576}, 36900, 36875, 36881, 36892, 36876, 36897, 37103, 37098,
+    37104, 37108, {f: 2, c: 37106}, 37076, {f: 2, c: 37099}, 37097, 37206,
+    37208, 37210, 37203, 37205, 37356, 37364, 37361, 37363, 37368, 37348,
+    37369, {f: 2, c: 37354}, 37367, 37352, 37358, 38266, 38278, 38280, 38524,
+    38509, 38507, 38513, 38511, 38591, 38762, 38916, 39141, 39319, 20635,
+    20629, 20628, 20638, 20619, 20643, 20611, 20620, 20622, 20637, 20584,
+    20636, 20626, 20610, 20615, 20831, 20948, 21266, 21265, 21412, 21415,
+    21905, 21928, 21925, 21933, 21879, 22085, 21922, 21907, 21896, 21903,
+    21941, 21889, 21923, 21906, 21924, 21885, 21900, 21926, 21887, 21909,
+    21921, 21902, 22284, 22569, 22583, 22553, 22558, 22567, 22563, 22568,
+    22517, 22600, 22565, 22556, 22555, 22579, 22591, 22582, 22574, 22585,
+    22584, 22573, 22572, 22587, 22881, 23215, 23188, 23199, 23162, 23202,
+    23198, 23160, 23206, 23164, 23205, 23212, 23189, 23214, 23095, 23172,
+    23178, 23191, 23171, 23179, 23209, 23163, 23165, 23180, 23196, 23183,
+    23187, 23197, 23530, 23501, 23499, 23508, 23505, 23498, 23502, 23564,
+    23600, 23863, 23875, 23915, 23873, 23883, 23871, 23861, 23889, 23886,
+    23893, 23859, 23866, 23890, 23869, 23857, 23897, 23874, 23865, 23881,
+    23864, 23868, 23858, 23862, 23872, 23877, 24132, 24129, [24408, 57673],
+    24486, 24485, 24491, 24777, 24761, 24780, 24802, 24782, 24772, 24852,
+    24818, 24842, 24854, 24837, 24821, 24851, 24824, 24828, 24830, 24769,
+    24835, 24856, 24861, 24848, 24831, 24836, 24843, 25162, 25492, 25521,
+    25520, 25550, 25573, 25576, 25583, 25539, 25757, 25587, 25546, 25568,
+    25590, 25557, 25586, 25589, 25697, 25567, 25534, 25565, 25564, 25540,
+    25560, 25555, 25538, 25543, 25548, 25547, 25544, 25584, 25559, 25561,
+    25906, 25959, 25962, 25956, 25948, 25960, 25957, 25996, {f: 2, c: 26013},
+    26030, 26064, 26066, 26236, 26220, 26235, 26240, 26225, 26233, 26218,
+    26226, 26369, 26892, 26835, 26884, 26844, 26922, 26860, 26858, 26865,
+    26895, 26838, 26871, 26859, 26852, 26870, 26899, 26896, 26867, 26849,
+    26887, 26828, 26888, 26992, 26804, 26897, 26863, 26822, 26900, 26872,
+    26832, 26877, 26876, 26856, 26891, 26890, 26903, 26830, 26824,
+    {f: 2, c: 26845}, 26854, 26868, 26833, 26886, 26836, 26857, 26901, 26917,
+    26823, 27449, 27451, 27455, 27452, 27540, 27543, 27545, 27541, 27581,
+    27632, {f: 2, c: 27634}, 27696, 28156, {f: 2, c: 28230}, 28191, 28233,
+    28296, {f: 2, c: 28220}, 28229, 28258, 28203, 28223, 28225, 28253, 28275,
+    28188, 28211, 28235, 28224, 28241, 28219, 28163, 28206, 28254, 28264,
+    28252, 28257, 28209, 28200, 28256, 28273, 28267, 28217, 28194, 28208,
+    28243, 28261, 28199, 28280, 28260, 28279, 28245, 28281, 28242, 28262,
+    {f: 2, c: 28213}, 28250, 28960, 28958, 28975, 28923, 28974, 28977, 28963,
+    28965, 28962, 28978, 28959, 28968, 28986, 28955, 29259, 29274,
+    {f: 2, c: 29320}, 29318, 29317, 29323, 29458, 29451, 29488, 29474, 29489,
+    29491, 29479, 29490, 29485, 29478, 29475, 29493, 29452, 29742, 29740,
+    29744, 29739, 29718, 29722, 29729, 29741, 29745, 29732, 29731, 29725,
+    29737, 29728, 29746, 29947, 29999, 30063, 30060, 30183, 30170, 30177,
+    30182, 30173, 30175, 30180, 30167, 30357, 30354, 30426, {f: 2, c: 30534},
+    30532, 30541, 30533, 30538, 30542, {f: 2, c: 30539}, 30686, 30700, 30816,
+    {f: 2, c: 30820}, 30812, 30829, 30833, 30826, 30830, 30832, 30825, 30824,
+    30814, 30818, 31092, 31091, 31090, 31088, 31234, 31242, 31235, 31244,
+    31236, 31385, 31462, 31460, 31562, 31559, 31556, 31560, 31564, 31566,
+    31552, 31576, 31557, 31906, 31902, 31912, 31905, 32088, 32111, 32099,
+    32083, 32086, 32103, 32106, 32079, 32109, 32092, 32107, 32082, 32084,
+    32105, 32081, 32095, 32078, {f: 2, c: 32574}, {f: 2, c: 32613}, 32674,
+    {f: 2, c: 32672}, 32727, 32849, {f: 2, c: 32847}, 33022, 32980, 33091,
+    33098, 33106, 33103, 33095, 33085, 33101, 33082, 33254, 33262,
+    {f: 3, c: 33271}, 33284, {f: 2, c: 33340}, 33343, 33397, 33595,
+    [33743, 60382], 33785, 33827, 33728, 33768, 33810, 33767, 33764, 33788,
+    33782, 33808, 33734, 33736, 33771, 33763, 33727, 33793, 33757, 33765,
+    33752, 33791, 33761, 33739, 33742, 33750, 33781, 33737, 33801,
+    [33807, 58332], 33758, 33809, 33798, 33730, 33779, 33749, 33786, 33735,
+    33745, 33770, 33811, 33690, 33731, 33772, 33774, 33732, 33787, 33751,
+    33762, 33819, 33755, 33790, 34520, 34530, 34534, 34515, 34531, 34522,
+    34538, 34525, 34539, 34524, 34540, 34537, 34519, 34536, 34513, 34888,
+    34902, 34901, 35002, 35031, 35001, 35000, 35008, 35006, 34998, 35004,
+    34999, 35005, 34994, 35073, 35017, 35221, 35224, 35223, 35293,
+    {f: 2, c: 35290}, 35406, 35405, 35385, 35417, 35392, {f: 2, c: 35415},
+    {f: 2, c: 35396}, 35410, 35400, 35409, 35402, 35404, 35407, 35935, 35969,
+    35968, 36026, 36030, 36016, 36025, 36021, 36228, 36224, 36233, 36312,
+    36307, 36301, 36295, 36310, 36316, 36303, 36309, 36313, 36296, 36311,
+    36293, 36591, 36599, 36602, 36601, 36582, 36590, 36581, 36597,
+    {f: 2, c: 36583}, 36598, 36587, 36593, 36588, 36596, 36585, 36909, 36916,
+    36911, 37126, 37164, [37124, 60367], 37119, 37116, 37128, 37113, 37115,
+    37121, 37120, 37127, 37125, 37123, 37217, 37220, 37215, 37218, 37216,
+    37377, 37386, 37413, 37379, 37402, 37414, 37391, 37388, 37376, 37394,
+    37375, 37373, 37382, 37380, 37415, 37378, 37404, 37412, 37401, 37399,
+    37381, 37398, 38267, 38285, 38284, 38288, 38535, 38526, {f: 2, c: 38536},
+    38531, 38528, 38594, 38600, 38595, 38641, 38640, 38764, 38768, 38766,
+    38919, 39081, 39147, 40166, [12235, 40697], {f: 2, c: 20099}, 20150, 20669,
+    20671, 20678, 20654, 20676, 20682, 20660, 20680, 20674, 20656, 20673,
+    20666, 20657, 20683, 20681, 20662, 20664, 20951, 21114, 21112,
+    {f: 2, c: 21115}, 21955, 21979, 21964, 21968, 21963, 21962, 21981,
+    [21952, 64013], 21972, 21956, 21993, 21951, 21970, 21901, 21967, 21973,
+    21986, 21974, 21960, 22002, 21965, 21977, 21954, 22292, 22611, 22632,
+    22628, 22607, 22605, 22601, 22639, 22613, 22606, 22621, 22617, 22629,
+    22619, 22589, 22627, 22641, 22780, 23239, 23236, 23243, 23226, 23224,
+    23217, 23221, 23216, 23231, 23240, 23227, 23238, 23223, 23232, 23242,
+    23220, 23222, 23245, 23225, 23184, 23510, {f: 2, c: 23512}, 23583, 23603,
+    23921, 23907, 23882, 23909, 23922, 23916, 23902, 23912, 23911, 23906,
+    24048, 24143, 24142, 24138, 24141, 24139, 24261, 24268, 24262, 24267,
+    24263, 24384, 24495, 24493, 24823, {f: 2, c: 24905}, 24875, 24901, 24886,
+    24882, 24878, 24902, 24879, 24911, 24873, 24896, 25120, 37224, 25123,
+    25125, 25124, 25541, 25585, 25579, 25616, 25618, 25609, 25632, 25636,
+    25651, 25667, 25631, 25621, 25624, 25657, 25655, {f: 2, c: 25634}, 25612,
+    25638, 25648, 25640, 25665, 25653, 25647, 25610, 25626, 25664, 25637,
+    25639, 25611, 25575, 25627, 25646, 25633, 25614, 25967, 26002, 26067,
+    26246, 26252, 26261, 26256, 26251, 26250, 26265, 26260, 26232, 26400,
+    26982, 26975, 26936, 26958, 26978, 26993, 26943, 26949, 26986, 26937,
+    26946, 26967, 26969, 27002, {f: 2, c: 26952}, 26933, 26988, 26931, 26941,
+    26981, 26864, 27000, 26932, 26985, 26944, 26991, 26948, 26998, 26968,
+    26945, 26996, 26956, 26939, 26955, 26935, 26972, 26959, 26961, 26930,
+    26962, 26927, 27003, 26940, 27462, 27461, 27459, 27458, 27464, 27457,
+    27547, {f: 2, c: 27643}, 27641, {f: 2, c: 27639}, 28315, 28374, 28360,
+    28303, 28352, 28319, {f: 2, c: 28307}, 28320, 28337, 28345, 28358, 28370,
+    28349, 28353, 28318, 28361, 28343, 28336, 28365, 28326, 28367, 28338,
+    28350, 28355, 28380, 28376, 28313, 28306, 28302, 28301, 28324, 28321,
+    28351, 28339, 28368, 28362, 28311, 28334, 28323, 28999, 29012, 29010,
+    29027, 29024, 28993, 29021, [29026, 61080], 29042, 29048, 29034, 29025,
+    28994, 29016, 28995, 29003, 29040, 29023, 29008, 29011, 28996, 29005,
+    29018, 29263, 29325, 29324, 29329, 29328, 29326, 29500, 29506, 29499,
+    29498, 29504, 29514, 29513, 29764, {f: 2, c: 29770}, 29778, 29777, 29783,
+    29760, {f: 2, c: 29775}, 29774, 29762, 29766, 29773, 29780, 29921, 29951,
+    29950, 29949, 29981, 30073, 30071, 27011, 30191, 30223, 30211, 30199,
+    30206, 30204, [30201, 60782], 30200, 30224, 30203, 30198, 30189, 30197,
+    30205, 30361, 30389, 30429, 30549, {f: 2, c: 30559}, 30546, 30550, 30554,
+    30569, 30567, 30548, 30553, 30573, 30688, 30855, 30874, 30868, 30863,
+    30852, 30869, {f: 2, c: 30853}, 30881, 30851, 30841, 30873, 30848, 30870,
+    30843, 31100, 31106, 31101, 31097, 31249, {f: 2, c: 31256}, 31250, 31255,
+    31253, 31266, 31251, 31259, 31248, 31395, 31394, 31390, 31467, 31590,
+    31588, 31597, 31604, 31593, 31602, 31589, 31603, 31601, 31600, 31585,
+    31608, 31606, 31587, 31922, 31924, 31919, 32136, 32134, 32128, 32141,
+    32127, 32133, 32122, 32142, 32123, 32131, 32124, 32140, 32148, 32132,
+    32125, 32146, 32621, 32619, {f: 2, c: 32615}, 32620, 32678, 32677, 32679,
+    {f: 2, c: 32731}, 32801, 33124, 33120, 33143, 33116, 33129, 33115, 33122,
+    33138, 26401, 33118, 33142, 33127, 33135, 33092, 33121, 33309, 33353,
+    33348, 33344, 33346, 33349, 34033, 33855, 33878, 33910, 33913, 33935,
+    33933, 33893, 33873, 33856, 33926, 33895, 33840, 33869, 33917, 33882,
+    33881, 33908, 33907, 33885, 34055, 33886, 33847, 33850, 33844, 33914,
+    33859, 33912, 33842, 33861, 33833, 33753, 33867, 33839, 33858, 33837,
+    33887, 33904, 33849, 33870, 33868, 33874, 33903, 33989, 33934, 33851,
+    33863, 33846, 33843, 33896, 33918, 33860, 33835, 33888, 33876, 33902,
+    33872, 34571, 34564, 34551, 34572, 34554, 34518, 34549, 34637, 34552,
+    34574, 34569, 34561, 34550, 34573, 34565, 35030, 35019, {f: 2, c: 35021},
+    35038, 35035, 35034, 35020, 35024, 35205, 35227, 35295, 35301, 35300,
+    35297, 35296, 35298, 35292, 35302, 35446, 35462, 35455, 35425, 35391,
+    35447, 35458, 35460, 35445, 35459, 35457, 35444, 35450, 35900, 35915,
+    35914, 35941, 35940, 35942, 35974, {f: 2, c: 35972}, 36044,
+    {f: 2, c: 36200}, 36241, 36236, {f: 2, c: 36238}, 36237, {f: 2, c: 36243},
+    36240, 36242, 36336, 36320, 36332, 36337, 36334, 36304, 36329, 36323,
+    36322, 36327, 36338, 36331, 36340, 36614, 36607, 36609, 36608, 36613,
+    {f: 2, c: 36615}, 36610, [36619, 60507], 36946, 36927, 36932, 36937, 36925,
+    37136, 37133, 37135, 37137, 37142, 37140, 37131, 37134, {f: 2, c: 37230},
+    37448, 37458, 37424, 37434, 37478, 37427, 37477, 37470, 37507, 37422,
+    37450, 37446, 37485, 37484, 37455, 37472, 37479, 37487, 37430, 37473,
+    37488, 37425, 37460, 37475, 37456, 37490, 37454, 37459, 37452, 37462,
+    37426, 38303, 38300, 38302, 38299, {f: 2, c: 38546}, 38545, 38551, 38606,
+    38650, 38653, 38648, 38645, 38771, {f: 2, c: 38775}, 38770, 38927,
+    {f: 2, c: 38925}, 39084, 39158, 39161, 39343, 39346, 39344, 39349, 39597,
+    39595, 39771, 40170, 40173, 40167, 40576, [12236, 40701], 20710, 20692,
+    20695, 20712, 20723, 20699, 20714, 20701, 20708, 20691, 20716, 20720,
+    20719, 20707, 20704, 20952, {f: 2, c: 21120}, 21225, 21227, 21296, 21420,
+    22055, 22037, 22028, 22034, 22012, 22031, 22044, 22017, 22035, 22018,
+    22010, 22045, 22020, 22015, 22009, 22665, 22652, 22672, 22680, 22662,
+    22657, 22655, 22644, 22667, 22650, 22663, 22673, 22670, 22646, 22658,
+    22664, 22651, 22676, 22671, 22782, 22891, 23260, 23278, 23269, 23253,
+    23274, 23258, 23277, 23275, 23283, 23266, 23264, 23259, 23276, 23262,
+    23261, 23257, 23272, 23263, 23415, 23520, 23523, 23651, 23938, 23936,
+    23933, 23942, 23930, 23937, 23927, 23946, 23945, 23944, 23934, 23932,
+    23949, 23929, 23935, {f: 2, c: 24152}, 24147, 24280, 24273, 24279, 24270,
+    24284, 24277, 24281, 24274, 24276, 24388, 24387, 24431, 24502, 24876,
+    24872, 24897, 24926, 24945, 24947, {f: 2, c: 24914}, 24946, 24940, 24960,
+    24948, 24916, 24954, 24923, 24933, 24891, 24938, 24929, 24918, 25129,
+    25127, 25131, 25643, 25677, 25691, 25693, 25716, 25718, {f: 2, c: 25714},
+    25725, 25717, 25702, 25766, 25678, 25730, 25694, 25692, 25675, 25683,
+    25696, 25680, 25727, 25663, 25708, 25707, 25689, 25701, 25719, 25971,
+    26016, 26273, 26272, 26271, 26373, 26372, 26402, 27057, 27062, 27081,
+    27040, 27086, 27030, 27056, 27052, 27068, 27025, 27033, 27022, 27047,
+    27021, 27049, 27070, 27055, 27071, 27076, 27069, 27044, 27092, 27065,
+    27082, 27034, 27087, 27059, 27027, 27050, 27041, 27038, 27097, 27031,
+    27024, 27074, 27061, 27045, 27078, 27466, 27469, 27467, {f: 3, c: 27550},
+    {f: 2, c: 27587}, 27646, 28366, 28405, 28401, 28419, 28453, 28408, 28471,
+    28411, 28462, 28425, 28494, {f: 2, c: 28441}, 28455, 28440, 28475, 28434,
+    28397, 28426, 28470, 28531, 28409, 28398, 28461, 28480, 28464, 28476,
+    28469, 28395, 28423, 28430, 28483, 28421, 28413, 28406, 28473, 28444,
+    28412, 28474, 28447, 28429, 28446, 28424, 28449, 29063, 29072, 29065,
+    29056, 29061, 29058, 29071, 29051, 29062, 29057, 29079, 29252, 29267,
+    29335, 29333, 29331, 29507, 29517, 29521, 29516, 29794, 29811, 29809,
+    29813, 29810, 29799, 29806, 29952, {f: 2, c: 29954}, 30077, 30096, 30230,
+    30216, 30220, 30229, 30225, 30218, 30228, 30392, 30593, 30588, 30597,
+    30594, 30574, 30592, 30575, 30590, 30595, 30898, 30890, 30900, 30893,
+    30888, 30846, 30891, 30878, 30885, 30880, 30892, 30882, 30884, 31128,
+    {f: 2, c: 31114}, 31126, 31125, 31124, 31123, 31127, 31112, 31122, 31120,
+    31275, 31306, 31280, 31279, 31272, 31270, 31400, {f: 2, c: 31403}, 31470,
+    31624, 31644, 31626, 31633, 31632, 31638, 31629, 31628, 31643, 31630,
+    31621, 31640, 21124, 31641, 31652, 31618, 31931, 31935, 31932, 31930,
+    32167, 32183, 32194, 32163, 32170, 32193, 32192, 32197, 32157, 32206,
+    32196, 32198, {f: 2, c: 32203}, 32175, 32185, 32150, 32188, 32159, 32166,
+    32174, 32169, 32161, 32201, 32627, {f: 2, c: 32738}, 32741, 32734, 32804,
+    32861, 32860, 33161, 33158, 33155, 33159, 33165, 33164, 33163, 33301,
+    33943, 33956, 33953, 33951, 33978, 33998, 33986, 33964, 33966, 33963,
+    33977, 33972, 33985, 33997, 33962, 33946, 33969, 34000, 33949, 33959,
+    33979, 33954, 33940, 33991, 33996, 33947, 33961, 33967, [33960, 58327],
+    34006, 33944, 33974, 33999, 33952, 34007, 34004, 34002, 34011, 33968,
+    33937, 34401, 34611, 34595, 34600, 34667, 34624, 34606, 34590, 34593,
+    34585, 34587, 34627, 34604, 34625, 34622, 34630, 34592, 34610, 34602,
+    34605, 34620, 34578, 34618, 34609, 34613, 34626, {f: 2, c: 34598}, 34616,
+    34596, 34586, 34608, 34577, 35063, 35047, {f: 2, c: 35057}, 35066, 35070,
+    35054, 35068, 35062, 35067, 35056, 35052, 35051, 35229, 35233, 35231,
+    35230, 35305, 35307, 35304, 35499, 35481, 35467, 35474, 35471, 35478,
+    35901, {f: 2, c: 35944}, 36053, 36047, 36055, 36246, 36361, 36354, 36351,
+    36365, 36349, 36362, 36355, 36359, 36358, 36357, 36350, 36352, 36356,
+    {f: 2, c: 36624}, 36622, 36621, 37155, 37148, 37152, 37154, 37151, 37149,
+    37146, 37156, 37153, 37147, 37242, 37234, 37241, 37235, 37541, 37540,
+    37494, 37531, 37498, 37536, 37524, 37546, 37517, 37542, 37530, 37547,
+    37497, 37527, 37503, 37539, 37614, 37518, 37506, 37525, 37538, 37501,
+    37512, 37537, 37514, 37510, 37516, 37529, 37543, 37502, 37511, 37545,
+    37533, 37515, 37421, 38558, 38561, 38655, 38744, 38781, 38778, 38782,
+    38787, 38784, 38786, 38779, 38788, 38785, 38783, 38862, 38861, 38934,
+    {f: 2, c: 39085}, 39170, 39168, 39175, 39325, 39324, 39363, 39353, 39355,
+    39354, 39362, 39357, 39367, 39601, 39651, 39655, {f: 2, c: 39742},
+    {f: 2, c: 39776}, 39775, {f: 2, c: 40177}, 40181, 40615, 20735, 20739,
+    20784, 20728, {f: 2, c: 20742}, 20726, 20734, {f: 2, c: 20747}, 20733,
+    20746, {f: 2, c: 21131}, 21233, 21231, 22088, 22082, 22092, 22069, 22081,
+    22090, 22089, 22086, 22104, 22106, 22080, 22067, 22077, 22060, 22078,
+    22072, 22058, 22074, 22298, 22699, 22685, 22705, 22688, 22691, 22703,
+    22700, 22693, 22689, 22783, 23295, 23284, 23293, 23287, 23286, 23299,
+    23288, 23298, 23289, 23297, 23303, 23301, 23311, 23655, 23961, 23959,
+    23967, 23954, 23970, 23955, 23957, 23968, 23964, 23969, 23962, 23966,
+    24169, 24157, 24160, 24156, 32243, 24283, 24286, 24289, 24393, 24498,
+    24971, 24963, 24953, 25009, 25008, 24994, 24969, 24987, 24979, 25007,
+    25005, 24991, 24978, 25002, 24993, 24973, 24934, 25011, 25133, 25710,
+    25712, 25750, 25760, 25733, 25751, 25756, 25743, 25739, 25738, 25740,
+    25763, 25759, 25704, 25777, 25752, 25974, 25978, 25977, 25979,
+    {f: 2, c: 26034}, 26293, 26288, 26281, 26290, 26295, 26282, 26287, 27136,
+    27142, 27159, 27109, 27128, 27157, 27121, 27108, 27168, 27135, 27116,
+    27106, 27163, 27165, 27134, 27175, 27122, 27118, 27156, 27127, 27111,
+    27200, 27144, 27110, 27131, 27149, 27132, 27115, 27145, 27140, 27160,
+    27173, 27151, 27126, 27174, 27143, 27124, 27158, 27473, 27557, 27555,
+    27554, 27558, 27649, 27648, 27647, 27650, 28481, 28454, 28542, 28551,
+    28614, 28562, 28557, 28553, 28556, 28514, 28495, 28549, 28506, 28566,
+    28534, 28524, 28546, 28501, 28530, 28498, 28496, 28503, 28564, 28563,
+    28509, 28416, 28513, 28523, 28541, 28519, 28560, 28499, 28555, 28521,
+    28543, 28565, 28515, 28535, 28522, 28539, 29106, 29103, 29083, 29104,
+    29088, 29082, 29097, 29109, 29085, 29093, 29086, 29092, 29089, 29098,
+    29084, 29095, 29107, 29336, 29338, 29528, 29522, {f: 3, c: 29534}, 29533,
+    29531, 29537, 29530, 29529, 29538, 29831, {f: 2, c: 29833}, 29830, 29825,
+    29821, 29829, 29832, 29820, [29817, 58868], 29960, 29959, 30078, 30245,
+    30238, 30233, 30237, 30236, 30243, 30234, 30248, 30235, {f: 3, c: 30364},
+    30363, 30605, 30607, 30601, 30600, 30925, 30907, 30927, 30924, 30929,
+    30926, 30932, 30920, {f: 2, c: 30915}, 30921, 31130, 31137, 31136, 31132,
+    31138, [31131, 59175], 27510, 31289, 31410, 31412, 31411, 31671, 31691,
+    31678, 31660, 31694, 31663, 31673, 31690, 31669, 31941, 31944, 31948,
+    31947, 32247, 32219, 32234, 32231, 32215, 32225, 32259, 32250, 32230,
+    32246, 32241, 32240, 32238, 32223, 32630, 32684, 32688, 32685, 32749,
+    32747, 32746, 32748, 32742, 32744, 32868, 32871, 33187, 33183, 33182,
+    33173, 33186, 33177, 33175, 33302, 33359, 33363, 33362, 33360, 33358,
+    33361, 34084, 34107, 34063, 34048, 34089, 34062, 34057, 34061, 34079,
+    34058, 34087, 34076, 34043, 34091, 34042, 34056, 34060, 34036, 34090,
+    34034, 34069, 34039, 34027, 34035, 34044, 34066, 34026, 34025, 34070,
+    34046, 34088, 34077, 34094, 34050, 34045, 34078, 34038, 34097, 34086,
+    {f: 2, c: 34023}, 34032, 34031, 34041, 34072, 34080, 34096, 34059, 34073,
+    34095, 34402, 34646, {f: 2, c: 34659}, 34679, 34785, 34675, 34648, 34644,
+    34651, 34642, 34657, 34650, 34641, 34654, 34669, 34666, 34640, 34638,
+    34655, 34653, 34671, 34668, 34682, 34670, 34652, 34661, 34639, 34683,
+    34677, 34658, 34663, 34665, 34906, 35077, 35084, 35092, 35083,
+    {f: 3, c: 35095}, 35078, 35094, 35089, 35086, 35081, 35234, 35236, 35235,
+    35309, 35312, 35308, 35535, 35526, 35512, 35539, 35537, {f: 2, c: 35540},
+    35515, 35543, 35518, 35520, 35525, 35544, 35523, 35514, 35517, 35545,
+    35902, 35917, 35983, 36069, 36063, 36057, 36072, 36058, 36061, 36071,
+    36256, 36252, 36257, 36251, 36384, 36387, 36389, 36388, 36398, 36373,
+    36379, 36374, 36369, 36377, {f: 2, c: 36390}, 36372, 36370, 36376, 36371,
+    36380, 36375, 36378, 36652, 36644, 36632, 36634, 36640, 36643,
+    {f: 2, c: 36630}, 36979, 36976, 36975, 36967, 36971, 37167, 37163,
+    {f: 2, c: 37161}, 37170, 37158, 37166, {f: 2, c: 37253}, 37258,
+    {f: 2, c: 37249}, 37252, 37248, 37584, {f: 2, c: 37571}, 37568, 37593,
+    37558, 37583, 37617, 37599, 37592, 37609, 37591, 37597, 37580, 37615,
+    37570, 37608, 37578, 37576, 37582, 37606, 37581, 37589, 37577, 37600,
+    37598, 37607, 37585, 37587, 37557, 37601, 37669, 37574, 37556, 38268,
+    38316, 38315, 38318, 38320, 38564, 38562, 38611, 38661, 38664, 38658,
+    38746, 38794, 38798, 38792, 38864, 38863, 38942, 38941, 38950, 38953,
+    38952, 38944, 38939, 38951, 39090, 39176, 39162, 39185, 39188,
+    {f: 2, c: 39190}, 39189, 39388, 39373, 39375, {f: 2, c: 39379}, 39374,
+    39369, [39382, 60270], 39384, 39371, 39383, 39372, 39603, 39660, 39659,
+    39667, 39666, 39665, 39750, 39747, 39783, 39796, 39793, 39782, 39798,
+    39797, 39792, 39784, 39780, 39788, 40188, 40186, 40189, 40191, 40183,
+    40199, 40192, 40185, 40187, 40200, 40197, 40196, 40579, 40659,
+    {f: 2, c: 40719}, 20764, 20755, 20759, 20762, 20753, 20958, 21300, 21473,
+    22128, 22112, 22126, 22131, 22118, 22115, 22125, 22130, 22110, 22135,
+    22300, 22299, 22728, 22717, 22729, 22719, 22714, 22722, 22716, 22726,
+    23319, 23321, 23323, 23329, 23316, 23315, 23312, 23318, [23336, 59539],
+    23322, 23328, 23326, 23535, 23980, 23985, 23977, 23975, 23989, 23984,
+    23982, 23978, 23976, 23986, 23981, 23983, 23988, {f: 2, c: 24167}, 24166,
+    24175, 24297, 24295, 24294, 24296, 24293, 24395, 24508, 24507, 24989,
+    25000, 24982, 25029, 25012, 25030, 25025, 25036, 25018, 25023, 25016,
+    24972, 25815, 25814, 25808, 25807, 25801, 25789, 25737, 25795, 25819,
+    25843, 25817, 25907, 25983, 25980, 26018, 26312, 26302, 26304,
+    {f: 2, c: 26314}, 26319, 26301, 26299, 26298, 26316, 26403, 27188, 27238,
+    27209, 27239, 27186, 27240, 27198, 27229, 27245, 27254, 27227, 27217,
+    27176, 27226, 27195, 27199, 27201, 27242, 27236, 27216, 27215, 27220,
+    27247, 27241, 27232, 27196, 27230, 27222, 27221, {f: 2, c: 27213}, 27206,
+    27477, 27476, 27478, 27559, {f: 2, c: 27562}, 27592, 27591, 27652, 27651,
+    27654, 28589, 28619, 28579, 28615, 28604, 28622, 28616, 28510, 28612,
+    28605, 28574, 28618, 28584, 28676, 28581, 28590, 28602, 28588, 28586,
+    28623, 28607, 28600, 28578, 28617, 28587, 28621, 28591, 28594, 28592,
+    29125, 29122, 29119, 29112, 29142, {f: 2, c: 29120}, 29131, 29140, 29130,
+    29127, 29135, 29117, 29144, 29116, 29126, {f: 2, c: 29146},
+    {f: 2, c: 29341}, 29545, {f: 2, c: 29542}, 29548, 29541, 29547, 29546,
+    29823, 29850, 29856, 29844, 29842, 29845, 29857, 29963, 30080, 30255,
+    30253, 30257, 30269, 30259, 30268, 30261, 30258, 30256, 30395, 30438,
+    30618, 30621, 30625, 30620, 30619, {f: 2, c: 30626}, 30613, 30617, 30615,
+    30941, 30953, 30949, 30954, 30942, 30947, 30939, {f: 2, c: 30945}, 30957,
+    {f: 2, c: 30943}, 31140, 31300, 31304, 31303, 31414, 31416, 31413, 31409,
+    31415, 31710, 31715, 31719, 31709, 31701, 31717, 31706, 31720, 31737,
+    31700, 31722, 31714, 31708, 31723, 31704, 31711, 31954, 31956, 31959,
+    {f: 2, c: 31952}, 32274, 32289, 32279, 32268, {f: 2, c: 32287}, 32275,
+    32270, 32284, 32277, 32282, 32290, 32267, 32271, 32278, 32269, 32276,
+    32293, 32292, 32579, {f: 2, c: 32635}, 32634, 32689, 32751, 32810, 32809,
+    32876, 33201, 33190, 33198, 33209, 33205, 33195, 33200, 33196, 33204,
+    33202, 33207, 33191, 33266, {f: 3, c: 33365}, 34134, 34117, 34155, 34125,
+    34131, 34145, 34136, 34112, 34118, 34148, 34113, 34146, 34116, 34129,
+    34119, 34147, 34110, 34139, 34161, 34126, 34158, 34165, 34133, 34151,
+    34144, 34188, 34150, 34141, 34132, 34149, 34156, 34403, 34405, 34404,
+    34724, 34715, 34703, 34711, 34707, 34706, 34696, 34689, 34710, 34712,
+    34681, 34695, 34723, 34693, {f: 2, c: 34704}, 34717, 34692, 34708, 34716,
+    34714, 34697, 35102, 35110, 35120, {f: 2, c: 35117}, 35111, 35121, 35106,
+    35113, 35107, 35119, 35116, 35103, 35313, 35552, 35554, 35570,
+    {f: 2, c: 35572}, 35549, 35604, 35556, 35551, 35568, 35528, 35550, 35553,
+    35560, 35583, 35567, 35579, {f: 2, c: 35985}, 35984, 36085, 36078, 36081,
+    36080, 36083, 36204, 36206, 36261, 36263, 36403, 36414, 36408, 36416,
+    36421, 36406, {f: 2, c: 36412}, 36417, 36400, 36415, 36541, [36662, 60329],
+    36654, 36661, 36658, 36665, 36663, 36660, 36982, 36985, 36987, 36998,
+    37114, 37171, {f: 2, c: 37173}, 37267, {f: 2, c: 37264}, 37261, 37263,
+    37671, 37662, 37640, 37663, 37638, 37647, 37754, 37688, 37692, 37659,
+    37667, 37650, 37633, 37702, 37677, 37646, 37645, 37579, 37661, 37626,
+    37651, 37625, 37623, 37684, 37634, 37668, 37631, 37673, 37689, 37685,
+    37674, 37652, 37644, 37643, 37630, 37641, 37632, 37627, 37654, 38332,
+    38349, 38334, {f: 2, c: 38329}, 38326, 38335, 38325, 38333, 38569, 38612,
+    38667, 38674, 38672, 38809, 38807, 38804, 38896, 38904, 38965, 38959,
+    38962, 39204, 39199, 39207, 39209, 39326, 39406, 39404, 39397, 39396,
+    39408, 39395, 39402, 39401, 39399, 39609, 39615, 39604, 39611, 39670,
+    39674, 39673, 39671, 39731, 39808, 39813, 39815, 39804, 39806, 39803,
+    39810, 39827, 39826, 39824, 39802, 39829, 39805, 39816, 40229, 40215,
+    40224, 40222, 40212, 40233, 40221, 40216, 40226, 40208, 40217, 40223,
+    40584, {f: 2, c: 40582}, 40622, 40621, {f: 2, c: 40661}, 40698, 40722,
+    40765, 20774, 20773, 20770, 20772, 20768, 20777, 21236, 22163,
+    {f: 2, c: 22156}, 22150, 22148, 22147, 22142, 22146, 22143, 22145, 22742,
+    22740, 22735, 22738, 23341, 23333, 23346, 23331, 23340, 23335, 23334,
+    23343, 23342, 23419, {f: 2, c: 23537}, 23991, 24172, 24170, 24510, 25027,
+    25013, 25020, 25063, 25056, 25061, 25060, 25064, 25054, 25839, 25833,
+    25827, 25835, 25828, 25832, 25985, 25984, 26038, 26074, 26322, 27277,
+    27286, 27265, 27301, 27273, 27295, 27291, 27297, 27294, 27271, 27283,
+    27278, 27285, 27267, 27304, 27300, 27281, 27263, 27302, 27290, 27269,
+    27276, 27282, 27483, 27565, 27657, 28620, 28585, 28660, 28628, 28643,
+    28636, 28653, 28647, 28646, 28638, 28658, 28637, 28642, 28648, 29153,
+    29169, 29160, 29170, 29156, 29168, 29154, 29555, {f: 2, c: 29550}, 29847,
+    29874, 29867, 29840, 29866, 29869, 29873, 29861, 29871, {f: 3, c: 29968},
+    29967, 30084, 30275, {f: 2, c: 30280}, 30279, 30372, 30441, 30645, 30635,
+    30642, 30647, 30646, 30644, 30641, 30632, 30704, 30963, 30973, 30978,
+    {f: 2, c: 30971}, 30975, 30962, 30981, 30969, 30974, 30980, 31147, 31144,
+    31324, 31323, 31318, 31320, 31316, 31322, 31422, {f: 2, c: 31424}, 31749,
+    31759, 31730, 31744, 31743, 31739, 31758, 31732, 31755, 31731, 31746,
+    31753, 31747, 31745, 31736, 31741, [31750, 58176], {f: 2, c: 31728}, 31760,
+    31754, 31976, 32301, 32316, 32322, 32307, 38984, 32312, 32298, 32329,
+    32320, 32327, 32297, 32332, 32304, 32315, 32310, 32324, 32314, 32581,
+    32639, 32638, 32637, 32756, 32754, 32812, 33211, 33220, 33228, 33226,
+    33221, 33223, 33212, 33257, 33371, 33370, 33372, 34179, 34176, 34191,
+    34215, 34197, 34208, 34187, 34211, 34171, 34212, 34202, 34206, 34167,
+    34172, 34185, 34209, 34170, 34168, 34135, 34190, 34198, 34182, 34189,
+    34201, 34205, 34177, 34210, 34178, 34184, 34181, 34169, 34166, 34200,
+    34192, 34207, 34408, 34750, 34730, 34733, 34757, 34736, 34732, 34745,
+    34741, 34748, 34734, 34761, 34755, 34754, 34764, 34743, 34735, 34756,
+    34762, 34740, 34742, 34751, 34744, 34749, 34782, 34738, 35125, 35123,
+    35132, 35134, 35137, 35154, 35127, 35138, 35245, 35247, 35246,
+    {f: 2, c: 35314}, 35614, 35608, 35606, 35601, 35589, 35595, 35618, 35599,
+    35602, 35605, 35591, 35597, 35592, 35590, 35612, 35603, 35610, 35919,
+    35952, 35954, 35953, 35951, 35989, 35988, 36089, 36207, 36430, 36429,
+    36435, 36432, 36428, 36423, 36675, 36672, 36997, 36990, 37176, 37274,
+    37282, 37275, 37273, 37279, 37281, 37277, 37280, 37793, 37763, 37807,
+    37732, 37718, 37703, 37756, 37720, 37724, 37750, 37705, {f: 2, c: 37712},
+    37728, 37741, 37775, 37708, 37738, 37753, 37719, 37717, 37714, 37711,
+    37745, 37751, 37755, 37729, 37726, 37731, 37735, 37710, 37721, 38343,
+    38336, 38345, 38339, 38341, 38327, 38574, 38576, 38572, 38688, 38687,
+    38680, 38685, 38681, 38810, 38817, 38812, 38814, 38813, 38869, 38868,
+    38897, 38977, 38980, 38986, 38985, 38981, 38979, 39205, {f: 2, c: 39211},
+    39210, 39219, 39218, 39215, 39213, 39217, 39216, 39320, 39331, 39329,
+    39426, 39418, 39412, 39415, 39417, 39416, 39414, 39419, {f: 2, c: 39421},
+    39420, 39427, 39614, 39678, 39677, 39681, 39676, 39752, 39834, 39848,
+    39838, 39835, 39846, 39841, 39845, 39844, 39814, 39842, 39840, 39855,
+    40243, 40257, 40295, 40246, {f: 2, c: 40238}, 40241, 40248, 40240, 40261,
+    {f: 2, c: 40258}, 40254, 40247, 40256, 40253, 32757, 40237, 40586, 40585,
+    40589, 40624, 40648, 40666, 40699, 40703, 40740, 40739, 40738, 40788,
+    [12245, 40864], 20785, {f: 2, c: 20781}, 22168, 22172, 22167, 22170, 22173,
+    22169, 22896, 23356, {f: 2, c: 23657}, 24000, {f: 2, c: 24173}, 25048,
+    25055, {f: 2, c: 25069}, 25073, 25066, 25072, 25067, 25046, 25065, 25855,
+    25860, 25853, 25848, 25857, 25859, 25852, 26004, 26075, {f: 2, c: 26330},
+    26328, 27333, 27321, 27325, 27361, 27334, 27322, {f: 2, c: 27318}, 27335,
+    27316, 27309, 27486, 27593, 27659, 28679, {f: 2, c: 28684}, 28673, 28677,
+    28692, 28686, {f: 2, c: 28671}, 28667, 28710, 28668, 28663, 28682,
+    [29185, 60224], 29183, 29177, 29187, 29181, 29558, 29880, 29888, 29877,
+    29889, 29886, 29878, 29883, 29890, 29972, 29971, 30300, 30308, 30297,
+    30288, 30291, 30295, 30298, 30374, 30397, 30444, 30658, 30650, 30988,
+    {f: 2, c: 30995}, 30985, 30992, 30994, 30993, 31149, 31148, 31327, 31772,
+    31785, 31769, 31776, 31775, 31789, 31773, 31782, 31784, 31778, 31781,
+    31792, 32348, 32336, 32342, 32355, 32344, 32354, 32351, 32337, 32352,
+    32343, 32339, 32693, 32691, {f: 2, c: 32759}, 32885, {f: 2, c: 33233},
+    33232, 33375, 33374, 34228, 34246, 34240, 34243, 34242, 34227, 34229,
+    34237, 34247, 34244, 34239, 34251, 34254, 34248, 34245, 34225, 34230,
+    34258, 34340, 34232, 34231, 34238, 34409, 34791, 34790, 34786, 34779,
+    34795, 34794, 34789, 34783, 34803, 34788, 34772, 34780, 34771, 34797,
+    34776, 34787, 34775, 34777, 34817, 34804, 34792, 34781, 35155, 35147,
+    35151, 35148, 35142, {f: 2, c: 35152}, 35145, 35626, 35623, 35619, 35635,
+    35632, 35637, 35655, 35631, 35644, 35646, 35633, 35621, 35639, 35622,
+    35638, 35630, 35620, 35643, 35645, 35642, 35906, 35957, 35993, 35992,
+    35991, 36094, 36100, 36098, 36096, 36444, 36450, 36448, 36439, 36438,
+    36446, 36453, 36455, 36443, 36442, 36449, 36445, 36457, 36436,
+    {f: 3, c: 36678}, 36683, 37160, {f: 2, c: 37178}, 37182, 37288, 37285,
+    37287, 37295, 37290, 37813, 37772, 37778, 37815, 37787, 37789, 37769,
+    37799, 37774, 37802, 37790, 37798, 37781, 37768, 37785, 37791, 37760,
+    37773, 37809, 37777, 37810, 37796, 37800, 37812, 37795, {f: 2, c: 38354},
+    38353, 38579, 38615, 38618, 24002, 38623, 38616, 38621, 38691, 38690,
+    38693, 38828, 38830, 38824, 38827, 38820, 38826, 38818, 38821, 38871,
+    38873, 38870, 38872, 38906, {f: 3, c: 38992}, 39096, 39233, 39228, 39226,
+    39439, 39435, 39433, 39437, 39428, 39441, 39434, 39429, 39431, 39430,
+    39616, 39644, 39688, {f: 2, c: 39684}, 39721, 39733, 39754, 39756, 39755,
+    39879, 39878, 39875, 39871, 39873, 39861, 39864, 39891, 39862, 39876,
+    39865, 39869, 40284, 40275, 40271, 40266, 40283, 40267, 40281, 40278,
+    40268, 40279, 40274, 40276, 40287, 40280, 40282, 40590, 40588, 40671,
+    40705, 40704, [40726, 58693], 40741, 40747, 40746, 40745, 40744, 40780,
+    40789, {f: 2, c: 20788}, 21142, 21239, 21428, 22187, 22189,
+    {f: 2, c: 22182}, 22186, 22188, 22746, 22749, 22747, 22802,
+    {f: 3, c: 23357}, 24003, 24176, 24511, 25083, 25863, 25872, 25869, 25865,
+    25868, 25870, 25988, 26078, 26077, 26334, 27367, 27360, 27340, 27345,
+    27353, 27339, 27359, 27356, 27344, 27371, 27343, 27341, 27358, 27488,
+    27568, 27660, 28697, 28711, 28704, 28694, 28715, {f: 3, c: 28705}, 28713,
+    28695, 28708, 28700, 29196, 29194, 29191, 29186, 29189, {f: 2, c: 29349},
+    29348, 29347, 29345, 29899, 29893, 29879, 29891, 29974, 30304,
+    {f: 2, c: 30665}, 30660, 30705, 31005, 31003, 31009, 31004, 30999, 31006,
+    31152, {f: 2, c: 31335}, 31795, 31804, 31801, 31788, 31803, 31980, 31978,
+    32374, 32373, 32376, 32368, 32375, 32367, 32378, 32370, 32372, 32360,
+    32587, 32586, 32643, 32646, 32695, {f: 2, c: 32765}, 32888, 33239, 33237,
+    33291, 33380, 33377, 33379, 34283, 34289, 34285, 34265, 34273, 34280,
+    34266, 34263, 34284, 34290, 34296, 34264, 34271, 34275, 34268, 34257,
+    34288, 34278, 34287, 34270, 34274, 34816, 34810, 34819, {f: 2, c: 34806},
+    34825, 34828, 34827, 34822, 34812, 34824, 34815, 34826, 34818, 35170,
+    {f: 2, c: 35162}, 35159, 35169, 35164, 35160, 35165, 35161, 35208, 35255,
+    35254, 35318, 35664, 35656, 35658, 35648, 35667, 35670, 35668, 35659,
+    35669, 35665, 35650, 35666, 35671, 35907, 35959, 35958, 35994,
+    {f: 2, c: 36102}, 36105, 36268, 36266, 36269, 36267, 36461, 36472, 36467,
+    36458, 36463, 36475, 36546, 36690, 36689, {f: 2, c: 36687}, 36691, 36788,
+    37184, 37183, 37296, 37293, 37854, 37831, 37839, 37826, 37850, 37840,
+    37881, 37868, 37836, 37849, 37801, 37862, 37834, 37844, 37870, 37859,
+    37845, 37828, 37838, 37824, 37842, 37797, 37863, 38269, {f: 2, c: 38362},
+    38625, 38697, {f: 2, c: 38699}, 38696, 38694, 38835, 38839, 38838,
+    {f: 3, c: 38877}, 39004, 39001, 39005, 38999, 39103, 39101, 39099, 39102,
+    39240, 39239, 39235, {f: 2, c: 39334}, 39450, 39445, 39461, 39453, 39460,
+    39451, 39458, 39456, 39463, 39459, 39454, 39452, 39444, 39618, 39691,
+    39690, 39694, 39692, 39735, {f: 2, c: 39914}, 39904, 39902, 39908, 39910,
+    39906, 39920, 39892, 39895, 39916, 39900, 39897, 39909, 39893, 39905,
+    39898, 40311, 40321, 40330, 40324, 40328, 40305, 40320, 40312, 40326,
+    {f: 2, c: 40331}, 40317, 40299, {f: 2, c: 40308}, 40304, 40297, 40325,
+    40307, 40315, 40322, 40303, 40313, 40319, 40327, 40296, 40596, 40593,
+    40640, 40700, 40749, {f: 2, c: 40768}, 40781, {f: 3, c: 40790}, 21303,
+    22194, 22197, 22195, 22755, 23365, {f: 2, c: 24006}, {f: 2, c: 24302},
+    {f: 2, c: 24512}, 25081, 25879, 25878, 25877, 25875, 26079, 26344,
+    {f: 2, c: 26339}, 27379, 27376, 27370, 27368, 27385, 27377,
+    {f: 2, c: 27374}, 28732, 28725, 28719, 28727, 28724, 28721, 28738, 28728,
+    28735, 28730, 28729, 28714, 28736, 28731, 28723, 28737, {f: 2, c: 29203},
+    29352, 29565, 29564, 29882, 30379, 30378, 30398, 30445, 30668,
+    {f: 2, c: 30670}, 30669, 30706, 31013, 31011, {f: 2, c: 31015}, 31012,
+    31017, 31154, 31342, {f: 2, c: 31340}, 31479, 31817, 31816, 31818, 31815,
+    31813, 31982, 32379, 32382, 32385, 32384, 32698, 32767, 32889, 33243,
+    33241, {f: 2, c: 33384}, 34338, 34303, 34305, 34302, 34331, 34304, 34294,
+    34308, 34313, 34309, 34316, 34301, 34841, {f: 2, c: 34832}, 34839, 34835,
+    34838, 35171, 35174, 35257, 35319, 35680, 35690, 35677, 35688, 35683,
+    35685, 35687, 35693, 36270, 36486, 36488, 36484, 36697, {f: 2, c: 36694},
+    36693, 36696, 36698, 37005, 37187, 37185, 37303, 37301, {f: 2, c: 37298},
+    37899, 37907, 37883, 37920, 37903, 37908, 37886, 37909, 37904, 37928,
+    37913, 37901, 37877, 37888, 37879, 37895, 37902, 37910, 37906, 37882,
+    37897, 37880, 37948, 37898, 37887, 37884, 37900, 37878, 37905, 37894,
+    38366, 38368, 38367, {f: 2, c: 38702}, 38841, 38843, {f: 2, c: 38909},
+    39008, {f: 2, c: 39010}, 39007, {f: 2, c: 39105}, 39248, 39246, 39257,
+    39244, 39243, 39251, 39474, 39476, 39473, 39468, 39466, 39478, 39465,
+    39470, 39480, 39469, 39623, 39626, 39622, 39696, 39698, 39697, 39947,
+    39944, 39927, 39941, 39954, 39928, 40000, 39943, 39950, 39942, 39959,
+    39956, 39945, 40351, 40345, 40356, 40349, 40338, 40344, 40336, 40347,
+    40352, 40340, 40348, 40362, 40343, 40353, 40346, 40354, 40360, 40350,
+    40355, 40383, 40361, 40342, {f: 2, c: 40358}, 40601, 40603, 40602, 40677,
+    40676, 40679, 40678, 40752, 40750, 40795, 40800, 40798, 40797, 40793,
+    40849, 20794, 20793, 21144, 21143, 22211, {f: 2, c: 22205}, 23368, 23367,
+    24011, 24015, 24305, 25085, 25883, 27394, 27388, 27395, 27384, 27392,
+    {f: 2, c: 28739}, 28746, {f: 2, c: 28744}, {f: 2, c: 28741}, 29213, 29210,
+    29209, 29566, 29975, 30314, 30672, 31021, 31025, 31023, 31828, 31827,
+    31986, 32394, [32391, 60229], 32392, 32395, 32390, 32397, 32589, 32699,
+    32816, 33245, 34328, 34346, 34342, 34335, 34339, 34332, 34329, 34343,
+    34350, 34337, 34336, 34345, 34334, 34341, 34857, 34845, 34843, 34848,
+    34852, 34844, 34859, 34890, 35181, 35177, 35182, 35179, 35322, 35705,
+    35704, 35653, {f: 2, c: 35706}, 36112, 36116, 36271, 36494, 36492, 36702,
+    36699, 36701, 37190, {f: 2, c: 37188}, 37305, 37951, 37947, 37942, 37929,
+    37949, 37936, 37945, 37930, 37943, 37932, 37952, 37937, 38373, 38372,
+    38371, 38709, 38714, 38847, 38881, 39012, 39113, 39110, 39104, 39256,
+    39254, 39481, 39485, 39494, 39492, 39490, 39489, 39482, 39487, 39629,
+    39701, {f: 2, c: 39703}, 39702, 39738, 39762, 39979, 39965, 39964, 39980,
+    39971, {f: 2, c: 39976}, 39972, 39969, 40375, 40374, 40380, 40385, 40391,
+    40394, 40399, 40382, 40389, 40387, 40379, 40373, 40398, {f: 2, c: 40377},
+    40364, 40392, 40369, 40365, 40396, 40371, 40397, 40370, 40570, 40604,
+    40683, 40686, 40685, 40731, 40728, 40730, 40753, 40782, 40805, 40804,
+    40850, 20153, 22214, 22213, 22219, 22897, {f: 2, c: 23371}, 24021, 24017,
+    24306, 25889, 25888, 25894, 25890, 27403, {f: 2, c: 27400}, 27661,
+    {f: 3, c: 28757}, 28754, {f: 2, c: 29214}, 29353, 29567, 29912, 29909,
+    29913, 29911, 30317, 30381, 31029, 31156, {f: 2, c: 31344}, 31831, 31836,
+    31833, 31835, 31834, 31988, 31985, 32401, 32591, 32647, 33246, 33387,
+    {f: 2, c: 34356}, 34355, 34348, 34354, 34358, 34860, 34856, 34854, 34858,
+    34853, 35185, 35263, 35262, 35323, 35710, 35716, 35714, 35718, 35717,
+    35711, 36117, 36501, 36500, 36506, 36498, 36496, {f: 2, c: 36502}, 36704,
+    36706, 37191, 37964, 37968, {f: 2, c: 37962}, 37967, 37959, 37957,
+    {f: 2, c: 37960}, 37958, 38719, 38883, 39018, 39017, 39115, 39252, 39259,
+    39502, {f: 2, c: 39507}, 39500, 39503, 39496, 39498, 39497, 39506, 39504,
+    39632, 39705, 39723, 39739, 39766, 39765, 40006, 40008, 39999, 40004,
+    39993, 39987, 40001, 39996, 39991, 39988, 39986, 39997, 39990, 40411,
+    40402, 40414, 40410, 40395, 40400, 40412, 40401, 40415, 40425, 40409,
+    40408, 40406, 40437, 40405, 40413, 40630, 40688, 40757, 40755, 40754,
+    40770, 40811, 40853, 40866, 20797, 21145, 22760, 22759, 22898, 23373,
+    24024, 34863, 24399, 25089, {f: 2, c: 25091}, 25897, 25893, 26006, 26347,
+    {f: 2, c: 27409}, 27407, 27594, 28763, 28762, 29218, 29570, 29569, 29571,
+    30320, 30676, 31847, 31846, 32405, 33388, 34362, 34368, 34361, 34364,
+    34353, 34363, 34366, 34864, 34866, 34862, 34867, 35190, 35188, 35187,
+    35326, 35724, 35726, 35723, 35720, 35909, 36121, 36504, 36708, 36707,
+    37308, 37986, 37973, 37981, 37975, 37982, {f: 2, c: 38852}, 38912, 39510,
+    39513, {f: 3, c: 39710}, 40018, 40024, 40016, 40010, 40013, 40011, 40021,
+    40025, 40012, 40014, 40443, 40439, 40431, 40419, 40427, 40440, 40420,
+    40438, 40417, 40430, 40422, 40434, [40432, 60370], 40418, 40428, 40436,
+    40435, 40424, 40429, 40642, 40656, {f: 2, c: 40690}, 40710, 40732, 40760,
+    40759, 40758, 40771, 40783, 40817, 40816, {f: 2, c: 40814}, 22227, 22221,
+    23374, 23661, 25901, {f: 2, c: 26349}, 27411, 28767, 28769, 28765, 28768,
+    29219, 29915, 29925, 30677, 31032, 31159, 31158, 31850, 32407, 32649,
+    33389, 34371, 34872, 34871, 34869, 34891, {f: 2, c: 35732},
+    {f: 3, c: 36510}, 36509, 37310, 37309, 37314, 37995, {f: 2, c: 37992},
+    38629, 38726, 38723, 38727, 38855, 38885, 39518, 39637, 39769, 40035,
+    40039, 40038, 40034, 40030, 40032, 40450, 40446, 40455, 40451, 40454,
+    40453, {f: 2, c: 40448}, 40457, 40447, 40445, 40452, 40608, 40734, 40774,
+    {f: 3, c: 40820}, 22228, 25902, 26040, {f: 2, c: 27416}, 27415, 27418,
+    28770, 29222, 29354, {f: 2, c: 30680}, 31033, 31849, 31851, 31990, 32410,
+    32408, 32411, 32409, {f: 2, c: 33248}, {f: 3, c: 34374}, {f: 2, c: 35193},
+    35196, 35195, 35327, {f: 2, c: 35736}, 36517, 36516, 36515, 37998, 37997,
+    37999, 38001, 38003, 38729, 39026, 39263, 40040, 40046, 40045, 40459,
+    40461, 40464, 40463, 40466, 40465, 40609, 40693, 40713, 40775, 40824,
+    40827, 40826, 40825, 22302, 28774, 31855, 34876, 36274, 36518, 37315,
+    38004, 38008, 38006, 38005, 39520, [39726, 60830], 40052, 40051, 40049,
+    40053, 40468, 40467, 40694, 40714, 40868, 28776, 28773, 31991, 34410,
+    34878, 34877, 34879, 35742, 35996, 36521, 36553, 38731, {f: 2, c: 39027},
+    39116, 39265, 39339, 39524, {f: 2, c: 39526}, 39716, 40469, 40471, 40776,
+    25095, 27422, 29223, 34380, 36520, 38018, {f: 2, c: 38016}, 39529, 39528,
+    40473, 34379, 35743, 38019, 40057, 40631, 30325, 39531, 40058, 40477,
+    {f: 2, c: 28777}, 29225, 40612, 40830, 40777, 40856, {s: 97}, 65075, 0,
+    65076, 65103, [168, 776, 63208], [710, 63209, 65342], [12541, 63210],
+    [12542, 63211], [12445, 63212], [12446, 63213], 0, [12293, 63216],
+    [12294, 63217], [12295, 63218], [12540, 63219], [63220, 65339],
+    [63221, 65341], [10045, 63222], [12353, 63223], [12354, 63224],
+    [12355, 63225], [12356, 63226], [12357, 63227], [12358, 63228],
+    [12359, 63229], [12360, 63230], [12361, 63231], [12362, 63232],
+    [12363, 63233], [12364, 63234], [12365, 63235], [12366, 63236],
+    [12367, 63237], [12368, 63238], [12369, 63239], [12370, 63240],
+    [12371, 63241], [12372, 63242], [12373, 63243], [12374, 63244],
+    [12375, 63245], [12376, 63246], [12377, 63247], [12378, 63248],
+    [12379, 63249], [12380, 63250], [12381, 63251], [12382, 63252],
+    [12383, 63253], [12384, 63254], [12385, 63255], [12386, 63256],
+    [12387, 63257], [12388, 63258], [12389, 63259], [12390, 63260],
+    [12391, 63261], [12392, 63262], [12393, 63263], [12394, 63264],
+    [12395, 63265], [12396, 63266], [12397, 63267], [12398, 63268],
+    [12399, 63269], [12400, 63270], [12401, 63271], [12402, 63272],
+    [12403, 63273], [12404, 63274], [12405, 63275], [12406, 63276],
+    [12407, 63277], [12408, 63278], [12409, 63279], [12410, 63280],
+    [12411, 63281], [12412, 63282], [12413, 63283], [12414, 63284],
+    [12415, 63285], [12416, 63286], [12417, 63287], [12418, 63288],
+    [12419, 63289], [12420, 63290], [12421, 63291], [12422, 63292],
+    [12423, 63293], [12424, 63294], [12425, 63295], [12426, 63296],
+    [12427, 63297], [12428, 63298], [12429, 63299], [12430, 63300],
+    [12431, 63301], [12432, 63302], [12433, 63303], [12434, 63304],
+    [12435, 63305], [12449, 63306], [12450, 63307], [12451, 63308],
+    [12452, 63309], [12453, 63310], [12454, 63311], [12455, 63312],
+    [12456, 63313], [12457, 63314], [12458, 63315], [12459, 63316],
+    [12460, 63317], [12461, 63318], [12462, 63319], [12463, 63320],
+    [12464, 63321], [12465, 63322], [12466, 63323], [12467, 63324],
+    [12468, 63325], [12469, 63326], [12470, 63327], [12471, 63328],
+    [12472, 63329], [12473, 63330], [12474, 63331], [12475, 63332],
+    [12476, 63333], [12477, 63334], [12478, 63335], [12479, 63336],
+    [12480, 63337], [12481, 63338], [12482, 63339], [12483, 63340],
+    [12484, 63341], [12485, 63342], [12486, 63343], [12487, 63344],
+    [12488, 63345], [12489, 63346], [12490, 63347], [12491, 63348],
+    [12492, 63349], [12493, 63350], [12494, 63351], [12495, 63352],
+    [12496, 63353], [12497, 63354], [12498, 63355], [12499, 63356],
+    [12500, 63357], [12501, 63358], [12502, 63359], [12503, 63360],
+    [12504, 63361], [12505, 63362], [12506, 63363], [12507, 63364],
+    [12508, 63365], [12509, 63366], [12510, 63367], [12511, 63368],
+    [12512, 63369], [12513, 63370], [12514, 63371], [12515, 63372],
+    [12516, 63373], [12517, 63374], [12518, 63375], [12519, 63376],
+    [12520, 63377], [12521, 63378], [12522, 63379], [12523, 63380],
+    [12524, 63381], [12525, 63382], [12526, 63383], [12527, 63384],
+    [12528, 63385], [12529, 63386], [12530, 63387], [12531, 63388],
+    [12532, 63389], [12533, 63390], [12534, 63391], [1040, 63392],
+    [1041, 63393], [1042, 63394], [1043, 63395], [1044, 63396], [1045, 63397],
+    [1025, 63398], [1046, 63399], [1047, 63400], [1048, 63401], [1049, 63402],
+    [1050, 63403], [1051, 63404], [1052, 63405], [1053, 63406], [1054, 63407],
+    [1055, 63408], [1056, 63409], [1057, 63410], [1058, 63411], [1059, 63412],
+    [1060, 63413], [1061, 63414], [1062, 63415], [1063, 63416], [1064, 63417],
+    [1065, 63418], [1066, 63419], [1067, 63420], [1068, 63421], [1069, 63422],
+    [1070, 63423], [1071, 63424], [1072, 63425], [1073, 63426], [1074, 63427],
+    [1075, 63428], [1076, 63429], [1077, 63430], [1105, 63431], [1078, 63432],
+    [1079, 63433], [1080, 63434], [1081, 63435], [1082, 63436], [1083, 63437],
+    [1084, 63438], [1085, 63439], [1086, 63440], [1087, 63441], [1088, 63442],
+    [1089, 63443], [1090, 63444], [1091, 63445], [1092, 63446], [1093, 63447],
+    [1094, 63448], [1095, 63449], [1096, 63450], [1097, 63451], [1098, 63452],
+    [1099, 63453], [1100, 63454], [1101, 63455], [1102, 63456], [1103, 63457],
+    [8679, 63458], [8632, 63459], [8633, 63460], [20033, 63461],
+    [63462, 131276], [20058, 63463], [63464, 131210], [20994, 63465],
+    [17553, 63466], 63467, [20872, 63468], [13853, 63469], [63470, 161287],
+    {s: 40}, [172, 63511, 65506], [63512, 65508], [63513, 65287],
+    [63514, 65282], [12849, 63515], [8470, 63516], [8481, 63517], 30849,
+    [37561, 58501], 35023, 22715, 24658, 31911, 23290, 9556, 9574, 9559, 9568,
+    9580, 9571, 9562, 9577, 9565, 9554, 9572, 9557, {s: 3}, 9560, 9575, 9563,
+    9555, 9573, 9558, 9567, 9579, 9570, 9561, 9576, 9564, 9553, {s: 5}, 9619,
+    {s: 26}, [58129, 147159], [22462, 58130], [58131, 159443], [28990, 58132],
+    [58133, 153568], [27042, 58135], [58136, 166889], [23412, 58137],
+    [31305, 58138], [58139, 153825], [58140, 169177], [31333, 58141],
+    [31357, 58142], [58143, 154028], [31419, 58144], [31408, 58145],
+    [31426, 58146], [31427, 58147], [29137, 58148], [58149, 156813],
+    [16842, 58150], [31450, 58151], [31453, 58152], [31466, 58153],
+    [16879, 58154], [21682, 58155], [58156, 154625], [31499, 58157],
+    [31573, 58158], [31529, 58159], [58160, 152334], [58161, 154878],
+    [31650, 58162], [31599, 58163], [33692, 58164], [58165, 154548],
+    [58166, 158847], [31696, 58167], [33825, 58168], [31634, 58169], 0,
+    [58171, 154912], 0, [33938, 58174], [31738, 58175], 0, [31797, 58177],
+    [58178, 154817], [31812, 58179], [31875, 58180], [58181, 149634],
+    [31910, 58182], [58184, 148856], [31945, 58185], [31943, 58186],
+    [31974, 58187], 0, [31987, 58189], [31989, 58190], [32359, 58192],
+    [17693, 58193], [58194, 159300], [32093, 58195], [58196, 159446],
+    [32137, 58198], [32171, 58199], [28981, 58200], [32179, 58201], 32214,
+    [58203, 147543], [58204, 155689], [32228, 58205], [15635, 58206],
+    [32245, 58207], [58208, 137209], [32229, 58209], [58210, 164717], 0,
+    [58212, 155937], [58213, 155994], [32366, 58214], 0, [17195, 58216],
+    [37996, 58217], [32295, 58218], [32576, 58219], [32577, 58220],
+    [32583, 58221], [31030, 58222], [58223, 156368], [39393, 58224],
+    [32663, 58225], [58226, 156497], [32675, 58227], [58228, 136801],
+    [58229, 131176], [17756, 58230], [58231, 145254], [58233, 164666],
+    [32762, 58234], [58235, 156809], 0, [32776, 58237], [32797, 58238], 0,
+    [32815, 58240], [58241, 172167], [58242, 158915], [32827, 58243],
+    [32828, 58244], [32865, 58245], [58246, 141076], [18825, 58247],
+    [58248, 157222], [58249, 146915], [58250, 157416], [26405, 58251],
+    [32935, 58252], [58253, 166472], [33031, 58254], [33050, 58255],
+    [22704, 58256], [58257, 141046], [27775, 58258], [58259, 156824],
+    [25831, 58261], [58262, 136330], [33304, 58263], [58264, 137310],
+    [27219, 58265], [58266, 150117], [58267, 150165], [17530, 58268],
+    [33321, 58269], [58271, 158290], [58272, 146814], [20473, 58273],
+    [58274, 136445], [34018, 58275], [33634, 58276], 0, [58278, 149927],
+    [58279, 144688], [58280, 137075], [58281, 146936], [33450, 58282],
+    [26907, 58283], [58284, 194964], [16859, 58285], [34123, 58286],
+    [33488, 58287], [33562, 58288], [58289, 134678], [58290, 137140],
+    [14017, 58291], [58292, 143741], [58293, 144730], [33403, 58294],
+    [33506, 58295], [33560, 58296], [58297, 147083], [58298, 159139],
+    [58299, 158469], [58300, 158615], [58301, 144846], [15807, 58302],
+    [33565, 58303], [21996, 58304], [33669, 58305], [17675, 58306],
+    [58307, 159141], [33708, 58308], 0, [33747, 58310], [58312, 159444],
+    [27223, 58313], [34138, 58314], [13462, 58315], [58316, 159298],
+    [33880, 58318], [58319, 154596], [33905, 58320], [15827, 58321],
+    [17636, 58322], [27303, 58323], [33866, 58324], [31064, 58326], 0,
+    [58328, 158614], [58329, 159351], [58330, 159299], [34014, 58331], 0,
+    [33681, 58333], [17568, 58334], [33939, 58335], [34020, 58336],
+    [58337, 154769], [16960, 58338], [58339, 154816], [17731, 58340],
+    [34100, 58341], [23282, 58342], 0, [17703, 58344], [34163, 58345],
+    [17686, 58346], [26559, 58347], [34326, 58348], [58349, 165413],
+    [58350, 165435], [34241, 58351], [58352, 159880], [34306, 58353],
+    [58354, 136578], [58355, 159949], [58356, 194994], [17770, 58357],
+    [34344, 58358], [13896, 58359], [58360, 137378], [21495, 58361],
+    [58362, 160666], [34430, 58363], 0, [58365, 172280], [34798, 58366],
+    [58367, 142375], [34737, 58368], [34778, 58369], [34831, 58370, 60990],
+    [22113, 58371], [34412, 58372], [26710, 58373], [17935, 58374],
+    [34885, 58375], [34886, 58376], [58377, 161248], [58378, 146873],
+    [58379, 161252], [34910, 58380], [34972, 58381], [18011, 58382],
+    [34996, 58383], [34997, 58384], [35013, 58386], [58388, 161551],
+    [35207, 58389], {s: 3}, [35239, 58393], [35260, 58394], [58395, 166437],
+    [35303, 58396], [58397, 162084], [58398, 162493], [35484, 58399],
+    [30611, 58400], [37374, 58401], [35472, 58402], [58403, 162393],
+    [31465, 58404], [58405, 162618], [18195, 58407], [58408, 162616],
+    [29052, 58409], [35596, 58410], [35615, 58411], [58412, 152624],
+    [58413, 152933], [35647, 58414], 0, [35661, 58416], [35497, 58417],
+    [58418, 150138], [35728, 58419], [35739, 58420], [35503, 58421],
+    [58422, 136927], [17941, 58423], [34895, 58424], [35995, 58425],
+    [58426, 163156], [58427, 163215], [58428, 195028], [14117, 58429],
+    [58430, 163155], [36054, 58431], [58432, 163224], [58433, 163261],
+    [36114, 58434], [36099, 58435], [58436, 137488], [36059, 58437],
+    [28764, 58438], [36113, 58439], [16080, 58441], 0, [36265, 58443],
+    [58444, 163842], [58445, 135188], [58446, 149898], [15228, 58447],
+    [58448, 164284], [58449, 160012], [31463, 58450], [36525, 58451],
+    [36534, 58452], [36547, 58453], [37588, 58454], [36633, 58455],
+    [36653, 58456], [58457, 164709], [58458, 164882], [36773, 58459],
+    [37635, 58460], [58461, 172703], [58462, 133712], [36787, 58463], 0,
+    [58465, 166366], [58466, 165181], [58467, 146875], [24312, 58468],
+    [58469, 143970], [36857, 58470], 0, [58474, 140069], [14720, 58475],
+    [58476, 159447], [36919, 58477], [58478, 165180], [58479, 162494],
+    [36961, 58480], [58481, 165228], [58482, 165387], [37032, 58483],
+    [58484, 165651], [37060, 58485], [58486, 165606], [37038, 58487], 0,
+    [37223, 58489], [37289, 58491], [37316, 58492], [31916, 58493],
+    [58494, 166195], [58495, 138889], [37390, 58496], [27807, 58497],
+    [37441, 58498], [37474, 58499], [58500, 153017], [58502, 166598],
+    [58503, 146587], [58504, 166668], [58505, 153051], [58506, 134449],
+    [37676, 58507], [37739, 58508], [58509, 166625], [58510, 166891],
+    [23235, 58512], [58513, 166626], [58514, 166629], [18789, 58515],
+    [37444, 58516], [58517, 166892], [58518, 166969], [58519, 166911],
+    [37747, 58520], [37979, 58521], [36540, 58522], [38277, 58523],
+    [38310, 58524], [37926, 58525], [38304, 58526], [28662, 58527],
+    [17081, 58528], [58530, 165592], [58531, 135804], [58532, 146990],
+    [18911, 58533], [27676, 58534], [38523, 58535], [38550, 58536],
+    [16748, 58537], [38563, 58538], [58539, 159445], [25050, 58540], 58541,
+    [30965, 58542], [58543, 166624], [38589, 58544], [21452, 58545],
+    [18849, 58546], [58547, 158904], [58548, 131700], [58549, 156688],
+    [58550, 168111], [58551, 168165], [58552, 150225], [58553, 137493],
+    [58554, 144138], [38705, 58555], [34370, 58556], [38710, 58557],
+    [18959, 58558], [17725, 58559], [17797, 58560], [58561, 150249],
+    [28789, 58562], [23361, 58563], [38683, 58564], 0, [58566, 168405],
+    [38743, 58567], [23370, 58568], [58569, 168427], [38751, 58570],
+    [37925, 58571], [20688, 58572], [58573, 143543], [58574, 143548],
+    [38793, 58575], [38815, 58576], [38833, 58577], [38846, 58578],
+    [38848, 58579], [38866, 58580], [38880, 58581], [58582, 152684],
+    [38894, 58583], [29724, 58584], [58585, 169011], 0, [38901, 58587],
+    [58588, 168989], [58589, 162170], [19153, 58590], [38964, 58591],
+    [38963, 58592], [38987, 58593], [39014, 58594], [15118, 58595],
+    [58596, 160117], [15697, 58597], [58598, 132656], [58599, 147804],
+    [58600, 153350], [39114, 58601], [39095, 58602], [39112, 58603],
+    [39111, 58604], [19199, 58605], [58606, 159015], [58607, 136915],
+    [21936, 58608], [39137, 58609], [39142, 58610], [39148, 58611],
+    [37752, 58612], [39225, 58613], [58614, 150057], [19314, 58615],
+    [58616, 170071], [58617, 170245], [39413, 58618], [39436, 58619],
+    [39483, 58620], [39440, 58621], [39512, 58622], [58623, 153381],
+    [14020, 58624], [58625, 168113], [58626, 170965], [39648, 58627],
+    [39650, 58628], [58629, 170757], [39668, 58630], [19470, 58631],
+    [39700, 58632], [39725, 58633], [58634, 165376], [20532, 58635],
+    [39732, 58636], [14531, 58638], [58639, 143485], [39760, 58640],
+    [39744, 58641], [58642, 171326], [23109, 58643], [58644, 137315],
+    [39822, 58645], [39938, 58647], [39935, 58648], [39948, 58649],
+    [58650, 171624], [40404, 58651], [58652, 171959], [58653, 172434],
+    [58654, 172459], [58655, 172257], [58656, 172323], [58657, 172511],
+    [40318, 58658], [40323, 58659], [58660, 172340], [40462, 58661],
+    [40388, 58663], [58665, 172435], [58666, 172576], [58667, 137531],
+    [58668, 172595], [40249, 58669], [58670, 172217], [58671, 172724],
+    [40592, 58672], [40597, 58673], [40606, 58674], [40610, 58675],
+    [19764, 58676], [40618, 58677], [40623, 58678], [58679, 148324],
+    [40641, 58680], [15200, 58681], [14821, 58682], [15645, 58683],
+    [20274, 58684], [14270, 58685], [58686, 166955], [40706, 58687],
+    [40712, 58688], [19350, 58689], [37924, 58690], [58691, 159138],
+    [40727, 58692, 60836], 0, [40761, 58694], [22175, 58695], [22154, 58696],
+    [40773, 58697], [39352, 58698], [58699, 168075], [38898, 58700],
+    [33919, 58701], 0, [40809, 58703], [31452, 58704], [40846, 58705],
+    [29206, 58706], [19390, 58707], [58708, 149877], [58709, 149947],
+    [29047, 58710], [58711, 150008], [58712, 148296], [58713, 150097],
+    [29598, 58714], [58715, 166874], [58716, 137466], [31135, 58717],
+    [58718, 166270], [58719, 167478], [37737, 58720], [37875, 58721],
+    [58722, 166468], [37612, 58723], [37761, 58724], [37835, 58725],
+    [58726, 166252], [58727, 148665], [29207, 58728], [16107, 58729],
+    [30578, 58730], [31299, 58731], [28880, 58732], [58733, 148595],
+    [58734, 148472], [29054, 58735], [58736, 137199], [28835, 58737],
+    [58738, 137406], [58739, 144793], [16071, 58740], [58741, 137349],
+    [58742, 152623], [58743, 137208], [14114, 58744], [58745, 136955],
+    [58746, 137273], [14049, 58747], [58748, 137076], [58749, 137425],
+    [58750, 155467], [14115, 58751], [58752, 136896], [22363, 58753],
+    [58754, 150053], [58755, 136190], [58756, 135848], [58757, 136134],
+    [58758, 136374], [34051, 58759, 58761], [58760, 145062], 0, [33877, 58762],
+    [58763, 149908], [58764, 160101], [58765, 146993], [58766, 152924],
+    [58767, 147195], [58768, 159826], [17652, 58769], [58770, 145134],
+    [58771, 170397], [58772, 159526], [26617, 58773], [14131, 58774],
+    [15381, 58775], [15847, 58776], [22636, 58777], [58778, 137506],
+    [26640, 58779], [16471, 58780], [58781, 145215], [58782, 147681],
+    [58783, 147595], [58784, 147727], [58785, 158753], [21707, 58786],
+    [22174, 58787], [58788, 157361], [22162, 58789], [58790, 135135],
+    [58791, 134056], [58792, 134669], 0, [58794, 166675], [37788, 58795],
+    [20216, 58796], [20779, 58797], [14361, 58798], [58799, 148534],
+    [20156, 58800], [58801, 132197], 0, [20299, 58803], [20362, 58804],
+    [58805, 153169], [23144, 58806], [58807, 131499], [58808, 132043],
+    [14745, 58809], [58810, 131850], [58811, 132116], [13365, 58812],
+    [20265, 58813], [58814, 131776], [58815, 167603], [58816, 131701],
+    [35546, 58817], [58818, 131596], [20120, 58819], [20685, 58820],
+    [20749, 58821], [20386, 58822], [20227, 58823], [58824, 150030],
+    [58825, 147082], [20290, 58826], [20526, 58827], [20588, 58828],
+    [20609, 58829], [20428, 58830], [20453, 58831], [20568, 58832],
+    [20732, 58833], [28278, 58838], [58839, 144789], [58840, 147001],
+    [58841, 147135], [28018, 58842], [58843, 137348], [58844, 147081],
+    [20904, 58845], [20931, 58846], [58847, 132576], [17629, 58848],
+    [58849, 132259], [58850, 132242], [58851, 132241], [36218, 58852],
+    [58853, 166556], [58854, 132878], [21081, 58855], [21156, 58856],
+    [58857, 133235], [21217, 58858], 0, [18042, 58860], [29068, 58861],
+    [58862, 148364], [58863, 134176], [58864, 149932], [58865, 135396],
+    [27089, 58866], [58867, 134685], 0, [16094, 58869], [29849, 58870],
+    [29716, 58871], [29782, 58872], [29592, 58873], [19342, 58874],
+    [58875, 150204], [58876, 147597], [21456, 58877], [13700, 58878],
+    [29199, 58879], [58880, 147657], [21940, 58881], [58882, 131909],
+    [21709, 58883], [58884, 134086], [22301, 58885], [37469, 58886],
+    [38644, 58887], [22493, 58889], [22413, 58890], [22399, 58891],
+    [13886, 58892], [22731, 58893], [23193, 58894], [58895, 166470],
+    [58896, 136954], [58897, 137071], [58898, 136976], [23084, 58899],
+    [22968, 58900], [23166, 58902], [23247, 58903], [23058, 58904],
+    [58905, 153926], [58906, 137715], [58907, 137313], [58908, 148117],
+    [14069, 58909], [27909, 58910], [29763, 58911], [23073, 58912],
+    [58913, 155267], [23169, 58914], [58915, 166871], [58916, 132115],
+    [37856, 58917], [29836, 58918], [58919, 135939], [28933, 58920],
+    [18802, 58921], [37896, 58922], [58923, 166395], [37821, 58924],
+    [14240, 58925], [23582, 58926], [23710, 58927], [24158, 58928],
+    [24136, 58929], [58930, 137622], [58931, 137596], [58932, 146158],
+    [24269, 58933], [23375, 58934], [58935, 137475], [58936, 137476],
+    [14081, 58937], [58938, 137376], [14045, 58939], [58940, 136958],
+    [14035, 58941], [33066, 58942], [58943, 166471], [58944, 138682],
+    [58945, 144498], [58946, 166312], [24332, 58947, 60916], [24334, 58948],
+    [58949, 137511], [58950, 137131], [23147, 58951], [58952, 137019],
+    [23364, 58953], [58955, 161277], [34912, 58956], [24702, 58957],
+    [58958, 141408], [58959, 140843], [24539, 58960], [16056, 58961],
+    [58962, 140719], [58963, 140734], [58964, 168072], [58965, 159603],
+    [25024, 58966], [58967, 131134], [58968, 131142], [58969, 140827],
+    [24985, 58970], [24984, 58971], [24693, 58972], [58973, 142491],
+    [58974, 142599], [58975, 149204], [58976, 168269], [25713, 58977],
+    [58978, 149093], [58979, 142186], [14889, 58980], [58981, 142114],
+    [58982, 144464], [58983, 170218], [58984, 142968], [25399, 58985],
+    [25782, 58987], [25393, 58988], [25553, 58989], [58990, 149987],
+    [58991, 142695], [25252, 58992], [58993, 142497], [25659, 58994],
+    [25963, 58995], [26994, 58996], [15348, 58997], [58998, 143502],
+    [58999, 144045], [59000, 149897], [59001, 144043], [21773, 59002],
+    [59003, 144096], [59004, 137433], [59005, 169023], [26318, 59006],
+    [59007, 144009], [59008, 143795], [15072, 59009], [59011, 152964],
+    [59012, 166690], [59013, 152975], [59014, 136956], [59015, 152923],
+    [59016, 152613], [30958, 59017], [59018, 143619], [59019, 137258],
+    [59020, 143924], [13412, 59021], [59022, 143887], [59023, 143746],
+    [59024, 148169], [26254, 59025], [59026, 159012], [26219, 59027],
+    [19347, 59028], [26160, 59029], [59030, 161904], [59031, 138731],
+    [26211, 59032], [59033, 144082], [59034, 144097], [26142, 59035],
+    [59036, 153714], [14545, 59037], [59038, 145466], [59039, 145340],
+    [15257, 59040], [59041, 145314], [59042, 144382], [29904, 59043],
+    [15254, 59044], [59046, 149034], [26806, 59047], 0, [15300, 59049],
+    [27326, 59050], [59052, 145365], [59053, 148615], [27187, 59054],
+    [27218, 59055], [27337, 59056], [27397, 59057], [59058, 137490],
+    [25873, 59059], [26776, 59060], [27212, 59061], [15319, 59062],
+    [27258, 59063], [27479, 59064], [59065, 147392], [59066, 146586],
+    [37792, 59067], [37618, 59068], [59069, 166890], [59070, 166603],
+    [37513, 59071], [59072, 163870], [59073, 166364], [37991, 59074],
+    [28069, 59075], [28427, 59076], 0, [59079, 147327], [15759, 59080],
+    [28164, 59081], [59082, 147516], [23101, 59083], [28170, 59084],
+    [22599, 59085], [27940, 59086], [30786, 59087], [28987, 59088],
+    [59089, 148250], [59090, 148086], [28913, 59091], [29264, 59092, 61085],
+    [29319, 59093], [29332, 59094], [59095, 149391], [59096, 149285],
+    [20857, 59097], [59098, 150180], [59099, 132587], [29818, 59100],
+    [59101, 147192], [59102, 144991], [59103, 150090], [59104, 149783],
+    [59105, 155617], [16134, 59106], [16049, 59107], [59108, 150239],
+    [59109, 166947], [59110, 147253], [24743, 59111], [16115, 59112],
+    [29900, 59113], [29756, 59114], [37767, 59115], [29751, 59116],
+    [17567, 59117], [59118, 159210], [17745, 59119], [30083, 59120],
+    [16227, 59121], [59122, 150745], [59123, 150790], [16216, 59124],
+    [30037, 59125], [30323, 59126], [59127, 173510], 0, [29800, 59129, 61070],
+    [59130, 166604], [59131, 149931], [59132, 149902], [15099, 59133],
+    [15821, 59134], [59135, 150094], [16127, 59136], [59137, 149957],
+    [59138, 149747], [37370, 59139], [22322, 59140], [37698, 59141],
+    [59142, 166627], [59143, 137316], [20703, 59144], [59145, 152097],
+    [59146, 152039], [30584, 59147], [59148, 143922], [30478, 59149],
+    [30479, 59150], [30587, 59151], [59152, 149143], [59153, 145281],
+    [14942, 59154], [59155, 149744], [29752, 59156], [29851, 59157],
+    [16063, 59158], [59159, 150202], [59160, 150215], [16584, 59161],
+    [59162, 150166], [59163, 156078], [37639, 59164], [59165, 152961],
+    [30750, 59166], [30861, 59167], [30856, 59168], [30930, 59169],
+    [29648, 59170], [31065, 59171], [59172, 161601], [59173, 153315],
+    [16654, 59174], 0, 0, [31141, 59177], [27181, 59178], [59179, 147194],
+    [31290, 59180], [31220, 59181], [16750, 59182], [59183, 136934],
+    [16690, 59184], [37429, 59185], [31217, 59186], [59187, 134476],
+    [59188, 149900], [59189, 131737], [59190, 146874], [59191, 137070],
+    [13719, 59192], [21867, 59193], [13680, 59194], [13994, 59195],
+    [59196, 131540], [59197, 134157], [31458, 59198], [23129, 59199],
+    [59200, 141045], [59201, 154287], [59202, 154268], [23053, 59203],
+    [59204, 131675], [30960, 59205], [23082, 59206], [59207, 154566],
+    [31486, 59208], [16889, 59209], [31837, 59210], [31853, 59211],
+    [16913, 59212], [59213, 154547], [59214, 155324], [59215, 155302],
+    [31949, 59216], [59217, 150009], [59218, 137136], [31886, 59219],
+    [31868, 59220], [31918, 59221], [27314, 59222], [32220, 59223],
+    [32263, 59224], [32211, 59225], [32590, 59226], [59227, 156257],
+    [59228, 155996], [59229, 162632], [32151, 59230], [59231, 155266],
+    [17002, 59232], [59233, 158581], [59234, 133398], [26582, 59235],
+    [59236, 131150], [59237, 144847], [22468, 59238], [59239, 156690],
+    [59240, 156664], [32733, 59242], [31527, 59243], [59244, 133164],
+    [59245, 154345], [59246, 154947], [31500, 59247], [59248, 155150],
+    [39398, 59249], [34373, 59250], [39523, 59251], [27164, 59252],
+    [59253, 144447], [59255, 150007], [59256, 157101], [39455, 59257],
+    [59258, 157088], 0, [59260, 160039], [59261, 158929], [17642, 59262],
+    [33079, 59263], [17410, 59264], [32966, 59265], [33033, 59266],
+    [33090, 59267], [59268, 157620], [39107, 59269], [59270, 158274],
+    [33378, 59271], [33381, 59272], [59273, 158289], [33875, 59274],
+    [59275, 159143], [34320, 59276], [59277, 160283], [23174, 59278],
+    [16767, 59279], [59280, 137280], [23339, 59281], [59282, 137377],
+    [23268, 59283], [59284, 137432], [34464, 59285], [59286, 195004],
+    [59287, 146831], [34861, 59288], [59289, 160802], [23042, 59290],
+    [34926, 59291], [20293, 59292], [34951, 59293], [35007, 59294],
+    [35046, 59295], [35173, 59296], [35149, 59297], [59298, 153219],
+    [35156, 59299], [59300, 161669], [59301, 161668], [59302, 166901],
+    [59303, 166873], [59304, 166812], [59305, 166393], [16045, 59306],
+    [33955, 59307], [18165, 59308], [18127, 59309], [14322, 59310],
+    [35389, 59311], [35356, 59312], [59313, 169032], [24397, 59314],
+    [37419, 59315], [59316, 148100], [26068, 59317], [28969, 59318],
+    [28868, 59319], [59320, 137285], [40301, 59321], [35999, 59322],
+    [36073, 59323], [59324, 163292], [22938, 59325], [30659, 59326],
+    [23024, 59327], [14036, 59329], [36394, 59330], [36519, 59331],
+    [59332, 150537], [36656, 59333], [36682, 59334], [17140, 59335],
+    [27736, 59336], [28603, 59337], [59338, 140065], [18587, 59339],
+    [28537, 59340], [28299, 59341], [59342, 137178], [39913, 59343],
+    [14005, 59344], [59345, 149807], [37051, 59346], 0, [21873, 59348],
+    [18694, 59349], [37307, 59350], [37892, 59351], [59352, 166475],
+    [16482, 59353], [59354, 166652], [37927, 59355], [59356, 166941],
+    [59357, 166971], [34021, 59358], [35371, 59359], [38297, 59360],
+    [38311, 59361], [38295, 59362], [38294, 59363], [59364, 167220],
+    [29765, 59365], [16066, 59366], [59367, 149759], [59368, 150082],
+    [59369, 148458], [16103, 59370], [59371, 143909], [38543, 59372],
+    [59373, 167655], [59374, 167526], [59375, 167525], [16076, 59376],
+    [59377, 149997], [59378, 150136], [59379, 147438], [29714, 59380],
+    [29803, 59381], [16124, 59382], [38721, 59383], [59384, 168112],
+    [26695, 59385], [18973, 59386], [59387, 168083], [59388, 153567], 0,
+    [37736, 59390], [59391, 166281], [59392, 166950], [59393, 166703],
+    [59394, 156606], [37562, 59395], [23313, 59396], [35689, 59397],
+    [18748, 59398], [29689, 59399], [59400, 147995], [38811, 59401], 0,
+    [39224, 59403], [59404, 134950], [24001, 59405], [59406, 166853],
+    [59407, 150194], [38943, 59408], [59409, 169178], [37622, 59410],
+    [59411, 169431], [37349, 59412], [17600, 59413], [59414, 166736],
+    [59415, 150119], [59416, 166756], [39132, 59417], [59418, 166469],
+    [16128, 59419], [37418, 59420], [18725, 59421], [33812, 59422],
+    [39227, 59423], [39245, 59424], [59425, 162566], [15869, 59426], 0,
+    [19311, 59428], [39338, 59429], [39516, 59430], [59431, 166757],
+    [59432, 153800], [27279, 59433], [39457, 59434], [23294, 59435],
+    [39471, 59436], [59437, 170225], [19344, 59438], [59439, 170312],
+    [39356, 59440], [19389, 59441], [19351, 59442], [37757, 59443],
+    [22642, 59444], [59445, 135938], [22562, 59446], [59447, 149944],
+    [59448, 136424], [30788, 59449], [59450, 141087], [59451, 146872],
+    [26821, 59452], [15741, 59453], [37976, 59454], [14631, 59455],
+    [24912, 59456], [59457, 141185], [59458, 141675], [24839, 59459],
+    [40015, 59460], [40019, 59461], [40059, 59462], [39989, 59463],
+    [39952, 59464], [39807, 59465], [39887, 59466], [59467, 171565],
+    [39839, 59468], [59469, 172533], [59470, 172286], [40225, 59471],
+    [19630, 59472], [59473, 147716], [40472, 59474], [19632, 59475],
+    [40204, 59476], [59477, 172468], [59478, 172269], [59479, 172275],
+    [59480, 170287], [40357, 59481], [33981, 59482], [59483, 159250],
+    [59484, 159711], [59485, 158594], [34300, 59486], [17715, 59487],
+    [59488, 159140], [59489, 159364], [59490, 159216], [33824, 59491],
+    [34286, 59492], [59493, 159232], [59494, 145367], [59495, 155748],
+    [31202, 59496], [59497, 144796], [59498, 144960], [59500, 149982],
+    [15714, 59501], [37851, 59502], [37566, 59503], [37704, 59504],
+    [59505, 131775], [30905, 59506], [37495, 59507], [37965, 59508],
+    [20452, 59509], [13376, 59510], [36964, 59511], [59512, 152925],
+    [30781, 59513], [30804, 59514], [30902, 59515], [30795, 59516],
+    [59517, 137047], [59518, 143817], [59519, 149825], [13978, 59520],
+    [20338, 59521], [28634, 59522], [28633, 59523], 0, [28702, 59524, 59525],
+    [21524, 59526], [59527, 147893], [22459, 59528], [22771, 59529],
+    [22410, 59530], [40214, 59531], [22487, 59532], [28980, 59533],
+    [13487, 59534], [59535, 147884], [29163, 59536], [59537, 158784],
+    [59538, 151447], 0, [59540, 137141], [59541, 166473], [24844, 59542],
+    [23246, 59543], [23051, 59544], [17084, 59545], [59546, 148616],
+    [14124, 59547], [19323, 59548], [59549, 166396], [37819, 59550],
+    [37816, 59551], [59552, 137430], [59553, 134941], [33906, 59554],
+    [59555, 158912], [59556, 136211], [59557, 148218], [59558, 142374],
+    [59559, 148417], [22932, 59560], [59561, 146871], [59562, 157505],
+    [32168, 59563], [59564, 155995], [59565, 155812], [59566, 149945],
+    [59567, 149899], [59568, 166394], [37605, 59569], [29666, 59570],
+    [16105, 59571], [29876, 59572], [59573, 166755], [59574, 137375],
+    [16097, 59575], [59576, 150195], [27352, 59577], [29683, 59578],
+    [29691, 59579], [16086, 59580], [59581, 150078], [59582, 150164],
+    [59583, 137177], [59584, 150118], [59585, 132007], [59586, 136228],
+    [59587, 149989], [29768, 59588], [59589, 149782], [28837, 59590],
+    [59591, 149878], [37508, 59592], [29670, 59593], [37727, 59594],
+    [59595, 132350], [37681, 59596], [59597, 166606], [59598, 166422],
+    [37766, 59599], [59600, 166887], [59601, 153045], [18741, 59602],
+    [59603, 166530], [29035, 59604], [59605, 149827], [59606, 134399],
+    [22180, 59607], [59608, 132634], [59609, 134123], [59610, 134328],
+    [21762, 59611], [31172, 59612], [59613, 137210], [32254, 59614],
+    [59615, 136898], [59616, 150096], [59617, 137298], [17710, 59618],
+    [37889, 59619], [14090, 59620], [59621, 166592], [59622, 149933],
+    [22960, 59623], [59624, 137407], [59625, 137347], [59626, 160900],
+    [23201, 59627], [14050, 59628], [59629, 146779], [14000, 59630],
+    [37471, 59631], [23161, 59632], [59633, 166529], [59634, 137314],
+    [37748, 59635], [15565, 59636], [59637, 133812], [19094, 59638],
+    [14730, 59639], [20724, 59640], [15721, 59641], [15692, 59642],
+    [59643, 136092], [29045, 59644], [17147, 59645], [59646, 164376],
+    [28175, 59647], [59648, 168164], [17643, 59649], [27991, 59650],
+    [59651, 163407], [28775, 59652], [27823, 59653], [15574, 59654],
+    [59655, 147437], [59656, 146989], [28162, 59657], [28428, 59658],
+    [15727, 59659], [59660, 132085], [30033, 59661], [14012, 59662],
+    [13512, 59663], [18048, 59664], [16090, 59665], [18545, 59666],
+    [22980, 59667], [37486, 59668], [18750, 59669], [36673, 59670],
+    [59671, 166940], [59672, 158656], [22546, 59673], [22472, 59674],
+    [14038, 59675], [59676, 136274], [28926, 59677], [59678, 148322],
+    [59679, 150129], [59680, 143331], [59681, 135856], [59682, 140221],
+    [26809, 59683], [26983, 59684], [59685, 136088], [59686, 144613],
+    [59687, 162804], [59688, 145119], [59689, 166531], [59690, 145366],
+    [59691, 144378], [59692, 150687], [27162, 59693], [59694, 145069],
+    [59695, 158903], [33854, 59696], [17631, 59697], [17614, 59698],
+    [59699, 159014], [59700, 159057], [59701, 158850], [59702, 159710], 0, 0,
+    [33597, 59705], [59706, 137018], [33773, 59707], [59708, 158848],
+    [59709, 159827], [59710, 137179], [22921, 59711], [23170, 59712],
+    [59713, 137139], [23137, 59714], [23153, 59715], [59716, 137477],
+    [59717, 147964], [14125, 59718], [23023, 59719], [59720, 137020],
+    [14023, 59721], [29070, 59722], [37776, 59723], [26266, 59724],
+    [59725, 148133], [23150, 59726], [23083, 59727], [59728, 148115],
+    [27179, 59729], [59730, 147193], [59731, 161590], [59732, 148571],
+    [59733, 148170], [28957, 59734], [59735, 148057], [59736, 166369],
+    [20400, 59737], [59738, 159016], [23746, 59739], [59740, 148686],
+    [59741, 163405], [59742, 148413], [27148, 59743], [59744, 148054],
+    [59745, 135940], 0, [28979, 59747], [59748, 148457], [15781, 59749],
+    [27871, 59750], [59751, 194597], [23019, 59754], [24412, 59757],
+    [59764, 144128], [31955, 59776], [59783, 162548], [59786, 153334],
+    [59790, 162584], [36972, 59791], [33270, 59795], [30476, 59797],
+    [27810, 59799], [22269, 59800], [22633, 59828], [26465, 59832],
+    [23646, 59838], [22770, 59841], [28857, 59843], [26627, 59853],
+    [36795, 59859], [36796, 59861], [20001, 59871], [31545, 59898],
+    [15820, 59902], [29482, 57990, 59909], [30048, 59912], [22586, 59920],
+    [33446, 59932], [27018, 59940], [24803, 59944], [20206, 59984],
+    [39364, 60002], [40639, 60023], [21249, 60025], [26528, 60038],
+    [24808, 60046], [20916, 60053], [31363, 60064], [39994, 60075],
+    [31432, 60093], [26906, 60098], [22956, 60100], [22592, 60102],
+    [21610, 60114], [24807, 60123], [22138, 60125], [26965, 60132],
+    [39983, 60133], [34725, 60134], [23584, 60141], [24075, 60143],
+    [26398, 60147], [33965, 60157], [35713, 60161], [20088, 60166],
+    [25283, 60176], [26709, 60180], 0, [33533, 60190], [35237, 60194],
+    [36768, 60196], [38840, 60198], [38983, 60200], [39613, 60201],
+    [24497, 60218], [26184, 60219], [26303, 60220], [60221, 162425], 0,
+    [60225, 149946], 0, 0, [60230, 131910], [26382, 60232], [26904, 60233],
+    [60235, 161367], [60236, 155618], [60239, 161278], [60240, 139418],
+    [18640, 60241], [19128, 60242], [60244, 166554], [60247, 147515],
+    [60250, 150085], [60251, 132554], [20946, 60252], [60253, 132625],
+    [22943, 60254], [60255, 138920], [15294, 60256], [60257, 146687],
+    [14747, 60262], [60264, 165352], [60265, 170441], [14178, 60266],
+    [60267, 139715], [35678, 60268], [60269, 166734], 0, [29193, 60274],
+    [60276, 134264], [60280, 132985], [36570, 60281], [21135, 60283],
+    [29041, 60285], [60288, 147274], [60289, 150183], [21948, 60290],
+    [60293, 158546], [13427, 60295], [60297, 161330], [18200, 60299],
+    [60303, 149823], [20582, 60305], [13563, 60306], [60307, 144332], 0,
+    [18300, 60310], [60311, 166216], [60315, 138640], 0, [60320, 162834],
+    [36950, 60321], [60323, 151450], [35682, 60324], [23899, 60327],
+    [60328, 158711], 0, [60331, 137500], [35562, 60332], [60333, 150006],
+    [60335, 147439], [19392, 60337], [60340, 141083], [37989, 60341],
+    [60342, 153569], [24981, 60343], [23079, 60344], [60345, 194765], 0,
+    [60348, 148769], [20074, 60350], [60351, 149812], [38486, 60352],
+    [28047, 60353], [60354, 158909], [35191, 60356], [60359, 156689], 0,
+    [31554, 60363], [60364, 168128], [60365, 133649], 0, [31301, 60369],
+    [39462, 60372], [13919, 60374], [60375, 156777], [60376, 131105],
+    [31107, 60377], [23852, 60380], [60381, 144665], 0, [18128, 60384],
+    [30011, 60386], [34917, 60387], [22710, 60389], [14108, 60390],
+    [60391, 140685], [15444, 60394], [37505, 60397], [60398, 139642],
+    [37680, 60400], [60402, 149968], [27705, 60403], [60406, 134904],
+    [34855, 60407], [35061, 60408], [60409, 141606], [60410, 164979],
+    [60411, 137137], [28344, 60412], [60413, 150058], [60414, 137248],
+    [14756, 60415], 0, 0, [17727, 60419], [26294, 60420], [60421, 171181],
+    [60422, 170148], [35139, 60423], [16607, 60427], [60428, 136714],
+    [14753, 60429], [60430, 145199], [60431, 164072], [60432, 136133],
+    [29101, 60433], [33638, 60434], [60436, 168360], 0, [19639, 60438],
+    [60439, 159919], [60440, 166315], [60445, 147834], [31555, 60446],
+    [31102, 60447], [28597, 60449], [60450, 172767], [27139, 60451],
+    [60452, 164632], [21410, 60453], [60454, 159239], [37823, 60455],
+    [26678, 60456], [38749, 59389, 60457], [60458, 164207], [60460, 158133],
+    [60461, 136173], [60462, 143919], [23941, 60464], [60465, 166960],
+    [22293, 60467], [38947, 60468], [60469, 166217], [23979, 60470],
+    [60471, 149896], [26046, 60472], [27093, 60473], [21458, 60474],
+    [60475, 150181], [60476, 147329], [15377, 60477], [26422, 60478],
+    [60482, 139169], [13770, 60490], [18682, 60493], 0, [30728, 60496],
+    [37461, 60497], [17394, 60499], [17375, 60501], [23032, 60505], 0,
+    [22155, 60518], [60520, 169449], [36882, 60541], [21953, 60546],
+    [17673, 60551], [32383, 60552], [28502, 60553], [27313, 60554],
+    [13540, 60556], [60558, 161949], [14138, 60559], 0, [60562, 163876],
+    [60565, 162366], [15851, 60567], [60569, 146615], [60574, 156248],
+    [22207, 60575], [36366, 60577], [23405, 60578], [25566, 60581], 0,
+    [25904, 60585], [22061, 60586], [21530, 60588], [60591, 171416],
+    [19581, 60592], [22050, 60593], [22046, 60594], [32585, 60595],
+    [22901, 60597], [60598, 146752], [34672, 60599], [33047, 60604],
+    [40286, 60605], [36120, 60606], [30267, 60607], [40005, 60608],
+    [30286, 60609], [30649, 60610], [37701, 60611], [21554, 60612],
+    [33096, 60613], [33527, 60614], [22053, 60615], [33074, 60616],
+    [33816, 60617], [32957, 60618], [21994, 60619], [31074, 60620],
+    [22083, 60621], [21526, 60622], [60623, 134813], [13774, 60624],
+    [22021, 57509, 60625], [22001, 60626], [26353, 60627], [60628, 164578],
+    [13869, 60629], [30004, 60630], [22000, 60631], [21946, 60632],
+    [21655, 60633], [21874, 60634], [60635, 134209], [60636, 134294],
+    [24272, 57652, 60637], [60639, 134774], [60640, 142434], [60641, 134818],
+    [40619, 60642], [32090, 60643], 0, [60645, 135285], [25245, 60646],
+    [38765, 60647], [21652, 60648], [36045, 60649], [29174, 60650],
+    [37238, 60651], [25596, 60652], [25529, 60653], [25598, 60654],
+    [21865, 60655], [60656, 142147], [40050, 60657], [60658, 143027],
+    [20890, 60659], [13535, 60660], [60661, 134567], [20903, 60662],
+    [21581, 60663], [21790, 60664], [21779, 60665], [30310, 60666],
+    [36397, 60667], [60668, 157834], [30129, 60669], [32950, 60670],
+    [34820, 60671], 0, [35015, 60673], [33206, 60674], [33820, 60675],
+    [17644, 60677], [29444, 60678], [33547, 60681], [22139, 60683],
+    [37232, 60690], [37384, 60692], [60696, 134905], [29286, 60697],
+    [18254, 60699], [60701, 163833], [16634, 60703], [40029, 60704],
+    [25887, 60705], [18675, 60707], [60708, 149472], [60709, 171388], 0,
+    [60713, 161187], 60715, [60716, 155720], [29091, 60718], [32398, 60719],
+    [40272, 60720], [13687, 60723], [27826, 60725], [21351, 60726],
+    [14812, 60728], [60731, 149016], [33325, 60734], [21579, 60735], 60739,
+    [14930, 60740], [29556, 60742], [60743, 171692], [19721, 60744],
+    [39917, 60745], 0, [19547, 60748], [60751, 171998], [33884, 60752],
+    [60754, 160434], [25390, 60757], [32037, 60758], [14890, 60761],
+    [36872, 60762], [21196, 60763], [15988, 60764], [13946, 60765],
+    [17897, 60766], [60767, 132238], [30272, 60768], [23280, 60769],
+    [60770, 134838], [30842, 60771], [18358, 60772], [22695, 60773],
+    [16575, 60774], [22140, 60775], [39819, 60776], [23924, 60777],
+    [30292, 60778], [60779, 173108], [40581, 60780], [19681, 60781], 0,
+    [14331, 60783], [24857, 60784], [60786, 148466], 60787, [22109, 60788],
+    [60792, 171526], [21044, 60793], [13741, 60795], 0, [40316, 60797],
+    [31830, 60798], [39737, 60799], [22494, 60800], [23635, 60802],
+    [25811, 60803], [60804, 169168], [60805, 156469], [34477, 60807],
+    [60808, 134440], [60811, 134513], 60812, [20990, 60813], [60814, 139023],
+    [23950, 60815], [38659, 60816], [60817, 138705], [40577, 60818],
+    [36940, 60819], [31519, 60820], [39682, 60821], [23761, 60822],
+    [31651, 60823], [25192, 60824], [25397, 60825], [39679, 60826],
+    [31695, 60827], [39722, 60828], [31870, 60829], 0, [31810, 60831],
+    [31878, 60832], [39957, 60833], [31740, 60834], [39689, 60835], 0, 39982,
+    [40794, 60839], [21875, 60840], [23491, 60841], [20477, 60842],
+    [40600, 60843], [20466, 60844], [21088, 60845], [21201, 60847],
+    [22375, 60848], [20566, 60849], [22967, 60850], [24082, 60851],
+    [38856, 60852], [40363, 60853], [36700, 60854], [21609, 60855],
+    [38836, 60856], [39232, 60857], [38842, 60858], [21292, 60859],
+    [24880, 60860], [26924, 60861], [21466, 60862], [39946, 60863],
+    [40194, 60864], [19515, 60865], [38465, 60866], [27008, 60867],
+    [20646, 60868], [30022, 60869], [60870, 137069], [39386, 60871],
+    [21107, 60872], 60873, [37209, 60874], [38529, 60875], [37212, 60876],
+    60877, [37201, 60878], [60879, 167575], [25471, 60880], [27338, 60882],
+    [22033, 60883], [37262, 60884], [30074, 60885], [25221, 60886],
+    [29519, 60888], [31856, 60889], [60890, 154657], 60892, [30422, 60894],
+    [39837, 60895], [20010, 60896], [60897, 134356], [33726, 60898],
+    [34882, 60899], 60900, [23626, 60901], [27072, 60902], 0, 0,
+    [21023, 60905], [24053, 60906], [20174, 60907], [27697, 60908],
+    [60909, 131570], [20281, 60910], [21660, 60911], 0, [21146, 60913],
+    [36226, 60914], [13822, 60915], 0, [13811, 60917], 60918, [27474, 60919],
+    [37244, 60920], [40869, 60921], [39831, 60922], [38958, 60923],
+    [39092, 60924], [39610, 60925], [40616, 60926], [40580, 60927],
+    [31508, 60929], 60930, [27642, 60931], [34840, 60932], [32632, 60933],
+    60934, [22048, 60935], [60936, 173642], [36471, 60937], [40787, 60938],
+    60939, [36308, 60940], [36431, 60941], [40476, 60942], [36353, 60943],
+    [25218, 60944], [60945, 164733], [36392, 60946], [36469, 60947],
+    [31443, 60948], [31294, 60950], [30936, 60951], [27882, 60952],
+    [35431, 60953], [30215, 60954], [40742, 60956], [27854, 60957],
+    [34774, 60958], [30147, 60959], [60960, 172722], [30803, 60961],
+    [36108, 60963], [29410, 60964], [29553, 60965], [35629, 60966],
+    [29442, 60967], [29937, 60968], [36075, 60969], [60970, 150203],
+    [34351, 60971], [24506, 60972], [34976, 60973], [17591, 60974], 60975,
+    [60977, 159237], 60978, [35454, 60979], [60980, 140571], 60981,
+    [24829, 60982], [30311, 60983], [39639, 60984], [40260, 60985],
+    [37742, 58859, 60986], [39823, 60987], [34805, 60988], 60989, 0,
+    [36087, 60991], [29484, 60992], [38689, 60993], [39856, 60994],
+    [13782, 60995], [29362, 60996], [19463, 60997], [31825, 60998],
+    [39242, 60999], [24921, 61001], [19460, 61002], [40598, 61003],
+    [24957, 61004], 61005, [22367, 61006], [24943, 61007], [25254, 61008],
+    [25145, 61009], 0, [14940, 61011], [25058, 61012], [21418, 61013],
+    [25444, 61015], [26626, 61016], [13778, 61017], [23895, 61018],
+    [36826, 61020], [61021, 167481], 61022, [20697, 61023], [30982, 61025],
+    [21298, 61026], [38456, 61027], [61028, 134971], [16485, 61029], 61030,
+    [30718, 61031], 61032, [31938, 61033], [61034, 155418], [31962, 61035],
+    [31277, 61036], [32870, 61037], [32867, 61038], [32077, 61039],
+    [29957, 61040], [29938, 61041], [35220, 61042], [33306, 61043],
+    [26380, 61044], [32866, 61045], [61046, 160902], [32859, 61047],
+    [29936, 61048], [33027, 61049], [30500, 61050], [35209, 61051],
+    [61052, 157644], [30035, 61053], [34729, 61055], [34766, 61056],
+    [33224, 61057], [34700, 61058], [35401, 61059], [36013, 61060],
+    [35651, 61061], [30507, 61062], [29944, 61063], [34010, 61064],
+    [27058, 61066], [36262, 61067], 61068, [35241, 58392, 61069], 0,
+    [28089, 61071], [34753, 61072], [61073, 147473], [29927, 61074],
+    [15835, 61075], [29046, 61076], [24740, 57702, 61077], [24988, 61078],
+    [15569, 61079], 0, [24695, 61081], 61082, [32625, 61083], 0,
+    [24809, 61086], [19326, 61087], [57344, 132423], [37595, 57345],
+    [57346, 132575], [57347, 147397], [34124, 57348], [17077, 57349],
+    [29679, 57350], [20917, 57351], [13897, 57352], [57353, 149826],
+    [57354, 166372], [37700, 57355], [57356, 137691], [33518, 57357],
+    [57358, 146632], [30780, 57359], [26436, 57360], [25311, 57361],
+    [57362, 149811], [57363, 166314], [57364, 131744], [57365, 158643],
+    [57366, 135941], [20395, 57367], [57368, 140525], [20488, 57369],
+    [57370, 159017], [57371, 162436], [57372, 144896], [57373, 150193],
+    [57374, 140563], 0, [57376, 131966], [24484, 57377], [57378, 131968],
+    [57379, 131911], [28379, 57380], [57381, 132127], 20702, [20737, 57383],
+    [13434, 57384], [20750, 57385], [39020, 57386], [14147, 57387],
+    [33814, 57388], [57389, 149924], [57390, 132231], [20832, 57391],
+    [57392, 144308], [20842, 57393], [57394, 134143], [57395, 139516],
+    [57396, 131813], [57397, 140592], [57398, 132494], [57399, 143923],
+    [57400, 137603], [23426, 57401], [34685, 57402], [57403, 132531],
+    [57404, 146585], [20914, 57405], [20920, 57406], [40244, 57407],
+    [20937, 57408], [20943, 57409], [20945, 57410], [15580, 57411],
+    [20947, 57412], [57413, 150182], [20915, 57414], 0, 0, [20973, 57417],
+    [33741, 57418], [26942, 57419], [57420, 145197], [24443, 57421],
+    [21003, 57422], [21030, 57423], [21052, 57424], [21173, 57425],
+    [21079, 57426], [21140, 57427], [21177, 57428], [21189, 57429],
+    [31765, 57430], [34114, 57431], [21216, 57432], [34317, 57433],
+    [57434, 158483], 0, [57436, 166622], [21833, 57437], [28377, 57438],
+    [57439, 147328], [57440, 133460], [57441, 147436], [21299, 57442], 0,
+    [57444, 134114], [27851, 57445], [57446, 136998], [26651, 57447],
+    [29653, 57448], [24650, 57449], [16042, 57450], [14540, 57451],
+    [57452, 136936], [29149, 57453], [17570, 57454], [21357, 57455],
+    [21364, 57456], [57457, 165547], [21374, 57458], 0, [57460, 136598],
+    [57461, 136723], [30694, 57462], [21395, 57463], [57464, 166555],
+    [21408, 57465], [21419, 57466], [21422, 57467], [29607, 57468],
+    [57469, 153458], [16217, 57470], [29596, 57471], [21441, 57472],
+    [21445, 57473], [27721, 57474], [20041, 57475], [22526, 57476],
+    [21465, 57477], [15019, 57478], [57479, 134031], [21472, 57480],
+    [57481, 147435], [57482, 142755], [21494, 57483], [57484, 134263],
+    [21523, 57485], [28793, 57486], [21803, 57487], [26199, 57488],
+    [27995, 57489], [21613, 57490], [57491, 158547], [57492, 134516],
+    [21853, 57493], [21647, 57494], [21668, 57495], [18342, 57496],
+    [57497, 136973], [57498, 134877], [15796, 57499], [57500, 134477],
+    [57501, 166332], [57502, 140952], [21831, 57503], [19693, 57504],
+    [21551, 57505], [29719, 57506], [21894, 57507], [21929, 57508], 0,
+    [57510, 137431], [57511, 147514], [17746, 57512], [57513, 148533],
+    [26291, 57514], [57515, 135348], [22071, 57516], [26317, 57517],
+    [57518, 144010], [26276, 57519], 0, [22093, 57521], [22095, 57522],
+    [30961, 57523], [22257, 57524], [38791, 57525], [21502, 57526],
+    [22272, 57527], [22255, 57528], [22253, 57529], [57530, 166758],
+    [13859, 57531], [57532, 135759], [22342, 57533], [57534, 147877],
+    [27758, 57535], [28811, 57536], [22338, 57537], [14001, 57538],
+    [57539, 158846], [22502, 57540], [57541, 136214], [22531, 57542],
+    [57543, 136276], [57544, 148323], [22566, 57545], [57546, 150517], 0,
+    [22698, 57548], [13665, 57549], [22752, 57550], [22748, 57551],
+    [57552, 135740], [22779, 57553], [23551, 57554], [22339, 57555],
+    [57556, 172368], [57557, 148088], [37843, 57558], [13729, 57559],
+    [22815, 57560], [26790, 57561], [14019, 57562], [28249, 57563],
+    [57564, 136766], [23076, 57565], 0, [57567, 136850], [34053, 57568],
+    [22985, 57569], [57570, 134478], [57571, 158849], [57572, 159018],
+    [57573, 137180], [23001, 57574], [57575, 137211], [57576, 137138],
+    [57577, 159142], [28017, 57578], [57579, 137256], [57580, 136917],
+    [23033, 57581], [57582, 159301], [23211, 57583], [23139, 57584],
+    [14054, 57585], [57586, 149929], 0, [14088, 57588], [23190, 57589],
+    [29797, 57590], [23251, 57591], [57592, 159649], [57593, 140628],
+    [57595, 137489], [14130, 57596], [57597, 136888], [24195, 57598],
+    [21200, 57599], [23414, 57600], [25992, 57601], [23420, 57602],
+    [57603, 162318], [16388, 57604], [18525, 57605], [57606, 131588],
+    [23509, 57607], [57609, 137780], [57610, 154060], [57611, 132517],
+    [23539, 57612], [23453, 57613], [19728, 57614], [23557, 57615],
+    [57616, 138052], [23571, 57617], [29646, 57618], [23572, 57619],
+    [57620, 138405], [57621, 158504], [23625, 57622], [18653, 57623],
+    [23685, 57624], [23785, 57625], [23791, 57626], [23947, 57627],
+    [57628, 138745], [57629, 138807], [23824, 57630], [23832, 57631],
+    [23878, 57632], [57633, 138916], [23738, 57634], [24023, 57635],
+    [33532, 57636], [14381, 57637], [57638, 149761], [57639, 139337],
+    [57640, 139635], [33415, 57641], [14390, 57642], [15298, 57643],
+    [24110, 57644], [27274, 57645], 0, 57647, [57648, 148668], [57649, 134355],
+    [21414, 57650], [20151, 57651], 0, [21416, 57653], [57654, 137073],
+    [24073, 57655], 57656, [57657, 164994], [24313, 57658], [24315, 57659],
+    [14496, 57660], [24316, 57661], [26686, 57662], [37915, 57663],
+    [24333, 57664], [57665, 131521], [57666, 194708], [15070, 57667],
+    [57669, 135994], [24378, 57670], [57671, 157832], [57672, 140240],
+    [57674, 140401], [24419, 57675], [57677, 159342], [24434, 57678],
+    [37696, 57679], [57680, 166454], [24487, 57681], [23990, 57682],
+    [15711, 57683], [57684, 152144], [57685, 139114], [57686, 159992],
+    [57687, 140904], [37334, 57688], [57689, 131742], [57690, 166441],
+    [24625, 57691], [26245, 57692], [14691, 57694], [15815, 57695],
+    [13881, 57696], [22416, 57697], [57698, 141236], [31089, 57699],
+    [15936, 57700], [24734, 57701], 0, 0, [57704, 149890], [57705, 149903],
+    [57706, 162387], [29860, 57707], [20705, 57708], [23200, 57709],
+    [24932, 57710], [24898, 57712], [57713, 194726], [57714, 159442],
+    [24961, 57715], [20980, 57716], [57717, 132694], [24967, 57718],
+    [23466, 57719], [57720, 147383], [57721, 141407], [25043, 57722],
+    [57723, 166813], [57724, 170333], [25040, 57725], [14642, 57726],
+    [57727, 141696], [57728, 141505], [24611, 57729], [24924, 57730],
+    [25886, 57731], [25483, 57732], [57733, 131352], [25285, 57734],
+    [57735, 137072], [25301, 57736], [57737, 142861], [25452, 57738],
+    [57739, 149983], [14871, 57740], [25656, 57741], [25592, 57742],
+    [57743, 136078], [57744, 137212], [28554, 57746], [57747, 142902], 0,
+    [57750, 153373], [25825, 57751], [25829, 57752], [38011, 57753],
+    [14950, 57754], [25658, 57755], [14935, 57756], [25933, 57757],
+    [28438, 57758], [57759, 150056], [57760, 150051], [25989, 57761],
+    [25965, 57762], [25951, 57763], 0, [26037, 57765], [57766, 149824],
+    [19255, 57767], [26065, 57768], [16600, 57769], [57770, 137257], 57771,
+    [26083, 57772], [24543, 57773], [57774, 144384], [26136, 57775],
+    [57776, 143863], [57777, 143864], [26180, 57778], [57779, 143780],
+    [57780, 143781], [26187, 57781], [57782, 134773], [26215, 57783],
+    [57784, 152038], [26227, 57785], 0, [57788, 143921], [57789, 165364],
+    [57790, 143816], [57791, 152339], [30661, 57792], [57793, 141559],
+    [39332, 57794], [26370, 57795], [57796, 148380], [57797, 150049],
+    [27130, 57799], [57800, 145346], 0, [26471, 57802], [26466, 57803],
+    [57804, 147917], [57805, 168173], [26583, 57806], [17641, 57807],
+    [26658, 57808], [28240, 57809], [37436, 57810], [26625, 57811],
+    [57812, 144358], [57813, 159136], [26717, 57814], [57815, 144495],
+    [27105, 57816], [27147, 57817], [57818, 166623], [26995, 57819],
+    [26819, 57820], [57821, 144845], [26881, 57822], [26880, 57823],
+    [14849, 57825], [57826, 144956], [15232, 57827], [26540, 57828],
+    [26977, 57829], [57830, 166474], [17148, 57831], [26934, 57832],
+    [27032, 57833], [15265, 57834], [57835, 132041], [33635, 57836],
+    [20624, 57837], [27129, 57838], [57839, 144985], [57840, 139562],
+    [27205, 57841], [57842, 145155], [27293, 57843], [15347, 57844],
+    [26545, 57845], [27336, 57846], [57847, 168348], [15373, 57848],
+    [27421, 57849], [57850, 133411], [24798, 57851, 60308], [27445, 57852],
+    [27508, 57853], [57854, 141261], [28341, 57855], [57856, 146139], 0,
+    [57858, 137560], [14144, 57859], [21537, 57860], [57861, 146266],
+    [27617, 57862], [57863, 147196], [27612, 57864], [27703, 57865],
+    [57866, 140427], [57867, 149745], [57868, 158545], [27738, 57869],
+    [33318, 57870], [27769, 57871], [57872, 146876], [17605, 57873],
+    [57874, 146877], [57875, 147876], [57876, 149772], [57877, 149760],
+    [57878, 146633], [14053, 57879], [15595, 57880], [57881, 134450],
+    [39811, 57882], [57883, 143865], [57884, 140433], [32655, 57885],
+    [26679, 57886], [57887, 159013], [57888, 159137], [57889, 159211],
+    [28054, 57890], [27996, 57891], [28284, 57892], [28420, 57893],
+    [57894, 149887], [57895, 147589], [57896, 159346], [34099, 57897],
+    [57898, 159604], [20935, 57899], 0, 0, [33838, 57902], [57903, 166689], 0,
+    [57905, 146991], [29779, 57906], [57907, 147330], [31180, 57908],
+    [28239, 57909], [23185, 57910], [57911, 143435], [28664, 57912],
+    [14093, 57913], [28573, 57914], [57915, 146992], [28410, 57916],
+    [57917, 136343], [57918, 147517], [17749, 57919], [37872, 57920],
+    [28484, 57921], [28508, 57922], [15694, 57923], [28532, 57924],
+    [57925, 168304], [15675, 57926], [28575, 57927], [57928, 147780],
+    [28627, 57929], [57930, 147601], [57931, 147797], [57932, 147513],
+    [57933, 147440], [57934, 147380], [57935, 147775], [20959, 57936],
+    [57937, 147798], [57938, 147799], [57939, 147776], [57940, 156125],
+    [28747, 57941], [28798, 57942], [28839, 57943], 0, [28876, 57945],
+    [28885, 57946], [28886, 57947], [28895, 57948], [16644, 57949],
+    [15848, 57950], [29108, 57951], [29078, 57952], [57953, 148087],
+    [28971, 57954], [28997, 57955], [23176, 57956], [29002, 57957], 0,
+    [57960, 148325], [29007, 57961], [37730, 57962], [57963, 148161],
+    [28972, 57964], [57965, 148570], [57966, 150055], [57967, 150050],
+    [29114, 57968], [57969, 166888], [28861, 57970], [29198, 57971],
+    [37954, 57972], [29205, 57973], [22801, 57974], [37955, 57975],
+    [29220, 57976], [37697, 57977], [57978, 153093], [29230, 57979],
+    [29248, 57980], [57981, 149876], [26813, 57982], [29269, 57983],
+    [29271, 57984], [15957, 57985], [57986, 143428], [26637, 57987],
+    [28477, 57988], [29314, 57989], 0, [29483, 57991], [57992, 149539],
+    [57993, 165931], [18669, 57994], [57995, 165892], [29480, 57996],
+    [29486, 57997], [29647, 57998], [29610, 57999], [58000, 134202],
+    [58001, 158254], [29641, 58002], [29769, 58003], [58004, 147938],
+    [58005, 136935], [58006, 150052], [26147, 58007], [14021, 58008],
+    [58009, 149943], [58010, 149901], [58011, 150011], [29687, 58012],
+    [29717, 58013], [26883, 58014], [58015, 150054], [29753, 58016],
+    [16087, 58018], 0, [58020, 141485], [29792, 58021], [58022, 167602],
+    [29767, 58023], [29668, 58024], [29814, 58025], [33721, 58026],
+    [29804, 58027], [29812, 58029], [37873, 58030], [27180, 58031],
+    [29826, 58032], [18771, 58033], [58034, 150156], [58035, 147807],
+    [58036, 150137], [58037, 166799], [23366, 58038], [58039, 166915],
+    [58040, 137374], [29896, 58041], [58042, 137608], [29966, 58043],
+    [29982, 58045], [58046, 167641], [58047, 137803], [23511, 58048],
+    [58049, 167596], [37765, 58050], [30029, 58051], [30026, 58052],
+    [30055, 58053], [30062, 58054], [58055, 151426], [16132, 58056],
+    [58057, 150803], [30094, 58058], [29789, 58059], [30110, 58060],
+    [30132, 58061], [30210, 58062], [30252, 58063], [30289, 58064],
+    [30287, 58065], [30319, 58066], 58067, [58068, 156661], [30352, 58069],
+    [33263, 58070], [14328, 58071], [58072, 157969], [58073, 157966],
+    [30369, 58074], [30373, 58075], [30391, 58076], [30412, 58077],
+    [58078, 159647], [33890, 58079], [58080, 151709], [58081, 151933],
+    [58082, 138780], [30494, 58083], [30502, 58084], [30528, 58085],
+    [25775, 58086], [58087, 152096], [30552, 58088], [58089, 144044],
+    [30639, 58090], [58091, 166244], [58092, 166248], [58093, 136897],
+    [30708, 58094], 0, [26826, 58098], [30895, 58099], [30919, 58100],
+    [30931, 58101], [38565, 58102], [31022, 58103], [58104, 153056],
+    [30935, 58105], [31028, 58106], [30897, 58107], [58108, 161292],
+    [36792, 58109], [34948, 58110], [58113, 140828], [31110, 58114],
+    [35072, 58115], [26882, 58116], [31104, 58117], [58118, 153687],
+    [31133, 58119], [58120, 162617], [31036, 58121], [31145, 58122],
+    [28202, 58123], [58124, 160038], [16040, 58125], [31174, 58126],
+    [58127, 168205], [31188, 58128], 0, [21797, 62526], 0, [62528, 134210],
+    [62529, 134421], [62530, 151851], [21904, 62531], [62532, 142534],
+    [14828, 62533], [62534, 131905], [36422, 62535], [62536, 150968],
+    [62537, 169189], 0, [62539, 164030], [30586, 62540], [62541, 142392],
+    [14900, 62542], [18389, 62543], [62544, 164189], [62545, 158194],
+    [62546, 151018], [25821, 62547], [62548, 134524], [62549, 135092],
+    [62550, 134357], 0, [25741, 62552], [36478, 62553], [62554, 134806], 0,
+    [62556, 135012], [62557, 142505], [62558, 164438], [62559, 148691], 0,
+    [62561, 134470], [62562, 170573], [62563, 164073], [18420, 62564],
+    [62565, 151207], [62566, 142530], [39602, 62567], [14951, 62568],
+    [62569, 169460], [16365, 62570], [13574, 62571], [62572, 152263],
+    [62573, 169940], 0, [62575, 142660], [40302, 62576], [38933, 62577], 0,
+    [17369, 62579], 0, [25780, 62581], [21731, 62582], 0, [62584, 142282], 0,
+    [14843, 62586], 0, [62588, 157402], [62589, 157462], [62590, 162208],
+    [25834, 62591], [62592, 151634], [62593, 134211], [36456, 62594], 0,
+    [62596, 166732], [62597, 132913], 0, [18443, 62599], [62600, 131497],
+    [16378, 62601], [22643, 62602], [62603, 142733], 0, [62605, 148936],
+    [62606, 132348], [62607, 155799], [62608, 134988], 0, [21881, 62610], 0,
+    [17338, 62612], 0, [19124, 62614], [62615, 141926], [62616, 135325],
+    [33194, 62617], [39157, 62618], [62619, 134556], [25465, 62620],
+    [14846, 62621], [62622, 141173], [36288, 62623], [22177, 62624],
+    [25724, 62625], [15939, 62626], 0, [62628, 173569], [62629, 134665],
+    [62630, 142031], 0, 0, [62633, 135368], [62634, 145858], [14738, 62635],
+    [14854, 62636], [62637, 164507], [13688, 62638], [62639, 155209],
+    [62640, 139463], 0, 0, [62643, 142514], [62644, 169760], [13500, 62645],
+    [27709, 62646], [62647, 151099], 0, 0, [62650, 161140], [62651, 142987],
+    [62652, 139784], [62653, 173659], [62654, 167117], [62655, 134778],
+    [62656, 134196], [62683, 161337], [62684, 142286], [62687, 142417],
+    [14872, 62689], [62691, 135367], [62693, 173618], [62695, 167122],
+    [62696, 167321], [62697, 167114], [38314, 62698], 0, [62706, 161630],
+    [28992, 62708], 0, [20822, 62385], 0, [20616, 62487], 0, [13459, 62489],
+    [20870, 62491], [24130, 63037], [20997, 62495], [21031, 62436],
+    [21113, 62497], 0, [13651, 62504], [21442, 62505], [21343, 62715], 0,
+    [21823, 62520], 0, [21976, 59986], [13789, 62722], [22049, 63067], 0,
+    [22100, 60044], [60148, 135291], 0, [60153, 135379], 0, [61095, 135934], 0,
+    0, [14265, 60104], [23745, 61099], [23829, 63066], [23894, 63030],
+    [14392, 63036], [20097, 62477], [24253, 63038], [14612, 63042],
+    [25017, 63050], [25232, 63054], [25368, 63056], [25690, 63063],
+    [25745, 62381], [33133, 62709], [33156, 59922], [33171, 59924],
+    [26624, 63080], [15292, 63093], [29327, 60517], [29389, 59781], 0,
+    [29497, 59785], [30018, 59811], [30172, 59817], [16320, 59818],
+    [60278, 151205], [16343, 59820], 0, 30336, [30348, 59824, 151388],
+    [16552, 59845], [30777, 59846], [16643, 59855], [31377, 59863],
+    [31771, 59876], [31981, 59884], [32659, 62658], [32686, 59892], 0,
+    [33535, 59936], [22623, 59981], [34482, 59960], 0, [34699, 59963],
+    [35143, 59969], 0, [35369, 59972], 0, [36465, 59988], [60484, 164233],
+    [36528, 59990], 0, [37214, 62443], [37260, 62441], [39182, 60051],
+    [39196, 60054], 0, 0, [39809, 60066], [40384, 60080], [40339, 60078],
+    [40620, 60085], [19857, 60540], 0, 37818, [40571, 60084], [28809, 63148],
+    [29512, 59788], 0, [31129, 59858], [36791, 59997], 0, [39234, 60056],
+    {s: 193}, 8364, {s: 4}, [12443, 63518], [12444, 63519], [11904, 63520],
+    {f: 5, c: 62211}, [62216, 131340], 62217, [62218, 131281], [62219, 131277],
+    {f: 2, c: 62220}, [62222, 131275], [62223, 139240], 62224, [62225, 131274],
+    {f: 4, c: 62226}, [62230, 131342], {f: 2, c: 62231}, {f: 2, c: 62776},
+    [62778, 138177], [62779, 194680], [12205, 38737, 62780], [62781, 131206],
+    [20059, 62782], [20155, 62783], [13630, 62784], [23587, 62785],
+    [24401, 62786], [24516, 62787], [14586, 62788], [25164, 62789],
+    [25909, 62790], [27514, 62791], [27701, 62792], [27706, 62793],
+    [28780, 62794], [29227, 62795], [20012, 62796], [29357, 62797],
+    [62798, 149737], [32594, 62799], [31035, 62800], [31993, 62801],
+    [32595, 62802], [62803, 156266], [13505, 62804], [62806, 156491],
+    [32770, 62807], [32896, 62808], [62809, 157202], [62810, 158033],
+    [21341, 62811], [34916, 62812], [35265, 62813], [62814, 161970],
+    [35744, 62815], [36125, 62816], [38021, 62817], [38264, 62818],
+    [38271, 62819], [38376, 62820], [62821, 167439], [38886, 62822],
+    [39029, 62823], [39118, 62824], [39134, 62825], [39267, 62826],
+    [62827, 170000], [40060, 62828], [40479, 62829], [40644, 62830],
+    [27503, 62831], [62832, 63751], [20023, 62833], [62834, 131207],
+    [38429, 62835], [25143, 62836], [38050, 62837], [11908, 63521],
+    [11910, 63522], [11911, 63523], [11912, 63524], [11914, 63525],
+    [11916, 63526], [11917, 63527], [11925, 63528], [11932, 63529],
+    [11941, 63531], [11943, 63532], [11946, 63533], [11948, 63534],
+    [11950, 63535], [11958, 63536], [11964, 63537], [11966, 63538],
+    [11978, 63540], [11980, 63541], [11981, 63542], [11983, 63543],
+    [11990, 63544], [11991, 63545], [11998, 63546], [62368, 172969],
+    [62369, 135493], [25866, 62371], [20029, 62374], [28381, 62375],
+    [40270, 62376], [37343, 62377], [62380, 161589], [20250, 62382],
+    [20264, 62383], [20392, 62384], [20852, 62386], [20892, 62387],
+    [20964, 62388], [21153, 62389], [21160, 62390], [21307, 62391],
+    [21326, 62392], [21457, 62393], [21464, 62394], [22242, 62395],
+    [22768, 62396], [22788, 62397], [22791, 62398], [22834, 62399],
+    [22836, 62400], [23398, 62401], [23454, 62402], [23455, 62403],
+    [23706, 62404], [24198, 62405], [24635, 62406], [25993, 62407],
+    [26622, 62408], [26628, 62409], [26725, 62410], [27982, 62411],
+    [28860, 62412], [30005, 62413], [32420, 62414], [32428, 62415],
+    [32442, 62416], [32455, 62417], [32463, 62418], [32479, 62419],
+    [32518, 62420], [32567, 62421], [33402, 62422], [33487, 62423],
+    [33647, 62424], [35270, 62425], [35774, 62426], [35810, 62427],
+    [36710, 62428], [36711, 62429], [36718, 62430], [29713, 62431],
+    [31996, 62432], [32205, 62433], [26950, 62434], [31433, 62435],
+    [30904, 62442], [32956, 62444], [36107, 62446], [33014, 62447],
+    [62448, 133607], [32927, 62451], [40647, 62452], [19661, 62453],
+    [40393, 62454], [40460, 62455], [19518, 62456], [62457, 171510],
+    [62458, 159758], [40458, 62459], [62460, 172339], [13761, 62461],
+    [28314, 62463], [33342, 62464], [29977, 62465], [18705, 62467],
+    [39532, 62468], [39567, 62469], [40857, 62470], [31111, 62471],
+    [62472, 164972], [62473, 138698], [62474, 132560], [62475, 142054],
+    [20004, 62476], [20096, 62478], [20103, 62479], [20159, 62480],
+    [20203, 62481], [20279, 62482], [13388, 62483], [20413, 62484],
+    [15944, 62485], [20483, 62486], [13437, 62488], [13477, 62490],
+    [22789, 62492], [20955, 62493], [20988, 62494], [20105, 62496],
+    [21136, 62498], [21287, 62499], [13767, 62500], [21417, 62501],
+    [13649, 62502], [21424, 62503], [21539, 62506], [13677, 62507],
+    [13682, 62508], [13953, 62509], [21651, 62510], [21667, 62511],
+    [21684, 62512], [21689, 62513], [21712, 62514], [21743, 62515],
+    [21784, 62516], [21795, 62517], [21800, 62518], [13720, 62519],
+    [13733, 62521], [13759, 62522], [21975, 62523], [13765, 62524],
+    [62525, 163204], [16467, 62538], [62551, 135412], [62555, 134155],
+    [62574, 161992], [62580, 155813], [62583, 142668], [62585, 135287],
+    [62587, 135279], [62595, 139681], [62609, 134550], [16571, 62611],
+    [62631, 142537], [22098, 62641], [62642, 134961], [62657, 157724],
+    [62659, 135375], [62660, 141315], [62661, 141625], [13819, 62662],
+    [62663, 152035], [62664, 134796], [62665, 135053], [62666, 134826],
+    [16275, 62667], [62668, 134960], [62669, 134471], [62670, 135503],
+    [62671, 134732], [62673, 134827], [62674, 134057], [62675, 134472],
+    [62676, 135360], [62677, 135485], [16377, 62678], [62679, 140950],
+    [25650, 62680], [62681, 135085], [62682, 144372], [62685, 134526],
+    [62686, 134527], [62688, 142421], [62690, 134808], [62692, 134958],
+    [62694, 158544], [21708, 62699], [33476, 62700], [21945, 62701],
+    [62703, 171715], [39974, 62704], [39606, 62705], [62707, 142830],
+    [33004, 62710], [23580, 62711], [62712, 157042], [33076, 62713],
+    [14231, 62714], [62716, 164029], [37302, 62717], [62718, 134906],
+    [62719, 134671], [62720, 134775], [62721, 134907], [62723, 151019],
+    [13833, 62724], [62725, 134358], [22191, 62726], [62727, 141237],
+    [62728, 135369], [62729, 134672], [62730, 134776], [62731, 135288],
+    [62732, 135496], [62733, 164359], [62734, 136277], [62735, 134777],
+    [62736, 151120], [62737, 142756], [23124, 62738], [62739, 135197],
+    [62740, 135198], [62741, 135413], [62742, 135414], [22428, 62743],
+    [62744, 134673], [62745, 161428], [62746, 164557], [62747, 135093],
+    [62748, 134779], [62749, 151934], [14083, 62750], [62751, 135094],
+    [62752, 135552], [62753, 152280], [62754, 172733], [62755, 149978],
+    [62756, 137274], [62757, 147831], [62758, 164476], [22681, 62759],
+    [21096, 62760], [13850, 62761], [62762, 153405], [31666, 62763],
+    [23400, 62764], [18432, 62765], [19244, 62766], [40743, 62767],
+    [18919, 62768], [39967, 62769], [39821, 62770], [62771, 154484],
+    [62772, 143677], [22011, 62773], [13810, 62774], [22153, 62775],
+    [23870, 63028], [23880, 63029], [15868, 63031], [14351, 63032],
+    [23972, 63033], [23993, 63034], [14368, 63035], [24357, 63039],
+    [24451, 63040], [14600, 63041], [14655, 63043], [14669, 63044],
+    [24791, 63045], [24893, 63046], [23781, 63047], [14729, 63048],
+    [25015, 63049], [25039, 63051], [14776, 63052], [25132, 63053],
+    [25317, 63055], [14840, 63057], [22193, 63058], [14851, 63059],
+    [25570, 63060], [25595, 63061], [25607, 63062], [14923, 63064],
+    [25792, 63065], [40863, 63068], [14999, 63069], [25990, 63070],
+    [15037, 63071], [26111, 63072], [26195, 63073], [15090, 63074],
+    [26258, 63075], [15138, 63076], [26390, 63077], [15170, 63078],
+    [26532, 63079], [15192, 63081], [26698, 63082], [26756, 63083],
+    [15218, 63084], [15217, 63085], [15227, 63086], [26889, 63087],
+    [26947, 63088], [29276, 63089], [26980, 63090], [27039, 63091],
+    [27013, 63092], [27094, 63094], [15325, 63095], [27237, 63096],
+    [27252, 63097], [27249, 63098], [27266, 63099], [15340, 63100],
+    [27289, 63101], [15346, 63102], [27307, 63103], [27317, 63104],
+    [27348, 63105], [27382, 63106], [27521, 63107], [27585, 63108],
+    [27626, 63109], [27765, 63110], [27818, 63111], [15563, 63112],
+    [27906, 63113], [27910, 63114], [27942, 63115], [28033, 63116],
+    [15599, 63117], [28068, 63118], [28081, 63119], [28181, 63120],
+    [28184, 63121], [28201, 63122], [28294, 63123], [63124, 166336],
+    [28347, 63125], [28386, 63126], [28378, 63127], [40831, 63128],
+    [28392, 63129], [28393, 63130], [28452, 63131], [28468, 63132],
+    [15686, 63133], [63134, 147265], [28545, 63135], [28606, 63136],
+    [15722, 63137], [15733, 63138], [29111, 63139], [23705, 63140],
+    [15754, 63141], [28716, 63142], [15761, 63143], [28752, 63144],
+    [28756, 63145], [28783, 63146], [28799, 63147], [63149, 131877],
+    [17345, 63150], [13809, 63151], [63152, 134872], [13902, 58134],
+    [15789, 58172], [58173, 154725], [26237, 58183], [31860, 58188],
+    [29837, 58197], [32402, 58215], [17667, 58232], [58260, 151480],
+    [58270, 133901], [58277, 158474], [13438, 58311], [58317, 143087],
+    [58325, 146613], [58343, 159385], [34673, 58364], [25537, 58385],
+    [30583, 58387], [35210, 58390], [58406, 147343], [35660, 58415],
+    [58440, 150729], [18730, 58464], [58471, 172052], [58472, 165564],
+    [58473, 165121], [15088, 58490], [28815, 58511], [58529, 140922],
+    [58637, 158120], [58646, 148043], [26760, 58662], [58664, 139611],
+    [40802, 58702], [37830, 58793], [58802, 131967], [37734, 58888],
+    [37519, 58901], [34324, 58954], [58986, 173147], [16784, 59010],
+    [26511, 59045], [26654, 59048], [14435, 59051], [59077, 149996],
+    [15129, 59128], [33942, 59176], [59241, 149858], [14818, 59254],
+    [33920, 59259], [17262, 59328], [38769, 59402], [39323, 59427],
+    [18733, 59499], [28439, 59703], [59704, 160009], [28838, 59746],
+    [59752, 150095], [32357, 59753], [23855, 59755], [15859, 59756],
+    [59758, 150109], [59759, 137183], [32164, 59760], [33830, 59761],
+    [21637, 59762], [59763, 146170], [59765, 131604], [22398, 59766],
+    [59767, 133333], [59768, 132633], [16357, 59769], [59770, 139166],
+    [59771, 172726], [28675, 59772], [59773, 168283], [23920, 59774],
+    [29583, 59775], [59777, 166489], [59778, 168992], [20424, 59779],
+    [32743, 59780], [29456, 59782], [29496, 59784], [29505, 59787],
+    [16041, 59789], [29173, 59792], [59793, 149746], [29665, 59794],
+    [16074, 59796], [16081, 59798], [29721, 59801], [29726, 59802],
+    [29727, 59803], [16098, 59804], [16112, 59805], [16116, 59806],
+    [16122, 59807], [29907, 59808], [16142, 59809], [16211, 59810],
+    [30061, 59812], [30066, 59813], [30093, 59814], [16252, 59815],
+    [30152, 59816], [30285, 59819], [30324, 59821], [16348, 59822],
+    [30330, 59823], [29064, 59825], [22051, 59826], [35200, 59827],
+    [16413, 59829], [30531, 59830], [16441, 59831], [16453, 59833],
+    [13787, 59834], [30616, 59835], [16490, 59836], [16495, 59837],
+    [30654, 59839], [30667, 59840], [30744, 59842], [30748, 59844],
+    [30791, 59847], [30801, 59848], [30822, 59849], [33864, 59850],
+    [59851, 152885], [31027, 59852], [31026, 59854], [16649, 59856],
+    [31121, 59857], [31238, 59860], [16743, 59862], [16818, 59864],
+    [31420, 59865], [33401, 59866], [16836, 59867], [31439, 59868],
+    [31451, 59869], [16847, 59870], [31586, 59872], [31596, 59873],
+    [31611, 59874], [31762, 59875], [16992, 59877], [17018, 59878],
+    [31867, 59879], [31900, 59880], [17036, 59881], [31928, 59882],
+    [17044, 59883], [36755, 59885], [28864, 59886], [59887, 134351],
+    [32207, 59888], [32212, 59889], [32208, 59890], [32253, 59891],
+    [32692, 59893], [29343, 59894], [17303, 59895], [32800, 59896],
+    [32805, 59897], [32814, 59899], [32817, 59900], [32852, 59901],
+    [22452, 59903], [28832, 59904], [32951, 59905], [33001, 59906],
+    [17389, 59907], [33036, 59908], [33038, 59910], [33042, 59911],
+    [33044, 59913], [17409, 59914], [15161, 59915], [33110, 59916],
+    [33113, 59917], [33114, 59918], [17427, 59919], [33148, 59921],
+    [17445, 59923], [17453, 59925], [33189, 59926], [22511, 59927],
+    [33217, 59928], [33252, 59929], [33364, 59930], [17551, 59931],
+    [33398, 59933], [33482, 59934], [33496, 59935], [17584, 59937],
+    [33623, 59938], [38505, 59939], [33797, 59941], [28917, 59942],
+    [33892, 59943], [33928, 59945], [17668, 59946], [33982, 59947],
+    [34017, 59948], [34040, 59949], [34064, 59950], [34104, 59951],
+    [34130, 59952], [17723, 59953], [34159, 59954], [34160, 59955],
+    [34272, 59956], [17783, 59957], [34418, 59958], [34450, 59959],
+    [34543, 59961], [38469, 59962], [17926, 59964], [17943, 59965],
+    [34990, 59966], [35071, 59967], [35108, 59968], [35217, 59970],
+    [59971, 162151], [35384, 59973], [35476, 59974], [35508, 59975],
+    [35921, 59976], [36052, 59977], [36082, 59978], [36124, 59979],
+    [18328, 59980], [36291, 59982], [18413, 59983], [36410, 59985],
+    [22356, 59987], [22005, 59989], [18487, 59991], [36558, 59992],
+    [36578, 59993], [36580, 59994], [36589, 59995], [36594, 59996],
+    [36801, 59998], [36810, 59999], [36812, 60000], [36915, 60001],
+    [18605, 60003], [39136, 60004], [37395, 60005], [18718, 60006],
+    [37416, 60007], [37464, 60008], [37483, 60009], [37553, 60010],
+    [37550, 60011], [37567, 60012], [37603, 60013], [37611, 60014],
+    [37619, 60015], [37620, 60016], [37629, 60017], [37699, 60018],
+    [37764, 60019], [37805, 60020], [18757, 60021], [18769, 60022],
+    [37911, 60024], [37917, 60026], [37933, 60027], [37950, 60028],
+    [18794, 60029], [37972, 60030], [38009, 60031], [38189, 60032],
+    [38306, 60033], [18855, 60034], [38388, 60035], [38451, 60036],
+    [18917, 60037], [18980, 60039], [38720, 60040], [18997, 60041],
+    [38834, 60042], [38850, 60043], [19172, 60045], [39097, 60047],
+    [19225, 60048], [39153, 60049], [22596, 60050], [39193, 60052],
+    [39223, 60055], [39261, 60057], [39266, 60058], [19312, 60059],
+    [39365, 60060], [19357, 60061], [39484, 60062], [39695, 60063],
+    [39785, 60065], [39901, 60067], [39921, 60068], [39924, 60069],
+    [19565, 60070], [39968, 60071], [14191, 60072], [60073, 138178],
+    [40265, 60074], [40702, 60076], [22096, 60077], [40381, 60079],
+    [40444, 60081], [38134, 60082], [36790, 60083], [40625, 60086],
+    [40637, 60087], [40646, 60088], [38108, 60089], [40674, 60090],
+    [40689, 60091], [40696, 60092], [40772, 60094], [60095, 131220],
+    [60096, 131767], [60097, 132000], [38083, 60099], [60101, 132311],
+    [38081, 60103], [60105, 132565], [60106, 132629], [60107, 132726],
+    [60108, 136890], [22359, 60109], [29043, 60110], [60111, 133826],
+    [60112, 133837], [60113, 134079], [60115, 194619], [60116, 134091],
+    [21662, 60117], [60118, 134139], [60119, 134203], [60120, 134227],
+    [60121, 134245], [60122, 134268], [60124, 134285], [60126, 134325],
+    [60127, 134365], [60128, 134381], [60129, 134511], [60130, 134578],
+    [60131, 134600], [60135, 134660], [60136, 134670], [60137, 134871],
+    [60138, 135056], [60139, 134957], [60140, 134771], [60142, 135100],
+    [60144, 135260], [60145, 135247], [60146, 135286], [60149, 135304],
+    [60150, 135318], [13895, 60151], [60152, 135359], [60154, 135471],
+    [60155, 135483], [21348, 60156], [60158, 135907], [60159, 136053],
+    [60160, 135990], [60162, 136567], [60163, 136729], [60164, 137155],
+    [60165, 137159], [28859, 60167], [60168, 137261], [60169, 137578],
+    [60170, 137773], [60171, 137797], [60172, 138282], [60173, 138352],
+    [60174, 138412], [60175, 138952], [60177, 138965], [60178, 139029],
+    [29080, 60179], [60181, 139333], [27113, 60182], [14024, 60183],
+    [60184, 139900], [60185, 140247], [60186, 140282], [60187, 141098],
+    [60188, 141425], [60189, 141647], [60191, 141671], [60192, 141715],
+    [60193, 142037], [60195, 142056], [60197, 142094], [60199, 142143],
+    [60202, 142412], [60204, 142472], [60205, 142519], [60206, 154600],
+    [60207, 142600], [60208, 142610], [60209, 142775], [60210, 142741],
+    [60211, 142914], [60212, 143220], [60213, 143308], [60214, 143411],
+    [60215, 143462], [60216, 144159], [60217, 144350], [60222, 144743],
+    [60223, 144883], [60227, 144922], [60228, 145174], [22709, 60231],
+    [60234, 146087], [60237, 146961], [60238, 147129], [60243, 147737],
+    [60245, 148206], [60246, 148237], [60248, 148276], [60249, 148374],
+    [60258, 148484], [60259, 148694], [22408, 60260], [60261, 149108],
+    [60263, 149295], [60271, 149522], [60272, 149755], [60273, 150037],
+    [60275, 150208], [22885, 60277], [60279, 151430], [60282, 151596],
+    [22335, 60284], [60286, 152217], [60287, 152601], [60291, 152646],
+    [60292, 152686], [60296, 152895], [60298, 152926], [60300, 152930],
+    [60301, 152934], [60302, 153543], [60304, 153693], [60309, 153859],
+    [60312, 154286], [60313, 154505], [60314, 154630], [22433, 60316],
+    [29009, 60317], [60319, 155906], [60322, 156082], [60325, 156674],
+    [60326, 156746], [60330, 156804], [60334, 156808], [60336, 156946],
+    [60338, 157119], [60339, 157365], [22201, 60347], [60349, 157436],
+    [13848, 60355], [60357, 157593], [60358, 157806], [60360, 157790],
+    [60362, 157895], [60366, 157990], [60368, 158009], [60371, 158202],
+    [60373, 158253], [60378, 158260], [60379, 158555], [60383, 158621],
+    [60385, 158884], [60388, 159150], [60392, 159819], [60393, 160205],
+    [60395, 160384], [60396, 160389], [60399, 160395], [60401, 160486],
+    [38047, 60404], [60405, 160848], [14009, 60416], [60424, 161740],
+    [60425, 161880], [22230, 60426], [60435, 162269], [60441, 162301],
+    [60442, 162314], [60443, 162571], [60444, 163174], [60448, 163849],
+    [60459, 163875], [60463, 163912], [60466, 163971], [60479, 163984],
+    [60480, 164084], [60481, 164142], [60483, 164175], [60485, 164271],
+    [60486, 164378], [60487, 164614], [60488, 164655], [60489, 164746],
+    [60491, 164968], [60492, 165546], [25574, 60494], [60495, 166230],
+    [60498, 166328], [60500, 166375], [60502, 166376], [60503, 166726],
+    [60504, 166868], [60506, 166921], [60508, 167877], [60509, 168172],
+    [60511, 168208], [60512, 168252], [15863, 60513], [60514, 168286],
+    [60515, 150218], [36816, 60516], [60519, 169191], [60521, 169392],
+    [60522, 169400], [60523, 169778], [60524, 170193], [60525, 170313],
+    [60526, 170346], [60527, 170435], [60528, 170536], [60529, 170766],
+    [60530, 171354], [60531, 171419], [32415, 60532], [60533, 171768],
+    [60534, 171811], [19620, 60535], [38215, 60536], [60537, 172691],
+    [29090, 60538], [60539, 172799], [60542, 173515], [19868, 60543],
+    [60544, 134300], [36798, 60545], [36794, 60547], [60548, 140464],
+    [36793, 60549], [60550, 150163], [20202, 60555], [60557, 166700],
+    [36480, 60560], [60561, 137205], [60563, 166764], [60564, 166809],
+    [60566, 157359], [60568, 161365], [60570, 153141], [60571, 153942],
+    [20122, 60572], [60573, 155265], [60576, 134765], [60579, 147080],
+    [60580, 150686], [60583, 137206], [60584, 137339], [60587, 154698],
+    [60589, 152337], [15814, 60590], [60596, 155352], [19996, 60600],
+    [60601, 135146], [60602, 134473], [60603, 145082], [60638, 151880],
+    [21982, 60644], [34694, 60672], [60676, 135361], [60679, 149254],
+    [23440, 60680], [60682, 157843], [60684, 141044], [60685, 163119],
+    [60686, 147875], [60687, 163187], [60688, 159440], [60689, 160438],
+    [60691, 135641], [60693, 146684], [60694, 173737], [60695, 134828],
+    [60698, 138402], [60700, 151490], [60702, 135147], [60706, 142752],
+    [60710, 135148], [60711, 134666], [60714, 135149], [60717, 135559],
+    [19994, 60721], [19972, 60722], [23309, 60724], [13996, 60727],
+    [21373, 60729], [13989, 60730], [22682, 60732], [60733, 150382],
+    [22442, 60736], [60737, 154261], [60738, 133497], [60741, 140389],
+    [60746, 146686], [60747, 171824], [60749, 151465], [60750, 169374],
+    [60753, 146870], [60755, 157619], [60756, 145184], [60759, 147191],
+    [60760, 146988], [60785, 143578], [60789, 135849], [22439, 60790],
+    [60791, 149859], [60794, 159918], [60801, 137068], [60806, 160100],
+    [60809, 159010], [60810, 150242], [39963, 60837], [60838, 149822],
+    [15878, 60846], [60881, 159011], [60887, 132092], [60891, 146685],
+    [60893, 149785], [22394, 60904], [21722, 60912], [29050, 60928],
+    [60949, 150135], [60955, 166490], [60962, 194624], [60976, 137275],
+    [61000, 155993], [61014, 144373], [61019, 166850], [61024, 138566],
+    [61054, 159441], [13877, 61065], [61084, 166701], [21024, 61088],
+    [15384, 61089], [61090, 146631], [61091, 155351], [61092, 161366],
+    [61093, 152881], [61094, 137540], [61096, 170243], [61097, 159196],
+    [61098, 159917], [61100, 156077], [61101, 166415], [61102, 145015],
+    [61103, 131310], [61104, 157766], [61105, 151310], [17762, 61106],
+    [23327, 61107], [61108, 156492], [40784, 61109], [40614, 61110],
+    [61111, 156267], [20962, 57415], [21314, 57416], [26285, 57520],
+    [22620, 57547], [21843, 57566], [15749, 57594], [24928, 57608],
+    [18606, 57668], [38845, 57676], [57693, 137335], [24755, 57703],
+    [33828, 57711], [38932, 57748], [57749, 147596], [57764, 143486],
+    [57787, 138813], [15147, 57798], [15666, 57824], [57857, 132021],
+    [28801, 57944], [23708, 57959], [58017, 132547], [14128, 58028],
+    [58096, 136054], [58097, 150034], [58111, 166699], [58112, 155779],
+    [256, 62233], [193, 62234], [461, 62235], [192, 62236], [274, 62237],
+    [201, 62238], [282, 62239], [200, 62240], [332, 62241], [211, 62242],
+    [465, 62243], [210, 62244], 62245, [7870, 62246], 62247, [7872, 62248],
+    [202, 62249], [257, 62250], [225, 62251], [462, 62252], [224, 62253],
+    [593, 62254], [275, 62255], [233, 62256], [283, 62257], [232, 62258],
+    [299, 62259], [237, 62260], [464, 62261], [236, 62262], [333, 62263],
+    [243, 62264], [466, 62265], [242, 62266], [363, 62267], [250, 62268],
+    [468, 62269], [249, 62270], [470, 62271], [472, 62272], [474, 62273],
+    [476, 62274], [252, 62275], 62276, [7871, 62277], 62278, [7873, 62279],
+    [234, 62280], [609, 62281], [643, 63551], [592, 63552], [603, 63553],
+    [596, 63554], [629, 63555], [339, 63556], [248, 63557], [331, 63558],
+    [650, 63559], [618, 63560], {f: 2, c: 62282}, [11933, 63530],
+    [11974, 63539], [12003, 63547], 20539, 28158, [62841, 171123], 62842,
+    [15817, 62843], 34959, [62845, 147790], 28791, 23797, [19232, 62848],
+    [62849, 152013], [13657, 62850], [62851, 154928], 24866, [62853, 166450],
+    36775, 37366, 29073, 26393, 29626, [62859, 144001], [62860, 172295],
+    [15499, 62861], [62862, 137600], [19216, 62863], 30948, 29698, 20910,
+    [62867, 165647], [16393, 62868], 27235, [62870, 172730], [16931, 62871],
+    34319, 31274, [62875, 170311], [62876, 166634], 38741, 28749, 21284,
+    [62880, 139390], 37876, 30425, [62883, 166371], 62884, 30685, 20131, 20464,
+    20668, 20015, 20247, 62891, 21556, 32139, 22674, 22736, [62896, 138678],
+    24210, 24217, 24514, [62900, 141074], 25995, [62902, 144377], 26905, 27203,
+    [62905, 146531], 27903, 29184, [62909, 148741], 29580, [16091, 62911],
+    [62912, 150035], 23317, 29881, 35715, [62916, 154788], [62917, 153237],
+    31379, 31724, 31939, 32364, 33528, 34199, 62924, 34960, 62926, 36537,
+    62928, 36815, 34143, 39392, 37409, 62933, [62934, 167353], [62935, 136255],
+    [16497, 62936], [17058, 62937], 23066, 39016, 26475, [17014, 62944], 22333,
+    34262, [62948, 149883], 33471, [62950, 160013], [19585, 62951],
+    [62952, 159092], 23931, [62954, 158485], [62955, 159678], {f: 2, c: 62956},
+    23446, 62959, 32347],
+  'Adobe-GB1': [{f: 95, c: 32}, {f: 3, c: 12288}, [183, 12539], 713, 711, 168,
+    12291, 12293, 8212, 65374, 8214, [8230, 8943], {f: 2, c: 8216},
+    {f: 2, c: 8220}, {f: 2, c: 12308}, {f: 8, c: 12296}, {f: 2, c: 12310},
+    {f: 2, c: 12304}, 177, 215, 247, 8758, {f: 2, c: 8743}, 8721, 8719, 8746,
+    8745, 8712, 8759, 8730, 8869, 8741, 8736, 8978, 8857, 8747, 8750, 8801,
+    8780, 8776, 8765, 8733, 8800, {f: 2, c: 8814}, {f: 2, c: 8804}, 8734, 8757,
+    8756, 9794, 9792, 176, {f: 2, c: 8242}, 8451, 65284, 164, {f: 2, c: 65504},
+    8240, 167, 8470, 9734, 9733, 9675, 9679, 9678, 9671, 9670, 9633, 9632,
+    9651, 9650, 8251, 8594, {f: 2, c: 8592}, 8595, 12307, {f: 20, c: 9352},
+    {f: 20, c: 9332}, {f: 10, c: 9312}, {f: 10, c: 12832}, {f: 12, c: 8544},
+    {f: 3, c: 65281}, 65509, {f: 89, c: 65285}, 65507, {f: 83, c: 12353},
+    {f: 86, c: 12449}, {f: 17, c: 913}, {f: 7, c: 931}, {f: 17, c: 945},
+    {f: 7, c: 963}, {f: 7, c: 59277}, {f: 2, c: 65077}, {f: 2, c: 65081},
+    {f: 2, c: 65087}, {f: 2, c: 65085}, {f: 4, c: 65089}, {f: 2, c: 59284},
+    {f: 2, c: 65083}, {f: 2, c: 65079}, 65073, 59286, {f: 2, c: 65075},
+    {f: 6, c: 1040}, 1025, {f: 32, c: 1046}, 1105, {f: 26, c: 1078}, 257, 225,
+    462, 224, 275, 233, 283, 232, 299, 237, 464, 236, 333, 243, 466, 242, 363,
+    250, 468, 249, 470, 472, 474, 476, 252, 234, 593, 7743, 324, 328, 505, 609,
+    {f: 37, c: 12549}, 0, {f: 76, c: 9472}, {s: 126}, 21834, 38463, 22467,
+    25384, 21710, 21769, 21696, 30353, 30284, 34108, 30702, 33406, 30861,
+    29233, 38552, 38797, 27688, 23433, 20474, 25353, 26263, 23736, 33018,
+    26696, 32942, 26114, 30414, 20985, 25942, 29100, 32753, 34948, 20658,
+    22885, 25034, 28595, 33453, 25420, 25170, 21485, 21543, 31494,
+    [12043, 20843], 30116, 24052, 25300, 36299, 38774, 25226, 32793, 22365,
+    38712, 32610, 29240, [12137, 30333], 26575, 30334, 25670, 20336, 36133,
+    25308, 31255, 26001, 29677, 25644, 25203, 33324, 39041, 26495, 29256,
+    25198, 25292, 20276, 29923, 21322, 21150, 32458, 37030, 24110, 26758,
+    27036, 33152, 32465, 26834, 30917, 34444, 38225, 20621, 35876, 33502,
+    32990, 21253, 35090, 21093, 34180, 38649, 20445, 22561, 39281, 23453,
+    25265, 25253, 26292, 35961, 40077, 29190, 26479, 30865, 24754, 21329,
+    21271, 36744, 32972, 36125, 38049, 20493, 29384, 22791, 24811, 28953,
+    34987, 22868, 33519, 26412, 31528, 23849, 32503, 29997, 27893, 36454,
+    36856, 36924, [12240, 40763], [12112, 27604], 37145, 31508, 24444, 30887,
+    34006, 34109, 27605, 27609, 27606, 24065, 24199, 30201, 38381, 25949,
+    24330, 24517, 36767, 22721, 33218, 36991, 38491, 38829, 36793, 32534,
+    36140, 25153, 20415, 21464, 21342, {f: 2, c: 36776}, 36779, 36941, 26631,
+    24426, 33176, 34920, 40150, 24971, 21035, 30250, 24428, 25996, 28626,
+    28392, 23486, 25672, 20853, 20912, 26564, 19993, 31177, 39292, 28851,
+    30149, 24182, 29627, 33760, 25773, 25320, 38069, 27874, 21338, 21187,
+    25615, 38082, 31636, 20271, 24091, 33334, 33046, 33162, 28196, 27850,
+    39539, 25429, [12056, 21340], 21754, 34917, 22496, 19981, 24067, 27493,
+    31807, 37096, 24598, 25830, 29468, 35009, 26448, 25165, 36130, 30572,
+    36393, 37319, 24425, 33756, 34081, 39184, 21442, 34453, 27531, 24813,
+    24808, 28799, 33485, 33329, 20179, 27815, 34255, 25805, 31961, 27133,
+    26361, 33609, 21397, 31574, 20391, 20876, 27979, 23618, 36461, 25554,
+    21449, 33580, 33590, 26597, 30900, 25661, 23519, 23700, 24046, 35815,
+    25286, 26612, 35962, 25600, 25530, 34633, 39307, 35863, 32544, 38130,
+    20135, 38416, 39076, 26124, 29462, 22330, 23581, 24120, 38271, 20607,
+    32928, [12058, 21378], 25950, 30021, 21809, 20513, 36229, 25220, 38046,
+    26397, 22066, 28526, 24034, 21557, 28818, 36710, 25199, 25764, 25507,
+    24443, 28552, 37108, [12162, 33251], [12192, 36784], 23576, 26216, 24561,
+    27785, 38472, 36225, 34924, 25745, 31216, 22478, 27225, 25104, 21576,
+    20056, 31243, 24809, 28548, 35802, 25215, 36894, 39563, 31204, 21507,
+    30196, 25345, 21273, 27744, 36831, 24347, 39536, 32827, 40831, 20360,
+    23610, [12186, 36196], 32709, 26021, 28861, 20805, 20914, [12173, 34411],
+    23815, 23456, 25277, 37228, 30068, 36364, 31264, 24833, 31609, 20167,
+    32504, 30597, 19985, 33261, 21021, 20986, 27249, 21416, 36487, 38148,
+    38607, 28353, 38500, 26970, 30784, 20648, 30679, 25616, 35302, 22788,
+    25571, 24029, 31359, 26941, 20256, 33337, 21912, 20018, 30126, 31383,
+    24162, 24202, 38383, 21019, 21561, 28810, 25462, 38180, 22402, 26149,
+    26943, 37255, 21767, 28147, 32431, 34850, 25139, 32496, 30133, 33576,
+    30913, 38604, 36766, 24904, 29943, 35789, 27492, 21050, 36176, 27425,
+    32874, 33905, 22257, 21254, 20174, 19995, 20945, 31895, 37259, 31751,
+    20419, 36479, 31713, 31388, 25703, 23828, 20652, 33030, 30209, 31929,
+    28140, 32736, 26449, 23384, [12072, 23544], 30923, 25774, 25619, 25514,
+    25387, 38169, 25645, 36798, 31572, 30249, 25171, [12068, 22823], 21574,
+    [12109, 27513], 20643, 25140, 24102, 27526, 20195, 36151, 34955, 24453,
+    36910, 24608, 32829, 25285, 20025, 21333, 37112, 25528, 32966, 26086,
+    27694, 20294, 24814, 28129, 35806, 24377, 34507, 24403, 25377, 20826,
+    33633, 26723, [12049, 20992], 25443, 36424, 20498, 23707, 31095, 23548,
+    21040, 31291, 24764, 36947, 30423, 24503, 24471, 30340, 36460, 28783,
+    30331, 31561, 30634, 20979, 37011, 22564, 20302, 28404, 36842, 25932,
+    31515, 29380, 28068, 32735, 23265, 25269, 24213, 22320, 33922, 31532,
+    24093, 24351, 36882, 32532, 39072, 25474, 28359, 30872, 28857, 20856,
+    38747, 22443, 30005, 20291, 30008, 24215, 24806, 22880, 28096, 27583,
+    30857, 21500, 38613, 20939, 20993, 25481, 21514, 38035, 35843, 36300,
+    29241, 30879, 34678, 36845, 35853, 21472, 19969, 30447, 21486, 38025,
+    39030, [12237, 40718], 38189, 23450, 35746, 20002, 19996, 20908, 33891,
+    25026, 21160, 26635, 20375, 24683, 20923, 27934, 20828, 25238,
+    [12099, 26007], 38497, [12182, 35910], 36887, 30168, 37117, 30563, 27602,
+    29322, 29420, 35835, 22581, 30585, 36172, 26460, 38208, 32922, 24230,
+    28193, 22930, 31471, 30701, 38203, 27573, 26029, 32526, 22534, 20817,
+    38431, 23545, 22697, 21544, 36466, 25958, 39039, 22244, 38045, 30462,
+    36929, 25479, 21702, 22810, 22842, 22427, 36530, 26421, 36346, 33333,
+    21057, 24816, 22549, 34558, 23784, 40517, 20420, 39069, 35769, 23077,
+    24694, 21380, 25212, 36943, 37122, 39295, 24681, [12157, 32780],
+    [12041, 20799], [12159, 32819], 23572, 39285, 27953, [12038, 20108], 36144,
+    21457, 32602, 31567, 20240, 20047, 38400, 27861, 29648, 34281, 24070,
+    30058, 32763, 27146, 30718, 38034, 32321, 20961, 28902, 21453, 36820,
+    33539, 36137, 29359, 39277, 27867, 22346, 33459, [12101, 26041], 32938,
+    25151, 38450, 22952, 20223, 35775, 32442, 25918, 33778, [12206, 38750],
+    21857, 39134, 32933, 21290, 35837, 21536, 32954, 24223, 27832, 36153,
+    33452, 37210, 21545, 27675, 20998, 32439, 22367, 28954, 27774, 31881,
+    22859, 20221, 24575, 24868, 31914, 20016, 23553, 26539, 34562, 23792,
+    38155, 39118, 30127, 28925, 36898, 20911, 32541, 35773, 22857, 20964,
+    20315, 21542, 22827, 25975, 32932, 23413, 25206, 25282, 36752, 24133,
+    27679, 31526, 20239, 20440, 26381, 28014, 28074, 31119, 34993, 24343,
+    29995, 25242, 36741, 20463, 37340, 26023, 33071, 33105, 24220, 33104,
+    36212, 21103, 35206, 36171, 22797, 20613, 20184, [12201, 38428],
+    [12119, 29238], 33145, 36127, 23500, 35747, 38468, 22919, 32538, 21648,
+    22134, 22030, 35813, 25913, 27010, 38041, 30422, 28297, [12082, 24178],
+    [12130, 29976], 26438, 26577, 31487, 32925, 36214, 24863, 31174, 25954,
+    36195, 20872, 21018, 38050, 32568, 32923, 32434, 23703, 28207, 26464,
+    31705, 30347, [12220, 39640], 33167, 32660, 31957, 25630, 38224, 31295,
+    21578, 21733, 27468, 25601, [12093, 25096], 40509, 33011, 30105, 21106,
+    [12208, 38761], 33883, 26684, 34532, 38401, 38548, 38124, 20010, 21508,
+    32473, 26681, 36319, 32789, 26356, 24218, 32697, 22466, 32831, 26775,
+    [12079, 24037], 25915, 21151, 24685, 40858, 20379, 36524, 20844, 23467,
+    [12088, 24339], 24041, 27742, 25329, 36129, 20849, 38057, 21246, 27807,
+    33503, 29399, 22434, 26500, 36141, 22815, 36764, 33735, 21653, 31629,
+    20272, 27837, 23396, 22993, [12238, 40723], 21476, 34506, [12219, 39592],
+    [12181, 35895], 32929, 25925, 39038, 22266, 38599, 21038, [12128, 29916],
+    21072, 23521, 25346, 35074, 20054, 25296, 24618, 26874, 20851, 23448,
+    20896, 35266, 31649, 39302, 32592, 24815, 28748, 36143, 20809,
+    [12084, 24191], 36891, 29808, 35268, 22317, 30789, 24402, 40863, 38394,
+    36712, [12225, 39740], 35809, 30328, 26690, 26588, 36330, 36149, 21053,
+    36746, 28378, 26829, 38149, 37101, 22269, 26524, 35065, 36807, 21704,
+    39608, 23401, 28023, 27686, 20133, 23475, 39559, 37219, 25000, 37039,
+    38889, 21547, 28085, 23506, 20989, 21898, 32597, 32752, 25788, 25421,
+    26097, 25022, 24717, 28938, 27735, 27721, 22831, 26477, 33322, 22741,
+    22158, 35946, 27627, 37085, 22909, 32791, 21495, 28009, 21621, 21917,
+    33655, 33743, 26680, [12146, 31166], 21644, 20309, 21512, 30418, 35977,
+    38402, 27827, 28088, 36203, 35088, 40548, 36154, 22079, [12234, 40657],
+    30165, 24456, 29408, 24680, 21756, 20136, 27178, 34913, 24658, 36720,
+    21700, 28888, 34425, 40511, 27946, 23439, 24344, 32418, 21897, 20399,
+    29492, 21564, 21402, 20505, 21518, 21628, 20046, 24573, 29786, 22774,
+    33899, 32993, 34676, 29392, 31946, 28246, 24359, 34382, 21804, 25252,
+    20114, 27818, 25143, 33457, 21719, 21326, 29502, 28369, 30011, 21010,
+    21270, 35805, 27088, 24458, 24576, 28142, 22351, 27426, 29615, 26707,
+    36824, 32531, 25442, 24739, 21796, 30186, 35938, 28949, 28067, 23462,
+    24187, 33618, 24908, 40644, 30970, 34647, 31783, 30343, 20976, 24822,
+    29004, 26179, 24140, 24653, 35854, 28784, 25381, 36745, 24509, 24674,
+    34516, 22238, 27585, 24724, 24935, 21321, 24800, 26214, 36159, 31229,
+    20250, 28905, 27719, 35763, 35826, 32472, 33636, 26127, 23130, 39746,
+    27985, 28151, 35905, 27963, 20249, [12117, 28779], 33719, 25110, 24785,
+    38669, 36135, 31096, 20987, 22334, 22522, 26426, 30072, 31293, 31215,
+    31637, 32908, 39269, 36857, 28608, 35749, 40481, 23020, 32489, 32521,
+    21513, 26497, 26840, 36753, 31821, 38598, 21450, 24613, 30142, 27762,
+    21363, 23241, 32423, 25380, [12047, 20960], 33034, [12080, 24049], 34015,
+    25216, 20864, 23395, 20238, 31085, 21058, 24760, 27982, 23492, 23490,
+    35745, 35760, 26082, 24524, 38469, 22931, 32487, 32426, 22025, 26551,
+    22841, 20339, 23478, 21152, 33626, 39050, 36158, 30002, 38078, 20551,
+    31292, 20215, 26550, 39550, 23233, 27516, 30417, 22362, 23574, 31546,
+    38388, 29006, 20860, 32937, 33392, 22904, 32516, 33575, 26816, 26604,
+    30897, 30839, 25315, 25441, 31616, 20461, 21098, 20943, 33616, 27099,
+    37492, 36341, 36145, 35265, 38190, 31661, 20214, 20581, 33328, 21073,
+    39279, 28176, 28293, 28071, 24314, 20725, 23004, 23558, 27974, 27743,
+    30086, 33931, 26728, 22870, 35762, 21280, 37233, 38477, 34121, 26898,
+    30977, 28966, 33014, 20132, 37066, 27975, 39556, 23047, 22204, 25605,
+    38128, 30699, 20389, 33050, 29409, [12179, 35282], 39290, 32564, 32478,
+    21119, 25945, 37237, 36735, 36739, 21483, 31382, 25581, 25509, 30342,
+    31224, 34903, 38454, 25130, 21163, 33410, 26708, 26480, 25463, 30571,
+    31469, 27905, 32467, 35299, 22992, 25106, 34249, 33445, 30028, 20511,
+    20171, 30117, 35819, 23626, [12081, 24062], 31563, [12100, 26020],
+    [12198, 37329], 20170, 27941, 35167, 32039, 38182, 20165, 35880, 36827,
+    38771, 26187, 31105, 36817, 28908, 28024, 23613, 21170, 33606, 20834,
+    33550, 30555, 26230, 40120, 20140, 24778, 31934, 31923, 32463, 20117,
+    35686, 26223, 39048, 38745, 22659, 25964, 38236, 24452, 30153, 38742,
+    31455, 31454, 20928, 28847, 31384, 25578, 31350, 32416, 29590,
+    [12210, 38893], 20037, 28792, 20061, 37202, 21417, 25937, 26087,
+    [12165, 33276], 33285, 21646, 23601, 30106, 38816, 25304, 29401, 30141,
+    23621, 39545, 33738, 23616, 21632, 30697, 20030, 27822, 32858, 25298,
+    25454, 24040, 20855, 36317, 36382, 38191, 20465, 21477, 24807, 28844,
+    21095, 25424, 40515, 23071, 20518, 30519, 21367, 32482, 25733, 25899,
+    25225, 25496, 20500, 29237, 35273, 20915, 35776, 32477, 22343, 33740,
+    38055, 20891, 21531, 23803, 20426, 31459, 27994, 37089, 39567, 21888,
+    21654, 21345, 21679, 24320, 25577, 26999, 20975, 24936, 21002, 22570,
+    21208, 22350, 30733, 30475, 24247, 24951, 31968, 25179, 25239, 20130,
+    28821, 32771, 25335, 28900, 38752, 22391, 33499, 26607, 26869, 30933,
+    39063, 31185, 22771, 21683, 21487, 28212, 20811, 21051, 23458, 35838,
+    32943, 21827, 22438, 24691, 22353, 21549, 31354, 24656, 23380, 25511,
+    25248, [12061, 21475], 25187, 23495, 26543, 21741, 31391, 33510, 37239,
+    24211, 35044, 22840, 22446, 25358, 36328, 33007, 22359, 31607, 20393,
+    24555, 23485, 27454, 21281, 31568, 29378, 26694, 30719, 30518, 26103,
+    20917, 20111, 30420, 23743, 31397, 33909, 22862, 39745, 20608, 39304,
+    24871, 28291, 22372, 26118, 25414, 22256, 25324, 25193, 24275, 38420,
+    22403, 25289, 21895, 34593, 33098, 36771, 21862, 33713, 26469, 36182,
+    34013, 23146, 26639, 25318, 31726, 38417, 20848, 28572, 35888, 25597,
+    35272, 25042, 32518, 28866, 28389, 29701, 27028, 29436, 24266, 37070,
+    26391, 28010, 25438, 21171, 29282, [12156, 32769], 20332, 23013, 37226,
+    28889, 28061, 21202, 20048, 38647, 38253, 34174, 30922, 32047, 20769,
+    22418, 25794, 32907, 31867, 27882, 26865, 26974, 20919, 21400, 26792,
+    29313, 40654, 31729, 29432, 31163, 28435, 29702, 26446, [12197, 37324],
+    40100, 31036, 33673, 33620, 21519, 26647, 20029, 21385, 21169, 30782,
+    21382, 21033, 20616, 20363, 20432, 30178, [12148, 31435], 31890, 27813,
+    [12202, 38582], [12050, 21147], 29827, 21737, 20457, 32852, 33714, 36830,
+    38256, 24265, 24604, 28063, 24088, 25947, 33080, 38142, 24651, 28860,
+    32451, 31918, 20937, 26753, 31921, 33391, 20004, 36742, 37327, 26238,
+    20142, 35845, 25769, 32842, 20698, 30103, 29134, 23525, 36797, 28518,
+    20102, 25730, 38243, 24278, 26009, 21015, 35010, 28872, 21155, 29454,
+    29747, 26519, 30967, 38678, 20020, 37051, 40158, 28107, 20955, 36161,
+    21533, 25294, 29618, 33777, 38646, 40836, 38083, 20278, 32666, 20940,
+    28789, 38517, 23725, 39046, 21478, 20196, 28316, 29705, 27060, 30827,
+    39311, 30041, 21016, 30244, 27969, 26611, 20845, 40857, 32843, 21657,
+    31548, 31423, 38534, 22404, 25314, 38471, 27004, 23044, 25602, 31699,
+    28431, 38475, 33446, 21346, 39045, 24208, 28809, 25523, 21348, 34383,
+    40065, 40595, 30860, 38706, 36335, 36162, [12229, 40575], 28510, 31108,
+    24405, 38470, 25134, 39540, 21525, 38109, 20387, 26053, 23653, 23649,
+    32533, 34385, 27695, 24459, 29575, 28388, 32511, 23782, 25371, 23402,
+    28390, 21365, 20081, 25504, 30053, 25249, 36718, 20262, 20177, 27814,
+    32438, 35770, 33821, 34746, 32599, 36923, 38179, 31657, 39585, 35064,
+    33853, 27931, 39558, 32476, 22920, [12231, 40635], 29595, 30721, 34434,
+    39532, 39554, 22043, 21527, 22475, 20080, 40614, 21334, 36808, 33033,
+    30610, 39314, 34542, 28385, 34067, 26364, 24930, 28459, 35881, 33426,
+    33579, 30450, 27667, 24537, 33725, 29483, 33541, 38170, [12113, 27611],
+    [12141, 30683], 38086, 21359, 33538, 20882, 24125, 35980, 36152, 20040,
+    29611, 26522, 26757, 37238, 38665, 29028, 27809, 30473, 23186, 38209,
+    27599, 32654, 26151, 23504, 22969, 23194, 38376, 38391, 20204, 33804,
+    33945, 27308, 30431, 38192, 29467, 26790, 23391, 30511, 37274, 38753,
+    31964, 36855, 35868, 24357, [12150, 31859], 31192, 35269, 27852, 34588,
+    23494, 24130, 26825, 30496, 32501, 20885, 20813, 21193, 23081, 32517,
+    [12207, 38754], 33495, 25551, 30596, 34256, 31186, 28218, 24217, 22937,
+    34065, 28781, 27665, 25279, [12139, 30399], 25935, 24751, 38397, 26126,
+    34719, 40483, 38125, 21517, 21629, 35884, {f: 2, c: 25720}, 34321, 27169,
+    33180, 30952, 25705, 39764, 25273, 26411, 33707, 22696, 40664, 27819,
+    28448, 23518, 38476, 35851, 29279, 26576, 25287, 29281, 20137, 22982,
+    27597, 22675, 26286, 24149, 21215, 24917, [12106, 26408], [12140, 30446],
+    30566, 29287, 31302, 25343, 21738, 21584, 38048, 37027, 23068, 32435,
+    27670, 20035, 22902, 32784, 22856, 21335, 30007, 38590, 22218, 25376,
+    33041, 24700, 38393, 28118, 21602, 39297, 20869, 23273, 33021, 22958,
+    38675, 20522, 27877, 23612, 25311, 20320, 21311, 33147, 36870, 28346,
+    34091, 25288, 24180, 30910, 25781, 25467, 24565, 23064, 37247, 40479,
+    23615, 25423, 32834, 23421, 21870, 38218, 38221, 28037, 24744, 26592,
+    29406, 20957, 23425, 25319, 27870, [12124, 29275], 25197, 38062, 32445,
+    33043, 27987, 20892, 24324, 22900, 21162, 24594, [12069, 22899], 26262,
+    34384, 30111, 25386, 25062, 31983, 35834, 21734, 27431, 40485, 27572,
+    34261, 21589, 20598, 27812, 21866, 36276, 29228, 24085, 24597, 29750,
+    25293, 25490, 29260, 24472, 28227, 27966, 25856, 28504, 30424, 30928,
+    30460, 30036, 21028, 21467, 20051, 24222, 26049, 32810, 32982, 25243,
+    21638, 21032, 28846, 34957, 36305, 27873, 21624, 32986, 22521, 35060,
+    36180, 38506, 37197, 20329, 27803, 21943, 30406, 30768, 25256, 28921,
+    28558, 24429, 34028, 26842, 30844, 31735, 33192, 26379, 40527, 25447,
+    30896, 22383, 30738, 38713, 25209, 25259, 21128, 29749, 27607, 21860,
+    33086, 30130, [12138, 30382], 21305, 30174, 20731, 23617, 35692, 31687,
+    20559, [12122, 29255], 39575, 39128, 28418, 29922, 31080, 25735, 30629,
+    25340, 39057, 36139, 21697, 32856, 20050, 22378, 33529, 33805, 24179,
+    20973, 29942, 35780, 23631, 22369, 27900, 39047, 23110, 30772, 39748,
+    36843, 31893, 21078, 25169, 38138, 20166, 33670, 33889, 33769, 33970,
+    22484, 26420, 22275, 26222, 28006, 35889, 26333, 28689, 26399, 27450,
+    26646, 25114, 22971, 19971, 20932, 28422, 26578, 27791, 20854, 26827,
+    22855, 27495, 30054, 23822, 33040, 40784, 26071, 31048, 31041, 39569,
+    36215, 23682, 20062, 20225, 21551, 22865, 30732, 22120, [12115, 27668],
+    36804, 24323, 27773, 27875, 35755, 25488, 24688, 27965, 29301, 25190,
+    38030, 38085, 21315, 36801, 31614, 20191, 35878, 20094, 40660, 38065,
+    38067, 21069, 28508, 36963, 27973, 35892, 22545, 23884, [12107, 27424],
+    27465, 26538, 21595, 33108, 32652, 22681, 34103, 24378, 25250, 27207,
+    38201, 25970, 24708, 26725, 30631, 20052, 20392, 24039, 38808, 25772,
+    32728, 23789, 20431, 31373, 20999, 33540, 19988, 24623, 31363, 38054,
+    20405, 20146, 31206, 29748, 21220, 33465, 25810, 31165, 23517, 27777,
+    38738, 36731, 27682, 20542, 21375, 28165, 25806, 26228, 27696, 24773,
+    39031, 35831, 24198, 29756, 31351, 31179, 19992, 37041, 29699, 27714,
+    22234, 37195, 27845, 36235, 21306, 34502, 26354, 36527, 23624, 39537,
+    28192, 21462, 23094, 40843, 36259, 21435, 22280, 39079, 26435, 37275,
+    27849, 20840, 30154, 25331, [12125, 29356], 21048, 21149, 32570, 28820,
+    30264, 21364, 40522, 27063, 30830, 38592, 35033, 32676, 28982, 29123,
+    20873, 26579, 29924, 22756, 25880, 22199, 35753, 39286, 25200, 32469,
+    24825, 28909, 22764, 20161, [12040, 20154], 24525, 38887, 20219, 35748,
+    20995, 22922, 32427, 25172, 20173, [12103, 26085], 25102, 33592, 33993,
+    33635, 34701, 29076, 28342, 23481, 32466, 20887, 25545, 26580,
+    [12161, 32905], 33593, 34837, 20754, 23418, 22914, 36785, 20083, 27741,
+    [12042, 20837], 35109, 36719, 38446, 34122, 29790, 38160, 38384, 28070,
+    33509, 24369, 25746, 27922, 33832, 33134, 40131, 22622, 36187, 19977,
+    21441, 20254, 25955, 26705, 21971, 20007, 25620, 39578, 25195, 23234,
+    29791, [12170, 33394], 28073, 26862, 20711, 33678, 30722, 26432, 21049,
+    27801, 32433, 20667, 21861, 29022, 31579, 26194, 29642, 33515, 26441,
+    [12077, 23665], 21024, 29053, 34923, 38378, 38485, 25797, 36193, 33203,
+    21892, 27733, 25159, 32558, 22674, 20260, 21830, 36175, 26188, 19978,
+    23578, 35059, 26786, 25422, 31245, 28903, 33421, 21242, 38902, 23569,
+    21736, 37045, 32461, 22882, 36170, 34503, [12166, 33292], 33293, 36198,
+    25668, 23556, 24913, 28041, 31038, 35774, 30775, 30003, 21627, 20280,
+    [12189, 36523], 28145, 23072, 32453, 31070, 27784, 23457, 23158, 29978,
+    32958, 24910, 28183, 22768, [12131, 29983], 29989, 29298, 21319, 32499,
+    30465, 30427, 21097, 32988, 22307, 24072, 22833, 29422, 26045, 28287,
+    35799, [12075, 23608], 34417, [12055, 21313], [12143, 30707], 25342, 26102,
+    20160, [12215, 39135], 34432, 23454, 35782, 21490, [12142, 30690], 20351,
+    23630, 39542, 22987, 24335, [12144, 31034], [12064, 22763], 19990, 26623,
+    20107, 25325, 35475, 36893, 21183, 26159, 21980, 22124, 36866, 20181,
+    20365, 37322, 39280, [12114, 27663], 24066, 24643, 23460, 35270, 35797,
+    25910, [12095, 25163], [12216, 39318], 23432, 23551, 25480, 21806, 21463,
+    30246, 20861, 34092, 26530, 26803, 27530, 25234, 36755, 21460, 33298,
+    28113, 30095, 20070, 36174, 23408, 29087, 34223, 26257, 26329, 32626,
+    34560, [12233, 40653], [12239, 40736], 23646, 26415, 36848, 26641, 26463,
+    25101, 31446, 22661, 24246, 25968, 28465, 24661, 21047, 32781, 25684,
+    34928, 29993, 24069, 26643, 25332, 38684, 21452, 29245, 35841,
+    [12116, 27700], 30561, 31246, 21550, 30636, 39034, 33308, 35828, 30805,
+    26388, 28865, 26031, 25749, 22070, 24605, 31169, 21496, 19997, 27515,
+    32902, 23546, 21987, 22235, 20282, 20284, 39282, 24051, 26494, 32824,
+    24578, 39042, 36865, 23435, 35772, 35829, 25628, 33368, 25822, 22013,
+    33487, 37221, 20439, 32032, 36895, 31903, 20723, 22609, 28335, 23487,
+    35785, 32899, 37240, 33948, 31639, 34429, 38539, 38543, 32485, 39635,
+    30862, 23681, 31319, 36930, 38567, 31071, 23385, 25439, 31499, 34001,
+    26797, 21766, 32553, 29712, 32034, 38145, 25152, 22604, 20182, 23427,
+    22905, 22612, 29549, 25374, 36427, 36367, 32974, 33492, 25260, 21488,
+    27888, 37214, 22826, 24577, 27760, 22349, 25674, 36138, 30251, 28393,
+    22363, 27264, 30192, 28525, 35885, 35848, 22374, 27631, 34962, 30899,
+    25506, 21497, 28845, 27748, 22616, 25642, 22530, 26848, 33179, 21776,
+    31958, 20504, 36538, 28108, 36255, 28907, 25487, 28059, 28372, 32486,
+    33796, 26691, 36867, 28120, 38518, 35752, 22871, 29305, 34276, 33150,
+    30140, 35466, 26799, 21076, 36386, 38161, 25552, 39064, 36420, 21884,
+    20307, 26367, 22159, 24789, 28053, 21059, 23625, 22825, 28155, 22635,
+    [12133, 30000], 29980, 24684, 33300, 33094, 25361, 26465, 36834, 30522,
+    36339, 36148, 38081, 24086, 21381, 21548, 28867, 27712, 24311, 20572,
+    20141, 24237, 25402, 33351, 36890, 26704, 37230, 30643, 21516, 38108,
+    24420, 31461, 26742, 25413, 31570, 32479, 30171, 20599, 25237, 22836,
+    36879, 20984, 31171, 31361, 22270, 24466, 36884, 28034, 23648,
+    [12063, 22303], 21520, 20820, 28237, 22242, 25512, 39059, 33151, 34581,
+    35114, 36864, 21534, 23663, 33216, 25302, 25176, 33073, 40501, 38464,
+    39534, 39548, 26925, 22949, 25299, 21822, 25366, 21703, 34521, 27964,
+    23043, [12129, 29926], 34972, 27498, 22806, 35916, 24367, 28286, 29609,
+    39037, 20024, 28919, 23436, 30871, 25405, 26202, 30358, 24779, 23451,
+    23113, 19975, 33109, 27754, 29579, 20129, 26505, [12153, 32593], 24448,
+    26106, 26395, 24536, 22916, 23041, 24013, 24494, 21361, 38886, 36829,
+    26693, 22260, 21807, 24799, 20026, 28493, 32500, 33479, 33806, 22996,
+    20255, 20266, 23614, 32428, 26410, 34074, 21619, 30031, 32963, 21890,
+    39759, 20301, 28205, 35859, 23561, 24944, 21355, 30239, 28201, 34442,
+    [12098, 25991], 38395, 32441, 21563, 31283, 32010, 38382, 21985, 32705,
+    29934, 25373, 34583, 28065, 31389, 25105, 26017, 21351, 25569, 27779,
+    24043, 21596, 38056, 20044, 27745, 35820, 23627, [12102, 26080], 33436,
+    26791, 21566, 21556, [12111, 27595], 27494, 20116, 25410, 21320, 33310,
+    20237, 20398, 22366, 25098, 38654, 26212, 29289, 21247, 21153, 24735,
+    35823, 26132, 29081, 26512, 35199, 30802, 30717, 26224, 22075, 21560,
+    38177, 29306, 31232, 24687, 24076, 24713, 33181, [12067, 22805], 24796,
+    29060, 28911, 28330, 27728, 29312, 27268, 34989, 24109, 20064, 23219,
+    21916, 38115, 27927, 31995, 38553, 25103, 32454, 30606, 34430, 21283,
+    38686, 36758, 26247, 23777, 20384, 29421, 19979, 21414, 22799, 21523,
+    25472, 38184, 20808, 20185, 40092, 32420, 21688, 36132, 34900, 33335,
+    38386, 28046, 24358, 23244, 26174, 38505, 29616, 29486, 21439, 33146,
+    39301, 32673, 23466, 38519, 38480, 32447, 30456, 21410, 38262,
+    [12217, 39321], 31665, 35140, 28248, 20065, 32724, 31077, 35814, 24819,
+    21709, 20139, 39033, 24055, 27233, 20687, 21521, 35937, 33831, 30813,
+    38660, 21066, 21742, 22179, 38144, 28040, 23477, 28102, 26195,
+    [12073, 23567], 23389, 26657, 32918, 21880, 31505, 25928, 26964, 20123,
+    27463, 34638, 38795, 21327, 25375, 25658, 37034, 26012, 32961, 35856,
+    20889, 26800, 21368, 34809, 25032, 27844, 27899, 35874, 23633, 34218,
+    33455, 38156, 27427, [12191, 36763], 26032, 24571, [12092, 24515], 20449,
+    34885, 26143, 33125, 29481, 24826, 20852, 21009, 22411, 24418, 37026,
+    [12175, 34892], 37266, 24184, 26447, 24615, 22995, 20804, 20982, 33016,
+    21256, 27769, 38596, 29066, 20241, 20462, 32670, 26429, 21957, 38152,
+    31168, 34966, 32483, 22687, 25100, 38656, 34394, 22040, 39035, 24464,
+    35768, 33988, 37207, 21465, 26093, 24207, 30044, 24676, 32110, 23167,
+    32490, 32493, 36713, 21927, 23459, 24748, 26059, [12126, 29572], 36873,
+    30307, 30505, 32474, 38772, 34203, 23398, [12147, 31348], 38634,
+    [12174, 34880], 21195, 29071, 24490, 26092, 35810, 23547, 39535, 24033,
+    27529, 27739, 35757, 35759, 36874, 36805, 21387, 25276, 40486, 40493,
+    21568, 20011, 33469, [12123, 29273], 34460, 23830, 34905, 28079, 38597,
+    21713, 20122, 35766, 28937, 21693, 38409, 28895, 28153, 30416, 20005,
+    30740, 34578, 23721, 24310, [12180, 35328], 39068, 38414, 28814, 27839,
+    22852, 25513, 30524, 34893, 28436, 33395, 22576, 29141, 21388, 30746,
+    38593, 21761, 24422, 28976, 23476, 35866, 39564, 27523, 22830, 40495,
+    31207, 26472, 25196, 20335, 30113, [12154, 32650], 27915, 38451, 27687,
+    20208, 30162, 20859, 26679, 28478, 36992, 33136, 22934, 29814, 25671,
+    23591, 36965, 31377, 35875, 23002, 21676, 33280, 33647, 35201, 32768,
+    26928, 22094, 32822, 29239, 37326, 20918, 20063, 39029, 25494, 19994,
+    21494, 26355, 33099, 22812, 28082, [12032, 19968], 22777, 21307, 25558,
+    38129, 20381, 20234, [12176, 34915], 39056, 22839, 36951, 31227, 20202,
+    33008, 30097, 27778, 23452, 23016, 24413, 26885, 34433, 20506, 24050,
+    [12036, 20057], 30691, 20197, 33402, 25233, 26131, [12194, 37009], 23673,
+    20159, 24441, 33222, 36920, 32900, 30123, 20134, 35028, 24847, 27589,
+    24518, 20041, 30410, 28322, 35811, 35758, 35850, 35793, 24322, 32764,
+    32716, 32462, 33589, 33643, 22240, 27575, [12211, 38899], 38452, 23035,
+    21535, 38134, 28139, 23493, 39278, 23609, 24341, 38544, 21360, 33521,
+    27185, 23156, 40560, 24212, 32552, 33721, {f: 2, c: 33828}, 33639, 34631,
+    36814, 36194, 30408, 24433, 39062, 30828, 26144, 21727, 25317, 20323,
+    33219, 30152, 24248, 38605, 36362, 34553, 21647, 27891, 28044, 27704,
+    24703, 21191, [12132, 29992], 24189, 20248, 24736, 24551, 23588, 30001,
+    37038, 38080, 29369, 27833, 28216, [12195, 37193], 26377, 21451, 21491,
+    20305, 37321, 35825, [12060, 21448], 24188, 36802, 28132, 20110, 30402,
+    27014, 34398, 24858, 33286, 20313, 20446, 36926, 40060, 24841, 28189,
+    28180, 38533, 20104, 23089, [12204, 38632], 19982, 23679, 31161, 23431,
+    35821, [12155, 32701], [12127, 29577], 22495, 33419, 37057, 21505, 36935,
+    21947, 23786, 24481, 24840, 27442, 29425, 32946, 35465, 28020, 23507,
+    35029, 39044, 35947, 39533, 40499, 28170, 20900, 20803, 22435, 34945,
+    21407, 25588, 36757, 22253, 21592, 22278, 29503, 28304, 32536, 36828,
+    33489, 24895, 24616, 38498, [12104, 26352], 32422, 36234, 36291, 38053,
+    23731, 31908, [12105, 26376], 24742, 38405, 32792, 20113, 37095, 21248,
+    38504, 20801, 36816, 34164, 37213, 26197, 38901, 23381, 21277, 30776,
+    26434, 26685, 21705, 28798, 23472, 36733, 20877, 22312, 21681, 25874,
+    26242, 36190, 36163, 33039, 33900, 36973, 31967, 20991, 34299, 26531,
+    26089, 28577, 34468, 36481, 22122, 36896, 30338, 28790, 29157, 36131,
+    25321, 21017, 27901, 36156, 24590, 22686, 24974, 26366, 36192, 25166,
+    21939, 28195, 26413, 36711, 38113, 38392, 30504, 26629, 27048, 21643,
+    20045, 28856, 35784, 25688, 25995, 23429, 31364, 20538, 23528, 30651,
+    27617, 35449, 31896, 27838, 30415, 26025, 36759, 23853, 23637, 34360,
+    26632, 21344, 25112, 31449, 28251, 32509, 27167, 31456, 24432, 28467,
+    24352, 25484, 28072, 26454, 19976, 24080, 36134, 20183, 32960, 30260,
+    38556, 25307, 26157, 25214, 27836, 36213, 29031, 32617, 20806, 32903,
+    21484, 36974, 25240, 21746, 34544, 36761, 32773, 38167, 34071, 36825,
+    27993, 29645, 26015, 30495, 29956, 30759, 33275, 36126, 38024, 20390,
+    26517, 30137, 35786, 38663, 25391, 38215, 38453, 33976, 25379, 30529,
+    24449, 29424, 20105, 24596, 25972, 25327, 27491, 25919, 24103, 30151,
+    37073, 35777, 33437, 26525, [12096, 25903], 21553, 34584, 30693, 32930,
+    33026, 27713, 20043, 32455, 32844, 30452, 26893, 27542, 25191, 20540,
+    20356, 22336, 25351, [12108, 27490], 36286, 21482, 26088, 32440, 24535,
+    25370, 25527, [12164, 33267], 33268, 32622, 24092, 23769, 21046, 26234,
+    31209, 31258, 36136, 28825, 30164, 28382, 27835, 31378, 20013, 30405,
+    24544, 38047, 34935, 32456, 31181, 32959, 37325, 20210, 20247,
+    [12168, 33311], 21608, 24030, 27954, 35788, 31909, 36724, 32920, 24090,
+    21650, 30385, 23449, 26172, 39588, 29664, 26666, 34523, 26417, 29482,
+    35832, 35803, 36880, [12149, 31481], 28891, 29038, 25284, 30633, 22065,
+    20027, 33879, 26609, 21161, 34496, 36142, 38136, 31569, 20303, 27880,
+    31069, 39547, 25235, [12118, 29226], 25341, 19987, 30742, 36716, 25776,
+    36186, 31686, 26729, 24196, 35013, 22918, 25758, 22766, 29366, 26894,
+    38181, 36861, 36184, 22368, 32512, 35846, 20934, 25417, 25305, 21331,
+    26700, 29730, 33537, 37196, 21828, 30528, 28796, 27978, 20857, 21672,
+    36164, 23039, 28363, 28100, 23388, 32043, 20180, 31869, 28371,
+    [12070, 23376], [12163, 33258], 28173, 23383, 39683, 26837, 36394, 23447,
+    32508, 24635, 32437, 37049, [12187, 36208], 22863, 25549, 31199,
+    [12188, 36275], 21330, 26063, 31062, 35781, 38459, 32452, 38075, 32386,
+    22068, 37257, 26368, 32618, 23562, 36981, 26152, 24038, 20304, 26590,
+    20570, 20316, 22352, 24231, 20109, 19980, 20800, 19984, 24319, 21317,
+    19989, 20120, 19998, [12224, 39730], 23404, 22121, [12033, 20008], 31162,
+    [12035, 20031], [12052, 21269], 20039, 22829, [12120, 29243], 21358, 27664,
+    22239, 32996, 39319, 27603, 30590, 40727, [12034, 20022], 20127, 40720,
+    20060, 20073, 20115, 33416, 23387, 21868, 22031, 20164, 21389, 21405,
+    21411, 21413, 21422, 38757, 36189, [12053, 21274], 21493, 21286, 21294,
+    21310, 36188, 21350, 21347, 20994, 21000, 21006, 21037, 21043,
+    {f: 2, c: 21055}, 21068, 21086, 21089, 21084, 33967, 21117, 21122, 21121,
+    21136, 21139, [12044, 20866], 32596, 20155, 20163, 20169, 20162, 20200,
+    20193, 20203, 20190, 20251, 20211, 20258, 20324, 20213, 20261, 20263,
+    20233, 20267, 20318, 20327, 25912, 20314, 20317, 20319, 20311, 20274,
+    20285, 20342, 20340, 20369, 20361, 20355, 20367, 20350, 20347, 20394,
+    20348, 20396, 20372, 20454, 20456, 20458, 20421, 20442, 20451, 20444,
+    20433, 20447, 20472, 20521, 20556, 20467, 20524, 20495, 20526, 20525,
+    20478, 20508, 20492, 20517, 20520, 20606, 20547, 20565, 20552, 20558,
+    20588, 20603, 20645, 20647, 20649, 20666, 20694, 20742, 20717, 20716,
+    20710, 20718, 20743, 20747, 20189, 27709, 20312, 20325, 20430,
+    [12245, 40864], 27718, 31860, 20846, 24061, 40649, 39320, 20865, 22804,
+    [12051, 21241], 21261, 35335, 21264, 20971, 22809, 20821, [12039, 20128],
+    20822, 20147, 34926, 34980, 20149, 33044, 35026, 31104, 23348, 34819,
+    32696, [12046, 20907], 20913, 20925, 20924, 20935, [12045, 20886], 20898,
+    20901, 35744, {f: 2, c: 35750}, 35754, {f: 2, c: 35764}, 35767,
+    {f: 2, c: 35778}, 35787, 35791, 35790, {f: 3, c: 35794}, 35798,
+    {f: 2, c: 35800}, 35804, {f: 2, c: 35807}, 35812, {f: 2, c: 35816}, 35822,
+    35824, 35827, 35830, 35833, 35836, {f: 2, c: 35839}, 35842, 35844, 35847,
+    35852, 35855, {f: 2, c: 35857}, {f: 3, c: 35860}, 35865, 35867, 35864,
+    35869, {f: 3, c: 35871}, 35877, 35879, {f: 2, c: 35882}, {f: 2, c: 35886},
+    {f: 2, c: 35890}, {f: 2, c: 35893}, [12057, 21353], 21370, 38429, 38434,
+    38433, 38449, 38442, 38461, 38460, 38466, 38473, 38484, 38495, 38503,
+    38508, 38514, 38516, 38536, 38541, 38551, 38576, 37015, 37019, 37021,
+    37017, 37036, 37025, 37044, 37043, 37046, 37050, 37048, 37040, 37071,
+    37061, 37054, 37072, 37060, 37063, 37075, 37094, 37090, 37084, 37079,
+    37083, 37099, 37103, 37118, 37124, 37154, 37150, 37155, 37169, 37167,
+    37177, 37187, 37190, 21005, 22850, 21154, {f: 2, c: 21164}, 21182, 21759,
+    21200, 21206, 21232, 21471, 29166, 30669, [12085, 24308], [12048, 20981],
+    20988, [12223, 39727], [12059, 21430], 24321, 30042, 24047, 22348, 22441,
+    22433, 22654, 22716, 22725, 22737, 22313, 22316, 22314, 22323, 22329,
+    {f: 2, c: 22318}, 22364, 22331, 22338, 22377, 22405, 22379, 22406, 22396,
+    22395, 22376, 22381, 22390, 22387, 22445, 22436, 22412, 22450, 22479,
+    22439, 22452, 22419, 22432, 22485, 22488, 22490, 22489, 22482, 22456,
+    22516, 22511, 22520, 22500, 22493, 22539, 22541, 22525, 22509, 22528,
+    22558, 22553, 22596, 22560, 22629, 22636, 22657, 22665, 22682, 22656,
+    39336, 40729, 25087, 33401, 33405, 33407, 33423, 33418, 33448, 33412,
+    33422, 33425, 33431, 33433, 33451, 33464, 33470, 33456, 33480, 33482,
+    33507, 33432, 33463, 33454, {f: 2, c: 33483}, 33473, 33449, 33460, 33441,
+    33450, 33439, 33476, 33486, 33444, 33505, 33545, 33527, 33508, 33551,
+    33543, 33500, 33524, 33490, 33496, 33548, 33531, 33491, 33553, 33562,
+    33542, {f: 2, c: 33556}, 33504, 33493, 33564, 33617, {f: 2, c: 33627},
+    33544, 33682, 33596, 33588, 33585, 33691, 33630, 33583, 33615, 33607,
+    33603, 33631, 33600, 33559, 33632, 33581, 33594, 33587, 33638, 33637,
+    33640, 33563, 33641, 33644, 33642, {f: 2, c: 33645}, 33712, 33656,
+    {f: 2, c: 33715}, 33696, 33706, 33683, 33692, 33669, 33660, 33718, 33705,
+    33661, 33720, 33659, 33688, 33694, 33704, 33722, 33724, 33729, 33793,
+    33765, 33752, 22535, 33816, 33803, 33757, 33789, 33750, 33820, 33848,
+    33809, 33798, 33748, 33759, 33807, 33795, {f: 2, c: 33784}, 33770, 33733,
+    33728, 33830, 33776, 33761, 33884, 33873, 33882, 33881, 33907,
+    {f: 2, c: 33927}, 33914, 33929, 33912, 33852, 33862, 33897, 33910, 33932,
+    33934, 33841, 33901, 33985, 33997, 34000, 34022, 33981, 34003, 33994,
+    33983, 33978, 34016, 33953, 33977, 33972, 33943, 34021, 34019, 34060,
+    29965, 34104, 34032, 34105, 34079, 34106, 34134, 34107, 34047, 34044,
+    34137, 34120, 34152, 34148, 34142, 34170, 30626, 34115, 34162, 34171,
+    34212, 34216, 34183, 34191, 34169, 34222, 34204, 34181, 34233, 34231,
+    34224, 34259, 34241, 34268, 34303, 34343, 34309, 34345, 34326, 34364,
+    [12086, 24318], 24328, 22844, 22849, 32823, 22869, 22874, 22872, 21263,
+    [12074, 23586], 23589, 23596, 23604, 25164, 25194, 25247, 25275, 25290,
+    25306, 25303, 25326, 25378, 25334, 25401, 25419, 25411, 25517, 25590,
+    25457, 25466, 25486, 25524, 25453, 25516, 25482, 25449, 25518, 25532,
+    25586, 25592, 25568, 25599, 25540, 25566, 25550, 25682, 25542, 25534,
+    25669, 25665, 25611, 25627, 25632, 25612, 25638, 25633, 25694, 25732,
+    25709, 25750, 25722, {f: 2, c: 25783}, 25753, 25786, 25792, 25808, 25815,
+    25828, 25826, 25865, 25893, 25902, [12087, 24331], 24530, 29977, 24337,
+    21343, 21489, 21501, 21481, 21480, 21499, 21522, 21526, 21510, 21579,
+    {f: 3, c: 21586}, 21590, 21571, 21537, 21591, 21593, 21539, 21554, 21634,
+    21652, 21623, 21617, 21604, {f: 2, c: 21658}, 21636, 21622, 21606, 21661,
+    21712, 21677, 21698, 21684, 21714, 21671, 21670, {f: 2, c: 21715}, 21618,
+    21667, 21717, 21691, 21695, 21708, {f: 2, c: 21721}, 21724,
+    {f: 2, c: 21673}, 21668, 21725, 21711, 21726, 21787, 21735, 21792, 21757,
+    21780, 21747, {f: 2, c: 21794}, 21775, 21777, 21799, 21802, 21863, 21903,
+    21941, 21833, 21869, 21825, 21845, 21823, 21840, 21820, 21815, 21846,
+    {f: 3, c: 21877}, 21811, 21808, 21852, 21899, 21970, 21891, 21937, 21945,
+    21896, 21889, 21919, 21886, 21974, 21905, 21883, 21983, {f: 2, c: 21949},
+    21908, 21913, 21994, 22007, 21961, 22047, 21969, {f: 2, c: 21995}, 21972,
+    21990, 21981, 21956, 21999, 21989, {f: 2, c: 22002}, {f: 2, c: 21964},
+    21992, 22005, 21988, 36756, 22046, 22024, 22028, 22017, 22052, 22051,
+    22014, 22016, 22055, 22061, 22104, 22073, 22103, 22060, 22093, 22114,
+    22105, 22108, 22092, 22100, 22150, 22116, 22129, 22123, {f: 2, c: 22139},
+    22149, 22163, 22191, 22228, [12062, 22231], 22237, 22241, 22261, 22251,
+    22265, 22271, 22276, 22282, 22281, 22300, 24079, 24089, 24084, 24081,
+    24113, {f: 2, c: 24123}, 24119, 24132, 24148, 24155, 24158, 24161, 23692,
+    23674, 23693, 23696, 23702, 23688, {f: 2, c: 23704}, 23697, 23706, 23708,
+    23733, 23714, 23741, 23724, 23723, 23729, 23715, 23745, 23735, 23748,
+    23762, 23780, 23755, 23781, {f: 2, c: 23810}, 23847, 23846, 23854, 23844,
+    23838, 23814, 23835, 23896, 23870, 23860, 23869, 23916, 23899, 23919,
+    23901, 23915, 23883, 23882, 23913, 23924, 23938, 23961, 23965, 35955,
+    23991, 24005, [12091, 24435], 24439, 24450, 24455, 24457, 24460, 24469,
+    24473, 24476, 24488, 24493, 24501, 24508, 34914, [12090, 24417], 29357,
+    29360, 29364, {f: 2, c: 29367}, 29379, 29377, 29390, 29389, 29394, 29416,
+    29423, 29417, 29426, 29428, 29431, 29441, 29427, 29443, {f: 2, c: 29434},
+    29463, 29459, 29473, 29450, 29470, 29469, 29461, 29474, 29497, 29477,
+    29484, 29496, 29489, 29520, 29517, 29527, 29536, 29548, 29551, 29566,
+    [12167, 33307], 22821, 39143, 22820, [12065, 22786], 39267,
+    {f: 6, c: 39271}, 39284, 39287, 39293, 39296, 39300, 39303, 39306, 39309,
+    {f: 2, c: 39312}, {f: 3, c: 39315}, 24192, 24209, 24203, 24214, 24229,
+    24224, 24249, 24245, 24254, 24243, 36179, 24274, 24273, 24283, 24296,
+    24298, 33210, 24516, 24521, 24534, 24527, 24579, 24558, 24580, 24545,
+    24548, 24574, {f: 2, c: 24581}, 24554, 24557, 24568, 24601, 24629, 24614,
+    24603, 24591, 24589, 24617, 24619, 24586, 24639, 24609, {f: 2, c: 24696},
+    24699, 24698, 24642, 24682, 24701, 24726, 24730, 24749, 24733, 24707,
+    24722, 24716, 24731, 24812, 24763, 24753, 24797, 24792, 24774, 24794,
+    24756, 24864, 24870, 24853, 24867, 24820, 24832, 24846, 24875, 24906,
+    24949, 25004, 24980, 24999, 25015, 25044, 25077, 24541, 38579, 38377,
+    38379, 38385, 38387, {f: 2, c: 38389}, 38396, 38398, {f: 2, c: 38403},
+    38406, 38408, {f: 4, c: 38410}, 38415, 38418, {f: 3, c: 38421},
+    {f: 2, c: 38425}, 20012, [12121, 29247], 25109, 27701, 27732, 27740, 27722,
+    27811, 27781, 27792, 27796, 27788, {f: 2, c: 27752}, 27764, 27766, 27782,
+    27817, 27856, 27860, 27821, {f: 2, c: 27895}, 27889, 27863, 27826, 27872,
+    27862, 27898, 27883, 27886, 27825, 27859, 27887, 27902, 27961, 27943,
+    27916, 27971, 27976, 27911, 27908, 27929, 27918, 27947, 27981, 27950,
+    27957, 27930, 27983, 27986, 27988, 27955, 28049, 28015, 28062, 28064,
+    27998, {f: 2, c: 28051}, 27996, 28000, 28028, 28003, 28186, 28103, 28101,
+    28126, 28174, 28095, 28128, 28177, 28134, 28125, 28121, 28182, 28075,
+    28172, 28078, 28203, 28270, 28238, 28267, 28338, 28255, 28294,
+    {f: 2, c: 28243}, 28210, 28197, 28228, 28383, 28337, 28312, 28384, 28461,
+    28386, 28325, 28327, 28349, 28347, 28343, 28375, 28340, 28367, 28303,
+    28354, 28319, 28514, {f: 2, c: 28486}, 28452, 28437, 28409, 28463, 28470,
+    28491, 28532, 28458, 28425, 28457, 28553, 28557, 28556, 28536, 28530,
+    28540, 28538, 28625, 28617, 28583, 28601, 28598, 28610, 28641, 28654,
+    28638, 28640, 28655, 28698, 28707, 28699, 28729, 28725, 28751, 28766,
+    [12071, 23424], 23428, 23445, 23443, 23461, 23480, 29999, 39582, 25652,
+    23524, 23534, 35120, 23536, 36423, 35591, 36790, 36819, 36821, 36837,
+    36846, 36836, 36841, 36838, 36851, 36840, 36869, 36868, 36875, 36902,
+    36881, 36877, 36886, 36897, {f: 2, c: 36917}, 36909, 36911, 36932,
+    {f: 2, c: 36945}, 36944, 36968, 36952, 36962, 36955, 26297, 36980, 36989,
+    36994, 37000, 36995, 37003, [12089, 24400], 24407, 24406, 24408, 23611,
+    21675, 23632, 23641, 23409, 23651, 23654, 32700, 24362, 24361, 24365,
+    33396, 24380, 39739, [12076, 23662], 22913, 22915, 22925, {f: 2, c: 22953},
+    22947, 22935, 22986, 22955, 22942, 22948, 22994, 22962, 22959, 22999,
+    22974, {f: 2, c: 23045}, 23005, 23048, 23011, 23000, 23033, 23052, 23049,
+    23090, 23092, 23057, 23075, 23059, 23104, 23143, 23114, 23125, 23100,
+    23138, 23157, 33004, 23210, 23195, 23159, 23162, 23230, 23275, 23218,
+    23250, 23252, 23224, 23264, 23267, 23281, 23254, 23270, 23256, 23260,
+    23305, 23319, 23318, 23346, 23351, 23360, 23573, 23580, 23386, 23397,
+    23411, 23377, 23379, 23394, 39541, {f: 2, c: 39543}, 39546, 39551, 39549,
+    {f: 2, c: 39552}, 39557, 39560, 39562, 39568, {f: 2, c: 39570}, 39574,
+    39576, {f: 3, c: 39579}, {f: 2, c: 39583}, {f: 2, c: 39586}, 39589, 39591,
+    32415, 32417, 32419, 32421, {f: 2, c: 32424}, 32429, 32432, 32446,
+    {f: 3, c: 32448}, 32457, {f: 2, c: 32459}, 32464, 32468, 32471, 32475,
+    {f: 2, c: 32480}, 32488, 32491, {f: 2, c: 32494}, {f: 2, c: 32497}, 32525,
+    32502, {f: 2, c: 32506}, 32510, {f: 3, c: 32513}, {f: 2, c: 32519},
+    {f: 2, c: 32523}, 32527, {f: 2, c: 32529}, 32535, 32537, 32540, 32539,
+    32543, {f: 7, c: 32545}, {f: 4, c: 32554}, {f: 5, c: 32559}, 32565,
+    [12083, 24186], 30079, [12078, 24027], 30014, 37013, 29582, 29585, 29614,
+    29602, 29599, 29647, 29634, 29649, 29623, 29619, 29632, 29641, 29640,
+    29669, 29657, 39036, 29706, 29673, 29671, 29662, 29626, 29682, 29711,
+    29738, 29787, 29734, 29733, 29736, 29744, 29742, 29740, 29723, 29722,
+    29761, 29788, 29783, 29781, 29785, 29815, 29805, 29822, 29852, 29838,
+    {f: 2, c: 29824}, 29831, 29835, 29854, {f: 2, c: 29864}, 29840, 29863,
+    29906, 29882, {f: 3, c: 38890}, 26444, 26451, 26462, 26440, 26473, 26533,
+    26503, 26474, 26483, 26520, 26535, 26485, 26536, 26526, 26541, 26507,
+    26487, 26492, 26608, 26633, 26584, 26634, 26601, 26544, 26636, 26585,
+    26549, 26586, 26547, 26589, 26624, 26563, 26552, 26594, 26638, 26561,
+    26621, {f: 2, c: 26674}, {f: 2, c: 26720}, 26702, 26722, 26692, 26724,
+    26755, 26653, 26709, 26726, 26689, 26727, 26688, 26686, 26698, 26697,
+    26665, 26805, 26767, 26740, 26743, 26771, 26731, 26818, 26990, 26876,
+    {f: 2, c: 26911}, 26873, 26916, 26864, 26891, 26881, 26967, 26851, 26896,
+    26993, 26937, 26976, 26946, 26973, 27012, 26987, 27008, 27032, 27000,
+    26932, 27084, {f: 2, c: 27015}, 27086, 27017, 26982, 26979, 27001, 27035,
+    27047, 27067, 27051, 27053, 27092, 27057, 27073, 27082, 27103, 27029,
+    27104, 27021, 27135, 27183, 27117, {f: 2, c: 27159}, 27237, 27122, 27204,
+    27198, 27296, 27216, 27227, 27189, 27278, 27257, 27197, 27176, 27224,
+    27260, 27281, 27280, 27305, 27287, 27307, 29495, 29522, {f: 2, c: 27521},
+    27527, 27524, {f: 2, c: 27538}, 27533, {f: 2, c: 27546}, 27553, 27562,
+    36715, 36717, {f: 3, c: 36721}, {f: 2, c: 36725}, 36728, 36727,
+    {f: 2, c: 36729}, 36732, 36734, {f: 2, c: 36737}, 36740, 36743, 36747,
+    {f: 3, c: 36749}, 36760, 36762, 36558, 25099, 25111, 25115, 25119, 25122,
+    25121, 25125, 25124, 25132, 33255, 29935, 29940, 29951, 29967, 29969,
+    29971, [12097, 25908], {f: 3, c: 26094}, 26122, 26137, 26482, 26115, 26133,
+    26112, 28805, 26359, 26141, 26164, 26161, 26166, 26165, 32774, 26207,
+    26196, 26177, 26191, 26198, 26209, 26199, 26231, 26244, 26252, 26279,
+    26269, 26302, {f: 2, c: 26331}, 26342, 26345, {f: 2, c: 36146}, 36150,
+    36155, 36157, 36160, {f: 2, c: 36165}, {f: 2, c: 36168}, 36167, 36173,
+    36181, 36185, 35271, {f: 3, c: 35274}, {f: 4, c: 35278}, 29294, 29343,
+    29277, 29286, 29295, {f: 2, c: 29310}, 29316, 29323, 29325, 29327, 29330,
+    25352, 25394, 25520, 25663, 25816, 32772, 27626, 27635, 27645, 27637,
+    27641, 27653, 27655, 27654, 27661, 27669, {f: 3, c: 27672}, 27681, 27689,
+    27684, 27690, 27698, 25909, 25941, 25963, 29261, 29266, 29270, 29232,
+    34402, 21014, 32927, 32924, 32915, 32956, 26378, 32957, 32945, 32939,
+    32941, 32948, 32951, {f: 4, c: 32999}, 32987, 32962, 32964, 32985, 32973,
+    32983, 26384, 32989, 33003, 33009, 33012, 33005, {f: 2, c: 33037}, 33010,
+    33020, 26389, 33042, 35930, 33078, 33054, 33068, 33048, 33074, 33096,
+    33100, 33107, 33140, {f: 2, c: 33113}, 33137, 33120, 33129,
+    {f: 2, c: 33148}, 33133, 33127, 22605, 23221, 33160, 33154, 33169, 28373,
+    33187, 33194, 33228, 26406, 33226, 33211, 33217, 33190, 27428, 27447,
+    27449, 27459, 27462, 27481, {f: 3, c: 39121}, 39125, {f: 2, c: 39129},
+    [12110, 27571], 24384, 27586, 35315, 26000, 40785, 26003, 26044, 26054,
+    26052, 26051, 26060, 26062, 26066, 26070, 28800, 28828, 28822, 28829,
+    28859, 28864, 28855, 28843, 28849, 28904, 28874, 28944, 28947, 28950,
+    28975, 28977, 29043, 29020, 29032, 28997, 29042, 29002, 29048, 29050,
+    29080, 29107, 29109, 29096, 29088, 29152, 29140, 29159, 29177, 29213,
+    29224, 28780, 28952, 29030, 29113, 25150, 25149, 25155, {f: 2, c: 25160},
+    31035, 31040, 31046, 31049, {f: 2, c: 31067}, 31059, 31066, 31074, 31063,
+    31072, 31087, 31079, 31098, 31109, 31114, 31130, 31143, 31155, 24529,
+    24528, 24636, 24669, 24666, 24679, 24641, 24665, 24675, 24747, 24838,
+    24845, 24925, 25001, 24989, 25035, 25041, 25094, 32896, [12160, 32895],
+    27795, 27894, 28156, 30710, 30712, 30720, 30729, {f: 2, c: 30743}, 30737,
+    26027, 30765, {f: 2, c: 30748}, {f: 3, c: 30777}, 30751, 30780, 30757,
+    30764, 30755, 30761, 30798, 30829, {f: 2, c: 30806}, 30758, 30800, 30791,
+    30796, 30826, 30875, 30867, 30874, 30855, 30876, 30881, 30883, 30898,
+    30905, 30885, 30932, 30937, 30921, 30956, 30962, 30981, 30964, 30995,
+    31012, 31006, 31028, 40859, [12235, 40697], {f: 2, c: 40699}, 30449, 30468,
+    30477, 30457, {f: 2, c: 30471}, 30490, 30498, 30489, 30509, 30502, 30517,
+    30520, {f: 2, c: 30544}, 30535, 30531, 30554, 30568, 30562, 30565, 30591,
+    30605, 30589, 30592, 30604, 30609, {f: 2, c: 30623}, 30640, 30645, 30653,
+    30010, 30016, 30030, 30027, 30024, 30043, 30066, 30073, 30083, 32600,
+    32609, 32607, 35400, 32616, 32628, 32625, 32633, 32641, 32638, 30413,
+    30437, 34866, {f: 3, c: 38021}, 38027, 38026, {f: 2, c: 38028},
+    {f: 2, c: 38031}, 38036, 38039, 38037, {f: 3, c: 38042}, {f: 2, c: 38051},
+    38059, 38058, 38061, 38060, {f: 2, c: 38063}, 38066, 38068,
+    {f: 5, c: 38070}, {f: 2, c: 38076}, 38079, 38084, {f: 7, c: 38088},
+    {f: 3, c: 38096}, {f: 3, c: 38101}, 38105, 38104, 38107, {f: 3, c: 38110},
+    38114, {f: 2, c: 38116}, {f: 2, c: 38119}, 38122, 38121, 38123,
+    {f: 2, c: 38126}, {f: 3, c: 38131}, 38135, 38137, {f: 2, c: 38140}, 38143,
+    38147, 38146, {f: 2, c: 38150}, {f: 2, c: 38153}, {f: 3, c: 38157},
+    {f: 5, c: 38162}, 38168, 38171, {f: 3, c: 38173}, 38178, {f: 2, c: 38186},
+    38185, 38188, {f: 2, c: 38193}, 38196, {f: 3, c: 38198}, 38204,
+    {f: 2, c: 38206}, 38210, 38197, {f: 3, c: 38212}, 38217, 38220,
+    {f: 2, c: 38222}, {f: 3, c: 38226}, {f: 4, c: 38230}, 38235,
+    {f: 2, c: 38238}, 38237, {f: 2, c: 38241}, {f: 9, c: 38244}, 38255,
+    {f: 3, c: 38257}, 38202, 30695, 30700, 38601, 31189, 31213, 31203, 31211,
+    31238, 23879, 31235, 31234, 31262, 31252, 31289, 31287, 31313, 40655,
+    39333, 31344, 30344, 30350, 30355, 30361, 30372, 29918, 29920, 29996,
+    40480, 40482, {f: 5, c: 40488}, 40498, 40497, 40502, 40504, 40503,
+    {f: 2, c: 40505}, 40510, {f: 2, c: 40513}, 40516, {f: 4, c: 40518},
+    {f: 2, c: 40523}, 40526, 40529, 40533, 40535, {f: 3, c: 40538}, 40542,
+    40547, {f: 7, c: 40550}, 40561, 40557, 40563, [12135, 30098], 30100, 30102,
+    30112, 30109, 30124, 30115, {f: 2, c: 30131}, 30136, 30148, 30129, 30128,
+    30147, 30146, 30166, 30157, 30179, 30184, 30182, 30180, 30187, 30183,
+    30211, 30193, 30204, 30207, 30224, 30208, 30213, 30220, 30231, 30218,
+    30245, 30232, 30229, 30233, 30235, 30268, 30242, 30240, 30272, 30253,
+    30256, 30271, 30261, 30275, 30270, 30259, 30285, 30302, 30292, 30300,
+    30294, 30315, 30319, 32714, 31462, {f: 2, c: 31352}, 31360, 31366, 31368,
+    31381, 31398, 31392, 31404, 31400, 31405, 31411, 34916, 34921, 34930,
+    34941, 34943, 34946, 34978, 35014, 34999, 35004, 35017, 35042, 35022,
+    35043, 35045, 35057, 35098, 35068, 35048, 35070, 35056, 35105, 35097,
+    35091, 35099, 35082, 35124, 35115, 35126, 35137, 35174, 35195,
+    [12134, 30091], 32997, 30386, 30388, 30684, [12158, 32786], 32788, 32790,
+    32796, 32800, 32802, {f: 3, c: 32805}, 32809, 32808, 32817, 32779, 32821,
+    32835, 32838, 32845, 32850, 32873, 32881, 35203, 39032, 39040, 39043,
+    39049, {f: 2, c: 39052}, 39055, 39060, {f: 2, c: 39066}, {f: 2, c: 39070},
+    {f: 2, c: 39073}, {f: 2, c: 39077}, [12172, 34381], 34388, 34412, 34414,
+    34431, 34426, 34428, 34427, 34472, 34445, 34443, 34476, 34461, 34471,
+    34467, 34474, 34451, 34473, 34486, 34500, 34485, 34510, 34480, 34490,
+    34481, 34479, 34505, 34511, 34484, 34537, {f: 2, c: 34545}, 34541, 34547,
+    34512, 34579, 34526, 34548, 34527, 34520, 34513, 34563, 34567, 34552,
+    34568, 34570, 34573, 34569, 34595, 34619, 34590, 34597, 34606, 34586,
+    34622, 34632, 34612, 34609, 34601, 34615, 34623, 34690, 34594,
+    {f: 2, c: 34685}, 34683, 34656, 34672, 34636, 34670, 34699, 34643, 34659,
+    34684, 34660, 34649, 34661, 34707, 34735, 34728, 34770, 34758, 34696,
+    34693, 34733, 34711, 34691, 34731, 34789, 34732, 34741, 34739, 34763,
+    34771, 34749, 34769, 34752, 34762, 34779, 34794, 34784, 34798, 34838,
+    34835, 34814, 34826, 34843, 34849, 34873, 34876, [12152, 32566], 32578,
+    {f: 2, c: 32580}, 33296, 31482, 31485, 31496, {f: 2, c: 31491}, 31509,
+    31498, 31531, 31503, 31559, 31544, 31530, 31513, 31534, 31537, 31520,
+    31525, 31524, 31539, 31550, 31518, 31576, 31578, 31557, 31605, 31564,
+    31581, 31584, 31598, 31611, 31586, 31602, 31601, 31632, {f: 2, c: 31654},
+    31672, 31660, 31645, 31656, 31621, 31658, 31644, 31650, 31659, 31668,
+    31697, 31681, 31692, 31709, 31706, {f: 2, c: 31717}, 31722, 31756, 31742,
+    31740, 31759, 31766, 31755, 31775, 31786, 31782, 31800, 31809, 31808,
+    33278, {f: 2, c: 33281}, 33284, 33260, 34884, {f: 3, c: 33313}, 33325,
+    33327, 33320, 33323, 33336, 33339, {f: 2, c: 33331}, 33342, 33348, 33353,
+    33355, 33359, 33370, 33375, 33384, 34942, 34949, 34952, 35032, 35039,
+    35166, 32669, 32671, 32679, {f: 2, c: 32687}, 32690, 31868, 25929, 31889,
+    31901, 31900, 31902, 31906, 31922, {f: 2, c: 31932}, 31937, 31943,
+    {f: 2, c: 31948}, 31944, 31941, 31959, 31976, [12169, 33390], 26280, 32703,
+    32718, 32725, 32741, 32737, 32742, 32745, 32750, 32755, [12151, 31992],
+    32119, 32166, 32174, 32327, 32411, 40632, 40628, 36211, 36228, 36244,
+    36241, 36273, 36199, 36205, 35911, 35913, 37194, 37200, {f: 2, c: 37198},
+    37220, 37218, 37217, 37232, 37225, 37231, {f: 2, c: 37245}, 37234, 37236,
+    37241, 37260, 37253, 37264, 37261, 37265, {f: 2, c: 37282}, 37290,
+    {f: 3, c: 37293}, 37301, 37300, 37306, [12183, 35925], 40574, 36280, 36331,
+    36357, 36441, 36457, 36277, 36287, 36284, 36282, 36292, {f: 2, c: 36310},
+    36314, 36318, {f: 2, c: 36302}, 36315, 36294, 36332, {f: 2, c: 36343},
+    36323, 36345, 36347, 36324, 36361, 36349, 36372, 36381, 36383, 36396,
+    36398, 36387, 36399, 36410, 36416, 36409, 36405, 36413, 36401, 36425,
+    {f: 2, c: 36417}, {f: 2, c: 36433}, 36426, 36464, 36470, 36476, 36463,
+    36468, 36485, 36495, 36500, 36496, 36508, 36510, [12184, 35960], 35970,
+    35978, 35973, 35992, 35988, 26011, 35286, 35294, 35290, 35292, 35301,
+    35307, 35311, 35390, 35622, 38739, 38633, 38643, 38639, 38662, 38657,
+    38664, 38671, 38670, 38698, 38701, 38704, 38718, 40832, 40835,
+    {f: 6, c: 40837}, 40844, 40702, 40715, 40717, [12203, 38585],
+    {f: 2, c: 38588}, 38606, 38610, 30655, 38624, 37518, 37550, 37576, 37694,
+    37738, 37834, 37775, 37950, 37995, 40063, 40066, {f: 4, c: 40069}, 31267,
+    40075, 40078, {f: 3, c: 40080}, {f: 2, c: 40084}, {f: 2, c: 40090},
+    {f: 6, c: 40094}, {f: 5, c: 40101}, 40107, {f: 2, c: 40109},
+    {f: 8, c: 40112}, {f: 4, c: 40122}, {f: 4, c: 40132}, {f: 7, c: 40138},
+    {f: 3, c: 40147}, {f: 3, c: 40151}, {f: 2, c: 40156}, 40159, 40162, 38780,
+    38789, {f: 2, c: 38801}, 38804, 38831, 38827, 38819, 38834, 38836, 39601,
+    39600, 39607, 40536, 39606, 39610, 39612, 39617, 39616, 39621, 39618,
+    {f: 2, c: 39627}, 39633, 39749, 39747, 39751, 39753, 39752, 39757, 39761,
+    39144, 39181, 39214, 39253, 39252, [12221, 39647], 39649, 39654, 39663,
+    39659, 39675, 39661, 39673, 39688, 39695, 39699, 39711, 39715,
+    {f: 2, c: 40637}, 32315, 40578, {f: 2, c: 40583}, 40587, 40594, 37846,
+    40605, 40607, {f: 3, c: 40667}, 40672, 40671, 40674, 40681, 40679, 40677,
+    40682, 40687, 40738, 40748, 40751, 40761, 40759, {f: 2, c: 40765}, 40772,
+    12295, {s: 13}, 30362, 34297, 31001, 24859, 39599, 35158, 22761, 32631,
+    25850, 25943, 38930, 36774, 32070, 24171, 32129, 37770, 35607, 39165,
+    23542, 22577, 39825, 36649, [12185, 35997], 37575, 29437, 20633, 24970,
+    32179, 31558, 30050, 25987, 24163, 38281, 37002, 32232, 36022, 35722,
+    36783, 36782, 27161, 40009, 30303, 28693, 28657, 36051, 25839, 39173,
+    25765, 37474, 37457, 39361, 35036, 36001, 21443, 34870, 27544, 24922,
+    24920, 29158, 33980, 33369, 20489, 28356, 21408, 20596, 28204, 23652,
+    35435, 25881, 25723, 34796, 39262, 35730, 32399, 37855, 29987, 38369,
+    39019, 22580, 22039, [12199, 38263], 20767, 33144, 24288, 26274, 37396,
+    [12190, 36554], 24505, 22645, 38515, 35183, 31281, 25074, 35488, 39425,
+    36978, 39347, [12242, 40786], 29118, 34909, 34802, 23541, 30087, 36490,
+    31820, 32162, 37276, 37604, 38619, 30990, 20786, 35320, 34389, 20659,
+    30241, 38358, 21109, 37656, 32020, 32189, 36781, 35422, 36060, 32880,
+    24478, 21474, 36517, 31428, 37679, 36948, 24118, 36024, 25812, 21934,
+    37170, 25763, 33213, 24986, 35477, 24392, 30070, 25803, 40680, 34153,
+    27284, 25623, 23798, 31153, 23566, 29128, 37159, 25973, 28364, 36958,
+    32224, 39003, 40670, 22666, 38651, 28593, 37347, 35519, 35548, 37336,
+    38914, 37664, 35330, 26481, 21205, 26847, 20941, [12222, 39717], 29346,
+    29544, 35712, 36077, 37709, 37723, 26039, 32222, 38538, 23565, 22136,
+    38931, 37389, 22890, 22702, 40285, 38989, 35355, 24801, 39187, 20818,
+    29246, 39180, 36019, 30332, 32624, 38309, 31020, 37353, 29033, 31684,
+    36009, 39151, 35370, 32033, [12214, 39131], 35513, 24290, 36027, 32027,
+    22707, 22894, 24996, 31966, 35920, 26963, 37586, [12213, 39080], 30219,
+    39342, 32299, 35575, 40179, 33178, 36667, 25771, 36628, 36070, 24489,
+    36000, 35331, 23142, 32283, 35442, 37411, 33995, 24185, 36245, 36123,
+    23713, 21083, 37628, 32177, 23831, 37804, 25841, 40255, 38307, 37499,
+    20491, 32102, 40852, 38799, 36002, 37390, 28317, 27083, 36092, 34865,
+    39015, 21102, 38364, 35264, 39208, 24931, 36011, 24291, 35215, 27512,
+    [12244, 40860], 38312, 36556, 35437, 27331, 36020, 21130, 36645, 37707,
+    22283, 36942, 39405, 38867, 28450, 34399, 38305, 40372, 36032, 36703,
+    40251, 32005, 22778, 35703, 28396, 22057, 33775, 30059, 21123, 35441,
+    25079, 22750, 27489, 29872, 36996, 32233, 35594, 25582, 36637, 36036,
+    31330, 26371, 29172, 21295, 35569, 35496, 32362, 33911, 28222, 29554,
+    36008, 31117, 25802, 27231, 31309, 39249, 35663, 40388, 32318, 32221,
+    26997, 36655, 32026, 25824, 24190, 34186, 21137, 28639, 35336, 35352,
+    38555, 32380, 32000, 22846, 33698, 38960, 36040, 37440, 20729, 39381,
+    27570, 30435, 22533, 31627, 38291, 33393, 32216, 32365, 27298, 40572,
+    25536, 25791, 31777, 20745, 34214, 27323, 37970, 36368, 36068,
+    [12178, 35211], 37749, 33382, 21133, 39198, 28472, 28666, 28567, 23559,
+    28479, 34083, 27123, 22892, 35611, 37292, 33184, 28550, 39509, 23308,
+    25898, 37496, 30703, 20709, 39171, 32371, 32094, 36686, 36611, 38542,
+    31680, 28500, 32080, 35489, 32202, 37670, 20677, 35641, 36914, 29180,
+    30433, 21185, 33686, 39912, 39514, 32147, 38968, 37857, 24465, 30169,
+    31478, 31998, 33290, 39378, 33289, 25818, 37624, 25084, 21127, 40273,
+    32121, 35258, 35363, 32118, 37406, 36557, 39423, 38283, 20977, 38982,
+    27579, 35506, 22718, 25031, 25715, 24235, 35122, 35463, 22602, 20744,
+    23532, 31014, 26336, 34407, 24011, 31418, 39243, 28528, 25844, 38346,
+    34847, 33240, 33802, 20358, 36084, 34253, 27396, 25876, 31811, 38348,
+    34349, 28734, 35733, 25900, 35261, 25078, 32412, 29211, 28651, 25736,
+    21214, 28551, 27138, 37939, 22744, 39006, 31852, 38626, 28757, 35023,
+    39881, 31150, 40599, 21426, 21237, 31019, 27511, 28701, 38584, 20486,
+    32879, 34030, 36899, 37934, 24976, 28451, 31806, 25986, 33225, 37832,
+    25088, 29001, 32244, 31975, 20841, 36635, 35538, 30274, 36988, 37904,
+    29557, 33256, 37168, 40023, 36035, 40801, 37428, 38728, 23994, 38936,
+    39230, 21129, [12243, 40845], 32894, 22184, 31840, 22751, 25871, 38580,
+    27155, 23105, 25695, 31757, 34310, 30439, 39025, 24300, 29200, 25796,
+    28407, 34396, 39791, 36034, 37682, 38520, 39522, 37569, 23650, 32311,
+    24942, 28670, 32209, 24018, 25891, 23423, 28772, 20098, 25476, 36650,
+    20523, 20374, 28138, 32184, 35542, 34367, 32645, 37007, 38012, 31854,
+    39486, 39409, 32097, 23229, 29802, 30908, 34718, [12218, 39340], 39393,
+    21966, 36023, [12230, 40613], 36067, 36993, 30622, 39237, 34875, 28415,
+    35646, 37672, 37466, 36031, 37762, [12200, 38272], 24758, 20497, 37683,
+    22818, 35598, 24396, 35219, 32191, 32236, 24287, 28357, 25003, 38313,
+    40180, 37528, 35628, 35584, 30045, 37385, 32013, 38627, 25747, 33126,
+    24817, 39719, 39186, 25836, 33193, 25862, 37312, [12227, 40165], 32886,
+    22169, 38007, 37811, 27320, 29552, 23527, 25840, 28632, 37397, 32016,
+    33215, 28611, 36786, 30247, 35582, 27472, 40407, 27590, 22036, 28442,
+    30436, 40848, 36064, 22132, 40300, 39449, 39108, 38971, 36007, 34315,
+    24977, 35413, 28497, 38935, 25778, 37610, 20693, 27192, 35676, 33229,
+    [12241, 40778], 39438, 35912, 21843, 27683, 35350, 29309, 37370, 37467,
+    36983, 31805, 35609, 37666, 37463, 28154, 35700, 22649, 27085, 21958,
+    22715, 34196, 25654, 37740, 27211, 21932, 20689, 32761, 31429, 31434,
+    27453, 35242, 23522, 36629, 27691, 20670, 38915, 35531, 24950, 29898,
+    31406, 36264, 21312, 36544, 39493, 40818, 39028, 27402, 21240, 40306,
+    30906, 35731, 39250, 25854, 32350, 29105, 38860, 35469, 32009, 27054,
+    32104, 36575, 37613, 38287, 28516, 28753, 34217, 39955, 36093, 20632,
+    21930, 39479, 25475, 28544, 27578, 32023, 31721, 26348, 38275, 38493,
+    36109, 32341, 20663, 36062, 29138, 32057, 36050, 25448, 25885, 25086,
+    35373, 32051, 23529, 23352, 33102, 28402, 32882, 32361, 21213, 32854,
+    24107, 29509, 28629, 35433, 26178, 34645, 23526, 35672, 39387, 21218,
+    36969, 37323, 39166, 35222, 35430, 22781, 29560, 27166, 36664, 26360,
+    36118, 23660, 34899, 27193, 31466, 25976, 24101, 38617, 35504, 38918,
+    35500, 30889, 29197, 32114, 39164, 39686, 32883, 24939, 38924, 35359,
+    35494, 25851, 34311, 35380, 32901, 38614, 38568, 32143, 27506, 23403,
+    25613, 32302, 29795, 37782, 29562, 25787, 33274, 24907, 25892, 36010,
+    30321, 28760, 22727, 35674, 35527, 22022, 28271, 29145, 28644, 32295,
+    35342, 39472, 35588, 37563, 38988, 39636, 26781, 36028, 37941, 24307,
+    32893, 28916, 37509, 32113, 38957, 22294, 22615, 22296, 38973, 40213,
+    39345, 39389, 27234, 31402, 35178, 24398, 28771, 38929, 33836, 32178,
+    [12209, 38859], 36949, 22285, 29234, 28656, 32173, 33894, 20553, 20702,
+    32239, 35586, 34907, 32862, 32011, 31337, 21839, 25790, 34680, 28198,
+    31401, 21978, 37794, 28879, 35491, 28961, 34154, 22626, 38695, 21209,
+    35492, 37675, 29351, 35186, 32722, 37521, 25138, 32048, 34662, 36676,
+    23805, 20448, 29433, 22151, 37697, 39854, 32406, 36066, 37532, 38289,
+    39023, 38570, 29694, 29563, 32291, 39201, 25010, 32171, 38002, 37129,
+    35443, 38911, 38917, 34157, 22210, 37559, 26313, 22063, 21332, 25406,
+    33029, 35559, 23531, 28681, 35613, 37573, 37313, 33288, 37561, 32137,
+    38920, 35377, 32210, 32396, 36562, 25080, 36984, 30316, 32098, 23416,
+    21211, 35426, 23563, 39348, 35347, 35338, 36956, 22739, 40201, 40232,
+    21854, 20126, 35357, 38329, 40573, 22196, 38996, 38331, 33399, 21421,
+    30831, 35578, 39511, 40230, 26954, 25562, 30221, 38525, 30306, 39178,
+    27171, 22575, 35617, 34277, 29242, [12212, 38913], 26989, 33865, 37291,
+    37541, 38948, 36986, 20736, 34811, 34269, 20740, 25014, 32681, 35427,
+    35696, 35516, 35695, 32377, 34093, 38512, 37504, 39154, 38577, 27387,
+    23344, 40441, 25033, 32403, 29801, 34722, 29151, 29074, 34821, 36111,
+    31310, 21938, 25793, 20653, 30320, 36404, 20778, 24962, 37109, 37438,
+    29494, 35480, 36671, 39192, [12226, 39770], 28417, 33287, 23996, 35486,
+    39729, 29508, 35709, 38928, 39341, 40219, 28149, 36677, 22290, 21729,
+    22291, 32227, 36960, 39000, 32004, 36493, 38000, 38322, 38642, 37142,
+    38549, 36939, 34292, 37270, 26248, 38620, 36617, 25890, 26283, 36106,
+    36124, 33247, 38015, 26839, 31432, 36012, 25799, 21063, 28580, 36042,
+    36104, 36555, 37720, 38296, 35408, 40779, 20661, 27656, 30430, 26028,
+    36670, 23940, 26855, 25136, 32187, 24373, 28466, 24115, 36076, 33081,
+    36249, 34756, 36685, 37754, 36889, 35998, 37341, 20597, 35386, 37806,
+    38499, 24128, 30309, 37165, 35657, 32340, 32887, 22519, 34937, 32025,
+    25711, 25842, 24159, 36074, 28399, 37912, 32066, 31278, 33131, 34886,
+    35589, 36600, 30394, 26205, 39519, 35576, 35461, 29165, 30682, 22225,
+    36015, 37956, 31689, 39376, 23560, 30938, 36681, 36090, 27137, 33674,
+    35037, 22941, 22767, 29376, 37648, 36101, 22684, 32180, 35524, 28310,
+    28609, 36039, 28460, 32156, 32317, 32305, 37138, 35419, 32068, 38013,
+    21959, 21401, 21428, 38760, 36107, 21293, 21297, 36094, 21060, 21132,
+    21108, 20660, 20480, 20630, 20757, 20738, 20756, 20796, 20791, 20712,
+    20674, 20795, 20752, 20794, 20681, 31988, 40652, 22213, 40172, 35131,
+    33248, 35329, 35344, 35340, 35349, 35635, 35406, 35365, 35393, 35382,
+    35398, 35412, 35416, 35410, 35462, 35460, 35455, 35440, 35452, 35445,
+    35436, 35438, 35533, 35554, 35425, 35482, 35493, {f: 2, c: 35473}, 35535,
+    35537, 35529, 35547, 35543, 35522, 35510, 35574, 35563, 35604, 35585,
+    35556, 35565, 35580, 35571, 35558, 35566, 35550, 35624, 35740, 35606,
+    35610, 35600, 35627, 35629, 35670, 35673, 35662, 35742, 35691, 35734,
+    38488, 37178, 37140, 37172, 37087, 37174, 37126, 37192, 33467, 21233,
+    24048, 22538, 22745, 22754, 22752, 22746, 22497, 22607, 22550, 22610,
+    22557, 22628, 34188, 34131, 34294, 33703, 33799, 34031, 33511, 34338,
+    34086, 22603, 29026, 34136, 34045, 34126, 34184, 34234, 29334, 28366,
+    34113, 34254, 34130, 33984, 33874, 33892, 33940, 33845, 34207, 34133,
+    40367, 33939, 32264, 34118, 34146, 34078, 39488, 34362, 37795, 34167,
+    34334, 34298, 34308, 34282, 34330, 22889, 23607, 25451, 25718, 25759,
+    25681, 25692, 25779, 25860, 25878, 25847, 25852, 25883, 22064, 22072,
+    22216, 22182, 21764, 21692, 22144, 22109, 22112, 22069, 22006, 22118,
+    22130, 22156, 22117, 22044, 22062, 21993, 22038, 22208, 22029, 22195,
+    22209, 22127, 36705, 22198, 22165, 22279, 24131, 24172, 24152, 24151,
+    23943, 23796, 23888, 23852, 23975, 23968, 23959, 23821, 23992, 23937,
+    24020, 24480, 29559, 29505, 29546, 29499, 29547, 29568, 29564, 39136,
+    39219, 39145, 39228, {f: 2, c: 39146}, 39149, 39156, 39177, 39185, 39195,
+    39223, 39231, 39235, {f: 3, c: 39240}, 39244, 39266, 24289, 36065, 25082,
+    25006, 24938, 24894, 24757, 24884, 25036, 24927, 25064, 24827, 24887,
+    24818, 24947, 24860, 24978, 38274, 38278, 38344, 38286, 38292, 38284,
+    38373, 38317, 38315, 39726, 38316, 38334, 38326, 39721, 38335, 38333,
+    38332, 38339, 38347, 38356, 38352, 38357, 38366, 28739, 28505, 28711,
+    28696, 28668, 28039, 28025, 28254, 28590, 28687, 28408, 28527, 28150,
+    28543, 28678, 28576, 28683, 28775, 28740, 28677, 28535, 28704, 28703,
+    28722, 28712, 28765, 39467, 36999, 36885, 37008, 23656, 24371, 23285,
+    23255, 23296, 23149, 23304, 23372, 23207, 23291, 23307, 23329, 23338,
+    23321, 39380, 39391, 39385, 39478, 39515, 39377, 39384, 39501, 39498,
+    39394, 39530, 39439, 39437, 39429, 39490, 39469, 39446, 39489, 39470,
+    39480, {f: 2, c: 39491}, 39503, 39525, 39524, 31993, 32006, 32002,
+    {f: 2, c: 32007}, 32394, 32028, 32021, 32019, 32058, 32050, 32049, 32272,
+    32060, 32064, 32063, 32093, 32078, 32115, 32134, 32131, 32136, 32190,
+    32186, 32203, 32212, 32196, 32158, 32172, 32185, 32163, 32176, 32199,
+    32217, 32215, 32249, 32242, 32354, 32230, 32246, 32241, 32267, 32225,
+    32265, 32285, 32287, 32286, 32301, 32266, 32273, 32381, 32313, 32309,
+    32306, 32326, 32325, 32392, 32346, 32338, 32366, 32382, 32368, 32367,
+    32408, 29859, 29771, 29903, 38922, 29885, 29759, 29833, 29862, 29908,
+    29914, 38873, 38878, 38876, 27050, 27370, 26776, 26838, 27141, 26783,
+    27355, 27379, 27368, 27359, 27273, 26895, 27208, 26984, 27071, 27194,
+    27292, 27410, 27422, 27357, 27111, 27407, 27414, 27372, 27354, 27384,
+    27315, 27367, 27299, 27347, 27358, 27556, 27550, 27566, 27563, 27567,
+    36564, 36571, 36594, 36603, 36708, 36601, 36604, 36587, 36580, 36706,
+    36602, 36606, 36618, 36615, 36613, 36626, 36646, {f: 2, c: 36638}, 36636,
+    36659, 36678, 36692, 25108, 25127, 29964, 26311, 26308, 26249, 26326,
+    36033, 36016, 36026, 36029, 36100, 36018, 36037, 36112, 36049, 36058,
+    36053, 36075, 36071, 36091, 35224, 35244, 35233, 35263, 35238, 35247,
+    35250, 35255, 27647, 27660, 27692, 29272, 26407, 33110, 33242, 33051,
+    33214, 33121, 33231, 27487, {f: 2, c: 39086}, 39094, 39100, 39110, 39112,
+    36674, 40783, 26005, 29036, 29010, 29079, 29121, 29148, 29182, 31152,
+    31118, 31146, 25055, 24932, 25059, 25095, 28585, 30959, 30893, 30824,
+    30904, 31018, 31025, 30820, 30973, 30951, 30947, 40853, 30616, 30558,
+    30652, 32646, 32648, {f: 3, c: 37330}, 37337, 37335, 37333, 37367, 37351,
+    37348, 37702, 37365, 37369, 37384, 37414, 37445, 37393, 37392, 37377,
+    37415, 37380, 37413, 37376, 37434, 37478, 37431, 37427, 37461, 37437,
+    37432, 37470, {f: 2, c: 37484}, 37439, 37984, 37424, 37449, 37448, 37453,
+    37422, 37433, 37944, 37548, 37536, 37498, 37546, 37614, 37583, 37891,
+    37603, 37946, 37553, 37542, 37799, 37526, 37580, 37545, 37877, 37523,
+    37503, 37801, 37530, 37658, 37547, 37507, 37899, 37544, 37539, 37906,
+    37688, 37617, 37847, 37605, 37616, 37615, 37608, 37564, 37597, 37622,
+    {f: 2, c: 37926}, 37571, 37599, 37606, 37650, 37638, 37737, 37659, 37696,
+    37633, 37653, 37678, 37699, {f: 2, c: 37639}, 37663, 37657, 37733, 37703,
+    37750, 37716, 37732, 37802, 37744, 37764, 37860, 37848, 37928, 37767,
+    37836, 37784, 37816, 37823, 37798, 37808, 37813, 37964, 37858,
+    {f: 2, c: 37852}, 37837, 37854, 37827, 37831, 37841, 37908, 37917, 37879,
+    37989, 37907, 37997, 37920, 38009, 37881, 37913, 37962, 37938, 37951,
+    37972, 37987, 37758, 31329, 40169, 40182, 40199, 40198, 40227, 40327,
+    40469, 40221, 40223, 40421, 40239, 40409, 40240, 40258, 40478, 40275,
+    40477, 40288, 40274, 40435, 40284, 40289, 40339, 40298, 40303, 40329,
+    40344, 40346, 40384, 40357, 40361, 40386, 40380, 40474, 40403, 40410,
+    40431, 40422, 40434, 40440, 40460, 40442, 40475, 30308, 30296, 30311,
+    30210, {f: 2, c: 30278}, 30281, 30238, 30267, {f: 2, c: 30317}, 30313,
+    30322, 31431, 31414, 35168, 35123, 35165, 35143, 35128, 35172, 30392,
+    32814, 32812, 32889, 32885, 38919, {f: 2, c: 38926}, 38945, 38940, 28481,
+    38950, 38967, 38990, 38995, 39027, 39010, 39001, 39013, 39020, 39024,
+    34787, 34822, 34566, 34851, 34806, 34554, 34799, 34692, 34832, 34760,
+    34833, 34747, 34766, 32588, 31716, 31591, 31849, 31731, 31744, 31691,
+    31836, 31774, 31787, 31779, 31850, 31839, 33380, 33387, 35018, 32677,
+    31986, 31990, 31965, 32310, 40617, 36274, 37317, 37315, 40570, 36489,
+    36428, 36498, 36474, 36437, 36506, 36491, 36499, 36497, 36513, 36451,
+    36522, 36518, 35316, 35318, 38746, 38722, 38717, 38724, 40788, 40799,
+    40793, 40800, 40796, 40806, 40812, 40810, 40823, [12236, 40701], 40703,
+    40713, 35726, 38014, 37864, 39799, 39796, 39809, 39811, 39822, 40056,
+    31308, 39826, 40031, 39824, 39853, 39834, 39850, 39838, 40045, 39851,
+    39837, 40024, 39873, 40058, 39985, 39993, 39971, 39991, 39872, 39882,
+    39879, 39933, 39894, {f: 2, c: 39914}, 39905, 39908, 39911, 39901, 39906,
+    39920, 39899, 39924, 39892, 40029, 39944, 39952, 39949, 39954, 39945,
+    39935, 39968, 39986, 39981, 39976, 39973, 39977, 39987, 39998, 40008,
+    39995, 39989, 40005, 40022, 40020, 40018, 40039, 38851, 38845, 38857,
+    40379, 39631, 39638, 39637, 39768, 39758, 39255, 39260, 39714, 40695,
+    40690, 35180, 38342, 37686, 24390, 34068, 32404, 40803, 22137, 40725,
+    22081, 39662, 35079, 31296, 39091, 38308, 39693, 36852, 24409, 31339,
+    39138, 20642, 34193, 20760, 25458, 21067, 30543, 32397, 26310, 30637,
+    [12228, 40565], 22217, 40692, 28635, 25054, 30663, 28720, 40629, 34890,
+    38370, 38854, 31844, 32308, 38822, 40623, 22220, 39089, 27311, 32590,
+    31984, 20418, 32363, 40569, 22190, 39706, 33903, 31142, 31858, 39634,
+    38587, 32251, 35069, 30787, {f: 10, c: 8560}, {f: 2, c: 714}, 729, 8211,
+    8213, 8229, 8245, 8453, 8457, {f: 4, c: 8598}, 8725, 8735, 8739, 8786,
+    {f: 2, c: 8806}, 8895, {f: 36, c: 9552}, {f: 15, c: 9601}, {f: 3, c: 9619},
+    {f: 2, c: 9660}, {f: 4, c: 9698}, 9737, 8853, 12306, {f: 2, c: 12317},
+    {f: 9, c: 12321}, 12963, {f: 2, c: 13198}, {f: 3, c: 13212}, 13217, 13252,
+    13262, {f: 2, c: 13265}, 13269, 65072, 65506, 65508, 8481, 12849, 8208,
+    12540, {f: 2, c: 12443}, {f: 2, c: 12541}, 12294, {f: 2, c: 12445},
+    {f: 10, c: 65097}, {f: 4, c: 65108}, {f: 14, c: 65113}, {f: 4, c: 65128},
+    12350, {f: 12, c: 12272}, 19970, {f: 3, c: 19972}, 19983, 19986, 19991,
+    {f: 3, c: 19999}, 20003, 20006, 20009, {f: 2, c: 20014}, 20017, 20019,
+    20021, 20023, 20028, {f: 3, c: 20032}, 20036, 20038, 20042, 20049, 20053,
+    20055, {f: 2, c: 20058}, {f: 4, c: 20066}, {f: 2, c: 20071},
+    {f: 6, c: 20074}, 20082, {f: 10, c: 20084}, {f: 3, c: 20095},
+    {f: 2, c: 20099}, [12037, 20101], 20103, 20106, 20112, {f: 2, c: 20118},
+    20121, {f: 2, c: 20124}, 20131, 20138, {f: 3, c: 20143}, 20148,
+    {f: 4, c: 20150}, {f: 3, c: 20156}, 20168, 20172, {f: 2, c: 20175}, 20178,
+    {f: 3, c: 20186}, 20192, 20194, {f: 2, c: 20198}, 20201, {f: 3, c: 20205},
+    20209, 20212, {f: 3, c: 20216}, 20220, 20222, 20224, {f: 7, c: 20226},
+    {f: 2, c: 20235}, {f: 5, c: 20242}, {f: 2, c: 20252}, 20257, 20259,
+    {f: 2, c: 20264}, {f: 3, c: 20268}, 20273, 20275, 20277, 20279, 20281,
+    20283, {f: 5, c: 20286}, {f: 2, c: 20292}, {f: 6, c: 20295}, 20306, 20308,
+    20310, {f: 2, c: 20321}, 20326, 20328, {f: 2, c: 20330}, {f: 2, c: 20333},
+    {f: 2, c: 20337}, 20341, {f: 4, c: 20343}, 20349, {f: 3, c: 20352}, 20357,
+    20359, 20362, 20364, 20366, 20368, {f: 2, c: 20370}, 20373,
+    {f: 3, c: 20376}, 20380, {f: 2, c: 20382}, {f: 2, c: 20385}, 20388, 20395,
+    20397, {f: 5, c: 20400}, {f: 9, c: 20406}, {f: 2, c: 20416},
+    {f: 4, c: 20422}, {f: 3, c: 20427}, {f: 5, c: 20434}, 20441, 20443, 20450,
+    {f: 2, c: 20452}, 20455, {f: 2, c: 20459}, 20464, 20466, {f: 4, c: 20468},
+    20473, {f: 3, c: 20475}, 20479, {f: 5, c: 20481}, {f: 2, c: 20487}, 20490,
+    20494, 20496, 20499, {f: 3, c: 20501}, 20507, {f: 2, c: 20509}, 20512,
+    {f: 3, c: 20514}, 20519, {f: 11, c: 20527}, 20539, 20541, {f: 4, c: 20543},
+    {f: 3, c: 20548}, {f: 2, c: 20554}, 20557, {f: 5, c: 20560},
+    {f: 4, c: 20566}, 20571, {f: 8, c: 20573}, {f: 6, c: 20582},
+    {f: 7, c: 20589}, {f: 3, c: 20600}, {f: 2, c: 20604}, {f: 4, c: 20609},
+    {f: 2, c: 20614}, {f: 4, c: 20617}, {f: 8, c: 20622}, 20631,
+    {f: 8, c: 20634}, 20644, 20646, {f: 2, c: 20650}, {f: 4, c: 20654}, 20662,
+    {f: 2, c: 20664}, {f: 2, c: 20668}, {f: 3, c: 20671}, {f: 2, c: 20675},
+    {f: 3, c: 20678}, {f: 5, c: 20682}, 20688, {f: 3, c: 20690},
+    {f: 3, c: 20695}, {f: 3, c: 20699}, {f: 6, c: 20703}, {f: 3, c: 20713},
+    {f: 4, c: 20719}, 20724, {f: 3, c: 20726}, 20730, {f: 4, c: 20732}, 20737,
+    20739, 20741, 20746, {f: 4, c: 20748}, 20753, 20755, {f: 2, c: 20758},
+    {f: 6, c: 20761}, 20768, {f: 8, c: 20770}, {f: 7, c: 20779},
+    {f: 4, c: 20787}, {f: 2, c: 20792}, {f: 2, c: 20797}, 20802, 20807, 20810,
+    20812, {f: 3, c: 20814}, 20819, {f: 3, c: 20823}, 20827, {f: 5, c: 20829},
+    {f: 2, c: 20835}, {f: 2, c: 20838}, 20842, 20847, 20850, 20858,
+    {f: 2, c: 20862}, {f: 2, c: 20867}, {f: 2, c: 20870}, {f: 2, c: 20874},
+    {f: 4, c: 20878}, {f: 2, c: 20883}, 20888, 20890, {f: 3, c: 20893}, 20897,
+    20899, {f: 5, c: 20902}, {f: 2, c: 20909}, 20916, {f: 3, c: 20920},
+    {f: 2, c: 20926}, {f: 3, c: 20929}, 20933, 20936, 20938, 20942, 20944,
+    {f: 9, c: 20946}, 20956, {f: 2, c: 20958}, {f: 2, c: 20962},
+    {f: 6, c: 20965}, 20972, 20974, 20978, 20980, 20983, 20990,
+    {f: 2, c: 20996}, 21001, {f: 2, c: 21003}, {f: 2, c: 21007},
+    {f: 3, c: 21011}, 21020, {f: 2, c: 21022}, {f: 3, c: 21025},
+    {f: 3, c: 21029}, 21034, 21036, 21039, {f: 2, c: 21041}, {f: 2, c: 21044},
+    21052, 21054, {f: 2, c: 21061}, {f: 2, c: 21064}, {f: 2, c: 21070},
+    {f: 2, c: 21074}, 21077, {f: 4, c: 21079}, 21085, {f: 2, c: 21087},
+    {f: 3, c: 21090}, 21094, 21096, {f: 3, c: 21099}, {f: 2, c: 21104}, 21107,
+    {f: 7, c: 21110}, 21118, 21120, {f: 3, c: 21124}, 21131, {f: 2, c: 21134},
+    21138, {f: 7, c: 21140}, 21148, {f: 4, c: 21156}, {f: 3, c: 21166},
+    {f: 10, c: 21172}, 21184, 21186, {f: 3, c: 21188}, 21192, 21194,
+    {f: 4, c: 21196}, 21201, {f: 2, c: 21203}, 21207, 21210, 21212,
+    {f: 2, c: 21216}, 21219, {f: 11, c: 21221}, {f: 3, c: 21234},
+    {f: 2, c: 21238}, {f: 3, c: 21243}, {f: 4, c: 21249}, 21255,
+    {f: 4, c: 21257}, 21262, {f: 4, c: 21265}, 21272, {f: 2, c: 21275},
+    {f: 2, c: 21278}, 21282, {f: 2, c: 21284}, {f: 3, c: 21287},
+    {f: 2, c: 21291}, 21296, {f: 6, c: 21298}, [12054, 21304],
+    {f: 2, c: 21308}, 21314, 21316, 21318, {f: 3, c: 21323}, 21328,
+    {f: 2, c: 21336}, 21339, 21341, 21349, 21352, 21354, {f: 2, c: 21356},
+    21362, 21366, 21369, {f: 4, c: 21371}, {f: 2, c: 21376}, 21379,
+    {f: 2, c: 21383}, 21386, {f: 7, c: 21390}, {f: 2, c: 21398},
+    {f: 2, c: 21403}, 21406, 21409, 21412, 21415, {f: 3, c: 21418},
+    {f: 3, c: 21423}, 21427, 21429, {f: 4, c: 21431}, {f: 3, c: 21436}, 21440,
+    {f: 4, c: 21444}, {f: 3, c: 21454}, {f: 2, c: 21458}, 21461, 21466,
+    {f: 3, c: 21468}, 21473, 21479, 21492, 21498, {f: 3, c: 21502}, 21506,
+    21509, 21511, 21515, 21524, {f: 3, c: 21528}, 21532, 21538,
+    {f: 2, c: 21540}, 21546, 21552, 21555, {f: 2, c: 21558}, 21562, 21565,
+    21567, {f: 2, c: 21569}, {f: 2, c: 21572}, 21575, 21577, {f: 4, c: 21580},
+    21585, 21594, {f: 5, c: 21597}, 21603, 21605, 21607, {f: 8, c: 21609},
+    21620, {f: 2, c: 21625}, {f: 2, c: 21630}, 21633, 21635, 21637,
+    {f: 4, c: 21639}, 21645, 21649, 21651, {f: 2, c: 21655}, 21660,
+    {f: 5, c: 21662}, 21669, 21678, 21680, 21682, {f: 3, c: 21685},
+    {f: 2, c: 21689}, 21694, 21699, 21701, {f: 2, c: 21706}, 21718, 21720,
+    21723, 21728, {f: 3, c: 21730}, {f: 2, c: 21739}, {f: 3, c: 21743},
+    {f: 6, c: 21748}, 21755, 21758, 21760, {f: 2, c: 21762}, 21765, 21768,
+    {f: 5, c: 21770}, {f: 2, c: 21778}, {f: 6, c: 21781}, {f: 4, c: 21788},
+    21793, {f: 2, c: 21797}, {f: 2, c: 21800}, 21803, 21805, 21810,
+    {f: 3, c: 21812}, {f: 4, c: 21816}, 21821, 21824, 21826, 21829,
+    {f: 2, c: 21831}, {f: 4, c: 21835}, {f: 2, c: 21841}, 21844,
+    {f: 5, c: 21847}, 21853, {f: 2, c: 21855}, {f: 2, c: 21858},
+    {f: 2, c: 21864}, 21867, {f: 6, c: 21871}, {f: 2, c: 21881}, 21885, 21887,
+    {f: 2, c: 21893}, {f: 3, c: 21900}, 21904, {f: 2, c: 21906},
+    {f: 3, c: 21909}, {f: 2, c: 21914}, 21918, {f: 7, c: 21920},
+    {f: 2, c: 21928}, 21931, 21933, {f: 2, c: 21935}, 21940, 21942, 21944,
+    21946, 21948, {f: 5, c: 21951}, 21960, {f: 2, c: 21962}, {f: 2, c: 21967},
+    21973, {f: 3, c: 21975}, 21979, 21982, 21984, 21986, 21991,
+    {f: 2, c: 21997}, {f: 2, c: 22000}, 22004, {f: 5, c: 22008}, 22015,
+    {f: 4, c: 22018}, 22023, {f: 2, c: 22026}, {f: 4, c: 22032}, 22037,
+    {f: 2, c: 22041}, 22045, {f: 3, c: 22048}, {f: 2, c: 22053}, 22056,
+    {f: 2, c: 22058}, 22067, 22071, 22074, {f: 3, c: 22076}, 22080,
+    {f: 10, c: 22082}, {f: 5, c: 22095}, {f: 2, c: 22101}, {f: 2, c: 22106},
+    {f: 2, c: 22110}, 22113, 22115, 22119, {f: 2, c: 22125}, 22128, 22131,
+    22133, 22135, 22138, {f: 3, c: 22141}, {f: 4, c: 22145}, {f: 4, c: 22152},
+    22157, {f: 3, c: 22160}, 22164, {f: 3, c: 22166}, {f: 9, c: 22170},
+    {f: 2, c: 22180}, 22183, {f: 5, c: 22185}, {f: 3, c: 22192}, 22197,
+    {f: 4, c: 22200}, {f: 3, c: 22205}, {f: 2, c: 22211}, {f: 2, c: 22214},
+    22219, {f: 4, c: 22221}, {f: 2, c: 22226}, {f: 2, c: 22229},
+    {f: 2, c: 22232}, 22236, 22243, {f: 6, c: 22245}, 22252, {f: 2, c: 22254},
+    {f: 2, c: 22258}, {f: 3, c: 22262}, {f: 2, c: 22267}, {f: 3, c: 22272},
+    22277, 22284, {f: 4, c: 22286}, {f: 2, c: 22292}, 22295, {f: 3, c: 22297},
+    {f: 2, c: 22301}, {f: 3, c: 22304}, {f: 4, c: 22308}, 22315,
+    {f: 2, c: 22321}, {f: 5, c: 22324}, {f: 2, c: 22332}, 22335, 22337,
+    {f: 4, c: 22339}, {f: 2, c: 22344}, 22347, {f: 5, c: 22354},
+    {f: 2, c: 22360}, {f: 2, c: 22370}, 22373, 22375, 22380, 22382,
+    {f: 3, c: 22384}, {f: 2, c: 22388}, {f: 3, c: 22392}, {f: 5, c: 22397},
+    {f: 4, c: 22407}, {f: 5, c: 22413}, {f: 7, c: 22420}, {f: 4, c: 22428},
+    22437, 22440, 22442, 22444, {f: 3, c: 22447}, 22451, {f: 3, c: 22453},
+    {f: 9, c: 22457}, {f: 7, c: 22468}, {f: 2, c: 22476}, {f: 2, c: 22480},
+    22483, {f: 2, c: 22486}, {f: 2, c: 22491}, 22494, {f: 2, c: 22498},
+    {f: 8, c: 22501}, 22510, {f: 4, c: 22512}, {f: 2, c: 22517},
+    {f: 2, c: 22523}, {f: 2, c: 22526}, 22529, {f: 2, c: 22531},
+    {f: 2, c: 22536}, 22540, {f: 3, c: 22542}, {f: 3, c: 22546},
+    {f: 2, c: 22551}, {f: 3, c: 22554}, 22559, {f: 2, c: 22562},
+    {f: 5, c: 22565}, {f: 4, c: 22571}, {f: 2, c: 22578}, {f: 14, c: 22582},
+    {f: 5, c: 22597}, 22606, 22608, 22611, {f: 2, c: 22613}, {f: 5, c: 22617},
+    {f: 3, c: 22623}, 22627, {f: 5, c: 22630}, {f: 8, c: 22637},
+    {f: 3, c: 22646}, {f: 4, c: 22650}, 22655, 22658, 22660, {f: 3, c: 22662},
+    {f: 7, c: 22667}, {f: 5, c: 22676}, 22683, 22685, {f: 8, c: 22688},
+    {f: 4, c: 22698}, {f: 4, c: 22703}, {f: 7, c: 22708}, 22717,
+    {f: 2, c: 22719}, {f: 3, c: 22722}, 22726, {f: 9, c: 22728}, 22738, 22740,
+    {f: 2, c: 22742}, {f: 3, c: 22747}, 22753, 22755, {f: 4, c: 22757}, 22762,
+    22765, {f: 2, c: 22769}, {f: 2, c: 22772}, {f: 2, c: 22775},
+    {f: 2, c: 22779}, {f: 4, c: 22782}, 22787, {f: 2, c: 22789},
+    {f: 2, c: 22792}, [12066, 22794], {f: 2, c: 22795}, 22798,
+    {f: 4, c: 22800}, {f: 2, c: 22807}, 22811, {f: 2, c: 22813},
+    {f: 2, c: 22816}, 22819, 22822, 22824, 22828, 22832, {f: 2, c: 22834},
+    {f: 2, c: 22837}, 22843, 22845, {f: 2, c: 22847}, 22851, {f: 2, c: 22853},
+    22858, {f: 2, c: 22860}, 22864, {f: 2, c: 22866}, 22873, {f: 5, c: 22875},
+    22881, {f: 2, c: 22883}, {f: 3, c: 22886}, 22891, 22893, {f: 4, c: 22895},
+    22901, 22903, {f: 3, c: 22906}, {f: 3, c: 22910}, 22917, 22921,
+    {f: 2, c: 22923}, {f: 4, c: 22926}, {f: 2, c: 22932}, 22936,
+    {f: 3, c: 22938}, {f: 4, c: 22943}, {f: 2, c: 22950}, {f: 2, c: 22956},
+    {f: 2, c: 22960}, {f: 6, c: 22963}, 22970, {f: 2, c: 22972},
+    {f: 7, c: 22975}, {f: 3, c: 22983}, {f: 4, c: 22988}, {f: 2, c: 22997},
+    23001, 23003, {f: 5, c: 23006}, 23012, {f: 2, c: 23014}, {f: 3, c: 23017},
+    {f: 12, c: 23021}, 23034, {f: 3, c: 23036}, 23040, 23042, {f: 2, c: 23050},
+    {f: 4, c: 23053}, 23058, {f: 4, c: 23060}, {f: 3, c: 23065},
+    {f: 2, c: 23069}, {f: 2, c: 23073}, 23076, {f: 3, c: 23078},
+    {f: 7, c: 23082}, 23091, 23093, {f: 5, c: 23095}, {f: 3, c: 23101},
+    {f: 4, c: 23106}, {f: 2, c: 23111}, {f: 10, c: 23115}, {f: 4, c: 23126},
+    {f: 7, c: 23131}, {f: 3, c: 23139}, {f: 2, c: 23144}, {f: 2, c: 23147},
+    {f: 6, c: 23150}, {f: 2, c: 23160}, {f: 4, c: 23163}, {f: 18, c: 23168},
+    {f: 7, c: 23187}, {f: 11, c: 23196}, {f: 2, c: 23208}, {f: 7, c: 23211},
+    23220, {f: 2, c: 23222}, {f: 4, c: 23225}, {f: 2, c: 23231},
+    {f: 6, c: 23235}, {f: 2, c: 23242}, {f: 5, c: 23245}, 23251, 23253,
+    {f: 3, c: 23257}, {f: 3, c: 23261}, 23266, {f: 2, c: 23268},
+    {f: 2, c: 23271}, 23274, {f: 5, c: 23276}, {f: 3, c: 23282},
+    {f: 5, c: 23286}, {f: 4, c: 23292}, {f: 7, c: 23297}, 23306,
+    {f: 9, c: 23309}, 23320, {f: 7, c: 23322}, {f: 8, c: 23330},
+    {f: 5, c: 23339}, 23345, 23347, {f: 2, c: 23349}, {f: 7, c: 23353},
+    {f: 11, c: 23361}, {f: 3, c: 23373}, 23378, 23382, 23390, {f: 2, c: 23392},
+    {f: 2, c: 23399}, {f: 3, c: 23405}, 23410, 23412, {f: 2, c: 23414}, 23417,
+    {f: 2, c: 23419}, 23422, 23426, 23430, 23434, {f: 2, c: 23437},
+    {f: 3, c: 23440}, 23444, 23446, 23455, {f: 3, c: 23463}, {f: 4, c: 23468},
+    {f: 2, c: 23473}, 23479, {f: 3, c: 23482}, {f: 2, c: 23488}, 23491,
+    {f: 4, c: 23496}, {f: 3, c: 23501}, 23505, {f: 9, c: 23508}, 23520, 23523,
+    23530, 23533, 23535, {f: 4, c: 23537}, 23543, {f: 2, c: 23549}, 23552,
+    {f: 2, c: 23554}, 23557, 23564, 23568, {f: 2, c: 23570}, 23575, 23577,
+    23579, {f: 4, c: 23582}, 23587, 23590, {f: 4, c: 23592}, {f: 4, c: 23597},
+    {f: 2, c: 23602}, {f: 2, c: 23605}, {f: 2, c: 23619}, {f: 2, c: 23622},
+    {f: 2, c: 23628}, {f: 3, c: 23634}, {f: 3, c: 23638}, {f: 4, c: 23642},
+    23647, 23655, {f: 3, c: 23657}, 23661, 23664, {f: 7, c: 23666},
+    {f: 4, c: 23675}, 23680, {f: 5, c: 23683}, {f: 3, c: 23689},
+    {f: 2, c: 23694}, {f: 2, c: 23698}, 23701, {f: 4, c: 23709},
+    {f: 5, c: 23716}, 23722, {f: 3, c: 23726}, 23730, 23732, 23734,
+    {f: 4, c: 23737}, 23742, 23744, {f: 2, c: 23746}, {f: 6, c: 23749},
+    {f: 6, c: 23756}, {f: 6, c: 23763}, {f: 7, c: 23770}, {f: 2, c: 23778},
+    23783, 23785, {f: 2, c: 23787}, {f: 2, c: 23790}, {f: 3, c: 23793}, 23797,
+    {f: 4, c: 23799}, 23804, {f: 4, c: 23806}, {f: 2, c: 23812},
+    {f: 5, c: 23816}, {f: 5, c: 23823}, 23829, {f: 3, c: 23832},
+    {f: 2, c: 23836}, {f: 5, c: 23839}, 23845, 23848, {f: 2, c: 23850},
+    {f: 5, c: 23855}, {f: 8, c: 23861}, {f: 8, c: 23871}, {f: 2, c: 23880},
+    {f: 3, c: 23885}, {f: 7, c: 23889}, {f: 2, c: 23897}, 23900,
+    {f: 11, c: 23902}, 23914, {f: 2, c: 23917}, {f: 4, c: 23920},
+    {f: 12, c: 23925}, 23939, {f: 2, c: 23941}, {f: 15, c: 23944}, 23960,
+    {f: 3, c: 23962}, {f: 2, c: 23966}, {f: 6, c: 23969}, {f: 15, c: 23976},
+    23993, 23995, {f: 8, c: 23997}, {f: 5, c: 24006}, 24012, {f: 4, c: 24014},
+    24019, {f: 6, c: 24021}, 24028, {f: 2, c: 24031}, {f: 2, c: 24035}, 24042,
+    {f: 2, c: 24044}, {f: 2, c: 24053}, {f: 5, c: 24056}, {f: 2, c: 24063},
+    24068, 24071, {f: 3, c: 24073}, {f: 2, c: 24077}, {f: 2, c: 24082}, 24087,
+    {f: 7, c: 24094}, {f: 3, c: 24104}, 24108, {f: 2, c: 24111}, 24114,
+    {f: 2, c: 24116}, {f: 2, c: 24121}, {f: 2, c: 24126}, 24129,
+    {f: 6, c: 24134}, {f: 7, c: 24141}, 24150, {f: 2, c: 24153},
+    {f: 2, c: 24156}, 24160, {f: 7, c: 24164}, {f: 5, c: 24173}, 24181, 24183,
+    {f: 3, c: 24193}, 24197, {f: 2, c: 24200}, {f: 3, c: 24204}, 24210, 24216,
+    24219, 24221, {f: 4, c: 24225}, {f: 3, c: 24232}, 24236, {f: 5, c: 24238},
+    24244, {f: 4, c: 24250}, {f: 10, c: 24255}, {f: 6, c: 24267},
+    {f: 2, c: 24276}, {f: 4, c: 24279}, {f: 3, c: 24284}, {f: 4, c: 24292},
+    24297, 24299, {f: 6, c: 24301}, 24309, {f: 2, c: 24312}, {f: 3, c: 24315},
+    {f: 3, c: 24325}, 24329, {f: 3, c: 24332}, 24336, 24338, 24340, 24342,
+    {f: 2, c: 24345}, {f: 3, c: 24348}, {f: 4, c: 24353}, 24360,
+    {f: 2, c: 24363}, 24366, 24368, 24370, 24372, {f: 3, c: 24374}, 24379,
+    {f: 3, c: 24381}, {f: 5, c: 24385}, 24391, {f: 3, c: 24393}, 24397, 24399,
+    24401, 24404, {f: 3, c: 24410}, {f: 3, c: 24414}, 24419, 24421,
+    {f: 2, c: 24423}, 24427, {f: 2, c: 24430}, 24434, {f: 3, c: 24436}, 24440,
+    24442, {f: 3, c: 24445}, 24451, 24454, {f: 3, c: 24461}, {f: 2, c: 24467},
+    24470, {f: 2, c: 24474}, 24477, 24479, {f: 6, c: 24482}, {f: 2, c: 24491},
+    {f: 6, c: 24495}, 24502, 24504, {f: 2, c: 24506}, {f: 5, c: 24510},
+    {f: 2, c: 24519}, {f: 2, c: 24522}, 24526, {f: 3, c: 24531},
+    {f: 3, c: 24538}, {f: 2, c: 24542}, {f: 2, c: 24546}, {f: 2, c: 24549},
+    {f: 2, c: 24552}, 24556, {f: 2, c: 24559}, {f: 3, c: 24562},
+    {f: 2, c: 24566}, {f: 2, c: 24569}, 24572, {f: 3, c: 24583},
+    {f: 2, c: 24587}, {f: 2, c: 24592}, 24595, {f: 2, c: 24599}, 24602,
+    {f: 2, c: 24606}, {f: 3, c: 24610}, {f: 3, c: 24620}, {f: 5, c: 24624},
+    {f: 5, c: 24630}, {f: 2, c: 24637}, 24640, {f: 7, c: 24644}, 24652,
+    {f: 2, c: 24654}, 24657, {f: 2, c: 24659}, {f: 3, c: 24662},
+    {f: 2, c: 24667}, {f: 4, c: 24670}, {f: 2, c: 24677}, 24686,
+    {f: 2, c: 24689}, {f: 2, c: 24692}, 24695, 24702, {f: 3, c: 24704},
+    {f: 4, c: 24709}, {f: 2, c: 24714}, {f: 4, c: 24718}, 24723, 24725,
+    {f: 3, c: 24727}, 24732, 24734, {f: 2, c: 24737}, {f: 2, c: 24740}, 24743,
+    {f: 2, c: 24745}, 24750, 24752, 24755, 24759, {f: 2, c: 24761},
+    {f: 8, c: 24765}, {f: 3, c: 24775}, {f: 5, c: 24780}, {f: 3, c: 24786},
+    {f: 2, c: 24790}, 24793, 24795, 24798, {f: 4, c: 24802}, 24810, 24821,
+    {f: 2, c: 24823}, {f: 4, c: 24828}, {f: 4, c: 24834}, 24839,
+    {f: 3, c: 24842}, {f: 5, c: 24848}, {f: 4, c: 24854}, {f: 2, c: 24861},
+    {f: 2, c: 24865}, 24869, {f: 3, c: 24872}, {f: 8, c: 24876},
+    {f: 2, c: 24885}, {f: 6, c: 24888}, {f: 8, c: 24896}, 24905, 24909,
+    {f: 2, c: 24911}, {f: 3, c: 24914}, {f: 2, c: 24918}, 24921,
+    {f: 2, c: 24923}, 24926, {f: 2, c: 24928}, {f: 2, c: 24933}, 24937,
+    {f: 2, c: 24940}, 24943, {f: 2, c: 24945}, 24948, {f: 10, c: 24952},
+    {f: 7, c: 24963}, {f: 2, c: 24972}, 24975, 24979, {f: 5, c: 24981},
+    {f: 2, c: 24987}, {f: 6, c: 24990}, {f: 2, c: 24997}, 25002, 25005,
+    {f: 3, c: 25007}, {f: 3, c: 25011}, {f: 6, c: 25016}, {f: 3, c: 25023},
+    {f: 4, c: 25027}, {f: 4, c: 25037}, 25043, {f: 9, c: 25045},
+    {f: 3, c: 25056}, {f: 2, c: 25060}, 25063, {f: 9, c: 25065},
+    {f: 2, c: 25075}, 25081, 25083, 25085, {f: 5, c: 25089}, 25097, 25107,
+    25113, {f: 3, c: 25116}, 25120, 25123, 25126, {f: 2, c: 25128}, 25131,
+    25133, 25135, 25137, 25141, [12094, 25142], {f: 5, c: 25144}, 25154,
+    {f: 3, c: 25156}, 25162, {f: 2, c: 25167}, {f: 3, c: 25173},
+    {f: 2, c: 25177}, {f: 7, c: 25180}, {f: 2, c: 25188}, 25192,
+    {f: 2, c: 25201}, {f: 2, c: 25204}, {f: 2, c: 25207}, {f: 2, c: 25210},
+    25213, {f: 3, c: 25217}, {f: 4, c: 25221}, {f: 6, c: 25227}, 25236, 25241,
+    {f: 3, c: 25244}, 25251, {f: 2, c: 25254}, {f: 2, c: 25257},
+    {f: 4, c: 25261}, {f: 3, c: 25266}, {f: 3, c: 25270}, 25274, 25278,
+    {f: 2, c: 25280}, 25283, 25291, 25295, 25297, 25301, {f: 2, c: 25309},
+    {f: 2, c: 25312}, 25316, {f: 2, c: 25322}, 25328, 25330, 25333,
+    {f: 4, c: 25336}, 25344, {f: 4, c: 25347}, {f: 4, c: 25354},
+    {f: 2, c: 25359}, {f: 4, c: 25362}, {f: 3, c: 25367}, 25372,
+    {f: 2, c: 25382}, 25385, {f: 3, c: 25388}, {f: 2, c: 25392},
+    {f: 6, c: 25395}, {f: 2, c: 25403}, {f: 3, c: 25407}, 25412,
+    {f: 2, c: 25415}, 25418, {f: 4, c: 25425}, {f: 8, c: 25430}, 25440,
+    {f: 3, c: 25444}, 25450, 25452, {f: 2, c: 25455}, {f: 3, c: 25459},
+    {f: 2, c: 25464}, {f: 4, c: 25468}, 25473, {f: 2, c: 25477}, 25483, 25485,
+    25489, {f: 3, c: 25491}, 25495, {f: 7, c: 25497}, 25505, 25508, 25510,
+    25515, 25519, {f: 2, c: 25521}, {f: 2, c: 25525}, 25529, 25531, 25533,
+    25535, {f: 3, c: 25537}, 25541, {f: 2, c: 25543}, {f: 3, c: 25546}, 25553,
+    {f: 3, c: 25555}, {f: 3, c: 25559}, {f: 3, c: 25563}, 25567, 25570,
+    {f: 5, c: 25572}, {f: 2, c: 25579}, {f: 3, c: 25583}, 25587, 25589, 25591,
+    {f: 4, c: 25593}, 25598, {f: 2, c: 25603}, {f: 5, c: 25606}, 25614,
+    {f: 2, c: 25617}, {f: 2, c: 25621}, {f: 3, c: 25624}, 25629, 25631,
+    {f: 4, c: 25634}, {f: 3, c: 25639}, 25643, {f: 6, c: 25646}, 25653,
+    {f: 3, c: 25655}, {f: 2, c: 25659}, 25662, 25664, {f: 2, c: 25666}, 25673,
+    {f: 6, c: 25675}, 25683, {f: 3, c: 25685}, {f: 3, c: 25689}, 25693,
+    {f: 7, c: 25696}, 25704, {f: 3, c: 25706}, 25710, {f: 3, c: 25712},
+    {f: 2, c: 25716}, 25719, {f: 6, c: 25724}, 25731, 25734, {f: 8, c: 25737},
+    25748, {f: 2, c: 25751}, {f: 4, c: 25754}, {f: 3, c: 25760},
+    {f: 3, c: 25766}, 25770, 25775, 25777, 25780, 25782, 25785, 25789, 25795,
+    25798, {f: 2, c: 25800}, 25804, 25807, 25809, 25811, {f: 2, c: 25813},
+    25817, {f: 3, c: 25819}, 25823, 25825, 25827, 25829, {f: 5, c: 25831},
+    {f: 2, c: 25837}, 25843, {f: 2, c: 25845}, {f: 2, c: 25848}, 25853, 25855,
+    {f: 3, c: 25857}, 25861, {f: 2, c: 25863}, {f: 5, c: 25866},
+    {f: 2, c: 25872}, 25875, 25877, 25879, 25882, 25884, {f: 4, c: 25886},
+    {f: 4, c: 25894}, 25901, {f: 4, c: 25904}, 25911, 25914, {f: 2, c: 25916},
+    {f: 5, c: 25920}, {f: 2, c: 25926}, {f: 2, c: 25930}, {f: 2, c: 25933},
+    25936, {f: 3, c: 25938}, 25944, 25946, 25948, {f: 3, c: 25951},
+    {f: 2, c: 25956}, {f: 4, c: 25959}, {f: 3, c: 25965}, 25969, 25971, 25974,
+    {f: 9, c: 25977}, {f: 3, c: 25988}, {f: 3, c: 25992}, {f: 3, c: 25997},
+    26002, 26004, 26006, 26008, 26010, {f: 2, c: 26013}, 26016,
+    {f: 2, c: 26018}, 26022, 26024, 26026, 26030, {f: 6, c: 26033}, 26040,
+    {f: 2, c: 26042}, {f: 3, c: 26046}, 26050, {f: 4, c: 26055}, 26061,
+    {f: 2, c: 26064}, {f: 3, c: 26067}, {f: 8, c: 26072}, 26081,
+    {f: 2, c: 26083}, {f: 2, c: 26090}, {f: 4, c: 26098}, {f: 2, c: 26104},
+    {f: 5, c: 26107}, 26113, {f: 2, c: 26116}, {f: 3, c: 26119}, 26123, 26125,
+    {f: 3, c: 26128}, {f: 3, c: 26134}, {f: 3, c: 26138}, 26142,
+    {f: 4, c: 26145}, 26150, {f: 4, c: 26153}, 26158, 26160, {f: 2, c: 26162},
+    {f: 5, c: 26167}, 26173, {f: 2, c: 26175}, {f: 7, c: 26180},
+    {f: 2, c: 26189}, {f: 2, c: 26192}, {f: 2, c: 26200}, {f: 2, c: 26203},
+    26206, 26208, {f: 2, c: 26210}, 26213, 26215, {f: 5, c: 26217},
+    {f: 3, c: 26225}, 26229, {f: 2, c: 26232}, {f: 3, c: 26235},
+    {f: 3, c: 26239}, 26243, {f: 2, c: 26245}, {f: 2, c: 26250},
+    {f: 4, c: 26253}, {f: 4, c: 26258}, {f: 5, c: 26264}, {f: 4, c: 26270},
+    {f: 4, c: 26275}, {f: 2, c: 26281}, {f: 2, c: 26284}, {f: 5, c: 26287},
+    {f: 4, c: 26293}, {f: 4, c: 26298}, {f: 5, c: 26303}, 26309, 26312,
+    {f: 12, c: 26314}, {f: 2, c: 26327}, 26330, {f: 2, c: 26334},
+    {f: 5, c: 26337}, {f: 2, c: 26343}, {f: 2, c: 26346}, {f: 3, c: 26349},
+    26353, {f: 2, c: 26357}, {f: 2, c: 26362}, 26365, {f: 2, c: 26369},
+    {f: 4, c: 26372}, 26380, {f: 2, c: 26382}, {f: 3, c: 26385}, 26390,
+    {f: 3, c: 26392}, 26396, 26398, {f: 6, c: 26400}, 26409, 26414, 26416,
+    {f: 2, c: 26418}, {f: 4, c: 26422}, {f: 2, c: 26427}, {f: 2, c: 26430},
+    26433, {f: 2, c: 26436}, 26439, {f: 2, c: 26442}, 26445, 26450,
+    {f: 2, c: 26452}, {f: 5, c: 26455}, 26461, {f: 3, c: 26466},
+    {f: 2, c: 26470}, {f: 2, c: 26475}, 26478, 26484, 26486, {f: 4, c: 26488},
+    26493, 26496, {f: 2, c: 26498}, {f: 2, c: 26501}, 26504, 26506,
+    {f: 4, c: 26508}, {f: 4, c: 26513}, 26518, 26521, 26523, {f: 3, c: 26527},
+    26532, 26534, 26537, 26540, 26542, {f: 2, c: 26545}, 26548,
+    {f: 8, c: 26553}, 26562, {f: 10, c: 26565}, {f: 3, c: 26581}, 26587, 26591,
+    26593, {f: 2, c: 26595}, {f: 3, c: 26598}, {f: 2, c: 26602},
+    {f: 2, c: 26605}, 26610, {f: 8, c: 26613}, 26622, {f: 4, c: 26625}, 26630,
+    26637, 26640, 26642, {f: 2, c: 26644}, {f: 5, c: 26648}, {f: 3, c: 26654},
+    {f: 7, c: 26658}, {f: 7, c: 26667}, {f: 3, c: 26676}, {f: 2, c: 26682},
+    26687, 26695, 26699, 26701, 26703, 26706, {f: 10, c: 26710}, 26730,
+    {f: 8, c: 26732}, 26741, {f: 9, c: 26744}, 26754, 26756, {f: 8, c: 26759},
+    {f: 3, c: 26768}, {f: 3, c: 26772}, {f: 4, c: 26777}, 26782,
+    {f: 2, c: 26784}, {f: 3, c: 26787}, {f: 4, c: 26793}, 26798,
+    {f: 2, c: 26801}, 26804, {f: 10, c: 26806}, 26817, {f: 6, c: 26819}, 26826,
+    26828, {f: 4, c: 26830}, {f: 2, c: 26835}, 26841, {f: 4, c: 26843},
+    {f: 2, c: 26849}, {f: 3, c: 26852}, {f: 6, c: 26856}, 26863,
+    {f: 3, c: 26866}, {f: 3, c: 26870}, 26875, {f: 4, c: 26877},
+    {f: 3, c: 26882}, {f: 5, c: 26886}, 26892, 26897, {f: 12, c: 26899},
+    {f: 3, c: 26913}, {f: 8, c: 26917}, {f: 2, c: 26926}, {f: 3, c: 26929},
+    {f: 4, c: 26933}, {f: 3, c: 26938}, 26942, {f: 2, c: 26944},
+    {f: 7, c: 26947}, {f: 8, c: 26955}, {f: 2, c: 26965}, {f: 2, c: 26968},
+    {f: 2, c: 26971}, 26975, {f: 2, c: 26977}, {f: 2, c: 26980}, 26983,
+    {f: 2, c: 26985}, 26988, {f: 2, c: 26991}, {f: 3, c: 26994}, 26998,
+    {f: 2, c: 27002}, {f: 3, c: 27005}, 27009, 27011, 27013, {f: 3, c: 27018},
+    {f: 6, c: 27022}, {f: 2, c: 27030}, {f: 2, c: 27033}, {f: 10, c: 27037},
+    27049, 27052, {f: 2, c: 27055}, {f: 2, c: 27058}, {f: 2, c: 27061},
+    {f: 3, c: 27064}, {f: 3, c: 27068}, 27072, {f: 8, c: 27074}, 27087,
+    {f: 3, c: 27089}, {f: 6, c: 27093}, {f: 3, c: 27100}, {f: 6, c: 27105},
+    {f: 5, c: 27112}, {f: 4, c: 27118}, {f: 9, c: 27124}, 27134, 27136,
+    {f: 2, c: 27139}, {f: 4, c: 27142}, {f: 8, c: 27147}, {f: 3, c: 27156},
+    {f: 4, c: 27162}, 27168, 27170, {f: 4, c: 27172}, 27177, {f: 4, c: 27179},
+    27184, {f: 3, c: 27186}, {f: 2, c: 27190}, {f: 2, c: 27195},
+    {f: 5, c: 27199}, {f: 2, c: 27205}, {f: 2, c: 27209}, {f: 4, c: 27212},
+    {f: 7, c: 27217}, 27226, {f: 3, c: 27228}, 27232, {f: 2, c: 27235},
+    {f: 11, c: 27238}, {f: 7, c: 27250}, {f: 2, c: 27258}, {f: 3, c: 27261},
+    {f: 3, c: 27265}, {f: 4, c: 27269}, {f: 4, c: 27274}, 27279,
+    {f: 2, c: 27282}, {f: 2, c: 27285}, {f: 4, c: 27288}, {f: 3, c: 27293},
+    27297, {f: 5, c: 27300}, 27306, {f: 2, c: 27309}, {f: 3, c: 27312},
+    {f: 4, c: 27316}, {f: 2, c: 27321}, {f: 7, c: 27324}, {f: 15, c: 27332},
+    {f: 6, c: 27348}, 27356, {f: 7, c: 27360}, 27369, 27371, {f: 6, c: 27373},
+    {f: 4, c: 27380}, {f: 2, c: 27385}, {f: 8, c: 27388}, {f: 5, c: 27397},
+    {f: 4, c: 27403}, {f: 2, c: 27408}, {f: 3, c: 27411}, {f: 7, c: 27415},
+    27423, {f: 2, c: 27429}, {f: 10, c: 27432}, {f: 4, c: 27443}, 27448,
+    {f: 2, c: 27451}, {f: 4, c: 27455}, {f: 2, c: 27460}, 27464,
+    {f: 2, c: 27466}, {f: 3, c: 27469}, {f: 8, c: 27473}, {f: 5, c: 27482},
+    27488, {f: 2, c: 27496}, {f: 7, c: 27499}, {f: 4, c: 27507}, 27514,
+    {f: 4, c: 27517}, 27525, 27528, 27532, {f: 4, c: 27534}, {f: 2, c: 27540},
+    27543, 27545, {f: 2, c: 27548}, {f: 2, c: 27551}, {f: 2, c: 27554},
+    {f: 5, c: 27557}, {f: 2, c: 27564}, {f: 2, c: 27568}, 27574,
+    {f: 2, c: 27576}, {f: 3, c: 27580}, 27584, {f: 2, c: 27587},
+    {f: 4, c: 27591}, 27596, 27598, {f: 2, c: 27600}, 27608, 27610,
+    {f: 5, c: 27612}, {f: 8, c: 27618}, {f: 3, c: 27628}, {f: 3, c: 27632},
+    27636, {f: 3, c: 27638}, {f: 3, c: 27642}, 27646, {f: 5, c: 27648},
+    {f: 3, c: 27657}, 27662, 27666, 27671, {f: 3, c: 27676}, 27680, 27685,
+    27693, 27697, 27699, {f: 2, c: 27702}, {f: 4, c: 27705}, {f: 2, c: 27710},
+    {f: 3, c: 27715}, 27720, {f: 5, c: 27723}, {f: 3, c: 27729}, 27734,
+    {f: 3, c: 27736}, {f: 2, c: 27746}, {f: 3, c: 27749}, {f: 5, c: 27755},
+    27761, 27763, 27765, {f: 2, c: 27767}, {f: 3, c: 27770}, {f: 2, c: 27775},
+    27780, 27783, {f: 2, c: 27786}, {f: 2, c: 27789}, {f: 2, c: 27793},
+    {f: 4, c: 27797}, 27802, {f: 3, c: 27804}, 27808, 27810, 27816, 27820,
+    {f: 2, c: 27823}, {f: 4, c: 27828}, 27834, {f: 4, c: 27840},
+    {f: 3, c: 27846}, 27851, {f: 3, c: 27853}, {f: 2, c: 27857},
+    {f: 3, c: 27864}, {f: 2, c: 27868}, 27871, 27876, {f: 2, c: 27878}, 27881,
+    {f: 2, c: 27884}, 27890, 27892, 27897, {f: 2, c: 27903}, {f: 2, c: 27906},
+    {f: 2, c: 27909}, {f: 3, c: 27912}, 27917, {f: 3, c: 27919},
+    {f: 4, c: 27923}, 27928, {f: 2, c: 27932}, {f: 6, c: 27935}, 27942,
+    {f: 2, c: 27944}, {f: 2, c: 27948}, {f: 2, c: 27951}, 27956,
+    {f: 3, c: 27958}, 27962, {f: 2, c: 27967}, 27970, 27972, 27977, 27980,
+    27984, {f: 4, c: 27989}, 27995, 27997, 27999, {f: 2, c: 28001},
+    {f: 2, c: 28004}, {f: 2, c: 28007}, {f: 3, c: 28011}, {f: 4, c: 28016},
+    {f: 2, c: 28021}, {f: 2, c: 28026}, {f: 5, c: 28029}, {f: 2, c: 28035},
+    28038, {f: 2, c: 28042}, 28045, {f: 2, c: 28047}, 28050, {f: 5, c: 28054},
+    28060, 28066, 28069, {f: 2, c: 28076}, {f: 2, c: 28080}, {f: 2, c: 28083},
+    {f: 2, c: 28086}, {f: 6, c: 28089}, {f: 3, c: 28097}, {f: 3, c: 28104},
+    {f: 4, c: 28109}, {f: 4, c: 28114}, 28119, {f: 3, c: 28122}, 28127,
+    {f: 2, c: 28130}, 28133, {f: 3, c: 28135}, 28141, {f: 2, c: 28143}, 28146,
+    28148, 28152, {f: 8, c: 28157}, {f: 4, c: 28166}, 28171, 28175,
+    {f: 2, c: 28178}, 28181, {f: 2, c: 28184}, {f: 2, c: 28187},
+    {f: 2, c: 28190}, 28194, {f: 2, c: 28199}, 28202, 28206, {f: 2, c: 28208},
+    28211, {f: 3, c: 28213}, 28217, {f: 3, c: 28219}, {f: 4, c: 28223},
+    {f: 8, c: 28229}, {f: 4, c: 28239}, 28245, 28247, {f: 2, c: 28249},
+    {f: 2, c: 28252}, {f: 11, c: 28256}, {f: 2, c: 28268}, {f: 14, c: 28272},
+    {f: 3, c: 28288}, 28292, {f: 2, c: 28295}, {f: 5, c: 28298},
+    {f: 5, c: 28305}, 28311, {f: 3, c: 28313}, 28318, {f: 2, c: 28320},
+    {f: 2, c: 28323}, 28326, {f: 2, c: 28328}, {f: 4, c: 28331}, 28336, 28339,
+    28341, {f: 2, c: 28344}, 28348, {f: 3, c: 28350}, 28355, 28358,
+    {f: 3, c: 28360}, 28365, 28368, 28370, 28374, {f: 2, c: 28376},
+    {f: 3, c: 28379}, 28387, 28391, {f: 2, c: 28394}, {f: 2, c: 28397},
+    {f: 2, c: 28400}, 28403, {f: 2, c: 28405}, {f: 5, c: 28410}, 28416,
+    {f: 3, c: 28419}, {f: 2, c: 28423}, {f: 5, c: 28426}, {f: 3, c: 28432},
+    {f: 4, c: 28438}, {f: 5, c: 28443}, 28449, {f: 4, c: 28453}, 28462, 28464,
+    {f: 2, c: 28468}, 28471, {f: 5, c: 28473}, 28480, {f: 4, c: 28482},
+    {f: 3, c: 28488}, 28492, {f: 3, c: 28494}, {f: 2, c: 28498},
+    {f: 3, c: 28501}, {f: 2, c: 28506}, 28509, {f: 3, c: 28511}, 28515, 28517,
+    {f: 6, c: 28519}, 28529, 28531, {f: 2, c: 28533}, 28537, 28539,
+    {f: 2, c: 28541}, {f: 3, c: 28545}, 28549, {f: 2, c: 28554},
+    {f: 8, c: 28559}, {f: 4, c: 28568}, {f: 3, c: 28573}, {f: 2, c: 28578},
+    {f: 2, c: 28581}, 28584, {f: 4, c: 28586}, {f: 2, c: 28591}, 28594,
+    {f: 2, c: 28596}, {f: 2, c: 28599}, {f: 6, c: 28602}, {f: 5, c: 28612},
+    {f: 7, c: 28618}, {f: 2, c: 28627}, {f: 2, c: 28630}, {f: 2, c: 28633},
+    {f: 2, c: 28636}, {f: 2, c: 28642}, {f: 6, c: 28645}, {f: 2, c: 28652},
+    {f: 8, c: 28658}, 28667, 28669, {f: 6, c: 28671}, {f: 2, c: 28679}, 28682,
+    {f: 3, c: 28684}, 28688, {f: 3, c: 28690}, {f: 2, c: 28694}, 28697, 28700,
+    28702, {f: 2, c: 28705}, {f: 3, c: 28708}, {f: 7, c: 28713}, 28721,
+    {f: 2, c: 28723}, {f: 3, c: 28726}, {f: 4, c: 28730}, {f: 4, c: 28735},
+    {f: 7, c: 28741}, {f: 2, c: 28749}, 28752, {f: 3, c: 28754},
+    {f: 2, c: 28758}, {f: 4, c: 28761}, {f: 4, c: 28767}, {f: 2, c: 28773},
+    {f: 3, c: 28776}, 28782, {f: 4, c: 28785}, 28791, {f: 3, c: 28793}, 28797,
+    {f: 4, c: 28801}, {f: 3, c: 28806}, {f: 3, c: 28811}, {f: 3, c: 28815},
+    28819, {f: 2, c: 28823}, {f: 2, c: 28826}, {f: 13, c: 28830}, 28848, 28850,
+    {f: 3, c: 28852}, 28858, {f: 2, c: 28862}, {f: 4, c: 28868}, 28873,
+    {f: 4, c: 28875}, {f: 8, c: 28880}, 28890, {f: 3, c: 28892},
+    {f: 4, c: 28896}, 28901, 28906, 28910, {f: 4, c: 28912}, {f: 2, c: 28917},
+    28920, {f: 3, c: 28922}, {f: 11, c: 28926}, {f: 5, c: 28939},
+    {f: 2, c: 28945}, 28948, 28951, {f: 6, c: 28955}, {f: 4, c: 28962},
+    {f: 8, c: 28967}, {f: 4, c: 28978}, {f: 14, c: 28983}, {f: 3, c: 28998},
+    29003, 29005, {f: 3, c: 29007}, {f: 9, c: 29011}, 29021, {f: 3, c: 29023},
+    29027, 29029, {f: 2, c: 29034}, 29037, {f: 3, c: 29039}, {f: 4, c: 29044},
+    29049, {f: 2, c: 29051}, {f: 6, c: 29054}, {f: 5, c: 29061},
+    {f: 4, c: 29067}, {f: 2, c: 29072}, 29075, {f: 2, c: 29077},
+    {f: 5, c: 29082}, {f: 7, c: 29089}, {f: 3, c: 29097}, {f: 4, c: 29101},
+    29106, 29108, {f: 3, c: 29110}, {f: 4, c: 29114}, {f: 2, c: 29119}, 29122,
+    {f: 4, c: 29124}, {f: 5, c: 29129}, {f: 3, c: 29135}, 29139,
+    {f: 3, c: 29142}, {f: 2, c: 29146}, {f: 2, c: 29149}, {f: 4, c: 29153},
+    {f: 5, c: 29160}, {f: 5, c: 29167}, {f: 4, c: 29173}, {f: 2, c: 29178},
+    29181, {f: 7, c: 29183}, {f: 6, c: 29191}, {f: 2, c: 29198},
+    {f: 10, c: 29201}, 29212, {f: 10, c: 29214}, 29225, 29227,
+    {f: 3, c: 29229}, {f: 2, c: 29235}, 29244, {f: 7, c: 29248},
+    {f: 3, c: 29257}, {f: 4, c: 29262}, {f: 3, c: 29267}, 29271, 29274, 29276,
+    29278, 29280, {f: 3, c: 29283}, 29288, {f: 4, c: 29290}, {f: 2, c: 29296},
+    {f: 2, c: 29299}, {f: 3, c: 29302}, {f: 2, c: 29307}, {f: 2, c: 29314},
+    {f: 5, c: 29317}, 29324, 29326, {f: 2, c: 29328}, {f: 3, c: 29331},
+    {f: 8, c: 29335}, {f: 2, c: 29344}, {f: 4, c: 29347}, {f: 4, c: 29352},
+    29358, {f: 3, c: 29361}, 29365, {f: 6, c: 29370}, {f: 3, c: 29381},
+    {f: 4, c: 29385}, 29391, 29393, {f: 4, c: 29395}, 29400, {f: 4, c: 29402},
+    29407, {f: 6, c: 29410}, {f: 2, c: 29418}, {f: 2, c: 29429},
+    {f: 3, c: 29438}, 29442, {f: 6, c: 29444}, {f: 3, c: 29451},
+    {f: 4, c: 29455}, 29460, {f: 3, c: 29464}, {f: 2, c: 29471},
+    {f: 2, c: 29475}, {f: 3, c: 29478}, 29485, {f: 2, c: 29487},
+    {f: 2, c: 29490}, 29493, 29498, {f: 2, c: 29500}, 29504, {f: 2, c: 29506},
+    {f: 7, c: 29510}, {f: 2, c: 29518}, 29521, {f: 4, c: 29523},
+    {f: 8, c: 29528}, {f: 7, c: 29537}, 29545, 29550, 29553, {f: 2, c: 29555},
+    29558, 29561, 29565, 29567, {f: 3, c: 29569}, {f: 2, c: 29573}, 29576,
+    29578, {f: 2, c: 29580}, {f: 2, c: 29583}, {f: 4, c: 29586},
+    {f: 4, c: 29591}, {f: 3, c: 29596}, {f: 2, c: 29600}, {f: 6, c: 29603},
+    29610, {f: 2, c: 29612}, 29617, {f: 3, c: 29620}, {f: 2, c: 29624},
+    {f: 4, c: 29628}, 29633, {f: 5, c: 29635}, {f: 2, c: 29643}, 29646,
+    {f: 7, c: 29650}, {f: 4, c: 29658}, 29663, {f: 4, c: 29665}, 29670, 29672,
+    {f: 3, c: 29674}, {f: 4, c: 29678}, {f: 11, c: 29683}, {f: 4, c: 29695},
+    29700, {f: 2, c: 29703}, {f: 4, c: 29707}, {f: 9, c: 29713},
+    {f: 6, c: 29724}, {f: 2, c: 29731}, 29735, 29737, 29739, 29741, 29743,
+    {f: 2, c: 29745}, {f: 5, c: 29751}, {f: 2, c: 29757}, 29760,
+    {f: 9, c: 29762}, {f: 9, c: 29772}, 29782, 29784, 29789, {f: 3, c: 29792},
+    {f: 5, c: 29796}, {f: 2, c: 29803}, {f: 2, c: 29806}, {f: 5, c: 29809},
+    {f: 6, c: 29816}, 29823, 29826, {f: 3, c: 29828}, 29832, 29834,
+    {f: 2, c: 29836}, 29839, {f: 11, c: 29841}, 29853, {f: 4, c: 29855},
+    {f: 2, c: 29860}, {f: 6, c: 29866}, {f: 9, c: 29873}, {f: 2, c: 29883},
+    {f: 12, c: 29886}, {f: 4, c: 29899}, {f: 2, c: 29904}, 29907,
+    {f: 5, c: 29909}, 29915, 29917, 29919, 29921, 29925, {f: 7, c: 29927},
+    {f: 4, c: 29936}, 29941, {f: 7, c: 29944}, {f: 4, c: 29952},
+    {f: 7, c: 29957}, 29966, 29968, 29970, {f: 4, c: 29972}, 29979,
+    {f: 2, c: 29981}, {f: 3, c: 29984}, 29988, {f: 2, c: 29990}, 29994, 29998,
+    30004, 30006, 30009, {f: 2, c: 30012}, 30015, {f: 4, c: 30017},
+    {f: 2, c: 30022}, {f: 2, c: 30025}, 30029, {f: 4, c: 30032},
+    {f: 4, c: 30037}, {f: 4, c: 30046}, {f: 2, c: 30051}, {f: 3, c: 30055},
+    {f: 6, c: 30060}, 30067, 30069, 30071, {f: 5, c: 30074}, {f: 3, c: 30080},
+    {f: 2, c: 30084}, {f: 3, c: 30088}, {f: 3, c: 30092}, 30096, 30099, 30101,
+    30104, {f: 2, c: 30107}, 30110, 30114, {f: 5, c: 30118}, 30125,
+    {f: 2, c: 30134}, {f: 2, c: 30138}, {f: 3, c: 30143}, 30150,
+    {f: 2, c: 30155}, {f: 4, c: 30158}, 30163, 30167, 30170, {f: 2, c: 30172},
+    {f: 3, c: 30175}, 30181, 30185, {f: 4, c: 30188}, {f: 2, c: 30194},
+    {f: 4, c: 30197}, {f: 2, c: 30202}, {f: 2, c: 30205}, 30212,
+    {f: 4, c: 30214}, {f: 2, c: 30222}, {f: 4, c: 30225}, 30230, 30234,
+    {f: 2, c: 30236}, 30243, 30248, 30252, {f: 2, c: 30254}, {f: 2, c: 30257},
+    {f: 2, c: 30262}, {f: 2, c: 30265}, 30269, 30273, {f: 2, c: 30276}, 30280,
+    {f: 2, c: 30282}, {f: 6, c: 30286}, 30293, 30295, {f: 3, c: 30297}, 30301,
+    {f: 2, c: 30304}, 30310, 30312, 30314, {f: 3, c: 30323}, [12136, 30326],
+    30327, {f: 2, c: 30329}, {f: 3, c: 30335}, 30339, 30341, {f: 2, c: 30345},
+    {f: 2, c: 30348}, {f: 2, c: 30351}, 30354, {f: 2, c: 30356},
+    {f: 2, c: 30359}, {f: 9, c: 30363}, {f: 9, c: 30373}, {f: 2, c: 30383},
+    30387, {f: 3, c: 30389}, 30393, {f: 4, c: 30395}, {f: 2, c: 30400},
+    {f: 2, c: 30403}, 30407, 30409, {f: 2, c: 30411}, 30419, 30421,
+    {f: 2, c: 30425}, {f: 2, c: 30428}, 30432, 30434, 30438, {f: 6, c: 30440},
+    30448, 30451, {f: 3, c: 30453}, {f: 2, c: 30458}, 30461, {f: 2, c: 30463},
+    {f: 2, c: 30466}, {f: 2, c: 30469}, 30474, 30476, {f: 11, c: 30478},
+    {f: 4, c: 30491}, 30497, {f: 3, c: 30499}, 30503, {f: 3, c: 30506}, 30510,
+    {f: 5, c: 30512}, 30521, 30523, {f: 3, c: 30525}, 30530, {f: 3, c: 30532},
+    {f: 7, c: 30536}, {f: 8, c: 30546}, {f: 2, c: 30556}, {f: 2, c: 30559},
+    30564, 30567, {f: 2, c: 30569}, {f: 12, c: 30573}, {f: 3, c: 30586},
+    {f: 3, c: 30593}, {f: 6, c: 30598}, {f: 2, c: 30607}, {f: 5, c: 30611},
+    {f: 5, c: 30617}, 30625, {f: 2, c: 30627}, 30630, 30632, 30635,
+    {f: 2, c: 30638}, {f: 2, c: 30641}, 30644, {f: 5, c: 30646}, 30654,
+    {f: 7, c: 30656}, {f: 5, c: 30664}, {f: 9, c: 30670}, {f: 2, c: 30680},
+    {f: 5, c: 30685}, 30692, 30694, 30696, 30698, {f: 3, c: 30704},
+    {f: 2, c: 30708}, 30711, {f: 4, c: 30713}, {f: 6, c: 30723},
+    {f: 2, c: 30730}, {f: 3, c: 30734}, 30739, 30741, 30745, 30747, 30750,
+    {f: 3, c: 30752}, 30756, 30760, {f: 2, c: 30762}, {f: 2, c: 30766},
+    {f: 3, c: 30769}, {f: 2, c: 30773}, 30781, 30783, {f: 2, c: 30785}, 30788,
+    30790, {f: 4, c: 30792}, 30797, 30799, 30801, {f: 2, c: 30803},
+    {f: 5, c: 30808}, {f: 6, c: 30814}, {f: 3, c: 30821}, 30825,
+    {f: 7, c: 30832}, {f: 4, c: 30840}, {f: 10, c: 30845}, 30856,
+    {f: 2, c: 30858}, {f: 2, c: 30863}, 30866, {f: 3, c: 30868}, 30873,
+    {f: 2, c: 30877}, 30880, 30882, 30884, 30886, 30888, {f: 3, c: 30890},
+    {f: 2, c: 30894}, {f: 3, c: 30901}, 30907, 30909, {f: 2, c: 30911},
+    {f: 3, c: 30914}, {f: 3, c: 30918}, {f: 4, c: 30924}, {f: 3, c: 30929},
+    {f: 3, c: 30934}, {f: 8, c: 30939}, {f: 3, c: 30948}, {f: 3, c: 30953},
+    {f: 2, c: 30957}, {f: 2, c: 30960}, 30963, {f: 2, c: 30965},
+    {f: 2, c: 30968}, {f: 2, c: 30971}, {f: 3, c: 30974}, {f: 3, c: 30978},
+    {f: 8, c: 30982}, {f: 4, c: 30991}, {f: 5, c: 30996}, {f: 4, c: 31002},
+    {f: 5, c: 31007}, 31013, {f: 3, c: 31015}, {f: 4, c: 31021},
+    {f: 2, c: 31026}, {f: 5, c: 31029}, 31037, 31039, {f: 4, c: 31042}, 31047,
+    {f: 9, c: 31050}, {f: 2, c: 31060}, {f: 2, c: 31064}, 31073,
+    {f: 2, c: 31075}, 31078, {f: 4, c: 31081}, 31086, {f: 7, c: 31088}, 31097,
+    {f: 5, c: 31099}, {f: 2, c: 31106}, {f: 4, c: 31110}, {f: 2, c: 31115},
+    {f: 10, c: 31120}, {f: 11, c: 31131}, {f: 2, c: 31144}, {f: 3, c: 31147},
+    31151, 31154, {f: 4, c: 31156}, [12145, 31160], 31164, 31167, 31170,
+    {f: 2, c: 31172}, {f: 2, c: 31175}, 31178, 31180, {f: 3, c: 31182},
+    {f: 2, c: 31187}, {f: 2, c: 31190}, {f: 6, c: 31193}, {f: 3, c: 31200},
+    31205, 31208, 31210, 31212, 31214, {f: 7, c: 31217}, {f: 2, c: 31225},
+    31228, {f: 2, c: 31230}, 31233, {f: 2, c: 31236}, {f: 4, c: 31239}, 31244,
+    {f: 5, c: 31247}, {f: 2, c: 31253}, {f: 2, c: 31256}, {f: 3, c: 31259},
+    31263, {f: 2, c: 31265}, {f: 10, c: 31268}, {f: 2, c: 31279}, 31282,
+    {f: 3, c: 31284}, 31288, 31290, 31294, {f: 5, c: 31297}, {f: 5, c: 31303},
+    {f: 2, c: 31311}, {f: 5, c: 31314}, {f: 9, c: 31320}, {f: 6, c: 31331},
+    31338, {f: 4, c: 31340}, {f: 3, c: 31345}, 31349, {f: 4, c: 31355}, 31362,
+    31365, 31367, {f: 4, c: 31369}, {f: 3, c: 31374}, {f: 2, c: 31379},
+    {f: 3, c: 31385}, 31390, {f: 4, c: 31393}, 31399, 31403, {f: 4, c: 31407},
+    {f: 2, c: 31412}, {f: 3, c: 31415}, {f: 4, c: 31419}, {f: 4, c: 31424},
+    31430, 31433, {f: 10, c: 31436}, {f: 2, c: 31447}, {f: 4, c: 31450},
+    {f: 2, c: 31457}, 31460, {f: 3, c: 31463}, {f: 2, c: 31467}, 31470,
+    {f: 6, c: 31472}, {f: 2, c: 31479}, {f: 2, c: 31483}, 31486,
+    {f: 3, c: 31488}, 31493, 31495, 31497, {f: 3, c: 31500}, 31504,
+    {f: 2, c: 31506}, {f: 3, c: 31510}, 31514, {f: 2, c: 31516}, 31519,
+    {f: 3, c: 31521}, 31527, 31529, 31533, {f: 2, c: 31535}, 31538,
+    {f: 4, c: 31540}, 31545, 31547, 31549, {f: 6, c: 31551}, 31560, 31562,
+    {f: 2, c: 31565}, 31571, 31573, 31575, 31577, 31580, {f: 2, c: 31582},
+    31585, {f: 4, c: 31587}, {f: 6, c: 31592}, {f: 2, c: 31599},
+    {f: 2, c: 31603}, 31606, 31608, 31610, {f: 2, c: 31612}, 31615,
+    {f: 4, c: 31617}, {f: 5, c: 31622}, 31628, {f: 2, c: 31630},
+    {f: 3, c: 31633}, 31638, {f: 4, c: 31640}, {f: 3, c: 31646},
+    {f: 3, c: 31651}, {f: 3, c: 31662}, {f: 2, c: 31666}, {f: 3, c: 31669},
+    {f: 7, c: 31673}, {f: 2, c: 31682}, 31685, 31688, 31690, {f: 4, c: 31693},
+    31698, {f: 5, c: 31700}, {f: 2, c: 31707}, {f: 3, c: 31710},
+    {f: 2, c: 31714}, {f: 2, c: 31719}, {f: 3, c: 31723}, {f: 2, c: 31727},
+    31730, {f: 3, c: 31732}, {f: 4, c: 31736}, 31741, 31743, {f: 6, c: 31745},
+    {f: 3, c: 31752}, 31758, {f: 6, c: 31760}, {f: 7, c: 31767}, 31776, 31778,
+    {f: 2, c: 31780}, {f: 2, c: 31784}, {f: 12, c: 31788}, {f: 4, c: 31801},
+    31810, {f: 8, c: 31812}, {f: 14, c: 31822}, {f: 2, c: 31837},
+    {f: 3, c: 31841}, {f: 4, c: 31845}, 31851, 31853, {f: 3, c: 31855},
+    {f: 6, c: 31861}, {f: 11, c: 31870}, {f: 7, c: 31882}, {f: 2, c: 31891},
+    31894, {f: 3, c: 31897}, {f: 2, c: 31904}, 31907, {f: 4, c: 31910},
+    {f: 3, c: 31915}, {f: 2, c: 31919}, {f: 5, c: 31924}, {f: 2, c: 31930},
+    {f: 2, c: 31935}, {f: 3, c: 31938}, 31942, 31945, 31947, {f: 7, c: 31950},
+    31960, {f: 2, c: 31962}, {f: 6, c: 31969}, {f: 6, c: 31977}, 31985, 31987,
+    31989, 31991, 31994, {f: 2, c: 31996}, 31999, 32001, 32003, 32012,
+    {f: 2, c: 32014}, {f: 2, c: 32017}, 32022, 32024, {f: 3, c: 32029},
+    {f: 4, c: 32035}, {f: 3, c: 32040}, {f: 3, c: 32044}, {f: 5, c: 32052},
+    32059, {f: 2, c: 32061}, 32065, 32067, 32069, {f: 7, c: 32071}, 32079,
+    {f: 12, c: 32081}, {f: 2, c: 32095}, {f: 3, c: 32099}, 32103,
+    {f: 5, c: 32105}, {f: 2, c: 32111}, {f: 2, c: 32116}, 32120,
+    {f: 7, c: 32122}, 32130, {f: 2, c: 32132}, 32135, {f: 5, c: 32138},
+    {f: 3, c: 32144}, {f: 8, c: 32148}, 32157, {f: 3, c: 32159},
+    {f: 2, c: 32164}, {f: 4, c: 32167}, 32175, {f: 3, c: 32181}, 32188,
+    {f: 4, c: 32192}, {f: 2, c: 32197}, {f: 2, c: 32200}, {f: 5, c: 32204},
+    32211, {f: 2, c: 32213}, {f: 3, c: 32218}, 32223, 32226, {f: 2, c: 32228},
+    32231, {f: 2, c: 32234}, {f: 2, c: 32237}, 32240, 32243, 32245,
+    {f: 2, c: 32247}, 32250, {f: 12, c: 32252}, {f: 4, c: 32268},
+    {f: 9, c: 32274}, 32284, {f: 3, c: 32288}, {f: 3, c: 32292},
+    {f: 3, c: 32296}, 32300, {f: 2, c: 32303}, 32307, 32312, 32314, 32316,
+    {f: 2, c: 32319}, {f: 3, c: 32322}, {f: 10, c: 32328}, 32339,
+    {f: 4, c: 32342}, {f: 3, c: 32347}, {f: 3, c: 32351}, {f: 6, c: 32355},
+    32364, {f: 2, c: 32369}, {f: 5, c: 32372}, {f: 2, c: 32378},
+    {f: 3, c: 32383}, {f: 5, c: 32387}, 32393, 32395, 32398, {f: 3, c: 32400},
+    32405, 32407, {f: 2, c: 32409}, {f: 2, c: 32413}, 32430, 32436,
+    {f: 2, c: 32443}, 32470, 32484, 32492, 32505, 32522, 32528, 32542, 32567,
+    32569, {f: 7, c: 32571}, 32579, {f: 6, c: 32582}, 32589, 32591,
+    {f: 2, c: 32594}, 32598, 32601, {f: 4, c: 32603}, 32608, {f: 5, c: 32611},
+    {f: 3, c: 32619}, 32623, 32627, {f: 2, c: 32629}, 32632, {f: 4, c: 32634},
+    {f: 2, c: 32639}, {f: 3, c: 32642}, 32647, 32649, 32651, 32653,
+    {f: 5, c: 32655}, {f: 5, c: 32661}, {f: 2, c: 32667}, 32672,
+    {f: 2, c: 32674}, 32678, 32680, {f: 5, c: 32682}, 32689, {f: 5, c: 32691},
+    {f: 2, c: 32698}, 32702, 32704, {f: 3, c: 32706}, {f: 4, c: 32710}, 32715,
+    32717, {f: 3, c: 32719}, 32723, {f: 2, c: 32726}, {f: 6, c: 32729},
+    {f: 3, c: 32738}, {f: 2, c: 32743}, {f: 4, c: 32746}, 32751, 32754,
+    {f: 5, c: 32756}, 32762, {f: 3, c: 32765}, 32770, {f: 4, c: 32775},
+    {f: 2, c: 32782}, 32785, 32787, {f: 2, c: 32794}, {f: 3, c: 32797}, 32801,
+    {f: 2, c: 32803}, 32811, 32813, {f: 2, c: 32815}, 32818, 32820,
+    {f: 2, c: 32825}, 32828, 32830, {f: 2, c: 32832}, {f: 2, c: 32836},
+    {f: 3, c: 32839}, {f: 4, c: 32846}, 32851, 32853, 32855, 32857,
+    {f: 3, c: 32859}, {f: 10, c: 32863}, {f: 4, c: 32875}, 32884, 32888,
+    {f: 3, c: 32890}, {f: 2, c: 32897}, 32904, 32906, {f: 6, c: 32909},
+    {f: 2, c: 32916}, 32919, 32921, 32926, 32931, {f: 3, c: 32934}, 32940,
+    32944, 32947, {f: 2, c: 32949}, {f: 2, c: 32952}, 32955, 32965,
+    {f: 5, c: 32967}, {f: 7, c: 32975}, 32984, {f: 2, c: 32991},
+    {f: 2, c: 32994}, 32998, 33006, 33013, 33015, 33017, 33019,
+    {f: 4, c: 33022}, {f: 2, c: 33027}, {f: 2, c: 33031}, {f: 2, c: 33035},
+    33045, 33047, 33049, {f: 2, c: 33052}, {f: 13, c: 33055}, {f: 2, c: 33069},
+    33072, {f: 3, c: 33075}, 33079, {f: 4, c: 33082}, {f: 7, c: 33087}, 33095,
+    33097, 33101, 33103, 33106, {f: 2, c: 33111}, {f: 5, c: 33115},
+    {f: 3, c: 33122}, 33128, 33130, 33132, 33135, {f: 2, c: 33138},
+    {f: 3, c: 33141}, 33153, {f: 5, c: 33155}, 33161, {f: 4, c: 33163}, 33168,
+    {f: 6, c: 33170}, 33177, {f: 2, c: 33182}, {f: 2, c: 33185},
+    {f: 2, c: 33188}, 33191, {f: 8, c: 33195}, {f: 6, c: 33204}, 33212,
+    {f: 2, c: 33220}, {f: 2, c: 33223}, 33227, 33230, {f: 8, c: 33232}, 33241,
+    {f: 4, c: 33243}, {f: 2, c: 33249}, {f: 3, c: 33252}, 33257, 33259,
+    {f: 5, c: 33262}, {f: 5, c: 33269}, 33277, 33279, 33283, 33291,
+    {f: 2, c: 33294}, 33297, 33299, {f: 6, c: 33301}, 33309, 33312,
+    {f: 4, c: 33316}, 33321, 33326, 33330, 33338, {f: 2, c: 33340},
+    {f: 5, c: 33343}, {f: 2, c: 33349}, 33352, 33354, {f: 3, c: 33356},
+    {f: 8, c: 33360}, {f: 4, c: 33371}, {f: 4, c: 33376}, 33381, 33383,
+    {f: 2, c: 33385}, {f: 2, c: 33388}, {f: 2, c: 33397}, [12171, 33400],
+    {f: 2, c: 33403}, {f: 2, c: 33408}, 33411, {f: 3, c: 33413}, 33417, 33420,
+    33424, {f: 4, c: 33427}, {f: 2, c: 33434}, 33438, 33440, {f: 2, c: 33442},
+    33447, 33458, {f: 2, c: 33461}, 33466, 33468, {f: 2, c: 33471},
+    {f: 2, c: 33474}, {f: 2, c: 33477}, 33481, 33488, 33494, {f: 2, c: 33497},
+    33501, 33506, {f: 3, c: 33512}, {f: 3, c: 33516}, 33520, {f: 2, c: 33522},
+    {f: 2, c: 33525}, 33528, 33530, {f: 5, c: 33532}, {f: 2, c: 33546}, 33549,
+    33552, {f: 2, c: 33554}, 33558, {f: 2, c: 33560}, {f: 10, c: 33565},
+    {f: 2, c: 33577}, 33582, 33584, 33586, 33591, 33595, {f: 3, c: 33597},
+    {f: 2, c: 33601}, {f: 2, c: 33604}, 33608, {f: 5, c: 33610}, 33619,
+    {f: 5, c: 33621}, 33629, 33634, {f: 7, c: 33648}, {f: 2, c: 33657},
+    {f: 7, c: 33662}, {f: 2, c: 33671}, {f: 3, c: 33675}, {f: 3, c: 33679},
+    {f: 2, c: 33684}, 33687, {f: 2, c: 33689}, 33693, 33695, 33697,
+    {f: 4, c: 33699}, {f: 4, c: 33708}, 33717, 33723, {f: 2, c: 33726},
+    {f: 3, c: 33730}, 33734, {f: 2, c: 33736}, 33739, {f: 2, c: 33741},
+    {f: 4, c: 33744}, 33749, 33751, {f: 3, c: 33753}, 33758, {f: 3, c: 33762},
+    {f: 3, c: 33766}, {f: 4, c: 33771}, {f: 5, c: 33779}, {f: 3, c: 33786},
+    {f: 3, c: 33790}, 33794, 33797, {f: 2, c: 33800}, 33808, {f: 6, c: 33810},
+    {f: 3, c: 33817}, {f: 6, c: 33822}, {f: 3, c: 33833}, {f: 4, c: 33837},
+    {f: 3, c: 33842}, {f: 2, c: 33846}, {f: 3, c: 33849}, {f: 8, c: 33854},
+    {f: 2, c: 33863}, {f: 7, c: 33866}, {f: 4, c: 33875}, 33880,
+    {f: 4, c: 33885}, 33890, 33893, {f: 2, c: 33895}, 33898, 33902, 33904,
+    33906, 33908, 33913, {f: 7, c: 33915}, {f: 4, c: 33923}, 33930, 33933,
+    {f: 4, c: 33935}, {f: 2, c: 33941}, 33944, {f: 2, c: 33946},
+    {f: 4, c: 33949}, {f: 13, c: 33954}, {f: 2, c: 33968}, 33971,
+    {f: 3, c: 33973}, 33979, 33982, {f: 2, c: 33986}, {f: 4, c: 33989}, 33996,
+    {f: 2, c: 33998}, 34002, {f: 2, c: 34004}, {f: 6, c: 34007}, 34014,
+    {f: 2, c: 34017}, 34020, {f: 5, c: 34023}, 34029, {f: 11, c: 34033}, 34046,
+    {f: 12, c: 34048}, {f: 4, c: 34061}, 34066, {f: 2, c: 34069},
+    {f: 2, c: 34072}, {f: 3, c: 34075}, 34080, 34082, {f: 2, c: 34084},
+    {f: 4, c: 34087}, {f: 9, c: 34094}, {f: 3, c: 34110}, 34114,
+    {f: 2, c: 34116}, 34119, {f: 3, c: 34123}, {f: 3, c: 34127}, 34132, 34135,
+    {f: 4, c: 34138}, {f: 3, c: 34143}, 34147, {f: 3, c: 34149},
+    {f: 2, c: 34155}, {f: 4, c: 34158}, 34163, {f: 2, c: 34165}, 34168,
+    {f: 2, c: 34172}, {f: 5, c: 34175}, 34182, 34185, 34187, {f: 2, c: 34189},
+    34192, {f: 2, c: 34194}, {f: 6, c: 34197}, {f: 2, c: 34205},
+    {f: 4, c: 34208}, 34213, 34215, {f: 3, c: 34219}, {f: 6, c: 34225}, 34232,
+    {f: 6, c: 34235}, {f: 7, c: 34242}, {f: 3, c: 34250}, {f: 2, c: 34257},
+    34260, {f: 6, c: 34262}, {f: 6, c: 34270}, {f: 3, c: 34278},
+    {f: 9, c: 34283}, 34293, {f: 2, c: 34295}, {f: 3, c: 34300},
+    {f: 4, c: 34304}, {f: 3, c: 34312}, {f: 5, c: 34316}, {f: 4, c: 34322},
+    {f: 3, c: 34327}, {f: 3, c: 34331}, {f: 3, c: 34335}, {f: 4, c: 34339},
+    34344, {f: 3, c: 34346}, {f: 10, c: 34350}, 34361, 34363, {f: 2, c: 34365},
+    {f: 13, c: 34368}, {f: 2, c: 34386}, {f: 4, c: 34390}, 34395, 34397,
+    {f: 2, c: 34400}, {f: 4, c: 34403}, {f: 3, c: 34408}, 34413,
+    {f: 2, c: 34415}, {f: 7, c: 34418}, {f: 7, c: 34435}, {f: 5, c: 34446},
+    34452, {f: 6, c: 34454}, {f: 5, c: 34462}, {f: 2, c: 34469}, 34475,
+    {f: 2, c: 34477}, {f: 2, c: 34482}, {f: 3, c: 34487}, {f: 5, c: 34491},
+    {f: 3, c: 34497}, 34501, 34504, {f: 2, c: 34508}, {f: 2, c: 34514},
+    {f: 3, c: 34517}, 34522, {f: 2, c: 34524}, {f: 4, c: 34528},
+    {f: 4, c: 34533}, {f: 3, c: 34538}, 34543, {f: 3, c: 34549},
+    {f: 3, c: 34555}, 34559, 34561, {f: 2, c: 34564}, {f: 2, c: 34571},
+    {f: 4, c: 34574}, 34580, 34582, 34585, 34587, 34589, {f: 2, c: 34591},
+    34596, {f: 3, c: 34598}, {f: 4, c: 34602}, {f: 2, c: 34607},
+    {f: 2, c: 34610}, {f: 2, c: 34613}, {f: 3, c: 34616}, {f: 2, c: 34620},
+    {f: 7, c: 34624}, {f: 2, c: 34634}, 34637, {f: 4, c: 34639}, 34644, 34646,
+    34648, {f: 6, c: 34650}, {f: 2, c: 34657}, {f: 7, c: 34663}, 34671,
+    {f: 3, c: 34673}, 34677, 34679, {f: 2, c: 34681}, {f: 3, c: 34687},
+    {f: 2, c: 34694}, {f: 2, c: 34697}, 34700, {f: 5, c: 34702},
+    {f: 3, c: 34708}, {f: 6, c: 34712}, {f: 2, c: 34720}, {f: 5, c: 34723},
+    {f: 2, c: 34729}, 34734, {f: 3, c: 34736}, 34740, {f: 4, c: 34742}, 34748,
+    {f: 2, c: 34750}, {f: 3, c: 34753}, 34757, 34759, 34761, {f: 2, c: 34764},
+    {f: 2, c: 34767}, {f: 7, c: 34772}, {f: 4, c: 34780}, {f: 2, c: 34785},
+    34788, {f: 4, c: 34790}, 34795, 34797, {f: 2, c: 34800}, {f: 3, c: 34803},
+    {f: 2, c: 34807}, 34810, {f: 2, c: 34812}, {f: 4, c: 34815}, 34820,
+    {f: 3, c: 34823}, {f: 5, c: 34827}, 34834, 34836, {f: 4, c: 34839},
+    {f: 3, c: 34844}, 34848, {f: 13, c: 34852}, {f: 3, c: 34867},
+    {f: 2, c: 34871}, 34874, {f: 3, c: 34877}, {f: 3, c: 34881},
+    {f: 3, c: 34887}, 34891, {f: 5, c: 34894}, {f: 2, c: 34901}, 34904, 34906,
+    34908, {f: 3, c: 34910}, {f: 2, c: 34918}, 34922, 34925, 34927, 34929,
+    {f: 4, c: 34931}, 34936, {f: 3, c: 34938}, 34944, 34947, {f: 2, c: 34950},
+    {f: 2, c: 34953}, 34956, {f: 4, c: 34958}, {f: 3, c: 34963},
+    {f: 5, c: 34967}, {f: 5, c: 34973}, 34979, {f: 6, c: 34981}, 34988,
+    {f: 3, c: 34990}, {f: 5, c: 34994}, {f: 4, c: 35000}, {f: 4, c: 35005},
+    {f: 2, c: 35011}, {f: 2, c: 35015}, {f: 3, c: 35019}, {f: 2, c: 35024},
+    35027, {f: 2, c: 35030}, {f: 2, c: 35034}, 35038, {f: 2, c: 35040},
+    {f: 2, c: 35046}, {f: 7, c: 35049}, 35058, {f: 3, c: 35061},
+    {f: 2, c: 35066}, {f: 3, c: 35071}, {f: 4, c: 35075}, {f: 2, c: 35080},
+    {f: 5, c: 35083}, 35089, {f: 5, c: 35092}, {f: 5, c: 35100},
+    {f: 3, c: 35106}, {f: 4, c: 35110}, {f: 4, c: 35116}, 35121, 35125, 35127,
+    {f: 2, c: 35129}, {f: 5, c: 35132}, {f: 2, c: 35138}, {f: 2, c: 35141},
+    {f: 14, c: 35144}, {f: 6, c: 35159}, {f: 3, c: 35169}, 35173,
+    {f: 3, c: 35175}, 35179, {f: 2, c: 35181}, {f: 2, c: 35184},
+    {f: 8, c: 35187}, {f: 2, c: 35196}, [12177, 35198], 35200, 35202,
+    {f: 2, c: 35204}, {f: 4, c: 35207}, {f: 3, c: 35212}, {f: 3, c: 35216},
+    {f: 2, c: 35220}, 35223, {f: 8, c: 35225}, {f: 4, c: 35234},
+    {f: 3, c: 35239}, 35243, {f: 2, c: 35245}, {f: 2, c: 35248},
+    {f: 4, c: 35251}, {f: 2, c: 35256}, {f: 2, c: 35259}, 35262, 35267, 35277,
+    {f: 3, c: 35283}, {f: 3, c: 35287}, 35291, 35293, {f: 4, c: 35295}, 35300,
+    {f: 4, c: 35303}, {f: 3, c: 35308}, {f: 3, c: 35312}, 35317, 35319,
+    {f: 7, c: 35321}, {f: 3, c: 35332}, 35337, 35339, 35341, 35343,
+    {f: 2, c: 35345}, 35348, 35351, {f: 2, c: 35353}, 35356, 35358,
+    {f: 3, c: 35360}, 35364, {f: 4, c: 35366}, {f: 2, c: 35371},
+    {f: 3, c: 35374}, {f: 2, c: 35378}, 35381, {f: 3, c: 35383},
+    {f: 3, c: 35387}, {f: 2, c: 35391}, {f: 4, c: 35394}, 35399,
+    {f: 5, c: 35401}, 35407, 35409, 35411, {f: 2, c: 35414}, {f: 2, c: 35417},
+    {f: 2, c: 35420}, {f: 2, c: 35423}, {f: 2, c: 35428}, {f: 2, c: 35431},
+    35434, 35439, 35444, {f: 3, c: 35446}, {f: 2, c: 35450}, {f: 2, c: 35453},
+    {f: 4, c: 35456}, 35464, {f: 2, c: 35467}, {f: 3, c: 35470}, 35476,
+    {f: 2, c: 35478}, 35481, {f: 3, c: 35483}, 35487, 35490, 35495,
+    {f: 3, c: 35497}, {f: 3, c: 35501}, 35505, {f: 3, c: 35507},
+    {f: 2, c: 35511}, {f: 2, c: 35514}, {f: 2, c: 35517}, {f: 2, c: 35520},
+    35523, {f: 2, c: 35525}, 35528, 35530, 35532, 35534, 35536,
+    {f: 3, c: 35539}, {f: 3, c: 35544}, 35549, {f: 3, c: 35551}, 35555, 35557,
+    {f: 3, c: 35560}, 35564, {f: 2, c: 35567}, 35570, {f: 2, c: 35572}, 35577,
+    35579, 35581, 35583, 35587, 35590, {f: 2, c: 35592}, {f: 3, c: 35595},
+    35599, {f: 3, c: 35601}, 35605, 35608, 35612, {f: 3, c: 35614},
+    {f: 4, c: 35618}, 35623, {f: 2, c: 35625}, {f: 5, c: 35630},
+    {f: 5, c: 35636}, {f: 4, c: 35642}, {f: 10, c: 35647}, {f: 4, c: 35658},
+    {f: 6, c: 35664}, 35671, 35675, {f: 9, c: 35677}, {f: 4, c: 35687},
+    {f: 2, c: 35693}, {f: 3, c: 35697}, {f: 2, c: 35701}, {f: 5, c: 35704},
+    {f: 2, c: 35710}, {f: 9, c: 35713}, {f: 3, c: 35723}, {f: 3, c: 35727},
+    35732, {f: 5, c: 35735}, 35741, 35743, 35756, 35761, 35771, 35783, 35792,
+    35818, 35849, 35870, {f: 9, c: 35896}, {f: 4, c: 35906}, {f: 2, c: 35914},
+    {f: 3, c: 35917}, {f: 4, c: 35921}, {f: 4, c: 35926}, {f: 6, c: 35931},
+    {f: 7, c: 35939}, {f: 7, c: 35948}, {f: 4, c: 35956}, {f: 7, c: 35963},
+    {f: 2, c: 35971}, {f: 3, c: 35974}, 35979, {f: 7, c: 35981},
+    {f: 3, c: 35989}, {f: 4, c: 35993}, 35999, {f: 4, c: 36003},
+    {f: 2, c: 36013}, 36017, 36021, 36025, 36030, 36038, 36041,
+    {f: 6, c: 36043}, 36052, {f: 4, c: 36054}, 36059, 36061, 36063, 36069,
+    {f: 2, c: 36072}, {f: 6, c: 36078}, {f: 5, c: 36085}, {f: 5, c: 36095},
+    {f: 2, c: 36102}, 36105, 36108, 36110, {f: 5, c: 36113}, {f: 4, c: 36119},
+    36128, {f: 2, c: 36177}, 36183, 36191, 36197, {f: 3, c: 36200}, 36204,
+    {f: 2, c: 36206}, {f: 2, c: 36209}, {f: 9, c: 36216}, {f: 2, c: 36226},
+    {f: 4, c: 36230}, {f: 5, c: 36236}, {f: 2, c: 36242}, {f: 3, c: 36246},
+    {f: 5, c: 36250}, {f: 3, c: 36256}, {f: 4, c: 36260}, {f: 8, c: 36265},
+    {f: 2, c: 36278}, 36281, 36283, 36285, {f: 3, c: 36288}, 36293,
+    {f: 4, c: 36295}, 36301, 36304, {f: 4, c: 36306}, {f: 2, c: 36312}, 36316,
+    {f: 3, c: 36320}, {f: 3, c: 36325}, 36329, {f: 2, c: 36333},
+    {f: 3, c: 36336}, 36340, 36342, 36348, {f: 7, c: 36350}, {f: 3, c: 36358},
+    36363, {f: 2, c: 36365}, {f: 3, c: 36369}, {f: 8, c: 36373},
+    {f: 2, c: 36384}, {f: 5, c: 36388}, 36395, 36397, 36400, {f: 2, c: 36402},
+    {f: 3, c: 36406}, {f: 2, c: 36411}, {f: 2, c: 36414}, 36419,
+    {f: 2, c: 36421}, {f: 4, c: 36429}, {f: 2, c: 36435}, {f: 3, c: 36438},
+    {f: 9, c: 36442}, {f: 2, c: 36452}, {f: 2, c: 36455}, {f: 2, c: 36458},
+    36462, 36465, 36467, 36469, {f: 3, c: 36471}, 36475, {f: 2, c: 36477},
+    36480, {f: 3, c: 36482}, 36486, 36488, 36492, 36494, {f: 5, c: 36501},
+    36507, 36509, {f: 2, c: 36511}, {f: 3, c: 36514}, {f: 3, c: 36519},
+    {f: 2, c: 36525}, {f: 2, c: 36528}, {f: 7, c: 36531}, {f: 5, c: 36539},
+    {f: 9, c: 36545}, {f: 3, c: 36559}, 36563, {f: 6, c: 36565},
+    {f: 3, c: 36572}, {f: 4, c: 36576}, {f: 6, c: 36581}, {f: 6, c: 36588},
+    {f: 5, c: 36595}, 36605, {f: 4, c: 36607}, 36612, 36614, 36616,
+    {f: 7, c: 36619}, 36627, {f: 5, c: 36630}, {f: 5, c: 36640},
+    {f: 2, c: 36647}, {f: 4, c: 36651}, {f: 3, c: 36656}, {f: 4, c: 36660},
+    {f: 2, c: 36665}, {f: 2, c: 36668}, {f: 2, c: 36672}, 36675,
+    {f: 2, c: 36679}, {f: 3, c: 36682}, {f: 5, c: 36687}, {f: 10, c: 36693},
+    36704, 36707, 36709, 36714, 36736, 36748, 36754, 36765, {f: 3, c: 36768},
+    {f: 2, c: 36772}, 36775, 36778, 36780, {f: 2, c: 36787}, [12193, 36789],
+    {f: 2, c: 36791}, {f: 3, c: 36794}, {f: 2, c: 36799}, 36803, 36806,
+    {f: 5, c: 36809}, 36815, 36818, {f: 2, c: 36822}, 36826, {f: 2, c: 36832},
+    36835, 36839, 36844, 36847, {f: 2, c: 36849}, {f: 2, c: 36853},
+    {f: 3, c: 36858}, {f: 2, c: 36862}, {f: 2, c: 36871}, 36876, 36878, 36883,
+    36888, 36892, {f: 2, c: 36900}, {f: 6, c: 36903}, {f: 2, c: 36912},
+    {f: 2, c: 36915}, 36919, {f: 2, c: 36921}, 36925, {f: 2, c: 36927}, 36931,
+    {f: 2, c: 36933}, {f: 3, c: 36936}, 36940, 36950, {f: 2, c: 36953}, 36957,
+    36959, 36961, 36964, {f: 2, c: 36966}, {f: 3, c: 36970}, {f: 3, c: 36975},
+    36979, 36982, 36985, 36987, 36990, {f: 2, c: 36997}, 37001,
+    {f: 3, c: 37004}, 37010, 37012, 37014, 37016, 37018, 37020,
+    {f: 3, c: 37022}, {f: 2, c: 37028}, {f: 3, c: 37031}, 37035, 37037, 37042,
+    37047, {f: 2, c: 37052}, {f: 2, c: 37055}, {f: 2, c: 37058}, 37062,
+    {f: 2, c: 37064}, {f: 3, c: 37067}, 37074, {f: 3, c: 37076},
+    {f: 3, c: 37080}, 37086, 37088, {f: 3, c: 37091}, {f: 2, c: 37097}, 37100,
+    37102, {f: 4, c: 37104}, {f: 2, c: 37110}, {f: 4, c: 37113},
+    {f: 3, c: 37119}, 37123, 37125, {f: 2, c: 37127}, {f: 8, c: 37130}, 37139,
+    37141, {f: 2, c: 37143}, {f: 4, c: 37146}, {f: 3, c: 37151},
+    {f: 3, c: 37156}, {f: 5, c: 37160}, 37166, 37171, 37173, {f: 2, c: 37175},
+    {f: 8, c: 37179}, {f: 2, c: 37188}, 37191, 37201, {f: 4, c: 37203},
+    {f: 2, c: 37208}, {f: 2, c: 37211}, {f: 2, c: 37215}, {f: 3, c: 37222},
+    37227, 37229, 37235, {f: 3, c: 37242}, {f: 5, c: 37248}, 37254, 37256,
+    37258, {f: 2, c: 37262}, {f: 3, c: 37267}, {f: 3, c: 37271},
+    {f: 5, c: 37277}, {f: 6, c: 37284}, {f: 4, c: 37296}, {f: 4, c: 37302},
+    {f: 5, c: 37307}, 37314, 37316, [12196, 37318], 37320, 37328, 37334,
+    {f: 2, c: 37338}, {f: 5, c: 37342}, {f: 2, c: 37349}, 37352,
+    {f: 11, c: 37354}, 37366, 37368, {f: 5, c: 37371}, {f: 2, c: 37378},
+    {f: 3, c: 37381}, {f: 3, c: 37386}, 37391, {f: 2, c: 37394},
+    {f: 8, c: 37398}, {f: 4, c: 37407}, 37412, {f: 6, c: 37416}, 37423,
+    {f: 2, c: 37425}, {f: 2, c: 37429}, {f: 2, c: 37435}, {f: 4, c: 37441},
+    {f: 2, c: 37446}, {f: 3, c: 37450}, {f: 3, c: 37454}, {f: 3, c: 37458},
+    37462, {f: 2, c: 37464}, {f: 2, c: 37468}, {f: 3, c: 37471},
+    {f: 3, c: 37475}, {f: 5, c: 37479}, {f: 6, c: 37486}, {f: 3, c: 37493},
+    37497, {f: 3, c: 37500}, {f: 2, c: 37505}, 37508, {f: 8, c: 37510},
+    {f: 2, c: 37519}, 37522, {f: 2, c: 37524}, 37527, 37529, 37531,
+    {f: 3, c: 37533}, {f: 2, c: 37537}, 37540, 37543, 37549, {f: 2, c: 37551},
+    {f: 5, c: 37554}, 37560, 37562, {f: 4, c: 37565}, 37570, 37572, 37574,
+    {f: 3, c: 37577}, {f: 2, c: 37581}, {f: 2, c: 37584}, {f: 10, c: 37587},
+    37598, {f: 3, c: 37600}, 37607, 37609, {f: 2, c: 37611}, {f: 4, c: 37618},
+    37623, {f: 3, c: 37625}, {f: 4, c: 37629}, {f: 4, c: 37634},
+    {f: 7, c: 37641}, 37649, {f: 2, c: 37651}, {f: 2, c: 37654},
+    {f: 3, c: 37660}, 37665, {f: 3, c: 37667}, 37671, {f: 2, c: 37673},
+    {f: 2, c: 37676}, {f: 2, c: 37680}, {f: 2, c: 37684}, 37687,
+    {f: 5, c: 37689}, 37695, 37698, {f: 2, c: 37700}, {f: 3, c: 37704}, 37708,
+    {f: 6, c: 37710}, {f: 3, c: 37717}, {f: 2, c: 37721}, {f: 8, c: 37724},
+    {f: 3, c: 37734}, 37739, {f: 3, c: 37741}, {f: 4, c: 37745},
+    {f: 3, c: 37751}, {f: 3, c: 37755}, {f: 3, c: 37759}, 37763,
+    {f: 2, c: 37765}, {f: 2, c: 37768}, {f: 4, c: 37771}, {f: 6, c: 37776},
+    37783, {f: 9, c: 37785}, {f: 2, c: 37796}, 37800, 37803, 37805, 37807,
+    {f: 2, c: 37809}, 37812, {f: 2, c: 37814}, {f: 6, c: 37817},
+    {f: 3, c: 37824}, {f: 3, c: 37828}, 37833, 37835, {f: 3, c: 37838},
+    {f: 4, c: 37842}, {f: 3, c: 37849}, 37856, 37859, {f: 3, c: 37861},
+    {f: 12, c: 37865}, 37878, 37880, {f: 9, c: 37882}, {f: 7, c: 37892},
+    {f: 4, c: 37900}, 37905, {f: 3, c: 37909}, {f: 3, c: 37914},
+    {f: 2, c: 37918}, {f: 5, c: 37921}, {f: 5, c: 37929}, {f: 3, c: 37935},
+    37940, {f: 2, c: 37942}, 37945, {f: 3, c: 37947}, {f: 4, c: 37952},
+    {f: 5, c: 37957}, 37963, {f: 5, c: 37965}, 37971, {f: 11, c: 37973},
+    {f: 2, c: 37985}, 37988, {f: 5, c: 37990}, 37996, {f: 2, c: 37998}, 38001,
+    {f: 4, c: 38003}, 38008, {f: 2, c: 38010}, {f: 5, c: 38016}, 38033, 38038,
+    38040, 38087, 38095, {f: 2, c: 38099}, 38106, 38118, 38139, 38172, 38176,
+    38183, 38195, 38205, 38211, 38216, 38219, 38229, 38234, 38240, 38254,
+    {f: 2, c: 38260}, {f: 7, c: 38264}, 38273, {f: 2, c: 38276},
+    {f: 2, c: 38279}, 38282, 38285, 38288, 38290, {f: 3, c: 38293},
+    {f: 8, c: 38297}, 38306, {f: 2, c: 38310}, 38314, {f: 4, c: 38318},
+    {f: 3, c: 38323}, {f: 2, c: 38327}, 38330, {f: 3, c: 38336},
+    {f: 2, c: 38340}, 38343, 38345, {f: 3, c: 38349}, {f: 3, c: 38353},
+    {f: 5, c: 38359}, 38365, {f: 2, c: 38367}, {f: 2, c: 38371},
+    {f: 2, c: 38374}, 38380, 38399, 38407, 38419, 38424, 38427, 38430, 38432,
+    {f: 7, c: 38435}, {f: 3, c: 38443}, {f: 2, c: 38447}, {f: 4, c: 38455},
+    38462, 38465, 38467, 38474, {f: 2, c: 38478}, {f: 3, c: 38481},
+    {f: 2, c: 38486}, {f: 2, c: 38489}, 38492, 38494, 38496, {f: 2, c: 38501},
+    38507, {f: 3, c: 38509}, 38513, {f: 4, c: 38521}, {f: 7, c: 38526}, 38535,
+    38537, 38540, {f: 3, c: 38545}, 38550, 38554, {f: 10, c: 38557}, 38569,
+    {f: 5, c: 38571}, 38578, 38581, 38583, 38586, 38591, {f: 2, c: 38594},
+    38600, {f: 2, c: 38602}, {f: 2, c: 38608}, {f: 2, c: 38611},
+    {f: 2, c: 38615}, 38618, {f: 3, c: 38621}, 38625, {f: 4, c: 38628},
+    {f: 4, c: 38635}, {f: 2, c: 38640}, {f: 2, c: 38644}, 38648, 38650,
+    {f: 2, c: 38652}, 38655, {f: 2, c: 38658}, 38661, {f: 3, c: 38666},
+    {f: 3, c: 38672}, {f: 2, c: 38676}, {f: 5, c: 38679}, 38685,
+    {f: 8, c: 38687}, {f: 2, c: 38696}, {f: 2, c: 38699}, {f: 2, c: 38702},
+    38705, {f: 5, c: 38707}, {f: 3, c: 38714}, {f: 3, c: 38719}, 38723,
+    {f: 3, c: 38725}, {f: 8, c: 38729}, [12205, 38737], {f: 2, c: 38740},
+    {f: 2, c: 38743}, {f: 2, c: 38748}, 38751, {f: 2, c: 38755},
+    {f: 2, c: 38758}, {f: 9, c: 38762}, 38773, {f: 5, c: 38775},
+    {f: 8, c: 38781}, {f: 5, c: 38790}, 38796, 38798, 38800, 38803,
+    {f: 3, c: 38805}, {f: 7, c: 38809}, {f: 2, c: 38817}, {f: 2, c: 38820},
+    {f: 4, c: 38823}, 38828, 38830, {f: 2, c: 38832}, 38835, {f: 8, c: 38837},
+    {f: 5, c: 38846}, {f: 2, c: 38852}, {f: 2, c: 38855}, 38858,
+    {f: 6, c: 38861}, {f: 5, c: 38868}, {f: 2, c: 38874}, 38877,
+    {f: 7, c: 38879}, 38888, {f: 5, c: 38894}, 38900, {f: 8, c: 38903}, 38912,
+    38916, 38921, 38923, 38925, {f: 3, c: 38932}, {f: 3, c: 38937},
+    {f: 4, c: 38941}, {f: 2, c: 38946}, 38949, {f: 6, c: 38951},
+    {f: 2, c: 38958}, {f: 6, c: 38961}, {f: 2, c: 38969}, 38972,
+    {f: 8, c: 38974}, {f: 5, c: 38983}, {f: 4, c: 38991}, {f: 3, c: 38997},
+    39002, {f: 2, c: 39004}, {f: 3, c: 39007}, {f: 2, c: 39011}, 39014,
+    {f: 3, c: 39016}, {f: 2, c: 39021}, 39026, 39051, 39054, 39058, 39061,
+    39065, 39075, {f: 5, c: 39081}, 39088, 39090, {f: 2, c: 39092},
+    {f: 5, c: 39095}, {f: 7, c: 39101}, 39109, 39111, {f: 5, c: 39113},
+    {f: 2, c: 39119}, 39124, {f: 2, c: 39126}, {f: 2, c: 39132}, 39137,
+    {f: 4, c: 39139}, 39148, 39150, {f: 2, c: 39152}, 39155, {f: 7, c: 39157},
+    {f: 4, c: 39167}, 39172, {f: 3, c: 39174}, 39179, {f: 2, c: 39182},
+    {f: 4, c: 39188}, {f: 2, c: 39193}, {f: 2, c: 39196}, {f: 2, c: 39199},
+    {f: 6, c: 39202}, {f: 5, c: 39209}, {f: 4, c: 39215}, {f: 3, c: 39220},
+    {f: 4, c: 39224}, 39229, {f: 3, c: 39232}, 39236, {f: 2, c: 39238},
+    {f: 4, c: 39245}, 39251, 39254, {f: 4, c: 39256}, 39261, {f: 3, c: 39263},
+    39268, 39270, 39283, {f: 2, c: 39288}, 39291, 39294, {f: 2, c: 39298},
+    39305, 39308, 39310, {f: 11, c: 39322}, {f: 2, c: 39334}, {f: 3, c: 39337},
+    {f: 2, c: 39343}, 39346, {f: 12, c: 39349}, {f: 14, c: 39362}, 39379,
+    {f: 2, c: 39382}, 39386, 39388, 39390, 39392, {f: 10, c: 39395},
+    {f: 3, c: 39406}, {f: 13, c: 39410}, 39424, {f: 3, c: 39426},
+    {f: 7, c: 39430}, {f: 6, c: 39440}, {f: 2, c: 39447}, {f: 17, c: 39450},
+    39468, 39471, {f: 5, c: 39473}, {f: 5, c: 39481}, 39487, {f: 4, c: 39494},
+    {f: 2, c: 39499}, 39502, {f: 5, c: 39504}, 39510, {f: 2, c: 39512},
+    {f: 3, c: 39516}, {f: 2, c: 39520}, 39523, {f: 4, c: 39526}, 39531, 39538,
+    39555, 39561, {f: 2, c: 39565}, {f: 2, c: 39572}, 39577, 39590,
+    {f: 6, c: 39593}, {f: 4, c: 39602}, 39609, 39611, {f: 3, c: 39613},
+    {f: 2, c: 39619}, {f: 5, c: 39622}, {f: 2, c: 39629}, 39632, 39639,
+    {f: 6, c: 39641}, 39648, {f: 4, c: 39650}, {f: 4, c: 39655}, 39660,
+    {f: 9, c: 39664}, 39674, {f: 7, c: 39676}, {f: 2, c: 39684}, 39687,
+    {f: 4, c: 39689}, 39694, {f: 3, c: 39696}, {f: 6, c: 39700},
+    {f: 4, c: 39707}, {f: 2, c: 39712}, 39716, 39718, 39720, {f: 4, c: 39722},
+    39728, {f: 8, c: 39731}, {f: 4, c: 39741}, 39750, {f: 3, c: 39754}, 39760,
+    {f: 2, c: 39762}, {f: 3, c: 39765}, 39769, {f: 20, c: 39771},
+    {f: 4, c: 39792}, {f: 2, c: 39797}, {f: 9, c: 39800}, 39810,
+    {f: 10, c: 39812}, 39823, {f: 7, c: 39827}, {f: 2, c: 39835},
+    {f: 11, c: 39839}, 39852, {f: 17, c: 39855}, {f: 5, c: 39874}, 39880,
+    {f: 9, c: 39883}, 39893, {f: 4, c: 39895}, 39900, {f: 3, c: 39902}, 39907,
+    {f: 2, c: 39909}, 39913, {f: 4, c: 39916}, {f: 3, c: 39921},
+    {f: 8, c: 39925}, 39934, {f: 8, c: 39936}, {f: 3, c: 39946},
+    {f: 2, c: 39950}, 39953, {f: 12, c: 39956}, {f: 2, c: 39969}, 39972,
+    {f: 2, c: 39974}, {f: 3, c: 39978}, {f: 3, c: 39982}, 39988, 39990, 39992,
+    39994, {f: 2, c: 39996}, {f: 6, c: 39999}, {f: 2, c: 40006},
+    {f: 8, c: 40010}, 40019, 40021, {f: 4, c: 40025}, 40030, {f: 7, c: 40032},
+    {f: 5, c: 40040}, {f: 10, c: 40046}, 40057, 40059, {f: 2, c: 40061}, 40064,
+    {f: 2, c: 40067}, {f: 2, c: 40073}, 40076, 40079, 40083, {f: 4, c: 40086},
+    40093, 40106, 40108, 40111, 40121, {f: 5, c: 40126}, {f: 2, c: 40136},
+    {f: 2, c: 40145}, {f: 2, c: 40154}, {f: 2, c: 40160}, {f: 2, c: 40163},
+    {f: 3, c: 40166}, {f: 2, c: 40170}, {f: 6, c: 40173}, 40181,
+    {f: 15, c: 40183}, 40200, {f: 11, c: 40202}, {f: 5, c: 40214}, 40220,
+    40222, {f: 3, c: 40224}, {f: 2, c: 40228}, 40231, {f: 6, c: 40233},
+    {f: 10, c: 40241}, {f: 3, c: 40252}, {f: 2, c: 40256}, {f: 14, c: 40259},
+    {f: 8, c: 40276}, {f: 2, c: 40286}, {f: 8, c: 40290}, 40299,
+    {f: 2, c: 40301}, {f: 2, c: 40304}, {f: 20, c: 40307}, 40328,
+    {f: 9, c: 40330}, {f: 4, c: 40340}, 40345, {f: 10, c: 40347},
+    {f: 3, c: 40358}, {f: 5, c: 40362}, {f: 4, c: 40368}, {f: 6, c: 40373},
+    {f: 3, c: 40381}, 40385, 40387, {f: 14, c: 40389}, {f: 3, c: 40404}, 40408,
+    {f: 10, c: 40411}, {f: 8, c: 40423}, {f: 2, c: 40432}, {f: 4, c: 40436},
+    {f: 17, c: 40443}, {f: 8, c: 40461}, {f: 4, c: 40470}, 40476, 40484, 40487,
+    40494, 40496, 40500, {f: 2, c: 40507}, 40512, 40525, 40528,
+    {f: 3, c: 40530}, 40534, 40537, 40541, {f: 4, c: 40543}, 40549,
+    {f: 2, c: 40558}, 40562, 40564, {f: 3, c: 40566}, 40571, {f: 2, c: 40576},
+    {f: 4, c: 40579}, {f: 2, c: 40585}, {f: 6, c: 40588}, {f: 3, c: 40596},
+    {f: 5, c: 40600}, 40606, {f: 5, c: 40608}, {f: 2, c: 40615},
+    {f: 5, c: 40618}, {f: 4, c: 40624}, {f: 2, c: 40630}, {f: 2, c: 40633},
+    40636, {f: 4, c: 40639}, [12232, 40643], {f: 4, c: 40645},
+    {f: 2, c: 40650}, 40656, {f: 2, c: 40658}, {f: 3, c: 40661},
+    {f: 2, c: 40665}, 40673, {f: 2, c: 40675}, 40678, {f: 4, c: 40683},
+    {f: 2, c: 40688}, 40691, {f: 2, c: 40693}, 40696, 40698, {f: 9, c: 40704},
+    40714, 40716, 40719, {f: 2, c: 40721}, 40724, 40726, 40728,
+    {f: 6, c: 40730}, 40737, {f: 9, c: 40739}, {f: 2, c: 40749},
+    {f: 7, c: 40752}, 40760, 40762, 40764, {f: 5, c: 40767}, {f: 5, c: 40773},
+    {f: 3, c: 40780}, 40787, {f: 4, c: 40789}, {f: 2, c: 40794},
+    {f: 2, c: 40797}, 40802, {f: 2, c: 40804}, {f: 3, c: 40807}, 40811,
+    {f: 5, c: 40813}, {f: 4, c: 40819}, {f: 7, c: 40824}, {f: 2, c: 40833},
+    {f: 2, c: 40846}, {f: 3, c: 40849}, {f: 3, c: 40854}, {f: 2, c: 40861},
+    {f: 5, c: 40865}, 63788, {f: 3, c: 64013}, 64017, {f: 2, c: 64019}, 64024,
+    {f: 3, c: 64031}, {f: 2, c: 64035}, {f: 3, c: 64039}, 11905,
+    [59414, 131207], [59415, 131209], [59416, 131276], 11908, 13427, 13383,
+    11912, 11915, 59422, 13726, 13850, 13838, 11916, 11927, 14702, 14616,
+    59430, 14799, 14815, 14963, 14800, {f: 2, c: 59435}, 15182, 15470, 15584,
+    11943, [59441, 136663], 59442, 11946, 16470, 16735, 11950, 17207, 11955,
+    {f: 2, c: 11958}, [59451, 141711], 17329, 17324, 11963, 17373, 17622,
+    18017, 17996, [59459, 132361], 18211, 18217, 18300, 18317, 11978, 18759,
+    18810, 18813, {f: 2, c: 18818}, {f: 2, c: 18821}, 18847, 18843, 18871,
+    18870, [59476, 133533], [59477, 147966], 19619, {f: 3, c: 19615}, 19575,
+    19618, {f: 7, c: 19731}, 19886, 59492, {s: 226}, 8364, 165, 0, 0, 12351,
+    {s: 17}, 12436, {s: 14}, 12535, 12537, 12536, 12538, 0, {f: 3, c: 12339},
+    {f: 3, c: 12344}, {f: 3, c: 12586}, {f: 24, c: 12704}, 11904,
+    {f: 2, c: 11906}, {f: 3, c: 11909}, {f: 2, c: 11913}, {f: 10, c: 11917},
+    {f: 2, c: 11928}, {f: 12, c: 11931}, {f: 2, c: 11944}, {f: 3, c: 11947},
+    {f: 4, c: 11951}, {f: 2, c: 11956}, {f: 3, c: 11960}, {f: 14, c: 11964},
+    {f: 41, c: 11979}, {f: 71, c: 13312}, {f: 43, c: 13384},
+    {f: 298, c: 13428}, {f: 111, c: 13727}, {f: 11, c: 13839},
+    {f: 765, c: 13851}, {f: 85, c: 14617}, {f: 96, c: 14703},
+    {f: 14, c: 14801}, {f: 147, c: 14816}, {f: 218, c: 14964},
+    {f: 287, c: 15183}, {f: 113, c: 15471}, {f: 885, c: 15585},
+    {f: 264, c: 16471}, {f: 471, c: 16736}, {f: 116, c: 17208},
+    {f: 4, c: 17325}, {f: 43, c: 17330}, {f: 248, c: 17374},
+    {f: 373, c: 17623}, {f: 20, c: 17997}, {f: 193, c: 18018},
+    {f: 5, c: 18212}, {f: 82, c: 18218}, {f: 16, c: 18301}, {f: 441, c: 18318},
+    {f: 50, c: 18760}, {f: 2, c: 18811}, {f: 4, c: 18814}, 18820,
+    {f: 20, c: 18823}, {f: 3, c: 18844}, {f: 22, c: 18848}, {f: 703, c: 18872},
+    {f: 39, c: 19576}, {f: 111, c: 19620}, {f: 148, c: 19738},
+    {f: 7, c: 19887}]
+};
+
+
+/* -*- Mode: Java; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/* vim: set shiftwidth=2 tabstop=2 autoindent cindent expandtab: */
+
+'use strict';
+
+var ColorSpace = (function ColorSpaceClosure() {
+  // Constructor should define this.numComps, this.defaultColor, this.name
+  function ColorSpace() {
+    error('should not call ColorSpace constructor');
+  }
+
+  ColorSpace.prototype = {
+    // Input: array of size numComps representing color component values
+    // Output: array of rgb values, each value ranging from [0.1]
+    getRgb: function ColorSpace_getRgb(color) {
+      error('Should not call ColorSpace.getRgb: ' + color);
+    },
+    // Input: Uint8Array of component values, each value scaled to [0,255]
+    // Output: Uint8Array of rgb values, each value scaled to [0,255]
+    getRgbBuffer: function ColorSpace_getRgbBuffer(input) {
+      error('Should not call ColorSpace.getRgbBuffer: ' + input);
+    }
+  };
+
+  ColorSpace.parse = function ColorSpace_parse(cs, xref, res) {
+    var IR = ColorSpace.parseToIR(cs, xref, res);
+    if (IR instanceof AlternateCS)
+      return IR;
+
+    return ColorSpace.fromIR(IR);
+  };
+
+  ColorSpace.fromIR = function ColorSpace_fromIR(IR) {
+    var name = isArray(IR) ? IR[0] : IR;
+
+    switch (name) {
+      case 'DeviceGrayCS':
+        return new DeviceGrayCS();
+      case 'DeviceRgbCS':
+        return new DeviceRgbCS();
+      case 'DeviceCmykCS':
+        return new DeviceCmykCS();
+      case 'PatternCS':
+        var basePatternCS = IR[1];
+        if (basePatternCS)
+          basePatternCS = ColorSpace.fromIR(basePatternCS);
+        return new PatternCS(basePatternCS);
+      case 'IndexedCS':
+        var baseIndexedCS = IR[1];
+        var hiVal = IR[2];
+        var lookup = IR[3];
+        return new IndexedCS(ColorSpace.fromIR(baseIndexedCS), hiVal, lookup);
+      case 'AlternateCS':
+        var numComps = IR[1];
+        var alt = IR[2];
+        var tintFnIR = IR[3];
+
+        return new AlternateCS(numComps, ColorSpace.fromIR(alt),
+                                PDFFunction.fromIR(tintFnIR));
+      case 'LabCS':
+        var whitePoint = IR[1].WhitePoint;
+        var blackPoint = IR[1].BlackPoint;
+        var range = IR[1].Range;
+        return new LabCS(whitePoint, blackPoint, range);
+      default:
+        error('Unkown name ' + name);
+    }
+    return null;
+  };
+
+  ColorSpace.parseToIR = function ColorSpace_parseToIR(cs, xref, res) {
+    if (isName(cs)) {
+      var colorSpaces = res.get('ColorSpace');
+      if (isDict(colorSpaces)) {
+        var refcs = colorSpaces.get(cs.name);
+        if (refcs)
+          cs = refcs;
+      }
+    }
+
+    cs = xref.fetchIfRef(cs);
+    var mode;
+
+    if (isName(cs)) {
+      mode = cs.name;
+      this.mode = mode;
+
+      switch (mode) {
+        case 'DeviceGray':
+        case 'G':
+          return 'DeviceGrayCS';
+        case 'DeviceRGB':
+        case 'RGB':
+          return 'DeviceRgbCS';
+        case 'DeviceCMYK':
+        case 'CMYK':
+          return 'DeviceCmykCS';
+        case 'Pattern':
+          return ['PatternCS', null];
+        default:
+          error('unrecognized colorspace ' + mode);
+      }
+    } else if (isArray(cs)) {
+      mode = cs[0].name;
+      this.mode = mode;
+
+      switch (mode) {
+        case 'DeviceGray':
+        case 'G':
+          return 'DeviceGrayCS';
+        case 'DeviceRGB':
+        case 'RGB':
+          return 'DeviceRgbCS';
+        case 'DeviceCMYK':
+        case 'CMYK':
+          return 'DeviceCmykCS';
+        case 'CalGray':
+          return 'DeviceGrayCS';
+        case 'CalRGB':
+          return 'DeviceRgbCS';
+        case 'ICCBased':
+          var stream = xref.fetchIfRef(cs[1]);
+          var dict = stream.dict;
+          var numComps = dict.get('N');
+          if (numComps == 1)
+            return 'DeviceGrayCS';
+          if (numComps == 3)
+            return 'DeviceRgbCS';
+          if (numComps == 4)
+            return 'DeviceCmykCS';
+          break;
+        case 'Pattern':
+          var basePatternCS = cs[1];
+          if (basePatternCS)
+            basePatternCS = ColorSpace.parseToIR(basePatternCS, xref, res);
+          return ['PatternCS', basePatternCS];
+        case 'Indexed':
+        case 'I':
+          var baseIndexedCS = ColorSpace.parseToIR(cs[1], xref, res);
+          var hiVal = cs[2] + 1;
+          var lookup = xref.fetchIfRef(cs[3]);
+          return ['IndexedCS', baseIndexedCS, hiVal, lookup];
+        case 'Separation':
+        case 'DeviceN':
+          var name = cs[1];
+          var numComps = 1;
+          if (isName(name))
+            numComps = 1;
+          else if (isArray(name))
+            numComps = name.length;
+          var alt = ColorSpace.parseToIR(cs[2], xref, res);
+          var tintFnIR = PDFFunction.getIR(xref, xref.fetchIfRef(cs[3]));
+          return ['AlternateCS', numComps, alt, tintFnIR];
+        case 'Lab':
+          var params = cs[1].getAll();
+          return ['LabCS', params];
+        default:
+          error('unimplemented color space object "' + mode + '"');
+      }
+    } else {
+      error('unrecognized color space object: "' + cs + '"');
+    }
+    return null;
+  };
+  /**
+   * Checks if a decode map matches the default decode map for a color space.
+   * This handles the general decode maps where there are two values per
+   * component. e.g. [0, 1, 0, 1, 0, 1] for a RGB color.
+   * This does not handle Lab, Indexed, or Pattern decode maps since they are
+   * slightly different.
+   * @param {Array} decode Decode map (usually from an image).
+   * @param {Number} n Number of components the color space has.
+   */
+  ColorSpace.isDefaultDecode = function ColorSpace_isDefaultDecode(decode, n) {
+    if (!decode)
+      return true;
+
+    if (n * 2 !== decode.length) {
+      warning('The decode map is not the correct length');
+      return true;
+    }
+    for (var i = 0, ii = decode.length; i < ii; i += 2) {
+      if (decode[i] != 0 || decode[i + 1] != 1)
+        return false;
+    }
+    return true;
+  };
+
+  return ColorSpace;
+})();
+
+/**
+ * Alternate color space handles both Separation and DeviceN color spaces.  A
+ * Separation color space is actually just a DeviceN with one color component.
+ * Both color spaces use a tinting function to convert colors to a base color
+ * space.
+ */
+var AlternateCS = (function AlternateCSClosure() {
+  function AlternateCS(numComps, base, tintFn) {
+    this.name = 'Alternate';
+    this.numComps = numComps;
+    this.defaultColor = [];
+    for (var i = 0; i < numComps; ++i)
+      this.defaultColor.push(1);
+    this.base = base;
+    this.tintFn = tintFn;
+  }
+
+  AlternateCS.prototype = {
+    getRgb: function AlternateCS_getRgb(color) {
+      var tinted = this.tintFn(color);
+      return this.base.getRgb(tinted);
+    },
+    getRgbBuffer: function AlternateCS_getRgbBuffer(input, bits) {
+      var tintFn = this.tintFn;
+      var base = this.base;
+      var scale = 1 / ((1 << bits) - 1);
+      var length = input.length;
+      var pos = 0;
+      var baseNumComps = base.numComps;
+      var baseBuf = new Uint8Array(baseNumComps * length);
+      var numComps = this.numComps;
+      var scaled = [];
+
+      for (var i = 0; i < length; i += numComps) {
+        for (var z = 0; z < numComps; ++z)
+          scaled[z] = input[i + z] * scale;
+
+        var tinted = tintFn(scaled);
+        for (var j = 0; j < baseNumComps; ++j)
+          baseBuf[pos++] = 255 * tinted[j];
+      }
+      return base.getRgbBuffer(baseBuf, 8);
+    },
+    isDefaultDecode: function AlternateCS_isDefaultDecode(decodeMap) {
+      return ColorSpace.isDefaultDecode(decodeMap, this.numComps);
+    }
+  };
+
+  return AlternateCS;
+})();
+
+var PatternCS = (function PatternCSClosure() {
+  function PatternCS(baseCS) {
+    this.name = 'Pattern';
+    this.base = baseCS;
+  }
+  PatternCS.prototype = {};
+
+  return PatternCS;
+})();
+
+var IndexedCS = (function IndexedCSClosure() {
+  function IndexedCS(base, highVal, lookup) {
+    this.name = 'Indexed';
+    this.numComps = 1;
+    this.defaultColor = [0];
+    this.base = base;
+    this.highVal = highVal;
+
+    var baseNumComps = base.numComps;
+    var length = baseNumComps * highVal;
+    var lookupArray = new Uint8Array(length);
+
+    if (isStream(lookup)) {
+      var bytes = lookup.getBytes(length);
+      lookupArray.set(bytes);
+    } else if (isString(lookup)) {
+      for (var i = 0; i < length; ++i)
+        lookupArray[i] = lookup.charCodeAt(i);
+    } else {
+      error('Unrecognized lookup table: ' + lookup);
+    }
+    this.lookup = lookupArray;
+  }
+
+  IndexedCS.prototype = {
+    getRgb: function IndexedCS_getRgb(color) {
+      var numComps = this.base.numComps;
+      var start = color[0] * numComps;
+      var c = [];
+
+      for (var i = start, ii = start + numComps; i < ii; ++i)
+        c.push(this.lookup[i]);
+
+      return this.base.getRgb(c);
+    },
+    getRgbBuffer: function IndexedCS_getRgbBuffer(input) {
+      var base = this.base;
+      var numComps = base.numComps;
+      var lookup = this.lookup;
+      var length = input.length;
+      var baseBuf = new Uint8Array(length * numComps);
+      var baseBufPos = 0;
+
+      for (var i = 0; i < length; ++i) {
+        var lookupPos = input[i] * numComps;
+        for (var j = 0; j < numComps; ++j) {
+          baseBuf[baseBufPos++] = lookup[lookupPos + j];
+        }
+      }
+
+      return base.getRgbBuffer(baseBuf, 8);
+    },
+    isDefaultDecode: function IndexedCS_isDefaultDecode(decodeMap) {
+      // indexed color maps shouldn't be changed
+      return true;
+    }
+  };
+  return IndexedCS;
+})();
+
+var DeviceGrayCS = (function DeviceGrayCSClosure() {
+  function DeviceGrayCS() {
+    this.name = 'DeviceGray';
+    this.numComps = 1;
+    this.defaultColor = [0];
+  }
+
+  DeviceGrayCS.prototype = {
+    getRgb: function DeviceGrayCS_getRgb(color) {
+      var c = color[0];
+      return [c, c, c];
+    },
+    getRgbBuffer: function DeviceGrayCS_getRgbBuffer(input, bits) {
+      var scale = 255 / ((1 << bits) - 1);
+      var length = input.length;
+      var rgbBuf = new Uint8Array(length * 3);
+      for (var i = 0, j = 0; i < length; ++i) {
+        var c = (scale * input[i]) | 0;
+        rgbBuf[j++] = c;
+        rgbBuf[j++] = c;
+        rgbBuf[j++] = c;
+      }
+      return rgbBuf;
+    },
+    isDefaultDecode: function DeviceGrayCS_isDefaultDecode(decodeMap) {
+      return ColorSpace.isDefaultDecode(decodeMap, this.numComps);
+    }
+  };
+  return DeviceGrayCS;
+})();
+
+var DeviceRgbCS = (function DeviceRgbCSClosure() {
+  function DeviceRgbCS() {
+    this.name = 'DeviceRGB';
+    this.numComps = 3;
+    this.defaultColor = [0, 0, 0];
+  }
+  DeviceRgbCS.prototype = {
+    getRgb: function DeviceRgbCS_getRgb(color) {
+      return color;
+    },
+    getRgbBuffer: function DeviceRgbCS_getRgbBuffer(input, bits) {
+      if (bits == 8)
+        return input;
+      var scale = 255 / ((1 << bits) - 1);
+      var i, length = input.length;
+      var rgbBuf = new Uint8Array(length);
+      for (i = 0; i < length; ++i)
+        rgbBuf[i] = (scale * input[i]) | 0;
+      return rgbBuf;
+    },
+    isDefaultDecode: function DeviceRgbCS_isDefaultDecode(decodeMap) {
+      return ColorSpace.isDefaultDecode(decodeMap, this.numComps);
+    }
+  };
+  return DeviceRgbCS;
+})();
+
+var DeviceCmykCS = (function DeviceCmykCSClosure() {
+  function DeviceCmykCS() {
+    this.name = 'DeviceCMYK';
+    this.numComps = 4;
+    this.defaultColor = [0, 0, 0, 1];
+  }
+  DeviceCmykCS.prototype = {
+    getRgb: function DeviceCmykCS_getRgb(color) {
+      var c = color[0], m = color[1], y = color[2], k = color[3];
+
+      // CMYK -> CMY: http://www.easyrgb.com/index.php?X=MATH&H=14#text14
+      c = (c * (1 - k) + k);
+      m = (m * (1 - k) + k);
+      y = (y * (1 - k) + k);
+
+      // CMY -> RGB: http://www.easyrgb.com/index.php?X=MATH&H=12#text12
+      var r = (1 - c);
+      var g = (1 - m);
+      var b = (1 - y);
+
+      return [r, g, b];
+    },
+    getRgbBuffer: function DeviceCmykCS_getRgbBuffer(colorBuf, bits) {
+      var scale = 1 / ((1 << bits) - 1);
+      var length = colorBuf.length / 4;
+      var rgbBuf = new Uint8Array(length * 3);
+      var rgbBufPos = 0;
+      var colorBufPos = 0;
+
+      for (var i = 0; i < length; i++) {
+        var cmyk = [];
+        for (var j = 0; j < 4; ++j)
+          cmyk.push(scale * colorBuf[colorBufPos++]);
+
+        var rgb = this.getRgb(cmyk);
+        for (var j = 0; j < 3; ++j)
+          rgbBuf[rgbBufPos++] = Math.round(rgb[j] * 255);
+      }
+
+      return rgbBuf;
+    },
+    isDefaultDecode: function DeviceCmykCS_isDefaultDecode(decodeMap) {
+      return ColorSpace.isDefaultDecode(decodeMap, this.numComps);
+    }
+  };
+
+  return DeviceCmykCS;
+})();
+
+//
+// LabCS: Based on "PDF Reference, Sixth Ed", p.250
+//
+var LabCS = (function LabCSClosure() {
+  function LabCS(whitePoint, blackPoint, range) {
+    this.name = 'Lab';
+    this.numComps = 3;
+    this.defaultColor = [0, 0, 0];
+
+    if (!whitePoint)
+      error('WhitePoint missing - required for color space Lab');
+    blackPoint = blackPoint || [0, 0, 0];
+    range = range || [-100, 100, -100, 100];
+
+    // Translate args to spec variables
+    this.XW = whitePoint[0];
+    this.YW = whitePoint[1];
+    this.ZW = whitePoint[2];
+    this.amin = range[0];
+    this.amax = range[1];
+    this.bmin = range[2];
+    this.bmax = range[3];
+
+    // These are here just for completeness - the spec doesn't offer any
+    // formulas that use BlackPoint in Lab
+    this.XB = blackPoint[0];
+    this.YB = blackPoint[1];
+    this.ZB = blackPoint[2];
+
+    // Validate vars as per spec
+    if (this.XW < 0 || this.ZW < 0 || this.YW !== 1)
+      error('Invalid WhitePoint components, no fallback available');
+
+    if (this.XB < 0 || this.YB < 0 || this.ZB < 0) {
+      warn('Invalid BlackPoint, falling back to default');
+      this.XB = this.YB = this.ZB = 0;
+    }
+
+    if (this.amin > this.amax || this.bmin > this.bmax) {
+      warn('Invalid Range, falling back to defaults');
+      this.amin = -100;
+      this.amax = 100;
+      this.bmin = -100;
+      this.bmax = 100;
+    }
+  };
+
+  // Function g(x) from spec
+  function g(x) {
+    if (x >= 6 / 29)
+      return x * x * x;
+    else
+      return (108 / 841) * (x - 4 / 29);
+  }
+
+  LabCS.prototype = {
+    getRgb: function LabCS_getRgb(color) {
+      // Ls,as,bs <---> L*,a*,b* in the spec
+      var Ls = color[0], as = color[1], bs = color[2];
+
+      // Adjust limits of 'as' and 'bs'
+      as = as > this.amax ? this.amax : as;
+      as = as < this.amin ? this.amin : as;
+      bs = bs > this.bmax ? this.bmax : bs;
+      bs = bs < this.bmin ? this.bmin : bs;
+
+      // Computes intermediate variables X,Y,Z as per spec
+      var M = (Ls + 16) / 116;
+      var L = M + (as / 500);
+      var N = M - (bs / 200);
+      var X = this.XW * g(L);
+      var Y = this.YW * g(M);
+      var Z = this.ZW * g(N);
+
+      // XYZ to RGB 3x3 matrix, from:
+      // http://www.poynton.com/notes/colour_and_gamma/ColorFAQ.html#RTFToC18
+      var XYZtoRGB = [3.240479, -1.537150, -0.498535,
+                      -0.969256, 1.875992, 0.041556,
+                      0.055648, -0.204043, 1.057311];
+
+      return Util.apply3dTransform(XYZtoRGB, [X, Y, Z]);
+    },
+    getRgbBuffer: function LabCS_getRgbBuffer(input, bits) {
+      if (bits == 8)
+        return input;
+      var scale = 255 / ((1 << bits) - 1);
+      var i, length = input.length / 3;
+      var rgbBuf = new Uint8Array(length);
+
+      var j = 0;
+      for (i = 0; i < length; ++i) {
+        // Convert L*, a*, s* into RGB
+        var rgb = this.getRgb([input[i], input[i + 1], input[i + 2]]);
+        rgbBuf[j++] = rgb[0];
+        rgbBuf[j++] = rgb[1];
+        rgbBuf[j++] = rgb[2];
+      }
+
+      return rgbBuf;
+    },
+    isDefaultDecode: function LabCS_isDefaultDecode(decodeMap) {
+      // From Table 90 in Adobe's:
+      // "Document management - Portable document format", 1st ed, 2008
+      if (decodeMap[0] === 0 && decodeMap[1] === 100 &&
+          decodeMap[2] === this.amin && decodeMap[3] === this.amax &&
+          decodeMap[4] === this.bmin && decodeMap[5] === this.bmax)
+        return true;
+      else
+        return false;
+    }
+  };
+  return LabCS;
+})();
+
+/* -*- Mode: Java; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/* vim: set shiftwidth=2 tabstop=2 autoindent cindent expandtab: */
+
+'use strict';
+
+var ARCFourCipher = (function ARCFourCipherClosure() {
+  function ARCFourCipher(key) {
+    this.a = 0;
+    this.b = 0;
+    var s = new Uint8Array(256);
+    var i, j = 0, tmp, keyLength = key.length;
+    for (i = 0; i < 256; ++i)
+      s[i] = i;
+    for (i = 0; i < 256; ++i) {
+      tmp = s[i];
+      j = (j + tmp + key[i % keyLength]) & 0xFF;
+      s[i] = s[j];
+      s[j] = tmp;
+    }
+    this.s = s;
+  }
+
+  ARCFourCipher.prototype = {
+    encryptBlock: function ARCFourCipher_encryptBlock(data) {
+      var i, n = data.length, tmp, tmp2;
+      var a = this.a, b = this.b, s = this.s;
+      var output = new Uint8Array(n);
+      for (i = 0; i < n; ++i) {
+        a = (a + 1) & 0xFF;
+        tmp = s[a];
+        b = (b + tmp) & 0xFF;
+        tmp2 = s[b];
+        s[a] = tmp2;
+        s[b] = tmp;
+        output[i] = data[i] ^ s[(tmp + tmp2) & 0xFF];
+      }
+      this.a = a;
+      this.b = b;
+      return output;
+    }
+  };
+  ARCFourCipher.prototype.decryptBlock = ARCFourCipher.prototype.encryptBlock;
+
+  return ARCFourCipher;
+})();
+
+var calculateMD5 = (function calculateMD5Closure() {
+  var r = new Uint8Array([
+    7, 12, 17, 22, 7, 12, 17, 22, 7, 12, 17, 22, 7, 12, 17, 22,
+    5, 9, 14, 20, 5, 9, 14, 20, 5, 9, 14, 20, 5, 9, 14, 20,
+    4, 11, 16, 23, 4, 11, 16, 23, 4, 11, 16, 23, 4, 11, 16, 23,
+    6, 10, 15, 21, 6, 10, 15, 21, 6, 10, 15, 21, 6, 10, 15, 21]);
+
+  var k = new Int32Array([
+    -680876936, -389564586, 606105819, -1044525330, -176418897, 1200080426,
+    -1473231341, -45705983, 1770035416, -1958414417, -42063, -1990404162,
+    1804603682, -40341101, -1502002290, 1236535329, -165796510, -1069501632,
+    643717713, -373897302, -701558691, 38016083, -660478335, -405537848,
+    568446438, -1019803690, -187363961, 1163531501, -1444681467, -51403784,
+    1735328473, -1926607734, -378558, -2022574463, 1839030562, -35309556,
+    -1530992060, 1272893353, -155497632, -1094730640, 681279174, -358537222,
+    -722521979, 76029189, -640364487, -421815835, 530742520, -995338651,
+    -198630844, 1126891415, -1416354905, -57434055, 1700485571, -1894986606,
+    -1051523, -2054922799, 1873313359, -30611744, -1560198380, 1309151649,
+    -145523070, -1120210379, 718787259, -343485551]);
+
+  function hash(data, offset, length) {
+    var h0 = 1732584193, h1 = -271733879, h2 = -1732584194, h3 = 271733878;
+    // pre-processing
+    var paddedLength = (length + 72) & ~63; // data + 9 extra bytes
+    var padded = new Uint8Array(paddedLength);
+    var i, j, n;
+    for (i = 0; i < length; ++i)
+      padded[i] = data[offset++];
+    padded[i++] = 0x80;
+    n = paddedLength - 8;
+    while (i < n)
+      padded[i++] = 0;
+    padded[i++] = (length << 3) & 0xFF;
+    padded[i++] = (length >> 5) & 0xFF;
+    padded[i++] = (length >> 13) & 0xFF;
+    padded[i++] = (length >> 21) & 0xFF;
+    padded[i++] = (length >>> 29) & 0xFF;
+    padded[i++] = 0;
+    padded[i++] = 0;
+    padded[i++] = 0;
+    // chunking
+    // TODO ArrayBuffer ?
+    var w = new Int32Array(16);
+    for (i = 0; i < paddedLength;) {
+      for (j = 0; j < 16; ++j, i += 4) {
+        w[j] = (padded[i] | (padded[i + 1] << 8) |
+                (padded[i + 2] << 16) | (padded[i + 3] << 24));
+      }
+      var a = h0, b = h1, c = h2, d = h3, f, g;
+      for (j = 0; j < 64; ++j) {
+        if (j < 16) {
+          f = (b & c) | ((~b) & d);
+          g = j;
+        } else if (j < 32) {
+          f = (d & b) | ((~d) & c);
+          g = (5 * j + 1) & 15;
+        } else if (j < 48) {
+          f = b ^ c ^ d;
+          g = (3 * j + 5) & 15;
+        } else {
+          f = c ^ (b | (~d));
+          g = (7 * j) & 15;
+        }
+        var tmp = d, rotateArg = (a + f + k[j] + w[g]) | 0, rotate = r[j];
+        d = c;
+        c = b;
+        b = (b + ((rotateArg << rotate) | (rotateArg >>> (32 - rotate)))) | 0;
+        a = tmp;
+      }
+      h0 = (h0 + a) | 0;
+      h1 = (h1 + b) | 0;
+      h2 = (h2 + c) | 0;
+      h3 = (h3 + d) | 0;
+    }
+    return new Uint8Array([
+        h0 & 0xFF, (h0 >> 8) & 0xFF, (h0 >> 16) & 0xFF, (h0 >>> 24) & 0xFF,
+        h1 & 0xFF, (h1 >> 8) & 0xFF, (h1 >> 16) & 0xFF, (h1 >>> 24) & 0xFF,
+        h2 & 0xFF, (h2 >> 8) & 0xFF, (h2 >> 16) & 0xFF, (h2 >>> 24) & 0xFF,
+        h3 & 0xFF, (h3 >> 8) & 0xFF, (h3 >> 16) & 0xFF, (h3 >>> 24) & 0xFF
+    ]);
+  }
+  return hash;
+})();
+
+var NullCipher = (function NullCipherClosure() {
+  function NullCipher() {
+  }
+
+  NullCipher.prototype = {
+    decryptBlock: function NullCipher_decryptBlock(data) {
+      return data;
+    }
+  };
+
+  return NullCipher;
+})();
+
+var AES128Cipher = (function AES128CipherClosure() {
+  var rcon = new Uint8Array([
+    0x8d, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36, 0x6c,
+    0xd8, 0xab, 0x4d, 0x9a, 0x2f, 0x5e, 0xbc, 0x63, 0xc6, 0x97, 0x35, 0x6a,
+    0xd4, 0xb3, 0x7d, 0xfa, 0xef, 0xc5, 0x91, 0x39, 0x72, 0xe4, 0xd3, 0xbd,
+    0x61, 0xc2, 0x9f, 0x25, 0x4a, 0x94, 0x33, 0x66, 0xcc, 0x83, 0x1d, 0x3a,
+    0x74, 0xe8, 0xcb, 0x8d, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80,
+    0x1b, 0x36, 0x6c, 0xd8, 0xab, 0x4d, 0x9a, 0x2f, 0x5e, 0xbc, 0x63, 0xc6,
+    0x97, 0x35, 0x6a, 0xd4, 0xb3, 0x7d, 0xfa, 0xef, 0xc5, 0x91, 0x39, 0x72,
+    0xe4, 0xd3, 0xbd, 0x61, 0xc2, 0x9f, 0x25, 0x4a, 0x94, 0x33, 0x66, 0xcc,
+    0x83, 0x1d, 0x3a, 0x74, 0xe8, 0xcb, 0x8d, 0x01, 0x02, 0x04, 0x08, 0x10,
+    0x20, 0x40, 0x80, 0x1b, 0x36, 0x6c, 0xd8, 0xab, 0x4d, 0x9a, 0x2f, 0x5e,
+    0xbc, 0x63, 0xc6, 0x97, 0x35, 0x6a, 0xd4, 0xb3, 0x7d, 0xfa, 0xef, 0xc5,
+    0x91, 0x39, 0x72, 0xe4, 0xd3, 0xbd, 0x61, 0xc2, 0x9f, 0x25, 0x4a, 0x94,
+    0x33, 0x66, 0xcc, 0x83, 0x1d, 0x3a, 0x74, 0xe8, 0xcb, 0x8d, 0x01, 0x02,
+    0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36, 0x6c, 0xd8, 0xab, 0x4d,
+    0x9a, 0x2f, 0x5e, 0xbc, 0x63, 0xc6, 0x97, 0x35, 0x6a, 0xd4, 0xb3, 0x7d,
+    0xfa, 0xef, 0xc5, 0x91, 0x39, 0x72, 0xe4, 0xd3, 0xbd, 0x61, 0xc2, 0x9f,
+    0x25, 0x4a, 0x94, 0x33, 0x66, 0xcc, 0x83, 0x1d, 0x3a, 0x74, 0xe8, 0xcb,
+    0x8d, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36, 0x6c,
+    0xd8, 0xab, 0x4d, 0x9a, 0x2f, 0x5e, 0xbc, 0x63, 0xc6, 0x97, 0x35, 0x6a,
+    0xd4, 0xb3, 0x7d, 0xfa, 0xef, 0xc5, 0x91, 0x39, 0x72, 0xe4, 0xd3, 0xbd,
+    0x61, 0xc2, 0x9f, 0x25, 0x4a, 0x94, 0x33, 0x66, 0xcc, 0x83, 0x1d, 0x3a,
+    0x74, 0xe8, 0xcb, 0x8d]);
+
+  var s = new Uint8Array([
+    0x63, 0x7c, 0x77, 0x7b, 0xf2, 0x6b, 0x6f, 0xc5, 0x30, 0x01, 0x67, 0x2b,
+    0xfe, 0xd7, 0xab, 0x76, 0xca, 0x82, 0xc9, 0x7d, 0xfa, 0x59, 0x47, 0xf0,
+    0xad, 0xd4, 0xa2, 0xaf, 0x9c, 0xa4, 0x72, 0xc0, 0xb7, 0xfd, 0x93, 0x26,
+    0x36, 0x3f, 0xf7, 0xcc, 0x34, 0xa5, 0xe5, 0xf1, 0x71, 0xd8, 0x31, 0x15,
+    0x04, 0xc7, 0x23, 0xc3, 0x18, 0x96, 0x05, 0x9a, 0x07, 0x12, 0x80, 0xe2,
+    0xeb, 0x27, 0xb2, 0x75, 0x09, 0x83, 0x2c, 0x1a, 0x1b, 0x6e, 0x5a, 0xa0,
+    0x52, 0x3b, 0xd6, 0xb3, 0x29, 0xe3, 0x2f, 0x84, 0x53, 0xd1, 0x00, 0xed,
+    0x20, 0xfc, 0xb1, 0x5b, 0x6a, 0xcb, 0xbe, 0x39, 0x4a, 0x4c, 0x58, 0xcf,
+    0xd0, 0xef, 0xaa, 0xfb, 0x43, 0x4d, 0x33, 0x85, 0x45, 0xf9, 0x02, 0x7f,
+    0x50, 0x3c, 0x9f, 0xa8, 0x51, 0xa3, 0x40, 0x8f, 0x92, 0x9d, 0x38, 0xf5,
+    0xbc, 0xb6, 0xda, 0x21, 0x10, 0xff, 0xf3, 0xd2, 0xcd, 0x0c, 0x13, 0xec,
+    0x5f, 0x97, 0x44, 0x17, 0xc4, 0xa7, 0x7e, 0x3d, 0x64, 0x5d, 0x19, 0x73,
+    0x60, 0x81, 0x4f, 0xdc, 0x22, 0x2a, 0x90, 0x88, 0x46, 0xee, 0xb8, 0x14,
+    0xde, 0x5e, 0x0b, 0xdb, 0xe0, 0x32, 0x3a, 0x0a, 0x49, 0x06, 0x24, 0x5c,
+    0xc2, 0xd3, 0xac, 0x62, 0x91, 0x95, 0xe4, 0x79, 0xe7, 0xc8, 0x37, 0x6d,
+    0x8d, 0xd5, 0x4e, 0xa9, 0x6c, 0x56, 0xf4, 0xea, 0x65, 0x7a, 0xae, 0x08,
+    0xba, 0x78, 0x25, 0x2e, 0x1c, 0xa6, 0xb4, 0xc6, 0xe8, 0xdd, 0x74, 0x1f,
+    0x4b, 0xbd, 0x8b, 0x8a, 0x70, 0x3e, 0xb5, 0x66, 0x48, 0x03, 0xf6, 0x0e,
+    0x61, 0x35, 0x57, 0xb9, 0x86, 0xc1, 0x1d, 0x9e, 0xe1, 0xf8, 0x98, 0x11,
+    0x69, 0xd9, 0x8e, 0x94, 0x9b, 0x1e, 0x87, 0xe9, 0xce, 0x55, 0x28, 0xdf,
+    0x8c, 0xa1, 0x89, 0x0d, 0xbf, 0xe6, 0x42, 0x68, 0x41, 0x99, 0x2d, 0x0f,
+    0xb0, 0x54, 0xbb, 0x16]);
+
+  var inv_s = new Uint8Array([
+    0x52, 0x09, 0x6a, 0xd5, 0x30, 0x36, 0xa5, 0x38, 0xbf, 0x40, 0xa3, 0x9e,
+    0x81, 0xf3, 0xd7, 0xfb, 0x7c, 0xe3, 0x39, 0x82, 0x9b, 0x2f, 0xff, 0x87,
+    0x34, 0x8e, 0x43, 0x44, 0xc4, 0xde, 0xe9, 0xcb, 0x54, 0x7b, 0x94, 0x32,
+    0xa6, 0xc2, 0x23, 0x3d, 0xee, 0x4c, 0x95, 0x0b, 0x42, 0xfa, 0xc3, 0x4e,
+    0x08, 0x2e, 0xa1, 0x66, 0x28, 0xd9, 0x24, 0xb2, 0x76, 0x5b, 0xa2, 0x49,
+    0x6d, 0x8b, 0xd1, 0x25, 0x72, 0xf8, 0xf6, 0x64, 0x86, 0x68, 0x98, 0x16,
+    0xd4, 0xa4, 0x5c, 0xcc, 0x5d, 0x65, 0xb6, 0x92, 0x6c, 0x70, 0x48, 0x50,
+    0xfd, 0xed, 0xb9, 0xda, 0x5e, 0x15, 0x46, 0x57, 0xa7, 0x8d, 0x9d, 0x84,
+    0x90, 0xd8, 0xab, 0x00, 0x8c, 0xbc, 0xd3, 0x0a, 0xf7, 0xe4, 0x58, 0x05,
+    0xb8, 0xb3, 0x45, 0x06, 0xd0, 0x2c, 0x1e, 0x8f, 0xca, 0x3f, 0x0f, 0x02,
+    0xc1, 0xaf, 0xbd, 0x03, 0x01, 0x13, 0x8a, 0x6b, 0x3a, 0x91, 0x11, 0x41,
+    0x4f, 0x67, 0xdc, 0xea, 0x97, 0xf2, 0xcf, 0xce, 0xf0, 0xb4, 0xe6, 0x73,
+    0x96, 0xac, 0x74, 0x22, 0xe7, 0xad, 0x35, 0x85, 0xe2, 0xf9, 0x37, 0xe8,
+    0x1c, 0x75, 0xdf, 0x6e, 0x47, 0xf1, 0x1a, 0x71, 0x1d, 0x29, 0xc5, 0x89,
+    0x6f, 0xb7, 0x62, 0x0e, 0xaa, 0x18, 0xbe, 0x1b, 0xfc, 0x56, 0x3e, 0x4b,
+    0xc6, 0xd2, 0x79, 0x20, 0x9a, 0xdb, 0xc0, 0xfe, 0x78, 0xcd, 0x5a, 0xf4,
+    0x1f, 0xdd, 0xa8, 0x33, 0x88, 0x07, 0xc7, 0x31, 0xb1, 0x12, 0x10, 0x59,
+    0x27, 0x80, 0xec, 0x5f, 0x60, 0x51, 0x7f, 0xa9, 0x19, 0xb5, 0x4a, 0x0d,
+    0x2d, 0xe5, 0x7a, 0x9f, 0x93, 0xc9, 0x9c, 0xef, 0xa0, 0xe0, 0x3b, 0x4d,
+    0xae, 0x2a, 0xf5, 0xb0, 0xc8, 0xeb, 0xbb, 0x3c, 0x83, 0x53, 0x99, 0x61,
+    0x17, 0x2b, 0x04, 0x7e, 0xba, 0x77, 0xd6, 0x26, 0xe1, 0x69, 0x14, 0x63,
+    0x55, 0x21, 0x0c, 0x7d]);
+
+  var mix = new Uint32Array([
+    0x00000000, 0x0e090d0b, 0x1c121a16, 0x121b171d, 0x3824342c, 0x362d3927,
+    0x24362e3a, 0x2a3f2331, 0x70486858, 0x7e416553, 0x6c5a724e, 0x62537f45,
+    0x486c5c74, 0x4665517f, 0x547e4662, 0x5a774b69, 0xe090d0b0, 0xee99ddbb,
+    0xfc82caa6, 0xf28bc7ad, 0xd8b4e49c, 0xd6bde997, 0xc4a6fe8a, 0xcaaff381,
+    0x90d8b8e8, 0x9ed1b5e3, 0x8ccaa2fe, 0x82c3aff5, 0xa8fc8cc4, 0xa6f581cf,
+    0xb4ee96d2, 0xbae79bd9, 0xdb3bbb7b, 0xd532b670, 0xc729a16d, 0xc920ac66,
+    0xe31f8f57, 0xed16825c, 0xff0d9541, 0xf104984a, 0xab73d323, 0xa57ade28,
+    0xb761c935, 0xb968c43e, 0x9357e70f, 0x9d5eea04, 0x8f45fd19, 0x814cf012,
+    0x3bab6bcb, 0x35a266c0, 0x27b971dd, 0x29b07cd6, 0x038f5fe7, 0x0d8652ec,
+    0x1f9d45f1, 0x119448fa, 0x4be30393, 0x45ea0e98, 0x57f11985, 0x59f8148e,
+    0x73c737bf, 0x7dce3ab4, 0x6fd52da9, 0x61dc20a2, 0xad766df6, 0xa37f60fd,
+    0xb16477e0, 0xbf6d7aeb, 0x955259da, 0x9b5b54d1, 0x894043cc, 0x87494ec7,
+    0xdd3e05ae, 0xd33708a5, 0xc12c1fb8, 0xcf2512b3, 0xe51a3182, 0xeb133c89,
+    0xf9082b94, 0xf701269f, 0x4de6bd46, 0x43efb04d, 0x51f4a750, 0x5ffdaa5b,
+    0x75c2896a, 0x7bcb8461, 0x69d0937c, 0x67d99e77, 0x3daed51e, 0x33a7d815,
+    0x21bccf08, 0x2fb5c203, 0x058ae132, 0x0b83ec39, 0x1998fb24, 0x1791f62f,
+    0x764dd68d, 0x7844db86, 0x6a5fcc9b, 0x6456c190, 0x4e69e2a1, 0x4060efaa,
+    0x527bf8b7, 0x5c72f5bc, 0x0605bed5, 0x080cb3de, 0x1a17a4c3, 0x141ea9c8,
+    0x3e218af9, 0x302887f2, 0x223390ef, 0x2c3a9de4, 0x96dd063d, 0x98d40b36,
+    0x8acf1c2b, 0x84c61120, 0xaef93211, 0xa0f03f1a, 0xb2eb2807, 0xbce2250c,
+    0xe6956e65, 0xe89c636e, 0xfa877473, 0xf48e7978, 0xdeb15a49, 0xd0b85742,
+    0xc2a3405f, 0xccaa4d54, 0x41ecdaf7, 0x4fe5d7fc, 0x5dfec0e1, 0x53f7cdea,
+    0x79c8eedb, 0x77c1e3d0, 0x65daf4cd, 0x6bd3f9c6, 0x31a4b2af, 0x3fadbfa4,
+    0x2db6a8b9, 0x23bfa5b2, 0x09808683, 0x07898b88, 0x15929c95, 0x1b9b919e,
+    0xa17c0a47, 0xaf75074c, 0xbd6e1051, 0xb3671d5a, 0x99583e6b, 0x97513360,
+    0x854a247d, 0x8b432976, 0xd134621f, 0xdf3d6f14, 0xcd267809, 0xc32f7502,
+    0xe9105633, 0xe7195b38, 0xf5024c25, 0xfb0b412e, 0x9ad7618c, 0x94de6c87,
+    0x86c57b9a, 0x88cc7691, 0xa2f355a0, 0xacfa58ab, 0xbee14fb6, 0xb0e842bd,
+    0xea9f09d4, 0xe49604df, 0xf68d13c2, 0xf8841ec9, 0xd2bb3df8, 0xdcb230f3,
+    0xcea927ee, 0xc0a02ae5, 0x7a47b13c, 0x744ebc37, 0x6655ab2a, 0x685ca621,
+    0x42638510, 0x4c6a881b, 0x5e719f06, 0x5078920d, 0x0a0fd964, 0x0406d46f,
+    0x161dc372, 0x1814ce79, 0x322bed48, 0x3c22e043, 0x2e39f75e, 0x2030fa55,
+    0xec9ab701, 0xe293ba0a, 0xf088ad17, 0xfe81a01c, 0xd4be832d, 0xdab78e26,
+    0xc8ac993b, 0xc6a59430, 0x9cd2df59, 0x92dbd252, 0x80c0c54f, 0x8ec9c844,
+    0xa4f6eb75, 0xaaffe67e, 0xb8e4f163, 0xb6edfc68, 0x0c0a67b1, 0x02036aba,
+    0x10187da7, 0x1e1170ac, 0x342e539d, 0x3a275e96, 0x283c498b, 0x26354480,
+    0x7c420fe9, 0x724b02e2, 0x605015ff, 0x6e5918f4, 0x44663bc5, 0x4a6f36ce,
+    0x587421d3, 0x567d2cd8, 0x37a10c7a, 0x39a80171, 0x2bb3166c, 0x25ba1b67,
+    0x0f853856, 0x018c355d, 0x13972240, 0x1d9e2f4b, 0x47e96422, 0x49e06929,
+    0x5bfb7e34, 0x55f2733f, 0x7fcd500e, 0x71c45d05, 0x63df4a18, 0x6dd64713,
+    0xd731dcca, 0xd938d1c1, 0xcb23c6dc, 0xc52acbd7, 0xef15e8e6, 0xe11ce5ed,
+    0xf307f2f0, 0xfd0efffb, 0xa779b492, 0xa970b999, 0xbb6bae84, 0xb562a38f,
+    0x9f5d80be, 0x91548db5, 0x834f9aa8, 0x8d4697a3]);
+
+  function expandKey128(cipherKey) {
+    var b = 176, result = new Uint8Array(b);
+    result.set(cipherKey);
+    for (var j = 16, i = 1; j < b; ++i) {
+      // RotWord
+      var t1 = result[j - 3], t2 = result[j - 2],
+          t3 = result[j - 1], t4 = result[j - 4];
+      // SubWord
+      t1 = s[t1]; t2 = s[t2]; t3 = s[t3]; t4 = s[t4];
+      // Rcon
+      t1 = t1 ^ rcon[i];
+      for (var n = 0; n < 4; ++n) {
+        result[j] = (t1 ^= result[j - 16]); j++;
+        result[j] = (t2 ^= result[j - 16]); j++;
+        result[j] = (t3 ^= result[j - 16]); j++;
+        result[j] = (t4 ^= result[j - 16]); j++;
+      }
+    }
+    return result;
+  }
+
+  function decrypt128(input, key) {
+    var state = new Uint8Array(16);
+    state.set(input);
+    var i, j, k;
+    var t, u, v;
+    // AddRoundKey
+    for (j = 0, k = 160; j < 16; ++j, ++k)
+      state[j] ^= key[k];
+    for (i = 9; i >= 1; --i) {
+      // InvShiftRows
+      t = state[13]; state[13] = state[9]; state[9] = state[5];
+      state[5] = state[1]; state[1] = t;
+      t = state[14]; u = state[10]; state[14] = state[6];
+      state[10] = state[2]; state[6] = t; state[2] = u;
+      t = state[15]; u = state[11]; v = state[7]; state[15] = state[3];
+      state[11] = t; state[7] = u; state[3] = v;
+      // InvSubBytes
+      for (j = 0; j < 16; ++j)
+        state[j] = inv_s[state[j]];
+      // AddRoundKey
+      for (j = 0, k = i * 16; j < 16; ++j, ++k)
+        state[j] ^= key[k];
+      // InvMixColumns
+      for (j = 0; j < 16; j += 4) {
+        var s0 = mix[state[j]], s1 = mix[state[j + 1]],
+            s2 = mix[state[j + 2]], s3 = mix[state[j + 3]];
+        t = (s0 ^ (s1 >>> 8) ^ (s1 << 24) ^ (s2 >>> 16) ^ (s2 << 16) ^
+            (s3 >>> 24) ^ (s3 << 8));
+        state[j] = (t >>> 24) & 0xFF;
+        state[j + 1] = (t >> 16) & 0xFF;
+        state[j + 2] = (t >> 8) & 0xFF;
+        state[j + 3] = t & 0xFF;
+      }
+    }
+    // InvShiftRows
+    t = state[13]; state[13] = state[9]; state[9] = state[5];
+    state[5] = state[1]; state[1] = t;
+    t = state[14]; u = state[10]; state[14] = state[6];
+    state[10] = state[2]; state[6] = t; state[2] = u;
+    t = state[15]; u = state[11]; v = state[7]; state[15] = state[3];
+    state[11] = t; state[7] = u; state[3] = v;
+    for (j = 0; j < 16; ++j) {
+      // InvSubBytes
+      state[j] = inv_s[state[j]];
+      // AddRoundKey
+      state[j] ^= key[j];
+    }
+    return state;
+  }
+
+  function AES128Cipher(key) {
+    this.key = expandKey128(key);
+    this.buffer = new Uint8Array(16);
+    this.bufferPosition = 0;
+  }
+
+  function decryptBlock2(data) {
+    var i, j, ii, sourceLength = data.length,
+        buffer = this.buffer, bufferLength = this.bufferPosition,
+        result = [], iv = this.iv;
+    for (i = 0; i < sourceLength; ++i) {
+      buffer[bufferLength] = data[i];
+      ++bufferLength;
+      if (bufferLength < 16)
+        continue;
+      // buffer is full, decrypting
+      var plain = decrypt128(buffer, this.key);
+      // xor-ing the IV vector to get plain text
+      for (j = 0; j < 16; ++j)
+        plain[j] ^= iv[j];
+      iv = buffer;
+      result.push(plain);
+      buffer = new Uint8Array(16);
+      bufferLength = 0;
+    }
+    // saving incomplete buffer
+    this.buffer = buffer;
+    this.bufferLength = bufferLength;
+    this.iv = iv;
+    if (result.length == 0)
+      return new Uint8Array([]);
+    if (result.length == 1)
+      return result[0];
+    // combining plain text blocks into one
+    var output = new Uint8Array(16 * result.length);
+    for (i = 0, j = 0, ii = result.length; i < ii; ++i, j += 16)
+      output.set(result[i], j);
+    return output;
+  }
+
+  AES128Cipher.prototype = {
+    decryptBlock: function AES128Cipher_decryptBlock(data) {
+      var i, sourceLength = data.length;
+      var buffer = this.buffer, bufferLength = this.bufferPosition;
+      // waiting for IV values -- they are at the start of the stream
+      for (i = 0; bufferLength < 16 && i < sourceLength; ++i, ++bufferLength)
+        buffer[bufferLength] = data[i];
+      if (bufferLength < 16) {
+        // need more data
+        this.bufferLength = bufferLength;
+        return new Uint8Array([]);
+      }
+      this.iv = buffer;
+      this.buffer = new Uint8Array(16);
+      this.bufferLength = 0;
+      // starting decryption
+      this.decryptBlock = decryptBlock2;
+      return this.decryptBlock(data.subarray(16));
+    }
+  };
+
+  return AES128Cipher;
+})();
+
+var CipherTransform = (function CipherTransformClosure() {
+  function CipherTransform(stringCipherConstructor, streamCipherConstructor) {
+    this.stringCipherConstructor = stringCipherConstructor;
+    this.streamCipherConstructor = streamCipherConstructor;
+  }
+  CipherTransform.prototype = {
+    createStream: function CipherTransform_createStream(stream) {
+      var cipher = new this.streamCipherConstructor();
+      return new DecryptStream(stream,
+        function cipherTransformDecryptStream(data) {
+          return cipher.decryptBlock(data);
+        }
+      );
+    },
+    decryptString: function CipherTransform_decryptString(s) {
+      var cipher = new this.stringCipherConstructor();
+      var data = stringToBytes(s);
+      data = cipher.decryptBlock(data);
+      return bytesToString(data);
+    }
+  };
+  return CipherTransform;
+})();
+
+var CipherTransformFactory = (function CipherTransformFactoryClosure() {
+  function prepareKeyData(fileId, password, ownerPassword, userPassword,
+                          flags, revision, keyLength, encryptMetadata) {
+    var defaultPasswordBytes = new Uint8Array([
+      0x28, 0xBF, 0x4E, 0x5E, 0x4E, 0x75, 0x8A, 0x41,
+      0x64, 0x00, 0x4E, 0x56, 0xFF, 0xFA, 0x01, 0x08,
+      0x2E, 0x2E, 0x00, 0xB6, 0xD0, 0x68, 0x3E, 0x80,
+      0x2F, 0x0C, 0xA9, 0xFE, 0x64, 0x53, 0x69, 0x7A]);
+    var hashData = new Uint8Array(100), i = 0, j, n;
+    if (password) {
+      n = Math.min(32, password.length);
+      for (; i < n; ++i)
+        hashData[i] = password[i];
+    }
+    j = 0;
+    while (i < 32) {
+      hashData[i++] = defaultPasswordBytes[j++];
+    }
+    // as now the padded password in the hashData[0..i]
+    for (j = 0, n = ownerPassword.length; j < n; ++j)
+      hashData[i++] = ownerPassword[j];
+    hashData[i++] = flags & 0xFF;
+    hashData[i++] = (flags >> 8) & 0xFF;
+    hashData[i++] = (flags >> 16) & 0xFF;
+    hashData[i++] = (flags >>> 24) & 0xFF;
+    for (j = 0, n = fileId.length; j < n; ++j)
+      hashData[i++] = fileId[j];
+    if (revision >= 4 && !encryptMetadata) {
+      hashData[i++] = 0xFF;
+      hashData[i++] = 0xFF;
+      hashData[i++] = 0xFF;
+      hashData[i++] = 0xFF;
+    }
+    var hash = calculateMD5(hashData, 0, i);
+    var keyLengthInBytes = keyLength >> 3;
+    if (revision >= 3) {
+      for (j = 0; j < 50; ++j) {
+         hash = calculateMD5(hash, 0, keyLengthInBytes);
+      }
+    }
+    var encryptionKey = hash.subarray(0, keyLengthInBytes);
+    var cipher, checkData;
+
+    if (revision >= 3) {
+      // padded password in hashData, we can use this array for user
+      // password check
+      i = 32;
+      for (j = 0, n = fileId.length; j < n; ++j)
+        hashData[i++] = fileId[j];
+      cipher = new ARCFourCipher(encryptionKey);
+      var checkData = cipher.encryptBlock(calculateMD5(hashData, 0, i));
+      n = encryptionKey.length;
+      var derivedKey = new Uint8Array(n), k;
+      for (j = 1; j <= 19; ++j) {
+        for (k = 0; k < n; ++k)
+          derivedKey[k] = encryptionKey[k] ^ j;
+        cipher = new ARCFourCipher(derivedKey);
+        checkData = cipher.encryptBlock(checkData);
+      }
+    } else {
+      cipher = new ARCFourCipher(encryptionKey);
+      checkData = cipher.encryptBlock(hashData.subarray(0, 32));
+    }
+    for (j = 0, n = checkData.length; j < n; ++j) {
+      if (userPassword[j] != checkData[j])
+        error('incorrect password');
+    }
+    return encryptionKey;
+  }
+
+  var identityName = new Name('Identity');
+
+  function CipherTransformFactory(dict, fileId, password) {
+    var filter = dict.get('Filter');
+    if (!isName(filter) || filter.name != 'Standard')
+      error('unknown encryption method');
+    this.dict = dict;
+    var algorithm = dict.get('V');
+    if (!isInt(algorithm) ||
+      (algorithm != 1 && algorithm != 2 && algorithm != 4))
+      error('unsupported encryption algorithm');
+    this.algorithm = algorithm;
+    var keyLength = dict.get('Length') || 40;
+    if (!isInt(keyLength) ||
+      keyLength < 40 || (keyLength % 8) != 0)
+      error('invalid key length');
+    // prepare keys
+    var ownerPassword = stringToBytes(dict.get('O'));
+    var userPassword = stringToBytes(dict.get('U'));
+    var flags = dict.get('P');
+    var revision = dict.get('R');
+    var encryptMetadata =
+      dict.get('EncryptMetadata') !== false; // makes true as default value
+    var fileIdBytes = stringToBytes(fileId);
+    var passwordBytes;
+    if (password)
+      passwordBytes = stringToBytes(password);
+
+    this.encryptionKey = prepareKeyData(fileIdBytes, passwordBytes,
+                                        ownerPassword, userPassword,
+                                        flags, revision,
+                                        keyLength, encryptMetadata);
+    if (algorithm == 4) {
+      this.cf = dict.get('CF');
+      this.stmf = dict.get('StmF') || identityName;
+      this.strf = dict.get('StrF') || identityName;
+      this.eff = dict.get('EFF') || this.strf;
+    }
+  }
+
+  function buildObjectKey(num, gen, encryptionKey, isAes) {
+    var key = new Uint8Array(encryptionKey.length + 9), i, n;
+    for (i = 0, n = encryptionKey.length; i < n; ++i)
+      key[i] = encryptionKey[i];
+    key[i++] = num & 0xFF;
+    key[i++] = (num >> 8) & 0xFF;
+    key[i++] = (num >> 16) & 0xFF;
+    key[i++] = gen & 0xFF;
+    key[i++] = (gen >> 8) & 0xFF;
+    if (isAes) {
+      key[i++] = 0x73;
+      key[i++] = 0x41;
+      key[i++] = 0x6C;
+      key[i++] = 0x54;
+    }
+    var hash = calculateMD5(key, 0, i);
+    return hash.subarray(0, Math.min(encryptionKey.length + 5, 16));
+  }
+
+  function buildCipherConstructor(cf, name, num, gen, key) {
+    var cryptFilter = cf.get(name.name);
+    var cfm;
+    if (cryptFilter != null)
+      cfm = cryptFilter.get('CFM');
+    if (!cfm || cfm.name == 'None') {
+      return function cipherTransformFactoryBuildCipherConstructorNone() {
+        return new NullCipher();
+      };
+    }
+    if ('V2' == cfm.name) {
+      return function cipherTransformFactoryBuildCipherConstructorV2() {
+        return new ARCFourCipher(
+          buildObjectKey(num, gen, key, false));
+      };
+    }
+    if ('AESV2' == cfm.name) {
+      return function cipherTransformFactoryBuildCipherConstructorAESV2() {
+        return new AES128Cipher(
+          buildObjectKey(num, gen, key, true));
+      };
+    }
+    error('Unknown crypto method');
+  }
+
+  CipherTransformFactory.prototype = {
+    createCipherTransform:
+      function CipherTransformFactory_createCipherTransform(num, gen) {
+      if (this.algorithm == 4) {
+        return new CipherTransform(
+          buildCipherConstructor(this.cf, this.stmf,
+            num, gen, this.encryptionKey),
+          buildCipherConstructor(this.cf, this.strf,
+            num, gen, this.encryptionKey));
+      }
+      // algorithms 1 and 2
+      var key = buildObjectKey(num, gen, this.encryptionKey, false);
+      var cipherConstructor = function buildCipherCipherConstructor() {
+        return new ARCFourCipher(key);
+      };
+      return new CipherTransform(cipherConstructor, cipherConstructor);
+    }
+  };
+
+  return CipherTransformFactory;
+})();
+
+
+/* -*- Mode: Java; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/* vim: set shiftwidth=2 tabstop=2 autoindent cindent expandtab: */
+
+'use strict';
+
+var PartialEvaluator = (function PartialEvaluatorClosure() {
+  function PartialEvaluator(xref, handler, uniquePrefix) {
+    this.state = new EvalState();
+    this.stateStack = [];
+
+    this.xref = xref;
+    this.handler = handler;
+    this.uniquePrefix = uniquePrefix;
+    this.objIdCounter = 0;
+  }
+
+  var OP_MAP = {
+    // Graphics state
+    w: 'setLineWidth',
+    J: 'setLineCap',
+    j: 'setLineJoin',
+    M: 'setMiterLimit',
+    d: 'setDash',
+    ri: 'setRenderingIntent',
+    i: 'setFlatness',
+    gs: 'setGState',
+    q: 'save',
+    Q: 'restore',
+    cm: 'transform',
+
+    // Path
+    m: 'moveTo',
+    l: 'lineTo',
+    c: 'curveTo',
+    v: 'curveTo2',
+    y: 'curveTo3',
+    h: 'closePath',
+    re: 'rectangle',
+    S: 'stroke',
+    s: 'closeStroke',
+    f: 'fill',
+    F: 'fill',
+    'f*': 'eoFill',
+    B: 'fillStroke',
+    'B*': 'eoFillStroke',
+    b: 'closeFillStroke',
+    'b*': 'closeEOFillStroke',
+    n: 'endPath',
+
+    // Clipping
+    W: 'clip',
+    'W*': 'eoClip',
+
+    // Text
+    BT: 'beginText',
+    ET: 'endText',
+    Tc: 'setCharSpacing',
+    Tw: 'setWordSpacing',
+    Tz: 'setHScale',
+    TL: 'setLeading',
+    Tf: 'setFont',
+    Tr: 'setTextRenderingMode',
+    Ts: 'setTextRise',
+    Td: 'moveText',
+    TD: 'setLeadingMoveText',
+    Tm: 'setTextMatrix',
+    'T*': 'nextLine',
+    Tj: 'showText',
+    TJ: 'showSpacedText',
+    "'": 'nextLineShowText',
+    '"': 'nextLineSetSpacingShowText',
+
+    // Type3 fonts
+    d0: 'setCharWidth',
+    d1: 'setCharWidthAndBounds',
+
+    // Color
+    CS: 'setStrokeColorSpace',
+    cs: 'setFillColorSpace',
+    SC: 'setStrokeColor',
+    SCN: 'setStrokeColorN',
+    sc: 'setFillColor',
+    scn: 'setFillColorN',
+    G: 'setStrokeGray',
+    g: 'setFillGray',
+    RG: 'setStrokeRGBColor',
+    rg: 'setFillRGBColor',
+    K: 'setStrokeCMYKColor',
+    k: 'setFillCMYKColor',
+
+    // Shading
+    sh: 'shadingFill',
+
+    // Images
+    BI: 'beginInlineImage',
+    ID: 'beginImageData',
+    EI: 'endInlineImage',
+
+    // XObjects
+    Do: 'paintXObject',
+
+    // Marked content
+    MP: 'markPoint',
+    DP: 'markPointProps',
+    BMC: 'beginMarkedContent',
+    BDC: 'beginMarkedContentProps',
+    EMC: 'endMarkedContent',
+
+    // Compatibility
+    BX: 'beginCompat',
+    EX: 'endCompat'
+  };
+
+  function splitCombinedOperations(operations) {
+    // Two operations can be combined together, trying to find which two
+    // operations were concatenated.
+    for (var i = operations.length - 1; i > 0; i--) {
+      var op1 = operations.substring(0, i), op2 = operations.substring(i);
+      if (op1 in OP_MAP && op2 in OP_MAP)
+        return [op1, op2]; // operations found
+    }
+    return null;
+  }
+
+  PartialEvaluator.prototype = {
+    getOperatorList: function PartialEvaluator_getOperatorList(stream,
+                                                               resources,
+                                                               dependency,
+                                                               queue) {
+
+      var self = this;
+      var xref = this.xref;
+      var handler = this.handler;
+      var uniquePrefix = this.uniquePrefix || '';
+
+      function insertDependency(depList) {
+        fnArray.push('dependency');
+        argsArray.push(depList);
+        for (var i = 0, ii = depList.length; i < ii; i++) {
+          var dep = depList[i];
+          if (dependency.indexOf(dep) == -1) {
+            dependency.push(depList[i]);
+          }
+        }
+      }
+
+      function handleSetFont(fontName, font) {
+        var loadedName = null;
+
+        var fontRes = resources.get('Font');
+
+        assert(fontRes, 'fontRes not available');
+
+        font = xref.fetchIfRef(font) || fontRes.get(fontName);
+        assertWellFormed(isDict(font));
+        ++self.objIdCounter;
+        if (!font.translated) {
+          font.translated = self.translateFont(font, xref, resources,
+                                               dependency);
+          if (font.translated) {
+            // keep track of each font we translated so the caller can
+            // load them asynchronously before calling display on a page
+            loadedName = 'font_' + uniquePrefix + self.objIdCounter;
+            font.translated.properties.loadedName = loadedName;
+            font.loadedName = loadedName;
+
+            var translated = font.translated;
+            // Convert the file to an ArrayBuffer which will be turned back into
+            // a Stream in the main thread.
+            if (translated.file)
+              translated.file = translated.file.getBytes();
+            if (translated.properties.file) {
+              translated.properties.file =
+                  translated.properties.file.getBytes();
+            }
+
+            handler.send('obj', [
+                loadedName,
+                'Font',
+                translated.name,
+                translated.file,
+                translated.properties
+            ]);
+          }
+        }
+        loadedName = loadedName || font.loadedName;
+
+        // Ensure the font is ready before the font is set
+        // and later on used for drawing.
+        // OPTIMIZE: This should get insert to the operatorList only once per
+        // page.
+        insertDependency([loadedName]);
+        return loadedName;
+      }
+
+      function buildPaintImageXObject(image, inline) {
+        var dict = image.dict;
+        var w = dict.get('Width', 'W');
+        var h = dict.get('Height', 'H');
+
+        var imageMask = dict.get('ImageMask', 'IM') || false;
+        if (imageMask) {
+          // This depends on a tmpCanvas beeing filled with the
+          // current fillStyle, such that processing the pixel
+          // data can't be done here. Instead of creating a
+          // complete PDFImage, only read the information needed
+          // for later.
+
+          var width = dict.get('Width', 'W');
+          var height = dict.get('Height', 'H');
+          var bitStrideLength = (width + 7) >> 3;
+          var imgArray = image.getBytes(bitStrideLength * height);
+          var decode = dict.get('Decode', 'D');
+          var inverseDecode = !!decode && decode[0] > 0;
+
+          fn = 'paintImageMaskXObject';
+          args = [imgArray, inverseDecode, width, height];
+          return;
+        }
+
+        // If there is no imageMask, create the PDFImage and a lot
+        // of image processing can be done here.
+        var objId = 'img_' + uniquePrefix + (++self.objIdCounter);
+        insertDependency([objId]);
+        args = [objId, w, h];
+
+        var softMask = dict.get('SMask', 'IM') || false;
+        if (!softMask && image instanceof JpegStream &&
+            image.isNativelySupported(xref, resources)) {
+          // These JPEGs don't need any more processing so we can just send it.
+          fn = 'paintJpegXObject';
+          handler.send('obj', [objId, 'JpegStream', image.getIR()]);
+          return;
+        }
+
+        fn = 'paintImageXObject';
+
+        PDFImage.buildImage(function(imageObj) {
+            var drawWidth = imageObj.drawWidth;
+            var drawHeight = imageObj.drawHeight;
+            var imgData = {
+              width: drawWidth,
+              height: drawHeight,
+              data: new Uint8Array(drawWidth * drawHeight * 4)
+            };
+            var pixels = imgData.data;
+            imageObj.fillRgbaBuffer(pixels, drawWidth, drawHeight);
+            handler.send('obj', [objId, 'Image', imgData]);
+          }, handler, xref, resources, image, inline);
+      }
+
+      if (!queue)
+        queue = {};
+
+      if (!queue.argsArray) {
+        queue.argsArray = [];
+      }
+      if (!queue.fnArray) {
+        queue.fnArray = [];
+      }
+
+      var fnArray = queue.fnArray, argsArray = queue.argsArray;
+      var dependencyArray = dependency || [];
+
+      resources = resources || new Dict();
+      var xobjs = resources.get('XObject') || new Dict();
+      var patterns = resources.get('Pattern') || new Dict();
+      var parser = new Parser(new Lexer(stream), false, xref);
+      var res = resources;
+      var hasNextObj = false, nextObj;
+      var args = [], obj;
+      var TILING_PATTERN = 1, SHADING_PATTERN = 2;
+
+      while (true) {
+        if (hasNextObj) {
+          obj = nextObj;
+          hasNextObj = false;
+        } else {
+          obj = parser.getObj();
+          if (isEOF(obj))
+            break;
+        }
+
+        if (isCmd(obj)) {
+          var cmd = obj.cmd;
+          var fn = OP_MAP[cmd];
+          if (!fn) {
+            // invalid content command, trying to recover
+            var cmds = splitCombinedOperations(cmd);
+            if (cmds) {
+              cmd = cmds[0];
+              fn = OP_MAP[cmd];
+              // feeding other command on the next interation
+              hasNextObj = true;
+              nextObj = Cmd.get(cmds[1]);
+            }
+          }
+          assertWellFormed(fn, 'Unknown command "' + cmd + '"');
+          // TODO figure out how to type-check vararg functions
+
+          if ((cmd == 'SCN' || cmd == 'scn') && !args[args.length - 1].code) {
+            // compile tiling patterns
+            var patternName = args[args.length - 1];
+            // SCN/scn applies patterns along with normal colors
+            if (isName(patternName)) {
+              var pattern = patterns.get(patternName.name);
+              if (pattern) {
+                var dict = isStream(pattern) ? pattern.dict : pattern;
+                var typeNum = dict.get('PatternType');
+
+                if (typeNum == TILING_PATTERN) {
+                  // Create an IR of the pattern code.
+                  var depIdx = dependencyArray.length;
+                  var operatorList = this.getOperatorList(pattern,
+                      dict.get('Resources') || resources, dependencyArray);
+
+                  // Add the dependencies that are required to execute the
+                  // operatorList.
+                  insertDependency(dependencyArray.slice(depIdx));
+
+                  args = TilingPattern.getIR(operatorList, dict, args);
+                }
+                else if (typeNum == SHADING_PATTERN) {
+                  var shading = dict.get('Shading');
+                  var matrix = dict.get('Matrix');
+                  var pattern = Pattern.parseShading(shading, matrix, xref,
+                                                     res);
+                  args = pattern.getIR();
+                } else {
+                  error('Unkown PatternType ' + typeNum);
+                }
+              }
+            }
+          } else if (cmd == 'Do' && !args[0].code) {
+            // eagerly compile XForm objects
+            var name = args[0].name;
+            var xobj = xobjs.get(name);
+            if (xobj) {
+              assertWellFormed(isStream(xobj), 'XObject should be a stream');
+
+              var type = xobj.dict.get('Subtype');
+              assertWellFormed(
+                isName(type),
+                'XObject should have a Name subtype'
+              );
+
+              if ('Form' == type.name) {
+                var matrix = xobj.dict.get('Matrix');
+                var bbox = xobj.dict.get('BBox');
+
+                fnArray.push('paintFormXObjectBegin');
+                argsArray.push([matrix, bbox]);
+
+                // This adds the operatorList of the xObj to the current queue.
+                var depIdx = dependencyArray.length;
+
+                // Pass in the current `queue` object. That means the `fnArray`
+                // and the `argsArray` in this scope is reused and new commands
+                // are added to them.
+                this.getOperatorList(xobj,
+                    xobj.dict.get('Resources') || resources,
+                    dependencyArray, queue);
+
+               // Add the dependencies that are required to execute the
+               // operatorList.
+               insertDependency(dependencyArray.slice(depIdx));
+
+                fn = 'paintFormXObjectEnd';
+                args = [];
+              } else if ('Image' == type.name) {
+                buildPaintImageXObject(xobj, false);
+              } else {
+                error('Unhandled XObject subtype ' + type.name);
+              }
+            }
+          } else if (cmd == 'Tf') { // eagerly collect all fonts
+            args[0] = handleSetFont(args[0].name);
+          } else if (cmd == 'EI') {
+            buildPaintImageXObject(args[0], true);
+          }
+
+          switch (fn) {
+            // Parse the ColorSpace data to a raw format.
+            case 'setFillColorSpace':
+            case 'setStrokeColorSpace':
+              args = [ColorSpace.parseToIR(args[0], xref, resources)];
+              break;
+            case 'shadingFill':
+              var shadingRes = res.get('Shading');
+              if (!shadingRes)
+                error('No shading resource found');
+
+              var shading = shadingRes.get(args[0].name);
+              if (!shading)
+                error('No shading object found');
+
+              var shadingFill = Pattern.parseShading(shading, null, xref, res);
+              var patternIR = shadingFill.getIR();
+              args = [patternIR];
+              fn = 'shadingFill';
+              break;
+            case 'setGState':
+              var dictName = args[0];
+              var extGState = resources.get('ExtGState');
+
+              if (!isDict(extGState) || !extGState.has(dictName.name))
+                break;
+
+              var gsState = extGState.get(dictName.name);
+
+              // This array holds the converted/processed state data.
+              var gsStateObj = [];
+
+              gsState.forEach(
+                function canvasGraphicsSetGStateForEach(key, value) {
+                  switch (key) {
+                    case 'Type':
+                      break;
+                    case 'LW':
+                    case 'LC':
+                    case 'LJ':
+                    case 'ML':
+                    case 'D':
+                    case 'RI':
+                    case 'FL':
+                    case 'CA':
+                    case 'ca':
+                      gsStateObj.push([key, value]);
+                      break;
+                    case 'Font':
+                      gsStateObj.push([
+                        'Font',
+                        handleSetFont(null, value[0]),
+                        value[1]
+                      ]);
+                      break;
+                    case 'OP':
+                    case 'op':
+                    case 'OPM':
+                    case 'BG':
+                    case 'BG2':
+                    case 'UCR':
+                    case 'UCR2':
+                    case 'TR':
+                    case 'TR2':
+                    case 'HT':
+                    case 'SM':
+                    case 'SA':
+                    case 'BM':
+                    case 'SMask':
+                    case 'AIS':
+                    case 'TK':
+                      TODO('graphic state operator ' + key);
+                      break;
+                    default:
+                      warn('Unknown graphic state operator ' + key);
+                      break;
+                  }
+                }
+              );
+              args = [gsStateObj];
+              break;
+          } // switch
+
+          fnArray.push(fn);
+          argsArray.push(args);
+          args = [];
+        } else if (obj != null) {
+          assertWellFormed(args.length <= 33, 'Too many arguments');
+          args.push(obj instanceof Dict ? obj.getAll() : obj);
+        }
+      }
+
+      return queue;
+    },
+
+    extractDataStructures: function
+      partialEvaluatorExtractDataStructures(dict, baseDict,
+                                            xref, properties) {
+      // 9.10.2
+      var toUnicode = dict.get('ToUnicode') ||
+        baseDict.get('ToUnicode');
+      if (toUnicode)
+        properties.toUnicode = this.readToUnicode(toUnicode, xref, properties);
+
+      if (properties.composite) {
+        // CIDSystemInfo helps to match CID to glyphs
+        var cidSystemInfo = dict.get('CIDSystemInfo');
+        if (isDict(cidSystemInfo)) {
+          properties.cidSystemInfo = {
+            registry: cidSystemInfo.get('Registry'),
+            ordering: cidSystemInfo.get('Ordering'),
+            supplement: cidSystemInfo.get('Supplement')
+          };
+        }
+
+        var cidToGidMap = dict.get('CIDToGIDMap');
+        if (isStream(cidToGidMap))
+          properties.cidToGidMap = this.readCidToGidMap(cidToGidMap);
+      }
+
+      var flags = properties.flags;
+      var differences = [];
+      var baseEncoding = !!(flags & FontFlags.Symbolic) ?
+                         Encodings.symbolsEncoding : Encodings.StandardEncoding;
+      var hasEncoding = dict.has('Encoding');
+      if (hasEncoding) {
+        var encoding = dict.get('Encoding');
+        if (isDict(encoding)) {
+          var baseName = encoding.get('BaseEncoding');
+          if (baseName)
+            baseEncoding = Encodings[baseName.name];
+          else
+            hasEncoding = false; // base encoding was not provided
+
+          // Load the differences between the base and original
+          if (encoding.has('Differences')) {
+            var diffEncoding = encoding.get('Differences');
+            var index = 0;
+            for (var j = 0, jj = diffEncoding.length; j < jj; j++) {
+              var data = diffEncoding[j];
+              if (isNum(data))
+                index = data;
+              else
+                differences[index++] = data.name;
+            }
+          }
+        } else if (isName(encoding)) {
+          baseEncoding = Encodings[encoding.name];
+        } else {
+          error('Encoding is not a Name nor a Dict');
+        }
+      }
+
+      properties.differences = differences;
+      properties.baseEncoding = baseEncoding;
+      properties.hasEncoding = hasEncoding;
+    },
+
+    readToUnicode: function PartialEvaluator_readToUnicode(toUnicode, xref,
+                                                           properties) {
+      var cmapObj = toUnicode;
+      var charToUnicode = [];
+      if (isName(cmapObj)) {
+        var isIdentityMap = cmapObj.name.substr(0, 9) == 'Identity-';
+        if (!isIdentityMap)
+          error('ToUnicode file cmap translation not implemented');
+      } else if (isStream(cmapObj)) {
+        var tokens = [];
+        var token = '';
+        var beginArrayToken = {};
+
+        var cmap = cmapObj.getBytes(cmapObj.length);
+        for (var i = 0, ii = cmap.length; i < ii; i++) {
+          var octet = cmap[i];
+          if (octet == 0x20 || octet == 0x0D || octet == 0x0A ||
+              octet == 0x3C || octet == 0x5B || octet == 0x5D) {
+            switch (token) {
+              case 'usecmap':
+                error('usecmap is not implemented');
+                break;
+
+              case 'beginbfchar':
+              case 'beginbfrange':
+              case 'begincidchar':
+              case 'begincidrange':
+                token = '';
+                tokens = [];
+                break;
+
+              case 'endcidrange':
+              case 'endbfrange':
+                for (var j = 0, jj = tokens.length; j < jj; j += 3) {
+                  var startRange = tokens[j];
+                  var endRange = tokens[j + 1];
+                  var code = tokens[j + 2];
+                  if (code == 0xFFFF) {
+                    // CMap is broken, assuming code == startRange
+                    code = startRange;
+                  }
+                  if (isArray(code)) {
+                    var codeindex = 0;
+                    while (startRange <= endRange) {
+                      charToUnicode[startRange] = code[codeindex++];
+                      ++startRange;
+                    }
+                  } else {
+                    while (startRange <= endRange) {
+                      charToUnicode[startRange] = code++;
+                      ++startRange;
+                    }
+                  }
+                }
+                break;
+
+              case 'endcidchar':
+              case 'endbfchar':
+                for (var j = 0, jj = tokens.length; j < jj; j += 2) {
+                  var index = tokens[j];
+                  var code = tokens[j + 1];
+                  charToUnicode[index] = code;
+                }
+                break;
+
+              case '':
+                break;
+
+              default:
+                if (token[0] >= '0' && token[0] <= '9')
+                  token = parseInt(token, 10); // a number
+                tokens.push(token);
+                token = '';
+            }
+            switch (octet) {
+              case 0x5B:
+                // begin list parsing
+                tokens.push(beginArrayToken);
+                break;
+              case 0x5D:
+                // collect array items
+                var items = [], item;
+                while (tokens.length &&
+                       (item = tokens.pop()) != beginArrayToken)
+                  items.unshift(item);
+                tokens.push(items);
+                break;
+            }
+          } else if (octet == 0x3E) {
+            if (token.length) {
+              // XXX guessing chars size by checking number size in the CMap
+              if (token.length <= 2 && properties.composite)
+                properties.wideChars = false;
+
+              if (token.length <= 4) {
+                // parsing hex number
+                tokens.push(parseInt(token, 16));
+                token = '';
+              } else {
+                // parsing hex UTF-16BE numbers
+                var str = [];
+                for (var k = 0, kk = token.length; k < kk; k += 4) {
+                  var b = parseInt(token.substr(k, 4), 16);
+                  if (b <= 0x10) {
+                    k += 4;
+                    b = (b << 16) | parseInt(token.substr(k, 4), 16);
+                    b -= 0x10000;
+                    str.push(0xD800 | (b >> 10));
+                    str.push(0xDC00 | (b & 0x3FF));
+                    break;
+                  }
+                  str.push(b);
+                }
+                tokens.push(String.fromCharCode.apply(String, str));
+                token = '';
+              }
+            }
+          } else {
+            token += String.fromCharCode(octet);
+          }
+        }
+      }
+      return charToUnicode;
+    },
+    readCidToGidMap: function PartialEvaluator_readCidToGidMap(cidToGidStream) {
+      // Extract the encoding from the CIDToGIDMap
+      var glyphsData = cidToGidStream.getBytes();
+
+      // Set encoding 0 to later verify the font has an encoding
+      var result = [];
+      for (var j = 0, jj = glyphsData.length; j < jj; j++) {
+        var glyphID = (glyphsData[j++] << 8) | glyphsData[j];
+        if (glyphID == 0)
+          continue;
+
+        var code = j >> 1;
+        result[code] = glyphID;
+      }
+      return result;
+    },
+
+    extractWidths: function PartialEvaluator_extractWidths(dict,
+                                                   xref,
+                                                   descriptor,
+                                                   properties) {
+      var glyphsWidths = [];
+      var defaultWidth = 0;
+      if (properties.composite) {
+        defaultWidth = dict.get('DW') || 1000;
+
+        var widths = dict.get('W');
+        if (widths) {
+          var start = 0, end = 0;
+          for (var i = 0, ii = widths.length; i < ii; i++) {
+            var code = widths[i];
+            if (isArray(code)) {
+              for (var j = 0, jj = code.length; j < jj; j++)
+                glyphsWidths[start++] = code[j];
+              start = 0;
+            } else if (start) {
+              var width = widths[++i];
+              for (var j = start; j <= code; j++)
+                glyphsWidths[j] = width;
+              start = 0;
+            } else {
+              start = code;
+            }
+          }
+        }
+      } else {
+        var firstChar = properties.firstChar;
+        var widths = dict.get('Widths');
+        if (widths) {
+          var j = firstChar;
+          for (var i = 0, ii = widths.length; i < ii; i++)
+            glyphsWidths[j++] = widths[i];
+          defaultWidth = parseFloat(descriptor.get('MissingWidth')) || 0;
+        } else {
+          // Trying get the BaseFont metrics (see comment above).
+          var baseFontName = dict.get('BaseFont');
+          if (isName(baseFontName)) {
+            var metrics = this.getBaseFontMetrics(baseFontName.name);
+
+            glyphsWidths = metrics.widths;
+            defaultWidth = metrics.defaultWidth;
+          }
+        }
+      }
+
+      properties.defaultWidth = defaultWidth;
+      properties.widths = glyphsWidths;
+    },
+
+    getBaseFontMetrics: function PartialEvaluator_getBaseFontMetrics(name) {
+      var defaultWidth = 0, widths = [];
+      var glyphWidths = Metrics[stdFontMap[name] || name];
+      if (isNum(glyphWidths)) {
+        defaultWidth = glyphWidths;
+      } else {
+        widths = glyphWidths;
+      }
+
+      return {
+        defaultWidth: defaultWidth,
+        widths: widths
+      };
+    },
+
+    translateFont: function PartialEvaluator_translateFont(dict,
+                                                           xref,
+                                                           resources,
+                                                           dependency) {
+      var baseDict = dict;
+      var type = dict.get('Subtype');
+      assertWellFormed(isName(type), 'invalid font Subtype');
+
+      var composite = false;
+      if (type.name == 'Type0') {
+        // If font is a composite
+        //  - get the descendant font
+        //  - set the type according to the descendant font
+        //  - get the FontDescriptor from the descendant font
+        var df = dict.get('DescendantFonts');
+        if (!df)
+          return null;
+
+        dict = isArray(df) ? xref.fetchIfRef(df[0]) : df;
+
+        type = dict.get('Subtype');
+        assertWellFormed(isName(type), 'invalid font Subtype');
+        composite = true;
+      }
+      var maxCharIndex = composite ? 0xFFFF : 0xFF;
+
+      var descriptor = dict.get('FontDescriptor');
+      if (!descriptor) {
+        if (type.name == 'Type3') {
+          // FontDescriptor is only required for Type3 fonts when the document
+          // is a tagged pdf. Create a barbebones one to get by.
+          descriptor = new Dict();
+          descriptor.set('FontName', new Name(type.name));
+        } else {
+          // Before PDF 1.5 if the font was one of the base 14 fonts, having a
+          // FontDescriptor was not required.
+          // This case is here for compatibility.
+          var baseFontName = dict.get('BaseFont');
+          if (!isName(baseFontName))
+            return null;
+
+          // Using base font name as a font name.
+          baseFontName = baseFontName.name.replace(/[,_]/g, '-');
+          var metrics = this.getBaseFontMetrics(baseFontName);
+
+          // Simulating descriptor flags attribute
+          var fontNameWoStyle = baseFontName.split('-')[0];
+          var flags = (serifFonts[fontNameWoStyle] ||
+            (fontNameWoStyle.search(/serif/gi) != -1) ? FontFlags.Serif : 0) |
+            (symbolsFonts[fontNameWoStyle] ? FontFlags.Symbolic :
+            FontFlags.Nonsymbolic);
+
+          var properties = {
+            type: type.name,
+            widths: metrics.widths,
+            defaultWidth: metrics.defaultWidth,
+            flags: flags,
+            firstChar: 0,
+            lastChar: maxCharIndex
+          };
+          this.extractDataStructures(dict, dict, xref, properties);
+
+          return {
+            name: baseFontName,
+            dict: baseDict,
+            properties: properties
+          };
+        }
+      }
+
+      // According to the spec if 'FontDescriptor' is declared, 'FirstChar',
+      // 'LastChar' and 'Widths' should exist too, but some PDF encoders seem
+      // to ignore this rule when a variant of a standart font is used.
+      // TODO Fill the width array depending on which of the base font this is
+      // a variant.
+      var firstChar = dict.get('FirstChar') || 0;
+      var lastChar = dict.get('LastChar') || maxCharIndex;
+      var fontName = descriptor.get('FontName');
+      // Some bad pdf's have a string as the font name.
+      if (isString(fontName))
+        fontName = new Name(fontName);
+      assertWellFormed(isName(fontName), 'invalid font name');
+
+      var fontFile = descriptor.get('FontFile', 'FontFile2', 'FontFile3');
+      if (fontFile) {
+        if (fontFile.dict) {
+          var subtype = fontFile.dict.get('Subtype');
+          if (subtype)
+            subtype = subtype.name;
+
+          var length1 = fontFile.dict.get('Length1');
+
+          var length2 = fontFile.dict.get('Length2');
+        }
+      }
+
+      var properties = {
+        type: type.name,
+        subtype: subtype,
+        file: fontFile,
+        length1: length1,
+        length2: length2,
+        composite: composite,
+        wideChars: composite,
+        fixedPitch: false,
+        fontMatrix: dict.get('FontMatrix') || IDENTITY_MATRIX,
+        firstChar: firstChar || 0,
+        lastChar: lastChar || maxCharIndex,
+        bbox: descriptor.get('FontBBox'),
+        ascent: descriptor.get('Ascent'),
+        descent: descriptor.get('Descent'),
+        xHeight: descriptor.get('XHeight'),
+        capHeight: descriptor.get('CapHeight'),
+        flags: descriptor.get('Flags'),
+        italicAngle: descriptor.get('ItalicAngle'),
+        coded: false
+      };
+      this.extractWidths(dict, xref, descriptor, properties);
+      this.extractDataStructures(dict, baseDict, xref, properties);
+
+      if (type.name === 'Type3') {
+        properties.coded = true;
+        var charProcs = dict.get('CharProcs').getAll();
+        var fontResources = dict.get('Resources') || resources;
+        properties.charProcOperatorList = {};
+        for (var key in charProcs) {
+          var glyphStream = charProcs[key];
+          properties.charProcOperatorList[key] =
+            this.getOperatorList(glyphStream, fontResources, dependency);
+        }
+      }
+
+      return {
+        name: fontName.name,
+        dict: baseDict,
+        file: fontFile,
+        properties: properties
+      };
+    }
+  };
+
+  return PartialEvaluator;
+})();
+
+var EvalState = (function EvalStateClosure() {
+  function EvalState() {
+    // Are soft masks and alpha values shapes or opacities?
+    this.alphaIsShape = false;
+    this.fontSize = 0;
+    this.textMatrix = IDENTITY_MATRIX;
+    this.leading = 0;
+    // Start of text line (in text coordinates)
+    this.lineX = 0;
+    this.lineY = 0;
+    // Character and word spacing
+    this.charSpacing = 0;
+    this.wordSpacing = 0;
+    this.textHScale = 1;
+    // Color spaces
+    this.fillColorSpace = null;
+    this.strokeColorSpace = null;
+  }
+  EvalState.prototype = {
+  };
+  return EvalState;
+})();
+
+
+/* -*- Mode: Java; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/* vim: set shiftwidth=2 tabstop=2 autoindent cindent expandtab: */
+
+'use strict';
+
+/**
+ * Maximum time to wait for a font to be loaded by font-face rules.
+ */
+var kMaxWaitForFontFace = 1000;
+
+// Unicode Private Use Area
+var kCmapGlyphOffset = 0xE000;
+var kSizeOfGlyphArea = 0x1900;
+var kSymbolicFontGlyphOffset = 0xF000;
+
+// PDF Glyph Space Units are one Thousandth of a TextSpace Unit
+// except for Type 3 fonts
+var kPDFGlyphSpaceUnits = 1000;
+
+// Until hinting is fully supported this constant can be used
+var kHintingEnabled = false;
+
+var FontFlags = {
+  FixedPitch: 1,
+  Serif: 2,
+  Symbolic: 4,
+  Script: 8,
+  Nonsymbolic: 32,
+  Italic: 64,
+  AllCap: 65536,
+  SmallCap: 131072,
+  ForceBold: 262144
+};
+
+var Encodings = {
+  ExpertEncoding: ['', '', '', '', '', '', '', '', '', '', '', '', '', '', '',
+    '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '',
+    'space', 'exclamsmall', 'Hungarumlautsmall', '', 'dollaroldstyle',
+    'dollarsuperior', 'ampersandsmall', 'Acutesmall', 'parenleftsuperior',
+    'parenrightsuperior', 'twodotenleader', 'onedotenleader', 'comma',
+    'hyphen', 'period', 'fraction', 'zerooldstyle', 'oneoldstyle',
+    'twooldstyle', 'threeoldstyle', 'fouroldstyle', 'fiveoldstyle',
+    'sixoldstyle', 'sevenoldstyle', 'eightoldstyle', 'nineoldstyle', 'colon',
+    'semicolon', 'commasuperior', 'threequartersemdash', 'periodsuperior',
+    'questionsmall', '', 'asuperior', 'bsuperior', 'centsuperior', 'dsuperior',
+    'esuperior', '', '', 'isuperior', '', '', 'lsuperior', 'msuperior',
+    'nsuperior', 'osuperior', '', '', 'rsuperior', 'ssuperior', 'tsuperior',
+    '', 'ff', 'fi', 'fl', 'ffi', 'ffl', 'parenleftinferior', '',
+    'parenrightinferior', 'Circumflexsmall', 'hyphensuperior', 'Gravesmall',
+    'Asmall', 'Bsmall', 'Csmall', 'Dsmall', 'Esmall', 'Fsmall', 'Gsmall',
+    'Hsmall', 'Ismall', 'Jsmall', 'Ksmall', 'Lsmall', 'Msmall', 'Nsmall',
+    'Osmall', 'Psmall', 'Qsmall', 'Rsmall', 'Ssmall', 'Tsmall', 'Usmall',
+    'Vsmall', 'Wsmall', 'Xsmall', 'Ysmall', 'Zsmall', 'colonmonetary',
+    'onefitted', 'rupiah', 'Tildesmall', '', '', '', '', '', '', '', '', '',
+    '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '',
+    '', '', '', '', '', '', 'exclamdownsmall', 'centoldstyle', 'Lslashsmall',
+    '', '', 'Scaronsmall', 'Zcaronsmall', 'Dieresissmall', 'Brevesmall',
+    'Caronsmall', '', 'Dotaccentsmall', '', '', 'Macronsmall', '', '',
+    'figuredash', 'hypheninferior', '', '', 'Ogoneksmall', 'Ringsmall',
+    'Cedillasmall', '', '', '', 'onequarter', 'onehalf', 'threequarters',
+    'questiondownsmall', 'oneeighth', 'threeeighths', 'fiveeighths',
+    'seveneighths', 'onethird', 'twothirds', '', '', 'zerosuperior',
+    'onesuperior', 'twosuperior', 'threesuperior', 'foursuperior',
+    'fivesuperior', 'sixsuperior', 'sevensuperior', 'eightsuperior',
+    'ninesuperior', 'zeroinferior', 'oneinferior', 'twoinferior',
+    'threeinferior', 'fourinferior', 'fiveinferior', 'sixinferior',
+    'seveninferior', 'eightinferior', 'nineinferior', 'centinferior',
+    'dollarinferior', 'periodinferior', 'commainferior', 'Agravesmall',
+    'Aacutesmall', 'Acircumflexsmall', 'Atildesmall', 'Adieresissmall',
+    'Aringsmall', 'AEsmall', 'Ccedillasmall', 'Egravesmall', 'Eacutesmall',
+    'Ecircumflexsmall', 'Edieresissmall', 'Igravesmall', 'Iacutesmall',
+    'Icircumflexsmall', 'Idieresissmall', 'Ethsmall', 'Ntildesmall',
+    'Ogravesmall', 'Oacutesmall', 'Ocircumflexsmall', 'Otildesmall',
+    'Odieresissmall', 'OEsmall', 'Oslashsmall', 'Ugravesmall', 'Uacutesmall',
+    'Ucircumflexsmall', 'Udieresissmall', 'Yacutesmall', 'Thornsmall',
+    'Ydieresissmall'],
+  MacExpertEncoding: ['', '', '', '', '', '', '', '', '', '', '', '', '', '',
+    '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '',
+    'space', 'exclamsmall', 'Hungarumlautsmall', 'centoldstyle',
+    'dollaroldstyle', 'dollarsuperior', 'ampersandsmall', 'Acutesmall',
+    'parenleftsuperior', 'parenrightsuperior', 'twodotenleader',
+    'onedotenleader', 'comma', 'hyphen', 'period', 'fraction', 'zerooldstyle',
+    'oneoldstyle', 'twooldstyle', 'threeoldstyle', 'fouroldstyle',
+    'fiveoldstyle', 'sixoldstyle', 'sevenoldstyle', 'eightoldstyle',
+    'nineoldstyle', 'colon', 'semicolon', '', 'threequartersemdash', '',
+    'questionsmall', '', '', '', '', 'Ethsmall', '', '', 'onequarter',
+    'onehalf', 'threequarters', 'oneeighth', 'threeeighths', 'fiveeighths',
+    'seveneighths', 'onethird', 'twothirds', '', '', '', '', '', '', 'ff',
+    'fi', 'fl', 'ffi', 'ffl', 'parenleftinferior', '', 'parenrightinferior',
+    'Circumflexsmall', 'hypheninferior', 'Gravesmall', 'Asmall', 'Bsmall',
+    'Csmall', 'Dsmall', 'Esmall', 'Fsmall', 'Gsmall', 'Hsmall', 'Ismall',
+    'Jsmall', 'Ksmall', 'Lsmall', 'Msmall', 'Nsmall', 'Osmall', 'Psmall',
+    'Qsmall', 'Rsmall', 'Ssmall', 'Tsmall', 'Usmall', 'Vsmall', 'Wsmall',
+    'Xsmall', 'Ysmall', 'Zsmall', 'colonmonetary', 'onefitted', 'rupiah',
+    'Tildesmall', '', '', 'asuperior', 'centsuperior', '', '', '', '',
+    'Aacutesmall', 'Agravesmall', 'Acircumflexsmall', 'Adieresissmall',
+    'Atildesmall', 'Aringsmall', 'Ccedillasmall', 'Eacutesmall', 'Egravesmall',
+    'Ecircumflexsmall', 'Edieresissmall', 'Iacutesmall', 'Igravesmall',
+    'Icircumflexsmall', 'Idieresissmall', 'Ntildesmall', 'Oacutesmall',
+    'Ogravesmall', 'Ocircumflexsmall', 'Odieresissmall', 'Otildesmall',
+    'Uacutesmall', 'Ugravesmall', 'Ucircumflexsmall', 'Udieresissmall', '',
+    'eightsuperior', 'fourinferior', 'threeinferior', 'sixinferior',
+    'eightinferior', 'seveninferior', 'Scaronsmall', '', 'centinferior',
+    'twoinferior', '', 'Dieresissmall', '', 'Caronsmall', 'osuperior',
+    'fiveinferior', '', 'commainferior', 'periodinferior', 'Yacutesmall', '',
+    'dollarinferior', '', 'Thornsmall', '', 'nineinferior', 'zeroinferior',
+    'Zcaronsmall', 'AEsmall', 'Oslashsmall', 'questiondownsmall',
+    'oneinferior', 'Lslashsmall', '', '', '', '', '', '', 'Cedillasmall', '',
+    '', '', '', '', 'OEsmall', 'figuredash', 'hyphensuperior', '', '', '', '',
+    'exclamdownsmall', '', 'Ydieresissmall', '', 'onesuperior', 'twosuperior',
+    'threesuperior', 'foursuperior', 'fivesuperior', 'sixsuperior',
+    'sevensuperior', 'ninesuperior', 'zerosuperior', '', 'esuperior',
+    'rsuperior', 'tsuperior', '', '', 'isuperior', 'ssuperior', 'dsuperior',
+    '', '', '', '', '', 'lsuperior', 'Ogoneksmall', 'Brevesmall',
+    'Macronsmall', 'bsuperior', 'nsuperior', 'msuperior', 'commasuperior',
+    'periodsuperior', 'Dotaccentsmall', 'Ringsmall'],
+  MacRomanEncoding: ['', '', '', '', '', '', '', '', '', '', '', '', '', '', '',
+    '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '',
+    'space', 'exclam', 'quotedbl', 'numbersign', 'dollar', 'percent',
+    'ampersand', 'quotesingle', 'parenleft', 'parenright', 'asterisk', 'plus',
+    'comma', 'hyphen', 'period', 'slash', 'zero', 'one', 'two', 'three',
+    'four', 'five', 'six', 'seven', 'eight', 'nine', 'colon', 'semicolon',
+    'less', 'equal', 'greater', 'question', 'at', 'A', 'B', 'C', 'D', 'E', 'F',
+    'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U',
+    'V', 'W', 'X', 'Y', 'Z', 'bracketleft', 'backslash', 'bracketright',
+    'asciicircum', 'underscore', 'grave', 'a', 'b', 'c', 'd', 'e', 'f', 'g',
+    'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v',
+    'w', 'x', 'y', 'z', 'braceleft', 'bar', 'braceright', 'asciitilde', '',
+    'Adieresis', 'Aring', 'Ccedilla', 'Eacute', 'Ntilde', 'Odieresis',
+    'Udieresis', 'aacute', 'agrave', 'acircumflex', 'adieresis', 'atilde',
+    'aring', 'ccedilla', 'eacute', 'egrave', 'ecircumflex', 'edieresis',
+    'iacute', 'igrave', 'icircumflex', 'idieresis', 'ntilde', 'oacute',
+    'ograve', 'ocircumflex', 'odieresis', 'otilde', 'uacute', 'ugrave',
+    'ucircumflex', 'udieresis', 'dagger', 'degree', 'cent', 'sterling',
+    'section', 'bullet', 'paragraph', 'germandbls', 'registered', 'copyright',
+    'trademark', 'acute', 'dieresis', 'notequal', 'AE', 'Oslash', 'infinity',
+    'plusminus', 'lessequal', 'greaterequal', 'yen', 'mu', 'partialdiff',
+    'summation', 'product', 'pi', 'integral', 'ordfeminine', 'ordmasculine',
+    'Omega', 'ae', 'oslash', 'questiondown', 'exclamdown', 'logicalnot',
+    'radical', 'florin', 'approxequal', 'Delta', 'guillemotleft',
+    'guillemotright', 'ellipsis', '', 'Agrave', 'Atilde', 'Otilde', 'OE',
+    'oe', 'endash', 'emdash', 'quotedblleft', 'quotedblright', 'quoteleft',
+    'quoteright', 'divide', 'lozenge', 'ydieresis', 'Ydieresis', 'fraction',
+    'currency', 'guilsinglleft', 'guilsinglright', 'fi', 'fl', 'daggerdbl',
+    'periodcentered', 'quotesinglbase', 'quotedblbase', 'perthousand',
+    'Acircumflex', 'Ecircumflex', 'Aacute', 'Edieresis', 'Egrave', 'Iacute',
+    'Icircumflex', 'Idieresis', 'Igrave', 'Oacute', 'Ocircumflex', 'apple',
+    'Ograve', 'Uacute', 'Ucircumflex', 'Ugrave', 'dotlessi', 'circumflex',
+    'tilde', 'macron', 'breve', 'dotaccent', 'ring', 'cedilla', 'hungarumlaut',
+    'ogonek', 'caron'],
+  StandardEncoding: ['', '', '', '', '', '', '', '', '', '', '', '', '', '', '',
+    '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '',
+    'space', 'exclam', 'quotedbl', 'numbersign', 'dollar', 'percent',
+    'ampersand', 'quoteright', 'parenleft', 'parenright', 'asterisk', 'plus',
+    'comma', 'hyphen', 'period', 'slash', 'zero', 'one', 'two', 'three',
+    'four', 'five', 'six', 'seven', 'eight', 'nine', 'colon', 'semicolon',
+    'less', 'equal', 'greater', 'question', 'at', 'A', 'B', 'C', 'D', 'E', 'F',
+    'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U',
+    'V', 'W', 'X', 'Y', 'Z', 'bracketleft', 'backslash', 'bracketright',
+    'asciicircum', 'underscore', 'quoteleft', 'a', 'b', 'c', 'd', 'e', 'f',
+    'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u',
+    'v', 'w', 'x', 'y', 'z', 'braceleft', 'bar', 'braceright', 'asciitilde',
+    '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '',
+    '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', 'exclamdown',
+    'cent', 'sterling', 'fraction', 'yen', 'florin', 'section', 'currency',
+    'quotesingle', 'quotedblleft', 'guillemotleft', 'guilsinglleft',
+    'guilsinglright', 'fi', 'fl', '', 'endash', 'dagger', 'daggerdbl',
+    'periodcentered', '', 'paragraph', 'bullet', 'quotesinglbase',
+    'quotedblbase', 'quotedblright', 'guillemotright', 'ellipsis',
+    'perthousand', '', 'questiondown', '', 'grave', 'acute', 'circumflex',
+    'tilde', 'macron', 'breve', 'dotaccent', 'dieresis', '', 'ring', 'cedilla',
+    '', 'hungarumlaut', 'ogonek', 'caron', 'emdash', '', '', '', '', '', '',
+    '', '', '', '', '', '', '', '', '', '', 'AE', '', 'ordfeminine', '', '',
+    '', '', 'Lslash', 'Oslash', 'OE', 'ordmasculine', '', '', '', '', '', 'ae',
+    '', '', '', 'dotlessi', '', '', 'lslash', 'oslash', 'oe', 'germandbls'],
+  WinAnsiEncoding: ['', '', '', '', '', '', '', '', '', '', '', '', '', '', '',
+    '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '',
+    'space', 'exclam', 'quotedbl', 'numbersign', 'dollar', 'percent',
+    'ampersand', 'quotesingle', 'parenleft', 'parenright', 'asterisk', 'plus',
+    'comma', 'hyphen', 'period', 'slash', 'zero', 'one', 'two', 'three',
+    'four', 'five', 'six', 'seven', 'eight', 'nine', 'colon', 'semicolon',
+    'less', 'equal', 'greater', 'question', 'at', 'A', 'B', 'C', 'D', 'E', 'F',
+    'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U',
+    'V', 'W', 'X', 'Y', 'Z', 'bracketleft', 'backslash', 'bracketright',
+    'asciicircum', 'underscore', 'grave', 'a', 'b', 'c', 'd', 'e', 'f', 'g',
+    'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v',
+    'w', 'x', 'y', 'z', 'braceleft', 'bar', 'braceright', 'asciitilde',
+    'bullet', 'Euro', 'bullet', 'quotesinglbase', 'florin', 'quotedblbase',
+    'ellipsis', 'dagger', 'daggerdbl', 'circumflex', 'perthousand', 'Scaron',
+    'guilsinglleft', 'OE', 'bullet', 'Zcaron', 'bullet', 'bullet', 'quoteleft',
+    'quoteright', 'quotedblleft', 'quotedblright', 'bullet', 'endash',
+    'emdash', 'tilde', 'trademark', 'scaron', 'guilsinglright', 'oe', 'bullet',
+    'zcaron', 'Ydieresis', '', 'exclamdown', 'cent', 'sterling',
+    'currency', 'yen', 'brokenbar', 'section', 'dieresis', 'copyright',
+    'ordfeminine', 'guillemotleft', 'logicalnot', 'hyphen', 'registered',
+    'macron', 'degree', 'plusminus', 'twosuperior', 'threesuperior', 'acute',
+    'mu', 'paragraph', 'periodcentered', 'cedilla', 'onesuperior',
+    'ordmasculine', 'guillemotright', 'onequarter', 'onehalf', 'threequarters',
+    'questiondown', 'Agrave', 'Aacute', 'Acircumflex', 'Atilde', 'Adieresis',
+    'Aring', 'AE', 'Ccedilla', 'Egrave', 'Eacute', 'Ecircumflex', 'Edieresis',
+    'Igrave', 'Iacute', 'Icircumflex', 'Idieresis', 'Eth', 'Ntilde', 'Ograve',
+    'Oacute', 'Ocircumflex', 'Otilde', 'Odieresis', 'multiply', 'Oslash',
+    'Ugrave', 'Uacute', 'Ucircumflex', 'Udieresis', 'Yacute', 'Thorn',
+    'germandbls', 'agrave', 'aacute', 'acircumflex', 'atilde', 'adieresis',
+    'aring', 'ae', 'ccedilla', 'egrave', 'eacute', 'ecircumflex', 'edieresis',
+    'igrave', 'iacute', 'icircumflex', 'idieresis', 'eth', 'ntilde', 'ograve',
+    'oacute', 'ocircumflex', 'otilde', 'odieresis', 'divide', 'oslash',
+    'ugrave', 'uacute', 'ucircumflex', 'udieresis', 'yacute', 'thorn',
+    'ydieresis'],
+  symbolsEncoding: ['', '', '', '', '', '', '', '', '', '', '', '', '', '', '',
+    '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '',
+    'space', 'exclam', 'universal', 'numbersign', 'existential', 'percent',
+    'ampersand', 'suchthat', 'parenleft', 'parenright', 'asteriskmath', 'plus',
+    'comma', 'minus', 'period', 'slash', 'zero', 'one', 'two', 'three', 'four',
+    'five', 'six', 'seven', 'eight', 'nine', 'colon', 'semicolon', 'less',
+    'equal', 'greater', 'question', 'congruent', 'Alpha', 'Beta', 'Chi',
+    'Delta', 'Epsilon', 'Phi', 'Gamma', 'Eta', 'Iota', 'theta1', 'Kappa',
+    'Lambda', 'Mu', 'Nu', 'Omicron', 'Pi', 'Theta', 'Rho', 'Sigma', 'Tau',
+    'Upsilon', 'sigma1', 'Omega', 'Xi', 'Psi', 'Zeta', 'bracketleft',
+    'therefore', 'bracketright', 'perpendicular', 'underscore', 'radicalex',
+    'alpha', 'beta', 'chi', 'delta', 'epsilon', 'phi', 'gamma', 'eta', 'iota',
+    'phi1', 'kappa', 'lambda', 'mu', 'nu', 'omicron', 'pi', 'theta', 'rho',
+    'sigma', 'tau', 'upsilon', 'omega1', 'omega', 'xi', 'psi', 'zeta',
+    'braceleft', 'bar', 'braceright', 'similar', '', '', '', '', '', '', '',
+    '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '',
+    '', '', '', '', '', '', '', 'Euro', 'Upsilon1', 'minute', 'lessequal',
+    'fraction', 'infinity', 'florin', 'club', 'diamond', 'heart', 'spade',
+    'arrowboth', 'arrowleft', 'arrowup', 'arrowright', 'arrowdown', 'degree',
+    'plusminus', 'second', 'greaterequal', 'multiply', 'proportional',
+    'partialdiff', 'bullet', 'divide', 'notequal', 'equivalence',
+    'approxequal', 'ellipsis', 'arrowvertex', 'arrowhorizex', 'carriagereturn',
+    'aleph', 'Ifraktur', 'Rfraktur', 'weierstrass', 'circlemultiply',
+    'circleplus', 'emptyset', 'intersection', 'union', 'propersuperset',
+    'reflexsuperset', 'notsubset', 'propersubset', 'reflexsubset', 'element',
+    'notelement', 'angle', 'gradient', 'registerserif', 'copyrightserif',
+    'trademarkserif', 'product', 'radical', 'dotmath', 'logicalnot',
+    'logicaland', 'logicalor', 'arrowdblboth', 'arrowdblleft', 'arrowdblup',
+    'arrowdblright', 'arrowdbldown', 'lozenge', 'angleleft', 'registersans',
+    'copyrightsans', 'trademarksans', 'summation', 'parenlefttp',
+    'parenleftex', 'parenleftbt', 'bracketlefttp', 'bracketleftex',
+    'bracketleftbt', 'bracelefttp', 'braceleftmid', 'braceleftbt', 'braceex',
+    '', 'angleright', 'integral', 'integraltp', 'integralex', 'integralbt',
+    'parenrighttp', 'parenrightex', 'parenrightbt', 'bracketrighttp',
+    'bracketrightex', 'bracketrightbt', 'bracerighttp', 'bracerightmid',
+    'bracerightbt'],
+  zapfDingbatsEncoding: ['', '', '', '', '', '', '', '', '', '', '', '', '', '',
+    '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '',
+    'space', 'a1', 'a2', 'a202', 'a3', 'a4', 'a5', 'a119', 'a118', 'a117',
+    'a11', 'a12', 'a13', 'a14', 'a15', 'a16', 'a105', 'a17', 'a18', 'a19',
+    'a20', 'a21', 'a22', 'a23', 'a24', 'a25', 'a26', 'a27', 'a28', 'a6', 'a7',
+    'a8', 'a9', 'a10', 'a29', 'a30', 'a31', 'a32', 'a33', 'a34', 'a35', 'a36',
+    'a37', 'a38', 'a39', 'a40', 'a41', 'a42', 'a43', 'a44', 'a45', 'a46',
+    'a47', 'a48', 'a49', 'a50', 'a51', 'a52', 'a53', 'a54', 'a55', 'a56',
+    'a57', 'a58', 'a59', 'a60', 'a61', 'a62', 'a63', 'a64', 'a65', 'a66',
+    'a67', 'a68', 'a69', 'a70', 'a71', 'a72', 'a73', 'a74', 'a203', 'a75',
+    'a204', 'a76', 'a77', 'a78', 'a79', 'a81', 'a82', 'a83', 'a84', 'a97',
+    'a98', 'a99', 'a100', '', '', '', '', '', '', '', '', '', '', '', '', '',
+    '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '',
+    '', '', 'a101', 'a102', 'a103', 'a104', 'a106', 'a107', 'a108', 'a112',
+    'a111', 'a110', 'a109', 'a120', 'a121', 'a122', 'a123', 'a124', 'a125',
+    'a126', 'a127', 'a128', 'a129', 'a130', 'a131', 'a132', 'a133', 'a134',
+    'a135', 'a136', 'a137', 'a138', 'a139', 'a140', 'a141', 'a142', 'a143',
+    'a144', 'a145', 'a146', 'a147', 'a148', 'a149', 'a150', 'a151', 'a152',
+    'a153', 'a154', 'a155', 'a156', 'a157', 'a158', 'a159', 'a160', 'a161',
+    'a163', 'a164', 'a196', 'a165', 'a192', 'a166', 'a167', 'a168', 'a169',
+    'a170', 'a171', 'a172', 'a173', 'a162', 'a174', 'a175', 'a176', 'a177',
+    'a178', 'a179', 'a193', 'a180', 'a199', 'a181', 'a200', 'a182', '', 'a201',
+    'a183', 'a184', 'a197', 'a185', 'a194', 'a198', 'a186', 'a195', 'a187',
+    'a188', 'a189', 'a190', 'a191']
+};
+
+/**
+ * Hold a map of decoded fonts and of the standard fourteen Type1
+ * fonts and their acronyms.
+ */
+var stdFontMap = {
+  'ArialNarrow': 'Helvetica',
+  'ArialNarrow-Bold': 'Helvetica-Bold',
+  'ArialNarrow-BoldItalic': 'Helvetica-BoldOblique',
+  'ArialNarrow-Italic': 'Helvetica-Oblique',
+  'ArialBlack': 'Helvetica',
+  'ArialBlack-Bold': 'Helvetica-Bold',
+  'ArialBlack-BoldItalic': 'Helvetica-BoldOblique',
+  'ArialBlack-Italic': 'Helvetica-Oblique',
+  'Arial': 'Helvetica',
+  'Arial-Bold': 'Helvetica-Bold',
+  'Arial-BoldItalic': 'Helvetica-BoldOblique',
+  'Arial-Italic': 'Helvetica-Oblique',
+  'Arial-BoldItalicMT': 'Helvetica-BoldOblique',
+  'Arial-BoldMT': 'Helvetica-Bold',
+  'Arial-ItalicMT': 'Helvetica-Oblique',
+  'ArialMT': 'Helvetica',
+  'Courier-Bold': 'Courier-Bold',
+  'Courier-BoldItalic': 'Courier-BoldOblique',
+  'Courier-Italic': 'Courier-Oblique',
+  'CourierNew': 'Courier',
+  'CourierNew-Bold': 'Courier-Bold',
+  'CourierNew-BoldItalic': 'Courier-BoldOblique',
+  'CourierNew-Italic': 'Courier-Oblique',
+  'CourierNewPS-BoldItalicMT': 'Courier-BoldOblique',
+  'CourierNewPS-BoldMT': 'Courier-Bold',
+  'CourierNewPS-ItalicMT': 'Courier-Oblique',
+  'CourierNewPSMT': 'Courier',
+  'Helvetica-Bold': 'Helvetica-Bold',
+  'Helvetica-BoldItalic': 'Helvetica-BoldOblique',
+  'Helvetica-Italic': 'Helvetica-Oblique',
+  'Symbol-Bold': 'Symbol',
+  'Symbol-BoldItalic': 'Symbol',
+  'Symbol-Italic': 'Symbol',
+  'TimesNewRoman': 'Times-Roman',
+  'TimesNewRoman-Bold': 'Times-Bold',
+  'TimesNewRoman-BoldItalic': 'Times-BoldItalic',
+  'TimesNewRoman-Italic': 'Times-Italic',
+  'TimesNewRomanPS': 'Times-Roman',
+  'TimesNewRomanPS-Bold': 'Times-Bold',
+  'TimesNewRomanPS-BoldItalic': 'Times-BoldItalic',
+  'TimesNewRomanPS-BoldItalicMT': 'Times-BoldItalic',
+  'TimesNewRomanPS-BoldMT': 'Times-Bold',
+  'TimesNewRomanPS-Italic': 'Times-Italic',
+  'TimesNewRomanPS-ItalicMT': 'Times-Italic',
+  'TimesNewRomanPSMT': 'Times-Roman',
+  'TimesNewRomanPSMT-Bold': 'Times-Bold',
+  'TimesNewRomanPSMT-BoldItalic': 'Times-BoldItalic',
+  'TimesNewRomanPSMT-Italic': 'Times-Italic'
+};
+
+/**
+ * Holds the map of the non-standard fonts that might be included as a standard
+ * fonts without glyph data.
+ */
+var nonStdFontMap = {
+  'ComicSansMS': 'Comic Sans MS',
+  'ComicSansMS-Bold': 'Comic Sans MS-Bold',
+  'ComicSansMS-BoldItalic': 'Comic Sans MS-BoldItalic',
+  'ComicSansMS-Italic': 'Comic Sans MS-Italic',
+  'LucidaConsole': 'Courier',
+  'LucidaConsole-Bold': 'Courier-Bold',
+  'LucidaConsole-BoldItalic': 'Courier-BoldOblique',
+  'LucidaConsole-Italic': 'Courier-Oblique'
+};
+
+var serifFonts = {
+  'Adobe Jenson': true, 'Adobe Text': true, 'Albertus': true,
+  'Aldus': true, 'Alexandria': true, 'Algerian': true,
+  'American Typewriter': true, 'Antiqua': true, 'Apex': true,
+  'Arno': true, 'Aster': true, 'Aurora': true,
+  'Baskerville': true, 'Bell': true, 'Bembo': true,
+  'Bembo Schoolbook': true, 'Benguiat': true, 'Berkeley Old Style': true,
+  'Bernhard Modern': true, 'Berthold City': true, 'Bodoni': true,
+  'Bauer Bodoni': true, 'Book Antiqua': true, 'Bookman': true,
+  'Bordeaux Roman': true, 'Californian FB': true, 'Calisto': true,
+  'Calvert': true, 'Capitals': true, 'Cambria': true,
+  'Cartier': true, 'Caslon': true, 'Catull': true,
+  'Centaur': true, 'Century Old Style': true, 'Century Schoolbook': true,
+  'Chaparral': true, 'Charis SIL': true, 'Cheltenham': true,
+  'Cholla Slab': true, 'Clarendon': true, 'Clearface': true,
+  'Cochin': true, 'Colonna': true, 'Computer Modern': true,
+  'Concrete Roman': true, 'Constantia': true, 'Cooper Black': true,
+  'Corona': true, 'Ecotype': true, 'Egyptienne': true,
+  'Elephant': true, 'Excelsior': true, 'Fairfield': true,
+  'FF Scala': true, 'Folkard': true, 'Footlight': true,
+  'FreeSerif': true, 'Friz Quadrata': true, 'Garamond': true,
+  'Gentium': true, 'Georgia': true, 'Gloucester': true,
+  'Goudy Old Style': true, 'Goudy Schoolbook': true, 'Goudy Pro Font': true,
+  'Granjon': true, 'Guardian Egyptian': true, 'Heather': true,
+  'Hercules': true, 'High Tower Text': true, 'Hiroshige': true,
+  'Hoefler Text': true, 'Humana Serif': true, 'Imprint': true,
+  'Ionic No. 5': true, 'Janson': true, 'Joanna': true,
+  'Korinna': true, 'Lexicon': true, 'Liberation Serif': true,
+  'Linux Libertine': true, 'Literaturnaya': true, 'Lucida': true,
+  'Lucida Bright': true, 'Melior': true, 'Memphis': true,
+  'Miller': true, 'Minion': true, 'Modern': true,
+  'Mona Lisa': true, 'Mrs Eaves': true, 'MS Serif': true,
+  'Museo Slab': true, 'New York': true, 'Nimbus Roman': true,
+  'NPS Rawlinson Roadway': true, 'Palatino': true, 'Perpetua': true,
+  'Plantin': true, 'Plantin Schoolbook': true, 'Playbill': true,
+  'Poor Richard': true, 'Rawlinson Roadway': true, 'Renault': true,
+  'Requiem': true, 'Rockwell': true, 'Roman': true,
+  'Rotis Serif': true, 'Sabon': true, 'Scala': true,
+  'Seagull': true, 'Sistina': true, 'Souvenir': true,
+  'STIX': true, 'Stone Informal': true, 'Stone Serif': true,
+  'Sylfaen': true, 'Times': true, 'Trajan': true,
+  'Trinité': true, 'Trump Mediaeval': true, 'Utopia': true,
+  'Vale Type': true, 'Bitstream Vera': true, 'Vera Serif': true,
+  'Versailles': true, 'Wanted': true, 'Weiss': true,
+  'Wide Latin': true, 'Windsor': true, 'XITS': true
+};
+
+var symbolsFonts = {
+  'Dingbats': true, 'Symbol': true, 'ZapfDingbats': true
+};
+
+// Some characters, e.g. copyrightserif, mapped to the private use area and
+// might not be displayed using standard fonts. Mapping/hacking well-known chars
+// to the similar equivalents in the normal characters range.
+function mapPrivateUseChars(code) {
+  switch (code) {
+    case 0xF8E9: // copyrightsans
+    case 0xF6D9: // copyrightserif
+      return 0x00A9; // copyright
+    default:
+      return code;
+  }
+}
+
+var FontLoader = {
+  listeningForFontLoad: false,
+
+  bind: function fontLoaderBind(fonts, callback) {
+    function checkFontsLoaded() {
+      for (var i = 0, ii = fonts.length; i < ii; i++) {
+        var fontObj = fonts[i];
+        if (fontObj.loading) {
+          return false;
+        }
+      }
+
+      PdfJS_window.document.documentElement.removeEventListener(
+        'pdfjsFontLoad', checkFontsLoaded, false);
+
+      callback();
+      return true;
+    }
+
+    var rules = [], names = [], fontsToLoad = [];
+    var fontCreateTimer = 0;
+
+    for (var i = 0, ii = fonts.length; i < ii; i++) {
+      var font = fonts[i];
+
+      // Add the font to the DOM only once or skip if the font
+      // is already loaded.
+      if (font.attached || font.loading == false) {
+        continue;
+      }
+      font.attached = true;
+
+      fontsToLoad.push(font);
+
+      var str = '';
+      var data = font.data;
+      if (data) {
+        var length = data.length;
+        for (var j = 0; j < length; j++)
+          str += String.fromCharCode(data[j]);
+
+        var rule = font.bindDOM(str);
+        if (rule) {
+          rules.push(rule);
+          names.push(font.loadedName);
+        }
+      }
+    }
+
+    this.listeningForFontLoad = false;
+    if (!isWorker && rules.length) {
+      FontLoader.prepareFontLoadEvent(rules, names, fontsToLoad);
+    }
+
+    if (!checkFontsLoaded()) {
+      PdfJS_window.document.documentElement.addEventListener(
+        'pdfjsFontLoad', checkFontsLoaded, false);
+    }
+  },
+  // Set things up so that at least one pdfjsFontLoad event is
+  // dispatched when all the @font-face |rules| for |names| have been
+  // loaded in a subdocument.  It's expected that the load of |rules|
+  // has already started in this (outer) document, so that they should
+  // be ordered before the load in the subdocument.
+  prepareFontLoadEvent: function fontLoaderPrepareFontLoadEvent(rules, names,
+                                                                fonts) {
+      /** Hack begin */
+      // There's no event when a font has finished downloading so the
+      // following code is a dirty hack to 'guess' when a font is
+      // ready.  This code will be obsoleted by Mozilla bug 471915.
+      //
+      // The only reliable way to know if a font is loaded in Gecko
+      // (at the moment) is document.onload in a document with
+      // a @font-face rule defined in a "static" stylesheet.  We use a
+      // subdocument in an <iframe>, set up properly, to know when
+      // our @font-face rule was loaded.  However, the subdocument and
+      // outer document can't share CSS rules, so the inner document
+      // is only part of the puzzle.  The second piece is an invisible
+      // div created in order to force loading of the @font-face in
+      // the *outer* document.  (The font still needs to be loaded for
+      // its metrics, for reflow).  We create the div first for the
+      // outer document, then create the iframe.  Unless something
+      // goes really wonkily, we expect the @font-face for the outer
+      // document to be processed before the inner.  That's still
+      // fragile, but seems to work in practice.
+      //
+      // The postMessage() hackery was added to work around chrome bug
+      // 82402.
+
+      // Validate the names parameter -- the values can used to construct HTML.
+      if (!/^\w+$/.test(names.join(''))) {
+        error('Invalid font name(s): ' + names.join());
+
+        // Normally the error-function throws. But if a malicious code
+        // intercepts the function call then the return is needed.
+        return;
+      }
+
+      var div = PdfJS_window.document.createElement('div');
+      div.setAttribute('style',
+                       'visibility: hidden;' +
+                       'width: 10px; height: 10px;' +
+                       'position: absolute; top: 0px; left: 0px;');
+      var html = '';
+      for (var i = 0, ii = names.length; i < ii; ++i) {
+        html += '<span style="font-family:' + names[i] + '">Hi</span>';
+      }
+      div.innerHTML = html;
+      PdfJS_window.document.body.appendChild(div);
+
+      if (!this.listeningForFontLoad) {
+        PdfJS_window.window.addEventListener(
+          'message',
+          function fontLoaderMessage(e) {
+            var fontNames = JSON.parse(e.data);
+            for (var i = 0, ii = fonts.length; i < ii; ++i) {
+              var font = fonts[i];
+              font.loading = false;
+            }
+            var evt = PdfJS_window.document.createEvent('Events');
+            evt.initEvent('pdfjsFontLoad', true, false);
+            PdfJS_window.document.documentElement.dispatchEvent(evt);
+          },
+          false);
+        this.listeningForFontLoad = true;
+      }
+
+      // XXX we should have a time-out here too, and maybe fire
+      // pdfjsFontLoadFailed?
+      var src = '<!DOCTYPE HTML><html><head>';
+      src += '<style type="text/css">';
+      for (var i = 0, ii = rules.length; i < ii; ++i) {
+        src += rules[i];
+      }
+      src += '</style>';
+      src += '<script type="application/javascript">';
+      var fontNamesArray = '';
+      for (var i = 0, ii = names.length; i < ii; ++i) {
+        fontNamesArray += '"' + names[i] + '", ';
+      }
+      src += '  var fontNames=[' + fontNamesArray + '];\n';
+      src += '  PdfJS_window.window.onload = function fontLoaderOnload() {\n';
+      src += '    parent.postMessage(JSON.stringify(fontNames), "*");\n';
+      src += '  }';
+      // Hack so the end script tag isn't counted if this is inline JS.
+      src += '</scr' + 'ipt></head><body>';
+      for (var i = 0, ii = names.length; i < ii; ++i) {
+        src += '<p style="font-family:\'' + names[i] + '\'">Hi</p>';
+      }
+      src += '</body></html>';
+      var frame = PdfJS_window.document.createElement('iframe');
+      frame.src = 'data:text/html,' + src;
+      frame.setAttribute('style',
+                         'visibility: hidden;' +
+                         'width: 10px; height: 10px;' +
+                         'position: absolute; top: 0px; left: 0px;');
+      PdfJS_window.document.body.appendChild(frame);
+      /** Hack end */
+  }
+};
+
+var UnicodeRanges = [
+  { 'begin': 0x0000, 'end': 0x007F }, // Basic Latin
+  { 'begin': 0x0080, 'end': 0x00FF }, // Latin-1 Supplement
+  { 'begin': 0x0100, 'end': 0x017F }, // Latin Extended-A
+  { 'begin': 0x0180, 'end': 0x024F }, // Latin Extended-B
+  { 'begin': 0x0250, 'end': 0x02AF }, // IPA Extensions
+  { 'begin': 0x02B0, 'end': 0x02FF }, // Spacing Modifier Letters
+  { 'begin': 0x0300, 'end': 0x036F }, // Combining Diacritical Marks
+  { 'begin': 0x0370, 'end': 0x03FF }, // Greek and Coptic
+  { 'begin': 0x2C80, 'end': 0x2CFF }, // Coptic
+  { 'begin': 0x0400, 'end': 0x04FF }, // Cyrillic
+  { 'begin': 0x0530, 'end': 0x058F }, // Armenian
+  { 'begin': 0x0590, 'end': 0x05FF }, // Hebrew
+  { 'begin': 0xA500, 'end': 0xA63F }, // Vai
+  { 'begin': 0x0600, 'end': 0x06FF }, // Arabic
+  { 'begin': 0x07C0, 'end': 0x07FF }, // NKo
+  { 'begin': 0x0900, 'end': 0x097F }, // Devanagari
+  { 'begin': 0x0980, 'end': 0x09FF }, // Bengali
+  { 'begin': 0x0A00, 'end': 0x0A7F }, // Gurmukhi
+  { 'begin': 0x0A80, 'end': 0x0AFF }, // Gujarati
+  { 'begin': 0x0B00, 'end': 0x0B7F }, // Oriya
+  { 'begin': 0x0B80, 'end': 0x0BFF }, // Tamil
+  { 'begin': 0x0C00, 'end': 0x0C7F }, // Telugu
+  { 'begin': 0x0C80, 'end': 0x0CFF }, // Kannada
+  { 'begin': 0x0D00, 'end': 0x0D7F }, // Malayalam
+  { 'begin': 0x0E00, 'end': 0x0E7F }, // Thai
+  { 'begin': 0x0E80, 'end': 0x0EFF }, // Lao
+  { 'begin': 0x10A0, 'end': 0x10FF }, // Georgian
+  { 'begin': 0x1B00, 'end': 0x1B7F }, // Balinese
+  { 'begin': 0x1100, 'end': 0x11FF }, // Hangul Jamo
+  { 'begin': 0x1E00, 'end': 0x1EFF }, // Latin Extended Additional
+  { 'begin': 0x1F00, 'end': 0x1FFF }, // Greek Extended
+  { 'begin': 0x2000, 'end': 0x206F }, // General Punctuation
+  { 'begin': 0x2070, 'end': 0x209F }, // Superscripts And Subscripts
+  { 'begin': 0x20A0, 'end': 0x20CF }, // Currency Symbol
+  { 'begin': 0x20D0, 'end': 0x20FF }, // Combining Diacritical Marks For Symbols
+  { 'begin': 0x2100, 'end': 0x214F }, // Letterlike Symbols
+  { 'begin': 0x2150, 'end': 0x218F }, // Number Forms
+  { 'begin': 0x2190, 'end': 0x21FF }, // Arrows
+  { 'begin': 0x2200, 'end': 0x22FF }, // Mathematical Operators
+  { 'begin': 0x2300, 'end': 0x23FF }, // Miscellaneous Technical
+  { 'begin': 0x2400, 'end': 0x243F }, // Control Pictures
+  { 'begin': 0x2440, 'end': 0x245F }, // Optical Character Recognition
+  { 'begin': 0x2460, 'end': 0x24FF }, // Enclosed Alphanumerics
+  { 'begin': 0x2500, 'end': 0x257F }, // Box Drawing
+  { 'begin': 0x2580, 'end': 0x259F }, // Block Elements
+  { 'begin': 0x25A0, 'end': 0x25FF }, // Geometric Shapes
+  { 'begin': 0x2600, 'end': 0x26FF }, // Miscellaneous Symbols
+  { 'begin': 0x2700, 'end': 0x27BF }, // Dingbats
+  { 'begin': 0x3000, 'end': 0x303F }, // CJK Symbols And Punctuation
+  { 'begin': 0x3040, 'end': 0x309F }, // Hiragana
+  { 'begin': 0x30A0, 'end': 0x30FF }, // Katakana
+  { 'begin': 0x3100, 'end': 0x312F }, // Bopomofo
+  { 'begin': 0x3130, 'end': 0x318F }, // Hangul Compatibility Jamo
+  { 'begin': 0xA840, 'end': 0xA87F }, // Phags-pa
+  { 'begin': 0x3200, 'end': 0x32FF }, // Enclosed CJK Letters And Months
+  { 'begin': 0x3300, 'end': 0x33FF }, // CJK Compatibility
+  { 'begin': 0xAC00, 'end': 0xD7AF }, // Hangul Syllables
+  { 'begin': 0xD800, 'end': 0xDFFF }, // Non-Plane 0 *
+  { 'begin': 0x10900, 'end': 0x1091F }, // Phoenicia
+  { 'begin': 0x4E00, 'end': 0x9FFF }, // CJK Unified Ideographs
+  { 'begin': 0xE000, 'end': 0xF8FF }, // Private Use Area (plane 0)
+  { 'begin': 0x31C0, 'end': 0x31EF }, // CJK Strokes
+  { 'begin': 0xFB00, 'end': 0xFB4F }, // Alphabetic Presentation Forms
+  { 'begin': 0xFB50, 'end': 0xFDFF }, // Arabic Presentation Forms-A
+  { 'begin': 0xFE20, 'end': 0xFE2F }, // Combining Half Marks
+  { 'begin': 0xFE10, 'end': 0xFE1F }, // Vertical Forms
+  { 'begin': 0xFE50, 'end': 0xFE6F }, // Small Form Variants
+  { 'begin': 0xFE70, 'end': 0xFEFF }, // Arabic Presentation Forms-B
+  { 'begin': 0xFF00, 'end': 0xFFEF }, // Halfwidth And Fullwidth Forms
+  { 'begin': 0xFFF0, 'end': 0xFFFF }, // Specials
+  { 'begin': 0x0F00, 'end': 0x0FFF }, // Tibetan
+  { 'begin': 0x0700, 'end': 0x074F }, // Syriac
+  { 'begin': 0x0780, 'end': 0x07BF }, // Thaana
+  { 'begin': 0x0D80, 'end': 0x0DFF }, // Sinhala
+  { 'begin': 0x1000, 'end': 0x109F }, // Myanmar
+  { 'begin': 0x1200, 'end': 0x137F }, // Ethiopic
+  { 'begin': 0x13A0, 'end': 0x13FF }, // Cherokee
+  { 'begin': 0x1400, 'end': 0x167F }, // Unified Canadian Aboriginal Syllabics
+  { 'begin': 0x1680, 'end': 0x169F }, // Ogham
+  { 'begin': 0x16A0, 'end': 0x16FF }, // Runic
+  { 'begin': 0x1780, 'end': 0x17FF }, // Khmer
+  { 'begin': 0x1800, 'end': 0x18AF }, // Mongolian
+  { 'begin': 0x2800, 'end': 0x28FF }, // Braille Patterns
+  { 'begin': 0xA000, 'end': 0xA48F }, // Yi Syllables
+  { 'begin': 0x1700, 'end': 0x171F }, // Tagalog
+  { 'begin': 0x10300, 'end': 0x1032F }, // Old Italic
+  { 'begin': 0x10330, 'end': 0x1034F }, // Gothic
+  { 'begin': 0x10400, 'end': 0x1044F }, // Deseret
+  { 'begin': 0x1D000, 'end': 0x1D0FF }, // Byzantine Musical Symbols
+  { 'begin': 0x1D400, 'end': 0x1D7FF }, // Mathematical Alphanumeric Symbols
+  { 'begin': 0xFF000, 'end': 0xFFFFD }, // Private Use (plane 15)
+  { 'begin': 0xFE00, 'end': 0xFE0F }, // Variation Selectors
+  { 'begin': 0xE0000, 'end': 0xE007F }, // Tags
+  { 'begin': 0x1900, 'end': 0x194F }, // Limbu
+  { 'begin': 0x1950, 'end': 0x197F }, // Tai Le
+  { 'begin': 0x1980, 'end': 0x19DF }, // New Tai Lue
+  { 'begin': 0x1A00, 'end': 0x1A1F }, // Buginese
+  { 'begin': 0x2C00, 'end': 0x2C5F }, // Glagolitic
+  { 'begin': 0x2D30, 'end': 0x2D7F }, // Tifinagh
+  { 'begin': 0x4DC0, 'end': 0x4DFF }, // Yijing Hexagram Symbols
+  { 'begin': 0xA800, 'end': 0xA82F }, // Syloti Nagri
+  { 'begin': 0x10000, 'end': 0x1007F }, // Linear B Syllabary
+  { 'begin': 0x10140, 'end': 0x1018F }, // Ancient Greek Numbers
+  { 'begin': 0x10380, 'end': 0x1039F }, // Ugaritic
+  { 'begin': 0x103A0, 'end': 0x103DF }, // Old Persian
+  { 'begin': 0x10450, 'end': 0x1047F }, // Shavian
+  { 'begin': 0x10480, 'end': 0x104AF }, // Osmanya
+  { 'begin': 0x10800, 'end': 0x1083F }, // Cypriot Syllabary
+  { 'begin': 0x10A00, 'end': 0x10A5F }, // Kharoshthi
+  { 'begin': 0x1D300, 'end': 0x1D35F }, // Tai Xuan Jing Symbols
+  { 'begin': 0x12000, 'end': 0x123FF }, // Cuneiform
+  { 'begin': 0x1D360, 'end': 0x1D37F }, // Counting Rod Numerals
+  { 'begin': 0x1B80, 'end': 0x1BBF }, // Sundanese
+  { 'begin': 0x1C00, 'end': 0x1C4F }, // Lepcha
+  { 'begin': 0x1C50, 'end': 0x1C7F }, // Ol Chiki
+  { 'begin': 0xA880, 'end': 0xA8DF }, // Saurashtra
+  { 'begin': 0xA900, 'end': 0xA92F }, // Kayah Li
+  { 'begin': 0xA930, 'end': 0xA95F }, // Rejang
+  { 'begin': 0xAA00, 'end': 0xAA5F }, // Cham
+  { 'begin': 0x10190, 'end': 0x101CF }, // Ancient Symbols
+  { 'begin': 0x101D0, 'end': 0x101FF }, // Phaistos Disc
+  { 'begin': 0x102A0, 'end': 0x102DF }, // Carian
+  { 'begin': 0x1F030, 'end': 0x1F09F }  // Domino Tiles
+];
+
+var MacStandardGlyphOrdering = [
+  '.notdef', '.null', 'nonmarkingreturn', 'space', 'exclam', 'quotedbl',
+  'numbersign', 'dollar', 'percent', 'ampersand', 'quotesingle', 'parenleft',
+  'parenright', 'asterisk', 'plus', 'comma', 'hyphen', 'period', 'slash',
+  'zero', 'one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight',
+  'nine', 'colon', 'semicolon', 'less', 'equal', 'greater', 'question', 'at',
+  'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O',
+  'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', 'bracketleft',
+  'backslash', 'bracketright', 'asciicircum', 'underscore', 'grave', 'a', 'b',
+  'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q',
+  'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', 'braceleft', 'bar', 'braceright',
+  'asciitilde', 'Adieresis', 'Aring', 'Ccedilla', 'Eacute', 'Ntilde',
+  'Odieresis', 'Udieresis', 'aacute', 'agrave', 'acircumflex', 'adieresis',
+  'atilde', 'aring', 'ccedilla', 'eacute', 'egrave', 'ecircumflex', 'edieresis',
+  'iacute', 'igrave', 'icircumflex', 'idieresis', 'ntilde', 'oacute', 'ograve',
+  'ocircumflex', 'odieresis', 'otilde', 'uacute', 'ugrave', 'ucircumflex',
+  'udieresis', 'dagger', 'degree', 'cent', 'sterling', 'section', 'bullet',
+  'paragraph', 'germandbls', 'registered', 'copyright', 'trademark', 'acute',
+  'dieresis', 'notequal', 'AE', 'Oslash', 'infinity', 'plusminus', 'lessequal',
+  'greaterequal', 'yen', 'mu', 'partialdiff', 'summation', 'product', 'pi',
+  'integral', 'ordfeminine', 'ordmasculine', 'Omega', 'ae', 'oslash',
+  'questiondown', 'exclamdown', 'logicalnot', 'radical', 'florin',
+  'approxequal', 'Delta', 'guillemotleft', 'guillemotright', 'ellipsis',
+  'nonbreakingspace', 'Agrave', 'Atilde', 'Otilde', 'OE', 'oe', 'endash',
+  'emdash', 'quotedblleft', 'quotedblright', 'quoteleft', 'quoteright',
+  'divide', 'lozenge', 'ydieresis', 'Ydieresis', 'fraction', 'currency',
+  'guilsinglleft', 'guilsinglright', 'fi', 'fl', 'daggerdbl', 'periodcentered',
+  'quotesinglbase', 'quotedblbase', 'perthousand', 'Acircumflex',
+  'Ecircumflex', 'Aacute', 'Edieresis', 'Egrave', 'Iacute', 'Icircumflex',
+  'Idieresis', 'Igrave', 'Oacute', 'Ocircumflex', 'apple', 'Ograve', 'Uacute',
+  'Ucircumflex', 'Ugrave', 'dotlessi', 'circumflex', 'tilde', 'macron',
+  'breve', 'dotaccent', 'ring', 'cedilla', 'hungarumlaut', 'ogonek', 'caron',
+  'Lslash', 'lslash', 'Scaron', 'scaron', 'Zcaron', 'zcaron', 'brokenbar',
+  'Eth', 'eth', 'Yacute', 'yacute', 'Thorn', 'thorn', 'minus', 'multiply',
+  'onesuperior', 'twosuperior', 'threesuperior', 'onehalf', 'onequarter',
+  'threequarters', 'franc', 'Gbreve', 'gbreve', 'Idotaccent', 'Scedilla',
+  'scedilla', 'Cacute', 'cacute', 'Ccaron', 'ccaron', 'dcroat'];
+
+function getUnicodeRangeFor(value) {
+  for (var i = 0, ii = UnicodeRanges.length; i < ii; i++) {
+    var range = UnicodeRanges[i];
+    if (value >= range.begin && value < range.end)
+      return i;
+  }
+  return -1;
+}
+
+function isRTLRangeFor(value) {
+  var range = UnicodeRanges[13];
+  if (value >= range.begin && value < range.end)
+    return true;
+  range = UnicodeRanges[11];
+  if (value >= range.begin && value < range.end)
+    return true;
+  return false;
+}
+
+function isSpecialUnicode(unicode) {
+  return (unicode <= 0x1F || (unicode >= 127 && unicode < kSizeOfGlyphArea)) ||
+    (unicode >= kCmapGlyphOffset &&
+    unicode < kCmapGlyphOffset + kSizeOfGlyphArea);
+}
+
+/**
+ * 'Font' is the class the outside world should use, it encapsulate all the font
+ * decoding logics whatever type it is (assuming the font type is supported).
+ *
+ * For example to read a Type1 font and to attach it to the document:
+ *   var type1Font = new Font("MyFontName", binaryFile, propertiesObject);
+ *   type1Font.bind();
+ */
+var Font = (function FontClosure() {
+  function Font(name, file, properties) {
+    this.name = name;
+    this.coded = properties.coded;
+    this.charProcOperatorList = properties.charProcOperatorList;
+    this.sizes = [];
+
+    var names = name.split('+');
+    names = names.length > 1 ? names[1] : names[0];
+    names = names.split(/[-,_]/g)[0];
+    this.isSerifFont = !!(properties.flags & FontFlags.Serif);
+    this.isSymbolicFont = !!(properties.flags & FontFlags.Symbolic);
+
+    var type = properties.type;
+    this.type = type;
+
+    // If the font is to be ignored, register it like an already loaded font
+    // to avoid the cost of waiting for it be be loaded by the platform.
+    if (properties.ignore) {
+      this.loadedName = this.isSerifFont ? 'serif' : 'sans-serif';
+      this.loading = false;
+      return;
+    }
+
+    this.differences = properties.differences;
+    this.widths = properties.widths;
+    this.defaultWidth = properties.defaultWidth;
+    this.composite = properties.composite;
+    this.wideChars = properties.wideChars;
+    this.hasEncoding = properties.hasEncoding;
+
+    this.fontMatrix = properties.fontMatrix;
+    this.widthMultiplier = 1.0;
+    if (properties.type == 'Type3') {
+      this.encoding = properties.baseEncoding;
+      return;
+    }
+
+    // Trying to fix encoding using glyph CIDSystemInfo.
+    this.loadCidToUnicode(properties);
+
+    if (properties.toUnicode)
+      this.toUnicode = properties.toUnicode;
+    else
+      this.rebuildToUnicode(properties);
+
+    this.toFontChar = this.buildToFontChar(this.toUnicode);
+
+    if (!file) {
+      // The file data is not specified. Trying to fix the font name
+      // to be used with the canvas.font.
+      var fontName = name.replace(/[,_]/g, '-');
+      fontName = stdFontMap[fontName] || nonStdFontMap[fontName] || fontName;
+
+      this.bold = (fontName.search(/bold/gi) != -1);
+      this.italic = (fontName.search(/oblique/gi) != -1) ||
+                    (fontName.search(/italic/gi) != -1);
+
+      // Use 'name' instead of 'fontName' here because the original
+      // name ArialBlack for example will be replaced by Helvetica.
+      this.black = (name.search(/Black/g) != -1);
+
+      this.encoding = properties.baseEncoding;
+      this.noUnicodeAdaptation = true;
+      this.loadedName = fontName.split('-')[0];
+      this.loading = false;
+      return;
+    }
+
+    var data;
+    switch (type) {
+      case 'Type1':
+      case 'CIDFontType0':
+        this.mimetype = 'font/opentype';
+
+        var subtype = properties.subtype;
+        var cff = (subtype == 'Type1C' || subtype == 'CIDFontType0C') ?
+          new CFFFont(file, properties) : new Type1Font(name, file, properties);
+
+        // Wrap the CFF data inside an OTF font file
+        data = this.convert(name, cff, properties);
+        break;
+
+      case 'TrueType':
+      case 'CIDFontType2':
+        this.mimetype = 'font/opentype';
+
+        // Repair the TrueType file. It is can be damaged in the point of
+        // view of the sanitizer
+        data = this.checkAndRepair(name, file, properties);
+        break;
+
+      default:
+        warn('Font ' + properties.type + ' is not supported');
+        break;
+    }
+
+    this.data = data;
+    this.fontMatrix = properties.fontMatrix;
+    this.widthMultiplier = !properties.fontMatrix ? 1.0 :
+      1.0 / properties.fontMatrix[0];
+    this.encoding = properties.baseEncoding;
+    this.loadedName = properties.loadedName;
+    this.loading = true;
+  };
+
+  var numFonts = 0;
+  function getUniqueName() {
+    return 'pdfFont' + numFonts++;
+  }
+
+  function stringToArray(str) {
+    var array = [];
+    for (var i = 0, ii = str.length; i < ii; ++i)
+      array[i] = str.charCodeAt(i);
+
+    return array;
+  };
+
+  function arrayToString(arr) {
+    var str = '';
+    for (var i = 0, ii = arr.length; i < ii; ++i)
+      str += String.fromCharCode(arr[i]);
+
+    return str;
+  };
+
+  function int16(bytes) {
+    return (bytes[0] << 8) + (bytes[1] & 0xff);
+  };
+
+  function int32(bytes) {
+    return (bytes[0] << 24) + (bytes[1] << 16) +
+           (bytes[2] << 8) + (bytes[3] & 0xff);
+  };
+
+  function getMaxPower2(number) {
+    var maxPower = 0;
+    var value = number;
+    while (value >= 2) {
+      value /= 2;
+      maxPower++;
+    }
+
+    value = 2;
+    for (var i = 1; i < maxPower; i++)
+      value *= 2;
+    return value;
+  };
+
+  function string16(value) {
+    return String.fromCharCode((value >> 8) & 0xff) +
+           String.fromCharCode(value & 0xff);
+  };
+
+  function safeString16(value) {
+    // clamp value to the 16-bit int range
+    value = value > 0x7FFF ? 0x7FFF : value < -0x8000 ? -0x8000 : value;
+    return String.fromCharCode((value >> 8) & 0xff) +
+           String.fromCharCode(value & 0xff);
+  };
+
+  function string32(value) {
+    return String.fromCharCode((value >> 24) & 0xff) +
+           String.fromCharCode((value >> 16) & 0xff) +
+           String.fromCharCode((value >> 8) & 0xff) +
+           String.fromCharCode(value & 0xff);
+  };
+
+  function createOpenTypeHeader(sfnt, file, numTables) {
+    // Windows hates the Mac TrueType sfnt version number
+    if (sfnt == 'true')
+      sfnt = string32(0x00010000);
+
+    // sfnt version (4 bytes)
+    var header = sfnt;
+
+    // numTables (2 bytes)
+    header += string16(numTables);
+
+    // searchRange (2 bytes)
+    var tablesMaxPower2 = getMaxPower2(numTables);
+    var searchRange = tablesMaxPower2 * 16;
+    header += string16(searchRange);
+
+    // entrySelector (2 bytes)
+    header += string16(Math.log(tablesMaxPower2) / Math.log(2));
+
+    // rangeShift (2 bytes)
+    header += string16(numTables * 16 - searchRange);
+
+    file.file += header;
+    file.virtualOffset += header.length;
+  };
+
+  function createTableEntry(file, tag, data) {
+    // offset
+    var offset = file.virtualOffset;
+
+    // length
+    var length = data.length;
+
+    // Per spec tables must be 4-bytes align so add padding as needed
+    while (data.length & 3)
+      data.push(0x00);
+
+    while (file.virtualOffset & 3)
+      file.virtualOffset++;
+
+    // checksum
+    var checksum = 0, n = data.length;
+    for (var i = 0; i < n; i += 4)
+      checksum = (checksum + int32([data[i], data[i + 1], data[i + 2],
+                                    data[i + 3]])) | 0;
+
+    var tableEntry = (tag + string32(checksum) +
+                      string32(offset) + string32(length));
+    file.file += tableEntry;
+    file.virtualOffset += data.length;
+  };
+
+  function getRanges(glyphs) {
+    // Array.sort() sorts by characters, not numerically, so convert to an
+    // array of characters.
+    var codes = [];
+    var length = glyphs.length;
+    for (var n = 0; n < length; ++n)
+      codes.push({ unicode: glyphs[n].unicode, code: n });
+    codes.sort(function fontGetRangesSort(a, b) {
+      return a.unicode - b.unicode;
+    });
+
+    // Split the sorted codes into ranges.
+    var ranges = [];
+    for (var n = 0; n < length; ) {
+      var start = codes[n].unicode;
+      var codeIndices = [codes[n].code];
+      ++n;
+      var end = start;
+      while (n < length && end + 1 == codes[n].unicode) {
+        codeIndices.push(codes[n].code);
+        ++end;
+        ++n;
+      }
+      ranges.push([start, end, codeIndices]);
+    }
+
+    return ranges;
+  };
+
+  function createCMapTable(glyphs, deltas) {
+    var ranges = getRanges(glyphs);
+
+    var numTables = 1;
+    var cmap = '\x00\x00' + // version
+               string16(numTables) +  // numTables
+               '\x00\x03' + // platformID
+               '\x00\x01' + // encodingID
+               string32(4 + numTables * 8); // start of the table record
+
+    var segCount = ranges.length + 1;
+    var segCount2 = segCount * 2;
+    var searchRange = getMaxPower2(segCount) * 2;
+    var searchEntry = Math.log(segCount) / Math.log(2);
+    var rangeShift = 2 * segCount - searchRange;
+
+    // Fill up the 4 parallel arrays describing the segments.
+    var startCount = '';
+    var endCount = '';
+    var idDeltas = '';
+    var idRangeOffsets = '';
+    var glyphsIds = '';
+    var bias = 0;
+
+    if (deltas) {
+      for (var i = 0; i < segCount - 1; i++) {
+        var range = ranges[i];
+        var start = range[0];
+        var end = range[1];
+        var offset = (segCount - i) * 2 + bias * 2;
+        bias += (end - start + 1);
+
+        startCount += string16(start);
+        endCount += string16(end);
+        idDeltas += string16(0);
+        idRangeOffsets += string16(offset);
+
+        var codes = range[2];
+        for (var j = 0, jj = codes.length; j < jj; ++j)
+          glyphsIds += string16(deltas[codes[j]]);
+      }
+    } else {
+      for (var i = 0; i < segCount - 1; i++) {
+        var range = ranges[i];
+        var start = range[0];
+        var end = range[1];
+        var startCode = range[2][0];
+
+        startCount += string16(start);
+        endCount += string16(end);
+        idDeltas += string16((startCode - start + 1) & 0xFFFF);
+        idRangeOffsets += string16(0);
+      }
+    }
+
+    endCount += '\xFF\xFF';
+    startCount += '\xFF\xFF';
+    idDeltas += '\x00\x01';
+    idRangeOffsets += '\x00\x00';
+
+    var format314 = '\x00\x00' + // language
+                    string16(segCount2) +
+                    string16(searchRange) +
+                    string16(searchEntry) +
+                    string16(rangeShift) +
+                    endCount + '\x00\x00' + startCount +
+                    idDeltas + idRangeOffsets + glyphsIds;
+
+    return stringToArray(cmap +
+                         '\x00\x04' + // format
+                         string16(format314.length + 4) + // length
+                         format314);
+  };
+
+  function createOS2Table(properties, charstrings, override) {
+    override = override || {
+      unitsPerEm: 0,
+      yMax: 0,
+      yMin: 0,
+      ascent: 0,
+      descent: 0
+    };
+
+    var ulUnicodeRange1 = 0;
+    var ulUnicodeRange2 = 0;
+    var ulUnicodeRange3 = 0;
+    var ulUnicodeRange4 = 0;
+
+    var firstCharIndex = null;
+    var lastCharIndex = 0;
+
+    if (charstrings) {
+      for (var i = 0; i < charstrings.length; ++i) {
+        var code = charstrings[i].unicode;
+        if (firstCharIndex > code || !firstCharIndex)
+          firstCharIndex = code;
+        if (lastCharIndex < code)
+          lastCharIndex = code;
+
+        var position = getUnicodeRangeFor(code);
+        if (position < 32) {
+          ulUnicodeRange1 |= 1 << position;
+        } else if (position < 64) {
+          ulUnicodeRange2 |= 1 << position - 32;
+        } else if (position < 96) {
+          ulUnicodeRange3 |= 1 << position - 64;
+        } else if (position < 123) {
+          ulUnicodeRange4 |= 1 << position - 96;
+        } else {
+          error('Unicode ranges Bits > 123 are reserved for internal usage');
+        }
+      }
+    } else {
+      // TODO
+      firstCharIndex = 0;
+      lastCharIndex = 255;
+    }
+
+    var unitsPerEm = override.unitsPerEm || kPDFGlyphSpaceUnits;
+    var typoAscent = override.ascent || properties.ascent;
+    var typoDescent = override.descent || properties.descent;
+    var winAscent = override.yMax || typoAscent;
+    var winDescent = -override.yMin || -typoDescent;
+
+    // if there is a units per em value but no other override
+    // then scale the calculated ascent
+    if (unitsPerEm != kPDFGlyphSpaceUnits &&
+        'undefined' == typeof(override.ascent)) {
+      // if the font units differ to the PDF glyph space units
+      // then scale up the values
+      typoAscent = Math.round(typoAscent * unitsPerEm / kPDFGlyphSpaceUnits);
+      typoDescent = Math.round(typoDescent * unitsPerEm / kPDFGlyphSpaceUnits);
+      winAscent = typoAscent;
+      winDescent = -typoDescent;
+    }
+
+    return '\x00\x03' + // version
+           '\x02\x24' + // xAvgCharWidth
+           '\x01\xF4' + // usWeightClass
+           '\x00\x05' + // usWidthClass
+           '\x00\x00' + // fstype (0 to let the font loads via font-face on IE)
+           '\x02\x8A' + // ySubscriptXSize
+           '\x02\xBB' + // ySubscriptYSize
+           '\x00\x00' + // ySubscriptXOffset
+           '\x00\x8C' + // ySubscriptYOffset
+           '\x02\x8A' + // ySuperScriptXSize
+           '\x02\xBB' + // ySuperScriptYSize
+           '\x00\x00' + // ySuperScriptXOffset
+           '\x01\xDF' + // ySuperScriptYOffset
+           '\x00\x31' + // yStrikeOutSize
+           '\x01\x02' + // yStrikeOutPosition
+           '\x00\x00' + // sFamilyClass
+           '\x00\x00\x06' +
+           String.fromCharCode(properties.fixedPitch ? 0x09 : 0x00) +
+           '\x00\x00\x00\x00\x00\x00' + // Panose
+           string32(ulUnicodeRange1) + // ulUnicodeRange1 (Bits 0-31)
+           string32(ulUnicodeRange2) + // ulUnicodeRange2 (Bits 32-63)
+           string32(ulUnicodeRange3) + // ulUnicodeRange3 (Bits 64-95)
+           string32(ulUnicodeRange4) + // ulUnicodeRange4 (Bits 96-127)
+           '\x2A\x32\x31\x2A' + // achVendID
+           string16(properties.italicAngle ? 1 : 0) + // fsSelection
+           string16(firstCharIndex ||
+                    properties.firstChar) + // usFirstCharIndex
+           string16(lastCharIndex || properties.lastChar) +  // usLastCharIndex
+           string16(typoAscent) + // sTypoAscender
+           string16(typoDescent) + // sTypoDescender
+           '\x00\x64' + // sTypoLineGap (7%-10% of the unitsPerEM value)
+           string16(winAscent) + // usWinAscent
+           string16(winDescent) + // usWinDescent
+           '\x00\x00\x00\x00' + // ulCodePageRange1 (Bits 0-31)
+           '\x00\x00\x00\x00' + // ulCodePageRange2 (Bits 32-63)
+           string16(properties.xHeight) + // sxHeight
+           string16(properties.capHeight) + // sCapHeight
+           string16(0) + // usDefaultChar
+           string16(firstCharIndex || properties.firstChar) + // usBreakChar
+           '\x00\x03';  // usMaxContext
+  };
+
+  function createPostTable(properties) {
+    var angle = Math.floor(properties.italicAngle * (Math.pow(2, 16)));
+    return '\x00\x03\x00\x00' + // Version number
+           string32(angle) + // italicAngle
+           '\x00\x00' + // underlinePosition
+           '\x00\x00' + // underlineThickness
+           string32(properties.fixedPitch) + // isFixedPitch
+           '\x00\x00\x00\x00' + // minMemType42
+           '\x00\x00\x00\x00' + // maxMemType42
+           '\x00\x00\x00\x00' + // minMemType1
+           '\x00\x00\x00\x00';  // maxMemType1
+  };
+
+  function createNameTable(name) {
+    var strings = [
+      'Original licence',  // 0.Copyright
+      name,                // 1.Font family
+      'Unknown',           // 2.Font subfamily (font weight)
+      'uniqueID',          // 3.Unique ID
+      name,                // 4.Full font name
+      'Version 0.11',      // 5.Version
+      '',                  // 6.Postscript name
+      'Unknown',           // 7.Trademark
+      'Unknown',           // 8.Manufacturer
+      'Unknown'            // 9.Designer
+    ];
+
+    // Mac want 1-byte per character strings while Windows want
+    // 2-bytes per character, so duplicate the names table
+    var stringsUnicode = [];
+    for (var i = 0, ii = strings.length; i < ii; i++) {
+      var str = strings[i];
+
+      var strUnicode = '';
+      for (var j = 0, jj = str.length; j < jj; j++)
+        strUnicode += string16(str.charCodeAt(j));
+      stringsUnicode.push(strUnicode);
+    }
+
+    var names = [strings, stringsUnicode];
+    var platforms = ['\x00\x01', '\x00\x03'];
+    var encodings = ['\x00\x00', '\x00\x01'];
+    var languages = ['\x00\x00', '\x04\x09'];
+
+    var namesRecordCount = strings.length * platforms.length;
+    var nameTable =
+      '\x00\x00' +                           // format
+      string16(namesRecordCount) +           // Number of names Record
+      string16(namesRecordCount * 12 + 6);   // Storage
+
+    // Build the name records field
+    var strOffset = 0;
+    for (var i = 0, ii = platforms.length; i < ii; i++) {
+      var strs = names[i];
+      for (var j = 0, jj = strs.length; j < jj; j++) {
+        var str = strs[j];
+        var nameRecord =
+          platforms[i] + // platform ID
+          encodings[i] + // encoding ID
+          languages[i] + // language ID
+          string16(j) + // name ID
+          string16(str.length) +
+          string16(strOffset);
+        nameTable += nameRecord;
+        strOffset += str.length;
+      }
+    }
+
+    nameTable += strings.join('') + stringsUnicode.join('');
+    return nameTable;
+  }
+
+  Font.prototype = {
+    name: null,
+    font: null,
+    mimetype: null,
+    encoding: null,
+
+    checkAndRepair: function Font_checkAndRepair(name, font, properties) {
+      function readTableEntry(file) {
+        var tag = file.getBytes(4);
+        tag = String.fromCharCode(tag[0]) +
+              String.fromCharCode(tag[1]) +
+              String.fromCharCode(tag[2]) +
+              String.fromCharCode(tag[3]);
+
+        var checksum = int32(file.getBytes(4));
+        var offset = int32(file.getBytes(4));
+        var length = int32(file.getBytes(4));
+
+        // Read the table associated data
+        var previousPosition = file.pos;
+        file.pos = file.start ? file.start : 0;
+        file.skip(offset);
+        var data = file.getBytes(length);
+        file.pos = previousPosition;
+
+        if (tag == 'head') {
+          // clearing checksum adjustment
+          data[8] = data[9] = data[10] = data[11] = 0;
+          data[17] |= 0x20; //Set font optimized for cleartype flag
+        }
+
+        return {
+          tag: tag,
+          checksum: checksum,
+          length: length,
+          offset: offset,
+          data: data
+        };
+      };
+
+      function readOpenTypeHeader(ttf) {
+        return {
+          version: arrayToString(ttf.getBytes(4)),
+          numTables: int16(ttf.getBytes(2)),
+          searchRange: int16(ttf.getBytes(2)),
+          entrySelector: int16(ttf.getBytes(2)),
+          rangeShift: int16(ttf.getBytes(2))
+        };
+      };
+
+      function createGlyphNameMap(glyphs, ids, properties) {
+        var glyphNames = properties.glyphNames;
+        if (!glyphNames) {
+          properties.glyphNameMap = {};
+          return;
+        }
+        var glyphsLength = glyphs.length;
+        var glyphNameMap = {};
+        var encoding = [];
+        for (var i = 0; i < glyphsLength; ++i) {
+          var glyphName = glyphNames[ids[i]];
+          if (!glyphName)
+            continue;
+          var unicode = glyphs[i].unicode;
+          glyphNameMap[glyphName] = unicode;
+          var code = glyphs[i].code;
+          encoding[code] = glyphName;
+        }
+        properties.glyphNameMap = glyphNameMap;
+        if (!properties.hasEncoding)
+          properties.baseEncoding = encoding;
+      }
+
+      function readCMapTable(cmap, font) {
+        var start = (font.start ? font.start : 0) + cmap.offset;
+        font.pos = start;
+
+        var version = int16(font.getBytes(2));
+        var numRecords = int16(font.getBytes(2));
+
+        var records = [];
+        for (var i = 0; i < numRecords; i++) {
+          records.push({
+            platformID: int16(font.getBytes(2)),
+            encodingID: int16(font.getBytes(2)),
+            offset: int32(font.getBytes(4))
+          });
+        }
+
+        // Check that table are sorted by platformID then encodingID,
+        records.sort(function fontReadCMapTableSort(a, b) {
+          return ((a.platformID << 16) + a.encodingID) -
+                 ((b.platformID << 16) + b.encodingID);
+        });
+
+        var tables = [records[0]];
+        for (var i = 1; i < numRecords; i++) {
+          // The sanitizer will drop the font if 2 tables have the same
+          // platformID and the same encodingID, this will be correct for
+          // most cases but if the font has been made for Mac it could
+          // exist a few platformID: 1, encodingID: 0 but with a different
+          // language field and that's correct. But the sanitizer does not
+          // seem to support this case.
+          var current = records[i];
+          var previous = records[i - 1];
+          if (((current.platformID << 16) + current.encodingID) <=
+             ((previous.platformID << 16) + previous.encodingID))
+                continue;
+          tables.push(current);
+        }
+
+        var missing = numRecords - tables.length;
+        if (missing) {
+          numRecords = tables.length;
+          var data = string16(version) + string16(numRecords);
+
+          for (var i = 0; i < numRecords; i++) {
+            var table = tables[i];
+            data += string16(table.platformID) +
+                    string16(table.encodingID) +
+                    string32(table.offset);
+          }
+
+          for (var i = 0, ii = data.length; i < ii; i++)
+            cmap.data[i] = data.charCodeAt(i);
+        }
+
+        for (var i = 0; i < numRecords; i++) {
+          var table = tables[i];
+          font.pos = start + table.offset;
+
+          var format = int16(font.getBytes(2));
+          var length = int16(font.getBytes(2));
+          var language = int16(font.getBytes(2));
+
+          if (format == 0) {
+            // Characters below 0x20 are controls characters that are hardcoded
+            // into the platform so if some characters in the font are assigned
+            // under this limit they will not be displayed so let's rewrite the
+            // CMap.
+            var glyphs = [];
+            var ids = [];
+            for (var j = 0; j < 256; j++) {
+              var index = font.getByte();
+              if (index) {
+                glyphs.push({ unicode: j, code: j });
+                ids.push(index);
+              }
+            }
+            return {
+              glyphs: glyphs,
+              ids: ids,
+              hasShortCmap: true
+            };
+          } else if (format == 4) {
+            // re-creating the table in format 4 since the encoding
+            // might be changed
+            var segCount = (int16(font.getBytes(2)) >> 1);
+            font.getBytes(6); // skipping range fields
+            var segIndex, segments = [];
+            for (segIndex = 0; segIndex < segCount; segIndex++) {
+              segments.push({ end: int16(font.getBytes(2)) });
+            }
+            font.getBytes(2);
+            for (segIndex = 0; segIndex < segCount; segIndex++) {
+              segments[segIndex].start = int16(font.getBytes(2));
+            }
+
+            for (segIndex = 0; segIndex < segCount; segIndex++) {
+              segments[segIndex].delta = int16(font.getBytes(2));
+            }
+
+            var offsetsCount = 0;
+            for (segIndex = 0; segIndex < segCount; segIndex++) {
+              var segment = segments[segIndex];
+              var rangeOffset = int16(font.getBytes(2));
+              if (!rangeOffset) {
+                segment.offsetIndex = -1;
+                continue;
+              }
+
+              var offsetIndex = (rangeOffset >> 1) - (segCount - segIndex);
+              segment.offsetIndex = offsetIndex;
+              offsetsCount = Math.max(offsetsCount, offsetIndex +
+                segment.end - segment.start + 1);
+            }
+
+            var offsets = [];
+            for (var j = 0; j < offsetsCount; j++)
+              offsets.push(int16(font.getBytes(2)));
+
+            var glyphs = [], ids = [];
+
+            for (segIndex = 0; segIndex < segCount; segIndex++) {
+              var segment = segments[segIndex];
+              var start = segment.start, end = segment.end;
+              var delta = segment.delta, offsetIndex = segment.offsetIndex;
+
+              for (var j = start; j <= end; j++) {
+                if (j == 0xFFFF)
+                  continue;
+
+                var glyphCode = offsetIndex < 0 ? j :
+                  offsets[offsetIndex + j - start];
+                glyphCode = (glyphCode + delta) & 0xFFFF;
+                if (glyphCode == 0)
+                  continue;
+
+                glyphs.push({ unicode: j, code: j });
+                ids.push(glyphCode);
+              }
+            }
+
+            return {
+              glyphs: glyphs,
+              ids: ids
+            };
+          } else if (format == 6) {
+            // Format 6 is a 2-bytes dense mapping, which means the font data
+            // lives glue together even if they are pretty far in the unicode
+            // table. (This looks weird, so I can have missed something), this
+            // works on Linux but seems to fails on Mac so let's rewrite the
+            // cmap table to a 3-1-4 style
+            var firstCode = int16(font.getBytes(2));
+            var entryCount = int16(font.getBytes(2));
+
+            var glyphs = [];
+            var ids = [];
+            for (var j = 0; j < entryCount; j++) {
+              var glyphCode = int16(font.getBytes(2));
+              var code = firstCode + j;
+
+              glyphs.push({ unicode: code, code: code });
+              ids.push(glyphCode);
+            }
+
+            return {
+              glyphs: glyphs,
+              ids: ids
+            };
+          }
+        }
+        error('Unsupported cmap table format');
+      };
+
+      function sanitizeMetrics(font, header, metrics, numGlyphs) {
+        if (!header && !metrics)
+          return;
+
+        // The vhea/vmtx tables are not required, so it happens that
+        // some fonts embed a vmtx table without a vhea table. In this
+        // situation the sanitizer assume numOfLongVerMetrics = 1. As
+        // a result it tries to read numGlyphs - 1 SHORT from the vmtx
+        // table, and if it is not possible, the font is rejected.
+        // So remove the vmtx table if there is no vhea table.
+        if (!header && metrics) {
+          metrics.data = null;
+          return;
+        }
+
+        font.pos = (font.start ? font.start : 0) + header.offset;
+        font.pos += header.length - 2;
+        var numOfMetrics = int16(font.getBytes(2));
+
+        var numOfSidebearings = numGlyphs - numOfMetrics;
+        var numMissing = numOfSidebearings -
+          ((hmtx.length - numOfMetrics * 4) >> 1);
+        if (numMissing > 0) {
+          font.pos = (font.start ? font.start : 0) + metrics.offset;
+          var entries = '';
+          for (var i = 0, ii = hmtx.length; i < ii; i++)
+            entries += String.fromCharCode(font.getByte());
+          for (var i = 0; i < numMissing; i++)
+            entries += '\x00\x00';
+          metrics.data = stringToArray(entries);
+        }
+      };
+
+      function sanitizeGlyph(source, sourceStart, sourceEnd, dest, destStart) {
+        if (sourceEnd - sourceStart <= 12) {
+          // glyph with data less than 12 is invalid one
+          return 0;
+        }
+        var glyf = source.subarray(sourceStart, sourceEnd);
+        var contoursCount = (glyf[0] << 8) | glyf[1];
+        if (contoursCount & 0x8000) {
+          // complex glyph, writing as is
+          dest.set(glyf, destStart);
+          return glyf.length;
+        }
+
+        var j = 10, flagsCount = 0;
+        for (var i = 0; i < contoursCount; i++) {
+          var endPoint = (glyf[j] << 8) | glyf[j + 1];
+          flagsCount = endPoint + 1;
+          j += 2;
+        }
+        // skipping instructions
+        var instructionsLength = (glyf[j] << 8) | glyf[j + 1];
+        j += 2 + instructionsLength;
+        // validating flags
+        var coordinatesLength = 0;
+        for (var i = 0; i < flagsCount; i++) {
+          var flag = glyf[j++];
+          if (flag & 0xC0) {
+            // reserved flags must be zero, rejecting
+            return 0;
+          }
+          var xyLength = ((flag & 2) ? 1 : (flag & 16) ? 0 : 2) +
+                         ((flag & 4) ? 1 : (flag & 32) ? 0 : 2);
+          coordinatesLength += xyLength;
+          if (flag & 8) {
+            var repeat = glyf[j++];
+            i += repeat;
+            coordinatesLength += repeat * xyLength;
+          }
+        }
+        var glyphDataLength = j + coordinatesLength;
+        if (glyphDataLength > glyf.length) {
+          // not enough data for coordinates
+          return 0;
+        }
+        if (glyf.length - glyphDataLength > 3) {
+          // truncating and aligning to 4 bytes the long glyph data
+          glyphDataLength = (glyphDataLength + 3) & ~3;
+          dest.set(glyf.subarray(0, glyphDataLength), destStart);
+          return glyphDataLength;
+        }
+        // glyph data is fine
+        dest.set(glyf, destStart);
+        return glyf.length;
+      }
+
+      function sanitizeGlyphLocations(loca, glyf, numGlyphs,
+                                      isGlyphLocationsLong) {
+        var itemSize, itemDecode, itemEncode;
+        if (isGlyphLocationsLong) {
+          itemSize = 4;
+          itemDecode = function fontItemDecodeLong(data, offset) {
+            return (data[offset] << 24) | (data[offset + 1] << 16) |
+                   (data[offset + 2] << 8) | data[offset + 3];
+          };
+          itemEncode = function fontItemEncodeLong(data, offset, value) {
+            data[offset] = (value >>> 24) & 0xFF;
+            data[offset + 1] = (value >> 16) & 0xFF;
+            data[offset + 2] = (value >> 8) & 0xFF;
+            data[offset + 3] = value & 0xFF;
+          };
+        } else {
+          itemSize = 2;
+          itemDecode = function fontItemDecode(data, offset) {
+            return (data[offset] << 9) | (data[offset + 1] << 1);
+          };
+          itemEncode = function fontItemEncode(data, offset, value) {
+            data[offset] = (value >> 9) & 0xFF;
+            data[offset + 1] = (value >> 1) & 0xFF;
+          };
+        }
+        var locaData = loca.data;
+        // removing the invalid glyphs
+        var oldGlyfData = glyf.data;
+        var oldGlyfDataLength = oldGlyfData.length;
+        var newGlyfData = new Uint8Array(oldGlyfDataLength);
+        var startOffset = itemDecode(locaData, 0);
+        var writeOffset = 0;
+        itemEncode(locaData, 0, writeOffset);
+        for (var i = 0, j = itemSize; i < numGlyphs; i++, j += itemSize) {
+          var endOffset = itemDecode(locaData, j);
+          if (endOffset > oldGlyfDataLength) {
+            // glyph end offset points outside glyf data, rejecting the glyph
+            itemEncode(locaData, j, writeOffset);
+            startOffset = endOffset;
+            continue;
+          }
+
+          var newLength = sanitizeGlyph(oldGlyfData, startOffset, endOffset,
+                                        newGlyfData, writeOffset);
+          writeOffset += newLength;
+          itemEncode(locaData, j, writeOffset);
+          startOffset = endOffset;
+        }
+
+        if (writeOffset == 0) {
+          // glyf table cannot be empty -- redoing the glyf and loca tables
+          // to have single glyph with one point
+          var simpleGlyph = new Uint8Array(
+            [0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 0]);
+          for (var i = 0, j = itemSize; i < numGlyphs; i++, j += itemSize)
+            itemEncode(locaData, j, simpleGlyph.length);
+          glyf.data = simpleGlyph;
+          return;
+        }
+
+        glyf.data = newGlyfData.subarray(0, writeOffset);
+      }
+
+      function findEmptyGlyphs(locaTable, isGlyphLocationsLong, emptyGlyphIds) {
+        var itemSize, itemDecode;
+        if (isGlyphLocationsLong) {
+          itemSize = 4;
+          itemDecode = function fontItemDecodeLong(data, offset) {
+            return (data[offset] << 24) | (data[offset + 1] << 16) |
+                   (data[offset + 2] << 8) | data[offset + 3];
+          };
+        } else {
+          itemSize = 2;
+          itemDecode = function fontItemDecode(data, offset) {
+            return (data[offset] << 9) | (data[offset + 1] << 1);
+          };
+        }
+        var data = locaTable.data, length = data.length;
+        var lastOffset = itemDecode(data, 0);
+        for (var i = itemSize, j = 0; i < length; i += itemSize, j++) {
+          var offset = itemDecode(data, i);
+          if (offset == lastOffset)
+            emptyGlyphIds[j] = true;
+          lastOffset = offset;
+        }
+      }
+
+      function readGlyphNameMap(post, properties) {
+        var start = (font.start ? font.start : 0) + post.offset;
+        font.pos = start;
+
+        var length = post.length, end = start + length;
+        var version = int32(font.getBytes(4));
+        // skip rest to the tables
+        font.getBytes(28);
+
+        var glyphNames;
+        switch (version) {
+          case 0x00010000:
+            glyphNames = MacStandardGlyphOrdering;
+            break;
+          case 0x00020000:
+            var numGlyphs = int16(font.getBytes(2));
+            var glyphNameIndexes = [];
+            for (var i = 0; i < numGlyphs; ++i)
+              glyphNameIndexes.push(int16(font.getBytes(2)));
+            var customNames = [];
+            while (font.pos < end) {
+              var stringLength = font.getByte();
+              var string = '';
+              for (var i = 0; i < stringLength; ++i)
+                string += font.getChar();
+              customNames.push(string);
+            }
+            glyphNames = [];
+            for (var i = 0; i < numGlyphs; ++i) {
+              var j = glyphNameIndexes[i];
+              if (j < 258) {
+                glyphNames.push(MacStandardGlyphOrdering[j]);
+                continue;
+              }
+              glyphNames.push(customNames[j - 258]);
+            }
+            break;
+          case 0x00030000:
+            break;
+          default:
+            warn('Unknown/unsupported post table version ' + version);
+            break;
+        }
+        properties.glyphNames = glyphNames;
+      }
+
+      function isOS2Valid(os2Table) {
+        var data = os2Table.data;
+        // usWinAscent == 0 makes font unreadable by windows
+        var usWinAscent = (data[74] << 8) | data[75];
+        if (usWinAscent == 0)
+          return false;
+
+        return true;
+      }
+
+      // Check that required tables are present
+      var requiredTables = ['OS/2', 'cmap', 'head', 'hhea',
+                             'hmtx', 'maxp', 'name', 'post'];
+
+      var header = readOpenTypeHeader(font);
+      var numTables = header.numTables;
+
+      var cmap, post, maxp, hhea, hmtx, vhea, vmtx, head, loca, glyf, os2;
+      var tables = [];
+      for (var i = 0; i < numTables; i++) {
+        var table = readTableEntry(font);
+        var index = requiredTables.indexOf(table.tag);
+        if (index != -1) {
+          if (table.tag == 'cmap')
+            cmap = table;
+          else if (table.tag == 'post')
+            post = table;
+          else if (table.tag == 'maxp')
+            maxp = table;
+          else if (table.tag == 'hhea')
+            hhea = table;
+          else if (table.tag == 'hmtx')
+            hmtx = table;
+          else if (table.tag == 'head')
+            head = table;
+          else if (table.tag == 'OS/2')
+            os2 = table;
+
+          requiredTables.splice(index, 1);
+        } else {
+          if (table.tag == 'vmtx')
+            vmtx = table;
+          else if (table.tag == 'vhea')
+            vhea = table;
+          else if (table.tag == 'loca')
+            loca = table;
+          else if (table.tag == 'glyf')
+            glyf = table;
+        }
+        tables.push(table);
+      }
+
+      var numTables = tables.length + requiredTables.length;
+
+      // header and new offsets. Table entry information is appended to the
+      // end of file. The virtualOffset represents where to put the actual
+      // data of a particular table;
+      var ttf = {
+        file: '',
+        virtualOffset: numTables * (4 * 4)
+      };
+
+      // The new numbers of tables will be the last one plus the num
+      // of missing tables
+      createOpenTypeHeader(header.version, ttf, numTables);
+
+      // Invalid OS/2 can break the font for the Windows
+      if (os2 && !isOS2Valid(os2)) {
+        tables.splice(tables.indexOf(os2), 1);
+        os2 = null;
+      }
+
+      // Ensure the [h/v]mtx tables contains the advance width and
+      // sidebearings information for numGlyphs in the maxp table
+      font.pos = (font.start || 0) + maxp.offset;
+      var version = int16(font.getBytes(4));
+      var numGlyphs = int16(font.getBytes(2));
+
+      sanitizeMetrics(font, hhea, hmtx, numGlyphs);
+      sanitizeMetrics(font, vhea, vmtx, numGlyphs);
+
+      var isGlyphLocationsLong = int16([head.data[50], head.data[51]]);
+      if (head && loca && glyf) {
+        sanitizeGlyphLocations(loca, glyf, numGlyphs, isGlyphLocationsLong);
+      }
+
+      var emptyGlyphIds = [];
+      if (glyf)
+        findEmptyGlyphs(loca, isGlyphLocationsLong, emptyGlyphIds);
+
+      // Sanitizer reduces the glyph advanceWidth to the maxAdvanceWidth
+      // Sometimes it's 0. That needs to be fixed
+      if (hhea.data[10] == 0 && hhea.data[11] == 0) {
+        hhea.data[10] = 0xFF;
+        hhea.data[11] = 0xFF;
+      }
+
+      // The 'post' table has glyphs names.
+      if (post) {
+        readGlyphNameMap(post, properties);
+      }
+
+      var glyphs, ids;
+      if (properties.type == 'CIDFontType2') {
+        // Replace the old CMAP table with a shiny new one
+        // Type2 composite fonts map characters directly to glyphs so the cmap
+        // table must be replaced.
+        // canvas fillText will reencode some characters even if the font has a
+        // glyph at that position - e.g. newline is converted to a space and
+        // U+00AD (soft hyphen) is not drawn.
+        // So, offset all the glyphs by 0xFF to avoid these cases and use
+        // the encoding to map incoming characters to the new glyph positions
+        if (!cmap) {
+          cmap = {
+            tag: 'cmap',
+            data: null
+          };
+          tables.push(cmap);
+        }
+
+        var cidToGidMap = properties.cidToGidMap || [];
+        var gidToCidMap = [0];
+        if (cidToGidMap.length > 0) {
+          for (var j = cidToGidMap.length - 1; j >= 0; j--) {
+            var gid = cidToGidMap[j];
+            if (gid)
+              gidToCidMap[gid] = j;
+          }
+          // filling the gaps using CID above the CIDs currently used in font
+          var nextCid = cidToGidMap.length;
+          for (var i = 1; i < numGlyphs; i++) {
+            if (!gidToCidMap[i])
+              gidToCidMap[i] = nextCid++;
+          }
+        }
+
+        glyphs = [];
+        ids = [];
+
+        var usedUnicodes = [];
+        var unassignedUnicodeItems = [];
+        for (var i = 1; i < numGlyphs; i++) {
+          var cid = gidToCidMap[i] || i;
+          var unicode = this.toFontChar[cid];
+          if (!unicode || typeof unicode !== 'number' ||
+              isSpecialUnicode(unicode) || unicode in usedUnicodes) {
+            unassignedUnicodeItems.push(i);
+            continue;
+          }
+          usedUnicodes[unicode] = true;
+          glyphs.push({ unicode: unicode, code: cid });
+          ids.push(i);
+        }
+        // trying to fit as many unassigned symbols as we can
+        // in the range allocated for the user defined symbols
+        var unusedUnicode = kCmapGlyphOffset;
+        for (var j = 0, jj = unassignedUnicodeItems.length; j < jj; j++) {
+          var i = unassignedUnicodeItems[j];
+          var cid = gidToCidMap[i] || i;
+          while (unusedUnicode in usedUnicodes)
+            unusedUnicode++;
+          if (unusedUnicode >= kCmapGlyphOffset + kSizeOfGlyphArea)
+            break;
+          var unicode = unusedUnicode++;
+          this.toFontChar[cid] = unicode;
+          usedUnicodes[unicode] = true;
+          glyphs.push({ unicode: unicode, code: cid });
+          ids.push(i);
+        }
+      } else {
+        var cmapTable = readCMapTable(cmap, font);
+
+        glyphs = cmapTable.glyphs;
+        ids = cmapTable.ids;
+
+        var hasShortCmap = !!cmapTable.hasShortCmap;
+        var toFontChar = this.toFontChar;
+
+        if (hasShortCmap && ids.length == numGlyphs) {
+          // Fixes the short cmap tables -- some generators use incorrect
+          // glyph id.
+          for (var i = 0, ii = ids.length; i < ii; i++)
+            ids[i] = i;
+        }
+
+        var unusedUnicode = kCmapGlyphOffset;
+        var glyphNames = properties.glyphNames || [];
+        var encoding = properties.baseEncoding;
+        var differences = properties.differences;
+        if (toFontChar && toFontChar.length > 0) {
+          // checking if cmap is just identity map
+          var isIdentity = true;
+          for (var i = 0, ii = glyphs.length; i < ii; i++) {
+            if (glyphs[i].unicode != i + 1) {
+              isIdentity = false;
+              break;
+            }
+          }
+          // if it is, replacing with meaningful toUnicode values
+          if (isIdentity && !this.isSymbolicFont) {
+            var usedUnicodes = [], unassignedUnicodeItems = [];
+            for (var i = 0, ii = glyphs.length; i < ii; i++) {
+              var unicode = toFontChar[i + 1];
+              if (!unicode || typeof unicode !== 'number' ||
+                  unicode in usedUnicodes) {
+                unassignedUnicodeItems.push(i);
+                continue;
+              }
+              glyphs[i].unicode = unicode;
+              usedUnicodes[unicode] = true;
+            }
+            for (var j = 0, jj = unassignedUnicodeItems.length; j < jj; j++) {
+              var i = unassignedUnicodeItems[j];
+              while (unusedUnicode in usedUnicodes)
+                unusedUnicode++;
+              var cid = i + 1;
+              // override only if unicode mapping is not specified
+              if (!(cid in toFontChar))
+                toFontChar[cid] = unusedUnicode;
+              glyphs[i].unicode = unusedUnicode++;
+            }
+            this.useToFontChar = true;
+          }
+        }
+
+        // remove glyph references outside range of avaialable glyphs or empty
+        var glyphsRemoved = 0;
+        for (var i = ids.length - 1; i >= 0; i--) {
+          if (ids[i] < numGlyphs &&
+              (!emptyGlyphIds[ids[i]] || this.isSymbolicFont))
+            continue;
+          ids.splice(i, 1);
+          glyphs.splice(i, 1);
+          glyphsRemoved++;
+        }
+
+        // checking if it's a "true" symbolic font
+        if (this.isSymbolicFont) {
+          var minUnicode = 0xFFFF, maxUnicode = 0;
+          for (var i = 0, ii = glyphs.length; i < ii; i++) {
+            var unicode = glyphs[i].unicode;
+            minUnicode = Math.min(minUnicode, unicode);
+            maxUnicode = Math.max(maxUnicode, unicode);
+          }
+          // high byte must be the same for min and max unicodes
+          if ((maxUnicode & 0xFF00) != (minUnicode & 0xFF00))
+            this.isSymbolicFont = false;
+        }
+
+        // heuristics: if removed more than 2 glyphs encoding WinAnsiEncoding
+        // does not set properly
+        if (glyphsRemoved > 2) {
+          warn('Switching TrueType encoding to MacRomanEncoding for ' +
+               this.name + ' font');
+          encoding = Encodings.MacRomanEncoding;
+        }
+
+        if (hasShortCmap && this.hasEncoding && !this.isSymbolicFont) {
+          // Re-encode short map encoding to unicode -- that simplifies the
+          // resolution of MacRoman encoded glyphs logic for TrueType fonts:
+          // copying all characters to private use area, all mapping all known
+          // glyphs to the unicodes. The glyphs and ids arrays will grow.
+          var usedUnicodes = [];
+          for (var i = 0, ii = glyphs.length; i < ii; i++) {
+            var code = glyphs[i].unicode;
+            var gid = ids[i];
+            glyphs[i].unicode += kCmapGlyphOffset;
+            toFontChar[code] = glyphs[i].unicode;
+
+            var glyphName = glyphNames[gid] || encoding[code];
+            if (glyphName in GlyphsUnicode) {
+              var unicode = GlyphsUnicode[glyphName];
+              if (unicode in usedUnicodes)
+                continue;
+
+              usedUnicodes[unicode] = true;
+              glyphs.push({
+                unicode: unicode,
+                code: glyphs[i].code
+              });
+              ids.push(gid);
+              toFontChar[code] = unicode;
+            }
+          }
+          this.useToFontChar = true;
+        } else if (!this.isSymbolicFont && (this.hasEncoding ||
+                    properties.glyphNames || differences.length > 0)) {
+          // Re-encode cmap encoding to unicode, based on the 'post' table data
+          // diffrence array or base encoding
+          var reverseMap = [];
+          for (var i = 0, ii = glyphs.length; i < ii; i++)
+            reverseMap[glyphs[i].unicode] = i;
+
+          var newGlyphUnicodes = [];
+          for (var i = 0, ii = glyphs.length; i < ii; i++) {
+            var code = glyphs[i].unicode;
+            var changeCode = false;
+            var gid = ids[i];
+
+            var glyphName = glyphNames[gid];
+            if (!glyphName) {
+              glyphName = differences[code] || encoding[code];
+              changeCode = true;
+            }
+            if (glyphName in GlyphsUnicode) {
+              var unicode = GlyphsUnicode[glyphName];
+              if (!unicode || reverseMap[unicode] === i)
+                continue; // unknown glyph name or in its own place
+
+              newGlyphUnicodes[i] = unicode;
+              if (changeCode)
+                toFontChar[code] = unicode;
+              delete reverseMap[code];
+            }
+          }
+          for (var index in newGlyphUnicodes) {
+            var unicode = newGlyphUnicodes[index];
+            if (reverseMap[unicode]) {
+              // avoiding assigning to the same unicode
+              glyphs[index].unicode = unusedUnicode++;
+              continue;
+            }
+            glyphs[index].unicode = unicode;
+            reverseMap[unicode] = index;
+          }
+          this.useToFontChar = true;
+        }
+
+        // Moving all symbolic font glyphs into 0xF000 - 0xF0FF range.
+        if (this.isSymbolicFont) {
+          for (var i = 0, ii = glyphs.length; i < ii; i++) {
+            var code = glyphs[i].unicode & 0xFF;
+            var fontCharCode = kSymbolicFontGlyphOffset | code;
+            glyphs[i].unicode = toFontChar[code] = fontCharCode;
+          }
+          this.useToFontChar = true;
+        }
+
+        createGlyphNameMap(glyphs, ids, properties);
+        this.glyphNameMap = properties.glyphNameMap;
+      }
+
+      // Converting glyphs and ids into font's cmap table
+      cmap.data = createCMapTable(glyphs, ids);
+      var unicodeIsEnabled = [];
+      for (var i = 0, ii = glyphs.length; i < ii; i++) {
+        unicodeIsEnabled[glyphs[i].unicode] = true;
+      }
+      this.unicodeIsEnabled = unicodeIsEnabled;
+
+      if (!os2) {
+        // extract some more font properties from the OpenType head and
+        // hhea tables; yMin and descent value are always negative
+        var override = {
+          unitsPerEm: int16([head.data[18], head.data[19]]),
+          yMax: int16([head.data[42], head.data[43]]),
+          yMin: int16([head.data[38], head.data[39]]) - 0x10000,
+          ascent: int16([hhea.data[4], hhea.data[5]]),
+          descent: int16([hhea.data[6], hhea.data[7]]) - 0x10000
+        };
+
+        tables.push({
+          tag: 'OS/2',
+          data: stringToArray(createOS2Table(properties, glyphs, override))
+        });
+      }
+
+      // Rewrite the 'post' table if needed
+      if (requiredTables.indexOf('post') != -1) {
+        tables.push({
+          tag: 'post',
+          data: stringToArray(createPostTable(properties))
+        });
+      }
+
+      // Rewrite the 'name' table if needed
+      if (requiredTables.indexOf('name') != -1) {
+        tables.push({
+          tag: 'name',
+          data: stringToArray(createNameTable(this.name))
+        });
+      }
+
+      // Tables needs to be written by ascendant alphabetic order
+      tables.sort(function tables_sort(a, b) {
+        return (a.tag > b.tag) - (a.tag < b.tag);
+      });
+
+      // rewrite the tables but tweak offsets
+      for (var i = 0, ii = tables.length; i < ii; i++) {
+        var table = tables[i];
+        var data = [];
+
+        var tableData = table.data;
+        for (var j = 0, jj = tableData.length; j < jj; j++)
+          data.push(tableData[j]);
+        createTableEntry(ttf, table.tag, data);
+      }
+
+      // Add the table datas
+      for (var i = 0, ii = tables.length; i < ii; i++) {
+        var table = tables[i];
+        var tableData = table.data;
+        ttf.file += arrayToString(tableData);
+
+        // 4-byte aligned data
+        while (ttf.file.length & 3)
+          ttf.file += String.fromCharCode(0);
+      }
+
+      return stringToArray(ttf.file);
+    },
+
+    convert: function Font_convert(fontName, font, properties) {
+      function isFixedPitch(glyphs) {
+        for (var i = 0, ii = glyphs.length - 1; i < ii; i++) {
+          if (glyphs[i] != glyphs[i + 1])
+            return false;
+        }
+        return true;
+      }
+
+      // The offsets object holds at the same time a representation of where
+      // to write the table entry information about a table and another offset
+      // representing the offset where to draw the actual data of a particular
+      // table
+      var kRequiredTablesCount = 9;
+
+      var otf = {
+        file: '',
+        virtualOffset: 9 * (4 * 4)
+      };
+
+      createOpenTypeHeader('\x4F\x54\x54\x4F', otf, 9);
+
+      var charstrings = font.charstrings;
+      properties.fixedPitch = isFixedPitch(charstrings);
+
+      var glyphNameMap = {};
+      for (var i = 0; i < charstrings.length; ++i) {
+        var charstring = charstrings[i];
+        glyphNameMap[charstring.glyph] = charstring.unicode;
+      }
+      this.glyphNameMap = glyphNameMap;
+
+      if (!properties.hasEncoding && (properties.subtype == 'Type1C' ||
+          properties.subtype == 'CIDFontType0C')) {
+        var encoding = [];
+        for (var i = 0; i < charstrings.length; ++i) {
+          var charstring = charstrings[i];
+          encoding[charstring.code] = charstring.glyph;
+        }
+        properties.baseEncoding = encoding;
+      }
+      if (properties.subtype == 'CIDFontType0C') {
+        var toFontChar = [];
+        for (var i = 0; i < charstrings.length; ++i) {
+          var charstring = charstrings[i];
+          toFontChar[charstring.code] = charstring.unicode;
+        }
+        this.toFontChar = toFontChar;
+      }
+
+      var fields = {
+        // PostScript Font Program
+        'CFF ': font.data,
+
+        // OS/2 and Windows Specific metrics
+        'OS/2': stringToArray(createOS2Table(properties, charstrings)),
+
+        // Character to glyphs mapping
+        'cmap': createCMapTable(charstrings.slice(),
+                                ('glyphIds' in font) ? font.glyphIds : null),
+
+        // Font header
+        'head': (function fontFieldsHead() {
+          return stringToArray(
+              '\x00\x01\x00\x00' + // Version number
+              '\x00\x00\x10\x00' + // fontRevision
+              '\x00\x00\x00\x00' + // checksumAdjustement
+              '\x5F\x0F\x3C\xF5' + // magicNumber
+              '\x00\x00' + // Flags
+              '\x03\xE8' + // unitsPerEM (defaulting to 1000)
+              '\x00\x00\x00\x00\x9e\x0b\x7e\x27' + // creation date
+              '\x00\x00\x00\x00\x9e\x0b\x7e\x27' + // modifification date
+              '\x00\x00' + // xMin
+              safeString16(properties.descent) + // yMin
+              '\x0F\xFF' + // xMax
+              safeString16(properties.ascent) + // yMax
+              string16(properties.italicAngle ? 2 : 0) + // macStyle
+              '\x00\x11' + // lowestRecPPEM
+              '\x00\x00' + // fontDirectionHint
+              '\x00\x00' + // indexToLocFormat
+              '\x00\x00');  // glyphDataFormat
+        })(),
+
+        // Horizontal header
+        'hhea': (function fontFieldsHhea() {
+          return stringToArray(
+              '\x00\x01\x00\x00' + // Version number
+              safeString16(properties.ascent) + // Typographic Ascent
+              safeString16(properties.descent) + // Typographic Descent
+              '\x00\x00' + // Line Gap
+              '\xFF\xFF' + // advanceWidthMax
+              '\x00\x00' + // minLeftSidebearing
+              '\x00\x00' + // minRightSidebearing
+              '\x00\x00' + // xMaxExtent
+              safeString16(properties.capHeight) + // caretSlopeRise
+              safeString16(Math.tan(properties.italicAngle) *
+                       properties.xHeight) + // caretSlopeRun
+              '\x00\x00' + // caretOffset
+              '\x00\x00' + // -reserved-
+              '\x00\x00' + // -reserved-
+              '\x00\x00' + // -reserved-
+              '\x00\x00' + // -reserved-
+              '\x00\x00' + // metricDataFormat
+              string16(charstrings.length + 1)); // Number of HMetrics
+        })(),
+
+        // Horizontal metrics
+        'hmtx': (function fontFieldsHmtx() {
+          var hmtx = '\x00\x00\x00\x00'; // Fake .notdef
+          for (var i = 0, ii = charstrings.length; i < ii; i++) {
+            var charstring = charstrings[i];
+            var width = 'width' in charstring ? charstring.width : 0;
+            hmtx += string16(width) + string16(0);
+          }
+          return stringToArray(hmtx);
+        })(),
+
+        // Maximum profile
+        'maxp': (function fontFieldsMaxp() {
+          return stringToArray(
+              '\x00\x00\x50\x00' + // Version number
+             string16(charstrings.length + 1)); // Num of glyphs
+        })(),
+
+        // Naming tables
+        'name': stringToArray(createNameTable(fontName)),
+
+        // PostScript informations
+        'post': stringToArray(createPostTable(properties))
+      };
+
+      for (var field in fields)
+        createTableEntry(otf, field, fields[field]);
+
+      for (var field in fields) {
+        var table = fields[field];
+        otf.file += arrayToString(table);
+      }
+
+      return stringToArray(otf.file);
+    },
+
+    buildToFontChar: function Font_buildToFontChar(toUnicode) {
+      var result = [];
+      var unusedUnicode = kCmapGlyphOffset;
+      for (var i = 0, ii = toUnicode.length; i < ii; i++) {
+        var unicode = toUnicode[i];
+        var fontCharCode = typeof unicode === 'object' ? unusedUnicode++ :
+          unicode;
+        if (typeof unicode !== 'undefined')
+          result[i] = fontCharCode;
+      }
+      return result;
+    },
+
+    rebuildToUnicode: function Font_rebuildToUnicode(properties) {
+      var firstChar = properties.firstChar, lastChar = properties.lastChar;
+      var map = [];
+      if (properties.composite) {
+        var isIdentityMap = this.cidToUnicode.length == 0;
+        for (var i = firstChar, ii = lastChar; i <= ii; i++) {
+          // TODO missing map the character according font's CMap
+          var cid = i;
+          map[i] = isIdentityMap ? cid : this.cidToUnicode[cid];
+        }
+      } else {
+        for (var i = firstChar, ii = lastChar; i <= ii; i++) {
+          var glyph = properties.differences[i];
+          if (!glyph)
+            glyph = properties.baseEncoding[i];
+          if (!!glyph && (glyph in GlyphsUnicode))
+            map[i] = GlyphsUnicode[glyph];
+        }
+      }
+      this.toUnicode = map;
+    },
+
+    loadCidToUnicode: function Font_loadCidToUnicode(properties) {
+      if (!properties.cidSystemInfo)
+        return;
+
+      var cidToUnicodeMap = [], unicodeToCIDMap = [];
+      this.cidToUnicode = cidToUnicodeMap;
+      this.unicodeToCID = unicodeToCIDMap;
+
+      var cidSystemInfo = properties.cidSystemInfo;
+      var cidToUnicode;
+      if (cidSystemInfo) {
+        cidToUnicode = CIDToUnicodeMaps[
+          cidSystemInfo.registry + '-' + cidSystemInfo.ordering];
+      }
+
+      if (!cidToUnicode)
+        return; // identity encoding
+
+      var cid = 1, i, j, k, ii;
+      for (i = 0, ii = cidToUnicode.length; i < ii; ++i) {
+        var unicode = cidToUnicode[i];
+        if (isArray(unicode)) {
+          var length = unicode.length;
+          for (j = 0; j < length; j++) {
+            cidToUnicodeMap[cid] = unicode[j];
+            unicodeToCIDMap[unicode[j]] = cid;
+          }
+          cid++;
+        } else if (typeof unicode === 'object') {
+          var fillLength = unicode.f;
+          if (fillLength) {
+            k = unicode.c;
+            for (j = 0; j < fillLength; ++j) {
+              cidToUnicodeMap[cid] = k;
+              unicodeToCIDMap[k] = cid;
+              cid++;
+              k++;
+            }
+          } else
+            cid += unicode.s;
+        } else if (unicode) {
+          cidToUnicodeMap[cid] = unicode;
+          unicodeToCIDMap[unicode] = cid;
+          cid++;
+        } else
+          cid++;
+      }
+    },
+
+    bindDOM: function Font_bindDOM(data) {
+      var fontName = this.loadedName;
+
+      // Add the font-face rule to the document
+      var url = ('url(data:' + this.mimetype + ';base64,' +
+                 PdfJS_window.window.btoa(data) + ');');
+      var rule = "@font-face { font-family:'" + fontName + "';src:" + url + '}';
+
+      var styleElement = PdfJS_window.document.createElement('style');
+      PdfJS_window.document.documentElement.getElementsByTagName('head')[0].appendChild(
+        styleElement);
+
+      var styleSheet = styleElement.sheet;
+      styleSheet.insertRule(rule, styleSheet.cssRules.length);
+
+      if (PDFJS.pdfBug && FontInspector.enabled)
+        FontInspector.fontAdded(this, url);
+
+      return rule;
+    },
+
+    get spaceWidth() {
+      // trying to estimate space character width
+      var possibleSpaceReplacements = ['space', 'minus', 'one', 'i'];
+      var width;
+      for (var i = 0, ii = possibleSpaceReplacements.length; i < ii; i++) {
+        var glyphName = possibleSpaceReplacements[i];
+        // if possible, getting width by glyph name
+        if (glyphName in this.widths) {
+          width = this.widths[glyphName];
+          break;
+        }
+        var glyphUnicode = GlyphsUnicode[glyphName];
+        // finding the charcode via unicodeToCID map
+        var charcode = 0;
+        if (this.composite)
+          charcode = this.unicodeToCID[glyphUnicode];
+        // ... via toUnicode map
+        if (!charcode && 'toUnicode' in this)
+          charcode = this.toUnicode.indexOf(glyphUnicode);
+        // setting it to unicode if negative or undefined
+        if (!(charcode > 0))
+          charcode = glyphUnicode;
+        // trying to get width via charcode
+        width = this.widths[charcode];
+        if (width)
+          break; // the non-zero width found
+      }
+      width = (width || this.defaultWidth) * this.widthMultiplier;
+      return shadow(this, 'spaceWidth', width);
+    },
+
+    charToGlyph: function Font_charToGlyph(charcode) {
+      var fontCharCode, width, operatorList, disabled;
+
+      var width = this.widths[charcode];
+
+      switch (this.type) {
+        case 'CIDFontType0':
+          if (this.noUnicodeAdaptation) {
+            width = this.widths[this.unicodeToCID[charcode] || charcode];
+            fontCharCode = mapPrivateUseChars(charcode);
+            break;
+          }
+          fontCharCode = this.toFontChar[charcode] || charcode;
+          break;
+        case 'CIDFontType2':
+          if (this.noUnicodeAdaptation) {
+            width = this.widths[this.unicodeToCID[charcode] || charcode];
+            fontCharCode = mapPrivateUseChars(charcode);
+            break;
+          }
+          fontCharCode = this.toFontChar[charcode] || charcode;
+          break;
+        case 'Type1':
+          var glyphName = this.differences[charcode] || this.encoding[charcode];
+          if (!isNum(width))
+            width = this.widths[glyphName];
+          if (this.noUnicodeAdaptation) {
+            fontCharCode = mapPrivateUseChars(GlyphsUnicode[glyphName] ||
+              charcode);
+            break;
+          }
+          fontCharCode = this.glyphNameMap[glyphName] ||
+            GlyphsUnicode[glyphName] || charcode;
+          break;
+        case 'Type3':
+          var glyphName = this.differences[charcode] || this.encoding[charcode];
+          operatorList = this.charProcOperatorList[glyphName];
+          fontCharCode = charcode;
+          break;
+        case 'TrueType':
+          if (this.useToFontChar) {
+            fontCharCode = this.toFontChar[charcode] || charcode;
+            break;
+          }
+          var glyphName = this.differences[charcode] || this.encoding[charcode];
+          if (!glyphName)
+            glyphName = Encodings.StandardEncoding[charcode];
+          if (!isNum(width))
+            width = this.widths[glyphName];
+          if (this.noUnicodeAdaptation) {
+            fontCharCode = GlyphsUnicode[glyphName] || charcode;
+            break;
+          }
+          if (!this.hasEncoding || this.isSymbolicFont) {
+            fontCharCode = this.useToFontChar ? this.toFontChar[charcode] :
+              charcode;
+            break;
+          }
+
+          // MacRoman encoding address by re-encoding the cmap table
+          fontCharCode = glyphName in this.glyphNameMap ?
+            this.glyphNameMap[glyphName] : GlyphsUnicode[glyphName];
+          break;
+        default:
+          warn('Unsupported font type: ' + this.type);
+          break;
+      }
+
+      var unicodeChars = !('toUnicode' in this) ? charcode :
+        this.toUnicode[charcode] || charcode;
+      if (typeof unicodeChars === 'number')
+        unicodeChars = String.fromCharCode(unicodeChars);
+
+      width = (isNum(width) ? width : this.defaultWidth) * this.widthMultiplier;
+      disabled = this.unicodeIsEnabled ?
+        !this.unicodeIsEnabled[fontCharCode] : false;
+
+      return {
+        fontChar: String.fromCharCode(fontCharCode),
+        unicode: unicodeChars,
+        width: width,
+        disabled: disabled,
+        operatorList: operatorList
+      };
+    },
+
+    charsToGlyphs: function Font_charsToGlyphs(chars) {
+      var charsCache = this.charsCache;
+      var glyphs;
+
+      // if we translated this string before, just grab it from the cache
+      if (charsCache) {
+        glyphs = charsCache[chars];
+        if (glyphs)
+          return glyphs;
+      }
+
+      // lazily create the translation cache
+      if (!charsCache)
+        charsCache = this.charsCache = Object.create(null);
+
+      glyphs = [];
+
+      if (this.wideChars) {
+        // composite fonts have multi-byte strings convert the string from
+        // single-byte to multi-byte
+        // XXX assuming CIDFonts are two-byte - later need to extract the
+        // correct byte encoding according to the PDF spec
+        var length = chars.length - 1; // looping over two bytes at a time so
+                                       // loop should never end on the last byte
+        for (var i = 0; i < length; i++) {
+          var charcode = int16([chars.charCodeAt(i++), chars.charCodeAt(i)]);
+          var glyph = this.charToGlyph(charcode);
+          glyphs.push(glyph);
+          // placing null after each word break charcode (ASCII SPACE)
+          if (charcode == 0x20)
+            glyphs.push(null);
+        }
+      }
+      else {
+        for (var i = 0, ii = chars.length; i < ii; ++i) {
+          var charcode = chars.charCodeAt(i);
+          var glyph = this.charToGlyph(charcode);
+          glyphs.push(glyph);
+          if (charcode == 0x20)
+            glyphs.push(null);
+        }
+      }
+
+      // Enter the translated string into the cache
+      return (charsCache[chars] = glyphs);
+    }
+  };
+
+  return Font;
+})();
+
+/*
+ * Type1Parser encapsulate the needed code for parsing a Type1 font
+ * program. Some of its logic depends on the Type2 charstrings
+ * structure.
+ */
+var Type1Parser = function type1Parser() {
+  /*
+   * Decrypt a Sequence of Ciphertext Bytes to Produce the Original Sequence
+   * of Plaintext Bytes. The function took a key as a parameter which can be
+   * for decrypting the eexec block of for decoding charStrings.
+   */
+  var kEexecEncryptionKey = 55665;
+  var kCharStringsEncryptionKey = 4330;
+
+  function decrypt(stream, key, discardNumber) {
+    var r = key, c1 = 52845, c2 = 22719;
+    var decryptedString = [];
+
+    var value = '';
+    var count = stream.length;
+    for (var i = 0; i < count; i++) {
+      value = stream[i];
+      decryptedString[i] = value ^ (r >> 8);
+      r = ((value + r) * c1 + c2) & ((1 << 16) - 1);
+    }
+    return decryptedString.slice(discardNumber);
+  }
+
+  /*
+   * CharStrings are encoded following the the CharString Encoding sequence
+   * describe in Chapter 6 of the "Adobe Type1 Font Format" specification.
+   * The value in a byte indicates a command, a number, or subsequent bytes
+   * that are to be interpreted in a special way.
+   *
+   * CharString Number Encoding:
+   *  A CharString byte containing the values from 32 through 255 inclusive
+   *  indicate an integer. These values are decoded in four ranges.
+   *
+   * 1. A CharString byte containing a value, v, between 32 and 246 inclusive,
+   * indicate the integer v - 139. Thus, the integer values from -107 through
+   * 107 inclusive may be encoded in single byte.
+   *
+   * 2. A CharString byte containing a value, v, between 247 and 250 inclusive,
+   * indicates an integer involving the next byte, w, according to the formula:
+   * [(v - 247) x 256] + w + 108
+   *
+   * 3. A CharString byte containing a value, v, between 251 and 254 inclusive,
+   * indicates an integer involving the next byte, w, according to the formula:
+   * -[(v - 251) * 256] - w - 108
+   *
+   * 4. A CharString containing the value 255 indicates that the next 4 bytes
+   * are a two complement signed integer. The first of these bytes contains the
+   * highest order bits, the second byte contains the next higher order bits
+   * and the fourth byte contain the lowest order bits.
+   *
+   *
+   * CharString Command Encoding:
+   *  CharStrings commands are encoded in 1 or 2 bytes.
+   *
+   *  Single byte commands are encoded in 1 byte that contains a value between
+   *  0 and 31 inclusive.
+   *  If a command byte contains the value 12, then the value in the next byte
+   *  indicates a command. This "escape" mechanism allows many extra commands
+   * to be encoded and this encoding technique helps to minimize the length of
+   * the charStrings.
+   */
+  var charStringDictionary = {
+    '1': 'hstem',
+    '3': 'vstem',
+    '4': 'vmoveto',
+    '5': 'rlineto',
+    '6': 'hlineto',
+    '7': 'vlineto',
+    '8': 'rrcurveto',
+
+    // closepath is a Type1 command that do not take argument and is useless
+    // in Type2 and it can simply be ignored.
+    '9': null, // closepath
+
+    '10': 'callsubr',
+
+    // return is normally used inside sub-routines to tells to the execution
+    // flow that it can be back to normal.
+    // During the translation process Type1 charstrings will be flattened and
+    // sub-routines will be embedded directly into the charstring directly, so
+    // this can be ignored safely.
+    '11': 'return',
+
+    '12': {
+      // dotsection is a Type1 command to specify some hinting feature for dots
+      // that do not take a parameter and it can safely be ignored for Type2.
+      '0': null, // dotsection
+
+      // [vh]stem3 are Type1 only and Type2 supports [vh]stem with multiple
+      // parameters, so instead of returning [vh]stem3 take a shortcut and
+      // return [vhstem] instead.
+      '1': 'vstem',
+      '2': 'hstem',
+
+      // Type1 only command with command not (yet) built-in ,throw an error
+      '6': -1, // seac
+      '7': -1, // sbw
+
+      '11': 'sub',
+      '12': 'div',
+
+      // callothersubr is a mechanism to make calls on the postscript
+      // interpreter, this is not supported by Type2 charstring but hopefully
+      // most of the default commands can be ignored safely.
+      '16': 'callothersubr',
+
+      '17': 'pop',
+
+      // setcurrentpoint sets the current point to x, y without performing a
+      // moveto (this is a one shot positionning command). This is used only
+      // with the return of an OtherSubrs call.
+      // TODO Implement the OtherSubrs charstring embedding and replace this
+      // call by a no-op, like 2 'pop' commands for example.
+      '33': null // setcurrentpoint
+    },
+    '13': 'hsbw',
+    '14': 'endchar',
+    '21': 'rmoveto',
+    '22': 'hmoveto',
+    '30': 'vhcurveto',
+    '31': 'hvcurveto'
+  };
+
+  var kEscapeCommand = 12;
+
+  function decodeCharString(array) {
+    var charstring = [];
+    var lsb = 0;
+    var width = 0;
+    var flexState = 0;
+
+    var value = '';
+    var count = array.length;
+    for (var i = 0; i < count; i++) {
+      value = array[i];
+
+      if (value < 32) {
+        var command = null;
+        if (value == kEscapeCommand) {
+          var escape = array[++i];
+
+          // TODO Clean this code
+          if (escape == 16) {
+            var index = charstring.pop();
+            var argc = charstring.pop();
+            for (var j = 0; j < argc; j++)
+              charstring.push('drop');
+
+            // If the flex mechanism is not used in a font program, Adobe
+            // states that entries 0, 1 and 2 can simply be replaced by
+            // {}, which means that we can simply ignore them.
+            if (index < 3) {
+              continue;
+            }
+
+            // This is the same things about hint replacement, if it is not used
+            // entry 3 can be replaced by {3}
+            // TODO support hint replacment
+            if (index == 3) {
+              charstring.push(3);
+              i++;
+              continue;
+            }
+          } else if (escape == 17 || escape == 33) {
+            // pop or setcurrentpoint commands can be ignored
+            // since we are not doing callothersubr
+            continue;
+          } else if (!kHintingEnabled && (escape == 1 || escape == 2)) {
+            charstring.push('drop', 'drop', 'drop', 'drop', 'drop', 'drop');
+            continue;
+          }
+
+          command = charStringDictionary['12'][escape];
+        } else {
+          // TODO Clean this code
+          if (value == 13) { // hsbw
+            if (charstring.length == 2) {
+              lsb = charstring[0];
+              width = charstring[1];
+              charstring.splice(0, 1);
+            } else if (charstring.length == 4 && charstring[3] == 'div') {
+              lsb = charstring[0];
+              width = charstring[1] / charstring[2];
+              charstring.splice(0, 1);
+            } else if (charstring.length == 4 && charstring[2] == 'div') {
+              lsb = charstring[0] / charstring[1];
+              width = charstring[3];
+              charstring.splice(0, 3);
+            } else {
+              error('Unsupported hsbw format: ' + charstring);
+            }
+
+            charstring.push(lsb, 'hmoveto');
+            continue;
+          } else if (value == 10) { // callsubr
+            if (charstring[charstring.length - 1] < 3) { // subr #0..2
+              var subrNumber = charstring.pop();
+              switch (subrNumber) {
+                case 1:
+                  flexState = 1; // prepare for flex coordinates
+                  break;
+                case 2:
+                  flexState = 2; // flex in progress
+                  break;
+                case 0:
+                  // type2 flex command does not need final coords
+                  charstring.push('exch', 'drop', 'exch', 'drop');
+                  charstring.push('flex');
+                  flexState = 0;
+                  break;
+              }
+              continue;
+            }
+          } else if (value == 21 && flexState > 0) {
+            if (flexState > 1)
+              continue; // ignoring rmoveto
+            value = 5; // first segment replacing with rlineto
+          } else if (!kHintingEnabled && (value == 1 || value == 3)) {
+            charstring.push('drop', 'drop');
+            continue;
+          }
+          command = charStringDictionary[value];
+        }
+
+        // Some charstring commands are meaningless in Type2 and will return
+        // a null, let's just ignored them
+        if (!command && i < count) {
+          continue;
+        } else if (!command) {
+          break;
+        } else if (command == -1) {
+          warn('Support for Type1 command ' + value +
+                ' (' + escape + ') is not implemented in charstring: ' +
+                charstring);
+          if (value == 12) {
+            // we know how to ignore only some the Type1 commands
+            switch (escape) {
+              case 7:
+                charstring.push('drop', 'drop', 'drop', 'drop');
+                continue;
+              case 8:
+                charstring.push('drop');
+                continue;
+            }
+          }
+        }
+
+        value = command;
+      } else if (value <= 246) {
+        value = value - 139;
+      } else if (value <= 250) {
+        value = ((value - 247) * 256) + array[++i] + 108;
+      } else if (value <= 254) {
+        value = -((value - 251) * 256) - array[++i] - 108;
+      } else {
+        value = (array[++i] & 0xff) << 24 | (array[++i] & 0xff) << 16 |
+                (array[++i] & 0xff) << 8 | (array[++i] & 0xff) << 0;
+      }
+
+      charstring.push(value);
+    }
+
+    return { charstring: charstring, width: width, lsb: lsb };
+  }
+
+  /*
+   * Returns an object containing a Subrs array and a CharStrings
+   * array extracted from and eexec encrypted block of data
+   */
+  function readNumberArray(str, index) {
+    var start = index;
+    while (str[index++] != '[')
+      start++;
+    start++;
+
+    var count = 0;
+    while (str[index++] != ']')
+      count++;
+
+    str = str.substr(start, count);
+
+    str = str.trim();
+    // Remove adjacent spaces
+    str = str.replace(/\s+/g, ' ');
+
+    var array = str.split(' ');
+    for (var i = 0, ii = array.length; i < ii; i++)
+      array[i] = parseFloat(array[i] || 0);
+    return array;
+  }
+
+  function readNumber(str, index) {
+    while (str[index] == ' ')
+      index++;
+
+    var start = index;
+
+    var count = 0;
+    while (str[index++] != ' ')
+      count++;
+
+    return parseFloat(str.substr(start, count) || 0);
+  }
+
+  function isSeparator(c) {
+    return c == ' ' || c == '\n' || c == '\x0d';
+  }
+
+  this.extractFontProgram = function Type1Parser_extractFontProgram(stream) {
+    var eexec = decrypt(stream, kEexecEncryptionKey, 4);
+    var eexecStr = '';
+    for (var i = 0, ii = eexec.length; i < ii; i++)
+      eexecStr += String.fromCharCode(eexec[i]);
+
+    var glyphsSection = false, subrsSection = false;
+    var program = {
+      subrs: [],
+      charstrings: [],
+      properties: {
+        'privateData': {
+          'lenIV': 4
+        }
+      }
+    };
+
+    var glyph = '';
+    var token = '';
+    var length = 0;
+
+    var c = '';
+    var count = eexecStr.length;
+    for (var i = 0; i < count; i++) {
+      var getToken = function getToken() {
+        while (i < count && isSeparator(eexecStr[i]))
+          ++i;
+
+        var token = '';
+        while (i < count && !isSeparator(eexecStr[i]))
+          token += eexecStr[i++];
+
+        return token;
+      };
+      var c = eexecStr[i];
+
+      if ((glyphsSection || subrsSection) &&
+          (token == 'RD' || token == '-|')) {
+        i++;
+        var data = eexec.slice(i, i + length);
+        var lenIV = program.properties.privateData['lenIV'];
+        var encoded = decrypt(data, kCharStringsEncryptionKey, lenIV);
+        var str = decodeCharString(encoded);
+
+        if (glyphsSection) {
+          program.charstrings.push({
+            glyph: glyph,
+            data: str.charstring,
+            lsb: str.lsb,
+            width: str.width
+          });
+        } else {
+          program.subrs.push(str.charstring);
+        }
+        i += length;
+        token = '';
+      } else if (isSeparator(c)) {
+        length = parseInt(token, 10);
+        token = '';
+      } else {
+        token += c;
+        if (!glyphsSection) {
+          switch (token) {
+            case '/CharString':
+              glyphsSection = true;
+              break;
+            case '/Subrs':
+              ++i;
+              var num = parseInt(getToken(), 10);
+              getToken(); // read in 'array'
+              for (var j = 0; j < num; ++j) {
+                var t = getToken(); // read in 'dup'
+                if (t == 'ND' || t == '|-' || t == 'noaccess')
+                  break;
+                var index = parseInt(getToken(), 10);
+                if (index > j)
+                  j = index;
+                var length = parseInt(getToken(), 10);
+                getToken(); // read in 'RD'
+                var data = eexec.slice(i + 1, i + 1 + length);
+                var lenIV = program.properties.privateData['lenIV'];
+                var encoded = decrypt(data, kCharStringsEncryptionKey, lenIV);
+                var str = decodeCharString(encoded);
+                i = i + 1 + length;
+                t = getToken(); // read in 'NP'
+                if (t == 'noaccess')
+                  getToken(); // read in 'put'
+                program.subrs[index] = str.charstring;
+              }
+              break;
+            case '/BlueValues':
+            case '/OtherBlues':
+            case '/FamilyBlues':
+            case '/FamilyOtherBlues':
+            case '/StemSnapH':
+            case '/StemSnapV':
+              program.properties.privateData[token.substring(1)] =
+                readNumberArray(eexecStr, i + 1);
+              break;
+            case '/StdHW':
+            case '/StdVW':
+              program.properties.privateData[token.substring(1)] =
+                readNumberArray(eexecStr, i + 2)[0];
+              break;
+            case '/BlueShift':
+            case '/lenIV':
+            case '/BlueFuzz':
+            case '/BlueScale':
+            case '/LanguageGroup':
+            case '/ExpansionFactor':
+              program.properties.privateData[token.substring(1)] =
+                readNumber(eexecStr, i + 1);
+              break;
+          }
+        } else if (c == '/') {
+          token = glyph = '';
+          while ((c = eexecStr[++i]) != ' ')
+            glyph += c;
+        }
+      }
+    }
+
+    return program;
+  };
+
+  this.extractFontHeader = function Type1Parser_extractFontHeader(stream,
+                                                                  properties) {
+    var headerString = '';
+    for (var i = 0, ii = stream.length; i < ii; i++)
+      headerString += String.fromCharCode(stream[i]);
+
+    var token = '';
+    var count = headerString.length;
+    for (var i = 0; i < count; i++) {
+      var getToken = function getToken() {
+        var character = headerString[i];
+        while (i < count && (isSeparator(character) || character == '/'))
+          character = headerString[++i];
+
+        var token = '';
+        while (i < count && !(isSeparator(character) || character == '/')) {
+          token += character;
+          character = headerString[++i];
+        }
+
+        return token;
+      };
+
+      var c = headerString[i];
+      if (isSeparator(c)) {
+        switch (token) {
+          case '/FontMatrix':
+            var matrix = readNumberArray(headerString, i + 1);
+
+            // The FontMatrix is in unitPerEm, so make it pixels
+            for (var j = 0, jj = matrix.length; j < jj; j++)
+              matrix[j] *= 1000;
+
+            // Make the angle into the right direction
+            matrix[2] *= -1;
+
+            properties.fontMatrix = matrix;
+            break;
+          case '/Encoding':
+            var encodingArg = getToken();
+            var encoding;
+            if (!/^\d+$/.test(encodingArg)) {
+              // encoding name is specified
+              encoding = Encodings[encodingArg];
+            } else {
+              encoding = [];
+              var size = parseInt(encodingArg, 10);
+              getToken(); // read in 'array'
+
+              for (var j = 0; j < size; j++) {
+                var token = getToken();
+                if (token == 'dup') {
+                  var index = parseInt(getToken(), 10);
+                  var glyph = getToken();
+                  encoding[index] = glyph;
+                  getToken(); // read the in 'put'
+                }
+              }
+            }
+            if (!properties.hasEncoding && encoding) {
+              properties.baseEncoding = encoding;
+              break;
+            }
+            break;
+        }
+        token = '';
+      } else {
+        token += c;
+      }
+    }
+  };
+};
+
+/**
+ * The CFF class takes a Type1 file and wrap it into a
+ * 'Compact Font Format' which itself embed Type2 charstrings.
+ */
+var CFFStandardStrings = [
+  '.notdef', 'space', 'exclam', 'quotedbl', 'numbersign', 'dollar', 'percent',
+  'ampersand', 'quoteright', 'parenleft', 'parenright', 'asterisk', 'plus',
+  'comma', 'hyphen', 'period', 'slash', 'zero', 'one', 'two', 'three', 'four',
+  'five', 'six', 'seven', 'eight', 'nine', 'colon', 'semicolon', 'less',
+  'equal', 'greater', 'question', 'at', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H',
+  'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W',
+  'X', 'Y', 'Z', 'bracketleft', 'backslash', 'bracketright', 'asciicircum',
+  'underscore', 'quoteleft', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j',
+  'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y',
+  'z', 'braceleft', 'bar', 'braceright', 'asciitilde', 'exclamdown', 'cent',
+  'sterling', 'fraction', 'yen', 'florin', 'section', 'currency',
+  'quotesingle', 'quotedblleft', 'guillemotleft', 'guilsinglleft',
+  'guilsinglright', 'fi', 'fl', 'endash', 'dagger', 'daggerdbl',
+  'periodcentered', 'paragraph', 'bullet', 'quotesinglbase', 'quotedblbase',
+  'quotedblright', 'guillemotright', 'ellipsis', 'perthousand', 'questiondown',
+  'grave', 'acute', 'circumflex', 'tilde', 'macron', 'breve', 'dotaccent',
+  'dieresis', 'ring', 'cedilla', 'hungarumlaut', 'ogonek', 'caron', 'emdash',
+  'AE', 'ordfeminine', 'Lslash', 'Oslash', 'OE', 'ordmasculine', 'ae',
+  'dotlessi', 'lslash', 'oslash', 'oe', 'germandbls', 'onesuperior',
+  'logicalnot', 'mu', 'trademark', 'Eth', 'onehalf', 'plusminus', 'Thorn',
+  'onequarter', 'divide', 'brokenbar', 'degree', 'thorn', 'threequarters',
+  'twosuperior', 'registered', 'minus', 'eth', 'multiply', 'threesuperior',
+  'copyright', 'Aacute', 'Acircumflex', 'Adieresis', 'Agrave', 'Aring',
+  'Atilde', 'Ccedilla', 'Eacute', 'Ecircumflex', 'Edieresis', 'Egrave',
+  'Iacute', 'Icircumflex', 'Idieresis', 'Igrave', 'Ntilde', 'Oacute',
+  'Ocircumflex', 'Odieresis', 'Ograve', 'Otilde', 'Scaron', 'Uacute',
+  'Ucircumflex', 'Udieresis', 'Ugrave', 'Yacute', 'Ydieresis', 'Zcaron',
+  'aacute', 'acircumflex', 'adieresis', 'agrave', 'aring', 'atilde',
+  'ccedilla', 'eacute', 'ecircumflex', 'edieresis', 'egrave', 'iacute',
+  'icircumflex', 'idieresis', 'igrave', 'ntilde', 'oacute', 'ocircumflex',
+  'odieresis', 'ograve', 'otilde', 'scaron', 'uacute', 'ucircumflex',
+  'udieresis', 'ugrave', 'yacute', 'ydieresis', 'zcaron', 'exclamsmall',
+  'Hungarumlautsmall', 'dollaroldstyle', 'dollarsuperior', 'ampersandsmall',
+  'Acutesmall', 'parenleftsuperior', 'parenrightsuperior', '266 ff',
+  'onedotenleader', 'zerooldstyle', 'oneoldstyle', 'twooldstyle',
+  'threeoldstyle', 'fouroldstyle', 'fiveoldstyle', 'sixoldstyle',
+  'sevenoldstyle', 'eightoldstyle', 'nineoldstyle', 'commasuperior',
+  'threequartersemdash', 'periodsuperior', 'questionsmall', 'asuperior',
+  'bsuperior', 'centsuperior', 'dsuperior', 'esuperior', 'isuperior',
+  'lsuperior', 'msuperior', 'nsuperior', 'osuperior', 'rsuperior', 'ssuperior',
+  'tsuperior', 'ff', 'ffi', 'ffl', 'parenleftinferior', 'parenrightinferior',
+  'Circumflexsmall', 'hyphensuperior', 'Gravesmall', 'Asmall', 'Bsmall',
+  'Csmall', 'Dsmall', 'Esmall', 'Fsmall', 'Gsmall', 'Hsmall', 'Ismall',
+  'Jsmall', 'Ksmall', 'Lsmall', 'Msmall', 'Nsmall', 'Osmall', 'Psmall',
+  'Qsmall', 'Rsmall', 'Ssmall', 'Tsmall', 'Usmall', 'Vsmall', 'Wsmall',
+  'Xsmall', 'Ysmall', 'Zsmall', 'colonmonetary', 'onefitted', 'rupiah',
+  'Tildesmall', 'exclamdownsmall', 'centoldstyle', 'Lslashsmall',
+  'Scaronsmall', 'Zcaronsmall', 'Dieresissmall', 'Brevesmall', 'Caronsmall',
+  'Dotaccentsmall', 'Macronsmall', 'figuredash', 'hypheninferior',
+  'Ogoneksmall', 'Ringsmall', 'Cedillasmall', 'questiondownsmall', 'oneeighth',
+  'threeeighths', 'fiveeighths', 'seveneighths', 'onethird', 'twothirds',
+  'zerosuperior', 'foursuperior', 'fivesuperior', 'sixsuperior',
+  'sevensuperior', 'eightsuperior', 'ninesuperior', 'zeroinferior',
+  'oneinferior', 'twoinferior', 'threeinferior', 'fourinferior',
+  'fiveinferior', 'sixinferior', 'seveninferior', 'eightinferior',
+  'nineinferior', 'centinferior', 'dollarinferior', 'periodinferior',
+  'commainferior', 'Agravesmall', 'Aacutesmall', 'Acircumflexsmall',
+  'Atildesmall', 'Adieresissmall', 'Aringsmall', 'AEsmall', 'Ccedillasmall',
+  'Egravesmall', 'Eacutesmall', 'Ecircumflexsmall', 'Edieresissmall',
+  'Igravesmall', 'Iacutesmall', 'Icircumflexsmall', 'Idieresissmall',
+  'Ethsmall', 'Ntildesmall', 'Ogravesmall', 'Oacutesmall', 'Ocircumflexsmall',
+  'Otildesmall', 'Odieresissmall', 'OEsmall', 'Oslashsmall', 'Ugravesmall',
+  'Uacutesmall', 'Ucircumflexsmall', 'Udieresissmall', 'Yacutesmall',
+  'Thornsmall', 'Ydieresissmall', '001.000', '001.001', '001.002', '001.003',
+  'Black', 'Bold', 'Book', 'Light', 'Medium', 'Regular', 'Roman', 'Semibold'
+];
+
+var type1Parser = new Type1Parser();
+
+// Type1Font is also a CIDFontType0.
+var Type1Font = function Type1Font(name, file, properties) {
+  // Get the data block containing glyphs and subrs informations
+  var headerBlock = file.getBytes(properties.length1);
+  type1Parser.extractFontHeader(headerBlock, properties);
+
+  // Decrypt the data blocks and retrieve it's content
+  var eexecBlock = file.getBytes(properties.length2);
+  var data = type1Parser.extractFontProgram(eexecBlock);
+  for (var info in data.properties)
+    properties[info] = data.properties[info];
+
+  var charstrings = this.getOrderedCharStrings(data.charstrings, properties);
+  var type2Charstrings = this.getType2Charstrings(charstrings);
+  var subrs = this.getType2Subrs(data.subrs);
+
+  this.charstrings = charstrings;
+  this.data = this.wrap(name, type2Charstrings, this.charstrings,
+                        subrs, properties);
+};
+
+Type1Font.prototype = {
+  createCFFIndexHeader: function Type1Font_createCFFIndexHeader(objects,
+                                                                isByte) {
+    // First 2 bytes contains the number of objects contained into this index
+    var count = objects.length;
+
+    // If there is no object, just create an array saying that with another
+    // offset byte.
+    if (count == 0)
+      return '\x00\x00\x00';
+
+    var data = String.fromCharCode((count >> 8) & 0xFF, count & 0xff);
+
+    // Next byte contains the offset size use to reference object in the file
+    // Actually we're using 0x04 to be sure to be able to store everything
+    // without thinking of it while coding.
+    data += '\x04';
+
+    // Add another offset after this one because we need a new offset
+    var relativeOffset = 1;
+    for (var i = 0; i < count + 1; i++) {
+      data += String.fromCharCode((relativeOffset >>> 24) & 0xFF,
+                                  (relativeOffset >> 16) & 0xFF,
+                                  (relativeOffset >> 8) & 0xFF,
+                                  relativeOffset & 0xFF);
+
+      if (objects[i])
+        relativeOffset += objects[i].length;
+    }
+
+    for (var i = 0; i < count; i++) {
+      for (var j = 0, jj = objects[i].length; j < jj; j++)
+        data += isByte ? String.fromCharCode(objects[i][j] & 0xFF) :
+                objects[i][j];
+    }
+    return data;
+  },
+
+  encodeNumber: function Type1Font_encodeNumber(value) {
+    // some of the fonts has ouf-of-range values
+    // they are just arithmetic overflows
+    // make sanitizer happy
+    value |= 0;
+    if (value >= -32768 && value <= 32767) {
+      return '\x1c' +
+             String.fromCharCode((value >> 8) & 0xFF) +
+             String.fromCharCode(value & 0xFF);
+    } else {
+      return '\x1d' +
+             String.fromCharCode((value >> 24) & 0xFF) +
+             String.fromCharCode((value >> 16) & 0xFF) +
+             String.fromCharCode((value >> 8) & 0xFF) +
+             String.fromCharCode(value & 0xFF);
+    }
+  },
+
+  getOrderedCharStrings: function Type1Font_getOrderedCharStrings(glyphs,
+                                                            properties) {
+    var charstrings = [];
+    var i, length, glyphName;
+    var unusedUnicode = kCmapGlyphOffset;
+    for (i = 0, length = glyphs.length; i < length; i++) {
+      var item = glyphs[i];
+      var glyphName = item.glyph;
+      var unicode = glyphName in GlyphsUnicode ?
+        GlyphsUnicode[glyphName] : unusedUnicode++;
+      charstrings.push({
+        glyph: glyphName,
+        unicode: unicode,
+        gid: i,
+        charstring: item.data,
+        width: item.width,
+        lsb: item.lsb
+      });
+    }
+
+    charstrings.sort(function charstrings_sort(a, b) {
+      return a.unicode - b.unicode;
+    });
+    return charstrings;
+  },
+
+  getType2Charstrings: function Type1Font_getType2Charstrings(
+                                  type1Charstrings) {
+    var type2Charstrings = [];
+    var count = type1Charstrings.length;
+    for (var i = 0; i < count; i++) {
+      var charstring = type1Charstrings[i].charstring;
+      type2Charstrings.push(this.flattenCharstring(charstring.slice(),
+                                                   this.commandsMap));
+    }
+    return type2Charstrings;
+  },
+
+  getType2Subrs: function Type1Font_getType2Subrs(type1Subrs) {
+    var bias = 0;
+    var count = type1Subrs.length;
+    if (count < 1240)
+      bias = 107;
+    else if (count < 33900)
+      bias = 1131;
+    else
+      bias = 32768;
+
+    // Add a bunch of empty subrs to deal with the Type2 bias
+    var type2Subrs = [];
+    for (var i = 0; i < bias; i++)
+      type2Subrs.push([0x0B]);
+
+    for (var i = 0; i < count; i++) {
+      var subr = type1Subrs[i];
+      if (!subr)
+        subr = [0x0B];
+
+      type2Subrs.push(this.flattenCharstring(subr, this.commandsMap));
+    }
+
+    return type2Subrs;
+  },
+
+  /*
+   * Flatten the commands by interpreting the postscript code and replacing
+   * every 'callsubr', 'callothersubr' by the real commands.
+   */
+  commandsMap: {
+    'hstem': 1,
+    'vstem': 3,
+    'vmoveto': 4,
+    'rlineto': 5,
+    'hlineto': 6,
+    'vlineto': 7,
+    'rrcurveto': 8,
+    'callsubr': 10,
+    'return': 11,
+    'sub': [12, 11],
+    'div': [12, 12],
+    'exch': [12, 28],
+    'flex': [12, 35],
+    'drop' : [12, 18],
+    'endchar': 14,
+    'rmoveto': 21,
+    'hmoveto': 22,
+    'vhcurveto': 30,
+    'hvcurveto': 31
+  },
+
+  flattenCharstring: function Type1Font_flattenCharstring(charstring, map) {
+    // charstring changes size - can't cache .length in loop
+    for (var i = 0; i < charstring.length; i++) {
+      var command = charstring[i];
+      if (command.charAt) {
+        var cmd = map[command];
+        assert(cmd, 'Unknow command: ' + command);
+
+        if (isArray(cmd))
+          charstring.splice(i++, 1, cmd[0], cmd[1]);
+        else
+          charstring[i] = cmd;
+      } else {
+        // Type1 charstring use a division for number above 32000
+        if (command > 32000) {
+          var divisor = charstring[i + 1];
+          command /= divisor;
+          charstring.splice(i, 3, 28, command >> 8, command & 0xff);
+        } else {
+          charstring.splice(i, 1, 28, command >> 8, command & 0xff);
+        }
+        i += 2;
+      }
+    }
+    return charstring;
+  },
+
+  wrap: function Type1Font_wrap(name, glyphs, charstrings, subrs, properties) {
+    var fields = {
+      // major version, minor version, header size, offset size
+      'header': '\x01\x00\x04\x04',
+
+      'names': this.createCFFIndexHeader([name]),
+
+      'topDict': (function topDict(self) {
+        return function cffWrapTopDict() {
+          var header = '\x00\x01\x01\x01';
+          var dict =
+              '\xf8\x1b\x00' + // version
+              '\xf8\x1c\x01' + // Notice
+              '\xf8\x1d\x02' + // FullName
+              '\xf8\x1e\x03' + // FamilyName
+              '\xf8\x1f\x04' +  // Weight
+              '\x1c\x00\x00\x10'; // Encoding
+
+          var boundingBox = properties.bbox;
+          for (var i = 0, ii = boundingBox.length; i < ii; i++)
+            dict += self.encodeNumber(boundingBox[i]);
+          dict += '\x05'; // FontBBox;
+
+          var offset = fields.header.length +
+                       fields.names.length +
+                       (header.length + 1) +
+                       (dict.length + (4 + 4)) +
+                       fields.strings.length +
+                       fields.globalSubrs.length;
+
+          // If the offset if over 32767, encodeNumber is going to return
+          // 5 bytes to encode the position instead of 3.
+          if ((offset + fields.charstrings.length) > 32767) {
+            offset += 9;
+          } else {
+            offset += 7;
+          }
+
+          dict += self.encodeNumber(offset) + '\x0f'; // Charset
+
+          offset = offset + (glyphs.length * 2) + 1;
+          dict += self.encodeNumber(offset) + '\x11'; // Charstrings
+
+          offset = offset + fields.charstrings.length;
+          dict += self.encodeNumber(fields.privateData.length);
+          dict += self.encodeNumber(offset) + '\x12'; // Private
+
+          return header + String.fromCharCode(dict.length + 1) + dict;
+        };
+      })(this),
+
+      'strings': (function strings(self) {
+        var strings = [
+          'Version 0.11',         // Version
+          'See original notice',  // Notice
+          name,                   // FullName
+          name,                   // FamilyName
+          'Medium'                // Weight
+        ];
+        return self.createCFFIndexHeader(strings);
+      })(this),
+
+      'globalSubrs': this.createCFFIndexHeader([]),
+
+      'charset': (function charset(self) {
+        var charsetString = '\x00'; // Encoding
+
+        var count = glyphs.length;
+        for (var i = 0; i < count; i++) {
+          var index = CFFStandardStrings.indexOf(charstrings[i].glyph);
+          // Some characters like asterikmath && circlecopyrt are
+          // missing from the original strings, for the moment let's
+          // map them to .notdef and see later if it cause any
+          // problems
+          if (index == -1)
+            index = 0;
+
+          charsetString += String.fromCharCode(index >> 8, index & 0xff);
+        }
+        return charsetString;
+      })(this),
+
+      'charstrings': this.createCFFIndexHeader([[0x8B, 0x0E]].concat(glyphs),
+                                               true),
+
+      'privateData': (function cffWrapPrivate(self) {
+        var data =
+            '\x8b\x14' + // defaultWidth
+            '\x8b\x15';  // nominalWidth
+        var fieldMap = {
+          BlueValues: '\x06',
+          OtherBlues: '\x07',
+          FamilyBlues: '\x08',
+          FamilyOtherBlues: '\x09',
+          StemSnapH: '\x0c\x0c',
+          StemSnapV: '\x0c\x0d',
+          BlueShift: '\x0c\x0a',
+          BlueFuzz: '\x0c\x0b',
+          BlueScale: '\x0c\x09',
+          LanguageGroup: '\x0c\x11',
+          ExpansionFactor: '\x0c\x18'
+        };
+        for (var field in fieldMap) {
+          if (!properties.privateData.hasOwnProperty(field))
+            continue;
+          var value = properties.privateData[field];
+
+          if (isArray(value)) {
+            data += self.encodeNumber(value[0]);
+            for (var i = 1, ii = value.length; i < ii; i++)
+              data += self.encodeNumber(value[i] - value[i - 1]);
+          } else {
+            data += self.encodeNumber(value);
+          }
+          data += fieldMap[field];
+        }
+
+        data += self.encodeNumber(data.length + 4) + '\x13'; // Subrs offset
+
+        return data;
+      })(this),
+
+      'localSubrs': this.createCFFIndexHeader(subrs, true)
+    };
+    fields.topDict = fields.topDict();
+
+
+    var cff = [];
+    for (var index in fields) {
+      var field = fields[index];
+      for (var i = 0, ii = field.length; i < ii; i++)
+        cff.push(field.charCodeAt(i));
+    }
+
+    return cff;
+  }
+};
+
+var CFFFont = (function CFFFontClosure() {
+  function CFFFont(file, properties) {
+    this.properties = properties;
+
+    var parser = new CFFParser(file, properties);
+    var cff = parser.parse();
+    var compiler = new CFFCompiler(cff);
+    this.readExtra(cff);
+    try {
+      this.data = compiler.compile();
+    } catch (e) {
+      warn('Failed to compile font ' + properties.loadedName);
+      // There may have just been an issue with the compiler, set the data
+      // anyway and hope the font loaded.
+      this.data = file;
+    }
+  }
+
+  CFFFont.prototype = {
+    readExtra: function CFFFont_readExtra(cff) {
+      // charstrings contains info about glyphs (one element per glyph
+      // containing mappings for {unicode, width})
+      var charset = cff.charset.charset;
+      var encoding = cff.encoding ? cff.encoding.encoding : null;
+      var charstrings = this.getCharStrings(charset, encoding);
+
+      // create the mapping between charstring and glyph id
+      var glyphIds = [];
+      for (var i = 0, ii = charstrings.length; i < ii; i++)
+        glyphIds.push(charstrings[i].gid);
+
+      this.charstrings = charstrings;
+      this.glyphIds = glyphIds;
+    },
+    getCharStrings: function CFFFont_getCharStrings(charsets, encoding) {
+      var charstrings = [];
+      var unicodeUsed = [];
+      var unassignedUnicodeItems = [];
+      var inverseEncoding = [];
+      // CID fonts don't have an encoding.
+      if (encoding !== null)
+        for (var charcode in encoding)
+          inverseEncoding[encoding[charcode]] = charcode | 0;
+      else
+        inverseEncoding = charsets;
+      for (var i = 0, ii = charsets.length; i < ii; i++) {
+        var glyph = charsets[i];
+        if (glyph == '.notdef')
+          continue;
+
+        var code = inverseEncoding[i];
+        if (!code || isSpecialUnicode(code)) {
+          unassignedUnicodeItems.push(i);
+          continue;
+        }
+        charstrings.push({
+          unicode: code,
+          code: code,
+          gid: i,
+          glyph: glyph
+        });
+        unicodeUsed[code] = true;
+      }
+
+      var nextUnusedUnicode = kCmapGlyphOffset;
+      for (var j = 0, jj = unassignedUnicodeItems.length; j < jj; ++j) {
+        var i = unassignedUnicodeItems[j];
+        // giving unicode value anyway
+        while (nextUnusedUnicode in unicodeUsed)
+          nextUnusedUnicode++;
+        var unicode = nextUnusedUnicode++;
+        charstrings.push({
+          unicode: unicode,
+          code: inverseEncoding[i] || 0,
+          gid: i,
+          glyph: charsets[i]
+        });
+      }
+
+      // sort the array by the unicode value (again)
+      charstrings.sort(function getCharStringsSort(a, b) {
+        return a.unicode - b.unicode;
+      });
+      return charstrings;
+    }
+  };
+
+  return CFFFont;
+})();
+
+var CFFParser = (function CFFParserClosure() {
+  function CFFParser(file, properties) {
+    this.bytes = file.getBytes();
+    this.properties = properties;
+  }
+  CFFParser.prototype = {
+    parse: function CFFParser_parse() {
+      var properties = this.properties;
+      var cff = new CFF();
+      this.cff = cff;
+
+      // The first five sections must be in order, all the others are reached
+      // via offsets contained in one of the below.
+      var header = this.parseHeader();
+      var nameIndex = this.parseIndex(header.endPos);
+      var topDictIndex = this.parseIndex(nameIndex.endPos);
+      var stringIndex = this.parseIndex(topDictIndex.endPos);
+      var globalSubrIndex = this.parseIndex(stringIndex.endPos);
+
+      var topDictParsed = this.parseDict(topDictIndex.obj.get(0));
+      var topDict = this.createDict(CFFTopDict, topDictParsed, cff.strings);
+
+      cff.header = header.obj;
+      cff.names = this.parseNameIndex(nameIndex.obj);
+      cff.strings = this.parseStringIndex(stringIndex.obj);
+      cff.topDict = topDict;
+      cff.globalSubrIndex = globalSubrIndex.obj;
+
+      this.parsePrivateDict(cff.topDict);
+
+      cff.isCIDFont = topDict.hasName('ROS');
+
+      var charStringOffset = topDict.getByName('CharStrings');
+      cff.charStrings = this.parseCharStrings(charStringOffset);
+
+      var charset, encoding;
+      if (cff.isCIDFont) {
+        var fdArrayIndex = this.parseIndex(topDict.getByName('FDArray')).obj;
+        for (var i = 0, ii = fdArrayIndex.count; i < ii; ++i) {
+          var dictRaw = fdArrayIndex.get(i);
+          var fontDict = this.createDict(CFFTopDict, this.parseDict(dictRaw),
+                                         cff.strings);
+          this.parsePrivateDict(fontDict);
+          cff.fdArray.push(fontDict);
+        }
+        // cid fonts don't have an encoding
+        encoding = null;
+        charset = this.parseCharsets(topDict.getByName('charset'),
+                                     cff.charStrings.count, cff.strings, true);
+        cff.fdSelect = this.parseFDSelect(topDict.getByName('FDSelect'),
+                                             cff.charStrings.count);
+      } else {
+        charset = this.parseCharsets(topDict.getByName('charset'),
+                                     cff.charStrings.count, cff.strings, false);
+        encoding = this.parseEncoding(topDict.getByName('Encoding'),
+                                      properties,
+                                      cff.strings, charset.charset);
+      }
+      cff.charset = charset;
+      cff.encoding = encoding;
+
+      return cff;
+    },
+    parseHeader: function CFFParser_parseHeader() {
+      var bytes = this.bytes;
+      var offset = 0;
+
+      while (bytes[offset] != 1)
+        ++offset;
+
+      if (offset != 0) {
+        warn('cff data is shifted');
+        bytes = bytes.subarray(offset);
+        this.bytes = bytes;
+      }
+      var major = bytes[0];
+      var minor = bytes[1];
+      var hdrSize = bytes[2];
+      var offSize = bytes[3];
+      var header = new CFFHeader(major, minor, hdrSize, offSize);
+      return {obj: header, endPos: hdrSize};
+    },
+    parseDict: function CFFParser_parseDict(dict) {
+      var pos = 0;
+
+      function parseOperand() {
+        var value = dict[pos++];
+        if (value === 30) {
+          return parseFloatOperand(pos);
+        } else if (value === 28) {
+          value = dict[pos++];
+          value = (value << 8) | dict[pos++];
+          return value;
+        } else if (value === 29) {
+          value = dict[pos++];
+          value = (value << 8) | dict[pos++];
+          value = (value << 8) | dict[pos++];
+          value = (value << 8) | dict[pos++];
+          return value;
+        } else if (value >= 32 && value <= 246) {
+          return value - 139;
+        } else if (value >= 247 && value <= 250) {
+          return ((value - 247) * 256) + dict[pos++] + 108;
+        } else if (value >= 251 && value <= 254) {
+          return -((value - 251) * 256) - dict[pos++] - 108;
+        } else {
+          error('255 is not a valid DICT command');
+        }
+        return -1;
+      }
+
+      function parseFloatOperand() {
+        var str = '';
+        var eof = 15;
+        var lookup = ['0', '1', '2', '3', '4', '5', '6', '7', '8',
+            '9', '.', 'E', 'E-', null, '-'];
+        var length = dict.length;
+        while (pos < length) {
+          var b = dict[pos++];
+          var b1 = b >> 4;
+          var b2 = b & 15;
+
+          if (b1 == eof)
+            break;
+          str += lookup[b1];
+
+          if (b2 == eof)
+            break;
+          str += lookup[b2];
+        }
+        return parseFloat(str);
+      }
+
+      var operands = [];
+      var entries = [];
+
+      var pos = 0;
+      var end = dict.length;
+      while (pos < end) {
+        var b = dict[pos];
+        if (b <= 21) {
+          if (b === 12)
+            b = (b << 8) | dict[++pos];
+          entries.push([b, operands]);
+          operands = [];
+          ++pos;
+        } else {
+          operands.push(parseOperand());
+        }
+      }
+      return entries;
+    },
+    parseIndex: function CFFParser_parseIndex(pos) {
+      var cffIndex = new CFFIndex();
+      var bytes = this.bytes;
+      var count = (bytes[pos++] << 8) | bytes[pos++];
+      var offsets = [];
+      var start = pos;
+      var end = pos;
+
+      if (count != 0) {
+        var offsetSize = bytes[pos++];
+        // add 1 for offset to determine size of last object
+        var startPos = pos + ((count + 1) * offsetSize) - 1;
+
+        for (var i = 0, ii = count + 1; i < ii; ++i) {
+          var offset = 0;
+          for (var j = 0; j < offsetSize; ++j) {
+            offset <<= 8;
+            offset += bytes[pos++];
+          }
+          offsets.push(startPos + offset);
+        }
+        end = offsets[count];
+      }
+      for (var i = 0, ii = offsets.length - 1; i < ii; ++i) {
+        var offsetStart = offsets[i];
+        var offsetEnd = offsets[i + 1];
+        cffIndex.add(bytes.subarray(offsetStart, offsetEnd));
+      }
+      return {obj: cffIndex, endPos: end};
+    },
+    parseNameIndex: function CFFParser_parseNameIndex(index) {
+      var names = [];
+      for (var i = 0, ii = index.count; i < ii; ++i) {
+        var name = index.get(i);
+        // OTS doesn't allow names to be over 127 characters.
+        var length = Math.min(name.length, 127);
+        var data = [];
+        // OTS also only permits certain characters in the name.
+        for (var j = 0; j < length; ++j) {
+          var c = name[j];
+          if (j === 0 && c === 0) {
+            data[j] = c;
+            continue;
+          }
+          if ((c < 33 || c > 126) || c === 91 /* [ */ || c === 93 /* ] */ ||
+              c === 40 /* ( */ || c === 41 /* ) */ || c === 123 /* { */ ||
+              c === 125 /* } */ || c === 60 /* < */ || c === 62 /* > */ ||
+              c === 47 /* / */ || c === 37 /* % */) {
+            data[j] = 95;
+            continue;
+          }
+          data[j] = c;
+        }
+        names.push(String.fromCharCode.apply(null, data));
+      }
+      return names;
+    },
+    parseStringIndex: function CFFParser_parseStringIndex(index) {
+      var strings = new CFFStrings();
+      for (var i = 0, ii = index.count; i < ii; ++i) {
+        var data = index.get(i);
+        strings.add(String.fromCharCode.apply(null, data));
+      }
+      return strings;
+    },
+    createDict: function CFFParser_createDict(type, dict, strings) {
+      var cffDict = new type(strings);
+      var types = cffDict.types;
+
+      for (var i = 0, ii = dict.length; i < ii; ++i) {
+        var pair = dict[i];
+        var key = pair[0];
+        var value = pair[1];
+        cffDict.setByKey(key, value);
+      }
+      return cffDict;
+    },
+    parseCharStrings: function CFFParser_parseCharStrings(charStringOffset) {
+      var charStrings = this.parseIndex(charStringOffset).obj;
+      // The CFF specification state that the 'dotsection' command
+      // (12, 0) is deprecated and treated as a no-op, but all Type2
+      // charstrings processors should support them. Unfortunately
+      // the font sanitizer don't. As a workaround the sequence (12, 0)
+      // is replaced by a useless (0, hmoveto).
+      var count = charStrings.count;
+      for (var i = 0; i < count; i++) {
+        var charstring = charStrings.get(i);
+
+        var data = charstring;
+        var length = data.length;
+        for (var j = 0; j <= length; j) {
+          var value = data[j++];
+          if (value == 12 && data[j++] == 0) {
+              data[j - 2] = 139;
+              data[j - 1] = 22;
+          } else if (value === 28) {
+            j += 2;
+          } else if (value >= 247 && value <= 254) {
+            j++;
+          } else if (value == 255) {
+            j += 4;
+          }
+        }
+      }
+      return charStrings;
+    },
+    parsePrivateDict: function CFFParser_parsePrivateDict(parentDict) {
+      // no private dict, do nothing
+      if (!parentDict.hasName('Private'))
+        return;
+      var privateOffset = parentDict.getByName('Private');
+      // make sure the params are formatted correctly
+      if (!isArray(privateOffset) || privateOffset.length !== 2) {
+        parentDict.removeByName('Private');
+        return;
+      }
+      var size = privateOffset[0];
+      var offset = privateOffset[1];
+      // remove empty dicts or ones that refer to invalid location
+      if (size === 0 || offset >= this.bytes.length) {
+        parentDict.removeByName('Private');
+        return;
+      }
+
+      var privateDictEnd = offset + size;
+      var dictData = this.bytes.subarray(offset, privateDictEnd);
+      var dict = this.parseDict(dictData);
+      var privateDict = this.createDict(CFFPrivateDict, dict,
+                                        parentDict.strings);
+      parentDict.privateDict = privateDict;
+
+      // Parse the Subrs index also since it's relative to the private dict.
+      if (!privateDict.getByName('Subrs'))
+        return;
+      var subrsOffset = privateDict.getByName('Subrs');
+      var relativeOffset = offset + subrsOffset;
+      // Validate the offset.
+      if (subrsOffset === 0 || relativeOffset >= this.bytes.length) {
+        privateDict.removeByName('Subrs');
+        return;
+      }
+      var subrsIndex = this.parseIndex(relativeOffset);
+      privateDict.subrsIndex = subrsIndex.obj;
+    },
+    parseCharsets: function CFFParser_parseCharsets(pos, length, strings, cid) {
+      if (pos == 0) {
+        return new CFFCharset(true, CFFCharsetPredefinedTypes.ISO_ADOBE,
+                              ISOAdobeCharset);
+      } else if (pos == 1) {
+        return new CFFCharset(true, CFFCharsetPredefinedTypes.EXPERT,
+                              ExpertCharset);
+      } else if (pos == 2) {
+        return new CFFCharset(true, CFFCharsetPredefinedTypes.EXPERT_SUBSET,
+                              ExpertSubsetCharset);
+      }
+
+      var bytes = this.bytes;
+      var start = pos;
+      var format = bytes[pos++];
+      var charset = ['.notdef'];
+
+      // subtract 1 for the .notdef glyph
+      length -= 1;
+
+      switch (format) {
+        case 0:
+          for (var i = 0; i < length; i++) {
+            var id = (bytes[pos++] << 8) | bytes[pos++];
+            charset.push(cid ? id : strings.get(id));
+          }
+          break;
+        case 1:
+          while (charset.length <= length) {
+            var id = (bytes[pos++] << 8) | bytes[pos++];
+            var count = bytes[pos++];
+            for (var i = 0; i <= count; i++)
+              charset.push(cid ? id++ : strings.get(id++));
+          }
+          break;
+        case 2:
+          while (charset.length <= length) {
+            var id = (bytes[pos++] << 8) | bytes[pos++];
+            var count = (bytes[pos++] << 8) | bytes[pos++];
+            for (var i = 0; i <= count; i++)
+              charset.push(cid ? id++ : strings.get(id++));
+          }
+          break;
+        default:
+          error('Unknown charset format');
+      }
+      // Raw won't be needed if we actually compile the charset.
+      var end = pos;
+      var raw = bytes.subarray(start, end);
+
+      return new CFFCharset(false, format, charset, raw);
+    },
+    parseEncoding: function CFFParser_parseEncoding(pos,
+                                                    properties,
+                                                    strings,
+                                                    charset) {
+      var encoding = {};
+      var bytes = this.bytes;
+      var predefined = false;
+      var hasSupplement = false;
+      var format;
+      var raw = null;
+
+      function readSupplement() {
+        var supplementsCount = bytes[pos++];
+        for (var i = 0; i < supplementsCount; i++) {
+          var code = bytes[pos++];
+          var sid = (bytes[pos++] << 8) + (bytes[pos++] & 0xff);
+          encoding[code] = properties.differences.indexOf(strings.get(sid));
+        }
+      }
+
+      if (pos == 0 || pos == 1) {
+        predefined = true;
+        format = pos;
+        var gid = 1;
+        var baseEncoding = pos ? Encodings.ExpertEncoding :
+                                 Encodings.StandardEncoding;
+        for (var i = 0, ii = charset.length; i < ii; i++) {
+          var index = baseEncoding.indexOf(charset[i]);
+          if (index != -1)
+            encoding[index] = gid++;
+        }
+      } else {
+        var dataStart = pos;
+        var format = bytes[pos++];
+        switch (format & 0x7f) {
+          case 0:
+            var glyphsCount = bytes[pos++];
+            for (var i = 1; i <= glyphsCount; i++)
+              encoding[bytes[pos++]] = i;
+            break;
+
+          case 1:
+            var rangesCount = bytes[pos++];
+            var gid = 1;
+            for (var i = 0; i < rangesCount; i++) {
+              var start = bytes[pos++];
+              var left = bytes[pos++];
+              for (var j = start; j <= start + left; j++)
+                encoding[j] = gid++;
+            }
+            break;
+
+          default:
+            error('Unknow encoding format: ' + format + ' in CFF');
+            break;
+        }
+        var dataEnd = pos;
+        if (format & 0x80) {
+          // The font sanitizer does not support CFF encoding with a
+          // supplement, since the encoding is not really used to map
+          // between gid to glyph, let's overwrite what is declared in
+          // the top dictionary to let the sanitizer think the font use
+          // StandardEncoding, that's a lie but that's ok.
+          bytes[dataStart] &= 0x7f;
+          readSupplement();
+          hasSupplement = true;
+        }
+        raw = bytes.subarray(dataStart, dataEnd);
+      }
+      format = format & 0x7f;
+      return new CFFEncoding(predefined, format, encoding, raw);
+    },
+    parseFDSelect: function CFFParser_parseFDSelect(pos, length) {
+      var start = pos;
+      var bytes = this.bytes;
+      var format = bytes[pos++];
+      var fdSelect = [];
+      switch (format) {
+        case 0:
+          for (var i = 0; i < length; ++i) {
+            var id = bytes[pos++];
+            fdSelect.push(id);
+          }
+          break;
+        case 3:
+          var rangesCount = (bytes[pos++] << 8) | bytes[pos++];
+          for (var i = 0; i < rangesCount; ++i) {
+            var first = (bytes[pos++] << 8) | bytes[pos++];
+            var fdIndex = bytes[pos++];
+            var next = (bytes[pos] << 8) | bytes[pos + 1];
+            for (var j = first; j < next; ++j)
+              fdSelect.push(fdIndex);
+          }
+          // Advance past the sentinel(next).
+          pos += 2;
+          break;
+        default:
+          error('Unknown fdselect format ' + format);
+          break;
+      }
+      var end = pos;
+      return new CFFFDSelect(fdSelect, bytes.subarray(start, end));
+    }
+  };
+  return CFFParser;
+})();
+
+// Compact Font Format
+var CFF = (function CFFClosure() {
+  function CFF() {
+    this.header = null;
+    this.names = [];
+    this.topDict = null;
+    this.strings = new CFFStrings();
+    this.globalSubrIndex = null;
+
+    // The following could really be per font, but since we only have one font
+    // store them here.
+    this.encoding = null;
+    this.charset = null;
+    this.charStrings = null;
+    this.fdArray = [];
+    this.fdSelect = null;
+
+    this.isCIDFont = false;
+  }
+  return CFF;
+})();
+
+var CFFHeader = (function CFFHeaderClosure() {
+  function CFFHeader(major, minor, hdrSize, offSize) {
+    this.major = major;
+    this.minor = minor;
+    this.hdrSize = hdrSize;
+    this.offSize = offSize;
+  }
+  return CFFHeader;
+})();
+
+var CFFStrings = (function CFFStringsClosure() {
+  function CFFStrings() {
+    this.strings = [];
+  }
+  CFFStrings.prototype = {
+    get: function CFFStrings_get(index) {
+      if (index >= 0 && index <= 390)
+        return CFFStandardStrings[index];
+      if (index - 391 <= this.strings.length)
+        return this.strings[index - 391];
+      return CFFStandardStrings[0];
+    },
+    add: function CFFStrings_add(value) {
+      this.strings.push(value);
+    },
+    get count() {
+      return this.strings.length;
+    }
+  };
+  return CFFStrings;
+})();
+
+var CFFIndex = (function CFFIndexClosure() {
+  function CFFIndex() {
+    this.objects = [];
+    this.length = 0;
+  }
+  CFFIndex.prototype = {
+    add: function CFFIndex_add(data) {
+      this.length += data.length;
+      this.objects.push(data);
+    },
+    get: function CFFIndex_get(index) {
+      return this.objects[index];
+    },
+    get count() {
+      return this.objects.length;
+    }
+  };
+  return CFFIndex;
+})();
+
+var CFFDict = (function CFFDictClosure() {
+  function CFFDict(tables, strings) {
+    this.keyToNameMap = tables.keyToNameMap;
+    this.nameToKeyMap = tables.nameToKeyMap;
+    this.defaults = tables.defaults;
+    this.types = tables.types;
+    this.opcodes = tables.opcodes;
+    this.order = tables.order;
+    this.strings = strings;
+    this.values = {};
+  }
+  CFFDict.prototype = {
+    // value should always be an array
+    setByKey: function CFFDict_setByKey(key, value) {
+      if (!(key in this.keyToNameMap))
+        return false;
+      // ignore empty values
+      if (value.length === 0)
+        return true;
+      var type = this.types[key];
+      // remove the array wrapping these types of values
+      if (type === 'num' || type === 'sid' || type === 'offset')
+        value = value[0];
+      this.values[key] = value;
+      return true;
+    },
+    hasName: function CFFDict_hasName(name) {
+      return this.nameToKeyMap[name] in this.values;
+    },
+    getByName: function CFFDict_getByName(name) {
+      if (!(name in this.nameToKeyMap))
+        error('Invalid dictionary name "' + name + '"');
+      var key = this.nameToKeyMap[name];
+      if (!(key in this.values))
+        return this.defaults[key];
+      return this.values[key];
+    },
+    removeByName: function CFFDict_removeByName(name) {
+      delete this.values[this.nameToKeyMap[name]];
+    }
+  };
+  CFFDict.createTables = function CFFDict_createTables(layout) {
+    var tables = {
+      keyToNameMap: {},
+      nameToKeyMap: {},
+      defaults: {},
+      types: {},
+      opcodes: {},
+      order: []
+    };
+    for (var i = 0, ii = layout.length; i < ii; ++i) {
+      var entry = layout[i];
+      var key = isArray(entry[0]) ? (entry[0][0] << 8) + entry[0][1] : entry[0];
+      tables.keyToNameMap[key] = entry[1];
+      tables.nameToKeyMap[entry[1]] = key;
+      tables.types[key] = entry[2];
+      tables.defaults[key] = entry[3];
+      tables.opcodes[key] = isArray(entry[0]) ? entry[0] : [entry[0]];
+      tables.order.push(key);
+    }
+    return tables;
+  };
+  return CFFDict;
+})();
+
+var CFFTopDict = (function CFFTopDictClosure() {
+  var layout = [
+    [[12, 30], 'ROS', ['sid', 'sid', 'num'], null],
+    [[12, 20], 'SyntheticBase', 'num', null],
+    [0, 'version', 'sid', null],
+    [1, 'Notice', 'sid', null],
+    [[12, 0], 'Copyright', 'sid', null],
+    [2, 'FullName', 'sid', null],
+    [3, 'FamilyName', 'sid', null],
+    [4, 'Weight', 'sid', null],
+    [[12, 1], 'isFixedPitch', 'num', 0],
+    [[12, 2], 'ItalicAngle', 'num', 0],
+    [[12, 3], 'UnderlinePosition', 'num', -100],
+    [[12, 4], 'UnderlineThickness', 'num', 50],
+    [[12, 5], 'PaintType', 'num', 0],
+    [[12, 6], 'CharstringType', 'num', 2],
+    [[12, 7], 'FontMatrix', ['num', 'num', 'num', 'num', 'num', 'num'],
+                            [.001, 0, 0, .001, 0, 0]],
+    [13, 'UniqueID', 'num', null],
+    [5, 'FontBBox', ['num', 'num', 'num', 'num'], [0, 0, 0, 0]],
+    [[12, 8], 'StrokeWidth', 'num', 0],
+    [14, 'XUID', 'array', null],
+    [15, 'charset', 'offset', 0],
+    [16, 'Encoding', 'offset', 0],
+    [17, 'CharStrings', 'offset', 0],
+    [18, 'Private', ['offset', 'offset'], null],
+    [[12, 21], 'PostScript', 'sid', null],
+    [[12, 22], 'BaseFontName', 'sid', null],
+    [[12, 23], 'BaseFontBlend', 'delta', null],
+    [[12, 31], 'CIDFontVersion', 'num', 0],
+    [[12, 32], 'CIDFontRevision', 'num', 0],
+    [[12, 33], 'CIDFontType', 'num', 0],
+    [[12, 34], 'CIDCount', 'num', 8720],
+    [[12, 35], 'UIDBase', 'num', null],
+    [[12, 36], 'FDArray', 'offset', null],
+    [[12, 37], 'FDSelect', 'offset', null],
+    [[12, 38], 'FontName', 'sid', null]];
+  var tables = null;
+  function CFFTopDict(strings) {
+    if (tables === null)
+      tables = CFFDict.createTables(layout);
+    CFFDict.call(this, tables, strings);
+    this.privateDict = null;
+  }
+  CFFTopDict.prototype = Object.create(CFFDict.prototype);
+  return CFFTopDict;
+})();
+
+var CFFPrivateDict = (function CFFPrivateDictClosure() {
+  var layout = [
+    [6, 'BlueValues', 'delta', null],
+    [7, 'OtherBlues', 'delta', null],
+    [8, 'FamilyBlues', 'delta', null],
+    [9, 'FamilyOtherBlues', 'delta', null],
+    [[12, 9], 'BlueScale', 'num', 0.039625],
+    [[12, 10], 'BlueShift', 'num', 7],
+    [[12, 11], 'BlueFuzz', 'num', 1],
+    [10, 'StdHW', 'num', null],
+    [11, 'StdVW', 'num', null],
+    [[12, 12], 'StemSnapH', 'delta', null],
+    [[12, 13], 'StemSnapV', 'delta', null],
+    [[12, 14], 'ForceBold', 'num', 0],
+    [[12, 17], 'LanguageGroup', 'num', 0],
+    [[12, 18], 'ExpansionFactor', 'num', 0.06],
+    [[12, 19], 'initialRandomSeed', 'num', 0],
+    [19, 'Subrs', 'offset', null],
+    [20, 'defaultWidthX', 'num', 0],
+    [21, 'nominalWidthX', 'num', 0]
+  ];
+  var tables = null;
+  function CFFPrivateDict(strings) {
+    if (tables === null)
+      tables = CFFDict.createTables(layout);
+    CFFDict.call(this, tables, strings);
+    this.subrsIndex = null;
+  }
+  CFFPrivateDict.prototype = Object.create(CFFDict.prototype);
+  return CFFPrivateDict;
+})();
+
+var CFFCharsetPredefinedTypes = {
+  ISO_ADOBE: 0,
+  EXPERT: 1,
+  EXPERT_SUBSET: 2
+};
+var CFFCharsetEmbeddedTypes = {
+  FORMAT0: 0,
+  FORMAT1: 1,
+  FORMAT2: 2
+};
+var CFFCharset = (function CFFCharsetClosure() {
+  function CFFCharset(predefined, format, charset, raw) {
+    this.predefined = predefined;
+    this.format = format;
+    this.charset = charset;
+    this.raw = raw;
+  }
+  return CFFCharset;
+})();
+
+var CFFEncodingPredefinedTypes = {
+  STANDARD: 0,
+  EXPERT: 1
+};
+var CFFCharsetEmbeddedTypes = {
+  FORMAT0: 0,
+  FORMAT1: 1
+};
+var CFFEncoding = (function CFFEncodingClosure() {
+  function CFFEncoding(predefined, format, encoding, raw) {
+    this.predefined = predefined;
+    this.format = format;
+    this.encoding = encoding;
+    this.raw = raw;
+  }
+  return CFFEncoding;
+})();
+
+var CFFFDSelect = (function CFFFDSelectClosure() {
+  function CFFFDSelect(fdSelect, raw) {
+    this.fdSelect = fdSelect;
+    this.raw = raw;
+  }
+  return CFFFDSelect;
+})();
+
+// Helper class to keep track of where an offset is within the data and helps
+// filling in that offset once it's known.
+var CFFOffsetTracker = (function CFFOffsetTrackerClosure() {
+  function CFFOffsetTracker() {
+    this.offsets = {};
+  }
+  CFFOffsetTracker.prototype = {
+    isTracking: function CFFOffsetTracker_isTracking(key) {
+      return key in this.offsets;
+    },
+    track: function CFFOffsetTracker_track(key, location) {
+      if (key in this.offsets)
+        error('Already tracking location of ' + key);
+      this.offsets[key] = location;
+    },
+    offset: function CFFOffsetTracker_offset(value) {
+      for (var key in this.offsets) {
+        this.offsets[key] += value;
+      }
+    },
+    setEntryLocation: function CFFOffsetTracker_setEntryLocation(key,
+                                                                 values,
+                                                                 output) {
+      if (!(key in this.offsets))
+        error('Not tracking location of ' + key);
+      var data = output.data;
+      var dataOffset = this.offsets[key];
+      var size = 5;
+      for (var i = 0, ii = values.length; i < ii; ++i) {
+        var offset0 = i * size + dataOffset;
+        var offset1 = offset0 + 1;
+        var offset2 = offset0 + 2;
+        var offset3 = offset0 + 3;
+        var offset4 = offset0 + 4;
+        // It's easy to screw up offsets so perform this sanity check.
+        if (data[offset0] !== 0x1d || data[offset1] !== 0 ||
+            data[offset2] !== 0 || data[offset3] !== 0 || data[offset4] !== 0)
+          error('writing to an offset that is not empty');
+        var value = values[i];
+        data[offset0] = 0x1d;
+        data[offset1] = (value >> 24) & 0xFF;
+        data[offset2] = (value >> 16) & 0xFF;
+        data[offset3] = (value >> 8) & 0xFF;
+        data[offset4] = value & 0xFF;
+      }
+    }
+  };
+  return CFFOffsetTracker;
+})();
+
+// Takes a CFF and converts it to the binary representation.
+var CFFCompiler = (function CFFCompilerClosure() {
+  function stringToArray(str) {
+    var array = [];
+    for (var i = 0, ii = str.length; i < ii; ++i)
+      array[i] = str.charCodeAt(i);
+
+    return array;
+  };
+  function CFFCompiler(cff) {
+    this.cff = cff;
+  }
+  CFFCompiler.prototype = {
+    compile: function CFFCompiler_compile() {
+      var cff = this.cff;
+      var output = {
+        data: [],
+        length: 0,
+        add: function CFFCompiler_add(data) {
+          this.data = this.data.concat(data);
+          this.length = this.data.length;
+        }
+      };
+
+      // Compile the five entries that must be in order.
+      var header = this.compileHeader(cff.header);
+      output.add(header);
+
+      var nameIndex = this.compileNameIndex(cff.names);
+      output.add(nameIndex);
+
+      var compiled = this.compileTopDicts([cff.topDict], output.length);
+      output.add(compiled.output);
+      var topDictTracker = compiled.trackers[0];
+
+      var stringIndex = this.compileStringIndex(cff.strings.strings);
+      output.add(stringIndex);
+
+      var globalSubrIndex = this.compileIndex(cff.globalSubrIndex);
+      output.add(globalSubrIndex);
+
+      // Now start on the other entries that have no specfic order.
+      if (cff.encoding && cff.topDict.hasName('Encoding')) {
+        if (cff.encoding.predefined) {
+          topDictTracker.setEntryLocation('Encoding', [cff.encoding.format],
+                                          output);
+        } else {
+          var encoding = this.compileEncoding(cff.encoding);
+          topDictTracker.setEntryLocation('Encoding', [output.length], output);
+          output.add(encoding);
+        }
+      }
+
+      if (cff.charset && cff.topDict.hasName('charset')) {
+        if (cff.charset.predefined) {
+          topDictTracker.setEntryLocation('charset', [cff.charset.format],
+                                          output);
+        } else {
+          var charset = this.compileCharset(cff.charset);
+          topDictTracker.setEntryLocation('charset', [output.length], output);
+          output.add(charset);
+        }
+      }
+
+      var charStrings = this.compileCharStrings(cff.charStrings);
+      topDictTracker.setEntryLocation('CharStrings', [output.length], output);
+      output.add(charStrings);
+
+      if (cff.isCIDFont) {
+        // For some reason FDSelect must be in front of FDArray on windows. OSX
+        // and linux don't seem to care.
+        topDictTracker.setEntryLocation('FDSelect', [output.length], output);
+        var fdSelect = this.compileFDSelect(cff.fdSelect.raw);
+        output.add(fdSelect);
+
+        var compiled = this.compileTopDicts(cff.fdArray, output.length);
+        topDictTracker.setEntryLocation('FDArray', [output.length], output);
+        output.add(compiled.output);
+        var fontDictTrackers = compiled.trackers;
+
+        this.compilePrivateDicts(cff.fdArray, fontDictTrackers, output);
+      }
+
+      this.compilePrivateDicts([cff.topDict], [topDictTracker], output);
+
+      return output.data;
+    },
+    encodeNumber: function CFFCompiler_encodeNumber(value) {
+      if (parseFloat(value) == parseInt(value) && !isNaN(value)) // isInt
+        return this.encodeInteger(value);
+      else
+        return this.encodeFloat(value);
+    },
+    encodeFloat: function CFFCompiler_encodeFloat(value) {
+      value = value.toString();
+      // Strip off the any leading zeros.
+      if (value.substr(0, 2) === '0.')
+        value = value.substr(1);
+      else if (value.substr(0, 3) === '-0.')
+        value = '-' + value.substr(2);
+      var nibbles = [];
+      for (var i = 0, ii = value.length; i < ii; ++i) {
+        var a = value.charAt(i), b = value.charAt(i + 1);
+        var nibble;
+        if (a === 'e' && b === '-') {
+          nibble = 0xc;
+          ++i;
+        } else if (a === '.') {
+          nibble = 0xa;
+        } else if (a === 'E') {
+          nibble = 0xb;
+        } else if (a === '-') {
+          nibble = 0xe;
+        } else {
+          nibble = a;
+        }
+        nibbles.push(nibble);
+      }
+      nibbles.push(0xf);
+      if (nibbles.length % 2)
+        nibbles.push(0xf);
+      var out = [30];
+      for (var i = 0, ii = nibbles.length; i < ii; i += 2)
+        out.push(nibbles[i] << 4 | nibbles[i + 1]);
+      return out;
+    },
+    encodeInteger: function CFFCompiler_encodeInteger(value) {
+      var code;
+      if (value >= -107 && value <= 107) {
+        code = [value + 139];
+      } else if (value >= 108 && value <= 1131) {
+        value = [value - 108];
+        code = [(value >> 8) + 247, value & 0xFF];
+      } else if (value >= -1131 && value <= -108) {
+        value = -value - 108;
+        code = [(value >> 8) + 251, value & 0xFF];
+      } else if (value >= -32768 && value <= 32767) {
+        code = [0x1c, (value >> 8) & 0xFF, value & 0xFF];
+      } else {
+        code = [0x1d,
+                (value >> 24) & 0xFF,
+                (value >> 16) & 0xFF,
+                (value >> 8) & 0xFF,
+                 value & 0xFF];
+      }
+      return code;
+    },
+    compileHeader: function CFFCompiler_compileHeader(header) {
+      return [
+        header.major,
+        header.minor,
+        header.hdrSize,
+        header.offSize
+      ];
+    },
+    compileNameIndex: function CFFCompiler_compileNameIndex(names) {
+      var nameIndex = new CFFIndex();
+      for (var i = 0, ii = names.length; i < ii; ++i)
+        nameIndex.add(stringToArray(names[i]));
+      return this.compileIndex(nameIndex);
+    },
+    compileTopDicts: function CFFCompiler_compileTopDicts(dicts, length) {
+      var fontDictTrackers = [];
+      var fdArrayIndex = new CFFIndex();
+      for (var i = 0, ii = dicts.length; i < ii; ++i) {
+        var fontDict = dicts[i];
+        var fontDictTracker = new CFFOffsetTracker();
+        var fontDictData = this.compileDict(fontDict, fontDictTracker);
+        fontDictTrackers.push(fontDictTracker);
+        fdArrayIndex.add(fontDictData);
+        fontDictTracker.offset(length);
+      }
+      fdArrayIndex = this.compileIndex(fdArrayIndex, fontDictTrackers);
+      return {
+        trackers: fontDictTrackers,
+        output: fdArrayIndex
+      };
+    },
+    compilePrivateDicts: function CFFCompiler_compilePrivateDicts(dicts,
+                                                                  trackers,
+                                                                  output) {
+      for (var i = 0, ii = dicts.length; i < ii; ++i) {
+        var fontDict = dicts[i];
+        if (!fontDict.privateDict || !fontDict.hasName('Private'))
+          continue;
+        var privateDict = fontDict.privateDict;
+        var privateDictTracker = new CFFOffsetTracker();
+        var privateDictData = this.compileDict(privateDict, privateDictTracker);
+
+        privateDictTracker.offset(output.length);
+        trackers[i].setEntryLocation('Private',
+                                     [privateDictData.length, output.length],
+                                     output);
+        output.add(privateDictData);
+
+        if (privateDict.subrsIndex && privateDict.hasName('Subrs')) {
+          var subrs = this.compileIndex(privateDict.subrsIndex);
+          privateDictTracker.setEntryLocation('Subrs', [privateDictData.length],
+                                              output);
+          output.add(subrs);
+        }
+      }
+    },
+    compileDict: function CFFCompiler_compileDict(dict, offsetTracker) {
+      var out = [];
+      // The dictionary keys must be in a certain order.
+      var order = dict.order;
+      for (var i = 0; i < order.length; ++i) {
+        var key = order[i];
+        if (!(key in dict.values))
+          continue;
+        var values = dict.values[key];
+        var types = dict.types[key];
+        if (!isArray(types)) types = [types];
+        if (!isArray(values)) values = [values];
+
+        // Remove any empty dict values.
+        if (values.length === 0)
+          continue;
+
+        for (var j = 0, jj = types.length; j < jj; ++j) {
+          var type = types[j];
+          var value = values[j];
+          switch (type) {
+            case 'num':
+            case 'sid':
+              out = out.concat(this.encodeNumber(value));
+              break;
+            case 'offset':
+              // For offsets we just insert a 32bit integer so we don't have to
+              // deal with figuring out the length of the offset when it gets
+              // replaced later on by the compiler.
+              var name = dict.keyToNameMap[key];
+              // Some offsets have the offset and the length, so just record the
+              // position of the first one.
+              if (!offsetTracker.isTracking(name))
+                offsetTracker.track(name, out.length);
+              out = out.concat([0x1d, 0, 0, 0, 0]);
+              break;
+            case 'array':
+            case 'delta':
+              out = out.concat(this.encodeNumber(value));
+              for (var k = 1, kk = values.length; k < kk; ++k)
+                out = out.concat(this.encodeNumber(values[k]));
+              break;
+            default:
+              error('Unknown data type of ' + type);
+              break;
+          }
+        }
+        out = out.concat(dict.opcodes[key]);
+      }
+      return out;
+    },
+    compileStringIndex: function CFFCompiler_compileStringIndex(strings) {
+      var stringIndex = new CFFIndex();
+      for (var i = 0, ii = strings.length; i < ii; ++i)
+        stringIndex.add(stringToArray(strings[i]));
+      return this.compileIndex(stringIndex);
+    },
+    compileGlobalSubrIndex: function CFFCompiler_compileGlobalSubrIndex() {
+      var globalSubrIndex = this.cff.globalSubrIndex;
+      this.out.writeByteArray(this.compileIndex(globalSubrIndex));
+    },
+    compileCharStrings: function CFFCompiler_compileCharStrings(charStrings) {
+      return this.compileIndex(charStrings);
+    },
+    compileCharset: function CFFCompiler_compileCharset(charset) {
+      return this.compileTypedArray(charset.raw);
+    },
+    compileEncoding: function CFFCompiler_compileEncoding(encoding) {
+      return this.compileTypedArray(encoding.raw);
+    },
+    compileFDSelect: function CFFCompiler_compileFDSelect(fdSelect) {
+      return this.compileTypedArray(fdSelect);
+    },
+    compileTypedArray: function CFFCompiler_compileTypedArray(data) {
+      var out = [];
+      for (var i = 0, ii = data.length; i < ii; ++i)
+        out[i] = data[i];
+      return out;
+    },
+    compileIndex: function CFFCompiler_compileIndex(index, trackers) {
+      trackers = trackers || [];
+      var objects = index.objects;
+      // First 2 bytes contains the number of objects contained into this index
+      var count = objects.length;
+
+      // If there is no object, just create an index. This technically
+      // should just be [0, 0] but OTS has an issue with that.
+      if (count == 0)
+        return [0, 0, 0];
+
+      var data = [(count >> 8) & 0xFF, count & 0xff];
+
+      var lastOffset = 1;
+      for (var i = 0; i < count; ++i)
+        lastOffset += objects[i].length;
+
+      var offsetSize;
+      if (lastOffset < 0x100)
+        offsetSize = 1;
+      else if (lastOffset < 0x10000)
+        offsetSize = 2;
+      else if (lastOffset < 0x1000000)
+        offsetSize = 3;
+      else
+        offsetSize = 4;
+
+      // Next byte contains the offset size use to reference object in the file
+      data.push(offsetSize);
+
+      // Add another offset after this one because we need a new offset
+      var relativeOffset = 1;
+      for (var i = 0; i < count + 1; i++) {
+        if (offsetSize === 1) {
+          data.push(relativeOffset & 0xFF);
+        } else if (offsetSize === 2) {
+          data.push((relativeOffset >> 8) & 0xFF,
+                     relativeOffset & 0xFF);
+        } else if (offsetSize === 3) {
+          data.push((relativeOffset >> 16) & 0xFF,
+                    (relativeOffset >> 8) & 0xFF,
+                     relativeOffset & 0xFF);
+        } else {
+          data.push((relativeOffset >>> 24) & 0xFF,
+                    (relativeOffset >> 16) & 0xFF,
+                    (relativeOffset >> 8) & 0xFF,
+                     relativeOffset & 0xFF);
+        }
+
+        if (objects[i])
+          relativeOffset += objects[i].length;
+      }
+      var offset = data.length;
+
+      for (var i = 0; i < count; i++) {
+        // Notify the tracker where the object will be offset in the data.
+        if (trackers[i])
+          trackers[i].offset(data.length);
+        for (var j = 0, jj = objects[i].length; j < jj; j++)
+          data.push(objects[i][j]);
+      }
+      return data;
+    }
+  };
+  return CFFCompiler;
+})();
+
+
+/* -*- Mode: Java; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/* vim: set shiftwidth=2 tabstop=2 autoindent cindent expandtab: */
+
+'use strict';
+
+var GlyphsUnicode = {
+  A: 0x0041,
+  AE: 0x00C6,
+  AEacute: 0x01FC,
+  AEmacron: 0x01E2,
+  AEsmall: 0xF7E6,
+  Aacute: 0x00C1,
+  Aacutesmall: 0xF7E1,
+  Abreve: 0x0102,
+  Abreveacute: 0x1EAE,
+  Abrevecyrillic: 0x04D0,
+  Abrevedotbelow: 0x1EB6,
+  Abrevegrave: 0x1EB0,
+  Abrevehookabove: 0x1EB2,
+  Abrevetilde: 0x1EB4,
+  Acaron: 0x01CD,
+  Acircle: 0x24B6,
+  Acircumflex: 0x00C2,
+  Acircumflexacute: 0x1EA4,
+  Acircumflexdotbelow: 0x1EAC,
+  Acircumflexgrave: 0x1EA6,
+  Acircumflexhookabove: 0x1EA8,
+  Acircumflexsmall: 0xF7E2,
+  Acircumflextilde: 0x1EAA,
+  Acute: 0xF6C9,
+  Acutesmall: 0xF7B4,
+  Acyrillic: 0x0410,
+  Adblgrave: 0x0200,
+  Adieresis: 0x00C4,
+  Adieresiscyrillic: 0x04D2,
+  Adieresismacron: 0x01DE,
+  Adieresissmall: 0xF7E4,
+  Adotbelow: 0x1EA0,
+  Adotmacron: 0x01E0,
+  Agrave: 0x00C0,
+  Agravesmall: 0xF7E0,
+  Ahookabove: 0x1EA2,
+  Aiecyrillic: 0x04D4,
+  Ainvertedbreve: 0x0202,
+  Alpha: 0x0391,
+  Alphatonos: 0x0386,
+  Amacron: 0x0100,
+  Amonospace: 0xFF21,
+  Aogonek: 0x0104,
+  Aring: 0x00C5,
+  Aringacute: 0x01FA,
+  Aringbelow: 0x1E00,
+  Aringsmall: 0xF7E5,
+  Asmall: 0xF761,
+  Atilde: 0x00C3,
+  Atildesmall: 0xF7E3,
+  Aybarmenian: 0x0531,
+  B: 0x0042,
+  Bcircle: 0x24B7,
+  Bdotaccent: 0x1E02,
+  Bdotbelow: 0x1E04,
+  Becyrillic: 0x0411,
+  Benarmenian: 0x0532,
+  Beta: 0x0392,
+  Bhook: 0x0181,
+  Blinebelow: 0x1E06,
+  Bmonospace: 0xFF22,
+  Brevesmall: 0xF6F4,
+  Bsmall: 0xF762,
+  Btopbar: 0x0182,
+  C: 0x0043,
+  Caarmenian: 0x053E,
+  Cacute: 0x0106,
+  Caron: 0xF6CA,
+  Caronsmall: 0xF6F5,
+  Ccaron: 0x010C,
+  Ccedilla: 0x00C7,
+  Ccedillaacute: 0x1E08,
+  Ccedillasmall: 0xF7E7,
+  Ccircle: 0x24B8,
+  Ccircumflex: 0x0108,
+  Cdot: 0x010A,
+  Cdotaccent: 0x010A,
+  Cedillasmall: 0xF7B8,
+  Chaarmenian: 0x0549,
+  Cheabkhasiancyrillic: 0x04BC,
+  Checyrillic: 0x0427,
+  Chedescenderabkhasiancyrillic: 0x04BE,
+  Chedescendercyrillic: 0x04B6,
+  Chedieresiscyrillic: 0x04F4,
+  Cheharmenian: 0x0543,
+  Chekhakassiancyrillic: 0x04CB,
+  Cheverticalstrokecyrillic: 0x04B8,
+  Chi: 0x03A7,
+  Chook: 0x0187,
+  Circumflexsmall: 0xF6F6,
+  Cmonospace: 0xFF23,
+  Coarmenian: 0x0551,
+  Csmall: 0xF763,
+  D: 0x0044,
+  DZ: 0x01F1,
+  DZcaron: 0x01C4,
+  Daarmenian: 0x0534,
+  Dafrican: 0x0189,
+  Dcaron: 0x010E,
+  Dcedilla: 0x1E10,
+  Dcircle: 0x24B9,
+  Dcircumflexbelow: 0x1E12,
+  Dcroat: 0x0110,
+  Ddotaccent: 0x1E0A,
+  Ddotbelow: 0x1E0C,
+  Decyrillic: 0x0414,
+  Deicoptic: 0x03EE,
+  Delta: 0x2206,
+  Deltagreek: 0x0394,
+  Dhook: 0x018A,
+  Dieresis: 0xF6CB,
+  DieresisAcute: 0xF6CC,
+  DieresisGrave: 0xF6CD,
+  Dieresissmall: 0xF7A8,
+  Digammagreek: 0x03DC,
+  Djecyrillic: 0x0402,
+  Dlinebelow: 0x1E0E,
+  Dmonospace: 0xFF24,
+  Dotaccentsmall: 0xF6F7,
+  Dslash: 0x0110,
+  Dsmall: 0xF764,
+  Dtopbar: 0x018B,
+  Dz: 0x01F2,
+  Dzcaron: 0x01C5,
+  Dzeabkhasiancyrillic: 0x04E0,
+  Dzecyrillic: 0x0405,
+  Dzhecyrillic: 0x040F,
+  E: 0x0045,
+  Eacute: 0x00C9,
+  Eacutesmall: 0xF7E9,
+  Ebreve: 0x0114,
+  Ecaron: 0x011A,
+  Ecedillabreve: 0x1E1C,
+  Echarmenian: 0x0535,
+  Ecircle: 0x24BA,
+  Ecircumflex: 0x00CA,
+  Ecircumflexacute: 0x1EBE,
+  Ecircumflexbelow: 0x1E18,
+  Ecircumflexdotbelow: 0x1EC6,
+  Ecircumflexgrave: 0x1EC0,
+  Ecircumflexhookabove: 0x1EC2,
+  Ecircumflexsmall: 0xF7EA,
+  Ecircumflextilde: 0x1EC4,
+  Ecyrillic: 0x0404,
+  Edblgrave: 0x0204,
+  Edieresis: 0x00CB,
+  Edieresissmall: 0xF7EB,
+  Edot: 0x0116,
+  Edotaccent: 0x0116,
+  Edotbelow: 0x1EB8,
+  Efcyrillic: 0x0424,
+  Egrave: 0x00C8,
+  Egravesmall: 0xF7E8,
+  Eharmenian: 0x0537,
+  Ehookabove: 0x1EBA,
+  Eightroman: 0x2167,
+  Einvertedbreve: 0x0206,
+  Eiotifiedcyrillic: 0x0464,
+  Elcyrillic: 0x041B,
+  Elevenroman: 0x216A,
+  Emacron: 0x0112,
+  Emacronacute: 0x1E16,
+  Emacrongrave: 0x1E14,
+  Emcyrillic: 0x041C,
+  Emonospace: 0xFF25,
+  Encyrillic: 0x041D,
+  Endescendercyrillic: 0x04A2,
+  Eng: 0x014A,
+  Enghecyrillic: 0x04A4,
+  Enhookcyrillic: 0x04C7,
+  Eogonek: 0x0118,
+  Eopen: 0x0190,
+  Epsilon: 0x0395,
+  Epsilontonos: 0x0388,
+  Ercyrillic: 0x0420,
+  Ereversed: 0x018E,
+  Ereversedcyrillic: 0x042D,
+  Escyrillic: 0x0421,
+  Esdescendercyrillic: 0x04AA,
+  Esh: 0x01A9,
+  Esmall: 0xF765,
+  Eta: 0x0397,
+  Etarmenian: 0x0538,
+  Etatonos: 0x0389,
+  Eth: 0x00D0,
+  Ethsmall: 0xF7F0,
+  Etilde: 0x1EBC,
+  Etildebelow: 0x1E1A,
+  Euro: 0x20AC,
+  Ezh: 0x01B7,
+  Ezhcaron: 0x01EE,
+  Ezhreversed: 0x01B8,
+  F: 0x0046,
+  Fcircle: 0x24BB,
+  Fdotaccent: 0x1E1E,
+  Feharmenian: 0x0556,
+  Feicoptic: 0x03E4,
+  Fhook: 0x0191,
+  Fitacyrillic: 0x0472,
+  Fiveroman: 0x2164,
+  Fmonospace: 0xFF26,
+  Fourroman: 0x2163,
+  Fsmall: 0xF766,
+  G: 0x0047,
+  GBsquare: 0x3387,
+  Gacute: 0x01F4,
+  Gamma: 0x0393,
+  Gammaafrican: 0x0194,
+  Gangiacoptic: 0x03EA,
+  Gbreve: 0x011E,
+  Gcaron: 0x01E6,
+  Gcedilla: 0x0122,
+  Gcircle: 0x24BC,
+  Gcircumflex: 0x011C,
+  Gcommaaccent: 0x0122,
+  Gdot: 0x0120,
+  Gdotaccent: 0x0120,
+  Gecyrillic: 0x0413,
+  Ghadarmenian: 0x0542,
+  Ghemiddlehookcyrillic: 0x0494,
+  Ghestrokecyrillic: 0x0492,
+  Gheupturncyrillic: 0x0490,
+  Ghook: 0x0193,
+  Gimarmenian: 0x0533,
+  Gjecyrillic: 0x0403,
+  Gmacron: 0x1E20,
+  Gmonospace: 0xFF27,
+  Grave: 0xF6CE,
+  Gravesmall: 0xF760,
+  Gsmall: 0xF767,
+  Gsmallhook: 0x029B,
+  Gstroke: 0x01E4,
+  H: 0x0048,
+  H18533: 0x25CF,
+  H18543: 0x25AA,
+  H18551: 0x25AB,
+  H22073: 0x25A1,
+  HPsquare: 0x33CB,
+  Haabkhasiancyrillic: 0x04A8,
+  Hadescendercyrillic: 0x04B2,
+  Hardsigncyrillic: 0x042A,
+  Hbar: 0x0126,
+  Hbrevebelow: 0x1E2A,
+  Hcedilla: 0x1E28,
+  Hcircle: 0x24BD,
+  Hcircumflex: 0x0124,
+  Hdieresis: 0x1E26,
+  Hdotaccent: 0x1E22,
+  Hdotbelow: 0x1E24,
+  Hmonospace: 0xFF28,
+  Hoarmenian: 0x0540,
+  Horicoptic: 0x03E8,
+  Hsmall: 0xF768,
+  Hungarumlaut: 0xF6CF,
+  Hungarumlautsmall: 0xF6F8,
+  Hzsquare: 0x3390,
+  I: 0x0049,
+  IAcyrillic: 0x042F,
+  IJ: 0x0132,
+  IUcyrillic: 0x042E,
+  Iacute: 0x00CD,
+  Iacutesmall: 0xF7ED,
+  Ibreve: 0x012C,
+  Icaron: 0x01CF,
+  Icircle: 0x24BE,
+  Icircumflex: 0x00CE,
+  Icircumflexsmall: 0xF7EE,
+  Icyrillic: 0x0406,
+  Idblgrave: 0x0208,
+  Idieresis: 0x00CF,
+  Idieresisacute: 0x1E2E,
+  Idieresiscyrillic: 0x04E4,
+  Idieresissmall: 0xF7EF,
+  Idot: 0x0130,
+  Idotaccent: 0x0130,
+  Idotbelow: 0x1ECA,
+  Iebrevecyrillic: 0x04D6,
+  Iecyrillic: 0x0415,
+  Ifraktur: 0x2111,
+  Igrave: 0x00CC,
+  Igravesmall: 0xF7EC,
+  Ihookabove: 0x1EC8,
+  Iicyrillic: 0x0418,
+  Iinvertedbreve: 0x020A,
+  Iishortcyrillic: 0x0419,
+  Imacron: 0x012A,
+  Imacroncyrillic: 0x04E2,
+  Imonospace: 0xFF29,
+  Iniarmenian: 0x053B,
+  Iocyrillic: 0x0401,
+  Iogonek: 0x012E,
+  Iota: 0x0399,
+  Iotaafrican: 0x0196,
+  Iotadieresis: 0x03AA,
+  Iotatonos: 0x038A,
+  Ismall: 0xF769,
+  Istroke: 0x0197,
+  Itilde: 0x0128,
+  Itildebelow: 0x1E2C,
+  Izhitsacyrillic: 0x0474,
+  Izhitsadblgravecyrillic: 0x0476,
+  J: 0x004A,
+  Jaarmenian: 0x0541,
+  Jcircle: 0x24BF,
+  Jcircumflex: 0x0134,
+  Jecyrillic: 0x0408,
+  Jheharmenian: 0x054B,
+  Jmonospace: 0xFF2A,
+  Jsmall: 0xF76A,
+  K: 0x004B,
+  KBsquare: 0x3385,
+  KKsquare: 0x33CD,
+  Kabashkircyrillic: 0x04A0,
+  Kacute: 0x1E30,
+  Kacyrillic: 0x041A,
+  Kadescendercyrillic: 0x049A,
+  Kahookcyrillic: 0x04C3,
+  Kappa: 0x039A,
+  Kastrokecyrillic: 0x049E,
+  Kaverticalstrokecyrillic: 0x049C,
+  Kcaron: 0x01E8,
+  Kcedilla: 0x0136,
+  Kcircle: 0x24C0,
+  Kcommaaccent: 0x0136,
+  Kdotbelow: 0x1E32,
+  Keharmenian: 0x0554,
+  Kenarmenian: 0x053F,
+  Khacyrillic: 0x0425,
+  Kheicoptic: 0x03E6,
+  Khook: 0x0198,
+  Kjecyrillic: 0x040C,
+  Klinebelow: 0x1E34,
+  Kmonospace: 0xFF2B,
+  Koppacyrillic: 0x0480,
+  Koppagreek: 0x03DE,
+  Ksicyrillic: 0x046E,
+  Ksmall: 0xF76B,
+  L: 0x004C,
+  LJ: 0x01C7,
+  LL: 0xF6BF,
+  Lacute: 0x0139,
+  Lambda: 0x039B,
+  Lcaron: 0x013D,
+  Lcedilla: 0x013B,
+  Lcircle: 0x24C1,
+  Lcircumflexbelow: 0x1E3C,
+  Lcommaaccent: 0x013B,
+  Ldot: 0x013F,
+  Ldotaccent: 0x013F,
+  Ldotbelow: 0x1E36,
+  Ldotbelowmacron: 0x1E38,
+  Liwnarmenian: 0x053C,
+  Lj: 0x01C8,
+  Ljecyrillic: 0x0409,
+  Llinebelow: 0x1E3A,
+  Lmonospace: 0xFF2C,
+  Lslash: 0x0141,
+  Lslashsmall: 0xF6F9,
+  Lsmall: 0xF76C,
+  M: 0x004D,
+  MBsquare: 0x3386,
+  Macron: 0xF6D0,
+  Macronsmall: 0xF7AF,
+  Macute: 0x1E3E,
+  Mcircle: 0x24C2,
+  Mdotaccent: 0x1E40,
+  Mdotbelow: 0x1E42,
+  Menarmenian: 0x0544,
+  Mmonospace: 0xFF2D,
+  Msmall: 0xF76D,
+  Mturned: 0x019C,
+  Mu: 0x039C,
+  N: 0x004E,
+  NJ: 0x01CA,
+  Nacute: 0x0143,
+  Ncaron: 0x0147,
+  Ncedilla: 0x0145,
+  Ncircle: 0x24C3,
+  Ncircumflexbelow: 0x1E4A,
+  Ncommaaccent: 0x0145,
+  Ndotaccent: 0x1E44,
+  Ndotbelow: 0x1E46,
+  Nhookleft: 0x019D,
+  Nineroman: 0x2168,
+  Nj: 0x01CB,
+  Njecyrillic: 0x040A,
+  Nlinebelow: 0x1E48,
+  Nmonospace: 0xFF2E,
+  Nowarmenian: 0x0546,
+  Nsmall: 0xF76E,
+  Ntilde: 0x00D1,
+  Ntildesmall: 0xF7F1,
+  Nu: 0x039D,
+  O: 0x004F,
+  OE: 0x0152,
+  OEsmall: 0xF6FA,
+  Oacute: 0x00D3,
+  Oacutesmall: 0xF7F3,
+  Obarredcyrillic: 0x04E8,
+  Obarreddieresiscyrillic: 0x04EA,
+  Obreve: 0x014E,
+  Ocaron: 0x01D1,
+  Ocenteredtilde: 0x019F,
+  Ocircle: 0x24C4,
+  Ocircumflex: 0x00D4,
+  Ocircumflexacute: 0x1ED0,
+  Ocircumflexdotbelow: 0x1ED8,
+  Ocircumflexgrave: 0x1ED2,
+  Ocircumflexhookabove: 0x1ED4,
+  Ocircumflexsmall: 0xF7F4,
+  Ocircumflextilde: 0x1ED6,
+  Ocyrillic: 0x041E,
+  Odblacute: 0x0150,
+  Odblgrave: 0x020C,
+  Odieresis: 0x00D6,
+  Odieresiscyrillic: 0x04E6,
+  Odieresissmall: 0xF7F6,
+  Odotbelow: 0x1ECC,
+  Ogoneksmall: 0xF6FB,
+  Ograve: 0x00D2,
+  Ogravesmall: 0xF7F2,
+  Oharmenian: 0x0555,
+  Ohm: 0x2126,
+  Ohookabove: 0x1ECE,
+  Ohorn: 0x01A0,
+  Ohornacute: 0x1EDA,
+  Ohorndotbelow: 0x1EE2,
+  Ohorngrave: 0x1EDC,
+  Ohornhookabove: 0x1EDE,
+  Ohorntilde: 0x1EE0,
+  Ohungarumlaut: 0x0150,
+  Oi: 0x01A2,
+  Oinvertedbreve: 0x020E,
+  Omacron: 0x014C,
+  Omacronacute: 0x1E52,
+  Omacrongrave: 0x1E50,
+  Omega: 0x2126,
+  Omegacyrillic: 0x0460,
+  Omegagreek: 0x03A9,
+  Omegaroundcyrillic: 0x047A,
+  Omegatitlocyrillic: 0x047C,
+  Omegatonos: 0x038F,
+  Omicron: 0x039F,
+  Omicrontonos: 0x038C,
+  Omonospace: 0xFF2F,
+  Oneroman: 0x2160,
+  Oogonek: 0x01EA,
+  Oogonekmacron: 0x01EC,
+  Oopen: 0x0186,
+  Oslash: 0x00D8,
+  Oslashacute: 0x01FE,
+  Oslashsmall: 0xF7F8,
+  Osmall: 0xF76F,
+  Ostrokeacute: 0x01FE,
+  Otcyrillic: 0x047E,
+  Otilde: 0x00D5,
+  Otildeacute: 0x1E4C,
+  Otildedieresis: 0x1E4E,
+  Otildesmall: 0xF7F5,
+  P: 0x0050,
+  Pacute: 0x1E54,
+  Pcircle: 0x24C5,
+  Pdotaccent: 0x1E56,
+  Pecyrillic: 0x041F,
+  Peharmenian: 0x054A,
+  Pemiddlehookcyrillic: 0x04A6,
+  Phi: 0x03A6,
+  Phook: 0x01A4,
+  Pi: 0x03A0,
+  Piwrarmenian: 0x0553,
+  Pmonospace: 0xFF30,
+  Psi: 0x03A8,
+  Psicyrillic: 0x0470,
+  Psmall: 0xF770,
+  Q: 0x0051,
+  Qcircle: 0x24C6,
+  Qmonospace: 0xFF31,
+  Qsmall: 0xF771,
+  R: 0x0052,
+  Raarmenian: 0x054C,
+  Racute: 0x0154,
+  Rcaron: 0x0158,
+  Rcedilla: 0x0156,
+  Rcircle: 0x24C7,
+  Rcommaaccent: 0x0156,
+  Rdblgrave: 0x0210,
+  Rdotaccent: 0x1E58,
+  Rdotbelow: 0x1E5A,
+  Rdotbelowmacron: 0x1E5C,
+  Reharmenian: 0x0550,
+  Rfraktur: 0x211C,
+  Rho: 0x03A1,
+  Ringsmall: 0xF6FC,
+  Rinvertedbreve: 0x0212,
+  Rlinebelow: 0x1E5E,
+  Rmonospace: 0xFF32,
+  Rsmall: 0xF772,
+  Rsmallinverted: 0x0281,
+  Rsmallinvertedsuperior: 0x02B6,
+  S: 0x0053,
+  SF010000: 0x250C,
+  SF020000: 0x2514,
+  SF030000: 0x2510,
+  SF040000: 0x2518,
+  SF050000: 0x253C,
+  SF060000: 0x252C,
+  SF070000: 0x2534,
+  SF080000: 0x251C,
+  SF090000: 0x2524,
+  SF100000: 0x2500,
+  SF110000: 0x2502,
+  SF190000: 0x2561,
+  SF200000: 0x2562,
+  SF210000: 0x2556,
+  SF220000: 0x2555,
+  SF230000: 0x2563,
+  SF240000: 0x2551,
+  SF250000: 0x2557,
+  SF260000: 0x255D,
+  SF270000: 0x255C,
+  SF280000: 0x255B,
+  SF360000: 0x255E,
+  SF370000: 0x255F,
+  SF380000: 0x255A,
+  SF390000: 0x2554,
+  SF400000: 0x2569,
+  SF410000: 0x2566,
+  SF420000: 0x2560,
+  SF430000: 0x2550,
+  SF440000: 0x256C,
+  SF450000: 0x2567,
+  SF460000: 0x2568,
+  SF470000: 0x2564,
+  SF480000: 0x2565,
+  SF490000: 0x2559,
+  SF500000: 0x2558,
+  SF510000: 0x2552,
+  SF520000: 0x2553,
+  SF530000: 0x256B,
+  SF540000: 0x256A,
+  Sacute: 0x015A,
+  Sacutedotaccent: 0x1E64,
+  Sampigreek: 0x03E0,
+  Scaron: 0x0160,
+  Scarondotaccent: 0x1E66,
+  Scaronsmall: 0xF6FD,
+  Scedilla: 0x015E,
+  Schwa: 0x018F,
+  Schwacyrillic: 0x04D8,
+  Schwadieresiscyrillic: 0x04DA,
+  Scircle: 0x24C8,
+  Scircumflex: 0x015C,
+  Scommaaccent: 0x0218,
+  Sdotaccent: 0x1E60,
+  Sdotbelow: 0x1E62,
+  Sdotbelowdotaccent: 0x1E68,
+  Seharmenian: 0x054D,
+  Sevenroman: 0x2166,
+  Shaarmenian: 0x0547,
+  Shacyrillic: 0x0428,
+  Shchacyrillic: 0x0429,
+  Sheicoptic: 0x03E2,
+  Shhacyrillic: 0x04BA,
+  Shimacoptic: 0x03EC,
+  Sigma: 0x03A3,
+  Sixroman: 0x2165,
+  Smonospace: 0xFF33,
+  Softsigncyrillic: 0x042C,
+  Ssmall: 0xF773,
+  Stigmagreek: 0x03DA,
+  T: 0x0054,
+  Tau: 0x03A4,
+  Tbar: 0x0166,
+  Tcaron: 0x0164,
+  Tcedilla: 0x0162,
+  Tcircle: 0x24C9,
+  Tcircumflexbelow: 0x1E70,
+  Tcommaaccent: 0x0162,
+  Tdotaccent: 0x1E6A,
+  Tdotbelow: 0x1E6C,
+  Tecyrillic: 0x0422,
+  Tedescendercyrillic: 0x04AC,
+  Tenroman: 0x2169,
+  Tetsecyrillic: 0x04B4,
+  Theta: 0x0398,
+  Thook: 0x01AC,
+  Thorn: 0x00DE,
+  Thornsmall: 0xF7FE,
+  Threeroman: 0x2162,
+  Tildesmall: 0xF6FE,
+  Tiwnarmenian: 0x054F,
+  Tlinebelow: 0x1E6E,
+  Tmonospace: 0xFF34,
+  Toarmenian: 0x0539,
+  Tonefive: 0x01BC,
+  Tonesix: 0x0184,
+  Tonetwo: 0x01A7,
+  Tretroflexhook: 0x01AE,
+  Tsecyrillic: 0x0426,
+  Tshecyrillic: 0x040B,
+  Tsmall: 0xF774,
+  Twelveroman: 0x216B,
+  Tworoman: 0x2161,
+  U: 0x0055,
+  Uacute: 0x00DA,
+  Uacutesmall: 0xF7FA,
+  Ubreve: 0x016C,
+  Ucaron: 0x01D3,
+  Ucircle: 0x24CA,
+  Ucircumflex: 0x00DB,
+  Ucircumflexbelow: 0x1E76,
+  Ucircumflexsmall: 0xF7FB,
+  Ucyrillic: 0x0423,
+  Udblacute: 0x0170,
+  Udblgrave: 0x0214,
+  Udieresis: 0x00DC,
+  Udieresisacute: 0x01D7,
+  Udieresisbelow: 0x1E72,
+  Udieresiscaron: 0x01D9,
+  Udieresiscyrillic: 0x04F0,
+  Udieresisgrave: 0x01DB,
+  Udieresismacron: 0x01D5,
+  Udieresissmall: 0xF7FC,
+  Udotbelow: 0x1EE4,
+  Ugrave: 0x00D9,
+  Ugravesmall: 0xF7F9,
+  Uhookabove: 0x1EE6,
+  Uhorn: 0x01AF,
+  Uhornacute: 0x1EE8,
+  Uhorndotbelow: 0x1EF0,
+  Uhorngrave: 0x1EEA,
+  Uhornhookabove: 0x1EEC,
+  Uhorntilde: 0x1EEE,
+  Uhungarumlaut: 0x0170,
+  Uhungarumlautcyrillic: 0x04F2,
+  Uinvertedbreve: 0x0216,
+  Ukcyrillic: 0x0478,
+  Umacron: 0x016A,
+  Umacroncyrillic: 0x04EE,
+  Umacrondieresis: 0x1E7A,
+  Umonospace: 0xFF35,
+  Uogonek: 0x0172,
+  Upsilon: 0x03A5,
+  Upsilon1: 0x03D2,
+  Upsilonacutehooksymbolgreek: 0x03D3,
+  Upsilonafrican: 0x01B1,
+  Upsilondieresis: 0x03AB,
+  Upsilondieresishooksymbolgreek: 0x03D4,
+  Upsilonhooksymbol: 0x03D2,
+  Upsilontonos: 0x038E,
+  Uring: 0x016E,
+  Ushortcyrillic: 0x040E,
+  Usmall: 0xF775,
+  Ustraightcyrillic: 0x04AE,
+  Ustraightstrokecyrillic: 0x04B0,
+  Utilde: 0x0168,
+  Utildeacute: 0x1E78,
+  Utildebelow: 0x1E74,
+  V: 0x0056,
+  Vcircle: 0x24CB,
+  Vdotbelow: 0x1E7E,
+  Vecyrillic: 0x0412,
+  Vewarmenian: 0x054E,
+  Vhook: 0x01B2,
+  Vmonospace: 0xFF36,
+  Voarmenian: 0x0548,
+  Vsmall: 0xF776,
+  Vtilde: 0x1E7C,
+  W: 0x0057,
+  Wacute: 0x1E82,
+  Wcircle: 0x24CC,
+  Wcircumflex: 0x0174,
+  Wdieresis: 0x1E84,
+  Wdotaccent: 0x1E86,
+  Wdotbelow: 0x1E88,
+  Wgrave: 0x1E80,
+  Wmonospace: 0xFF37,
+  Wsmall: 0xF777,
+  X: 0x0058,
+  Xcircle: 0x24CD,
+  Xdieresis: 0x1E8C,
+  Xdotaccent: 0x1E8A,
+  Xeharmenian: 0x053D,
+  Xi: 0x039E,
+  Xmonospace: 0xFF38,
+  Xsmall: 0xF778,
+  Y: 0x0059,
+  Yacute: 0x00DD,
+  Yacutesmall: 0xF7FD,
+  Yatcyrillic: 0x0462,
+  Ycircle: 0x24CE,
+  Ycircumflex: 0x0176,
+  Ydieresis: 0x0178,
+  Ydieresissmall: 0xF7FF,
+  Ydotaccent: 0x1E8E,
+  Ydotbelow: 0x1EF4,
+  Yericyrillic: 0x042B,
+  Yerudieresiscyrillic: 0x04F8,
+  Ygrave: 0x1EF2,
+  Yhook: 0x01B3,
+  Yhookabove: 0x1EF6,
+  Yiarmenian: 0x0545,
+  Yicyrillic: 0x0407,
+  Yiwnarmenian: 0x0552,
+  Ymonospace: 0xFF39,
+  Ysmall: 0xF779,
+  Ytilde: 0x1EF8,
+  Yusbigcyrillic: 0x046A,
+  Yusbigiotifiedcyrillic: 0x046C,
+  Yuslittlecyrillic: 0x0466,
+  Yuslittleiotifiedcyrillic: 0x0468,
+  Z: 0x005A,
+  Zaarmenian: 0x0536,
+  Zacute: 0x0179,
+  Zcaron: 0x017D,
+  Zcaronsmall: 0xF6FF,
+  Zcircle: 0x24CF,
+  Zcircumflex: 0x1E90,
+  Zdot: 0x017B,
+  Zdotaccent: 0x017B,
+  Zdotbelow: 0x1E92,
+  Zecyrillic: 0x0417,
+  Zedescendercyrillic: 0x0498,
+  Zedieresiscyrillic: 0x04DE,
+  Zeta: 0x0396,
+  Zhearmenian: 0x053A,
+  Zhebrevecyrillic: 0x04C1,
+  Zhecyrillic: 0x0416,
+  Zhedescendercyrillic: 0x0496,
+  Zhedieresiscyrillic: 0x04DC,
+  Zlinebelow: 0x1E94,
+  Zmonospace: 0xFF3A,
+  Zsmall: 0xF77A,
+  Zstroke: 0x01B5,
+  a: 0x0061,
+  aabengali: 0x0986,
+  aacute: 0x00E1,
+  aadeva: 0x0906,
+  aagujarati: 0x0A86,
+  aagurmukhi: 0x0A06,
+  aamatragurmukhi: 0x0A3E,
+  aarusquare: 0x3303,
+  aavowelsignbengali: 0x09BE,
+  aavowelsigndeva: 0x093E,
+  aavowelsigngujarati: 0x0ABE,
+  abbreviationmarkarmenian: 0x055F,
+  abbreviationsigndeva: 0x0970,
+  abengali: 0x0985,
+  abopomofo: 0x311A,
+  abreve: 0x0103,
+  abreveacute: 0x1EAF,
+  abrevecyrillic: 0x04D1,
+  abrevedotbelow: 0x1EB7,
+  abrevegrave: 0x1EB1,
+  abrevehookabove: 0x1EB3,
+  abrevetilde: 0x1EB5,
+  acaron: 0x01CE,
+  acircle: 0x24D0,
+  acircumflex: 0x00E2,
+  acircumflexacute: 0x1EA5,
+  acircumflexdotbelow: 0x1EAD,
+  acircumflexgrave: 0x1EA7,
+  acircumflexhookabove: 0x1EA9,
+  acircumflextilde: 0x1EAB,
+  acute: 0x00B4,
+  acutebelowcmb: 0x0317,
+  acutecmb: 0x0301,
+  acutecomb: 0x0301,
+  acutedeva: 0x0954,
+  acutelowmod: 0x02CF,
+  acutetonecmb: 0x0341,
+  acyrillic: 0x0430,
+  adblgrave: 0x0201,
+  addakgurmukhi: 0x0A71,
+  adeva: 0x0905,
+  adieresis: 0x00E4,
+  adieresiscyrillic: 0x04D3,
+  adieresismacron: 0x01DF,
+  adotbelow: 0x1EA1,
+  adotmacron: 0x01E1,
+  ae: 0x00E6,
+  aeacute: 0x01FD,
+  aekorean: 0x3150,
+  aemacron: 0x01E3,
+  afii00208: 0x2015,
+  afii08941: 0x20A4,
+  afii10017: 0x0410,
+  afii10018: 0x0411,
+  afii10019: 0x0412,
+  afii10020: 0x0413,
+  afii10021: 0x0414,
+  afii10022: 0x0415,
+  afii10023: 0x0401,
+  afii10024: 0x0416,
+  afii10025: 0x0417,
+  afii10026: 0x0418,
+  afii10027: 0x0419,
+  afii10028: 0x041A,
+  afii10029: 0x041B,
+  afii10030: 0x041C,
+  afii10031: 0x041D,
+  afii10032: 0x041E,
+  afii10033: 0x041F,
+  afii10034: 0x0420,
+  afii10035: 0x0421,
+  afii10036: 0x0422,
+  afii10037: 0x0423,
+  afii10038: 0x0424,
+  afii10039: 0x0425,
+  afii10040: 0x0426,
+  afii10041: 0x0427,
+  afii10042: 0x0428,
+  afii10043: 0x0429,
+  afii10044: 0x042A,
+  afii10045: 0x042B,
+  afii10046: 0x042C,
+  afii10047: 0x042D,
+  afii10048: 0x042E,
+  afii10049: 0x042F,
+  afii10050: 0x0490,
+  afii10051: 0x0402,
+  afii10052: 0x0403,
+  afii10053: 0x0404,
+  afii10054: 0x0405,
+  afii10055: 0x0406,
+  afii10056: 0x0407,
+  afii10057: 0x0408,
+  afii10058: 0x0409,
+  afii10059: 0x040A,
+  afii10060: 0x040B,
+  afii10061: 0x040C,
+  afii10062: 0x040E,
+  afii10063: 0xF6C4,
+  afii10064: 0xF6C5,
+  afii10065: 0x0430,
+  afii10066: 0x0431,
+  afii10067: 0x0432,
+  afii10068: 0x0433,
+  afii10069: 0x0434,
+  afii10070: 0x0435,
+  afii10071: 0x0451,
+  afii10072: 0x0436,
+  afii10073: 0x0437,
+  afii10074: 0x0438,
+  afii10075: 0x0439,
+  afii10076: 0x043A,
+  afii10077: 0x043B,
+  afii10078: 0x043C,
+  afii10079: 0x043D,
+  afii10080: 0x043E,
+  afii10081: 0x043F,
+  afii10082: 0x0440,
+  afii10083: 0x0441,
+  afii10084: 0x0442,
+  afii10085: 0x0443,
+  afii10086: 0x0444,
+  afii10087: 0x0445,
+  afii10088: 0x0446,
+  afii10089: 0x0447,
+  afii10090: 0x0448,
+  afii10091: 0x0449,
+  afii10092: 0x044A,
+  afii10093: 0x044B,
+  afii10094: 0x044C,
+  afii10095: 0x044D,
+  afii10096: 0x044E,
+  afii10097: 0x044F,
+  afii10098: 0x0491,
+  afii10099: 0x0452,
+  afii10100: 0x0453,
+  afii10101: 0x0454,
+  afii10102: 0x0455,
+  afii10103: 0x0456,
+  afii10104: 0x0457,
+  afii10105: 0x0458,
+  afii10106: 0x0459,
+  afii10107: 0x045A,
+  afii10108: 0x045B,
+  afii10109: 0x045C,
+  afii10110: 0x045E,
+  afii10145: 0x040F,
+  afii10146: 0x0462,
+  afii10147: 0x0472,
+  afii10148: 0x0474,
+  afii10192: 0xF6C6,
+  afii10193: 0x045F,
+  afii10194: 0x0463,
+  afii10195: 0x0473,
+  afii10196: 0x0475,
+  afii10831: 0xF6C7,
+  afii10832: 0xF6C8,
+  afii10846: 0x04D9,
+  afii299: 0x200E,
+  afii300: 0x200F,
+  afii301: 0x200D,
+  afii57381: 0x066A,
+  afii57388: 0x060C,
+  afii57392: 0x0660,
+  afii57393: 0x0661,
+  afii57394: 0x0662,
+  afii57395: 0x0663,
+  afii57396: 0x0664,
+  afii57397: 0x0665,
+  afii57398: 0x0666,
+  afii57399: 0x0667,
+  afii57400: 0x0668,
+  afii57401: 0x0669,
+  afii57403: 0x061B,
+  afii57407: 0x061F,
+  afii57409: 0x0621,
+  afii57410: 0x0622,
+  afii57411: 0x0623,
+  afii57412: 0x0624,
+  afii57413: 0x0625,
+  afii57414: 0x0626,
+  afii57415: 0x0627,
+  afii57416: 0x0628,
+  afii57417: 0x0629,
+  afii57418: 0x062A,
+  afii57419: 0x062B,
+  afii57420: 0x062C,
+  afii57421: 0x062D,
+  afii57422: 0x062E,
+  afii57423: 0x062F,
+  afii57424: 0x0630,
+  afii57425: 0x0631,
+  afii57426: 0x0632,
+  afii57427: 0x0633,
+  afii57428: 0x0634,
+  afii57429: 0x0635,
+  afii57430: 0x0636,
+  afii57431: 0x0637,
+  afii57432: 0x0638,
+  afii57433: 0x0639,
+  afii57434: 0x063A,
+  afii57440: 0x0640,
+  afii57441: 0x0641,
+  afii57442: 0x0642,
+  afii57443: 0x0643,
+  afii57444: 0x0644,
+  afii57445: 0x0645,
+  afii57446: 0x0646,
+  afii57448: 0x0648,
+  afii57449: 0x0649,
+  afii57450: 0x064A,
+  afii57451: 0x064B,
+  afii57452: 0x064C,
+  afii57453: 0x064D,
+  afii57454: 0x064E,
+  afii57455: 0x064F,
+  afii57456: 0x0650,
+  afii57457: 0x0651,
+  afii57458: 0x0652,
+  afii57470: 0x0647,
+  afii57505: 0x06A4,
+  afii57506: 0x067E,
+  afii57507: 0x0686,
+  afii57508: 0x0698,
+  afii57509: 0x06AF,
+  afii57511: 0x0679,
+  afii57512: 0x0688,
+  afii57513: 0x0691,
+  afii57514: 0x06BA,
+  afii57519: 0x06D2,
+  afii57534: 0x06D5,
+  afii57636: 0x20AA,
+  afii57645: 0x05BE,
+  afii57658: 0x05C3,
+  afii57664: 0x05D0,
+  afii57665: 0x05D1,
+  afii57666: 0x05D2,
+  afii57667: 0x05D3,
+  afii57668: 0x05D4,
+  afii57669: 0x05D5,
+  afii57670: 0x05D6,
+  afii57671: 0x05D7,
+  afii57672: 0x05D8,
+  afii57673: 0x05D9,
+  afii57674: 0x05DA,
+  afii57675: 0x05DB,
+  afii57676: 0x05DC,
+  afii57677: 0x05DD,
+  afii57678: 0x05DE,
+  afii57679: 0x05DF,
+  afii57680: 0x05E0,
+  afii57681: 0x05E1,
+  afii57682: 0x05E2,
+  afii57683: 0x05E3,
+  afii57684: 0x05E4,
+  afii57685: 0x05E5,
+  afii57686: 0x05E6,
+  afii57687: 0x05E7,
+  afii57688: 0x05E8,
+  afii57689: 0x05E9,
+  afii57690: 0x05EA,
+  afii57694: 0xFB2A,
+  afii57695: 0xFB2B,
+  afii57700: 0xFB4B,
+  afii57705: 0xFB1F,
+  afii57716: 0x05F0,
+  afii57717: 0x05F1,
+  afii57718: 0x05F2,
+  afii57723: 0xFB35,
+  afii57793: 0x05B4,
+  afii57794: 0x05B5,
+  afii57795: 0x05B6,
+  afii57796: 0x05BB,
+  afii57797: 0x05B8,
+  afii57798: 0x05B7,
+  afii57799: 0x05B0,
+  afii57800: 0x05B2,
+  afii57801: 0x05B1,
+  afii57802: 0x05B3,
+  afii57803: 0x05C2,
+  afii57804: 0x05C1,
+  afii57806: 0x05B9,
+  afii57807: 0x05BC,
+  afii57839: 0x05BD,
+  afii57841: 0x05BF,
+  afii57842: 0x05C0,
+  afii57929: 0x02BC,
+  afii61248: 0x2105,
+  afii61289: 0x2113,
+  afii61352: 0x2116,
+  afii61573: 0x202C,
+  afii61574: 0x202D,
+  afii61575: 0x202E,
+  afii61664: 0x200C,
+  afii63167: 0x066D,
+  afii64937: 0x02BD,
+  agrave: 0x00E0,
+  agujarati: 0x0A85,
+  agurmukhi: 0x0A05,
+  ahiragana: 0x3042,
+  ahookabove: 0x1EA3,
+  aibengali: 0x0990,
+  aibopomofo: 0x311E,
+  aideva: 0x0910,
+  aiecyrillic: 0x04D5,
+  aigujarati: 0x0A90,
+  aigurmukhi: 0x0A10,
+  aimatragurmukhi: 0x0A48,
+  ainarabic: 0x0639,
+  ainfinalarabic: 0xFECA,
+  aininitialarabic: 0xFECB,
+  ainmedialarabic: 0xFECC,
+  ainvertedbreve: 0x0203,
+  aivowelsignbengali: 0x09C8,
+  aivowelsigndeva: 0x0948,
+  aivowelsigngujarati: 0x0AC8,
+  akatakana: 0x30A2,
+  akatakanahalfwidth: 0xFF71,
+  akorean: 0x314F,
+  alef: 0x05D0,
+  alefarabic: 0x0627,
+  alefdageshhebrew: 0xFB30,
+  aleffinalarabic: 0xFE8E,
+  alefhamzaabovearabic: 0x0623,
+  alefhamzaabovefinalarabic: 0xFE84,
+  alefhamzabelowarabic: 0x0625,
+  alefhamzabelowfinalarabic: 0xFE88,
+  alefhebrew: 0x05D0,
+  aleflamedhebrew: 0xFB4F,
+  alefmaddaabovearabic: 0x0622,
+  alefmaddaabovefinalarabic: 0xFE82,
+  alefmaksuraarabic: 0x0649,
+  alefmaksurafinalarabic: 0xFEF0,
+  alefmaksurainitialarabic: 0xFEF3,
+  alefmaksuramedialarabic: 0xFEF4,
+  alefpatahhebrew: 0xFB2E,
+  alefqamatshebrew: 0xFB2F,
+  aleph: 0x2135,
+  allequal: 0x224C,
+  alpha: 0x03B1,
+  alphatonos: 0x03AC,
+  amacron: 0x0101,
+  amonospace: 0xFF41,
+  ampersand: 0x0026,
+  ampersandmonospace: 0xFF06,
+  ampersandsmall: 0xF726,
+  amsquare: 0x33C2,
+  anbopomofo: 0x3122,
+  angbopomofo: 0x3124,
+  angbracketleft: 0x3008, // This glyph is missing from Adobe's original list.
+  angbracketright: 0x3009, // This glyph is missing from Adobe's original list.
+  angkhankhuthai: 0x0E5A,
+  angle: 0x2220,
+  anglebracketleft: 0x3008,
+  anglebracketleftvertical: 0xFE3F,
+  anglebracketright: 0x3009,
+  anglebracketrightvertical: 0xFE40,
+  angleleft: 0x2329,
+  angleright: 0x232A,
+  angstrom: 0x212B,
+  anoteleia: 0x0387,
+  anudattadeva: 0x0952,
+  anusvarabengali: 0x0982,
+  anusvaradeva: 0x0902,
+  anusvaragujarati: 0x0A82,
+  aogonek: 0x0105,
+  apaatosquare: 0x3300,
+  aparen: 0x249C,
+  apostrophearmenian: 0x055A,
+  apostrophemod: 0x02BC,
+  apple: 0xF8FF,
+  approaches: 0x2250,
+  approxequal: 0x2248,
+  approxequalorimage: 0x2252,
+  approximatelyequal: 0x2245,
+  araeaekorean: 0x318E,
+  araeakorean: 0x318D,
+  arc: 0x2312,
+  arighthalfring: 0x1E9A,
+  aring: 0x00E5,
+  aringacute: 0x01FB,
+  aringbelow: 0x1E01,
+  arrowboth: 0x2194,
+  arrowdashdown: 0x21E3,
+  arrowdashleft: 0x21E0,
+  arrowdashright: 0x21E2,
+  arrowdashup: 0x21E1,
+  arrowdblboth: 0x21D4,
+  arrowdbldown: 0x21D3,
+  arrowdblleft: 0x21D0,
+  arrowdblright: 0x21D2,
+  arrowdblup: 0x21D1,
+  arrowdown: 0x2193,
+  arrowdownleft: 0x2199,
+  arrowdownright: 0x2198,
+  arrowdownwhite: 0x21E9,
+  arrowheaddownmod: 0x02C5,
+  arrowheadleftmod: 0x02C2,
+  arrowheadrightmod: 0x02C3,
+  arrowheadupmod: 0x02C4,
+  arrowhorizex: 0xF8E7,
+  arrowleft: 0x2190,
+  arrowleftdbl: 0x21D0,
+  arrowleftdblstroke: 0x21CD,
+  arrowleftoverright: 0x21C6,
+  arrowleftwhite: 0x21E6,
+  arrowright: 0x2192,
+  arrowrightdblstroke: 0x21CF,
+  arrowrightheavy: 0x279E,
+  arrowrightoverleft: 0x21C4,
+  arrowrightwhite: 0x21E8,
+  arrowtableft: 0x21E4,
+  arrowtabright: 0x21E5,
+  arrowup: 0x2191,
+  arrowupdn: 0x2195,
+  arrowupdnbse: 0x21A8,
+  arrowupdownbase: 0x21A8,
+  arrowupleft: 0x2196,
+  arrowupleftofdown: 0x21C5,
+  arrowupright: 0x2197,
+  arrowupwhite: 0x21E7,
+  arrowvertex: 0xF8E6,
+  asciicircum: 0x005E,
+  asciicircummonospace: 0xFF3E,
+  asciitilde: 0x007E,
+  asciitildemonospace: 0xFF5E,
+  ascript: 0x0251,
+  ascriptturned: 0x0252,
+  asmallhiragana: 0x3041,
+  asmallkatakana: 0x30A1,
+  asmallkatakanahalfwidth: 0xFF67,
+  asterisk: 0x002A,
+  asteriskaltonearabic: 0x066D,
+  asteriskarabic: 0x066D,
+  asteriskmath: 0x2217,
+  asteriskmonospace: 0xFF0A,
+  asterisksmall: 0xFE61,
+  asterism: 0x2042,
+  asuperior: 0xF6E9,
+  asymptoticallyequal: 0x2243,
+  at: 0x0040,
+  atilde: 0x00E3,
+  atmonospace: 0xFF20,
+  atsmall: 0xFE6B,
+  aturned: 0x0250,
+  aubengali: 0x0994,
+  aubopomofo: 0x3120,
+  audeva: 0x0914,
+  augujarati: 0x0A94,
+  augurmukhi: 0x0A14,
+  aulengthmarkbengali: 0x09D7,
+  aumatragurmukhi: 0x0A4C,
+  auvowelsignbengali: 0x09CC,
+  auvowelsigndeva: 0x094C,
+  auvowelsigngujarati: 0x0ACC,
+  avagrahadeva: 0x093D,
+  aybarmenian: 0x0561,
+  ayin: 0x05E2,
+  ayinaltonehebrew: 0xFB20,
+  ayinhebrew: 0x05E2,
+  b: 0x0062,
+  babengali: 0x09AC,
+  backslash: 0x005C,
+  backslashmonospace: 0xFF3C,
+  badeva: 0x092C,
+  bagujarati: 0x0AAC,
+  bagurmukhi: 0x0A2C,
+  bahiragana: 0x3070,
+  bahtthai: 0x0E3F,
+  bakatakana: 0x30D0,
+  bar: 0x007C,
+  barmonospace: 0xFF5C,
+  bbopomofo: 0x3105,
+  bcircle: 0x24D1,
+  bdotaccent: 0x1E03,
+  bdotbelow: 0x1E05,
+  beamedsixteenthnotes: 0x266C,
+  because: 0x2235,
+  becyrillic: 0x0431,
+  beharabic: 0x0628,
+  behfinalarabic: 0xFE90,
+  behinitialarabic: 0xFE91,
+  behiragana: 0x3079,
+  behmedialarabic: 0xFE92,
+  behmeeminitialarabic: 0xFC9F,
+  behmeemisolatedarabic: 0xFC08,
+  behnoonfinalarabic: 0xFC6D,
+  bekatakana: 0x30D9,
+  benarmenian: 0x0562,
+  bet: 0x05D1,
+  beta: 0x03B2,
+  betasymbolgreek: 0x03D0,
+  betdagesh: 0xFB31,
+  betdageshhebrew: 0xFB31,
+  bethebrew: 0x05D1,
+  betrafehebrew: 0xFB4C,
+  bhabengali: 0x09AD,
+  bhadeva: 0x092D,
+  bhagujarati: 0x0AAD,
+  bhagurmukhi: 0x0A2D,
+  bhook: 0x0253,
+  bihiragana: 0x3073,
+  bikatakana: 0x30D3,
+  bilabialclick: 0x0298,
+  bindigurmukhi: 0x0A02,
+  birusquare: 0x3331,
+  blackcircle: 0x25CF,
+  blackdiamond: 0x25C6,
+  blackdownpointingtriangle: 0x25BC,
+  blackleftpointingpointer: 0x25C4,
+  blackleftpointingtriangle: 0x25C0,
+  blacklenticularbracketleft: 0x3010,
+  blacklenticularbracketleftvertical: 0xFE3B,
+  blacklenticularbracketright: 0x3011,
+  blacklenticularbracketrightvertical: 0xFE3C,
+  blacklowerlefttriangle: 0x25E3,
+  blacklowerrighttriangle: 0x25E2,
+  blackrectangle: 0x25AC,
+  blackrightpointingpointer: 0x25BA,
+  blackrightpointingtriangle: 0x25B6,
+  blacksmallsquare: 0x25AA,
+  blacksmilingface: 0x263B,
+  blacksquare: 0x25A0,
+  blackstar: 0x2605,
+  blackupperlefttriangle: 0x25E4,
+  blackupperrighttriangle: 0x25E5,
+  blackuppointingsmalltriangle: 0x25B4,
+  blackuppointingtriangle: 0x25B2,
+  blank: 0x2423,
+  blinebelow: 0x1E07,
+  block: 0x2588,
+  bmonospace: 0xFF42,
+  bobaimaithai: 0x0E1A,
+  bohiragana: 0x307C,
+  bokatakana: 0x30DC,
+  bparen: 0x249D,
+  bqsquare: 0x33C3,
+  braceex: 0xF8F4,
+  braceleft: 0x007B,
+  braceleftbt: 0xF8F3,
+  braceleftmid: 0xF8F2,
+  braceleftmonospace: 0xFF5B,
+  braceleftsmall: 0xFE5B,
+  bracelefttp: 0xF8F1,
+  braceleftvertical: 0xFE37,
+  braceright: 0x007D,
+  bracerightbt: 0xF8FE,
+  bracerightmid: 0xF8FD,
+  bracerightmonospace: 0xFF5D,
+  bracerightsmall: 0xFE5C,
+  bracerighttp: 0xF8FC,
+  bracerightvertical: 0xFE38,
+  bracketleft: 0x005B,
+  bracketleftbt: 0xF8F0,
+  bracketleftex: 0xF8EF,
+  bracketleftmonospace: 0xFF3B,
+  bracketlefttp: 0xF8EE,
+  bracketright: 0x005D,
+  bracketrightbt: 0xF8FB,
+  bracketrightex: 0xF8FA,
+  bracketrightmonospace: 0xFF3D,
+  bracketrighttp: 0xF8F9,
+  breve: 0x02D8,
+  brevebelowcmb: 0x032E,
+  brevecmb: 0x0306,
+  breveinvertedbelowcmb: 0x032F,
+  breveinvertedcmb: 0x0311,
+  breveinverteddoublecmb: 0x0361,
+  bridgebelowcmb: 0x032A,
+  bridgeinvertedbelowcmb: 0x033A,
+  brokenbar: 0x00A6,
+  bstroke: 0x0180,
+  bsuperior: 0xF6EA,
+  btopbar: 0x0183,
+  buhiragana: 0x3076,
+  bukatakana: 0x30D6,
+  bullet: 0x2022,
+  bulletinverse: 0x25D8,
+  bulletoperator: 0x2219,
+  bullseye: 0x25CE,
+  c: 0x0063,
+  caarmenian: 0x056E,
+  cabengali: 0x099A,
+  cacute: 0x0107,
+  cadeva: 0x091A,
+  cagujarati: 0x0A9A,
+  cagurmukhi: 0x0A1A,
+  calsquare: 0x3388,
+  candrabindubengali: 0x0981,
+  candrabinducmb: 0x0310,
+  candrabindudeva: 0x0901,
+  candrabindugujarati: 0x0A81,
+  capslock: 0x21EA,
+  careof: 0x2105,
+  caron: 0x02C7,
+  caronbelowcmb: 0x032C,
+  caroncmb: 0x030C,
+  carriagereturn: 0x21B5,
+  cbopomofo: 0x3118,
+  ccaron: 0x010D,
+  ccedilla: 0x00E7,
+  ccedillaacute: 0x1E09,
+  ccircle: 0x24D2,
+  ccircumflex: 0x0109,
+  ccurl: 0x0255,
+  cdot: 0x010B,
+  cdotaccent: 0x010B,
+  cdsquare: 0x33C5,
+  cedilla: 0x00B8,
+  cedillacmb: 0x0327,
+  cent: 0x00A2,
+  centigrade: 0x2103,
+  centinferior: 0xF6DF,
+  centmonospace: 0xFFE0,
+  centoldstyle: 0xF7A2,
+  centsuperior: 0xF6E0,
+  chaarmenian: 0x0579,
+  chabengali: 0x099B,
+  chadeva: 0x091B,
+  chagujarati: 0x0A9B,
+  chagurmukhi: 0x0A1B,
+  chbopomofo: 0x3114,
+  cheabkhasiancyrillic: 0x04BD,
+  checkmark: 0x2713,
+  checyrillic: 0x0447,
+  chedescenderabkhasiancyrillic: 0x04BF,
+  chedescendercyrillic: 0x04B7,
+  chedieresiscyrillic: 0x04F5,
+  cheharmenian: 0x0573,
+  chekhakassiancyrillic: 0x04CC,
+  cheverticalstrokecyrillic: 0x04B9,
+  chi: 0x03C7,
+  chieuchacirclekorean: 0x3277,
+  chieuchaparenkorean: 0x3217,
+  chieuchcirclekorean: 0x3269,
+  chieuchkorean: 0x314A,
+  chieuchparenkorean: 0x3209,
+  chochangthai: 0x0E0A,
+  chochanthai: 0x0E08,
+  chochingthai: 0x0E09,
+  chochoethai: 0x0E0C,
+  chook: 0x0188,
+  cieucacirclekorean: 0x3276,
+  cieucaparenkorean: 0x3216,
+  cieuccirclekorean: 0x3268,
+  cieuckorean: 0x3148,
+  cieucparenkorean: 0x3208,
+  cieucuparenkorean: 0x321C,
+  circle: 0x25CB,
+  circlecopyrt: 0x00A9, // This glyph is missing from Adobe's original list.
+  circlemultiply: 0x2297,
+  circleot: 0x2299,
+  circleplus: 0x2295,
+  circlepostalmark: 0x3036,
+  circlewithlefthalfblack: 0x25D0,
+  circlewithrighthalfblack: 0x25D1,
+  circumflex: 0x02C6,
+  circumflexbelowcmb: 0x032D,
+  circumflexcmb: 0x0302,
+  clear: 0x2327,
+  clickalveolar: 0x01C2,
+  clickdental: 0x01C0,
+  clicklateral: 0x01C1,
+  clickretroflex: 0x01C3,
+  club: 0x2663,
+  clubsuitblack: 0x2663,
+  clubsuitwhite: 0x2667,
+  cmcubedsquare: 0x33A4,
+  cmonospace: 0xFF43,
+  cmsquaredsquare: 0x33A0,
+  coarmenian: 0x0581,
+  colon: 0x003A,
+  colonmonetary: 0x20A1,
+  colonmonospace: 0xFF1A,
+  colonsign: 0x20A1,
+  colonsmall: 0xFE55,
+  colontriangularhalfmod: 0x02D1,
+  colontriangularmod: 0x02D0,
+  comma: 0x002C,
+  commaabovecmb: 0x0313,
+  commaaboverightcmb: 0x0315,
+  commaaccent: 0xF6C3,
+  commaarabic: 0x060C,
+  commaarmenian: 0x055D,
+  commainferior: 0xF6E1,
+  commamonospace: 0xFF0C,
+  commareversedabovecmb: 0x0314,
+  commareversedmod: 0x02BD,
+  commasmall: 0xFE50,
+  commasuperior: 0xF6E2,
+  commaturnedabovecmb: 0x0312,
+  commaturnedmod: 0x02BB,
+  compass: 0x263C,
+  congruent: 0x2245,
+  contourintegral: 0x222E,
+  control: 0x2303,
+  controlACK: 0x0006,
+  controlBEL: 0x0007,
+  controlBS: 0x0008,
+  controlCAN: 0x0018,
+  controlCR: 0x000D,
+  controlDC1: 0x0011,
+  controlDC2: 0x0012,
+  controlDC3: 0x0013,
+  controlDC4: 0x0014,
+  controlDEL: 0x007F,
+  controlDLE: 0x0010,
+  controlEM: 0x0019,
+  controlENQ: 0x0005,
+  controlEOT: 0x0004,
+  controlESC: 0x001B,
+  controlETB: 0x0017,
+  controlETX: 0x0003,
+  controlFF: 0x000C,
+  controlFS: 0x001C,
+  controlGS: 0x001D,
+  controlHT: 0x0009,
+  controlLF: 0x000A,
+  controlNAK: 0x0015,
+  controlRS: 0x001E,
+  controlSI: 0x000F,
+  controlSO: 0x000E,
+  controlSOT: 0x0002,
+  controlSTX: 0x0001,
+  controlSUB: 0x001A,
+  controlSYN: 0x0016,
+  controlUS: 0x001F,
+  controlVT: 0x000B,
+  copyright: 0x00A9,
+  copyrightsans: 0xF8E9,
+  copyrightserif: 0xF6D9,
+  cornerbracketleft: 0x300C,
+  cornerbracketlefthalfwidth: 0xFF62,
+  cornerbracketleftvertical: 0xFE41,
+  cornerbracketright: 0x300D,
+  cornerbracketrighthalfwidth: 0xFF63,
+  cornerbracketrightvertical: 0xFE42,
+  corporationsquare: 0x337F,
+  cosquare: 0x33C7,
+  coverkgsquare: 0x33C6,
+  cparen: 0x249E,
+  cruzeiro: 0x20A2,
+  cstretched: 0x0297,
+  curlyand: 0x22CF,
+  curlyor: 0x22CE,
+  currency: 0x00A4,
+  cyrBreve: 0xF6D1,
+  cyrFlex: 0xF6D2,
+  cyrbreve: 0xF6D4,
+  cyrflex: 0xF6D5,
+  d: 0x0064,
+  daarmenian: 0x0564,
+  dabengali: 0x09A6,
+  dadarabic: 0x0636,
+  dadeva: 0x0926,
+  dadfinalarabic: 0xFEBE,
+  dadinitialarabic: 0xFEBF,
+  dadmedialarabic: 0xFEC0,
+  dagesh: 0x05BC,
+  dageshhebrew: 0x05BC,
+  dagger: 0x2020,
+  daggerdbl: 0x2021,
+  dagujarati: 0x0AA6,
+  dagurmukhi: 0x0A26,
+  dahiragana: 0x3060,
+  dakatakana: 0x30C0,
+  dalarabic: 0x062F,
+  dalet: 0x05D3,
+  daletdagesh: 0xFB33,
+  daletdageshhebrew: 0xFB33,
+  dalethebrew: 0x05D3,
+  dalfinalarabic: 0xFEAA,
+  dammaarabic: 0x064F,
+  dammalowarabic: 0x064F,
+  dammatanaltonearabic: 0x064C,
+  dammatanarabic: 0x064C,
+  danda: 0x0964,
+  dargahebrew: 0x05A7,
+  dargalefthebrew: 0x05A7,
+  dasiapneumatacyrilliccmb: 0x0485,
+  dblGrave: 0xF6D3,
+  dblanglebracketleft: 0x300A,
+  dblanglebracketleftvertical: 0xFE3D,
+  dblanglebracketright: 0x300B,
+  dblanglebracketrightvertical: 0xFE3E,
+  dblarchinvertedbelowcmb: 0x032B,
+  dblarrowleft: 0x21D4,
+  dblarrowright: 0x21D2,
+  dbldanda: 0x0965,
+  dblgrave: 0xF6D6,
+  dblgravecmb: 0x030F,
+  dblintegral: 0x222C,
+  dbllowline: 0x2017,
+  dbllowlinecmb: 0x0333,
+  dbloverlinecmb: 0x033F,
+  dblprimemod: 0x02BA,
+  dblverticalbar: 0x2016,
+  dblverticallineabovecmb: 0x030E,
+  dbopomofo: 0x3109,
+  dbsquare: 0x33C8,
+  dcaron: 0x010F,
+  dcedilla: 0x1E11,
+  dcircle: 0x24D3,
+  dcircumflexbelow: 0x1E13,
+  dcroat: 0x0111,
+  ddabengali: 0x09A1,
+  ddadeva: 0x0921,
+  ddagujarati: 0x0AA1,
+  ddagurmukhi: 0x0A21,
+  ddalarabic: 0x0688,
+  ddalfinalarabic: 0xFB89,
+  dddhadeva: 0x095C,
+  ddhabengali: 0x09A2,
+  ddhadeva: 0x0922,
+  ddhagujarati: 0x0AA2,
+  ddhagurmukhi: 0x0A22,
+  ddotaccent: 0x1E0B,
+  ddotbelow: 0x1E0D,
+  decimalseparatorarabic: 0x066B,
+  decimalseparatorpersian: 0x066B,
+  decyrillic: 0x0434,
+  degree: 0x00B0,
+  dehihebrew: 0x05AD,
+  dehiragana: 0x3067,
+  deicoptic: 0x03EF,
+  dekatakana: 0x30C7,
+  deleteleft: 0x232B,
+  deleteright: 0x2326,
+  delta: 0x03B4,
+  deltaturned: 0x018D,
+  denominatorminusonenumeratorbengali: 0x09F8,
+  dezh: 0x02A4,
+  dhabengali: 0x09A7,
+  dhadeva: 0x0927,
+  dhagujarati: 0x0AA7,
+  dhagurmukhi: 0x0A27,
+  dhook: 0x0257,
+  dialytikatonos: 0x0385,
+  dialytikatonoscmb: 0x0344,
+  diamond: 0x2666,
+  diamondsuitwhite: 0x2662,
+  dieresis: 0x00A8,
+  dieresisacute: 0xF6D7,
+  dieresisbelowcmb: 0x0324,
+  dieresiscmb: 0x0308,
+  dieresisgrave: 0xF6D8,
+  dieresistonos: 0x0385,
+  dihiragana: 0x3062,
+  dikatakana: 0x30C2,
+  dittomark: 0x3003,
+  divide: 0x00F7,
+  divides: 0x2223,
+  divisionslash: 0x2215,
+  djecyrillic: 0x0452,
+  dkshade: 0x2593,
+  dlinebelow: 0x1E0F,
+  dlsquare: 0x3397,
+  dmacron: 0x0111,
+  dmonospace: 0xFF44,
+  dnblock: 0x2584,
+  dochadathai: 0x0E0E,
+  dodekthai: 0x0E14,
+  dohiragana: 0x3069,
+  dokatakana: 0x30C9,
+  dollar: 0x0024,
+  dollarinferior: 0xF6E3,
+  dollarmonospace: 0xFF04,
+  dollaroldstyle: 0xF724,
+  dollarsmall: 0xFE69,
+  dollarsuperior: 0xF6E4,
+  dong: 0x20AB,
+  dorusquare: 0x3326,
+  dotaccent: 0x02D9,
+  dotaccentcmb: 0x0307,
+  dotbelowcmb: 0x0323,
+  dotbelowcomb: 0x0323,
+  dotkatakana: 0x30FB,
+  dotlessi: 0x0131,
+  dotlessj: 0xF6BE,
+  dotlessjstrokehook: 0x0284,
+  dotmath: 0x22C5,
+  dottedcircle: 0x25CC,
+  doubleyodpatah: 0xFB1F,
+  doubleyodpatahhebrew: 0xFB1F,
+  downtackbelowcmb: 0x031E,
+  downtackmod: 0x02D5,
+  dparen: 0x249F,
+  dsuperior: 0xF6EB,
+  dtail: 0x0256,
+  dtopbar: 0x018C,
+  duhiragana: 0x3065,
+  dukatakana: 0x30C5,
+  dz: 0x01F3,
+  dzaltone: 0x02A3,
+  dzcaron: 0x01C6,
+  dzcurl: 0x02A5,
+  dzeabkhasiancyrillic: 0x04E1,
+  dzecyrillic: 0x0455,
+  dzhecyrillic: 0x045F,
+  e: 0x0065,
+  eacute: 0x00E9,
+  earth: 0x2641,
+  ebengali: 0x098F,
+  ebopomofo: 0x311C,
+  ebreve: 0x0115,
+  ecandradeva: 0x090D,
+  ecandragujarati: 0x0A8D,
+  ecandravowelsigndeva: 0x0945,
+  ecandravowelsigngujarati: 0x0AC5,
+  ecaron: 0x011B,
+  ecedillabreve: 0x1E1D,
+  echarmenian: 0x0565,
+  echyiwnarmenian: 0x0587,
+  ecircle: 0x24D4,
+  ecircumflex: 0x00EA,
+  ecircumflexacute: 0x1EBF,
+  ecircumflexbelow: 0x1E19,
+  ecircumflexdotbelow: 0x1EC7,
+  ecircumflexgrave: 0x1EC1,
+  ecircumflexhookabove: 0x1EC3,
+  ecircumflextilde: 0x1EC5,
+  ecyrillic: 0x0454,
+  edblgrave: 0x0205,
+  edeva: 0x090F,
+  edieresis: 0x00EB,
+  edot: 0x0117,
+  edotaccent: 0x0117,
+  edotbelow: 0x1EB9,
+  eegurmukhi: 0x0A0F,
+  eematragurmukhi: 0x0A47,
+  efcyrillic: 0x0444,
+  egrave: 0x00E8,
+  egujarati: 0x0A8F,
+  eharmenian: 0x0567,
+  ehbopomofo: 0x311D,
+  ehiragana: 0x3048,
+  ehookabove: 0x1EBB,
+  eibopomofo: 0x311F,
+  eight: 0x0038,
+  eightarabic: 0x0668,
+  eightbengali: 0x09EE,
+  eightcircle: 0x2467,
+  eightcircleinversesansserif: 0x2791,
+  eightdeva: 0x096E,
+  eighteencircle: 0x2471,
+  eighteenparen: 0x2485,
+  eighteenperiod: 0x2499,
+  eightgujarati: 0x0AEE,
+  eightgurmukhi: 0x0A6E,
+  eighthackarabic: 0x0668,
+  eighthangzhou: 0x3028,
+  eighthnotebeamed: 0x266B,
+  eightideographicparen: 0x3227,
+  eightinferior: 0x2088,
+  eightmonospace: 0xFF18,
+  eightoldstyle: 0xF738,
+  eightparen: 0x247B,
+  eightperiod: 0x248F,
+  eightpersian: 0x06F8,
+  eightroman: 0x2177,
+  eightsuperior: 0x2078,
+  eightthai: 0x0E58,
+  einvertedbreve: 0x0207,
+  eiotifiedcyrillic: 0x0465,
+  ekatakana: 0x30A8,
+  ekatakanahalfwidth: 0xFF74,
+  ekonkargurmukhi: 0x0A74,
+  ekorean: 0x3154,
+  elcyrillic: 0x043B,
+  element: 0x2208,
+  elevencircle: 0x246A,
+  elevenparen: 0x247E,
+  elevenperiod: 0x2492,
+  elevenroman: 0x217A,
+  ellipsis: 0x2026,
+  ellipsisvertical: 0x22EE,
+  emacron: 0x0113,
+  emacronacute: 0x1E17,
+  emacrongrave: 0x1E15,
+  emcyrillic: 0x043C,
+  emdash: 0x2014,
+  emdashvertical: 0xFE31,
+  emonospace: 0xFF45,
+  emphasismarkarmenian: 0x055B,
+  emptyset: 0x2205,
+  enbopomofo: 0x3123,
+  encyrillic: 0x043D,
+  endash: 0x2013,
+  endashvertical: 0xFE32,
+  endescendercyrillic: 0x04A3,
+  eng: 0x014B,
+  engbopomofo: 0x3125,
+  enghecyrillic: 0x04A5,
+  enhookcyrillic: 0x04C8,
+  enspace: 0x2002,
+  eogonek: 0x0119,
+  eokorean: 0x3153,
+  eopen: 0x025B,
+  eopenclosed: 0x029A,
+  eopenreversed: 0x025C,
+  eopenreversedclosed: 0x025E,
+  eopenreversedhook: 0x025D,
+  eparen: 0x24A0,
+  epsilon: 0x03B5,
+  epsilontonos: 0x03AD,
+  equal: 0x003D,
+  equalmonospace: 0xFF1D,
+  equalsmall: 0xFE66,
+  equalsuperior: 0x207C,
+  equivalence: 0x2261,
+  erbopomofo: 0x3126,
+  ercyrillic: 0x0440,
+  ereversed: 0x0258,
+  ereversedcyrillic: 0x044D,
+  escyrillic: 0x0441,
+  esdescendercyrillic: 0x04AB,
+  esh: 0x0283,
+  eshcurl: 0x0286,
+  eshortdeva: 0x090E,
+  eshortvowelsigndeva: 0x0946,
+  eshreversedloop: 0x01AA,
+  eshsquatreversed: 0x0285,
+  esmallhiragana: 0x3047,
+  esmallkatakana: 0x30A7,
+  esmallkatakanahalfwidth: 0xFF6A,
+  estimated: 0x212E,
+  esuperior: 0xF6EC,
+  eta: 0x03B7,
+  etarmenian: 0x0568,
+  etatonos: 0x03AE,
+  eth: 0x00F0,
+  etilde: 0x1EBD,
+  etildebelow: 0x1E1B,
+  etnahtafoukhhebrew: 0x0591,
+  etnahtafoukhlefthebrew: 0x0591,
+  etnahtahebrew: 0x0591,
+  etnahtalefthebrew: 0x0591,
+  eturned: 0x01DD,
+  eukorean: 0x3161,
+  euro: 0x20AC,
+  evowelsignbengali: 0x09C7,
+  evowelsigndeva: 0x0947,
+  evowelsigngujarati: 0x0AC7,
+  exclam: 0x0021,
+  exclamarmenian: 0x055C,
+  exclamdbl: 0x203C,
+  exclamdown: 0x00A1,
+  exclamdownsmall: 0xF7A1,
+  exclammonospace: 0xFF01,
+  exclamsmall: 0xF721,
+  existential: 0x2203,
+  ezh: 0x0292,
+  ezhcaron: 0x01EF,
+  ezhcurl: 0x0293,
+  ezhreversed: 0x01B9,
+  ezhtail: 0x01BA,
+  f: 0x0066,
+  fadeva: 0x095E,
+  fagurmukhi: 0x0A5E,
+  fahrenheit: 0x2109,
+  fathaarabic: 0x064E,
+  fathalowarabic: 0x064E,
+  fathatanarabic: 0x064B,
+  fbopomofo: 0x3108,
+  fcircle: 0x24D5,
+  fdotaccent: 0x1E1F,
+  feharabic: 0x0641,
+  feharmenian: 0x0586,
+  fehfinalarabic: 0xFED2,
+  fehinitialarabic: 0xFED3,
+  fehmedialarabic: 0xFED4,
+  feicoptic: 0x03E5,
+  female: 0x2640,
+  ff: 0xFB00,
+  ffi: 0xFB03,
+  ffl: 0xFB04,
+  fi: 0xFB01,
+  fifteencircle: 0x246E,
+  fifteenparen: 0x2482,
+  fifteenperiod: 0x2496,
+  figuredash: 0x2012,
+  filledbox: 0x25A0,
+  filledrect: 0x25AC,
+  finalkaf: 0x05DA,
+  finalkafdagesh: 0xFB3A,
+  finalkafdageshhebrew: 0xFB3A,
+  finalkafhebrew: 0x05DA,
+  finalmem: 0x05DD,
+  finalmemhebrew: 0x05DD,
+  finalnun: 0x05DF,
+  finalnunhebrew: 0x05DF,
+  finalpe: 0x05E3,
+  finalpehebrew: 0x05E3,
+  finaltsadi: 0x05E5,
+  finaltsadihebrew: 0x05E5,
+  firsttonechinese: 0x02C9,
+  fisheye: 0x25C9,
+  fitacyrillic: 0x0473,
+  five: 0x0035,
+  fivearabic: 0x0665,
+  fivebengali: 0x09EB,
+  fivecircle: 0x2464,
+  fivecircleinversesansserif: 0x278E,
+  fivedeva: 0x096B,
+  fiveeighths: 0x215D,
+  fivegujarati: 0x0AEB,
+  fivegurmukhi: 0x0A6B,
+  fivehackarabic: 0x0665,
+  fivehangzhou: 0x3025,
+  fiveideographicparen: 0x3224,
+  fiveinferior: 0x2085,
+  fivemonospace: 0xFF15,
+  fiveoldstyle: 0xF735,
+  fiveparen: 0x2478,
+  fiveperiod: 0x248C,
+  fivepersian: 0x06F5,
+  fiveroman: 0x2174,
+  fivesuperior: 0x2075,
+  fivethai: 0x0E55,
+  fl: 0xFB02,
+  florin: 0x0192,
+  fmonospace: 0xFF46,
+  fmsquare: 0x3399,
+  fofanthai: 0x0E1F,
+  fofathai: 0x0E1D,
+  fongmanthai: 0x0E4F,
+  forall: 0x2200,
+  four: 0x0034,
+  fourarabic: 0x0664,
+  fourbengali: 0x09EA,
+  fourcircle: 0x2463,
+  fourcircleinversesansserif: 0x278D,
+  fourdeva: 0x096A,
+  fourgujarati: 0x0AEA,
+  fourgurmukhi: 0x0A6A,
+  fourhackarabic: 0x0664,
+  fourhangzhou: 0x3024,
+  fourideographicparen: 0x3223,
+  fourinferior: 0x2084,
+  fourmonospace: 0xFF14,
+  fournumeratorbengali: 0x09F7,
+  fouroldstyle: 0xF734,
+  fourparen: 0x2477,
+  fourperiod: 0x248B,
+  fourpersian: 0x06F4,
+  fourroman: 0x2173,
+  foursuperior: 0x2074,
+  fourteencircle: 0x246D,
+  fourteenparen: 0x2481,
+  fourteenperiod: 0x2495,
+  fourthai: 0x0E54,
+  fourthtonechinese: 0x02CB,
+  fparen: 0x24A1,
+  fraction: 0x2044,
+  franc: 0x20A3,
+  g: 0x0067,
+  gabengali: 0x0997,
+  gacute: 0x01F5,
+  gadeva: 0x0917,
+  gafarabic: 0x06AF,
+  gaffinalarabic: 0xFB93,
+  gafinitialarabic: 0xFB94,
+  gafmedialarabic: 0xFB95,
+  gagujarati: 0x0A97,
+  gagurmukhi: 0x0A17,
+  gahiragana: 0x304C,
+  gakatakana: 0x30AC,
+  gamma: 0x03B3,
+  gammalatinsmall: 0x0263,
+  gammasuperior: 0x02E0,
+  gangiacoptic: 0x03EB,
+  gbopomofo: 0x310D,
+  gbreve: 0x011F,
+  gcaron: 0x01E7,
+  gcedilla: 0x0123,
+  gcircle: 0x24D6,
+  gcircumflex: 0x011D,
+  gcommaaccent: 0x0123,
+  gdot: 0x0121,
+  gdotaccent: 0x0121,
+  gecyrillic: 0x0433,
+  gehiragana: 0x3052,
+  gekatakana: 0x30B2,
+  geometricallyequal: 0x2251,
+  gereshaccenthebrew: 0x059C,
+  gereshhebrew: 0x05F3,
+  gereshmuqdamhebrew: 0x059D,
+  germandbls: 0x00DF,
+  gershayimaccenthebrew: 0x059E,
+  gershayimhebrew: 0x05F4,
+  getamark: 0x3013,
+  ghabengali: 0x0998,
+  ghadarmenian: 0x0572,
+  ghadeva: 0x0918,
+  ghagujarati: 0x0A98,
+  ghagurmukhi: 0x0A18,
+  ghainarabic: 0x063A,
+  ghainfinalarabic: 0xFECE,
+  ghaininitialarabic: 0xFECF,
+  ghainmedialarabic: 0xFED0,
+  ghemiddlehookcyrillic: 0x0495,
+  ghestrokecyrillic: 0x0493,
+  gheupturncyrillic: 0x0491,
+  ghhadeva: 0x095A,
+  ghhagurmukhi: 0x0A5A,
+  ghook: 0x0260,
+  ghzsquare: 0x3393,
+  gihiragana: 0x304E,
+  gikatakana: 0x30AE,
+  gimarmenian: 0x0563,
+  gimel: 0x05D2,
+  gimeldagesh: 0xFB32,
+  gimeldageshhebrew: 0xFB32,
+  gimelhebrew: 0x05D2,
+  gjecyrillic: 0x0453,
+  glottalinvertedstroke: 0x01BE,
+  glottalstop: 0x0294,
+  glottalstopinverted: 0x0296,
+  glottalstopmod: 0x02C0,
+  glottalstopreversed: 0x0295,
+  glottalstopreversedmod: 0x02C1,
+  glottalstopreversedsuperior: 0x02E4,
+  glottalstopstroke: 0x02A1,
+  glottalstopstrokereversed: 0x02A2,
+  gmacron: 0x1E21,
+  gmonospace: 0xFF47,
+  gohiragana: 0x3054,
+  gokatakana: 0x30B4,
+  gparen: 0x24A2,
+  gpasquare: 0x33AC,
+  gradient: 0x2207,
+  grave: 0x0060,
+  gravebelowcmb: 0x0316,
+  gravecmb: 0x0300,
+  gravecomb: 0x0300,
+  gravedeva: 0x0953,
+  gravelowmod: 0x02CE,
+  gravemonospace: 0xFF40,
+  gravetonecmb: 0x0340,
+  greater: 0x003E,
+  greaterequal: 0x2265,
+  greaterequalorless: 0x22DB,
+  greatermonospace: 0xFF1E,
+  greaterorequivalent: 0x2273,
+  greaterorless: 0x2277,
+  greateroverequal: 0x2267,
+  greatersmall: 0xFE65,
+  gscript: 0x0261,
+  gstroke: 0x01E5,
+  guhiragana: 0x3050,
+  guillemotleft: 0x00AB,
+  guillemotright: 0x00BB,
+  guilsinglleft: 0x2039,
+  guilsinglright: 0x203A,
+  gukatakana: 0x30B0,
+  guramusquare: 0x3318,
+  gysquare: 0x33C9,
+  h: 0x0068,
+  haabkhasiancyrillic: 0x04A9,
+  haaltonearabic: 0x06C1,
+  habengali: 0x09B9,
+  hadescendercyrillic: 0x04B3,
+  hadeva: 0x0939,
+  hagujarati: 0x0AB9,
+  hagurmukhi: 0x0A39,
+  haharabic: 0x062D,
+  hahfinalarabic: 0xFEA2,
+  hahinitialarabic: 0xFEA3,
+  hahiragana: 0x306F,
+  hahmedialarabic: 0xFEA4,
+  haitusquare: 0x332A,
+  hakatakana: 0x30CF,
+  hakatakanahalfwidth: 0xFF8A,
+  halantgurmukhi: 0x0A4D,
+  hamzaarabic: 0x0621,
+  hamzalowarabic: 0x0621,
+  hangulfiller: 0x3164,
+  hardsigncyrillic: 0x044A,
+  harpoonleftbarbup: 0x21BC,
+  harpoonrightbarbup: 0x21C0,
+  hasquare: 0x33CA,
+  hatafpatah: 0x05B2,
+  hatafpatah16: 0x05B2,
+  hatafpatah23: 0x05B2,
+  hatafpatah2f: 0x05B2,
+  hatafpatahhebrew: 0x05B2,
+  hatafpatahnarrowhebrew: 0x05B2,
+  hatafpatahquarterhebrew: 0x05B2,
+  hatafpatahwidehebrew: 0x05B2,
+  hatafqamats: 0x05B3,
+  hatafqamats1b: 0x05B3,
+  hatafqamats28: 0x05B3,
+  hatafqamats34: 0x05B3,
+  hatafqamatshebrew: 0x05B3,
+  hatafqamatsnarrowhebrew: 0x05B3,
+  hatafqamatsquarterhebrew: 0x05B3,
+  hatafqamatswidehebrew: 0x05B3,
+  hatafsegol: 0x05B1,
+  hatafsegol17: 0x05B1,
+  hatafsegol24: 0x05B1,
+  hatafsegol30: 0x05B1,
+  hatafsegolhebrew: 0x05B1,
+  hatafsegolnarrowhebrew: 0x05B1,
+  hatafsegolquarterhebrew: 0x05B1,
+  hatafsegolwidehebrew: 0x05B1,
+  hbar: 0x0127,
+  hbopomofo: 0x310F,
+  hbrevebelow: 0x1E2B,
+  hcedilla: 0x1E29,
+  hcircle: 0x24D7,
+  hcircumflex: 0x0125,
+  hdieresis: 0x1E27,
+  hdotaccent: 0x1E23,
+  hdotbelow: 0x1E25,
+  he: 0x05D4,
+  heart: 0x2665,
+  heartsuitblack: 0x2665,
+  heartsuitwhite: 0x2661,
+  hedagesh: 0xFB34,
+  hedageshhebrew: 0xFB34,
+  hehaltonearabic: 0x06C1,
+  heharabic: 0x0647,
+  hehebrew: 0x05D4,
+  hehfinalaltonearabic: 0xFBA7,
+  hehfinalalttwoarabic: 0xFEEA,
+  hehfinalarabic: 0xFEEA,
+  hehhamzaabovefinalarabic: 0xFBA5,
+  hehhamzaaboveisolatedarabic: 0xFBA4,
+  hehinitialaltonearabic: 0xFBA8,
+  hehinitialarabic: 0xFEEB,
+  hehiragana: 0x3078,
+  hehmedialaltonearabic: 0xFBA9,
+  hehmedialarabic: 0xFEEC,
+  heiseierasquare: 0x337B,
+  hekatakana: 0x30D8,
+  hekatakanahalfwidth: 0xFF8D,
+  hekutaarusquare: 0x3336,
+  henghook: 0x0267,
+  herutusquare: 0x3339,
+  het: 0x05D7,
+  hethebrew: 0x05D7,
+  hhook: 0x0266,
+  hhooksuperior: 0x02B1,
+  hieuhacirclekorean: 0x327B,
+  hieuhaparenkorean: 0x321B,
+  hieuhcirclekorean: 0x326D,
+  hieuhkorean: 0x314E,
+  hieuhparenkorean: 0x320D,
+  hihiragana: 0x3072,
+  hikatakana: 0x30D2,
+  hikatakanahalfwidth: 0xFF8B,
+  hiriq: 0x05B4,
+  hiriq14: 0x05B4,
+  hiriq21: 0x05B4,
+  hiriq2d: 0x05B4,
+  hiriqhebrew: 0x05B4,
+  hiriqnarrowhebrew: 0x05B4,
+  hiriqquarterhebrew: 0x05B4,
+  hiriqwidehebrew: 0x05B4,
+  hlinebelow: 0x1E96,
+  hmonospace: 0xFF48,
+  hoarmenian: 0x0570,
+  hohipthai: 0x0E2B,
+  hohiragana: 0x307B,
+  hokatakana: 0x30DB,
+  hokatakanahalfwidth: 0xFF8E,
+  holam: 0x05B9,
+  holam19: 0x05B9,
+  holam26: 0x05B9,
+  holam32: 0x05B9,
+  holamhebrew: 0x05B9,
+  holamnarrowhebrew: 0x05B9,
+  holamquarterhebrew: 0x05B9,
+  holamwidehebrew: 0x05B9,
+  honokhukthai: 0x0E2E,
+  hookabovecomb: 0x0309,
+  hookcmb: 0x0309,
+  hookpalatalizedbelowcmb: 0x0321,
+  hookretroflexbelowcmb: 0x0322,
+  hoonsquare: 0x3342,
+  horicoptic: 0x03E9,
+  horizontalbar: 0x2015,
+  horncmb: 0x031B,
+  hotsprings: 0x2668,
+  house: 0x2302,
+  hparen: 0x24A3,
+  hsuperior: 0x02B0,
+  hturned: 0x0265,
+  huhiragana: 0x3075,
+  huiitosquare: 0x3333,
+  hukatakana: 0x30D5,
+  hukatakanahalfwidth: 0xFF8C,
+  hungarumlaut: 0x02DD,
+  hungarumlautcmb: 0x030B,
+  hv: 0x0195,
+  hyphen: 0x002D,
+  hypheninferior: 0xF6E5,
+  hyphenmonospace: 0xFF0D,
+  hyphensmall: 0xFE63,
+  hyphensuperior: 0xF6E6,
+  hyphentwo: 0x2010,
+  i: 0x0069,
+  iacute: 0x00ED,
+  iacyrillic: 0x044F,
+  ibengali: 0x0987,
+  ibopomofo: 0x3127,
+  ibreve: 0x012D,
+  icaron: 0x01D0,
+  icircle: 0x24D8,
+  icircumflex: 0x00EE,
+  icyrillic: 0x0456,
+  idblgrave: 0x0209,
+  ideographearthcircle: 0x328F,
+  ideographfirecircle: 0x328B,
+  ideographicallianceparen: 0x323F,
+  ideographiccallparen: 0x323A,
+  ideographiccentrecircle: 0x32A5,
+  ideographicclose: 0x3006,
+  ideographiccomma: 0x3001,
+  ideographiccommaleft: 0xFF64,
+  ideographiccongratulationparen: 0x3237,
+  ideographiccorrectcircle: 0x32A3,
+  ideographicearthparen: 0x322F,
+  ideographicenterpriseparen: 0x323D,
+  ideographicexcellentcircle: 0x329D,
+  ideographicfestivalparen: 0x3240,
+  ideographicfinancialcircle: 0x3296,
+  ideographicfinancialparen: 0x3236,
+  ideographicfireparen: 0x322B,
+  ideographichaveparen: 0x3232,
+  ideographichighcircle: 0x32A4,
+  ideographiciterationmark: 0x3005,
+  ideographiclaborcircle: 0x3298,
+  ideographiclaborparen: 0x3238,
+  ideographicleftcircle: 0x32A7,
+  ideographiclowcircle: 0x32A6,
+  ideographicmedicinecircle: 0x32A9,
+  ideographicmetalparen: 0x322E,
+  ideographicmoonparen: 0x322A,
+  ideographicnameparen: 0x3234,
+  ideographicperiod: 0x3002,
+  ideographicprintcircle: 0x329E,
+  ideographicreachparen: 0x3243,
+  ideographicrepresentparen: 0x3239,
+  ideographicresourceparen: 0x323E,
+  ideographicrightcircle: 0x32A8,
+  ideographicsecretcircle: 0x3299,
+  ideographicselfparen: 0x3242,
+  ideographicsocietyparen: 0x3233,
+  ideographicspace: 0x3000,
+  ideographicspecialparen: 0x3235,
+  ideographicstockparen: 0x3231,
+  ideographicstudyparen: 0x323B,
+  ideographicsunparen: 0x3230,
+  ideographicsuperviseparen: 0x323C,
+  ideographicwaterparen: 0x322C,
+  ideographicwoodparen: 0x322D,
+  ideographiczero: 0x3007,
+  ideographmetalcircle: 0x328E,
+  ideographmooncircle: 0x328A,
+  ideographnamecircle: 0x3294,
+  ideographsuncircle: 0x3290,
+  ideographwatercircle: 0x328C,
+  ideographwoodcircle: 0x328D,
+  ideva: 0x0907,
+  idieresis: 0x00EF,
+  idieresisacute: 0x1E2F,
+  idieresiscyrillic: 0x04E5,
+  idotbelow: 0x1ECB,
+  iebrevecyrillic: 0x04D7,
+  iecyrillic: 0x0435,
+  ieungacirclekorean: 0x3275,
+  ieungaparenkorean: 0x3215,
+  ieungcirclekorean: 0x3267,
+  ieungkorean: 0x3147,
+  ieungparenkorean: 0x3207,
+  igrave: 0x00EC,
+  igujarati: 0x0A87,
+  igurmukhi: 0x0A07,
+  ihiragana: 0x3044,
+  ihookabove: 0x1EC9,
+  iibengali: 0x0988,
+  iicyrillic: 0x0438,
+  iideva: 0x0908,
+  iigujarati: 0x0A88,
+  iigurmukhi: 0x0A08,
+  iimatragurmukhi: 0x0A40,
+  iinvertedbreve: 0x020B,
+  iishortcyrillic: 0x0439,
+  iivowelsignbengali: 0x09C0,
+  iivowelsigndeva: 0x0940,
+  iivowelsigngujarati: 0x0AC0,
+  ij: 0x0133,
+  ikatakana: 0x30A4,
+  ikatakanahalfwidth: 0xFF72,
+  ikorean: 0x3163,
+  ilde: 0x02DC,
+  iluyhebrew: 0x05AC,
+  imacron: 0x012B,
+  imacroncyrillic: 0x04E3,
+  imageorapproximatelyequal: 0x2253,
+  imatragurmukhi: 0x0A3F,
+  imonospace: 0xFF49,
+  increment: 0x2206,
+  infinity: 0x221E,
+  iniarmenian: 0x056B,
+  integral: 0x222B,
+  integralbottom: 0x2321,
+  integralbt: 0x2321,
+  integralex: 0xF8F5,
+  integraltop: 0x2320,
+  integraltp: 0x2320,
+  intersection: 0x2229,
+  intisquare: 0x3305,
+  invbullet: 0x25D8,
+  invcircle: 0x25D9,
+  invsmileface: 0x263B,
+  iocyrillic: 0x0451,
+  iogonek: 0x012F,
+  iota: 0x03B9,
+  iotadieresis: 0x03CA,
+  iotadieresistonos: 0x0390,
+  iotalatin: 0x0269,
+  iotatonos: 0x03AF,
+  iparen: 0x24A4,
+  irigurmukhi: 0x0A72,
+  ismallhiragana: 0x3043,
+  ismallkatakana: 0x30A3,
+  ismallkatakanahalfwidth: 0xFF68,
+  issharbengali: 0x09FA,
+  istroke: 0x0268,
+  isuperior: 0xF6ED,
+  iterationhiragana: 0x309D,
+  iterationkatakana: 0x30FD,
+  itilde: 0x0129,
+  itildebelow: 0x1E2D,
+  iubopomofo: 0x3129,
+  iucyrillic: 0x044E,
+  ivowelsignbengali: 0x09BF,
+  ivowelsigndeva: 0x093F,
+  ivowelsigngujarati: 0x0ABF,
+  izhitsacyrillic: 0x0475,
+  izhitsadblgravecyrillic: 0x0477,
+  j: 0x006A,
+  jaarmenian: 0x0571,
+  jabengali: 0x099C,
+  jadeva: 0x091C,
+  jagujarati: 0x0A9C,
+  jagurmukhi: 0x0A1C,
+  jbopomofo: 0x3110,
+  jcaron: 0x01F0,
+  jcircle: 0x24D9,
+  jcircumflex: 0x0135,
+  jcrossedtail: 0x029D,
+  jdotlessstroke: 0x025F,
+  jecyrillic: 0x0458,
+  jeemarabic: 0x062C,
+  jeemfinalarabic: 0xFE9E,
+  jeeminitialarabic: 0xFE9F,
+  jeemmedialarabic: 0xFEA0,
+  jeharabic: 0x0698,
+  jehfinalarabic: 0xFB8B,
+  jhabengali: 0x099D,
+  jhadeva: 0x091D,
+  jhagujarati: 0x0A9D,
+  jhagurmukhi: 0x0A1D,
+  jheharmenian: 0x057B,
+  jis: 0x3004,
+  jmonospace: 0xFF4A,
+  jparen: 0x24A5,
+  jsuperior: 0x02B2,
+  k: 0x006B,
+  kabashkircyrillic: 0x04A1,
+  kabengali: 0x0995,
+  kacute: 0x1E31,
+  kacyrillic: 0x043A,
+  kadescendercyrillic: 0x049B,
+  kadeva: 0x0915,
+  kaf: 0x05DB,
+  kafarabic: 0x0643,
+  kafdagesh: 0xFB3B,
+  kafdageshhebrew: 0xFB3B,
+  kaffinalarabic: 0xFEDA,
+  kafhebrew: 0x05DB,
+  kafinitialarabic: 0xFEDB,
+  kafmedialarabic: 0xFEDC,
+  kafrafehebrew: 0xFB4D,
+  kagujarati: 0x0A95,
+  kagurmukhi: 0x0A15,
+  kahiragana: 0x304B,
+  kahookcyrillic: 0x04C4,
+  kakatakana: 0x30AB,
+  kakatakanahalfwidth: 0xFF76,
+  kappa: 0x03BA,
+  kappasymbolgreek: 0x03F0,
+  kapyeounmieumkorean: 0x3171,
+  kapyeounphieuphkorean: 0x3184,
+  kapyeounpieupkorean: 0x3178,
+  kapyeounssangpieupkorean: 0x3179,
+  karoriisquare: 0x330D,
+  kashidaautoarabic: 0x0640,
+  kashidaautonosidebearingarabic: 0x0640,
+  kasmallkatakana: 0x30F5,
+  kasquare: 0x3384,
+  kasraarabic: 0x0650,
+  kasratanarabic: 0x064D,
+  kastrokecyrillic: 0x049F,
+  katahiraprolongmarkhalfwidth: 0xFF70,
+  kaverticalstrokecyrillic: 0x049D,
+  kbopomofo: 0x310E,
+  kcalsquare: 0x3389,
+  kcaron: 0x01E9,
+  kcedilla: 0x0137,
+  kcircle: 0x24DA,
+  kcommaaccent: 0x0137,
+  kdotbelow: 0x1E33,
+  keharmenian: 0x0584,
+  kehiragana: 0x3051,
+  kekatakana: 0x30B1,
+  kekatakanahalfwidth: 0xFF79,
+  kenarmenian: 0x056F,
+  kesmallkatakana: 0x30F6,
+  kgreenlandic: 0x0138,
+  khabengali: 0x0996,
+  khacyrillic: 0x0445,
+  khadeva: 0x0916,
+  khagujarati: 0x0A96,
+  khagurmukhi: 0x0A16,
+  khaharabic: 0x062E,
+  khahfinalarabic: 0xFEA6,
+  khahinitialarabic: 0xFEA7,
+  khahmedialarabic: 0xFEA8,
+  kheicoptic: 0x03E7,
+  khhadeva: 0x0959,
+  khhagurmukhi: 0x0A59,
+  khieukhacirclekorean: 0x3278,
+  khieukhaparenkorean: 0x3218,
+  khieukhcirclekorean: 0x326A,
+  khieukhkorean: 0x314B,
+  khieukhparenkorean: 0x320A,
+  khokhaithai: 0x0E02,
+  khokhonthai: 0x0E05,
+  khokhuatthai: 0x0E03,
+  khokhwaithai: 0x0E04,
+  khomutthai: 0x0E5B,
+  khook: 0x0199,
+  khorakhangthai: 0x0E06,
+  khzsquare: 0x3391,
+  kihiragana: 0x304D,
+  kikatakana: 0x30AD,
+  kikatakanahalfwidth: 0xFF77,
+  kiroguramusquare: 0x3315,
+  kiromeetorusquare: 0x3316,
+  kirosquare: 0x3314,
+  kiyeokacirclekorean: 0x326E,
+  kiyeokaparenkorean: 0x320E,
+  kiyeokcirclekorean: 0x3260,
+  kiyeokkorean: 0x3131,
+  kiyeokparenkorean: 0x3200,
+  kiyeoksioskorean: 0x3133,
+  kjecyrillic: 0x045C,
+  klinebelow: 0x1E35,
+  klsquare: 0x3398,
+  kmcubedsquare: 0x33A6,
+  kmonospace: 0xFF4B,
+  kmsquaredsquare: 0x33A2,
+  kohiragana: 0x3053,
+  kohmsquare: 0x33C0,
+  kokaithai: 0x0E01,
+  kokatakana: 0x30B3,
+  kokatakanahalfwidth: 0xFF7A,
+  kooposquare: 0x331E,
+  koppacyrillic: 0x0481,
+  koreanstandardsymbol: 0x327F,
+  koroniscmb: 0x0343,
+  kparen: 0x24A6,
+  kpasquare: 0x33AA,
+  ksicyrillic: 0x046F,
+  ktsquare: 0x33CF,
+  kturned: 0x029E,
+  kuhiragana: 0x304F,
+  kukatakana: 0x30AF,
+  kukatakanahalfwidth: 0xFF78,
+  kvsquare: 0x33B8,
+  kwsquare: 0x33BE,
+  l: 0x006C,
+  labengali: 0x09B2,
+  lacute: 0x013A,
+  ladeva: 0x0932,
+  lagujarati: 0x0AB2,
+  lagurmukhi: 0x0A32,
+  lakkhangyaothai: 0x0E45,
+  lamaleffinalarabic: 0xFEFC,
+  lamalefhamzaabovefinalarabic: 0xFEF8,
+  lamalefhamzaaboveisolatedarabic: 0xFEF7,
+  lamalefhamzabelowfinalarabic: 0xFEFA,
+  lamalefhamzabelowisolatedarabic: 0xFEF9,
+  lamalefisolatedarabic: 0xFEFB,
+  lamalefmaddaabovefinalarabic: 0xFEF6,
+  lamalefmaddaaboveisolatedarabic: 0xFEF5,
+  lamarabic: 0x0644,
+  lambda: 0x03BB,
+  lambdastroke: 0x019B,
+  lamed: 0x05DC,
+  lameddagesh: 0xFB3C,
+  lameddageshhebrew: 0xFB3C,
+  lamedhebrew: 0x05DC,
+  lamfinalarabic: 0xFEDE,
+  lamhahinitialarabic: 0xFCCA,
+  laminitialarabic: 0xFEDF,
+  lamjeeminitialarabic: 0xFCC9,
+  lamkhahinitialarabic: 0xFCCB,
+  lamlamhehisolatedarabic: 0xFDF2,
+  lammedialarabic: 0xFEE0,
+  lammeemhahinitialarabic: 0xFD88,
+  lammeeminitialarabic: 0xFCCC,
+  largecircle: 0x25EF,
+  lbar: 0x019A,
+  lbelt: 0x026C,
+  lbopomofo: 0x310C,
+  lcaron: 0x013E,
+  lcedilla: 0x013C,
+  lcircle: 0x24DB,
+  lcircumflexbelow: 0x1E3D,
+  lcommaaccent: 0x013C,
+  ldot: 0x0140,
+  ldotaccent: 0x0140,
+  ldotbelow: 0x1E37,
+  ldotbelowmacron: 0x1E39,
+  leftangleabovecmb: 0x031A,
+  lefttackbelowcmb: 0x0318,
+  less: 0x003C,
+  lessequal: 0x2264,
+  lessequalorgreater: 0x22DA,
+  lessmonospace: 0xFF1C,
+  lessorequivalent: 0x2272,
+  lessorgreater: 0x2276,
+  lessoverequal: 0x2266,
+  lesssmall: 0xFE64,
+  lezh: 0x026E,
+  lfblock: 0x258C,
+  lhookretroflex: 0x026D,
+  lira: 0x20A4,
+  liwnarmenian: 0x056C,
+  lj: 0x01C9,
+  ljecyrillic: 0x0459,
+  ll: 0xF6C0,
+  lladeva: 0x0933,
+  llagujarati: 0x0AB3,
+  llinebelow: 0x1E3B,
+  llladeva: 0x0934,
+  llvocalicbengali: 0x09E1,
+  llvocalicdeva: 0x0961,
+  llvocalicvowelsignbengali: 0x09E3,
+  llvocalicvowelsigndeva: 0x0963,
+  lmiddletilde: 0x026B,
+  lmonospace: 0xFF4C,
+  lmsquare: 0x33D0,
+  lochulathai: 0x0E2C,
+  logicaland: 0x2227,
+  logicalnot: 0x00AC,
+  logicalnotreversed: 0x2310,
+  logicalor: 0x2228,
+  lolingthai: 0x0E25,
+  longs: 0x017F,
+  lowlinecenterline: 0xFE4E,
+  lowlinecmb: 0x0332,
+  lowlinedashed: 0xFE4D,
+  lozenge: 0x25CA,
+  lparen: 0x24A7,
+  lslash: 0x0142,
+  lsquare: 0x2113,
+  lsuperior: 0xF6EE,
+  ltshade: 0x2591,
+  luthai: 0x0E26,
+  lvocalicbengali: 0x098C,
+  lvocalicdeva: 0x090C,
+  lvocalicvowelsignbengali: 0x09E2,
+  lvocalicvowelsigndeva: 0x0962,
+  lxsquare: 0x33D3,
+  m: 0x006D,
+  mabengali: 0x09AE,
+  macron: 0x00AF,
+  macronbelowcmb: 0x0331,
+  macroncmb: 0x0304,
+  macronlowmod: 0x02CD,
+  macronmonospace: 0xFFE3,
+  macute: 0x1E3F,
+  madeva: 0x092E,
+  magujarati: 0x0AAE,
+  magurmukhi: 0x0A2E,
+  mahapakhhebrew: 0x05A4,
+  mahapakhlefthebrew: 0x05A4,
+  mahiragana: 0x307E,
+  maichattawalowleftthai: 0xF895,
+  maichattawalowrightthai: 0xF894,
+  maichattawathai: 0x0E4B,
+  maichattawaupperleftthai: 0xF893,
+  maieklowleftthai: 0xF88C,
+  maieklowrightthai: 0xF88B,
+  maiekthai: 0x0E48,
+  maiekupperleftthai: 0xF88A,
+  maihanakatleftthai: 0xF884,
+  maihanakatthai: 0x0E31,
+  maitaikhuleftthai: 0xF889,
+  maitaikhuthai: 0x0E47,
+  maitholowleftthai: 0xF88F,
+  maitholowrightthai: 0xF88E,
+  maithothai: 0x0E49,
+  maithoupperleftthai: 0xF88D,
+  maitrilowleftthai: 0xF892,
+  maitrilowrightthai: 0xF891,
+  maitrithai: 0x0E4A,
+  maitriupperleftthai: 0xF890,
+  maiyamokthai: 0x0E46,
+  makatakana: 0x30DE,
+  makatakanahalfwidth: 0xFF8F,
+  male: 0x2642,
+  mansyonsquare: 0x3347,
+  maqafhebrew: 0x05BE,
+  mars: 0x2642,
+  masoracirclehebrew: 0x05AF,
+  masquare: 0x3383,
+  mbopomofo: 0x3107,
+  mbsquare: 0x33D4,
+  mcircle: 0x24DC,
+  mcubedsquare: 0x33A5,
+  mdotaccent: 0x1E41,
+  mdotbelow: 0x1E43,
+  meemarabic: 0x0645,
+  meemfinalarabic: 0xFEE2,
+  meeminitialarabic: 0xFEE3,
+  meemmedialarabic: 0xFEE4,
+  meemmeeminitialarabic: 0xFCD1,
+  meemmeemisolatedarabic: 0xFC48,
+  meetorusquare: 0x334D,
+  mehiragana: 0x3081,
+  meizierasquare: 0x337E,
+  mekatakana: 0x30E1,
+  mekatakanahalfwidth: 0xFF92,
+  mem: 0x05DE,
+  memdagesh: 0xFB3E,
+  memdageshhebrew: 0xFB3E,
+  memhebrew: 0x05DE,
+  menarmenian: 0x0574,
+  merkhahebrew: 0x05A5,
+  merkhakefulahebrew: 0x05A6,
+  merkhakefulalefthebrew: 0x05A6,
+  merkhalefthebrew: 0x05A5,
+  mhook: 0x0271,
+  mhzsquare: 0x3392,
+  middledotkatakanahalfwidth: 0xFF65,
+  middot: 0x00B7,
+  mieumacirclekorean: 0x3272,
+  mieumaparenkorean: 0x3212,
+  mieumcirclekorean: 0x3264,
+  mieumkorean: 0x3141,
+  mieumpansioskorean: 0x3170,
+  mieumparenkorean: 0x3204,
+  mieumpieupkorean: 0x316E,
+  mieumsioskorean: 0x316F,
+  mihiragana: 0x307F,
+  mikatakana: 0x30DF,
+  mikatakanahalfwidth: 0xFF90,
+  minus: 0x2212,
+  minusbelowcmb: 0x0320,
+  minuscircle: 0x2296,
+  minusmod: 0x02D7,
+  minusplus: 0x2213,
+  minute: 0x2032,
+  miribaarusquare: 0x334A,
+  mirisquare: 0x3349,
+  mlonglegturned: 0x0270,
+  mlsquare: 0x3396,
+  mmcubedsquare: 0x33A3,
+  mmonospace: 0xFF4D,
+  mmsquaredsquare: 0x339F,
+  mohiragana: 0x3082,
+  mohmsquare: 0x33C1,
+  mokatakana: 0x30E2,
+  mokatakanahalfwidth: 0xFF93,
+  molsquare: 0x33D6,
+  momathai: 0x0E21,
+  moverssquare: 0x33A7,
+  moverssquaredsquare: 0x33A8,
+  mparen: 0x24A8,
+  mpasquare: 0x33AB,
+  mssquare: 0x33B3,
+  msuperior: 0xF6EF,
+  mturned: 0x026F,
+  mu: 0x00B5,
+  mu1: 0x00B5,
+  muasquare: 0x3382,
+  muchgreater: 0x226B,
+  muchless: 0x226A,
+  mufsquare: 0x338C,
+  mugreek: 0x03BC,
+  mugsquare: 0x338D,
+  muhiragana: 0x3080,
+  mukatakana: 0x30E0,
+  mukatakanahalfwidth: 0xFF91,
+  mulsquare: 0x3395,
+  multiply: 0x00D7,
+  mumsquare: 0x339B,
+  munahhebrew: 0x05A3,
+  munahlefthebrew: 0x05A3,
+  musicalnote: 0x266A,
+  musicalnotedbl: 0x266B,
+  musicflatsign: 0x266D,
+  musicsharpsign: 0x266F,
+  mussquare: 0x33B2,
+  muvsquare: 0x33B6,
+  muwsquare: 0x33BC,
+  mvmegasquare: 0x33B9,
+  mvsquare: 0x33B7,
+  mwmegasquare: 0x33BF,
+  mwsquare: 0x33BD,
+  n: 0x006E,
+  nabengali: 0x09A8,
+  nabla: 0x2207,
+  nacute: 0x0144,
+  nadeva: 0x0928,
+  nagujarati: 0x0AA8,
+  nagurmukhi: 0x0A28,
+  nahiragana: 0x306A,
+  nakatakana: 0x30CA,
+  nakatakanahalfwidth: 0xFF85,
+  napostrophe: 0x0149,
+  nasquare: 0x3381,
+  nbopomofo: 0x310B,
+  nbspace: 0x00A0,
+  ncaron: 0x0148,
+  ncedilla: 0x0146,
+  ncircle: 0x24DD,
+  ncircumflexbelow: 0x1E4B,
+  ncommaaccent: 0x0146,
+  ndotaccent: 0x1E45,
+  ndotbelow: 0x1E47,
+  nehiragana: 0x306D,
+  nekatakana: 0x30CD,
+  nekatakanahalfwidth: 0xFF88,
+  newsheqelsign: 0x20AA,
+  nfsquare: 0x338B,
+  ngabengali: 0x0999,
+  ngadeva: 0x0919,
+  ngagujarati: 0x0A99,
+  ngagurmukhi: 0x0A19,
+  ngonguthai: 0x0E07,
+  nhiragana: 0x3093,
+  nhookleft: 0x0272,
+  nhookretroflex: 0x0273,
+  nieunacirclekorean: 0x326F,
+  nieunaparenkorean: 0x320F,
+  nieuncieuckorean: 0x3135,
+  nieuncirclekorean: 0x3261,
+  nieunhieuhkorean: 0x3136,
+  nieunkorean: 0x3134,
+  nieunpansioskorean: 0x3168,
+  nieunparenkorean: 0x3201,
+  nieunsioskorean: 0x3167,
+  nieuntikeutkorean: 0x3166,
+  nihiragana: 0x306B,
+  nikatakana: 0x30CB,
+  nikatakanahalfwidth: 0xFF86,
+  nikhahitleftthai: 0xF899,
+  nikhahitthai: 0x0E4D,
+  nine: 0x0039,
+  ninearabic: 0x0669,
+  ninebengali: 0x09EF,
+  ninecircle: 0x2468,
+  ninecircleinversesansserif: 0x2792,
+  ninedeva: 0x096F,
+  ninegujarati: 0x0AEF,
+  ninegurmukhi: 0x0A6F,
+  ninehackarabic: 0x0669,
+  ninehangzhou: 0x3029,
+  nineideographicparen: 0x3228,
+  nineinferior: 0x2089,
+  ninemonospace: 0xFF19,
+  nineoldstyle: 0xF739,
+  nineparen: 0x247C,
+  nineperiod: 0x2490,
+  ninepersian: 0x06F9,
+  nineroman: 0x2178,
+  ninesuperior: 0x2079,
+  nineteencircle: 0x2472,
+  nineteenparen: 0x2486,
+  nineteenperiod: 0x249A,
+  ninethai: 0x0E59,
+  nj: 0x01CC,
+  njecyrillic: 0x045A,
+  nkatakana: 0x30F3,
+  nkatakanahalfwidth: 0xFF9D,
+  nlegrightlong: 0x019E,
+  nlinebelow: 0x1E49,
+  nmonospace: 0xFF4E,
+  nmsquare: 0x339A,
+  nnabengali: 0x09A3,
+  nnadeva: 0x0923,
+  nnagujarati: 0x0AA3,
+  nnagurmukhi: 0x0A23,
+  nnnadeva: 0x0929,
+  nohiragana: 0x306E,
+  nokatakana: 0x30CE,
+  nokatakanahalfwidth: 0xFF89,
+  nonbreakingspace: 0x00A0,
+  nonenthai: 0x0E13,
+  nonuthai: 0x0E19,
+  noonarabic: 0x0646,
+  noonfinalarabic: 0xFEE6,
+  noonghunnaarabic: 0x06BA,
+  noonghunnafinalarabic: 0xFB9F,
+  nooninitialarabic: 0xFEE7,
+  noonjeeminitialarabic: 0xFCD2,
+  noonjeemisolatedarabic: 0xFC4B,
+  noonmedialarabic: 0xFEE8,
+  noonmeeminitialarabic: 0xFCD5,
+  noonmeemisolatedarabic: 0xFC4E,
+  noonnoonfinalarabic: 0xFC8D,
+  notcontains: 0x220C,
+  notelement: 0x2209,
+  notelementof: 0x2209,
+  notequal: 0x2260,
+  notgreater: 0x226F,
+  notgreaternorequal: 0x2271,
+  notgreaternorless: 0x2279,
+  notidentical: 0x2262,
+  notless: 0x226E,
+  notlessnorequal: 0x2270,
+  notparallel: 0x2226,
+  notprecedes: 0x2280,
+  notsubset: 0x2284,
+  notsucceeds: 0x2281,
+  notsuperset: 0x2285,
+  nowarmenian: 0x0576,
+  nparen: 0x24A9,
+  nssquare: 0x33B1,
+  nsuperior: 0x207F,
+  ntilde: 0x00F1,
+  nu: 0x03BD,
+  nuhiragana: 0x306C,
+  nukatakana: 0x30CC,
+  nukatakanahalfwidth: 0xFF87,
+  nuktabengali: 0x09BC,
+  nuktadeva: 0x093C,
+  nuktagujarati: 0x0ABC,
+  nuktagurmukhi: 0x0A3C,
+  numbersign: 0x0023,
+  numbersignmonospace: 0xFF03,
+  numbersignsmall: 0xFE5F,
+  numeralsigngreek: 0x0374,
+  numeralsignlowergreek: 0x0375,
+  numero: 0x2116,
+  nun: 0x05E0,
+  nundagesh: 0xFB40,
+  nundageshhebrew: 0xFB40,
+  nunhebrew: 0x05E0,
+  nvsquare: 0x33B5,
+  nwsquare: 0x33BB,
+  nyabengali: 0x099E,
+  nyadeva: 0x091E,
+  nyagujarati: 0x0A9E,
+  nyagurmukhi: 0x0A1E,
+  o: 0x006F,
+  oacute: 0x00F3,
+  oangthai: 0x0E2D,
+  obarred: 0x0275,
+  obarredcyrillic: 0x04E9,
+  obarreddieresiscyrillic: 0x04EB,
+  obengali: 0x0993,
+  obopomofo: 0x311B,
+  obreve: 0x014F,
+  ocandradeva: 0x0911,
+  ocandragujarati: 0x0A91,
+  ocandravowelsigndeva: 0x0949,
+  ocandravowelsigngujarati: 0x0AC9,
+  ocaron: 0x01D2,
+  ocircle: 0x24DE,
+  ocircumflex: 0x00F4,
+  ocircumflexacute: 0x1ED1,
+  ocircumflexdotbelow: 0x1ED9,
+  ocircumflexgrave: 0x1ED3,
+  ocircumflexhookabove: 0x1ED5,
+  ocircumflextilde: 0x1ED7,
+  ocyrillic: 0x043E,
+  odblacute: 0x0151,
+  odblgrave: 0x020D,
+  odeva: 0x0913,
+  odieresis: 0x00F6,
+  odieresiscyrillic: 0x04E7,
+  odotbelow: 0x1ECD,
+  oe: 0x0153,
+  oekorean: 0x315A,
+  ogonek: 0x02DB,
+  ogonekcmb: 0x0328,
+  ograve: 0x00F2,
+  ogujarati: 0x0A93,
+  oharmenian: 0x0585,
+  ohiragana: 0x304A,
+  ohookabove: 0x1ECF,
+  ohorn: 0x01A1,
+  ohornacute: 0x1EDB,
+  ohorndotbelow: 0x1EE3,
+  ohorngrave: 0x1EDD,
+  ohornhookabove: 0x1EDF,
+  ohorntilde: 0x1EE1,
+  ohungarumlaut: 0x0151,
+  oi: 0x01A3,
+  oinvertedbreve: 0x020F,
+  okatakana: 0x30AA,
+  okatakanahalfwidth: 0xFF75,
+  okorean: 0x3157,
+  olehebrew: 0x05AB,
+  omacron: 0x014D,
+  omacronacute: 0x1E53,
+  omacrongrave: 0x1E51,
+  omdeva: 0x0950,
+  omega: 0x03C9,
+  omega1: 0x03D6,
+  omegacyrillic: 0x0461,
+  omegalatinclosed: 0x0277,
+  omegaroundcyrillic: 0x047B,
+  omegatitlocyrillic: 0x047D,
+  omegatonos: 0x03CE,
+  omgujarati: 0x0AD0,
+  omicron: 0x03BF,
+  omicrontonos: 0x03CC,
+  omonospace: 0xFF4F,
+  one: 0x0031,
+  onearabic: 0x0661,
+  onebengali: 0x09E7,
+  onecircle: 0x2460,
+  onecircleinversesansserif: 0x278A,
+  onedeva: 0x0967,
+  onedotenleader: 0x2024,
+  oneeighth: 0x215B,
+  onefitted: 0xF6DC,
+  onegujarati: 0x0AE7,
+  onegurmukhi: 0x0A67,
+  onehackarabic: 0x0661,
+  onehalf: 0x00BD,
+  onehangzhou: 0x3021,
+  oneideographicparen: 0x3220,
+  oneinferior: 0x2081,
+  onemonospace: 0xFF11,
+  onenumeratorbengali: 0x09F4,
+  oneoldstyle: 0xF731,
+  oneparen: 0x2474,
+  oneperiod: 0x2488,
+  onepersian: 0x06F1,
+  onequarter: 0x00BC,
+  oneroman: 0x2170,
+  onesuperior: 0x00B9,
+  onethai: 0x0E51,
+  onethird: 0x2153,
+  oogonek: 0x01EB,
+  oogonekmacron: 0x01ED,
+  oogurmukhi: 0x0A13,
+  oomatragurmukhi: 0x0A4B,
+  oopen: 0x0254,
+  oparen: 0x24AA,
+  openbullet: 0x25E6,
+  option: 0x2325,
+  ordfeminine: 0x00AA,
+  ordmasculine: 0x00BA,
+  orthogonal: 0x221F,
+  oshortdeva: 0x0912,
+  oshortvowelsigndeva: 0x094A,
+  oslash: 0x00F8,
+  oslashacute: 0x01FF,
+  osmallhiragana: 0x3049,
+  osmallkatakana: 0x30A9,
+  osmallkatakanahalfwidth: 0xFF6B,
+  ostrokeacute: 0x01FF,
+  osuperior: 0xF6F0,
+  otcyrillic: 0x047F,
+  otilde: 0x00F5,
+  otildeacute: 0x1E4D,
+  otildedieresis: 0x1E4F,
+  oubopomofo: 0x3121,
+  overline: 0x203E,
+  overlinecenterline: 0xFE4A,
+  overlinecmb: 0x0305,
+  overlinedashed: 0xFE49,
+  overlinedblwavy: 0xFE4C,
+  overlinewavy: 0xFE4B,
+  overscore: 0x00AF,
+  ovowelsignbengali: 0x09CB,
+  ovowelsigndeva: 0x094B,
+  ovowelsigngujarati: 0x0ACB,
+  p: 0x0070,
+  paampssquare: 0x3380,
+  paasentosquare: 0x332B,
+  pabengali: 0x09AA,
+  pacute: 0x1E55,
+  padeva: 0x092A,
+  pagedown: 0x21DF,
+  pageup: 0x21DE,
+  pagujarati: 0x0AAA,
+  pagurmukhi: 0x0A2A,
+  pahiragana: 0x3071,
+  paiyannoithai: 0x0E2F,
+  pakatakana: 0x30D1,
+  palatalizationcyrilliccmb: 0x0484,
+  palochkacyrillic: 0x04C0,
+  pansioskorean: 0x317F,
+  paragraph: 0x00B6,
+  parallel: 0x2225,
+  parenleft: 0x0028,
+  parenleftaltonearabic: 0xFD3E,
+  parenleftbt: 0xF8ED,
+  parenleftex: 0xF8EC,
+  parenleftinferior: 0x208D,
+  parenleftmonospace: 0xFF08,
+  parenleftsmall: 0xFE59,
+  parenleftsuperior: 0x207D,
+  parenlefttp: 0xF8EB,
+  parenleftvertical: 0xFE35,
+  parenright: 0x0029,
+  parenrightaltonearabic: 0xFD3F,
+  parenrightbt: 0xF8F8,
+  parenrightex: 0xF8F7,
+  parenrightinferior: 0x208E,
+  parenrightmonospace: 0xFF09,
+  parenrightsmall: 0xFE5A,
+  parenrightsuperior: 0x207E,
+  parenrighttp: 0xF8F6,
+  parenrightvertical: 0xFE36,
+  partialdiff: 0x2202,
+  paseqhebrew: 0x05C0,
+  pashtahebrew: 0x0599,
+  pasquare: 0x33A9,
+  patah: 0x05B7,
+  patah11: 0x05B7,
+  patah1d: 0x05B7,
+  patah2a: 0x05B7,
+  patahhebrew: 0x05B7,
+  patahnarrowhebrew: 0x05B7,
+  patahquarterhebrew: 0x05B7,
+  patahwidehebrew: 0x05B7,
+  pazerhebrew: 0x05A1,
+  pbopomofo: 0x3106,
+  pcircle: 0x24DF,
+  pdotaccent: 0x1E57,
+  pe: 0x05E4,
+  pecyrillic: 0x043F,
+  pedagesh: 0xFB44,
+  pedageshhebrew: 0xFB44,
+  peezisquare: 0x333B,
+  pefinaldageshhebrew: 0xFB43,
+  peharabic: 0x067E,
+  peharmenian: 0x057A,
+  pehebrew: 0x05E4,
+  pehfinalarabic: 0xFB57,
+  pehinitialarabic: 0xFB58,
+  pehiragana: 0x307A,
+  pehmedialarabic: 0xFB59,
+  pekatakana: 0x30DA,
+  pemiddlehookcyrillic: 0x04A7,
+  perafehebrew: 0xFB4E,
+  percent: 0x0025,
+  percentarabic: 0x066A,
+  percentmonospace: 0xFF05,
+  percentsmall: 0xFE6A,
+  period: 0x002E,
+  periodarmenian: 0x0589,
+  periodcentered: 0x00B7,
+  periodhalfwidth: 0xFF61,
+  periodinferior: 0xF6E7,
+  periodmonospace: 0xFF0E,
+  periodsmall: 0xFE52,
+  periodsuperior: 0xF6E8,
+  perispomenigreekcmb: 0x0342,
+  perpendicular: 0x22A5,
+  perthousand: 0x2030,
+  peseta: 0x20A7,
+  pfsquare: 0x338A,
+  phabengali: 0x09AB,
+  phadeva: 0x092B,
+  phagujarati: 0x0AAB,
+  phagurmukhi: 0x0A2B,
+  phi: 0x03C6,
+  phi1: 0x03D5,
+  phieuphacirclekorean: 0x327A,
+  phieuphaparenkorean: 0x321A,
+  phieuphcirclekorean: 0x326C,
+  phieuphkorean: 0x314D,
+  phieuphparenkorean: 0x320C,
+  philatin: 0x0278,
+  phinthuthai: 0x0E3A,
+  phisymbolgreek: 0x03D5,
+  phook: 0x01A5,
+  phophanthai: 0x0E1E,
+  phophungthai: 0x0E1C,
+  phosamphaothai: 0x0E20,
+  pi: 0x03C0,
+  pieupacirclekorean: 0x3273,
+  pieupaparenkorean: 0x3213,
+  pieupcieuckorean: 0x3176,
+  pieupcirclekorean: 0x3265,
+  pieupkiyeokkorean: 0x3172,
+  pieupkorean: 0x3142,
+  pieupparenkorean: 0x3205,
+  pieupsioskiyeokkorean: 0x3174,
+  pieupsioskorean: 0x3144,
+  pieupsiostikeutkorean: 0x3175,
+  pieupthieuthkorean: 0x3177,
+  pieuptikeutkorean: 0x3173,
+  pihiragana: 0x3074,
+  pikatakana: 0x30D4,
+  pisymbolgreek: 0x03D6,
+  piwrarmenian: 0x0583,
+  plus: 0x002B,
+  plusbelowcmb: 0x031F,
+  pluscircle: 0x2295,
+  plusminus: 0x00B1,
+  plusmod: 0x02D6,
+  plusmonospace: 0xFF0B,
+  plussmall: 0xFE62,
+  plussuperior: 0x207A,
+  pmonospace: 0xFF50,
+  pmsquare: 0x33D8,
+  pohiragana: 0x307D,
+  pointingindexdownwhite: 0x261F,
+  pointingindexleftwhite: 0x261C,
+  pointingindexrightwhite: 0x261E,
+  pointingindexupwhite: 0x261D,
+  pokatakana: 0x30DD,
+  poplathai: 0x0E1B,
+  postalmark: 0x3012,
+  postalmarkface: 0x3020,
+  pparen: 0x24AB,
+  precedes: 0x227A,
+  prescription: 0x211E,
+  primemod: 0x02B9,
+  primereversed: 0x2035,
+  product: 0x220F,
+  projective: 0x2305,
+  prolongedkana: 0x30FC,
+  propellor: 0x2318,
+  propersubset: 0x2282,
+  propersuperset: 0x2283,
+  proportion: 0x2237,
+  proportional: 0x221D,
+  psi: 0x03C8,
+  psicyrillic: 0x0471,
+  psilipneumatacyrilliccmb: 0x0486,
+  pssquare: 0x33B0,
+  puhiragana: 0x3077,
+  pukatakana: 0x30D7,
+  pvsquare: 0x33B4,
+  pwsquare: 0x33BA,
+  q: 0x0071,
+  qadeva: 0x0958,
+  qadmahebrew: 0x05A8,
+  qafarabic: 0x0642,
+  qaffinalarabic: 0xFED6,
+  qafinitialarabic: 0xFED7,
+  qafmedialarabic: 0xFED8,
+  qamats: 0x05B8,
+  qamats10: 0x05B8,
+  qamats1a: 0x05B8,
+  qamats1c: 0x05B8,
+  qamats27: 0x05B8,
+  qamats29: 0x05B8,
+  qamats33: 0x05B8,
+  qamatsde: 0x05B8,
+  qamatshebrew: 0x05B8,
+  qamatsnarrowhebrew: 0x05B8,
+  qamatsqatanhebrew: 0x05B8,
+  qamatsqatannarrowhebrew: 0x05B8,
+  qamatsqatanquarterhebrew: 0x05B8,
+  qamatsqatanwidehebrew: 0x05B8,
+  qamatsquarterhebrew: 0x05B8,
+  qamatswidehebrew: 0x05B8,
+  qarneyparahebrew: 0x059F,
+  qbopomofo: 0x3111,
+  qcircle: 0x24E0,
+  qhook: 0x02A0,
+  qmonospace: 0xFF51,
+  qof: 0x05E7,
+  qofdagesh: 0xFB47,
+  qofdageshhebrew: 0xFB47,
+  qofhebrew: 0x05E7,
+  qparen: 0x24AC,
+  quarternote: 0x2669,
+  qubuts: 0x05BB,
+  qubuts18: 0x05BB,
+  qubuts25: 0x05BB,
+  qubuts31: 0x05BB,
+  qubutshebrew: 0x05BB,
+  qubutsnarrowhebrew: 0x05BB,
+  qubutsquarterhebrew: 0x05BB,
+  qubutswidehebrew: 0x05BB,
+  question: 0x003F,
+  questionarabic: 0x061F,
+  questionarmenian: 0x055E,
+  questiondown: 0x00BF,
+  questiondownsmall: 0xF7BF,
+  questiongreek: 0x037E,
+  questionmonospace: 0xFF1F,
+  questionsmall: 0xF73F,
+  quotedbl: 0x0022,
+  quotedblbase: 0x201E,
+  quotedblleft: 0x201C,
+  quotedblmonospace: 0xFF02,
+  quotedblprime: 0x301E,
+  quotedblprimereversed: 0x301D,
+  quotedblright: 0x201D,
+  quoteleft: 0x2018,
+  quoteleftreversed: 0x201B,
+  quotereversed: 0x201B,
+  quoteright: 0x2019,
+  quoterightn: 0x0149,
+  quotesinglbase: 0x201A,
+  quotesingle: 0x0027,
+  quotesinglemonospace: 0xFF07,
+  r: 0x0072,
+  raarmenian: 0x057C,
+  rabengali: 0x09B0,
+  racute: 0x0155,
+  radeva: 0x0930,
+  radical: 0x221A,
+  radicalex: 0xF8E5,
+  radoverssquare: 0x33AE,
+  radoverssquaredsquare: 0x33AF,
+  radsquare: 0x33AD,
+  rafe: 0x05BF,
+  rafehebrew: 0x05BF,
+  ragujarati: 0x0AB0,
+  ragurmukhi: 0x0A30,
+  rahiragana: 0x3089,
+  rakatakana: 0x30E9,
+  rakatakanahalfwidth: 0xFF97,
+  ralowerdiagonalbengali: 0x09F1,
+  ramiddlediagonalbengali: 0x09F0,
+  ramshorn: 0x0264,
+  ratio: 0x2236,
+  rbopomofo: 0x3116,
+  rcaron: 0x0159,
+  rcedilla: 0x0157,
+  rcircle: 0x24E1,
+  rcommaaccent: 0x0157,
+  rdblgrave: 0x0211,
+  rdotaccent: 0x1E59,
+  rdotbelow: 0x1E5B,
+  rdotbelowmacron: 0x1E5D,
+  referencemark: 0x203B,
+  reflexsubset: 0x2286,
+  reflexsuperset: 0x2287,
+  registered: 0x00AE,
+  registersans: 0xF8E8,
+  registerserif: 0xF6DA,
+  reharabic: 0x0631,
+  reharmenian: 0x0580,
+  rehfinalarabic: 0xFEAE,
+  rehiragana: 0x308C,
+  rekatakana: 0x30EC,
+  rekatakanahalfwidth: 0xFF9A,
+  resh: 0x05E8,
+  reshdageshhebrew: 0xFB48,
+  reshhebrew: 0x05E8,
+  reversedtilde: 0x223D,
+  reviahebrew: 0x0597,
+  reviamugrashhebrew: 0x0597,
+  revlogicalnot: 0x2310,
+  rfishhook: 0x027E,
+  rfishhookreversed: 0x027F,
+  rhabengali: 0x09DD,
+  rhadeva: 0x095D,
+  rho: 0x03C1,
+  rhook: 0x027D,
+  rhookturned: 0x027B,
+  rhookturnedsuperior: 0x02B5,
+  rhosymbolgreek: 0x03F1,
+  rhotichookmod: 0x02DE,
+  rieulacirclekorean: 0x3271,
+  rieulaparenkorean: 0x3211,
+  rieulcirclekorean: 0x3263,
+  rieulhieuhkorean: 0x3140,
+  rieulkiyeokkorean: 0x313A,
+  rieulkiyeoksioskorean: 0x3169,
+  rieulkorean: 0x3139,
+  rieulmieumkorean: 0x313B,
+  rieulpansioskorean: 0x316C,
+  rieulparenkorean: 0x3203,
+  rieulphieuphkorean: 0x313F,
+  rieulpieupkorean: 0x313C,
+  rieulpieupsioskorean: 0x316B,
+  rieulsioskorean: 0x313D,
+  rieulthieuthkorean: 0x313E,
+  rieultikeutkorean: 0x316A,
+  rieulyeorinhieuhkorean: 0x316D,
+  rightangle: 0x221F,
+  righttackbelowcmb: 0x0319,
+  righttriangle: 0x22BF,
+  rihiragana: 0x308A,
+  rikatakana: 0x30EA,
+  rikatakanahalfwidth: 0xFF98,
+  ring: 0x02DA,
+  ringbelowcmb: 0x0325,
+  ringcmb: 0x030A,
+  ringhalfleft: 0x02BF,
+  ringhalfleftarmenian: 0x0559,
+  ringhalfleftbelowcmb: 0x031C,
+  ringhalfleftcentered: 0x02D3,
+  ringhalfright: 0x02BE,
+  ringhalfrightbelowcmb: 0x0339,
+  ringhalfrightcentered: 0x02D2,
+  rinvertedbreve: 0x0213,
+  rittorusquare: 0x3351,
+  rlinebelow: 0x1E5F,
+  rlongleg: 0x027C,
+  rlonglegturned: 0x027A,
+  rmonospace: 0xFF52,
+  rohiragana: 0x308D,
+  rokatakana: 0x30ED,
+  rokatakanahalfwidth: 0xFF9B,
+  roruathai: 0x0E23,
+  rparen: 0x24AD,
+  rrabengali: 0x09DC,
+  rradeva: 0x0931,
+  rragurmukhi: 0x0A5C,
+  rreharabic: 0x0691,
+  rrehfinalarabic: 0xFB8D,
+  rrvocalicbengali: 0x09E0,
+  rrvocalicdeva: 0x0960,
+  rrvocalicgujarati: 0x0AE0,
+  rrvocalicvowelsignbengali: 0x09C4,
+  rrvocalicvowelsigndeva: 0x0944,
+  rrvocalicvowelsigngujarati: 0x0AC4,
+  rsuperior: 0xF6F1,
+  rtblock: 0x2590,
+  rturned: 0x0279,
+  rturnedsuperior: 0x02B4,
+  ruhiragana: 0x308B,
+  rukatakana: 0x30EB,
+  rukatakanahalfwidth: 0xFF99,
+  rupeemarkbengali: 0x09F2,
+  rupeesignbengali: 0x09F3,
+  rupiah: 0xF6DD,
+  ruthai: 0x0E24,
+  rvocalicbengali: 0x098B,
+  rvocalicdeva: 0x090B,
+  rvocalicgujarati: 0x0A8B,
+  rvocalicvowelsignbengali: 0x09C3,
+  rvocalicvowelsigndeva: 0x0943,
+  rvocalicvowelsigngujarati: 0x0AC3,
+  s: 0x0073,
+  sabengali: 0x09B8,
+  sacute: 0x015B,
+  sacutedotaccent: 0x1E65,
+  sadarabic: 0x0635,
+  sadeva: 0x0938,
+  sadfinalarabic: 0xFEBA,
+  sadinitialarabic: 0xFEBB,
+  sadmedialarabic: 0xFEBC,
+  sagujarati: 0x0AB8,
+  sagurmukhi: 0x0A38,
+  sahiragana: 0x3055,
+  sakatakana: 0x30B5,
+  sakatakanahalfwidth: 0xFF7B,
+  sallallahoualayhewasallamarabic: 0xFDFA,
+  samekh: 0x05E1,
+  samekhdagesh: 0xFB41,
+  samekhdageshhebrew: 0xFB41,
+  samekhhebrew: 0x05E1,
+  saraaathai: 0x0E32,
+  saraaethai: 0x0E41,
+  saraaimaimalaithai: 0x0E44,
+  saraaimaimuanthai: 0x0E43,
+  saraamthai: 0x0E33,
+  saraathai: 0x0E30,
+  saraethai: 0x0E40,
+  saraiileftthai: 0xF886,
+  saraiithai: 0x0E35,
+  saraileftthai: 0xF885,
+  saraithai: 0x0E34,
+  saraothai: 0x0E42,
+  saraueeleftthai: 0xF888,
+  saraueethai: 0x0E37,
+  saraueleftthai: 0xF887,
+  sarauethai: 0x0E36,
+  sarauthai: 0x0E38,
+  sarauuthai: 0x0E39,
+  sbopomofo: 0x3119,
+  scaron: 0x0161,
+  scarondotaccent: 0x1E67,
+  scedilla: 0x015F,
+  schwa: 0x0259,
+  schwacyrillic: 0x04D9,
+  schwadieresiscyrillic: 0x04DB,
+  schwahook: 0x025A,
+  scircle: 0x24E2,
+  scircumflex: 0x015D,
+  scommaaccent: 0x0219,
+  sdotaccent: 0x1E61,
+  sdotbelow: 0x1E63,
+  sdotbelowdotaccent: 0x1E69,
+  seagullbelowcmb: 0x033C,
+  second: 0x2033,
+  secondtonechinese: 0x02CA,
+  section: 0x00A7,
+  seenarabic: 0x0633,
+  seenfinalarabic: 0xFEB2,
+  seeninitialarabic: 0xFEB3,
+  seenmedialarabic: 0xFEB4,
+  segol: 0x05B6,
+  segol13: 0x05B6,
+  segol1f: 0x05B6,
+  segol2c: 0x05B6,
+  segolhebrew: 0x05B6,
+  segolnarrowhebrew: 0x05B6,
+  segolquarterhebrew: 0x05B6,
+  segoltahebrew: 0x0592,
+  segolwidehebrew: 0x05B6,
+  seharmenian: 0x057D,
+  sehiragana: 0x305B,
+  sekatakana: 0x30BB,
+  sekatakanahalfwidth: 0xFF7E,
+  semicolon: 0x003B,
+  semicolonarabic: 0x061B,
+  semicolonmonospace: 0xFF1B,
+  semicolonsmall: 0xFE54,
+  semivoicedmarkkana: 0x309C,
+  semivoicedmarkkanahalfwidth: 0xFF9F,
+  sentisquare: 0x3322,
+  sentosquare: 0x3323,
+  seven: 0x0037,
+  sevenarabic: 0x0667,
+  sevenbengali: 0x09ED,
+  sevencircle: 0x2466,
+  sevencircleinversesansserif: 0x2790,
+  sevendeva: 0x096D,
+  seveneighths: 0x215E,
+  sevengujarati: 0x0AED,
+  sevengurmukhi: 0x0A6D,
+  sevenhackarabic: 0x0667,
+  sevenhangzhou: 0x3027,
+  sevenideographicparen: 0x3226,
+  seveninferior: 0x2087,
+  sevenmonospace: 0xFF17,
+  sevenoldstyle: 0xF737,
+  sevenparen: 0x247A,
+  sevenperiod: 0x248E,
+  sevenpersian: 0x06F7,
+  sevenroman: 0x2176,
+  sevensuperior: 0x2077,
+  seventeencircle: 0x2470,
+  seventeenparen: 0x2484,
+  seventeenperiod: 0x2498,
+  seventhai: 0x0E57,
+  sfthyphen: 0x00AD,
+  shaarmenian: 0x0577,
+  shabengali: 0x09B6,
+  shacyrillic: 0x0448,
+  shaddaarabic: 0x0651,
+  shaddadammaarabic: 0xFC61,
+  shaddadammatanarabic: 0xFC5E,
+  shaddafathaarabic: 0xFC60,
+  shaddakasraarabic: 0xFC62,
+  shaddakasratanarabic: 0xFC5F,
+  shade: 0x2592,
+  shadedark: 0x2593,
+  shadelight: 0x2591,
+  shademedium: 0x2592,
+  shadeva: 0x0936,
+  shagujarati: 0x0AB6,
+  shagurmukhi: 0x0A36,
+  shalshelethebrew: 0x0593,
+  shbopomofo: 0x3115,
+  shchacyrillic: 0x0449,
+  sheenarabic: 0x0634,
+  sheenfinalarabic: 0xFEB6,
+  sheeninitialarabic: 0xFEB7,
+  sheenmedialarabic: 0xFEB8,
+  sheicoptic: 0x03E3,
+  sheqel: 0x20AA,
+  sheqelhebrew: 0x20AA,
+  sheva: 0x05B0,
+  sheva115: 0x05B0,
+  sheva15: 0x05B0,
+  sheva22: 0x05B0,
+  sheva2e: 0x05B0,
+  shevahebrew: 0x05B0,
+  shevanarrowhebrew: 0x05B0,
+  shevaquarterhebrew: 0x05B0,
+  shevawidehebrew: 0x05B0,
+  shhacyrillic: 0x04BB,
+  shimacoptic: 0x03ED,
+  shin: 0x05E9,
+  shindagesh: 0xFB49,
+  shindageshhebrew: 0xFB49,
+  shindageshshindot: 0xFB2C,
+  shindageshshindothebrew: 0xFB2C,
+  shindageshsindot: 0xFB2D,
+  shindageshsindothebrew: 0xFB2D,
+  shindothebrew: 0x05C1,
+  shinhebrew: 0x05E9,
+  shinshindot: 0xFB2A,
+  shinshindothebrew: 0xFB2A,
+  shinsindot: 0xFB2B,
+  shinsindothebrew: 0xFB2B,
+  shook: 0x0282,
+  sigma: 0x03C3,
+  sigma1: 0x03C2,
+  sigmafinal: 0x03C2,
+  sigmalunatesymbolgreek: 0x03F2,
+  sihiragana: 0x3057,
+  sikatakana: 0x30B7,
+  sikatakanahalfwidth: 0xFF7C,
+  siluqhebrew: 0x05BD,
+  siluqlefthebrew: 0x05BD,
+  similar: 0x223C,
+  sindothebrew: 0x05C2,
+  siosacirclekorean: 0x3274,
+  siosaparenkorean: 0x3214,
+  sioscieuckorean: 0x317E,
+  sioscirclekorean: 0x3266,
+  sioskiyeokkorean: 0x317A,
+  sioskorean: 0x3145,
+  siosnieunkorean: 0x317B,
+  siosparenkorean: 0x3206,
+  siospieupkorean: 0x317D,
+  siostikeutkorean: 0x317C,
+  six: 0x0036,
+  sixarabic: 0x0666,
+  sixbengali: 0x09EC,
+  sixcircle: 0x2465,
+  sixcircleinversesansserif: 0x278F,
+  sixdeva: 0x096C,
+  sixgujarati: 0x0AEC,
+  sixgurmukhi: 0x0A6C,
+  sixhackarabic: 0x0666,
+  sixhangzhou: 0x3026,
+  sixideographicparen: 0x3225,
+  sixinferior: 0x2086,
+  sixmonospace: 0xFF16,
+  sixoldstyle: 0xF736,
+  sixparen: 0x2479,
+  sixperiod: 0x248D,
+  sixpersian: 0x06F6,
+  sixroman: 0x2175,
+  sixsuperior: 0x2076,
+  sixteencircle: 0x246F,
+  sixteencurrencydenominatorbengali: 0x09F9,
+  sixteenparen: 0x2483,
+  sixteenperiod: 0x2497,
+  sixthai: 0x0E56,
+  slash: 0x002F,
+  slashmonospace: 0xFF0F,
+  slong: 0x017F,
+  slongdotaccent: 0x1E9B,
+  smileface: 0x263A,
+  smonospace: 0xFF53,
+  sofpasuqhebrew: 0x05C3,
+  softhyphen: 0x00AD,
+  softsigncyrillic: 0x044C,
+  sohiragana: 0x305D,
+  sokatakana: 0x30BD,
+  sokatakanahalfwidth: 0xFF7F,
+  soliduslongoverlaycmb: 0x0338,
+  solidusshortoverlaycmb: 0x0337,
+  sorusithai: 0x0E29,
+  sosalathai: 0x0E28,
+  sosothai: 0x0E0B,
+  sosuathai: 0x0E2A,
+  space: 0x0020,
+  spacehackarabic: 0x0020,
+  spade: 0x2660,
+  spadesuitblack: 0x2660,
+  spadesuitwhite: 0x2664,
+  sparen: 0x24AE,
+  squarebelowcmb: 0x033B,
+  squarecc: 0x33C4,
+  squarecm: 0x339D,
+  squarediagonalcrosshatchfill: 0x25A9,
+  squarehorizontalfill: 0x25A4,
+  squarekg: 0x338F,
+  squarekm: 0x339E,
+  squarekmcapital: 0x33CE,
+  squareln: 0x33D1,
+  squarelog: 0x33D2,
+  squaremg: 0x338E,
+  squaremil: 0x33D5,
+  squaremm: 0x339C,
+  squaremsquared: 0x33A1,
+  squareorthogonalcrosshatchfill: 0x25A6,
+  squareupperlefttolowerrightfill: 0x25A7,
+  squareupperrighttolowerleftfill: 0x25A8,
+  squareverticalfill: 0x25A5,
+  squarewhitewithsmallblack: 0x25A3,
+  srsquare: 0x33DB,
+  ssabengali: 0x09B7,
+  ssadeva: 0x0937,
+  ssagujarati: 0x0AB7,
+  ssangcieuckorean: 0x3149,
+  ssanghieuhkorean: 0x3185,
+  ssangieungkorean: 0x3180,
+  ssangkiyeokkorean: 0x3132,
+  ssangnieunkorean: 0x3165,
+  ssangpieupkorean: 0x3143,
+  ssangsioskorean: 0x3146,
+  ssangtikeutkorean: 0x3138,
+  ssuperior: 0xF6F2,
+  sterling: 0x00A3,
+  sterlingmonospace: 0xFFE1,
+  strokelongoverlaycmb: 0x0336,
+  strokeshortoverlaycmb: 0x0335,
+  subset: 0x2282,
+  subsetnotequal: 0x228A,
+  subsetorequal: 0x2286,
+  succeeds: 0x227B,
+  suchthat: 0x220B,
+  suhiragana: 0x3059,
+  sukatakana: 0x30B9,
+  sukatakanahalfwidth: 0xFF7D,
+  sukunarabic: 0x0652,
+  summation: 0x2211,
+  sun: 0x263C,
+  superset: 0x2283,
+  supersetnotequal: 0x228B,
+  supersetorequal: 0x2287,
+  svsquare: 0x33DC,
+  syouwaerasquare: 0x337C,
+  t: 0x0074,
+  tabengali: 0x09A4,
+  tackdown: 0x22A4,
+  tackleft: 0x22A3,
+  tadeva: 0x0924,
+  tagujarati: 0x0AA4,
+  tagurmukhi: 0x0A24,
+  taharabic: 0x0637,
+  tahfinalarabic: 0xFEC2,
+  tahinitialarabic: 0xFEC3,
+  tahiragana: 0x305F,
+  tahmedialarabic: 0xFEC4,
+  taisyouerasquare: 0x337D,
+  takatakana: 0x30BF,
+  takatakanahalfwidth: 0xFF80,
+  tatweelarabic: 0x0640,
+  tau: 0x03C4,
+  tav: 0x05EA,
+  tavdages: 0xFB4A,
+  tavdagesh: 0xFB4A,
+  tavdageshhebrew: 0xFB4A,
+  tavhebrew: 0x05EA,
+  tbar: 0x0167,
+  tbopomofo: 0x310A,
+  tcaron: 0x0165,
+  tccurl: 0x02A8,
+  tcedilla: 0x0163,
+  tcheharabic: 0x0686,
+  tchehfinalarabic: 0xFB7B,
+  tchehinitialarabic: 0xFB7C,
+  tchehmedialarabic: 0xFB7D,
+  tcircle: 0x24E3,
+  tcircumflexbelow: 0x1E71,
+  tcommaaccent: 0x0163,
+  tdieresis: 0x1E97,
+  tdotaccent: 0x1E6B,
+  tdotbelow: 0x1E6D,
+  tecyrillic: 0x0442,
+  tedescendercyrillic: 0x04AD,
+  teharabic: 0x062A,
+  tehfinalarabic: 0xFE96,
+  tehhahinitialarabic: 0xFCA2,
+  tehhahisolatedarabic: 0xFC0C,
+  tehinitialarabic: 0xFE97,
+  tehiragana: 0x3066,
+  tehjeeminitialarabic: 0xFCA1,
+  tehjeemisolatedarabic: 0xFC0B,
+  tehmarbutaarabic: 0x0629,
+  tehmarbutafinalarabic: 0xFE94,
+  tehmedialarabic: 0xFE98,
+  tehmeeminitialarabic: 0xFCA4,
+  tehmeemisolatedarabic: 0xFC0E,
+  tehnoonfinalarabic: 0xFC73,
+  tekatakana: 0x30C6,
+  tekatakanahalfwidth: 0xFF83,
+  telephone: 0x2121,
+  telephoneblack: 0x260E,
+  telishagedolahebrew: 0x05A0,
+  telishaqetanahebrew: 0x05A9,
+  tencircle: 0x2469,
+  tenideographicparen: 0x3229,
+  tenparen: 0x247D,
+  tenperiod: 0x2491,
+  tenroman: 0x2179,
+  tesh: 0x02A7,
+  tet: 0x05D8,
+  tetdagesh: 0xFB38,
+  tetdageshhebrew: 0xFB38,
+  tethebrew: 0x05D8,
+  tetsecyrillic: 0x04B5,
+  tevirhebrew: 0x059B,
+  tevirlefthebrew: 0x059B,
+  thabengali: 0x09A5,
+  thadeva: 0x0925,
+  thagujarati: 0x0AA5,
+  thagurmukhi: 0x0A25,
+  thalarabic: 0x0630,
+  thalfinalarabic: 0xFEAC,
+  thanthakhatlowleftthai: 0xF898,
+  thanthakhatlowrightthai: 0xF897,
+  thanthakhatthai: 0x0E4C,
+  thanthakhatupperleftthai: 0xF896,
+  theharabic: 0x062B,
+  thehfinalarabic: 0xFE9A,
+  thehinitialarabic: 0xFE9B,
+  thehmedialarabic: 0xFE9C,
+  thereexists: 0x2203,
+  therefore: 0x2234,
+  theta: 0x03B8,
+  theta1: 0x03D1,
+  thetasymbolgreek: 0x03D1,
+  thieuthacirclekorean: 0x3279,
+  thieuthaparenkorean: 0x3219,
+  thieuthcirclekorean: 0x326B,
+  thieuthkorean: 0x314C,
+  thieuthparenkorean: 0x320B,
+  thirteencircle: 0x246C,
+  thirteenparen: 0x2480,
+  thirteenperiod: 0x2494,
+  thonangmonthothai: 0x0E11,
+  thook: 0x01AD,
+  thophuthaothai: 0x0E12,
+  thorn: 0x00FE,
+  thothahanthai: 0x0E17,
+  thothanthai: 0x0E10,
+  thothongthai: 0x0E18,
+  thothungthai: 0x0E16,
+  thousandcyrillic: 0x0482,
+  thousandsseparatorarabic: 0x066C,
+  thousandsseparatorpersian: 0x066C,
+  three: 0x0033,
+  threearabic: 0x0663,
+  threebengali: 0x09E9,
+  threecircle: 0x2462,
+  threecircleinversesansserif: 0x278C,
+  threedeva: 0x0969,
+  threeeighths: 0x215C,
+  threegujarati: 0x0AE9,
+  threegurmukhi: 0x0A69,
+  threehackarabic: 0x0663,
+  threehangzhou: 0x3023,
+  threeideographicparen: 0x3222,
+  threeinferior: 0x2083,
+  threemonospace: 0xFF13,
+  threenumeratorbengali: 0x09F6,
+  threeoldstyle: 0xF733,
+  threeparen: 0x2476,
+  threeperiod: 0x248A,
+  threepersian: 0x06F3,
+  threequarters: 0x00BE,
+  threequartersemdash: 0xF6DE,
+  threeroman: 0x2172,
+  threesuperior: 0x00B3,
+  threethai: 0x0E53,
+  thzsquare: 0x3394,
+  tihiragana: 0x3061,
+  tikatakana: 0x30C1,
+  tikatakanahalfwidth: 0xFF81,
+  tikeutacirclekorean: 0x3270,
+  tikeutaparenkorean: 0x3210,
+  tikeutcirclekorean: 0x3262,
+  tikeutkorean: 0x3137,
+  tikeutparenkorean: 0x3202,
+  tilde: 0x02DC,
+  tildebelowcmb: 0x0330,
+  tildecmb: 0x0303,
+  tildecomb: 0x0303,
+  tildedoublecmb: 0x0360,
+  tildeoperator: 0x223C,
+  tildeoverlaycmb: 0x0334,
+  tildeverticalcmb: 0x033E,
+  timescircle: 0x2297,
+  tipehahebrew: 0x0596,
+  tipehalefthebrew: 0x0596,
+  tippigurmukhi: 0x0A70,
+  titlocyrilliccmb: 0x0483,
+  tiwnarmenian: 0x057F,
+  tlinebelow: 0x1E6F,
+  tmonospace: 0xFF54,
+  toarmenian: 0x0569,
+  tohiragana: 0x3068,
+  tokatakana: 0x30C8,
+  tokatakanahalfwidth: 0xFF84,
+  tonebarextrahighmod: 0x02E5,
+  tonebarextralowmod: 0x02E9,
+  tonebarhighmod: 0x02E6,
+  tonebarlowmod: 0x02E8,
+  tonebarmidmod: 0x02E7,
+  tonefive: 0x01BD,
+  tonesix: 0x0185,
+  tonetwo: 0x01A8,
+  tonos: 0x0384,
+  tonsquare: 0x3327,
+  topatakthai: 0x0E0F,
+  tortoiseshellbracketleft: 0x3014,
+  tortoiseshellbracketleftsmall: 0xFE5D,
+  tortoiseshellbracketleftvertical: 0xFE39,
+  tortoiseshellbracketright: 0x3015,
+  tortoiseshellbracketrightsmall: 0xFE5E,
+  tortoiseshellbracketrightvertical: 0xFE3A,
+  totaothai: 0x0E15,
+  tpalatalhook: 0x01AB,
+  tparen: 0x24AF,
+  trademark: 0x2122,
+  trademarksans: 0xF8EA,
+  trademarkserif: 0xF6DB,
+  tretroflexhook: 0x0288,
+  triagdn: 0x25BC,
+  triaglf: 0x25C4,
+  triagrt: 0x25BA,
+  triagup: 0x25B2,
+  ts: 0x02A6,
+  tsadi: 0x05E6,
+  tsadidagesh: 0xFB46,
+  tsadidageshhebrew: 0xFB46,
+  tsadihebrew: 0x05E6,
+  tsecyrillic: 0x0446,
+  tsere: 0x05B5,
+  tsere12: 0x05B5,
+  tsere1e: 0x05B5,
+  tsere2b: 0x05B5,
+  tserehebrew: 0x05B5,
+  tserenarrowhebrew: 0x05B5,
+  tserequarterhebrew: 0x05B5,
+  tserewidehebrew: 0x05B5,
+  tshecyrillic: 0x045B,
+  tsuperior: 0xF6F3,
+  ttabengali: 0x099F,
+  ttadeva: 0x091F,
+  ttagujarati: 0x0A9F,
+  ttagurmukhi: 0x0A1F,
+  tteharabic: 0x0679,
+  ttehfinalarabic: 0xFB67,
+  ttehinitialarabic: 0xFB68,
+  ttehmedialarabic: 0xFB69,
+  tthabengali: 0x09A0,
+  tthadeva: 0x0920,
+  tthagujarati: 0x0AA0,
+  tthagurmukhi: 0x0A20,
+  tturned: 0x0287,
+  tuhiragana: 0x3064,
+  tukatakana: 0x30C4,
+  tukatakanahalfwidth: 0xFF82,
+  tusmallhiragana: 0x3063,
+  tusmallkatakana: 0x30C3,
+  tusmallkatakanahalfwidth: 0xFF6F,
+  twelvecircle: 0x246B,
+  twelveparen: 0x247F,
+  twelveperiod: 0x2493,
+  twelveroman: 0x217B,
+  twentycircle: 0x2473,
+  twentyhangzhou: 0x5344,
+  twentyparen: 0x2487,
+  twentyperiod: 0x249B,
+  two: 0x0032,
+  twoarabic: 0x0662,
+  twobengali: 0x09E8,
+  twocircle: 0x2461,
+  twocircleinversesansserif: 0x278B,
+  twodeva: 0x0968,
+  twodotenleader: 0x2025,
+  twodotleader: 0x2025,
+  twodotleadervertical: 0xFE30,
+  twogujarati: 0x0AE8,
+  twogurmukhi: 0x0A68,
+  twohackarabic: 0x0662,
+  twohangzhou: 0x3022,
+  twoideographicparen: 0x3221,
+  twoinferior: 0x2082,
+  twomonospace: 0xFF12,
+  twonumeratorbengali: 0x09F5,
+  twooldstyle: 0xF732,
+  twoparen: 0x2475,
+  twoperiod: 0x2489,
+  twopersian: 0x06F2,
+  tworoman: 0x2171,
+  twostroke: 0x01BB,
+  twosuperior: 0x00B2,
+  twothai: 0x0E52,
+  twothirds: 0x2154,
+  u: 0x0075,
+  uacute: 0x00FA,
+  ubar: 0x0289,
+  ubengali: 0x0989,
+  ubopomofo: 0x3128,
+  ubreve: 0x016D,
+  ucaron: 0x01D4,
+  ucircle: 0x24E4,
+  ucircumflex: 0x00FB,
+  ucircumflexbelow: 0x1E77,
+  ucyrillic: 0x0443,
+  udattadeva: 0x0951,
+  udblacute: 0x0171,
+  udblgrave: 0x0215,
+  udeva: 0x0909,
+  udieresis: 0x00FC,
+  udieresisacute: 0x01D8,
+  udieresisbelow: 0x1E73,
+  udieresiscaron: 0x01DA,
+  udieresiscyrillic: 0x04F1,
+  udieresisgrave: 0x01DC,
+  udieresismacron: 0x01D6,
+  udotbelow: 0x1EE5,
+  ugrave: 0x00F9,
+  ugujarati: 0x0A89,
+  ugurmukhi: 0x0A09,
+  uhiragana: 0x3046,
+  uhookabove: 0x1EE7,
+  uhorn: 0x01B0,
+  uhornacute: 0x1EE9,
+  uhorndotbelow: 0x1EF1,
+  uhorngrave: 0x1EEB,
+  uhornhookabove: 0x1EED,
+  uhorntilde: 0x1EEF,
+  uhungarumlaut: 0x0171,
+  uhungarumlautcyrillic: 0x04F3,
+  uinvertedbreve: 0x0217,
+  ukatakana: 0x30A6,
+  ukatakanahalfwidth: 0xFF73,
+  ukcyrillic: 0x0479,
+  ukorean: 0x315C,
+  umacron: 0x016B,
+  umacroncyrillic: 0x04EF,
+  umacrondieresis: 0x1E7B,
+  umatragurmukhi: 0x0A41,
+  umonospace: 0xFF55,
+  underscore: 0x005F,
+  underscoredbl: 0x2017,
+  underscoremonospace: 0xFF3F,
+  underscorevertical: 0xFE33,
+  underscorewavy: 0xFE4F,
+  union: 0x222A,
+  universal: 0x2200,
+  uogonek: 0x0173,
+  uparen: 0x24B0,
+  upblock: 0x2580,
+  upperdothebrew: 0x05C4,
+  upsilon: 0x03C5,
+  upsilondieresis: 0x03CB,
+  upsilondieresistonos: 0x03B0,
+  upsilonlatin: 0x028A,
+  upsilontonos: 0x03CD,
+  uptackbelowcmb: 0x031D,
+  uptackmod: 0x02D4,
+  uragurmukhi: 0x0A73,
+  uring: 0x016F,
+  ushortcyrillic: 0x045E,
+  usmallhiragana: 0x3045,
+  usmallkatakana: 0x30A5,
+  usmallkatakanahalfwidth: 0xFF69,
+  ustraightcyrillic: 0x04AF,
+  ustraightstrokecyrillic: 0x04B1,
+  utilde: 0x0169,
+  utildeacute: 0x1E79,
+  utildebelow: 0x1E75,
+  uubengali: 0x098A,
+  uudeva: 0x090A,
+  uugujarati: 0x0A8A,
+  uugurmukhi: 0x0A0A,
+  uumatragurmukhi: 0x0A42,
+  uuvowelsignbengali: 0x09C2,
+  uuvowelsigndeva: 0x0942,
+  uuvowelsigngujarati: 0x0AC2,
+  uvowelsignbengali: 0x09C1,
+  uvowelsigndeva: 0x0941,
+  uvowelsigngujarati: 0x0AC1,
+  v: 0x0076,
+  vadeva: 0x0935,
+  vagujarati: 0x0AB5,
+  vagurmukhi: 0x0A35,
+  vakatakana: 0x30F7,
+  vav: 0x05D5,
+  vavdagesh: 0xFB35,
+  vavdagesh65: 0xFB35,
+  vavdageshhebrew: 0xFB35,
+  vavhebrew: 0x05D5,
+  vavholam: 0xFB4B,
+  vavholamhebrew: 0xFB4B,
+  vavvavhebrew: 0x05F0,
+  vavyodhebrew: 0x05F1,
+  vcircle: 0x24E5,
+  vdotbelow: 0x1E7F,
+  vecyrillic: 0x0432,
+  veharabic: 0x06A4,
+  vehfinalarabic: 0xFB6B,
+  vehinitialarabic: 0xFB6C,
+  vehmedialarabic: 0xFB6D,
+  vekatakana: 0x30F9,
+  venus: 0x2640,
+  verticalbar: 0x007C,
+  verticallineabovecmb: 0x030D,
+  verticallinebelowcmb: 0x0329,
+  verticallinelowmod: 0x02CC,
+  verticallinemod: 0x02C8,
+  vewarmenian: 0x057E,
+  vhook: 0x028B,
+  vikatakana: 0x30F8,
+  viramabengali: 0x09CD,
+  viramadeva: 0x094D,
+  viramagujarati: 0x0ACD,
+  visargabengali: 0x0983,
+  visargadeva: 0x0903,
+  visargagujarati: 0x0A83,
+  vmonospace: 0xFF56,
+  voarmenian: 0x0578,
+  voicediterationhiragana: 0x309E,
+  voicediterationkatakana: 0x30FE,
+  voicedmarkkana: 0x309B,
+  voicedmarkkanahalfwidth: 0xFF9E,
+  vokatakana: 0x30FA,
+  vparen: 0x24B1,
+  vtilde: 0x1E7D,
+  vturned: 0x028C,
+  vuhiragana: 0x3094,
+  vukatakana: 0x30F4,
+  w: 0x0077,
+  wacute: 0x1E83,
+  waekorean: 0x3159,
+  wahiragana: 0x308F,
+  wakatakana: 0x30EF,
+  wakatakanahalfwidth: 0xFF9C,
+  wakorean: 0x3158,
+  wasmallhiragana: 0x308E,
+  wasmallkatakana: 0x30EE,
+  wattosquare: 0x3357,
+  wavedash: 0x301C,
+  wavyunderscorevertical: 0xFE34,
+  wawarabic: 0x0648,
+  wawfinalarabic: 0xFEEE,
+  wawhamzaabovearabic: 0x0624,
+  wawhamzaabovefinalarabic: 0xFE86,
+  wbsquare: 0x33DD,
+  wcircle: 0x24E6,
+  wcircumflex: 0x0175,
+  wdieresis: 0x1E85,
+  wdotaccent: 0x1E87,
+  wdotbelow: 0x1E89,
+  wehiragana: 0x3091,
+  weierstrass: 0x2118,
+  wekatakana: 0x30F1,
+  wekorean: 0x315E,
+  weokorean: 0x315D,
+  wgrave: 0x1E81,
+  whitebullet: 0x25E6,
+  whitecircle: 0x25CB,
+  whitecircleinverse: 0x25D9,
+  whitecornerbracketleft: 0x300E,
+  whitecornerbracketleftvertical: 0xFE43,
+  whitecornerbracketright: 0x300F,
+  whitecornerbracketrightvertical: 0xFE44,
+  whitediamond: 0x25C7,
+  whitediamondcontainingblacksmalldiamond: 0x25C8,
+  whitedownpointingsmalltriangle: 0x25BF,
+  whitedownpointingtriangle: 0x25BD,
+  whiteleftpointingsmalltriangle: 0x25C3,
+  whiteleftpointingtriangle: 0x25C1,
+  whitelenticularbracketleft: 0x3016,
+  whitelenticularbracketright: 0x3017,
+  whiterightpointingsmalltriangle: 0x25B9,
+  whiterightpointingtriangle: 0x25B7,
+  whitesmallsquare: 0x25AB,
+  whitesmilingface: 0x263A,
+  whitesquare: 0x25A1,
+  whitestar: 0x2606,
+  whitetelephone: 0x260F,
+  whitetortoiseshellbracketleft: 0x3018,
+  whitetortoiseshellbracketright: 0x3019,
+  whiteuppointingsmalltriangle: 0x25B5,
+  whiteuppointingtriangle: 0x25B3,
+  wihiragana: 0x3090,
+  wikatakana: 0x30F0,
+  wikorean: 0x315F,
+  wmonospace: 0xFF57,
+  wohiragana: 0x3092,
+  wokatakana: 0x30F2,
+  wokatakanahalfwidth: 0xFF66,
+  won: 0x20A9,
+  wonmonospace: 0xFFE6,
+  wowaenthai: 0x0E27,
+  wparen: 0x24B2,
+  wring: 0x1E98,
+  wsuperior: 0x02B7,
+  wturned: 0x028D,
+  wynn: 0x01BF,
+  x: 0x0078,
+  xabovecmb: 0x033D,
+  xbopomofo: 0x3112,
+  xcircle: 0x24E7,
+  xdieresis: 0x1E8D,
+  xdotaccent: 0x1E8B,
+  xeharmenian: 0x056D,
+  xi: 0x03BE,
+  xmonospace: 0xFF58,
+  xparen: 0x24B3,
+  xsuperior: 0x02E3,
+  y: 0x0079,
+  yaadosquare: 0x334E,
+  yabengali: 0x09AF,
+  yacute: 0x00FD,
+  yadeva: 0x092F,
+  yaekorean: 0x3152,
+  yagujarati: 0x0AAF,
+  yagurmukhi: 0x0A2F,
+  yahiragana: 0x3084,
+  yakatakana: 0x30E4,
+  yakatakanahalfwidth: 0xFF94,
+  yakorean: 0x3151,
+  yamakkanthai: 0x0E4E,
+  yasmallhiragana: 0x3083,
+  yasmallkatakana: 0x30E3,
+  yasmallkatakanahalfwidth: 0xFF6C,
+  yatcyrillic: 0x0463,
+  ycircle: 0x24E8,
+  ycircumflex: 0x0177,
+  ydieresis: 0x00FF,
+  ydotaccent: 0x1E8F,
+  ydotbelow: 0x1EF5,
+  yeharabic: 0x064A,
+  yehbarreearabic: 0x06D2,
+  yehbarreefinalarabic: 0xFBAF,
+  yehfinalarabic: 0xFEF2,
+  yehhamzaabovearabic: 0x0626,
+  yehhamzaabovefinalarabic: 0xFE8A,
+  yehhamzaaboveinitialarabic: 0xFE8B,
+  yehhamzaabovemedialarabic: 0xFE8C,
+  yehinitialarabic: 0xFEF3,
+  yehmedialarabic: 0xFEF4,
+  yehmeeminitialarabic: 0xFCDD,
+  yehmeemisolatedarabic: 0xFC58,
+  yehnoonfinalarabic: 0xFC94,
+  yehthreedotsbelowarabic: 0x06D1,
+  yekorean: 0x3156,
+  yen: 0x00A5,
+  yenmonospace: 0xFFE5,
+  yeokorean: 0x3155,
+  yeorinhieuhkorean: 0x3186,
+  yerahbenyomohebrew: 0x05AA,
+  yerahbenyomolefthebrew: 0x05AA,
+  yericyrillic: 0x044B,
+  yerudieresiscyrillic: 0x04F9,
+  yesieungkorean: 0x3181,
+  yesieungpansioskorean: 0x3183,
+  yesieungsioskorean: 0x3182,
+  yetivhebrew: 0x059A,
+  ygrave: 0x1EF3,
+  yhook: 0x01B4,
+  yhookabove: 0x1EF7,
+  yiarmenian: 0x0575,
+  yicyrillic: 0x0457,
+  yikorean: 0x3162,
+  yinyang: 0x262F,
+  yiwnarmenian: 0x0582,
+  ymonospace: 0xFF59,
+  yod: 0x05D9,
+  yoddagesh: 0xFB39,
+  yoddageshhebrew: 0xFB39,
+  yodhebrew: 0x05D9,
+  yodyodhebrew: 0x05F2,
+  yodyodpatahhebrew: 0xFB1F,
+  yohiragana: 0x3088,
+  yoikorean: 0x3189,
+  yokatakana: 0x30E8,
+  yokatakanahalfwidth: 0xFF96,
+  yokorean: 0x315B,
+  yosmallhiragana: 0x3087,
+  yosmallkatakana: 0x30E7,
+  yosmallkatakanahalfwidth: 0xFF6E,
+  yotgreek: 0x03F3,
+  yoyaekorean: 0x3188,
+  yoyakorean: 0x3187,
+  yoyakthai: 0x0E22,
+  yoyingthai: 0x0E0D,
+  yparen: 0x24B4,
+  ypogegrammeni: 0x037A,
+  ypogegrammenigreekcmb: 0x0345,
+  yr: 0x01A6,
+  yring: 0x1E99,
+  ysuperior: 0x02B8,
+  ytilde: 0x1EF9,
+  yturned: 0x028E,
+  yuhiragana: 0x3086,
+  yuikorean: 0x318C,
+  yukatakana: 0x30E6,
+  yukatakanahalfwidth: 0xFF95,
+  yukorean: 0x3160,
+  yusbigcyrillic: 0x046B,
+  yusbigiotifiedcyrillic: 0x046D,
+  yuslittlecyrillic: 0x0467,
+  yuslittleiotifiedcyrillic: 0x0469,
+  yusmallhiragana: 0x3085,
+  yusmallkatakana: 0x30E5,
+  yusmallkatakanahalfwidth: 0xFF6D,
+  yuyekorean: 0x318B,
+  yuyeokorean: 0x318A,
+  yyabengali: 0x09DF,
+  yyadeva: 0x095F,
+  z: 0x007A,
+  zaarmenian: 0x0566,
+  zacute: 0x017A,
+  zadeva: 0x095B,
+  zagurmukhi: 0x0A5B,
+  zaharabic: 0x0638,
+  zahfinalarabic: 0xFEC6,
+  zahinitialarabic: 0xFEC7,
+  zahiragana: 0x3056,
+  zahmedialarabic: 0xFEC8,
+  zainarabic: 0x0632,
+  zainfinalarabic: 0xFEB0,
+  zakatakana: 0x30B6,
+  zaqefgadolhebrew: 0x0595,
+  zaqefqatanhebrew: 0x0594,
+  zarqahebrew: 0x0598,
+  zayin: 0x05D6,
+  zayindagesh: 0xFB36,
+  zayindageshhebrew: 0xFB36,
+  zayinhebrew: 0x05D6,
+  zbopomofo: 0x3117,
+  zcaron: 0x017E,
+  zcircle: 0x24E9,
+  zcircumflex: 0x1E91,
+  zcurl: 0x0291,
+  zdot: 0x017C,
+  zdotaccent: 0x017C,
+  zdotbelow: 0x1E93,
+  zecyrillic: 0x0437,
+  zedescendercyrillic: 0x0499,
+  zedieresiscyrillic: 0x04DF,
+  zehiragana: 0x305C,
+  zekatakana: 0x30BC,
+  zero: 0x0030,
+  zeroarabic: 0x0660,
+  zerobengali: 0x09E6,
+  zerodeva: 0x0966,
+  zerogujarati: 0x0AE6,
+  zerogurmukhi: 0x0A66,
+  zerohackarabic: 0x0660,
+  zeroinferior: 0x2080,
+  zeromonospace: 0xFF10,
+  zerooldstyle: 0xF730,
+  zeropersian: 0x06F0,
+  zerosuperior: 0x2070,
+  zerothai: 0x0E50,
+  zerowidthjoiner: 0xFEFF,
+  zerowidthnonjoiner: 0x200C,
+  zerowidthspace: 0x200B,
+  zeta: 0x03B6,
+  zhbopomofo: 0x3113,
+  zhearmenian: 0x056A,
+  zhebrevecyrillic: 0x04C2,
+  zhecyrillic: 0x0436,
+  zhedescendercyrillic: 0x0497,
+  zhedieresiscyrillic: 0x04DD,
+  zihiragana: 0x3058,
+  zikatakana: 0x30B8,
+  zinorhebrew: 0x05AE,
+  zlinebelow: 0x1E95,
+  zmonospace: 0xFF5A,
+  zohiragana: 0x305E,
+  zokatakana: 0x30BE,
+  zparen: 0x24B5,
+  zretroflexhook: 0x0290,
+  zstroke: 0x01B6,
+  zuhiragana: 0x305A,
+  zukatakana: 0x30BA,
+  '.notdef': 0x0000
+};
+
+
+/* -*- Mode: Java; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/* vim: set shiftwidth=2 tabstop=2 autoindent cindent expandtab: */
+
+'use strict';
+
+var PDFImage = (function PDFImageClosure() {
+  /**
+   * Decode the image in the main thread if it supported. Resovles the promise
+   * when the image data is ready.
+   */
+  function handleImageData(handler, xref, res, image, promise) {
+    if (image instanceof JpegStream && image.isNativelyDecodable(xref, res)) {
+      // For natively supported jpegs send them to the main thread for decoding.
+      var dict = image.dict;
+      var colorSpace = dict.get('ColorSpace', 'CS');
+      colorSpace = ColorSpace.parse(colorSpace, xref, res);
+      var numComps = colorSpace.numComps;
+      handler.send('JpegDecode', [image.getIR(), numComps], function(message) {
+        var data = message.data;
+        var stream = new Stream(data, 0, data.length, image.dict);
+        promise.resolve(stream);
+      });
+    } else {
+      promise.resolve(image);
+    }
+  }
+  /**
+   * Decode and clamp a value. The formula is different from the spec because we
+   * don't decode to float range [0,1], we decode it in the [0,max] range.
+   */
+  function decodeAndClamp(value, addend, coefficient, max) {
+    value = addend + value * coefficient;
+    // Clamp the value to the range
+    return value < 0 ? 0 : value > max ? max : value;
+  }
+  function PDFImage(xref, res, image, inline, smask) {
+    this.image = image;
+    if (image.getParams) {
+      // JPX/JPEG2000 streams directly contain bits per component
+      // and color space mode information.
+      TODO('get params from actual stream');
+      // var bits = ...
+      // var colorspace = ...
+    }
+    // TODO cache rendered images?
+
+    var dict = image.dict;
+    this.width = dict.get('Width', 'W');
+    this.height = dict.get('Height', 'H');
+
+    if (this.width < 1 || this.height < 1)
+      error('Invalid image width: ' + this.width + ' or height: ' +
+            this.height);
+
+    this.interpolate = dict.get('Interpolate', 'I') || false;
+    this.imageMask = dict.get('ImageMask', 'IM') || false;
+
+    var bitsPerComponent = image.bitsPerComponent;
+    if (!bitsPerComponent) {
+      bitsPerComponent = dict.get('BitsPerComponent', 'BPC');
+      if (!bitsPerComponent) {
+        if (this.imageMask)
+          bitsPerComponent = 1;
+        else
+          error('Bits per component missing in image: ' + this.imageMask);
+      }
+    }
+    this.bpc = bitsPerComponent;
+
+    if (!this.imageMask) {
+      var colorSpace = dict.get('ColorSpace', 'CS');
+      if (!colorSpace) {
+        TODO('JPX images (which don"t require color spaces');
+        colorSpace = new Name('DeviceRGB');
+      }
+      this.colorSpace = ColorSpace.parse(colorSpace, xref, res);
+      this.numComps = this.colorSpace.numComps;
+    }
+
+    this.decode = dict.get('Decode', 'D');
+    this.needsDecode = false;
+    if (this.decode && this.colorSpace &&
+        !this.colorSpace.isDefaultDecode(this.decode)) {
+      this.needsDecode = true;
+      // Do some preprocessing to avoid more math.
+      var max = (1 << bitsPerComponent) - 1;
+      this.decodeCoefficients = [];
+      this.decodeAddends = [];
+      for (var i = 0, j = 0; i < this.decode.length; i += 2, ++j) {
+        var dmin = this.decode[i];
+        var dmax = this.decode[i + 1];
+        this.decodeCoefficients[j] = dmax - dmin;
+        this.decodeAddends[j] = max * dmin;
+      }
+    }
+
+    var mask = dict.get('Mask');
+
+    if (mask) {
+      TODO('masked images');
+    } else if (smask) {
+      this.smask = new PDFImage(xref, res, smask, false);
+    }
+  }
+  /**
+   * Handles processing of image data and calls the callback with an argument
+   * of a PDFImage when the image is ready to be used.
+   */
+  PDFImage.buildImage = function PDFImage_buildImage(callback, handler, xref,
+                                                     res, image, inline) {
+    var imageDataPromise = new Promise();
+    var smaskPromise = new Promise();
+    // The image data and smask data may not be ready yet, wait till both are
+    // resolved.
+    Promise.all([imageDataPromise, smaskPromise]).then(function(results) {
+      var imageData = results[0], smaskData = results[1];
+      var image = new PDFImage(xref, res, imageData, inline, smaskData);
+      callback(image);
+    });
+
+    handleImageData(handler, xref, res, image, imageDataPromise);
+
+    var smask = image.dict.get('SMask');
+    if (smask)
+      handleImageData(handler, xref, res, smask, smaskPromise);
+    else
+      smaskPromise.resolve(null);
+  };
+
+  /**
+   * Resize an image using the nearest neighbor algorithm.  Currently only
+   * supports one and three component images.
+   * @param {TypedArray} pixels The original image with one component.
+   * @param {Number} bpc Number of bits per component.
+   * @param {Number} components Number of color components, 1 or 3 is supported.
+   * @param {Number} w1 Original width.
+   * @param {Number} h1 Original height.
+   * @param {Number} w2 New width.
+   * @param {Number} h2 New height.
+   * @return {TypedArray} Resized image data.
+   */
+  PDFImage.resize = function PDFImage_resize(pixels, bpc, components,
+                                             w1, h1, w2, h2) {
+    var length = w2 * h2 * components;
+    var temp = bpc <= 8 ? new Uint8Array(length) :
+        bpc <= 16 ? new Uint16Array(length) : new Uint32Array(length);
+    var xRatio = w1 / w2;
+    var yRatio = h1 / h2;
+    var px, py, newIndex, oldIndex;
+    for (var i = 0; i < h2; i++) {
+      for (var j = 0; j < w2; j++) {
+        px = Math.floor(j * xRatio);
+        py = Math.floor(i * yRatio);
+        newIndex = (i * w2) + j;
+        oldIndex = ((py * w1) + px);
+        if (components === 1) {
+          temp[newIndex] = pixels[oldIndex];
+        } else if (components === 3) {
+          newIndex *= 3;
+          oldIndex *= 3;
+          temp[newIndex] = pixels[oldIndex];
+          temp[newIndex + 1] = pixels[oldIndex + 1];
+          temp[newIndex + 2] = pixels[oldIndex + 2];
+        }
+      }
+    }
+    return temp;
+  };
+
+  PDFImage.prototype = {
+    get drawWidth() {
+      if (!this.smask)
+        return this.width;
+      return Math.max(this.width, this.smask.width);
+    },
+    get drawHeight() {
+      if (!this.smask)
+        return this.height;
+      return Math.max(this.height, this.smask.height);
+    },
+    getComponents: function PDFImage_getComponents(buffer) {
+      var bpc = this.bpc;
+      var needsDecode = this.needsDecode;
+      var decodeMap = this.decode;
+
+      // This image doesn't require any extra work.
+      if (bpc == 8 && !needsDecode)
+        return buffer;
+
+      var bufferLength = buffer.length;
+      var width = this.width;
+      var height = this.height;
+      var numComps = this.numComps;
+
+      var length = width * height * numComps;
+      var bufferPos = 0;
+      var output = bpc <= 8 ? new Uint8Array(length) :
+        bpc <= 16 ? new Uint16Array(length) : new Uint32Array(length);
+      var rowComps = width * numComps;
+      var decodeAddends, decodeCoefficients;
+      if (needsDecode) {
+        decodeAddends = this.decodeAddends;
+        decodeCoefficients = this.decodeCoefficients;
+      }
+      var max = (1 << bpc) - 1;
+
+      if (bpc == 8) {
+        // Optimization for reading 8 bpc images that have a decode.
+        for (var i = 0, ii = length; i < ii; ++i) {
+          var compIndex = i % numComps;
+          var value = buffer[i];
+          value = decodeAndClamp(value, decodeAddends[compIndex],
+                          decodeCoefficients[compIndex], max);
+          output[i] = value;
+        }
+      } else if (bpc == 1) {
+        // Optimization for reading 1 bpc images.
+        var valueZero = 0, valueOne = 1;
+        if (decodeMap) {
+          valueZero = decodeMap[0] ? 1 : 0;
+          valueOne = decodeMap[1] ? 1 : 0;
+        }
+        var mask = 0;
+        var buf = 0;
+
+        for (var i = 0, ii = length; i < ii; ++i) {
+          if (i % rowComps == 0) {
+            mask = 0;
+            buf = 0;
+          } else {
+            mask >>= 1;
+          }
+
+          if (mask <= 0) {
+            buf = buffer[bufferPos++];
+            mask = 128;
+          }
+
+          output[i] = !(buf & mask) ? valueZero : valueOne;
+        }
+      } else {
+        // The general case that handles all other bpc values.
+        var bits = 0, buf = 0;
+        for (var i = 0, ii = length; i < ii; ++i) {
+          if (i % rowComps == 0) {
+            buf = 0;
+            bits = 0;
+          }
+
+          while (bits < bpc) {
+            buf = (buf << 8) | buffer[bufferPos++];
+            bits += 8;
+          }
+
+          var remainingBits = bits - bpc;
+          var value = buf >> remainingBits;
+          if (needsDecode) {
+            var compIndex = i % numComps;
+            value = decodeAndClamp(value, decodeAddends[compIndex],
+                            decodeCoefficients[compIndex], max);
+          }
+          output[i] = value;
+          buf = buf & ((1 << remainingBits) - 1);
+          bits = remainingBits;
+        }
+      }
+      return output;
+    },
+    getOpacity: function PDFImage_getOpacity(width, height) {
+      var smask = this.smask;
+      var originalWidth = this.width;
+      var originalHeight = this.height;
+      var buf;
+
+      if (smask) {
+        var sw = smask.width;
+        var sh = smask.height;
+        buf = new Uint8Array(sw * sh);
+        smask.fillGrayBuffer(buf);
+        if (sw != width || sh != height)
+          buf = PDFImage.resize(buf, smask.bps, 1, sw, sh, width, height);
+      } else {
+        buf = new Uint8Array(width * height);
+        for (var i = 0, ii = width * height; i < ii; ++i)
+          buf[i] = 255;
+      }
+      return buf;
+    },
+    applyStencilMask: function PDFImage_applyStencilMask(buffer,
+                                                         inverseDecode) {
+      var width = this.width, height = this.height;
+      var bitStrideLength = (width + 7) >> 3;
+      var imgArray = this.getImageBytes(bitStrideLength * height);
+      var imgArrayPos = 0;
+      var i, j, mask, buf;
+      // removing making non-masked pixels transparent
+      var bufferPos = 3; // alpha component offset
+      for (i = 0; i < height; i++) {
+        mask = 0;
+        for (j = 0; j < width; j++) {
+          if (!mask) {
+            buf = imgArray[imgArrayPos++];
+            mask = 128;
+          }
+          if (!(buf & mask) == inverseDecode) {
+            buffer[bufferPos] = 0;
+          }
+          bufferPos += 4;
+          mask >>= 1;
+        }
+      }
+    },
+    fillRgbaBuffer: function PDFImage_fillRgbaBuffer(buffer, width, height) {
+      var numComps = this.numComps;
+      var originalWidth = this.width;
+      var originalHeight = this.height;
+      var bpc = this.bpc;
+
+      // rows start at byte boundary;
+      var rowBytes = (originalWidth * numComps * bpc + 7) >> 3;
+      var imgArray = this.getImageBytes(originalHeight * rowBytes);
+
+      var comps = this.colorSpace.getRgbBuffer(
+        this.getComponents(imgArray), bpc);
+      if (originalWidth != width || originalHeight != height)
+        comps = PDFImage.resize(comps, this.bpc, 3, originalWidth,
+                                originalHeight, width, height);
+      var compsPos = 0;
+      var opacity = this.getOpacity(width, height);
+      var opacityPos = 0;
+      var length = width * height * 4;
+
+      for (var i = 0; i < length; i += 4) {
+        buffer[i] = comps[compsPos++];
+        buffer[i + 1] = comps[compsPos++];
+        buffer[i + 2] = comps[compsPos++];
+        buffer[i + 3] = opacity[opacityPos++];
+      }
+    },
+    fillGrayBuffer: function PDFImage_fillGrayBuffer(buffer) {
+      var numComps = this.numComps;
+      if (numComps != 1)
+        error('Reading gray scale from a color image: ' + numComps);
+
+      var width = this.width;
+      var height = this.height;
+      var bpc = this.bpc;
+
+      // rows start at byte boundary;
+      var rowBytes = (width * numComps * bpc + 7) >> 3;
+      var imgArray = this.getImageBytes(height * rowBytes);
+
+      var comps = this.getComponents(imgArray);
+      var length = width * height;
+      // we aren't using a colorspace so we need to scale the value
+      var scale = 255 / ((1 << bpc) - 1);
+      for (var i = 0; i < length; ++i)
+        buffer[i] = (scale * comps[i]) | 0;
+    },
+    getImageBytes: function PDFImage_getImageBytes(length) {
+      this.image.reset();
+      return this.image.getBytes(length);
+    }
+  };
+  return PDFImage;
+})();
+
+function loadJpegStream(id, imageData, objs) {
+  var img = new Image();
+  img.onload = (function loadJpegStream_onloadClosure() {
+    objs.resolve(id, img);
+  });
+  img.src = 'data:image/jpeg;base64,' + PdfJS_window.window.btoa(imageData);
+}
+
+
+/* -*- Mode: Java; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/* vim: set shiftwidth=2 tabstop=2 autoindent cindent expandtab: */
+
+'use strict';
+
+// The Metrics object contains glyph widths (in glyph space units).
+// As per PDF spec, for most fonts (Type 3 being an exception) a glyph
+// space unit corresponds to 1/1000th of text space unit.
+var Metrics = {
+  'Courier': 600,
+  'Courier-Bold': 600,
+  'Courier-BoldOblique': 600,
+  'Courier-Oblique': 600,
+  'Helvetica' : {
+    'space': 278,
+    'exclam': 278,
+    'quotedbl': 355,
+    'numbersign': 556,
+    'dollar': 556,
+    'percent': 889,
+    'ampersand': 667,
+    'quoteright': 222,
+    'parenleft': 333,
+    'parenright': 333,
+    'asterisk': 389,
+    'plus': 584,
+    'comma': 278,
+    'hyphen': 333,
+    'period': 278,
+    'slash': 278,
+    'zero': 556,
+    'one': 556,
+    'two': 556,
+    'three': 556,
+    'four': 556,
+    'five': 556,
+    'six': 556,
+    'seven': 556,
+    'eight': 556,
+    'nine': 556,
+    'colon': 278,
+    'semicolon': 278,
+    'less': 584,
+    'equal': 584,
+    'greater': 584,
+    'question': 556,
+    'at': 1015,
+    'A': 667,
+    'B': 667,
+    'C': 722,
+    'D': 722,
+    'E': 667,
+    'F': 611,
+    'G': 778,
+    'H': 722,
+    'I': 278,
+    'J': 500,
+    'K': 667,
+    'L': 556,
+    'M': 833,
+    'N': 722,
+    'O': 778,
+    'P': 667,
+    'Q': 778,
+    'R': 722,
+    'S': 667,
+    'T': 611,
+    'U': 722,
+    'V': 667,
+    'W': 944,
+    'X': 667,
+    'Y': 667,
+    'Z': 611,
+    'bracketleft': 278,
+    'backslash': 278,
+    'bracketright': 278,
+    'asciicircum': 469,
+    'underscore': 556,
+    'quoteleft': 222,
+    'a': 556,
+    'b': 556,
+    'c': 500,
+    'd': 556,
+    'e': 556,
+    'f': 278,
+    'g': 556,
+    'h': 556,
+    'i': 222,
+    'j': 222,
+    'k': 500,
+    'l': 222,
+    'm': 833,
+    'n': 556,
+    'o': 556,
+    'p': 556,
+    'q': 556,
+    'r': 333,
+    's': 500,
+    't': 278,
+    'u': 556,
+    'v': 500,
+    'w': 722,
+    'x': 500,
+    'y': 500,
+    'z': 500,
+    'braceleft': 334,
+    'bar': 260,
+    'braceright': 334,
+    'asciitilde': 584,
+    'exclamdown': 333,
+    'cent': 556,
+    'sterling': 556,
+    'fraction': 167,
+    'yen': 556,
+    'florin': 556,
+    'section': 556,
+    'currency': 556,
+    'quotesingle': 191,
+    'quotedblleft': 333,
+    'guillemotleft': 556,
+    'guilsinglleft': 333,
+    'guilsinglright': 333,
+    'fi': 500,
+    'fl': 500,
+    'endash': 556,
+    'dagger': 556,
+    'daggerdbl': 556,
+    'periodcentered': 278,
+    'paragraph': 537,
+    'bullet': 350,
+    'quotesinglbase': 222,
+    'quotedblbase': 333,
+    'quotedblright': 333,
+    'guillemotright': 556,
+    'ellipsis': 1000,
+    'perthousand': 1000,
+    'questiondown': 611,
+    'grave': 333,
+    'acute': 333,
+    'circumflex': 333,
+    'tilde': 333,
+    'macron': 333,
+    'breve': 333,
+    'dotaccent': 333,
+    'dieresis': 333,
+    'ring': 333,
+    'cedilla': 333,
+    'hungarumlaut': 333,
+    'ogonek': 333,
+    'caron': 333,
+    'emdash': 1000,
+    'AE': 1000,
+    'ordfeminine': 370,
+    'Lslash': 556,
+    'Oslash': 778,
+    'OE': 1000,
+    'ordmasculine': 365,
+    'ae': 889,
+    'dotlessi': 278,
+    'lslash': 222,
+    'oslash': 611,
+    'oe': 944,
+    'germandbls': 611,
+    'Idieresis': 278,
+    'eacute': 556,
+    'abreve': 556,
+    'uhungarumlaut': 556,
+    'ecaron': 556,
+    'Ydieresis': 667,
+    'divide': 584,
+    'Yacute': 667,
+    'Acircumflex': 667,
+    'aacute': 556,
+    'Ucircumflex': 722,
+    'yacute': 500,
+    'scommaaccent': 500,
+    'ecircumflex': 556,
+    'Uring': 722,
+    'Udieresis': 722,
+    'aogonek': 556,
+    'Uacute': 722,
+    'uogonek': 556,
+    'Edieresis': 667,
+    'Dcroat': 722,
+    'commaaccent': 250,
+    'copyright': 737,
+    'Emacron': 667,
+    'ccaron': 500,
+    'aring': 556,
+    'Ncommaaccent': 722,
+    'lacute': 222,
+    'agrave': 556,
+    'Tcommaaccent': 611,
+    'Cacute': 722,
+    'atilde': 556,
+    'Edotaccent': 667,
+    'scaron': 500,
+    'scedilla': 500,
+    'iacute': 278,
+    'lozenge': 471,
+    'Rcaron': 722,
+    'Gcommaaccent': 778,
+    'ucircumflex': 556,
+    'acircumflex': 556,
+    'Amacron': 667,
+    'rcaron': 333,
+    'ccedilla': 500,
+    'Zdotaccent': 611,
+    'Thorn': 667,
+    'Omacron': 778,
+    'Racute': 722,
+    'Sacute': 667,
+    'dcaron': 643,
+    'Umacron': 722,
+    'uring': 556,
+    'threesuperior': 333,
+    'Ograve': 778,
+    'Agrave': 667,
+    'Abreve': 667,
+    'multiply': 584,
+    'uacute': 556,
+    'Tcaron': 611,
+    'partialdiff': 476,
+    'ydieresis': 500,
+    'Nacute': 722,
+    'icircumflex': 278,
+    'Ecircumflex': 667,
+    'adieresis': 556,
+    'edieresis': 556,
+    'cacute': 500,
+    'nacute': 556,
+    'umacron': 556,
+    'Ncaron': 722,
+    'Iacute': 278,
+    'plusminus': 584,
+    'brokenbar': 260,
+    'registered': 737,
+    'Gbreve': 778,
+    'Idotaccent': 278,
+    'summation': 600,
+    'Egrave': 667,
+    'racute': 333,
+    'omacron': 556,
+    'Zacute': 611,
+    'Zcaron': 611,
+    'greaterequal': 549,
+    'Eth': 722,
+    'Ccedilla': 722,
+    'lcommaaccent': 222,
+    'tcaron': 317,
+    'eogonek': 556,
+    'Uogonek': 722,
+    'Aacute': 667,
+    'Adieresis': 667,
+    'egrave': 556,
+    'zacute': 500,
+    'iogonek': 222,
+    'Oacute': 778,
+    'oacute': 556,
+    'amacron': 556,
+    'sacute': 500,
+    'idieresis': 278,
+    'Ocircumflex': 778,
+    'Ugrave': 722,
+    'Delta': 612,
+    'thorn': 556,
+    'twosuperior': 333,
+    'Odieresis': 778,
+    'mu': 556,
+    'igrave': 278,
+    'ohungarumlaut': 556,
+    'Eogonek': 667,
+    'dcroat': 556,
+    'threequarters': 834,
+    'Scedilla': 667,
+    'lcaron': 299,
+    'Kcommaaccent': 667,
+    'Lacute': 556,
+    'trademark': 1000,
+    'edotaccent': 556,
+    'Igrave': 278,
+    'Imacron': 278,
+    'Lcaron': 556,
+    'onehalf': 834,
+    'lessequal': 549,
+    'ocircumflex': 556,
+    'ntilde': 556,
+    'Uhungarumlaut': 722,
+    'Eacute': 667,
+    'emacron': 556,
+    'gbreve': 556,
+    'onequarter': 834,
+    'Scaron': 667,
+    'Scommaaccent': 667,
+    'Ohungarumlaut': 778,
+    'degree': 400,
+    'ograve': 556,
+    'Ccaron': 722,
+    'ugrave': 556,
+    'radical': 453,
+    'Dcaron': 722,
+    'rcommaaccent': 333,
+    'Ntilde': 722,
+    'otilde': 556,
+    'Rcommaaccent': 722,
+    'Lcommaaccent': 556,
+    'Atilde': 667,
+    'Aogonek': 667,
+    'Aring': 667,
+    'Otilde': 778,
+    'zdotaccent': 500,
+    'Ecaron': 667,
+    'Iogonek': 278,
+    'kcommaaccent': 500,
+    'minus': 584,
+    'Icircumflex': 278,
+    'ncaron': 556,
+    'tcommaaccent': 278,
+    'logicalnot': 584,
+    'odieresis': 556,
+    'udieresis': 556,
+    'notequal': 549,
+    'gcommaaccent': 556,
+    'eth': 556,
+    'zcaron': 500,
+    'ncommaaccent': 556,
+    'onesuperior': 333,
+    'imacron': 278,
+    'Euro': 556
+  },
+  'Helvetica-Bold': {
+    'space': 278,
+    'exclam': 333,
+    'quotedbl': 474,
+    'numbersign': 556,
+    'dollar': 556,
+    'percent': 889,
+    'ampersand': 722,
+    'quoteright': 278,
+    'parenleft': 333,
+    'parenright': 333,
+    'asterisk': 389,
+    'plus': 584,
+    'comma': 278,
+    'hyphen': 333,
+    'period': 278,
+    'slash': 278,
+    'zero': 556,
+    'one': 556,
+    'two': 556,
+    'three': 556,
+    'four': 556,
+    'five': 556,
+    'six': 556,
+    'seven': 556,
+    'eight': 556,
+    'nine': 556,
+    'colon': 333,
+    'semicolon': 333,
+    'less': 584,
+    'equal': 584,
+    'greater': 584,
+    'question': 611,
+    'at': 975,
+    'A': 722,
+    'B': 722,
+    'C': 722,
+    'D': 722,
+    'E': 667,
+    'F': 611,
+    'G': 778,
+    'H': 722,
+    'I': 278,
+    'J': 556,
+    'K': 722,
+    'L': 611,
+    'M': 833,
+    'N': 722,
+    'O': 778,
+    'P': 667,
+    'Q': 778,
+    'R': 722,
+    'S': 667,
+    'T': 611,
+    'U': 722,
+    'V': 667,
+    'W': 944,
+    'X': 667,
+    'Y': 667,
+    'Z': 611,
+    'bracketleft': 333,
+    'backslash': 278,
+    'bracketright': 333,
+    'asciicircum': 584,
+    'underscore': 556,
+    'quoteleft': 278,
+    'a': 556,
+    'b': 611,
+    'c': 556,
+    'd': 611,
+    'e': 556,
+    'f': 333,
+    'g': 611,
+    'h': 611,
+    'i': 278,
+    'j': 278,
+    'k': 556,
+    'l': 278,
+    'm': 889,
+    'n': 611,
+    'o': 611,
+    'p': 611,
+    'q': 611,
+    'r': 389,
+    's': 556,
+    't': 333,
+    'u': 611,
+    'v': 556,
+    'w': 778,
+    'x': 556,
+    'y': 556,
+    'z': 500,
+    'braceleft': 389,
+    'bar': 280,
+    'braceright': 389,
+    'asciitilde': 584,
+    'exclamdown': 333,
+    'cent': 556,
+    'sterling': 556,
+    'fraction': 167,
+    'yen': 556,
+    'florin': 556,
+    'section': 556,
+    'currency': 556,
+    'quotesingle': 238,
+    'quotedblleft': 500,
+    'guillemotleft': 556,
+    'guilsinglleft': 333,
+    'guilsinglright': 333,
+    'fi': 611,
+    'fl': 611,
+    'endash': 556,
+    'dagger': 556,
+    'daggerdbl': 556,
+    'periodcentered': 278,
+    'paragraph': 556,
+    'bullet': 350,
+    'quotesinglbase': 278,
+    'quotedblbase': 500,
+    'quotedblright': 500,
+    'guillemotright': 556,
+    'ellipsis': 1000,
+    'perthousand': 1000,
+    'questiondown': 611,
+    'grave': 333,
+    'acute': 333,
+    'circumflex': 333,
+    'tilde': 333,
+    'macron': 333,
+    'breve': 333,
+    'dotaccent': 333,
+    'dieresis': 333,
+    'ring': 333,
+    'cedilla': 333,
+    'hungarumlaut': 333,
+    'ogonek': 333,
+    'caron': 333,
+    'emdash': 1000,
+    'AE': 1000,
+    'ordfeminine': 370,
+    'Lslash': 611,
+    'Oslash': 778,
+    'OE': 1000,
+    'ordmasculine': 365,
+    'ae': 889,
+    'dotlessi': 278,
+    'lslash': 278,
+    'oslash': 611,
+    'oe': 944,
+    'germandbls': 611,
+    'Idieresis': 278,
+    'eacute': 556,
+    'abreve': 556,
+    'uhungarumlaut': 611,
+    'ecaron': 556,
+    'Ydieresis': 667,
+    'divide': 584,
+    'Yacute': 667,
+    'Acircumflex': 722,
+    'aacute': 556,
+    'Ucircumflex': 722,
+    'yacute': 556,
+    'scommaaccent': 556,
+    'ecircumflex': 556,
+    'Uring': 722,
+    'Udieresis': 722,
+    'aogonek': 556,
+    'Uacute': 722,
+    'uogonek': 611,
+    'Edieresis': 667,
+    'Dcroat': 722,
+    'commaaccent': 250,
+    'copyright': 737,
+    'Emacron': 667,
+    'ccaron': 556,
+    'aring': 556,
+    'Ncommaaccent': 722,
+    'lacute': 278,
+    'agrave': 556,
+    'Tcommaaccent': 611,
+    'Cacute': 722,
+    'atilde': 556,
+    'Edotaccent': 667,
+    'scaron': 556,
+    'scedilla': 556,
+    'iacute': 278,
+    'lozenge': 494,
+    'Rcaron': 722,
+    'Gcommaaccent': 778,
+    'ucircumflex': 611,
+    'acircumflex': 556,
+    'Amacron': 722,
+    'rcaron': 389,
+    'ccedilla': 556,
+    'Zdotaccent': 611,
+    'Thorn': 667,
+    'Omacron': 778,
+    'Racute': 722,
+    'Sacute': 667,
+    'dcaron': 743,
+    'Umacron': 722,
+    'uring': 611,
+    'threesuperior': 333,
+    'Ograve': 778,
+    'Agrave': 722,
+    'Abreve': 722,
+    'multiply': 584,
+    'uacute': 611,
+    'Tcaron': 611,
+    'partialdiff': 494,
+    'ydieresis': 556,
+    'Nacute': 722,
+    'icircumflex': 278,
+    'Ecircumflex': 667,
+    'adieresis': 556,
+    'edieresis': 556,
+    'cacute': 556,
+    'nacute': 611,
+    'umacron': 611,
+    'Ncaron': 722,
+    'Iacute': 278,
+    'plusminus': 584,
+    'brokenbar': 280,
+    'registered': 737,
+    'Gbreve': 778,
+    'Idotaccent': 278,
+    'summation': 600,
+    'Egrave': 667,
+    'racute': 389,
+    'omacron': 611,
+    'Zacute': 611,
+    'Zcaron': 611,
+    'greaterequal': 549,
+    'Eth': 722,
+    'Ccedilla': 722,
+    'lcommaaccent': 278,
+    'tcaron': 389,
+    'eogonek': 556,
+    'Uogonek': 722,
+    'Aacute': 722,
+    'Adieresis': 722,
+    'egrave': 556,
+    'zacute': 500,
+    'iogonek': 278,
+    'Oacute': 778,
+    'oacute': 611,
+    'amacron': 556,
+    'sacute': 556,
+    'idieresis': 278,
+    'Ocircumflex': 778,
+    'Ugrave': 722,
+    'Delta': 612,
+    'thorn': 611,
+    'twosuperior': 333,
+    'Odieresis': 778,
+    'mu': 611,
+    'igrave': 278,
+    'ohungarumlaut': 611,
+    'Eogonek': 667,
+    'dcroat': 611,
+    'threequarters': 834,
+    'Scedilla': 667,
+    'lcaron': 400,
+    'Kcommaaccent': 722,
+    'Lacute': 611,
+    'trademark': 1000,
+    'edotaccent': 556,
+    'Igrave': 278,
+    'Imacron': 278,
+    'Lcaron': 611,
+    'onehalf': 834,
+    'lessequal': 549,
+    'ocircumflex': 611,
+    'ntilde': 611,
+    'Uhungarumlaut': 722,
+    'Eacute': 667,
+    'emacron': 556,
+    'gbreve': 611,
+    'onequarter': 834,
+    'Scaron': 667,
+    'Scommaaccent': 667,
+    'Ohungarumlaut': 778,
+    'degree': 400,
+    'ograve': 611,
+    'Ccaron': 722,
+    'ugrave': 611,
+    'radical': 549,
+    'Dcaron': 722,
+    'rcommaaccent': 389,
+    'Ntilde': 722,
+    'otilde': 611,
+    'Rcommaaccent': 722,
+    'Lcommaaccent': 611,
+    'Atilde': 722,
+    'Aogonek': 722,
+    'Aring': 722,
+    'Otilde': 778,
+    'zdotaccent': 500,
+    'Ecaron': 667,
+    'Iogonek': 278,
+    'kcommaaccent': 556,
+    'minus': 584,
+    'Icircumflex': 278,
+    'ncaron': 611,
+    'tcommaaccent': 333,
+    'logicalnot': 584,
+    'odieresis': 611,
+    'udieresis': 611,
+    'notequal': 549,
+    'gcommaaccent': 611,
+    'eth': 611,
+    'zcaron': 500,
+    'ncommaaccent': 611,
+    'onesuperior': 333,
+    'imacron': 278,
+    'Euro': 556
+  },
+  'Helvetica-BoldOblique': {
+    'space': 278,
+    'exclam': 333,
+    'quotedbl': 474,
+    'numbersign': 556,
+    'dollar': 556,
+    'percent': 889,
+    'ampersand': 722,
+    'quoteright': 278,
+    'parenleft': 333,
+    'parenright': 333,
+    'asterisk': 389,
+    'plus': 584,
+    'comma': 278,
+    'hyphen': 333,
+    'period': 278,
+    'slash': 278,
+    'zero': 556,
+    'one': 556,
+    'two': 556,
+    'three': 556,
+    'four': 556,
+    'five': 556,
+    'six': 556,
+    'seven': 556,
+    'eight': 556,
+    'nine': 556,
+    'colon': 333,
+    'semicolon': 333,
+    'less': 584,
+    'equal': 584,
+    'greater': 584,
+    'question': 611,
+    'at': 975,
+    'A': 722,
+    'B': 722,
+    'C': 722,
+    'D': 722,
+    'E': 667,
+    'F': 611,
+    'G': 778,
+    'H': 722,
+    'I': 278,
+    'J': 556,
+    'K': 722,
+    'L': 611,
+    'M': 833,
+    'N': 722,
+    'O': 778,
+    'P': 667,
+    'Q': 778,
+    'R': 722,
+    'S': 667,
+    'T': 611,
+    'U': 722,
+    'V': 667,
+    'W': 944,
+    'X': 667,
+    'Y': 667,
+    'Z': 611,
+    'bracketleft': 333,
+    'backslash': 278,
+    'bracketright': 333,
+    'asciicircum': 584,
+    'underscore': 556,
+    'quoteleft': 278,
+    'a': 556,
+    'b': 611,
+    'c': 556,
+    'd': 611,
+    'e': 556,
+    'f': 333,
+    'g': 611,
+    'h': 611,
+    'i': 278,
+    'j': 278,
+    'k': 556,
+    'l': 278,
+    'm': 889,
+    'n': 611,
+    'o': 611,
+    'p': 611,
+    'q': 611,
+    'r': 389,
+    's': 556,
+    't': 333,
+    'u': 611,
+    'v': 556,
+    'w': 778,
+    'x': 556,
+    'y': 556,
+    'z': 500,
+    'braceleft': 389,
+    'bar': 280,
+    'braceright': 389,
+    'asciitilde': 584,
+    'exclamdown': 333,
+    'cent': 556,
+    'sterling': 556,
+    'fraction': 167,
+    'yen': 556,
+    'florin': 556,
+    'section': 556,
+    'currency': 556,
+    'quotesingle': 238,
+    'quotedblleft': 500,
+    'guillemotleft': 556,
+    'guilsinglleft': 333,
+    'guilsinglright': 333,
+    'fi': 611,
+    'fl': 611,
+    'endash': 556,
+    'dagger': 556,
+    'daggerdbl': 556,
+    'periodcentered': 278,
+    'paragraph': 556,
+    'bullet': 350,
+    'quotesinglbase': 278,
+    'quotedblbase': 500,
+    'quotedblright': 500,
+    'guillemotright': 556,
+    'ellipsis': 1000,
+    'perthousand': 1000,
+    'questiondown': 611,
+    'grave': 333,
+    'acute': 333,
+    'circumflex': 333,
+    'tilde': 333,
+    'macron': 333,
+    'breve': 333,
+    'dotaccent': 333,
+    'dieresis': 333,
+    'ring': 333,
+    'cedilla': 333,
+    'hungarumlaut': 333,
+    'ogonek': 333,
+    'caron': 333,
+    'emdash': 1000,
+    'AE': 1000,
+    'ordfeminine': 370,
+    'Lslash': 611,
+    'Oslash': 778,
+    'OE': 1000,
+    'ordmasculine': 365,
+    'ae': 889,
+    'dotlessi': 278,
+    'lslash': 278,
+    'oslash': 611,
+    'oe': 944,
+    'germandbls': 611,
+    'Idieresis': 278,
+    'eacute': 556,
+    'abreve': 556,
+    'uhungarumlaut': 611,
+    'ecaron': 556,
+    'Ydieresis': 667,
+    'divide': 584,
+    'Yacute': 667,
+    'Acircumflex': 722,
+    'aacute': 556,
+    'Ucircumflex': 722,
+    'yacute': 556,
+    'scommaaccent': 556,
+    'ecircumflex': 556,
+    'Uring': 722,
+    'Udieresis': 722,
+    'aogonek': 556,
+    'Uacute': 722,
+    'uogonek': 611,
+    'Edieresis': 667,
+    'Dcroat': 722,
+    'commaaccent': 250,
+    'copyright': 737,
+    'Emacron': 667,
+    'ccaron': 556,
+    'aring': 556,
+    'Ncommaaccent': 722,
+    'lacute': 278,
+    'agrave': 556,
+    'Tcommaaccent': 611,
+    'Cacute': 722,
+    'atilde': 556,
+    'Edotaccent': 667,
+    'scaron': 556,
+    'scedilla': 556,
+    'iacute': 278,
+    'lozenge': 494,
+    'Rcaron': 722,
+    'Gcommaaccent': 778,
+    'ucircumflex': 611,
+    'acircumflex': 556,
+    'Amacron': 722,
+    'rcaron': 389,
+    'ccedilla': 556,
+    'Zdotaccent': 611,
+    'Thorn': 667,
+    'Omacron': 778,
+    'Racute': 722,
+    'Sacute': 667,
+    'dcaron': 743,
+    'Umacron': 722,
+    'uring': 611,
+    'threesuperior': 333,
+    'Ograve': 778,
+    'Agrave': 722,
+    'Abreve': 722,
+    'multiply': 584,
+    'uacute': 611,
+    'Tcaron': 611,
+    'partialdiff': 494,
+    'ydieresis': 556,
+    'Nacute': 722,
+    'icircumflex': 278,
+    'Ecircumflex': 667,
+    'adieresis': 556,
+    'edieresis': 556,
+    'cacute': 556,
+    'nacute': 611,
+    'umacron': 611,
+    'Ncaron': 722,
+    'Iacute': 278,
+    'plusminus': 584,
+    'brokenbar': 280,
+    'registered': 737,
+    'Gbreve': 778,
+    'Idotaccent': 278,
+    'summation': 600,
+    'Egrave': 667,
+    'racute': 389,
+    'omacron': 611,
+    'Zacute': 611,
+    'Zcaron': 611,
+    'greaterequal': 549,
+    'Eth': 722,
+    'Ccedilla': 722,
+    'lcommaaccent': 278,
+    'tcaron': 389,
+    'eogonek': 556,
+    'Uogonek': 722,
+    'Aacute': 722,
+    'Adieresis': 722,
+    'egrave': 556,
+    'zacute': 500,
+    'iogonek': 278,
+    'Oacute': 778,
+    'oacute': 611,
+    'amacron': 556,
+    'sacute': 556,
+    'idieresis': 278,
+    'Ocircumflex': 778,
+    'Ugrave': 722,
+    'Delta': 612,
+    'thorn': 611,
+    'twosuperior': 333,
+    'Odieresis': 778,
+    'mu': 611,
+    'igrave': 278,
+    'ohungarumlaut': 611,
+    'Eogonek': 667,
+    'dcroat': 611,
+    'threequarters': 834,
+    'Scedilla': 667,
+    'lcaron': 400,
+    'Kcommaaccent': 722,
+    'Lacute': 611,
+    'trademark': 1000,
+    'edotaccent': 556,
+    'Igrave': 278,
+    'Imacron': 278,
+    'Lcaron': 611,
+    'onehalf': 834,
+    'lessequal': 549,
+    'ocircumflex': 611,
+    'ntilde': 611,
+    'Uhungarumlaut': 722,
+    'Eacute': 667,
+    'emacron': 556,
+    'gbreve': 611,
+    'onequarter': 834,
+    'Scaron': 667,
+    'Scommaaccent': 667,
+    'Ohungarumlaut': 778,
+    'degree': 400,
+    'ograve': 611,
+    'Ccaron': 722,
+    'ugrave': 611,
+    'radical': 549,
+    'Dcaron': 722,
+    'rcommaaccent': 389,
+    'Ntilde': 722,
+    'otilde': 611,
+    'Rcommaaccent': 722,
+    'Lcommaaccent': 611,
+    'Atilde': 722,
+    'Aogonek': 722,
+    'Aring': 722,
+    'Otilde': 778,
+    'zdotaccent': 500,
+    'Ecaron': 667,
+    'Iogonek': 278,
+    'kcommaaccent': 556,
+    'minus': 584,
+    'Icircumflex': 278,
+    'ncaron': 611,
+    'tcommaaccent': 333,
+    'logicalnot': 584,
+    'odieresis': 611,
+    'udieresis': 611,
+    'notequal': 549,
+    'gcommaaccent': 611,
+    'eth': 611,
+    'zcaron': 500,
+    'ncommaaccent': 611,
+    'onesuperior': 333,
+    'imacron': 278,
+    'Euro': 556
+  },
+  'Helvetica-Oblique' : {
+    'space': 278,
+    'exclam': 278,
+    'quotedbl': 355,
+    'numbersign': 556,
+    'dollar': 556,
+    'percent': 889,
+    'ampersand': 667,
+    'quoteright': 222,
+    'parenleft': 333,
+    'parenright': 333,
+    'asterisk': 389,
+    'plus': 584,
+    'comma': 278,
+    'hyphen': 333,
+    'period': 278,
+    'slash': 278,
+    'zero': 556,
+    'one': 556,
+    'two': 556,
+    'three': 556,
+    'four': 556,
+    'five': 556,
+    'six': 556,
+    'seven': 556,
+    'eight': 556,
+    'nine': 556,
+    'colon': 278,
+    'semicolon': 278,
+    'less': 584,
+    'equal': 584,
+    'greater': 584,
+    'question': 556,
+    'at': 1015,
+    'A': 667,
+    'B': 667,
+    'C': 722,
+    'D': 722,
+    'E': 667,
+    'F': 611,
+    'G': 778,
+    'H': 722,
+    'I': 278,
+    'J': 500,
+    'K': 667,
+    'L': 556,
+    'M': 833,
+    'N': 722,
+    'O': 778,
+    'P': 667,
+    'Q': 778,
+    'R': 722,
+    'S': 667,
+    'T': 611,
+    'U': 722,
+    'V': 667,
+    'W': 944,
+    'X': 667,
+    'Y': 667,
+    'Z': 611,
+    'bracketleft': 278,
+    'backslash': 278,
+    'bracketright': 278,
+    'asciicircum': 469,
+    'underscore': 556,
+    'quoteleft': 222,
+    'a': 556,
+    'b': 556,
+    'c': 500,
+    'd': 556,
+    'e': 556,
+    'f': 278,
+    'g': 556,
+    'h': 556,
+    'i': 222,
+    'j': 222,
+    'k': 500,
+    'l': 222,
+    'm': 833,
+    'n': 556,
+    'o': 556,
+    'p': 556,
+    'q': 556,
+    'r': 333,
+    's': 500,
+    't': 278,
+    'u': 556,
+    'v': 500,
+    'w': 722,
+    'x': 500,
+    'y': 500,
+    'z': 500,
+    'braceleft': 334,
+    'bar': 260,
+    'braceright': 334,
+    'asciitilde': 584,
+    'exclamdown': 333,
+    'cent': 556,
+    'sterling': 556,
+    'fraction': 167,
+    'yen': 556,
+    'florin': 556,
+    'section': 556,
+    'currency': 556,
+    'quotesingle': 191,
+    'quotedblleft': 333,
+    'guillemotleft': 556,
+    'guilsinglleft': 333,
+    'guilsinglright': 333,
+    'fi': 500,
+    'fl': 500,
+    'endash': 556,
+    'dagger': 556,
+    'daggerdbl': 556,
+    'periodcentered': 278,
+    'paragraph': 537,
+    'bullet': 350,
+    'quotesinglbase': 222,
+    'quotedblbase': 333,
+    'quotedblright': 333,
+    'guillemotright': 556,
+    'ellipsis': 1000,
+    'perthousand': 1000,
+    'questiondown': 611,
+    'grave': 333,
+    'acute': 333,
+    'circumflex': 333,
+    'tilde': 333,
+    'macron': 333,
+    'breve': 333,
+    'dotaccent': 333,
+    'dieresis': 333,
+    'ring': 333,
+    'cedilla': 333,
+    'hungarumlaut': 333,
+    'ogonek': 333,
+    'caron': 333,
+    'emdash': 1000,
+    'AE': 1000,
+    'ordfeminine': 370,
+    'Lslash': 556,
+    'Oslash': 778,
+    'OE': 1000,
+    'ordmasculine': 365,
+    'ae': 889,
+    'dotlessi': 278,
+    'lslash': 222,
+    'oslash': 611,
+    'oe': 944,
+    'germandbls': 611,
+    'Idieresis': 278,
+    'eacute': 556,
+    'abreve': 556,
+    'uhungarumlaut': 556,
+    'ecaron': 556,
+    'Ydieresis': 667,
+    'divide': 584,
+    'Yacute': 667,
+    'Acircumflex': 667,
+    'aacute': 556,
+    'Ucircumflex': 722,
+    'yacute': 500,
+    'scommaaccent': 500,
+    'ecircumflex': 556,
+    'Uring': 722,
+    'Udieresis': 722,
+    'aogonek': 556,
+    'Uacute': 722,
+    'uogonek': 556,
+    'Edieresis': 667,
+    'Dcroat': 722,
+    'commaaccent': 250,
+    'copyright': 737,
+    'Emacron': 667,
+    'ccaron': 500,
+    'aring': 556,
+    'Ncommaaccent': 722,
+    'lacute': 222,
+    'agrave': 556,
+    'Tcommaaccent': 611,
+    'Cacute': 722,
+    'atilde': 556,
+    'Edotaccent': 667,
+    'scaron': 500,
+    'scedilla': 500,
+    'iacute': 278,
+    'lozenge': 471,
+    'Rcaron': 722,
+    'Gcommaaccent': 778,
+    'ucircumflex': 556,
+    'acircumflex': 556,
+    'Amacron': 667,
+    'rcaron': 333,
+    'ccedilla': 500,
+    'Zdotaccent': 611,
+    'Thorn': 667,
+    'Omacron': 778,
+    'Racute': 722,
+    'Sacute': 667,
+    'dcaron': 643,
+    'Umacron': 722,
+    'uring': 556,
+    'threesuperior': 333,
+    'Ograve': 778,
+    'Agrave': 667,
+    'Abreve': 667,
+    'multiply': 584,
+    'uacute': 556,
+    'Tcaron': 611,
+    'partialdiff': 476,
+    'ydieresis': 500,
+    'Nacute': 722,
+    'icircumflex': 278,
+    'Ecircumflex': 667,
+    'adieresis': 556,
+    'edieresis': 556,
+    'cacute': 500,
+    'nacute': 556,
+    'umacron': 556,
+    'Ncaron': 722,
+    'Iacute': 278,
+    'plusminus': 584,
+    'brokenbar': 260,
+    'registered': 737,
+    'Gbreve': 778,
+    'Idotaccent': 278,
+    'summation': 600,
+    'Egrave': 667,
+    'racute': 333,
+    'omacron': 556,
+    'Zacute': 611,
+    'Zcaron': 611,
+    'greaterequal': 549,
+    'Eth': 722,
+    'Ccedilla': 722,
+    'lcommaaccent': 222,
+    'tcaron': 317,
+    'eogonek': 556,
+    'Uogonek': 722,
+    'Aacute': 667,
+    'Adieresis': 667,
+    'egrave': 556,
+    'zacute': 500,
+    'iogonek': 222,
+    'Oacute': 778,
+    'oacute': 556,
+    'amacron': 556,
+    'sacute': 500,
+    'idieresis': 278,
+    'Ocircumflex': 778,
+    'Ugrave': 722,
+    'Delta': 612,
+    'thorn': 556,
+    'twosuperior': 333,
+    'Odieresis': 778,
+    'mu': 556,
+    'igrave': 278,
+    'ohungarumlaut': 556,
+    'Eogonek': 667,
+    'dcroat': 556,
+    'threequarters': 834,
+    'Scedilla': 667,
+    'lcaron': 299,
+    'Kcommaaccent': 667,
+    'Lacute': 556,
+    'trademark': 1000,
+    'edotaccent': 556,
+    'Igrave': 278,
+    'Imacron': 278,
+    'Lcaron': 556,
+    'onehalf': 834,
+    'lessequal': 549,
+    'ocircumflex': 556,
+    'ntilde': 556,
+    'Uhungarumlaut': 722,
+    'Eacute': 667,
+    'emacron': 556,
+    'gbreve': 556,
+    'onequarter': 834,
+    'Scaron': 667,
+    'Scommaaccent': 667,
+    'Ohungarumlaut': 778,
+    'degree': 400,
+    'ograve': 556,
+    'Ccaron': 722,
+    'ugrave': 556,
+    'radical': 453,
+    'Dcaron': 722,
+    'rcommaaccent': 333,
+    'Ntilde': 722,
+    'otilde': 556,
+    'Rcommaaccent': 722,
+    'Lcommaaccent': 556,
+    'Atilde': 667,
+    'Aogonek': 667,
+    'Aring': 667,
+    'Otilde': 778,
+    'zdotaccent': 500,
+    'Ecaron': 667,
+    'Iogonek': 278,
+    'kcommaaccent': 500,
+    'minus': 584,
+    'Icircumflex': 278,
+    'ncaron': 556,
+    'tcommaaccent': 278,
+    'logicalnot': 584,
+    'odieresis': 556,
+    'udieresis': 556,
+    'notequal': 549,
+    'gcommaaccent': 556,
+    'eth': 556,
+    'zcaron': 500,
+    'ncommaaccent': 556,
+    'onesuperior': 333,
+    'imacron': 278,
+    'Euro': 556
+  },
+  'Symbol': {
+    'space': 250,
+    'exclam': 333,
+    'universal': 713,
+    'numbersign': 500,
+    'existential': 549,
+    'percent': 833,
+    'ampersand': 778,
+    'suchthat': 439,
+    'parenleft': 333,
+    'parenright': 333,
+    'asteriskmath': 500,
+    'plus': 549,
+    'comma': 250,
+    'minus': 549,
+    'period': 250,
+    'slash': 278,
+    'zero': 500,
+    'one': 500,
+    'two': 500,
+    'three': 500,
+    'four': 500,
+    'five': 500,
+    'six': 500,
+    'seven': 500,
+    'eight': 500,
+    'nine': 500,
+    'colon': 278,
+    'semicolon': 278,
+    'less': 549,
+    'equal': 549,
+    'greater': 549,
+    'question': 444,
+    'congruent': 549,
+    'Alpha': 722,
+    'Beta': 667,
+    'Chi': 722,
+    'Delta': 612,
+    'Epsilon': 611,
+    'Phi': 763,
+    'Gamma': 603,
+    'Eta': 722,
+    'Iota': 333,
+    'theta1': 631,
+    'Kappa': 722,
+    'Lambda': 686,
+    'Mu': 889,
+    'Nu': 722,
+    'Omicron': 722,
+    'Pi': 768,
+    'Theta': 741,
+    'Rho': 556,
+    'Sigma': 592,
+    'Tau': 611,
+    'Upsilon': 690,
+    'sigma1': 439,
+    'Omega': 768,
+    'Xi': 645,
+    'Psi': 795,
+    'Zeta': 611,
+    'bracketleft': 333,
+    'therefore': 863,
+    'bracketright': 333,
+    'perpendicular': 658,
+    'underscore': 500,
+    'radicalex': 500,
+    'alpha': 631,
+    'beta': 549,
+    'chi': 549,
+    'delta': 494,
+    'epsilon': 439,
+    'phi': 521,
+    'gamma': 411,
+    'eta': 603,
+    'iota': 329,
+    'phi1': 603,
+    'kappa': 549,
+    'lambda': 549,
+    'mu': 576,
+    'nu': 521,
+    'omicron': 549,
+    'pi': 549,
+    'theta': 521,
+    'rho': 549,
+    'sigma': 603,
+    'tau': 439,
+    'upsilon': 576,
+    'omega1': 713,
+    'omega': 686,
+    'xi': 493,
+    'psi': 686,
+    'zeta': 494,
+    'braceleft': 480,
+    'bar': 200,
+    'braceright': 480,
+    'similar': 549,
+    'Euro': 750,
+    'Upsilon1': 620,
+    'minute': 247,
+    'lessequal': 549,
+    'fraction': 167,
+    'infinity': 713,
+    'florin': 500,
+    'club': 753,
+    'diamond': 753,
+    'heart': 753,
+    'spade': 753,
+    'arrowboth': 1042,
+    'arrowleft': 987,
+    'arrowup': 603,
+    'arrowright': 987,
+    'arrowdown': 603,
+    'degree': 400,
+    'plusminus': 549,
+    'second': 411,
+    'greaterequal': 549,
+    'multiply': 549,
+    'proportional': 713,
+    'partialdiff': 494,
+    'bullet': 460,
+    'divide': 549,
+    'notequal': 549,
+    'equivalence': 549,
+    'approxequal': 549,
+    'ellipsis': 1000,
+    'arrowvertex': 603,
+    'arrowhorizex': 1000,
+    'carriagereturn': 658,
+    'aleph': 823,
+    'Ifraktur': 686,
+    'Rfraktur': 795,
+    'weierstrass': 987,
+    'circlemultiply': 768,
+    'circleplus': 768,
+    'emptyset': 823,
+    'intersection': 768,
+    'union': 768,
+    'propersuperset': 713,
+    'reflexsuperset': 713,
+    'notsubset': 713,
+    'propersubset': 713,
+    'reflexsubset': 713,
+    'element': 713,
+    'notelement': 713,
+    'angle': 768,
+    'gradient': 713,
+    'registerserif': 790,
+    'copyrightserif': 790,
+    'trademarkserif': 890,
+    'product': 823,
+    'radical': 549,
+    'dotmath': 250,
+    'logicalnot': 713,
+    'logicaland': 603,
+    'logicalor': 603,
+    'arrowdblboth': 1042,
+    'arrowdblleft': 987,
+    'arrowdblup': 603,
+    'arrowdblright': 987,
+    'arrowdbldown': 603,
+    'lozenge': 494,
+    'angleleft': 329,
+    'registersans': 790,
+    'copyrightsans': 790,
+    'trademarksans': 786,
+    'summation': 713,
+    'parenlefttp': 384,
+    'parenleftex': 384,
+    'parenleftbt': 384,
+    'bracketlefttp': 384,
+    'bracketleftex': 384,
+    'bracketleftbt': 384,
+    'bracelefttp': 494,
+    'braceleftmid': 494,
+    'braceleftbt': 494,
+    'braceex': 494,
+    'angleright': 329,
+    'integral': 274,
+    'integraltp': 686,
+    'integralex': 686,
+    'integralbt': 686,
+    'parenrighttp': 384,
+    'parenrightex': 384,
+    'parenrightbt': 384,
+    'bracketrighttp': 384,
+    'bracketrightex': 384,
+    'bracketrightbt': 384,
+    'bracerighttp': 494,
+    'bracerightmid': 494,
+    'bracerightbt': 494,
+    'apple': 790
+  },
+  'Times-Roman': {
+    'space': 250,
+    'exclam': 333,
+    'quotedbl': 408,
+    'numbersign': 500,
+    'dollar': 500,
+    'percent': 833,
+    'ampersand': 778,
+    'quoteright': 333,
+    'parenleft': 333,
+    'parenright': 333,
+    'asterisk': 500,
+    'plus': 564,
+    'comma': 250,
+    'hyphen': 333,
+    'period': 250,
+    'slash': 278,
+    'zero': 500,
+    'one': 500,
+    'two': 500,
+    'three': 500,
+    'four': 500,
+    'five': 500,
+    'six': 500,
+    'seven': 500,
+    'eight': 500,
+    'nine': 500,
+    'colon': 278,
+    'semicolon': 278,
+    'less': 564,
+    'equal': 564,
+    'greater': 564,
+    'question': 444,
+    'at': 921,
+    'A': 722,
+    'B': 667,
+    'C': 667,
+    'D': 722,
+    'E': 611,
+    'F': 556,
+    'G': 722,
+    'H': 722,
+    'I': 333,
+    'J': 389,
+    'K': 722,
+    'L': 611,
+    'M': 889,
+    'N': 722,
+    'O': 722,
+    'P': 556,
+    'Q': 722,
+    'R': 667,
+    'S': 556,
+    'T': 611,
+    'U': 722,
+    'V': 722,
+    'W': 944,
+    'X': 722,
+    'Y': 722,
+    'Z': 611,
+    'bracketleft': 333,
+    'backslash': 278,
+    'bracketright': 333,
+    'asciicircum': 469,
+    'underscore': 500,
+    'quoteleft': 333,
+    'a': 444,
+    'b': 500,
+    'c': 444,
+    'd': 500,
+    'e': 444,
+    'f': 333,
+    'g': 500,
+    'h': 500,
+    'i': 278,
+    'j': 278,
+    'k': 500,
+    'l': 278,
+    'm': 778,
+    'n': 500,
+    'o': 500,
+    'p': 500,
+    'q': 500,
+    'r': 333,
+    's': 389,
+    't': 278,
+    'u': 500,
+    'v': 500,
+    'w': 722,
+    'x': 500,
+    'y': 500,
+    'z': 444,
+    'braceleft': 480,
+    'bar': 200,
+    'braceright': 480,
+    'asciitilde': 541,
+    'exclamdown': 333,
+    'cent': 500,
+    'sterling': 500,
+    'fraction': 167,
+    'yen': 500,
+    'florin': 500,
+    'section': 500,
+    'currency': 500,
+    'quotesingle': 180,
+    'quotedblleft': 444,
+    'guillemotleft': 500,
+    'guilsinglleft': 333,
+    'guilsinglright': 333,
+    'fi': 556,
+    'fl': 556,
+    'endash': 500,
+    'dagger': 500,
+    'daggerdbl': 500,
+    'periodcentered': 250,
+    'paragraph': 453,
+    'bullet': 350,
+    'quotesinglbase': 333,
+    'quotedblbase': 444,
+    'quotedblright': 444,
+    'guillemotright': 500,
+    'ellipsis': 1000,
+    'perthousand': 1000,
+    'questiondown': 444,
+    'grave': 333,
+    'acute': 333,
+    'circumflex': 333,
+    'tilde': 333,
+    'macron': 333,
+    'breve': 333,
+    'dotaccent': 333,
+    'dieresis': 333,
+    'ring': 333,
+    'cedilla': 333,
+    'hungarumlaut': 333,
+    'ogonek': 333,
+    'caron': 333,
+    'emdash': 1000,
+    'AE': 889,
+    'ordfeminine': 276,
+    'Lslash': 611,
+    'Oslash': 722,
+    'OE': 889,
+    'ordmasculine': 310,
+    'ae': 667,
+    'dotlessi': 278,
+    'lslash': 278,
+    'oslash': 500,
+    'oe': 722,
+    'germandbls': 500,
+    'Idieresis': 333,
+    'eacute': 444,
+    'abreve': 444,
+    'uhungarumlaut': 500,
+    'ecaron': 444,
+    'Ydieresis': 722,
+    'divide': 564,
+    'Yacute': 722,
+    'Acircumflex': 722,
+    'aacute': 444,
+    'Ucircumflex': 722,
+    'yacute': 500,
+    'scommaaccent': 389,
+    'ecircumflex': 444,
+    'Uring': 722,
+    'Udieresis': 722,
+    'aogonek': 444,
+    'Uacute': 722,
+    'uogonek': 500,
+    'Edieresis': 611,
+    'Dcroat': 722,
+    'commaaccent': 250,
+    'copyright': 760,
+    'Emacron': 611,
+    'ccaron': 444,
+    'aring': 444,
+    'Ncommaaccent': 722,
+    'lacute': 278,
+    'agrave': 444,
+    'Tcommaaccent': 611,
+    'Cacute': 667,
+    'atilde': 444,
+    'Edotaccent': 611,
+    'scaron': 389,
+    'scedilla': 389,
+    'iacute': 278,
+    'lozenge': 471,
+    'Rcaron': 667,
+    'Gcommaaccent': 722,
+    'ucircumflex': 500,
+    'acircumflex': 444,
+    'Amacron': 722,
+    'rcaron': 333,
+    'ccedilla': 444,
+    'Zdotaccent': 611,
+    'Thorn': 556,
+    'Omacron': 722,
+    'Racute': 667,
+    'Sacute': 556,
+    'dcaron': 588,
+    'Umacron': 722,
+    'uring': 500,
+    'threesuperior': 300,
+    'Ograve': 722,
+    'Agrave': 722,
+    'Abreve': 722,
+    'multiply': 564,
+    'uacute': 500,
+    'Tcaron': 611,
+    'partialdiff': 476,
+    'ydieresis': 500,
+    'Nacute': 722,
+    'icircumflex': 278,
+    'Ecircumflex': 611,
+    'adieresis': 444,
+    'edieresis': 444,
+    'cacute': 444,
+    'nacute': 500,
+    'umacron': 500,
+    'Ncaron': 722,
+    'Iacute': 333,
+    'plusminus': 564,
+    'brokenbar': 200,
+    'registered': 760,
+    'Gbreve': 722,
+    'Idotaccent': 333,
+    'summation': 600,
+    'Egrave': 611,
+    'racute': 333,
+    'omacron': 500,
+    'Zacute': 611,
+    'Zcaron': 611,
+    'greaterequal': 549,
+    'Eth': 722,
+    'Ccedilla': 667,
+    'lcommaaccent': 278,
+    'tcaron': 326,
+    'eogonek': 444,
+    'Uogonek': 722,
+    'Aacute': 722,
+    'Adieresis': 722,
+    'egrave': 444,
+    'zacute': 444,
+    'iogonek': 278,
+    'Oacute': 722,
+    'oacute': 500,
+    'amacron': 444,
+    'sacute': 389,
+    'idieresis': 278,
+    'Ocircumflex': 722,
+    'Ugrave': 722,
+    'Delta': 612,
+    'thorn': 500,
+    'twosuperior': 300,
+    'Odieresis': 722,
+    'mu': 500,
+    'igrave': 278,
+    'ohungarumlaut': 500,
+    'Eogonek': 611,
+    'dcroat': 500,
+    'threequarters': 750,
+    'Scedilla': 556,
+    'lcaron': 344,
+    'Kcommaaccent': 722,
+    'Lacute': 611,
+    'trademark': 980,
+    'edotaccent': 444,
+    'Igrave': 333,
+    'Imacron': 333,
+    'Lcaron': 611,
+    'onehalf': 750,
+    'lessequal': 549,
+    'ocircumflex': 500,
+    'ntilde': 500,
+    'Uhungarumlaut': 722,
+    'Eacute': 611,
+    'emacron': 444,
+    'gbreve': 500,
+    'onequarter': 750,
+    'Scaron': 556,
+    'Scommaaccent': 556,
+    'Ohungarumlaut': 722,
+    'degree': 400,
+    'ograve': 500,
+    'Ccaron': 667,
+    'ugrave': 500,
+    'radical': 453,
+    'Dcaron': 722,
+    'rcommaaccent': 333,
+    'Ntilde': 722,
+    'otilde': 500,
+    'Rcommaaccent': 667,
+    'Lcommaaccent': 611,
+    'Atilde': 722,
+    'Aogonek': 722,
+    'Aring': 722,
+    'Otilde': 722,
+    'zdotaccent': 444,
+    'Ecaron': 611,
+    'Iogonek': 333,
+    'kcommaaccent': 500,
+    'minus': 564,
+    'Icircumflex': 333,
+    'ncaron': 500,
+    'tcommaaccent': 278,
+    'logicalnot': 564,
+    'odieresis': 500,
+    'udieresis': 500,
+    'notequal': 549,
+    'gcommaaccent': 500,
+    'eth': 500,
+    'zcaron': 444,
+    'ncommaaccent': 500,
+    'onesuperior': 300,
+    'imacron': 278,
+    'Euro': 500
+  },
+  'Times-Bold': {
+    'space': 250,
+    'exclam': 333,
+    'quotedbl': 555,
+    'numbersign': 500,
+    'dollar': 500,
+    'percent': 1000,
+    'ampersand': 833,
+    'quoteright': 333,
+    'parenleft': 333,
+    'parenright': 333,
+    'asterisk': 500,
+    'plus': 570,
+    'comma': 250,
+    'hyphen': 333,
+    'period': 250,
+    'slash': 278,
+    'zero': 500,
+    'one': 500,
+    'two': 500,
+    'three': 500,
+    'four': 500,
+    'five': 500,
+    'six': 500,
+    'seven': 500,
+    'eight': 500,
+    'nine': 500,
+    'colon': 333,
+    'semicolon': 333,
+    'less': 570,
+    'equal': 570,
+    'greater': 570,
+    'question': 500,
+    'at': 930,
+    'A': 722,
+    'B': 667,
+    'C': 722,
+    'D': 722,
+    'E': 667,
+    'F': 611,
+    'G': 778,
+    'H': 778,
+    'I': 389,
+    'J': 500,
+    'K': 778,
+    'L': 667,
+    'M': 944,
+    'N': 722,
+    'O': 778,
+    'P': 611,
+    'Q': 778,
+    'R': 722,
+    'S': 556,
+    'T': 667,
+    'U': 722,
+    'V': 722,
+    'W': 1000,
+    'X': 722,
+    'Y': 722,
+    'Z': 667,
+    'bracketleft': 333,
+    'backslash': 278,
+    'bracketright': 333,
+    'asciicircum': 581,
+    'underscore': 500,
+    'quoteleft': 333,
+    'a': 500,
+    'b': 556,
+    'c': 444,
+    'd': 556,
+    'e': 444,
+    'f': 333,
+    'g': 500,
+    'h': 556,
+    'i': 278,
+    'j': 333,
+    'k': 556,
+    'l': 278,
+    'm': 833,
+    'n': 556,
+    'o': 500,
+    'p': 556,
+    'q': 556,
+    'r': 444,
+    's': 389,
+    't': 333,
+    'u': 556,
+    'v': 500,
+    'w': 722,
+    'x': 500,
+    'y': 500,
+    'z': 444,
+    'braceleft': 394,
+    'bar': 220,
+    'braceright': 394,
+    'asciitilde': 520,
+    'exclamdown': 333,
+    'cent': 500,
+    'sterling': 500,
+    'fraction': 167,
+    'yen': 500,
+    'florin': 500,
+    'section': 500,
+    'currency': 500,
+    'quotesingle': 278,
+    'quotedblleft': 500,
+    'guillemotleft': 500,
+    'guilsinglleft': 333,
+    'guilsinglright': 333,
+    'fi': 556,
+    'fl': 556,
+    'endash': 500,
+    'dagger': 500,
+    'daggerdbl': 500,
+    'periodcentered': 250,
+    'paragraph': 540,
+    'bullet': 350,
+    'quotesinglbase': 333,
+    'quotedblbase': 500,
+    'quotedblright': 500,
+    'guillemotright': 500,
+    'ellipsis': 1000,
+    'perthousand': 1000,
+    'questiondown': 500,
+    'grave': 333,
+    'acute': 333,
+    'circumflex': 333,
+    'tilde': 333,
+    'macron': 333,
+    'breve': 333,
+    'dotaccent': 333,
+    'dieresis': 333,
+    'ring': 333,
+    'cedilla': 333,
+    'hungarumlaut': 333,
+    'ogonek': 333,
+    'caron': 333,
+    'emdash': 1000,
+    'AE': 1000,
+    'ordfeminine': 300,
+    'Lslash': 667,
+    'Oslash': 778,
+    'OE': 1000,
+    'ordmasculine': 330,
+    'ae': 722,
+    'dotlessi': 278,
+    'lslash': 278,
+    'oslash': 500,
+    'oe': 722,
+    'germandbls': 556,
+    'Idieresis': 389,
+    'eacute': 444,
+    'abreve': 500,
+    'uhungarumlaut': 556,
+    'ecaron': 444,
+    'Ydieresis': 722,
+    'divide': 570,
+    'Yacute': 722,
+    'Acircumflex': 722,
+    'aacute': 500,
+    'Ucircumflex': 722,
+    'yacute': 500,
+    'scommaaccent': 389,
+    'ecircumflex': 444,
+    'Uring': 722,
+    'Udieresis': 722,
+    'aogonek': 500,
+    'Uacute': 722,
+    'uogonek': 556,
+    'Edieresis': 667,
+    'Dcroat': 722,
+    'commaaccent': 250,
+    'copyright': 747,
+    'Emacron': 667,
+    'ccaron': 444,
+    'aring': 500,
+    'Ncommaaccent': 722,
+    'lacute': 278,
+    'agrave': 500,
+    'Tcommaaccent': 667,
+    'Cacute': 722,
+    'atilde': 500,
+    'Edotaccent': 667,
+    'scaron': 389,
+    'scedilla': 389,
+    'iacute': 278,
+    'lozenge': 494,
+    'Rcaron': 722,
+    'Gcommaaccent': 778,
+    'ucircumflex': 556,
+    'acircumflex': 500,
+    'Amacron': 722,
+    'rcaron': 444,
+    'ccedilla': 444,
+    'Zdotaccent': 667,
+    'Thorn': 611,
+    'Omacron': 778,
+    'Racute': 722,
+    'Sacute': 556,
+    'dcaron': 672,
+    'Umacron': 722,
+    'uring': 556,
+    'threesuperior': 300,
+    'Ograve': 778,
+    'Agrave': 722,
+    'Abreve': 722,
+    'multiply': 570,
+    'uacute': 556,
+    'Tcaron': 667,
+    'partialdiff': 494,
+    'ydieresis': 500,
+    'Nacute': 722,
+    'icircumflex': 278,
+    'Ecircumflex': 667,
+    'adieresis': 500,
+    'edieresis': 444,
+    'cacute': 444,
+    'nacute': 556,
+    'umacron': 556,
+    'Ncaron': 722,
+    'Iacute': 389,
+    'plusminus': 570,
+    'brokenbar': 220,
+    'registered': 747,
+    'Gbreve': 778,
+    'Idotaccent': 389,
+    'summation': 600,
+    'Egrave': 667,
+    'racute': 444,
+    'omacron': 500,
+    'Zacute': 667,
+    'Zcaron': 667,
+    'greaterequal': 549,
+    'Eth': 722,
+    'Ccedilla': 722,
+    'lcommaaccent': 278,
+    'tcaron': 416,
+    'eogonek': 444,
+    'Uogonek': 722,
+    'Aacute': 722,
+    'Adieresis': 722,
+    'egrave': 444,
+    'zacute': 444,
+    'iogonek': 278,
+    'Oacute': 778,
+    'oacute': 500,
+    'amacron': 500,
+    'sacute': 389,
+    'idieresis': 278,
+    'Ocircumflex': 778,
+    'Ugrave': 722,
+    'Delta': 612,
+    'thorn': 556,
+    'twosuperior': 300,
+    'Odieresis': 778,
+    'mu': 556,
+    'igrave': 278,
+    'ohungarumlaut': 500,
+    'Eogonek': 667,
+    'dcroat': 556,
+    'threequarters': 750,
+    'Scedilla': 556,
+    'lcaron': 394,
+    'Kcommaaccent': 778,
+    'Lacute': 667,
+    'trademark': 1000,
+    'edotaccent': 444,
+    'Igrave': 389,
+    'Imacron': 389,
+    'Lcaron': 667,
+    'onehalf': 750,
+    'lessequal': 549,
+    'ocircumflex': 500,
+    'ntilde': 556,
+    'Uhungarumlaut': 722,
+    'Eacute': 667,
+    'emacron': 444,
+    'gbreve': 500,
+    'onequarter': 750,
+    'Scaron': 556,
+    'Scommaaccent': 556,
+    'Ohungarumlaut': 778,
+    'degree': 400,
+    'ograve': 500,
+    'Ccaron': 722,
+    'ugrave': 556,
+    'radical': 549,
+    'Dcaron': 722,
+    'rcommaaccent': 444,
+    'Ntilde': 722,
+    'otilde': 500,
+    'Rcommaaccent': 722,
+    'Lcommaaccent': 667,
+    'Atilde': 722,
+    'Aogonek': 722,
+    'Aring': 722,
+    'Otilde': 778,
+    'zdotaccent': 444,
+    'Ecaron': 667,
+    'Iogonek': 389,
+    'kcommaaccent': 556,
+    'minus': 570,
+    'Icircumflex': 389,
+    'ncaron': 556,
+    'tcommaaccent': 333,
+    'logicalnot': 570,
+    'odieresis': 500,
+    'udieresis': 556,
+    'notequal': 549,
+    'gcommaaccent': 500,
+    'eth': 500,
+    'zcaron': 444,
+    'ncommaaccent': 556,
+    'onesuperior': 300,
+    'imacron': 278,
+    'Euro': 500
+  },
+  'Times-BoldItalic': {
+    'space': 250,
+    'exclam': 389,
+    'quotedbl': 555,
+    'numbersign': 500,
+    'dollar': 500,
+    'percent': 833,
+    'ampersand': 778,
+    'quoteright': 333,
+    'parenleft': 333,
+    'parenright': 333,
+    'asterisk': 500,
+    'plus': 570,
+    'comma': 250,
+    'hyphen': 333,
+    'period': 250,
+    'slash': 278,
+    'zero': 500,
+    'one': 500,
+    'two': 500,
+    'three': 500,
+    'four': 500,
+    'five': 500,
+    'six': 500,
+    'seven': 500,
+    'eight': 500,
+    'nine': 500,
+    'colon': 333,
+    'semicolon': 333,
+    'less': 570,
+    'equal': 570,
+    'greater': 570,
+    'question': 500,
+    'at': 832,
+    'A': 667,
+    'B': 667,
+    'C': 667,
+    'D': 722,
+    'E': 667,
+    'F': 667,
+    'G': 722,
+    'H': 778,
+    'I': 389,
+    'J': 500,
+    'K': 667,
+    'L': 611,
+    'M': 889,
+    'N': 722,
+    'O': 722,
+    'P': 611,
+    'Q': 722,
+    'R': 667,
+    'S': 556,
+    'T': 611,
+    'U': 722,
+    'V': 667,
+    'W': 889,
+    'X': 667,
+    'Y': 611,
+    'Z': 611,
+    'bracketleft': 333,
+    'backslash': 278,
+    'bracketright': 333,
+    'asciicircum': 570,
+    'underscore': 500,
+    'quoteleft': 333,
+    'a': 500,
+    'b': 500,
+    'c': 444,
+    'd': 500,
+    'e': 444,
+    'f': 333,
+    'g': 500,
+    'h': 556,
+    'i': 278,
+    'j': 278,
+    'k': 500,
+    'l': 278,
+    'm': 778,
+    'n': 556,
+    'o': 500,
+    'p': 500,
+    'q': 500,
+    'r': 389,
+    's': 389,
+    't': 278,
+    'u': 556,
+    'v': 444,
+    'w': 667,
+    'x': 500,
+    'y': 444,
+    'z': 389,
+    'braceleft': 348,
+    'bar': 220,
+    'braceright': 348,
+    'asciitilde': 570,
+    'exclamdown': 389,
+    'cent': 500,
+    'sterling': 500,
+    'fraction': 167,
+    'yen': 500,
+    'florin': 500,
+    'section': 500,
+    'currency': 500,
+    'quotesingle': 278,
+    'quotedblleft': 500,
+    'guillemotleft': 500,
+    'guilsinglleft': 333,
+    'guilsinglright': 333,
+    'fi': 556,
+    'fl': 556,
+    'endash': 500,
+    'dagger': 500,
+    'daggerdbl': 500,
+    'periodcentered': 250,
+    'paragraph': 500,
+    'bullet': 350,
+    'quotesinglbase': 333,
+    'quotedblbase': 500,
+    'quotedblright': 500,
+    'guillemotright': 500,
+    'ellipsis': 1000,
+    'perthousand': 1000,
+    'questiondown': 500,
+    'grave': 333,
+    'acute': 333,
+    'circumflex': 333,
+    'tilde': 333,
+    'macron': 333,
+    'breve': 333,
+    'dotaccent': 333,
+    'dieresis': 333,
+    'ring': 333,
+    'cedilla': 333,
+    'hungarumlaut': 333,
+    'ogonek': 333,
+    'caron': 333,
+    'emdash': 1000,
+    'AE': 944,
+    'ordfeminine': 266,
+    'Lslash': 611,
+    'Oslash': 722,
+    'OE': 944,
+    'ordmasculine': 300,
+    'ae': 722,
+    'dotlessi': 278,
+    'lslash': 278,
+    'oslash': 500,
+    'oe': 722,
+    'germandbls': 500,
+    'Idieresis': 389,
+    'eacute': 444,
+    'abreve': 500,
+    'uhungarumlaut': 556,
+    'ecaron': 444,
+    'Ydieresis': 611,
+    'divide': 570,
+    'Yacute': 611,
+    'Acircumflex': 667,
+    'aacute': 500,
+    'Ucircumflex': 722,
+    'yacute': 444,
+    'scommaaccent': 389,
+    'ecircumflex': 444,
+    'Uring': 722,
+    'Udieresis': 722,
+    'aogonek': 500,
+    'Uacute': 722,
+    'uogonek': 556,
+    'Edieresis': 667,
+    'Dcroat': 722,
+    'commaaccent': 250,
+    'copyright': 747,
+    'Emacron': 667,
+    'ccaron': 444,
+    'aring': 500,
+    'Ncommaaccent': 722,
+    'lacute': 278,
+    'agrave': 500,
+    'Tcommaaccent': 611,
+    'Cacute': 667,
+    'atilde': 500,
+    'Edotaccent': 667,
+    'scaron': 389,
+    'scedilla': 389,
+    'iacute': 278,
+    'lozenge': 494,
+    'Rcaron': 667,
+    'Gcommaaccent': 722,
+    'ucircumflex': 556,
+    'acircumflex': 500,
+    'Amacron': 667,
+    'rcaron': 389,
+    'ccedilla': 444,
+    'Zdotaccent': 611,
+    'Thorn': 611,
+    'Omacron': 722,
+    'Racute': 667,
+    'Sacute': 556,
+    'dcaron': 608,
+    'Umacron': 722,
+    'uring': 556,
+    'threesuperior': 300,
+    'Ograve': 722,
+    'Agrave': 667,
+    'Abreve': 667,
+    'multiply': 570,
+    'uacute': 556,
+    'Tcaron': 611,
+    'partialdiff': 494,
+    'ydieresis': 444,
+    'Nacute': 722,
+    'icircumflex': 278,
+    'Ecircumflex': 667,
+    'adieresis': 500,
+    'edieresis': 444,
+    'cacute': 444,
+    'nacute': 556,
+    'umacron': 556,
+    'Ncaron': 722,
+    'Iacute': 389,
+    'plusminus': 570,
+    'brokenbar': 220,
+    'registered': 747,
+    'Gbreve': 722,
+    'Idotaccent': 389,
+    'summation': 600,
+    'Egrave': 667,
+    'racute': 389,
+    'omacron': 500,
+    'Zacute': 611,
+    'Zcaron': 611,
+    'greaterequal': 549,
+    'Eth': 722,
+    'Ccedilla': 667,
+    'lcommaaccent': 278,
+    'tcaron': 366,
+    'eogonek': 444,
+    'Uogonek': 722,
+    'Aacute': 667,
+    'Adieresis': 667,
+    'egrave': 444,
+    'zacute': 389,
+    'iogonek': 278,
+    'Oacute': 722,
+    'oacute': 500,
+    'amacron': 500,
+    'sacute': 389,
+    'idieresis': 278,
+    'Ocircumflex': 722,
+    'Ugrave': 722,
+    'Delta': 612,
+    'thorn': 500,
+    'twosuperior': 300,
+    'Odieresis': 722,
+    'mu': 576,
+    'igrave': 278,
+    'ohungarumlaut': 500,
+    'Eogonek': 667,
+    'dcroat': 500,
+    'threequarters': 750,
+    'Scedilla': 556,
+    'lcaron': 382,
+    'Kcommaaccent': 667,
+    'Lacute': 611,
+    'trademark': 1000,
+    'edotaccent': 444,
+    'Igrave': 389,
+    'Imacron': 389,
+    'Lcaron': 611,
+    'onehalf': 750,
+    'lessequal': 549,
+    'ocircumflex': 500,
+    'ntilde': 556,
+    'Uhungarumlaut': 722,
+    'Eacute': 667,
+    'emacron': 444,
+    'gbreve': 500,
+    'onequarter': 750,
+    'Scaron': 556,
+    'Scommaaccent': 556,
+    'Ohungarumlaut': 722,
+    'degree': 400,
+    'ograve': 500,
+    'Ccaron': 667,
+    'ugrave': 556,
+    'radical': 549,
+    'Dcaron': 722,
+    'rcommaaccent': 389,
+    'Ntilde': 722,
+    'otilde': 500,
+    'Rcommaaccent': 667,
+    'Lcommaaccent': 611,
+    'Atilde': 667,
+    'Aogonek': 667,
+    'Aring': 667,
+    'Otilde': 722,
+    'zdotaccent': 389,
+    'Ecaron': 667,
+    'Iogonek': 389,
+    'kcommaaccent': 500,
+    'minus': 606,
+    'Icircumflex': 389,
+    'ncaron': 556,
+    'tcommaaccent': 278,
+    'logicalnot': 606,
+    'odieresis': 500,
+    'udieresis': 556,
+    'notequal': 549,
+    'gcommaaccent': 500,
+    'eth': 500,
+    'zcaron': 389,
+    'ncommaaccent': 556,
+    'onesuperior': 300,
+    'imacron': 278,
+    'Euro': 500
+  },
+  'Times-Italic': {
+    'space': 250,
+    'exclam': 333,
+    'quotedbl': 420,
+    'numbersign': 500,
+    'dollar': 500,
+    'percent': 833,
+    'ampersand': 778,
+    'quoteright': 333,
+    'parenleft': 333,
+    'parenright': 333,
+    'asterisk': 500,
+    'plus': 675,
+    'comma': 250,
+    'hyphen': 333,
+    'period': 250,
+    'slash': 278,
+    'zero': 500,
+    'one': 500,
+    'two': 500,
+    'three': 500,
+    'four': 500,
+    'five': 500,
+    'six': 500,
+    'seven': 500,
+    'eight': 500,
+    'nine': 500,
+    'colon': 333,
+    'semicolon': 333,
+    'less': 675,
+    'equal': 675,
+    'greater': 675,
+    'question': 500,
+    'at': 920,
+    'A': 611,
+    'B': 611,
+    'C': 667,
+    'D': 722,
+    'E': 611,
+    'F': 611,
+    'G': 722,
+    'H': 722,
+    'I': 333,
+    'J': 444,
+    'K': 667,
+    'L': 556,
+    'M': 833,
+    'N': 667,
+    'O': 722,
+    'P': 611,
+    'Q': 722,
+    'R': 611,
+    'S': 500,
+    'T': 556,
+    'U': 722,
+    'V': 611,
+    'W': 833,
+    'X': 611,
+    'Y': 556,
+    'Z': 556,
+    'bracketleft': 389,
+    'backslash': 278,
+    'bracketright': 389,
+    'asciicircum': 422,
+    'underscore': 500,
+    'quoteleft': 333,
+    'a': 500,
+    'b': 500,
+    'c': 444,
+    'd': 500,
+    'e': 444,
+    'f': 278,
+    'g': 500,
+    'h': 500,
+    'i': 278,
+    'j': 278,
+    'k': 444,
+    'l': 278,
+    'm': 722,
+    'n': 500,
+    'o': 500,
+    'p': 500,
+    'q': 500,
+    'r': 389,
+    's': 389,
+    't': 278,
+    'u': 500,
+    'v': 444,
+    'w': 667,
+    'x': 444,
+    'y': 444,
+    'z': 389,
+    'braceleft': 400,
+    'bar': 275,
+    'braceright': 400,
+    'asciitilde': 541,
+    'exclamdown': 389,
+    'cent': 500,
+    'sterling': 500,
+    'fraction': 167,
+    'yen': 500,
+    'florin': 500,
+    'section': 500,
+    'currency': 500,
+    'quotesingle': 214,
+    'quotedblleft': 556,
+    'guillemotleft': 500,
+    'guilsinglleft': 333,
+    'guilsinglright': 333,
+    'fi': 500,
+    'fl': 500,
+    'endash': 500,
+    'dagger': 500,
+    'daggerdbl': 500,
+    'periodcentered': 250,
+    'paragraph': 523,
+    'bullet': 350,
+    'quotesinglbase': 333,
+    'quotedblbase': 556,
+    'quotedblright': 556,
+    'guillemotright': 500,
+    'ellipsis': 889,
+    'perthousand': 1000,
+    'questiondown': 500,
+    'grave': 333,
+    'acute': 333,
+    'circumflex': 333,
+    'tilde': 333,
+    'macron': 333,
+    'breve': 333,
+    'dotaccent': 333,
+    'dieresis': 333,
+    'ring': 333,
+    'cedilla': 333,
+    'hungarumlaut': 333,
+    'ogonek': 333,
+    'caron': 333,
+    'emdash': 889,
+    'AE': 889,
+    'ordfeminine': 276,
+    'Lslash': 556,
+    'Oslash': 722,
+    'OE': 944,
+    'ordmasculine': 310,
+    'ae': 667,
+    'dotlessi': 278,
+    'lslash': 278,
+    'oslash': 500,
+    'oe': 667,
+    'germandbls': 500,
+    'Idieresis': 333,
+    'eacute': 444,
+    'abreve': 500,
+    'uhungarumlaut': 500,
+    'ecaron': 444,
+    'Ydieresis': 556,
+    'divide': 675,
+    'Yacute': 556,
+    'Acircumflex': 611,
+    'aacute': 500,
+    'Ucircumflex': 722,
+    'yacute': 444,
+    'scommaaccent': 389,
+    'ecircumflex': 444,
+    'Uring': 722,
+    'Udieresis': 722,
+    'aogonek': 500,
+    'Uacute': 722,
+    'uogonek': 500,
+    'Edieresis': 611,
+    'Dcroat': 722,
+    'commaaccent': 250,
+    'copyright': 760,
+    'Emacron': 611,
+    'ccaron': 444,
+    'aring': 500,
+    'Ncommaaccent': 667,
+    'lacute': 278,
+    'agrave': 500,
+    'Tcommaaccent': 556,
+    'Cacute': 667,
+    'atilde': 500,
+    'Edotaccent': 611,
+    'scaron': 389,
+    'scedilla': 389,
+    'iacute': 278,
+    'lozenge': 471,
+    'Rcaron': 611,
+    'Gcommaaccent': 722,
+    'ucircumflex': 500,
+    'acircumflex': 500,
+    'Amacron': 611,
+    'rcaron': 389,
+    'ccedilla': 444,
+    'Zdotaccent': 556,
+    'Thorn': 611,
+    'Omacron': 722,
+    'Racute': 611,
+    'Sacute': 500,
+    'dcaron': 544,
+    'Umacron': 722,
+    'uring': 500,
+    'threesuperior': 300,
+    'Ograve': 722,
+    'Agrave': 611,
+    'Abreve': 611,
+    'multiply': 675,
+    'uacute': 500,
+    'Tcaron': 556,
+    'partialdiff': 476,
+    'ydieresis': 444,
+    'Nacute': 667,
+    'icircumflex': 278,
+    'Ecircumflex': 611,
+    'adieresis': 500,
+    'edieresis': 444,
+    'cacute': 444,
+    'nacute': 500,
+    'umacron': 500,
+    'Ncaron': 667,
+    'Iacute': 333,
+    'plusminus': 675,
+    'brokenbar': 275,
+    'registered': 760,
+    'Gbreve': 722,
+    'Idotaccent': 333,
+    'summation': 600,
+    'Egrave': 611,
+    'racute': 389,
+    'omacron': 500,
+    'Zacute': 556,
+    'Zcaron': 556,
+    'greaterequal': 549,
+    'Eth': 722,
+    'Ccedilla': 667,
+    'lcommaaccent': 278,
+    'tcaron': 300,
+    'eogonek': 444,
+    'Uogonek': 722,
+    'Aacute': 611,
+    'Adieresis': 611,
+    'egrave': 444,
+    'zacute': 389,
+    'iogonek': 278,
+    'Oacute': 722,
+    'oacute': 500,
+    'amacron': 500,
+    'sacute': 389,
+    'idieresis': 278,
+    'Ocircumflex': 722,
+    'Ugrave': 722,
+    'Delta': 612,
+    'thorn': 500,
+    'twosuperior': 300,
+    'Odieresis': 722,
+    'mu': 500,
+    'igrave': 278,
+    'ohungarumlaut': 500,
+    'Eogonek': 611,
+    'dcroat': 500,
+    'threequarters': 750,
+    'Scedilla': 500,
+    'lcaron': 300,
+    'Kcommaaccent': 667,
+    'Lacute': 556,
+    'trademark': 980,
+    'edotaccent': 444,
+    'Igrave': 333,
+    'Imacron': 333,
+    'Lcaron': 611,
+    'onehalf': 750,
+    'lessequal': 549,
+    'ocircumflex': 500,
+    'ntilde': 500,
+    'Uhungarumlaut': 722,
+    'Eacute': 611,
+    'emacron': 444,
+    'gbreve': 500,
+    'onequarter': 750,
+    'Scaron': 500,
+    'Scommaaccent': 500,
+    'Ohungarumlaut': 722,
+    'degree': 400,
+    'ograve': 500,
+    'Ccaron': 667,
+    'ugrave': 500,
+    'radical': 453,
+    'Dcaron': 722,
+    'rcommaaccent': 389,
+    'Ntilde': 667,
+    'otilde': 500,
+    'Rcommaaccent': 611,
+    'Lcommaaccent': 556,
+    'Atilde': 611,
+    'Aogonek': 611,
+    'Aring': 611,
+    'Otilde': 722,
+    'zdotaccent': 389,
+    'Ecaron': 611,
+    'Iogonek': 333,
+    'kcommaaccent': 444,
+    'minus': 675,
+    'Icircumflex': 333,
+    'ncaron': 500,
+    'tcommaaccent': 278,
+    'logicalnot': 675,
+    'odieresis': 500,
+    'udieresis': 500,
+    'notequal': 549,
+    'gcommaaccent': 500,
+    'eth': 500,
+    'zcaron': 389,
+    'ncommaaccent': 500,
+    'onesuperior': 300,
+    'imacron': 278,
+    'Euro': 500
+  },
+  'ZapfDingbats': {
+    'space': 278,
+    'a1': 974,
+    'a2': 961,
+    'a202': 974,
+    'a3': 980,
+    'a4': 719,
+    'a5': 789,
+    'a119': 790,
+    'a118': 791,
+    'a117': 690,
+    'a11': 960,
+    'a12': 939,
+    'a13': 549,
+    'a14': 855,
+    'a15': 911,
+    'a16': 933,
+    'a105': 911,
+    'a17': 945,
+    'a18': 974,
+    'a19': 755,
+    'a20': 846,
+    'a21': 762,
+    'a22': 761,
+    'a23': 571,
+    'a24': 677,
+    'a25': 763,
+    'a26': 760,
+    'a27': 759,
+    'a28': 754,
+    'a6': 494,
+    'a7': 552,
+    'a8': 537,
+    'a9': 577,
+    'a10': 692,
+    'a29': 786,
+    'a30': 788,
+    'a31': 788,
+    'a32': 790,
+    'a33': 793,
+    'a34': 794,
+    'a35': 816,
+    'a36': 823,
+    'a37': 789,
+    'a38': 841,
+    'a39': 823,
+    'a40': 833,
+    'a41': 816,
+    'a42': 831,
+    'a43': 923,
+    'a44': 744,
+    'a45': 723,
+    'a46': 749,
+    'a47': 790,
+    'a48': 792,
+    'a49': 695,
+    'a50': 776,
+    'a51': 768,
+    'a52': 792,
+    'a53': 759,
+    'a54': 707,
+    'a55': 708,
+    'a56': 682,
+    'a57': 701,
+    'a58': 826,
+    'a59': 815,
+    'a60': 789,
+    'a61': 789,
+    'a62': 707,
+    'a63': 687,
+    'a64': 696,
+    'a65': 689,
+    'a66': 786,
+    'a67': 787,
+    'a68': 713,
+    'a69': 791,
+    'a70': 785,
+    'a71': 791,
+    'a72': 873,
+    'a73': 761,
+    'a74': 762,
+    'a203': 762,
+    'a75': 759,
+    'a204': 759,
+    'a76': 892,
+    'a77': 892,
+    'a78': 788,
+    'a79': 784,
+    'a81': 438,
+    'a82': 138,
+    'a83': 277,
+    'a84': 415,
+    'a97': 392,
+    'a98': 392,
+    'a99': 668,
+    'a100': 668,
+    'a89': 390,
+    'a90': 390,
+    'a93': 317,
+    'a94': 317,
+    'a91': 276,
+    'a92': 276,
+    'a205': 509,
+    'a85': 509,
+    'a206': 410,
+    'a86': 410,
+    'a87': 234,
+    'a88': 234,
+    'a95': 334,
+    'a96': 334,
+    'a101': 732,
+    'a102': 544,
+    'a103': 544,
+    'a104': 910,
+    'a106': 667,
+    'a107': 760,
+    'a108': 760,
+    'a112': 776,
+    'a111': 595,
+    'a110': 694,
+    'a109': 626,
+    'a120': 788,
+    'a121': 788,
+    'a122': 788,
+    'a123': 788,
+    'a124': 788,
+    'a125': 788,
+    'a126': 788,
+    'a127': 788,
+    'a128': 788,
+    'a129': 788,
+    'a130': 788,
+    'a131': 788,
+    'a132': 788,
+    'a133': 788,
+    'a134': 788,
+    'a135': 788,
+    'a136': 788,
+    'a137': 788,
+    'a138': 788,
+    'a139': 788,
+    'a140': 788,
+    'a141': 788,
+    'a142': 788,
+    'a143': 788,
+    'a144': 788,
+    'a145': 788,
+    'a146': 788,
+    'a147': 788,
+    'a148': 788,
+    'a149': 788,
+    'a150': 788,
+    'a151': 788,
+    'a152': 788,
+    'a153': 788,
+    'a154': 788,
+    'a155': 788,
+    'a156': 788,
+    'a157': 788,
+    'a158': 788,
+    'a159': 788,
+    'a160': 894,
+    'a161': 838,
+    'a163': 1016,
+    'a164': 458,
+    'a196': 748,
+    'a165': 924,
+    'a192': 748,
+    'a166': 918,
+    'a167': 927,
+    'a168': 928,
+    'a169': 928,
+    'a170': 834,
+    'a171': 873,
+    'a172': 828,
+    'a173': 924,
+    'a162': 924,
+    'a174': 917,
+    'a175': 930,
+    'a176': 931,
+    'a177': 463,
+    'a178': 883,
+    'a179': 836,
+    'a193': 836,
+    'a180': 867,
+    'a199': 867,
+    'a181': 696,
+    'a200': 696,
+    'a182': 874,
+    'a201': 874,
+    'a183': 760,
+    'a184': 946,
+    'a197': 771,
+    'a185': 865,
+    'a194': 771,
+    'a198': 888,
+    'a186': 967,
+    'a195': 888,
+    'a187': 831,
+    'a188': 873,
+    'a189': 927,
+    'a190': 970,
+    'a191': 918
+  }
+};
+
+
+/* -*- Mode: Java; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/* vim: set shiftwidth=2 tabstop=2 autoindent cindent expandtab: */
+
+'use strict';
+
+var EOF = {};
+
+function isEOF(v) {
+  return v == EOF;
+}
+
+var Parser = (function ParserClosure() {
+  function Parser(lexer, allowStreams, xref) {
+    this.lexer = lexer;
+    this.allowStreams = allowStreams;
+    this.xref = xref;
+    this.inlineImg = 0;
+    this.refill();
+  }
+
+  Parser.prototype = {
+    refill: function Parser_refill() {
+      this.buf1 = this.lexer.getObj();
+      this.buf2 = this.lexer.getObj();
+    },
+    shift: function Parser_shift() {
+      if (isCmd(this.buf2, 'ID')) {
+        this.buf1 = this.buf2;
+        this.buf2 = null;
+        // skip byte after ID
+        this.lexer.skip();
+      } else {
+        this.buf1 = this.buf2;
+        this.buf2 = this.lexer.getObj();
+      }
+    },
+    getObj: function Parser_getObj(cipherTransform) {
+      if (isCmd(this.buf1, 'BI')) { // inline image
+        this.shift();
+        return this.makeInlineImage(cipherTransform);
+      }
+      if (isCmd(this.buf1, '[')) { // array
+        this.shift();
+        var array = [];
+        while (!isCmd(this.buf1, ']') && !isEOF(this.buf1))
+          array.push(this.getObj());
+        if (isEOF(this.buf1))
+          error('End of file inside array');
+        this.shift();
+        return array;
+      }
+      if (isCmd(this.buf1, '<<')) { // dictionary or stream
+        this.shift();
+        var dict = new Dict(this.xref);
+        while (!isCmd(this.buf1, '>>') && !isEOF(this.buf1)) {
+          if (!isName(this.buf1))
+            error('Dictionary key must be a name object');
+
+          var key = this.buf1.name;
+          this.shift();
+          if (isEOF(this.buf1))
+            break;
+          dict.set(key, this.getObj(cipherTransform));
+        }
+        if (isEOF(this.buf1))
+          error('End of file inside dictionary');
+
+        // stream objects are not allowed inside content streams or
+        // object streams
+        if (isCmd(this.buf2, 'stream')) {
+          return this.allowStreams ?
+            this.makeStream(dict, cipherTransform) : dict;
+        }
+        this.shift();
+        return dict;
+      }
+      if (isInt(this.buf1)) { // indirect reference or integer
+        var num = this.buf1;
+        this.shift();
+        if (isInt(this.buf1) && isCmd(this.buf2, 'R')) {
+          var ref = new Ref(num, this.buf1);
+          this.shift();
+          this.shift();
+          return ref;
+        }
+        return num;
+      }
+      if (isString(this.buf1)) { // string
+        var str = this.buf1;
+        this.shift();
+        if (cipherTransform)
+          str = cipherTransform.decryptString(str);
+        return str;
+      }
+
+      // simple object
+      var obj = this.buf1;
+      this.shift();
+      return obj;
+    },
+    makeInlineImage: function Parser_makeInlineImage(cipherTransform) {
+      var lexer = this.lexer;
+      var stream = lexer.stream;
+
+      // parse dictionary
+      var dict = new Dict();
+      while (!isCmd(this.buf1, 'ID') && !isEOF(this.buf1)) {
+        if (!isName(this.buf1))
+          error('Dictionary key must be a name object');
+
+        var key = this.buf1.name;
+        this.shift();
+        if (isEOF(this.buf1))
+          break;
+        dict.set(key, this.getObj(cipherTransform));
+      }
+
+      // parse image stream
+      var startPos = stream.pos;
+
+      // searching for the /EI\s/
+      var state = 0, ch;
+      while (state != 4 && (ch = stream.getByte()) != null) {
+        switch (ch) {
+          case 0x20:
+          case 0x0D:
+          case 0x0A:
+            state = state === 3 ? 4 : 0;
+            break;
+          case 0x45:
+            state = 2;
+            break;
+          case 0x49:
+            state = state === 2 ? 3 : 0;
+            break;
+          default:
+            state = 0;
+            break;
+        }
+      }
+
+      // TODO improve the small images performance to remove the limit
+      var inlineImgLimit = 500;
+      if (++this.inlineImg >= inlineImgLimit) {
+        if (this.inlineImg === inlineImgLimit)
+          warn('Too many inline images');
+        this.shift();
+        return null;
+      }
+
+      var length = (stream.pos - 4) - startPos;
+      var imageStream = stream.makeSubStream(startPos, length, dict);
+      if (cipherTransform)
+        imageStream = cipherTransform.createStream(imageStream);
+      imageStream = this.filter(imageStream, dict, length);
+      imageStream.parameters = dict;
+
+      this.buf2 = Cmd.get('EI');
+      this.shift();
+
+      return imageStream;
+    },
+    fetchIfRef: function Parser_fetchIfRef(obj) {
+      // not relying on the xref.fetchIfRef -- xref might not be set
+      return isRef(obj) ? this.xref.fetch(obj) : obj;
+    },
+    makeStream: function Parser_makeStream(dict, cipherTransform) {
+      var lexer = this.lexer;
+      var stream = lexer.stream;
+
+      // get stream start position
+      lexer.skipToNextLine();
+      var pos = stream.pos;
+
+      // get length
+      var length = this.fetchIfRef(dict.get('Length'));
+      if (!isInt(length))
+        error('Bad ' + length + ' attribute in stream');
+
+      // skip over the stream data
+      stream.pos = pos + length;
+      this.shift(); // '>>'
+      this.shift(); // 'stream'
+      if (!isCmd(this.buf1, 'endstream'))
+        error('Missing endstream');
+      this.shift();
+
+      stream = stream.makeSubStream(pos, length, dict);
+      if (cipherTransform)
+        stream = cipherTransform.createStream(stream);
+      stream = this.filter(stream, dict, length);
+      stream.parameters = dict;
+      return stream;
+    },
+    filter: function Parser_filter(stream, dict, length) {
+      var filter = this.fetchIfRef(dict.get('Filter', 'F'));
+      var params = this.fetchIfRef(dict.get('DecodeParms', 'DP'));
+      if (isName(filter))
+        return this.makeFilter(stream, filter.name, length, params);
+      if (isArray(filter)) {
+        var filterArray = filter;
+        var paramsArray = params;
+        for (var i = 0, ii = filterArray.length; i < ii; ++i) {
+          filter = filterArray[i];
+          if (!isName(filter))
+            error('Bad filter name: ' + filter);
+
+          params = null;
+          if (isArray(paramsArray) && (i in paramsArray))
+            params = paramsArray[i];
+          stream = this.makeFilter(stream, filter.name, length, params);
+          // after the first stream the length variable is invalid
+          length = null;
+        }
+      }
+      return stream;
+    },
+    makeFilter: function Parser_makeFilter(stream, name, length, params) {
+      if (name == 'FlateDecode' || name == 'Fl') {
+        if (params) {
+          return new PredictorStream(new FlateStream(stream), params);
+        }
+        return new FlateStream(stream);
+      }
+      if (name == 'LZWDecode' || name == 'LZW') {
+        var earlyChange = 1;
+        if (params) {
+          if (params.has('EarlyChange'))
+            earlyChange = params.get('EarlyChange');
+          return new PredictorStream(
+            new LZWStream(stream, earlyChange), params);
+        }
+        return new LZWStream(stream, earlyChange);
+      }
+      if (name == 'DCTDecode' || name == 'DCT') {
+        var bytes = stream.getBytes(length);
+        return new JpegStream(bytes, stream.dict, this.xref);
+      }
+      if (name == 'JPXDecode' || name == 'JPX') {
+        var bytes = stream.getBytes(length);
+        return new JpxStream(bytes, stream.dict);
+      }
+      if (name == 'ASCII85Decode' || name == 'A85') {
+        return new Ascii85Stream(stream);
+      }
+      if (name == 'ASCIIHexDecode' || name == 'AHx') {
+        return new AsciiHexStream(stream);
+      }
+      if (name == 'CCITTFaxDecode' || name == 'CCF') {
+        return new CCITTFaxStream(stream, params);
+      }
+      if (name == 'RunLengthDecode' || name == 'RL') {
+        return new RunLengthStream(stream);
+      }
+      if (name == 'JBIG2Decode') {
+        error('JBIG2 image format is not currently supprted.');
+      }
+      warn('filter "' + name + '" not supported yet');
+      return stream;
+    }
+  };
+
+  return Parser;
+})();
+
+var Lexer = (function LexerClosure() {
+  function Lexer(stream) {
+    this.stream = stream;
+  }
+
+  Lexer.isSpace = function Lexer_isSpace(ch) {
+    return ch == ' ' || ch == '\t' || ch == '\x0d' || ch == '\x0a';
+  };
+
+  // A '1' in this array means the character is white space.  A '1' or
+  // '2' means the character ends a name or command.
+  var specialChars = [
+    1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0,   // 0x
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   // 1x
+    1, 0, 0, 0, 0, 2, 0, 0, 2, 2, 0, 0, 0, 0, 0, 2,   // 2x
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 0,   // 3x
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   // 4x
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 0, 0,   // 5x
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   // 6x
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 0, 0,   // 7x
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   // 8x
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   // 9x
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   // ax
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   // bx
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   // cx
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   // dx
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   // ex
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0    // fx
+  ];
+
+  function toHexDigit(ch) {
+    if (ch >= '0' && ch <= '9')
+      return ch.charCodeAt(0) - 48;
+    ch = ch.toUpperCase();
+    if (ch >= 'A' && ch <= 'F')
+      return ch.charCodeAt(0) - 55;
+    return -1;
+  }
+
+  Lexer.prototype = {
+    getNumber: function Lexer_getNumber(ch) {
+      var floating = false;
+      var str = ch;
+      var stream = this.stream;
+      for (;;) {
+        ch = stream.lookChar();
+        if (ch == '.' && !floating) {
+          str += ch;
+          floating = true;
+        } else if (ch == '-') {
+          // ignore minus signs in the middle of numbers to match
+          // Adobe's behavior
+          warn('Badly formated number');
+        } else if (ch >= '0' && ch <= '9') {
+          str += ch;
+        } else if (ch == 'e' || ch == 'E') {
+          floating = true;
+        } else {
+          // the last character doesn't belong to us
+          break;
+        }
+        stream.skip();
+      }
+      var value = parseFloat(str);
+      if (isNaN(value))
+        error('Invalid floating point number: ' + value);
+      return value;
+    },
+    getString: function Lexer_getString() {
+      var numParen = 1;
+      var done = false;
+      var str = '';
+      var stream = this.stream;
+      var ch;
+      do {
+        ch = stream.getChar();
+        switch (ch) {
+          case undefined:
+            warn('Unterminated string');
+            done = true;
+            break;
+          case '(':
+            ++numParen;
+            str += ch;
+            break;
+          case ')':
+            if (--numParen == 0) {
+              done = true;
+            } else {
+              str += ch;
+            }
+            break;
+          case '\\':
+            ch = stream.getChar();
+            switch (ch) {
+              case undefined:
+                warn('Unterminated string');
+                done = true;
+                break;
+              case 'n':
+                str += '\n';
+                break;
+              case 'r':
+                str += '\r';
+                break;
+              case 't':
+                str += '\t';
+                break;
+              case 'b':
+                str += '\b';
+                break;
+              case 'f':
+                str += '\f';
+                break;
+              case '\\':
+              case '(':
+              case ')':
+                str += ch;
+                break;
+              case '0': case '1': case '2': case '3':
+              case '4': case '5': case '6': case '7':
+                var x = ch - '0';
+                ch = stream.lookChar();
+                if (ch >= '0' && ch <= '7') {
+                  stream.skip();
+                  x = (x << 3) + (ch - '0');
+                  ch = stream.lookChar();
+                  if (ch >= '0' && ch <= '7') {
+                    stream.skip();
+                    x = (x << 3) + (ch - '0');
+                  }
+                }
+
+                str += String.fromCharCode(x);
+                break;
+              case '\r':
+                ch = stream.lookChar();
+                if (ch == '\n')
+                  stream.skip();
+                break;
+              case '\n':
+                break;
+              default:
+                str += ch;
+            }
+            break;
+          default:
+            str += ch;
+        }
+      } while (!done);
+      return str;
+    },
+    getName: function Lexer_getName(ch) {
+      var str = '';
+      var stream = this.stream;
+      while (!!(ch = stream.lookChar()) && !specialChars[ch.charCodeAt(0)]) {
+        stream.skip();
+        if (ch == '#') {
+          ch = stream.lookChar();
+          var x = toHexDigit(ch);
+          if (x != -1) {
+            stream.skip();
+            var x2 = toHexDigit(stream.getChar());
+            if (x2 == -1)
+              error('Illegal digit in hex char in name: ' + x2);
+            str += String.fromCharCode((x << 4) | x2);
+          } else {
+            str += '#';
+            str += ch;
+          }
+        } else {
+          str += ch;
+        }
+      }
+      if (str.length > 128)
+        error('Warning: name token is longer than allowed by the spec: ' +
+              str.length);
+      return new Name(str);
+    },
+    getHexString: function Lexer_getHexString(ch) {
+      var str = '';
+      var stream = this.stream;
+      for (;;) {
+        ch = stream.getChar();
+        if (ch == '>') {
+          break;
+        }
+        if (!ch) {
+          warn('Unterminated hex string');
+          break;
+        }
+        if (specialChars[ch.charCodeAt(0)] != 1) {
+          var x, x2;
+          if ((x = toHexDigit(ch)) == -1)
+            error('Illegal character in hex string: ' + ch);
+
+          ch = stream.getChar();
+          while (specialChars[ch.charCodeAt(0)] == 1)
+            ch = stream.getChar();
+
+          if ((x2 = toHexDigit(ch)) == -1)
+            error('Illegal character in hex string: ' + ch);
+
+          str += String.fromCharCode((x << 4) | x2);
+        }
+      }
+      return str;
+    },
+    getObj: function Lexer_getObj() {
+      // skip whitespace and comments
+      var comment = false;
+      var stream = this.stream;
+      var ch;
+      while (true) {
+        if (!(ch = stream.getChar()))
+          return EOF;
+        if (comment) {
+          if (ch == '\r' || ch == '\n')
+            comment = false;
+        } else if (ch == '%') {
+          comment = true;
+        } else if (specialChars[ch.charCodeAt(0)] != 1) {
+          break;
+        }
+      }
+
+      // start reading token
+      switch (ch) {
+        case '0': case '1': case '2': case '3': case '4':
+        case '5': case '6': case '7': case '8': case '9':
+        case '+': case '-': case '.':
+          return this.getNumber(ch);
+        case '(':
+          return this.getString();
+        case '/':
+          return this.getName(ch);
+        // array punctuation
+        case '[':
+        case ']':
+          return Cmd.get(ch);
+        // hex string or dict punctuation
+        case '<':
+          ch = stream.lookChar();
+          if (ch == '<') {
+            // dict punctuation
+            stream.skip();
+            return Cmd.get('<<');
+          }
+          return this.getHexString(ch);
+        // dict punctuation
+        case '>':
+          ch = stream.lookChar();
+          if (ch == '>') {
+            stream.skip();
+            return Cmd.get('>>');
+          }
+        case '{':
+        case '}':
+          return Cmd.get(ch);
+        // fall through
+        case ')':
+          error('Illegal character: ' + ch);
+      }
+
+      // command
+      var str = ch;
+      while (!!(ch = stream.lookChar()) && !specialChars[ch.charCodeAt(0)]) {
+        stream.skip();
+        if (str.length == 128)
+          error('Command token too long: ' + str.length);
+
+        str += ch;
+      }
+      if (str == 'true')
+        return true;
+      if (str == 'false')
+        return false;
+      if (str == 'null')
+        return null;
+      return Cmd.get(str);
+    },
+    skipToNextLine: function Lexer_skipToNextLine() {
+      var stream = this.stream;
+      while (true) {
+        var ch = stream.getChar();
+        if (!ch || ch == '\n')
+          return;
+        if (ch == '\r') {
+          if ((ch = stream.lookChar()) == '\n')
+            stream.skip();
+          return;
+        }
+      }
+    },
+    skip: function Lexer_skip() {
+      this.stream.skip();
+    }
+  };
+
+  return Lexer;
+})();
+
+var Linearization = (function LinearizationClosure() {
+  function Linearization(stream) {
+    this.parser = new Parser(new Lexer(stream), false, null);
+    var obj1 = this.parser.getObj();
+    var obj2 = this.parser.getObj();
+    var obj3 = this.parser.getObj();
+    this.linDict = this.parser.getObj();
+    if (isInt(obj1) && isInt(obj2) && isCmd(obj3, 'obj') &&
+        isDict(this.linDict)) {
+      var obj = this.linDict.get('Linearized');
+      if (!(isNum(obj) && obj > 0))
+        this.linDict = null;
+    }
+  }
+
+  Linearization.prototype = {
+    getInt: function Linearization_getInt(name) {
+      var linDict = this.linDict;
+      var obj;
+      if (isDict(linDict) &&
+          isInt(obj = linDict.get(name)) &&
+          obj > 0) {
+        return obj;
+      }
+      error('"' + name + '" field in linearization table is invalid');
+    },
+    getHint: function Linearization_getHint(index) {
+      var linDict = this.linDict;
+      var obj1, obj2;
+      if (isDict(linDict) &&
+          isArray(obj1 = linDict.get('H')) &&
+          obj1.length >= 2 &&
+          isInt(obj2 = obj1[index]) &&
+          obj2 > 0) {
+        return obj2;
+      }
+      error('Hints table in linearization table is invalid: ' + index);
+    },
+    get length() {
+      if (!isDict(this.linDict))
+        return 0;
+      return this.getInt('L');
+    },
+    get hintsOffset() {
+      return this.getHint(0);
+    },
+    get hintsLength() {
+      return this.getHint(1);
+    },
+    get hintsOffset2() {
+      return this.getHint(2);
+    },
+    get hintsLenth2() {
+      return this.getHint(3);
+    },
+    get objectNumberFirst() {
+      return this.getInt('O');
+    },
+    get endFirst() {
+      return this.getInt('E');
+    },
+    get numPages() {
+      return this.getInt('N');
+    },
+    get mainXRefEntriesOffset() {
+      return this.getInt('T');
+    },
+    get pageFirst() {
+      return this.getInt('P');
+    }
+  };
+
+  return Linearization;
+})();
+
+
+/* -*- Mode: Java; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/* vim: set shiftwidth=2 tabstop=2 autoindent cindent expandtab: */
+
+'use strict';
+
+var PatternType = {
+  AXIAL: 2,
+  RADIAL: 3
+};
+
+var Pattern = (function PatternClosure() {
+  // Constructor should define this.getPattern
+  function Pattern() {
+    error('should not call Pattern constructor');
+  }
+
+  Pattern.prototype = {
+    // Input: current Canvas context
+    // Output: the appropriate fillStyle or strokeStyle
+    getPattern: function Pattern_getPattern(ctx) {
+      error('Should not call Pattern.getStyle: ' + ctx);
+    }
+  };
+
+  Pattern.shadingFromIR = function Pattern_shadingFromIR(raw) {
+    return Shadings[raw[0]].fromIR(raw);
+  };
+
+  Pattern.parseShading = function Pattern_parseShading(shading, matrix, xref,
+                                                       res) {
+
+    var dict = isStream(shading) ? shading.dict : shading;
+    var type = dict.get('ShadingType');
+
+    switch (type) {
+      case PatternType.AXIAL:
+      case PatternType.RADIAL:
+        // Both radial and axial shadings are handled by RadialAxial shading.
+        return new Shadings.RadialAxial(dict, matrix, xref, res);
+      default:
+        return new Shadings.Dummy();
+    }
+  };
+  return Pattern;
+})();
+
+var Shadings = {};
+
+// Radial and axial shading have very similar implementations
+// If needed, the implementations can be broken into two classes
+Shadings.RadialAxial = (function RadialAxialClosure() {
+  function RadialAxial(dict, matrix, xref, res, ctx) {
+    this.matrix = matrix;
+    this.coordsArr = dict.get('Coords');
+    this.shadingType = dict.get('ShadingType');
+    this.type = 'Pattern';
+
+    this.ctx = ctx;
+    var cs = dict.get('ColorSpace', 'CS');
+    cs = ColorSpace.parse(cs, xref, res);
+    this.cs = cs;
+
+    var t0 = 0.0, t1 = 1.0;
+    if (dict.has('Domain')) {
+      var domainArr = dict.get('Domain');
+      t0 = domainArr[0];
+      t1 = domainArr[1];
+    }
+
+    var extendStart = false, extendEnd = false;
+    if (dict.has('Extend')) {
+      var extendArr = dict.get('Extend');
+      extendStart = extendArr[0];
+      extendEnd = extendArr[1];
+      TODO('Support extend');
+    }
+
+    this.extendStart = extendStart;
+    this.extendEnd = extendEnd;
+
+    var fnObj = dict.get('Function');
+    if (isArray(fnObj))
+      error('No support for array of functions');
+    if (!isPDFFunction(fnObj))
+      error('Invalid function');
+    var fn = PDFFunction.parse(xref, fnObj);
+
+    // 10 samples seems good enough for now, but probably won't work
+    // if there are sharp color changes. Ideally, we would implement
+    // the spec faithfully and add lossless optimizations.
+    var step = (t1 - t0) / 10;
+    var diff = t1 - t0;
+
+    var colorStops = [];
+    for (var i = t0; i <= t1; i += step) {
+      var rgbColor = cs.getRgb(fn([i]));
+      var cssColor = Util.makeCssRgb(rgbColor[0], rgbColor[1], rgbColor[2]);
+      colorStops.push([(i - t0) / diff, cssColor]);
+    }
+
+    this.colorStops = colorStops;
+  }
+
+  RadialAxial.fromIR = function RadialAxial_fromIR(raw) {
+    var type = raw[1];
+    var colorStops = raw[2];
+    var p0 = raw[3];
+    var p1 = raw[4];
+    var r0 = raw[5];
+    var r1 = raw[6];
+    return {
+      type: 'Pattern',
+      getPattern: function RadialAxial_getPattern(ctx) {
+        var curMatrix = ctx.mozCurrentTransform;
+        if (curMatrix) {
+          var userMatrix = ctx.mozCurrentTransformInverse;
+
+          p0 = Util.applyTransform(p0, curMatrix);
+          p0 = Util.applyTransform(p0, userMatrix);
+
+          p1 = Util.applyTransform(p1, curMatrix);
+          p1 = Util.applyTransform(p1, userMatrix);
+        }
+
+        var grad;
+        if (type == PatternType.AXIAL)
+          grad = ctx.createLinearGradient(p0[0], p0[1], p1[0], p1[1]);
+        else if (type == PatternType.RADIAL)
+          grad = ctx.createRadialGradient(p0[0], p0[1], r0, p1[0], p1[1], r1);
+
+        for (var i = 0, ii = colorStops.length; i < ii; ++i) {
+          var c = colorStops[i];
+          grad.addColorStop(c[0], c[1]);
+        }
+        return grad;
+      }
+    };
+  };
+
+  RadialAxial.prototype = {
+    getIR: function RadialAxial_getIR() {
+      var coordsArr = this.coordsArr;
+      var type = this.shadingType;
+      if (type == PatternType.AXIAL) {
+        var p0 = [coordsArr[0], coordsArr[1]];
+        var p1 = [coordsArr[2], coordsArr[3]];
+        var r0 = null;
+        var r1 = null;
+      } else if (type == PatternType.RADIAL) {
+        var p0 = [coordsArr[0], coordsArr[1]];
+        var p1 = [coordsArr[3], coordsArr[4]];
+        var r0 = coordsArr[2];
+        var r1 = coordsArr[5];
+      } else {
+        error('getPattern type unknown: ' + type);
+      }
+
+      var matrix = this.matrix;
+      if (matrix) {
+        p0 = Util.applyTransform(p0, matrix);
+        p1 = Util.applyTransform(p1, matrix);
+      }
+
+      return ['RadialAxial', type, this.colorStops, p0, p1, r0, r1];
+    }
+  };
+
+  return RadialAxial;
+})();
+
+Shadings.Dummy = (function DummyClosure() {
+  function Dummy() {
+    this.type = 'Pattern';
+  }
+
+  Dummy.fromIR = function Dummy_fromIR() {
+    return 'hotpink';
+  };
+
+  Dummy.prototype = {
+    getIR: function Dummy_getIR() {
+      return ['Dummy'];
+    }
+  };
+  return Dummy;
+})();
+
+var TilingPattern = (function TilingPatternClosure() {
+  var PaintType = {
+    COLORED: 1,
+    UNCOLORED: 2
+  };
+  var MAX_PATTERN_SIZE = 512;
+
+  function TilingPattern(IR, color, ctx, objs) {
+    var operatorList = IR[2];
+    this.matrix = IR[3];
+    var bbox = IR[4];
+    var xstep = IR[5];
+    var ystep = IR[6];
+    var paintType = IR[7];
+
+    TODO('TilingType');
+
+    this.curMatrix = ctx.mozCurrentTransform;
+    this.invMatrix = ctx.mozCurrentTransformInverse;
+    this.ctx = ctx;
+    this.type = 'Pattern';
+
+    var x0 = bbox[0], y0 = bbox[1], x1 = bbox[2], y1 = bbox[3];
+
+    var topLeft = [x0, y0];
+    // we want the canvas to be as large as the step size
+    var botRight = [x0 + xstep, y0 + ystep];
+
+    var width = botRight[0] - topLeft[0];
+    var height = botRight[1] - topLeft[1];
+
+    // TODO: hack to avoid OOM, we would ideally compute the tiling
+    // pattern to be only as large as the acual size in device space
+    // This could be computed with .mozCurrentTransform, but still
+    // needs to be implemented
+    while (Math.abs(width) > MAX_PATTERN_SIZE ||
+           Math.abs(height) > MAX_PATTERN_SIZE) {
+      width = height = MAX_PATTERN_SIZE;
+    }
+
+    var tmpCanvas = createScratchCanvas(width, height);
+
+    // set the new canvas element context as the graphics context
+    var tmpCtx = tmpCanvas.getContext('2d');
+    var graphics = new CanvasGraphics(tmpCtx, objs);
+
+    switch (paintType) {
+      case PaintType.COLORED:
+        tmpCtx.fillStyle = ctx.fillStyle;
+        tmpCtx.strokeStyle = ctx.strokeStyle;
+        break;
+      case PaintType.UNCOLORED:
+        var cssColor = Util.makeCssRgb(this, color[0], color[1], color[2]);
+        tmpCtx.fillStyle = cssColor;
+        tmpCtx.strokeStyle = cssColor;
+        break;
+      default:
+        error('Unsupported paint type: ' + paintType);
+    }
+
+    var scale = [width / xstep, height / ystep];
+    this.scale = scale;
+
+    // transform coordinates to pattern space
+    var tmpTranslate = [1, 0, 0, 1, -topLeft[0], -topLeft[1]];
+    var tmpScale = [scale[0], 0, 0, scale[1], 0, 0];
+    graphics.transform.apply(graphics, tmpScale);
+    graphics.transform.apply(graphics, tmpTranslate);
+
+    if (bbox && isArray(bbox) && 4 == bbox.length) {
+      var bboxWidth = x1 - x0;
+      var bboxHeight = y1 - y0;
+      graphics.rectangle(x0, y0, bboxWidth, bboxHeight);
+      graphics.clip();
+      graphics.endPath();
+    }
+
+    graphics.executeOperatorList(operatorList);
+
+    this.canvas = tmpCanvas;
+  }
+
+  TilingPattern.getIR = function TilingPattern_getIR(operatorList, dict, args) {
+    var matrix = dict.get('Matrix');
+    var bbox = dict.get('BBox');
+    var xstep = dict.get('XStep');
+    var ystep = dict.get('YStep');
+    var paintType = dict.get('PaintType');
+
+    return [
+      'TilingPattern', args, operatorList, matrix, bbox, xstep, ystep, paintType
+    ];
+  };
+
+  TilingPattern.prototype = {
+    getPattern: function TilingPattern_getPattern() {
+      var matrix = this.matrix;
+      var curMatrix = this.curMatrix;
+      var ctx = this.ctx;
+
+      if (curMatrix)
+        ctx.setTransform.apply(ctx, curMatrix);
+
+      if (matrix)
+        ctx.transform.apply(ctx, matrix);
+
+      var scale = this.scale;
+      ctx.scale(1 / scale[0], 1 / scale[1]);
+
+      return ctx.createPattern(this.canvas, 'repeat');
+    }
+  };
+
+  return TilingPattern;
+})();
+
+
+/* -*- Mode: Java; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/* vim: set shiftwidth=2 tabstop=2 autoindent cindent expandtab: */
+
+'use strict';
+
+var Stream = (function StreamClosure() {
+  function Stream(arrayBuffer, start, length, dict) {
+    this.bytes = new Uint8Array(arrayBuffer);
+    this.start = start || 0;
+    this.pos = this.start;
+    this.end = (start + length) || this.bytes.length;
+    this.dict = dict;
+  }
+
+  // required methods for a stream. if a particular stream does not
+  // implement these, an error should be thrown
+  Stream.prototype = {
+    get length() {
+      return this.end - this.start;
+    },
+    getByte: function Stream_getByte() {
+      if (this.pos >= this.end)
+        return null;
+      return this.bytes[this.pos++];
+    },
+    // returns subarray of original buffer
+    // should only be read
+    getBytes: function Stream_getBytes(length) {
+      var bytes = this.bytes;
+      var pos = this.pos;
+      var strEnd = this.end;
+
+      if (!length)
+        return bytes.subarray(pos, strEnd);
+
+      var end = pos + length;
+      if (end > strEnd)
+        end = strEnd;
+
+      this.pos = end;
+      return bytes.subarray(pos, end);
+    },
+    lookChar: function Stream_lookChar() {
+      if (this.pos >= this.end)
+        return null;
+      return String.fromCharCode(this.bytes[this.pos]);
+    },
+    getChar: function Stream_getChar() {
+      if (this.pos >= this.end)
+        return null;
+      return String.fromCharCode(this.bytes[this.pos++]);
+    },
+    skip: function Stream_skip(n) {
+      if (!n)
+        n = 1;
+      this.pos += n;
+    },
+    reset: function Stream_reset() {
+      this.pos = this.start;
+    },
+    moveStart: function Stream_moveStart() {
+      this.start = this.pos;
+    },
+    makeSubStream: function Stream_makeSubStream(start, length, dict) {
+      return new Stream(this.bytes.buffer, start, length, dict);
+    },
+    isStream: true
+  };
+
+  return Stream;
+})();
+
+var StringStream = (function StringStreamClosure() {
+  function StringStream(str) {
+    var length = str.length;
+    var bytes = new Uint8Array(length);
+    for (var n = 0; n < length; ++n)
+      bytes[n] = str.charCodeAt(n);
+    Stream.call(this, bytes);
+  }
+
+  StringStream.prototype = Stream.prototype;
+
+  return StringStream;
+})();
+
+// super class for the decoding streams
+var DecodeStream = (function DecodeStreamClosure() {
+  function DecodeStream() {
+    this.pos = 0;
+    this.bufferLength = 0;
+    this.eof = false;
+    this.buffer = null;
+  }
+
+  DecodeStream.prototype = {
+    ensureBuffer: function DecodeStream_ensureBuffer(requested) {
+      var buffer = this.buffer;
+      var current = buffer ? buffer.byteLength : 0;
+      if (requested < current)
+        return buffer;
+      var size = 512;
+      while (size < requested)
+        size <<= 1;
+      var buffer2 = new Uint8Array(size);
+      for (var i = 0; i < current; ++i)
+        buffer2[i] = buffer[i];
+      return (this.buffer = buffer2);
+    },
+    getByte: function DecodeStream_getByte() {
+      var pos = this.pos;
+      while (this.bufferLength <= pos) {
+        if (this.eof)
+          return null;
+        this.readBlock();
+      }
+      return this.buffer[this.pos++];
+    },
+    getBytes: function DecodeStream_getBytes(length) {
+      var end, pos = this.pos;
+
+      if (length) {
+        this.ensureBuffer(pos + length);
+        end = pos + length;
+
+        while (!this.eof && this.bufferLength < end)
+          this.readBlock();
+
+        var bufEnd = this.bufferLength;
+        if (end > bufEnd)
+          end = bufEnd;
+      } else {
+        while (!this.eof)
+          this.readBlock();
+
+        end = this.bufferLength;
+
+        // checking if bufferLength is still 0 then
+        // the buffer has to be initialized
+        if (!end)
+          this.buffer = new Uint8Array(0);
+      }
+
+      this.pos = end;
+      return this.buffer.subarray(pos, end);
+    },
+    lookChar: function DecodeStream_lookChar() {
+      var pos = this.pos;
+      while (this.bufferLength <= pos) {
+        if (this.eof)
+          return null;
+        this.readBlock();
+      }
+      return String.fromCharCode(this.buffer[this.pos]);
+    },
+    getChar: function DecodeStream_getChar() {
+      var pos = this.pos;
+      while (this.bufferLength <= pos) {
+        if (this.eof)
+          return null;
+        this.readBlock();
+      }
+      return String.fromCharCode(this.buffer[this.pos++]);
+    },
+    makeSubStream: function DecodeStream_makeSubStream(start, length, dict) {
+      var end = start + length;
+      while (this.bufferLength <= end && !this.eof)
+        this.readBlock();
+      return new Stream(this.buffer, start, length, dict);
+    },
+    skip: function DecodeStream_skip(n) {
+      if (!n)
+        n = 1;
+      this.pos += n;
+    },
+    reset: function DecodeStream_reset() {
+      this.pos = 0;
+    }
+  };
+
+  return DecodeStream;
+})();
+
+var FakeStream = (function FakeStreamClosure() {
+  function FakeStream(stream) {
+    this.dict = stream.dict;
+    DecodeStream.call(this);
+  }
+
+  FakeStream.prototype = Object.create(DecodeStream.prototype);
+  FakeStream.prototype.readBlock = function FakeStream_readBlock() {
+    var bufferLength = this.bufferLength;
+    bufferLength += 1024;
+    var buffer = this.ensureBuffer(bufferLength);
+    this.bufferLength = bufferLength;
+  };
+
+  FakeStream.prototype.getBytes = function FakeStream_getBytes(length) {
+    var end, pos = this.pos;
+
+    if (length) {
+      this.ensureBuffer(pos + length);
+      end = pos + length;
+
+      while (!this.eof && this.bufferLength < end)
+        this.readBlock();
+
+      var bufEnd = this.bufferLength;
+      if (end > bufEnd)
+        end = bufEnd;
+    } else {
+      this.eof = true;
+      end = this.bufferLength;
+    }
+
+    this.pos = end;
+    return this.buffer.subarray(pos, end);
+  };
+
+  return FakeStream;
+})();
+
+var StreamsSequenceStream = (function StreamsSequenceStreamClosure() {
+  function StreamsSequenceStream(streams) {
+    this.streams = streams;
+    DecodeStream.call(this);
+  }
+
+  StreamsSequenceStream.prototype = Object.create(DecodeStream.prototype);
+
+  StreamsSequenceStream.prototype.readBlock =
+    function streamSequenceStreamReadBlock() {
+
+    var streams = this.streams;
+    if (streams.length == 0) {
+      this.eof = true;
+      return;
+    }
+    var stream = streams.shift();
+    var chunk = stream.getBytes();
+    var bufferLength = this.bufferLength;
+    var newLength = bufferLength + chunk.length;
+    var buffer = this.ensureBuffer(newLength);
+    buffer.set(chunk, bufferLength);
+    this.bufferLength = newLength;
+  };
+
+  return StreamsSequenceStream;
+})();
+
+var FlateStream = (function FlateStreamClosure() {
+  var codeLenCodeMap = new Uint32Array([
+    16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15
+  ]);
+
+  var lengthDecode = new Uint32Array([
+    0x00003, 0x00004, 0x00005, 0x00006, 0x00007, 0x00008, 0x00009, 0x0000a,
+    0x1000b, 0x1000d, 0x1000f, 0x10011, 0x20013, 0x20017, 0x2001b, 0x2001f,
+    0x30023, 0x3002b, 0x30033, 0x3003b, 0x40043, 0x40053, 0x40063, 0x40073,
+    0x50083, 0x500a3, 0x500c3, 0x500e3, 0x00102, 0x00102, 0x00102
+  ]);
+
+  var distDecode = new Uint32Array([
+    0x00001, 0x00002, 0x00003, 0x00004, 0x10005, 0x10007, 0x20009, 0x2000d,
+    0x30011, 0x30019, 0x40021, 0x40031, 0x50041, 0x50061, 0x60081, 0x600c1,
+    0x70101, 0x70181, 0x80201, 0x80301, 0x90401, 0x90601, 0xa0801, 0xa0c01,
+    0xb1001, 0xb1801, 0xc2001, 0xc3001, 0xd4001, 0xd6001
+  ]);
+
+  var fixedLitCodeTab = [new Uint32Array([
+    0x70100, 0x80050, 0x80010, 0x80118, 0x70110, 0x80070, 0x80030, 0x900c0,
+    0x70108, 0x80060, 0x80020, 0x900a0, 0x80000, 0x80080, 0x80040, 0x900e0,
+    0x70104, 0x80058, 0x80018, 0x90090, 0x70114, 0x80078, 0x80038, 0x900d0,
+    0x7010c, 0x80068, 0x80028, 0x900b0, 0x80008, 0x80088, 0x80048, 0x900f0,
+    0x70102, 0x80054, 0x80014, 0x8011c, 0x70112, 0x80074, 0x80034, 0x900c8,
+    0x7010a, 0x80064, 0x80024, 0x900a8, 0x80004, 0x80084, 0x80044, 0x900e8,
+    0x70106, 0x8005c, 0x8001c, 0x90098, 0x70116, 0x8007c, 0x8003c, 0x900d8,
+    0x7010e, 0x8006c, 0x8002c, 0x900b8, 0x8000c, 0x8008c, 0x8004c, 0x900f8,
+    0x70101, 0x80052, 0x80012, 0x8011a, 0x70111, 0x80072, 0x80032, 0x900c4,
+    0x70109, 0x80062, 0x80022, 0x900a4, 0x80002, 0x80082, 0x80042, 0x900e4,
+    0x70105, 0x8005a, 0x8001a, 0x90094, 0x70115, 0x8007a, 0x8003a, 0x900d4,
+    0x7010d, 0x8006a, 0x8002a, 0x900b4, 0x8000a, 0x8008a, 0x8004a, 0x900f4,
+    0x70103, 0x80056, 0x80016, 0x8011e, 0x70113, 0x80076, 0x80036, 0x900cc,
+    0x7010b, 0x80066, 0x80026, 0x900ac, 0x80006, 0x80086, 0x80046, 0x900ec,
+    0x70107, 0x8005e, 0x8001e, 0x9009c, 0x70117, 0x8007e, 0x8003e, 0x900dc,
+    0x7010f, 0x8006e, 0x8002e, 0x900bc, 0x8000e, 0x8008e, 0x8004e, 0x900fc,
+    0x70100, 0x80051, 0x80011, 0x80119, 0x70110, 0x80071, 0x80031, 0x900c2,
+    0x70108, 0x80061, 0x80021, 0x900a2, 0x80001, 0x80081, 0x80041, 0x900e2,
+    0x70104, 0x80059, 0x80019, 0x90092, 0x70114, 0x80079, 0x80039, 0x900d2,
+    0x7010c, 0x80069, 0x80029, 0x900b2, 0x80009, 0x80089, 0x80049, 0x900f2,
+    0x70102, 0x80055, 0x80015, 0x8011d, 0x70112, 0x80075, 0x80035, 0x900ca,
+    0x7010a, 0x80065, 0x80025, 0x900aa, 0x80005, 0x80085, 0x80045, 0x900ea,
+    0x70106, 0x8005d, 0x8001d, 0x9009a, 0x70116, 0x8007d, 0x8003d, 0x900da,
+    0x7010e, 0x8006d, 0x8002d, 0x900ba, 0x8000d, 0x8008d, 0x8004d, 0x900fa,
+    0x70101, 0x80053, 0x80013, 0x8011b, 0x70111, 0x80073, 0x80033, 0x900c6,
+    0x70109, 0x80063, 0x80023, 0x900a6, 0x80003, 0x80083, 0x80043, 0x900e6,
+    0x70105, 0x8005b, 0x8001b, 0x90096, 0x70115, 0x8007b, 0x8003b, 0x900d6,
+    0x7010d, 0x8006b, 0x8002b, 0x900b6, 0x8000b, 0x8008b, 0x8004b, 0x900f6,
+    0x70103, 0x80057, 0x80017, 0x8011f, 0x70113, 0x80077, 0x80037, 0x900ce,
+    0x7010b, 0x80067, 0x80027, 0x900ae, 0x80007, 0x80087, 0x80047, 0x900ee,
+    0x70107, 0x8005f, 0x8001f, 0x9009e, 0x70117, 0x8007f, 0x8003f, 0x900de,
+    0x7010f, 0x8006f, 0x8002f, 0x900be, 0x8000f, 0x8008f, 0x8004f, 0x900fe,
+    0x70100, 0x80050, 0x80010, 0x80118, 0x70110, 0x80070, 0x80030, 0x900c1,
+    0x70108, 0x80060, 0x80020, 0x900a1, 0x80000, 0x80080, 0x80040, 0x900e1,
+    0x70104, 0x80058, 0x80018, 0x90091, 0x70114, 0x80078, 0x80038, 0x900d1,
+    0x7010c, 0x80068, 0x80028, 0x900b1, 0x80008, 0x80088, 0x80048, 0x900f1,
+    0x70102, 0x80054, 0x80014, 0x8011c, 0x70112, 0x80074, 0x80034, 0x900c9,
+    0x7010a, 0x80064, 0x80024, 0x900a9, 0x80004, 0x80084, 0x80044, 0x900e9,
+    0x70106, 0x8005c, 0x8001c, 0x90099, 0x70116, 0x8007c, 0x8003c, 0x900d9,
+    0x7010e, 0x8006c, 0x8002c, 0x900b9, 0x8000c, 0x8008c, 0x8004c, 0x900f9,
+    0x70101, 0x80052, 0x80012, 0x8011a, 0x70111, 0x80072, 0x80032, 0x900c5,
+    0x70109, 0x80062, 0x80022, 0x900a5, 0x80002, 0x80082, 0x80042, 0x900e5,
+    0x70105, 0x8005a, 0x8001a, 0x90095, 0x70115, 0x8007a, 0x8003a, 0x900d5,
+    0x7010d, 0x8006a, 0x8002a, 0x900b5, 0x8000a, 0x8008a, 0x8004a, 0x900f5,
+    0x70103, 0x80056, 0x80016, 0x8011e, 0x70113, 0x80076, 0x80036, 0x900cd,
+    0x7010b, 0x80066, 0x80026, 0x900ad, 0x80006, 0x80086, 0x80046, 0x900ed,
+    0x70107, 0x8005e, 0x8001e, 0x9009d, 0x70117, 0x8007e, 0x8003e, 0x900dd,
+    0x7010f, 0x8006e, 0x8002e, 0x900bd, 0x8000e, 0x8008e, 0x8004e, 0x900fd,
+    0x70100, 0x80051, 0x80011, 0x80119, 0x70110, 0x80071, 0x80031, 0x900c3,
+    0x70108, 0x80061, 0x80021, 0x900a3, 0x80001, 0x80081, 0x80041, 0x900e3,
+    0x70104, 0x80059, 0x80019, 0x90093, 0x70114, 0x80079, 0x80039, 0x900d3,
+    0x7010c, 0x80069, 0x80029, 0x900b3, 0x80009, 0x80089, 0x80049, 0x900f3,
+    0x70102, 0x80055, 0x80015, 0x8011d, 0x70112, 0x80075, 0x80035, 0x900cb,
+    0x7010a, 0x80065, 0x80025, 0x900ab, 0x80005, 0x80085, 0x80045, 0x900eb,
+    0x70106, 0x8005d, 0x8001d, 0x9009b, 0x70116, 0x8007d, 0x8003d, 0x900db,
+    0x7010e, 0x8006d, 0x8002d, 0x900bb, 0x8000d, 0x8008d, 0x8004d, 0x900fb,
+    0x70101, 0x80053, 0x80013, 0x8011b, 0x70111, 0x80073, 0x80033, 0x900c7,
+    0x70109, 0x80063, 0x80023, 0x900a7, 0x80003, 0x80083, 0x80043, 0x900e7,
+    0x70105, 0x8005b, 0x8001b, 0x90097, 0x70115, 0x8007b, 0x8003b, 0x900d7,
+    0x7010d, 0x8006b, 0x8002b, 0x900b7, 0x8000b, 0x8008b, 0x8004b, 0x900f7,
+    0x70103, 0x80057, 0x80017, 0x8011f, 0x70113, 0x80077, 0x80037, 0x900cf,
+    0x7010b, 0x80067, 0x80027, 0x900af, 0x80007, 0x80087, 0x80047, 0x900ef,
+    0x70107, 0x8005f, 0x8001f, 0x9009f, 0x70117, 0x8007f, 0x8003f, 0x900df,
+    0x7010f, 0x8006f, 0x8002f, 0x900bf, 0x8000f, 0x8008f, 0x8004f, 0x900ff
+  ]), 9];
+
+  var fixedDistCodeTab = [new Uint32Array([
+    0x50000, 0x50010, 0x50008, 0x50018, 0x50004, 0x50014, 0x5000c, 0x5001c,
+    0x50002, 0x50012, 0x5000a, 0x5001a, 0x50006, 0x50016, 0x5000e, 0x00000,
+    0x50001, 0x50011, 0x50009, 0x50019, 0x50005, 0x50015, 0x5000d, 0x5001d,
+    0x50003, 0x50013, 0x5000b, 0x5001b, 0x50007, 0x50017, 0x5000f, 0x00000
+  ]), 5];
+
+  function FlateStream(stream) {
+    var bytes = stream.getBytes();
+    var bytesPos = 0;
+
+    this.dict = stream.dict;
+    var cmf = bytes[bytesPos++];
+    var flg = bytes[bytesPos++];
+    if (cmf == -1 || flg == -1)
+      error('Invalid header in flate stream: ' + cmf + ', ' + flg);
+    if ((cmf & 0x0f) != 0x08)
+      error('Unknown compression method in flate stream: ' + cmf + ', ' + flg);
+    if ((((cmf << 8) + flg) % 31) != 0)
+      error('Bad FCHECK in flate stream: ' + cmf + ', ' + flg);
+    if (flg & 0x20)
+      error('FDICT bit set in flate stream: ' + cmf + ', ' + flg);
+
+    this.bytes = bytes;
+    this.bytesPos = bytesPos;
+
+    this.codeSize = 0;
+    this.codeBuf = 0;
+
+    DecodeStream.call(this);
+  }
+
+  FlateStream.prototype = Object.create(DecodeStream.prototype);
+
+  FlateStream.prototype.getBits = function FlateStream_getBits(bits) {
+    var codeSize = this.codeSize;
+    var codeBuf = this.codeBuf;
+    var bytes = this.bytes;
+    var bytesPos = this.bytesPos;
+
+    var b;
+    while (codeSize < bits) {
+      if (typeof (b = bytes[bytesPos++]) == 'undefined')
+        error('Bad encoding in flate stream');
+      codeBuf |= b << codeSize;
+      codeSize += 8;
+    }
+    b = codeBuf & ((1 << bits) - 1);
+    this.codeBuf = codeBuf >> bits;
+    this.codeSize = codeSize -= bits;
+    this.bytesPos = bytesPos;
+    return b;
+  };
+
+  FlateStream.prototype.getCode = function FlateStream_getCode(table) {
+    var codes = table[0];
+    var maxLen = table[1];
+    var codeSize = this.codeSize;
+    var codeBuf = this.codeBuf;
+    var bytes = this.bytes;
+    var bytesPos = this.bytesPos;
+
+    while (codeSize < maxLen) {
+      var b;
+      if (typeof (b = bytes[bytesPos++]) == 'undefined')
+        error('Bad encoding in flate stream');
+      codeBuf |= (b << codeSize);
+      codeSize += 8;
+    }
+    var code = codes[codeBuf & ((1 << maxLen) - 1)];
+    var codeLen = code >> 16;
+    var codeVal = code & 0xffff;
+    if (codeSize == 0 || codeSize < codeLen || codeLen == 0)
+      error('Bad encoding in flate stream');
+    this.codeBuf = (codeBuf >> codeLen);
+    this.codeSize = (codeSize - codeLen);
+    this.bytesPos = bytesPos;
+    return codeVal;
+  };
+
+  FlateStream.prototype.generateHuffmanTable =
+    function flateStreamGenerateHuffmanTable(lengths) {
+    var n = lengths.length;
+
+    // find max code length
+    var maxLen = 0;
+    for (var i = 0; i < n; ++i) {
+      if (lengths[i] > maxLen)
+        maxLen = lengths[i];
+    }
+
+    // build the table
+    var size = 1 << maxLen;
+    var codes = new Uint32Array(size);
+    for (var len = 1, code = 0, skip = 2;
+         len <= maxLen;
+         ++len, code <<= 1, skip <<= 1) {
+      for (var val = 0; val < n; ++val) {
+        if (lengths[val] == len) {
+          // bit-reverse the code
+          var code2 = 0;
+          var t = code;
+          for (var i = 0; i < len; ++i) {
+            code2 = (code2 << 1) | (t & 1);
+            t >>= 1;
+          }
+
+          // fill the table entries
+          for (var i = code2; i < size; i += skip)
+            codes[i] = (len << 16) | val;
+
+          ++code;
+        }
+      }
+    }
+
+    return [codes, maxLen];
+  };
+
+  FlateStream.prototype.readBlock = function FlateStream_readBlock() {
+    // read block header
+    var hdr = this.getBits(3);
+    if (hdr & 1)
+      this.eof = true;
+    hdr >>= 1;
+
+    if (hdr == 0) { // uncompressed block
+      var bytes = this.bytes;
+      var bytesPos = this.bytesPos;
+      var b;
+
+      if (typeof (b = bytes[bytesPos++]) == 'undefined')
+        error('Bad block header in flate stream');
+      var blockLen = b;
+      if (typeof (b = bytes[bytesPos++]) == 'undefined')
+        error('Bad block header in flate stream');
+      blockLen |= (b << 8);
+      if (typeof (b = bytes[bytesPos++]) == 'undefined')
+        error('Bad block header in flate stream');
+      var check = b;
+      if (typeof (b = bytes[bytesPos++]) == 'undefined')
+        error('Bad block header in flate stream');
+      check |= (b << 8);
+      if (check != (~blockLen & 0xffff))
+        error('Bad uncompressed block length in flate stream');
+
+      this.codeBuf = 0;
+      this.codeSize = 0;
+
+      var bufferLength = this.bufferLength;
+      var buffer = this.ensureBuffer(bufferLength + blockLen);
+      var end = bufferLength + blockLen;
+      this.bufferLength = end;
+      for (var n = bufferLength; n < end; ++n) {
+        if (typeof (b = bytes[bytesPos++]) == 'undefined') {
+          this.eof = true;
+          break;
+        }
+        buffer[n] = b;
+      }
+      this.bytesPos = bytesPos;
+      return;
+    }
+
+    var litCodeTable;
+    var distCodeTable;
+    if (hdr == 1) { // compressed block, fixed codes
+      litCodeTable = fixedLitCodeTab;
+      distCodeTable = fixedDistCodeTab;
+    } else if (hdr == 2) { // compressed block, dynamic codes
+      var numLitCodes = this.getBits(5) + 257;
+      var numDistCodes = this.getBits(5) + 1;
+      var numCodeLenCodes = this.getBits(4) + 4;
+
+      // build the code lengths code table
+      var codeLenCodeLengths = new Uint8Array(codeLenCodeMap.length);
+
+      for (var i = 0; i < numCodeLenCodes; ++i)
+        codeLenCodeLengths[codeLenCodeMap[i]] = this.getBits(3);
+      var codeLenCodeTab = this.generateHuffmanTable(codeLenCodeLengths);
+
+      // build the literal and distance code tables
+      var len = 0;
+      var i = 0;
+      var codes = numLitCodes + numDistCodes;
+      var codeLengths = new Uint8Array(codes);
+      while (i < codes) {
+        var code = this.getCode(codeLenCodeTab);
+        if (code == 16) {
+          var bitsLength = 2, bitsOffset = 3, what = len;
+        } else if (code == 17) {
+          var bitsLength = 3, bitsOffset = 3, what = (len = 0);
+        } else if (code == 18) {
+          var bitsLength = 7, bitsOffset = 11, what = (len = 0);
+        } else {
+          codeLengths[i++] = len = code;
+          continue;
+        }
+
+        var repeatLength = this.getBits(bitsLength) + bitsOffset;
+        while (repeatLength-- > 0)
+          codeLengths[i++] = what;
+      }
+
+      litCodeTable =
+        this.generateHuffmanTable(codeLengths.subarray(0, numLitCodes));
+      distCodeTable =
+        this.generateHuffmanTable(codeLengths.subarray(numLitCodes, codes));
+    } else {
+      error('Unknown block type in flate stream');
+    }
+
+    var buffer = this.buffer;
+    var limit = buffer ? buffer.length : 0;
+    var pos = this.bufferLength;
+    while (true) {
+      var code1 = this.getCode(litCodeTable);
+      if (code1 < 256) {
+        if (pos + 1 >= limit) {
+          buffer = this.ensureBuffer(pos + 1);
+          limit = buffer.length;
+        }
+        buffer[pos++] = code1;
+        continue;
+      }
+      if (code1 == 256) {
+        this.bufferLength = pos;
+        return;
+      }
+      code1 -= 257;
+      code1 = lengthDecode[code1];
+      var code2 = code1 >> 16;
+      if (code2 > 0)
+        code2 = this.getBits(code2);
+      var len = (code1 & 0xffff) + code2;
+      code1 = this.getCode(distCodeTable);
+      code1 = distDecode[code1];
+      code2 = code1 >> 16;
+      if (code2 > 0)
+        code2 = this.getBits(code2);
+      var dist = (code1 & 0xffff) + code2;
+      if (pos + len >= limit) {
+        buffer = this.ensureBuffer(pos + len);
+        limit = buffer.length;
+      }
+      for (var k = 0; k < len; ++k, ++pos)
+        buffer[pos] = buffer[pos - dist];
+    }
+  };
+
+  return FlateStream;
+})();
+
+var PredictorStream = (function PredictorStreamClosure() {
+  function PredictorStream(stream, params) {
+    var predictor = this.predictor = params.get('Predictor') || 1;
+
+    if (predictor <= 1)
+      return stream; // no prediction
+    if (predictor !== 2 && (predictor < 10 || predictor > 15))
+      error('Unsupported predictor: ' + predictor);
+
+    if (predictor === 2)
+      this.readBlock = this.readBlockTiff;
+    else
+      this.readBlock = this.readBlockPng;
+
+    this.stream = stream;
+    this.dict = stream.dict;
+
+    var colors = this.colors = params.get('Colors') || 1;
+    var bits = this.bits = params.get('BitsPerComponent') || 8;
+    var columns = this.columns = params.get('Columns') || 1;
+
+    this.pixBytes = (colors * bits + 7) >> 3;
+    this.rowBytes = (columns * colors * bits + 7) >> 3;
+
+    DecodeStream.call(this);
+    return this;
+  }
+
+  PredictorStream.prototype = Object.create(DecodeStream.prototype);
+
+  PredictorStream.prototype.readBlockTiff =
+    function predictorStreamReadBlockTiff() {
+    var rowBytes = this.rowBytes;
+
+    var bufferLength = this.bufferLength;
+    var buffer = this.ensureBuffer(bufferLength + rowBytes);
+
+    var bits = this.bits;
+    var colors = this.colors;
+
+    var rawBytes = this.stream.getBytes(rowBytes);
+
+    var inbuf = 0, outbuf = 0;
+    var inbits = 0, outbits = 0;
+    var pos = bufferLength;
+
+    if (bits === 1) {
+      for (var i = 0; i < rowBytes; ++i) {
+        var c = rawBytes[i];
+        inbuf = (inbuf << 8) | c;
+        // bitwise addition is exclusive or
+        // first shift inbuf and then add
+        buffer[pos++] = (c ^ (inbuf >> colors)) & 0xFF;
+        // truncate inbuf (assumes colors < 16)
+        inbuf &= 0xFFFF;
+      }
+    } else if (bits === 8) {
+      for (var i = 0; i < colors; ++i)
+        buffer[pos++] = rawBytes[i];
+      for (; i < rowBytes; ++i) {
+        buffer[pos] = buffer[pos - colors] + rawBytes[i];
+        pos++;
+      }
+    } else {
+      var compArray = new Uint8Array(colors + 1);
+      var bitMask = (1 << bits) - 1;
+      var j = 0, k = bufferLength;
+      var columns = this.columns;
+      for (var i = 0; i < columns; ++i) {
+        for (var kk = 0; kk < colors; ++kk) {
+          if (inbits < bits) {
+            inbuf = (inbuf << 8) | (rawBytes[j++] & 0xFF);
+            inbits += 8;
+          }
+          compArray[kk] = (compArray[kk] +
+                           (inbuf >> (inbits - bits))) & bitMask;
+          inbits -= bits;
+          outbuf = (outbuf << bits) | compArray[kk];
+          outbits += bits;
+          if (outbits >= 8) {
+            buffer[k++] = (outbuf >> (outbits - 8)) & 0xFF;
+            outbits -= 8;
+          }
+        }
+      }
+      if (outbits > 0) {
+        buffer[k++] = (outbuf << (8 - outbits)) +
+        (inbuf & ((1 << (8 - outbits)) - 1));
+      }
+    }
+    this.bufferLength += rowBytes;
+  };
+
+  PredictorStream.prototype.readBlockPng =
+    function predictorStreamReadBlockPng() {
+
+    var rowBytes = this.rowBytes;
+    var pixBytes = this.pixBytes;
+
+    var predictor = this.stream.getByte();
+    var rawBytes = this.stream.getBytes(rowBytes);
+
+    var bufferLength = this.bufferLength;
+    var buffer = this.ensureBuffer(bufferLength + rowBytes);
+
+    var prevRow = buffer.subarray(bufferLength - rowBytes, bufferLength);
+    if (prevRow.length == 0)
+      prevRow = new Uint8Array(rowBytes);
+
+    var j = bufferLength;
+    switch (predictor) {
+      case 0:
+        for (var i = 0; i < rowBytes; ++i)
+          buffer[j++] = rawBytes[i];
+        break;
+      case 1:
+        for (var i = 0; i < pixBytes; ++i)
+          buffer[j++] = rawBytes[i];
+        for (; i < rowBytes; ++i) {
+          buffer[j] = (buffer[j - pixBytes] + rawBytes[i]) & 0xFF;
+          j++;
+        }
+        break;
+      case 2:
+        for (var i = 0; i < rowBytes; ++i)
+          buffer[j++] = (prevRow[i] + rawBytes[i]) & 0xFF;
+        break;
+      case 3:
+        for (var i = 0; i < pixBytes; ++i)
+          buffer[j++] = (prevRow[i] >> 1) + rawBytes[i];
+        for (; i < rowBytes; ++i) {
+          buffer[j] = (((prevRow[i] + buffer[j - pixBytes]) >> 1) +
+                           rawBytes[i]) & 0xFF;
+          j++;
+        }
+        break;
+      case 4:
+        // we need to save the up left pixels values. the simplest way
+        // is to create a new buffer
+        for (var i = 0; i < pixBytes; ++i) {
+          var up = prevRow[i];
+          var c = rawBytes[i];
+          buffer[j++] = up + c;
+        }
+        for (; i < rowBytes; ++i) {
+          var up = prevRow[i];
+          var upLeft = prevRow[i - pixBytes];
+          var left = buffer[j - pixBytes];
+          var p = left + up - upLeft;
+
+          var pa = p - left;
+          if (pa < 0)
+            pa = -pa;
+          var pb = p - up;
+          if (pb < 0)
+            pb = -pb;
+          var pc = p - upLeft;
+          if (pc < 0)
+            pc = -pc;
+
+          var c = rawBytes[i];
+          if (pa <= pb && pa <= pc)
+            buffer[j++] = left + c;
+          else if (pb <= pc)
+            buffer[j++] = up + c;
+          else
+            buffer[j++] = upLeft + c;
+        }
+        break;
+      default:
+        error('Unsupported predictor: ' + predictor);
+    }
+    this.bufferLength += rowBytes;
+  };
+
+  return PredictorStream;
+})();
+
+/**
+ * Depending on the type of JPEG a JpegStream is handled in different ways. For
+ * JPEG's that are supported natively such as DeviceGray and DeviceRGB the image
+ * data is stored and then loaded by the browser.  For unsupported JPEG's we use
+ * a library to decode these images and the stream behaves like all the other
+ * DecodeStreams.
+ */
+var JpegStream = (function JpegStreamClosure() {
+  function isAdobeImage(bytes) {
+    var maxBytesScanned = Math.max(bytes.length - 16, 1024);
+    // Looking for APP14, 'Adobe'
+    for (var i = 0; i < maxBytesScanned; ++i) {
+      if (bytes[i] == 0xFF && bytes[i + 1] == 0xEE &&
+          bytes[i + 2] == 0x00 && bytes[i + 3] == 0x0E &&
+          bytes[i + 4] == 0x41 && bytes[i + 5] == 0x64 &&
+          bytes[i + 6] == 0x6F && bytes[i + 7] == 0x62 &&
+          bytes[i + 8] == 0x65 && bytes[i + 9] == 0x00)
+          return true;
+      // scanning until frame tag
+      if (bytes[i] == 0xFF && bytes[i + 1] == 0xC0)
+        break;
+    }
+    return false;
+  }
+
+  function fixAdobeImage(bytes) {
+    // Inserting 'EMBED' marker after JPEG signature
+    var embedMarker = new Uint8Array([0xFF, 0xEC, 0, 8, 0x45, 0x4D, 0x42, 0x45,
+                                      0x44, 0]);
+    var newBytes = new Uint8Array(bytes.length + embedMarker.length);
+    newBytes.set(bytes, embedMarker.length);
+    // copy JPEG header
+    newBytes[0] = bytes[0];
+    newBytes[1] = bytes[1];
+    newBytes.set(embedMarker, 2);
+    return newBytes;
+  }
+
+  function JpegStream(bytes, dict, xref) {
+    // TODO: per poppler, some images may have 'junk' before that
+    // need to be removed
+    this.dict = dict;
+
+    this.isAdobeImage = false;
+    this.colorTransform = dict.get('ColorTransform') || -1;
+
+    if (isAdobeImage(bytes)) {
+      this.isAdobeImage = true;
+      bytes = fixAdobeImage(bytes);
+    }
+
+    this.bytes = bytes;
+
+    DecodeStream.call(this);
+  }
+
+  JpegStream.prototype = Object.create(DecodeStream.prototype);
+
+  JpegStream.prototype.ensureBuffer = function JpegStream_ensureBuffer(req) {
+    if (this.bufferLength)
+      return;
+    try {
+      var jpegImage = new JpegImage();
+      if (this.colorTransform != -1)
+        jpegImage.colorTransform = this.colorTransform;
+      jpegImage.parse(this.bytes);
+      var width = jpegImage.width;
+      var height = jpegImage.height;
+      var data = jpegImage.getData(width, height);
+      this.buffer = data;
+      this.bufferLength = data.length;
+    } catch (e) {
+      error('JPEG error: ' + e);
+    }
+  };
+  JpegStream.prototype.getIR = function JpegStream_getIR() {
+    return bytesToString(this.bytes);
+  };
+  JpegStream.prototype.getChar = function JpegStream_getChar() {
+    error('internal error: getChar is not valid on JpegStream');
+  };
+  /**
+   * Checks if the image can be decoded and displayed by the browser without any
+   * further processing such as color space conversions.
+   */
+  JpegStream.prototype.isNativelySupported =
+    function JpegStream_isNativelySupported(xref, res) {
+    var cs = ColorSpace.parse(this.dict.get('ColorSpace'), xref, res);
+    // when bug 674619 lands, let's check if browser can do
+    // normal cmyk and then we won't need to decode in JS
+    if (cs.name === 'DeviceGray' || cs.name === 'DeviceRGB')
+      return true;
+    if (cs.name === 'DeviceCMYK' && !this.isAdobeImage &&
+        this.colorTransform < 1)
+      return true;
+    return false;
+  };
+  /**
+   * Checks if the image can be decoded by the browser.
+   */
+  JpegStream.prototype.isNativelyDecodable =
+    function JpegStream_isNativelyDecodable(xref, res) {
+    var cs = ColorSpace.parse(this.dict.get('ColorSpace'), xref, res);
+    var numComps = cs.numComps;
+    if (numComps == 1 || numComps == 3)
+      return true;
+
+    return false;
+  };
+
+  return JpegStream;
+})();
+
+/**
+ * For JPEG 2000's we use a library to decode these images and
+ * the stream behaves like all the other DecodeStreams.
+ */
+var JpxStream = (function JpxStreamClosure() {
+  function JpxStream(bytes, dict) {
+    this.dict = dict;
+    this.bytes = bytes;
+
+    DecodeStream.call(this);
+  }
+
+  JpxStream.prototype = Object.create(DecodeStream.prototype);
+
+  JpxStream.prototype.ensureBuffer = function JpxStream_ensureBuffer(req) {
+    if (this.bufferLength)
+      return;
+
+    var jpxImage = new JpxImage();
+    jpxImage.parse(this.bytes);
+
+    var width = jpxImage.width;
+    var height = jpxImage.height;
+    var componentsCount = jpxImage.componentsCount;
+    if (componentsCount != 1 && componentsCount != 3 && componentsCount != 4)
+      error('JPX with ' + componentsCount + ' components is not supported');
+
+    var data = new Uint8Array(width * height * componentsCount);
+
+    for (var k = 0, kk = jpxImage.tiles.length; k < kk; k++) {
+      var tileCompoments = jpxImage.tiles[k];
+      var tileWidth = tileCompoments[0].width;
+      var tileHeight = tileCompoments[0].height;
+      var tileLeft = tileCompoments[0].left;
+      var tileTop = tileCompoments[0].top;
+
+      var dataPosition, sourcePosition, data0, data1, data2, data3, rowFeed;
+      switch (componentsCount) {
+        case 1:
+          data0 = tileCompoments[0].items;
+
+          dataPosition = width * tileTop + tileLeft;
+          rowFeed = width - tileWidth;
+          sourcePosition = 0;
+          for (var j = 0; j < tileHeight; j++) {
+            for (var i = 0; i < tileWidth; i++)
+              data[dataPosition++] = data0[sourcePosition++];
+            dataPosition += rowFeed;
+          }
+          break;
+        case 3:
+          data0 = tileCompoments[0].items;
+          data1 = tileCompoments[1].items;
+          data2 = tileCompoments[2].items;
+
+          dataPosition = (width * tileTop + tileLeft) * 3;
+          rowFeed = (width - tileWidth) * 3;
+          sourcePosition = 0;
+          for (var j = 0; j < tileHeight; j++) {
+            for (var i = 0; i < tileWidth; i++) {
+              data[dataPosition++] = data0[sourcePosition];
+              data[dataPosition++] = data1[sourcePosition];
+              data[dataPosition++] = data2[sourcePosition];
+              sourcePosition++;
+            }
+            dataPosition += rowFeed;
+          }
+          break;
+        case 4:
+          data0 = tileCompoments[0].items;
+          data1 = tileCompoments[1].items;
+          data2 = tileCompoments[2].items;
+          data3 = tileCompoments[3].items;
+
+          dataPosition = (width * tileTop + tileLeft) * 4;
+          rowFeed = (width - tileWidth) * 4;
+          sourcePosition = 0;
+          for (var j = 0; j < tileHeight; j++) {
+            for (var i = 0; i < tileWidth; i++) {
+              data[dataPosition++] = data0[sourcePosition];
+              data[dataPosition++] = data1[sourcePosition];
+              data[dataPosition++] = data2[sourcePosition];
+              data[dataPosition++] = data3[sourcePosition];
+              sourcePosition++;
+            }
+            dataPosition += rowFeed;
+          }
+          break;
+      }
+    }
+
+    this.buffer = data;
+    this.bufferLength = data.length;
+  };
+  JpxStream.prototype.getChar = function JpxStream_getChar() {
+    error('internal error: getChar is not valid on JpxStream');
+  };
+
+  return JpxStream;
+})();
+
+var DecryptStream = (function DecryptStreamClosure() {
+  function DecryptStream(str, decrypt) {
+    this.str = str;
+    this.dict = str.dict;
+    this.decrypt = decrypt;
+
+    DecodeStream.call(this);
+  }
+
+  var chunkSize = 512;
+
+  DecryptStream.prototype = Object.create(DecodeStream.prototype);
+
+  DecryptStream.prototype.readBlock = function DecryptStream_readBlock() {
+    var chunk = this.str.getBytes(chunkSize);
+    if (!chunk || chunk.length == 0) {
+      this.eof = true;
+      return;
+    }
+    var decrypt = this.decrypt;
+    chunk = decrypt(chunk);
+
+    var bufferLength = this.bufferLength;
+    var i, n = chunk.length;
+    var buffer = this.ensureBuffer(bufferLength + n);
+    for (i = 0; i < n; i++)
+      buffer[bufferLength++] = chunk[i];
+    this.bufferLength = bufferLength;
+  };
+
+  return DecryptStream;
+})();
+
+var Ascii85Stream = (function Ascii85StreamClosure() {
+  function Ascii85Stream(str) {
+    this.str = str;
+    this.dict = str.dict;
+    this.input = new Uint8Array(5);
+
+    DecodeStream.call(this);
+  }
+
+  Ascii85Stream.prototype = Object.create(DecodeStream.prototype);
+
+  Ascii85Stream.prototype.readBlock = function Ascii85Stream_readBlock() {
+    var tildaCode = '~'.charCodeAt(0);
+    var zCode = 'z'.charCodeAt(0);
+    var str = this.str;
+
+    var c = str.getByte();
+    while (Lexer.isSpace(String.fromCharCode(c)))
+      c = str.getByte();
+
+    if (!c || c === tildaCode) {
+      this.eof = true;
+      return;
+    }
+
+    var bufferLength = this.bufferLength, buffer;
+
+    // special code for z
+    if (c == zCode) {
+      buffer = this.ensureBuffer(bufferLength + 4);
+      for (var i = 0; i < 4; ++i)
+        buffer[bufferLength + i] = 0;
+      this.bufferLength += 4;
+    } else {
+      var input = this.input;
+      input[0] = c;
+      for (var i = 1; i < 5; ++i) {
+        c = str.getByte();
+        while (Lexer.isSpace(String.fromCharCode(c)))
+          c = str.getByte();
+
+        input[i] = c;
+
+        if (!c || c == tildaCode)
+          break;
+      }
+      buffer = this.ensureBuffer(bufferLength + i - 1);
+      this.bufferLength += i - 1;
+
+      // partial ending;
+      if (i < 5) {
+        for (; i < 5; ++i)
+          input[i] = 0x21 + 84;
+        this.eof = true;
+      }
+      var t = 0;
+      for (var i = 0; i < 5; ++i)
+        t = t * 85 + (input[i] - 0x21);
+
+      for (var i = 3; i >= 0; --i) {
+        buffer[bufferLength + i] = t & 0xFF;
+        t >>= 8;
+      }
+    }
+  };
+
+  return Ascii85Stream;
+})();
+
+var AsciiHexStream = (function AsciiHexStreamClosure() {
+  function AsciiHexStream(str) {
+    this.str = str;
+    this.dict = str.dict;
+
+    DecodeStream.call(this);
+  }
+
+  var hexvalueMap = {
+      9: -1, // \t
+      32: -1, // space
+      48: 0,
+      49: 1,
+      50: 2,
+      51: 3,
+      52: 4,
+      53: 5,
+      54: 6,
+      55: 7,
+      56: 8,
+      57: 9,
+      65: 10,
+      66: 11,
+      67: 12,
+      68: 13,
+      69: 14,
+      70: 15,
+      97: 10,
+      98: 11,
+      99: 12,
+      100: 13,
+      101: 14,
+      102: 15
+  };
+
+  AsciiHexStream.prototype = Object.create(DecodeStream.prototype);
+
+  AsciiHexStream.prototype.readBlock = function AsciiHexStream_readBlock() {
+    var gtCode = '>'.charCodeAt(0), bytes = this.str.getBytes(), c, n,
+        decodeLength, buffer, bufferLength, i, length;
+
+    decodeLength = (bytes.length + 1) >> 1;
+    buffer = this.ensureBuffer(this.bufferLength + decodeLength);
+    bufferLength = this.bufferLength;
+
+    for (i = 0, length = bytes.length; i < length; i++) {
+      c = hexvalueMap[bytes[i]];
+      while (c == -1 && (i + 1) < length) {
+        c = hexvalueMap[bytes[++i]];
+      }
+
+      if ((i + 1) < length && (bytes[i + 1] !== gtCode)) {
+        n = hexvalueMap[bytes[++i]];
+        buffer[bufferLength++] = c * 16 + n;
+      } else {
+        // EOD marker at an odd number, behave as if a 0 followed the last
+        // digit.
+        if (bytes[i] !== gtCode) {
+          buffer[bufferLength++] = c * 16;
+        }
+      }
+    }
+
+    this.bufferLength = bufferLength;
+    this.eof = true;
+  };
+
+  return AsciiHexStream;
+})();
+
+var RunLengthStream = (function RunLengthStreamClosure() {
+  function RunLengthStream(str) {
+    this.str = str;
+    this.dict = str.dict;
+
+    DecodeStream.call(this);
+  }
+
+  RunLengthStream.prototype = Object.create(DecodeStream.prototype);
+
+  RunLengthStream.prototype.readBlock = function RunLengthStream_readBlock() {
+    // The repeatHeader has following format. The first byte defines type of run
+    // and amount of bytes to repeat/copy: n = 0 through 127 - copy next n bytes
+    // (in addition to the second byte from the header), n = 129 through 255 -
+    // duplicate the second byte from the header (257 - n) times, n = 128 - end.
+    var repeatHeader = this.str.getBytes(2);
+    if (!repeatHeader || repeatHeader.length < 2 || repeatHeader[0] == 128) {
+      this.eof = true;
+      return;
+    }
+
+    var bufferLength = this.bufferLength;
+    var n = repeatHeader[0];
+    if (n < 128) {
+      // copy n bytes
+      var buffer = this.ensureBuffer(bufferLength + n + 1);
+      buffer[bufferLength++] = repeatHeader[1];
+      if (n > 0) {
+        var source = this.str.getBytes(n);
+        buffer.set(source, bufferLength);
+        bufferLength += n;
+      }
+    } else {
+      n = 257 - n;
+      var b = repeatHeader[1];
+      var buffer = this.ensureBuffer(bufferLength + n + 1);
+      for (var i = 0; i < n; i++)
+        buffer[bufferLength++] = b;
+    }
+    this.bufferLength = bufferLength;
+  };
+
+  return RunLengthStream;
+})();
+
+var CCITTFaxStream = (function CCITTFaxStreamClosure() {
+
+  var ccittEOL = -2;
+  var twoDimPass = 0;
+  var twoDimHoriz = 1;
+  var twoDimVert0 = 2;
+  var twoDimVertR1 = 3;
+  var twoDimVertL1 = 4;
+  var twoDimVertR2 = 5;
+  var twoDimVertL2 = 6;
+  var twoDimVertR3 = 7;
+  var twoDimVertL3 = 8;
+
+  var twoDimTable = [
+    [-1, -1], [-1, -1],                   // 000000x
+    [7, twoDimVertL3],                    // 0000010
+    [7, twoDimVertR3],                    // 0000011
+    [6, twoDimVertL2], [6, twoDimVertL2], // 000010x
+    [6, twoDimVertR2], [6, twoDimVertR2], // 000011x
+    [4, twoDimPass], [4, twoDimPass],     // 0001xxx
+    [4, twoDimPass], [4, twoDimPass],
+    [4, twoDimPass], [4, twoDimPass],
+    [4, twoDimPass], [4, twoDimPass],
+    [3, twoDimHoriz], [3, twoDimHoriz],   // 001xxxx
+    [3, twoDimHoriz], [3, twoDimHoriz],
+    [3, twoDimHoriz], [3, twoDimHoriz],
+    [3, twoDimHoriz], [3, twoDimHoriz],
+    [3, twoDimHoriz], [3, twoDimHoriz],
+    [3, twoDimHoriz], [3, twoDimHoriz],
+    [3, twoDimHoriz], [3, twoDimHoriz],
+    [3, twoDimHoriz], [3, twoDimHoriz],
+    [3, twoDimVertL1], [3, twoDimVertL1], // 010xxxx
+    [3, twoDimVertL1], [3, twoDimVertL1],
+    [3, twoDimVertL1], [3, twoDimVertL1],
+    [3, twoDimVertL1], [3, twoDimVertL1],
+    [3, twoDimVertL1], [3, twoDimVertL1],
+    [3, twoDimVertL1], [3, twoDimVertL1],
+    [3, twoDimVertL1], [3, twoDimVertL1],
+    [3, twoDimVertL1], [3, twoDimVertL1],
+    [3, twoDimVertR1], [3, twoDimVertR1], // 011xxxx
+    [3, twoDimVertR1], [3, twoDimVertR1],
+    [3, twoDimVertR1], [3, twoDimVertR1],
+    [3, twoDimVertR1], [3, twoDimVertR1],
+    [3, twoDimVertR1], [3, twoDimVertR1],
+    [3, twoDimVertR1], [3, twoDimVertR1],
+    [3, twoDimVertR1], [3, twoDimVertR1],
+    [3, twoDimVertR1], [3, twoDimVertR1],
+    [1, twoDimVert0], [1, twoDimVert0],   // 1xxxxxx
+    [1, twoDimVert0], [1, twoDimVert0],
+    [1, twoDimVert0], [1, twoDimVert0],
+    [1, twoDimVert0], [1, twoDimVert0],
+    [1, twoDimVert0], [1, twoDimVert0],
+    [1, twoDimVert0], [1, twoDimVert0],
+    [1, twoDimVert0], [1, twoDimVert0],
+    [1, twoDimVert0], [1, twoDimVert0],
+    [1, twoDimVert0], [1, twoDimVert0],
+    [1, twoDimVert0], [1, twoDimVert0],
+    [1, twoDimVert0], [1, twoDimVert0],
+    [1, twoDimVert0], [1, twoDimVert0],
+    [1, twoDimVert0], [1, twoDimVert0],
+    [1, twoDimVert0], [1, twoDimVert0],
+    [1, twoDimVert0], [1, twoDimVert0],
+    [1, twoDimVert0], [1, twoDimVert0],
+    [1, twoDimVert0], [1, twoDimVert0],
+    [1, twoDimVert0], [1, twoDimVert0],
+    [1, twoDimVert0], [1, twoDimVert0],
+    [1, twoDimVert0], [1, twoDimVert0],
+    [1, twoDimVert0], [1, twoDimVert0],
+    [1, twoDimVert0], [1, twoDimVert0],
+    [1, twoDimVert0], [1, twoDimVert0],
+    [1, twoDimVert0], [1, twoDimVert0],
+    [1, twoDimVert0], [1, twoDimVert0],
+    [1, twoDimVert0], [1, twoDimVert0],
+    [1, twoDimVert0], [1, twoDimVert0],
+    [1, twoDimVert0], [1, twoDimVert0],
+    [1, twoDimVert0], [1, twoDimVert0],
+    [1, twoDimVert0], [1, twoDimVert0],
+    [1, twoDimVert0], [1, twoDimVert0],
+    [1, twoDimVert0], [1, twoDimVert0]
+  ];
+
+  var whiteTable1 = [
+    [-1, -1],                               // 00000
+    [12, ccittEOL],                         // 00001
+    [-1, -1], [-1, -1],                     // 0001x
+    [-1, -1], [-1, -1], [-1, -1], [-1, -1], // 001xx
+    [-1, -1], [-1, -1], [-1, -1], [-1, -1], // 010xx
+    [-1, -1], [-1, -1], [-1, -1], [-1, -1], // 011xx
+    [11, 1792], [11, 1792],                 // 1000x
+    [12, 1984],                             // 10010
+    [12, 2048],                             // 10011
+    [12, 2112],                             // 10100
+    [12, 2176],                             // 10101
+    [12, 2240],                             // 10110
+    [12, 2304],                             // 10111
+    [11, 1856], [11, 1856],                 // 1100x
+    [11, 1920], [11, 1920],                 // 1101x
+    [12, 2368],                             // 11100
+    [12, 2432],                             // 11101
+    [12, 2496],                             // 11110
+    [12, 2560]                              // 11111
+  ];
+
+  var whiteTable2 = [
+    [-1, -1], [-1, -1], [-1, -1], [-1, -1],     // 0000000xx
+    [8, 29], [8, 29],                           // 00000010x
+    [8, 30], [8, 30],                           // 00000011x
+    [8, 45], [8, 45],                           // 00000100x
+    [8, 46], [8, 46],                           // 00000101x
+    [7, 22], [7, 22], [7, 22], [7, 22],         // 0000011xx
+    [7, 23], [7, 23], [7, 23], [7, 23],         // 0000100xx
+    [8, 47], [8, 47],                           // 00001010x
+    [8, 48], [8, 48],                           // 00001011x
+    [6, 13], [6, 13], [6, 13], [6, 13],         // 000011xxx
+    [6, 13], [6, 13], [6, 13], [6, 13],
+    [7, 20], [7, 20], [7, 20], [7, 20],         // 0001000xx
+    [8, 33], [8, 33],                           // 00010010x
+    [8, 34], [8, 34],                           // 00010011x
+    [8, 35], [8, 35],                           // 00010100x
+    [8, 36], [8, 36],                           // 00010101x
+    [8, 37], [8, 37],                           // 00010110x
+    [8, 38], [8, 38],                           // 00010111x
+    [7, 19], [7, 19], [7, 19], [7, 19],         // 0001100xx
+    [8, 31], [8, 31],                           // 00011010x
+    [8, 32], [8, 32],                           // 00011011x
+    [6, 1], [6, 1], [6, 1], [6, 1],             // 000111xxx
+    [6, 1], [6, 1], [6, 1], [6, 1],
+    [6, 12], [6, 12], [6, 12], [6, 12],         // 001000xxx
+    [6, 12], [6, 12], [6, 12], [6, 12],
+    [8, 53], [8, 53],                           // 00100100x
+    [8, 54], [8, 54],                           // 00100101x
+    [7, 26], [7, 26], [7, 26], [7, 26],         // 0010011xx
+    [8, 39], [8, 39],                           // 00101000x
+    [8, 40], [8, 40],                           // 00101001x
+    [8, 41], [8, 41],                           // 00101010x
+    [8, 42], [8, 42],                           // 00101011x
+    [8, 43], [8, 43],                           // 00101100x
+    [8, 44], [8, 44],                           // 00101101x
+    [7, 21], [7, 21], [7, 21], [7, 21],         // 0010111xx
+    [7, 28], [7, 28], [7, 28], [7, 28],         // 0011000xx
+    [8, 61], [8, 61],                           // 00110010x
+    [8, 62], [8, 62],                           // 00110011x
+    [8, 63], [8, 63],                           // 00110100x
+    [8, 0], [8, 0],                             // 00110101x
+    [8, 320], [8, 320],                         // 00110110x
+    [8, 384], [8, 384],                         // 00110111x
+    [5, 10], [5, 10], [5, 10], [5, 10],         // 00111xxxx
+    [5, 10], [5, 10], [5, 10], [5, 10],
+    [5, 10], [5, 10], [5, 10], [5, 10],
+    [5, 10], [5, 10], [5, 10], [5, 10],
+    [5, 11], [5, 11], [5, 11], [5, 11],         // 01000xxxx
+    [5, 11], [5, 11], [5, 11], [5, 11],
+    [5, 11], [5, 11], [5, 11], [5, 11],
+    [5, 11], [5, 11], [5, 11], [5, 11],
+    [7, 27], [7, 27], [7, 27], [7, 27],         // 0100100xx
+    [8, 59], [8, 59],                           // 01001010x
+    [8, 60], [8, 60],                           // 01001011x
+    [9, 1472],                                  // 010011000
+    [9, 1536],                                  // 010011001
+    [9, 1600],                                  // 010011010
+    [9, 1728],                                  // 010011011
+    [7, 18], [7, 18], [7, 18], [7, 18],         // 0100111xx
+    [7, 24], [7, 24], [7, 24], [7, 24],         // 0101000xx
+    [8, 49], [8, 49],                           // 01010010x
+    [8, 50], [8, 50],                           // 01010011x
+    [8, 51], [8, 51],                           // 01010100x
+    [8, 52], [8, 52],                           // 01010101x
+    [7, 25], [7, 25], [7, 25], [7, 25],         // 0101011xx
+    [8, 55], [8, 55],                           // 01011000x
+    [8, 56], [8, 56],                           // 01011001x
+    [8, 57], [8, 57],                           // 01011010x
+    [8, 58], [8, 58],                           // 01011011x
+    [6, 192], [6, 192], [6, 192], [6, 192],     // 010111xxx
+    [6, 192], [6, 192], [6, 192], [6, 192],
+    [6, 1664], [6, 1664], [6, 1664], [6, 1664], // 011000xxx
+    [6, 1664], [6, 1664], [6, 1664], [6, 1664],
+    [8, 448], [8, 448],                         // 01100100x
+    [8, 512], [8, 512],                         // 01100101x
+    [9, 704],                                   // 011001100
+    [9, 768],                                   // 011001101
+    [8, 640], [8, 640],                         // 01100111x
+    [8, 576], [8, 576],                         // 01101000x
+    [9, 832],                                   // 011010010
+    [9, 896],                                   // 011010011
+    [9, 960],                                   // 011010100
+    [9, 1024],                                  // 011010101
+    [9, 1088],                                  // 011010110
+    [9, 1152],                                  // 011010111
+    [9, 1216],                                  // 011011000
+    [9, 1280],                                  // 011011001
+    [9, 1344],                                  // 011011010
+    [9, 1408],                                  // 011011011
+    [7, 256], [7, 256], [7, 256], [7, 256],     // 0110111xx
+    [4, 2], [4, 2], [4, 2], [4, 2],             // 0111xxxxx
+    [4, 2], [4, 2], [4, 2], [4, 2],
+    [4, 2], [4, 2], [4, 2], [4, 2],
+    [4, 2], [4, 2], [4, 2], [4, 2],
+    [4, 2], [4, 2], [4, 2], [4, 2],
+    [4, 2], [4, 2], [4, 2], [4, 2],
+    [4, 2], [4, 2], [4, 2], [4, 2],
+    [4, 2], [4, 2], [4, 2], [4, 2],
+    [4, 3], [4, 3], [4, 3], [4, 3],             // 1000xxxxx
+    [4, 3], [4, 3], [4, 3], [4, 3],
+    [4, 3], [4, 3], [4, 3], [4, 3],
+    [4, 3], [4, 3], [4, 3], [4, 3],
+    [4, 3], [4, 3], [4, 3], [4, 3],
+    [4, 3], [4, 3], [4, 3], [4, 3],
+    [4, 3], [4, 3], [4, 3], [4, 3],
+    [4, 3], [4, 3], [4, 3], [4, 3],
+    [5, 128], [5, 128], [5, 128], [5, 128],     // 10010xxxx
+    [5, 128], [5, 128], [5, 128], [5, 128],
+    [5, 128], [5, 128], [5, 128], [5, 128],
+    [5, 128], [5, 128], [5, 128], [5, 128],
+    [5, 8], [5, 8], [5, 8], [5, 8],             // 10011xxxx
+    [5, 8], [5, 8], [5, 8], [5, 8],
+    [5, 8], [5, 8], [5, 8], [5, 8],
+    [5, 8], [5, 8], [5, 8], [5, 8],
+    [5, 9], [5, 9], [5, 9], [5, 9],             // 10100xxxx
+    [5, 9], [5, 9], [5, 9], [5, 9],
+    [5, 9], [5, 9], [5, 9], [5, 9],
+    [5, 9], [5, 9], [5, 9], [5, 9],
+    [6, 16], [6, 16], [6, 16], [6, 16],         // 101010xxx
+    [6, 16], [6, 16], [6, 16], [6, 16],
+    [6, 17], [6, 17], [6, 17], [6, 17],         // 101011xxx
+    [6, 17], [6, 17], [6, 17], [6, 17],
+    [4, 4], [4, 4], [4, 4], [4, 4],             // 1011xxxxx
+    [4, 4], [4, 4], [4, 4], [4, 4],
+    [4, 4], [4, 4], [4, 4], [4, 4],
+    [4, 4], [4, 4], [4, 4], [4, 4],
+    [4, 4], [4, 4], [4, 4], [4, 4],
+    [4, 4], [4, 4], [4, 4], [4, 4],
+    [4, 4], [4, 4], [4, 4], [4, 4],
+    [4, 4], [4, 4], [4, 4], [4, 4],
+    [4, 5], [4, 5], [4, 5], [4, 5],             // 1100xxxxx
+    [4, 5], [4, 5], [4, 5], [4, 5],
+    [4, 5], [4, 5], [4, 5], [4, 5],
+    [4, 5], [4, 5], [4, 5], [4, 5],
+    [4, 5], [4, 5], [4, 5], [4, 5],
+    [4, 5], [4, 5], [4, 5], [4, 5],
+    [4, 5], [4, 5], [4, 5], [4, 5],
+    [4, 5], [4, 5], [4, 5], [4, 5],
+    [6, 14], [6, 14], [6, 14], [6, 14],         // 110100xxx
+    [6, 14], [6, 14], [6, 14], [6, 14],
+    [6, 15], [6, 15], [6, 15], [6, 15],         // 110101xxx
+    [6, 15], [6, 15], [6, 15], [6, 15],
+    [5, 64], [5, 64], [5, 64], [5, 64],         // 11011xxxx
+    [5, 64], [5, 64], [5, 64], [5, 64],
+    [5, 64], [5, 64], [5, 64], [5, 64],
+    [5, 64], [5, 64], [5, 64], [5, 64],
+    [4, 6], [4, 6], [4, 6], [4, 6],             // 1110xxxxx
+    [4, 6], [4, 6], [4, 6], [4, 6],
+    [4, 6], [4, 6], [4, 6], [4, 6],
+    [4, 6], [4, 6], [4, 6], [4, 6],
+    [4, 6], [4, 6], [4, 6], [4, 6],
+    [4, 6], [4, 6], [4, 6], [4, 6],
+    [4, 6], [4, 6], [4, 6], [4, 6],
+    [4, 6], [4, 6], [4, 6], [4, 6],
+    [4, 7], [4, 7], [4, 7], [4, 7],             // 1111xxxxx
+    [4, 7], [4, 7], [4, 7], [4, 7],
+    [4, 7], [4, 7], [4, 7], [4, 7],
+    [4, 7], [4, 7], [4, 7], [4, 7],
+    [4, 7], [4, 7], [4, 7], [4, 7],
+    [4, 7], [4, 7], [4, 7], [4, 7],
+    [4, 7], [4, 7], [4, 7], [4, 7],
+    [4, 7], [4, 7], [4, 7], [4, 7]
+  ];
+
+  var blackTable1 = [
+    [-1, -1], [-1, -1],                             // 000000000000x
+    [12, ccittEOL], [12, ccittEOL],                 // 000000000001x
+    [-1, -1], [-1, -1], [-1, -1], [-1, -1],         // 00000000001xx
+    [-1, -1], [-1, -1], [-1, -1], [-1, -1],         // 00000000010xx
+    [-1, -1], [-1, -1], [-1, -1], [-1, -1],         // 00000000011xx
+    [-1, -1], [-1, -1], [-1, -1], [-1, -1],         // 00000000100xx
+    [-1, -1], [-1, -1], [-1, -1], [-1, -1],         // 00000000101xx
+    [-1, -1], [-1, -1], [-1, -1], [-1, -1],         // 00000000110xx
+    [-1, -1], [-1, -1], [-1, -1], [-1, -1],         // 00000000111xx
+    [11, 1792], [11, 1792], [11, 1792], [11, 1792], // 00000001000xx
+    [12, 1984], [12, 1984],                         // 000000010010x
+    [12, 2048], [12, 2048],                         // 000000010011x
+    [12, 2112], [12, 2112],                         // 000000010100x
+    [12, 2176], [12, 2176],                         // 000000010101x
+    [12, 2240], [12, 2240],                         // 000000010110x
+    [12, 2304], [12, 2304],                         // 000000010111x
+    [11, 1856], [11, 1856], [11, 1856], [11, 1856], // 00000001100xx
+    [11, 1920], [11, 1920], [11, 1920], [11, 1920], // 00000001101xx
+    [12, 2368], [12, 2368],                         // 000000011100x
+    [12, 2432], [12, 2432],                         // 000000011101x
+    [12, 2496], [12, 2496],                         // 000000011110x
+    [12, 2560], [12, 2560],                         // 000000011111x
+    [10, 18], [10, 18], [10, 18], [10, 18],         // 0000001000xxx
+    [10, 18], [10, 18], [10, 18], [10, 18],
+    [12, 52], [12, 52],                             // 000000100100x
+    [13, 640],                                      // 0000001001010
+    [13, 704],                                      // 0000001001011
+    [13, 768],                                      // 0000001001100
+    [13, 832],                                      // 0000001001101
+    [12, 55], [12, 55],                             // 000000100111x
+    [12, 56], [12, 56],                             // 000000101000x
+    [13, 1280],                                     // 0000001010010
+    [13, 1344],                                     // 0000001010011
+    [13, 1408],                                     // 0000001010100
+    [13, 1472],                                     // 0000001010101
+    [12, 59], [12, 59],                             // 000000101011x
+    [12, 60], [12, 60],                             // 000000101100x
+    [13, 1536],                                     // 0000001011010
+    [13, 1600],                                     // 0000001011011
+    [11, 24], [11, 24], [11, 24], [11, 24],         // 00000010111xx
+    [11, 25], [11, 25], [11, 25], [11, 25],         // 00000011000xx
+    [13, 1664],                                     // 0000001100100
+    [13, 1728],                                     // 0000001100101
+    [12, 320], [12, 320],                           // 000000110011x
+    [12, 384], [12, 384],                           // 000000110100x
+    [12, 448], [12, 448],                           // 000000110101x
+    [13, 512],                                      // 0000001101100
+    [13, 576],                                      // 0000001101101
+    [12, 53], [12, 53],                             // 000000110111x
+    [12, 54], [12, 54],                             // 000000111000x
+    [13, 896],                                      // 0000001110010
+    [13, 960],                                      // 0000001110011
+    [13, 1024],                                     // 0000001110100
+    [13, 1088],                                     // 0000001110101
+    [13, 1152],                                     // 0000001110110
+    [13, 1216],                                     // 0000001110111
+    [10, 64], [10, 64], [10, 64], [10, 64],         // 0000001111xxx
+    [10, 64], [10, 64], [10, 64], [10, 64]
+  ];
+
+  var blackTable2 = [
+    [8, 13], [8, 13], [8, 13], [8, 13],     // 00000100xxxx
+    [8, 13], [8, 13], [8, 13], [8, 13],
+    [8, 13], [8, 13], [8, 13], [8, 13],
+    [8, 13], [8, 13], [8, 13], [8, 13],
+    [11, 23], [11, 23],                     // 00000101000x
+    [12, 50],                               // 000001010010
+    [12, 51],                               // 000001010011
+    [12, 44],                               // 000001010100
+    [12, 45],                               // 000001010101
+    [12, 46],                               // 000001010110
+    [12, 47],                               // 000001010111
+    [12, 57],                               // 000001011000
+    [12, 58],                               // 000001011001
+    [12, 61],                               // 000001011010
+    [12, 256],                              // 000001011011
+    [10, 16], [10, 16], [10, 16], [10, 16], // 0000010111xx
+    [10, 17], [10, 17], [10, 17], [10, 17], // 0000011000xx
+    [12, 48],                               // 000001100100
+    [12, 49],                               // 000001100101
+    [12, 62],                               // 000001100110
+    [12, 63],                               // 000001100111
+    [12, 30],                               // 000001101000
+    [12, 31],                               // 000001101001
+    [12, 32],                               // 000001101010
+    [12, 33],                               // 000001101011
+    [12, 40],                               // 000001101100
+    [12, 41],                               // 000001101101
+    [11, 22], [11, 22],                     // 00000110111x
+    [8, 14], [8, 14], [8, 14], [8, 14],     // 00000111xxxx
+    [8, 14], [8, 14], [8, 14], [8, 14],
+    [8, 14], [8, 14], [8, 14], [8, 14],
+    [8, 14], [8, 14], [8, 14], [8, 14],
+    [7, 10], [7, 10], [7, 10], [7, 10],     // 0000100xxxxx
+    [7, 10], [7, 10], [7, 10], [7, 10],
+    [7, 10], [7, 10], [7, 10], [7, 10],
+    [7, 10], [7, 10], [7, 10], [7, 10],
+    [7, 10], [7, 10], [7, 10], [7, 10],
+    [7, 10], [7, 10], [7, 10], [7, 10],
+    [7, 10], [7, 10], [7, 10], [7, 10],
+    [7, 10], [7, 10], [7, 10], [7, 10],
+    [7, 11], [7, 11], [7, 11], [7, 11],     // 0000101xxxxx
+    [7, 11], [7, 11], [7, 11], [7, 11],
+    [7, 11], [7, 11], [7, 11], [7, 11],
+    [7, 11], [7, 11], [7, 11], [7, 11],
+    [7, 11], [7, 11], [7, 11], [7, 11],
+    [7, 11], [7, 11], [7, 11], [7, 11],
+    [7, 11], [7, 11], [7, 11], [7, 11],
+    [7, 11], [7, 11], [7, 11], [7, 11],
+    [9, 15], [9, 15], [9, 15], [9, 15],     // 000011000xxx
+    [9, 15], [9, 15], [9, 15], [9, 15],
+    [12, 128],                              // 000011001000
+    [12, 192],                              // 000011001001
+    [12, 26],                               // 000011001010
+    [12, 27],                               // 000011001011
+    [12, 28],                               // 000011001100
+    [12, 29],                               // 000011001101
+    [11, 19], [11, 19],                     // 00001100111x
+    [11, 20], [11, 20],                     // 00001101000x
+    [12, 34],                               // 000011010010
+    [12, 35],                               // 000011010011
+    [12, 36],                               // 000011010100
+    [12, 37],                               // 000011010101
+    [12, 38],                               // 000011010110
+    [12, 39],                               // 000011010111
+    [11, 21], [11, 21],                     // 00001101100x
+    [12, 42],                               // 000011011010
+    [12, 43],                               // 000011011011
+    [10, 0], [10, 0], [10, 0], [10, 0],     // 0000110111xx
+    [7, 12], [7, 12], [7, 12], [7, 12],     // 0000111xxxxx
+    [7, 12], [7, 12], [7, 12], [7, 12],
+    [7, 12], [7, 12], [7, 12], [7, 12],
+    [7, 12], [7, 12], [7, 12], [7, 12],
+    [7, 12], [7, 12], [7, 12], [7, 12],
+    [7, 12], [7, 12], [7, 12], [7, 12],
+    [7, 12], [7, 12], [7, 12], [7, 12],
+    [7, 12], [7, 12], [7, 12], [7, 12]
+  ];
+
+  var blackTable3 = [
+    [-1, -1], [-1, -1], [-1, -1], [-1, -1], // 0000xx
+    [6, 9],                                 // 000100
+    [6, 8],                                 // 000101
+    [5, 7], [5, 7],                         // 00011x
+    [4, 6], [4, 6], [4, 6], [4, 6],         // 0010xx
+    [4, 5], [4, 5], [4, 5], [4, 5],         // 0011xx
+    [3, 1], [3, 1], [3, 1], [3, 1],         // 010xxx
+    [3, 1], [3, 1], [3, 1], [3, 1],
+    [3, 4], [3, 4], [3, 4], [3, 4],         // 011xxx
+    [3, 4], [3, 4], [3, 4], [3, 4],
+    [2, 3], [2, 3], [2, 3], [2, 3],         // 10xxxx
+    [2, 3], [2, 3], [2, 3], [2, 3],
+    [2, 3], [2, 3], [2, 3], [2, 3],
+    [2, 3], [2, 3], [2, 3], [2, 3],
+    [2, 2], [2, 2], [2, 2], [2, 2],         // 11xxxx
+    [2, 2], [2, 2], [2, 2], [2, 2],
+    [2, 2], [2, 2], [2, 2], [2, 2],
+    [2, 2], [2, 2], [2, 2], [2, 2]
+  ];
+
+  function CCITTFaxStream(str, params) {
+    this.str = str;
+    this.dict = str.dict;
+
+    params = params || new Dict();
+
+    this.encoding = params.get('K') || 0;
+    this.eoline = params.get('EndOfLine') || false;
+    this.byteAlign = params.get('EncodedByteAlign') || false;
+    this.columns = params.get('Columns') || 1728;
+    this.rows = params.get('Rows') || 0;
+    var eoblock = params.get('EndOfBlock');
+    if (eoblock == null)
+      eoblock = true;
+    this.eoblock = eoblock;
+    this.black = params.get('BlackIs1') || false;
+
+    this.codingLine = new Uint32Array(this.columns + 1);
+    this.refLine = new Uint32Array(this.columns + 2);
+
+    this.codingLine[0] = this.columns;
+    this.codingPos = 0;
+
+    this.row = 0;
+    this.nextLine2D = this.encoding < 0;
+    this.inputBits = 0;
+    this.inputBuf = 0;
+    this.outputBits = 0;
+    this.buf = EOF;
+
+    var code1;
+    while ((code1 = this.lookBits(12)) == 0) {
+      this.eatBits(1);
+    }
+    if (code1 == 1) {
+      this.eatBits(12);
+    }
+    if (this.encoding > 0) {
+      this.nextLine2D = !this.lookBits(1);
+      this.eatBits(1);
+    }
+
+    DecodeStream.call(this);
+  }
+
+  CCITTFaxStream.prototype = Object.create(DecodeStream.prototype);
+
+  CCITTFaxStream.prototype.readBlock = function CCITTFaxStream_readBlock() {
+    while (!this.eof) {
+      var c = this.lookChar();
+      this.buf = EOF;
+      this.ensureBuffer(this.bufferLength + 1);
+      this.buffer[this.bufferLength++] = c;
+    }
+  };
+
+  CCITTFaxStream.prototype.addPixels =
+    function ccittFaxStreamAddPixels(a1, blackPixels) {
+    var codingLine = this.codingLine;
+    var codingPos = this.codingPos;
+
+    if (a1 > codingLine[codingPos]) {
+      if (a1 > this.columns) {
+        warn('row is wrong length');
+        this.err = true;
+        a1 = this.columns;
+      }
+      if ((codingPos & 1) ^ blackPixels) {
+        ++codingPos;
+      }
+
+      codingLine[codingPos] = a1;
+    }
+    this.codingPos = codingPos;
+  };
+
+  CCITTFaxStream.prototype.addPixelsNeg =
+    function ccittFaxStreamAddPixelsNeg(a1, blackPixels) {
+    var codingLine = this.codingLine;
+    var codingPos = this.codingPos;
+
+    if (a1 > codingLine[codingPos]) {
+      if (a1 > this.columns) {
+        warn('row is wrong length');
+        this.err = true;
+        a1 = this.columns;
+      }
+      if ((codingPos & 1) ^ blackPixels)
+        ++codingPos;
+
+      codingLine[codingPos] = a1;
+    } else if (a1 < codingLine[codingPos]) {
+      if (a1 < 0) {
+        warn('invalid code');
+        this.err = true;
+        a1 = 0;
+      }
+      while (codingPos > 0 && a1 < codingLine[codingPos - 1])
+        --codingPos;
+      codingLine[codingPos] = a1;
+    }
+
+    this.codingPos = codingPos;
+  };
+
+  CCITTFaxStream.prototype.lookChar = function CCITTFaxStream_lookChar() {
+    if (this.buf != EOF)
+      return this.buf;
+
+    var refLine = this.refLine;
+    var codingLine = this.codingLine;
+    var columns = this.columns;
+
+    var refPos, blackPixels, bits;
+
+    if (this.outputBits == 0) {
+      if (this.eof)
+        return null;
+
+      this.err = false;
+
+      var code1, code2, code3;
+      if (this.nextLine2D) {
+        for (var i = 0; codingLine[i] < columns; ++i)
+          refLine[i] = codingLine[i];
+
+        refLine[i++] = columns;
+        refLine[i] = columns;
+        codingLine[0] = 0;
+        this.codingPos = 0;
+        refPos = 0;
+        blackPixels = 0;
+
+        while (codingLine[this.codingPos] < columns) {
+          code1 = this.getTwoDimCode();
+          switch (code1) {
+            case twoDimPass:
+              this.addPixels(refLine[refPos + 1], blackPixels);
+              if (refLine[refPos + 1] < columns)
+                refPos += 2;
+              break;
+            case twoDimHoriz:
+              code1 = code2 = 0;
+              if (blackPixels) {
+                do {
+                  code1 += (code3 = this.getBlackCode());
+                } while (code3 >= 64);
+                do {
+                  code2 += (code3 = this.getWhiteCode());
+                } while (code3 >= 64);
+              } else {
+                do {
+                  code1 += (code3 = this.getWhiteCode());
+                } while (code3 >= 64);
+                do {
+                  code2 += (code3 = this.getBlackCode());
+                } while (code3 >= 64);
+              }
+              this.addPixels(codingLine[this.codingPos] +
+                             code1, blackPixels);
+              if (codingLine[this.codingPos] < columns) {
+                this.addPixels(codingLine[this.codingPos] + code2,
+                               blackPixels ^ 1);
+              }
+              while (refLine[refPos] <= codingLine[this.codingPos] &&
+                     refLine[refPos] < columns) {
+                refPos += 2;
+              }
+              break;
+            case twoDimVertR3:
+              this.addPixels(refLine[refPos] + 3, blackPixels);
+              blackPixels ^= 1;
+              if (codingLine[this.codingPos] < columns) {
+                ++refPos;
+                while (refLine[refPos] <= codingLine[this.codingPos] &&
+                       refLine[refPos] < columns)
+                  refPos += 2;
+              }
+              break;
+            case twoDimVertR2:
+              this.addPixels(refLine[refPos] + 2, blackPixels);
+              blackPixels ^= 1;
+              if (codingLine[this.codingPos] < columns) {
+                ++refPos;
+                while (refLine[refPos] <= codingLine[this.codingPos] &&
+                       refLine[refPos] < columns) {
+                  refPos += 2;
+                }
+              }
+              break;
+            case twoDimVertR1:
+              this.addPixels(refLine[refPos] + 1, blackPixels);
+              blackPixels ^= 1;
+              if (codingLine[this.codingPos] < columns) {
+                ++refPos;
+                while (refLine[refPos] <= codingLine[this.codingPos] &&
+                       refLine[refPos] < columns)
+                  refPos += 2;
+              }
+              break;
+            case twoDimVert0:
+              this.addPixels(refLine[refPos], blackPixels);
+              blackPixels ^= 1;
+              if (codingLine[this.codingPos] < columns) {
+                ++refPos;
+                while (refLine[refPos] <= codingLine[this.codingPos] &&
+                       refLine[refPos] < columns)
+                  refPos += 2;
+              }
+              break;
+            case twoDimVertL3:
+              this.addPixelsNeg(refLine[refPos] - 3, blackPixels);
+              blackPixels ^= 1;
+              if (codingLine[this.codingPos] < columns) {
+                if (refPos > 0)
+                  --refPos;
+                else
+                  ++refPos;
+                while (refLine[refPos] <= codingLine[this.codingPos] &&
+                       refLine[refPos] < columns)
+                  refPos += 2;
+              }
+              break;
+            case twoDimVertL2:
+              this.addPixelsNeg(refLine[refPos] - 2, blackPixels);
+              blackPixels ^= 1;
+              if (codingLine[this.codingPos] < columns) {
+                if (refPos > 0)
+                  --refPos;
+                else
+                  ++refPos;
+                while (refLine[refPos] <= codingLine[this.codingPos] &&
+                       refLine[refPos] < columns)
+                  refPos += 2;
+              }
+              break;
+            case twoDimVertL1:
+              this.addPixelsNeg(refLine[refPos] - 1, blackPixels);
+              blackPixels ^= 1;
+              if (codingLine[this.codingPos] < columns) {
+                if (refPos > 0)
+                  --refPos;
+                else
+                  ++refPos;
+
+                while (refLine[refPos] <= codingLine[this.codingPos] &&
+                       refLine[refPos] < columns)
+                  refPos += 2;
+              }
+              break;
+            case EOF:
+              this.addPixels(columns, 0);
+              this.eof = true;
+              break;
+            default:
+              warn('bad 2d code');
+              this.addPixels(columns, 0);
+              this.err = true;
+          }
+        }
+      } else {
+        codingLine[0] = 0;
+        this.codingPos = 0;
+        blackPixels = 0;
+        while (codingLine[this.codingPos] < columns) {
+          code1 = 0;
+          if (blackPixels) {
+            do {
+              code1 += (code3 = this.getBlackCode());
+            } while (code3 >= 64);
+          } else {
+            do {
+              code1 += (code3 = this.getWhiteCode());
+            } while (code3 >= 64);
+          }
+          this.addPixels(codingLine[this.codingPos] + code1, blackPixels);
+          blackPixels ^= 1;
+        }
+      }
+
+      if (this.byteAlign)
+        this.inputBits &= ~7;
+
+      var gotEOL = false;
+
+      if (!this.eoblock && this.row == this.rows - 1) {
+        this.eof = true;
+      } else {
+        code1 = this.lookBits(12);
+        while (code1 == 0) {
+          this.eatBits(1);
+          code1 = this.lookBits(12);
+        }
+        if (code1 == 1) {
+          this.eatBits(12);
+          gotEOL = true;
+        } else if (code1 == EOF) {
+          this.eof = true;
+        }
+      }
+
+      if (!this.eof && this.encoding > 0) {
+        this.nextLine2D = !this.lookBits(1);
+        this.eatBits(1);
+      }
+
+      if (this.eoblock && gotEOL) {
+        code1 = this.lookBits(12);
+        if (code1 == 1) {
+          this.eatBits(12);
+          if (this.encoding > 0) {
+            this.lookBits(1);
+            this.eatBits(1);
+          }
+          if (this.encoding >= 0) {
+            for (var i = 0; i < 4; ++i) {
+              code1 = this.lookBits(12);
+              if (code1 != 1)
+                warn('bad rtc code: ' + code1);
+              this.eatBits(12);
+              if (this.encoding > 0) {
+                this.lookBits(1);
+                this.eatBits(1);
+              }
+            }
+          }
+          this.eof = true;
+        }
+      } else if (this.err && this.eoline) {
+        while (true) {
+          code1 = this.lookBits(13);
+          if (code1 == EOF) {
+            this.eof = true;
+            return null;
+          }
+          if ((code1 >> 1) == 1) {
+            break;
+          }
+          this.eatBits(1);
+        }
+        this.eatBits(12);
+        if (this.encoding > 0) {
+          this.eatBits(1);
+          this.nextLine2D = !(code1 & 1);
+        }
+      }
+
+      if (codingLine[0] > 0)
+        this.outputBits = codingLine[this.codingPos = 0];
+      else
+        this.outputBits = codingLine[this.codingPos = 1];
+      this.row++;
+    }
+
+    if (this.outputBits >= 8) {
+      this.buf = (this.codingPos & 1) ? 0 : 0xFF;
+      this.outputBits -= 8;
+      if (this.outputBits == 0 && codingLine[this.codingPos] < columns) {
+        this.codingPos++;
+        this.outputBits = (codingLine[this.codingPos] -
+                           codingLine[this.codingPos - 1]);
+      }
+    } else {
+      var bits = 8;
+      this.buf = 0;
+      do {
+        if (this.outputBits > bits) {
+          this.buf <<= bits;
+          if (!(this.codingPos & 1)) {
+            this.buf |= 0xFF >> (8 - bits);
+          }
+          this.outputBits -= bits;
+          bits = 0;
+        } else {
+          this.buf <<= this.outputBits;
+          if (!(this.codingPos & 1)) {
+            this.buf |= 0xFF >> (8 - this.outputBits);
+          }
+          bits -= this.outputBits;
+          this.outputBits = 0;
+          if (codingLine[this.codingPos] < columns) {
+            this.codingPos++;
+            this.outputBits = (codingLine[this.codingPos] -
+                               codingLine[this.codingPos - 1]);
+          } else if (bits > 0) {
+            this.buf <<= bits;
+            bits = 0;
+          }
+        }
+      } while (bits);
+    }
+    if (this.black) {
+      this.buf ^= 0xFF;
+    }
+    return this.buf;
+  };
+
+  // This functions returns the code found from the table.
+  // The start and end parameters set the boundaries for searching the table.
+  // The limit parameter is optional. Function returns an array with three
+  // values. The first array element indicates whether a valid code is being
+  // returned. The second array element is the actual code. The third array
+  // element indicates whether EOF was reached.
+  CCITTFaxStream.prototype.findTableCode =
+    function ccittFaxStreamFindTableCode(start, end, table, limit) {
+
+    var limitValue = limit || 0;
+    for (var i = start; i <= end; ++i) {
+      var code = this.lookBits(i);
+      if (code == EOF)
+        return [true, 1, false];
+      if (i < end)
+        code <<= end - i;
+      if (!limitValue || code >= limitValue) {
+        var p = table[code - limitValue];
+        if (p[0] == i) {
+          this.eatBits(i);
+          return [true, p[1], true];
+        }
+      }
+    }
+    return [false, 0, false];
+  };
+
+  CCITTFaxStream.prototype.getTwoDimCode =
+    function ccittFaxStreamGetTwoDimCode() {
+
+    var code = 0;
+    var p;
+    if (this.eoblock) {
+      code = this.lookBits(7);
+      p = twoDimTable[code];
+      if (p && p[0] > 0) {
+        this.eatBits(p[0]);
+        return p[1];
+      }
+    } else {
+      var result = this.findTableCode(1, 7, twoDimTable);
+      if (result[0] && result[2])
+        return result[1];
+    }
+    warn('Bad two dim code');
+    return EOF;
+  };
+
+  CCITTFaxStream.prototype.getWhiteCode =
+    function ccittFaxStreamGetWhiteCode() {
+
+    var code = 0;
+    var p;
+    var n;
+    if (this.eoblock) {
+      code = this.lookBits(12);
+      if (code == EOF)
+        return 1;
+
+      if ((code >> 5) == 0)
+        p = whiteTable1[code];
+      else
+        p = whiteTable2[code >> 3];
+
+      if (p[0] > 0) {
+        this.eatBits(p[0]);
+        return p[1];
+      }
+    } else {
+      var result = this.findTableCode(1, 9, whiteTable2);
+      if (result[0])
+        return result[1];
+
+      result = this.findTableCode(11, 12, whiteTable1);
+      if (result[0])
+        return result[1];
+    }
+    warn('bad white code');
+    this.eatBits(1);
+    return 1;
+  };
+
+  CCITTFaxStream.prototype.getBlackCode =
+    function ccittFaxStreamGetBlackCode() {
+
+    var code, p;
+    if (this.eoblock) {
+      code = this.lookBits(13);
+      if (code == EOF)
+        return 1;
+      if ((code >> 7) == 0)
+        p = blackTable1[code];
+      else if ((code >> 9) == 0 && (code >> 7) != 0)
+        p = blackTable2[(code >> 1) - 64];
+      else
+        p = blackTable3[code >> 7];
+
+      if (p[0] > 0) {
+        this.eatBits(p[0]);
+        return p[1];
+      }
+    } else {
+      var result = this.findTableCode(2, 6, blackTable3);
+      if (result[0])
+        return result[1];
+
+      result = this.findTableCode(7, 12, blackTable2, 64);
+      if (result[0])
+        return result[1];
+
+      result = this.findTableCode(10, 13, blackTable1);
+      if (result[0])
+        return result[1];
+    }
+    warn('bad black code');
+    this.eatBits(1);
+    return 1;
+  };
+
+  CCITTFaxStream.prototype.lookBits = function CCITTFaxStream_lookBits(n) {
+    var c;
+    while (this.inputBits < n) {
+      if ((c = this.str.getByte()) == null) {
+        if (this.inputBits == 0)
+          return EOF;
+        return ((this.inputBuf << (n - this.inputBits)) &
+                (0xFFFF >> (16 - n)));
+      }
+      this.inputBuf = (this.inputBuf << 8) + c;
+      this.inputBits += 8;
+    }
+    return (this.inputBuf >> (this.inputBits - n)) & (0xFFFF >> (16 - n));
+  };
+
+  CCITTFaxStream.prototype.eatBits = function CCITTFaxStream_eatBits(n) {
+    if ((this.inputBits -= n) < 0)
+      this.inputBits = 0;
+  };
+
+  return CCITTFaxStream;
+})();
+
+var LZWStream = (function LZWStreamClosure() {
+  function LZWStream(str, earlyChange) {
+    this.str = str;
+    this.dict = str.dict;
+    this.cachedData = 0;
+    this.bitsCached = 0;
+
+    var maxLzwDictionarySize = 4096;
+    var lzwState = {
+      earlyChange: earlyChange,
+      codeLength: 9,
+      nextCode: 258,
+      dictionaryValues: new Uint8Array(maxLzwDictionarySize),
+      dictionaryLengths: new Uint16Array(maxLzwDictionarySize),
+      dictionaryPrevCodes: new Uint16Array(maxLzwDictionarySize),
+      currentSequence: new Uint8Array(maxLzwDictionarySize),
+      currentSequenceLength: 0
+    };
+    for (var i = 0; i < 256; ++i) {
+      lzwState.dictionaryValues[i] = i;
+      lzwState.dictionaryLengths[i] = 1;
+    }
+    this.lzwState = lzwState;
+
+    DecodeStream.call(this);
+  }
+
+  LZWStream.prototype = Object.create(DecodeStream.prototype);
+
+  LZWStream.prototype.readBits = function LZWStream_readBits(n) {
+    var bitsCached = this.bitsCached;
+    var cachedData = this.cachedData;
+    while (bitsCached < n) {
+      var c = this.str.getByte();
+      if (c == null) {
+        this.eof = true;
+        return null;
+      }
+      cachedData = (cachedData << 8) | c;
+      bitsCached += 8;
+    }
+    this.bitsCached = (bitsCached -= n);
+    this.cachedData = cachedData;
+    this.lastCode = null;
+    return (cachedData >>> bitsCached) & ((1 << n) - 1);
+  };
+
+  LZWStream.prototype.readBlock = function LZWStream_readBlock() {
+    var blockSize = 512;
+    var estimatedDecodedSize = blockSize * 2, decodedSizeDelta = blockSize;
+    var i, j, q;
+
+    var lzwState = this.lzwState;
+    if (!lzwState)
+      return; // eof was found
+
+    var earlyChange = lzwState.earlyChange;
+    var nextCode = lzwState.nextCode;
+    var dictionaryValues = lzwState.dictionaryValues;
+    var dictionaryLengths = lzwState.dictionaryLengths;
+    var dictionaryPrevCodes = lzwState.dictionaryPrevCodes;
+    var codeLength = lzwState.codeLength;
+    var prevCode = lzwState.prevCode;
+    var currentSequence = lzwState.currentSequence;
+    var currentSequenceLength = lzwState.currentSequenceLength;
+
+    var decodedLength = 0;
+    var currentBufferLength = this.bufferLength;
+    var buffer = this.ensureBuffer(this.bufferLength + estimatedDecodedSize);
+
+    for (i = 0; i < blockSize; i++) {
+      var code = this.readBits(codeLength);
+      var hasPrev = currentSequenceLength > 0;
+      if (code < 256) {
+        currentSequence[0] = code;
+        currentSequenceLength = 1;
+      } else if (code >= 258) {
+        if (code < nextCode) {
+          currentSequenceLength = dictionaryLengths[code];
+          for (j = currentSequenceLength - 1, q = code; j >= 0; j--) {
+            currentSequence[j] = dictionaryValues[q];
+            q = dictionaryPrevCodes[q];
+          }
+        } else {
+          currentSequence[currentSequenceLength++] = currentSequence[0];
+        }
+      } else if (code == 256) {
+        codeLength = 9;
+        nextCode = 258;
+        currentSequenceLength = 0;
+        continue;
+      } else {
+        this.eof = true;
+        delete this.lzwState;
+        break;
+      }
+
+      if (hasPrev) {
+        dictionaryPrevCodes[nextCode] = prevCode;
+        dictionaryLengths[nextCode] = dictionaryLengths[prevCode] + 1;
+        dictionaryValues[nextCode] = currentSequence[0];
+        nextCode++;
+        codeLength = (nextCode + earlyChange) & (nextCode + earlyChange - 1) ?
+          codeLength : Math.min(Math.log(nextCode + earlyChange) /
+          0.6931471805599453 + 1, 12) | 0;
+      }
+      prevCode = code;
+
+      decodedLength += currentSequenceLength;
+      if (estimatedDecodedSize < decodedLength) {
+        do {
+          estimatedDecodedSize += decodedSizeDelta;
+        } while (estimatedDecodedSize < decodedLength);
+        buffer = this.ensureBuffer(this.bufferLength + estimatedDecodedSize);
+      }
+      for (j = 0; j < currentSequenceLength; j++)
+        buffer[currentBufferLength++] = currentSequence[j];
+    }
+    lzwState.nextCode = nextCode;
+    lzwState.codeLength = codeLength;
+    lzwState.prevCode = prevCode;
+    lzwState.currentSequenceLength = currentSequenceLength;
+
+    this.bufferLength = currentBufferLength;
+  };
+
+  return LZWStream;
+})();
+
+
+/* -*- Mode: Java; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/* vim: set shiftwidth=2 tabstop=2 autoindent cindent expandtab: */
+
+'use strict';
+
+function MessageHandler(name, comObj) {
+  this.name = name;
+  this.comObj = comObj;
+  this.callbackIndex = 1;
+  var callbacks = this.callbacks = {};
+  var ah = this.actionHandler = {};
+
+  ah['console_log'] = [function ahConsoleLog(data) {
+      PdfJS_window.console.log.apply(PdfJS_window.console, data);
+  }];
+  ah['console_error'] = [function ahConsoleError(data) {
+      PdfJS_window.console.error.apply(PdfJS_window.console, data);
+  }];
+
+  comObj.onmessage = function messageHandlerComObjOnMessage(event) {
+    var data = event.data;
+    if (data.isReply) {
+      var callbackId = data.callbackId;
+      if (data.callbackId in callbacks) {
+        var callback = callbacks[callbackId];
+        delete callbacks[callbackId];
+        callback(data.data);
+      } else {
+        error('Cannot resolve callback ' + callbackId);
+      }
+    } else if (data.action in ah) {
+      var action = ah[data.action];
+      if (data.callbackId) {
+        var promise = new Promise();
+        promise.then(function(resolvedData) {
+          comObj.postMessage({
+            isReply: true,
+            callbackId: data.callbackId,
+            data: resolvedData
+          });
+        });
+        action[0].call(action[1], data.data, promise);
+      } else {
+        action[0].call(action[1], data.data);
+      }
+    } else {
+      error('Unkown action from worker: ' + data.action);
+    }
+  };
+}
+
+MessageHandler.prototype = {
+  on: function messageHandlerOn(actionName, handler, scope) {
+    var ah = this.actionHandler;
+    if (ah[actionName]) {
+      error('There is already an actionName called "' + actionName + '"');
+    }
+    ah[actionName] = [handler, scope];
+  },
+  /**
+   * Sends a message to the comObj to invoke the action with the supplied data.
+   * @param {String} actionName Action to call.
+   * @param {JSON} data JSON data to send.
+   * @param {function} [callback] Optional callback that will handle a reply.
+   */
+  send: function messageHandlerSend(actionName, data, callback) {
+    var message = {
+      action: actionName,
+      data: data
+    };
+    if (callback) {
+      var callbackId = this.callbackIndex++;
+      this.callbacks[callbackId] = callback;
+      message.callbackId = callbackId;
+    }
+    this.comObj.postMessage(message);
+  }
+};
+
+var WorkerMessageHandler = {
+  setup: function wphSetup(handler) {
+    var pdfModel = null;
+
+    handler.on('test', function wphSetupTest(data) {
+      handler.send('test', data instanceof Uint8Array);
+    });
+
+    handler.on('GetDocRequest', function wphSetupDoc(data) {
+      // Create only the model of the PDFDoc, which is enough for
+      // processing the content of the pdf.
+      pdfModel = new PDFDocument(new Stream(data));
+      var doc = {
+        numPages: pdfModel.numPages,
+        fingerprint: pdfModel.getFingerprint(),
+        destinations: pdfModel.catalog.destinations,
+        outline: pdfModel.catalog.documentOutline,
+        info: pdfModel.getDocumentInfo(),
+        metadata: pdfModel.catalog.metadata
+      };
+      handler.send('GetDoc', {pdfInfo: doc});
+    });
+
+    handler.on('GetPageRequest', function wphSetupGetPage(data) {
+      var pageNumber = data.pageIndex + 1;
+      var pdfPage = pdfModel.getPage(pageNumber);
+      var page = {
+        pageIndex: data.pageIndex,
+        rotate: pdfPage.rotate,
+        ref: pdfPage.ref,
+        view: pdfPage.view
+      };
+      handler.send('GetPage', {pageInfo: page});
+    });
+
+    handler.on('GetAnnotationsRequest', function wphSetupGetAnnotations(data) {
+      var pdfPage = pdfModel.getPage(data.pageIndex + 1);
+      handler.send('GetAnnotations', {
+        pageIndex: data.pageIndex,
+        annotations: pdfPage.getAnnotations()
+      });
+    });
+
+    handler.on('RenderPageRequest', function wphSetupRenderPage(data) {
+      var pageNum = data.pageIndex + 1;
+
+
+      // The following code does quite the same as
+      // Page.prototype.startRendering, but stops at one point and sends the
+      // result back to the main thread.
+      var gfx = new CanvasGraphics(null);
+
+      var start = Date.now();
+
+      var dependency = [];
+      var operatorList = null;
+      try {
+        var page = pdfModel.getPage(pageNum);
+        // Pre compile the pdf page and fetch the fonts/images.
+        operatorList = page.getOperatorList(handler, dependency);
+      } catch (e) {
+        var minimumStackMessage =
+            'worker.js: while trying to getPage() and getOperatorList()';
+
+        // Turn the error into an obj that can be serialized
+        if (typeof e === 'string') {
+          e = {
+            message: e,
+            stack: minimumStackMessage
+          };
+        } else if (typeof e === 'object') {
+          e = {
+            message: e.message || e.toString(),
+            stack: e.stack || minimumStackMessage
+          };
+        } else {
+          e = {
+            message: 'Unknown exception type: ' + (typeof e),
+            stack: minimumStackMessage
+          };
+        }
+
+        handler.send('PageError', {
+          pageNum: pageNum,
+          error: e
+        });
+        return;
+      }
+
+      //comment out as it floods the logcat
+      //PdfJS_window.console.log('page=%d - getOperatorList: time=%dms, len=%d', pageNum,
+      //                        Date.now() - start, operatorList.fnArray.length);
+
+      // Filter the dependecies for fonts.
+      var fonts = {};
+      for (var i = 0, ii = dependency.length; i < ii; i++) {
+        var dep = dependency[i];
+        if (dep.indexOf('font_') == 0) {
+          fonts[dep] = true;
+        }
+      }
+      handler.send('RenderPage', {
+        pageIndex: data.pageIndex,
+        operatorList: operatorList,
+        depFonts: Object.keys(fonts)
+      });
+    }, this);
+  }
+};
+
+var consoleTimer = {};
+
+var workerConsole = {
+  log: function log() {
+    var args = Array.prototype.slice.call(arguments);
+    postMessage({
+      action: 'console_log',
+      data: args
+    });
+  },
+
+  error: function error() {
+    var args = Array.prototype.slice.call(arguments);
+    postMessage({
+      action: 'console_error',
+      data: args
+    });
+    throw 'pdf.js execution error';
+  },
+
+  time: function time(name) {
+    consoleTimer[name] = Date.now();
+  },
+
+  timeEnd: function timeEnd(name) {
+    var time = consoleTimer[name];
+    if (time == null) {
+      error('Unkown timer name ' + name);
+    }
+    this.log('Timer:', name, Date.now() - time);
+  }
+};
+
+// Worker thread?
+if (typeof PdfJS_window.window === 'undefined') {
+  globalScope.console = workerConsole;
+
+  var handler = new MessageHandler('worker_processor', this);
+  WorkerMessageHandler.setup(handler);
+}
+
+
+/* -*- Mode: Java; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- /
+/* vim: set shiftwidth=2 tabstop=2 autoindent cindent expandtab: */
+
+// - The JPEG specification can be found in the ITU CCITT Recommendation T.81
+//   (www.w3.org/Graphics/JPEG/itu-t81.pdf)
+// - The JFIF specification can be found in the JPEG File Interchange Format
+//   (www.w3.org/Graphics/JPEG/jfif3.pdf)
+// - The Adobe Application-Specific JPEG markers in the Supporting the DCT Filters
+//   in PostScript Level 2, Technical Note #5116
+//   (partners.adobe.com/public/developer/en/ps/sdk/5116.DCT_Filter.pdf)
+
+var JpegImage = (function jpegImage() {
+  "use strict";
+  var dctZigZag = new Int32Array([
+     0,
+     1,  8,
+    16,  9,  2,
+     3, 10, 17, 24,
+    32, 25, 18, 11, 4,
+     5, 12, 19, 26, 33, 40,
+    48, 41, 34, 27, 20, 13,  6,
+     7, 14, 21, 28, 35, 42, 49, 56,
+    57, 50, 43, 36, 29, 22, 15,
+    23, 30, 37, 44, 51, 58,
+    59, 52, 45, 38, 31,
+    39, 46, 53, 60,
+    61, 54, 47,
+    55, 62,
+    63
+  ]);
+
+  var dctCos1  =  4017   // cos(pi/16)
+  var dctSin1  =   799   // sin(pi/16)
+  var dctCos3  =  3406   // cos(3*pi/16)
+  var dctSin3  =  2276   // sin(3*pi/16)
+  var dctCos6  =  1567   // cos(6*pi/16)
+  var dctSin6  =  3784   // sin(6*pi/16)
+  var dctSqrt2 =  5793   // sqrt(2)
+  var dctSqrt1d2 = 2896  // sqrt(2) / 2
+
+  function constructor() {
+  }
+
+  function buildHuffmanTable(codeLengths, values) {
+    var k = 0, code = [], i, j, length = 16;
+    while (length > 0 && !codeLengths[length - 1])
+      length--;
+    code.push({children: [], index: 0});
+    var p = code[0], q;
+    for (i = 0; i < length; i++) {
+      for (j = 0; j < codeLengths[i]; j++) {
+        p = code.pop();
+        p.children[p.index] = values[k];
+        while (p.index > 0) {
+          p = code.pop();
+        }
+        p.index++;
+        code.push(p);
+        while (code.length <= i) {
+          code.push(q = {children: [], index: 0});
+          p.children[p.index] = q.children;
+          p = q;
+        }
+        k++;
+      }
+      if (i + 1 < length) {
+        // p here points to last code
+        code.push(q = {children: [], index: 0});
+        p.children[p.index] = q.children;
+        p = q;
+      }
+    }
+    return code[0].children;
+  }
+
+  function decodeScan(data, offset,
+                      frame, components, resetInterval,
+                      spectralStart, spectralEnd,
+                      successivePrev, successive) {
+    var precision = frame.precision;
+    var samplesPerLine = frame.samplesPerLine;
+    var scanLines = frame.scanLines;
+    var mcusPerLine = frame.mcusPerLine;
+    var progressive = frame.progressive;
+    var maxH = frame.maxH, maxV = frame.maxV;
+
+    var startOffset = offset, bitsData = 0, bitsCount = 0;
+    function readBit() {
+      if (bitsCount > 0) {
+        bitsCount--;
+        return (bitsData >> bitsCount) & 1;
+      }
+      bitsData = data[offset++];
+      if (bitsData == 0xFF) {
+        var nextByte = data[offset++];
+        if (nextByte) {
+          throw "unexpected marker: " + ((bitsData << 8) | nextByte).toString(16);
+        }
+        // unstuff 0
+      }
+      bitsCount = 7;
+      return bitsData >>> 7;
+    }
+    function decodeHuffman(tree) {
+      var node = tree, bit;
+      while ((bit = readBit()) !== null) {
+        node = node[bit];
+        if (typeof node === 'number')
+          return node;
+        if (typeof node !== 'object')
+          throw "invalid huffman sequence";
+      }
+      return null;
+    }
+    function receive(length) {
+      var n = 0;
+      while (length > 0) {
+        var bit = readBit();
+        if (bit === null) return;
+        n = (n << 1) | bit;
+        length--;
+      }
+      return n;
+    }
+    function receiveAndExtend(length) {
+      var n = receive(length);
+      if (n >= 1 << (length - 1))
+        return n;
+      return n + (-1 << length) + 1;
+    }
+    function decodeBaseline(component, zz) {
+      var t = decodeHuffman(component.huffmanTableDC);
+      var diff = t === 0 ? 0 : receiveAndExtend(t);
+      zz[0]= (component.pred += diff);
+      var k = 1;
+      while (k < 64) {
+        var rs = decodeHuffman(component.huffmanTableAC);
+        var s = rs & 15, r = rs >> 4;
+        if (s === 0) {
+          if (r < 15)
+            break;
+          k += 16;
+          continue;
+        }
+        k += r;
+        var z = dctZigZag[k];
+        zz[z] = receiveAndExtend(s);
+        k++;
+      }
+    }
+    function decodeDCFirst(component, zz) {
+      var t = decodeHuffman(component.huffmanTableDC);
+      var diff = t === 0 ? 0 : (receiveAndExtend(t) << successive);
+      zz[0] = (component.pred += diff);
+    }
+    function decodeDCSuccessive(component, zz) {
+      zz[0] |= readBit() << successive;
+    }
+    var eobrun = 0;
+    function decodeACFirst(component, zz) {
+      if (eobrun > 0) {
+        eobrun--;
+        return;
+      }
+      var k = spectralStart, e = spectralEnd;
+      while (k <= e) {
+        var rs = decodeHuffman(component.huffmanTableAC);
+        var s = rs & 15, r = rs >> 4;
+        if (s === 0) {
+          if (r < 15) {
+            eobrun = receive(r) + (1 << r) - 1;
+            break;
+          }
+          k += 16;
+          continue;
+        }
+        k += r;
+        var z = dctZigZag[k];
+        zz[z] = receiveAndExtend(s) * (1 << successive);
+        k++;
+      }
+    }
+    var successiveACState = 0, successiveACNextValue;
+    function decodeACSuccessive(component, zz) {
+      var k = spectralStart, e = spectralEnd, r = 0;
+      while (k <= e) {
+        var z = dctZigZag[k];
+        switch (successiveACState) {
+        case 0: // initial state
+          var rs = decodeHuffman(component.huffmanTableAC);
+          var s = rs & 15, r = rs >> 4;
+          if (s === 0) {
+            if (r < 15) {
+              eobrun = receive(r) + (1 << r);
+              successiveACState = 4;
+            } else {
+              r = 16;
+              successiveACState = 1;
+            }
+          } else {
+            if (s !== 1)
+              throw "invalid ACn encoding";
+            successiveACNextValue = receiveAndExtend(s);
+            successiveACState = r ? 2 : 3;
+          }
+          continue;
+        case 1: // skipping r zero items
+        case 2:
+          if (zz[z])
+            zz[z] += (readBit() << successive);
+          else {
+            r--;
+            if (r === 0)
+              successiveACState = successiveACState == 2 ? 3 : 0;
+          }
+          break;
+        case 3: // set value for a zero item
+          if (zz[z])
+            zz[z] += (readBit() << successive);
+          else {
+            zz[z] = successiveACNextValue << successive;
+            successiveACState = 0;
+          }
+          break;
+        case 4: // eob
+          if (zz[z])
+            zz[z] += (readBit() << successive);
+          break;
+        }
+        k++;
+      }
+      if (successiveACState === 4) {
+        eobrun--;
+        if (eobrun === 0)
+          successiveACState = 0;
+      }
+    }
+    function decodeMcu(component, decode, mcu, row, col) {
+      var mcuRow = (mcu / mcusPerLine) | 0;
+      var mcuCol = mcu % mcusPerLine;
+      var blockRow = mcuRow * component.v + row;
+      var blockCol = mcuCol * component.h + col;
+      decode(component, component.blocks[blockRow][blockCol]);
+    }
+    function decodeBlock(component, decode, mcu) {
+      var blockRow = (mcu / component.blocksPerLine) | 0;
+      var blockCol = mcu % component.blocksPerLine;
+      decode(component, component.blocks[blockRow][blockCol]);
+    }
+
+    var componentsLength = components.length;
+    var component, i, j, k, n;
+    var decodeFn;
+    if (progressive) {
+      if (spectralStart === 0)
+        decodeFn = successivePrev === 0 ? decodeDCFirst : decodeDCSuccessive;
+      else
+        decodeFn = successivePrev === 0 ? decodeACFirst : decodeACSuccessive;
+    } else {
+      decodeFn = decodeBaseline;
+    }
+
+    var mcu = 0, marker;
+    var mcuExpected;
+    if (componentsLength == 1) {
+      mcuExpected = components[0].blocksPerLine * components[0].blocksPerColumn;
+    } else {
+      mcuExpected = mcusPerLine * frame.mcusPerColumn;
+    }
+    if (!resetInterval) resetInterval = mcuExpected;
+
+    var h, v;
+    while (mcu < mcuExpected) {
+      // reset interval stuff
+      for (i = 0; i < componentsLength; i++)
+        components[i].pred = 0;
+      eobrun = 0;
+
+      if (componentsLength == 1) {
+        component = components[0];
+        for (n = 0; n < resetInterval; n++) {
+          decodeBlock(component, decodeFn, mcu);
+          mcu++;
+        }
+      } else {
+        for (n = 0; n < resetInterval; n++) {
+          for (i = 0; i < componentsLength; i++) {
+            component = components[i];
+            h = component.h;
+            v = component.v;
+            for (j = 0; j < v; j++) {
+              for (k = 0; k < h; k++) {
+                decodeMcu(component, decodeFn, mcu, j, k);
+              }
+            }
+          }
+          mcu++;
+        }
+      }
+
+      // find marker
+      bitsCount = 0;
+      marker = (data[offset] << 8) | data[offset + 1];
+      if (marker <= 0xFF00) {
+        throw "marker was not found";
+      }
+
+      if (marker >= 0xFFD0 && marker <= 0xFFD7) { // RSTx
+        offset += 2;
+      }
+      else
+        break;
+    }
+
+    return offset - startOffset;
+  }
+
+  function buildComponentData(frame, component) {
+    var lines = [];
+    var blocksPerLine = component.blocksPerLine;
+    var blocksPerColumn = component.blocksPerColumn;
+    var samplesPerLine = blocksPerLine << 3;
+    var R = new Int32Array(64), r = new Uint8Array(64);
+
+    // A port of poppler's IDCT method which in turn is taken from:
+    //   Christoph Loeffler, Adriaan Ligtenberg, George S. Moschytz,
+    //   "Practical Fast 1-D DCT Algorithms with 11 Multiplications",
+    //   IEEE Intl. Conf. on Acoustics, Speech & Signal Processing, 1989,
+    //   988-991.
+    function quantizeAndInverse(zz, dataOut, dataIn) {
+      var qt = component.quantizationTable;
+      var v0, v1, v2, v3, v4, v5, v6, v7, t;
+      var p = dataIn;
+      var i;
+
+      // dequant
+      for (i = 0; i < 64; i++)
+        p[i] = zz[i] * qt[i];
+
+      // inverse DCT on rows
+      for (i = 0; i < 8; ++i) {
+        var row = 8 * i;
+
+        // check for all-zero AC coefficients
+        if (p[1 + row] == 0 && p[2 + row] == 0 && p[3 + row] == 0 &&
+            p[4 + row] == 0 && p[5 + row] == 0 && p[6 + row] == 0 &&
+            p[7 + row] == 0) {
+          t = (dctSqrt2 * p[0 + row] + 512) >> 10;
+          p[0 + row] = t;
+          p[1 + row] = t;
+          p[2 + row] = t;
+          p[3 + row] = t;
+          p[4 + row] = t;
+          p[5 + row] = t;
+          p[6 + row] = t;
+          p[7 + row] = t;
+          continue;
+        }
+
+        // stage 4
+        v0 = (dctSqrt2 * p[0 + row] + 128) >> 8;
+        v1 = (dctSqrt2 * p[4 + row] + 128) >> 8;
+        v2 = p[2 + row];
+        v3 = p[6 + row];
+        v4 = (dctSqrt1d2 * (p[1 + row] - p[7 + row]) + 128) >> 8;
+        v7 = (dctSqrt1d2 * (p[1 + row] + p[7 + row]) + 128) >> 8;
+        v5 = p[3 + row] << 4;
+        v6 = p[5 + row] << 4;
+
+        // stage 3
+        t = (v0 - v1+ 1) >> 1;
+        v0 = (v0 + v1 + 1) >> 1;
+        v1 = t;
+        t = (v2 * dctSin6 + v3 * dctCos6 + 128) >> 8;
+        v2 = (v2 * dctCos6 - v3 * dctSin6 + 128) >> 8;
+        v3 = t;
+        t = (v4 - v6 + 1) >> 1;
+        v4 = (v4 + v6 + 1) >> 1;
+        v6 = t;
+        t = (v7 + v5 + 1) >> 1;
+        v5 = (v7 - v5 + 1) >> 1;
+        v7 = t;
+
+        // stage 2
+        t = (v0 - v3 + 1) >> 1;
+        v0 = (v0 + v3 + 1) >> 1;
+        v3 = t;
+        t = (v1 - v2 + 1) >> 1;
+        v1 = (v1 + v2 + 1) >> 1;
+        v2 = t;
+        t = (v4 * dctSin3 + v7 * dctCos3 + 2048) >> 12;
+        v4 = (v4 * dctCos3 - v7 * dctSin3 + 2048) >> 12;
+        v7 = t;
+        t = (v5 * dctSin1 + v6 * dctCos1 + 2048) >> 12;
+        v5 = (v5 * dctCos1 - v6 * dctSin1 + 2048) >> 12;
+        v6 = t;
+
+        // stage 1
+        p[0 + row] = v0 + v7;
+        p[7 + row] = v0 - v7;
+        p[1 + row] = v1 + v6;
+        p[6 + row] = v1 - v6;
+        p[2 + row] = v2 + v5;
+        p[5 + row] = v2 - v5;
+        p[3 + row] = v3 + v4;
+        p[4 + row] = v3 - v4;
+      }
+
+      // inverse DCT on columns
+      for (i = 0; i < 8; ++i) {
+        var col = i;
+
+        // check for all-zero AC coefficients
+        if (p[1*8 + col] == 0 && p[2*8 + col] == 0 && p[3*8 + col] == 0 &&
+            p[4*8 + col] == 0 && p[5*8 + col] == 0 && p[6*8 + col] == 0 &&
+            p[7*8 + col] == 0) {
+          t = (dctSqrt2 * dataIn[i+0] + 8192) >> 14;
+          p[0*8 + col] = t;
+          p[1*8 + col] = t;
+          p[2*8 + col] = t;
+          p[3*8 + col] = t;
+          p[4*8 + col] = t;
+          p[5*8 + col] = t;
+          p[6*8 + col] = t;
+          p[7*8 + col] = t;
+          continue;
+        }
+
+        // stage 4
+        v0 = (dctSqrt2 * p[0*8 + col] + 2048) >> 12;
+        v1 = (dctSqrt2 * p[4*8 + col] + 2048) >> 12;
+        v2 = p[2*8 + col];
+        v3 = p[6*8 + col];
+        v4 = (dctSqrt1d2 * (p[1*8 + col] - p[7*8 + col]) + 2048) >> 12;
+        v7 = (dctSqrt1d2 * (p[1*8 + col] + p[7*8 + col]) + 2048) >> 12;
+        v5 = p[3*8 + col];
+        v6 = p[5*8 + col];
+
+        // stage 3
+        t = (v0 - v1 + 1) >> 1;
+        v0 = (v0 + v1 + 1) >> 1;
+        v1 = t;
+        t = (v2 * dctSin6 + v3 * dctCos6 + 2048) >> 12;
+        v2 = (v2 * dctCos6 - v3 * dctSin6 + 2048) >> 12;
+        v3 = t;
+        t = (v4 - v6 + 1) >> 1;
+        v4 = (v4 + v6 + 1) >> 1;
+        v6 = t;
+        t = (v7 + v5 + 1) >> 1;
+        v5 = (v7 - v5 + 1) >> 1;
+        v7 = t;
+
+        // stage 2
+        t = (v0 - v3 + 1) >> 1;
+        v0 = (v0 + v3 + 1) >> 1;
+        v3 = t;
+        t = (v1 - v2 + 1) >> 1;
+        v1 = (v1 + v2 + 1) >> 1;
+        v2 = t;
+        t = (v4 * dctSin3 + v7 * dctCos3 + 2048) >> 12;
+        v4 = (v4 * dctCos3 - v7 * dctSin3 + 2048) >> 12;
+        v7 = t;
+        t = (v5 * dctSin1 + v6 * dctCos1 + 2048) >> 12;
+        v5 = (v5 * dctCos1 - v6 * dctSin1 + 2048) >> 12;
+        v6 = t;
+
+        // stage 1
+        p[0*8 + col] = v0 + v7;
+        p[7*8 + col] = v0 - v7;
+        p[1*8 + col] = v1 + v6;
+        p[6*8 + col] = v1 - v6;
+        p[2*8 + col] = v2 + v5;
+        p[5*8 + col] = v2 - v5;
+        p[3*8 + col] = v3 + v4;
+        p[4*8 + col] = v3 - v4;
+      }
+
+      // convert to 8-bit integers
+      for (i = 0; i < 64; ++i) {
+        var sample = 128 + ((p[i] + 8) >> 4);
+        dataOut[i] = sample < 0 ? 0 : sample > 0xFF ? 0xFF : sample;
+      }
+    }
+
+    var i, j;
+    for (var blockRow = 0; blockRow < blocksPerColumn; blockRow++) {
+      var scanLine = blockRow << 3;
+      for (i = 0; i < 8; i++)
+        lines.push(new Uint8Array(samplesPerLine));
+      for (var blockCol = 0; blockCol < blocksPerLine; blockCol++) {
+        quantizeAndInverse(component.blocks[blockRow][blockCol], r, R);
+
+        var offset = 0, sample = blockCol << 3;
+        for (j = 0; j < 8; j++) {
+          var line = lines[scanLine + j];
+          for (i = 0; i < 8; i++)
+            line[sample + i] = r[offset++];
+        }
+      }
+    }
+    return lines;
+  }
+
+  constructor.prototype = {
+    load: function load(path) {
+      var xhr = new PdfJS_window.XMLHttpRequest();
+      xhr.open("GET", path, true);
+      xhr.responseType = "arraybuffer";
+      xhr.onload = (function() {
+        // TODO catch parse error
+        var data = new Uint8Array(xhr.response || xhr.mozResponseArrayBuffer);
+        this.parse(data);
+        if (this.onload)
+          this.onload();
+      }).bind(this);
+      xhr.send(null);
+    },
+    parse: function parse(data) {
+      var offset = 0, length = data.length;
+      function readUint16() {
+        var value = (data[offset] << 8) | data[offset + 1];
+        offset += 2;
+        return value;
+      }
+      function readDataBlock() {
+        var length = readUint16();
+        var array = data.subarray(offset, offset + length - 2);
+        offset += array.length;
+        return array;
+      }
+      function prepareComponents(frame) {
+        var maxH = 0, maxV = 0;
+        var component, componentId;
+        for (componentId in frame.components) {
+          if (frame.components.hasOwnProperty(componentId)) {
+            component = frame.components[componentId];
+            if (maxH < component.h) maxH = component.h;
+            if (maxV < component.v) maxV = component.v;
+          }
+        }
+        var mcusPerLine = Math.ceil(frame.samplesPerLine / 8 / maxH);
+        var mcusPerColumn = Math.ceil(frame.scanLines / 8 / maxV);
+        for (componentId in frame.components) {
+          if (frame.components.hasOwnProperty(componentId)) {
+            component = frame.components[componentId];
+            var blocksPerLine = Math.ceil(Math.ceil(frame.samplesPerLine / 8) * component.h / maxH);
+            var blocksPerColumn = Math.ceil(Math.ceil(frame.scanLines  / 8) * component.v / maxV);
+            var blocksPerLineForMcu = mcusPerLine * component.h;
+            var blocksPerColumnForMcu = mcusPerColumn * component.v;
+            var blocks = [];
+            for (var i = 0; i < blocksPerColumnForMcu; i++) {
+              var row = [];
+              for (var j = 0; j < blocksPerLineForMcu; j++)
+                row.push(new Int32Array(64));
+              blocks.push(row);
+            }
+            component.blocksPerLine = blocksPerLine;
+            component.blocksPerColumn = blocksPerColumn;
+            component.blocks = blocks;
+          }
+        }
+        frame.maxH = maxH;
+        frame.maxV = maxV;
+        frame.mcusPerLine = mcusPerLine;
+        frame.mcusPerColumn = mcusPerColumn;
+      }
+      var jfif = null;
+      var adobe = null;
+      var pixels = null;
+      var frame, resetInterval;
+      var quantizationTables = [], frames = [];
+      var huffmanTablesAC = [], huffmanTablesDC = [];
+      var fileMarker = readUint16();
+      if (fileMarker != 0xFFD8) { // SOI (Start of Image)
+        throw "SOI not found";
+      }
+
+      fileMarker = readUint16();
+      while (fileMarker != 0xFFD9) { // EOI (End of image)
+        var i, j, l;
+        switch(fileMarker) {
+          case 0xFFE0: // APP0 (Application Specific)
+          case 0xFFE1: // APP1
+          case 0xFFE2: // APP2
+          case 0xFFE3: // APP3
+          case 0xFFE4: // APP4
+          case 0xFFE5: // APP5
+          case 0xFFE6: // APP6
+          case 0xFFE7: // APP7
+          case 0xFFE8: // APP8
+          case 0xFFE9: // APP9
+          case 0xFFEA: // APP10
+          case 0xFFEB: // APP11
+          case 0xFFEC: // APP12
+          case 0xFFED: // APP13
+          case 0xFFEE: // APP14
+          case 0xFFEF: // APP15
+          case 0xFFFE: // COM (Comment)
+            var appData = readDataBlock();
+
+            if (fileMarker === 0xFFE0) {
+              if (appData[0] === 0x4A && appData[1] === 0x46 && appData[2] === 0x49 &&
+                appData[3] === 0x46 && appData[4] === 0) { // 'JFIF\x00'
+                jfif = {
+                  version: { major: appData[5], minor: appData[6] },
+                  densityUnits: appData[7],
+                  xDensity: (appData[8] << 8) | appData[9],
+                  yDensity: (appData[10] << 8) | appData[11],
+                  thumbWidth: appData[12],
+                  thumbHeight: appData[13],
+                  thumbData: appData.subarray(14, 14 + 3 * appData[12] * appData[13])
+                };
+              }
+            }
+            // TODO APP1 - Exif
+            if (fileMarker === 0xFFEE) {
+              if (appData[0] === 0x41 && appData[1] === 0x64 && appData[2] === 0x6F &&
+                appData[3] === 0x62 && appData[4] === 0x65 && appData[5] === 0) { // 'Adobe\x00'
+                adobe = {
+                  version: appData[6],
+                  flags0: (appData[7] << 8) | appData[8],
+                  flags1: (appData[9] << 8) | appData[10],
+                  transformCode: appData[11]
+                };
+              }
+            }
+            break;
+
+          case 0xFFDB: // DQT (Define Quantization Tables)
+            var quantizationTableCount = Math.floor((readUint16() - 2) / 65);
+            for (i = 0; i < quantizationTableCount; i++) {
+              var quantizationTableSpec = data[offset++];
+              var tableData = new Int32Array(64);
+              if ((quantizationTableSpec >> 4) === 0) { // 8 bit values
+                for (j = 0; j < 64; j++) {
+                  var z = dctZigZag[j];
+                  tableData[z] = data[offset++];
+                }
+              } else if ((quantizationTableSpec >> 4) === 1) { //16 bit
+                for (j = 0; j < 64; j++) {
+                  var z = dctZigZag[j];
+                  tableData[z] = readUint16();
+                }
+              } else
+                throw "DQT: invalid table spec";
+              quantizationTables[quantizationTableSpec & 15] = tableData;
+            }
+            break;
+
+          case 0xFFC0: // SOF0 (Start of Frame, Baseline DCT)
+          case 0xFFC2: // SOF2 (Start of Frame, Progressive DCT)
+            readUint16(); // skip data length
+            frame = {};
+            frame.progressive = (fileMarker === 0xFFC2);
+            frame.precision = data[offset++];
+            frame.scanLines = readUint16();
+            frame.samplesPerLine = readUint16();
+            frame.components = {};
+            frame.componentsOrder = [];
+            var componentsCount = data[offset++], componentId;
+            var maxH = 0, maxV = 0;
+            for (i = 0; i < componentsCount; i++) {
+              componentId = data[offset];
+              var h = data[offset + 1] >> 4;
+              var v = data[offset + 1] & 15;
+              var qId = data[offset + 2];
+              frame.componentsOrder.push(componentId);
+              frame.components[componentId] = {
+                h: h,
+                v: v,
+                quantizationTable: quantizationTables[qId]
+              };
+              offset += 3;
+            }
+            prepareComponents(frame);
+            frames.push(frame);
+            break;
+
+          case 0xFFC4: // DHT (Define Huffman Tables)
+            var huffmanLength = readUint16();
+            for (i = 2; i < huffmanLength;) {
+              var huffmanTableSpec = data[offset++];
+              var codeLengths = new Uint8Array(16);
+              var codeLengthSum = 0;
+              for (j = 0; j < 16; j++, offset++)
+                codeLengthSum += (codeLengths[j] = data[offset]);
+              var huffmanValues = new Uint8Array(codeLengthSum);
+              for (j = 0; j < codeLengthSum; j++, offset++)
+                huffmanValues[j] = data[offset];
+              i += 17 + codeLengthSum;
+
+              ((huffmanTableSpec >> 4) === 0 ? 
+                huffmanTablesDC : huffmanTablesAC)[huffmanTableSpec & 15] =
+                buildHuffmanTable(codeLengths, huffmanValues);
+            }
+            break;
+
+          case 0xFFDD: // DRI (Define Restart Interval)
+            readUint16(); // skip data length
+            resetInterval = readUint16();
+            break;
+
+          case 0xFFDA: // SOS (Start of Scan)
+            var scanLength = readUint16();
+            var selectorsCount = data[offset++];
+            var components = [], component;
+            for (i = 0; i < selectorsCount; i++) {
+              component = frame.components[data[offset++]];
+              var tableSpec = data[offset++];
+              component.huffmanTableDC = huffmanTablesDC[tableSpec >> 4];
+              component.huffmanTableAC = huffmanTablesAC[tableSpec & 15];
+              components.push(component);
+            }
+            var spectralStart = data[offset++];
+            var spectralEnd = data[offset++];
+            var successiveApproximation = data[offset++];
+            var processed = decodeScan(data, offset,
+              frame, components, resetInterval,
+              spectralStart, spectralEnd,
+              successiveApproximation >> 4, successiveApproximation & 15);
+            offset += processed;
+            break;
+          default:
+            throw "unknown JPEG marker " + fileMarker.toString(16);
+        }
+        fileMarker = readUint16();
+      }
+      if (frames.length != 1)
+        throw "only single frame JPEGs supported";
+
+      this.width = frame.samplesPerLine;
+      this.height = frame.scanLines;
+      this.jfif = jfif;
+      this.adobe = adobe;
+      this.components = [];
+      for (var i = 0; i < frame.componentsOrder.length; i++) {
+        var component = frame.components[frame.componentsOrder[i]];
+        this.components.push({
+          lines: buildComponentData(frame, component),
+          scaleX: component.h / frame.maxH,
+          scaleY: component.v / frame.maxV
+        });
+      }
+    },
+    getData: function getData(width, height) {
+      function clampTo8bit(a) {
+        return a < 0 ? 0 : a > 255 ? 255 : a;
+      }
+      var scaleX = this.width / width, scaleY = this.height / height;
+
+      var component1, component2, component3, component4;
+      var component1Line, component2Line, component3Line, component4Line;
+      var x, y;
+      var offset = 0;
+      var Y, Cb, Cr, K, C, M, Ye, R, G, B;
+      var colorTransform;
+      var dataLength = width * height * this.components.length;
+      var data = new Uint8Array(dataLength);
+      switch (this.components.length) {
+        case 1:
+          component1 = this.components[0];
+          for (y = 0; y < height; y++) {
+            component1Line = component1.lines[0 | (y * component1.scaleY * scaleY)];
+            for (x = 0; x < width; x++) {
+              Y = component1Line[0 | (x * component1.scaleX * scaleX)];
+
+              data[offset++] = Y;
+            }
+          }
+          break;
+        case 3:
+          // The default transform for three components is true
+          colorTransform = true;
+          // The adobe transform marker overrides any previous setting
+          if (this.adobe && this.adobe.transformCode)
+            colorTransform = true;
+          else if (typeof this.colorTransform !== 'undefined')
+            colorTransform = !!this.colorTransform;
+
+          component1 = this.components[0];
+          component2 = this.components[1];
+          component3 = this.components[2];
+          for (y = 0; y < height; y++) {
+            component1Line = component1.lines[0 | (y * component1.scaleY * scaleY)];
+            component2Line = component2.lines[0 | (y * component2.scaleY * scaleY)];
+            component3Line = component3.lines[0 | (y * component3.scaleY * scaleY)];
+            for (x = 0; x < width; x++) {
+              if (!colorTransform) {
+                R = component1Line[0 | (x * component1.scaleX * scaleX)];
+                G = component2Line[0 | (x * component2.scaleX * scaleX)];
+                B = component3Line[0 | (x * component3.scaleX * scaleX)];
+              } else {
+                Y = component1Line[0 | (x * component1.scaleX * scaleX)];
+                Cb = component2Line[0 | (x * component2.scaleX * scaleX)];
+                Cr = component3Line[0 | (x * component3.scaleX * scaleX)];
+
+                R = clampTo8bit(Y + 1.402 * (Cr - 128));
+                G = clampTo8bit(Y - 0.3441363 * (Cb - 128) - 0.71413636 * (Cr - 128));
+                B = clampTo8bit(Y + 1.772 * (Cb - 128));
+              }
+
+              data[offset++] = R;
+              data[offset++] = G;
+              data[offset++] = B;
+            }
+          }
+          break;
+        case 4:
+          if (!this.adobe)
+            throw 'Unsupported color mode (4 components)';
+          // The default transform for four components is false
+          colorTransform = false;
+          // The adobe transform marker overrides any previous setting
+          if (this.adobe && this.adobe.transformCode)
+            colorTransform = true;
+          else if (typeof this.colorTransform !== 'undefined')
+            colorTransform = !!this.colorTransform;
+
+          component1 = this.components[0];
+          component2 = this.components[1];
+          component3 = this.components[2];
+          component4 = this.components[3];
+          for (y = 0; y < height; y++) {
+            component1Line = component1.lines[0 | (y * component1.scaleY * scaleY)];
+            component2Line = component2.lines[0 | (y * component2.scaleY * scaleY)];
+            component3Line = component3.lines[0 | (y * component3.scaleY * scaleY)];
+            component4Line = component4.lines[0 | (y * component4.scaleY * scaleY)];
+            for (x = 0; x < width; x++) {
+              if (!colorTransform) {
+                C = component1Line[0 | (x * component1.scaleX * scaleX)];
+                M = component2Line[0 | (x * component2.scaleX * scaleX)];
+                Ye = component3Line[0 | (x * component3.scaleX * scaleX)];
+                K = component4Line[0 | (x * component4.scaleX * scaleX)];
+              } else {
+                Y = component1Line[0 | (x * component1.scaleX * scaleX)];
+                Cb = component2Line[0 | (x * component2.scaleX * scaleX)];
+                Cr = component3Line[0 | (x * component3.scaleX * scaleX)];
+                K = component4Line[0 | (x * component4.scaleX * scaleX)];
+
+                C = 255 - clampTo8bit(Y + 1.402 * (Cr - 128));
+                M = 255 - clampTo8bit(Y - 0.3441363 * (Cb - 128) - 0.71413636 * (Cr - 128));
+                Ye = 255 - clampTo8bit(Y + 1.772 * (Cb - 128));
+              }
+              data[offset++] = C;
+              data[offset++] = M;
+              data[offset++] = Ye;
+              data[offset++] = K;
+            }
+          }
+          break;
+        default:
+          throw 'Unsupported color mode';
+      }
+      return data;
+    },
+    copyToImageData: function copyToImageData(imageData) {
+      var width = imageData.width, height = imageData.height;
+      var imageDataArray = imageData.data;
+      var data = this.getData(width, height);
+      var i = 0, j = 0, x, y;
+      var Y, K, C, M, R, G, B;
+      switch (this.components.length) {
+        case 1:
+          for (y = 0; y < height; y++) {
+            for (x = 0; x < width; x++) {
+              Y = data[i++];
+
+              imageDataArray[j++] = Y;
+              imageDataArray[j++] = Y;
+              imageDataArray[j++] = Y;
+              imageDataArray[j++] = 255;
+            }
+          }
+          break;
+        case 3:
+          for (y = 0; y < height; y++) {
+            for (x = 0; x < width; x++) {
+              R = data[i++];
+              G = data[i++];
+              B = data[i++];
+
+              imageDataArray[j++] = R;
+              imageDataArray[j++] = G;
+              imageDataArray[j++] = B;
+              imageDataArray[j++] = 255;
+            }
+          }
+          break;
+        case 4:
+          for (y = 0; y < height; y++) {
+            for (x = 0; x < width; x++) {
+              C = data[i++];
+              M = data[i++];
+              Y = data[i++];
+              K = data[i++];
+
+              R = 255 - clampTo8bit(C * (1 - K / 255) + K);
+              G = 255 - clampTo8bit(M * (1 - K / 255) + K);
+              B = 255 - clampTo8bit(Y * (1 - K / 255) + K);
+
+              imageDataArray[j++] = R;
+              imageDataArray[j++] = G;
+              imageDataArray[j++] = B;
+              imageDataArray[j++] = 255;
+            }
+          }
+          break;
+        default:
+          throw 'Unsupported color mode';
+      }
+    }
+  };
+
+  return constructor;
+})();
+/* -*- Mode: Java; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/* vim: set shiftwidth=2 tabstop=2 autoindent cindent expandtab: */
+
+'use strict';
+
+var JpxImage = (function JpxImageClosure() {
+  // Table E.1
+  var SubbandsGainLog2 = {
+    'LL': 0,
+    'LH': 1,
+    'HL': 1,
+    'HH': 2
+  };
+  function JpxImage() {
+    this.failOnCorruptedImage = false;
+  }
+  JpxImage.prototype = {
+    load: function JpxImage_load(url) {
+      var xhr = new PdfJS_window.XMLHttpRequest();
+      xhr.open('GET', url, true);
+      xhr.responseType = 'arraybuffer';
+      xhr.onload = (function() {
+        // TODO catch parse error
+        var data = new Uint8Array(xhr.response || xhr.mozResponseArrayBuffer);
+        this.parse(data);
+        if (this.onload)
+          this.onload();
+      }).bind(this);
+      xhr.send(null);
+    },
+    parse: function JpxImage_parse(data) {
+      function ReadUint(data, offset, bytes) {
+        var n = 0;
+        for (var i = 0; i < bytes; i++)
+          n = n * 256 + (data[offset + i] & 0xFF);
+        return n;
+      }
+      var position = 0, length = data.length;
+      while (position < length) {
+        var headerSize = 8;
+        var lbox = ReadUint(data, position, 4);
+        var tbox = ReadUint(data, position + 4, 4);
+        position += headerSize;
+        if (lbox == 1) {
+          lbox = ReadUint(data, position, 8);
+          position += 8;
+          headerSize += 8;
+        }
+        if (lbox == 0)
+          lbox = length - position + headerSize;
+        if (lbox < headerSize)
+          error('JPX error: Invalid box field size');
+        var dataLength = lbox - headerSize;
+        var jumpDataLength = true;
+        switch (tbox) {
+          case 0x6A501A1A: // 'jP\032\032'
+            // TODO
+            break;
+          case 0x6A703268: // 'jp2h'
+            jumpDataLength = false; // parsing child boxes
+            break;
+          case 0x636F6C72: // 'colr'
+            // TODO
+            break;
+          case 0x6A703263: // 'jp2c'
+            this.parseCodestream(data, position, position + dataLength);
+            break;
+        }
+        if (jumpDataLength)
+          position += dataLength;
+      }
+    },
+    parseCodestream: function JpxImage_parseCodestream(data, start, end) {
+      var context = {};
+      try {
+        var position = start;
+        while (position < end) {
+          var code = readUint16(data, position);
+          position += 2;
+
+          var length = 0, j;
+          switch (code) {
+            case 0xFF4F: // Start of codestream (SOC)
+              context.mainHeader = true;
+              break;
+            case 0xFFD9: // End of codestream (EOC)
+              break;
+            case 0xFF51: // Image and tile size (SIZ)
+              length = readUint16(data, position);
+              var siz = {};
+              siz.Xsiz = readUint32(data, position + 4);
+              siz.Ysiz = readUint32(data, position + 8);
+              siz.XOsiz = readUint32(data, position + 12);
+              siz.YOsiz = readUint32(data, position + 16);
+              siz.XTsiz = readUint32(data, position + 20);
+              siz.YTsiz = readUint32(data, position + 24);
+              siz.XTOsiz = readUint32(data, position + 28);
+              siz.YTOsiz = readUint32(data, position + 32);
+              var componentsCount = readUint16(data, position + 36);
+              siz.Csiz = componentsCount;
+              var components = [];
+              j = position + 38;
+              for (var i = 0; i < componentsCount; i++) {
+                var component = {
+                  precision: (data[j] & 0x7F) + 1,
+                  isSigned: !!(data[j] & 0x80),
+                  XRsiz: data[j + 1],
+                  YRsiz: data[j + 1]
+                };
+                calculateComponentDimensions(component, siz);
+                components.push(component);
+              }
+              context.SIZ = siz;
+              context.components = components;
+              calculateTileGrids(context, components);
+              context.QCC = [];
+              context.COC = [];
+              break;
+            case 0xFF5C: // Quantization default (QCD)
+              length = readUint16(data, position);
+              var qcd = {};
+              j = position + 2;
+              var sqcd = data[j++];
+              var spqcdSize, scalarExpounded;
+              switch (sqcd & 0x1F) {
+                case 0:
+                  spqcdSize = 8;
+                  scalarExpounded = true;
+                  break;
+                case 1:
+                  spqcdSize = 16;
+                  scalarExpounded = false;
+                  break;
+                case 2:
+                  spqcdSize = 16;
+                  scalarExpounded = true;
+                  break;
+                default:
+                  throw 'Invalid SQcd value ' + sqcd;
+              }
+              qcd.noQuantization = spqcdSize == 8;
+              qcd.scalarExpounded = scalarExpounded;
+              qcd.guardBits = sqcd >> 5;
+              var spqcds = [];
+              while (j < length + position) {
+                var spqcd = {};
+                if (spqcdSize == 8) {
+                  spqcd.epsilon = data[j++] >> 3;
+                  spqcd.mu = 0;
+                } else {
+                  spqcd.epsilon = data[j] >> 3;
+                  spqcd.mu = ((data[j] & 0x7) << 8) | data[j + 1];
+                  j += 2;
+                }
+                spqcds.push(spqcd);
+              }
+              qcd.SPqcds = spqcds;
+              if (context.mainHeader)
+                context.QCD = qcd;
+              else {
+                context.currentTile.QCD = qcd;
+                context.currentTile.QCC = [];
+              }
+              break;
+            case 0xFF5D: // Quantization component (QCC)
+              length = readUint16(data, position);
+              var qcc = {};
+              j = position + 2;
+              var cqcc;
+              if (context.SIZ.Csiz < 257)
+                cqcc = data[j++];
+              else {
+                cqcc = readUint16(data, j);
+                j += 2;
+              }
+              var sqcd = data[j++];
+              var spqcdSize, scalarExpounded;
+              switch (sqcd & 0x1F) {
+                case 0:
+                  spqcdSize = 8;
+                  scalarExpounded = true;
+                  break;
+                case 1:
+                  spqcdSize = 16;
+                  scalarExpounded = false;
+                  break;
+                case 2:
+                  spqcdSize = 16;
+                  scalarExpounded = true;
+                  break;
+                default:
+                  throw 'Invalid SQcd value ' + sqcd;
+              }
+              qcc.noQuantization = spqcdSize == 8;
+              qcc.scalarExpounded = scalarExpounded;
+              qcc.guardBits = sqcd >> 5;
+              var spqcds = [];
+              while (j < length + position) {
+                var spqcd = {};
+                if (spqcdSize == 8) {
+                  spqcd.epsilon = data[j++] >> 3;
+                  spqcd.mu = 0;
+                } else {
+                  spqcd.epsilon = data[j] >> 3;
+                  spqcd.mu = ((data[j] & 0x7) << 8) | data[j + 1];
+                  j += 2;
+                }
+                spqcds.push(spqcd);
+              }
+              qcc.SPqcds = spqcds;
+              if (context.mainHeader)
+                context.QCC[cqcc] = qcc;
+              else
+                context.currentTile.QCC[cqcc] = qcc;
+              break;
+            case 0xFF52: // Coding style default (COD)
+              length = readUint16(data, position);
+              var cod = {};
+              j = position + 2;
+              var scod = data[j++];
+              cod.entropyCoderWithCustomPrecincts = !!(scod & 1);
+              cod.sopMarkerUsed = !!(scod & 2);
+              cod.ephMarkerUsed = !!(scod & 4);
+              var codingStyle = {};
+              cod.progressionOrder = data[j++];
+              cod.layersCount = readUint16(data, j);
+              j += 2;
+              cod.multipleComponentTransform = data[j++];
+
+              cod.decompositionLevelsCount = data[j++];
+              cod.xcb = (data[j++] & 0xF) + 2;
+              cod.ycb = (data[j++] & 0xF) + 2;
+              var blockStyle = data[j++];
+              cod.selectiveArithmeticCodingBypass = !!(blockStyle & 1);
+              cod.resetContextProbabilities = !!(blockStyle & 2);
+              cod.terminationOnEachCodingPass = !!(blockStyle & 4);
+              cod.verticalyStripe = !!(blockStyle & 8);
+              cod.predictableTermination = !!(blockStyle & 16);
+              cod.segmentationSymbolUsed = !!(blockStyle & 32);
+              cod.transformation = data[j++];
+              if (cod.entropyCoderWithCustomPrecincts) {
+                var precinctsSizes = {};
+                while (j < length + position) {
+                  var precinctsSize = data[j];
+                  precinctsSizes.push({
+                    PPx: precinctsSize & 0xF,
+                    PPy: precinctsSize >> 4
+                  });
+                }
+                cod.precinctsSizes = precinctsSizes;
+              }
+
+              if (cod.sopMarkerUsed || cod.ephMarkerUsed ||
+                  cod.selectiveArithmeticCodingBypass ||
+                  cod.resetContextProbabilities ||
+                  cod.terminationOnEachCodingPass ||
+                  cod.verticalyStripe || cod.predictableTermination ||
+                  cod.segmentationSymbolUsed)
+                throw 'Unsupported COD options: ' + uneval(cod);
+
+              if (context.mainHeader)
+                context.COD = cod;
+              else {
+                context.currentTile.COD = cod;
+                context.currentTile.COC = [];
+              }
+              break;
+            case 0xFF90: // Start of tile-part (SOT)
+              length = readUint16(data, position);
+              var tile = {};
+              tile.index = readUint16(data, position + 2);
+              tile.length = readUint32(data, position + 4);
+              tile.dataEnd = tile.length + position - 2;
+              tile.partIndex = data[position + 8];
+              tile.partsCount = data[position + 9];
+
+              context.mainHeader = false;
+              if (tile.partIndex == 0) {
+                // reset component specific settings
+                tile.COD = context.COD;
+                tile.COC = context.COC.slice(0); // clone of the global COC
+                tile.QCD = context.QCD;
+                tile.QCC = context.QCC.slice(0); // clone of the global COC
+              }
+              context.currentTile = tile;
+              break;
+            case 0xFF93: // Start of data (SOD)
+              var tile = context.currentTile;
+              if (tile.partIndex == 0) {
+                initializeTile(context, tile.index);
+                buildPackets(context);
+              }
+
+              // moving to the end of the data
+              length = tile.dataEnd - position;
+
+              parseTilePackets(context, data, position, length);
+              break;
+            case 0xFF64: // Comment (COM)
+              length = readUint16(data, position);
+              // skipping content
+              break;
+            default:
+              throw 'Unknown codestream code: ' + code.toString(16);
+          }
+          position += length;
+        }
+      } catch (e) {
+        if (this.failOnCorruptedImage)
+          error('JPX error: ' + e);
+        else
+          warn('JPX error: ' + e + '. Trying to recover');
+      }
+      this.tiles = transformComponents(context);
+      this.width = context.SIZ.Xsiz - context.SIZ.XOsiz;
+      this.height = context.SIZ.Ysiz - context.SIZ.YOsiz;
+      this.componentsCount = context.SIZ.Csiz;
+    }
+  };
+  function readUint32(data, offset) {
+    return (data[offset] << 24) | (data[offset + 1] << 16) |
+      (data[offset + 2] << 8) | data[offset + 3];
+  }
+  function readUint16(data, offset) {
+    return (data[offset] << 8) | data[offset + 1];
+  }
+  function log2(x) {
+    var n = 1, i = 0;
+    while (x > n) {
+      n <<= 1;
+      i++;
+    }
+    return i;
+  }
+  function calculateComponentDimensions(component, siz) {
+    // Section B.2 Component mapping
+    component.x0 = Math.ceil(siz.XOsiz / component.XRsiz);
+    component.x1 = Math.ceil(siz.Xsiz / component.XRsiz);
+    component.y0 = Math.ceil(siz.YOsiz / component.YRsiz);
+    component.y1 = Math.ceil(siz.Ysiz / component.YRsiz);
+    component.width = component.x1 - component.x0;
+    component.height = component.y1 - component.y0;
+  }
+  function calculateTileGrids(context, components) {
+    var siz = context.SIZ;
+    // Section B.3 Division into tile and tile-components
+    var tiles = [];
+    var numXtiles = Math.ceil((siz.Xsiz - siz.XTOsiz) / siz.XTsiz);
+    var numYtiles = Math.ceil((siz.Ysiz - siz.YTOsiz) / siz.YTsiz);
+    for (var q = 0; q < numYtiles; q++) {
+      for (var p = 0; p < numXtiles; p++) {
+        var tile = {};
+        tile.tx0 = Math.max(siz.XTOsiz + p * siz.XTsiz, siz.XOsiz);
+        tile.ty0 = Math.max(siz.YTOsiz + q * siz.YTsiz, siz.YOsiz);
+        tile.tx1 = Math.min(siz.XTOsiz + (p + 1) * siz.XTsiz, siz.Xsiz);
+        tile.ty1 = Math.min(siz.YTOsiz + (q + 1) * siz.YTsiz, siz.Ysiz);
+        tile.width = tile.tx1 - tile.tx0;
+        tile.height = tile.ty1 - tile.ty0;
+        tile.components = [];
+        tiles.push(tile);
+      }
+    }
+    context.tiles = tiles;
+
+    var componentsCount = siz.Csiz;
+    for (var i = 0, ii = componentsCount; i < ii; i++) {
+      var component = components[i];
+      var tileComponents = [];
+      for (var j = 0, jj = tiles.length; j < jj; j++) {
+        var tileComponent = {}, tile = tiles[j];
+        tileComponent.tcx0 = Math.ceil(tile.tx0 / component.XRsiz);
+        tileComponent.tcy0 = Math.ceil(tile.ty0 / component.YRsiz);
+        tileComponent.tcx1 = Math.ceil(tile.tx1 / component.XRsiz);
+        tileComponent.tcy1 = Math.ceil(tile.ty1 / component.YRsiz);
+        tileComponent.width = tileComponent.tcx1 - tileComponent.tcx0;
+        tileComponent.height = tileComponent.tcy1 - tileComponent.tcy0;
+        tile.components[i] = tileComponent;
+      }
+    }
+  }
+  function getBlocksDimensions(context, component, r) {
+    var codOrCoc = component.codingStyleParameters;
+    var result = {};
+    if (!codOrCoc.entropyCoderWithCustomPrecincts) {
+      result.PPx = 15;
+      result.PPy = 15;
+    } else {
+      result.PPx = codOrCoc.precinctsSizes[r].PPx;
+      result.PPy = codOrCoc.precinctsSizes[r].PPy;
+    }
+    // calculate codeblock size as described in section B.7
+    result.xcb_ = r > 0 ? Math.min(codOrCoc.xcb, result.PPx - 1) :
+      Math.min(codOrCoc.xcb, result.PPx);
+    result.ycb_ = r > 0 ? Math.min(codOrCoc.ycb, result.PPy - 1) :
+      Math.min(codOrCoc.ycb, result.PPy);
+    return result;
+  }
+  function buildPrecincts(context, resolution, dimensions) {
+    // Section B.6 Division resolution to precincts
+    var precinctWidth = 1 << dimensions.PPx;
+    var precinctHeight = 1 << dimensions.PPy;
+    var numprecinctswide = resolution.trx1 > resolution.trx0 ?
+      Math.ceil(resolution.trx1 / precinctWidth) -
+      Math.floor(resolution.trx0 / precinctWidth) : 0;
+    var numprecinctshigh = resolution.try1 > resolution.try0 ?
+      Math.ceil(resolution.try1 / precinctHeight) -
+      Math.floor(resolution.try0 / precinctHeight) : 0;
+    var numprecincts = numprecinctswide * numprecinctshigh;
+    var precinctXOffset = Math.floor(resolution.trx0 / precinctWidth) *
+      precinctWidth;
+    var precinctYOffset = Math.floor(resolution.try0 / precinctHeight) *
+      precinctHeight;
+    resolution.precinctParameters = {
+      precinctXOffset: precinctXOffset,
+      precinctYOffset: precinctYOffset,
+      precinctWidth: precinctWidth,
+      precinctHeight: precinctHeight,
+      numprecinctswide: numprecinctswide,
+      numprecinctshigh: numprecinctshigh,
+      numprecincts: numprecincts
+    };
+  }
+  function buildCodeblocks(context, subband, dimensions) {
+    // Section B.7 Division sub-band into code-blocks
+    var xcb_ = dimensions.xcb_;
+    var ycb_ = dimensions.ycb_;
+    var codeblockWidth = 1 << xcb_;
+    var codeblockHeight = 1 << ycb_;
+    var cbx0 = Math.floor(subband.tbx0 / codeblockWidth);
+    var cby0 = Math.floor(subband.tby0 / codeblockHeight);
+    var cbx1 = Math.ceil(subband.tbx1 / codeblockWidth);
+    var cby1 = Math.ceil(subband.tby1 / codeblockHeight);
+    var precinctParameters = subband.resolution.precinctParameters;
+    var codeblocks = [];
+    var precincts = [];
+    for (var j = cby0; j < cby1; j++) {
+      for (var i = cbx0; i < cbx1; i++) {
+        var codeblock = {
+          cbx: i,
+          cby: j,
+          tbx0: codeblockWidth * i,
+          tby0: codeblockHeight * j,
+          tbx1: codeblockWidth * (i + 1),
+          tby1: codeblockHeight * (j + 1)
+        };
+        // calculate precinct number
+        var pi = Math.floor((codeblock.tbx0 -
+          precinctParameters.precinctXOffset) /
+          precinctParameters.precinctWidth);
+        var pj = Math.floor((codeblock.tby0 -
+          precinctParameters.precinctYOffset) /
+          precinctParameters.precinctHeight);
+        var precinctNumber = pj +
+          pi * precinctParameters.numprecinctswide;
+        codeblock.tbx0_ = Math.max(subband.tbx0, codeblock.tbx0);
+        codeblock.tby0_ = Math.max(subband.tby0, codeblock.tby0);
+        codeblock.tbx1_ = Math.min(subband.tbx1, codeblock.tbx1);
+        codeblock.tby1_ = Math.min(subband.tby1, codeblock.tby1);
+        codeblock.precinctNumber = precinctNumber;
+        codeblock.subbandType = subband.type;
+        var coefficientsLength = (codeblock.tbx1_ - codeblock.tbx0_) *
+          (codeblock.tby1_ - codeblock.tby0_);
+        codeblock.Lblock = 3;
+        codeblocks.push(codeblock);
+        // building precinct for the sub-band
+        var precinct;
+        if (precinctNumber in precincts) {
+          precinct = precincts[precinctNumber];
+          precinct.cbxMin = Math.min(precinct.cbxMin, i);
+          precinct.cbyMin = Math.min(precinct.cbyMin, j);
+          precinct.cbxMax = Math.max(precinct.cbxMax, i);
+          precinct.cbyMax = Math.max(precinct.cbyMax, j);
+        } else {
+          precincts[precinctNumber] = precinct = {
+            cbxMin: i,
+            cbyMin: j,
+            cbxMax: i,
+            cbyMax: j
+          };
+        }
+        codeblock.precinct = precinct;
+      }
+    }
+    subband.codeblockParameters = {
+      codeblockWidth: xcb_,
+      codeblockHeight: ycb_,
+      numcodeblockwide: cbx1 - cbx0 + 1,
+      numcodeblockhigh: cby1 - cby1 + 1
+    };
+    subband.codeblocks = codeblocks;
+    for (var i = 0, ii = codeblocks.length; i < ii; i++) {
+      var codeblock = codeblocks[i];
+      var precinctNumber = codeblock.precinctNumber;
+    }
+    subband.precincts = precincts;
+  }
+  function createPacket(resolution, precinctNumber, layerNumber) {
+    var precinctCodeblocks = [];
+    // Section B.10.8 Order of info in packet
+    var subbands = resolution.subbands;
+    // sub-bands already ordered in 'LL', 'HL', 'LH', and 'HH' sequence
+    for (var i = 0, ii = subbands.length; i < ii; i++) {
+      var subband = subbands[i];
+      var codeblocks = subband.codeblocks;
+      for (var j = 0, jj = codeblocks.length; j < jj; j++) {
+        var codeblock = codeblocks[j];
+        if (codeblock.precinctNumber != precinctNumber)
+          continue;
+        precinctCodeblocks.push(codeblock);
+      }
+    }
+    return {
+      layerNumber: layerNumber,
+      codeblocks: precinctCodeblocks
+    };
+  }
+  function LayerResolutionComponentPositionIterator(context) {
+    var siz = context.SIZ;
+    var tileIndex = context.currentTile.index;
+    var tile = context.tiles[tileIndex];
+    var layersCount = tile.codingStyleDefaultParameters.layersCount;
+    var componentsCount = siz.Csiz;
+    var maxDecompositionLevelsCount = 0;
+    for (var q = 0; q < componentsCount; q++) {
+      maxDecompositionLevelsCount = Math.max(maxDecompositionLevelsCount,
+        tile.components[q].codingStyleParameters.decompositionLevelsCount);
+    }
+
+    var l = 0, r = 0, i = 0, k = 0;
+
+    this.nextPacket = function JpxImage_nextPacket() {
+      // Section B.12.1.1 Layer-resolution-component-position
+      for (; l < layersCount; l++) {
+        for (; r <= maxDecompositionLevelsCount; r++) {
+          for (; i < componentsCount; i++) {
+            var component = tile.components[i];
+            if (r > component.codingStyleParameters.decompositionLevelsCount)
+              continue;
+
+            var resolution = component.resolutions[r];
+            var numprecincts = resolution.precinctParameters.numprecincts;
+            for (; k < numprecincts;) {
+              var packet = createPacket(resolution, k, l);
+              k++;
+              return packet;
+            }
+            k = 0;
+          }
+          i = 0;
+        }
+        r = 0;
+      }
+      throw 'Out of packets';
+    };
+  }
+  function ResolutionLayerComponentPositionIterator(context) {
+    var siz = context.SIZ;
+    var tileIndex = context.currentTile.index;
+    var tile = context.tiles[tileIndex];
+    var layersCount = tile.codingStyleDefaultParameters.layersCount;
+    var componentsCount = siz.Csiz;
+    var maxDecompositionLevelsCount = 0;
+    for (var q = 0; q < componentsCount; q++) {
+      maxDecompositionLevelsCount = Math.max(maxDecompositionLevelsCount,
+        tile.components[q].codingStyleParameters.decompositionLevelsCount);
+    }
+
+    var r = 0, l = 0, i = 0, k = 0;
+
+    this.nextPacket = function JpxImage_nextPacket() {
+      // Section B.12.1.2 Resolution-layer-component-position
+      for (; r <= maxDecompositionLevelsCount; r++) {
+        for (; l < layersCount; l++) {
+          for (; i < componentsCount; i++) {
+            var component = tile.components[i];
+            if (r > component.codingStyleParameters.decompositionLevelsCount)
+              continue;
+
+            var resolution = component.resolutions[r];
+            var numprecincts = resolution.precinctParameters.numprecincts;
+            for (; k < numprecincts;) {
+              var packet = createPacket(resolution, k, l);
+              k++;
+              return packet;
+            }
+            k = 0;
+          }
+          i = 0;
+        }
+        l = 0;
+      }
+      throw 'Out of packets';
+    };
+  }
+  function buildPackets(context) {
+    var siz = context.SIZ;
+    var tileIndex = context.currentTile.index;
+    var tile = context.tiles[tileIndex];
+    var componentsCount = siz.Csiz;
+    // Creating resolutions and sub-bands for each component
+    for (var c = 0; c < componentsCount; c++) {
+      var component = tile.components[c];
+      var decompositionLevelsCount =
+        component.codingStyleParameters.decompositionLevelsCount;
+      // Section B.5 Resolution levels and sub-bands
+      var resolutions = [];
+      var subbands = [];
+      for (var r = 0; r <= decompositionLevelsCount; r++) {
+        var blocksDimensions = getBlocksDimensions(context, component, r);
+        var resolution = {};
+        var scale = 1 << (decompositionLevelsCount - r);
+        resolution.trx0 = Math.ceil(component.tcx0 / scale);
+        resolution.try0 = Math.ceil(component.tcy0 / scale);
+        resolution.trx1 = Math.ceil(component.tcx1 / scale);
+        resolution.try1 = Math.ceil(component.tcy1 / scale);
+        buildPrecincts(context, resolution, blocksDimensions);
+        resolutions.push(resolution);
+
+        var subband;
+        if (r == 0) {
+          // one sub-band (LL) with last decomposition
+          subband = {};
+          subband.type = 'LL';
+          subband.tbx0 = Math.ceil(component.tcx0 / scale);
+          subband.tby0 = Math.ceil(component.tcy0 / scale);
+          subband.tbx1 = Math.ceil(component.tcx1 / scale);
+          subband.tby1 = Math.ceil(component.tcy1 / scale);
+          subband.resolution = resolution;
+          buildCodeblocks(context, subband, blocksDimensions);
+          subbands.push(subband);
+          resolution.subbands = [subband];
+        } else {
+          var bscale = 1 << (decompositionLevelsCount - r + 1);
+          var resolutionSubbands = [];
+          // three sub-bands (HL, LH and HH) with rest of decompositions
+          subband = {};
+          subband.type = 'HL';
+          subband.tbx0 = Math.ceil(component.tcx0 / bscale - 0.5);
+          subband.tby0 = Math.ceil(component.tcy0 / bscale);
+          subband.tbx1 = Math.ceil(component.tcx1 / bscale - 0.5);
+          subband.tby1 = Math.ceil(component.tcy1 / bscale);
+          subband.resolution = resolution;
+          buildCodeblocks(context, subband, blocksDimensions);
+          subbands.push(subband);
+          resolutionSubbands.push(subband);
+
+          subband = {};
+          subband.type = 'LH';
+          subband.tbx0 = Math.ceil(component.tcx0 / bscale);
+          subband.tby0 = Math.ceil(component.tcy0 / bscale - 0.5);
+          subband.tbx1 = Math.ceil(component.tcx1 / bscale);
+          subband.tby1 = Math.ceil(component.tcy1 / bscale - 0.5);
+          subband.resolution = resolution;
+          buildCodeblocks(context, subband, blocksDimensions);
+          subbands.push(subband);
+          resolutionSubbands.push(subband);
+
+          subband = {};
+          subband.type = 'HH';
+          subband.tbx0 = Math.ceil(component.tcx0 / bscale - 0.5);
+          subband.tby0 = Math.ceil(component.tcy0 / bscale - 0.5);
+          subband.tbx1 = Math.ceil(component.tcx1 / bscale - 0.5);
+          subband.tby1 = Math.ceil(component.tcy1 / bscale - 0.5);
+          subband.resolution = resolution;
+          buildCodeblocks(context, subband, blocksDimensions);
+          subbands.push(subband);
+          resolutionSubbands.push(subband);
+
+          resolution.subbands = resolutionSubbands;
+        }
+      }
+      component.resolutions = resolutions;
+      component.subbands = subbands;
+    }
+    // Generate the packets sequence
+    var progressionOrder = tile.codingStyleDefaultParameters.progressionOrder;
+    var packetsIterator;
+    switch (progressionOrder) {
+      case 0:
+        tile.packetsIterator =
+          new LayerResolutionComponentPositionIterator(context);
+        break;
+      case 1:
+        tile.packetsIterator =
+          new ResolutionLayerComponentPositionIterator(context);
+        break;
+      default:
+        throw 'Unsupported progression order ' + progressionOrder;
+    }
+  }
+  function parseTilePackets(context, data, offset, dataLength) {
+    var position = 0;
+    var buffer, bufferSize = 0, skipNextBit = false;
+    function readBits(count) {
+      while (bufferSize < count) {
+        var b = data[offset + position];
+        position++;
+        if (skipNextBit) {
+          buffer = (buffer << 7) | b;
+          bufferSize += 7;
+          skipNextBit = false;
+        } else {
+          buffer = (buffer << 8) | b;
+          bufferSize += 8;
+        }
+        if (b == 0xFF) {
+          skipNextBit = true;
+        }
+      }
+      bufferSize -= count;
+      return (buffer >>> bufferSize) & ((1 << count) - 1);
+    }
+    function alignToByte() {
+      bufferSize = 0;
+      if (skipNextBit) {
+        position++;
+        skipNextBit = false;
+      }
+    }
+    function readCodingpasses() {
+      var value = readBits(1);
+      if (value == 0)
+        return 1;
+      value = (value << 1) | readBits(1);
+      if (value == 0x02)
+        return 2;
+      value = (value << 2) | readBits(2);
+      if (value <= 0x0E)
+        return (value & 0x03) + 3;
+      value = (value << 5) | readBits(5);
+      if (value <= 0x1FE)
+        return (value & 0x1F) + 6;
+      value = (value << 7) | readBits(7);
+      return (value & 0x7F) + 37;
+    }
+    var tileIndex = context.currentTile.index;
+    var tile = context.tiles[tileIndex];
+    var packetsIterator = tile.packetsIterator;
+    while (position < dataLength) {
+      var packet = packetsIterator.nextPacket();
+      if (!readBits(1)) {
+        alignToByte();
+        continue;
+      }
+      var layerNumber = packet.layerNumber;
+      var queue = [];
+      for (var i = 0, ii = packet.codeblocks.length; i < ii; i++) {
+        var codeblock = packet.codeblocks[i];
+        var precinct = codeblock.precinct;
+        var codeblockColumn = codeblock.cbx - precinct.cbxMin;
+        var codeblockRow = codeblock.cby - precinct.cbyMin;
+        var codeblockIncluded = false;
+        var firstTimeInclusion = false;
+        if ('included' in codeblock) {
+          codeblockIncluded = !!readBits(1);
+        } else {
+          // reading inclusion tree
+          var precinct = codeblock.precinct;
+          var inclusionTree, zeroBitPlanesTree;
+          if ('inclusionTree' in precinct) {
+            inclusionTree = precinct.inclusionTree;
+          } else {
+            // building inclusion and zero bit-planes trees
+            var width = precinct.cbxMax - precinct.cbxMin + 1;
+            var height = precinct.cbyMax - precinct.cbyMin + 1;
+            inclusionTree = new InclusionTree(width, height, layerNumber);
+            zeroBitPlanesTree = new TagTree(width, height);
+            precinct.inclusionTree = inclusionTree;
+            precinct.zeroBitPlanesTree = zeroBitPlanesTree;
+          }
+
+          if (inclusionTree.reset(codeblockColumn, codeblockRow, layerNumber)) {
+            while (true) {
+              if (readBits(1)) {
+                var valueReady = !inclusionTree.nextLevel();
+                if (valueReady) {
+                  codeblock.included = true;
+                  codeblockIncluded = firstTimeInclusion = true;
+                  break;
+                }
+              } else {
+                inclusionTree.incrementValue(layerNumber);
+                break;
+              }
+            }
+          }
+        }
+        if (!codeblockIncluded)
+          continue;
+        if (firstTimeInclusion) {
+          zeroBitPlanesTree = precinct.zeroBitPlanesTree;
+          zeroBitPlanesTree.reset(codeblockColumn, codeblockRow);
+          while (true) {
+            if (readBits(1)) {
+              var valueReady = !zeroBitPlanesTree.nextLevel();
+              if (valueReady)
+                break;
+            } else
+              zeroBitPlanesTree.incrementValue();
+          }
+          codeblock.zeroBitPlanes = zeroBitPlanesTree.value;
+        }
+        var codingpasses = readCodingpasses();
+        while (readBits(1))
+          codeblock.Lblock++;
+        var codingpassesLog2 = log2(codingpasses);
+        // rounding down log2
+        var bits = ((codingpasses < (1 << codingpassesLog2)) ?
+          codingpassesLog2 - 1 : codingpassesLog2) + codeblock.Lblock;
+        var codedDataLength = readBits(bits);
+        queue.push({
+          codeblock: codeblock,
+          codingpasses: codingpasses,
+          dataLength: codedDataLength
+        });
+      }
+      alignToByte();
+      while (queue.length > 0) {
+        var packetItem = queue.shift();
+        var codeblock = packetItem.codeblock;
+        if (!('data' in codeblock))
+          codeblock.data = [];
+        codeblock.data.push({
+          data: data,
+          start: offset + position,
+          end: offset + position + packetItem.dataLength,
+          codingpasses: packetItem.codingpasses
+        });
+        position += packetItem.dataLength;
+      }
+    }
+    return position;
+  }
+  function copyCoefficients(coefficients, x0, y0, width, height,
+                            delta, mb, codeblocks, transformation) {
+    var r = 0.5; // formula (E-6)
+    for (var i = 0, ii = codeblocks.length; i < ii; ++i) {
+      var codeblock = codeblocks[i];
+      var blockWidth = codeblock.tbx1_ - codeblock.tbx0_;
+      var blockHeight = codeblock.tby1_ - codeblock.tby0_;
+      if (blockWidth == 0 || blockHeight == 0)
+        continue;
+      if (!('data' in codeblock))
+        continue;
+
+      var bitModel, currentCodingpassType;
+      bitModel = new BitModel(blockWidth, blockHeight, codeblock.subbandType,
+        codeblock.zeroBitPlanes);
+      currentCodingpassType = 2; // first bit plane starts from cleanup
+
+      // collect data
+      var data = codeblock.data, totalLength = 0, codingpasses = 0;
+      for (var q = 0, qq = data.length; q < qq; q++) {
+        var dataItem = data[q];
+        totalLength += dataItem.end - dataItem.start;
+        codingpasses += dataItem.codingpasses;
+      }
+      var encodedData = new Uint8Array(totalLength), k = 0;
+      for (var q = 0, qq = data.length; q < qq; q++) {
+        var dataItem = data[q];
+        var chunk = dataItem.data.subarray(dataItem.start, dataItem.end);
+        encodedData.set(chunk, k);
+        k += chunk.length;
+      }
+      // decoding the item
+      var decoder = new ArithmeticDecoder(encodedData, 0, totalLength);
+      bitModel.setDecoder(decoder);
+
+      for (var q = 0; q < codingpasses; q++) {
+        switch (currentCodingpassType) {
+          case 0:
+            bitModel.runSignificancePropogationPass();
+            break;
+          case 1:
+            bitModel.runMagnitudeRefinementPass();
+            break;
+          case 2:
+            bitModel.runCleanupPass();
+            break;
+        }
+        currentCodingpassType = (currentCodingpassType + 1) % 3;
+      }
+
+      var offset = (codeblock.tbx0_ - x0) + (codeblock.tby0_ - y0) * width;
+      var position = 0;
+      for (var j = 0; j < blockHeight; j++) {
+        for (var k = 0; k < blockWidth; k++) {
+          var n = (bitModel.coefficentsSign[position] ? -1 : 1) *
+            bitModel.coefficentsMagnitude[position];
+          var nb = bitModel.bitsDecoded[position], correction;
+          if (transformation == 0 || mb > nb) {
+            // use r only if transformation is irreversible or
+            // not all bitplanes were decoded for reversible transformation
+            n += n < 0 ? n - r : n > 0 ? n + r : 0;
+            correction = 1 << (mb - nb);
+          } else
+            correction = 1;
+          coefficients[offset++] = n * correction * delta;
+          position++;
+        }
+        offset += width - blockWidth;
+      }
+    }
+  }
+  function transformTile(context, tile, c) {
+    var component = tile.components[c];
+    var codingStyleParameters = component.codingStyleParameters;
+    var quantizationParameters = component.quantizationParameters;
+    var decompositionLevelsCount =
+      codingStyleParameters.decompositionLevelsCount;
+    var spqcds = quantizationParameters.SPqcds;
+    var scalarExpounded = quantizationParameters.scalarExpounded;
+    var guardBits = quantizationParameters.guardBits;
+    var transformation = codingStyleParameters.transformation;
+    var precision = context.components[c].precision;
+
+    var subbandCoefficients = [];
+    var k = 0, b = 0;
+    for (var i = 0; i <= decompositionLevelsCount; i++) {
+      var resolution = component.resolutions[i];
+
+      for (var j = 0, jj = resolution.subbands.length; j < jj; j++) {
+        var mu, epsilon;
+        if (!scalarExpounded) {
+          // formula E-5
+          mu = spqcds[0].mu;
+          epsilon = spqcds[0].epsilon + (i > 0 ? 1 - i : 0);
+        } else {
+          mu = spqcds[b].mu;
+          epsilon = spqcds[b].epsilon;
+        }
+
+        var subband = resolution.subbands[j];
+        var width = subband.tbx1 - subband.tbx0;
+        var height = subband.tby1 - subband.tby0;
+        var gainLog2 = SubbandsGainLog2[subband.type];
+
+        // calulate quantization coefficient (Section E.1.1.1)
+        var delta = Math.pow(2, (precision + gainLog2) - epsilon) *
+          (1 + mu / 2048);
+        var mb = (guardBits + epsilon - 1);
+
+        var coefficients = new Float32Array(width * height);
+        copyCoefficients(coefficients, subband.tbx0, subband.tby0,
+          width, height, delta, mb, subband.codeblocks, transformation);
+
+        subbandCoefficients.push({
+          width: width,
+          height: height,
+          items: coefficients
+        });
+
+        b++;
+      }
+    }
+
+    var transformation = codingStyleParameters.transformation;
+    var transform = transformation == 0 ? new IrreversibleTransform() :
+      new ReversibleTransform();
+    var result = transform.calculate(subbandCoefficients,
+      component.tcx0, component.tcy0);
+    return {
+      left: component.tcx0,
+      top: component.tcy0,
+      width: result.width,
+      height: result.height,
+      items: result.items
+    };
+  }
+  function transformComponents(context) {
+    var siz = context.SIZ;
+    var components = context.components;
+    var componentsCount = siz.Csiz;
+    var resultImages = [];
+    for (var i = 0, ii = context.tiles.length; i < ii; i++) {
+      var tile = context.tiles[i];
+      var result = [];
+      for (var c = 0; c < componentsCount; c++) {
+        var image = transformTile(context, tile, c);
+        result.push(image);
+      }
+
+      // Section G.2.2 Inverse multi component transform
+      if (tile.codingStyleDefaultParameters.multipleComponentTransform) {
+        var y0items = result[0].items;
+        var y1items = result[1].items;
+        var y2items = result[2].items;
+        for (var j = 0, jj = y0items.length; j < jj; j++) {
+          var y0 = y0items[j], y1 = y1items[j], y2 = y2items[j];
+          var i1 = y0 - ((y2 + y1) >> 2);
+          y1items[j] = i1;
+          y0items[j] = y2 + i1;
+          y2items[j] = y1 + i1;
+        }
+      }
+
+      // Section G.1 DC level shifting to unsigned component values
+      for (var c = 0; c < componentsCount; c++) {
+        var component = components[c];
+        if (component.isSigned)
+          continue;
+
+        var offset = 1 << (component.precision - 1);
+        var tileImage = result[c];
+        var items = tileImage.items;
+        for (var j = 0, jj = items.length; j < jj; j++)
+          items[j] += offset;
+      }
+
+      // To simplify things: shift and clamp output to 8 bit unsigned
+      for (var c = 0; c < componentsCount; c++) {
+        var component = components[c];
+        var offset = component.isSigned ? 128 : 0;
+        var shift = component.precision - 8;
+        var tileImage = result[c];
+        var items = tileImage.items;
+        var data = new Uint8Array(items.length);
+        for (var j = 0, jj = items.length; j < jj; j++) {
+          var value = (items[j] >> shift) + offset;
+          data[j] = value < 0 ? 0 : value > 255 ? 255 : value;
+        }
+        result[c].items = data;
+      }
+
+      resultImages.push(result);
+    }
+    return resultImages;
+  }
+  function initializeTile(context, tileIndex) {
+    var siz = context.SIZ;
+    var componentsCount = siz.Csiz;
+    var tile = context.tiles[tileIndex];
+    var resultTiles = [];
+    for (var c = 0; c < componentsCount; c++) {
+      var component = tile.components[c];
+      var qcdOrQcc = c in context.currentTile.QCC ?
+        context.currentTile.QCC[c] : context.currentTile.QCD;
+      component.quantizationParameters = qcdOrQcc;
+      var codOrCoc = c in context.currentTile.COC ?
+        context.currentTile.COC[c] : context.currentTile.COD;
+      component.codingStyleParameters = codOrCoc;
+    }
+    tile.codingStyleDefaultParameters = context.currentTile.COD;
+  }
+
+  // Section B.10.2 Tag trees
+  var TagTree = (function TagTreeClosure() {
+    function TagTree(width, height) {
+      var levelsLength = log2(Math.max(width, height)) + 1;
+      this.levels = [];
+      for (var i = 0; i < levelsLength; i++) {
+        var level = {
+          width: width,
+          height: height,
+          items: []
+        };
+        this.levels.push(level);
+        width = Math.ceil(width / 2);
+        height = Math.ceil(height / 2);
+      }
+    }
+    TagTree.prototype = {
+      reset: function TagTree_reset(i, j) {
+        var currentLevel = 0, value = 0;
+        while (currentLevel < this.levels.length) {
+          var level = this.levels[currentLevel];
+          var index = i + j * level.width;
+          if (index in level.items) {
+            value = level.items[index];
+            break;
+          }
+          level.index = index;
+          i >>= 1;
+          j >>= 1;
+          currentLevel++;
+        }
+        currentLevel--;
+        var level = this.levels[currentLevel];
+        level.items[level.index] = value;
+        this.currentLevel = currentLevel;
+        delete this.value;
+      },
+      incrementValue: function TagTree_incrementValue() {
+        var level = this.levels[this.currentLevel];
+        level.items[level.index]++;
+      },
+      nextLevel: function TagTree_nextLevel() {
+        var currentLevel = this.currentLevel;
+        var level = this.levels[currentLevel];
+        var value = level.items[level.index];
+        currentLevel--;
+        if (currentLevel < 0) {
+          this.value = value;
+          return false;
+        }
+
+        this.currentLevel = currentLevel;
+        var level = this.levels[currentLevel];
+        level.items[level.index] = value;
+        return true;
+      }
+    };
+    return TagTree;
+  })();
+
+  var InclusionTree = (function InclusionTreeClosure() {
+    function InclusionTree(width, height,  defaultValue) {
+      var levelsLength = log2(Math.max(width, height)) + 1;
+      this.levels = [];
+      for (var i = 0; i < levelsLength; i++) {
+        var items = new Uint8Array(width * height);
+        for (var j = 0, jj = items.length; j < jj; j++)
+          items[j] = defaultValue;
+
+        var level = {
+          width: width,
+          height: height,
+          items: items
+        };
+        this.levels.push(level);
+
+        width = Math.ceil(width / 2);
+        height = Math.ceil(height / 2);
+      }
+    }
+    InclusionTree.prototype = {
+      reset: function InclusionTree_reset(i, j, stopValue) {
+        var currentLevel = 0;
+        while (currentLevel < this.levels.length) {
+          var level = this.levels[currentLevel];
+          var index = i + j * level.width;
+          level.index = index;
+          var value = level.items[index];
+
+          if (value == 0xFF)
+            break;
+
+          if (value > stopValue) {
+            this.currentLevel = currentLevel;
+            // already know about this one, propagating the value to top levels
+            this.propagateValues();
+            return false;
+          }
+
+          i >>= 1;
+          j >>= 1;
+          currentLevel++;
+        }
+        this.currentLevel = currentLevel - 1;
+        return true;
+      },
+      incrementValue: function InclusionTree_incrementValue(stopValue) {
+        var level = this.levels[this.currentLevel];
+        level.items[level.index] = stopValue + 1;
+        this.propagateValues();
+      },
+      propagateValues: function InclusionTree_propagateValues() {
+        var levelIndex = this.currentLevel;
+        var level = this.levels[levelIndex];
+        var currentValue = level.items[level.index];
+        while (--levelIndex >= 0) {
+          var level = this.levels[levelIndex];
+          level.items[level.index] = currentValue;
+        }
+      },
+      nextLevel: function InclusionTree_nextLevel() {
+        var currentLevel = this.currentLevel;
+        var level = this.levels[currentLevel];
+        var value = level.items[level.index];
+        level.items[level.index] = 0xFF;
+        currentLevel--;
+        if (currentLevel < 0)
+          return false;
+
+        this.currentLevel = currentLevel;
+        var level = this.levels[currentLevel];
+        level.items[level.index] = value;
+        return true;
+      }
+    };
+    return InclusionTree;
+  })();
+
+  // Implements C.3. Arithmetic decoding procedures
+  var ArithmeticDecoder = (function ArithmeticDecoderClosure() {
+    var QeTable = [
+      {qe: 0x5601, nmps: 1, nlps: 1, switchFlag: 1},
+      {qe: 0x3401, nmps: 2, nlps: 6, switchFlag: 0},
+      {qe: 0x1801, nmps: 3, nlps: 9, switchFlag: 0},
+      {qe: 0x0AC1, nmps: 4, nlps: 12, switchFlag: 0},
+      {qe: 0x0521, nmps: 5, nlps: 29, switchFlag: 0},
+      {qe: 0x0221, nmps: 38, nlps: 33, switchFlag: 0},
+      {qe: 0x5601, nmps: 7, nlps: 6, switchFlag: 1},
+      {qe: 0x5401, nmps: 8, nlps: 14, switchFlag: 0},
+      {qe: 0x4801, nmps: 9, nlps: 14, switchFlag: 0},
+      {qe: 0x3801, nmps: 10, nlps: 14, switchFlag: 0},
+      {qe: 0x3001, nmps: 11, nlps: 17, switchFlag: 0},
+      {qe: 0x2401, nmps: 12, nlps: 18, switchFlag: 0},
+      {qe: 0x1C01, nmps: 13, nlps: 20, switchFlag: 0},
+      {qe: 0x1601, nmps: 29, nlps: 21, switchFlag: 0},
+      {qe: 0x5601, nmps: 15, nlps: 14, switchFlag: 1},
+      {qe: 0x5401, nmps: 16, nlps: 14, switchFlag: 0},
+      {qe: 0x5101, nmps: 17, nlps: 15, switchFlag: 0},
+      {qe: 0x4801, nmps: 18, nlps: 16, switchFlag: 0},
+      {qe: 0x3801, nmps: 19, nlps: 17, switchFlag: 0},
+      {qe: 0x3401, nmps: 20, nlps: 18, switchFlag: 0},
+      {qe: 0x3001, nmps: 21, nlps: 19, switchFlag: 0},
+      {qe: 0x2801, nmps: 22, nlps: 19, switchFlag: 0},
+      {qe: 0x2401, nmps: 23, nlps: 20, switchFlag: 0},
+      {qe: 0x2201, nmps: 24, nlps: 21, switchFlag: 0},
+      {qe: 0x1C01, nmps: 25, nlps: 22, switchFlag: 0},
+      {qe: 0x1801, nmps: 26, nlps: 23, switchFlag: 0},
+      {qe: 0x1601, nmps: 27, nlps: 24, switchFlag: 0},
+      {qe: 0x1401, nmps: 28, nlps: 25, switchFlag: 0},
+      {qe: 0x1201, nmps: 29, nlps: 26, switchFlag: 0},
+      {qe: 0x1101, nmps: 30, nlps: 27, switchFlag: 0},
+      {qe: 0x0AC1, nmps: 31, nlps: 28, switchFlag: 0},
+      {qe: 0x09C1, nmps: 32, nlps: 29, switchFlag: 0},
+      {qe: 0x08A1, nmps: 33, nlps: 30, switchFlag: 0},
+      {qe: 0x0521, nmps: 34, nlps: 31, switchFlag: 0},
+      {qe: 0x0441, nmps: 35, nlps: 32, switchFlag: 0},
+      {qe: 0x02A1, nmps: 36, nlps: 33, switchFlag: 0},
+      {qe: 0x0221, nmps: 37, nlps: 34, switchFlag: 0},
+      {qe: 0x0141, nmps: 38, nlps: 35, switchFlag: 0},
+      {qe: 0x0111, nmps: 39, nlps: 36, switchFlag: 0},
+      {qe: 0x0085, nmps: 40, nlps: 37, switchFlag: 0},
+      {qe: 0x0049, nmps: 41, nlps: 38, switchFlag: 0},
+      {qe: 0x0025, nmps: 42, nlps: 39, switchFlag: 0},
+      {qe: 0x0015, nmps: 43, nlps: 40, switchFlag: 0},
+      {qe: 0x0009, nmps: 44, nlps: 41, switchFlag: 0},
+      {qe: 0x0005, nmps: 45, nlps: 42, switchFlag: 0},
+      {qe: 0x0001, nmps: 45, nlps: 43, switchFlag: 0},
+      {qe: 0x5601, nmps: 46, nlps: 46, switchFlag: 0}
+    ];
+
+    function ArithmeticDecoder(data, start, end) {
+      this.data = data;
+      this.bp = start;
+      this.dataEnd = end;
+
+      this.chigh = data[start];
+      this.clow = 0;
+
+      this.byteIn();
+
+      this.chigh = ((this.chigh << 7) & 0xFFFF) | ((this.clow >> 9) & 0x7F);
+      this.clow = (this.clow << 7) & 0xFFFF;
+      this.ct -= 7;
+      this.a = 0x8000;
+    }
+
+    ArithmeticDecoder.prototype = {
+      byteIn: function ArithmeticDecoder_byteIn() {
+        var data = this.data;
+        var bp = this.bp;
+        if (data[bp] == 0xFF) {
+          var b1 = data[bp + 1];
+          if (b1 > 0x8F) {
+            this.clow += 0xFF00;
+            this.ct = 8;
+          } else {
+            bp++;
+            this.clow += (data[bp] << 9);
+            this.ct = 7;
+            this.bp = bp;
+          }
+        } else {
+          bp++;
+          this.clow += bp < this.dataEnd ? (data[bp] << 8) : 0xFF00;
+          this.ct = 8;
+          this.bp = bp;
+        }
+        if (this.clow > 0xFFFF) {
+          this.chigh += (this.clow >> 16);
+          this.clow &= 0xFFFF;
+        }
+      },
+      readBit: function ArithmeticDecoder_readBit(cx) {
+        var qeIcx = QeTable[cx.index].qe;
+        this.a -= qeIcx;
+
+        if (this.chigh < qeIcx) {
+          var d = this.exchangeLps(cx);
+          this.renormD();
+          return d;
+        } else {
+          this.chigh -= qeIcx;
+          if ((this.a & 0x8000) == 0) {
+            var d = this.exchangeMps(cx);
+            this.renormD();
+            return d;
+          } else {
+            return cx.mps;
+          }
+        }
+      },
+      renormD: function ArithmeticDecoder_renormD() {
+        do {
+          if (this.ct == 0)
+            this.byteIn();
+
+          this.a <<= 1;
+          this.chigh = ((this.chigh << 1) & 0xFFFF) | ((this.clow >> 15) & 1);
+          this.clow = (this.clow << 1) & 0xFFFF;
+          this.ct--;
+        } while ((this.a & 0x8000) == 0);
+      },
+      exchangeMps: function ArithmeticDecoder_exchangeMps(cx) {
+        var d;
+        var qeTableIcx = QeTable[cx.index];
+        if (this.a < qeTableIcx.qe) {
+          d = 1 - cx.mps;
+
+          if (qeTableIcx.switchFlag == 1) {
+            cx.mps = 1 - cx.mps;
+          }
+          cx.index = qeTableIcx.nlps;
+        } else {
+          d = cx.mps;
+          cx.index = qeTableIcx.nmps;
+        }
+        return d;
+      },
+      exchangeLps: function ArithmeticDecoder_exchangeLps(cx) {
+        var d;
+        var qeTableIcx = QeTable[cx.index];
+        if (this.a < qeTableIcx.qe) {
+          this.a = qeTableIcx.qe;
+          d = cx.mps;
+          cx.index = qeTableIcx.nmps;
+        } else {
+          this.a = qeTableIcx.qe;
+          d = 1 - cx.mps;
+
+          if (qeTableIcx.switchFlag == 1) {
+            cx.mps = 1 - cx.mps;
+          }
+          cx.index = qeTableIcx.nlps;
+        }
+        return d;
+      }
+    };
+
+    return ArithmeticDecoder;
+  })();
+
+  // Section D. Coefficient bit modeling
+  var BitModel = (function BitModelClosure() {
+    // Table D-1
+    // The index is binary presentation: 0dddvvhh, ddd - sum of Di (0..4),
+    // vv - sum of Vi (0..2), and hh - sum of Hi (0..2)
+    var LLAndLHContextsLabel = new Uint8Array([
+      0, 5, 8, 0, 3, 7, 8, 0, 4, 7, 8, 0, 0, 0, 0, 0, 1, 6, 8, 0, 3, 7, 8, 0, 4,
+      7, 8, 0, 0, 0, 0, 0, 2, 6, 8, 0, 3, 7, 8, 0, 4, 7, 8, 0, 0, 0, 0, 0, 2, 6,
+      8, 0, 3, 7, 8, 0, 4, 7, 8, 0, 0, 0, 0, 0, 2, 6, 8, 0, 3, 7, 8, 0, 4, 7, 8
+    ]);
+    var HLContextLabel = new Uint8Array([
+      0, 3, 4, 0, 5, 7, 7, 0, 8, 8, 8, 0, 0, 0, 0, 0, 1, 3, 4, 0, 6, 7, 7, 0, 8,
+      8, 8, 0, 0, 0, 0, 0, 2, 3, 4, 0, 6, 7, 7, 0, 8, 8, 8, 0, 0, 0, 0, 0, 2, 3,
+      4, 0, 6, 7, 7, 0, 8, 8, 8, 0, 0, 0, 0, 0, 2, 3, 4, 0, 6, 7, 7, 0, 8, 8, 8
+    ]);
+    var HHContextLabel = new Uint8Array([
+      0, 1, 2, 0, 1, 2, 2, 0, 2, 2, 2, 0, 0, 0, 0, 0, 3, 4, 5, 0, 4, 5, 5, 0, 5,
+      5, 5, 0, 0, 0, 0, 0, 6, 7, 7, 0, 7, 7, 7, 0, 7, 7, 7, 0, 0, 0, 0, 0, 8, 8,
+      8, 0, 8, 8, 8, 0, 8, 8, 8, 0, 0, 0, 0, 0, 8, 8, 8, 0, 8, 8, 8, 0, 8, 8, 8
+    ]);
+
+    // Table D-2
+    function calcSignContribution(significance0, sign0, significance1, sign1) {
+      if (significance1) {
+        if (!sign1)
+          return significance0 ? (!sign0 ? 1 : 0) : 1;
+        else
+          return significance0 ? (!sign0 ? 0 : -1) : -1;
+      } else
+        return significance0 ? (!sign0 ? 1 : -1) : 0;
+    }
+    // Table D-3
+    var SignContextLabels = [
+      {contextLabel: 13, xorBit: 0},
+      {contextLabel: 12, xorBit: 0},
+      {contextLabel: 11, xorBit: 0},
+      {contextLabel: 10, xorBit: 0},
+      {contextLabel: 9, xorBit: 0},
+      {contextLabel: 10, xorBit: 1},
+      {contextLabel: 11, xorBit: 1},
+      {contextLabel: 12, xorBit: 1},
+      {contextLabel: 13, xorBit: 1}
+    ];
+
+    function BitModel(width, height, subband, zeroBitPlanes) {
+      this.width = width;
+      this.height = height;
+
+      this.contextLabelTable = subband == 'HH' ? HHContextLabel :
+        subband == 'HL' ? HLContextLabel : LLAndLHContextsLabel;
+
+      var coefficientCount = width * height;
+
+      // coefficients outside the encoding region treated as insignificant
+      // add border state cells for significanceState
+      this.neighborsSignificance = new Uint8Array(coefficientCount);
+      this.coefficentsSign = new Uint8Array(coefficientCount);
+      this.coefficentsMagnitude = new Uint32Array(coefficientCount);
+      this.processingFlags = new Uint8Array(coefficientCount);
+
+      var bitsDecoded = new Uint8Array(this.width * this.height);
+      for (var i = 0, ii = bitsDecoded.length; i < ii; i++)
+        bitsDecoded[i] = zeroBitPlanes;
+      this.bitsDecoded = bitsDecoded;
+
+      this.reset();
+    }
+
+    BitModel.prototype = {
+      setDecoder: function BitModel_setDecoder(decoder) {
+        this.decoder = decoder;
+      },
+      reset: function BitModel_reset() {
+        this.uniformContext = {index: 46, mps: 0};
+        this.runLengthContext = {index: 3, mps: 0};
+        this.contexts = [];
+        this.contexts.push({index: 4, mps: 0});
+        for (var i = 1; i <= 16; i++)
+          this.contexts.push({index: 0, mps: 0});
+      },
+      setNeighborsSignificance:
+        function BitModel_setNeighborsSignificance(row, column) {
+        var neighborsSignificance = this.neighborsSignificance;
+        var width = this.width, height = this.height;
+        var index = row * width + column;
+        if (row > 0) {
+          if (column > 0)
+            neighborsSignificance[index - width - 1] += 0x10;
+          if (column + 1 < width)
+            neighborsSignificance[index - width + 1] += 0x10;
+          neighborsSignificance[index - width] += 0x04;
+        }
+        if (row + 1 < height) {
+          if (column > 0)
+            neighborsSignificance[index + width - 1] += 0x10;
+          if (column + 1 < width)
+            neighborsSignificance[index + width + 1] += 0x10;
+          neighborsSignificance[index + width] += 0x04;
+        }
+        if (column > 0)
+          neighborsSignificance[index - 1] += 0x01;
+        if (column + 1 < width)
+          neighborsSignificance[index + 1] += 0x01;
+        neighborsSignificance[index] |= 0x80;
+      },
+      runSignificancePropogationPass:
+        function BitModel_runSignificancePropogationPass() {
+        var decoder = this.decoder;
+        var width = this.width, height = this.height;
+        var coefficentsMagnitude = this.coefficentsMagnitude;
+        var coefficentsSign = this.coefficentsSign;
+        var contextLabels = this.contextLabels;
+        var neighborsSignificance = this.neighborsSignificance;
+        var processingFlags = this.processingFlags;
+        var contexts = this.contexts;
+        var labels = this.contextLabelTable;
+        var bitsDecoded = this.bitsDecoded;
+        // clear processed flag
+        var processedInverseMask = ~1;
+        var processedMask = 1;
+        var firstMagnitudeBitMask = 2;
+        for (var q = 0, qq = width * height; q < qq; q++)
+          processingFlags[q] &= processedInverseMask;
+
+        for (var i0 = 0; i0 < height; i0 += 4) {
+          for (var j = 0; j < width; j++) {
+            var index = i0 * width + j;
+            for (var i1 = 0; i1 < 4; i1++, index += width) {
+              var i = i0 + i1;
+              if (i >= height)
+                break;
+
+              if (coefficentsMagnitude[index] || !neighborsSignificance[index])
+                continue;
+
+              var contextLabel = labels[neighborsSignificance[index]];
+              var cx = contexts[contextLabel];
+              var decision = decoder.readBit(cx);
+              if (decision) {
+                var sign = this.decodeSignBit(i, j);
+                coefficentsSign[index] = sign;
+                coefficentsMagnitude[index] = 1;
+                this.setNeighborsSignificance(i, j);
+                processingFlags[index] |= firstMagnitudeBitMask;
+              }
+              bitsDecoded[index]++;
+              processingFlags[index] |= processedMask;
+            }
+          }
+        }
+      },
+      decodeSignBit: function BitModel_decodeSignBit(row, column) {
+        var width = this.width, height = this.height;
+        var index = row * width + column;
+        var coefficentsMagnitude = this.coefficentsMagnitude;
+        var coefficentsSign = this.coefficentsSign;
+        var horizontalContribution = calcSignContribution(
+          column > 0 && coefficentsMagnitude[index - 1],
+          coefficentsSign[index - 1],
+          column + 1 < width && coefficentsMagnitude[index + 1],
+          coefficentsSign[index + 1]);
+        var verticalContribution = calcSignContribution(
+          row > 0 && coefficentsMagnitude[index - width],
+          coefficentsSign[index - width],
+          row + 1 < height && coefficentsMagnitude[index + width],
+          coefficentsSign[index + width]);
+
+        var contextLabelAndXor = SignContextLabels[
+          3 * (1 - horizontalContribution) + (1 - verticalContribution)];
+        var contextLabel = contextLabelAndXor.contextLabel;
+        var cx = this.contexts[contextLabel];
+        var decoded = this.decoder.readBit(cx);
+        return decoded ^ contextLabelAndXor.xorBit;
+      },
+      runMagnitudeRefinementPass:
+        function BitModel_runMagnitudeRefinementPass() {
+        var decoder = this.decoder;
+        var width = this.width, height = this.height;
+        var coefficentsMagnitude = this.coefficentsMagnitude;
+        var neighborsSignificance = this.neighborsSignificance;
+        var contexts = this.contexts;
+        var bitsDecoded = this.bitsDecoded;
+        var processingFlags = this.processingFlags;
+        var processedMask = 1;
+        var firstMagnitudeBitMask = 2;
+        for (var i0 = 0; i0 < height; i0 += 4) {
+          for (var j = 0; j < width; j++) {
+            for (var i1 = 0; i1 < 4; i1++) {
+              var i = i0 + i1;
+              if (i >= height)
+                break;
+              var index = i * width + j;
+
+              // significant but not those that have just become
+              if (!coefficentsMagnitude[index] ||
+                (processingFlags[index] & processedMask) != 0)
+                continue;
+
+              var contextLabel = 16;
+              if ((processingFlags[index] &
+                firstMagnitudeBitMask) != 0) {
+                processingFlags[i * width + j] ^= firstMagnitudeBitMask;
+                // first refinement
+                var significance = neighborsSignificance[index];
+                var sumOfSignificance = (significance & 3) +
+                  ((significance >> 2) & 3) + ((significance >> 4) & 7);
+                contextLabel = sumOfSignificance >= 1 ? 15 : 14;
+              }
+
+              var cx = contexts[contextLabel];
+              var bit = decoder.readBit(cx);
+              coefficentsMagnitude[index] =
+                (coefficentsMagnitude[index] << 1) | bit;
+              bitsDecoded[index]++;
+              processingFlags[index] |= processedMask;
+            }
+          }
+        }
+      },
+      runCleanupPass: function BitModel_runCleanupPass() {
+        var decoder = this.decoder;
+        var width = this.width, height = this.height;
+        var neighborsSignificance = this.neighborsSignificance;
+        var significanceState = this.significanceState;
+        var coefficentsMagnitude = this.coefficentsMagnitude;
+        var coefficentsSign = this.coefficentsSign;
+        var contexts = this.contexts;
+        var labels = this.contextLabelTable;
+        var bitsDecoded = this.bitsDecoded;
+        var processingFlags = this.processingFlags;
+        var processedMask = 1;
+        var firstMagnitudeBitMask = 2;
+        var oneRowDown = width;
+        var twoRowsDown = width * 2;
+        var threeRowsDown = width * 3;
+        for (var i0 = 0; i0 < height; i0 += 4) {
+          for (var j = 0; j < width; j++) {
+            var index0 = i0 * width + j;
+            // using the property: labels[neighborsSignificance[index]] == 0
+            // when neighborsSignificance[index] == 0
+            var allEmpty = i0 + 3 < height &&
+              processingFlags[index0] == 0 &&
+              processingFlags[index0 + oneRowDown] == 0 &&
+              processingFlags[index0 + twoRowsDown] == 0 &&
+              processingFlags[index0 + threeRowsDown] == 0 &&
+              neighborsSignificance[index0] == 0 &&
+              neighborsSignificance[index0 + oneRowDown] == 0 &&
+              neighborsSignificance[index0 + twoRowsDown] == 0 &&
+              neighborsSignificance[index0 + threeRowsDown] == 0;
+            var i1 = 0, index = index0;
+            var cx, i;
+            if (allEmpty) {
+              cx = this.runLengthContext;
+              var hasSignificantCoefficent = decoder.readBit(cx);
+              if (!hasSignificantCoefficent) {
+                bitsDecoded[index0]++;
+                bitsDecoded[index0 + oneRowDown]++;
+                bitsDecoded[index0 + twoRowsDown]++;
+                bitsDecoded[index0 + threeRowsDown]++;
+                continue; // next column
+              }
+              cx = this.uniformContext;
+              i1 = (decoder.readBit(cx) << 1) | decoder.readBit(cx);
+              i = i0 + i1;
+              index += i1 * width;
+
+              var sign = this.decodeSignBit(i, j);
+              coefficentsSign[index] = sign;
+              coefficentsMagnitude[index] = 1;
+              this.setNeighborsSignificance(i, j);
+              processingFlags[index] |= firstMagnitudeBitMask;
+
+              index = index0;
+              for (var i2 = i0; i2 <= i; i2++, index += width)
+                bitsDecoded[index]++;
+
+              i1++;
+            }
+            for (; i1 < 4; i1++, index += width) {
+              i = i0 + i1;
+              if (i >= height)
+                break;
+
+              if (coefficentsMagnitude[index] ||
+                (processingFlags[index] & processedMask) != 0)
+                continue;
+
+              var contextLabel = labels[neighborsSignificance[index]];
+              cx = contexts[contextLabel];
+              var decision = decoder.readBit(cx);
+              if (decision == 1) {
+                var sign = this.decodeSignBit(i, j);
+                coefficentsSign[index] = sign;
+                coefficentsMagnitude[index] = 1;
+                this.setNeighborsSignificance(i, j);
+                processingFlags[index] |= firstMagnitudeBitMask;
+              }
+              bitsDecoded[index]++;
+            }
+          }
+        }
+      }
+    };
+
+    return BitModel;
+  })();
+
+  // Section F, Discrete wavelet transofrmation
+  var Transform = (function TransformClosure() {
+    function Transform() {
+    }
+    Transform.prototype.calculate =
+      function transformCalculate(subbands, u0, v0) {
+      var ll = subbands[0];
+      for (var i = 1, ii = subbands.length, j = 1; i < ii; i += 3, j++) {
+        ll = this.iterate(ll, subbands[i], subbands[i + 1],
+                          subbands[i + 2], u0, v0);
+      }
+      return ll;
+    };
+    Transform.prototype.iterate = function Transform_iterate(ll, hl, lh, hh,
+                                                            u0, v0) {
+      var llWidth = ll.width, llHeight = ll.height, llItems = ll.items;
+      var hlWidth = hl.width, hlHeight = hl.height, hlItems = hl.items;
+      var lhWidth = lh.width, lhHeight = lh.height, lhItems = lh.items;
+      var hhWidth = hh.width, hhHeight = hh.height, hhItems = hh.items;
+
+      // Section F.3.3 interleave
+      var width = llWidth + hlWidth;
+      var height = llHeight + lhHeight;
+      var items = new Float32Array(width * height);
+      for (var i = 0, ii = llHeight; i < ii; i++) {
+        var k = i * llWidth, l = i * 2 * width;
+        for (var j = 0, jj = llWidth; j < jj; j++, k++, l += 2)
+          items[l] = llItems[k];
+      }
+      for (var i = 0, ii = hlHeight; i < ii; i++) {
+        var k = i * hlWidth, l = i * 2 * width + 1;
+        for (var j = 0, jj = hlWidth; j < jj; j++, k++, l += 2)
+          items[l] = hlItems[k];
+      }
+      for (var i = 0, ii = lhHeight; i < ii; i++) {
+        var k = i * lhWidth, l = (i * 2 + 1) * width;
+        for (var j = 0, jj = lhWidth; j < jj; j++, k++, l += 2)
+          items[l] = lhItems[k];
+      }
+      for (var i = 0, ii = hhHeight; i < ii; i++) {
+        var k = i * hhWidth, l = (i * 2 + 1) * width + 1;
+        for (var j = 0, jj = hhWidth; j < jj; j++, k++, l += 2)
+          items[l] = hhItems[k];
+      }
+
+      var bufferPadding = 4;
+      var bufferLength = new Float32Array(Math.max(width, height) +
+        2 * bufferPadding);
+      var buffer = new Float32Array(bufferLength);
+      var bufferOut = new Float32Array(bufferLength);
+
+      // Section F.3.4 HOR_SR
+      for (var v = 0; v < height; v++) {
+        if (width == 1) {
+          // if width = 1, when u0 even keep items as is, when odd divide by 2
+          if ((u0 % 1) != 0) {
+            items[v * width] /= 2;
+          }
+          continue;
+        }
+
+        var k = v * width;
+        var l = bufferPadding;
+        for (var u = 0; u < width; u++, k++, l++)
+          buffer[l] = items[k];
+
+        // Section F.3.7 extending... using max extension of 4
+        var i1 = bufferPadding - 1, j1 = bufferPadding + 1;
+        var i2 = bufferPadding + width - 2, j2 = bufferPadding + width;
+        buffer[i1--] = buffer[j1++];
+        buffer[j2++] = buffer[i2--];
+        buffer[i1--] = buffer[j1++];
+        buffer[j2++] = buffer[i2--];
+        buffer[i1--] = buffer[j1++];
+        buffer[j2++] = buffer[i2--];
+        buffer[i1--] = buffer[j1++];
+        buffer[j2++] = buffer[i2--];
+
+        this.filter(buffer, bufferPadding, width, u0, bufferOut);
+
+        k = v * width;
+        l = bufferPadding;
+        for (var u = 0; u < width; u++, k++, l++)
+          items[k] = bufferOut[l];
+      }
+
+      // Section F.3.5 VER_SR
+      for (var u = 0; u < width; u++) {
+        if (height == 1) {
+          // if height = 1, when v0 even keep items as is, when odd divide by 2
+          if ((v0 % 1) != 0) {
+            items[u] /= 2;
+          }
+          continue;
+        }
+
+        var k = u;
+        var l = bufferPadding;
+        for (var v = 0; v < height; v++, k += width, l++)
+          buffer[l] = items[k];
+
+        // Section F.3.7 extending... using max extension of 4
+        var i1 = bufferPadding - 1, j1 = bufferPadding + 1;
+        var i2 = bufferPadding + height - 2, j2 = bufferPadding + height;
+        buffer[i1--] = buffer[j1++];
+        buffer[j2++] = buffer[i2--];
+        buffer[i1--] = buffer[j1++];
+        buffer[j2++] = buffer[i2--];
+        buffer[i1--] = buffer[j1++];
+        buffer[j2++] = buffer[i2--];
+        buffer[i1--] = buffer[j1++];
+        buffer[j2++] = buffer[i2--];
+
+        this.filter(buffer, bufferPadding, height, v0, bufferOut);
+
+        k = u;
+        l = bufferPadding;
+        for (var v = 0; v < height; v++, k += width, l++)
+          items[k] = bufferOut[l];
+      }
+      return {
+        width: width,
+        height: height,
+        items: items
+      };
+    };
+    return Transform;
+  })();
+
+  // Section 3.8.2 Irreversible 9-7 filter
+  var IrreversibleTransform = (function IrreversibleTransformClosure() {
+    function IrreversibleTransform() {
+      Transform.call(this);
+    }
+
+    IrreversibleTransform.prototype = Object.create(Transform.prototype);
+    IrreversibleTransform.prototype.filter =
+      function irreversibleTransformFilter(y, offset, length, i0, x) {
+      var i0_ = Math.floor(i0 / 2);
+      var i1_ = Math.floor((i0 + length) / 2);
+      var offset_ = offset - (i0 % 1);
+
+      var alpha = -1.586134342059924;
+      var beta = -0.052980118572961;
+      var gamma = 0.882911075530934;
+      var delta = 0.443506852043971;
+      var K = 1.230174104914001;
+      var K_ = 1 / K;
+
+      // step 1
+      var j = offset_ - 2;
+      for (var n = i0_ - 1, nn = i1_ + 2; n < nn; n++, j += 2)
+        x[j] = K * y[j];
+
+      // step 2
+      var j = offset_ - 3;
+      for (var n = i0_ - 2, nn = i1_ + 2; n < nn; n++, j += 2)
+        x[j] = K_ * y[j];
+
+      // step 3
+      var j = offset_ - 2;
+      for (var n = i0_ - 1, nn = i1_ + 2; n < nn; n++, j += 2)
+        x[j] -= delta * (x[j - 1] + x[j + 1]);
+
+      // step 4
+      var j = offset_ - 1;
+      for (var n = i0_ - 1, nn = i1_ + 1; n < nn; n++, j += 2)
+        x[j] -= gamma * (x[j - 1] + x[j + 1]);
+
+      // step 5
+      var j = offset_;
+      for (var n = i0_, nn = i1_ + 1; n < nn; n++, j += 2)
+        x[j] -= beta * (x[j - 1] + x[j + 1]);
+
+      // step 6
+      var j = offset_ + 1;
+      for (var n = i0_, nn = i1_; n < nn; n++, j += 2)
+        x[j] -= alpha * (x[j - 1] + x[j + 1]);
+    };
+
+    return IrreversibleTransform;
+  })();
+
+  // Section 3.8.1 Reversible 5-3 filter
+  var ReversibleTransform = (function ReversibleTransformClosure() {
+    function ReversibleTransform() {
+      Transform.call(this);
+    }
+
+    ReversibleTransform.prototype = Object.create(Transform.prototype);
+    ReversibleTransform.prototype.filter =
+      function reversibleTransformFilter(y, offset, length, i0, x) {
+      var i0_ = Math.floor(i0 / 2);
+      var i1_ = Math.floor((i0 + length) / 2);
+      var offset_ = offset - (i0 % 1);
+
+      for (var n = i0_, nn = i1_ + 1, j = offset_; n < nn; n++, j += 2)
+        x[j] = y[j] - Math.floor((y[j - 1] + y[j + 1] + 2) / 4);
+
+      for (var n = i0_, nn = i1_, j = offset_ + 1; n < nn; n++, j += 2)
+        x[j] = y[j] + Math.floor((x[j - 1] + x[j + 1]) / 2);
+    };
+
+    return ReversibleTransform;
+  })();
+
+  return JpxImage;
+})();
+
+
+/* -*- Mode: Java; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/* vim: set shiftwidth=2 tabstop=2 autoindent cindent expandtab: */
+
+'use strict';
+
+var bidi = PDFJS.bidi = (function bidiClosure() {
+  // Character types for symbols from 0000 to 00FF.
+  var baseTypes = [
+    'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'S', 'B', 'S', 'WS',
+    'B', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN',
+    'BN', 'BN', 'B', 'B', 'B', 'S', 'WS', 'ON', 'ON', 'ET', 'ET', 'ET', 'ON',
+    'ON', 'ON', 'ON', 'ON', 'ON', 'CS', 'ON', 'CS', 'ON', 'EN', 'EN', 'EN',
+    'EN', 'EN', 'EN', 'EN', 'EN', 'EN', 'EN', 'ON', 'ON', 'ON', 'ON', 'ON',
+    'ON', 'ON', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L',
+    'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'ON', 'ON',
+    'ON', 'ON', 'ON', 'ON', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L',
+    'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L',
+    'L', 'ON', 'ON', 'ON', 'ON', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'B', 'BN',
+    'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN',
+    'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN',
+    'BN', 'CS', 'ON', 'ET', 'ET', 'ET', 'ET', 'ON', 'ON', 'ON', 'ON', 'L', 'ON',
+    'ON', 'ON', 'ON', 'ON', 'ET', 'ET', 'EN', 'EN', 'ON', 'L', 'ON', 'ON', 'ON',
+    'EN', 'L', 'ON', 'ON', 'ON', 'ON', 'ON', 'L', 'L', 'L', 'L', 'L', 'L', 'L',
+    'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L',
+    'L', 'ON', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L',
+    'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L',
+    'L', 'L', 'L', 'ON', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L'
+  ];
+
+  // Character types for symbols from 0600 to 06FF
+  var arabicTypes = [
+    'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL',
+    'CS', 'AL', 'ON', 'ON', 'NSM', 'NSM', 'NSM', 'NSM', 'NSM', 'NSM', 'AL',
+    'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL',
+    'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL',
+    'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL',
+    'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL',
+    'AL', 'AL', 'AL', 'AL', 'NSM', 'NSM', 'NSM', 'NSM', 'NSM', 'NSM', 'NSM',
+    'NSM', 'NSM', 'NSM', 'NSM', 'NSM', 'NSM', 'NSM', 'AL', 'AL', 'AL', 'AL',
+    'AL', 'AL', 'AL', 'AN', 'AN', 'AN', 'AN', 'AN', 'AN', 'AN', 'AN', 'AN',
+    'AN', 'ET', 'AN', 'AN', 'AL', 'AL', 'AL', 'NSM', 'AL', 'AL', 'AL', 'AL',
+    'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL',
+    'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL',
+    'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL',
+    'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL',
+    'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL',
+    'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL',
+    'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL',
+    'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL',
+    'AL', 'NSM', 'NSM', 'NSM', 'NSM', 'NSM', 'NSM', 'NSM', 'NSM', 'NSM', 'NSM',
+    'NSM', 'NSM', 'NSM', 'NSM', 'NSM', 'NSM', 'NSM', 'NSM', 'NSM', 'ON', 'NSM',
+    'NSM', 'NSM', 'NSM', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL',
+    'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL'
+  ];
+
+  function isOdd(i) {
+    return (i & 1) != 0;
+  }
+
+  function isEven(i) {
+    return (i & 1) == 0;
+  }
+
+  function findUnequal(arr, start, value) {
+    var j;
+    for (var j = start, jj = arr.length; j < jj; ++j) {
+      if (arr[j] != value)
+        return j;
+    }
+    return j;
+  }
+
+  function setValues(arr, start, end, value) {
+    for (var j = start; j < end; ++j) {
+      arr[j] = value;
+    }
+  }
+
+  function reverseValues(arr, start, end) {
+    for (var i = start, j = end - 1; i < j; ++i, --j) {
+      var temp = arr[i];
+      arr[i] = arr[j];
+      arr[j] = temp;
+    }
+  }
+
+  function mirrorGlyphs(c) {
+    /*
+     # BidiMirroring-1.txt
+     0028; 0029 # LEFT PARENTHESIS
+     0029; 0028 # RIGHT PARENTHESIS
+     003C; 003E # LESS-THAN SIGN
+     003E; 003C # GREATER-THAN SIGN
+     005B; 005D # LEFT SQUARE BRACKET
+     005D; 005B # RIGHT SQUARE BRACKET
+     007B; 007D # LEFT CURLY BRACKET
+     007D; 007B # RIGHT CURLY BRACKET
+     00AB; 00BB # LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+     00BB; 00AB # RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+     */
+    switch (c) {
+      case '(':
+        return ')';
+      case ')':
+        return '(';
+      case '<':
+        return '>';
+      case '>':
+        return '<';
+      case ']':
+        return '[';
+      case '[':
+        return ']';
+      case '}':
+        return '{';
+      case '{':
+        return '}';
+      case '\u00AB':
+        return '\u00BB';
+      case '\u00BB':
+        return '\u00AB';
+      default:
+        return c;
+    }
+  }
+
+  function bidi(text, startLevel) {
+    var str = text.str;
+    var strLength = str.length;
+    if (strLength == 0)
+      return str;
+
+    // get types, fill arrays
+
+    var chars = [];
+    var types = [];
+    var oldtypes = [];
+    var numBidi = 0;
+
+    for (var i = 0; i < strLength; ++i) {
+      chars[i] = str.charAt(i);
+
+      var charCode = str.charCodeAt(i);
+      var charType = 'L';
+      if (charCode <= 0x00ff)
+        charType = baseTypes[charCode];
+      else if (0x0590 <= charCode && charCode <= 0x05f4)
+        charType = 'R';
+      else if (0x0600 <= charCode && charCode <= 0x06ff)
+        charType = arabicTypes[charCode & 0xff];
+      else if (0x0700 <= charCode && charCode <= 0x08AC)
+        charType = 'AL';
+
+      if (charType == 'R' || charType == 'AL' || charType == 'AN')
+        numBidi++;
+
+      oldtypes[i] = types[i] = charType;
+    }
+
+    // detect the bidi method
+    //  if there are no rtl characters then no bidi needed
+    //  if less than 30% chars are rtl then string is primarily ltr
+    //  if more than 30% chars are rtl then string is primarily rtl
+    if (numBidi == 0) {
+      text.direction = 'ltr';
+      return str;
+    }
+
+    if (startLevel == -1) {
+      if ((strLength / numBidi) < 0.3) {
+        text.direction = 'ltr';
+        startLevel = 0;
+      } else {
+        text.direction = 'rtl';
+        startLevel = 1;
+      }
+    }
+
+    var levels = [];
+
+    for (var i = 0; i < strLength; ++i) {
+      levels[i] = startLevel;
+    }
+
+    /*
+     X1-X10: skip most of this, since we are NOT doing the embeddings.
+     */
+
+    var e = isOdd(startLevel) ? 'R' : 'L';
+    var sor = e;
+    var eor = sor;
+
+    /*
+     W1. Examine each non-spacing mark (NSM) in the level run, and change the
+     type of the NSM to the type of the previous character. If the NSM is at the
+     start of the level run, it will get the type of sor.
+     */
+
+    var lastType = sor;
+    for (var i = 0; i < strLength; ++i) {
+      if (types[i] == 'NSM')
+        types[i] = lastType;
+      else
+        lastType = types[i];
+    }
+
+    /*
+     W2. Search backwards from each instance of a European number until the
+     first strong type (R, L, AL, or sor) is found.  If an AL is found, change
+     the type of the European number to Arabic number.
+     */
+
+    var lastType = sor;
+    for (var i = 0; i < strLength; ++i) {
+      var t = types[i];
+      if (t == 'EN')
+        types[i] = (lastType == 'AL') ? 'AN' : 'EN';
+      else if (t == 'R' || t == 'L' || t == 'AL')
+        lastType = t;
+    }
+
+    /*
+     W3. Change all ALs to R.
+     */
+
+    for (var i = 0; i < strLength; ++i) {
+      var t = types[i];
+      if (t == 'AL')
+        types[i] = 'R';
+    }
+
+    /*
+     W4. A single European separator between two European numbers changes to a
+     European number. A single common separator between two numbers of the same
+     type changes to that type:
+     */
+
+    for (var i = 1; i < strLength - 1; ++i) {
+      if (types[i] == 'ES' && types[i - 1] == 'EN' && types[i + 1] == 'EN')
+        types[i] = 'EN';
+      if (types[i] == 'CS' && (types[i - 1] == 'EN' || types[i - 1] == 'AN') &&
+          types[i + 1] == types[i - 1])
+        types[i] = types[i - 1];
+    }
+
+    /*
+     W5. A sequence of European terminators adjacent to European numbers changes
+     to all European numbers:
+     */
+
+    for (var i = 0; i < strLength; ++i) {
+      if (types[i] == 'EN') {
+        // do before
+        for (var j = i - 1; j >= 0; --j) {
+          if (types[j] != 'ET')
+            break;
+          types[j] = 'EN';
+        }
+        // do after
+        for (var j = i + 1; j < strLength; --j) {
+          if (types[j] != 'ET')
+            break;
+          types[j] = 'EN';
+        }
+      }
+    }
+
+    /*
+     W6. Otherwise, separators and terminators change to Other Neutral:
+     */
+
+    for (var i = 0; i < strLength; ++i) {
+      var t = types[i];
+      if (t == 'WS' || t == 'ES' || t == 'ET' || t == 'CS')
+        types[i] = 'ON';
+    }
+
+    /*
+     W7. Search backwards from each instance of a European number until the
+     first strong type (R, L, or sor) is found. If an L is found,  then change
+     the type of the European number to L.
+     */
+
+    var lastType = sor;
+    for (var i = 0; i < strLength; ++i) {
+      var t = types[i];
+      if (t == 'EN')
+        types[i] = (lastType == 'L') ? 'L' : 'EN';
+      else if (t == 'R' || t == 'L')
+        lastType = t;
+    }
+
+    /*
+     N1. A sequence of neutrals takes the direction of the surrounding strong
+     text if the text on both sides has the same direction. European and Arabic
+     numbers are treated as though they were R. Start-of-level-run (sor) and
+     end-of-level-run (eor) are used at level run boundaries.
+     */
+
+    for (var i = 0; i < strLength; ++i) {
+      if (types[i] == 'ON') {
+        var end = findUnequal(types, i + 1, 'ON');
+        var before = sor;
+        if (i > 0)
+          before = types[i - 1];
+        var after = eor;
+        if (end + 1 < strLength)
+          after = types[end + 1];
+        if (before != 'L')
+          before = 'R';
+        if (after != 'L')
+          after = 'R';
+        if (before == after)
+          setValues(types, i, end, before);
+        i = end - 1; // reset to end (-1 so next iteration is ok)
+      }
+    }
+
+    /*
+     N2. Any remaining neutrals take the embedding direction.
+     */
+
+    for (var i = 0; i < strLength; ++i) {
+      if (types[i] == 'ON')
+        types[i] = e;
+    }
+
+    /*
+     I1. For all characters with an even (left-to-right) embedding direction,
+     those of type R go up one level and those of type AN or EN go up two
+     levels.
+     I2. For all characters with an odd (right-to-left) embedding direction,
+     those of type L, EN or AN go up one level.
+     */
+
+    for (var i = 0; i < strLength; ++i) {
+      var t = types[i];
+      if (isEven(levels[i])) {
+        if (t == 'R') {
+          levels[i] += 1;
+        } else if (t == 'AN' || t == 'EN') {
+          levels[i] += 2;
+        }
+      } else { // isOdd, so
+        if (t == 'L' || t == 'AN' || t == 'EN') {
+          levels[i] += 1;
+        }
+      }
+    }
+
+    /*
+     L1. On each line, reset the embedding level of the following characters to
+     the paragraph embedding level:
+
+     segment separators,
+     paragraph separators,
+     any sequence of whitespace characters preceding a segment separator or
+     paragraph separator, and any sequence of white space characters at the end
+     of the line.
+     */
+
+    // don't bother as text is only single line
+
+    /*
+     L2. From the highest level found in the text to the lowest odd level on
+     each line, reverse any contiguous sequence of characters that are at that
+     level or higher.
+     */
+
+    // find highest level & lowest odd level
+
+    var highestLevel = -1;
+    var lowestOddLevel = 99;
+    for (var i = 0, ii = levels.length; i < ii; ++i) {
+      var level = levels[i];
+      if (highestLevel < level)
+        highestLevel = level;
+      if (lowestOddLevel > level && isOdd(level))
+        lowestOddLevel = level;
+    }
+
+    // now reverse between those limits
+
+    for (var level = highestLevel; level >= lowestOddLevel; --level) {
+      // find segments to reverse
+      var start = -1;
+      for (var i = 0, ii = levels.length; i < ii; ++i) {
+        if (levels[i] < level) {
+          if (start >= 0) {
+            reverseValues(chars, start, i);
+            start = -1;
+          }
+        } else if (start < 0) {
+          start = i;
+        }
+      }
+      if (start >= 0) {
+        reverseValues(chars, start, levels.length);
+      }
+    }
+
+    /*
+     L3. Combining marks applied to a right-to-left base character will at this
+     point precede their base character. If the rendering engine expects them to
+     follow the base characters in the final display process, then the ordering
+     of the marks and the base character must be reversed.
+     */
+
+    // don't bother for now
+
+    /*
+     L4. A character that possesses the mirrored property as specified by
+     Section 4.7, Mirrored, must be depicted by a mirrored glyph if the resolved
+     directionality of that character is R.
+     */
+
+    // don't mirror as characters are already mirrored in the pdf
+
+    // Finally, return string
+
+    var result = '';
+    for (var i = 0, ii = chars.length; i < ii; ++i) {
+      var ch = chars[i];
+      if (ch != '<' && ch != '>')
+        result += ch;
+    }
+    return result;
+  }
+
+  return bidi;
+})();
+
+
+/* -*- Mode: Java; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/* vim: set shiftwidth=2 tabstop=2 autoindent cindent expandtab: */
+
+'use strict';
+
+var Metadata = PDFJS.Metadata = (function MetadataClosure() {
+  function fixMetadata(meta) {
+    return meta.replace(/>\\376\\377([^<]+)/g, function(all, codes) {
+      var bytes = codes.replace(/\\([0-3])([0-7])([0-7])/g,
+                                function(code, d1, d2, d3) {
+        return String.fromCharCode(d1 * 64 + d2 * 8 + d3 * 1);
+      });
+      var chars = '';
+      for (var i = 0; i < bytes.length; i += 2) {
+        var code = bytes.charCodeAt(i) * 256 + bytes.charCodeAt(i + 1);
+        chars += code >= 32 && code < 127 && code != 60 && code != 62 &&
+          code != 38 && false ? String.fromCharCode(code) :
+          '&#x' + (0x10000 + code).toString(16).substring(1) + ';';
+      }
+      return '>' + chars;
+    });
+  }
+
+  function Metadata(meta) {
+    if (typeof meta === 'string') {
+      // Ghostscript produces invalid metadata
+      meta = fixMetadata(meta);
+
+      var parser = new DOMParser();
+      meta = parser.parseFromString(meta, 'application/xml');
+    } else if (!(meta instanceof Document)) {
+      error('Metadata: Invalid metadata object');
+    }
+
+    this.metaDocument = meta;
+    this.metadata = {};
+    this.parse();
+  }
+
+  Metadata.prototype = {
+    parse: function Metadata_parse() {
+      var doc = this.metaDocument;
+      var rdf = doc.documentElement;
+
+      if (rdf.nodeName.toLowerCase() !== 'rdf:rdf') { // Wrapped in <xmpmeta>
+        rdf = rdf.firstChild;
+        while (rdf && rdf.nodeName.toLowerCase() !== 'rdf:rdf')
+          rdf = rdf.nextSibling;
+      }
+
+      var nodeName = (rdf) ? rdf.nodeName.toLowerCase() : null;
+      if (!rdf || nodeName !== 'rdf:rdf' || !rdf.hasChildNodes())
+        return;
+
+      var childNodes = rdf.childNodes, desc, namespace, entries, entry;
+
+      for (var i = 0, length = childNodes.length; i < length; i++) {
+        desc = childNodes[i];
+        if (desc.nodeName.toLowerCase() !== 'rdf:description')
+          continue;
+
+        entries = [];
+        for (var ii = 0, iLength = desc.childNodes.length; ii < iLength; ii++) {
+          if (desc.childNodes[ii].nodeName.toLowerCase() !== '#text')
+            entries.push(desc.childNodes[ii]);
+        }
+
+        for (ii = 0, iLength = entries.length; ii < iLength; ii++) {
+          var entry = entries[ii];
+          var name = entry.nodeName.toLowerCase();
+          this.metadata[name] = entry.textContent.trim();
+        }
+      }
+    },
+
+    get: function Metadata_get(name) {
+      return this.metadata[name] || null;
+    },
+
+    has: function Metadata_has(name) {
+      return typeof this.metadata[name] !== 'undefined';
+    }
+  };
+
+  return Metadata;
+})();
+
+}).call((typeof PdfJS_window.window === 'undefined') ? this : PdfJS_window.window);
diff --git a/suite/cts/deviceTests/browserbench/assets/octane/raytrace.js b/suite/cts/deviceTests/browserbench/assets/octane/raytrace.js
new file mode 100644
index 0000000..971ef72
--- /dev/null
+++ b/suite/cts/deviceTests/browserbench/assets/octane/raytrace.js
@@ -0,0 +1,904 @@
+// The ray tracer code in this file is written by Adam Burmister. It
+// is available in its original form from:
+//
+//   http://labs.flog.nz.co/raytracer/
+//
+// It has been modified slightly by Google to work as a standalone
+// benchmark, but the all the computational code remains
+// untouched. This file also contains a copy of parts of the Prototype
+// JavaScript framework which is used by the ray tracer.
+
+var RayTrace = new BenchmarkSuite('RayTrace', 739989, [
+  new Benchmark('RayTrace', renderScene)
+]);
+
+
+// Variable used to hold a number that can be used to verify that
+// the scene was ray traced correctly.
+var checkNumber;
+
+
+// ------------------------------------------------------------------------
+// ------------------------------------------------------------------------
+
+// The following is a copy of parts of the Prototype JavaScript library:
+
+// Prototype JavaScript framework, version 1.5.0
+// (c) 2005-2007 Sam Stephenson
+//
+// Prototype is freely distributable under the terms of an MIT-style license.
+// For details, see the Prototype web site: http://prototype.conio.net/
+
+
+var Class = {
+  create: function() {
+    return function() {
+      this.initialize.apply(this, arguments);
+    }
+  }
+};
+
+
+Object.extend = function(destination, source) {
+  for (var property in source) {
+    destination[property] = source[property];
+  }
+  return destination;
+};
+
+
+// ------------------------------------------------------------------------
+// ------------------------------------------------------------------------
+
+// The rest of this file is the actual ray tracer written by Adam
+// Burmister. It's a concatenation of the following files:
+//
+//   flog/color.js
+//   flog/light.js
+//   flog/vector.js
+//   flog/ray.js
+//   flog/scene.js
+//   flog/material/basematerial.js
+//   flog/material/solid.js
+//   flog/material/chessboard.js
+//   flog/shape/baseshape.js
+//   flog/shape/sphere.js
+//   flog/shape/plane.js
+//   flog/intersectioninfo.js
+//   flog/camera.js
+//   flog/background.js
+//   flog/engine.js
+
+
+/* Fake a Flog.* namespace */
+if(typeof(Flog) == 'undefined') var Flog = {};
+if(typeof(Flog.RayTracer) == 'undefined') Flog.RayTracer = {};
+
+Flog.RayTracer.Color = Class.create();
+
+Flog.RayTracer.Color.prototype = {
+    red : 0.0,
+    green : 0.0,
+    blue : 0.0,
+
+    initialize : function(r, g, b) {
+        if(!r) r = 0.0;
+        if(!g) g = 0.0;
+        if(!b) b = 0.0;
+
+        this.red = r;
+        this.green = g;
+        this.blue = b;
+    },
+
+    add : function(c1, c2){
+        var result = new Flog.RayTracer.Color(0,0,0);
+
+        result.red = c1.red + c2.red;
+        result.green = c1.green + c2.green;
+        result.blue = c1.blue + c2.blue;
+
+        return result;
+    },
+
+    addScalar: function(c1, s){
+        var result = new Flog.RayTracer.Color(0,0,0);
+
+        result.red = c1.red + s;
+        result.green = c1.green + s;
+        result.blue = c1.blue + s;
+
+        result.limit();
+
+        return result;
+    },
+
+    subtract: function(c1, c2){
+        var result = new Flog.RayTracer.Color(0,0,0);
+
+        result.red = c1.red - c2.red;
+        result.green = c1.green - c2.green;
+        result.blue = c1.blue - c2.blue;
+
+        return result;
+    },
+
+    multiply : function(c1, c2) {
+        var result = new Flog.RayTracer.Color(0,0,0);
+
+        result.red = c1.red * c2.red;
+        result.green = c1.green * c2.green;
+        result.blue = c1.blue * c2.blue;
+
+        return result;
+    },
+
+    multiplyScalar : function(c1, f) {
+        var result = new Flog.RayTracer.Color(0,0,0);
+
+        result.red = c1.red * f;
+        result.green = c1.green * f;
+        result.blue = c1.blue * f;
+
+        return result;
+    },
+
+    divideFactor : function(c1, f) {
+        var result = new Flog.RayTracer.Color(0,0,0);
+
+        result.red = c1.red / f;
+        result.green = c1.green / f;
+        result.blue = c1.blue / f;
+
+        return result;
+    },
+
+    limit: function(){
+        this.red = (this.red > 0.0) ? ( (this.red > 1.0) ? 1.0 : this.red ) : 0.0;
+        this.green = (this.green > 0.0) ? ( (this.green > 1.0) ? 1.0 : this.green ) : 0.0;
+        this.blue = (this.blue > 0.0) ? ( (this.blue > 1.0) ? 1.0 : this.blue ) : 0.0;
+    },
+
+    distance : function(color) {
+        var d = Math.abs(this.red - color.red) + Math.abs(this.green - color.green) + Math.abs(this.blue - color.blue);
+        return d;
+    },
+
+    blend: function(c1, c2, w){
+        var result = new Flog.RayTracer.Color(0,0,0);
+        result = Flog.RayTracer.Color.prototype.add(
+                    Flog.RayTracer.Color.prototype.multiplyScalar(c1, 1 - w),
+                    Flog.RayTracer.Color.prototype.multiplyScalar(c2, w)
+                  );
+        return result;
+    },
+
+    brightness : function() {
+        var r = Math.floor(this.red*255);
+        var g = Math.floor(this.green*255);
+        var b = Math.floor(this.blue*255);
+        return (r * 77 + g * 150 + b * 29) >> 8;
+    },
+
+    toString : function () {
+        var r = Math.floor(this.red*255);
+        var g = Math.floor(this.green*255);
+        var b = Math.floor(this.blue*255);
+
+        return "rgb("+ r +","+ g +","+ b +")";
+    }
+}
+/* Fake a Flog.* namespace */
+if(typeof(Flog) == 'undefined') var Flog = {};
+if(typeof(Flog.RayTracer) == 'undefined') Flog.RayTracer = {};
+
+Flog.RayTracer.Light = Class.create();
+
+Flog.RayTracer.Light.prototype = {
+    position: null,
+    color: null,
+    intensity: 10.0,
+
+    initialize : function(pos, color, intensity) {
+        this.position = pos;
+        this.color = color;
+        this.intensity = (intensity ? intensity : 10.0);
+    },
+
+    toString : function () {
+        return 'Light [' + this.position.x + ',' + this.position.y + ',' + this.position.z + ']';
+    }
+}
+/* Fake a Flog.* namespace */
+if(typeof(Flog) == 'undefined') var Flog = {};
+if(typeof(Flog.RayTracer) == 'undefined') Flog.RayTracer = {};
+
+Flog.RayTracer.Vector = Class.create();
+
+Flog.RayTracer.Vector.prototype = {
+    x : 0.0,
+    y : 0.0,
+    z : 0.0,
+
+    initialize : function(x, y, z) {
+        this.x = (x ? x : 0);
+        this.y = (y ? y : 0);
+        this.z = (z ? z : 0);
+    },
+
+    copy: function(vector){
+        this.x = vector.x;
+        this.y = vector.y;
+        this.z = vector.z;
+    },
+
+    normalize : function() {
+        var m = this.magnitude();
+        return new Flog.RayTracer.Vector(this.x / m, this.y / m, this.z / m);
+    },
+
+    magnitude : function() {
+        return Math.sqrt((this.x * this.x) + (this.y * this.y) + (this.z * this.z));
+    },
+
+    cross : function(w) {
+        return new Flog.RayTracer.Vector(
+                                            -this.z * w.y + this.y * w.z,
+                                           this.z * w.x - this.x * w.z,
+                                          -this.y * w.x + this.x * w.y);
+    },
+
+    dot : function(w) {
+        return this.x * w.x + this.y * w.y + this.z * w.z;
+    },
+
+    add : function(v, w) {
+        return new Flog.RayTracer.Vector(w.x + v.x, w.y + v.y, w.z + v.z);
+    },
+
+    subtract : function(v, w) {
+        if(!w || !v) throw 'Vectors must be defined [' + v + ',' + w + ']';
+        return new Flog.RayTracer.Vector(v.x - w.x, v.y - w.y, v.z - w.z);
+    },
+
+    multiplyVector : function(v, w) {
+        return new Flog.RayTracer.Vector(v.x * w.x, v.y * w.y, v.z * w.z);
+    },
+
+    multiplyScalar : function(v, w) {
+        return new Flog.RayTracer.Vector(v.x * w, v.y * w, v.z * w);
+    },
+
+    toString : function () {
+        return 'Vector [' + this.x + ',' + this.y + ',' + this.z + ']';
+    }
+}
+/* Fake a Flog.* namespace */
+if(typeof(Flog) == 'undefined') var Flog = {};
+if(typeof(Flog.RayTracer) == 'undefined') Flog.RayTracer = {};
+
+Flog.RayTracer.Ray = Class.create();
+
+Flog.RayTracer.Ray.prototype = {
+    position : null,
+    direction : null,
+    initialize : function(pos, dir) {
+        this.position = pos;
+        this.direction = dir;
+    },
+
+    toString : function () {
+        return 'Ray [' + this.position + ',' + this.direction + ']';
+    }
+}
+/* Fake a Flog.* namespace */
+if(typeof(Flog) == 'undefined') var Flog = {};
+if(typeof(Flog.RayTracer) == 'undefined') Flog.RayTracer = {};
+
+Flog.RayTracer.Scene = Class.create();
+
+Flog.RayTracer.Scene.prototype = {
+    camera : null,
+    shapes : [],
+    lights : [],
+    background : null,
+
+    initialize : function() {
+        this.camera = new Flog.RayTracer.Camera(
+            new Flog.RayTracer.Vector(0,0,-5),
+            new Flog.RayTracer.Vector(0,0,1),
+            new Flog.RayTracer.Vector(0,1,0)
+        );
+        this.shapes = new Array();
+        this.lights = new Array();
+        this.background = new Flog.RayTracer.Background(new Flog.RayTracer.Color(0,0,0.5), 0.2);
+    }
+}
+/* Fake a Flog.* namespace */
+if(typeof(Flog) == 'undefined') var Flog = {};
+if(typeof(Flog.RayTracer) == 'undefined') Flog.RayTracer = {};
+if(typeof(Flog.RayTracer.Material) == 'undefined') Flog.RayTracer.Material = {};
+
+Flog.RayTracer.Material.BaseMaterial = Class.create();
+
+Flog.RayTracer.Material.BaseMaterial.prototype = {
+
+    gloss: 2.0,             // [0...infinity] 0 = matt
+    transparency: 0.0,      // 0=opaque
+    reflection: 0.0,        // [0...infinity] 0 = no reflection
+    refraction: 0.50,
+    hasTexture: false,
+
+    initialize : function() {
+
+    },
+
+    getColor: function(u, v){
+
+    },
+
+    wrapUp: function(t){
+        t = t % 2.0;
+        if(t < -1) t += 2.0;
+        if(t >= 1) t -= 2.0;
+        return t;
+    },
+
+    toString : function () {
+        return 'Material [gloss=' + this.gloss + ', transparency=' + this.transparency + ', hasTexture=' + this.hasTexture +']';
+    }
+}
+/* Fake a Flog.* namespace */
+if(typeof(Flog) == 'undefined') var Flog = {};
+if(typeof(Flog.RayTracer) == 'undefined') Flog.RayTracer = {};
+
+Flog.RayTracer.Material.Solid = Class.create();
+
+Flog.RayTracer.Material.Solid.prototype = Object.extend(
+    new Flog.RayTracer.Material.BaseMaterial(), {
+        initialize : function(color, reflection, refraction, transparency, gloss) {
+            this.color = color;
+            this.reflection = reflection;
+            this.transparency = transparency;
+            this.gloss = gloss;
+            this.hasTexture = false;
+        },
+
+        getColor: function(u, v){
+            return this.color;
+        },
+
+        toString : function () {
+            return 'SolidMaterial [gloss=' + this.gloss + ', transparency=' + this.transparency + ', hasTexture=' + this.hasTexture +']';
+        }
+    }
+);
+/* Fake a Flog.* namespace */
+if(typeof(Flog) == 'undefined') var Flog = {};
+if(typeof(Flog.RayTracer) == 'undefined') Flog.RayTracer = {};
+
+Flog.RayTracer.Material.Chessboard = Class.create();
+
+Flog.RayTracer.Material.Chessboard.prototype = Object.extend(
+    new Flog.RayTracer.Material.BaseMaterial(), {
+        colorEven: null,
+        colorOdd: null,
+        density: 0.5,
+
+        initialize : function(colorEven, colorOdd, reflection, transparency, gloss, density) {
+            this.colorEven = colorEven;
+            this.colorOdd = colorOdd;
+            this.reflection = reflection;
+            this.transparency = transparency;
+            this.gloss = gloss;
+            this.density = density;
+            this.hasTexture = true;
+        },
+
+        getColor: function(u, v){
+            var t = this.wrapUp(u * this.density) * this.wrapUp(v * this.density);
+
+            if(t < 0.0)
+                return this.colorEven;
+            else
+                return this.colorOdd;
+        },
+
+        toString : function () {
+            return 'ChessMaterial [gloss=' + this.gloss + ', transparency=' + this.transparency + ', hasTexture=' + this.hasTexture +']';
+        }
+    }
+);
+/* Fake a Flog.* namespace */
+if(typeof(Flog) == 'undefined') var Flog = {};
+if(typeof(Flog.RayTracer) == 'undefined') Flog.RayTracer = {};
+if(typeof(Flog.RayTracer.Shape) == 'undefined') Flog.RayTracer.Shape = {};
+
+Flog.RayTracer.Shape.Sphere = Class.create();
+
+Flog.RayTracer.Shape.Sphere.prototype = {
+    initialize : function(pos, radius, material) {
+        this.radius = radius;
+        this.position = pos;
+        this.material = material;
+    },
+
+    intersect: function(ray){
+        var info = new Flog.RayTracer.IntersectionInfo();
+        info.shape = this;
+
+        var dst = Flog.RayTracer.Vector.prototype.subtract(ray.position, this.position);
+
+        var B = dst.dot(ray.direction);
+        var C = dst.dot(dst) - (this.radius * this.radius);
+        var D = (B * B) - C;
+
+        if(D > 0){ // intersection!
+            info.isHit = true;
+            info.distance = (-B) - Math.sqrt(D);
+            info.position = Flog.RayTracer.Vector.prototype.add(
+                                                ray.position,
+                                                Flog.RayTracer.Vector.prototype.multiplyScalar(
+                                                    ray.direction,
+                                                    info.distance
+                                                )
+                                            );
+            info.normal = Flog.RayTracer.Vector.prototype.subtract(
+                                            info.position,
+                                            this.position
+                                        ).normalize();
+
+            info.color = this.material.getColor(0,0);
+        } else {
+            info.isHit = false;
+        }
+        return info;
+    },
+
+    toString : function () {
+        return 'Sphere [position=' + this.position + ', radius=' + this.radius + ']';
+    }
+}
+/* Fake a Flog.* namespace */
+if(typeof(Flog) == 'undefined') var Flog = {};
+if(typeof(Flog.RayTracer) == 'undefined') Flog.RayTracer = {};
+if(typeof(Flog.RayTracer.Shape) == 'undefined') Flog.RayTracer.Shape = {};
+
+Flog.RayTracer.Shape.Plane = Class.create();
+
+Flog.RayTracer.Shape.Plane.prototype = {
+    d: 0.0,
+
+    initialize : function(pos, d, material) {
+        this.position = pos;
+        this.d = d;
+        this.material = material;
+    },
+
+    intersect: function(ray){
+        var info = new Flog.RayTracer.IntersectionInfo();
+
+        var Vd = this.position.dot(ray.direction);
+        if(Vd == 0) return info; // no intersection
+
+        var t = -(this.position.dot(ray.position) + this.d) / Vd;
+        if(t <= 0) return info;
+
+        info.shape = this;
+        info.isHit = true;
+        info.position = Flog.RayTracer.Vector.prototype.add(
+                                            ray.position,
+                                            Flog.RayTracer.Vector.prototype.multiplyScalar(
+                                                ray.direction,
+                                                t
+                                            )
+                                        );
+        info.normal = this.position;
+        info.distance = t;
+
+        if(this.material.hasTexture){
+            var vU = new Flog.RayTracer.Vector(this.position.y, this.position.z, -this.position.x);
+            var vV = vU.cross(this.position);
+            var u = info.position.dot(vU);
+            var v = info.position.dot(vV);
+            info.color = this.material.getColor(u,v);
+        } else {
+            info.color = this.material.getColor(0,0);
+        }
+
+        return info;
+    },
+
+    toString : function () {
+        return 'Plane [' + this.position + ', d=' + this.d + ']';
+    }
+}
+/* Fake a Flog.* namespace */
+if(typeof(Flog) == 'undefined') var Flog = {};
+if(typeof(Flog.RayTracer) == 'undefined') Flog.RayTracer = {};
+
+Flog.RayTracer.IntersectionInfo = Class.create();
+
+Flog.RayTracer.IntersectionInfo.prototype = {
+    isHit: false,
+    hitCount: 0,
+    shape: null,
+    position: null,
+    normal: null,
+    color: null,
+    distance: null,
+
+    initialize : function() {
+        this.color = new Flog.RayTracer.Color(0,0,0);
+    },
+
+    toString : function () {
+        return 'Intersection [' + this.position + ']';
+    }
+}
+/* Fake a Flog.* namespace */
+if(typeof(Flog) == 'undefined') var Flog = {};
+if(typeof(Flog.RayTracer) == 'undefined') Flog.RayTracer = {};
+
+Flog.RayTracer.Camera = Class.create();
+
+Flog.RayTracer.Camera.prototype = {
+    position: null,
+    lookAt: null,
+    equator: null,
+    up: null,
+    screen: null,
+
+    initialize : function(pos, lookAt, up) {
+        this.position = pos;
+        this.lookAt = lookAt;
+        this.up = up;
+        this.equator = lookAt.normalize().cross(this.up);
+        this.screen = Flog.RayTracer.Vector.prototype.add(this.position, this.lookAt);
+    },
+
+    getRay: function(vx, vy){
+        var pos = Flog.RayTracer.Vector.prototype.subtract(
+            this.screen,
+            Flog.RayTracer.Vector.prototype.subtract(
+                Flog.RayTracer.Vector.prototype.multiplyScalar(this.equator, vx),
+                Flog.RayTracer.Vector.prototype.multiplyScalar(this.up, vy)
+            )
+        );
+        pos.y = pos.y * -1;
+        var dir = Flog.RayTracer.Vector.prototype.subtract(
+            pos,
+            this.position
+        );
+
+        var ray = new Flog.RayTracer.Ray(pos, dir.normalize());
+
+        return ray;
+    },
+
+    toString : function () {
+        return 'Ray []';
+    }
+}
+/* Fake a Flog.* namespace */
+if(typeof(Flog) == 'undefined') var Flog = {};
+if(typeof(Flog.RayTracer) == 'undefined') Flog.RayTracer = {};
+
+Flog.RayTracer.Background = Class.create();
+
+Flog.RayTracer.Background.prototype = {
+    color : null,
+    ambience : 0.0,
+
+    initialize : function(color, ambience) {
+        this.color = color;
+        this.ambience = ambience;
+    }
+}
+/* Fake a Flog.* namespace */
+if(typeof(Flog) == 'undefined') var Flog = {};
+if(typeof(Flog.RayTracer) == 'undefined') Flog.RayTracer = {};
+
+Flog.RayTracer.Engine = Class.create();
+
+Flog.RayTracer.Engine.prototype = {
+    canvas: null, /* 2d context we can render to */
+
+    initialize: function(options){
+        this.options = Object.extend({
+                canvasHeight: 100,
+                canvasWidth: 100,
+                pixelWidth: 2,
+                pixelHeight: 2,
+                renderDiffuse: false,
+                renderShadows: false,
+                renderHighlights: false,
+                renderReflections: false,
+                rayDepth: 2
+            }, options || {});
+
+        this.options.canvasHeight /= this.options.pixelHeight;
+        this.options.canvasWidth /= this.options.pixelWidth;
+
+        /* TODO: dynamically include other scripts */
+    },
+
+    setPixel: function(x, y, color){
+        var pxW, pxH;
+        pxW = this.options.pixelWidth;
+        pxH = this.options.pixelHeight;
+
+        if (this.canvas) {
+          this.canvas.fillStyle = color.toString();
+          this.canvas.fillRect (x * pxW, y * pxH, pxW, pxH);
+        } else {
+          if (x ===  y) {
+            checkNumber += color.brightness();
+          }
+          // print(x * pxW, y * pxH, pxW, pxH);
+        }
+    },
+
+    renderScene: function(scene, canvas){
+        checkNumber = 0;
+        /* Get canvas */
+        if (canvas) {
+          this.canvas = canvas.getContext("2d");
+        } else {
+          this.canvas = null;
+        }
+
+        var canvasHeight = this.options.canvasHeight;
+        var canvasWidth = this.options.canvasWidth;
+
+        for(var y=0; y < canvasHeight; y++){
+            for(var x=0; x < canvasWidth; x++){
+                var yp = y * 1.0 / canvasHeight * 2 - 1;
+          		var xp = x * 1.0 / canvasWidth * 2 - 1;
+
+          		var ray = scene.camera.getRay(xp, yp);
+
+          		var color = this.getPixelColor(ray, scene);
+
+            	this.setPixel(x, y, color);
+            }
+        }
+        if (checkNumber !== 2321) {
+          throw new Error("Scene rendered incorrectly");
+        }
+    },
+
+    getPixelColor: function(ray, scene){
+        var info = this.testIntersection(ray, scene, null);
+        if(info.isHit){
+            var color = this.rayTrace(info, ray, scene, 0);
+            return color;
+        }
+        return scene.background.color;
+    },
+
+    testIntersection: function(ray, scene, exclude){
+        var hits = 0;
+        var best = new Flog.RayTracer.IntersectionInfo();
+        best.distance = 2000;
+
+        for(var i=0; i<scene.shapes.length; i++){
+            var shape = scene.shapes[i];
+
+            if(shape != exclude){
+                var info = shape.intersect(ray);
+                if(info.isHit && info.distance >= 0 && info.distance < best.distance){
+                    best = info;
+                    hits++;
+                }
+            }
+        }
+        best.hitCount = hits;
+        return best;
+    },
+
+    getReflectionRay: function(P,N,V){
+        var c1 = -N.dot(V);
+        var R1 = Flog.RayTracer.Vector.prototype.add(
+            Flog.RayTracer.Vector.prototype.multiplyScalar(N, 2*c1),
+            V
+        );
+        return new Flog.RayTracer.Ray(P, R1);
+    },
+
+    rayTrace: function(info, ray, scene, depth){
+        // Calc ambient
+        var color = Flog.RayTracer.Color.prototype.multiplyScalar(info.color, scene.background.ambience);
+        var oldColor = color;
+        var shininess = Math.pow(10, info.shape.material.gloss + 1);
+
+        for(var i=0; i<scene.lights.length; i++){
+            var light = scene.lights[i];
+
+            // Calc diffuse lighting
+            var v = Flog.RayTracer.Vector.prototype.subtract(
+                                light.position,
+                                info.position
+                            ).normalize();
+
+            if(this.options.renderDiffuse){
+                var L = v.dot(info.normal);
+                if(L > 0.0){
+                    color = Flog.RayTracer.Color.prototype.add(
+                                        color,
+                                        Flog.RayTracer.Color.prototype.multiply(
+                                            info.color,
+                                            Flog.RayTracer.Color.prototype.multiplyScalar(
+                                                light.color,
+                                                L
+                                            )
+                                        )
+                                    );
+                }
+            }
+
+            // The greater the depth the more accurate the colours, but
+            // this is exponentially (!) expensive
+            if(depth <= this.options.rayDepth){
+          // calculate reflection ray
+          if(this.options.renderReflections && info.shape.material.reflection > 0)
+          {
+              var reflectionRay = this.getReflectionRay(info.position, info.normal, ray.direction);
+              var refl = this.testIntersection(reflectionRay, scene, info.shape);
+
+              if (refl.isHit && refl.distance > 0){
+                  refl.color = this.rayTrace(refl, reflectionRay, scene, depth + 1);
+              } else {
+                  refl.color = scene.background.color;
+                        }
+
+                  color = Flog.RayTracer.Color.prototype.blend(
+                    color,
+                    refl.color,
+                    info.shape.material.reflection
+                  );
+          }
+
+                // Refraction
+                /* TODO */
+            }
+
+            /* Render shadows and highlights */
+
+            var shadowInfo = new Flog.RayTracer.IntersectionInfo();
+
+            if(this.options.renderShadows){
+                var shadowRay = new Flog.RayTracer.Ray(info.position, v);
+
+                shadowInfo = this.testIntersection(shadowRay, scene, info.shape);
+                if(shadowInfo.isHit && shadowInfo.shape != info.shape /*&& shadowInfo.shape.type != 'PLANE'*/){
+                    var vA = Flog.RayTracer.Color.prototype.multiplyScalar(color, 0.5);
+                    var dB = (0.5 * Math.pow(shadowInfo.shape.material.transparency, 0.5));
+                    color = Flog.RayTracer.Color.prototype.addScalar(vA,dB);
+                }
+            }
+
+      // Phong specular highlights
+      if(this.options.renderHighlights && !shadowInfo.isHit && info.shape.material.gloss > 0){
+        var Lv = Flog.RayTracer.Vector.prototype.subtract(
+                            info.shape.position,
+                            light.position
+                        ).normalize();
+
+        var E = Flog.RayTracer.Vector.prototype.subtract(
+                            scene.camera.position,
+                            info.shape.position
+                        ).normalize();
+
+        var H = Flog.RayTracer.Vector.prototype.subtract(
+                            E,
+                            Lv
+                        ).normalize();
+
+        var glossWeight = Math.pow(Math.max(info.normal.dot(H), 0), shininess);
+        color = Flog.RayTracer.Color.prototype.add(
+                            Flog.RayTracer.Color.prototype.multiplyScalar(light.color, glossWeight),
+                            color
+                        );
+      }
+        }
+        color.limit();
+        return color;
+    }
+};
+
+
+function renderScene(){
+    var scene = new Flog.RayTracer.Scene();
+
+    scene.camera = new Flog.RayTracer.Camera(
+                        new Flog.RayTracer.Vector(0, 0, -15),
+                        new Flog.RayTracer.Vector(-0.2, 0, 5),
+                        new Flog.RayTracer.Vector(0, 1, 0)
+                    );
+
+    scene.background = new Flog.RayTracer.Background(
+                                new Flog.RayTracer.Color(0.5, 0.5, 0.5),
+                                0.4
+                            );
+
+    var sphere = new Flog.RayTracer.Shape.Sphere(
+        new Flog.RayTracer.Vector(-1.5, 1.5, 2),
+        1.5,
+        new Flog.RayTracer.Material.Solid(
+            new Flog.RayTracer.Color(0,0.5,0.5),
+            0.3,
+            0.0,
+            0.0,
+            2.0
+        )
+    );
+
+    var sphere1 = new Flog.RayTracer.Shape.Sphere(
+        new Flog.RayTracer.Vector(1, 0.25, 1),
+        0.5,
+        new Flog.RayTracer.Material.Solid(
+            new Flog.RayTracer.Color(0.9,0.9,0.9),
+            0.1,
+            0.0,
+            0.0,
+            1.5
+        )
+    );
+
+    var plane = new Flog.RayTracer.Shape.Plane(
+                                new Flog.RayTracer.Vector(0.1, 0.9, -0.5).normalize(),
+                                1.2,
+                                new Flog.RayTracer.Material.Chessboard(
+                                    new Flog.RayTracer.Color(1,1,1),
+                                    new Flog.RayTracer.Color(0,0,0),
+                                    0.2,
+                                    0.0,
+                                    1.0,
+                                    0.7
+                                )
+                            );
+
+    scene.shapes.push(plane);
+    scene.shapes.push(sphere);
+    scene.shapes.push(sphere1);
+
+    var light = new Flog.RayTracer.Light(
+        new Flog.RayTracer.Vector(5, 10, -1),
+        new Flog.RayTracer.Color(0.8, 0.8, 0.8)
+    );
+
+    var light1 = new Flog.RayTracer.Light(
+        new Flog.RayTracer.Vector(-3, 5, -15),
+        new Flog.RayTracer.Color(0.8, 0.8, 0.8),
+        100
+    );
+
+    scene.lights.push(light);
+    scene.lights.push(light1);
+
+    var imageWidth = 100; // $F('imageWidth');
+    var imageHeight = 100; // $F('imageHeight');
+    var pixelSize = "5,5".split(','); //  $F('pixelSize').split(',');
+    var renderDiffuse = true; // $F('renderDiffuse');
+    var renderShadows = true; // $F('renderShadows');
+    var renderHighlights = true; // $F('renderHighlights');
+    var renderReflections = true; // $F('renderReflections');
+    var rayDepth = 2;//$F('rayDepth');
+
+    var raytracer = new Flog.RayTracer.Engine(
+        {
+            canvasWidth: imageWidth,
+            canvasHeight: imageHeight,
+            pixelWidth: pixelSize[0],
+            pixelHeight: pixelSize[1],
+            "renderDiffuse": renderDiffuse,
+            "renderHighlights": renderHighlights,
+            "renderShadows": renderShadows,
+            "renderReflections": renderReflections,
+            "rayDepth": rayDepth
+        }
+    );
+
+    raytracer.renderScene(scene, null, 0);
+}
diff --git a/suite/cts/deviceTests/browserbench/assets/octane/regexp.js b/suite/cts/deviceTests/browserbench/assets/octane/regexp.js
new file mode 100644
index 0000000..f1474bf
--- /dev/null
+++ b/suite/cts/deviceTests/browserbench/assets/octane/regexp.js
@@ -0,0 +1,1764 @@
+// Copyright 2010 the V8 project authors. All rights reserved.
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+//       notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+//       copyright notice, this list of conditions and the following
+//       disclaimer in the documentation and/or other materials provided
+//       with the distribution.
+//     * Neither the name of Google Inc. nor the names of its
+//       contributors may be used to endorse or promote products derived
+//       from this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// Automatically generated on 2009-01-30. Manually updated on 2010-09-17.
+
+// This benchmark is generated by loading 50 of the most popular pages
+// on the web and logging all regexp operations performed.  Each
+// operation is given a weight that is calculated from an estimate of
+// the popularity of the pages where it occurs and the number of times
+// it is executed while loading each page.  Furthermore the literal
+// letters in the data are encoded using ROT13 in a way that does not
+// affect how the regexps match their input.  Finally the strings are
+// scrambled to exercise the regexp engine on different input strings.
+
+
+var RegExpSuite = new BenchmarkSuite('RegExp', 910985, [
+  new Benchmark("RegExp", RegExpRun, RegExpSetup, RegExpTearDown, 16)
+]);
+
+var regExpBenchmark = null;
+
+function RegExpSetup() {
+  regExpBenchmark = new RegExpBenchmark();
+  RegExpRun(); // run once to get system initialized
+}
+
+function RegExpRun() {
+  regExpBenchmark.run();
+}
+
+function RegExpTearDown() {
+  regExpBenchmark = null;
+}
+
+// Returns an array of n different variants of the input string str.
+// The variants are computed by randomly rotating one random
+// character.
+function computeInputVariants(str, n) {
+  var variants = [ str ];
+  for (var i = 1; i < n; i++) {
+    var pos = Math.floor(Math.random() * str.length);
+    var chr = String.fromCharCode((str.charCodeAt(pos) + Math.floor(Math.random() * 128)) % 128);
+    variants[i] = str.substring(0, pos) + chr + str.substring(pos + 1, str.length);
+  }
+  return variants;
+}
+
+function RegExpBenchmark() {
+  var re0 = /^ba/;
+  var re1 = /(((\w+):\/\/)([^\/:]*)(:(\d+))?)?([^#?]*)(\?([^#]*))?(#(.*))?/;
+  var re2 = /^\s*|\s*$/g;
+  var re3 = /\bQBZPbageby_cynprubyqre\b/;
+  var re4 = /,/;
+  var re5 = /\bQBZPbageby_cynprubyqre\b/g;
+  var re6 = /^[\s\xa0]+|[\s\xa0]+$/g;
+  var re7 = /(\d*)(\D*)/g;
+  var re8 = /=/;
+  var re9 = /(^|\s)lhv\-h(\s|$)/;
+  var str0 = 'Zbmvyyn/5.0 (Jvaqbjf; H; Jvaqbjf AG 5.1; ra-HF) NccyrJroXvg/528.9 (XUGZY, yvxr Trpxb) Puebzr/2.0.157.0 Fnsnev/528.9';
+  var re10 = /\#/g;
+  var re11 = /\./g;
+  var re12 = /'/g;
+  var re13 = /\?[\w\W]*(sevraqvq|punaaryvq|tebhcvq)=([^\&\?#]*)/i;
+  var str1 = 'Fubpxjnir Synfu 9.0  e115';
+  var re14 = /\s+/g;
+  var re15 = /^\s*(\S*(\s+\S+)*)\s*$/;
+  var re16 = /(-[a-z])/i;
+
+  var s0 = computeInputVariants('pyvpx', 6511);
+  var s1 = computeInputVariants('uggc://jjj.snprobbx.pbz/ybtva.cuc', 1844);
+  var s2 = computeInputVariants('QBZPbageby_cynprubyqre', 739);
+  var s3 = computeInputVariants('uggc://jjj.snprobbx.pbz/', 598);
+  var s4 = computeInputVariants('uggc://jjj.snprobbx.pbz/fepu.cuc', 454);
+  var s5 = computeInputVariants('qqqq, ZZZ q, llll', 352);
+  var s6 = computeInputVariants('vachggrkg QBZPbageby_cynprubyqre', 312);
+  var s7 = computeInputVariants('/ZlFcnprUbzrcntr/Vaqrk-FvgrUbzr,10000000', 282);
+  var s8 = computeInputVariants('vachggrkg', 177);
+  var s9 = computeInputVariants('528.9', 170);
+  var s10 = computeInputVariants('528', 170);
+  var s11 = computeInputVariants('VCPhygher=ra-HF', 156);
+  var s12 = computeInputVariants('CersreerqPhygher=ra-HF', 156);
+  var s13 = computeInputVariants('xrlcerff', 144);
+  var s14 = computeInputVariants('521', 139);
+  var s15 = computeInputVariants(str0, 139);
+  var s16 = computeInputVariants('qvi .so_zrah', 137);
+  var s17 = computeInputVariants('qvi.so_zrah', 137);
+  var s18 = computeInputVariants('uvqqra_ryrz', 117);
+  var s19 = computeInputVariants('sevraqfgre_naba=nvq%3Qn6ss9p85n868ro9s059pn854735956o3%26ers%3Q%26df%3Q%26vpgl%3QHF', 95);
+  var s20 = computeInputVariants('uggc://ubzr.zlfcnpr.pbz/vaqrk.psz', 93);
+  var s21 = computeInputVariants(str1, 92);
+  var s22 = computeInputVariants('svefg', 85);
+  var s23 = computeInputVariants('uggc://cebsvyr.zlfcnpr.pbz/vaqrk.psz', 85);
+  var s24 = computeInputVariants('ynfg', 85);
+  var s25 = computeInputVariants('qvfcynl', 85);
+
+  function runBlock0() {
+    for (var i = 0; i < 6511; i++) {
+      re0.exec(s0[i]);
+    }
+    for (var i = 0; i < 1844; i++) {
+      re1.exec(s1[i]);
+    }
+    for (var i = 0; i < 739; i++) {
+      s2[i].replace(re2, '');
+    }
+    for (var i = 0; i < 598; i++) {
+      re1.exec(s3[i]);
+    }
+    for (var i = 0; i < 454; i++) {
+      re1.exec(s4[i]);
+    }
+    for (var i = 0; i < 352; i++) {
+      /qqqq|qqq|qq|q|ZZZZ|ZZZ|ZZ|Z|llll|ll|l|uu|u|UU|U|zz|z|ff|f|gg|g|sss|ss|s|mmm|mm|m/g.exec(s5[i]);
+    }
+    for (var i = 0; i < 312; i++) {
+      re3.exec(s6[i]);
+    }
+    for (var i = 0; i < 282; i++) {
+      re4.exec(s7[i]);
+    }
+    for (var i = 0; i < 177; i++) {
+      s8[i].replace(re5, '');
+    }
+    for (var i = 0; i < 170; i++) {
+      s9[i].replace(re6, '');
+      re7.exec(s10[i]);
+    }
+    for (var i = 0; i < 156; i++) {
+      re8.exec(s11[i]);
+      re8.exec(s12[i]);
+    }
+    for (var i = 0; i < 144; i++) {
+      re0.exec(s13[i]);
+    }
+    for (var i = 0; i < 139; i++) {
+      s14[i].replace(re6, '');
+      re7.exec(s14[i]);
+      re9.exec('');
+      /JroXvg\/(\S+)/.exec(s15[i]);
+    }
+    for (var i = 0; i < 137; i++) {
+      s16[i].replace(re10, '');
+      s16[i].replace(/\[/g, '');
+      s17[i].replace(re11, '');
+    }
+    for (var i = 0; i < 117; i++) {
+      s18[i].replace(re2, '');
+    }
+    for (var i = 0; i < 95; i++) {
+      /(?:^|;)\s*sevraqfgre_ynat=([^;]*)/.exec(s19[i]);
+    }
+    for (var i = 0; i < 93; i++) {
+      s20[i].replace(re12, '');
+      re13.exec(s20[i]);
+    }
+    for (var i = 0; i < 92; i++) {
+      s21[i].replace(/([a-zA-Z]|\s)+/, '');
+    }
+    for (var i = 0; i < 85; i++) {
+      s22[i].replace(re14, '');
+      s22[i].replace(re15, '');
+      s23[i].replace(re12, '');
+      s24[i].replace(re14, '');
+      s24[i].replace(re15, '');
+      re16.exec(s25[i]);
+      re13.exec(s23[i]);
+    }
+  }
+  var re17 = /(^|[^\\])\"\\\/Qngr\((-?[0-9]+)\)\\\/\"/g;
+  var str2 = '{"anzr":"","ahzoreSbezng":{"PheeraplQrpvznyQvtvgf":2,"PheeraplQrpvznyFrcnengbe":".","VfErnqBayl":gehr,"PheeraplTebhcFvmrf":[3],"AhzoreTebhcFvmrf":[3],"CrepragTebhcFvmrf":[3],"PheeraplTebhcFrcnengbe":",","PheeraplFlzoby":"\xa4","AnAFlzoby":"AnA","PheeraplArtngvirCnggrea":0,"AhzoreArtngvirCnggrea":1,"CrepragCbfvgvirCnggrea":0,"CrepragArtngvirCnggrea":0,"ArtngvirVasvavglFlzoby":"-Vasvavgl","ArtngvirFvta":"-","AhzoreQrpvznyQvtvgf":2,"AhzoreQrpvznyFrcnengbe":".","AhzoreTebhcFrcnengbe":",","PheeraplCbfvgvirCnggrea":0,"CbfvgvirVasvavglFlzoby":"Vasvavgl","CbfvgvirFvta":"+","CrepragQrpvznyQvtvgf":2,"CrepragQrpvznyFrcnengbe":".","CrepragTebhcFrcnengbe":",","CrepragFlzoby":"%","CreZvyyrFlzoby":"\u2030","AngvirQvtvgf":["0","1","2","3","4","5","6","7","8","9"],"QvtvgFhofgvghgvba":1},"qngrGvzrSbezng":{"NZQrfvtangbe":"NZ","Pnyraqne":{"ZvaFhccbegrqQngrGvzr":"@-62135568000000@","ZnkFhccbegrqQngrGvzr":"@253402300799999@","NytbevguzGlcr":1,"PnyraqneGlcr":1,"Renf":[1],"GjbQvtvgLrneZnk":2029,"VfErnqBayl":gehr},"QngrFrcnengbe":"/","SvefgQnlBsJrrx":0,"PnyraqneJrrxEhyr":0,"ShyyQngrGvzrCnggrea":"qqqq, qq ZZZZ llll UU:zz:ff","YbatQngrCnggrea":"qqqq, qq ZZZZ llll","YbatGvzrCnggrea":"UU:zz:ff","ZbaguQnlCnggrea":"ZZZZ qq","CZQrfvtangbe":"CZ","ESP1123Cnggrea":"qqq, qq ZZZ llll UU\':\'zz\':\'ff \'TZG\'","FubegQngrCnggrea":"ZZ/qq/llll","FubegGvzrCnggrea":"UU:zz","FbegnoyrQngrGvzrCnggrea":"llll\'-\'ZZ\'-\'qq\'G\'UU\':\'zz\':\'ff","GvzrFrcnengbe":":","HavirefnyFbegnoyrQngrGvzrCnggrea":"llll\'-\'ZZ\'-\'qq UU\':\'zz\':\'ff\'M\'","LrneZbaguCnggrea":"llll ZZZZ","NooerivngrqQnlAnzrf":["Fha","Zba","Ghr","Jrq","Guh","Sev","Fng"],"FubegrfgQnlAnzrf":["Fh","Zb","Gh","Jr","Gu","Se","Fn"],"QnlAnzrf":["Fhaqnl","Zbaqnl","Ghrfqnl","Jrqarfqnl","Guhefqnl","Sevqnl","Fngheqnl"],"NooerivngrqZbaguAnzrf":["Wna","Sro","Zne","Nce","Znl","Wha","Why","Nht","Frc","Bpg","Abi","Qrp",""],"ZbaguAnzrf":["Wnahnel","Sroehnel","Znepu","Ncevy","Znl","Whar","Whyl","Nhthfg","Frcgrzore","Bpgbore","Abirzore","Qrprzore",""],"VfErnqBayl":gehr,"AngvirPnyraqneAnzr":"Tertbevna Pnyraqne","NooerivngrqZbaguTravgvirAnzrf":["Wna","Sro","Zne","Nce","Znl","Wha","Why","Nht","Frc","Bpg","Abi","Qrp",""],"ZbaguTravgvirAnzrf":["Wnahnel","Sroehnel","Znepu","Ncevy","Znl","Whar","Whyl","Nhthfg","Frcgrzore","Bpgbore","Abirzore","Qrprzore",""]}}';
+  var str3 = '{"anzr":"ra-HF","ahzoreSbezng":{"PheeraplQrpvznyQvtvgf":2,"PheeraplQrpvznyFrcnengbe":".","VfErnqBayl":snyfr,"PheeraplTebhcFvmrf":[3],"AhzoreTebhcFvmrf":[3],"CrepragTebhcFvmrf":[3],"PheeraplTebhcFrcnengbe":",","PheeraplFlzoby":"$","AnAFlzoby":"AnA","PheeraplArtngvirCnggrea":0,"AhzoreArtngvirCnggrea":1,"CrepragCbfvgvirCnggrea":0,"CrepragArtngvirCnggrea":0,"ArtngvirVasvavglFlzoby":"-Vasvavgl","ArtngvirFvta":"-","AhzoreQrpvznyQvtvgf":2,"AhzoreQrpvznyFrcnengbe":".","AhzoreTebhcFrcnengbe":",","PheeraplCbfvgvirCnggrea":0,"CbfvgvirVasvavglFlzoby":"Vasvavgl","CbfvgvirFvta":"+","CrepragQrpvznyQvtvgf":2,"CrepragQrpvznyFrcnengbe":".","CrepragTebhcFrcnengbe":",","CrepragFlzoby":"%","CreZvyyrFlzoby":"\u2030","AngvirQvtvgf":["0","1","2","3","4","5","6","7","8","9"],"QvtvgFhofgvghgvba":1},"qngrGvzrSbezng":{"NZQrfvtangbe":"NZ","Pnyraqne":{"ZvaFhccbegrqQngrGvzr":"@-62135568000000@","ZnkFhccbegrqQngrGvzr":"@253402300799999@","NytbevguzGlcr":1,"PnyraqneGlcr":1,"Renf":[1],"GjbQvtvgLrneZnk":2029,"VfErnqBayl":snyfr},"QngrFrcnengbe":"/","SvefgQnlBsJrrx":0,"PnyraqneJrrxEhyr":0,"ShyyQngrGvzrCnggrea":"qqqq, ZZZZ qq, llll u:zz:ff gg","YbatQngrCnggrea":"qqqq, ZZZZ qq, llll","YbatGvzrCnggrea":"u:zz:ff gg","ZbaguQnlCnggrea":"ZZZZ qq","CZQrfvtangbe":"CZ","ESP1123Cnggrea":"qqq, qq ZZZ llll UU\':\'zz\':\'ff \'TZG\'","FubegQngrCnggrea":"Z/q/llll","FubegGvzrCnggrea":"u:zz gg","FbegnoyrQngrGvzrCnggrea":"llll\'-\'ZZ\'-\'qq\'G\'UU\':\'zz\':\'ff","GvzrFrcnengbe":":","HavirefnyFbegnoyrQngrGvzrCnggrea":"llll\'-\'ZZ\'-\'qq UU\':\'zz\':\'ff\'M\'","LrneZbaguCnggrea":"ZZZZ, llll","NooerivngrqQnlAnzrf":["Fha","Zba","Ghr","Jrq","Guh","Sev","Fng"],"FubegrfgQnlAnzrf":["Fh","Zb","Gh","Jr","Gu","Se","Fn"],"QnlAnzrf":["Fhaqnl","Zbaqnl","Ghrfqnl","Jrqarfqnl","Guhefqnl","Sevqnl","Fngheqnl"],"NooerivngrqZbaguAnzrf":["Wna","Sro","Zne","Nce","Znl","Wha","Why","Nht","Frc","Bpg","Abi","Qrp",""],"ZbaguAnzrf":["Wnahnel","Sroehnel","Znepu","Ncevy","Znl","Whar","Whyl","Nhthfg","Frcgrzore","Bpgbore","Abirzore","Qrprzore",""],"VfErnqBayl":snyfr,"AngvirPnyraqneAnzr":"Tertbevna Pnyraqne","NooerivngrqZbaguTravgvirAnzrf":["Wna","Sro","Zne","Nce","Znl","Wha","Why","Nht","Frc","Bpg","Abi","Qrp",""],"ZbaguTravgvirAnzrf":["Wnahnel","Sroehnel","Znepu","Ncevy","Znl","Whar","Whyl","Nhthfg","Frcgrzore","Bpgbore","Abirzore","Qrprzore",""]}}';
+  var str4 = 'HFEYBP=DKWyLHAiMTH9AwHjWxAcqUx9GJ91oaEunJ4tIzyyqlMQo3IhqUW5D29xMG1IHlMQo3IhqUW5GzSgMG1Iozy0MJDtH3EuqTImWxEgLHAiMTH9BQN3WxkuqTy0qJEyCGZ3YwDkBGVzGT9hM2y0qJEyCF0kZwVhZQH3APMDo3A0LJkQo2EyCGx0ZQDmWyWyM2yiox5uoJH9D0R%3Q';
+  var str5 = 'HFEYBP=DKWyLHAiMTH9AwHjWxAcqUx9GJ91oaEunJ4tIzyyqlMQo3IhqUW5D29xMG1IHlMQo3IhqUW5GzSgMG1Iozy0MJDtH3EuqTImWxEgLHAiMTH9BQN3WxkuqTy0qJEyCGZ3YwDkBGVzGT9hM2y0qJEyCF0kZwVhZQH3APMDo3A0LJkQo2EyCGx0ZQDmWyWyM2yiox5uoJH9D0R=';
+  var re18 = /^\s+|\s+$/g;
+  var str6 = 'uggc://jjj.snprobbx.pbz/vaqrk.cuc';
+  var re19 = /(?:^|\s+)ba(?:\s+|$)/;
+  var re20 = /[+, ]/;
+  var re21 = /ybnqrq|pbzcyrgr/;
+  var str7 = ';;jvaqbj.IjPurpxZbhfrCbfvgvbaNQ_VQ=shapgvba(r){vs(!r)ine r=jvaqbj.rirag;ine c=-1;vs(d1)c=d1.EbyybssCnary;ine bo=IjTrgBow("IjCnayNQ_VQ_"+c);vs(bo&&bo.fglyr.ivfvovyvgl=="ivfvoyr"){ine fns=IjFns?8:0;ine pheK=r.pyvragK+IjBOFpe("U")+fns,pheL=r.pyvragL+IjBOFpe("I")+fns;ine y=IjBOEC(NQ_VQ,bo,"Y"),g=IjBOEC(NQ_VQ,bo,"G");ine e=y+d1.Cnaryf[c].Jvqgu,o=g+d1.Cnaryf[c].Urvtug;vs((pheK<y)||(pheK>e)||(pheL<g)||(pheL>o)){vs(jvaqbj.IjBaEbyybssNQ_VQ)IjBaEbyybssNQ_VQ(c);ryfr IjPybfrNq(NQ_VQ,c,gehr,"");}ryfr erghea;}IjPnapryZbhfrYvfgrareNQ_VQ();};;jvaqbj.IjFrgEbyybssCnaryNQ_VQ=shapgvba(c){ine z="zbhfrzbir",q=qbphzrag,s=IjPurpxZbhfrCbfvgvbaNQ_VQ;c=IjTc(NQ_VQ,c);vs(d1&&d1.EbyybssCnary>-1)IjPnapryZbhfrYvfgrareNQ_VQ();vs(d1)d1.EbyybssCnary=c;gel{vs(q.nqqRiragYvfgrare)q.nqqRiragYvfgrare(z,s,snyfr);ryfr vs(q.nggnpuRirag)q.nggnpuRirag("ba"+z,s);}pngpu(r){}};;jvaqbj.IjPnapryZbhfrYvfgrareNQ_VQ=shapgvba(){ine z="zbhfrzbir",q=qbphzrag,s=IjPurpxZbhfrCbfvgvbaNQ_VQ;vs(d1)d1.EbyybssCnary=-1;gel{vs(q.erzbirRiragYvfgrare)q.erzbirRiragYvfgrare(z,s,snyfr);ryfr vs(q.qrgnpuRirag)q.qrgnpuRirag("ba"+z,s);}pngpu(r){}};;d1.IjTc=d2(n,c){ine nq=d1;vs(vfAnA(c)){sbe(ine v=0;v<nq.Cnaryf.yratgu;v++)vs(nq.Cnaryf[v].Anzr==c)erghea v;erghea 0;}erghea c;};;d1.IjTpy=d2(n,c,p){ine cn=d1.Cnaryf[IjTc(n,c)];vs(!cn)erghea 0;vs(vfAnA(p)){sbe(ine v=0;v<cn.Pyvpxguehf.yratgu;v++)vs(cn.Pyvpxguehf[v].Anzr==p)erghea v;erghea 0;}erghea p;};;d1.IjGenpr=d2(n,f){gel{vs(jvaqbj["Ij"+"QtQ"])jvaqbj["Ij"+"QtQ"](n,1,f);}pngpu(r){}};;d1.IjYvzvg1=d2(n,f){ine nq=d1,vh=f.fcyvg("/");sbe(ine v=0,p=0;v<vh.yratgu;v++){vs(vh[v].yratgu>0){vs(nq.FzV.yratgu>0)nq.FzV+="/";nq.FzV+=vh[v];nq.FtZ[nq.FtZ.yratgu]=snyfr;}}};;d1.IjYvzvg0=d2(n,f){ine nq=d1,vh=f.fcyvg("/");sbe(ine v=0;v<vh.yratgu;v++){vs(vh[v].yratgu>0){vs(nq.OvC.yratgu>0)nq.OvC+="/";nq.OvC+=vh[v];}}};;d1.IjRVST=d2(n,c){jvaqbj["IjCnayNQ_VQ_"+c+"_Bow"]=IjTrgBow("IjCnayNQ_VQ_"+c+"_Bow");vs(jvaqbj["IjCnayNQ_VQ_"+c+"_Bow"]==ahyy)frgGvzrbhg("IjRVST(NQ_VQ,"+c+")",d1.rvsg);};;d1.IjNavzSHC=d2(n,c){ine nq=d1;vs(c>nq.Cnaryf.yratgu)erghea;ine cna=nq.Cnaryf[c],nn=gehr,on=gehr,yn=gehr,en=gehr,cn=nq.Cnaryf[0],sf=nq.ShF,j=cn.Jvqgu,u=cn.Urvtug;vs(j=="100%"){j=sf;en=snyfr;yn=snyfr;}vs(u=="100%"){u=sf;nn=snyfr;on=snyfr;}vs(cn.YnY=="Y")yn=snyfr;vs(cn.YnY=="E")en=snyfr;vs(cn.GnY=="G")nn=snyfr;vs(cn.GnY=="O")on=snyfr;ine k=0,l=0;fjvgpu(nq.NshP%8){pnfr 0:oernx;pnfr 1:vs(nn)l=-sf;oernx;pnfr 2:k=j-sf;oernx;pnfr 3:vs(en)k=j;oernx;pnfr 4:k=j-sf;l=u-sf;oernx;pnfr 5:k=j-sf;vs(on)l=u;oernx;pnfr 6:l=u-sf;oernx;pnfr 7:vs(yn)k=-sf;l=u-sf;oernx;}vs(nq.NshP++ <nq.NshG)frgGvzrbhg(("IjNavzSHC(NQ_VQ,"+c+")"),nq.NshC);ryfr{k=-1000;l=k;}cna.YrsgBssfrg=k;cna.GbcBssfrg=l;IjNhErcb(n,c);};;d1.IjTrgErnyCbfvgvba=d2(n,b,j){erghea IjBOEC.nccyl(guvf,nethzragf);};;d1.IjPnapryGvzrbhg=d2(n,c){c=IjTc(n,c);ine cay=d1.Cnaryf[c];vs(cay&&cay.UgU!=""){pyrneGvzrbhg(cay.UgU);}};;d1.IjPnapryNyyGvzrbhgf=d2(n){vs(d1.YbpxGvzrbhgPunatrf)erghea;sbe(ine c=0;c<d1.bac;c++)IjPnapryGvzrbhg(n,c);};;d1.IjFgnegGvzrbhg=d2(n,c,bG){c=IjTc(n,c);ine cay=d1.Cnaryf[c];vs(cay&&((cay.UvqrGvzrbhgInyhr>0)||(nethzragf.yratgu==3&&bG>0))){pyrneGvzrbhg(cay.UgU);cay.UgU=frgGvzrbhg(cay.UvqrNpgvba,(nethzragf.yratgu==3?bG:cay.UvqrGvzrbhgInyhr));}};;d1.IjErfrgGvzrbhg=d2(n,c,bG){c=IjTc(n,c);IjPnapryGvzrbhg(n,c);riny("IjFgnegGvzrbhg(NQ_VQ,c"+(nethzragf.yratgu==3?",bG":"")+")");};;d1.IjErfrgNyyGvzrbhgf=d2(n){sbe(ine c=0;c<d1.bac;c++)IjErfrgGvzrbhg(n,c);};;d1.IjQrgnpure=d2(n,rig,sap){gel{vs(IjQVR5)riny("jvaqbj.qrgnpuRirag(\'ba"+rig+"\',"+sap+"NQ_VQ)");ryfr vs(!IjQVRZnp)riny("jvaqbj.erzbirRiragYvfgrare(\'"+rig+"\',"+sap+"NQ_VQ,snyfr)");}pngpu(r){}};;d1.IjPyrnaHc=d2(n){IjCvat(n,"G");ine nq=d1;sbe(ine v=0;v<nq.Cnaryf.yratgu;v++){IjUvqrCnary(n,v,gehr);}gel{IjTrgBow(nq.gya).vaareUGZY="";}pngpu(r){}vs(nq.gya!=nq.gya2)gel{IjTrgBow(nq.gya2).vaareUGZY="";}pngpu(r){}gel{d1=ahyy;}pngpu(r){}gel{IjQrgnpure(n,"haybnq","IjHayNQ_VQ");}pngpu(r){}gel{jvaqbj.IjHayNQ_VQ=ahyy;}pngpu(r){}gel{IjQrgnpure(n,"fpebyy","IjFeNQ_VQ");}pngpu(r){}gel{jvaqbj.IjFeNQ_VQ=ahyy;}pngpu(r){}gel{IjQrgnpure(n,"erfvmr","IjEmNQ_VQ");}pngpu(r){}gel{jvaqbj.IjEmNQ_VQ=ahyy;}pngpu(r){}gel{IjQrgnpure(n';
+  var str8 = ';;jvaqbj.IjPurpxZbhfrCbfvgvbaNQ_VQ=shapgvba(r){vs(!r)ine r=jvaqbj.rirag;ine c=-1;vs(jvaqbj.IjNqNQ_VQ)c=jvaqbj.IjNqNQ_VQ.EbyybssCnary;ine bo=IjTrgBow("IjCnayNQ_VQ_"+c);vs(bo&&bo.fglyr.ivfvovyvgl=="ivfvoyr"){ine fns=IjFns?8:0;ine pheK=r.pyvragK+IjBOFpe("U")+fns,pheL=r.pyvragL+IjBOFpe("I")+fns;ine y=IjBOEC(NQ_VQ,bo,"Y"),g=IjBOEC(NQ_VQ,bo,"G");ine e=y+jvaqbj.IjNqNQ_VQ.Cnaryf[c].Jvqgu,o=g+jvaqbj.IjNqNQ_VQ.Cnaryf[c].Urvtug;vs((pheK<y)||(pheK>e)||(pheL<g)||(pheL>o)){vs(jvaqbj.IjBaEbyybssNQ_VQ)IjBaEbyybssNQ_VQ(c);ryfr IjPybfrNq(NQ_VQ,c,gehr,"");}ryfr erghea;}IjPnapryZbhfrYvfgrareNQ_VQ();};;jvaqbj.IjFrgEbyybssCnaryNQ_VQ=shapgvba(c){ine z="zbhfrzbir",q=qbphzrag,s=IjPurpxZbhfrCbfvgvbaNQ_VQ;c=IjTc(NQ_VQ,c);vs(jvaqbj.IjNqNQ_VQ&&jvaqbj.IjNqNQ_VQ.EbyybssCnary>-1)IjPnapryZbhfrYvfgrareNQ_VQ();vs(jvaqbj.IjNqNQ_VQ)jvaqbj.IjNqNQ_VQ.EbyybssCnary=c;gel{vs(q.nqqRiragYvfgrare)q.nqqRiragYvfgrare(z,s,snyfr);ryfr vs(q.nggnpuRirag)q.nggnpuRirag("ba"+z,s);}pngpu(r){}};;jvaqbj.IjPnapryZbhfrYvfgrareNQ_VQ=shapgvba(){ine z="zbhfrzbir",q=qbphzrag,s=IjPurpxZbhfrCbfvgvbaNQ_VQ;vs(jvaqbj.IjNqNQ_VQ)jvaqbj.IjNqNQ_VQ.EbyybssCnary=-1;gel{vs(q.erzbirRiragYvfgrare)q.erzbirRiragYvfgrare(z,s,snyfr);ryfr vs(q.qrgnpuRirag)q.qrgnpuRirag("ba"+z,s);}pngpu(r){}};;jvaqbj.IjNqNQ_VQ.IjTc=shapgvba(n,c){ine nq=jvaqbj.IjNqNQ_VQ;vs(vfAnA(c)){sbe(ine v=0;v<nq.Cnaryf.yratgu;v++)vs(nq.Cnaryf[v].Anzr==c)erghea v;erghea 0;}erghea c;};;jvaqbj.IjNqNQ_VQ.IjTpy=shapgvba(n,c,p){ine cn=jvaqbj.IjNqNQ_VQ.Cnaryf[IjTc(n,c)];vs(!cn)erghea 0;vs(vfAnA(p)){sbe(ine v=0;v<cn.Pyvpxguehf.yratgu;v++)vs(cn.Pyvpxguehf[v].Anzr==p)erghea v;erghea 0;}erghea p;};;jvaqbj.IjNqNQ_VQ.IjGenpr=shapgvba(n,f){gel{vs(jvaqbj["Ij"+"QtQ"])jvaqbj["Ij"+"QtQ"](n,1,f);}pngpu(r){}};;jvaqbj.IjNqNQ_VQ.IjYvzvg1=shapgvba(n,f){ine nq=jvaqbj.IjNqNQ_VQ,vh=f.fcyvg("/");sbe(ine v=0,p=0;v<vh.yratgu;v++){vs(vh[v].yratgu>0){vs(nq.FzV.yratgu>0)nq.FzV+="/";nq.FzV+=vh[v];nq.FtZ[nq.FtZ.yratgu]=snyfr;}}};;jvaqbj.IjNqNQ_VQ.IjYvzvg0=shapgvba(n,f){ine nq=jvaqbj.IjNqNQ_VQ,vh=f.fcyvg("/");sbe(ine v=0;v<vh.yratgu;v++){vs(vh[v].yratgu>0){vs(nq.OvC.yratgu>0)nq.OvC+="/";nq.OvC+=vh[v];}}};;jvaqbj.IjNqNQ_VQ.IjRVST=shapgvba(n,c){jvaqbj["IjCnayNQ_VQ_"+c+"_Bow"]=IjTrgBow("IjCnayNQ_VQ_"+c+"_Bow");vs(jvaqbj["IjCnayNQ_VQ_"+c+"_Bow"]==ahyy)frgGvzrbhg("IjRVST(NQ_VQ,"+c+")",jvaqbj.IjNqNQ_VQ.rvsg);};;jvaqbj.IjNqNQ_VQ.IjNavzSHC=shapgvba(n,c){ine nq=jvaqbj.IjNqNQ_VQ;vs(c>nq.Cnaryf.yratgu)erghea;ine cna=nq.Cnaryf[c],nn=gehr,on=gehr,yn=gehr,en=gehr,cn=nq.Cnaryf[0],sf=nq.ShF,j=cn.Jvqgu,u=cn.Urvtug;vs(j=="100%"){j=sf;en=snyfr;yn=snyfr;}vs(u=="100%"){u=sf;nn=snyfr;on=snyfr;}vs(cn.YnY=="Y")yn=snyfr;vs(cn.YnY=="E")en=snyfr;vs(cn.GnY=="G")nn=snyfr;vs(cn.GnY=="O")on=snyfr;ine k=0,l=0;fjvgpu(nq.NshP%8){pnfr 0:oernx;pnfr 1:vs(nn)l=-sf;oernx;pnfr 2:k=j-sf;oernx;pnfr 3:vs(en)k=j;oernx;pnfr 4:k=j-sf;l=u-sf;oernx;pnfr 5:k=j-sf;vs(on)l=u;oernx;pnfr 6:l=u-sf;oernx;pnfr 7:vs(yn)k=-sf;l=u-sf;oernx;}vs(nq.NshP++ <nq.NshG)frgGvzrbhg(("IjNavzSHC(NQ_VQ,"+c+")"),nq.NshC);ryfr{k=-1000;l=k;}cna.YrsgBssfrg=k;cna.GbcBssfrg=l;IjNhErcb(n,c);};;jvaqbj.IjNqNQ_VQ.IjTrgErnyCbfvgvba=shapgvba(n,b,j){erghea IjBOEC.nccyl(guvf,nethzragf);};;jvaqbj.IjNqNQ_VQ.IjPnapryGvzrbhg=shapgvba(n,c){c=IjTc(n,c);ine cay=jvaqbj.IjNqNQ_VQ.Cnaryf[c];vs(cay&&cay.UgU!=""){pyrneGvzrbhg(cay.UgU);}};;jvaqbj.IjNqNQ_VQ.IjPnapryNyyGvzrbhgf=shapgvba(n){vs(jvaqbj.IjNqNQ_VQ.YbpxGvzrbhgPunatrf)erghea;sbe(ine c=0;c<jvaqbj.IjNqNQ_VQ.bac;c++)IjPnapryGvzrbhg(n,c);};;jvaqbj.IjNqNQ_VQ.IjFgnegGvzrbhg=shapgvba(n,c,bG){c=IjTc(n,c);ine cay=jvaqbj.IjNqNQ_VQ.Cnaryf[c];vs(cay&&((cay.UvqrGvzrbhgInyhr>0)||(nethzragf.yratgu==3&&bG>0))){pyrneGvzrbhg(cay.UgU);cay.UgU=frgGvzrbhg(cay.UvqrNpgvba,(nethzragf.yratgu==3?bG:cay.UvqrGvzrbhgInyhr));}};;jvaqbj.IjNqNQ_VQ.IjErfrgGvzrbhg=shapgvba(n,c,bG){c=IjTc(n,c);IjPnapryGvzrbhg(n,c);riny("IjFgnegGvzrbhg(NQ_VQ,c"+(nethzragf.yratgu==3?",bG":"")+")");};;jvaqbj.IjNqNQ_VQ.IjErfrgNyyGvzrbhgf=shapgvba(n){sbe(ine c=0;c<jvaqbj.IjNqNQ_VQ.bac;c++)IjErfrgGvzrbhg(n,c);};;jvaqbj.IjNqNQ_VQ.IjQrgnpure=shapgvba(n,rig,sap){gel{vs(IjQVR5)riny("jvaqbj.qrgnpuRirag(\'ba"+rig+"\',"+sap+"NQ_VQ)");ryfr vs(!IjQVRZnp)riny("jvaqbj.erzbir';
+  var str9 = ';;jvaqbj.IjPurpxZbhfrCbfvgvbaNQ_VQ=shapgvba(r){vs(!r)ine r=jvaqbj.rirag;ine c=-1;vs(jvaqbj.IjNqNQ_VQ)c=jvaqbj.IjNqNQ_VQ.EbyybssCnary;ine bo=IjTrgBow("IjCnayNQ_VQ_"+c);vs(bo&&bo.fglyr.ivfvovyvgl=="ivfvoyr"){ine fns=IjFns?8:0;ine pheK=r.pyvragK+IjBOFpe("U")+fns,pheL=r.pyvragL+IjBOFpe("I")+fns;ine y=IjBOEC(NQ_VQ,bo,"Y"),g=IjBOEC(NQ_VQ,bo,"G");ine e=y+jvaqbj.IjNqNQ_VQ.Cnaryf[c].Jvqgu,o=g+jvaqbj.IjNqNQ_VQ.Cnaryf[c].Urvtug;vs((pheK<y)||(pheK>e)||(pheL<g)||(pheL>o)){vs(jvaqbj.IjBaEbyybssNQ_VQ)IjBaEbyybssNQ_VQ(c);ryfr IjPybfrNq(NQ_VQ,c,gehr,"");}ryfr erghea;}IjPnapryZbhfrYvfgrareNQ_VQ();};;jvaqbj.IjFrgEbyybssCnaryNQ_VQ=shapgvba(c){ine z="zbhfrzbir",q=qbphzrag,s=IjPurpxZbhfrCbfvgvbaNQ_VQ;c=IjTc(NQ_VQ,c);vs(jvaqbj.IjNqNQ_VQ&&jvaqbj.IjNqNQ_VQ.EbyybssCnary>-1)IjPnapryZbhfrYvfgrareNQ_VQ();vs(jvaqbj.IjNqNQ_VQ)jvaqbj.IjNqNQ_VQ.EbyybssCnary=c;gel{vs(q.nqqRiragYvfgrare)q.nqqRiragYvfgrare(z,s,snyfr);ryfr vs(q.nggnpuRirag)q.nggnpuRirag("ba"+z,s);}pngpu(r){}};;jvaqbj.IjPnapryZbhfrYvfgrareNQ_VQ=shapgvba(){ine z="zbhfrzbir",q=qbphzrag,s=IjPurpxZbhfrCbfvgvbaNQ_VQ;vs(jvaqbj.IjNqNQ_VQ)jvaqbj.IjNqNQ_VQ.EbyybssCnary=-1;gel{vs(q.erzbirRiragYvfgrare)q.erzbirRiragYvfgrare(z,s,snyfr);ryfr vs(q.qrgnpuRirag)q.qrgnpuRirag("ba"+z,s);}pngpu(r){}};;jvaqbj.IjNqNQ_VQ.IjTc=d2(n,c){ine nq=jvaqbj.IjNqNQ_VQ;vs(vfAnA(c)){sbe(ine v=0;v<nq.Cnaryf.yratgu;v++)vs(nq.Cnaryf[v].Anzr==c)erghea v;erghea 0;}erghea c;};;jvaqbj.IjNqNQ_VQ.IjTpy=d2(n,c,p){ine cn=jvaqbj.IjNqNQ_VQ.Cnaryf[IjTc(n,c)];vs(!cn)erghea 0;vs(vfAnA(p)){sbe(ine v=0;v<cn.Pyvpxguehf.yratgu;v++)vs(cn.Pyvpxguehf[v].Anzr==p)erghea v;erghea 0;}erghea p;};;jvaqbj.IjNqNQ_VQ.IjGenpr=d2(n,f){gel{vs(jvaqbj["Ij"+"QtQ"])jvaqbj["Ij"+"QtQ"](n,1,f);}pngpu(r){}};;jvaqbj.IjNqNQ_VQ.IjYvzvg1=d2(n,f){ine nq=jvaqbj.IjNqNQ_VQ,vh=f.fcyvg("/");sbe(ine v=0,p=0;v<vh.yratgu;v++){vs(vh[v].yratgu>0){vs(nq.FzV.yratgu>0)nq.FzV+="/";nq.FzV+=vh[v];nq.FtZ[nq.FtZ.yratgu]=snyfr;}}};;jvaqbj.IjNqNQ_VQ.IjYvzvg0=d2(n,f){ine nq=jvaqbj.IjNqNQ_VQ,vh=f.fcyvg("/");sbe(ine v=0;v<vh.yratgu;v++){vs(vh[v].yratgu>0){vs(nq.OvC.yratgu>0)nq.OvC+="/";nq.OvC+=vh[v];}}};;jvaqbj.IjNqNQ_VQ.IjRVST=d2(n,c){jvaqbj["IjCnayNQ_VQ_"+c+"_Bow"]=IjTrgBow("IjCnayNQ_VQ_"+c+"_Bow");vs(jvaqbj["IjCnayNQ_VQ_"+c+"_Bow"]==ahyy)frgGvzrbhg("IjRVST(NQ_VQ,"+c+")",jvaqbj.IjNqNQ_VQ.rvsg);};;jvaqbj.IjNqNQ_VQ.IjNavzSHC=d2(n,c){ine nq=jvaqbj.IjNqNQ_VQ;vs(c>nq.Cnaryf.yratgu)erghea;ine cna=nq.Cnaryf[c],nn=gehr,on=gehr,yn=gehr,en=gehr,cn=nq.Cnaryf[0],sf=nq.ShF,j=cn.Jvqgu,u=cn.Urvtug;vs(j=="100%"){j=sf;en=snyfr;yn=snyfr;}vs(u=="100%"){u=sf;nn=snyfr;on=snyfr;}vs(cn.YnY=="Y")yn=snyfr;vs(cn.YnY=="E")en=snyfr;vs(cn.GnY=="G")nn=snyfr;vs(cn.GnY=="O")on=snyfr;ine k=0,l=0;fjvgpu(nq.NshP%8){pnfr 0:oernx;pnfr 1:vs(nn)l=-sf;oernx;pnfr 2:k=j-sf;oernx;pnfr 3:vs(en)k=j;oernx;pnfr 4:k=j-sf;l=u-sf;oernx;pnfr 5:k=j-sf;vs(on)l=u;oernx;pnfr 6:l=u-sf;oernx;pnfr 7:vs(yn)k=-sf;l=u-sf;oernx;}vs(nq.NshP++ <nq.NshG)frgGvzrbhg(("IjNavzSHC(NQ_VQ,"+c+")"),nq.NshC);ryfr{k=-1000;l=k;}cna.YrsgBssfrg=k;cna.GbcBssfrg=l;IjNhErcb(n,c);};;jvaqbj.IjNqNQ_VQ.IjTrgErnyCbfvgvba=d2(n,b,j){erghea IjBOEC.nccyl(guvf,nethzragf);};;jvaqbj.IjNqNQ_VQ.IjPnapryGvzrbhg=d2(n,c){c=IjTc(n,c);ine cay=jvaqbj.IjNqNQ_VQ.Cnaryf[c];vs(cay&&cay.UgU!=""){pyrneGvzrbhg(cay.UgU);}};;jvaqbj.IjNqNQ_VQ.IjPnapryNyyGvzrbhgf=d2(n){vs(jvaqbj.IjNqNQ_VQ.YbpxGvzrbhgPunatrf)erghea;sbe(ine c=0;c<jvaqbj.IjNqNQ_VQ.bac;c++)IjPnapryGvzrbhg(n,c);};;jvaqbj.IjNqNQ_VQ.IjFgnegGvzrbhg=d2(n,c,bG){c=IjTc(n,c);ine cay=jvaqbj.IjNqNQ_VQ.Cnaryf[c];vs(cay&&((cay.UvqrGvzrbhgInyhr>0)||(nethzragf.yratgu==3&&bG>0))){pyrneGvzrbhg(cay.UgU);cay.UgU=frgGvzrbhg(cay.UvqrNpgvba,(nethzragf.yratgu==3?bG:cay.UvqrGvzrbhgInyhr));}};;jvaqbj.IjNqNQ_VQ.IjErfrgGvzrbhg=d2(n,c,bG){c=IjTc(n,c);IjPnapryGvzrbhg(n,c);riny("IjFgnegGvzrbhg(NQ_VQ,c"+(nethzragf.yratgu==3?",bG":"")+")");};;jvaqbj.IjNqNQ_VQ.IjErfrgNyyGvzrbhgf=d2(n){sbe(ine c=0;c<jvaqbj.IjNqNQ_VQ.bac;c++)IjErfrgGvzrbhg(n,c);};;jvaqbj.IjNqNQ_VQ.IjQrgnpure=d2(n,rig,sap){gel{vs(IjQVR5)riny("jvaqbj.qrgnpuRirag(\'ba"+rig+"\',"+sap+"NQ_VQ)");ryfr vs(!IjQVRZnp)riny("jvaqbj.erzbirRiragYvfgrare(\'"+rig+"\',"+sap+"NQ_VQ,snyfr)");}pngpu(r){}};;jvaqbj.IjNqNQ_VQ.IjPyrna';
+
+  var s26 = computeInputVariants('VC=74.125.75.1', 81);
+  var s27 = computeInputVariants('9.0  e115', 78);
+  var s28 = computeInputVariants('k',78);
+  var s29 = computeInputVariants(str2, 81);
+  var s30 = computeInputVariants(str3, 81);
+  var s31 = computeInputVariants('144631658', 78);
+  var s32 = computeInputVariants('Pbhagel=IIZ%3Q', 78);
+  var s33 = computeInputVariants('Pbhagel=IIZ=', 78);
+  var s34 = computeInputVariants('CersreerqPhygherCraqvat=', 78);
+  var s35 = computeInputVariants(str4, 78);
+  var s36 = computeInputVariants(str5, 78);
+  var s37 = computeInputVariants('__hgzp=144631658', 78);
+  var s38 = computeInputVariants('gvzrMbar=-8', 78);
+  var s39 = computeInputVariants('gvzrMbar=0', 78);
+  // var s40 = computeInputVariants(s15[i], 78);
+  var s41 = computeInputVariants('vachggrkg  QBZPbageby_cynprubyqre', 78);
+  var s42 = computeInputVariants('xrlqbja', 78);
+  var s43 = computeInputVariants('xrlhc', 78);
+  var s44 = computeInputVariants('uggc://zrffntvat.zlfcnpr.pbz/vaqrk.psz', 77);
+  var s45 = computeInputVariants('FrffvbaFgbentr=%7O%22GnoThvq%22%3N%7O%22thvq%22%3N1231367125017%7Q%7Q', 73);
+  var s46 = computeInputVariants(str6, 72);
+  var s47 = computeInputVariants('3.5.0.0', 70);
+  var s48 = computeInputVariants(str7, 70);
+  var s49 = computeInputVariants(str8, 70);
+  var s50 = computeInputVariants(str9, 70);
+  var s51 = computeInputVariants('NI%3Q1_CI%3Q1_PI%3Q1_EI%3Q1_HI%3Q1_HP%3Q1_IC%3Q0.0.0.0_IH%3Q0', 70);
+  var s52 = computeInputVariants('svz_zlfcnpr_ubzrcntr_abgybttrqva,svz_zlfcnpr_aba_HTP,svz_zlfcnpr_havgrq-fgngrf', 70);
+  var s53 = computeInputVariants('ybnqvat', 70);
+  var s54 = computeInputVariants('#', 68);
+  var s55 = computeInputVariants('ybnqrq', 68);
+  var s56 = computeInputVariants('pbybe', 49);
+  var s57 = computeInputVariants('uggc://sevraqf.zlfcnpr.pbz/vaqrk.psz', 44);
+
+  function runBlock1() {
+    for (var i = 0; i < 81; i++) {
+      re8.exec(s26[i]);
+    }
+    for (var i = 0; i < 78; i++) {
+      s27[i].replace(/(\s)+e/, '');
+      s28[i].replace(/./, '');
+      s29[i].replace(re17, '');
+      s30[i].replace(re17, '');
+      re8.exec(s31[i]);
+      re8.exec(s32[i]);
+      re8.exec(s33[i]);
+      re8.exec(s34[i]);
+      re8.exec(s35[i]);
+      re8.exec(s36[i]);
+      re8.exec(s37[i]);
+      re8.exec(s38[i]);
+      re8.exec(s39[i]);
+      /Fnsnev\/(\d+\.\d+)/.exec(s15[i]);
+      re3.exec(s41[i]);
+      re0.exec(s42[i]);
+      re0.exec(s43[i]);
+    }
+    for (var i = 0; i < 77; i++) {
+      s44[i].replace(re12, '');
+      re13.exec(s44[i]);
+    }
+    for (var i = 0; i < 73; i++) {
+      s45[i].replace(re18, '');
+    }
+    for (var i = 0; i < 72; i++) {
+      re1.exec(s46[i]);
+    }
+    for (var i = 0; i < 71; i++) {
+      re19.exec('');
+    }
+    for (var i = 0; i < 70; i++) {
+      s47[i].replace(re11, '');
+      s48[i].replace(/d1/g, '');
+      s49[i].replace(/NQ_VQ/g, '');
+      s50[i].replace(/d2/g, '');
+      s51[i].replace(/_/g, '');
+      s52[i].split(re20);
+      re21.exec(s53[i]);
+    }
+    for (var i = 0; i < 68; i++) {
+      re1.exec(s54[i]);
+      /(?:ZFVR.(\d+\.\d+))|(?:(?:Sversbk|TenaCnenqvfb|Vprjrnfry).(\d+\.\d+))|(?:Bcren.(\d+\.\d+))|(?:NccyrJroXvg.(\d+(?:\.\d+)?))/.exec(s15[i]);
+      /(Znp BF K)|(Jvaqbjf;)/.exec(s15[i]);
+      /Trpxb\/([0-9]+)/.exec(s15[i]);
+      re21.exec(s55[i]);
+    }
+    for (var i = 0; i < 49; i++) {
+      re16.exec(s56[i]);
+    }
+    for (var i = 0; i < 44; i++) {
+      s57[i].replace(re12, '');
+      re13.exec(s57[i]);
+    }
+  }
+  var re22 = /\bso_zrah\b/;
+  var re23 = /^(?:(?:[^:\/?#]+):)?(?:\/\/(?:[^\/?#]*))?([^?#]*)(?:\?([^#]*))?(?:#(.*))?/;
+  var re24 = /uggcf?:\/\/([^\/]+\.)?snprobbx\.pbz\//;
+  var re25 = /"/g;
+  var re26 = /^([^?#]+)(?:\?([^#]*))?(#.*)?/;
+  var s57a = computeInputVariants('fryrpgrq', 40);
+  var s58 = computeInputVariants('vachggrkg uvqqra_ryrz', 40);
+  var s59 = computeInputVariants('vachggrkg ', 40);
+  var s60 = computeInputVariants('vachggrkg', 40);
+  var s61 = computeInputVariants('uggc://jjj.snprobbx.pbz/', 40);
+  var s62 = computeInputVariants('uggc://jjj.snprobbx.pbz/ybtva.cuc', 40);
+  var s63 = computeInputVariants('Funer guvf tnqtrg', 40);
+  var s64 = computeInputVariants('uggc://jjj.tbbtyr.pbz/vt/qverpgbel', 40);
+  var s65 = computeInputVariants('419', 40);
+  var s66 = computeInputVariants('gvzrfgnzc', 40);
+
+  function runBlock2() {
+    for (var i = 0; i < 40; i++) {
+      s57a[i].replace(re14, '');
+      s57a[i].replace(re15, '');
+    }
+    for (var i = 0; i < 39; i++) {
+      s58[i].replace(/\buvqqra_ryrz\b/g, '');
+      re3.exec(s59[i]);
+      re3.exec(s60[i]);
+      re22.exec('HVYvaxOhggba');
+      re22.exec('HVYvaxOhggba_E');
+      re22.exec('HVYvaxOhggba_EJ');
+      re22.exec('zrah_ybtva_pbagnvare');
+      /\buvqqra_ryrz\b/.exec('vachgcnffjbeq');
+    }
+    for (var i = 0; i < 37; i++) {
+      re8.exec('111soqs57qo8o8480qo18sor2011r3n591q7s6s37r120904');
+      re8.exec('SbeprqRkcvengvba=633669315660164980');
+      re8.exec('FrffvbaQQS2=111soqs57qo8o8480qo18sor2011r3n591q7s6s37r120904');
+    }
+    for (var i = 0; i < 35; i++) {
+      'puvyq p1 svefg'.replace(re14, '');
+      'puvyq p1 svefg'.replace(re15, '');
+      'sylbhg pybfrq'.replace(re14, '');
+      'sylbhg pybfrq'.replace(re15, '');
+    }
+    for (var i = 0; i < 34; i++) {
+      re19.exec('gno2');
+      re19.exec('gno3');
+      re8.exec('44132r503660');
+      re8.exec('SbeprqRkcvengvba=633669316860113296');
+      re8.exec('AFP_zp_dfctwzs-aowb_80=44132r503660');
+      re8.exec('FrffvbaQQS2=s6r4579npn4rn2135s904r0s75pp1o5334p6s6pospo12696');
+      re8.exec('s6r4579npn4rn2135s904r0s75pp1o5334p6s6pospo12696');
+    }
+    for (var i = 0; i < 32; i++) {
+      /puebzr/i.exec(s15[i]);
+    }
+    for (var i = 0; i < 31; i++) {
+      s61[i].replace(re23, '');
+      re8.exec('SbeprqRkcvengvba=633669358527244818');
+      re8.exec('VC=66.249.85.130');
+      re8.exec('FrffvbaQQS2=s15q53p9n372sn76npr13o271n4s3p5r29p235746p908p58');
+      re8.exec('s15q53p9n372sn76npr13o271n4s3p5r29p235746p908p58');
+      re24.exec(s61[i]);
+    }
+    for (var i = 0; i < 30; i++) {
+      s65[i].replace(re6, '');
+      /(?:^|\s+)gvzrfgnzc(?:\s+|$)/.exec(s66[i]);
+      re7.exec(s65[i]);
+    }
+    for (var i = 0; i < 29; i++) {
+      s62[i].replace(re23, '');
+    }
+    for (var i = 0; i < 28; i++) {
+      s63[i].replace(re25, '');
+      s63[i].replace(re12, '');
+      re26.exec(s64[i]);
+    }
+  }
+  var re27 = /-\D/g;
+  var re28 = /\bnpgvingr\b/;
+  var re29 = /%2R/gi;
+  var re30 = /%2S/gi;
+  var re31 = /^(mu-(PA|GJ)|wn|xb)$/;
+  var re32 = /\s?;\s?/;
+  var re33 = /%\w?$/;
+  var re34 = /TNQP=([^;]*)/i;
+  var str10 = 'FrffvbaQQS2=111soqs57qo8o8480qo18sor2011r3n591q7s6s37r120904; ZFPhygher=VC=74.125.75.1&VCPhygher=ra-HF&CersreerqPhygher=ra-HF&CersreerqPhygherCraqvat=&Pbhagel=IIZ=&SbeprqRkcvengvba=633669315660164980&gvzrMbar=0&HFEYBP=DKWyLHAiMTH9AwHjWxAcqUx9GJ91oaEunJ4tIzyyqlMQo3IhqUW5D29xMG1IHlMQo3IhqUW5GzSgMG1Iozy0MJDtH3EuqTImWxEgLHAiMTH9BQN3WxkuqTy0qJEyCGZ3YwDkBGVzGT9hM2y0qJEyCF0kZwVhZQH3APMDo3A0LJkQo2EyCGx0ZQDmWyWyM2yiox5uoJH9D0R=';
+  var str11 = 'FrffvbaQQS2=111soqs57qo8o8480qo18sor2011r3n591q7s6s37r120904; __hgzm=144631658.1231363570.1.1.hgzpfe=(qverpg)|hgzppa=(qverpg)|hgzpzq=(abar); __hgzn=144631658.3426875219718084000.1231363570.1231363570.1231363570.1; __hgzo=144631658.0.10.1231363570; __hgzp=144631658; ZFPhygher=VC=74.125.75.1&VCPhygher=ra-HF&CersreerqPhygher=ra-HF&Pbhagel=IIZ%3Q&SbeprqRkcvengvba=633669315660164980&gvzrMbar=-8&HFEYBP=DKWyLHAiMTH9AwHjWxAcqUx9GJ91oaEunJ4tIzyyqlMQo3IhqUW5D29xMG1IHlMQo3IhqUW5GzSgMG1Iozy0MJDtH3EuqTImWxEgLHAiMTH9BQN3WxkuqTy0qJEyCGZ3YwDkBGVzGT9hM2y0qJEyCF0kZwVhZQH3APMDo3A0LJkQo2EyCGx0ZQDmWyWyM2yiox5uoJH9D0R%3Q';
+  var str12 = 'uggc://tbbtyrnqf.t.qbhoyrpyvpx.arg/cntrnq/nqf?pyvrag=pn-svz_zlfcnpr_zlfcnpr-ubzrcntr_wf&qg=1231363514065&uy=ra&nqfnsr=uvtu&br=hgs8&ahz_nqf=4&bhgchg=wf&nqgrfg=bss&pbeeryngbe=1231363514065&punaary=svz_zlfcnpr_ubzrcntr_abgybttrqva%2Psvz_zlfcnpr_aba_HTP%2Psvz_zlfcnpr_havgrq-fgngrf&hey=uggc%3N%2S%2Subzr.zlfcnpr.pbz%2Svaqrk.psz&nq_glcr=grkg&rvq=6083027&rn=0&sez=0&tn_ivq=1326469221.1231363557&tn_fvq=1231363557&tn_uvq=1114636509&synfu=9.0.115&h_u=768&h_j=1024&h_nu=738&h_nj=1024&h_pq=24&h_gm=-480&h_uvf=2&h_wnin=gehr&h_acyht=7&h_azvzr=22';
+  var str13 = 'ZFPhygher=VC=74.125.75.1&VCPhygher=ra-HF&CersreerqPhygher=ra-HF&Pbhagel=IIZ%3Q&SbeprqRkcvengvba=633669315660164980&gvzrMbar=-8&HFEYBP=DKWyLHAiMTH9AwHjWxAcqUx9GJ91oaEunJ4tIzyyqlMQo3IhqUW5D29xMG1IHlMQo3IhqUW5GzSgMG1Iozy0MJDtH3EuqTImWxEgLHAiMTH9BQN3WxkuqTy0qJEyCGZ3YwDkBGVzGT9hM2y0qJEyCF0kZwVhZQH3APMDo3A0LJkQo2EyCGx0ZQDmWyWyM2yiox5uoJH9D0R%3Q';
+  var str14 = 'ZFPhygher=VC=74.125.75.1&VCPhygher=ra-HF&CersreerqPhygher=ra-HF&CersreerqPhygherCraqvat=&Pbhagel=IIZ=&SbeprqRkcvengvba=633669315660164980&gvzrMbar=0&HFEYBP=DKWyLHAiMTH9AwHjWxAcqUx9GJ91oaEunJ4tIzyyqlMQo3IhqUW5D29xMG1IHlMQo3IhqUW5GzSgMG1Iozy0MJDtH3EuqTImWxEgLHAiMTH9BQN3WxkuqTy0qJEyCGZ3YwDkBGVzGT9hM2y0qJEyCF0kZwVhZQH3APMDo3A0LJkQo2EyCGx0ZQDmWyWyM2yiox5uoJH9D0R=';
+  var re35 = /[<>]/g;
+  var str15 = 'FrffvbaQQS2=s6r4579npn4rn2135s904r0s75pp1o5334p6s6pospo12696; ZFPhygher=VC=74.125.75.1&VCPhygher=ra-HF&CersreerqPhygher=ra-HF&CersreerqPhygherCraqvat=&Pbhagel=IIZ=&SbeprqRkcvengvba=633669316860113296&gvzrMbar=0&HFEYBP=DKWyLHAiMTH9AwHjWxAcqUx9GJ91oaEunJ4tIzyyqlMQo3IhqUW5D29xMG1IHlMQo3IhqUW5GzSgMG1Iozy0MJDtH3EuqTImWxEgLHAiMTH9BQN3WxkuqTy0qJEyCGZ3YwDkBGVzGT9hM2y0qJEyCF0kZwVhZQH3APMDo3A0LJkQo2EyCGx0ZQDmWyWyM2yiox5uoJH9D0R=; AFP_zp_dfctwzs-aowb_80=44132r503660';
+  var str16 = 'FrffvbaQQS2=s6r4579npn4rn2135s904r0s75pp1o5334p6s6pospo12696; AFP_zp_dfctwzs-aowb_80=44132r503660; __hgzm=144631658.1231363638.1.1.hgzpfe=(qverpg)|hgzppa=(qverpg)|hgzpzq=(abar); __hgzn=144631658.965867047679498800.1231363638.1231363638.1231363638.1; __hgzo=144631658.0.10.1231363638; __hgzp=144631658; ZFPhygher=VC=74.125.75.1&VCPhygher=ra-HF&CersreerqPhygher=ra-HF&Pbhagel=IIZ%3Q&SbeprqRkcvengvba=633669316860113296&gvzrMbar=-8&HFEYBP=DKWyLHAiMTH9AwHjWxAcqUx9GJ91oaEunJ4tIzyyqlMQo3IhqUW5D29xMG1IHlMQo3IhqUW5GzSgMG1Iozy0MJDtH3EuqTImWxEgLHAiMTH9BQN3WxkuqTy0qJEyCGZ3YwDkBGVzGT9hM2y0qJEyCF0kZwVhZQH3APMDo3A0LJkQo2EyCGx0ZQDmWyWyM2yiox5uoJH9D0R%3Q';
+  var str17 = 'uggc://tbbtyrnqf.t.qbhoyrpyvpx.arg/cntrnq/nqf?pyvrag=pn-svz_zlfcnpr_zlfcnpr-ubzrcntr_wf&qg=1231363621014&uy=ra&nqfnsr=uvtu&br=hgs8&ahz_nqf=4&bhgchg=wf&nqgrfg=bss&pbeeryngbe=1231363621014&punaary=svz_zlfcnpr_ubzrcntr_abgybttrqva%2Psvz_zlfcnpr_aba_HTP%2Psvz_zlfcnpr_havgrq-fgngrf&hey=uggc%3N%2S%2Scebsvyr.zlfcnpr.pbz%2Svaqrk.psz&nq_glcr=grkg&rvq=6083027&rn=0&sez=0&tn_ivq=348699119.1231363624&tn_fvq=1231363624&tn_uvq=895511034&synfu=9.0.115&h_u=768&h_j=1024&h_nu=738&h_nj=1024&h_pq=24&h_gm=-480&h_uvf=2&h_wnin=gehr&h_acyht=7&h_azvzr=22';
+  var str18 = 'uggc://jjj.yrobapbva.se/yv';
+  var str19 = 'ZFPhygher=VC=74.125.75.1&VCPhygher=ra-HF&CersreerqPhygher=ra-HF&Pbhagel=IIZ%3Q&SbeprqRkcvengvba=633669316860113296&gvzrMbar=-8&HFEYBP=DKWyLHAiMTH9AwHjWxAcqUx9GJ91oaEunJ4tIzyyqlMQo3IhqUW5D29xMG1IHlMQo3IhqUW5GzSgMG1Iozy0MJDtH3EuqTImWxEgLHAiMTH9BQN3WxkuqTy0qJEyCGZ3YwDkBGVzGT9hM2y0qJEyCF0kZwVhZQH3APMDo3A0LJkQo2EyCGx0ZQDmWyWyM2yiox5uoJH9D0R%3Q';
+  var str20 = 'ZFPhygher=VC=74.125.75.1&VCPhygher=ra-HF&CersreerqPhygher=ra-HF&CersreerqPhygherCraqvat=&Pbhagel=IIZ=&SbeprqRkcvengvba=633669316860113296&gvzrMbar=0&HFEYBP=DKWyLHAiMTH9AwHjWxAcqUx9GJ91oaEunJ4tIzyyqlMQo3IhqUW5D29xMG1IHlMQo3IhqUW5GzSgMG1Iozy0MJDtH3EuqTImWxEgLHAiMTH9BQN3WxkuqTy0qJEyCGZ3YwDkBGVzGT9hM2y0qJEyCF0kZwVhZQH3APMDo3A0LJkQo2EyCGx0ZQDmWyWyM2yiox5uoJH9D0R=';
+
+  var s67 = computeInputVariants('e115', 27);
+  var s68 = computeInputVariants('qvfcynl', 27);
+  var s69 = computeInputVariants('cbfvgvba', 27);
+  var s70 = computeInputVariants('uggc://jjj.zlfcnpr.pbz/', 27);
+  var s71 = computeInputVariants('cntrivrj', 27);
+  var s72 = computeInputVariants('VC=74.125.75.3', 27);
+  var s73 = computeInputVariants('ra', 27);
+  var s74 = computeInputVariants(str10, 27);
+  var s75 = computeInputVariants(str11, 27);
+  var s76 = computeInputVariants(str12, 27);
+  var s77 = computeInputVariants(str17, 27);
+  var s78 = computeInputVariants(str18, 27);
+
+  function runBlock3() {
+    for (var i = 0; i < 27; i++) {
+      s67[i].replace(/[A-Za-z]/g, '');
+    }
+    for (var i = 0; i < 23; i++) {
+      s68[i].replace(re27, '');
+      s69[i].replace(re27, '');
+    }
+    for (var i = 0; i < 22; i++) {
+      'unaqyr'.replace(re14, '');
+      'unaqyr'.replace(re15, '');
+      'yvar'.replace(re14, '');
+      'yvar'.replace(re15, '');
+      'cnerag puebzr6 fvatyr1 gno'.replace(re14, '');
+      'cnerag puebzr6 fvatyr1 gno'.replace(re15, '');
+      'fyvqre'.replace(re14, '');
+      'fyvqre'.replace(re15, '');
+      re28.exec('');
+    }
+    for (var i = 0; i < 21; i++) {
+      s70[i].replace(re12, '');
+      re13.exec(s70[i]);
+    }
+    for (var i = 0; i < 20; i++) {
+      s71[i].replace(re29, '');
+      s71[i].replace(re30, '');
+      re19.exec('ynfg');
+      re19.exec('ba svefg');
+      re8.exec(s72[i]);
+    }
+    for (var i = 0; i < 19; i++) {
+      re31.exec(s73[i]);
+    }
+    for (var i = 0; i < 18; i++) {
+      s74[i].split(re32);
+      s75[i].split(re32);
+      s76[i].replace(re33, '');
+      re8.exec('144631658.0.10.1231363570');
+      re8.exec('144631658.1231363570.1.1.hgzpfe=(qverpg)|hgzppa=(qverpg)|hgzpzq=(abar)');
+      re8.exec('144631658.3426875219718084000.1231363570.1231363570.1231363570.1');
+      re8.exec(str13);
+      re8.exec(str14);
+      re8.exec('__hgzn=144631658.3426875219718084000.1231363570.1231363570.1231363570.1');
+      re8.exec('__hgzo=144631658.0.10.1231363570');
+      re8.exec('__hgzm=144631658.1231363570.1.1.hgzpfe=(qverpg)|hgzppa=(qverpg)|hgzpzq=(abar)');
+      re34.exec(s74[i]);
+      re34.exec(s75[i]);
+    }
+    for (var i = 0; i < 17; i++) {
+      s15[i].match(/zfvr/gi);
+      s15[i].match(/bcren/gi);
+      str15.split(re32);
+      str16.split(re32);
+      'ohggba'.replace(re14, '');
+      'ohggba'.replace(re15, '');
+      'puvyq p1 svefg sylbhg pybfrq'.replace(re14, '');
+      'puvyq p1 svefg sylbhg pybfrq'.replace(re15, '');
+      'pvgvrf'.replace(re14, '');
+      'pvgvrf'.replace(re15, '');
+      'pybfrq'.replace(re14, '');
+      'pybfrq'.replace(re15, '');
+      'qry'.replace(re14, '');
+      'qry'.replace(re15, '');
+      'uqy_zba'.replace(re14, '');
+      'uqy_zba'.replace(re15, '');
+      s77[i].replace(re33, '');
+      s78[i].replace(/%3P/g, '');
+      s78[i].replace(/%3R/g, '');
+      s78[i].replace(/%3q/g, '');
+      s78[i].replace(re35, '');
+      'yvaxyvfg16'.replace(re14, '');
+      'yvaxyvfg16'.replace(re15, '');
+      'zvahf'.replace(re14, '');
+      'zvahf'.replace(re15, '');
+      'bcra'.replace(re14, '');
+      'bcra'.replace(re15, '');
+      'cnerag puebzr5 fvatyr1 ps NU'.replace(re14, '');
+      'cnerag puebzr5 fvatyr1 ps NU'.replace(re15, '');
+      'cynlre'.replace(re14, '');
+      'cynlre'.replace(re15, '');
+      'cyhf'.replace(re14, '');
+      'cyhf'.replace(re15, '');
+      'cb_uqy'.replace(re14, '');
+      'cb_uqy'.replace(re15, '');
+      'hyJVzt'.replace(re14, '');
+      'hyJVzt'.replace(re15, '');
+      re8.exec('144631658.0.10.1231363638');
+      re8.exec('144631658.1231363638.1.1.hgzpfe=(qverpg)|hgzppa=(qverpg)|hgzpzq=(abar)');
+      re8.exec('144631658.965867047679498800.1231363638.1231363638.1231363638.1');
+      re8.exec('4413268q3660');
+      re8.exec('4ss747o77904333q374or84qrr1s9r0nprp8r5q81534o94n');
+      re8.exec('SbeprqRkcvengvba=633669321699093060');
+      re8.exec('VC=74.125.75.20');
+      re8.exec(str19);
+      re8.exec(str20);
+      re8.exec('AFP_zp_tfwsbrg-aowb_80=4413268q3660');
+      re8.exec('FrffvbaQQS2=4ss747o77904333q374or84qrr1s9r0nprp8r5q81534o94n');
+      re8.exec('__hgzn=144631658.965867047679498800.1231363638.1231363638.1231363638.1');
+      re8.exec('__hgzo=144631658.0.10.1231363638');
+      re8.exec('__hgzm=144631658.1231363638.1.1.hgzpfe=(qverpg)|hgzppa=(qverpg)|hgzpzq=(abar)');
+      re34.exec(str15);
+      re34.exec(str16);
+    }
+  }
+  var re36 = /uers|fep|fryrpgrq/;
+  var re37 = /\s*([+>~\s])\s*([a-zA-Z#.*:\[])/g;
+  var re38 = /^(\w+|\*)$/;
+  var str21 = 'FrffvbaQQS2=s15q53p9n372sn76npr13o271n4s3p5r29p235746p908p58; ZFPhygher=VC=66.249.85.130&VCPhygher=ra-HF&CersreerqPhygher=ra-HF&CersreerqPhygherCraqvat=&Pbhagel=IIZ=&SbeprqRkcvengvba=633669358527244818&gvzrMbar=0&HFEYBP=DKWyLHAiMTH9AwHjWxAcqUx9GJ91oaEunJ4tIzyyqlMQo3IhqUW5D29xMG1IHlMQo3IhqUW5GzSgMG1Iozy0MJDtH3EuqTImWxEgLHAiMTH9BQN3WxkuqTy0qJEyCGZ3YwDkBGVzGT9hM2y0qJEyCF0kZwVhZQH3APMDo3A0LJkQo2EyCGx0ZQDmWyWyM2yiox5uoJH9D0R=';
+  var str22 = 'FrffvbaQQS2=s15q53p9n372sn76npr13o271n4s3p5r29p235746p908p58; __hgzm=144631658.1231367822.1.1.hgzpfe=(qverpg)|hgzppa=(qverpg)|hgzpzq=(abar); __hgzn=144631658.4127520630321984500.1231367822.1231367822.1231367822.1; __hgzo=144631658.0.10.1231367822; __hgzp=144631658; ZFPhygher=VC=66.249.85.130&VCPhygher=ra-HF&CersreerqPhygher=ra-HF&Pbhagel=IIZ%3Q&SbeprqRkcvengvba=633669358527244818&gvzrMbar=-8&HFEYBP=DKWyLHAiMTH9AwHjWxAcqUx9GJ91oaEunJ4tIzyyqlMQo3IhqUW5D29xMG1IHlMQo3IhqUW5GzSgMG1Iozy0MJDtH3EuqTImWxEgLHAiMTH9BQN3WxkuqTy0qJEyCGZ3YwDkBGVzGT9hM2y0qJEyCF0kZwVhZQH3APMDo3A0LJkQo2EyCGx0ZQDmWyWyM2yiox5uoJH9D0R%3Q';
+  var str23 = 'uggc://tbbtyrnqf.t.qbhoyrpyvpx.arg/cntrnq/nqf?pyvrag=pn-svz_zlfcnpr_zlfcnpr-ubzrcntr_wf&qg=1231367803797&uy=ra&nqfnsr=uvtu&br=hgs8&ahz_nqf=4&bhgchg=wf&nqgrfg=bss&pbeeryngbe=1231367803797&punaary=svz_zlfcnpr_ubzrcntr_abgybttrqva%2Psvz_zlfcnpr_aba_HTP%2Psvz_zlfcnpr_havgrq-fgngrf&hey=uggc%3N%2S%2Szrffntvat.zlfcnpr.pbz%2Svaqrk.psz&nq_glcr=grkg&rvq=6083027&rn=0&sez=0&tn_ivq=1192552091.1231367807&tn_fvq=1231367807&tn_uvq=1155446857&synfu=9.0.115&h_u=768&h_j=1024&h_nu=738&h_nj=1024&h_pq=24&h_gm=-480&h_uvf=2&h_wnin=gehr&h_acyht=7&h_azvzr=22';
+  var str24 = 'ZFPhygher=VC=66.249.85.130&VCPhygher=ra-HF&CersreerqPhygher=ra-HF&Pbhagel=IIZ%3Q&SbeprqRkcvengvba=633669358527244818&gvzrMbar=-8&HFEYBP=DKWyLHAiMTH9AwHjWxAcqUx9GJ91oaEunJ4tIzyyqlMQo3IhqUW5D29xMG1IHlMQo3IhqUW5GzSgMG1Iozy0MJDtH3EuqTImWxEgLHAiMTH9BQN3WxkuqTy0qJEyCGZ3YwDkBGVzGT9hM2y0qJEyCF0kZwVhZQH3APMDo3A0LJkQo2EyCGx0ZQDmWyWyM2yiox5uoJH9D0R%3Q';
+  var str25 = 'ZFPhygher=VC=66.249.85.130&VCPhygher=ra-HF&CersreerqPhygher=ra-HF&CersreerqPhygherCraqvat=&Pbhagel=IIZ=&SbeprqRkcvengvba=633669358527244818&gvzrMbar=0&HFEYBP=DKWyLHAiMTH9AwHjWxAcqUx9GJ91oaEunJ4tIzyyqlMQo3IhqUW5D29xMG1IHlMQo3IhqUW5GzSgMG1Iozy0MJDtH3EuqTImWxEgLHAiMTH9BQN3WxkuqTy0qJEyCGZ3YwDkBGVzGT9hM2y0qJEyCF0kZwVhZQH3APMDo3A0LJkQo2EyCGx0ZQDmWyWyM2yiox5uoJH9D0R=';
+  var str26 = 'hy.ynat-fryrpgbe';
+  var re39 = /\\/g;
+  var re40 = / /g;
+  var re41 = /\/\xc4\/t/;
+  var re42 = /\/\xd6\/t/;
+  var re43 = /\/\xdc\/t/;
+  var re44 = /\/\xdf\/t/;
+  var re45 = /\/\xe4\/t/;
+  var re46 = /\/\xf6\/t/;
+  var re47 = /\/\xfc\/t/;
+  var re48 = /\W/g;
+  var re49 = /uers|fep|fglyr/;
+  var s79 = computeInputVariants(str21, 16);
+  var s80 = computeInputVariants(str22, 16);
+  var s81 = computeInputVariants(str23, 16);
+  var s82 = computeInputVariants(str26, 16);
+
+  function runBlock4() {
+    for (var i = 0; i < 16; i++) {
+      ''.replace(/\*/g, '');
+      /\bnpgvir\b/.exec('npgvir');
+      /sversbk/i.exec(s15[i]);
+      re36.exec('glcr');
+      /zfvr/i.exec(s15[i]);
+      /bcren/i.exec(s15[i]);
+    }
+    for (var i = 0; i < 15; i++) {
+      s79[i].split(re32);
+      s80[i].split(re32);
+      'uggc://ohyyrgvaf.zlfcnpr.pbz/vaqrk.psz'.replace(re12, '');
+      s81[i].replace(re33, '');
+      'yv'.replace(re37, '');
+      'yv'.replace(re18, '');
+      re8.exec('144631658.0.10.1231367822');
+      re8.exec('144631658.1231367822.1.1.hgzpfe=(qverpg)|hgzppa=(qverpg)|hgzpzq=(abar)');
+      re8.exec('144631658.4127520630321984500.1231367822.1231367822.1231367822.1');
+      re8.exec(str24);
+      re8.exec(str25);
+      re8.exec('__hgzn=144631658.4127520630321984500.1231367822.1231367822.1231367822.1');
+      re8.exec('__hgzo=144631658.0.10.1231367822');
+      re8.exec('__hgzm=144631658.1231367822.1.1.hgzpfe=(qverpg)|hgzppa=(qverpg)|hgzpzq=(abar)');
+      re34.exec(s79[i]);
+      re34.exec(s80[i]);
+      /\.([\w-]+)|\[(\w+)(?:([!*^$~|]?=)["']?(.*?)["']?)?\]|:([\w-]+)(?:\(["']?(.*?)?["']?\)|$)/g.exec(s82[i]);
+      re13.exec('uggc://ohyyrgvaf.zlfcnpr.pbz/vaqrk.psz');
+      re38.exec('yv');
+    }
+    for (var i = 0; i < 14; i++) {
+      ''.replace(re18, '');
+      '9.0  e115'.replace(/(\s+e|\s+o[0-9]+)/, '');
+      'Funer guvf tnqtrg'.replace(/</g, '');
+      'Funer guvf tnqtrg'.replace(/>/g, '');
+      'Funer guvf tnqtrg'.replace(re39, '');
+      'uggc://cebsvyrrqvg.zlfcnpr.pbz/vaqrk.psz'.replace(re12, '');
+      'grnfre'.replace(re40, '');
+      'grnfre'.replace(re41, '');
+      'grnfre'.replace(re42, '');
+      'grnfre'.replace(re43, '');
+      'grnfre'.replace(re44, '');
+      'grnfre'.replace(re45, '');
+      'grnfre'.replace(re46, '');
+      'grnfre'.replace(re47, '');
+      'grnfre'.replace(re48, '');
+      re16.exec('znetva-gbc');
+      re16.exec('cbfvgvba');
+      re19.exec('gno1');
+      re9.exec('qz');
+      re9.exec('qg');
+      re9.exec('zbqobk');
+      re9.exec('zbqobkva');
+      re9.exec('zbqgvgyr');
+      re13.exec('uggc://cebsvyrrqvg.zlfcnpr.pbz/vaqrk.psz');
+      re26.exec('/vt/znvytnqtrg');
+      re49.exec('glcr');
+    }
+  }
+  var re50 = /(?:^|\s+)fryrpgrq(?:\s+|$)/;
+  var re51 = /\&/g;
+  var re52 = /\+/g;
+  var re53 = /\?/g;
+  var re54 = /\t/g;
+  var re55 = /(\$\{nqiHey\})|(\$nqiHey\b)/g;
+  var re56 = /(\$\{cngu\})|(\$cngu\b)/g;
+  function runBlock5() {
+    for (var i = 0; i < 13; i++) {
+      'purpx'.replace(re14, '');
+      'purpx'.replace(re15, '');
+      'pvgl'.replace(re14, '');
+      'pvgl'.replace(re15, '');
+      'qrpe fyvqrgrkg'.replace(re14, '');
+      'qrpe fyvqrgrkg'.replace(re15, '');
+      'svefg fryrpgrq'.replace(re14, '');
+      'svefg fryrpgrq'.replace(re15, '');
+      'uqy_rag'.replace(re14, '');
+      'uqy_rag'.replace(re15, '');
+      'vape fyvqrgrkg'.replace(re14, '');
+      'vape fyvqrgrkg'.replace(re15, '');
+      'vachggrkg QBZPbageby_cynprubyqre'.replace(re5, '');
+      'cnerag puebzr6 fvatyr1 gno fryrpgrq'.replace(re14, '');
+      'cnerag puebzr6 fvatyr1 gno fryrpgrq'.replace(re15, '');
+      'cb_guz'.replace(re14, '');
+      'cb_guz'.replace(re15, '');
+      'fhozvg'.replace(re14, '');
+      'fhozvg'.replace(re15, '');
+      re50.exec('');
+      /NccyrJroXvg\/([^\s]*)/.exec(s15[i]);
+      /XUGZY/.exec(s15[i]);
+    }
+    for (var i = 0; i < 12; i++) {
+      '${cebg}://${ubfg}${cngu}/${dz}'.replace(/(\$\{cebg\})|(\$cebg\b)/g, '');
+      '1'.replace(re40, '');
+      '1'.replace(re10, '');
+      '1'.replace(re51, '');
+      '1'.replace(re52, '');
+      '1'.replace(re53, '');
+      '1'.replace(re39, '');
+      '1'.replace(re54, '');
+      '9.0  e115'.replace(/^(.*)\..*$/, '');
+      '9.0  e115'.replace(/^.*e(.*)$/, '');
+      '<!-- ${nqiHey} -->'.replace(re55, '');
+      '<fpevcg glcr="grkg/wninfpevcg" fep="${nqiHey}"></fpevcg>'.replace(re55, '');
+      s21[i].replace(/^.*\s+(\S+\s+\S+$)/, '');
+      'tzk%2Subzrcntr%2Sfgneg%2Sqr%2S'.replace(re30, '');
+      'tzk'.replace(re30, '');
+      'uggc://${ubfg}${cngu}/${dz}'.replace(/(\$\{ubfg\})|(\$ubfg\b)/g, '');
+      'uggc://nqpyvrag.hvzfrei.arg${cngu}/${dz}'.replace(re56, '');
+      'uggc://nqpyvrag.hvzfrei.arg/wf.at/${dz}'.replace(/(\$\{dz\})|(\$dz\b)/g, '');
+      'frpgvba'.replace(re29, '');
+      'frpgvba'.replace(re30, '');
+      'fvgr'.replace(re29, '');
+      'fvgr'.replace(re30, '');
+      'fcrpvny'.replace(re29, '');
+      'fcrpvny'.replace(re30, '');
+      re36.exec('anzr');
+      /e/.exec('9.0  e115');
+    }
+  }
+  var re57 = /##yv4##/gi;
+  var re58 = /##yv16##/gi;
+  var re59 = /##yv19##/gi;
+  var str27 = '<hy pynff="nqi">##yv4##Cbjreshy Zvpebfbsg grpuabybtl urycf svtug fcnz naq vzcebir frphevgl.##yv19##Trg zber qbar gunaxf gb terngre rnfr naq fcrrq.##yv16##Ybgf bs fgbentr &#40;5 TO&#41; - zber pbby fghss ba gur jnl.##OE## ##OE## ##N##Yrnea zber##/N##</hy>';
+  var str28 = '<hy pynff="nqi"><yv vq="YvOYG4" fglyr="onpxtebhaq-vzntr:hey(uggc://vzt.jykef.pbz/~Yvir.FvgrPbagrag.VQ/~14.2.1230/~/~/~/oyg4.cat)">Cbjreshy Zvpebfbsg grpuabybtl urycf svtug fcnz naq vzcebir frphevgl.##yv19##Trg zber qbar gunaxf gb terngre rnfr naq fcrrq.##yv16##Ybgf bs fgbentr &#40;5 TO&#41; - zber pbby fghss ba gur jnl.##OE## ##OE## ##N##Yrnea zber##/N##</hy>';
+  var str29 = '<hy pynff="nqi"><yv vq="YvOYG4" fglyr="onpxtebhaq-vzntr:hey(uggc://vzt.jykef.pbz/~Yvir.FvgrPbagrag.VQ/~14.2.1230/~/~/~/oyg4.cat)">Cbjreshy Zvpebfbsg grpuabybtl urycf svtug fcnz naq vzcebir frphevgl.##yv19##Trg zber qbar gunaxf gb terngre rnfr naq fcrrq.<yv vq="YvOYG16" fglyr="onpxtebhaq-vzntr:hey(uggc://vzt.jykef.pbz/~Yvir.FvgrPbagrag.VQ/~14.2.1230/~/~/~/oyg16.cat)">Ybgf bs fgbentr &#40;5 TO&#41; - zber pbby fghss ba gur jnl.##OE## ##OE## ##N##Yrnea zber##/N##</hy>';
+  var str30 = '<hy pynff="nqi"><yv vq="YvOYG4" fglyr="onpxtebhaq-vzntr:hey(uggc://vzt.jykef.pbz/~Yvir.FvgrPbagrag.VQ/~14.2.1230/~/~/~/oyg4.cat)">Cbjreshy Zvpebfbsg grpuabybtl urycf svtug fcnz naq vzcebir frphevgl.<yv vq="YvOYG19" fglyr="onpxtebhaq-vzntr:hey(uggc://vzt.jykef.pbz/~Yvir.FvgrPbagrag.VQ/~14.2.1230/~/~/~/oyg19.cat)">Trg zber qbar gunaxf gb terngre rnfr naq fcrrq.<yv vq="YvOYG16" fglyr="onpxtebhaq-vzntr:hey(uggc://vzt.jykef.pbz/~Yvir.FvgrPbagrag.VQ/~14.2.1230/~/~/~/oyg16.cat)">Ybgf bs fgbentr &#40;5 TO&#41; - zber pbby fghss ba gur jnl.##OE## ##OE## ##N##Yrnea zber##/N##</hy>';
+  var str31 = '<hy pynff="nqi"><yv vq="YvOYG4" fglyr="onpxtebhaq-vzntr:hey(uggc://vzt.jykef.pbz/~Yvir.FvgrPbagrag.VQ/~14.2.1230/~/~/~/oyg4.cat)">Cbjreshy Zvpebfbsg grpuabybtl urycf svtug fcnz naq vzcebir frphevgl.<yv vq="YvOYG19" fglyr="onpxtebhaq-vzntr:hey(uggc://vzt.jykef.pbz/~Yvir.FvgrPbagrag.VQ/~14.2.1230/~/~/~/oyg19.cat)">Trg zber qbar gunaxf gb terngre rnfr naq fcrrq.<yv vq="YvOYG16" fglyr="onpxtebhaq-vzntr:hey(uggc://vzt.jykef.pbz/~Yvir.FvgrPbagrag.VQ/~14.2.1230/~/~/~/oyg16.cat)">Ybgf bs fgbentr &#40;5 TO&#41; - zber pbby fghss ba gur jnl.<oe> <oe> ##N##Yrnea zber##/N##</hy>';
+  var str32 = '<hy pynff="nqi"><yv vq="YvOYG4" fglyr="onpxtebhaq-vzntr:hey(uggc://vzt.jykef.pbz/~Yvir.FvgrPbagrag.VQ/~14.2.1230/~/~/~/oyg4.cat)">Cbjreshy Zvpebfbsg grpuabybtl urycf svtug fcnz naq vzcebir frphevgl.<yv vq="YvOYG19" fglyr="onpxtebhaq-vzntr:hey(uggc://vzt.jykef.pbz/~Yvir.FvgrPbagrag.VQ/~14.2.1230/~/~/~/oyg19.cat)">Trg zber qbar gunaxf gb terngre rnfr naq fcrrq.<yv vq="YvOYG16" fglyr="onpxtebhaq-vzntr:hey(uggc://vzt.jykef.pbz/~Yvir.FvgrPbagrag.VQ/~14.2.1230/~/~/~/oyg16.cat)">Ybgf bs fgbentr &#40;5 TO&#41; - zber pbby fghss ba gur jnl.<oe> <oe> <n uers="uggc://znvy.yvir.pbz/znvy/nobhg.nfck" gnetrg="_oynax">Yrnea zber##/N##</hy>';
+  var str33 = 'Bar Jvaqbjf Yvir VQ trgf lbh vagb <o>Ubgznvy</o>, <o>Zrffratre</o>, <o>Kobk YVIR</o> \u2014 naq bgure cynprf lbh frr #~#argjbexybtb#~#';
+  var re60 = /(?:^|\s+)bss(?:\s+|$)/;
+  var re61 = /^(([^:\/?#]+):)?(\/\/([^\/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?$/;
+  var re62 = /^[^<]*(<(.|\s)+>)[^>]*$|^#(\w+)$/;
+  var str34 = '${1}://${2}${3}${4}${5}';
+  var str35 = ' O=6gnyg0g4znrrn&o=3&f=gc; Q=_lyu=K3bQZGSxnT4lZzD3OS9GNmV3ZGLkAQxRpTyxNmRlZmRmAmNkAQLRqTImqNZjOUEgpTjQnJ5xMKtgoN--; SCF=qy';
+  var s83 = computeInputVariants(str27, 11);
+  var s84 = computeInputVariants(str28, 11);
+  var s85 = computeInputVariants(str29, 11);
+  var s86 = computeInputVariants(str30, 11);
+  var s87 = computeInputVariants(str31, 11);
+  var s88 = computeInputVariants(str32, 11);
+  var s89 = computeInputVariants(str33, 11);
+  var s90 = computeInputVariants(str34, 11);
+
+  function runBlock6() {
+    for (var i = 0; i < 11; i++) {
+      s83[i].replace(/##yv0##/gi, '');
+      s83[i].replace(re57, '');
+      s84[i].replace(re58, '');
+      s85[i].replace(re59, '');
+      s86[i].replace(/##\/o##/gi, '');
+      s86[i].replace(/##\/v##/gi, '');
+      s86[i].replace(/##\/h##/gi, '');
+      s86[i].replace(/##o##/gi, '');
+      s86[i].replace(/##oe##/gi, '');
+      s86[i].replace(/##v##/gi, '');
+      s86[i].replace(/##h##/gi, '');
+      s87[i].replace(/##n##/gi, '');
+      s88[i].replace(/##\/n##/gi, '');
+      s89[i].replace(/#~#argjbexybtb#~#/g, '');
+      / Zbovyr\//.exec(s15[i]);
+      /##yv1##/gi.exec(s83[i]);
+      /##yv10##/gi.exec(s84[i]);
+      /##yv11##/gi.exec(s84[i]);
+      /##yv12##/gi.exec(s84[i]);
+      /##yv13##/gi.exec(s84[i]);
+      /##yv14##/gi.exec(s84[i]);
+      /##yv15##/gi.exec(s84[i]);
+      re58.exec(s84[i]);
+      /##yv17##/gi.exec(s85[i]);
+      /##yv18##/gi.exec(s85[i]);
+      re59.exec(s85[i]);
+      /##yv2##/gi.exec(s83[i]);
+      /##yv20##/gi.exec(s86[i]);
+      /##yv21##/gi.exec(s86[i]);
+      /##yv22##/gi.exec(s86[i]);
+      /##yv23##/gi.exec(s86[i]);
+      /##yv3##/gi.exec(s83[i]);
+      re57.exec(s83[i]);
+      /##yv5##/gi.exec(s84[i]);
+      /##yv6##/gi.exec(s84[i]);
+      /##yv7##/gi.exec(s84[i]);
+      /##yv8##/gi.exec(s84[i]);
+      /##yv9##/gi.exec(s84[i]);
+      re8.exec('473qq1rs0n2r70q9qo1pq48n021s9468ron90nps048p4p29');
+      re8.exec('SbeprqRkcvengvba=633669325184628362');
+      re8.exec('FrffvbaQQS2=473qq1rs0n2r70q9qo1pq48n021s9468ron90nps048p4p29');
+      /AbxvnA[^\/]*/.exec(s15[i]);
+    }
+    for (var i = 0; i < 10; i++) {
+      ' bss'.replace(/(?:^|\s+)bss(?:\s+|$)/g, '');
+      s90[i].replace(/(\$\{0\})|(\$0\b)/g, '');
+      s90[i].replace(/(\$\{1\})|(\$1\b)/g, '');
+      s90[i].replace(/(\$\{pbzcyrgr\})|(\$pbzcyrgr\b)/g, '');
+      s90[i].replace(/(\$\{sentzrag\})|(\$sentzrag\b)/g, '');
+      s90[i].replace(/(\$\{ubfgcbeg\})|(\$ubfgcbeg\b)/g, '');
+      s90[i].replace(re56, '');
+      s90[i].replace(/(\$\{cebgbpby\})|(\$cebgbpby\b)/g, '');
+      s90[i].replace(/(\$\{dhrel\})|(\$dhrel\b)/g, '');
+      'nqfvmr'.replace(re29, '');
+      'nqfvmr'.replace(re30, '');
+      'uggc://${2}${3}${4}${5}'.replace(/(\$\{2\})|(\$2\b)/g, '');
+      'uggc://wf.hv-cbegny.qr${3}${4}${5}'.replace(/(\$\{3\})|(\$3\b)/g, '');
+      'arjf'.replace(re40, '');
+      'arjf'.replace(re41, '');
+      'arjf'.replace(re42, '');
+      'arjf'.replace(re43, '');
+      'arjf'.replace(re44, '');
+      'arjf'.replace(re45, '');
+      'arjf'.replace(re46, '');
+      'arjf'.replace(re47, '');
+      'arjf'.replace(re48, '');
+      / PC=i=(\d+)&oe=(.)/.exec(str35);
+      re60.exec(' ');
+      re60.exec(' bss');
+      re60.exec('');
+      re19.exec(' ');
+      re19.exec('svefg ba');
+      re19.exec('ynfg vtaber');
+      re19.exec('ba');
+      re9.exec('scnq so ');
+      re9.exec('zrqvgobk');
+      re9.exec('hsgy');
+      re9.exec('lhv-h');
+      /Fnsnev|Xbadhrebe|XUGZY/gi.exec(s15[i]);
+      re61.exec('uggc://wf.hv-cbegny.qr/tzk/ubzr/wf/20080602/onfr.wf');
+      re62.exec('#Ybtva_rznvy');
+    }
+  }
+  var re63 = /\{0\}/g;
+  var str36 = 'FrffvbaQQS2=4ss747o77904333q374or84qrr1s9r0nprp8r5q81534o94n; ZFPhygher=VC=74.125.75.20&VCPhygher=ra-HF&CersreerqPhygher=ra-HF&CersreerqPhygherCraqvat=&Pbhagel=IIZ=&SbeprqRkcvengvba=633669321699093060&gvzrMbar=0&HFEYBP=DKWyLHAiMTH9AwHjWxAcqUx9GJ91oaEunJ4tIzyyqlMQo3IhqUW5D29xMG1IHlMQo3IhqUW5GzSgMG1Iozy0MJDtH3EuqTImWxEgLHAiMTH9BQN3WxkuqTy0qJEyCGZ3YwDkBGVzGT9hM2y0qJEyCF0kZwVhZQH3APMDo3A0LJkQo2EyCGx0ZQDmWyWyM2yiox5uoJH9D0R=; AFP_zp_tfwsbrg-aowb_80=4413268q3660';
+  var str37 = 'FrffvbaQQS2=4ss747o77904333q374or84qrr1s9r0nprp8r5q81534o94n; AFP_zp_tfwsbrg-aowb_80=4413268q3660; __hgzm=144631658.1231364074.1.1.hgzpfe=(qverpg)|hgzppa=(qverpg)|hgzpzq=(abar); __hgzn=144631658.2294274870215848400.1231364074.1231364074.1231364074.1; __hgzo=144631658.0.10.1231364074; __hgzp=144631658; ZFPhygher=VC=74.125.75.20&VCPhygher=ra-HF&CersreerqPhygher=ra-HF&Pbhagel=IIZ%3Q&SbeprqRkcvengvba=633669321699093060&gvzrMbar=-8&HFEYBP=DKWyLHAiMTH9AwHjWxAcqUx9GJ91oaEunJ4tIzyyqlMQo3IhqUW5D29xMG1IHlMQo3IhqUW5GzSgMG1Iozy0MJDtH3EuqTImWxEgLHAiMTH9BQN3WxkuqTy0qJEyCGZ3YwDkBGVzGT9hM2y0qJEyCF0kZwVhZQH3APMDo3A0LJkQo2EyCGx0ZQDmWyWyM2yiox5uoJH9D0R%3Q';
+  var str38 = 'uggc://tbbtyrnqf.t.qbhoyrpyvpx.arg/cntrnq/nqf?pyvrag=pn-svz_zlfcnpr_zlfcnpr-ubzrcntr_wf&qg=1231364057761&uy=ra&nqfnsr=uvtu&br=hgs8&ahz_nqf=4&bhgchg=wf&nqgrfg=bss&pbeeryngbe=1231364057761&punaary=svz_zlfcnpr_ubzrcntr_abgybttrqva%2Psvz_zlfcnpr_aba_HTP%2Psvz_zlfcnpr_havgrq-fgngrf&hey=uggc%3N%2S%2Ssevraqf.zlfcnpr.pbz%2Svaqrk.psz&nq_glcr=grkg&rvq=6083027&rn=0&sez=0&tn_ivq=1667363813.1231364061&tn_fvq=1231364061&tn_uvq=1917563877&synfu=9.0.115&h_u=768&h_j=1024&h_nu=738&h_nj=1024&h_pq=24&h_gm=-480&h_uvf=2&h_wnin=gehr&h_acyht=7&h_azvzr=22';
+  var str39 = 'ZFPhygher=VC=74.125.75.20&VCPhygher=ra-HF&CersreerqPhygher=ra-HF&Pbhagel=IIZ%3Q&SbeprqRkcvengvba=633669321699093060&gvzrMbar=-8&HFEYBP=DKWyLHAiMTH9AwHjWxAcqUx9GJ91oaEunJ4tIzyyqlMQo3IhqUW5D29xMG1IHlMQo3IhqUW5GzSgMG1Iozy0MJDtH3EuqTImWxEgLHAiMTH9BQN3WxkuqTy0qJEyCGZ3YwDkBGVzGT9hM2y0qJEyCF0kZwVhZQH3APMDo3A0LJkQo2EyCGx0ZQDmWyWyM2yiox5uoJH9D0R%3Q';
+  var str40 = 'ZFPhygher=VC=74.125.75.20&VCPhygher=ra-HF&CersreerqPhygher=ra-HF&CersreerqPhygherCraqvat=&Pbhagel=IIZ=&SbeprqRkcvengvba=633669321699093060&gvzrMbar=0&HFEYBP=DKWyLHAiMTH9AwHjWxAcqUx9GJ91oaEunJ4tIzyyqlMQo3IhqUW5D29xMG1IHlMQo3IhqUW5GzSgMG1Iozy0MJDtH3EuqTImWxEgLHAiMTH9BQN3WxkuqTy0qJEyCGZ3YwDkBGVzGT9hM2y0qJEyCF0kZwVhZQH3APMDo3A0LJkQo2EyCGx0ZQDmWyWyM2yiox5uoJH9D0R=';
+  var s91 = computeInputVariants(str36, 9);
+  var s92 = computeInputVariants(str37, 9);
+  var s93 = computeInputVariants(str38, 9);
+  function runBlock7() {
+    for (var i = 0; i < 9; i++) {
+      '0'.replace(re40, '');
+      '0'.replace(re10, '');
+      '0'.replace(re51, '');
+      '0'.replace(re52, '');
+      '0'.replace(re53, '');
+      '0'.replace(re39, '');
+      '0'.replace(re54, '');
+      'Lrf'.replace(re40, '');
+      'Lrf'.replace(re10, '');
+      'Lrf'.replace(re51, '');
+      'Lrf'.replace(re52, '');
+      'Lrf'.replace(re53, '');
+      'Lrf'.replace(re39, '');
+      'Lrf'.replace(re54, '');
+    }
+    for (var i = 0; i < 8; i++) {
+      'Pybfr {0}'.replace(re63, '');
+      'Bcra {0}'.replace(re63, '');
+      s91[i].split(re32);
+      s92[i].split(re32);
+      'puvyq p1 svefg gnournqref'.replace(re14, '');
+      'puvyq p1 svefg gnournqref'.replace(re15, '');
+      'uqy_fcb'.replace(re14, '');
+      'uqy_fcb'.replace(re15, '');
+      'uvag'.replace(re14, '');
+      'uvag'.replace(re15, '');
+      s93[i].replace(re33, '');
+      'yvfg'.replace(re14, '');
+      'yvfg'.replace(re15, '');
+      'at_bhgre'.replace(re30, '');
+      'cnerag puebzr5 qbhoyr2 NU'.replace(re14, '');
+      'cnerag puebzr5 qbhoyr2 NU'.replace(re15, '');
+      'cnerag puebzr5 dhnq5 ps NU osyvax zbarl'.replace(re14, '');
+      'cnerag puebzr5 dhnq5 ps NU osyvax zbarl'.replace(re15, '');
+      'cnerag puebzr6 fvatyr1'.replace(re14, '');
+      'cnerag puebzr6 fvatyr1'.replace(re15, '');
+      'cb_qrs'.replace(re14, '');
+      'cb_qrs'.replace(re15, '');
+      'gnopbagrag'.replace(re14, '');
+      'gnopbagrag'.replace(re15, '');
+      'iv_svefg_gvzr'.replace(re30, '');
+      /(^|.)(ronl|qri-ehf3.wbg)(|fgberf|zbgbef|yvirnhpgvbaf|jvxv|rkcerff|punggre).(pbz(|.nh|.pa|.ux|.zl|.ft|.oe|.zk)|pb(.hx|.xe|.am)|pn|qr|se|vg|ay|or|ng|pu|vr|va|rf|cy|cu|fr)$/i.exec('cntrf.ronl.pbz');
+      re8.exec('144631658.0.10.1231364074');
+      re8.exec('144631658.1231364074.1.1.hgzpfe=(qverpg)|hgzppa=(qverpg)|hgzpzq=(abar)');
+      re8.exec('144631658.2294274870215848400.1231364074.1231364074.1231364074.1');
+      re8.exec('4413241q3660');
+      re8.exec('SbeprqRkcvengvba=633669357391353591');
+      re8.exec(str39);
+      re8.exec(str40);
+      re8.exec('AFP_zp_kkk-gdzogv_80=4413241q3660');
+      re8.exec('FrffvbaQQS2=p98s8o9q42nr21or1r61pqorn1n002nsss569635984s6qp7');
+      re8.exec('__hgzn=144631658.2294274870215848400.1231364074.1231364074.1231364074.1');
+      re8.exec('__hgzo=144631658.0.10.1231364074');
+      re8.exec('__hgzm=144631658.1231364074.1.1.hgzpfe=(qverpg)|hgzppa=(qverpg)|hgzpzq=(abar)');
+      re8.exec('p98s8o9q42nr21or1r61pqorn1n002nsss569635984s6qp7');
+      re34.exec(s91[i]);
+      re34.exec(s92[i]);
+    }
+  }
+  var re64 = /\b[a-z]/g;
+  var re65 = /^uggc:\/\//;
+  var re66 = /(?:^|\s+)qvfnoyrq(?:\s+|$)/;
+  var str41 = 'uggc://cebsvyr.zlfcnpr.pbz/Zbqhyrf/Nccyvpngvbaf/Cntrf/Pnainf.nfck';
+  function runBlock8() {
+    for (var i = 0; i < 7; i++) {
+      s21[i].match(/\d+/g);
+      'nsgre'.replace(re64, '');
+      'orsber'.replace(re64, '');
+      'obggbz'.replace(re64, '');
+      'ohvygva_jrngure.kzy'.replace(re65, '');
+      'ohggba'.replace(re37, '');
+      'ohggba'.replace(re18, '');
+      'qngrgvzr.kzy'.replace(re65, '');
+      'uggc://eff.paa.pbz/eff/paa_gbcfgbevrf.eff'.replace(re65, '');
+      'vachg'.replace(re37, '');
+      'vachg'.replace(re18, '');
+      'vafvqr'.replace(re64, '');
+      'cbvagre'.replace(re27, '');
+      'cbfvgvba'.replace(/[A-Z]/g, '');
+      'gbc'.replace(re27, '');
+      'gbc'.replace(re64, '');
+      'hy'.replace(re37, '');
+      'hy'.replace(re18, '');
+      str26.replace(re37, '');
+      str26.replace(re18, '');
+      'lbhghor_vtbbtyr/i2/lbhghor.kzy'.replace(re65, '');
+      'm-vaqrk'.replace(re27, '');
+      /#([\w-]+)/.exec(str26);
+      re16.exec('urvtug');
+      re16.exec('znetvaGbc');
+      re16.exec('jvqgu');
+      re19.exec('gno0 svefg ba');
+      re19.exec('gno0 ba');
+      re19.exec('gno4 ynfg');
+      re19.exec('gno4');
+      re19.exec('gno5');
+      re19.exec('gno6');
+      re19.exec('gno7');
+      re19.exec('gno8');
+      /NqborNVE\/([^\s]*)/.exec(s15[i]);
+      /NccyrJroXvg\/([^ ]*)/.exec(s15[i]);
+      /XUGZY/gi.exec(s15[i]);
+      /^(?:obql|ugzy)$/i.exec('YV');
+      re38.exec('ohggba');
+      re38.exec('vachg');
+      re38.exec('hy');
+      re38.exec(str26);
+      /^(\w+|\*)/.exec(str26);
+      /znp|jva|yvahk/i.exec('Jva32');
+      /eton?\([\d\s,]+\)/.exec('fgngvp');
+    }
+    for (var i = 0; i < 6; i++) {
+      ''.replace(/\r/g, '');
+      '/'.replace(re40, '');
+      '/'.replace(re10, '');
+      '/'.replace(re51, '');
+      '/'.replace(re52, '');
+      '/'.replace(re53, '');
+      '/'.replace(re39, '');
+      '/'.replace(re54, '');
+      'uggc://zfacbegny.112.2b7.arg/o/ff/zfacbegnyubzr/1/U.7-cqi-2/{0}?[NDO]&{1}&{2}&[NDR]'.replace(re63, '');
+      str41.replace(re12, '');
+      'uggc://jjj.snprobbx.pbz/fepu.cuc'.replace(re23, '');
+      'freivpr'.replace(re40, '');
+      'freivpr'.replace(re41, '');
+      'freivpr'.replace(re42, '');
+      'freivpr'.replace(re43, '');
+      'freivpr'.replace(re44, '');
+      'freivpr'.replace(re45, '');
+      'freivpr'.replace(re46, '');
+      'freivpr'.replace(re47, '');
+      'freivpr'.replace(re48, '');
+      /((ZFVR\s+([6-9]|\d\d)\.))/.exec(s15[i]);
+      re66.exec('');
+      re50.exec('fryrpgrq');
+      re8.exec('8sqq78r9n442851q565599o401385sp3s04r92rnn7o19ssn');
+      re8.exec('SbeprqRkcvengvba=633669340386893867');
+      re8.exec('VC=74.125.75.17');
+      re8.exec('FrffvbaQQS2=8sqq78r9n442851q565599o401385sp3s04r92rnn7o19ssn');
+      /Xbadhrebe|Fnsnev|XUGZY/.exec(s15[i]);
+      re13.exec(str41);
+      re49.exec('unfsbphf');
+    }
+  }
+  var re67 = /zrah_byq/g;
+  var str42 = 'FrffvbaQQS2=473qq1rs0n2r70q9qo1pq48n021s9468ron90nps048p4p29; ZFPhygher=VC=74.125.75.3&VCPhygher=ra-HF&CersreerqPhygher=ra-HF&CersreerqPhygherCraqvat=&Pbhagel=IIZ=&SbeprqRkcvengvba=633669325184628362&gvzrMbar=0&HFEYBP=DKWyLHAiMTH9AwHjWxAcqUx9GJ91oaEunJ4tIzyyqlMQo3IhqUW5D29xMG1IHlMQo3IhqUW5GzSgMG1Iozy0MJDtH3EuqTImWxEgLHAiMTH9BQN3WxkuqTy0qJEyCGZ3YwDkBGVzGT9hM2y0qJEyCF0kZwVhZQH3APMDo3A0LJkQo2EyCGx0ZQDmWyWyM2yiox5uoJH9D0R=';
+  var str43 = 'FrffvbaQQS2=473qq1rs0n2r70q9qo1pq48n021s9468ron90nps048p4p29; __hgzm=144631658.1231364380.1.1.hgzpfe=(qverpg)|hgzppa=(qverpg)|hgzpzq=(abar); __hgzn=144631658.3931862196947939300.1231364380.1231364380.1231364380.1; __hgzo=144631658.0.10.1231364380; __hgzp=144631658; ZFPhygher=VC=74.125.75.3&VCPhygher=ra-HF&CersreerqPhygher=ra-HF&Pbhagel=IIZ%3Q&SbeprqRkcvengvba=633669325184628362&gvzrMbar=-8&HFEYBP=DKWyLHAiMTH9AwHjWxAcqUx9GJ91oaEunJ4tIzyyqlMQo3IhqUW5D29xMG1IHlMQo3IhqUW5GzSgMG1Iozy0MJDtH3EuqTImWxEgLHAiMTH9BQN3WxkuqTy0qJEyCGZ3YwDkBGVzGT9hM2y0qJEyCF0kZwVhZQH3APMDo3A0LJkQo2EyCGx0ZQDmWyWyM2yiox5uoJH9D0R%3Q';
+  var str44 = 'uggc://tbbtyrnqf.t.qbhoyrpyvpx.arg/cntrnq/nqf?pyvrag=pn-svz_zlfcnpr_vzntrf_wf&qg=1231364373088&uy=ra&nqfnsr=uvtu&br=hgs8&ahz_nqf=4&bhgchg=wf&nqgrfg=bss&pbeeryngbe=1231364373088&punaary=svz_zlfcnpr_hfre-ivrj-pbzzragf%2Psvz_zlfcnpr_havgrq-fgngrf&hey=uggc%3N%2S%2Spbzzrag.zlfcnpr.pbz%2Svaqrk.psz&nq_glcr=grkg&rvq=6083027&rn=0&sez=0&tn_ivq=1158737789.1231364375&tn_fvq=1231364375&tn_uvq=415520832&synfu=9.0.115&h_u=768&h_j=1024&h_nu=738&h_nj=1024&h_pq=24&h_gm=-480&h_uvf=2&h_wnin=gehr&h_acyht=7&h_azvzr=22';
+  var str45 = 'ZFPhygher=VC=74.125.75.3&VCPhygher=ra-HF&CersreerqPhygher=ra-HF&Pbhagel=IIZ%3Q&SbeprqRkcvengvba=633669325184628362&gvzrMbar=-8&HFEYBP=DKWyLHAiMTH9AwHjWxAcqUx9GJ91oaEunJ4tIzyyqlMQo3IhqUW5D29xMG1IHlMQo3IhqUW5GzSgMG1Iozy0MJDtH3EuqTImWxEgLHAiMTH9BQN3WxkuqTy0qJEyCGZ3YwDkBGVzGT9hM2y0qJEyCF0kZwVhZQH3APMDo3A0LJkQo2EyCGx0ZQDmWyWyM2yiox5uoJH9D0R%3Q';
+  var str46 = 'ZFPhygher=VC=74.125.75.3&VCPhygher=ra-HF&CersreerqPhygher=ra-HF&CersreerqPhygherCraqvat=&Pbhagel=IIZ=&SbeprqRkcvengvba=633669325184628362&gvzrMbar=0&HFEYBP=DKWyLHAiMTH9AwHjWxAcqUx9GJ91oaEunJ4tIzyyqlMQo3IhqUW5D29xMG1IHlMQo3IhqUW5GzSgMG1Iozy0MJDtH3EuqTImWxEgLHAiMTH9BQN3WxkuqTy0qJEyCGZ3YwDkBGVzGT9hM2y0qJEyCF0kZwVhZQH3APMDo3A0LJkQo2EyCGx0ZQDmWyWyM2yiox5uoJH9D0R=';
+  var re68 = /^([#.]?)((?:[\w\u0128-\uffff*_-]|\\.)*)/;
+  var re69 = /\{1\}/g;
+  var re70 = /\s+/;
+  var re71 = /(\$\{4\})|(\$4\b)/g;
+  var re72 = /(\$\{5\})|(\$5\b)/g;
+  var re73 = /\{2\}/g;
+  var re74 = /[^+>] [^+>]/;
+  var re75 = /\bucpyv\s*=\s*([^;]*)/i;
+  var re76 = /\bucuvqr\s*=\s*([^;]*)/i;
+  var re77 = /\bucfie\s*=\s*([^;]*)/i;
+  var re78 = /\bhfucjrn\s*=\s*([^;]*)/i;
+  var re79 = /\bmvc\s*=\s*([^;]*)/i;
+  var re80 = /^((?:[\w\u0128-\uffff*_-]|\\.)+)(#)((?:[\w\u0128-\uffff*_-]|\\.)+)/;
+  var re81 = /^([>+~])\s*(\w*)/i;
+  var re82 = /^>\s*((?:[\w\u0128-\uffff*_-]|\\.)+)/;
+  var re83 = /^[\s[]?shapgvba/;
+  var re84 = /v\/g.tvs#(.*)/i;
+  var str47 = '#Zbq-Vasb-Vasb-WninFpevcgUvag';
+  var str48 = ',n.svryqOgaPnapry';
+  var str49 = 'FrffvbaQQS2=p98s8o9q42nr21or1r61pqorn1n002nsss569635984s6qp7; ZFPhygher=VC=74.125.75.3&VCPhygher=ra-HF&CersreerqPhygher=ra-HF&CersreerqPhygherCraqvat=&Pbhagel=IIZ=&SbeprqRkcvengvba=633669357391353591&gvzrMbar=0&HFEYBP=DKWyLHAiMTH9AwHjWxAcqUx9GJ91oaEunJ4tIzyyqlMQo3IhqUW5D29xMG1IHlMQo3IhqUW5GzSgMG1Iozy0MJDtH3EuqTImWxEgLHAiMTH9BQN3WxkuqTy0qJEyCGZ3YwDkBGVzGT9hM2y0qJEyCF0kZwVhZQH3APMDo3A0LJkQo2EyCGx0ZQDmWyWyM2yiox5uoJH9D0R=; AFP_zp_kkk-gdzogv_80=4413241q3660';
+  var str50 = 'FrffvbaQQS2=p98s8o9q42nr21or1r61pqorn1n002nsss569635984s6qp7; AFP_zp_kkk-gdzogv_80=4413241q3660; AFP_zp_kkk-aowb_80=4413235p3660; __hgzm=144631658.1231367708.1.1.hgzpfe=(qverpg)|hgzppa=(qverpg)|hgzpzq=(abar); __hgzn=144631658.2770915348920628700.1231367708.1231367708.1231367708.1; __hgzo=144631658.0.10.1231367708; __hgzp=144631658; ZFPhygher=VC=74.125.75.3&VCPhygher=ra-HF&CersreerqPhygher=ra-HF&Pbhagel=IIZ%3Q&SbeprqRkcvengvba=633669357391353591&gvzrMbar=-8&HFEYBP=DKWyLHAiMTH9AwHjWxAcqUx9GJ91oaEunJ4tIzyyqlMQo3IhqUW5D29xMG1IHlMQo3IhqUW5GzSgMG1Iozy0MJDtH3EuqTImWxEgLHAiMTH9BQN3WxkuqTy0qJEyCGZ3YwDkBGVzGT9hM2y0qJEyCF0kZwVhZQH3APMDo3A0LJkQo2EyCGx0ZQDmWyWyM2yiox5uoJH9D0R%3Q';
+  var str51 = 'uggc://tbbtyrnqf.t.qbhoyrpyvpx.arg/cntrnq/nqf?pyvrag=pn-svz_zlfcnpr_zlfcnpr-ubzrcntr_wf&qg=1231367691141&uy=ra&nqfnsr=uvtu&br=hgs8&ahz_nqf=4&bhgchg=wf&nqgrfg=bss&pbeeryngbe=1231367691141&punaary=svz_zlfcnpr_ubzrcntr_abgybttrqva%2Psvz_zlfcnpr_aba_HTP%2Psvz_zlfcnpr_havgrq-fgngrf&hey=uggc%3N%2S%2Sjjj.zlfcnpr.pbz%2S&nq_glcr=grkg&rvq=6083027&rn=0&sez=0&tn_ivq=320757904.1231367694&tn_fvq=1231367694&tn_uvq=1758792003&synfu=9.0.115&h_u=768&h_j=1024&h_nu=738&h_nj=1024&h_pq=24&h_gm=-480&h_uvf=2&h_wnin=gehr&h_acyht=7&h_azvzr=22';
+  var str52 = 'uggc://zfacbegny.112.2b7.arg/o/ff/zfacbegnyubzr/1/U.7-cqi-2/f55332979829981?[NDO]&aqu=1&g=7%2S0%2S2009%2014%3N38%3N42%203%20480&af=zfacbegny&cntrAnzr=HF%20UCZFSGJ&t=uggc%3N%2S%2Sjjj.zfa.pbz%2S&f=1024k768&p=24&x=L&oj=994&ou=634&uc=A&{2}&[NDR]';
+  var str53 = 'cnerag puebzr6 fvatyr1 gno fryrpgrq ovaq qbhoyr2 ps';
+  var str54 = 'ZFPhygher=VC=74.125.75.3&VCPhygher=ra-HF&CersreerqPhygher=ra-HF&Pbhagel=IIZ%3Q&SbeprqRkcvengvba=633669357391353591&gvzrMbar=-8&HFEYBP=DKWyLHAiMTH9AwHjWxAcqUx9GJ91oaEunJ4tIzyyqlMQo3IhqUW5D29xMG1IHlMQo3IhqUW5GzSgMG1Iozy0MJDtH3EuqTImWxEgLHAiMTH9BQN3WxkuqTy0qJEyCGZ3YwDkBGVzGT9hM2y0qJEyCF0kZwVhZQH3APMDo3A0LJkQo2EyCGx0ZQDmWyWyM2yiox5uoJH9D0R%3Q';
+  var str55 = 'ZFPhygher=VC=74.125.75.3&VCPhygher=ra-HF&CersreerqPhygher=ra-HF&CersreerqPhygherCraqvat=&Pbhagel=IIZ=&SbeprqRkcvengvba=633669357391353591&gvzrMbar=0&HFEYBP=DKWyLHAiMTH9AwHjWxAcqUx9GJ91oaEunJ4tIzyyqlMQo3IhqUW5D29xMG1IHlMQo3IhqUW5GzSgMG1Iozy0MJDtH3EuqTImWxEgLHAiMTH9BQN3WxkuqTy0qJEyCGZ3YwDkBGVzGT9hM2y0qJEyCF0kZwVhZQH3APMDo3A0LJkQo2EyCGx0ZQDmWyWyM2yiox5uoJH9D0R=';
+  var str56 = 'ne;ng;nh;or;oe;pn;pu;py;pa;qr;qx;rf;sv;se;to;ux;vq;vr;va;vg;wc;xe;zk;zl;ay;ab;am;cu;cy;cg;eh;fr;ft;gu;ge;gj;mn;';
+  var str57 = 'ZP1=I=3&THVQ=6nnpr9q661804s33nnop45nosqp17q85; zu=ZFSG; PHYGHER=RA-HF; SyvtugTebhcVq=97; SyvtugVq=OnfrCntr; ucfie=Z:5|S:5|G:5|R:5|Q:oyh|J:S; ucpyv=J.U|Y.|F.|E.|H.Y|P.|U.; hfucjrn=jp:HFPN0746; ZHVQ=Q783SN9O14054831N4869R51P0SO8886&GHVQ=1';
+  var str58 = 'ZP1=I=3&THVQ=6nnpr9q661804s33nnop45nosqp17q85; zu=ZFSG; PHYGHER=RA-HF; SyvtugTebhcVq=97; SyvtugVq=OnfrCntr; ucfie=Z:5|S:5|G:5|R:5|Q:oyh|J:S; ucpyv=J.U|Y.|F.|E.|H.Y|P.|U.; hfucjrn=jp:HFPN0746; ZHVQ=Q783SN9O14054831N4869R51P0SO8886';
+  var str59 = 'ZP1=I=3&THVQ=6nnpr9q661804s33nnop45nosqp17q85; zu=ZFSG; PHYGHER=RA-HF; SyvtugTebhcVq=97; SyvtugVq=OnfrCntr; ucfie=Z:5|S:5|G:5|R:5|Q:oyh|J:S; ucpyv=J.U|Y.|F.|E.|H.Y|P.|U.; hfucjrn=jp:HFPN0746; ZHVQ=Q783SN9O14054831N4869R51P0SO8886; mvc=m:94043|yn:37.4154|yb:-122.0585|p:HF|ue:1';
+  var str60 = 'ZP1=I=3&THVQ=6nnpr9q661804s33nnop45nosqp17q85; zu=ZFSG; PHYGHER=RA-HF; SyvtugTebhcVq=97; SyvtugVq=OnfrCntr; ucfie=Z:5|S:5|G:5|R:5|Q:oyh|J:S; ucpyv=J.U|Y.|F.|E.|H.Y|P.|U.; hfucjrn=jp:HFPN0746; ZHVQ=Q783SN9O14054831N4869R51P0SO8886; mvc=m:94043|yn:37.4154|yb:-122.0585|p:HF';
+  var str61 = 'uggc://gx2.fgp.f-zfa.pbz/oe/uc/11/ra-hf/pff/v/g.tvs#uggc://gx2.fgo.f-zfa.pbz/v/29/4RQP4969777N048NPS4RRR3PO2S7S.wct';
+  var str62 = 'uggc://gx2.fgp.f-zfa.pbz/oe/uc/11/ra-hf/pff/v/g.tvs#uggc://gx2.fgo.f-zfa.pbz/v/OQ/63NP9O94NS5OQP1249Q9S1ROP7NS3.wct';
+  var str63 = 'zbmvyyn/5.0 (jvaqbjf; h; jvaqbjf ag 5.1; ra-hf) nccyrjroxvg/528.9 (xugzy, yvxr trpxb) puebzr/2.0.157.0 fnsnev/528.9';
+  var s94 = computeInputVariants(str42, 5);
+  var s95 = computeInputVariants(str43, 5);
+  var s96 = computeInputVariants(str44, 5);
+  var s97 = computeInputVariants(str47, 5);
+  var s98 = computeInputVariants(str48, 5);
+  var s99 = computeInputVariants(str49, 5);
+  var s100 = computeInputVariants(str50, 5);
+  var s101 = computeInputVariants(str51, 5);
+  var s102 = computeInputVariants(str52, 5);
+  var s103 = computeInputVariants(str53, 5);
+
+  function runBlock9() {
+    for (var i = 0; i < 5; i++) {
+      s94[i].split(re32);
+      s95[i].split(re32);
+      'svz_zlfcnpr_hfre-ivrj-pbzzragf,svz_zlfcnpr_havgrq-fgngrf'.split(re20);
+      s96[i].replace(re33, '');
+      'zrah_arj zrah_arj_gbttyr zrah_gbttyr'.replace(re67, '');
+      'zrah_byq zrah_byq_gbttyr zrah_gbttyr'.replace(re67, '');
+      re8.exec('102n9o0o9pq60132qn0337rr867p75953502q2s27s2s5r98');
+      re8.exec('144631658.0.10.1231364380');
+      re8.exec('144631658.1231364380.1.1.hgzpfe=(qverpg)|hgzppa=(qverpg)|hgzpzq=(abar)');
+      re8.exec('144631658.3931862196947939300.1231364380.1231364380.1231364380.1');
+      re8.exec('441326q33660');
+      re8.exec('SbeprqRkcvengvba=633669341278771470');
+      re8.exec(str45);
+      re8.exec(str46);
+      re8.exec('AFP_zp_dfctwzssrwh-aowb_80=441326q33660');
+      re8.exec('FrffvbaQQS2=102n9o0o9pq60132qn0337rr867p75953502q2s27s2s5r98');
+      re8.exec('__hgzn=144631658.3931862196947939300.1231364380.1231364380.1231364380.1');
+      re8.exec('__hgzo=144631658.0.10.1231364380');
+      re8.exec('__hgzm=144631658.1231364380.1.1.hgzpfe=(qverpg)|hgzppa=(qverpg)|hgzpzq=(abar)');
+    }
+    for (var i = 0; i < 4; i++) {
+      ' yvfg1'.replace(re14, '');
+      ' yvfg1'.replace(re15, '');
+      ' yvfg2'.replace(re14, '');
+      ' yvfg2'.replace(re15, '');
+      ' frneputebhc1'.replace(re14, '');
+      ' frneputebhc1'.replace(re15, '');
+      s97[i].replace(re68, '');
+      s97[i].replace(re18, '');
+      ''.replace(/&/g, '');
+      ''.replace(re35, '');
+      '(..-{0})(\|(\d+)|)'.replace(re63, '');
+      s98[i].replace(re18, '');
+      '//vzt.jro.qr/vij/FC/${cngu}/${anzr}/${inyhr}?gf=${abj}'.replace(re56, '');
+      '//vzt.jro.qr/vij/FC/tzk_uc/${anzr}/${inyhr}?gf=${abj}'.replace(/(\$\{anzr\})|(\$anzr\b)/g, '');
+      '<fcna pynff="urnq"><o>Jvaqbjf Yvir Ubgznvy</o></fcna><fcna pynff="zft">{1}</fcna>'.replace(re69, '');
+      '<fcna pynff="urnq"><o>{0}</o></fcna><fcna pynff="zft">{1}</fcna>'.replace(re63, '');
+      '<fcna pynff="fvtahc"><n uers=uggc://jjj.ubgznvy.pbz><o>{1}</o></n></fcna>'.replace(re69, '');
+      '<fcna pynff="fvtahc"><n uers={0}><o>{1}</o></n></fcna>'.replace(re63, '');
+      'Vzntrf'.replace(re15, '');
+      'ZFA'.replace(re15, '');
+      'Zncf'.replace(re15, '');
+      'Zbq-Vasb-Vasb-WninFpevcgUvag'.replace(re39, '');
+      'Arjf'.replace(re15, '');
+      s99[i].split(re32);
+      s100[i].split(re32);
+      'Ivqrb'.replace(re15, '');
+      'Jro'.replace(re15, '');
+      'n'.replace(re39, '');
+      'nwnkFgneg'.split(re70);
+      'nwnkFgbc'.split(re70);
+      'ovaq'.replace(re14, '');
+      'ovaq'.replace(re15, '');
+      'oevatf lbh zber. Zber fcnpr (5TO), zber frphevgl, fgvyy serr.'.replace(re63, '');
+      'puvyq p1 svefg qrpx'.replace(re14, '');
+      'puvyq p1 svefg qrpx'.replace(re15, '');
+      'puvyq p1 svefg qbhoyr2'.replace(re14, '');
+      'puvyq p1 svefg qbhoyr2'.replace(re15, '');
+      'puvyq p2 ynfg'.replace(re14, '');
+      'puvyq p2 ynfg'.replace(re15, '');
+      'puvyq p2'.replace(re14, '');
+      'puvyq p2'.replace(re15, '');
+      'puvyq p3'.replace(re14, '');
+      'puvyq p3'.replace(re15, '');
+      'puvyq p4 ynfg'.replace(re14, '');
+      'puvyq p4 ynfg'.replace(re15, '');
+      'pbclevtug'.replace(re14, '');
+      'pbclevtug'.replace(re15, '');
+      'qZFAZR_1'.replace(re14, '');
+      'qZFAZR_1'.replace(re15, '');
+      'qbhoyr2 ps'.replace(re14, '');
+      'qbhoyr2 ps'.replace(re15, '');
+      'qbhoyr2'.replace(re14, '');
+      'qbhoyr2'.replace(re15, '');
+      'uqy_arj'.replace(re14, '');
+      'uqy_arj'.replace(re15, '');
+      'uc_fubccvatobk'.replace(re30, '');
+      'ugzy%2Rvq'.replace(re29, '');
+      'ugzy%2Rvq'.replace(re30, '');
+      s101[i].replace(re33, '');
+      'uggc://wf.hv-cbegny.qr/tzk/ubzr/wf/20080602/cebgbglcr.wf${4}${5}'.replace(re71, '');
+      'uggc://wf.hv-cbegny.qr/tzk/ubzr/wf/20080602/cebgbglcr.wf${5}'.replace(re72, '');
+      s102[i].replace(re73, '');
+      'uggc://zfacbegny.112.2b7.arg/o/ff/zfacbegnyubzr/1/U.7-cqi-2/f55332979829981?[NDO]&{1}&{2}&[NDR]'.replace(re69, '');
+      'vztZFSG'.replace(re14, '');
+      'vztZFSG'.replace(re15, '');
+      'zfasbbg1 ps'.replace(re14, '');
+      'zfasbbg1 ps'.replace(re15, '');
+      s103[i].replace(re14, '');
+      s103[i].replace(re15, '');
+      'cnerag puebzr6 fvatyr1 gno fryrpgrq ovaq'.replace(re14, '');
+      'cnerag puebzr6 fvatyr1 gno fryrpgrq ovaq'.replace(re15, '');
+      'cevznel'.replace(re14, '');
+      'cevznel'.replace(re15, '');
+      'erpgnatyr'.replace(re30, '');
+      'frpbaqnel'.replace(re14, '');
+      'frpbaqnel'.replace(re15, '');
+      'haybnq'.split(re70);
+      '{0}{1}1'.replace(re63, '');
+      '|{1}1'.replace(re69, '');
+      /(..-HF)(\|(\d+)|)/i.exec('xb-xe,ra-va,gu-gu');
+      re4.exec('/ZlFcnprNccf/NccPnainf,45000012');
+      re8.exec('144631658.0.10.1231367708');
+      re8.exec('144631658.1231367708.1.1.hgzpfe=(qverpg)|hgzppa=(qverpg)|hgzpzq=(abar)');
+      re8.exec('144631658.2770915348920628700.1231367708.1231367708.1231367708.1');
+      re8.exec('4413235p3660');
+      re8.exec('441327q73660');
+      re8.exec('9995p6rp12rrnr893334ro7nq70o7p64p69rqn844prs1473');
+      re8.exec('SbeprqRkcvengvba=633669350559478880');
+      re8.exec(str54);
+      re8.exec(str55);
+      re8.exec('AFP_zp_dfctwzs-aowb_80=441327q73660');
+      re8.exec('AFP_zp_kkk-aowb_80=4413235p3660');
+      re8.exec('FrffvbaQQS2=9995p6rp12rrnr893334ro7nq70o7p64p69rqn844prs1473');
+      re8.exec('__hgzn=144631658.2770915348920628700.1231367708.1231367708.1231367708.1');
+      re8.exec('__hgzo=144631658.0.10.1231367708');
+      re8.exec('__hgzm=144631658.1231367708.1.1.hgzpfe=(qverpg)|hgzppa=(qverpg)|hgzpzq=(abar)');
+      re34.exec(s99[i]);
+      re34.exec(s100[i]);
+      /ZFVR\s+5[.]01/.exec(s15[i]);
+      /HF(?=;)/i.exec(str56);
+      re74.exec(s97[i]);
+      re28.exec('svefg npgvir svefgNpgvir');
+      re28.exec('ynfg');
+      /\bp:(..)/i.exec('m:94043|yn:37.4154|yb:-122.0585|p:HF');
+      re75.exec(str57);
+      re75.exec(str58);
+      re76.exec(str57);
+      re76.exec(str58);
+      re77.exec(str57);
+      re77.exec(str58);
+      /\bhfucce\s*=\s*([^;]*)/i.exec(str59);
+      re78.exec(str57);
+      re78.exec(str58);
+      /\bjci\s*=\s*([^;]*)/i.exec(str59);
+      re79.exec(str58);
+      re79.exec(str60);
+      re79.exec(str59);
+      /\|p:([a-z]{2})/i.exec('m:94043|yn:37.4154|yb:-122.0585|p:HF|ue:1');
+      re80.exec(s97[i]);
+      re61.exec('cebgbglcr.wf');
+      re68.exec(s97[i]);
+      re81.exec(s97[i]);
+      re82.exec(s97[i]);
+      /^Fubpxjnir Synfu (\d)/.exec(s21[i]);
+      /^Fubpxjnir Synfu (\d+)/.exec(s21[i]);
+      re83.exec('[bowrpg tybony]');
+      re62.exec(s97[i]);
+      re84.exec(str61);
+      re84.exec(str62);
+      /jroxvg/.exec(str63);
+    }
+  }
+  var re85 = /eaq_zbqobkva/;
+  var str64 = '1231365729213';
+  var str65 = '74.125.75.3-1057165600.29978900';
+  var str66 = '74.125.75.3-1057165600.29978900.1231365730214';
+  var str67 = 'Frnepu%20Zvpebfbsg.pbz';
+  var str68 = 'FrffvbaQQS2=8sqq78r9n442851q565599o401385sp3s04r92rnn7o19ssn; ZFPhygher=VC=74.125.75.17&VCPhygher=ra-HF&CersreerqPhygher=ra-HF&CersreerqPhygherCraqvat=&Pbhagel=IIZ=&SbeprqRkcvengvba=633669340386893867&gvzrMbar=0&HFEYBP=DKWyLHAiMTH9AwHjWxAcqUx9GJ91oaEunJ4tIzyyqlMQo3IhqUW5D29xMG1IHlMQo3IhqUW5GzSgMG1Iozy0MJDtH3EuqTImWxEgLHAiMTH9BQN3WxkuqTy0qJEyCGZ3YwDkBGVzGT9hM2y0qJEyCF0kZwVhZQH3APMDo3A0LJkQo2EyCGx0ZQDmWyWyM2yiox5uoJH9D0R=';
+  var str69 = 'FrffvbaQQS2=8sqq78r9n442851q565599o401385sp3s04r92rnn7o19ssn; __hgzm=144631658.1231365779.1.1.hgzpfe=(qverpg)|hgzppa=(qverpg)|hgzpzq=(abar); __hgzn=144631658.1877536177953918500.1231365779.1231365779.1231365779.1; __hgzo=144631658.0.10.1231365779; __hgzp=144631658; ZFPhygher=VC=74.125.75.17&VCPhygher=ra-HF&CersreerqPhygher=ra-HF&Pbhagel=IIZ%3Q&SbeprqRkcvengvba=633669340386893867&gvzrMbar=-8&HFEYBP=DKWyLHAiMTH9AwHjWxAcqUx9GJ91oaEunJ4tIzyyqlMQo3IhqUW5D29xMG1IHlMQo3IhqUW5GzSgMG1Iozy0MJDtH3EuqTImWxEgLHAiMTH9BQN3WxkuqTy0qJEyCGZ3YwDkBGVzGT9hM2y0qJEyCF0kZwVhZQH3APMDo3A0LJkQo2EyCGx0ZQDmWyWyM2yiox5uoJH9D0R%3Q';
+  var str70 = 'I=3%26THVQ=757q3ss871q44o7o805n8113n5p72q52';
+  var str71 = 'I=3&THVQ=757q3ss871q44o7o805n8113n5p72q52';
+  var str72 = 'uggc://tbbtyrnqf.t.qbhoyrpyvpx.arg/cntrnq/nqf?pyvrag=pn-svz_zlfcnpr_zlfcnpr-ubzrcntr_wf&qg=1231365765292&uy=ra&nqfnsr=uvtu&br=hgs8&ahz_nqf=4&bhgchg=wf&nqgrfg=bss&pbeeryngbe=1231365765292&punaary=svz_zlfcnpr_ubzrcntr_abgybttrqva%2Psvz_zlfcnpr_aba_HTP%2Psvz_zlfcnpr_havgrq-fgngrf&hey=uggc%3N%2S%2Sohyyrgvaf.zlfcnpr.pbz%2Svaqrk.psz&nq_glcr=grkg&rvq=6083027&rn=0&sez=0&tn_ivq=1579793869.1231365768&tn_fvq=1231365768&tn_uvq=2056210897&synfu=9.0.115&h_u=768&h_j=1024&h_nu=738&h_nj=1024&h_pq=24&h_gm=-480&h_uvf=2&h_wnin=gehr&h_acyht=7&h_azvzr=22';
+  var str73 = 'frnepu.zvpebfbsg.pbz';
+  var str74 = 'frnepu.zvpebfbsg.pbz/';
+  var str75 = 'ZFPhygher=VC=74.125.75.17&VCPhygher=ra-HF&CersreerqPhygher=ra-HF&Pbhagel=IIZ%3Q&SbeprqRkcvengvba=633669340386893867&gvzrMbar=-8&HFEYBP=DKWyLHAiMTH9AwHjWxAcqUx9GJ91oaEunJ4tIzyyqlMQo3IhqUW5D29xMG1IHlMQo3IhqUW5GzSgMG1Iozy0MJDtH3EuqTImWxEgLHAiMTH9BQN3WxkuqTy0qJEyCGZ3YwDkBGVzGT9hM2y0qJEyCF0kZwVhZQH3APMDo3A0LJkQo2EyCGx0ZQDmWyWyM2yiox5uoJH9D0R%3Q';
+  var str76 = 'ZFPhygher=VC=74.125.75.17&VCPhygher=ra-HF&CersreerqPhygher=ra-HF&CersreerqPhygherCraqvat=&Pbhagel=IIZ=&SbeprqRkcvengvba=633669340386893867&gvzrMbar=0&HFEYBP=DKWyLHAiMTH9AwHjWxAcqUx9GJ91oaEunJ4tIzyyqlMQo3IhqUW5D29xMG1IHlMQo3IhqUW5GzSgMG1Iozy0MJDtH3EuqTImWxEgLHAiMTH9BQN3WxkuqTy0qJEyCGZ3YwDkBGVzGT9hM2y0qJEyCF0kZwVhZQH3APMDo3A0LJkQo2EyCGx0ZQDmWyWyM2yiox5uoJH9D0R=';
+  function runBlock10() {
+    for (var i = 0; i < 3; i++) {
+      '%3Szxg=ra-HF'.replace(re39, '');
+      '-8'.replace(re40, '');
+      '-8'.replace(re10, '');
+      '-8'.replace(re51, '');
+      '-8'.replace(re52, '');
+      '-8'.replace(re53, '');
+      '-8'.replace(re39, '');
+      '-8'.replace(re54, '');
+      '1.5'.replace(re40, '');
+      '1.5'.replace(re10, '');
+      '1.5'.replace(re51, '');
+      '1.5'.replace(re52, '');
+      '1.5'.replace(re53, '');
+      '1.5'.replace(re39, '');
+      '1.5'.replace(re54, '');
+      '1024k768'.replace(re40, '');
+      '1024k768'.replace(re10, '');
+      '1024k768'.replace(re51, '');
+      '1024k768'.replace(re52, '');
+      '1024k768'.replace(re53, '');
+      '1024k768'.replace(re39, '');
+      '1024k768'.replace(re54, '');
+      str64.replace(re40, '');
+      str64.replace(re10, '');
+      str64.replace(re51, '');
+      str64.replace(re52, '');
+      str64.replace(re53, '');
+      str64.replace(re39, '');
+      str64.replace(re54, '');
+      '14'.replace(re40, '');
+      '14'.replace(re10, '');
+      '14'.replace(re51, '');
+      '14'.replace(re52, '');
+      '14'.replace(re53, '');
+      '14'.replace(re39, '');
+      '14'.replace(re54, '');
+      '24'.replace(re40, '');
+      '24'.replace(re10, '');
+      '24'.replace(re51, '');
+      '24'.replace(re52, '');
+      '24'.replace(re53, '');
+      '24'.replace(re39, '');
+      '24'.replace(re54, '');
+      str65.replace(re40, '');
+      str65.replace(re10, '');
+      str65.replace(re51, '');
+      str65.replace(re52, '');
+      str65.replace(re53, '');
+      str65.replace(re39, '');
+      str65.replace(re54, '');
+      str66.replace(re40, '');
+      str66.replace(re10, '');
+      str66.replace(re51, '');
+      str66.replace(re52, '');
+      str66.replace(re53, '');
+      str66.replace(re39, '');
+      str66.replace(re54, '');
+      '9.0'.replace(re40, '');
+      '9.0'.replace(re10, '');
+      '9.0'.replace(re51, '');
+      '9.0'.replace(re52, '');
+      '9.0'.replace(re53, '');
+      '9.0'.replace(re39, '');
+      '9.0'.replace(re54, '');
+      '994k634'.replace(re40, '');
+      '994k634'.replace(re10, '');
+      '994k634'.replace(re51, '');
+      '994k634'.replace(re52, '');
+      '994k634'.replace(re53, '');
+      '994k634'.replace(re39, '');
+      '994k634'.replace(re54, '');
+      '?zxg=ra-HF'.replace(re40, '');
+      '?zxg=ra-HF'.replace(re10, '');
+      '?zxg=ra-HF'.replace(re51, '');
+      '?zxg=ra-HF'.replace(re52, '');
+      '?zxg=ra-HF'.replace(re53, '');
+      '?zxg=ra-HF'.replace(re54, '');
+      'PAA.pbz'.replace(re25, '');
+      'PAA.pbz'.replace(re12, '');
+      'PAA.pbz'.replace(re39, '');
+      'Qngr & Gvzr'.replace(re25, '');
+      'Qngr & Gvzr'.replace(re12, '');
+      'Qngr & Gvzr'.replace(re39, '');
+      'Frnepu Zvpebfbsg.pbz'.replace(re40, '');
+      'Frnepu Zvpebfbsg.pbz'.replace(re54, '');
+      str67.replace(re10, '');
+      str67.replace(re51, '');
+      str67.replace(re52, '');
+      str67.replace(re53, '');
+      str67.replace(re39, '');
+      str68.split(re32);
+      str69.split(re32);
+      str70.replace(re52, '');
+      str70.replace(re53, '');
+      str70.replace(re39, '');
+      str71.replace(re40, '');
+      str71.replace(re10, '');
+      str71.replace(re51, '');
+      str71.replace(re54, '');
+      'Jrngure'.replace(re25, '');
+      'Jrngure'.replace(re12, '');
+      'Jrngure'.replace(re39, '');
+      'LbhGhor'.replace(re25, '');
+      'LbhGhor'.replace(re12, '');
+      'LbhGhor'.replace(re39, '');
+      str72.replace(re33, '');
+      'erzbgr_vsenzr_1'.replace(/^erzbgr_vsenzr_/, '');
+      str73.replace(re40, '');
+      str73.replace(re10, '');
+      str73.replace(re51, '');
+      str73.replace(re52, '');
+      str73.replace(re53, '');
+      str73.replace(re39, '');
+      str73.replace(re54, '');
+      str74.replace(re40, '');
+      str74.replace(re10, '');
+      str74.replace(re51, '');
+      str74.replace(re52, '');
+      str74.replace(re53, '');
+      str74.replace(re39, '');
+      str74.replace(re54, '');
+      'lhv-h'.replace(/\-/g, '');
+      re9.exec('p');
+      re9.exec('qz p');
+      re9.exec('zbqynory');
+      re9.exec('lhv-h svefg');
+      re8.exec('144631658.0.10.1231365779');
+      re8.exec('144631658.1231365779.1.1.hgzpfe=(qverpg)|hgzppa=(qverpg)|hgzpzq=(abar)');
+      re8.exec('144631658.1877536177953918500.1231365779.1231365779.1231365779.1');
+      re8.exec(str75);
+      re8.exec(str76);
+      re8.exec('__hgzn=144631658.1877536177953918500.1231365779.1231365779.1231365779.1');
+      re8.exec('__hgzo=144631658.0.10.1231365779');
+      re8.exec('__hgzm=144631658.1231365779.1.1.hgzpfe=(qverpg)|hgzppa=(qverpg)|hgzpzq=(abar)');
+      re34.exec(str68);
+      re34.exec(str69);
+      /^$/.exec('');
+      re31.exec('qr');
+      /^znk\d+$/.exec('');
+      /^zva\d+$/.exec('');
+      /^erfgber$/.exec('');
+      re85.exec('zbqobkva zbqobk_abcnqqvat ');
+      re85.exec('zbqgvgyr');
+      re85.exec('eaq_zbqobkva ');
+      re85.exec('eaq_zbqgvgyr ');
+      /frpgvba\d+_pbagragf/.exec('obggbz_ani');
+    }
+  }
+  var re86 = /;\s*/;
+  var re87 = /(\$\{inyhr\})|(\$inyhr\b)/g;
+  var re88 = /(\$\{abj\})|(\$abj\b)/g;
+  var re89 = /\s+$/;
+  var re90 = /^\s+/;
+  var re91 = /(\\\"|\x00-|\x1f|\x7f-|\x9f|\u00ad|\u0600-|\u0604|\u070f|\u17b4|\u17b5|\u200c-|\u200f|\u2028-|\u202f|\u2060-|\u206f|\ufeff|\ufff0-|\uffff)/g;
+  var re92 = /^(:)([\w-]+)\("?'?(.*?(\(.*?\))?[^(]*?)"?'?\)/;
+  var re93 = /^([:.#]*)((?:[\w\u0128-\uffff*_-]|\\.)+)/;
+  var re94 = /^(\[) *@?([\w-]+) *([!*$^~=]*) *('?"?)(.*?)\4 *\]/;
+  var str77 = '#fubhgobk .pybfr';
+  var str78 = 'FrffvbaQQS2=102n9o0o9pq60132qn0337rr867p75953502q2s27s2s5r98; ZFPhygher=VC=74.125.75.1&VCPhygher=ra-HF&CersreerqPhygher=ra-HF&CersreerqPhygherCraqvat=&Pbhagel=IIZ=&SbeprqRkcvengvba=633669341278771470&gvzrMbar=0&HFEYBP=DKWyLHAiMTH9AwHjWxAcqUx9GJ91oaEunJ4tIzyyqlMQo3IhqUW5D29xMG1IHlMQo3IhqUW5GzSgMG1Iozy0MJDtH3EuqTImWxEgLHAiMTH9BQN3WxkuqTy0qJEyCGZ3YwDkBGVzGT9hM2y0qJEyCF0kZwVhZQH3APMDo3A0LJkQo2EyCGx0ZQDmWyWyM2yiox5uoJH9D0R=; AFP_zp_dfctwzssrwh-aowb_80=441326q33660';
+  var str79 = 'FrffvbaQQS2=102n9o0o9pq60132qn0337rr867p75953502q2s27s2s5r98; AFP_zp_dfctwzssrwh-aowb_80=441326q33660; __hgzm=144631658.1231365869.1.1.hgzpfe=(qverpg)|hgzppa=(qverpg)|hgzpzq=(abar); __hgzn=144631658.1670816052019209000.1231365869.1231365869.1231365869.1; __hgzo=144631658.0.10.1231365869; __hgzp=144631658; ZFPhygher=VC=74.125.75.1&VCPhygher=ra-HF&CersreerqPhygher=ra-HF&Pbhagel=IIZ%3Q&SbeprqRkcvengvba=633669341278771470&gvzrMbar=-8&HFEYBP=DKWyLHAiMTH9AwHjWxAcqUx9GJ91oaEunJ4tIzyyqlMQo3IhqUW5D29xMG1IHlMQo3IhqUW5GzSgMG1Iozy0MJDtH3EuqTImWxEgLHAiMTH9BQN3WxkuqTy0qJEyCGZ3YwDkBGVzGT9hM2y0qJEyCF0kZwVhZQH3APMDo3A0LJkQo2EyCGx0ZQDmWyWyM2yiox5uoJH9D0R%3Q';
+  var str80 = 'FrffvbaQQS2=9995p6rp12rrnr893334ro7nq70o7p64p69rqn844prs1473; ZFPhygher=VC=74.125.75.1&VCPhygher=ra-HF&CersreerqPhygher=ra-HF&CersreerqPhygherCraqvat=&Pbhagel=IIZ=&SbeprqRkcvengvba=633669350559478880&gvzrMbar=0&HFEYBP=DKWyLHAiMTH9AwHjWxAcqUx9GJ91oaEunJ4tIzyyqlMQo3IhqUW5D29xMG1IHlMQo3IhqUW5GzSgMG1Iozy0MJDtH3EuqTImWxEgLHAiMTH9BQN3WxkuqTy0qJEyCGZ3YwDkBGVzGT9hM2y0qJEyCF0kZwVhZQH3APMDo3A0LJkQo2EyCGx0ZQDmWyWyM2yiox5uoJH9D0R=; AFP_zp_dfctwzs-aowb_80=441327q73660';
+  var str81 = 'FrffvbaQQS2=9995p6rp12rrnr893334ro7nq70o7p64p69rqn844prs1473; AFP_zp_dfctwzs-aowb_80=441327q73660; __hgzm=144631658.1231367054.1.1.hgzpfe=(qverpg)|hgzppa=(qverpg)|hgzpzq=(abar); __hgzn=144631658.1796080716621419500.1231367054.1231367054.1231367054.1; __hgzo=144631658.0.10.1231367054; __hgzp=144631658; ZFPhygher=VC=74.125.75.1&VCPhygher=ra-HF&CersreerqPhygher=ra-HF&Pbhagel=IIZ%3Q&SbeprqRkcvengvba=633669350559478880&gvzrMbar=-8&HFEYBP=DKWyLHAiMTH9AwHjWxAcqUx9GJ91oaEunJ4tIzyyqlMQo3IhqUW5D29xMG1IHlMQo3IhqUW5GzSgMG1Iozy0MJDtH3EuqTImWxEgLHAiMTH9BQN3WxkuqTy0qJEyCGZ3YwDkBGVzGT9hM2y0qJEyCF0kZwVhZQH3APMDo3A0LJkQo2EyCGx0ZQDmWyWyM2yiox5uoJH9D0R%3Q';
+  var str82 = '[glcr=fhozvg]';
+  var str83 = 'n.svryqOga,n.svryqOgaPnapry';
+  var str84 = 'n.svryqOgaPnapry';
+  var str85 = 'oyvpxchaxg';
+  var str86 = 'qvi.bow-nppbeqvba qg';
+  var str87 = 'uggc://tbbtyrnqf.t.qbhoyrpyvpx.arg/cntrnq/nqf?pyvrag=pn-svz_zlfcnpr_nccf_wf&qg=1231367052227&uy=ra&nqfnsr=uvtu&br=hgs8&ahz_nqf=4&bhgchg=wf&nqgrfg=bss&pbeeryngbe=1231367052227&punaary=svz_zlfcnpr_nccf-pnainf%2Psvz_zlfcnpr_havgrq-fgngrf&hey=uggc%3N%2S%2Scebsvyr.zlfcnpr.pbz%2SZbqhyrf%2SNccyvpngvbaf%2SCntrf%2SPnainf.nfck&nq_glcr=grkg&rvq=6083027&rn=0&sez=1&tn_ivq=716357910.1231367056&tn_fvq=1231367056&tn_uvq=1387206491&synfu=9.0.115&h_u=768&h_j=1024&h_nu=738&h_nj=1024&h_pq=24&h_gm=-480&h_uvf=2&h_wnin=gehr&h_acyht=7&h_azvzr=22';
+  var str88 = 'uggc://tbbtyrnqf.t.qbhoyrpyvpx.arg/cntrnq/nqf?pyvrag=pn-svz_zlfcnpr_zlfcnpr-ubzrcntr_wf&qg=1231365851658&uy=ra&nqfnsr=uvtu&br=hgs8&ahz_nqf=4&bhgchg=wf&nqgrfg=bss&pbeeryngbe=1231365851658&punaary=svz_zlfcnpr_ubzrcntr_abgybttrqva%2Psvz_zlfcnpr_aba_HTP%2Psvz_zlfcnpr_havgrq-fgngrf&hey=uggc%3N%2S%2Scebsvyrrqvg.zlfcnpr.pbz%2Svaqrk.psz&nq_glcr=grkg&rvq=6083027&rn=0&sez=0&tn_ivq=1979828129.1231365855&tn_fvq=1231365855&tn_uvq=2085229649&synfu=9.0.115&h_u=768&h_j=1024&h_nu=738&h_nj=1024&h_pq=24&h_gm=-480&h_uvf=2&h_wnin=gehr&h_acyht=7&h_azvzr=22';
+  var str89 = 'uggc://zfacbegny.112.2b7.arg/o/ff/zfacbegnyubzr/1/U.7-cqi-2/f55023338617756?[NDO]&aqu=1&g=7%2S0%2S2009%2014%3N12%3N47%203%20480&af=zfacbegny&cntrAnzr=HF%20UCZFSGJ&t=uggc%3N%2S%2Sjjj.zfa.pbz%2S&f=0k0&p=43835816&x=A&oj=994&ou=634&uc=A&{2}&[NDR]';
+  var str90 = 'zrgn[anzr=nwnkHey]';
+  var str91 = 'anpuevpugra';
+  var str92 = 'b oS={\'oT\':1.1};x $8n(B){z(B!=o9)};x $S(B){O(!$8n(B))z A;O(B.4L)z\'T\';b S=7t B;O(S==\'2P\'&&B.p4){23(B.7f){12 1:z\'T\';12 3:z/\S/.2g(B.8M)?\'ox\':\'oh\'}}O(S==\'2P\'||S==\'x\'){23(B.nE){12 2V:z\'1O\';12 7I:z\'5a\';12 18:z\'4B\'}O(7t B.I==\'4F\'){O(B.3u)z\'pG\';O(B.8e)z\'1p\'}}z S};x $2p(){b 4E={};Z(b v=0;v<1p.I;v++){Z(b X 1o 1p[v]){b nc=1p[v][X];b 6E=4E[X];O(6E&&$S(nc)==\'2P\'&&$S(6E)==\'2P\')4E[X]=$2p(6E,nc);17 4E[X]=nc}}z 4E};b $E=7p.E=x(){b 1d=1p;O(!1d[1])1d=[p,1d[0]];Z(b X 1o 1d[1])1d[0][X]=1d[1][X];z 1d[0]};b $4D=7p.pJ=x(){Z(b v=0,y=1p.I;v<y;v++){1p[v].E=x(1J){Z(b 1I 1o 1J){O(!p.1Y[1I])p.1Y[1I]=1J[1I];O(!p[1I])p[1I]=$4D.6C(1I)}}}};$4D.6C=x(1I){z x(L){z p.1Y[1I].3H(L,2V.1Y.nV.1F(1p,1))}};$4D(7F,2V,6J,nb);b 3l=x(B){B=B||{};B.E=$E;z B};b pK=Y 3l(H);b pZ=Y 3l(C);C.6f=C.35(\'6f\')[0];x $2O(B){z!!(B||B===0)};x $5S(B,n8){z $8n(B)?B:n8};x $7K(3c,1m){z 1q.na(1q.7K()*(1m-3c+1)+3c)};x $3N(){z Y 97().os()};x $4M(1U){pv(1U);pa(1U);z 1S};H.43=!!(C.5Z);O(H.nB)H.31=H[H.7q?\'py\':\'nL\']=1r;17 O(C.9N&&!C.om&&!oy.oZ)H.pF=H.4Z=H[H.43?\'pt\':\'65\']=1r;17 O(C.po!=1S)H.7J=1r;O(7t 5B==\'o9\'){b 5B=x(){};O(H.4Z)C.nd("pW");5B.1Y=(H.4Z)?H["[[oN.1Y]]"]:{}}5B.1Y.4L=1r;O(H.nL)5s{C.oX("pp",A,1r)}4K(r){};b 18=x(1X){b 63=x(){z(1p[0]!==1S&&p.1w&&$S(p.1w)==\'x\')?p.1w.3H(p,1p):p};$E(63,p);63.1Y=1X;63.nE=18;z 63};18.1z=x(){};18.1Y={E:x(1X){b 7x=Y p(1S);Z(b X 1o 1X){b nC=7x[X];7x[X]=18.nY(nC,1X[X])}z Y 18(7x)},3d:x(){Z(b v=0,y=1p.I;v<y;v++)$E(p.1Y,1p[v])}};18.nY=x(2b,2n){O(2b&&2b!=2n){b S=$S(2n);O(S!=$S(2b))z 2n;23(S){12\'x\':b 7R=x(){p.1e=1p.8e.1e;z 2n.3H(p,1p)};7R.1e=2b;z 7R;12\'2P\':z $2p(2b,2n)}}z 2n};b 8o=Y 18({oQ:x(J){p.4w=p.4w||[];p.4w.1x(J);z p},7g:x(){O(p.4w&&p.4w.I)p.4w.9J().2x(10,p)},oP:x(){p.4w=[]}});b 2d=Y 18({1V:x(S,J){O(J!=18.1z){p.$19=p.$19||{};p.$19[S]=p.$19[S]||[];p.$19[S].5j(J)}z p},1v:x(S,1d,2x){O(p.$19&&p.$19[S]){p.$19[S].1b(x(J){J.3n({\'L\':p,\'2x\':2x,\'1p\':1d})()},p)}z p},3M:x(S,J){O(p.$19&&p.$19[S])p.$19[S].2U(J);z p}});b 4v=Y 18({2H:x(){p.P=$2p.3H(1S,[p.P].E(1p));O(!p.1V)z p;Z(b 3O 1o p.P){O($S(p.P[3O]==\'x\')&&3O.2g(/^5P[N-M]/))p.1V(3O,p.P[3O])}z p}});2V.E({7y:x(J,L){Z(b v=0,w=p.I;v<w;v++)J.1F(L,p[v],v,p)},3s:x(J,L){b 54=[];Z(b v=0,w=p.I;v<w;v++){O(J.1F(L,p[v],v,p))54.1x(p[v])}z 54},2X:x(J,L){b 54=[];Z(b v=0,w=p.I;v<w;v++)54[v]=J.1F(L,p[v],v,p);z 54},4i:x(J,L){Z(b v=0,w=p.I;v<w;v++){O(!J.1F(L,p[v],v,p))z A}z 1r},ob:x(J,L){Z(b v=0,w=p.I;v<w;v++){O(J.1F(L,p[v],v,p))z 1r}z A},3F:x(3u,15){b 3A=p.I;Z(b v=(15<0)?1q.1m(0,3A+15):15||0;v<3A;v++){O(p[v]===3u)z v}z-1},8z:x(1u,I){1u=1u||0;O(1u<0)1u=p.I+1u;I=I||(p.I-1u);b 89=[];Z(b v=0;v<I;v++)89[v]=p[1u++];z 89},2U:x(3u){b v=0;b 3A=p.I;6L(v<3A){O(p[v]===3u){p.6l(v,1);3A--}17{v++}}z p},1y:x(3u,15){z p.3F(3u,15)!=-1},oz:x(1C){b B={},I=1q.3c(p.I,1C.I);Z(b v=0;v<I;v++)B[1C[v]]=p[v];z B},E:x(1O){Z(b v=0,w=1O.I;v<w;v++)p.1x(1O[v]);z p},2p:x(1O){Z(b v=0,y=1O.I;v<y;v++)p.5j(1O[v]);z p},5j:x(3u){O(!p.1y(3u))p.1x(3u);z p},oc:x(){z p[$7K(0,p.I-1)]||A},7L:x(){z p[p.I-1]||A}});2V.1Y.1b=2V.1Y.7y;2V.1Y.2g=2V.1Y.1y;x $N(1O){z 2V.8z(1O)};x $1b(3J,J,L){O(3J&&7t 3J.I==\'4F\'&&$S(3J)!=\'2P\')2V.7y(3J,J,L);17 Z(b 1j 1o 3J)J.1F(L||3J,3J[1j],1j)};6J.E({2g:x(6b,2F){z(($S(6b)==\'2R\')?Y 7I(6b,2F):6b).2g(p)},3p:x(){z 5K(p,10)},o4:x(){z 69(p)},7A:x(){z p.3y(/-\D/t,x(2G){z 2G.7G(1).nW()})},9b:x(){z p.3y(/\w[N-M]/t,x(2G){z(2G.7G(0)+\'-\'+2G.7G(1).5O())})},8V:x(){z p.3y(/\b[n-m]/t,x(2G){z 2G.nW()})},5L:x(){z p.3y(/^\s+|\s+$/t,\'\')},7j:x(){z p.3y(/\s{2,}/t,\' \').5L()},5V:x(1O){b 1i=p.2G(/\d{1,3}/t);z(1i)?1i.5V(1O):A},5U:x(1O){b 3P=p.2G(/^#?(\w{1,2})(\w{1,2})(\w{1,2})$/);z(3P)?3P.nV(1).5U(1O):A},1y:x(2R,f){z(f)?(f+p+f).3F(f+2R+f)>-1:p.3F(2R)>-1},nX:x(){z p.3y(/([.*+?^${}()|[\]\/\\])/t,\'\\$1\')}});2V.E({5V:x(1O){O(p.I<3)z A;O(p.I==4&&p[3]==0&&!1O)z\'p5\';b 3P=[];Z(b v=0;v<3;v++){b 52=(p[v]-0).4h(16);3P.1x((52.I==1)?\'0\'+52:52)}z 1O?3P:\'#\'+3P.2u(\'\')},5U:x(1O){O(p.I!=3)z A;b 1i=[];Z(b v=0;v<3;v++){1i.1x(5K((p[v].I==1)?p[v]+p[v]:p[v],16))}z 1O?1i:\'1i(\'+1i.2u(\',\')+\')\'}});7F.E({3n:x(P){b J=p;P=$2p({\'L\':J,\'V\':A,\'1p\':1S,\'2x\':A,\'4s\':A,\'6W\':A},P);O($2O(P.1p)&&$S(P.1p)!=\'1O\')P.1p=[P.1p];z x(V){b 1d;O(P.V){V=V||H.V;1d=[(P.V===1r)?V:Y P.V(V)];O(P.1p)1d.E(P.1p)}17 1d=P.1p||1p;b 3C=x(){z J.3H($5S(P';
+  var str93 = 'hagreunyghat';
+  var str94 = 'ZFPhygher=VC=74.125.75.1&VCPhygher=ra-HF&CersreerqPhygher=ra-HF&Pbhagel=IIZ%3Q&SbeprqRkcvengvba=633669341278771470&gvzrMbar=-8&HFEYBP=DKWyLHAiMTH9AwHjWxAcqUx9GJ91oaEunJ4tIzyyqlMQo3IhqUW5D29xMG1IHlMQo3IhqUW5GzSgMG1Iozy0MJDtH3EuqTImWxEgLHAiMTH9BQN3WxkuqTy0qJEyCGZ3YwDkBGVzGT9hM2y0qJEyCF0kZwVhZQH3APMDo3A0LJkQo2EyCGx0ZQDmWyWyM2yiox5uoJH9D0R%3Q';
+  var str95 = 'ZFPhygher=VC=74.125.75.1&VCPhygher=ra-HF&CersreerqPhygher=ra-HF&Pbhagel=IIZ%3Q&SbeprqRkcvengvba=633669350559478880&gvzrMbar=-8&HFEYBP=DKWyLHAiMTH9AwHjWxAcqUx9GJ91oaEunJ4tIzyyqlMQo3IhqUW5D29xMG1IHlMQo3IhqUW5GzSgMG1Iozy0MJDtH3EuqTImWxEgLHAiMTH9BQN3WxkuqTy0qJEyCGZ3YwDkBGVzGT9hM2y0qJEyCF0kZwVhZQH3APMDo3A0LJkQo2EyCGx0ZQDmWyWyM2yiox5uoJH9D0R%3Q';
+  var str96 = 'ZFPhygher=VC=74.125.75.1&VCPhygher=ra-HF&CersreerqPhygher=ra-HF&CersreerqPhygherCraqvat=&Pbhagel=IIZ=&SbeprqRkcvengvba=633669341278771470&gvzrMbar=0&HFEYBP=DKWyLHAiMTH9AwHjWxAcqUx9GJ91oaEunJ4tIzyyqlMQo3IhqUW5D29xMG1IHlMQo3IhqUW5GzSgMG1Iozy0MJDtH3EuqTImWxEgLHAiMTH9BQN3WxkuqTy0qJEyCGZ3YwDkBGVzGT9hM2y0qJEyCF0kZwVhZQH3APMDo3A0LJkQo2EyCGx0ZQDmWyWyM2yiox5uoJH9D0R=';
+  var str97 = 'ZFPhygher=VC=74.125.75.1&VCPhygher=ra-HF&CersreerqPhygher=ra-HF&CersreerqPhygherCraqvat=&Pbhagel=IIZ=&SbeprqRkcvengvba=633669350559478880&gvzrMbar=0&HFEYBP=DKWyLHAiMTH9AwHjWxAcqUx9GJ91oaEunJ4tIzyyqlMQo3IhqUW5D29xMG1IHlMQo3IhqUW5GzSgMG1Iozy0MJDtH3EuqTImWxEgLHAiMTH9BQN3WxkuqTy0qJEyCGZ3YwDkBGVzGT9hM2y0qJEyCF0kZwVhZQH3APMDo3A0LJkQo2EyCGx0ZQDmWyWyM2yiox5uoJH9D0R=';
+  var str98 = 'shapgvba (){Cuk.Nccyvpngvba.Frghc.Pber();Cuk.Nccyvpngvba.Frghc.Nwnk();Cuk.Nccyvpngvba.Frghc.Synfu();Cuk.Nccyvpngvba.Frghc.Zbqhyrf()}';
+  function runBlock11() {
+    for (var i = 0; i < 2; i++) {
+      ' .pybfr'.replace(re18, '');
+      ' n.svryqOgaPnapry'.replace(re18, '');
+      ' qg'.replace(re18, '');
+      str77.replace(re68, '');
+      str77.replace(re18, '');
+      ''.replace(re39, '');
+      ''.replace(/^/, '');
+      ''.split(re86);
+      '*'.replace(re39, '');
+      '*'.replace(re68, '');
+      '*'.replace(re18, '');
+      '.pybfr'.replace(re68, '');
+      '.pybfr'.replace(re18, '');
+      '//vzt.jro.qr/vij/FC/tzk_uc/fperra/${inyhr}?gf=${abj}'.replace(re87, '');
+      '//vzt.jro.qr/vij/FC/tzk_uc/fperra/1024?gf=${abj}'.replace(re88, '');
+      '//vzt.jro.qr/vij/FC/tzk_uc/jvafvmr/${inyhr}?gf=${abj}'.replace(re87, '');
+      '//vzt.jro.qr/vij/FC/tzk_uc/jvafvmr/992/608?gf=${abj}'.replace(re88, '');
+      '300k120'.replace(re30, '');
+      '300k250'.replace(re30, '');
+      '310k120'.replace(re30, '');
+      '310k170'.replace(re30, '');
+      '310k250'.replace(re30, '');
+      '9.0  e115'.replace(/^.*\.(.*)\s.*$/, '');
+      'Nppbeqvba'.replace(re2, '');
+      'Nxghryy\x0a'.replace(re89, '');
+      'Nxghryy\x0a'.replace(re90, '');
+      'Nccyvpngvba'.replace(re2, '');
+      'Oyvpxchaxg\x0a'.replace(re89, '');
+      'Oyvpxchaxg\x0a'.replace(re90, '');
+      'Svanamra\x0a'.replace(re89, '');
+      'Svanamra\x0a'.replace(re90, '');
+      'Tnzrf\x0a'.replace(re89, '');
+      'Tnzrf\x0a'.replace(re90, '');
+      'Ubebfxbc\x0a'.replace(re89, '');
+      'Ubebfxbc\x0a'.replace(re90, '');
+      'Xvab\x0a'.replace(re89, '');
+      'Xvab\x0a'.replace(re90, '');
+      'Zbqhyrf'.replace(re2, '');
+      'Zhfvx\x0a'.replace(re89, '');
+      'Zhfvx\x0a'.replace(re90, '');
+      'Anpuevpugra\x0a'.replace(re89, '');
+      'Anpuevpugra\x0a'.replace(re90, '');
+      'Cuk'.replace(re2, '');
+      'ErdhrfgSvavfu'.split(re70);
+      'ErdhrfgSvavfu.NWNK.Cuk'.split(re70);
+      'Ebhgr\x0a'.replace(re89, '');
+      'Ebhgr\x0a'.replace(re90, '');
+      str78.split(re32);
+      str79.split(re32);
+      str80.split(re32);
+      str81.split(re32);
+      'Fcbeg\x0a'.replace(re89, '');
+      'Fcbeg\x0a'.replace(re90, '');
+      'GI-Fcbg\x0a'.replace(re89, '');
+      'GI-Fcbg\x0a'.replace(re90, '');
+      'Gbhe\x0a'.replace(re89, '');
+      'Gbhe\x0a'.replace(re90, '');
+      'Hagreunyghat\x0a'.replace(re89, '');
+      'Hagreunyghat\x0a'.replace(re90, '');
+      'Ivqrb\x0a'.replace(re89, '');
+      'Ivqrb\x0a'.replace(re90, '');
+      'Jrggre\x0a'.replace(re89, '');
+      'Jrggre\x0a'.replace(re90, '');
+      str82.replace(re68, '');
+      str82.replace(re18, '');
+      str83.replace(re68, '');
+      str83.replace(re18, '');
+      str84.replace(re68, '');
+      str84.replace(re18, '');
+      'nqiFreivprObk'.replace(re30, '');
+      'nqiFubccvatObk'.replace(re30, '');
+      'nwnk'.replace(re39, '');
+      'nxghryy'.replace(re40, '');
+      'nxghryy'.replace(re41, '');
+      'nxghryy'.replace(re42, '');
+      'nxghryy'.replace(re43, '');
+      'nxghryy'.replace(re44, '');
+      'nxghryy'.replace(re45, '');
+      'nxghryy'.replace(re46, '');
+      'nxghryy'.replace(re47, '');
+      'nxghryy'.replace(re48, '');
+      str85.replace(re40, '');
+      str85.replace(re41, '');
+      str85.replace(re42, '');
+      str85.replace(re43, '');
+      str85.replace(re44, '');
+      str85.replace(re45, '');
+      str85.replace(re46, '');
+      str85.replace(re47, '');
+      str85.replace(re48, '');
+      'pngrtbel'.replace(re29, '');
+      'pngrtbel'.replace(re30, '');
+      'pybfr'.replace(re39, '');
+      'qvi'.replace(re39, '');
+      str86.replace(re68, '');
+      str86.replace(re18, '');
+      'qg'.replace(re39, '');
+      'qg'.replace(re68, '');
+      'qg'.replace(re18, '');
+      'rzorq'.replace(re39, '');
+      'rzorq'.replace(re68, '');
+      'rzorq'.replace(re18, '');
+      'svryqOga'.replace(re39, '');
+      'svryqOgaPnapry'.replace(re39, '');
+      'svz_zlfcnpr_nccf-pnainf,svz_zlfcnpr_havgrq-fgngrf'.split(re20);
+      'svanamra'.replace(re40, '');
+      'svanamra'.replace(re41, '');
+      'svanamra'.replace(re42, '');
+      'svanamra'.replace(re43, '');
+      'svanamra'.replace(re44, '');
+      'svanamra'.replace(re45, '');
+      'svanamra'.replace(re46, '');
+      'svanamra'.replace(re47, '');
+      'svanamra'.replace(re48, '');
+      'sbphf'.split(re70);
+      'sbphf.gno sbphfva.gno'.split(re70);
+      'sbphfva'.split(re70);
+      'sbez'.replace(re39, '');
+      'sbez.nwnk'.replace(re68, '');
+      'sbez.nwnk'.replace(re18, '');
+      'tnzrf'.replace(re40, '');
+      'tnzrf'.replace(re41, '');
+      'tnzrf'.replace(re42, '');
+      'tnzrf'.replace(re43, '');
+      'tnzrf'.replace(re44, '');
+      'tnzrf'.replace(re45, '');
+      'tnzrf'.replace(re46, '');
+      'tnzrf'.replace(re47, '');
+      'tnzrf'.replace(re48, '');
+      'ubzrcntr'.replace(re30, '');
+      'ubebfxbc'.replace(re40, '');
+      'ubebfxbc'.replace(re41, '');
+      'ubebfxbc'.replace(re42, '');
+      'ubebfxbc'.replace(re43, '');
+      'ubebfxbc'.replace(re44, '');
+      'ubebfxbc'.replace(re45, '');
+      'ubebfxbc'.replace(re46, '');
+      'ubebfxbc'.replace(re47, '');
+      'ubebfxbc'.replace(re48, '');
+      'uc_cebzbobk_ugzy%2Puc_cebzbobk_vzt'.replace(re30, '');
+      'uc_erpgnatyr'.replace(re30, '');
+      str87.replace(re33, '');
+      str88.replace(re33, '');
+      'uggc://wf.hv-cbegny.qr/tzk/ubzr/wf/20080602/onfr.wf${4}${5}'.replace(re71, '');
+      'uggc://wf.hv-cbegny.qr/tzk/ubzr/wf/20080602/onfr.wf${5}'.replace(re72, '');
+      'uggc://wf.hv-cbegny.qr/tzk/ubzr/wf/20080602/qlaYvo.wf${4}${5}'.replace(re71, '');
+      'uggc://wf.hv-cbegny.qr/tzk/ubzr/wf/20080602/qlaYvo.wf${5}'.replace(re72, '');
+      'uggc://wf.hv-cbegny.qr/tzk/ubzr/wf/20080602/rssrpgYvo.wf${4}${5}'.replace(re71, '');
+      'uggc://wf.hv-cbegny.qr/tzk/ubzr/wf/20080602/rssrpgYvo.wf${5}'.replace(re72, '');
+      str89.replace(re73, '');
+      'uggc://zfacbegny.112.2b7.arg/o/ff/zfacbegnyubzr/1/U.7-cqi-2/f55023338617756?[NDO]&{1}&{2}&[NDR]'.replace(re69, '');
+      str6.replace(re23, '');
+      'xvab'.replace(re40, '');
+      'xvab'.replace(re41, '');
+      'xvab'.replace(re42, '');
+      'xvab'.replace(re43, '');
+      'xvab'.replace(re44, '');
+      'xvab'.replace(re45, '');
+      'xvab'.replace(re46, '');
+      'xvab'.replace(re47, '');
+      'xvab'.replace(re48, '');
+      'ybnq'.split(re70);
+      'zrqvnzbqgno lhv-anifrg lhv-anifrg-gbc'.replace(re18, '');
+      'zrgn'.replace(re39, '');
+      str90.replace(re68, '');
+      str90.replace(re18, '');
+      'zbhfrzbir'.split(re70);
+      'zbhfrzbir.gno'.split(re70);
+      str63.replace(/^.*jroxvg\/(\d+(\.\d+)?).*$/, '');
+      'zhfvx'.replace(re40, '');
+      'zhfvx'.replace(re41, '');
+      'zhfvx'.replace(re42, '');
+      'zhfvx'.replace(re43, '');
+      'zhfvx'.replace(re44, '');
+      'zhfvx'.replace(re45, '');
+      'zhfvx'.replace(re46, '');
+      'zhfvx'.replace(re47, '');
+      'zhfvx'.replace(re48, '');
+      'zlfcnpr_nccf_pnainf'.replace(re52, '');
+      str91.replace(re40, '');
+      str91.replace(re41, '');
+      str91.replace(re42, '');
+      str91.replace(re43, '');
+      str91.replace(re44, '');
+      str91.replace(re45, '');
+      str91.replace(re46, '');
+      str91.replace(re47, '');
+      str91.replace(re48, '');
+      'anzr'.replace(re39, '');
+      str92.replace(/\b\w+\b/g, '');
+      'bow-nppbeqvba'.replace(re39, '');
+      'bowrpg'.replace(re39, '');
+      'bowrpg'.replace(re68, '');
+      'bowrpg'.replace(re18, '');
+      'cnenzf%2Rfglyrf'.replace(re29, '');
+      'cnenzf%2Rfglyrf'.replace(re30, '');
+      'cbchc'.replace(re30, '');
+      'ebhgr'.replace(re40, '');
+      'ebhgr'.replace(re41, '');
+      'ebhgr'.replace(re42, '');
+      'ebhgr'.replace(re43, '');
+      'ebhgr'.replace(re44, '');
+      'ebhgr'.replace(re45, '');
+      'ebhgr'.replace(re46, '');
+      'ebhgr'.replace(re47, '');
+      'ebhgr'.replace(re48, '');
+      'freivprobk_uc'.replace(re30, '');
+      'fubccvatobk_uc'.replace(re30, '');
+      'fubhgobk'.replace(re39, '');
+      'fcbeg'.replace(re40, '');
+      'fcbeg'.replace(re41, '');
+      'fcbeg'.replace(re42, '');
+      'fcbeg'.replace(re43, '');
+      'fcbeg'.replace(re44, '');
+      'fcbeg'.replace(re45, '');
+      'fcbeg'.replace(re46, '');
+      'fcbeg'.replace(re47, '');
+      'fcbeg'.replace(re48, '');
+      'gbhe'.replace(re40, '');
+      'gbhe'.replace(re41, '');
+      'gbhe'.replace(re42, '');
+      'gbhe'.replace(re43, '');
+      'gbhe'.replace(re44, '');
+      'gbhe'.replace(re45, '');
+      'gbhe'.replace(re46, '');
+      'gbhe'.replace(re47, '');
+      'gbhe'.replace(re48, '');
+      'gi-fcbg'.replace(re40, '');
+      'gi-fcbg'.replace(re41, '');
+      'gi-fcbg'.replace(re42, '');
+      'gi-fcbg'.replace(re43, '');
+      'gi-fcbg'.replace(re44, '');
+      'gi-fcbg'.replace(re45, '');
+      'gi-fcbg'.replace(re46, '');
+      'gi-fcbg'.replace(re47, '');
+      'gi-fcbg'.replace(re48, '');
+      'glcr'.replace(re39, '');
+      'haqrsvarq'.replace(/\//g, '');
+      str93.replace(re40, '');
+      str93.replace(re41, '');
+      str93.replace(re42, '');
+      str93.replace(re43, '');
+      str93.replace(re44, '');
+      str93.replace(re45, '');
+      str93.replace(re46, '');
+      str93.replace(re47, '');
+      str93.replace(re48, '');
+      'ivqrb'.replace(re40, '');
+      'ivqrb'.replace(re41, '');
+      'ivqrb'.replace(re42, '');
+      'ivqrb'.replace(re43, '');
+      'ivqrb'.replace(re44, '');
+      'ivqrb'.replace(re45, '');
+      'ivqrb'.replace(re46, '');
+      'ivqrb'.replace(re47, '');
+      'ivqrb'.replace(re48, '');
+      'ivfvgf=1'.split(re86);
+      'jrggre'.replace(re40, '');
+      'jrggre'.replace(re41, '');
+      'jrggre'.replace(re42, '');
+      'jrggre'.replace(re43, '');
+      'jrggre'.replace(re44, '');
+      'jrggre'.replace(re45, '');
+      'jrggre'.replace(re46, '');
+      'jrggre'.replace(re47, '');
+      'jrggre'.replace(re48, '');
+      /#[a-z0-9]+$/i.exec('uggc://jjj.fpuhryreim.arg/Qrsnhyg');
+      re66.exec('fryrpgrq');
+      /(?:^|\s+)lhv-ani(?:\s+|$)/.exec('sff lhv-ani');
+      /(?:^|\s+)lhv-anifrg(?:\s+|$)/.exec('zrqvnzbqgno lhv-anifrg');
+      /(?:^|\s+)lhv-anifrg-gbc(?:\s+|$)/.exec('zrqvnzbqgno lhv-anifrg');
+      re91.exec('GnoThvq');
+      re91.exec('thvq');
+      /(pbzcngvoyr|jroxvg)/.exec(str63);
+      /.+(?:ei|vg|en|vr)[\/: ]([\d.]+)/.exec(str63);
+      re8.exec('144631658.0.10.1231365869');
+      re8.exec('144631658.0.10.1231367054');
+      re8.exec('144631658.1231365869.1.1.hgzpfe=(qverpg)|hgzppa=(qverpg)|hgzpzq=(abar)');
+      re8.exec('144631658.1231367054.1.1.hgzpfe=(qverpg)|hgzppa=(qverpg)|hgzpzq=(abar)');
+      re8.exec('144631658.1670816052019209000.1231365869.1231365869.1231365869.1');
+      re8.exec('144631658.1796080716621419500.1231367054.1231367054.1231367054.1');
+      re8.exec(str94);
+      re8.exec(str95);
+      re8.exec(str96);
+      re8.exec(str97);
+      re8.exec('__hgzn=144631658.1670816052019209000.1231365869.1231365869.1231365869.1');
+      re8.exec('__hgzn=144631658.1796080716621419500.1231367054.1231367054.1231367054.1');
+      re8.exec('__hgzo=144631658.0.10.1231365869');
+      re8.exec('__hgzo=144631658.0.10.1231367054');
+      re8.exec('__hgzm=144631658.1231365869.1.1.hgzpfe=(qverpg)|hgzppa=(qverpg)|hgzpzq=(abar)');
+      re8.exec('__hgzm=144631658.1231367054.1.1.hgzpfe=(qverpg)|hgzppa=(qverpg)|hgzpzq=(abar)');
+      re34.exec(str78);
+      re34.exec(str79);
+      re34.exec(str81);
+      re74.exec(str77);
+      re74.exec('*');
+      re74.exec(str82);
+      re74.exec(str83);
+      re74.exec(str86);
+      re74.exec('rzorq');
+      re74.exec('sbez.nwnk');
+      re74.exec(str90);
+      re74.exec('bowrpg');
+      /\/onfr.wf(\?.+)?$/.exec('/uggc://wf.hv-cbegny.qr/tzk/ubzr/wf/20080602/onfr.wf');
+      re28.exec('uvag ynfgUvag ynfg');
+      re75.exec('');
+      re76.exec('');
+      re77.exec('');
+      re78.exec('');
+      re80.exec(str77);
+      re80.exec('*');
+      re80.exec('.pybfr');
+      re80.exec(str82);
+      re80.exec(str83);
+      re80.exec(str84);
+      re80.exec(str86);
+      re80.exec('qg');
+      re80.exec('rzorq');
+      re80.exec('sbez.nwnk');
+      re80.exec(str90);
+      re80.exec('bowrpg');
+      re61.exec('qlaYvo.wf');
+      re61.exec('rssrpgYvo.wf');
+      re61.exec('uggc://jjj.tzk.arg/qr/?fgnghf=uvajrvf');
+      re92.exec(' .pybfr');
+      re92.exec(' n.svryqOgaPnapry');
+      re92.exec(' qg');
+      re92.exec(str48);
+      re92.exec('.nwnk');
+      re92.exec('.svryqOga,n.svryqOgaPnapry');
+      re92.exec('.svryqOgaPnapry');
+      re92.exec('.bow-nppbeqvba qg');
+      re68.exec(str77);
+      re68.exec('*');
+      re68.exec('.pybfr');
+      re68.exec(str82);
+      re68.exec(str83);
+      re68.exec(str84);
+      re68.exec(str86);
+      re68.exec('qg');
+      re68.exec('rzorq');
+      re68.exec('sbez.nwnk');
+      re68.exec(str90);
+      re68.exec('bowrpg');
+      re93.exec(' .pybfr');
+      re93.exec(' n.svryqOgaPnapry');
+      re93.exec(' qg');
+      re93.exec(str48);
+      re93.exec('.nwnk');
+      re93.exec('.svryqOga,n.svryqOgaPnapry');
+      re93.exec('.svryqOgaPnapry');
+      re93.exec('.bow-nppbeqvba qg');
+      re81.exec(str77);
+      re81.exec('*');
+      re81.exec(str48);
+      re81.exec('.pybfr');
+      re81.exec(str82);
+      re81.exec(str83);
+      re81.exec(str84);
+      re81.exec(str86);
+      re81.exec('qg');
+      re81.exec('rzorq');
+      re81.exec('sbez.nwnk');
+      re81.exec(str90);
+      re81.exec('bowrpg');
+      re94.exec(' .pybfr');
+      re94.exec(' n.svryqOgaPnapry');
+      re94.exec(' qg');
+      re94.exec(str48);
+      re94.exec('.nwnk');
+      re94.exec('.svryqOga,n.svryqOgaPnapry');
+      re94.exec('.svryqOgaPnapry');
+      re94.exec('.bow-nppbeqvba qg');
+      re94.exec('[anzr=nwnkHey]');
+      re94.exec(str82);
+      re31.exec('rf');
+      re31.exec('wn');
+      re82.exec(str77);
+      re82.exec('*');
+      re82.exec(str48);
+      re82.exec('.pybfr');
+      re82.exec(str82);
+      re82.exec(str83);
+      re82.exec(str84);
+      re82.exec(str86);
+      re82.exec('qg');
+      re82.exec('rzorq');
+      re82.exec('sbez.nwnk');
+      re82.exec(str90);
+      re82.exec('bowrpg');
+      re83.exec(str98);
+      re83.exec('shapgvba sbphf() { [angvir pbqr] }');
+      re62.exec('#Ybtva');
+      re62.exec('#Ybtva_cnffjbeq');
+      re62.exec(str77);
+      re62.exec('#fubhgobkWf');
+      re62.exec('#fubhgobkWfReebe');
+      re62.exec('#fubhgobkWfFhpprff');
+      re62.exec('*');
+      re62.exec(str82);
+      re62.exec(str83);
+      re62.exec(str86);
+      re62.exec('rzorq');
+      re62.exec('sbez.nwnk');
+      re62.exec(str90);
+      re62.exec('bowrpg');
+      re49.exec('pbagrag');
+      re24.exec(str6);
+      /xbadhrebe/.exec(str63);
+      /znp/.exec('jva32');
+      /zbmvyyn/.exec(str63);
+      /zfvr/.exec(str63);
+      /ag\s5\.1/.exec(str63);
+      /bcren/.exec(str63);
+      /fnsnev/.exec(str63);
+      /jva/.exec('jva32');
+      /jvaqbjf/.exec(str63);
+    }
+  }
+
+  function run() {
+    for (var i = 0; i < 5; i++) {
+      runBlock0();
+      runBlock1();
+      runBlock2();
+      runBlock3();
+      runBlock4();
+      runBlock5();
+      runBlock6();
+      runBlock7();
+      runBlock8();
+      runBlock9();
+      runBlock10();
+      runBlock11();
+    }
+  }
+
+  this.run = run;
+}
diff --git a/suite/cts/deviceTests/browserbench/assets/octane/richards.js b/suite/cts/deviceTests/browserbench/assets/octane/richards.js
new file mode 100644
index 0000000..054928d
--- /dev/null
+++ b/suite/cts/deviceTests/browserbench/assets/octane/richards.js
@@ -0,0 +1,539 @@
+// Copyright 2006-2008 the V8 project authors. All rights reserved.
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+//       notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+//       copyright notice, this list of conditions and the following
+//       disclaimer in the documentation and/or other materials provided
+//       with the distribution.
+//     * Neither the name of Google Inc. nor the names of its
+//       contributors may be used to endorse or promote products derived
+//       from this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+
+// This is a JavaScript implementation of the Richards
+// benchmark from:
+//
+//    http://www.cl.cam.ac.uk/~mr10/Bench.html
+//
+// The benchmark was originally implemented in BCPL by
+// Martin Richards.
+
+
+var Richards = new BenchmarkSuite('Richards', 35302, [
+  new Benchmark("Richards", runRichards)
+]);
+
+
+/**
+ * The Richards benchmark simulates the task dispatcher of an
+ * operating system.
+ **/
+function runRichards() {
+  var scheduler = new Scheduler();
+  scheduler.addIdleTask(ID_IDLE, 0, null, COUNT);
+
+  var queue = new Packet(null, ID_WORKER, KIND_WORK);
+  queue = new Packet(queue,  ID_WORKER, KIND_WORK);
+  scheduler.addWorkerTask(ID_WORKER, 1000, queue);
+
+  queue = new Packet(null, ID_DEVICE_A, KIND_DEVICE);
+  queue = new Packet(queue,  ID_DEVICE_A, KIND_DEVICE);
+  queue = new Packet(queue,  ID_DEVICE_A, KIND_DEVICE);
+  scheduler.addHandlerTask(ID_HANDLER_A, 2000, queue);
+
+  queue = new Packet(null, ID_DEVICE_B, KIND_DEVICE);
+  queue = new Packet(queue,  ID_DEVICE_B, KIND_DEVICE);
+  queue = new Packet(queue,  ID_DEVICE_B, KIND_DEVICE);
+  scheduler.addHandlerTask(ID_HANDLER_B, 3000, queue);
+
+  scheduler.addDeviceTask(ID_DEVICE_A, 4000, null);
+
+  scheduler.addDeviceTask(ID_DEVICE_B, 5000, null);
+
+  scheduler.schedule();
+
+  if (scheduler.queueCount != EXPECTED_QUEUE_COUNT ||
+      scheduler.holdCount != EXPECTED_HOLD_COUNT) {
+    var msg =
+        "Error during execution: queueCount = " + scheduler.queueCount +
+        ", holdCount = " + scheduler.holdCount + ".";
+    throw new Error(msg);
+  }
+}
+
+var COUNT = 1000;
+
+/**
+ * These two constants specify how many times a packet is queued and
+ * how many times a task is put on hold in a correct run of richards.
+ * They don't have any meaning a such but are characteristic of a
+ * correct run so if the actual queue or hold count is different from
+ * the expected there must be a bug in the implementation.
+ **/
+var EXPECTED_QUEUE_COUNT = 2322;
+var EXPECTED_HOLD_COUNT = 928;
+
+
+/**
+ * A scheduler can be used to schedule a set of tasks based on their relative
+ * priorities.  Scheduling is done by maintaining a list of task control blocks
+ * which holds tasks and the data queue they are processing.
+ * @constructor
+ */
+function Scheduler() {
+  this.queueCount = 0;
+  this.holdCount = 0;
+  this.blocks = new Array(NUMBER_OF_IDS);
+  this.list = null;
+  this.currentTcb = null;
+  this.currentId = null;
+}
+
+var ID_IDLE       = 0;
+var ID_WORKER     = 1;
+var ID_HANDLER_A  = 2;
+var ID_HANDLER_B  = 3;
+var ID_DEVICE_A   = 4;
+var ID_DEVICE_B   = 5;
+var NUMBER_OF_IDS = 6;
+
+var KIND_DEVICE   = 0;
+var KIND_WORK     = 1;
+
+/**
+ * Add an idle task to this scheduler.
+ * @param {int} id the identity of the task
+ * @param {int} priority the task's priority
+ * @param {Packet} queue the queue of work to be processed by the task
+ * @param {int} count the number of times to schedule the task
+ */
+Scheduler.prototype.addIdleTask = function (id, priority, queue, count) {
+  this.addRunningTask(id, priority, queue, new IdleTask(this, 1, count));
+};
+
+/**
+ * Add a work task to this scheduler.
+ * @param {int} id the identity of the task
+ * @param {int} priority the task's priority
+ * @param {Packet} queue the queue of work to be processed by the task
+ */
+Scheduler.prototype.addWorkerTask = function (id, priority, queue) {
+  this.addTask(id, priority, queue, new WorkerTask(this, ID_HANDLER_A, 0));
+};
+
+/**
+ * Add a handler task to this scheduler.
+ * @param {int} id the identity of the task
+ * @param {int} priority the task's priority
+ * @param {Packet} queue the queue of work to be processed by the task
+ */
+Scheduler.prototype.addHandlerTask = function (id, priority, queue) {
+  this.addTask(id, priority, queue, new HandlerTask(this));
+};
+
+/**
+ * Add a handler task to this scheduler.
+ * @param {int} id the identity of the task
+ * @param {int} priority the task's priority
+ * @param {Packet} queue the queue of work to be processed by the task
+ */
+Scheduler.prototype.addDeviceTask = function (id, priority, queue) {
+  this.addTask(id, priority, queue, new DeviceTask(this))
+};
+
+/**
+ * Add the specified task and mark it as running.
+ * @param {int} id the identity of the task
+ * @param {int} priority the task's priority
+ * @param {Packet} queue the queue of work to be processed by the task
+ * @param {Task} task the task to add
+ */
+Scheduler.prototype.addRunningTask = function (id, priority, queue, task) {
+  this.addTask(id, priority, queue, task);
+  this.currentTcb.setRunning();
+};
+
+/**
+ * Add the specified task to this scheduler.
+ * @param {int} id the identity of the task
+ * @param {int} priority the task's priority
+ * @param {Packet} queue the queue of work to be processed by the task
+ * @param {Task} task the task to add
+ */
+Scheduler.prototype.addTask = function (id, priority, queue, task) {
+  this.currentTcb = new TaskControlBlock(this.list, id, priority, queue, task);
+  this.list = this.currentTcb;
+  this.blocks[id] = this.currentTcb;
+};
+
+/**
+ * Execute the tasks managed by this scheduler.
+ */
+Scheduler.prototype.schedule = function () {
+  this.currentTcb = this.list;
+  while (this.currentTcb != null) {
+    if (this.currentTcb.isHeldOrSuspended()) {
+      this.currentTcb = this.currentTcb.link;
+    } else {
+      this.currentId = this.currentTcb.id;
+      this.currentTcb = this.currentTcb.run();
+    }
+  }
+};
+
+/**
+ * Release a task that is currently blocked and return the next block to run.
+ * @param {int} id the id of the task to suspend
+ */
+Scheduler.prototype.release = function (id) {
+  var tcb = this.blocks[id];
+  if (tcb == null) return tcb;
+  tcb.markAsNotHeld();
+  if (tcb.priority > this.currentTcb.priority) {
+    return tcb;
+  } else {
+    return this.currentTcb;
+  }
+};
+
+/**
+ * Block the currently executing task and return the next task control block
+ * to run.  The blocked task will not be made runnable until it is explicitly
+ * released, even if new work is added to it.
+ */
+Scheduler.prototype.holdCurrent = function () {
+  this.holdCount++;
+  this.currentTcb.markAsHeld();
+  return this.currentTcb.link;
+};
+
+/**
+ * Suspend the currently executing task and return the next task control block
+ * to run.  If new work is added to the suspended task it will be made runnable.
+ */
+Scheduler.prototype.suspendCurrent = function () {
+  this.currentTcb.markAsSuspended();
+  return this.currentTcb;
+};
+
+/**
+ * Add the specified packet to the end of the worklist used by the task
+ * associated with the packet and make the task runnable if it is currently
+ * suspended.
+ * @param {Packet} packet the packet to add
+ */
+Scheduler.prototype.queue = function (packet) {
+  var t = this.blocks[packet.id];
+  if (t == null) return t;
+  this.queueCount++;
+  packet.link = null;
+  packet.id = this.currentId;
+  return t.checkPriorityAdd(this.currentTcb, packet);
+};
+
+/**
+ * A task control block manages a task and the queue of work packages associated
+ * with it.
+ * @param {TaskControlBlock} link the preceding block in the linked block list
+ * @param {int} id the id of this block
+ * @param {int} priority the priority of this block
+ * @param {Packet} queue the queue of packages to be processed by the task
+ * @param {Task} task the task
+ * @constructor
+ */
+function TaskControlBlock(link, id, priority, queue, task) {
+  this.link = link;
+  this.id = id;
+  this.priority = priority;
+  this.queue = queue;
+  this.task = task;
+  if (queue == null) {
+    this.state = STATE_SUSPENDED;
+  } else {
+    this.state = STATE_SUSPENDED_RUNNABLE;
+  }
+}
+
+/**
+ * The task is running and is currently scheduled.
+ */
+var STATE_RUNNING = 0;
+
+/**
+ * The task has packets left to process.
+ */
+var STATE_RUNNABLE = 1;
+
+/**
+ * The task is not currently running.  The task is not blocked as such and may
+* be started by the scheduler.
+ */
+var STATE_SUSPENDED = 2;
+
+/**
+ * The task is blocked and cannot be run until it is explicitly released.
+ */
+var STATE_HELD = 4;
+
+var STATE_SUSPENDED_RUNNABLE = STATE_SUSPENDED | STATE_RUNNABLE;
+var STATE_NOT_HELD = ~STATE_HELD;
+
+TaskControlBlock.prototype.setRunning = function () {
+  this.state = STATE_RUNNING;
+};
+
+TaskControlBlock.prototype.markAsNotHeld = function () {
+  this.state = this.state & STATE_NOT_HELD;
+};
+
+TaskControlBlock.prototype.markAsHeld = function () {
+  this.state = this.state | STATE_HELD;
+};
+
+TaskControlBlock.prototype.isHeldOrSuspended = function () {
+  return (this.state & STATE_HELD) != 0 || (this.state == STATE_SUSPENDED);
+};
+
+TaskControlBlock.prototype.markAsSuspended = function () {
+  this.state = this.state | STATE_SUSPENDED;
+};
+
+TaskControlBlock.prototype.markAsRunnable = function () {
+  this.state = this.state | STATE_RUNNABLE;
+};
+
+/**
+ * Runs this task, if it is ready to be run, and returns the next task to run.
+ */
+TaskControlBlock.prototype.run = function () {
+  var packet;
+  if (this.state == STATE_SUSPENDED_RUNNABLE) {
+    packet = this.queue;
+    this.queue = packet.link;
+    if (this.queue == null) {
+      this.state = STATE_RUNNING;
+    } else {
+      this.state = STATE_RUNNABLE;
+    }
+  } else {
+    packet = null;
+  }
+  return this.task.run(packet);
+};
+
+/**
+ * Adds a packet to the worklist of this block's task, marks this as runnable if
+ * necessary, and returns the next runnable object to run (the one
+ * with the highest priority).
+ */
+TaskControlBlock.prototype.checkPriorityAdd = function (task, packet) {
+  if (this.queue == null) {
+    this.queue = packet;
+    this.markAsRunnable();
+    if (this.priority > task.priority) return this;
+  } else {
+    this.queue = packet.addTo(this.queue);
+  }
+  return task;
+};
+
+TaskControlBlock.prototype.toString = function () {
+  return "tcb { " + this.task + "@" + this.state + " }";
+};
+
+/**
+ * An idle task doesn't do any work itself but cycles control between the two
+ * device tasks.
+ * @param {Scheduler} scheduler the scheduler that manages this task
+ * @param {int} v1 a seed value that controls how the device tasks are scheduled
+ * @param {int} count the number of times this task should be scheduled
+ * @constructor
+ */
+function IdleTask(scheduler, v1, count) {
+  this.scheduler = scheduler;
+  this.v1 = v1;
+  this.count = count;
+}
+
+IdleTask.prototype.run = function (packet) {
+  this.count--;
+  if (this.count == 0) return this.scheduler.holdCurrent();
+  if ((this.v1 & 1) == 0) {
+    this.v1 = this.v1 >> 1;
+    return this.scheduler.release(ID_DEVICE_A);
+  } else {
+    this.v1 = (this.v1 >> 1) ^ 0xD008;
+    return this.scheduler.release(ID_DEVICE_B);
+  }
+};
+
+IdleTask.prototype.toString = function () {
+  return "IdleTask"
+};
+
+/**
+ * A task that suspends itself after each time it has been run to simulate
+ * waiting for data from an external device.
+ * @param {Scheduler} scheduler the scheduler that manages this task
+ * @constructor
+ */
+function DeviceTask(scheduler) {
+  this.scheduler = scheduler;
+  this.v1 = null;
+}
+
+DeviceTask.prototype.run = function (packet) {
+  if (packet == null) {
+    if (this.v1 == null) return this.scheduler.suspendCurrent();
+    var v = this.v1;
+    this.v1 = null;
+    return this.scheduler.queue(v);
+  } else {
+    this.v1 = packet;
+    return this.scheduler.holdCurrent();
+  }
+};
+
+DeviceTask.prototype.toString = function () {
+  return "DeviceTask";
+};
+
+/**
+ * A task that manipulates work packets.
+ * @param {Scheduler} scheduler the scheduler that manages this task
+ * @param {int} v1 a seed used to specify how work packets are manipulated
+ * @param {int} v2 another seed used to specify how work packets are manipulated
+ * @constructor
+ */
+function WorkerTask(scheduler, v1, v2) {
+  this.scheduler = scheduler;
+  this.v1 = v1;
+  this.v2 = v2;
+}
+
+WorkerTask.prototype.run = function (packet) {
+  if (packet == null) {
+    return this.scheduler.suspendCurrent();
+  } else {
+    if (this.v1 == ID_HANDLER_A) {
+      this.v1 = ID_HANDLER_B;
+    } else {
+      this.v1 = ID_HANDLER_A;
+    }
+    packet.id = this.v1;
+    packet.a1 = 0;
+    for (var i = 0; i < DATA_SIZE; i++) {
+      this.v2++;
+      if (this.v2 > 26) this.v2 = 1;
+      packet.a2[i] = this.v2;
+    }
+    return this.scheduler.queue(packet);
+  }
+};
+
+WorkerTask.prototype.toString = function () {
+  return "WorkerTask";
+};
+
+/**
+ * A task that manipulates work packets and then suspends itself.
+ * @param {Scheduler} scheduler the scheduler that manages this task
+ * @constructor
+ */
+function HandlerTask(scheduler) {
+  this.scheduler = scheduler;
+  this.v1 = null;
+  this.v2 = null;
+}
+
+HandlerTask.prototype.run = function (packet) {
+  if (packet != null) {
+    if (packet.kind == KIND_WORK) {
+      this.v1 = packet.addTo(this.v1);
+    } else {
+      this.v2 = packet.addTo(this.v2);
+    }
+  }
+  if (this.v1 != null) {
+    var count = this.v1.a1;
+    var v;
+    if (count < DATA_SIZE) {
+      if (this.v2 != null) {
+        v = this.v2;
+        this.v2 = this.v2.link;
+        v.a1 = this.v1.a2[count];
+        this.v1.a1 = count + 1;
+        return this.scheduler.queue(v);
+      }
+    } else {
+      v = this.v1;
+      this.v1 = this.v1.link;
+      return this.scheduler.queue(v);
+    }
+  }
+  return this.scheduler.suspendCurrent();
+};
+
+HandlerTask.prototype.toString = function () {
+  return "HandlerTask";
+};
+
+/* --- *
+ * P a c k e t
+ * --- */
+
+var DATA_SIZE = 4;
+
+/**
+ * A simple package of data that is manipulated by the tasks.  The exact layout
+ * of the payload data carried by a packet is not importaint, and neither is the
+ * nature of the work performed on packets by the tasks.
+ *
+ * Besides carrying data, packets form linked lists and are hence used both as
+ * data and worklists.
+ * @param {Packet} link the tail of the linked list of packets
+ * @param {int} id an ID for this packet
+ * @param {int} kind the type of this packet
+ * @constructor
+ */
+function Packet(link, id, kind) {
+  this.link = link;
+  this.id = id;
+  this.kind = kind;
+  this.a1 = 0;
+  this.a2 = new Array(DATA_SIZE);
+}
+
+/**
+ * Add this packet to the end of a worklist, and return the worklist.
+ * @param {Packet} queue the worklist to add this packet to
+ */
+Packet.prototype.addTo = function (queue) {
+  this.link = null;
+  if (queue == null) return this;
+  var peek, next = queue;
+  while ((peek = next.link) != null)
+    next = peek;
+  next.link = this;
+  return queue;
+};
+
+Packet.prototype.toString = function () {
+  return "Packet";
+};
diff --git a/suite/cts/deviceTests/browserbench/assets/octane/run.js b/suite/cts/deviceTests/browserbench/assets/octane/run.js
new file mode 100644
index 0000000..e778130
--- /dev/null
+++ b/suite/cts/deviceTests/browserbench/assets/octane/run.js
@@ -0,0 +1,67 @@
+// Copyright 2008 the V8 project authors. All rights reserved.
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+//       notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+//       copyright notice, this list of conditions and the following
+//       disclaimer in the documentation and/or other materials provided
+//       with the distribution.
+//     * Neither the name of Google Inc. nor the names of its
+//       contributors may be used to endorse or promote products derived
+//       from this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+
+load('base.js');
+load('richards.js');
+load('deltablue.js');
+load('crypto.js');
+load('raytrace.js');
+load('earley-boyer.js');
+load('regexp.js');
+load('splay.js');
+load('navier-stokes.js');
+load('pdfjs.js');
+load('mandreel.js');
+load('gbemu.js');
+load('code-load.js');
+load('box2d.js');
+
+var success = true;
+
+function PrintResult(name, result) {
+  print(name + ': ' + result);
+}
+
+
+function PrintError(name, error) {
+  PrintResult(name, error);
+  success = false;
+}
+
+
+function PrintScore(score) {
+  if (success) {
+    print('----');
+    print('Score (version ' + BenchmarkSuite.version + '): ' + score);
+  }
+}
+
+
+BenchmarkSuite.RunSuites({ NotifyResult: PrintResult,
+                           NotifyError: PrintError,
+                           NotifyScore: PrintScore });
diff --git a/suite/cts/deviceTests/browserbench/assets/octane/splay.js b/suite/cts/deviceTests/browserbench/assets/octane/splay.js
new file mode 100644
index 0000000..6b4f56d
--- /dev/null
+++ b/suite/cts/deviceTests/browserbench/assets/octane/splay.js
@@ -0,0 +1,394 @@
+// Copyright 2009 the V8 project authors. All rights reserved.
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+//       notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+//       copyright notice, this list of conditions and the following
+//       disclaimer in the documentation and/or other materials provided
+//       with the distribution.
+//     * Neither the name of Google Inc. nor the names of its
+//       contributors may be used to endorse or promote products derived
+//       from this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// This benchmark is based on a JavaScript log processing module used
+// by the V8 profiler to generate execution time profiles for runs of
+// JavaScript applications, and it effectively measures how fast the
+// JavaScript engine is at allocating nodes and reclaiming the memory
+// used for old nodes. Because of the way splay trees work, the engine
+// also has to deal with a lot of changes to the large tree object
+// graph.
+
+var Splay = new BenchmarkSuite('Splay', 81491, [
+  new Benchmark("Splay", SplayRun, SplaySetup, SplayTearDown)
+]);
+
+
+// Configuration.
+var kSplayTreeSize = 8000;
+var kSplayTreeModifications = 80;
+var kSplayTreePayloadDepth = 5;
+
+var splayTree = null;
+
+
+function GeneratePayloadTree(depth, tag) {
+  if (depth == 0) {
+    return {
+      array  : [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 ],
+      string : 'String for key ' + tag + ' in leaf node'
+    };
+  } else {
+    return {
+      left:  GeneratePayloadTree(depth - 1, tag),
+      right: GeneratePayloadTree(depth - 1, tag)
+    };
+  }
+}
+
+
+function GenerateKey() {
+  // The benchmark framework guarantees that Math.random is
+  // deterministic; see base.js.
+  return Math.random();
+}
+
+
+function InsertNewNode() {
+  // Insert new node with a unique key.
+  var key;
+  do {
+    key = GenerateKey();
+  } while (splayTree.find(key) != null);
+  var payload = GeneratePayloadTree(kSplayTreePayloadDepth, String(key));
+  splayTree.insert(key, payload);
+  return key;
+}
+
+
+
+function SplaySetup() {
+  splayTree = new SplayTree();
+  for (var i = 0; i < kSplayTreeSize; i++) InsertNewNode();
+}
+
+
+function SplayTearDown() {
+  // Allow the garbage collector to reclaim the memory
+  // used by the splay tree no matter how we exit the
+  // tear down function.
+  var keys = splayTree.exportKeys();
+  splayTree = null;
+
+  // Verify that the splay tree has the right size.
+  var length = keys.length;
+  if (length != kSplayTreeSize) {
+    throw new Error("Splay tree has wrong size");
+  }
+
+  // Verify that the splay tree has sorted, unique keys.
+  for (var i = 0; i < length - 1; i++) {
+    if (keys[i] >= keys[i + 1]) {
+      throw new Error("Splay tree not sorted");
+    }
+  }
+}
+
+
+function SplayRun() {
+  // Replace a few nodes in the splay tree.
+  for (var i = 0; i < kSplayTreeModifications; i++) {
+    var key = InsertNewNode();
+    var greatest = splayTree.findGreatestLessThan(key);
+    if (greatest == null) splayTree.remove(key);
+    else splayTree.remove(greatest.key);
+  }
+}
+
+
+/**
+ * Constructs a Splay tree.  A splay tree is a self-balancing binary
+ * search tree with the additional property that recently accessed
+ * elements are quick to access again. It performs basic operations
+ * such as insertion, look-up and removal in O(log(n)) amortized time.
+ *
+ * @constructor
+ */
+function SplayTree() {
+};
+
+
+/**
+ * Pointer to the root node of the tree.
+ *
+ * @type {SplayTree.Node}
+ * @private
+ */
+SplayTree.prototype.root_ = null;
+
+
+/**
+ * @return {boolean} Whether the tree is empty.
+ */
+SplayTree.prototype.isEmpty = function() {
+  return !this.root_;
+};
+
+
+/**
+ * Inserts a node into the tree with the specified key and value if
+ * the tree does not already contain a node with the specified key. If
+ * the value is inserted, it becomes the root of the tree.
+ *
+ * @param {number} key Key to insert into the tree.
+ * @param {*} value Value to insert into the tree.
+ */
+SplayTree.prototype.insert = function(key, value) {
+  if (this.isEmpty()) {
+    this.root_ = new SplayTree.Node(key, value);
+    return;
+  }
+  // Splay on the key to move the last node on the search path for
+  // the key to the root of the tree.
+  this.splay_(key);
+  if (this.root_.key == key) {
+    return;
+  }
+  var node = new SplayTree.Node(key, value);
+  if (key > this.root_.key) {
+    node.left = this.root_;
+    node.right = this.root_.right;
+    this.root_.right = null;
+  } else {
+    node.right = this.root_;
+    node.left = this.root_.left;
+    this.root_.left = null;
+  }
+  this.root_ = node;
+};
+
+
+/**
+ * Removes a node with the specified key from the tree if the tree
+ * contains a node with this key. The removed node is returned. If the
+ * key is not found, an exception is thrown.
+ *
+ * @param {number} key Key to find and remove from the tree.
+ * @return {SplayTree.Node} The removed node.
+ */
+SplayTree.prototype.remove = function(key) {
+  if (this.isEmpty()) {
+    throw Error('Key not found: ' + key);
+  }
+  this.splay_(key);
+  if (this.root_.key != key) {
+    throw Error('Key not found: ' + key);
+  }
+  var removed = this.root_;
+  if (!this.root_.left) {
+    this.root_ = this.root_.right;
+  } else {
+    var right = this.root_.right;
+    this.root_ = this.root_.left;
+    // Splay to make sure that the new root has an empty right child.
+    this.splay_(key);
+    // Insert the original right child as the right child of the new
+    // root.
+    this.root_.right = right;
+  }
+  return removed;
+};
+
+
+/**
+ * Returns the node having the specified key or null if the tree doesn't contain
+ * a node with the specified key.
+ *
+ * @param {number} key Key to find in the tree.
+ * @return {SplayTree.Node} Node having the specified key.
+ */
+SplayTree.prototype.find = function(key) {
+  if (this.isEmpty()) {
+    return null;
+  }
+  this.splay_(key);
+  return this.root_.key == key ? this.root_ : null;
+};
+
+
+/**
+ * @return {SplayTree.Node} Node having the maximum key value.
+ */
+SplayTree.prototype.findMax = function(opt_startNode) {
+  if (this.isEmpty()) {
+    return null;
+  }
+  var current = opt_startNode || this.root_;
+  while (current.right) {
+    current = current.right;
+  }
+  return current;
+};
+
+
+/**
+ * @return {SplayTree.Node} Node having the maximum key value that
+ *     is less than the specified key value.
+ */
+SplayTree.prototype.findGreatestLessThan = function(key) {
+  if (this.isEmpty()) {
+    return null;
+  }
+  // Splay on the key to move the node with the given key or the last
+  // node on the search path to the top of the tree.
+  this.splay_(key);
+  // Now the result is either the root node or the greatest node in
+  // the left subtree.
+  if (this.root_.key < key) {
+    return this.root_;
+  } else if (this.root_.left) {
+    return this.findMax(this.root_.left);
+  } else {
+    return null;
+  }
+};
+
+
+/**
+ * @return {Array<*>} An array containing all the keys of tree's nodes.
+ */
+SplayTree.prototype.exportKeys = function() {
+  var result = [];
+  if (!this.isEmpty()) {
+    this.root_.traverse_(function(node) { result.push(node.key); });
+  }
+  return result;
+};
+
+
+/**
+ * Perform the splay operation for the given key. Moves the node with
+ * the given key to the top of the tree.  If no node has the given
+ * key, the last node on the search path is moved to the top of the
+ * tree. This is the simplified top-down splaying algorithm from:
+ * "Self-adjusting Binary Search Trees" by Sleator and Tarjan
+ *
+ * @param {number} key Key to splay the tree on.
+ * @private
+ */
+SplayTree.prototype.splay_ = function(key) {
+  if (this.isEmpty()) {
+    return;
+  }
+  // Create a dummy node.  The use of the dummy node is a bit
+  // counter-intuitive: The right child of the dummy node will hold
+  // the L tree of the algorithm.  The left child of the dummy node
+  // will hold the R tree of the algorithm.  Using a dummy node, left
+  // and right will always be nodes and we avoid special cases.
+  var dummy, left, right;
+  dummy = left = right = new SplayTree.Node(null, null);
+  var current = this.root_;
+  while (true) {
+    if (key < current.key) {
+      if (!current.left) {
+        break;
+      }
+      if (key < current.left.key) {
+        // Rotate right.
+        var tmp = current.left;
+        current.left = tmp.right;
+        tmp.right = current;
+        current = tmp;
+        if (!current.left) {
+          break;
+        }
+      }
+      // Link right.
+      right.left = current;
+      right = current;
+      current = current.left;
+    } else if (key > current.key) {
+      if (!current.right) {
+        break;
+      }
+      if (key > current.right.key) {
+        // Rotate left.
+        var tmp = current.right;
+        current.right = tmp.left;
+        tmp.left = current;
+        current = tmp;
+        if (!current.right) {
+          break;
+        }
+      }
+      // Link left.
+      left.right = current;
+      left = current;
+      current = current.right;
+    } else {
+      break;
+    }
+  }
+  // Assemble.
+  left.right = current.left;
+  right.left = current.right;
+  current.left = dummy.right;
+  current.right = dummy.left;
+  this.root_ = current;
+};
+
+
+/**
+ * Constructs a Splay tree node.
+ *
+ * @param {number} key Key.
+ * @param {*} value Value.
+ */
+SplayTree.Node = function(key, value) {
+  this.key = key;
+  this.value = value;
+};
+
+
+/**
+ * @type {SplayTree.Node}
+ */
+SplayTree.Node.prototype.left = null;
+
+
+/**
+ * @type {SplayTree.Node}
+ */
+SplayTree.Node.prototype.right = null;
+
+
+/**
+ * Performs an ordered traversal of the subtree starting at
+ * this SplayTree.Node.
+ *
+ * @param {function(SplayTree.Node)} f Visitor function.
+ * @private
+ */
+SplayTree.Node.prototype.traverse_ = function(f) {
+  var current = this;
+  while (current) {
+    var left = current.left;
+    if (left) left.traverse_(f);
+    f(current);
+    current = current.right;
+  }
+};
diff --git a/suite/cts/deviceTests/browserbench/src/com/android/cts/browser/BrowserBenchTest.java b/suite/cts/deviceTests/browserbench/src/com/android/cts/browser/BrowserBenchTest.java
new file mode 100644
index 0000000..997f730
--- /dev/null
+++ b/suite/cts/deviceTests/browserbench/src/com/android/cts/browser/BrowserBenchTest.java
@@ -0,0 +1,170 @@
+/*
+ * Copyright (C) 2012 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.android.cts.browser;
+
+import android.content.Intent;
+import android.cts.util.WatchDog;
+import android.net.Uri;
+import android.provider.Browser;
+import android.util.Log;
+import android.webkit.cts.CtsTestServer;
+
+import android.cts.util.CtsAndroidTestCase;
+import com.android.cts.util.ResultType;
+import com.android.cts.util.ResultUnit;
+import com.android.cts.util.Stat;
+import com.android.cts.util.TimeoutReq;
+
+import java.net.URLDecoder;
+import java.util.LinkedHashMap;
+import java.util.Map;
+import java.util.concurrent.CountDownLatch;
+import java.util.concurrent.TimeUnit;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+import org.apache.http.HttpRequest;
+import org.apache.http.HttpResponse;
+import org.apache.http.RequestLine;
+/**
+ * Browser benchmarking.
+ * It launches an activity with URL and wait for POST from the client.
+ */
+public class BrowserBenchTest extends CtsAndroidTestCase {
+    private static final String TAG = BrowserBenchTest.class.getSimpleName();
+    private static final boolean DEBUG = false;
+    private static final String OCTANE_START_FILE = "octane/index.html";
+    private static final String ROBOHORNET_START_FILE = "robohornet/robohornet.html";
+    private static final String HOST_COMPLETION_BROADCAST = "com.android.cts.browser.completion";
+    // time-out for watch-dog. POST should happen within this time.
+    private static long BROWSER_POST_TIMEOUT_IN_MS = 10 * 60 * 1000L;
+    // watch-dog will time-out first. So make it long enough.
+    private static long BROWSER_COMPLETION_TIMEOUT_IN_MS = 60 * 60 * 1000L;
+    private static final String HTTP_USER_AGENT = "User-Agent";
+    private CtsTestServer mWebServer;
+    // used for final score
+    private ResultType mTypeNonFinal = ResultType.NEUTRAL;
+    private ResultUnit mUnitNonFinal = ResultUnit.NONE;
+    // used for all other scores
+    private ResultType mTypeFinal = ResultType.NEUTRAL;
+    private ResultUnit mUnitFinal = ResultUnit.SCORE;
+    private WatchDog mWatchDog;
+    private CountDownLatch mLatch;
+    // can be changed by each test before starting
+    private volatile int mNumberRepeat;
+    /** tells how many tests have run up to now */
+    private volatile int mRunIndex;
+    /** stores results for each runs. last entry will be the final score. */
+    private LinkedHashMap<String, double[]> mResultsMap;
+
+    @Override
+    protected void setUp() throws Exception {
+        super.setUp();
+        mWebServer = new CtsTestServer(getContext()) {
+            @Override
+            protected HttpResponse onPost(HttpRequest request) throws Exception {
+                // post uri will look like "cts_report.html?final=1&score=10.1&message=hello"
+                RequestLine requestLine = request.getRequestLine();
+                String uriString = URLDecoder.decode(requestLine.getUri(), "UTF-8");
+                if (DEBUG) {
+                    Log.i(TAG, "uri:" + uriString);
+                }
+                String resultRe =
+                        ".*cts_report.html\\?final=([\\d])&score=([\\d]+\\.?[\\d]*)&message=([\\w][\\w ]*)";
+                Pattern resultPattern = Pattern.compile(resultRe);
+                Matcher matchResult = resultPattern.matcher(uriString);
+                if (matchResult.find()) {
+                    int isFinal = Integer.parseInt(matchResult.group(1));
+                    double score = Double.parseDouble(matchResult.group(2));
+                    String message = matchResult.group(3);
+                    Log.i(TAG, message + ":" + score);
+                    if (!mResultsMap.containsKey(message)) {
+                        mResultsMap.put(message, new double[mNumberRepeat]);
+                    }
+                    double[] scores = mResultsMap.get(message);
+                    scores[mRunIndex] = score;
+                    if (isFinal == 1) {
+                        String userAgent = request.getFirstHeader(HTTP_USER_AGENT).getValue();
+                        getReportLog().printValue(HTTP_USER_AGENT + "=" + userAgent, 0,
+                                ResultType.NEUTRAL, ResultUnit.NONE);
+                        mLatch.countDown();
+                    }
+                    mWatchDog.reset();
+                }
+                return null; // default response is OK as it will be ignored by client anyway.
+            }
+        };
+        mResultsMap = new LinkedHashMap<String, double[]>();
+        mWatchDog = new WatchDog(BROWSER_POST_TIMEOUT_IN_MS);
+        mWatchDog.start();
+    }
+
+    @Override
+    protected void tearDown() throws Exception {
+        mWatchDog.stop();
+        mWebServer.shutdown();
+        mWebServer = null;
+        mResultsMap = null;
+        super.tearDown();
+    }
+
+    @TimeoutReq(minutes = 60)
+    public void testOctane() throws InterruptedException {
+        String url = mWebServer.getAssetUrl(OCTANE_START_FILE) + "?auto=1";
+        final int kRepeat = 5;
+        doTest(url, ResultType.LOWER_BETTER, ResultUnit.MS,
+                ResultType.HIGHER_BETTER, ResultUnit.SCORE, kRepeat);
+    }
+
+    private void doTest(String url, ResultType typeNonFinal, ResultUnit unitNonFinal,
+            ResultType typeFinal, ResultUnit unitFinal, int numberRepeat)
+                    throws InterruptedException {
+        mTypeNonFinal = typeNonFinal;
+        mUnitNonFinal = unitNonFinal;
+        mTypeFinal = typeFinal;
+        mUnitFinal = unitFinal;
+        mNumberRepeat = numberRepeat;
+        Uri uri = Uri.parse(url);
+        for (mRunIndex = 0; mRunIndex < numberRepeat; mRunIndex++) {
+            Log.i(TAG, mRunIndex + "-th round");
+            mLatch = new CountDownLatch(1);
+            Intent intent = new Intent(Intent.ACTION_VIEW, uri);
+            intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
+            // force using only one window or tab
+            intent.putExtra(Browser.EXTRA_APPLICATION_ID, getContext().getPackageName());
+            getContext().startActivity(intent);
+            boolean ok = mLatch.await(BROWSER_COMPLETION_TIMEOUT_IN_MS, TimeUnit.MILLISECONDS);
+            assertTrue("timed-out", ok);
+        }
+        // it is somewhat awkward to handle the last one specially with Map
+        int numberEntries = mResultsMap.size();
+        int numberToProcess = 1;
+        for (Map.Entry<String, double[]> entry : mResultsMap.entrySet()) {
+            String message = entry.getKey();
+            double[] scores = entry.getValue();
+            if (numberToProcess == numberEntries) { // final score
+                // store the whole results first
+                getReportLog().printArray(message, scores, mTypeFinal, mUnitFinal);
+                getReportLog().printSummary(message, Stat.getAverage(scores), mTypeFinal,
+                        mUnitFinal);
+            } else { // interim results
+                getReportLog().printArray(message, scores, mTypeNonFinal, mUnitNonFinal);
+            }
+            numberToProcess++;
+        }
+    }
+}
diff --git a/suite/cts/deviceTests/dram/Android.mk b/suite/cts/deviceTests/dram/Android.mk
new file mode 100644
index 0000000..1935483
--- /dev/null
+++ b/suite/cts/deviceTests/dram/Android.mk
@@ -0,0 +1,35 @@
+# Copyright (C) 2012 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)
+
+# don't include this package in any target
+LOCAL_MODULE_TAGS := optional
+
+LOCAL_JAVA_LIBRARIES := android.test.runner
+
+LOCAL_STATIC_JAVA_LIBRARIES := ctsdeviceutil ctstestrunner
+
+LOCAL_JNI_SHARED_LIBRARIES := libctsdram_jni
+
+LOCAL_SRC_FILES := $(call all-java-files-under, src)
+
+LOCAL_PACKAGE_NAME := CtsDeviceDram
+
+LOCAL_SDK_VERSION := 16
+
+include $(BUILD_CTS_PACKAGE)
+
+include $(call all-makefiles-under,$(LOCAL_PATH))
diff --git a/suite/cts/deviceTests/dram/AndroidManifest.xml b/suite/cts/deviceTests/dram/AndroidManifest.xml
new file mode 100644
index 0000000..70f6b11
--- /dev/null
+++ b/suite/cts/deviceTests/dram/AndroidManifest.xml
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2012 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.
+-->
+
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+        package="com.android.cts.dram">
+
+    <uses-permission android:name="android.permission.DISABLE_KEYGUARD" />
+    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
+
+    <application>
+        <uses-library android:name="android.test.runner" />
+    </application>
+    <instrumentation android:name="android.test.InstrumentationCtsTestRunner"
+            android:targetPackage="com.android.cts.dram"
+            android:label="DRAM bandwidth measurement" />
+</manifest>
diff --git a/suite/cts/deviceTests/dram/jni/Android.mk b/suite/cts/deviceTests/dram/jni/Android.mk
new file mode 100644
index 0000000..a86d4da
--- /dev/null
+++ b/suite/cts/deviceTests/dram/jni/Android.mk
@@ -0,0 +1,31 @@
+# Copyright (C) 2012 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    := libctsdram_jni
+
+LOCAL_MODULE_TAGS := optional
+
+LOCAL_SRC_FILES := MemoryNativeJni.cpp
+
+LOCAL_C_INCLUDES := $(JNI_H_INCLUDE)
+
+LOCAL_SHARED_LIBRARIES := libnativehelper
+
+LOCAL_SDK_VERSION := 14
+
+include $(BUILD_SHARED_LIBRARY)
diff --git a/suite/cts/deviceTests/dram/jni/MemoryNativeJni.cpp b/suite/cts/deviceTests/dram/jni/MemoryNativeJni.cpp
new file mode 100644
index 0000000..7d9a5fc
--- /dev/null
+++ b/suite/cts/deviceTests/dram/jni/MemoryNativeJni.cpp
@@ -0,0 +1,71 @@
+/*
+ * Copyright (C) 2012 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.
+ */
+
+#include <jni.h>
+#include <stdlib.h>
+#include <string.h>
+#include <sys/time.h>
+
+double currentTimeMillis()
+{
+    struct timeval tv;
+    gettimeofday(&tv, (struct timezone *) NULL);
+    return tv.tv_sec * 1000.0 + tv.tv_usec / 1000.0;
+}
+
+extern "C" JNIEXPORT jdouble JNICALL Java_com_android_cts_dram_MemoryNative_runMemcpy(JNIEnv* env,
+        jclass clazz, jint bufferSize, jint repetition)
+{
+    char* src = new char[bufferSize];
+    char* dst = new char[bufferSize];
+    if ((src == NULL) || (dst == NULL)) {
+        delete[] src;
+        delete[] dst;
+        env->ThrowNew(env->FindClass("java/lang/OutOfMemoryError"), "No memory");
+        return -1;
+    }
+    memset(src, 0, bufferSize);
+    memset(dst, 0, bufferSize);
+    double start = currentTimeMillis();
+    for (int i = 0; i < repetition; i++) {
+        memcpy(dst, src, bufferSize);
+        src[bufferSize - 1] = i & 0xff;
+    }
+    double end = currentTimeMillis();
+    delete[] src;
+    delete[] dst;
+    return end - start;
+}
+
+extern "C" JNIEXPORT jdouble JNICALL Java_com_android_cts_dram_MemoryNative_runMemset(JNIEnv* env,
+        jclass clazz, jint bufferSize, jint repetition, jint c)
+{
+    char* dst = new char[bufferSize];
+    if (dst == NULL) {
+        delete[] dst;
+        env->ThrowNew(env->FindClass("java/lang/OutOfMemoryError"), "No memory");
+        return -1;
+    }
+    memset(dst, 0, bufferSize);
+    double start = currentTimeMillis();
+    for (int i = 0; i < repetition; i++) {
+        memset(dst, (c + i) & 0xff, bufferSize);
+    }
+    double end = currentTimeMillis();
+    delete[] dst;
+    return end - start;
+}
+
diff --git a/suite/cts/deviceTests/dram/src/com/android/cts/dram/BandwidthTest.java b/suite/cts/deviceTests/dram/src/com/android/cts/dram/BandwidthTest.java
new file mode 100644
index 0000000..eeb7f9b
--- /dev/null
+++ b/suite/cts/deviceTests/dram/src/com/android/cts/dram/BandwidthTest.java
@@ -0,0 +1,223 @@
+/*
+ * Copyright (C) 2012 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.android.cts.dram;
+
+import android.content.Context;
+import android.graphics.Point;
+import android.util.Log;
+import android.view.WindowManager;
+
+import com.android.cts.util.ResultType;
+import com.android.cts.util.ResultUnit;
+import android.cts.util.CtsAndroidTestCase;
+import com.android.cts.util.ReportLog;
+import com.android.cts.util.Stat;
+
+/**
+ * check how many screens the memcpy function can copy in a sec.
+ * Note that this does not represent the total memory bandwidth available in the system
+ * as typically CPU cannot use the whole bandwidth.
+ * Smaller buffers can fit into L1 or L2 cache, which can show big boost.
+ */
+public class BandwidthTest extends CtsAndroidTestCase {
+    private static final String TAG = BandwidthTest.class.getSimpleName();
+    private static final int MEMCPY_REPETITION = 10;
+    private static final int MEMSET_REPETITION = 30;
+    private static final int REPEAT_IN_EACH_CALL = 100;
+    private static final int KB = 1024;
+    private static final int MB = 1024 * 1024;
+    private static final int MEMSET_CHAR = 0xa5;
+    // reject data outside +/- this value * median
+    private static final double OUTLIER_THRESHOLD = 0.1;
+
+    @Override
+    protected void setUp() throws Exception {
+        super.setUp();
+        // warm-up
+        MemoryNative.runMemcpy(2 * MB, 100);
+    }
+
+    public void testMemcpyK004() {
+        doRunMemcpy(4 * KB);
+    }
+
+    public void testMemcpyK008() {
+        doRunMemcpy(8 * KB);
+    }
+
+    public void testMemcpyK016() {
+        doRunMemcpy(16 * KB);
+    }
+
+    public void testMemcpyK032() {
+        doRunMemcpy(32 * KB);
+    }
+
+    public void testMemcpyK064() {
+        doRunMemcpy(64 * KB);
+    }
+
+    public void testMemcpyK128() {
+        doRunMemcpy(128 * KB);
+    }
+
+    public void testMemcpyK256() {
+        doRunMemcpy(256 * KB);
+    }
+
+    public void testMemcpyK512() {
+        doRunMemcpy(512 * KB);
+    }
+
+    public void testMemcpyM001() {
+        doRunMemcpy(1 * MB);
+    }
+
+    public void testMemcpyM002() {
+        doRunMemcpy(2 * MB);
+    }
+
+    public void testMemcpyM004() {
+        doRunMemcpy(4 * MB);
+    }
+
+    public void testMemcpyM008() {
+        doRunMemcpy(8 * MB);
+    }
+
+    public void testMemcpyM016() {
+        doRunMemcpy(16 * MB);
+    }
+
+    public void testMemsetK004() {
+        doRunMemset(4 * KB);
+    }
+
+    public void testMemsetK008() {
+        doRunMemset(8 * KB);
+    }
+
+    public void testMemsetK016() {
+        doRunMemset(16 * KB);
+    }
+
+    public void testMemsetK032() {
+        doRunMemset(32 * KB);
+    }
+
+    public void testMemsetK064() {
+        doRunMemset(64 * KB);
+    }
+
+    public void testMemsetK128() {
+        doRunMemset(128 * KB);
+    }
+
+    public void testMemsetK256() {
+        doRunMemset(256 * KB);
+    }
+
+    public void testMemsetK512() {
+        doRunMemset(512 * KB);
+    }
+
+    public void testMemsetM001() {
+        doRunMemset(1 * MB);
+    }
+
+    public void testMemsetM002() {
+        doRunMemset(2 * MB);
+    }
+
+    public void testMemsetM004() {
+        doRunMemset(4 * MB);
+    }
+
+    public void testMemsetM008() {
+        doRunMemset(8 * MB);
+    }
+
+    public void testMemsetM016() {
+        doRunMemset(16 * MB);
+    }
+
+    private void doRunMemcpy(int bufferSize) {
+        double[] result = new double[MEMCPY_REPETITION];
+        int repeatInEachCall = REPEAT_IN_EACH_CALL;
+        if (bufferSize < (1 * MB)) {
+            // too small buffer size finishes too early to give accurate result.
+            repeatInEachCall *= (1 * MB / bufferSize);
+        }
+        for (int i = 0; i < MEMCPY_REPETITION; i++) {
+            result[i] = MemoryNative.runMemcpy(bufferSize, repeatInEachCall);
+        }
+        getReportLog().printArray("memcpy time", result, ResultType.LOWER_BETTER,
+                ResultUnit.MS);
+        double[] mbps = ReportLog.calcRatePerSecArray(
+                (double)bufferSize * repeatInEachCall / 1024.0 / 1024.0, result);
+        getReportLog().printArray("memcpy throughput", mbps, ResultType.HIGHER_BETTER,
+                ResultUnit.MBPS);
+        Stat.StatResult stat = Stat.getStatWithOutlierRejection(mbps, OUTLIER_THRESHOLD);
+        if (stat.mDataCount != result.length) {
+            Log.w(TAG, "rejecting " + (result.length - stat.mDataCount) + " outliers");
+        }
+        WindowManager wm = (WindowManager) getContext().getSystemService(Context.WINDOW_SERVICE);
+        Point size = new Point();
+        wm.getDefaultDisplay().getSize(size);
+        Log.i(TAG, " x " + size.x + " y " + size.y);
+        double pixels = size.x * size.y;
+        // now this represents how many times the whole screen can be copied in a sec.
+        double screensPerSecAverage = stat.mAverage / pixels * 1024.0 * 1024.0 / 4.0;
+        getReportLog().printValue("memcpy in fps", screensPerSecAverage,
+                ResultType.HIGHER_BETTER, ResultUnit.FPS);
+        getReportLog().printSummary("memcpy throughput", stat.mAverage, ResultType.HIGHER_BETTER,
+                ResultUnit.MBPS);
+    }
+
+    private void doRunMemset(int bufferSize) {
+        double[] result = new double[MEMSET_REPETITION];
+        int repeatInEachCall = REPEAT_IN_EACH_CALL;
+        if (bufferSize < (1 * MB)) {
+            // too small buffer size finishes too early to give accurate result.
+            repeatInEachCall *= (1 * MB / bufferSize);
+        }
+        for (int i = 0; i < MEMSET_REPETITION; i++) {
+            result[i] = MemoryNative.runMemset(bufferSize, repeatInEachCall, MEMSET_CHAR);
+        }
+        getReportLog().printArray("memset time", result, ResultType.LOWER_BETTER,
+                ResultUnit.MS);
+        double[] mbps = ReportLog.calcRatePerSecArray(
+                (double)bufferSize * repeatInEachCall / 1024.0 / 1024.0, result);
+        getReportLog().printArray("memset throughput", mbps, ResultType.HIGHER_BETTER,
+                ResultUnit.MBPS);
+        Stat.StatResult stat = Stat.getStatWithOutlierRejection(mbps, OUTLIER_THRESHOLD);
+        if (stat.mDataCount != result.length) {
+            Log.w(TAG, "rejecting " + (result.length - stat.mDataCount) + " outliers");
+        }
+        WindowManager wm = (WindowManager) getContext().getSystemService(Context.WINDOW_SERVICE);
+        Point size = new Point();
+        wm.getDefaultDisplay().getSize(size);
+        Log.i(TAG, " x " + size.x + " y " + size.y);
+        double pixels = size.x * size.y;
+        // now this represents how many times the whole screen can be copied in a sec.
+        double screensPerSecAverage = stat.mAverage / pixels * 1024.0 * 1024.0 / 4.0;
+        getReportLog().printValue("memset in fps", screensPerSecAverage,
+                ResultType.HIGHER_BETTER, ResultUnit.FPS);
+        getReportLog().printSummary("memset throughput", stat.mAverage, ResultType.HIGHER_BETTER,
+                ResultUnit.MBPS);
+    }
+}
diff --git a/suite/cts/deviceTests/dram/src/com/android/cts/dram/MemoryNative.java b/suite/cts/deviceTests/dram/src/com/android/cts/dram/MemoryNative.java
new file mode 100644
index 0000000..e55127d
--- /dev/null
+++ b/suite/cts/deviceTests/dram/src/com/android/cts/dram/MemoryNative.java
@@ -0,0 +1,41 @@
+/*
+ * Copyright (C) 2012 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.android.cts.dram;
+
+public class MemoryNative {
+    static {
+        System.loadLibrary("ctsdram_jni");
+    }
+    /**
+     * run memcpy for given number of repetition from a source to a destination buffers
+     * with each having the size of bufferSize.
+     * @param bufferSize
+     * @param repeatition
+     * @return time spent in copying in ms.
+     */
+    public static native double runMemcpy(int bufferSize, int repetition);
+
+    /**
+     * run memset for given number of repetition from a source to a destination buffers
+     * with each having the size of bufferSize.
+     * @param bufferSize
+     * @param repetition
+     * @param c char to set. Only LSBs will be used to get char value.
+     * @return time spent in memset in ms.
+     */
+    public static native double runMemset(int bufferSize, int repetition, int c);
+}
diff --git a/suite/cts/deviceTests/filesystemperf/Android.mk b/suite/cts/deviceTests/filesystemperf/Android.mk
new file mode 100644
index 0000000..5f0606e
--- /dev/null
+++ b/suite/cts/deviceTests/filesystemperf/Android.mk
@@ -0,0 +1,32 @@
+# Copyright (C) 2012 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)
+
+# don't include this package in any target
+LOCAL_MODULE_TAGS := optional
+
+LOCAL_JAVA_LIBRARIES := android.test.runner
+
+LOCAL_STATIC_JAVA_LIBRARIES := ctsdeviceutil ctstestrunner
+
+LOCAL_SRC_FILES := $(call all-java-files-under, src)
+
+LOCAL_PACKAGE_NAME := CtsDeviceFilePerf
+
+LOCAL_SDK_VERSION := 16
+
+include $(BUILD_CTS_PACKAGE)
+
diff --git a/suite/cts/deviceTests/filesystemperf/AndroidManifest.xml b/suite/cts/deviceTests/filesystemperf/AndroidManifest.xml
new file mode 100644
index 0000000..dc90a94
--- /dev/null
+++ b/suite/cts/deviceTests/filesystemperf/AndroidManifest.xml
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2012 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.
+-->
+
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+        package="com.android.cts.filesystemperf">
+
+    <uses-permission android:name="android.permission.DISABLE_KEYGUARD" />
+    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
+
+    <application>
+        <uses-library android:name="android.test.runner" />
+    </application>
+    <instrumentation android:name="android.test.InstrumentationCtsTestRunner"
+            android:targetPackage="com.android.cts.filesystemperf"
+            android:label="UI Latency measurement" />
+</manifest>
diff --git a/suite/cts/deviceTests/filesystemperf/src/com/android/cts/filesystemperf/AlmostFullTest.java b/suite/cts/deviceTests/filesystemperf/src/com/android/cts/filesystemperf/AlmostFullTest.java
new file mode 100644
index 0000000..ab81f16
--- /dev/null
+++ b/suite/cts/deviceTests/filesystemperf/src/com/android/cts/filesystemperf/AlmostFullTest.java
@@ -0,0 +1,140 @@
+/*
+ * Copyright (C) 2012 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.android.cts.filesystemperf;
+
+import android.util.Log;
+
+import android.cts.util.CtsAndroidTestCase;
+import android.cts.util.SystemUtil;
+
+import com.android.cts.util.TimeoutReq;
+
+import java.util.concurrent.atomic.AtomicBoolean;
+import java.util.concurrent.atomic.AtomicInteger;
+
+public class AlmostFullTest extends CtsAndroidTestCase {
+
+    private static final String DIR_INITIAL_FILL = "INITIAL_FILL";
+    private static final String DIR_SEQ_UPDATE = "SEQ_UPDATE";
+    private static final String DIR_RANDOM_WR = "RANDOM_WR";
+    private static final String DIR_RANDOM_RD = "RANDOM_RD";
+    private static final String TAG = "AlmostFullTest";
+
+    private static final long FREE_SPACE_FINAL = 1000L * 1024 * 1024L;
+
+    // test runner creates multiple instances at the begging.
+    // use that to fill disk only once.
+    // set as final to initialize it only once
+    private static final AtomicInteger mRefCounter = new AtomicInteger(0);
+    private static final AtomicBoolean mDiskFilled = new AtomicBoolean(false);
+
+    public AlmostFullTest() {
+        int currentCounter = mRefCounter.incrementAndGet();
+        Log.i(TAG, "++currentCounter: " + currentCounter);
+    }
+
+    @Override
+    protected void setUp() throws Exception {
+        super.setUp();
+        if (mDiskFilled.compareAndSet(false, true)) {
+            Log.i(TAG, "Filling disk");
+            // initial fill done in two stage as disk can be filled by other
+            // components
+            long freeDisk = SystemUtil.getFreeDiskSize(getContext());
+            long diskToFill = freeDisk - FREE_SPACE_FINAL;
+            if (diskToFill >= 0) {
+                Log.i(TAG, "free disk " + freeDisk + ", to fill " + diskToFill);
+            } else {
+                Log.i(TAG, "free disk " + freeDisk + " too small, needs " + FREE_SPACE_FINAL);
+                return;
+            }
+            final long MAX_FILE_SIZE_TO_FILL = 1024L * 1024L * 1024L;
+            long filled = 0;
+            while (filled < diskToFill) {
+                long toFill = diskToFill - filled;
+                if (toFill > MAX_FILE_SIZE_TO_FILL) {
+                    toFill = MAX_FILE_SIZE_TO_FILL;
+                }
+                Log.i(TAG, "Generating file " + toFill);
+                FileUtil.createNewFilledFile(getContext(),
+                        DIR_INITIAL_FILL, toFill);
+                filled += toFill;
+            }
+        }
+        Log.i(TAG, "free disk " + SystemUtil.getFreeDiskSize(getContext()));
+    }
+
+    @Override
+    protected void tearDown() throws Exception {
+        Log.i(TAG, "tearDown free disk " + SystemUtil.getFreeDiskSize(getContext()));
+        int currentCounter = mRefCounter.decrementAndGet();
+        Log.i(TAG, "--currentCounter: " + currentCounter);
+        if (currentCounter == 0) {
+            FileUtil.removeFileOrDir(getContext(), DIR_INITIAL_FILL);
+        }
+        FileUtil.removeFileOrDir(getContext(), DIR_SEQ_UPDATE);
+        FileUtil.removeFileOrDir(getContext(), DIR_RANDOM_WR);
+        FileUtil.removeFileOrDir(getContext(), DIR_RANDOM_RD);
+        Log.i(TAG, "tearDown free disk " + SystemUtil.getFreeDiskSize(getContext()));
+        super.tearDown();
+    }
+
+    @TimeoutReq(minutes = 30)
+    public void testSequentialUpdate() throws Exception {
+        // now about freeSpaceToLeave should be left
+        // and try updating exceeding the free space size
+        final long FILE_SIZE = 400L * 1024L * 1024L;
+        long freeDisk = SystemUtil.getFreeDiskSize(getContext());
+        Log.i(TAG, "Now free space is " + freeDisk);
+        if (freeDisk < FILE_SIZE) {
+            Log.w(TAG, "too little space: " + freeDisk);
+            return;
+        }
+        final int BUFFER_SIZE = 10 * 1024 * 1024;
+        final int NUMBER_REPETITION = 10;
+        FileUtil.doSequentialUpdateTest(getContext(), DIR_SEQ_UPDATE, getReportLog(), FILE_SIZE,
+                BUFFER_SIZE, NUMBER_REPETITION);
+    }
+
+    // TODO: file size too small and caching will give wrong better result.
+    // needs to flush cache by reading big files per each read.
+    @TimeoutReq(minutes = 60)
+    public void testRandomRead() throws Exception {
+        final int BUFFER_SIZE = 4 * 1024;
+        final long fileSize = 400L * 1024L * 1024L;
+        long freeDisk = SystemUtil.getFreeDiskSize(getContext());
+        if (freeDisk < fileSize) {
+            Log.w(TAG, "too little space: " + freeDisk);
+            return;
+        }
+        FileUtil.doRandomReadTest(getContext(), DIR_RANDOM_RD, getReportLog(), fileSize,
+                BUFFER_SIZE);
+    }
+
+    @TimeoutReq(minutes = 60)
+    public void testRandomUpdate() throws Exception {
+        final int BUFFER_SIZE = 4 * 1024;
+        final long fileSize = 256L * 1024L * 1024L;
+        long freeDisk = SystemUtil.getFreeDiskSize(getContext());
+        if (freeDisk < fileSize) {
+            Log.w(TAG, "too little space: " + freeDisk);
+            return;
+        }
+        FileUtil.doRandomWriteTest(getContext(), DIR_RANDOM_WR, getReportLog(), fileSize,
+                BUFFER_SIZE);
+    }
+}
diff --git a/suite/cts/deviceTests/filesystemperf/src/com/android/cts/filesystemperf/FileUtil.java b/suite/cts/deviceTests/filesystemperf/src/com/android/cts/filesystemperf/FileUtil.java
new file mode 100644
index 0000000..b342b61
--- /dev/null
+++ b/suite/cts/deviceTests/filesystemperf/src/com/android/cts/filesystemperf/FileUtil.java
@@ -0,0 +1,404 @@
+/*
+ * Copyright (C) 2012 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.android.cts.filesystemperf;
+
+import java.io.BufferedReader;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.io.RandomAccessFile;
+import java.util.Random;
+
+import com.android.cts.util.MeasureRun;
+import com.android.cts.util.MeasureTime;
+import com.android.cts.util.ResultType;
+import com.android.cts.util.ResultUnit;
+import com.android.cts.util.ReportLog;
+import com.android.cts.util.Stat;
+import android.cts.util.SystemUtil;
+
+import android.content.Context;
+import android.util.Log;
+
+public class FileUtil {
+    private static final String TAG = "FileUtil";
+    private static final Random mRandom = new Random(0);
+    private static long mFileId = 0;
+    /**
+     * create array with different data per each call
+     *
+     * @param length
+     * @param randomSeed
+     * @return
+     */
+    public static byte[] generateRandomData(int length) {
+        byte[] buffer = new byte[length];
+        int val = mRandom.nextInt();
+        for (int i = 0; i < length / 4; i++) {
+            // in little-endian
+            buffer[i * 4] = (byte)(val & 0x000000ff);
+            buffer[i * 4 + 1] = (byte)((val & 0x0000ff00) >> 8);
+            buffer[i * 4 + 2] = (byte)((val & 0x00ff0000) >> 16);
+            buffer[i * 4 + 3] = (byte)((val & 0xff000000) >> 24);
+            val++;
+        }
+        for (int i = (length / 4) * 4; i < length; i++) {
+            buffer[i] = 0;
+        }
+        return buffer;
+    }
+
+    /**
+     * create a new file under the given dirName.
+     * Existing files will not be affected.
+     * @param context
+     * @param dirName
+     * @return
+     */
+    public static File createNewFile(Context context, String dirName) {
+        File topDir = new File(context.getFilesDir(), dirName);
+        topDir.mkdir();
+        String[] list = topDir.list();
+
+        String newFileName;
+        while (true) {
+            newFileName = Long.toString(mFileId);
+            boolean fileExist = false;
+            for (String child : list) {
+                if (child.equals(newFileName)) {
+                    fileExist = true;
+                    break;
+                }
+            }
+            if (!fileExist) {
+                break;
+            }
+            mFileId++;
+        }
+        mFileId++;
+        //Log.i(TAG, "filename" + Long.toString(mFileId));
+        return new File(topDir, newFileName);
+    }
+
+    /**
+     * create multiple new files
+     * @param context
+     * @param dirName
+     * @param count number of files to create
+     * @return
+     */
+    public static File[] createNewFiles(Context context, String dirName, int count) {
+        File[] files = new File[count];
+        for (int i = 0; i < count; i++) {
+            files[i] = createNewFile(context, dirName);
+        }
+        return files;
+    }
+
+    /**
+     * write file with given byte array
+     * @param file
+     * @param data
+     * @param append will append if set true. Otherwise, write from beginning
+     * @throws IOException
+     */
+    public static void writeFile(File file, byte[] data, boolean append) throws IOException {
+        final RandomAccessFile randomFile = new RandomAccessFile(file, "rwd"); // force O_SYNC
+        if (append) {
+            randomFile.seek(randomFile.length());
+        } else {
+            randomFile.seek(0L);
+        }
+        randomFile.write(data);
+        randomFile.close();
+    }
+
+    /**
+     * create a new file with given length.
+     * @param context
+     * @param dirName
+     * @param length
+     * @return
+     * @throws IOException
+     */
+    public static File createNewFilledFile(Context context, String dirName, long length)
+            throws IOException {
+        final int BUFFER_SIZE = 10 * 1024 * 1024;
+        File file = createNewFile(context, dirName);
+        FileOutputStream out = new FileOutputStream(file);
+        byte[] data = generateRandomData(BUFFER_SIZE);
+        long written = 0;
+        while (written < length) {
+            out.write(data);
+            written += BUFFER_SIZE;
+        }
+        out.flush();
+        out.close();
+        return file;
+    }
+
+    /**
+     * remove given file or directory under the current app's files dir.
+     * @param context
+     * @param name
+     */
+    public static void removeFileOrDir(Context context, String name) {
+        File entry = new File(context.getFilesDir(), name);
+        if (entry.exists()) {
+            removeEntry(entry);
+        }
+    }
+
+    private static void removeEntry(File entry) {
+        if (entry.isDirectory()) {
+            String[] children = entry.list();
+            for (String child : children) {
+                removeEntry(new File(entry, child));
+            }
+        }
+        Log.i(TAG, "delete file " + entry.getAbsolutePath());
+        entry.delete();
+    }
+
+    /**
+     * measure time taken for each IO run with amount R/W
+     * @param count
+     * @param run
+     * @param readAmount returns amount of read in bytes for each interval.
+     *        Value will not be written if /proc/self/io does not exist.
+     * @param writeAmount returns amount of write in bytes for each interval.
+     * @return time per each interval
+     * @throws IOException
+     */
+    public static double[] measureIO(int count, double[] readAmount, double[] writeAmount,
+            MeasureRun run)  throws Exception {
+        double[] result = new double[count];
+        File procIo = new File("/proc/self/io");
+        boolean measureIo = procIo.exists() && procIo.canRead();
+        long prev = System.currentTimeMillis();
+        RWAmount prevAmount = new RWAmount();
+        if (measureIo) {
+            prevAmount = getRWAmount(procIo);
+        }
+        for (int i = 0; i < count; i++) {
+            run.run(i);
+            long current =  System.currentTimeMillis();
+            result[i] = current - prev;
+            prev = current;
+            if (measureIo) {
+                RWAmount currentAmount = getRWAmount(procIo);
+                readAmount[i] = currentAmount.mRd - prevAmount.mRd;
+                writeAmount[i] = currentAmount.mWr - prevAmount.mWr;
+                prevAmount = currentAmount;
+            }
+        }
+        return result;
+    }
+
+    private static class RWAmount {
+        public double mRd = 0.0;
+        public double mWr = 0.0;
+    };
+
+    private static RWAmount getRWAmount(File file) throws IOException {
+        RWAmount amount = new RWAmount();
+
+        BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(file)));
+        String line;
+        while((line = br.readLine())!= null) {
+            if (line.startsWith("read_bytes")) {
+                amount.mRd = Double.parseDouble(line.split(" ")[1]);
+            } else if (line.startsWith("write_bytes")) {
+                amount.mWr = Double.parseDouble(line.split(" ")[1]);
+            }
+        }
+        br.close();
+        return amount;
+    }
+
+    /**
+     * get file size exceeding total memory size ( 2x total memory).
+     * The size is rounded in bufferSize. And the size will be bigger than 400MB.
+     * @param context
+     * @param bufferSize
+     * @return file size or 0 if there is not enough space.
+     */
+    public static long getFileSizeExceedingMemory(Context context, int bufferSize) {
+        long freeDisk = SystemUtil.getFreeDiskSize(context);
+        long memSize = SystemUtil.getTotalMemory(context);
+        long diskSizeTarget = (2 * memSize / bufferSize) * bufferSize;
+        final long minimumDiskSize = (512L * 1024L * 1024L / bufferSize) * bufferSize;
+        if ( diskSizeTarget < minimumDiskSize ) {
+            diskSizeTarget = minimumDiskSize;
+        }
+        if (diskSizeTarget > freeDisk) {
+            Log.i(TAG, "Free disk size " + freeDisk + " too small");
+            return 0;
+        }
+        return diskSizeTarget;
+    }
+
+    /**
+     *
+     * @param context
+     * @param dirName
+     * @param report
+     * @param fileSize
+     * @param bufferSize should be power of two
+     * @throws IOException
+     */
+    public static void doRandomReadTest(Context context, String dirName, ReportLog report,
+            long fileSize, int bufferSize) throws Exception {
+        File file = FileUtil.createNewFilledFile(context,
+                dirName, fileSize);
+
+        final byte[] data = FileUtil.generateRandomData(bufferSize);
+        Random random = new Random(0);
+        final int totalReadCount = (int)(fileSize / bufferSize);
+        final int[] readOffsets = new int[totalReadCount];
+        for (int i = 0; i < totalReadCount; i++) {
+            // align in buffer size
+            readOffsets[i] = (int)(random.nextFloat() * (fileSize - bufferSize)) &
+                    ~(bufferSize - 1);
+        }
+        final int runsInOneGo = 16;
+        final int readsInOneMeasure = totalReadCount / runsInOneGo;
+
+        final RandomAccessFile randomFile = new RandomAccessFile(file, "rw"); // do not need O_SYNC
+        double[] rdAmount = new double[runsInOneGo];
+        double[] wrAmount = new double[runsInOneGo];
+        double[] times = FileUtil.measureIO(runsInOneGo, rdAmount, wrAmount, new MeasureRun() {
+
+            @Override
+            public void run(int i) throws IOException {
+                Log.i(TAG, "starting " + i + " -th round");
+                int start = i * readsInOneMeasure;
+                int end = (i + 1) * readsInOneMeasure;
+                for (int j = start; j < end; j++) {
+                    randomFile.seek(readOffsets[j]);
+                    randomFile.read(data);
+                }
+            }
+        });
+        randomFile.close();
+        double[] mbps = ReportLog.calcRatePerSecArray((double)fileSize / runsInOneGo / 1024 / 1024,
+                times);
+        report.printArray("read throughput",
+                mbps, ResultType.HIGHER_BETTER, ResultUnit.MBPS);
+        // This is just the amount of IO returned from kernel. So this is performance neutral.
+        report.printArray("read amount", rdAmount, ResultType.NEUTRAL, ResultUnit.BYTE);
+        Stat.StatResult stat = Stat.getStat(mbps);
+
+        report.printSummary("read throughput", stat.mAverage, ResultType.HIGHER_BETTER,
+                ResultUnit.MBPS);
+    }
+
+    /**
+     *
+     * @param context
+     * @param dirName
+     * @param report
+     * @param fileSize
+     * @param bufferSize should be power of two
+     * @throws IOException
+     */
+    public static void doRandomWriteTest(Context context, String dirName, ReportLog report,
+            long fileSize, int bufferSize) throws Exception {
+        File file = FileUtil.createNewFilledFile(context,
+                dirName, fileSize);
+        final byte[] data = FileUtil.generateRandomData(bufferSize);
+        Random random = new Random(0);
+        final int totalWriteCount = (int)(fileSize / bufferSize);
+        final int[] writeOffsets = new int[totalWriteCount];
+        for (int i = 0; i < totalWriteCount; i++) {
+            writeOffsets[i] = (int)(random.nextFloat() * (fileSize - bufferSize)) &
+                    ~(bufferSize - 1);
+        }
+        final int runsInOneGo = 16;
+        final int writesInOneMeasure = totalWriteCount / runsInOneGo;
+
+        final RandomAccessFile randomFile = new RandomAccessFile(file, "rwd"); // force O_SYNC
+        double[] rdAmount = new double[runsInOneGo];
+        double[] wrAmount = new double[runsInOneGo];
+        double[] times = FileUtil.measureIO(runsInOneGo, rdAmount, wrAmount, new MeasureRun() {
+
+            @Override
+            public void run(int i) throws IOException {
+                Log.i(TAG, "starting " + i + " -th round");
+                int start = i * writesInOneMeasure;
+                int end = (i + 1) * writesInOneMeasure;
+                for (int j = start; j < end; j++) {
+                    randomFile.seek(writeOffsets[j]);
+                    randomFile.write(data);
+                }
+            }
+        });
+        randomFile.close();
+        double[] mbps = ReportLog.calcRatePerSecArray((double)fileSize / runsInOneGo / 1024 / 1024,
+                times);
+        report.printArray("write throughput",
+                mbps, ResultType.HIGHER_BETTER, ResultUnit.MBPS);
+        report.printArray("write amount", wrAmount, ResultType.NEUTRAL,
+                ResultUnit.BYTE);
+        Stat.StatResult stat = Stat.getStat(mbps);
+
+        report.printSummary("write throughput", stat.mAverage, ResultType.HIGHER_BETTER,
+                ResultUnit.MBPS);
+    }
+
+    /**
+     *
+     * @param context
+     * @param dirName
+     * @param report
+     * @param fileSize fileSize should be multiple of bufferSize.
+     * @param bufferSize
+     * @param numberRepetition
+     * @throws IOException
+     */
+    public static void doSequentialUpdateTest(Context context, String dirName, ReportLog report,
+            long fileSize, int bufferSize, int numberRepetition) throws Exception {
+        File file = FileUtil.createNewFilledFile(context,
+                dirName, fileSize);
+        final byte[] data = FileUtil.generateRandomData(bufferSize);
+        int numberRepeatInOneRun = (int)(fileSize / bufferSize);
+        double[] mbpsAll = new double[numberRepetition * numberRepeatInOneRun];
+        for (int i = 0; i < numberRepetition; i++) {
+            Log.i(TAG, "starting " + i + " -th round");
+            final RandomAccessFile randomFile = new RandomAccessFile(file, "rwd");  // force O_SYNC
+            randomFile.seek(0L);
+            double[] times = MeasureTime.measure(numberRepeatInOneRun, new MeasureRun() {
+
+                @Override
+                public void run(int i) throws IOException {
+                    randomFile.write(data);
+                }
+            });
+            randomFile.close();
+            double[] mbps = ReportLog.calcRatePerSecArray((double)bufferSize / 1024 / 1024,
+                    times);
+            report.printArray(i + "-th round throughput",
+                    mbps, ResultType.HIGHER_BETTER, ResultUnit.MBPS);
+            ReportLog.copyArray(mbps, mbpsAll, i * numberRepeatInOneRun);
+        }
+        Stat.StatResult stat = Stat.getStat(mbpsAll);
+        report.printSummary("update throughput", stat.mAverage, ResultType.HIGHER_BETTER,
+                ResultUnit.MBPS);
+    }
+}
diff --git a/suite/cts/deviceTests/filesystemperf/src/com/android/cts/filesystemperf/RandomRWTest.java b/suite/cts/deviceTests/filesystemperf/src/com/android/cts/filesystemperf/RandomRWTest.java
new file mode 100644
index 0000000..6ad927b
--- /dev/null
+++ b/suite/cts/deviceTests/filesystemperf/src/com/android/cts/filesystemperf/RandomRWTest.java
@@ -0,0 +1,52 @@
+/*
+ * Copyright (C) 2012 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.android.cts.filesystemperf;
+
+import android.cts.util.CtsAndroidTestCase;
+import com.android.cts.util.TimeoutReq;
+
+public class RandomRWTest extends CtsAndroidTestCase {
+    private static final String DIR_RANDOM_WR = "RANDOM_WR";
+    private static final String DIR_RANDOM_RD = "RANDOM_RD";
+
+    @Override
+    protected void tearDown() throws Exception {
+        FileUtil.removeFileOrDir(getContext(), DIR_RANDOM_WR);
+        FileUtil.removeFileOrDir(getContext(), DIR_RANDOM_RD);
+        super.tearDown();
+    }
+
+    @TimeoutReq(minutes = 60)
+    public void testRandomRead() throws Exception {
+        final int READ_BUFFER_SIZE = 4 * 1024;
+        final long fileSize = FileUtil.getFileSizeExceedingMemory(getContext(), READ_BUFFER_SIZE);
+        if (fileSize == 0) { // not enough space, give up
+            return;
+        }
+        FileUtil.doRandomReadTest(getContext(), DIR_RANDOM_RD, getReportLog(), fileSize,
+                READ_BUFFER_SIZE);
+    }
+
+    // It is taking too long in some device, and thus cannot run multiple times
+    @TimeoutReq(minutes = 60)
+    public void testRandomUpdate() throws Exception {
+        final int WRITE_BUFFER_SIZE = 4 * 1024;
+        final long fileSize = 256 * 1024 * 1024;
+        FileUtil.doRandomWriteTest(getContext(), DIR_RANDOM_WR, getReportLog(), fileSize,
+                WRITE_BUFFER_SIZE);
+    }
+}
diff --git a/suite/cts/deviceTests/filesystemperf/src/com/android/cts/filesystemperf/SequentialRWTest.java b/suite/cts/deviceTests/filesystemperf/src/com/android/cts/filesystemperf/SequentialRWTest.java
new file mode 100644
index 0000000..d369ce8
--- /dev/null
+++ b/suite/cts/deviceTests/filesystemperf/src/com/android/cts/filesystemperf/SequentialRWTest.java
@@ -0,0 +1,125 @@
+/*
+ * Copyright (C) 2012 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.android.cts.filesystemperf;
+
+import android.cts.util.CtsAndroidTestCase;
+import com.android.cts.util.MeasureRun;
+import com.android.cts.util.MeasureTime;
+import com.android.cts.util.ResultType;
+import com.android.cts.util.ResultUnit;
+import com.android.cts.util.ReportLog;
+import com.android.cts.util.Stat;
+import com.android.cts.util.TimeoutReq;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.IOException;
+
+public class SequentialRWTest extends CtsAndroidTestCase {
+    private static final String DIR_SEQ_WR = "SEQ_WR";
+    private static final String DIR_SEQ_UPDATE = "SEQ_UPDATE";
+    private static final String DIR_SEQ_RD = "SEQ_RD";
+    private static final int BUFFER_SIZE = 10 * 1024 * 1024;
+
+    @Override
+    protected void tearDown() throws Exception {
+        FileUtil.removeFileOrDir(getContext(), DIR_SEQ_WR);
+        FileUtil.removeFileOrDir(getContext(), DIR_SEQ_UPDATE);
+        FileUtil.removeFileOrDir(getContext(), DIR_SEQ_RD);
+        super.tearDown();
+    }
+
+    @TimeoutReq(minutes = 30)
+    public void testSingleSequentialWrite() throws Exception {
+        final long fileSize = FileUtil.getFileSizeExceedingMemory(getContext(), BUFFER_SIZE);
+        if (fileSize == 0) { // not enough space, give up
+            return;
+        }
+        final int numberOfFiles =(int)(fileSize / BUFFER_SIZE);
+        getReportLog().printValue("files", numberOfFiles, ResultType.NEUTRAL,
+                ResultUnit.COUNT);
+        final byte[] data = FileUtil.generateRandomData(BUFFER_SIZE);
+        final File[] files = FileUtil.createNewFiles(getContext(), DIR_SEQ_WR,
+                numberOfFiles);
+        double[] rdAmount = new double[numberOfFiles];
+        double[] wrAmount = new double[numberOfFiles];
+        double[] times = FileUtil.measureIO(numberOfFiles, rdAmount, wrAmount, new MeasureRun() {
+
+            @Override
+            public void run(int i) throws IOException {
+                FileUtil.writeFile(files[i], data, false);
+            }
+        });
+        double[] mbps = ReportLog.calcRatePerSecArray((double)BUFFER_SIZE / 1024 / 1024, times);
+        getReportLog().printArray("write throughput",
+                mbps, ResultType.HIGHER_BETTER, ResultUnit.MBPS);
+        getReportLog().printArray("write amount", wrAmount, ResultType.NEUTRAL,
+                ResultUnit.BYTE);
+        Stat.StatResult stat = Stat.getStat(mbps);
+        getReportLog().printSummary("write throughput", stat.mAverage, ResultType.HIGHER_BETTER,
+                ResultUnit.MBPS);
+    }
+
+    @TimeoutReq(minutes = 60)
+    public void testSingleSequentialUpdate() throws Exception {
+        final long fileSize = FileUtil.getFileSizeExceedingMemory(getContext(), BUFFER_SIZE);
+        if (fileSize == 0) { // not enough space, give up
+            return;
+        }
+        final int NUMBER_REPETITION = 6;
+        FileUtil.doSequentialUpdateTest(getContext(), DIR_SEQ_UPDATE, getReportLog(), fileSize,
+                BUFFER_SIZE, NUMBER_REPETITION);
+    }
+
+    @TimeoutReq(minutes = 30)
+    public void testSingleSequentialRead() throws Exception {
+        final long fileSize = FileUtil.getFileSizeExceedingMemory(getContext(), BUFFER_SIZE);
+        if (fileSize == 0) { // not enough space, give up
+            return;
+        }
+        long start = System.currentTimeMillis();
+        final File file = FileUtil.createNewFilledFile(getContext(),
+                DIR_SEQ_RD, fileSize);
+        long finish = System.currentTimeMillis();
+        getReportLog().printValue("write throughput for test file of length " + fileSize,
+                ReportLog.calcRatePerSec((double)fileSize / 1024 / 1024, finish - start),
+                ResultType.HIGHER_BETTER, ResultUnit.MBPS);
+
+        final int NUMBER_READ = 10;
+
+        final byte[] data = new byte[BUFFER_SIZE];
+        double[] times = MeasureTime.measure(NUMBER_READ, new MeasureRun() {
+
+            @Override
+            public void run(int i) throws IOException {
+                final FileInputStream in = new FileInputStream(file);
+                long read = 0;
+                while (read < fileSize) {
+                    in.read(data);
+                    read += BUFFER_SIZE;
+                }
+                in.close();
+            }
+        });
+        double[] mbps = ReportLog.calcRatePerSecArray((double)fileSize / 1024 / 1024, times);
+        getReportLog().printArray("read throughput",
+                mbps, ResultType.HIGHER_BETTER, ResultUnit.MBPS);
+        Stat.StatResult stat = Stat.getStat(mbps);
+        getReportLog().printSummary("read throughput", stat.mAverage, ResultType.HIGHER_BETTER,
+                ResultUnit.MBPS);
+    }
+}
diff --git a/suite/cts/deviceTests/filesystemperf/src/com/android/cts/filesystemperf/TestTest.java b/suite/cts/deviceTests/filesystemperf/src/com/android/cts/filesystemperf/TestTest.java
new file mode 100644
index 0000000..052c054
--- /dev/null
+++ b/suite/cts/deviceTests/filesystemperf/src/com/android/cts/filesystemperf/TestTest.java
@@ -0,0 +1,52 @@
+/*
+ * Copyright (C) 2012 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.
+ */
+
+
+// code for testing, will be removed / moved before release
+
+package com.android.cts.filesystemperf;
+
+import android.cts.util.CtsAndroidTestCase;
+
+/**
+ * This class is for testing CTS logging. Will be disabled in release.
+ *
+ */
+public class TestTest extends CtsAndroidTestCase {
+    @Override
+    protected void tearDown() throws Exception {
+        super.tearDown();
+    }
+/* code for testing CTS logging. Disabled.
+    @TimeoutReq(minutes = 15)
+    public void testPass() {
+        double[] array = new double[] {1.0, 2.0, 3.0};
+        getReportLog().printArray(" ", array, true);
+        getReportLog().printArray(" ", array, false);
+        getReportLog().printValue(" ", 1.0);
+        getReportLog().printValue(" ", 2.0);
+        getReportLog().printSummary("This should be shown", 0, 0);
+    }
+
+    @TimeoutReq(minutes = 10)
+    public void testFail() throws Exception {
+        getReportLog().printValue(" ", 1.0);
+        getReportLog().printValue(" ", 2.0);
+        getReportLog().printSummary("This should not be shown", 0, 0);
+        throw new Exception("failed");
+    }
+*/
+}
diff --git a/suite/cts/deviceTests/opengl/Android.mk b/suite/cts/deviceTests/opengl/Android.mk
new file mode 100644
index 0000000..1b7d42b
--- /dev/null
+++ b/suite/cts/deviceTests/opengl/Android.mk
@@ -0,0 +1,35 @@
+# Copyright (C) 2013 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)
+
+# don't include this package in any target
+LOCAL_MODULE_TAGS := optional
+
+LOCAL_JAVA_LIBRARIES := android.test.runner
+
+LOCAL_STATIC_JAVA_LIBRARIES := ctsdeviceutil ctstestrunner
+
+LOCAL_JNI_SHARED_LIBRARIES := libctsopengl_jni
+
+LOCAL_SRC_FILES := $(call all-java-files-under, src)
+
+LOCAL_PACKAGE_NAME := CtsDeviceOpenGl
+
+LOCAL_SDK_VERSION := 16
+
+include $(BUILD_CTS_PACKAGE)
+
+include $(call all-makefiles-under,$(LOCAL_PATH))
\ No newline at end of file
diff --git a/suite/cts/deviceTests/opengl/AndroidManifest.xml b/suite/cts/deviceTests/opengl/AndroidManifest.xml
new file mode 100644
index 0000000..a0273ec
--- /dev/null
+++ b/suite/cts/deviceTests/opengl/AndroidManifest.xml
@@ -0,0 +1,53 @@
+<?xml version="1.0" encoding="utf-8"?>
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+    package="com.android.cts.opengl"
+    android:versionCode="1"
+    android:versionName="1.0" >
+
+    <uses-sdk
+        android:minSdkVersion="16"
+        android:targetSdkVersion="17" />
+
+    <uses-feature
+        android:glEsVersion="0x00020000"
+        android:required="true" />
+
+    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
+    <uses-permission android:name="android.permission.DISABLE_KEYGUARD" />
+
+    <application android:allowBackup="false" >
+        <uses-library android:name="android.test.runner" />
+
+        <activity
+            android:name=".primitive.GLPrimitiveActivity"
+            android:configChanges="keyboard|keyboardHidden|orientation|screenSize|uiMode"
+            android:theme="@android:style/Theme.NoTitleBar.Fullscreen" >
+            <intent-filter>
+                <action android:name="android.intent.action.MAIN" />
+
+                <category android:name="android.intent.category.LAUNCHER" />
+            </intent-filter>
+        </activity>
+        <activity
+            android:name=".reference.GLReferenceActivity"
+            android:configChanges="keyboard|keyboardHidden|orientation|screenSize|uiMode"
+            android:theme="@android:style/Theme.NoTitleBar.Fullscreen" >
+            <intent-filter>
+                <action android:name="android.intent.action.MAIN" />
+
+                <category android:name="android.intent.category.LAUNCHER" />
+            </intent-filter>
+        </activity>
+        <activity
+            android:name=".reference.GLGameActivity"
+            android:configChanges="keyboard|keyboardHidden|orientation|screenSize|uiMode"
+            android:theme="@android:style/Theme.NoTitleBar.Fullscreen" >
+        </activity>
+    </application>
+
+    <instrumentation
+        android:name="android.test.InstrumentationCtsTestRunner"
+        android:label="OpenGL ES 2.0 Benchmark"
+        android:targetPackage="com.android.cts.opengl" />
+
+</manifest>
\ No newline at end of file
diff --git a/suite/cts/deviceTests/opengl/README b/suite/cts/deviceTests/opengl/README
new file mode 100644
index 0000000..ce5e8e8
--- /dev/null
+++ b/suite/cts/deviceTests/opengl/README
@@ -0,0 +1,13 @@
+Copyright (C) 2013 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.
+
+All the assets in this project are under the above license and were made using Gimp and/or Blender.
\ No newline at end of file
diff --git a/suite/cts/deviceTests/opengl/assets/fragment/basic b/suite/cts/deviceTests/opengl/assets/fragment/basic
new file mode 100644
index 0000000..69d98b0
--- /dev/null
+++ b/suite/cts/deviceTests/opengl/assets/fragment/basic
@@ -0,0 +1,19 @@
+/*
+ * Copyright (C) 2013 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.
+ */
+precision mediump float;
+uniform sampler2D u_Texture;
+varying vec2 v_TexCoordinate;
+void main() {
+  gl_FragColor = texture2D(u_Texture, v_TexCoordinate);
+}
\ No newline at end of file
diff --git a/suite/cts/deviceTests/opengl/assets/fragment/blur b/suite/cts/deviceTests/opengl/assets/fragment/blur
new file mode 100644
index 0000000..1290798
--- /dev/null
+++ b/suite/cts/deviceTests/opengl/assets/fragment/blur
@@ -0,0 +1,37 @@
+/*
+ * Copyright (C) 2013 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.
+ */
+precision mediump float;
+uniform sampler2D u_Texture;
+uniform vec2 u_Scale;
+varying vec2 v_TexCoordinate;
+void main() {
+  float weights[11];
+  weights[0] = 0.047748641153356156;
+  weights[1] = 0.05979670798364139;
+  weights[2] = 0.07123260215138659;
+  weights[3] = 0.08071711293576822;
+  weights[4] = 0.08700369673862933;
+  weights[5] = 0.08920620580763855;
+  weights[6] = 0.08700369673862933;
+  weights[7] = 0.08071711293576822;
+  weights[8] = 0.07123260215138659;
+  weights[9] = 0.05979670798364139;
+  weights[10] = 0.047748641153356156;
+  vec4 color = vec4(0.0, 0.0, 0.0, 0.0);
+  for (int i = 0; i < 11; i++) {
+    vec2 coords = v_TexCoordinate.xy + ((float(i) - 5.0) * u_Scale);
+    color += texture2D(u_Texture, coords) * weights[i];
+  }
+  gl_FragColor = color;
+}
\ No newline at end of file
diff --git a/suite/cts/deviceTests/opengl/assets/fragment/perspective b/suite/cts/deviceTests/opengl/assets/fragment/perspective
new file mode 100644
index 0000000..8546938
--- /dev/null
+++ b/suite/cts/deviceTests/opengl/assets/fragment/perspective
@@ -0,0 +1,29 @@
+/*
+ * Copyright (C) 2013 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.
+ */
+precision mediump float;
+uniform vec3 u_LightPos;
+uniform sampler2D u_Texture;
+varying vec3 v_Position;
+varying vec3 v_Normal;
+varying vec2 v_TexCoordinate;
+void main() {
+  // Get a lighting direction vector from the light to the vertex.
+  vec3 lightVector = normalize(u_LightPos - v_Position);
+  // Calculate the dot product of the light vector and vertex normal.
+  float diffuse = max(dot(lightVector, v_Normal), 0.0);
+  // Add ambient lighting
+  diffuse = diffuse + 0.25;
+  // Multiply the diffuse illumination and texture to get final output color.
+  gl_FragColor = (diffuse * texture2D(u_Texture, v_TexCoordinate));
+}
\ No newline at end of file
diff --git a/suite/cts/deviceTests/opengl/assets/fragment/water b/suite/cts/deviceTests/opengl/assets/fragment/water
new file mode 100644
index 0000000..26d0954
--- /dev/null
+++ b/suite/cts/deviceTests/opengl/assets/fragment/water
@@ -0,0 +1,36 @@
+/*
+ * Copyright (C) 2013 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.
+ */
+precision mediump float;
+uniform vec3 u_LightPos;
+uniform sampler2D u_Texture1;
+uniform sampler2D u_Texture2;
+uniform int u_Time;
+varying vec3 v_Position;
+varying vec2 v_TexCoordinate;
+void main() {
+  float weight = abs(mod(float(u_Time), 101.0) - 50.0) / 50.0;// loop between 0.0 and 1.0
+  float offset = abs(float(u_Time) / 1000.0);
+  // Get normal from bump map.
+  vec3 map1 = texture2D(u_Texture1, v_TexCoordinate + offset).xyz * 2.0 - 1.0;
+  vec3 map2 = texture2D(u_Texture2, v_TexCoordinate + offset).xyz * 2.0 - 1.0;
+  vec3 normal = normalize((map1 * weight) + (map2 * (1.0 - weight)));
+  // Get a lighting direction vector from the light to the vertex.
+  vec3 lightVector = normalize(u_LightPos - v_Position);
+  // Calculate the dot product of the light vector and vertex normal.
+  float diffuse = max(dot(lightVector, normal), 0.0);
+  // Add ambient lighting
+  diffuse = diffuse + 0.025;
+  // Use the diffuse illumination to get final output color.
+  gl_FragColor = vec4(1.0 - diffuse, 1.0 - diffuse, 1.0, 1.0 - (diffuse * 0.9));// Semi transparent blue.
+}
\ No newline at end of file
diff --git a/suite/cts/deviceTests/opengl/assets/mesh/arc.cob b/suite/cts/deviceTests/opengl/assets/mesh/arc.cob
new file mode 100644
index 0000000..1defaf2
--- /dev/null
+++ b/suite/cts/deviceTests/opengl/assets/mesh/arc.cob
Binary files differ
diff --git a/suite/cts/deviceTests/opengl/assets/mesh/fish.cob b/suite/cts/deviceTests/opengl/assets/mesh/fish.cob
new file mode 100644
index 0000000..16de76c
--- /dev/null
+++ b/suite/cts/deviceTests/opengl/assets/mesh/fish.cob
Binary files differ
diff --git a/suite/cts/deviceTests/opengl/assets/mesh/plane.cob b/suite/cts/deviceTests/opengl/assets/mesh/plane.cob
new file mode 100644
index 0000000..b6c62d9
--- /dev/null
+++ b/suite/cts/deviceTests/opengl/assets/mesh/plane.cob
Binary files differ
diff --git a/suite/cts/deviceTests/opengl/assets/texture/arc.png b/suite/cts/deviceTests/opengl/assets/texture/arc.png
new file mode 100644
index 0000000..f95e7a0
--- /dev/null
+++ b/suite/cts/deviceTests/opengl/assets/texture/arc.png
Binary files differ
diff --git a/suite/cts/deviceTests/opengl/assets/texture/background.png b/suite/cts/deviceTests/opengl/assets/texture/background.png
new file mode 100644
index 0000000..db0d472
--- /dev/null
+++ b/suite/cts/deviceTests/opengl/assets/texture/background.png
Binary files differ
diff --git a/suite/cts/deviceTests/opengl/assets/texture/fish.png b/suite/cts/deviceTests/opengl/assets/texture/fish.png
new file mode 100644
index 0000000..fdf1e2c
--- /dev/null
+++ b/suite/cts/deviceTests/opengl/assets/texture/fish.png
Binary files differ
diff --git a/suite/cts/deviceTests/opengl/assets/texture/fish_dark.png b/suite/cts/deviceTests/opengl/assets/texture/fish_dark.png
new file mode 100644
index 0000000..54453a2
--- /dev/null
+++ b/suite/cts/deviceTests/opengl/assets/texture/fish_dark.png
Binary files differ
diff --git a/suite/cts/deviceTests/opengl/assets/texture/water1.png b/suite/cts/deviceTests/opengl/assets/texture/water1.png
new file mode 100644
index 0000000..96f4e62
--- /dev/null
+++ b/suite/cts/deviceTests/opengl/assets/texture/water1.png
Binary files differ
diff --git a/suite/cts/deviceTests/opengl/assets/texture/water2.png b/suite/cts/deviceTests/opengl/assets/texture/water2.png
new file mode 100644
index 0000000..92eebf9
--- /dev/null
+++ b/suite/cts/deviceTests/opengl/assets/texture/water2.png
Binary files differ
diff --git a/suite/cts/deviceTests/opengl/assets/vertex/basic b/suite/cts/deviceTests/opengl/assets/vertex/basic
new file mode 100644
index 0000000..88ba2ba
--- /dev/null
+++ b/suite/cts/deviceTests/opengl/assets/vertex/basic
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2013 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.
+ */
+precision mediump float;
+attribute vec4 a_Position;
+attribute vec2 a_TexCoordinate;
+varying vec2 v_TexCoordinate;
+void main() {
+  // Pass through the texture coordinate.
+  v_TexCoordinate = a_TexCoordinate;
+  // Set the position on screen.
+  gl_Position = a_Position;
+}
\ No newline at end of file
diff --git a/suite/cts/deviceTests/opengl/assets/vertex/blur b/suite/cts/deviceTests/opengl/assets/vertex/blur
new file mode 100644
index 0000000..ffd6a86
--- /dev/null
+++ b/suite/cts/deviceTests/opengl/assets/vertex/blur
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2013 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.
+ */
+precision mediump float;
+attribute vec4 a_Position;
+attribute vec2 a_TexCoordinate;
+varying vec2 v_TexCoordinate;
+void main() {
+  // Set the position.
+  gl_Position = a_Position;
+  // Pass through the texture coordinate.
+  v_TexCoordinate = a_TexCoordinate;
+}
\ No newline at end of file
diff --git a/suite/cts/deviceTests/opengl/assets/vertex/perspective b/suite/cts/deviceTests/opengl/assets/vertex/perspective
new file mode 100644
index 0000000..14c8c30
--- /dev/null
+++ b/suite/cts/deviceTests/opengl/assets/vertex/perspective
@@ -0,0 +1,32 @@
+/*
+ * Copyright (C) 2013 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.
+ */
+precision mediump float;
+uniform mat4 u_MVPMatrix;
+uniform mat4 u_MVMatrix;
+attribute vec4 a_Position;
+attribute vec3 a_Normal;
+attribute vec2 a_TexCoordinate;
+varying vec3 v_Position;
+varying vec3 v_Normal;
+varying vec2 v_TexCoordinate;
+void main() {
+  // Transform the vertex into eye space.
+  v_Position = vec3(u_MVMatrix * a_Position);
+  // Pass through the texture coordinate.
+  v_TexCoordinate = a_TexCoordinate;
+  // Transform the normal\'s orientation into eye space.
+  v_Normal = vec3(u_MVMatrix * vec4(a_Normal, 0.0));
+  // Multiply to get the final point in normalized screen coordinates.
+  gl_Position = u_MVPMatrix * a_Position;
+}
\ No newline at end of file
diff --git a/suite/cts/deviceTests/opengl/assets/vertex/water b/suite/cts/deviceTests/opengl/assets/vertex/water
new file mode 100644
index 0000000..dc09a99
--- /dev/null
+++ b/suite/cts/deviceTests/opengl/assets/vertex/water
@@ -0,0 +1,28 @@
+/*
+ * Copyright (C) 2013 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.
+ */
+precision mediump float;
+uniform mat4 u_MVPMatrix;
+uniform mat4 u_MVMatrix;
+attribute vec4 a_Position;
+attribute vec2 a_TexCoordinate;
+varying vec3 v_Position;
+varying vec2 v_TexCoordinate;
+void main() {
+  // Transform the vertex into eye space.
+  v_Position = vec3(u_MVMatrix * a_Position);
+  // Pass through the texture coordinate.
+  v_TexCoordinate = a_TexCoordinate;
+  // Multiply to get the final point in normalized screen coordinates.
+  gl_Position = u_MVPMatrix * a_Position;
+}
\ No newline at end of file
diff --git a/suite/cts/deviceTests/opengl/cob_exporter.py b/suite/cts/deviceTests/opengl/cob_exporter.py
new file mode 100644
index 0000000..0a210c9
--- /dev/null
+++ b/suite/cts/deviceTests/opengl/cob_exporter.py
@@ -0,0 +1,75 @@
+import os, bpy, struct
+from bpy_extras.io_utils import ExportHelper
+from bpy.props import StringProperty, BoolProperty, EnumProperty
+
+# This is a custom Blender export script to output an object to a format that's easy to use in
+# android. While open gl allows the use of an index buffer for vertices, the same cannot be done
+# for texture coordinates, which is why this script duplicates the vertices and normals. This
+# gives a larger but faster loading file, hence the tongue-in-cheek name "Compressed" object file.
+# The format is number of vertices + list of vertices (3 coord, 3 normal, 2 texcoord)
+bl_info = {
+        "name": "COB Exporter",
+        "description": "Exports the active scene into a Compressed Object file.",
+        "author": "Stuart Scott",
+        "version": (1, 0, 0),
+        "blender": (2, 6, 2),
+        "api": 36339,
+        "location": "File > Export > COB Exporter (.cob)",
+        "warning": "", # used for warning icon and text in addons panel
+        "wiki_url": "",
+        "tracker_url": "",
+        "category": "Import-Export"
+        }
+
+class COBExporter(bpy.types.Operator, ExportHelper):
+    '''Exports the current scene into a Compressed Object format.'''
+    bl_idname = "export.cob_exporter"  # this is important since its how bpy.ops.export.cob_exporter is constructed
+    bl_label = "COB Exporter"
+
+    filename_ext = ".cob"
+
+    filter_glob = StringProperty(default="*.cob", options={'HIDDEN'})
+
+    def execute(self, context):
+        mesh = context.active_object
+        if mesh.type != 'MESH':
+            print("Active object is not a mesh")
+            return {'FINISHED'}
+        if mesh.mode != 'OBJECT':
+            bpy.ops.object.mode_set(mode='OBJECT', toggle=False)
+        print("Writing "+mesh.name+" to "+self.filepath)
+        uvtex = mesh.data.uv_textures.active # points to active texture
+        f = open(self.filepath, 'wb')
+        f.write(struct.pack(">i", len(uvtex.data) * 3))# write length
+        for uv_index, uv_itself in enumerate(uvtex.data):
+            # get uv for this face
+            uvs = uv_itself.uv1, uv_itself.uv2, uv_itself.uv3
+            for vertex_index, vertex_itself in enumerate(mesh.data.faces[uv_index].vertices):
+                # for each vertex in the face
+                vertex = mesh.data.vertices[vertex_itself]
+                v = vertex.co.xyz
+                n = vertex.normal.xyz
+                t = uvs[vertex_index]
+                f.write(struct.pack(">ffffffff", v[0], v[1], v[2], n[0], n[1], n[2], t[0], 1 - t[1]))
+        f.close()
+        return {'FINISHED'}
+
+    @classmethod
+    def poll(cls, context):
+        return context.active_object != None
+
+# Only needed if you want to add into a dynamic menu
+def menu_func(self, context):
+    default_path = os.path.splitext(bpy.data.filepath)[0] + ".cob"
+    self.layout.operator(COBExporter.bl_idname, text="Compressed Object (.cob)").filepath = default_path
+
+def register():
+    bpy.utils.register_module(__name__)
+    bpy.types.INFO_MT_file_export.append(menu_func)
+
+def unregister():
+    bpy.utils.unregister_module(__name__)
+    bpy.types.INFO_MT_file_export.remove(menu_func)
+
+if __name__ == "__main__":
+    register()
diff --git a/suite/cts/deviceTests/opengl/jni/Android.mk b/suite/cts/deviceTests/opengl/jni/Android.mk
new file mode 100644
index 0000000..7b58170
--- /dev/null
+++ b/suite/cts/deviceTests/opengl/jni/Android.mk
@@ -0,0 +1,34 @@
+# Copyright (C) 2013 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 := libctsopengl_jni
+
+LOCAL_MODULE_TAGS := optional
+
+# Needed in order to use fences for synchronization
+LOCAL_CFLAGS += -DEGL_EGLEXT_PROTOTYPES -funsigned-char
+
+# Get all cpp files but not hidden files
+LOCAL_SRC_FILES := $(patsubst ./%,%, $(shell cd $(LOCAL_PATH); \
+		  find . -name "*.cpp" -and -not -name ".*"))
+
+LOCAL_C_INCLUDES := $(JNI_H_INCLUDE)
+
+LOCAL_SHARED_LIBRARIES := libEGL libGLESv2 libandroid libutils libcutils liblog
+
+include $(BUILD_SHARED_LIBRARY)
diff --git a/suite/cts/deviceTests/opengl/jni/Trace.h b/suite/cts/deviceTests/opengl/jni/Trace.h
new file mode 100644
index 0000000..713d3a0
--- /dev/null
+++ b/suite/cts/deviceTests/opengl/jni/Trace.h
@@ -0,0 +1,27 @@
+/*
+ * Copyright (C) 2013 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.
+ */
+#ifndef TRACE_H
+#define TRACE_H
+
+// #define TRACE
+
+#ifdef TRACE
+#define ATRACE_TAG ATRACE_TAG_GRAPHICS
+#include <utils/Trace.h>
+#define SCOPED_TRACE() android::ScopedTrace st(ATRACE_TAG, __func__)
+#else
+#define SCOPED_TRACE()
+#endif
+
+#endif
diff --git a/suite/cts/deviceTests/opengl/jni/graphics/GLUtils.cpp b/suite/cts/deviceTests/opengl/jni/graphics/GLUtils.cpp
new file mode 100644
index 0000000..9076f39
--- /dev/null
+++ b/suite/cts/deviceTests/opengl/jni/graphics/GLUtils.cpp
@@ -0,0 +1,236 @@
+/*
+ * Copyright (C) 2013 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.
+ */
+
+#include "GLUtils.h"
+#include <stdlib.h>
+#include <sys/time.h>
+
+#include <android/asset_manager_jni.h>
+
+#define LOG_TAG "CTS_OPENGL"
+#define LOG_NDEBUG 0
+#include <utils/Log.h>
+
+static JNIEnv* sEnv = NULL;
+static jobject sAssetManager = NULL;
+
+void GLUtils::setEnvAndAssetManager(JNIEnv* env, jobject assetManager) {
+    sEnv = env;
+    sAssetManager = assetManager;
+}
+
+static AAsset* loadAsset(const char* path) {
+    AAssetManager* nativeManager = AAssetManager_fromJava(sEnv, sAssetManager);
+    if (nativeManager == NULL) {
+        return NULL;
+    }
+    return AAssetManager_open(nativeManager, path, AASSET_MODE_UNKNOWN);;
+}
+
+char* GLUtils::openTextFile(const char* path) {
+    AAsset* asset = loadAsset(path);
+    if (asset == NULL) {
+        ALOGE("Couldn't load %s", path);
+        return NULL;
+    }
+    off_t length = AAsset_getLength(asset);
+    char* buffer = new char[length + 1];
+    int num = AAsset_read(asset, buffer, length);
+    AAsset_close(asset);
+    if (num != length) {
+        ALOGE("Couldn't read %s", path);
+        delete[] buffer;
+        return NULL;
+    }
+    buffer[length] = '\0';
+    return buffer;
+}
+
+GLuint GLUtils::loadTexture(const char* path) {
+    GLuint textureId = 0;
+    jclass activityClass = sEnv->FindClass("com/android/cts/opengl/reference/GLGameActivity");
+    if (activityClass == NULL) {
+        ALOGE("Couldn't find activity class");
+        return -1;
+    }
+    jmethodID loadTexture = sEnv->GetStaticMethodID(activityClass, "loadTexture",
+            "(Landroid/content/res/AssetManager;Ljava/lang/String;)I");
+    if (loadTexture == NULL) {
+        ALOGE("Couldn't find loadTexture method");
+        return -1;
+    }
+    jstring pathStr = sEnv->NewStringUTF(path);
+    textureId = sEnv->CallStaticIntMethod(activityClass, loadTexture, sAssetManager, pathStr);
+    sEnv->DeleteLocalRef(pathStr);
+    return textureId;
+}
+
+static int readInt(char* b) {
+    return (((int) b[0]) << 24) | (((int) b[1]) << 16) | (((int) b[2]) << 8) | ((int) b[3]);
+}
+
+static float readFloat(char* b) {
+    union {
+        int input;
+        float output;
+    } data;
+    data.input = readInt(b);
+    return data.output;
+}
+
+Mesh* GLUtils::loadMesh(const char* path) {
+    char* buffer = openTextFile(path);
+    if (buffer == NULL) {
+        return NULL;
+    }
+    int index = 0;
+    int numVertices = readInt(buffer + index);
+    index += 4;
+    float* vertices = new float[numVertices * 3];
+    float* normals = new float[numVertices * 3];
+    float* texCoords = new float[numVertices * 2];
+    for (int i = 0; i < numVertices; i++) {
+        // Vertices
+        int vIndex = i * 3;
+        vertices[vIndex + 0] = readFloat(buffer + index);
+        index += 4;
+        vertices[vIndex + 1] = readFloat(buffer + index);
+        index += 4;
+        vertices[vIndex + 2] = readFloat(buffer + index);
+        index += 4;
+        // Normals
+        normals[vIndex + 0] = readFloat(buffer + index);
+        index += 4;
+        normals[vIndex + 1] = readFloat(buffer + index);
+        index += 4;
+        normals[vIndex + 2] = readFloat(buffer + index);
+        index += 4;
+        // Texture Coordinates
+        int tIndex = i * 2;
+        texCoords[tIndex + 0] = readFloat(buffer + index);
+        index += 4;
+        texCoords[tIndex + 1] = readFloat(buffer + index);
+        index += 4;
+    }
+    return new Mesh(vertices, normals, texCoords, numVertices);
+}
+
+// Loads the given source code as a shader of the given type.
+static GLuint loadShader(GLenum shaderType, const char** source) {
+    GLuint shader = glCreateShader(shaderType);
+    if (shader) {
+        glShaderSource(shader, 1, source, NULL);
+        glCompileShader(shader);
+        GLint compiled = 0;
+        glGetShaderiv(shader, GL_COMPILE_STATUS, &compiled);
+        if (!compiled) {
+            GLint infoLen = 0;
+            glGetShaderiv(shader, GL_INFO_LOG_LENGTH, &infoLen);
+            if (infoLen > 0) {
+                char* infoLog = (char*) malloc(sizeof(char) * infoLen);
+                glGetShaderInfoLog(shader, infoLen, NULL, infoLog);
+                ALOGE("Error compiling shader:\n%s\n", infoLog);
+                free(infoLog);
+            }
+            glDeleteShader(shader);
+            shader = 0;
+        }
+    }
+    return shader;
+}
+
+GLuint GLUtils::createProgram(const char** vertexSource, const char** fragmentSource) {
+    GLuint vertexShader = loadShader(GL_VERTEX_SHADER, vertexSource);
+    if (!vertexShader) {
+        return 0;
+    }
+
+    GLuint fragmentShader = loadShader(GL_FRAGMENT_SHADER, fragmentSource);
+    if (!fragmentShader) {
+        return 0;
+    }
+
+    GLuint program = glCreateProgram();
+    if (program) {
+        glAttachShader(program, vertexShader);
+        glAttachShader(program, fragmentShader);
+
+        GLint linkStatus;
+        glLinkProgram(program);
+        glGetProgramiv(program, GL_LINK_STATUS, &linkStatus);
+
+        if (!linkStatus) {
+            GLint infoLen = 0;
+            glGetProgramiv(program, GL_INFO_LOG_LENGTH, &infoLen);
+            if (infoLen > 0) {
+                char* infoLog = (char*) malloc(sizeof(char) * infoLen);
+                glGetProgramInfoLog(program, infoLen, NULL, infoLog);
+                ALOGE("Error linking program:\n%s\n", infoLog);
+                free(infoLog);
+            }
+            glDeleteProgram(program);
+            program = 0;
+        }
+    }
+    return program;
+}
+
+double GLUtils::currentTimeMillis() {
+    struct timeval tv;
+    gettimeofday(&tv, (struct timezone *) NULL);
+    return tv.tv_sec * 1000.0 + tv.tv_usec / 1000.0;
+}
+
+// Rounds a number up to the smallest power of 2 that is greater than or equal to x.
+int GLUtils::roundUpToSmallestPowerOf2(int x) {
+    if (x < 0) {
+        return 0;
+    }
+    --x;
+    x |= x >> 1;
+    x |= x >> 2;
+    x |= x >> 4;
+    x |= x >> 8;
+    x |= x >> 16;
+    return x + 1;
+}
+
+GLuint GLUtils::genTexture(int texWidth, int texHeight, int fill) {
+    GLuint textureId = 0;
+    int w = roundUpToSmallestPowerOf2(texWidth);
+    int h = roundUpToSmallestPowerOf2(texHeight);
+    uint32_t* m = new uint32_t[w * h];
+    if (m != NULL) {
+        uint32_t* d = m;
+        for (int y = 0; y < h; y++) {
+            for (int x = 0; x < w; x++) {
+                if (fill == RANDOM_FILL) {
+                    *d = 0xff000000 | ((y & 0xff) << 16) | ((x & 0xff) << 8) | ((x + y) & 0xff);
+                } else {
+                    *d = 0xff000000 | fill;
+                }
+                d++;
+            }
+        }
+        glGenTextures(1, &textureId);
+        glBindTexture(GL_TEXTURE_2D, textureId);
+        glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, w, h, 0, GL_RGBA, GL_UNSIGNED_BYTE, m);
+        glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
+        glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
+        glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
+        glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);
+    }
+    delete[] m;
+    return textureId;
+}
diff --git a/suite/cts/deviceTests/opengl/jni/graphics/GLUtils.h b/suite/cts/deviceTests/opengl/jni/graphics/GLUtils.h
new file mode 100644
index 0000000..6aef87c
--- /dev/null
+++ b/suite/cts/deviceTests/opengl/jni/graphics/GLUtils.h
@@ -0,0 +1,47 @@
+/*
+ * Copyright (C) 2013 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.
+ */
+#ifndef GLUTILS_H
+#define GLUTILS_H
+
+#include <jni.h>
+
+#include <EGL/egl.h>
+#include <GLES2/gl2.h>
+#include <GLES2/gl2ext.h>
+
+#include "Mesh.h"
+
+class GLUtils {
+public:
+    static void setEnvAndAssetManager(JNIEnv* env, jobject assetManager);
+    // Loads a file from assets/path into a char array.
+    static char* openTextFile(const char* path);
+    // Loads a texture from assets/texture/<name>
+    static GLuint loadTexture(const char* name);
+    // Loads a mesh from assets/mesh/<name>
+    static Mesh* loadMesh(const char* name);
+    // Creates a program with the given vertex and fragment shader source code.
+    static GLuint createProgram(const char** vertexSource, const char** fragmentSource);
+    static double currentTimeMillis();
+    // Rounds a number up to the smallest power of 2 that is greater than the original number.
+    static int roundUpToSmallestPowerOf2(int x);
+    static const int RANDOM_FILL = -1;
+    // Generates a texture of the given dimensions. The texture can either be filled with the
+    // specified fill color, else if RANDOM_FILL is passed in the texture will be filled with
+    // random values.
+    static GLuint genTexture(int texWidth, int texHeight, int fill);
+    static bool createFBO(GLuint& fboId, GLuint& rboId, GLuint& cboId, int width, int height);
+};
+
+#endif
diff --git a/suite/cts/deviceTests/opengl/jni/graphics/Matrix.cpp b/suite/cts/deviceTests/opengl/jni/graphics/Matrix.cpp
new file mode 100644
index 0000000..0097a5d
--- /dev/null
+++ b/suite/cts/deviceTests/opengl/jni/graphics/Matrix.cpp
@@ -0,0 +1,328 @@
+/*
+ * Copyright (C) 2013 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.
+ */
+
+#include "Matrix.h"
+#include <string.h>
+#include <cmath>
+
+#define LOG_TAG "CTS_OPENGL"
+#define LOG_NDEBUG 0
+#include "utils/Log.h"
+
+Matrix::Matrix() {
+    identity();
+}
+
+Matrix::Matrix(const Matrix& src) {
+    loadWith(src);
+}
+
+void Matrix::print(const char* label) {
+    ALOGI("%c", *label);
+    for (int i = 0; i < 4; i++) {
+        const float* d = &(mData[i * 4]);
+        ALOGI("%f %f %f %f\n", d[0], d[1], d[2], d[3]);
+    }
+}
+
+bool Matrix::equals(const Matrix& src) {
+    bool equals = true;
+    const float* d = src.mData;
+    for (int i = 0; i < MATRIX_SIZE && equals; i++) {
+        if (mData[i] != d[i]) {
+            equals = false;
+        }
+    }
+    return equals;
+}
+
+void Matrix::loadWith(const Matrix& src) {
+    memcpy(mData, src.mData, MATRIX_SIZE * sizeof(float));
+}
+
+void Matrix::identity() {
+    mData[0] = 1.0f;
+    mData[1] = 0.0f;
+    mData[2] = 0.0f;
+    mData[3] = 0.0f;
+
+    mData[4] = 0.0f;
+    mData[5] = 1.0f;
+    mData[6] = 0.0f;
+    mData[7] = 0.0f;
+
+    mData[8] = 0.0f;
+    mData[9] = 0.0f;
+    mData[10] = 1.0f;
+    mData[11] = 0.0f;
+
+    mData[12] = 0.0f;
+    mData[13] = 0.0f;
+    mData[14] = 0.0f;
+    mData[15] = 1.0f;
+}
+
+void Matrix::translate(float x, float y, float z) {
+    Matrix* m = newTranslate(x, y, z);
+    Matrix* temp = new Matrix(*this);
+    if (m != NULL && temp != NULL) {
+        multiply(*temp, *m);
+    }
+    delete m;
+    delete temp;
+}
+
+void Matrix::scale(float x, float y, float z) {
+    Matrix* m = newScale(x, y, z);
+    Matrix* temp = new Matrix(*this);
+    if (m != NULL && temp != NULL) {
+        multiply(*temp, *m);
+    }
+    delete m;
+    delete temp;
+}
+
+void Matrix::rotate(float radians, float x, float y, float z) {
+    Matrix* m = newRotate(radians, x, y, z);
+    Matrix* temp = new Matrix(*this);
+    if (m != NULL && temp != NULL) {
+        multiply(*temp, *m);
+    }
+    delete m;
+    delete temp;
+}
+
+void Matrix::multiply(const Matrix& l, const Matrix& r) {
+    float const* const lhs = l.mData;
+    float const* const rhs = r.mData;
+    for (int i = 0; i < 4; i++) {
+        const int i4 = i * 4;
+        float x = 0;
+        float y = 0;
+        float z = 0;
+        float w = 0;
+
+        for (int j = 0; j < 4; j++) {
+            const int j4 = j * 4;
+            const float e = rhs[i4 + j];
+            x += lhs[j4 + 0] * e;
+            y += lhs[j4 + 1] * e;
+            z += lhs[j4 + 2] * e;
+            w += lhs[j4 + 3] * e;
+        }
+
+        mData[i4 + 0] = x;
+        mData[i4 + 1] = y;
+        mData[i4 + 2] = z;
+        mData[i4 + 3] = w;
+    }
+}
+
+Matrix* Matrix::newLookAt(float eyeX, float eyeY, float eyeZ, float centerX,
+        float centerY, float centerZ, float upX, float upY, float upZ) {
+    Matrix* m = new Matrix();
+    if (m != NULL) {
+        // See the OpenGL GLUT documentation for gluLookAt for a description
+        // of the algorithm. We implement it in a straightforward way:
+
+        float fx = centerX - eyeX;
+        float fy = centerY - eyeY;
+        float fz = centerZ - eyeZ;
+
+        // Normalize f
+        float rlf = 1.0f / (float) sqrt(fx * fx + fy * fy + fz * fz);
+        fx *= rlf;
+        fy *= rlf;
+        fz *= rlf;
+
+        // compute s = f x up (x means "cross product")
+        float sx = fy * upZ - fz * upY;
+        float sy = fz * upX - fx * upZ;
+        float sz = fx * upY - fy * upX;
+
+        // and normalize s
+        float rls = 1.0f / (float) sqrt(sx * sx + sy * sy + sz * sz);
+        sx *= rls;
+        sy *= rls;
+        sz *= rls;
+
+        // compute u = s x f
+        float ux = sy * fz - sz * fy;
+        float uy = sz * fx - sx * fz;
+        float uz = sx * fy - sy * fx;
+
+        float* d = m->mData;
+        d[0] = sx;
+        d[1] = ux;
+        d[2] = -fx;
+        d[3] = 0.0f;
+
+        d[4] = sy;
+        d[5] = uy;
+        d[6] = -fy;
+        d[7] = 0.0f;
+
+        d[8] = sz;
+        d[9] = uz;
+        d[10] = -fz;
+        d[11] = 0.0f;
+
+        d[12] = 0.0f;
+        d[13] = 0.0f;
+        d[14] = 0.0f;
+        d[15] = 1.0f;
+
+        m->translate(-eyeX, -eyeY, -eyeZ);
+    }
+    return m;
+}
+
+Matrix* Matrix::newFrustum(float left, float right, float bottom, float top,
+        float near, float far) {
+    const float r_width = 1.0f / (right - left);
+    const float r_height = 1.0f / (top - bottom);
+    const float r_depth = 1.0f / (near - far);
+    const float x = 2.0f * (near * r_width);
+    const float y = 2.0f * (near * r_height);
+    const float A = (right + left) * r_width;
+    const float B = (top + bottom) * r_height;
+    const float C = (far + near) * r_depth;
+    const float D = 2.0f * (far * near * r_depth);
+    Matrix* m = new Matrix();
+    if (m != NULL) {
+        float* d = m->mData;
+        d[0] = x;
+        d[5] = y;
+        d[8] = A;
+        d[9] = B;
+        d[10] = C;
+        d[14] = D;
+        d[11] = -1.0f;
+        d[1] = 0.0f;
+        d[2] = 0.0f;
+        d[3] = 0.0f;
+        d[4] = 0.0f;
+        d[6] = 0.0f;
+        d[7] = 0.0f;
+        d[12] = 0.0f;
+        d[13] = 0.0f;
+        d[15] = 0.0f;
+    }
+    return m;
+}
+
+Matrix* Matrix::newTranslate(float x, float y, float z) {
+    Matrix* m = new Matrix();
+    if (m != NULL) {
+        float* d = m->mData;
+        d[12] = x;
+        d[13] = y;
+        d[14] = z;
+    }
+    return m;
+}
+Matrix* Matrix::newScale(float x, float y, float z) {
+    Matrix* m = new Matrix();
+    if (m != NULL) {
+        float* d = m->mData;
+        d[0] = x;
+        d[5] = y;
+        d[10] = z;
+    }
+    return m;
+}
+Matrix* Matrix::newRotate(float radians, float x, float y, float z) {
+    Matrix* m = new Matrix();
+    if (m != NULL) {
+        float* d = m->mData;
+        d[3] = 0;
+        d[7] = 0;
+        d[11] = 0;
+        d[12] = 0;
+        d[13] = 0;
+        d[14] = 0;
+        d[15] = 1;
+        float s = (float) sinf(radians);
+        float c = (float) cosf(radians);
+        if (1.0f == x && 0.0f == y && 0.0f == z) {
+            d[5] = c;
+            d[10] = c;
+            d[6] = s;
+            d[9] = -s;
+            d[1] = 0;
+            d[2] = 0;
+            d[4] = 0;
+            d[8] = 0;
+            d[0] = 1;
+        } else if (0.0f == x && 1.0f == y && 0.0f == z) {
+            d[0] = c;
+            d[10] = c;
+            d[8] = s;
+            d[2] = -s;
+            d[1] = 0;
+            d[4] = 0;
+            d[6] = 0;
+            d[9] = 0;
+            d[5] = 1;
+        } else if (0.0f == x && 0.0f == y && 1.0f == z) {
+            d[0] = c;
+            d[5] = c;
+            d[1] = s;
+            d[4] = -s;
+            d[2] = 0;
+            d[6] = 0;
+            d[8] = 0;
+            d[9] = 0;
+            d[10] = 1;
+        } else {
+            float len = sqrt((x * x) + (y * y) + (z * z));
+            if (1.0f != len) {
+                float recipLen = 1.0f / len;
+                x *= recipLen;
+                y *= recipLen;
+                z *= recipLen;
+            }
+            float nc = 1.0f - c;
+            float xy = x * y;
+            float yz = y * z;
+            float zx = z * x;
+            float xs = x * s;
+            float ys = y * s;
+            float zs = z * s;
+            d[0] = x * x * nc + c;
+            d[4] = xy * nc - zs;
+            d[8] = zx * nc + ys;
+            d[1] = xy * nc + zs;
+            d[5] = y * y * nc + c;
+            d[9] = yz * nc - xs;
+            d[2] = zx * nc - ys;
+            d[6] = yz * nc + xs;
+            d[10] = z * z * nc + c;
+        }
+    }
+    return m;
+}
+
+void Matrix::multiplyVector(float* result, const Matrix& lhs,
+        const float* rhs) {
+    const float* d = lhs.mData;
+    const float x = rhs[0];
+    const float y = rhs[1];
+    const float z = rhs[2];
+    const float w = rhs[3];
+    for (int i = 0; i < 4; i++) {
+        const int j = i * 4;
+        result[i] = d[j + 0] * x + d[j + 1] * y + d[j + 2] * z + d[j + 3] * w;
+    }
+}
diff --git a/suite/cts/deviceTests/opengl/jni/graphics/Matrix.h b/suite/cts/deviceTests/opengl/jni/graphics/Matrix.h
new file mode 100644
index 0000000..11fc23c
--- /dev/null
+++ b/suite/cts/deviceTests/opengl/jni/graphics/Matrix.h
@@ -0,0 +1,58 @@
+/*
+ * Copyright (C) 2013 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.
+ */
+#ifndef MATRIX_H
+#define MATRIX_H
+
+class Matrix {
+public:
+    static const int MATRIX_SIZE = 16;
+    float mData[MATRIX_SIZE];
+    Matrix();
+    Matrix(const Matrix& src);
+    // Returns true if the two matrices have the same values.
+    bool equals(const Matrix& src);
+    // Loads this matrix with the identity matrix.
+    void identity();
+    // Loads this matrix with the data from src.
+    void loadWith(const Matrix& src);
+    // Translates this matrix by the given amounts.
+    void translate(float x, float y, float z);
+    // Scales this matrix by the given amounts.
+    void scale(float x, float y, float z);
+    // Rotates this matrix the given angle.
+    void rotate(float radians, float x, float y, float z);
+    // Sets this matrix to be the result of multiplying the given matrices.
+    void multiply(const Matrix& l, const Matrix& r);
+
+    void print(const char* label);
+
+    // Returns a new matrix representing the camera.
+    static Matrix* newLookAt(float eyeX, float eyeY, float eyeZ, float centerX,
+            float centerY, float centerZ, float upX, float upY, float upZ);
+    // Returns a new matrix representing the perspective matrix.
+    static Matrix* newFrustum(float left, float right, float bottom, float top,
+            float near, float far);
+    // Returns a new matrix representing the translation.
+    static Matrix* newTranslate(float x, float y, float z);
+    // Returns a new matrix representing the scaling.
+    static Matrix* newScale(float x, float y, float z);
+    // Returns a new matrix representing the rotation.
+    static Matrix* newRotate(float radians, float x, float y, float z);
+
+    // Sets the given matrix to be the result of multiplying the given matrix by the given vector.
+    static void multiplyVector(float* result, const Matrix& lhs,
+            const float* rhs);
+};
+
+#endif
diff --git a/suite/cts/deviceTests/opengl/jni/graphics/Mesh.cpp b/suite/cts/deviceTests/opengl/jni/graphics/Mesh.cpp
new file mode 100644
index 0000000..858ec6b
--- /dev/null
+++ b/suite/cts/deviceTests/opengl/jni/graphics/Mesh.cpp
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2013 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.
+ */
+#include "Mesh.h"
+
+Mesh::Mesh(const float* vertices, const float* normals, const float* texCoords,
+           const int numVertices)
+    : mVertices(vertices),
+      mNormals(normals),
+      mTexCoords(texCoords),
+      mNumVertices(numVertices) {
+
+}
diff --git a/suite/cts/deviceTests/opengl/jni/graphics/Mesh.h b/suite/cts/deviceTests/opengl/jni/graphics/Mesh.h
new file mode 100644
index 0000000..9ff4103
--- /dev/null
+++ b/suite/cts/deviceTests/opengl/jni/graphics/Mesh.h
@@ -0,0 +1,32 @@
+/*
+ * Copyright (C) 2013 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.
+ */
+#ifndef MESH_H
+#define MESH_H
+
+#include <GLES2/gl2.h>
+
+// Meshes act as holders for geometry data etc. This is accessed by the MeshNodes to render them.
+// This allows a mesh to appear multiple times in a SceneGraph without duplication.
+class Mesh {
+public:
+    Mesh(const float* vertices, const float* normals, const float* texCoords,
+            const int numVertices);
+    virtual ~Mesh() {};
+    const float* mVertices;
+    const float* mNormals;
+    const float* mTexCoords;
+    const int mNumVertices;
+};
+
+#endif
diff --git a/suite/cts/deviceTests/opengl/jni/graphics/MeshNode.cpp b/suite/cts/deviceTests/opengl/jni/graphics/MeshNode.cpp
new file mode 100644
index 0000000..8ea5f76
--- /dev/null
+++ b/suite/cts/deviceTests/opengl/jni/graphics/MeshNode.cpp
@@ -0,0 +1,19 @@
+/*
+ * Copyright (C) 2013 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.
+ */
+#include "MeshNode.h"
+
+MeshNode::MeshNode(const Mesh* mesh) :
+        mMesh(mesh) {
+
+}
diff --git a/suite/cts/deviceTests/opengl/jni/graphics/MeshNode.h b/suite/cts/deviceTests/opengl/jni/graphics/MeshNode.h
new file mode 100644
index 0000000..a02b6bd
--- /dev/null
+++ b/suite/cts/deviceTests/opengl/jni/graphics/MeshNode.h
@@ -0,0 +1,32 @@
+/*
+ * Copyright (C) 2013 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.
+ */
+#ifndef MESHNODE_H
+#define MESHNODE_H
+
+#include "Matrix.h"
+#include "Mesh.h"
+#include "Program.h"
+#include "SceneGraphNode.h"
+
+class MeshNode: public SceneGraphNode {
+public:
+    MeshNode(const Mesh* mesh);
+    virtual ~MeshNode() {};
+protected:
+    virtual void before(Program& program, Matrix& model, Matrix& view, Matrix& projection) = 0;
+    virtual void after(Program& program, Matrix& model, Matrix& view, Matrix& projection) = 0;
+    const Mesh* mMesh;
+};
+
+#endif
diff --git a/suite/cts/deviceTests/opengl/jni/graphics/PerspectiveMeshNode.cpp b/suite/cts/deviceTests/opengl/jni/graphics/PerspectiveMeshNode.cpp
new file mode 100644
index 0000000..db6b05d
--- /dev/null
+++ b/suite/cts/deviceTests/opengl/jni/graphics/PerspectiveMeshNode.cpp
@@ -0,0 +1,65 @@
+/*
+ * Copyright (C) 2013 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.
+ */
+
+#include "PerspectiveMeshNode.h"
+
+#include "PerspectiveProgram.h"
+
+PerspectiveMeshNode::PerspectiveMeshNode(const Mesh* mesh, const GLuint textureId) :
+        TexturedMeshNode(mesh, textureId) {
+}
+
+void PerspectiveMeshNode::before(Program& program, Matrix& model, Matrix& view, Matrix& projection) {
+    PerspectiveProgram& prog = (PerspectiveProgram&) program;
+
+    int textureUniformHandle = glGetUniformLocation(prog.mProgramId, "u_Texture");
+    int positionHandle = glGetAttribLocation(prog.mProgramId, "a_Position");
+    int normalHandle = glGetAttribLocation(prog.mProgramId, "a_Normal");
+    int texCoordHandle = glGetAttribLocation(prog.mProgramId, "a_TexCoordinate");
+
+    // Set the texture.
+    glActiveTexture (GL_TEXTURE0);
+    glBindTexture(GL_TEXTURE_2D, mTextureId);
+    glUniform1i(textureUniformHandle, 0);
+
+    glEnableVertexAttribArray(positionHandle);
+    glVertexAttribPointer(positionHandle, 3, GL_FLOAT, false, 0, mMesh->mVertices);
+    glEnableVertexAttribArray(normalHandle);
+    glVertexAttribPointer(normalHandle, 3, GL_FLOAT, false, 0, mMesh->mNormals);
+    glEnableVertexAttribArray(texCoordHandle);
+    glVertexAttribPointer(texCoordHandle, 2, GL_FLOAT, false, 0, mMesh->mTexCoords);
+
+    // This multiplies the view matrix by the model matrix, and stores the result in the MVP
+    // matrix (which currently contains model * view).
+    prog.mMVMatrix.multiply(view, model);
+
+    // Pass in the modelview matrix.
+    glUniformMatrix4fv(prog.mMVMatrixHandle, 1, false, prog.mMVMatrix.mData);
+
+    // This multiplies the modelview matrix by the projection matrix, and stores the result in
+    // the MVP matrix (which now contains model * view * projection).
+    prog.mMVPMatrix.multiply(projection, prog.mMVMatrix);
+
+    // Pass in the combined matrix.
+    glUniformMatrix4fv(prog.mMVPMatrixHandle, 1, false, prog.mMVPMatrix.mData);
+
+    // Pass in the light position in eye space.
+    glUniform3f(prog.mLightPosHandle, prog.mLightPosInEyeSpace[0], prog.mLightPosInEyeSpace[1],
+            prog.mLightPosInEyeSpace[2]);
+
+    glDrawArrays(GL_TRIANGLES, 0, mMesh->mNumVertices);
+}
+
+void PerspectiveMeshNode::after(Program& program, Matrix& model, Matrix& view, Matrix& projection) {
+}
diff --git a/suite/cts/deviceTests/opengl/jni/graphics/PerspectiveMeshNode.h b/suite/cts/deviceTests/opengl/jni/graphics/PerspectiveMeshNode.h
new file mode 100644
index 0000000..bc89248
--- /dev/null
+++ b/suite/cts/deviceTests/opengl/jni/graphics/PerspectiveMeshNode.h
@@ -0,0 +1,32 @@
+/*
+ * Copyright (C) 2013 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.
+ */
+
+#ifndef PERSPECTIVEMESHNODE_H
+#define PERSPECTIVEMESHNODE_H
+
+#include "Matrix.h"
+#include "Mesh.h"
+#include "Program.h"
+#include "TexturedMeshNode.h"
+
+class PerspectiveMeshNode: public TexturedMeshNode {
+public:
+    PerspectiveMeshNode(const Mesh* mesh, const GLuint textureId);
+    virtual ~PerspectiveMeshNode() {};
+protected:
+    virtual void before(Program& program, Matrix& model, Matrix& view, Matrix& projection);
+    virtual void after(Program& program, Matrix& model, Matrix& view, Matrix& projection);
+};
+
+#endif
diff --git a/suite/cts/deviceTests/opengl/jni/graphics/PerspectiveProgram.cpp b/suite/cts/deviceTests/opengl/jni/graphics/PerspectiveProgram.cpp
new file mode 100644
index 0000000..7665e5a
--- /dev/null
+++ b/suite/cts/deviceTests/opengl/jni/graphics/PerspectiveProgram.cpp
@@ -0,0 +1,38 @@
+/*
+ * Copyright (C) 2013 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.
+ */
+
+#include "PerspectiveProgram.h"
+
+#include <EGL/egl.h>
+#include <GLES2/gl2.h>
+#include <GLES2/gl2ext.h>
+
+PerspectiveProgram::PerspectiveProgram(GLuint programId) :
+        Program(programId) {
+    mLightPosInModelSpace[0] = 0.0f;
+    mLightPosInModelSpace[1] = 0.0f;
+    mLightPosInModelSpace[2] = 1.0f;
+    mLightPosInModelSpace[3] = 2.0f;
+    mMVMatrixHandle = glGetUniformLocation(programId, "u_MVMatrix");
+    mMVPMatrixHandle = glGetUniformLocation(programId, "u_MVPMatrix");
+    mLightPosHandle = glGetUniformLocation(programId, "u_LightPos");
+}
+
+void PerspectiveProgram::before(Matrix& model, Matrix& view, Matrix& projection) {
+    Program::before(model, view, projection);
+    mLightModelMatrix.identity();
+
+    Matrix::multiplyVector(mLightPosInWorldSpace, mLightModelMatrix, mLightPosInModelSpace);
+    Matrix::multiplyVector(mLightPosInEyeSpace, view, mLightPosInWorldSpace);
+}
diff --git a/suite/cts/deviceTests/opengl/jni/graphics/PerspectiveProgram.h b/suite/cts/deviceTests/opengl/jni/graphics/PerspectiveProgram.h
new file mode 100644
index 0000000..7792a3d
--- /dev/null
+++ b/suite/cts/deviceTests/opengl/jni/graphics/PerspectiveProgram.h
@@ -0,0 +1,42 @@
+/*
+ * Copyright (C) 2013 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.
+ */
+#ifndef PERSPECTIVEPROGRAM_H
+#define PERSPECTIVEPROGRAM_H
+
+#include "Matrix.h"
+#include "Program.h"
+
+#include <EGL/egl.h>
+#include <GLES2/gl2.h>
+#include <GLES2/gl2ext.h>
+
+class PerspectiveProgram: public Program {
+public:
+    PerspectiveProgram(GLuint programId);
+    virtual ~PerspectiveProgram() {};
+    virtual void before(Matrix& model, Matrix& view, Matrix& projection);
+
+    Matrix mMVMatrix;
+    Matrix mMVPMatrix;
+    Matrix mLightModelMatrix;
+    float mLightPosInModelSpace[4];
+    float mLightPosInWorldSpace[4];
+    float mLightPosInEyeSpace[4];
+
+    int mMVMatrixHandle;
+    int mMVPMatrixHandle;
+    int mLightPosHandle;
+};
+
+#endif
diff --git a/suite/cts/deviceTests/opengl/jni/graphics/Program.cpp b/suite/cts/deviceTests/opengl/jni/graphics/Program.cpp
new file mode 100644
index 0000000..b951a4b
--- /dev/null
+++ b/suite/cts/deviceTests/opengl/jni/graphics/Program.cpp
@@ -0,0 +1,26 @@
+/*
+ * Copyright (C) 2013 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.
+ */
+
+#include "ProgramNode.h"
+
+Program::Program(GLuint programId) :
+        mProgramId(programId) {
+}
+
+void Program::before(Matrix& model, Matrix& view, Matrix& projection) {
+    glUseProgram(mProgramId);
+}
+
+void Program::after(Matrix& model, Matrix& view, Matrix& projection) {
+}
diff --git a/suite/cts/deviceTests/opengl/jni/graphics/Program.h b/suite/cts/deviceTests/opengl/jni/graphics/Program.h
new file mode 100644
index 0000000..6161baf
--- /dev/null
+++ b/suite/cts/deviceTests/opengl/jni/graphics/Program.h
@@ -0,0 +1,30 @@
+/*
+ * Copyright (C) 2013 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.
+ */
+#ifndef PROGRAM_H
+#define PROGRAM_H
+
+#include "Matrix.h"
+
+#include <GLES2/gl2.h>
+
+class Program {
+public:
+    Program(GLuint programId);
+    virtual ~Program() {};
+    virtual void before(Matrix& model, Matrix& view, Matrix& projection);
+    virtual void after(Matrix& model, Matrix& view, Matrix& projection);
+    GLuint mProgramId;
+};
+
+#endif
diff --git a/suite/cts/deviceTests/opengl/jni/graphics/ProgramNode.cpp b/suite/cts/deviceTests/opengl/jni/graphics/ProgramNode.cpp
new file mode 100644
index 0000000..f367268
--- /dev/null
+++ b/suite/cts/deviceTests/opengl/jni/graphics/ProgramNode.cpp
@@ -0,0 +1,31 @@
+/*
+ * Copyright (C) 2013 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.
+ */
+
+#include "ProgramNode.h"
+
+ProgramNode::ProgramNode(Program& program) :
+        mProgram(program) {
+}
+
+void ProgramNode::before(Program& program, Matrix& model, Matrix& view, Matrix& projection) {
+    program.before(model, view, projection);
+}
+
+void ProgramNode::after(Program& program, Matrix& model, Matrix& view, Matrix& projection) {
+    program.after(model, view, projection);
+}
+
+void ProgramNode::drawProgram(Matrix& model, Matrix& view, Matrix& projection) {
+    SceneGraphNode::draw(mProgram, model, view, projection);
+}
diff --git a/suite/cts/deviceTests/opengl/jni/graphics/ProgramNode.h b/suite/cts/deviceTests/opengl/jni/graphics/ProgramNode.h
new file mode 100644
index 0000000..fe69958
--- /dev/null
+++ b/suite/cts/deviceTests/opengl/jni/graphics/ProgramNode.h
@@ -0,0 +1,32 @@
+/*
+ * Copyright (C) 2013 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.
+ */
+#ifndef PROGRAMNODE_H
+#define PROGRAMNODE_H
+
+#include "Matrix.h"
+#include "Program.h"
+#include "SceneGraphNode.h"
+
+class ProgramNode: public SceneGraphNode {
+public:
+    ProgramNode(Program& program);
+    virtual ~ProgramNode() {};
+    void drawProgram(Matrix& model, Matrix& view, Matrix& projection);
+protected:
+    virtual void before(Program& program, Matrix& model, Matrix& view, Matrix& projection);
+    virtual void after(Program& program, Matrix& model, Matrix& view, Matrix& projection);
+    Program& mProgram;
+};
+
+#endif
diff --git a/suite/cts/deviceTests/opengl/jni/graphics/Renderer.cpp b/suite/cts/deviceTests/opengl/jni/graphics/Renderer.cpp
new file mode 100644
index 0000000..b8e2acf
--- /dev/null
+++ b/suite/cts/deviceTests/opengl/jni/graphics/Renderer.cpp
@@ -0,0 +1,291 @@
+/*
+ * Copyright (C) 2013 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.
+ */
+#include "Renderer.h"
+#include <graphics/GLUtils.h>
+
+#define LOG_TAG "CTS_OPENGL"
+#define LOG_NDEBUG 0
+#include <utils/Log.h>
+
+#include <Trace.h>
+
+// Used to center the grid on the screen.
+#define CENTER_GRID(x) ((((x) * 2.0 + 1) - OFFSCREEN_GRID_SIZE) / OFFSCREEN_GRID_SIZE)
+
+static const int FBO_NUM_VERTICES = 6;
+
+static const float FBO_VERTICES[FBO_NUM_VERTICES * 3] = {
+        0.1f, 0.1f, -0.1f,
+        -0.1f, 0.1f, -0.1f,
+        -0.1f, -0.1f, -0.1f,
+        -0.1f, -0.1f, -0.1f,
+        0.1f, -0.1f, -0.1f,
+        0.1f, 0.1f, -0.1f };
+static const float FBO_TEX_COORDS[FBO_NUM_VERTICES * 2] = {
+        1.0f, 1.0f,
+        0.0f, 1.0f,
+        0.0f, 0.0f,
+        0.0f, 0.0f,
+        1.0f, 0.0f,
+        1.0f, 1.0f };
+
+static const char* FBO_VERTEX =
+        "attribute vec4 a_Position;"
+        "attribute vec2 a_TexCoord;"
+        "uniform float u_XOffset;"
+        "uniform float u_YOffset;"
+        "varying vec2 v_TexCoord;"
+        "void main() {"
+        "  v_TexCoord = a_TexCoord;"
+        "  gl_Position.x = a_Position.x + u_XOffset;"
+        "  gl_Position.y = a_Position.y + u_YOffset;"
+        "  gl_Position.zw = a_Position.zw;"
+        "}";
+
+static const char* FBO_FRAGMENT =
+        "precision mediump float;"
+        "uniform sampler2D u_Texture;"
+        "varying vec2 v_TexCoord;"
+        "void main() {"
+        "  gl_FragColor = texture2D(u_Texture, v_TexCoord);"
+        "}";
+
+static const EGLint contextAttribs[] = {
+        EGL_CONTEXT_CLIENT_VERSION, 2,
+        EGL_NONE };
+
+static const EGLint configAttribs[] = {
+        EGL_SURFACE_TYPE, EGL_PBUFFER_BIT,
+        EGL_RENDERABLE_TYPE, EGL_OPENGL_ES2_BIT,
+        EGL_RED_SIZE, 8,
+        EGL_GREEN_SIZE, 8,
+        EGL_BLUE_SIZE, 8,
+        EGL_ALPHA_SIZE, 8,
+        EGL_DEPTH_SIZE, 16,
+        EGL_STENCIL_SIZE, 8,
+        EGL_NONE };
+
+static const int FBO_SIZE = 128;
+
+Renderer::Renderer(ANativeWindow* window, bool offscreen, int workload) :
+        mOffscreen(offscreen), mWindow(window), mEglDisplay(EGL_NO_DISPLAY),
+        mEglSurface(EGL_NO_SURFACE), mEglContext(EGL_NO_CONTEXT), mWorkload(workload) {
+}
+
+bool Renderer::setUp() {
+    SCOPED_TRACE();
+    mEglDisplay = eglGetDisplay(EGL_DEFAULT_DISPLAY);
+    if (EGL_NO_DISPLAY == mEglDisplay || EGL_SUCCESS != eglGetError()) {
+        return false;
+    }
+
+    EGLint major;
+    EGLint minor;
+    if (!eglInitialize(mEglDisplay, &major, &minor) || EGL_SUCCESS != eglGetError()) {
+        return false;
+    }
+
+    EGLint numConfigs = 0;
+    if (!eglChooseConfig(mEglDisplay, configAttribs, &mGlConfig, 1, &numConfigs)
+            || EGL_SUCCESS != eglGetError()) {
+        return false;
+    }
+
+    mEglSurface = eglCreateWindowSurface(mEglDisplay, mGlConfig, mWindow, NULL);
+    if (EGL_NO_SURFACE == mEglSurface || EGL_SUCCESS != eglGetError()) {
+        return false;
+    }
+
+    mEglContext = eglCreateContext(mEglDisplay, mGlConfig, EGL_NO_CONTEXT, contextAttribs);
+    if (EGL_NO_CONTEXT == mEglContext || EGL_SUCCESS != eglGetError()) {
+        return false;
+    }
+
+    if (!eglMakeCurrent(mEglDisplay, mEglSurface, mEglSurface, mEglContext)
+            || EGL_SUCCESS != eglGetError()) {
+        return false;
+    }
+
+    if (!eglQuerySurface(mEglDisplay, mEglSurface, EGL_WIDTH, &mWidth)
+            || EGL_SUCCESS != eglGetError()) {
+        return false;
+    }
+    if (!eglQuerySurface(mEglDisplay, mEglSurface, EGL_HEIGHT, &mHeight)
+            || EGL_SUCCESS != eglGetError()) {
+        return false;
+    }
+
+    if (mOffscreen) {
+        mFboWidth = FBO_SIZE;
+        mFboHeight = FBO_SIZE;
+
+        glGenFramebuffers(1, &mFboId);
+        glBindFramebuffer(GL_FRAMEBUFFER, mFboId);
+
+        glGenRenderbuffers(1, &mFboDepthId);
+        glBindRenderbuffer(GL_RENDERBUFFER, mFboDepthId);
+        glRenderbufferStorage(GL_RENDERBUFFER, GL_DEPTH_COMPONENT16, mFboWidth, mFboHeight);
+        glBindRenderbuffer(GL_RENDERBUFFER, 0);
+        glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT,
+                                  GL_RENDERBUFFER, mFboDepthId);
+
+        mFboTexId = GLUtils::genTexture(mFboWidth, mFboHeight, 0);
+        glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, mFboTexId, 0);
+
+        GLuint err = glGetError();
+        if (err != GL_NO_ERROR) {
+            ALOGE("GLError %d", err);
+            return false;
+        }
+
+        GLenum status = glCheckFramebufferStatus(GL_FRAMEBUFFER);
+        if (status != GL_FRAMEBUFFER_COMPLETE) {
+            ALOGE("Framebuffer not complete: %d", status);
+            return false;
+        }
+        // Create fbo program.
+        mFboProgId = GLUtils::createProgram(&FBO_VERTEX, &FBO_FRAGMENT);
+        if (mFboProgId == 0) {
+            return false;
+        }
+        // Bind attributes.
+        mFboTexUniformHandle = glGetUniformLocation(mFboProgId, "u_Texture");
+        mFboXOffsetUniformHandle = glGetUniformLocation(mFboProgId, "u_XOffset");
+        mFboYOffsetUniformHandle = glGetUniformLocation(mFboProgId, "u_YOffset");
+        mFboPositionHandle = glGetAttribLocation(mFboProgId, "a_Position");
+        mFboTexCoordHandle = glGetAttribLocation(mFboProgId, "a_TexCoord");
+    } else {
+        mFboWidth = 0;
+        mFboHeight = 0;
+        mFboId = 0;
+        mFboDepthId = 0;
+        mFboTexId = 0;
+    }
+
+    GLuint err = glGetError();
+    if (err != GL_NO_ERROR) {
+        ALOGE("GLError %d in setUp", err);
+        return false;
+    }
+    return true;
+}
+
+bool Renderer::tearDown() {
+    SCOPED_TRACE();
+    if (mOffscreen) {
+        if (mFboId != 0) {
+            glDeleteFramebuffers(1, &mFboId);
+            mFboId = 0;
+        }
+        if (mFboDepthId != 0) {
+            glDeleteRenderbuffers(1, &mFboDepthId);
+            mFboDepthId = 0;
+        }
+        if (mFboTexId != 0) {
+            glDeleteTextures(1, &mFboTexId);
+            mFboTexId = 0;
+        }
+    }
+    GLuint err = glGetError();
+    if (err != GL_NO_ERROR) {
+        ALOGE("GLError %d in tearDown", err);
+        return false;
+    }
+    if (mEglContext != EGL_NO_CONTEXT) {
+        eglDestroyContext(mEglDisplay, mEglContext);
+        mEglContext = EGL_NO_CONTEXT;
+    }
+    if (mEglSurface != EGL_NO_SURFACE) {
+        eglDestroySurface(mEglDisplay, mEglSurface);
+        mEglSurface = EGL_NO_SURFACE;
+    }
+    if (mEglDisplay != EGL_NO_DISPLAY) {
+        eglMakeCurrent(mEglDisplay, EGL_NO_SURFACE, EGL_NO_SURFACE, EGL_NO_CONTEXT);
+        eglTerminate(mEglDisplay);
+        mEglDisplay = EGL_NO_DISPLAY;
+    }
+
+    return EGL_SUCCESS == eglGetError();
+}
+
+bool Renderer::draw() {
+    SCOPED_TRACE();
+    if (!eglMakeCurrent(mEglDisplay, mEglSurface, mEglSurface, mEglContext)
+            || EGL_SUCCESS != eglGetError()) {
+        return false;
+    }
+
+    glBindFramebuffer(GL_FRAMEBUFFER, 0);
+    glViewport(0, 0, mWidth, mHeight);
+
+    if (mOffscreen) {
+        // Set the background clear color to black.
+        glClearColor(0.0f, 0.0f, 0.0f, 0.0f);
+        glClear(GL_DEPTH_BUFFER_BIT | GL_COLOR_BUFFER_BIT);
+        for (int i = 0; i < OFFSCREEN_INNER_FRAMES; i++) {
+            // Switch to FBO and re-attach.
+            glBindFramebuffer(GL_FRAMEBUFFER, mFboId);
+            glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT,
+                                    GL_RENDERBUFFER, mFboDepthId);
+            glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0,
+                                 GL_TEXTURE_2D, mFboTexId, 0);
+            glViewport(0, 0, mFboWidth, mFboHeight);
+
+            // Render workload.
+            drawWorkload();
+            glFlush();
+
+            // Switch back to display.
+            glBindFramebuffer(GL_FRAMEBUFFER, 0);
+            glViewport(0, 0, mWidth, mHeight);
+
+            // No culling of back faces
+            glDisable (GL_CULL_FACE);
+            // No depth testing
+            glDisable (GL_DEPTH_TEST);
+            // No blending
+            glDisable (GL_BLEND);
+
+            glUseProgram(mFboProgId);
+
+            // Set the texture.
+            glActiveTexture (GL_TEXTURE0);
+            glBindTexture(GL_TEXTURE_2D, mFboTexId);
+            glUniform1i(mFboTexUniformHandle, 0);
+
+            // Set the offsets
+            glUniform1f(mFboXOffsetUniformHandle, CENTER_GRID(i / OFFSCREEN_GRID_SIZE));
+            glUniform1f(mFboYOffsetUniformHandle, CENTER_GRID(i % OFFSCREEN_GRID_SIZE));
+
+            glEnableVertexAttribArray(mFboPositionHandle);
+            glEnableVertexAttribArray(mFboTexCoordHandle);
+            glVertexAttribPointer(mFboPositionHandle, 3, GL_FLOAT, false, 0, FBO_VERTICES);
+            glVertexAttribPointer(mFboTexCoordHandle, 2, GL_FLOAT, false, 0, FBO_TEX_COORDS);
+
+            // Render FBO to display.
+            glDrawArrays(GL_TRIANGLES, 0, FBO_NUM_VERTICES);
+        }
+    } else {
+        // Render workload.
+        drawWorkload();
+    }
+
+    GLuint err = glGetError();
+    if (err != GL_NO_ERROR) {
+        ALOGE("GLError %d in draw", err);
+        return false;
+    }
+
+    return eglSwapBuffers(mEglDisplay, mEglSurface);
+}
diff --git a/suite/cts/deviceTests/opengl/jni/graphics/Renderer.h b/suite/cts/deviceTests/opengl/jni/graphics/Renderer.h
new file mode 100644
index 0000000..caa1634
--- /dev/null
+++ b/suite/cts/deviceTests/opengl/jni/graphics/Renderer.h
@@ -0,0 +1,56 @@
+/*
+ * Copyright (C) 2013 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.
+ */
+#ifndef RENDERER_H
+#define RENDERER_H
+
+#include <android/native_window.h>
+
+#include <EGL/egl.h>
+#include <GLES2/gl2.h>
+#include <GLES2/gl2ext.h>
+
+class Renderer {
+public:
+    Renderer(ANativeWindow* window, bool offscreen, int workload);
+    virtual bool setUp();
+    virtual bool tearDown();
+    bool draw();
+    virtual void drawWorkload() = 0;
+    virtual ~Renderer() {};
+    static const int OFFSCREEN_INNER_FRAMES = 100;
+    static const int OFFSCREEN_GRID_SIZE = 10;
+    bool mOffscreen;
+protected:
+    ANativeWindow* mWindow;
+    EGLDisplay mEglDisplay;
+    EGLSurface mEglSurface;
+    EGLContext mEglContext;
+    EGLConfig mGlConfig;
+    GLuint mProgramId;
+    EGLint mWidth;
+    EGLint mHeight;
+    int mWorkload;
+    int mFboWidth;// Frame buffer width
+    int mFboHeight;// Frame buffer height
+    GLuint mFboId;// Frame buffer id
+    GLuint mFboDepthId;// Depth buffer id
+    GLuint mFboTexId;// Frame buffer texture id
+    GLuint mFboProgId;// Frame buffer program id
+    GLuint mFboTexUniformHandle;// Frame buffer texture uniform handle
+    GLuint mFboXOffsetUniformHandle;// Frame buffer x offset uniform handle
+    GLuint mFboYOffsetUniformHandle;// Frame buffer y offset uniform handle
+    GLuint mFboPositionHandle;// Frame buffer position handle
+    GLuint mFboTexCoordHandle;// Frame buffer texture coordinate handle
+};
+#endif
diff --git a/suite/cts/deviceTests/opengl/jni/graphics/SceneGraphNode.cpp b/suite/cts/deviceTests/opengl/jni/graphics/SceneGraphNode.cpp
new file mode 100644
index 0000000..455ccd6
--- /dev/null
+++ b/suite/cts/deviceTests/opengl/jni/graphics/SceneGraphNode.cpp
@@ -0,0 +1,32 @@
+/*
+ * Copyright (C) 2013 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.
+ */
+#include "SceneGraphNode.h"
+
+SceneGraphNode::~SceneGraphNode() {
+    for (size_t i = 0; i < mChildren.size(); i++) {
+        delete mChildren[i];
+    }
+}
+
+void SceneGraphNode::addChild(SceneGraphNode* child) {
+    mChildren.add(child);
+}
+
+void SceneGraphNode::draw(Program& program, Matrix& model, Matrix& view, Matrix& projection) {
+    before(program, model, view, projection);
+    for (size_t i = 0; i < mChildren.size(); i++) {
+        mChildren[i]->draw(program, model, view, projection);
+    }
+    after(program, model, view, projection);
+}
diff --git a/suite/cts/deviceTests/opengl/jni/graphics/SceneGraphNode.h b/suite/cts/deviceTests/opengl/jni/graphics/SceneGraphNode.h
new file mode 100644
index 0000000..dce8fde
--- /dev/null
+++ b/suite/cts/deviceTests/opengl/jni/graphics/SceneGraphNode.h
@@ -0,0 +1,34 @@
+/*
+ * Copyright (C) 2013 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.
+ */
+#ifndef SCENEGRAPHNODE_H
+#define SCENEGRAPHNODE_H
+
+#include <utils/Vector.h>
+#include "Matrix.h"
+#include "Program.h"
+
+class SceneGraphNode {
+public:
+    SceneGraphNode() {};
+    virtual ~SceneGraphNode();
+    void addChild(SceneGraphNode* child);
+protected:
+    virtual void before(Program& program, Matrix& model, Matrix& view, Matrix& projection) = 0;
+    virtual void after(Program& program, Matrix& model, Matrix& view, Matrix& projection) = 0;
+    void draw(Program& program, Matrix& model, Matrix& view, Matrix& projection);
+private:
+    android::Vector<SceneGraphNode*> mChildren;
+};
+
+#endif
diff --git a/suite/cts/deviceTests/opengl/jni/graphics/TexturedMeshNode.cpp b/suite/cts/deviceTests/opengl/jni/graphics/TexturedMeshNode.cpp
new file mode 100644
index 0000000..7da18af
--- /dev/null
+++ b/suite/cts/deviceTests/opengl/jni/graphics/TexturedMeshNode.cpp
@@ -0,0 +1,40 @@
+/*
+ * Copyright (C) 2013 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.
+ */
+
+#include "TexturedMeshNode.h"
+
+TexturedMeshNode::TexturedMeshNode(const Mesh* mesh, const GLuint textureId) :
+        MeshNode(mesh), mTextureId(textureId) {
+}
+
+void TexturedMeshNode::before(Program& program, Matrix& model, Matrix& view, Matrix& projection) {
+    int textureUniformHandle = glGetUniformLocation(program.mProgramId, "u_Texture");
+    int positionHandle = glGetAttribLocation(program.mProgramId, "a_Position");
+    int texCoordHandle = glGetAttribLocation(program.mProgramId, "a_TexCoordinate");
+
+    // Set the texture.
+    glActiveTexture(GL_TEXTURE0);
+    glBindTexture(GL_TEXTURE_2D, mTextureId);
+    glUniform1i(textureUniformHandle, 0);
+
+    glEnableVertexAttribArray(positionHandle);
+    glVertexAttribPointer(positionHandle, 3, GL_FLOAT, false, 0, mMesh->mVertices);
+    glEnableVertexAttribArray(texCoordHandle);
+    glVertexAttribPointer(texCoordHandle, 2, GL_FLOAT, false, 0, mMesh->mTexCoords);
+
+    glDrawArrays(GL_TRIANGLES, 0, mMesh->mNumVertices);
+}
+
+void TexturedMeshNode::after(Program& program, Matrix& model, Matrix& view, Matrix& projection) {
+}
diff --git a/suite/cts/deviceTests/opengl/jni/graphics/TexturedMeshNode.h b/suite/cts/deviceTests/opengl/jni/graphics/TexturedMeshNode.h
new file mode 100644
index 0000000..fff95aa
--- /dev/null
+++ b/suite/cts/deviceTests/opengl/jni/graphics/TexturedMeshNode.h
@@ -0,0 +1,33 @@
+/*
+ * Copyright (C) 2013 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.
+ */
+
+#ifndef TEXTUREDMESHNODE_H
+#define TEXTUREDMESHNODE_H
+
+#include "Matrix.h"
+#include "Mesh.h"
+#include "MeshNode.h"
+#include "Program.h"
+
+class TexturedMeshNode: public MeshNode {
+public:
+    TexturedMeshNode(const Mesh* mesh, const GLuint textureId);
+    virtual ~TexturedMeshNode() {};
+protected:
+    virtual void before(Program& program, Matrix& model, Matrix& view, Matrix& projection);
+    virtual void after(Program& program, Matrix& model, Matrix& view, Matrix& projection);
+    const GLuint mTextureId;
+};
+
+#endif
diff --git a/suite/cts/deviceTests/opengl/jni/graphics/TransformationNode.cpp b/suite/cts/deviceTests/opengl/jni/graphics/TransformationNode.cpp
new file mode 100644
index 0000000..3cfa55b
--- /dev/null
+++ b/suite/cts/deviceTests/opengl/jni/graphics/TransformationNode.cpp
@@ -0,0 +1,36 @@
+/*
+ * Copyright (C) 2013 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.
+ */
+#include "TransformationNode.h"
+
+TransformationNode::TransformationNode(Matrix* matrix) :
+        mMatrix(matrix) {
+}
+
+TransformationNode::~TransformationNode() {
+    delete mMatrix;
+}
+
+void TransformationNode::before(Program& program, Matrix& model, Matrix& view,
+        Matrix& projection) {
+    // Save the current Matrix.
+    mSavedModelMatrix.loadWith(model);
+    // Apply transformation.
+    model.multiply(*mMatrix, mSavedModelMatrix);
+}
+
+void TransformationNode::after(Program& program, Matrix& model, Matrix& view,
+        Matrix& projection) {
+    // Restore original Matrix.
+    model.loadWith(mSavedModelMatrix);
+}
diff --git a/suite/cts/deviceTests/opengl/jni/graphics/TransformationNode.h b/suite/cts/deviceTests/opengl/jni/graphics/TransformationNode.h
new file mode 100644
index 0000000..04ba5c2
--- /dev/null
+++ b/suite/cts/deviceTests/opengl/jni/graphics/TransformationNode.h
@@ -0,0 +1,35 @@
+/*
+ * Copyright (C) 2013 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.
+ */
+#ifndef TRANSFORMATIONNODE_H
+#define TRANSFORMATIONNODE_H
+
+#include "Matrix.h"
+#include "Program.h"
+#include "SceneGraphNode.h"
+
+class TransformationNode: public SceneGraphNode {
+public:
+    TransformationNode(Matrix* matrix);
+    virtual ~TransformationNode();
+protected:
+    virtual void before(Program& program, Matrix& model, Matrix& view,
+            Matrix& projection);
+    virtual void after(Program& program, Matrix& model, Matrix& view,
+            Matrix& projection);
+private:
+    Matrix mSavedModelMatrix;
+    Matrix* mMatrix;
+};
+
+#endif
diff --git a/suite/cts/deviceTests/opengl/jni/graphics/Vector2D.cpp b/suite/cts/deviceTests/opengl/jni/graphics/Vector2D.cpp
new file mode 100644
index 0000000..d4a8c18
--- /dev/null
+++ b/suite/cts/deviceTests/opengl/jni/graphics/Vector2D.cpp
@@ -0,0 +1,68 @@
+/*
+ * Copyright (C) 2013 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.
+ */
+#include "Vector2D.h"
+
+#include <math.h>
+
+Vector2D::Vector2D() :
+        mX(0), mY(0) {
+}
+
+Vector2D::Vector2D(float x, float y) :
+        mX(x), mY(y) {
+}
+
+Vector2D Vector2D::copy() {
+    Vector2D v(mX, mY);
+    return v;
+}
+
+void Vector2D::add(const Vector2D& v) {
+    mX += v.mX;
+    mY += v.mY;
+}
+
+void Vector2D::sub(const Vector2D& v) {
+    mX -= v.mX;
+    mY -= v.mY;
+}
+
+void Vector2D::scale(float s) {
+    mX *= s;
+    mY *= s;
+}
+
+float Vector2D::distance(const Vector2D& v) {
+    float dx = mX - v.mX;
+    float dy = mY - v.mY;
+    return (float) sqrt(dx * dx + dy * dy);
+}
+
+void Vector2D::normalize() {
+    float m = magnitude();
+    if (m > 0) {
+        scale(1 / m);
+    }
+}
+
+void Vector2D::limit(float max) {
+    if (magnitude() > max) {
+        normalize();
+        scale(max);
+    }
+}
+
+float Vector2D::magnitude() {
+    return (float) sqrt(mX * mX + mY * mY);
+}
diff --git a/suite/cts/deviceTests/opengl/jni/graphics/Vector2D.h b/suite/cts/deviceTests/opengl/jni/graphics/Vector2D.h
new file mode 100644
index 0000000..5110975
--- /dev/null
+++ b/suite/cts/deviceTests/opengl/jni/graphics/Vector2D.h
@@ -0,0 +1,33 @@
+/*
+ * Copyright (C) 2013 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.
+ */
+#ifndef VECTOR2D_H
+#define VECTOR2D_H
+
+class Vector2D {
+public:
+    Vector2D();
+    Vector2D(float x, float y);
+    Vector2D copy();
+    void normalize();
+    void add(const Vector2D& v);
+    void sub(const Vector2D& v);
+    void scale(float s);
+    void limit(float max);
+    void limit(float maxX, float maxY);
+    float magnitude();
+    float distance(const Vector2D& v);
+    float mX;
+    float mY;
+};
+#endif
diff --git a/suite/cts/deviceTests/opengl/jni/primitive/GLPrimitive.cpp b/suite/cts/deviceTests/opengl/jni/primitive/GLPrimitive.cpp
new file mode 100644
index 0000000..9d39af9
--- /dev/null
+++ b/suite/cts/deviceTests/opengl/jni/primitive/GLPrimitive.cpp
@@ -0,0 +1,100 @@
+/*
+ * Copyright (C) 2013 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.
+ */
+#include <jni.h>
+
+#include <stdlib.h>
+
+#include <android/native_window.h>
+#include <android/native_window_jni.h>
+
+#include <graphics/GLUtils.h>
+#include <graphics/Renderer.h>
+
+#include "fullpipeline/FullPipelineRenderer.h"
+#include "pixeloutput/PixelOutputRenderer.h"
+#include "shaderperf/ShaderPerfRenderer.h"
+#include "contextswitch/ContextSwitchRenderer.h"
+
+// Holds the current benchmark's renderer.
+Renderer* gRenderer = NULL;
+
+extern "C" JNIEXPORT jboolean JNICALL
+Java_com_android_cts_opengl_primitive_GLPrimitiveActivity_startBenchmark(
+        JNIEnv* env, jclass clazz, jint numFrames, jdoubleArray frameTimes) {
+    if (gRenderer == NULL) {
+        return false;
+    }
+
+    // Sets up the renderer.
+    bool success = gRenderer->setUp();
+
+    // Records the start time.
+    double start = GLUtils::currentTimeMillis();
+
+    // Offscreen renders 100 tiles per frame so reduce the number of frames to render.
+    if (gRenderer->mOffscreen) {
+        numFrames /= Renderer::OFFSCREEN_INNER_FRAMES;
+    }
+
+    // Draw off the screen.
+    for (int i = 0; i < numFrames && success; i++) {
+        // Draw a frame.
+        success = gRenderer->draw();
+    }
+
+    // Records the end time.
+    double end = GLUtils::currentTimeMillis();
+
+    // Sets the times in the Java array.
+    double times[] = {start, end};
+    env->SetDoubleArrayRegion(frameTimes, 0, 2, times);
+
+    // Tears down and deletes the renderer.
+    success = gRenderer->tearDown() && success;
+    delete gRenderer;
+    gRenderer = NULL;
+    return success;
+}
+
+// The following functions create the renderers for the various benchmarks.
+extern "C" JNIEXPORT void JNICALL
+Java_com_android_cts_opengl_primitive_GLPrimitiveActivity_setupFullPipelineBenchmark(
+        JNIEnv* env, jclass clazz, jobject surface, jboolean offscreen, jint workload) {
+    gRenderer = new FullPipelineRenderer(
+            ANativeWindow_fromSurface(env, surface), offscreen, workload);
+}
+
+extern "C" JNIEXPORT void JNICALL
+Java_com_android_cts_opengl_primitive_GLPrimitiveActivity_setupPixelOutputBenchmark(
+        JNIEnv* env, jclass clazz, jobject surface, jboolean offscreen, jint workload) {
+    gRenderer = new PixelOutputRenderer(
+            ANativeWindow_fromSurface(env, surface), offscreen, workload);
+}
+
+extern "C" JNIEXPORT void JNICALL
+Java_com_android_cts_opengl_primitive_GLPrimitiveActivity_setupShaderPerfBenchmark(
+        JNIEnv* env, jclass clazz, jobject surface, jboolean offscreen, jint workload) {
+    gRenderer = new ShaderPerfRenderer(
+            ANativeWindow_fromSurface(env, surface), offscreen, workload);
+}
+
+extern "C" JNIEXPORT void JNICALL
+Java_com_android_cts_opengl_primitive_GLPrimitiveActivity_setupContextSwitchBenchmark(
+        JNIEnv* env, jclass clazz, jobject surface, jboolean offscreen, jint workload) {
+    if (workload <= 8) {
+        // This test uses 8 iterations, so workload can't be more than 8.
+        gRenderer = new ContextSwitchRenderer(
+                ANativeWindow_fromSurface(env, surface), offscreen, workload);
+    }
+}
diff --git a/suite/cts/deviceTests/opengl/jni/primitive/contextswitch/ContextSwitchRenderer.cpp b/suite/cts/deviceTests/opengl/jni/primitive/contextswitch/ContextSwitchRenderer.cpp
new file mode 100644
index 0000000..7fd4093
--- /dev/null
+++ b/suite/cts/deviceTests/opengl/jni/primitive/contextswitch/ContextSwitchRenderer.cpp
@@ -0,0 +1,231 @@
+/*
+ * Copyright (C) 2013 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.
+ */
+
+#include <android/native_window.h>
+
+#include <stdlib.h>
+
+#include <EGL/egl.h>
+#include <EGL/eglext.h>
+#include <GLES2/gl2.h>
+#include <GLES2/gl2ext.h>
+
+#include "ContextSwitchRenderer.h"
+#include <graphics/GLUtils.h>
+
+#define LOG_TAG "CTS_OPENGL"
+#define LOG_NDEBUG 0
+#include <utils/Log.h>
+#include <Trace.h>
+
+static const EGLint contextAttribs[] = {
+        EGL_CONTEXT_CLIENT_VERSION, 2,
+        EGL_NONE };
+
+static const int NUM_WORKER_CONTEXTS = 7;
+
+static const int CS_TEXTURE_SIZE = 64;
+
+static const int CS_NUM_VERTICES = 6;
+
+static const float CS_VERTICES[CS_NUM_VERTICES * 3] = {
+        0.1f, 0.1f, -0.1f,
+        -0.1f, 0.1f, -0.1f,
+        -0.1f, -0.1f, -0.1f,
+        -0.1f, -0.1f, -0.1f,
+        0.1f, -0.1f, -0.1f,
+        0.1f, 0.1f, -0.1f };
+
+static const float CS_TEX_COORDS[CS_NUM_VERTICES * 2] = {
+        1.0f, 1.0f,
+        0.0f, 1.0f,
+        0.0f, 0.0f,
+        0.0f, 0.0f,
+        1.0f, 0.0f,
+        1.0f, 1.0f };
+
+static const char* CS_VERTEX =
+        "attribute vec4 a_Position;"
+        "attribute vec2 a_TexCoord;"
+        "uniform float u_Translate;"
+        "varying vec2 v_TexCoord;"
+        "void main() {"
+        "  v_TexCoord = a_TexCoord;"
+        "  gl_Position.x = a_Position.x + u_Translate;"
+        "  gl_Position.yzw = a_Position.yzw;"
+        "}";
+
+static const char* CS_FRAGMENT =
+        "precision mediump float;"
+        "uniform sampler2D u_Texture;"
+        "varying vec2 v_TexCoord;"
+        "void main() {"
+        "  gl_FragColor = texture2D(u_Texture, v_TexCoord);"
+        "}";
+
+ContextSwitchRenderer::ContextSwitchRenderer(ANativeWindow* window, bool offscreen, int workload) :
+        Renderer(window, offscreen, workload), mContexts(NULL) {
+}
+
+bool ContextSwitchRenderer::setUp() {
+    SCOPED_TRACE();
+    if (!Renderer::setUp()) {
+        return false;
+    }
+
+    // Setup texture.
+    mTextureId = GLUtils::genTexture(CS_TEXTURE_SIZE, CS_TEXTURE_SIZE, GLUtils::RANDOM_FILL);
+    if (mTextureId == 0) {
+        return false;
+    }
+
+    // Create program.
+    mProgramId = GLUtils::createProgram(&CS_VERTEX, &CS_FRAGMENT);
+    if (mProgramId == 0) {
+        return false;
+    }
+    // Bind attributes.
+    mTextureUniformHandle = glGetUniformLocation(mProgramId, "u_Texture");
+    mTranslateUniformHandle = glGetUniformLocation(mProgramId, "u_Translate");
+    mPositionHandle = glGetAttribLocation(mProgramId, "a_Position");
+    mTexCoordHandle = glGetAttribLocation(mProgramId, "a_TexCoord");
+
+    mContexts = new EGLContext[NUM_WORKER_CONTEXTS];
+    mFboIds = new GLuint[NUM_WORKER_CONTEXTS];
+    for (int i = 0; i < NUM_WORKER_CONTEXTS; i++) {
+        // Create the contexts, they share data with the main one.
+        mContexts[i] = eglCreateContext(mEglDisplay, mGlConfig, mEglContext, contextAttribs);
+        if (EGL_NO_CONTEXT == mContexts[i] || EGL_SUCCESS != eglGetError()) {
+            return false;
+        }
+
+        if (!eglMakeCurrent(mEglDisplay, mEglSurface, mEglSurface, mContexts[i])
+                || EGL_SUCCESS != eglGetError()) {
+            return false;
+        }
+        if (mOffscreen) {
+            // FBOs are not shared across contexts, textures and renderbuffers are though.
+            glGenFramebuffers(1, &mFboIds[i]);
+            glBindFramebuffer(GL_FRAMEBUFFER, mFboIds[i]);
+
+            glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT,
+                                      GL_RENDERBUFFER, mFboDepthId);
+
+            glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0,
+                                   GL_TEXTURE_2D, mFboTexId, 0);
+            GLenum status = glCheckFramebufferStatus(GL_FRAMEBUFFER);
+            if (status != GL_FRAMEBUFFER_COMPLETE) {
+                ALOGE("Framebuffer not complete: %d", status);
+                return false;
+            }
+        }
+    }
+    return true;
+}
+
+bool ContextSwitchRenderer::tearDown() {
+    SCOPED_TRACE();
+    if (mContexts) {
+        // Destroy the contexts, the main one will be handled by Renderer::tearDown().
+        for (int i = 0; i < NUM_WORKER_CONTEXTS; i++) {
+            if (mOffscreen) {
+                if (mFboIds[i] != 0) {
+                    eglMakeCurrent(mEglDisplay, mEglSurface, mEglSurface, mContexts[i]);
+                    glDeleteFramebuffers(1, &mFboIds[i]);
+                    mFboIds[i] = 0;
+                }
+            }
+            eglDestroyContext(mEglDisplay, mContexts[i]);
+        }
+        delete[] mContexts;
+    }
+    eglMakeCurrent(mEglDisplay, mEglSurface, mEglSurface, mEglContext);
+    if (mTextureId != 0) {
+        glDeleteTextures(1, &mTextureId);
+        mTextureId = 0;
+    }
+    if (!Renderer::tearDown()) {
+        return false;
+    }
+    return true;
+}
+
+void ContextSwitchRenderer::drawWorkload() {
+    SCOPED_TRACE();
+    // Set the background clear color to black.
+    glClearColor(0.0f, 0.0f, 0.0f, 0.0f);
+    glClear(GL_DEPTH_BUFFER_BIT | GL_COLOR_BUFFER_BIT);
+    // No culling of back faces
+    glDisable(GL_CULL_FACE);
+    // No depth testing
+    glDisable(GL_DEPTH_TEST);
+
+    EGLSyncKHR fence = eglCreateSyncKHR(mEglDisplay, EGL_SYNC_FENCE_KHR, NULL);
+
+    const int TOTAL_NUM_CONTEXTS = NUM_WORKER_CONTEXTS + 1;
+    const float TRANSLATION = 0.9f - (TOTAL_NUM_CONTEXTS * 0.2f);
+    for (int i = 0; i < TOTAL_NUM_CONTEXTS; i++) {
+        eglWaitSyncKHR(mEglDisplay, fence, 0);
+        eglDestroySyncKHR(mEglDisplay, fence);
+        glUseProgram(mProgramId);
+
+        // Set the texture.
+        glActiveTexture (GL_TEXTURE0);
+        glBindTexture(GL_TEXTURE_2D, mTextureId);
+        glUniform1i(mTextureUniformHandle, 0);
+
+        // Set the x translate.
+        glUniform1f(mTranslateUniformHandle, (i * 0.2f) + TRANSLATION);
+
+        glEnableVertexAttribArray(mPositionHandle);
+        glEnableVertexAttribArray(mTexCoordHandle);
+        glVertexAttribPointer(mPositionHandle, 3, GL_FLOAT, false, 0, CS_VERTICES);
+        glVertexAttribPointer(mTexCoordHandle, 2, GL_FLOAT, false, 0, CS_TEX_COORDS);
+
+        glDrawArrays(GL_TRIANGLES, 0, CS_NUM_VERTICES);
+        fence = eglCreateSyncKHR(mEglDisplay, EGL_SYNC_FENCE_KHR, NULL);
+
+        // Switch to next context.
+        if (i < (mWorkload - 1)) {
+            eglMakeCurrent(mEglDisplay, mEglSurface, mEglSurface, mContexts[i]);
+            // Switch to FBO and re-attach.
+            if (mOffscreen) {
+                glBindFramebuffer(GL_FRAMEBUFFER, mFboIds[i]);
+                glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT,
+                                        GL_RENDERBUFFER, mFboDepthId);
+                glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0,
+                                     GL_TEXTURE_2D, mFboTexId, 0);
+                glViewport(0, 0, mFboWidth, mFboHeight);
+            }
+        }
+        GLuint err = glGetError();
+        if (err != GL_NO_ERROR) {
+            ALOGE("GLError %d in drawWorkload", err);
+            break;
+        }
+    }
+
+    eglDestroySyncKHR(mEglDisplay, fence);
+
+    // Switch back to the main context.
+    eglMakeCurrent(mEglDisplay, mEglSurface, mEglSurface, mEglContext);
+    if (mOffscreen) {
+        glBindFramebuffer(GL_FRAMEBUFFER, mFboId);
+        glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT,
+                                GL_RENDERBUFFER, mFboDepthId);
+        glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0,
+                             GL_TEXTURE_2D, mFboTexId, 0);
+        glViewport(0, 0, mFboWidth, mFboHeight);
+    }
+}
diff --git a/suite/cts/deviceTests/opengl/jni/primitive/contextswitch/ContextSwitchRenderer.h b/suite/cts/deviceTests/opengl/jni/primitive/contextswitch/ContextSwitchRenderer.h
new file mode 100644
index 0000000..51a4376
--- /dev/null
+++ b/suite/cts/deviceTests/opengl/jni/primitive/contextswitch/ContextSwitchRenderer.h
@@ -0,0 +1,36 @@
+/*
+ * Copyright (C) 2013 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.
+ */
+#ifndef CONTEXTSWITCHRENDERER_H
+#define CONTEXTSWITCHRENDERER_H
+
+#include <graphics/Renderer.h>
+
+class ContextSwitchRenderer: public Renderer {
+public:
+    ContextSwitchRenderer(ANativeWindow* window, bool offscreen, int workload);
+    virtual ~ContextSwitchRenderer() {};
+    bool setUp();
+    bool tearDown();
+    void drawWorkload();
+private:
+    EGLContext* mContexts;
+    GLuint* mFboIds;
+    GLuint mTextureId;
+    GLuint mTextureUniformHandle;
+    GLuint mTranslateUniformHandle;
+    GLuint mPositionHandle;
+    GLuint mTexCoordHandle;
+};
+
+#endif
diff --git a/suite/cts/deviceTests/opengl/jni/primitive/fullpipeline/FullPipelineRenderer.cpp b/suite/cts/deviceTests/opengl/jni/primitive/fullpipeline/FullPipelineRenderer.cpp
new file mode 100644
index 0000000..97462b5
--- /dev/null
+++ b/suite/cts/deviceTests/opengl/jni/primitive/fullpipeline/FullPipelineRenderer.cpp
@@ -0,0 +1,205 @@
+/*
+ * Copyright (C) 2013 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.
+ */
+#include <EGL/egl.h>
+#include <GLES2/gl2.h>
+#include <GLES2/gl2ext.h>
+
+#include "FullPipelineRenderer.h"
+
+#include <graphics/PerspectiveMeshNode.h>
+#include <graphics/GLUtils.h>
+#include <graphics/TransformationNode.h>
+
+#include <Trace.h>
+
+static const int FP_NUM_VERTICES = 6;
+
+static const float FP_VERTICES[FP_NUM_VERTICES * 3] = {
+        1.0f, 1.0f, 0.0f,
+        0.0f, 1.0f, 0.0f,
+        0.0f, 0.0f, 0.0f,
+        0.0f, 0.0f, 0.0f,
+        1.0f, 0.0f, 0.0f,
+        1.0f, 1.0f, 0.0f };
+
+static const float FP_NORMALS[FP_NUM_VERTICES * 3] = {
+        0.0f, 0.0f, 1.0f,
+        0.0f, 0.0f, 1.0f,
+        0.0f, 0.0f, 1.0f,
+        0.0f, 0.0f, 1.0f,
+        0.0f, 0.0f, 1.0f,
+        0.0f, 0.0f, 1.0f };
+
+static const float FP_TEX_COORDS[FP_NUM_VERTICES * 2] = {
+        1.0f, 1.0f,
+        0.0f, 1.0f,
+        0.0f, 0.0f,
+        0.0f, 0.0f,
+        1.0f, 0.0f,
+        1.0f, 1.0f };
+
+static const char* FP_VERTEX =
+        "uniform mat4 u_MVPMatrix;"
+        "uniform mat4 u_MVMatrix;"
+        "attribute vec4 a_Position;"
+        "attribute vec3 a_Normal;"
+        "attribute vec2 a_TexCoordinate;"
+        "varying vec3 v_Position;"
+        "varying vec3 v_Normal;"
+        "varying vec2 v_TexCoordinate;"
+        "void main() {\n"
+        "  // Transform the vertex into eye space.\n"
+        "  v_Position = vec3(u_MVMatrix * a_Position);\n"
+        "  // Pass through the texture coordinate.\n"
+        "  v_TexCoordinate = a_TexCoordinate;\n"
+        "  // Transform the normal\'s orientation into eye space.\n"
+        "  v_Normal = vec3(u_MVMatrix * vec4(a_Normal, 0.0));\n"
+        "  // Multiply to get the final point in normalized screen coordinates.\n"
+        "  gl_Position = u_MVPMatrix * a_Position;\n"
+        "}";
+
+static const char* FP_FRAGMENT =
+        "precision mediump float;"
+        "uniform vec3 u_LightPos;"
+        "uniform sampler2D u_Texture;"
+        "varying vec3 v_Position;"
+        "varying vec3 v_Normal;"
+        "varying vec2 v_TexCoordinate;"
+        "void main() {\n"
+        "  // Will be used for attenuation.\n"
+        "  float distance = length(u_LightPos - v_Position);\n"
+        "  // Get a lighting direction vector from the light to the vertex.\n"
+        "  vec3 lightVector = normalize(u_LightPos - v_Position);\n"
+        "  // Calculate the dot product of the light vector and vertex normal.\n"
+        "  float diffuse = max(dot(v_Normal, lightVector), 0.0);\n"
+        "  // Add attenuation.\n"
+        "  diffuse = diffuse * (1.0 / (1.0 + (0.01 * distance)));\n"
+        "  // Add ambient lighting\n"
+        "  diffuse = diffuse + 0.25;\n"
+        "  // Multiply the diffuse illumination and texture to get final output color.\n"
+        "  gl_FragColor = (diffuse * texture2D(u_Texture, v_TexCoordinate));\n"
+        "}";
+
+FullPipelineRenderer::FullPipelineRenderer(ANativeWindow* window, bool offscreen, int workload) :
+        Renderer(window, offscreen, workload), mProgram(NULL), mSceneGraph(NULL),
+        mModelMatrix(NULL), mViewMatrix(NULL), mProjectionMatrix(NULL), mMesh(NULL),
+        mTextureId(0) {
+}
+
+bool FullPipelineRenderer::setUp() {
+    SCOPED_TRACE();
+    if (!Renderer::setUp()) {
+        return false;
+    }
+
+    mProgramId = GLUtils::createProgram(&FP_VERTEX, &FP_FRAGMENT);
+    if (mProgramId == 0) {
+        return false;
+    }
+    mProgram = new PerspectiveProgram(mProgramId);
+
+    mModelMatrix = new Matrix();
+
+    // Position the eye in front of the origin.
+    float eyeX = 0.0f;
+    float eyeY = 0.0f;
+    float eyeZ = 1.5f;
+
+    // We are looking at the origin
+    float centerX = 0.0f;
+    float centerY = 0.0f;
+    float centerZ = 0.0f;
+
+    // Set our up vector.
+    float upX = 0.0f;
+    float upY = 1.0f;
+    float upZ = 0.0f;
+
+    // Set the view matrix.
+    mViewMatrix = Matrix::newLookAt(eyeX, eyeY, eyeZ, centerX, centerY, centerZ, upX, upY, upZ);
+
+    // Create a new perspective projection matrix. The height will stay the same
+    // while the width will vary as per aspect ratio.
+    float ratio = (float) mWidth / mHeight;
+    float left = -ratio;
+    float right = ratio;
+    float bottom = -1.0f;
+    float top = 1.0f;
+    float near = 1.0f;
+    float far = 2.0f;
+
+    mProjectionMatrix = Matrix::newFrustum(left, right, bottom, top, near, far);
+
+    // Setup texture.
+    mTextureId = GLUtils::genTexture(mWidth, mHeight, GLUtils::RANDOM_FILL);
+    if (mTextureId == 0) {
+        return false;
+    }
+
+    float count = mWorkload * mWorkload;
+    float middle = count / 2.0f;
+    float scale = 2.0f / count;
+
+    mMesh = new Mesh(FP_VERTICES, FP_NORMALS, FP_TEX_COORDS, FP_NUM_VERTICES);
+    mSceneGraph = new ProgramNode(*mProgram);
+
+    for (int i = 0; i < count; i++) {
+        for (int j = 0; j < count; j++) {
+            Matrix* transformMatrix = Matrix::newScale(scale, scale, scale);
+            transformMatrix->translate(i - middle, j - middle, 0.0f);
+            TransformationNode* transformNode = new TransformationNode(transformMatrix);
+            mSceneGraph->addChild(transformNode);
+            PerspectiveMeshNode* meshNode = new PerspectiveMeshNode(mMesh, mTextureId);
+            transformNode->addChild(meshNode);
+        }
+    }
+    return true;
+}
+
+bool FullPipelineRenderer::tearDown() {
+    SCOPED_TRACE();
+    if (mTextureId != 0) {
+        glDeleteTextures(1, &mTextureId);
+        mTextureId = 0;
+    }
+    if (!Renderer::tearDown()) {
+        return false;
+    }
+    delete mModelMatrix;
+    mModelMatrix = NULL;
+    delete mViewMatrix;
+    mViewMatrix = NULL;
+    delete mProjectionMatrix;
+    mProjectionMatrix = NULL;
+    delete mProgram;
+    mProgram = NULL;
+    delete mSceneGraph;
+    mSceneGraph = NULL;
+    delete mMesh;
+    mMesh = NULL;
+    return true;
+}
+
+void FullPipelineRenderer::drawWorkload() {
+    SCOPED_TRACE();
+    // Set the background clear color to black.
+    glClearColor(0.0f, 0.0f, 0.0f, 0.0f);
+    // Use culling to remove back faces.
+    glEnable(GL_CULL_FACE);
+    // Use depth testing.
+    glEnable(GL_DEPTH_TEST);
+    glClear(GL_DEPTH_BUFFER_BIT | GL_COLOR_BUFFER_BIT);
+    mModelMatrix->identity();
+    mSceneGraph->drawProgram(*mModelMatrix, *mViewMatrix, *mProjectionMatrix);
+}
diff --git a/suite/cts/deviceTests/opengl/jni/primitive/fullpipeline/FullPipelineRenderer.h b/suite/cts/deviceTests/opengl/jni/primitive/fullpipeline/FullPipelineRenderer.h
new file mode 100644
index 0000000..84616b4
--- /dev/null
+++ b/suite/cts/deviceTests/opengl/jni/primitive/fullpipeline/FullPipelineRenderer.h
@@ -0,0 +1,39 @@
+/*
+ * Copyright (C) 2013 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.
+ */
+#ifndef FULLPIPELINERENDERER_H
+#define FULLPIPELINERENDERER_H
+
+#include <graphics/PerspectiveProgram.h>
+#include <graphics/Matrix.h>
+#include <graphics/Mesh.h>
+#include <graphics/Renderer.h>
+#include <graphics/ProgramNode.h>
+
+class FullPipelineRenderer: public Renderer {
+public:
+    FullPipelineRenderer(ANativeWindow* window, bool offscreen, int workload);
+    virtual ~FullPipelineRenderer() {};
+    bool setUp();
+    bool tearDown();
+    void drawWorkload();
+private:
+    Program* mProgram;
+    ProgramNode* mSceneGraph;
+    Matrix* mModelMatrix;
+    Matrix* mViewMatrix;
+    Matrix* mProjectionMatrix;
+    Mesh* mMesh;
+    GLuint mTextureId;
+};
+#endif
diff --git a/suite/cts/deviceTests/opengl/jni/primitive/pixeloutput/PixelOutputRenderer.cpp b/suite/cts/deviceTests/opengl/jni/primitive/pixeloutput/PixelOutputRenderer.cpp
new file mode 100644
index 0000000..287ebfb
--- /dev/null
+++ b/suite/cts/deviceTests/opengl/jni/primitive/pixeloutput/PixelOutputRenderer.cpp
@@ -0,0 +1,125 @@
+/*
+ * Copyright (C) 2013 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.
+ */
+#include "PixelOutputRenderer.h"
+#include <graphics/GLUtils.h>
+
+#include <Trace.h>
+
+static const int PO_NUM_VERTICES = 6;
+
+static const float PO_VERTICES[PO_NUM_VERTICES * 3] = {
+        1.0f, 1.0f, -1.0f,
+        -1.0f, 1.0f, -1.0f,
+        -1.0f, -1.0f, -1.0f,
+        -1.0f, -1.0f, -1.0f,
+        1.0f, -1.0f, -1.0f,
+        1.0f, 1.0f, -1.0f };
+static const float PO_TEX_COORDS[PO_NUM_VERTICES * 2] = {
+        1.0f, 1.0f,
+        0.0f, 1.0f,
+        0.0f, 0.0f,
+        0.0f, 0.0f,
+        1.0f, 0.0f,
+        1.0f, 1.0f };
+
+static const char* PO_VERTEX =
+        "attribute vec4 a_Position;"
+        "attribute vec2 a_TexCoord;"
+        "varying vec2 v_TexCoord;"
+        "void main() {"
+        "  v_TexCoord = a_TexCoord;"
+        "  gl_Position = a_Position;"
+        "}";
+
+static const char* PO_FRAGMENT =
+        "precision mediump float;"
+        "uniform sampler2D u_Texture;"
+        "varying vec2 v_TexCoord;"
+        "void main() {"
+        "  gl_FragColor = texture2D(u_Texture, v_TexCoord);"
+        "}";
+
+PixelOutputRenderer::PixelOutputRenderer(ANativeWindow* window, bool offscreen, int workload) :
+        Renderer(window, offscreen, workload) {
+}
+
+bool PixelOutputRenderer::setUp() {
+    SCOPED_TRACE();
+    if (!Renderer::setUp()) {
+        return false;
+    }
+
+    // Create program.
+    mProgramId = GLUtils::createProgram(&PO_VERTEX, &PO_FRAGMENT);
+    if (mProgramId == 0) {
+        return false;
+    }
+    // Bind attributes.
+    mTextureUniformHandle = glGetUniformLocation(mProgramId, "u_Texture");
+    mPositionHandle = glGetAttribLocation(mProgramId, "a_Position");
+    mTexCoordHandle = glGetAttribLocation(mProgramId, "a_TexCoord");
+
+    // Setup texture.
+    mTextureId = GLUtils::genTexture(mWidth, mHeight, GLUtils::RANDOM_FILL);
+    if (mTextureId == 0) {
+        return false;
+    }
+    return true;
+}
+
+bool PixelOutputRenderer::tearDown() {
+    SCOPED_TRACE();
+    if (mTextureId != 0) {
+        glDeleteTextures(1, &mTextureId);
+        mTextureId = 0;
+    }
+    if (!Renderer::tearDown()) {
+        return false;
+    }
+    return true;
+}
+
+void PixelOutputRenderer::drawWorkload() {
+    SCOPED_TRACE();
+    glUseProgram(mProgramId);
+    // Set the background clear color to black.
+    glClearColor(0.0f, 0.0f, 0.0f, 0.0f);
+    glClear(GL_DEPTH_BUFFER_BIT | GL_COLOR_BUFFER_BIT);
+
+    // No culling of back faces
+    glDisable(GL_CULL_FACE);
+
+    // No depth testing
+    glDisable(GL_DEPTH_TEST);
+
+    // Enable blending
+    glEnable(GL_BLEND);
+    glBlendFunc(GL_ONE, GL_ONE);
+
+    glActiveTexture(GL_TEXTURE0);
+    // Bind the texture to this unit.
+    glBindTexture(GL_TEXTURE_2D, mTextureId);
+    // Tell the texture uniform sampler to use this texture in the shader by binding to texture
+    // unit 0.
+    glUniform1i(mTextureUniformHandle, 0);
+
+    glEnableVertexAttribArray(mPositionHandle);
+    glEnableVertexAttribArray(mTexCoordHandle);
+    glVertexAttribPointer(mPositionHandle, 3, GL_FLOAT, false, 0, PO_VERTICES);
+    glVertexAttribPointer(mTexCoordHandle, 2, GL_FLOAT, false, 0, PO_TEX_COORDS);
+
+    for (int i = 0; i < mWorkload; i++) {
+        glDrawArrays(GL_TRIANGLES, 0, PO_NUM_VERTICES);
+    }
+}
diff --git a/suite/cts/deviceTests/opengl/jni/primitive/pixeloutput/PixelOutputRenderer.h b/suite/cts/deviceTests/opengl/jni/primitive/pixeloutput/PixelOutputRenderer.h
new file mode 100644
index 0000000..e6b5692
--- /dev/null
+++ b/suite/cts/deviceTests/opengl/jni/primitive/pixeloutput/PixelOutputRenderer.h
@@ -0,0 +1,33 @@
+/*
+ * Copyright (C) 2013 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.
+ */
+#ifndef PIXELOUTPUTRENDERER_H
+#define PIXELOUTPUTRENDERER_H
+
+#include <graphics/Renderer.h>
+
+class PixelOutputRenderer: public Renderer {
+public:
+    PixelOutputRenderer(ANativeWindow* window, bool offscreen, int workload);
+    virtual ~PixelOutputRenderer() {};
+    bool setUp();
+    bool tearDown();
+    void drawWorkload();
+private:
+    GLuint mTextureId;
+    GLuint mTextureUniformHandle;
+    GLuint mPositionHandle;
+    GLuint mTexCoordHandle;
+};
+
+#endif
diff --git a/suite/cts/deviceTests/opengl/jni/primitive/shaderperf/ShaderPerfRenderer.cpp b/suite/cts/deviceTests/opengl/jni/primitive/shaderperf/ShaderPerfRenderer.cpp
new file mode 100644
index 0000000..1cbc839
--- /dev/null
+++ b/suite/cts/deviceTests/opengl/jni/primitive/shaderperf/ShaderPerfRenderer.cpp
@@ -0,0 +1,169 @@
+/*
+ * Copyright (C) 2013 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.
+ */
+#include "ShaderPerfRenderer.h"
+#include <graphics/GLUtils.h>
+
+#include <math.h>
+
+#include <Trace.h>
+
+static const float GOLDEN_RATIO = (1.0f + sqrt(5.0f)) / 2.0f;
+
+static const int SP_NUM_VERTICES = 6;
+
+static const float SP_VERTICES[SP_NUM_VERTICES * 3] = {
+        1.0f, 1.0f, -1.0f,
+        -1.0f, 1.0f, -1.0f,
+        -1.0f, -1.0f, -1.0f,
+        -1.0f, -1.0f, -1.0f,
+        1.0f, -1.0f, -1.0f,
+        1.0f, 1.0f, -1.0f };
+
+static const float SP_TEX_COORDS[SP_NUM_VERTICES * 2] = {
+        1.0f, 1.0f,
+        0.0f, 1.0f,
+        0.0f, 0.0f,
+        0.0f, 0.0f,
+        1.0f, 0.0f,
+        1.0f, 1.0f };
+
+static const char* SP_VERTEX =
+        "attribute vec4 a_Position;"
+        "attribute vec2 a_TexCoord;"
+        "varying vec2 v_TexCoord;"
+        "void main() {"
+        "  v_TexCoord = a_TexCoord;"
+        "  gl_Position = a_Position;"
+        "}";
+
+static const char* SP_FRAGMENT_1 =
+        "precision mediump float;"
+        "uniform vec2 u_Seed;"
+        "uniform sampler2D u_Texture;"
+        "varying vec2 v_TexCoord;"
+        "void main() {"
+        "  int count = ";
+
+//Add workload here
+
+static const char* SP_FRAGMENT_2 =
+        " * 4;"//workload * 4 (4 is a tweaking number, bigger = more work)
+        "  vec2 z;"
+        "  z.x = 3.0 * (v_TexCoord.x - 0.5);"
+        "  z.y = 2.0 * (v_TexCoord.y - 0.5);"
+        "  float u = 0.0;"
+        "  for (int i = 0; i < count; i++) {"
+        "    float x = (z.x * z.x - z.y * z.y) + u_Seed.x;"
+        "    float y = (z.y * z.x + z.x * z.y) + u_Seed.y;"
+        "    if (((x * x + y * y) > 4.0) && (u == 0.0)) {"
+        "      u = float(i) / float(count);"
+        "    }"
+        "    z.x = x;"
+        "    z.y = y;"
+        "  }"
+        "  gl_FragColor = texture2D(u_Texture, vec2(u, 0.0));"
+        "}";
+
+// Copies the source array from 0 up to and including the '\0' character to the
+// destination array starting from the given start position. Unlike strcpy, this
+// returns the number of characters which were copied.
+static int charCopy(const char* source, char* dest, int destStart) {
+    int srcAddr = 0;
+    int destAddr = destStart;
+    char current;
+    do {
+        current = source[srcAddr];
+        dest[destAddr] = current;
+        srcAddr++;
+        destAddr++;
+    } while (current != '\0');
+    return destAddr - destStart;
+}
+
+ShaderPerfRenderer::ShaderPerfRenderer(ANativeWindow* window, bool offscreen, int workload) :
+        Renderer(window, offscreen, workload) {
+}
+
+bool ShaderPerfRenderer::setUp() {
+    SCOPED_TRACE();
+    if (!Renderer::setUp()) {
+        return false;
+    }
+
+    const int MAX_FRAGMENT_SHADER_SIZE = 1000;
+    char* spFragment = new char[MAX_FRAGMENT_SHADER_SIZE];
+    // Add the first part.
+    int index = charCopy(SP_FRAGMENT_1, spFragment, 0);
+    // Add the count, overwriting the '\0' added by charCopy.
+    spFragment[index - 1] = (char) (((int) '0') + mWorkload);
+    // Add the second part.
+    index += charCopy(SP_FRAGMENT_2, spFragment, index);
+    // Create program.
+    mProgramId = GLUtils::createProgram(&SP_VERTEX, const_cast<const char**>(&spFragment));
+    delete[] spFragment;
+    if (mProgramId == 0) {
+        return false;
+    }
+    // Bind attributes.
+    mTextureUniformHandle = glGetUniformLocation(mProgramId, "u_Texture");
+    mSeedUniformHandle = glGetUniformLocation(mProgramId, "u_Seed");
+    mPositionHandle = glGetAttribLocation(mProgramId, "a_Position");
+    mTexCoordHandle = glGetAttribLocation(mProgramId, "a_TexCoord");
+
+    const int SIZE = 256;
+    uint32_t* m = new uint32_t[SIZE];
+    if (m != NULL) {
+        uint32_t* d = m;
+        for (int i = 0; i < SIZE; i++) {
+            *d = 0xff000000 | ((i & 0xff) << 16);
+            d++;
+        }
+        glGenTextures(1, &mTextureId);
+        glBindTexture(GL_TEXTURE_2D, mTextureId);
+        glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, SIZE, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, m);
+        glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
+        glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
+        glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
+    }
+    delete[] m;
+
+    return true;
+}
+
+void ShaderPerfRenderer::drawWorkload() {
+    SCOPED_TRACE();
+    glUseProgram(mProgramId);
+    // Set the background clear color.
+    glClearColor(0.0f, 0.0f, 0.0f, 0.0f);
+    glClear(GL_DEPTH_BUFFER_BIT | GL_COLOR_BUFFER_BIT);
+
+    // No culling of back faces
+    glDisable(GL_CULL_FACE);
+
+    // Bind the texture.
+    glActiveTexture(GL_TEXTURE0);
+    glBindTexture(GL_TEXTURE_2D, mTextureId);
+    glUniform1i(mTextureUniformHandle, 0);
+
+    // Bind the seed.
+    glUniform2f(mSeedUniformHandle, GOLDEN_RATIO - 2.0f, GOLDEN_RATIO - 1.0f);
+
+    // Bind the vertices.
+    glEnableVertexAttribArray(mPositionHandle);
+    glEnableVertexAttribArray(mTexCoordHandle);
+    glVertexAttribPointer(mPositionHandle, 3, GL_FLOAT, false, 0, SP_VERTICES);
+    glVertexAttribPointer(mTexCoordHandle, 2, GL_FLOAT, false, 0, SP_TEX_COORDS);
+
+    glDrawArrays(GL_TRIANGLES, 0, SP_NUM_VERTICES);
+}
diff --git a/suite/cts/deviceTests/opengl/jni/primitive/shaderperf/ShaderPerfRenderer.h b/suite/cts/deviceTests/opengl/jni/primitive/shaderperf/ShaderPerfRenderer.h
new file mode 100644
index 0000000..52fac43
--- /dev/null
+++ b/suite/cts/deviceTests/opengl/jni/primitive/shaderperf/ShaderPerfRenderer.h
@@ -0,0 +1,33 @@
+/*
+ * Copyright (C) 2013 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.
+ */
+#ifndef SHADERPERFRENDERER_H
+#define SHADERPERFRENDERER_H
+
+#include <graphics/Renderer.h>
+
+class ShaderPerfRenderer: public Renderer {
+public:
+    ShaderPerfRenderer(ANativeWindow* window, bool offscreen, int workload);
+    virtual ~ShaderPerfRenderer() {};
+    bool setUp();
+    void drawWorkload();
+private:
+    GLuint mTextureId;
+    GLuint mTextureUniformHandle;
+    GLuint mPositionHandle;
+    GLuint mTexCoordHandle;
+    GLuint mSeedUniformHandle;
+};
+
+#endif
diff --git a/suite/cts/deviceTests/opengl/jni/reference/GLReference.cpp b/suite/cts/deviceTests/opengl/jni/reference/GLReference.cpp
new file mode 100644
index 0000000..1857848
--- /dev/null
+++ b/suite/cts/deviceTests/opengl/jni/reference/GLReference.cpp
@@ -0,0 +1,60 @@
+/*
+ * Copyright (C) 2013 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.
+ */
+#include <jni.h>
+
+#include <android/native_window.h>
+#include <android/native_window_jni.h>
+
+#include <graphics/GLUtils.h>
+#include <graphics/Renderer.h>
+
+#include "ReferenceRenderer.h"
+
+extern "C" JNIEXPORT jboolean JNICALL
+Java_com_android_cts_opengl_reference_GLGameActivity_startBenchmark(
+        JNIEnv* env, jclass clazz, jobject assetManager, jobject surface, jint numFrames,
+        jdoubleArray setUpTimes, jdoubleArray updateTimes, jdoubleArray renderTimes) {
+
+    GLUtils::setEnvAndAssetManager(env, assetManager);
+
+    if (numFrames > (ReferenceRenderer::FRAMES_PER_SCENE * ReferenceRenderer::NUM_SCENES)) {
+        return false;
+    }
+
+    ReferenceRenderer* renderer = new ReferenceRenderer(ANativeWindow_fromSurface(env, surface));
+
+    bool success = renderer->setUp();
+    env->SetDoubleArrayRegion(
+            setUpTimes, 0, ReferenceRenderer::NUM_SETUP_TIMES, renderer->mSetUpTimes);
+
+    double updates[numFrames];
+    double renders[numFrames];
+    for (int i = 0; i < numFrames && success; i++) {
+        double t0 = GLUtils::currentTimeMillis();
+        success = renderer->update(i);
+        double t1 = GLUtils::currentTimeMillis();
+        success = success && renderer->draw();
+        double t2 = GLUtils::currentTimeMillis();
+        updates[i] = t1 - t0;
+        renders[i] = t2 - t1;
+    }
+
+    env->SetDoubleArrayRegion(updateTimes, 0, numFrames, updates);
+    env->SetDoubleArrayRegion(renderTimes, 0, numFrames, renders);
+
+    success = renderer->tearDown() && success;
+    delete renderer;
+    renderer = NULL;
+    return success;
+}
diff --git a/suite/cts/deviceTests/opengl/jni/reference/ReferenceRenderer.cpp b/suite/cts/deviceTests/opengl/jni/reference/ReferenceRenderer.cpp
new file mode 100644
index 0000000..8f7703e
--- /dev/null
+++ b/suite/cts/deviceTests/opengl/jni/reference/ReferenceRenderer.cpp
@@ -0,0 +1,100 @@
+/*
+ * Copyright (C) 2013 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.
+ */
+#include "ReferenceRenderer.h"
+
+#include "scene/flocking/FlockingScene.h"
+#include "scene/glowing/GlowingScene.h"
+
+#include <graphics/GLUtils.h>
+#include <graphics/ProgramNode.h>
+
+#include <Trace.h>
+
+ReferenceRenderer::ReferenceRenderer(ANativeWindow* window) :
+        Renderer(window, false, 0) {
+}
+
+bool ReferenceRenderer::setUp() {
+    SCOPED_TRACE();
+    // Reset the times.
+    for (int i = 0; i < NUM_SETUP_TIMES; i++) {
+        mSetUpTimes[i] = 0;
+    }
+    // Set up OpenGLES.
+    double start = GLUtils::currentTimeMillis();
+    if (!Renderer::setUp()) {
+        return false;
+    }
+    mSetUpTimes[0] = GLUtils::currentTimeMillis() - start;
+
+    // Create the scenes.
+    mScenes[0] = new FlockingScene(mWidth, mHeight);
+    mScenes[1] = new GlowingScene(mWidth, mHeight);
+    // TODO add more scenes to do a comprehensive test.
+
+    // Set up the scenes.
+    double times[NUM_SETUP_TIMES];
+    for (int i = 0; i < NUM_SCENES; i++) {
+        times[0] = GLUtils::currentTimeMillis();
+        mScenes[i]->setUpContext();
+        times[1] = GLUtils::currentTimeMillis();
+        mScenes[i]->setUpTextures();
+        times[2] = GLUtils::currentTimeMillis();
+        mScenes[i]->setUpMeshes();
+        times[3] = GLUtils::currentTimeMillis();
+
+        for (int i = 1; i < NUM_SETUP_TIMES; i++) {
+            // Add on the set up times.
+            mSetUpTimes[i] += times[i] - times[i - 1];
+        }
+    }
+    return true;
+}
+
+bool ReferenceRenderer::tearDown() {
+    SCOPED_TRACE();
+    for (int i = 0; i < NUM_SCENES; i++) {
+        mScenes[i]->tearDown();
+        delete mScenes[i];
+    }
+    mCurrentScene = NULL;
+    if (!Renderer::tearDown()) {
+        return false;
+    }
+    return true;
+}
+
+bool ReferenceRenderer::update(int frame) {
+    SCOPED_TRACE();
+    int sceneId = frame / ReferenceRenderer::FRAMES_PER_SCENE;
+    int localFrame = frame % ReferenceRenderer::FRAMES_PER_SCENE;
+    mCurrentScene = mScenes[sceneId];
+    mCurrentScene->update(localFrame);
+    return true;
+}
+
+void ReferenceRenderer::drawWorkload() {
+    SCOPED_TRACE();
+    // Set the background clear color to black.
+    glClearColor(0.0f, 0.0f, 0.0f, 0.0f);
+    // Use culling to remove back faces.
+    glEnable (GL_CULL_FACE);
+    // Use depth testing.
+    glEnable (GL_DEPTH_TEST);
+
+    glClear(GL_DEPTH_BUFFER_BIT | GL_COLOR_BUFFER_BIT);
+    if (!mCurrentScene->draw()) {
+        ALOGE("Error when rendering scene");
+    }
+}
diff --git a/suite/cts/deviceTests/opengl/jni/reference/ReferenceRenderer.h b/suite/cts/deviceTests/opengl/jni/reference/ReferenceRenderer.h
new file mode 100644
index 0000000..d10297a
--- /dev/null
+++ b/suite/cts/deviceTests/opengl/jni/reference/ReferenceRenderer.h
@@ -0,0 +1,40 @@
+/*
+ * Copyright (C) 2013 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.
+ */
+#ifndef REFERENCERENDERER_H
+#define REFERENCERENDERER_H
+
+#include "scene/Scene.h"
+
+#include <graphics/Mesh.h>
+#include <graphics/Renderer.h>
+
+class ReferenceRenderer: public Renderer {
+public:
+    ReferenceRenderer(ANativeWindow* window);
+    virtual ~ReferenceRenderer() {};
+    bool setUp();
+    bool tearDown();
+    bool update(int frame);
+    void drawWorkload();
+    double mSetUpTimes[4];
+    static const int FRAMES_PER_SCENE = 500;
+    static const int NUM_SCENES = 2;
+    static const int NUM_SETUP_TIMES = 4;
+private:
+    Scene* mScenes[NUM_SCENES];
+    Scene* mCurrentScene;
+
+};
+
+#endif
diff --git a/suite/cts/deviceTests/opengl/jni/reference/scene/Scene.cpp b/suite/cts/deviceTests/opengl/jni/reference/scene/Scene.cpp
new file mode 100644
index 0000000..abf3a4e
--- /dev/null
+++ b/suite/cts/deviceTests/opengl/jni/reference/scene/Scene.cpp
@@ -0,0 +1,78 @@
+/*
+ * Copyright (C) 2013 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.
+ */
+#include "Scene.h"
+
+#include <graphics/GLUtils.h>
+#include <graphics/ProgramNode.h>
+
+#include <Trace.h>
+
+Scene::Scene(int width, int height) :
+        mWidth(width), mHeight(height) {
+}
+
+bool Scene::setUpContext() {
+    SCOPED_TRACE();
+    if (!setUpPrograms()) {
+        return false;
+    }
+    mModelMatrix = setUpModelMatrix();
+    if (mModelMatrix == NULL) {
+        return false;
+    }
+    mViewMatrix = setUpViewMatrix();
+    if (mViewMatrix == NULL) {
+        return false;
+    }
+    mProjectionMatrix = setUpProjectionMatrix(mWidth, mHeight);
+    if (mProjectionMatrix == NULL) {
+        return false;
+    }
+    return true;
+}
+
+bool Scene::tearDown() {
+    SCOPED_TRACE();
+    for (size_t i = 0; i < mTextureIds.size(); i++) {
+        glDeleteTextures(1, &(mTextureIds[i]));
+    }
+    for (size_t i = 0; i < mMeshes.size(); i++) {
+        delete mMeshes[i];
+    }
+    for (size_t i = 0; i < mSceneGraphs.size(); i++) {
+        delete mSceneGraphs[i];
+    }
+    delete mModelMatrix;
+    mModelMatrix = NULL;
+    delete mViewMatrix;
+    mViewMatrix = NULL;
+    delete mProjectionMatrix;
+    mProjectionMatrix = NULL;
+    return true;
+}
+
+bool Scene::update(int frame) {
+    SCOPED_TRACE();
+    // Delete the old scene graphs.
+    for (size_t i = 0; i < mSceneGraphs.size(); i++) {
+        delete mSceneGraphs[i];
+    }
+    mSceneGraphs.clear();
+    return updateSceneGraphs(frame);
+}
+
+void Scene::drawSceneGraph(int index) {
+    mModelMatrix->identity();
+    mSceneGraphs[index]->drawProgram(*mModelMatrix, *mViewMatrix, *mProjectionMatrix);
+}
diff --git a/suite/cts/deviceTests/opengl/jni/reference/scene/Scene.h b/suite/cts/deviceTests/opengl/jni/reference/scene/Scene.h
new file mode 100644
index 0000000..06178b9
--- /dev/null
+++ b/suite/cts/deviceTests/opengl/jni/reference/scene/Scene.h
@@ -0,0 +1,51 @@
+/*
+ * Copyright (C) 2013 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.
+ */
+#ifndef SCENE_H
+#define SCENE_H
+
+#include <graphics/Matrix.h>
+#include <graphics/Mesh.h>
+#include <graphics/Program.h>
+#include <graphics/ProgramNode.h>
+
+#include <utils/Vector.h>
+
+class Scene {
+public:
+    Scene(int width, int height);
+    virtual ~Scene() {};
+    virtual bool setUpContext();
+    virtual bool setUpTextures() = 0;
+    virtual bool setUpMeshes() = 0;
+    virtual bool tearDown();
+    virtual bool update(int frame);
+    virtual bool draw() = 0;
+    void drawSceneGraph(int index);
+protected:
+    virtual bool setUpPrograms() = 0;
+    virtual Matrix* setUpModelMatrix() = 0;
+    virtual Matrix* setUpViewMatrix() = 0;
+    virtual Matrix* setUpProjectionMatrix(float width, float height) = 0;
+    virtual bool updateSceneGraphs(int frame) = 0;
+    int mWidth;
+    int mHeight;
+    android::Vector<Mesh*> mMeshes;
+    android::Vector<GLuint> mTextureIds;
+    android::Vector<ProgramNode*> mSceneGraphs;
+private:
+    Matrix* mModelMatrix;
+    Matrix* mViewMatrix;
+    Matrix* mProjectionMatrix;
+};
+#endif
diff --git a/suite/cts/deviceTests/opengl/jni/reference/scene/flocking/Boid.cpp b/suite/cts/deviceTests/opengl/jni/reference/scene/flocking/Boid.cpp
new file mode 100644
index 0000000..74eef81
--- /dev/null
+++ b/suite/cts/deviceTests/opengl/jni/reference/scene/flocking/Boid.cpp
@@ -0,0 +1,96 @@
+/*
+ * Copyright (C) 2013 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.
+ */
+#include "Boid.h"
+
+Boid::Boid(float x, float y) :
+        mPosition(x, y) {
+}
+
+void Boid::flock(const Boid* boids[], int numBoids, int index, float limitX, float limitY) {
+    // Reset the acceleration.
+    mAcceleration.mX = 0;
+    mAcceleration.mY = 0;
+    Vector2D separation;
+    int separationCount = 0;
+    Vector2D alignment;
+    int alignmentCount = 0;
+    Vector2D cohesion;
+    int cohesionCount = 0;
+    for (int i = 0; i < numBoids; i++) {
+        if (i != index) {
+            const Boid* b = boids[i];
+            float dist = mPosition.distance(b->mPosition);
+            if (dist != 0) {
+                // Separation.
+                if (dist < DESIRED_BOID_DIST) {
+                    Vector2D tmp = mPosition.copy();
+                    tmp.sub(b->mPosition);
+                    tmp.normalize();
+                    tmp.scale(1.0f / dist);
+                    separation.add(tmp);
+                    separationCount++;
+                }
+                if (dist < NEIGHBOUR_RADIUS) {
+                    // Alignment.
+                    alignment.add(b->mVelocity);
+                    alignmentCount++;
+                    // Cohesion.
+                    cohesion.add(b->mPosition);
+                    cohesionCount++;
+                }
+            }
+        }
+    }
+
+    if (separationCount > 0) {
+        separation.scale(1.0f / separationCount);
+        separation.scale(SEPARATION_WEIGHT);
+        mAcceleration.add(separation);
+    }
+    if (alignmentCount > 0) {
+        alignment.scale(1.0f / alignmentCount);
+        alignment.limit(MAX_FORCE);
+        alignment.scale(ALIGNMENT_WEIGHT);
+        mAcceleration.add(alignment);
+    }
+    if (cohesionCount > 0) {
+        cohesion.scale(1.0f / cohesionCount);
+        cohesion.scale(COHESION_WEIGHT);
+        Vector2D desired = cohesion.copy();
+        desired.sub(mPosition);
+        float d = desired.magnitude();
+        if (d > 0) {
+            desired.normalize();
+            desired.scale(MAX_SPEED * ((d < 100.0f) ? d / 100.0f : 1));
+            desired.sub(mVelocity);
+            desired.limit(MAX_FORCE);
+            mAcceleration.add(desired);
+        }
+    }
+
+    mVelocity.add(mAcceleration);
+    mVelocity.limit(MAX_SPEED);
+    mPosition.add(mVelocity);
+    // Wrap around.
+    if (mPosition.mX < -limitX) {
+        mPosition.mX = limitX;
+    } else if (mPosition.mX > limitX) {
+        mPosition.mX = -limitX;
+    }
+    if (mPosition.mY < -limitY) {
+        mPosition.mY = limitY;
+    } else if (mPosition.mY > limitY) {
+        mPosition.mY = -limitY;
+    }
+}
diff --git a/suite/cts/deviceTests/opengl/jni/reference/scene/flocking/Boid.h b/suite/cts/deviceTests/opengl/jni/reference/scene/flocking/Boid.h
new file mode 100644
index 0000000..e50acd0
--- /dev/null
+++ b/suite/cts/deviceTests/opengl/jni/reference/scene/flocking/Boid.h
@@ -0,0 +1,39 @@
+/*
+ * Copyright (C) 2013 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.
+ */
+// An implementation of Craig Reynold's Boid Simulation.
+#ifndef BOID_H
+#define BOID_H
+
+#include <graphics/Vector2D.h>
+
+class Boid {
+public:
+    Boid(float x, float y);
+    void resetAcceleration();
+    void flock(const Boid* boids[], int numBoids, int index, float limitX, float limitY);
+    // The following floats are the parameters for the flocking algorithm, changing these
+    // modifies the boid's behaviour.
+    static const float MAX_SPEED = 2.0f;// Upper limit of boid velocity.
+    static const float MAX_FORCE = 0.05f;// Upper limit of the force used to push a boid.
+    static const float NEIGHBOUR_RADIUS = 70.0f;// Radius used to find neighbours, was 50.
+    static const float DESIRED_BOID_DIST = 35.0f;// Distance boids want to be from others, was 25.
+    // The weightings of the components.
+    static const float SEPARATION_WEIGHT = 2.0f;
+    static const float ALIGNMENT_WEIGHT = 1.0f;
+    static const float COHESION_WEIGHT = 1.0f;
+    Vector2D mPosition;
+    Vector2D mVelocity;
+    Vector2D mAcceleration;
+};
+#endif
diff --git a/suite/cts/deviceTests/opengl/jni/reference/scene/flocking/FlockingScene.cpp b/suite/cts/deviceTests/opengl/jni/reference/scene/flocking/FlockingScene.cpp
new file mode 100644
index 0000000..71e5dac
--- /dev/null
+++ b/suite/cts/deviceTests/opengl/jni/reference/scene/flocking/FlockingScene.cpp
@@ -0,0 +1,193 @@
+/*
+ * Copyright (C) 2013 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.
+ */
+#include "FlockingScene.h"
+
+#include "WaterMeshNode.h"
+
+#include <cstdlib>
+#include <cmath>
+
+#include <Trace.h>
+
+#include <graphics/PerspectiveMeshNode.h>
+#include <graphics/PerspectiveProgram.h>
+#include <graphics/GLUtils.h>
+#include <graphics/Matrix.h>
+#include <graphics/Mesh.h>
+#include <graphics/ProgramNode.h>
+#include <graphics/TransformationNode.h>
+
+FlockingScene::FlockingScene(int width, int height) :
+        Scene(width, height), mMainProgram(NULL), mWaterProgram(NULL) {
+    for (int i = 0; i < NUM_BOIDS; i++) {
+        // Generate a boid with a random position. (-50, 50)
+        float x = (rand() % 101) - 50.0f;
+        float y = (rand() % 101) - 50.0f;
+        mBoids[i] = new Boid(x, y);
+    }
+}
+
+bool FlockingScene::setUpPrograms() {
+    // Main Program
+    const char* vertex = GLUtils::openTextFile("vertex/perspective");
+    const char* fragment = GLUtils::openTextFile("fragment/perspective");
+    if (vertex == NULL || fragment == NULL) {
+        return false;
+    }
+    GLuint programId = GLUtils::createProgram(&vertex, &fragment);
+    delete[] vertex;
+    delete[] fragment;
+    if (programId == 0) {
+        return false;
+    }
+    mMainProgram = new PerspectiveProgram(programId);
+    // Water Program
+    vertex = GLUtils::openTextFile("vertex/water");
+    fragment = GLUtils::openTextFile("fragment/water");
+    if (vertex == NULL || fragment == NULL) {
+        return false;
+    }
+    programId = GLUtils::createProgram(&vertex, &fragment);
+    delete[] vertex;
+    delete[] fragment;
+    if (programId == 0) {
+        return false;
+    }
+    mWaterProgram = new PerspectiveProgram(programId);
+    return true;
+}
+
+Matrix* FlockingScene::setUpModelMatrix() {
+    return new Matrix();
+}
+
+Matrix* FlockingScene::setUpViewMatrix() {
+    // Position the eye in front of the origin.
+    float eyeX = 0.0f;
+    float eyeY = 0.0f;
+    float eyeZ = 10.0f;
+
+    // We are looking at the origin
+    float centerX = 0.0f;
+    float centerY = 0.0f;
+    float centerZ = 0.0f;
+
+    // Set our up vector.
+    float upX = 0.0f;
+    float upY = 1.0f;
+    float upZ = 0.0f;
+
+    // Set the view matrix.
+    return Matrix::newLookAt(eyeX, eyeY, eyeZ, centerX, centerY, centerZ, upX, upY, upZ);
+}
+
+Matrix* FlockingScene::setUpProjectionMatrix(float width, float height) {
+    // Create a new perspective projection matrix. The height will stay the same
+    // while the width will vary as per aspect ratio.
+    mDisplayRatio = width / height;
+    // Set board dimensions
+    mBoardHeight = 1000.0f;
+    mBoardWidth = mDisplayRatio * mBoardHeight;
+    float left = -mDisplayRatio;
+    float right = mDisplayRatio;
+    float bottom = -1.0f;
+    float top = 1.0f;
+    float near = 8.0f;
+    float far = 12.0f;
+
+    return Matrix::newFrustum(left, right, bottom, top, near, far);
+}
+
+bool FlockingScene::setUpTextures() {
+    SCOPED_TRACE();
+    mTextureIds.add(GLUtils::loadTexture("texture/fish_dark.png"));
+    mTextureIds.add(GLUtils::loadTexture("texture/background.png"));
+    mTextureIds.add(GLUtils::loadTexture("texture/water1.png"));
+    mTextureIds.add(GLUtils::loadTexture("texture/water2.png"));
+    return true;
+}
+
+bool FlockingScene::setUpMeshes() {
+    SCOPED_TRACE();
+    mMeshes.add(GLUtils::loadMesh("mesh/fish.cob"));
+    mMeshes.add(GLUtils::loadMesh("mesh/plane.cob"));
+    return true;
+}
+
+bool FlockingScene::tearDown() {
+    SCOPED_TRACE();
+    for (int i = 0; i < NUM_BOIDS; i++) {
+        delete mBoids[i];
+    }
+    delete mMainProgram;
+    delete mWaterProgram;
+    return Scene::tearDown();
+}
+
+bool FlockingScene::updateSceneGraphs(int frame) {
+    const float MAIN_SCALE = 1.25f; // Scale up as the camera is far away.
+    const float LIMIT_X = mBoardWidth / 2.0f;
+    const float LIMIT_Y = mBoardHeight / 2.0f;
+
+    ProgramNode* mainSceneGraph = new ProgramNode(*mMainProgram);
+    mSceneGraphs.add(mainSceneGraph);
+    // Bottom
+    Matrix* transformMatrix = Matrix::newScale(MAIN_SCALE * mDisplayRatio, MAIN_SCALE, 0.0f);
+    TransformationNode* transformNode = new TransformationNode(transformMatrix);
+    mainSceneGraph->addChild(transformNode);
+    MeshNode* meshNode = new PerspectiveMeshNode(mMeshes[1], mTextureIds[1]);
+    transformNode->addChild(meshNode);
+    // Boids
+    const float MARGIN = 30.0f; // So the fish dont disappear and appear at the edges.
+    for (int i = 0; i < NUM_BOIDS; i++) {
+        Boid* b = mBoids[i];
+        b->flock((const Boid**) &mBoids, NUM_BOIDS, i, LIMIT_X + MARGIN, LIMIT_Y + MARGIN);
+        Vector2D* pos = &(b->mPosition);
+        Vector2D* vel = &(b->mVelocity);
+
+        // Normalize to (-1,1)
+        float x = pos->mX / (LIMIT_X * BOID_SCALE) * mDisplayRatio;
+        float y = pos->mY / (LIMIT_Y * BOID_SCALE);
+
+        const float SCALE = BOID_SCALE * MAIN_SCALE;
+        transformMatrix = Matrix::newScale(SCALE, SCALE, SCALE);
+        transformMatrix->translate(x, y, 1.0f);
+        transformMatrix->rotate(atan2(vel->mY, vel->mX) + M_PI, 0, 0, 1);
+        transformNode = new TransformationNode(transformMatrix);
+        mainSceneGraph->addChild(transformNode);
+        meshNode = new PerspectiveMeshNode(mMeshes[0], mTextureIds[0]);
+        transformNode->addChild(meshNode);
+    }
+    ProgramNode* waterSceneGraph = new ProgramNode(*mWaterProgram);
+    mSceneGraphs.add(waterSceneGraph);
+    // Top
+    transformMatrix = Matrix::newScale(MAIN_SCALE * mDisplayRatio, MAIN_SCALE, 1.0f);
+    transformMatrix->translate(0, 0, 0.1f);
+    transformNode = new TransformationNode(transformMatrix);
+    waterSceneGraph->addChild(transformNode);
+    meshNode = new WaterMeshNode(mMeshes[1], frame, mTextureIds[2], mTextureIds[3]);
+    transformNode->addChild(meshNode);
+    return true;
+}
+
+bool FlockingScene::draw() {
+    SCOPED_TRACE();
+    drawSceneGraph(0); // Draw fish and pond bottom
+    // Use blending.
+    glEnable (GL_BLEND);
+    glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
+    drawSceneGraph(1); // Draw water
+    glDisable(GL_BLEND);
+    return true;
+}
diff --git a/suite/cts/deviceTests/opengl/jni/reference/scene/flocking/FlockingScene.h b/suite/cts/deviceTests/opengl/jni/reference/scene/flocking/FlockingScene.h
new file mode 100644
index 0000000..97bd4cc
--- /dev/null
+++ b/suite/cts/deviceTests/opengl/jni/reference/scene/flocking/FlockingScene.h
@@ -0,0 +1,46 @@
+/*
+ * Copyright (C) 2013 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.
+ */
+#ifndef FLOCKINGSCENE_H
+#define FLOCKINGSCENE_H
+
+#include <graphics/Program.h>
+
+#include "../Scene.h"
+#include "Boid.h"
+
+class FlockingScene : public Scene {
+public:
+    FlockingScene(int width, int height);
+    virtual ~FlockingScene() {};
+    bool setUpTextures();
+    bool setUpMeshes();
+    bool tearDown();
+    bool draw();
+    static const int NUM_BOIDS = 100;
+protected:
+    bool setUpPrograms();
+    Matrix* setUpModelMatrix();
+    Matrix* setUpViewMatrix();
+    Matrix* setUpProjectionMatrix(float width, float height);
+    bool updateSceneGraphs(int frame);
+private:
+    Boid* mBoids[NUM_BOIDS];
+    float mDisplayRatio;
+    float mBoardWidth;
+    float mBoardHeight;
+    Program* mMainProgram;
+    Program* mWaterProgram;
+    static const float BOID_SCALE = 1.0f / 50.0f;
+};
+#endif
diff --git a/suite/cts/deviceTests/opengl/jni/reference/scene/flocking/WaterMeshNode.cpp b/suite/cts/deviceTests/opengl/jni/reference/scene/flocking/WaterMeshNode.cpp
new file mode 100644
index 0000000..f000d58
--- /dev/null
+++ b/suite/cts/deviceTests/opengl/jni/reference/scene/flocking/WaterMeshNode.cpp
@@ -0,0 +1,69 @@
+/*
+ * Copyright (C) 2013 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.
+ */
+
+#include "WaterMeshNode.h"
+
+#include <graphics/PerspectiveProgram.h>
+
+WaterMeshNode::WaterMeshNode(const Mesh* mesh, int time, GLuint textureId1, GLuint textureId2) :
+        MeshNode(mesh), mTime(time), mTextureId1(textureId1), mTextureId2(textureId2) {
+}
+
+void WaterMeshNode::before(Program& program, Matrix& model, Matrix& view, Matrix& projection) {
+    PerspectiveProgram& prog = (PerspectiveProgram&) program;
+
+    int textureUniformHandle1 = glGetUniformLocation(prog.mProgramId, "u_Texture1");
+    int textureUniformHandle2 = glGetUniformLocation(prog.mProgramId, "u_Texture2");
+    int timeUniformHandle = glGetUniformLocation(prog.mProgramId, "u_Time");
+    int positionHandle = glGetAttribLocation(prog.mProgramId, "a_Position");
+    int texCoordHandle = glGetAttribLocation(prog.mProgramId, "a_TexCoordinate");
+
+    glActiveTexture (GL_TEXTURE0);
+    glBindTexture(GL_TEXTURE_2D, mTextureId1);
+    glUniform1i(textureUniformHandle1, 0);
+
+    glActiveTexture (GL_TEXTURE1);
+    glBindTexture(GL_TEXTURE_2D, mTextureId2);
+    glUniform1i(textureUniformHandle2, 1);
+
+    glUniform1i(timeUniformHandle, mTime);
+
+    glEnableVertexAttribArray(positionHandle);
+    glVertexAttribPointer(positionHandle, 3, GL_FLOAT, false, 0, mMesh->mVertices);
+    glEnableVertexAttribArray(texCoordHandle);
+    glVertexAttribPointer(texCoordHandle, 2, GL_FLOAT, false, 0, mMesh->mTexCoords);
+
+    // This multiplies the view matrix by the model matrix, and stores the result in the MVP
+    // matrix (which currently contains model * view).
+    prog.mMVMatrix.multiply(view, model);
+
+    // Pass in the modelview matrix.
+    glUniformMatrix4fv(prog.mMVMatrixHandle, 1, false, prog.mMVMatrix.mData);
+
+    // This multiplies the modelview matrix by the projection matrix, and stores the result in
+    // the MVP matrix (which now contains model * view * projection).
+    prog.mMVPMatrix.multiply(projection, prog.mMVMatrix);
+
+    // Pass in the combined matrix.
+    glUniformMatrix4fv(prog.mMVPMatrixHandle, 1, false, prog.mMVPMatrix.mData);
+
+    // Pass in the light position in eye space.
+    glUniform3f(prog.mLightPosHandle, prog.mLightPosInEyeSpace[0], prog.mLightPosInEyeSpace[1],
+            prog.mLightPosInEyeSpace[2]);
+
+    glDrawArrays(GL_TRIANGLES, 0, mMesh->mNumVertices);
+}
+
+void WaterMeshNode::after(Program& program, Matrix& model, Matrix& view, Matrix& projection) {
+}
diff --git a/suite/cts/deviceTests/opengl/jni/reference/scene/flocking/WaterMeshNode.h b/suite/cts/deviceTests/opengl/jni/reference/scene/flocking/WaterMeshNode.h
new file mode 100644
index 0000000..81bfe8f
--- /dev/null
+++ b/suite/cts/deviceTests/opengl/jni/reference/scene/flocking/WaterMeshNode.h
@@ -0,0 +1,35 @@
+/*
+ * Copyright (C) 2013 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.
+ */
+
+#ifndef WATERMESHNODE_H
+#define WATERMESHNODE_H
+
+#include <graphics/Matrix.h>
+#include <graphics/Mesh.h>
+#include <graphics/MeshNode.h>
+#include <graphics/Program.h>
+
+class WaterMeshNode: public MeshNode {
+public:
+    WaterMeshNode(const Mesh* mesh, int time, GLuint textureId1, GLuint textureId2);
+    virtual ~WaterMeshNode() {};
+protected:
+    virtual void before(Program& program, Matrix& model, Matrix& view, Matrix& projection);
+    virtual void after(Program& program, Matrix& model, Matrix& view, Matrix& projection);
+    const int mTime;
+    const GLuint mTextureId1;
+    const GLuint mTextureId2;
+};
+
+#endif
diff --git a/suite/cts/deviceTests/opengl/jni/reference/scene/glowing/BlurMeshNode.cpp b/suite/cts/deviceTests/opengl/jni/reference/scene/glowing/BlurMeshNode.cpp
new file mode 100644
index 0000000..6c2ad64
--- /dev/null
+++ b/suite/cts/deviceTests/opengl/jni/reference/scene/glowing/BlurMeshNode.cpp
@@ -0,0 +1,56 @@
+/*
+ * Copyright (C) 2013 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.
+ */
+
+#include "BlurMeshNode.h"
+
+BlurMeshNode::BlurMeshNode(const Mesh* mesh, GLuint fboTexId, GLuint tmpTexId1, GLuint tmpTexId2,
+        float width, float height) :
+        MeshNode(mesh), mFboTexId(fboTexId), mTmpTexId1(tmpTexId1), mTmpTexId2(tmpTexId2),
+        mWidth(width), mHeight(height) {
+}
+
+void BlurMeshNode::before(Program& program, Matrix& model, Matrix& view, Matrix& projection) {
+    int textureUniformHandle = glGetUniformLocation(program.mProgramId, "u_Texture");
+    int scaleUniformHandle = glGetUniformLocation(program.mProgramId, "u_Scale");
+    int positionHandle = glGetAttribLocation(program.mProgramId, "a_Position");
+    int texCoordHandle = glGetAttribLocation(program.mProgramId, "a_TexCoordinate");
+
+    glEnableVertexAttribArray(positionHandle);
+    glVertexAttribPointer(positionHandle, 3, GL_FLOAT, false, 0, mMesh->mVertices);
+    glEnableVertexAttribArray(texCoordHandle);
+    glVertexAttribPointer(texCoordHandle, 2, GL_FLOAT, false, 0, mMesh->mTexCoords);
+
+    // Blur X
+    glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, mTmpTexId1, 0);
+    glActiveTexture (GL_TEXTURE0);
+    glBindTexture(GL_TEXTURE_2D, mFboTexId);
+    glUniform1i(textureUniformHandle, 0);
+
+    glUniform2f(scaleUniformHandle, 1.0f / mWidth, 0);
+
+    glDrawArrays(GL_TRIANGLES, 0, mMesh->mNumVertices);
+
+    // Blur Y
+    glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, mTmpTexId2, 0);
+    glActiveTexture(GL_TEXTURE0);
+    glBindTexture(GL_TEXTURE_2D, mTmpTexId1);
+    glUniform1i(textureUniformHandle, 0);
+
+    glUniform2f(scaleUniformHandle, 0, 1.0f / mHeight);
+
+    glDrawArrays(GL_TRIANGLES, 0, mMesh->mNumVertices);
+}
+
+void BlurMeshNode::after(Program& program, Matrix& model, Matrix& view, Matrix& projection) {
+}
diff --git a/suite/cts/deviceTests/opengl/jni/reference/scene/glowing/BlurMeshNode.h b/suite/cts/deviceTests/opengl/jni/reference/scene/glowing/BlurMeshNode.h
new file mode 100644
index 0000000..8cb9617
--- /dev/null
+++ b/suite/cts/deviceTests/opengl/jni/reference/scene/glowing/BlurMeshNode.h
@@ -0,0 +1,37 @@
+/*
+ * Copyright (C) 2013 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.
+ */
+
+#ifndef BLURMESHNODE_H
+#define BLURMESHNODE_H
+
+#include <graphics/Matrix.h>
+#include <graphics/Mesh.h>
+#include <graphics/MeshNode.h>
+#include <graphics/Program.h>
+
+class BlurMeshNode: public MeshNode {
+public:
+    BlurMeshNode(const Mesh* mesh, GLuint fboTexId, GLuint tmpTexId1, GLuint tmpTexId2, float width, float height);
+    virtual ~BlurMeshNode() {};
+protected:
+    virtual void before(Program& program, Matrix& model, Matrix& view, Matrix& projection);
+    virtual void after(Program& program, Matrix& model, Matrix& view, Matrix& projection);
+    const GLuint mFboTexId;
+    const GLuint mTmpTexId1;
+    const GLuint mTmpTexId2;
+    const float mWidth;
+    const float mHeight;
+};
+
+#endif
diff --git a/suite/cts/deviceTests/opengl/jni/reference/scene/glowing/GlowingScene.cpp b/suite/cts/deviceTests/opengl/jni/reference/scene/glowing/GlowingScene.cpp
new file mode 100644
index 0000000..0d22b96
--- /dev/null
+++ b/suite/cts/deviceTests/opengl/jni/reference/scene/glowing/GlowingScene.cpp
@@ -0,0 +1,197 @@
+/*
+ * Copyright (C) 2013 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.
+ */
+#include "GlowingScene.h"
+#include "BlurMeshNode.h"
+
+#include <Trace.h>
+
+#include <graphics/PerspectiveMeshNode.h>
+#include <graphics/PerspectiveProgram.h>
+#include <graphics/Program.h>
+#include <graphics/GLUtils.h>
+#include <graphics/Mesh.h>
+#include <graphics/ProgramNode.h>
+#include <graphics/TransformationNode.h>
+
+GlowingScene::GlowingScene(int width, int height) :
+        Scene(width, height), mFboId(0), mMainProgram(NULL), mBlurProgram(NULL) {
+    mFboWidth = GLUtils::roundUpToSmallestPowerOf2(width);
+    mFboHeight = GLUtils::roundUpToSmallestPowerOf2(height);
+    mFboRatio = mFboWidth / mFboHeight;
+    mFboModelMatrix = setUpModelMatrix();
+    mFboViewMatrix = setUpViewMatrix();
+    mFboProjectionMatrix = setUpProjectionMatrix(mFboWidth, mFboHeight);
+}
+
+bool GlowingScene::setUpContext() {
+    if (!Scene::setUpContext()) {
+        return false;
+    }
+    // Create a fbo
+    glGenFramebuffers(1, &mFboId);
+    return true;
+}
+
+bool GlowingScene::setUpPrograms() {
+    // Main Program
+    const char* vertex = GLUtils::openTextFile("vertex/perspective");
+    const char* fragment = GLUtils::openTextFile("fragment/perspective");
+    if (vertex == NULL || fragment == NULL) {
+        return false;
+    }
+    GLuint programId = GLUtils::createProgram(&vertex, &fragment);
+    delete[] vertex;
+    delete[] fragment;
+    if (programId == 0) {
+        return false;
+    }
+    mMainProgram = new PerspectiveProgram(programId);
+    // Blur Program
+    vertex = GLUtils::openTextFile("vertex/blur");
+    fragment = GLUtils::openTextFile("fragment/blur");
+    if (vertex == NULL || fragment == NULL) {
+        return false;
+    }
+    programId = GLUtils::createProgram(&vertex, &fragment);
+    delete[] vertex;
+    delete[] fragment;
+    if (programId == 0) {
+        return false;
+    }
+    mBlurProgram = new Program(programId);
+    return true;
+}
+
+Matrix* GlowingScene::setUpModelMatrix() {
+    return new Matrix();
+}
+
+Matrix* GlowingScene::setUpViewMatrix() {
+    // Position the eye in front of the origin.
+    float eyeX = 0.0f;
+    float eyeY = 0.0f;
+    float eyeZ = 10.0f;
+
+    // Look at the origin
+    float centerX = 0.0f;
+    float centerY = 0.0f;
+    float centerZ = 0.0f;
+
+    // Set up vector.
+    float upX = 0.0f;
+    float upY = 1.0f;
+    float upZ = 0.0f;
+
+    // Set the view matrix.
+    return Matrix::newLookAt(eyeX, eyeY, eyeZ, centerX, centerY, centerZ, upX, upY, upZ);
+}
+
+Matrix* GlowingScene::setUpProjectionMatrix(float width, float height) {
+    // Create a new perspective projection matrix. The height will stay the same
+    // while the width will vary as per aspect ratio.
+    float ratio = width / height;
+    float left = -ratio;
+    float right = ratio;
+    float bottom = -1.0f;
+    float top = 1.0f;
+    float near = 8.0f;
+    float far = 12.0f;
+
+    return Matrix::newFrustum(left, right, bottom, top, near, far);
+}
+
+bool GlowingScene::setUpTextures() {
+    SCOPED_TRACE();
+    mTextureIds.add(GLUtils::genTexture(mWidth, mHeight, 0)); // fbo
+    mTextureIds.add(GLUtils::genTexture(mWidth, mHeight, 0)); // tmp1
+    mTextureIds.add(GLUtils::genTexture(mWidth, mHeight, 0)); // tmp2
+    mTextureIds.add(GLUtils::loadTexture("texture/arc.png"));
+    return true;
+}
+
+bool GlowingScene::setUpMeshes() {
+    SCOPED_TRACE();
+    mMeshes.add(GLUtils::loadMesh("mesh/plane.cob"));
+    mMeshes.add(GLUtils::loadMesh("mesh/arc.cob"));
+    return true;
+}
+
+bool GlowingScene::tearDown() {
+    SCOPED_TRACE();
+    if (mMainProgram != NULL) {
+        delete mMainProgram;
+        mMainProgram = NULL;
+    }
+    if (mBlurProgram != NULL) {
+        delete mBlurProgram;
+        mBlurProgram = NULL;
+    }
+    if (mFboId != 0) {
+        glDeleteFramebuffers(1, &mFboId);
+        mFboId = 0;
+    }
+    delete mFboModelMatrix;
+    mFboModelMatrix = NULL;
+    delete mFboViewMatrix;
+    mFboViewMatrix = NULL;
+    delete mFboProjectionMatrix;
+    mFboProjectionMatrix = NULL;
+    return Scene::tearDown();
+}
+
+bool GlowingScene::updateSceneGraphs(int frame) {
+    // To render the mesh to the FBO
+    ProgramNode* lightSceneGraph = new ProgramNode(*mMainProgram);
+    mSceneGraphs.add(lightSceneGraph);
+    MeshNode* meshNode = new PerspectiveMeshNode(mMeshes[1], mTextureIds[3]);
+    lightSceneGraph->addChild(meshNode);
+
+    // To blur the image
+    ProgramNode* blurSceneGraph = new ProgramNode(*mBlurProgram);
+    mSceneGraphs.add(blurSceneGraph);
+    meshNode = new BlurMeshNode(mMeshes[0], mTextureIds[0], mTextureIds[1], mTextureIds[2],
+            mFboWidth, mFboHeight);
+    blurSceneGraph->addChild(meshNode);
+
+    // Blur To screen
+    ProgramNode* glowSceneGraph = new ProgramNode(*mMainProgram);
+    mSceneGraphs.add(glowSceneGraph);
+    Matrix* transformMatrix = Matrix::newScale(mFboRatio, 1.0f, 1.0f);
+    TransformationNode* transformNode = new TransformationNode(transformMatrix);
+    glowSceneGraph->addChild(transformNode);
+    meshNode = new PerspectiveMeshNode(mMeshes[0], mTextureIds[2]);
+    transformNode->addChild(meshNode);
+    return true;
+}
+
+bool GlowingScene::draw() {
+    SCOPED_TRACE();
+    glBindFramebuffer(GL_FRAMEBUFFER, mFboId); // Use FBO
+    glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, mTextureIds[0], 0);
+    if (glCheckFramebufferStatus(GL_FRAMEBUFFER) != GL_FRAMEBUFFER_COMPLETE) {
+        return false;
+    }
+    glClearColor(0.0f, 0.0f, 0.0f, 0.0f);
+    glClear (GL_COLOR_BUFFER_BIT);
+    glViewport(0, 0, mFboWidth, mFboHeight);
+    mFboModelMatrix->identity();
+    mSceneGraphs[0]->drawProgram(*mFboModelMatrix, *mFboViewMatrix, *mFboProjectionMatrix); // Mesh
+    mFboModelMatrix->identity();
+    mSceneGraphs[1]->drawProgram(*mFboModelMatrix, *mFboViewMatrix, *mFboProjectionMatrix); // Blur
+
+    glBindFramebuffer(GL_FRAMEBUFFER, 0); // Use Screen
+    glViewport(0, 0, mWidth, mHeight);
+    Scene::drawSceneGraph(2); // Blur to Screen
+    return true;
+}
diff --git a/suite/cts/deviceTests/opengl/jni/reference/scene/glowing/GlowingScene.h b/suite/cts/deviceTests/opengl/jni/reference/scene/glowing/GlowingScene.h
new file mode 100644
index 0000000..3bc734c
--- /dev/null
+++ b/suite/cts/deviceTests/opengl/jni/reference/scene/glowing/GlowingScene.h
@@ -0,0 +1,47 @@
+/*
+ * Copyright (C) 2013 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.
+ */
+#ifndef GLOWINGSCENE_H
+#define GLOWINGSCENE_H
+
+#include <graphics/Program.h>
+
+#include "../Scene.h"
+
+class GlowingScene: public Scene {
+public:
+    GlowingScene(int width, int height);
+    virtual ~GlowingScene() {};
+    bool setUpContext();
+    bool setUpTextures();
+    bool setUpMeshes();
+    bool tearDown();
+    bool draw();
+protected:
+    bool setUpPrograms();
+    Matrix* setUpModelMatrix();
+    Matrix* setUpViewMatrix();
+    Matrix* setUpProjectionMatrix(float width, float height);
+    bool updateSceneGraphs(int frame);
+private:
+    GLuint mFboId;
+    Program* mMainProgram;
+    Program* mBlurProgram;
+    float mFboWidth;
+    float mFboHeight;
+    float mFboRatio;
+    Matrix* mFboModelMatrix;
+    Matrix* mFboViewMatrix;
+    Matrix* mFboProjectionMatrix;
+};
+#endif
diff --git a/suite/cts/deviceTests/opengl/src/com/android/cts/opengl/GLActivityIntentKeys.java b/suite/cts/deviceTests/opengl/src/com/android/cts/opengl/GLActivityIntentKeys.java
new file mode 100644
index 0000000..9a29caf
--- /dev/null
+++ b/suite/cts/deviceTests/opengl/src/com/android/cts/opengl/GLActivityIntentKeys.java
@@ -0,0 +1,37 @@
+/*
+ * Copyright (C) 2013 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.android.cts.opengl;
+
+public class GLActivityIntentKeys {
+    /**
+     * Holds the name of the benchmark to run.
+     */
+    public final static String INTENT_EXTRA_BENCHMARK_NAME = "benchmark_name";
+    /**
+     * Holds whether or not the benchmark is to be run offscreen.
+     */
+    public final static String INTENT_EXTRA_OFFSCREEN = "offscreen";
+    /**
+     * The number of frames to render for each workload.
+     */
+    public final static String INTENT_EXTRA_NUM_FRAMES = "num_frames";
+    /**
+     * The number of iterations to run, the workload increases with each iteration.
+     */
+    public final static String INTENT_EXTRA_NUM_ITERATIONS = "num_iterations";
+    /**
+     * The number of milliseconds to wait before timing out.
+     */
+    public final static String INTENT_EXTRA_TIMEOUT = "timeout";
+}
diff --git a/suite/cts/deviceTests/opengl/src/com/android/cts/opengl/primitive/BenchmarkName.java b/suite/cts/deviceTests/opengl/src/com/android/cts/opengl/primitive/BenchmarkName.java
new file mode 100644
index 0000000..a6bd6db
--- /dev/null
+++ b/suite/cts/deviceTests/opengl/src/com/android/cts/opengl/primitive/BenchmarkName.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2013 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.android.cts.opengl.primitive;
+
+/**
+ * Represents the different primitive benchmarks.
+ */
+public enum BenchmarkName {
+    FullPipeline,
+    PixelOutput,
+    ShaderPerf,
+    ContextSwitch;
+}
diff --git a/suite/cts/deviceTests/opengl/src/com/android/cts/opengl/primitive/GLPrimitiveActivity.java b/suite/cts/deviceTests/opengl/src/com/android/cts/opengl/primitive/GLPrimitiveActivity.java
new file mode 100644
index 0000000..5dc9b88
--- /dev/null
+++ b/suite/cts/deviceTests/opengl/src/com/android/cts/opengl/primitive/GLPrimitiveActivity.java
@@ -0,0 +1,181 @@
+/*
+ * Copyright (C) 2013 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.android.cts.opengl.primitive;
+
+import android.app.Activity;
+import android.content.Intent;
+import android.cts.util.WatchDog;
+import android.os.Bundle;
+import android.util.Log;
+import android.view.SurfaceHolder;
+import android.view.SurfaceView;
+import android.view.Surface;
+
+import com.android.cts.opengl.GLActivityIntentKeys;
+
+import java.util.concurrent.CountDownLatch;
+import java.util.concurrent.Semaphore;
+
+public class GLPrimitiveActivity extends Activity {
+
+    public final static String TAG = "GLPrimitiveActivity";
+
+    private volatile Exception mException;
+    private volatile Surface mSurface = null;
+    private CountDownLatch mStartSignal = new CountDownLatch(1);
+    private Semaphore mSemaphore = new Semaphore(0);
+
+    private BenchmarkName mBenchmark;
+    private boolean mOffscreen;
+    private int mNumFrames;
+    private int mNumIterations;
+    private int mTimeout;
+    public double[] mFpsValues;
+
+    @Override
+    public void onCreate(Bundle data) {
+        super.onCreate(data);
+        System.loadLibrary("ctsopengl_jni");
+        Intent intent = getIntent();
+        mBenchmark = BenchmarkName.valueOf(
+                intent.getStringExtra(GLActivityIntentKeys.INTENT_EXTRA_BENCHMARK_NAME));
+        mOffscreen = intent.getBooleanExtra(GLActivityIntentKeys.INTENT_EXTRA_OFFSCREEN, false);
+        mNumFrames = intent.getIntExtra(GLActivityIntentKeys.INTENT_EXTRA_NUM_FRAMES, 0);
+        mNumIterations = intent.getIntExtra(GLActivityIntentKeys.INTENT_EXTRA_NUM_ITERATIONS, 0);
+        mTimeout = intent.getIntExtra(GLActivityIntentKeys.INTENT_EXTRA_TIMEOUT, 0);
+        mFpsValues = new double[mNumIterations];
+
+        Log.i(TAG, "Benchmark: " + mBenchmark);
+        Log.i(TAG, "Offscreen: " + mOffscreen);
+        Log.i(TAG, "Num Frames: " + mNumFrames);
+        Log.i(TAG, "Num Iterations: " + mNumIterations);
+        Log.i(TAG, "Time Out: " + mTimeout);
+
+        SurfaceView surfaceView = new SurfaceView(this);
+        surfaceView.getHolder().addCallback(new SurfaceHolder.Callback() {
+            @Override
+            public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {
+                mSurface = holder.getSurface();
+                mStartSignal.countDown();
+            }
+
+            @Override
+            public void surfaceCreated(SurfaceHolder holder) {}
+
+            @Override
+            public void surfaceDestroyed(SurfaceHolder holder) {}
+        });
+        setContentView(surfaceView);
+        // Spawns a worker to run the benchmark.
+        Worker worker = new Worker();
+        worker.start();
+    }
+
+    public void waitForCompletion() throws Exception {
+        // Wait for semiphore.
+        mSemaphore.acquire();
+        if (mException != null) {
+            throw mException;
+        }
+    }
+
+    private void complete() {
+        // Release semiphore.
+        mSemaphore.release();
+        finish();
+    }
+
+    private synchronized void setException(Exception e) {
+        if (mException == null) {
+            mException = e;
+        }
+    }
+
+    private static native void setupFullPipelineBenchmark(
+            Surface surface, boolean offscreen, int workload);
+
+    private static native void setupPixelOutputBenchmark(
+            Surface surface, boolean offscreen, int workload);
+
+    private static native void setupShaderPerfBenchmark(
+            Surface surface, boolean offscreen, int workload);
+
+    private static native void setupContextSwitchBenchmark(
+            Surface surface, boolean offscreen, int workload);
+
+    private static native boolean startBenchmark(int numFrames, double[] frameTimes);
+
+    /**
+     * This thread runs the benchmarks, freeing the UI thread.
+     */
+    private class Worker extends Thread implements WatchDog.TimeoutCallback {
+
+        private WatchDog watchDog;
+        private volatile boolean success = true;
+
+        @Override
+        public void run() {
+            try {
+                mStartSignal.await();
+            } catch (InterruptedException e) {
+                setException(e);
+                complete();
+                return;
+            }
+            Log.i(TAG, mBenchmark + " Benchmark Started");
+            // Creates a watchdog to ensure a iteration doesn't exceed the timeout.
+            watchDog = new WatchDog(mTimeout, this);
+            // Used to record the start and end time of the iteration.
+            double[] times = new double[2];
+            for (int i = 0; i < mNumIterations && success; i++) {
+                // The workload to use for this iteration.
+                int workload = i + 1;
+                // Setup the benchmark.
+                switch (mBenchmark) {
+                    case FullPipeline:
+                        setupFullPipelineBenchmark(mSurface, mOffscreen, workload);
+                        break;
+                    case PixelOutput:
+                        setupPixelOutputBenchmark(mSurface, mOffscreen, workload);
+                        break;
+                    case ShaderPerf:
+                        setupShaderPerfBenchmark(mSurface, mOffscreen, workload);
+                        break;
+                    case ContextSwitch:
+                        setupContextSwitchBenchmark(mSurface, mOffscreen, workload);
+                        break;
+                }
+                watchDog.start();
+                // Start benchmark.
+                success = startBenchmark(mNumFrames, times);
+                watchDog.stop();
+
+                if (!success) {
+                    setException(new Exception("Benchmark failed to run"));
+                } else {
+                    // Calculate FPS.
+                    mFpsValues[i] = mNumFrames * 1000.0f / (times[1] - times[0]);
+                }
+            }
+            complete();
+            Log.i(TAG, mBenchmark + " Benchmark Completed");
+        }
+
+        public void onTimeout() {
+            setException(new Exception("Benchmark timed out"));
+            complete();
+        }
+
+    }
+}
diff --git a/suite/cts/deviceTests/opengl/src/com/android/cts/opengl/primitive/GLPrimitiveBenchmark.java b/suite/cts/deviceTests/opengl/src/com/android/cts/opengl/primitive/GLPrimitiveBenchmark.java
new file mode 100644
index 0000000..6c2c87d
--- /dev/null
+++ b/suite/cts/deviceTests/opengl/src/com/android/cts/opengl/primitive/GLPrimitiveBenchmark.java
@@ -0,0 +1,142 @@
+/*
+ * Copyright (C) 2013 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.android.cts.opengl.primitive;
+
+import com.android.cts.opengl.GLActivityIntentKeys;
+import android.cts.util.CtsActivityInstrumentationTestCase2;
+import com.android.cts.util.ResultType;
+import com.android.cts.util.ResultUnit;
+
+import android.content.Intent;
+import com.android.cts.util.TimeoutReq;
+
+/**
+ * Runs the Primitive OpenGL ES 2.0 Benchmarks.
+ */
+public class GLPrimitiveBenchmark extends CtsActivityInstrumentationTestCase2<GLPrimitiveActivity> {
+
+    private static final int NUM_FRAMES = 100;
+    private static final int NUM_ITERATIONS = 8;
+    private static final int TIMEOUT = 1000000;
+
+    public GLPrimitiveBenchmark() {
+        super(GLPrimitiveActivity.class);
+    }
+
+    /**
+     * Runs the full OpenGL ES 2.0 pipeline test offscreen.
+     */
+    @TimeoutReq(minutes = 100)
+    public void testFullPipelineOffscreen() throws Exception {
+        runBenchmark(BenchmarkName.FullPipeline, true, NUM_FRAMES, NUM_ITERATIONS, TIMEOUT);
+    }
+
+    /**
+     * Runs the full OpenGL ES 2.0 pipeline test onscreen.
+     */
+    @TimeoutReq(minutes = 100)
+    public void testFullPipelineOnscreen() throws Exception {
+        runBenchmark(BenchmarkName.FullPipeline, false, NUM_FRAMES, NUM_ITERATIONS, TIMEOUT);
+    }
+
+    /**
+     * Runs the pixel output test offscreen.
+     */
+    @TimeoutReq(minutes = 100)
+    public void testPixelOutputOffscreen() throws Exception {
+        runBenchmark(BenchmarkName.PixelOutput, true, NUM_FRAMES, NUM_ITERATIONS, TIMEOUT);
+    }
+
+    /**
+     * Runs the pixel output test onscreen.
+     */
+    @TimeoutReq(minutes = 100)
+    public void testPixelOutputOnscreen() throws Exception {
+        runBenchmark(BenchmarkName.PixelOutput, false, NUM_FRAMES, NUM_ITERATIONS, TIMEOUT);
+    }
+
+    /**
+     * Runs the shader performance test offscreen.
+     */
+    @TimeoutReq(minutes = 100)
+    public void testShaderPerfOffscreen() throws Exception {
+        runBenchmark(BenchmarkName.ShaderPerf, true, NUM_FRAMES, NUM_ITERATIONS, TIMEOUT);
+    }
+
+    /**
+     * Runs the shader performance test onscreen.
+     */
+    @TimeoutReq(minutes = 100)
+    public void testShaderPerfOnscreen() throws Exception {
+        runBenchmark(BenchmarkName.ShaderPerf, false, NUM_FRAMES, NUM_ITERATIONS, TIMEOUT);
+    }
+
+    /**
+     * Runs the context switch overhead test offscreen.
+     */
+    @TimeoutReq(minutes = 100)
+    public void testContextSwitchOffscreen() throws Exception {
+        runBenchmark(BenchmarkName.ContextSwitch, true, NUM_FRAMES, NUM_ITERATIONS, TIMEOUT);
+    }
+
+    /**
+     * Runs the context switch overhead test onscreen.
+     */
+    @TimeoutReq(minutes = 100)
+    public void testContextSwitchOnscreen() throws Exception {
+        runBenchmark(BenchmarkName.ContextSwitch, false, NUM_FRAMES, NUM_ITERATIONS, TIMEOUT);
+    }
+
+    /**
+     * Runs the specified test.
+     *
+     * @param benchmark An enum representing the benchmark to run.
+     * @param offscreen Whether to render to an offscreen framebuffer rather than the screen.
+     * @param numFrames The number of frames to render.
+     * @param numIterations The number of iterations to run, each iteration has a bigger workload.
+     * @param timeout The milliseconds to wait for an iteration of the benchmark before timing out.
+     * @throws Exception If the benchmark could not be run.
+     */
+    private void runBenchmark(BenchmarkName benchmark, boolean offscreen, int numFrames,
+            int numIterations, int timeout) throws Exception {
+        String benchmarkName = benchmark.toString();
+        Intent intent = new Intent();
+        intent.putExtra(GLActivityIntentKeys.INTENT_EXTRA_BENCHMARK_NAME, benchmarkName);
+        intent.putExtra(GLActivityIntentKeys.INTENT_EXTRA_OFFSCREEN, offscreen);
+        intent.putExtra(GLActivityIntentKeys.INTENT_EXTRA_NUM_FRAMES, numFrames);
+        intent.putExtra(GLActivityIntentKeys.INTENT_EXTRA_NUM_ITERATIONS, numIterations);
+        intent.putExtra(GLActivityIntentKeys.INTENT_EXTRA_TIMEOUT, timeout);
+
+        GLPrimitiveActivity activity = null;
+        setActivityIntent(intent);
+        activity = getActivity();
+        if (activity != null) {
+            activity.waitForCompletion();
+            double[] fpsValues = activity.mFpsValues;
+            double score = 0;
+            for (double d : fpsValues) {
+                score += d;
+            }
+            score /= numIterations;// Average.
+
+            // TODO: maybe standard deviation / RMSE will be useful?
+
+            getReportLog().printArray(
+                    "Fps Values", fpsValues, ResultType.HIGHER_BETTER, ResultUnit.FPS);
+            getReportLog().printSummary(
+                    "Average Frames Per Second", score, ResultType.HIGHER_BETTER,
+                    ResultUnit.SCORE);
+        }
+    }
+}
diff --git a/suite/cts/deviceTests/opengl/src/com/android/cts/opengl/reference/GLGameActivity.java b/suite/cts/deviceTests/opengl/src/com/android/cts/opengl/reference/GLGameActivity.java
new file mode 100644
index 0000000..3b310f9
--- /dev/null
+++ b/suite/cts/deviceTests/opengl/src/com/android/cts/opengl/reference/GLGameActivity.java
@@ -0,0 +1,180 @@
+/*
+ * Copyright (C) 2013 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.android.cts.opengl.reference;
+
+import com.android.cts.opengl.GLActivityIntentKeys;
+
+import android.app.Activity;
+import android.content.Intent;
+import android.content.res.AssetManager;
+import android.cts.util.WatchDog;
+import android.graphics.Bitmap;
+import android.graphics.BitmapFactory;
+import android.opengl.GLES20;
+import android.opengl.GLUtils;
+import android.os.Bundle;
+import android.os.Handler;
+import android.os.Message;
+import android.view.Surface;
+import android.view.SurfaceHolder;
+import android.view.SurfaceView;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.concurrent.CountDownLatch;
+
+public class GLGameActivity extends Activity {
+
+    public final static String SET_UP_TIME = "set_up_time";
+    public final static String UPDATE_TIMES = "update_times";
+    public final static String RENDER_TIMES = "render_times";
+
+    private int mNumFrames;
+    private int mTimeout;
+    private double[] mSetUpTimes;
+    private double[] mUpdateTimes;
+    private double[] mRenderTimes;
+    private volatile Surface mSurface = null;
+    private CountDownLatch mStartSignal = new CountDownLatch(1);
+
+    @Override
+    public void onCreate(Bundle data) {
+        super.onCreate(data);
+        System.loadLibrary("ctsopengl_jni");
+
+        Intent intent = getIntent();
+        mNumFrames = intent.getIntExtra(GLActivityIntentKeys.INTENT_EXTRA_NUM_FRAMES, 1000);
+        mTimeout = intent.getIntExtra(GLActivityIntentKeys.INTENT_EXTRA_TIMEOUT, 1000000);
+
+        SurfaceView surfaceView = new SurfaceView(this);
+        surfaceView.getHolder().addCallback(new SurfaceHolder.Callback() {
+            @Override
+            public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {
+                mSurface = holder.getSurface();
+                mStartSignal.countDown();
+            }
+
+            @Override
+            public void surfaceCreated(SurfaceHolder holder) {}
+
+            @Override
+            public void surfaceDestroyed(SurfaceHolder holder) {}
+        });
+        setContentView(surfaceView);
+
+        // Spawns a worker.
+        Worker worker = new Worker(new Handler() {
+            public void handleMessage(Message msg) {
+                Intent intent = new Intent();
+                intent.putExtra(SET_UP_TIME, mSetUpTimes);
+                intent.putExtra(UPDATE_TIMES, mUpdateTimes);
+                intent.putExtra(RENDER_TIMES, mRenderTimes);
+                setResult((msg.what == 1) ? RESULT_OK : RESULT_CANCELED, intent);
+                finish();
+            }
+        });
+        worker.start();
+    }
+
+    private static native boolean startBenchmark(AssetManager manager,
+            Surface surface,
+            int numFrames,
+            double[] setUpTimes,
+            double[] updateTimes,
+            double[] renderTimes);
+
+    /**
+     * This thread renderers the benchmarks, freeing the UI thread.
+     */
+    private class Worker extends Thread implements WatchDog.TimeoutCallback {
+
+        private WatchDog watchDog;
+        private Handler mHandler;
+
+        public Worker(Handler handler) {
+            mHandler = handler;
+        }
+
+        @Override
+        public void run() {
+            try {
+                mStartSignal.await();
+            } catch (InterruptedException e) {
+                mHandler.sendEmptyMessage(0);
+                return;
+            }
+            // Creates a watchdog to ensure a iteration doesn't exceed the timeout.
+            watchDog = new WatchDog(mTimeout, this);
+            watchDog.start();
+
+            // Used to record the time taken to setup (GL, context, textures, meshes).
+            mSetUpTimes = new double[4];
+            // Used to record the times taken to update.
+            mUpdateTimes = new double[mNumFrames];
+            // Used to record the times taken to render.
+            mRenderTimes = new double[mNumFrames];
+            boolean success = startBenchmark(getAssets(),
+                    mSurface,
+                    mNumFrames,
+                    mSetUpTimes,
+                    mUpdateTimes,
+                    mRenderTimes);
+
+            watchDog.stop();
+            mHandler.sendEmptyMessage((success) ? 1 : 0);
+        }
+
+        public void onTimeout() {
+            mHandler.sendEmptyMessage(0);
+        }
+
+    }
+
+    public static int loadTexture(AssetManager manager, String path) {
+        InputStream in = null;
+        try {
+            in = manager.open(path);
+        } catch (IOException e) {
+            e.printStackTrace();
+            return -1;
+        }
+        BitmapFactory.Options op = new BitmapFactory.Options();
+        op.inPreferredConfig = Bitmap.Config.ARGB_8888;
+        Bitmap bmp = BitmapFactory.decodeStream(in, null, op);
+        // generate textureID
+        int[] textures = new int[1];
+        GLES20.glGenTextures(1, textures, 0);
+        int textureID = textures[0];
+
+        // create texture
+        GLES20.glBindTexture(GLES20.GL_TEXTURE_2D, textureID);
+        GLES20.glTexParameteri(
+                GLES20.GL_TEXTURE_2D, GLES20.GL_TEXTURE_MIN_FILTER, GLES20.GL_LINEAR);
+        GLES20.glTexParameteri(
+                GLES20.GL_TEXTURE_2D, GLES20.GL_TEXTURE_MAG_FILTER, GLES20.GL_LINEAR);
+        GLES20.glTexParameteri(GLES20.GL_TEXTURE_2D, GLES20.GL_TEXTURE_WRAP_S, GLES20.GL_REPEAT);
+        GLES20.glTexParameteri(GLES20.GL_TEXTURE_2D, GLES20.GL_TEXTURE_WRAP_T, GLES20.GL_REPEAT);
+        GLUtils.texImage2D(GLES20.GL_TEXTURE_2D, 0, bmp, 0);
+
+        // clean up
+        try {
+            in.close();
+        } catch (IOException e) {
+            e.printStackTrace();
+        } finally {
+            bmp.recycle();
+        }
+        return textureID;
+    }
+}
diff --git a/suite/cts/deviceTests/opengl/src/com/android/cts/opengl/reference/GLReferenceActivity.java b/suite/cts/deviceTests/opengl/src/com/android/cts/opengl/reference/GLReferenceActivity.java
new file mode 100644
index 0000000..8d34535
--- /dev/null
+++ b/suite/cts/deviceTests/opengl/src/com/android/cts/opengl/reference/GLReferenceActivity.java
@@ -0,0 +1,82 @@
+/*
+ * Copyright (C) 2013 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.android.cts.opengl.reference;
+
+import com.android.cts.opengl.GLActivityIntentKeys;
+
+import android.app.Activity;
+import android.content.Intent;
+import android.os.Bundle;
+
+import java.util.concurrent.Semaphore;
+
+public class GLReferenceActivity extends Activity {
+
+    private final static int GAME_ACTIVITY_CODE = 1;
+
+    private volatile Exception mException;
+    private int mNumFrames;
+    private int mTimeout;
+
+    public double[] mSetUpTimes;
+    public double[] mUpdateTimes;
+    public double[] mRenderTimes;
+
+    private Semaphore mSemaphore = new Semaphore(0);
+
+    @Override
+    public void onCreate(Bundle data) {
+        super.onCreate(data);
+        Intent intent = getIntent();
+        mNumFrames = intent.getIntExtra(GLActivityIntentKeys.INTENT_EXTRA_NUM_FRAMES, 0);
+        mTimeout = intent.getIntExtra(GLActivityIntentKeys.INTENT_EXTRA_TIMEOUT, 0);
+
+        // Start benchmark
+        intent = new Intent(this, GLGameActivity.class);
+        intent.putExtra(GLActivityIntentKeys.INTENT_EXTRA_NUM_FRAMES, mNumFrames);
+        intent.putExtra(GLActivityIntentKeys.INTENT_EXTRA_TIMEOUT, mTimeout);
+        startActivityForResult(intent, GAME_ACTIVITY_CODE);
+    }
+
+    public void waitForCompletion() throws Exception {
+        // Wait for semiphore.
+        mSemaphore.acquire();
+        if (mException != null) {
+            throw mException;
+        }
+    }
+
+    private synchronized void setException(Exception e) {
+        if (mException == null) {
+            mException = e;
+        }
+    }
+
+    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
+        if (requestCode == GAME_ACTIVITY_CODE) {
+            if (resultCode == RESULT_OK) {
+                // Benchmark passed
+                mSetUpTimes = data.getDoubleArrayExtra(GLGameActivity.SET_UP_TIME);
+                mUpdateTimes = data.getDoubleArrayExtra(GLGameActivity.UPDATE_TIMES);
+                mRenderTimes = data.getDoubleArrayExtra(GLGameActivity.RENDER_TIMES);
+            } else {
+                setException(new Exception("Benchmark failed to run"));
+            }
+            // Release semiphore.
+            mSemaphore.release();
+            finish();
+        }
+    }
+
+}
diff --git a/suite/cts/deviceTests/opengl/src/com/android/cts/opengl/reference/GLReferenceBenchmark.java b/suite/cts/deviceTests/opengl/src/com/android/cts/opengl/reference/GLReferenceBenchmark.java
new file mode 100644
index 0000000..fdea916
--- /dev/null
+++ b/suite/cts/deviceTests/opengl/src/com/android/cts/opengl/reference/GLReferenceBenchmark.java
@@ -0,0 +1,86 @@
+/*
+ * Copyright (C) 2013 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.android.cts.opengl.reference;
+
+import com.android.cts.opengl.GLActivityIntentKeys;
+
+import android.cts.util.CtsActivityInstrumentationTestCase2;
+import com.android.cts.util.ResultType;
+import com.android.cts.util.ResultUnit;
+import com.android.cts.util.TimeoutReq;
+
+import android.content.Intent;
+
+/**
+ * Runs the Reference OpenGL ES 2.0 Benchmark.
+ */
+public class GLReferenceBenchmark extends CtsActivityInstrumentationTestCase2<GLReferenceActivity> {
+
+    private static final int NUM_FRAMES_PER_SCENE = 500;
+    private static final int NUM_SCENES = 2;
+    private static final int NUM_FRAMES = NUM_FRAMES_PER_SCENE * NUM_SCENES;
+    private static final int TIMEOUT = 1000000;
+
+    public GLReferenceBenchmark() {
+        super(GLReferenceActivity.class);
+    }
+
+    /**
+     * Runs the reference benchmark.
+     */
+    @TimeoutReq(minutes = 30)
+    public void testReferenceBenchmark() throws Exception {
+        Intent intent = new Intent();
+        intent.putExtra(GLActivityIntentKeys.INTENT_EXTRA_NUM_FRAMES, NUM_FRAMES);
+        intent.putExtra(GLActivityIntentKeys.INTENT_EXTRA_TIMEOUT, TIMEOUT);
+
+        GLReferenceActivity activity = null;
+        setActivityIntent(intent);
+        activity = getActivity();
+        if (activity != null) {
+            activity.waitForCompletion();
+            double totalTime = 0;
+            double[] setUpTimes = activity.mSetUpTimes;
+            double[] updateTimes = activity.mUpdateTimes;
+            double[] renderTimes = activity.mRenderTimes;
+
+            // Calculate update and render average.
+            double updateSum = updateTimes[0];
+            double renderSum = renderTimes[0];
+            for (int i = 0; i < NUM_FRAMES - 1; i++) {
+                updateSum += updateTimes[i + 1];
+                renderSum += renderTimes[i + 1];
+            }
+            double updateAverage = updateSum / NUM_FRAMES;
+            double renderAverage = renderSum / NUM_FRAMES;
+
+            getReportLog().printArray(
+                    "Set Up Times", setUpTimes, ResultType.LOWER_BETTER, ResultUnit.MS);
+            getReportLog().printArray(
+                    "Update Times", updateTimes, ResultType.LOWER_BETTER, ResultUnit.MS);
+            getReportLog().printValue(
+                    "Update Time Average", updateAverage, ResultType.LOWER_BETTER,
+                    ResultUnit.MS);
+            getReportLog().printArray(
+                    "Render Times", renderTimes, ResultType.LOWER_BETTER, ResultUnit.MS);
+            getReportLog().printValue(
+                    "Render Time Average", renderAverage, ResultType.LOWER_BETTER,
+                    ResultUnit.MS);
+            totalTime = setUpTimes[0] + setUpTimes[1] + setUpTimes[2] +
+                    setUpTimes[3] + updateAverage + renderAverage;
+            getReportLog().printSummary(
+                    "Total Time", totalTime, ResultType.LOWER_BETTER, ResultUnit.MS);
+        }
+    }
+}
diff --git a/suite/cts/deviceTests/opengl/test/Android.mk b/suite/cts/deviceTests/opengl/test/Android.mk
new file mode 100644
index 0000000..b571dbf
--- /dev/null
+++ b/suite/cts/deviceTests/opengl/test/Android.mk
@@ -0,0 +1,34 @@
+#
+# Copyright (C) 2013 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.
+
+# build only for linux
+ifeq ($(HOST_OS),linux)
+
+LOCAL_PATH:= $(call my-dir)
+include $(CLEAR_VARS)
+
+LOCAL_MODULE_TAGS := optional
+LOCAL_SRC_FILES := $(patsubst ./%,%, $(shell cd $(LOCAL_PATH); \
+  find . -name "*.cpp" -and -not -name ".*"))
+LOCAL_SRC_FILES += ../jni/graphics/Matrix.cpp
+
+#$(info $(LOCAL_SRC_FILES))
+LOCAL_C_INCLUDES += external/gtest/include $(LOCAL_PATH)/../jni/graphics/
+LOCAL_STATIC_LIBRARIES := libutils libcutils libgtest_host libgtest_main_host liblog
+LOCAL_LDFLAGS:= -g -lrt -ldl -lstdc++ -lm -fno-exceptions
+LOCAL_MODULE:= cts_device_opengl_test
+include $(BUILD_HOST_EXECUTABLE)
+
+endif # linux
diff --git a/suite/cts/deviceTests/opengl/test/MatrixTest.cpp b/suite/cts/deviceTests/opengl/test/MatrixTest.cpp
new file mode 100644
index 0000000..d78dfc4
--- /dev/null
+++ b/suite/cts/deviceTests/opengl/test/MatrixTest.cpp
@@ -0,0 +1,242 @@
+/*
+ * Copyright (C) 2013 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.
+ */
+
+#include <gtest/gtest.h>
+#include <math.h>
+
+#include "Matrix.h"
+
+class MatrixTest: public testing::Test {
+public:
+
+};
+
+void checkValues(const float* arr1, const float* arr2, const int size) {
+    for (int i = 0; i < size; i++) {
+        ASSERT_FLOAT_EQ(arr1[i], arr2[i]);
+    }
+}
+
+TEST(MatrixTest, matrixEqualityTest) {
+    // Create two identity matrixes.
+    Matrix m1;
+    Matrix m2;
+    // Change some random values.
+    m1.mData[4] = 9;
+    m2.mData[4] = 9;
+    // Check they are the same.
+    ASSERT_TRUE(m1.equals(m2));
+    Matrix* clone = new Matrix(m1);
+    ASSERT_TRUE(clone != NULL);
+    ASSERT_TRUE(m1.equals(*clone));
+    delete clone;
+}
+
+TEST(MatrixTest, matrixIdentityTest) {
+    // Create an identity matrix.
+    Matrix m;
+    float expected[] = {
+        1.0f, 0.0f, 0.0f, 0.0f,
+        0.0f, 1.0f, 0.0f, 0.0f,
+        0.0f, 0.0f, 1.0f, 0.0f,
+        0.0f, 0.0f, 0.0f, 1.0f};
+    // Check values
+    checkValues(m.mData, expected, Matrix::MATRIX_SIZE);
+}
+
+TEST(MatrixTest, matrixLoadWithTest) {
+    // Create a matrix.
+    Matrix m1;
+    float* d1 = m1.mData;
+    float data[Matrix::MATRIX_SIZE];
+
+    // Fill with rubbish
+    for (int i = 0; i < Matrix::MATRIX_SIZE; i++) {
+        d1[i] = i;
+        data[i] = i;
+    }
+
+    // Create another matrix
+    Matrix m2;
+
+    // Load second matrix with first
+    m2.loadWith(m1);
+
+    // Check values
+    checkValues(m2.mData, data, Matrix::MATRIX_SIZE);
+}
+
+TEST(MatrixTest, matrixTranslateTest) {
+    Matrix m1;
+    m1.translate(10, 5, 6);
+    Matrix* m2 = Matrix::newTranslate(10, 5, 6);
+    ASSERT_TRUE(m2 != NULL);
+    ASSERT_TRUE(m1.equals(*m2));
+    delete m2;
+}
+
+TEST(MatrixTest, matrixScaleTest) {
+    Matrix m1;
+    m1.scale(10, 5, 6);
+    Matrix* m2 = Matrix::newScale(10, 5, 6);
+    ASSERT_TRUE(m2 != NULL);
+    ASSERT_TRUE(m1.equals(*m2));
+    delete m2;
+}
+
+TEST(MatrixTest, matrixRotateTest) {
+    Matrix m1;
+    m1.rotate(180, 1, 0, 1);
+    Matrix* m2 = Matrix::newRotate(180, 1, 0, 1);
+    ASSERT_TRUE(m2 != NULL);
+    ASSERT_TRUE(m1.equals(*m2));
+    delete m2;
+}
+
+TEST(MatrixTest, matrixMultiplyTest) {
+    // Create three identity matrixes.
+    Matrix m1;
+    Matrix m2;
+    Matrix m3;
+    float* d1 = m1.mData;
+    float* d2 = m2.mData;
+
+    m3.multiply(m1, m2);
+    // Multiplication of identity matrixes should give identity
+    ASSERT_TRUE(m3.equals(m1));
+
+    // Fill with ascending numbers
+    for (int i = 0; i < Matrix::MATRIX_SIZE; i++) {
+        d1[i] = i;
+        d2[i] = i;
+    }
+    m3.multiply(m1, m2);
+
+    // Check against expected
+    float expected[] = {
+        56, 62, 68, 74,
+        152, 174, 196, 218,
+        248, 286, 324, 362,
+        344, 398, 452, 506};
+    checkValues(m3.mData, expected, Matrix::MATRIX_SIZE);
+}
+
+TEST(MatrixTest, matrixNewLookAtTest) {
+    // Position the eye in front of the origin.
+    float eyeX = 0.0f;
+    float eyeY = 0.0f;
+    float eyeZ = 6.0f;
+
+    // We are looking at the origin
+    float centerX = 0.0f;
+    float centerY = 0.0f;
+    float centerZ = 0.0f;
+
+    // Set our up vector. This is where our head would be pointing were we holding the camera.
+    float upX = 0.0f;
+    float upY = 1.0f;
+    float upZ = 0.0f;
+
+    // Set the view matrix. This matrix can be said to represent the camera position.
+    Matrix* m = Matrix::newLookAt(eyeX, eyeY, eyeZ, centerX, centerY, centerZ,
+            upX, upY, upZ);
+    ASSERT_TRUE(m != NULL);
+    float expected[] = {
+        1.0f, 0.0f, 0.0f, 0.0f,
+        0.0f, 1.0f, 0.0f, 0.0f,
+        0.0f, 0.0f, 1.0f, 0.0f,
+        0.0f, 0.0f, -6.0f, 1.0f};
+    // Check values
+    checkValues(m->mData, expected, Matrix::MATRIX_SIZE);
+    delete m;
+}
+
+TEST(MatrixTest, matrixNewFrustumTest) {
+    float ratio = (float) 800 / 600;
+    float left = -ratio;
+    float right = ratio;
+    float bottom = -1.0f;
+    float top = 1.0f;
+    float near = 1.0f;
+    float far = 8.0f;
+
+    Matrix* m = Matrix::newFrustum(left, right, bottom, top, near, far);
+    ASSERT_TRUE(m != NULL);
+    float expected[] = {
+        0.75f, 0.0f, 0.0f, 0.0f,
+        0.0f, 1.0f, 0.0f, 0.0f,
+        0.0f, 0.0f, 9.0f / -7.0f, -1.0f,
+        0.0f, 0.0f, 16.0f / -7.0f, 0.0f};
+    // Check values
+    checkValues(m->mData, expected, Matrix::MATRIX_SIZE);
+    delete m;
+}
+
+TEST(MatrixTest, matrixNewTranslateTest) {
+    Matrix* m = Matrix::newTranslate(5, 6, 8);
+    ASSERT_TRUE(m != NULL);
+    float expected[] = {
+        1.0f, 0.0f, 0.0f, 0.0f,
+        0.0f, 1.0f, 0.0f, 0.0f,
+        0.0f, 0.0f, 1.0f, 0.0f,
+        5.0f, 6.0f, 8.0f, 1.0f};
+    // Check values
+    checkValues(m->mData, expected, Matrix::MATRIX_SIZE);
+    delete m;
+}
+
+TEST(MatrixTest, matrixNewScaleTest) {
+    Matrix* m = Matrix::newScale(3, 7, 2);
+    ASSERT_TRUE(m != NULL);
+    float expected[] = {
+        3.0f, 0.0f, 0.0f, 0.0f,
+        0.0f, 7.0f, 0.0f, 0.0f,
+        0.0f, 0.0f, 2.0f, 0.0f,
+        0.0f, 0.0f, 0.0f, 1.0f};
+    // Check values
+    checkValues(m->mData, expected, Matrix::MATRIX_SIZE);
+    delete m;
+}
+
+TEST(MatrixTest, matrixNewRotateTest) {
+    Matrix* m = Matrix::newRotate(45.0f, 0.0f, 1.0f, 0.0f);
+    ASSERT_TRUE(m != NULL);
+    float radians = 45.0f * (M_PI / 180.0f);
+    float sin = sinf(radians);
+    float cos = cosf(radians);
+    float expected[] = {
+        cos, 0.0f, -sin, 0.0f,
+        0.0f, 1.0f, 0.0f, 0.0f,
+        sin, 0.0f, cos, 0.0f,
+        0.0f, 0.0f, 0.0f, 1.0f};
+    // Check values
+    checkValues(m->mData, expected, Matrix::MATRIX_SIZE);
+    delete m;
+}
+
+TEST(MatrixTest, matrixMultiplyVectorTest) {
+    float in[] = {2, 4, 6, 8};
+    float out[4];
+    Matrix m;
+    float* d = m.mData;
+    // Fill with rubbish
+    for (int i = 0; i < Matrix::MATRIX_SIZE; i++) {
+        d[i] = i;
+    }
+    float expected[] = {40, 120, 200, 280};
+    Matrix::multiplyVector(out, m, in);
+    checkValues(out, expected, 4);
+}
diff --git a/suite/cts/deviceTests/simplecpu/Android.mk b/suite/cts/deviceTests/simplecpu/Android.mk
new file mode 100644
index 0000000..003b0f2
--- /dev/null
+++ b/suite/cts/deviceTests/simplecpu/Android.mk
@@ -0,0 +1,35 @@
+# Copyright (C) 2012 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)
+
+# don't include this package in any target
+LOCAL_MODULE_TAGS := optional
+
+LOCAL_JAVA_LIBRARIES := android.test.runner
+
+LOCAL_STATIC_JAVA_LIBRARIES := ctsdeviceutil ctstestrunner
+
+LOCAL_JNI_SHARED_LIBRARIES := libctscpu_jni
+
+LOCAL_SRC_FILES := $(call all-java-files-under, src)
+
+LOCAL_PACKAGE_NAME := CtsDeviceSimpleCpu
+
+LOCAL_SDK_VERSION := 16
+
+include $(BUILD_CTS_PACKAGE)
+
+include $(call all-makefiles-under,$(LOCAL_PATH))
diff --git a/suite/cts/deviceTests/simplecpu/AndroidManifest.xml b/suite/cts/deviceTests/simplecpu/AndroidManifest.xml
new file mode 100644
index 0000000..69e4ad2
--- /dev/null
+++ b/suite/cts/deviceTests/simplecpu/AndroidManifest.xml
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2012 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.
+-->
+
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+        package="com.android.cts.simplecpu">
+
+    <uses-permission android:name="android.permission.DISABLE_KEYGUARD" />
+    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
+
+    <application>
+        <uses-library android:name="android.test.runner" />
+    </application>
+    <instrumentation android:name="android.test.InstrumentationCtsTestRunner"
+            android:targetPackage="com.android.cts.simplecpu"
+            android:label="Very simple CPU benchmarking" />
+</manifest>
diff --git a/suite/cts/deviceTests/simplecpu/jni/Android.mk b/suite/cts/deviceTests/simplecpu/jni/Android.mk
new file mode 100644
index 0000000..946aa37
--- /dev/null
+++ b/suite/cts/deviceTests/simplecpu/jni/Android.mk
@@ -0,0 +1,31 @@
+# Copyright (C) 2012 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    := libctscpu_jni
+
+LOCAL_MODULE_TAGS := optional
+
+LOCAL_SRC_FILES := CpuNativeJni.cpp
+
+LOCAL_C_INCLUDES := $(JNI_H_INCLUDE)
+
+LOCAL_SHARED_LIBRARIES := libnativehelper
+
+LOCAL_SDK_VERSION := 14
+
+include $(BUILD_SHARED_LIBRARY)
diff --git a/suite/cts/deviceTests/simplecpu/jni/CpuNativeJni.cpp b/suite/cts/deviceTests/simplecpu/jni/CpuNativeJni.cpp
new file mode 100644
index 0000000..e0be7f3
--- /dev/null
+++ b/suite/cts/deviceTests/simplecpu/jni/CpuNativeJni.cpp
@@ -0,0 +1,270 @@
+/*
+ * Copyright (C) 2012 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.
+ */
+
+#include <jni.h>
+#include <stdlib.h>
+#include <string.h>
+#include <sys/time.h>
+
+/* Code from now to qsort_local all copied from bionic source.
+ * The code is duplicated here to remove dependency on optimized bionic
+ */
+static __inline char    *med3(char *, char *, char *, int (*)(const void *, const void *));
+static __inline void     swapfunc(char *, char *, int, int);
+
+#define min(a, b)   (a) < (b) ? a : b
+
+/*
+ * Qsort routine from Bentley & McIlroy's "Engineering a Sort Function".
+ */
+#define swapcode(TYPE, parmi, parmj, n) {       \
+    long i = (n) / sizeof (TYPE);           \
+    TYPE *pi = (TYPE *) (parmi);            \
+    TYPE *pj = (TYPE *) (parmj);            \
+    do {                        \
+        TYPE    t = *pi;            \
+        *pi++ = *pj;                \
+        *pj++ = t;              \
+        } while (--i > 0);              \
+}
+
+#define SWAPINIT(a, es) swaptype = ((char *)a - (char *)0) % sizeof(long) || \
+    es % sizeof(long) ? 2 : es == sizeof(long)? 0 : 1;
+
+static __inline void
+swapfunc(char *a, char *b, int n, int swaptype)
+{
+    if (swaptype <= 1)
+        swapcode(long, a, b, n)
+    else
+        swapcode(char, a, b, n)
+}
+
+#define swap(a, b)                  \
+    if (swaptype == 0) {                \
+        long t = *(long *)(a);          \
+        *(long *)(a) = *(long *)(b);        \
+        *(long *)(b) = t;           \
+    } else                      \
+        swapfunc(a, b, es, swaptype)
+
+#define vecswap(a, b, n)    if ((n) > 0) swapfunc(a, b, n, swaptype)
+
+static __inline char *
+med3(char *a, char *b, char *c, int (*cmp)(const void *, const void *))
+{
+    return cmp(a, b) < 0 ?
+           (cmp(b, c) < 0 ? b : (cmp(a, c) < 0 ? c : a ))
+              :(cmp(b, c) > 0 ? b : (cmp(a, c) < 0 ? a : c ));
+}
+
+void
+qsort_local(void *aa, size_t n, size_t es, int (*cmp)(const void *, const void *))
+{
+    char *pa, *pb, *pc, *pd, *pl, *pm, *pn;
+    int d, r, swaptype, swap_cnt;
+    char *a = (char*)aa;
+
+loop:   SWAPINIT(a, es);
+    swap_cnt = 0;
+    if (n < 7) {
+        for (pm = (char *)a + es; pm < (char *) a + n * es; pm += es)
+            for (pl = pm; pl > (char *) a && cmp(pl - es, pl) > 0;
+                 pl -= es)
+                swap(pl, pl - es);
+        return;
+    }
+    pm = (char *)a + (n / 2) * es;
+    if (n > 7) {
+        pl = (char *)a;
+        pn = (char *)a + (n - 1) * es;
+        if (n > 40) {
+            d = (n / 8) * es;
+            pl = med3(pl, pl + d, pl + 2 * d, cmp);
+            pm = med3(pm - d, pm, pm + d, cmp);
+            pn = med3(pn - 2 * d, pn - d, pn, cmp);
+        }
+        pm = med3(pl, pm, pn, cmp);
+    }
+    swap(a, pm);
+    pa = pb = (char *)a + es;
+
+    pc = pd = (char *)a + (n - 1) * es;
+    for (;;) {
+        while (pb <= pc && (r = cmp(pb, a)) <= 0) {
+            if (r == 0) {
+                swap_cnt = 1;
+                swap(pa, pb);
+                pa += es;
+            }
+            pb += es;
+        }
+        while (pb <= pc && (r = cmp(pc, a)) >= 0) {
+            if (r == 0) {
+                swap_cnt = 1;
+                swap(pc, pd);
+                pd -= es;
+            }
+            pc -= es;
+        }
+        if (pb > pc)
+            break;
+        swap(pb, pc);
+        swap_cnt = 1;
+        pb += es;
+        pc -= es;
+    }
+    if (swap_cnt == 0) {  /* Switch to insertion sort */
+        for (pm = (char *) a + es; pm < (char *) a + n * es; pm += es)
+            for (pl = pm; pl > (char *) a && cmp(pl - es, pl) > 0;
+                 pl -= es)
+                swap(pl, pl - es);
+        return;
+    }
+
+    pn = (char *)a + n * es;
+    r = min(pa - (char *)a, pb - pa);
+    vecswap(a, pb - r, r);
+    r = min(pd - pc, pn - pd - (int)es);
+    vecswap(pb, pn - r, r);
+    if ((r = pb - pa) > (int)es)
+        qsort_local(a, r / es, es, cmp);
+    if ((r = pd - pc) > (int)es) {
+        /* Iterate rather than recurse to save stack space */
+        a = pn - r;
+        n = r / es;
+        goto loop;
+    }
+    /* qsort(pn - r, r / es, es, cmp); */
+}
+
+/* code duplication ends here */
+
+/**
+ * Util for getting time stamp
+ */
+double currentTimeMillis()
+{
+    struct timeval tv;
+    gettimeofday(&tv, (struct timezone *) NULL);
+    return tv.tv_sec * 1000.0 + tv.tv_usec / 1000.0;
+}
+
+/**
+ * Initialize given array randomly for the given seed
+ */
+template <typename T> void randomInitArray(T* array, int len, unsigned int seed)
+{
+    srand(seed);
+    for (int i = 0; i < len; i++) {
+        array[i] = (T) rand();
+    }
+}
+
+/**
+ * comparison function for int, for qsort
+ */
+int cmpint(const void* p1, const void* p2)
+{
+    return *(int*)p1 - *(int*)p2;
+}
+
+extern "C" JNIEXPORT jdouble JNICALL Java_com_android_cts_simplecpu_CpuNative_runSort(JNIEnv* env,
+        jclass clazz, jint numberElements, jint repetition)
+{
+    int* data = new int[numberElements];
+    if (data == NULL) {
+        env->ThrowNew(env->FindClass("java/lang/OutOfMemoryError"), "No memory");
+        return -1;
+    }
+    double totalTime = 0;
+    for (int i = 0; i < repetition; i++) {
+        randomInitArray<int>(data, numberElements, 0);
+        double start = currentTimeMillis();
+        qsort_local(data, numberElements, sizeof(int), cmpint);
+        double end = currentTimeMillis();
+        totalTime += (end - start);
+    }
+    delete[] data;
+    return totalTime;
+}
+
+
+/**
+ * Do matrix multiplication, C = A x B with all matrices having dimension of n x n
+ * The implementation is not in the most efficient, but it is good enough for benchmarking purpose.
+ * @param n should be multiple of 8
+ */
+void doMatrixMultiplication(float* A, float* B, float* C, int n)
+{
+    // batch size
+    const int M = 8;
+    for (int i = 0; i < n; i++) {
+        for (int j = 0; j < n; j += M) {
+            float sum[M];
+            for (int k = 0; k < M; k++) {
+                sum[k] = 0;
+            }
+            // re-use the whole cache line for accessing B.
+            // otherwise, the whole line will be read and only one value will be used.
+
+            for (int k = 0; k < n; k++) {
+                float a = A[i * n + k];
+                sum[0] += a * B[k * n + j];
+                sum[1] += a * B[k * n + j + 1];
+                sum[2] += a * B[k * n + j + 2];
+                sum[3] += a * B[k * n + j + 3];
+                sum[4] += a * B[k * n + j + 4];
+                sum[5] += a * B[k * n + j + 5];
+                sum[6] += a * B[k * n + j + 6];
+                sum[7] += a * B[k * n + j + 7];
+            }
+            for (int k = 0; k < M; k++) {
+                C[i * n + j + k] = sum[k];
+            }
+        }
+    }
+}
+
+extern "C" JNIEXPORT jdouble JNICALL Java_com_android_cts_simplecpu_CpuNative_runMatrixMultiplication(
+        JNIEnv* env, jclass clazz, jint n, jint repetition)
+{
+    // C = A x B
+    float* A = new float[n * n];
+    float* B = new float[n * n];
+    float* C = new float[n * n];
+    if ((A == NULL) || (B == NULL) || (C == NULL)) {
+        delete[] A;
+        delete[] B;
+        delete[] C;
+        env->ThrowNew(env->FindClass("java/lang/OutOfMemoryError"), "No memory");
+        return -1;
+    }
+    double totalTime = 0;
+    for (int i = 0; i < repetition; i++) {
+        randomInitArray<float>(A, n * n, 0);
+        randomInitArray<float>(B, n * n, 1);
+        double start = currentTimeMillis();
+        doMatrixMultiplication(A, B, C, n);
+        double end = currentTimeMillis();
+        totalTime += (end - start);
+    }
+    delete[] A;
+    delete[] B;
+    delete[] C;
+    return totalTime;
+}
+
diff --git a/suite/cts/deviceTests/simplecpu/src/com/android/cts/simplecpu/CpuNative.java b/suite/cts/deviceTests/simplecpu/src/com/android/cts/simplecpu/CpuNative.java
new file mode 100644
index 0000000..8b48623
--- /dev/null
+++ b/suite/cts/deviceTests/simplecpu/src/com/android/cts/simplecpu/CpuNative.java
@@ -0,0 +1,40 @@
+/*
+ * Copyright (C) 2012 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.android.cts.simplecpu;
+
+public class CpuNative {
+    static {
+        System.loadLibrary("ctscpu_jni");
+    }
+    /**
+     * run qsort for given number of repetition
+     * with each having the size of bufferSize.
+     * @param numberElements
+     * @param repeatition
+     * @return time taken for computation, added for all repetition in ms
+     */
+    public static native double runSort(int numberElements, int repetition);
+
+    /**
+     * run matrix multiplication of (n x n) x (n x n)
+     *
+     * @param n dimension, should be multiple of 8
+     * @param repetition
+     * @return time taken for computation, added for all repetition in ms
+     */
+    public static native double runMatrixMultiplication(int n, int repetition);
+}
diff --git a/suite/cts/deviceTests/simplecpu/src/com/android/cts/simplecpu/SimpleCpuTest.java b/suite/cts/deviceTests/simplecpu/src/com/android/cts/simplecpu/SimpleCpuTest.java
new file mode 100644
index 0000000..7485abe
--- /dev/null
+++ b/suite/cts/deviceTests/simplecpu/src/com/android/cts/simplecpu/SimpleCpuTest.java
@@ -0,0 +1,134 @@
+/*
+ * Copyright (C) 2012 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.android.cts.simplecpu;
+
+import android.util.Log;
+
+import com.android.cts.util.ResultType;
+import com.android.cts.util.ResultUnit;
+import android.cts.util.CtsAndroidTestCase;
+import com.android.cts.util.Stat;
+import com.android.cts.util.TimeoutReq;
+
+/**
+ * Very simple CPU benchmarking to check the basic capability of CPU.
+ * Cases include
+ *   qsort
+ *   matrix multiplication (for floating point performance)
+ */
+public class SimpleCpuTest extends CtsAndroidTestCase {
+    private static final String TAG = "BandwidthTest";
+    private static final int KB = 1024;
+    private static final int MB = 1024 * 1024;
+    private static final int NUMBER_REPEAT = 20;
+    // reject data outside +/- this value * median
+    private static final double OUTLIER_THRESHOLD = 0.1;
+
+    @Override
+    protected void setUp() throws Exception {
+        super.setUp();
+        warmUpCpu();
+    }
+
+    public void testSort004KB() {
+        doTestSort(NUMBER_REPEAT, 4 * KB);
+    }
+
+    public void testSort128KB() {
+        doTestSort(NUMBER_REPEAT, 128 * KB);
+    }
+
+    public void testSort001MB() {
+        doTestSort(NUMBER_REPEAT, 1 * MB);
+    }
+
+    // will fit into L1
+    public void testMatrixMultiplication032() {
+        doMatrixMultiplication(NUMBER_REPEAT, 32);
+    }
+
+    // mostly fit into L2
+    public void testMatrixMultiplication128() {
+        doMatrixMultiplication(NUMBER_REPEAT, 128);
+    }
+
+    // may fit into L2
+    public void testMatrixMultiplication200() {
+        doMatrixMultiplication(NUMBER_REPEAT, 200);
+    }
+
+    public void testMatrixMultiplication400() {
+        doMatrixMultiplication(NUMBER_REPEAT, 400);
+    }
+
+    // will exceed L2
+    @TimeoutReq(minutes = 20)
+    public void testMatrixMultiplication600() {
+        doMatrixMultiplication(NUMBER_REPEAT, 600);
+    }
+
+    /**
+     * run some code to force full CPU freq.
+     */
+    private void warmUpCpu() {
+        CpuNative.runSort(1 * MB, 10);
+    }
+
+    /**
+     * qsort test
+     * @param numberRepeat
+     * @param arrayLength
+     */
+    private void doTestSort(int numberRepeat, int arrayLength) {
+        final int numberRepeatInEachCall = 10;
+        double[] result = new double[numberRepeat];
+        for (int i = 0; i < numberRepeat; i++) {
+            result[i] = CpuNative.runSort(arrayLength, numberRepeatInEachCall);
+        }
+        getReportLog().printArray("sorting time", result, ResultType.LOWER_BETTER,
+                ResultUnit.MS);
+        Stat.StatResult stat = Stat.getStatWithOutlierRejection(result, OUTLIER_THRESHOLD);
+        if (stat.mDataCount != result.length) {
+            Log.w(TAG, "rejecting " + (result.length - stat.mDataCount) + " outliers");
+        }
+        getReportLog().printSummary("sorting time", stat.mAverage, ResultType.LOWER_BETTER,
+                ResultUnit.MS);
+    }
+
+    /**
+     * Matrix multiplication test, nxn matrix multiplication
+     * @param numberRepeat
+     * @param n should be multiple of 8
+     */
+    private void doMatrixMultiplication(int numberRepeat, int n) {
+        assertTrue(n % 8 == 0);
+        final int numberRepeatInEachCall = 10;
+        double[] result = new double[numberRepeat];
+        for (int i = 0; i < numberRepeat; i++) {
+            result[i] = CpuNative.runMatrixMultiplication(n, numberRepeatInEachCall);
+        }
+        getReportLog().printArray("matrix mutiplication time", result, ResultType.LOWER_BETTER,
+                ResultUnit.MS);
+        Stat.StatResult stat = Stat.getStatWithOutlierRejection(result, OUTLIER_THRESHOLD);
+        if (stat.mDataCount != result.length) {
+            Log.w(TAG, "rejecting " + (result.length - stat.mDataCount) + " outliers");
+        }
+        getReportLog().printSummary("matrix mutiplication time", stat.mAverage,
+                ResultType.LOWER_BETTER, ResultUnit.MS);
+    }
+
+}
diff --git a/suite/cts/deviceTests/ui/Android.mk b/suite/cts/deviceTests/ui/Android.mk
new file mode 100644
index 0000000..17287b2
--- /dev/null
+++ b/suite/cts/deviceTests/ui/Android.mk
@@ -0,0 +1,35 @@
+# Copyright (C) 2012 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)
+
+# don't include this package in any target
+LOCAL_MODULE_TAGS := optional
+
+LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
+
+LOCAL_JAVA_LIBRARIES := android.test.runner
+
+LOCAL_STATIC_JAVA_LIBRARIES := ctsdeviceutil ctstestrunner
+
+LOCAL_SRC_FILES := $(call all-java-files-under, src)
+
+LOCAL_PACKAGE_NAME := CtsDeviceUi
+
+LOCAL_SDK_VERSION := 16
+
+include $(BUILD_CTS_PACKAGE)
+
+
diff --git a/suite/cts/deviceTests/ui/AndroidManifest.xml b/suite/cts/deviceTests/ui/AndroidManifest.xml
new file mode 100644
index 0000000..1be3eed
--- /dev/null
+++ b/suite/cts/deviceTests/ui/AndroidManifest.xml
@@ -0,0 +1,43 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2012 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.
+-->
+
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+    package="com.android.cts.ui" >
+
+    <uses-permission android:name="android.permission.DISABLE_KEYGUARD" />
+    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
+
+    <application>
+        <uses-library android:name="android.test.runner" />
+
+        <activity
+            android:name=".ScrollingActivity"
+            android:configChanges="keyboard|keyboardHidden|orientation|screenSize|uiMode" >
+            <intent-filter>
+                <action android:name="android.intent.action.MAIN" />
+
+                <category android:name="android.intent.category.LAUNCHER" />
+            </intent-filter>
+        </activity>
+    </application>
+
+    <instrumentation
+        android:name="android.test.InstrumentationCtsTestRunner"
+        android:label="UI Latency measurement"
+        android:targetPackage="com.android.cts.ui" />
+
+</manifest>
\ No newline at end of file
diff --git a/suite/cts/deviceTests/ui/src/com/android/cts/ui/ScrollingActivity.java b/suite/cts/deviceTests/ui/src/com/android/cts/ui/ScrollingActivity.java
new file mode 100644
index 0000000..2229e97
--- /dev/null
+++ b/suite/cts/deviceTests/ui/src/com/android/cts/ui/ScrollingActivity.java
@@ -0,0 +1,99 @@
+/*
+ * Copyright (C) 2012 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.android.cts.ui;
+
+import android.app.ListActivity;
+import android.os.Bundle;
+import android.widget.AbsListView;
+import android.widget.AbsListView.OnScrollListener;
+import android.widget.ArrayAdapter;
+import android.widget.ListView;
+
+import java.util.concurrent.CountDownLatch;
+import java.util.concurrent.TimeUnit;
+
+/**
+ * Activity for measuring scrolling time of long list.
+ */
+public class ScrollingActivity extends ListActivity implements OnScrollListener {
+    static final String TAG = "ScrollingActivity";
+    private static final String NUM_ELEMENTS_EXTRA = "num_elements";
+    private static final int NUM_ELEMENTS_DEFAULT = 10000;
+    private static final int SCROLL_TIME_IN_MS = 1;
+    private static final int WAIT_TIMEOUT_IN_SECS = 5 * 60;
+    private String[] mItems;
+    private CountDownLatch mLatchStop = null;
+    private int mTargetLoc;
+    private int mNumElements;
+
+    public void onCreate(Bundle icicle) {
+        super.onCreate(icicle);
+        mNumElements = getIntent().getIntExtra(NUM_ELEMENTS_EXTRA, NUM_ELEMENTS_DEFAULT);
+        mItems = new String[mNumElements];
+        for (int i = 0; i < mNumElements; i++) {
+            mItems[i] = Integer.toString(i);
+        }
+        setListAdapter(new ArrayAdapter<String>(this,
+                android.R.layout.simple_list_item_1, mItems));
+        ListView view = getListView();
+        view.setOnScrollListener(this);
+    }
+
+    public boolean scrollToTop() {
+        return doScroll(0);
+    }
+    public boolean scrollToBottom() {
+        return doScroll(mNumElements - 1);
+    }
+
+    private boolean doScroll(final int loc) {
+        mLatchStop = new CountDownLatch(1);
+        mTargetLoc = loc;
+        final ListView view = getListView();
+        runOnUiThread( new Runnable() {
+            @Override
+            public void run() {
+                view.smoothScrollToPositionFromTop(loc, 0, SCROLL_TIME_IN_MS);
+            }
+        });
+        boolean result = false;
+        try {
+            result = mLatchStop.await(WAIT_TIMEOUT_IN_SECS, TimeUnit.SECONDS);
+        } catch (InterruptedException e) {
+            // ignore
+        }
+        mLatchStop = null;
+        return result;
+    }
+
+    @Override
+    public void onScrollStateChanged(AbsListView view, int scrollState) {
+
+    }
+
+    @Override
+    public void onScroll(AbsListView view, int firstVisibleItem,
+            int visibleItemCount, int totalItemCount) {
+        //Log.i(TAG, "onScroll " + firstVisibleItem + " " + visibleItemCount);
+        if ((mTargetLoc >= firstVisibleItem) &&
+                (mTargetLoc <= (firstVisibleItem + visibleItemCount))) {
+            if (mLatchStop != null) {
+                mLatchStop.countDown();
+            }
+        }
+    }
+}
diff --git a/suite/cts/deviceTests/ui/src/com/android/cts/ui/ScrollingTest.java b/suite/cts/deviceTests/ui/src/com/android/cts/ui/ScrollingTest.java
new file mode 100644
index 0000000..b5b40e4
--- /dev/null
+++ b/suite/cts/deviceTests/ui/src/com/android/cts/ui/ScrollingTest.java
@@ -0,0 +1,75 @@
+/*
+ * Copyright (C) 2012 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.android.cts.ui;
+
+import com.android.cts.util.MeasureRun;
+import com.android.cts.util.MeasureTime;
+import com.android.cts.util.ResultType;
+import com.android.cts.util.ResultUnit;
+import android.cts.util.CtsActivityInstrumentationTestCase2;
+import com.android.cts.util.Stat;
+import com.android.cts.util.TimeoutReq;
+
+import java.io.IOException;
+
+public class ScrollingTest extends CtsActivityInstrumentationTestCase2<ScrollingActivity> {
+    private ScrollingActivity mActivity;
+
+    public ScrollingTest() {
+        super(ScrollingActivity.class);
+    }
+
+    @Override
+    protected void setUp() throws Exception {
+        super.setUp();
+        mActivity = getActivity();
+        getInstrumentation().waitForIdleSync();
+        try {
+            runTestOnUiThread(new Runnable() {
+                public void run() {
+                }
+            });
+        } catch (Throwable e) {
+            e.printStackTrace();
+            fail();
+        }
+    }
+
+    @Override
+    protected void tearDown() throws Exception {
+        mActivity = null;
+        super.tearDown();
+    }
+
+    @TimeoutReq(minutes = 30)
+    public void testFullScrolling() throws Exception {
+        final int NUMBER_REPEAT = 10;
+        final ScrollingActivity activity = mActivity;
+        double[] results = MeasureTime.measure(NUMBER_REPEAT, new MeasureRun() {
+
+            @Override
+            public void run(int i) throws IOException {
+                assertTrue(activity.scrollToBottom());
+                assertTrue(activity.scrollToTop());
+            }
+        });
+        getReportLog().printArray("scrolling time", results, ResultType.LOWER_BETTER,
+                ResultUnit.MS);
+        Stat.StatResult stat = Stat.getStat(results);
+        getReportLog().printSummary("scrolling time", stat.mAverage, ResultType.LOWER_BETTER,
+                ResultUnit.MS);
+    }
+}
diff --git a/suite/cts/deviceTests/videoperf/Android.mk b/suite/cts/deviceTests/videoperf/Android.mk
new file mode 100644
index 0000000..6ace48f
--- /dev/null
+++ b/suite/cts/deviceTests/videoperf/Android.mk
@@ -0,0 +1,32 @@
+# Copyright (C) 2013 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)
+
+# don't include this package in any target
+LOCAL_MODULE_TAGS := optional
+
+LOCAL_JAVA_LIBRARIES := android.test.runner
+
+LOCAL_STATIC_JAVA_LIBRARIES := ctsdeviceutil ctstestrunner
+
+LOCAL_SRC_FILES := $(call all-java-files-under, src)
+
+LOCAL_PACKAGE_NAME := CtsDeviceVideoPerf
+
+LOCAL_SDK_VERSION := 16
+
+include $(BUILD_CTS_PACKAGE)
+
diff --git a/suite/cts/deviceTests/videoperf/AndroidManifest.xml b/suite/cts/deviceTests/videoperf/AndroidManifest.xml
new file mode 100644
index 0000000..631141d
--- /dev/null
+++ b/suite/cts/deviceTests/videoperf/AndroidManifest.xml
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2013 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.
+-->
+
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+        package="com.android.cts.videoperf">
+
+    <uses-permission android:name="android.permission.DISABLE_KEYGUARD" />
+    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
+
+    <application>
+        <uses-library android:name="android.test.runner" />
+    </application>
+    <instrumentation android:name="android.test.InstrumentationCtsTestRunner"
+            android:targetPackage="com.android.cts.videoperf"
+            android:label="UI Latency measurement" />
+</manifest>
diff --git a/suite/cts/deviceTests/videoperf/src/com/android/cts/videoperf/CodecInfo.java b/suite/cts/deviceTests/videoperf/src/com/android/cts/videoperf/CodecInfo.java
new file mode 100644
index 0000000..b9edfa4
--- /dev/null
+++ b/suite/cts/deviceTests/videoperf/src/com/android/cts/videoperf/CodecInfo.java
@@ -0,0 +1,208 @@
+/*
+ * Copyright (C) 2013 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.android.cts.videoperf;
+
+import android.media.MediaCodecInfo;
+import android.media.MediaCodecInfo.CodecCapabilities;
+import android.media.MediaCodecInfo.CodecProfileLevel;
+import android.media.MediaCodecList;
+import android.util.Log;
+
+
+/**
+ * Utility class for getting codec information like bit rate, fps, and etc.
+ * Uses public member variables instead of methods as this code is only for video benchmarking.
+ */
+public class CodecInfo {
+    /** bit rate in bps */
+    public int mBitRate = 0;
+    /** Frame rate */
+    public int mFps = 0;
+    /** if codec is supporting YUV semiplanar format */
+    public boolean mSupportSemiPlanar = false;
+    /** if codec is supporting YUV planar format */
+    public boolean mSupportPlanar = false;
+
+    private static final String TAG = "CodecInfo";
+    private static final String VIDEO_AVC = "video/avc";
+    /**
+     * Check if given codec with given (w,h) is supported.
+     * @param mimeType codec type in mime format like "video/avc"
+     * @param w video width
+     * @param h video height
+     * @param isEncoder whether the codec is encoder or decoder
+     * @return null if the configuration is not supported.
+     */
+    public static CodecInfo getSupportedFormatInfo(String mimeType, int w, int h,
+            boolean isEncoder) {
+        CodecCapabilities cap = getCodecCapability(mimeType, isEncoder);
+        if (cap == null) { // not supported
+            return null;
+        }
+        CodecInfo info = new CodecInfo();
+        for (int color : cap.colorFormats) {
+            if (color == CodecCapabilities.COLOR_FormatYUV420SemiPlanar) {
+                info.mSupportSemiPlanar = true;
+            }
+            if (color == CodecCapabilities.COLOR_FormatYUV420Planar) {
+                info.mSupportPlanar = true;
+            }
+        }
+        printIntArray("supported colors", cap.colorFormats);
+        //  either YUV420 planar or semiplanar should be supported
+        if (!info.mSupportPlanar && !info.mSupportSemiPlanar) {
+            Log.i(TAG, "no supported color format");
+            return null;
+        }
+
+        if (mimeType.equals(VIDEO_AVC)) {
+            int highestLevel = 0;
+            for (CodecProfileLevel lvl : cap.profileLevels) {
+                if (lvl.level > highestLevel) {
+                    highestLevel = lvl.level;
+                }
+            }
+            Log.i(TAG, "Avc highest level " + Integer.toHexString(highestLevel));
+            int maxW = 0;
+            int maxH = 0;
+            int bitRate = 0;
+            int mbW = (w + 15) / 16; // size in macroblocks
+            int mbH = (h + 15) / 16;
+            int maxMacroblocksPerSecond = 0; // max decoding speed
+            switch(highestLevel) {
+            // Do not support Level 1 to 2.
+            case CodecProfileLevel.AVCLevel1:
+            case CodecProfileLevel.AVCLevel11:
+            case CodecProfileLevel.AVCLevel12:
+            case CodecProfileLevel.AVCLevel13:
+            case CodecProfileLevel.AVCLevel1b:
+            case CodecProfileLevel.AVCLevel2:
+                return null;
+            case CodecProfileLevel.AVCLevel21:
+                maxW = 352;
+                maxH = 576;
+                bitRate = 4000000;
+                maxMacroblocksPerSecond = 19800;
+                break;
+            case CodecProfileLevel.AVCLevel22:
+                maxW = 720;
+                maxH = 480;
+                bitRate = 4000000;
+                maxMacroblocksPerSecond = 20250;
+                break;
+            case CodecProfileLevel.AVCLevel3:
+                maxW = 720;
+                maxH = 480;
+                bitRate = 10000000;
+                maxMacroblocksPerSecond = 40500;
+                break;
+            case CodecProfileLevel.AVCLevel31:
+                maxW = 1280;
+                maxH = 720;
+                bitRate = 14000000;
+                maxMacroblocksPerSecond = 108000;
+                break;
+            case CodecProfileLevel.AVCLevel32:
+                maxW = 1280;
+                maxH = 720;
+                bitRate = 20000000;
+                maxMacroblocksPerSecond = 216000;
+                break;
+            case CodecProfileLevel.AVCLevel4:
+                maxW = 1920;
+                maxH = 1080;
+                bitRate = 20000000;
+                maxMacroblocksPerSecond = 245760;
+                break;
+            case CodecProfileLevel.AVCLevel41:
+                maxW = 1920;
+                maxH = 1080;
+                bitRate = 50000000;
+                maxMacroblocksPerSecond = 245760;
+                break;
+            case CodecProfileLevel.AVCLevel42:
+                maxW = 2048;
+                maxH = 1080;
+                bitRate = 50000000;
+                maxMacroblocksPerSecond = 522240;
+                break;
+            case CodecProfileLevel.AVCLevel5:
+                maxW = 3672;
+                maxH = 1536;
+                bitRate = 135000000;
+                maxMacroblocksPerSecond = 589824;
+                break;
+            case CodecProfileLevel.AVCLevel51:
+            default:
+                maxW = 4096;
+                maxH = 2304;
+                bitRate = 240000000;
+                maxMacroblocksPerSecond = 983040;
+                break;
+            }
+            if ((w > maxW) || (h > maxH)) {
+                Log.i(TAG, "Requested resolution (" + w + "," + h + ") exceeds (" +
+                        maxW + "," + maxH + ")");
+                return null;
+            }
+            info.mFps = maxMacroblocksPerSecond / mbH / mbW;
+            info.mBitRate = bitRate;
+            Log.i(TAG, "AVC Level " + Integer.toHexString(highestLevel) + " bit rate " + bitRate +
+                    " fps " + info.mFps);
+        }
+        return info;
+    }
+
+    /**
+     * Search for given codecName and returns CodecCapabilities if found
+     * @param codecName
+     * @param isEncoder true for encoder, false for decoder
+     * @return null if the codec is not supported
+     */
+    private static CodecCapabilities getCodecCapability(
+            String codecName, boolean isEncoder) {
+        int codecCount = MediaCodecList.getCodecCount();
+        for (int i = 0; i < codecCount; ++i) {
+            MediaCodecInfo info = MediaCodecList.getCodecInfoAt(i);
+            String[] types = info.getSupportedTypes();
+            if (isEncoder != info.isEncoder()) {
+                continue;
+            }
+            for (int j = 0; j < types.length; ++j) {
+                if (types[j].compareTo(codecName) == 0) {
+                    CodecCapabilities cap = info.getCapabilitiesForType(types[j]);
+                    Log.i(TAG, "Use codec " + info.getName());
+                    return cap;
+                }
+            }
+        }
+        return null;
+    }
+
+    // for debugging
+    private static void printIntArray(String msg, int[] data) {
+        StringBuilder builder = new StringBuilder();
+        builder.append(msg);
+        builder.append(":");
+        for (int e : data) {
+            builder.append(Integer.toHexString(e));
+            builder.append(",");
+        }
+        builder.deleteCharAt(builder.length() - 1);
+        Log.i(TAG, builder.toString());
+    }
+}
diff --git a/suite/cts/deviceTests/videoperf/src/com/android/cts/videoperf/VideoEncoderDecoderTest.java b/suite/cts/deviceTests/videoperf/src/com/android/cts/videoperf/VideoEncoderDecoderTest.java
new file mode 100644
index 0000000..8e2a5c9
--- /dev/null
+++ b/suite/cts/deviceTests/videoperf/src/com/android/cts/videoperf/VideoEncoderDecoderTest.java
@@ -0,0 +1,618 @@
+/*
+ * Copyright (C) 2013 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.android.cts.videoperf;
+
+import android.graphics.Point;
+import android.media.MediaCodec;
+import android.media.MediaCodecInfo.CodecCapabilities;
+import android.media.MediaFormat;
+import android.util.Log;
+
+import android.cts.util.CtsAndroidTestCase;
+import com.android.cts.util.ResultType;
+import com.android.cts.util.ResultUnit;
+import com.android.cts.util.Stat;
+
+import java.nio.ByteBuffer;
+import java.lang.System;
+import java.util.Random;
+import java.util.Vector;
+
+/**
+ * This tries to test video encoder / decoder performance by running encoding / decoding
+ * without displaying the raw data. To make things simpler, encoder is used to encode synthetic
+ * data and decoder is used to decode the encoded video. This approach does not work where
+ * there is only decoder. Performance index is total time taken for encoding and decoding
+ * the whole frames.
+ * To prevent sacrificing quality for faster encoding / decoding, randomly selected pixels are
+ * compared with the original image. As the pixel comparison can slow down the decoding process,
+ * only some randomly selected pixels are compared. As there can be only one performance index,
+ * error above certain threshold in pixel value will be treated as an error.
+ */
+public class VideoEncoderDecoderTest extends CtsAndroidTestCase {
+    private static final String TAG = "VideoEncoderDecoderTest";
+    // this wait time affects fps as too big value will work as a blocker if device fps
+    // is not very high.
+    private static final long VIDEO_CODEC_WAIT_TIME_US = 5000;
+    private static final boolean VERBOSE = false;
+    private static final String VIDEO_AVC = "video/avc";
+    private static final int TOTAL_FRAMES = 300;
+    private static final int NUMBER_OF_REPEAT = 10;
+    // i frame interval for encoder
+    private static final int KEY_I_FRAME_INTERVAL = 5;
+
+    private static final int Y_CLAMP_MIN = 16;
+    private static final int Y_CLAMP_MAX = 235;
+    private static final int YUV_PLANE_ADDITIONAL_LENGTH = 200;
+    private ByteBuffer mYBuffer;
+    private ByteBuffer mUVBuffer;
+    // if input raw data is semi-planar
+    private boolean mSrcSemiPlanar;
+    // if output raw data is semi-planar
+    private boolean mDstSemiPlanar;
+    private int mBufferWidth;
+    private int mBufferHeight;
+    private int mVideoWidth;
+    private int mVideoHeight;
+    private int mFrameRate;
+
+    private Vector<ByteBuffer> mEncodedOutputBuffer;
+    // check this many pixels per each decoded frame
+    // checking too many points decreases decoder frame rates a lot.
+    private static final int PIXEL_CHECK_PER_FRAME = 1000;
+    // RMS error in pixel values above this will be treated as error.
+    private static final double PIXEL_RMS_ERROR_MARGAIN = 20.0;
+    private Random mRandom;
+
+    @Override
+    protected void setUp() throws Exception {
+        mEncodedOutputBuffer = new Vector<ByteBuffer>(TOTAL_FRAMES * 2);
+        // Use time as a seed, hoping to prevent checking pixels in the same pattern
+        long now = System.currentTimeMillis();
+        mRandom = new Random(now);
+        super.setUp();
+    }
+
+    @Override
+    protected void tearDown() throws Exception {
+        mEncodedOutputBuffer.clear();
+        mEncodedOutputBuffer = null;
+        mYBuffer = null;
+        mUVBuffer = null;
+        mRandom = null;
+        super.tearDown();
+    }
+
+    public void testAvc0176x0144() throws Exception {
+        doTest(VIDEO_AVC, 176, 144, NUMBER_OF_REPEAT);
+    }
+
+    public void testAvc0352x0288() throws Exception {
+        doTest(VIDEO_AVC, 352, 288, NUMBER_OF_REPEAT);
+    }
+
+    public void testAvc0720x0480() throws Exception {
+        doTest(VIDEO_AVC, 720, 480, NUMBER_OF_REPEAT);
+    }
+
+    public void testAvc1280x0720() throws Exception {
+        doTest(VIDEO_AVC, 1280, 720, NUMBER_OF_REPEAT);
+    }
+
+    /**
+     * resolution intentionally set to 1072 not 1080
+     * as 1080 is not multiple of 16, and it requires additional setting like stride
+     * which is not specified in API documentation.
+     */
+    public void testAvc1920x1072() throws Exception {
+        doTest(VIDEO_AVC, 1920, 1072, NUMBER_OF_REPEAT);
+    }
+
+    /**
+     * Run encoding / decoding test for given mimeType of codec
+     * @param mimeType like video/avc
+     * @param w video width
+     * @param h video height
+     * @param numberRepeat how many times to repeat the encoding / decoding process
+     */
+    private void doTest(String mimeType, int w, int h, int numberRepeat) throws Exception {
+        CodecInfo infoEnc = CodecInfo.getSupportedFormatInfo(mimeType, w, h, true);
+        if (infoEnc == null) {
+            Log.i(TAG, "Codec " + mimeType + "with " + w + "," + h + " not supported");
+            return;
+        }
+        CodecInfo infoDec = CodecInfo.getSupportedFormatInfo(mimeType, w, h, false);
+        if (infoDec == null) {
+            Log.i(TAG, "Codec " + mimeType + "with " + w + "," + h + " not supported");
+            return;
+        }
+        mVideoWidth = w;
+        mVideoHeight = h;
+        initYUVPlane(w + YUV_PLANE_ADDITIONAL_LENGTH, h + YUV_PLANE_ADDITIONAL_LENGTH,
+                infoEnc.mSupportSemiPlanar, infoDec.mSupportSemiPlanar);
+        double[] encoderFpsResults = new double[numberRepeat];
+        double[] decoderFpsResults = new double[numberRepeat];
+        double[] totalFpsResults = new double[numberRepeat];
+        double[] decoderRmsErrorResults = new double[numberRepeat];
+        boolean success = true;
+        for (int i = 0; i < numberRepeat && success; i++) {
+            MediaFormat format = new MediaFormat();
+            format.setString(MediaFormat.KEY_MIME, mimeType);
+            format.setInteger(MediaFormat.KEY_BIT_RATE, infoEnc.mBitRate);
+            format.setInteger(MediaFormat.KEY_WIDTH, w);
+            format.setInteger(MediaFormat.KEY_HEIGHT, h);
+            format.setInteger(MediaFormat.KEY_COLOR_FORMAT,
+                    infoEnc.mSupportSemiPlanar ? CodecCapabilities.COLOR_FormatYUV420SemiPlanar :
+                        CodecCapabilities.COLOR_FormatYUV420Planar);
+            format.setInteger(MediaFormat.KEY_FRAME_RATE, infoEnc.mFps);
+            mFrameRate = infoEnc.mFps;
+            format.setInteger(MediaFormat.KEY_I_FRAME_INTERVAL, KEY_I_FRAME_INTERVAL);
+            double encodingTime = runEncoder(VIDEO_AVC, format, TOTAL_FRAMES);
+            // re-initialize format for decoder
+            format = new MediaFormat();
+            format.setString(MediaFormat.KEY_MIME, mimeType);
+            format.setInteger(MediaFormat.KEY_WIDTH, w);
+            format.setInteger(MediaFormat.KEY_HEIGHT, h);
+            format.setInteger(MediaFormat.KEY_COLOR_FORMAT,
+                    infoDec.mSupportSemiPlanar ? CodecCapabilities.COLOR_FormatYUV420SemiPlanar :
+                        CodecCapabilities.COLOR_FormatYUV420Planar);
+            double[] decoderResult = runDecoder(VIDEO_AVC, format);
+            if (decoderResult == null) {
+                success = false;
+            } else {
+                double decodingTime = decoderResult[0];
+                decoderRmsErrorResults[i] = decoderResult[1];
+                encoderFpsResults[i] = (double)TOTAL_FRAMES / encodingTime * 1000.0;
+                decoderFpsResults[i] = (double)TOTAL_FRAMES / decodingTime * 1000.0;
+                totalFpsResults[i] = (double)TOTAL_FRAMES / (encodingTime + decodingTime) * 1000.0;
+            }
+
+            // clear things for re-start
+            mEncodedOutputBuffer.clear();
+            // it will be good to clean everything to make every run the same.
+            System.gc();
+        }
+        getReportLog().printArray("encoder", encoderFpsResults, ResultType.HIGHER_BETTER,
+                ResultUnit.FPS);
+        getReportLog().printArray("rms error", decoderRmsErrorResults, ResultType.LOWER_BETTER,
+                ResultUnit.NONE);
+        getReportLog().printArray("decoder", decoderFpsResults, ResultType.HIGHER_BETTER,
+                ResultUnit.FPS);
+        getReportLog().printArray("encoder decoder", totalFpsResults, ResultType.HIGHER_BETTER,
+                ResultUnit.FPS);
+        getReportLog().printSummary("encoder decoder", Stat.getAverage(totalFpsResults),
+                ResultType.HIGHER_BETTER, ResultUnit.FPS);
+        // make sure that rms error is not too big.
+        for (int i = 0; i < numberRepeat; i++) {
+            assertTrue(decoderRmsErrorResults[i] < PIXEL_RMS_ERROR_MARGAIN);
+        }
+    }
+
+    /**
+     * run encoder benchmarking
+     * @param mimeType encoder type like video/avc
+     * @param format format of media to encode
+     * @param totalFrames total number of frames to encode
+     * @return time taken in ms to encode the frames. This does not include initialization time.
+     */
+    private double runEncoder(String mimeType, MediaFormat format, int totalFrames) {
+        MediaCodec codec = MediaCodec.createEncoderByType(mimeType);
+        try {
+            codec.configure(
+                    format,
+                    null /* surface */,
+                    null /* crypto */,
+                    MediaCodec.CONFIGURE_FLAG_ENCODE);
+        } catch (IllegalStateException e) {
+            Log.e(TAG, "codec '" + mimeType + "' failed configuration.");
+            assertTrue("codec '" + mimeType + "' failed configuration.", false);
+        }
+        codec.start();
+        ByteBuffer[] codecInputBuffers = codec.getInputBuffers();
+        ByteBuffer[] codecOutputBuffers = codec.getOutputBuffers();
+
+        int numBytesSubmitted = 0;
+        int numBytesDequeued = 0;
+        int inFramesCount = 0;
+        long start = System.currentTimeMillis();
+        while (true) {
+            int index;
+
+            if (inFramesCount < totalFrames) {
+                index = codec.dequeueInputBuffer(VIDEO_CODEC_WAIT_TIME_US /* timeoutUs */);
+                if (index != MediaCodec.INFO_TRY_AGAIN_LATER) {
+                    int size = queueInputBufferEncoder(
+                            codec, codecInputBuffers, index, inFramesCount,
+                            (inFramesCount == (totalFrames - 1)) ?
+                                    MediaCodec.BUFFER_FLAG_END_OF_STREAM : 0);
+                    inFramesCount++;
+                    numBytesSubmitted += size;
+                    if (VERBOSE) {
+                        Log.d(TAG, "queued " + size + " bytes of input data, frame " +
+                                (inFramesCount - 1));
+                    }
+
+                }
+            }
+            MediaCodec.BufferInfo info = new MediaCodec.BufferInfo();
+            index = codec.dequeueOutputBuffer(info, VIDEO_CODEC_WAIT_TIME_US /* timeoutUs */);
+            if (index == MediaCodec.INFO_TRY_AGAIN_LATER) {
+            } else if (index == MediaCodec.INFO_OUTPUT_FORMAT_CHANGED) {
+            } else if (index == MediaCodec.INFO_OUTPUT_BUFFERS_CHANGED) {
+                codecOutputBuffers = codec.getOutputBuffers();
+            } else if (index >= 0) {
+                dequeueOutputBufferEncoder(codec, codecOutputBuffers, index, info);
+                numBytesDequeued += info.size;
+                if ((info.flags & MediaCodec.BUFFER_FLAG_END_OF_STREAM) != 0) {
+                    if (VERBOSE) {
+                        Log.d(TAG, "dequeued output EOS.");
+                    }
+                    break;
+                }
+                if (VERBOSE) {
+                    Log.d(TAG, "dequeued " + info.size + " bytes of output data.");
+                }
+            }
+        }
+        long finish = System.currentTimeMillis();
+        if (VERBOSE) {
+            Log.d(TAG, "queued a total of " + numBytesSubmitted + "bytes, "
+                    + "dequeued " + numBytesDequeued + " bytes.");
+        }
+        codec.stop();
+        codec.release();
+        codec = null;
+        return (double)(finish - start);
+    }
+
+    /**
+     * Fills input buffer for encoder from YUV buffers.
+     * @return size of enqueued data.
+     */
+    private int queueInputBufferEncoder(
+            MediaCodec codec, ByteBuffer[] inputBuffers, int index, int frameCount, int flags) {
+        ByteBuffer buffer = inputBuffers[index];
+        buffer.clear();
+
+        Point origin = getOrigin(frameCount);
+        // Y color first
+        int srcOffsetY = origin.x + origin.y * mBufferWidth;
+        final byte[] yBuffer = mYBuffer.array();
+        for (int i = 0; i < mVideoHeight; i++) {
+            buffer.put(yBuffer, srcOffsetY, mVideoWidth);
+            srcOffsetY += mBufferWidth;
+        }
+        if (mSrcSemiPlanar) {
+            int srcOffsetU = origin.y / 2 * mBufferWidth + origin.x / 2 * 2;
+            final byte[] uvBuffer = mUVBuffer.array();
+            for (int i = 0; i < mVideoHeight / 2; i++) {
+                buffer.put(uvBuffer, srcOffsetU, mVideoWidth);
+                srcOffsetU += mBufferWidth;
+            }
+        } else {
+            int srcOffsetU = origin.y / 2 * mBufferWidth / 2 + origin.x / 2;
+            int srcOffsetV = srcOffsetU + mBufferWidth / 2 * mBufferHeight / 2;
+            final byte[] uvBuffer = mUVBuffer.array();
+            for (int i = 0; i < mVideoHeight /2; i++) { //U only
+                buffer.put(uvBuffer, srcOffsetU, mVideoWidth / 2);
+                srcOffsetU += mBufferWidth / 2;
+            }
+            for (int i = 0; i < mVideoHeight /2; i++) { //V only
+                buffer.put(uvBuffer, srcOffsetV, mVideoWidth / 2);
+                srcOffsetV += mBufferWidth / 2;
+            }
+        }
+        int size = mVideoHeight * mVideoWidth * 3 /2;
+        long ptsUsec = computePresentationTime(frameCount);
+
+        codec.queueInputBuffer(index, 0 /* offset */, size, ptsUsec /* timeUs */, flags);
+        if (VERBOSE && (frameCount == 0)) {
+            printByteArray("Y ", mYBuffer.array(), 0, 20);
+            printByteArray("UV ", mUVBuffer.array(), 0, 20);
+            printByteArray("UV ", mUVBuffer.array(), mBufferWidth * 60, 20);
+        }
+        return size;
+    }
+
+    /**
+     * Dequeue encoded data from output buffer and store for later usage.
+     */
+    private void dequeueOutputBufferEncoder(
+            MediaCodec codec, ByteBuffer[] outputBuffers,
+            int index, MediaCodec.BufferInfo info) {
+        ByteBuffer output = outputBuffers[index];
+        output.clear();
+        int l = info.size;
+        ByteBuffer copied = ByteBuffer.allocate(l);
+        output.get(copied.array(), 0, l);
+        mEncodedOutputBuffer.add(copied);
+        codec.releaseOutputBuffer(index, false /* render */);
+    }
+
+    /**
+     * run encoder benchmarking with encoded stream stored from encoding phase
+     * @param mimeType encoder type like video/avc
+     * @param format format of media to decode
+     * @return returns length-2 array with 0: time for decoding, 1 : rms error of pixels
+     */
+    private double[] runDecoder(String mimeType, MediaFormat format) {
+        MediaCodec codec = MediaCodec.createDecoderByType(mimeType);
+        codec.configure(format, null /* surface */, null /* crypto */, 0 /* flags */);
+        codec.start();
+        ByteBuffer[] codecInputBuffers = codec.getInputBuffers();
+        ByteBuffer[] codecOutputBuffers = codec.getOutputBuffers();
+
+        double totalErrorSquared = 0;
+
+        MediaCodec.BufferInfo info = new MediaCodec.BufferInfo();
+        boolean sawOutputEOS = false;
+        int inputLeft = mEncodedOutputBuffer.size();
+        int inputBufferCount = 0;
+        int outFrameCount = 0;
+        YUVValue expected = new YUVValue();
+        YUVValue decoded = new YUVValue();
+        long start = System.currentTimeMillis();
+        while (!sawOutputEOS) {
+            if (inputLeft > 0) {
+                int inputBufIndex = codec.dequeueInputBuffer(VIDEO_CODEC_WAIT_TIME_US);
+
+                if (inputBufIndex >= 0) {
+                    ByteBuffer dstBuf = codecInputBuffers[inputBufIndex];
+                    dstBuf.clear();
+                    ByteBuffer src = mEncodedOutputBuffer.get(inputBufferCount);
+                    int writeSize = src.capacity();
+                    dstBuf.put(src.array(), 0, writeSize);
+                    codec.queueInputBuffer(
+                            inputBufIndex,
+                            0 /* offset */,
+                            writeSize,
+                            0,
+                            (inputLeft == 1) ? MediaCodec.BUFFER_FLAG_END_OF_STREAM : 0);
+                    inputLeft --;
+                    inputBufferCount ++;
+                }
+            }
+
+            int res = codec.dequeueOutputBuffer(info, VIDEO_CODEC_WAIT_TIME_US);
+            if (res >= 0) {
+                int outputBufIndex = res;
+                ByteBuffer buf = codecOutputBuffers[outputBufIndex];
+                if (VERBOSE && (outFrameCount == 0)) {
+                    printByteBuffer("Y ", buf, 0, 20);
+                    printByteBuffer("UV ", buf, mVideoWidth * mVideoHeight, 20);
+                    printByteBuffer("UV ", buf, mVideoWidth * mVideoHeight + mVideoWidth * 60, 20);
+                }
+                Point origin = getOrigin(outFrameCount);
+                for (int i = 0; i < PIXEL_CHECK_PER_FRAME; i++) {
+                    int w = mRandom.nextInt(mVideoWidth);
+                    int h = mRandom.nextInt(mVideoHeight);
+                    getPixelValuesFromYUVBuffers(origin.x, origin.y, w, h, expected);
+                    getPixelValuesFromOutputBuffer(buf, w, h, decoded);
+                    if (VERBOSE) {
+                        Log.i(TAG, outFrameCount + "-" + i + "- th round expcted " + expected.mY +
+                                "," + expected.mU + "," + expected.mV + "  decoded " + decoded.mY +
+                                "," + decoded.mU + "," + decoded.mV);
+                    }
+                    totalErrorSquared += expected.calcErrorSquared(decoded);
+                }
+                codec.releaseOutputBuffer(outputBufIndex, false /* render */);
+                if ((info.flags & MediaCodec.BUFFER_FLAG_END_OF_STREAM) != 0) {
+                    Log.d(TAG, "saw output EOS.");
+                    sawOutputEOS = true;
+                }
+                outFrameCount++;
+            } else if (res == MediaCodec.INFO_OUTPUT_BUFFERS_CHANGED) {
+                codecOutputBuffers = codec.getOutputBuffers();
+                Log.d(TAG, "output buffers have changed.");
+            } else if (res == MediaCodec.INFO_OUTPUT_FORMAT_CHANGED) {
+                MediaFormat oformat = codec.getOutputFormat();
+                Log.d(TAG, "output format has changed to " + oformat);
+                int colorFormat = oformat.getInteger(MediaFormat.KEY_COLOR_FORMAT);
+                if (colorFormat == CodecCapabilities.COLOR_FormatYUV420SemiPlanar ) {
+                    mDstSemiPlanar = true;
+                } else if (colorFormat == CodecCapabilities.COLOR_FormatYUV420Planar ) {
+                    mDstSemiPlanar = false;
+                } else {
+                    Log.w(TAG, "output format changed to unsupported one " +
+                            Integer.toHexString(colorFormat));
+                    // give up and return as nothing can be done
+                    codec.release();
+                    return null;
+                }
+            }
+        }
+        long finish = System.currentTimeMillis();
+        codec.stop();
+        codec.release();
+        codec = null;
+        assertTrue(outFrameCount >= TOTAL_FRAMES);
+        // divide by 3 as sum is done for Y, U, V.
+        double errorRms = Math.sqrt(totalErrorSquared / PIXEL_CHECK_PER_FRAME / outFrameCount / 3);
+        double[] result = { (double) finish - start, errorRms };
+        return result;
+    }
+
+    /**
+     *  returns origin in the absolute frame for given frame count.
+     *  The video scene is moving by moving origin per each frame.
+     */
+    private Point getOrigin(int frameCount) {
+        if (frameCount < 100) {
+            return new Point(2 * frameCount, 0);
+        } else if (frameCount < 200) {
+            return new Point(200, (frameCount - 100) * 2);
+        } else {
+            if (frameCount > 300) { // for safety
+                frameCount = 300;
+            }
+            return new Point(600 - frameCount * 2, 600 - frameCount * 2);
+        }
+    }
+
+    /**
+     * initialize reference YUV plane
+     * @param w This should be YUV_PLANE_ADDITIONAL_LENGTH pixels bigger than video resolution
+     *          to allow movements
+     * @param h This should be YUV_PLANE_ADDITIONAL_LENGTH pixels bigger than video resolution
+     *          to allow movements
+     * @param semiPlanarEnc
+     * @param semiPlanarDec
+     */
+    private void initYUVPlane(int w, int h, boolean semiPlanarEnc, boolean semiPlanarDec) {
+        int bufferSizeY = w * h;
+        mYBuffer = ByteBuffer.allocate(bufferSizeY);
+        mUVBuffer = ByteBuffer.allocate(bufferSizeY / 2);
+        mSrcSemiPlanar = semiPlanarEnc;
+        mDstSemiPlanar = semiPlanarDec;
+        mBufferWidth = w;
+        mBufferHeight = h;
+        final byte[] yArray = mYBuffer.array();
+        final byte[] uvArray = mUVBuffer.array();
+        for (int i = 0; i < h; i++) {
+            for (int j = 0; j < w; j++) {
+                yArray[i * w + j]  = clampY((i + j) & 0xff);
+            }
+        }
+        if (semiPlanarEnc) {
+            for (int i = 0; i < h/2; i++) {
+                for (int j = 0; j < w/2; j++) {
+                    uvArray[i * w + 2 * j]  = (byte) (i & 0xff);
+                    uvArray[i * w + 2 * j + 1]  = (byte) (j & 0xff);
+                }
+            }
+        } else { // planar, U first, then V
+            int vOffset = bufferSizeY / 4;
+            for (int i = 0; i < h/2; i++) {
+                for (int j = 0; j < w/2; j++) {
+                    uvArray[i * w/2 + j]  = (byte) (i & 0xff);
+                    uvArray[i * w/2 + vOffset + j]  = (byte) (j & 0xff);
+                }
+            }
+        }
+    }
+
+    /**
+     * class to store pixel values in YUV
+     *
+     */
+    public class YUVValue {
+        public byte mY;
+        public byte mU;
+        public byte mV;
+        public YUVValue() {
+        }
+
+        public boolean equalTo(YUVValue other) {
+            return (mY == other.mY) && (mU == other.mU) && (mV == other.mV);
+        }
+
+        public double calcErrorSquared(YUVValue other) {
+            double yDelta = mY - other.mY;
+            double uDelta = mU - other.mU;
+            double vDelta = mV - other.mV;
+            return yDelta * yDelta + uDelta * uDelta + vDelta * vDelta;
+        }
+    }
+
+    /**
+     * Read YUV values from given position (x,y) for given origin (originX, originY)
+     * The whole data is already available from YBuffer and UVBuffer.
+     * @param result pass the result via this. This is for avoiding creating / destroying too many
+     *               instances
+     */
+    private void getPixelValuesFromYUVBuffers(int originX, int originY, int x, int y,
+            YUVValue result) {
+        result.mY = mYBuffer.get((originY + y) * mBufferWidth + (originX + x));
+        if (mSrcSemiPlanar) {
+            int index = (originY + y) / 2 * mBufferWidth + (originX + x) / 2 * 2;
+            //Log.d(TAG, "YUV " + originX + "," + originY + "," + x + "," + y + "," + index);
+            result.mU = mUVBuffer.get(index);
+            result.mV = mUVBuffer.get(index + 1);
+        } else {
+            int vOffset = mBufferWidth * mBufferHeight / 4;
+            int index = (originY + y) / 2 * mBufferWidth / 2 + (originX + x) / 2;
+            result.mU = mUVBuffer.get(index);
+            result.mV = mUVBuffer.get(vOffset + index);
+        }
+    }
+
+    /**
+     * Read YUV pixels from decoded output buffer for give (x, y) position
+     * Output buffer is composed of Y parts followed by U/V
+     * @param result pass the result via this. This is for avoiding creating / destroying too many
+     *               instances
+     */
+    private void getPixelValuesFromOutputBuffer(ByteBuffer buffer, int x, int y, YUVValue result) {
+        result.mY = buffer.get(y * mVideoWidth + x);
+        if (mDstSemiPlanar) {
+            int index = mVideoWidth * mVideoHeight + y / 2 * mVideoWidth + x / 2 * 2;
+            //Log.d(TAG, "Decoded " + x + "," + y + "," + index);
+            result.mU = buffer.get(index);
+            result.mV = buffer.get(index + 1);
+        } else {
+            int vOffset = mVideoWidth * mVideoHeight / 4;
+            int index = mVideoWidth * mVideoHeight + y / 2 * mVideoWidth / 2 + x / 2;
+            result.mU = buffer.get(index);
+            result.mV = buffer.get(index + vOffset);
+        }
+    }
+
+    /**
+     * Y cannot have full range. clamp it to prevent invalid value.
+     */
+    private byte clampY(int y) {
+        if (y < Y_CLAMP_MIN) {
+            y = Y_CLAMP_MIN;
+        } else if (y > Y_CLAMP_MAX) {
+            y = Y_CLAMP_MAX;
+        }
+        return (byte) (y & 0xff);
+    }
+
+    // for debugging
+    private void printByteArray(String msg, byte[] data, int offset, int len) {
+        StringBuilder builder = new StringBuilder();
+        builder.append(msg);
+        builder.append(":");
+        for (int i = offset; i < offset + len; i++) {
+            builder.append(Integer.toHexString(data[i]));
+            builder.append(",");
+        }
+        builder.deleteCharAt(builder.length() - 1);
+        Log.i(TAG, builder.toString());
+    }
+
+    // for debugging
+    private void printByteBuffer(String msg, ByteBuffer data, int offset, int len) {
+        StringBuilder builder = new StringBuilder();
+        builder.append(msg);
+        builder.append(":");
+        for (int i = offset; i < offset + len; i++) {
+            builder.append(Integer.toHexString(data.get(i)));
+            builder.append(",");
+        }
+        builder.deleteCharAt(builder.length() - 1);
+        Log.i(TAG, builder.toString());
+    }
+
+    /**
+     * Generates the presentation time for frame N, in microseconds.
+     */
+    private long computePresentationTime(int frameIndex) {
+        return 132 + frameIndex * 1000000L / mFrameRate;
+    }
+}
diff --git a/suite/cts/hostTests/Android.mk b/suite/cts/hostTests/Android.mk
new file mode 100644
index 0000000..c141484
--- /dev/null
+++ b/suite/cts/hostTests/Android.mk
@@ -0,0 +1,17 @@
+#
+# Copyright (C) 2012 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.
+#
+
+include $(call all-subdir-makefiles)
diff --git a/suite/cts/hostTests/jank/Android.mk b/suite/cts/hostTests/jank/Android.mk
new file mode 100644
index 0000000..a7d85de
--- /dev/null
+++ b/suite/cts/hostTests/jank/Android.mk
@@ -0,0 +1,43 @@
+# Copyright (C) 2013 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_TAGS := optional
+
+LOCAL_SRC_FILES := $(call all-java-files-under, src)
+
+LOCAL_MODULE := CtsHostJank
+
+LOCAL_JAVA_LIBRARIES := cts-tradefed tradefed-prebuilt ddmlib-prebuilt
+
+LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/Android.mk
+
+LOCAL_CTS_TEST_PACKAGE := com.android.cts.jank
+
+LOCAL_DEVICE_JAR_ := CtsDeviceJank
+cts_library_jar_ := $(CTS_TESTCASES_OUT)/$(LOCAL_DEVICE_JAR_).jar
+
+$(cts_library_jar_): $(call intermediates-dir-for,JAVA_LIBRARIES,$(LOCAL_DEVICE_JAR_))/javalib.jar | $(ACP)
+	$(hide) mkdir -p $(CTS_TESTCASES_OUT)
+	$(hide) $(ACP) -fp $(call intermediates-dir-for,JAVA_LIBRARIES,$(LOCAL_DEVICE_JAR_))/javalib.jar $@
+
+$(CTS_TESTCASES_OUT)/CtsHostJank.xml: $(cts_library_jar_)
+
+include $(BUILD_CTS_HOST_JAVA_LIBRARY)
+
+# Build the library using its own makefile
+include $(call all-makefiles-under,$(LOCAL_PATH))
diff --git a/suite/cts/hostTests/jank/app/Android.mk b/suite/cts/hostTests/jank/app/Android.mk
new file mode 100644
index 0000000..8f4fce6
--- /dev/null
+++ b/suite/cts/hostTests/jank/app/Android.mk
@@ -0,0 +1,28 @@
+# Copyright (C) 2013 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_SRC_FILES := $(call all-java-files-under, src)
+LOCAL_MODULE_TAGS := optional
+LOCAL_MODULE := CtsDeviceJank
+LOCAL_DEX_PREOPT := false
+
+LOCAL_JAVA_LIBRARIES := uiautomator.core
+
+LOCAL_STATIC_JAVA_LIBRARIES := com.android.uiautomator.platform.common
+
+include $(BUILD_JAVA_LIBRARY)
\ No newline at end of file
diff --git a/suite/cts/hostTests/jank/app/src/com/android/cts/jank/CtsJankTestBase.java b/suite/cts/hostTests/jank/app/src/com/android/cts/jank/CtsJankTestBase.java
new file mode 100644
index 0000000..6d5162b
--- /dev/null
+++ b/suite/cts/hostTests/jank/app/src/com/android/cts/jank/CtsJankTestBase.java
@@ -0,0 +1,97 @@
+/*
+ * Copyright (C) 2013 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.android.cts.jank;
+
+import android.os.Bundle;
+import android.util.Log;
+
+import com.android.uiautomator.platform.JankTestBase;
+
+import java.io.FileNotFoundException;
+import java.io.IOException;
+import java.util.Scanner;
+
+public class CtsJankTestBase extends JankTestBase {
+    private final static String TAG = CtsJankTestBase.class.getName();
+    protected final static String START_CMD = "am start -W -a android.intent.action.MAIN -n %s";
+    protected final static String STOP_CMD = "am force-stop %s";
+    protected final static String INTENT_STRING_EXTRA = " --es %s %s";
+    protected final static String INTENT_BOOLEAN_EXTRA = " --ez %s %b";
+    protected final static String INTENT_INTEGER_EXTRA = " --ei %s %d";
+    protected static long SLEEP_TIME = 2000; // 2 seconds
+    protected static int NUM_ITERATIONS = 5;
+    protected static int TRACE_TIME = 5;
+
+    @Override
+    protected String getPropertyString(Bundle params, String key)
+            throws FileNotFoundException, IOException {
+        if (key.equals("iteration")) {
+            return NUM_ITERATIONS + "";
+        }
+        if (key.equals("tracetime")) {
+            return TRACE_TIME + "";
+        }
+        return super.getPropertyString(params, key);
+    }
+
+    protected void runShellCommand(String command) throws Exception {
+        Process p = null;
+        Scanner out = null;
+        Scanner err = null;
+        try {
+            p = Runtime.getRuntime().exec(command);
+
+            StringBuilder outStr = new StringBuilder();
+            StringBuilder errStr = new StringBuilder();
+            out = new Scanner(p.getInputStream());
+            err = new Scanner(p.getErrorStream());
+            boolean read = true;
+            while (read) {
+                if (out.hasNextLine()) {
+                    outStr.append(out.nextLine());
+                    outStr.append("\n");
+                } else if (err.hasNextLine()) {
+                    errStr.append(err.nextLine());
+                    errStr.append("\n");
+                } else {
+                    read = false;
+                }
+            }
+            Log.i(TAG, command);
+            if (outStr.length() > 0) {
+                Log.i(TAG, outStr.toString());
+            }
+            if (errStr.length() > 0) {
+                Log.e(TAG, errStr.toString());
+            }
+        } finally {
+            if (p != null) {
+                int status = p.waitFor();
+                if (status != 0) {
+                    throw new RuntimeException(
+                            String.format("Run shell command: %s, status: %s", command, status));
+                }
+                p.destroy();
+                p = null;
+            }
+            if (out != null) {
+                out.close();
+            }
+            if (err != null) {
+                err.close();
+            }
+        }
+    }
+}
diff --git a/suite/cts/hostTests/jank/app/src/com/android/cts/jank/opengl/CtsDeviceJankOpenGl.java b/suite/cts/hostTests/jank/app/src/com/android/cts/jank/opengl/CtsDeviceJankOpenGl.java
new file mode 100755
index 0000000..5ba0613
--- /dev/null
+++ b/suite/cts/hostTests/jank/app/src/com/android/cts/jank/opengl/CtsDeviceJankOpenGl.java
@@ -0,0 +1,111 @@
+/*
+ * Copyright (C) 2013 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.android.cts.jank.opengl;
+
+import android.util.Log;
+
+import com.android.cts.jank.CtsJankTestBase;
+import com.android.uiautomator.platform.SurfaceFlingerHelper;
+
+public class CtsDeviceJankOpenGl extends CtsJankTestBase {
+    private final static String TAG = CtsDeviceJankOpenGl.class.getName();
+    private final static String PACKAGE = "com.android.cts.opengl";
+    private final static String COMPONENT =
+            PACKAGE + "/" + PACKAGE + ".primitive.GLPrimitiveActivity";
+    private static String APP_WINDOW_NAME = "SurfaceView";
+
+    /**
+     * Runs the full OpenGL ES 2.0 pipeline test.
+     */
+    public void testFullPipeline() throws Exception {
+        runBenchmark("FullPipeline");
+    }
+
+    /**
+     * Runs the pixel output test.
+     */
+    public void testPixelOutput() throws Exception {
+        runBenchmark("PixelOutput");
+    }
+
+    /**
+     * Runs the shader performance test.
+     */
+    public void testShaderPerf() throws Exception {
+        runBenchmark("ShaderPerf");
+    }
+
+    /**
+     * Runs the context switch overhead test.
+     */
+    public void testContextSwitch() throws Exception {
+        runBenchmark("ContextSwitch");
+    }
+
+    /**
+     * Runs the benchhmark for jank test.
+     */
+    public void runBenchmark(String benchmark) throws Exception {
+        // Start activity command
+        final StringBuilder sb = new StringBuilder();
+        sb.append(String.format(START_CMD, COMPONENT));
+        sb.append(String.format(INTENT_STRING_EXTRA, "benchmark_name", benchmark));
+        sb.append(String.format(INTENT_BOOLEAN_EXTRA, "offscreen", false));
+        sb.append(String.format(INTENT_INTEGER_EXTRA, "num_frames", 1000));
+        sb.append(String.format(INTENT_INTEGER_EXTRA, "num_iterations", 1));
+        sb.append(String.format(INTENT_INTEGER_EXTRA, "timeout", 10000));
+        final String startCommand = sb.toString();
+        final String stopCommand = String.format(STOP_CMD, PACKAGE);
+
+        Log.i(TAG, "Start command: " + startCommand);
+        Log.i(TAG, "Stop command: " + stopCommand);
+
+        setIteration(NUM_ITERATIONS);
+        for (int i = 0; i < NUM_ITERATIONS; i++) {
+            // Stop any existing instances
+            runShellCommand(stopCommand);
+            // Start activity
+            runShellCommand(startCommand);
+
+            // Wait for the activity to start
+            sleep(SLEEP_TIME / 2);
+
+            // Start systrace
+            startTrace(mTestCaseName, i);
+
+            // Clear SurfaceFlinger buffer
+            Log.i(TAG, "Clearing SurfaceFlinger buffer");
+            SurfaceFlingerHelper.clearBuffer(APP_WINDOW_NAME);
+
+            // This is where user interactions would go, in this case just sleep
+            sleep(SLEEP_TIME);
+
+            // Dump SurfaceFlinger buffer
+            Log.i(TAG, "Dumping SurfaceFlinger buffer");
+            boolean result = SurfaceFlingerHelper.dumpFrameLatency(APP_WINDOW_NAME, true);
+            assertTrue("SurfaceFlingerHelper could not get timestamps", result);
+
+            // Stop systrace
+            endTrace();
+
+            // Record results
+            recordResults(mTestCaseName, i);
+        }
+        // Save aggregated results
+        saveResults(mTestCaseName);
+        // Stop any remaining instances
+        runShellCommand(stopCommand);
+    }
+}
diff --git a/suite/cts/hostTests/jank/app/src/com/android/cts/jank/ui/CtsDeviceJankUi.java b/suite/cts/hostTests/jank/app/src/com/android/cts/jank/ui/CtsDeviceJankUi.java
new file mode 100644
index 0000000..ea1f685
--- /dev/null
+++ b/suite/cts/hostTests/jank/app/src/com/android/cts/jank/ui/CtsDeviceJankUi.java
@@ -0,0 +1,86 @@
+/*
+ * Copyright (C) 2013 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.android.cts.jank.ui;
+
+import android.util.Log;
+import android.widget.ListView;
+
+import com.android.cts.jank.CtsJankTestBase;
+import com.android.uiautomator.core.UiScrollable;
+import com.android.uiautomator.core.UiSelector;
+import com.android.uiautomator.platform.SurfaceFlingerHelper;
+
+public class CtsDeviceJankUi extends CtsJankTestBase {
+    private final static String TAG = CtsDeviceJankUi.class.getName();
+    private final static String PACKAGE = "com.android.cts.ui";
+    private final static String COMPONENT =
+            PACKAGE + "/" + PACKAGE + ".ScrollingActivity";
+    private final static int NUM_ELEMENTS = 1000;
+    private static String APP_WINDOW_NAME = COMPONENT;
+
+    // TODO(stuartscott): expand deviceTests/ui app to have a more complex UI
+    /**
+     * Runs the ScrollingActivity and measures jank during a scroll.
+     */
+    public void testScrolling() throws Exception {
+        // Start activity command
+        final StringBuilder sb = new StringBuilder();
+        sb.append(String.format(START_CMD, COMPONENT));
+        sb.append(String.format(INTENT_INTEGER_EXTRA, "num_elements", NUM_ELEMENTS));
+        final String startCommand = sb.toString();
+        final String stopCommand = String.format(STOP_CMD, PACKAGE);
+
+        Log.i(TAG, "Start command: " + startCommand);
+        Log.i(TAG, "Stop command: " + stopCommand);
+
+        setIteration(NUM_ITERATIONS);
+        for (int i = 0; i < NUM_ITERATIONS; i++) {
+            // Stop any existing instances
+            runShellCommand(stopCommand);
+            // Start activity
+            runShellCommand(startCommand);
+
+            // Wait for the activity to start
+            sleep(SLEEP_TIME / 2);
+
+            UiScrollable list = new UiScrollable(
+                    new UiSelector().className(ListView.class.getName()));
+
+            // Start systrace
+            startTrace(mTestCaseName, i);
+
+            // Clear SurfaceFlinger buffer
+            Log.i(TAG, "Clearing SurfaceFlinger buffer");
+            SurfaceFlingerHelper.clearBuffer(APP_WINDOW_NAME);
+
+            list.flingToEnd(2);
+
+            // Dump SurfaceFlinger buffer
+            Log.i(TAG, "Dumping SurfaceFlinger buffer");
+            boolean result = SurfaceFlingerHelper.dumpFrameLatency(APP_WINDOW_NAME, true);
+            assertTrue("SurfaceFlingerHelper could not get timestamps", result);
+
+            // Stop systrace
+            endTrace();
+
+            // Record results
+            recordResults(mTestCaseName, i);
+        }
+        // Save aggregated results
+        saveResults(mTestCaseName);
+        // Stop any remaining instances
+        runShellCommand(stopCommand);
+    }
+}
diff --git a/suite/cts/hostTests/jank/src/com/android/cts/jank/CtsHostJankTest.java b/suite/cts/hostTests/jank/src/com/android/cts/jank/CtsHostJankTest.java
new file mode 100644
index 0000000..f8c7ec1
--- /dev/null
+++ b/suite/cts/hostTests/jank/src/com/android/cts/jank/CtsHostJankTest.java
@@ -0,0 +1,134 @@
+/*
+ * Copyright (C) 2013 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.android.cts.jank;
+
+import com.android.cts.tradefed.build.CtsBuildHelper;
+import com.android.cts.tradefed.util.HostReportLog;
+import com.android.cts.util.ResultType;
+import com.android.cts.util.ResultUnit;
+import com.android.ddmlib.IShellOutputReceiver;
+import com.android.ddmlib.Log;
+import com.android.ddmlib.Log.LogLevel;
+import com.android.tradefed.build.IBuildInfo;
+import com.android.tradefed.device.ITestDevice;
+import com.android.tradefed.testtype.DeviceTestCase;
+import com.android.tradefed.testtype.IBuildReceiver;
+
+import java.io.File;
+import java.util.HashMap;
+import java.util.Scanner;
+
+public class CtsHostJankTest extends DeviceTestCase implements IBuildReceiver {
+
+    private static final String TAG = CtsHostJankTest.class.getSimpleName();
+    private static final String DEVICE_LOCATION = "/data/local/tmp/";
+    private static final String RUN_UI_AUTOMATOR_CMD = "uiautomator runtest %s -c %s";
+    private final String mHostTestClass;
+    private final String mDeviceTestClass;
+    private final String mJarName;
+    private final String mJarPath;
+    protected ITestDevice mDevice;
+    protected CtsBuildHelper mBuild;
+
+    public CtsHostJankTest(String jarName, String deviceTestClass, String hostTestClass) {
+        this.mHostTestClass = hostTestClass;
+        this.mDeviceTestClass = deviceTestClass;
+        this.mJarName = jarName;
+        this.mJarPath = DEVICE_LOCATION + jarName;
+    }
+
+    @Override
+    public void setBuild(IBuildInfo buildInfo) {
+        mBuild = CtsBuildHelper.createBuildHelper(buildInfo);
+    }
+
+    @Override
+    protected void setUp() throws Exception {
+        super.setUp();
+        mDevice = getDevice();
+        // Push jar to device.
+        File jarFile = mBuild.getTestApp(mJarName);
+        boolean result = mDevice.pushFile(jarFile, mJarPath);
+        assertTrue("Failed to push file to " + mJarPath, result);
+    }
+
+    @Override
+    protected void tearDown() throws Exception {
+        // Delete jar from device.
+        mDevice.executeShellCommand("rm " + mJarPath);
+        super.tearDown();
+    }
+
+    public void runUiAutomatorTest(String testName) throws Exception {
+        // Delete any existing result files
+        mDevice.executeShellCommand("rm -r " + DEVICE_LOCATION + "*.txt");
+
+        // Run ui automator test.
+        mDevice.executeShellCommand(
+                String.format(RUN_UI_AUTOMATOR_CMD, mJarName, mDeviceTestClass + "#" + testName),
+                new IShellOutputReceiver() {
+                    private StringBuilder sb = new StringBuilder();
+
+                    public void addOutput(byte[] data, int offset, int length) {
+                        byte[] raw = new byte[length];
+                        for (int i = 0; i < length; i++) {
+                            raw[i] = data[i + offset];
+                        }
+                        sb.append(new String(raw));
+                    }
+
+                    public void flush() {
+                        Log.logAndDisplay(LogLevel.INFO, TAG, sb.toString());
+                    }
+
+                    public boolean isCancelled() {
+                        return false;
+                    }
+                });
+
+        // Pull result file across
+        File result = mDevice.pullFile(DEVICE_LOCATION + "UiJankinessTestsOutput.txt");
+        assertNotNull("Couldn't get result file", result);
+        // Parse result file
+        Scanner in = new Scanner(result);
+        HashMap<String, Double> results = new HashMap<String, Double>(4);
+        while (in.hasNextLine()) {
+            String[] parts = in.nextLine().split(":");
+            if (parts.length == 2) {
+                results.put(parts[0], Double.parseDouble(parts[1]));
+            }
+        }
+        Log.logAndDisplay(LogLevel.INFO, TAG, "Results: " + results);
+        assertEquals("Could not parse the results file: ", 4, results.size());
+
+        double avgNumJanks = results.get("average number of jankiness");
+        double maxNumJanks = results.get("max number of jankiness");
+        double avgFrameRate = results.get("average frame rate");
+        double avgMaxAccFrames = results.get("average of max accumulated frames");
+
+        // Create and deliver the report.
+        HostReportLog report =
+                new HostReportLog(mDevice.getSerialNumber(), mHostTestClass + "#" + testName);
+        report.printValue(
+                "Average Frame Rate", avgFrameRate, ResultType.HIGHER_BETTER, ResultUnit.COUNT);
+        report.printValue("Average of Maximum Accumulated Frames", avgMaxAccFrames,
+                ResultType.LOWER_BETTER, ResultUnit.COUNT);
+        report.printValue(
+                "Maximum Number of Janks", maxNumJanks, ResultType.LOWER_BETTER, ResultUnit.COUNT);
+        report.printSummary(
+                "Average Number of Janks", avgNumJanks, ResultType.LOWER_BETTER, ResultUnit.SCORE);
+        report.deliverReportToHost();
+    }
+
+}
diff --git a/suite/cts/hostTests/jank/src/com/android/cts/jank/opengl/CtsHostJankOpenGl.java b/suite/cts/hostTests/jank/src/com/android/cts/jank/opengl/CtsHostJankOpenGl.java
new file mode 100644
index 0000000..ebd5bfa
--- /dev/null
+++ b/suite/cts/hostTests/jank/src/com/android/cts/jank/opengl/CtsHostJankOpenGl.java
@@ -0,0 +1,64 @@
+/*
+ * Copyright (C) 2013 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.android.cts.jank.opengl;
+
+import com.android.cts.jank.CtsHostJankTest;
+
+import java.io.File;
+
+public class CtsHostJankOpenGl extends CtsHostJankTest {
+
+    private static final String APK_PACKAGE = "com.android.cts";
+    private static final String APK = "CtsDeviceOpenGl.apk";
+    private static final String PACKAGE = "com.android.cts.jank.opengl";
+    private static final String HOST_CLASS = CtsHostJankOpenGl.class.getName();
+    private static final String DEVICE_CLASS = PACKAGE + ".CtsDeviceJankOpenGl";
+    private static final String JAR_NAME = "CtsDeviceJank.jar";
+
+    public CtsHostJankOpenGl() {
+        super(JAR_NAME, DEVICE_CLASS, HOST_CLASS);
+    }
+
+    @Override
+    protected void setUp() throws Exception {
+        super.setUp();
+        // Install the app.
+        mDevice.uninstallPackage(APK_PACKAGE);
+        File app = mBuild.getTestApp(APK);
+        mDevice.installPackage(app, false);
+    }
+
+    @Override
+    protected void tearDown() throws Exception {
+        // Uninstall the app.
+        mDevice.uninstallPackage(APK_PACKAGE);
+        super.tearDown();
+    }
+
+    public void testFullPipeline() throws Exception {
+        runUiAutomatorTest("testFullPipeline");
+    }
+
+    public void testPixelOutput() throws Exception {
+        runUiAutomatorTest("testPixelOutput");
+    }
+
+    public void testShaderPerf() throws Exception {
+        runUiAutomatorTest("testShaderPerf");
+    }
+
+    public void testContextSwitch() throws Exception {
+        runUiAutomatorTest("testContextSwitch");
+    }
+}
diff --git a/suite/cts/hostTests/jank/src/com/android/cts/jank/ui/CtsHostJankUi.java b/suite/cts/hostTests/jank/src/com/android/cts/jank/ui/CtsHostJankUi.java
new file mode 100644
index 0000000..3027899
--- /dev/null
+++ b/suite/cts/hostTests/jank/src/com/android/cts/jank/ui/CtsHostJankUi.java
@@ -0,0 +1,52 @@
+/*
+ * Copyright (C) 2013 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.android.cts.jank.ui;
+
+import com.android.cts.jank.CtsHostJankTest;
+
+import java.io.File;
+
+public class CtsHostJankUi extends CtsHostJankTest {
+
+    private static final String APK_PACKAGE = "com.android.cts";
+    private static final String APK = "CtsDeviceUi.apk";
+    private static final String PACKAGE = "com.android.cts.jank.ui";
+    private static final String HOST_CLASS = CtsHostJankUi.class.getName();
+    private static final String DEVICE_CLASS = PACKAGE + ".CtsDeviceJankUi";
+    private static final String JAR_NAME = "CtsDeviceJank.jar";
+
+    public CtsHostJankUi() {
+        super(JAR_NAME, DEVICE_CLASS, HOST_CLASS);
+    }
+
+    @Override
+    protected void setUp() throws Exception {
+        super.setUp();
+        // Install the app.
+        mDevice.uninstallPackage(APK_PACKAGE);
+        File app = mBuild.getTestApp(APK);
+        mDevice.installPackage(app, false);
+    }
+
+    @Override
+    protected void tearDown() throws Exception {
+        // Uninstall the app.
+        mDevice.uninstallPackage(APK_PACKAGE);
+        super.tearDown();
+    }
+
+    public void testScrolling() throws Exception {
+        runUiAutomatorTest("testScrolling");
+    }
+}
diff --git a/suite/cts/hostTests/uihost/Android.mk b/suite/cts/hostTests/uihost/Android.mk
new file mode 100644
index 0000000..dd51b6b
--- /dev/null
+++ b/suite/cts/hostTests/uihost/Android.mk
@@ -0,0 +1,33 @@
+# Copyright (C) 2012 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_SRC_FILES := $(call all-java-files-under, src)
+
+LOCAL_MODULE_TAGS := optional
+
+LOCAL_MODULE := CtsHostUi
+
+LOCAL_JAVA_LIBRARIES := cts-tradefed tradefed-prebuilt ddmlib-prebuilt junit
+
+LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/Android.mk
+
+LOCAL_CTS_TEST_PACKAGE := com.android.cts.uihost
+
+include $(BUILD_CTS_HOST_JAVA_LIBRARY)
+
+include $(call all-makefiles-under,$(LOCAL_PATH))
diff --git a/suite/cts/hostTests/uihost/appA/Android.mk b/suite/cts/hostTests/uihost/appA/Android.mk
new file mode 100644
index 0000000..48d9009
--- /dev/null
+++ b/suite/cts/hostTests/uihost/appA/Android.mk
@@ -0,0 +1,35 @@
+# Copyright (C) 2012 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)
+
+# don't include this package in any target
+LOCAL_MODULE_TAGS := optional
+
+LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
+
+LOCAL_JAVA_LIBRARIES := android.test.runner
+
+LOCAL_STATIC_JAVA_LIBRARIES := ctsdeviceutil ctstestrunner
+
+LOCAL_SRC_FILES := $(call all-java-files-under, src)
+
+LOCAL_PACKAGE_NAME := CtsDeviceTaskswitchingAppA
+
+LOCAL_SDK_VERSION := 16
+
+include $(BUILD_CTS_PACKAGE)
+
+
diff --git a/suite/cts/hostTests/uihost/appA/AndroidManifest.xml b/suite/cts/hostTests/uihost/appA/AndroidManifest.xml
new file mode 100644
index 0000000..b97325c
--- /dev/null
+++ b/suite/cts/hostTests/uihost/appA/AndroidManifest.xml
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2012 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.
+-->
+
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+    package="com.android.cts.taskswitching.appa" >
+
+    <uses-permission android:name="android.permission.DISABLE_KEYGUARD" />
+
+    <application>
+        <activity
+            android:name=".AppAActivity"
+            android:configChanges="keyboard|keyboardHidden|orientation|screenSize|uiMode"
+            android:screenOrientation="portrait" >
+            <intent-filter>
+                <action android:name="android.intent.action.MAIN" />
+
+                <category android:name="android.intent.category.LAUNCHER" />
+            </intent-filter>
+        </activity>
+    </application>
+
+</manifest>
\ No newline at end of file
diff --git a/suite/cts/hostTests/uihost/appA/src/com/android/cts/taskswitching/appa/AppAActivity.java b/suite/cts/hostTests/uihost/appA/src/com/android/cts/taskswitching/appa/AppAActivity.java
new file mode 100644
index 0000000..a4207a0
--- /dev/null
+++ b/suite/cts/hostTests/uihost/appA/src/com/android/cts/taskswitching/appa/AppAActivity.java
@@ -0,0 +1,64 @@
+/*
+ * Copyright (C) 2012 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.android.cts.taskswitching.appa;
+
+
+import android.app.ListActivity;
+import android.content.Intent;
+
+import android.os.Bundle;
+import android.os.Handler;
+import android.view.WindowManager;
+import android.widget.ArrayAdapter;
+import android.widget.ListView;
+
+/**
+ * Simple activity to notify completion via broadcast after onResume.
+ * This is for measuring taskswitching time between two apps.
+ */
+public class AppAActivity extends ListActivity {
+    static final String TAG = "AppAActivity";
+    private static final int NUMBER_ELEMENTS = 1000;
+    private static final String TASKSWITCHING_INTENT = "com.android.cts.taskswitching.appa";
+    private Handler mHandler;
+
+    private String[] mItems = new String[NUMBER_ELEMENTS];
+
+    public void onCreate(Bundle icicle) {
+        super.onCreate(icicle);
+        getWindow().addFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED);
+        for (int i = 0; i < NUMBER_ELEMENTS; i++) {
+            mItems[i] = "A" + Integer.toString(i);
+        }
+        setListAdapter(new ArrayAdapter<String>(this,
+                android.R.layout.simple_list_item_1, mItems));
+        ListView view = getListView();
+        mHandler = new Handler();
+    }
+
+    public void onResume() {
+        super.onResume();
+        mHandler.post(new Runnable() {
+
+            @Override
+            public void run() {
+                Intent intent = new Intent(TASKSWITCHING_INTENT);
+                sendBroadcast(intent);
+            }
+        });
+    }
+}
diff --git a/suite/cts/hostTests/uihost/appB/Android.mk b/suite/cts/hostTests/uihost/appB/Android.mk
new file mode 100644
index 0000000..812637e
--- /dev/null
+++ b/suite/cts/hostTests/uihost/appB/Android.mk
@@ -0,0 +1,35 @@
+# Copyright (C) 2012 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)
+
+# don't include this package in any target
+LOCAL_MODULE_TAGS := optional
+
+LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
+
+LOCAL_JAVA_LIBRARIES := android.test.runner
+
+LOCAL_STATIC_JAVA_LIBRARIES := ctsdeviceutil ctstestrunner
+
+LOCAL_SRC_FILES := $(call all-java-files-under, src)
+
+LOCAL_PACKAGE_NAME := CtsDeviceTaskswitchingAppB
+
+LOCAL_SDK_VERSION := 16
+
+include $(BUILD_CTS_PACKAGE)
+
+
diff --git a/suite/cts/hostTests/uihost/appB/AndroidManifest.xml b/suite/cts/hostTests/uihost/appB/AndroidManifest.xml
new file mode 100644
index 0000000..b96afe5
--- /dev/null
+++ b/suite/cts/hostTests/uihost/appB/AndroidManifest.xml
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2012 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.
+-->
+
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+        package="com.android.cts.taskswitching.appb">
+
+    <uses-permission android:name="android.permission.DISABLE_KEYGUARD" />
+
+    <application>
+        <activity
+            android:name=".AppBActivity"
+            android:configChanges="keyboard|keyboardHidden|orientation|screenSize|uiMode"
+            android:screenOrientation="portrait" >
+
+            <intent-filter>
+                <action android:name="android.intent.action.MAIN" />
+                <category android:name="android.intent.category.LAUNCHER"/>
+            </intent-filter>
+        </activity>
+    </application>
+</manifest>
diff --git a/suite/cts/hostTests/uihost/appB/src/com/android/cts/taskswitching/appb/AppBActivity.java b/suite/cts/hostTests/uihost/appB/src/com/android/cts/taskswitching/appb/AppBActivity.java
new file mode 100644
index 0000000..4df5e98
--- /dev/null
+++ b/suite/cts/hostTests/uihost/appB/src/com/android/cts/taskswitching/appb/AppBActivity.java
@@ -0,0 +1,64 @@
+/*
+ * Copyright (C) 2012 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.android.cts.taskswitching.appb;
+
+import android.app.ListActivity;
+import android.content.Intent;
+import android.os.Bundle;
+import android.os.Handler;
+import android.view.WindowManager;
+import android.widget.ArrayAdapter;
+import android.widget.ListView;
+
+/**
+ * Simple activity to notify completion via broadcast after onResume.
+ * This is for measuring taskswitching time between two apps.
+ */
+public class AppBActivity extends ListActivity {
+    static final String TAG = "AppBActivity";
+    private static final int NUMBER_ELEMENTS = 1000;
+    private static final String TASKSWITCHING_INTENT = "com.android.cts.taskswitching.appb";
+    private Handler mHandler;
+
+    private String[] mItems = new String[NUMBER_ELEMENTS];
+
+    public void onCreate(Bundle icicle)
+    {
+        super.onCreate(icicle);
+        getWindow().addFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED);
+        for (int i = 0; i < NUMBER_ELEMENTS; i++) {
+            mItems[i] = "B" + Integer.toString(i);
+        }
+        setListAdapter(new ArrayAdapter<String>(this,
+                android.R.layout.simple_list_item_1, mItems));
+        ListView view = getListView();
+        mHandler = new Handler();
+    }
+
+    public void onResume()
+    {
+        super.onResume();
+        mHandler.post(new Runnable() {
+
+            @Override
+            public void run() {
+                Intent intent = new Intent(TASKSWITCHING_INTENT);
+                sendBroadcast(intent);
+            }
+        });
+    }
+}
diff --git a/suite/cts/hostTests/uihost/control/Android.mk b/suite/cts/hostTests/uihost/control/Android.mk
new file mode 100644
index 0000000..565e2c0
--- /dev/null
+++ b/suite/cts/hostTests/uihost/control/Android.mk
@@ -0,0 +1,33 @@
+# Copyright (C) 2012 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)
+
+# don't include this package in any target
+LOCAL_MODULE_TAGS := optional
+
+LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
+
+LOCAL_JAVA_LIBRARIES := android.test.runner
+
+LOCAL_STATIC_JAVA_LIBRARIES := ctsdeviceutil ctstestrunner
+
+LOCAL_SRC_FILES := $(call all-java-files-under, src)
+
+LOCAL_PACKAGE_NAME := CtsDeviceTaskswitchingControl
+
+LOCAL_SDK_VERSION := 16
+
+include $(BUILD_CTS_PACKAGE)
diff --git a/suite/cts/hostTests/uihost/control/AndroidManifest.xml b/suite/cts/hostTests/uihost/control/AndroidManifest.xml
new file mode 100644
index 0000000..9901d50
--- /dev/null
+++ b/suite/cts/hostTests/uihost/control/AndroidManifest.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2012 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.
+-->
+
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+        package="com.android.cts.taskswitching.control">
+
+    <uses-permission android:name="android.permission.DISABLE_KEYGUARD" />
+
+    <application>
+        <uses-library android:name="android.test.runner" />
+    </application>
+    <instrumentation
+        android:targetPackage="com.android.cts.taskswitching.control"
+        android:name="android.test.InstrumentationCtsTestRunner" />
+</manifest>
diff --git a/suite/cts/hostTests/uihost/control/src/com/android/cts/taskswitching/control/TaskswitchingDeviceTest.java b/suite/cts/hostTests/uihost/control/src/com/android/cts/taskswitching/control/TaskswitchingDeviceTest.java
new file mode 100644
index 0000000..bdb3132
--- /dev/null
+++ b/suite/cts/hostTests/uihost/control/src/com/android/cts/taskswitching/control/TaskswitchingDeviceTest.java
@@ -0,0 +1,113 @@
+/*
+ * Copyright (C) 2012 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.android.cts.taskswitching.control;
+
+import java.util.concurrent.Semaphore;
+import java.util.concurrent.TimeUnit;
+
+import android.content.BroadcastReceiver;
+import android.content.ComponentName;
+import android.content.Context;
+import android.content.Intent;
+import android.content.IntentFilter;
+
+import com.android.cts.util.MeasureRun;
+import com.android.cts.util.MeasureTime;
+import com.android.cts.util.ResultType;
+import com.android.cts.util.ResultUnit;
+import android.cts.util.CtsAndroidTestCase;
+import com.android.cts.util.Stat;
+
+
+/**
+ * Device test which actually launches two apps sequentially and
+ * measure time for switching.
+ * Completion of launch is notified via broadcast.
+ */
+public class TaskswitchingDeviceTest extends CtsAndroidTestCase {
+    private static final String PKG_A = "com.android.cts.taskswitching.appa";
+    private static final String PKG_B = "com.android.cts.taskswitching.appb";
+    private static final String ACTIVITY_A = "AppAActivity";
+    private static final String ACTIVITY_B = "AppBActivity";
+    private static final long TASK_SWITCHING_WAIT_TIME = 5;
+    private final AppBroadcastReceiver mReceiverA = new AppBroadcastReceiver();
+    private final AppBroadcastReceiver mReceiverB = new AppBroadcastReceiver();
+
+    @Override
+    protected void setUp() throws Exception {
+        super.setUp();
+        startActivity(PKG_A, ACTIVITY_A);
+        startActivity(PKG_B, ACTIVITY_B);
+        IntentFilter filterA = new IntentFilter();
+        filterA.addAction(PKG_A);
+        IntentFilter filterB = new IntentFilter();
+        filterB.addAction(PKG_B);
+        getContext().registerReceiver(mReceiverA, filterA);
+        getContext().registerReceiver(mReceiverB, filterB);
+    }
+
+    @Override
+    protected void tearDown() throws Exception {
+        getContext().unregisterReceiver(mReceiverA);
+        getContext().unregisterReceiver(mReceiverB);
+        super.tearDown();
+    }
+
+    public void testMeasureTaskSwitching() throws Exception {
+        final int NUMBER_REPEAT = 10;
+        final int SWITCHING_PER_ONE_TRY = 10;
+
+        double[] results = MeasureTime.measure(NUMBER_REPEAT, new MeasureRun() {
+
+            @Override
+            public void run(int i) throws Exception {
+                for (int j = 0; j < SWITCHING_PER_ONE_TRY; j++) {
+                    startActivity(PKG_A, ACTIVITY_A);
+                    assertTrue(mReceiverA.waitForBroadcast(TASK_SWITCHING_WAIT_TIME));
+                    startActivity(PKG_B, ACTIVITY_B);
+                    assertTrue(mReceiverB.waitForBroadcast(TASK_SWITCHING_WAIT_TIME));
+                }
+            }
+        });
+        getReportLog().printArray("taskswitching time", results, ResultType.LOWER_BETTER,
+                ResultUnit.MS);
+        Stat.StatResult stat = Stat.getStat(results);
+        getReportLog().printSummary("taskswitching time", stat.mAverage,
+                ResultType.LOWER_BETTER, ResultUnit.MS);
+    }
+
+    private void startActivity(String packageName, String activityName) {
+        Context context = getContext();
+        Intent intent = new Intent();
+        intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
+        intent.addCategory(Intent.CATEGORY_LAUNCHER);
+        intent.setComponent(new ComponentName(packageName, packageName + "." + activityName));
+        context.startActivity(intent);
+    }
+
+    class AppBroadcastReceiver extends BroadcastReceiver {
+        private final Semaphore mSemaphore = new Semaphore(0);
+
+        public boolean waitForBroadcast(long timeoutInSec) throws InterruptedException {
+            return mSemaphore.tryAcquire(timeoutInSec, TimeUnit.SECONDS);
+        }
+        @Override
+        public void onReceive(Context context, Intent intent) {
+            mSemaphore.release();
+        }
+    }
+}
diff --git a/suite/cts/hostTests/uihost/src/com/android/cts/uihost/InstallTimeTest.java b/suite/cts/hostTests/uihost/src/com/android/cts/uihost/InstallTimeTest.java
new file mode 100644
index 0000000..63c2d84
--- /dev/null
+++ b/suite/cts/hostTests/uihost/src/com/android/cts/uihost/InstallTimeTest.java
@@ -0,0 +1,94 @@
+/*
+ * Copyright (C) 2012 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.android.cts.uihost;
+
+import com.android.cts.tradefed.build.CtsBuildHelper;
+import com.android.cts.tradefed.util.HostReportLog;
+import com.android.cts.util.MeasureRun;
+import com.android.cts.util.MeasureTime;
+import com.android.cts.util.ResultType;
+import com.android.cts.util.ResultUnit;
+import com.android.cts.util.ReportLog;
+import com.android.cts.util.Stat;
+import com.android.ddmlib.Log;
+import com.android.tradefed.build.IBuildInfo;
+import com.android.tradefed.device.ITestDevice;
+import com.android.tradefed.testtype.DeviceTestCase;
+import com.android.tradefed.testtype.IBuildReceiver;
+
+import java.io.File;
+
+
+/**
+ * Test to measure installation time of a APK.
+ */
+public class InstallTimeTest extends DeviceTestCase implements IBuildReceiver {
+    private CtsBuildHelper mBuild;
+    private ITestDevice mDevice;
+
+    private static final String TAG = "InstallTimeTest";
+    static final String PACKAGE = "com.replica.replicaisland";
+    static final String APK = "com.replica.replicaisland.apk";
+    private static final double OUTLIER_THRESHOLD = 0.1;
+
+    @Override
+    public void setBuild(IBuildInfo buildInfo) {
+        mBuild = CtsBuildHelper.createBuildHelper(buildInfo);
+    }
+
+    @Override
+    protected void setUp() throws Exception {
+        super.setUp();
+        mDevice = getDevice();
+    }
+
+
+    @Override
+    protected void tearDown() throws Exception {
+        mDevice.uninstallPackage(PACKAGE);
+        super.tearDown();
+    }
+
+    public void testInstallTime() throws Exception {
+        HostReportLog report =
+                new HostReportLog(mDevice.getSerialNumber(), ReportLog.getClassMethodNames());
+        final int NUMBER_REPEAT = 10;
+        final CtsBuildHelper build = mBuild;
+        final ITestDevice device = mDevice;
+        double[] result = MeasureTime.measure(NUMBER_REPEAT, new MeasureRun() {
+            @Override
+            public void prepare(int i) throws Exception {
+                device.uninstallPackage(PACKAGE);
+            }
+            @Override
+            public void run(int i) throws Exception {
+                File app = build.getTestApp(APK);
+                device.installPackage(app, false);
+            }
+        });
+        report.printArray("install time", result, ResultType.LOWER_BETTER,
+                ResultUnit.MS);
+        Stat.StatResult stat = Stat.getStatWithOutlierRejection(result, OUTLIER_THRESHOLD);
+        if (stat.mDataCount != result.length) {
+            Log.w(TAG, "rejecting " + (result.length - stat.mDataCount) + " outliers");
+        }
+        report.printSummary("install time", stat.mAverage, ResultType.LOWER_BETTER,
+                ResultUnit.MS);
+        report.deliverReportToHost();
+    }
+
+}
diff --git a/suite/cts/hostTests/uihost/src/com/android/cts/uihost/TaskSwitchingTest.java b/suite/cts/hostTests/uihost/src/com/android/cts/uihost/TaskSwitchingTest.java
new file mode 100644
index 0000000..0bfecdc
--- /dev/null
+++ b/suite/cts/hostTests/uihost/src/com/android/cts/uihost/TaskSwitchingTest.java
@@ -0,0 +1,117 @@
+/*
+ * Copyright (C) 2012 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.android.cts.uihost;
+
+import com.android.cts.tradefed.build.CtsBuildHelper;
+import com.android.cts.tradefed.result.CtsReportUtil;
+import com.android.cts.tradefed.util.CtsHostStore;
+import com.android.cts.tradefed.util.HostReportLog;
+import com.android.cts.util.ReportLog;
+import com.android.cts.util.TimeoutReq;
+import com.android.ddmlib.Log;
+import com.android.ddmlib.Log.LogLevel;
+import com.android.ddmlib.testrunner.RemoteAndroidTestRunner;
+import com.android.ddmlib.testrunner.TestIdentifier;
+import com.android.tradefed.build.IBuildInfo;
+import com.android.tradefed.device.DeviceNotAvailableException;
+import com.android.tradefed.device.ITestDevice;
+import com.android.tradefed.device.TestDeviceOptions;
+import com.android.tradefed.result.CollectingTestListener;
+import com.android.tradefed.result.TestResult;
+import com.android.tradefed.result.TestRunResult;
+import com.android.tradefed.testtype.DeviceTestCase;
+import com.android.tradefed.testtype.IBuildReceiver;
+
+import java.io.File;
+import java.util.Map;
+
+
+/**
+ * Measure time to taskswitching between two Apps: A & B
+ * Actual test is done in device, but this host side code installs all necessary APKs
+ * and starts device test which is in CtsDeviceTaskswitchingControl.
+ */
+public class TaskSwitchingTest extends DeviceTestCase implements IBuildReceiver {
+    private static final String TAG = "TaskSwitchingTest";
+    private final static String CTS_RUNNER = "android.test.InstrumentationCtsTestRunner";
+    private CtsBuildHelper mBuild;
+    private ITestDevice mDevice;
+    private String mCtsReport = null;
+
+    static final String[] PACKAGES = {
+        "com.android.cts.taskswitching.control",
+        "com.android.cts.taskswitching.appa",
+        "com.android.cts.taskswitching.appb"
+    };
+    static final String[] APKS = {
+        "CtsDeviceTaskswitchingControl.apk",
+        "CtsDeviceTaskswitchingAppA.apk",
+        "CtsDeviceTaskswitchingAppB.apk"
+    };
+
+    @Override
+    public void setBuild(IBuildInfo buildInfo) {
+        mBuild = CtsBuildHelper.createBuildHelper(buildInfo);
+    }
+
+    @Override
+    protected void setUp() throws Exception {
+        super.setUp();
+        mDevice = getDevice();
+        for (int i = 0; i < PACKAGES.length; i++) {
+            mDevice.uninstallPackage(PACKAGES[i]);
+            File app = mBuild.getTestApp(APKS[i]);
+            mDevice.installPackage(app, false);
+        }
+    }
+
+
+    @Override
+    protected void tearDown() throws Exception {
+        for (int i = 0; i < PACKAGES.length; i++) {
+            mDevice.uninstallPackage(PACKAGES[i]);
+        }
+        super.tearDown();
+    }
+
+    @TimeoutReq(minutes = 30)
+    public void testTaskswitching() throws Exception {
+        HostReportLog report =
+                new HostReportLog(mDevice.getSerialNumber(), ReportLog.getClassMethodNames());
+        RemoteAndroidTestRunner testRunner = new RemoteAndroidTestRunner(PACKAGES[0], CTS_RUNNER,
+                mDevice.getIDevice());
+        LocalListener listener = new LocalListener();
+        mDevice.runInstrumentationTests(testRunner, listener);
+        TestRunResult result = listener.getCurrentRunResults();
+        if (result.isRunFailure()) {
+            fail(result.getRunFailureMessage());
+        }
+        assertNotNull("no performance data", mCtsReport);
+        CtsHostStore.storeCtsResult(mDevice.getSerialNumber(),
+                ReportLog.getClassMethodNames(), mCtsReport);
+
+    }
+
+    public class LocalListener extends CollectingTestListener {
+        @Override
+        public void testEnded(TestIdentifier test, Map<String, String> testMetrics) {
+            // necessary as testMetrics passed from CollectingTestListerner is empty
+            mCtsReport = CtsReportUtil.getCtsResultFromMetrics(testMetrics);
+            super.testEnded(test, testMetrics);
+        }
+    }
+}
diff --git a/suite/cts/utils/get_csv_report.py b/suite/cts/utils/get_csv_report.py
new file mode 100755
index 0000000..a1f5dd0
--- /dev/null
+++ b/suite/cts/utils/get_csv_report.py
@@ -0,0 +1,219 @@
+#!/usr/bin/env python
+#
+# Copyright (C) 2013 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 os
+import re
+import subprocess
+import sys
+from xml.dom import Node
+from xml.dom import minidom
+
+def getChildrenWithTag(parent, tagName):
+  children = []
+  for child in  parent.childNodes:
+    if (child.nodeType == Node.ELEMENT_NODE) and (child.tagName == tagName):
+      #print "parent " + parent.getAttribute("name") + " " + tagName +\
+      #  " " + child.getAttribute("name")
+      children.append(child)
+  return children
+
+def getText(tag):
+  return str(tag.firstChild.nodeValue)
+
+class TestCase(object):
+  def __init__(self, name, summary, details, result):
+    self.name = name
+    self.summary = summary
+    self.details = details
+    self.result = result
+
+  def getName(self):
+    return self.name
+
+  def getSummary(self):
+    return self.summary
+
+  def getDetails(self):
+    return self.details
+
+  def getResult(self):
+    return self.result
+
+def parseSuite(suite, parentName):
+  if parentName != "":
+    parentName += '.'
+  cases = {}
+  childSuites = getChildrenWithTag(suite, "TestSuite")
+  for child in childSuites:
+    cases.update(parseSuite(child, parentName + child.getAttribute("name")))
+  childTestCases = getChildrenWithTag(suite, "TestCase")
+  for child in childTestCases:
+    className = parentName + child.getAttribute("name")
+    for test in getChildrenWithTag(child, "Test"):
+      methodName = test.getAttribute("name")
+      # do not include this
+      if methodName == "testAndroidTestCaseSetupProperly":
+        continue
+      caseName = str(className + "#" + methodName)
+      result = str(test.getAttribute("result"))
+      summary = {}
+      details = {}
+      if result == "pass":
+        sts = getChildrenWithTag(test, "Summary")
+        dts = getChildrenWithTag(test, "Details")
+        if len(sts) == len(dts) == 1:
+          summary[sts[0].getAttribute("message")] = getText(sts[0])
+          for d in getChildrenWithTag(dts[0], "ValueArray"):
+            values = []
+            for c in getChildrenWithTag(d, "Value"):
+              values.append(getText(c))
+            details[d.getAttribute("message")] = values
+        else:
+          result = "no results"
+      testCase = TestCase(caseName, summary, details, result)
+      cases[caseName] = testCase
+  return cases
+
+
+class Result(object):
+  def __init__(self, reportXml):
+    self.results = {}
+    self.infoKeys = []
+    self.infoValues = []
+    doc = minidom.parse(reportXml)
+    testResult = doc.getElementsByTagName("TestResult")[0]
+    buildInfos = testResult.getElementsByTagName("BuildInfo")
+    if buildInfos != None and len(buildInfos) > 0:
+      buildInfo = buildInfos[0]
+      buildId = buildInfo.getAttribute("buildID")
+      deviceId = buildInfo.getAttribute("deviceID")
+      deviceName = buildInfo.getAttribute("build_device")
+      boardName = buildInfo.getAttribute("build_board")
+      partitions = buildInfo.getAttribute("partitions")
+      m = re.search(r'.*;/data\s+([\w\.]+)\s+([\w\.]+)\s+([\w\.]+)\s+([\w\.]+);', partitions)
+      dataPartitionSize = m.group(1)
+      self.addKV("device", deviceName)
+      self.addKV("board", boardName)
+      self.addKV("serial", deviceId)
+      self.addKV("build", buildId)
+      self.addKV("data size", dataPartitionSize)
+    packages = getChildrenWithTag(testResult, "TestPackage")
+    for package in packages:
+      casesFromChild = parseSuite(package, "")
+      self.results.update(casesFromChild)
+    #print self.results.keys()
+
+  def addKV(self, key, value):
+    self.infoKeys.append(key)
+    self.infoValues.append(value)
+
+  def getResults(self):
+    return self.results
+
+  def getKeys(self):
+    return self.infoKeys
+
+  def getValues(self):
+    return self.infoValues
+
+  def getDeviceName(self):
+    return self.getInfoV("device")
+
+  def getInfoV(self, key):
+    if key in self.infoKeys:
+      return self.infoValues[self.infoKeys.index(key)]
+    else:
+      return "unknown"
+
+def executeWithResult(command):
+  p = subprocess.Popen(command.split(), stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
+  out, err = p.communicate()
+  return out
+
+def parseReports(path):
+  deviceResults = []
+  xmls = executeWithResult("find " + path + " -name testResult.xml -print")
+  print "xml files found :"
+  print xmls
+  for xml in xmls.splitlines():
+    result = Result(xml)
+    deviceResults.append(result)
+  reportInfo = {}
+  keys = ["device", "board", "serial", "build", "data size"]
+  numDevices = len(deviceResults)
+  for i in xrange(len(keys)):
+    values = []
+    for j in xrange(numDevices):
+      values.append(str(deviceResults[j].getInfoV(keys[i])))
+    reportInfo[keys[i]] = values
+  #print reportInfo
+
+  tests = []
+  for deviceResult in deviceResults:
+    for key in deviceResult.getResults().keys():
+      if not key in tests:
+        tests.append(key)
+  #print tests
+
+  reportTests = {}
+  for i in xrange(len(tests)):
+    test = tests[i]
+    reportTests[test] = []
+    for j in xrange(numDevices):
+      values = {}
+      if deviceResults[j].getResults().has_key(test):
+        result = deviceResults[j].getResults()[test]
+        values["result"] = result.getResult()
+        values["summary"] = result.getSummary()
+        values["details"] = result.getDetails()
+        values["device"] = deviceResults[j].getDeviceName()
+      # even if report does not have test, put empty dict
+      # otherwise, there is no way to distinguish results from the same device
+      reportTests[test].append(values)
+  #print reportTests
+  return (reportInfo, reportTests)
+
+def main(argv):
+  if len(argv) < 3:
+    print "get_csv_report.py cts_report_dir output_file"
+    sys.exit(1)
+  reportPath = os.path.abspath(argv[1])
+  outputCsv = os.path.abspath(argv[2])
+
+  (reportInfo, reportTests) = parseReports(reportPath)
+
+  with open(outputCsv, 'w') as f:
+    for key in reportInfo:
+      f.write(key)
+      for value in reportInfo[key]:
+        f.write(',')
+        f.write(value)
+      f.write('\n')
+    sortedTest = sorted(reportTests)
+    for test in sortedTest:
+      f.write(test)
+      for report in reportTests[test]:
+        f.write(',')
+        if 'summary' in report:
+          summaryValues = report['summary'].values()
+          if len(summaryValues) > 0:
+            f.write(summaryValues[0])
+        # else: no data printed but just empty cell
+      # close a test with line
+      f.write('\n')
+
+if __name__ == '__main__':
+  main(sys.argv)
diff --git a/suite/cts/utils/grapher.py b/suite/cts/utils/grapher.py
new file mode 100755
index 0000000..d7de86e
--- /dev/null
+++ b/suite/cts/utils/grapher.py
@@ -0,0 +1,83 @@
+#!/usr/bin/env python
+#
+# Copyright (C) 2013 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 os, sys
+import get_csv_report as psr
+import matplotlib.pyplot as plt
+import matplotlib.mlab as mlab
+import matplotlib.cbook as cbook
+import matplotlib.ticker as ticker
+"""
+A simple script to render the data from the benchmark as a graph.
+This uses MatPlotLib (http://matplotlib.org/) to plot which can be installed on linux with;
+  sudo apt-get install python-matplotlib
+"""
+
+colors = {
+  'maguro':'#FF0000',
+  'mako':'#00FF00',
+  'manta':'#0000FF',
+  'tilapia':'#00FFFF'
+}
+
+def main(argv):
+  if len(argv) != 2:
+    print "grapher.py cts_report_dir"
+    sys.exit(1)
+
+  (_, tests) = psr.parseReports(os.path.abspath(argv[1]))
+
+  # For each of the benchmarks
+  for benchmark in tests:
+    if benchmark.startswith('com.android.cts.opengl.primitive'):
+      results = tests[benchmark]
+      legend = []
+      # Create a new figure
+      fig = plt.figure()
+      # Set the title of the graph
+      plt.title(benchmark[benchmark.index('#') + 1:])
+      # For each result in the data set
+      for r in results:
+        score = r.get('result', 'no results')
+        x = []
+        y = []
+        if score == 'pass':
+          y = r['details']['Fps Values']
+          x = range(1, len(y) + 1)
+          # Get the score, then trim it to 2 decimal places
+          score = r['summary']['Average Frames Per Second']
+          score = score[0:score.index('.') + 3]
+        if score != 'no results':
+          # Create a plot
+          ax = fig.add_subplot(111)
+          name = r['device']
+          lbl = name + ' (%s)'%score
+          clr = colors.get(name, "#%06X" % (hash(name) % 0xFFFFFF))
+          # Plot the workload vs the values
+          ax.plot(x, y, 'o-', label=lbl, color=clr)
+          # Add a legend
+          ax.legend(loc='upper right').get_frame().set_fill(False)
+      (ymin, ymax) = plt.ylim()
+      if ymax < 90:# So that on screen tests are easier to compare
+        plt.ylim(0, 90)
+      plt.xlabel('Iteration')
+      plt.ylabel('FPS')
+      fig.autofmt_xdate()
+  # Show the plots
+  plt.show()
+
+if __name__ == '__main__':
+  main(sys.argv)
diff --git a/tests/Android.mk b/tests/Android.mk
index 4a87b07..a4cc38f 100644
--- a/tests/Android.mk
+++ b/tests/Android.mk
@@ -35,7 +35,7 @@
 
 LOCAL_PACKAGE_NAME := CtsTestStubs
 
-LOCAL_STATIC_JAVA_LIBRARIES := ctsutil ctstestserver ctstestrunner
+LOCAL_STATIC_JAVA_LIBRARIES := ctsdeviceutil ctstestserver ctstestrunner
 
 LOCAL_DEX_PREOPT := false
 
diff --git a/tests/AndroidManifest.xml b/tests/AndroidManifest.xml
index 6851d94..b65ded0 100644
--- a/tests/AndroidManifest.xml
+++ b/tests/AndroidManifest.xml
@@ -114,6 +114,9 @@
     <!-- Used for ClonedSecureRandomTest -->
     <uses-permission android:name="android.permission.KILL_BACKGROUND_PROCESSES" />
 
+    <!-- Used for Transmit IR Test -->
+    <uses-permission android:name="android.permission.TRANSMIT_IR" />
+
     <!-- Used for PackageManager test, don't delete this permission-tree -->
     <permission-tree android:name="com.android.cts.stub.permission.TEST_DYNAMIC"
                     android:label="Test Tree"/>
@@ -684,6 +687,15 @@
             </intent-filter>
         </activity>
 
+        <activity android:name="android.webkit.cts.WebViewStartupStubActivity"
+            android:label="WebViewStartupStubActivity"
+            android:screenOrientation="nosensor">
+            <intent-filter>
+                <action android:name="android.intent.action.MAIN" />
+                <category android:name="android.intent.category.FRAMEWORK_INSTRUMENTATION_TEST" />
+            </intent-filter>
+        </activity>
+
         <activity android:name="android.app.cts.ChildActivity"
                         android:label="ChildActivity" />
 
diff --git a/tests/ProcessTest/Android.mk b/tests/ProcessTest/Android.mk
index ba58e87..a2958fe 100644
--- a/tests/ProcessTest/Android.mk
+++ b/tests/ProcessTest/Android.mk
@@ -28,6 +28,9 @@
 
 LOCAL_PACKAGE_NAME := ProcessTests
 
+LOCAL_DEX_PREOPT := false
+LOCAL_PROGUARD_ENABLED := disabled
+
 include $(BUILD_PACKAGE)
 
 include $(call all-makefiles-under,$(LOCAL_PATH))
diff --git a/tests/ProcessTest/NoShareUidApp/Android.mk b/tests/ProcessTest/NoShareUidApp/Android.mk
index 66bf8ce..c57d71d 100644
--- a/tests/ProcessTest/NoShareUidApp/Android.mk
+++ b/tests/ProcessTest/NoShareUidApp/Android.mk
@@ -26,5 +26,6 @@
 LOCAL_PACKAGE_NAME := NoShareUidApp
 
 LOCAL_PROGUARD_ENABLED := disabled
+LOCAL_DEX_PREOPT := false
 
 include $(BUILD_PACKAGE)
diff --git a/tests/ProcessTest/ShareUidApp/Android.mk b/tests/ProcessTest/ShareUidApp/Android.mk
index aeb4661..131f768 100644
--- a/tests/ProcessTest/ShareUidApp/Android.mk
+++ b/tests/ProcessTest/ShareUidApp/Android.mk
@@ -26,5 +26,6 @@
 LOCAL_PACKAGE_NAME := ShareUidApp
 
 LOCAL_PROGUARD_ENABLED := disabled
+LOCAL_DEX_PREOPT := false
 
 include $(BUILD_PACKAGE)
diff --git a/tests/SignatureTest/Android.mk b/tests/SignatureTest/Android.mk
index 0b51f25..209e78a 100644
--- a/tests/SignatureTest/Android.mk
+++ b/tests/SignatureTest/Android.mk
@@ -17,10 +17,6 @@
 
 # don't include this package in any target
 LOCAL_MODULE_TAGS := optional
-# and when built explicitly put it in the data partition
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-# and because it is in data, do not strip classes.dex
-LOCAL_DEX_PREOPT := false
 
 LOCAL_SRC_FILES := $(call all-java-files-under, src)
 
@@ -32,7 +28,6 @@
 
 # To be passed in on command line
 CTS_API_VERSION ?= current
-
 ifeq (current,$(CTS_API_VERSION))
 android_api_description := frameworks/base/api/$(CTS_API_VERSION).txt
 else
@@ -40,20 +35,22 @@
 endif
 
 # Can't call local-intermediates-dir directly here because we have to
-# include BUILD_PACAKGE first.  Can't include BUILD_PACKAGE first
+# include BUILD_CTS_PACKAGE first.  Can't include BUILD_CTS_PACKAGE first
 # because we have to override LOCAL_RESOURCE_DIR first.  Hence this
 # hack.
 intermediates.COMMON := $(call intermediates-dir-for,APPS,$(LOCAL_PACKAGE_NAME),,COMMON)
 signature_res_dir := $(intermediates.COMMON)/genres
 LOCAL_RESOURCE_DIR := $(signature_res_dir) $(LOCAL_PATH)/res
 
-include $(BUILD_PACKAGE)
+include $(BUILD_CTS_PACKAGE)
+
+$(info $(call local-intermediates-dir))
 
 generated_res_stamp := $(intermediates.COMMON)/genres.stamp
 api_ver_file := $(intermediates.COMMON)/api_ver_is_$(CTS_API_VERSION)
 
 # The api_ver_file keeps track of which api version was last built.
-# By only ever having one of these magic files in existance and making
+# By only ever having one of these magic files in existence and making
 # sure the generated resources rule depend on it, we can ensure that
 # the proper version of the api resource gets generated.
 $(api_ver_file):
@@ -89,6 +86,5 @@
 android_api_description :=
 CTS_API_VERSION :=
 
-
-# Use the folloing include to make our test apk.
+# Use the following include to make our test apk.
 include $(call all-makefiles-under,$(LOCAL_PATH))
diff --git a/tests/SignatureTest/AndroidManifest.xml b/tests/SignatureTest/AndroidManifest.xml
index 762dfae..b4813e6 100644
--- a/tests/SignatureTest/AndroidManifest.xml
+++ b/tests/SignatureTest/AndroidManifest.xml
@@ -16,30 +16,15 @@
  -->
 
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
-    package="android.tests.sigtest">
-    <uses-permission android:name="android.permission.READ_PHONE_STATE" />
+          package="android.tests.sigtest">
+    <uses-permission android:name="android.permission.READ_PHONE_STATE"/>
 
     <application>
-        <uses-library android:name="android.test.runner" />
-
-        <activity android:name=".SignatureTestActivity"
-                android:stateNotNeeded="true">
-            <intent-filter>
-                <action android:name="android.intent.action.MAIN" />
-                <category android:name="android.intent.category.DEFAULT" />
-            </intent-filter>
-        </activity>
-
-        <uses-library android:name="android.test.runner" />
+        <uses-library android:name="android.test.runner"/>
     </application>
 
-    <instrumentation android:name=".InstrumentationRunner"
+    <instrumentation android:name="android.test.InstrumentationTestRunner"
                      android:targetPackage="android.tests.sigtest"
                      android:label="API Signature Test"/>
 
-    <instrumentation android:name="android.test.InstrumentationTestRunner"
-        android:targetPackage="android.tests.sigtest"
-        android:label="Simple API Signature Test">
-    </instrumentation>
-
-</manifest>
+</manifest>
\ No newline at end of file
diff --git a/tests/SignatureTest/src/android/tests/sigtest/InstrumentationRunner.java b/tests/SignatureTest/src/android/tests/sigtest/InstrumentationRunner.java
deleted file mode 100644
index b196ade..0000000
--- a/tests/SignatureTest/src/android/tests/sigtest/InstrumentationRunner.java
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
- * 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.
- */
-package android.tests.sigtest;
-
-import android.app.Activity;
-import android.app.Instrumentation;
-import android.content.Intent;
-import android.os.Bundle;
-
-public class InstrumentationRunner extends Instrumentation {
-    @Override
-    public void onCreate(Bundle arguments) {
-        start();
-    }
-
-    @SuppressWarnings("deprecation")
-    @Override
-    public void onStart() {
-        Intent intent = new Intent(Intent.ACTION_MAIN);
-        intent.setClassName(getTargetContext(),
-                "android.tests.sigtest.SignatureTestActivity");
-        intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
-
-        SignatureTestActivity activity = (SignatureTestActivity) startActivitySync(intent);
-        waitForIdleSync();
-
-        finish(Activity.RESULT_OK, activity.mBundle);
-    }
-
-}
diff --git a/tests/SignatureTest/src/android/tests/sigtest/JDiffClassDescription.java b/tests/SignatureTest/src/android/tests/sigtest/JDiffClassDescription.java
index 9d95bb4..c51c6c3 100644
--- a/tests/SignatureTest/src/android/tests/sigtest/JDiffClassDescription.java
+++ b/tests/SignatureTest/src/android/tests/sigtest/JDiffClassDescription.java
@@ -16,6 +16,8 @@
 
 package android.tests.sigtest;
 
+import android.tests.sigtest.SignatureTest.FAILURE_TYPE;
+
 import java.lang.reflect.Constructor;
 import java.lang.reflect.Field;
 import java.lang.reflect.GenericArrayType;
@@ -81,7 +83,7 @@
      */
     public JDiffClassDescription(String pkg, String className) {
         this(pkg, className, new ResultObserver() {
-            public void notifyFailure(SignatureTestActivity.FAILURE_TYPE type,
+            public void notifyFailure(FAILURE_TYPE type,
                     String name,
                     String errorMessage) {
                 // This is a null result observer that doesn't do anything.
@@ -498,7 +500,7 @@
 
                 Method m = findMatchingMethod(method);
                 if (m == null) {
-                    mResultObserver.notifyFailure(SignatureTestActivity.FAILURE_TYPE.MISSING_METHOD,
+                    mResultObserver.notifyFailure(FAILURE_TYPE.MISSING_METHOD,
                             method.toReadableString(mAbsoluteClassName),
                             "No method with correct signature found:" +
                             method.toSignatureString());
@@ -519,7 +521,7 @@
                     }
 
                     if (!areMethodModifiedCompatibile(method, m)) {
-                        mResultObserver.notifyFailure(SignatureTestActivity.FAILURE_TYPE.MISMATCH_METHOD,
+                        mResultObserver.notifyFailure(FAILURE_TYPE.MISMATCH_METHOD,
                                 method.toReadableString(mAbsoluteClassName),
                                 "Non-compatible method found when looking for " +
                                 method.toSignatureString());
@@ -527,7 +529,7 @@
                 }
             } catch (Exception e) {
                 SignatureTestLog.e("Got exception when checking method compliance", e);
-                mResultObserver.notifyFailure(SignatureTestActivity.FAILURE_TYPE.CAUGHT_EXCEPTION,
+                mResultObserver.notifyFailure(FAILURE_TYPE.CAUGHT_EXCEPTION,
                         method.toReadableString(mAbsoluteClassName),
                 "Exception!");
             }
@@ -635,7 +637,7 @@
             try {
                 Constructor<?> c = findMatchingConstructor(con);
                 if (c == null) {
-                    mResultObserver.notifyFailure(SignatureTestActivity.FAILURE_TYPE.MISSING_METHOD,
+                    mResultObserver.notifyFailure(FAILURE_TYPE.MISSING_METHOD,
                             con.toReadableString(mAbsoluteClassName),
                             "No method with correct signature found:" +
                             con.toSignatureString());
@@ -645,7 +647,7 @@
                     }
                     if (c.getModifiers() != con.mModifier) {
                         mResultObserver.notifyFailure(
-                                SignatureTestActivity.FAILURE_TYPE.MISMATCH_METHOD,
+                                FAILURE_TYPE.MISMATCH_METHOD,
                                 con.toReadableString(mAbsoluteClassName),
                                 "Non-compatible method found when looking for " +
                                 con.toSignatureString());
@@ -653,7 +655,7 @@
                 }
             } catch (Exception e) {
                 SignatureTestLog.e("Got exception when checking constructor compliance", e);
-                mResultObserver.notifyFailure(SignatureTestActivity.FAILURE_TYPE.CAUGHT_EXCEPTION,
+                mResultObserver.notifyFailure(FAILURE_TYPE.CAUGHT_EXCEPTION,
                         con.toReadableString(mAbsoluteClassName),
                 "Exception!");
             }
@@ -714,12 +716,12 @@
             try {
                 Field f = findMatchingField(field);
                 if (f == null) {
-                    mResultObserver.notifyFailure(SignatureTestActivity.FAILURE_TYPE.MISSING_FIELD,
+                    mResultObserver.notifyFailure(FAILURE_TYPE.MISSING_FIELD,
                             field.toReadableString(mAbsoluteClassName),
                             "No field with correct signature found:" +
                             field.toSignatureString());
                 } else if (f.getModifiers() != field.mModifier) {
-                    mResultObserver.notifyFailure(SignatureTestActivity.FAILURE_TYPE.MISMATCH_FIELD,
+                    mResultObserver.notifyFailure(FAILURE_TYPE.MISMATCH_FIELD,
                             field.toReadableString(mAbsoluteClassName),
                             "Non-compatible field modifiers found when looking for " +
                             field.toSignatureString());
@@ -733,7 +735,7 @@
                     }
                     if (genericTypeName == null || !genericTypeName.equals(field.mFieldType)) {
                         mResultObserver.notifyFailure(
-                                SignatureTestActivity.FAILURE_TYPE.MISMATCH_FIELD,
+                                FAILURE_TYPE.MISMATCH_FIELD,
                                 field.toReadableString(mAbsoluteClassName),
                                 "Non-compatible field type found when looking for " +
                                 field.toSignatureString());
@@ -742,7 +744,7 @@
 
             } catch (Exception e) {
                 SignatureTestLog.e("Got exception when checking field compliance", e);
-                mResultObserver.notifyFailure(SignatureTestActivity.FAILURE_TYPE.CAUGHT_EXCEPTION,
+                mResultObserver.notifyFailure(FAILURE_TYPE.CAUGHT_EXCEPTION,
                         field.toReadableString(mAbsoluteClassName),
                 "Exception!");
             }
@@ -883,11 +885,11 @@
             if (mClass == null) {
                 // No class found, notify the observer according to the class type
                 if (JDiffType.INTERFACE.equals(mClassType)) {
-                    mResultObserver.notifyFailure(SignatureTestActivity.FAILURE_TYPE.MISSING_INTERFACE,
+                    mResultObserver.notifyFailure(FAILURE_TYPE.MISSING_INTERFACE,
                             mAbsoluteClassName,
                             "Classloader is unable to find " + mAbsoluteClassName);
                 } else {
-                    mResultObserver.notifyFailure(SignatureTestActivity.FAILURE_TYPE.MISSING_CLASS,
+                    mResultObserver.notifyFailure(FAILURE_TYPE.MISSING_CLASS,
                             mAbsoluteClassName,
                             "Classloader is unable to find " + mAbsoluteClassName);
                 }
@@ -924,7 +926,7 @@
             }
         } catch (Exception e) {
             SignatureTestLog.e("Got exception when checking field compliance", e);
-            mResultObserver.notifyFailure(SignatureTestActivity.FAILURE_TYPE.CAUGHT_EXCEPTION,
+            mResultObserver.notifyFailure(FAILURE_TYPE.CAUGHT_EXCEPTION,
                     mAbsoluteClassName,
             "Exception!");
         }
@@ -977,11 +979,11 @@
 
     private void logMismatchInterfaceSignature(String classFullName, String errorMessage) {
         if (JDiffType.INTERFACE.equals(mClassType)) {
-            mResultObserver.notifyFailure(SignatureTestActivity.FAILURE_TYPE.MISMATCH_INTERFACE,
+            mResultObserver.notifyFailure(FAILURE_TYPE.MISMATCH_INTERFACE,
                     classFullName,
                     errorMessage);
         } else {
-            mResultObserver.notifyFailure(SignatureTestActivity.FAILURE_TYPE.MISMATCH_CLASS,
+            mResultObserver.notifyFailure(FAILURE_TYPE.MISMATCH_CLASS,
                     classFullName,
                     errorMessage);
         }
diff --git a/tests/SignatureTest/src/android/tests/sigtest/ResultObserver.java b/tests/SignatureTest/src/android/tests/sigtest/ResultObserver.java
index 72f1a97..e9d2260 100644
--- a/tests/SignatureTest/src/android/tests/sigtest/ResultObserver.java
+++ b/tests/SignatureTest/src/android/tests/sigtest/ResultObserver.java
@@ -16,6 +16,7 @@
 
 package android.tests.sigtest;
 
+import android.tests.sigtest.SignatureTest.FAILURE_TYPE;
 /**
  * Interface for saving signature test result.
  */
@@ -26,7 +27,7 @@
      * @param name Name of the failed element (interface/class/method/field)
      * @param errorMessage a descriptive message indicating why it failed.
      */
-    void notifyFailure(SignatureTestActivity.FAILURE_TYPE type,
+    void notifyFailure(FAILURE_TYPE type,
                        String name,
                        String errorMessage);
 
diff --git a/tests/SignatureTest/src/android/tests/sigtest/SignatureTest.java b/tests/SignatureTest/src/android/tests/sigtest/SignatureTest.java
index 8001130..8ae02ac 100644
--- a/tests/SignatureTest/src/android/tests/sigtest/SignatureTest.java
+++ b/tests/SignatureTest/src/android/tests/sigtest/SignatureTest.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2008 The Android Open Source Project
+ * Copyright (C) 2011 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.
@@ -16,6 +16,8 @@
 
 package android.tests.sigtest;
 
+import android.content.res.Resources;
+import android.test.AndroidTestCase;
 import android.tests.sigtest.JDiffClassDescription.JDiffConstructor;
 import android.tests.sigtest.JDiffClassDescription.JDiffField;
 import android.tests.sigtest.JDiffClassDescription.JDiffMethod;
@@ -24,15 +26,17 @@
 import org.xmlpull.v1.XmlPullParserException;
 
 import java.io.IOException;
+import java.lang.reflect.Field;
 import java.lang.reflect.Modifier;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.HashSet;
 
 /**
- * Entry class for signature test.
+ * Performs the signature check via a JUnit test.
  */
-public class SignatureTest {
+public class SignatureTest extends AndroidTestCase {
+
     private static final String TAG_ROOT = "api";
     private static final String TAG_PACKAGE = "package";
     private static final String TAG_CLASS = "class";
@@ -64,22 +68,70 @@
     private static ArrayList<String> mDebugArray = new ArrayList<String>();
 
     private HashSet<String> mKeyTagSet;
+    private TestResultObserver mResultObserver;
 
-    private ArrayList<ResultObserver> mReportObserverList;
+    /**
+     * Define the type of the signature check failures.
+     */
+    public static enum FAILURE_TYPE {
+        MISSING_CLASS,
+        MISSING_INTERFACE,
+        MISSING_METHOD,
+        MISSING_FIELD,
+        MISMATCH_CLASS,
+        MISMATCH_INTERFACE,
+        MISMATCH_METHOD,
+        MISMATCH_FIELD,
+        CAUGHT_EXCEPTION,
+    }
 
-    private ResultObserver resultObserver;
+    private class TestResultObserver implements ResultObserver {
+        boolean mDidFail = false;
+        StringBuilder mErrorString = new StringBuilder();
 
-    public SignatureTest(ResultObserver resultObserver) {
-        this.resultObserver = resultObserver;
-        mReportObserverList = new ArrayList<ResultObserver>();
+        public void notifyFailure(FAILURE_TYPE type, String name, String errorMessage) {
+            mDidFail = true;
+            mErrorString.append("\n");
+            mErrorString.append(type.toString().toLowerCase());
+            mErrorString.append(":\t");
+            mErrorString.append(name);
+        }
+    }
+
+    @Override
+    protected void setUp() throws Exception {
+        super.setUp();
         mKeyTagSet = new HashSet<String>();
         mKeyTagSet.addAll(Arrays.asList(new String[] {
                 TAG_PACKAGE, TAG_CLASS, TAG_INTERFACE, TAG_IMPLEMENTS, TAG_CONSTRUCTOR,
                 TAG_METHOD, TAG_PARAM, TAG_EXCEPTION, TAG_FIELD }));
+        mResultObserver = new TestResultObserver();
     }
 
-    public static final void beginDocument(XmlPullParser parser, String firstElementName) throws XmlPullParserException, IOException
-    {
+    /**
+     * Tests that the device's API matches the expected set defined in xml.
+     * <p/>
+     * Will check the entire API, and then report the complete list of failures
+     */
+    public void testSignature() {
+        Resources r = getContext().getResources();
+        Class rClass = R.xml.class;
+        Field[] fs = rClass.getFields();
+        for (Field f : fs) {
+            try {
+                start(r.getXml(f.getInt(rClass)));
+            } catch (Exception e) {
+                mResultObserver.notifyFailure(FAILURE_TYPE.CAUGHT_EXCEPTION, e.getMessage(),
+                        e.getMessage());
+            }
+        }
+        if (mResultObserver.mDidFail) {
+            fail(mResultObserver.mErrorString.toString());
+        }
+    }
+
+    private  void beginDocument(XmlPullParser parser, String firstElementName)
+            throws XmlPullParserException, IOException {
         int type;
         while ((type=parser.next()) != XmlPullParser.START_TAG
                    && type != XmlPullParser.END_DOCUMENT) { }
@@ -97,12 +149,12 @@
     /**
      * Signature test entry point.
      */
-    public void start(XmlPullParser parser) throws XmlPullParserException, IOException {
+    private void start(XmlPullParser parser) throws XmlPullParserException, IOException {
         JDiffClassDescription currentClass = null;
         String currentPackage = "";
         JDiffMethod currentMethod = null;
 
-        SignatureTest.beginDocument(parser, TAG_ROOT);
+        beginDocument(parser, TAG_ROOT);
         int type;
         while (true) {
             type = XmlPullParser.START_DOCUMENT;
@@ -160,22 +212,6 @@
         }
     }
 
-    public static void log(final String msg) {
-        mDebugArray.add(msg);
-    }
-
-    public void addReportObserver(ResultObserver observer) {
-        mReportObserverList.add(observer);
-    }
-
-    public void removeReportObserver(ResultObserver observer) {
-        mReportObserverList.remove(observer);
-    }
-
-    public void clearReportObserverList() {
-        mReportObserverList.clear();
-    }
-
     /**
      * Load field information from xml to memory.
      *
@@ -232,7 +268,7 @@
         String className = parser.getAttributeValue(null, ATTRIBUTE_NAME);
         JDiffClassDescription currentClass = new JDiffClassDescription(pkg,
                                                                        className,
-                                                                       resultObserver);
+                                                                       mResultObserver);
         currentClass.setModifier(jdiffModifierToReflectionFormat(className, parser));
         currentClass.setType(isInterface ? JDiffClassDescription.JDiffType.INTERFACE :
                              JDiffClassDescription.JDiffType.CLASS);
diff --git a/tests/SignatureTest/src/android/tests/sigtest/SignatureTestActivity.java b/tests/SignatureTest/src/android/tests/sigtest/SignatureTestActivity.java
deleted file mode 100644
index 9c81cef..0000000
--- a/tests/SignatureTest/src/android/tests/sigtest/SignatureTestActivity.java
+++ /dev/null
@@ -1,219 +0,0 @@
-/*
- * 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.
- */
-
-package android.tests.sigtest;
-
-import android.app.Activity;
-import android.content.Intent;
-import android.content.res.Resources;
-import android.content.res.Resources.NotFoundException;
-import android.os.Bundle;
-
-import org.xmlpull.v1.XmlPullParserException;
-
-import java.io.BufferedReader;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.InputStreamReader;
-import java.lang.reflect.Field;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.HashSet;
-
-/**
- * This class is used for Signature Test. It will started by the Instrumentation class,
- * and send back the test result via IBinder.
- */
-public class SignatureTestActivity extends Activity {
-    static final String BUNDLE_EXTRA_SIG_TEST = "sigtest";
-
-    static final String BUNDLE_KEY_RESULT = "result";
-    static final String BUNDLE_KEY_MISSING_CLASS = "missing_class";
-    static final String BUNDLE_KEY_MISSING_INTERFACE = "missing_interface";
-    static final String BUNDLE_KEY_MISSING_METHOD = "missing_method";
-    static final String BUNDLE_KEY_MISSING_FIELD = "missing_field";
-    static final String BUNDLE_KEY_MISMATCH_CLASS = "mismatch_class_signature";
-    static final String BUNDLE_KEY_MISMATCH_INTERFACE = "mismatch_interface_signature";
-    static final String BUNDLE_KEY_MISMATCH_METHOD = "mismatch_method_signature";
-    static final String BUNDLE_KEY_MISMATCH_FIELD = "mismatch_field_signature";
-    static final String BUNDLE_KEY_CAUGHT_EXCEPTION = "caught_exception";
-
-
-    static final int GET_SIG_TEST_RESULT_TRANSACTION = 101;
-
-    private DeviceResultObserver mResultObserver;
-
-    /**
-     * Define the type of the signature check failures.
-     */
-    public static enum FAILURE_TYPE {
-        MISSING_CLASS,
-        MISSING_INTERFACE,
-        MISSING_METHOD,
-        MISSING_FIELD,
-        MISMATCH_CLASS,
-        MISMATCH_INTERFACE,
-        MISMATCH_METHOD,
-        MISMATCH_FIELD,
-        CAUGHT_EXCEPTION,
-    }
-
-    static final HashMap<FAILURE_TYPE, String> FAILURE_TYPE_TO_KEY =
-            new HashMap<FAILURE_TYPE, String>();
-    static {
-        FAILURE_TYPE_TO_KEY.put(FAILURE_TYPE.MISSING_CLASS, BUNDLE_KEY_MISSING_CLASS);
-        FAILURE_TYPE_TO_KEY.put(FAILURE_TYPE.MISSING_INTERFACE, BUNDLE_KEY_MISSING_INTERFACE);
-        FAILURE_TYPE_TO_KEY.put(FAILURE_TYPE.MISSING_METHOD, BUNDLE_KEY_MISSING_METHOD);
-        FAILURE_TYPE_TO_KEY.put(FAILURE_TYPE.MISSING_FIELD, BUNDLE_KEY_MISSING_FIELD);
-        FAILURE_TYPE_TO_KEY.put(FAILURE_TYPE.MISMATCH_CLASS, BUNDLE_KEY_MISMATCH_CLASS);
-        FAILURE_TYPE_TO_KEY.put(FAILURE_TYPE.MISMATCH_INTERFACE, BUNDLE_KEY_MISMATCH_INTERFACE);
-        FAILURE_TYPE_TO_KEY.put(FAILURE_TYPE.MISMATCH_METHOD, BUNDLE_KEY_MISMATCH_METHOD);
-        FAILURE_TYPE_TO_KEY.put(FAILURE_TYPE.MISMATCH_FIELD, BUNDLE_KEY_MISMATCH_FIELD);
-        FAILURE_TYPE_TO_KEY.put(FAILURE_TYPE.CAUGHT_EXCEPTION, BUNDLE_KEY_CAUGHT_EXCEPTION);
-    }
-
-    @Override
-    protected void onCreate(Bundle savedInstanceState) {
-        super.onCreate(savedInstanceState);
-
-        mResultObserver = new DeviceResultObserver();
-        start();
-        mResultObserver.sendResult(getIntent());
-    }
-
-    /**
-     * Start the signature test.
-     */
-    @SuppressWarnings("unchecked")
-    private void start() {
-        SignatureTest sigTest = new SignatureTest(mResultObserver);
-
-        HashSet<String> excludeSet = getExcludedSet();
-
-        Resources r = getResources();
-
-        Class rClass = R.xml.class;
-        Field[]fs = rClass.getFields();
-        for (Field f : fs) {
-            if (!excludeSet.contains(f.getName())) {
-                try {
-                    sigTest.start(r.getXml(f.getInt(rClass)));
-                } catch (Exception e) {
-                    mResultObserver.notifyFailure(FAILURE_TYPE.CAUGHT_EXCEPTION, e.getMessage(),
-                            e.getMessage());
-                }
-            }
-        }
-    }
-
-    /**
-     * Get the excluded package set, which is defined by res/raw/excludepackages.txt.
-     *
-     * @return The excluded package set.
-     */
-    private HashSet<String> getExcludedSet() {
-        HashSet<String> excludeSet = new HashSet<String>();
-
-        Resources r = getResources();
-        InputStream excludepackage = r.openRawResource(R.raw.excludepackages);
-        BufferedReader reader = new BufferedReader(new InputStreamReader(excludepackage));
-        try {
-            String p = null;
-            while (true) {
-                p = reader.readLine();
-                if (p == null || p.equals("")) {
-                    break;
-                }
-                excludeSet.add(p);
-            }
-            reader.close();
-        } catch (IOException e) {
-            throw new RuntimeException(e);
-        }
-
-        return excludeSet;
-    }
-
-    Bundle mBundle;
-
-    /**
-     * This class is an implementation of the ResultObserver. And it aims to
-     * record the result in the Bundle, and send back to the Instrumentation class
-     * after all results has been recorded.
-     */
-    final class DeviceResultObserver implements ResultObserver {
-        DeviceResultObserver() {
-            mBundle = new Bundle();
-            mBundle.putStringArrayList(BUNDLE_KEY_MISSING_FIELD, new ArrayList<String>());
-            mBundle.putStringArrayList(BUNDLE_KEY_MISSING_METHOD, new ArrayList<String>());
-            mBundle.putStringArrayList(BUNDLE_KEY_MISMATCH_CLASS,
-                    new ArrayList<String>());
-            mBundle.putStringArrayList(BUNDLE_KEY_MISMATCH_FIELD,
-                    new ArrayList<String>());
-            mBundle.putStringArrayList(BUNDLE_KEY_MISMATCH_METHOD,
-                    new ArrayList<String>());
-            mBundle.putStringArrayList(BUNDLE_KEY_MISSING_CLASS, new ArrayList<String>());
-            mBundle.putStringArrayList(BUNDLE_KEY_MISSING_INTERFACE,
-                    new ArrayList<String>());
-            mBundle.putStringArrayList(BUNDLE_KEY_MISMATCH_INTERFACE,
-                    new ArrayList<String>());
-            mBundle.putStringArrayList(BUNDLE_KEY_CAUGHT_EXCEPTION,
-                    new ArrayList<String>());
-        }
-
-        /**
-         * This method is called when all the results has been recorded. And this method
-         * will save the results in IBinder and send back to the Instrumentation class.
-         *
-         * @param i The intent to carry the result.
-         */
-        @SuppressWarnings("deprecation")
-        public void sendResult(Intent i) {
-            SignatureTestLog.d("Send result");
-            if ((mBundle.getStringArrayList(BUNDLE_KEY_MISSING_FIELD).size() == 0)
-                    && (mBundle.getStringArrayList(BUNDLE_KEY_MISSING_CLASS).size() == 0)
-                    && (mBundle.getStringArrayList(BUNDLE_KEY_MISSING_METHOD).size() == 0)
-                    && (mBundle.getStringArrayList(BUNDLE_KEY_MISSING_INTERFACE).size() == 0)
-                    && (mBundle.getStringArrayList(
-                            BUNDLE_KEY_MISMATCH_CLASS).size() == 0)
-                    && (mBundle.getStringArrayList(
-                            BUNDLE_KEY_MISMATCH_FIELD).size() == 0)
-                    && (mBundle.getStringArrayList(
-                            BUNDLE_KEY_MISMATCH_INTERFACE).size() == 0)
-                    && (mBundle.getStringArrayList(
-                            BUNDLE_KEY_MISMATCH_METHOD).size() == 0)
-                    && (mBundle.getStringArrayList(
-                            BUNDLE_KEY_CAUGHT_EXCEPTION).size() == 0)) {
-                SignatureTestLog.d("PASS");
-                mBundle.putBoolean(BUNDLE_KEY_RESULT, true);
-            } else {
-                SignatureTestLog.d("FAIL: " + mBundle.size());
-                mBundle.putBoolean(BUNDLE_KEY_RESULT, false);
-            }
-        }
-
-        public void notifyFailure(FAILURE_TYPE type,
-                                  String name,
-                                  String errorMessage) {
-            SignatureTestLog.d("Failure: ");
-            SignatureTestLog.d("   Type: " + type);
-            SignatureTestLog.d("   Name: " + name);
-            SignatureTestLog.d("   Why : " + errorMessage);
-            mBundle.getStringArrayList(SignatureTestActivity.FAILURE_TYPE_TO_KEY.get(type))
-                    .add(name);
-        }
-    }
-}
diff --git a/tests/SignatureTest/src/android/tests/sigtest/SimpleSignatureTest.java b/tests/SignatureTest/src/android/tests/sigtest/SimpleSignatureTest.java
deleted file mode 100644
index c206c9a..0000000
--- a/tests/SignatureTest/src/android/tests/sigtest/SimpleSignatureTest.java
+++ /dev/null
@@ -1,324 +0,0 @@
-/*
- * Copyright (C) 2011 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 android.tests.sigtest;
-
-import android.content.res.Resources;
-import android.test.AndroidTestCase;
-import android.tests.sigtest.JDiffClassDescription.JDiffConstructor;
-import android.tests.sigtest.JDiffClassDescription.JDiffField;
-import android.tests.sigtest.JDiffClassDescription.JDiffMethod;
-import android.tests.sigtest.SignatureTestActivity.FAILURE_TYPE;
-
-import org.xmlpull.v1.XmlPullParser;
-import org.xmlpull.v1.XmlPullParserException;
-
-import java.io.IOException;
-import java.lang.reflect.Field;
-import java.lang.reflect.Modifier;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.HashSet;
-
-/**
- * A simpler version of {@link SignatureTest} that performs the signature check via a JUnit test.
- * <p/>
- * Eventually the existing  {@link SignatureTest} and {@link SignatureActivity} will be deleted
- * once the move to a tradefederation based CTS harness is complete.
- */
-public class SimpleSignatureTest extends AndroidTestCase {
-
-    private static final String TAG_ROOT = "api";
-    private static final String TAG_PACKAGE = "package";
-    private static final String TAG_CLASS = "class";
-    private static final String TAG_INTERFACE = "interface";
-    private static final String TAG_IMPLEMENTS = "implements";
-    private static final String TAG_CONSTRUCTOR = "constructor";
-    private static final String TAG_METHOD = "method";
-    private static final String TAG_PARAM = "parameter";
-    private static final String TAG_EXCEPTION = "exception";
-    private static final String TAG_FIELD = "field";
-
-    private static final String MODIFIER_ABSTRACT = "abstract";
-    private static final String MODIFIER_FINAL = "final";
-    private static final String MODIFIER_NATIVE = "native";
-    private static final String MODIFIER_PRIVATE = "private";
-    private static final String MODIFIER_PROTECTED = "protected";
-    private static final String MODIFIER_PUBLIC = "public";
-    private static final String MODIFIER_STATIC = "static";
-    private static final String MODIFIER_SYNCHRONIZED = "synchronized";
-    private static final String MODIFIER_TRANSIENT = "transient";
-    private static final String MODIFIER_VOLATILE = "volatile";
-    private static final String MODIFIER_VISIBILITY = "visibility";
-
-    private static final String ATTRIBUTE_NAME = "name";
-    private static final String ATTRIBUTE_EXTENDS = "extends";
-    private static final String ATTRIBUTE_TYPE = "type";
-    private static final String ATTRIBUTE_RETURN = "return";
-
-    private static ArrayList<String> mDebugArray = new ArrayList<String>();
-
-    private HashSet<String> mKeyTagSet;
-    private TestResultObserver mResultObserver;
-
-    private class TestResultObserver implements ResultObserver {
-        boolean mDidFail = false;
-        StringBuilder mErrorString = new StringBuilder();
-
-        public void notifyFailure(FAILURE_TYPE type, String name, String errorMessage) {
-            mDidFail = true;
-            mErrorString.append("\n");
-            mErrorString.append(type.toString().toLowerCase());
-            mErrorString.append(":\t");
-            mErrorString.append(name);
-        }
-    }
-
-    @Override
-    protected void setUp() throws Exception {
-        super.setUp();
-        mKeyTagSet = new HashSet<String>();
-        mKeyTagSet.addAll(Arrays.asList(new String[] {
-                TAG_PACKAGE, TAG_CLASS, TAG_INTERFACE, TAG_IMPLEMENTS, TAG_CONSTRUCTOR,
-                TAG_METHOD, TAG_PARAM, TAG_EXCEPTION, TAG_FIELD }));
-        mResultObserver = new TestResultObserver();
-    }
-
-    /**
-     * Tests that the device's API matches the expected set defined in xml.
-     * <p/>
-     * Will check the entire API, and then report the complete list of failures
-     */
-    public void testSignature() {
-        Resources r = getContext().getResources();
-        Class rClass = R.xml.class;
-        Field[] fs = rClass.getFields();
-        for (Field f : fs) {
-            try {
-                start(r.getXml(f.getInt(rClass)));
-            } catch (Exception e) {
-                mResultObserver.notifyFailure(FAILURE_TYPE.CAUGHT_EXCEPTION, e.getMessage(),
-                        e.getMessage());
-            }
-        }
-        if (mResultObserver.mDidFail) {
-            fail(mResultObserver.mErrorString.toString());
-        }
-    }
-
-    private  void beginDocument(XmlPullParser parser, String firstElementName)
-            throws XmlPullParserException, IOException {
-        int type;
-        while ((type=parser.next()) != XmlPullParser.START_TAG
-                   && type != XmlPullParser.END_DOCUMENT) { }
-
-        if (type != XmlPullParser.START_TAG) {
-            throw new XmlPullParserException("No start tag found");
-        }
-
-        if (!parser.getName().equals(firstElementName)) {
-            throw new XmlPullParserException("Unexpected start tag: found " + parser.getName() +
-                    ", expected " + firstElementName);
-        }
-    }
-
-    /**
-     * Signature test entry point.
-     */
-    private void start(XmlPullParser parser) throws XmlPullParserException, IOException {
-        JDiffClassDescription currentClass = null;
-        String currentPackage = "";
-        JDiffMethod currentMethod = null;
-
-        beginDocument(parser, TAG_ROOT);
-        int type;
-        while (true) {
-            type = XmlPullParser.START_DOCUMENT;
-            while ((type=parser.next()) != XmlPullParser.START_TAG
-                       && type != XmlPullParser.END_DOCUMENT
-                       && type != XmlPullParser.END_TAG) {
-
-            }
-
-            if (type == XmlPullParser.END_TAG) {
-                if (TAG_CLASS.equals(parser.getName())
-                        || TAG_INTERFACE.equals(parser.getName())) {
-                    currentClass.checkSignatureCompliance();
-                } else if (TAG_PACKAGE.equals(parser.getName())) {
-                    currentPackage = "";
-                }
-                continue;
-            }
-
-            if (type == XmlPullParser.END_DOCUMENT) {
-                break;
-            }
-
-            String tagname = parser.getName();
-            if (!mKeyTagSet.contains(tagname)) {
-                continue;
-            }
-
-            if (type == XmlPullParser.START_TAG && tagname.equals(TAG_PACKAGE)) {
-                currentPackage = parser.getAttributeValue(null, ATTRIBUTE_NAME);
-            } else if (tagname.equals(TAG_CLASS)) {
-                currentClass = loadClassInfo(parser, false, currentPackage);
-            } else if (tagname.equals(TAG_INTERFACE)) {
-                currentClass = loadClassInfo(parser, true, currentPackage);
-            } else if (tagname.equals(TAG_IMPLEMENTS)) {
-                currentClass.addImplInterface(parser.getAttributeValue(null, ATTRIBUTE_NAME));
-            } else if (tagname.equals(TAG_CONSTRUCTOR)) {
-                JDiffConstructor constructor = loadConstructorInfo(parser, currentClass);
-                currentClass.addConstructor(constructor);
-                currentMethod = constructor;
-            } else if (tagname.equals(TAG_METHOD)) {
-                currentMethod = loadMethodInfo(currentClass.getClassName(), parser);
-                currentClass.addMethod(currentMethod);
-            } else if (tagname.equals(TAG_PARAM)) {
-                currentMethod.addParam(parser.getAttributeValue(null, ATTRIBUTE_TYPE));
-            } else if (tagname.equals(TAG_EXCEPTION)) {
-                currentMethod.addException(parser.getAttributeValue(null, ATTRIBUTE_TYPE));
-            } else if (tagname.equals(TAG_FIELD)) {
-                JDiffField field = loadFieldInfo(currentClass.getClassName(), parser);
-                currentClass.addField(field);
-            } else {
-                throw new RuntimeException(
-                        "unknow tag exception:" + tagname);
-            }
-        }
-    }
-
-    /**
-     * Load field information from xml to memory.
-     *
-     * @param className of the class being examined which will be shown in error messages
-     * @param parser The XmlPullParser which carries the xml information.
-     * @return the new field
-     */
-    private JDiffField loadFieldInfo(String className, XmlPullParser parser) {
-        String fieldName = parser.getAttributeValue(null, ATTRIBUTE_NAME);
-        String fieldType = parser.getAttributeValue(null, ATTRIBUTE_TYPE);
-        int modifier = jdiffModifierToReflectionFormat(className, parser);
-        return new JDiffField(fieldName, fieldType, modifier);
-    }
-
-    /**
-     * Load method information from xml to memory.
-     *
-     * @param className of the class being examined which will be shown in error messages
-     * @param parser The XmlPullParser which carries the xml information.
-     * @return the newly loaded method.
-     */
-    private JDiffMethod loadMethodInfo(String className, XmlPullParser parser) {
-        String methodName = parser.getAttributeValue(null, ATTRIBUTE_NAME);
-        String returnType = parser.getAttributeValue(null, ATTRIBUTE_RETURN);
-        int modifier = jdiffModifierToReflectionFormat(className, parser);
-        return new JDiffMethod(methodName, modifier, returnType);
-    }
-
-    /**
-     * Load constructor information from xml to memory.
-     *
-     * @param parser The XmlPullParser which carries the xml information.
-     * @param currentClass the current class being loaded.
-     * @return the new constructor
-     */
-    private JDiffConstructor loadConstructorInfo(XmlPullParser parser,
-                                                 JDiffClassDescription currentClass) {
-        String name = currentClass.getClassName();
-        int modifier = jdiffModifierToReflectionFormat(name, parser);
-        return new JDiffConstructor(name, modifier);
-    }
-
-    /**
-     * Load class or interface information to memory.
-     *
-     * @param parser The XmlPullParser which carries the xml information.
-     * @param isInterface true if the current class is an interface, otherwise is false.
-     * @param pkg the name of the java package this class can be found in.
-     * @return the new class description.
-     */
-    private JDiffClassDescription loadClassInfo(XmlPullParser parser,
-                                                boolean isInterface,
-                                                String pkg) {
-        String className = parser.getAttributeValue(null, ATTRIBUTE_NAME);
-        JDiffClassDescription currentClass = new JDiffClassDescription(pkg,
-                                                                       className,
-                                                                       mResultObserver);
-        currentClass.setModifier(jdiffModifierToReflectionFormat(className, parser));
-        currentClass.setType(isInterface ? JDiffClassDescription.JDiffType.INTERFACE :
-                             JDiffClassDescription.JDiffType.CLASS);
-        currentClass.setExtendsClass(parser.getAttributeValue(null, ATTRIBUTE_EXTENDS));
-        return currentClass;
-    }
-
-    /**
-     * Convert string modifier to int modifier.
-     *
-     * @param name of the class/method/field being examined which will be shown in error messages
-     * @param key modifier name
-     * @param value modifier value
-     * @return converted modifier value
-     */
-    private static int modifierDescriptionToReflectedType(String name, String key, String value) {
-        if (key.equals(MODIFIER_ABSTRACT)) {
-            return value.equals("true") ? Modifier.ABSTRACT : 0;
-        } else if (key.equals(MODIFIER_FINAL)) {
-            return value.equals("true") ? Modifier.FINAL : 0;
-        } else if (key.equals(MODIFIER_NATIVE)) {
-            return value.equals("true") ? Modifier.NATIVE : 0;
-        } else if (key.equals(MODIFIER_STATIC)) {
-            return value.equals("true") ? Modifier.STATIC : 0;
-        } else if (key.equals(MODIFIER_SYNCHRONIZED)) {
-            return value.equals("true") ? Modifier.SYNCHRONIZED : 0;
-        } else if (key.equals(MODIFIER_TRANSIENT)) {
-            return value.equals("true") ? Modifier.TRANSIENT : 0;
-        } else if (key.equals(MODIFIER_VOLATILE)) {
-            return value.equals("true") ? Modifier.VOLATILE : 0;
-        } else if (key.equals(MODIFIER_VISIBILITY)) {
-            if (value.equals(MODIFIER_PRIVATE)) {
-                throw new RuntimeException("Private visibility found in API spec: " + name);
-            } else if (value.equals(MODIFIER_PROTECTED)) {
-                return Modifier.PROTECTED;
-            } else if (value.equals(MODIFIER_PUBLIC)) {
-                return Modifier.PUBLIC;
-            } else if ("".equals(value)) {
-                // If the visibility is "", it means it has no modifier.
-                // which is package private. We should return 0 for this modifier.
-                return 0;
-            } else {
-                throw new RuntimeException("Unknown modifier found in API spec: " + value);
-            }
-        }
-        return 0;
-    }
-
-    /**
-     * Transfer string modifier to int one.
-     *
-     * @param name of the class/method/field being examined which will be shown in error messages
-     * @param parser XML resource parser
-     * @return converted modifier
-     */
-    private static int jdiffModifierToReflectionFormat(String name, XmlPullParser parser){
-        int modifier = 0;
-        for (int i = 0;i < parser.getAttributeCount();i++) {
-            modifier |= modifierDescriptionToReflectedType(name, parser.getAttributeName(i),
-                    parser.getAttributeValue(i));
-        }
-        return modifier;
-    }
-}
diff --git a/tests/SignatureTest/tests/Android.mk b/tests/SignatureTest/tests/Android.mk
index b458aad..bdd0a90 100644
--- a/tests/SignatureTest/tests/Android.mk
+++ b/tests/SignatureTest/tests/Android.mk
@@ -17,4 +17,6 @@
 
 LOCAL_PROGUARD_FLAGS := -ignorewarnings
 
+LOCAL_DEX_PREOPT := false
+
 include $(BUILD_PACKAGE)
diff --git a/tests/SignatureTest/tests/AndroidManifest.xml b/tests/SignatureTest/tests/AndroidManifest.xml
index b1161f9..ab8a6d6 100644
--- a/tests/SignatureTest/tests/AndroidManifest.xml
+++ b/tests/SignatureTest/tests/AndroidManifest.xml
@@ -14,15 +14,14 @@
      limitations under the License.
 -->
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
-    package="android.tests.sigtest.tests">
+          package="android.tests.sigtest.tests">
 
     <application>
-        <uses-library android:name="android.test.runner" />
+        <uses-library android:name="android.test.runner"/>
     </application>
 
     <instrumentation android:name="android.test.InstrumentationTestRunner"
-        android:targetPackage="android.tests.sigtest"
-        android:label="SignatureTest Functional Testset">
-    </instrumentation>
+                     android:targetPackage="android.tests.sigtest"
+                     android:label="SignatureTest Functional Testset"/>
 
 </manifest>
diff --git a/tests/SignatureTest/tests/src/android/tests/sigtest/tests/JDiffClassDescriptionTest.java b/tests/SignatureTest/tests/src/android/tests/sigtest/tests/JDiffClassDescriptionTest.java
index f8798d0..b5bf49e 100644
--- a/tests/SignatureTest/tests/src/android/tests/sigtest/tests/JDiffClassDescriptionTest.java
+++ b/tests/SignatureTest/tests/src/android/tests/sigtest/tests/JDiffClassDescriptionTest.java
@@ -19,7 +19,7 @@
 import android.test.InstrumentationTestCase;
 import android.tests.sigtest.JDiffClassDescription;
 import android.tests.sigtest.ResultObserver;
-import android.tests.sigtest.SignatureTestActivity;
+import android.tests.sigtest.SignatureTest.FAILURE_TYPE;
 
 import java.lang.reflect.Modifier;
 
@@ -28,20 +28,20 @@
  */
 public class JDiffClassDescriptionTest extends InstrumentationTestCase {
     private class NoFailures implements ResultObserver {
-        public void notifyFailure(SignatureTestActivity.FAILURE_TYPE type, String name, String errmsg) {
+        public void notifyFailure(FAILURE_TYPE type, String name, String errmsg) {
             JDiffClassDescriptionTest.this.fail("Saw unexpected test failure: " + name + " failure type: " + type);
         }
     }
 
     private class ExpectFailure implements ResultObserver {
-        private SignatureTestActivity.FAILURE_TYPE expectedType;
+        private FAILURE_TYPE expectedType;
         private boolean failureSeen;
 
-        public ExpectFailure(SignatureTestActivity.FAILURE_TYPE expectedType) {
+        public ExpectFailure(FAILURE_TYPE expectedType) {
             this.expectedType = expectedType;
         }
 
-        public void notifyFailure(SignatureTestActivity.FAILURE_TYPE type, String name, String errMsg) {
+        public void notifyFailure(FAILURE_TYPE type, String name, String errMsg) {
             if (type == expectedType) {
                 if (failureSeen) {
                     JDiffClassDescriptionTest.this.fail("Saw second test failure: " + name + " failure type: " + type);
@@ -88,7 +88,7 @@
     }
 
     public void testMissingClass() {
-        ExpectFailure observer = new ExpectFailure(SignatureTestActivity.FAILURE_TYPE.MISSING_CLASS);
+        ExpectFailure observer = new ExpectFailure(FAILURE_TYPE.MISSING_CLASS);
         JDiffClassDescription clz = new JDiffClassDescription("android.tests.sigtest.tests.data",
                 "NoSuchClass",
                 observer);
@@ -280,7 +280,7 @@
     /** Test the case where the API declares the method not
      *  synchronized, but it actually is. */
     public void testAddingSync() {
-        ExpectFailure observer = new ExpectFailure(SignatureTestActivity.FAILURE_TYPE.MISMATCH_METHOD);      
+        ExpectFailure observer = new ExpectFailure(FAILURE_TYPE.MISMATCH_METHOD);
         JDiffClassDescription clz = createNormalClass(observer);
         JDiffClassDescription.JDiffMethod method = new JDiffClassDescription.JDiffMethod("syncMethod", Modifier.PUBLIC, "void");
         clz.addMethod(method);
@@ -333,7 +333,7 @@
      * http://b/1839622
      */
     public void testAddingAbstractToAClass() {
-        ExpectFailure observer = new ExpectFailure(SignatureTestActivity.FAILURE_TYPE.MISMATCH_CLASS);
+        ExpectFailure observer = new ExpectFailure(FAILURE_TYPE.MISMATCH_CLASS);
         JDiffClassDescription clz = new JDiffClassDescription("android.tests.sigtest.tests.data",
                 "AbstractClass", 
                 observer);
@@ -380,7 +380,7 @@
      * http://b/1839589
      */  
     public void testAddingFinalToAMethodInANonFinalClass() {
-        ExpectFailure observer = new ExpectFailure(SignatureTestActivity.FAILURE_TYPE.MISMATCH_METHOD);
+        ExpectFailure observer = new ExpectFailure(FAILURE_TYPE.MISMATCH_METHOD);
         JDiffClassDescription clz = new JDiffClassDescription("android.tests.sigtest.tests.data", 
                 "NormalClass", 
                 observer);
diff --git a/tests/acceleration/Android.mk b/tests/acceleration/Android.mk
index bb6b89f..ef96a24 100644
--- a/tests/acceleration/Android.mk
+++ b/tests/acceleration/Android.mk
@@ -22,6 +22,8 @@
 
 LOCAL_DEX_PREOPT := false
 
+LOCAL_PROGUARD_ENABLED := disabled
+
 LOCAL_JAVA_LIBRARIES := android.test.runner
 
 LOCAL_SRC_FILES := $(call all-java-files-under, src)
diff --git a/tests/assets/webkit/blank_tag.html b/tests/assets/webkit/blank_tag.html
new file mode 100644
index 0000000..628ff28
--- /dev/null
+++ b/tests/assets/webkit/blank_tag.html
@@ -0,0 +1,24 @@
+<!-- Copyright (C) 2013 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.
+-->
+
+<html>
+  <body>
+    <div>
+      <a href="test_hello_world.html" target="_blank" id="link">_blank anchor tag</a><br>
+    </div>
+    <iframe src="iframe_blank_tag.html"></iframe>
+  </body>
+</html>
+
diff --git a/tests/assets/webkit/iframe_blank_tag.html b/tests/assets/webkit/iframe_blank_tag.html
new file mode 100644
index 0000000..55ff410
--- /dev/null
+++ b/tests/assets/webkit/iframe_blank_tag.html
@@ -0,0 +1,22 @@
+<!-- Copyright (C) 2013 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.
+-->
+
+<!DOCTYPE html>
+<html>
+<head>
+  <script type='text/javascript'> window.open('test_hello_world.html'); </script>
+</head>
+</html>
+
diff --git a/tests/core/ctscore.mk b/tests/core/ctscore.mk
index 1e4e017..95f4634 100644
--- a/tests/core/ctscore.mk
+++ b/tests/core/ctscore.mk
@@ -12,7 +12,7 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-LOCAL_JAVA_LIBRARIES := android.test.runner bouncycastle
+LOCAL_JAVA_LIBRARIES := android.test.runner bouncycastle conscrypt
 LOCAL_PROGUARD_ENABLED := disabled
 LOCAL_DEX_PREOPT := false
 
diff --git a/tests/core/libcore/conscrypt/Android.mk b/tests/core/libcore/conscrypt/Android.mk
new file mode 100644
index 0000000..bcfd3a4
--- /dev/null
+++ b/tests/core/libcore/conscrypt/Android.mk
@@ -0,0 +1,24 @@
+# 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)
+
+ifeq ($(BUILD_CTSCORE_PACKAGE),)
+    $(error BUILD_CTSCORE_PACKAGE must be defined)
+endif
+
+include $(CLEAR_VARS)
+LOCAL_PACKAGE_NAME := android.core.tests.libcore.package.conscrypt
+LOCAL_STATIC_JAVA_LIBRARIES := core-tests conscrypt-tests
+include $(BUILD_CTSCORE_PACKAGE)
diff --git a/tests/core/libcore/conscrypt/AndroidManifest.xml b/tests/core/libcore/conscrypt/AndroidManifest.xml
new file mode 100644
index 0000000..6517a0b
--- /dev/null
+++ b/tests/core/libcore/conscrypt/AndroidManifest.xml
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ * 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.
+ -->
+
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+    package="android.core.tests.libcore.package.conscrypt">
+    <uses-permission android:name="android.permission.INTERNET" />
+    <application>
+        <uses-library android:name="android.test.runner" />
+    </application>
+
+    <instrumentation android:name="android.test.InstrumentationCtsTestRunner"
+                     android:targetPackage="android.core.tests.runner"
+                     android:label="cts framework tests"/>
+
+</manifest>
diff --git a/tests/deviceadmin/Android.mk b/tests/deviceadmin/Android.mk
index c354599..bcc23fc 100644
--- a/tests/deviceadmin/Android.mk
+++ b/tests/deviceadmin/Android.mk
@@ -20,7 +20,7 @@
 
 LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
 
-LOCAL_JAVA_LIBRARIES := android.test.runner
+LOCAL_JAVA_LIBRARIES := android.test.runner guava
 
 LOCAL_SRC_FILES := $(call all-java-files-under, src)
 
diff --git a/tests/deviceadmin/src/android/deviceadmin/cts/CtsDeviceAdminActivationTestActivity.java b/tests/deviceadmin/src/android/deviceadmin/cts/CtsDeviceAdminActivationTestActivity.java
index a8c5051..1779ec8 100644
--- a/tests/deviceadmin/src/android/deviceadmin/cts/CtsDeviceAdminActivationTestActivity.java
+++ b/tests/deviceadmin/src/android/deviceadmin/cts/CtsDeviceAdminActivationTestActivity.java
@@ -21,6 +21,8 @@
 import android.os.Bundle;
 import android.view.WindowManager;
 
+import com.google.common.annotations.VisibleForTesting;
+
 /**
  * Helper {@link Activity} for CTS tests of Device Admin activation. The {@code Activity}
  * enables tests to capture the invocations of its {@link #onActivityResult(int, int, Intent)} by
@@ -45,6 +47,7 @@
                 | WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
     }
 
+    @VisibleForTesting
     public void setOnActivityResultListener(OnActivityResultListener listener) {
         mOnActivityResultListener = listener;
     }
diff --git a/tests/expectations/knownfailures.txt b/tests/expectations/knownfailures.txt
index 1992b11..cd7f2d1 100644
--- a/tests/expectations/knownfailures.txt
+++ b/tests/expectations/knownfailures.txt
@@ -2,5 +2,36 @@
 {
   name: "android.openglperf.cts.GlVboPerfTest#testVboWithVaryingIndexBufferNumbers",
   bug: 6950385
+},
+{
+  name: "android.holo.cts.HoloTest",
+  bug: 8148617
+},
+{
+  name: "android.holo.cts.HoloHostTest",
+  bug: 15343612
+},
+{
+  name: "android.nativeopengl.EGLCleanupTest#TestCorrect",
+  name: "android.nativeopengl.EGLCreateContextTest#BadAttributeFails",
+  bug: 11652564
+},
+{
+  name: "android.hardware.camera2.cts.ImageReaderTest",
+  name: "android.hardware.camera2.cts.CameraCharacteristicsTest",
+  name: "android.hardware.camera2.cts.CameraCaptureResultTest",
+  name: "android.hardware.camera2.cts.CameraDeviceTest",
+  name: "android.hardware.camera2.cts.CameraManagerTest",
+  bug: 11141002
+},
+{
+  name: "com.android.cts.opengl.primitive.GLPrimitiveBenchmark#testFullPipelineOffscreen",
+  name: "com.android.cts.opengl.primitive.GLPrimitiveBenchmark#testPixelOutputOffscreen",
+  bug: 11238219
+},
+{
+  name: "android.hardware.cts.SensorIntegrationTests#testSensorsWithSeveralClients",
+  name: "android.hardware.cts.SensorIntegrationTests#testSensorsMovingRates",
+  bug: 11352697
 }
 ]
diff --git a/tests/plans/CTS-flaky.xml b/tests/plans/CTS-flaky.xml
index 1c2c30d..c0d74ce 100644
--- a/tests/plans/CTS-flaky.xml
+++ b/tests/plans/CTS-flaky.xml
@@ -1,8 +1,12 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <TestPlan version="1.0">
-  <Entry uri="android.app" exclude="android.app.backup.cts.BackupAgentHelperTest#testAndroidtestCaseSetupProperly;android.app.backup.cts.BackupAgentHelperTest#testBackupAGentHelper;android.app.backup.cts.BackupAgentTest#testAndroidTestCaseSetupProperly;android.app.backup.cts.BackupAgentTest#testBackupAgent;android.app.backup.cts.BackupManagerTest#testAndroidTestCaseSetupProperly;android.app.backup.cts.BackupManagerTest#testBackupManager;android.app.backup"/>
-  <Entry uri="android.hardware"/>
-  <Entry uri="android.media"/>
-  <Entry uri="android.net"/>
-  <Entry uri="android.provider"/>
+  <Entry uri="android.app" exclude="android.app.cts.SystemFeaturesTest#testTelephonyFeatures;android.app.cts.InstrumentationTest#testCallActivityOnResume;android.app.cts.ActivityManagerRecentTaskInfoTest#testWriteToParcel;android.app.cts.InstrumentationTest#testMisc;android.app.cts.DialogTest#testSetContentView;android.app.cts.ServiceTest#testLocalBindAutoClassPermissionGranted;android.app.cts.ActivityManager_RunningAppProcessInfoTest#testAndroidTestCaseSetupProperly;android.app.cts.AlertDialog_BuilderTest#testSetSingleChoiceItemsWithParamInt;android.app.cts.LocalActivityManagerTest#testConstructor;android.app.cts.ActivityManager_RunningServiceInfoTest#testDescribeContents;android.app.cts.DialogTest#testTakeKeyEvents;android.app.cts.LifecycleTest#testBasic;android.app.cts.NotificationTest#testConstructor;android.app.cts.ActivityManagerMemoryInfoTest#testWriteToParcel;android.app.cts.DialogTest#testConstructor_protectedCancellable;android.app.cts.ProgressDialogTest#testIncrementProgressBy;android.app.cts.ApplicationTest#testApplication;android.app.cts.InstrumentationTest#testSendKeySync;android.app.cts.LocalActivityManagerTest#testDispatchCreate;android.app.cts.AlertDialogTest#testAlertDialogDeprecatedAPI;android.app.cts.AlertDialog_BuilderTest#testSetSingleChoiceItemsWithParamCursor;android.app.cts.InstrumentationTest#testCallActivityOnRestart;android.app.backup.cts.BackupAgentTest#testBackupAgent;android.app.cts.AlertDialog_BuilderTest#testSetSingleChoiceItemsWithParamCharSequence;android.app.cts.ActivityManager_RunningServiceInfoTest#testAndroidTestCaseSetupProperly;android.app.cts.ServiceTest#testLocalBindAutoAction;android.app.cts.DialogTest#testSetFeatureDrawableUri;android.app.cts.KeyguardManagerKeyguardLockTest#testDisableKeyguard;android.app.cts.LaunchTest#testClearTopWhilResumed;android.app.cts.WallpaperManagerTest#testSuggestDesiredDimensions;android.app.cts.SystemFeaturesTest#testLiveWallpaperFeature;android.app.cts.InstrumentationTest#testCallActivityOnUserLeaving;android.app.cts.AlertDialog_BuilderTest#testSetCancelable;android.app.cts.AlertDialogTest#testAlertDialogTheme;android.app.cts.PendingIntentTest#testGetBroadcast;android.app.cts.ActivityManager_RunningServiceInfoTest#testWriteToParcel;android.app.cts.InstrumentationTest#testGetComponentName;android.app.backup.cts.FileBackupHelperTest#testAndroidTestCaseSetupProperly;android.app.cts.DownloadManagerTest#testAndroidTestCaseSetupProperly;android.app.cts.SystemFeaturesTest#testTouchScreenFeatures;android.app.cts.AlarmManagerTest#testAlarmTriggersImmediatelyIfSetTimeIsNegative;android.app.cts.ActivityManagerMemoryInfoTest#testReadFromParcel;android.app.cts.NotificationTest#testAndroidTestCaseSetupProperly;android.app.cts.AlertDialog_BuilderTest#testSetOnCancelListener;android.app.cts.ServiceTest#testLocalBindClass;android.app.cts.ServiceTest#testLocalStartClass;android.app.cts.LauncherActivity_ListItemTest#testConstructor;android.app.cts.InstrumentationTest#testCallActivityOnCreate;android.app.cts.PendingIntentTest#testSendWithParamContextIntIntent;android.app.cts.InstrumentationTest#testSendPointerSync;android.app.cts.DialogTest#testRequestWindowFeature;android.app.cts.LocalActivityManagerTest#testDispatchPauseFalse;android.app.cts.Instrumentation_ActivityResultTest#testActivityResultOp;android.app.cts.ProgressDialogTest#testOnStartCreateStop;android.app.cts.AlertDialog_BuilderTest#testSetNegativeButtonWithParamInt;android.app.cts.KeyguardManagerKeyguardLockTest#testReenableKeyguard;android.app.cts.DialogTest#testShow;android.app.cts.ActivityManagerMemoryInfoTest#testDescribeContents;android.app.cts.SystemFeaturesTest#testFeatureNamespaces;android.app.cts.PendingIntent_CanceledExceptionTest#testConstructor;android.app.cts.AlertDialog_BuilderTest#testSetPositiveButtonWithParamInt;android.app.cts.PendingIntentTest#testSendWithParamInt;android.app.cts.PendingIntentTest#testGetActivity;android.app.cts.AlertDialog_BuilderTest#testSetCursor;android.app.cts.ActivityManagerProcessErrorStateInfoTest#testWriteToParcel;android.app.cts.AlertDialog_BuilderTest#testConstructor;android.app.cts.LocalActivityManagerTest#testDispatchDestroy;android.app.cts.DownloadManagerTest#testDownloadManager;android.app.cts.ServiceTest#testLocalBindAction;android.app.cts.LocalActivityManagerTest#testSaveInstanceState;android.app.cts.LifecycleTest#testTabDialog;android.app.cts.LaunchTest#testLocalActivity;android.app.cts.AlertDialog_BuilderTest#testSetInverseBackgroundForced;android.app.cts.SystemFeaturesTest#testLocationFeatures;android.app.cts.DialogTest#testOnStartCreateStop;android.app.cts.ActivityManagerRecentTaskInfoTest#testReadFromParcel;android.app.cts.ServiceTest#testLocalStartClassPermissions;android.app.cts.ServiceTest#testLocalUnbindTwice;android.app.cts.ActivityManagerProcessErrorStateInfoTest#testConstructor;android.app.cts.DialogTest#testSetFeatureDrawableResource;android.app.cts.ProgressDialogTest#testAccessProgress;android.app.cts.DialogTest#testTrackballEvent;android.app.cts.AlertDialog_BuilderTest#testSetSingleChoiceItems;android.app.cts.LaunchTest#testColdActivity;android.app.cts.ActivityManagerTest#testGetMemoryInfo;android.app.cts.PendingIntentTest#testAndroidTestCaseSetupProperly;android.app.cts.DialogTest#testOnContentChanged;android.app.cts.SearchManagerTest#testSetOnDismissListener;android.app.cts.InstrumentationTest#testContext;android.app.cts.LauncherActivity_IconResizerTest#testIconResizer;android.app.cts.DialogTest#testCancel_listener;android.app.cts.ActivityManagerTest#testIsUserAMonkey;android.app.cts.NotificationManagerTest#testCancelAll;android.app.cts.ActivityGroupTest#testAndroidTestCaseSetupProperly;android.app.cts.AlertDialog_BuilderTest#testCreate;android.app.cts.SystemFeaturesTest#testUsbAccessory;android.app.cts.ActivityManagerRecentTaskInfoTest#testDescribeContents;android.app.cts.ActivityManagerRunningTaskInfoTest#testDescribeContents;android.app.cts.AlertDialog_BuilderTest#testDisableCancelable;android.app.cts.InstrumentationTest#testSendKeyDownUpSync;android.app.cts.ActivityManagerRunningTaskInfoTest#testConstructor;android.app.cts.TimePickerDialogTest#testUpdateTime;android.app.cts.ActivityManagerRunningTaskInfoTest#testReadFromParcel;android.app.cts.ProgressDialogTest#testSetProgressStyle;android.app.cts.InstrumentationTest#testMonitor;android.app.cts.AliasActivityTest#testAliasActivity;android.app.cts.InstrumentationTest#testSendTrackballEventSync;android.app.cts.LifecycleTest#testScreen;android.app.cts.AlarmManagerTest#testCancel;android.app.cts.ActivityGroupTest#testTabDialog;android.app.cts.PendingIntentTest#testDescribeContents;android.app.cts.DialogTest#testOnSearchRequested;android.app.cts.SearchManagerTest#testSetOnCancelListener;android.app.cts.ProgressDialogTest#testAccessMax;android.app.cts.PendingIntentTest#testGetTargetPackage;android.app.cts.SystemFeaturesTest#testWifiFeature;android.app.cts.ActivityManagerRecentTaskInfoTest#testAndroidTestCaseSetupProperly;android.app.cts.DialogTest#testSetFeatureDrawableAlpha;android.app.cts.DialogTest#testSetTitle;android.app.cts.FragmentTest#testInstantiateNonFragment;android.app.cts.DialogTest#testSetDismissMessage;android.app.cts.PendingIntentTest#testWriteToParcel;android.app.cts.ActivityManagerMemoryInfoTest#testAndroidTestCaseSetupProperly;android.app.cts.AlertDialog_BuilderTest#testSetNeutralButtonWithParamCharSequence;android.app.cts.NotificationTest#testToString;android.app.cts.LaunchTest#testColdScreen;android.app.cts.AlertDialogTest#testAlertDialog;android.app.cts.SystemFeaturesTest#testSensorFeatures;android.app.cts.ProgressDialogTest#testShow1;android.app.cts.AlertDialog_BuilderTest#testSetNeutralButtonWithParamInt;android.app.cts.ActivityManagerRunningTaskInfoTest#testWriteToParcel;android.app.cts.ProgressDialogTest#testShow2;android.app.cts.ProgressDialogTest#testShow3;android.app.cts.ProgressDialogTest#testShow4;android.app.cts.InstrumentationTest#testCallActivityOnStart;android.app.cts.PendingIntentTest#testCancel;android.app.cts.InstrumentationTest#testConstructor;android.app.cts.ProgressDialogTest#testSetIndeterminate;android.app.cts.AlertDialog_BuilderTest#testShow;android.app.cts.AlertDialog_BuilderTest#testSetIconWithParamDrawable;android.app.cts.AlarmManagerTest#testSetTypes;android.app.cts.AlarmManagerTest#testSetInexactRepeating;android.app.cts.PendingIntentTest#testSendWithParamIntOnFinishedHandler;android.app.backup.cts.FileBackupHelperTest#testConstructor;android.app.cts.Instrumentation_ActivityResultTest#testAndroidTestCaseSetupProperly;android.app.cts.DownloadManagerTest#testDownloadManagerDestinationExtension;android.app.cts.LaunchTest#testClearTopInCreate;android.app.cts.InstrumentationTest#testRunOnMainSync;android.app.cts.DialogTest#testOnKeyDownKeyUp;android.app.cts.ServiceTest#testLocalStartActionPermissions;android.app.cts.KeyguardManagerTest#testInKeyguardRestrictedInputMode;android.app.cts.DialogTest#testConstructor;android.app.cts.AlertDialogTest#testCallback;android.app.cts.ActivityManagerTest#testGetRunningTasks;android.app.cts.ProgressDialogTest#testIncrementSecondaryProgressBy;android.app.cts.DialogTest#testAccessOwnerActivity;android.app.cts.LifecycleTest#testTabScreen;android.app.cts.TimePickerDialogTest#testOnRestoreInstanceState;android.app.cts.ActivityGroupTest#testTabBasic;android.app.cts.ServiceTest#testAndroidTestCaseSetupProperly;android.app.cts.PendingIntentTest#testSendWithParamContextIntIntentOnFinishedHandler;android.app.backup.cts.BackupManagerTest#testBackupManager;android.app.cts.ActivityManagerRecentTaskInfoTest#testConstructor;android.app.cts.DialogTest#testOnWindowFocusChanged;android.app.cts.DialogTest#testGetCurrentFocus;android.app.cts.TabActivityTest#testChildTitleCallback;android.app.cts.DialogTest#testSetOnDismissListener_listener;android.app.cts.ServiceTest#testLocalStartAction;android.app.cts.AlertDialog_BuilderTest#testSetMultiChoiceItemsWithParamInt;android.app.cts.DialogTest#testGetLayoutInflater;android.app.cts.InstrumentationTest#testInvokeContextMenuAction;android.app.cts.InstrumentationTest#testProfiling;android.app.cts.IntentServiceTest#testIntentServiceLifeCycle;android.app.cts.ProgressDialogTest#testAccessSecondaryProgress;android.app.cts.NotificationManagerTest#testAndroidTestCaseSetupProperly;android.app.backup.cts.BackupAgentTest#testAndroidTestCaseSetupProperly;android.app.cts.ActivityManagerTest#testGetProcessInErrorState;android.app.cts.SearchManagerTest#testStopSearch;android.app.cts.NotificationTest#testSetLatestEventInfo;android.app.cts.DialogTest#testSetCancellable_false;android.app.cts.PendingIntentTest#testSend;android.app.cts.LocalActivityManagerTest#testDispatchResume;android.app.cts.AlertDialog_BuilderTest#testSetViewCustom;android.app.cts.InstrumentationTest#testInvokeMenuActionSync;android.app.cts.DialogTest#testOnSaveInstanceState;android.app.cts.DialogTest#testOnKeyMultiple;android.app.cts.ActivityGroupTest#testTabScreen;android.app.cts.InstrumentationTest#testCallActivityOnSaveInstanceState;android.app.cts.ActivityManagerTest#testGetDeviceConfigurationInfo;android.app.cts.NotificationTest#testWriteToParcel;android.app.cts.InstrumentationTest#testWaitForIdle;android.app.cts.InstrumentationTest#testCallActivityOnStop;android.app.cts.InstrumentationTest#testSendCharacterSync;android.app.cts.TimePickerDialogTest#testOnTimeChanged;android.app.cts.PendingIntentTest#testEquals;android.app.cts.AlertDialog_BuilderTest#testSetIconWithParamInt;android.app.cts.DialogTest#testContextMenu;android.app.cts.SystemFeaturesTest#testBluetoothFeature;android.app.cts.ExpandableListActivityTest#testView;android.app.cts.AlarmManagerTest#testSetRepeating;android.app.cts.ActivityManager_RunningServiceInfoTest#testReadFromParcel;android.app.cts.ServiceTest#testLocalBindActionPermissions;android.app.cts.LocalActivityManagerTest#testDispatchStop;android.app.cts.LauncherActivity_ListItemTest#testAndroidTestCaseSetupProperly;android.app.cts.InstrumentationTest#testNewApplication;android.app.cts.LaunchTest#testForwardResult;android.app.cts.ProgressDialogTest#testSetMessage;android.app.cts.ActivityManagerTest#testGetRunningServices;android.app.cts.AlertDialogTest#testCustomAlertDialogView;android.app.backup.cts.SharedPreferencesBackupHelperTest#testConstructor;android.app.cts.LifecycleTest#testTabBasic;android.app.cts.FragmentTest#testInstantiateFragment;android.app.cts.ActivityManager_RunningAppProcessInfoTest#testRunningAppProcessInfo;android.app.cts.AlertDialogTest#testAlertDialogNotCancelable;android.app.cts.AlertDialog_BuilderTest#testSetItemsWithParamCharSequence;android.app.cts.ActivityManagerProcessErrorStateInfoTest#testDescribeContents;android.app.cts.DialogTest#testConstructor_protectedNotCancellable;android.app.cts.ExpandableListActivityTest#testSelect;android.app.cts.SystemFeaturesTest#testScreenFeatures;android.app.cts.LauncherActivityTest#testLaunchActivity;android.app.cts.LaunchTest#testAndroidTestCaseSetupProperly;android.app.cts.LifecycleTest#testAndroidTestCaseSetupProperly;android.app.cts.NotificationTest#testDescribeContents;android.app.cts.DialogTest#testOnWindowAttributesChanged;android.app.cts.ServiceTest#testLocalBindAutoActionPermissionGranted;android.app.cts.InstrumentationTest#testCallActivityOnPostCreate;android.app.cts.AlertDialogTest#testAlertDialogDeprecatedAPIWithMessage;android.app.cts.AlertDialog_BuilderTest#testSetPositiveButtonWithParamCharSequence;android.app.cts.AlarmManagerTest#testAndroidTestCaseSetupProperly;android.app.cts.AlertDialog_BuilderTest#testSetView;android.app.cts.ActivityManager_RunningServiceInfoTest#testConstructor;android.app.cts.InstrumentationTest#testPerformanceSnapshot;android.app.cts.InstrumentationTest#testCallApplicationOnCreate;android.app.cts.DialogTest#testSetFeatureDrawable;android.app.cts.AliasActivityTest#testAndroidTestCaseSetupProperly;android.app.cts.PendingIntentTest#testGetService;android.app.cts.IntentServiceTest#testIntents;android.app.cts.AlertDialog_BuilderTest#testSetOnItemSelectedListener;android.app.cts.LifecycleTest#testDialog;android.app.cts.DownloadManagerTest#testDownloadManagerDestination;android.app.cts.WallpaperManagerTest#testAndroidTestCaseSetupProperly;android.app.cts.ExpandableListActivityTest#testAndroidTestCaseSetupProperly;android.app.cts.InstrumentationTest#testNewActivity;android.app.cts.ProgressDialogTest#testSetProgressDrawable;android.app.backup.cts.BackupManagerTest#testAndroidTestCaseSetupProperly;android.app.cts.InstrumentationTest#testAllocCounting;android.app.cts.LocalActivityManagerTest#testRemoveAllActivities;android.app.cts.ServiceTest#testLocalBindAutoClass;android.app.backup.cts.BackupAgentHelperTest#testBackupAgentHelper;android.app.cts.ActivityManagerProcessErrorStateInfoTest#testReadFromParcel;android.app.cts.PendingIntent_CanceledExceptionTest#testAndroidTestCaseSetupProperly;android.app.cts.TimePickerDialogTest#testOnClick;android.app.cts.AlertDialog_BuilderTest#testSetOnKeyListener;android.app.cts.DialogTest#testTouchEvent;android.app.cts.ProgressDialogTest#testProgressDialog1;android.app.cts.InstrumentationTest#testCallActivityOnRestoreInstanceState;android.app.cts.ProgressDialogTest#testProgressDialog2;android.app.cts.InstrumentationTest#testCallActivityOnPause;android.app.cts.AlertDialog_BuilderTest#testSetMultiChoiceItemsWithParamCharSequence;android.app.cts.SystemFeaturesTest#testCameraFeatures;android.app.cts.ServiceTest#testLocalBindClassPermissions;android.app.cts.ActivityManagerTest#testGetRecentTasks;android.app.cts.SystemFeaturesTest#testNfcFeatures;android.app.cts.AlertDialogTest#testCustomAlertDialog;android.app.cts.SystemFeaturesTest#testSipFeatures;android.app.cts.InstrumentationTest#testSendStringSync;android.app.cts.ActivityManagerRunningTaskInfoTest#testAndroidTestCaseSetupProperly;android.app.cts.TabActivityTest#testTabActivity;android.app.cts.KeyguardManagerTest#testNewKeyguardLock;android.app.cts.NotificationManagerTest#testCancel;android.app.cts.AlertDialog_BuilderTest#testSetMultiChoiceItemsWithParamCursor;android.app.cts.ActivityManagerMemoryClassTest#testGetMemoryClass;android.app.cts.ActivityManagerTest#testGetRunningAppProcesses;android.app.cts.AlertDialog_BuilderTest#testSetAdapter;android.app.cts.AlertDialog_BuilderTest#testSetItemsWithParamInt;android.app.cts.DialogTest#testCancel_noListener;android.app.cts.DialogTest#testDispatchKeyEvent;android.app.cts.LaunchTest#testLocalScreen;android.app.cts.ActivityManagerTest#testRestartPackage;android.app.cts.FragmentTest#testAndroidTestCaseSetupProperly;android.app.cts.InstrumentationTest#testCallActivityOnNewIntent;android.app.cts.NotificationManagerTest#testNotify;android.app.cts.LocalActivityManagerTest#testDispatchPauseTrue;android.app.cts.ActivityManagerProcessErrorStateInfoTest#testAndroidTestCaseSetupProperly;android.app.backup.cts.BackupAgentHelperTest#testAndroidTestCaseSetupProperly;android.app.cts.ProgressDialogTest#testSetIndeterminateDrawable;android.app.backup.cts.SharedPreferencesBackupHelperTest#testAndroidTestCaseSetupProperly;android.app.cts.DownloadManagerTest#testMinimumDownload;android.app.cts.PendingIntentTest#testReadAndWritePendingIntentOrNullToParcel;android.app.cts.DialogTest#testSetOnDismissListener_noListener;android.app.cts.KeyguardManagerTest#testExitKeyguardSecurely;android.app.cts.AlertDialog_BuilderTest#testSetNegativeButtonWithParamCharSequence;android.app.cts.DialogTest#testSetCancelable_true;android.app.cts.Instrumentation_ActivityMonitorTest#testActivityMonitor;android.app.cts.LocalActivityManagerTest#testStartActivity;android.app.cts.IntentServiceTest#testAndroidTestCaseSetupProperly;android.app.cts.ActionBarTest#testAddTab;android.app.cts.DialogTest#testSetCancelMessage;android.app.cts.TimePickerDialogTest#testSaveInstanceState" />
+  <Entry uri="android.hardware" exclude="android.hardware.consumerir.cts.ConsumerIrTest#test_hasIrEmitter;android.hardware.consumerir.cts.ConsumerIrTest#test_getCarrierFrequencies;android.hardware.consumerir.cts.ConsumerIrTest#test_transmit;android.hardware.camera2.cts.CameraDeviceTest#testCameraDeviceCaptureBurst;android.hardware.camera2.cts.CameraDeviceTest#testCameraDeviceRepeatingBurst;android.hardware.cts.CameraGLTest#testSetPreviewTextureTextureCallback;android.hardware.cts.CameraTest#test3ALockInteraction;android.hardware.cts.CameraTest#testAutoExposureLock;android.hardware.cts.CameraTest#testAutoWhiteBalanceLock;android.hardware.cts.CameraTest#testCancelAutofocus;android.hardware.cts.CameraTest#testDisplayOrientation;android.hardware.cts.CameraTest#testEnableShutterSound;android.hardware.cts.CameraTest#testFaceDetection;android.hardware.cts.CameraTest#testFocusAreas;android.hardware.cts.CameraTest#testFocusDistances;android.hardware.cts.CameraTest#testGetParameterDuringFocus;android.hardware.cts.CameraTest#testInvalidParameters;android.hardware.cts.CameraTest#testJpegCallbackStartPreview;android.hardware.cts.CameraTest#testJpegExif;android.hardware.cts.CameraTest#testJpegThumbnailSize;android.hardware.cts.CameraTest#testLockUnlock;android.hardware.cts.CameraTest#testMeteringAreas;android.hardware.cts.CameraTest#testMultiCameraRelease;android.hardware.cts.CameraTest#testMultipleCameras;android.hardware.cts.CameraTest#testParameters;android.hardware.cts.CameraTest#testPreviewCallbackWithBuffer;android.hardware.cts.CameraTest#testPreviewCallbackWithPicture;android.hardware.cts.CameraTest#testPreviewFormats;android.hardware.cts.CameraTest#testPreviewFpsRange;android.hardware.cts.CameraTest#testPreviewPictureSizesCombination;android.hardware.cts.CameraTest#testRecordingHint;android.hardware.cts.CameraTest#testSceneMode;android.hardware.cts.CameraTest#testSetOneShotPreviewCallback;android.hardware.cts.CameraTest#testSetPreviewDisplay;android.hardware.cts.CameraTest#testTakePicture;android.hardware.camera2.cts.ImageReaderTest#testImageReaderInvalidAccessTest;android.hardware.cts.SensorAccelerometerTest#testEventJittering;android.hardware.cts.SensorGyroscopeTest#testEventsArriveInOrder;android.hardware.camera2.cts.CameraCharacteristicsTest#testCameraCharacteristicsAndroidScalerAvailableJpegSizes;android.hardware.cts.SensorAccelerometerTest#testCanReceiveBatchEvents;android.hardware.camera2.cts.CameraCharacteristicsTest#testCameraCharacteristicsAndroidSensorOrientation;android.hardware.camera2.cts.CameraCharacteristicsTest#testAndroidTestCaseSetupProperly;android.hardware.cts.SensorMagneticFieldTest#testUpdateRate;android.hardware.cts.SensorAccelerometerTest#testNotTriggerSensor;android.hardware.cts.SensorAccelerometerTest#testAndroidTestCaseSetupProperly;android.hardware.cts.SensorAccelerometerTest#testCanReceiveEvents;android.hardware.cts.SensorMagneticFieldTest#testVarianceWhileStatic;android.hardware.camera2.cts.CameraCharacteristicsTest#testCameraCharacteristicsAndroidLensInfoHyperfocalDistance;android.hardware.camera2.cts.CameraManagerTest#testCameraManagerOpenCamerasSerially;android.hardware.camera2.cts.CameraDeviceTest#testCameraDeviceCreateCaptureBuilder;android.hardware.camera2.cts.CameraCharacteristicsTest#testCameraCharacteristicsAndroidScalerAvailableProcessedMinDurations;android.hardware.camera2.cts.CameraCharacteristicsTest#testCameraCharacteristicsAndroidFlashInfoAvailable;android.hardware.camera2.cts.CameraCharacteristicsTest#testCameraCharacteristicsAndroidLensInfoShadingMapSize;android.hardware.cts.LowRamDeviceTest#testAndroidTestCaseSetupProperly;android.hardware.cts.SensorTest#testSensorOperations;android.hardware.camera2.cts.CameraCharacteristicsTest#testCameraCharacteristicsAndroidControlAwbAvailableModes;android.hardware.camera2.cts.CameraCharacteristicsTest#testCameraCharacteristicsAndroidSensorBaseGainFactor;android.hardware.camera2.cts.CameraCharacteristicsTest#testCameraCharacteristicsAndroidSensorInfoPhysicalSize;android.hardware.camera2.cts.CameraCharacteristicsTest#testCameraCharacteristicsAndroidInfoSupportedHardwareLevel;android.hardware.camera2.cts.CameraCharacteristicsTest#testCameraCharacteristicsAndroidJpegAvailableThumbnailSizes;android.hardware.cts.SensorGyroscopeTest#testNotTriggerSensor;android.hardware.camera2.cts.CameraCharacteristicsTest#testCameraCharacteristicsAndroidLensFacing;android.hardware.cts.Camera_ParametersTest#testAccessMethods;android.hardware.cts.SensorMagneticFieldTest#testCanRegisterListener;android.hardware.camera2.cts.CameraCharacteristicsTest#testCameraCharacteristicsAndroidScalerAvailableFormats;android.hardware.cts.SensorTest#testBatchAndFlush;android.hardware.cts.SensorGyroscopeTest#testAndroidTestCaseSetupProperly;android.hardware.cts.SensorMagneticFieldTest#testCanReceiveEvents;android.hardware.camera2.cts.CameraCharacteristicsTest#testCameraCharacteristicsAndroidControlAvailableEffects;android.hardware.camera2.cts.CameraManagerTest#testAndroidTestCaseSetupProperly;android.hardware.cts.SensorGyroscopeTest#testSeveralClientsBatching;android.hardware.camera2.cts.CameraCharacteristicsTest#testCameraCharacteristicsAndroidControlAeAvailableAntibandingModes;android.hardware.cts.GeomagneticFieldTest#testAndroidTestCaseSetupProperly;android.hardware.cts.SensorAccelerometerTest#testStartStopRepeatedly;android.hardware.camera2.cts.CameraCharacteristicsTest#testCameraCharacteristicsAndroidControlAfAvailableModes;android.hardware.camera2.cts.CameraCharacteristicsTest#testCameraCharacteristicsAndroidSensorMaxAnalogSensitivity;android.hardware.cts.SensorTest#testRequestTriggerWithNonTriggerSensor;android.hardware.cts.SensorMagneticFieldTest#testBatchEventsArriveInOrder;android.hardware.camera2.cts.CameraCharacteristicsTest#testCameraCharacteristicsAndroidLensInfoMinimumFocusDistance;android.hardware.cts.SensorTest#testValuesForAllSensors;android.hardware.cts.SensorMagneticFieldTest#testCanReceiveBatchEvents;android.hardware.cts.SensorAccelerometerTest#testUpdateRate;android.hardware.cts.SensorMagneticFieldTest#testStartStopRepeatedly;android.hardware.camera2.cts.CameraCharacteristicsTest#testCameraCharacteristicsAndroidControlMaxRegions;android.hardware.cts.SensorMagneticFieldTest#testAndroidTestCaseSetupProperly;android.hardware.camera2.cts.CameraCharacteristicsTest#testCameraCharacteristicsAndroidControlAeCompensationRange;android.hardware.camera2.cts.CameraCharacteristicsTest#testCameraCharacteristicsAndroidRequestMaxNumOutputStreams;android.hardware.camera2.cts.CameraCharacteristicsTest#testCameraCharacteristicsAndroidSensorInfoSensitivityRange;android.hardware.cts.SensorMagneticFieldTest#testNotTriggerSensor;android.hardware.cts.SensorGyroscopeTest#testBatchEventsArriveInOrder;android.hardware.camera2.cts.CameraManagerTest#testCameraManagerInvalidDevice;android.hardware.cts.LowRamDeviceTest#testLowRamProductProperty;android.hardware.cts.SensorTest#testCancelTriggerWithNonTriggerSensor;android.hardware.cts.SensorMagneticFieldTest#testEventsArriveInOrder;android.hardware.cts.SensorMagneticFieldTest#testMaxFrequency;android.hardware.cts.SensorAccelerometerTest#testSeveralClientsBatching;android.hardware.cts.SensorMagneticFieldTest#testEventJittering;android.hardware.cts.SensorGyroscopeTest#testEventValidity;android.hardware.camera2.cts.ImageReaderTest#testImageReaderFromCameraRaw;android.hardware.camera2.cts.CameraCharacteristicsTest#testCameraCharacteristicsAndroidControlAeCompensationStep;android.hardware.cts.SensorMagneticFieldTest#testSeveralClientsBatching;android.hardware.camera2.cts.CameraManagerTest#testCameraManagerGetCameraCharacteristics;android.hardware.cts.SensorAccelerometerTest#testCanRegisterListener;android.hardware.camera2.cts.ImageReaderTest#testImageReaderFromCameraFlexibleYuv;android.hardware.camera2.cts.CameraCharacteristicsTest#testCameraCharacteristicsAndroidControlAvailableVideoStabilizationModes;android.hardware.cts.SensorGyroscopeTest#testStartStopRepeatedly;android.hardware.cts.SensorAccelerometerTest#testEventsArriveInOrder;android.hardware.cts.SensorMagneticFieldTest#testRegisterForBatchingZeroReport;android.hardware.cts.SensorGyroscopeTest#testCanRegisterListener;android.hardware.cts.SensorGyroscopeTest#testMaxFrequency;android.hardware.camera2.cts.CameraCharacteristicsTest#testCameraCharacteristicsAndroidScalerAvailableProcessedSizes;android.hardware.camera2.cts.CameraCharacteristicsTest#testCameraCharacteristicsAndroidControlAeAvailableTargetFpsRanges;android.hardware.camera2.cts.CameraCharacteristicsTest#testCameraCharacteristicsAndroidTonemapMaxCurvePoints;android.hardware.cts.SensorGyroscopeTest#testCanReceiveEvents;android.hardware.cts.SensorTest#testRegisterTwiceWithSameSensor;android.hardware.camera2.cts.CameraCharacteristicsTest#testCameraCharacteristicsAndroidLensInfoAvailableOpticalStabilization;android.hardware.camera2.cts.ImageReaderTest#testAndroidTestCaseSetupProperly;android.hardware.cts.SensorMagneticFieldTest#testSeveralClients;android.hardware.camera2.cts.CameraManagerTest#testCameraManagerOpenCameraTwice;android.hardware.cts.SensorMagneticFieldTest#testStartStopBatchingRepeatedly;android.hardware.camera2.cts.CameraCharacteristicsTest#testCameraCharacteristicsAndroidScalerAvailableMaxDigitalZoom;android.hardware.cts.SensorAccelerometerTest#testBatchEventsArriveInOrder;android.hardware.camera2.cts.CameraDeviceTest#testAndroidTestCaseSetupProperly;android.hardware.cts.SensorAccelerometerTest#testRegisterForBatchingZeroReport;android.hardware.camera2.cts.CameraCharacteristicsTest#testCameraCharacteristicsAndroidStatisticsInfoMaxFaceCount;android.hardware.camera2.cts.CameraCharacteristicsTest#testCameraCharacteristicsAndroidControlAvailableSceneModes;android.hardware.camera2.cts.CameraCharacteristicsTest#testCameraCharacteristicsAndroidSensorInfoActiveArraySize;android.hardware.camera2.cts.CameraCharacteristicsTest#testCameraCharacteristicsAndroidSensorInfoMaxFrameDuration;android.hardware.cts.SensorAccelerometerTest#testStartStopBatchingRepeatedly;android.hardware.cts.SensorGyroscopeTest#testEventJittering;android.hardware.camera2.cts.CameraDeviceTest#testCameraDeviceCapture;android.hardware.camera2.cts.CameraCharacteristicsTest#testCameraCharacteristicsAndroidSensorInfoExposureTimeRange;android.hardware.camera2.cts.CameraCharacteristicsTest#testCameraCharacteristicsAndroidLensInfoAvailableFocalLengths;android.hardware.cts.SensorGyroscopeTest#testCanReceiveBatchEvents;android.hardware.cts.SensorTest#testLegacySensorOperations;android.hardware.camera2.cts.CameraManagerTest#testCameraManagerListener;android.hardware.cts.GeomagneticFieldTest#testGeomagneticField;android.hardware.cts.SensorGyroscopeTest#testSeveralClients;android.hardware.cts.SensorGyroscopeTest#testStartStopBatchingRepeatedly;android.hardware.camera2.cts.CameraCharacteristicsTest#testCameraCharacteristicsAndroidLensInfoAvailableFilterDensities;android.hardware.camera2.cts.CameraDeviceTest#testCameraDeviceSetErrorListener;android.hardware.cts.SensorGyroscopeTest#testRegisterForBatchingZeroReport;android.hardware.camera2.cts.CameraManagerTest#testCameraManagerGetDeviceIdList;android.hardware.cts.SensorAccelerometerTest#testMaxFrequency;android.hardware.camera2.cts.CameraManagerTest#testCameraManagerOpenAllCameras;android.hardware.cts.SensorAccelerometerTest#testSeveralClients;android.hardware.cts.SensorGyroscopeTest#testVarianceWhileStatic;android.hardware.camera2.cts.CameraCharacteristicsTest#testCameraCharacteristicsAndroidScalerAvailableJpegMinDurations;android.hardware.cts.SensorTest#testAndroidTestCaseSetupProperly;android.hardware.camera2.cts.CameraCharacteristicsTest#testCameraCharacteristicsAndroidStatisticsInfoAvailableFaceDetectModes;android.hardware.camera2.cts.CameraCharacteristicsTest#testCameraCharacteristicsAndroidLensInfoAvailableApertures;android.hardware.cts.SensorAccelerometerTest#testEventValidity;android.hardware.cts.SensorAccelerometerTest#testUpdateBatchRate;android.hardware.cts.SensorAccelerometerTest#testVarianceWhileStatic;android.hardware.cts.SensorGyroscopeTest#testUpdateBatchRate;android.hardware.cts.SensorGyroscopeTest#testUpdateRate;android.hardware.cts.SensorMagneticFieldTest#testEventValidity;android.hardware.cts.SensorMagneticFieldTest#testUpdateBatchRate;android.hardware.cts.SensorTest#testRegisterWithTriggerSensor;android.hardware.cts.Camera_SizeTest#testConstructor" />
+  <Entry uri="android.media" exclude="android.media.cts.MediaPlayerTest#testLocalVideo_3gp_H263_176x144_300kbps_12fps_AAC_Stereo_24kbps_22050Hz;android.media.cts.AudioPreProcessingTest#test2_1AecCreateAndRelease;android.media.cts.MediaCodecTest#testConcurrentAudioVideoEncodings;android.media.cts.EnvReverbTest#test2_0SetEnabledGetEnabled;android.media.cts.EncodeDecodeTest#testEncodeDecodeVideoFromBufferToBufferQVGA;android.media.cts.AudioTrackTest#testSetLoopPointsStartTooFar;android.media.cts.RingtoneManagerTest#testStopPreviousRingtone;android.media.cts.EnvReverbTest#test1_3Reflections;android.media.cts.MediaPlayerTest#testGapless3;android.media.cts.MediaPlayerTest#testGapless2;android.media.cts.MediaPlayerTest#testGapless1;android.media.cts.BassBoostTest#testAndroidTestCaseSetupProperly;android.media.cts.EnvReverbTest#test3_1EnableStatusListener;android.media.cts.ExtractDecodeEditEncodeMuxTest#testExtractDecodeEditEncodeMuxQVGA;android.media.cts.MediaRecorderTest#testRecorderCamera;android.media.cts.MediaPlayerTest#testGetTrackInfo;android.media.cts.MediaDrmMockTest#testIsCryptoSchemeNotSupported;android.media.cts.AudioPreProcessingTest#testAndroidTestCaseSetupProperly;android.media.cts.DecodeEditEncodeTest#testVideoEditQCIF;android.media.cts.MediaPlayerTest#testDeselectTrack;android.media.cts.AudioEffectTest#test3_7SetParameterAfterRelease;android.media.cts.MediaPlayerTest#testLocalVideo_3gp_H263_176x144_56kbps_12fps_AAC_Mono_24kbps_22050Hz;android.media.cts.AudioEffectTest#test4_2ControlStatusListener;android.media.cts.StreamingMediaPlayerTest#testHTTP_MPEG4SP_AAC_Video1;android.media.cts.StreamingMediaPlayerTest#testHTTP_MPEG4SP_AAC_Video2;android.media.cts.JetPlayerTest#testLoadJetFromFd;android.media.cts.MediaDrmMockTest#testProvideProvisionResponse;android.media.cts.JetPlayerTest#testQueueJetSegmentMuteArray;android.media.cts.StreamingMediaPlayerTest#testPlayOggStream;android.media.cts.MediaPlayerTest#testLocalVideo_MP4_H264_480x360_1350kbps_25fps_AAC_Stereo_128kbps_44110Hz;android.media.cts.SoundPoolAacTest#testAndroidTestCaseSetupProperly;android.media.cts.PresetReverbTest#test3_2ParameterChangedListener;android.media.cts.MediaDrmMockTest#testNullPropertyString;android.media.cts.AudioEffectTest#test3_2SetParameterIntShort;android.media.cts.AudioRecord_BufferSizeTest#testGetMinBufferSize;android.media.cts.AudioEffectTest#test3_0SetParameterByteArrayByteArray;android.media.cts.MediaScannerConnectionTest#testAndroidTestCaseSetupProperly;android.media.cts.MediaPlayerTest#testLocalVideo_MP4_H264_480x360_1000kbps_30fps_AAC_Stereo_128kbps_44110Hz;android.media.cts.AudioTrackTest#testWriteShortSizeTooBig;android.media.cts.AudioTrackTest#testGetMinBufferSizeTooLowSR;android.media.cts.AudioEffectTest#test1_1ConstructorFromUuid;android.media.cts.ToneGeneratorTest#testSyncGenerate;android.media.cts.AudioEffectTest#test1_3GetEnabledAfterRelease;android.media.cts.BassBoostTest#test1_1Properties;android.media.cts.SoundPoolOggTest#testLoadMore;android.media.cts.AudioEffectTest#test1_7AuxiliaryOnAudioTrack;android.media.cts.MediaPlayerTest#testLocalVideo_3gp_H263_176x144_300kbps_12fps_AAC_Stereo_128kbps_11025Hz;android.media.cts.MediaCodecListTest#testMediaCodecXmlFileExist;android.media.cts.MediaPlayerTest#testLocalVideo_MP4_H264_480x360_1000kbps_25fps_AAC_Stereo_128kbps_44110Hz;android.media.cts.VisualizerTest#test2_1ListenerCapture;android.media.cts.MediaPlayerTest#testLocalVideo_3gp_H263_176x144_56kbps_25fps_AAC_Stereo_24kbps_11025Hz;android.media.cts.StreamingMediaPlayerTest#testPlayMp3Stream2;android.media.cts.StreamingMediaPlayerTest#testPlayMp3Stream1;android.media.cts.MediaPlayerTest#testPlayNullSource;android.media.cts.VirtualizerTest#testAndroidTestCaseSetupProperly;android.media.cts.EncodeVirtualDisplayWithCompositionTest#testSingleVirtualDisplay;android.media.cts.DecoderTest#testDecodeOgg;android.media.cts.MediaRecorderTest#testOnErrorListener;android.media.cts.EnvReverbTest#test2_1SetEnabledAfterRelease;android.media.cts.AudioTrackTest#testSetPlaybackRate;android.media.cts.AudioManagerTest#testVibrateNotification;android.media.cts.AudioManagerTest#testAccessMode;android.media.cts.EqualizerTest#test1_4SetBandLevelAfterRelease;android.media.cts.MediaPlayerTest#testPlayVideo;android.media.cts.MediaCodecTest#testSignalSurfaceEOS;android.media.cts.VisualizerTest#test0_0ConstructorAndRelease;android.media.cts.DecoderTest#testDecodeFlac;android.media.cts.MediaDrmMockTest#testEventWithSessionAndData;android.media.cts.MediaScannerConnectionTest#testMediaScannerConnection;android.media.cts.AudioTrackTest#testConstructorMono8MusicStatic;android.media.cts.AudioManagerTest#testMicrophoneMute;android.media.cts.MediaDrmMockTest#testMissingPropertyString;android.media.cts.MediaPlayerTest#testLocalVideo_3gp_H263_176x144_300kbps_25fps_AAC_Stereo_128kbps_22050Hz;android.media.cts.AudioTrackTest#testConstructorStereo16MusicStream;android.media.cts.Vp8EncoderTest#testAndroidTestCaseSetupProperly;android.media.cts.MediaDrmMockTest#testQueryKeyStatus;android.media.cts.BassBoostTest#test3_2ParameterChangedListener;android.media.cts.AudioManagerTest#testVibrateRinger;android.media.cts.AudioManagerTest#testMusicActive;android.media.cts.DecoderTest#testCodecResetsVP8WithoutSurface;android.media.cts.MediaPlayerTest#testRecordedVideoPlayback90;android.media.cts.MediaPlayerFlakyNetworkTest#test_S3P00001;android.media.cts.AudioTrackTest#testGetMinBufferSizeTooHighSR;android.media.cts.CamcorderProfileTest#testAndroidTestCaseSetupProperly;android.media.cts.MediaPlayerTest#testLocalVideo_3gp_H263_176x144_56kbps_25fps_AAC_Stereo_128kbps_11025Hz;android.media.cts.AudioManagerTest#testVolume;android.media.cts.MediaMuxerTest#testAudioOnly;android.media.cts.MediaPlayerTest#testLocalVideo_3gp_H263_176x144_56kbps_12fps_AAC_Stereo_128kbps_22050Hz;android.media.cts.AudioEffectTest#test1_6AuxiliaryOnMediaPlayerFailure;android.media.cts.DecoderTest#testCodecResetsMpeg4WithSurface;android.media.cts.AudioEffectTest#test4_1setParameterLowerPriority;android.media.cts.MediaPlayerTest#testLocalVideo_MP4_H264_480x360_500kbps_30fps_AAC_Stereo_128kbps_44110Hz;android.media.cts.DecoderTest#testCodecResetsVP8WithSurface;android.media.cts.CamcorderProfileTest#testGet;android.media.cts.DecoderTest#testDecodeMonoM4a;android.media.cts.MediaRecorderTest#testSetCamera;android.media.cts.AudioTrackTest#testSetGetPlaybackRate;android.media.cts.EncodeDecodeTest#testEncodeDecodeVideoFromSurfaceToSurfaceQVGA;android.media.cts.EnvReverbTest#testAndroidTestCaseSetupProperly;android.media.cts.DecoderTest#testFlush;android.media.cts.AudioEffectTest#testAndroidTestCaseSetupProperly;android.media.cts.MediaPlayerTest#testLocalVideo_3gp_H263_176x144_300kbps_12fps_AAC_Mono_24kbps_11025Hz;android.media.cts.DecoderTest#testDecodeMp3Lame;android.media.cts.EncoderTest#testAMRNBEncoders;android.media.cts.MediaScannerTest#testAndroidTestCaseSetupProperly;android.media.cts.MediaCodecListTest#testRequiredMediaCodecList;android.media.cts.DecoderTest#testCodecResetsMpeg4WithoutSurface;android.media.cts.MediaRecorderTest#testGetAudioSourceMax;android.media.cts.MediaPlayerTest#testLocalVideo_MP4_H264_480x360_500kbps_25fps_AAC_Stereo_128kbps_44110Hz;android.media.cts.AudioTrackTest#testSetLoopPointsLoopTooLong;android.media.cts.EqualizerTest#test1_1BandFrequency;android.media.cts.EncoderTest#testAMRWBEncoders;android.media.cts.AudioTrackTest#testWriteShortNegativeSize;android.media.cts.AudioTrackTest#testConstructorStreamType;android.media.cts.MediaPlayerTest#testCallback;android.media.cts.BassBoostTest#test2_0SetEnabledGetEnabled;android.media.cts.MediaPlayerFlakyNetworkTest#test_S2P00001;android.media.cts.EncodeVirtualDisplayTest#testEncodeVirtualDisplay;android.media.cts.EncodeDecodeTest#testEncodeDecodeVideoFromSurfaceToSurfaceQCIF;android.media.cts.DecoderTest#testCodecEarlyEOSVP9;android.media.cts.MediaPlayerTest#testLocalVideo_MP4_H264_480x360_1350kbps_30fps_AAC_Stereo_192kbps_44110Hz;android.media.cts.DecoderTest#testCodecEarlyEOSVP8;android.media.cts.MediaPlayerFlakyNetworkTest#test_S5P00001;android.media.cts.MediaRandomTest#testRecorderRandomAction;android.media.cts.MediaDrmMockTest#testBadSession;android.media.cts.MediaPlayerTest#testLocalVideo_3gp_H263_176x144_56kbps_12fps_AAC_Stereo_128kbps_11025Hz;android.media.cts.CameraProfileTest#testGetWithId;android.media.cts.EnvReverbTest#test1_0Room;android.media.cts.StreamingMediaPlayerTest#testPlayMp3StreamNoLength;android.media.cts.SoundPoolAacTest#testMultiSound;android.media.cts.AudioTrackTest#testReloadStaticData;android.media.cts.MediaDrmMockTest#testAndroidTestCaseSetupProperly;android.media.cts.MediaPlayerTest#testPlayAudio;android.media.cts.MediaDrmMockTest#testGetKeyRequestNoOptionalParameters;android.media.cts.MediaRecorderTest#testSetMaxDuration;android.media.cts.AudioPreProcessingTest#test2_2AecSetEnabledGetEnabled;android.media.cts.AsyncPlayerTest#testAsyncPlayer;android.media.cts.DecoderTest#testCodecBasicVP8;android.media.cts.DecoderTest#testCodecBasicVP9;android.media.cts.AudioTrackTest#testSetLoopPointsStream;android.media.cts.AudioTrackTest#testConstructorStereo8MusicStatic;android.media.cts.MediaCodecTest#testDequeueSurface;android.media.cts.EncodeDecodeTest#testEncodeDecodeVideoFromBufferToBuffer720p;android.media.cts.MediaRecorderTest#testRecorderTimelapsedVideo;android.media.cts.MediaCodecTest#testAndroidTestCaseSetupProperly;android.media.cts.AudioTrackTest#testSetPlaybackHeadPositionStopped;android.media.cts.AudioTrackTest#testWriteByteSizeTooBig;android.media.cts.MediaMuxerTest#testAndroidTestCaseSetupProperly;android.media.cts.EnvReverbTest#test1_1Decay;android.media.cts.MediaPlayerTest#testLocalVideo_3gp_H263_176x144_300kbps_12fps_AAC_Stereo_128kbps_22050Hz;android.media.cts.DecoderTest#testDecodeWav;android.media.cts.DecoderTest#testCodecEarlyEOSH263;android.media.cts.SoundPoolOggTest#testSoundPoolOp;android.media.cts.DecoderTest#testCodecEarlyEOSH264;android.media.cts.MediaPlayerFlakyNetworkTest#test_S6P00002;android.media.cts.EnvReverbTest#test1_2Reverb;android.media.cts.AudioManagerTest#testSoundEffects;android.media.cts.ToneGeneratorTest#testAndroidTestCaseSetupProperly;android.media.cts.MediaCodecTest#testReconfigureWithoutSurface;android.media.cts.RingtoneManagerTest#testConstructors;android.media.cts.MediaCodecListTest#testGetCapabilities;android.media.cts.MediaDrmMockTest#testIsMimeTypeSupported;android.media.cts.DecoderTest#testDecodeMonoMp3;android.media.cts.DecoderTest#testCodecResetsH263WithoutSurface;android.media.cts.MediaScannerNotificationTest#testMediaScannerNotification;android.media.cts.VisualizerTest#testAndroidTestCaseSetupProperly;android.media.cts.VirtualizerTest#test0_0ConstructorAndRelease;android.media.cts.MediaPlayerTest#testLocalVideo_3gp_H263_176x144_56kbps_25fps_AAC_Mono_24kbps_22050Hz;android.media.cts.AudioTrackTest#testWriteShort;android.media.cts.AudioRecordTest#testAndroidTestCaseSetupProperly;android.media.cts.ExtractDecodeEditEncodeMuxTest#testExtractDecodeEditEncodeMux720p;android.media.cts.EqualizerTest#test3_0ControlStatusListener;android.media.cts.MediaDrmMockTest#testRestoreKeys;android.media.cts.MediaMuxerTest#testVideoAudio;android.media.cts.MediaPlayerTest#testLocalVideo_3gp_H263_176x144_56kbps_25fps_AAC_Mono_24kbps_11025Hz;android.media.cts.AudioTrackTest#testConstructorStereo8MusicStream;android.media.cts.MediaPlayerTest#testSetNextMediaPlayerWithRelease;android.media.cts.VisualizerTest#test1_0CaptureRates;android.media.cts.CameraProfileTest#testAndroidTestCaseSetupProperly;android.media.cts.EncodeVirtualDisplayWithCompositionTest#testAndroidTestCaseSetupProperly;android.media.cts.EncodeDecodeTest#testEncodeDecodeVideoFromBufferToSurfaceQVGA;android.media.cts.VirtualizerTest#test1_1Properties;android.media.cts.AudioManagerTest#testRouting;android.media.cts.EqualizerTest#test3_1EnableStatusListener;android.media.cts.PresetReverbTest#test3_1EnableStatusListener;android.media.cts.EnvReverbTest#test0_0ConstructorAndRelease;android.media.cts.MediaPlayerTest#testChangeSubtitleTrack;android.media.cts.JetPlayerTest#testClone;android.media.cts.AudioEffectTest#test1_5AuxiliaryOnMediaPlayer;android.media.cts.MediaPlayerTest#testSetNextMediaPlayerWithReset;android.media.cts.AudioEffectTest#test2_0SetEnabledGetEnabled;android.media.cts.VisualizerTest#test1_1CaptureSize;android.media.cts.AudioTrackTest#testPlaybackHeadPositionAfterInit;android.media.cts.EqualizerTest#test1_3Properties;android.media.cts.AudioTrackTest#testWriteByte;android.media.cts.VirtualizerTest#test2_1SetEnabledAfterRelease;android.media.cts.AudioTrackTest#testSetStereoVolumeMin;android.media.cts.MediaRecorderTest#testRecorderVideo;android.media.cts.ExtractDecodeEditEncodeMuxTest#testExtractDecodeEditEncodeMuxAudioVideo;android.media.cts.EqualizerTest#test2_0SetEnabledGetEnabled;android.media.cts.MediaPlayerTest#testSetNextMediaPlayer;android.media.cts.AudioTrackTest#testSetStereoVolumeMid;android.media.cts.VirtualizerTest#test1_0Strength;android.media.cts.EncodeDecodeTest#testAndroidTestCaseSetupProperly;android.media.cts.AudioTrackTest#testAudioTrackProperties;android.media.cts.AudioTrackTest#testSetPlaybackHeadPositionPaused;android.media.cts.SoundPoolAacTest#testLoadMore;android.media.cts.ExtractDecodeEditEncodeMuxTest#testExtractDecodeEditEncodeMuxQCIF;android.media.cts.EncodeVirtualDisplayTest#testAndroidTestCaseSetupProperly;android.media.cts.RingtoneManagerTest#testSetType;android.media.cts.MediaDrmMockTest#testMultipleSessions;android.media.cts.MediaPlayerFlakyNetworkTest#test_S0P0;android.media.cts.SoundPoolOggTest#testLoad;android.media.cts.PresetReverbTest#test0_0ConstructorAndRelease;android.media.cts.RingtoneManagerTest#testAccessMethods;android.media.cts.EnvReverbTest#test1_4DiffusionAndDensity;android.media.cts.MediaPlayerTest#testLocalVideo_3gp_H263_176x144_56kbps_12fps_AAC_Stereo_24kbps_22050Hz;android.media.cts.MediaPlayerTest#testLocalVideo_3gp_H263_176x144_300kbps_25fps_AAC_Stereo_24kbps_22050Hz;android.media.cts.MediaDrmMockTest#testGetProvisionRequest;android.media.cts.CamcorderProfileTest#testGetWithId;android.media.cts.AudioEffectTest#test1_2ConstructorUnknownType;android.media.cts.SoundPoolOggTest#testAndroidTestCaseSetupProperly;android.media.cts.AudioTrackTest#testWriteByte8bit;android.media.cts.PresetReverbTest#testAndroidTestCaseSetupProperly;android.media.cts.EncoderTest#testAACEncoders;android.media.cts.ExtractDecodeEditEncodeMuxTest#testExtractDecodeEditEncodeMuxAudio;android.media.cts.DecoderTest#testCodecBasicH263;android.media.cts.DecoderTest#testCodecBasicH264;android.media.cts.AudioTrackTest#testSetLoopPointsSuccess;android.media.cts.MediaDrmMockTest#testRemoveKeys;android.media.cts.FaceDetectorTest#testFindFaces;android.media.cts.MediaDrmMockTest#testGetKeyRequest;android.media.cts.MediaCodecListTest#testIsAVCBaselineProfileSupported;android.media.cts.AudioEffectTest#test3_4SetParameterIntArrayIntArray;android.media.cts.MediaCodecListTest#testIsH263BaselineProfileSupported;android.media.cts.EqualizerTest#test0_0ConstructorAndRelease;android.media.cts.EqualizerTest#test3_2ParameterChangedListener;android.media.cts.AudioTrackTest#testSetPlaybackRateZero;android.media.cts.MediaDrmMockTest#testGetSecureStops;android.media.cts.EnvReverbTest#test3_2ParameterChangedListener;android.media.cts.StreamingMediaPlayerTest#testHTTP_H263_AMR_Video2;android.media.cts.MediaDrmMockTest#testGetKeyRequestRelease;android.media.cts.StreamingMediaPlayerTest#testHTTP_H263_AMR_Video1;android.media.cts.EqualizerTest#testAndroidTestCaseSetupProperly;android.media.cts.ExtractDecodeEditEncodeMuxTest#testAndroidTestCaseSetupProperly;android.media.cts.MediaDrmMockTest#testNullSession;android.media.cts.PresetReverbTest#test1_1Properties;android.media.cts.BassBoostTest#test3_1EnableStatusListener;android.media.cts.AudioTrack_ListenerTest#testAudioTrackCallbackWithHandler;android.media.cts.VirtualizerTest#test3_2ParameterChangedListener;android.media.cts.MediaPlayerTest#testLocalVideo_MP4_H264_480x360_1350kbps_30fps_AAC_Stereo_128kbps_44110Hz;android.media.cts.BassBoostTest#test1_0Strength;android.media.cts.AudioTrackTest#testPlaybackHeadPositionAfterFlushAndPlay;android.media.cts.PresetReverbTest#test2_1SetEnabledAfterRelease;android.media.cts.AudioTrackTest#testWriteShortNegativeOffset;android.media.cts.DecoderTest#testCodecResetsMp3;android.media.cts.AudioTrackTest#testPlaybackHeadPositionAfterFlush;android.media.cts.MediaScannerTest#testCanonicalize;android.media.cts.MediaDrmMockTest#testMediaDrmConstructorFails;android.media.cts.PresetReverbTest#test2_0SetEnabledGetEnabled;android.media.cts.MediaDrmMockTest#testCryptoSession;android.media.cts.DecoderTest#testCodecResetsH263WithSurface;android.media.cts.AudioPreProcessingTest#test1_1NsCreateAndRelease;android.media.cts.DecodeEditEncodeTest#testAndroidTestCaseSetupProperly;android.media.cts.AudioEffectTest#test3_6SetParameterIntArrayByteArray;android.media.cts.AudioTrackTest#testPlaybackHeadPositionAfterStop;android.media.cts.AsyncPlayerTest#testAndroidTestCaseSetupProperly;android.media.cts.AudioPreProcessingTest#test3_2AgcSetEnabledGetEnabled;android.media.cts.MediaDrmMockTest#testGetKeyRequestOffline;android.media.cts.MediaDrmMockTest#testReleaseSecureStops;android.media.cts.MediaPlayerFlakyNetworkTest#test_S4P00001;android.media.cts.MediaDrmMockTest#testNullPropertyByteArray;android.media.cts.EqualizerTest#test1_2Presets;android.media.cts.EnvReverbTest#test1_5Properties;android.media.cts.CameraProfileTest#testGetImageEncodingQualityParameter;android.media.cts.VirtualizerTest#test3_0ControlStatusListener;android.media.cts.AudioTrackTest#testWriteByteNegativeOffset;android.media.cts.StreamingMediaPlayerTest#testPlayMp3StreamRedirect;android.media.cts.DecoderTest#testCodecEarlyEOSMpeg4;android.media.cts.EnvReverbTest#test3_0ControlStatusListener;android.media.cts.EncodeDecodeTest#testEncodeDecodeVideoFromBufferToSurfaceQCIF;android.media.cts.EncodeDecodeTest#testEncodeDecodeVideoFromBufferToSurface720p;android.media.cts.MediaDrmMockTest#testCryptoSessionEncrypt;android.media.cts.EqualizerTest#test1_0BandLevel;android.media.cts.EncodeVirtualDisplayWithCompositionTest#testMultipleVirtualDisplays;android.media.cts.AudioTrack_ListenerTest#testAudioTrackCallback;android.media.cts.DecoderTest#testCodecResetsVP9WithoutSurface;android.media.cts.DecodeEditEncodeTest#testVideoEdit720p;android.media.cts.AudioEffectTest#test1_0ConstructorFromType;android.media.cts.AudioTrackTest#testPlayStreamData;android.media.cts.MediaDrmMockTest#testCryptoSessionSign;android.media.cts.MediaDrmMockTest#testMediaDrmConstructor;android.media.cts.AudioTrackTest#testSetStereoVolumeMax;android.media.cts.MediaMuxerTest#testIllegalStateExceptions;android.media.cts.MediaCodecTest#testCreateInputSurfaceErrors;android.media.cts.AudioTrackTest#testConstructorMono16MusicStatic;android.media.cts.MediaDrmMockTest#testOpenCloseSession;android.media.cts.AudioManagerTest#testAndroidTestCaseSetupProperly;android.media.cts.DecoderTest#testEOSBehaviorMpeg4;android.media.cts.SoundPoolOggTest#testMultiSound;android.media.cts.AudioTrackTest#testConstructorMono8MusicStream;android.media.cts.MediaCodecListTest#testIsM4VSimpleProfileSupported;android.media.cts.VirtualizerTest#test1_2SetStrengthAfterRelease;android.media.cts.MediaDrmMockTest#testCryptoSessionVerify;android.media.cts.MediaMuxerTest#testVideoOnly;android.media.cts.AudioTrackTest#testWriteShortOffsetTooBig;android.media.cts.AudioManagerTest#testSetInvalidRingerMode;android.media.cts.MediaDrmMockTest#testIsMimeTypeNotSupported;android.media.cts.StreamingMediaPlayerTest#testPlayOggStreamNoLength;android.media.cts.MediaPlayerFlakyNetworkTest#test_S1P000005;android.media.cts.MediaRandomTest#testPlayerRandomAction;android.media.cts.EncoderTest#testAndroidTestCaseSetupProperly;android.media.cts.MediaPlayerTest#testRecordedVideoPlayback0;android.media.cts.AudioRecordTest#testAudioRecordProperties;android.media.cts.AudioTrackTest#testWriteByteOffsetTooBig;android.media.cts.PresetReverbTest#test3_0ControlStatusListener;android.media.cts.DecodeEditEncodeTest#testVideoEditQVGA;android.media.cts.MediaDrmMockTest#testMissingPropertyByteArray;android.media.cts.MediaPlayerTest#testRecordAndPlay;android.media.cts.PresentationSyncTest#testThroughput;android.media.cts.MediaPlayerTest#testVideoSurfaceResetting;android.media.cts.AudioTrack_ListenerTest#testAndroidTestCaseSetupProperly;android.media.cts.EncodeDecodeTest#testEncodeDecodeVideoFromBufferToBufferQCIF;android.media.cts.MediaPlayerTest#testRecordedVideoPlayback180;android.media.cts.MediaRecorderTest#testRecorderAudio;android.media.cts.EqualizerTest#test2_1SetEnabledAfterRelease;android.media.cts.AudioTrackTest#testPlaybackHeadPositionAfterPause;android.media.cts.MediaPlayerTest#testLocalVideo_3gp_H263_176x144_300kbps_25fps_AAC_Stereo_128kbps_11025Hz;android.media.cts.MediaRecorderTest#testSetMaxFileSize;android.media.cts.Vp8EncoderTest#testBasic;android.media.cts.AudioTrackTest#testPlaybackHeadPositionIncrease;android.media.cts.AudioTrackTest#testAndroidTestCaseSetupProperly;android.media.cts.MediaDrmMockTest#testEventNoSessionNoData;android.media.cts.MediaDrmMockTest#testByteArrayProperties;android.media.cts.DecoderTest#testCodecResetsM4a;android.media.cts.RingtoneTest#testAndroidTestCaseSetupProperly;android.media.cts.AudioPreProcessingTest#test3_1AgcCreateAndRelease;android.media.cts.AudioTrackTest#testSetPlaybackRateTwiceOutputSR;android.media.cts.PresetReverbTest#test1_0Presets;android.media.cts.StreamingMediaPlayerTest#testPlayOggStreamRedirect;android.media.cts.MediaCodecListTest#testAndroidTestCaseSetupProperly;android.media.cts.AudioTrackTest#testSetLoopPointsStartAfterEnd;android.media.cts.MediaRecorderTest#testOnInfoListener;android.media.cts.VirtualizerTest#test3_1EnableStatusListener;android.media.cts.DecoderTest#testCodecResetsH264WithoutSurface;android.media.cts.MediaPlayerTest#testLocalVideo_3gp_H263_176x144_300kbps_12fps_AAC_Stereo_24kbps_11025Hz;android.media.cts.MediaPlayerTest#testRecordedVideoPlayback270;android.media.cts.BassBoostTest#test3_0ControlStatusListener;android.media.cts.EncodeDecodeTest#testEncodeDecodeVideoFromSurfaceToSurface720p;android.media.cts.AudioTrackTest#testSetPlaybackRateUninit;android.media.cts.BassBoostTest#test2_1SetEnabledAfterRelease;android.media.cts.AudioEffectTest#test0_0QueryEffects;android.media.cts.VisualizerTest#test2_0PollingCapture;android.media.cts.MediaDrmMockTest#testStringProperties;android.media.cts.BassBoostTest#test0_0ConstructorAndRelease;android.media.cts.MediaScannerNotificationTest#testAndroidTestCaseSetupProperly;android.media.cts.AudioTrackTest#testConstructorMono16MusicStream;android.media.cts.MediaRecorderTest#testRecordingAudioInRawFormats;android.media.cts.AudioEffectTest#test3_1SetParameterIntInt;android.media.cts.DecoderTest#testEOSBehaviorVP8;android.media.cts.StreamingMediaPlayerTest#testHTTP_H264Base_AAC_Video2;android.media.cts.AudioEffectTest#test1_4InsertOnMediaPlayer;android.media.cts.StreamingMediaPlayerTest#testHTTP_H264Base_AAC_Video1;android.media.cts.DecoderTest#testCodecResetsVP9WithSurface;android.media.cts.JetPlayerTest#testLoadJetFromPath;android.media.cts.DecoderTest#testEOSBehaviorVP9;android.media.cts.MediaDrmMockTest#testProvideKeyResponse;android.media.cts.DecoderTest#testDecodeM4a;android.media.cts.AudioTrackTest#testWriteByteNegativeSize;android.media.cts.AudioEffectTest#test4_0setEnabledLowerPriority;android.media.cts.MediaPlayerTest#testLocalVideo_3gp_H263_176x144_300kbps_12fps_AAC_Mono_24kbps_22050Hz;android.media.cts.DecoderTest#testEOSBehaviorH264;android.media.cts.DecoderTest#testEOSBehaviorH263;android.media.cts.DecoderTest#testDecodeMonoOgg;android.media.cts.MediaPlayerTest#testLocalVideo_3gp_H263_176x144_56kbps_12fps_AAC_Stereo_24kbps_11025Hz;android.media.cts.MediaPlayerTest#testLocalVideo_3gp_H263_176x144_56kbps_25fps_AAC_Stereo_24kbps_22050Hz;android.media.cts.AudioTrackTest#testSetPlaybackHeadPositionTooFar;android.media.cts.AudioRecord_BufferSizeTest#testAndroidTestCaseSetupProperly;android.media.cts.MediaPlayerTest#testLocalVideo_3gp_H263_176x144_56kbps_12fps_AAC_Mono_24kbps_11025Hz;android.media.cts.MediaCodecListTest#testComponentInstantiation;android.media.cts.BassBoostTest#test1_2SetStrengthAfterRelease;android.media.cts.MediaPlayerTest#testLocalVideo_3gp_H263_176x144_300kbps_25fps_AAC_Stereo_24kbps_11025Hz;android.media.cts.AudioTrackTest#testSetLoopPointsEndTooFar;android.media.cts.MediaPlayerTest#testLocalVideo_3gp_H263_176x144_300kbps_25fps_AAC_Mono_24kbps_11025Hz;android.media.cts.MediaScannerTest#testMediaScanner;android.media.cts.RingtoneTest#testRingtone;android.media.cts.AudioEffectTest#test5_0Command;android.media.cts.DecoderTest#testDecodeMp3Smpb;android.media.cts.AudioTrackTest#testWriteShort8bit;android.media.cts.AudioEffectTest#test3_3SetParameterIntByteArray;android.media.cts.AudioEffectTest#test4_3EnableStatusListener;android.media.cts.MediaPlayerTest#testLocalVideo_3gp_H263_176x144_300kbps_25fps_AAC_Mono_24kbps_22050Hz;android.media.cts.JetPlayerTest#testAndroidTestCaseSetupProperly;android.media.cts.Vp8EncoderTest#testSyncFrame;android.media.cts.VirtualizerTest#test2_0SetEnabledGetEnabled;android.media.cts.MediaPlayerSurfaceTest#testSetSurface;android.media.cts.SoundPoolAacTest#testLoad;android.media.cts.AudioEffectTest#test3_5SetParameterIntArrayShortArray;android.media.cts.MediaDrmMockTest#testBadCryptoSession;android.media.cts.AudioTrackTest#testConstructorStereo16MusicStatic;android.media.cts.AudioPreProcessingTest#test1_2NsSetEnabledGetEnabled;android.media.cts.AudioEffectTest#test2_1SetEnabledAfterRelease;android.media.cts.AudioManagerTest#testAccessRingMode;android.media.cts.SoundPoolAacTest#testSoundPoolOp;android.media.cts.AudioEffectTest#test4_4ParameterChangedListener;android.media.cts.DecoderTest#testCodecBasicMpeg4;android.media.cts.AudioTrackTest#testSetPlaybackHeadPositionPlaying;android.media.cts.AudioRecordTest#testAudioRecordOP;android.media.cts.MediaScannerTest#testWildcardPaths;android.media.cts.AudioEffectTest#test3_8GetParameterAfterRelease;android.media.cts.FaceDetector_FaceTest#testFaceProperties;android.media.cts.MediaPlayerTest#testLocalVideo_3gp_H263_176x144_56kbps_25fps_AAC_Stereo_128kbps_22050Hz;android.media.cts.MediaDrmMockTest#testCryptoSessionDecrypt" />
+  <Entry uri="android.mediastress" exclude="android.mediastress.cts.H264R720pAacShortPlayerTest#testPlay00;android.mediastress.cts.Vp8R480x360ShortPlayerTest#testPlay10;android.mediastress.cts.Vp8R480x360ShortPlayerTest#testPlay11;android.mediastress.cts.H264R720pAacShortPlayerTest#testPlay07;android.mediastress.cts.H264R720pAacShortPlayerTest#testPlay08;android.mediastress.cts.H264R480pAacShortPlayerTest#testPlay10;android.mediastress.cts.H264R720pAacShortPlayerTest#testPlay05;android.mediastress.cts.H264R480pAacShortPlayerTest#testPlay11;android.mediastress.cts.H264R720pAacShortPlayerTest#testPlay06;android.mediastress.cts.H264R720pAacShortPlayerTest#testPlay03;android.mediastress.cts.H264R720pAacShortPlayerTest#testPlay04;android.mediastress.cts.MediaRecorderStressTest#testStressRecorder;android.mediastress.cts.H264R720pAacShortPlayerTest#testPlay01;android.mediastress.cts.H264R720pAacShortPlayerTest#testPlay02;android.mediastress.cts.H263QcifShortPlayerTest#testPlay07;android.mediastress.cts.MediaRecorderStressTest#testStressCamera;android.mediastress.cts.H263QcifShortPlayerTest#testPlay08;android.mediastress.cts.H263QcifShortPlayerTest#testPlay05;android.mediastress.cts.H263QcifShortPlayerTest#testPlay06;android.mediastress.cts.H263QcifShortPlayerTest#testPlay03;android.mediastress.cts.H263QcifShortPlayerTest#testPlay04;android.mediastress.cts.H263QcifShortPlayerTest#testPlay01;android.mediastress.cts.H263QcifShortPlayerTest#testPlay02;android.mediastress.cts.H264R720pAacLongPlayerTest#testPlay01;android.mediastress.cts.H264R720pAacLongPlayerTest#testPlay00;android.mediastress.cts.MediaRecorderStressTest#testStressCameraSwitchRecorder;android.mediastress.cts.H263QcifShortPlayerTest#testPlay09;android.mediastress.cts.H264R480x360AacShortPlayerTest#testPlay06;android.mediastress.cts.NativeMediaTest#test1080pPlay;android.mediastress.cts.H264R480x360AacShortPlayerTest#testPlay05;android.mediastress.cts.NativeMediaTest#testDefaultPlay;android.mediastress.cts.H264R480x360AacShortPlayerTest#testPlay08;android.mediastress.cts.H264R480x360AacShortPlayerTest#testPlay07;android.mediastress.cts.Vp8R480x360ShortPlayerTest#testPlay02;android.mediastress.cts.Vp8R480x360ShortPlayerTest#testPlay03;android.mediastress.cts.H264R480x360AacShortPlayerTest#testPlay09;android.mediastress.cts.Vp8R480x360ShortPlayerTest#testPlay00;android.mediastress.cts.Vp8R480x360ShortPlayerTest#testPlay01;android.mediastress.cts.Vp8R480x360ShortPlayerTest#testPlay06;android.mediastress.cts.H263QcifShortPlayerTest#testPlay00;android.mediastress.cts.H264R1080pAacShortPlayerTest#testPlay00;android.mediastress.cts.Vp8R480x360ShortPlayerTest#testPlay07;android.mediastress.cts.Vp8R480x360ShortPlayerTest#testPlay04;android.mediastress.cts.H264R480x360AacShortPlayerTest#testPlay00;android.mediastress.cts.Vp8R480x360ShortPlayerTest#testPlay05;android.mediastress.cts.H264R480x360AacShortPlayerTest#testPlay02;android.mediastress.cts.H264R480x360AacShortPlayerTest#testPlay01;android.mediastress.cts.Vp8R480x360ShortPlayerTest#testPlay08;android.mediastress.cts.H264R1080pAacShortPlayerTest#testPlay02;android.mediastress.cts.H264R480x360AacShortPlayerTest#testPlay04;android.mediastress.cts.Vp8R480x360ShortPlayerTest#testPlay09;android.mediastress.cts.H264R1080pAacShortPlayerTest#testPlay01;android.mediastress.cts.H264R480x360AacShortPlayerTest#testPlay03;android.mediastress.cts.H264R1080pAacRepeatedPlayerTest#testPlay00;android.mediastress.cts.H263QcifShortPlayerTest#testPlay13;android.mediastress.cts.H263QcifShortPlayerTest#testPlay12;android.mediastress.cts.H263QcifShortPlayerTest#testPlay15;android.mediastress.cts.H263QcifShortPlayerTest#testPlay14;android.mediastress.cts.H263QcifLongPlayerTest#testPlay00;android.mediastress.cts.H263QcifShortPlayerTest#testPlay17;android.mediastress.cts.H264R480pAacLongPlayerTest#testPlay00;android.mediastress.cts.H263QcifShortPlayerTest#testPlay16;android.mediastress.cts.H263QcifShortPlayerTest#testPlay19;android.mediastress.cts.H263QcifShortPlayerTest#testPlay18;android.mediastress.cts.H263QcifShortPlayerTest#testPlay10;android.mediastress.cts.H263QcifShortPlayerTest#testPlay11;android.mediastress.cts.H264R480x360AacShortPlayerTest#testPlay11;android.mediastress.cts.H264R480x360AacShortPlayerTest#testPlay10;android.mediastress.cts.NativeMediaTest#test720pPlay;android.mediastress.cts.H264R1080pAacLongPlayerTest#testPlay00;android.mediastress.cts.H264R720pAacShortPlayerTest#testPlay12;android.mediastress.cts.H264R480pAacShortPlayerTest#testPlay01;android.mediastress.cts.H264R480pAacShortPlayerTest#testPlay00;android.mediastress.cts.H263QcifShortPlayerTest#testPlay23;android.mediastress.cts.H264R720pAacShortPlayerTest#testPlay11;android.mediastress.cts.H264R720pAacShortPlayerTest#testPlay10;android.mediastress.cts.H263QcifShortPlayerTest#testPlay21;android.mediastress.cts.H263QcifShortPlayerTest#testPlay22;android.mediastress.cts.H263QcifShortPlayerTest#testPlay20;android.mediastress.cts.H264R480pAacShortPlayerTest#testPlay02;android.mediastress.cts.H264R480pAacShortPlayerTest#testPlay03;android.mediastress.cts.MediaRecorderStressTest#testStressRecordVideoAndPlayback;android.mediastress.cts.H264R720pAacShortPlayerTest#testPlay09;android.mediastress.cts.H264R480pAacShortPlayerTest#testPlay04;android.mediastress.cts.H264R480pAacShortPlayerTest#testPlay05;android.mediastress.cts.Vp8R480x360LongPlayerTest#testPlay00;android.mediastress.cts.H264R480pAacShortPlayerTest#testPlay06;android.mediastress.cts.H264R480pAacShortPlayerTest#testPlay07;android.mediastress.cts.H264R480pAacShortPlayerTest#testPlay08;android.mediastress.cts.H264R480pAacShortPlayerTest#testPlay09" />
+  <Entry uri="android.net" exclude="android.net.wifi.cts.ScanResultTest#testScanResultProperties;android.net.wifi.cts.WifiManagerTest#testWifiManagerActions;android.net.cts.UriTest#testStringUri;android.net.cts.UrlQuerySanitizer_IllegalCharacterValueSanitizerTest#testAndroidTestCaseSetupProperly;android.net.rtp.cts.AudioGroupTest#testAdd;android.net.rtp.cts.AudioGroupTest#testAndroidTestCaseSetupProperly;android.net.rtp.cts.AudioGroupTest#testRemove;android.net.cts.LocalSocketTest#testAccessors;android.net.http.cts.SslErrorTest#testConstructorIgnoresInvalidValues;android.net.cts.UriTest#testCompareTo;android.net.http.cts.SslErrorTest#testAddErrorIgnoresInvalidValues;android.net.cts.VpnServiceTest#testProtect_DatagramSocket;android.net.wifi.cts.WifiConfigurationTest#testAndroidTestCaseSetupProperly;android.net.rtp.cts.AudioCodecTest#testGetCodecs;android.net.http.cts.ApacheHttpClientTest#testExecute_withWifi;android.net.cts.DnsTest#testAndroidTestCaseSetupProperly;android.net.cts.VpnServiceTest#testAndroidTestCaseSetupProperly;android.net.wifi.cts.SupplicantStateTest#testAndroidTestCaseSetupProperly;android.net.cts.NetworkInfo_StateTest#testValues;android.net.cts.UriTest#testAndroidTestCaseSetupProperly;android.net.cts.LocalSocketTest#testLocalConnections;android.net.wifi.cts.WifiManager_WifiLockTest#testAndroidTestCaseSetupProperly;android.net.wifi.cts.WifiManagerTest#testWifiManagerNetWork;android.net.cts.ConnectivityManagerTest#testGetAllNetworkInfo;android.net.rtp.cts.AudioGroupTest#testTraffic;android.net.cts.Uri_BuilderTest#testBuilderOperations;android.net.cts.UriTest#testBuildUpon;android.net.cts.TrafficStatsTest#testAndroidTestCaseSetupProperly;android.net.cts.ProxyTest#testConstructor;android.net.rtp.cts.AudioCodecTest#testGetCodec;android.net.cts.DhcpInfoTest#testConstructor;android.net.cts.LocalSocketAddress_NamespaceTest#testValues;android.net.cts.ConnectivityManagerTest#testRequestRouteToHost;android.net.cts.ConnectivityManagerTest#testSetNetworkPreference;android.net.http.cts.SslCertificateTest#testState;android.net.cts.NetworkInfo_DetailedStateTest#testAndroidTestCaseSetupProperly;android.net.rtp.cts.AudioCodecTest#testConstants;android.net.http.cts.SslCertificateTest#testSslCertificate;android.net.cts.ProxyTest#testAccessProperties;android.net.cts.CredentialsTest#testCredentials;android.net.rtp.cts.AudioStreamTest#testDoubleRelease;android.net.cts.TrafficStatsTest#testValidMobileStats;android.net.http.cts.SslErrorTest#testGetUrlWithDeprecatedConstructor;android.net.cts.VpnServiceTest#testProtect_int;android.net.cts.ConnectivityManagerTest#testGetNetworkInfo;android.net.cts.MailToTest#testAndroidTestCaseSetupProperly;android.net.cts.LocalSocketTest#testAndroidTestCaseSetupProperly;android.net.cts.LocalSocketAddress_NamespaceTest#testAndroidTestCaseSetupProperly;android.net.cts.NetworkInfo_DetailedStateTest#testValueOf;android.net.cts.DhcpInfoTest#testAndroidTestCaseSetupProperly;android.net.cts.UriTest#testPathOperations;android.net.rtp.cts.AudioStreamTest#testAndroidTestCaseSetupProperly;android.net.http.cts.SslCertificate_DNameTest#testDName;android.net.wifi.cts.WifiManagerTest#testSignal;android.net.cts.UrlQuerySanitizerTest#testUrlQuerySanitizer;android.net.wifi.cts.WifiManager_WifiLockTest#testWifiLock;android.net.rtp.cts.AudioStreamTest#testSetCodec;android.net.cts.MailToTest#testParseMailToURI;android.net.cts.UriTest#testParcelling;android.net.cts.UrlQuerySanitizerTest#testAndroidTestCaseSetupProperly;android.net.wifi.cts.WifiConfigurationTest#testWifiConfiguration;android.net.cts.NetworkInfoTest#testAccessNetworkInfoProperties;android.net.cts.ConnectivityManagerTest#testTest;android.net.http.cts.SslErrorTest#testGetPrimaryError;android.net.cts.NetworkInfo_StateTest#testValueOf;android.net.cts.UriTest#testFromFile;android.net.cts.VpnServiceTest#testTunDevice;android.net.rtp.cts.AudioStreamTest#testSetDtmfType;android.net.cts.SSLCertificateSocketFactoryTest#testAndroidTestCaseSetupProperly;android.net.http.cts.SslCertificateTest#testConstructor;android.net.http.cts.SslErrorTest#testAddError;android.net.cts.UriTest#testNormalizeScheme;android.net.wifi.cts.WifiInfoTest#testAndroidTestCaseSetupProperly;android.net.cts.ConnectivityManagerTest#testStartUsingNetworkFeature;android.net.cts.UriTest#testHierarchicalUris;android.net.cts.DhcpInfoTest#testToString;android.net.rtp.cts.AudioStreamTest#testV6Stream;android.net.cts.LocalSocketAddressTest#testAndroidTestCaseSetupProperly;android.net.cts.UrlQuerySanitizer_IllegalCharacterValueSanitizerTest#testSanitize;android.net.rtp.cts.AudioStreamTest#testV4Stream;android.net.wifi.cts.ConcurrencyTest#testConcurrency;android.net.cts.LocalSocketAddress_NamespaceTest#testValueOf;android.net.wifi.cts.WifiManagerTest#testWifiWatchdog;android.net.cts.UriTest#testEqualsAndHashCode;android.net.cts.VpnServiceTest#testPrepare;android.net.cts.UriTest#testOpaqueUri;android.net.cts.UriTest#testQueryParameters;android.net.cts.TrafficStatsTest#testThreadStatsTag;android.net.wifi.cts.SupplicantStateTest#testIsValidState;android.net.http.cts.SslErrorTest#testHasError;android.net.cts.SSLCertificateSocketFactoryTest#testAccessProperties;android.net.cts.VpnServiceTest#testEstablish;android.net.ipv6.cts.PingTest#testAndroidTestCaseSetupProperly;android.net.cts.NetworkInfoTest#testAndroidTestCaseSetupProperly;android.net.cts.ConnectivityManagerTest#testAndroidTestCaseSetupProperly;android.net.cts.UriTest#testEncodeAndDecode;android.net.rtp.cts.AudioGroupTest#testClear;android.net.cts.NetworkInfo_StateTest#testAndroidTestCaseSetupProperly;android.net.cts.UrlQuerySanitizer_ParameterValuePairTest#testAndroidTestCaseSetupProperly;android.net.cts.ProxyTest#testAndroidTestCaseSetupProperly;android.net.cts.LocalServerSocketTest#testLocalServerSocket;android.net.cts.CredentialsTest#testAndroidTestCaseSetupProperly;android.net.rtp.cts.AudioCodecTest#testAndroidTestCaseSetupProperly;android.net.cts.UrlQuerySanitizer_ParameterValuePairTest#testConstructor;android.net.cts.NetworkInfo_DetailedStateTest#testValues;android.net.http.cts.SslErrorTest#testGetPrimaryErrorWithEmptySet;android.net.rtp.cts.AudioGroupTest#testSetMode;android.net.wifi.cts.WifiInfoTest#testWifiInfoProperties;android.net.wifi.cts.ConcurrencyTest#testAndroidTestCaseSetupProperly;android.net.http.cts.ApacheHttpClientTest#testAndroidTestCaseSetupProperly;android.net.wifi.cts.WifiManagerTest#testWifiManagerProperties;android.net.rtp.cts.AudioGroupTest#testDoubleClear;android.net.wifi.cts.WifiManagerTest#testAndroidTestCaseSetupProperly;android.net.cts.ConnectivityManagerTest#testGetActiveNetworkInfo;android.net.cts.LocalSocketAddressTest#testNewLocalSocketAddressWithDefaultNamespace;android.net.http.cts.SslErrorTest#testGetUrl;android.net.ipv6.cts.PingTest#testLoopbackPing;android.net.cts.TrafficStatsTest#testValidTotalStats;android.net.wifi.cts.WifiEnterpriseConfigTest#testAddEapNetwork;android.net.cts.VpnServiceTest#testProtect_Socket;android.net.wifi.cts.WifiEnterpriseConfigTest#testAndroidTestCaseSetupProperly;android.net.cts.ConnectivityManagerTest#testIsNetworkTypeValid;android.net.cts.ConnectivityManagerTest#testIsNetworkSupported;android.net.cts.LocalServerSocketTest#testAndroidTestCaseSetupProperly;android.net.wifi.cts.WifiEnterpriseConfigTest#testSettersAndGetters;android.net.http.cts.ApacheHttpClientTest#testExecute_withMobile" />
+  <Entry uri="android.provider" exclude="android.provider.cts.ContactsContract_CommonDataKinds_EventTest#testGetTypeLabel;android.provider.cts.MediaStore_Audio_Genres_MembersTest#testStoreAudioGenresMembersInternal;android.provider.cts.ContactsContract_DataTest#testDataInsert_updatesContactLastUpdatedTimestamp;android.provider.cts.ContactsContract_CommonDataKinds_EmailTest#testGetTypeLabel;android.provider.cts.Settings_NameValueTableTest#testPutString;android.provider.cts.CalendarTest#testCalendarEntityQuery;android.provider.cts.ContactsContract_DataUsageTest#testSingleDataUsageFeedback_incrementsCorrectDataItems;android.provider.cts.BrowserTest#testSendString;android.provider.cts.MediaStore_Video_MediaTest#testStoreVideoMediaInternal;android.provider.cts.UserDictionary_WordsTest#testAddWord_deprecated;android.provider.cts.MediaStoreIntentsTest#testAndroidTestCaseSetupProperly;android.provider.cts.ContactsContract_DeletedContacts#testQuerySinceTimestamp;android.provider.cts.BrowserTest#testRequestAllIcons;android.provider.cts.ContactsContract_CommonDataKinds_EmailTest#testAndroidTestCaseSetupProperly;android.provider.cts.CalendarTest#testReminders;android.provider.cts.MediaStore_Audio_ArtistsTest#testStoreAudioArtistsExternal;android.provider.cts.ContactsContractIntentsTest#testViewContactDir;android.provider.cts.CalendarTest#testBulkUpdate;android.provider.cts.ContactsContract_PhotoTest#testAddPhoto;android.provider.cts.Settings_NameValueTableTest#testAndroidTestCaseSetupProperly;android.provider.cts.ContactsProvider2_AccountRemovalTest#testAccountRemovalWithMergedContact_hasDeleteLogsForContacts;android.provider.cts.ContactsContract_PhotoTest#testAddEmptyPhoto;android.provider.cts.Settings_SecureTest#testGetPutFloat;android.provider.cts.MediaStore_Images_MediaTest#testGetContentUri;android.provider.cts.ContactsContract_DeletedContacts#testDelete_isUnsupported;android.provider.cts.CalendarTest#testCalendarCreationAndDeletion;android.provider.cts.BrowserTest#testBookmarksTable;android.provider.cts.Settings_SecureTest#testGetUriFor;android.provider.cts.ContactsContract_StatusUpdatesTest#testGetPresenceIconresourceId;android.provider.cts.MediaStore_Audio_Playlists_MembersTest#testStoreAudioPlaylistsMembersInternal;android.provider.cts.ContactsContract_CommonDataKinds_EventTest#testAndroidTestCaseSetupProperly;android.provider.cts.Contacts_PhonesTest#testGetDisplayLabel;android.provider.cts.ContactsContract_DeletedContacts#testInsert_isUnsupported;android.provider.cts.MediaStore_Audio_AlbumsTest#testStoreAudioAlbumsExternal;android.provider.cts.ContactsContract_DeletedContacts#testAndroidTestCaseSetupProperly;android.provider.cts.BrowserTest#testGetAllVisitedUrls;android.provider.cts.Contacts_ContactMethodsTest#testEncodeAndDecodeProtocol;android.provider.cts.ContactsContract_DeletedContacts#testQueryAll;android.provider.cts.MediaStore_Audio_MediaTest#testStoreAudioMediaInternal;android.provider.cts.ContactsContract_RawContactsTest#testRawContactPsuedoDelete_hasDeleteLogForContact;android.provider.cts.MediaStore_FilesTest#testAndroidTestCaseSetupProperly;android.provider.cts.MediaStore_Images_MediaTest#testStoreImagesMediaInternal;android.provider.cts.MediaStore_Audio_AlbumsTest#testAlbumArt;android.provider.cts.ContactsContract_ContactsTest#testLookupUri;android.provider.cts.MediaStoreIntentsTest#testPickVideoDir;android.provider.cts.MediaStore_Images_MediaTest#testInsertImageWithBitmap;android.provider.cts.MediaStoreIntentsTest#testViewAudioFile;android.provider.cts.MediaStore_Audio_Genres_MembersTest#testStoreAudioGenresMembersExternal;android.provider.cts.ContactsContract_CommonDataKinds_StructuredPostalTest#testAndroidTestCaseSetupProperly;android.provider.cts.CalendarTest#testInstanceSearch;android.provider.cts.VoicemailContractTest#testStatusTablePermissions;android.provider.cts.ContactsContract_CommonDataKinds_OrganizationTest#testAndroidTestCaseSetupProperly;android.provider.cts.SettingsTest#testAndroidTestCaseSetupProperly;android.provider.cts.MediaStore_Audio_PlaylistsTest#testStoreAudioPlaylistsInternal;android.provider.cts.ContactsContract_DumpFileProviderTest#testQuery_worksWithValidFileName;android.provider.cts.Settings_SecureTest#testAndroidTestCaseSetupProperly;android.provider.cts.MediaStore_Video_MediaTest#testAndroidTestCaseSetupProperly;android.provider.cts.BrowserTest#testAccessHistory;android.provider.cts.ContactsContract_DataTest#testContactablesFilterByPhonePrefix_returnsCorrectDataRows;android.provider.cts.MediaStore_Images_ThumbnailsTest#testStoreImagesMediaInternal;android.provider.cts.ContactsTest#testCallsTable;android.provider.cts.CalendarTest#testEventCreationAndDeletion;android.provider.cts.VoicemailContractTest#testVoicemailTablePermissions;android.provider.cts.CalendarTest#testEventsUid2445;android.provider.cts.MediaStore_VideoTest#testQuery;android.provider.cts.CalendarTest#testDefaultProjections;android.provider.cts.MediaStoreIntentsTest#testViewVideoDir;android.provider.cts.MediaStore_FilesTest#testGetContentUri;android.provider.cts.ContactsContract_ContactsTest#testInsert_isUnsupported;android.provider.cts.ContactsContract_CommonDataKinds_PhoneTest#testGetTypeLabel;android.provider.cts.VoicemailContractTest#testVoicemailsTable;android.provider.cts.ContactsContract_CommonDataKinds_RelationTest#testGetTypeLabel;android.provider.cts.Settings_SystemTest#testGetDefaultValues;android.provider.cts.ContactsContract_RawContactsTest#testAndroidTestCaseSetupProperly;android.provider.cts.MediaStoreTest#testGetMediaScannerUri;android.provider.cts.ContactsContract_RawContactsTest#testRawContactDelete_removesRecord;android.provider.cts.Settings_SecureTest#testGetPutString;android.provider.cts.ContactsTest#testGroupMembershipTable;android.provider.cts.MediaStore_Audio_MediaTest#testGetContentUri;android.provider.cts.CalendarTest#testFullRecurrenceUpdate;android.provider.cts.MediaStore_FilesTest#testCaseSensitivity;android.provider.cts.MediaStore_Audio_AlbumsTest#testAndroidTestCaseSetupProperly;android.provider.cts.MediaStore_Audio_ArtistsTest#testStoreAudioArtistsInternal;android.provider.cts.ContactsContract_ContactsTest#testContactDelete_hasDeleteLog;android.provider.cts.ContactsContract_DataUsageTest#testMultiIdDataUsageFeedback_incrementsCorrectDataItems;android.provider.cts.CalendarTest#testSyncOnlyInsertEnforcement;android.provider.cts.VoicemailContractTest#testDataColumnUpdate_throwsIllegalArgumentException;android.provider.cts.CalendarTest#testColorWriteRequirements;android.provider.cts.CalendarTest#testWhenByDayQuery;android.provider.cts.ContactsContract_StreamItemsTest#testAndroidTestCaseSetupProperly;android.provider.cts.ContactsContract_CommonDataKinds_ImTest#testAndroidTestCaseSetupProperly;android.provider.cts.MediaStore_AudioTest#testKeyFor;android.provider.cts.ContactsContract_ContactsTest#testAndroidTestCaseSetupProperly;android.provider.cts.MediaStore_Images_ThumbnailsTest#testQueryInternalThumbnails;android.provider.cts.ContactsContract_DumpFileProviderTest#testOpenFileDescriptor_throwsErrorWithIllegalFileName;android.provider.cts.CalendarTest#testEventColors;android.provider.cts.SettingsTest#testBluetoothDevicesTable;android.provider.cts.ContactsContract_RawContactsTest#testRawContactUpdate_updatesContactUpdatedTimestamp;android.provider.cts.ContactsContract_CommonDataKinds_RelationTest#testAndroidTestCaseSetupProperly;android.provider.cts.MediaStoreTest#testGetVersion;android.provider.cts.MediaStore_Audio_GenresTest#testGetContentUri;android.provider.cts.ContactsContract_DataTest#testDataDelete_updatesContactLastUpdatedTimestamp;android.provider.cts.ContactsContract_CommonDataKinds_SipAddressTest#testGetTypeLabel;android.provider.cts.BrowserTest#testSaveBookmark;android.provider.cts.ContactsProvider2_AccountRemovalTest#testAndroidTestCaseSetupProperly;android.provider.cts.MediaStore_Video_MediaTest#testGetContentUri;android.provider.cts.CalendarTest#testExtendedProperties;android.provider.cts.Settings_SystemTest#testAndroidTestCaseSetupProperly;android.provider.cts.CalendarTest#testNonAdapterRecurrenceExceptions;android.provider.cts.CalendarTest#testOutOfOrderRecurrenceExceptions;android.provider.cts.CalendarTest#testConversionToRecurring;android.provider.cts.MediaStore_Audio_Playlists_MembersTest#testStoreAudioPlaylistsMembersExternal;android.provider.cts.CalendarTest#testMultiRuleRecurrence;android.provider.cts.MediaStoreIntentsTest#testPickAudioDir;android.provider.cts.MediaStore_Audio_GenresTest#testStoreAudioGenresExternal;android.provider.cts.MediaStoreIntentsTest#testViewVideoFile;android.provider.cts.ContactsProvider2_AccountRemovalTest#testAccountRemoval_deletesContacts;android.provider.cts.Contacts_ContactMethodsTest#testAndroidTestCaseSetupProperly;android.provider.cts.ContactsContract_GroupMembershipTest#testAddGroupMembershipWithGroupRowId;android.provider.cts.TelephonyProviderTest#testOpeningAnyFile;android.provider.cts.MediaStore_Audio_GenresTest#testGetContentUriForAudioId;android.provider.cts.ContactsContract_CommonDataKinds_PhoneTest#testAndroidTestCaseSetupProperly;android.provider.cts.Contacts_PeopleTest#testMarkAsContacted;android.provider.cts.MediaStore_FilesTest#testAccess;android.provider.cts.ContactsContract_CommonDataKinds_ImTest#testGetTypeLabel;android.provider.cts.SearchRecentSuggestionsTest#testSuggestionsTable;android.provider.cts.CalendarTest#testAttendees;android.provider.cts.SettingsTest#testAccessNonTable;android.provider.cts.MediaStoreIntentsTest#testPickImageDir;android.provider.cts.BrowserTest#testSearchesTable;android.provider.cts.Contacts_SettingsTest#testAccessSetting;android.provider.cts.ContactsContract_StreamItemPhotosTest#testContentPhotoUri;android.provider.cts.ContactsContract_DataTest#testGetLookupUriByDisplayName;android.provider.cts.ContactsContract_StatusUpdatesTest#testInsertStatus;android.provider.cts.MediaStore_Video_ThumbnailsTest#testGetContentUri;android.provider.cts.MediaStore_Audio_GenresTest#testStoreAudioGenresInternal;android.provider.cts.MediaStore_Images_MediaTest#testInsertImageWithImagePath;android.provider.cts.CalendarTest#testForwardRecurrenceExceptions;android.provider.cts.Settings_SecureTest#testUnknownSourcesOffByDefault;android.provider.cts.CalendarTest#testBadRequests;android.provider.cts.ContactsTest#testSettingsTable;android.provider.cts.VoicemailContractTest#testInsert_doesNotUpdateDataColumn;android.provider.cts.ContactsContract_RawContactsTest#testRawContactCreate_updatesContactUpdatedTimestamp;android.provider.cts.MediaStoreIntentsTest#testViewImageDir;android.provider.cts.ContactsContract_ContactsTest#testContactDelete_removesContactRecord;android.provider.cts.MediaStore_Images_ThumbnailsTest#testQueryExternalMiniThumbnails;android.provider.cts.ContactsContract_ContactsTest#testContactUpdate_updatesContactUpdatedTimestamp;android.provider.cts.Settings_SettingNotFoundExceptionTest#testAndroidTestCaseSetupProperly;android.provider.cts.ContactsContract_RawContactsTest#testGetLookupUriByDisplayName;android.provider.cts.BrowserTest#testAccessSearches;android.provider.cts.ContactsContract_CommonDataKinds_SipAddressTest#testAndroidTestCaseSetupProperly;android.provider.cts.ContactsContract_GroupMembershipTest#testAddGroupMembershipWithUnknownGroupSourceId;android.provider.cts.MediaStore_Audio_MediaTest#testStoreAudioMediaExternal;android.provider.cts.MediaStore_Audio_PlaylistsTest#testGetContentUri;android.provider.cts.ContactsTest#testGroupsTable;android.provider.cts.MediaStore_Audio_AlbumsTest#testGetContentUri;android.provider.cts.Settings_SystemTest#testGetUriFor;android.provider.cts.ContactsContract_StreamItemPhotosTest#testContentDirectoryUri;android.provider.cts.SearchRecentSuggestionsTest#testSearchRecentSuggestions;android.provider.cts.Contacts_ContactMethodsTest#testAddPostalLocation;android.provider.cts.MediaStore_Audio_Artists_AlbumsTest#testGetContentUri;android.provider.cts.SearchRecentSuggestionsTest#testConstructor;android.provider.cts.ContactsContract_ContactsTest#testMarkAsContacted;android.provider.cts.ContactsTest#testPeopleTable;android.provider.cts.CalendarTest#testCalendarColors;android.provider.cts.CalendarTest#testCalendarIsPrimary;android.provider.cts.ContactsContract_RawContactsTest#testRawContactDelete_hasDeleteLogForContact;android.provider.cts.Settings_SystemTest#testSystemSettings;android.provider.cts.CalendarTest#testRecurrence;android.provider.cts.ContactsContract_GroupMembershipTest#testAddGroupMembershipWithGroupSourceId;android.provider.cts.MediaStore_Audio_Genres_MembersTest#testGetContentUri;android.provider.cts.VoicemailContractTest#testStatusTable;android.provider.cts.ContactsContract_DataTest#testContactablesFilterByFirstName_returnsCorrectDataRows;android.provider.cts.Settings_NameValueTableTest#testGetUriFor;android.provider.cts.ContactsContract_DumpFileProviderTest#testQuery_throwsErrorWithIllegalFileName;android.provider.cts.ContactsTest#testContactMethodsTable;android.provider.cts.ContactsContractIntentsTest#testPickContactDir;android.provider.cts.MediaStore_Audio_AlbumsTest#testStoreAudioAlbumsInternal;android.provider.cts.Contacts_PeopleTest#testAddToGroup;android.provider.cts.ContactsContract_DataTest#testContactablesFilterByEmailPrefix_returnsCorrectDataRows;android.provider.cts.ContactsContract_StatusUpdatesTest#testGetPresencePrecedence;android.provider.cts.BrowserTest#testUpdateVisitedHistory;android.provider.cts.SettingsTest#testSecureTable;android.provider.cts.ContactsContract_StreamItemsTest#testContentUri;android.provider.cts.MediaStore_Audio_Artists_AlbumsTest#testStoreAudioArtistsAlbumsInternal;android.provider.cts.MediaStore_Video_ThumbnailsTest#testGetThumbnail;android.provider.cts.ContactsContractIntentsTest#testGetContentContactDir;android.provider.cts.SettingsTest#testSystemTable;android.provider.cts.CalendarTest#testEventUpdateAsApp;android.provider.cts.MediaStore_Images_MediaTest#testStoreImagesMediaExternal;android.provider.cts.CalendarTest#testEventsEntityQuery;android.provider.cts.ContactsContractIntentsTest#testAndroidTestCaseSetupProperly;android.provider.cts.CalendarTest#testSyncState;android.provider.cts.MediaStore_Video_ThumbnailsTest#testAndroidTestCaseSetupProperly;android.provider.cts.ContactsContract_DataTest#testGetLookupUriBySourceId;android.provider.cts.UserDictionary_WordsTest#testAndroidTestCaseSetupProperly;android.provider.cts.ContactsTest#testExtensionsTable;android.provider.cts.ContactsContract_DataTest#testContactablesUri;android.provider.cts.ContactsContract_CommonDataKinds_ImTest#testGetProtocolLabel;android.provider.cts.Settings_SettingNotFoundExceptionTest#testConstructor;android.provider.cts.CalendarTest#testEventsIsOrganizer;android.provider.cts.ContactsContract_StreamItemsTest#testContentDirectoryUri;android.provider.cts.Contacts_PeopleTest#testAccessPhotoData;android.provider.cts.UserDictionary_WordsTest#testAddWord;android.provider.cts.CalendarTest#testSingleRecurrenceExceptions;android.provider.cts.BrowserTest#testGetAllBookmarks;android.provider.cts.ContactsContract_RawContactsTest#testRawContactDelete_setsDeleteFlag;android.provider.cts.MediaStoreIntentsTest#testViewImageFile;android.provider.cts.Settings_SecureTest#testGetPutLong;android.provider.cts.ContactsContract_DataTest#testContactablesFilterByLastName_returnsCorrectDataRows;android.provider.cts.SearchRecentSuggestionsTest#testAndroidTestCaseSetupProperly;android.provider.cts.Contacts_PhonesTest#testGetDisplayLabelCharSequenceArray;android.provider.cts.SettingsTest#testUserDictionarySettingsExists;android.provider.cts.Contacts_OrganizationsTest#testGetDisplayLabel;android.provider.cts.Settings_SecureTest#testGetDefaultValues;android.provider.cts.ContactsContract_ContactsTest#testContactDelete_marksRawContactsForDeletion;android.provider.cts.ContactsTest#testPhotosTable;android.provider.cts.ContactsContract_ContactsTest#testContentUri;android.provider.cts.MediaStore_Audio_Artists_AlbumsTest#testStoreAudioArtistsAlbumsExternal;android.provider.cts.Contacts_PhonesTest#testAndroidTestCaseSetupProperly;android.provider.cts.ContactsProvider2_AccountRemovalTest#testAccountRemovalWithMergedContact_doesNotDeleteContactAndTimestampUpdated;android.provider.cts.ContactsTest#testOrganizationsTable;android.provider.cts.MediaStore_Audio_Playlists_MembersTest#testGetContentUri;android.provider.cts.MediaStore_Audio_PlaylistsTest#testStoreAudioPlaylistsExternal;android.provider.cts.Contacts_OrganizationsTest#testAndroidTestCaseSetupProperly;android.provider.cts.ContactsTest#testPhonesTable;android.provider.cts.Settings_SecureTest#testGetPutInt;android.provider.cts.ContactsContract_StatusUpdatesTest#testAndroidTestCaseSetupProperly;android.provider.cts.MediaStore_Audio_MediaTest#testGetContentUriForPath;android.provider.cts.CalendarTest#testCalendarUpdateAsApp;android.provider.cts.ContactsContract_DeletedContacts#testQueryByContactId;android.provider.cts.ContactsProvider2_AccountRemovalTest#testAccountRemoval_hasDeleteLogsForContacts;android.provider.cts.ContactsContract_StreamItemPhotosTest#testAndroidTestCaseSetupProperly;android.provider.cts.MediaStore_Audio_ArtistsTest#testGetContentUri;android.provider.cts.ContactsContract_DumpFileProviderTest#testAndroidTestCaseSetupProperly;android.provider.cts.ContactsContract_DataTest#testDataUpdate_updatesContactLastUpdatedTimestamp;android.provider.cts.ContactsProvider2_AccountRemovalTest#testAccountRemovalWithMergedContact_deletesContacts;android.provider.cts.ContactsContract_RawContactsTest#testGetLookupUriBySourceId;android.provider.cts.MediaStore_Images_ThumbnailsTest#testGetContentUri;android.provider.cts.ContactsContract_DumpFileProviderTest#testOpenFileDescriptor_worksWithValidFileName;android.provider.cts.ContactsContract_CommonDataKinds_StructuredPostalTest#testGetTypeLabel;android.provider.cts.ContactsContract_DataUsageTest#testAndroidTestCaseSetupProperly;android.provider.cts.Contacts_ContactMethodsTest#test;android.provider.cts.MediaStore_Video_MediaTest#testStoreVideoMediaExternal;android.provider.cts.ContactsContract_CommonDataKinds_OrganizationTest#testGetTypeLabel;android.provider.cts.MediaStore_Images_ThumbnailsTest#testStoreImagesMediaExternal;android.provider.cts.ContactsContract_DataTest#testContactablesFilter_doesNotExist_returnsCorrectDataRows;android.provider.cts.ContactsContract_DeletedContacts#testQuery_returnsProperColumns" />
+  <Entry uri="android.security" exclude="android.security.cts.KeystoreExploitTest#testAndroidTestCaseSetupProperly;android.security.cts.CharDeviceTest#testExynosKernelMemoryRead;android.security.cts.VoldExploitTest#testAndroidTestCaseSetupProperly;android.security.cts.LoadEffectLibraryTest#testLoadLibrary;android.security.cts.BrowserTest#testAndroidTestCaseSetupProperly;android.security.cts.LinuxRngTest#testDevUrandomMajorMinor;android.security.cts.ServicePermissionsTest#testDumpProtected;android.security.cts.BannedFilesTest#testNoSetuidTcpdump;android.security.cts.SqliteJournalLeakTest#testShm;android.security.cts.LinuxRngTest#testDevRandomMajorMinor;android.security.cts.ClonedSecureRandomTest#testCheckForDuplicateOutput;android.security.cts.BrowserTest#testBrowserPrivateDataAccess;android.security.cts.BrowserTest#testTabExhaustion;android.security.cts.KeystoreExploitTest#testKeystoreCrash;android.security.cts.SqliteJournalLeakTest#testJournal;android.security.cts.BannedFilesTest#testNoCmdClient;android.security.cts.BannedFilesTest#testNoSetuidIp;android.security.cts.BannedFilesTest#testNoSyncAgent;android.security.cts.ListeningPortsTest#testNoListeningLoopbackTcp6Ports;android.security.cts.KernelSettingsTest#testKptrRestrict;android.security.cts.AslrTest#testVaRandomize;android.security.cts.KernelSettingsTest#testMmapMinAddr;android.security.cts.CertificateTest#testBlockCertificates;android.security.cts.BrowserTest#testTabReuse;android.security.cts.KernelSettingsTest#testSELinuxEnforcing;android.security.cts.ListeningPortsTest#testNoListeningLoopbackUdp6Ports;android.security.cts.NativeCodeTest#testPerfEvent;android.security.cts.KernelSettingsTest#testSetuidDumpable;android.security.cts.PackageSignatureTest#testAndroidTestCaseSetupProperly;android.security.cts.ServicePermissionsTest#testAndroidTestCaseSetupProperly;android.security.cts.CertificateTest#testCertificates;android.security.cts.KernelSettingsTest#testNoConfigGz;android.security.cts.KernelSettingsTest#testDmesgRestrict;android.security.cts.ListeningPortsTest#testAndroidTestCaseSetupProperly;android.security.cts.SqliteJournalLeakTest#testAndroidTestCaseSetupProperly;android.security.cts.ListeningPortsTest#testNoRemotelyAccessibleListeningTcp6Ports;android.security.cts.ListeningPortsTest#testNoListeningLoopbackTcpPorts;android.security.cts.ClonedSecureRandomTest#testAndroidTestCaseSetupProperly;android.security.cts.VoldExploitTest#testTryCommandInjection;android.security.cts.VoldExploitTest#testZergRushCrash;android.security.cts.AslrTest#testOneExecutableIsPie;android.security.cts.VoldExploitTest#testTryToCrashVold;android.security.cts.ListeningPortsTest#testNoListeningLoopbackUdpPorts;android.security.cts.CertificateTest#testAndroidTestCaseSetupProperly;android.security.cts.SqliteJournalLeakTest#testWal;android.security.cts.ListeningPortsTest#testNoRemotelyAccessibleListeningTcpPorts;android.security.cts.CharDeviceTest#testExynosRootingVuln" />
+  <Entry uri="android.webkit" exclude="android.webkit.cts.WebViewTest#testDocumentHasImages;android.webkit.cts.WebViewTest#testScrollBarOverlay;android.webkit.cts.WebViewTest#testGoBackAndForward;android.webkit.cts.WebViewTest#testGetContentHeight;android.webkit.cts.WebChromeClientTest#testOnJsConfirm;android.webkit.cts.WebChromeClientTest#testOnProgressChanged;android.webkit.cts.WebViewTest#testAddJavascriptInterfaceNullObject;android.webkit.cts.WebViewTest#testConstructor;android.webkit.cts.WebViewTest#testInvokeZoomPicker;android.webkit.cts.WebSettingsTest#testAccessMinimumLogicalFontSize;android.webkit.cts.WebViewStartupTest#testCookieManagerBlockingUiThread;android.webkit.cts.WebViewTest#testInternals;android.webkit.cts.WebViewClientTest#testShouldOverrideUrlLoading;android.webkit.cts.GeolocationTest#testSimpleGeolocationRequestAcceptOnce;android.webkit.cts.WebSettingsTest#testDatabaseDisabled;android.webkit.cts.WebView_WebViewTransportTest#testAccessWebView;android.webkit.cts.WebSettingsTest#testAccessJavaScriptCanOpenWindowsAutomatically;android.webkit.cts.WebSettingsTest#testAppCacheEnabled;android.webkit.cts.WebSettingsTest#testAccessUserAgentString;android.webkit.cts.WebViewTest#testClearHistory;android.webkit.cts.WebSettingsTest#testAccessSerifFontFamily;android.webkit.cts.WebSettingsTest#testAccessLayoutAlgorithm;android.webkit.cts.WebSettingsTest#testAccessFantasyFontFamily;android.webkit.cts.WebViewTest#testAddJavascriptInterface;android.webkit.cts.WebSettingsTest#testAccessCacheMode;android.webkit.cts.WebViewTest#testDebugDump;android.webkit.cts.WebViewTest#testSslErrorProceedResponseNotReusedForDifferentHost;android.webkit.cts.WebSettingsTest#testLocalImageLoads;android.webkit.cts.WebViewTest#testSslErrorProceedResponseReusedForSameHost;android.webkit.cts.HttpAuthHandlerTest#testUseHttpAuthUsernamePassword;android.webkit.cts.WebViewTest#testSetLayoutParams;android.webkit.cts.WebViewTest#testAppInjectedXRequestedWithHeaderIsNotOverwritten;android.webkit.cts.WebSettingsTest#testAccessUseDoubleTree;android.webkit.cts.WebViewTest#testOnReceivedSslErrorCancel;android.webkit.cts.URLUtilTest#testIsHttpUrl;android.webkit.cts.DateSorterTest#testConstants;android.webkit.cts.WebSettingsTest#testAccessFixedFontFamily;android.webkit.cts.WebSettingsTest#testSetRenderPriority;android.webkit.cts.WebViewTest#testRemoveJavascriptInterface;android.webkit.cts.WebViewTest#testAndroidAssetAnchor;android.webkit.cts.WebViewTest#testOnReceivedSslError;android.webkit.cts.CookieTest#testEmptyValue;android.webkit.cts.WebViewTest#testPauseResumeTimers;android.webkit.cts.URLUtilTest#testIsContentUrl;android.webkit.cts.WebChromeClientTest#testBlockWindowsAsync;android.webkit.cts.WebViewTest#testGetVisibleTitleHeight;android.webkit.cts.WebBackForwardListTest#testClone;android.webkit.cts.WebSettingsTest#testAccessDefaultTextEncodingName;android.webkit.cts.URLUtilTest#testGuessUrl;android.webkit.cts.MimeTypeMapTest#testAndroidTestCaseSetupProperly;android.webkit.cts.WebChromeClientTest#testOnReceivedIcon;android.webkit.cts.CookieTest#testAndroidTestCaseSetupProperly;android.webkit.cts.CookieManagerTest#testRemoveCookies;android.webkit.cts.WebSettingsTest#testAccessPluginsPath;android.webkit.cts.WebSettingsTest#testAccessAllowFileAccess;android.webkit.cts.WebSettingsTest#testAccessSupportMultipleWindows;android.webkit.cts.WebViewTest#testAppCanInjectHeadersViaImmutableMap;android.webkit.cts.WebViewTest#testSecureSiteSetsCertificate;android.webkit.cts.WebViewTest#testSetWebViewClient;android.webkit.cts.WebViewTest#testSetScrollBarStyle;android.webkit.cts.CookieTest#testDomain;android.webkit.cts.WebViewTest#testZoom;android.webkit.cts.URLUtilTest#testIsDataUrl;android.webkit.cts.CookieManagerTest#testAcceptCookie;android.webkit.cts.WebChromeClientTest#testOnReceivedTitle;android.webkit.cts.URLUtilTest#testIsFileUrl;android.webkit.cts.WebSettingsTest#testAccessJavaScriptEnabled;android.webkit.cts.URLUtilTest#testIsNetworkUrl;android.webkit.cts.WebViewTest#testFindAddress;android.webkit.cts.WebViewTest#testSetNetworkAvailable;android.webkit.cts.WebViewTest#testClearSslPreferences;android.webkit.cts.URLUtilTest#testIsHttpsUrl;android.webkit.cts.MimeTypeMapTest#testGetFileExtensionFromUrl;android.webkit.cts.WebViewTest#testGetOriginalUrl;android.webkit.cts.WebChromeClientTest#testBlockWindowsSync;android.webkit.cts.WebViewTest#testLoadData;android.webkit.cts.WebViewTest#testInsecureSiteClearsCertificate;android.webkit.cts.WebBackForwardListTest#testGetCurrentItem;android.webkit.cts.URLUtilTest#testStripAnchor;android.webkit.cts.URLUtilTest#testGuessFileName;android.webkit.cts.URLUtilTest#testAndroidTestCaseSetupProperly;android.webkit.cts.WebViewTest#testEvaluateJavascript;android.webkit.cts.DateSorterTest#testConstructor;android.webkit.cts.WebViewTest#testPageScroll;android.webkit.cts.WebSettingsTest#testIframesWhenAccessFromFileURLsEnabled;android.webkit.cts.WebViewTest#testFlingScroll;android.webkit.cts.WebSettingsTest#testXHRWhenAccessFromFileURLsEnabled;android.webkit.cts.WebChromeClientTest#testOnJsPrompt;android.webkit.cts.WebSettingsTest#testAccessSupportZoom;android.webkit.cts.WebSettingsTest#testLoadsImagesAutomatically;android.webkit.cts.URLUtilTest#testIsValidUrl;android.webkit.cts.WebViewTest#testRequestFocusNodeHref;android.webkit.cts.WebViewTest#testLoadDataWithBaseUrl;android.webkit.cts.WebChromeClientTest#testOnJsAlert;android.webkit.cts.WebSettingsTest#testAccessSansSerifFontFamily;android.webkit.cts.CookieManagerTest#testCookieManager;android.webkit.cts.WebViewTest#testSetMapTrackballToArrowKeys;android.webkit.cts.WebViewTest#testCreatingWebViewCreatesCookieSyncManager;android.webkit.cts.DateSorterTest#testGetIndex;android.webkit.cts.GeolocationTest#testGeolocationPermissions;android.webkit.cts.WebChromeClientTest#testOnJsBeforeUnload;android.webkit.cts.CookieManagerTest#testClone;android.webkit.cts.CookieManagerTest#testGetInstance;android.webkit.cts.WebViewTest#testGetZoomControls;android.webkit.cts.CookieTest#testSubDomain;android.webkit.cts.WebSettingsTest#testUserAgentString_default;android.webkit.cts.MimeTypeMapTest#testGetMimeTypeFromExtension;android.webkit.cts.WebSettingsTest#testBlockNetworkImage;android.webkit.cts.WebViewTest#testPlatformNotifications;android.webkit.cts.URLUtilTest#testIsAboutUrl;android.webkit.cts.WebViewTest#testSetPictureListener;android.webkit.cts.MimeTypeMapTest#testHasMimeType;android.webkit.cts.WebViewTest#testOnReceivedSslErrorProceed;android.webkit.cts.DateSorterTest#testGetLabel;android.webkit.cts.GeolocationTest#testSimpleGeolocationRequestAcceptAlways;android.webkit.cts.URLUtilTest#testDecode;android.webkit.cts.HttpAuthHandlerTest#testProceed;android.webkit.cts.WebSettingsTest#testSetNeedInitialFocus;android.webkit.cts.WebSettingsTest#testIframesWhenAccessFromFileURLsDisabled;android.webkit.cts.WebSettingsTest#testAccessCursiveFontFamily;android.webkit.cts.WebViewTest#testFindAll;android.webkit.cts.WebViewTest#testStopLoading;android.webkit.cts.DateSorterTest#testAndroidTestCaseSetupProperly;android.webkit.cts.WebSettingsTest#testAccessDefaultFixedFontSize;android.webkit.cts.CookieManagerTest#testb3167208;android.webkit.cts.WebSettingsTest#testAccessMinimumFontSize;android.webkit.cts.WebSettingsTest#testAccessUseWideViewPort;android.webkit.cts.WebSettingsTest#testAccessSaveFormData;android.webkit.cts.WebViewTest#testRequestChildRectangleOnScreen;android.webkit.cts.URLUtilTest#testIsJavaScriptUrl;android.webkit.cts.WebViewTest#testFindNext;android.webkit.cts.MimeTypeMapTest#testHasExtension;android.webkit.cts.WebViewTest#testSetDownloadListener;android.webkit.cts.WebSettingsTest#testXHRWhenAccessFromFileURLsDisabled;android.webkit.cts.WebViewTest#testDestroy;android.webkit.cts.MimeTypeMapTest#testGetSingleton;android.webkit.cts.WebViewTest#testAndroidAssetQueryParam;android.webkit.cts.WebViewTest#testAccessPluginList;android.webkit.cts.CookieTest#testPath;android.webkit.cts.WebViewTest#testAccessHttpAuthUsernamePassword;android.webkit.cts.WebViewTest#testUseRemovedJavascriptInterface;android.webkit.cts.WebSettingsTest#testAccessTextSize;android.webkit.cts.URLUtilTest#testIsAssetUrl;android.webkit.cts.CookieTest#testInvalidDomain;android.webkit.cts.CookieSyncManagerTest#testCookieSyncManager;android.webkit.cts.URLUtilTest#testComposeSearchUrl;android.webkit.cts.WebChromeClientTest#testWindows;android.webkit.cts.WebViewTest#testRequestImageRef;android.webkit.cts.WebSettingsTest#testAccessDefaultFontSize;android.webkit.cts.WebViewClientTest#testShouldOverrideKeyEvent;android.webkit.cts.WebHistoryItemTest#testWebHistoryItem;android.webkit.cts.WebSettingsTest#testAccessBuiltInZoomControls;android.webkit.cts.WebSettingsTest#testAppCacheDisabled;android.webkit.cts.WebViewTest#testSetWebChromeClient;android.webkit.cts.WebViewTest#testGetHitTestResult;android.webkit.cts.WebSettingsTest#testAccessStandardFontFamily;android.webkit.cts.GeolocationTest#testSimpleGeolocationRequestReject;android.webkit.cts.WebSettingsTest#testBlockNetworkLoads;android.webkit.cts.DateSorterTest#testGetBoundary;android.webkit.cts.WebViewTest#testCapturePicture;android.webkit.cts.WebSettingsTest#testAccessPluginsEnabled;android.webkit.cts.WebViewTest#testSaveAndRestoreState;android.webkit.cts.WebViewTest#testLoadUrl;android.webkit.cts.HttpAuthHandlerTest#testCancel;android.webkit.cts.URLUtilTest#testIsCookielessProxyUrl;android.webkit.cts.WebViewTest#testGetFavicon;android.webkit.cts.MimeTypeMapTest#testGetExtensionFromMimeType" />
+  <Entry uri="android.widget" exclude="android.widget.cts.ImageSwitcherTest#testSetImageDrawable;android.widget.cts.ExpandableListViewTest#testOnSaveInstanceState;android.widget.cts.RemoteViewsTest#testSetFloat;android.widget.cts.ToggleButtonTest#testConstructor;android.widget.cts.CursorTreeAdapterTest#testOnGroupCollapsed;android.widget.cts.ListViewTest#testDispatchDraw;android.widget.cts.HorizontalScrollViewTest#testRequestLayout;android.widget.cts.TextViewTest#testDrawableResolution;android.widget.cts.CursorTreeAdapterTest#testGetGroup;android.widget.cts.RemoteViewsTest#testSetBoolean;android.widget.cts.SimpleExpandableListAdapterTest#testGetChildrenCount;android.widget.cts.TimePickerTest#testSetEnabled;android.widget.cts.RemoteViewsTest#testSetChronometer;android.widget.cts.BaseExpandableListAdapterTest#testNotifyDataSetChanged;android.widget.cts.TextViewTest#testConstructor;android.widget.cts.FrameLayoutTest#testGenerateLayoutParams2;android.widget.cts.FrameLayoutTest#testGenerateLayoutParams1;android.widget.cts.DialerFilterTest#testClearText;android.widget.cts.ListViewTest#testFindViewWithTagTraversal;android.widget.cts.TextViewTest#testGetResolvedTextAlignmentWithInheritance;android.widget.cts.SimpleAdapterTest#testSetDropDownViewResource;android.widget.cts.GalleryTest#testShowContextMenu;android.widget.cts.ExpandableListViewTest#testSetChildIndicator;android.widget.cts.GalleryTest#testConstructor;android.widget.cts.CursorTreeAdapterTest#testGetGroupCount;android.widget.cts.TextViewTest#testDebug;android.widget.cts.ExpandableListViewTest#testSetIndicatorBounds;android.widget.cts.AutoCompleteTextViewTest#testOnKeyPreIme;android.widget.cts.TextViewTest#testOnTrackballEvent;android.widget.cts.ExpandableListViewTest#testAndroidTestCaseSetupProperly;android.widget.cts.PopupWindowTest#testAccessBackground;android.widget.cts.PopupWindowTest#testGetMaxAvailableHeight;android.widget.cts.TextViewTest#testGetTotalPaddingLeft;android.widget.cts.AutoCompleteTextViewTest#testAccessAdapter;android.widget.cts.AutoCompleteTextViewTest#testPerformCompletion;android.widget.cts.ZoomButtonTest#testDispatchUnhandledMove;android.widget.cts.AbsSpinnerTest#testOnMeasure;android.widget.cts.TextViewTest#testOnWindowFocusChanged;android.widget.cts.PopupWindowTest#testUpdateDimensionAndAlignAnchorViewWithOffsets;android.widget.cts.GridLayoutTest#testCheckLayoutParams;android.widget.cts.TabHostTest#testNewTabSpec;android.widget.cts.ViewAnimatorTest#testGetCurrentView;android.widget.cts.ListViewTest#testDispatchKeyEvent;android.widget.cts.TextViewTest#testSetMinEms;android.widget.cts.FrameLayoutTest#testGatherTransparentRegion;android.widget.cts.AbsListViewTest#testDraw;android.widget.cts.ZoomControlsTest#testHasFocus;android.widget.cts.RemoteViews_ActionExceptionTest#testConstructor;android.widget.cts.ViewFlipperTest#testActivityTestCaseSetUpProperly;android.widget.cts.RemoteViewsTest#testSetString;android.widget.cts.SimpleExpandableListAdapterTest#testConstructor;android.widget.cts.GalleryTest#testComputeHorizontalScrollExtent;android.widget.cts.DialerFilterTest#testGetFilterText;android.widget.cts.RadioGroupTest#testGenerateDefaultLayoutParams;android.widget.cts.DialerFilterTest#testSetFilterWatcher;android.widget.cts.CheckBoxTest#testConstructor;android.widget.cts.ProgressBarTest#testDrawableStateChanged;android.widget.cts.MultiAutoCompleteTextViewTest#testPerformFiltering;android.widget.cts.TextViewTest#testOnKeyMultiple;android.widget.cts.ProgressBarTest#testPostInvalidate;android.widget.cts.SlidingDrawerTest#testOpenAndClose;android.widget.cts.AutoCompleteTextViewTest#testConstructor;android.widget.cts.TextViewTest#testSetLineSpacing;android.widget.cts.ListViewTest#testFindViewTraversal;android.widget.cts.RadioGroupTest#testGetCheckedRadioButtonId;android.widget.cts.TabHostTest#testSetup2;android.widget.cts.TableLayout_LayoutParamsTest#testConstructor;android.widget.cts.HorizontalScrollViewTest#testRequestChildFocus;android.widget.cts.TabWidgetTest#testDispatchDraw;android.widget.cts.PopupWindowTest#testUpdate;android.widget.cts.BaseAdapterTest#testNotifyDataSetInvalidated;android.widget.cts.ProgressBarTest#testOnSaveAndRestoreInstanceState;android.widget.cts.TabHostTest#testSetup1;android.widget.cts.TextViewTest#testOnMeasure;android.widget.cts.CompoundButtonTest#testAccessInstanceState;android.widget.cts.TabWidgetTest#testOnFocusChange;android.widget.cts.DialerFilterTest#testOnFinishInflate;android.widget.cts.ImageViewTest#testSetSelected;android.widget.cts.TextViewTest#testDrawableResolution2;android.widget.cts.ExpandableListViewWithHeadersTest#testPreconditions;android.widget.cts.AbsListViewTest#testSetFilterText;android.widget.cts.ExpandableListViewTest#testGetAdapter;android.widget.cts.TextViewTest#testSingleLine;android.widget.cts.HorizontalScrollViewTest#testComputeScroll;android.widget.cts.CursorAdapterTest#testRunQueryOnBackgroundThread;android.widget.cts.ToastTest#testMakeText2;android.widget.cts.CursorAdapterTest#testGetView;android.widget.cts.ViewSwitcherTest#testSetFactory;android.widget.cts.ToastTest#testMakeText1;android.widget.cts.GridViewTest#testAccessStretchMode;android.widget.cts.AutoCompleteTextViewTest#testGetThreshold;android.widget.cts.RemoteViewsTest#testConstructor;android.widget.cts.AbsListViewTest#testCheckLayoutParams;android.widget.cts.ViewAnimatorTest#testSetAnimateFirstView;android.widget.cts.DigitalClockTest#testActivityTestCaseSetUpProperly;android.widget.cts.SlidingDrawerTest#testAnimateOpenAndClose;android.widget.cts.PopupWindowTest#testAccessFocusable;android.widget.cts.TimePickerTest#testSetOnTimeChangedListener;android.widget.cts.ScrollViewTest#testGetMaxScrollAmount;android.widget.cts.CursorAdapterTest#testOnContentChanged;android.widget.cts.TextViewTest#testGetTotalPaddingBottom;android.widget.cts.AnalogClockTest#testOnMeasure;android.widget.cts.RadioGroupTest#testCheck;android.widget.cts.CursorTreeAdapterTest#testNotifyDataSetChanged;android.widget.cts.TwoLineListItemTest#testActivityTestCaseSetUpProperly;android.widget.cts.AbsListViewTest#testGetContextMenuInfo;android.widget.cts.ViewAnimatorTest#testAccessOutAnimation;android.widget.cts.SlidingDrawerTest#testConstructor;android.widget.cts.TimePickerTest#testOnSaveInstanceStateAndOnRestoreInstanceState;android.widget.cts.AbsListViewTest#testAccessFastScrollEnabled;android.widget.cts.BaseAdapterTest#testGetItemViewType;android.widget.cts.AbsListViewTest#testSetOnScrollListener;android.widget.cts.ImageViewTest#testSetImageURI;android.widget.cts.RadioGroupTest#testOnFinishInflate;android.widget.cts.TableRowTest#testGenerateLayoutParams;android.widget.cts.DialerFilterTest#testGetLetters;android.widget.cts.HorizontalScrollViewTest#testComputeHorizontalScrollRange;android.widget.cts.TextViewTest#testSetPadding;android.widget.cts.VideoViewTest#testPlayVideo1;android.widget.cts.ArrayAdapterTest#testRemove;android.widget.cts.GridViewTest#testGetNumColumns;android.widget.cts.AbsSpinnerTest#testSetSelectionIntBoolean;android.widget.cts.LayoutDirectionTest#testDirectionForAllLayoutsWithCode;android.widget.cts.SimpleCursorAdapterTest#testAccessStringConversionColumn;android.widget.cts.ViewAnimatorTest#testGetBaseline;android.widget.cts.ChronometerTest#testConstructor;android.widget.cts.ResourceCursorTreeAdapterTest#testConstructor;android.widget.cts.AdapterViewTest#testGetPositionForView;android.widget.cts.GridViewTest#testSetVerticalSpacing;android.widget.cts.ButtonTest#testAndroidTestCaseSetupProperly;android.widget.cts.ToggleButtonTest#testToggleText;android.widget.cts.RatingBarTest#testSetMax;android.widget.cts.RemoteViewsTest#testSetViewVisibility;android.widget.cts.ScrollViewTest#testOnTouchEvent;android.widget.cts.BaseAdapterTest#testIsEnabled;android.widget.cts.ExpandableListViewTest#testSetOnChildClickListener;android.widget.cts.EditTextTest#testAndroidTestCaseSetupProperly;android.widget.cts.TextViewTest#testMarquee;android.widget.cts.ImageViewTest#testActivityTestCaseSetUpProperly;android.widget.cts.RadioGroupTest#testConstructors;android.widget.cts.DialerFilterTest#testAccessMode;android.widget.cts.DatePickerTest#testInit;android.widget.cts.TextViewTest#testGetTextColors;android.widget.cts.ProgressBarTest#testAccessProgress;android.widget.cts.TextViewTest#testGetPaint;android.widget.cts.SimpleExpandableListAdapterTest#testNewGroupView;android.widget.cts.AdapterView_AdapterContextMenuInfoTest#testConstructor;android.widget.cts.CompoundButtonTest#testConstructor;android.widget.cts.ImageViewTest#testSetImageLevel;android.widget.cts.SimpleCursorTreeAdapterTest#testBindGroupView;android.widget.cts.SimpleExpandableListAdapterTest#testGetGroup;android.widget.cts.TabWidgetTest#testFocusCurrentTab;android.widget.cts.RelativeLayoutTest#testOnLayout;android.widget.cts.ScrollViewTest#testComputeScroll;android.widget.cts.TextViewTest#testAccessHintTextColor;android.widget.cts.TableLayoutTest#testAccessShrinkAllColumns;android.widget.cts.RemoteViewsTest#testGetPackage;android.widget.cts.GridViewTest#testAttachLayoutAnimationParameters;android.widget.cts.LinearLayout_LayoutParamsTest#testAndroidTestCaseSetupProperly;android.widget.cts.CompoundButtonTest#testAndroidTestCaseSetupProperly;android.widget.cts.ImageViewTest#testSetImageDrawable;android.widget.cts.AdapterViewTest#testAccessVisiblePosition;android.widget.cts.ListViewTest#testSaveAndRestoreInstanceState;android.widget.cts.CompoundButtonTest#testToggle;android.widget.cts.TextViewTest#testMoveCursorToVisibleOffset;android.widget.cts.AutoCompleteTextViewTest#testAccessDropDownWidth;android.widget.cts.RadioGroupTest#testGenerateLayoutParams;android.widget.cts.AdapterViewTest#testCanAnimate;android.widget.cts.ScrollViewTest#testOnLayout;android.widget.cts.AutoCompleteTextViewTest#testEnoughToFilter;android.widget.cts.CheckedTextViewTest#testOnCreateDrawableState;android.widget.cts.RelativeLayout_LayoutParamsTest#testDebug;android.widget.cts.ToastTest#testAccessDuration;android.widget.cts.ToggleButtonTest#testSetChecked;android.widget.cts.HeaderViewListAdapterTest#testGetFootersCount;android.widget.cts.GridLayoutTest#testGenerateDefaultLayoutParams;android.widget.cts.AbsListViewTest#testAccessSmoothScrollbarEnabled;android.widget.cts.SlidingDrawerTest#testSetOnDrawerOpenListener;android.widget.cts.HeaderViewListAdapterTest#testGetHeadersCount;android.widget.cts.RemoteViewsTest#testSetLong;android.widget.cts.SlidingDrawerTest#testSetOnDrawerCloseListener;android.widget.cts.TextViewTest#testGetResolvedTextDirectionLtrWithInheritance;android.widget.cts.ScrollViewTest#testFullScroll;android.widget.cts.RelativeLayout_LayoutParamsTest#testAccessRule1;android.widget.cts.BaseExpandableListAdapterTest#testAreAllItemsEnabled;android.widget.cts.RelativeLayout_LayoutParamsTest#testAccessRule2;android.widget.cts.RemoteViewsActivityTest#testDerivedClass;android.widget.cts.ToastTest#testShowFailure;android.widget.cts.SimpleAdapterTest#testSetViewImage;android.widget.cts.TextViewTest#testAccessPrivateImeOptions;android.widget.cts.AdapterView_AdapterContextMenuInfoTest#testAndroidTestCaseSetupProperly;android.widget.cts.TwoLineListItemTest#testOnFinishInflate;android.widget.cts.ExpandableListViewTest#testGetExpandableListPosition;android.widget.cts.AbsListViewTest#testAccessListPadding;android.widget.cts.ExpandableListViewTest#testExpandGroup;android.widget.cts.TextViewTest#testGetUrls;android.widget.cts.LinearLayoutTest#testAccessBaselineAlignedChildIndex;android.widget.cts.CheckBoxTest#testAndroidTestCaseSetupProperly;android.widget.cts.ZoomControlsTest#testSetOnZoomInClickListener;android.widget.cts.AbsSpinnerTest#testGetCount;android.widget.cts.SimpleExpandableListAdapterTest#testNewChildView;android.widget.cts.ViewSwitcherTest#testConstructor;android.widget.cts.AutoCompleteTextViewTest#testReplaceText;android.widget.cts.ScrollViewTest#testAccessFillViewport;android.widget.cts.ToastTest#testShow;android.widget.cts.TextViewTest#testDrawableStateChanged;android.widget.cts.TimePickerTest#testGetBaseline;android.widget.cts.TextViewTest#testOnTouchEvent;android.widget.cts.ListViewTest#testOnFocusChanged;android.widget.cts.ImageViewTest#testDrawableStateChanged;android.widget.cts.FrameLayoutTest#testOnLayout;android.widget.cts.ListViewTest#testAccessItemsCanFocus;android.widget.cts.AutoCompleteTextViewTest#testOnCommitCompletion;android.widget.cts.ScrollViewTest#testAccessSmoothScrollingEnabled;android.widget.cts.TextViewTest#testSelection;android.widget.cts.CheckedTextViewTest#testOnDraw;android.widget.cts.ViewAnimatorTest#testConstructor;android.widget.cts.RadioGroupTest#testInternalPassThroughHierarchyChangeListener;android.widget.cts.SimpleCursorAdapterTest#testSetViewImage;android.widget.cts.AdapterViewTest#testGetSelected;android.widget.cts.ExpandableListViewWithHeadersTest#testSelectedPosition;android.widget.cts.ProgressBarTest#testAccessIndeterminateDrawable;android.widget.cts.TableLayoutTest#testSetOnHierarchyChangeListener;android.widget.cts.ExpandableListViewTest#testSetOnItemClickListener;android.widget.cts.ProgressBarTest#testSetVisibility;android.widget.cts.AutoCompleteTextViewTest#testConvertSelectionToString;android.widget.cts.ImageViewTest#testSetImageResource;android.widget.cts.ScrollViewTest#testGetVerticalFadingEdgeStrengths;android.widget.cts.FilterTest#testFilter2;android.widget.cts.CursorTreeAdapterTest#testAndroidTestCaseSetupProperly;android.widget.cts.FilterTest#testFilter1;android.widget.cts.ZoomControlsTest#testSetIsZoomOutEnabled;android.widget.cts.ScrollViewTest#testMeasureChildWithMargins;android.widget.cts.CompoundButtonTest#testSetOnCheckedChangeListener;android.widget.cts.TextViewTest#testGetEditableText;android.widget.cts.HorizontalScrollViewTest#testOnRequestFocusInDescendants;android.widget.cts.AbsSpinnerTest#testAccessAdapter;android.widget.cts.ChronometerTest#testAccessOnChronometerTickListener;android.widget.cts.HeaderViewListAdapterTest#testConstructor;android.widget.cts.FrameLayoutTest#testSetForegroundGravity;android.widget.cts.AbsSpinnerTest#testGetSelectedView;android.widget.cts.TextViewTest#testSetGetTextAlignment;android.widget.cts.TextViewTest#testGetLayout;android.widget.cts.ImageViewTest#testConstructor;android.widget.cts.ImageViewTest#testInvalidateDrawable;android.widget.cts.PopupWindowTest#testShowAsDropDownWithOffsets;android.widget.cts.PopupWindowTest#testIsAboveAnchor;android.widget.cts.AutoCompleteTextViewTest#testPerformFiltering;android.widget.cts.ViewFlipperTest#testConstructor;android.widget.cts.DatePickerTest#testUpdateDate;android.widget.cts.MultiAutoCompleteTextViewTest#testMultiAutoCompleteTextView;android.widget.cts.MultiAutoCompleteTextView_CommaTokenizerTest#testConstructor;android.widget.cts.RemoteViewsTest#testSetOnClickPendingIntent;android.widget.cts.HorizontalScrollViewTest#testScrollTo;android.widget.cts.HorizontalScrollViewTest#testOnTouchEvent;android.widget.cts.ListViewTest#testOnMeasure;android.widget.cts.TextViewTest#testSetHighlightColor;android.widget.cts.BaseExpandableListAdapterTest#testNotifyDataSetInvalidated;android.widget.cts.ExpandableListViewWithHeadersTest#testConvertionBetweenFlatAndPacked;android.widget.cts.HeaderViewListAdapterTest#testRemoveFooter;android.widget.cts.ListViewTest#testTransientStateStableIds;android.widget.cts.ScrollViewTest#testSmoothScrollBy;android.widget.cts.ViewSwitcherTest#testAndroidTestCaseSetupProperly;android.widget.cts.TextViewTest#testAccessAutoLinkMask;android.widget.cts.ScrollerTest#testScrollModeWithDefaultDuration;android.widget.cts.GalleryTest#testComputeHorizontalScrollRange;android.widget.cts.CheckedTextViewTest#testSetPadding;android.widget.cts.CursorTreeAdapterTest#testGetGroupId;android.widget.cts.RemoteViewsTest#testApply;android.widget.cts.DialerFilterTest#testIsQwertyKeyboard;android.widget.cts.GalleryTest#testShowContextMenuForChild;android.widget.cts.ScrollViewTest#testPageScroll;android.widget.cts.SimpleCursorTreeAdapterTest#testSetViewImage;android.widget.cts.TableLayoutTest#testOnLayout;android.widget.cts.ArrayAdapterTest#testGetPosition;android.widget.cts.TabWidgetTest#testOnSizeChanged;android.widget.cts.SimpleCursorAdapterTest#testNewDropDownView;android.widget.cts.AutoCompleteTextViewTest#testAccessListSelection;android.widget.cts.TextViewTest#testSetText1;android.widget.cts.TextViewTest#testSetText2;android.widget.cts.RemoteViewsActivityTest#testWebView;android.widget.cts.TextViewTest#testSetText3;android.widget.cts.ToastTest#testAccessGravity;android.widget.cts.HorizontalScrollViewTest#testAddViewWithIndex;android.widget.cts.ResourceCursorTreeAdapterTest#testNewChildView;android.widget.cts.HeaderViewListAdapterTest#testAndroidTestCaseSetupProperly;android.widget.cts.ExpandableListViewTest#testGetPackedPositionForGroup;android.widget.cts.ZoomControlsTest#testShowAndHide;android.widget.cts.CompoundButtonTest#testAccessChecked;android.widget.cts.SimpleAdapterTest#testGetView;android.widget.cts.DialerFilterTest#testGetDigits;android.widget.cts.ArrayAdapterTest#testDataChangeEvent;android.widget.cts.ImageSwitcherTest#testAndroidTestCaseSetupProperly;android.widget.cts.SimpleExpandableListAdapterTest#testGetChildView;android.widget.cts.ZoomControlsTest#testConstructor;android.widget.cts.CompoundButtonTest#testVerifyDrawable;android.widget.cts.TextViewTest#testSetEms;android.widget.cts.AbsSpinnerTest#testGenerateDefaultLayoutParams;android.widget.cts.TextViewTest#testAccessError;android.widget.cts.ZoomButtonTest#testOnTouchEvent;android.widget.cts.TextViewTest#testSetMaxLinesException;android.widget.cts.CompoundButtonTest#testSetButtonDrawableById;android.widget.cts.FrameLayoutTest#testGenerateDefaultLayoutParams;android.widget.cts.HorizontalScrollViewTest#testComputeScrollDeltaToGetChildRectOnScreen;android.widget.cts.ExpandableListViewTest#testSetSelectedChild;android.widget.cts.MediaControllerTest#testShow;android.widget.cts.CursorAdapterTest#testGetDropDownView;android.widget.cts.ListViewTest#testNoSelectableItems;android.widget.cts.TextViewTest#testGetBaseLine;android.widget.cts.AbsSpinnerTest#testConstructor;android.widget.cts.ListViewTest#testAccessDividerHeight;android.widget.cts.TabWidgetTest#testChildDrawableStateChanged;android.widget.cts.AbsListViewTest#testAccessSelectedItem;android.widget.cts.ScrollerTest#testTimePassed;android.widget.cts.ArrayAdapterTest#testGetItem;android.widget.cts.ImageViewTest#testVerifyDrawable;android.widget.cts.ProgressBarTest#testConstructor;android.widget.cts.ProgressBarTest#testIncrementSecondaryProgressBy;android.widget.cts.CursorTreeAdapterTest#testSetChildrenCursor;android.widget.cts.FrameLayoutTest#testCheckLayoutParams;android.widget.cts.AbsoluteLayoutTest#testGenerateDefaultLayoutParams;android.widget.cts.ZoomButtonTest#testOnKeyUp;android.widget.cts.BaseExpandableListAdapterTest#testGetCombinedId;android.widget.cts.ListViewTest#testSetSelection;android.widget.cts.SimpleCursorAdapterTest#testNewView;android.widget.cts.AutoCompleteTextViewTest#testPopupWindow;android.widget.cts.TextView_SaveStateTest#testWriteToParcel;android.widget.cts.TabHost_TabSpecTest#testSetContent2;android.widget.cts.SeekBarTest#testConstructor;android.widget.cts.TabHost_TabSpecTest#testSetContent1;android.widget.cts.TextViewTest#testSetExtractedText;android.widget.cts.TabHost_TabSpecTest#testSetContent3;android.widget.cts.SimpleExpandableListAdapterTest#testGetGroupCount;android.widget.cts.TextViewTest#testComputeVerticalScrollRange;android.widget.cts.GridLayoutTest#testAlignment;android.widget.cts.ExpandableListViewTest#testGetPackedPositionForChild;android.widget.cts.FrameLayoutTest#testConstructor;android.widget.cts.CursorAdapterTest#testAndroidTestCaseSetupProperly;android.widget.cts.RelativeLayoutTest#testSetHorizontalGravity;android.widget.cts.GalleryTest#testDispatchKeyEvent;android.widget.cts.ToastTest#testSetText1;android.widget.cts.HorizontalScrollViewTest#testFullScroll;android.widget.cts.RemoteViewsTest#testSetCharSequence;android.widget.cts.ToastTest#testSetText2;android.widget.cts.HeaderViewListAdapterTest#testRemoveHeader;android.widget.cts.TextSwitcherTest#testSetCurrentText;android.widget.cts.TwoLineListItemTest#testConstructor;android.widget.cts.MediaControllerTest#testMediaController;android.widget.cts.ListViewTest#testConstructor;android.widget.cts.AbsListViewTest#testAccessSelector;android.widget.cts.BaseExpandableListAdapterTest#testDataSetObserver;android.widget.cts.BaseAdapterTest#testHasStableIds;android.widget.cts.TextViewTest#testAccessImeActionLabel;android.widget.cts.CompoundButtonTest#testSetButtonDrawableByDrawable;android.widget.cts.AbsListViewTest#testLayoutChildren;android.widget.cts.ImageViewTest#testClearColorFilter;android.widget.cts.TextViewTest#testGetResolvedTextDirectionRtl;android.widget.cts.CheckedTextViewTest#testChecked;android.widget.cts.MultiAutoCompleteTextViewTest#testReplaceText;android.widget.cts.DigitalClockTest#testOnDetachedFromWindow;android.widget.cts.CursorTreeAdapterTest#testGetChildView;android.widget.cts.FrameLayout_LayoutParamsTest#testAndroidTestCaseSetupProperly;android.widget.cts.ImageViewTest#testSetMaxWidth;android.widget.cts.TabHostTest#testDispatchWindowFocusChanged;android.widget.cts.DigitalClockTest#testConstructor;android.widget.cts.DialerFilterTest#testOnKeyUpDown;android.widget.cts.TextViewTest#testSetHorizontallyScrolling;android.widget.cts.HeaderViewListAdapterTest#testGetViewTypeCount;android.widget.cts.AbsSeekBarTest#testAccessKeyProgressIncrement;android.widget.cts.AbsSeekBarTest#testSetThumb;android.widget.cts.ProgressBarTest#testOnDraw;android.widget.cts.TextViewTest#testSetText;android.widget.cts.PopupWindowTest#testAccessContentView;android.widget.cts.GridLayoutTest#testConstructor;android.widget.cts.PopupWindowTest#testAccessHeight;android.widget.cts.ToggleButtonTest#testAndroidTestCaseSetupProperly;android.widget.cts.ProgressBarTest#testVerifyDrawable;android.widget.cts.TableRowTest#testOnLayout;android.widget.cts.RadioGroupTest#testInternalCheckedStateTracker;android.widget.cts.HorizontalScrollViewTest#testOnSizeChanged;android.widget.cts.ResourceCursorAdapterTest#testNewView;android.widget.cts.MultiAutoCompleteTextView_CommaTokenizerTest#testFindTokenEnd;android.widget.cts.ZoomButtonTest#testOnLongClick;android.widget.cts.AnalogClockTest#testOnDetachedFromWindow;android.widget.cts.TextViewTest#testSetMaxLines;android.widget.cts.ExpandableListViewTest#testPerformItemClick;android.widget.cts.TextViewTest#testResetTextDirection;android.widget.cts.ScrollViewTest#testScrollTo;android.widget.cts.TableLayoutTest#testGenerateDefaultLayoutParams;android.widget.cts.ImageViewTest#testSetAdjustViewBounds;android.widget.cts.TableRowTest#testCheckLayoutParams;android.widget.cts.CheckedTextViewTest#testToggle;android.widget.cts.RemoteViewsTest#testSetProgressBar;android.widget.cts.VideoViewTest#testSetOnErrorListener;android.widget.cts.GalleryTest#testDispatchSetPressed;android.widget.cts.HorizontalScrollViewTest#testSmoothScrollTo;android.widget.cts.ZoomControlsTest#testSetZoomSpeed;android.widget.cts.ExpandableListViewTest#testSetAdapter;android.widget.cts.AutoCompleteTextViewTest#testOnFilterComplete;android.widget.cts.ImageViewTest#testGetDrawable;android.widget.cts.CursorTreeAdapterTest#testRunQueryOnBackgroundThread;android.widget.cts.SlidingDrawerTest#testGetHandle;android.widget.cts.BaseAdapterTest#testAndroidTestCaseSetupProperly;android.widget.cts.MediaControllerTest#testOnTrackballEvent;android.widget.cts.GalleryTest#testGenerateLayoutParams;android.widget.cts.PopupWindowTest#testConstructor;android.widget.cts.GalleryTest#testFoo;android.widget.cts.PopupWindowTest#testAccessAnimationStyle;android.widget.cts.ToggleButtonTest#testAccessTextOn;android.widget.cts.AbsoluteLayoutTest#testGenerateLayoutParams1;android.widget.cts.TextViewTest#testGetDefaultEditable;android.widget.cts.AbsoluteLayoutTest#testGenerateLayoutParams2;android.widget.cts.ArrayAdapterTest#testGetFilter;android.widget.cts.CheckedTextViewTest#testSetCheckMarkDrawableById;android.widget.cts.ScrollerTest#testAbortAnimation;android.widget.cts.LinearLayout_LayoutParamsTest#testConstructor;android.widget.cts.TextViewTest#testComputeVerticalScrollExtent;android.widget.cts.AbsSpinnerTest#testSetSelectionInt;android.widget.cts.TabHostTest#testGetTabContentView;android.widget.cts.TextViewTest#testGetDefaultMovementMethod;android.widget.cts.ScrollViewTest#testRequestChildRectangleOnScreen;android.widget.cts.TabHostTest#testGetCurrentView;android.widget.cts.TextViewTest#testAccessFilters;android.widget.cts.GalleryTest#testCheckLayoutParams;android.widget.cts.RadioGroup_LayoutParamsTest#testConstructor;android.widget.cts.BaseExpandableListAdapterTest#testOnGroupExpanded;android.widget.cts.MultiAutoCompleteTextView_CommaTokenizerTest#testTerminateToken;android.widget.cts.ScrollViewTest#testConstructor;android.widget.cts.ListViewTest#testLayoutChildren;android.widget.cts.RemoteViewsTest#testSetImageViewUri;android.widget.cts.ViewAnimatorTest#testAccessDisplayedChild;android.widget.cts.ExpandableListViewTest#testCollapseGroup;android.widget.cts.AnalogClockTest#testConstructor;android.widget.cts.CursorAdapterTest#testConvertToString;android.widget.cts.BaseAdapterTest#testIsEmpty;android.widget.cts.ResourceCursorTreeAdapterTest#testNewGroupView;android.widget.cts.ScrollViewTest#testFling;android.widget.cts.SlidingDrawerTest#testOnMeasure;android.widget.cts.TextViewTest#testSetMaxEms;android.widget.cts.LinearLayoutTest#testGenerateLayoutParams;android.widget.cts.PopupWindowTest#testAccessInputMethodMode;android.widget.cts.ListViewTest#testPerformItemClick;android.widget.cts.TextViewTest#testOnTextChanged;android.widget.cts.GridViewTest#testSetSelection;android.widget.cts.CursorAdapterTest#testHasStableIds;android.widget.cts.ProgressBarTest#testSetIndeterminate;android.widget.cts.TableRowTest#testGetVirtualChildCount;android.widget.cts.AutoCompleteTextViewTest#testOnTextChanged;android.widget.cts.TextViewTest#testSetLinesException;android.widget.cts.TextViewTest#testLength;android.widget.cts.RelativeLayoutTest#testSetGravity;android.widget.cts.RelativeLayoutTest#testConstructor;android.widget.cts.TextViewTest#testGetLineHeight;android.widget.cts.GalleryTest#testSetAnimationDuration;android.widget.cts.PopupWindowTest#testAccessTouchable;android.widget.cts.RelativeLayoutTest#testSetVerticalGravity;android.widget.cts.CursorTreeAdapterTest#testConstructor;android.widget.cts.AbsSpinnerTest#testRequestLayout;android.widget.cts.TextViewTest#testOnKeyShortcut;android.widget.cts.TableRowTest#testGetVirtualChildAt;android.widget.cts.SpinnerTest#testConstructor;android.widget.cts.SimpleAdapterTest#testGetDropDownView;android.widget.cts.ScrollViewTest#testAddViewWithLayoutParams;android.widget.cts.HeaderViewListAdapterTest#testGetItemViewType;android.widget.cts.RadioGroupTest#testSetOnCheckedChangeListener;android.widget.cts.ToggleButtonTest#testOnFinishInflate;android.widget.cts.DialerFilterTest#testAppend;android.widget.cts.HorizontalScrollViewTest#testRequestChildRectangleOnScreen;android.widget.cts.RadioButtonTest#testConstructor;android.widget.cts.PopupWindowTest#testDismiss;android.widget.cts.TableLayoutTest#testAddView2;android.widget.cts.TableLayoutTest#testAddView3;android.widget.cts.TabHostTest#testOnTouchModeChanged;android.widget.cts.TableLayoutTest#testAddView4;android.widget.cts.HeaderViewListAdapterTest#testGetWrappedAdapter;android.widget.cts.TableLayoutTest#testAddView1;android.widget.cts.ImageSwitcherTest#testSetImageResource;android.widget.cts.ToggleButtonTest#testDrawableStateChanged;android.widget.cts.EditTextTest#testSetSelectionIndex;android.widget.cts.EditTextTest#testExtendSelection;android.widget.cts.AbsSeekBarTest#testSetMax;android.widget.cts.CursorTreeAdapterTest#testChangeCursor;android.widget.cts.AdapterViewTest#testItemOrItemIdAtPosition;android.widget.cts.HorizontalScrollViewTest#testDispatchKeyEvent;android.widget.cts.TableRowTest#testGenerateDefaultLayoutParams;android.widget.cts.AbsListViewTest#testSetRecyclerListener;android.widget.cts.GalleryTest#testGetContextMenuInfo;android.widget.cts.AbsListViewTest#testAccessStackFromBottom;android.widget.cts.TextViewTest#testAccessText;android.widget.cts.SpinnerTest#testGetBaseline;android.widget.cts.ScrollViewTest#testRequestChildFocus;android.widget.cts.LinearLayoutTest#testGenerateDefaultLayoutParams;android.widget.cts.ButtonTest#testConstructor;android.widget.cts.ResourceCursorAdapterTest#testSetViewResource;android.widget.cts.ExpandableListViewBasicTest#testContextMenus;android.widget.cts.FrameLayoutTest#testVerifyDrawable;android.widget.cts.ExpandableListViewTest#testGetPackedPositionType;android.widget.cts.LinearLayoutTest#testLayoutHorizontal;android.widget.cts.ScrollViewTest#testComputeVerticalScrollRange;android.widget.cts.GridViewTest#testOnFocusChanged;android.widget.cts.ZoomControlsTest#testOnTouchEvent;android.widget.cts.GridViewTest#testActivityTestCaseSetUpProperly;android.widget.cts.ListViewTest#testAccessItemChecked;android.widget.cts.AbsoluteLayoutTest#testConstructor;android.widget.cts.TextViewTest#testComputeHorizontalScrollRange;android.widget.cts.HorizontalScrollViewTest#testAddViewWithLayoutParams;android.widget.cts.RemoteViewsTest#testGetLayoutId;android.widget.cts.CursorTreeAdapterTest#testNotifyDataSetChangedBoolean;android.widget.cts.TableRow_LayoutParamsTest#testSetBaseAttributes;android.widget.cts.HorizontalScrollViewTest#testMeasureChildWithMargins;android.widget.cts.TextViewTest#testSetIncludeFontPadding;android.widget.cts.HorizontalScrollViewTest#testAddView;android.widget.cts.TimePickerTest#testAccessCurrentMinute;android.widget.cts.TextViewTest#testGetExtendedPaddingBottom;android.widget.cts.BaseExpandableListAdapterTest#testIsEmpty;android.widget.cts.SimpleAdapterTest#testAccessViewBinder;android.widget.cts.SpinnerTest#testOnLayout;android.widget.cts.AutoCompleteTextViewTest#testAccessValidater;android.widget.cts.ScrollViewTest#testAddViewWithIndex;android.widget.cts.FrameLayoutTest#testDrawableStateChanged;android.widget.cts.PopupWindowTest#testSetTouchInterceptor;android.widget.cts.SimpleAdapterTest#testGetItem;android.widget.cts.ImageViewTest#testSetColorFilter1;android.widget.cts.ImageViewTest#testSetColorFilter2;android.widget.cts.SlidingDrawerTest#testDispatchDraw;android.widget.cts.TextViewTest#testSetOnEditorActionListener;android.widget.cts.DatePickerTest#testSetEnabled;android.widget.cts.RemoteViewsTest#testReapply;android.widget.cts.TextViewTest#testCompound;android.widget.cts.AdapterViewTest#testAccessEmptyView;android.widget.cts.Gallery_LayoutParamsTest#testConstructor;android.widget.cts.TextViewTest#testGetResolvedTextDirectionRtlWithInheritance;android.widget.cts.PopupWindowTest#testShowAtLocation;android.widget.cts.TextViewTest#testPerformLongClick;android.widget.cts.ExpandableListViewTest#testSetChildDivider;android.widget.cts.PopupWindowTest#testAccessClippingEnabled;android.widget.cts.RemoteViewsTest#testSetTextViewText;android.widget.cts.ScrollViewTest#testMeasureChild;android.widget.cts.TableLayoutTest#testAccessColumnShrinkable;android.widget.cts.TableRow_LayoutParamsTest#testConstructor;android.widget.cts.GalleryTest#testComputeHorizontalScrollOffset;android.widget.cts.ProgressBarTest#testOnMeasure;android.widget.cts.ProgressBarTest#testAccessProgressDrawable;android.widget.cts.SimpleAdapterTest#testGetFilter;android.widget.cts.RadioGroupTest#testSetOnHierarchyChangeListener;android.widget.cts.AbsListViewTest#testHandleDataChanged;android.widget.cts.AbsListViewTest#testShowContextMenuForChild;android.widget.cts.ExpandableListViewTest#testConstructor;android.widget.cts.HeaderViewListAdapterTest#testIsEmpty;android.widget.cts.AlphabetIndexerTest#testAlphabetIndexer;android.widget.cts.ChronometerTest#testAccessBase;android.widget.cts.TextViewTest#testAccessRawContentType;android.widget.cts.ScrollViewTest#testExecuteKeyEvent;android.widget.cts.SpinnerTest#testAccessPrompt;android.widget.cts.AnalogClockTest#testOnDraw;android.widget.cts.ChronometerTest#testStartAndStop;android.widget.cts.TabWidgetTest#testSetCurrentTab;android.widget.cts.CursorTreeAdapterTest#testGetFilter;android.widget.cts.ImageSwitcherTest#testSetImageURI;android.widget.cts.TabHostTest#testSetOnTabChangedListener;android.widget.cts.ScrollViewTest#testSmoothScrollTo;android.widget.cts.SimpleExpandableListAdapterTest#testGetGroupId;android.widget.cts.AbsListViewTest#testAccessCacheColorHint;android.widget.cts.TabHostTest#testSetCurrentTabByTag;android.widget.cts.HeaderViewListAdapterTest#testIsEnabled;android.widget.cts.ImageViewTest#testSetImageState;android.widget.cts.ExpandableListViewTest#testSetSelectedGroup;android.widget.cts.DialerFilterTest#testRemoveFilterWatcher;android.widget.cts.ToggleButtonTest#testAccessTextOff;android.widget.cts.TextViewTest#testSetSelectAllOnFocus;android.widget.cts.TextViewTest#testAccessKeyListener;android.widget.cts.ArrayAdapterTest#testInsert;android.widget.cts.MediaControllerTest#testSetPrevNextListeners;android.widget.cts.PopupWindowTest#testUpdatePositionAndDimension;android.widget.cts.TextViewTest#testOnDraw;android.widget.cts.TextViewTest#testSetFrame;android.widget.cts.ScrollerTest#testAccessFinalX;android.widget.cts.ScrollerTest#testAccessFinalY;android.widget.cts.AdapterViewTest#testOnLayout;android.widget.cts.ScrollViewTest#testOnRequestFocusInDescendants;android.widget.cts.TextViewTest#testCancelLongPress;android.widget.cts.GridViewTest#testAccessAdapter;android.widget.cts.ZoomButtonTest#testSetZoomSpeed;android.widget.cts.ExpandableListViewTest#testGetPackedPositionGroup;android.widget.cts.ExpandableListViewTest#testSetGroupIndicator;android.widget.cts.TextViewTest#testGetResolvedTextDirectionLtr;android.widget.cts.BaseAdapterTest#testGetDropDownView;android.widget.cts.ViewAnimatorTest#testShowPrevious;android.widget.cts.TextViewTest#testOnCreateContextMenu;android.widget.cts.TextViewTest#testAppend;android.widget.cts.DialerFilterTest#testOnFocusChanged;android.widget.cts.SlidingDrawerTest#testOnLayout;android.widget.cts.TextViewTest#testGetFocusedRect;android.widget.cts.TextSwitcherTest#testAddView;android.widget.cts.ExpandableListViewTest#testSetChildIndicatorBounds;android.widget.cts.RemoteViewsTest#testSetImageViewBitmap;android.widget.cts.CursorTreeAdapterTest#testHasStableIds;android.widget.cts.ToastTest#testConstructor;android.widget.cts.CursorTreeAdapterTest#testConvertToString;android.widget.cts.AbsListViewTest#testGetTopBottomFadingEdgeStrength;android.widget.cts.EditTextTest#testGetDefaultMovementMethod;android.widget.cts.AbsListViewTest#testAddTouchables;android.widget.cts.SeekBarTest#testSetOnSeekBarChangeListener;android.widget.cts.TextViewTest#testAccessLinkTextColor;android.widget.cts.TextViewTest#testAccessEllipsize;android.widget.cts.RatingBarTest#testAccessNumStars;android.widget.cts.ImageViewTest#testGetBaseline;android.widget.cts.AnalogClockTest#testOnAttachedToWindow;android.widget.cts.LayoutDirectionTest#testDirectionInheritanceForAllLayoutsWithCode;android.widget.cts.AutoCompleteTextViewTest#testAccessItemSelectedListener;android.widget.cts.TextSwitcherTest#testConstructor;android.widget.cts.TextViewTest#testGetResolvedTextAlignment;android.widget.cts.ExpandableListView_ExpandableListContextMenuInfoTest#testConstructor;android.widget.cts.HeaderViewListAdapterTest#testGetFilter;android.widget.cts.AbsSeekBarTest#testConstructor;android.widget.cts.ZoomControlsTest#testSetOnZoomOutClickListener;android.widget.cts.ArrayAdapterTest#testSort;android.widget.cts.HorizontalScrollViewTest#testFling;android.widget.cts.GridViewTest#testConstructor;android.widget.cts.RemoteViewsTest#testNotFeasibleSetters;android.widget.cts.RemoteViewsTest#testWriteToParcel;android.widget.cts.ScrollViewTest#testAddView;android.widget.cts.FilterTest#testConstructor;android.widget.cts.SimpleExpandableListAdapterTest#testGetChildId;android.widget.cts.AutoCompleteTextViewTest#testOnDetachedFromWindow;android.widget.cts.ScrollViewTest#testRequestLayout;android.widget.cts.ImageButtonTest#testConstructor;android.widget.cts.EditTextTest#testSelectAll;android.widget.cts.PopupWindowTest#testSetOnDismissListener;android.widget.cts.TimePickerTest#testAccessCurrentHour;android.widget.cts.ArrayAdapterTest#testCreateFromResource;android.widget.cts.TextViewTest#testSetShadowLayer;android.widget.cts.CompoundButtonTest#testOnCreateDrawableState;android.widget.cts.SimpleCursorAdapterTest#testChangeCursorAndColumns;android.widget.cts.ImageViewTest#testSetFrame;android.widget.cts.ArrayAdapterTest#testSetDropDownViewResouce;android.widget.cts.ResourceCursorAdapterTest#testNewDropDownView;android.widget.cts.ToastTest#testCancel;android.widget.cts.RatingBarTest#testAccessStepSize;android.widget.cts.CheckedTextViewTest#testSetCheckMarkDrawableByDrawable;android.widget.cts.TextViewTest#testInstanceState;android.widget.cts.AbsListViewTest#testGetFocusedRect;android.widget.cts.ViewAnimatorTest#testAddView;android.widget.cts.AdapterViewTest#testUnsupportedMethods;android.widget.cts.TextViewTest#testOnPrivateIMECommand;android.widget.cts.CursorAdapterTest#testAccessCursor;android.widget.cts.TextViewTest#testBringPointIntoView;android.widget.cts.SpinnerTest#testOnClick;android.widget.cts.TextViewTest#testSetEditableFactory;android.widget.cts.ViewSwitcherTest#testGetNextView;android.widget.cts.AbsSeekBarTest#testAccessThumbOffset;android.widget.cts.AbsoluteLayout_LayoutParamsTest#testDebug;android.widget.cts.DatePickerTest#testAccessDate;android.widget.cts.CursorAdapterTest#testConstructor;android.widget.cts.HorizontalScrollViewTest#testPageScroll;android.widget.cts.AutoCompleteTextViewTest#testPerformValidation;android.widget.cts.TextViewTest#testAccessLinksClickable;android.widget.cts.SlidingDrawerTest#testGetContent;android.widget.cts.ViewAnimatorTest#testShowNext;android.widget.cts.TextViewTest#testResetTextAlignment;android.widget.cts.ScrollerTest#testFlingMode;android.widget.cts.SlidingDrawerTest#testOnInterceptTouchEvent;android.widget.cts.DatePickerTest#testConstructor;android.widget.cts.TableLayoutTest#testAccessColumnCollapsed;android.widget.cts.AbsSeekBarTest#testVerifyDrawable;android.widget.cts.ScrollViewTest#testOnSizeChanged;android.widget.cts.TimePickerTest#testConstructors;android.widget.cts.TextViewTest#testAccessTransformationMethod;android.widget.cts.SimpleCursorTreeAdapterTest#testBindChildView;android.widget.cts.ScrollerTest#testExtendDuration;android.widget.cts.RatingBarTest#testAccessRating;android.widget.cts.RelativeLayoutTest#testCheckLayoutParams;android.widget.cts.GalleryTest#testGenerateDefaultLayoutParams;android.widget.cts.AbsoluteLayoutTest#testCheckLayoutParams;android.widget.cts.SlidingDrawerTest#testOnFinishInflate;android.widget.cts.EditTextTest#testSetSelectionStartstop;android.widget.cts.ToggleButtonTest#testSetBackgroundDrawable;android.widget.cts.HeaderViewListAdapterTest#testRegisterDataSetObserver;android.widget.cts.TextViewTest#testAccessFreezesText;android.widget.cts.ArrayAdapterTest#testAndroidTestCaseSetupProperly;android.widget.cts.ExpandableListViewTest#testGetSelectedPosition;android.widget.cts.TabHostTest#testGetCurrentTabTag;android.widget.cts.GridViewTest#testOnMeasure;android.widget.cts.HeaderViewListAdapterTest#testGetItemId;android.widget.cts.RadioButtonTest#testToggle;android.widget.cts.TextViewTest#testOnFocusChanged;android.widget.cts.AbsoluteLayout_LayoutParamsTest#testAndroidTestCaseSetupProperly;android.widget.cts.ViewAnimatorTest#testAccessInAnimation;android.widget.cts.AdapterViewTest#testDispatchSaveInstanceState;android.widget.cts.HeaderViewListAdapterTest#testHasStableIds;android.widget.cts.RelativeLayoutTest#testOnMeasure;android.widget.cts.HorizontalScrollViewTest#testSmoothScrollBy;android.widget.cts.ListViewTest#testTransientStateUnstableIds;android.widget.cts.TableRowTest#testConstructor;android.widget.cts.TabHost_TabSpecTest#testSetIndicator2;android.widget.cts.ArrayAdapterTest#testAccessView;android.widget.cts.TabHost_TabSpecTest#testSetIndicator1;android.widget.cts.HorizontalScrollViewTest#testAccessSmoothScrollingEnabled;android.widget.cts.TextViewTest#testSetCursorVisible;android.widget.cts.FrameLayout_LayoutParamsTest#testConstructor;android.widget.cts.AutoCompleteTextViewTest#testOnAttachedToWindow;android.widget.cts.CursorAdapterTest#testInit;android.widget.cts.SimpleAdapterTest#testGetItemId;android.widget.cts.TableLayout_LayoutParamsTest#testSetBaseAttributes;android.widget.cts.ExpandableListViewBasicTest#testExpandedGroupMovement;android.widget.cts.TextViewTest#testAccessPaintFlags;android.widget.cts.CursorAdapterTest#testGetItemId;android.widget.cts.GalleryTest#testSetSpacing;android.widget.cts.TextViewTest#testSetLines;android.widget.cts.ScrollerTest#testConstructor;android.widget.cts.CompoundButtonTest#testOnDraw;android.widget.cts.ListViewTest#testGetMaxScrollAmount;android.widget.cts.TwoLineListItemTest#testGetTexts;android.widget.cts.AbsListViewTest#testBeforeAndAfterTextChanged;android.widget.cts.AdapterViewTest#testConstructor;android.widget.cts.SimpleAdapterTest#testSetViewText;android.widget.cts.ExpandableListViewTest#testGetSelectedId;android.widget.cts.TableLayoutTest#testOnMeasure;android.widget.cts.DialerFilterTest#testSetDigitsWatcher;android.widget.cts.AbsListViewTest#testPointToPosition;android.widget.cts.ExpandableListViewTest#testGetPackedPositionChild;android.widget.cts.ExpandableListViewBasicTest#testSelectedPosition;android.widget.cts.RemoteViewsTest#testSetBitmap;android.widget.cts.TextViewTest#testFoo;android.widget.cts.EditTextTest#testAccessText;android.widget.cts.AbsListViewTest#testComputeVerticalScrollValues;android.widget.cts.VideoViewTest#testConstructor;android.widget.cts.EditTextTest#testGetDefaultEditable;android.widget.cts.EditTextTest#testConstructor;android.widget.cts.ExpandableListViewWithHeadersTest#testExpandOnFirstGroup;android.widget.cts.RelativeLayout_LayoutParamsTest#testStartEnd;android.widget.cts.ScrollViewTest#testAddViewWithIndexAndLayoutParams;android.widget.cts.ViewFlipperTest#testSetFlipInterval;android.widget.cts.ZoomButtonTest#testConstructor;android.widget.cts.TableRowTest#testOnMeasure;android.widget.cts.TableLayoutTest#testAccessStretchAllColumns;android.widget.cts.GridViewTest#testSetHorizontalSpacing;android.widget.cts.ExpandableListViewWithHeadersTest#testContextMenus;android.widget.cts.ListViewTest#testRequestChildRectangleOnScreen;android.widget.cts.VideoViewTest#testSetMediaController;android.widget.cts.AdapterViewTest#testAccessOnItemClickAndLongClickListener;android.widget.cts.RemoteViewsTest#testSetImageViewResource;android.widget.cts.TextViewTest#testScroll;android.widget.cts.VideoViewTest#testResolveAdjustedSize;android.widget.cts.ScrollViewTest#testOnInterceptTouchEvent;android.widget.cts.ViewAnimatorTest#testRemoveViews;android.widget.cts.AlphabetIndexerTest#testAndroidTestCaseSetupProperly;android.widget.cts.ImageViewTest#testSetMaxHeight;android.widget.cts.ImageViewTest#testOnMeasure;android.widget.cts.RadioGroup_LayoutParamsTest#testSetBaseAttributes;android.widget.cts.AbsoluteLayoutTest#testOnMeasure;android.widget.cts.CompoundButtonTest#testPerformClick;android.widget.cts.ExpandableListViewTest#testAccessExpandableListAdapter;android.widget.cts.TextView_SaveStateTest#testToString;android.widget.cts.CursorTreeAdapterTest#testGetGroupView;android.widget.cts.TextViewTest#testPressKey;android.widget.cts.ProgressBarTest#testAccessMax;android.widget.cts.TextViewTest#testBeginEndBatchEdit;android.widget.cts.HeaderViewListAdapterTest#testGetItem;android.widget.cts.LinearLayoutTest#testActivityTestCaseSetUpProperly;android.widget.cts.TextViewTest#testSetGetTextDirection;android.widget.cts.HeaderViewListAdapterTest#testGetView;android.widget.cts.ScrollerTest#testScrollMode;android.widget.cts.ProgressBarTest#testAccessInterpolator;android.widget.cts.TextViewTest#testTextAttr;android.widget.cts.AbsListViewTest#testAccessScrollingCacheEnabled;android.widget.cts.MediaControllerTest#testSetEnabled;android.widget.cts.SimpleCursorAdapterTest#testConvertToString;android.widget.cts.ExpandableListViewTest#testDispatchDraw;android.widget.cts.DigitalClockTest#testOnAttachedToWindow;android.widget.cts.BaseAdapterTest#testGetViewTypeCount;android.widget.cts.CursorAdapterTest#testGetCount;android.widget.cts.ToastTest#testAccessView;android.widget.cts.FrameLayoutTest#testOnMeasure;android.widget.cts.HorizontalScrollViewTest#testGetMaxScrollAmount;android.widget.cts.AbsListViewTest#testSetScrollIndicators;android.widget.cts.TabHostTest#testOnAttachedToAndDetachedFromWindow;android.widget.cts.CursorAdapterTest#testGetFilter;android.widget.cts.CursorTreeAdapterTest#testGetChild;android.widget.cts.SlidingDrawerTest#testSetOnDrawerScrollListener;android.widget.cts.ProgressBarTest#testOnSizeChange;android.widget.cts.TextViewTest#testGetTotalPaddingRight;android.widget.cts.GridViewTest#testPressKey;android.widget.cts.CheckedTextViewTest#testDrawableStateChanged;android.widget.cts.ScrollerTest#testGetDuration;android.widget.cts.TableLayoutTest#testRequestLayout;android.widget.cts.ImageViewTest#testAccessImageMatrix;android.widget.cts.PopupWindowTest#testAccessWidth;android.widget.cts.BaseAdapterTest#testDataSetObserver;android.widget.cts.SpinnerTest#testPerformClick;android.widget.cts.MediaControllerTest#testConstructor;android.widget.cts.SimpleCursorTreeAdapterTest#testConstructor;android.widget.cts.TextViewTest#testGetTextColor;android.widget.cts.DialerFilterTest#testOnModechange;android.widget.cts.AdapterViewTest#testDispatchRestoreInstanceState;android.widget.cts.ImageViewTest#testOnCreateDrawableState;android.widget.cts.CursorTreeAdapterTest#testNotifyDataSetInvalidated;android.widget.cts.SimpleExpandableListAdapterTest#testGetGroupView;android.widget.cts.ListViewTest#testRequestLayout;android.widget.cts.Gallery_LayoutParamsTest#testAndroidTestCaseSetupProperly;android.widget.cts.SimpleExpandableListAdapterTest#testGetChild;android.widget.cts.TableRowTest#testSetOnHierarchyChangeListener;android.widget.cts.TextViewTest#testGetExtendedPaddingTop;android.widget.cts.ResourceCursorAdapterTest#testSetDropDownViewResource;android.widget.cts.LinearLayoutTest#testAccessBaselineAligned;android.widget.cts.CursorTreeAdapterTest#testGetChildId;android.widget.cts.GridViewTest#testSetColumnWidth;android.widget.cts.AbsListViewTest#testAccessTranscriptMode;android.widget.cts.VideoViewTest#testGetBufferPercentage;android.widget.cts.LinearLayoutTest#testConstructor;android.widget.cts.TextViewTest#testAccessContentType;android.widget.cts.SimpleCursorAdapterTest#testBindView;android.widget.cts.SlidingDrawerTest#testOnTouchEvent;android.widget.cts.ListViewTest#testOnKeyUpDown;android.widget.cts.SimpleCursorAdapterTest#testAccessCursorToStringConverter;android.widget.cts.TabWidgetTest#testAddView;android.widget.cts.TextViewTest#testIsInputMethodTarget;android.widget.cts.AbsoluteLayout_LayoutParamsTest#testConstructor;android.widget.cts.RelativeLayoutTest#testGetBaseline;android.widget.cts.TextViewTest#testGetLineCount;android.widget.cts.GridLayoutTest#testActivityTestCaseSetUpProperly;android.widget.cts.ProgressBarTest#testInvalidateDrawable;android.widget.cts.AbsSpinnerTest#testOnSaveAndRestoreInstanceState;android.widget.cts.MultiAutoCompleteTextViewTest#testConstructor;android.widget.cts.ExpandableListViewTest#testGetFlatListPosition;android.widget.cts.ArrayAdapterTest#testAddAllParams;android.widget.cts.CursorTreeAdapterTest#testSetGroupCursor;android.widget.cts.TextViewTest#testDidTouchFocusSelect;android.widget.cts.SimpleCursorAdapterTest#testConstructor;android.widget.cts.TextViewTest#testAccessImeOptions;android.widget.cts.TabHostTest#testClearAllTabs;android.widget.cts.TextViewTest#testGetFadingEdgeStrength;android.widget.cts.TextViewTest#testSetMinLines;android.widget.cts.DialerFilterTest#testConstructor;android.widget.cts.AbsListViewTest#testConstructor;android.widget.cts.HorizontalScrollViewTest#testAddViewWithIndexAndLayoutParams;android.widget.cts.TextViewTest#testTextDirectionDefault;android.widget.cts.TextViewTest#testGetLineBounds;android.widget.cts.HorizontalScrollViewTest#testConstructor;android.widget.cts.AutoCompleteTextViewTest#testSetFrame;android.widget.cts.RelativeLayoutTest#testGenerateLayoutParams2;android.widget.cts.RelativeLayoutTest#testGenerateLayoutParams1;android.widget.cts.ArrayAdapterTest#testAdd;android.widget.cts.PopupWindowTest#testUpdateDimensionAndAlignAnchorView;android.widget.cts.ToastTest#testAccessMargin;android.widget.cts.RemoteViewsActivityTest#testGood;android.widget.cts.TextViewTest#testAccessTextSize;android.widget.cts.TableLayoutTest#testColumnStretchableEffect;android.widget.cts.CompoundButtonTest#testDrawableStateChanged;android.widget.cts.CursorAdapterTest#testAccessFilterQueryProvider;android.widget.cts.HorizontalScrollViewTest#testArrowScroll;android.widget.cts.ScrollViewTest#testOnMeasure;android.widget.cts.TextViewTest#testTextChangedListener;android.widget.cts.AutoCompleteTextViewTest#testSetCompletionHint;android.widget.cts.TextViewTest#testAccessTextColor;android.widget.cts.FrameLayoutTest#testAccessMeasureAllChildren;android.widget.cts.LinearLayoutTest#testAccessWeightSum;android.widget.cts.HorizontalScrollViewTest#testOnMeasure;android.widget.cts.ResourceCursorAdapterTest#testConstructor;android.widget.cts.FrameLayoutTest#testOnSizeChanged;android.widget.cts.LinearLayoutTest#testCheckLayoutParams;android.widget.cts.PopupWindowTest#testSetWindowLayoutMode;android.widget.cts.ExpandableListView_ExpandableListContextMenuInfoTest#testAndroidTestCaseSetupProperly;android.widget.cts.ListViewTest#testAccessHeaderView;android.widget.cts.RatingBarTest#testAccessOnRatingBarChangeListener;android.widget.cts.GridViewTest#testSetGravity;android.widget.cts.TextViewTest#testAccessHint;android.widget.cts.HorizontalScrollViewTest#testOnLayout;android.widget.cts.ListViewTest#testAccessAdapter;android.widget.cts.ArrayAdapterTest#testGetItemId;android.widget.cts.ImageButtonTest#testAndroidTestCaseSetupProperly;android.widget.cts.TextViewTest#testOnDetachedFromWindow;android.widget.cts.ProgressBarTest#testAccessSecondaryProgress;android.widget.cts.SimpleExpandableListAdapterTest#testIsChildSelectable;android.widget.cts.TextViewTest#testTextAlignmentDefault;android.widget.cts.TableLayoutTest#testCheckLayoutParams;android.widget.cts.AnalogClockTest#testOnSizeChanged;android.widget.cts.DialerFilterTest#testSetLettersWatcher;android.widget.cts.ViewAnimatorTest#testAccessDisplayedChildBoundary;android.widget.cts.TextViewTest#testSetSpannableFactory;android.widget.cts.ImageSwitcherTest#testConstructor;android.widget.cts.TextViewTest#testAccessMovementMethod;android.widget.cts.AbsSeekBarTest#testDrawableStateChanged;android.widget.cts.RadioGroupTest#testAddView;android.widget.cts.HorizontalScrollViewTest#testOnInterceptTouchEvent;android.widget.cts.TabHostTest#testConstructor;android.widget.cts.CursorTreeAdapterTest#testGetChildrenCount;android.widget.cts.SimpleCursorAdapterTest#testChangeCursor;android.widget.cts.HorizontalScrollViewTest#testAccessFillViewport;android.widget.cts.AbsSeekBarTest#testFoo;android.widget.cts.TableLayoutTest#testConstructor;android.widget.cts.GalleryTest#testSetUnselectedAlpha;android.widget.cts.AbsListViewTest#testInvalidateViews;android.widget.cts.HeaderViewListAdapterTest#testGetCount;android.widget.cts.RatingBarTest#testAccessIndicator;android.widget.cts.RelativeLayout_LayoutParamsTest#testConstructor;android.widget.cts.CursorAdapterTest#testNewDropDownView;android.widget.cts.ChronometerTest#testAccessFormat;android.widget.cts.ExpandableListViewBasicTest#testPreconditions;android.widget.cts.AbsListViewTest#testFoo;android.widget.cts.ListViewTest#testOnTouchEvent;android.widget.cts.TabHostTest#testAddTab;android.widget.cts.AdapterViewTest#testChangeFocusable;android.widget.cts.ListViewTest#testAccessDivider;android.widget.cts.ListViewTest#testAccessFooterView;android.widget.cts.SimpleCursorAdapterTest#testAccessViewBinder;android.widget.cts.ZoomButtonTest#testSetEnabled;android.widget.cts.CheckedTextViewTest#testConstructor;android.widget.cts.GridViewTest#testLayoutChildren;android.widget.cts.ImageViewTest#testSetAlpha;android.widget.cts.TextViewTest#testClearComposingText;android.widget.cts.ZoomControlsTest#testSetIsZoomInEnabled;android.widget.cts.TabWidgetTest#testConstructor;android.widget.cts.TableRowTest#testGenerateLayoutParams2;android.widget.cts.TextViewTest#testSetTextAppearance;android.widget.cts.FilterTest#testConvertResultToString;android.widget.cts.MultiAutoCompleteTextViewTest#testPerformValidation;android.widget.cts.TextViewTest#testHeightAndWidth;android.widget.cts.CursorTreeAdapterTest#testIsChildSelectable;android.widget.cts.ArrayAdapterTest#testAddAllCollection;android.widget.cts.AbsListView_LayoutParamsTest#testConstructors;android.widget.cts.ScrollViewTest#testDispatchKeyEvent;android.widget.cts.TabHostTest#testAccessCurrentTab;android.widget.cts.ViewSwitcherTest#testReset;android.widget.cts.TimePickerTest#testAccessIs24HourView;android.widget.cts.TextViewTest#testGetTotalPaddingTop;android.widget.cts.HorizontalScrollViewTest#testExecuteKeyEvent;android.widget.cts.AbsoluteLayoutTest#testOnLayout;android.widget.cts.ImageViewTest#testAccessScaleType;android.widget.cts.TabHostTest#testGetTabWidget;android.widget.cts.SlidingDrawerTest#testAnimateToggle;android.widget.cts.SlidingDrawerTest#testLockAndUnlock;android.widget.cts.GalleryTest#testSetGravity;android.widget.cts.ListViewTest#testOnFinishInflate;android.widget.cts.ScrollViewTest#testArrowScroll;android.widget.cts.ScrollViewTest#testComputeScrollDeltaToGetChildRectOnScreen;android.widget.cts.TabHostTest#testGetCurrentTabView;android.widget.cts.ExpandableListViewBasicTest#testExpandGroup;android.widget.cts.TextViewTest#testExtractText;android.widget.cts.RemoteViewsTest#testOnLoadClass;android.widget.cts.RadioGroupTest#testCheckLayoutParams;android.widget.cts.TextSwitcherTest#testSetText;android.widget.cts.AbsListViewTest#testGenerateLayoutParams;android.widget.cts.TabWidgetTest#testSetEnabled;android.widget.cts.AutoCompleteTextViewTest#testAccessItemClickListener;android.widget.cts.ChronometerTest#testFoo;android.widget.cts.ExpandableListViewBasicTest#testConvertionBetweenFlatAndPacked;android.widget.cts.DatePickerTest#testOnSaveInstanceState;android.widget.cts.DatePickerTest#testAndroidTestCaseSetupProperly;android.widget.cts.ImageButtonTest#testOnSetAlpha;android.widget.cts.AdapterViewTest#testAccessOnItemSelectedListener;android.widget.cts.BaseExpandableListAdapterTest#testOnGroupCollapsed;android.widget.cts.TableLayoutTest#testGenerateLayoutParams1;android.widget.cts.TableLayoutTest#testGenerateLayoutParams2;android.widget.cts.LinearLayoutTest#testLayoutVertical;android.widget.cts.CursorTreeAdapterTest#testAccessQueryProvider;android.widget.cts.TextViewTest#testSetTextKeepState1;android.widget.cts.ArrayAdapterTest#testConstructor;android.widget.cts.RemoteViewsTest#testDescribeContents;android.widget.cts.RelativeLayoutTest#testGenerateDefaultLayoutParams;android.widget.cts.SimpleExpandableListAdapterTest#testHasStableIds;android.widget.cts.TextViewTest#testOnPreDraw;android.widget.cts.ExpandableListViewBasicTest#testCollapseGroup;android.widget.cts.ExpandableListViewWithHeadersTest#testExpandOnFirstPosition;android.widget.cts.SimpleCursorAdapterTest#testSetViewText;android.widget.cts.RelativeLayoutTest#testSetIgnoreGravity;android.widget.cts.RadioGroup_LayoutParamsTest#testAndroidTestCaseSetupProperly;android.widget.cts.BaseAdapterTest#testAreAllItemsEnabled;android.widget.cts.RemoteViewsTest#testSetInt;android.widget.cts.AutoCompleteTextViewTest#testAccessDropDownAnchor;android.widget.cts.ScrollerTest#testIsFinished;android.widget.cts.TextViewTest#testAccessGravity;android.widget.cts.TableLayoutTest#testAccessColumnStretchable;android.widget.cts.ExpandableListViewTest#testSetOnGroupClickListener;android.widget.cts.AlphabetIndexerTest#testCompare;android.widget.cts.AbsListView_LayoutParamsTest#testAndroidTestCaseSetupProperly;android.widget.cts.LayoutDirectionTest#testLayoutDirectionDefaults;android.widget.cts.HeaderViewListAdapterTest#testAreAllItemsEnabled;android.widget.cts.LinearLayout_LayoutParamsTest#testDebug;android.widget.cts.CursorTreeAdapterTest#testGetCursor;android.widget.cts.ImageViewTest#testOnDraw;android.widget.cts.GalleryTest#testGetChildDrawingOrder;android.widget.cts.TextViewTest#testAccessInputExtras;android.widget.cts.LinearLayoutTest#testGetBaseline;android.widget.cts.RatingBarTest#testConstructor;android.widget.cts.RemoteViewsTest#testSetUri;android.widget.cts.SpinnerTest#testsetPromptId;android.widget.cts.RemoteViewsTest#testSetTextColor;android.widget.cts.VideoViewTest#testGetDuration;android.widget.cts.AdapterViewTest#testGetCount;android.widget.cts.MultiAutoCompleteTextView_CommaTokenizerTest#testFindTokenStart;android.widget.cts.ImageViewTest#testSetImageBitmap;android.widget.cts.HeaderViewListAdapterTest#testUnregisterDataSetObserver;android.widget.cts.PopupWindowTest#testAccessOutsideTouchable;android.widget.cts.EditTextTest#testSetEllipsize;android.widget.cts.SimpleAdapterTest#testGetCount;android.widget.cts.SpinnerTest#testSetOnItemClickListener;android.widget.cts.SlidingDrawerTest#testToggle;android.widget.cts.AbsSpinnerTest#testPointToPosition;android.widget.cts.ViewFlipperTest#testViewFlipper;android.widget.cts.TabHostTest#testDispatchKeyEvent;android.widget.cts.ExpandableListViewTest#testIsGroupExpanded;android.widget.cts.LayoutDirectionTest#testDirectionFromXml;android.widget.cts.TextViewTest#testVerifyDrawable;android.widget.cts.ProgressBarTest#testIncrementProgressBy;android.widget.cts.PopupWindowTest#testShowAsDropDown;android.widget.cts.ListViewTest#testCanAnimate;android.widget.cts.HorizontalScrollViewTest#testMeasureChild;android.widget.cts.RadioGroupTest#testClearCheck;android.widget.cts.SimpleAdapterTest#testConstructor;android.widget.cts.HorizontalScrollViewTest#testGetHorizontalFadingEdgeStrengths;android.widget.cts.CursorAdapterTest#testGetItem" />
 </TestPlan>
diff --git a/tests/plans/CTS-stable.xml b/tests/plans/CTS-stable.xml
index 984d709..b9e7321 100644
--- a/tests/plans/CTS-stable.xml
+++ b/tests/plans/CTS-stable.xml
@@ -7,11 +7,13 @@
   <Entry uri="android.accounts"/>
   <Entry uri="android.admin"/>
   <Entry uri="android.animation"/>
-  <Entry uri="android.app" exclude="android.app.cts.AlertDialogTest#testAlertDialogCancelable;android.app.cts.AlertDialogTest#testCallback"/>
+  <Entry uri="android.app" exclude="android.app.cts.ActivityManagerTest#testIsRunningInTestHarness;android.app.cts.AlertDialogTest#testAlertDialogCancelable;android.app.cts.ExpandableListActivityTest#testCallback" />
+  <Entry uri="android.bionic"/>
   <Entry uri="android.bluetooth"/>
   <Entry uri="android.calendarcommon"/>
   <Entry uri="android.content"/>
   <Entry uri="android.core.tests.libcore.package.com"/>
+  <Entry uri="android.core.tests.libcore.package.conscrypt"/>
   <Entry uri="android.core.tests.libcore.package.dalvik"/>
   <Entry uri="android.core.tests.libcore.package.libcore"/>
   <Entry uri="android.core.tests.libcore.package.org"/>
@@ -29,18 +31,18 @@
   <Entry uri="android.gesture"/>
   <Entry uri="android.graphics"/>
   <Entry uri="android.graphics2"/>
-  <Entry uri="android.hardware" exclude="android.hardware.cts.CameraTest#testCancelAutofocus"/>
+  <Entry uri="android.hardware" exclude="android.hardware.cts.SensorIntegrationTests#testAccelerometerDoesNotStopGyroscope;android.hardware.cts.SensorIntegrationTests#testsAccelerometerDoesnNotStopMagnetometer;android.hardware.cts.SensorIntegrationTests#testAndroidTestCaseSetupProperly;android.hardware.cts.SensorIntegrationTests#testBatchAndFlush;android.hardware.cts.SensorIntegrationTests#testGyroscopeDoesNotStopAccelerometer;android.hardware.cts.SensorIntegrationTests#testGyroscopeDoesNotStopMagnetometer;android.hardware.cts.SensorIntegrationTests#testMagnetometerDoesNotStopAccelerometer;android.hardware.cts.SensorIntegrationTests#testMagnetometerDoesNotStopGyroscope;android.hardware.cts.SensorMagneticFieldTest#testBatchingStoppingOtherClients;android.hardware.cts.SensorMagneticFieldTest#testBatchingStoppingOtherClientsBatching;android.hardware.cts.SensorMagneticFieldTest#testFrequencyAccuracy;android.hardware.cts.SensorMagneticFieldTest#testOneClientSeveralThreads;android.hardware.cts.SensorMagneticFieldTest#testOneClientSeveralThreadsBatching;android.hardware.cts.SensorMagneticFieldTest#testStandardDeviationWhileStatic;android.hardware.cts.SensorMagneticFieldTest#testStoppingOtherClients;android.hardware.cts.SensorMagneticFieldTest#testStoppingOtherClientsBatching;android.hardware.cts.SensorAccelerometerTest#testBatchingStoppingOtherClients;android.hardware.cts.SensorAccelerometerTest#testBatchingStoppingOtherClientsBatching;android.hardware.cts.SensorAccelerometerTest#testFrequencyAccuracy;android.hardware.cts.SensorAccelerometerTest#testOneClientSeveralThreads;android.hardware.cts.SensorAccelerometerTest#testOneClientSeveralThreadsBatching;android.hardware.cts.SensorGyroscopeTest#testBatchingStoppingOtherClients;android.hardware.cts.SensorGyroscopeTest#testBatchingStoppingOtherClientsBatching;android.hardware.cts.SensorGyroscopeTest#testFrequencyAccuracy;android.hardware.cts.SensorGyroscopeTest#testOneClientSeveralThreads;android.hardware.cts.SensorGyroscopeTest#testOneClientSeveralThreadsBatching;android.hardware.cts.SensorGyroscopeTest#testStandardDeviationWhilStatic;android.hardware.cts.SensorGyroscopeTest#testStoppingOtherClients;android.hardware.cts.SensorGyroscopeTest#testStoppingOtherClientsBatching;android.hardware.cts.SensorAccelerometerTest#testStandardDeviationWhileStatic;android.hardware.cts.SensorAccelerometerTest#testStoppingOtherClients;android.hardware.cts.SensorAccelerometerTest#testStoppingOtherClientsBatching;android.hardware.camera2.cts.CameraDeviceTest#testCameraDeviceRepeatingRequest;android.hardware.camera2.cts.ImageReaderTest#testImageReaderFromCameraJpeg;android.hardware.cts.CameraGLTest#testCameraToSurfaceTextureMetadata;android.hardware.cts.CameraTest#testImmediateZoom;android.hardware.cts.CameraTest#testPreviewCallback;android.hardware.cts.CameraTest#testSmoothZoom;android.hardware.cts.CameraTest#testVideoSnapshot;android.hardware.cts.CameraGLTest#testSetPreviewTextureBothCallbacks;android.hardware.cts.CameraGLTest#testSetPreviewTexturePreviewCallback" />
   <Entry uri="android.holo"/>
   <Entry uri="android.jni"/>
   <Entry uri="android.keystore"/>
   <Entry uri="android.location"/>
-  <Entry uri="android.media" exclude="android.media.cts.DecodeEditEncodeTest#testVideoEditQCIF"/>
-  <Entry uri="android.mediastress"/>
+  <Entry uri="android.media" exclude="android.media.cts.StreamingMediaPlayerTest#testHLS;android.media.cts.DecoderTest#testCodecResetsH264WithSurface" />
+  <Entry uri="android.mediastress" exclude="android.mediastress.cts.NativeMediaTest#test480pPlay" />
   <Entry uri="android.nativemedia.sl"/>
   <Entry uri="android.nativemedia.xa"/>
   <Entry uri="android.nativeopengl"/>
   <Entry uri="android.ndef"/>
-  <Entry uri="android.net" exclude="android.net.cts.SSLCertificateSocketFactoryTest#testCreateSocket;android.net.cts.trafficStatsTest#testTrafficStatsForLocalhost;android.net.wifi.cts.ScanResultTest#testScanResultTimeStamp"/>
+  <Entry uri="android.net" exclude="android.net.cts.ConnectivityManagerTest#testStartUsingNetworkFeature_enableHipri;android.net.wifi.cts.ScanResultTest#testScanResultTimeStamp;android.net.cts.DnsTest#testDnsWorks;android.net.cts.TrafficStatsTest#testTrafficStatsForLocalhost;android.net.wifi.cts.ScanResultTest#testAndroidTestCaseSetupProperly;android.net.wifi.cts.NsdManagerTest#testAndroidTestCaseSetupProperly;android.net.cts.SSLCertificateSocketFactoryTest#testCreateSocket;android.net.cts.SSLCertificateSocketFactoryTest#test_createSocket_bind;android.net.cts.SSLCertificateSocketFactoryTest#test_createSocket_simple;android.net.cts.SSLCertificateSocketFactoryTest#test_createSocket_wrapping" />
   <Entry uri="android.opengl"/>
   <Entry uri="android.openglperf"/>
   <Entry uri="android.os"/>
@@ -48,21 +50,36 @@
   <Entry uri="android.permission2"/>
   <Entry uri="android.preference"/>
   <Entry uri="android.preference2"/>
-  <Entry uri="android.provider" exclude="android.provider.cts.MediaStore_Images_MediaTest#testInsertImageWithBitmap;android.provider.cts.MediaStore_Images_MediaTes#testInsertImageWithImagePath;android.provider.cts.MediaStore_Images_ThumbnailsTest#testQueryExternalMiniThumbnails"/>
+  <Entry uri="android.provider" exclude="android.provider.cts.CalendarTest#testRemindersAlarm" />
   <Entry uri="android.renderscript"/>
+  <Entry uri="android.rscpp"/>
+  <Entry uri="android.rsg"/>
   <Entry uri="android.sax"/>
-  <Entry uri="android.security"/>
+  <Entry uri="android.security" exclude="android.security.cts.ListeningPortsTest#testNoRemotelyAccessibleListeningUdp6Ports;android.security.cts.ListeningPortsTest#testNoRemotelyAccessibleListeningUdpPorts;android.security.cts.BannedFilesTest#testNoSu;android.security.cts.BannedFilesTest#testNoSuInPath;android.security.cts.PackageSignatureTest#testPackageSignatures" />
   <Entry uri="android.speech"/>
   <Entry uri="android.telephony"/>
   <Entry uri="android.tests.appsecurity"/>
+  <Entry uri="android.tests.location"/>    
   <Entry uri="android.tests.sigtest"/>
   <Entry uri="android.text"/>
   <Entry uri="android.textureview"/>
   <Entry uri="android.theme"/>
   <Entry uri="android.uiautomator"/>
+  <Entry uri="android.usb"/>
   <Entry uri="android.util"/>
   <Entry uri="android.view"/>
-  <Entry uri="android.webkit"/>
-  <Entry uri="android.widget"/>
+  <Entry uri="android.webkit" exclude="android.webkit.cts.WebViewClientTest#testDoUpdateVisitedHistory;android.webkit.cts.WebViewClientTest#testLoadPage;android.webkit.cts.WebViewClientTest#testOnFormResubmission;android.webkit.cts.WebViewClientTest#testOnReceivedError;android.webkit.cts.WebViewClientTest#testOnReceivedHttpAuthRequest;android.webkit.cts.WebViewClientTest#testOnScaleChanged;android.webkit.cts.WebViewClientTest#testOnUnhandledKeyEvent;android.webkit.cts.WebViewTest#testSetInitialScale" />
+  <Entry uri="android.widget" exclude="android.widget.cts.GridViewTest#testSetNumColumns" />
+  <Entry uri="com.android.cts.bootup"/>
+  <Entry uri="com.android.cts.browserbench"/>
+  <Entry uri="com.android.cts.dram"/>
+  <Entry uri="com.android.cts.filesystemperf"/>
+  <Entry uri="com.android.cts.jank.opengl"/>
+  <Entry uri="com.android.cts.jank.ui"/>
+  <Entry uri="com.android.cts.opengl"/>
+  <Entry uri="com.android.cts.simplecpu"/>
+  <Entry uri="com.android.cts.ui"/>
+  <Entry uri="com.android.cts.uihost"/>
+  <Entry uri="com.android.cts.videoperf"/>
   <Entry uri="zzz.android.monkey"/>
 </TestPlan>
diff --git a/tests/res/drawable/no_padding.png b/tests/res/drawable/no_padding.png
new file mode 100644
index 0000000..7d4c27c
--- /dev/null
+++ b/tests/res/drawable/no_padding.png
Binary files differ
diff --git a/tests/res/drawable/padding_0.9.png b/tests/res/drawable/padding_0.9.png
new file mode 100644
index 0000000..0127bf4
--- /dev/null
+++ b/tests/res/drawable/padding_0.9.png
Binary files differ
diff --git a/tests/res/drawable/premul_data.png b/tests/res/drawable/premul_data.png
new file mode 100644
index 0000000..92d7e37
--- /dev/null
+++ b/tests/res/drawable/premul_data.png
Binary files differ
diff --git a/tests/res/layout/view_layout.xml b/tests/res/layout/view_layout.xml
index 4443ba8..40974f0 100644
--- a/tests/res/layout/view_layout.xml
+++ b/tests/res/layout/view_layout.xml
@@ -50,4 +50,47 @@
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"/>
 
+    <android.view.cts.MockView
+            android:id="@+id/mock_view_padding_full"
+            android:layout_width="200px"
+            android:layout_height="200px"
+            android:padding="0px"
+            android:background="@drawable/padding_0" />
+
+    <android.view.cts.MockView
+            android:id="@+id/mock_view_padding_left"
+            android:layout_width="200px"
+            android:layout_height="200px"
+            android:paddingLeft="0px"
+            android:background="@drawable/padding_0" />
+
+    <android.view.cts.MockView
+            android:id="@+id/mock_view_padding_right"
+            android:layout_width="200px"
+            android:layout_height="200px"
+            android:paddingRight="0px"
+            android:background="@drawable/padding_0" />
+
+    <android.view.cts.MockView
+            android:id="@+id/mock_view_padding_top"
+            android:layout_width="200px"
+            android:layout_height="200px"
+            android:paddingTop="0px"
+            android:background="@drawable/padding_0" />
+
+    <android.view.cts.MockView
+            android:id="@+id/mock_view_padding_bottom"
+            android:layout_width="200px"
+            android:layout_height="200px"
+            android:paddingBottom="0dp"
+            android:background="@drawable/padding_0" />
+
+    <android.view.cts.MockView
+            android:id="@+id/mock_view_padding_runtime_updated"
+            android:layout_width="200px"
+            android:layout_height="200px"
+            android:paddingStart="8px"
+            android:paddingEnd="8px"
+            android:background="@drawable/no_padding" />
+
 </LinearLayout>
diff --git a/tests/res/layout/windowstub_presentation.xml b/tests/res/layout/windowstub_presentation.xml
new file mode 100644
index 0000000..80490c4
--- /dev/null
+++ b/tests/res/layout/windowstub_presentation.xml
@@ -0,0 +1,43 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ * Copyright (C) 2013 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.
+ -->
+
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:orientation="vertical"
+    android:layout_width="fill_parent"
+    android:layout_height="fill_parent">
+    <Button
+        android:id="@+id/presentation_button1"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_gravity="center"
+        android:layout_weight="1"
+        android:text="@string/vertical_text_1" />
+    <Button
+        android:id="@+id/presentation_button2"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_gravity="center"
+        android:layout_weight="1"
+        android:text="@string/vertical_text_2" />
+    <Button
+        android:id="@+id/presentation_button3"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_gravity="center"
+        android:layout_weight="1"
+        android:text="@string/vertical_text_3" />
+</LinearLayout>
diff --git a/tests/res/raw/leak.bc b/tests/res/raw/leak.bc
new file mode 100644
index 0000000..327f25c
--- /dev/null
+++ b/tests/res/raw/leak.bc
Binary files differ
diff --git a/tests/sample/Android.mk b/tests/sample/Android.mk
new file mode 100755
index 0000000..e1a9408
--- /dev/null
+++ b/tests/sample/Android.mk
@@ -0,0 +1,37 @@
+# Copyright (C) 2014 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)
+
+# Don't include this package in any target.
+LOCAL_MODULE_TAGS := optional
+
+# When built, explicitly put it in the data partition.
+LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
+
+# All tests should include android.test.runner.
+LOCAL_JAVA_LIBRARIES := android.test.runner
+
+LOCAL_STATIC_JAVA_LIBRARIES := ctsdeviceutil ctstestrunner
+
+LOCAL_SRC_FILES := $(call all-java-files-under, src)
+
+# Must match the package name in CtsTestCaseList.mk
+LOCAL_PACKAGE_NAME := CtsSampleDeviceTestCases
+
+LOCAL_SDK_VERSION := current
+
+include $(BUILD_CTS_PACKAGE)
diff --git a/tests/sample/AndroidManifest.xml b/tests/sample/AndroidManifest.xml
new file mode 100755
index 0000000..ae58f0a
--- /dev/null
+++ b/tests/sample/AndroidManifest.xml
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ * Copyright (C) 2014 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.
+ -->
+
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+    package="android.sample.cts">
+
+    <uses-permission android:name="android.permission.DISABLE_KEYGUARD" />
+    <application>
+        <uses-library android:name="android.test.runner" />
+        <activity android:name="android.sample.SampleDeviceActivity" >
+            <intent-filter>
+                <action android:name="android.intent.action.MAIN" />
+                <category android:name="android.intent.category.LAUNCHER" />
+            </intent-filter>
+        </activity>
+    </application>
+
+    <!--  self-instrumenting test package. -->
+    <instrumentation
+        android:name="android.test.InstrumentationCtsTestRunner"
+        android:label="CTS sample tests"
+        android:targetPackage="android.sample.cts" />
+
+</manifest>
+
diff --git a/tests/sample/src/android/sample/SampleDeviceActivity.java b/tests/sample/src/android/sample/SampleDeviceActivity.java
new file mode 100644
index 0000000..8fd8fde
--- /dev/null
+++ b/tests/sample/src/android/sample/SampleDeviceActivity.java
@@ -0,0 +1,78 @@
+/*
+ * Copyright (C) 2014 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 android.sample;
+
+import android.app.Activity;
+import android.content.Context;
+import android.content.SharedPreferences;
+import android.content.SharedPreferences.Editor;
+import android.os.Bundle;
+
+import java.lang.Override;
+
+/**
+ * A simple activity for using the SharedPreferences API.
+ */
+public class SampleDeviceActivity extends Activity {
+
+    private SharedPreferences mPreferences;
+
+    @Override
+    public void onCreate(Bundle icicle) {
+        super.onCreate(icicle);
+        // Get a reference to this context's shared preference.
+        mPreferences = getPreferences(Context.MODE_PRIVATE);
+    }
+
+    /**
+     * Saves the given key value pair to the shared preferences.
+     *
+     * @param key
+     * @param value
+     */
+    public void savePreference(String key, String value) {
+        // Get an editor to modify the preferences.
+        Editor editor = mPreferences.edit();
+        // Insert the key value pair.
+        editor.putString(key, value);
+        // Commit the changes - important.
+        editor.commit();
+    }
+
+    /**
+     * Looks up the given key in the shared preferences.
+     *
+     * @param key
+     * @return
+     */
+    public String getPreference(String key) {
+        return mPreferences.getString(key, null);
+    }
+
+    /**
+     * Deletes all entries in the shared preferences.
+     */
+    public void clearPreferences() {
+        // Get an editor to modify the preferences.
+        Editor editor = mPreferences.edit();
+        // Delete all entries.
+        editor.clear();
+        // Commit the changes - important.
+        editor.commit();
+    }
+
+}
diff --git a/tests/sample/src/android/sample/cts/SampleDeviceResultTest.java b/tests/sample/src/android/sample/cts/SampleDeviceResultTest.java
new file mode 100644
index 0000000..6bf883f
--- /dev/null
+++ b/tests/sample/src/android/sample/cts/SampleDeviceResultTest.java
@@ -0,0 +1,122 @@
+/*
+ * Copyright (C) 2014 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 android.sample.cts;
+
+import com.android.cts.util.MeasureRun;
+import com.android.cts.util.MeasureTime;
+import com.android.cts.util.ReportLog;
+import com.android.cts.util.ResultType;
+import com.android.cts.util.ResultUnit;
+import com.android.cts.util.Stat;
+
+import android.cts.util.CtsAndroidTestCase;
+
+/**
+ * A simple compatibility test which includes results in the report.
+ *
+ * This test measures the time taken to run a workload and adds in the report.
+ */
+public class SampleDeviceResultTest extends CtsAndroidTestCase {
+
+    /**
+     * The number of times to repeat the test.
+     */
+    private static final int REPEAT = 5;
+
+    /**
+     * The input number for the factorial.
+     */
+    private static final int IN = 15;
+
+    /**
+     * The expected output number for the factorial.
+     */
+    private static final long OUT = 1307674368000L;
+
+    /**
+     * Measures the time taken to compute the factorial of 15 with a recursive method.
+     *
+     * @throws Exception
+     */
+    public void testFactorialRecursive() throws Exception {
+        runTest(new MeasureRun() {
+            @Override
+            public void run(int i) throws Exception {
+                // Compute the factorial and assert it is correct.
+                assertEquals("Incorrect result", OUT, factorialRecursive(IN));
+            }
+        });
+    }
+
+    /**
+     * Measures the time taken to compute the factorial of 15 with a iterative method.
+     *
+     * @throws Exception
+     */
+    public void testFactorialIterative() throws Exception {
+        runTest(new MeasureRun() {
+            @Override
+            public void run(int i) throws Exception {
+                // Compute the factorial and assert it is correct.
+                assertEquals("Incorrect result", OUT, factorialIterative(IN));
+            }
+        });
+    }
+
+    /**
+     * Computes the factorial of a number with a recursive method.
+     *
+     * @param num The number to compute the factorial of.
+     */
+    private static long factorialRecursive(int num) {
+        if (num <= 0) {
+            return 1;
+        }
+        return num * factorialRecursive(num - 1);
+    }
+
+    /**
+     * Computes the factorial of a number with a iterative method.
+     *
+     * @param num The number to compute the factorial of.
+     */
+    private static long factorialIterative(int num) {
+        long result = 1;
+        for (int i = 2; i <= num; i++) {
+            result *= i;
+        }
+        return result;
+    }
+
+    /**
+     * Runs the workload and records the result to the report log.
+     *
+     * @param workload
+     */
+    private void runTest(MeasureRun workload) throws Exception {
+        // MeasureTime runs the workload N times and records the time taken by each run.
+        double[] result = MeasureTime.measure(REPEAT, workload);
+        // Compute the stats.
+        Stat.StatResult stat = Stat.getStat(result);
+        // Get the report for this test and add the results to record.
+        ReportLog log = getReportLog();
+        log.printArray("Times", result, ResultType.LOWER_BETTER, ResultUnit.MS);
+        log.printValue("Min", stat.mMin, ResultType.LOWER_BETTER, ResultUnit.MS);
+        log.printValue("Max", stat.mMax, ResultType.LOWER_BETTER, ResultUnit.MS);
+        // Every report must have a summary,
+        log.printSummary("Average", stat.mAverage, ResultType.LOWER_BETTER, ResultUnit.MS);
+    }
+}
diff --git a/tests/sample/src/android/sample/cts/SampleDeviceTest.java b/tests/sample/src/android/sample/cts/SampleDeviceTest.java
new file mode 100644
index 0000000..13b7ea6
--- /dev/null
+++ b/tests/sample/src/android/sample/cts/SampleDeviceTest.java
@@ -0,0 +1,76 @@
+/*
+ * Copyright (C) 2014 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 android.sample.cts;
+
+import android.sample.SampleDeviceActivity;
+import android.test.ActivityInstrumentationTestCase2;
+
+/**
+ * A simple compatibility test which tests the SharedPreferences API.
+ *
+ * This test uses {@link android.test.ActivityInstrumentationTestCase2} to instrument the
+ * {@link android.sample.SampleDeviceActivity}.
+ */
+public class SampleDeviceTest extends ActivityInstrumentationTestCase2<SampleDeviceActivity> {
+
+    private static final String KEY = "foo";
+
+    private static final String VALUE = "bar";
+
+    /**
+     * A reference to the activity whose shared preferences are being tested.
+     */
+    private SampleDeviceActivity mActivity;
+
+    public SampleDeviceTest() {
+        super(SampleDeviceActivity.class);
+    }
+
+    @Override
+    protected void setUp() throws Exception {
+        super.setUp();
+        // Start the activity and get a reference to it.
+        mActivity = getActivity();
+        // Wait for the UI Thread to become idle.
+        getInstrumentation().waitForIdleSync();
+    }
+
+    @Override
+    protected void tearDown() throws Exception {
+        // Scrub the activity so it can be freed. The next time the setUp will create a new activity
+        // rather than reusing the old one.
+        mActivity = null;
+        super.tearDown();
+    }
+
+    /**
+     * Tests the SharedPreferences API.
+     *
+     * This inserts the key value pair and assert they can be retrieved. Then it clears the
+     * preferences and asserts they can no longer be retrieved.
+     *
+     * @throws Exception
+     */
+    public void testSharedPreferences() throws Exception {
+        // Save the key value pair to the preferences and assert they were saved.
+        mActivity.savePreference(KEY, VALUE);
+        assertEquals("Preferences were not saved", VALUE, mActivity.getPreference(KEY));
+
+        // Clear the shared preferences and assert the data was removed.
+        mActivity.clearPreferences();
+        assertNull("Preferences were not cleared", mActivity.getPreference(KEY));
+    }
+}
diff --git a/tests/src/android/app/cts/ActivityManagerRecentOneActivity.java b/tests/src/android/app/cts/ActivityManagerRecentOneActivity.java
old mode 100755
new mode 100644
diff --git a/tests/src/android/app/cts/ActivityManagerRecentTwoActivity.java b/tests/src/android/app/cts/ActivityManagerRecentTwoActivity.java
old mode 100755
new mode 100644
diff --git a/tests/src/android/os/cts/ReadElf.java b/tests/src/android/os/cts/ReadElf.java
index b4041d2..c2da318 100644
--- a/tests/src/android/os/cts/ReadElf.java
+++ b/tests/src/android/os/cts/ReadElf.java
@@ -26,7 +26,7 @@
  * A poor man's implementation of the readelf command. This program is
  * designed to parse ELF (Executable and Linkable Format) files.
  */
-public class ReadElf {
+public class ReadElf implements AutoCloseable {
     /** The magic values for the ELF identification. */
     private static final byte[] ELF_IDENT = {
             (byte) 0x7F, (byte) 'E', (byte) 'L', (byte) 'F',
@@ -38,6 +38,8 @@
     private static final int EM_386 = 3;
     private static final int EM_MIPS = 8;
     private static final int EM_ARM = 40;
+    // http://en.wikipedia.org/wiki/Qualcomm_Hexagon
+    private static final int EM_QDSP6 = 164;
 
     /** Size of the e_ident[] structure in the ELF header. */
     private static final int EI_NIDENT = 16;
@@ -260,11 +262,16 @@
         readHeader();
     }
 
-    protected void finalize() throws Throwable {
+    public void close() {
         try {
             mFile.close();
-        } catch (IOException e) {
-            // nothing
+        } catch (IOException ignored) {
+        }
+    }
+
+    protected void finalize() throws Throwable {
+        try {
+            close();
         } finally {
             super.finalize();
         }
@@ -273,7 +280,8 @@
     private void readHeader() throws IOException {
         mType = readHalf(getHeaderOffset(OFFSET_TYPE));
         int e_machine = readHalf(getHeaderOffset(OFFSET_MACHINE));
-        if (e_machine != EM_386 && e_machine != EM_MIPS && e_machine != EM_ARM) {
+        if (e_machine != EM_386 && e_machine != EM_MIPS && e_machine != EM_ARM &&
+                e_machine != EM_QDSP6) {
             throw new IOException("Invalid ELF e_machine: " + e_machine + ": " + mPath);
         }
 
diff --git a/tests/src/android/renderscript/cts/acos_f32.rs b/tests/src/android/renderscript/cts/acos_f32.rs
new file mode 100644
index 0000000..4bc948b
--- /dev/null
+++ b/tests/src/android/renderscript/cts/acos_f32.rs
@@ -0,0 +1,18 @@
+#pragma version(1)
+#pragma rs java_package_name(android.renderscript.cts)
+
+void acos_f32_1 (const float* in, float* out) {
+    *out = acos(*in);
+}
+
+void acos_f32_2 (const float2* in, float2* out) {
+    *out = acos(*in);
+}
+
+void acos_f32_3 (const float3* in, float3* out) {
+    *out = acos(*in);
+}
+
+void acos_f32_4 (const float4* in , float4* out) {
+    *out = acos(*in);
+}
diff --git a/tests/src/android/renderscript/cts/acos_f32_relaxed.rs b/tests/src/android/renderscript/cts/acos_f32_relaxed.rs
new file mode 100644
index 0000000..b553719
--- /dev/null
+++ b/tests/src/android/renderscript/cts/acos_f32_relaxed.rs
@@ -0,0 +1,2 @@
+#include "acos_f32.rs"
+#pragma rs_fp_relaxed
diff --git a/tests/src/android/renderscript/cts/acosh_f32.rs b/tests/src/android/renderscript/cts/acosh_f32.rs
new file mode 100644
index 0000000..8784b02
--- /dev/null
+++ b/tests/src/android/renderscript/cts/acosh_f32.rs
@@ -0,0 +1,18 @@
+#pragma version(1)
+#pragma rs java_package_name(android.renderscript.cts)
+
+void acosh_f32_1 (const float* in, float* out) {
+    *out = acosh(*in);
+}
+
+void acosh_f32_2 (const float2* in, float2* out) {
+    *out = acosh(*in);
+}
+
+void acosh_f32_3 (const float3* in, float3* out) {
+    *out = acosh(*in);
+}
+
+void acosh_f32_4 (const float4* in , float4* out) {
+    *out = acosh(*in);
+}
diff --git a/tests/src/android/renderscript/cts/acosh_f32_relaxed.rs b/tests/src/android/renderscript/cts/acosh_f32_relaxed.rs
new file mode 100644
index 0000000..b7995c1
--- /dev/null
+++ b/tests/src/android/renderscript/cts/acosh_f32_relaxed.rs
@@ -0,0 +1,2 @@
+#include "acosh_f32.rs"
+#pragma rs_fp_relaxed
diff --git a/tests/src/android/renderscript/cts/acospi_f32.rs b/tests/src/android/renderscript/cts/acospi_f32.rs
new file mode 100644
index 0000000..66d89eb
--- /dev/null
+++ b/tests/src/android/renderscript/cts/acospi_f32.rs
@@ -0,0 +1,18 @@
+#pragma version(1)
+#pragma rs java_package_name(android.renderscript.cts)
+
+void acospi_f32_1 (const float* in, float* out) {
+    *out = acospi(*in);
+}
+
+void acospi_f32_2 (const float2* in, float2* out) {
+    *out = acospi(*in);
+}
+
+void acospi_f32_3 (const float3* in, float3* out) {
+    *out = acospi(*in);
+}
+
+void acospi_f32_4 (const float4* in, float4* out) {
+    *out = acospi(*in);
+}
diff --git a/tests/src/android/renderscript/cts/acospi_f32_relaxed.rs b/tests/src/android/renderscript/cts/acospi_f32_relaxed.rs
new file mode 100644
index 0000000..0d76365
--- /dev/null
+++ b/tests/src/android/renderscript/cts/acospi_f32_relaxed.rs
@@ -0,0 +1,2 @@
+#include "acospi_f32.rs"
+#pragma rs_fp_relaxed
diff --git a/tests/src/android/renderscript/cts/allocationCopy2DRange.rs b/tests/src/android/renderscript/cts/allocationCopy2DRange.rs
new file mode 100644
index 0000000..79aa552
--- /dev/null
+++ b/tests/src/android/renderscript/cts/allocationCopy2DRange.rs
@@ -0,0 +1,14 @@
+#pragma version(1)
+#pragma rs java_package_name(android.renderscript.cts)
+
+uint32_t width;
+uint32_t height;
+
+rs_allocation mIn;
+rs_allocation mOut;
+
+void testAllocationCopy2DRange() {
+    rsAllocationCopy2DRange(mOut, 0, 0, 0, RS_ALLOCATION_CUBEMAP_FACE_POSITIVE_X,
+                            width, height, mIn, 0, 0, 0,
+                            RS_ALLOCATION_CUBEMAP_FACE_POSITIVE_X);
+}
diff --git a/tests/src/android/renderscript/cts/allocation_resize.rs b/tests/src/android/renderscript/cts/allocation_resize.rs
new file mode 100644
index 0000000..0c85d9d
--- /dev/null
+++ b/tests/src/android/renderscript/cts/allocation_resize.rs
@@ -0,0 +1,7 @@
+#pragma version(1)
+#pragma rs java_package_name(android.renderscript.cts)
+
+
+void root(const int *in, int *out) {
+    *out = *in;
+}
diff --git a/tests/src/android/renderscript/cts/asin_f32.rs b/tests/src/android/renderscript/cts/asin_f32.rs
new file mode 100644
index 0000000..5f062f9
--- /dev/null
+++ b/tests/src/android/renderscript/cts/asin_f32.rs
@@ -0,0 +1,18 @@
+#pragma version(1)
+#pragma rs java_package_name(android.renderscript.cts)
+
+void asin_f32_1 (const float* in, float* out) {
+    *out = asin(*in);
+}
+
+void asin_f32_2 (const float2* in, float2* out) {
+    *out = asin(*in);
+}
+
+void asin_f32_3 (const float3* in, float3* out) {
+    *out = asin(*in);
+}
+
+void asin_f32_4 (const float4* in , float4* out) {
+    *out = asin (*in) ;
+}
diff --git a/tests/src/android/renderscript/cts/asin_f32_relaxed.rs b/tests/src/android/renderscript/cts/asin_f32_relaxed.rs
new file mode 100644
index 0000000..b5b3926
--- /dev/null
+++ b/tests/src/android/renderscript/cts/asin_f32_relaxed.rs
@@ -0,0 +1,2 @@
+#include "asin_f32.rs"
+#pragma rs_fp_relaxed
diff --git a/tests/src/android/renderscript/cts/asinh_f32.rs b/tests/src/android/renderscript/cts/asinh_f32.rs
new file mode 100644
index 0000000..8252507
--- /dev/null
+++ b/tests/src/android/renderscript/cts/asinh_f32.rs
@@ -0,0 +1,18 @@
+#pragma version(1)
+#pragma rs java_package_name(android.renderscript.cts)
+
+void asinh_f32_1 (const float* in, float* out) {
+    *out = asinh(*in);
+}
+
+void asinh_f32_2 (const float2* in, float2* out) {
+    *out = asinh(*in);
+}
+
+void asinh_f32_3 (const float3* in, float3* out) {
+    *out = asinh(*in);
+}
+
+void asinh_f32_4 (const float4* in, float4* out) {
+    *out = asinh(*in);
+}
diff --git a/tests/src/android/renderscript/cts/asinh_f32_relaxed.rs b/tests/src/android/renderscript/cts/asinh_f32_relaxed.rs
new file mode 100644
index 0000000..02a7082
--- /dev/null
+++ b/tests/src/android/renderscript/cts/asinh_f32_relaxed.rs
@@ -0,0 +1,2 @@
+#include "asinh_f32.rs"
+#pragma rs_fp_relaxed
diff --git a/tests/src/android/renderscript/cts/asinpi_f32.rs b/tests/src/android/renderscript/cts/asinpi_f32.rs
new file mode 100644
index 0000000..66bf1d7
--- /dev/null
+++ b/tests/src/android/renderscript/cts/asinpi_f32.rs
@@ -0,0 +1,18 @@
+#pragma version(1)
+#pragma rs java_package_name(android.renderscript.cts)
+
+void asinpi_f32_1 (const float* in, float* out) {
+    *out = asinpi(*in);
+}
+
+void asinpi_f32_2 (const float2* in, float2* out) {
+    *out = asinpi(*in);
+}
+
+void asinpi_f32_3 (const float3* in, float3* out) {
+    *out = asinpi(*in);
+}
+
+void asinpi_f32_4 (const float4* in, float4* out) {
+    *out = asinpi(*in);
+}
diff --git a/tests/src/android/renderscript/cts/asinpi_f32_relaxed.rs b/tests/src/android/renderscript/cts/asinpi_f32_relaxed.rs
new file mode 100644
index 0000000..924a534
--- /dev/null
+++ b/tests/src/android/renderscript/cts/asinpi_f32_relaxed.rs
@@ -0,0 +1,2 @@
+#include "asinpi_f32.rs"
+#pragma rs_fp_relaxed
diff --git a/tests/src/android/renderscript/cts/atan2_f32.rs b/tests/src/android/renderscript/cts/atan2_f32.rs
new file mode 100644
index 0000000..e1bab48
--- /dev/null
+++ b/tests/src/android/renderscript/cts/atan2_f32.rs
@@ -0,0 +1,38 @@
+#pragma version(1)
+#pragma rs java_package_name(android.renderscript.cts)
+
+typedef struct atan2_f32_in {
+    float first;
+    float second;
+} input;
+
+void atan2_f32_1(const input* in, float* out){
+    *out = atan2(in->first, in->second);
+}
+
+typedef struct atan2_f32_2_in {
+    float2 first;
+    float2 second;
+} input2;
+
+void atan2_f32_2(const input2* in, float2* out){
+    *out = atan2(in->first, in->second);
+}
+
+typedef struct atan2_f32_3_in {
+    float3 first;
+    float3 second;
+} input3;
+
+void atan2_f32_3(const input3* in, float3* out){
+    *out = atan2(in->first, in->second);
+}
+
+typedef struct atan2_f32_4_in {
+    float4 first;
+    float4 second;
+} input4;
+
+void atan2_f32_4(const input4* in, float4* out){
+    *out = atan2(in->first, in->second);
+}
diff --git a/tests/src/android/renderscript/cts/atan2_f32_relaxed.rs b/tests/src/android/renderscript/cts/atan2_f32_relaxed.rs
new file mode 100644
index 0000000..dd749fa
--- /dev/null
+++ b/tests/src/android/renderscript/cts/atan2_f32_relaxed.rs
@@ -0,0 +1,2 @@
+#include "atan2_f32.rs"
+#pragma rs_fp_relaxed
diff --git a/tests/src/android/renderscript/cts/atan2pi_f32.rs b/tests/src/android/renderscript/cts/atan2pi_f32.rs
new file mode 100644
index 0000000..2fe52d8
--- /dev/null
+++ b/tests/src/android/renderscript/cts/atan2pi_f32.rs
@@ -0,0 +1,38 @@
+#pragma version(1)
+#pragma rs java_package_name(android.renderscript.cts)
+
+struct atan2pi_float_input {
+    float x;
+    float y;
+};
+
+void atan2pi_f32_1 (const struct atan2pi_float_input* in, float* out) {
+    *out = atan2pi(in->x, in->y);
+}
+
+struct atan2pi_float2_input {
+    float2 x;
+    float2 y;
+};
+
+void atan2pi_f32_2 (const struct atan2pi_float2_input* in, float2* out) {
+    *out = atan2pi(in->x, in->y);
+}
+
+struct atan2pi_float3_input {
+    float3 x;
+    float3 y;
+};
+
+void atan2pi_f32_3 (const struct atan2pi_float3_input* in, float3* out) {
+    *out = atan2pi(in->x, in->y);
+}
+
+struct atan2pi_float4_input {
+    float4 x;
+    float4 y;
+};
+
+void atan2pi_f32_4 (const struct atan2pi_float4_input* in, float4* out) {
+    *out = atan2pi(in->x, in->y);
+}
diff --git a/tests/src/android/renderscript/cts/atan2pi_f32_relaxed.rs b/tests/src/android/renderscript/cts/atan2pi_f32_relaxed.rs
new file mode 100644
index 0000000..0d4e8fb
--- /dev/null
+++ b/tests/src/android/renderscript/cts/atan2pi_f32_relaxed.rs
@@ -0,0 +1,2 @@
+#include "atan2pi_f32.rs"
+#pragma rs_fp_relaxed
diff --git a/tests/src/android/renderscript/cts/atan_f32.rs b/tests/src/android/renderscript/cts/atan_f32.rs
new file mode 100644
index 0000000..65a5ab5
--- /dev/null
+++ b/tests/src/android/renderscript/cts/atan_f32.rs
@@ -0,0 +1,18 @@
+#pragma version(1)
+#pragma rs java_package_name(android.renderscript.cts)
+
+void atan_f32_1 (const float* in, float* out) {
+    *out = atan(*in);
+}
+
+void atan_f32_2 (const float2* in, float2* out) {
+    *out = atan(*in);
+}
+
+void atan_f32_3 (const float3* in, float3* out) {
+    *out = atan(*in);
+}
+
+void atan_f32_4 (const float4* in, float4* out) {
+    *out =atan(*in);
+}
diff --git a/tests/src/android/renderscript/cts/atan_f32_relaxed.rs b/tests/src/android/renderscript/cts/atan_f32_relaxed.rs
new file mode 100644
index 0000000..e015aa8
--- /dev/null
+++ b/tests/src/android/renderscript/cts/atan_f32_relaxed.rs
@@ -0,0 +1,2 @@
+#include "atan_f32.rs"
+#pragma rs_fp_relaxed
diff --git a/tests/src/android/renderscript/cts/atanh_f32.rs b/tests/src/android/renderscript/cts/atanh_f32.rs
new file mode 100644
index 0000000..1f61e5e
--- /dev/null
+++ b/tests/src/android/renderscript/cts/atanh_f32.rs
@@ -0,0 +1,18 @@
+#pragma version(1)
+#pragma rs java_package_name(android.renderscript.cts)
+
+void atanh_f32_1 (const float* in, float* out) {
+    *out = atanh(*in);
+}
+
+void atanh_f32_2 (const float2* in, float2* out) {
+    *out = atanh(*in);
+}
+
+void atanh_f32_3 (const float3* in, float3* out) {
+    *out = atanh(*in);
+}
+
+void atanh_f32_4 (const float4* in, float4* out) {
+    *out = atanh(*in);
+}
diff --git a/tests/src/android/renderscript/cts/atanh_f32_relaxed.rs b/tests/src/android/renderscript/cts/atanh_f32_relaxed.rs
new file mode 100644
index 0000000..2083e4d
--- /dev/null
+++ b/tests/src/android/renderscript/cts/atanh_f32_relaxed.rs
@@ -0,0 +1,2 @@
+#include "atanh_f32.rs"
+#pragma rs_fp_relaxed
diff --git a/tests/src/android/renderscript/cts/atanpi_f32.rs b/tests/src/android/renderscript/cts/atanpi_f32.rs
new file mode 100644
index 0000000..182a43c
--- /dev/null
+++ b/tests/src/android/renderscript/cts/atanpi_f32.rs
@@ -0,0 +1,18 @@
+#pragma version(1)
+#pragma rs java_package_name(android.renderscript.cts)
+
+void atanpi_f32_1 (const float* in, float* out) {
+    *out = atanpi(*in);
+}
+
+void atanpi_f32_2 (const float2* in, float2* out) {
+    *out = atanpi(*in);
+}
+
+void atanpi_f32_3 (const float3* in, float3* out) {
+    *out = atanpi(*in);
+}
+
+void atanpi_f32_4 (const float4* in, float4* out) {
+    *out = atanpi(*in);
+}
diff --git a/tests/src/android/renderscript/cts/atanpi_f32_relaxed.rs b/tests/src/android/renderscript/cts/atanpi_f32_relaxed.rs
new file mode 100644
index 0000000..fefe784
--- /dev/null
+++ b/tests/src/android/renderscript/cts/atanpi_f32_relaxed.rs
@@ -0,0 +1,2 @@
+#include "atanpi_f32.rs"
+#pragma rs_fp_relaxed
diff --git a/tests/src/android/renderscript/cts/cbrt_f32.rs b/tests/src/android/renderscript/cts/cbrt_f32.rs
new file mode 100644
index 0000000..273e8a4
--- /dev/null
+++ b/tests/src/android/renderscript/cts/cbrt_f32.rs
@@ -0,0 +1,18 @@
+#pragma version(1)
+#pragma rs java_package_name(android.renderscript.cts)
+
+void cbrt_f32_1(const float *in, float *out) {
+    *out = cbrt(*in);
+}
+
+void cbrt_f32_2(const float2 *in, float2 *out) {
+    *out = cbrt(*in);
+}
+
+void cbrt_f32_3(const float3 *in, float3 *out) {
+    *out = cbrt(*in);
+}
+
+void cbrt_f32_4(const float4 *in, float4 *out) {
+    *out = cbrt(*in);
+}
diff --git a/tests/src/android/renderscript/cts/cbrt_f32_relaxed.rs b/tests/src/android/renderscript/cts/cbrt_f32_relaxed.rs
new file mode 100644
index 0000000..9b9e5a5
--- /dev/null
+++ b/tests/src/android/renderscript/cts/cbrt_f32_relaxed.rs
@@ -0,0 +1,2 @@
+#include "cbrt_f32.rs"
+#pragma rs_fp_relaxed
diff --git a/tests/src/android/renderscript/cts/ceil_f32.rs b/tests/src/android/renderscript/cts/ceil_f32.rs
new file mode 100644
index 0000000..c0817e2
--- /dev/null
+++ b/tests/src/android/renderscript/cts/ceil_f32.rs
@@ -0,0 +1,18 @@
+#pragma version(1)
+#pragma rs java_package_name(android.renderscript.cts)
+
+void ceil_f32_1(const float *in, float *out) {
+    *out = ceil(*in);
+}
+
+void ceil_f32_2(const float2 *in, float2 *out) {
+    *out = ceil(*in);
+}
+
+void ceil_f32_3(const float3 *in, float3 *out) {
+    *out = ceil(*in);
+}
+
+void ceil_f32_4(const float4 *in, float4 *out) {
+    *out = ceil(*in);
+}
diff --git a/tests/src/android/renderscript/cts/ceil_f32_relaxed.rs b/tests/src/android/renderscript/cts/ceil_f32_relaxed.rs
new file mode 100644
index 0000000..332ca6c
--- /dev/null
+++ b/tests/src/android/renderscript/cts/ceil_f32_relaxed.rs
@@ -0,0 +1,2 @@
+#include "ceil_f32.rs"
+#pragma rs_fp_relaxed
diff --git a/tests/src/android/renderscript/cts/clear_object.rs b/tests/src/android/renderscript/cts/clear_object.rs
new file mode 100644
index 0000000..0bee38b
--- /dev/null
+++ b/tests/src/android/renderscript/cts/clear_object.rs
@@ -0,0 +1,42 @@
+#pragma version(1)
+#pragma rs java_package_name(android.renderscript.cts)
+
+rs_allocation allocation;
+
+void clear_allocation(int *out)
+{
+    rsClearObject( &allocation );
+    *out = ( NULL == allocation.p ? 1 : 0 );
+}
+
+rs_element element;
+
+void clear_element(int *out)
+{
+    rsClearObject( &element );
+    *out = ( NULL == element.p ? 1 : 0 );
+}
+
+rs_sampler sampler;
+
+void clear_sampler(int *out)
+{
+    rsClearObject( &sampler );
+    *out = ( NULL == sampler.p ? 1 : 0 );
+}
+
+rs_script script;
+
+void clear_script(int *out)
+{
+    rsClearObject( &script );
+    *out = ( NULL == script.p ? 1 : 0 );
+}
+
+rs_type type;
+
+void clear_type(int *out)
+{
+    rsClearObject( &type );
+    *out = ( NULL == type.p ? 1 : 0 );
+}
diff --git a/tests/src/android/renderscript/cts/copysign_f32.rs b/tests/src/android/renderscript/cts/copysign_f32.rs
new file mode 100644
index 0000000..b0b300d
--- /dev/null
+++ b/tests/src/android/renderscript/cts/copysign_f32.rs
@@ -0,0 +1,38 @@
+#pragma version(1)
+#pragma rs java_package_name(android.renderscript.cts)
+
+struct copysign_f32_input {
+    float x;
+    float y;
+};
+
+void copysign_f32_1(const struct copysign_f32_input *in, float *out) {
+    *out = copysign(in->x, in->y);
+}
+
+struct copysign_f32_2_input {
+    float2 x;
+    float2 y;
+};
+
+void copysign_f32_2(const struct copysign_f32_2_input *in, float2 *out) {
+    *out = copysign(in->x, in->y);
+}
+
+struct copysign_f32_3_input {
+    float3 x;
+    float3 y;
+};
+
+void copysign_f32_3(const struct copysign_f32_3_input *in, float3 *out) {
+    *out = copysign(in->x, in->y);
+}
+
+struct copysign_f32_4_input {
+    float4 x;
+    float4 y;
+};
+
+void copysign_f32_4(const struct copysign_f32_4_input *in, float4 *out) {
+    *out = copysign(in->x, in->y);
+}
diff --git a/tests/src/android/renderscript/cts/copysign_f32_relaxed.rs b/tests/src/android/renderscript/cts/copysign_f32_relaxed.rs
new file mode 100644
index 0000000..e7fe701
--- /dev/null
+++ b/tests/src/android/renderscript/cts/copysign_f32_relaxed.rs
@@ -0,0 +1,2 @@
+#include "copysign_f32.rs"
+#pragma rs_fp_relaxed
diff --git a/tests/src/android/renderscript/cts/cos_f32.rs b/tests/src/android/renderscript/cts/cos_f32.rs
new file mode 100644
index 0000000..fd061dc
--- /dev/null
+++ b/tests/src/android/renderscript/cts/cos_f32.rs
@@ -0,0 +1,18 @@
+#pragma version(1)
+#pragma rs java_package_name(android.renderscript.cts)
+
+void cos_f32_1(const float *in, float *out) {
+    *out = cos(*in);
+}
+
+void cos_f32_2(const float2 *in, float2 *out) {
+    *out = cos(*in);
+}
+
+void cos_f32_3(const float3 *in, float3 *out) {
+    *out = cos(*in);
+}
+
+void cos_f32_4(const float4 *in, float4 *out) {
+    *out = cos(*in);
+}
diff --git a/tests/src/android/renderscript/cts/cos_f32_relaxed.rs b/tests/src/android/renderscript/cts/cos_f32_relaxed.rs
new file mode 100644
index 0000000..ceb51d2
--- /dev/null
+++ b/tests/src/android/renderscript/cts/cos_f32_relaxed.rs
@@ -0,0 +1,2 @@
+#include "cos_f32.rs"
+#pragma rs_fp_relaxed
diff --git a/tests/src/android/renderscript/cts/cosh_f32.rs b/tests/src/android/renderscript/cts/cosh_f32.rs
new file mode 100644
index 0000000..0f2ab0f
--- /dev/null
+++ b/tests/src/android/renderscript/cts/cosh_f32.rs
@@ -0,0 +1,18 @@
+#pragma version(1)
+#pragma rs java_package_name(android.renderscript.cts)
+
+void cosh_f32_1(const float *in, float *out) {
+    *out = cosh(*in);
+}
+
+void cosh_f32_2(const float2 *in, float2 *out) {
+    *out = cosh(*in);
+}
+
+void cosh_f32_3(const float3 *in, float3 *out) {
+    *out = cosh(*in);
+}
+
+void cosh_f32_4(const float4 *in, float4 *out) {
+    *out = cosh(*in);
+}
diff --git a/tests/src/android/renderscript/cts/cosh_f32_relaxed.rs b/tests/src/android/renderscript/cts/cosh_f32_relaxed.rs
new file mode 100644
index 0000000..7f6a79b
--- /dev/null
+++ b/tests/src/android/renderscript/cts/cosh_f32_relaxed.rs
@@ -0,0 +1,2 @@
+#include "cosh_f32.rs"
+#pragma rs_fp_relaxed
diff --git a/tests/src/android/renderscript/cts/cross_f32.rs b/tests/src/android/renderscript/cts/cross_f32.rs
new file mode 100644
index 0000000..e996e5f
--- /dev/null
+++ b/tests/src/android/renderscript/cts/cross_f32.rs
@@ -0,0 +1,19 @@
+#pragma version(1)
+#pragma rs java_package_name(android.renderscript.cts)
+typedef struct _cross_f32_3_struct {
+    float3 low;
+    float3 high;
+} cross_f32_3_struct;
+
+void cross_f32_3(const cross_f32_3_struct *in, float3 *out) {
+    *out = cross(in->low, in->high);
+}
+
+typedef struct _cross_f32_4_struct {
+    float4 low;
+    float4 high;
+} cross_f32_4_struct;
+
+void cross_f32_4(const cross_f32_4_struct *in, float4 *out) {
+    *out = cross(in->low, in->high);
+}
diff --git a/tests/src/android/renderscript/cts/cross_f32_relaxed.rs b/tests/src/android/renderscript/cts/cross_f32_relaxed.rs
new file mode 100644
index 0000000..d9fbfed
--- /dev/null
+++ b/tests/src/android/renderscript/cts/cross_f32_relaxed.rs
@@ -0,0 +1,2 @@
+#include "cross_f32.rs"
+#pragma rs_fp_relaxed
diff --git a/tests/src/android/renderscript/cts/degrees_f32.rs b/tests/src/android/renderscript/cts/degrees_f32.rs
new file mode 100644
index 0000000..e571246
--- /dev/null
+++ b/tests/src/android/renderscript/cts/degrees_f32.rs
@@ -0,0 +1,21 @@
+#pragma version(1)
+#pragma rs java_package_name(android.renderscript.cts)
+
+void degrees_f32_1(const float* in, float* out) {
+    *out = degrees(*in);
+}
+
+void degrees_f32_2(const float2* in, float2* out) {
+    *out = degrees (*in);
+
+}
+
+void degrees_f32_3(const float3* in, float3* out) {
+    *out = degrees(*in);
+
+}
+
+void degrees_f32_4(const float4* in, float4* out) {
+    *out = degrees(*in);
+
+}
diff --git a/tests/src/android/renderscript/cts/degrees_f32_relaxed.rs b/tests/src/android/renderscript/cts/degrees_f32_relaxed.rs
new file mode 100644
index 0000000..bc603a5
--- /dev/null
+++ b/tests/src/android/renderscript/cts/degrees_f32_relaxed.rs
@@ -0,0 +1,2 @@
+#include "degrees_f32.rs"
+#pragma rs_fp_relaxed
diff --git a/tests/src/android/renderscript/cts/exp10_f32.rs b/tests/src/android/renderscript/cts/exp10_f32.rs
new file mode 100644
index 0000000..67f5c26
--- /dev/null
+++ b/tests/src/android/renderscript/cts/exp10_f32.rs
@@ -0,0 +1,18 @@
+#pragma version(1)
+#pragma rs java_package_name(android.renderscript.cts)
+
+void exp10_f32_1(const float *in, float *out) {
+    *out = exp10(*in);
+}
+
+void exp10_f32_2(const float2 *in, float2 *out) {
+    *out = exp10(*in);
+}
+
+void exp10_f32_3(const float3 *in, float3 *out) {
+    *out = exp10(*in);
+}
+
+void exp10_f32_4(const float4 *in, float4 *out) {
+    *out = exp10(*in);
+}
diff --git a/tests/src/android/renderscript/cts/exp10_f32_relaxed.rs b/tests/src/android/renderscript/cts/exp10_f32_relaxed.rs
new file mode 100644
index 0000000..6e4e007
--- /dev/null
+++ b/tests/src/android/renderscript/cts/exp10_f32_relaxed.rs
@@ -0,0 +1,2 @@
+#include "exp10_f32.rs"
+#pragma rs_fp_relaxed
diff --git a/tests/src/android/renderscript/cts/exp2_f32.rs b/tests/src/android/renderscript/cts/exp2_f32.rs
new file mode 100644
index 0000000..9095bf3
--- /dev/null
+++ b/tests/src/android/renderscript/cts/exp2_f32.rs
@@ -0,0 +1,18 @@
+#pragma version(1)
+#pragma rs java_package_name(android.renderscript.cts)
+
+void exp2_f32_1(const float *in, float *out) {
+    *out = exp2(*in);
+}
+
+void exp2_f32_2(const float2 *in, float2 *out) {
+    *out = exp2(*in);
+}
+
+void exp2_f32_3(const float3 *in, float3 *out) {
+    *out = exp2(*in);
+}
+
+void exp2_f32_4(const float4 *in, float4 *out) {
+    *out = exp2(*in);
+}
diff --git a/tests/src/android/renderscript/cts/exp2_f32_relaxed.rs b/tests/src/android/renderscript/cts/exp2_f32_relaxed.rs
new file mode 100644
index 0000000..676b30a
--- /dev/null
+++ b/tests/src/android/renderscript/cts/exp2_f32_relaxed.rs
@@ -0,0 +1,2 @@
+#include "exp2_f32.rs"
+#pragma rs_fp_relaxed
diff --git a/tests/src/android/renderscript/cts/exp_f32.rs b/tests/src/android/renderscript/cts/exp_f32.rs
new file mode 100644
index 0000000..036c490
--- /dev/null
+++ b/tests/src/android/renderscript/cts/exp_f32.rs
@@ -0,0 +1,18 @@
+#pragma version(1)
+#pragma rs java_package_name(android.renderscript.cts)
+
+void exp_f32_1(const float *in, float *out) {
+    *out = exp(*in);
+}
+
+void exp_f32_2(const float2 *in, float2 *out) {
+    *out = exp(*in);
+}
+
+void exp_f32_3(const float3 *in, float3 *out) {
+    *out = exp(*in);
+}
+
+void exp_f32_4(const float4 *in, float4 *out) {
+    *out = exp(*in);
+}
diff --git a/tests/src/android/renderscript/cts/exp_f32_relaxed.rs b/tests/src/android/renderscript/cts/exp_f32_relaxed.rs
new file mode 100644
index 0000000..dc4b3d0
--- /dev/null
+++ b/tests/src/android/renderscript/cts/exp_f32_relaxed.rs
@@ -0,0 +1,2 @@
+#include "exp_f32.rs"
+#pragma rs_fp_relaxed
diff --git a/tests/src/android/renderscript/cts/expm1_f32.rs b/tests/src/android/renderscript/cts/expm1_f32.rs
new file mode 100644
index 0000000..1950131
--- /dev/null
+++ b/tests/src/android/renderscript/cts/expm1_f32.rs
@@ -0,0 +1,18 @@
+#pragma version(1)
+#pragma rs java_package_name(android.renderscript.cts)
+
+void expm1_f32_1(const float *in, float *out) {
+    *out = expm1(*in);
+}
+
+void expm1_f32_2(const float2 *in, float2 *out) {
+    *out = expm1(*in);
+}
+
+void expm1_f32_3(const float3 *in, float3 *out) {
+    *out = expm1(*in);
+}
+
+void expm1_f32_4(const float4 *in, float4 *out) {
+    *out = expm1(*in);
+}
diff --git a/tests/src/android/renderscript/cts/expm1_f32_relaxed.rs b/tests/src/android/renderscript/cts/expm1_f32_relaxed.rs
new file mode 100644
index 0000000..5a3c40e
--- /dev/null
+++ b/tests/src/android/renderscript/cts/expm1_f32_relaxed.rs
@@ -0,0 +1,2 @@
+#include "expm1_f32.rs"
+#pragma rs_fp_relaxed
diff --git a/tests/src/android/renderscript/cts/fabs_f32.rs b/tests/src/android/renderscript/cts/fabs_f32.rs
new file mode 100644
index 0000000..1567e4d
--- /dev/null
+++ b/tests/src/android/renderscript/cts/fabs_f32.rs
@@ -0,0 +1,18 @@
+#pragma version(1)
+#pragma rs java_package_name(android.renderscript.cts)
+
+void fabs_f32_1(const float *in, float *out) {
+    *out = fabs(*in);
+}
+
+void fabs_f32_2(const float2 *in, float2 *out) {
+    *out = fabs(*in);
+}
+
+void fabs_f32_3(const float3 *in, float3 *out) {
+    *out = fabs(*in);
+}
+
+void fabs_f32_4(const float4 *in, float4 *out) {
+    *out = fabs(*in);
+}
diff --git a/tests/src/android/renderscript/cts/fabs_f32_relaxed.rs b/tests/src/android/renderscript/cts/fabs_f32_relaxed.rs
new file mode 100644
index 0000000..e0add35
--- /dev/null
+++ b/tests/src/android/renderscript/cts/fabs_f32_relaxed.rs
@@ -0,0 +1,2 @@
+#include "fabs_f32.rs"
+#pragma rs_fp_relaxed
diff --git a/tests/src/android/renderscript/cts/fdim_f32.rs b/tests/src/android/renderscript/cts/fdim_f32.rs
new file mode 100644
index 0000000..e2c5fb1
--- /dev/null
+++ b/tests/src/android/renderscript/cts/fdim_f32.rs
@@ -0,0 +1,38 @@
+#pragma version(1)
+#pragma rs java_package_name(android.renderscript.cts)
+
+struct fdim_f32_input {
+    float x;
+    float y;
+};
+
+void fdim_f32_1(const struct fdim_f32_input *in, float *out) {
+    *out = fdim(in->x, in->y);
+}
+
+struct fdim_f32_2_input {
+    float2 x;
+    float2 y;
+};
+
+void fdim_f32_2(const struct fdim_f32_2_input *in, float2 *out) {
+    *out = fdim(in->x, in->y);
+}
+
+struct fdim_f32_3_input {
+    float3 x;
+    float3 y;
+};
+
+void fdim_f32_3(const struct fdim_f32_3_input *in, float3 *out) {
+    *out = fdim(in->x, in->y);
+}
+
+struct fdim_f32_4_input {
+    float4 x;
+    float4 y;
+};
+
+void fdim_f32_4(const struct fdim_f32_4_input *in, float4 *out) {
+    *out = fdim(in->x, in->y);
+}
diff --git a/tests/src/android/renderscript/cts/fdim_f32_relaxed.rs b/tests/src/android/renderscript/cts/fdim_f32_relaxed.rs
new file mode 100644
index 0000000..18c8cf0
--- /dev/null
+++ b/tests/src/android/renderscript/cts/fdim_f32_relaxed.rs
@@ -0,0 +1,2 @@
+#include "fdim_f32.rs"
+#pragma rs_fp_relaxed
diff --git a/tests/src/android/renderscript/cts/floor_f32.rs b/tests/src/android/renderscript/cts/floor_f32.rs
new file mode 100644
index 0000000..2300dab
--- /dev/null
+++ b/tests/src/android/renderscript/cts/floor_f32.rs
@@ -0,0 +1,17 @@
+#pragma version(1)
+#pragma rs java_package_name(android.renderscript.cts)
+void floor_f32_1(const float *in, float *out) {
+    *out = floor(*in);
+}
+
+void floor_f32_2(const float2 *in, float2 *out) {
+    *out = floor(*in);
+}
+
+void floor_f32_3(const float3 *in, float3 *out) {
+    *out = floor(*in);
+}
+
+void floor_f32_4(const float4 *in, float4 *out) {
+    *out = floor(*in);
+}
diff --git a/tests/src/android/renderscript/cts/floor_f32_relaxed.rs b/tests/src/android/renderscript/cts/floor_f32_relaxed.rs
new file mode 100644
index 0000000..d6bef83
--- /dev/null
+++ b/tests/src/android/renderscript/cts/floor_f32_relaxed.rs
@@ -0,0 +1,2 @@
+#include "floor_f32.rs"
+#pragma rs_fp_relaxed
diff --git a/tests/src/android/renderscript/cts/fma_f32.rs b/tests/src/android/renderscript/cts/fma_f32.rs
new file mode 100644
index 0000000..36257a5
--- /dev/null
+++ b/tests/src/android/renderscript/cts/fma_f32.rs
@@ -0,0 +1,42 @@
+#pragma version(1)
+#pragma rs java_package_name(android.renderscript.cts)
+
+typedef struct Floats {
+    float fa;
+    float fb;
+    float fc;
+} Floats;
+
+void fma_f32_1(const Floats *in, float *out) {
+    *out = fma(in->fa, in->fb, in->fc);
+}
+
+typedef struct Floats2 {
+    float2 fa;
+    float2 fb;
+    float2 fc;
+} Floats2;
+
+void fma_f32_2(const Floats2 *in, float2 *out) {
+    *out = fma(in->fa, in->fb, in->fc);
+}
+
+typedef struct Floats3 {
+    float3 fa;
+    float3 fb;
+    float3 fc;
+} Floats3;
+
+void fma_f32_3(const Floats3 *in, float3 *out) {
+    *out = fma(in->fa, in->fb, in->fc);
+}
+
+typedef struct Floats4 {
+    float4 fa;
+    float4 fb;
+    float4 fc;
+} Floats4;
+
+void fma_f32_4(const Floats4 *in, float4 *out) {
+    *out = fma(in->fa, in->fb, in->fc);
+}
diff --git a/tests/src/android/renderscript/cts/fma_f32_relaxed.rs b/tests/src/android/renderscript/cts/fma_f32_relaxed.rs
new file mode 100644
index 0000000..77f92df
--- /dev/null
+++ b/tests/src/android/renderscript/cts/fma_f32_relaxed.rs
@@ -0,0 +1,2 @@
+#include "fma_f32.rs"
+#pragma rs_fp_relaxed
diff --git a/tests/src/android/renderscript/cts/fmax_f32.rs b/tests/src/android/renderscript/cts/fmax_f32.rs
new file mode 100644
index 0000000..e03f258
--- /dev/null
+++ b/tests/src/android/renderscript/cts/fmax_f32.rs
@@ -0,0 +1,38 @@
+#pragma version(1)
+#pragma rs java_package_name(android.renderscript.cts)
+
+typedef struct fmax_f32_in {
+    float first;
+    float second;
+} input1;
+
+void fmax_f32_1(const input1* in, float* out){
+    *out = fmax(in->first, in->second);
+}
+
+typedef struct fmax_f32_2_in {
+    float2 first;
+    float2 second;
+} input2;
+
+void fmax_f32_2(const input2* in, float2* out){
+    *out = fmax(in->first, in->second);
+}
+
+typedef struct fmax_f32_3_in {
+    float3 first;
+    float3 second;
+} input3;
+
+void fmax_f32_3(const input3* in, float3* out){
+    *out = fmax(in->first, in->second);
+}
+
+typedef struct fmax_f32_4_in {
+    float4 first;
+    float4 second;
+} input4;
+
+void fmax_f32_4(const input4* in, float4* out){
+    *out = fmax(in->first, in->second);
+}
diff --git a/tests/src/android/renderscript/cts/fmax_f32_relaxed.rs b/tests/src/android/renderscript/cts/fmax_f32_relaxed.rs
new file mode 100644
index 0000000..23beccf
--- /dev/null
+++ b/tests/src/android/renderscript/cts/fmax_f32_relaxed.rs
@@ -0,0 +1,2 @@
+#include "fmax_f32.rs"
+#pragma rs_fp_relaxed
diff --git a/tests/src/android/renderscript/cts/fmin_f32.rs b/tests/src/android/renderscript/cts/fmin_f32.rs
new file mode 100644
index 0000000..49033f0
--- /dev/null
+++ b/tests/src/android/renderscript/cts/fmin_f32.rs
@@ -0,0 +1,38 @@
+#pragma version(1)
+#pragma rs java_package_name(android.renderscript.cts)
+
+typedef struct fmin_f32_in {
+    float first;
+    float second;
+} input1;
+
+void fmin_f32_1(const input1* in, float* out){
+    *out = fmin(in->first, in->second);
+}
+
+typedef struct fmin_f32_2_in {
+    float2 first;
+    float2 second;
+} input2;
+
+void fmin_f32_2(const input2* in, float2* out){
+    *out = fmin(in->first, in->second);
+}
+
+typedef struct fmin_f32_3_in {
+    float3 first;
+    float3 second;
+} input3;
+
+void fmin_f32_3(const input3* in, float3* out){
+    *out = fmin(in->first, in->second);
+}
+
+typedef struct fmin_f32_4_in {
+    float4 first;
+    float4 second;
+} input4;
+
+void fmin_f32_4(const input4* in, float4* out){
+    *out = fmin(in->first, in->second);
+}
diff --git a/tests/src/android/renderscript/cts/fmin_f32_relaxed.rs b/tests/src/android/renderscript/cts/fmin_f32_relaxed.rs
new file mode 100644
index 0000000..8be4f13
--- /dev/null
+++ b/tests/src/android/renderscript/cts/fmin_f32_relaxed.rs
@@ -0,0 +1,2 @@
+#include "fmin_f32.rs"
+#pragma rs_fp_relaxed
diff --git a/tests/src/android/renderscript/cts/fmod_f32.rs b/tests/src/android/renderscript/cts/fmod_f32.rs
new file mode 100644
index 0000000..ca8b282
--- /dev/null
+++ b/tests/src/android/renderscript/cts/fmod_f32.rs
@@ -0,0 +1,38 @@
+#pragma version(1)
+#pragma rs java_package_name(android.renderscript.cts)
+
+struct fmod_input_f32 {
+    float param1;
+    float param2;
+};
+
+void fmod_f32_1(const struct fmod_input_f32 *in, float *out) {
+    *out = fmod(in->param1, in->param2);
+}
+
+struct fmod_input_f32_2 {
+    float2 param1;
+    float2 param2;
+};
+
+void fmod_f32_2(const struct fmod_input_f32_2 *in, float2 *out) {
+    *out = fmod(in->param1, in->param2);
+}
+
+struct fmod_input_f32_3 {
+    float3 param1;
+    float3 param2;
+};
+
+void fmod_f32_3(const struct fmod_input_f32_3 *in, float3 *out) {
+    *out = fmod(in->param1, in->param2);
+}
+
+struct fmod_input_f32_4 {
+    float4 param1;
+    float4 param2;
+};
+
+void fmod_f32_4(const struct fmod_input_f32_4 *in, float4 *out) {
+    *out = fmod(in->param1, in->param2);
+}
diff --git a/tests/src/android/renderscript/cts/fmod_f32_relaxed.rs b/tests/src/android/renderscript/cts/fmod_f32_relaxed.rs
new file mode 100644
index 0000000..7a02136
--- /dev/null
+++ b/tests/src/android/renderscript/cts/fmod_f32_relaxed.rs
@@ -0,0 +1,2 @@
+#include "fmod_f32.rs"
+#pragma rs_fp_relaxed
diff --git a/tests/src/android/renderscript/cts/get_allocation.rs b/tests/src/android/renderscript/cts/get_allocation.rs
new file mode 100644
index 0000000..0149e6c
--- /dev/null
+++ b/tests/src/android/renderscript/cts/get_allocation.rs
@@ -0,0 +1,16 @@
+#pragma version(1)
+#pragma rs java_package_name(android.renderscript.cts)
+
+const int* pointer;
+rs_script script;
+rs_allocation alloc_in;
+rs_allocation alloc_out;
+
+void root(const int* in, int *out) {
+    *out = *in;
+}
+
+void start() {
+    alloc_in = rsGetAllocation(pointer);
+    rsForEach(script, alloc_in, alloc_out);
+}
diff --git a/tests/src/android/renderscript/cts/get_element_at_x.rs b/tests/src/android/renderscript/cts/get_element_at_x.rs
new file mode 100644
index 0000000..8d6ef8f
--- /dev/null
+++ b/tests/src/android/renderscript/cts/get_element_at_x.rs
@@ -0,0 +1,9 @@
+#pragma version(1)
+#pragma rs java_package_name(android.renderscript.cts)
+
+rs_allocation gIn;
+
+void root(uint32_t *out, uint32_t x) {
+    const uint32_t * tm = rsGetElementAt (gIn, x);
+    *out = *tm;
+}
\ No newline at end of file
diff --git a/tests/src/android/renderscript/cts/get_element_at_x_y.rs b/tests/src/android/renderscript/cts/get_element_at_x_y.rs
new file mode 100644
index 0000000..2a978c3
--- /dev/null
+++ b/tests/src/android/renderscript/cts/get_element_at_x_y.rs
@@ -0,0 +1,9 @@
+#pragma version(1)
+#pragma rs java_package_name(android.renderscript.cts)
+
+rs_allocation gIn;
+
+void root(uint32_t *out, uint32_t x, uint32_t y) {
+    const uint32_t * tm = rsGetElementAt (gIn, x, y);
+    *out = *tm;
+}
\ No newline at end of file
diff --git a/tests/src/android/renderscript/cts/group1.rs b/tests/src/android/renderscript/cts/group1.rs
new file mode 100644
index 0000000..f1172dc
--- /dev/null
+++ b/tests/src/android/renderscript/cts/group1.rs
@@ -0,0 +1,13 @@
+#pragma version(1)
+#pragma rs java_package_name(android.renderscript.cts)
+
+#include "shared.rsh"
+
+rs_allocation aSharedInt;
+
+uint32_t  __attribute__((kernel)) setSharedInt(uint32_t x) {
+    if (x == 1) {
+        rsSetElementAt_int(aSharedInt, -5, 0);
+    }
+    return x;
+}
diff --git a/tests/src/android/renderscript/cts/group2.rs b/tests/src/android/renderscript/cts/group2.rs
new file mode 100644
index 0000000..f7b62dd
--- /dev/null
+++ b/tests/src/android/renderscript/cts/group2.rs
@@ -0,0 +1,32 @@
+#pragma version(1)
+#pragma rs java_package_name(android.renderscript.cts)
+
+#include "shared.rsh"
+
+rs_allocation aSharedInt;
+rs_allocation aFailed;
+
+static bool failed[2] = { false, false };
+
+void __attribute__((kernel)) getSharedInt(uint32_t in, uint32_t x) {
+    int v = rsGetElementAt_int(aSharedInt, 0);
+    if (in != x) {
+        rsDebug("Failed to read in on iteration: ", x);
+        rsDebug("Read: ", in);
+        failed[x] = true;
+    }
+    if (v != -5) {
+        rsDebug("Failed to read -5 on iteration: ", x);
+        rsDebug("Read: ", v);
+        failed[x] = true;
+    }
+}
+
+// Write out aFailed if either of our kernel instances read old data.
+void verify() {
+    for (int i = 0; i < 2; i++) {
+        if (failed[i]) {
+            rsSetElementAt_int(aFailed, 1, 0);
+        }
+    }
+}
diff --git a/tests/src/android/renderscript/cts/hypot_f32.rs b/tests/src/android/renderscript/cts/hypot_f32.rs
new file mode 100644
index 0000000..4f9159c
--- /dev/null
+++ b/tests/src/android/renderscript/cts/hypot_f32.rs
@@ -0,0 +1,38 @@
+#pragma version(1)
+#pragma rs java_package_name(android.renderscript.cts)
+
+typedef struct hypot_f32_in {
+    float x;
+    float y;
+} hypot_input_f32;
+
+void hypot_f32_1(const hypot_input_f32 *in, float *out) {
+    *out = hypot(in->x, in->y);
+}
+
+typedef struct hypot_f32_2_in {
+    float2 x;
+    float2 y;
+} hypot_input_f32_2;
+
+void hypot_f32_2(const hypot_input_f32_2 *in, float2 *out) {
+    *out = hypot(in->x, in->y);
+}
+
+typedef struct hypot_f32_3_in {
+    float3 x;
+    float3 y;
+} hypot_input_f32_3;
+
+void hypot_f32_3(const hypot_input_f32_3 *in, float3 *out) {
+    *out = hypot(in->x, in->y);
+}
+
+typedef struct hypot_f32_4_in {
+    float4 x;
+    float4 y;
+} hypot_input_f32_4;
+
+void hypot_f32_4(const hypot_input_f32_4 *in, float4 *out) {
+    *out = hypot(in->x, in->y);
+}
diff --git a/tests/src/android/renderscript/cts/hypot_f32_relaxed.rs b/tests/src/android/renderscript/cts/hypot_f32_relaxed.rs
new file mode 100644
index 0000000..7414788
--- /dev/null
+++ b/tests/src/android/renderscript/cts/hypot_f32_relaxed.rs
@@ -0,0 +1,2 @@
+#include "hypot_f32.rs"
+#pragma rs_fp_relaxed
diff --git a/tests/src/android/renderscript/cts/init_test.rs b/tests/src/android/renderscript/cts/init_test.rs
new file mode 100644
index 0000000..f89c979
--- /dev/null
+++ b/tests/src/android/renderscript/cts/init_test.rs
@@ -0,0 +1,13 @@
+#pragma version(1)
+#pragma rs java_package_name(android.renderscript.cts)
+
+float a;
+
+void init()
+{
+    a = 2.f;
+}
+
+void root(const float *in, float *out) {
+    *out = a;
+}
diff --git a/tests/src/android/renderscript/cts/intrinsic_colormatrix.rs b/tests/src/android/renderscript/cts/intrinsic_colormatrix.rs
new file mode 100644
index 0000000..30b40c4
--- /dev/null
+++ b/tests/src/android/renderscript/cts/intrinsic_colormatrix.rs
@@ -0,0 +1,113 @@
+/*
+ * Copyright (C) 2013 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.
+ */
+
+#include "shared.rsh"
+
+
+void reference(rs_matrix4x4 m, float4 add, rs_allocation in, rs_allocation out) {
+    uint32_t w = rsAllocationGetDimX(in);
+    uint32_t h = rsAllocationGetDimY(in);
+
+    rs_element ein = rsAllocationGetElement(in);
+    rs_element eout = rsAllocationGetElement(out);
+    rs_data_type dtin = rsElementGetDataType(ein);
+    rs_data_type dtout = rsElementGetDataType(eout);
+    uint32_t vsin = rsElementGetVectorSize(ein);
+    uint32_t vsout = rsElementGetVectorSize(eout);
+
+    for (uint32_t y = 0; y < h; y++) {
+        for (uint32_t x = 0; x < w; x++) {
+            float4 pin = 0.f;
+
+            if (dtin == RS_TYPE_FLOAT_32) {
+                switch(vsin) {
+                case 4:
+                    pin.xyzw = rsGetElementAt_float4(in, x, y);
+                    break;
+                case 3:
+                    pin.xyz = rsGetElementAt_float3(in, x, y);
+                    break;
+                case 2:
+                    pin.xy = rsGetElementAt_float2(in, x, y);
+                    break;
+                case 1:
+                    pin.x = rsGetElementAt_float(in, x, y);
+                    break;
+                }
+            }
+
+            if (dtin == RS_TYPE_UNSIGNED_8) {
+                uchar4 u = 0;
+                switch(vsin) {
+                case 4:
+                    u.xyzw = rsGetElementAt_uchar4(in, x, y);
+                    break;
+                case 3:
+                    u.xyz = rsGetElementAt_uchar3(in, x, y);
+                    break;
+                case 2:
+                    u.xy = rsGetElementAt_uchar2(in, x, y);
+                    break;
+                case 1:
+                    u.x = rsGetElementAt_uchar(in, x, y);
+                    break;
+                }
+                pin = rsUnpackColor8888(u);
+            }
+
+            pin = rsMatrixMultiply(&m, pin);
+            pin += add;
+
+            if (dtout == RS_TYPE_FLOAT_32) {
+                switch(vsout) {
+                case 4:
+                    rsSetElementAt_float4(out, pin, x, y);
+                    break;
+                case 3:
+                    rsSetElementAt_float3(out, pin.xyz, x, y);
+                    break;
+                case 2:
+                    rsSetElementAt_float2(out, pin.xy, x, y);
+                    break;
+                case 1:
+                    rsSetElementAt_float(out, pin.x, x, y);
+                    break;
+                }
+            }
+
+            if (dtout == RS_TYPE_UNSIGNED_8) {
+                uchar4 u = rsPackColorTo8888(pin);
+                switch(vsout) {
+                case 4:
+                    rsSetElementAt_uchar4(out, u, x, y);
+                    break;
+                case 3:
+                    rsSetElementAt_uchar3(out, u.xyz, x, y);
+                    break;
+                case 2:
+                    rsSetElementAt_uchar2(out, u.xy, x, y);
+                    break;
+                case 1:
+                    rsSetElementAt_uchar(out, u.x, x, y);
+                    break;
+                }
+            }
+
+        }
+    }
+}
+
+
diff --git a/tests/src/android/renderscript/cts/intrinsic_convolve3x3.rs b/tests/src/android/renderscript/cts/intrinsic_convolve3x3.rs
new file mode 100644
index 0000000..77da230
--- /dev/null
+++ b/tests/src/android/renderscript/cts/intrinsic_convolve3x3.rs
@@ -0,0 +1,305 @@
+/*
+ * Copyright (C) 2013 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.
+ */
+
+#include "shared.rsh"
+
+int32_t gWidth;
+int32_t gHeight;
+rs_allocation gIn;
+
+float gCoeffs[9];
+
+uchar4 __attribute__((kernel)) convolve_U4(uint32_t x, uint32_t y) {
+    uint32_t x1 = min((int32_t)x+1, gWidth-1);
+    uint32_t x2 = max((int32_t)x-1, 0);
+    uint32_t y1 = min((int32_t)y+1, gHeight-1);
+    uint32_t y2 = max((int32_t)y-1, 0);
+
+    float4 p00 = convert_float4(rsGetElementAt_uchar4(gIn, x1, y1));
+    float4 p01 = convert_float4(rsGetElementAt_uchar4(gIn, x, y1));
+    float4 p02 = convert_float4(rsGetElementAt_uchar4(gIn, x2, y1));
+    float4 p10 = convert_float4(rsGetElementAt_uchar4(gIn, x1, y));
+    float4 p11 = convert_float4(rsGetElementAt_uchar4(gIn, x, y));
+    float4 p12 = convert_float4(rsGetElementAt_uchar4(gIn, x2, y));
+    float4 p20 = convert_float4(rsGetElementAt_uchar4(gIn, x1, y2));
+    float4 p21 = convert_float4(rsGetElementAt_uchar4(gIn, x, y2));
+    float4 p22 = convert_float4(rsGetElementAt_uchar4(gIn, x2, y2));
+    p00 *= gCoeffs[0];
+    p01 *= gCoeffs[1];
+    p02 *= gCoeffs[2];
+    p10 *= gCoeffs[3];
+    p11 *= gCoeffs[4];
+    p12 *= gCoeffs[5];
+    p20 *= gCoeffs[6];
+    p21 *= gCoeffs[7];
+    p22 *= gCoeffs[8];
+
+    p00 += p01;
+    p02 += p10;
+    p11 += p12;
+    p20 += p21;
+
+    p22 += p00;
+    p02 += p11;
+
+    p20 += p22;
+    p20 += p02;
+    p20 += 0.5f;
+
+    p20 = clamp(p20, 0.f, 255.f);
+    return convert_uchar4(p20);
+}
+
+uchar3 __attribute__((kernel)) convolve_U3(uint32_t x, uint32_t y) {
+    uint32_t x1 = min((int32_t)x+1, gWidth-1);
+    uint32_t x2 = max((int32_t)x-1, 0);
+    uint32_t y1 = min((int32_t)y+1, gHeight-1);
+    uint32_t y2 = max((int32_t)y-1, 0);
+
+    float3 p00 = convert_float3(rsGetElementAt_uchar3(gIn, x1, y1));
+    float3 p01 = convert_float3(rsGetElementAt_uchar3(gIn, x, y1));
+    float3 p02 = convert_float3(rsGetElementAt_uchar3(gIn, x2, y1));
+    float3 p10 = convert_float3(rsGetElementAt_uchar3(gIn, x1, y));
+    float3 p11 = convert_float3(rsGetElementAt_uchar3(gIn, x, y));
+    float3 p12 = convert_float3(rsGetElementAt_uchar3(gIn, x2, y));
+    float3 p20 = convert_float3(rsGetElementAt_uchar3(gIn, x1, y2));
+    float3 p21 = convert_float3(rsGetElementAt_uchar3(gIn, x, y2));
+    float3 p22 = convert_float3(rsGetElementAt_uchar3(gIn, x2, y2));
+    p00 *= gCoeffs[0];
+    p01 *= gCoeffs[1];
+    p02 *= gCoeffs[2];
+    p10 *= gCoeffs[3];
+    p11 *= gCoeffs[4];
+    p12 *= gCoeffs[5];
+    p20 *= gCoeffs[6];
+    p21 *= gCoeffs[7];
+    p22 *= gCoeffs[8];
+
+    p00 += p01;
+    p02 += p10;
+    p11 += p12;
+    p20 += p21;
+
+    p22 += p00;
+    p02 += p11;
+
+    p20 += p22;
+    p20 += p02;
+    p20 += 0.5f;
+
+    p20 = clamp(p20, 0.f, 255.f);
+    return convert_uchar3(p20);
+}
+
+uchar2 __attribute__((kernel)) convolve_U2(uint32_t x, uint32_t y) {
+    uint32_t x1 = min((int32_t)x+1, gWidth-1);
+    uint32_t x2 = max((int32_t)x-1, 0);
+    uint32_t y1 = min((int32_t)y+1, gHeight-1);
+    uint32_t y2 = max((int32_t)y-1, 0);
+
+    float2 p00 = convert_float2(rsGetElementAt_uchar2(gIn, x1, y1));
+    float2 p01 = convert_float2(rsGetElementAt_uchar2(gIn, x, y1));
+    float2 p02 = convert_float2(rsGetElementAt_uchar2(gIn, x2, y1));
+    float2 p10 = convert_float2(rsGetElementAt_uchar2(gIn, x1, y));
+    float2 p11 = convert_float2(rsGetElementAt_uchar2(gIn, x, y));
+    float2 p12 = convert_float2(rsGetElementAt_uchar2(gIn, x2, y));
+    float2 p20 = convert_float2(rsGetElementAt_uchar2(gIn, x1, y2));
+    float2 p21 = convert_float2(rsGetElementAt_uchar2(gIn, x, y2));
+    float2 p22 = convert_float2(rsGetElementAt_uchar2(gIn, x2, y2));
+    p00 *= gCoeffs[0];
+    p01 *= gCoeffs[1];
+    p02 *= gCoeffs[2];
+    p10 *= gCoeffs[3];
+    p11 *= gCoeffs[4];
+    p12 *= gCoeffs[5];
+    p20 *= gCoeffs[6];
+    p21 *= gCoeffs[7];
+    p22 *= gCoeffs[8];
+
+    p00 += p01;
+    p02 += p10;
+    p11 += p12;
+    p20 += p21;
+
+    p22 += p00;
+    p02 += p11;
+
+    p20 += p22;
+    p20 += p02;
+    p20 += 0.5f;
+
+    p20 = clamp(p20, 0.f, 255.f);
+    return convert_uchar2(p20);
+}
+
+uchar __attribute__((kernel)) convolve_U1(uint32_t x, uint32_t y) {
+    uint32_t x1 = min((int32_t)x+1, gWidth-1);
+    uint32_t x2 = max((int32_t)x-1, 0);
+    uint32_t y1 = min((int32_t)y+1, gHeight-1);
+    uint32_t y2 = max((int32_t)y-1, 0);
+
+    float p00 = rsGetElementAt_uchar(gIn, x1, y1);
+    float p01 = rsGetElementAt_uchar(gIn, x, y1);
+    float p02 = rsGetElementAt_uchar(gIn, x2, y1);
+    float p10 = rsGetElementAt_uchar(gIn, x1, y);
+    float p11 = rsGetElementAt_uchar(gIn, x, y);
+    float p12 = rsGetElementAt_uchar(gIn, x2, y);
+    float p20 = rsGetElementAt_uchar(gIn, x1, y2);
+    float p21 = rsGetElementAt_uchar(gIn, x, y2);
+    float p22 = rsGetElementAt_uchar(gIn, x2, y2);
+    p00 *= gCoeffs[0];
+    p01 *= gCoeffs[1];
+    p02 *= gCoeffs[2];
+    p10 *= gCoeffs[3];
+    p11 *= gCoeffs[4];
+    p12 *= gCoeffs[5];
+    p20 *= gCoeffs[6];
+    p21 *= gCoeffs[7];
+    p22 *= gCoeffs[8];
+
+    p00 += p01;
+    p02 += p10;
+    p11 += p12;
+    p20 += p21;
+
+    p22 += p00;
+    p02 += p11;
+
+    p20 += p22;
+    p20 += p02;
+    p20 += 0.5f;
+
+    p20 = clamp(p20, 0.f, 255.f);
+    return (uchar)p20;
+}
+
+float4 __attribute__((kernel)) convolve_F4(uint32_t x, uint32_t y) {
+    uint32_t x1 = min((int32_t)x+1, gWidth-1);
+    uint32_t x2 = max((int32_t)x-1, 0);
+    uint32_t y1 = min((int32_t)y+1, gHeight-1);
+    uint32_t y2 = max((int32_t)y-1, 0);
+
+    float4 p00 = rsGetElementAt_float4(gIn, x1, y1) * gCoeffs[0];
+    float4 p01 = rsGetElementAt_float4(gIn, x, y1) * gCoeffs[1];
+    float4 p02 = rsGetElementAt_float4(gIn, x2, y1) * gCoeffs[2];
+    float4 p10 = rsGetElementAt_float4(gIn, x1, y) * gCoeffs[3];
+    float4 p11 = rsGetElementAt_float4(gIn, x, y) * gCoeffs[4];
+    float4 p12 = rsGetElementAt_float4(gIn, x2, y) * gCoeffs[5];
+    float4 p20 = rsGetElementAt_float4(gIn, x1, y2) * gCoeffs[6];
+    float4 p21 = rsGetElementAt_float4(gIn, x, y2) * gCoeffs[7];
+    float4 p22 = rsGetElementAt_float4(gIn, x2, y2) * gCoeffs[8];
+
+    p00 += p01;
+    p02 += p10;
+    p11 += p12;
+    p20 += p21;
+
+    p22 += p00;
+    p02 += p11;
+
+    p20 += p22;
+    p20 += p02;
+    return p20;
+}
+
+float3 __attribute__((kernel)) convolve_F3(uint32_t x, uint32_t y) {
+    uint32_t x1 = min((int32_t)x+1, gWidth-1);
+    uint32_t x2 = max((int32_t)x-1, 0);
+    uint32_t y1 = min((int32_t)y+1, gHeight-1);
+    uint32_t y2 = max((int32_t)y-1, 0);
+
+    float3 p00 = rsGetElementAt_float3(gIn, x1, y1) * gCoeffs[0];
+    float3 p01 = rsGetElementAt_float3(gIn, x, y1) * gCoeffs[1];
+    float3 p02 = rsGetElementAt_float3(gIn, x2, y1) * gCoeffs[2];
+    float3 p10 = rsGetElementAt_float3(gIn, x1, y) * gCoeffs[3];
+    float3 p11 = rsGetElementAt_float3(gIn, x, y) * gCoeffs[4];
+    float3 p12 = rsGetElementAt_float3(gIn, x2, y) * gCoeffs[5];
+    float3 p20 = rsGetElementAt_float3(gIn, x1, y2) * gCoeffs[6];
+    float3 p21 = rsGetElementAt_float3(gIn, x, y2) * gCoeffs[7];
+    float3 p22 = rsGetElementAt_float3(gIn, x2, y2) * gCoeffs[8];
+
+    p00 += p01;
+    p02 += p10;
+    p11 += p12;
+    p20 += p21;
+
+    p22 += p00;
+    p02 += p11;
+
+    p20 += p22;
+    p20 += p02;
+    return p20;
+}
+
+float2 __attribute__((kernel)) convolve_F2(uint32_t x, uint32_t y) {
+    uint32_t x1 = min((int32_t)x+1, gWidth-1);
+    uint32_t x2 = max((int32_t)x-1, 0);
+    uint32_t y1 = min((int32_t)y+1, gHeight-1);
+    uint32_t y2 = max((int32_t)y-1, 0);
+
+    float2 p00 = rsGetElementAt_float2(gIn, x1, y1) * gCoeffs[0];
+    float2 p01 = rsGetElementAt_float2(gIn, x, y1) * gCoeffs[1];
+    float2 p02 = rsGetElementAt_float2(gIn, x2, y1) * gCoeffs[2];
+    float2 p10 = rsGetElementAt_float2(gIn, x1, y) * gCoeffs[3];
+    float2 p11 = rsGetElementAt_float2(gIn, x, y) * gCoeffs[4];
+    float2 p12 = rsGetElementAt_float2(gIn, x2, y) * gCoeffs[5];
+    float2 p20 = rsGetElementAt_float2(gIn, x1, y2) * gCoeffs[6];
+    float2 p21 = rsGetElementAt_float2(gIn, x, y2) * gCoeffs[7];
+    float2 p22 = rsGetElementAt_float2(gIn, x2, y2) * gCoeffs[8];
+
+    p00 += p01;
+    p02 += p10;
+    p11 += p12;
+    p20 += p21;
+
+    p22 += p00;
+    p02 += p11;
+
+    p20 += p22;
+    p20 += p02;
+    return p20;
+}
+
+float __attribute__((kernel)) convolve_F1(uint32_t x, uint32_t y) {
+    uint32_t x1 = min((int32_t)x+1, gWidth-1);
+    uint32_t x2 = max((int32_t)x-1, 0);
+    uint32_t y1 = min((int32_t)y+1, gHeight-1);
+    uint32_t y2 = max((int32_t)y-1, 0);
+
+    float p00 = rsGetElementAt_float(gIn, x1, y1) * gCoeffs[0];
+    float p01 = rsGetElementAt_float(gIn, x, y1) * gCoeffs[1];
+    float p02 = rsGetElementAt_float(gIn, x2, y1) * gCoeffs[2];
+    float p10 = rsGetElementAt_float(gIn, x1, y) * gCoeffs[3];
+    float p11 = rsGetElementAt_float(gIn, x, y) * gCoeffs[4];
+    float p12 = rsGetElementAt_float(gIn, x2, y) * gCoeffs[5];
+    float p20 = rsGetElementAt_float(gIn, x1, y2) * gCoeffs[6];
+    float p21 = rsGetElementAt_float(gIn, x, y2) * gCoeffs[7];
+    float p22 = rsGetElementAt_float(gIn, x2, y2) * gCoeffs[8];
+
+    p00 += p01;
+    p02 += p10;
+    p11 += p12;
+    p20 += p21;
+
+    p22 += p00;
+    p02 += p11;
+
+    p20 += p22;
+    p20 += p02;
+    return p20;
+}
+
+
diff --git a/tests/src/android/renderscript/cts/intrinsic_convolve5x5.rs b/tests/src/android/renderscript/cts/intrinsic_convolve5x5.rs
new file mode 100644
index 0000000..9f9aa2b
--- /dev/null
+++ b/tests/src/android/renderscript/cts/intrinsic_convolve5x5.rs
@@ -0,0 +1,398 @@
+/*
+ * Copyright (C) 2013 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.
+ */
+
+#include "shared.rsh"
+
+
+int32_t gWidth;
+int32_t gHeight;
+rs_allocation gIn;
+
+float gCoeffs[25];
+
+uchar4 __attribute__((kernel)) convolve_U4(uint32_t x, uint32_t y) {
+    uint32_t x0 = max((int32_t)x-2, 0);
+    uint32_t x1 = max((int32_t)x-1, 0);
+    uint32_t x2 = x;
+    uint32_t x3 = min((int32_t)x+1, gWidth-1);
+    uint32_t x4 = min((int32_t)x+2, gWidth-1);
+
+    uint32_t y0 = max((int32_t)y-2, 0);
+    uint32_t y1 = max((int32_t)y-1, 0);
+    uint32_t y2 = y;
+    uint32_t y3 = min((int32_t)y+1, gHeight-1);
+    uint32_t y4 = min((int32_t)y+2, gHeight-1);
+
+    float4 p0 = convert_float4(rsGetElementAt_uchar4(gIn, x0, y0)) * gCoeffs[0]
+              + convert_float4(rsGetElementAt_uchar4(gIn, x1, y0)) * gCoeffs[1]
+              + convert_float4(rsGetElementAt_uchar4(gIn, x2, y0)) * gCoeffs[2]
+              + convert_float4(rsGetElementAt_uchar4(gIn, x3, y0)) * gCoeffs[3]
+              + convert_float4(rsGetElementAt_uchar4(gIn, x4, y0)) * gCoeffs[4];
+
+    float4 p1 = convert_float4(rsGetElementAt_uchar4(gIn, x0, y1)) * gCoeffs[5]
+              + convert_float4(rsGetElementAt_uchar4(gIn, x1, y1)) * gCoeffs[6]
+              + convert_float4(rsGetElementAt_uchar4(gIn, x2, y1)) * gCoeffs[7]
+              + convert_float4(rsGetElementAt_uchar4(gIn, x3, y1)) * gCoeffs[8]
+              + convert_float4(rsGetElementAt_uchar4(gIn, x4, y1)) * gCoeffs[9];
+
+    float4 p2 = convert_float4(rsGetElementAt_uchar4(gIn, x0, y2)) * gCoeffs[10]
+              + convert_float4(rsGetElementAt_uchar4(gIn, x1, y2)) * gCoeffs[11]
+              + convert_float4(rsGetElementAt_uchar4(gIn, x2, y2)) * gCoeffs[12]
+              + convert_float4(rsGetElementAt_uchar4(gIn, x3, y2)) * gCoeffs[13]
+              + convert_float4(rsGetElementAt_uchar4(gIn, x4, y2)) * gCoeffs[14];
+
+    float4 p3 = convert_float4(rsGetElementAt_uchar4(gIn, x0, y3)) * gCoeffs[15]
+              + convert_float4(rsGetElementAt_uchar4(gIn, x1, y3)) * gCoeffs[16]
+              + convert_float4(rsGetElementAt_uchar4(gIn, x2, y3)) * gCoeffs[17]
+              + convert_float4(rsGetElementAt_uchar4(gIn, x3, y3)) * gCoeffs[18]
+              + convert_float4(rsGetElementAt_uchar4(gIn, x4, y3)) * gCoeffs[19];
+
+    float4 p4 = convert_float4(rsGetElementAt_uchar4(gIn, x0, y4)) * gCoeffs[20]
+              + convert_float4(rsGetElementAt_uchar4(gIn, x1, y4)) * gCoeffs[21]
+              + convert_float4(rsGetElementAt_uchar4(gIn, x2, y4)) * gCoeffs[22]
+              + convert_float4(rsGetElementAt_uchar4(gIn, x3, y4)) * gCoeffs[23]
+              + convert_float4(rsGetElementAt_uchar4(gIn, x4, y4)) * gCoeffs[24];
+
+    p0 = clamp(p0 + p1 + p2 + p3 + p4, 0.f, 255.f);
+    return convert_uchar4(p0);
+}
+
+uchar3 __attribute__((kernel)) convolve_U3(uint32_t x, uint32_t y) {
+    uint32_t x0 = max((int32_t)x-2, 0);
+    uint32_t x1 = max((int32_t)x-1, 0);
+    uint32_t x2 = x;
+    uint32_t x3 = min((int32_t)x+1, gWidth-1);
+    uint32_t x4 = min((int32_t)x+2, gWidth-1);
+
+    uint32_t y0 = max((int32_t)y-2, 0);
+    uint32_t y1 = max((int32_t)y-1, 0);
+    uint32_t y2 = y;
+    uint32_t y3 = min((int32_t)y+1, gHeight-1);
+    uint32_t y4 = min((int32_t)y+2, gHeight-1);
+
+    float3 p0 = convert_float3(rsGetElementAt_uchar3(gIn, x0, y0)) * gCoeffs[0]
+              + convert_float3(rsGetElementAt_uchar3(gIn, x1, y0)) * gCoeffs[1]
+              + convert_float3(rsGetElementAt_uchar3(gIn, x2, y0)) * gCoeffs[2]
+              + convert_float3(rsGetElementAt_uchar3(gIn, x3, y0)) * gCoeffs[3]
+              + convert_float3(rsGetElementAt_uchar3(gIn, x4, y0)) * gCoeffs[4];
+
+    float3 p1 = convert_float3(rsGetElementAt_uchar3(gIn, x0, y1)) * gCoeffs[5]
+              + convert_float3(rsGetElementAt_uchar3(gIn, x1, y1)) * gCoeffs[6]
+              + convert_float3(rsGetElementAt_uchar3(gIn, x2, y1)) * gCoeffs[7]
+              + convert_float3(rsGetElementAt_uchar3(gIn, x3, y1)) * gCoeffs[8]
+              + convert_float3(rsGetElementAt_uchar3(gIn, x4, y1)) * gCoeffs[9];
+
+    float3 p2 = convert_float3(rsGetElementAt_uchar3(gIn, x0, y2)) * gCoeffs[10]
+              + convert_float3(rsGetElementAt_uchar3(gIn, x1, y2)) * gCoeffs[11]
+              + convert_float3(rsGetElementAt_uchar3(gIn, x2, y2)) * gCoeffs[12]
+              + convert_float3(rsGetElementAt_uchar3(gIn, x3, y2)) * gCoeffs[13]
+              + convert_float3(rsGetElementAt_uchar3(gIn, x4, y2)) * gCoeffs[14];
+
+    float3 p3 = convert_float3(rsGetElementAt_uchar3(gIn, x0, y3)) * gCoeffs[15]
+              + convert_float3(rsGetElementAt_uchar3(gIn, x1, y3)) * gCoeffs[16]
+              + convert_float3(rsGetElementAt_uchar3(gIn, x2, y3)) * gCoeffs[17]
+              + convert_float3(rsGetElementAt_uchar3(gIn, x3, y3)) * gCoeffs[18]
+              + convert_float3(rsGetElementAt_uchar3(gIn, x4, y3)) * gCoeffs[19];
+
+    float3 p4 = convert_float3(rsGetElementAt_uchar3(gIn, x0, y4)) * gCoeffs[20]
+              + convert_float3(rsGetElementAt_uchar3(gIn, x1, y4)) * gCoeffs[21]
+              + convert_float3(rsGetElementAt_uchar3(gIn, x2, y4)) * gCoeffs[22]
+              + convert_float3(rsGetElementAt_uchar3(gIn, x3, y4)) * gCoeffs[23]
+              + convert_float3(rsGetElementAt_uchar3(gIn, x4, y4)) * gCoeffs[24];
+
+    p0 = clamp(p0 + p1 + p2 + p3 + p4, 0.f, 255.f);
+    return convert_uchar3(p0);
+}
+
+uchar2 __attribute__((kernel)) convolve_U2(uint32_t x, uint32_t y) {
+    uint32_t x0 = max((int32_t)x-2, 0);
+    uint32_t x1 = max((int32_t)x-1, 0);
+    uint32_t x2 = x;
+    uint32_t x3 = min((int32_t)x+1, gWidth-1);
+    uint32_t x4 = min((int32_t)x+2, gWidth-1);
+
+    uint32_t y0 = max((int32_t)y-2, 0);
+    uint32_t y1 = max((int32_t)y-1, 0);
+    uint32_t y2 = y;
+    uint32_t y3 = min((int32_t)y+1, gHeight-1);
+    uint32_t y4 = min((int32_t)y+2, gHeight-1);
+
+    float2 p0 = convert_float2(rsGetElementAt_uchar2(gIn, x0, y0)) * gCoeffs[0]
+              + convert_float2(rsGetElementAt_uchar2(gIn, x1, y0)) * gCoeffs[1]
+              + convert_float2(rsGetElementAt_uchar2(gIn, x2, y0)) * gCoeffs[2]
+              + convert_float2(rsGetElementAt_uchar2(gIn, x3, y0)) * gCoeffs[3]
+              + convert_float2(rsGetElementAt_uchar2(gIn, x4, y0)) * gCoeffs[4];
+
+    float2 p1 = convert_float2(rsGetElementAt_uchar2(gIn, x0, y1)) * gCoeffs[5]
+              + convert_float2(rsGetElementAt_uchar2(gIn, x1, y1)) * gCoeffs[6]
+              + convert_float2(rsGetElementAt_uchar2(gIn, x2, y1)) * gCoeffs[7]
+              + convert_float2(rsGetElementAt_uchar2(gIn, x3, y1)) * gCoeffs[8]
+              + convert_float2(rsGetElementAt_uchar2(gIn, x4, y1)) * gCoeffs[9];
+
+    float2 p2 = convert_float2(rsGetElementAt_uchar2(gIn, x0, y2)) * gCoeffs[10]
+              + convert_float2(rsGetElementAt_uchar2(gIn, x1, y2)) * gCoeffs[11]
+              + convert_float2(rsGetElementAt_uchar2(gIn, x2, y2)) * gCoeffs[12]
+              + convert_float2(rsGetElementAt_uchar2(gIn, x3, y2)) * gCoeffs[13]
+              + convert_float2(rsGetElementAt_uchar2(gIn, x4, y2)) * gCoeffs[14];
+
+    float2 p3 = convert_float2(rsGetElementAt_uchar2(gIn, x0, y3)) * gCoeffs[15]
+              + convert_float2(rsGetElementAt_uchar2(gIn, x1, y3)) * gCoeffs[16]
+              + convert_float2(rsGetElementAt_uchar2(gIn, x2, y3)) * gCoeffs[17]
+              + convert_float2(rsGetElementAt_uchar2(gIn, x3, y3)) * gCoeffs[18]
+              + convert_float2(rsGetElementAt_uchar2(gIn, x4, y3)) * gCoeffs[19];
+
+    float2 p4 = convert_float2(rsGetElementAt_uchar2(gIn, x0, y4)) * gCoeffs[20]
+              + convert_float2(rsGetElementAt_uchar2(gIn, x1, y4)) * gCoeffs[21]
+              + convert_float2(rsGetElementAt_uchar2(gIn, x2, y4)) * gCoeffs[22]
+              + convert_float2(rsGetElementAt_uchar2(gIn, x3, y4)) * gCoeffs[23]
+              + convert_float2(rsGetElementAt_uchar2(gIn, x4, y4)) * gCoeffs[24];
+
+    p0 = clamp(p0 + p1 + p2 + p3 + p4, 0.f, 255.f);
+    return convert_uchar2(p0);
+}
+
+uchar __attribute__((kernel)) convolve_U1(uint32_t x, uint32_t y) {
+    uint32_t x0 = max((int32_t)x-2, 0);
+    uint32_t x1 = max((int32_t)x-1, 0);
+    uint32_t x2 = x;
+    uint32_t x3 = min((int32_t)x+1, gWidth-1);
+    uint32_t x4 = min((int32_t)x+2, gWidth-1);
+
+    uint32_t y0 = max((int32_t)y-2, 0);
+    uint32_t y1 = max((int32_t)y-1, 0);
+    uint32_t y2 = y;
+    uint32_t y3 = min((int32_t)y+1, gHeight-1);
+    uint32_t y4 = min((int32_t)y+2, gHeight-1);
+
+    float p0 = (float)(rsGetElementAt_uchar(gIn, x0, y0)) * gCoeffs[0]
+             + (float)(rsGetElementAt_uchar(gIn, x1, y0)) * gCoeffs[1]
+             + (float)(rsGetElementAt_uchar(gIn, x2, y0)) * gCoeffs[2]
+             + (float)(rsGetElementAt_uchar(gIn, x3, y0)) * gCoeffs[3]
+             + (float)(rsGetElementAt_uchar(gIn, x4, y0)) * gCoeffs[4];
+
+    float p1 = (float)(rsGetElementAt_uchar(gIn, x0, y1)) * gCoeffs[5]
+             + (float)(rsGetElementAt_uchar(gIn, x1, y1)) * gCoeffs[6]
+             + (float)(rsGetElementAt_uchar(gIn, x2, y1)) * gCoeffs[7]
+             + (float)(rsGetElementAt_uchar(gIn, x3, y1)) * gCoeffs[8]
+             + (float)(rsGetElementAt_uchar(gIn, x4, y1)) * gCoeffs[9];
+
+    float p2 = (float)(rsGetElementAt_uchar(gIn, x0, y2)) * gCoeffs[10]
+             + (float)(rsGetElementAt_uchar(gIn, x1, y2)) * gCoeffs[11]
+             + (float)(rsGetElementAt_uchar(gIn, x2, y2)) * gCoeffs[12]
+             + (float)(rsGetElementAt_uchar(gIn, x3, y2)) * gCoeffs[13]
+             + (float)(rsGetElementAt_uchar(gIn, x4, y2)) * gCoeffs[14];
+
+    float p3 = (float)(rsGetElementAt_uchar(gIn, x0, y3)) * gCoeffs[15]
+             + (float)(rsGetElementAt_uchar(gIn, x1, y3)) * gCoeffs[16]
+             + (float)(rsGetElementAt_uchar(gIn, x2, y3)) * gCoeffs[17]
+             + (float)(rsGetElementAt_uchar(gIn, x3, y3)) * gCoeffs[18]
+             + (float)(rsGetElementAt_uchar(gIn, x4, y3)) * gCoeffs[19];
+
+    float p4 = (float)(rsGetElementAt_uchar(gIn, x0, y4)) * gCoeffs[20]
+             + (float)(rsGetElementAt_uchar(gIn, x1, y4)) * gCoeffs[21]
+             + (float)(rsGetElementAt_uchar(gIn, x2, y4)) * gCoeffs[22]
+             + (float)(rsGetElementAt_uchar(gIn, x3, y4)) * gCoeffs[23]
+             + (float)(rsGetElementAt_uchar(gIn, x4, y4)) * gCoeffs[24];
+
+    return clamp(p0 + p1 + p2 + p3 + p4, 0.f, 255.f);
+}
+
+float4 __attribute__((kernel)) convolve_F4(uint32_t x, uint32_t y) {
+    uint32_t x0 = max((int32_t)x-2, 0);
+    uint32_t x1 = max((int32_t)x-1, 0);
+    uint32_t x2 = x;
+    uint32_t x3 = min((int32_t)x+1, gWidth-1);
+    uint32_t x4 = min((int32_t)x+2, gWidth-1);
+
+    uint32_t y0 = max((int32_t)y-2, 0);
+    uint32_t y1 = max((int32_t)y-1, 0);
+    uint32_t y2 = y;
+    uint32_t y3 = min((int32_t)y+1, gHeight-1);
+    uint32_t y4 = min((int32_t)y+2, gHeight-1);
+
+    float4 p0 = rsGetElementAt_float4(gIn, x0, y0) * gCoeffs[0]
+              + rsGetElementAt_float4(gIn, x1, y0) * gCoeffs[1]
+              + rsGetElementAt_float4(gIn, x2, y0) * gCoeffs[2]
+              + rsGetElementAt_float4(gIn, x3, y0) * gCoeffs[3]
+              + rsGetElementAt_float4(gIn, x4, y0) * gCoeffs[4];
+
+    float4 p1 = rsGetElementAt_float4(gIn, x0, y1) * gCoeffs[5]
+              + rsGetElementAt_float4(gIn, x1, y1) * gCoeffs[6]
+              + rsGetElementAt_float4(gIn, x2, y1) * gCoeffs[7]
+              + rsGetElementAt_float4(gIn, x3, y1) * gCoeffs[8]
+              + rsGetElementAt_float4(gIn, x4, y1) * gCoeffs[9];
+
+    float4 p2 = rsGetElementAt_float4(gIn, x0, y2) * gCoeffs[10]
+              + rsGetElementAt_float4(gIn, x1, y2) * gCoeffs[11]
+              + rsGetElementAt_float4(gIn, x2, y2) * gCoeffs[12]
+              + rsGetElementAt_float4(gIn, x3, y2) * gCoeffs[13]
+              + rsGetElementAt_float4(gIn, x4, y2) * gCoeffs[14];
+
+    float4 p3 = rsGetElementAt_float4(gIn, x0, y3) * gCoeffs[15]
+              + rsGetElementAt_float4(gIn, x1, y3) * gCoeffs[16]
+              + rsGetElementAt_float4(gIn, x2, y3) * gCoeffs[17]
+              + rsGetElementAt_float4(gIn, x3, y3) * gCoeffs[18]
+              + rsGetElementAt_float4(gIn, x4, y3) * gCoeffs[19];
+
+    float4 p4 = rsGetElementAt_float4(gIn, x0, y4) * gCoeffs[20]
+              + rsGetElementAt_float4(gIn, x1, y4) * gCoeffs[21]
+              + rsGetElementAt_float4(gIn, x2, y4) * gCoeffs[22]
+              + rsGetElementAt_float4(gIn, x3, y4) * gCoeffs[23]
+              + rsGetElementAt_float4(gIn, x4, y4) * gCoeffs[24];
+
+    return p0 + p1 + p2 + p3 + p4;
+}
+
+float3 __attribute__((kernel)) convolve_F3(uint32_t x, uint32_t y) {
+    uint32_t x0 = max((int32_t)x-2, 0);
+    uint32_t x1 = max((int32_t)x-1, 0);
+    uint32_t x2 = x;
+    uint32_t x3 = min((int32_t)x+1, gWidth-1);
+    uint32_t x4 = min((int32_t)x+2, gWidth-1);
+
+    uint32_t y0 = max((int32_t)y-2, 0);
+    uint32_t y1 = max((int32_t)y-1, 0);
+    uint32_t y2 = y;
+    uint32_t y3 = min((int32_t)y+1, gHeight-1);
+    uint32_t y4 = min((int32_t)y+2, gHeight-1);
+
+    float3 p0 = rsGetElementAt_float3(gIn, x0, y0) * gCoeffs[0]
+              + rsGetElementAt_float3(gIn, x1, y0) * gCoeffs[1]
+              + rsGetElementAt_float3(gIn, x2, y0) * gCoeffs[2]
+              + rsGetElementAt_float3(gIn, x3, y0) * gCoeffs[3]
+              + rsGetElementAt_float3(gIn, x4, y0) * gCoeffs[4];
+
+    float3 p1 = rsGetElementAt_float3(gIn, x0, y1) * gCoeffs[5]
+              + rsGetElementAt_float3(gIn, x1, y1) * gCoeffs[6]
+              + rsGetElementAt_float3(gIn, x2, y1) * gCoeffs[7]
+              + rsGetElementAt_float3(gIn, x3, y1) * gCoeffs[8]
+              + rsGetElementAt_float3(gIn, x4, y1) * gCoeffs[9];
+
+    float3 p2 = rsGetElementAt_float3(gIn, x0, y2) * gCoeffs[10]
+              + rsGetElementAt_float3(gIn, x1, y2) * gCoeffs[11]
+              + rsGetElementAt_float3(gIn, x2, y2) * gCoeffs[12]
+              + rsGetElementAt_float3(gIn, x3, y2) * gCoeffs[13]
+              + rsGetElementAt_float3(gIn, x4, y2) * gCoeffs[14];
+
+    float3 p3 = rsGetElementAt_float3(gIn, x0, y3) * gCoeffs[15]
+              + rsGetElementAt_float3(gIn, x1, y3) * gCoeffs[16]
+              + rsGetElementAt_float3(gIn, x2, y3) * gCoeffs[17]
+              + rsGetElementAt_float3(gIn, x3, y3) * gCoeffs[18]
+              + rsGetElementAt_float3(gIn, x4, y3) * gCoeffs[19];
+
+    float3 p4 = rsGetElementAt_float3(gIn, x0, y4) * gCoeffs[20]
+              + rsGetElementAt_float3(gIn, x1, y4) * gCoeffs[21]
+              + rsGetElementAt_float3(gIn, x2, y4) * gCoeffs[22]
+              + rsGetElementAt_float3(gIn, x3, y4) * gCoeffs[23]
+              + rsGetElementAt_float3(gIn, x4, y4) * gCoeffs[24];
+
+    return p0 + p1 + p2 + p3 + p4;
+}
+
+float2 __attribute__((kernel)) convolve_F2(uint32_t x, uint32_t y) {
+    uint32_t x0 = max((int32_t)x-2, 0);
+    uint32_t x1 = max((int32_t)x-1, 0);
+    uint32_t x2 = x;
+    uint32_t x3 = min((int32_t)x+1, gWidth-1);
+    uint32_t x4 = min((int32_t)x+2, gWidth-1);
+
+    uint32_t y0 = max((int32_t)y-2, 0);
+    uint32_t y1 = max((int32_t)y-1, 0);
+    uint32_t y2 = y;
+    uint32_t y3 = min((int32_t)y+1, gHeight-1);
+    uint32_t y4 = min((int32_t)y+2, gHeight-1);
+
+    float2 p0 = rsGetElementAt_float2(gIn, x0, y0) * gCoeffs[0]
+              + rsGetElementAt_float2(gIn, x1, y0) * gCoeffs[1]
+              + rsGetElementAt_float2(gIn, x2, y0) * gCoeffs[2]
+              + rsGetElementAt_float2(gIn, x3, y0) * gCoeffs[3]
+              + rsGetElementAt_float2(gIn, x4, y0) * gCoeffs[4];
+
+    float2 p1 = rsGetElementAt_float2(gIn, x0, y1) * gCoeffs[5]
+              + rsGetElementAt_float2(gIn, x1, y1) * gCoeffs[6]
+              + rsGetElementAt_float2(gIn, x2, y1) * gCoeffs[7]
+              + rsGetElementAt_float2(gIn, x3, y1) * gCoeffs[8]
+              + rsGetElementAt_float2(gIn, x4, y1) * gCoeffs[9];
+
+    float2 p2 = rsGetElementAt_float2(gIn, x0, y2) * gCoeffs[10]
+              + rsGetElementAt_float2(gIn, x1, y2) * gCoeffs[11]
+              + rsGetElementAt_float2(gIn, x2, y2) * gCoeffs[12]
+              + rsGetElementAt_float2(gIn, x3, y2) * gCoeffs[13]
+              + rsGetElementAt_float2(gIn, x4, y2) * gCoeffs[14];
+
+    float2 p3 = rsGetElementAt_float2(gIn, x0, y3) * gCoeffs[15]
+              + rsGetElementAt_float2(gIn, x1, y3) * gCoeffs[16]
+              + rsGetElementAt_float2(gIn, x2, y3) * gCoeffs[17]
+              + rsGetElementAt_float2(gIn, x3, y3) * gCoeffs[18]
+              + rsGetElementAt_float2(gIn, x4, y3) * gCoeffs[19];
+
+    float2 p4 = rsGetElementAt_float2(gIn, x0, y4) * gCoeffs[20]
+              + rsGetElementAt_float2(gIn, x1, y4) * gCoeffs[21]
+              + rsGetElementAt_float2(gIn, x2, y4) * gCoeffs[22]
+              + rsGetElementAt_float2(gIn, x3, y4) * gCoeffs[23]
+              + rsGetElementAt_float2(gIn, x4, y4) * gCoeffs[24];
+
+    return p0 + p1 + p2 + p3 + p4;
+}
+
+float __attribute__((kernel)) convolve_F1(uint32_t x, uint32_t y) {
+    uint32_t x0 = max((int32_t)x-2, 0);
+    uint32_t x1 = max((int32_t)x-1, 0);
+    uint32_t x2 = x;
+    uint32_t x3 = min((int32_t)x+1, gWidth-1);
+    uint32_t x4 = min((int32_t)x+2, gWidth-1);
+
+    uint32_t y0 = max((int32_t)y-2, 0);
+    uint32_t y1 = max((int32_t)y-1, 0);
+    uint32_t y2 = y;
+    uint32_t y3 = min((int32_t)y+1, gHeight-1);
+    uint32_t y4 = min((int32_t)y+2, gHeight-1);
+
+    float p0 = rsGetElementAt_float(gIn, x0, y0) * gCoeffs[0]
+             + rsGetElementAt_float(gIn, x1, y0) * gCoeffs[1]
+             + rsGetElementAt_float(gIn, x2, y0) * gCoeffs[2]
+             + rsGetElementAt_float(gIn, x3, y0) * gCoeffs[3]
+             + rsGetElementAt_float(gIn, x4, y0) * gCoeffs[4];
+
+    float p1 = rsGetElementAt_float(gIn, x0, y1) * gCoeffs[5]
+             + rsGetElementAt_float(gIn, x1, y1) * gCoeffs[6]
+             + rsGetElementAt_float(gIn, x2, y1) * gCoeffs[7]
+             + rsGetElementAt_float(gIn, x3, y1) * gCoeffs[8]
+             + rsGetElementAt_float(gIn, x4, y1) * gCoeffs[9];
+
+    float p2 = rsGetElementAt_float(gIn, x0, y2) * gCoeffs[10]
+             + rsGetElementAt_float(gIn, x1, y2) * gCoeffs[11]
+             + rsGetElementAt_float(gIn, x2, y2) * gCoeffs[12]
+             + rsGetElementAt_float(gIn, x3, y2) * gCoeffs[13]
+             + rsGetElementAt_float(gIn, x4, y2) * gCoeffs[14];
+
+    float p3 = rsGetElementAt_float(gIn, x0, y3) * gCoeffs[15]
+             + rsGetElementAt_float(gIn, x1, y3) * gCoeffs[16]
+             + rsGetElementAt_float(gIn, x2, y3) * gCoeffs[17]
+             + rsGetElementAt_float(gIn, x3, y3) * gCoeffs[18]
+             + rsGetElementAt_float(gIn, x4, y3) * gCoeffs[19];
+
+    float p4 = rsGetElementAt_float(gIn, x0, y4) * gCoeffs[20]
+             + rsGetElementAt_float(gIn, x1, y4) * gCoeffs[21]
+             + rsGetElementAt_float(gIn, x2, y4) * gCoeffs[22]
+             + rsGetElementAt_float(gIn, x3, y4) * gCoeffs[23]
+             + rsGetElementAt_float(gIn, x4, y4) * gCoeffs[24];
+
+    return p0 + p1 + p2 + p3 + p4;
+}
+
+
+
diff --git a/tests/src/android/renderscript/cts/is_object.rs b/tests/src/android/renderscript/cts/is_object.rs
new file mode 100644
index 0000000..da28240
--- /dev/null
+++ b/tests/src/android/renderscript/cts/is_object.rs
@@ -0,0 +1,47 @@
+#pragma version(1)
+#pragma rs java_package_name(android.renderscript.cts)
+
+typedef struct _object_allocation_input {
+    rs_allocation allocation;
+} object_allocation_input;
+
+void is_object_allocation( const object_allocation_input *in, int *out)
+{
+    *out = rsIsObject(in->allocation)==false ? 0 : 1;
+}
+
+typedef struct _object_element_input {
+    rs_element element;
+} object_element_input;
+
+void is_object_element( const object_element_input *in, int *out)
+{
+    *out = rsIsObject(in->element)==false ? 0 : 1;
+}
+
+typedef struct _object_sampler_input {
+    rs_sampler sampler;
+} object_sampler_input;
+
+void is_object_sampler( const object_sampler_input *in, int *out)
+{
+    *out = rsIsObject(in->sampler)==false ? 0 : 1;
+}
+
+typedef struct _object_script_input {
+    rs_script script;
+} object_script_input;
+
+void is_object_script( const object_script_input *in, int *out)
+{
+    *out = rsIsObject(in->script)==false ? 0 : 1;
+}
+
+typedef struct _object_type_input {
+    rs_type type;
+} object_type_input;
+
+void is_object_type( const object_type_input *in, int *out)
+{
+    *out = rsIsObject(in->type)==false ? 0 : 1;
+}
diff --git a/tests/src/android/renderscript/cts/log10_f32.rs b/tests/src/android/renderscript/cts/log10_f32.rs
new file mode 100644
index 0000000..dbb5150
--- /dev/null
+++ b/tests/src/android/renderscript/cts/log10_f32.rs
@@ -0,0 +1,18 @@
+#pragma version(1)
+#pragma rs java_package_name(android.renderscript.cts)
+
+void log10_f32_1 (const float* in, float* out) {
+    *out = log10(*in);
+}
+
+void log10_f32_2 (const float2* in, float2* out) {
+    *out = log10(*in);
+}
+
+void log10_f32_3 (const float3* in, float3* out) {
+    *out = log10(*in);
+}
+
+void log10_f32_4 (const float4* in, float4* out) {
+    *out = log10(*in);
+}
diff --git a/tests/src/android/renderscript/cts/log10_f32_relaxed.rs b/tests/src/android/renderscript/cts/log10_f32_relaxed.rs
new file mode 100644
index 0000000..bedfa6d
--- /dev/null
+++ b/tests/src/android/renderscript/cts/log10_f32_relaxed.rs
@@ -0,0 +1,2 @@
+#include "log10_f32.rs"
+#pragma rs_fp_relaxed
diff --git a/tests/src/android/renderscript/cts/log1p_f32.rs b/tests/src/android/renderscript/cts/log1p_f32.rs
new file mode 100644
index 0000000..3c725fe
--- /dev/null
+++ b/tests/src/android/renderscript/cts/log1p_f32.rs
@@ -0,0 +1,18 @@
+#pragma version(1)
+#pragma rs java_package_name(android.renderscript.cts)
+
+void log1p_f32_1 (const float* in, float* out) {
+    *out = log1p(*in);
+}
+
+void log1p_f32_2 (const float2* in, float2* out) {
+    *out = log1p(*in);
+}
+
+void log1p_f32_3 (const float3* in, float3* out) {
+    *out = log1p(*in);
+}
+
+void log1p_f32_4 (const float4* in, float4* out) {
+    *out = log1p(*in);
+}
diff --git a/tests/src/android/renderscript/cts/log1p_f32_relaxed.rs b/tests/src/android/renderscript/cts/log1p_f32_relaxed.rs
new file mode 100644
index 0000000..c3aed11
--- /dev/null
+++ b/tests/src/android/renderscript/cts/log1p_f32_relaxed.rs
@@ -0,0 +1,2 @@
+#include "log1p_f32.rs"
+#pragma rs_fp_relaxed
diff --git a/tests/src/android/renderscript/cts/log2_f32.rs b/tests/src/android/renderscript/cts/log2_f32.rs
new file mode 100644
index 0000000..2ed2b98
--- /dev/null
+++ b/tests/src/android/renderscript/cts/log2_f32.rs
@@ -0,0 +1,18 @@
+#pragma version(1)
+#pragma rs java_package_name(android.renderscript.cts)
+
+void log2_f32_1 (const float* in, float* out) {
+    *out = log2(*in);
+}
+
+void log2_f32_2 (const float2* in, float2* out) {
+    *out = log2(*in);
+}
+
+void log2_f32_3 (const float3* in, float3* out) {
+    *out = log2(*in);
+}
+
+void log2_f32_4 (const float4* in, float4* out) {
+    *out = log2(*in);
+}
diff --git a/tests/src/android/renderscript/cts/log2_f32_relaxed.rs b/tests/src/android/renderscript/cts/log2_f32_relaxed.rs
new file mode 100644
index 0000000..7e0883a
--- /dev/null
+++ b/tests/src/android/renderscript/cts/log2_f32_relaxed.rs
@@ -0,0 +1,2 @@
+#include "log2_f32.rs"
+#pragma rs_fp_relaxed
diff --git a/tests/src/android/renderscript/cts/log_f32.rs b/tests/src/android/renderscript/cts/log_f32.rs
new file mode 100644
index 0000000..14052a2
--- /dev/null
+++ b/tests/src/android/renderscript/cts/log_f32.rs
@@ -0,0 +1,18 @@
+#pragma version(1)
+#pragma rs java_package_name(android.renderscript.cts)
+
+void log_f32_1 (const float* in, float* out) {
+    *out = log(*in);
+}
+
+void log_f32_2 (const float2* in, float2* out) {
+    *out = log(*in);
+}
+
+void log_f32_3 (const float3* in, float3* out) {
+    *out = log(*in);
+}
+
+void log_f32_4 (const float4* in, float4* out) {
+    *out = log(*in);
+}
diff --git a/tests/src/android/renderscript/cts/log_f32_relaxed.rs b/tests/src/android/renderscript/cts/log_f32_relaxed.rs
new file mode 100644
index 0000000..d66d3c9
--- /dev/null
+++ b/tests/src/android/renderscript/cts/log_f32_relaxed.rs
@@ -0,0 +1,2 @@
+#include "log_f32.rs"
+#pragma rs_fp_relaxed
diff --git a/tests/src/android/renderscript/cts/logb_f32.rs b/tests/src/android/renderscript/cts/logb_f32.rs
new file mode 100644
index 0000000..1b3acfa
--- /dev/null
+++ b/tests/src/android/renderscript/cts/logb_f32.rs
@@ -0,0 +1,18 @@
+#pragma version(1)
+#pragma rs java_package_name(android.renderscript.cts)
+
+void logb_f32_1 (const float* in, float* out) {
+    *out = logb(*in);
+}
+
+void logb_f32_2 (const float2* in, float2* out) {
+    *out = logb(*in);
+}
+
+void logb_f32_3 (const float3* in, float3* out) {
+    *out = logb(*in);
+}
+
+void logb_f32_4 (const float4* in, float4* out) {
+    *out = logb(*in);
+}
diff --git a/tests/src/android/renderscript/cts/logb_f32_relaxed.rs b/tests/src/android/renderscript/cts/logb_f32_relaxed.rs
new file mode 100644
index 0000000..9b906dc
--- /dev/null
+++ b/tests/src/android/renderscript/cts/logb_f32_relaxed.rs
@@ -0,0 +1,2 @@
+#include "logb_f32.rs"
+#pragma rs_fp_relaxed
diff --git a/tests/src/android/renderscript/cts/mad_f32.rs b/tests/src/android/renderscript/cts/mad_f32.rs
new file mode 100644
index 0000000..fc5081b
--- /dev/null
+++ b/tests/src/android/renderscript/cts/mad_f32.rs
@@ -0,0 +1,42 @@
+#pragma version(1)
+#pragma rs java_package_name(android.renderscript.cts)
+
+struct mad_input_f32 {
+    float x;
+    float y;
+    float z;
+};
+
+void mad_f32_1(const struct mad_input_f32 *param, float *out) {
+    *out = mad(param->x, param->y, param->z);
+}
+
+struct mad_input_f32_2 {
+    float2 x;
+    float2 y;
+    float2 z;
+};
+
+void mad_f32_2(const struct mad_input_f32_2 *param, float2 *out) {
+    *out = mad(param->x, param->y, param->z);
+}
+
+struct mad_input_f32_3 {
+    float3 x;
+    float3 y;
+    float3 z;
+};
+
+void mad_f32_3(const struct mad_input_f32_3 *param, float3 *out) {
+    *out = mad(param->x, param->y, param->z);
+}
+
+struct mad_input_f32_4 {
+    float4 x;
+    float4 y;
+    float4 z;
+};
+
+void mad_f32_4(const struct mad_input_f32_4 *param, float4 *out) {
+    *out = mad(param->x, param->y, param->z);
+}
diff --git a/tests/src/android/renderscript/cts/mad_f32_relaxed.rs b/tests/src/android/renderscript/cts/mad_f32_relaxed.rs
new file mode 100644
index 0000000..36d8306
--- /dev/null
+++ b/tests/src/android/renderscript/cts/mad_f32_relaxed.rs
@@ -0,0 +1,2 @@
+#include "mad_f32.rs"
+#pragma rs_fp_relaxed
diff --git a/tests/src/android/renderscript/cts/nextafter_f32.rs b/tests/src/android/renderscript/cts/nextafter_f32.rs
new file mode 100644
index 0000000..04ce73a4
--- /dev/null
+++ b/tests/src/android/renderscript/cts/nextafter_f32.rs
@@ -0,0 +1,38 @@
+#pragma version(1)
+#pragma rs java_package_name(android.renderscript.cts)
+
+typedef struct InputData {
+    float a;
+    float b;
+} InputData;
+
+void nextafter_f32_1(const InputData *in, float *out) {
+    *out = nextafter (in->a, in->b);
+}
+
+typedef struct InputData_2 {
+    float2 a;
+    float2 b;
+} InputData_2;
+
+void nextafter_f32_2(const InputData_2 *in, float2 *out) {
+    *out = nextafter (in->a, in->b);
+}
+
+typedef struct InputData_3 {
+    float3 a;
+    float3 b;
+} InputData_3;
+
+void nextafter_f32_3(const InputData_3 *in, float3 *out) {
+    *out = nextafter (in->a, in->b);
+}
+
+typedef struct InputData_4 {
+    float4 a;
+    float4 b;
+} InputData_4;
+
+void nextafter_f32_4(const InputData_4 *in, float4 *out) {
+    *out = nextafter (in->a, in->b);
+}
diff --git a/tests/src/android/renderscript/cts/nextafter_f32_relaxed.rs b/tests/src/android/renderscript/cts/nextafter_f32_relaxed.rs
new file mode 100644
index 0000000..5c6edd5
--- /dev/null
+++ b/tests/src/android/renderscript/cts/nextafter_f32_relaxed.rs
@@ -0,0 +1,2 @@
+#include "nextafter_f32.rs"
+#pragma rs_fp_relaxed
diff --git a/tests/src/android/renderscript/cts/pow_f32.rs b/tests/src/android/renderscript/cts/pow_f32.rs
new file mode 100644
index 0000000..426d4b1
--- /dev/null
+++ b/tests/src/android/renderscript/cts/pow_f32.rs
@@ -0,0 +1,38 @@
+#pragma version(1)
+#pragma rs java_package_name(android.renderscript.cts)
+
+typedef struct PowInputData {
+    float base;
+    float expo;
+} PowInputData;
+
+void pow_f32_1(const PowInputData *in, float *out) {
+    *out = pow(in->base, in->expo);
+}
+
+typedef struct PowInputData_2 {
+    float2 base;
+    float2 expo;
+} PowInputData_2;
+
+void pow_f32_2(const PowInputData_2 *in, float2 *out) {
+    *out = pow(in->base, in->expo);
+}
+
+typedef struct PowInputData_3 {
+    float3 base;
+    float3 expo;
+} PowInputData_3;
+
+void pow_f32_3(const PowInputData_3 *in, float3 *out) {
+    *out = pow(in->base, in->expo);
+}
+
+typedef struct PowInputData_4 {
+    float4 base;
+    float4 expo;
+} PowInputData_4;
+
+void pow_f32_4(const PowInputData_4 *in, float4 *out) {
+    *out = pow(in->base, in->expo);
+}
diff --git a/tests/src/android/renderscript/cts/pow_f32_relaxed.rs b/tests/src/android/renderscript/cts/pow_f32_relaxed.rs
new file mode 100644
index 0000000..5da7048
--- /dev/null
+++ b/tests/src/android/renderscript/cts/pow_f32_relaxed.rs
@@ -0,0 +1,2 @@
+#include "pow_f32.rs"
+#pragma rs_fp_relaxed
diff --git a/tests/src/android/renderscript/cts/pown_f32.rs b/tests/src/android/renderscript/cts/pown_f32.rs
new file mode 100644
index 0000000..fa066d0
--- /dev/null
+++ b/tests/src/android/renderscript/cts/pown_f32.rs
@@ -0,0 +1,26 @@
+#pragma version(1)
+#pragma rs java_package_name(android.renderscript.cts)
+
+rs_allocation n1;
+
+void pown_f32_1(const float *in, float *out, uint32_t x) {
+    *out = pown(*in, *(int *)rsGetElementAt(n1,x));
+}
+
+rs_allocation n2;
+
+void pown_f32_2(const float2 *in, float2 *out, uint32_t x) {
+    *out = pown(*in, *(int2 *)rsGetElementAt(n2,x));
+}
+
+rs_allocation n3;
+
+void pown_f32_3(const float3 *in, float3 *out, uint32_t x) {
+    *out = pown(*in, *(int3 *)rsGetElementAt(n3,x));
+}
+
+rs_allocation n4;
+
+void pown_f32_4(const float4 *in, float4 *out, uint32_t x) {
+    *out = pown(*in, *(int4 *)rsGetElementAt(n4,x));
+}
diff --git a/tests/src/android/renderscript/cts/pown_f32_relaxed.rs b/tests/src/android/renderscript/cts/pown_f32_relaxed.rs
new file mode 100644
index 0000000..bdc4b47
--- /dev/null
+++ b/tests/src/android/renderscript/cts/pown_f32_relaxed.rs
@@ -0,0 +1,2 @@
+#include "pown_f32.rs"
+#pragma rs_fp_relaxed
diff --git a/tests/src/android/renderscript/cts/powr_f32.rs b/tests/src/android/renderscript/cts/powr_f32.rs
new file mode 100644
index 0000000..6eb36b0
--- /dev/null
+++ b/tests/src/android/renderscript/cts/powr_f32.rs
@@ -0,0 +1,38 @@
+#pragma version(1)
+#pragma rs java_package_name(android.renderscript.cts)
+
+typedef struct PowInputData {
+    float base;
+    float expo;
+} PowInputData;
+
+void powr_f32_1(const PowInputData *in, float *out) {
+    *out = powr(in->base, in->expo);
+}
+
+typedef struct PowInputData_2 {
+    float2 base;
+    float2 expo;
+} PowInputData_2;
+
+void powr_f32_2(const PowInputData_2 *in, float2 *out) {
+    *out = powr(in->base, in->expo);
+}
+
+typedef struct PowInputData_3 {
+    float3 base;
+    float3 expo;
+} PowInputData_3;
+
+void powr_f32_3(const PowInputData_3 *in, float3 *out) {
+    *out = powr(in->base, in->expo);
+}
+
+typedef struct PowInputData_4 {
+    float4 base;
+    float4 expo;
+} PowInputData_4;
+
+void powr_f32_4(const PowInputData_4 *in, float4 *out) {
+    *out = powr(in->base, in->expo);
+}
diff --git a/tests/src/android/renderscript/cts/powr_f32_relaxed.rs b/tests/src/android/renderscript/cts/powr_f32_relaxed.rs
new file mode 100644
index 0000000..b8690af
--- /dev/null
+++ b/tests/src/android/renderscript/cts/powr_f32_relaxed.rs
@@ -0,0 +1,2 @@
+#include "powr_f32.rs"
+#pragma rs_fp_relaxed
diff --git a/tests/src/android/renderscript/cts/radians_f32.rs b/tests/src/android/renderscript/cts/radians_f32.rs
new file mode 100644
index 0000000..1aa743e
--- /dev/null
+++ b/tests/src/android/renderscript/cts/radians_f32.rs
@@ -0,0 +1,18 @@
+#pragma version(1)
+#pragma rs java_package_name(android.renderscript.cts)
+
+void radians_f32_1(const float* in, float* out) {
+    *out = radians (*in);
+}
+
+void radians_f32_2(const float2* in, float2* out) {
+    *out = radians(*in);
+}
+
+void radians_f32_3(const float3* in, float3* out) {
+    *out = radians(*in);
+}
+
+void radians_f32_4(const float4* in, float4* out) {
+    *out = radians(*in);
+}
diff --git a/tests/src/android/renderscript/cts/radians_f32_relaxed.rs b/tests/src/android/renderscript/cts/radians_f32_relaxed.rs
new file mode 100644
index 0000000..4ab3070
--- /dev/null
+++ b/tests/src/android/renderscript/cts/radians_f32_relaxed.rs
@@ -0,0 +1,2 @@
+#include "radians_f32.rs"
+#pragma rs_fp_relaxed
diff --git a/tests/src/android/renderscript/cts/remainder_f32.rs b/tests/src/android/renderscript/cts/remainder_f32.rs
new file mode 100644
index 0000000..d08a034
--- /dev/null
+++ b/tests/src/android/renderscript/cts/remainder_f32.rs
@@ -0,0 +1,38 @@
+#pragma version(1)
+#pragma rs java_package_name(android.renderscript.cts)
+
+struct remainder_f32 {
+    float num;
+    float den;
+};
+
+void remainder_f32_1 (const struct remainder_f32* in, float* out) {
+    *out = remainder(in->num, in->den);
+}
+
+struct remainder_f32_2 {
+    float2 num;
+    float2 den;
+};
+
+void remainder_f32_2 (const struct remainder_f32_2* in, float2* out) {
+    *out = remainder(in->num, in->den);
+}
+
+struct remainder_f32_3 {
+    float3 num;
+    float3 den;
+};
+
+void remainder_f32_3 (const struct remainder_f32_3* in, float3* out) {
+    *out = remainder(in->num, in->den);
+}
+
+struct remainder_f32_4 {
+    float4 num;
+    float4 den;
+};
+
+void remainder_f32_4 (const struct remainder_f32_4* in, float4* out) {
+    *out = remainder(in->num, in->den);
+}
diff --git a/tests/src/android/renderscript/cts/remainder_f32_relaxed.rs b/tests/src/android/renderscript/cts/remainder_f32_relaxed.rs
new file mode 100644
index 0000000..d546e50
--- /dev/null
+++ b/tests/src/android/renderscript/cts/remainder_f32_relaxed.rs
@@ -0,0 +1,2 @@
+#include "remainder_f32.rs"
+#pragma rs_fp_relaxed
diff --git a/tests/src/android/renderscript/cts/rint_f32.rs b/tests/src/android/renderscript/cts/rint_f32.rs
new file mode 100644
index 0000000..46ef8b1
--- /dev/null
+++ b/tests/src/android/renderscript/cts/rint_f32.rs
@@ -0,0 +1,18 @@
+#pragma version(1)
+#pragma rs java_package_name(android.renderscript.cts)
+
+void rint_f32_1 (const float* in, float* out) {
+    *out = rint(*in);
+}
+
+void rint_f32_2 (const float2* in, float2* out) {
+    *out = rint(*in);
+}
+
+void rint_f32_3 (const float3* in, float3* out) {
+    *out = rint(*in);
+}
+
+void rint_f32_4 (const float4* in, float4* out) {
+    *out = rint(*in);
+}
diff --git a/tests/src/android/renderscript/cts/rint_f32_relaxed.rs b/tests/src/android/renderscript/cts/rint_f32_relaxed.rs
new file mode 100644
index 0000000..e9b4950
--- /dev/null
+++ b/tests/src/android/renderscript/cts/rint_f32_relaxed.rs
@@ -0,0 +1,2 @@
+#include "rint_f32.rs"
+#pragma rs_fp_relaxed
diff --git a/tests/src/android/renderscript/cts/rootn_f32.rs b/tests/src/android/renderscript/cts/rootn_f32.rs
new file mode 100644
index 0000000..1c60ea9
--- /dev/null
+++ b/tests/src/android/renderscript/cts/rootn_f32.rs
@@ -0,0 +1,26 @@
+#pragma version(1)
+#pragma rs java_package_name(android.renderscript.cts)
+
+rs_allocation n1;
+
+void rootn_f32_1(const float *in, float *out, uint32_t x) {
+    *out = rootn(*in, *(int *)rsGetElementAt(n1,x));
+}
+
+rs_allocation n2;
+
+void rootn_f32_2(const float2 *in, float2 *out, uint32_t x) {
+    *out = rootn(*in, *(int2 *)rsGetElementAt(n2,x));
+}
+
+rs_allocation n3;
+
+void rootn_f32_3(const float3 *in, float3 *out, uint32_t x) {
+    *out = rootn(*in, *(int3 *)rsGetElementAt(n3,x));
+}
+
+rs_allocation n4;
+
+void rootn_f32_4(const float4 *in, float4 *out, uint32_t x) {
+    *out = rootn(*in, *(int4 *)rsGetElementAt(n4,x));
+}
diff --git a/tests/src/android/renderscript/cts/rootn_f32_relaxed.rs b/tests/src/android/renderscript/cts/rootn_f32_relaxed.rs
new file mode 100644
index 0000000..f6509ae
--- /dev/null
+++ b/tests/src/android/renderscript/cts/rootn_f32_relaxed.rs
@@ -0,0 +1,2 @@
+#include "rootn_f32.rs"
+#pragma rs_fp_relaxed
diff --git a/tests/src/android/renderscript/cts/round_f32.rs b/tests/src/android/renderscript/cts/round_f32.rs
new file mode 100644
index 0000000..60b5e8d
--- /dev/null
+++ b/tests/src/android/renderscript/cts/round_f32.rs
@@ -0,0 +1,18 @@
+#pragma version(1)
+#pragma rs java_package_name(android.renderscript.cts)
+
+void round_f32_1 (const float* in, float* out) {
+    *out = round(*in);
+}
+
+void round_f32_2 (const float2* in , float2* out) {
+    *out = round(*in);
+}
+
+void round_f32_3 (const float3* in, float3* out) {
+    *out = round(*in);
+}
+
+void round_f32_4 (const float4* in , float4* out) {
+    *out = round(*in);
+}
diff --git a/tests/src/android/renderscript/cts/round_f32_relaxed.rs b/tests/src/android/renderscript/cts/round_f32_relaxed.rs
new file mode 100644
index 0000000..026515e
--- /dev/null
+++ b/tests/src/android/renderscript/cts/round_f32_relaxed.rs
@@ -0,0 +1,2 @@
+#include "round_f32.rs"
+#pragma rs_fp_relaxed
diff --git a/tests/src/android/renderscript/cts/rs_frac_f32.rs b/tests/src/android/renderscript/cts/rs_frac_f32.rs
new file mode 100644
index 0000000..3e0e49a
--- /dev/null
+++ b/tests/src/android/renderscript/cts/rs_frac_f32.rs
@@ -0,0 +1,6 @@
+#pragma version(1)
+#pragma rs java_package_name(android.renderscript.cts)
+
+void root(const float *in, float *out) {
+    *out = rsFrac(*in);
+}
diff --git a/tests/src/android/renderscript/cts/rs_frac_f32_relaxed.rs b/tests/src/android/renderscript/cts/rs_frac_f32_relaxed.rs
new file mode 100644
index 0000000..d93b8e2
--- /dev/null
+++ b/tests/src/android/renderscript/cts/rs_frac_f32_relaxed.rs
@@ -0,0 +1,2 @@
+#include "rs_frac_f32.rs"
+#pragma rs_fp_relaxed
diff --git a/tests/src/android/renderscript/cts/rs_pack_color_to_8888.rs b/tests/src/android/renderscript/cts/rs_pack_color_to_8888.rs
new file mode 100644
index 0000000..415e2df
--- /dev/null
+++ b/tests/src/android/renderscript/cts/rs_pack_color_to_8888.rs
@@ -0,0 +1,17 @@
+#pragma version(1)
+#pragma rs java_package_name(android.renderscript.cts)
+
+void pack_color_to_8888_rgb (const float3* in, uchar4* out) {
+    *out = rsPackColorTo8888(in->r, in->g, in->b);
+}
+
+void pack_color_to_8888_rgba (const float4* in, uchar4* out) {
+    *out = rsPackColorTo8888(in->r, in->g, in->b, in->a);
+}
+void pack_color_to_8888_f32_3 (const float3* in, uchar4* out) {
+    *out = rsPackColorTo8888(*in);
+}
+
+void pack_color_to_8888_f32_4 (const float4* in, uchar4* out) {
+    *out = rsPackColorTo8888(*in);
+}
diff --git a/tests/src/android/renderscript/cts/rs_unpack_color_8888.rs b/tests/src/android/renderscript/cts/rs_unpack_color_8888.rs
new file mode 100644
index 0000000..b0dafa5
--- /dev/null
+++ b/tests/src/android/renderscript/cts/rs_unpack_color_8888.rs
@@ -0,0 +1,6 @@
+#pragma version(1)
+#pragma rs java_package_name(android.renderscript.cts)
+
+void root (const uchar4* in, float4* out) {
+    *out = rsUnpackColor8888(*in);
+}
diff --git a/tests/src/android/renderscript/cts/rsqrt_f32.rs b/tests/src/android/renderscript/cts/rsqrt_f32.rs
new file mode 100644
index 0000000..1e8f5a2
--- /dev/null
+++ b/tests/src/android/renderscript/cts/rsqrt_f32.rs
@@ -0,0 +1,18 @@
+#pragma version(1)
+#pragma rs java_package_name(android.renderscript.cts)
+
+void Rsqrt_f32_1 (const float* in, float* out) {
+    *out = rsqrt(*in);
+}
+
+void Rsqrt_f32_2 (const float2* in, float2* out) {
+    *out = rsqrt(*in);
+}
+
+void Rsqrt_f32_3 (const float3* in, float3* out) {
+    *out = rsqrt(*in);
+}
+
+void Rsqrt_f32_4 (const float4* in, float4* out) {
+    *out = rsqrt(*in);
+}
diff --git a/tests/src/android/renderscript/cts/rsqrt_f32_relaxed.rs b/tests/src/android/renderscript/cts/rsqrt_f32_relaxed.rs
new file mode 100644
index 0000000..1d7c08b
--- /dev/null
+++ b/tests/src/android/renderscript/cts/rsqrt_f32_relaxed.rs
@@ -0,0 +1,2 @@
+#include "rsqrt_f32.rs"
+#pragma rs_fp_relaxed
diff --git a/tests/src/android/renderscript/cts/sendToClientBlocking.rs b/tests/src/android/renderscript/cts/sendToClientBlocking.rs
new file mode 100644
index 0000000..3f4a419
--- /dev/null
+++ b/tests/src/android/renderscript/cts/sendToClientBlocking.rs
@@ -0,0 +1,13 @@
+#pragma version(1)
+#pragma rs java_package_name(android.renderscript.cts)
+
+int ID;
+int data;
+
+void callBack1Params() {
+    rsSendToClientBlocking(ID);
+}
+
+void callBack3Params() {
+    rsSendToClientBlocking(ID, &data, sizeof(data));
+}
diff --git a/tests/src/android/renderscript/cts/send_to_client.rs b/tests/src/android/renderscript/cts/send_to_client.rs
new file mode 100644
index 0000000..12c963e
--- /dev/null
+++ b/tests/src/android/renderscript/cts/send_to_client.rs
@@ -0,0 +1,11 @@
+#pragma version(1)
+#pragma rs java_package_name(android.renderscript.cts)
+
+void root(const int4* in) {
+    int id = in->x;
+    int data[4];
+    data[0] = in->y;
+    data[1] = in->z;
+    data[2] = in->w;
+    rsSendToClient(id, data, sizeof(data));
+}
diff --git a/tests/src/android/renderscript/cts/send_to_client_1.rs b/tests/src/android/renderscript/cts/send_to_client_1.rs
new file mode 100644
index 0000000..24c7222
--- /dev/null
+++ b/tests/src/android/renderscript/cts/send_to_client_1.rs
@@ -0,0 +1,6 @@
+#pragma version(1)
+#pragma rs java_package_name(android.renderscript.cts)
+
+void callback(int id){
+    rsSendToClient(id);
+}
\ No newline at end of file
diff --git a/tests/src/android/renderscript/cts/set_object.rs b/tests/src/android/renderscript/cts/set_object.rs
new file mode 100644
index 0000000..6a7ba95
--- /dev/null
+++ b/tests/src/android/renderscript/cts/set_object.rs
@@ -0,0 +1,57 @@
+#pragma version(1)
+#pragma rs java_package_name(android.renderscript.cts)
+
+typedef struct _set_object_allocation_input {
+    rs_allocation allocation;
+} set_object_allocation_input;
+
+void set_object_allocation(const set_object_allocation_input *in, int *out)
+{
+    rs_allocation dst;
+    rsSetObject(&dst,in->allocation);
+    *out = ( dst.p == in->allocation.p ? 1 : 0 );
+}
+
+typedef struct _set_object_element_input {
+    rs_element element;
+} set_object_element_input;
+
+void set_object_element(const set_object_element_input *in, int *out)
+{
+    rs_element dst;
+    rsSetObject(&dst,in->element);
+    *out = ( dst.p == in->element.p ? 1 : 0 );
+}
+
+typedef struct _set_object_sampler_input {
+    rs_sampler sampler;
+} set_object_sampler_input;
+
+void set_object_sampler(const set_object_sampler_input *in, int *out)
+{
+    rs_sampler dst;
+    rsSetObject(&dst,in->sampler);
+    *out = ( dst.p == in->sampler.p ? 1 : 0 );
+}
+
+typedef struct _set_object_script_input {
+    rs_script script;
+} set_object_script_input;
+
+void set_object_script(const set_object_script_input *in, int *out)
+{
+    rs_script dst;
+    rsSetObject(&dst,in->script);
+    *out = ( dst.p == in->script.p ? 1 : 0 );
+}
+
+typedef struct _set_object_type_input {
+    rs_type type;
+} set_object_type_input;
+
+void set_object_type(const set_object_type_input *in, int *out)
+{
+    rs_type dst;
+    rsSetObject(&dst,in->type);
+    *out = ( dst.p == in->type.p ? 1 : 0 );
+}
diff --git a/tests/src/android/renderscript/cts/sign_f32.rs b/tests/src/android/renderscript/cts/sign_f32.rs
new file mode 100644
index 0000000..f9edb90
--- /dev/null
+++ b/tests/src/android/renderscript/cts/sign_f32.rs
@@ -0,0 +1,18 @@
+#pragma version(1)
+#pragma rs java_package_name(android.renderscript.cts)
+
+void sign_f32_1(const float *in, float *out) {
+    *out = sign (*in);
+}
+
+void sign_f32_2(const float2 *in, float2 *out) {
+    *out = sign (*in);
+}
+
+void sign_f32_3(const float3 *in, float3 *out) {
+    *out = sign (*in);
+}
+
+void sign_f32_4(const float4 *in, float4 *out) {
+    *out = sign (*in);
+}
diff --git a/tests/src/android/renderscript/cts/sign_f32_relaxed.rs b/tests/src/android/renderscript/cts/sign_f32_relaxed.rs
new file mode 100644
index 0000000..2ea41e2
--- /dev/null
+++ b/tests/src/android/renderscript/cts/sign_f32_relaxed.rs
@@ -0,0 +1,2 @@
+#include "sign_f32.rs"
+#pragma rs_fp_relaxed
diff --git a/tests/src/android/renderscript/cts/sin_f32.rs b/tests/src/android/renderscript/cts/sin_f32.rs
new file mode 100644
index 0000000..91652bb
--- /dev/null
+++ b/tests/src/android/renderscript/cts/sin_f32.rs
@@ -0,0 +1,17 @@
+#pragma version(1)
+#pragma rs java_package_name(android.renderscript.cts)
+void sin_f32_1(const float *in, float *out) {
+    *out = sin(*in);
+}
+
+void sin_f32_2(const float2 *in, float2 *out) {
+    *out = sin(*in);
+}
+
+void sin_f32_3(const float3 *in, float3 *out) {
+    *out = sin(*in);
+}
+
+void sin_f32_4(const float4 *in, float4 *out) {
+    *out = sin(*in);
+}
diff --git a/tests/src/android/renderscript/cts/sin_f32_relaxed.rs b/tests/src/android/renderscript/cts/sin_f32_relaxed.rs
new file mode 100644
index 0000000..1ebf69e
--- /dev/null
+++ b/tests/src/android/renderscript/cts/sin_f32_relaxed.rs
@@ -0,0 +1,2 @@
+#include "sin_f32.rs"
+#pragma rs_fp_relaxed
diff --git a/tests/src/android/renderscript/cts/sinh_f32.rs b/tests/src/android/renderscript/cts/sinh_f32.rs
new file mode 100644
index 0000000..b785399
--- /dev/null
+++ b/tests/src/android/renderscript/cts/sinh_f32.rs
@@ -0,0 +1,17 @@
+#pragma version(1)
+#pragma rs java_package_name(android.renderscript.cts)
+void sinh_f32_1(const float *in, float *out) {
+    *out = sinh(*in);
+}
+
+void sinh_f32_2(const float2 *in, float2 *out) {
+    *out = sinh(*in);
+}
+
+void sinh_f32_3(const float3 *in, float3 *out) {
+    *out = sinh(*in);
+}
+
+void sinh_f32_4(const float4 *in, float4 *out) {
+    *out = sinh(*in);
+}
diff --git a/tests/src/android/renderscript/cts/sinh_f32_relaxed.rs b/tests/src/android/renderscript/cts/sinh_f32_relaxed.rs
new file mode 100644
index 0000000..ba1d5c7
--- /dev/null
+++ b/tests/src/android/renderscript/cts/sinh_f32_relaxed.rs
@@ -0,0 +1,2 @@
+#include "sinh_f32.rs"
+#pragma rs_fp_relaxed
diff --git a/tests/src/android/renderscript/cts/sqrt_f32.rs b/tests/src/android/renderscript/cts/sqrt_f32.rs
new file mode 100644
index 0000000..253f1c0
--- /dev/null
+++ b/tests/src/android/renderscript/cts/sqrt_f32.rs
@@ -0,0 +1,18 @@
+#pragma version(1)
+#pragma rs java_package_name(android.renderscript.cts)
+
+void sqrt_f32_1 (const float* in, float* out) {
+    *out = sqrt(*in);
+}
+
+void sqrt_f32_2 (const float2* in, float2* out) {
+    *out = sqrt(*in);
+}
+
+void sqrt_f32_3 (const float3* in, float3* out) {
+    *out = sqrt(*in);
+}
+
+void sqrt_f32_4 (const float4* in, float4* out) {
+    *out = sqrt(*in);
+}
diff --git a/tests/src/android/renderscript/cts/sqrt_f32_relaxed.rs b/tests/src/android/renderscript/cts/sqrt_f32_relaxed.rs
new file mode 100644
index 0000000..460ea63
--- /dev/null
+++ b/tests/src/android/renderscript/cts/sqrt_f32_relaxed.rs
@@ -0,0 +1,2 @@
+#include "sqrt_f32.rs"
+#pragma rs_fp_relaxed
diff --git a/tests/src/android/renderscript/cts/step_f32.rs b/tests/src/android/renderscript/cts/step_f32.rs
new file mode 100644
index 0000000..d2261b3
--- /dev/null
+++ b/tests/src/android/renderscript/cts/step_f32.rs
@@ -0,0 +1,38 @@
+#pragma version(1)
+#pragma rs java_package_name(android.renderscript.cts)
+
+struct step_input {
+    float x;
+    float y;
+};
+
+void step_f32_1(const struct step_input *in, float *out) {
+    *out = step(in->x, in->y);
+}
+
+struct step_2_input {
+    float2 x;
+    float2 y;
+};
+
+void step_f32_2(const struct step_2_input *in, float2 *out) {
+    *out = step(in->x, in->y);
+}
+
+struct step_3_input {
+    float3 x;
+    float3 y;
+};
+
+void step_f32_3(const struct step_3_input *in, float3 *out) {
+    *out = step(in->x, in->y);
+}
+
+struct step_4_input {
+    float4 x;
+    float4 y;
+};
+
+void step_f32_4(const struct step_4_input *in, float4 *out) {
+    *out = step(in->x, in->y);
+}
diff --git a/tests/src/android/renderscript/cts/step_f32_relaxed.rs b/tests/src/android/renderscript/cts/step_f32_relaxed.rs
new file mode 100644
index 0000000..c59b548
--- /dev/null
+++ b/tests/src/android/renderscript/cts/step_f32_relaxed.rs
@@ -0,0 +1,2 @@
+#include "step_f32.rs"
+#pragma rs_fp_relaxed
diff --git a/tests/src/android/renderscript/cts/tan_f32.rs b/tests/src/android/renderscript/cts/tan_f32.rs
new file mode 100644
index 0000000..35ee971
--- /dev/null
+++ b/tests/src/android/renderscript/cts/tan_f32.rs
@@ -0,0 +1,17 @@
+#pragma version(1)
+#pragma rs java_package_name(android.renderscript.cts)
+void tan_f32_1(const float *in, float *out) {
+    *out = tan(*in);
+}
+
+void tan_f32_2(const float2 *in, float2 *out) {
+    *out = tan(*in);
+}
+
+void tan_f32_3(const float3 *in, float3 *out) {
+    *out = tan(*in);
+}
+
+void tan_f32_4(const float4 *in, float4 *out) {
+    *out = tan(*in);
+}
diff --git a/tests/src/android/renderscript/cts/tan_f32_relaxed.rs b/tests/src/android/renderscript/cts/tan_f32_relaxed.rs
new file mode 100644
index 0000000..adf98f0
--- /dev/null
+++ b/tests/src/android/renderscript/cts/tan_f32_relaxed.rs
@@ -0,0 +1,2 @@
+#include "tan_f32.rs"
+#pragma rs_fp_relaxed
diff --git a/tests/src/android/renderscript/cts/tanh_f32.rs b/tests/src/android/renderscript/cts/tanh_f32.rs
new file mode 100644
index 0000000..2b0782e
--- /dev/null
+++ b/tests/src/android/renderscript/cts/tanh_f32.rs
@@ -0,0 +1,17 @@
+#pragma version(1)
+#pragma rs java_package_name(android.renderscript.cts)
+void tanh_f32_1(const float *in, float *out) {
+    *out = tanh(*in);
+}
+
+void tanh_f32_2(const float2 *in, float2 *out) {
+    *out = tanh(*in);
+}
+
+void tanh_f32_3(const float3 *in, float3 *out) {
+    *out = tanh(*in);
+}
+
+void tanh_f32_4(const float4 *in, float4 *out) {
+    *out = tanh(*in);
+}
diff --git a/tests/src/android/renderscript/cts/tanh_f32_relaxed.rs b/tests/src/android/renderscript/cts/tanh_f32_relaxed.rs
new file mode 100644
index 0000000..2d7463b
--- /dev/null
+++ b/tests/src/android/renderscript/cts/tanh_f32_relaxed.rs
@@ -0,0 +1,2 @@
+#include "tanh_f32.rs"
+#pragma rs_fp_relaxed
diff --git a/tests/src/android/renderscript/cts/trunc_f32.rs b/tests/src/android/renderscript/cts/trunc_f32.rs
new file mode 100644
index 0000000..a464086
--- /dev/null
+++ b/tests/src/android/renderscript/cts/trunc_f32.rs
@@ -0,0 +1,18 @@
+#pragma version(1)
+#pragma rs java_package_name(android.renderscript.cts)
+
+void trunc_f32_1 (const float* in, float* out) {
+    *out = trunc(*in);
+}
+
+void trunc_f32_2 (const float2* in, float2* out) {
+    *out = trunc(*in);
+}
+
+void trunc_f32_3 (const float3* in, float3* out) {
+    *out = trunc(*in);
+}
+
+void trunc_f32_4 (const float4* in, float4* out) {
+    *out = trunc(*in);
+}
diff --git a/tests/src/android/renderscript/cts/trunc_f32_relaxed.rs b/tests/src/android/renderscript/cts/trunc_f32_relaxed.rs
new file mode 100644
index 0000000..f55c8b3
--- /dev/null
+++ b/tests/src/android/renderscript/cts/trunc_f32_relaxed.rs
@@ -0,0 +1,2 @@
+#include "trunc_f32.rs"
+#pragma rs_fp_relaxed
diff --git a/tests/src/android/renderscript/cts/verify.rs b/tests/src/android/renderscript/cts/verify.rs
new file mode 100644
index 0000000..3563fee
--- /dev/null
+++ b/tests/src/android/renderscript/cts/verify.rs
@@ -0,0 +1,306 @@
+/*
+ * Copyright (C) 2013 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.
+ */
+
+#include "shared.rsh"
+
+int gAllowedIntError = 0;
+static bool hadError = false;
+static int2 errorLoc = {0,0};
+
+
+static bool compare_float(float f1, float f2) {
+    if (fabs(f1-f2) > 0.0001f) {
+        hadError = true;
+        return false;
+    }
+    return true;
+}
+
+static bool verify_float4(rs_allocation in1, rs_allocation in2)
+{
+    uint32_t w = rsAllocationGetDimX(in1);
+    uint32_t h = rsAllocationGetDimY(in1);
+    for (uint32_t y=0; y < h; y++) {
+        for (uint32_t x=0; x < w; x++) {
+            float4 pref = rsGetElementAt_float4(in1, x, y);
+            float4 ptst = rsGetElementAt_float4(in2, x, y);
+            bool e = !compare_float(pref.x, ptst.x);
+            e |= !compare_float(pref.y, ptst.y);
+            e |= !compare_float(pref.z, ptst.z);
+            e |= !compare_float(pref.w, ptst.w);
+            if (e) {
+                errorLoc.x = x;
+                errorLoc.y = y;
+                return false;
+            }
+        }
+    }
+    return true;
+}
+
+static bool verify_float3(rs_allocation in1, rs_allocation in2)
+{
+    uint32_t w = rsAllocationGetDimX(in1);
+    uint32_t h = rsAllocationGetDimY(in1);
+    for (uint32_t y=0; y < h; y++) {
+        for (uint32_t x=0; x < w; x++) {
+            float3 pref = rsGetElementAt_float3(in1, x, y);
+            float3 ptst = rsGetElementAt_float3(in2, x, y);
+            bool e = !compare_float(pref.x, ptst.x);
+            e |= !compare_float(pref.y, ptst.y);
+            e |= !compare_float(pref.z, ptst.z);
+            if (e) {
+                errorLoc.x = x;
+                errorLoc.y = y;
+                return false;
+            }
+        }
+    }
+    return true;
+}
+
+static bool verify_float2(rs_allocation in1, rs_allocation in2)
+{
+    uint32_t w = rsAllocationGetDimX(in1);
+    uint32_t h = rsAllocationGetDimY(in1);
+    for (uint32_t y=0; y < h; y++) {
+        for (uint32_t x=0; x < w; x++) {
+            float2 pref = rsGetElementAt_float2(in1, x, y);
+            float2 ptst = rsGetElementAt_float2(in2, x, y);
+            bool e = !compare_float(pref.x, ptst.x);
+            e |= !compare_float(pref.y, ptst.y);
+            if (e) {
+                errorLoc.x = x;
+                errorLoc.y = y;
+                return false;
+            }
+        }
+    }
+    return true;
+}
+
+static bool verify_float(rs_allocation in1, rs_allocation in2)
+{
+    uint32_t w = rsAllocationGetDimX(in1);
+    uint32_t h = rsAllocationGetDimY(in1);
+    for (uint32_t y=0; y < h; y++) {
+        for (uint32_t x=0; x < w; x++) {
+            float pref = rsGetElementAt_float(in1, x, y);
+            float ptst = rsGetElementAt_float(in2, x, y);
+            bool e = !compare_float(pref, ptst);
+            if (e) {
+                errorLoc.x = x;
+                errorLoc.y = y;
+                return false;
+            }
+        }
+    }
+    return true;
+}
+
+static bool verify_uchar4(rs_allocation in1, rs_allocation in2)
+{
+    int merr = 0;
+    uint32_t w = rsAllocationGetDimX(in1);
+    uint32_t h = rsAllocationGetDimY(in1);
+    for (uint32_t y=0; y < h; y++) {
+        for (uint32_t x=0; x < w; x++) {
+            int4 pref = convert_int4(rsGetElementAt_uchar4(in1, x, y));
+            int4 ptst = convert_int4(rsGetElementAt_uchar4(in2, x, y));
+            int4 d = convert_int4(abs(pref - ptst));
+            int e = 0;
+            e = max(e, d.x);
+            e = max(e, d.y);
+            e = max(e, d.z);
+            e = max(e, d.w);
+            if (e > gAllowedIntError) {
+                errorLoc.x = x;
+                errorLoc.y = y;
+                hadError = true;
+                return false;
+            }
+            merr = max(e, merr);
+        }
+    }
+    return true;
+}
+
+static bool verify_uchar3(rs_allocation in1, rs_allocation in2)
+{
+    int merr = 0;
+    uint32_t w = rsAllocationGetDimX(in1);
+    uint32_t h = rsAllocationGetDimY(in1);
+    for (uint32_t y=0; y < h; y++) {
+        for (uint32_t x=0; x < w; x++) {
+            int3 pref = convert_int3(rsGetElementAt_uchar3(in1, x, y));
+            int3 ptst = convert_int3(rsGetElementAt_uchar3(in2, x, y));
+            int3 d = convert_int3(abs(pref - ptst));
+            int e = 0;
+            e = max(e, d.x);
+            e = max(e, d.y);
+            e = max(e, d.z);
+            if (e > gAllowedIntError) {
+                errorLoc.x = x;
+                errorLoc.y = y;
+                hadError = true;
+                return false;
+            }
+            merr = max(e, merr);
+        }
+    }
+    return true;
+}
+
+static bool verify_uchar2(rs_allocation in1, rs_allocation in2)
+{
+    int merr = 0;
+    uint32_t w = rsAllocationGetDimX(in1);
+    uint32_t h = rsAllocationGetDimY(in1);
+    for (uint32_t y=0; y < h; y++) {
+        for (uint32_t x=0; x < w; x++) {
+            int2 pref = convert_int2(rsGetElementAt_uchar2(in1, x, y));
+            int2 ptst = convert_int2(rsGetElementAt_uchar2(in2, x, y));
+            int2 d = convert_int2(abs(pref - ptst));
+            int e = 0;
+            e = max(e, d.x);
+            e = max(e, d.y);
+            if (e > gAllowedIntError) {
+                errorLoc.x = x;
+                errorLoc.y = y;
+                hadError = true;
+                return false;
+            }
+            merr = max(e, merr);
+        }
+    }
+    return true;
+}
+
+static bool verify_uchar(rs_allocation in1, rs_allocation in2)
+{
+    int merr = 0;
+    uint32_t w = rsAllocationGetDimX(in1);
+    uint32_t h = rsAllocationGetDimY(in1);
+    for (uint32_t y=0; y < h; y++) {
+        for (uint32_t x=0; x < w; x++) {
+            int pref = rsGetElementAt_uchar(in1, x, y);
+            int ptst = rsGetElementAt_uchar(in2, x, y);
+            int e = abs(pref - ptst);
+            if (e > gAllowedIntError) {
+                errorLoc.x = x;
+                errorLoc.y = y;
+                hadError = true;
+                return false;
+            }
+            merr = max(e, merr);
+        }
+    }
+    return true;
+}
+
+#define printCell(txt, a, xy) \
+{                       \
+    rs_element e = rsAllocationGetElement(a); \
+    rs_data_type dt = rsElementGetDataType(e); \
+    uint32_t vs = rsElementGetVectorSize(e); \
+ \
+    if (dt == RS_TYPE_UNSIGNED_8) { \
+        switch(vs) { \
+        case 4: \
+            rsDebug(txt, rsGetElementAt_uchar4(a, xy.x, xy.y)); \
+            break; \
+        case 3: \
+            rsDebug(txt, rsGetElementAt_uchar3(a, xy.x, xy.y)); \
+            break; \
+        case 2: \
+            rsDebug(txt, rsGetElementAt_uchar2(a, xy.x, xy.y)); \
+            break; \
+        case 1: \
+            rsDebug(txt, rsGetElementAt_uchar(a, xy.x, xy.y)); \
+            break; \
+        } \
+    } else { \
+        switch(vs) { \
+        case 4: \
+            rsDebug(txt, rsGetElementAt_float4(a, xy.x, xy.y)); \
+            break; \
+        case 3: \
+            rsDebug(txt, rsGetElementAt_float3(a, xy.x, xy.y)); \
+            break; \
+        case 2: \
+            rsDebug(txt, rsGetElementAt_float2(a, xy.x, xy.y)); \
+            break; \
+        case 1: \
+            rsDebug(txt, rsGetElementAt_float(a, xy.x, xy.y)); \
+            break; \
+        } \
+    } \
+}
+
+void verify(rs_allocation ref_in, rs_allocation tst_in, rs_allocation src_in)
+{
+    rs_element e = rsAllocationGetElement(ref_in);
+    rs_data_type dt = rsElementGetDataType(e);
+    uint32_t vs = rsElementGetVectorSize(e);
+    bool valid = false;
+
+    if (dt == RS_TYPE_UNSIGNED_8) {
+        switch(vs) {
+        case 4:
+            valid = verify_uchar4(ref_in, tst_in);
+            break;
+        case 3:
+            valid = verify_uchar3(ref_in, tst_in);
+            break;
+        case 2:
+            valid = verify_uchar2(ref_in, tst_in);
+            break;
+        case 1:
+            valid = verify_uchar(ref_in, tst_in);
+            break;
+        }
+    } else {
+        switch(vs) {
+        case 4:
+            valid = verify_float4(ref_in, tst_in);
+            break;
+        case 3:
+            valid = verify_float3(ref_in, tst_in);
+            break;
+        case 2:
+            valid = verify_float2(ref_in, tst_in);
+            break;
+        case 1:
+            valid = verify_float(ref_in, tst_in);
+            break;
+        }
+    }
+    if (!valid) {
+        rsDebug("verify failure at xy", errorLoc);
+        printCell("start value     ", src_in, errorLoc);
+        printCell("reference value ", ref_in, errorLoc);
+        printCell("test value      ", tst_in, errorLoc);
+    }
+}
+
+void checkError()
+{
+    if (hadError) {
+        rsSendToClientBlocking(RS_MSG_TEST_FAILED);
+    } else {
+        rsSendToClientBlocking(RS_MSG_TEST_PASSED);
+    }
+}
diff --git a/tests/src/android/renderscript/cts/void_ptr.rs b/tests/src/android/renderscript/cts/void_ptr.rs
new file mode 100644
index 0000000..895f0c7
--- /dev/null
+++ b/tests/src/android/renderscript/cts/void_ptr.rs
@@ -0,0 +1,49 @@
+#pragma version(1)
+#pragma rs java_package_name(android.renderscript.cts)
+
+rs_allocation aFailed;
+rs_allocation aOutput;
+
+void set_output_void_int(void *out, uint32_t x, uint32_t y) {
+    int *out_int = (int *)out;
+    *out_int = x + y;
+}
+
+void __attribute__((kernel))check_output_int(const int in, uint32_t x, uint32_t y)
+{
+    if (in != x + y) {
+        rsSetElementAt_int(aFailed, 1, 0);
+    }
+}
+
+void set_output_void_char(void *out, uint32_t x, uint32_t y) {
+    uchar *out_int = (uchar *)out;
+    *out_int = x + y;
+}
+
+void __attribute__((kernel))check_output_char(const uchar in, uint32_t x, uint32_t y)
+{
+    if (in != x + y) {
+        rsSetElementAt_int(aFailed, 1, 0);
+    }
+}
+
+int __attribute__((kernel)) set_output_int(uint32_t x, uint32_t y) {
+    return x + y;
+}
+
+void copy_void_int(const void *in, uint32_t x, uint32_t y)
+{
+    int *in_int = (int*) in;
+    rsSetElementAt_int(aOutput, *in_int, x, y);
+}
+
+uchar __attribute__((kernel)) set_output_char(uint32_t x, uint32_t y) {
+    return x + y;
+}
+
+void copy_void_char(const void *in, uint32_t x, uint32_t y)
+{
+    uchar *in_uchar = (uchar*) in;
+    rsSetElementAt_uchar(aOutput, *in_uchar, x, y);
+}
diff --git a/tests/src/android/renderscript/cts/yuv.rs b/tests/src/android/renderscript/cts/yuv.rs
new file mode 100644
index 0000000..6d45331
--- /dev/null
+++ b/tests/src/android/renderscript/cts/yuv.rs
@@ -0,0 +1,97 @@
+/*
+ * Copyright (C) 2013 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.
+ */
+
+#include "shared.rsh"
+
+#pragma rs_fp_relaxed
+
+rs_allocation mInput;
+
+rs_allocation mInY;
+rs_allocation mInU;
+rs_allocation mInV;
+
+static uchar4 yuvToRGBA4(uchar y, uchar u, uchar v) {
+    short Y = ((short)y) - 16;
+    short U = ((short)u) - 128;
+    short V = ((short)v) - 128;
+
+    short4 p;
+    p.x = (Y * 298 + V * 409 + 128) >> 8;
+    p.y = (Y * 298 - U * 100 - V * 208 + 128) >> 8;
+    p.z = (Y * 298 + U * 516 + 128) >> 8;
+    p.w = 255;
+    if(p.x < 0) {
+        p.x = 0;
+    }
+    if(p.x > 255) {
+        p.x = 255;
+    }
+    if(p.y < 0) {
+        p.y = 0;
+    }
+    if(p.y > 255) {
+        p.y = 255;
+    }
+    if(p.z < 0) {
+        p.z = 0;
+    }
+    if(p.z > 255) {
+        p.z = 255;
+    }
+
+    return (uchar4){p.x, p.y, p.z, p.w};
+}
+
+void makeRef(rs_allocation ay, rs_allocation au, rs_allocation av, rs_allocation aout) {
+    uint32_t w = rsAllocationGetDimX(ay);
+    uint32_t h = rsAllocationGetDimY(ay);
+
+    for (int y = 0; y < h; y++) {
+        //rsDebug("y", y);
+        for (int x = 0; x < w; x++) {
+
+            int py = rsGetElementAt_uchar(ay, x, y);
+            int pu = rsGetElementAt_uchar(au, x >> 1, y >> 1);
+            int pv = rsGetElementAt_uchar(av, x >> 1, y >> 1);
+
+            //rsDebug("py", py);
+            //rsDebug(" u", pu);
+            //rsDebug(" v", pv);
+
+            uchar4 rgb = yuvToRGBA4(py, pu, pv);
+            //rsDebug("  ", rgb);
+
+            rsSetElementAt_uchar4(aout, rgb, x, y);
+        }
+    }
+}
+
+
+uchar4 __attribute__((kernel)) cvt(uint32_t x, uint32_t y) {
+
+    uchar py = rsGetElementAtYuv_uchar_Y(mInput, x, y);
+    uchar pu = rsGetElementAtYuv_uchar_U(mInput, x, y);
+    uchar pv = rsGetElementAtYuv_uchar_V(mInput, x, y);
+
+    //rsDebug("py2", py);
+    //rsDebug(" u2", pu);
+    //rsDebug(" v2", pv);
+
+    return yuvToRGBA4(py, pu, pv);
+}
+
+
diff --git a/tests/src/android/text/EmojiStubActivity.java b/tests/src/android/text/EmojiStubActivity.java
old mode 100755
new mode 100644
diff --git a/tests/src/android/text/method/cts/KeyListenerStubActivity.java b/tests/src/android/text/method/cts/KeyListenerStubActivity.java
index f831af9..149ad87 100644
--- a/tests/src/android/text/method/cts/KeyListenerStubActivity.java
+++ b/tests/src/android/text/method/cts/KeyListenerStubActivity.java
@@ -20,6 +20,7 @@
 
 import android.app.Activity;
 import android.os.Bundle;
+import android.os.SystemClock;
 import android.text.method.BaseKeyListener;
 import android.text.method.DateKeyListener;
 import android.text.method.DateTimeKeyListener;
@@ -29,6 +30,7 @@
 import android.text.method.QwertyKeyListener;
 import android.text.method.TextKeyListener;
 import android.text.method.TimeKeyListener;
+import android.util.Log;
 
 /**
  * This Activity is used for testing:
@@ -54,9 +56,47 @@
  */
 
 public class KeyListenerStubActivity extends Activity {
+    private boolean mHasWindowFocus = false;
+    private Object mHasWindowFocusLock = new Object();
+
     @Override
     protected void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
         setContentView(R.layout.keylistener_layout);
     }
+
+    @Override
+    public void onWindowFocusChanged(boolean hasFocus) {
+        super.onWindowFocusChanged(hasFocus);
+        if (!hasFocus) {
+            Log.w("KeyListenerStubActivity", "KeyListenerStubActivity lost window focus");
+        }
+        synchronized(mHasWindowFocusLock) {
+            mHasWindowFocus = hasFocus;
+            mHasWindowFocusLock.notify();
+        }
+    }
+
+    /**
+     * Blocks the calling thread until the {@link KeyListenerStubActivity} has window focus or the
+     * specified duration (in milliseconds) has passed.
+     */
+    public boolean waitForWindowFocus(long durationMillis) {
+        long elapsedMillis = SystemClock.elapsedRealtime();
+        synchronized(mHasWindowFocusLock) {
+            mHasWindowFocus = hasWindowFocus();
+            while (!mHasWindowFocus && durationMillis > 0) {
+                long newElapsedMillis = SystemClock.elapsedRealtime();
+                durationMillis -= (newElapsedMillis - elapsedMillis);
+                elapsedMillis = newElapsedMillis;
+                if (durationMillis > 0) {
+                    try {
+                        mHasWindowFocusLock.wait(durationMillis);
+                    } catch (InterruptedException e) {
+                    }
+                }
+            }
+            return mHasWindowFocus;
+        }
+    }
 }
diff --git a/tests/src/android/view/cts/ViewTestStubActivity.java b/tests/src/android/view/cts/ViewTestStubActivity.java
index 9809962..69676cb 100644
--- a/tests/src/android/view/cts/ViewTestStubActivity.java
+++ b/tests/src/android/view/cts/ViewTestStubActivity.java
@@ -18,12 +18,52 @@
 
 import android.app.Activity;
 import android.os.Bundle;
+import android.os.SystemClock;
+import android.util.Log;
 import com.android.cts.stub.R;
 
 public class ViewTestStubActivity extends Activity {
+    private boolean mHasWindowFocus = false;
+    private Object mHasWindowFocusLock = new Object();
+
     @Override
     protected void onCreate(Bundle icicle) {
         super.onCreate(icicle);
         setContentView(R.layout.view_layout);
     }
+
+    @Override
+    public void onWindowFocusChanged(boolean hasFocus) {
+        super.onWindowFocusChanged(hasFocus);
+        if (!hasFocus) {
+            Log.w("ViewTestStubActivity", "ViewTestStubActivity lost window focus");
+        }
+        synchronized(mHasWindowFocusLock) {
+            mHasWindowFocus = hasFocus;
+            mHasWindowFocusLock.notify();
+        }
+    }
+
+    /**
+     * Blocks the calling thread until the {@link ViewTestStubActivity} has window focus or the
+     * specified duration (in milliseconds) has passed.
+     */
+    public boolean waitForWindowFocus(long durationMillis) {
+        long elapsedMillis = SystemClock.elapsedRealtime();
+        synchronized(mHasWindowFocusLock) {
+            mHasWindowFocus = hasWindowFocus();
+            while (!mHasWindowFocus && durationMillis > 0) {
+                long newElapsedMillis = SystemClock.elapsedRealtime();
+                durationMillis -= (newElapsedMillis - elapsedMillis);
+                elapsedMillis = newElapsedMillis;
+                if (durationMillis > 0) {
+                    try {
+                        mHasWindowFocusLock.wait(durationMillis);
+                    } catch (InterruptedException e) {
+                    }
+                }
+            }
+            return mHasWindowFocus;
+        }
+    }
 }
diff --git a/tests/src/android/view/cts/WindowStubActivity.java b/tests/src/android/view/cts/WindowStubActivity.java
old mode 100755
new mode 100644
diff --git a/tests/src/android/webkit/cts/WebViewOnUiThread.java b/tests/src/android/webkit/cts/WebViewOnUiThread.java
index 5133653..f638ba8 100644
--- a/tests/src/android/webkit/cts/WebViewOnUiThread.java
+++ b/tests/src/android/webkit/cts/WebViewOnUiThread.java
@@ -24,22 +24,27 @@
 import android.os.Looper;
 import android.os.Message;
 import android.os.SystemClock;
+import android.print.PrintDocumentAdapter;
 import android.test.InstrumentationTestCase;
 import android.util.DisplayMetrics;
 import android.view.View;
+import android.view.ViewGroup;
+import android.view.ViewParent;
 import android.webkit.DownloadListener;
+import android.webkit.ValueCallback;
 import android.webkit.WebBackForwardList;
 import android.webkit.WebChromeClient;
 import android.webkit.WebSettings;
-import android.webkit.WebView;
 import android.webkit.WebView.HitTestResult;
 import android.webkit.WebView.PictureListener;
+import android.webkit.WebView;
 import android.webkit.WebViewClient;
 
 import junit.framework.Assert;
 
 import java.io.File;
-
+import java.util.concurrent.Callable;
+import java.util.Map;
 
 /**
  * Many tests need to run WebView code in the UI thread. This class
@@ -236,11 +241,38 @@
         });
     }
 
-    public void zoomIn() {
+    public boolean canZoomIn() {
+        return getValue(new ValueGetter<Boolean>() {
+            @Override
+            public Boolean capture() {
+                return mWebView.canZoomIn();
+            }
+        });
+    }
+
+    public boolean zoomIn() {
+        return getValue(new ValueGetter<Boolean>() {
+            @Override
+            public Boolean capture() {
+                return mWebView.zoomIn();
+            }
+        });
+    }
+
+    public boolean zoomOut() {
+        return getValue(new ValueGetter<Boolean>() {
+            @Override
+            public Boolean capture() {
+                return mWebView.zoomOut();
+            }
+        });
+    }
+
+    public void setFindListener(final WebView.FindListener listener) {
         runOnUiThread(new Runnable() {
             @Override
             public void run() {
-                mWebView.zoomIn();
+                mWebView.setFindListener(listener);
             }
         });
     }
@@ -350,6 +382,22 @@
         });
     }
 
+    /**
+     * Calls loadUrl on the WebView and then waits onPageFinished,
+     * onNewPicture and onProgressChange to reach 100.
+     * Test fails if the load timeout elapses.
+     * @param url The URL to load.
+     */
+    public void loadUrlAndWaitForCompletion(final String url,
+            final Map<String, String> extraHeaders) {
+        callAndWait(new Runnable() {
+            @Override
+            public void run() {
+                mWebView.loadUrl(url, extraHeaders);
+            }
+        });
+    }
+
     public void loadUrl(final String url) {
         runOnUiThread(new Runnable() {
             @Override
@@ -424,14 +472,24 @@
      * similar functions.
      */
     public void waitForLoadCompletion() {
-        if (isUiThread()) {
-            waitOnUiThread();
-        } else {
-            waitOnTestThread();
-        }
+        waitForCriteria(LOAD_TIMEOUT,
+                new Callable<Boolean>() {
+                    @Override
+                    public Boolean call() {
+                        return isLoaded();
+                    }
+                });
         clearLoad();
     }
 
+    private void waitForCriteria(long timeout, Callable<Boolean> doneCriteria) {
+        if (isUiThread()) {
+            waitOnUiThread(timeout, doneCriteria);
+        } else {
+            waitOnTestThread(timeout, doneCriteria);
+        }
+    }
+
     public String getTitle() {
         return getValue(new ValueGetter<String>() {
             @Override
@@ -627,6 +685,39 @@
         });
     }
 
+    public void evaluateJavascript(final String script, final ValueCallback<String> result) {
+        runOnUiThread(new Runnable() {
+            @Override
+            public void run() {
+                mWebView.evaluateJavascript(script, result);
+            }
+        });
+    }
+
+    public PrintDocumentAdapter createPrintDocumentAdapter() {
+        return getValue(new ValueGetter<PrintDocumentAdapter>() {
+            @Override
+            public PrintDocumentAdapter capture() {
+                return mWebView.createPrintDocumentAdapter();
+            }
+        });
+    }
+
+    public void setLayoutHeightToMatchParent() {
+        runOnUiThread(new Runnable() {
+            @Override
+            public void run() {
+                ViewParent parent = mWebView.getParent();
+                if (parent instanceof ViewGroup) {
+                    ((ViewGroup) parent).getLayoutParams().height =
+                        ViewGroup.LayoutParams.MATCH_PARENT;
+                }
+                mWebView.getLayoutParams().height = ViewGroup.LayoutParams.MATCH_PARENT;
+                mWebView.requestLayout();
+            }
+        });
+    }
+
     /**
      * Helper for running code on the UI thread where an exception is
      * a test failure. If this is already the UI thread then it runs
@@ -718,33 +809,42 @@
 
     /**
      * Uses a polling mechanism, while pumping messages to check when the
-     * load completes.
+     * criteria is met.
      */
-    private void waitOnUiThread() {
-        new PollingCheck(LOAD_TIMEOUT) {
+    private void waitOnUiThread(long timeout, final Callable<Boolean> doneCriteria) {
+        new PollingCheck(timeout) {
             @Override
             protected boolean check() {
                 pumpMessages();
-                return isLoaded();
+                try {
+                    return doneCriteria.call();
+                } catch (Exception e) {
+                    Assert.fail("Unexpected error while checking the criteria: "
+                            + e.getMessage());
+                    return true;
+                }
             }
         }.run();
     }
 
     /**
-     * Uses a wait/notify to check when the load completes.
+     * Uses a wait/notify to check when the criteria is met.
      */
-    private synchronized void waitOnTestThread() {
+    private synchronized void waitOnTestThread(long timeout, Callable<Boolean> doneCriteria) {
         try {
-            long waitEnd = SystemClock.uptimeMillis() + LOAD_TIMEOUT;
-            long timeRemaining = LOAD_TIMEOUT;
-            while (!isLoaded() && timeRemaining > 0) {
+            long waitEnd = SystemClock.uptimeMillis() + timeout;
+            long timeRemaining = timeout;
+            while (!doneCriteria.call() && timeRemaining > 0) {
                 this.wait(timeRemaining);
                 timeRemaining = waitEnd - SystemClock.uptimeMillis();
             }
+            Assert.assertTrue("Action failed to complete before timeout", doneCriteria.call());
         } catch (InterruptedException e) {
             // We'll just drop out of the loop and fail
+        } catch (Exception e) {
+            Assert.fail("Unexpected error while checking the criteria: "
+                    + e.getMessage());
         }
-        Assert.assertTrue("Load failed to complete before timeout", isLoaded());
     }
 
     /**
diff --git a/tests/src/android/webkit/cts/WebViewStartupStubActivity.java b/tests/src/android/webkit/cts/WebViewStartupStubActivity.java
new file mode 100644
index 0000000..f902a48
--- /dev/null
+++ b/tests/src/android/webkit/cts/WebViewStartupStubActivity.java
@@ -0,0 +1,55 @@
+/*
+ * Copyright (C) 2013 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 android.webkit.cts;
+
+import android.app.Activity;
+import android.os.Bundle;
+import android.view.ViewGroup;
+import android.webkit.WebView;
+
+public class WebViewStartupStubActivity extends Activity {
+    private WebView mWebView;
+
+    @Override
+    public void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+    }
+
+    public WebView createAndAttachWebView() {
+        mWebView = new WebView(this);
+        setContentView(mWebView);
+        return mWebView;
+    }
+
+    public WebView getWebView() {
+        return mWebView;
+    }
+
+    public void detachAndDestroyWebView() {
+        if (mWebView != null) {
+            ViewGroup vg = (ViewGroup)mWebView.getParent();
+            vg.removeView(mWebView);
+            mWebView.destroy();
+        }
+    }
+
+    @Override
+    public void onDestroy() {
+        detachAndDestroyWebView();
+        super.onDestroy();
+    }
+}
diff --git a/tests/systemAppTest/prebuilts/readme.txt b/tests/systemAppTest/prebuilts/readme.txt
new file mode 100644
index 0000000..f9ba205
--- /dev/null
+++ b/tests/systemAppTest/prebuilts/readme.txt
@@ -0,0 +1 @@
+This directory will contain signed CtsSystemAppTestCases.apk.
diff --git a/tests/systemAppTest/test/Android.mk b/tests/systemAppTest/test/Android.mk
new file mode 100644
index 0000000..3354886
--- /dev/null
+++ b/tests/systemAppTest/test/Android.mk
@@ -0,0 +1,37 @@
+# Copyright (C) 2013 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.
+
+# This module will not be built in normal CTS build
+# TODO: add xml generation for test build
+LOCAL_PATH:= $(call my-dir)
+
+include $(CLEAR_VARS)
+
+LOCAL_MODULE_TAGS := optional
+
+LOCAL_PRIVILEGED_MODULE := true
+
+LOCAL_MODULE_PATH := $(TARGET_OUT_APPS_PRIVILEGED)
+
+LOCAL_JAVA_LIBRARIES := android.test.runner
+
+LOCAL_STATIC_JAVA_LIBRARIES := ctstestrunner ctsdeviceutil
+
+LOCAL_SRC_FILES := $(call all-java-files-under, src)
+
+LOCAL_PACKAGE_NAME := CtsSystemAppTestCases
+
+LOCAL_SDK_VERSION := current
+
+include $(BUILD_PACKAGE)
diff --git a/tests/systemAppTest/test/AndroidManifest.xml b/tests/systemAppTest/test/AndroidManifest.xml
new file mode 100644
index 0000000..dbcaf9e
--- /dev/null
+++ b/tests/systemAppTest/test/AndroidManifest.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2013 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.
+-->
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+    package="com.android.cts.systemapptest"
+    android:versionCode="1"
+    android:versionName="1.0" >
+</manifest>
diff --git a/tests/tests/accessibility/Android.mk b/tests/tests/accessibility/Android.mk
index ee50eef..abd6f4b 100644
--- a/tests/tests/accessibility/Android.mk
+++ b/tests/tests/accessibility/Android.mk
@@ -26,7 +26,7 @@
 
 LOCAL_PACKAGE_NAME := CtsAccessibilityTestCases
 
-LOCAL_STATIC_JAVA_LIBRARIES := ctsutil ctstestrunner
+LOCAL_STATIC_JAVA_LIBRARIES := ctsdeviceutil ctstestrunner
 
 # This test runner sets up/cleans up the device before/after running the tests.
 LOCAL_CTS_TEST_RUNNER := com.android.cts.tradefed.testtype.AccessibilityTestRunner
diff --git a/tests/tests/accessibility/src/android/view/accessibility/cts/AccessibilityEventTest.java b/tests/tests/accessibility/src/android/view/accessibility/cts/AccessibilityEventTest.java
index 58b32d6..8be2b99 100644
--- a/tests/tests/accessibility/src/android/view/accessibility/cts/AccessibilityEventTest.java
+++ b/tests/tests/accessibility/src/android/view/accessibility/cts/AccessibilityEventTest.java
@@ -31,7 +31,7 @@
 public class AccessibilityEventTest extends TestCase {
 
     /** The number of properties of the {@link AccessibilityEvent} class. */
-    private static final int NON_STATIC_FIELD_COUNT = 28;
+    private static final int NON_STATIC_FIELD_COUNT = 29;
 
     /**
      * Test that no new fields have been added without updating the
diff --git a/tests/tests/accessibility/src/android/view/accessibility/cts/AccessibilityNodeInfoTest.java b/tests/tests/accessibility/src/android/view/accessibility/cts/AccessibilityNodeInfoTest.java
index 70a25b2..ae7cc9b 100644
--- a/tests/tests/accessibility/src/android/view/accessibility/cts/AccessibilityNodeInfoTest.java
+++ b/tests/tests/accessibility/src/android/view/accessibility/cts/AccessibilityNodeInfoTest.java
@@ -30,7 +30,7 @@
 public class AccessibilityNodeInfoTest extends AndroidTestCase {
 
     /** The number of properties of the {@link AccessibilityNodeInfo} class. */
-    private static final int NON_STATIC_FIELD_COUNT = 20;
+    private static final int NON_STATIC_FIELD_COUNT = 26;
 
     @SmallTest
     public void testMarshaling() throws Exception {
diff --git a/tests/tests/accessibilityservice/AndroidManifest.xml b/tests/tests/accessibilityservice/AndroidManifest.xml
index ac75553..c000460 100644
--- a/tests/tests/accessibilityservice/AndroidManifest.xml
+++ b/tests/tests/accessibilityservice/AndroidManifest.xml
@@ -19,9 +19,6 @@
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
         package="com.android.cts.accessibilityservice">
 
-  <uses-sdk android:minSdkVersion="18"
-          android:targetSdkVersion="18" />
-
   <uses-permission android:name="android.permission.DISABLE_KEYGUARD" />
 
   <application android:theme="@android:style/Theme.Holo.NoActionBar" >
diff --git a/tests/tests/accessibilityservice/res/layout/accessibility_text_traversal_test.xml b/tests/tests/accessibilityservice/res/layout/accessibility_text_traversal_test.xml
index f86f00f..9906227 100644
--- a/tests/tests/accessibilityservice/res/layout/accessibility_text_traversal_test.xml
+++ b/tests/tests/accessibilityservice/res/layout/accessibility_text_traversal_test.xml
@@ -26,29 +26,32 @@
        android:id="@+id/view"
        android:layout_width="50dip"
        android:layout_height="50dip"
+       android:visibility="gone"
        />
 
    <TextView
        android:id="@+id/text"
-       android:layout_width="200dip"
-       android:layout_height="200dip"
+       android:layout_width="80dip"
+       android:layout_height="80dip"
        android:includeFontPadding="false"
-       android:textSize="14dip"
+       android:textSize="10dip"
        android:textStyle="normal"
        android:fontFamily="sans-serif"
+       android:visibility="gone"
        />
 
    <EditText
        android:id="@+id/edit"
-       android:layout_width="200dip"
-       android:layout_height="200dip"
+       android:layout_width="80dip"
+       android:layout_height="80dip"
        android:maxLines="1000"
        android:scrollbars="vertical"
        android:focusable="false"
        android:includeFontPadding="false"
-       android:textSize="18dip"
+       android:textSize="10dip"
        android:textStyle="normal"
        android:fontFamily="sans-serif"
+       android:visibility="gone"
        />
 
 </LinearLayout>
diff --git a/tests/tests/accessibilityservice/res/layout/accessibility_view_tree_reporting_test.xml b/tests/tests/accessibilityservice/res/layout/accessibility_view_tree_reporting_test.xml
index fe420bc..0dbd62a 100644
--- a/tests/tests/accessibilityservice/res/layout/accessibility_view_tree_reporting_test.xml
+++ b/tests/tests/accessibilityservice/res/layout/accessibility_view_tree_reporting_test.xml
@@ -29,19 +29,22 @@
               android:id="@+id/firstTextView"
               android:layout_width="wrap_content"
               android:layout_height="wrap_content"
-              android:text="@string/firstTextView" />
+              android:text="@string/firstTextView"
+              android:textSize="10dip" />
 
           <EditText
               android:id="@+id/firstEditText"
-              android:layout_width="200dip"
+              android:layout_width="20dip"
               android:layout_height="wrap_content"
-              android:contentDescription="@string/firstEditText" />
+              android:contentDescription="@string/firstEditText"
+              android:textSize="10dip" />
 
           <Button
               android:id="@+id/firstButton"
               android:layout_width="wrap_content"
               android:layout_height="wrap_content"
-              android:text="@string/firstButton" />
+              android:text="@string/firstButton"
+              android:textSize="10dip" />
 
       </LinearLayout>
 
@@ -68,19 +71,22 @@
               android:id="@+id/secondTextView"
               android:layout_width="wrap_content"
               android:layout_height="wrap_content"
-              android:text="@string/secondTextView" />
+              android:text="@string/secondTextView"
+              android:textSize="10dip" />
 
           <EditText
               android:id="@+id/secondEditText"
-              android:layout_width="200dip"
+              android:layout_width="20dip"
               android:layout_height="wrap_content"
-              android:contentDescription="@string/secondEditText" />
+              android:contentDescription="@string/secondEditText"
+              android:textSize="10dip" />
 
           <Button
               android:id="@+id/secondButton"
               android:layout_width="wrap_content"
               android:layout_height="wrap_content"
-              android:text="@string/secondButton" />
+              android:text="@string/secondButton"
+              android:textSize="10dip" />
 
       </LinearLayout>
 
diff --git a/tests/tests/accessibilityservice/res/layout/query_window_test.xml b/tests/tests/accessibilityservice/res/layout/query_window_test.xml
index 37c0ef0..88d4cc9 100644
--- a/tests/tests/accessibilityservice/res/layout/query_window_test.xml
+++ b/tests/tests/accessibilityservice/res/layout/query_window_test.xml
@@ -29,21 +29,24 @@
         >
         <Button
             android:id="@+id/button1"
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
+            android:layout_width="20dip"
+            android:layout_height="20dip"
             android:text="@string/button1"
+            android:textSize="10dip"
         />
         <Button
             android:id="@+id/button2"
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
+            android:layout_width="20dip"
+            android:layout_height="20dip"
             android:text="@string/button2"
+            android:textSize="10dip"
         />
         <Button
             android:id="@+id/button3"
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
+            android:layout_width="20dip"
+            android:layout_height="20dip"
             android:text="@string/button3"
+            android:textSize="10dip"
         />
     </LinearLayout>
 
@@ -54,21 +57,24 @@
         >
         <Button
             android:id="@+id/button4"
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
+            android:layout_width="20dip"
+            android:layout_height="20dip"
             android:text="@string/button4"
+            android:textSize="10dip"
         />
         <Button
             android:id="@+id/button5"
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
+            android:layout_width="20dip"
+            android:layout_height="20dip"
             android:text="@string/button5"
+            android:textSize="10dip"
         />
         <Button
             android:id="@+id/button6"
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
+            android:layout_width="20dip"
+            android:layout_height="20dip"
             android:text="@string/button6"
+            android:textSize="10dip"
             android:contentDescription="@string/contentDescription"
         />
     </LinearLayout>
@@ -80,21 +86,24 @@
         >
         <Button
             android:id="@+id/button7"
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
+            android:layout_width="20dip"
+            android:layout_height="20dip"
             android:text="@string/button7"
+            android:textSize="10dip"
         />
         <Button
             android:id="@+id/button8"
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
+            android:layout_width="20dip"
+            android:layout_height="20dip"
             android:text="@string/button8"
+            android:textSize="10dip"
         />
         <Button
             android:id="@+id/button9"
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
+            android:layout_width="20dip"
+            android:layout_height="20dip"
             android:text="@string/button9"
+            android:textSize="10dip"
         />
     </LinearLayout>
 
diff --git a/tests/tests/accessibilityservice/res/values/strings.xml b/tests/tests/accessibilityservice/res/values/strings.xml
index 97ddb7c..f60df17 100644
--- a/tests/tests/accessibilityservice/res/values/strings.xml
+++ b/tests/tests/accessibilityservice/res/values/strings.xml
@@ -52,34 +52,34 @@
     <string name="accessibility_query_window_test_activity">Query window test</string>
 
     <!-- String Button1 text -->
-    <string name="button1">Button1</string>
+    <string name="button1">B1</string>
 
     <!-- String Button2 text -->
-    <string name="button2">Button2</string>
+    <string name="button2">B2</string>
 
     <!-- String Button3 text -->
-    <string name="button3">Button3</string>
+    <string name="button3">B3</string>
 
     <!-- String Button4 text -->
-    <string name="button4">Button4</string>
+    <string name="button4">B4</string>
 
     <!-- String Button5 text -->
-    <string name="button5">Button5</string>
+    <string name="button5">B5</string>
 
     <!-- String Button6 text -->
-    <string name="button6">Button6</string>
+    <string name="button6">B6</string>
 
     <!-- String with content description for Button6 -->
     <string name="contentDescription">contentDescription</string>
 
     <!-- String Button7 text -->
-    <string name="button7">Button7</string>
+    <string name="button7">B7</string>
 
     <!-- String Button8 text -->
-    <string name="button8">Button8</string>
+    <string name="button8">B8</string>
 
     <!-- String Button9 text -->
-    <string name="button9">Button9</string>
+    <string name="button9">B9</string>
 
     <!-- AccessibilityFocusTest -->
 
@@ -87,37 +87,37 @@
     <string name="accessibility_view_tree_reporting_test_activity">Accessibility view three reporting test</string>
 
     <!-- String root LinearLayout text -->
-    <string name="rootLinearLayout">rootLinearLayout</string>
+    <string name="rootLinearLayout">rLL</string>
 
     <!-- String first FrameLayout text -->
-    <string name="firstFrameLayout">firstFrameLayout</string>
+    <string name="firstFrameLayout">fFL</string>
 
     <!-- String first LinearLayout text -->
-    <string name="firstLinearLayout">firstLinearLayout</string>
+    <string name="firstLinearLayout">fLL</string>
 
     <!-- String first TextView text -->
-    <string name="firstTextView">firstTextView</string>
+    <string name="firstTextView">fTV</string>
 
     <!-- String first EditText text -->
-    <string name="firstEditText">firstEditText</string>
+    <string name="firstEditText">fET</string>
 
     <!-- String first Button text -->
-    <string name="firstButton">firstButton</string>
+    <string name="firstButton">fB</string>
 
     <!-- String second FrameLayout text -->
-    <string name="secondFrameLayout">secondFrameLayout</string>
+    <string name="secondFrameLayout">sFL</string>
 
     <!-- String second LinearLayout text -->
-    <string name="secondLinearLayout">secondLinearLayout</string>
+    <string name="secondLinearLayout">sLL</string>
 
     <!-- String second TextView text -->
-    <string name="secondTextView">secondTextView</string>
+    <string name="secondTextView">sTV</string>
 
     <!-- String second EditText text -->
-    <string name="secondEditText">secondEditText</string>
+    <string name="secondEditText">sET</string>
 
     <!-- String second Button text -->
-    <string name="secondButton">secondButton</string>
+    <string name="secondButton">sB</string>
 
     <!-- String title of the accessibility focus and input focus sync test activity -->
     <string name="accessibility_focus_and_input_focus_sync_test_activity">Accessibility focus and input focus sync test</string>
@@ -126,14 +126,11 @@
     <string name="accessibility_text_traversal_test_activity">Accessibility text traversal test</string>
 
     <string name="android_wiki_short">
-        Android is a Linux-based operating system for mobile devices</string>
+        Android is a Linux-based operating</string>
 
     <string name="android_wiki">
         Android is a Linux-based operating system for mobile devices such as smartphones and tablet
-        computers. It is developed by the Open Handset Alliance, led by Google, and other companies.
-        Google purchased the initial developer of the software, Android Inc., in 2005. The
-        unveiling of the Android distribution in 2007 was announced with the founding of the Open
-        Handset Alliance, a consortium of 86 hardware, software, and telecommunication </string>
+        computers. It is developed by the Open Handset Alliance, more</string>
 
     <string name="a_b">A B</string>
 
@@ -142,12 +139,7 @@
     <string name="foo_bar_baz">Foo bar baz.</string>
 
     <string name="android_wiki_paragraphs">
-        \n\nAndroid is a Linux-based operating system for mobile devices such as smartphones and tablet
-        computers.\n\n It is developed by the Open Handset Alliance, led by Google, and other companies.
-        Google purchased the initial developer of the software, Android Inc., in 2005.\n The
-        unveiling of the Android distribution in 2007 was announced with the founding of the Open
-        Handset Alliance, a consortium of 86 hardware, software, and telecommunication companies
-        devoted to advancing open standards for mobile devices. Google releases the
-        Android code as open-source, under the Apache License.\n\n</string>
+        \n\nAndroid is a\n\n It is developed\n The
+        unveiling\n\n</string>
 
 </resources>
diff --git a/tests/tests/accessibilityservice/src/android/accessibilityservice/cts/AccessibilityActivityTestCase.java b/tests/tests/accessibilityservice/src/android/accessibilityservice/cts/AccessibilityActivityTestCase.java
index c7e4f4c..53f68b5 100644
--- a/tests/tests/accessibilityservice/src/android/accessibilityservice/cts/AccessibilityActivityTestCase.java
+++ b/tests/tests/accessibilityservice/src/android/accessibilityservice/cts/AccessibilityActivityTestCase.java
@@ -37,7 +37,7 @@
     /**
      * The timeout since the last accessibility event to consider the device idle.
      */
-    public static final long TIMEOUT_ACCESSIBILITY_STATE_IDLE = 200;
+    public static final long TIMEOUT_ACCESSIBILITY_STATE_IDLE = 500;
 
     /**
      * @param activityClass
diff --git a/tests/tests/accessibilityservice/src/android/accessibilityservice/cts/AccessibilityTextTraversalTest.java b/tests/tests/accessibilityservice/src/android/accessibilityservice/cts/AccessibilityTextTraversalTest.java
index cbaf5d2..a53fdea 100644
--- a/tests/tests/accessibilityservice/src/android/accessibilityservice/cts/AccessibilityTextTraversalTest.java
+++ b/tests/tests/accessibilityservice/src/android/accessibilityservice/cts/AccessibilityTextTraversalTest.java
@@ -46,6 +46,7 @@
         getInstrumentation().runOnMainSync(new Runnable() {
             @Override
             public void run() {
+                view.setVisibility(View.VISIBLE);
                 view.setContentDescription(getString(R.string.a_b));
             }
         });
@@ -260,6 +261,7 @@
         getInstrumentation().runOnMainSync(new Runnable() {
             @Override
             public void run() {
+                view.setVisibility(View.VISIBLE);
                 view.setContentDescription(getString(R.string.foo_bar_baz));
             }
         });
@@ -474,6 +476,7 @@
         getInstrumentation().runOnMainSync(new Runnable() {
             @Override
             public void run() {
+                textView.setVisibility(View.VISIBLE);
                 textView.setText(getString(R.string.a_b));
             }
         });
@@ -722,6 +725,7 @@
         getInstrumentation().runOnMainSync(new Runnable() {
             @Override
             public void run() {
+                editText.setVisibility(View.VISIBLE);
                 editText.setText(getString(R.string.a_b));
                 Selection.removeSelection(editText.getText());
             }
@@ -1220,6 +1224,7 @@
         getInstrumentation().runOnMainSync(new Runnable() {
             @Override
             public void run() {
+                textView.setVisibility(View.VISIBLE);
                 textView.setText(getString(R.string.foo_bar_baz));
             }
         });
@@ -1463,12 +1468,12 @@
     @MediumTest
     public void testActionNextAndPreviousAtGranularityWordOverEditTextWithContentDescription()
             throws Exception {
-
         final EditText editText = (EditText) getActivity().findViewById(R.id.edit);
 
         getInstrumentation().runOnMainSync(new Runnable() {
             @Override
             public void run() {
+                editText.setVisibility(View.VISIBLE);
                 editText.setText(getString(R.string.foo_bar_baz));
                 editText.setContentDescription(getString(R.string.android_wiki));
             }
@@ -1723,6 +1728,7 @@
         getInstrumentation().runOnMainSync(new Runnable() {
             @Override
             public void run() {
+                editText.setVisibility(View.VISIBLE);
                 editText.setText(getString(R.string.foo_bar_baz));
                 Selection.removeSelection(editText.getText());
             }
@@ -2217,6 +2223,7 @@
         getInstrumentation().runOnMainSync(new Runnable() {
             @Override
             public void run() {
+                textView.setVisibility(View.VISIBLE);
                 textView.setText(getString(R.string.android_wiki_short));
             }
         });
@@ -2258,7 +2265,7 @@
                         && event.getText().get(0).toString().equals(getString(
                                 R.string.android_wiki_short))
                         && event.getFromIndex() == 0
-                        && event.getToIndex() == 25
+                        && event.getToIndex() == 13
                         && event.getMovementGranularity() ==
                                 AccessibilityNodeInfo.MOVEMENT_GRANULARITY_LINE);
             }
@@ -2268,8 +2275,8 @@
         assertNotNull(firstExpected);
 
         // Verify the selection position.
-        assertEquals(25, Selection.getSelectionStart(textView.getText()));
-        assertEquals(25, Selection.getSelectionEnd(textView.getText()));
+        assertEquals(13, Selection.getSelectionStart(textView.getText()));
+        assertEquals(13, Selection.getSelectionEnd(textView.getText()));
 
         // Move to the next line and wait for an event.
         AccessibilityEvent secondExpected = getInstrumentation().getUiAutomation()
@@ -2292,8 +2299,8 @@
                         && event.getText().size() > 0
                         && event.getText().get(0).toString().equals(getString(
                                 R.string.android_wiki_short))
-                        && event.getFromIndex() == 25
-                        && event.getToIndex() == 53
+                        && event.getFromIndex() == 13
+                        && event.getToIndex() == 25
                         && event.getMovementGranularity() ==
                                  AccessibilityNodeInfo.MOVEMENT_GRANULARITY_LINE);
             }
@@ -2303,8 +2310,8 @@
         assertNotNull(secondExpected);
 
         // Verify the selection position.
-        assertEquals(53, Selection.getSelectionStart(textView.getText()));
-        assertEquals(53, Selection.getSelectionEnd(textView.getText()));
+        assertEquals(25, Selection.getSelectionStart(textView.getText()));
+        assertEquals(25, Selection.getSelectionEnd(textView.getText()));
 
         // Move to the next line and wait for an event.
         AccessibilityEvent thirdExpected = getInstrumentation().getUiAutomation()
@@ -2327,8 +2334,8 @@
                         && event.getText().size() > 0
                         && event.getText().get(0).toString().equals(getString(
                                 R.string.android_wiki_short))
-                        && event.getFromIndex() == 53
-                        && event.getToIndex() == 60
+                        && event.getFromIndex() == 25
+                        && event.getToIndex() == 34
                         && event.getMovementGranularity() ==
                                 AccessibilityNodeInfo.MOVEMENT_GRANULARITY_LINE);
             }
@@ -2338,16 +2345,16 @@
         assertNotNull(thirdExpected);
 
         // Verify the selection position.
-        assertEquals(60, Selection.getSelectionStart(textView.getText()));
-        assertEquals(60, Selection.getSelectionEnd(textView.getText()));
+        assertEquals(34, Selection.getSelectionStart(textView.getText()));
+        assertEquals(34, Selection.getSelectionEnd(textView.getText()));
 
         // Make sure there is no next.
         assertFalse(text.performAction(
                 AccessibilityNodeInfo.ACTION_NEXT_AT_MOVEMENT_GRANULARITY, arguments));
 
         // Verify the selection position.
-        assertEquals(60, Selection.getSelectionStart(textView.getText()));
-        assertEquals(60, Selection.getSelectionEnd(textView.getText()));
+        assertEquals(34, Selection.getSelectionStart(textView.getText()));
+        assertEquals(34, Selection.getSelectionEnd(textView.getText()));
 
         // Move to the previous line and wait for an event.
         AccessibilityEvent fourthExpected = getInstrumentation().getUiAutomation()
@@ -2370,8 +2377,8 @@
                         && event.getText().size() > 0
                         && event.getText().get(0).toString().equals(getString(
                                 R.string.android_wiki_short))
-                        && event.getFromIndex() == 53
-                        && event.getToIndex() == 60
+                        && event.getFromIndex() == 25
+                        && event.getToIndex() == 34
                         && event.getMovementGranularity() ==
                                 AccessibilityNodeInfo.MOVEMENT_GRANULARITY_LINE);
             }
@@ -2381,8 +2388,8 @@
         assertNotNull(fourthExpected);
 
         // Verify the selection position.
-        assertEquals(53, Selection.getSelectionStart(textView.getText()));
-        assertEquals(53, Selection.getSelectionEnd(textView.getText()));
+        assertEquals(25, Selection.getSelectionStart(textView.getText()));
+        assertEquals(25, Selection.getSelectionEnd(textView.getText()));
 
         // Move to the previous line and wait for an event.
         AccessibilityEvent fifthExpected = getInstrumentation().getUiAutomation()
@@ -2405,8 +2412,8 @@
                         && event.getText().size() > 0
                         && event.getText().get(0).toString().equals(getString(
                                 R.string.android_wiki_short))
-                        && event.getFromIndex() == 25
-                        && event.getToIndex() == 53
+                        && event.getFromIndex() == 13
+                        && event.getToIndex() == 25
                         && event.getMovementGranularity() ==
                                 AccessibilityNodeInfo.MOVEMENT_GRANULARITY_LINE);
             }
@@ -2416,8 +2423,8 @@
         assertNotNull(fifthExpected);
 
         // Verify the selection position.
-        assertEquals(25, Selection.getSelectionStart(textView.getText()));
-        assertEquals(25, Selection.getSelectionEnd(textView.getText()));
+        assertEquals(13, Selection.getSelectionStart(textView.getText()));
+        assertEquals(13, Selection.getSelectionEnd(textView.getText()));
 
         // Move to the previous line and wait for an event.
         AccessibilityEvent sixthExpected = getInstrumentation().getUiAutomation()
@@ -2441,7 +2448,7 @@
                         && event.getText().get(0).toString().equals(getString(
                                 R.string.android_wiki_short))
                         && event.getFromIndex() == 0
-                        && event.getToIndex() == 25
+                        && event.getToIndex() == 13
                         && event.getMovementGranularity() ==
                                 AccessibilityNodeInfo.MOVEMENT_GRANULARITY_LINE);
             }
@@ -2470,6 +2477,7 @@
         getInstrumentation().runOnMainSync(new Runnable() {
             @Override
             public void run() {
+                editText.setVisibility(View.VISIBLE);
                 editText.setText(getString(R.string.android_wiki_short));
                 Selection.removeSelection(editText.getText());
             }
@@ -2513,7 +2521,7 @@
                         && event.getText().get(0).toString().equals(getString(
                                 R.string.android_wiki_short))
                         && event.getFromIndex() == 0
-                        && event.getToIndex() == 19
+                        && event.getToIndex() == 13
                         && event.getMovementGranularity() ==
                                 AccessibilityNodeInfo.MOVEMENT_GRANULARITY_LINE);
             }
@@ -2524,7 +2532,7 @@
 
         // Verify the selection position.
         assertEquals(0, Selection.getSelectionStart(editText.getText()));
-        assertEquals(19, Selection.getSelectionEnd(editText.getText()));
+        assertEquals(13, Selection.getSelectionEnd(editText.getText()));
 
         // Move to the next line and wait for an event.
         AccessibilityEvent secondExpected = getInstrumentation().getUiAutomation()
@@ -2547,8 +2555,8 @@
                         && event.getText().size() > 0
                         && event.getText().get(0).toString().equals(getString(
                                 R.string.android_wiki_short))
-                        && event.getFromIndex() == 19
-                        && event.getToIndex() == 35
+                        && event.getFromIndex() == 13
+                        && event.getToIndex() == 25
                         && event.getMovementGranularity() ==
                                 AccessibilityNodeInfo.MOVEMENT_GRANULARITY_LINE);
             }
@@ -2559,7 +2567,7 @@
 
         // Verify the selection position.
         assertEquals(0, Selection.getSelectionStart(editText.getText()));
-        assertEquals(35, Selection.getSelectionEnd(editText.getText()));
+        assertEquals(25, Selection.getSelectionEnd(editText.getText()));
 
         // Move to the next line and wait for an event.
         AccessibilityEvent thirdExpected = getInstrumentation().getUiAutomation()
@@ -2582,8 +2590,8 @@
                         && event.getText().size() > 0
                         && event.getText().get(0).toString().equals(getString(
                                 R.string.android_wiki_short))
-                        && event.getFromIndex() == 35
-                        && event.getToIndex() == 53
+                        && event.getFromIndex() == 25
+                        && event.getToIndex() == 34
                         && event.getMovementGranularity() ==
                                  AccessibilityNodeInfo.MOVEMENT_GRANULARITY_LINE);
             }
@@ -2594,7 +2602,7 @@
 
         // Verify the selection position.
         assertEquals(0, Selection.getSelectionStart(editText.getText()));
-        assertEquals(53, Selection.getSelectionEnd(editText.getText()));
+        assertEquals(34, Selection.getSelectionEnd(editText.getText()));
 
         // Move to the previous line and wait for an event.
         AccessibilityEvent fourthExpected = getInstrumentation().getUiAutomation()
@@ -2617,8 +2625,8 @@
                         && event.getText().size() > 0
                         && event.getText().get(0).toString().equals(getString(
                                 R.string.android_wiki_short))
-                        && event.getFromIndex() == 35
-                        && event.getToIndex() == 53
+                        && event.getFromIndex() == 25
+                        && event.getToIndex() == 34
                         && event.getMovementGranularity() ==
                                 AccessibilityNodeInfo.MOVEMENT_GRANULARITY_LINE);
             }
@@ -2629,7 +2637,7 @@
 
         // Verify the selection position.
         assertEquals(0, Selection.getSelectionStart(editText.getText()));
-        assertEquals(35, Selection.getSelectionEnd(editText.getText()));
+        assertEquals(25, Selection.getSelectionEnd(editText.getText()));
 
         // Move to the previous line and wait for an event.
         AccessibilityEvent fifthExpected = getInstrumentation().getUiAutomation()
@@ -2652,8 +2660,8 @@
                         && event.getText().size() > 0
                         && event.getText().get(0).toString().equals(getString(
                                 R.string.android_wiki_short))
-                        && event.getFromIndex() == 19
-                        && event.getToIndex() == 35
+                        && event.getFromIndex() == 13
+                        && event.getToIndex() == 25
                         && event.getMovementGranularity() ==
                                 AccessibilityNodeInfo.MOVEMENT_GRANULARITY_LINE);
             }
@@ -2664,7 +2672,7 @@
 
         // Verify the selection position.
         assertEquals(0, Selection.getSelectionStart(editText.getText()));
-        assertEquals(19, Selection.getSelectionEnd(editText.getText()));
+        assertEquals(13, Selection.getSelectionEnd(editText.getText()));
 
         // Move to the previous line and wait for an event.
         AccessibilityEvent sixthExpected = getInstrumentation().getUiAutomation()
@@ -2688,7 +2696,7 @@
                         && event.getText().get(0).toString().equals(getString(
                                 R.string.android_wiki_short))
                         && event.getFromIndex() == 0
-                        && event.getToIndex() == 19
+                        && event.getToIndex() == 13
                         && event.getMovementGranularity() ==
                                 AccessibilityNodeInfo.MOVEMENT_GRANULARITY_LINE);
             }
@@ -2720,14 +2728,14 @@
 
         // Put selection at the end of the text.
         Bundle setSelectionArgs = new Bundle();
-        setSelectionArgs.putInt(AccessibilityNodeInfo.ACTION_ARGUMENT_SELECTION_START_INT, 53);
-        setSelectionArgs.putInt(AccessibilityNodeInfo.ACTION_ARGUMENT_SELECTION_END_INT, 53);
+        setSelectionArgs.putInt(AccessibilityNodeInfo.ACTION_ARGUMENT_SELECTION_START_INT, 34);
+        setSelectionArgs.putInt(AccessibilityNodeInfo.ACTION_ARGUMENT_SELECTION_END_INT, 34);
         assertTrue(text.performAction(
                 AccessibilityNodeInfo.ACTION_SET_SELECTION, setSelectionArgs));
 
         // Verify the selection position.
-        assertEquals(53, Selection.getSelectionStart(editText.getText()));
-        assertEquals(53, Selection.getSelectionEnd(editText.getText()));
+        assertEquals(34, Selection.getSelectionStart(editText.getText()));
+        assertEquals(34, Selection.getSelectionEnd(editText.getText()));
 
         // Unocus the view so we can hide the keyboard.
         getInstrumentation().runOnMainSync(new Runnable() {
@@ -2759,8 +2767,8 @@
                         && event.getText().size() > 0
                         && event.getText().get(0).toString().equals(getString(
                                 R.string.android_wiki_short))
-                        && event.getFromIndex() == 35
-                        && event.getToIndex() == 53
+                        && event.getFromIndex() == 25
+                        && event.getToIndex() == 34
                         && event.getMovementGranularity() ==
                                 AccessibilityNodeInfo.MOVEMENT_GRANULARITY_LINE);
             }
@@ -2770,8 +2778,8 @@
         assertNotNull(seventhExpected);
 
         // Verify the selection position.
-        assertEquals(53, Selection.getSelectionStart(editText.getText()));
-        assertEquals(35, Selection.getSelectionEnd(editText.getText()));
+        assertEquals(34, Selection.getSelectionStart(editText.getText()));
+        assertEquals(25, Selection.getSelectionEnd(editText.getText()));
 
         // Move to the previous line and wait for an event.
         AccessibilityEvent eightExpected = getInstrumentation().getUiAutomation()
@@ -2794,8 +2802,8 @@
                         && event.getText().size() > 0
                         && event.getText().get(0).toString().equals(getString(
                                 R.string.android_wiki_short))
-                        && event.getFromIndex() == 19
-                        && event.getToIndex() == 35
+                        && event.getFromIndex() == 13
+                        && event.getToIndex() == 25
                         && event.getMovementGranularity() ==
                                 AccessibilityNodeInfo.MOVEMENT_GRANULARITY_LINE);
             }
@@ -2805,8 +2813,8 @@
         assertNotNull(eightExpected);
 
         // Verify the selection position.
-        assertEquals(53, Selection.getSelectionStart(editText.getText()));
-        assertEquals(19, Selection.getSelectionEnd(editText.getText()));
+        assertEquals(34, Selection.getSelectionStart(editText.getText()));
+        assertEquals(13, Selection.getSelectionEnd(editText.getText()));
 
         // Move to the previous line and wait for an event.
         AccessibilityEvent ninethExpected = getInstrumentation().getUiAutomation()
@@ -2830,7 +2838,7 @@
                         && event.getText().get(0).toString().equals(getString(
                                 R.string.android_wiki_short))
                         && event.getFromIndex() == 0
-                        && event.getToIndex() == 19
+                        && event.getToIndex() == 13
                         && event.getMovementGranularity() ==
                                 AccessibilityNodeInfo.MOVEMENT_GRANULARITY_LINE);
             }
@@ -2840,7 +2848,7 @@
         assertNotNull(ninethExpected);
 
         // Verify the selection position.
-        assertEquals(53, Selection.getSelectionStart(editText.getText()));
+        assertEquals(34, Selection.getSelectionStart(editText.getText()));
         assertEquals(0, Selection.getSelectionEnd(editText.getText()));
 
         // Make sure there is no previous.
@@ -2848,7 +2856,7 @@
                 AccessibilityNodeInfo.ACTION_PREVIOUS_AT_MOVEMENT_GRANULARITY, arguments));
 
         // Verify the selection position.
-        assertEquals(53, Selection.getSelectionStart(editText.getText()));
+        assertEquals(34, Selection.getSelectionStart(editText.getText()));
         assertEquals(0, Selection.getSelectionEnd(editText.getText()));
 
         // Move to the next line and wait for an event.
@@ -2873,7 +2881,7 @@
                         && event.getText().get(0).toString().equals(getString(
                                 R.string.android_wiki_short))
                         && event.getFromIndex() == 0
-                        && event.getToIndex() == 19
+                        && event.getToIndex() == 13
                         && event.getMovementGranularity() ==
                                 AccessibilityNodeInfo.MOVEMENT_GRANULARITY_LINE);
             }
@@ -2883,8 +2891,8 @@
         assertNotNull(tenthExpected);
 
         // Verify the selection position.
-        assertEquals(53, Selection.getSelectionStart(editText.getText()));
-        assertEquals(19, Selection.getSelectionEnd(editText.getText()));
+        assertEquals(34, Selection.getSelectionStart(editText.getText()));
+        assertEquals(13, Selection.getSelectionEnd(editText.getText()));
 
         // Move to the next line and wait for an event.
         AccessibilityEvent eleventhExpected = getInstrumentation().getUiAutomation()
@@ -2907,8 +2915,8 @@
                         && event.getText().size() > 0
                         && event.getText().get(0).toString().equals(getString(
                                 R.string.android_wiki_short))
-                        && event.getFromIndex() == 19
-                        && event.getToIndex() == 35
+                        && event.getFromIndex() == 13
+                        && event.getToIndex() == 25
                         && event.getMovementGranularity() ==
                                 AccessibilityNodeInfo.MOVEMENT_GRANULARITY_LINE);
             }
@@ -2918,8 +2926,8 @@
         assertNotNull(eleventhExpected);
 
         // Verify the selection position.
-        assertEquals(53, Selection.getSelectionStart(editText.getText()));
-        assertEquals(35, Selection.getSelectionEnd(editText.getText()));
+        assertEquals(34, Selection.getSelectionStart(editText.getText()));
+        assertEquals(25, Selection.getSelectionEnd(editText.getText()));
 
         // Move to the next line and wait for an event.
         AccessibilityEvent twelvethExpected = getInstrumentation().getUiAutomation()
@@ -2942,8 +2950,8 @@
                         && event.getText().size() > 0
                         && event.getText().get(0).toString().equals(getString(
                                 R.string.android_wiki_short))
-                        && event.getFromIndex() == 35
-                        && event.getToIndex() == 53
+                        && event.getFromIndex() == 25
+                        && event.getToIndex() == 34
                         && event.getMovementGranularity() ==
                                  AccessibilityNodeInfo.MOVEMENT_GRANULARITY_LINE);
             }
@@ -2953,8 +2961,8 @@
         assertNotNull(twelvethExpected);
 
         // Verify the selection position.
-        assertEquals(53, Selection.getSelectionStart(editText.getText()));
-        assertEquals(53, Selection.getSelectionEnd(editText.getText()));
+        assertEquals(34, Selection.getSelectionStart(editText.getText()));
+        assertEquals(34, Selection.getSelectionEnd(editText.getText()));
     }
 
     @MediumTest
@@ -2964,6 +2972,7 @@
         getInstrumentation().runOnMainSync(new Runnable() {
             @Override
             public void run() {
+                editText.setVisibility(View.VISIBLE);
                 editText.setText(getString(R.string.android_wiki));
                 Selection.removeSelection(editText.getText());
             }
@@ -3006,7 +3015,7 @@
                         && event.getText().get(0).toString().equals(getString(
                                 R.string.android_wiki))
                         && event.getFromIndex() == 0
-                        && event.getToIndex() == 139
+                        && event.getToIndex() == 53
                         && event.getMovementGranularity() ==
                                 AccessibilityNodeInfo.MOVEMENT_GRANULARITY_PAGE);
             }
@@ -3016,8 +3025,8 @@
         assertNotNull(firstExpected);
 
         // Verify the selection position.
-        assertEquals(139, Selection.getSelectionStart(editText.getText()));
-        assertEquals(139, Selection.getSelectionEnd(editText.getText()));
+        assertEquals(53, Selection.getSelectionStart(editText.getText()));
+        assertEquals(53, Selection.getSelectionEnd(editText.getText()));
 
         // Move to the next page and wait for an event.
         AccessibilityEvent secondExpected = getInstrumentation().getUiAutomation()
@@ -3040,8 +3049,8 @@
                         && event.getText().size() > 0
                         && event.getText().get(0).toString().equals(getString(
                                 R.string.android_wiki))
-                        && event.getFromIndex() == 139
-                        && event.getToIndex() == 285
+                        && event.getFromIndex() == 53
+                        && event.getToIndex() == 103
                         && event.getMovementGranularity() ==
                                 AccessibilityNodeInfo.MOVEMENT_GRANULARITY_PAGE);
             }
@@ -3051,8 +3060,8 @@
         assertNotNull(secondExpected);
 
         // Verify the selection position.
-        assertEquals(285, Selection.getSelectionStart(editText.getText()));
-        assertEquals(285, Selection.getSelectionEnd(editText.getText()));
+        assertEquals(103, Selection.getSelectionStart(editText.getText()));
+        assertEquals(103, Selection.getSelectionEnd(editText.getText()));
 
         // Move to the next page and wait for an event.
         AccessibilityEvent thirdExpected = getInstrumentation().getUiAutomation()
@@ -3075,8 +3084,8 @@
                         && event.getText().size() > 0
                         && event.getText().get(0).toString().equals(getString(
                                 R.string.android_wiki))
-                        && event.getFromIndex() == 285
-                        && event.getToIndex() == 436
+                        && event.getFromIndex() == 103
+                        && event.getToIndex() == 153
                         && event.getMovementGranularity() ==
                                 AccessibilityNodeInfo.MOVEMENT_GRANULARITY_PAGE);
             }
@@ -3086,16 +3095,16 @@
         assertNotNull(thirdExpected);
 
         // Verify the selection position.
-        assertEquals(436, Selection.getSelectionStart(editText.getText()));
-        assertEquals(436, Selection.getSelectionEnd(editText.getText()));
+        assertEquals(153, Selection.getSelectionStart(editText.getText()));
+        assertEquals(153, Selection.getSelectionEnd(editText.getText()));
 
         // Make sure there is no next.
         assertFalse(text.performAction(
                 AccessibilityNodeInfo.ACTION_NEXT_AT_MOVEMENT_GRANULARITY, arguments));
 
         // Verify the selection position.
-        assertEquals(436, Selection.getSelectionStart(editText.getText()));
-        assertEquals(436, Selection.getSelectionEnd(editText.getText()));
+        assertEquals(153, Selection.getSelectionStart(editText.getText()));
+        assertEquals(153, Selection.getSelectionEnd(editText.getText()));
 
         // Move to the previous page and wait for an event.
         AccessibilityEvent fourthExpected = getInstrumentation().getUiAutomation()
@@ -3118,8 +3127,8 @@
                         && event.getText().size() > 0
                         && event.getText().get(0).toString().equals(getString(
                                 R.string.android_wiki))
-                        && event.getFromIndex() == 285
-                        && event.getToIndex() == 436
+                        && event.getFromIndex() == 103
+                        && event.getToIndex() == 153
                         && event.getMovementGranularity() ==
                                 AccessibilityNodeInfo.MOVEMENT_GRANULARITY_PAGE);
             }
@@ -3129,8 +3138,8 @@
         assertNotNull(fourthExpected);
 
         // Verify the selection position.
-        assertEquals(285, Selection.getSelectionStart(editText.getText()));
-        assertEquals(285, Selection.getSelectionEnd(editText.getText()));
+        assertEquals(103, Selection.getSelectionStart(editText.getText()));
+        assertEquals(103, Selection.getSelectionEnd(editText.getText()));
 
         // Move to the previous page and wait for an event.
         AccessibilityEvent fifthExpected = getInstrumentation().getUiAutomation()
@@ -3153,8 +3162,8 @@
                         && event.getText().size() > 0
                         && event.getText().get(0).toString().equals(getString(
                                 R.string.android_wiki))
-                        && event.getFromIndex() == 139
-                        && event.getToIndex() == 285
+                        && event.getFromIndex() == 53
+                        && event.getToIndex() == 103
                         && event.getMovementGranularity() ==
                                 AccessibilityNodeInfo.MOVEMENT_GRANULARITY_PAGE);
             }
@@ -3164,8 +3173,8 @@
         assertNotNull(fifthExpected);
 
         // Verify the selection position.
-        assertEquals(139, Selection.getSelectionStart(editText.getText()));
-        assertEquals(139, Selection.getSelectionEnd(editText.getText()));
+        assertEquals(53, Selection.getSelectionStart(editText.getText()));
+        assertEquals(53, Selection.getSelectionEnd(editText.getText()));
 
         // Move to the previous page and wait for an event.
         AccessibilityEvent sixthExpected = getInstrumentation().getUiAutomation()
@@ -3189,7 +3198,7 @@
                         && event.getText().get(0).toString().equals(getString(
                                 R.string.android_wiki))
                         && event.getFromIndex() == 0
-                        && event.getToIndex() == 139
+                        && event.getToIndex() == 53
                         && event.getMovementGranularity() ==
                                 AccessibilityNodeInfo.MOVEMENT_GRANULARITY_PAGE);
             }
@@ -3218,6 +3227,7 @@
         getInstrumentation().runOnMainSync(new Runnable() {
             @Override
             public void run() {
+                editText.setVisibility(View.VISIBLE);
                 editText.setText(getString(R.string.android_wiki));
                 Selection.removeSelection(editText.getText());
             }
@@ -3261,7 +3271,7 @@
                         && event.getText().get(0).toString().equals(getString(
                                 R.string.android_wiki))
                         && event.getFromIndex() == 0
-                        && event.getToIndex() == 139
+                        && event.getToIndex() == 53
                         && event.getMovementGranularity() ==
                                 AccessibilityNodeInfo.MOVEMENT_GRANULARITY_PAGE);
             }
@@ -3272,7 +3282,7 @@
 
         // Verify the selection position.
         assertEquals(0, Selection.getSelectionStart(editText.getText()));
-        assertEquals(139, Selection.getSelectionEnd(editText.getText()));
+        assertEquals(53, Selection.getSelectionEnd(editText.getText()));
 
         // Move to the next page and wait for an event.
         AccessibilityEvent secondExpected = getInstrumentation().getUiAutomation()
@@ -3295,8 +3305,8 @@
                         && event.getText().size() > 0
                         && event.getText().get(0).toString().equals(getString(
                                 R.string.android_wiki))
-                        && event.getFromIndex() == 139
-                        && event.getToIndex() == 285
+                        && event.getFromIndex() == 53
+                        && event.getToIndex() == 103
                         && event.getMovementGranularity() ==
                                 AccessibilityNodeInfo.MOVEMENT_GRANULARITY_PAGE);
             }
@@ -3307,7 +3317,7 @@
 
         // Verify the selection position.
         assertEquals(0, Selection.getSelectionStart(editText.getText()));
-        assertEquals(285, Selection.getSelectionEnd(editText.getText()));
+        assertEquals(103, Selection.getSelectionEnd(editText.getText()));
 
         // Move to the next page and wait for an event.
         AccessibilityEvent thirdExpected = getInstrumentation().getUiAutomation()
@@ -3330,8 +3340,8 @@
                         && event.getText().size() > 0
                         && event.getText().get(0).toString().equals(getString(
                                 R.string.android_wiki))
-                        && event.getFromIndex() == 285
-                        && event.getToIndex() == 436
+                        && event.getFromIndex() == 103
+                        && event.getToIndex() == 153
                         && event.getMovementGranularity() ==
                                 AccessibilityNodeInfo.MOVEMENT_GRANULARITY_PAGE);
             }
@@ -3342,7 +3352,7 @@
 
         // Verify the selection position.
         assertEquals(0, Selection.getSelectionStart(editText.getText()));
-        assertEquals(436, Selection.getSelectionEnd(editText.getText()));
+        assertEquals(153, Selection.getSelectionEnd(editText.getText()));
 
         // Make sure there is no next.
         assertFalse(text.performAction(
@@ -3369,8 +3379,8 @@
                         && event.getText().size() > 0
                         && event.getText().get(0).toString().equals(getString(
                                 R.string.android_wiki))
-                        && event.getFromIndex() == 285
-                        && event.getToIndex() == 436
+                        && event.getFromIndex() == 103
+                        && event.getToIndex() == 153
                         && event.getMovementGranularity() ==
                                 AccessibilityNodeInfo.MOVEMENT_GRANULARITY_PAGE);
             }
@@ -3381,7 +3391,7 @@
 
         // Verify the selection position.
         assertEquals(0, Selection.getSelectionStart(editText.getText()));
-        assertEquals(285, Selection.getSelectionEnd(editText.getText()));
+        assertEquals(103, Selection.getSelectionEnd(editText.getText()));
 
         // Move to the previous page and wait for an event.
         AccessibilityEvent fifthExpected = getInstrumentation().getUiAutomation()
@@ -3404,8 +3414,8 @@
                         && event.getText().size() > 0
                         && event.getText().get(0).toString().equals(getString(
                                 R.string.android_wiki))
-                        && event.getFromIndex() == 139
-                        && event.getToIndex() == 285
+                        && event.getFromIndex() == 53
+                        && event.getToIndex() == 103
                         && event.getMovementGranularity() ==
                                 AccessibilityNodeInfo.MOVEMENT_GRANULARITY_PAGE);
             }
@@ -3416,7 +3426,7 @@
 
         // Verify the selection position.
         assertEquals(0, Selection.getSelectionStart(editText.getText()));
-        assertEquals(139, Selection.getSelectionEnd(editText.getText()));
+        assertEquals(53, Selection.getSelectionEnd(editText.getText()));
 
         // Move to the previous page and wait for an event.
         AccessibilityEvent sixthExpected = getInstrumentation().getUiAutomation()
@@ -3440,7 +3450,7 @@
                         && event.getText().get(0).toString().equals(getString(
                                 R.string.android_wiki))
                         && event.getFromIndex() == 0
-                        && event.getToIndex() == 139
+                        && event.getToIndex() == 53
                         && event.getMovementGranularity() ==
                                 AccessibilityNodeInfo.MOVEMENT_GRANULARITY_PAGE);
             }
@@ -3472,14 +3482,14 @@
 
         // Put selection at the end of the text.
         Bundle setSelectionArgs = new Bundle();
-        setSelectionArgs.putInt(AccessibilityNodeInfo.ACTION_ARGUMENT_SELECTION_START_INT, 436);
-        setSelectionArgs.putInt(AccessibilityNodeInfo.ACTION_ARGUMENT_SELECTION_END_INT, 436);
+        setSelectionArgs.putInt(AccessibilityNodeInfo.ACTION_ARGUMENT_SELECTION_START_INT, 153);
+        setSelectionArgs.putInt(AccessibilityNodeInfo.ACTION_ARGUMENT_SELECTION_END_INT, 153);
         assertTrue(text.performAction(
                 AccessibilityNodeInfo.ACTION_SET_SELECTION, setSelectionArgs));
 
         // Verify the selection position.
-        assertEquals(436, Selection.getSelectionStart(editText.getText()));
-        assertEquals(436, Selection.getSelectionEnd(editText.getText()));
+        assertEquals(153, Selection.getSelectionStart(editText.getText()));
+        assertEquals(153, Selection.getSelectionEnd(editText.getText()));
 
         // Unfocus the view so we can hide the soft-keyboard.
         getInstrumentation().runOnMainSync(new Runnable() {
@@ -3511,8 +3521,8 @@
                         && event.getText().size() > 0
                         && event.getText().get(0).toString().equals(getString(
                                 R.string.android_wiki))
-                        && event.getFromIndex() == 285
-                        && event.getToIndex() == 436
+                        && event.getFromIndex() == 103
+                        && event.getToIndex() == 153
                         && event.getMovementGranularity() ==
                                 AccessibilityNodeInfo.MOVEMENT_GRANULARITY_PAGE);
             }
@@ -3522,8 +3532,8 @@
         assertNotNull(seventhExpected);
 
         // Verify the selection position.
-        assertEquals(436, Selection.getSelectionStart(editText.getText()));
-        assertEquals(285, Selection.getSelectionEnd(editText.getText()));
+        assertEquals(153, Selection.getSelectionStart(editText.getText()));
+        assertEquals(103, Selection.getSelectionEnd(editText.getText()));
 
         // Move to the previous page and wait for an event.
         AccessibilityEvent eightExpected = getInstrumentation().getUiAutomation()
@@ -3546,8 +3556,8 @@
                         && event.getText().size() > 0
                         && event.getText().get(0).toString().equals(getString(
                                 R.string.android_wiki))
-                        && event.getFromIndex() == 139
-                        && event.getToIndex() == 285
+                        && event.getFromIndex() == 53
+                        && event.getToIndex() == 103
                         && event.getMovementGranularity() ==
                                 AccessibilityNodeInfo.MOVEMENT_GRANULARITY_PAGE);
             }
@@ -3557,8 +3567,8 @@
         assertNotNull(eightExpected);
 
         // Verify the selection position.
-        assertEquals(436, Selection.getSelectionStart(editText.getText()));
-        assertEquals(139, Selection.getSelectionEnd(editText.getText()));
+        assertEquals(153, Selection.getSelectionStart(editText.getText()));
+        assertEquals(53, Selection.getSelectionEnd(editText.getText()));
 
         // Move to the previous page and wait for an event.
         AccessibilityEvent ninethExpected = getInstrumentation().getUiAutomation()
@@ -3582,7 +3592,7 @@
                         && event.getText().get(0).toString().equals(getString(
                                 R.string.android_wiki))
                         && event.getFromIndex() == 0
-                        && event.getToIndex() == 139
+                        && event.getToIndex() == 53
                         && event.getMovementGranularity() ==
                                 AccessibilityNodeInfo.MOVEMENT_GRANULARITY_PAGE);
             }
@@ -3592,7 +3602,7 @@
         assertNotNull(ninethExpected);
 
         // Verify the selection position.
-        assertEquals(436, Selection.getSelectionStart(editText.getText()));
+        assertEquals(153, Selection.getSelectionStart(editText.getText()));
         assertEquals(0, Selection.getSelectionEnd(editText.getText()));
 
         // Make sure there is no previous.
@@ -3600,7 +3610,7 @@
                 AccessibilityNodeInfo.ACTION_PREVIOUS_AT_MOVEMENT_GRANULARITY, arguments));
 
         // Verify the selection position.
-        assertEquals(436, Selection.getSelectionStart(editText.getText()));
+        assertEquals(153, Selection.getSelectionStart(editText.getText()));
         assertEquals(0, Selection.getSelectionEnd(editText.getText()));
 
         // Move to the next page and wait for an event.
@@ -3625,7 +3635,7 @@
                         && event.getText().get(0).toString().equals(getString(
                                 R.string.android_wiki))
                         && event.getFromIndex() == 0
-                        && event.getToIndex() == 139
+                        && event.getToIndex() == 53
                         && event.getMovementGranularity() ==
                                 AccessibilityNodeInfo.MOVEMENT_GRANULARITY_PAGE);
             }
@@ -3635,8 +3645,8 @@
         assertNotNull(tenthExpected);
 
         // Verify the selection position.
-        assertEquals(436, Selection.getSelectionStart(editText.getText()));
-        assertEquals(139, Selection.getSelectionEnd(editText.getText()));
+        assertEquals(153, Selection.getSelectionStart(editText.getText()));
+        assertEquals(53, Selection.getSelectionEnd(editText.getText()));
 
         // Move to the next page and wait for an event.
         AccessibilityEvent eleventhExpected = getInstrumentation().getUiAutomation()
@@ -3659,8 +3669,8 @@
                         && event.getText().size() > 0
                         && event.getText().get(0).toString().equals(getString(
                                 R.string.android_wiki))
-                        && event.getFromIndex() == 139
-                        && event.getToIndex() == 285
+                        && event.getFromIndex() == 53
+                        && event.getToIndex() == 103
                         && event.getMovementGranularity() ==
                                 AccessibilityNodeInfo.MOVEMENT_GRANULARITY_PAGE);
             }
@@ -3670,8 +3680,8 @@
         assertNotNull(eleventhExpected);
 
         // Verify the selection position.
-        assertEquals(436, Selection.getSelectionStart(editText.getText()));
-        assertEquals(285, Selection.getSelectionEnd(editText.getText()));
+        assertEquals(153, Selection.getSelectionStart(editText.getText()));
+        assertEquals(103, Selection.getSelectionEnd(editText.getText()));
 
         // Move to the next page and wait for an event.
         AccessibilityEvent twelvethExpected = getInstrumentation().getUiAutomation()
@@ -3694,8 +3704,8 @@
                         && event.getText().size() > 0
                         && event.getText().get(0).toString().equals(getString(
                                 R.string.android_wiki))
-                        && event.getFromIndex() == 285
-                        && event.getToIndex() == 436
+                        && event.getFromIndex() == 103
+                        && event.getToIndex() == 153
                         && event.getMovementGranularity() ==
                                 AccessibilityNodeInfo.MOVEMENT_GRANULARITY_PAGE);
             }
@@ -3705,8 +3715,8 @@
         assertNotNull(twelvethExpected);
 
         // Verify the selection position.
-        assertEquals(436, Selection.getSelectionStart(editText.getText()));
-        assertEquals(436, Selection.getSelectionEnd(editText.getText()));
+        assertEquals(153, Selection.getSelectionStart(editText.getText()));
+        assertEquals(153, Selection.getSelectionEnd(editText.getText()));
     }
 
     @MediumTest
@@ -3716,13 +3726,14 @@
         getInstrumentation().runOnMainSync(new Runnable() {
             @Override
             public void run() {
+                textView.setVisibility(View.VISIBLE);
                 textView.setText(getString(R.string.android_wiki_paragraphs));
             }
         });
 
         final AccessibilityNodeInfo text = getInstrumentation().getUiAutomation()
                .getRootInActiveWindow().findAccessibilityNodeInfosByText(getString(
-                       R.string.android_wiki_short)).get(0);
+                       R.string.android_wiki_paragraphs)).get(0);
 
         final int granularities = text.getMovementGranularities();
         assertEquals(granularities, AccessibilityNodeInfo.MOVEMENT_GRANULARITY_CHARACTER
@@ -3757,7 +3768,7 @@
                         && event.getText().get(0).toString().equals(getString(
                                 R.string.android_wiki_paragraphs))
                         && event.getFromIndex() == 2
-                        && event.getToIndex() == 104
+                        && event.getToIndex() == 14
                         && event.getMovementGranularity() ==
                                  AccessibilityNodeInfo.MOVEMENT_GRANULARITY_PARAGRAPH);
             }
@@ -3767,8 +3778,8 @@
         assertNotNull(firstExpected);
 
         // Verify the selection position.
-        assertEquals(104, Selection.getSelectionStart(textView.getText()));
-        assertEquals(104, Selection.getSelectionEnd(textView.getText()));
+        assertEquals(14, Selection.getSelectionStart(textView.getText()));
+        assertEquals(14, Selection.getSelectionEnd(textView.getText()));
 
         // Move to the next paragraph and wait for an event.
         AccessibilityEvent secondExpected = getInstrumentation().getUiAutomation()
@@ -3791,8 +3802,8 @@
                         && event.getText().size() > 0
                         && event.getText().get(0).toString().equals(getString(
                                 R.string.android_wiki_paragraphs))
-                        && event.getFromIndex() == 106
-                        && event.getToIndex() == 267
+                        && event.getFromIndex() == 16
+                        && event.getToIndex() == 32
                         && event.getMovementGranularity() ==
                                 AccessibilityNodeInfo.MOVEMENT_GRANULARITY_PARAGRAPH);
             }
@@ -3802,8 +3813,8 @@
         assertNotNull(secondExpected);
 
         // Verify the selection position.
-        assertEquals(267, Selection.getSelectionStart(textView.getText()));
-        assertEquals(267, Selection.getSelectionEnd(textView.getText()));
+        assertEquals(32, Selection.getSelectionStart(textView.getText()));
+        assertEquals(32, Selection.getSelectionEnd(textView.getText()));
 
         // Move to the next paragraph and wait for an event.
         AccessibilityEvent thirdExpected = getInstrumentation().getUiAutomation()
@@ -3826,8 +3837,8 @@
                         && event.getText().size() > 0
                         && event.getText().get(0).toString().equals(getString(
                                 R.string.android_wiki_paragraphs))
-                        && event.getFromIndex() == 268
-                        && event.getToIndex() == 582
+                        && event.getFromIndex() == 33
+                        && event.getToIndex() == 47
                         && event.getMovementGranularity() ==
                                 AccessibilityNodeInfo.MOVEMENT_GRANULARITY_PARAGRAPH);
             }
@@ -3837,16 +3848,16 @@
         assertNotNull(thirdExpected);
 
         // Verify the selection position.
-        assertEquals(582, Selection.getSelectionStart(textView.getText()));
-        assertEquals(582, Selection.getSelectionEnd(textView.getText()));
+        assertEquals(47, Selection.getSelectionStart(textView.getText()));
+        assertEquals(47, Selection.getSelectionEnd(textView.getText()));
 
         // Make sure there is no next.
         assertFalse(text.performAction(
                 AccessibilityNodeInfo.ACTION_NEXT_AT_MOVEMENT_GRANULARITY, arguments));
 
         // Verify the selection position.
-        assertEquals(582, Selection.getSelectionStart(textView.getText()));
-        assertEquals(582, Selection.getSelectionEnd(textView.getText()));
+        assertEquals(47, Selection.getSelectionStart(textView.getText()));
+        assertEquals(47, Selection.getSelectionEnd(textView.getText()));
 
         // Move to the previous paragraph and wait for an event.
         AccessibilityEvent fourthExpected = getInstrumentation().getUiAutomation()
@@ -3869,8 +3880,8 @@
                         && event.getText().size() > 0
                         && event.getText().get(0).toString().equals(getString(
                                 R.string.android_wiki_paragraphs))
-                        && event.getFromIndex() == 268
-                        && event.getToIndex() == 582
+                        && event.getFromIndex() == 33
+                        && event.getToIndex() == 47
                         && event.getMovementGranularity() ==
                                  AccessibilityNodeInfo.MOVEMENT_GRANULARITY_PARAGRAPH);
             }
@@ -3880,8 +3891,8 @@
         assertNotNull(fourthExpected);
 
         // Verify the selection position.
-        assertEquals(268, Selection.getSelectionStart(textView.getText()));
-        assertEquals(268, Selection.getSelectionEnd(textView.getText()));
+        assertEquals(33, Selection.getSelectionStart(textView.getText()));
+        assertEquals(33, Selection.getSelectionEnd(textView.getText()));
 
         // Move to the previous paragraph and wait for an event.
         AccessibilityEvent fifthExpected = getInstrumentation().getUiAutomation()
@@ -3904,8 +3915,8 @@
                         && event.getText().size() > 0
                         && event.getText().get(0).toString().equals(getString(
                                 R.string.android_wiki_paragraphs))
-                        && event.getFromIndex() == 106
-                        && event.getToIndex() == 267
+                        && event.getFromIndex() == 16
+                        && event.getToIndex() == 32
                         && event.getMovementGranularity() ==
                                 AccessibilityNodeInfo.MOVEMENT_GRANULARITY_PARAGRAPH);
             }
@@ -3915,8 +3926,8 @@
         assertNotNull(fifthExpected);
 
         // Verify the selection position.
-        assertEquals(106, Selection.getSelectionStart(textView.getText()));
-        assertEquals(106, Selection.getSelectionEnd(textView.getText()));
+        assertEquals(16, Selection.getSelectionStart(textView.getText()));
+        assertEquals(16, Selection.getSelectionEnd(textView.getText()));
 
         // Move to the previous paragraph and wait for an event.
         AccessibilityEvent sixthExpected = getInstrumentation().getUiAutomation()
@@ -3940,7 +3951,7 @@
                         && event.getText().get(0).toString().equals(getString(
                                 R.string.android_wiki_paragraphs))
                         && event.getFromIndex() == 2
-                        && event.getToIndex() == 104
+                        && event.getToIndex() == 14
                         && event.getMovementGranularity() ==
                                 AccessibilityNodeInfo.MOVEMENT_GRANULARITY_PARAGRAPH);
             }
@@ -3969,6 +3980,7 @@
         getInstrumentation().runOnMainSync(new Runnable() {
             @Override
             public void run() {
+                editText.setVisibility(View.VISIBLE);
                 editText.setText(getString(R.string.android_wiki_paragraphs));
                 Selection.removeSelection(editText.getText());
             }
@@ -3976,7 +3988,7 @@
 
         final AccessibilityNodeInfo text = getInstrumentation().getUiAutomation()
                .getRootInActiveWindow().findAccessibilityNodeInfosByText(getString(
-                       R.string.android_wiki_short)).get(0);
+                       R.string.android_wiki_paragraphs)).get(0);
 
         final int granularities = text.getMovementGranularities();
         assertEquals(granularities, AccessibilityNodeInfo.MOVEMENT_GRANULARITY_CHARACTER
@@ -4012,7 +4024,7 @@
                         && event.getText().get(0).toString().equals(getString(
                                 R.string.android_wiki_paragraphs))
                         && event.getFromIndex() == 2
-                        && event.getToIndex() == 104
+                        && event.getToIndex() == 14
                         && event.getMovementGranularity() ==
                                 AccessibilityNodeInfo.MOVEMENT_GRANULARITY_PARAGRAPH);
             }
@@ -4023,7 +4035,7 @@
 
         // Verify the selection position.
         assertEquals(2, Selection.getSelectionStart(editText.getText()));
-        assertEquals(104, Selection.getSelectionEnd(editText.getText()));
+        assertEquals(14, Selection.getSelectionEnd(editText.getText()));
 
         // Move to the next paragraph and wait for an event.
         AccessibilityEvent secondExpected = getInstrumentation().getUiAutomation()
@@ -4046,8 +4058,8 @@
                         && event.getText().size() > 0
                         && event.getText().get(0).toString().equals(getString(
                                 R.string.android_wiki_paragraphs))
-                        && event.getFromIndex() == 106
-                        && event.getToIndex() == 267
+                        && event.getFromIndex() == 16
+                        && event.getToIndex() == 32
                         && event.getMovementGranularity() ==
                                 AccessibilityNodeInfo.MOVEMENT_GRANULARITY_PARAGRAPH);
             }
@@ -4058,7 +4070,7 @@
 
         // Verify the selection position.
         assertEquals(2, Selection.getSelectionStart(editText.getText()));
-        assertEquals(267, Selection.getSelectionEnd(editText.getText()));
+        assertEquals(32, Selection.getSelectionEnd(editText.getText()));
 
         // Move to the next paragraph and wait for an event.
         AccessibilityEvent thirdExpected = getInstrumentation().getUiAutomation()
@@ -4081,8 +4093,8 @@
                         && event.getText().size() > 0
                         && event.getText().get(0).toString().equals(getString(
                                 R.string.android_wiki_paragraphs))
-                        && event.getFromIndex() == 268
-                        && event.getToIndex() == 582
+                        && event.getFromIndex() == 33
+                        && event.getToIndex() == 47
                         && event.getMovementGranularity() ==
                                 AccessibilityNodeInfo.MOVEMENT_GRANULARITY_PARAGRAPH);
             }
@@ -4093,7 +4105,7 @@
 
         // Verify the selection position.
         assertEquals(2, Selection.getSelectionStart(editText.getText()));
-        assertEquals(582, Selection.getSelectionEnd(editText.getText()));
+        assertEquals(47, Selection.getSelectionEnd(editText.getText()));
 
         // Make sure there is no next.
         assertFalse(text.performAction(
@@ -4101,7 +4113,7 @@
 
         // Verify the selection position.
         assertEquals(2, Selection.getSelectionStart(editText.getText()));
-        assertEquals(582, Selection.getSelectionEnd(editText.getText()));
+        assertEquals(47, Selection.getSelectionEnd(editText.getText()));
 
         // Move to the previous paragraph and wait for an event.
         AccessibilityEvent fourthExpected = getInstrumentation().getUiAutomation()
@@ -4124,8 +4136,8 @@
                         && event.getText().size() > 0
                         && event.getText().get(0).toString().equals(getString(
                                 R.string.android_wiki_paragraphs))
-                        && event.getFromIndex() == 268
-                        && event.getToIndex() == 582
+                        && event.getFromIndex() == 33
+                        && event.getToIndex() == 47
                         && event.getMovementGranularity() ==
                                 AccessibilityNodeInfo.MOVEMENT_GRANULARITY_PARAGRAPH);
             }
@@ -4136,7 +4148,7 @@
 
         // Verify the selection position.
         assertEquals(2, Selection.getSelectionStart(editText.getText()));
-        assertEquals(268, Selection.getSelectionEnd(editText.getText()));
+        assertEquals(33, Selection.getSelectionEnd(editText.getText()));
 
         // Move to the previous paragraph and wait for an event.
         AccessibilityEvent fifthExpected = getInstrumentation().getUiAutomation()
@@ -4159,8 +4171,8 @@
                         && event.getText().size() > 0
                         && event.getText().get(0).toString().equals(getString(
                                 R.string.android_wiki_paragraphs))
-                        && event.getFromIndex() == 106
-                        && event.getToIndex() == 267
+                        && event.getFromIndex() == 16
+                        && event.getToIndex() == 32
                         && event.getMovementGranularity() ==
                                 AccessibilityNodeInfo.MOVEMENT_GRANULARITY_PARAGRAPH);
             }
@@ -4171,7 +4183,7 @@
 
         // Verify the selection position.
         assertEquals(2, Selection.getSelectionStart(editText.getText()));
-        assertEquals(106, Selection.getSelectionEnd(editText.getText()));
+        assertEquals(16, Selection.getSelectionEnd(editText.getText()));
 
         // Move to the previous paragraph and wait for an event.
         AccessibilityEvent sixthExpected = getInstrumentation().getUiAutomation()
@@ -4195,7 +4207,7 @@
                         && event.getText().get(0).toString().equals(getString(
                                 R.string.android_wiki_paragraphs))
                         && event.getFromIndex() == 2
-                        && event.getToIndex() == 104
+                        && event.getToIndex() == 14
                         && event.getMovementGranularity() ==
                                 AccessibilityNodeInfo.MOVEMENT_GRANULARITY_PARAGRAPH);
             }
@@ -4227,14 +4239,14 @@
 
         // Put selection at the end of the text.
         Bundle setSelectionArgs = new Bundle();
-        setSelectionArgs.putInt(AccessibilityNodeInfo.ACTION_ARGUMENT_SELECTION_START_INT, 582);
-        setSelectionArgs.putInt(AccessibilityNodeInfo.ACTION_ARGUMENT_SELECTION_END_INT, 582);
+        setSelectionArgs.putInt(AccessibilityNodeInfo.ACTION_ARGUMENT_SELECTION_START_INT, 47);
+        setSelectionArgs.putInt(AccessibilityNodeInfo.ACTION_ARGUMENT_SELECTION_END_INT, 47);
         assertTrue(text.performAction(
                 AccessibilityNodeInfo.ACTION_SET_SELECTION, setSelectionArgs));
 
         // Verify the selection position.
-        assertEquals(582, Selection.getSelectionStart(editText.getText()));
-        assertEquals(582, Selection.getSelectionEnd(editText.getText()));
+        assertEquals(47, Selection.getSelectionStart(editText.getText()));
+        assertEquals(47, Selection.getSelectionEnd(editText.getText()));
 
         // Unfocus the view so we can get rid of the soft-keyboard.
         getInstrumentation().runOnMainSync(new Runnable() {
@@ -4266,8 +4278,8 @@
                         && event.getText().size() > 0
                         && event.getText().get(0).toString().equals(getString(
                                 R.string.android_wiki_paragraphs))
-                        && event.getFromIndex() == 268
-                        && event.getToIndex() == 582
+                        && event.getFromIndex() == 33
+                        && event.getToIndex() == 47
                         && event.getMovementGranularity() ==
                                 AccessibilityNodeInfo.MOVEMENT_GRANULARITY_PARAGRAPH);
             }
@@ -4277,8 +4289,8 @@
         assertNotNull(seventhExpected);
 
         // Verify the selection position.
-        assertEquals(582, Selection.getSelectionStart(editText.getText()));
-        assertEquals(268, Selection.getSelectionEnd(editText.getText()));
+        assertEquals(47, Selection.getSelectionStart(editText.getText()));
+        assertEquals(33, Selection.getSelectionEnd(editText.getText()));
 
         // Move to the previous paragraph and wait for an event.
         AccessibilityEvent eightExpected = getInstrumentation().getUiAutomation()
@@ -4301,8 +4313,8 @@
                         && event.getText().size() > 0
                         && event.getText().get(0).toString().equals(getString(
                                 R.string.android_wiki_paragraphs))
-                        && event.getFromIndex() == 106
-                        && event.getToIndex() == 267
+                        && event.getFromIndex() == 16
+                        && event.getToIndex() == 32
                         && event.getMovementGranularity() ==
                                 AccessibilityNodeInfo.MOVEMENT_GRANULARITY_PARAGRAPH);
             }
@@ -4312,8 +4324,8 @@
         assertNotNull(eightExpected);
 
         // Verify the selection position.
-        assertEquals(582, Selection.getSelectionStart(editText.getText()));
-        assertEquals(106, Selection.getSelectionEnd(editText.getText()));
+        assertEquals(47, Selection.getSelectionStart(editText.getText()));
+        assertEquals(16, Selection.getSelectionEnd(editText.getText()));
 
         // Move to the previous paragraph and wait for an event.
         AccessibilityEvent ninethExpected = getInstrumentation().getUiAutomation()
@@ -4337,7 +4349,7 @@
                         && event.getText().get(0).toString().equals(getString(
                                 R.string.android_wiki_paragraphs))
                         && event.getFromIndex() == 2
-                        && event.getToIndex() == 104
+                        && event.getToIndex() == 14
                         && event.getMovementGranularity() ==
                                 AccessibilityNodeInfo.MOVEMENT_GRANULARITY_PARAGRAPH);
             }
@@ -4347,7 +4359,7 @@
         assertNotNull(ninethExpected);
 
         // Verify the selection position.
-        assertEquals(582, Selection.getSelectionStart(editText.getText()));
+        assertEquals(47, Selection.getSelectionStart(editText.getText()));
         assertEquals(2, Selection.getSelectionEnd(editText.getText()));
 
         // Make sure there is no previous.
@@ -4355,7 +4367,7 @@
                 AccessibilityNodeInfo.ACTION_PREVIOUS_AT_MOVEMENT_GRANULARITY, arguments));
 
         // Verify the selection position.
-        assertEquals(582, Selection.getSelectionStart(editText.getText()));
+        assertEquals(47, Selection.getSelectionStart(editText.getText()));
         assertEquals(2, Selection.getSelectionEnd(editText.getText()));
 
         // Move to the next paragraph and wait for an event.
@@ -4380,7 +4392,7 @@
                         && event.getText().get(0).toString().equals(getString(
                                 R.string.android_wiki_paragraphs))
                         && event.getFromIndex() == 2
-                        && event.getToIndex() == 104
+                        && event.getToIndex() == 14
                         && event.getMovementGranularity() ==
                                 AccessibilityNodeInfo.MOVEMENT_GRANULARITY_PARAGRAPH);
             }
@@ -4390,8 +4402,8 @@
         assertNotNull(tenthExpected);
 
         // Verify the selection position.
-        assertEquals(582, Selection.getSelectionStart(editText.getText()));
-        assertEquals(104, Selection.getSelectionEnd(editText.getText()));
+        assertEquals(47, Selection.getSelectionStart(editText.getText()));
+        assertEquals(14, Selection.getSelectionEnd(editText.getText()));
 
         // Move to the next paragraph and wait for an event.
         AccessibilityEvent eleventhExpected = getInstrumentation().getUiAutomation()
@@ -4414,8 +4426,8 @@
                         && event.getText().size() > 0
                         && event.getText().get(0).toString().equals(getString(
                                 R.string.android_wiki_paragraphs))
-                        && event.getFromIndex() == 106
-                        && event.getToIndex() == 267
+                        && event.getFromIndex() == 16
+                        && event.getToIndex() == 32
                         && event.getMovementGranularity() ==
                                 AccessibilityNodeInfo.MOVEMENT_GRANULARITY_PARAGRAPH);
             }
@@ -4425,8 +4437,8 @@
         assertNotNull(eleventhExpected);
 
         // Verify the selection position.
-        assertEquals(582, Selection.getSelectionStart(editText.getText()));
-        assertEquals(267, Selection.getSelectionEnd(editText.getText()));
+        assertEquals(47, Selection.getSelectionStart(editText.getText()));
+        assertEquals(32, Selection.getSelectionEnd(editText.getText()));
 
         // Move to the next paragraph and wait for an event.
         AccessibilityEvent twlevethExpected = getInstrumentation().getUiAutomation()
@@ -4449,8 +4461,8 @@
                         && event.getText().size() > 0
                         && event.getText().get(0).toString().equals(getString(
                                 R.string.android_wiki_paragraphs))
-                        && event.getFromIndex() == 268
-                        && event.getToIndex() == 582
+                        && event.getFromIndex() == 33
+                        && event.getToIndex() == 47
                         && event.getMovementGranularity() ==
                                 AccessibilityNodeInfo.MOVEMENT_GRANULARITY_PARAGRAPH);
             }
@@ -4460,16 +4472,16 @@
         assertNotNull(twlevethExpected);
 
         // Verify the selection position.
-        assertEquals(582, Selection.getSelectionStart(editText.getText()));
-        assertEquals(582, Selection.getSelectionEnd(editText.getText()));
+        assertEquals(47, Selection.getSelectionStart(editText.getText()));
+        assertEquals(47, Selection.getSelectionEnd(editText.getText()));
 
         // Make sure there is no next.
         assertFalse(text.performAction(
                 AccessibilityNodeInfo.ACTION_NEXT_AT_MOVEMENT_GRANULARITY, arguments));
 
         // Verify the selection position.
-        assertEquals(582, Selection.getSelectionStart(editText.getText()));
-        assertEquals(582, Selection.getSelectionEnd(editText.getText()));
+        assertEquals(47, Selection.getSelectionStart(editText.getText()));
+        assertEquals(47, Selection.getSelectionEnd(editText.getText()));
     }
 
     @MediumTest
@@ -4480,6 +4492,7 @@
         getInstrumentation().runOnMainSync(new Runnable() {
             @Override
             public void run() {
+                editText.setVisibility(View.VISIBLE);
                 editText.setFocusable(true);
                 editText.requestFocus();
                 editText.setText(getString(R.string.foo_bar_baz));
@@ -4536,6 +4549,7 @@
         getInstrumentation().runOnMainSync(new Runnable() {
             @Override
             public void run() {
+                view.setVisibility(View.VISIBLE);
                 view.setContentDescription(getString(R.string.foo_bar_baz));
             }
         });
@@ -4564,6 +4578,7 @@
         getInstrumentation().runOnMainSync(new Runnable() {
             @Override
             public void run() {
+                view.setVisibility(View.VISIBLE);
                 view.setContentDescription(getString(R.string.foo_bar_baz));
             }
         });
diff --git a/tests/tests/accessibilityservice/src/android/accessibilityservice/cts/AccessibilityWindowQueryTest.java b/tests/tests/accessibilityservice/src/android/accessibilityservice/cts/AccessibilityWindowQueryTest.java
index 0ea9a7f..1632489 100644
--- a/tests/tests/accessibilityservice/src/android/accessibilityservice/cts/AccessibilityWindowQueryTest.java
+++ b/tests/tests/accessibilityservice/src/android/accessibilityservice/cts/AccessibilityWindowQueryTest.java
@@ -55,7 +55,7 @@
     public void testFindByText() throws Exception {
         // find a view by text
         List<AccessibilityNodeInfo> buttons = getInstrumentation().getUiAutomation()
-                .getRootInActiveWindow().findAccessibilityNodeInfosByText("butto");
+                .getRootInActiveWindow().findAccessibilityNodeInfosByText("b");
         assertEquals(9, buttons.size());
     }
 
@@ -84,15 +84,15 @@
             classNameAndTextList.add("android.widget.LinearLayout");
             classNameAndTextList.add("android.widget.LinearLayout");
             classNameAndTextList.add("android.widget.LinearLayout");
-            classNameAndTextList.add("android.widget.ButtonButton1");
-            classNameAndTextList.add("android.widget.ButtonButton2");
-            classNameAndTextList.add("android.widget.ButtonButton3");
-            classNameAndTextList.add("android.widget.ButtonButton4");
-            classNameAndTextList.add("android.widget.ButtonButton5");
-            classNameAndTextList.add("android.widget.ButtonButton6");
-            classNameAndTextList.add("android.widget.ButtonButton7");
-            classNameAndTextList.add("android.widget.ButtonButton8");
-            classNameAndTextList.add("android.widget.ButtonButton9");
+            classNameAndTextList.add("android.widget.ButtonB1");
+            classNameAndTextList.add("android.widget.ButtonB2");
+            classNameAndTextList.add("android.widget.ButtonB3");
+            classNameAndTextList.add("android.widget.ButtonB4");
+            classNameAndTextList.add("android.widget.ButtonB5");
+            classNameAndTextList.add("android.widget.ButtonB6");
+            classNameAndTextList.add("android.widget.ButtonB7");
+            classNameAndTextList.add("android.widget.ButtonB8");
+            classNameAndTextList.add("android.widget.ButtonB9");
 
             Queue<AccessibilityNodeInfo> fringe = new LinkedList<AccessibilityNodeInfo>();
             fringe.add(getInstrumentation().getUiAutomation().getRootInActiveWindow());
@@ -420,6 +420,61 @@
         }
     }
 
+    private void verifyNodesInAppWindow(AccessibilityNodeInfo root) throws Exception {
+        try {
+            AccessibilityServiceInfo info = getInstrumentation().getUiAutomation().getServiceInfo();
+            info.flags |= AccessibilityServiceInfo.FLAG_INCLUDE_NOT_IMPORTANT_VIEWS;
+            getInstrumentation().getUiAutomation().setServiceInfo(info);
+
+            root.refresh();
+
+            // make list of expected nodes
+            List<String> classNameAndTextList = new ArrayList<String>();
+            classNameAndTextList.add("android.widget.FrameLayout");
+            classNameAndTextList.add("android.widget.LinearLayout");
+            classNameAndTextList.add("android.widget.FrameLayout");
+            classNameAndTextList.add("android.widget.LinearLayout");
+            classNameAndTextList.add("android.widget.LinearLayout");
+            classNameAndTextList.add("android.widget.LinearLayout");
+            classNameAndTextList.add("android.widget.LinearLayout");
+            classNameAndTextList.add("android.widget.ButtonB1");
+            classNameAndTextList.add("android.widget.ButtonB2");
+            classNameAndTextList.add("android.widget.ButtonB3");
+            classNameAndTextList.add("android.widget.ButtonB4");
+            classNameAndTextList.add("android.widget.ButtonB5");
+            classNameAndTextList.add("android.widget.ButtonB6");
+            classNameAndTextList.add("android.widget.ButtonB7");
+            classNameAndTextList.add("android.widget.ButtonB8");
+            classNameAndTextList.add("android.widget.ButtonB9");
+
+            Queue<AccessibilityNodeInfo> fringe = new LinkedList<AccessibilityNodeInfo>();
+            fringe.add(root);
+
+            // do a BFS traversal and check nodes
+            while (!fringe.isEmpty()) {
+                AccessibilityNodeInfo current = fringe.poll();
+
+                CharSequence text = current.getText();
+                String receivedClassNameAndText = current.getClassName().toString()
+                    + ((text != null) ? text.toString() : "");
+                String expectedClassNameAndText = classNameAndTextList.remove(0);
+
+                assertEquals("Did not get the expected node info",
+                        expectedClassNameAndText, receivedClassNameAndText);
+
+                final int childCount = current.getChildCount();
+                for (int i = 0; i < childCount; i++) {
+                    AccessibilityNodeInfo child = current.getChild(i);
+                    fringe.add(child);
+                }
+            }
+        } finally {
+            AccessibilityServiceInfo info = getInstrumentation().getUiAutomation().getServiceInfo();
+            info.flags &= ~AccessibilityServiceInfo.FLAG_INCLUDE_NOT_IMPORTANT_VIEWS;
+            getInstrumentation().getUiAutomation().setServiceInfo(info);
+        }
+    }
+
     @Override
     protected void scrubClass(Class<?> testCaseClass) {
         /* intentionally do not scrub */
diff --git a/tests/tests/admin/Android.mk b/tests/tests/admin/Android.mk
index 1affed6..c3645cc 100644
--- a/tests/tests/admin/Android.mk
+++ b/tests/tests/admin/Android.mk
@@ -22,7 +22,7 @@
 
 LOCAL_JAVA_LIBRARIES := android.test.runner
 
-LOCAL_STATIC_JAVA_LIBRARIES := ctstestrunner
+LOCAL_STATIC_JAVA_LIBRARIES := ctstestrunner mockito-target
 
 LOCAL_SRC_FILES := $(call all-java-files-under, src)
 
diff --git a/tests/tests/admin/src/android/admin/cts/DeviceAdminActivationTest.java b/tests/tests/admin/src/android/admin/cts/DeviceAdminActivationTest.java
index cb0425a..6fcd0de 100644
--- a/tests/tests/admin/src/android/admin/cts/DeviceAdminActivationTest.java
+++ b/tests/tests/admin/src/android/admin/cts/DeviceAdminActivationTest.java
@@ -21,6 +21,7 @@
 import android.content.ComponentName;
 import android.content.Context;
 import android.content.Intent;
+import android.content.pm.PackageManager;
 import android.deviceadmin.cts.CtsDeviceAdminBrokenReceiver;
 import android.deviceadmin.cts.CtsDeviceAdminBrokenReceiver2;
 import android.deviceadmin.cts.CtsDeviceAdminBrokenReceiver3;
@@ -31,6 +32,12 @@
 import android.deviceadmin.cts.CtsDeviceAdminActivationTestActivity.OnActivityResultListener;
 import android.os.SystemClock;
 import android.test.ActivityInstrumentationTestCase2;
+import android.util.Log;
+
+import org.mockito.ArgumentCaptor;
+import org.mockito.Mock;
+import org.mockito.Mockito;
+import org.mockito.MockitoAnnotations;
 
 /**
  * Tests for the standard way of activating a Device Admin: by starting system UI via an
@@ -40,6 +47,8 @@
 public class DeviceAdminActivationTest
     extends ActivityInstrumentationTestCase2<CtsDeviceAdminActivationTestActivity> {
 
+    private static final String TAG = DeviceAdminActivationTest.class.getSimpleName();
+
     // IMPLEMENTATION NOTE: Because Device Admin activation requires the use of
     // Activity.startActivityForResult, this test creates an empty Activity which then invokes
     // startActivityForResult.
@@ -52,21 +61,8 @@
      */
     private static final int UI_EFFECT_TIMEOUT_MILLIS = 5000;
 
-    /**
-     * Monitor guarding access to {@link #mLastOnActivityResultResultCode} and which is notified
-     * every time {@code onActivityResult} of the {@code CtsDeviceAdminActivationTestActivity} is
-     * invoked.
-     */
-    private final Object mOnActivityResultListenerLock = new Object();
-
-    /**
-     * Result code of the most recent invocation of
-     * {@code CtsDeviceAdminActivationTestActivity.onActivityResult} or {@code null} if no
-     * invocations have occured yet.
-     *
-     * @GuardedBy {@link #mOnActivityResultListenerLock}
-     */
-    private Integer mLastOnActivityResultResultCode;
+    private boolean mDeviceAdmin;
+    @Mock private OnActivityResultListener mMockOnActivityResultListener;
 
     public DeviceAdminActivationTest() {
         super(CtsDeviceAdminActivationTestActivity.class);
@@ -75,18 +71,10 @@
     @Override
     protected void setUp() throws Exception {
         super.setUp();
-        getActivity().setOnActivityResultListener(new OnActivityResultListener() {
-            @Override
-            public void onActivityResult(int requestCode, int resultCode, Intent data) {
-                if (requestCode != REQUEST_CODE_ACTIVATE_ADMIN) {
-                    return;
-                }
-                synchronized (mOnActivityResultListenerLock) {
-                    mLastOnActivityResultResultCode = resultCode;
-                    mOnActivityResultListenerLock.notifyAll();
-                }
-            }
-        });
+        MockitoAnnotations.initMocks(this);
+        getActivity().setOnActivityResultListener(mMockOnActivityResultListener);
+        mDeviceAdmin = getInstrumentation().getContext().getPackageManager().hasSystemFeature(
+                PackageManager.FEATURE_DEVICE_ADMIN);
     }
 
     @Override
@@ -99,6 +87,10 @@
     }
 
     public void testActivateGoodReceiverDisplaysActivationUi() throws Exception {
+        if (!mDeviceAdmin) {
+            Log.w(TAG, "Skipping testActivateGoodReceiverDisplaysActivationUi");
+            return;
+        }
         assertDeviceAdminDeactivated(CtsDeviceAdminDeactivatedReceiver.class);
         startAddDeviceAdminActivityForResult(CtsDeviceAdminDeactivatedReceiver.class);
         assertWithTimeoutOnActivityResultNotInvoked();
@@ -110,6 +102,10 @@
     }
 
     public void testActivateBrokenReceiverFails() throws Exception {
+        if (!mDeviceAdmin) {
+            Log.w(TAG, "Skipping testActivateBrokenReceiverFails");
+            return;
+        }
         assertDeviceAdminDeactivated(CtsDeviceAdminBrokenReceiver.class);
         startAddDeviceAdminActivityForResult(CtsDeviceAdminBrokenReceiver.class);
         assertWithTimeoutOnActivityResultInvokedWithResultCode(Activity.RESULT_CANCELED);
@@ -117,6 +113,10 @@
     }
 
     public void testActivateBrokenReceiver2Fails() throws Exception {
+        if (!mDeviceAdmin) {
+            Log.w(TAG, "Skipping testActivateBrokenReceiver2Fails");
+            return;
+        }
         assertDeviceAdminDeactivated(CtsDeviceAdminBrokenReceiver2.class);
         startAddDeviceAdminActivityForResult(CtsDeviceAdminBrokenReceiver2.class);
         assertWithTimeoutOnActivityResultInvokedWithResultCode(Activity.RESULT_CANCELED);
@@ -124,6 +124,10 @@
     }
 
     public void testActivateBrokenReceiver3Fails() throws Exception {
+        if (!mDeviceAdmin) {
+            Log.w(TAG, "Skipping testActivateBrokenReceiver3Fails");
+            return;
+        }
         assertDeviceAdminDeactivated(CtsDeviceAdminBrokenReceiver3.class);
         startAddDeviceAdminActivityForResult(CtsDeviceAdminBrokenReceiver3.class);
         assertWithTimeoutOnActivityResultInvokedWithResultCode(Activity.RESULT_CANCELED);
@@ -131,6 +135,10 @@
     }
 
     public void testActivateBrokenReceiver4Fails() throws Exception {
+        if (!mDeviceAdmin) {
+            Log.w(TAG, "Skipping testActivateBrokenReceiver4Fails");
+            return;
+        }
         assertDeviceAdminDeactivated(CtsDeviceAdminBrokenReceiver4.class);
         startAddDeviceAdminActivityForResult(CtsDeviceAdminBrokenReceiver4.class);
         assertWithTimeoutOnActivityResultInvokedWithResultCode(Activity.RESULT_CANCELED);
@@ -138,6 +146,10 @@
     }
 
     public void testActivateBrokenReceiver5Fails() throws Exception {
+        if (!mDeviceAdmin) {
+            Log.w(TAG, "Skipping testActivateBrokenReceiver5Fails");
+            return;
+        }
         assertDeviceAdminDeactivated(CtsDeviceAdminBrokenReceiver5.class);
         startAddDeviceAdminActivityForResult(CtsDeviceAdminBrokenReceiver5.class);
         assertWithTimeoutOnActivityResultInvokedWithResultCode(Activity.RESULT_CANCELED);
@@ -161,32 +173,21 @@
 
     private void assertWithTimeoutOnActivityResultNotInvoked() {
         SystemClock.sleep(UI_EFFECT_TIMEOUT_MILLIS);
-        synchronized (mOnActivityResultListenerLock) {
-            assertNull(mLastOnActivityResultResultCode);
-        }
+        Mockito.verify(mMockOnActivityResultListener, Mockito.never())
+                .onActivityResult(
+                        Mockito.eq(REQUEST_CODE_ACTIVATE_ADMIN),
+                        Mockito.anyInt(),
+                        Mockito.any(Intent.class));
     }
 
-    private void assertWithTimeoutOnActivityResultInvokedWithResultCode(int expectedResultCode)
-            throws Exception {
-        long deadlineMillis = SystemClock.elapsedRealtime() + UI_EFFECT_TIMEOUT_MILLIS;
-        synchronized (mOnActivityResultListenerLock) {
-            while (true) {
-                if (mLastOnActivityResultResultCode != null) {
-                    // onActivityResult has been invoked -- check the arguments
-                    assertEquals(expectedResultCode, (int) mLastOnActivityResultResultCode);
-                    break;
-                }
-
-                // onActivityResult has not yet been invoked -- wait until it is
-                long millisTillDeadline = deadlineMillis - SystemClock.elapsedRealtime();
-                if (millisTillDeadline <= 0) {
-                    fail("onActivityResult not invoked within " + UI_EFFECT_TIMEOUT_MILLIS + " ms");
-                    break;
-                }
-
-                mOnActivityResultListenerLock.wait(millisTillDeadline);
-            }
-        }
+    private void assertWithTimeoutOnActivityResultInvokedWithResultCode(int expectedResultCode) {
+        ArgumentCaptor<Integer> resultCodeCaptor = ArgumentCaptor.forClass(int.class);
+        Mockito.verify(mMockOnActivityResultListener, Mockito.timeout(UI_EFFECT_TIMEOUT_MILLIS))
+                .onActivityResult(
+                        Mockito.eq(REQUEST_CODE_ACTIVATE_ADMIN),
+                        resultCodeCaptor.capture(),
+                        Mockito.any(Intent.class));
+        assertEquals(expectedResultCode, (int) resultCodeCaptor.getValue());
     }
 
     private void finishActivateDeviceAdminActivity() {
diff --git a/tests/tests/admin/src/android/admin/cts/DeviceAdminInfoTest.java b/tests/tests/admin/src/android/admin/cts/DeviceAdminInfoTest.java
index b38ef4c..fe68073 100644
--- a/tests/tests/admin/src/android/admin/cts/DeviceAdminInfoTest.java
+++ b/tests/tests/admin/src/android/admin/cts/DeviceAdminInfoTest.java
@@ -21,14 +21,16 @@
 import android.content.pm.PackageManager;
 import android.content.pm.ResolveInfo;
 import android.test.AndroidTestCase;
+import android.util.Log;
 
 public class DeviceAdminInfoTest extends AndroidTestCase {
 
+    private static final String TAG = DeviceAdminInfoTest.class.getSimpleName();
+
     private PackageManager mPackageManager;
-
     private ComponentName mComponent;
-
     private ComponentName mSecondComponent;
+    private boolean mDeviceAdmin;
 
     @Override
     protected void setUp() throws Exception {
@@ -36,6 +38,8 @@
         mPackageManager = mContext.getPackageManager();
         mComponent = getReceiverComponent();
         mSecondComponent = getSecondReceiverComponent();
+        mDeviceAdmin =
+                mContext.getPackageManager().hasSystemFeature(PackageManager.FEATURE_DEVICE_ADMIN);
     }
 
     static ComponentName getReceiverComponent() {
@@ -49,6 +53,10 @@
     }
 
     public void testDeviceAdminInfo() throws Exception {
+        if (!mDeviceAdmin) {
+            Log.w(TAG, "Skipping testDeviceAdminInfo");
+            return;
+        }
         ResolveInfo resolveInfo = new ResolveInfo();
         resolveInfo.activityInfo = mPackageManager.getReceiverInfo(mComponent,
                 PackageManager.GET_META_DATA);
@@ -77,6 +85,10 @@
     }
 
     public void testDeviceAdminInfo2() throws Exception {
+        if (!mDeviceAdmin) {
+            Log.w(TAG, "Skipping testDeviceAdminInfo2");
+            return;
+        }
         ResolveInfo resolveInfo = new ResolveInfo();
         resolveInfo.activityInfo = mPackageManager.getReceiverInfo(mSecondComponent,
                 PackageManager.GET_META_DATA);
diff --git a/tests/tests/admin/src/android/admin/cts/DeviceAdminReceiverTest.java b/tests/tests/admin/src/android/admin/cts/DeviceAdminReceiverTest.java
index b9f842d..b804625 100644
--- a/tests/tests/admin/src/android/admin/cts/DeviceAdminReceiverTest.java
+++ b/tests/tests/admin/src/android/admin/cts/DeviceAdminReceiverTest.java
@@ -19,10 +19,13 @@
 import android.app.admin.DeviceAdminReceiver;
 import android.content.Context;
 import android.content.Intent;
+import android.content.pm.PackageManager;
 import android.test.AndroidTestCase;
+import android.util.Log;
 
 public class DeviceAdminReceiverTest extends AndroidTestCase {
 
+    private static final String TAG = DeviceAdminReceiverTest.class.getSimpleName();
     private static final String DISABLE_WARNING = "Disable Warning";
 
     private static final int PASSWORD_CHANGED = 0x1;
@@ -33,14 +36,21 @@
     private static final int DEVICE_ADMIN_DISABLED = 0x20;
 
     private TestReceiver mReceiver;
+    private boolean mDeviceAdmin;
 
     @Override
     protected void setUp() throws Exception {
         super.setUp();
         mReceiver = new TestReceiver();
+        mDeviceAdmin =
+                mContext.getPackageManager().hasSystemFeature(PackageManager.FEATURE_DEVICE_ADMIN);
     }
 
     public void testOnReceive() {
+        if (!mDeviceAdmin) {
+            Log.w(TAG, "Skipping testOnReceive");
+            return;
+        }
         mReceiver.reset();
         mReceiver.onReceive(mContext, new Intent(DeviceAdminReceiver.ACTION_PASSWORD_CHANGED));
         assertTrue(mReceiver.hasFlags(PASSWORD_CHANGED));
diff --git a/tests/tests/admin/src/android/admin/cts/DevicePolicyManagerTest.java b/tests/tests/admin/src/android/admin/cts/DevicePolicyManagerTest.java
index 62f3daa..e953305 100644
--- a/tests/tests/admin/src/android/admin/cts/DevicePolicyManagerTest.java
+++ b/tests/tests/admin/src/android/admin/cts/DevicePolicyManagerTest.java
@@ -19,7 +19,9 @@
 import android.app.admin.DevicePolicyManager;
 import android.content.ComponentName;
 import android.content.Context;
+import android.content.pm.PackageManager;
 import android.test.AndroidTestCase;
+import android.util.Log;
 
 import java.util.List;
 
@@ -30,9 +32,11 @@
  */
 public class DevicePolicyManagerTest extends AndroidTestCase {
 
-    private DevicePolicyManager mDevicePolicyManager;
+    private static final String TAG = DevicePolicyManagerTest.class.getSimpleName();
 
+    private DevicePolicyManager mDevicePolicyManager;
     private ComponentName mComponent;
+    private boolean mDeviceAdmin;
 
     @Override
     protected void setUp() throws Exception {
@@ -40,6 +44,8 @@
         mDevicePolicyManager = (DevicePolicyManager)
                 mContext.getSystemService(Context.DEVICE_POLICY_SERVICE);
         mComponent = DeviceAdminInfoTest.getReceiverComponent();
+        mDeviceAdmin =
+                mContext.getPackageManager().hasSystemFeature(PackageManager.FEATURE_DEVICE_ADMIN);
         setBlankPassword();
     }
 
@@ -50,6 +56,9 @@
     }
 
     private void setBlankPassword() {
+        if (!mDeviceAdmin) {
+            return;
+        }
         // Reset the password to nothing for future tests...
         mDevicePolicyManager.setPasswordQuality(mComponent,
                 DevicePolicyManager.PASSWORD_QUALITY_UNSPECIFIED);
@@ -58,6 +67,10 @@
     }
 
     public void testGetActiveAdmins() {
+        if (!mDeviceAdmin) {
+            Log.w(TAG, "Skipping testGetActiveAdmins");
+            return;
+        }
         List<ComponentName> activeAdmins = mDevicePolicyManager.getActiveAdmins();
         assertFalse(activeAdmins.isEmpty());
         assertTrue(activeAdmins.contains(mComponent));
@@ -65,6 +78,10 @@
     }
 
     public void testGetMaximumFailedPasswordsForWipe() {
+        if (!mDeviceAdmin) {
+            Log.w(TAG, "Skipping testGetMaximumFailedPasswordsForWipe");
+            return;
+        }
         mDevicePolicyManager.setMaximumFailedPasswordsForWipe(mComponent, 3);
         assertEquals(3, mDevicePolicyManager.getMaximumFailedPasswordsForWipe(mComponent));
 
@@ -73,6 +90,10 @@
     }
 
     public void testPasswordQuality_something() {
+        if (!mDeviceAdmin) {
+            Log.w(TAG, "Skipping testPasswordQuality_something");
+            return;
+        }
         mDevicePolicyManager.setPasswordQuality(mComponent,
                 DevicePolicyManager.PASSWORD_QUALITY_SOMETHING);
         assertEquals(DevicePolicyManager.PASSWORD_QUALITY_SOMETHING,
@@ -102,6 +123,10 @@
     }
 
     public void testPasswordQuality_numeric() {
+        if (!mDeviceAdmin) {
+            Log.w(TAG, "Skipping testPasswordQuality_numeric");
+            return;
+        }
         mDevicePolicyManager.setPasswordQuality(mComponent,
                 DevicePolicyManager.PASSWORD_QUALITY_NUMERIC);
         assertEquals(DevicePolicyManager.PASSWORD_QUALITY_NUMERIC,
@@ -131,6 +156,10 @@
     }
 
     public void testPasswordQuality_alphabetic() {
+        if (!mDeviceAdmin) {
+            Log.w(TAG, "Skipping testPasswordQuality_alphabetic");
+            return;
+        }
         mDevicePolicyManager.setPasswordQuality(mComponent,
                 DevicePolicyManager.PASSWORD_QUALITY_ALPHABETIC);
         assertEquals(DevicePolicyManager.PASSWORD_QUALITY_ALPHABETIC,
@@ -160,6 +189,10 @@
     }
 
     public void testPasswordQuality_alphanumeric() {
+        if (!mDeviceAdmin) {
+            Log.w(TAG, "Skipping testPasswordQuality_alphanumeric");
+            return;
+        }
         mDevicePolicyManager.setPasswordQuality(mComponent,
                 DevicePolicyManager.PASSWORD_QUALITY_ALPHANUMERIC);
         assertEquals(DevicePolicyManager.PASSWORD_QUALITY_ALPHANUMERIC,
diff --git a/tests/tests/app/AndroidManifest.xml b/tests/tests/app/AndroidManifest.xml
index af7d997..42f1e7f 100644
--- a/tests/tests/app/AndroidManifest.xml
+++ b/tests/tests/app/AndroidManifest.xml
@@ -16,9 +16,10 @@
  -->
 
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
-    package="com.android.cts.app">
+    package="com.android.app.cts">
 
     <uses-permission android:name="android.permission.DISABLE_KEYGUARD" />
+    <uses-permission android:name="android.permission.BODY_SENSORS" />
     <application>
         <uses-library android:name="android.test.runner" />
     </application>
diff --git a/tests/tests/app/src/android/app/cts/ActivityManagerMemoryClassTest.java b/tests/tests/app/src/android/app/cts/ActivityManagerMemoryClassTest.java
index 622055c..d42031f 100644
--- a/tests/tests/app/src/android/app/cts/ActivityManagerMemoryClassTest.java
+++ b/tests/tests/app/src/android/app/cts/ActivityManagerMemoryClassTest.java
@@ -90,10 +90,18 @@
                 expectedMinimumMemory = isXLarge ? 128 : 64;
                 break;
 
+            case DisplayMetrics.DENSITY_400:
+                expectedMinimumMemory = isXLarge ? 192 : 96;
+                break;
+
             case DisplayMetrics.DENSITY_XXHIGH:
                 expectedMinimumMemory = isXLarge ? 256 : 128;
                 break;
 
+            case DisplayMetrics.DENSITY_XXXHIGH:
+                expectedMinimumMemory = isXLarge ? 512 : 256;
+                break;
+
             default:
                 throw new IllegalArgumentException("No memory requirement specified "
                         + " for screen density " + screenDensity);
diff --git a/tests/tests/app/src/android/app/cts/AlertDialog_BuilderTest.java b/tests/tests/app/src/android/app/cts/AlertDialog_BuilderTest.java
index 74f85bb..5f826eb 100644
--- a/tests/tests/app/src/android/app/cts/AlertDialog_BuilderTest.java
+++ b/tests/tests/app/src/android/app/cts/AlertDialog_BuilderTest.java
@@ -249,7 +249,7 @@
         assertTrue(mResult);
     }
 
-    private void setCancelable(final boolean cancelable) throws Throwable {
+    private void testCancelable(final boolean cancelable) throws Throwable {
         runTestOnUiThread(new Runnable() {
             public void run() {
                 mBuilder = new AlertDialog.Builder(mContext);
@@ -258,18 +258,37 @@
             }
         });
         mInstrumentation.waitForIdleSync();
+        new PollingCheck() {
+            @Override
+            protected boolean check() {
+                return mDialog.isShowing();
+            }
+        }.run();
+        mInstrumentation.sendKeyDownUpSync(KeyEvent.KEYCODE_BACK);
+        mInstrumentation.waitForIdleSync();
+        new PollingCheck() {
+            @Override
+            protected boolean check() {
+                boolean showing = mDialog.isShowing();
+                if (cancelable) {
+                    // if the dialog is cancelable, then pressing back
+                    // should cancel it. Thus it should not be showing
+                    return !showing;
+                } else {
+                    // if the dialog is not cancelable, pressing back
+                    // should so nothing and it should still be showing
+                    return showing;
+                }
+            }
+        }.run();
     }
 
     public void testSetCancelable() throws Throwable {
-        setCancelable(true);
-        mInstrumentation.sendKeyDownUpSync(KeyEvent.KEYCODE_BACK);
-        assertFalse(mDialog.isShowing());
+        testCancelable(true);
     }
 
     public void testDisableCancelable() throws Throwable {
-        setCancelable(false);
-        mInstrumentation.sendKeyDownUpSync(KeyEvent.KEYCODE_BACK);
-        assertTrue(mDialog.isShowing());
+        testCancelable(false);
     }
 
     public void testSetOnCancelListener() throws Throwable {
diff --git a/tests/tests/app/src/android/app/cts/DialogTest.java b/tests/tests/app/src/android/app/cts/DialogTest.java
index 1f6e2ab..f0d00ba 100644
--- a/tests/tests/app/src/android/app/cts/DialogTest.java
+++ b/tests/tests/app/src/android/app/cts/DialogTest.java
@@ -17,7 +17,6 @@
 
 import com.android.cts.stub.R;
 
-
 import android.app.Dialog;
 import android.app.Instrumentation;
 import android.content.Context;
@@ -371,10 +370,15 @@
 
         long now = SystemClock.uptimeMillis();
         MotionEvent touchMotionEvent = MotionEvent.obtain(now, now, MotionEvent.ACTION_DOWN,
-                -20.0f, -20.0f, 0);
+                1, 100, 0);
         mInstrumentation.sendPointerSync(touchMotionEvent);
 
-        assertFalse(d.dispatchTouchEventResult);
+        new PollingCheck(TEST_TIMEOUT) {
+            protected boolean check() {
+                return !d.dispatchTouchEventResult;
+            }
+        }.run();
+
         assertMotionEventEquals(touchMotionEvent, d.touchEvent);
 
         assertTrue(d.isOnTouchEventCalled);
@@ -386,11 +390,16 @@
         // because closeOnTouchOutside is true.
         d.setCanceledOnTouchOutside(true);
 
-        touchMotionEvent = MotionEvent.obtain(now + 1, now, MotionEvent.ACTION_DOWN,
-                -20.0f, -20.0f, 0);
+        touchMotionEvent = MotionEvent.obtain(now, now + 1, MotionEvent.ACTION_DOWN,
+                1, 100, 0);
         mInstrumentation.sendPointerSync(touchMotionEvent);
 
-        assertTrue(d.dispatchTouchEventResult);
+        new PollingCheck(TEST_TIMEOUT) {
+            protected boolean check() {
+                return d.dispatchTouchEventResult;
+            }
+        }.run();
+
         assertMotionEventEquals(touchMotionEvent, d.touchEvent);
 
         assertTrue(d.isOnTouchEventCalled);
@@ -403,7 +412,7 @@
         final TestDialog d = (TestDialog) mActivity.getDialog();
         long eventTime = SystemClock.uptimeMillis();
         final MotionEvent trackBallEvent = MotionEvent.obtain(eventTime, eventTime,
-                MotionEvent.ACTION_DOWN, -20.0f, -20.0f, 0);
+                MotionEvent.ACTION_DOWN, 0.0f, 0.0f, 0);
 
         assertNull(d.trackballEvent);
         assertNull(d.onTrackballEvent);
@@ -803,10 +812,9 @@
         assertTrue(d.isShowing());
         assertFalse(mCalledCallback);
         dialogDismiss(d);
+        ht.join(100);
         assertTrue(mCalledCallback);
         assertFalse(d.isShowing());
-
-        ht.join(100);
     }
 
     private void dialogDismiss(final Dialog d) throws Throwable {
diff --git a/tests/tests/app/src/android/app/cts/SystemFeaturesTest.java b/tests/tests/app/src/android/app/cts/SystemFeaturesTest.java
index 6c73f7d..5c80fd1 100644
--- a/tests/tests/app/src/android/app/cts/SystemFeaturesTest.java
+++ b/tests/tests/app/src/android/app/cts/SystemFeaturesTest.java
@@ -200,6 +200,7 @@
     public void testNfcFeatures() {
         if (NfcAdapter.getDefaultAdapter(mContext) != null) {
             assertAvailable(PackageManager.FEATURE_NFC);
+            assertAvailable(PackageManager.FEATURE_NFC_HOST_CARD_EMULATION);
         } else {
             assertNotAvailable(PackageManager.FEATURE_NFC);
         }
@@ -229,6 +230,10 @@
                 Sensor.TYPE_LIGHT);
         assertFeatureForSensor(featuresLeft, PackageManager.FEATURE_SENSOR_PROXIMITY,
                 Sensor.TYPE_PROXIMITY);
+        assertFeatureForSensor(featuresLeft, PackageManager.FEATURE_SENSOR_STEP_COUNTER,
+                Sensor.TYPE_STEP_COUNTER);
+        assertFeatureForSensor(featuresLeft, PackageManager.FEATURE_SENSOR_STEP_DETECTOR,
+                Sensor.TYPE_STEP_DETECTOR);
 
         assertTrue("Assertions need to be added to this test for " + featuresLeft,
                 featuresLeft.isEmpty());
diff --git a/tests/tests/app/src/android/app/cts/WallpaperManagerTest.java b/tests/tests/app/src/android/app/cts/WallpaperManagerTest.java
index 62e00e9..fdf3cac 100644
--- a/tests/tests/app/src/android/app/cts/WallpaperManagerTest.java
+++ b/tests/tests/app/src/android/app/cts/WallpaperManagerTest.java
@@ -17,7 +17,11 @@
 package android.app.cts;
 
 import android.app.WallpaperManager;
+import android.content.Context;
+import android.graphics.Point;
 import android.test.AndroidTestCase;
+import android.view.Display;
+import android.view.WindowManager;
 
 public class WallpaperManagerTest extends AndroidTestCase {
 
@@ -30,10 +34,32 @@
     }
 
     public void testSuggestDesiredDimensions() {
-        mWallpaperManager.suggestDesiredDimensions(320, 480);
-        int desiredMinimumWidth = mWallpaperManager.getDesiredMinimumWidth();
-        int desiredMinimumHeight = mWallpaperManager.getDesiredMinimumHeight();
-        assertEquals(320, desiredMinimumWidth);
-        assertEquals(480, desiredMinimumHeight);
+        Point min = getScreenSize();
+        int w = min.x * 3;
+        int h = min.y * 2;
+
+        mWallpaperManager.suggestDesiredDimensions(min.x / 2, min.y / 2);
+        assertEquals(min.x, mWallpaperManager.getDesiredMinimumWidth());
+        assertEquals(min.y, mWallpaperManager.getDesiredMinimumHeight());
+
+        mWallpaperManager.suggestDesiredDimensions(w, h);
+        assertEquals(w, mWallpaperManager.getDesiredMinimumWidth());
+        assertEquals(h, mWallpaperManager.getDesiredMinimumHeight());
+
+        mWallpaperManager.suggestDesiredDimensions(min.x / 2, h);
+        assertEquals(min.x, mWallpaperManager.getDesiredMinimumWidth());
+        assertEquals(h, mWallpaperManager.getDesiredMinimumHeight());
+
+        mWallpaperManager.suggestDesiredDimensions(w, min.y / 2);
+        assertEquals(w, mWallpaperManager.getDesiredMinimumWidth());
+        assertEquals(min.y, mWallpaperManager.getDesiredMinimumHeight());
+    }
+
+    private Point getScreenSize() {
+        WindowManager wm = (WindowManager)mContext.getSystemService(Context.WINDOW_SERVICE);
+        Display d = wm.getDefaultDisplay();
+        Point p = new Point();
+        d.getRealSize(p);
+        return p;
     }
 }
diff --git a/tests/tests/bionic/Android.mk b/tests/tests/bionic/Android.mk
new file mode 100644
index 0000000..326fd56
--- /dev/null
+++ b/tests/tests/bionic/Android.mk
@@ -0,0 +1,26 @@
+LOCAL_PATH := $(call my-dir)
+
+test_executable := bionic-unit-tests-cts
+
+include $(CLEAR_VARS)
+
+LOCAL_MODULE := $(test_executable)
+LOCAL_MODULE_TAGS := optional
+LOCAL_MODULE_PATH := $(TARGET_OUT_DATA)/nativetest
+
+LOCAL_ADDITION_DEPENDENCIES := \
+    $(LOCAL_PATH)/Android.mk \
+
+LOCAL_SHARED_LIBRARIES += \
+    libstlport \
+    libdl \
+
+LOCAL_WHOLE_STATIC_LIBRARIES += \
+    libBionicTests \
+
+LOCAL_STATIC_LIBRARIES += \
+    libgtest \
+    libgtest_main \
+
+LOCAL_CTS_TEST_PACKAGE := android.bionic
+include $(BUILD_CTS_EXECUTABLE)
diff --git a/tests/tests/bionic/bionic-unit-tests-cts_list.txt b/tests/tests/bionic/bionic-unit-tests-cts_list.txt
new file mode 100644
index 0000000..55daff5
--- /dev/null
+++ b/tests/tests/bionic/bionic-unit-tests-cts_list.txt
@@ -0,0 +1,576 @@
+Fortify1_Gcc_DeathTest.
+  strcpy_fortified
+  strcpy2_fortified
+  strcpy3_fortified
+  strcpy4_fortified
+  strlen_fortified
+  strchr_fortified
+  strrchr_fortified
+  strlcpy_fortified
+  strlcat_fortified
+  sprintf_fortified
+  sprintf2_fortified
+  vsprintf_fortified
+  vsprintf2_fortified
+  vsnprintf_fortified
+  vsnprintf2_fortified
+  strncat_fortified
+  strncat2_fortified
+  strcat_fortified
+  memmove_fortified
+  memcpy_fortified
+  strncpy_fortified
+  snprintf_fortified
+  bzero_fortified
+  umask_fortified
+Fortify2_Gcc_DeathTest.
+  strncpy_fortified2
+  sprintf_fortified2
+  sprintf2_fortified2
+  vsprintf_fortified2
+  vsprintf2_fortified2
+  vsnprintf_fortified2
+  vsnprintf2_fortified2
+  strcpy_fortified2
+  strcpy2_fortified2
+  strcpy3_fortified2
+  strchr_fortified2
+  strrchr_fortified2
+  strlcpy_fortified2
+  strlcat_fortified2
+  strncat_fortified2
+  strncat2_fortified2
+  strncat3_fortified2
+  strcat_fortified2
+  strcat2_fortified2
+  snprintf_fortified2
+  bzero_fortified2
+  strcpy_fortified
+  strcpy2_fortified
+  strcpy3_fortified
+  strcpy4_fortified
+  strlen_fortified
+  strchr_fortified
+  strrchr_fortified
+  strlcpy_fortified
+  strlcat_fortified
+  sprintf_fortified
+  sprintf2_fortified
+  vsprintf_fortified
+  vsprintf2_fortified
+  vsnprintf_fortified
+  vsnprintf2_fortified
+  strncat_fortified
+  strncat2_fortified
+  strcat_fortified
+  memmove_fortified
+  memcpy_fortified
+  strncpy_fortified
+  snprintf_fortified
+  bzero_fortified
+  umask_fortified
+Fortify1_Clang_DeathTest.
+  strcpy_fortified
+  strcpy2_fortified
+  strcpy3_fortified
+  strcpy4_fortified
+  strlen_fortified
+  strchr_fortified
+  strrchr_fortified
+  strlcpy_fortified
+  strlcat_fortified
+  sprintf_fortified
+  sprintf2_fortified
+  vsprintf_fortified
+  vsprintf2_fortified
+  vsnprintf_fortified
+  vsnprintf2_fortified
+  strncat_fortified
+  strncat2_fortified
+  strcat_fortified
+  memmove_fortified
+  memcpy_fortified
+  strncpy_fortified
+  snprintf_fortified
+  bzero_fortified
+  umask_fortified
+Fortify2_Clang_DeathTest.
+  strncat3_fortified2
+  strcat2_fortified2
+  snprintf_fortified2
+  bzero_fortified2
+  strcpy_fortified
+  strcpy2_fortified
+  strcpy3_fortified
+  strcpy4_fortified
+  strlen_fortified
+  strchr_fortified
+  strrchr_fortified
+  strlcpy_fortified
+  strlcat_fortified
+  sprintf_fortified
+  sprintf2_fortified
+  vsprintf_fortified
+  vsprintf2_fortified
+  vsnprintf_fortified
+  vsnprintf2_fortified
+  strncat_fortified
+  strncat2_fortified
+  strcat_fortified
+  memmove_fortified
+  memcpy_fortified
+  strncpy_fortified
+  snprintf_fortified
+  bzero_fortified
+  umask_fortified
+pthread_DeathTest.
+  pthread_bug_37410
+stack_protector_DeathTest.
+  modify_stack_protector
+properties_DeathTest.
+  read_only
+Fortify1_Gcc.
+  strncat
+  strncat2
+  strncat3
+  strncat4
+  strncat5
+  strncat6
+  strcat
+  strcat2
+  strcat_chk_max_int_size
+  strcpy_chk_max_int_size
+  memcpy_chk_max_int_size
+Fortify2_Gcc.
+  strncat
+  strncat2
+  strncat3
+  strncat4
+  strncat5
+  strncat6
+  strcat
+  strcat2
+  strcat_chk_max_int_size
+  strcpy_chk_max_int_size
+  memcpy_chk_max_int_size
+Fortify1_Clang.
+  strncat
+  strncat2
+  strncat3
+  strncat4
+  strncat5
+  strncat6
+  strcat
+  strcat2
+  strcat_chk_max_int_size
+  strcpy_chk_max_int_size
+  memcpy_chk_max_int_size
+Fortify2_Clang.
+  strncat
+  strncat2
+  strncat3
+  strncat4
+  strncat5
+  strncat6
+  strcat
+  strcat2
+  strcat_chk_max_int_size
+  strcpy_chk_max_int_size
+  memcpy_chk_max_int_size
+dirent.
+  scandir
+  fdopendir_invalid
+  fdopendir
+  opendir_invalid
+  opendir
+  closedir_invalid
+  closedir
+  readdir
+  readdir_r
+  rewinddir
+eventfd.
+  smoke
+fenv.
+  fesetround_fegetround_FE_TONEAREST
+  fesetround_fegetround_FE_TOWARDZERO
+  fesetround_fegetround_FE_UPWARD
+  fesetround_fegetround_FE_DOWNWARD
+  feclearexcept_fetestexcept
+  FE_DFL_ENV_macro
+getauxval.
+  expected_values
+  unexpected_values
+getcwd.
+  auto_full
+  auto_reasonable
+  auto_too_small
+  auto_too_large
+  manual_too_small
+  manual_zero
+  manual_path_max
+inttypes.
+  misc
+libc_logging.
+  smoke
+  d_INT_MAX
+  d_INT_MIN
+  ld_LONG_MAX
+  ld_LONG_MIN
+  lld_LLONG_MAX
+  lld_LLONG_MIN
+libgen.
+  basename
+  dirname
+  basename_r
+  dirname_r
+malloc.
+  malloc_std
+  calloc_std
+  memalign_multiple
+  memalign_realloc
+  malloc_realloc_larger
+  malloc_realloc_smaller
+  malloc_multiple_realloc
+  calloc_realloc_larger
+  calloc_realloc_smaller
+  calloc_multiple_realloc
+math.
+  fpclassify
+  isinf
+  isnan
+  isnormal
+  __fpclassifyd
+  __fpclassifyf
+  __fpclassifyl
+  finitef
+  __isfinite
+  __isfinitef
+  __isfinitel
+  finite
+  __isinff
+  __isinfl
+  __isnanf
+  __isnanl
+  isnanf
+  __isnormal
+  __isnormalf
+  __isnormall
+  __signbit
+  __signbitf
+  __signbitl
+  acos
+  acosf
+  acosl
+  asin
+  asinf
+  asinl
+  atan
+  atanf
+  atanl
+  atan2
+  atan2f
+  atan2l
+  cos
+  cosf
+  cosl
+  sin
+  sinf
+  sinl
+  tan
+  tanf
+  tanl
+  acosh
+  acoshf
+  acoshl
+  asinh
+  asinhf
+  asinhl
+  atanh
+  atanhf
+  atanhl
+  cosh
+  coshf
+  coshl
+  sinh
+  sinhf
+  sinhl
+  tanh
+  tanhf
+  tanhl
+  log
+  logf
+  logl
+  log2
+  log2f
+  log2l
+  log10
+  log10f
+  log10l
+  cbrt
+  cbrtf
+  cbrtl
+  sqrt
+  sqrtf
+  sqrtl
+  exp
+  expf
+  expl
+  exp2
+  exp2f
+  exp2l
+  expm1
+  expm1f
+  expm1l
+  pow
+  powf
+  powl
+  ceil
+  ceilf
+  ceill
+  floor
+  floorf
+  floorl
+  fabs
+  fabsf
+  fabsl
+  ldexp
+  ldexpf
+  ldexpl
+  fmod
+  fmodf
+  fmodl
+  remainder
+  remainderf
+  remainderl
+  drem
+  dremf
+  fmax
+  fmaxf
+  fmaxl
+  fmin
+  fminf
+  fminl
+  fma
+  fmaf
+  fmal
+  hypot
+  hypotf
+  hypotl
+  erf
+  erff
+  erfl
+  erfc
+  erfcf
+  erfcl
+  lrint
+  rint
+  nearbyint
+  lround
+  llround
+  ilogb
+  ilogbf
+  ilogbl
+  logb
+  logbf
+  logbl
+  log1p
+  log1pf
+  log1pl
+  fdim
+  fdimf
+  fdiml
+  round
+  roundf
+  roundl
+  trunc
+  truncf
+  truncl
+  nextafter
+  nextafterf
+  nextafterl
+  copysign
+  copysignf
+  copysignl
+  significand
+  significandf
+  significandl
+  scalb
+  scalbf
+  scalbln
+  scalblnf
+  scalblnl
+  scalbn
+  scalbnf
+  scalbnl
+  gamma
+  gammaf
+  gamma_r
+  gammaf_r
+  lgamma
+  lgammaf
+  lgammal
+  lgamma_r
+  lgammaf_r
+  tgamma
+  tgammaf
+  tgammal
+  j0
+  j0f
+  j1
+  j1f
+  jn
+  jnf
+  y0
+  y0f
+  y1
+  y1f
+  yn
+  ynf
+  frexp
+  frexpf
+  frexpl
+  modf
+  modff
+  modfl
+  remquo
+  remquof
+  remquol
+  frexpf_public_bug_6697
+netdb.
+  getaddrinfo_NULL_hints
+  getnameinfo_salen
+pthread.
+  pthread_key_create
+  pthread_key_create_lots
+  pthread_create
+  pthread_create_EAGAIN
+  pthread_no_join_after_detach
+  pthread_no_op_detach_after_join
+  pthread_join_self
+  pthread_sigmask
+  __pthread_clone
+  pthread_setname_np__too_long
+  pthread_setname_np__self
+  pthread_setname_np__other
+  pthread_setname_np__no_such_thread
+  pthread_kill__0
+  pthread_kill__invalid_signal
+  pthread_kill__in_signal_handler
+  pthread_detach__no_such_thread
+  pthread_getcpuclockid__clock_gettime
+  pthread_getcpuclockid__no_such_thread
+  pthread_getschedparam__no_such_thread
+  pthread_setschedparam__no_such_thread
+  pthread_join__no_such_thread
+  pthread_kill__no_such_thread
+  pthread_join__multijoin
+  pthread_attr_setguardsize
+  pthread_attr_setstacksize
+regex.
+  smoke
+signal.
+  sigismember_invalid
+  sigaddset_invalid
+  sigdelset_invalid
+  sigemptyset_invalid
+  sigfillset_invalid
+  raise_invalid
+  raise_in_signal_handler
+  sigwait
+stack_protector.
+  global_guard
+statvfs.
+  statvfs
+  fstatvfs
+stdio.
+  tmpfile_fileno_fprintf_rewind_fgets
+  getdelim
+  getdelim_invalid
+  getline
+  getline_invalid
+  printf_ssize_t
+  popen
+  getc
+  putc
+stdlib.
+  drand48
+  lrand48_random_rand
+  mrand48
+  posix_memalign
+  realpath__NULL_filename
+  realpath__empty_filename
+  realpath__ENOENT
+  realpath
+  qsort
+string.
+  strerror
+  strerror_concurrent
+  strerror_r
+  strsignal
+  strsignal_concurrent
+  strcat
+  strcpy2
+  strcpy3
+  strcpy4
+  strcat2
+  strcat3
+  strncat2
+  strncat3
+  strncat4
+  strncat5
+  strchr_with_0
+  strchr
+  strcmp
+  strcpy
+  strlcat
+  strlcpy
+  strncat
+  strncmp
+  strncpy
+  strrchr
+  memchr
+  memrchr
+  memcmp
+  __memcmp16
+  wmemcmp
+  memcpy
+  memset
+  memmove
+  bcopy
+  bzero
+strings.
+  ffs
+getpwnam.
+  system_id_root
+  system_id_system
+  app_id_radio
+  app_id_nobody
+  app_id_all_a0
+  app_id_u1_a40000
+  app_id_u0_a0
+  app_id_u0_a1234
+  app_id_u0_a9999
+  app_id_u1_root
+  app_id_u1_radio
+  app_id_u1_a0
+  app_id_u1_i0
+sys_stat.
+  futimens
+  futimens_EBADF
+properties.
+  add
+  update
+  fill
+  foreach
+  find_nth
+  fill_hierarchical
+  errors
+  serial
+  wait
+time.
+  mktime_tz
+  gmtime
+  mktime_10310929
+unistd.
+  sysconf_SC_MONOTONIC_CLOCK
+  sbrk
diff --git a/tests/tests/content/AndroidManifest.xml b/tests/tests/content/AndroidManifest.xml
index 0d702f4..5af05eb 100644
--- a/tests/tests/content/AndroidManifest.xml
+++ b/tests/tests/content/AndroidManifest.xml
@@ -18,9 +18,25 @@
     package="com.android.cts.content">
 
     <uses-permission android:name="android.permission.DISABLE_KEYGUARD" />
-    <application>
-        <uses-library android:name="android.test.runner" />
 
+    <application>
+        <activity android:name="android.app.cts.MockActivity">
+            <intent-filter>
+                <action android:name="com.android.cts.content.action.TEST_ACTION" />
+                <category android:name="android.intent.category.DEFAULT" />
+                <category android:name="com.android.cts.content.category.TEST_CATEGORY" />
+            </intent-filter>
+        </activity>
+
+        <activity-alias android:name="android.app.cts.MockActivity2"
+                android:targetActivity="android.app.cts.MockActivity">
+            <intent-filter>
+                <action android:name="com.android.cts.content.action.TEST_ACTION" />
+                <category android:name="android.intent.category.DEFAULT" />
+            </intent-filter>
+        </activity-alias>
+
+        <uses-library android:name="android.test.runner" />
     </application>
 
     <instrumentation android:name="android.test.InstrumentationCtsTestRunner"
diff --git a/tests/tests/content/src/android/content/cts/AvailableIntentsTest.java b/tests/tests/content/src/android/content/cts/AvailableIntentsTest.java
old mode 100755
new mode 100644
index a06b603..a2dddb5
--- a/tests/tests/content/src/android/content/cts/AvailableIntentsTest.java
+++ b/tests/tests/content/src/android/content/cts/AvailableIntentsTest.java
@@ -16,11 +16,13 @@
 
 package android.content.cts;
 
+import android.app.DownloadManager;
 import android.app.SearchManager;
 import android.content.ContentUris;
 import android.content.Intent;
 import android.content.pm.PackageManager;
 import android.content.pm.ResolveInfo;
+import android.media.RingtoneManager;
 import android.net.Uri;
 import android.provider.AlarmClock;
 import android.provider.MediaStore;
@@ -197,4 +199,47 @@
         intent.putExtra(AlarmClock.EXTRA_MINUTES, 0);
         assertCanBeHandled(intent);
     }
+
+    public void testOpenDocumentAny() {
+        Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT);
+        intent.addCategory(Intent.CATEGORY_OPENABLE);
+        intent.setType("*/*");
+        assertCanBeHandled(intent);
+    }
+
+    public void testOpenDocumentImage() {
+        Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT);
+        intent.addCategory(Intent.CATEGORY_OPENABLE);
+        intent.setType("image/*");
+        assertCanBeHandled(intent);
+    }
+
+    public void testCreateDocument() {
+        Intent intent = new Intent(Intent.ACTION_CREATE_DOCUMENT);
+        intent.addCategory(Intent.CATEGORY_OPENABLE);
+        intent.setType("text/plain");
+        assertCanBeHandled(intent);
+    }
+
+    public void testGetContentAny() {
+        Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
+        intent.addCategory(Intent.CATEGORY_OPENABLE);
+        intent.setType("*/*");
+        assertCanBeHandled(intent);
+    }
+
+    public void testGetContentImage() {
+        Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
+        intent.addCategory(Intent.CATEGORY_OPENABLE);
+        intent.setType("image/*");
+        assertCanBeHandled(intent);
+    }
+
+    public void testRingtonePicker() {
+        assertCanBeHandled(new Intent(RingtoneManager.ACTION_RINGTONE_PICKER));
+    }
+
+    public void testViewDownloads() {
+        assertCanBeHandled(new Intent(DownloadManager.ACTION_VIEW_DOWNLOADS));
+    }
 }
diff --git a/tests/tests/content/src/android/content/cts/ContentProviderTest.java b/tests/tests/content/src/android/content/cts/ContentProviderTest.java
index 34b1e8c..5ced37c 100644
--- a/tests/tests/content/src/android/content/cts/ContentProviderTest.java
+++ b/tests/tests/content/src/android/content/cts/ContentProviderTest.java
@@ -16,33 +16,22 @@
 
 package android.content.cts;
 
-import com.android.cts.stub.R;
-
-
 import android.content.ContentProvider;
 import android.content.ContentResolver;
 import android.content.ContentValues;
 import android.content.Context;
-import android.content.IContentProvider;
-import android.content.ContentProviderResult;
-import android.content.ContentProviderOperation;
-import android.content.OperationApplicationException;
 import android.content.pm.ProviderInfo;
-import android.content.res.AssetFileDescriptor;
 import android.database.Cursor;
 import android.database.sqlite.SQLiteDatabase;
 import android.net.Uri;
-import android.os.Bundle;
-import android.os.IBinder;
-import android.os.ICancellationSignal;
 import android.os.ParcelFileDescriptor;
-import android.os.RemoteException;
 import android.test.AndroidTestCase;
 
+import com.android.cts.stub.R;
+
 import java.io.File;
 import java.io.FileNotFoundException;
 import java.io.IOException;
-import java.util.ArrayList;
 
 /**
  * Test {@link ContentProvider}.
@@ -212,8 +201,8 @@
         try {
             uri = Uri.parse("content://test");
             cp.openFile(uri, "wrong");
-            fail("Should throw FileNotFoundException!");
-        } catch (FileNotFoundException e) {
+            fail("Should throw IllegalArgumentException for bad mode!");
+        } catch (IllegalArgumentException e) {
         }
 
         // delete the temporary file
@@ -241,93 +230,6 @@
         // cannot trigger this callback reliably
     }
 
-    public void testCoerceToLocalContentProvider() {
-        MockContentProvider mockContentProvider = new MockContentProvider();
-
-        IContentProvider transport = mockContentProvider.getIContentProvider();
-        assertSame(mockContentProvider, ContentProvider.coerceToLocalContentProvider(transport));
-
-        IContentProvider iContentProvider = new IContentProvider() {
-            @Override
-            public int bulkInsert(String callingPkg, Uri url, ContentValues[] initialValues) {
-                return 0;
-            }
-
-            @Override
-            public int delete(String callingPkg, Uri url, String selection, String[] selectionArgs) {
-                return 0;
-            }
-
-            @Override
-            public String getType(Uri url) {
-                return null;
-            }
-
-            @Override
-            public Uri insert(String callingPkg, Uri url, ContentValues initialValues) {
-                return null;
-            }
-
-            @Override
-            public ParcelFileDescriptor openFile(String callingPkg, Uri url, String mode) {
-                return null;
-            }
-
-            @Override
-            public AssetFileDescriptor openAssetFile(String callingPkg, Uri url, String mode) {
-                return null;
-            }
-
-            @Override
-            public ContentProviderResult[] applyBatch(String callingPkg,
-                    ArrayList<ContentProviderOperation> operations)
-                    throws RemoteException, OperationApplicationException {
-                return null;
-            }
-
-            @Override
-            public Cursor query(String callingPkg, Uri url, String[] projection, String selection,
-                    String[] selectionArgs, String sortOrder,
-                    ICancellationSignal cancellationSignal) {
-                return null;
-            }
-
-            @Override
-            public int update(String callingPkg, Uri url, ContentValues values, String selection,
-                    String[] selectionArgs) {
-                return 0;
-            }
-
-            @Override
-            public IBinder asBinder() {
-                return null;
-            }
-
-            @Override
-            public Bundle call(String callingPkg, String method, String request, Bundle args) {
-                return null;
-            }
-
-            @Override
-            public String[] getStreamTypes(Uri url, String mimeTypeFilter) throws RemoteException {
-                return null;
-            }
-
-            @Override
-            public AssetFileDescriptor openTypedAssetFile(String callingPkg, Uri url,
-                    String mimeType, Bundle opts)
-                    throws RemoteException, FileNotFoundException {
-                return null;
-            }
-
-            @Override
-            public ICancellationSignal createCancellationSignal() throws RemoteException {
-                return null;
-            }
-        };
-        assertNull(ContentProvider.coerceToLocalContentProvider(iContentProvider));
-    }
-
     public void testGetIContentProvider() {
         MockContentProvider mockContentProvider = new MockContentProvider();
 
diff --git a/tests/tests/content/src/android/content/cts/ContentResolverTest.java b/tests/tests/content/src/android/content/cts/ContentResolverTest.java
index 22c2faa..47371cc 100644
--- a/tests/tests/content/src/android/content/cts/ContentResolverTest.java
+++ b/tests/tests/content/src/android/content/cts/ContentResolverTest.java
@@ -642,8 +642,8 @@
 
         try {
             mContentResolver.openFileDescriptor(uri, "d");
-            fail("did not throw FileNotFoundException when mode is unknown.");
-        } catch (FileNotFoundException e) {
+            fail("did not throw IllegalArgumentException when mode is unknown.");
+        } catch (IllegalArgumentException e) {
             //expected.
         }
 
diff --git a/tests/tests/content/src/android/content/cts/IntentFilterTest.java b/tests/tests/content/src/android/content/cts/IntentFilterTest.java
index 87a1834..d067b9e 100644
--- a/tests/tests/content/src/android/content/cts/IntentFilterTest.java
+++ b/tests/tests/content/src/android/content/cts/IntentFilterTest.java
@@ -61,6 +61,7 @@
     private static final String CATEGORY = "testCategory";
     private static final String DATA_TYPE = "vnd.android.cursor.dir/person";
     private static final String DATA_SCHEME = "testDataSchemes.";
+    private static final String SSP = "testSsp";
     private static final String HOST = "testHost";
     private static final int PORT = 80;
     private static final String DATA_PATH = "testDataPath";
@@ -260,6 +261,173 @@
         verifyContent(filter, ACTION, DATA_TYPE);
     }
 
+
+    public void testSchemeSpecificParts() throws Exception {
+        IntentFilter filter = new Match(null, null, null, new String[]{"scheme"},
+                null, null, null, null, new String[]{"ssp1", "2ssp"},
+                new int[]{PATTERN_LITERAL, PATTERN_LITERAL});
+        checkMatches(filter, new MatchCondition[] {
+                new MatchCondition(IntentFilter.NO_MATCH_DATA, null, null, null, null),
+                new MatchCondition(IntentFilter.MATCH_CATEGORY_SCHEME_SPECIFIC_PART, null, null, null,
+                        "scheme:ssp1"),
+                new MatchCondition(IntentFilter.MATCH_CATEGORY_SCHEME_SPECIFIC_PART, null, null, null,
+                        "scheme:2ssp"),
+                new MatchCondition(IntentFilter.NO_MATCH_DATA, null, null, null,
+                        "scheme:ssp"),
+                new MatchCondition(IntentFilter.NO_MATCH_DATA, null, null, null,
+                        "scheme:ssp12"), });
+        filter = new Match(null, null, null, new String[]{"scheme"},
+                null, null, null, null, new String[]{"ssp1", "2ssp"},
+                new int[]{PATTERN_PREFIX, PATTERN_PREFIX});
+        checkMatches(filter, new MatchCondition[] {
+                new MatchCondition(IntentFilter.NO_MATCH_DATA, null, null, null, null),
+                new MatchCondition(IntentFilter.MATCH_CATEGORY_SCHEME_SPECIFIC_PART, null, null, null,
+                        "scheme:ssp1"),
+                new MatchCondition(IntentFilter.MATCH_CATEGORY_SCHEME_SPECIFIC_PART, null, null, null,
+                        "scheme:2ssp"),
+                new MatchCondition(IntentFilter.NO_MATCH_DATA, null, null, null,
+                        "scheme:ssp"),
+                new MatchCondition(IntentFilter.MATCH_CATEGORY_SCHEME_SPECIFIC_PART, null, null, null,
+                        "scheme:ssp12"), });
+        filter = new Match(null, null, null, new String[]{"scheme"},
+                null, null, null, null, new String[]{"ssp.*"},
+                new int[]{PATTERN_SIMPLE_GLOB});
+        checkMatches(filter, new MatchCondition[] {
+                new MatchCondition(IntentFilter.NO_MATCH_DATA, null, null, null, null),
+                new MatchCondition(IntentFilter.MATCH_CATEGORY_SCHEME_SPECIFIC_PART, null, null, null,
+                        "scheme:ssp1"),
+                new MatchCondition(IntentFilter.MATCH_CATEGORY_SCHEME_SPECIFIC_PART, null, null, null,
+                        "scheme:ssp"),
+                new MatchCondition(IntentFilter.NO_MATCH_DATA, null, null, null,
+                        "scheme:ss"), });
+        filter = new Match(null, null, null, new String[]{"scheme"},
+                null, null, null, null, new String[]{".*"},
+                new int[]{PATTERN_SIMPLE_GLOB});
+        checkMatches(filter, new MatchCondition[] {
+                new MatchCondition(IntentFilter.NO_MATCH_DATA, null, null, null, null),
+                new MatchCondition(IntentFilter.MATCH_CATEGORY_SCHEME_SPECIFIC_PART, null, null, null,
+                        "scheme:ssp1"),
+                new MatchCondition(IntentFilter.MATCH_CATEGORY_SCHEME_SPECIFIC_PART, null, null, null,
+                        "scheme:ssp"),
+                new MatchCondition(IntentFilter.MATCH_CATEGORY_SCHEME_SPECIFIC_PART, null, null, null,
+                        "scheme:"), });
+        filter = new Match(null, null, null, new String[]{"scheme"},
+                null, null, null, null, new String[]{"a1*b"},
+                new int[]{PATTERN_SIMPLE_GLOB});
+        checkMatches(filter, new MatchCondition[] {
+                new MatchCondition(IntentFilter.NO_MATCH_DATA, null, null, null, null),
+                new MatchCondition(IntentFilter.MATCH_CATEGORY_SCHEME_SPECIFIC_PART, null, null, null,
+                        "scheme:ab"),
+                new MatchCondition(IntentFilter.MATCH_CATEGORY_SCHEME_SPECIFIC_PART, null, null, null,
+                        "scheme:a1b"),
+                new MatchCondition(IntentFilter.MATCH_CATEGORY_SCHEME_SPECIFIC_PART, null, null, null,
+                        "scheme:a11b"),
+                new MatchCondition(IntentFilter.NO_MATCH_DATA, null, null, null,
+                        "scheme:a2b"),
+                new MatchCondition(IntentFilter.NO_MATCH_DATA, null, null, null,
+                        "scheme:a1bc"),
+                new MatchCondition(IntentFilter.NO_MATCH_DATA, null, null, null,
+                        "scheme:a"), });
+        filter = new Match(null, null, null, new String[]{"scheme"},
+                null, null, null, null, new String[]{"a1*"},
+                new int[]{PATTERN_SIMPLE_GLOB});
+        checkMatches(filter, new MatchCondition[] {
+                new MatchCondition(IntentFilter.NO_MATCH_DATA, null, null, null, null),
+                new MatchCondition(IntentFilter.MATCH_CATEGORY_SCHEME_SPECIFIC_PART, null, null, null,
+                        "scheme:a1"),
+                new MatchCondition(IntentFilter.NO_MATCH_DATA, null, null, null,
+                        "scheme:ab"),
+                new MatchCondition(IntentFilter.MATCH_CATEGORY_SCHEME_SPECIFIC_PART, null, null, null,
+                        "scheme:a11"),
+                new MatchCondition(IntentFilter.NO_MATCH_DATA, null, null, null,
+                        "scheme:a1b"),
+                new MatchCondition(IntentFilter.MATCH_CATEGORY_SCHEME_SPECIFIC_PART, null, null, null,
+                        "scheme:a11"),
+                new MatchCondition(IntentFilter.NO_MATCH_DATA, null, null, null,
+                        "scheme:a2"), });
+        filter = new Match(null, null, null, new String[]{"scheme"},
+                null, null, null, null, new String[]{"a\\.*b"},
+                new int[]{PATTERN_SIMPLE_GLOB});
+        checkMatches(filter, new MatchCondition[] {
+                new MatchCondition(IntentFilter.NO_MATCH_DATA, null, null, null, null),
+                new MatchCondition(IntentFilter.MATCH_CATEGORY_SCHEME_SPECIFIC_PART, null, null, null,
+                        "scheme:ab"),
+                new MatchCondition(IntentFilter.MATCH_CATEGORY_SCHEME_SPECIFIC_PART, null, null, null,
+                        "scheme:a.b"),
+                new MatchCondition(IntentFilter.MATCH_CATEGORY_SCHEME_SPECIFIC_PART, null, null, null,
+                        "scheme:a..b"),
+                new MatchCondition(IntentFilter.NO_MATCH_DATA, null, null, null,
+                        "scheme:a2b"),
+                new MatchCondition(IntentFilter.NO_MATCH_DATA, null, null, null,
+                        "scheme:a.bc"),
+                new MatchCondition(IntentFilter.NO_MATCH_DATA, null, null, null,
+                        "scheme:"), });
+        filter = new Match(null, null, null, new String[]{"scheme"},
+                null, null, null, null, new String[]{"a.*b"},
+                new int[]{PATTERN_SIMPLE_GLOB});
+        checkMatches(filter, new MatchCondition[] {
+                new MatchCondition(IntentFilter.NO_MATCH_DATA, null, null, null, null),
+                new MatchCondition(IntentFilter.MATCH_CATEGORY_SCHEME_SPECIFIC_PART, null, null, null,
+                        "scheme:ab"),
+                new MatchCondition(IntentFilter.MATCH_CATEGORY_SCHEME_SPECIFIC_PART, null, null, null,
+                        "scheme:a.b"),
+                new MatchCondition(IntentFilter.MATCH_CATEGORY_SCHEME_SPECIFIC_PART, null, null, null,
+                        "scheme:a.1b"),
+                new MatchCondition(IntentFilter.MATCH_CATEGORY_SCHEME_SPECIFIC_PART, null, null, null,
+                        "scheme:a2b"),
+                new MatchCondition(IntentFilter.NO_MATCH_DATA, null, null, null,
+                        "scheme:a.bc"),
+                new MatchCondition(IntentFilter.NO_MATCH_DATA, null, null, null,
+                        "scheme:"), });
+        filter = new Match(null, null, null, new String[]{"scheme"},
+                null, null, null, null, new String[]{"a.*"},
+                new int[]{PATTERN_SIMPLE_GLOB});
+        checkMatches(filter, new MatchCondition[] {
+                new MatchCondition(IntentFilter.NO_MATCH_DATA, null, null, null, null),
+                new MatchCondition(IntentFilter.MATCH_CATEGORY_SCHEME_SPECIFIC_PART, null, null, null,
+                        "scheme:ab"),
+                new MatchCondition(IntentFilter.MATCH_CATEGORY_SCHEME_SPECIFIC_PART, null, null, null,
+                        "scheme:a.b"),
+                new MatchCondition(IntentFilter.MATCH_CATEGORY_SCHEME_SPECIFIC_PART, null, null, null,
+                        "scheme:a.1b"),
+                new MatchCondition(IntentFilter.MATCH_CATEGORY_SCHEME_SPECIFIC_PART, null, null, null,
+                        "scheme:a2b"),
+                new MatchCondition(IntentFilter.MATCH_CATEGORY_SCHEME_SPECIFIC_PART, null, null, null,
+                        "scheme:a.bc"),
+                new MatchCondition(IntentFilter.NO_MATCH_DATA, null, null, null,
+                        "scheme:"), });
+        filter = new Match(null, null, null, new String[]{"scheme"},
+                null, null, null, null, new String[]{"a.\\*b"},
+                new int[]{PATTERN_SIMPLE_GLOB});
+        checkMatches(filter, new MatchCondition[] {
+                new MatchCondition(IntentFilter.NO_MATCH_DATA, null, null, null, null),
+                new MatchCondition(IntentFilter.NO_MATCH_DATA, null, null, null,
+                        "scheme:ab"),
+                new MatchCondition(IntentFilter.MATCH_CATEGORY_SCHEME_SPECIFIC_PART, null, null, null,
+                        "scheme:a.*b"),
+                new MatchCondition(IntentFilter.MATCH_CATEGORY_SCHEME_SPECIFIC_PART, null, null, null,
+                        "scheme:a1*b"),
+                new MatchCondition(IntentFilter.NO_MATCH_DATA, null, null, null,
+                        "scheme:a2b"),
+                new MatchCondition(IntentFilter.NO_MATCH_DATA, null, null, null,
+                        "scheme:a.bc"),
+                new MatchCondition(IntentFilter.NO_MATCH_DATA, null, null, null,
+                        "scheme:"), });
+        filter = new Match(null, null, null, new String[]{"scheme"},
+                null, null, null, null, new String[]{"a.\\*"},
+                new int[]{PATTERN_SIMPLE_GLOB});
+        checkMatches(filter, new MatchCondition[] {
+                new MatchCondition(IntentFilter.NO_MATCH_DATA, null, null, null, null),
+                new MatchCondition(IntentFilter.NO_MATCH_DATA, null, null, null,
+                        "scheme:ab"),
+                new MatchCondition(IntentFilter.MATCH_CATEGORY_SCHEME_SPECIFIC_PART, null, null, null,
+                        "scheme:a.*"),
+                new MatchCondition(IntentFilter.MATCH_CATEGORY_SCHEME_SPECIFIC_PART, null, null, null,
+                        "scheme:a1*"),
+                new MatchCondition(IntentFilter.NO_MATCH_DATA, null, null, null,
+                        "scheme:a1b"), });
+    }
+
     public void testAuthorities() {
         for (int i = 0; i < 10; i++) {
             mIntentFilter.addDataAuthority(HOST + i, String.valueOf(PORT + i));
@@ -770,6 +938,17 @@
                 }
             }
         }
+
+        Match(String[] actions, String[] categories, String[] mimeTypes, String[] schemes,
+                String[] authorities, String[] ports, String[] paths, int[] pathTypes,
+                String[] ssps, int[] sspTypes) {
+            this(actions, categories, mimeTypes, schemes, authorities, ports, paths, pathTypes);
+            if (ssps != null) {
+                for (int i = 0; i < ssps.length; i++) {
+                    addDataSchemeSpecificPart(ssps[i], sspTypes[i]);
+                }
+            }
+        }
     }
 
     private static class MatchCondition {
diff --git a/tests/tests/content/src/android/content/cts/IntentTest.java b/tests/tests/content/src/android/content/cts/IntentTest.java
index a88fdf2..562c915 100644
--- a/tests/tests/content/src/android/content/cts/IntentTest.java
+++ b/tests/tests/content/src/android/content/cts/IntentTest.java
@@ -17,6 +17,7 @@
 package android.content.cts;
 
 import com.android.internal.app.ResolverActivity;
+import com.android.internal.util.Objects;
 import com.android.internal.util.XmlUtils;
 
 
@@ -41,6 +42,7 @@
 import android.provider.Contacts.People;
 import android.test.AndroidTestCase;
 import android.util.AttributeSet;
+import android.util.Log;
 import android.util.Xml;
 
 import java.io.IOException;
@@ -57,6 +59,7 @@
     private static final Uri ANOTHER_TEST_URI = People.CONTENT_FILTER_URI;
     private static final String TEST_EXTRA_NAME = "testExtraName";
     private Context mContext;
+    private PackageManager mPm;
     private ComponentName mComponentName;
     private ComponentName mAnotherComponentName;
     private static final String TEST_TYPE = "testType";
@@ -71,6 +74,7 @@
         super.setUp();
         mIntent = new Intent();
         mContext = getContext();
+        mPm = mContext.getPackageManager();
         mComponentName = new ComponentName(mContext, MockActivity.class);
         mAnotherComponentName = new ComponentName(mContext, "tmp");
     }
@@ -713,26 +717,51 @@
         assertEquals(expected, mIntent.getParcelableArrayExtra(TEST_EXTRA_NAME));
     }
 
-    public void testResolveActivity() {
-        final PackageManager pm = mContext.getPackageManager();
+    public void testResolveActivityEmpty() {
+        final Intent emptyIntent = new Intent();
 
-        ComponentName target = mIntent.resolveActivity(pm);
+        // Empty intent shouldn't resolve to anything
+        final ComponentName target = emptyIntent.resolveActivity(mPm);
         assertNull(target);
+    }
 
-        mIntent.setComponent(mComponentName);
-        target = mIntent.resolveActivity(pm);
-        assertEquals(mComponentName, target);
+    public void testResolveActivitySingleMatch() {
+        final Intent intent = new Intent("com.android.cts.content.action.TEST_ACTION");
+        intent.addCategory("com.android.cts.content.category.TEST_CATEGORY");
 
-        mIntent.setComponent(null);
-        mIntent.setData(TEST_URI);
-        target = mIntent.resolveActivity(pm);
-        assertEquals(ResolverActivity.class.getName(), target.getClassName());
-        assertEquals("android", target.getPackageName());
+        // Should only have one activity responding to narrow category
+        final ComponentName target = intent.resolveActivity(mPm);
+        assertEquals("com.android.cts.content", target.getPackageName());
+        assertEquals("android.app.cts.MockActivity", target.getClassName());
+    }
 
-        mIntent.setComponent(null);
-        mIntent.setAction(TEST_TYPE);
-        target = mIntent.resolveActivity(pm);
-        assertNull(target);
+    public void testResolveActivityShortcutMatch() {
+        final Intent intent = new Intent("com.android.cts.content.action.TEST_ACTION");
+        intent.setComponent(
+                new ComponentName("com.android.cts.content", "android.app.cts.MockActivity2"));
+
+        // Multiple activities match, but we asked for explicit component
+        final ComponentName target = intent.resolveActivity(mPm);
+        assertEquals("com.android.cts.content", target.getPackageName());
+        assertEquals("android.app.cts.MockActivity2", target.getClassName());
+    }
+
+    public void testResolveActivityMultipleMatch() {
+        final Intent intent = new Intent("com.android.cts.content.action.TEST_ACTION");
+
+        // Should have multiple activities, resulting in resolver dialog
+        final ComponentName target = intent.resolveActivity(mPm);
+        final String pkgName = target.getPackageName();
+        assertFalse("com.android.cts.content".equals(pkgName));
+
+        // Whoever they are must be able to set preferred activities
+        if (!"android".equals(pkgName)) {
+            if (mPm.checkPermission(android.Manifest.permission.SET_PREFERRED_APPLICATIONS, pkgName)
+                    != PackageManager.PERMISSION_GRANTED) {
+                fail("Resolved target " + target
+                        + " doesn't have SET_PREFERRED_APPLICATIONS permission");
+            }
+        }
     }
 
     public void testGetCharExtra() {
diff --git a/tests/tests/content/src/android/content/res/cts/ArrayTest.java b/tests/tests/content/src/android/content/res/cts/ArrayTest.java
old mode 100755
new mode 100644
diff --git a/tests/tests/content/src/android/content/res/cts/AssetFileDescriptorTest.java b/tests/tests/content/src/android/content/res/cts/AssetFileDescriptorTest.java
index 7891aec..e4a9500 100644
--- a/tests/tests/content/src/android/content/res/cts/AssetFileDescriptorTest.java
+++ b/tests/tests/content/src/android/content/res/cts/AssetFileDescriptorTest.java
@@ -83,8 +83,8 @@
         mOutputStream = null;
         try {
             mOutputStream = mAssetFileDes.createOutputStream();
-            fail("Should throw IllegalArgumentException");
-        } catch (IllegalArgumentException e) {
+            fail("Should throw IOException");
+        } catch (IOException e) {
             // expect
         }
         try {
@@ -120,8 +120,8 @@
         }
         try {
             mOutputStream = mAssetFileDes.createOutputStream();
-            fail("Should throw IllegalArgumentException");
-        } catch (IllegalArgumentException e) {
+            fail("Should throw IOException");
+        } catch (IOException e) {
             // expect
         }
         mAssetFileDes.close();
diff --git a/tests/tests/content/src/android/content/res/cts/ConfigTest.java b/tests/tests/content/src/android/content/res/cts/ConfigTest.java
old mode 100755
new mode 100644
index b49f156..bcfabe1
--- a/tests/tests/content/src/android/content/res/cts/ConfigTest.java
+++ b/tests/tests/content/src/android/content/res/cts/ConfigTest.java
@@ -116,13 +116,16 @@
                     break;
                 case WIDTH:
                     mMetrics.widthPixels = value;
+                    mMetrics.noncompatWidthPixels = value;
                     break;
                 case HEIGHT:
                     mMetrics.heightPixels = value;
+                    mMetrics.noncompatHeightPixels = value;
                     break;
                 case DENSITY:
                     // this is the ratio from the standard
                     mMetrics.density = (((float)value)/((float)DisplayMetrics.DENSITY_DEFAULT));
+                    mMetrics.noncompatDensity = mMetrics.density;
                     mConfig.densityDpi = value;
                     break;
                 case SCREENLAYOUT:
@@ -172,21 +175,21 @@
 
     public TotalConfig makeClassicConfig() {
         TotalConfig config = new TotalConfig();
-        config.mConfig.locale = new Locale("en", "US");
-        config.mConfig.mcc = 310;
-        config.mConfig.mnc = 001; // unused
-        config.mConfig.touchscreen = Configuration.TOUCHSCREEN_FINGER;
-        config.mConfig.keyboard = Configuration.KEYBOARD_QWERTY;
-        config.mConfig.keyboardHidden = Configuration.KEYBOARDHIDDEN_YES;
-        config.mConfig.navigation = Configuration.NAVIGATION_TRACKBALL;
-        config.mConfig.orientation = Configuration.ORIENTATION_PORTRAIT;
-        config.mConfig.smallestScreenWidthDp = 320;
-        config.mConfig.screenWidthDp = 320;
-        config.mConfig.screenHeightDp = 480;
-        config.mConfig.densityDpi = 160;
-        config.mMetrics.widthPixels = 200;
-        config.mMetrics.heightPixels = 320;
-        config.mMetrics.density = 1;
+        config.setProperty(Properties.LANGUAGE, "en");
+        config.setProperty(Properties.COUNTRY, "US");
+        config.setProperty(Properties.MCC, 310);
+        config.setProperty(Properties.MNC, 001); // unused
+        config.setProperty(Properties.TOUCHSCREEN, Configuration.TOUCHSCREEN_FINGER);
+        config.setProperty(Properties.KEYBOARD, Configuration.KEYBOARD_QWERTY);
+        config.setProperty(Properties.KEYBOARDHIDDEN, Configuration.KEYBOARDHIDDEN_YES);
+        config.setProperty(Properties.NAVIGATION, Configuration.NAVIGATION_TRACKBALL);
+        config.setProperty(Properties.ORIENTATION, Configuration.ORIENTATION_PORTRAIT);
+        config.setProperty(Properties.SWIDTH_DP, 320);
+        config.setProperty(Properties.WIDTH_DP, 320);
+        config.setProperty(Properties.HEIGHT_DP, 480);
+        config.setProperty(Properties.DENSITY, 160);
+        config.setProperty(Properties.WIDTH, 200);
+        config.setProperty(Properties.HEIGHT, 320);
         return config;
     }
 
diff --git a/tests/tests/content/src/android/content/res/cts/FractionTest.java b/tests/tests/content/src/android/content/res/cts/FractionTest.java
old mode 100755
new mode 100644
diff --git a/tests/tests/content/src/android/content/res/cts/PluralResourcesTest.java b/tests/tests/content/src/android/content/res/cts/PluralResourcesTest.java
old mode 100755
new mode 100644
diff --git a/tests/tests/content/src/android/content/res/cts/PrimitiveTest.java b/tests/tests/content/src/android/content/res/cts/PrimitiveTest.java
old mode 100755
new mode 100644
diff --git a/tests/tests/content/src/android/content/res/cts/RawResourceTest.java b/tests/tests/content/src/android/content/res/cts/RawResourceTest.java
old mode 100755
new mode 100644
diff --git a/tests/tests/content/src/android/content/res/cts/ResourceNameTest.java b/tests/tests/content/src/android/content/res/cts/ResourceNameTest.java
old mode 100755
new mode 100644
diff --git a/tests/tests/display/AndroidManifest.xml b/tests/tests/display/AndroidManifest.xml
index 1ddce5a..d1386d1 100644
--- a/tests/tests/display/AndroidManifest.xml
+++ b/tests/tests/display/AndroidManifest.xml
@@ -19,6 +19,7 @@
     package="com.android.cts.display">
 
     <uses-permission android:name="android.permission.DISABLE_KEYGUARD" />
+
     <application>
         <uses-library android:name="android.test.runner" />
     </application>
diff --git a/tests/tests/display/src/android/display/cts/DisplayTest.java b/tests/tests/display/src/android/display/cts/DisplayTest.java
index 595f7148..4c7116d 100644
--- a/tests/tests/display/src/android/display/cts/DisplayTest.java
+++ b/tests/tests/display/src/android/display/cts/DisplayTest.java
@@ -174,6 +174,6 @@
     public void testFlags() {
         Display display = getSecondaryDisplay(mDisplayManager.getDisplays());
 
-        assertEquals(0, display.getFlags());
+        assertEquals(Display.FLAG_PRESENTATION, display.getFlags());
     }
 }
diff --git a/tests/tests/display/src/android/display/cts/VirtualDisplayTest.java b/tests/tests/display/src/android/display/cts/VirtualDisplayTest.java
new file mode 100644
index 0000000..11bc15c
--- /dev/null
+++ b/tests/tests/display/src/android/display/cts/VirtualDisplayTest.java
@@ -0,0 +1,412 @@
+/*
+ * Copyright (C) 2013 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 android.display.cts;
+
+import android.app.Presentation;
+import android.content.Context;
+import android.graphics.Color;
+import android.graphics.PixelFormat;
+import android.graphics.Point;
+import android.graphics.drawable.ColorDrawable;
+import android.hardware.display.DisplayManager;
+import android.hardware.display.VirtualDisplay;
+import android.media.Image;
+import android.media.ImageReader;
+import android.os.Bundle;
+import android.os.Handler;
+import android.os.Looper;
+import android.os.HandlerThread;
+import android.os.SystemClock;
+import android.test.AndroidTestCase;
+import android.util.DisplayMetrics;
+import android.util.Log;
+import android.view.Display;
+import android.view.Surface;
+import android.view.ViewGroup.LayoutParams;
+import android.view.WindowManager;
+import android.widget.ImageView;
+
+import java.nio.ByteBuffer;
+import java.util.concurrent.locks.Lock;
+import java.util.concurrent.locks.ReentrantLock;
+
+/**
+ * Tests that applications can create virtual displays and present content on them.
+ *
+ * This CTS test is unable to test public virtual displays since special permissions
+ * are required.  See also framework VirtualDisplayTest unit tests.
+ */
+public class VirtualDisplayTest extends AndroidTestCase {
+    private static final String TAG = "VirtualDisplayTest";
+
+    private static final String NAME = TAG;
+    private static final int WIDTH = 720;
+    private static final int HEIGHT = 480;
+    private static final int DENSITY = DisplayMetrics.DENSITY_MEDIUM;
+    private static final int TIMEOUT = 10000;
+
+    // Colors that we use as a signal to determine whether some desired content was
+    // drawn.  The colors themselves doesn't matter but we choose them to have with distinct
+    // values for each color channel so as to detect possible RGBA vs. BGRA buffer format issues.
+    // We should only observe RGBA buffers but some graphics drivers might incorrectly
+    // deliver BGRA buffers to virtual displays instead.
+    private static final int BLUEISH = 0xff1122ee;
+    private static final int GREENISH = 0xff33dd44;
+
+    private DisplayManager mDisplayManager;
+    private Handler mHandler;
+    private final Lock mImageReaderLock = new ReentrantLock(true /*fair*/);
+    private ImageReader mImageReader;
+    private Surface mSurface;
+    private ImageListener mImageListener;
+    private HandlerThread mCheckThread;
+    private Handler mCheckHandler;
+
+    @Override
+    protected void setUp() throws Exception {
+        super.setUp();
+
+        mDisplayManager = (DisplayManager)mContext.getSystemService(Context.DISPLAY_SERVICE);
+        mHandler = new Handler(Looper.getMainLooper());
+        mImageListener = new ImageListener();
+        // thread for image checking
+        mCheckThread = new HandlerThread("TestHandler");
+        mCheckThread.start();
+        mCheckHandler = new Handler(mCheckThread.getLooper());
+
+        mImageReaderLock.lock();
+        try {
+            mImageReader = ImageReader.newInstance(WIDTH, HEIGHT, PixelFormat.RGBA_8888, 2);
+            mImageReader.setOnImageAvailableListener(mImageListener, mCheckHandler);
+            mSurface = mImageReader.getSurface();
+        } finally {
+            mImageReaderLock.unlock();
+        }
+    }
+
+    @Override
+    protected void tearDown() throws Exception {
+        super.tearDown();
+        mImageReaderLock.lock();
+        try {
+            mImageReader.close();
+            mImageReader = null;
+            mSurface = null;
+        } finally {
+            mImageReaderLock.unlock();
+        }
+        mCheckThread.quit();
+    }
+
+    /**
+     * Ensures that an application can create a private virtual display and show
+     * its own windows on it.
+     */
+    public void testPrivateVirtualDisplay() throws Exception {
+        VirtualDisplay virtualDisplay = mDisplayManager.createVirtualDisplay(NAME,
+                WIDTH, HEIGHT, DENSITY, mSurface, 0);
+        assertNotNull("virtual display must not be null", virtualDisplay);
+
+        Display display = virtualDisplay.getDisplay();
+        try {
+            assertDisplayRegistered(display, Display.FLAG_PRIVATE);
+
+            // Show a private presentation on the display.
+            assertDisplayCanShowPresentation("private presentation window",
+                    display, BLUEISH,
+                    WindowManager.LayoutParams.TYPE_PRIVATE_PRESENTATION, 0);
+        } finally {
+            virtualDisplay.release();
+        }
+        assertDisplayUnregistered(display);
+    }
+
+    /**
+     * Ensures that an application can create a private presentation virtual display and show
+     * its own windows on it.
+     */
+    public void testPrivatePresentationVirtualDisplay() throws Exception {
+        VirtualDisplay virtualDisplay = mDisplayManager.createVirtualDisplay(NAME,
+                WIDTH, HEIGHT, DENSITY, mSurface,
+                DisplayManager.VIRTUAL_DISPLAY_FLAG_PRESENTATION);
+        assertNotNull("virtual display must not be null", virtualDisplay);
+
+        Display display = virtualDisplay.getDisplay();
+        try {
+            assertDisplayRegistered(display, Display.FLAG_PRIVATE | Display.FLAG_PRESENTATION);
+
+            // Show a private presentation on the display.
+            assertDisplayCanShowPresentation("private presentation window",
+                    display, BLUEISH,
+                    WindowManager.LayoutParams.TYPE_PRIVATE_PRESENTATION, 0);
+        } finally {
+            virtualDisplay.release();
+        }
+        assertDisplayUnregistered(display);
+    }
+
+    private void assertDisplayRegistered(Display display, int flags) {
+        assertNotNull("display object must not be null", display);
+        assertTrue("display must be valid", display.isValid());
+        assertTrue("display id must be unique",
+                display.getDisplayId() != Display.DEFAULT_DISPLAY);
+        assertEquals("display must have correct flags", flags, display.getFlags());
+        assertEquals("display name must match supplied name", NAME, display.getName());
+        Point size = new Point();
+        display.getSize(size);
+        assertEquals("display width must match supplied width", WIDTH, size.x);
+        assertEquals("display height must match supplied height", HEIGHT, size.y);
+        assertEquals("display rotation must be 0",
+                Surface.ROTATION_0, display.getRotation());
+        assertNotNull("display must be registered",
+                findDisplay(mDisplayManager.getDisplays(), NAME));
+
+        if ((flags & Display.FLAG_PRESENTATION) != 0) {
+            assertNotNull("display must be registered as a presentation display",
+                    findDisplay(mDisplayManager.getDisplays(
+                            DisplayManager.DISPLAY_CATEGORY_PRESENTATION), NAME));
+        } else {
+            assertNull("display must not be registered as a presentation display",
+                    findDisplay(mDisplayManager.getDisplays(
+                            DisplayManager.DISPLAY_CATEGORY_PRESENTATION), NAME));
+        }
+    }
+
+    private void assertDisplayUnregistered(Display display) {
+        assertNull("display must no longer be registered after being removed",
+                findDisplay(mDisplayManager.getDisplays(), NAME));
+        assertFalse("display must no longer be valid", display.isValid());
+    }
+
+    private void assertDisplayCanShowPresentation(String message, final Display display,
+            final int color, final int windowType, final int windowFlags) {
+        // At this point, we should not have seen any blue.
+        assertTrue(message + ": display should not show content before window is shown",
+                mImageListener.getColor() != color);
+
+        final TestPresentation[] presentation = new TestPresentation[1];
+        try {
+            // Show the presentation.
+            runOnUiThread(new Runnable() {
+                @Override
+                public void run() {
+                    presentation[0] = new TestPresentation(getContext(), display,
+                            color, windowType, windowFlags);
+                    presentation[0].show();
+                }
+            });
+
+            // Wait for the blue to be seen.
+            assertTrue(message + ": display should show content after window is shown",
+                    mImageListener.waitForColor(color, TIMEOUT));
+        } finally {
+            if (presentation[0] != null) {
+                runOnUiThread(new Runnable() {
+                    @Override
+                    public void run() {
+                        presentation[0].dismiss();
+                    }
+                });
+            }
+        }
+    }
+
+    private void runOnUiThread(Runnable runnable) {
+        Runnable waiter = new Runnable() {
+            @Override
+            public void run() {
+                synchronized (this) {
+                    notifyAll();
+                }
+            }
+        };
+        synchronized (waiter) {
+            mHandler.post(runnable);
+            mHandler.post(waiter);
+            try {
+                waiter.wait(TIMEOUT);
+            } catch (InterruptedException ex) {
+            }
+        }
+    }
+
+    private Display findDisplay(Display[] displays, String name) {
+        for (int i = 0; i < displays.length; i++) {
+            if (displays[i].getName().equals(name)) {
+                return displays[i];
+            }
+        }
+        return null;
+    }
+
+    private final class TestPresentation extends Presentation {
+        private final int mColor;
+        private final int mWindowType;
+        private final int mWindowFlags;
+
+        public TestPresentation(Context context, Display display,
+                int color, int windowType, int windowFlags) {
+            super(context, display);
+            mColor = color;
+            mWindowType = windowType;
+            mWindowFlags = windowFlags;
+        }
+
+        @Override
+        protected void onCreate(Bundle savedInstanceState) {
+            super.onCreate(savedInstanceState);
+
+            setTitle(TAG);
+            getWindow().setType(mWindowType);
+            getWindow().addFlags(mWindowFlags);
+
+            // Create a solid color image to use as the content of the presentation.
+            ImageView view = new ImageView(getContext());
+            view.setImageDrawable(new ColorDrawable(mColor));
+            view.setLayoutParams(new LayoutParams(
+                    LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT));
+            setContentView(view);
+        }
+    }
+
+    /**
+     * Watches for an image with a large amount of some particular solid color to be shown.
+     */
+    private final class ImageListener
+            implements ImageReader.OnImageAvailableListener {
+        private int mColor = -1;
+
+        public int getColor() {
+            synchronized (this) {
+                return mColor;
+            }
+        }
+
+        public boolean waitForColor(int color, long timeoutMillis) {
+            long timeoutTime = SystemClock.uptimeMillis() + timeoutMillis;
+            synchronized (this) {
+                while (mColor != color) {
+                    long now = SystemClock.uptimeMillis();
+                    if (now >= timeoutTime) {
+                        return false;
+                    }
+                    try {
+                        wait(timeoutTime - now);
+                    } catch (InterruptedException ex) {
+                    }
+                }
+                return true;
+            }
+        }
+
+        @Override
+        public void onImageAvailable(ImageReader reader) {
+            mImageReaderLock.lock();
+            try {
+                if (reader != mImageReader) {
+                    return;
+                }
+
+                Log.d(TAG, "New image available from virtual display.");
+                // Get the latest buffer
+                Image image = reader.acquireLatestImage();
+                if (image != null) {
+                    try {
+                        // Scan for colors.
+                        int color = scanImage(image);
+                        synchronized (this) {
+                            if (mColor != color) {
+                                mColor = color;
+                                notifyAll();
+                            }
+                        }
+                    } finally {
+                        image.close();
+                    }
+                }
+            } finally {
+                mImageReaderLock.unlock();
+            }
+        }
+
+        private int scanImage(Image image) {
+            final Image.Plane plane = image.getPlanes()[0];
+            final ByteBuffer buffer = plane.getBuffer();
+            final int width = image.getWidth();
+            final int height = image.getHeight();
+            final int pixelStride = plane.getPixelStride();
+            final int rowStride = plane.getRowStride();
+            final int rowPadding = rowStride - pixelStride * width;
+
+            Log.d(TAG, "- Scanning image: width=" + width + ", height=" + height
+                    + ", pixelStride=" + pixelStride + ", rowStride=" + rowStride);
+
+            int offset = 0;
+            int blackPixels = 0;
+            int bluePixels = 0;
+            int greenPixels = 0;
+            int otherPixels = 0;
+            for (int y = 0; y < height; y++) {
+                for (int x = 0; x < width; x++) {
+                    int pixel = 0;
+                    pixel |= (buffer.get(offset) & 0xff) << 16;     // R
+                    pixel |= (buffer.get(offset + 1) & 0xff) << 8;  // G
+                    pixel |= (buffer.get(offset + 2) & 0xff);       // B
+                    pixel |= (buffer.get(offset + 3) & 0xff) << 24; // A
+                    if (pixel == Color.BLACK || pixel == 0) {
+                        blackPixels += 1;
+                    } else if (pixel == BLUEISH) {
+                        bluePixels += 1;
+                    } else if (pixel == GREENISH) {
+                        greenPixels += 1;
+                    } else {
+                        otherPixels += 1;
+                        if (otherPixels < 10) {
+                            Log.d(TAG, "- Found unexpected color: " + Integer.toHexString(pixel));
+                        }
+                    }
+                    offset += pixelStride;
+                }
+                offset += rowPadding;
+            }
+
+            // Return a color if it represents more than one quarter of the pixels.
+            // We use this threshold in case the display is being letterboxed when
+            // mirroring so there might be large black bars on the sides, which is normal.
+            Log.d(TAG, "- Pixels: " + blackPixels + " black, "
+                    + bluePixels + " blue, "
+                    + greenPixels + " green, "
+                    + otherPixels + " other");
+            final int threshold = width * height / 4;
+            if (bluePixels > threshold) {
+                Log.d(TAG, "- Reporting blue.");
+                return BLUEISH;
+            }
+            if (greenPixels > threshold) {
+                Log.d(TAG, "- Reporting green.");
+                return GREENISH;
+            }
+            if (blackPixels > threshold) {
+                Log.d(TAG, "- Reporting black.");
+                return Color.BLACK;
+            }
+            Log.d(TAG, "- Reporting other.");
+            return -1;
+        }
+    }
+}
+
diff --git a/tests/tests/dpi/src/android/dpi/cts/ConfigurationTest.java b/tests/tests/dpi/src/android/dpi/cts/ConfigurationTest.java
index 6f26b6e..4ecabc5 100644
--- a/tests/tests/dpi/src/android/dpi/cts/ConfigurationTest.java
+++ b/tests/tests/dpi/src/android/dpi/cts/ConfigurationTest.java
@@ -52,7 +52,9 @@
         allowedDensities.add(DisplayMetrics.DENSITY_TV);
         allowedDensities.add(DisplayMetrics.DENSITY_HIGH);
         allowedDensities.add(DisplayMetrics.DENSITY_XHIGH);
+        allowedDensities.add(DisplayMetrics.DENSITY_400);
         allowedDensities.add(DisplayMetrics.DENSITY_XXHIGH);
+        allowedDensities.add(DisplayMetrics.DENSITY_XXXHIGH);
         assertTrue("DisplayMetrics#densityDpi must be one of the DisplayMetrics.DENSITY_* values: "
                 + allowedDensities, allowedDensities.contains(metrics.densityDpi));
 
diff --git a/tests/tests/example/Android.mk b/tests/tests/example/Android.mk
deleted file mode 100644
index c6ef67b..0000000
--- a/tests/tests/example/Android.mk
+++ /dev/null
@@ -1,37 +0,0 @@
-# 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)
-
-# Replace "Example" with your name.
-LOCAL_PACKAGE_NAME := CtsExampleTestCases
-
-# Don't include this package in any target.
-LOCAL_MODULE_TAGS := optional
-
-# When built, explicitly put it in the data partition.
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-
-# All tests should include android.test.runner.
-LOCAL_JAVA_LIBRARIES := android.test.runner
-
-LOCAL_STATIC_JAVA_LIBRARIES := ctstestrunner
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-
-LOCAL_SDK_VERSION := current
-
-include $(BUILD_CTS_PACKAGE)
diff --git a/tests/tests/example/AndroidManifest.xml b/tests/tests/example/AndroidManifest.xml
deleted file mode 100644
index ba41cce..0000000
--- a/tests/tests/example/AndroidManifest.xml
+++ /dev/null
@@ -1,35 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- 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.
--->
-
-<!-- Replace all the "example" stuff below with your package name, and
-     remove this comment.
--->
-
-<manifest xmlns:android="http://schemas.android.com/apk/res/android"
-    package="com.android.cts.example">
-
-    <uses-permission android:name="android.permission.DISABLE_KEYGUARD" />
-    <application>
-        <uses-library android:name="android.test.runner" />
-    </application>
-
-    <!-- This is a self-instrumenting test package. -->
-    <instrumentation android:name="android.test.InstrumentationCtsTestRunner"
-                     android:targetPackage="com.android.cts.example"
-                     android:label="CTS tests of example component"/>
-
-</manifest>
-
diff --git a/tests/tests/example/src/android/example/Example.java b/tests/tests/example/src/android/example/Example.java
deleted file mode 100644
index bc22d9a..0000000
--- a/tests/tests/example/src/android/example/Example.java
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
- * 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 android.example;
-
-/**
- * Example class being tested. In a real test, the classes to test would
- * live somewhere other than in the test package, but for the sake of
- * brevity, we include this one here instead.
- */
-public class Example {
-    /**
-     * Return the standard string indication of a successfuly blorting.
-     *
-     * @returns {@code "blort"}, always
-     */
-    public static String blort() {
-        return "blort";
-    }
-
-    /**
-     * Return the standard string indication of a successfuly zorching.
-     *
-     * @returns {@code "zorch"}, always
-     */
-    public static String zorch() {
-        return "zorch";
-    }
-}
diff --git a/tests/tests/example/src/android/example/cts/ExampleSecondaryTest.java b/tests/tests/example/src/android/example/cts/ExampleSecondaryTest.java
deleted file mode 100644
index d2b78dc..0000000
--- a/tests/tests/example/src/android/example/cts/ExampleSecondaryTest.java
+++ /dev/null
@@ -1,47 +0,0 @@
-/*
- * 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 android.example.cts;
-
-import android.example.Example;
-
-import junit.framework.TestCase;
-
-/**
- * Example test to demonstrate how tests work as well as to serve as a
- * smoke test for the CTS. This secondary test exists to demonstrate
- * that you may have more than one test class. Typically you will
- * separate your test classes by what class or major piece of
- * functionality is being tested.
- */
-public class ExampleSecondaryTest extends TestCase {
-    /*
-     * You can define standard JUnit setUp() and tearDown() methods here,
-     * if needed.
-     *
-     * @Override protected void setUp() throws Exception { ... }
-     * @Override protected void tearDown() throws Exception { ... }
-     */
-
-    /**
-     * Test {@link Example#zorch}.
-     */
-    public void testZorch() {
-        assertEquals("zorch", Example.zorch());
-    }
-
-    // Add more tests here.
-}
diff --git a/tests/tests/example/src/android/example/cts/ExampleTest.java b/tests/tests/example/src/android/example/cts/ExampleTest.java
deleted file mode 100644
index db907cc..0000000
--- a/tests/tests/example/src/android/example/cts/ExampleTest.java
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
- * 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 android.example.cts;
-
-import android.example.Example;
-
-import junit.framework.TestCase;
-
-/**
- * Example test to demonstrate how tests work as well as to serve as
- * a smoke test for the CTS. (If the example test is "broken," then it
- * probably means that there's something fundamentally wrong with your
- * setup.)
- */
-public class ExampleTest extends TestCase {
-    /*
-     * You can define standard JUnit setUp() and tearDown() methods here,
-     * if needed.
-     *
-     * @Override protected void setUp() throws Exception { ... }
-     * @Override protected void tearDown() throws Exception { ... }
-     */
-
-    /**
-     * Test {@link Example#blort}.
-     */
-    public void testBlort() {
-        assertEquals("blort", Example.blort());
-    }
-
-    // Add more tests here.
-}
diff --git a/tests/tests/gesture/src/android/gesture/cts/GesturePointTest.java b/tests/tests/gesture/src/android/gesture/cts/GesturePointTest.java
old mode 100755
new mode 100644
diff --git a/tests/tests/gesture/src/android/gesture/cts/GestureStrokeTest.java b/tests/tests/gesture/src/android/gesture/cts/GestureStrokeTest.java
old mode 100755
new mode 100644
diff --git a/tests/tests/gesture/src/android/gesture/cts/GestureTest.java b/tests/tests/gesture/src/android/gesture/cts/GestureTest.java
old mode 100755
new mode 100644
diff --git a/tests/tests/gesture/src/android/gesture/cts/LineGestureStrokeHelper.java b/tests/tests/gesture/src/android/gesture/cts/LineGestureStrokeHelper.java
old mode 100755
new mode 100644
diff --git a/tests/tests/graphics/src/android/graphics/cts/BitmapFactoryTest.java b/tests/tests/graphics/src/android/graphics/cts/BitmapFactoryTest.java
old mode 100755
new mode 100644
index d6b4fde..6c63783
--- a/tests/tests/graphics/src/android/graphics/cts/BitmapFactoryTest.java
+++ b/tests/tests/graphics/src/android/graphics/cts/BitmapFactoryTest.java
@@ -39,7 +39,7 @@
 import java.io.FileOutputStream;
 import java.io.IOException;
 import java.io.InputStream;
-import java.io.OutputStream;
+import java.io.RandomAccessFile;
 
 public class BitmapFactoryTest extends InstrumentationTestCase {
     private Resources mRes;
@@ -58,10 +58,6 @@
             R.drawable.baseline_jpeg, R.drawable.png_test, R.drawable.gif_test,
             R.drawable.bmp_test, R.drawable.webp_test
     };
-    private static String[] NAMES_TEMP_FILES = new String[] {
-        "baseline_temp.jpg", "png_temp.png", "gif_temp.gif",
-        "bmp_temp.bmp", "webp_temp.webp"
-    };
 
     // The width and height of the above image.
     private static int WIDTHS[] = new int[] { 1280, 640, 320, 320, 640 };
@@ -72,6 +68,22 @@
         Config.ARGB_4444};
     private static int[] COLOR_TOLS = new int[] {16, 49, 576};
 
+    private static int[] RAW_COLORS = new int[] {
+        // raw data from R.drawable.premul_data
+        Color.argb(255, 0, 0, 0),
+        Color.argb(128, 255, 0, 0),
+        Color.argb(128, 25, 26, 27),
+        Color.argb(2, 255, 254, 253),
+    };
+
+    private static int[] DEPREMUL_COLORS = new int[] {
+        // data from R.drawable.premul_data, after premultiplied store + un-premultiplied load
+        Color.argb(255, 0, 0, 0),
+        Color.argb(128, 255, 0, 0),
+        Color.argb(128, 26, 26, 28),
+        Color.argb(2, 255, 255, 255),
+    };
+
     @Override
     protected void setUp() throws Exception {
         super.setUp();
@@ -224,6 +236,50 @@
         assertEquals(START_WIDTH, b.getWidth());
     }
 
+    public void testDecodeFileDescriptor3() throws IOException {
+        // Arbitrary offsets to use. If the offset of the FD matches the offset of the image,
+        // decoding should succeed, but if they do not match, decoding should fail.
+        long ACTUAL_OFFSETS[] = new long[] { 0, 17 };
+        for (int RES_ID : RES_IDS) {
+            for (int j = 0; j < ACTUAL_OFFSETS.length; ++j) {
+                // FIXME: The purgeable test should attempt to purge the memory
+                // to force a re-decode.
+                for (boolean TEST_PURGEABLE : new boolean[] { false, true }) {
+                    BitmapFactory.Options opts = new BitmapFactory.Options();
+                    opts.inPurgeable = TEST_PURGEABLE;
+                    opts.inInputShareable = TEST_PURGEABLE;
+
+                    long actualOffset = ACTUAL_OFFSETS[j];
+                    String path = obtainPath(RES_ID, actualOffset);
+                    RandomAccessFile file = new RandomAccessFile(path, "r");
+                    FileDescriptor fd = file.getFD();
+                    assertTrue(fd.valid());
+
+                    // Set the offset to ACTUAL_OFFSET
+                    file.seek(actualOffset);
+                    assertEquals(file.getFilePointer(), actualOffset);
+
+                    // Now decode. This should be successful and leave the offset
+                    // unchanged.
+                    Bitmap b = BitmapFactory.decodeFileDescriptor(fd, null, opts);
+                    assertNotNull(b);
+                    assertEquals(file.getFilePointer(), actualOffset);
+
+                    // Now use the other offset. It should fail to decode, and
+                    // the offset should remain unchanged.
+                    long otherOffset = ACTUAL_OFFSETS[(j + 1) % ACTUAL_OFFSETS.length];
+                    assertFalse(otherOffset == actualOffset);
+                    file.seek(otherOffset);
+                    assertEquals(file.getFilePointer(), otherOffset);
+
+                    b = BitmapFactory.decodeFileDescriptor(fd, null, opts);
+                    assertNull(b);
+                    assertEquals(file.getFilePointer(), otherOffset);
+                }
+            }
+        }
+    }
+
     public void testDecodeFile1() throws IOException {
         Bitmap b = BitmapFactory.decodeFile(obtainPath(), mOpt1);
         assertNotNull(b);
@@ -242,6 +298,190 @@
         assertEquals(START_WIDTH, b.getWidth());
     }
 
+    public void testDecodeReuseBasic() throws IOException {
+        BitmapFactory.Options options = new BitmapFactory.Options();
+        options.inMutable = true;
+        options.inSampleSize = 0; // treated as 1
+        options.inScaled = false;
+        Bitmap start = BitmapFactory.decodeResource(mRes, R.drawable.start, options);
+        int originalSize = start.getByteCount();
+        assertEquals(originalSize, start.getAllocationByteCount());
+
+        options.inBitmap = start;
+        options.inMutable = false; // will be overridden by non-null inBitmap
+        options.inSampleSize = -42; // treated as 1
+        Bitmap pass = BitmapFactory.decodeResource(mRes, R.drawable.pass, options);
+
+        assertEquals(originalSize, pass.getByteCount());
+        assertEquals(originalSize, pass.getAllocationByteCount());
+        assertSame(start, pass);
+        assertTrue(pass.isMutable());
+    }
+
+    public void testDecodeReuseFormats() throws IOException {
+        // reuse should support all image formats
+        for (int i = 0; i < RES_IDS.length; ++i) {
+            Bitmap reuseBuffer = Bitmap.createBitmap(1000000, 1, Bitmap.Config.ALPHA_8);
+
+            BitmapFactory.Options options = new BitmapFactory.Options();
+            options.inBitmap = reuseBuffer;
+            options.inSampleSize = 4;
+            options.inScaled = false;
+            Bitmap decoded = BitmapFactory.decodeResource(mRes, RES_IDS[i], options);
+            assertSame(reuseBuffer, decoded);
+        }
+    }
+
+    public void testDecodeReuseFailure() throws IOException {
+        BitmapFactory.Options options = new BitmapFactory.Options();
+        options.inMutable = true;
+        options.inScaled = false;
+        options.inSampleSize = 4;
+        Bitmap reduced = BitmapFactory.decodeResource(mRes, R.drawable.robot, options);
+
+        options.inBitmap = reduced;
+        options.inSampleSize = 1;
+        try {
+            Bitmap original = BitmapFactory.decodeResource(mRes, R.drawable.robot, options);
+            fail("should throw exception due to lack of space");
+        } catch (IllegalArgumentException e) {
+        }
+    }
+
+    public void testDecodeReuseScaling() throws IOException {
+        BitmapFactory.Options options = new BitmapFactory.Options();
+        options.inMutable = true;
+        options.inScaled = false;
+        Bitmap original = BitmapFactory.decodeResource(mRes, R.drawable.robot, options);
+        int originalSize = original.getByteCount();
+        assertEquals(originalSize, original.getAllocationByteCount());
+
+        options.inBitmap = original;
+        options.inSampleSize = 4;
+        Bitmap reduced = BitmapFactory.decodeResource(mRes, R.drawable.robot, options);
+
+        assertSame(original, reduced);
+        assertEquals(originalSize, reduced.getAllocationByteCount());
+        assertEquals(originalSize, reduced.getByteCount() * 16);
+    }
+
+    public void testDecodeReuseDoubleScaling() throws IOException {
+        BitmapFactory.Options options = new BitmapFactory.Options();
+        options.inMutable = true;
+        options.inScaled = false;
+        options.inSampleSize = 1;
+        Bitmap original = BitmapFactory.decodeResource(mRes, R.drawable.robot, options);
+        int originalSize = original.getByteCount();
+
+        // Verify that inSampleSize and density scaling both work with reuse concurrently
+        options.inBitmap = original;
+        options.inScaled = true;
+        options.inSampleSize = 2;
+        options.inDensity = 2;
+        options.inTargetDensity = 4;
+        Bitmap doubleScaled = BitmapFactory.decodeResource(mRes, R.drawable.robot, options);
+
+        assertSame(original, doubleScaled);
+        assertEquals(4, doubleScaled.getDensity());
+        assertEquals(originalSize, doubleScaled.getByteCount());
+    }
+
+    public void testDecodeReuseEquivalentScaling() throws IOException {
+        BitmapFactory.Options options = new BitmapFactory.Options();
+        options.inMutable = true;
+        options.inScaled = true;
+        options.inDensity = 4;
+        options.inTargetDensity = 2;
+        Bitmap densityReduced = BitmapFactory.decodeResource(mRes, R.drawable.robot, options);
+        assertEquals(2, densityReduced.getDensity());
+        options.inBitmap = densityReduced;
+        options.inDensity = 0;
+        options.inScaled = false;
+        options.inSampleSize = 2;
+        Bitmap scaleReduced = BitmapFactory.decodeResource(mRes, R.drawable.robot, options);
+        // verify that density isn't incorrectly carried over during bitmap reuse
+        assertFalse(densityReduced.getDensity() == 2);
+        assertFalse(densityReduced.getDensity() == 0);
+        assertSame(densityReduced, scaleReduced);
+    }
+
+    public void testDecodePremultipliedDefault() throws IOException {
+        Bitmap simplePremul = BitmapFactory.decodeResource(mRes, R.drawable.premul_data);
+        assertTrue(simplePremul.isPremultiplied());
+    }
+
+    public void testDecodePremultipliedData() throws IOException {
+        BitmapFactory.Options options = new BitmapFactory.Options();
+        options.inScaled = false;
+        Bitmap premul = BitmapFactory.decodeResource(mRes, R.drawable.premul_data, options);
+        options.inPremultiplied = false;
+        Bitmap unpremul = BitmapFactory.decodeResource(mRes, R.drawable.premul_data, options);
+        assertEquals(premul.getConfig(), Bitmap.Config.ARGB_8888);
+        assertEquals(unpremul.getConfig(), Bitmap.Config.ARGB_8888);
+        assertTrue(premul.getHeight() == 1 && unpremul.getHeight() == 1);
+        assertTrue(premul.getWidth() == unpremul.getWidth() &&
+                   DEPREMUL_COLORS.length == RAW_COLORS.length &&
+                   premul.getWidth() == DEPREMUL_COLORS.length);
+
+        // verify pixel data - unpremul should have raw values, premul will have rounding errors
+        for (int i = 0; i < premul.getWidth(); i++) {
+            assertEquals(premul.getPixel(i, 0), DEPREMUL_COLORS[i]);
+            assertEquals(unpremul.getPixel(i, 0), RAW_COLORS[i]);
+        }
+    }
+
+    public void testDecodeInPurgeableAllocationCount() {
+        BitmapFactory.Options options = new BitmapFactory.Options();
+        options.inSampleSize = 1;
+        options.inJustDecodeBounds = false;
+        options.inPurgeable = true;
+        options.inInputShareable = false;
+        byte[] array = obtainArray();
+        Bitmap purgeableBitmap = BitmapFactory.decodeByteArray(array, 0, array.length, options);
+        assertFalse(purgeableBitmap.getAllocationByteCount() == 0);
+    }
+
+    private int mDefaultCreationDensity;
+    private void verifyScaled(Bitmap b) {
+        assertEquals(b.getWidth(), START_WIDTH * 2);
+        assertEquals(b.getDensity(), 2);
+    }
+
+    private void verifyUnscaled(Bitmap b) {
+        assertEquals(b.getWidth(), START_WIDTH);
+        assertEquals(b.getDensity(), mDefaultCreationDensity);
+    }
+
+    public void testDecodeScaling() {
+        BitmapFactory.Options defaultOpt = new BitmapFactory.Options();
+
+        BitmapFactory.Options unscaledOpt = new BitmapFactory.Options();
+        unscaledOpt.inScaled = false;
+
+        BitmapFactory.Options scaledOpt = new BitmapFactory.Options();
+        scaledOpt.inScaled = true;
+        scaledOpt.inDensity = 1;
+        scaledOpt.inTargetDensity = 2;
+
+        mDefaultCreationDensity = Bitmap.createBitmap(1, 1, Config.ARGB_8888).getDensity();
+
+        byte[] bytes = obtainArray();
+
+        verifyUnscaled(BitmapFactory.decodeByteArray(bytes, 0, bytes.length));
+        verifyUnscaled(BitmapFactory.decodeByteArray(bytes, 0, bytes.length, null));
+        verifyUnscaled(BitmapFactory.decodeByteArray(bytes, 0, bytes.length, unscaledOpt));
+        verifyUnscaled(BitmapFactory.decodeByteArray(bytes, 0, bytes.length, defaultOpt));
+
+        verifyUnscaled(BitmapFactory.decodeStream(obtainInputStream()));
+        verifyUnscaled(BitmapFactory.decodeStream(obtainInputStream(), null, null));
+        verifyUnscaled(BitmapFactory.decodeStream(obtainInputStream(), null, unscaledOpt));
+        verifyUnscaled(BitmapFactory.decodeStream(obtainInputStream(), null, defaultOpt));
+
+        // scaling should only occur if Options are passed with inScaled=true
+        verifyScaled(BitmapFactory.decodeByteArray(bytes, 0, bytes.length, scaledOpt));
+        verifyScaled(BitmapFactory.decodeStream(obtainInputStream(), null, scaledOpt));
+    }
+
     private byte[] obtainArray() {
         ByteArrayOutputStream stm = new ByteArrayOutputStream();
         Options opt = new BitmapFactory.Options();
@@ -267,17 +507,32 @@
     }
 
     private String obtainPath() throws IOException {
+        return obtainPath(R.drawable.start, 0);
+    }
+
+    /*
+     * Create a new file and return a path to it.
+     * @param resId Original file. It will be copied into the new file.
+     * @param offset Number of zeroes to write to the new file before the
+     *               copied file. This allows testing decodeFileDescriptor
+     *               with an offset. Must be less than or equal to 1024
+     */
+    private String obtainPath(int resId, long offset) throws IOException {
         File dir = getInstrumentation().getTargetContext().getFilesDir();
         dir.mkdirs();
+        // The suffix does not necessarily represent theactual file type.
         File file = new File(dir, "test.jpg");
         if (!file.createNewFile()) {
             if (!file.exists()) {
                 fail("Failed to create new File!");
             }
         }
-        InputStream is = obtainInputStream();
+        InputStream is = obtainInputStream(resId);
         FileOutputStream fOutput = new FileOutputStream(file);
         byte[] dataBuffer = new byte[1024];
+        // Write a bunch of zeroes before the image.
+        assertTrue(offset <= 1024);
+        fOutput.write(dataBuffer, 0, (int) offset);
         int readLength = 0;
         while ((readLength = is.read(dataBuffer)) != -1) {
             fOutput.write(dataBuffer, 0, readLength);
diff --git a/tests/tests/graphics/src/android/graphics/cts/BitmapRegionDecoderTest.java b/tests/tests/graphics/src/android/graphics/cts/BitmapRegionDecoderTest.java
old mode 100755
new mode 100644
index d51fc72..c981db3
--- a/tests/tests/graphics/src/android/graphics/cts/BitmapRegionDecoderTest.java
+++ b/tests/tests/graphics/src/android/graphics/cts/BitmapRegionDecoderTest.java
@@ -186,6 +186,36 @@
         }
     }
 
+    public void testDecodeRegionInputStreamInBitmap() throws IOException {
+        Options opts = new BitmapFactory.Options();
+        for (int i = 0; i < NUM_TEST_IMAGES; ++i) {
+            for (int j = 0; j < SAMPLESIZES.length; ++j) {
+                for (int k = 0; k < COLOR_CONFIGS.length; ++k) {
+                    opts.inSampleSize = SAMPLESIZES[j];
+                    opts.inPreferredConfig = COLOR_CONFIGS[k];
+                    opts.inBitmap = null;
+
+                    InputStream is1 = obtainInputStream(RES_IDS[i]);
+                    BitmapRegionDecoder decoder = BitmapRegionDecoder.newInstance(is1, false);
+                    InputStream is2 = obtainInputStream(RES_IDS[i]);
+                    Bitmap wholeImage = BitmapFactory.decodeStream(is2, null, opts);
+
+                    // setting inBitmap enables several checks within compareRegionByRegion
+                    opts.inBitmap = Bitmap.createBitmap(
+                            wholeImage.getWidth(), wholeImage.getHeight(), opts.inPreferredConfig);
+
+                    if (RES_IDS[i] == R.drawable.webp_test && COLOR_CONFIGS[k] == Config.RGB_565) {
+                        compareRegionByRegion(decoder, opts, mMseMarginWebPConfigRgb565,
+                                              wholeImage);
+                    } else {
+                        compareRegionByRegion(decoder, opts, mMseMargin, wholeImage);
+                    }
+                    wholeImage.recycle();
+                }
+            }
+        }
+    }
+
     public void testDecodeRegionByteArray() throws IOException {
         Options opts = new BitmapFactory.Options();
         for (int i = 0; i < NUM_TEST_IMAGES; ++i) {
@@ -292,9 +322,18 @@
                 actual = decoder.decodeRegion(rect1, opts);
                 int left = rect1.left / opts.inSampleSize;
                 int top = rect1.top / opts.inSampleSize;
-                Rect rect2 = new Rect(left, top, left + actual.getWidth(),
+                if (opts.inBitmap != null) {
+                    // bitmap reuse path - ensure reuse worked
+                    assertSame(opts.inBitmap, actual);
+                    int currentWidth = rect1.width() / opts.inSampleSize;
+                    int currentHeight = rect1.height() / opts.inSampleSize;
+                    Rect actualRect = new Rect(0, 0, currentWidth, currentHeight);
+                    // crop 'actual' to the size to be tested (and avoid recycling inBitmap)
+                    actual = cropBitmap(actual, actualRect);
+                }
+                Rect expectedRect = new Rect(left, top, left + actual.getWidth(),
                         top + actual.getHeight());
-                expected = cropBitmap(wholeImage, rect2);
+                expected = cropBitmap(wholeImage, expectedRect);
                 compareBitmaps(expected, actual, mseMargin, true);
                 actual.recycle();
                 expected.recycle();
diff --git a/tests/tests/graphics/src/android/graphics/cts/BitmapTest.java b/tests/tests/graphics/src/android/graphics/cts/BitmapTest.java
index cf211b6..997560d 100644
--- a/tests/tests/graphics/src/android/graphics/cts/BitmapTest.java
+++ b/tests/tests/graphics/src/android/graphics/cts/BitmapTest.java
@@ -43,6 +43,11 @@
     private Bitmap mBitmap;
     private BitmapFactory.Options mOptions;
 
+    // small alpha values cause color values to be pre-multiplied down, losing accuracy
+    private final int PREMUL_COLOR = Color.argb(2, 255, 254, 253);
+    private final int PREMUL_ROUNDED_COLOR = Color.argb(2, 255, 255, 255);
+    private final int PREMUL_STORED_COLOR = Color.argb(2, 2, 2, 2);
+
     @Override
     protected void setUp() throws Exception {
         super.setUp();
@@ -376,6 +381,22 @@
         assertEquals(0x00, Color.alpha(color));
     }
 
+    public void testGetAllocationByteCount() {
+        mBitmap = Bitmap.createBitmap(100, 200, Bitmap.Config.ALPHA_8);
+        int alloc = mBitmap.getAllocationByteCount();
+        assertEquals(mBitmap.getByteCount(), alloc);
+
+        // reconfigure same size
+        mBitmap.reconfigure(50, 100, Bitmap.Config.ARGB_8888);
+        assertEquals(mBitmap.getByteCount(), alloc);
+        assertEquals(mBitmap.getAllocationByteCount(), alloc);
+
+        // reconfigure different size
+        mBitmap.reconfigure(10, 10, Bitmap.Config.ALPHA_8);
+        assertEquals(mBitmap.getByteCount(), 100);
+        assertEquals(mBitmap.getAllocationByteCount(), alloc);
+    }
+
     public void testGetConfig(){
         Bitmap bm0 = Bitmap.createBitmap(100, 200, Bitmap.Config.ALPHA_8);
         Bitmap bm1 = Bitmap.createBitmap(100, 200, Bitmap.Config.ARGB_8888);
@@ -385,7 +406,8 @@
         assertEquals(Bitmap.Config.ALPHA_8, bm0.getConfig());
         assertEquals(Bitmap.Config.ARGB_8888, bm1.getConfig());
         assertEquals(Bitmap.Config.RGB_565, bm2.getConfig());
-        assertEquals(Bitmap.Config.ARGB_4444, bm3.getConfig());
+        // Attempting to create a 4444 bitmap actually creates an 8888 bitmap.
+        assertEquals(Bitmap.Config.ARGB_8888, bm3.getConfig());
     }
 
     public void testGetHeight(){
@@ -438,7 +460,8 @@
         assertEquals(100, bm0.getRowBytes());
         assertEquals(400, bm1.getRowBytes());
         assertEquals(200, bm2.getRowBytes());
-        assertEquals(200, bm3.getRowBytes());
+        // Attempting to create a 4444 bitmap actually creates an 8888 bitmap.
+        assertEquals(400, bm3.getRowBytes());
     }
 
     public void testGetWidth(){
@@ -465,6 +488,81 @@
         assertTrue(mBitmap.isRecycled());
     }
 
+    public void testReconfigure() {
+        mBitmap = Bitmap.createBitmap(100, 200, Bitmap.Config.RGB_565);
+        int alloc = mBitmap.getAllocationByteCount();
+
+        // test shrinking
+        mBitmap.reconfigure(50, 100, Bitmap.Config.ALPHA_8);
+        assertEquals(mBitmap.getAllocationByteCount(), alloc);
+        assertEquals(mBitmap.getByteCount() * 8, alloc);
+
+        // test expanding
+        try {
+            mBitmap.reconfigure(101, 201, Bitmap.Config.ARGB_8888);
+            fail("shouldn't come to here");
+        } catch (IllegalArgumentException e) {
+        }
+
+        // test mutable
+        mBitmap = BitmapFactory.decodeResource(mRes, R.drawable.start, mOptions);
+        try {
+            mBitmap.reconfigure(1, 1, Bitmap.Config.ALPHA_8);
+            fail("shouldn't come to here");
+        } catch (IllegalStateException e) {
+        }
+    }
+
+    public void testSetConfig() {
+        mBitmap = Bitmap.createBitmap(100, 200, Bitmap.Config.RGB_565);
+        int alloc = mBitmap.getAllocationByteCount();
+
+        // test shrinking
+        mBitmap.setConfig(Bitmap.Config.ALPHA_8);
+        assertEquals(mBitmap.getAllocationByteCount(), alloc);
+        assertEquals(mBitmap.getByteCount() * 2, alloc);
+
+        // test expanding
+        try {
+            mBitmap.setConfig(Bitmap.Config.ARGB_8888);
+            fail("shouldn't come to here");
+        } catch (IllegalArgumentException e) {
+        }
+
+        // test mutable
+        mBitmap = BitmapFactory.decodeResource(mRes, R.drawable.start, mOptions);
+        try {
+            mBitmap.setConfig(Bitmap.Config.ALPHA_8);
+            fail("shouldn't come to here");
+        } catch (IllegalStateException e) {
+        }
+    }
+
+    public void testSetHeight() {
+        mBitmap = Bitmap.createBitmap(100, 200, Bitmap.Config.ARGB_8888);
+        int alloc = mBitmap.getAllocationByteCount();
+
+        // test shrinking
+        mBitmap.setHeight(100);
+        assertEquals(mBitmap.getAllocationByteCount(), alloc);
+        assertEquals(mBitmap.getByteCount() * 2, alloc);
+
+        // test expanding
+        try {
+            mBitmap.setHeight(201);
+            fail("shouldn't come to here");
+        } catch (IllegalArgumentException e) {
+        }
+
+        // test mutable
+        mBitmap = BitmapFactory.decodeResource(mRes, R.drawable.start, mOptions);
+        try {
+            mBitmap.setHeight(1);
+            fail("shouldn't come to here");
+        } catch (IllegalStateException e) {
+        }
+    }
+
     public void testSetPixel(){
         int color = 0xff << 24;
 
@@ -604,6 +702,119 @@
         }
     }
 
+    private void checkPremultipliedBitmapConfig(Config config, boolean expectedPremul) {
+        Bitmap bitmap = Bitmap.createBitmap(1, 1, config);
+        bitmap.setPremultiplied(true);
+        bitmap.setPixel(0, 0, Color.TRANSPARENT);
+        assertTrue(bitmap.isPremultiplied() == expectedPremul);
+
+        bitmap.setHasAlpha(false);
+        assertFalse(bitmap.isPremultiplied());
+    }
+
+    public void testSetPremultipliedSimple() {
+        checkPremultipliedBitmapConfig(Bitmap.Config.ALPHA_8, true);
+        checkPremultipliedBitmapConfig(Bitmap.Config.RGB_565, false);
+        checkPremultipliedBitmapConfig(Bitmap.Config.ARGB_4444, true);
+        checkPremultipliedBitmapConfig(Bitmap.Config.ARGB_8888, true);
+    }
+
+    public void testSetPremultipliedData() {
+        // with premul, will store 2,2,2,2, so it doesn't get value correct
+        Bitmap bitmap = Bitmap.createBitmap(1, 1, Bitmap.Config.ARGB_8888);
+        bitmap.setPixel(0, 0, PREMUL_COLOR);
+        assertEquals(bitmap.getPixel(0, 0), PREMUL_ROUNDED_COLOR);
+
+        // read premultiplied value directly
+        bitmap.setPremultiplied(false);
+        assertEquals(bitmap.getPixel(0, 0), PREMUL_STORED_COLOR);
+
+        // value can now be stored/read correctly
+        bitmap.setPixel(0, 0, PREMUL_COLOR);
+        assertEquals(bitmap.getPixel(0, 0), PREMUL_COLOR);
+
+        // verify with array methods
+        int testArray[] = new int[] { PREMUL_COLOR };
+        bitmap.setPixels(testArray, 0, 1, 0, 0, 1, 1);
+        bitmap.getPixels(testArray, 0, 1, 0, 0, 1, 1);
+        assertEquals(bitmap.getPixel(0, 0), PREMUL_COLOR);
+    }
+
+    public void testPremultipliedCanvas() {
+        Bitmap bitmap = Bitmap.createBitmap(1, 1, Bitmap.Config.ARGB_8888);
+        bitmap.setHasAlpha(true);
+        bitmap.setPremultiplied(false);
+        assertFalse(bitmap.isPremultiplied());
+
+        Canvas c = new Canvas();
+        try {
+            c.drawBitmap(bitmap, 0, 0, null);
+            fail("canvas should fail with exception");
+        } catch (RuntimeException e) {
+        }
+    }
+
+    private int getBitmapRawInt(Bitmap bitmap) {
+        IntBuffer buffer = IntBuffer.allocate(1);
+        bitmap.copyPixelsToBuffer(buffer);
+        return buffer.get(0);
+    }
+
+    private void bitmapStoreRawInt(Bitmap bitmap, int value) {
+        IntBuffer buffer = IntBuffer.allocate(1);
+        buffer.put(0, value);
+        bitmap.copyPixelsFromBuffer(buffer);
+    }
+
+    public void testSetPremultipliedToBuffer() {
+        Bitmap bitmap = Bitmap.createBitmap(1, 1, Bitmap.Config.ARGB_8888);
+        bitmap.setPixel(0, 0, PREMUL_COLOR);
+        int storedPremul = getBitmapRawInt(bitmap);
+
+        bitmap = Bitmap.createBitmap(1, 1, Bitmap.Config.ARGB_8888);
+        bitmap.setPremultiplied(false);
+        bitmap.setPixel(0, 0, PREMUL_STORED_COLOR);
+
+        assertEquals(getBitmapRawInt(bitmap), storedPremul);
+    }
+
+    public void testSetPremultipliedFromBuffer() {
+        Bitmap bitmap = Bitmap.createBitmap(1, 1, Bitmap.Config.ARGB_8888);
+        bitmap.setPremultiplied(false);
+        bitmap.setPixel(0, 0, PREMUL_COLOR);
+        int rawTestColor = getBitmapRawInt(bitmap);
+
+        bitmap = Bitmap.createBitmap(1, 1, Bitmap.Config.ARGB_8888);
+        bitmap.setPremultiplied(false);
+        bitmapStoreRawInt(bitmap, rawTestColor);
+        assertEquals(bitmap.getPixel(0, 0), PREMUL_COLOR);
+    }
+
+    public void testSetWidth() {
+        mBitmap = Bitmap.createBitmap(100, 200, Bitmap.Config.ARGB_8888);
+        int alloc = mBitmap.getAllocationByteCount();
+
+        // test shrinking
+        mBitmap.setWidth(50);
+        assertEquals(mBitmap.getAllocationByteCount(), alloc);
+        assertEquals(mBitmap.getByteCount() * 2, alloc);
+
+        // test expanding
+        try {
+            mBitmap.setWidth(101);
+            fail("shouldn't come to here");
+        } catch (IllegalArgumentException e) {
+        }
+
+        // test mutable
+        mBitmap = BitmapFactory.decodeResource(mRes, R.drawable.start, mOptions);
+        try {
+            mBitmap.setWidth(1);
+            fail("shouldn't come to here");
+        } catch (IllegalStateException e) {
+        }
+    }
+
     public void testWriteToParcel(){
         mBitmap.recycle();
 
diff --git a/tests/tests/graphics/src/android/graphics/cts/CameraTest.java b/tests/tests/graphics/src/android/graphics/cts/CameraTest.java
old mode 100755
new mode 100644
diff --git a/tests/tests/graphics/src/android/graphics/cts/PaintFlagsDrawFilterTest.java b/tests/tests/graphics/src/android/graphics/cts/PaintFlagsDrawFilterTest.java
old mode 100755
new mode 100644
diff --git a/tests/tests/graphics/src/android/graphics/cts/PaintTest.java b/tests/tests/graphics/src/android/graphics/cts/PaintTest.java
index 32d8e4d..f4904fc 100644
--- a/tests/tests/graphics/src/android/graphics/cts/PaintTest.java
+++ b/tests/tests/graphics/src/android/graphics/cts/PaintTest.java
@@ -166,7 +166,7 @@
         assertEquals(m, p2.getMaskFilter());
         assertEquals(e, p2.getPathEffect());
         assertEquals(r, p2.getRasterizer());
-        assertEquals(s, p2.getShader());
+        assertNotSame(s, p2.getShader());
         assertEquals(t, p2.getTypeface());
         assertEquals(x, p2.getXfermode());
 
@@ -175,7 +175,7 @@
         assertEquals(m, p2.getMaskFilter());
         assertEquals(e, p2.getPathEffect());
         assertEquals(r, p2.getRasterizer());
-        assertEquals(s, p2.getShader());
+        assertNotSame(s, p2.getShader());
         assertEquals(t, p2.getTypeface());
         assertEquals(x, p2.getXfermode());
 
@@ -780,7 +780,7 @@
         assertEquals(Paint.ANTI_ALIAS_FLAG, p.getFlags());
 
         p.reset();
-        assertEquals(Paint.DEV_KERN_TEXT_FLAG, p.getFlags());
+        assertEquals(Paint.DEV_KERN_TEXT_FLAG | Paint.EMBEDDED_BITMAP_TEXT_FLAG, p.getFlags());
         assertEquals(null, p.getColorFilter());
         assertEquals(null, p.getMaskFilter());
         assertEquals(null, p.getPathEffect());
diff --git a/tests/tests/graphics/src/android/graphics/cts/PixelFormatTest.java b/tests/tests/graphics/src/android/graphics/cts/PixelFormatTest.java
index dcbb084..4809755 100644
--- a/tests/tests/graphics/src/android/graphics/cts/PixelFormatTest.java
+++ b/tests/tests/graphics/src/android/graphics/cts/PixelFormatTest.java
@@ -46,7 +46,7 @@
 
         PixelFormat.getPixelFormatInfo(PixelFormat.RGBX_8888, mPixelFormat);
         assertEquals(4, mPixelFormat.bytesPerPixel);
-        assertEquals(24, mPixelFormat.bitsPerPixel);
+        assertEquals(32, mPixelFormat.bitsPerPixel);
 
         PixelFormat.getPixelFormatInfo(PixelFormat.RGB_888, mPixelFormat);
         assertEquals(3, mPixelFormat.bytesPerPixel);
diff --git a/tests/tests/graphics/src/android/graphics/cts/TypefaceTest.java b/tests/tests/graphics/src/android/graphics/cts/TypefaceTest.java
old mode 100755
new mode 100644
diff --git a/tests/tests/graphics/src/android/graphics/cts/YuvImageTest.java b/tests/tests/graphics/src/android/graphics/cts/YuvImageTest.java
old mode 100755
new mode 100644
diff --git a/tests/tests/graphics/src/android/graphics/drawable/cts/BitmapDrawableTest.java b/tests/tests/graphics/src/android/graphics/drawable/cts/BitmapDrawableTest.java
index 4d1c4cf..c84510d 100644
--- a/tests/tests/graphics/src/android/graphics/drawable/cts/BitmapDrawableTest.java
+++ b/tests/tests/graphics/src/android/graphics/drawable/cts/BitmapDrawableTest.java
@@ -57,7 +57,7 @@
     public void testConstructor() {
         // TODO: should default paint flags be left as an untested implementation detail?
         final int defaultPaintFlags = Paint.FILTER_BITMAP_FLAG | Paint.DITHER_FLAG |
-            Paint.DEV_KERN_TEXT_FLAG;
+            Paint.DEV_KERN_TEXT_FLAG | Paint.EMBEDDED_BITMAP_TEXT_FLAG;
         BitmapDrawable bitmapDrawable = new BitmapDrawable();
         assertNotNull(bitmapDrawable.getPaint());
         assertEquals(defaultPaintFlags,
diff --git a/tests/tests/graphics/src/android/graphics/drawable/cts/NinePatchDrawableTest.java b/tests/tests/graphics/src/android/graphics/drawable/cts/NinePatchDrawableTest.java
index bff80ec..b23c7fa 100644
--- a/tests/tests/graphics/src/android/graphics/drawable/cts/NinePatchDrawableTest.java
+++ b/tests/tests/graphics/src/android/graphics/drawable/cts/NinePatchDrawableTest.java
@@ -181,8 +181,6 @@
     }
 
     public void testSetDither() {
-        assertTrue(mNinePatchDrawable.getPaint().isDither());
-
         mNinePatchDrawable.setDither(false);
         assertFalse(mNinePatchDrawable.getPaint().isDither());
 
diff --git a/tests/tests/graphics/src/android/graphics/drawable/cts/ShapeDrawableTest.java b/tests/tests/graphics/src/android/graphics/drawable/cts/ShapeDrawableTest.java
index 0ce1728..d92b8cb 100644
--- a/tests/tests/graphics/src/android/graphics/drawable/cts/ShapeDrawableTest.java
+++ b/tests/tests/graphics/src/android/graphics/drawable/cts/ShapeDrawableTest.java
@@ -177,8 +177,8 @@
     public void testGetPaint() {
         ShapeDrawable shapeDrawable = new ShapeDrawable();
         assertNotNull(shapeDrawable.getPaint());
-        assertEquals(Paint.ANTI_ALIAS_FLAG | Paint.DEV_KERN_TEXT_FLAG,
-                shapeDrawable.getPaint().getFlags());
+        assertEquals(Paint.ANTI_ALIAS_FLAG | Paint.DEV_KERN_TEXT_FLAG
+                | Paint.EMBEDDED_BITMAP_TEXT_FLAG, shapeDrawable.getPaint().getFlags());
     }
 
     public void testAccessShaderFactory() {
diff --git a/tests/tests/graphics/src/android/opengl/cts/EglContextTest.java b/tests/tests/graphics/src/android/opengl/cts/EglContextTest.java
new file mode 100644
index 0000000..8f5ced7
--- /dev/null
+++ b/tests/tests/graphics/src/android/opengl/cts/EglContextTest.java
@@ -0,0 +1,162 @@
+/*
+ * Copyright (C) 2013 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 android.opengl.cts;
+
+import android.app.Activity;
+import android.opengl.EGL14;
+import android.opengl.EGLConfig;
+import android.opengl.EGLContext;
+import android.opengl.EGLDisplay;
+import android.opengl.GLES20;
+import android.test.ActivityInstrumentationTestCase2;
+
+/**
+ * Tests using EGL contexts.
+ */
+public class EglContextTest extends ActivityInstrumentationTestCase2<Activity> {
+
+    public EglContextTest() {
+        super(Activity.class);
+    }
+
+    /**
+     * Tests creating then releasing an EGL context.
+     */
+    public void testCreateAndReleaseContext() {
+        EGLDisplay eglDisplay = null;
+        EGLContext eglContext = null;
+        try {
+            eglDisplay = createEglDisplay();
+            eglContext = createEglContext(eglDisplay);
+            destroyEglContext(eglDisplay, eglContext);
+            eglDisplay = null;
+            eglContext = null;
+        } finally {
+            if (eglDisplay != null) {
+                if (eglContext != null) {
+                    EGL14.eglDestroyContext(eglDisplay, eglContext);
+                }
+
+                EGL14.eglTerminate(eglDisplay);
+            }
+        }
+    }
+
+    /**
+     * Returns an initialized default display.
+     */
+    private static EGLDisplay createEglDisplay() {
+        EGLDisplay eglDisplay = EGL14.eglGetDisplay(EGL14.EGL_DEFAULT_DISPLAY);
+        if (eglDisplay == EGL14.EGL_NO_DISPLAY) {
+            throw new IllegalStateException("no EGL display");
+        }
+
+        int[] major = new int[1];
+        int[] minor = new int[1];
+        if (!EGL14.eglInitialize(eglDisplay, major, 0, minor, 0)) {
+            throw new IllegalStateException("error in eglInitialize");
+        }
+        checkGlError();
+
+        return eglDisplay;
+    }
+
+    /**
+     * Returns a new GL context for the specified {@code eglDisplay}.
+     */
+    private static EGLContext createEglContext(EGLDisplay eglDisplay) {
+        int[] contextAttributes = { EGL14.EGL_CONTEXT_CLIENT_VERSION, 2, EGL14.EGL_NONE };
+        EGLContext eglContext = EGL14.eglCreateContext(eglDisplay,
+                getEglConfig(eglDisplay), EGL14.EGL_NO_CONTEXT, contextAttributes, 0);
+        checkGlError();
+
+        return eglContext;
+    }
+
+    /**
+     * Destroys the GL context identifier by {@code eglDisplay} and {@code eglContext}.
+     */
+    private static void destroyEglContext(EGLDisplay eglDisplay, EGLContext eglContext) {
+        EGL14.eglMakeCurrent(eglDisplay,
+                EGL14.EGL_NO_SURFACE,
+                EGL14.EGL_NO_SURFACE,
+                EGL14.EGL_NO_CONTEXT);
+        int error = EGL14.eglGetError();
+        if (error != EGL14.EGL_SUCCESS) {
+            throw new RuntimeException("error releasing context: " + error);
+        }
+
+        EGL14.eglDestroyContext(eglDisplay, eglContext);
+        error = EGL14.eglGetError();
+        if (error != EGL14.EGL_SUCCESS) {
+            throw new RuntimeException("error destroying context: " + error);
+        }
+
+        EGL14.eglReleaseThread();
+        error = EGL14.eglGetError();
+        if (error != EGL14.EGL_SUCCESS) {
+            throw new RuntimeException("error releasing thread: " + error);
+        }
+
+        EGL14.eglTerminate(eglDisplay);
+        error = EGL14.eglGetError();
+        if (error != EGL14.EGL_SUCCESS) {
+            throw new RuntimeException("error terminating display: " + error);
+        }
+    }
+
+    private static EGLConfig getEglConfig(EGLDisplay eglDisplay) {
+        // Get an EGLConfig.
+        final int EGL_OPENGL_ES2_BIT = 4;
+        final int RED_SIZE = 8;
+        final int GREEN_SIZE = 8;
+        final int BLUE_SIZE = 8;
+        final int ALPHA_SIZE = 8;
+        final int DEPTH_SIZE = 0;
+        final int STENCIL_SIZE = 0;
+        final int[] DEFAULT_CONFIGURATION = new int[] {
+                EGL14.EGL_RENDERABLE_TYPE, EGL_OPENGL_ES2_BIT,
+                EGL14.EGL_RED_SIZE, RED_SIZE,
+                EGL14.EGL_GREEN_SIZE, GREEN_SIZE,
+                EGL14.EGL_BLUE_SIZE, BLUE_SIZE,
+                EGL14.EGL_ALPHA_SIZE, ALPHA_SIZE,
+                EGL14.EGL_DEPTH_SIZE, DEPTH_SIZE,
+                EGL14.EGL_STENCIL_SIZE, STENCIL_SIZE,
+                EGL14.EGL_NONE};
+
+        int[] configsCount = new int[1];
+        EGLConfig[] eglConfigs = new EGLConfig[1];
+        if (!EGL14.eglChooseConfig(
+                eglDisplay, DEFAULT_CONFIGURATION, 0, eglConfigs, 0, 1, configsCount, 0)) {
+            throw new RuntimeException("eglChooseConfig failed");
+        }
+        return eglConfigs[0];
+    }
+
+    /**
+     * Checks for a GL error using {@link GLES20#glGetError()}.
+     *
+     * @throws RuntimeException if there is a GL error
+     */
+    private static void checkGlError() {
+        int errorCode;
+        if ((errorCode = GLES20.glGetError()) != GLES20.GL_NO_ERROR) {
+            throw new RuntimeException("gl error: " + Integer.toHexString(errorCode));
+        }
+    }
+
+}
diff --git a/tests/tests/graphics/src/android/opengl/cts/OpenGlEsVersionTest.java b/tests/tests/graphics/src/android/opengl/cts/OpenGlEsVersionTest.java
index 30a1f67..85159a8 100644
--- a/tests/tests/graphics/src/android/opengl/cts/OpenGlEsVersionTest.java
+++ b/tests/tests/graphics/src/android/opengl/cts/OpenGlEsVersionTest.java
@@ -68,9 +68,12 @@
                 reportedVersion, getVersionFromPackageManager(mActivity));
 
         assertGlVersionString(1);
-        if (detectedVersion >= 2) {
+        if (detectedVersion == 2) {
             restartActivityWithClientVersion(2);
             assertGlVersionString(2);
+        } else if (detectedVersion == 3) {
+            restartActivityWithClientVersion(3);
+            assertGlVersionString(3);
         }
     }
 
@@ -190,9 +193,6 @@
         String versionString = "" + majorVersion;
         String message = "OpenGL version string '" + mActivity.getVersionString()
                 + "' is not " + majorVersion + ".0+.";
-        if (majorVersion == 2) {
-             versionString = "(2|3)";
-        }
         assertTrue(message, Pattern.matches(".*OpenGL.*ES.*" + versionString + "\\.\\d.*",
                 mActivity.getVersionString()));
     }
diff --git a/tests/tests/hardware/Android.mk b/tests/tests/hardware/Android.mk
index 76088a0..e0ad6e5 100644
--- a/tests/tests/hardware/Android.mk
+++ b/tests/tests/hardware/Android.mk
@@ -14,13 +14,27 @@
 
 LOCAL_PATH:= $(call my-dir)
 
+# Reusable Sensor test classes and helpers
+
+include $(CLEAR_VARS)
+
+LOCAL_MODULE := cts-sensors-tests
+LOCAL_MODULE_TAGS := tests
+
+LOCAL_SRC_FILES := $(call all-java-files-under, src/android/hardware/cts/helpers)
+
+include $(BUILD_STATIC_JAVA_LIBRARY)
+
+
+# CtsHardwareTestCases package
+
 include $(CLEAR_VARS)
 
 LOCAL_MODULE_TAGS := tests
 
 LOCAL_JAVA_LIBRARIES := android.test.runner
 
-LOCAL_STATIC_JAVA_LIBRARIES := ctstestrunner
+LOCAL_STATIC_JAVA_LIBRARIES := ctstestrunner mockito-target android-ex-camera2
 
 LOCAL_SRC_FILES := $(call all-java-files-under, src)
 
diff --git a/tests/tests/hardware/src/android/hardware/camera2/cts/CameraCaptureResultTest.java b/tests/tests/hardware/src/android/hardware/camera2/cts/CameraCaptureResultTest.java
new file mode 100644
index 0000000..6a708e3
--- /dev/null
+++ b/tests/tests/hardware/src/android/hardware/camera2/cts/CameraCaptureResultTest.java
@@ -0,0 +1,336 @@
+/*
+ * Copyright 2013 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 android.hardware.camera2.cts;
+
+import android.content.Context;
+import android.graphics.ImageFormat;
+import android.hardware.camera2.CameraCharacteristics;
+import android.hardware.camera2.CameraDevice;
+import android.hardware.camera2.CameraManager;
+import android.hardware.camera2.CameraMetadata;
+import android.hardware.camera2.CaptureFailure;
+import android.hardware.camera2.CaptureRequest;
+import android.hardware.camera2.CaptureResult;
+import android.hardware.camera2.Size;
+import static android.hardware.camera2.cts.CameraTestUtils.*;
+import android.media.ImageReader;
+import android.os.Handler;
+import android.os.HandlerThread;
+import android.test.AndroidTestCase;
+import android.util.Log;
+import android.view.Surface;
+
+import com.android.ex.camera2.blocking.BlockingStateListener;
+import static com.android.ex.camera2.blocking.BlockingStateListener.*;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.concurrent.LinkedBlockingQueue;
+import java.util.concurrent.TimeUnit;
+
+public class CameraCaptureResultTest extends AndroidTestCase {
+    private static final String TAG = "CameraCaptureResultTest";
+    private static final boolean VERBOSE = Log.isLoggable(TAG, Log.VERBOSE);
+
+    private CameraManager mCameraManager;
+    private HandlerThread mHandlerThread;
+    private Handler mHandler;
+    private ImageReader mImageReader;
+    private Surface mSurface;
+    private BlockingStateListener mCameraListener;
+
+    private static final int MAX_NUM_IMAGES = 5;
+    private static final int NUM_FRAMES_VERIFIED = 300;
+    private static final long WAIT_FOR_RESULT_TIMEOUT_MS = 3000;
+
+    // List that includes all public keys from CaptureResult
+    List<CameraMetadata.Key<?>> mAllKeys;
+
+    // List tracking the failed test keys.
+    List<CameraMetadata.Key<?>> mFailedKeys = new ArrayList<CameraMetadata.Key<?>>();
+
+    @Override
+    public void setContext(Context context) {
+        mAllKeys = getAllCaptureResultKeys();
+        super.setContext(context);
+    }
+
+    @Override
+    protected void setUp() throws Exception {
+        super.setUp();
+        mCameraManager = (CameraManager) mContext.getSystemService(Context.CAMERA_SERVICE);
+        assertNotNull("Can't connect to camera manager", mCameraManager);
+        mHandlerThread = new HandlerThread(TAG);
+        mHandlerThread.start();
+        mHandler = new Handler(mHandlerThread.getLooper());
+        mCameraListener = new BlockingStateListener();
+        mFailedKeys.clear();
+    }
+
+    @Override
+    protected void tearDown() throws Exception {
+        mHandlerThread.quitSafely();
+        super.tearDown();
+    }
+
+    public void testCameraCaptureResultAllKeys() throws Exception {
+        /**
+         * Hardcode a key waiver list for the keys we want to skip the sanity check.
+         * FIXME: We need get ride of this list, see bug 11116270.
+         */
+        List<CameraMetadata.Key<?>> waiverkeys = new ArrayList<CameraMetadata.Key<?>>();
+        waiverkeys.add(CaptureResult.EDGE_MODE);
+        waiverkeys.add(CaptureResult.JPEG_GPS_COORDINATES);
+        waiverkeys.add(CaptureResult.JPEG_GPS_PROCESSING_METHOD);
+        waiverkeys.add(CaptureResult.JPEG_GPS_TIMESTAMP);
+        waiverkeys.add(CaptureResult.JPEG_ORIENTATION);
+        waiverkeys.add(CaptureResult.JPEG_QUALITY);
+        waiverkeys.add(CaptureResult.JPEG_THUMBNAIL_QUALITY);
+        waiverkeys.add(CaptureResult.JPEG_THUMBNAIL_SIZE);
+        waiverkeys.add(CaptureResult.SENSOR_TEMPERATURE);
+        waiverkeys.add(CaptureResult.TONEMAP_CURVE_BLUE);
+        waiverkeys.add(CaptureResult.TONEMAP_CURVE_GREEN);
+        waiverkeys.add(CaptureResult.TONEMAP_CURVE_RED);
+        waiverkeys.add(CaptureResult.TONEMAP_MODE);
+        waiverkeys.add(CaptureResult.STATISTICS_PREDICTED_COLOR_GAINS);
+        waiverkeys.add(CaptureResult.STATISTICS_PREDICTED_COLOR_TRANSFORM);
+        waiverkeys.add(CaptureResult.STATISTICS_SCENE_FLICKER);
+
+        String[] ids = mCameraManager.getCameraIdList();
+        for (int i = 0; i < ids.length; i++) {
+            CameraCharacteristics props = mCameraManager.getCameraCharacteristics(ids[i]);
+            assertNotNull("CameraCharacteristics shouldn't be null", props);
+            Integer hwLevel = props.get(CameraCharacteristics.INFO_SUPPORTED_HARDWARE_LEVEL);
+            if (hwLevel != CameraCharacteristics.INFO_SUPPORTED_HARDWARE_LEVEL_FULL) {
+                continue;
+            }
+            // TODO: check for LIMITED keys
+
+            CameraDevice camera = null;
+            try {
+                Size[] sizes = CameraTestUtils.getSupportedSizeForFormat(
+                        ImageFormat.YUV_420_888, ids[i], mCameraManager);
+                CameraTestUtils.assertArrayNotEmpty(sizes, "Available sizes shouldn't be empty");
+                createDefaultSurface(sizes[0]);
+
+                if (VERBOSE) {
+                    Log.v(TAG, "Testing camera " + ids[i] + "for size " + sizes[0].toString());
+                }
+
+                camera = CameraTestUtils.openCamera(
+                        mCameraManager, ids[i], mCameraListener, mHandler);
+                assertNotNull(
+                        String.format("Failed to open camera device %s", ids[i]), camera);
+                mCameraListener.waitForState(STATE_UNCONFIGURED, CAMERA_OPEN_TIMEOUT_MS);
+
+                List<Surface> outputSurfaces = new ArrayList<Surface>(1);
+                outputSurfaces.add(mSurface);
+                camera.configureOutputs(outputSurfaces);
+                mCameraListener.waitForState(STATE_BUSY, CAMERA_BUSY_TIMEOUT_MS);
+                mCameraListener.waitForState(STATE_IDLE, CAMERA_IDLE_TIMEOUT_MS);
+
+                CaptureRequest.Builder requestBuilder =
+                        camera.createCaptureRequest(CameraDevice.TEMPLATE_PREVIEW);
+                assertNotNull("Failed to create capture request", requestBuilder);
+                requestBuilder.addTarget(mSurface);
+
+                // Enable face detection if supported
+                byte[] faceModes = props.get(
+                        CameraCharacteristics.STATISTICS_INFO_AVAILABLE_FACE_DETECT_MODES);
+                assertNotNull("Available face detection modes shouldn't be null", faceModes);
+                for (int m = 0; m < faceModes.length; m++) {
+                    if (faceModes[m] == CameraMetadata.STATISTICS_FACE_DETECT_MODE_FULL) {
+                        if (VERBOSE) {
+                            Log.v(TAG, "testCameraCaptureResultAllKeys - " +
+                                    "setting facedetection mode to full");
+                        }
+                        requestBuilder.set(CaptureRequest.STATISTICS_FACE_DETECT_MODE,
+                                (int)faceModes[m]);
+                    }
+                }
+
+                // Enable lensShading mode, it should be supported by full mode device.
+                requestBuilder.set(CaptureRequest.STATISTICS_LENS_SHADING_MAP_MODE,
+                        CameraMetadata.STATISTICS_LENS_SHADING_MAP_MODE_ON);
+
+                SimpleCaptureListener captureListener = new SimpleCaptureListener();
+                camera.setRepeatingRequest(requestBuilder.build(), captureListener, mHandler);
+
+                for (int m = 0; m < NUM_FRAMES_VERIFIED; m++) {
+                    if(VERBOSE) {
+                        Log.v(TAG, "Testing frame " + m);
+                    }
+                    validateCaptureResult(
+                            captureListener.getCaptureResult(WAIT_FOR_RESULT_TIMEOUT_MS),
+                            waiverkeys);
+                }
+
+                // Stop repeat, wait for captures to complete, and disconnect from surfaces
+                camera.configureOutputs(/*outputs*/ null);
+                mCameraListener.waitForState(STATE_BUSY, CAMERA_BUSY_TIMEOUT_MS);
+                mCameraListener.waitForState(STATE_UNCONFIGURED, CAMERA_IDLE_TIMEOUT_MS);
+                // Camera has disconnected, clear out the reader
+                mSurface.release();
+                mImageReader.close();
+            } finally {
+                if (camera != null) {
+                    camera.close();
+                }
+            }
+
+        }
+    }
+
+    private void validateCaptureResult(CaptureResult result,
+            List<CameraMetadata.Key<?>> skippedKeys) throws Exception {
+        for (CameraMetadata.Key<?> key : mAllKeys) {
+            if (!skippedKeys.contains(key) && result.get(key) == null) {
+                mFailedKeys.add(key);
+            }
+        }
+
+        StringBuffer failedKeyNames = new StringBuffer("Below Keys have null values:\n");
+        for (CameraMetadata.Key<?> key : mFailedKeys) {
+            failedKeyNames.append(key.getName() + "\n");
+        }
+
+        assertTrue("Some keys have null values, " + failedKeyNames.toString(),
+                mFailedKeys.isEmpty());
+    }
+
+    private static class SimpleCaptureListener extends CameraDevice.CaptureListener {
+        LinkedBlockingQueue<CaptureResult> mQueue = new LinkedBlockingQueue<CaptureResult>();
+
+        @Override
+        public void onCaptureStarted(CameraDevice camera, CaptureRequest request, long timestamp)
+        {
+        }
+
+        @Override
+        public void onCaptureCompleted(CameraDevice camera, CaptureRequest request,
+                CaptureResult result) {
+            try {
+                mQueue.put(result);
+            } catch (InterruptedException e) {
+                throw new UnsupportedOperationException(
+                        "Can't handle InterruptedException in onCaptureCompleted");
+            }
+        }
+
+        @Override
+        public void onCaptureFailed(CameraDevice camera, CaptureRequest request,
+                CaptureFailure failure) {
+        }
+
+        @Override
+        public void onCaptureSequenceCompleted(CameraDevice camera, int sequenceId,
+                int frameNumber) {
+        }
+
+        public CaptureResult getCaptureResult(long timeout) throws InterruptedException {
+            CaptureResult result = mQueue.poll(timeout, TimeUnit.MILLISECONDS);
+            assertNotNull("Wait for a capture result timed out in " + timeout + "ms", result);
+            return result;
+        }
+    }
+
+    private void createDefaultSurface(Size sz) {
+        mImageReader =
+                ImageReader.newInstance(sz.getWidth(),
+                        sz.getHeight(),
+                        ImageFormat.YUV_420_888,
+                        MAX_NUM_IMAGES);
+        mImageReader.setOnImageAvailableListener(new ImageDropperListener(), mHandler);
+        mSurface = mImageReader.getSurface();
+    }
+
+    /**
+     * TODO: Use CameraCharacteristics.getAvailableCaptureResultKeys() once we can filter out
+     * @hide keys.
+     *
+     */
+
+    /*@O~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~
+     * The key entries below this point are generated from metadata
+     * definitions in /system/media/camera/docs. Do not modify by hand or
+     * modify the comment blocks at the start or end.
+     *~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~*/
+
+    private static List<CameraMetadata.Key<?>> getAllCaptureResultKeys() {
+        ArrayList<CameraMetadata.Key<?>> resultKeys = new ArrayList<CameraMetadata.Key<?>>();
+        resultKeys.add(CaptureResult.COLOR_CORRECTION_TRANSFORM);
+        resultKeys.add(CaptureResult.COLOR_CORRECTION_GAINS);
+        resultKeys.add(CaptureResult.CONTROL_AE_REGIONS);
+        resultKeys.add(CaptureResult.CONTROL_AF_MODE);
+        resultKeys.add(CaptureResult.CONTROL_AF_REGIONS);
+        resultKeys.add(CaptureResult.CONTROL_AWB_MODE);
+        resultKeys.add(CaptureResult.CONTROL_AWB_REGIONS);
+        resultKeys.add(CaptureResult.CONTROL_MODE);
+        resultKeys.add(CaptureResult.CONTROL_AE_STATE);
+        resultKeys.add(CaptureResult.CONTROL_AF_STATE);
+        resultKeys.add(CaptureResult.CONTROL_AWB_STATE);
+        resultKeys.add(CaptureResult.EDGE_MODE);
+        resultKeys.add(CaptureResult.FLASH_MODE);
+        resultKeys.add(CaptureResult.FLASH_STATE);
+        resultKeys.add(CaptureResult.JPEG_GPS_COORDINATES);
+        resultKeys.add(CaptureResult.JPEG_GPS_PROCESSING_METHOD);
+        resultKeys.add(CaptureResult.JPEG_GPS_TIMESTAMP);
+        resultKeys.add(CaptureResult.JPEG_ORIENTATION);
+        resultKeys.add(CaptureResult.JPEG_QUALITY);
+        resultKeys.add(CaptureResult.JPEG_THUMBNAIL_QUALITY);
+        resultKeys.add(CaptureResult.JPEG_THUMBNAIL_SIZE);
+        resultKeys.add(CaptureResult.LENS_APERTURE);
+        resultKeys.add(CaptureResult.LENS_FILTER_DENSITY);
+        resultKeys.add(CaptureResult.LENS_FOCAL_LENGTH);
+        resultKeys.add(CaptureResult.LENS_FOCUS_DISTANCE);
+        resultKeys.add(CaptureResult.LENS_OPTICAL_STABILIZATION_MODE);
+        resultKeys.add(CaptureResult.LENS_FOCUS_RANGE);
+        resultKeys.add(CaptureResult.LENS_STATE);
+        resultKeys.add(CaptureResult.NOISE_REDUCTION_MODE);
+        resultKeys.add(CaptureResult.REQUEST_FRAME_COUNT);
+        resultKeys.add(CaptureResult.SCALER_CROP_REGION);
+        resultKeys.add(CaptureResult.SENSOR_EXPOSURE_TIME);
+        resultKeys.add(CaptureResult.SENSOR_FRAME_DURATION);
+        resultKeys.add(CaptureResult.SENSOR_SENSITIVITY);
+        resultKeys.add(CaptureResult.SENSOR_TIMESTAMP);
+        resultKeys.add(CaptureResult.SENSOR_TEMPERATURE);
+        resultKeys.add(CaptureResult.STATISTICS_FACE_DETECT_MODE);
+        resultKeys.add(CaptureResult.STATISTICS_FACE_IDS);
+        resultKeys.add(CaptureResult.STATISTICS_FACE_LANDMARKS);
+        resultKeys.add(CaptureResult.STATISTICS_FACE_RECTANGLES);
+        resultKeys.add(CaptureResult.STATISTICS_FACE_SCORES);
+        resultKeys.add(CaptureResult.STATISTICS_LENS_SHADING_MAP);
+        resultKeys.add(CaptureResult.STATISTICS_PREDICTED_COLOR_GAINS);
+        resultKeys.add(CaptureResult.STATISTICS_PREDICTED_COLOR_TRANSFORM);
+        resultKeys.add(CaptureResult.STATISTICS_SCENE_FLICKER);
+        resultKeys.add(CaptureResult.TONEMAP_CURVE_BLUE);
+        resultKeys.add(CaptureResult.TONEMAP_CURVE_GREEN);
+        resultKeys.add(CaptureResult.TONEMAP_CURVE_RED);
+        resultKeys.add(CaptureResult.TONEMAP_MODE);
+        resultKeys.add(CaptureResult.BLACK_LEVEL_LOCK);
+
+        // Add STATISTICS_FACES key separately here because it is not
+        // defined in metadata xml file.
+        resultKeys.add(CaptureResult.STATISTICS_FACES);
+
+        return resultKeys;
+    }
+
+    /*~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~
+     * End generated code
+     *~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~O@*/
+}
diff --git a/tests/tests/hardware/src/android/hardware/camera2/cts/CameraCharacteristicsTest.java b/tests/tests/hardware/src/android/hardware/camera2/cts/CameraCharacteristicsTest.java
new file mode 100644
index 0000000..1b892ba
--- /dev/null
+++ b/tests/tests/hardware/src/android/hardware/camera2/cts/CameraCharacteristicsTest.java
@@ -0,0 +1,965 @@
+/*
+ * Copyright (C) 2013 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.
+ */
+
+/**
+ * ! Do not edit this file directly !
+ *
+ * Generated automatically from system/media/camera/docs/CameraCharacteristicsTest.mako.
+ * This file contains only the auto-generated CameraCharacteristics CTS tests; it does
+ * not contain any additional manual tests, which would be in a separate file.
+ */
+
+package android.hardware.camera2.cts;
+
+import android.content.Context;
+import android.hardware.camera2.CameraCharacteristics;
+import android.hardware.camera2.CameraManager;
+import android.hardware.camera2.CameraMetadata.Key;
+import android.test.AndroidTestCase;
+import android.util.Log;
+
+import java.util.List;
+
+/**
+ * Auto-generated CTS test for CameraCharacteristics fields.
+ */
+public class CameraCharacteristicsTest extends AndroidTestCase {
+    private CameraManager mCameraManager;
+    private static final String TAG = "CameraCharacteristicsTest";
+
+    @Override
+    public void setContext(Context context) {
+        super.setContext(context);
+        mCameraManager = (CameraManager)context.getSystemService(Context.CAMERA_SERVICE);
+        assertNotNull("Can't connect to camera manager", mCameraManager);
+    }
+
+    @Override
+    protected void setUp() throws Exception {
+        super.setUp();
+    }
+
+    @Override
+    protected void tearDown() throws Exception {
+        super.tearDown();
+    }
+
+    public void testCameraCharacteristicsAndroidControlAeAvailableAntibandingModes() throws Exception {
+        String[] ids = mCameraManager.getCameraIdList();
+        for (int i = 0; i < ids.length; i++) {
+            CameraCharacteristics props = mCameraManager.getCameraCharacteristics(ids[i]);
+            assertNotNull(String.format("Can't get camera characteristics from: ID %s", ids[i]),
+                                        props);
+
+            {
+
+                assertNotNull("Invalid property: android.control.aeAvailableAntibandingModes",
+                        props.get(CameraCharacteristics.CONTROL_AE_AVAILABLE_ANTIBANDING_MODES));
+
+                List<Key<?>> allKeys = props.getKeys();
+                assertNotNull(String.format("Can't get camera characteristics keys from: ID %s",
+                        ids[i], props));
+                assertTrue("Key not in keys list: android.control.aeAvailableAntibandingModes", allKeys.contains(
+                        CameraCharacteristics.CONTROL_AE_AVAILABLE_ANTIBANDING_MODES));
+
+            }
+
+        }
+    }
+
+    public void testCameraCharacteristicsAndroidControlAeAvailableTargetFpsRanges() throws Exception {
+        String[] ids = mCameraManager.getCameraIdList();
+        for (int i = 0; i < ids.length; i++) {
+            CameraCharacteristics props = mCameraManager.getCameraCharacteristics(ids[i]);
+            assertNotNull(String.format("Can't get camera characteristics from: ID %s", ids[i]),
+                                        props);
+
+            {
+
+                assertNotNull("Invalid property: android.control.aeAvailableTargetFpsRanges",
+                        props.get(CameraCharacteristics.CONTROL_AE_AVAILABLE_TARGET_FPS_RANGES));
+
+                List<Key<?>> allKeys = props.getKeys();
+                assertNotNull(String.format("Can't get camera characteristics keys from: ID %s",
+                        ids[i], props));
+                assertTrue("Key not in keys list: android.control.aeAvailableTargetFpsRanges", allKeys.contains(
+                        CameraCharacteristics.CONTROL_AE_AVAILABLE_TARGET_FPS_RANGES));
+
+            }
+
+        }
+    }
+
+    public void testCameraCharacteristicsAndroidControlAeCompensationRange() throws Exception {
+        String[] ids = mCameraManager.getCameraIdList();
+        for (int i = 0; i < ids.length; i++) {
+            CameraCharacteristics props = mCameraManager.getCameraCharacteristics(ids[i]);
+            assertNotNull(String.format("Can't get camera characteristics from: ID %s", ids[i]),
+                                        props);
+
+            {
+
+                assertNotNull("Invalid property: android.control.aeCompensationRange",
+                        props.get(CameraCharacteristics.CONTROL_AE_COMPENSATION_RANGE));
+
+                List<Key<?>> allKeys = props.getKeys();
+                assertNotNull(String.format("Can't get camera characteristics keys from: ID %s",
+                        ids[i], props));
+                assertTrue("Key not in keys list: android.control.aeCompensationRange", allKeys.contains(
+                        CameraCharacteristics.CONTROL_AE_COMPENSATION_RANGE));
+
+            }
+
+        }
+    }
+
+    public void testCameraCharacteristicsAndroidControlAeCompensationStep() throws Exception {
+        String[] ids = mCameraManager.getCameraIdList();
+        for (int i = 0; i < ids.length; i++) {
+            CameraCharacteristics props = mCameraManager.getCameraCharacteristics(ids[i]);
+            assertNotNull(String.format("Can't get camera characteristics from: ID %s", ids[i]),
+                                        props);
+
+            {
+
+                assertNotNull("Invalid property: android.control.aeCompensationStep",
+                        props.get(CameraCharacteristics.CONTROL_AE_COMPENSATION_STEP));
+
+                List<Key<?>> allKeys = props.getKeys();
+                assertNotNull(String.format("Can't get camera characteristics keys from: ID %s",
+                        ids[i], props));
+                assertTrue("Key not in keys list: android.control.aeCompensationStep", allKeys.contains(
+                        CameraCharacteristics.CONTROL_AE_COMPENSATION_STEP));
+
+            }
+
+        }
+    }
+
+    public void testCameraCharacteristicsAndroidControlAfAvailableModes() throws Exception {
+        String[] ids = mCameraManager.getCameraIdList();
+        for (int i = 0; i < ids.length; i++) {
+            CameraCharacteristics props = mCameraManager.getCameraCharacteristics(ids[i]);
+            assertNotNull(String.format("Can't get camera characteristics from: ID %s", ids[i]),
+                                        props);
+
+            {
+
+                assertNotNull("Invalid property: android.control.afAvailableModes",
+                        props.get(CameraCharacteristics.CONTROL_AF_AVAILABLE_MODES));
+
+                List<Key<?>> allKeys = props.getKeys();
+                assertNotNull(String.format("Can't get camera characteristics keys from: ID %s",
+                        ids[i], props));
+                assertTrue("Key not in keys list: android.control.afAvailableModes", allKeys.contains(
+                        CameraCharacteristics.CONTROL_AF_AVAILABLE_MODES));
+
+            }
+
+        }
+    }
+
+    public void testCameraCharacteristicsAndroidControlAvailableEffects() throws Exception {
+        String[] ids = mCameraManager.getCameraIdList();
+        for (int i = 0; i < ids.length; i++) {
+            CameraCharacteristics props = mCameraManager.getCameraCharacteristics(ids[i]);
+            assertNotNull(String.format("Can't get camera characteristics from: ID %s", ids[i]),
+                                        props);
+
+            {
+
+                assertNotNull("Invalid property: android.control.availableEffects",
+                        props.get(CameraCharacteristics.CONTROL_AVAILABLE_EFFECTS));
+
+                List<Key<?>> allKeys = props.getKeys();
+                assertNotNull(String.format("Can't get camera characteristics keys from: ID %s",
+                        ids[i], props));
+                assertTrue("Key not in keys list: android.control.availableEffects", allKeys.contains(
+                        CameraCharacteristics.CONTROL_AVAILABLE_EFFECTS));
+
+            }
+
+        }
+    }
+
+    public void testCameraCharacteristicsAndroidControlAvailableSceneModes() throws Exception {
+        String[] ids = mCameraManager.getCameraIdList();
+        for (int i = 0; i < ids.length; i++) {
+            CameraCharacteristics props = mCameraManager.getCameraCharacteristics(ids[i]);
+            assertNotNull(String.format("Can't get camera characteristics from: ID %s", ids[i]),
+                                        props);
+
+            {
+
+                assertNotNull("Invalid property: android.control.availableSceneModes",
+                        props.get(CameraCharacteristics.CONTROL_AVAILABLE_SCENE_MODES));
+
+                List<Key<?>> allKeys = props.getKeys();
+                assertNotNull(String.format("Can't get camera characteristics keys from: ID %s",
+                        ids[i], props));
+                assertTrue("Key not in keys list: android.control.availableSceneModes", allKeys.contains(
+                        CameraCharacteristics.CONTROL_AVAILABLE_SCENE_MODES));
+
+            }
+
+        }
+    }
+
+    public void testCameraCharacteristicsAndroidControlAvailableVideoStabilizationModes() throws Exception {
+        String[] ids = mCameraManager.getCameraIdList();
+        for (int i = 0; i < ids.length; i++) {
+            CameraCharacteristics props = mCameraManager.getCameraCharacteristics(ids[i]);
+            assertNotNull(String.format("Can't get camera characteristics from: ID %s", ids[i]),
+                                        props);
+
+            {
+
+                assertNotNull("Invalid property: android.control.availableVideoStabilizationModes",
+                        props.get(CameraCharacteristics.CONTROL_AVAILABLE_VIDEO_STABILIZATION_MODES));
+
+                List<Key<?>> allKeys = props.getKeys();
+                assertNotNull(String.format("Can't get camera characteristics keys from: ID %s",
+                        ids[i], props));
+                assertTrue("Key not in keys list: android.control.availableVideoStabilizationModes", allKeys.contains(
+                        CameraCharacteristics.CONTROL_AVAILABLE_VIDEO_STABILIZATION_MODES));
+
+            }
+
+        }
+    }
+
+    public void testCameraCharacteristicsAndroidControlAwbAvailableModes() throws Exception {
+        String[] ids = mCameraManager.getCameraIdList();
+        for (int i = 0; i < ids.length; i++) {
+            CameraCharacteristics props = mCameraManager.getCameraCharacteristics(ids[i]);
+            assertNotNull(String.format("Can't get camera characteristics from: ID %s", ids[i]),
+                                        props);
+
+            {
+
+                assertNotNull("Invalid property: android.control.awbAvailableModes",
+                        props.get(CameraCharacteristics.CONTROL_AWB_AVAILABLE_MODES));
+
+                List<Key<?>> allKeys = props.getKeys();
+                assertNotNull(String.format("Can't get camera characteristics keys from: ID %s",
+                        ids[i], props));
+                assertTrue("Key not in keys list: android.control.awbAvailableModes", allKeys.contains(
+                        CameraCharacteristics.CONTROL_AWB_AVAILABLE_MODES));
+
+            }
+
+        }
+    }
+
+    public void testCameraCharacteristicsAndroidControlMaxRegions() throws Exception {
+        String[] ids = mCameraManager.getCameraIdList();
+        for (int i = 0; i < ids.length; i++) {
+            CameraCharacteristics props = mCameraManager.getCameraCharacteristics(ids[i]);
+            assertNotNull(String.format("Can't get camera characteristics from: ID %s", ids[i]),
+                                        props);
+
+            {
+
+                assertNotNull("Invalid property: android.control.maxRegions",
+                        props.get(CameraCharacteristics.CONTROL_MAX_REGIONS));
+
+                List<Key<?>> allKeys = props.getKeys();
+                assertNotNull(String.format("Can't get camera characteristics keys from: ID %s",
+                        ids[i], props));
+                assertTrue("Key not in keys list: android.control.maxRegions", allKeys.contains(
+                        CameraCharacteristics.CONTROL_MAX_REGIONS));
+
+            }
+
+        }
+    }
+
+    public void testCameraCharacteristicsAndroidFlashInfoAvailable() throws Exception {
+        String[] ids = mCameraManager.getCameraIdList();
+        for (int i = 0; i < ids.length; i++) {
+            CameraCharacteristics props = mCameraManager.getCameraCharacteristics(ids[i]);
+            assertNotNull(String.format("Can't get camera characteristics from: ID %s", ids[i]),
+                                        props);
+
+            {
+
+                assertNotNull("Invalid property: android.flash.info.available",
+                        props.get(CameraCharacteristics.FLASH_INFO_AVAILABLE));
+
+                List<Key<?>> allKeys = props.getKeys();
+                assertNotNull(String.format("Can't get camera characteristics keys from: ID %s",
+                        ids[i], props));
+                assertTrue("Key not in keys list: android.flash.info.available", allKeys.contains(
+                        CameraCharacteristics.FLASH_INFO_AVAILABLE));
+
+            }
+
+        }
+    }
+
+    public void testCameraCharacteristicsAndroidJpegAvailableThumbnailSizes() throws Exception {
+        String[] ids = mCameraManager.getCameraIdList();
+        for (int i = 0; i < ids.length; i++) {
+            CameraCharacteristics props = mCameraManager.getCameraCharacteristics(ids[i]);
+            assertNotNull(String.format("Can't get camera characteristics from: ID %s", ids[i]),
+                                        props);
+
+            {
+
+                assertNotNull("Invalid property: android.jpeg.availableThumbnailSizes",
+                        props.get(CameraCharacteristics.JPEG_AVAILABLE_THUMBNAIL_SIZES));
+
+                List<Key<?>> allKeys = props.getKeys();
+                assertNotNull(String.format("Can't get camera characteristics keys from: ID %s",
+                        ids[i], props));
+                assertTrue("Key not in keys list: android.jpeg.availableThumbnailSizes", allKeys.contains(
+                        CameraCharacteristics.JPEG_AVAILABLE_THUMBNAIL_SIZES));
+
+            }
+
+        }
+    }
+
+    public void testCameraCharacteristicsAndroidLensFacing() throws Exception {
+        String[] ids = mCameraManager.getCameraIdList();
+        for (int i = 0; i < ids.length; i++) {
+            CameraCharacteristics props = mCameraManager.getCameraCharacteristics(ids[i]);
+            assertNotNull(String.format("Can't get camera characteristics from: ID %s", ids[i]),
+                                        props);
+
+            {
+
+                assertNotNull("Invalid property: android.lens.facing",
+                        props.get(CameraCharacteristics.LENS_FACING));
+
+                List<Key<?>> allKeys = props.getKeys();
+                assertNotNull(String.format("Can't get camera characteristics keys from: ID %s",
+                        ids[i], props));
+                assertTrue("Key not in keys list: android.lens.facing", allKeys.contains(
+                        CameraCharacteristics.LENS_FACING));
+
+            }
+
+        }
+    }
+
+    public void testCameraCharacteristicsAndroidLensInfoAvailableApertures() throws Exception {
+        String[] ids = mCameraManager.getCameraIdList();
+        for (int i = 0; i < ids.length; i++) {
+            CameraCharacteristics props = mCameraManager.getCameraCharacteristics(ids[i]);
+            assertNotNull(String.format("Can't get camera characteristics from: ID %s", ids[i]),
+                                        props);
+
+            {
+
+                assertNotNull("Invalid property: android.lens.info.availableApertures",
+                        props.get(CameraCharacteristics.LENS_INFO_AVAILABLE_APERTURES));
+
+                List<Key<?>> allKeys = props.getKeys();
+                assertNotNull(String.format("Can't get camera characteristics keys from: ID %s",
+                        ids[i], props));
+                assertTrue("Key not in keys list: android.lens.info.availableApertures", allKeys.contains(
+                        CameraCharacteristics.LENS_INFO_AVAILABLE_APERTURES));
+
+            }
+
+        }
+    }
+
+    public void testCameraCharacteristicsAndroidLensInfoAvailableFilterDensities() throws Exception {
+        String[] ids = mCameraManager.getCameraIdList();
+        for (int i = 0; i < ids.length; i++) {
+            CameraCharacteristics props = mCameraManager.getCameraCharacteristics(ids[i]);
+            assertNotNull(String.format("Can't get camera characteristics from: ID %s", ids[i]),
+                                        props);
+
+            {
+
+                assertNotNull("Invalid property: android.lens.info.availableFilterDensities",
+                        props.get(CameraCharacteristics.LENS_INFO_AVAILABLE_FILTER_DENSITIES));
+
+                List<Key<?>> allKeys = props.getKeys();
+                assertNotNull(String.format("Can't get camera characteristics keys from: ID %s",
+                        ids[i], props));
+                assertTrue("Key not in keys list: android.lens.info.availableFilterDensities", allKeys.contains(
+                        CameraCharacteristics.LENS_INFO_AVAILABLE_FILTER_DENSITIES));
+
+            }
+
+        }
+    }
+
+    public void testCameraCharacteristicsAndroidLensInfoAvailableFocalLengths() throws Exception {
+        String[] ids = mCameraManager.getCameraIdList();
+        for (int i = 0; i < ids.length; i++) {
+            CameraCharacteristics props = mCameraManager.getCameraCharacteristics(ids[i]);
+            assertNotNull(String.format("Can't get camera characteristics from: ID %s", ids[i]),
+                                        props);
+
+            {
+
+                assertNotNull("Invalid property: android.lens.info.availableFocalLengths",
+                        props.get(CameraCharacteristics.LENS_INFO_AVAILABLE_FOCAL_LENGTHS));
+
+                List<Key<?>> allKeys = props.getKeys();
+                assertNotNull(String.format("Can't get camera characteristics keys from: ID %s",
+                        ids[i], props));
+                assertTrue("Key not in keys list: android.lens.info.availableFocalLengths", allKeys.contains(
+                        CameraCharacteristics.LENS_INFO_AVAILABLE_FOCAL_LENGTHS));
+
+            }
+
+        }
+    }
+
+    public void testCameraCharacteristicsAndroidLensInfoAvailableOpticalStabilization() throws Exception {
+        String[] ids = mCameraManager.getCameraIdList();
+        for (int i = 0; i < ids.length; i++) {
+            CameraCharacteristics props = mCameraManager.getCameraCharacteristics(ids[i]);
+            assertNotNull(String.format("Can't get camera characteristics from: ID %s", ids[i]),
+                                        props);
+
+            {
+
+                assertNotNull("Invalid property: android.lens.info.availableOpticalStabilization",
+                        props.get(CameraCharacteristics.LENS_INFO_AVAILABLE_OPTICAL_STABILIZATION));
+
+                List<Key<?>> allKeys = props.getKeys();
+                assertNotNull(String.format("Can't get camera characteristics keys from: ID %s",
+                        ids[i], props));
+                assertTrue("Key not in keys list: android.lens.info.availableOpticalStabilization", allKeys.contains(
+                        CameraCharacteristics.LENS_INFO_AVAILABLE_OPTICAL_STABILIZATION));
+
+            }
+
+        }
+    }
+
+    public void testCameraCharacteristicsAndroidLensInfoHyperfocalDistance() throws Exception {
+        String[] ids = mCameraManager.getCameraIdList();
+        for (int i = 0; i < ids.length; i++) {
+            CameraCharacteristics props = mCameraManager.getCameraCharacteristics(ids[i]);
+            assertNotNull(String.format("Can't get camera characteristics from: ID %s", ids[i]),
+                                        props);
+
+            {
+
+                assertNotNull("Invalid property: android.lens.info.hyperfocalDistance",
+                        props.get(CameraCharacteristics.LENS_INFO_HYPERFOCAL_DISTANCE));
+
+                List<Key<?>> allKeys = props.getKeys();
+                assertNotNull(String.format("Can't get camera characteristics keys from: ID %s",
+                        ids[i], props));
+                assertTrue("Key not in keys list: android.lens.info.hyperfocalDistance", allKeys.contains(
+                        CameraCharacteristics.LENS_INFO_HYPERFOCAL_DISTANCE));
+
+            }
+
+        }
+    }
+
+    public void testCameraCharacteristicsAndroidLensInfoMinimumFocusDistance() throws Exception {
+        String[] ids = mCameraManager.getCameraIdList();
+        for (int i = 0; i < ids.length; i++) {
+            CameraCharacteristics props = mCameraManager.getCameraCharacteristics(ids[i]);
+            assertNotNull(String.format("Can't get camera characteristics from: ID %s", ids[i]),
+                                        props);
+
+            {
+
+                assertNotNull("Invalid property: android.lens.info.minimumFocusDistance",
+                        props.get(CameraCharacteristics.LENS_INFO_MINIMUM_FOCUS_DISTANCE));
+
+                List<Key<?>> allKeys = props.getKeys();
+                assertNotNull(String.format("Can't get camera characteristics keys from: ID %s",
+                        ids[i], props));
+                assertTrue("Key not in keys list: android.lens.info.minimumFocusDistance", allKeys.contains(
+                        CameraCharacteristics.LENS_INFO_MINIMUM_FOCUS_DISTANCE));
+
+            }
+
+        }
+    }
+
+    public void testCameraCharacteristicsAndroidLensInfoShadingMapSize() throws Exception {
+        String[] ids = mCameraManager.getCameraIdList();
+        for (int i = 0; i < ids.length; i++) {
+            CameraCharacteristics props = mCameraManager.getCameraCharacteristics(ids[i]);
+            assertNotNull(String.format("Can't get camera characteristics from: ID %s", ids[i]),
+                                        props);
+
+            {
+
+                assertNotNull("Invalid property: android.lens.info.shadingMapSize",
+                        props.get(CameraCharacteristics.LENS_INFO_SHADING_MAP_SIZE));
+
+                List<Key<?>> allKeys = props.getKeys();
+                assertNotNull(String.format("Can't get camera characteristics keys from: ID %s",
+                        ids[i], props));
+                assertTrue("Key not in keys list: android.lens.info.shadingMapSize", allKeys.contains(
+                        CameraCharacteristics.LENS_INFO_SHADING_MAP_SIZE));
+
+            }
+
+        }
+    }
+
+    public void testCameraCharacteristicsAndroidRequestMaxNumOutputStreams() throws Exception {
+        String[] ids = mCameraManager.getCameraIdList();
+        for (int i = 0; i < ids.length; i++) {
+            CameraCharacteristics props = mCameraManager.getCameraCharacteristics(ids[i]);
+            assertNotNull(String.format("Can't get camera characteristics from: ID %s", ids[i]),
+                                        props);
+
+            {
+
+                assertNotNull("Invalid property: android.request.maxNumOutputStreams",
+                        props.get(CameraCharacteristics.REQUEST_MAX_NUM_OUTPUT_STREAMS));
+
+                List<Key<?>> allKeys = props.getKeys();
+                assertNotNull(String.format("Can't get camera characteristics keys from: ID %s",
+                        ids[i], props));
+                assertTrue("Key not in keys list: android.request.maxNumOutputStreams", allKeys.contains(
+                        CameraCharacteristics.REQUEST_MAX_NUM_OUTPUT_STREAMS));
+
+            }
+
+        }
+    }
+
+    public void testCameraCharacteristicsAndroidScalerAvailableFormats() throws Exception {
+        String[] ids = mCameraManager.getCameraIdList();
+        for (int i = 0; i < ids.length; i++) {
+            CameraCharacteristics props = mCameraManager.getCameraCharacteristics(ids[i]);
+            assertNotNull(String.format("Can't get camera characteristics from: ID %s", ids[i]),
+                                        props);
+
+            {
+
+                assertNotNull("Invalid property: android.scaler.availableFormats",
+                        props.get(CameraCharacteristics.SCALER_AVAILABLE_FORMATS));
+
+                List<Key<?>> allKeys = props.getKeys();
+                assertNotNull(String.format("Can't get camera characteristics keys from: ID %s",
+                        ids[i], props));
+                assertTrue("Key not in keys list: android.scaler.availableFormats", allKeys.contains(
+                        CameraCharacteristics.SCALER_AVAILABLE_FORMATS));
+
+            }
+
+        }
+    }
+
+    public void testCameraCharacteristicsAndroidScalerAvailableJpegMinDurations() throws Exception {
+        String[] ids = mCameraManager.getCameraIdList();
+        for (int i = 0; i < ids.length; i++) {
+            CameraCharacteristics props = mCameraManager.getCameraCharacteristics(ids[i]);
+            assertNotNull(String.format("Can't get camera characteristics from: ID %s", ids[i]),
+                                        props);
+
+            {
+
+                assertNotNull("Invalid property: android.scaler.availableJpegMinDurations",
+                        props.get(CameraCharacteristics.SCALER_AVAILABLE_JPEG_MIN_DURATIONS));
+
+                List<Key<?>> allKeys = props.getKeys();
+                assertNotNull(String.format("Can't get camera characteristics keys from: ID %s",
+                        ids[i], props));
+                assertTrue("Key not in keys list: android.scaler.availableJpegMinDurations", allKeys.contains(
+                        CameraCharacteristics.SCALER_AVAILABLE_JPEG_MIN_DURATIONS));
+
+            }
+
+        }
+    }
+
+    public void testCameraCharacteristicsAndroidScalerAvailableJpegSizes() throws Exception {
+        String[] ids = mCameraManager.getCameraIdList();
+        for (int i = 0; i < ids.length; i++) {
+            CameraCharacteristics props = mCameraManager.getCameraCharacteristics(ids[i]);
+            assertNotNull(String.format("Can't get camera characteristics from: ID %s", ids[i]),
+                                        props);
+
+            {
+
+                assertNotNull("Invalid property: android.scaler.availableJpegSizes",
+                        props.get(CameraCharacteristics.SCALER_AVAILABLE_JPEG_SIZES));
+
+                List<Key<?>> allKeys = props.getKeys();
+                assertNotNull(String.format("Can't get camera characteristics keys from: ID %s",
+                        ids[i], props));
+                assertTrue("Key not in keys list: android.scaler.availableJpegSizes", allKeys.contains(
+                        CameraCharacteristics.SCALER_AVAILABLE_JPEG_SIZES));
+
+            }
+
+        }
+    }
+
+    public void testCameraCharacteristicsAndroidScalerAvailableMaxDigitalZoom() throws Exception {
+        String[] ids = mCameraManager.getCameraIdList();
+        for (int i = 0; i < ids.length; i++) {
+            CameraCharacteristics props = mCameraManager.getCameraCharacteristics(ids[i]);
+            assertNotNull(String.format("Can't get camera characteristics from: ID %s", ids[i]),
+                                        props);
+
+            {
+
+                assertNotNull("Invalid property: android.scaler.availableMaxDigitalZoom",
+                        props.get(CameraCharacteristics.SCALER_AVAILABLE_MAX_DIGITAL_ZOOM));
+
+                List<Key<?>> allKeys = props.getKeys();
+                assertNotNull(String.format("Can't get camera characteristics keys from: ID %s",
+                        ids[i], props));
+                assertTrue("Key not in keys list: android.scaler.availableMaxDigitalZoom", allKeys.contains(
+                        CameraCharacteristics.SCALER_AVAILABLE_MAX_DIGITAL_ZOOM));
+
+            }
+
+        }
+    }
+
+    public void testCameraCharacteristicsAndroidScalerAvailableProcessedMinDurations() throws Exception {
+        String[] ids = mCameraManager.getCameraIdList();
+        for (int i = 0; i < ids.length; i++) {
+            CameraCharacteristics props = mCameraManager.getCameraCharacteristics(ids[i]);
+            assertNotNull(String.format("Can't get camera characteristics from: ID %s", ids[i]),
+                                        props);
+
+            {
+
+                assertNotNull("Invalid property: android.scaler.availableProcessedMinDurations",
+                        props.get(CameraCharacteristics.SCALER_AVAILABLE_PROCESSED_MIN_DURATIONS));
+
+                List<Key<?>> allKeys = props.getKeys();
+                assertNotNull(String.format("Can't get camera characteristics keys from: ID %s",
+                        ids[i], props));
+                assertTrue("Key not in keys list: android.scaler.availableProcessedMinDurations", allKeys.contains(
+                        CameraCharacteristics.SCALER_AVAILABLE_PROCESSED_MIN_DURATIONS));
+
+            }
+
+        }
+    }
+
+    public void testCameraCharacteristicsAndroidScalerAvailableProcessedSizes() throws Exception {
+        String[] ids = mCameraManager.getCameraIdList();
+        for (int i = 0; i < ids.length; i++) {
+            CameraCharacteristics props = mCameraManager.getCameraCharacteristics(ids[i]);
+            assertNotNull(String.format("Can't get camera characteristics from: ID %s", ids[i]),
+                                        props);
+
+            {
+
+                assertNotNull("Invalid property: android.scaler.availableProcessedSizes",
+                        props.get(CameraCharacteristics.SCALER_AVAILABLE_PROCESSED_SIZES));
+
+                List<Key<?>> allKeys = props.getKeys();
+                assertNotNull(String.format("Can't get camera characteristics keys from: ID %s",
+                        ids[i], props));
+                assertTrue("Key not in keys list: android.scaler.availableProcessedSizes", allKeys.contains(
+                        CameraCharacteristics.SCALER_AVAILABLE_PROCESSED_SIZES));
+
+            }
+
+        }
+    }
+
+    public void testCameraCharacteristicsAndroidSensorBaseGainFactor() throws Exception {
+        String[] ids = mCameraManager.getCameraIdList();
+        for (int i = 0; i < ids.length; i++) {
+            CameraCharacteristics props = mCameraManager.getCameraCharacteristics(ids[i]);
+            assertNotNull(String.format("Can't get camera characteristics from: ID %s", ids[i]),
+                                        props);
+
+            Integer hwLevel = props.get(CameraCharacteristics.INFO_SUPPORTED_HARDWARE_LEVEL);
+            assertNotNull("No hardware level reported! android.info.supportedHardwareLevel",
+                    hwLevel);
+            if (hwLevel == CameraCharacteristics.INFO_SUPPORTED_HARDWARE_LEVEL_FULL)
+            {
+
+                assertNotNull("Invalid property: android.sensor.baseGainFactor",
+                        props.get(CameraCharacteristics.SENSOR_BASE_GAIN_FACTOR));
+
+                List<Key<?>> allKeys = props.getKeys();
+                assertNotNull(String.format("Can't get camera characteristics keys from: ID %s",
+                        ids[i], props));
+                assertTrue("Key not in keys list: android.sensor.baseGainFactor", allKeys.contains(
+                        CameraCharacteristics.SENSOR_BASE_GAIN_FACTOR));
+
+            }
+
+        }
+    }
+
+    public void testCameraCharacteristicsAndroidSensorMaxAnalogSensitivity() throws Exception {
+        String[] ids = mCameraManager.getCameraIdList();
+        for (int i = 0; i < ids.length; i++) {
+            CameraCharacteristics props = mCameraManager.getCameraCharacteristics(ids[i]);
+            assertNotNull(String.format("Can't get camera characteristics from: ID %s", ids[i]),
+                                        props);
+
+            Integer hwLevel = props.get(CameraCharacteristics.INFO_SUPPORTED_HARDWARE_LEVEL);
+            assertNotNull("No hardware level reported! android.info.supportedHardwareLevel",
+                    hwLevel);
+            if (hwLevel == CameraCharacteristics.INFO_SUPPORTED_HARDWARE_LEVEL_FULL)
+            {
+
+                assertNotNull("Invalid property: android.sensor.maxAnalogSensitivity",
+                        props.get(CameraCharacteristics.SENSOR_MAX_ANALOG_SENSITIVITY));
+
+                List<Key<?>> allKeys = props.getKeys();
+                assertNotNull(String.format("Can't get camera characteristics keys from: ID %s",
+                        ids[i], props));
+                assertTrue("Key not in keys list: android.sensor.maxAnalogSensitivity", allKeys.contains(
+                        CameraCharacteristics.SENSOR_MAX_ANALOG_SENSITIVITY));
+
+            }
+
+        }
+    }
+
+    public void testCameraCharacteristicsAndroidSensorOrientation() throws Exception {
+        String[] ids = mCameraManager.getCameraIdList();
+        for (int i = 0; i < ids.length; i++) {
+            CameraCharacteristics props = mCameraManager.getCameraCharacteristics(ids[i]);
+            assertNotNull(String.format("Can't get camera characteristics from: ID %s", ids[i]),
+                                        props);
+
+            {
+
+                assertNotNull("Invalid property: android.sensor.orientation",
+                        props.get(CameraCharacteristics.SENSOR_ORIENTATION));
+
+                List<Key<?>> allKeys = props.getKeys();
+                assertNotNull(String.format("Can't get camera characteristics keys from: ID %s",
+                        ids[i], props));
+                assertTrue("Key not in keys list: android.sensor.orientation", allKeys.contains(
+                        CameraCharacteristics.SENSOR_ORIENTATION));
+
+            }
+
+        }
+    }
+
+    public void testCameraCharacteristicsAndroidSensorInfoActiveArraySize() throws Exception {
+        String[] ids = mCameraManager.getCameraIdList();
+        for (int i = 0; i < ids.length; i++) {
+            CameraCharacteristics props = mCameraManager.getCameraCharacteristics(ids[i]);
+            assertNotNull(String.format("Can't get camera characteristics from: ID %s", ids[i]),
+                                        props);
+
+            {
+
+                assertNotNull("Invalid property: android.sensor.info.activeArraySize",
+                        props.get(CameraCharacteristics.SENSOR_INFO_ACTIVE_ARRAY_SIZE));
+
+                List<Key<?>> allKeys = props.getKeys();
+                assertNotNull(String.format("Can't get camera characteristics keys from: ID %s",
+                        ids[i], props));
+                assertTrue("Key not in keys list: android.sensor.info.activeArraySize", allKeys.contains(
+                        CameraCharacteristics.SENSOR_INFO_ACTIVE_ARRAY_SIZE));
+
+            }
+
+        }
+    }
+
+    public void testCameraCharacteristicsAndroidSensorInfoSensitivityRange() throws Exception {
+        String[] ids = mCameraManager.getCameraIdList();
+        for (int i = 0; i < ids.length; i++) {
+            CameraCharacteristics props = mCameraManager.getCameraCharacteristics(ids[i]);
+            assertNotNull(String.format("Can't get camera characteristics from: ID %s", ids[i]),
+                                        props);
+
+            {
+
+                assertNotNull("Invalid property: android.sensor.info.sensitivityRange",
+                        props.get(CameraCharacteristics.SENSOR_INFO_SENSITIVITY_RANGE));
+
+                List<Key<?>> allKeys = props.getKeys();
+                assertNotNull(String.format("Can't get camera characteristics keys from: ID %s",
+                        ids[i], props));
+                assertTrue("Key not in keys list: android.sensor.info.sensitivityRange", allKeys.contains(
+                        CameraCharacteristics.SENSOR_INFO_SENSITIVITY_RANGE));
+
+            }
+
+        }
+    }
+
+    public void testCameraCharacteristicsAndroidSensorInfoExposureTimeRange() throws Exception {
+        String[] ids = mCameraManager.getCameraIdList();
+        for (int i = 0; i < ids.length; i++) {
+            CameraCharacteristics props = mCameraManager.getCameraCharacteristics(ids[i]);
+            assertNotNull(String.format("Can't get camera characteristics from: ID %s", ids[i]),
+                                        props);
+
+            {
+
+                assertNotNull("Invalid property: android.sensor.info.exposureTimeRange",
+                        props.get(CameraCharacteristics.SENSOR_INFO_EXPOSURE_TIME_RANGE));
+
+                List<Key<?>> allKeys = props.getKeys();
+                assertNotNull(String.format("Can't get camera characteristics keys from: ID %s",
+                        ids[i], props));
+                assertTrue("Key not in keys list: android.sensor.info.exposureTimeRange", allKeys.contains(
+                        CameraCharacteristics.SENSOR_INFO_EXPOSURE_TIME_RANGE));
+
+            }
+
+        }
+    }
+
+    public void testCameraCharacteristicsAndroidSensorInfoMaxFrameDuration() throws Exception {
+        String[] ids = mCameraManager.getCameraIdList();
+        for (int i = 0; i < ids.length; i++) {
+            CameraCharacteristics props = mCameraManager.getCameraCharacteristics(ids[i]);
+            assertNotNull(String.format("Can't get camera characteristics from: ID %s", ids[i]),
+                                        props);
+
+            {
+
+                assertNotNull("Invalid property: android.sensor.info.maxFrameDuration",
+                        props.get(CameraCharacteristics.SENSOR_INFO_MAX_FRAME_DURATION));
+
+                List<Key<?>> allKeys = props.getKeys();
+                assertNotNull(String.format("Can't get camera characteristics keys from: ID %s",
+                        ids[i], props));
+                assertTrue("Key not in keys list: android.sensor.info.maxFrameDuration", allKeys.contains(
+                        CameraCharacteristics.SENSOR_INFO_MAX_FRAME_DURATION));
+
+            }
+
+        }
+    }
+
+    public void testCameraCharacteristicsAndroidSensorInfoPhysicalSize() throws Exception {
+        String[] ids = mCameraManager.getCameraIdList();
+        for (int i = 0; i < ids.length; i++) {
+            CameraCharacteristics props = mCameraManager.getCameraCharacteristics(ids[i]);
+            assertNotNull(String.format("Can't get camera characteristics from: ID %s", ids[i]),
+                                        props);
+
+            {
+
+                assertNotNull("Invalid property: android.sensor.info.physicalSize",
+                        props.get(CameraCharacteristics.SENSOR_INFO_PHYSICAL_SIZE));
+
+                List<Key<?>> allKeys = props.getKeys();
+                assertNotNull(String.format("Can't get camera characteristics keys from: ID %s",
+                        ids[i], props));
+                assertTrue("Key not in keys list: android.sensor.info.physicalSize", allKeys.contains(
+                        CameraCharacteristics.SENSOR_INFO_PHYSICAL_SIZE));
+
+            }
+
+        }
+    }
+
+    public void testCameraCharacteristicsAndroidStatisticsInfoAvailableFaceDetectModes() throws Exception {
+        String[] ids = mCameraManager.getCameraIdList();
+        for (int i = 0; i < ids.length; i++) {
+            CameraCharacteristics props = mCameraManager.getCameraCharacteristics(ids[i]);
+            assertNotNull(String.format("Can't get camera characteristics from: ID %s", ids[i]),
+                                        props);
+
+            {
+
+                assertNotNull("Invalid property: android.statistics.info.availableFaceDetectModes",
+                        props.get(CameraCharacteristics.STATISTICS_INFO_AVAILABLE_FACE_DETECT_MODES));
+
+                List<Key<?>> allKeys = props.getKeys();
+                assertNotNull(String.format("Can't get camera characteristics keys from: ID %s",
+                        ids[i], props));
+                assertTrue("Key not in keys list: android.statistics.info.availableFaceDetectModes", allKeys.contains(
+                        CameraCharacteristics.STATISTICS_INFO_AVAILABLE_FACE_DETECT_MODES));
+
+            }
+
+        }
+    }
+
+    public void testCameraCharacteristicsAndroidStatisticsInfoMaxFaceCount() throws Exception {
+        String[] ids = mCameraManager.getCameraIdList();
+        for (int i = 0; i < ids.length; i++) {
+            CameraCharacteristics props = mCameraManager.getCameraCharacteristics(ids[i]);
+            assertNotNull(String.format("Can't get camera characteristics from: ID %s", ids[i]),
+                                        props);
+
+            {
+
+                assertNotNull("Invalid property: android.statistics.info.maxFaceCount",
+                        props.get(CameraCharacteristics.STATISTICS_INFO_MAX_FACE_COUNT));
+
+                List<Key<?>> allKeys = props.getKeys();
+                assertNotNull(String.format("Can't get camera characteristics keys from: ID %s",
+                        ids[i], props));
+                assertTrue("Key not in keys list: android.statistics.info.maxFaceCount", allKeys.contains(
+                        CameraCharacteristics.STATISTICS_INFO_MAX_FACE_COUNT));
+
+            }
+
+        }
+    }
+
+    public void testCameraCharacteristicsAndroidTonemapMaxCurvePoints() throws Exception {
+        String[] ids = mCameraManager.getCameraIdList();
+        for (int i = 0; i < ids.length; i++) {
+            CameraCharacteristics props = mCameraManager.getCameraCharacteristics(ids[i]);
+            assertNotNull(String.format("Can't get camera characteristics from: ID %s", ids[i]),
+                                        props);
+
+            {
+
+                assertNotNull("Invalid property: android.tonemap.maxCurvePoints",
+                        props.get(CameraCharacteristics.TONEMAP_MAX_CURVE_POINTS));
+
+                List<Key<?>> allKeys = props.getKeys();
+                assertNotNull(String.format("Can't get camera characteristics keys from: ID %s",
+                        ids[i], props));
+                assertTrue("Key not in keys list: android.tonemap.maxCurvePoints", allKeys.contains(
+                        CameraCharacteristics.TONEMAP_MAX_CURVE_POINTS));
+
+            }
+
+        }
+    }
+
+    public void testCameraCharacteristicsAndroidInfoSupportedHardwareLevel() throws Exception {
+        String[] ids = mCameraManager.getCameraIdList();
+        for (int i = 0; i < ids.length; i++) {
+            CameraCharacteristics props = mCameraManager.getCameraCharacteristics(ids[i]);
+            assertNotNull(String.format("Can't get camera characteristics from: ID %s", ids[i]),
+                                        props);
+
+            {
+
+                assertNotNull("Invalid property: android.info.supportedHardwareLevel",
+                        props.get(CameraCharacteristics.INFO_SUPPORTED_HARDWARE_LEVEL));
+
+                List<Key<?>> allKeys = props.getKeys();
+                assertNotNull(String.format("Can't get camera characteristics keys from: ID %s",
+                        ids[i], props));
+                assertTrue("Key not in keys list: android.info.supportedHardwareLevel", allKeys.contains(
+                        CameraCharacteristics.INFO_SUPPORTED_HARDWARE_LEVEL));
+
+            }
+
+        }
+    }
+}
+
diff --git a/tests/tests/hardware/src/android/hardware/camera2/cts/CameraDeviceTest.java b/tests/tests/hardware/src/android/hardware/camera2/cts/CameraDeviceTest.java
new file mode 100644
index 0000000..f68b10a
--- /dev/null
+++ b/tests/tests/hardware/src/android/hardware/camera2/cts/CameraDeviceTest.java
@@ -0,0 +1,440 @@
+/*
+ * Copyright 2013 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 android.hardware.camera2.cts;
+
+import static android.hardware.camera2.cts.CameraTestUtils.*;
+import static com.android.ex.camera2.blocking.BlockingStateListener.*;
+import static org.mockito.Mockito.*;
+
+import android.content.Context;
+import android.graphics.ImageFormat;
+import android.hardware.camera2.CameraCharacteristics;
+import android.hardware.camera2.CameraDevice;
+import android.hardware.camera2.CameraManager;
+import android.hardware.camera2.CameraMetadata;
+import android.hardware.camera2.CaptureFailure;
+import android.hardware.camera2.CaptureRequest;
+import android.hardware.camera2.CaptureResult;
+import android.media.Image;
+import android.media.ImageReader;
+import android.os.Handler;
+import android.os.SystemClock;
+import android.test.AndroidTestCase;
+import android.util.Log;
+import android.view.Surface;
+
+import com.android.ex.camera2.blocking.BlockingStateListener;
+import org.mockito.ArgumentMatcher;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * <p>Basic test for CameraDevice APIs.</p>
+ */
+public class CameraDeviceTest extends AndroidTestCase {
+    private static final String TAG = "CameraDeviceTest";
+    private static final boolean VERBOSE = Log.isLoggable(TAG, Log.VERBOSE);
+
+    private CameraManager mCameraManager;
+    private BlockingStateListener mCameraListener;
+    private CameraTestThread mLooperThread;
+    private Handler mCallbackHandler;
+    private int mLatestState = STATE_UNINITIALIZED;
+
+    /**
+     * The error triggered flag starts out as false, and it will flip to true if any errors
+     * are ever caught; it won't be reset to false after that happens. This is due to the
+     * fact that when multiple tests are run back to back (as they are here), it's hard
+     * to associate the asynchronous error with the test that caused it (so we won't even try).
+     */
+    private boolean mErrorTriggered = false;
+    private ImageReader mReader;
+    private CameraTestThread mDummyThread;
+    private Surface mSurface;
+
+    private static final int CAMERA_CONFIGURE_TIMEOUT_MS = 2000;
+    private static final int CAPTURE_WAIT_TIMEOUT_MS = 2000;
+    private static final int ERROR_LISTENER_WAIT_TIMEOUT_MS = 1000;
+    private static final int REPEATING_CAPTURE_EXPECTED_RESULT_COUNT = 5;
+    // VGA size capture is required by CDD.
+    private static final int DEFAULT_CAPTURE_WIDTH = 640;
+    private static final int DEFAULT_CAPTURE_HEIGHT = 480;
+    private static final int MAX_NUM_IMAGES = 5;
+
+    private static int[] mTemplates = new int[] {
+            CameraDevice.TEMPLATE_PREVIEW,
+            CameraDevice.TEMPLATE_RECORD,
+            CameraDevice.TEMPLATE_STILL_CAPTURE,
+            CameraDevice.TEMPLATE_VIDEO_SNAPSHOT
+    };
+
+    @Override
+    public void setContext(Context context) {
+        super.setContext(context);
+        /**
+         * Workaround for mockito and JB-MR2 incompatibility
+         *
+         * Avoid java.lang.IllegalArgumentException: dexcache == null
+         * https://code.google.com/p/dexmaker/issues/detail?id=2
+         */
+        System.setProperty("dexmaker.dexcache", mContext.getCacheDir().toString());
+        /**
+         * Create errorlistener in context scope, to catch asynchronous device error.
+         * Use spy object here since we want to use the SimpleDeviceListener callback
+         * implementation (spy doesn't stub the functions unless we ask it to do so).
+         */
+        mCameraListener = spy(new BlockingStateListener());
+    }
+
+    @Override
+    protected void setUp() throws Exception {
+        super.setUp();
+        /**
+         * Due to the asynchronous nature of camera device error callback, we
+         * have to make sure device doesn't run into error state before. If so,
+         * fail the rest of the tests. This is especially needed when error
+         * callback is fired too late.
+         */
+        verify(mCameraListener, never())
+                .onError(
+                    any(CameraDevice.class),
+                    anyInt());
+        verify(mCameraListener, never())
+                .onDisconnected(
+                    any(CameraDevice.class));
+
+        mCameraManager = (CameraManager)mContext.getSystemService(Context.CAMERA_SERVICE);
+        assertNotNull("Can't connect to camera manager", mCameraManager);
+        createDefaultSurface();
+        mLooperThread = new CameraTestThread();
+        mCallbackHandler = mLooperThread.start();
+    }
+
+    @Override
+    protected void tearDown() throws Exception {
+        mDummyThread.close();
+        mReader.close();
+        super.tearDown();
+    }
+
+    public void testCameraDeviceCreateCaptureBuilder() throws Exception {
+        String[] ids = mCameraManager.getCameraIdList();
+        for (int i = 0; i < ids.length; i++) {
+            CameraDevice camera = null;
+            try {
+                camera = CameraTestUtils.openCamera(mCameraManager, ids[i], mCallbackHandler);
+                assertNotNull(
+                        String.format("Failed to open camera device ID: %s", ids[i]), camera);
+
+                /**
+                 * Test: that each template type is supported, and that its required fields are
+                 * present.
+                 */
+                for (int j = 0; j < mTemplates.length; j++) {
+                    CaptureRequest.Builder capReq = camera.createCaptureRequest(mTemplates[j]);
+                    assertNotNull("Failed to create capture request", capReq);
+                    assertNotNull("Missing field: SENSOR_EXPOSURE_TIME",
+                            capReq.get(CaptureRequest.SENSOR_EXPOSURE_TIME));
+                    assertNotNull("Missing field: SENSOR_SENSITIVITY",
+                            capReq.get(CaptureRequest.SENSOR_SENSITIVITY));
+
+                    // TODO: Add more tests to check more fields.
+                }
+            }
+            finally {
+                if (camera != null) {
+                    camera.close();
+                }
+            }
+        }
+    }
+
+    public void testCameraDeviceSetErrorListener() throws Exception {
+        String[] ids = mCameraManager.getCameraIdList();
+        for (int i = 0; i < ids.length; i++) {
+            CameraDevice camera = null;
+            try {
+                camera = CameraTestUtils.openCamera(mCameraManager, ids[i],
+                        mCameraListener, mCallbackHandler);
+                assertNotNull(
+                        String.format("Failed to open camera device %s", ids[i]), camera);
+
+                /**
+                 * Test: that the error listener can be set without problems.
+                 * Also, wait some time to check if device doesn't run into error.
+                 */
+                SystemClock.sleep(ERROR_LISTENER_WAIT_TIMEOUT_MS);
+                verify(mCameraListener, never())
+                        .onError(
+                                any(CameraDevice.class),
+                                anyInt());
+            }
+            finally {
+                if (camera != null) {
+                    camera.close();
+                }
+            }
+        }
+    }
+
+    public void testCameraDeviceCapture() throws Exception {
+        runCaptureTest(false, false);
+    }
+
+    public void testCameraDeviceCaptureBurst() throws Exception {
+        runCaptureTest(true, false);
+    }
+
+    public void testCameraDeviceRepeatingRequest() throws Exception {
+        runCaptureTest(false, true);
+    }
+
+    public void testCameraDeviceRepeatingBurst() throws Exception {
+        runCaptureTest(true, true);
+    }
+
+    private class IsCameraMetadataNotEmpty<T extends CameraMetadata>
+            extends ArgumentMatcher<T> {
+        @Override
+        public boolean matches(Object obj) {
+            /**
+             * Do the simple verification here. Only verify the timestamp for now.
+             * TODO: verify more required capture result metadata fields.
+             */
+            CameraMetadata result = (CameraMetadata) obj;
+            Long timeStamp = result.get(CaptureResult.SENSOR_TIMESTAMP);
+            if (timeStamp != null && timeStamp.longValue() > 0L) {
+                return true;
+            }
+            return false;
+        }
+    }
+
+    private void runCaptureTest(boolean burst, boolean repeating) throws Exception {
+        String[] ids = mCameraManager.getCameraIdList();
+        for (int i = 0; i < ids.length; i++) {
+            CameraDevice camera = null;
+            try {
+                camera = CameraTestUtils.openCamera(mCameraManager, ids[i],
+                        mCameraListener, mCallbackHandler);
+                assertNotNull(
+                        String.format("Failed to open camera device %s", ids[i]), camera);
+                waitForState(STATE_UNCONFIGURED, CAMERA_OPEN_TIMEOUT_MS);
+
+                prepareCapture(camera);
+
+                if (!burst) {
+                    // Test: that a single capture of each template type succeeds.
+                    for (int j = 0; j < mTemplates.length; j++) {
+                        captureSingleShot(camera, ids[i], mTemplates[j], repeating);
+                    }
+                }
+                else {
+                    // Test: burst of zero shots
+                    captureBurstShot(camera, ids[i], mTemplates, 0, repeating);
+
+                    // Test: burst of one shot
+                    captureBurstShot(camera, ids[i], mTemplates, 1, repeating);
+
+                    int[] templates = new int[] {
+                            CameraDevice.TEMPLATE_STILL_CAPTURE,
+                            CameraDevice.TEMPLATE_STILL_CAPTURE,
+                            CameraDevice.TEMPLATE_STILL_CAPTURE,
+                            CameraDevice.TEMPLATE_STILL_CAPTURE,
+                            CameraDevice.TEMPLATE_STILL_CAPTURE
+                            };
+
+                    // Test: burst of 5 shots of the same template type
+                    captureBurstShot(camera, ids[i], templates, templates.length, repeating);
+
+                    // Test: burst of 5 shots of different template types
+                    captureBurstShot(camera, ids[i], mTemplates, mTemplates.length, repeating);
+                }
+                verify(mCameraListener, never())
+                        .onError(
+                                any(CameraDevice.class),
+                                anyInt());
+            }
+            finally {
+                if (camera != null) {
+                    camera.close();
+                }
+            }
+        }
+    }
+
+    private void captureSingleShot(
+            CameraDevice camera,
+            String id,
+            int template,
+            boolean repeating) throws Exception {
+
+        assertEquals("Bad initial state for preparing to capture",
+                mLatestState, STATE_IDLE);
+
+        CaptureRequest.Builder requestBuilder = camera.createCaptureRequest(template);
+        assertNotNull("Failed to create capture request", requestBuilder);
+        requestBuilder.addTarget(mSurface);
+        CameraDevice.CaptureListener mockCaptureListener =
+                mock(CameraDevice.CaptureListener.class);
+
+        if (VERBOSE) {
+            Log.v(TAG, String.format("Capturing shot for device %s, template %d",
+                    id, template));
+        }
+        if (!repeating) {
+            camera.capture(requestBuilder.build(), mockCaptureListener, mCallbackHandler);
+        }
+        else {
+            camera.setRepeatingRequest(requestBuilder.build(), mockCaptureListener,
+                    mCallbackHandler);
+        }
+        waitForState(STATE_ACTIVE, CAMERA_CONFIGURE_TIMEOUT_MS);
+
+        int expectedCaptureResultCount = repeating ? REPEATING_CAPTURE_EXPECTED_RESULT_COUNT : 1;
+        verifyCaptureResults(camera, mockCaptureListener, expectedCaptureResultCount);
+
+        if (repeating) {
+            camera.stopRepeating();
+        }
+        waitForState(STATE_IDLE, CAMERA_CONFIGURE_TIMEOUT_MS);
+    }
+
+    private void captureBurstShot(
+            CameraDevice camera,
+            String id,
+            int[] templates,
+            int len,
+            boolean repeating) throws Exception {
+
+        assertEquals("Bad initial state for preparing to capture",
+                mLatestState, STATE_IDLE);
+
+        assertTrue("Invalid args to capture function", len <= templates.length);
+        List<CaptureRequest> requests = new ArrayList<CaptureRequest>();
+        for (int i = 0; i < len; i++) {
+            CaptureRequest.Builder requestBuilder = camera.createCaptureRequest(templates[i]);
+            assertNotNull("Failed to create capture request", requestBuilder);
+            requestBuilder.addTarget(mSurface);
+            requests.add(requestBuilder.build());
+        }
+        CameraDevice.CaptureListener mockCaptureListener =
+                mock(CameraDevice.CaptureListener.class);
+
+        if (VERBOSE) {
+            Log.v(TAG, String.format("Capturing burst shot for device %s", id));
+        }
+
+        if (!repeating) {
+            camera.captureBurst(requests, mockCaptureListener, mCallbackHandler);
+        }
+        else {
+            camera.setRepeatingBurst(requests, mockCaptureListener, mCallbackHandler);
+        }
+        waitForState(STATE_ACTIVE, CAMERA_CONFIGURE_TIMEOUT_MS);
+
+        int expectedResultCount = len;
+        if (repeating) {
+            expectedResultCount *= REPEATING_CAPTURE_EXPECTED_RESULT_COUNT;
+        }
+
+        verifyCaptureResults(camera, mockCaptureListener, expectedResultCount);
+
+        if (repeating) {
+            camera.stopRepeating();
+        }
+        waitForState(STATE_IDLE, CAMERA_CONFIGURE_TIMEOUT_MS);
+    }
+
+    // Precondition: Device must be in known IDLE/UNCONFIGURED state (has been waited for)
+    private void prepareCapture(CameraDevice camera) throws Exception {
+        assertTrue("Bad initial state for preparing to capture",
+                mLatestState == STATE_IDLE || mLatestState == STATE_UNCONFIGURED);
+
+        List<Surface> outputSurfaces = new ArrayList<Surface>(1);
+        outputSurfaces.add(mSurface);
+        camera.configureOutputs(outputSurfaces);
+        waitForState(STATE_BUSY, CAMERA_BUSY_TIMEOUT_MS);
+        waitForState(STATE_IDLE, CAMERA_IDLE_TIMEOUT_MS);
+    }
+
+    /**
+     * Dummy listener that release the image immediately once it is available.
+     * It can be used for the case where we don't care the image data at all.
+     * TODO: move it to the CameraTestUtil class.
+     */
+    private class ImageDropperListener implements ImageReader.OnImageAvailableListener {
+        @Override
+        public void onImageAvailable(ImageReader reader) {
+            Image image = null;
+            try {
+                image = reader.acquireNextImage();
+            } finally {
+                if (image != null) {
+                    image.close();
+                }
+            }
+        }
+    }
+
+    private void createDefaultSurface() throws Exception {
+        mReader =
+                ImageReader.newInstance(DEFAULT_CAPTURE_WIDTH,
+                        DEFAULT_CAPTURE_HEIGHT,
+                        ImageFormat.YUV_420_888,
+                        MAX_NUM_IMAGES);
+        mSurface = mReader.getSurface();
+        // Create dummy image listener since we don't care the image data in this test.
+        ImageReader.OnImageAvailableListener listener = new ImageDropperListener();
+        mDummyThread = new CameraTestThread();
+        mReader.setOnImageAvailableListener(listener, mDummyThread.start());
+    }
+
+    private void waitForState(int state, long timeout) {
+        mCameraListener.waitForState(state, timeout);
+        mLatestState = state;
+    }
+
+    private void verifyCaptureResults(
+            CameraDevice camera,
+            CameraDevice.CaptureListener mockListener,
+            int expectResultCount) {
+        // Should receive expected number of capture results.
+        verify(mockListener,
+                timeout(CAPTURE_WAIT_TIMEOUT_MS).atLeast(expectResultCount))
+                        .onCaptureCompleted(
+                                eq(camera),
+                                isA(CaptureRequest.class),
+                                argThat(new IsCameraMetadataNotEmpty<CaptureResult>()));
+        // Should not receive any capture failed callbacks.
+        verify(mockListener, never())
+                        .onCaptureFailed(
+                                eq(camera),
+                                argThat(new IsCameraMetadataNotEmpty<CaptureRequest>()),
+                                isA(CaptureFailure.class));
+        // Should receive expected number of capture shutter calls
+        verify(mockListener,
+                atLeast(expectResultCount))
+                        .onCaptureStarted(
+                               eq(camera),
+                               isA(CaptureRequest.class),
+                               anyLong());
+
+    }
+
+}
diff --git a/tests/tests/hardware/src/android/hardware/camera2/cts/CameraManagerTest.java b/tests/tests/hardware/src/android/hardware/camera2/cts/CameraManagerTest.java
new file mode 100644
index 0000000..7091cac
--- /dev/null
+++ b/tests/tests/hardware/src/android/hardware/camera2/cts/CameraManagerTest.java
@@ -0,0 +1,264 @@
+/*
+ * Copyright 2013 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 android.hardware.camera2.cts;
+
+import android.content.Context;
+import android.content.pm.PackageManager;
+import android.hardware.camera2.CameraAccessException;
+import android.hardware.camera2.CameraCharacteristics;
+import android.hardware.camera2.CameraDevice;
+import android.hardware.camera2.CameraManager;
+import android.os.Handler;
+import android.test.AndroidTestCase;
+import android.util.Log;
+
+import java.util.Arrays;
+
+/**
+ * <p>Basic test for CameraManager class.</p>
+ */
+public class CameraManagerTest extends AndroidTestCase {
+    private static final String TAG = "CameraManagerTest";
+    private static final boolean VERBOSE = Log.isLoggable(TAG, Log.VERBOSE);
+
+    private static final int NUM_CAMERA_REOPENS = 10;
+
+    private PackageManager mPackageManager;
+    private CameraManager mCameraManager;
+    private NoopCameraListener mListener;
+    private CameraTestThread mLooperThread;
+    private Handler mHandler;
+
+    @Override
+    public void setContext(Context context) {
+        super.setContext(context);
+        mCameraManager = (CameraManager)context.getSystemService(Context.CAMERA_SERVICE);
+        assertNotNull("Can't connect to camera manager", mCameraManager);
+        mPackageManager = context.getPackageManager();
+        assertNotNull("Can't get package manager", mPackageManager);
+        mListener = new NoopCameraListener();
+    }
+
+    @Override
+    protected void setUp() throws Exception {
+        super.setUp();
+
+        mLooperThread = new CameraTestThread();
+        mHandler = mLooperThread.start();
+    }
+
+    @Override
+    protected void tearDown() throws Exception {
+        mLooperThread.close();
+        mHandler = null;
+
+        super.tearDown();
+    }
+
+    public void testCameraManagerGetDeviceIdList() throws Exception {
+
+        // Test: that the getCameraIdList method runs without exceptions.
+        String[] ids = mCameraManager.getCameraIdList();
+        if (VERBOSE) Log.v(TAG, "CameraManager ids: " + Arrays.toString(ids));
+
+        /**
+         * Test: that if there is at least one reported id, then the system must have
+         * the FEATURE_CAMERA_ANY feature.
+         */
+        assertTrue("System camera feature and camera id list don't match",
+                ids.length == 0 ||
+                mPackageManager.hasSystemFeature(PackageManager.FEATURE_CAMERA_ANY));
+
+        /**
+         * Test: that if the device has front or rear facing cameras, then there
+         * must be matched system features.
+         */
+        for (int i = 0; i < ids.length; i++) {
+            CameraCharacteristics props = mCameraManager.getCameraCharacteristics(ids[i]);
+            assertNotNull("Can't get camera characteristics for camera " + ids[i], props);
+            Integer lensFacing = props.get(CameraCharacteristics.LENS_FACING);
+            assertNotNull("Can't get lens facing info", lensFacing);
+            if (lensFacing == CameraCharacteristics.LENS_FACING_FRONT) {
+                assertTrue("System doesn't have front camera feature",
+                        mPackageManager.hasSystemFeature(PackageManager.FEATURE_CAMERA_FRONT));
+            } else if (lensFacing == CameraCharacteristics.LENS_FACING_BACK) {
+                assertTrue("System doesn't have back camera feature",
+                        mPackageManager.hasSystemFeature(PackageManager.FEATURE_CAMERA));
+            } else {
+                fail("Unknown camera lens facing " + lensFacing.toString());
+            }
+        }
+
+        /**
+         * Test: that if there is one camera device, then the system must have some
+         * specific features.
+         */
+        assertTrue("Missing system feature: FEATURE_CAMERA_ANY",
+               ids.length == 0
+            || mPackageManager.hasSystemFeature(PackageManager.FEATURE_CAMERA_ANY));
+        assertTrue("Missing system feature: FEATURE_CAMERA or FEATURE_CAMERA_FRONT",
+               ids.length == 0
+            || mPackageManager.hasSystemFeature(PackageManager.FEATURE_CAMERA)
+            || mPackageManager.hasSystemFeature(PackageManager.FEATURE_CAMERA_FRONT));
+    }
+
+    // Test: that properties can be queried from each device, without exceptions.
+    public void testCameraManagerGetCameraCharacteristics() throws Exception {
+        String[] ids = mCameraManager.getCameraIdList();
+        for (int i = 0; i < ids.length; i++) {
+            CameraCharacteristics props = mCameraManager.getCameraCharacteristics(ids[i]);
+            assertNotNull(
+                    String.format("Can't get camera characteristics from: ID %s", ids[i]), props);
+        }
+    }
+
+    // Test: that an exception is thrown if an invalid device id is passed down.
+    public void testCameraManagerInvalidDevice() throws Exception {
+        String[] ids = mCameraManager.getCameraIdList();
+        // Create an invalid id by concatenating all the valid ids together.
+        StringBuilder invalidId = new StringBuilder();
+        invalidId.append("INVALID");
+        for (int i = 0; i < ids.length; i++) {
+            invalidId.append(ids[i]);
+        }
+        try {
+            CameraCharacteristics props = mCameraManager.getCameraCharacteristics(
+                invalidId.toString());
+            fail(String.format("Accepted invalid camera ID: %s", invalidId.toString()));
+        }
+        catch (IllegalArgumentException e) {
+            // This is the exception that should be thrown in this case.
+        }
+    }
+
+    // Test: that each camera device can be opened one at a time, several times.
+    public void testCameraManagerOpenCamerasSerially() throws Exception {
+        String[] ids = mCameraManager.getCameraIdList();
+        for (int i = 0; i < ids.length; i++) {
+            for (int j = 0; j < NUM_CAMERA_REOPENS; j++) {
+                CameraDevice camera = CameraTestUtils.openCamera(mCameraManager, ids[i], mHandler);
+                assertNotNull(
+                    String.format("Failed to open camera device ID: %s", ids[i]), camera);
+                camera.close();
+            }
+        }
+    }
+
+    /**
+     * Test: that all camera devices can be open at the same time, or the appropriate
+     * exception is thrown if this can't be done.
+     */
+    public void testCameraManagerOpenAllCameras() throws Exception {
+        String[] ids = mCameraManager.getCameraIdList();
+        CameraDevice[] cameras = new CameraDevice[ids.length];
+        try {
+            for (int i = 0; i < ids.length; i++) {
+                try {
+                    cameras[i] = CameraTestUtils.openCamera(mCameraManager, ids[i], mHandler);
+
+                    /**
+                     * If the camera can't be opened, should throw an exception, rather than
+                     * returning null.
+                     */
+                    assertNotNull(
+                        String.format("Failed to open camera device ID: %s", ids[i]),
+                        cameras[i]);
+                }
+                catch (CameraAccessException e) {
+                    /**
+                     * This is the expected behavior if the camera can't be opened due to
+                     * limitations on how many devices can be open simultaneously.
+                     */
+                    assertEquals(
+                        String.format("Invalid exception reason: %s", e.getReason()),
+                        CameraAccessException.MAX_CAMERAS_IN_USE, e.getReason());
+                }
+            }
+        }
+        finally {
+            for (int i = 0; i < ids.length; i++) {
+                if (cameras[i] != null) {
+                    cameras[i].close();
+                }
+            }
+        }
+    }
+
+    // Test: that opening the same device multiple times throws the right exception.
+    public void testCameraManagerOpenCameraTwice() throws Exception {
+        String[] ids = mCameraManager.getCameraIdList();
+        CameraDevice[] cameras = new CameraDevice[2];
+        if (ids.length > 0) {
+            try {
+                cameras[0] = CameraTestUtils.openCamera(mCameraManager, ids[0], mHandler);
+                assertNotNull(
+                    String.format("Failed to open camera device ID: %s", ids[0]),
+                    cameras[0]);
+                try {
+                    cameras[1] = CameraTestUtils.openCamera(mCameraManager, ids[0], mHandler);
+                    fail(String.format("Opened the same camera device twice ID: %s",
+                        ids[0]));
+                }
+                catch (CameraAccessException e) {
+                    /**
+                     * This is the expected behavior if the camera device is attempted to
+                     * be opened more than once.
+                     */
+                    assertEquals(
+                        String.format("Invalid exception reason: %s", e.getReason()),
+                        CameraAccessException.CAMERA_IN_USE, e.getReason());
+                }
+            }
+            finally {
+                for (int i = 0; i < 2; i++) {
+                    if (cameras[i] != null) {
+                        cameras[i].close();
+                    }
+                }
+            }
+        }
+    }
+
+    private class NoopCameraListener extends CameraManager.AvailabilityListener {
+        @Override
+        public void onCameraAvailable(String cameraId) {
+            // No-op
+        }
+
+        @Override
+        public void onCameraUnavailable(String cameraId) {
+            // No-op
+        }
+    }
+
+    /**
+     * Test: that the APIs to register and unregister a listener run successfully;
+     * doesn't test that the listener actually gets invoked at the right time.
+     * Registering a listener multiple times should have no effect, and unregistering
+     * a listener that isn't registered should have no effect.
+     */
+    public void testCameraManagerListener() throws Exception {
+        CameraTestThread callbackThread = new CameraTestThread();
+        Handler callbackHandler = callbackThread.start();
+
+        mCameraManager.removeAvailabilityListener(mListener);
+        mCameraManager.addAvailabilityListener(mListener, callbackHandler);
+        mCameraManager.addAvailabilityListener(mListener, callbackHandler);
+        mCameraManager.removeAvailabilityListener(mListener);
+        mCameraManager.removeAvailabilityListener(mListener);
+    }
+}
diff --git a/tests/tests/hardware/src/android/hardware/camera2/cts/CameraTestThread.java b/tests/tests/hardware/src/android/hardware/camera2/cts/CameraTestThread.java
new file mode 100644
index 0000000..9516ead
--- /dev/null
+++ b/tests/tests/hardware/src/android/hardware/camera2/cts/CameraTestThread.java
@@ -0,0 +1,93 @@
+/*
+ * Copyright 2013 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 android.hardware.camera2.cts;
+
+import android.os.ConditionVariable;
+import android.os.Handler;
+import android.os.Looper;
+import android.util.Log;
+
+import java.util.concurrent.TimeoutException;
+
+/**
+ * Camera test thread wrapper for handling camera callbacks
+ */
+public class CameraTestThread implements AutoCloseable {
+    private static final String TAG = "CameraTestThread";
+    private static final boolean VERBOSE = Log.isLoggable(TAG, Log.VERBOSE);
+    // Timeout for initializing looper and opening camera in Milliseconds.
+    private static final long WAIT_FOR_COMMAND_TO_COMPLETE = 5000;
+    private Looper mLooper = null;
+    private Handler mHandler = null;
+
+    /**
+     * Create and start a looper thread, return the Handler
+     */
+    public synchronized Handler start() throws Exception {
+        final ConditionVariable startDone = new ConditionVariable();
+        if (mLooper != null || mHandler !=null) {
+            Log.w(TAG, "Looper thread already started");
+            return mHandler;
+        }
+
+        new Thread() {
+            @Override
+            public void run() {
+                if (VERBOSE) Log.v(TAG, "start loopRun");
+                Looper.prepare();
+                // Save the looper so that we can terminate this thread
+                // after we are done with it.
+                mLooper = Looper.myLooper();
+                mHandler = new Handler();
+                startDone.open();
+                Looper.loop();
+                if (VERBOSE) Log.v(TAG, "createLooperThread: finished");
+            }
+        }.start();
+
+        if (VERBOSE) Log.v(TAG, "start waiting for looper");
+        if (!startDone.block(WAIT_FOR_COMMAND_TO_COMPLETE)) {
+            throw new TimeoutException("createLooperThread: start timeout");
+        }
+        return mHandler;
+    }
+
+    /**
+     * Terminate the looper thread
+     */
+    public synchronized void close() throws Exception {
+        if (mLooper == null || mHandler == null) {
+            Log.w(TAG, "Looper thread doesn't start yet");
+            return;
+        }
+
+        if (VERBOSE) Log.v(TAG, "Terminate looper thread");
+        mLooper.quit();
+        mLooper.getThread().join();
+        mLooper = null;
+        mHandler = null;
+    }
+
+    @Override
+    protected void finalize() throws Throwable {
+        try {
+            close();
+        } finally {
+            super.finalize();
+        }
+    }
+}
diff --git a/tests/tests/hardware/src/android/hardware/camera2/cts/CameraTestUtils.java b/tests/tests/hardware/src/android/hardware/camera2/cts/CameraTestUtils.java
new file mode 100644
index 0000000..7f10cb8
--- /dev/null
+++ b/tests/tests/hardware/src/android/hardware/camera2/cts/CameraTestUtils.java
@@ -0,0 +1,293 @@
+/*
+ * Copyright 2013 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 android.hardware.camera2.cts;
+
+import android.graphics.ImageFormat;
+import android.hardware.camera2.CameraAccessException;
+import android.hardware.camera2.CameraDevice;
+import android.hardware.camera2.CameraManager;
+import android.hardware.camera2.CameraMetadata;
+import android.hardware.camera2.CameraCharacteristics;
+import android.hardware.camera2.Size;
+import android.media.Image;
+import android.media.ImageReader;
+import android.media.Image.Plane;
+import android.os.Handler;
+import android.util.Log;
+
+import com.android.ex.camera2.blocking.BlockingCameraManager;
+import com.android.ex.camera2.blocking.BlockingCameraManager.BlockingOpenException;
+
+import junit.framework.Assert;
+
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.lang.reflect.Array;
+import java.nio.ByteBuffer;
+import java.util.Arrays;
+
+/**
+ * A package private utility class for wrapping up the camera2 cts test common utility functions
+ */
+class CameraTestUtils extends Assert {
+    private static final String TAG = "CameraTestUtils";
+    private static final boolean VERBOSE = Log.isLoggable(TAG, Log.VERBOSE);
+
+    // Default timeouts for reaching various states
+    public static final int CAMERA_OPEN_TIMEOUT_MS = 500;
+    public static final int CAMERA_IDLE_TIMEOUT_MS = 2000;
+    public static final int CAMERA_ACTIVE_TIMEOUT_MS = 500;
+    public static final int CAMERA_BUSY_TIMEOUT_MS = 500;
+
+    public static class ImageDropperListener implements ImageReader.OnImageAvailableListener {
+        @Override
+        public void onImageAvailable(ImageReader reader) {
+            Image image = null;
+            try {
+                image = reader.acquireNextImage();
+            } finally {
+                if (image != null) {
+                    image.close();
+                }
+            }
+        }
+    }
+
+    /**
+     * Block until the camera is opened.
+     *
+     * <p>Don't use this to test #onDisconnected/#onError since this will throw
+     * an AssertionError if it fails to open the camera device.</p>
+     *
+     * @return CameraDevice opened camera device
+     * @throws BlockingOpenException
+     *
+     * @throws AssertionError if the camera fails to open (or times out)
+     */
+    public static CameraDevice openCamera(CameraManager manager, String cameraId,
+            CameraDevice.StateListener listener, Handler handler) throws CameraAccessException,
+            BlockingOpenException {
+
+        /**
+         * Although camera2 API allows 'null' Handler (it will just use the current
+         * thread's Looper), this is not what we want for CTS.
+         *
+         * In CTS the default looper is used only to process events in between test runs,
+         * so anything sent there would not be executed inside a test and the test would fail.
+         *
+         * In this case, BlockingCameraManager#openCamera performs the check for us.
+         */
+        return (new BlockingCameraManager(manager)).openCamera(cameraId, listener, handler);
+    }
+
+
+    /**
+     * Block until the camera is opened.
+     *
+     * <p>Don't use this to test #onDisconnected/#onError since this will throw
+     * an AssertionError if it fails to open the camera device.</p>
+     *
+     * @return CameraDevice opened camera device
+     *
+     * @throws AssertionError if the camera fails to open (or times out)
+     */
+    public static CameraDevice openCamera(CameraManager manager, String cameraId, Handler handler)
+            throws CameraAccessException,
+            BlockingOpenException {
+        return openCamera(manager, cameraId, /*listener*/null, handler);
+    }
+
+    public static <T> void assertArrayNotEmpty(T arr, String message) {
+        assertTrue(message, arr != null && Array.getLength(arr) > 0);
+    }
+
+    /**
+     * Check if the format is a legal YUV format camera supported.
+     */
+    public static void checkYuvFormat(int format) {
+        if ((format != ImageFormat.YUV_420_888) &&
+                (format != ImageFormat.NV21) &&
+                (format != ImageFormat.YV12) &&
+                (format != ImageFormat.Y8) &&
+                (format != ImageFormat.Y16)) {
+            fail("Wrong formats: " + format);
+        }
+    }
+
+    /**
+     * Check if image size and format match given size and format.
+     */
+    public static void checkImage(Image image, int width, int height, int format) {
+        assertNotNull("Input image is invalid", image);
+        assertEquals("Format doesn't match", format, image.getFormat());
+        assertEquals("Width doesn't match", width, image.getWidth());
+        assertEquals("Height doesn't match", height, image.getHeight());
+    }
+
+    /**
+     * <p>Read data from all planes of an Image into a contiguous unpadded, unpacked
+     * 1-D linear byte array, such that it can be write into disk, or accessed by
+     * software conveniently. It supports YUV_420_888/NV21/YV12 and JPEG input
+     * Image format.</p>
+     *
+     * <p>For YUV_420_888/NV21/YV12/Y8/Y16, it returns a byte array that contains
+     * the Y plane data first, followed by U(Cb), V(Cr) planes if there is any
+     * (xstride = width, ystride = height for chroma and luma components).</p>
+     *
+     * <p>For JPEG, it returns a 1-D byte array contains a complete JPEG image.</p>
+     */
+    public static byte[] getDataFromImage(Image image) {
+        assertNotNull("Invalid image:", image);
+        int format = image.getFormat();
+        int width = image.getWidth();
+        int height = image.getHeight();
+        int rowStride, pixelStride;
+        byte[] data = null;
+
+        // Read image data
+        Plane[] planes = image.getPlanes();
+        assertTrue("Fail to get image planes", planes != null && planes.length > 0);
+
+        // Check image validity
+        checkAndroidImageFormat(image);
+
+        ByteBuffer buffer = null;
+        // JPEG doesn't have pixelstride and rowstride, treat it as 1D buffer.
+        if (format == ImageFormat.JPEG) {
+            buffer = planes[0].getBuffer();
+            assertNotNull("Fail to get jpeg ByteBuffer", buffer);
+            data = new byte[buffer.capacity()];
+            buffer.get(data);
+            return data;
+        }
+
+        int offset = 0;
+        data = new byte[width * height * ImageFormat.getBitsPerPixel(format) / 8];
+        byte[] rowData = new byte[planes[0].getRowStride()];
+        if(VERBOSE) Log.v(TAG, "get data from " + planes.length + " planes");
+        for (int i = 0; i < planes.length; i++) {
+            buffer = planes[i].getBuffer();
+            assertNotNull("Fail to get bytebuffer from plane", buffer);
+            rowStride = planes[i].getRowStride();
+            assertTrue("rowStride should be no less than width", rowStride >= width);
+            pixelStride = planes[i].getPixelStride();
+            assertTrue("pixel stride " + pixelStride + " is invalid", pixelStride > 0);
+            if (VERBOSE) {
+                Log.v(TAG, "pixelStride " + pixelStride);
+                Log.v(TAG, "rowStride " + rowStride);
+                Log.v(TAG, "width " + width);
+                Log.v(TAG, "height " + height);
+            }
+            // For multi-planar yuv images, assuming yuv420 with 2x2 chroma subsampling.
+            int w = (i == 0) ? width : width / 2;
+            int h = (i == 0) ? height : height / 2;
+            assertTrue("rowStride " + rowStride + " should be >= width " + w , rowStride >= w);
+            for (int row = 0; row < h; row++) {
+                int bytesPerPixel = ImageFormat.getBitsPerPixel(format) / 8;
+                if (pixelStride == bytesPerPixel) {
+                    // Special case: optimized read of the entire row
+                    int length = w * bytesPerPixel;
+                    buffer.get(data, offset, length);
+                    // Advance buffer the remainder of the row stride
+                    buffer.position(buffer.position() + rowStride - length);
+                    offset += length;
+                } else {
+                    // Generic case: should work for any pixelStride but slower.
+                    // Use intermediate buffer to avoid read byte-by-byte from
+                    // DirectByteBuffer, which is very bad for performance
+                    buffer.get(rowData, 0, rowStride);
+                    for (int col = 0; col < w; col++) {
+                        data[offset++] = rowData[col * pixelStride];
+                    }
+                }
+            }
+            if (VERBOSE) Log.v(TAG, "Finished reading data from plane " + i);
+        }
+        return data;
+    }
+
+    /**
+     * <p>Check android image format validity for an image, only support below formats:</p>
+     *
+     * <p>YUV_420_888/NV21/YV12/Y8/Y16, can add more for future</p>
+     */
+    public static void checkAndroidImageFormat(Image image) {
+        int format = image.getFormat();
+        Plane[] planes = image.getPlanes();
+        switch (format) {
+            case ImageFormat.YUV_420_888:
+            case ImageFormat.NV21:
+            case ImageFormat.YV12:
+                assertEquals("YUV420 format Images should have 3 planes", 3, planes.length);
+                break;
+            case ImageFormat.Y8:
+            case ImageFormat.Y16:
+                assertEquals("Y8/Y16 Image should have 1 plane", 1, planes.length);
+                break;
+            case ImageFormat.JPEG:
+                assertEquals("Jpeg Image should have one plane", 1, planes.length);
+                break;
+            default:
+                fail("Unsupported Image Format: " + format);
+        }
+    }
+
+    public static void dumpFile(String fileName, byte[] data) {
+        FileOutputStream outStream;
+        try {
+            Log.v(TAG, "output will be saved as " + fileName);
+            outStream = new FileOutputStream(fileName);
+        } catch (IOException ioe) {
+            throw new RuntimeException("Unable to create debug output file " + fileName, ioe);
+        }
+
+        try {
+            outStream.write(data);
+            outStream.close();
+        } catch (IOException ioe) {
+            throw new RuntimeException("failed writing data to file " + fileName, ioe);
+        }
+    }
+
+    public static Size[] getSupportedSizeForFormat(int format, String cameraId,
+            CameraManager cameraManager) throws Exception {
+        CameraMetadata.Key<Size[]> key = null;
+        CameraCharacteristics properties = cameraManager.getCameraCharacteristics(cameraId);
+        assertNotNull("Can't get camera characteristics!", properties);
+        if (VERBOSE) {
+            Log.v(TAG, "get camera characteristics for camera: " + cameraId);
+        }
+        switch (format) {
+            case ImageFormat.JPEG:
+                key = CameraCharacteristics.SCALER_AVAILABLE_JPEG_SIZES;
+                break;
+            case ImageFormat.YUV_420_888:
+            case ImageFormat.YV12:
+            case ImageFormat.NV21:
+            case ImageFormat.Y8:
+            case ImageFormat.Y16:
+                key = CameraCharacteristics.SCALER_AVAILABLE_PROCESSED_SIZES;
+                break;
+            default:
+                throw new UnsupportedOperationException(
+                        String.format("Invalid format specified 0x%x", format));
+        }
+        Size[] availableSizes = properties.get(key);
+        if (VERBOSE) Log.v(TAG, "Supported sizes are: " + Arrays.deepToString(availableSizes));
+        return availableSizes;
+    }
+}
\ No newline at end of file
diff --git a/tests/tests/hardware/src/android/hardware/camera2/cts/ImageReaderTest.java b/tests/tests/hardware/src/android/hardware/camera2/cts/ImageReaderTest.java
new file mode 100644
index 0000000..28cb13e
--- /dev/null
+++ b/tests/tests/hardware/src/android/hardware/camera2/cts/ImageReaderTest.java
@@ -0,0 +1,357 @@
+/*
+ * Copyright 2013 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 android.hardware.camera2.cts;
+
+import static android.hardware.camera2.cts.CameraTestUtils.*;
+import static com.android.ex.camera2.blocking.BlockingStateListener.*;
+
+import android.content.Context;
+import android.graphics.BitmapFactory;
+import android.graphics.ImageFormat;
+import android.hardware.camera2.CameraAccessException;
+import android.hardware.camera2.CameraDevice;
+import android.hardware.camera2.CameraManager;
+import android.hardware.camera2.CameraCharacteristics;
+import android.hardware.camera2.CaptureRequest;
+import android.hardware.camera2.Size;
+import android.media.Image;
+import android.media.ImageReader;
+import android.os.Environment;
+import android.os.Handler;
+import android.test.AndroidTestCase;
+import android.util.Log;
+import android.view.Surface;
+
+import com.android.ex.camera2.blocking.BlockingCameraManager.BlockingOpenException;
+import com.android.ex.camera2.blocking.BlockingStateListener;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+
+/**
+ * <p>Basic test for ImageReader APIs. It uses CameraDevice as producer, camera
+ * sends the data to the surface provided by imageReader. Below image formats
+ * are tested:</p>
+ *
+ * <p>YUV_420_888: flexible YUV420, it is mandatory format for camera. </p>
+ * <p>JPEG: used for JPEG still capture, also mandatory format. </p>
+ * <p>Some invalid access test. </p>
+ * <p>TODO: Add more format tests? </p>
+ */
+public class ImageReaderTest extends AndroidTestCase {
+    private static final String TAG = "ImageReaderTest";
+    private static final boolean VERBOSE = Log.isLoggable(TAG, Log.VERBOSE);
+    private static final boolean DUMP_FILE = false;
+    private static final String DEBUG_FILE_NAME_BASE =
+            Environment.getExternalStorageDirectory().getPath();
+    // number of frame (for streaming requests) to be verified.
+    // TODO: Need extend it to bigger number
+    private static final int NUM_FRAME_VERIFIED = 1;
+    // Max number of images can be accessed simultaneously from ImageReader.
+    private static final int MAX_NUM_IMAGES = 5;
+
+    private CameraManager mCameraManager;
+    private CameraDevice mCamera;
+    private BlockingStateListener mCameraListener;
+    private String[] mCameraIds;
+    private ImageReader mReader = null;
+    private Handler mHandler = null;
+    private SimpleImageListener mListener = null;
+    private CameraTestThread mLooperThread = null;
+
+    @Override
+    public void setContext(Context context) {
+        super.setContext(context);
+        mCameraManager = (CameraManager) context.getSystemService(Context.CAMERA_SERVICE);
+        assertNotNull("Can't connect to camera manager!", mCameraManager);
+    }
+
+    @Override
+    protected void setUp() throws Exception {
+        super.setUp();
+        mCameraIds = mCameraManager.getCameraIdList();
+        mLooperThread = new CameraTestThread();
+        mHandler = mLooperThread.start();
+        mCameraListener = new BlockingStateListener();
+    }
+
+    @Override
+    protected void tearDown() throws Exception {
+        if (mCamera != null) {
+            mCamera.close();
+            mCamera = null;
+        }
+        if (mReader != null) {
+            mReader.close();
+            mReader = null;
+        }
+        mLooperThread.close();
+        mHandler = null;
+        super.tearDown();
+    }
+
+    public void testImageReaderFromCameraFlexibleYuv() throws Exception {
+        for (int i = 0; i < mCameraIds.length; i++) {
+            Log.i(TAG, "Testing Camera " + mCameraIds[i]);
+            openDevice(mCameraIds[i]);
+            bufferFormatTestByCamera(ImageFormat.YUV_420_888, mCameraIds[i]);
+            closeDevice(mCameraIds[i]);
+        }
+    }
+
+    public void testImageReaderFromCameraJpeg() throws Exception {
+        for (int i = 0; i < mCameraIds.length; i++) {
+            Log.v(TAG, "Testing Camera " + mCameraIds[i]);
+            openDevice(mCameraIds[i]);
+            bufferFormatTestByCamera(ImageFormat.JPEG, mCameraIds[i]);
+            closeDevice(mCameraIds[i]);
+        }
+    }
+
+    public void testImageReaderFromCameraRaw() {
+        // TODO: can test this once raw is supported
+    }
+
+    public void testImageReaderInvalidAccessTest() {
+        // TODO: test invalid access case, see if we can receive expected
+        // exceptions
+    }
+
+    private void bufferFormatTestByCamera(int format, String cameraId) throws Exception {
+        CameraCharacteristics properties = mCameraManager.getCameraCharacteristics(cameraId);
+        assertNotNull("Can't get camera properties!", properties);
+
+        /**
+         * TODO: cleanup the color format mess, we probably need define formats
+         * in Image class instead of using ImageFormat for camera. also,
+         * probably make sense to change the available format type from Enum[]
+         * to int[]. It'll also be nice to put this into a helper function and
+         * move to util class.
+         */
+        int[] availableFormats = properties.get(CameraCharacteristics.SCALER_AVAILABLE_FORMATS);
+        assertArrayNotEmpty(availableFormats,
+                "availableFormats should not be empty");
+        Arrays.sort(availableFormats);
+        assertTrue("Can't find the format " + format + " in supported formats " +
+                Arrays.toString(availableFormats),
+                Arrays.binarySearch(availableFormats, format) >= 0);
+
+        Size[] availableSizes = getSupportedSizeForFormat(format, mCamera.getId(), mCameraManager);
+        assertArrayNotEmpty(availableSizes, "availableSizes should not be empty");
+
+        // for each resolution, test imageReader:
+        for (Size sz : availableSizes) {
+            if (VERBOSE) Log.v(TAG, "Testing size " + sz.toString() + " for camera " + cameraId);
+
+            prepareImageReader(sz, format);
+
+            CaptureRequest request = prepareCaptureRequest(format);
+
+            captureAndValidateImage(request, sz, format);
+
+            stopCapture();
+        }
+    }
+
+    private class SimpleImageListener implements ImageReader.OnImageAvailableListener {
+        private int mPendingImages = 0;
+        private final Object mImageSyncObject = new Object();
+
+        @Override
+        public void onImageAvailable(ImageReader reader) {
+            if (VERBOSE) Log.v(TAG, "new image available");
+            synchronized (mImageSyncObject) {
+                mPendingImages++;
+                mImageSyncObject.notifyAll();
+            }
+        }
+
+        public boolean isImagePending() {
+            synchronized (mImageSyncObject) {
+                return (mPendingImages > 0);
+            }
+        }
+
+        public void waitForImage() {
+            final int TIMEOUT_MS = 5000;
+            synchronized (mImageSyncObject) {
+                while (mPendingImages == 0) {
+                    try {
+                        if (VERBOSE)
+                            Log.d(TAG, "waiting for next image");
+                        mImageSyncObject.wait(TIMEOUT_MS);
+                        if (mPendingImages == 0) {
+                            fail("wait for next image timed out");
+                        }
+                    } catch (InterruptedException ie) {
+                        throw new RuntimeException(ie);
+                    }
+                }
+                mPendingImages--;
+            }
+        }
+    }
+
+    private void prepareImageReader(Size sz, int format) throws Exception {
+        int width = sz.getWidth();
+        int height = sz.getHeight();
+        mReader = ImageReader.newInstance(width, height, format, MAX_NUM_IMAGES);
+        mListener  = new SimpleImageListener();
+        mReader.setOnImageAvailableListener(mListener, mHandler);
+        if (VERBOSE) Log.v(TAG, "Preparing ImageReader size " + sz.toString());
+    }
+
+    private CaptureRequest prepareCaptureRequest(int format) throws Exception {
+        List<Surface> outputSurfaces = new ArrayList<Surface>(1);
+        Surface surface = mReader.getSurface();
+        assertNotNull("Fail to get surface from ImageReader", surface);
+        outputSurfaces.add(surface);
+        mCamera.configureOutputs(outputSurfaces);
+        mCameraListener.waitForState(STATE_BUSY, CAMERA_BUSY_TIMEOUT_MS);
+        mCameraListener.waitForState(STATE_IDLE, CAMERA_IDLE_TIMEOUT_MS);
+
+        CaptureRequest.Builder captureBuilder =
+                mCamera.createCaptureRequest(CameraDevice.TEMPLATE_PREVIEW);
+        assertNotNull("Fail to get captureRequest", captureBuilder);
+        captureBuilder.addTarget(mReader.getSurface());
+
+        return captureBuilder.build();
+    }
+
+    private void captureAndValidateImage(CaptureRequest request,
+            Size sz, int format) throws Exception {
+        // TODO: Add more format here, and wrap each one as a function.
+        Image img;
+        int captureCount = NUM_FRAME_VERIFIED;
+
+        // Only verify single image for still capture
+        if (format == ImageFormat.JPEG) {
+            captureCount = 1;
+            mCamera.capture(request, null, null);
+        } else {
+            mCamera.setRepeatingRequest(request, null, null);
+        }
+
+        for (int i = 0; i < captureCount; i++) {
+            assertNotNull("Image listener is null", mListener);
+            if (VERBOSE) Log.v(TAG, "Waiting for an Image");
+            mListener.waitForImage();
+            img = mReader.acquireNextImage();
+            if (VERBOSE) Log.v(TAG, "Got next image");
+            validateImage(img, sz.getWidth(), sz.getHeight(), format);
+            img.close();
+            // Return the pending images to producer in case the validation is slower
+            // than the image producing rate. Otherwise, it could cause the producer
+            // starvation.
+            while (mListener.isImagePending()) {
+                mListener.waitForImage();
+                img = mReader.acquireNextImage();
+                img.close();
+            }
+        }
+    }
+
+    private void stopCapture() throws CameraAccessException {
+        if (VERBOSE) Log.v(TAG, "Stopping capture and waiting for idle");
+        // Stop repeat, wait for captures to complete, and disconnect from surfaces
+        mCamera.configureOutputs(/*outputs*/ null);
+        mCameraListener.waitForState(STATE_BUSY, CAMERA_BUSY_TIMEOUT_MS);
+        mCameraListener.waitForState(STATE_UNCONFIGURED, CAMERA_IDLE_TIMEOUT_MS);
+        // Camera has disconnected, clear out the reader
+        mReader.close();
+        mReader = null;
+        mListener = null;
+    }
+
+    private void openDevice(String cameraId) {
+        if (mCamera != null) {
+            throw new IllegalStateException("Already have open camera device");
+        }
+        try {
+            mCamera = CameraTestUtils.openCamera(
+                mCameraManager, cameraId, mCameraListener, mHandler);
+        } catch (CameraAccessException e) {
+            mCamera = null;
+            fail("Fail to open camera, " + Log.getStackTraceString(e));
+        } catch (BlockingOpenException e) {
+            mCamera = null;
+            fail("Fail to open camera, " + Log.getStackTraceString(e));
+        }
+        mCameraListener.waitForState(STATE_UNCONFIGURED, CAMERA_OPEN_TIMEOUT_MS);
+    }
+
+    private void closeDevice(String cameraId) {
+        mCamera.close();
+        mCamera = null;
+    }
+
+    private void validateImage(Image image, int width, int height, int format) {
+        checkImage(image, width, height, format);
+
+        /**
+         * TODO: validate timestamp:
+         * 1. capture result timestamp against the image timestamp (need
+         * consider frame drops)
+         * 2. timestamps should be monotonically increasing for different requests
+         */
+        if(VERBOSE) Log.v(TAG, "validating Image");
+        byte[] data = getDataFromImage(image);
+        assertTrue("Invalid image data", data != null && data.length > 0);
+
+        if (format == ImageFormat.JPEG) {
+            validateJpegData(data, width, height);
+        } else {
+            validateYuvData(data, width, height, format, image.getTimestamp());
+        }
+    }
+
+    private void validateJpegData(byte[] jpegData, int width, int height) {
+        BitmapFactory.Options bmpOptions = new BitmapFactory.Options();
+        // DecodeBound mode: only parse the frame header to get width/height.
+        // it doesn't decode the pixel.
+        bmpOptions.inJustDecodeBounds = true;
+        BitmapFactory.decodeByteArray(jpegData, 0, jpegData.length, bmpOptions);
+        assertEquals(width, bmpOptions.outWidth);
+        assertEquals(height, bmpOptions.outHeight);
+
+        // Pixel decoding mode: decode whole image. check if the image data
+        // is decodable here.
+        assertNotNull("Decoding jpeg failed",
+                BitmapFactory.decodeByteArray(jpegData, 0, jpegData.length));
+        if (DUMP_FILE) {
+            String fileName =
+                    DEBUG_FILE_NAME_BASE + width + "x" + height + ".yuv";
+            dumpFile(fileName, jpegData);
+        }
+    }
+
+    private void validateYuvData(byte[] yuvData, int width, int height, int format, long ts) {
+        checkYuvFormat(format);
+        if (VERBOSE) Log.v(TAG, "Validating YUV data");
+        int expectedSize = width * height * ImageFormat.getBitsPerPixel(format) / 8;
+        assertEquals("Yuv data doesn't match", expectedSize, yuvData.length);
+
+        // TODO: Can add data validation if we have test pattern(tracked by b/9625427)
+
+        if (DUMP_FILE) {
+            String fileName =
+                    DEBUG_FILE_NAME_BASE + "/" + width + "x" + height + "_" + ts / 1e6 + ".yuv";
+            dumpFile(fileName, yuvData);
+        }
+    }
+}
diff --git a/tests/tests/hardware/src/android/hardware/consumerir/cts/ConsumerIrTest.java b/tests/tests/hardware/src/android/hardware/consumerir/cts/ConsumerIrTest.java
new file mode 100644
index 0000000..e06adac
--- /dev/null
+++ b/tests/tests/hardware/src/android/hardware/consumerir/cts/ConsumerIrTest.java
@@ -0,0 +1,125 @@
+/*
+ * Copyright (C) 2013 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 android.hardware.consumerir.cts;
+
+import android.content.Context;
+import android.hardware.ConsumerIrManager;
+import android.util.Log;
+import android.content.pm.PackageManager;
+import android.os.SystemClock;
+import android.test.AndroidTestCase;
+import java.io.IOException;
+
+/**
+ * Very basic test, just of the static methods of {@link
+ * android.hardware.ConsumerIrManager}.
+ */
+public class ConsumerIrTest extends AndroidTestCase {
+    private boolean mHasConsumerIr;
+    private ConsumerIrManager mCIR;
+
+    @Override
+    public void setUp() throws Exception {
+        super.setUp();
+
+        mHasConsumerIr = getContext().getPackageManager().hasSystemFeature(
+                PackageManager.FEATURE_CONSUMER_IR);
+        if (mHasConsumerIr) {
+            mCIR = (ConsumerIrManager)getContext().getSystemService(
+                    Context.CONSUMER_IR_SERVICE);
+        }
+    }
+
+    public void test_hasIrEmitter() {
+        if (!mHasConsumerIr) {
+            // Skip the test if consumer IR is not present.
+            return;
+        }
+        assertTrue(mCIR.hasIrEmitter());
+    }
+
+    public void test_getCarrierFrequencies() {
+        if (!mHasConsumerIr) {
+            // Skip the test if consumer IR is not present.
+            return;
+        }
+
+        ConsumerIrManager.CarrierFrequencyRange[] freqs = mCIR.getCarrierFrequencies();
+
+        assertTrue(freqs.length > 0);
+        for (ConsumerIrManager.CarrierFrequencyRange range : freqs) {
+            // Each range must be valid
+            assertTrue(range.getMinFrequency() > 0);
+            assertTrue(range.getMaxFrequency() > 0);
+            assertTrue(range.getMinFrequency() <= range.getMaxFrequency());
+        }
+    }
+
+    public void test_timing() {
+        if (!mHasConsumerIr) {
+            // Skip the test if consumer IR is not present.
+            return;
+        }
+
+        ConsumerIrManager.CarrierFrequencyRange[] freqs = mCIR.getCarrierFrequencies();
+        // Transmit two seconds for min and max for each frequency range
+        int[] pattern = {11111, 22222, 33333, 44444, 55555, 66666, 77777, 88888, 99999};
+        long totalXmitTimeNanos = 0; // get the length of the pattern
+        for (int slice : pattern) {
+            totalXmitTimeNanos += slice * 1000; // add the time in nanoseconds
+        }
+        double margin = 0.5; // max fraction xmit is allowed to be off timing
+
+        for (ConsumerIrManager.CarrierFrequencyRange range : freqs) {
+            // test min freq
+            long currentTime = SystemClock.elapsedRealtimeNanos();
+            mCIR.transmit(range.getMinFrequency(), pattern);
+            long newTime = SystemClock.elapsedRealtimeNanos();
+            String msg = String.format("Pattern length pattern:%d, actual:%d",
+                    totalXmitTimeNanos, newTime - currentTime);
+            assertTrue(msg, newTime - currentTime >= totalXmitTimeNanos * (1.0 - margin));
+            assertTrue(msg, newTime - currentTime <= totalXmitTimeNanos * (1.0 + margin));
+
+            // test max freq
+            currentTime = SystemClock.elapsedRealtimeNanos();
+            mCIR.transmit(range.getMaxFrequency(), pattern);
+            newTime = SystemClock.elapsedRealtimeNanos();
+            msg = String.format("Pattern length pattern:%d, actual:%d",
+                    totalXmitTimeNanos, newTime - currentTime);
+            assertTrue(msg, newTime - currentTime >= totalXmitTimeNanos * (1.0 - margin));
+            assertTrue(msg, newTime - currentTime <= totalXmitTimeNanos * (1.0 + margin));
+        }
+    }
+
+    public void test_transmit() {
+        if (!mHasConsumerIr) {
+            // Skip the test if consumer IR is not present.
+            return;
+        }
+
+        ConsumerIrManager.CarrierFrequencyRange[] freqs = mCIR.getCarrierFrequencies();
+
+        int[] pattern = {1901, 4453, 625, 1614, 625, 1588, 625, 1614, 625, 442, 625, 442, 625,
+            468, 625, 442, 625, 494, 572, 1614, 625, 1588, 625, 1614, 625, 494, 572, 442, 651,
+            442, 625, 442, 625, 442, 625, 1614, 625, 1588, 651, 1588, 625, 442, 625, 494, 598,
+            442, 625, 442, 625, 520, 572, 442, 625, 442, 625, 442, 651, 1588, 625, 1614, 625,
+            1588, 625, 1614, 625, 1588, 625, 48958};
+
+        // just use the first frequency in the range
+        mCIR.transmit(freqs[0].getMinFrequency(), pattern);
+    }
+}
diff --git a/tests/tests/hardware/src/android/hardware/cts/CameraGLTest.java b/tests/tests/hardware/src/android/hardware/cts/CameraGLTest.java
index 9d7dacb..c1809b8 100644
--- a/tests/tests/hardware/src/android/hardware/cts/CameraGLTest.java
+++ b/tests/tests/hardware/src/android/hardware/cts/CameraGLTest.java
@@ -17,7 +17,6 @@
 package android.hardware.cts;
 
 import android.content.Context;
-import android.cts.util.TimeoutReq;
 import android.graphics.SurfaceTexture;
 import android.hardware.Camera;
 import android.hardware.Camera.Parameters;
@@ -40,6 +39,7 @@
 import android.test.suitebuilder.annotation.LargeTest;
 import android.util.Log;
 
+import com.android.cts.util.TimeoutReq;
 
 import java.io.IOException;
 import java.nio.ByteBuffer;
@@ -70,8 +70,8 @@
 
     private boolean mSurfaceTextureCallbackResult = false;
 
-    private static final int WAIT_FOR_COMMAND_TO_COMPLETE = 1500;  // Milliseconds.
-    private static final int WAIT_FOR_FOCUS_TO_COMPLETE = 3000;
+    private static final int WAIT_FOR_COMMAND_TO_COMPLETE = 5000;  // Milliseconds.
+    private static final int WAIT_FOR_FOCUS_TO_COMPLETE = 5000;
     private static final int WAIT_FOR_SNAPSHOT_TO_COMPLETE = 5000;
 
     private SurfaceTextureCallback mSurfaceTextureCallback = new SurfaceTextureCallback();
diff --git a/tests/tests/hardware/src/android/hardware/cts/CameraTest.java b/tests/tests/hardware/src/android/hardware/cts/CameraTest.java
old mode 100755
new mode 100644
index 31a72cf..f877d8b
--- a/tests/tests/hardware/src/android/hardware/cts/CameraTest.java
+++ b/tests/tests/hardware/src/android/hardware/cts/CameraTest.java
@@ -774,6 +774,7 @@
         assertTrue(sizes.size() >= 2);
         assertTrue(sizes.contains(size));
         assertTrue(sizes.contains(mCamera.new Size(0, 0)));
+        Size pictureSize = p.getPictureSize();
 
         // Test if the thumbnail size matches the setting.
         if (!recording) mCamera.startPreview();
diff --git a/tests/tests/hardware/src/android/hardware/cts/LowRamDeviceTest.java b/tests/tests/hardware/src/android/hardware/cts/LowRamDeviceTest.java
new file mode 100644
index 0000000..7c711a2
--- /dev/null
+++ b/tests/tests/hardware/src/android/hardware/cts/LowRamDeviceTest.java
@@ -0,0 +1,75 @@
+/*
+ * Copyright (C) 2013 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 android.hardware.cts;
+
+import android.app.ActivityManager;
+import android.content.Context;
+import android.test.AndroidTestCase;
+
+import java.io.FileInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.Scanner;
+import java.util.StringTokenizer;
+
+/**
+ * Tests that devices with low RAM specify themselves as Low RAM devices
+ */
+public class LowRamDeviceTest extends AndroidTestCase {
+
+    private static final int LOW_RAM_DEVICE_MEMORY_THRESHOLD_KB = 512 * 1024;
+
+    public void testLowRamProductProperty() throws Exception {
+        ActivityManager am =
+                (ActivityManager) getContext().getSystemService(Context.ACTIVITY_SERVICE);
+
+        if (totalAvailableSystemMemory() <= LOW_RAM_DEVICE_MEMORY_THRESHOLD_KB) {
+            assertTrue("Device must specify low RAM property: ro.config.low_ram=true",
+                    am.isLowRamDevice());
+        }
+    }
+
+    /**
+     * Returns the total amount of memory in kilobytes available to the system.
+     */
+    private int totalAvailableSystemMemory() throws IOException {
+        final String property = "MemTotal";
+        InputStream is = new FileInputStream("/proc/meminfo");
+        try {
+            Scanner scanner = new Scanner(is);
+            while (scanner.hasNextLine()) {
+                String line = scanner.nextLine();
+                if (line.startsWith(property)) {
+                    StringTokenizer tokenizer = new StringTokenizer(line);
+                    if (tokenizer.countTokens() != 3) {
+                        throw new IOException("Malformed " + property + " line");
+                    }
+
+                    // Skips over "MemTotal:"
+                    tokenizer.nextToken();
+
+                    return Integer.parseInt(tokenizer.nextToken());
+                }
+            }
+            throw new IOException(property + " could not be found");
+
+        } finally {
+            is.close();
+        }
+    }
+
+}
diff --git a/tests/tests/hardware/src/android/hardware/cts/SensorEventOrderingTests.java b/tests/tests/hardware/src/android/hardware/cts/SensorEventOrderingTests.java
new file mode 100644
index 0000000..116ac80
--- /dev/null
+++ b/tests/tests/hardware/src/android/hardware/cts/SensorEventOrderingTests.java
@@ -0,0 +1,110 @@
+/*
+ * Copyright (C) 2013 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 android.hardware.cts;
+
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+import android.hardware.Sensor;
+import android.hardware.SensorManager;
+
+import android.hardware.cts.helpers.SensorTestCase;
+
+import android.hardware.cts.helpers.sensorTestOperations.VerifyEventOrderingOperation;
+
+/**
+ * Verifies the proper ordering in time of sensor events.
+ */
+public class SensorEventOrderingTests extends SensorTestCase {
+    /**
+     * Builder for the test suite.
+     * This is the method that will build dynamically the set of test cases to execute.
+     * Each 'base' test case is composed by three parts:
+     * - the matrix definition
+     * - the test method that will execute the test case
+     * - a static method that will combine both and add test case instances to the test suite
+     */
+    public static Test suite() {
+        TestSuite testSuite = new TestSuite();
+
+        // add test generation routines
+        createEventOrderingTestCases(testSuite);
+
+        return testSuite;
+    }
+
+    /**
+     * Event ordering test cases.
+     */
+    private int mSensorType;
+    private int mSamplingRateInUs;
+    private int mReportLatencyInUs;
+
+    private static void createEventOrderingTestCases(TestSuite testSuite) {
+        int testDefinitionMatrix[][] = {
+                // { SensorType, SamplingRateInUs, ReportLatencyInUs },
+                { Sensor.TYPE_ACCELEROMETER, SensorManager.SENSOR_DELAY_FASTEST, 0 },
+                { Sensor.TYPE_GYROSCOPE, SensorManager.SENSOR_DELAY_FASTEST, 0 },
+                { Sensor.TYPE_MAGNETIC_FIELD, SensorManager.SENSOR_DELAY_FASTEST, 0 },
+                { Sensor.TYPE_PRESSURE, SensorManager.SENSOR_DELAY_FASTEST, 0 },
+                { Sensor.TYPE_GRAVITY, SensorManager.SENSOR_DELAY_FASTEST, 0 },
+                { Sensor.TYPE_LINEAR_ACCELERATION, SensorManager.SENSOR_DELAY_FASTEST, 0 },
+                { Sensor.TYPE_ROTATION_VECTOR, SensorManager.SENSOR_DELAY_FASTEST, 0 },
+                { Sensor.TYPE_RELATIVE_HUMIDITY, SensorManager.SENSOR_DELAY_FASTEST, 0 },
+                { Sensor.TYPE_AMBIENT_TEMPERATURE, SensorManager.SENSOR_DELAY_FASTEST, 0 },
+                { Sensor.TYPE_MAGNETIC_FIELD_UNCALIBRATED, SensorManager.SENSOR_DELAY_FASTEST, 0 },
+                { Sensor.TYPE_GAME_ROTATION_VECTOR, SensorManager.SENSOR_DELAY_FASTEST, 0 },
+                { Sensor.TYPE_GYROSCOPE_UNCALIBRATED, SensorManager.SENSOR_DELAY_FASTEST, 0 },
+                { Sensor.TYPE_GEOMAGNETIC_ROTATION_VECTOR, SensorManager.SENSOR_DELAY_FASTEST,0 },
+        };
+
+        for(int definition[] : testDefinitionMatrix) {
+            SensorEventOrderingTests test = new SensorEventOrderingTests();
+            test.mSensorType = definition[0];
+            test.mSamplingRateInUs = definition[1];
+            test.mReportLatencyInUs = definition[2];
+            test.setName("testEventOrdering");
+            testSuite.addTest(test);
+        }
+    }
+
+    /**
+     * This test verifies the ordering of the sampled data reported by the Sensor under test.
+     * This test is used to guarantee that sensor data is reported in the order it occurs, and that
+     * events are always reported in order.
+     *
+     * The test takes a set of samples from the Sensor under test, and then it verifies that each
+     * event's timestamp is in the future compared with the previous event. At the end of the
+     * validation, the full set of events is verified to be ordered by timestamp as they are
+     * generated.
+     *
+     * The test can be susceptible to errors if the sensor sampled data is not timestamped at the
+     * Hardware level. Or events sampled at high rates are added to the FIFO without controlling the
+     * appropriate ordering of the events.
+     *
+     * The assertion associated with the test provides the information of the two consecutive events
+     * that cause the test to fail.
+     */
+    public void testEventOrdering() throws Throwable {
+        VerifyEventOrderingOperation operation = new VerifyEventOrderingOperation(
+                this.getContext(),
+                mSensorType,
+                mSamplingRateInUs,
+                mReportLatencyInUs);
+        operation.execute();
+    }
+}
diff --git a/tests/tests/hardware/src/android/hardware/cts/SensorFrequencyTests.java b/tests/tests/hardware/src/android/hardware/cts/SensorFrequencyTests.java
new file mode 100644
index 0000000..b35f515
--- /dev/null
+++ b/tests/tests/hardware/src/android/hardware/cts/SensorFrequencyTests.java
@@ -0,0 +1,206 @@
+/*
+ * Copyright (C) 2013 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 android.hardware.cts;
+
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+import android.hardware.Sensor;
+
+import android.hardware.cts.helpers.SensorCtsHelper;
+import android.hardware.cts.helpers.SensorTestCase;
+
+import android.hardware.cts.helpers.sensorTestOperations.VerifyJitteringOperation;
+import android.hardware.cts.helpers.sensorTestOperations.VerifyMaximumFrequencyOperation;
+
+/**
+ * Verifies several properties of the sampling rate of the different sensors in the platform.
+ */
+public class SensorFrequencyTests extends SensorTestCase {
+    private int mSensorType;
+    private int mReportLatencyInUs;
+    private int mThresholdPercentageOfNs;
+
+    /**
+     * Builder for the test suite.
+     * This is the method that will build dynamically the set of test cases to execute.
+     * Each 'base' test case is composed by three parts:
+     * - the matrix definition
+     * - the test method that will execute the test case
+     * - a static method that will combine both and add test case instances to the test suite
+     */
+    public static Test suite() {
+        TestSuite testSuite = new TestSuite();
+
+        // add test generation routines
+        createMaxFrequencyExpectedTestCases(testSuite);
+        // TODO: tests are a unreliable in the lab
+        //createMaxFrequencyTestCases(testSuite);
+        //createJitteringTestCases(testSuite);
+
+        return testSuite;
+    }
+
+    /**
+     * Max frequency test cases.
+     */
+    private static void createMaxFrequencyTestCases(TestSuite testSuite) {
+        int testDefinitionMatrix[][] = {
+                // { SensorType, ReportLatencyInUs, ThresholdPercentageOfNs },
+                { Sensor.TYPE_ACCELEROMETER, 0, 10 },
+                { Sensor.TYPE_GYROSCOPE, 0, 10 },
+                { Sensor.TYPE_MAGNETIC_FIELD, 0, 10 },
+        };
+
+        for(int definition[] : testDefinitionMatrix) {
+            SensorFrequencyTests test = new SensorFrequencyTests();
+            test.mSensorType = definition[0];
+            test.mReportLatencyInUs = definition[1];
+            test.mThresholdPercentageOfNs = definition[2];
+            test.setName("testMaxFrequency");
+            testSuite.addTest(test);
+        }
+    }
+
+    /**
+     * This test verifies that the Sensor under test can sample and report data at the Maximum
+     * frequency (sampling rate) it advertises.
+     *
+     * The test takes a set of samples from the sensor under test, and calculates the mean of the
+     * frequency at which the events are reported. The frequency between events is calculated by
+     * looking at the delta between the timestamps associated with each event.
+     *
+     * The test is susceptible to errors if the Sensor is not capable to sample data at the maximum
+     * rate it supports, or the sensor events are not timestamped at the Hardware level.
+     *
+     * The assertion associated with the test provides the required data to identify:
+     * - the thread id on which the failure occurred
+     * - the sensor type and sensor handle that caused the failure
+     * - the expected frequency
+     * - the observed frequency
+     * In addition to that, the device's debug output (adb logcat) dumps the set of timestamp deltas
+     * associated with the set of data gathered from the Sensor under test.
+     */
+    public void testMaxFrequency() throws Throwable {
+        VerifyMaximumFrequencyOperation operation = new VerifyMaximumFrequencyOperation(
+                this.getContext(),
+                mSensorType,
+                mReportLatencyInUs,
+                mThresholdPercentageOfNs);
+        operation.execute();
+    }
+
+    /**
+     * Jittering test cases.
+     */
+    private static void createJitteringTestCases(TestSuite testSuite) {
+        int testDefinitionMatrix[][] = {
+                // { SensorType, ReportLatencyInUs, ThresholdPercentageOfNs },
+                { Sensor.TYPE_ACCELEROMETER, 0, 10 },
+                { Sensor.TYPE_GYROSCOPE, 0, 10 },
+                { Sensor.TYPE_MAGNETIC_FIELD, 0, 10 },
+        };
+
+        for(int definition[] : testDefinitionMatrix) {
+            SensorFrequencyTests test = new SensorFrequencyTests();
+            test.mSensorType = definition[0];
+            test.mReportLatencyInUs = definition[1];
+            test.mThresholdPercentageOfNs = definition[2];
+            test.setName("testJittering");
+            testSuite.addTest(test);
+        }
+    }
+
+    /**
+     * This test verifies that the event jittering associated with the sampled data reported by the
+     * Sensor under test, aligns with the requirements imposed in the CDD.
+     * This test characterizes how the sensor behaves while sampling data at a specific rate.
+     *
+     * The test takes a set of samples from the sensor under test, using the maximum sampling rate
+     * advertised by the Sensor under test. It then compares the 95%ile associated with the
+     * jittering of the timestamps, with an expected value.
+     *
+     * The test is susceptible to errors if the sensor events are not timestamped at the Hardware
+     * level.
+     *
+     * The assertion associated with the failure provides the following information:
+     * - the thread id on which the failure occurred
+     * - the sensor type and sensor handle that caused the failure
+     * - the expectation of the test with respect of the 95%ile
+     * - the calculated 95%ile jittering
+     * Additionally, the device's debug output (adb logcat) dumps the set of jitter values
+     * calculated.
+     */
+    public void testJittering() throws Throwable {
+        VerifyJitteringOperation operation = new VerifyJitteringOperation(
+                this.getContext(),
+                mSensorType,
+                mReportLatencyInUs,
+                mThresholdPercentageOfNs);
+        operation.execute();
+    }
+
+    /**
+     * Max Frequency expected Test Cases.
+     */
+    private int mExpectedSamplingRateInUs;
+
+    private static void createMaxFrequencyExpectedTestCases(TestSuite testSuite) {
+        int testDefinitionMatrix[][] = {
+                // { SensorType, ExpectedSamplingRateInUs },
+                { Sensor.TYPE_ACCELEROMETER, 10000 /* 100 Hz */ },
+                { Sensor.TYPE_GYROSCOPE, 10000 /* 100 Hz */ },
+                { Sensor.TYPE_MAGNETIC_FIELD, 100000 /* 10 Hz */ },
+        };
+
+        for(int definition[] : testDefinitionMatrix) {
+            SensorFrequencyTests test = new SensorFrequencyTests();
+            test.mSensorType = definition[0];
+            test.mExpectedSamplingRateInUs = definition[1];
+            test.setName("testMaxFrequencyExpected");
+            testSuite.addTest(test);
+        }
+    }
+
+    /**
+     * This test verifies that the sensor's maximum advertised frequency (sampling rate) complies
+     * with the required frequency set in the CDD.
+     * This characterizes that the sensor is able to provide data at the rate the platform requires
+     * it.
+     *
+     * The test simply compares the sampling rate specified in the CDD with the maximum sampling
+     * rate advertised by the Sensor under test.
+     *
+     * The test can fail if the Sensor Hardware does not support the sampling rate required by the
+     * platform.
+     *
+     * The assertion associated with the test failure contains:
+     * - the thread id on which the failure occurred
+     * - the sensor type and sensor handle that caused the failure
+     * - the expected maximum sampling rate
+     * - the observed maximum sampling rate
+     */
+    public void testMaxFrequencyExpected() {
+        Sensor sensor = SensorCtsHelper.getSensor(this.getContext(), mSensorType);
+        int samplingRateInUs = sensor.getMinDelay();
+        String message = String.format(
+                "samplingRateInUs| expected:%d, actual:%d",
+                mExpectedSamplingRateInUs,
+                samplingRateInUs);
+        assertTrue(message, mExpectedSamplingRateInUs >= samplingRateInUs);
+    }
+}
diff --git a/tests/tests/hardware/src/android/hardware/cts/SensorIntegrationTests.java b/tests/tests/hardware/src/android/hardware/cts/SensorIntegrationTests.java
new file mode 100644
index 0000000..a1aa760
--- /dev/null
+++ b/tests/tests/hardware/src/android/hardware/cts/SensorIntegrationTests.java
@@ -0,0 +1,276 @@
+/*
+ * Copyright (C) 2013 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 android.hardware.cts;
+
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+import android.content.Context;
+
+import android.hardware.Sensor;
+import android.hardware.SensorManager;
+
+import android.hardware.cts.helpers.SensorCtsHelper;
+import android.hardware.cts.helpers.SensorTestCase;
+import android.hardware.cts.helpers.SensorTestInformation;
+import android.hardware.cts.helpers.SensorTestOperation;
+
+import android.hardware.cts.helpers.sensorTestOperations.ParallelCompositeSensorTestOperation;
+import android.hardware.cts.helpers.sensorTestOperations.RepeatingSensorTestOperation;
+import android.hardware.cts.helpers.sensorTestOperations.SequentialCompositeSensorTestOperation;
+import android.hardware.cts.helpers.sensorTestOperations.VerifyEventOrderingOperation;
+
+import java.util.Random;
+
+/**
+ * Set of tests that verifies proper interaction of the sensors in the platform.
+ *
+ * To execute these test cases, the following command can be used:
+ *      $ adb shell am instrument -e class android.hardware.cts.SensorIntegrationTests \
+ *          -w com.android.cts.hardware/android.test.InstrumentationCtsTestRunner
+ */
+public class SensorIntegrationTests extends SensorTestCase {
+    /**
+     * Builder for the test suite.
+     * This is the method that will build dynamically the set of test cases to execute.
+     * Each 'base' test case is composed by three parts:
+     * - the matrix definition
+     * - the test method that will execute the test case
+     * - a static method that will combine both and add test case instances to the test suite
+     */
+    public static Test suite() {
+        TestSuite testSuite = new TestSuite();
+
+        // add test generation routines
+        addTestToSuite(testSuite, "testSensorsWithSeveralClients");
+        addTestToSuite(testSuite, "testSensorsMovingRates");
+        createStoppingTestCases(testSuite);
+
+        return testSuite;
+    }
+
+    /**
+     * This test focuses in the interaction of continuous and batching clients for the same Sensor
+     * under test. The verification ensures that sensor clients can interact with the System and
+     * not affect other clients in the way.
+     *
+     * The test verifies for each client that the a set of sampled data arrives in order. However
+     * each client in the test has different set of parameters that represent different types of
+     * clients in the real world.
+     *
+     * A test failure might indicate that the HAL implementation does not respect the assumption
+     * that the sensors must be independent. Activating one sensor should not cause another sensor
+     * to deactivate or to change behavior.
+     * It is however, acceptable that when a client is activated at a higher sampling rate, it would
+     * cause other clients to receive data at a faster sampling rate. A client causing other clients
+     * to receive data at a lower sampling rate is, however, not acceptable.
+     *
+     * The assertion associated with the test failure provides:
+     * - the thread id on which the failure occurred
+     * - the sensor type and sensor handle that caused the failure
+     * - the event that caused the issue
+     * It is important to look at the internals of the Sensor HAL to identify how the interaction
+     * of several clients can lead to the failing state.
+     */
+    public void testSensorsWithSeveralClients() throws Throwable {
+        final int ITERATIONS = 50;
+        final int BATCHING_RATE_IN_SECONDS = 5;
+        final Context context = this.getContext();
+
+        int sensorTypes[] = {
+                Sensor.TYPE_ACCELEROMETER,
+                Sensor.TYPE_MAGNETIC_FIELD,
+                Sensor.TYPE_GYROSCOPE };
+
+        ParallelCompositeSensorTestOperation operation = new ParallelCompositeSensorTestOperation();
+        for(int sensorType : sensorTypes) {
+            SensorTestOperation continuousOperation = new VerifyEventOrderingOperation(
+                    context,
+                    sensorType,
+                    SensorManager.SENSOR_DELAY_NORMAL,
+                    0 /* reportLatencyInUs */);
+            operation.add(new RepeatingSensorTestOperation(continuousOperation, ITERATIONS));
+
+            SensorTestOperation batchingOperation = new VerifyEventOrderingOperation(
+                    context,
+                    sensorType,
+                    SensorTestInformation.getMaxSamplingRateInUs(context, sensorType),
+                    SensorCtsHelper.getSecondsAsMicroSeconds(BATCHING_RATE_IN_SECONDS));
+            operation.add(new RepeatingSensorTestOperation(batchingOperation, ITERATIONS));
+        }
+        operation.execute();
+    }
+
+    /**
+     * This test focuses in the interaction of several sensor Clients. The test characterizes by
+     * using clients for different Sensors under Test that vary the sampling rates and report
+     * latencies for the requests.
+     * The verification ensures that the sensor clients can vary the parameters of their requests
+     * without affecting other clients.
+     *
+     * The test verifies for each client that a set of sampled data arrives in order. However each
+     * client in the test has different set of parameters that represent different types of clients
+     * in the real world.
+     *
+     * The test can be susceptible to issues when several clients interacting with the system
+     * actually affect the operation of other clients.
+     *
+     * The assertion associated with the test failure provides:
+     * - the thread id on which the failure occurred
+     * - the sensor type and sensor handle that caused the failure
+     * - the event that caused the issue
+     * It is important to look at the internals of the Sensor HAL to identify how the interaction
+     * of several clients can lead to the failing state.
+     */
+    public void testSensorsMovingRates() throws Throwable {
+        // use at least two instances to ensure more than one client of any given sensor is in play
+        final int INSTANCES_TO_USE = 5;
+        final int ITERATIONS_TO_EXECUTE = 100;
+
+        ParallelCompositeSensorTestOperation operation = new ParallelCompositeSensorTestOperation();
+        int sensorTypes[] = {
+                Sensor.TYPE_ACCELEROMETER,
+                Sensor.TYPE_MAGNETIC_FIELD,
+                Sensor.TYPE_GYROSCOPE };
+
+        for(int sensorType : sensorTypes) {
+            for(int instance = 0; instance < INSTANCES_TO_USE; ++instance) {
+                SequentialCompositeSensorTestOperation sequentialOperation =
+                        new SequentialCompositeSensorTestOperation();
+                for(int iteration = 0; iteration < ITERATIONS_TO_EXECUTE; ++iteration) {
+                    VerifyEventOrderingOperation sensorOperation = new VerifyEventOrderingOperation(
+                            this.getContext(),
+                            sensorType,
+                            this.generateSamplingRateInUs(sensorType),
+                            this.generateReportLatencyInUs());
+                    sequentialOperation.add(sensorOperation);
+                }
+                operation.add(sequentialOperation);
+            }
+        }
+
+        operation.execute();
+    }
+
+    /**
+     * Regress:
+     * - b/10641388
+     */
+    private int mSensorTypeTester;
+    private int mSensorTypeTestee;
+
+    private static void createStoppingTestCases(TestSuite testSuite) {
+        int sensorTypes[] = {
+                Sensor.TYPE_ACCELEROMETER,
+                Sensor.TYPE_GYROSCOPE,
+                Sensor.TYPE_MAGNETIC_FIELD};
+
+        for(int sensorTypeTester : sensorTypes) {
+            for(int sensorTypeTestee : sensorTypes) {
+                SensorIntegrationTests test = new SensorIntegrationTests();
+                test.mSensorTypeTester = sensorTypeTester;
+                test.mSensorTypeTestee = sensorTypeTestee;
+                test.setName("testSensorStoppingInteraction");
+                testSuite.addTest(test);
+            }
+        }
+    }
+
+    /**
+     * This test verifies that starting/stopping a particular Sensor client in the System does not
+     * affect other sensor clients.
+     * the test is used to validate that starting/stopping operations are independent on several
+     * sensor clients.
+     *
+     * The test verifies for each client that the a set of sampled data arrives in order. However
+     * each client in the test has different set of parameters that represent different types of
+     * clients in the real world.
+     *
+     * The test can be susceptible to issues when several clients interacting with the system
+     * actually affect the operation of other clients.
+     *
+     * The assertion associated with the test failure provides:
+     * - the thread id on which the failure occurred
+     * - the sensor type and sensor handle that caused the failure
+     * - the event that caused the issue
+     * It is important to look at the internals of the Sensor HAL to identify how the interaction
+     * of several clients can lead to the failing state.
+     */
+    public void testSensorStoppingInteraction() throws Throwable {
+        Context context = this.getContext();
+
+        SensorTestOperation tester = new VerifyEventOrderingOperation(
+                context,
+                mSensorTypeTester,
+                SensorManager.SENSOR_DELAY_NORMAL,
+                0 /*reportLatencyInUs*/);
+        tester.start();
+
+        SensorTestOperation testee = new VerifyEventOrderingOperation(
+                context,
+                mSensorTypeTestee,
+                SensorManager.SENSOR_DELAY_UI,
+                0 /*reportLatencyInUs*/);
+        testee.start();
+
+        testee.waitForCompletion();
+        tester.waitForCompletion();
+
+        testee.execute();
+    }
+
+    /**
+     * Private helpers.
+     */
+    private final Random mGenerator = new Random();
+
+    private int generateSamplingRateInUs(int sensorType) {
+        int rate;
+        switch(mGenerator.nextInt(5)) {
+            case 0:
+                rate = SensorManager.SENSOR_DELAY_FASTEST;
+                break;
+            case 1:
+                rate = SensorManager.SENSOR_DELAY_GAME;
+                break;
+            case 2:
+                rate = SensorManager.SENSOR_DELAY_NORMAL;
+                break;
+            case 3:
+                rate = SensorManager.SENSOR_DELAY_UI;
+                break;
+            case 4:
+            default:
+                int maxSamplingRate = SensorTestInformation.getMaxSamplingRateInUs(
+                        this.getContext(),
+                        sensorType);
+                rate = maxSamplingRate * mGenerator.nextInt(10);
+        }
+        return rate;
+    }
+
+    private int generateReportLatencyInUs() {
+        int reportLatency = SensorCtsHelper.getSecondsAsMicroSeconds(
+                mGenerator.nextInt(5) + 1);
+        return reportLatency;
+    }
+
+    private static void addTestToSuite(TestSuite testSuite, String testName) {
+        SensorIntegrationTests test = new SensorIntegrationTests();
+        test.setName(testName);
+        testSuite.addTest(test);
+    }
+}
diff --git a/tests/tests/hardware/src/android/hardware/cts/SensorMeasurementTests.java b/tests/tests/hardware/src/android/hardware/cts/SensorMeasurementTests.java
new file mode 100644
index 0000000..859b26d
--- /dev/null
+++ b/tests/tests/hardware/src/android/hardware/cts/SensorMeasurementTests.java
@@ -0,0 +1,172 @@
+/*
+ * Copyright (C) 2013 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 android.hardware.cts;
+
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+import android.hardware.Sensor;
+import android.hardware.SensorManager;
+
+import android.hardware.cts.helpers.SensorTestCase;
+
+import android.hardware.cts.helpers.sensorTestOperations.VerifyMagnitudeOperation;
+import android.hardware.cts.helpers.sensorTestOperations.VerifyStandardDeviationOperation;
+
+/**
+ * Verifies several properties of the sensor measurements.
+ */
+public class SensorMeasurementTests extends SensorTestCase {
+    private int mSensorType;
+    private int mSamplingRateInUs;
+
+    /**
+     * Builder for the test suite.
+     * This is the method that will build dynamically the set of test cases to execute.
+     * Each 'base' test case is composed by three parts:
+     * - the matrix definition
+     * - the test method that will execute the test case
+     * - a static method that will combine both and add test case instances to the test suite
+     */
+    public static Test suite() {
+        TestSuite testSuite = new TestSuite();
+
+        // add test generation routines
+        createEventNormTestCases(testSuite);
+        createStandardDeviationTestCases(testSuite);
+
+        return testSuite;
+    }
+
+    /**
+     * SensorEvent Norm test cases.
+     *
+     * Regress:
+     * - b/9503957
+     * - b/9611609
+     */
+    private float mReferenceValue;
+    private float mThreshold;
+
+    private static void createEventNormTestCases(TestSuite testSuite) {
+        Object testDefinitionMatrix[][] = {
+                // { SensorType, SamplingRateInUs, ReferenceValue, Threshold },
+                { Sensor.TYPE_ACCELEROMETER,
+                        SensorManager.SENSOR_DELAY_FASTEST,
+                        SensorManager.STANDARD_GRAVITY,
+                        1.5f /* m / s^2 */},
+                { Sensor.TYPE_GYROSCOPE, SensorManager.SENSOR_DELAY_FASTEST, 0.0f, 2.5f /* dps */ },
+        };
+
+        for(Object definition[] : testDefinitionMatrix)  {
+            SensorMeasurementTests test = new SensorMeasurementTests();
+            test.mSensorType = (Integer)definition[0];
+            test.mSamplingRateInUs = (Integer)definition[1];
+            test.mReferenceValue = (Float)definition[2];
+            test.mThreshold = (Float)definition[3];
+            test.setName("testEventNorm");
+            testSuite.addTest(test);
+        }
+    }
+
+    /**
+     * This test verifies that the Norm of the sensor data is close to the expected reference value.
+     * The units of the reference value are dependent on the type of sensor.
+     * This test is used to verify that the data reported by the sensor is close to the expected
+     * range and scale.
+     *
+     * The test takes a sample from the sensor under test and calculates the Euclidean Norm of the
+     * vector represented by the sampled data. It then compares it against the test expectations
+     * that are represented by a reference value and a threshold.
+     *
+     * The test is susceptible to errors when the Sensor under test is uncalibrated, or the units in
+     * which the data are reported and the expectations are set are different.
+     *
+     * The assertion associated with the test provides the required data needed to identify any
+     * possible issue. It provides:
+     * - the thread id on which the failure occurred
+     * - the sensor type and sensor handle that caused the failure
+     * - the values representing the expectation of the test
+     * - the values sampled from the sensor
+     */
+    public void testEventNorm() throws Throwable {
+        VerifyMagnitudeOperation operation = new VerifyMagnitudeOperation(
+                this.getContext(),
+                mSensorType,
+                mSamplingRateInUs,
+                mReferenceValue,
+                mThreshold);
+        operation.execute();
+    }
+
+    /**
+     * SensorEvent Standard Deviation test cases.
+     */
+    private int mReportLatencyInUs;
+    private float mExpectedStandardDeviation;
+
+    private static void createStandardDeviationTestCases(TestSuite testSuite) {
+        Object testDefinitionMatrix[][] = {
+                // { SensorType, SamplingRateInUs, ReportLatencyInUs, ExpectedStandardDeviation },
+                { Sensor.TYPE_ACCELEROMETER, SensorManager.SENSOR_DELAY_FASTEST, 0, 1f /* m/s^2 */ },
+                { Sensor.TYPE_GYROSCOPE, SensorManager.SENSOR_DELAY_FASTEST, 0, 0.5f /* dps */ },
+        };
+
+        for(Object definition[] : testDefinitionMatrix) {
+            SensorMeasurementTests test = new SensorMeasurementTests();
+            test.mSensorType = (Integer)definition[0];
+            test.mSamplingRateInUs = (Integer)definition[1];
+            test.mReportLatencyInUs = (Integer)definition[2];
+            test.mExpectedStandardDeviation = (Float)definition[3];
+            test.setName("testStandardDeviation");
+            testSuite.addTest(test);
+        }
+    }
+
+    /**
+     * This test verifies that the standard deviation of a set of sampled data from a particular
+     * sensor falls into the expectations defined in the CDD. The verification applies to each axis
+     * of the sampled data reported by the Sensor under test.
+     * This test is used to validate the requirement imposed by the CDD to Sensors in Android. And
+     * characterizes how the Sensor behaves while static.
+     *
+     * The test takes a set of samples from the sensor under test, and calculates the Standard
+     * Deviation for each of the axes the Sensor reports data for. The StdDev is compared against
+     * the expected value documented in the CDD.
+     *
+     * The test is susceptible to errors if the device is moving while the test is running, or if
+     * the Sensor's sampled data indeed falls into a large StdDev.
+     *
+     * The assertion associated with the test provides the required data to identify any possible
+     * issue. It provides:
+     * - the thread id on which the failure occurred
+     * - the sensor type and sensor handle that caused the failure
+     * - the expectation of the test
+     * - the std dev calculated and the axis it applies to
+     * Additionally, the device's debug output (adb logcat) dumps the set of values associated with
+     * the failure to help track down the issue.
+     */
+    public void testStandardDeviation() throws Throwable {
+        VerifyStandardDeviationOperation operation = new VerifyStandardDeviationOperation(
+                this.getContext(),
+                mSensorType,
+                mSamplingRateInUs,
+                mReportLatencyInUs,
+                mExpectedStandardDeviation);
+        operation.execute();
+    }
+}
diff --git a/tests/tests/hardware/src/android/hardware/cts/SensorTest.java b/tests/tests/hardware/src/android/hardware/cts/SensorTest.java
index c865140..24dd368 100644
--- a/tests/tests/hardware/src/android/hardware/cts/SensorTest.java
+++ b/tests/tests/hardware/src/android/hardware/cts/SensorTest.java
@@ -18,22 +18,28 @@
 
 import java.lang.IllegalArgumentException;
 import java.lang.Override;
+import java.util.ArrayList;
 import java.util.List;
+import java.util.concurrent.CountDownLatch;
 
 import android.content.Context;
 import android.content.pm.PackageManager;
 import android.hardware.Sensor;
 import android.hardware.SensorEvent;
 import android.hardware.SensorEventListener;
+import android.hardware.SensorEventListener2;
 import android.hardware.SensorManager;
 import android.hardware.TriggerEvent;
 import android.hardware.TriggerEventListener;
+import android.os.Handler;
+import android.os.HandlerThread;
 import android.test.AndroidTestCase;
 
 public class SensorTest extends AndroidTestCase {
     private SensorManager mSensorManager;
     private TriggerListener mTriggerListener;
     private SensorListener mSensorListener;
+    private ArrayList<Sensor> mContinuousSensorList;
 
     @Override
     protected void setUp() throws Exception {
@@ -41,6 +47,18 @@
         mSensorManager = (SensorManager) getContext().getSystemService(Context.SENSOR_SERVICE);
         mTriggerListener = new TriggerListener();
         mSensorListener = new SensorListener();
+        mContinuousSensorList = new ArrayList<Sensor>();
+        for (int i = Sensor.TYPE_ACCELEROMETER; i <= Sensor.TYPE_GEOMAGNETIC_ROTATION_VECTOR; ++i) {
+            Sensor sensor = mSensorManager.getDefaultSensor(i);
+            // Skip all non-continuous mode sensors.
+            if (sensor == null || Sensor.TYPE_SIGNIFICANT_MOTION == i ||
+                Sensor.TYPE_STEP_COUNTER == i || Sensor.TYPE_STEP_DETECTOR == i ||
+                Sensor.TYPE_LIGHT == i || Sensor.TYPE_PROXIMITY == i ||
+                Sensor.TYPE_AMBIENT_TEMPERATURE == i) {
+                continue;
+            }
+            mContinuousSensorList.add(sensor);
+        }
     }
 
     public void testSensorOperations() {
@@ -59,6 +77,28 @@
             assertNull(sensor);
         }
 
+        sensor = mSensorManager.getDefaultSensor(Sensor.TYPE_STEP_COUNTER);
+        boolean hasStepCounter = getContext().getPackageManager().hasSystemFeature(
+                                        PackageManager.FEATURE_SENSOR_STEP_COUNTER);
+        // stepcounter sensor is optional
+        if (hasStepCounter) {
+            assertEquals(Sensor.TYPE_STEP_COUNTER, sensor.getType());
+            assertSensorValues(sensor);
+        } else {
+            assertNull(sensor);
+        }
+
+        sensor = mSensorManager.getDefaultSensor(Sensor.TYPE_STEP_DETECTOR);
+        boolean hasStepDetector = getContext().getPackageManager().hasSystemFeature(
+                                        PackageManager.FEATURE_SENSOR_STEP_DETECTOR);
+        // stepdetector sensor is optional
+        if (hasStepDetector) {
+            assertEquals(Sensor.TYPE_STEP_DETECTOR, sensor.getType());
+            assertSensorValues(sensor);
+        } else {
+            assertNull(sensor);
+        }
+
         sensor = mSensorManager.getDefaultSensor(Sensor.TYPE_MAGNETIC_FIELD);
         boolean hasCompass = getContext().getPackageManager().hasSystemFeature(
                 PackageManager.FEATURE_SENSOR_COMPASS);
@@ -85,6 +125,15 @@
         }
     }
 
+    public void testValuesForAllSensors() {
+        for (int i = Sensor.TYPE_ACCELEROMETER; i <= Sensor.TYPE_GEOMAGNETIC_ROTATION_VECTOR; ++i) {
+            Sensor sensor = mSensorManager.getDefaultSensor(i);
+            if (sensor != null) {
+                assertSensorValues(sensor);
+            }
+        }
+    }
+
     public void testRequestTriggerWithNonTriggerSensor() {
         Sensor sensor = mSensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
         boolean result;
@@ -126,12 +175,121 @@
         }
     }
 
-        private void assertSensorValues(Sensor sensor) {
+    // Register for updates from each continuous mode sensor, wait for 25 events, call flush and
+    // wait for flushCompleteEvent before unregistering for the sensor.
+    public void testBatchAndFlush() throws Exception {
+        for (Sensor sensor : mContinuousSensorList) {
+            final CountDownLatch eventReceived = new CountDownLatch(25);
+            final CountDownLatch flushReceived = new CountDownLatch(1);
+            SensorEventListener2 listener = new SensorEventListener2() {
+                @Override
+                public void onSensorChanged(SensorEvent event) {
+                    eventReceived.countDown();
+                }
+
+                @Override
+                public void onAccuracyChanged(Sensor sensor, int accuracy) {
+                }
+
+                @Override
+                public void onFlushCompleted(Sensor sensor) {
+                    flushReceived.countDown();
+                }
+            };
+            boolean result = mSensorManager.registerListener(listener, sensor,
+                                            SensorManager.SENSOR_DELAY_NORMAL, 10000000);
+            assertTrue(result);
+            // Wait for 25 events and call flush.
+            eventReceived.await();
+            result = mSensorManager.flush(listener);
+            assertTrue(result);
+            flushReceived.await();
+            mSensorManager.unregisterListener(listener);
+        }
+    }
+
+    // Same as testBatchAndFlush but using Handler version of the API to register for sensors.
+    // onSensorChanged is now called on a background thread.
+    public void testBatchAndFlushWithHandler() throws Exception {
+        for (Sensor sensor : mContinuousSensorList) {
+            final CountDownLatch eventReceived = new CountDownLatch(25);
+            final CountDownLatch flushReceived = new CountDownLatch(1);
+            SensorEventListener2 listener = new SensorEventListener2() {
+                @Override
+                public void onSensorChanged(SensorEvent event) {
+                    eventReceived.countDown();
+                }
+
+                @Override
+                public void onAccuracyChanged(Sensor sensor, int accuracy) {
+                }
+
+                @Override
+                public void onFlushCompleted(Sensor sensor) {
+                    flushReceived.countDown();
+                }
+            };
+            HandlerThread handlerThread = new HandlerThread("sensorThread");
+            handlerThread.start();
+            Handler handler = new Handler(handlerThread.getLooper());
+            boolean result = mSensorManager.registerListener(listener, sensor,
+                                            SensorManager.SENSOR_DELAY_NORMAL, 15000000,
+                                            handler);
+            assertTrue(result);
+            // Wait for 25 events and call flush.
+            eventReceived.await();
+            result = mSensorManager.flush(listener);
+            assertTrue(result);
+            flushReceived.await();
+            mSensorManager.unregisterListener(listener);
+        }
+    }
+
+    // Call registerListener for multiple sensors at a time and call flush.
+    public void testBatchAndFlushWithMutipleSensors() throws Exception {
+        int numSensors = mContinuousSensorList.size() < 3 ? mContinuousSensorList.size() : 3;
+        if (numSensors == 0) {
+            return;
+        }
+        final CountDownLatch eventReceived = new CountDownLatch(numSensors * 50);
+        final CountDownLatch flushReceived = new CountDownLatch(numSensors);
+        SensorEventListener2 listener = new SensorEventListener2() {
+            @Override
+            public void onSensorChanged(SensorEvent event) {
+                eventReceived.countDown();
+            }
+
+            @Override
+            public void onAccuracyChanged(Sensor sensor, int accuracy) {
+            }
+
+            @Override
+            public void onFlushCompleted(Sensor sensor) {
+                flushReceived.countDown();
+            }
+        };
+        for (int i = 0; i < numSensors; ++i) {
+            Sensor sensor = mContinuousSensorList.get(i);
+            boolean result = mSensorManager.registerListener(listener, sensor,
+                                            SensorManager.SENSOR_DELAY_FASTEST);
+            assertTrue(result);
+        }
+        // Wait for N events and call flush.
+        eventReceived.await();
+        boolean result = mSensorManager.flush(listener);
+        assertTrue(result);
+        flushReceived.await();
+        mSensorManager.unregisterListener(listener);
+    }
+
+    private void assertSensorValues(Sensor sensor) {
         assertTrue(sensor.getMaximumRange() >= 0);
         assertTrue(sensor.getPower() >= 0);
         assertTrue(sensor.getResolution() >= 0);
         assertNotNull(sensor.getVendor());
         assertTrue(sensor.getVersion() > 0);
+        assertTrue(sensor.getFifoMaxEventCount() >= 0);
+        assertTrue(sensor.getFifoReservedEventCount() >= 0);
     }
 
     @SuppressWarnings("deprecation")
diff --git a/tests/tests/hardware/src/android/hardware/cts/helpers/SensorCtsHelper.java b/tests/tests/hardware/src/android/hardware/cts/helpers/SensorCtsHelper.java
new file mode 100644
index 0000000..9d860cd
--- /dev/null
+++ b/tests/tests/hardware/src/android/hardware/cts/helpers/SensorCtsHelper.java
@@ -0,0 +1,366 @@
+/*
+ * Copyright (C) 2013 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 android.hardware.cts.helpers;
+
+import android.content.Context;
+import android.hardware.Sensor;
+import android.hardware.SensorManager;
+import android.os.Environment;
+import android.util.Log;
+
+import java.io.DataOutputStream;
+import java.io.IOException;
+import java.text.SimpleDateFormat;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.Date;
+import java.util.List;
+import java.util.concurrent.TimeUnit;
+
+/**
+ * Set of static helper methods for CTS tests.
+ */
+public class SensorCtsHelper {
+
+    /**
+     * Private constructor for static class.
+     */
+    private SensorCtsHelper() {}
+
+    /**
+     * Get the value of the 95th percentile using nearest rank algorithm.
+     *
+     * @throws IllegalArgumentException if the collection is null or empty
+     */
+    public static <TValue extends Comparable<? super TValue>> TValue get95PercentileValue(
+            Collection<TValue> collection) {
+        validateCollection(collection);
+
+        List<TValue> arrayCopy = new ArrayList<TValue>(collection);
+        Collections.sort(arrayCopy);
+
+        // zero-based array index
+        int arrayIndex = (int) Math.round(arrayCopy.size() * 0.95 + .5) - 1;
+
+        return arrayCopy.get(arrayIndex);
+    }
+
+    /**
+     * Calculates the mean for each of the values in the set of TestSensorEvents.
+     *
+     * @throws IllegalArgumentException if there are no events
+     */
+    public static double[] getMeans(TestSensorEvent[] events) {
+        if (events.length == 0) {
+            throw new IllegalArgumentException("Events cannot be empty");
+        }
+
+        double[] means = new double[events[0].values.length];
+        for (TestSensorEvent event : events) {
+            for (int i = 0; i < means.length; i++) {
+                means[i] += event.values[i];
+            }
+        }
+        for (int i = 0; i < means.length; i++) {
+            means[i] /= events.length;
+        }
+        return means;
+    }
+
+    /**
+     * Calculates the variance for each of the values in the set of TestSensorEvents.
+     *
+     * @throws IllegalArgumentException if there are no events
+     */
+    public static double[] getVariances(TestSensorEvent[] events) {
+        double[] means = getMeans(events);
+        double[] variances = new double[means.length];
+        for (int i = 0; i < means.length; i++) {
+            Collection<Double> squaredDiffs = new ArrayList<Double>(events.length);
+            for (TestSensorEvent event : events) {
+                double diff = event.values[i] - means[i];
+                squaredDiffs.add(diff * diff);
+            }
+            variances[i] = getMean(squaredDiffs);
+        }
+        return variances;
+    }
+
+    /**
+     * Calculates the standard deviation for each of the values in the set of TestSensorEvents.
+     *
+     * @throws IllegalArgumentException if there are no events
+     */
+    public static double[] getStandardDeviations(TestSensorEvent[] events) {
+        double[] variances = getVariances(events);
+        double[] stdDevs = new double[variances.length];
+        for (int i = 0; i < variances.length; i++) {
+            stdDevs[i] = Math.sqrt(variances[i]);
+        }
+        return stdDevs;
+    }
+
+    /**
+     * Calculate the mean of a collection.
+     *
+     * @throws IllegalArgumentException if the collection is null or empty
+     */
+    public static <TValue extends Number> double getMean(Collection<TValue> collection) {
+        validateCollection(collection);
+
+        double sum = 0.0;
+        for(TValue value : collection) {
+            sum += value.doubleValue();
+        }
+        return sum / collection.size();
+    }
+
+    /**
+     * Calculate the variance of a collection.
+     *
+     * @throws IllegalArgumentException if the collection is null or empty
+     */
+    public static <TValue extends Number> double getVariance(Collection<TValue> collection) {
+        validateCollection(collection);
+
+        double mean = getMean(collection);
+        ArrayList<Double> squaredDifferences = new ArrayList<Double>();
+        for(TValue value : collection) {
+            double difference = mean - value.doubleValue();
+            squaredDifferences.add(Math.pow(difference, 2));
+        }
+
+        return getMean(squaredDifferences);
+    }
+
+    /**
+     * Calculate the standard deviation of a collection.
+     *
+     * @throws IllegalArgumentException if the collection is null or empty
+     */
+    public static <TValue extends Number> double getStandardDeviation(
+            Collection<TValue> collection) {
+        return Math.sqrt(getVariance(collection));
+    }
+
+    /**
+     * Get a list containing the delay between sensor events.
+     *
+     * @param events The array of {@link TestSensorEvent}.
+     * @return A list containing the delay between sensor events in nanoseconds.
+     */
+    public static List<Long> getTimestampDelayValues(TestSensorEvent[] events) {
+        if (events.length < 2) {
+            return new ArrayList<Long>();
+        }
+        List<Long> timestampDelayValues = new ArrayList<Long>(events.length - 1);
+        for (int i = 1; i < events.length; i++) {
+            timestampDelayValues.add(events[i].timestamp - events[i - 1].timestamp);
+        }
+        return timestampDelayValues;
+    }
+
+    /**
+     * Get a list containing the jitter values for a collection of sensor events.
+     *
+     * @param events The array of {@link TestSensorEvent}.
+     * @return A list containing the jitter values between each event.
+     * @throws IllegalArgumentException if the number of events is less that 2.
+     */
+    public static List<Double> getJitterValues(TestSensorEvent[] events) {
+        List<Long> timestampDelayValues = getTimestampDelayValues(events);
+        double averageTimestampDelay = getMean(timestampDelayValues);
+
+        List<Double> jitterValues = new ArrayList<Double>(timestampDelayValues.size());
+        for (long timestampDelay : timestampDelayValues) {
+            jitterValues.add(Math.abs(timestampDelay - averageTimestampDelay));
+        }
+        return jitterValues;
+    }
+
+    /**
+     * NOTE:
+     * - The bug report is usually written to /sdcard/Downloads
+     * - In order for the test Instrumentation to gather useful data the following permissions are
+     *   required:
+     *      . android.permission.READ_LOGS
+     *      . android.permission.DUMP
+     */
+    public static String collectBugreport(String collectorId)
+            throws IOException, InterruptedException {
+        String commands[] = new String[] {
+                "dumpstate",
+                "dumpsys",
+                "logcat -d -v threadtime",
+                "exit"
+        };
+
+        SimpleDateFormat dateFormat = new SimpleDateFormat("M-d-y_H:m:s.S");
+        String outputFile = String.format(
+                "%s/%s_%s",
+                Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS),
+                collectorId,
+                dateFormat.format(new Date()));
+
+        DataOutputStream processOutput = null;
+        try {
+            Process process = Runtime.getRuntime().exec("/system/bin/sh -");
+            processOutput = new DataOutputStream(process.getOutputStream());
+
+            for(String command : commands) {
+                processOutput.writeBytes(String.format("%s >> %s\n", command, outputFile));
+            }
+
+            processOutput.flush();
+            process.waitFor();
+
+            Log.d(collectorId, String.format("Bug-Report collected at: %s", outputFile));
+        } finally {
+            if(processOutput != null) {
+                try {
+                    processOutput.close();
+                } catch(IOException e) {}
+            }
+        }
+
+        return outputFile;
+    }
+
+    /**
+     * Get the default sensor for a given type.
+     */
+    public static Sensor getSensor(Context context, int sensorType) {
+        SensorManager sensorManager = getSensorManager(context);
+        Sensor sensor = sensorManager.getDefaultSensor(sensorType);
+        if(sensor == null) {
+            throw new SensorNotSupportedException(sensorType);
+        }
+        return sensor;
+    }
+
+    /**
+     * Get all the sensors for a given type.
+     */
+    public static List<Sensor> getSensors(Context context, int sensorType) {
+        SensorManager sensorManager = getSensorManager(context);
+        List<Sensor> sensors = sensorManager.getSensorList(sensorType);
+        if (sensors.size() == 0) {
+            throw new SensorNotSupportedException(sensorType);
+        }
+        return sensors;
+    }
+
+    /**
+     * Convert a period to frequency in Hz.
+     */
+    public static <TValue extends Number> double getFrequency(TValue period, TimeUnit unit) {
+        return 1000000000 / (TimeUnit.NANOSECONDS.convert(1, unit) * period.doubleValue());
+    }
+
+    /**
+     * Convert a frequency in Hz into a period.
+     */
+    public static <TValue extends Number> double getPeriod(TValue frequency, TimeUnit unit) {
+        return 1000000000 / (TimeUnit.NANOSECONDS.convert(1, unit) * frequency.doubleValue());
+    }
+
+    /**
+     * Convert number of seconds to number of microseconds.
+     */
+    public static int getSecondsAsMicroSeconds(int seconds) {
+        return (int) TimeUnit.MICROSECONDS.convert(seconds, TimeUnit.SECONDS);
+    }
+
+    /**
+     * Format an assertion message.
+     *
+     * @param verificationName The verification name
+     * @param sensor The sensor under test
+     * @param format The additional format string, use "" if blank
+     * @param params The additional format params
+     * @return The formatted string.
+     */
+    public static String formatAssertionMessage(
+            String verificationName,
+            Sensor sensor,
+            String format,
+            Object ... params) {
+        return formatAssertionMessage(verificationName, null, sensor, format, params);
+    }
+
+    /**
+     * Format an assertion message.
+     *
+     * @param verificationName The verification name
+     * @param test The test, optional
+     * @param sensor The sensor under test
+     * @param format The additional format string, use "" if blank
+     * @param params The additional format params
+     * @return The formatted string.
+     */
+    public static String formatAssertionMessage(
+            String verificationName,
+            SensorTestOperation test,
+            Sensor sensor,
+            String format,
+            Object ... params) {
+        StringBuilder builder = new StringBuilder();
+
+        // identify the verification
+        builder.append(verificationName);
+        builder.append("| ");
+        // add test context information
+        if(test != null) {
+            builder.append(test.toString());
+            builder.append("| ");
+        }
+        // add context information
+        builder.append(SensorTestInformation.getSensorName(sensor.getType()));
+        builder.append(", handle:");
+        builder.append(sensor.getHandle());
+        builder.append("| ");
+        // add the custom formatting
+        builder.append(String.format(format, params));
+
+        return builder.toString();
+    }
+
+    /**
+     * Validate that a collection is not null or empty.
+     *
+     * @throws IllegalStateException if collection is null or empty.
+     */
+    private static <T> void validateCollection(Collection<T> collection) {
+        if(collection == null || collection.size() == 0) {
+            throw new IllegalStateException("Collection cannot be null or empty");
+        }
+    }
+
+    /**
+     * Get the SensorManager.
+     *
+     * @throws IllegalStateException if the SensorManager is not present in the system.
+     */
+    private static SensorManager getSensorManager(Context context) {
+        SensorManager sensorManager = (SensorManager) context.getSystemService(
+                Context.SENSOR_SERVICE);
+        if(sensorManager == null) {
+            throw new IllegalStateException("SensorService is not present in the system.");
+        }
+        return sensorManager;
+    }
+}
diff --git a/tests/tests/hardware/src/android/hardware/cts/helpers/SensorCtsHelperTest.java b/tests/tests/hardware/src/android/hardware/cts/helpers/SensorCtsHelperTest.java
new file mode 100644
index 0000000..ccfaf2a
--- /dev/null
+++ b/tests/tests/hardware/src/android/hardware/cts/helpers/SensorCtsHelperTest.java
@@ -0,0 +1,266 @@
+/*
+ * Copyright (C) 2014 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 android.hardware.cts.helpers;
+
+import junit.framework.TestCase;
+
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.HashSet;
+import java.util.List;
+import java.util.concurrent.TimeUnit;
+
+/**
+ * Unit tests for the {@link SensorCtsHelper} class.
+ */
+public class SensorCtsHelperTest extends TestCase {
+
+    /**
+     * Test {@link SensorCtsHelper#get95PercentileValue(Collection)}.
+     */
+    public void testGet95PercentileValue() {
+        Collection<Integer> values = new HashSet<Integer>();
+        for (int i = 0; i < 100; i++) {
+            values.add(i);
+        }
+        assertEquals(95, (int) SensorCtsHelper.get95PercentileValue(values));
+
+        values = new HashSet<Integer>();
+        for (int i = 0; i < 1000; i++) {
+            values.add(i);
+        }
+        assertEquals(950, (int) SensorCtsHelper.get95PercentileValue(values));
+
+        values = new HashSet<Integer>();
+        for (int i = 0; i < 100; i++) {
+            values.add(i * i);
+        }
+        assertEquals(95 * 95, (int) SensorCtsHelper.get95PercentileValue(values));
+    }
+
+    /**
+     * Test {@link SensorCtsHelper#getMeans(TestSensorEvent[])}.
+     */
+    public void testGetMeans() {
+        long[] timestamps = {0, 1, 2, 3, 4};
+
+        float[] values = {0, 1, 2, 3, 4};  // 2.0
+        double[] means = SensorCtsHelper.getMeans(getSensorEvents(timestamps, values));
+        assertEquals(1, means.length);
+        assertEquals(2.0, means[0], 0.00001);
+
+        float[] values1 = {0, 1, 2, 3, 4};  // 2.0
+        float[] values2 = {1, 2, 3, 4, 5};  // 3.0
+        float[] values3 = {0, 1, 4, 9, 16};  // 6.0
+        means = SensorCtsHelper.getMeans(
+                getSensorEvents(timestamps, values1, values2, values3));
+        assertEquals(3, means.length);
+        assertEquals(2.0, means[0], 0.00001);
+        assertEquals(3.0, means[1], 0.00001);
+        assertEquals(6.0, means[2], 0.00001);
+    }
+
+    /**
+     * Test {@link SensorCtsHelper#getVariances(TestSensorEvent[])}.
+     */
+    public void testGetVariences() {
+        long[] timestamps = {0, 1, 2, 3, 4};
+
+        float[] values = {0, 1, 2, 3, 4};  // 2.0
+        double[] variances = SensorCtsHelper.getVariances(getSensorEvents(timestamps, values));
+        assertEquals(1, variances.length);
+        assertEquals(2.0, variances[0], 0.00001);
+
+        float[] values1 = {0, 1, 2, 3, 4};  // 2.0
+        float[] values2 = {1, 2, 3, 4, 5};  // 2.0
+        float[] values3 = {0, 2, 4, 6, 8};  // 8.0
+        variances = SensorCtsHelper.getVariances(
+                getSensorEvents(timestamps, values1, values2, values3));
+        assertEquals(3, variances.length);
+        assertEquals(2.0, variances[0], 0.00001);
+        assertEquals(2.0, variances[1], 0.00001);
+        assertEquals(8.0, variances[2], 0.00001);
+    }
+
+    /**
+     * Test {@link SensorCtsHelper#getStandardDeviations(TestSensorEvent[])}.
+     */
+    public void testGetStandardDeviations() {
+        long[] timestamps = {0, 1, 2, 3, 4};
+
+        float[] values = {0, 1, 2, 3, 4};  // sqrt(2.0)
+        double[] stddev = SensorCtsHelper.getStandardDeviations(
+                getSensorEvents(timestamps, values));
+        assertEquals(1, stddev.length);
+        assertEquals(Math.sqrt(2.0), stddev[0], 0.00001);
+
+        float[] values1 = {0, 1, 2, 3, 4};  // sqrt(2.0)
+        float[] values2 = {1, 2, 3, 4, 5};  // sqrt(2.0)
+        float[] values3 = {0, 2, 4, 6, 8};  // sqrt(8.0)
+        stddev = SensorCtsHelper.getStandardDeviations(
+                getSensorEvents(timestamps, values1, values2, values3));
+        assertEquals(3, stddev.length);
+        assertEquals(Math.sqrt(2.0), stddev[0], 0.00001);
+        assertEquals(Math.sqrt(2.0), stddev[1], 0.00001);
+        assertEquals(Math.sqrt(8.0), stddev[2], 0.00001);
+    }
+
+    /**
+     * Test {@link SensorCtsHelper#getMean(Collection)}.
+     */
+    public void testGetMean() {
+        List<Integer> values = Arrays.asList(0, 1, 2, 3, 4);
+        double mean = SensorCtsHelper.getMean(values);
+        assertEquals(2.0, mean, 0.00001);
+
+        values = Arrays.asList(1, 2, 3, 4, 5);
+        mean = SensorCtsHelper.getMean(values);
+        assertEquals(3.0, mean, 0.00001);
+
+        values = Arrays.asList(0, 1, 4, 9, 16);
+        mean = SensorCtsHelper.getMean(values);
+        assertEquals(6.0, mean, 0.00001);
+    }
+
+    /**
+     * Test {@link SensorCtsHelper#getVariance(Collection)}.
+     */
+    public void testGetVariance() {
+        List<Integer> values = Arrays.asList(0, 1, 2, 3, 4);
+        double variance = SensorCtsHelper.getVariance(values);
+        assertEquals(2.0, variance, 0.00001);
+
+        values = Arrays.asList(1, 2, 3, 4, 5);
+        variance = SensorCtsHelper.getVariance(values);
+        assertEquals(2.0, variance, 0.00001);
+
+        values = Arrays.asList(0, 2, 4, 6, 8);
+        variance = SensorCtsHelper.getVariance(values);
+        assertEquals(8.0, variance, 0.00001);
+    }
+
+    /**
+     * Test {@link SensorCtsHelper#getStandardDeviation(Collection)}.
+     */
+    public void testGetStandardDeviation() {
+        List<Integer> values = Arrays.asList(0, 1, 2, 3, 4);
+        double stddev = SensorCtsHelper.getStandardDeviation(values);
+        assertEquals(Math.sqrt(2.0), stddev, 0.00001);
+
+        values = Arrays.asList(1, 2, 3, 4, 5);
+        stddev = SensorCtsHelper.getStandardDeviation(values);
+        assertEquals(Math.sqrt(2.0), stddev, 0.00001);
+
+        values = Arrays.asList(0, 2, 4, 6, 8);
+        stddev = SensorCtsHelper.getStandardDeviation(values);
+        assertEquals(Math.sqrt(8.0), stddev, 0.00001);
+    }
+
+    /**
+     * Test {@link SensorCtsHelper#getTimestampDelayValues(TestSensorEvent[])}.
+     */
+    public void testGetTimestampDelayValues() {
+        float[] values = {0, 1, 2, 3, 4};
+
+        long[] timestamps = {0, 0, 1, 3, 100};
+        List<Long> timestampDelayValues = SensorCtsHelper.getTimestampDelayValues(
+                getSensorEvents(timestamps, values));
+        assertEquals(4, timestampDelayValues.size());
+        assertEquals(0, (long) timestampDelayValues.get(0));
+        assertEquals(1, (long) timestampDelayValues.get(1));
+        assertEquals(2, (long) timestampDelayValues.get(2));
+        assertEquals(97, (long) timestampDelayValues.get(3));
+    }
+
+    /**
+     * Test {@link SensorCtsHelper#getFrequency(Number, TimeUnit)}.
+     */
+    public void testGetFrequency() {
+        assertEquals(1.0, SensorCtsHelper.getFrequency(1, TimeUnit.SECONDS), 0.001);
+        assertEquals(10.0, SensorCtsHelper.getFrequency(0.1, TimeUnit.SECONDS), 0.001);
+        assertEquals(10.0, SensorCtsHelper.getFrequency(100, TimeUnit.MILLISECONDS), 0.001);
+        assertEquals(1000.0, SensorCtsHelper.getFrequency(1, TimeUnit.MILLISECONDS), 0.001);
+        assertEquals(10000.0, SensorCtsHelper.getFrequency(0.1, TimeUnit.MILLISECONDS), 0.001);
+        assertEquals(10000.0, SensorCtsHelper.getFrequency(100, TimeUnit.MICROSECONDS), 0.001);
+        assertEquals(1000000.0, SensorCtsHelper.getFrequency(1, TimeUnit.MICROSECONDS), 0.001);
+        assertEquals(10000000.0, SensorCtsHelper.getFrequency(0.1, TimeUnit.MICROSECONDS), 0.001);
+        assertEquals(10000000.0, SensorCtsHelper.getFrequency(100, TimeUnit.NANOSECONDS), 0.001);
+        assertEquals(1000000000.0, SensorCtsHelper.getFrequency(1, TimeUnit.NANOSECONDS), 0.001);
+    }
+
+    /**
+     * Test {@link SensorCtsHelper#getPeriod(Number, TimeUnit)}.
+     */
+    public void testGetPeriod() {
+        assertEquals(1.0, SensorCtsHelper.getPeriod(1, TimeUnit.SECONDS), 0.001);
+        assertEquals(0.1, SensorCtsHelper.getPeriod(10, TimeUnit.SECONDS), 0.001);
+        assertEquals(100, SensorCtsHelper.getPeriod(10, TimeUnit.MILLISECONDS), 0.001);
+        assertEquals(1, SensorCtsHelper.getPeriod(1000, TimeUnit.MILLISECONDS), 0.001);
+        assertEquals(0.1, SensorCtsHelper.getPeriod(10000, TimeUnit.MILLISECONDS), 0.001);
+        assertEquals(100, SensorCtsHelper.getPeriod(10000, TimeUnit.MICROSECONDS), 0.001);
+        assertEquals(1, SensorCtsHelper.getPeriod(1000000, TimeUnit.MICROSECONDS), 0.001);
+        assertEquals(0.1, SensorCtsHelper.getPeriod(10000000, TimeUnit.MICROSECONDS), 0.001);
+        assertEquals(100, SensorCtsHelper.getPeriod(10000000, TimeUnit.NANOSECONDS), 0.001);
+        assertEquals(1, SensorCtsHelper.getPeriod(1000000000, TimeUnit.NANOSECONDS), 0.001);
+    }
+
+    /**
+     * Test {@link SensorCtsHelper#getJitterValues(TestSensorEvent[])}.
+     */
+    public void testGetJitterValues() {
+        float[] values = {0, 1, 2, 3, 4};
+
+        long[] timestamps1 = {0, 1, 2, 3, 4};
+        List<Double> jitterValues = SensorCtsHelper.getJitterValues(
+                getSensorEvents(timestamps1, values));
+        assertEquals(4, jitterValues.size());
+        assertEquals(0.0, (double) jitterValues.get(0));
+        assertEquals(0.0, (double) jitterValues.get(1));
+        assertEquals(0.0, (double) jitterValues.get(2));
+        assertEquals(0.0, (double) jitterValues.get(3));
+
+        long[] timestamps2 = {0, 0, 2, 4, 4};
+        jitterValues = SensorCtsHelper.getJitterValues(
+                getSensorEvents(timestamps2, values));
+        assertEquals(4, jitterValues.size());
+        assertEquals(1.0, (double) jitterValues.get(0));
+        assertEquals(1.0, (double) jitterValues.get(1));
+        assertEquals(1.0, (double) jitterValues.get(2));
+        assertEquals(1.0, (double) jitterValues.get(3));
+
+        long[] timestamps3 = {0, 1, 4, 9, 16};
+        jitterValues = SensorCtsHelper.getJitterValues(
+                getSensorEvents(timestamps3, values));
+        assertEquals(4, jitterValues.size());
+        assertEquals(3.0, (double) jitterValues.get(0));
+        assertEquals(1.0, (double) jitterValues.get(1));
+        assertEquals(1.0, (double) jitterValues.get(2));
+        assertEquals(3.0, (double) jitterValues.get(3));
+    }
+
+    private TestSensorEvent[] getSensorEvents(long[] timestamps, float[] ... values) {
+        TestSensorEvent[] events = new TestSensorEvent[timestamps.length];
+        for (int i = 0; i < timestamps.length; i++) {
+            float[] eventValues = new float[values.length];
+            for (int j = 0; j < values.length; j++) {
+                eventValues[j] = values[j][i];
+            }
+            events[i] = new TestSensorEvent(null, timestamps[i], 0, eventValues);
+        }
+        return events;
+    }
+}
diff --git a/tests/tests/hardware/src/android/hardware/cts/helpers/SensorManagerTestVerifier.java b/tests/tests/hardware/src/android/hardware/cts/helpers/SensorManagerTestVerifier.java
new file mode 100644
index 0000000..85f4f0e
--- /dev/null
+++ b/tests/tests/hardware/src/android/hardware/cts/helpers/SensorManagerTestVerifier.java
@@ -0,0 +1,268 @@
+/*
+ * Copyright (C) 2013 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 android.hardware.cts.helpers;
+
+import android.content.Context;
+import android.hardware.Sensor;
+import android.hardware.SensorEvent;
+import android.hardware.SensorEventListener2;
+import android.hardware.SensorManager;
+
+import junit.framework.Assert;
+
+import java.io.Closeable;
+import java.security.InvalidParameterException;
+import java.util.concurrent.ConcurrentLinkedDeque;
+import java.util.concurrent.CountDownLatch;
+import java.util.concurrent.TimeUnit;
+
+/**
+ * Test class to wrap SensorManager with verifications and test checks.
+ * This class allows to perform operations in the Sensor Manager and performs all the expected test
+ * verification on behalf of the owner.
+ * An object can be used to quickly writing tests that focus on the scenario that needs to be
+ * verified, and not in the implicit verifications that need to take place at any step.
+ */
+public class SensorManagerTestVerifier implements Closeable, SensorEventListener2 {
+    private final int WAIT_TIMEOUT_IN_SECONDS = 30;
+
+    private final SensorManager mSensorManager;
+    private final Sensor mSensorUnderTest;
+    private final int mSamplingRateInUs;
+    private final int mReportLatencyInUs;
+
+    private TestSensorListener mEventListener;
+
+    /**
+     * Construction methods.
+     */
+    public SensorManagerTestVerifier(
+            Context context,
+            int sensorType,
+            int samplingRateInUs,
+            int reportLatencyInUs) {
+        mSensorManager = (SensorManager)context.getSystemService(Context.SENSOR_SERVICE);
+        mSensorUnderTest = SensorCtsHelper.getSensor(context, sensorType);
+        mSamplingRateInUs = samplingRateInUs;
+        mReportLatencyInUs = reportLatencyInUs;
+
+        mEventListener = new TestSensorListener(mSensorUnderTest, this);
+    }
+
+    /**
+     * {@inheritDoc}
+     * <p>
+     * Available for subclasses to implement if they need access to the raw eventing model.
+     * </p>
+     */
+    @Override
+    public void onAccuracyChanged(Sensor sensor, int accuracy) {}
+
+    /**
+     * {@inheritDoc}
+     * <p>
+     * Available for subclasses to implement if they need access to the raw eventing model.
+     * </p>
+     */
+    @Override
+    public void onSensorChanged(SensorEvent event) {}
+
+    /**
+     * {@inheritDoc}
+     * <p>
+     * Available for subclasses to implement if they need access to the raw eventing model.
+     * </p>
+     */
+    @Override
+    public void onFlushCompleted(Sensor sensor) {}
+
+    /**
+     * Closes the {@link SensorManagerTestVerifier} and unregister the listener.
+     */
+    @Override
+    public void close() {
+        this.unregisterListener();
+        mEventListener = null;
+    }
+
+    /**
+     * Get the sensor under test.
+     */
+    public Sensor getUnderlyingSensor() {
+        return mSensorUnderTest;
+    }
+
+    /**
+     * Register the
+     * @param debugInfo
+     */
+    public void registerListener(String debugInfo) {
+        boolean result = mSensorManager.registerListener(
+                mEventListener,
+                mSensorUnderTest,
+                mSamplingRateInUs,
+                mReportLatencyInUs);
+        String message = SensorCtsHelper.formatAssertionMessage(
+                "registerListener",
+                mSensorUnderTest,
+                debugInfo);
+        Assert.assertTrue(message, result);
+    }
+
+    public void registerListener() {
+        this.registerListener("");
+    }
+
+    public void unregisterListener() {
+        mSensorManager.unregisterListener(mEventListener, mSensorUnderTest);
+    }
+
+    public TestSensorEvent[] getEvents(int count, String debugInfo) {
+        mEventListener.waitForEvents(count, debugInfo);
+        TestSensorEvent[] events = mEventListener.getAllEvents();
+        mEventListener.clearEvents();
+
+        return events;
+    }
+
+    public TestSensorEvent[] getEvents(int count) {
+        return this.getEvents(count, "");
+    }
+
+    public TestSensorEvent[] getQueuedEvents() {
+        return mEventListener.getAllEvents();
+    }
+
+    public TestSensorEvent[] collectEvents(int eventCount, String debugInfo) {
+        this.registerListener(debugInfo);
+        TestSensorEvent[] events = this.getEvents(eventCount, debugInfo);
+        this.unregisterListener();
+
+        return events;
+    }
+
+    public TestSensorEvent[] collectEvents(int eventCount) {
+        return this.collectEvents(eventCount, "");
+    }
+
+    public void startFlush() {
+        String message = SensorCtsHelper.formatAssertionMessage(
+                "Flush",
+                mSensorUnderTest,
+                "" /* format */);
+        Assert.assertTrue(message, mSensorManager.flush(mEventListener));
+    }
+
+    public void waitForFlush() throws InterruptedException {
+        mEventListener.waitForFlushComplete();
+    }
+
+    public void flush() throws InterruptedException {
+        this.startFlush();
+        this.waitForFlush();
+    }
+
+    /**
+     * Definition of support test classes.
+     */
+    private class TestSensorListener implements SensorEventListener2 {
+        private final Sensor mSensorUnderTest;
+        private final SensorEventListener2 mListener;
+
+        private final ConcurrentLinkedDeque<TestSensorEvent> mSensorEventsList =
+                new ConcurrentLinkedDeque<TestSensorEvent>();
+
+        private volatile CountDownLatch mEventLatch;
+        private volatile CountDownLatch mFlushLatch = new CountDownLatch(1);
+
+        public TestSensorListener(Sensor sensor, SensorEventListener2 listener) {
+            if(sensor == null) {
+                throw new InvalidParameterException("sensor cannot be null");
+            }
+            if(listener == null) {
+                throw new InvalidParameterException("listener cannot be null");
+            }
+            mSensorUnderTest = sensor;
+            mListener = listener;
+        }
+
+        @Override
+        public void onSensorChanged(SensorEvent event) {
+            // copy the event because there is no better way to do this in the platform
+            mSensorEventsList.addLast(new TestSensorEvent(event));
+            if(mEventLatch != null) {
+                mEventLatch.countDown();
+            }
+            mListener.onSensorChanged(event);
+        }
+
+        @Override
+        public void onAccuracyChanged(Sensor sensor, int accuracy) {
+            mListener.onAccuracyChanged(sensor, accuracy);
+        }
+
+        @Override
+        public void onFlushCompleted(Sensor sensor) {
+            CountDownLatch latch = mFlushLatch;
+            mFlushLatch = new CountDownLatch(1);
+            if(latch != null) {
+                latch.countDown();
+            }
+            mListener.onFlushCompleted(sensor);
+        }
+
+        public void waitForFlushComplete() throws InterruptedException {
+            CountDownLatch latch = mFlushLatch;
+            if(latch != null) {
+                String message = SensorCtsHelper.formatAssertionMessage(
+                        "WaitForFlush",
+                        mSensorUnderTest,
+                        "" /* format */);
+                Assert.assertTrue(message, latch.await(WAIT_TIMEOUT_IN_SECONDS, TimeUnit.SECONDS));
+            }
+        }
+
+        public void waitForEvents(int eventCount, String timeoutInfo) {
+            mEventLatch = new CountDownLatch(eventCount);
+            this.clearEvents();
+            try {
+                boolean awaitCompleted = mEventLatch.await(WAIT_TIMEOUT_IN_SECONDS, TimeUnit.SECONDS);
+                // TODO: can we collect bug reports on error based only if needed? env var?
+
+                String message = SensorCtsHelper.formatAssertionMessage(
+                        "WaitForEvents",
+                        mSensorUnderTest,
+                        "count:%d, available:%d, %s",
+                        eventCount,
+                        mSensorEventsList.size(),
+                        timeoutInfo);
+                Assert.assertTrue(message, awaitCompleted);
+            } catch(InterruptedException e) {
+            } finally {
+                mEventLatch = null;
+            }
+        }
+
+        public TestSensorEvent[] getAllEvents() {
+            return mSensorEventsList.toArray(new TestSensorEvent[0]);
+        }
+
+        public void clearEvents() {
+            mSensorEventsList.clear();
+        }
+    }
+}
diff --git a/tests/tests/hardware/src/android/hardware/cts/helpers/SensorNotSupportedException.java b/tests/tests/hardware/src/android/hardware/cts/helpers/SensorNotSupportedException.java
new file mode 100644
index 0000000..4c413d7
--- /dev/null
+++ b/tests/tests/hardware/src/android/hardware/cts/helpers/SensorNotSupportedException.java
@@ -0,0 +1,31 @@
+/*
+ * Copyright (C) 2013 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 android.hardware.cts.helpers;
+
+/**
+ * Exception that indicates that a given sensor is not supported in the device.
+ * This exception can be caught in tests to safely ignore test cases that are not necessary in a
+ * given environment.
+ */
+public class SensorNotSupportedException extends RuntimeException {
+    public SensorNotSupportedException(int sensorType) {
+        super(String.format(
+                "Sensor '%s' of type %d is not supported.",
+                SensorTestInformation.getSensorName(sensorType),
+                sensorType));
+    }
+}
diff --git a/tests/tests/hardware/src/android/hardware/cts/helpers/SensorTestCase.java b/tests/tests/hardware/src/android/hardware/cts/helpers/SensorTestCase.java
new file mode 100644
index 0000000..4bd0eed
--- /dev/null
+++ b/tests/tests/hardware/src/android/hardware/cts/helpers/SensorTestCase.java
@@ -0,0 +1,40 @@
+/*
+ * Copyright (C) 2013 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 android.hardware.cts.helpers;
+
+import android.test.AndroidTestCase;
+
+import android.util.Log;
+
+/**
+ * Test Case class that handles gracefully sensors that are not available in the device.
+ */
+public abstract class SensorTestCase extends AndroidTestCase {
+    protected final String LOG_TAG = "TestRunner";
+
+    protected SensorTestCase() {}
+
+    @Override
+    public void runTest() throws Throwable {
+        try {
+            super.runTest();
+        } catch (SensorNotSupportedException e) {
+            // the sensor is not supported/available in the device, log a warning and skip the test
+            Log.w(LOG_TAG, e.getMessage());
+        }
+    }
+}
diff --git a/tests/tests/hardware/src/android/hardware/cts/helpers/SensorTestInformation.java b/tests/tests/hardware/src/android/hardware/cts/helpers/SensorTestInformation.java
new file mode 100644
index 0000000..90e0706
--- /dev/null
+++ b/tests/tests/hardware/src/android/hardware/cts/helpers/SensorTestInformation.java
@@ -0,0 +1,152 @@
+/*
+ * Copyright (C) 2013 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 android.hardware.cts.helpers;
+
+import android.content.Context;
+
+import android.hardware.Sensor;
+
+import java.security.InvalidParameterException;
+
+/**
+ * A 'property' bag of sensor information used for testing purposes.
+ */
+public class SensorTestInformation {
+    private SensorTestInformation() {}
+
+    public static int getAxisCount(int sensorType) {
+        switch(sensorType) {
+            case Sensor.TYPE_ACCELEROMETER:
+                return 3;
+            case Sensor.TYPE_MAGNETIC_FIELD:
+                return 3;
+//            case Sensor.TYPE_ORIENTATION:
+//                return "Orientation";
+            case Sensor.TYPE_GYROSCOPE:
+                return 3;
+//            case Sensor.TYPE_LIGHT:
+//                return "Light";
+//            case Sensor.TYPE_PRESSURE:
+//                return "Pressure";
+//            case Sensor.TYPE_TEMPERATURE:
+//                return "Temperature";
+//            case Sensor.TYPE_PROXIMITY:
+//                return "Proximity";
+            case Sensor.TYPE_GRAVITY:
+                return 3;
+            case Sensor.TYPE_LINEAR_ACCELERATION:
+                return 3;
+//            case Sensor.TYPE_ROTATION_VECTOR:
+//                return "Rotation Vector";
+//            case Sensor.TYPE_RELATIVE_HUMIDITY:
+//                return "Relative Humidity";
+//            case Sensor.TYPE_AMBIENT_TEMPERATURE:
+//                return "Ambient Temperature";
+//            case Sensor.TYPE_MAGNETIC_FIELD_UNCALIBRATED:
+//                return "Magnetic Field Uncalibrated";
+//            case Sensor.TYPE_GAME_ROTATION_VECTOR:
+//                return "Game Rotation Vector";
+//            case Sensor.TYPE_GYROSCOPE_UNCALIBRATED:
+//                return "Gyroscope Uncalibrated";
+//            case Sensor.TYPE_SIGNIFICANT_MOTION:
+//                return "Significant Motion";
+//            case Sensor.TYPE_STEP_DETECTOR:
+//                return "Step Detector";
+//            case Sensor.TYPE_STEP_COUNTER:
+//                return "Step Counter";
+//            case Sensor.TYPE_GEOMAGNETIC_ROTATION_VECTOR:
+//                return "Geomagnetic Rotation Vector";
+            default:
+                throw new InvalidParameterException(
+                        String.format("Invalid sensorType:%d. Unable to find axis count.", sensorType));
+        }
+    }
+
+    public static String getSensorName(int sensorType) {
+        String name;
+        switch(sensorType) {
+            case Sensor.TYPE_ACCELEROMETER:
+                name = "Accelerometer";
+                break;
+            case Sensor.TYPE_MAGNETIC_FIELD:
+                name = "Magnetic Field";
+                break;
+            case Sensor.TYPE_ORIENTATION:
+                name = "Orientation";
+                break;
+            case Sensor.TYPE_GYROSCOPE:
+                name = "Gyroscope";
+                break;
+            case Sensor.TYPE_LIGHT:
+                name = "Light";
+                break;
+            case Sensor.TYPE_PRESSURE:
+                name = "Pressure";
+                break;
+            case Sensor.TYPE_TEMPERATURE:
+                name = "Temperature";
+                break;
+            case Sensor.TYPE_PROXIMITY:
+                name = "Proximity";
+                break;
+            case Sensor.TYPE_GRAVITY:
+                name = "Gravity";
+                break;
+            case Sensor.TYPE_LINEAR_ACCELERATION:
+                name = "Linear Acceleration";
+                break;
+            case Sensor.TYPE_ROTATION_VECTOR:
+                name = "Rotation Vector";
+                break;
+            case Sensor.TYPE_RELATIVE_HUMIDITY:
+                name = "Relative Humidity";
+                break;
+            case Sensor.TYPE_AMBIENT_TEMPERATURE:
+                name = "Ambient Temperature";
+                break;
+            case Sensor.TYPE_MAGNETIC_FIELD_UNCALIBRATED:
+                name = "Magnetic Field Uncalibrated";
+                break;
+            case Sensor.TYPE_GAME_ROTATION_VECTOR:
+                name = "Game Rotation Vector";
+                break;
+            case Sensor.TYPE_GYROSCOPE_UNCALIBRATED:
+                name = "Gyroscope Uncalibrated";
+                break;
+            case Sensor.TYPE_SIGNIFICANT_MOTION:
+                name = "Significant Motion";
+                break;
+            case Sensor.TYPE_STEP_DETECTOR:
+                name = "Step Detector";
+                break;
+            case Sensor.TYPE_STEP_COUNTER:
+                name = "Step Counter";
+                break;
+            case Sensor.TYPE_GEOMAGNETIC_ROTATION_VECTOR:
+                name = "Geomagnetic Rotation Vector";
+                break;
+            default:
+                name = "<Unknown>";
+        }
+        return String.format("%s (%d)", name, sensorType);
+    }
+
+    public static int getMaxSamplingRateInUs(Context context, int sensorType) {
+        Sensor sensor = SensorCtsHelper.getSensor(context, sensorType);
+        return sensor.getMinDelay();
+    }
+}
diff --git a/tests/tests/hardware/src/android/hardware/cts/helpers/SensorTestOperation.java b/tests/tests/hardware/src/android/hardware/cts/helpers/SensorTestOperation.java
new file mode 100644
index 0000000..902c802
--- /dev/null
+++ b/tests/tests/hardware/src/android/hardware/cts/helpers/SensorTestOperation.java
@@ -0,0 +1,133 @@
+/*
+ * Copyright (C) 2013 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 android.hardware.cts.helpers;
+
+import junit.framework.Assert;
+
+import java.util.concurrent.TimeUnit;
+
+/**
+ * Base test class that supports a basic test operation performed in a sensor.
+ * The class follows a command patter as a base for its work.
+ *
+ * Remarks:
+ * - The class wraps verifications and test checks that are needed to verify the operation.
+ * - The operation runs in a background thread where it performs the bulk of its work.
+ */
+public abstract class SensorTestOperation {
+    private final SensorTestExceptionHandler mExceptionHandler = new SensorTestExceptionHandler();
+
+    protected final String LOG_TAG = "TestRunner";
+    protected final long WAIT_TIMEOUT_IN_MILLISECONDS =
+            TimeUnit.MILLISECONDS.convert(5, TimeUnit.MINUTES);
+
+    private Thread mThread;
+
+    protected int mIterationCount;
+
+    /**
+     * Public API definition.
+     */
+    public synchronized void start() throws Throwable {
+        if(mThread != null) {
+            throw new IllegalStateException("The operation has already been started.");
+        }
+
+        mThread = new Thread() {
+            @Override
+            public void run() {
+                try {
+                    doWork();
+                } catch (Throwable e) {
+                    // log the exception so it can be sent back to the appropriate test thread
+                    this.getUncaughtExceptionHandler().uncaughtException(this, e);
+                }
+            }
+        };
+
+        ++mIterationCount;
+        mThread.setUncaughtExceptionHandler(mExceptionHandler);
+        mThread.start();
+    }
+
+    public synchronized void waitForCompletion() throws Throwable {
+        if(mThread == null) {
+            // let a wait on a stopped operation to be no-op
+            return;
+        }
+        mThread.join(WAIT_TIMEOUT_IN_MILLISECONDS);
+        if(mThread.isAlive()) {
+            // the test is hung so collect the state of the system and fail
+            String operationName = this.getClass().getSimpleName();
+            String message = String.format(
+                    "%s hung. %s. BugReport collected at: %s",
+                    operationName,
+                    this.toString(),
+                    SensorCtsHelper.collectBugreport(operationName));
+            Assert.fail(message);
+        }
+        mThread = null;
+        mExceptionHandler.rethrow();
+    }
+
+    public void execute() throws Throwable {
+        this.start();
+        this.waitForCompletion();
+    }
+
+    @Override
+    public String toString() {
+        return String.format("ThreadId:%d, Iteration:%d", mThread.getId(), mIterationCount);
+    }
+
+    /**
+     * Subclasses implement this method to perform the work associated with the operation they
+     * represent.
+     */
+    protected abstract void doWork() throws Throwable;
+
+    /**
+     * Private helpers.
+     */
+    private class SensorTestExceptionHandler implements Thread.UncaughtExceptionHandler {
+        private final Object mLock = new Object();
+
+        private Throwable mThrowable;
+
+        @Override
+        public void uncaughtException(Thread thread, Throwable throwable) {
+            synchronized(mLock) {
+                // the fist exception is in general the one that is more interesting
+                if(mThrowable != null) {
+                    return;
+                }
+                mThrowable = throwable;
+            }
+        }
+
+        public void rethrow() throws Throwable {
+            Throwable throwable;
+            synchronized(mLock) {
+                throwable = mThrowable;
+                mThrowable = null;
+            }
+            if(throwable != null) {
+                throw throwable;
+            }
+        }
+    }
+}
diff --git a/tests/tests/hardware/src/android/hardware/cts/helpers/SensorVerificationHelper.java b/tests/tests/hardware/src/android/hardware/cts/helpers/SensorVerificationHelper.java
new file mode 100644
index 0000000..d1013e0
--- /dev/null
+++ b/tests/tests/hardware/src/android/hardware/cts/helpers/SensorVerificationHelper.java
@@ -0,0 +1,352 @@
+/*
+ * Copyright (C) 2013 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 android.hardware.cts.helpers;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.concurrent.TimeUnit;
+
+/**
+ * Set of static helper methods to verify sensor CTS tests.
+ */
+public class SensorVerificationHelper {
+
+    private static final int MESSAGE_LENGTH = 3;
+
+    /**
+     * Class which holds results from the verification.
+     */
+    public static class VerificationResult {
+        private boolean mFailed = false;
+        private String mMessage = null;
+        private Map<String, Object> mValueMap = new HashMap<String, Object>();
+
+        public void fail(String messageFormat, Object ... args) {
+            mFailed = true;
+            mMessage = String.format(messageFormat, args);
+        }
+
+        public boolean isFailed() {
+            return mFailed;
+        }
+
+        public String getFailureMessage() {
+            return mMessage;
+        }
+
+        public void putValue(String key, Object value) {
+            mValueMap.put(key, value);
+        }
+
+        public Object getValue(String key) {
+            return mValueMap.get(key);
+        }
+    }
+
+    /**
+     * Private constructor for static class.
+     */
+    private SensorVerificationHelper() {}
+
+    /**
+     * Verify that the events are in the correct order.
+     *
+     * @param events The array of {@link TestSensorEvent}
+     * @return a {@link VerificationResult} containing the verification info including the keys
+     *     "count" which is the number of events out of order and "positions" which contains an
+     *     array of indexes that were out of order.
+     * @throws IllegalStateException if number of events less than 1.
+     */
+    public static VerificationResult verifyEventOrdering(TestSensorEvent[] events) {
+        VerificationResult result = new VerificationResult();
+        List<Integer> indices = new ArrayList<Integer>();
+        long maxTimestamp = events[0].timestamp;
+        for (int i = 1; i < events.length; i++) {
+            long currentTimestamp = events[i].timestamp;
+            if (currentTimestamp < maxTimestamp) {
+                indices.add(i);
+            } else if (currentTimestamp > maxTimestamp) {
+                maxTimestamp = currentTimestamp;
+            }
+        }
+
+        result.putValue("count", indices.size());
+        result.putValue("positions", indices);
+
+        if (indices.size() > 0) {
+            StringBuilder sb = new StringBuilder();
+            sb.append(indices.size()).append(" events out of order: ");
+            for (int i = 0; i < Math.min(indices.size(), MESSAGE_LENGTH); i++) {
+                int index = indices.get(i);
+                sb.append(String.format("position=%d, previous=%d, timestamp=%d; ", index,
+                        events[index - 1].timestamp, events[index].timestamp));
+            }
+            if (indices.size() > MESSAGE_LENGTH) {
+                sb.append(indices.size() - MESSAGE_LENGTH).append(" more");
+            } else {
+                // Delete the "; "
+                sb.delete(sb.length() - 2, sb.length());
+            }
+
+            result.fail(sb.toString());
+        }
+
+        return result;
+    }
+
+    /**
+     * Verify that the sensor frequency matches the expected frequency.
+     *
+     * @param events The array of {@link TestSensorEvent}
+     * @param expected The expected frequency in Hz
+     * @param threshold The acceptable margin of error in Hz
+     * @return a {@link VerificationResult} containing the verification info including the key
+     *     "frequency" which is the computed frequency of the events in Hz.
+     * @throws IllegalStateException if number of events less than 1.
+     */
+    public static VerificationResult verifyFrequency(TestSensorEvent[] events, double expected,
+            double threshold) {
+        VerificationResult result = new VerificationResult();
+        List<Long> timestampDelayValues = SensorCtsHelper.getTimestampDelayValues(events);
+        double frequency = SensorCtsHelper.getFrequency(
+                SensorCtsHelper.getMean(timestampDelayValues), TimeUnit.NANOSECONDS);
+        result.putValue("frequency", frequency);
+
+        if (Math.abs(frequency - expected) > threshold) {
+            result.fail("Frequency out of range: frequency=%.2fHz, expected=%.2f+/-%.2fHz",
+                    frequency, expected, threshold);
+        }
+        return result;
+    }
+
+    /**
+     * Verify that the jitter is in an acceptable range
+     *
+     * @param events The array of {@link TestSensorEvent}
+     * @param threshold The acceptable margin of error in nanoseconds
+     * @return a {@link VerificationResult} containing the verification info including the keys
+     *     "jitter" which is the list of computed jitter values and "jitter95Percentile" which is
+     *     95th percentile of the jitter values.
+     * @throws IllegalStateException if number of events less than 2.
+     */
+    public static VerificationResult verifyJitter(TestSensorEvent[] events, double threshold) {
+        VerificationResult result = new VerificationResult();
+        List<Double> jitterValues = SensorCtsHelper.getJitterValues(events);
+        double jitter95Percentile = SensorCtsHelper.get95PercentileValue(jitterValues);
+        result.putValue("jitter", jitterValues);
+        result.putValue("jitter95Percentile", jitter95Percentile);
+
+        if (jitter95Percentile > threshold) {
+            result.fail("Jitter out of range: jitter at 95th percentile=%.0fns, expected=<%.0fns",
+                    jitter95Percentile, threshold);
+        }
+        return result;
+    }
+
+    /**
+     * Verify that the means matches the expected measurement.
+     *
+     * @param events The array of {@link TestSensorEvent}
+     * @param expected The array of expected values
+     * @param threshold The array of thresholds
+     * @return a {@link VerificationResult} containing the verification info including the key
+     *     "mean" which is the computed means for each value of the sensor.
+     * @throws IllegalStateException if number of events less than 1.
+     */
+    public static VerificationResult verifyMean(TestSensorEvent[] events, double[] expected,
+            double[] threshold) {
+        VerificationResult result = new VerificationResult();
+        double[] means = SensorCtsHelper.getMeans(events);
+        result.putValue("means", means);
+
+        boolean failed = false;
+        StringBuilder meanSb = new StringBuilder();
+        StringBuilder expectedSb = new StringBuilder();
+
+        if (means.length > 1) {
+            meanSb.append("(");
+            expectedSb.append("(");
+        }
+        for (int i = 0; i < means.length && !failed; i++) {
+            if (Math.abs(means[i] - expected[i]) > threshold[i]) {
+                failed = true;
+            }
+            meanSb.append(String.format("%.2f", means[i]));
+            if (i != means.length - 1) meanSb.append(", ");
+            expectedSb.append(String.format("%.2f+/-%.2f", expected[i], threshold[i]));
+            if (i != means.length - 1) expectedSb.append(", ");
+        }
+        if (means.length > 1) {
+            meanSb.append(")");
+            expectedSb.append(")");
+        }
+
+        if (failed) {
+            result.fail("Mean out of range: mean=%s, expected=%s",
+                    meanSb.toString(), expectedSb.toString());
+        }
+        return result;
+    }
+
+    /**
+     * Verify that the mean of the magnitude of the sensors vector is within the expected range.
+     *
+     * @param events The array of {@link TestSensorEvent}
+     * @param expected The expected value
+     * @param threshold The threshold
+     * @return a {@link VerificationResult} containing the verification info including the key
+     *     "magnitude" which is the mean of the computed magnitude of the sensor values.
+     * @throws IllegalStateException if number of events less than 1.
+     */
+    public static VerificationResult verifyMagnitude(TestSensorEvent[] events, double expected,
+            double threshold) {
+        VerificationResult result = new VerificationResult();
+        Collection<Double> magnitudes = new ArrayList<Double>(events.length);
+
+        for (TestSensorEvent event : events) {
+            double norm = 0;
+            for (int i = 0; i < event.values.length; i++) {
+                norm += event.values[i] * event.values[i];
+            }
+            magnitudes.add(Math.sqrt(norm));
+        }
+
+        double mean = SensorCtsHelper.getMean(magnitudes);
+        result.putValue("magnitude", mean);
+
+        if (Math.abs(mean - expected) > threshold) {
+            result.fail(String.format("Magnitude mean out of range: mean=%s, expected=%s+/-%s",
+                    mean, expected, threshold));
+        }
+        return result;
+    }
+
+    /**
+     * Verify that the sign of each of the sensor values is correct.
+     * <p>
+     * If the value of the measurement is in [-threshold, threshold], the sign is considered 0. If
+     * it is less than -threshold, it is considered -1. If it is greater than threshold, it is
+     * considered 1.
+     * </p>
+     *
+     * @param events
+     * @param threshold The threshold that needs to be crossed to consider a measurement nonzero
+     * @return a {@link VerificationResult} containing the verification info including the key
+     *     "mean" which is the computed means for each value of the sensor.
+     * @throws IllegalStateException if number of events less than 1.
+     */
+    public static VerificationResult verifySignum(TestSensorEvent[] events, int[] expected,
+            double[] threshold) {
+        VerificationResult result = new VerificationResult();
+        for (int i = 0; i < expected.length; i++) {
+            if (!(expected[i] == -1 || expected[i] == 0 || expected[i] == 1)) {
+                throw new IllegalArgumentException("Expected value must be -1, 0, or 1");
+            }
+        }
+        double[] means = SensorCtsHelper.getMeans(events);
+        result.putValue("means", means);
+
+        boolean failed = false;
+        StringBuilder meanSb = new StringBuilder();
+        StringBuilder expectedSb = new StringBuilder();
+
+        if (means.length > 1) {
+            meanSb.append("(");
+            expectedSb.append("(");
+        }
+        for (int i = 0; i < means.length; i++) {
+            meanSb.append(String.format("%.2f", means[i]));
+            if (i != means.length - 1) meanSb.append(", ");
+
+            if (expected[i] == 0) {
+                if (Math.abs(means[i]) > threshold[i]) {
+                    failed = true;
+                }
+                expectedSb.append(String.format("[%.2f, %.2f]", -threshold[i], threshold[i]));
+            } else {
+                if (expected[i] > 0) {
+                    if (means[i] <= threshold[i]) {
+                        failed = true;
+                    }
+                    expectedSb.append(String.format("(%.2f, inf)", threshold[i]));
+                } else {
+                    if (means[i] >= -1 * threshold[i]) {
+                        failed = true;
+                    }
+                    expectedSb.append(String.format("(-inf, %.2f)", -1 * threshold[i]));
+                }
+            }
+            if (i != means.length - 1) expectedSb.append(", ");
+        }
+        if (means.length > 1) {
+            meanSb.append(")");
+            expectedSb.append(")");
+        }
+
+        if (failed) {
+            result.fail("Signum out of range: mean=%s, expected=%s",
+                    meanSb.toString(), expectedSb.toString());
+        }
+        return result;
+    }
+
+    /**
+     * Verify that the standard deviations is within the expected range.
+     *
+     * @param events The array of {@link TestSensorEvent}
+     * @param threshold The array of thresholds
+     * @return a {@link VerificationResult} containing the verification info including the key
+     *     "stddevs" which is the computed standard deviations for each value of the sensor.
+     * @throws IllegalStateException if number of events less than 1.
+     */
+    public static VerificationResult verifyStandardDeviation(TestSensorEvent[] events,
+            double[] threshold) {
+        VerificationResult result = new VerificationResult();
+        double[] standardDeviations = SensorCtsHelper.getStandardDeviations(events);
+        result.putValue("stddevs", standardDeviations);
+
+        boolean failed = false;
+        StringBuilder meanSb = new StringBuilder();
+        StringBuilder expectedSb = new StringBuilder();
+
+        if (standardDeviations.length > 1) {
+            meanSb.append("(");
+            expectedSb.append("(");
+        }
+        for (int i = 0; i < standardDeviations.length && !failed; i++) {
+            if (standardDeviations[i] > threshold[i]) {
+                failed = true;
+            }
+            meanSb.append(String.format("%.2f", standardDeviations[i]));
+            if (i != standardDeviations.length - 1) meanSb.append(", ");
+            expectedSb.append(String.format("0+/-%.2f", threshold[i]));
+            if (i != standardDeviations.length - 1) expectedSb.append(", ");
+        }
+        if (standardDeviations.length > 1) {
+            meanSb.append(")");
+            expectedSb.append(")");
+        }
+
+        if (failed) {
+            result.fail("Standard deviation out of range: mean=%s, expected=%s",
+                    meanSb.toString(), expectedSb.toString());
+        }
+        return result;
+    }
+}
diff --git a/tests/tests/hardware/src/android/hardware/cts/helpers/SensorVerificationHelperTest.java b/tests/tests/hardware/src/android/hardware/cts/helpers/SensorVerificationHelperTest.java
new file mode 100644
index 0000000..875fa7f
--- /dev/null
+++ b/tests/tests/hardware/src/android/hardware/cts/helpers/SensorVerificationHelperTest.java
@@ -0,0 +1,284 @@
+/*
+ * Copyright (C) 2014 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 android.hardware.cts.helpers;
+
+import android.hardware.cts.helpers.SensorVerificationHelper.VerificationResult;
+
+import junit.framework.TestCase;
+
+import java.util.List;
+
+/**
+ * Unit tests for the {@link SensorVerificationHelper} class.
+ */
+public class SensorVerificationHelperTest extends TestCase {
+
+    /**
+     * Test {@link SensorVerificationHelper#verifyEventOrdering(TestSensorEvent[])}.
+     */
+    @SuppressWarnings("unchecked")
+    public void testVerifyEventOrdering() {
+        float[] values = {0, 1, 2, 3, 4};
+
+        long[] timestamps1 = {0, 0, 0, 0, 0};
+        TestSensorEvent[] events1 = getSensorEvents(timestamps1, values);
+        VerificationResult result = SensorVerificationHelper.verifyEventOrdering(events1);
+        assertFalse(result.isFailed());
+        assertEquals(0, result.getValue("count"));
+
+        long[] timestamps2 = {0, 1, 2, 3, 4};
+        TestSensorEvent[] events2 = getSensorEvents(timestamps2, values);
+        result = SensorVerificationHelper.verifyEventOrdering(events2);
+        assertFalse(result.isFailed());
+        assertEquals(0, result.getValue("count"));
+
+        long[] timestamps3 = {0, 2, 1, 3, 4};
+        TestSensorEvent[] events3 = getSensorEvents(timestamps3, values);
+        result = SensorVerificationHelper.verifyEventOrdering(events3);
+        assertTrue(result.isFailed());
+        assertEquals(1, result.getValue("count"));
+        List<Integer> indices = (List<Integer>) result.getValue("positions");
+        assertTrue(indices.contains(2));
+
+        long[] timestamps4 = {4, 0, 1, 2, 3};
+        TestSensorEvent[] events4 = getSensorEvents(timestamps4, values);
+        result = SensorVerificationHelper.verifyEventOrdering(events4);
+        assertTrue(result.isFailed());
+        assertEquals(4, result.getValue("count"));
+        indices = (List<Integer>) result.getValue("positions");
+        assertTrue(indices.contains(1));
+        assertTrue(indices.contains(2));
+        assertTrue(indices.contains(3));
+        assertTrue(indices.contains(4));
+    }
+
+    /**
+     * Test {@link SensorVerificationHelper#verifyFrequency(TestSensorEvent[], double, double)}.
+     */
+    public void testVerifyFrequency() {
+        float[] values = {0, 1, 2, 3, 4};
+        long[] timestamps = {0, 1000000, 2000000, 3000000, 4000000};  // 1000Hz
+        TestSensorEvent[] events = getSensorEvents(timestamps, values);
+
+        VerificationResult result = SensorVerificationHelper.verifyFrequency(events, 1000.0, 1.0);
+        assertFalse(result.isFailed());
+        assertEquals(1000.0, (Double) result.getValue("frequency"), 0.01);
+
+        result = SensorVerificationHelper.verifyFrequency(events, 950.0, 100.0);
+        assertFalse(result.isFailed());
+        assertEquals(1000.0, (Double) result.getValue("frequency"), 0.01);
+
+        result = SensorVerificationHelper.verifyFrequency(events, 1050.0, 100.0);
+        assertFalse(result.isFailed());
+        assertEquals(1000.0, (Double) result.getValue("frequency"), 0.01);
+
+        result = SensorVerificationHelper.verifyFrequency(events, 950.0, 25.0);
+        assertTrue(result.isFailed());
+        assertEquals(1000.0, (Double) result.getValue("frequency"), 0.01);
+    }
+
+    /**
+     * Test {@link SensorVerificationHelper#verifyJitter(TestSensorEvent[], double)}.
+     */
+    public void testVerifyJitter() {
+        final int SAMPLE_SIZE = 100;
+        float[] values = new float[SAMPLE_SIZE];
+        for (int i = 0; i < SAMPLE_SIZE; i++) {
+            values[i] = i;
+        }
+
+        long[] timestamps1 = new long[SAMPLE_SIZE];  // 100 samples at 1000Hz
+        for (int i = 0; i < SAMPLE_SIZE; i++) {
+            timestamps1[i] = i * 100000;
+        }
+        TestSensorEvent[] events1 = getSensorEvents(timestamps1, values);
+        VerificationResult result = SensorVerificationHelper.verifyJitter(events1, 100000);
+        assertFalse(result.isFailed());
+        assertEquals(0.0, (Double) result.getValue("jitter95Percentile"), 0.01);
+
+        long[] timestamps2 = new long[SAMPLE_SIZE];  // 90 samples at 1000Hz, 10 samples at 2000Hz
+        long timestamp = 0;
+        for (int i = 0; i < SAMPLE_SIZE; i++) {
+            timestamps2[i] = timestamp;
+            timestamp += (i % 10 == 0) ? 500000 : 1000000;
+        }
+        TestSensorEvent[] events2 = getSensorEvents(timestamps2, values);
+        result = SensorVerificationHelper.verifyJitter(events2, 100000);
+        assertTrue(result.isFailed());
+        assertNotNull(result.getValue("jitter"));
+        assertNotNull(result.getValue("jitter95Percentile"));
+    }
+
+    /**
+     * Test {@link SensorVerificationHelper#verifyMean(TestSensorEvent[], double[], double[])}.
+     */
+    public void testVerifyMean() {
+        long[] timestamps = {0, 1, 2, 3, 4};
+        float[] values1 = {0, 1, 2, 3, 4};
+        float[] values2 = {1, 2, 3, 4, 5};
+        float[] values3 = {0, 1, 4, 9, 16};
+        TestSensorEvent[] events = getSensorEvents(timestamps, values1, values2, values3);
+
+        double[] expected1 = {2.0, 3.0, 6.0};
+        double[] threshold1 = {0.1, 0.1, 0.1};
+        VerificationResult result = SensorVerificationHelper.verifyMean(events, expected1,
+                threshold1);
+        assertFalse(result.isFailed());
+        double[] means = (double[]) result.getValue("means");
+        assertEquals(2.0, means[0], 0.01);
+        assertEquals(3.0, means[1], 0.01);
+        assertEquals(6.0, means[2], 0.01);
+
+        double[] expected2 = {2.5, 2.5, 5.5};
+        double[] threshold2 = {0.6, 0.6, 0.6};
+        result = SensorVerificationHelper.verifyMean(events, expected2, threshold2);
+        assertFalse(result.isFailed());
+
+        double[] expected3 = {2.5, 2.5, 5.5};
+        double[] threshold3 = {0.1, 0.6, 0.6};
+        result = SensorVerificationHelper.verifyMean(events, expected3, threshold3);
+        assertTrue(result.isFailed());
+
+        double[] expected4 = {2.5, 2.5, 5.5};
+        double[] threshold4 = {0.6, 0.1, 0.6};
+        result = SensorVerificationHelper.verifyMean(events, expected4, threshold4);
+        assertTrue(result.isFailed());
+
+        double[] expected5 = {2.5, 2.5, 5.5};
+        double[] threshold5 = {0.6, 0.6, 0.1};
+        result = SensorVerificationHelper.verifyMean(events, expected5, threshold5);
+        assertTrue(result.isFailed());
+    }
+
+    /**
+     * Test {@link SensorVerificationHelper#verifyMagnitude(TestSensorEvent[], double, double)}.
+     */
+    public void testVerifyMagnitude() {
+        long[] timestamps = {0, 1, 2, 3, 4};
+        float[] values1 = {0, 4, 3, 0, 6};
+        float[] values2 = {3, 0, 4, 0, 0};
+        float[] values3 = {4, 3, 0, 4, 0};
+        TestSensorEvent[] events = getSensorEvents(timestamps, values1, values2, values3);
+
+        double expected = 5.0;
+        double threshold = 0.1;
+        VerificationResult result = SensorVerificationHelper.verifyMagnitude(events, expected,
+                threshold);
+        assertFalse(result.isFailed());
+        assertEquals(5.0, (Double) result.getValue("magnitude"), 0.01);
+
+        expected = 4.5;
+        threshold = 0.6;
+        result = SensorVerificationHelper.verifyMagnitude(events, expected, threshold);
+        assertFalse(result.isFailed());
+
+        expected = 5.5;
+        threshold = 0.6;
+        result = SensorVerificationHelper.verifyMagnitude(events, expected, threshold);
+        assertFalse(result.isFailed());
+
+        expected = 4.5;
+        threshold = 0.1;
+        result = SensorVerificationHelper.verifyMagnitude(events, expected, threshold);
+        assertTrue(result.isFailed());
+
+        expected = 5.5;
+        threshold = 0.1;
+        result = SensorVerificationHelper.verifyMagnitude(events, expected, threshold);
+        assertTrue(result.isFailed());
+    }
+
+    /**
+     * Test {@link SensorVerificationHelper#verifySignum(TestSensorEvent[], int[], double[])}.
+     */
+    public void testVerifySignum() {
+        long[] timestamps = {0};
+        float[][] values = {{1}, {0.2f}, {0}, {-0.2f}, {-1}};
+        TestSensorEvent[] events = getSensorEvents(timestamps, values);
+
+        int[] expected1 = {1, 1, 0, -1, -1};
+        double[] threshold1 = {0.1, 0.1, 0.1, 0.1, 0.1};
+        VerificationResult result = SensorVerificationHelper.verifySignum(events, expected1,
+                threshold1);
+        assertFalse(result.isFailed());
+        assertNotNull(result.getValue("means"));
+
+        int[] expected2 = {1, 0, 0, 0, -1};
+        double[] threshold2 = {0.5, 0.5, 0.5, 0.5, 0.5};
+        result = SensorVerificationHelper.verifySignum(events, expected2, threshold2);
+        assertFalse(result.isFailed());
+
+        int[] expected3 = {0, 1, 0, -1, 0};
+        double[] threshold3 = {1.5, 0.1, 0.1, 0.1, 1.5};
+        result = SensorVerificationHelper.verifySignum(events, expected3, threshold3);
+        assertFalse(result.isFailed());
+
+        int[] expected4 = {1, 0, 0, 0, 1};
+        double[] threshold4 = {0.5, 0.5, 0.5, 0.5, 0.5};
+        result = SensorVerificationHelper.verifySignum(events, expected4, threshold4);
+        assertTrue(result.isFailed());
+
+        int[] expected5 = {-1, 0, 0, 0, -1};
+        double[] threshold5 = {0.5, 0.5, 0.5, 0.5, 0.5};
+        result = SensorVerificationHelper.verifySignum(events, expected5, threshold5);
+        assertTrue(result.isFailed());
+    }
+
+    /**
+     * Test {@link SensorVerificationHelper#verifyStandardDeviation(TestSensorEvent[], double[])}.
+     */
+    public void testVerifyStandardDeviation() {
+        long[] timestamps = {0, 1, 2, 3, 4};
+        float[] values1 = {0, 1, 2, 3, 4};  // sqrt(2.0)
+        float[] values2 = {1, 2, 3, 4, 5};  // sqrt(2.0)
+        float[] values3 = {0, 2, 4, 6, 8};  // sqrt(8.0)
+        TestSensorEvent[] events = getSensorEvents(timestamps, values1, values2, values3);
+
+        double[] threshold1 = {2, 2, 3};
+        VerificationResult result = SensorVerificationHelper.verifyStandardDeviation(events,
+                threshold1);
+        assertFalse(result.isFailed());
+        double[] means = (double[]) result.getValue("stddevs");
+        assertEquals(Math.sqrt(2.0), means[0], 0.01);
+        assertEquals(Math.sqrt(2.0), means[1], 0.01);
+        assertEquals(Math.sqrt(8.0), means[2], 0.01);
+
+        double[] threshold2 = {1, 2, 3};
+        result = SensorVerificationHelper.verifyStandardDeviation(events, threshold2);
+        assertTrue(result.isFailed());
+
+        double[] threshold3 = {2, 1, 3};
+        result = SensorVerificationHelper.verifyStandardDeviation(events, threshold3);
+        assertTrue(result.isFailed());
+
+        double[] threshold4 = {2, 2, 2};
+        result = SensorVerificationHelper.verifyStandardDeviation(events, threshold4);
+        assertTrue(result.isFailed());
+    }
+
+    private TestSensorEvent[] getSensorEvents(long[] timestamps, float[] ... values) {
+        TestSensorEvent[] events = new TestSensorEvent[timestamps.length];
+        for (int i = 0; i < timestamps.length; i++) {
+            float[] eventValues = new float[values.length];
+            for (int j = 0; j < values.length; j++) {
+                eventValues[j] = values[j][i];
+            }
+            events[i] = new TestSensorEvent(null, timestamps[i], 0, eventValues);
+        }
+        return events;
+    }
+}
diff --git a/tests/tests/hardware/src/android/hardware/cts/helpers/TestSensorEvent.java b/tests/tests/hardware/src/android/hardware/cts/helpers/TestSensorEvent.java
new file mode 100644
index 0000000..48bc1d3
--- /dev/null
+++ b/tests/tests/hardware/src/android/hardware/cts/helpers/TestSensorEvent.java
@@ -0,0 +1,51 @@
+/*
+ * Copyright (C) 2013 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 android.hardware.cts.helpers;
+
+import android.hardware.Sensor;
+import android.hardware.SensorEvent;
+
+/**
+ * Test class to wrap SensorEvent.
+ * It currently only provides a way to clone SensorEvent data, but in the future it can contain
+ * verifications and test checks.
+ */
+public class TestSensorEvent {
+    public final Sensor sensor;
+    public final long timestamp;
+    public final int accuracy;
+    public final float values[];
+
+    public TestSensorEvent(SensorEvent event) {
+        values = new float[event.values.length];
+        System.arraycopy(event.values, 0, values, 0, event.values.length);
+
+        sensor = event.sensor;
+        timestamp = event.timestamp;
+        accuracy = event.accuracy;
+    }
+
+    /**
+     * Constructor for TestSensorEvent. Exposed for unit testing.
+     */
+    protected TestSensorEvent(Sensor sensor, long timestamp, int accuracy, float[] values) {
+        this.sensor = sensor;
+        this.timestamp = timestamp;
+        this.accuracy = accuracy;
+        this.values = values;
+    }
+}
diff --git a/tests/tests/hardware/src/android/hardware/cts/helpers/sensorTestOperations/ParallelCompositeSensorTestOperation.java b/tests/tests/hardware/src/android/hardware/cts/helpers/sensorTestOperations/ParallelCompositeSensorTestOperation.java
new file mode 100644
index 0000000..3730f4b
--- /dev/null
+++ b/tests/tests/hardware/src/android/hardware/cts/helpers/sensorTestOperations/ParallelCompositeSensorTestOperation.java
@@ -0,0 +1,54 @@
+/*
+ * Copyright (C) 2013 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 android.hardware.cts.helpers.sensorTestOperations;
+
+import android.hardware.cts.helpers.SensorTestOperation;
+
+import java.util.ArrayList;
+
+/**
+ * A test operation that groups a set of SensorTestOperations and allows to execute them all in
+ * parallel.
+ * This class can be combined to compose other primitive SensorTestOperations.
+ */
+public class ParallelCompositeSensorTestOperation extends SensorTestOperation {
+    private final ArrayList<SensorTestOperation> mOperations = new ArrayList<SensorTestOperation>();
+
+    /**
+     * There is no synchronization
+     * @param operations
+     */
+    public void add(SensorTestOperation ... operations) {
+        synchronized (mOperations) {
+            for(SensorTestOperation operation : operations) {
+                mOperations.add(operation);
+            }
+        }
+    }
+
+    @Override
+    protected void doWork() throws Throwable {
+        synchronized (mOperations) {
+            for(SensorTestOperation operation : mOperations) {
+                operation.start();
+            }
+            for(SensorTestOperation operation : mOperations) {
+                operation.waitForCompletion();
+            }
+        }
+    }
+}
diff --git a/tests/tests/hardware/src/android/hardware/cts/helpers/sensorTestOperations/RepeatingSensorTestOperation.java b/tests/tests/hardware/src/android/hardware/cts/helpers/sensorTestOperations/RepeatingSensorTestOperation.java
new file mode 100644
index 0000000..7a3c450
--- /dev/null
+++ b/tests/tests/hardware/src/android/hardware/cts/helpers/sensorTestOperations/RepeatingSensorTestOperation.java
@@ -0,0 +1,39 @@
+/*
+ * Copyright (C) 2013 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 android.hardware.cts.helpers.sensorTestOperations;
+
+import android.hardware.cts.helpers.SensorTestOperation;
+
+/**
+ * High level SensorTestOperation that executes the inner operation in a loop.
+ */
+public class RepeatingSensorTestOperation extends SensorTestOperation {
+    private final SensorTestOperation mSensorTestOperation;
+    private final int mRepetitionCount;
+
+    public RepeatingSensorTestOperation(SensorTestOperation operation, int repetitionCount) {
+        mSensorTestOperation = operation;
+        mRepetitionCount = repetitionCount;
+    }
+
+    @Override
+    protected void doWork() throws Throwable {
+        for(int i = 0; i < mRepetitionCount; ++i) {
+            mSensorTestOperation.execute();
+        }
+    }
+}
diff --git a/tests/tests/hardware/src/android/hardware/cts/helpers/sensorTestOperations/SequentialCompositeSensorTestOperation.java b/tests/tests/hardware/src/android/hardware/cts/helpers/sensorTestOperations/SequentialCompositeSensorTestOperation.java
new file mode 100644
index 0000000..4b92168
--- /dev/null
+++ b/tests/tests/hardware/src/android/hardware/cts/helpers/sensorTestOperations/SequentialCompositeSensorTestOperation.java
@@ -0,0 +1,51 @@
+/*
+ * Copyright (C) 2013 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 android.hardware.cts.helpers.sensorTestOperations;
+
+import android.hardware.cts.helpers.SensorTestOperation;
+
+import java.util.ArrayList;
+
+/**
+ * A test operation that groups a set of SensorTestOperations and allows to execute them in a
+ * sequence, each operation executes in the order they are added to the composite container.
+ * This class can be combined to compose other primitive SensorTestOperations.
+ */
+public class SequentialCompositeSensorTestOperation extends SensorTestOperation {
+    private final ArrayList<SensorTestOperation> mOperations = new ArrayList<SensorTestOperation>();
+
+    /**
+     * There is no synchronization
+     * @param operations
+     */
+    public void add(SensorTestOperation ... operations) {
+        synchronized (mOperations) {
+            for(SensorTestOperation operation : operations) {
+                mOperations.add(operation);
+            }
+        }
+    }
+
+    @Override
+    protected void doWork() throws Throwable {
+        synchronized (mOperations) {
+            for(SensorTestOperation operation : mOperations) {
+                operation.execute();
+            }
+        }
+    }
+}
diff --git a/tests/tests/hardware/src/android/hardware/cts/helpers/sensorTestOperations/VerifyEventOrderingOperation.java b/tests/tests/hardware/src/android/hardware/cts/helpers/sensorTestOperations/VerifyEventOrderingOperation.java
new file mode 100644
index 0000000..03d0f9a
--- /dev/null
+++ b/tests/tests/hardware/src/android/hardware/cts/helpers/sensorTestOperations/VerifyEventOrderingOperation.java
@@ -0,0 +1,59 @@
+/*
+ * Copyright (C) 2013 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 android.hardware.cts.helpers.sensorTestOperations;
+
+import android.content.Context;
+import android.hardware.cts.helpers.SensorCtsHelper;
+import android.hardware.cts.helpers.SensorManagerTestVerifier;
+import android.hardware.cts.helpers.SensorTestOperation;
+import android.hardware.cts.helpers.SensorVerificationHelper;
+import android.hardware.cts.helpers.SensorVerificationHelper.VerificationResult;
+import android.hardware.cts.helpers.TestSensorEvent;
+
+import junit.framework.Assert;
+
+/**
+ * Test Operation class that validates the ordering of sensor events.
+ */
+public class VerifyEventOrderingOperation extends SensorTestOperation {
+    private SensorManagerTestVerifier mSensor;
+
+    public VerifyEventOrderingOperation(
+            Context context,
+            int sensorType,
+            int samplingRateInUs,
+            int reportLatencyInUs) {
+        mSensor = new SensorManagerTestVerifier(
+                context,
+                sensorType,
+                samplingRateInUs,
+                reportLatencyInUs);
+    }
+
+    @Override
+    public void doWork() {
+        TestSensorEvent[] events = mSensor.collectEvents(100);
+        VerificationResult result = SensorVerificationHelper.verifyEventOrdering(events);
+        if (result.isFailed()) {
+            Assert.fail(SensorCtsHelper.formatAssertionMessage(
+                    "Ordering",
+                    this,
+                    mSensor.getUnderlyingSensor(),
+                    result.getFailureMessage()));
+        }
+    }
+}
diff --git a/tests/tests/hardware/src/android/hardware/cts/helpers/sensorTestOperations/VerifyJitteringOperation.java b/tests/tests/hardware/src/android/hardware/cts/helpers/sensorTestOperations/VerifyJitteringOperation.java
new file mode 100644
index 0000000..303dc9b
--- /dev/null
+++ b/tests/tests/hardware/src/android/hardware/cts/helpers/sensorTestOperations/VerifyJitteringOperation.java
@@ -0,0 +1,81 @@
+/*
+ * Copyright (C) 2013 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 android.hardware.cts.helpers.sensorTestOperations;
+
+import android.content.Context;
+import android.hardware.cts.helpers.SensorCtsHelper;
+import android.hardware.cts.helpers.SensorManagerTestVerifier;
+import android.hardware.cts.helpers.SensorTestInformation;
+import android.hardware.cts.helpers.SensorTestOperation;
+import android.hardware.cts.helpers.SensorVerificationHelper;
+import android.hardware.cts.helpers.SensorVerificationHelper.VerificationResult;
+import android.hardware.cts.helpers.TestSensorEvent;
+
+import junit.framework.Assert;
+
+import java.security.InvalidParameterException;
+import java.util.concurrent.TimeUnit;
+
+/**
+ * Test Operation class that validates the sampling rate jittering of a given sensor.
+ *
+ * Remarks:
+ * - In order to guarantee proper results in any environment, the maximum sampling rate supported by
+ *   the Sensor is used, this guarantees the frequency reference for the test.
+ */
+public class VerifyJitteringOperation extends SensorTestOperation {
+    protected SensorManagerTestVerifier mSensor;
+    protected long mExpectedtimestampInNs;
+    protected long mThresholdPercentage;
+    protected long mThresholdInNs;
+
+    public VerifyJitteringOperation(
+            Context context,
+            int sensorType,
+            int reportLatencyInUs,
+            int thresholdPercentageOfNs) throws InvalidParameterException {
+        if(thresholdPercentageOfNs < 0) {
+            throw new InvalidParameterException("thresholdPercentageOfNs needs to be >= 0");
+        }
+        // use the max sampling frequency the sensor reports to guarantee the results
+        int maxSamplingRateInUs = SensorTestInformation.getMaxSamplingRateInUs(context, sensorType);
+        mSensor = new SensorManagerTestVerifier(
+                context,
+                sensorType,
+                maxSamplingRateInUs,
+                reportLatencyInUs);
+        // set expectations
+        mExpectedtimestampInNs = TimeUnit.NANOSECONDS.convert(
+                maxSamplingRateInUs,
+                TimeUnit.MICROSECONDS);
+        mThresholdPercentage = thresholdPercentageOfNs;
+        mThresholdInNs = mExpectedtimestampInNs / mThresholdPercentage;
+    }
+
+    @Override
+    public void doWork() {
+        TestSensorEvent[] events = mSensor.collectEvents(100);
+        VerificationResult result = SensorVerificationHelper.verifyJitter(events, mThresholdInNs);
+        if (result.isFailed()) {
+            Assert.fail(SensorCtsHelper.formatAssertionMessage(
+                    "Jitter(95%ile)",
+                    this,
+                    mSensor.getUnderlyingSensor(),
+                    result.getFailureMessage()));
+        }
+    }
+}
diff --git a/tests/tests/hardware/src/android/hardware/cts/helpers/sensorTestOperations/VerifyMagnitudeOperation.java b/tests/tests/hardware/src/android/hardware/cts/helpers/sensorTestOperations/VerifyMagnitudeOperation.java
new file mode 100644
index 0000000..cbcff6a
--- /dev/null
+++ b/tests/tests/hardware/src/android/hardware/cts/helpers/sensorTestOperations/VerifyMagnitudeOperation.java
@@ -0,0 +1,70 @@
+/*
+ * Copyright (C) 2013 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 android.hardware.cts.helpers.sensorTestOperations;
+
+import android.content.Context;
+import android.hardware.cts.helpers.SensorCtsHelper;
+import android.hardware.cts.helpers.SensorManagerTestVerifier;
+import android.hardware.cts.helpers.SensorTestInformation;
+import android.hardware.cts.helpers.SensorTestOperation;
+import android.hardware.cts.helpers.SensorVerificationHelper;
+import android.hardware.cts.helpers.SensorVerificationHelper.VerificationResult;
+import android.hardware.cts.helpers.TestSensorEvent;
+
+import junit.framework.Assert;
+
+/**
+ * Test Operation class that validates the norm of a given sensor.
+ * The operation relies in the number of axes each sensor type reports.
+ */
+public class VerifyMagnitudeOperation extends SensorTestOperation {
+    private SensorManagerTestVerifier mSensor;
+    private int mAxisCount;
+    private double mReferenceValue;
+    private double mThreshold;
+
+    public VerifyMagnitudeOperation(
+            Context context,
+            int sensorType,
+            int samplingRateInUs,
+            float referenceValue,
+            float threshold) {
+        mSensor = new SensorManagerTestVerifier(
+                context,
+                sensorType,
+                samplingRateInUs,
+                0 /*reportLatencyInUs*/);
+        // set expectations
+        mAxisCount = SensorTestInformation.getAxisCount(mSensor.getUnderlyingSensor().getType());
+        mReferenceValue = referenceValue;
+        mThreshold = threshold;
+    }
+
+    @Override
+    public void doWork() {
+        TestSensorEvent[] events = mSensor.collectEvents(1);
+        VerificationResult result = SensorVerificationHelper.verifyMagnitude(events, mReferenceValue,
+                mThreshold);
+        if (result.isFailed()) {
+            Assert.fail(SensorCtsHelper.formatAssertionMessage(
+                    "Norm",
+                    this,
+                    mSensor.getUnderlyingSensor(),
+                    result.getFailureMessage()));
+        }
+    }
+}
diff --git a/tests/tests/hardware/src/android/hardware/cts/helpers/sensorTestOperations/VerifyMaximumFrequencyOperation.java b/tests/tests/hardware/src/android/hardware/cts/helpers/sensorTestOperations/VerifyMaximumFrequencyOperation.java
new file mode 100644
index 0000000..0af15a2
--- /dev/null
+++ b/tests/tests/hardware/src/android/hardware/cts/helpers/sensorTestOperations/VerifyMaximumFrequencyOperation.java
@@ -0,0 +1,82 @@
+/*
+ * Copyright (C) 2013 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 android.hardware.cts.helpers.sensorTestOperations;
+
+import android.content.Context;
+import android.hardware.cts.helpers.SensorCtsHelper;
+import android.hardware.cts.helpers.SensorManagerTestVerifier;
+import android.hardware.cts.helpers.SensorTestInformation;
+import android.hardware.cts.helpers.SensorTestOperation;
+import android.hardware.cts.helpers.SensorVerificationHelper;
+import android.hardware.cts.helpers.SensorVerificationHelper.VerificationResult;
+import android.hardware.cts.helpers.TestSensorEvent;
+
+import junit.framework.Assert;
+
+import java.security.InvalidParameterException;
+import java.util.concurrent.TimeUnit;
+
+/**
+ * Test Operation class that validates the max sampling rate of a given sensor.
+ *
+ * Remarks:
+ * - In order to guarantee proper results in any environment, the maximum sampling rate supported by
+ *   the Sensor is used, this guarantees the frequency reference for the test.
+ */
+public class VerifyMaximumFrequencyOperation extends SensorTestOperation {
+    protected SensorManagerTestVerifier mSensor;
+    protected long mExpectedTimestampInNs;
+    protected long mThresholdPercentage;
+    protected long mThresholdInNs;
+
+    public VerifyMaximumFrequencyOperation(
+            Context context,
+            int sensorType,
+            int reportLatencyInUs,
+            int thresholdPercentageOfNs) throws InvalidParameterException {
+        if(thresholdPercentageOfNs < 0) {
+            throw new InvalidParameterException("thresholdPercentageOfNs needs to be >= 0");
+        }
+        // use the max sampling frequency the sensor reports to guarantee the results
+        int maxSamplingRateInUs = SensorTestInformation.getMaxSamplingRateInUs(context, sensorType);
+        mSensor = new SensorManagerTestVerifier(
+                context,
+                sensorType,
+                maxSamplingRateInUs,
+                reportLatencyInUs);
+        // set expectations
+        mExpectedTimestampInNs = TimeUnit.NANOSECONDS.convert(
+                maxSamplingRateInUs,
+                TimeUnit.MICROSECONDS);
+        mThresholdPercentage = thresholdPercentageOfNs;
+        mThresholdInNs = mExpectedTimestampInNs / mThresholdPercentage;
+    }
+
+    @Override
+    public void doWork() {
+        TestSensorEvent[] events = mSensor.collectEvents(100);
+        VerificationResult result = SensorVerificationHelper.verifyFrequency(events,
+                mExpectedTimestampInNs, mThresholdInNs);
+        if (result.isFailed()) {
+            Assert.fail(SensorCtsHelper.formatAssertionMessage(
+                    "Frequency",
+                    this,
+                    mSensor.getUnderlyingSensor(),
+                    result.getFailureMessage()));
+        }
+    }
+}
diff --git a/tests/tests/hardware/src/android/hardware/cts/helpers/sensorTestOperations/VerifyMeasurementsOperation.java b/tests/tests/hardware/src/android/hardware/cts/helpers/sensorTestOperations/VerifyMeasurementsOperation.java
new file mode 100644
index 0000000..2368eb4
--- /dev/null
+++ b/tests/tests/hardware/src/android/hardware/cts/helpers/sensorTestOperations/VerifyMeasurementsOperation.java
@@ -0,0 +1,82 @@
+/*
+ * Copyright 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 android.hardware.cts.helpers.sensorTestOperations;
+
+import android.content.Context;
+import android.hardware.cts.helpers.SensorCtsHelper;
+import android.hardware.cts.helpers.SensorManagerTestVerifier;
+import android.hardware.cts.helpers.SensorTestInformation;
+import android.hardware.cts.helpers.SensorTestOperation;
+import android.hardware.cts.helpers.SensorVerificationHelper;
+import android.hardware.cts.helpers.SensorVerificationHelper.VerificationResult;
+import android.hardware.cts.helpers.TestSensorEvent;
+
+import junit.framework.Assert;
+
+import java.security.InvalidParameterException;
+
+/**
+ * Test Operation class that validates the measurements of a a given sensor.
+ * The operation relies on the number of axes each sensor type reports.
+ * The verification calculates the mean for each axis on the measurements, and verifies that they
+ * fall into the expected intervals.
+ */
+public class VerifyMeasurementsOperation extends SensorTestOperation {
+    private final SensorManagerTestVerifier mSensor;
+    private final int mAxisCount;
+    private final double[] mReferenceValues;
+    private final double[] mThreshold;
+
+    public VerifyMeasurementsOperation(
+            Context context,
+            int sensorType,
+            int samplingRateInUs,
+            int reportLatencyInUs,
+            double referenceValues[],
+            float threshold) {
+        mAxisCount = SensorTestInformation.getAxisCount(sensorType);
+        if(mAxisCount != referenceValues.length) {
+            throw new InvalidParameterException(
+                    String.format("%d reference values are expected.", mAxisCount));
+        }
+        mSensor = new SensorManagerTestVerifier(
+                context,
+                sensorType,
+                samplingRateInUs,
+                reportLatencyInUs);
+        // set expectations
+        mReferenceValues = referenceValues;
+        mThreshold = new double[mAxisCount];
+        for (int i = 0; i < mThreshold.length; i++) {
+            mThreshold[i] = threshold;
+        }
+    }
+
+    @Override
+    public void doWork() {
+        TestSensorEvent[] events = mSensor.collectEvents(100);
+        VerificationResult result = SensorVerificationHelper.verifyMean(events, mReferenceValues,
+                mThreshold);
+        if (result.isFailed()) {
+            Assert.fail(SensorCtsHelper.formatAssertionMessage(
+                    "Measurement",
+                    this,
+                    mSensor.getUnderlyingSensor(),
+                    result.getFailureMessage()));
+        }
+    }
+}
diff --git a/tests/tests/hardware/src/android/hardware/cts/helpers/sensorTestOperations/VerifySignumOperation.java b/tests/tests/hardware/src/android/hardware/cts/helpers/sensorTestOperations/VerifySignumOperation.java
new file mode 100644
index 0000000..f58baa1
--- /dev/null
+++ b/tests/tests/hardware/src/android/hardware/cts/helpers/sensorTestOperations/VerifySignumOperation.java
@@ -0,0 +1,90 @@
+/*
+ * Copyright 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 android.hardware.cts.helpers.sensorTestOperations;
+
+import android.content.Context;
+import android.hardware.cts.helpers.SensorCtsHelper;
+import android.hardware.cts.helpers.SensorManagerTestVerifier;
+import android.hardware.cts.helpers.SensorTestInformation;
+import android.hardware.cts.helpers.SensorTestOperation;
+import android.hardware.cts.helpers.SensorVerificationHelper;
+import android.hardware.cts.helpers.SensorVerificationHelper.VerificationResult;
+import android.hardware.cts.helpers.TestSensorEvent;
+
+import junit.framework.Assert;
+
+import java.security.InvalidParameterException;
+
+/**
+ * Test Operation class that validates the sign of measurements of a a given sensor.
+ * The operation relies in the number of axes each sensor type reports.
+ */
+public class VerifySignumOperation extends SensorTestOperation {
+    private final SensorManagerTestVerifier mSensor;
+    private final int mAxisCount;
+    private final int mReferenceValues[];
+    private final double mNoiseThresholds[];
+
+    /**
+     * @param noiseThreshold Defines the threshold that needs to be crossed to consider a
+     *                       measurement different from zero
+     */
+    public VerifySignumOperation(
+            Context context,
+            int sensorType,
+            int samplingRateInUs,
+            int referenceValues[],
+            double noiseThreshold) {
+        mAxisCount = SensorTestInformation.getAxisCount(sensorType);
+        if(mAxisCount != referenceValues.length) {
+            throw new InvalidParameterException(
+                    String.format("%d reference values are expected.", mAxisCount));
+        }
+        for(int i = 0; i < referenceValues.length; ++i) {
+            int value = referenceValues[i];
+            if(value != 0 && value != -1 && value != +1) {
+                throw new InvalidParameterException(
+                        "A ReferenceValue can only be one of the following: -1, 0, +1");
+            }
+        }
+        mSensor = new SensorManagerTestVerifier(
+                context,
+                sensorType,
+                samplingRateInUs,
+                0 /*reportLatencyInUs*/);
+        // set expectations
+        mReferenceValues = referenceValues;
+        mNoiseThresholds = new double[mReferenceValues.length];
+        for (int i = 0; i < mNoiseThresholds.length; i++) {
+            mNoiseThresholds[i] = noiseThreshold;
+        }
+    }
+
+    @Override
+    public void doWork() {
+        TestSensorEvent[] events = mSensor.collectEvents(100);
+        VerificationResult result = SensorVerificationHelper.verifySignum(events, mReferenceValues,
+                mNoiseThresholds);
+        if (result.isFailed()) {
+            Assert.fail(SensorCtsHelper.formatAssertionMessage(
+                    "Measurement",
+                    this,
+                    mSensor.getUnderlyingSensor(),
+                    result.getFailureMessage()));
+        }
+    }
+}
diff --git a/tests/tests/hardware/src/android/hardware/cts/helpers/sensorTestOperations/VerifyStandardDeviationOperation.java b/tests/tests/hardware/src/android/hardware/cts/helpers/sensorTestOperations/VerifyStandardDeviationOperation.java
new file mode 100644
index 0000000..05b92e0
--- /dev/null
+++ b/tests/tests/hardware/src/android/hardware/cts/helpers/sensorTestOperations/VerifyStandardDeviationOperation.java
@@ -0,0 +1,70 @@
+/*
+ * Copyright (C) 2013 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 android.hardware.cts.helpers.sensorTestOperations;
+
+import android.content.Context;
+import android.hardware.cts.helpers.SensorCtsHelper;
+import android.hardware.cts.helpers.SensorManagerTestVerifier;
+import android.hardware.cts.helpers.SensorTestInformation;
+import android.hardware.cts.helpers.SensorTestOperation;
+import android.hardware.cts.helpers.SensorVerificationHelper;
+import android.hardware.cts.helpers.SensorVerificationHelper.VerificationResult;
+import android.hardware.cts.helpers.TestSensorEvent;
+
+import junit.framework.Assert;
+
+/**
+ * Test Operation class that validates the standard deviation of a given sensor.
+ */
+public class VerifyStandardDeviationOperation extends SensorTestOperation {
+    private SensorManagerTestVerifier mSensor;
+    private int mAxisCount;
+    private double[] mExpectedStandardDeviation;
+
+    public VerifyStandardDeviationOperation(
+            Context context,
+            int sensorType,
+            int samplingRateInUs,
+            int reportLatencyInUs,
+            float expectedStandardDeviation) {
+        mSensor = new SensorManagerTestVerifier(
+                context,
+                sensorType,
+                samplingRateInUs,
+                reportLatencyInUs);
+        // set expectations
+        mAxisCount = SensorTestInformation.getAxisCount(mSensor.getUnderlyingSensor().getType());
+        mExpectedStandardDeviation = new double[mAxisCount];
+        for (int i = 0; i < mExpectedStandardDeviation.length; i++) {
+            mExpectedStandardDeviation[i] = expectedStandardDeviation;
+        }
+    }
+
+    @Override
+    public void doWork() {
+        TestSensorEvent[] events = mSensor.collectEvents(100);
+        VerificationResult result = SensorVerificationHelper.verifyStandardDeviation(events,
+                mExpectedStandardDeviation);
+        if (result.isFailed()) {
+            Assert.fail(SensorCtsHelper.formatAssertionMessage(
+                    "StandardDeviation",
+                    this,
+                    mSensor.getUnderlyingSensor(),
+                    result.getFailureMessage()));
+        }
+    }
+}
diff --git a/tests/tests/keystore/Android.mk b/tests/tests/keystore/Android.mk
index 62c3301..f2dae38 100644
--- a/tests/tests/keystore/Android.mk
+++ b/tests/tests/keystore/Android.mk
@@ -20,7 +20,7 @@
 
 LOCAL_JAVA_LIBRARIES := android.test.runner
 
-LOCAL_STATIC_JAVA_LIBRARIES := ctstestrunner
+LOCAL_STATIC_JAVA_LIBRARIES := ctstestrunner core-tests-support
 
 LOCAL_SRC_FILES := $(call all-java-files-under, src)
 
diff --git a/tests/tests/keystore/AndroidManifest.xml b/tests/tests/keystore/AndroidManifest.xml
index a19c983..0ce9f09 100644
--- a/tests/tests/keystore/AndroidManifest.xml
+++ b/tests/tests/keystore/AndroidManifest.xml
@@ -19,6 +19,7 @@
     package="com.android.cts.keystore">
 
     <uses-permission android:name="android.permission.DISABLE_KEYGUARD" />
+    <uses-permission android:name="android.permission.INTERNET" />
     <application>
         <uses-library android:name="android.test.runner" />
     </application>
diff --git a/tests/tests/keystore/src/android/keystore/cts/AndroidKeyPairGeneratorTest.java b/tests/tests/keystore/src/android/keystore/cts/AndroidKeyPairGeneratorTest.java
index ecc06c6..9127984 100644
--- a/tests/tests/keystore/src/android/keystore/cts/AndroidKeyPairGeneratorTest.java
+++ b/tests/tests/keystore/src/android/keystore/cts/AndroidKeyPairGeneratorTest.java
@@ -20,19 +20,43 @@
 import android.test.AndroidTestCase;
 
 import java.math.BigInteger;
+import java.net.InetAddress;
+import java.net.Socket;
 import java.security.KeyPair;
 import java.security.KeyPairGenerator;
 import java.security.KeyStore;
+import java.security.Principal;
 import java.security.PrivateKey;
 import java.security.PublicKey;
 import java.security.SecureRandom;
 import java.security.cert.Certificate;
 import java.security.cert.X509Certificate;
+import java.security.interfaces.DSAParams;
+import java.security.interfaces.DSAPublicKey;
+import java.security.interfaces.ECPublicKey;
+import java.security.interfaces.RSAPublicKey;
+import java.security.spec.AlgorithmParameterSpec;
+import java.security.spec.DSAParameterSpec;
+import java.security.spec.RSAKeyGenParameterSpec;
 import java.text.SimpleDateFormat;
 import java.util.Date;
+import java.util.concurrent.Callable;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Executors;
+import java.util.concurrent.Future;
 
+import javax.net.ssl.KeyManager;
+import javax.net.ssl.SSLContext;
+import javax.net.ssl.SSLServerSocket;
+import javax.net.ssl.SSLSocket;
+import javax.net.ssl.TrustManager;
+import javax.net.ssl.X509ExtendedKeyManager;
 import javax.security.auth.x500.X500Principal;
 
+import libcore.java.security.TestKeyStore;
+import libcore.javax.net.ssl.TestKeyManager;
+import libcore.javax.net.ssl.TestSSLContext;
+
 public class AndroidKeyPairGeneratorTest extends AndroidTestCase {
     private KeyPairGenerator mGenerator;
 
@@ -106,7 +130,203 @@
                 new SecureRandom());
     }
 
-    public void testKeyPairGenerator_GenerateKeyPair_Unencrypted_Success() throws Exception {
+    public void testKeyPairGenerator_GenerateKeyPair_DSA_Unencrypted_Success() throws Exception {
+        mGenerator.initialize(new KeyPairGeneratorSpec.Builder(getContext())
+                .setAlias(TEST_ALIAS_1)
+                .setKeyType("DSA")
+                .setSubject(TEST_DN_1)
+                .setSerialNumber(TEST_SERIAL_1)
+                .setStartDate(NOW)
+                .setEndDate(NOW_PLUS_10_YEARS)
+                .build());
+
+        final KeyPair pair = mGenerator.generateKeyPair();
+        assertNotNull("The KeyPair returned should not be null", pair);
+
+        assertKeyPairCorrect(pair, TEST_ALIAS_1, "DSA", 1024, null, TEST_DN_1, TEST_SERIAL_1, NOW,
+                NOW_PLUS_10_YEARS);
+    }
+
+    public void testKeyPairGenerator_GenerateKeyPair_DSA_2048_Unencrypted_Success()
+            throws Exception {
+        mGenerator.initialize(new KeyPairGeneratorSpec.Builder(getContext())
+                .setAlias(TEST_ALIAS_1)
+                .setKeyType("DSA")
+                .setKeySize(2048)
+                .setSubject(TEST_DN_1)
+                .setSerialNumber(TEST_SERIAL_1)
+                .setStartDate(NOW)
+                .setEndDate(NOW_PLUS_10_YEARS)
+                .build());
+
+        final KeyPair pair = mGenerator.generateKeyPair();
+        assertNotNull("The KeyPair returned should not be null", pair);
+
+        assertKeyPairCorrect(pair, TEST_ALIAS_1, "DSA", 2048, null, TEST_DN_1, TEST_SERIAL_1, NOW,
+                NOW_PLUS_10_YEARS);
+    }
+
+    public void testKeyPairGenerator_GenerateKeyPair_DSA_SpecifiedParams_Unencrypted_Success()
+            throws Exception {
+        /*
+         * generated using: openssl dsaparam -C 2048
+         */
+        BigInteger p = new BigInteger(1, new byte[] {
+                (byte) 0xC0, (byte) 0x3D, (byte) 0x86, (byte) 0x09, (byte) 0xCA, (byte) 0x8C,
+                (byte) 0x37, (byte) 0xCA, (byte) 0xCC, (byte) 0x4A, (byte) 0x81, (byte) 0xBD,
+                (byte) 0xD8, (byte) 0x50, (byte) 0x77, (byte) 0xCD, (byte) 0xDD, (byte) 0x32,
+                (byte) 0x0B, (byte) 0x43, (byte) 0xBF, (byte) 0x42, (byte) 0x06, (byte) 0x5A,
+                (byte) 0x3D, (byte) 0x18, (byte) 0x50, (byte) 0x47, (byte) 0x79, (byte) 0xE1,
+                (byte) 0x5B, (byte) 0x86, (byte) 0x03, (byte) 0xB9, (byte) 0x28, (byte) 0x9C,
+                (byte) 0x18, (byte) 0xA9, (byte) 0xF5, (byte) 0xD6, (byte) 0xF4, (byte) 0x94,
+                (byte) 0x5B, (byte) 0x87, (byte) 0x58, (byte) 0xCA, (byte) 0xB2, (byte) 0x1E,
+                (byte) 0xFC, (byte) 0xED, (byte) 0x37, (byte) 0xC3, (byte) 0x49, (byte) 0xAC,
+                (byte) 0xFA, (byte) 0x46, (byte) 0xDB, (byte) 0x7A, (byte) 0x50, (byte) 0x96,
+                (byte) 0xCF, (byte) 0x52, (byte) 0xD7, (byte) 0x4E, (byte) 0xEB, (byte) 0x26,
+                (byte) 0x41, (byte) 0xA2, (byte) 0x6F, (byte) 0x99, (byte) 0x80, (byte) 0x9F,
+                (byte) 0x0F, (byte) 0x0A, (byte) 0xA8, (byte) 0x0D, (byte) 0xAC, (byte) 0xAB,
+                (byte) 0xEF, (byte) 0x7D, (byte) 0xE7, (byte) 0x4C, (byte) 0xF1, (byte) 0x88,
+                (byte) 0x44, (byte) 0xC9, (byte) 0x17, (byte) 0xD0, (byte) 0xBB, (byte) 0xE2,
+                (byte) 0x01, (byte) 0x8C, (byte) 0xC1, (byte) 0x02, (byte) 0x1D, (byte) 0x3C,
+                (byte) 0x15, (byte) 0xB7, (byte) 0x41, (byte) 0x30, (byte) 0xD8, (byte) 0x11,
+                (byte) 0xBD, (byte) 0x6A, (byte) 0x2A, (byte) 0x0D, (byte) 0x36, (byte) 0x44,
+                (byte) 0x9C, (byte) 0x3F, (byte) 0x32, (byte) 0xE2, (byte) 0x1C, (byte) 0xFB,
+                (byte) 0xE3, (byte) 0xFF, (byte) 0xCC, (byte) 0x1A, (byte) 0x72, (byte) 0x38,
+                (byte) 0x37, (byte) 0x69, (byte) 0x5E, (byte) 0x35, (byte) 0x73, (byte) 0xE1,
+                (byte) 0x1E, (byte) 0x74, (byte) 0x35, (byte) 0x44, (byte) 0x07, (byte) 0xB5,
+                (byte) 0x2F, (byte) 0x0B, (byte) 0x60, (byte) 0xF4, (byte) 0xA9, (byte) 0xE0,
+                (byte) 0x81, (byte) 0xB2, (byte) 0xCD, (byte) 0x8B, (byte) 0x82, (byte) 0x76,
+                (byte) 0x7F, (byte) 0xD4, (byte) 0x17, (byte) 0x32, (byte) 0x86, (byte) 0x98,
+                (byte) 0x7C, (byte) 0x85, (byte) 0x66, (byte) 0xF6, (byte) 0x77, (byte) 0xED,
+                (byte) 0x8B, (byte) 0x1A, (byte) 0x52, (byte) 0x16, (byte) 0xDA, (byte) 0x1C,
+                (byte) 0xA7, (byte) 0x16, (byte) 0x79, (byte) 0x20, (byte) 0x1C, (byte) 0x99,
+                (byte) 0x5F, (byte) 0x12, (byte) 0x66, (byte) 0x15, (byte) 0x9F, (byte) 0xE5,
+                (byte) 0x73, (byte) 0xA9, (byte) 0x61, (byte) 0xBA, (byte) 0xA7, (byte) 0x23,
+                (byte) 0x93, (byte) 0x77, (byte) 0xB5, (byte) 0xF6, (byte) 0xEC, (byte) 0x13,
+                (byte) 0xBF, (byte) 0x95, (byte) 0x60, (byte) 0x78, (byte) 0x84, (byte) 0xE3,
+                (byte) 0x44, (byte) 0xEC, (byte) 0x74, (byte) 0xC2, (byte) 0xCB, (byte) 0xD4,
+                (byte) 0x70, (byte) 0xC5, (byte) 0x7B, (byte) 0xF8, (byte) 0x07, (byte) 0x3B,
+                (byte) 0xEB, (byte) 0x9F, (byte) 0xC9, (byte) 0x7D, (byte) 0xE0, (byte) 0xA5,
+                (byte) 0xBA, (byte) 0x68, (byte) 0x7B, (byte) 0xF4, (byte) 0x70, (byte) 0x40,
+                (byte) 0xAE, (byte) 0xE9, (byte) 0x65, (byte) 0xEE, (byte) 0x5B, (byte) 0x71,
+                (byte) 0x36, (byte) 0x0B, (byte) 0xB0, (byte) 0xA2, (byte) 0x98, (byte) 0x7D,
+                (byte) 0xE3, (byte) 0x24, (byte) 0x95, (byte) 0x2B, (byte) 0xC2, (byte) 0x0A,
+                (byte) 0x78, (byte) 0x3D, (byte) 0xCC, (byte) 0x3A, (byte) 0xEE, (byte) 0xED,
+                (byte) 0x48, (byte) 0xEB, (byte) 0xA3, (byte) 0x78, (byte) 0xA8, (byte) 0x9D,
+                (byte) 0x0A, (byte) 0x8F, (byte) 0x9E, (byte) 0x59, (byte) 0x2C, (byte) 0x44,
+                (byte) 0xB5, (byte) 0xF9, (byte) 0x53, (byte) 0x43,
+        });
+
+        BigInteger q = new BigInteger(1, new byte[] {
+                (byte) 0xA1, (byte) 0x9B, (byte) 0x1D, (byte) 0xC0, (byte) 0xE3, (byte) 0xF6,
+                (byte) 0x4A, (byte) 0x35, (byte) 0xE1, (byte) 0x8A, (byte) 0x43, (byte) 0xC2,
+                (byte) 0x9C, (byte) 0xF9, (byte) 0x52, (byte) 0x8F, (byte) 0x94, (byte) 0xA1,
+                (byte) 0x12, (byte) 0x11, (byte) 0xDB, (byte) 0x9A, (byte) 0xB6, (byte) 0x35,
+                (byte) 0x56, (byte) 0x26, (byte) 0x60, (byte) 0x89, (byte) 0x11, (byte) 0xAC,
+                (byte) 0xA8, (byte) 0xE5,
+        });
+
+        BigInteger g = new BigInteger(1, new byte[] {
+                (byte) 0xA1, (byte) 0x5C, (byte) 0x57, (byte) 0x15, (byte) 0xC3, (byte) 0xD9,
+                (byte) 0xD7, (byte) 0x41, (byte) 0x89, (byte) 0xD6, (byte) 0xB8, (byte) 0x7B,
+                (byte) 0xF3, (byte) 0xE0, (byte) 0xB3, (byte) 0xC5, (byte) 0xD1, (byte) 0xAA,
+                (byte) 0xF9, (byte) 0x55, (byte) 0x48, (byte) 0xF1, (byte) 0xDA, (byte) 0xE8,
+                (byte) 0x6F, (byte) 0x51, (byte) 0x05, (byte) 0xB2, (byte) 0xC9, (byte) 0x64,
+                (byte) 0xDA, (byte) 0x5F, (byte) 0xD4, (byte) 0xAA, (byte) 0xFD, (byte) 0x67,
+                (byte) 0xE0, (byte) 0x10, (byte) 0x2C, (byte) 0x1F, (byte) 0x03, (byte) 0x10,
+                (byte) 0xD4, (byte) 0x4B, (byte) 0x20, (byte) 0x82, (byte) 0x2B, (byte) 0x04,
+                (byte) 0xF9, (byte) 0x09, (byte) 0xAE, (byte) 0x28, (byte) 0x3D, (byte) 0x9B,
+                (byte) 0xFF, (byte) 0x87, (byte) 0x76, (byte) 0xCD, (byte) 0xF0, (byte) 0x11,
+                (byte) 0xB7, (byte) 0xEA, (byte) 0xE6, (byte) 0xCD, (byte) 0x60, (byte) 0xD3,
+                (byte) 0x8C, (byte) 0x74, (byte) 0xD3, (byte) 0x45, (byte) 0x63, (byte) 0x69,
+                (byte) 0x3F, (byte) 0x1D, (byte) 0x31, (byte) 0x25, (byte) 0x49, (byte) 0x97,
+                (byte) 0x4B, (byte) 0x73, (byte) 0x34, (byte) 0x12, (byte) 0x73, (byte) 0x27,
+                (byte) 0x4C, (byte) 0xDA, (byte) 0xF3, (byte) 0x08, (byte) 0xA8, (byte) 0xA9,
+                (byte) 0x27, (byte) 0xE4, (byte) 0xB8, (byte) 0xD6, (byte) 0xB5, (byte) 0xC4,
+                (byte) 0x18, (byte) 0xED, (byte) 0xBD, (byte) 0x6F, (byte) 0xA2, (byte) 0x36,
+                (byte) 0xA2, (byte) 0x9C, (byte) 0x27, (byte) 0x62, (byte) 0x7F, (byte) 0x93,
+                (byte) 0xD7, (byte) 0x52, (byte) 0xA9, (byte) 0x76, (byte) 0x55, (byte) 0x99,
+                (byte) 0x00, (byte) 0x5B, (byte) 0xC2, (byte) 0xB9, (byte) 0x18, (byte) 0xAC,
+                (byte) 0x6B, (byte) 0x83, (byte) 0x0D, (byte) 0xA1, (byte) 0xC5, (byte) 0x01,
+                (byte) 0x1A, (byte) 0xE5, (byte) 0x4D, (byte) 0x2F, (byte) 0xCF, (byte) 0x5D,
+                (byte) 0xB2, (byte) 0xE7, (byte) 0xC7, (byte) 0xCB, (byte) 0x2C, (byte) 0xFF,
+                (byte) 0x51, (byte) 0x1B, (byte) 0x9D, (byte) 0xA4, (byte) 0x05, (byte) 0xEB,
+                (byte) 0x17, (byte) 0xD8, (byte) 0x97, (byte) 0x9D, (byte) 0x0C, (byte) 0x59,
+                (byte) 0x92, (byte) 0x8A, (byte) 0x03, (byte) 0x34, (byte) 0xFD, (byte) 0x16,
+                (byte) 0x0F, (byte) 0x2A, (byte) 0xF9, (byte) 0x7D, (byte) 0xC3, (byte) 0x41,
+                (byte) 0x0D, (byte) 0x06, (byte) 0x5A, (byte) 0x4B, (byte) 0x34, (byte) 0xD5,
+                (byte) 0xF5, (byte) 0x09, (byte) 0x1C, (byte) 0xCE, (byte) 0xA7, (byte) 0x19,
+                (byte) 0x6D, (byte) 0x04, (byte) 0x53, (byte) 0x71, (byte) 0xCC, (byte) 0x84,
+                (byte) 0xA0, (byte) 0xB2, (byte) 0xA0, (byte) 0x68, (byte) 0xA3, (byte) 0x40,
+                (byte) 0xC0, (byte) 0x67, (byte) 0x38, (byte) 0x96, (byte) 0x73, (byte) 0x2E,
+                (byte) 0x8E, (byte) 0x2A, (byte) 0x9D, (byte) 0x56, (byte) 0xE9, (byte) 0xAC,
+                (byte) 0xC7, (byte) 0xEC, (byte) 0x84, (byte) 0x7F, (byte) 0xFC, (byte) 0xE0,
+                (byte) 0x69, (byte) 0x03, (byte) 0x8B, (byte) 0x48, (byte) 0x64, (byte) 0x76,
+                (byte) 0x85, (byte) 0xA5, (byte) 0x10, (byte) 0xD9, (byte) 0x31, (byte) 0xC3,
+                (byte) 0x8B, (byte) 0x07, (byte) 0x48, (byte) 0x62, (byte) 0xF6, (byte) 0x68,
+                (byte) 0xF2, (byte) 0x96, (byte) 0xB2, (byte) 0x18, (byte) 0x5B, (byte) 0xFF,
+                (byte) 0x6D, (byte) 0xD1, (byte) 0x6B, (byte) 0xF5, (byte) 0xFD, (byte) 0x81,
+                (byte) 0xF1, (byte) 0xFD, (byte) 0x04, (byte) 0xF0, (byte) 0x9F, (byte) 0xB7,
+                (byte) 0x08, (byte) 0x95, (byte) 0x57, (byte) 0x48, (byte) 0x07, (byte) 0x00,
+                (byte) 0x52, (byte) 0xEC, (byte) 0x75, (byte) 0x91, (byte) 0x02, (byte) 0x11,
+                (byte) 0xA3, (byte) 0x64, (byte) 0x26, (byte) 0xCA,
+        });
+
+        AlgorithmParameterSpec spec = new DSAParameterSpec(p, q, g);
+        mGenerator.initialize(new KeyPairGeneratorSpec.Builder(getContext())
+                .setAlias(TEST_ALIAS_1)
+                .setKeyType("DSA")
+                .setKeySize(2048)
+                .setAlgorithmParameterSpec(spec)
+                .setSubject(TEST_DN_1)
+                .setSerialNumber(TEST_SERIAL_1)
+                .setStartDate(NOW)
+                .setEndDate(NOW_PLUS_10_YEARS)
+                .build());
+
+        final KeyPair pair = mGenerator.generateKeyPair();
+        assertNotNull("The KeyPair returned should not be null", pair);
+
+        assertKeyPairCorrect(pair, TEST_ALIAS_1, "DSA", 2048, spec, TEST_DN_1, TEST_SERIAL_1, NOW,
+                NOW_PLUS_10_YEARS);
+    }
+
+    public void testKeyPairGenerator_GenerateKeyPair_EC_Unencrypted_Success() throws Exception {
+        mGenerator.initialize(new KeyPairGeneratorSpec.Builder(getContext())
+                .setAlias(TEST_ALIAS_1)
+                .setKeyType("EC")
+                .setSubject(TEST_DN_1)
+                .setSerialNumber(TEST_SERIAL_1)
+                .setStartDate(NOW)
+                .setEndDate(NOW_PLUS_10_YEARS)
+                .build());
+
+        final KeyPair pair = mGenerator.generateKeyPair();
+        assertNotNull("The KeyPair returned should not be null", pair);
+
+        assertKeyPairCorrect(pair, TEST_ALIAS_1, "EC", 256, null, TEST_DN_1, TEST_SERIAL_1, NOW,
+                NOW_PLUS_10_YEARS);
+    }
+
+    public void testKeyPairGenerator_GenerateKeyPair_EC_P521_Unencrypted_Success() throws Exception {
+        mGenerator.initialize(new KeyPairGeneratorSpec.Builder(getContext())
+                .setAlias(TEST_ALIAS_1)
+                .setKeyType("EC")
+                .setKeySize(521)
+                .setSubject(TEST_DN_1)
+                .setSerialNumber(TEST_SERIAL_1)
+                .setStartDate(NOW)
+                .setEndDate(NOW_PLUS_10_YEARS)
+                .build());
+
+        final KeyPair pair = mGenerator.generateKeyPair();
+        assertNotNull("The KeyPair returned should not be null", pair);
+
+        assertKeyPairCorrect(pair, TEST_ALIAS_1, "EC", 521, null, TEST_DN_1, TEST_SERIAL_1, NOW,
+                NOW_PLUS_10_YEARS);
+    }
+
+    public void testKeyPairGenerator_GenerateKeyPair_RSA_Unencrypted_Success() throws Exception {
         mGenerator.initialize(new KeyPairGeneratorSpec.Builder(getContext())
                 .setAlias(TEST_ALIAS_1)
                 .setSubject(TEST_DN_1)
@@ -118,7 +338,8 @@
         final KeyPair pair = mGenerator.generateKeyPair();
         assertNotNull("The KeyPair returned should not be null", pair);
 
-        assertKeyPairCorrect(pair, TEST_ALIAS_1, TEST_DN_1, TEST_SERIAL_1, NOW, NOW_PLUS_10_YEARS);
+        assertKeyPairCorrect(pair, TEST_ALIAS_1, "RSA", 2048, null, TEST_DN_1, TEST_SERIAL_1, NOW,
+                NOW_PLUS_10_YEARS);
     }
 
     public void testKeyPairGenerator_GenerateKeyPair_Replaced_Unencrypted_Success()
@@ -130,8 +351,8 @@
                     .setStartDate(NOW).setEndDate(NOW_PLUS_10_YEARS).build());
             final KeyPair pair1 = mGenerator.generateKeyPair();
             assertNotNull("The KeyPair returned should not be null", pair1);
-            assertKeyPairCorrect(pair1, TEST_ALIAS_1, TEST_DN_1, TEST_SERIAL_1, NOW,
-                    NOW_PLUS_10_YEARS);
+            assertKeyPairCorrect(pair1, TEST_ALIAS_1, "RSA", 2048, null, TEST_DN_1, TEST_SERIAL_1,
+                    NOW, NOW_PLUS_10_YEARS);
         }
 
         // Replace the original key
@@ -141,8 +362,8 @@
                     .setStartDate(NOW).setEndDate(NOW_PLUS_10_YEARS).build());
             final KeyPair pair2 = mGenerator.generateKeyPair();
             assertNotNull("The KeyPair returned should not be null", pair2);
-            assertKeyPairCorrect(pair2, TEST_ALIAS_1, TEST_DN_2, TEST_SERIAL_2, NOW,
-                    NOW_PLUS_10_YEARS);
+            assertKeyPairCorrect(pair2, TEST_ALIAS_1, "RSA", 2048, null, TEST_DN_2, TEST_SERIAL_2,
+                    NOW, NOW_PLUS_10_YEARS);
         }
     }
 
@@ -158,7 +379,7 @@
                 .build());
         final KeyPair pair1 = mGenerator.generateKeyPair();
         assertNotNull("The KeyPair returned should not be null", pair1);
-        assertKeyPairCorrect(pair1, TEST_ALIAS_1, TEST_DN_1, TEST_SERIAL_1, NOW,
+        assertKeyPairCorrect(pair1, TEST_ALIAS_1, "RSA", 2048, null, TEST_DN_1, TEST_SERIAL_1, NOW,
                 NOW_PLUS_10_YEARS);
 
         // Generate the second key
@@ -171,21 +392,52 @@
                 .build());
         final KeyPair pair2 = mGenerator.generateKeyPair();
         assertNotNull("The KeyPair returned should not be null", pair2);
-        assertKeyPairCorrect(pair2, TEST_ALIAS_2, TEST_DN_2, TEST_SERIAL_2, NOW,
+        assertKeyPairCorrect(pair2, TEST_ALIAS_2, "RSA", 2048, null, TEST_DN_2, TEST_SERIAL_2, NOW,
                 NOW_PLUS_10_YEARS);
 
         // Check the first key again
-        assertKeyPairCorrect(pair1, TEST_ALIAS_1, TEST_DN_1, TEST_SERIAL_1, NOW,
+        assertKeyPairCorrect(pair1, TEST_ALIAS_1, "RSA", 2048, null, TEST_DN_1, TEST_SERIAL_1, NOW,
                 NOW_PLUS_10_YEARS);
     }
 
-    private void assertKeyPairCorrect(KeyPair pair, String alias, X500Principal dn,
-            BigInteger serial, Date start, Date end) throws Exception {
+    private void assertKeyPairCorrect(KeyPair pair, String alias, String keyType, int keySize,
+            AlgorithmParameterSpec spec, X500Principal dn, BigInteger serial, Date start, Date end)
+            throws Exception {
         final PublicKey pubKey = pair.getPublic();
         assertNotNull("The PublicKey for the KeyPair should be not null", pubKey);
+        assertEquals(keyType, pubKey.getAlgorithm());
+        assertEquals("Public keys should be in X.509 format", "X.509", pubKey.getFormat());
+        assertNotNull("Public keys should be encodable", pubKey.getEncoded());
+
+        if ("DSA".equalsIgnoreCase(keyType)) {
+            DSAPublicKey dsaPubKey = (DSAPublicKey) pubKey;
+            DSAParams actualParams = dsaPubKey.getParams();
+            assertEquals(keySize, (actualParams.getP().bitLength() + 7) & ~7);
+            if (spec != null) {
+                DSAParameterSpec expectedParams = (DSAParameterSpec) spec;
+                assertEquals(expectedParams.getP(), actualParams.getP());
+                assertEquals(expectedParams.getQ(), actualParams.getQ());
+                assertEquals(expectedParams.getG(), actualParams.getG());
+            }
+        } else if ("EC".equalsIgnoreCase(keyType)) {
+            assertEquals("Curve should be what was specified during initialization", keySize,
+                    ((ECPublicKey) pubKey).getParams().getCurve().getField().getFieldSize());
+        } else if ("RSA".equalsIgnoreCase(keyType)) {
+            RSAPublicKey rsaPubKey = (RSAPublicKey) pubKey;
+            assertEquals("Modulus size should be what is specified during initialization",
+                    (keySize + 7) & ~7, (rsaPubKey.getModulus().bitLength() + 7) & ~7);
+            if (spec != null) {
+                RSAKeyGenParameterSpec params = (RSAKeyGenParameterSpec) spec;
+                assertEquals((keySize + 7) & ~7, (params.getKeysize() + 7) & ~7);
+                assertEquals(params.getPublicExponent(), rsaPubKey.getPublicExponent());
+            }
+        }
 
         final PrivateKey privKey = pair.getPrivate();
         assertNotNull("The PrivateKey for the KeyPair should be not null", privKey);
+        assertEquals(keyType, privKey.getAlgorithm());
+        assertNull("getFormat() should return null", privKey.getFormat());
+        assertNull("getEncoded() should return null", privKey.getEncoded());
 
         KeyStore.Entry entry = mKeyStore.getEntry(alias, null);
         assertNotNull("Entry should exist", entry);
@@ -221,6 +473,95 @@
         Certificate[] chain = privEntry.getCertificateChain();
         assertEquals("A list of CA certificates should not exist for the generated entry", 1,
                 chain.length);
+
+        assertUsableInSSLConnection(privKey, x509userCert);
+
+        assertEquals("Retrieved key and generated key should be equal", privKey,
+                privEntry.getPrivateKey());
+    }
+
+    private static void assertUsableInSSLConnection(final PrivateKey privKey,
+            final X509Certificate x509userCert) throws Exception {
+        // TODO this should probably be in something like:
+        // TestKeyStore.createForClientSelfSigned(...)
+        String provider = SSLContext.getDefault().getProvider().getName();
+        TrustManager[] clientTrustManagers = TestKeyStore.createTrustManagers(
+                TestKeyStore.getIntermediateCa().keyStore);
+        SSLContext clientContext = TestSSLContext.createSSLContext("TLS", provider,
+                new KeyManager[] {
+                    TestKeyManager.wrap(new MyKeyManager(privKey, x509userCert))
+                }, clientTrustManagers);
+        TestKeyStore serverKeyStore = TestKeyStore.getServer();
+        serverKeyStore.keyStore.setCertificateEntry("client-selfSigned", x509userCert);
+        SSLContext serverContext = TestSSLContext.createSSLContext("TLS", provider,
+                serverKeyStore.keyManagers,
+                TestKeyStore.createTrustManagers(serverKeyStore.keyStore));
+        SSLServerSocket serverSocket = (SSLServerSocket) serverContext.getServerSocketFactory()
+                .createServerSocket(0);
+        InetAddress host = InetAddress.getLocalHost();
+        int port = serverSocket.getLocalPort();
+
+        SSLSocket client = (SSLSocket) clientContext.getSocketFactory().createSocket(host, port);
+        final SSLSocket server = (SSLSocket) serverSocket.accept();
+        ExecutorService executor = Executors.newSingleThreadExecutor();
+        Future<Void> future = executor.submit(new Callable<Void>() {
+            @Override
+            public Void call() throws Exception {
+                server.setNeedClientAuth(true);
+                server.setWantClientAuth(true);
+                server.startHandshake();
+                return null;
+            }
+        });
+        executor.shutdown();
+        client.startHandshake();
+        Certificate[] usedClientCerts = client.getSession().getLocalCertificates();
+        assertNotNull(usedClientCerts);
+        assertEquals(1, usedClientCerts.length);
+        assertEquals(x509userCert, usedClientCerts[0]);
+        future.get();
+        client.close();
+        server.close();
+    }
+
+    private static class MyKeyManager extends X509ExtendedKeyManager {
+        private final PrivateKey key;
+        private final X509Certificate[] chain;
+
+        public MyKeyManager(PrivateKey key, X509Certificate cert) {
+            this.key = key;
+            this.chain = new X509Certificate[] { cert };
+        }
+
+        @Override
+        public String chooseClientAlias(String[] keyType, Principal[] issuers, Socket socket) {
+            return "fake";
+        }
+
+        @Override
+        public String chooseServerAlias(String keyType, Principal[] issuers, Socket socket) {
+            throw new UnsupportedOperationException("Not implemented");
+        }
+
+        @Override
+        public X509Certificate[] getCertificateChain(String alias) {
+            return chain;
+        }
+
+        @Override
+        public String[] getClientAliases(String keyType, Principal[] issuers) {
+            return new String[] { "fake" };
+        }
+
+        @Override
+        public String[] getServerAliases(String keyType, Principal[] issuers) {
+            throw new UnsupportedOperationException("Not implemented");
+        }
+
+        @Override
+        public PrivateKey getPrivateKey(String alias) {
+            return key;
+        }
     }
 
     private static void assertDateEquals(String message, Date date1, Date date2) throws Exception {
diff --git a/tests/tests/keystore/src/android/keystore/cts/AndroidKeyStoreTest.java b/tests/tests/keystore/src/android/keystore/cts/AndroidKeyStoreTest.java
index 32f03ff..2c926a8 100644
--- a/tests/tests/keystore/src/android/keystore/cts/AndroidKeyStoreTest.java
+++ b/tests/tests/keystore/src/android/keystore/cts/AndroidKeyStoreTest.java
@@ -33,6 +33,10 @@
 import java.security.PublicKey;
 import java.security.cert.Certificate;
 import java.security.cert.CertificateFactory;
+import java.security.interfaces.DSAPrivateKey;
+import java.security.interfaces.DSAPublicKey;
+import java.security.interfaces.ECPrivateKey;
+import java.security.interfaces.ECPublicKey;
 import java.security.interfaces.RSAPrivateKey;
 import java.security.spec.PKCS8EncodedKeySpec;
 import java.util.ArrayList;
@@ -73,7 +77,7 @@
      *
      * openssl x509 -outform d -in cacert.pem | xxd -i | sed 's/0x/(byte) 0x/g'
      */
-    private static final byte[] FAKE_CA_1 = {
+    private static final byte[] FAKE_RSA_CA_1 = {
             (byte) 0x30, (byte) 0x82, (byte) 0x02, (byte) 0xce, (byte) 0x30, (byte) 0x82,
             (byte) 0x02, (byte) 0x37, (byte) 0xa0, (byte) 0x03, (byte) 0x02, (byte) 0x01,
             (byte) 0x02, (byte) 0x02, (byte) 0x09, (byte) 0x00, (byte) 0xe1, (byte) 0x6a,
@@ -202,7 +206,7 @@
      *
      * openssl pkcs8 -topk8 -outform d -in userkey.pem -nocrypt | xxd -i | sed 's/0x/(byte) 0x/g'
      */
-    private static final byte[] FAKE_KEY_1 = new byte[] {
+    private static final byte[] FAKE_RSA_KEY_1 = new byte[] {
             (byte) 0x30, (byte) 0x82, (byte) 0x02, (byte) 0x78, (byte) 0x02, (byte) 0x01,
             (byte) 0x00, (byte) 0x30, (byte) 0x0d, (byte) 0x06, (byte) 0x09, (byte) 0x2a,
             (byte) 0x86, (byte) 0x48, (byte) 0x86, (byte) 0xf7, (byte) 0x0d, (byte) 0x01,
@@ -316,7 +320,7 @@
      *
      * openssl x509 -outform d -in usercert.pem | xxd -i | sed 's/0x/(byte) 0x/g'
      */
-    private static final byte[] FAKE_USER_1 = new byte[] {
+    private static final byte[] FAKE_RSA_USER_1 = new byte[] {
             (byte) 0x30, (byte) 0x82, (byte) 0x02, (byte) 0x95, (byte) 0x30, (byte) 0x82,
             (byte) 0x01, (byte) 0xfe, (byte) 0xa0, (byte) 0x03, (byte) 0x02, (byte) 0x01,
             (byte) 0x02, (byte) 0x02, (byte) 0x01, (byte) 0x01, (byte) 0x30, (byte) 0x0d,
@@ -430,6 +434,628 @@
             (byte) 0x08, (byte) 0x41, (byte) 0x0a, (byte) 0xf3, (byte) 0x72
     };
 
+    /*
+     * The keys and certificates below are generated with:
+     *
+     * openssl req -new -x509 -days 3650 -extensions v3_ca -keyout cakey.pem -out cacert.pem
+     * openssl ecparam -name prime256v1 -out ecparam.pem
+     * openssl req -newkey ec:ecparam.pem -keyout userkey.pem -nodes -days 3650 -out userkey.req
+     * mkdir -p demoCA/newcerts
+     * touch demoCA/index.txt
+     * echo "01" > demoCA/serial
+     * openssl ca -out usercert.pem -in userkey.req -cert cacert.pem -keyfile cakey.pem -days 3650
+     */
+
+    /**
+     * Generated from above and converted with:
+     *
+     * openssl x509 -outform d -in cacert.pem | xxd -i | sed 's/0x/(byte) 0x/g'
+     */
+    private static final byte[] FAKE_EC_CA_1 = {
+            (byte) 0x30, (byte) 0x82, (byte) 0x02, (byte) 0x58, (byte) 0x30, (byte) 0x82,
+            (byte) 0x01, (byte) 0xc1, (byte) 0xa0, (byte) 0x03, (byte) 0x02, (byte) 0x01,
+            (byte) 0x02, (byte) 0x02, (byte) 0x09, (byte) 0x00, (byte) 0xe1, (byte) 0xb2,
+            (byte) 0x8c, (byte) 0x04, (byte) 0x95, (byte) 0xeb, (byte) 0x10, (byte) 0xcb,
+            (byte) 0x30, (byte) 0x0d, (byte) 0x06, (byte) 0x09, (byte) 0x2a, (byte) 0x86,
+            (byte) 0x48, (byte) 0x86, (byte) 0xf7, (byte) 0x0d, (byte) 0x01, (byte) 0x01,
+            (byte) 0x05, (byte) 0x05, (byte) 0x00, (byte) 0x30, (byte) 0x45, (byte) 0x31,
+            (byte) 0x0b, (byte) 0x30, (byte) 0x09, (byte) 0x06, (byte) 0x03, (byte) 0x55,
+            (byte) 0x04, (byte) 0x06, (byte) 0x13, (byte) 0x02, (byte) 0x41, (byte) 0x55,
+            (byte) 0x31, (byte) 0x13, (byte) 0x30, (byte) 0x11, (byte) 0x06, (byte) 0x03,
+            (byte) 0x55, (byte) 0x04, (byte) 0x08, (byte) 0x0c, (byte) 0x0a, (byte) 0x53,
+            (byte) 0x6f, (byte) 0x6d, (byte) 0x65, (byte) 0x2d, (byte) 0x53, (byte) 0x74,
+            (byte) 0x61, (byte) 0x74, (byte) 0x65, (byte) 0x31, (byte) 0x21, (byte) 0x30,
+            (byte) 0x1f, (byte) 0x06, (byte) 0x03, (byte) 0x55, (byte) 0x04, (byte) 0x0a,
+            (byte) 0x0c, (byte) 0x18, (byte) 0x49, (byte) 0x6e, (byte) 0x74, (byte) 0x65,
+            (byte) 0x72, (byte) 0x6e, (byte) 0x65, (byte) 0x74, (byte) 0x20, (byte) 0x57,
+            (byte) 0x69, (byte) 0x64, (byte) 0x67, (byte) 0x69, (byte) 0x74, (byte) 0x73,
+            (byte) 0x20, (byte) 0x50, (byte) 0x74, (byte) 0x79, (byte) 0x20, (byte) 0x4c,
+            (byte) 0x74, (byte) 0x64, (byte) 0x30, (byte) 0x1e, (byte) 0x17, (byte) 0x0d,
+            (byte) 0x31, (byte) 0x33, (byte) 0x30, (byte) 0x38, (byte) 0x32, (byte) 0x37,
+            (byte) 0x31, (byte) 0x36, (byte) 0x32, (byte) 0x38, (byte) 0x32, (byte) 0x38,
+            (byte) 0x5a, (byte) 0x17, (byte) 0x0d, (byte) 0x32, (byte) 0x33, (byte) 0x30,
+            (byte) 0x38, (byte) 0x32, (byte) 0x35, (byte) 0x31, (byte) 0x36, (byte) 0x32,
+            (byte) 0x38, (byte) 0x32, (byte) 0x38, (byte) 0x5a, (byte) 0x30, (byte) 0x45,
+            (byte) 0x31, (byte) 0x0b, (byte) 0x30, (byte) 0x09, (byte) 0x06, (byte) 0x03,
+            (byte) 0x55, (byte) 0x04, (byte) 0x06, (byte) 0x13, (byte) 0x02, (byte) 0x41,
+            (byte) 0x55, (byte) 0x31, (byte) 0x13, (byte) 0x30, (byte) 0x11, (byte) 0x06,
+            (byte) 0x03, (byte) 0x55, (byte) 0x04, (byte) 0x08, (byte) 0x0c, (byte) 0x0a,
+            (byte) 0x53, (byte) 0x6f, (byte) 0x6d, (byte) 0x65, (byte) 0x2d, (byte) 0x53,
+            (byte) 0x74, (byte) 0x61, (byte) 0x74, (byte) 0x65, (byte) 0x31, (byte) 0x21,
+            (byte) 0x30, (byte) 0x1f, (byte) 0x06, (byte) 0x03, (byte) 0x55, (byte) 0x04,
+            (byte) 0x0a, (byte) 0x0c, (byte) 0x18, (byte) 0x49, (byte) 0x6e, (byte) 0x74,
+            (byte) 0x65, (byte) 0x72, (byte) 0x6e, (byte) 0x65, (byte) 0x74, (byte) 0x20,
+            (byte) 0x57, (byte) 0x69, (byte) 0x64, (byte) 0x67, (byte) 0x69, (byte) 0x74,
+            (byte) 0x73, (byte) 0x20, (byte) 0x50, (byte) 0x74, (byte) 0x79, (byte) 0x20,
+            (byte) 0x4c, (byte) 0x74, (byte) 0x64, (byte) 0x30, (byte) 0x81, (byte) 0x9f,
+            (byte) 0x30, (byte) 0x0d, (byte) 0x06, (byte) 0x09, (byte) 0x2a, (byte) 0x86,
+            (byte) 0x48, (byte) 0x86, (byte) 0xf7, (byte) 0x0d, (byte) 0x01, (byte) 0x01,
+            (byte) 0x01, (byte) 0x05, (byte) 0x00, (byte) 0x03, (byte) 0x81, (byte) 0x8d,
+            (byte) 0x00, (byte) 0x30, (byte) 0x81, (byte) 0x89, (byte) 0x02, (byte) 0x81,
+            (byte) 0x81, (byte) 0x00, (byte) 0xb5, (byte) 0xf6, (byte) 0x08, (byte) 0x0f,
+            (byte) 0xc4, (byte) 0x4d, (byte) 0xe4, (byte) 0x0d, (byte) 0x34, (byte) 0x1d,
+            (byte) 0xe2, (byte) 0x23, (byte) 0x18, (byte) 0x63, (byte) 0x03, (byte) 0xf7,
+            (byte) 0x14, (byte) 0x0e, (byte) 0x98, (byte) 0xcd, (byte) 0x45, (byte) 0x1f,
+            (byte) 0xfe, (byte) 0xfb, (byte) 0x09, (byte) 0x3f, (byte) 0x5d, (byte) 0x36,
+            (byte) 0x3b, (byte) 0x0f, (byte) 0xf9, (byte) 0x5e, (byte) 0x86, (byte) 0x56,
+            (byte) 0x64, (byte) 0xd7, (byte) 0x3f, (byte) 0xae, (byte) 0x33, (byte) 0x09,
+            (byte) 0xd3, (byte) 0xdd, (byte) 0x06, (byte) 0x17, (byte) 0x26, (byte) 0xdc,
+            (byte) 0xa2, (byte) 0x8c, (byte) 0x3c, (byte) 0x65, (byte) 0xed, (byte) 0x03,
+            (byte) 0x82, (byte) 0x78, (byte) 0x9b, (byte) 0xee, (byte) 0xe3, (byte) 0x98,
+            (byte) 0x58, (byte) 0xe1, (byte) 0xf1, (byte) 0xa0, (byte) 0x85, (byte) 0xae,
+            (byte) 0x63, (byte) 0x84, (byte) 0x41, (byte) 0x46, (byte) 0xa7, (byte) 0x4f,
+            (byte) 0xdc, (byte) 0xbb, (byte) 0x1c, (byte) 0x6e, (byte) 0xec, (byte) 0x7b,
+            (byte) 0xd5, (byte) 0xab, (byte) 0x3d, (byte) 0x6a, (byte) 0x05, (byte) 0x58,
+            (byte) 0x0f, (byte) 0x9b, (byte) 0x6a, (byte) 0x67, (byte) 0x4b, (byte) 0xe9,
+            (byte) 0x2a, (byte) 0x6d, (byte) 0x96, (byte) 0x11, (byte) 0x53, (byte) 0x95,
+            (byte) 0x78, (byte) 0xaa, (byte) 0xd1, (byte) 0x91, (byte) 0x4a, (byte) 0xf8,
+            (byte) 0x54, (byte) 0x52, (byte) 0x6d, (byte) 0xb9, (byte) 0xca, (byte) 0x74,
+            (byte) 0x81, (byte) 0xf8, (byte) 0x99, (byte) 0x64, (byte) 0xd1, (byte) 0x4f,
+            (byte) 0x01, (byte) 0x38, (byte) 0x4f, (byte) 0x08, (byte) 0x5c, (byte) 0x31,
+            (byte) 0xcb, (byte) 0x7c, (byte) 0x5c, (byte) 0x78, (byte) 0x5d, (byte) 0x47,
+            (byte) 0xd9, (byte) 0xf0, (byte) 0x1a, (byte) 0xeb, (byte) 0x02, (byte) 0x03,
+            (byte) 0x01, (byte) 0x00, (byte) 0x01, (byte) 0xa3, (byte) 0x50, (byte) 0x30,
+            (byte) 0x4e, (byte) 0x30, (byte) 0x1d, (byte) 0x06, (byte) 0x03, (byte) 0x55,
+            (byte) 0x1d, (byte) 0x0e, (byte) 0x04, (byte) 0x16, (byte) 0x04, (byte) 0x14,
+            (byte) 0x5f, (byte) 0x5b, (byte) 0x5e, (byte) 0xac, (byte) 0x29, (byte) 0xfa,
+            (byte) 0xa1, (byte) 0x9f, (byte) 0x9e, (byte) 0xad, (byte) 0x46, (byte) 0xe1,
+            (byte) 0xbc, (byte) 0x20, (byte) 0x72, (byte) 0xcf, (byte) 0x4a, (byte) 0xd4,
+            (byte) 0xfa, (byte) 0xe3, (byte) 0x30, (byte) 0x1f, (byte) 0x06, (byte) 0x03,
+            (byte) 0x55, (byte) 0x1d, (byte) 0x23, (byte) 0x04, (byte) 0x18, (byte) 0x30,
+            (byte) 0x16, (byte) 0x80, (byte) 0x14, (byte) 0x5f, (byte) 0x5b, (byte) 0x5e,
+            (byte) 0xac, (byte) 0x29, (byte) 0xfa, (byte) 0xa1, (byte) 0x9f, (byte) 0x9e,
+            (byte) 0xad, (byte) 0x46, (byte) 0xe1, (byte) 0xbc, (byte) 0x20, (byte) 0x72,
+            (byte) 0xcf, (byte) 0x4a, (byte) 0xd4, (byte) 0xfa, (byte) 0xe3, (byte) 0x30,
+            (byte) 0x0c, (byte) 0x06, (byte) 0x03, (byte) 0x55, (byte) 0x1d, (byte) 0x13,
+            (byte) 0x04, (byte) 0x05, (byte) 0x30, (byte) 0x03, (byte) 0x01, (byte) 0x01,
+            (byte) 0xff, (byte) 0x30, (byte) 0x0d, (byte) 0x06, (byte) 0x09, (byte) 0x2a,
+            (byte) 0x86, (byte) 0x48, (byte) 0x86, (byte) 0xf7, (byte) 0x0d, (byte) 0x01,
+            (byte) 0x01, (byte) 0x05, (byte) 0x05, (byte) 0x00, (byte) 0x03, (byte) 0x81,
+            (byte) 0x81, (byte) 0x00, (byte) 0xa1, (byte) 0x4a, (byte) 0xe6, (byte) 0xfc,
+            (byte) 0x7f, (byte) 0x17, (byte) 0xaa, (byte) 0x65, (byte) 0x4a, (byte) 0x34,
+            (byte) 0xde, (byte) 0x69, (byte) 0x67, (byte) 0x54, (byte) 0x4d, (byte) 0xa2,
+            (byte) 0xc2, (byte) 0x98, (byte) 0x02, (byte) 0x43, (byte) 0x6a, (byte) 0x0e,
+            (byte) 0x0b, (byte) 0x7f, (byte) 0xa4, (byte) 0x46, (byte) 0xaf, (byte) 0xa4,
+            (byte) 0x65, (byte) 0xa0, (byte) 0xdb, (byte) 0xf1, (byte) 0x5b, (byte) 0xd5,
+            (byte) 0x09, (byte) 0xbc, (byte) 0xee, (byte) 0x37, (byte) 0x51, (byte) 0x19,
+            (byte) 0x36, (byte) 0xc0, (byte) 0x90, (byte) 0xd3, (byte) 0x5f, (byte) 0xf3,
+            (byte) 0x4f, (byte) 0xb9, (byte) 0x08, (byte) 0x45, (byte) 0x0e, (byte) 0x01,
+            (byte) 0x8a, (byte) 0x95, (byte) 0xef, (byte) 0x92, (byte) 0x95, (byte) 0x33,
+            (byte) 0x78, (byte) 0xdd, (byte) 0x90, (byte) 0xbb, (byte) 0xf3, (byte) 0x06,
+            (byte) 0x75, (byte) 0xd0, (byte) 0x66, (byte) 0xe6, (byte) 0xd0, (byte) 0x18,
+            (byte) 0x6e, (byte) 0xeb, (byte) 0x1c, (byte) 0x52, (byte) 0xc3, (byte) 0x2e,
+            (byte) 0x57, (byte) 0x7d, (byte) 0xa9, (byte) 0x03, (byte) 0xdb, (byte) 0xf4,
+            (byte) 0x57, (byte) 0x5f, (byte) 0x6c, (byte) 0x7e, (byte) 0x00, (byte) 0x0d,
+            (byte) 0x8f, (byte) 0xe8, (byte) 0x91, (byte) 0xf7, (byte) 0xae, (byte) 0x24,
+            (byte) 0x35, (byte) 0x07, (byte) 0xb5, (byte) 0x48, (byte) 0x2d, (byte) 0x36,
+            (byte) 0x30, (byte) 0x5d, (byte) 0xe9, (byte) 0x49, (byte) 0x2d, (byte) 0xd1,
+            (byte) 0x5d, (byte) 0xc5, (byte) 0xf4, (byte) 0x33, (byte) 0x77, (byte) 0x3c,
+            (byte) 0x71, (byte) 0xad, (byte) 0x90, (byte) 0x65, (byte) 0xa9, (byte) 0xc1,
+            (byte) 0x0b, (byte) 0x5c, (byte) 0x62, (byte) 0x55, (byte) 0x50, (byte) 0x6f,
+            (byte) 0x9b, (byte) 0xc9, (byte) 0x0d, (byte) 0xee
+    };
+
+    /**
+     * Generated from above and converted with:
+     *
+     * openssl pkcs8 -topk8 -outform d -in userkey.pem -nocrypt | xxd -i | sed 's/0x/(byte) 0x/g'
+     */
+    private static final byte[] FAKE_EC_KEY_1 = new byte[] {
+            (byte) 0x30, (byte) 0x81, (byte) 0x87, (byte) 0x02, (byte) 0x01, (byte) 0x00,
+            (byte) 0x30, (byte) 0x13, (byte) 0x06, (byte) 0x07, (byte) 0x2a, (byte) 0x86,
+            (byte) 0x48, (byte) 0xce, (byte) 0x3d, (byte) 0x02, (byte) 0x01, (byte) 0x06,
+            (byte) 0x08, (byte) 0x2a, (byte) 0x86, (byte) 0x48, (byte) 0xce, (byte) 0x3d,
+            (byte) 0x03, (byte) 0x01, (byte) 0x07, (byte) 0x04, (byte) 0x6d, (byte) 0x30,
+            (byte) 0x6b, (byte) 0x02, (byte) 0x01, (byte) 0x01, (byte) 0x04, (byte) 0x20,
+            (byte) 0x3a, (byte) 0x8a, (byte) 0x02, (byte) 0xdc, (byte) 0xde, (byte) 0x70,
+            (byte) 0x84, (byte) 0x45, (byte) 0x34, (byte) 0xaf, (byte) 0xbd, (byte) 0xd5,
+            (byte) 0x02, (byte) 0x17, (byte) 0x69, (byte) 0x90, (byte) 0x65, (byte) 0x1e,
+            (byte) 0x87, (byte) 0xf1, (byte) 0x3d, (byte) 0x17, (byte) 0xb6, (byte) 0xf4,
+            (byte) 0x31, (byte) 0x94, (byte) 0x86, (byte) 0x76, (byte) 0x55, (byte) 0xf7,
+            (byte) 0xcc, (byte) 0xba, (byte) 0xa1, (byte) 0x44, (byte) 0x03, (byte) 0x42,
+            (byte) 0x00, (byte) 0x04, (byte) 0xd9, (byte) 0xcf, (byte) 0xe7, (byte) 0x9b,
+            (byte) 0x23, (byte) 0xc8, (byte) 0xa3, (byte) 0xb8, (byte) 0x33, (byte) 0x14,
+            (byte) 0xa4, (byte) 0x4d, (byte) 0x75, (byte) 0x90, (byte) 0xf3, (byte) 0xcd,
+            (byte) 0x43, (byte) 0xe5, (byte) 0x1b, (byte) 0x05, (byte) 0x1d, (byte) 0xf3,
+            (byte) 0xd0, (byte) 0xa3, (byte) 0xb7, (byte) 0x32, (byte) 0x5f, (byte) 0x79,
+            (byte) 0xdc, (byte) 0x88, (byte) 0xb8, (byte) 0x4d, (byte) 0xb3, (byte) 0xd1,
+            (byte) 0x6d, (byte) 0xf7, (byte) 0x75, (byte) 0xf3, (byte) 0xbf, (byte) 0x50,
+            (byte) 0xa1, (byte) 0xbc, (byte) 0x03, (byte) 0x64, (byte) 0x22, (byte) 0xe6,
+            (byte) 0x1a, (byte) 0xa1, (byte) 0xe1, (byte) 0x06, (byte) 0x68, (byte) 0x3b,
+            (byte) 0xbc, (byte) 0x9f, (byte) 0xd3, (byte) 0xae, (byte) 0x77, (byte) 0x5e,
+            (byte) 0x88, (byte) 0x0c, (byte) 0x5e, (byte) 0x0c, (byte) 0xb2, (byte) 0x38
+    };
+
+    /**
+     * Generated from above and converted with:
+     *
+     * openssl x509 -outform d -in usercert.pem | xxd -i | sed 's/0x/(byte) 0x/g'
+     */
+    private static final byte[] FAKE_EC_USER_1 = new byte[] {
+            (byte) 0x30, (byte) 0x82, (byte) 0x02, (byte) 0x51, (byte) 0x30, (byte) 0x82,
+            (byte) 0x01, (byte) 0xba, (byte) 0xa0, (byte) 0x03, (byte) 0x02, (byte) 0x01,
+            (byte) 0x02, (byte) 0x02, (byte) 0x01, (byte) 0x01, (byte) 0x30, (byte) 0x0d,
+            (byte) 0x06, (byte) 0x09, (byte) 0x2a, (byte) 0x86, (byte) 0x48, (byte) 0x86,
+            (byte) 0xf7, (byte) 0x0d, (byte) 0x01, (byte) 0x01, (byte) 0x05, (byte) 0x05,
+            (byte) 0x00, (byte) 0x30, (byte) 0x45, (byte) 0x31, (byte) 0x0b, (byte) 0x30,
+            (byte) 0x09, (byte) 0x06, (byte) 0x03, (byte) 0x55, (byte) 0x04, (byte) 0x06,
+            (byte) 0x13, (byte) 0x02, (byte) 0x41, (byte) 0x55, (byte) 0x31, (byte) 0x13,
+            (byte) 0x30, (byte) 0x11, (byte) 0x06, (byte) 0x03, (byte) 0x55, (byte) 0x04,
+            (byte) 0x08, (byte) 0x0c, (byte) 0x0a, (byte) 0x53, (byte) 0x6f, (byte) 0x6d,
+            (byte) 0x65, (byte) 0x2d, (byte) 0x53, (byte) 0x74, (byte) 0x61, (byte) 0x74,
+            (byte) 0x65, (byte) 0x31, (byte) 0x21, (byte) 0x30, (byte) 0x1f, (byte) 0x06,
+            (byte) 0x03, (byte) 0x55, (byte) 0x04, (byte) 0x0a, (byte) 0x0c, (byte) 0x18,
+            (byte) 0x49, (byte) 0x6e, (byte) 0x74, (byte) 0x65, (byte) 0x72, (byte) 0x6e,
+            (byte) 0x65, (byte) 0x74, (byte) 0x20, (byte) 0x57, (byte) 0x69, (byte) 0x64,
+            (byte) 0x67, (byte) 0x69, (byte) 0x74, (byte) 0x73, (byte) 0x20, (byte) 0x50,
+            (byte) 0x74, (byte) 0x79, (byte) 0x20, (byte) 0x4c, (byte) 0x74, (byte) 0x64,
+            (byte) 0x30, (byte) 0x1e, (byte) 0x17, (byte) 0x0d, (byte) 0x31, (byte) 0x33,
+            (byte) 0x30, (byte) 0x38, (byte) 0x32, (byte) 0x37, (byte) 0x31, (byte) 0x36,
+            (byte) 0x33, (byte) 0x30, (byte) 0x30, (byte) 0x38, (byte) 0x5a, (byte) 0x17,
+            (byte) 0x0d, (byte) 0x32, (byte) 0x33, (byte) 0x30, (byte) 0x38, (byte) 0x32,
+            (byte) 0x35, (byte) 0x31, (byte) 0x36, (byte) 0x33, (byte) 0x30, (byte) 0x30,
+            (byte) 0x38, (byte) 0x5a, (byte) 0x30, (byte) 0x62, (byte) 0x31, (byte) 0x0b,
+            (byte) 0x30, (byte) 0x09, (byte) 0x06, (byte) 0x03, (byte) 0x55, (byte) 0x04,
+            (byte) 0x06, (byte) 0x13, (byte) 0x02, (byte) 0x41, (byte) 0x55, (byte) 0x31,
+            (byte) 0x13, (byte) 0x30, (byte) 0x11, (byte) 0x06, (byte) 0x03, (byte) 0x55,
+            (byte) 0x04, (byte) 0x08, (byte) 0x0c, (byte) 0x0a, (byte) 0x53, (byte) 0x6f,
+            (byte) 0x6d, (byte) 0x65, (byte) 0x2d, (byte) 0x53, (byte) 0x74, (byte) 0x61,
+            (byte) 0x74, (byte) 0x65, (byte) 0x31, (byte) 0x21, (byte) 0x30, (byte) 0x1f,
+            (byte) 0x06, (byte) 0x03, (byte) 0x55, (byte) 0x04, (byte) 0x0a, (byte) 0x0c,
+            (byte) 0x18, (byte) 0x49, (byte) 0x6e, (byte) 0x74, (byte) 0x65, (byte) 0x72,
+            (byte) 0x6e, (byte) 0x65, (byte) 0x74, (byte) 0x20, (byte) 0x57, (byte) 0x69,
+            (byte) 0x64, (byte) 0x67, (byte) 0x69, (byte) 0x74, (byte) 0x73, (byte) 0x20,
+            (byte) 0x50, (byte) 0x74, (byte) 0x79, (byte) 0x20, (byte) 0x4c, (byte) 0x74,
+            (byte) 0x64, (byte) 0x31, (byte) 0x1b, (byte) 0x30, (byte) 0x19, (byte) 0x06,
+            (byte) 0x03, (byte) 0x55, (byte) 0x04, (byte) 0x03, (byte) 0x0c, (byte) 0x12,
+            (byte) 0x73, (byte) 0x65, (byte) 0x72, (byte) 0x76, (byte) 0x65, (byte) 0x72,
+            (byte) 0x2e, (byte) 0x65, (byte) 0x78, (byte) 0x61, (byte) 0x6d, (byte) 0x70,
+            (byte) 0x6c, (byte) 0x65, (byte) 0x2e, (byte) 0x63, (byte) 0x6f, (byte) 0x6d,
+            (byte) 0x30, (byte) 0x59, (byte) 0x30, (byte) 0x13, (byte) 0x06, (byte) 0x07,
+            (byte) 0x2a, (byte) 0x86, (byte) 0x48, (byte) 0xce, (byte) 0x3d, (byte) 0x02,
+            (byte) 0x01, (byte) 0x06, (byte) 0x08, (byte) 0x2a, (byte) 0x86, (byte) 0x48,
+            (byte) 0xce, (byte) 0x3d, (byte) 0x03, (byte) 0x01, (byte) 0x07, (byte) 0x03,
+            (byte) 0x42, (byte) 0x00, (byte) 0x04, (byte) 0xd9, (byte) 0xcf, (byte) 0xe7,
+            (byte) 0x9b, (byte) 0x23, (byte) 0xc8, (byte) 0xa3, (byte) 0xb8, (byte) 0x33,
+            (byte) 0x14, (byte) 0xa4, (byte) 0x4d, (byte) 0x75, (byte) 0x90, (byte) 0xf3,
+            (byte) 0xcd, (byte) 0x43, (byte) 0xe5, (byte) 0x1b, (byte) 0x05, (byte) 0x1d,
+            (byte) 0xf3, (byte) 0xd0, (byte) 0xa3, (byte) 0xb7, (byte) 0x32, (byte) 0x5f,
+            (byte) 0x79, (byte) 0xdc, (byte) 0x88, (byte) 0xb8, (byte) 0x4d, (byte) 0xb3,
+            (byte) 0xd1, (byte) 0x6d, (byte) 0xf7, (byte) 0x75, (byte) 0xf3, (byte) 0xbf,
+            (byte) 0x50, (byte) 0xa1, (byte) 0xbc, (byte) 0x03, (byte) 0x64, (byte) 0x22,
+            (byte) 0xe6, (byte) 0x1a, (byte) 0xa1, (byte) 0xe1, (byte) 0x06, (byte) 0x68,
+            (byte) 0x3b, (byte) 0xbc, (byte) 0x9f, (byte) 0xd3, (byte) 0xae, (byte) 0x77,
+            (byte) 0x5e, (byte) 0x88, (byte) 0x0c, (byte) 0x5e, (byte) 0x0c, (byte) 0xb2,
+            (byte) 0x38, (byte) 0xa3, (byte) 0x7b, (byte) 0x30, (byte) 0x79, (byte) 0x30,
+            (byte) 0x09, (byte) 0x06, (byte) 0x03, (byte) 0x55, (byte) 0x1d, (byte) 0x13,
+            (byte) 0x04, (byte) 0x02, (byte) 0x30, (byte) 0x00, (byte) 0x30, (byte) 0x2c,
+            (byte) 0x06, (byte) 0x09, (byte) 0x60, (byte) 0x86, (byte) 0x48, (byte) 0x01,
+            (byte) 0x86, (byte) 0xf8, (byte) 0x42, (byte) 0x01, (byte) 0x0d, (byte) 0x04,
+            (byte) 0x1f, (byte) 0x16, (byte) 0x1d, (byte) 0x4f, (byte) 0x70, (byte) 0x65,
+            (byte) 0x6e, (byte) 0x53, (byte) 0x53, (byte) 0x4c, (byte) 0x20, (byte) 0x47,
+            (byte) 0x65, (byte) 0x6e, (byte) 0x65, (byte) 0x72, (byte) 0x61, (byte) 0x74,
+            (byte) 0x65, (byte) 0x64, (byte) 0x20, (byte) 0x43, (byte) 0x65, (byte) 0x72,
+            (byte) 0x74, (byte) 0x69, (byte) 0x66, (byte) 0x69, (byte) 0x63, (byte) 0x61,
+            (byte) 0x74, (byte) 0x65, (byte) 0x30, (byte) 0x1d, (byte) 0x06, (byte) 0x03,
+            (byte) 0x55, (byte) 0x1d, (byte) 0x0e, (byte) 0x04, (byte) 0x16, (byte) 0x04,
+            (byte) 0x14, (byte) 0xd5, (byte) 0xc4, (byte) 0x72, (byte) 0xbd, (byte) 0xd2,
+            (byte) 0x4e, (byte) 0x90, (byte) 0x1b, (byte) 0x14, (byte) 0x32, (byte) 0xdb,
+            (byte) 0x03, (byte) 0xae, (byte) 0xfa, (byte) 0x27, (byte) 0x7d, (byte) 0x8d,
+            (byte) 0xe4, (byte) 0x80, (byte) 0x58, (byte) 0x30, (byte) 0x1f, (byte) 0x06,
+            (byte) 0x03, (byte) 0x55, (byte) 0x1d, (byte) 0x23, (byte) 0x04, (byte) 0x18,
+            (byte) 0x30, (byte) 0x16, (byte) 0x80, (byte) 0x14, (byte) 0x5f, (byte) 0x5b,
+            (byte) 0x5e, (byte) 0xac, (byte) 0x29, (byte) 0xfa, (byte) 0xa1, (byte) 0x9f,
+            (byte) 0x9e, (byte) 0xad, (byte) 0x46, (byte) 0xe1, (byte) 0xbc, (byte) 0x20,
+            (byte) 0x72, (byte) 0xcf, (byte) 0x4a, (byte) 0xd4, (byte) 0xfa, (byte) 0xe3,
+            (byte) 0x30, (byte) 0x0d, (byte) 0x06, (byte) 0x09, (byte) 0x2a, (byte) 0x86,
+            (byte) 0x48, (byte) 0x86, (byte) 0xf7, (byte) 0x0d, (byte) 0x01, (byte) 0x01,
+            (byte) 0x05, (byte) 0x05, (byte) 0x00, (byte) 0x03, (byte) 0x81, (byte) 0x81,
+            (byte) 0x00, (byte) 0x43, (byte) 0x99, (byte) 0x9f, (byte) 0x67, (byte) 0x08,
+            (byte) 0x43, (byte) 0xd5, (byte) 0x6b, (byte) 0x6f, (byte) 0xd7, (byte) 0x05,
+            (byte) 0xd6, (byte) 0x75, (byte) 0x34, (byte) 0x30, (byte) 0xca, (byte) 0x20,
+            (byte) 0x47, (byte) 0x61, (byte) 0xa1, (byte) 0x89, (byte) 0xb6, (byte) 0xf1,
+            (byte) 0x49, (byte) 0x7b, (byte) 0xd9, (byte) 0xb9, (byte) 0xe8, (byte) 0x1e,
+            (byte) 0x29, (byte) 0x74, (byte) 0x0a, (byte) 0x67, (byte) 0xc0, (byte) 0x7d,
+            (byte) 0xb8, (byte) 0xe6, (byte) 0x39, (byte) 0xa8, (byte) 0x5e, (byte) 0xc3,
+            (byte) 0xb0, (byte) 0xa1, (byte) 0x30, (byte) 0x6a, (byte) 0x1f, (byte) 0x1d,
+            (byte) 0xfc, (byte) 0x11, (byte) 0x59, (byte) 0x0b, (byte) 0xb9, (byte) 0xad,
+            (byte) 0x3a, (byte) 0x4e, (byte) 0x50, (byte) 0x0a, (byte) 0x61, (byte) 0xdb,
+            (byte) 0x75, (byte) 0x6b, (byte) 0xe5, (byte) 0x3f, (byte) 0x8d, (byte) 0xde,
+            (byte) 0x28, (byte) 0x68, (byte) 0xb1, (byte) 0x29, (byte) 0x9a, (byte) 0x18,
+            (byte) 0x8a, (byte) 0xfc, (byte) 0x3f, (byte) 0x13, (byte) 0x93, (byte) 0x29,
+            (byte) 0xed, (byte) 0x22, (byte) 0x7c, (byte) 0xb4, (byte) 0x50, (byte) 0xd5,
+            (byte) 0x4d, (byte) 0x32, (byte) 0x4d, (byte) 0x42, (byte) 0x2b, (byte) 0x29,
+            (byte) 0x97, (byte) 0x86, (byte) 0xc0, (byte) 0x01, (byte) 0x00, (byte) 0x25,
+            (byte) 0xf6, (byte) 0xd3, (byte) 0x2a, (byte) 0xd8, (byte) 0xda, (byte) 0x13,
+            (byte) 0x94, (byte) 0x12, (byte) 0x78, (byte) 0x14, (byte) 0x0b, (byte) 0x51,
+            (byte) 0xc0, (byte) 0x45, (byte) 0xb4, (byte) 0x02, (byte) 0x37, (byte) 0x98,
+            (byte) 0x42, (byte) 0x3c, (byte) 0xcb, (byte) 0x2e, (byte) 0xe4, (byte) 0x38,
+            (byte) 0x69, (byte) 0x1b, (byte) 0x72, (byte) 0xf0, (byte) 0xaa, (byte) 0x89,
+            (byte) 0x7e, (byte) 0xde, (byte) 0xb2
+    };
+
+    /*
+     * The keys and certificates below are generated with:
+     *
+     * openssl req -new -x509 -days 3650 -extensions v3_ca -keyout cakey.pem -out cacert.pem
+     * openssl dsaparam -out dsaparam.pem 1024
+     * openssl req -newkey dsa:dsaparam.pem -keyout userkey.pem -nodes -days 3650 -out userkey.req
+     * mkdir -p demoCA/newcerts
+     * touch demoCA/index.txt
+     * echo "01" > demoCA/serial
+     * openssl ca -out usercert.pem -in userkey.req -cert cacert.pem -keyfile cakey.pem -days 3650
+     */
+
+    /**
+     * Generated from above and converted with:
+     *
+     * openssl x509 -outform d -in cacert.pem | xxd -i | sed 's/0x/(byte) 0x/g'
+     */
+    private static final byte[] FAKE_DSA_CA_1 = new byte[] {
+            (byte) 0x30, (byte) 0x82, (byte) 0x02, (byte) 0x8a, (byte) 0x30, (byte) 0x82,
+            (byte) 0x01, (byte) 0xf3, (byte) 0xa0, (byte) 0x03, (byte) 0x02, (byte) 0x01,
+            (byte) 0x02, (byte) 0x02, (byte) 0x09, (byte) 0x00, (byte) 0x87, (byte) 0xc0,
+            (byte) 0x68, (byte) 0x7f, (byte) 0x42, (byte) 0x92, (byte) 0x0b, (byte) 0x7a,
+            (byte) 0x30, (byte) 0x0d, (byte) 0x06, (byte) 0x09, (byte) 0x2a, (byte) 0x86,
+            (byte) 0x48, (byte) 0x86, (byte) 0xf7, (byte) 0x0d, (byte) 0x01, (byte) 0x01,
+            (byte) 0x05, (byte) 0x05, (byte) 0x00, (byte) 0x30, (byte) 0x5e, (byte) 0x31,
+            (byte) 0x0b, (byte) 0x30, (byte) 0x09, (byte) 0x06, (byte) 0x03, (byte) 0x55,
+            (byte) 0x04, (byte) 0x06, (byte) 0x13, (byte) 0x02, (byte) 0x41, (byte) 0x55,
+            (byte) 0x31, (byte) 0x13, (byte) 0x30, (byte) 0x11, (byte) 0x06, (byte) 0x03,
+            (byte) 0x55, (byte) 0x04, (byte) 0x08, (byte) 0x0c, (byte) 0x0a, (byte) 0x53,
+            (byte) 0x6f, (byte) 0x6d, (byte) 0x65, (byte) 0x2d, (byte) 0x53, (byte) 0x74,
+            (byte) 0x61, (byte) 0x74, (byte) 0x65, (byte) 0x31, (byte) 0x21, (byte) 0x30,
+            (byte) 0x1f, (byte) 0x06, (byte) 0x03, (byte) 0x55, (byte) 0x04, (byte) 0x0a,
+            (byte) 0x0c, (byte) 0x18, (byte) 0x49, (byte) 0x6e, (byte) 0x74, (byte) 0x65,
+            (byte) 0x72, (byte) 0x6e, (byte) 0x65, (byte) 0x74, (byte) 0x20, (byte) 0x57,
+            (byte) 0x69, (byte) 0x64, (byte) 0x67, (byte) 0x69, (byte) 0x74, (byte) 0x73,
+            (byte) 0x20, (byte) 0x50, (byte) 0x74, (byte) 0x79, (byte) 0x20, (byte) 0x4c,
+            (byte) 0x74, (byte) 0x64, (byte) 0x31, (byte) 0x17, (byte) 0x30, (byte) 0x15,
+            (byte) 0x06, (byte) 0x03, (byte) 0x55, (byte) 0x04, (byte) 0x03, (byte) 0x0c,
+            (byte) 0x0e, (byte) 0x63, (byte) 0x61, (byte) 0x2e, (byte) 0x65, (byte) 0x78,
+            (byte) 0x61, (byte) 0x6d, (byte) 0x70, (byte) 0x6c, (byte) 0x65, (byte) 0x2e,
+            (byte) 0x63, (byte) 0x6f, (byte) 0x6d, (byte) 0x30, (byte) 0x1e, (byte) 0x17,
+            (byte) 0x0d, (byte) 0x31, (byte) 0x33, (byte) 0x30, (byte) 0x38, (byte) 0x32,
+            (byte) 0x37, (byte) 0x32, (byte) 0x33, (byte) 0x33, (byte) 0x31, (byte) 0x32,
+            (byte) 0x39, (byte) 0x5a, (byte) 0x17, (byte) 0x0d, (byte) 0x32, (byte) 0x33,
+            (byte) 0x30, (byte) 0x38, (byte) 0x32, (byte) 0x35, (byte) 0x32, (byte) 0x33,
+            (byte) 0x33, (byte) 0x31, (byte) 0x32, (byte) 0x39, (byte) 0x5a, (byte) 0x30,
+            (byte) 0x5e, (byte) 0x31, (byte) 0x0b, (byte) 0x30, (byte) 0x09, (byte) 0x06,
+            (byte) 0x03, (byte) 0x55, (byte) 0x04, (byte) 0x06, (byte) 0x13, (byte) 0x02,
+            (byte) 0x41, (byte) 0x55, (byte) 0x31, (byte) 0x13, (byte) 0x30, (byte) 0x11,
+            (byte) 0x06, (byte) 0x03, (byte) 0x55, (byte) 0x04, (byte) 0x08, (byte) 0x0c,
+            (byte) 0x0a, (byte) 0x53, (byte) 0x6f, (byte) 0x6d, (byte) 0x65, (byte) 0x2d,
+            (byte) 0x53, (byte) 0x74, (byte) 0x61, (byte) 0x74, (byte) 0x65, (byte) 0x31,
+            (byte) 0x21, (byte) 0x30, (byte) 0x1f, (byte) 0x06, (byte) 0x03, (byte) 0x55,
+            (byte) 0x04, (byte) 0x0a, (byte) 0x0c, (byte) 0x18, (byte) 0x49, (byte) 0x6e,
+            (byte) 0x74, (byte) 0x65, (byte) 0x72, (byte) 0x6e, (byte) 0x65, (byte) 0x74,
+            (byte) 0x20, (byte) 0x57, (byte) 0x69, (byte) 0x64, (byte) 0x67, (byte) 0x69,
+            (byte) 0x74, (byte) 0x73, (byte) 0x20, (byte) 0x50, (byte) 0x74, (byte) 0x79,
+            (byte) 0x20, (byte) 0x4c, (byte) 0x74, (byte) 0x64, (byte) 0x31, (byte) 0x17,
+            (byte) 0x30, (byte) 0x15, (byte) 0x06, (byte) 0x03, (byte) 0x55, (byte) 0x04,
+            (byte) 0x03, (byte) 0x0c, (byte) 0x0e, (byte) 0x63, (byte) 0x61, (byte) 0x2e,
+            (byte) 0x65, (byte) 0x78, (byte) 0x61, (byte) 0x6d, (byte) 0x70, (byte) 0x6c,
+            (byte) 0x65, (byte) 0x2e, (byte) 0x63, (byte) 0x6f, (byte) 0x6d, (byte) 0x30,
+            (byte) 0x81, (byte) 0x9f, (byte) 0x30, (byte) 0x0d, (byte) 0x06, (byte) 0x09,
+            (byte) 0x2a, (byte) 0x86, (byte) 0x48, (byte) 0x86, (byte) 0xf7, (byte) 0x0d,
+            (byte) 0x01, (byte) 0x01, (byte) 0x01, (byte) 0x05, (byte) 0x00, (byte) 0x03,
+            (byte) 0x81, (byte) 0x8d, (byte) 0x00, (byte) 0x30, (byte) 0x81, (byte) 0x89,
+            (byte) 0x02, (byte) 0x81, (byte) 0x81, (byte) 0x00, (byte) 0xa4, (byte) 0xc7,
+            (byte) 0x06, (byte) 0xba, (byte) 0xdf, (byte) 0x2b, (byte) 0xee, (byte) 0xd2,
+            (byte) 0xb9, (byte) 0xe4, (byte) 0x52, (byte) 0x21, (byte) 0x68, (byte) 0x2b,
+            (byte) 0x83, (byte) 0xdf, (byte) 0xe3, (byte) 0x9c, (byte) 0x08, (byte) 0x73,
+            (byte) 0xdd, (byte) 0x90, (byte) 0xea, (byte) 0x97, (byte) 0x0c, (byte) 0x96,
+            (byte) 0x20, (byte) 0xb1, (byte) 0xee, (byte) 0x11, (byte) 0xd5, (byte) 0xd4,
+            (byte) 0x7c, (byte) 0x44, (byte) 0x96, (byte) 0x2e, (byte) 0x6e, (byte) 0xa2,
+            (byte) 0xb2, (byte) 0xa3, (byte) 0x4b, (byte) 0x0f, (byte) 0x32, (byte) 0x90,
+            (byte) 0xaf, (byte) 0x5c, (byte) 0x6f, (byte) 0x00, (byte) 0x88, (byte) 0x45,
+            (byte) 0x4e, (byte) 0x9b, (byte) 0x26, (byte) 0xc1, (byte) 0x94, (byte) 0x3c,
+            (byte) 0xfe, (byte) 0x10, (byte) 0xbd, (byte) 0xda, (byte) 0xf2, (byte) 0x8d,
+            (byte) 0x03, (byte) 0x52, (byte) 0x32, (byte) 0x11, (byte) 0xff, (byte) 0xf6,
+            (byte) 0xf9, (byte) 0x6e, (byte) 0x8f, (byte) 0x0f, (byte) 0xc8, (byte) 0x0a,
+            (byte) 0x48, (byte) 0x39, (byte) 0x33, (byte) 0xb9, (byte) 0x0c, (byte) 0xb3,
+            (byte) 0x2b, (byte) 0xab, (byte) 0x7d, (byte) 0x79, (byte) 0x6f, (byte) 0x57,
+            (byte) 0x5b, (byte) 0xb8, (byte) 0x84, (byte) 0xb6, (byte) 0xcc, (byte) 0xe8,
+            (byte) 0x30, (byte) 0x78, (byte) 0xff, (byte) 0x92, (byte) 0xe5, (byte) 0x43,
+            (byte) 0x2e, (byte) 0xef, (byte) 0x66, (byte) 0x98, (byte) 0xb4, (byte) 0xfe,
+            (byte) 0xa2, (byte) 0x40, (byte) 0xf2, (byte) 0x1f, (byte) 0xd0, (byte) 0x86,
+            (byte) 0x16, (byte) 0xc8, (byte) 0x45, (byte) 0xc4, (byte) 0x52, (byte) 0xcb,
+            (byte) 0x31, (byte) 0x5c, (byte) 0x9f, (byte) 0x32, (byte) 0x3b, (byte) 0xf7,
+            (byte) 0x19, (byte) 0x08, (byte) 0xc7, (byte) 0x00, (byte) 0x21, (byte) 0x7d,
+            (byte) 0x02, (byte) 0x03, (byte) 0x01, (byte) 0x00, (byte) 0x01, (byte) 0xa3,
+            (byte) 0x50, (byte) 0x30, (byte) 0x4e, (byte) 0x30, (byte) 0x1d, (byte) 0x06,
+            (byte) 0x03, (byte) 0x55, (byte) 0x1d, (byte) 0x0e, (byte) 0x04, (byte) 0x16,
+            (byte) 0x04, (byte) 0x14, (byte) 0x47, (byte) 0x82, (byte) 0xa3, (byte) 0xf1,
+            (byte) 0xc2, (byte) 0x7e, (byte) 0x3a, (byte) 0xde, (byte) 0x4f, (byte) 0x30,
+            (byte) 0x4c, (byte) 0x7f, (byte) 0x72, (byte) 0x81, (byte) 0x15, (byte) 0x32,
+            (byte) 0xda, (byte) 0x7f, (byte) 0x58, (byte) 0x18, (byte) 0x30, (byte) 0x1f,
+            (byte) 0x06, (byte) 0x03, (byte) 0x55, (byte) 0x1d, (byte) 0x23, (byte) 0x04,
+            (byte) 0x18, (byte) 0x30, (byte) 0x16, (byte) 0x80, (byte) 0x14, (byte) 0x47,
+            (byte) 0x82, (byte) 0xa3, (byte) 0xf1, (byte) 0xc2, (byte) 0x7e, (byte) 0x3a,
+            (byte) 0xde, (byte) 0x4f, (byte) 0x30, (byte) 0x4c, (byte) 0x7f, (byte) 0x72,
+            (byte) 0x81, (byte) 0x15, (byte) 0x32, (byte) 0xda, (byte) 0x7f, (byte) 0x58,
+            (byte) 0x18, (byte) 0x30, (byte) 0x0c, (byte) 0x06, (byte) 0x03, (byte) 0x55,
+            (byte) 0x1d, (byte) 0x13, (byte) 0x04, (byte) 0x05, (byte) 0x30, (byte) 0x03,
+            (byte) 0x01, (byte) 0x01, (byte) 0xff, (byte) 0x30, (byte) 0x0d, (byte) 0x06,
+            (byte) 0x09, (byte) 0x2a, (byte) 0x86, (byte) 0x48, (byte) 0x86, (byte) 0xf7,
+            (byte) 0x0d, (byte) 0x01, (byte) 0x01, (byte) 0x05, (byte) 0x05, (byte) 0x00,
+            (byte) 0x03, (byte) 0x81, (byte) 0x81, (byte) 0x00, (byte) 0x08, (byte) 0x7f,
+            (byte) 0x6a, (byte) 0x48, (byte) 0x90, (byte) 0x7b, (byte) 0x9b, (byte) 0x72,
+            (byte) 0x13, (byte) 0xa7, (byte) 0xef, (byte) 0x6b, (byte) 0x0b, (byte) 0x59,
+            (byte) 0xe5, (byte) 0x49, (byte) 0x72, (byte) 0x3a, (byte) 0xc8, (byte) 0x84,
+            (byte) 0xcc, (byte) 0x23, (byte) 0x18, (byte) 0x4c, (byte) 0xec, (byte) 0xc7,
+            (byte) 0xef, (byte) 0xcb, (byte) 0xa7, (byte) 0xbe, (byte) 0xe4, (byte) 0xef,
+            (byte) 0x8f, (byte) 0xc6, (byte) 0x06, (byte) 0x8c, (byte) 0xc0, (byte) 0xe4,
+            (byte) 0x2f, (byte) 0x2a, (byte) 0xc0, (byte) 0x35, (byte) 0x7d, (byte) 0x5e,
+            (byte) 0x19, (byte) 0x29, (byte) 0x8c, (byte) 0xb9, (byte) 0xf1, (byte) 0x1e,
+            (byte) 0xaf, (byte) 0x82, (byte) 0xd8, (byte) 0xe3, (byte) 0x88, (byte) 0xe1,
+            (byte) 0x31, (byte) 0xc8, (byte) 0x82, (byte) 0x1f, (byte) 0x83, (byte) 0xa9,
+            (byte) 0xde, (byte) 0xfe, (byte) 0x4b, (byte) 0xe2, (byte) 0x78, (byte) 0x64,
+            (byte) 0xed, (byte) 0xa4, (byte) 0x7b, (byte) 0xee, (byte) 0x8d, (byte) 0x71,
+            (byte) 0x1b, (byte) 0x44, (byte) 0xe6, (byte) 0xb7, (byte) 0xe8, (byte) 0xc5,
+            (byte) 0x9a, (byte) 0x93, (byte) 0x92, (byte) 0x6f, (byte) 0x6f, (byte) 0xdb,
+            (byte) 0xbd, (byte) 0xd7, (byte) 0x03, (byte) 0x85, (byte) 0xa9, (byte) 0x5f,
+            (byte) 0x53, (byte) 0x5f, (byte) 0x5d, (byte) 0x30, (byte) 0xc6, (byte) 0xd9,
+            (byte) 0xce, (byte) 0x34, (byte) 0xa8, (byte) 0xbe, (byte) 0x31, (byte) 0x47,
+            (byte) 0x1c, (byte) 0xa4, (byte) 0x7f, (byte) 0xc0, (byte) 0x2c, (byte) 0xbc,
+            (byte) 0xfe, (byte) 0x1a, (byte) 0x31, (byte) 0xd8, (byte) 0x77, (byte) 0x4d,
+            (byte) 0xfc, (byte) 0x45, (byte) 0x84, (byte) 0xfc, (byte) 0x45, (byte) 0x12,
+            (byte) 0xab, (byte) 0x50, (byte) 0xe4, (byte) 0x45, (byte) 0xe5, (byte) 0x11
+    };
+
+    /**
+     * Generated from above and converted with: openssl pkcs8 -topk8 -outform d
+     * -in userkey.pem -nocrypt | xxd -i | sed 's/0x/(byte) 0x/g'
+     */
+    private static final byte[] FAKE_DSA_KEY_1 = new byte[] {
+            (byte) 0x30, (byte) 0x82, (byte) 0x01, (byte) 0x4c, (byte) 0x02, (byte) 0x01,
+            (byte) 0x00, (byte) 0x30, (byte) 0x82, (byte) 0x01, (byte) 0x2c, (byte) 0x06,
+            (byte) 0x07, (byte) 0x2a, (byte) 0x86, (byte) 0x48, (byte) 0xce, (byte) 0x38,
+            (byte) 0x04, (byte) 0x01, (byte) 0x30, (byte) 0x82, (byte) 0x01, (byte) 0x1f,
+            (byte) 0x02, (byte) 0x81, (byte) 0x81, (byte) 0x00, (byte) 0xb3, (byte) 0x23,
+            (byte) 0xf7, (byte) 0x86, (byte) 0xbd, (byte) 0x3b, (byte) 0x86, (byte) 0xcc,
+            (byte) 0xc3, (byte) 0x91, (byte) 0xc0, (byte) 0x30, (byte) 0x32, (byte) 0x02,
+            (byte) 0x47, (byte) 0x35, (byte) 0x01, (byte) 0xef, (byte) 0xee, (byte) 0x98,
+            (byte) 0x13, (byte) 0x56, (byte) 0x49, (byte) 0x47, (byte) 0xb5, (byte) 0x20,
+            (byte) 0xa8, (byte) 0x60, (byte) 0xcb, (byte) 0xc0, (byte) 0xd5, (byte) 0x77,
+            (byte) 0xc1, (byte) 0x69, (byte) 0xcd, (byte) 0x18, (byte) 0x34, (byte) 0x92,
+            (byte) 0xf2, (byte) 0x6a, (byte) 0x2a, (byte) 0x10, (byte) 0x59, (byte) 0x1c,
+            (byte) 0x91, (byte) 0x20, (byte) 0x51, (byte) 0xca, (byte) 0x37, (byte) 0xb2,
+            (byte) 0x87, (byte) 0xa6, (byte) 0x8a, (byte) 0x02, (byte) 0xfd, (byte) 0x45,
+            (byte) 0x46, (byte) 0xf9, (byte) 0x76, (byte) 0xb1, (byte) 0x35, (byte) 0x38,
+            (byte) 0x8d, (byte) 0xff, (byte) 0x4c, (byte) 0x5d, (byte) 0x75, (byte) 0x8f,
+            (byte) 0x66, (byte) 0x15, (byte) 0x7d, (byte) 0x7b, (byte) 0xda, (byte) 0xdb,
+            (byte) 0x57, (byte) 0x39, (byte) 0xff, (byte) 0x91, (byte) 0x3f, (byte) 0xdd,
+            (byte) 0xe2, (byte) 0xb4, (byte) 0x22, (byte) 0x60, (byte) 0x4c, (byte) 0x32,
+            (byte) 0x3b, (byte) 0x9d, (byte) 0x34, (byte) 0x9f, (byte) 0xb9, (byte) 0x5d,
+            (byte) 0x75, (byte) 0xb9, (byte) 0xd3, (byte) 0x7f, (byte) 0x11, (byte) 0xba,
+            (byte) 0xb7, (byte) 0xc8, (byte) 0x32, (byte) 0xc6, (byte) 0xce, (byte) 0x71,
+            (byte) 0x91, (byte) 0xd3, (byte) 0x32, (byte) 0xaf, (byte) 0x4d, (byte) 0x7e,
+            (byte) 0x7c, (byte) 0x15, (byte) 0xf7, (byte) 0x71, (byte) 0x2c, (byte) 0x52,
+            (byte) 0x65, (byte) 0x4d, (byte) 0xa9, (byte) 0x81, (byte) 0x25, (byte) 0x35,
+            (byte) 0xce, (byte) 0x0b, (byte) 0x5b, (byte) 0x56, (byte) 0xfe, (byte) 0xf1,
+            (byte) 0x02, (byte) 0x15, (byte) 0x00, (byte) 0xeb, (byte) 0x4e, (byte) 0x7f,
+            (byte) 0x7a, (byte) 0x31, (byte) 0xb3, (byte) 0x7d, (byte) 0x8d, (byte) 0xb2,
+            (byte) 0xf7, (byte) 0xaf, (byte) 0xad, (byte) 0xb1, (byte) 0x42, (byte) 0x92,
+            (byte) 0xf3, (byte) 0x6c, (byte) 0xe4, (byte) 0xed, (byte) 0x8b, (byte) 0x02,
+            (byte) 0x81, (byte) 0x81, (byte) 0x00, (byte) 0x81, (byte) 0xc8, (byte) 0x36,
+            (byte) 0x48, (byte) 0xdb, (byte) 0x71, (byte) 0x2b, (byte) 0x91, (byte) 0xce,
+            (byte) 0x6d, (byte) 0xbc, (byte) 0xb8, (byte) 0xf9, (byte) 0xcb, (byte) 0x50,
+            (byte) 0x91, (byte) 0x10, (byte) 0x8a, (byte) 0xf8, (byte) 0x37, (byte) 0x50,
+            (byte) 0xda, (byte) 0x4f, (byte) 0xc8, (byte) 0x4d, (byte) 0x73, (byte) 0xcb,
+            (byte) 0x4d, (byte) 0xb0, (byte) 0x19, (byte) 0x54, (byte) 0x5a, (byte) 0xf3,
+            (byte) 0x6c, (byte) 0xc9, (byte) 0xd8, (byte) 0x96, (byte) 0xd9, (byte) 0xb0,
+            (byte) 0x54, (byte) 0x7e, (byte) 0x7d, (byte) 0xe2, (byte) 0x58, (byte) 0x0e,
+            (byte) 0x5f, (byte) 0xc0, (byte) 0xce, (byte) 0xb9, (byte) 0x5c, (byte) 0xe3,
+            (byte) 0xd3, (byte) 0xdf, (byte) 0xcf, (byte) 0x45, (byte) 0x74, (byte) 0xfb,
+            (byte) 0xe6, (byte) 0x20, (byte) 0xe7, (byte) 0xfc, (byte) 0x0f, (byte) 0xca,
+            (byte) 0xdb, (byte) 0xc0, (byte) 0x0b, (byte) 0xe1, (byte) 0x5a, (byte) 0x16,
+            (byte) 0x1d, (byte) 0xb3, (byte) 0x2e, (byte) 0xe5, (byte) 0x5f, (byte) 0x89,
+            (byte) 0x17, (byte) 0x73, (byte) 0x50, (byte) 0xd1, (byte) 0x4a, (byte) 0x60,
+            (byte) 0xb7, (byte) 0xaa, (byte) 0xf0, (byte) 0xc7, (byte) 0xc5, (byte) 0x03,
+            (byte) 0x4e, (byte) 0x36, (byte) 0x51, (byte) 0x9e, (byte) 0x2f, (byte) 0xfa,
+            (byte) 0xf3, (byte) 0xd6, (byte) 0x58, (byte) 0x14, (byte) 0x02, (byte) 0xb4,
+            (byte) 0x41, (byte) 0xd6, (byte) 0x72, (byte) 0x6f, (byte) 0x58, (byte) 0x5b,
+            (byte) 0x2d, (byte) 0x23, (byte) 0xc0, (byte) 0x75, (byte) 0x4f, (byte) 0x39,
+            (byte) 0xa8, (byte) 0x6a, (byte) 0xdf, (byte) 0x79, (byte) 0x21, (byte) 0xf2,
+            (byte) 0x77, (byte) 0x91, (byte) 0x3f, (byte) 0x1c, (byte) 0x4d, (byte) 0x48,
+            (byte) 0x78, (byte) 0xcd, (byte) 0xed, (byte) 0x79, (byte) 0x23, (byte) 0x04,
+            (byte) 0x17, (byte) 0x02, (byte) 0x15, (byte) 0x00, (byte) 0xc7, (byte) 0xe7,
+            (byte) 0xe2, (byte) 0x6b, (byte) 0x14, (byte) 0xe6, (byte) 0x31, (byte) 0x12,
+            (byte) 0xb2, (byte) 0x1e, (byte) 0xd4, (byte) 0xf2, (byte) 0x9b, (byte) 0x2c,
+            (byte) 0xf6, (byte) 0x54, (byte) 0x4c, (byte) 0x12, (byte) 0xe8, (byte) 0x22
+    };
+
+    /**
+     * Generated from above and converted with: openssl x509 -outform d -in
+     * usercert.pem | xxd -i | sed 's/0x/(byte) 0x/g'
+     */
+    private static final byte[] FAKE_DSA_USER_1 = new byte[] {
+            (byte) 0x30, (byte) 0x82, (byte) 0x03, (byte) 0xca, (byte) 0x30, (byte) 0x82,
+            (byte) 0x03, (byte) 0x33, (byte) 0xa0, (byte) 0x03, (byte) 0x02, (byte) 0x01,
+            (byte) 0x02, (byte) 0x02, (byte) 0x01, (byte) 0x01, (byte) 0x30, (byte) 0x0d,
+            (byte) 0x06, (byte) 0x09, (byte) 0x2a, (byte) 0x86, (byte) 0x48, (byte) 0x86,
+            (byte) 0xf7, (byte) 0x0d, (byte) 0x01, (byte) 0x01, (byte) 0x05, (byte) 0x05,
+            (byte) 0x00, (byte) 0x30, (byte) 0x5e, (byte) 0x31, (byte) 0x0b, (byte) 0x30,
+            (byte) 0x09, (byte) 0x06, (byte) 0x03, (byte) 0x55, (byte) 0x04, (byte) 0x06,
+            (byte) 0x13, (byte) 0x02, (byte) 0x41, (byte) 0x55, (byte) 0x31, (byte) 0x13,
+            (byte) 0x30, (byte) 0x11, (byte) 0x06, (byte) 0x03, (byte) 0x55, (byte) 0x04,
+            (byte) 0x08, (byte) 0x0c, (byte) 0x0a, (byte) 0x53, (byte) 0x6f, (byte) 0x6d,
+            (byte) 0x65, (byte) 0x2d, (byte) 0x53, (byte) 0x74, (byte) 0x61, (byte) 0x74,
+            (byte) 0x65, (byte) 0x31, (byte) 0x21, (byte) 0x30, (byte) 0x1f, (byte) 0x06,
+            (byte) 0x03, (byte) 0x55, (byte) 0x04, (byte) 0x0a, (byte) 0x0c, (byte) 0x18,
+            (byte) 0x49, (byte) 0x6e, (byte) 0x74, (byte) 0x65, (byte) 0x72, (byte) 0x6e,
+            (byte) 0x65, (byte) 0x74, (byte) 0x20, (byte) 0x57, (byte) 0x69, (byte) 0x64,
+            (byte) 0x67, (byte) 0x69, (byte) 0x74, (byte) 0x73, (byte) 0x20, (byte) 0x50,
+            (byte) 0x74, (byte) 0x79, (byte) 0x20, (byte) 0x4c, (byte) 0x74, (byte) 0x64,
+            (byte) 0x31, (byte) 0x17, (byte) 0x30, (byte) 0x15, (byte) 0x06, (byte) 0x03,
+            (byte) 0x55, (byte) 0x04, (byte) 0x03, (byte) 0x0c, (byte) 0x0e, (byte) 0x63,
+            (byte) 0x61, (byte) 0x2e, (byte) 0x65, (byte) 0x78, (byte) 0x61, (byte) 0x6d,
+            (byte) 0x70, (byte) 0x6c, (byte) 0x65, (byte) 0x2e, (byte) 0x63, (byte) 0x6f,
+            (byte) 0x6d, (byte) 0x30, (byte) 0x1e, (byte) 0x17, (byte) 0x0d, (byte) 0x31,
+            (byte) 0x33, (byte) 0x30, (byte) 0x38, (byte) 0x32, (byte) 0x37, (byte) 0x32,
+            (byte) 0x33, (byte) 0x33, (byte) 0x34, (byte) 0x32, (byte) 0x32, (byte) 0x5a,
+            (byte) 0x17, (byte) 0x0d, (byte) 0x32, (byte) 0x33, (byte) 0x30, (byte) 0x38,
+            (byte) 0x32, (byte) 0x35, (byte) 0x32, (byte) 0x33, (byte) 0x33, (byte) 0x34,
+            (byte) 0x32, (byte) 0x32, (byte) 0x5a, (byte) 0x30, (byte) 0x62, (byte) 0x31,
+            (byte) 0x0b, (byte) 0x30, (byte) 0x09, (byte) 0x06, (byte) 0x03, (byte) 0x55,
+            (byte) 0x04, (byte) 0x06, (byte) 0x13, (byte) 0x02, (byte) 0x41, (byte) 0x55,
+            (byte) 0x31, (byte) 0x13, (byte) 0x30, (byte) 0x11, (byte) 0x06, (byte) 0x03,
+            (byte) 0x55, (byte) 0x04, (byte) 0x08, (byte) 0x0c, (byte) 0x0a, (byte) 0x53,
+            (byte) 0x6f, (byte) 0x6d, (byte) 0x65, (byte) 0x2d, (byte) 0x53, (byte) 0x74,
+            (byte) 0x61, (byte) 0x74, (byte) 0x65, (byte) 0x31, (byte) 0x21, (byte) 0x30,
+            (byte) 0x1f, (byte) 0x06, (byte) 0x03, (byte) 0x55, (byte) 0x04, (byte) 0x0a,
+            (byte) 0x0c, (byte) 0x18, (byte) 0x49, (byte) 0x6e, (byte) 0x74, (byte) 0x65,
+            (byte) 0x72, (byte) 0x6e, (byte) 0x65, (byte) 0x74, (byte) 0x20, (byte) 0x57,
+            (byte) 0x69, (byte) 0x64, (byte) 0x67, (byte) 0x69, (byte) 0x74, (byte) 0x73,
+            (byte) 0x20, (byte) 0x50, (byte) 0x74, (byte) 0x79, (byte) 0x20, (byte) 0x4c,
+            (byte) 0x74, (byte) 0x64, (byte) 0x31, (byte) 0x1b, (byte) 0x30, (byte) 0x19,
+            (byte) 0x06, (byte) 0x03, (byte) 0x55, (byte) 0x04, (byte) 0x03, (byte) 0x0c,
+            (byte) 0x12, (byte) 0x73, (byte) 0x65, (byte) 0x72, (byte) 0x76, (byte) 0x65,
+            (byte) 0x72, (byte) 0x2e, (byte) 0x65, (byte) 0x78, (byte) 0x61, (byte) 0x6d,
+            (byte) 0x70, (byte) 0x6c, (byte) 0x65, (byte) 0x2e, (byte) 0x63, (byte) 0x6f,
+            (byte) 0x6d, (byte) 0x30, (byte) 0x82, (byte) 0x01, (byte) 0xb7, (byte) 0x30,
+            (byte) 0x82, (byte) 0x01, (byte) 0x2c, (byte) 0x06, (byte) 0x07, (byte) 0x2a,
+            (byte) 0x86, (byte) 0x48, (byte) 0xce, (byte) 0x38, (byte) 0x04, (byte) 0x01,
+            (byte) 0x30, (byte) 0x82, (byte) 0x01, (byte) 0x1f, (byte) 0x02, (byte) 0x81,
+            (byte) 0x81, (byte) 0x00, (byte) 0xb3, (byte) 0x23, (byte) 0xf7, (byte) 0x86,
+            (byte) 0xbd, (byte) 0x3b, (byte) 0x86, (byte) 0xcc, (byte) 0xc3, (byte) 0x91,
+            (byte) 0xc0, (byte) 0x30, (byte) 0x32, (byte) 0x02, (byte) 0x47, (byte) 0x35,
+            (byte) 0x01, (byte) 0xef, (byte) 0xee, (byte) 0x98, (byte) 0x13, (byte) 0x56,
+            (byte) 0x49, (byte) 0x47, (byte) 0xb5, (byte) 0x20, (byte) 0xa8, (byte) 0x60,
+            (byte) 0xcb, (byte) 0xc0, (byte) 0xd5, (byte) 0x77, (byte) 0xc1, (byte) 0x69,
+            (byte) 0xcd, (byte) 0x18, (byte) 0x34, (byte) 0x92, (byte) 0xf2, (byte) 0x6a,
+            (byte) 0x2a, (byte) 0x10, (byte) 0x59, (byte) 0x1c, (byte) 0x91, (byte) 0x20,
+            (byte) 0x51, (byte) 0xca, (byte) 0x37, (byte) 0xb2, (byte) 0x87, (byte) 0xa6,
+            (byte) 0x8a, (byte) 0x02, (byte) 0xfd, (byte) 0x45, (byte) 0x46, (byte) 0xf9,
+            (byte) 0x76, (byte) 0xb1, (byte) 0x35, (byte) 0x38, (byte) 0x8d, (byte) 0xff,
+            (byte) 0x4c, (byte) 0x5d, (byte) 0x75, (byte) 0x8f, (byte) 0x66, (byte) 0x15,
+            (byte) 0x7d, (byte) 0x7b, (byte) 0xda, (byte) 0xdb, (byte) 0x57, (byte) 0x39,
+            (byte) 0xff, (byte) 0x91, (byte) 0x3f, (byte) 0xdd, (byte) 0xe2, (byte) 0xb4,
+            (byte) 0x22, (byte) 0x60, (byte) 0x4c, (byte) 0x32, (byte) 0x3b, (byte) 0x9d,
+            (byte) 0x34, (byte) 0x9f, (byte) 0xb9, (byte) 0x5d, (byte) 0x75, (byte) 0xb9,
+            (byte) 0xd3, (byte) 0x7f, (byte) 0x11, (byte) 0xba, (byte) 0xb7, (byte) 0xc8,
+            (byte) 0x32, (byte) 0xc6, (byte) 0xce, (byte) 0x71, (byte) 0x91, (byte) 0xd3,
+            (byte) 0x32, (byte) 0xaf, (byte) 0x4d, (byte) 0x7e, (byte) 0x7c, (byte) 0x15,
+            (byte) 0xf7, (byte) 0x71, (byte) 0x2c, (byte) 0x52, (byte) 0x65, (byte) 0x4d,
+            (byte) 0xa9, (byte) 0x81, (byte) 0x25, (byte) 0x35, (byte) 0xce, (byte) 0x0b,
+            (byte) 0x5b, (byte) 0x56, (byte) 0xfe, (byte) 0xf1, (byte) 0x02, (byte) 0x15,
+            (byte) 0x00, (byte) 0xeb, (byte) 0x4e, (byte) 0x7f, (byte) 0x7a, (byte) 0x31,
+            (byte) 0xb3, (byte) 0x7d, (byte) 0x8d, (byte) 0xb2, (byte) 0xf7, (byte) 0xaf,
+            (byte) 0xad, (byte) 0xb1, (byte) 0x42, (byte) 0x92, (byte) 0xf3, (byte) 0x6c,
+            (byte) 0xe4, (byte) 0xed, (byte) 0x8b, (byte) 0x02, (byte) 0x81, (byte) 0x81,
+            (byte) 0x00, (byte) 0x81, (byte) 0xc8, (byte) 0x36, (byte) 0x48, (byte) 0xdb,
+            (byte) 0x71, (byte) 0x2b, (byte) 0x91, (byte) 0xce, (byte) 0x6d, (byte) 0xbc,
+            (byte) 0xb8, (byte) 0xf9, (byte) 0xcb, (byte) 0x50, (byte) 0x91, (byte) 0x10,
+            (byte) 0x8a, (byte) 0xf8, (byte) 0x37, (byte) 0x50, (byte) 0xda, (byte) 0x4f,
+            (byte) 0xc8, (byte) 0x4d, (byte) 0x73, (byte) 0xcb, (byte) 0x4d, (byte) 0xb0,
+            (byte) 0x19, (byte) 0x54, (byte) 0x5a, (byte) 0xf3, (byte) 0x6c, (byte) 0xc9,
+            (byte) 0xd8, (byte) 0x96, (byte) 0xd9, (byte) 0xb0, (byte) 0x54, (byte) 0x7e,
+            (byte) 0x7d, (byte) 0xe2, (byte) 0x58, (byte) 0x0e, (byte) 0x5f, (byte) 0xc0,
+            (byte) 0xce, (byte) 0xb9, (byte) 0x5c, (byte) 0xe3, (byte) 0xd3, (byte) 0xdf,
+            (byte) 0xcf, (byte) 0x45, (byte) 0x74, (byte) 0xfb, (byte) 0xe6, (byte) 0x20,
+            (byte) 0xe7, (byte) 0xfc, (byte) 0x0f, (byte) 0xca, (byte) 0xdb, (byte) 0xc0,
+            (byte) 0x0b, (byte) 0xe1, (byte) 0x5a, (byte) 0x16, (byte) 0x1d, (byte) 0xb3,
+            (byte) 0x2e, (byte) 0xe5, (byte) 0x5f, (byte) 0x89, (byte) 0x17, (byte) 0x73,
+            (byte) 0x50, (byte) 0xd1, (byte) 0x4a, (byte) 0x60, (byte) 0xb7, (byte) 0xaa,
+            (byte) 0xf0, (byte) 0xc7, (byte) 0xc5, (byte) 0x03, (byte) 0x4e, (byte) 0x36,
+            (byte) 0x51, (byte) 0x9e, (byte) 0x2f, (byte) 0xfa, (byte) 0xf3, (byte) 0xd6,
+            (byte) 0x58, (byte) 0x14, (byte) 0x02, (byte) 0xb4, (byte) 0x41, (byte) 0xd6,
+            (byte) 0x72, (byte) 0x6f, (byte) 0x58, (byte) 0x5b, (byte) 0x2d, (byte) 0x23,
+            (byte) 0xc0, (byte) 0x75, (byte) 0x4f, (byte) 0x39, (byte) 0xa8, (byte) 0x6a,
+            (byte) 0xdf, (byte) 0x79, (byte) 0x21, (byte) 0xf2, (byte) 0x77, (byte) 0x91,
+            (byte) 0x3f, (byte) 0x1c, (byte) 0x4d, (byte) 0x48, (byte) 0x78, (byte) 0xcd,
+            (byte) 0xed, (byte) 0x79, (byte) 0x23, (byte) 0x03, (byte) 0x81, (byte) 0x84,
+            (byte) 0x00, (byte) 0x02, (byte) 0x81, (byte) 0x80, (byte) 0x1a, (byte) 0x50,
+            (byte) 0x9d, (byte) 0x3e, (byte) 0xa1, (byte) 0x6c, (byte) 0x99, (byte) 0x35,
+            (byte) 0x36, (byte) 0x26, (byte) 0x22, (byte) 0x6b, (byte) 0x47, (byte) 0x45,
+            (byte) 0x80, (byte) 0x5b, (byte) 0xd5, (byte) 0xc1, (byte) 0xc5, (byte) 0x70,
+            (byte) 0x75, (byte) 0x55, (byte) 0x66, (byte) 0x33, (byte) 0x1d, (byte) 0xae,
+            (byte) 0xd0, (byte) 0x01, (byte) 0x64, (byte) 0x8b, (byte) 0xae, (byte) 0x9d,
+            (byte) 0x66, (byte) 0x58, (byte) 0xf9, (byte) 0x42, (byte) 0x74, (byte) 0x3a,
+            (byte) 0x32, (byte) 0xc7, (byte) 0x7f, (byte) 0x25, (byte) 0x64, (byte) 0x7d,
+            (byte) 0x08, (byte) 0x26, (byte) 0xbf, (byte) 0x21, (byte) 0x3a, (byte) 0x84,
+            (byte) 0xcc, (byte) 0x2c, (byte) 0x66, (byte) 0x7d, (byte) 0xc7, (byte) 0xd6,
+            (byte) 0xb1, (byte) 0x69, (byte) 0x57, (byte) 0x67, (byte) 0x52, (byte) 0x73,
+            (byte) 0x3f, (byte) 0x79, (byte) 0x60, (byte) 0xaa, (byte) 0xf4, (byte) 0x8a,
+            (byte) 0x48, (byte) 0x42, (byte) 0x46, (byte) 0x41, (byte) 0xd0, (byte) 0x50,
+            (byte) 0x9b, (byte) 0xa2, (byte) 0x4e, (byte) 0xa5, (byte) 0x88, (byte) 0x10,
+            (byte) 0xf7, (byte) 0x61, (byte) 0xa2, (byte) 0xfa, (byte) 0x8d, (byte) 0xa6,
+            (byte) 0x13, (byte) 0x9e, (byte) 0x36, (byte) 0x86, (byte) 0x62, (byte) 0xf0,
+            (byte) 0x97, (byte) 0xef, (byte) 0x11, (byte) 0xc6, (byte) 0x35, (byte) 0xd3,
+            (byte) 0x79, (byte) 0x30, (byte) 0xde, (byte) 0xf2, (byte) 0x7f, (byte) 0x7a,
+            (byte) 0x3c, (byte) 0x03, (byte) 0xa3, (byte) 0xc5, (byte) 0xbc, (byte) 0xb1,
+            (byte) 0xbc, (byte) 0x2f, (byte) 0x10, (byte) 0xf4, (byte) 0x51, (byte) 0x89,
+            (byte) 0xe2, (byte) 0xaf, (byte) 0xf7, (byte) 0x61, (byte) 0x1a, (byte) 0xf0,
+            (byte) 0x87, (byte) 0x5e, (byte) 0xa5, (byte) 0x02, (byte) 0xd2, (byte) 0xe4,
+            (byte) 0xa3, (byte) 0x7b, (byte) 0x30, (byte) 0x79, (byte) 0x30, (byte) 0x09,
+            (byte) 0x06, (byte) 0x03, (byte) 0x55, (byte) 0x1d, (byte) 0x13, (byte) 0x04,
+            (byte) 0x02, (byte) 0x30, (byte) 0x00, (byte) 0x30, (byte) 0x2c, (byte) 0x06,
+            (byte) 0x09, (byte) 0x60, (byte) 0x86, (byte) 0x48, (byte) 0x01, (byte) 0x86,
+            (byte) 0xf8, (byte) 0x42, (byte) 0x01, (byte) 0x0d, (byte) 0x04, (byte) 0x1f,
+            (byte) 0x16, (byte) 0x1d, (byte) 0x4f, (byte) 0x70, (byte) 0x65, (byte) 0x6e,
+            (byte) 0x53, (byte) 0x53, (byte) 0x4c, (byte) 0x20, (byte) 0x47, (byte) 0x65,
+            (byte) 0x6e, (byte) 0x65, (byte) 0x72, (byte) 0x61, (byte) 0x74, (byte) 0x65,
+            (byte) 0x64, (byte) 0x20, (byte) 0x43, (byte) 0x65, (byte) 0x72, (byte) 0x74,
+            (byte) 0x69, (byte) 0x66, (byte) 0x69, (byte) 0x63, (byte) 0x61, (byte) 0x74,
+            (byte) 0x65, (byte) 0x30, (byte) 0x1d, (byte) 0x06, (byte) 0x03, (byte) 0x55,
+            (byte) 0x1d, (byte) 0x0e, (byte) 0x04, (byte) 0x16, (byte) 0x04, (byte) 0x14,
+            (byte) 0xd1, (byte) 0x6c, (byte) 0x36, (byte) 0x36, (byte) 0x61, (byte) 0x6c,
+            (byte) 0xf6, (byte) 0x90, (byte) 0x82, (byte) 0x82, (byte) 0x87, (byte) 0x93,
+            (byte) 0xbe, (byte) 0x99, (byte) 0x60, (byte) 0x1b, (byte) 0x03, (byte) 0x58,
+            (byte) 0x36, (byte) 0x63, (byte) 0x30, (byte) 0x1f, (byte) 0x06, (byte) 0x03,
+            (byte) 0x55, (byte) 0x1d, (byte) 0x23, (byte) 0x04, (byte) 0x18, (byte) 0x30,
+            (byte) 0x16, (byte) 0x80, (byte) 0x14, (byte) 0x47, (byte) 0x82, (byte) 0xa3,
+            (byte) 0xf1, (byte) 0xc2, (byte) 0x7e, (byte) 0x3a, (byte) 0xde, (byte) 0x4f,
+            (byte) 0x30, (byte) 0x4c, (byte) 0x7f, (byte) 0x72, (byte) 0x81, (byte) 0x15,
+            (byte) 0x32, (byte) 0xda, (byte) 0x7f, (byte) 0x58, (byte) 0x18, (byte) 0x30,
+            (byte) 0x0d, (byte) 0x06, (byte) 0x09, (byte) 0x2a, (byte) 0x86, (byte) 0x48,
+            (byte) 0x86, (byte) 0xf7, (byte) 0x0d, (byte) 0x01, (byte) 0x01, (byte) 0x05,
+            (byte) 0x05, (byte) 0x00, (byte) 0x03, (byte) 0x81, (byte) 0x81, (byte) 0x00,
+            (byte) 0x81, (byte) 0xde, (byte) 0x20, (byte) 0xa1, (byte) 0xb2, (byte) 0x50,
+            (byte) 0x03, (byte) 0xcd, (byte) 0x90, (byte) 0x4f, (byte) 0x2b, (byte) 0x47,
+            (byte) 0x1d, (byte) 0xac, (byte) 0x6e, (byte) 0xb4, (byte) 0xc7, (byte) 0x14,
+            (byte) 0xc6, (byte) 0x4f, (byte) 0x45, (byte) 0xaf, (byte) 0x81, (byte) 0x5d,
+            (byte) 0x5a, (byte) 0x31, (byte) 0xff, (byte) 0x9c, (byte) 0x4d, (byte) 0xdc,
+            (byte) 0x9e, (byte) 0x36, (byte) 0x9f, (byte) 0x9b, (byte) 0xb1, (byte) 0xc9,
+            (byte) 0x50, (byte) 0xa3, (byte) 0xf6, (byte) 0x9c, (byte) 0x68, (byte) 0x6f,
+            (byte) 0x68, (byte) 0xd9, (byte) 0x56, (byte) 0x1b, (byte) 0xe5, (byte) 0x1b,
+            (byte) 0x41, (byte) 0xd4, (byte) 0xcc, (byte) 0xb6, (byte) 0x37, (byte) 0xd5,
+            (byte) 0x69, (byte) 0x6b, (byte) 0x39, (byte) 0xaf, (byte) 0xc6, (byte) 0xb8,
+            (byte) 0x39, (byte) 0x76, (byte) 0xe3, (byte) 0xf7, (byte) 0x97, (byte) 0x74,
+            (byte) 0x31, (byte) 0xc4, (byte) 0x2d, (byte) 0xb7, (byte) 0x9a, (byte) 0xa4,
+            (byte) 0xfa, (byte) 0x9f, (byte) 0xa8, (byte) 0xe3, (byte) 0x41, (byte) 0xda,
+            (byte) 0x2f, (byte) 0x0c, (byte) 0x9d, (byte) 0x83, (byte) 0xdc, (byte) 0x86,
+            (byte) 0x1f, (byte) 0x5c, (byte) 0x0f, (byte) 0x87, (byte) 0x05, (byte) 0xc9,
+            (byte) 0xb0, (byte) 0x63, (byte) 0xca, (byte) 0x9b, (byte) 0xdb, (byte) 0xe6,
+            (byte) 0x3c, (byte) 0xe9, (byte) 0x23, (byte) 0x9e, (byte) 0x23, (byte) 0x44,
+            (byte) 0x1d, (byte) 0x5b, (byte) 0x60, (byte) 0x66, (byte) 0xb6, (byte) 0x72,
+            (byte) 0x8c, (byte) 0x87, (byte) 0x86, (byte) 0xe8, (byte) 0xdb, (byte) 0x29,
+            (byte) 0x67, (byte) 0x9c, (byte) 0x33, (byte) 0x5c, (byte) 0x39, (byte) 0xf1,
+            (byte) 0xb5, (byte) 0x9b, (byte) 0xb8, (byte) 0xe1, (byte) 0x42, (byte) 0x51,
+            (byte) 0xed, (byte) 0x2c
+    };
+
     /**
      * The amount of time to allow before and after expected time for variance
      * in timing tests.
@@ -451,8 +1077,8 @@
         mKeyStore = KeyStore.getInstance("AndroidKeyStore");
     }
 
-    private PrivateKey generatePrivateKey(byte[] fakeKey1) throws Exception {
-        KeyFactory kf = KeyFactory.getInstance("RSA");
+    private PrivateKey generatePrivateKey(String keyType, byte[] fakeKey1) throws Exception {
+        KeyFactory kf = KeyFactory.getInstance(keyType);
         return kf.generatePrivate(new PKCS8EncodedKeySpec(fakeKey1));
     }
 
@@ -461,14 +1087,29 @@
         return cf.generateCertificate(new ByteArrayInputStream(fakeUser1));
     }
 
-    private PrivateKeyEntry makeUserKey1() throws Exception {
-        return new KeyStore.PrivateKeyEntry(generatePrivateKey(FAKE_KEY_1), new Certificate[] {
-                generateCertificate(FAKE_USER_1), generateCertificate(FAKE_CA_1)
+    private PrivateKeyEntry makeUserDsaKey1() throws Exception {
+        return new KeyStore.PrivateKeyEntry(generatePrivateKey("DSA", FAKE_DSA_KEY_1),
+                new Certificate[] {
+                generateCertificate(FAKE_DSA_USER_1), generateCertificate(FAKE_DSA_CA_1)
         });
     }
 
+    private PrivateKeyEntry makeUserEcKey1() throws Exception {
+        return new KeyStore.PrivateKeyEntry(generatePrivateKey("EC", FAKE_EC_KEY_1),
+                new Certificate[] {
+                        generateCertificate(FAKE_EC_USER_1), generateCertificate(FAKE_EC_CA_1)
+                });
+    }
+
+    private PrivateKeyEntry makeUserRsaKey1() throws Exception {
+        return new KeyStore.PrivateKeyEntry(generatePrivateKey("RSA", FAKE_RSA_KEY_1),
+                new Certificate[] {
+                        generateCertificate(FAKE_RSA_USER_1), generateCertificate(FAKE_RSA_CA_1)
+                });
+    }
+
     private Entry makeCa1() throws Exception {
-        return new KeyStore.TrustedCertificateEntry(generateCertificate(FAKE_CA_1));
+        return new KeyStore.TrustedCertificateEntry(generateCertificate(FAKE_RSA_CA_1));
     }
 
     private void assertAliases(final String[] expectedAliases) throws KeyStoreException {
@@ -494,7 +1135,7 @@
 
         assertAliases(new String[] {});
 
-        mKeyStore.setEntry(TEST_ALIAS_1, makeUserKey1(), null);
+        mKeyStore.setEntry(TEST_ALIAS_1, makeUserRsaKey1(), null);
 
         assertAliases(new String[] { TEST_ALIAS_1 });
 
@@ -516,7 +1157,7 @@
 
         assertAliases(new String[] {});
 
-        mKeyStore.setEntry(TEST_ALIAS_1, makeUserKey1(), null);
+        mKeyStore.setEntry(TEST_ALIAS_1, makeUserRsaKey1(), null);
 
         assertTrue("Should contain generated private key", mKeyStore.containsAlias(TEST_ALIAS_1));
 
@@ -546,13 +1187,13 @@
         mKeyStore.load(null, null);
 
         // TEST_ALIAS_1
-        mKeyStore.setEntry(TEST_ALIAS_1, makeUserKey1(), null);
+        mKeyStore.setEntry(TEST_ALIAS_1, makeUserRsaKey1(), null);
 
         // TEST_ALIAS_2
-        mKeyStore.setCertificateEntry(TEST_ALIAS_2, generateCertificate(FAKE_CA_1));
+        mKeyStore.setCertificateEntry(TEST_ALIAS_2, generateCertificate(FAKE_RSA_CA_1));
 
         // TEST_ALIAS_3
-        mKeyStore.setCertificateEntry(TEST_ALIAS_3, generateCertificate(FAKE_CA_1));
+        mKeyStore.setCertificateEntry(TEST_ALIAS_3, generateCertificate(FAKE_RSA_CA_1));
 
         assertAliases(new String[] { TEST_ALIAS_1, TEST_ALIAS_2, TEST_ALIAS_3 });
 
@@ -580,7 +1221,7 @@
         mKeyStore.load(null, null);
 
         // TEST_ALIAS_1
-        mKeyStore.setEntry(TEST_ALIAS_1, makeUserKey1(), null);
+        mKeyStore.setEntry(TEST_ALIAS_1, makeUserRsaKey1(), null);
 
         // Should not throw when a non-existent entry is requested for delete.
         mKeyStore.deleteEntry(TEST_ALIAS_2);
@@ -589,7 +1230,7 @@
     public void testKeyStore_GetCertificate_Single_Unencrypted_Success() throws Exception {
         mKeyStore.load(null, null);
 
-        mKeyStore.setCertificateEntry(TEST_ALIAS_1, generateCertificate(FAKE_CA_1));
+        mKeyStore.setCertificateEntry(TEST_ALIAS_1, generateCertificate(FAKE_RSA_CA_1));
 
         assertAliases(new String[] { TEST_ALIAS_1 });
 
@@ -601,7 +1242,7 @@
         assertNotNull("Retrieved certificate should not be null", retrieved);
 
         CertificateFactory f = CertificateFactory.getInstance("X.509");
-        Certificate actual = f.generateCertificate(new ByteArrayInputStream(FAKE_CA_1));
+        Certificate actual = f.generateCertificate(new ByteArrayInputStream(FAKE_RSA_CA_1));
 
         assertEquals("Actual and retrieved certificates should be the same", actual, retrieved);
     }
@@ -616,7 +1257,7 @@
     public void testKeyStore_GetCertificateAlias_CAEntry_Unencrypted_Success() throws Exception {
         mKeyStore.load(null, null);
 
-        Certificate cert = generateCertificate(FAKE_CA_1);
+        Certificate cert = generateCertificate(FAKE_RSA_CA_1);
         mKeyStore.setCertificateEntry(TEST_ALIAS_1, cert);
 
         assertEquals("Stored certificate alias should be found", TEST_ALIAS_1,
@@ -627,10 +1268,10 @@
             throws Exception {
         mKeyStore.load(null, null);
 
-        mKeyStore.setEntry(TEST_ALIAS_1, makeUserKey1(), null);
+        mKeyStore.setEntry(TEST_ALIAS_1, makeUserRsaKey1(), null);
 
         CertificateFactory f = CertificateFactory.getInstance("X.509");
-        Certificate actual = f.generateCertificate(new ByteArrayInputStream(FAKE_USER_1));
+        Certificate actual = f.generateCertificate(new ByteArrayInputStream(FAKE_RSA_USER_1));
 
         assertEquals("Stored certificate alias should be found", TEST_ALIAS_1,
                 mKeyStore.getCertificateAlias(actual));
@@ -640,13 +1281,13 @@
             throws Exception {
         mKeyStore.load(null, null);
 
-        Certificate actual = generateCertificate(FAKE_CA_1);
+        Certificate actual = generateCertificate(FAKE_RSA_CA_1);
 
         // Insert TrustedCertificateEntry with CA name
         mKeyStore.setCertificateEntry(TEST_ALIAS_2, actual);
 
         // Insert PrivateKeyEntry that uses the same CA
-        mKeyStore.setEntry(TEST_ALIAS_1, makeUserKey1(), null);
+        mKeyStore.setEntry(TEST_ALIAS_1, makeUserRsaKey1(), null);
 
         assertEquals("Stored certificate alias should be found", TEST_ALIAS_2,
                 mKeyStore.getCertificateAlias(actual));
@@ -657,7 +1298,7 @@
         mKeyStore.load(null, null);
 
         CertificateFactory f = CertificateFactory.getInstance("X.509");
-        Certificate actual = f.generateCertificate(new ByteArrayInputStream(FAKE_CA_1));
+        Certificate actual = f.generateCertificate(new ByteArrayInputStream(FAKE_RSA_CA_1));
 
         assertNull("Stored certificate alias should not be found",
                 mKeyStore.getCertificateAlias(actual));
@@ -666,12 +1307,12 @@
     public void testKeyStore_GetCertificateAlias_NonExist_Unencrypted_Failure() throws Exception {
         mKeyStore.load(null, null);
 
-        Certificate ca = generateCertificate(FAKE_CA_1);
+        Certificate ca = generateCertificate(FAKE_RSA_CA_1);
 
         // Insert TrustedCertificateEntry with CA name
         mKeyStore.setCertificateEntry(TEST_ALIAS_1, ca);
 
-        Certificate userCert = generateCertificate(FAKE_USER_1);
+        Certificate userCert = generateCertificate(FAKE_RSA_USER_1);
 
         assertNull("Stored certificate alias should be found",
                 mKeyStore.getCertificateAlias(userCert));
@@ -681,11 +1322,11 @@
         mKeyStore.load(null, null);
 
         // TEST_ALIAS_1
-        mKeyStore.setEntry(TEST_ALIAS_1, makeUserKey1(), null);
+        mKeyStore.setEntry(TEST_ALIAS_1, makeUserRsaKey1(), null);
 
         Certificate[] expected = new Certificate[2];
-        expected[0] = generateCertificate(FAKE_USER_1);
-        expected[1] = generateCertificate(FAKE_CA_1);
+        expected[0] = generateCertificate(FAKE_RSA_USER_1);
+        expected[1] = generateCertificate(FAKE_RSA_CA_1);
 
         Certificate[] actual = mKeyStore.getCertificateChain(TEST_ALIAS_1);
 
@@ -711,7 +1352,7 @@
         mKeyStore.load(null, null);
 
         // TEST_ALIAS_1
-        mKeyStore.setEntry(TEST_ALIAS_1, makeUserKey1(), null);
+        mKeyStore.setEntry(TEST_ALIAS_1, makeUserRsaKey1(), null);
 
         Date now = new Date();
         Date actual = mKeyStore.getCreationDate(TEST_ALIAS_1);
@@ -727,7 +1368,7 @@
         mKeyStore.load(null, null);
 
         // Insert TrustedCertificateEntry with CA name
-        mKeyStore.setCertificateEntry(TEST_ALIAS_1, generateCertificate(FAKE_CA_1));
+        mKeyStore.setCertificateEntry(TEST_ALIAS_1, generateCertificate(FAKE_RSA_CA_1));
 
         Date now = new Date();
         Date actual = mKeyStore.getCreationDate(TEST_ALIAS_1);
@@ -744,7 +1385,7 @@
         mKeyStore.load(null, null);
 
         // TEST_ALIAS_1
-        mKeyStore.setEntry(TEST_ALIAS_1, makeUserKey1(), null);
+        mKeyStore.setEntry(TEST_ALIAS_1, makeUserRsaKey1(), null);
 
         Entry entry = mKeyStore.getEntry(TEST_ALIAS_1, null);
         assertNotNull("Entry should exist", entry);
@@ -753,13 +1394,62 @@
 
         PrivateKeyEntry keyEntry = (PrivateKeyEntry) entry;
 
-        assertPrivateKeyEntryEquals(keyEntry, FAKE_KEY_1, FAKE_USER_1, FAKE_CA_1);
+        assertPrivateKeyEntryEquals(keyEntry, "RSA", FAKE_RSA_KEY_1, FAKE_RSA_USER_1, FAKE_RSA_CA_1);
+    }
+
+    public void testKeyStore_GetEntry_DSA_NullParams_Unencrypted_Success() throws Exception {
+        mKeyStore.load(null, null);
+
+        // TEST_ALIAS_1
+        mKeyStore.setEntry(TEST_ALIAS_1, makeUserDsaKey1(), null);
+
+        Entry entry = mKeyStore.getEntry(TEST_ALIAS_1, null);
+        assertNotNull("Entry should exist", entry);
+
+        assertTrue("Should be a PrivateKeyEntry", entry instanceof PrivateKeyEntry);
+
+        PrivateKeyEntry keyEntry = (PrivateKeyEntry) entry;
+
+        assertPrivateKeyEntryEquals(keyEntry, "DSA", FAKE_DSA_KEY_1, FAKE_DSA_USER_1, FAKE_DSA_CA_1);
+    }
+
+    public void testKeyStore_GetEntry_EC_NullParams_Unencrypted_Success() throws Exception {
+        mKeyStore.load(null, null);
+
+        // TEST_ALIAS_1
+        mKeyStore.setEntry(TEST_ALIAS_1, makeUserEcKey1(), null);
+
+        Entry entry = mKeyStore.getEntry(TEST_ALIAS_1, null);
+        assertNotNull("Entry should exist", entry);
+
+        assertTrue("Should be a PrivateKeyEntry", entry instanceof PrivateKeyEntry);
+
+        PrivateKeyEntry keyEntry = (PrivateKeyEntry) entry;
+
+        assertPrivateKeyEntryEquals(keyEntry, "EC", FAKE_EC_KEY_1, FAKE_EC_USER_1, FAKE_EC_CA_1);
+    }
+
+    public void testKeyStore_GetEntry_RSA_NullParams_Unencrypted_Success() throws Exception {
+        mKeyStore.load(null, null);
+
+        // TEST_ALIAS_1
+        mKeyStore.setEntry(TEST_ALIAS_1, makeUserRsaKey1(), null);
+
+        Entry entry = mKeyStore.getEntry(TEST_ALIAS_1, null);
+        assertNotNull("Entry should exist", entry);
+
+        assertTrue("Should be a PrivateKeyEntry", entry instanceof PrivateKeyEntry);
+
+        PrivateKeyEntry keyEntry = (PrivateKeyEntry) entry;
+
+        assertPrivateKeyEntryEquals(keyEntry, "RSA", FAKE_RSA_KEY_1, FAKE_RSA_USER_1,
+                FAKE_RSA_CA_1);
     }
 
     @SuppressWarnings("unchecked")
-    private void assertPrivateKeyEntryEquals(PrivateKeyEntry keyEntry, byte[] key, byte[] cert,
-            byte[] ca) throws Exception {
-        KeyFactory keyFact = KeyFactory.getInstance("RSA");
+    private void assertPrivateKeyEntryEquals(PrivateKeyEntry keyEntry, String keyType, byte[] key,
+            byte[] cert, byte[] ca) throws Exception {
+        KeyFactory keyFact = KeyFactory.getInstance(keyType);
         PrivateKey expectedKey = keyFact.generatePrivate(new PKCS8EncodedKeySpec(key));
 
         CertificateFactory certFact = CertificateFactory.getInstance("X.509");
@@ -778,9 +1468,28 @@
 
     private void assertPrivateKeyEntryEquals(PrivateKeyEntry keyEntry, PrivateKey expectedKey,
             Certificate expectedCert, Collection<Certificate> expectedChain) throws Exception {
-        assertEquals("Returned PrivateKey should be what we inserted",
-                ((RSAPrivateKey) expectedKey).getModulus(),
-                ((RSAPrivateKey) keyEntry.getPrivateKey()).getModulus());
+        final PrivateKey privKey = keyEntry.getPrivateKey();
+        final PublicKey pubKey = keyEntry.getCertificate().getPublicKey();
+
+        if (expectedKey instanceof DSAPrivateKey) {
+            assertEquals("Returned PrivateKey should be what we inserted",
+                    ((DSAPrivateKey) expectedKey).getParams(),
+                    ((DSAPublicKey) pubKey).getParams());
+        } else if (expectedKey instanceof ECPrivateKey) {
+            assertEquals("Returned PrivateKey should be what we inserted",
+                    ((ECPrivateKey) expectedKey).getParams().getCurve(),
+                    ((ECPublicKey) pubKey).getParams().getCurve());
+        } else if (expectedKey instanceof RSAPrivateKey) {
+            assertEquals("Returned PrivateKey should be what we inserted",
+                    ((RSAPrivateKey) expectedKey).getModulus(),
+                    ((RSAPrivateKey) privKey).getModulus());
+        }
+
+        assertNull("getFormat() should return null", privKey.getFormat());
+        assertNull("getEncoded() should return null", privKey.getEncoded());
+
+        assertEquals("Public keys should be in X.509 format", "X.509", pubKey.getFormat());
+        assertNotNull("Public keys should be encodable", pubKey.getEncoded());
 
         assertEquals("Returned Certificate should be what we inserted", expectedCert,
                 keyEntry.getCertificate());
@@ -814,7 +1523,7 @@
         mKeyStore.load(null, null);
 
         // TEST_ALIAS_1
-        mKeyStore.setEntry(TEST_ALIAS_1, makeUserKey1(), null);
+        mKeyStore.setEntry(TEST_ALIAS_1, makeUserRsaKey1(), null);
 
         Key key = mKeyStore.getKey(TEST_ALIAS_1, null);
         assertNotNull("Key should exist", key);
@@ -824,7 +1533,7 @@
         RSAPrivateKey actualKey = (RSAPrivateKey) key;
 
         KeyFactory keyFact = KeyFactory.getInstance("RSA");
-        PrivateKey expectedKey = keyFact.generatePrivate(new PKCS8EncodedKeySpec(FAKE_KEY_1));
+        PrivateKey expectedKey = keyFact.generatePrivate(new PKCS8EncodedKeySpec(FAKE_RSA_KEY_1));
 
         assertEquals("Inserted key should be same as retrieved key",
                 ((RSAPrivateKey) expectedKey).getModulus(), actualKey.getModulus());
@@ -834,7 +1543,7 @@
         mKeyStore.load(null, null);
 
         // Insert TrustedCertificateEntry with CA name
-        mKeyStore.setCertificateEntry(TEST_ALIAS_1, generateCertificate(FAKE_CA_1));
+        mKeyStore.setCertificateEntry(TEST_ALIAS_1, generateCertificate(FAKE_RSA_CA_1));
 
         assertNull("Certificate entries should return null", mKeyStore.getKey(TEST_ALIAS_1, null));
     }
@@ -857,7 +1566,7 @@
         mKeyStore.load(null, null);
 
         // Insert TrustedCertificateEntry with CA name
-        mKeyStore.setCertificateEntry(TEST_ALIAS_1, generateCertificate(FAKE_CA_1));
+        mKeyStore.setCertificateEntry(TEST_ALIAS_1, generateCertificate(FAKE_RSA_CA_1));
 
         assertTrue("Should return true for CA certificate",
                 mKeyStore.isCertificateEntry(TEST_ALIAS_1));
@@ -867,7 +1576,7 @@
         mKeyStore.load(null, null);
 
         // TEST_ALIAS_1
-        mKeyStore.setEntry(TEST_ALIAS_1, makeUserKey1(), null);
+        mKeyStore.setEntry(TEST_ALIAS_1, makeUserRsaKey1(), null);
 
         assertFalse("Should return false for PrivateKeyEntry",
                 mKeyStore.isCertificateEntry(TEST_ALIAS_1));
@@ -884,7 +1593,7 @@
         mKeyStore.load(null, null);
 
         // TEST_ALIAS_1
-        mKeyStore.setEntry(TEST_ALIAS_1, makeUserKey1(), null);
+        mKeyStore.setEntry(TEST_ALIAS_1, makeUserRsaKey1(), null);
 
         assertTrue("Should return true for PrivateKeyEntry", mKeyStore.isKeyEntry(TEST_ALIAS_1));
     }
@@ -892,7 +1601,7 @@
     public void testKeyStore_IsKeyEntry_CA_Unencrypted_Failure() throws Exception {
         mKeyStore.load(null, null);
 
-        mKeyStore.setCertificateEntry(TEST_ALIAS_1, generateCertificate(FAKE_CA_1));
+        mKeyStore.setCertificateEntry(TEST_ALIAS_1, generateCertificate(FAKE_RSA_CA_1));
 
         assertFalse("Should return false for CA certificate", mKeyStore.isKeyEntry(TEST_ALIAS_1));
     }
@@ -905,7 +1614,7 @@
     }
 
     public void testKeyStore_SetCertificate_CA_Unencrypted_Success() throws Exception {
-        final Certificate actual = generateCertificate(FAKE_CA_1);
+        final Certificate actual = generateCertificate(FAKE_RSA_CA_1);
 
         mKeyStore.load(null, null);
 
@@ -922,11 +1631,11 @@
             throws Exception {
         mKeyStore.load(null, null);
 
-        mKeyStore.setCertificateEntry(TEST_ALIAS_1, generateCertificate(FAKE_CA_1));
+        mKeyStore.setCertificateEntry(TEST_ALIAS_1, generateCertificate(FAKE_RSA_CA_1));
 
         assertAliases(new String[] { TEST_ALIAS_1 });
 
-        final Certificate cert = generateCertificate(FAKE_CA_1);
+        final Certificate cert = generateCertificate(FAKE_RSA_CA_1);
 
         // TODO have separate FAKE_CA for second test
         mKeyStore.setCertificateEntry(TEST_ALIAS_1, cert);
@@ -937,11 +1646,11 @@
     public void testKeyStore_SetCertificate_PrivateKeyExists_Unencrypted_Failure() throws Exception {
         mKeyStore.load(null, null);
 
-        mKeyStore.setEntry(TEST_ALIAS_1, makeUserKey1(), null);
+        mKeyStore.setEntry(TEST_ALIAS_1, makeUserRsaKey1(), null);
 
         assertAliases(new String[] { TEST_ALIAS_1 });
 
-        final Certificate cert = generateCertificate(FAKE_CA_1);
+        final Certificate cert = generateCertificate(FAKE_RSA_CA_1);
 
         try {
             mKeyStore.setCertificateEntry(TEST_ALIAS_1, cert);
@@ -954,13 +1663,13 @@
         mKeyStore.load(null, null);
 
         KeyFactory keyFact = KeyFactory.getInstance("RSA");
-        PrivateKey expectedKey = keyFact.generatePrivate(new PKCS8EncodedKeySpec(FAKE_KEY_1));
+        PrivateKey expectedKey = keyFact.generatePrivate(new PKCS8EncodedKeySpec(FAKE_RSA_KEY_1));
 
         final CertificateFactory f = CertificateFactory.getInstance("X.509");
 
         final Certificate[] expectedChain = new Certificate[2];
-        expectedChain[0] = f.generateCertificate(new ByteArrayInputStream(FAKE_USER_1));
-        expectedChain[1] = f.generateCertificate(new ByteArrayInputStream(FAKE_CA_1));
+        expectedChain[0] = f.generateCertificate(new ByteArrayInputStream(FAKE_RSA_USER_1));
+        expectedChain[1] = f.generateCertificate(new ByteArrayInputStream(FAKE_RSA_CA_1));
 
         PrivateKeyEntry expected = new PrivateKeyEntry(expectedKey, expectedChain);
 
@@ -974,20 +1683,20 @@
 
         PrivateKeyEntry actual = (PrivateKeyEntry) actualEntry;
 
-        assertPrivateKeyEntryEquals(actual, FAKE_KEY_1, FAKE_USER_1, FAKE_CA_1);
+        assertPrivateKeyEntryEquals(actual, "RSA", FAKE_RSA_KEY_1, FAKE_RSA_USER_1, FAKE_RSA_CA_1);
     }
 
     public void testKeyStore_SetEntry_PrivateKeyEntry_Params_Unencrypted_Failure() throws Exception {
         mKeyStore.load(null, null);
 
         KeyFactory keyFact = KeyFactory.getInstance("RSA");
-        PrivateKey expectedKey = keyFact.generatePrivate(new PKCS8EncodedKeySpec(FAKE_KEY_1));
+        PrivateKey expectedKey = keyFact.generatePrivate(new PKCS8EncodedKeySpec(FAKE_RSA_KEY_1));
 
         final CertificateFactory f = CertificateFactory.getInstance("X.509");
 
         final Certificate[] expectedChain = new Certificate[2];
-        expectedChain[0] = f.generateCertificate(new ByteArrayInputStream(FAKE_USER_1));
-        expectedChain[1] = f.generateCertificate(new ByteArrayInputStream(FAKE_CA_1));
+        expectedChain[0] = f.generateCertificate(new ByteArrayInputStream(FAKE_RSA_USER_1));
+        expectedChain[1] = f.generateCertificate(new ByteArrayInputStream(FAKE_RSA_CA_1));
 
         PrivateKeyEntry entry = new PrivateKeyEntry(expectedKey, expectedChain);
 
@@ -1012,11 +1721,12 @@
 
         // Start with PrivateKeyEntry
         {
-            PrivateKey expectedKey = keyFact.generatePrivate(new PKCS8EncodedKeySpec(FAKE_KEY_1));
+            PrivateKey expectedKey = keyFact
+                    .generatePrivate(new PKCS8EncodedKeySpec(FAKE_RSA_KEY_1));
 
             final Certificate[] expectedChain = new Certificate[2];
-            expectedChain[0] = f.generateCertificate(new ByteArrayInputStream(FAKE_USER_1));
-            expectedChain[1] = f.generateCertificate(new ByteArrayInputStream(FAKE_CA_1));
+            expectedChain[0] = f.generateCertificate(new ByteArrayInputStream(FAKE_RSA_USER_1));
+            expectedChain[1] = f.generateCertificate(new ByteArrayInputStream(FAKE_RSA_CA_1));
 
             PrivateKeyEntry expected = new PrivateKeyEntry(expectedKey, expectedChain);
 
@@ -1030,17 +1740,19 @@
 
             PrivateKeyEntry actual = (PrivateKeyEntry) actualEntry;
 
-            assertPrivateKeyEntryEquals(actual, FAKE_KEY_1, FAKE_USER_1, FAKE_CA_1);
+            assertPrivateKeyEntryEquals(actual, "RSA", FAKE_RSA_KEY_1, FAKE_RSA_USER_1,
+                    FAKE_RSA_CA_1);
         }
 
         // TODO make entirely new test vector for the overwrite
         // Replace with PrivateKeyEntry
         {
-            PrivateKey expectedKey = keyFact.generatePrivate(new PKCS8EncodedKeySpec(FAKE_KEY_1));
+            PrivateKey expectedKey = keyFact
+                    .generatePrivate(new PKCS8EncodedKeySpec(FAKE_RSA_KEY_1));
 
             final Certificate[] expectedChain = new Certificate[2];
-            expectedChain[0] = f.generateCertificate(new ByteArrayInputStream(FAKE_USER_1));
-            expectedChain[1] = f.generateCertificate(new ByteArrayInputStream(FAKE_CA_1));
+            expectedChain[0] = f.generateCertificate(new ByteArrayInputStream(FAKE_RSA_USER_1));
+            expectedChain[1] = f.generateCertificate(new ByteArrayInputStream(FAKE_RSA_CA_1));
 
             PrivateKeyEntry expected = new PrivateKeyEntry(expectedKey, expectedChain);
 
@@ -1054,7 +1766,8 @@
 
             PrivateKeyEntry actual = (PrivateKeyEntry) actualEntry;
 
-            assertPrivateKeyEntryEquals(actual, FAKE_KEY_1, FAKE_USER_1, FAKE_CA_1);
+            assertPrivateKeyEntryEquals(actual, "RSA", FAKE_RSA_KEY_1, FAKE_RSA_USER_1,
+                    FAKE_RSA_CA_1);
         }
     }
 
@@ -1066,7 +1779,8 @@
 
         // Start with TrustedCertificateEntry
         {
-            final Certificate caCert = f.generateCertificate(new ByteArrayInputStream(FAKE_CA_1));
+            final Certificate caCert = f
+                    .generateCertificate(new ByteArrayInputStream(FAKE_RSA_CA_1));
 
             TrustedCertificateEntry expectedCertEntry = new TrustedCertificateEntry(caCert);
             mKeyStore.setEntry(TEST_ALIAS_1, expectedCertEntry, null);
@@ -1084,10 +1798,11 @@
         // Replace with PrivateKeyEntry
         {
             KeyFactory keyFact = KeyFactory.getInstance("RSA");
-            PrivateKey expectedKey = keyFact.generatePrivate(new PKCS8EncodedKeySpec(FAKE_KEY_1));
+            PrivateKey expectedKey = keyFact
+                    .generatePrivate(new PKCS8EncodedKeySpec(FAKE_RSA_KEY_1));
             final Certificate[] expectedChain = new Certificate[2];
-            expectedChain[0] = f.generateCertificate(new ByteArrayInputStream(FAKE_USER_1));
-            expectedChain[1] = f.generateCertificate(new ByteArrayInputStream(FAKE_CA_1));
+            expectedChain[0] = f.generateCertificate(new ByteArrayInputStream(FAKE_RSA_USER_1));
+            expectedChain[1] = f.generateCertificate(new ByteArrayInputStream(FAKE_RSA_CA_1));
 
             PrivateKeyEntry expectedPrivEntry = new PrivateKeyEntry(expectedKey, expectedChain);
 
@@ -1099,7 +1814,8 @@
                     actualEntry instanceof PrivateKeyEntry);
 
             PrivateKeyEntry actualPrivEntry = (PrivateKeyEntry) actualEntry;
-            assertPrivateKeyEntryEquals(actualPrivEntry, FAKE_KEY_1, FAKE_USER_1, FAKE_CA_1);
+            assertPrivateKeyEntryEquals(actualPrivEntry, "RSA", FAKE_RSA_KEY_1, FAKE_RSA_USER_1,
+                    FAKE_RSA_CA_1);
         }
     }
 
@@ -1109,14 +1825,15 @@
 
         final CertificateFactory f = CertificateFactory.getInstance("X.509");
 
-        final Certificate caCert = f.generateCertificate(new ByteArrayInputStream(FAKE_CA_1));
+        final Certificate caCert = f.generateCertificate(new ByteArrayInputStream(FAKE_RSA_CA_1));
 
         // Start with PrivateKeyEntry
         {
             KeyFactory keyFact = KeyFactory.getInstance("RSA");
-            PrivateKey expectedKey = keyFact.generatePrivate(new PKCS8EncodedKeySpec(FAKE_KEY_1));
+            PrivateKey expectedKey = keyFact
+                    .generatePrivate(new PKCS8EncodedKeySpec(FAKE_RSA_KEY_1));
             final Certificate[] expectedChain = new Certificate[2];
-            expectedChain[0] = f.generateCertificate(new ByteArrayInputStream(FAKE_USER_1));
+            expectedChain[0] = f.generateCertificate(new ByteArrayInputStream(FAKE_RSA_USER_1));
             expectedChain[1] = caCert;
 
             PrivateKeyEntry expectedPrivEntry = new PrivateKeyEntry(expectedKey, expectedChain);
@@ -1129,7 +1846,8 @@
                     actualEntry instanceof PrivateKeyEntry);
 
             PrivateKeyEntry actualPrivEntry = (PrivateKeyEntry) actualEntry;
-            assertPrivateKeyEntryEquals(actualPrivEntry, FAKE_KEY_1, FAKE_USER_1, FAKE_CA_1);
+            assertPrivateKeyEntryEquals(actualPrivEntry, "RSA", FAKE_RSA_KEY_1, FAKE_RSA_USER_1,
+                    FAKE_RSA_CA_1);
         }
 
         // Replace with TrustedCertificateEntry
@@ -1154,14 +1872,15 @@
 
         final CertificateFactory f = CertificateFactory.getInstance("X.509");
 
-        final Certificate caCert = f.generateCertificate(new ByteArrayInputStream(FAKE_CA_1));
+        final Certificate caCert = f.generateCertificate(new ByteArrayInputStream(FAKE_RSA_CA_1));
 
         // Start with PrivateKeyEntry
         {
             KeyFactory keyFact = KeyFactory.getInstance("RSA");
-            PrivateKey expectedKey = keyFact.generatePrivate(new PKCS8EncodedKeySpec(FAKE_KEY_1));
+            PrivateKey expectedKey = keyFact
+                    .generatePrivate(new PKCS8EncodedKeySpec(FAKE_RSA_KEY_1));
             final Certificate[] expectedChain = new Certificate[2];
-            expectedChain[0] = f.generateCertificate(new ByteArrayInputStream(FAKE_USER_1));
+            expectedChain[0] = f.generateCertificate(new ByteArrayInputStream(FAKE_RSA_USER_1));
             expectedChain[1] = caCert;
 
             PrivateKeyEntry expectedPrivEntry = new PrivateKeyEntry(expectedKey, expectedChain);
@@ -1174,15 +1893,17 @@
                     actualEntry instanceof PrivateKeyEntry);
 
             PrivateKeyEntry actualPrivEntry = (PrivateKeyEntry) actualEntry;
-            assertPrivateKeyEntryEquals(actualPrivEntry, FAKE_KEY_1, FAKE_USER_1, FAKE_CA_1);
+            assertPrivateKeyEntryEquals(actualPrivEntry, "RSA", FAKE_RSA_KEY_1, FAKE_RSA_USER_1,
+                    FAKE_RSA_CA_1);
         }
 
         // Replace with PrivateKeyEntry that has no chain
         {
             KeyFactory keyFact = KeyFactory.getInstance("RSA");
-            PrivateKey expectedKey = keyFact.generatePrivate(new PKCS8EncodedKeySpec(FAKE_KEY_1));
+            PrivateKey expectedKey = keyFact
+                    .generatePrivate(new PKCS8EncodedKeySpec(FAKE_RSA_KEY_1));
             final Certificate[] expectedChain = new Certificate[1];
-            expectedChain[0] = f.generateCertificate(new ByteArrayInputStream(FAKE_USER_1));
+            expectedChain[0] = f.generateCertificate(new ByteArrayInputStream(FAKE_RSA_USER_1));
 
             PrivateKeyEntry expectedPrivEntry = new PrivateKeyEntry(expectedKey, expectedChain);
 
@@ -1194,7 +1915,8 @@
                     actualEntry instanceof PrivateKeyEntry);
 
             PrivateKeyEntry actualPrivEntry = (PrivateKeyEntry) actualEntry;
-            assertPrivateKeyEntryEquals(actualPrivEntry, FAKE_KEY_1, FAKE_USER_1, null);
+            assertPrivateKeyEntryEquals(actualPrivEntry, "RSA", FAKE_RSA_KEY_1, FAKE_RSA_USER_1,
+                    null);
         }
     }
 
@@ -1206,7 +1928,8 @@
 
         // Insert TrustedCertificateEntry
         {
-            final Certificate caCert = f.generateCertificate(new ByteArrayInputStream(FAKE_CA_1));
+            final Certificate caCert = f
+                    .generateCertificate(new ByteArrayInputStream(FAKE_RSA_CA_1));
 
             TrustedCertificateEntry expectedCertEntry = new TrustedCertificateEntry(caCert);
             mKeyStore.setEntry(TEST_ALIAS_1, expectedCertEntry, null);
@@ -1223,8 +1946,8 @@
 
         // Replace with TrustedCertificateEntry of USER
         {
-            final Certificate userCert = f
-                    .generateCertificate(new ByteArrayInputStream(FAKE_USER_1));
+            final Certificate userCert = f.generateCertificate(new ByteArrayInputStream(
+                    FAKE_RSA_USER_1));
 
             TrustedCertificateEntry expectedUserEntry = new TrustedCertificateEntry(userCert);
             mKeyStore.setEntry(TEST_ALIAS_1, expectedUserEntry, null);
@@ -1245,12 +1968,12 @@
 
         final CertificateFactory f = CertificateFactory.getInstance("X.509");
 
-        final Certificate caCert = f.generateCertificate(new ByteArrayInputStream(FAKE_CA_1));
+        final Certificate caCert = f.generateCertificate(new ByteArrayInputStream(FAKE_RSA_CA_1));
 
         KeyFactory keyFact = KeyFactory.getInstance("RSA");
-        PrivateKey privKey = keyFact.generatePrivate(new PKCS8EncodedKeySpec(FAKE_KEY_1));
+        PrivateKey privKey = keyFact.generatePrivate(new PKCS8EncodedKeySpec(FAKE_RSA_KEY_1));
         final Certificate[] chain = new Certificate[2];
-        chain[0] = f.generateCertificate(new ByteArrayInputStream(FAKE_USER_1));
+        chain[0] = f.generateCertificate(new ByteArrayInputStream(FAKE_RSA_USER_1));
         chain[1] = caCert;
 
         try {
@@ -1265,12 +1988,12 @@
 
         final CertificateFactory f = CertificateFactory.getInstance("X.509");
 
-        final Certificate caCert = f.generateCertificate(new ByteArrayInputStream(FAKE_CA_1));
+        final Certificate caCert = f.generateCertificate(new ByteArrayInputStream(FAKE_RSA_CA_1));
 
         KeyFactory keyFact = KeyFactory.getInstance("RSA");
-        PrivateKey privKey = keyFact.generatePrivate(new PKCS8EncodedKeySpec(FAKE_KEY_1));
+        PrivateKey privKey = keyFact.generatePrivate(new PKCS8EncodedKeySpec(FAKE_RSA_KEY_1));
         final Certificate[] chain = new Certificate[2];
-        chain[0] = f.generateCertificate(new ByteArrayInputStream(FAKE_USER_1));
+        chain[0] = f.generateCertificate(new ByteArrayInputStream(FAKE_RSA_USER_1));
         chain[1] = caCert;
 
         mKeyStore.setKeyEntry(TEST_ALIAS_1, privKey, null, chain);
@@ -1283,7 +2006,7 @@
 
         PrivateKeyEntry actual = (PrivateKeyEntry) actualEntry;
 
-        assertPrivateKeyEntryEquals(actual, FAKE_KEY_1, FAKE_USER_1, FAKE_CA_1);
+        assertPrivateKeyEntryEquals(actual, "RSA", FAKE_RSA_KEY_1, FAKE_RSA_USER_1, FAKE_RSA_CA_1);
     }
 
     public void testKeyStore_SetKeyEntry_Replaced_Unencrypted_Success() throws Exception {
@@ -1291,14 +2014,14 @@
 
         final CertificateFactory f = CertificateFactory.getInstance("X.509");
 
-        final Certificate caCert = f.generateCertificate(new ByteArrayInputStream(FAKE_CA_1));
+        final Certificate caCert = f.generateCertificate(new ByteArrayInputStream(FAKE_RSA_CA_1));
 
         // Insert initial key
         {
             KeyFactory keyFact = KeyFactory.getInstance("RSA");
-            PrivateKey privKey = keyFact.generatePrivate(new PKCS8EncodedKeySpec(FAKE_KEY_1));
+            PrivateKey privKey = keyFact.generatePrivate(new PKCS8EncodedKeySpec(FAKE_RSA_KEY_1));
             final Certificate[] chain = new Certificate[2];
-            chain[0] = f.generateCertificate(new ByteArrayInputStream(FAKE_USER_1));
+            chain[0] = f.generateCertificate(new ByteArrayInputStream(FAKE_RSA_USER_1));
             chain[1] = caCert;
 
             mKeyStore.setKeyEntry(TEST_ALIAS_1, privKey, null, chain);
@@ -1311,16 +2034,17 @@
 
             PrivateKeyEntry actual = (PrivateKeyEntry) actualEntry;
 
-            assertPrivateKeyEntryEquals(actual, FAKE_KEY_1, FAKE_USER_1, FAKE_CA_1);
+            assertPrivateKeyEntryEquals(actual, "RSA", FAKE_RSA_KEY_1, FAKE_RSA_USER_1,
+                    FAKE_RSA_CA_1);
         }
 
         // TODO make a separate key
         // Replace key
         {
             KeyFactory keyFact = KeyFactory.getInstance("RSA");
-            PrivateKey privKey = keyFact.generatePrivate(new PKCS8EncodedKeySpec(FAKE_KEY_1));
+            PrivateKey privKey = keyFact.generatePrivate(new PKCS8EncodedKeySpec(FAKE_RSA_KEY_1));
             final Certificate[] chain = new Certificate[2];
-            chain[0] = f.generateCertificate(new ByteArrayInputStream(FAKE_USER_1));
+            chain[0] = f.generateCertificate(new ByteArrayInputStream(FAKE_RSA_USER_1));
             chain[1] = caCert;
 
             mKeyStore.setKeyEntry(TEST_ALIAS_1, privKey, null, chain);
@@ -1333,7 +2057,8 @@
 
             PrivateKeyEntry actual = (PrivateKeyEntry) actualEntry;
 
-            assertPrivateKeyEntryEquals(actual, FAKE_KEY_1, FAKE_USER_1, FAKE_CA_1);
+            assertPrivateKeyEntryEquals(actual, "RSA", FAKE_RSA_KEY_1, FAKE_RSA_USER_1,
+                    FAKE_RSA_CA_1);
         }
     }
 
@@ -1342,7 +2067,7 @@
 
         // Create key #1
         {
-            KeyStore.PrivateKeyEntry privEntry = makeUserKey1();
+            KeyStore.PrivateKeyEntry privEntry = makeUserRsaKey1();
             mKeyStore.setEntry(TEST_ALIAS_1, privEntry, null);
 
             Entry entry = mKeyStore.getEntry(TEST_ALIAS_1, null);
@@ -1352,7 +2077,7 @@
             PrivateKeyEntry keyEntry = (PrivateKeyEntry) entry;
 
             ArrayList<Certificate> chain = new ArrayList<Certificate>();
-            chain.add(generateCertificate(FAKE_CA_1));
+            chain.add(generateCertificate(FAKE_RSA_CA_1));
             assertPrivateKeyEntryEquals(keyEntry, privEntry.getPrivateKey(),
                     privEntry.getCertificate(), chain);
         }
@@ -1365,7 +2090,7 @@
 
             PrivateKey expectedKey = (PrivateKey) key;
 
-            Certificate expectedCert = generateCertificate(FAKE_USER_1);
+            Certificate expectedCert = generateCertificate(FAKE_RSA_USER_1);
 
             mKeyStore.setKeyEntry(TEST_ALIAS_1, expectedKey, null,
                     new Certificate[] { expectedCert });
@@ -1385,17 +2110,17 @@
         mKeyStore.load(null, null);
 
         // Create key #1
-        mKeyStore.setEntry(TEST_ALIAS_1, makeUserKey1(), null);
+        mKeyStore.setEntry(TEST_ALIAS_1, makeUserRsaKey1(), null);
 
         // Create key #2
-        mKeyStore.setEntry(TEST_ALIAS_2, makeUserKey1(), null);
+        mKeyStore.setEntry(TEST_ALIAS_2, makeUserRsaKey1(), null);
 
 
         // Replace key #1 with key #2
         {
             Key key1 = mKeyStore.getKey(TEST_ALIAS_2, null);
 
-            Certificate cert = generateCertificate(FAKE_USER_1);
+            Certificate cert = generateCertificate(FAKE_RSA_USER_1);
 
             try {
                 mKeyStore.setKeyEntry(TEST_ALIAS_1, key1, null, new Certificate[] { cert });
@@ -1410,7 +2135,7 @@
         mKeyStore.load(null, null);
 
         // Create key #1
-        mKeyStore.setEntry(TEST_ALIAS_1, makeUserKey1(), null);
+        mKeyStore.setEntry(TEST_ALIAS_1, makeUserRsaKey1(), null);
 
         // Replace with same
         Entry entry = mKeyStore.getEntry(TEST_ALIAS_1, null);
@@ -1420,17 +2145,17 @@
     public void testKeyStore_Size_Unencrypted_Success() throws Exception {
         mKeyStore.load(null, null);
 
-        mKeyStore.setCertificateEntry(TEST_ALIAS_1, generateCertificate(FAKE_CA_1));
+        mKeyStore.setCertificateEntry(TEST_ALIAS_1, generateCertificate(FAKE_RSA_CA_1));
 
         assertEquals("The keystore size should match expected", 1, mKeyStore.size());
         assertAliases(new String[] { TEST_ALIAS_1 });
 
-        mKeyStore.setCertificateEntry(TEST_ALIAS_2, generateCertificate(FAKE_CA_1));
+        mKeyStore.setCertificateEntry(TEST_ALIAS_2, generateCertificate(FAKE_RSA_CA_1));
 
         assertEquals("The keystore size should match expected", 2, mKeyStore.size());
         assertAliases(new String[] { TEST_ALIAS_1, TEST_ALIAS_2 });
 
-        mKeyStore.setEntry(TEST_ALIAS_3, makeUserKey1(), null);
+        mKeyStore.setEntry(TEST_ALIAS_3, makeUserRsaKey1(), null);
 
         assertEquals("The keystore size should match expected", 3, mKeyStore.size());
         assertAliases(new String[] { TEST_ALIAS_1, TEST_ALIAS_2, TEST_ALIAS_3 });
@@ -1495,7 +2220,7 @@
     public void testKeyStore_KeyOperations_Wrap_Unencrypted_Success() throws Exception {
         mKeyStore.load(null, null);
 
-        mKeyStore.setEntry(TEST_ALIAS_1, makeUserKey1(), null);
+        mKeyStore.setEntry(TEST_ALIAS_1, makeUserRsaKey1(), null);
 
         // Test key usage
         Entry e = mKeyStore.getEntry(TEST_ALIAS_1, null);
diff --git a/tests/tests/keystore/src/android/keystore/cts/KeyChainTest.java b/tests/tests/keystore/src/android/keystore/cts/KeyChainTest.java
new file mode 100644
index 0000000..db6d6ba
--- /dev/null
+++ b/tests/tests/keystore/src/android/keystore/cts/KeyChainTest.java
@@ -0,0 +1,44 @@
+/*
+ * Copyright 2013 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 android.keystore.cts;
+
+import android.security.KeyChain;
+import junit.framework.TestCase;
+
+public class KeyChainTest extends TestCase {
+    public void testIsKeyAlgorithmSupported_RequiredAlgorithmsSupported() throws Exception {
+        assertTrue("DSA must be supported", KeyChain.isKeyAlgorithmSupported("DSA"));
+        assertTrue("EC must be supported", KeyChain.isKeyAlgorithmSupported("EC"));
+        assertTrue("RSA must be supported", KeyChain.isKeyAlgorithmSupported("RSA"));
+    }
+
+    /**
+     * Tests whether the required algorithms are backed by a Keymaster HAL that
+     * binds the key material to the specific device it was created or imported
+     * to. For more information on the Keymaster HAL, look at the header file at
+     * hardware/libhardware/include/hardware/keymaster.h and the associated
+     * tests in hardware/libhardware/tests/keymaster/
+     */
+    public void testIsBoundKeyAlgorithm_RequiredAlgorithmsSupported() throws Exception {
+        assertTrue("RSA must be hardware-backed by a hardware-specific Keymaster HAL",
+                KeyChain.isBoundKeyAlgorithm("RSA"));
+
+        // These are not required, but must not throw an exception
+        KeyChain.isBoundKeyAlgorithm("DSA");
+        KeyChain.isBoundKeyAlgorithm("EC");
+    }
+}
diff --git a/tests/tests/location/README.txt b/tests/tests/location/README.txt
new file mode 100644
index 0000000..4692eab
--- /dev/null
+++ b/tests/tests/location/README.txt
@@ -0,0 +1,2 @@
+Location CTS tests that require "android.permission.ACCESS_FINE_LOCATION".
+Note you must enable "Allow mock locations" at Settings > Developer options.
diff --git a/tests/tests/location/src/android/location/cts/LocationManagerTest.java b/tests/tests/location/src/android/location/cts/LocationManagerTest.java
old mode 100755
new mode 100644
index 2a2274c..8028422
--- a/tests/tests/location/src/android/location/cts/LocationManagerTest.java
+++ b/tests/tests/location/src/android/location/cts/LocationManagerTest.java
@@ -19,17 +19,18 @@
 
 import android.app.PendingIntent;
 import android.content.BroadcastReceiver;
+import android.content.ContentResolver;
 import android.content.Context;
 import android.content.Intent;
 import android.content.IntentFilter;
 import android.content.pm.PackageManager;
 import android.location.Criteria;
 import android.location.GpsStatus;
+import android.location.GpsStatus.Listener;
 import android.location.Location;
 import android.location.LocationListener;
 import android.location.LocationManager;
 import android.location.LocationProvider;
-import android.location.GpsStatus.Listener;
 import android.os.Bundle;
 import android.os.HandlerThread;
 import android.os.Looper;
@@ -38,7 +39,6 @@
 import android.test.InstrumentationTestCase;
 
 import java.util.List;
-import java.lang.Thread;
 
 /**
  * Requires the permissions
@@ -81,7 +81,7 @@
         // remove test provider if left over from an aborted run
         LocationProvider lp = mManager.getProvider(TEST_MOCK_PROVIDER_NAME);
         if (lp != null) {
-            mManager.removeTestProvider(TEST_MOCK_PROVIDER_NAME);
+            removeTestProvider(TEST_MOCK_PROVIDER_NAME);
         }
 
         addTestProvider(TEST_MOCK_PROVIDER_NAME);
@@ -107,7 +107,7 @@
     protected void tearDown() throws Exception {
         LocationProvider provider = mManager.getProvider(TEST_MOCK_PROVIDER_NAME);
         if (provider != null) {
-            mManager.removeTestProvider(TEST_MOCK_PROVIDER_NAME);
+            removeTestProvider(TEST_MOCK_PROVIDER_NAME);
         }
         if (mPendingIntent != null) {
             mManager.removeProximityAlert(mPendingIntent);
@@ -138,12 +138,12 @@
             // expected
         }
 
-        mManager.removeTestProvider(TEST_MOCK_PROVIDER_NAME);
+        removeTestProvider(TEST_MOCK_PROVIDER_NAME);
         provider = mManager.getProvider(TEST_MOCK_PROVIDER_NAME);
         assertNull(provider);
 
         try {
-            mManager.removeTestProvider(UNKNOWN_PROVIDER_NAME);
+            removeTestProvider(UNKNOWN_PROVIDER_NAME);
             fail("Should throw IllegalArgumentException when no provider exists!");
         } catch (IllegalArgumentException e) {
             // expected
@@ -177,7 +177,7 @@
         assertEquals(oldSizeAllProviders, providers.size());
         assertTrue(hasTestProvider(providers));
 
-        mManager.removeTestProvider(TEST_MOCK_PROVIDER_NAME);
+        removeTestProvider(TEST_MOCK_PROVIDER_NAME);
         providers = mManager.getAllProviders();
         assertEquals(oldSizeAllProviders - 1, providers.size());
         assertFalse(hasTestProvider(providers));
@@ -257,6 +257,70 @@
         assertNotNull(p);
     }
 
+    /**
+     * Tests that location mode is consistent with which providers are enabled. Sadly we can only
+     * passively test whatever mode happens to be selected--actually changing the mode would require
+     * the test to be system-signed, and CTS tests aren't. Also mode changes that enable NLP require
+     * user consent. Thus we will have a manual CTS verifier test that is similar to this test but
+     * tests every location mode. This test is just a "backup" for that since verifier tests are
+     * less reliable.
+     */
+    public void testModeAndProviderApisConsistent() {
+        ContentResolver cr = mContext.getContentResolver();
+        int mode = Settings.Secure.getInt(
+                cr, Settings.Secure.LOCATION_MODE, Settings.Secure.LOCATION_MODE_OFF);
+        boolean gps = Settings.Secure.isLocationProviderEnabled(cr, LocationManager.GPS_PROVIDER);
+        boolean nlp = Settings.Secure.isLocationProviderEnabled(
+                cr, LocationManager.NETWORK_PROVIDER);
+
+        // Assert that if there are no test providers enabled, LocationManager just returns the
+        // values from Settings.Secure.
+        forceClearTestProvider(LocationManager.GPS_PROVIDER);
+        forceClearTestProvider(LocationManager.NETWORK_PROVIDER);
+        boolean lmGps = mManager.isProviderEnabled(LocationManager.GPS_PROVIDER);
+        boolean lmNlp = mManager.isProviderEnabled(LocationManager.NETWORK_PROVIDER);
+        assertEquals("Inconsistent GPS values", gps, lmGps);
+        assertEquals("Inconsistent NLP values", nlp, lmNlp);
+
+        // Assert that isLocationProviderEnabled() values are consistent with the location mode
+        switch (mode) {
+            case Settings.Secure.LOCATION_MODE_OFF:
+                assertFalse("Bad GPS for mode " + mode, gps);
+                assertFalse("Bad NLP for mode " + mode, nlp);
+                break;
+            case Settings.Secure.LOCATION_MODE_SENSORS_ONLY:
+                assertEquals("Bad GPS for mode " + mode, hasGpsFeature(), gps);
+                assertFalse("Bad NLP for mode " + mode, nlp);
+                break;
+            case Settings.Secure.LOCATION_MODE_BATTERY_SAVING:
+                assertFalse("Bad GPS for mode " + mode, gps);
+                assertTrue("Bad NLP for mode " + mode, nlp);
+                break;
+            case Settings.Secure.LOCATION_MODE_HIGH_ACCURACY:
+                assertEquals("Bad GPS for mode " + mode, hasGpsFeature(), gps);
+                assertTrue("Bad NLP for mode " + mode, nlp);
+                break;
+        }
+    }
+
+    /**
+     * Clears the test provider. Works around b/11446702 by temporarily adding the test provider
+     * so we are allowed to clear it.
+     */
+    private void forceClearTestProvider(String provider) {
+        addTestProvider(provider);
+        mManager.clearTestProviderEnabled(provider);
+        removeTestProvider(provider);
+    }
+
+    /**
+     * Work around b/11446702 by clearing the test provider before removing it
+     */
+    private void removeTestProvider(String provider) {
+        mManager.clearTestProviderEnabled(provider);
+        mManager.removeTestProvider(provider);
+    }
+
     public void testLocationUpdatesWithLocationListener() throws InterruptedException {
         doLocationUpdatesWithLocationListener(TEST_MOCK_PROVIDER_NAME);
 
@@ -349,7 +413,7 @@
                     // run the update location test logic to ensure location updates can be injected
                     doLocationUpdatesWithLocationListener(providerName);
                 } finally {
-                    mManager.removeTestProvider(providerName);
+                    removeTestProvider(providerName);
                 }
             }
         }
@@ -761,7 +825,7 @@
     }
 
     private void unmockFusedLocation() {
-        mManager.removeTestProvider(FUSED_PROVIDER_NAME);
+        removeTestProvider(FUSED_PROVIDER_NAME);
     }
 
     /**
diff --git a/tests/tests/location/src/android/location/cts/LocationProviderTest.java b/tests/tests/location/src/android/location/cts/LocationProviderTest.java
index 60c9fb4..716801d 100644
--- a/tests/tests/location/src/android/location/cts/LocationProviderTest.java
+++ b/tests/tests/location/src/android/location/cts/LocationProviderTest.java
@@ -38,6 +38,8 @@
 
     @Override
     protected void tearDown() throws Exception {
+        // Work around b/11446702 by clearing the test provider before removing it
+        mLocationManager.clearTestProviderLocation(PROVIDER_NAME);
         mLocationManager.removeTestProvider(PROVIDER_NAME);
         super.tearDown();
     }
diff --git a/tests/tests/location2/README.txt b/tests/tests/location2/README.txt
new file mode 100644
index 0000000..92241eb
--- /dev/null
+++ b/tests/tests/location2/README.txt
@@ -0,0 +1,3 @@
+Location CTS tests that require "android.permission.ACCESS_COARSE_LOCATION", but not
+"android.permission.ACCESS_FINE_LOCATION". Note you must enable "Allow mock locations"
+at Settings > Developer options.
diff --git a/tests/tests/location2/src/android/location2/cts/LocationManagerTest.java b/tests/tests/location2/src/android/location2/cts/LocationManagerTest.java
old mode 100755
new mode 100644
index 8b818ba..6bf5c62
--- a/tests/tests/location2/src/android/location2/cts/LocationManagerTest.java
+++ b/tests/tests/location2/src/android/location2/cts/LocationManagerTest.java
@@ -91,10 +91,17 @@
         try {
             mManager.getProvider(providerName);
             fail("LocationManager.getProvider() did not throw SecurityException as expected");
-        } catch (SecurityException e) {
-            // expected
+        } catch (SecurityException expected) {
+        } finally {
+            removeTestProvider(providerName);
         }
+    }
 
+    /**
+     * Work around b/11446702 by clearing the test provider before removing it
+     */
+    private void removeTestProvider(String providerName) {
+        mManager.clearTestProviderEnabled(providerName);
         mManager.removeTestProvider(providerName);
     }
 
@@ -107,9 +114,12 @@
     }
 
     public void doTestGetCoarseProvider_allowed(String providerName) {
-        addTestProvider(providerName, Criteria.ACCURACY_COARSE, true, false, true);
-        assertNotNull(mManager.getProvider(providerName));
-        mManager.removeTestProvider(providerName);
+        try {
+            addTestProvider(providerName, Criteria.ACCURACY_COARSE, true, false, true);
+            assertNotNull(mManager.getProvider(providerName));
+        } finally {
+            removeTestProvider(providerName);
+        }
     }
 
     public void testGetNetworkProviderLocationUpdates_withIntent() {
@@ -130,45 +140,53 @@
 
 
     private void doTestGetLocationUpdates_withIntent(String providerName) {
-        addTestProvider(providerName, Criteria.ACCURACY_COARSE, true, false, true);
-        registerIntentReceiver();
+        try {
+            addTestProvider(providerName, Criteria.ACCURACY_COARSE, true, false, true);
+            registerIntentReceiver();
 
-        mManager.requestLocationUpdates(providerName, 0, 0, mPendingIntent);
-        updateLocation(providerName, LAT, LNG);
-        waitForReceiveBroadcast();
+            mManager.requestLocationUpdates(providerName, 0, 0, mPendingIntent);
+            updateLocation(providerName, LAT, LNG);
+            waitForReceiveBroadcast();
 
-        assertNotNull(mIntentReceiver.getLastReceivedIntent());
-        final Location location = mManager.getLastKnownLocation(providerName);
-        assertEquals(providerName, location.getProvider());
+            assertNotNull(mIntentReceiver.getLastReceivedIntent());
+            final Location location = mManager.getLastKnownLocation(providerName);
+            assertEquals(providerName, location.getProvider());
 
-        assertEquals(3000.0f, location.getAccuracy());
-        assertEquals(LAT, location.getLatitude(), FUDGER_DELTA);
-        assertEquals(LNG, location.getLongitude(), FUDGER_DELTA);
+            assertEquals(3000.0f, location.getAccuracy());
+            assertEquals(LAT, location.getLatitude(), FUDGER_DELTA);
+            assertEquals(LNG, location.getLongitude(), FUDGER_DELTA);
 
-        mManager.removeUpdates(mPendingIntent);
-        mManager.removeTestProvider(providerName);
+            mManager.removeUpdates(mPendingIntent);
+        } finally {
+            removeTestProvider(providerName);
+        }
     }
 
     private void doTestGetLocationUpdates_withListener(String providerName) {
-        addTestProvider(providerName, Criteria.ACCURACY_COARSE, true, false, true);
+        try {
+            addTestProvider(providerName, Criteria.ACCURACY_COARSE, true, false, true);
 
-        MockLocationListener listener = new MockLocationListener();
-        HandlerThread handlerThread = new HandlerThread("testLocationUpdates for " + providerName);
-        handlerThread.start();
+            MockLocationListener listener = new MockLocationListener();
+            HandlerThread handlerThread = new HandlerThread("testLocationUpdates for "
+                    + providerName);
+            handlerThread.start();
 
-        mManager.requestLocationUpdates(providerName, 0, 0, listener, handlerThread.getLooper());
-        updateLocation(providerName, LAT, LNG);
+            mManager.requestLocationUpdates(
+                    providerName, 0, 0, listener, handlerThread.getLooper());
+            updateLocation(providerName, LAT, LNG);
 
-        assertTrue(listener.hasCalledOnLocationChanged(TEST_TIME_OUT_MS));
-        Location location = listener.getLocation();
-        assertEquals(providerName, location.getProvider());
+            assertTrue(listener.hasCalledOnLocationChanged(TEST_TIME_OUT_MS));
+            Location location = listener.getLocation();
+            assertEquals(providerName, location.getProvider());
 
-        assertEquals(3000.0f, location.getAccuracy());
-        assertEquals(LAT, location.getLatitude(), FUDGER_DELTA);
-        assertEquals(LNG, location.getLongitude(), FUDGER_DELTA);
+            assertEquals(3000.0f, location.getAccuracy());
+            assertEquals(LAT, location.getLatitude(), FUDGER_DELTA);
+            assertEquals(LNG, location.getLongitude(), FUDGER_DELTA);
 
-        mManager.removeUpdates(listener);
-        mManager.removeTestProvider(providerName);
+            mManager.removeUpdates(listener);
+        } finally {
+            removeTestProvider(providerName);
+        }
     }
 
     /**
@@ -231,12 +249,11 @@
         try {
             mManager.sendExtraCommand(LocationManager.GPS_PROVIDER, "unknown", new Bundle());
             fail("Should have failed to send a command to the gps provider");
-        } catch (SecurityException e) {
-            // expected
+        } catch (SecurityException expected) {
+        } finally {
+            removeTestProvider(LocationManager.GPS_PROVIDER);
+            removeTestProvider(LocationManager.NETWORK_PROVIDER);
         }
-
-        mManager.removeTestProvider(LocationManager.GPS_PROVIDER);
-        mManager.removeTestProvider(LocationManager.NETWORK_PROVIDER);
     }
 
     private void registerIntentReceiver() {
diff --git a/tests/tests/media/Android.mk b/tests/tests/media/Android.mk
index f7639a4..4474b4a 100644
--- a/tests/tests/media/Android.mk
+++ b/tests/tests/media/Android.mk
@@ -22,7 +22,7 @@
 LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
 
 LOCAL_JAVA_LIBRARIES := android.test.runner
-LOCAL_STATIC_JAVA_LIBRARIES := ctsutil ctstestserver ctstestrunner
+LOCAL_STATIC_JAVA_LIBRARIES := ctsdeviceutil ctstestserver ctstestrunner
 
 LOCAL_SRC_FILES := $(call all-java-files-under, src)
 
diff --git a/tests/tests/media/AndroidManifest.xml b/tests/tests/media/AndroidManifest.xml
index 2eeef08..90024c4 100644
--- a/tests/tests/media/AndroidManifest.xml
+++ b/tests/tests/media/AndroidManifest.xml
@@ -58,6 +58,12 @@
                 <category android:name="android.intent.category.FRAMEWORK_INSTRUMENTATION_TEST" />
             </intent-filter>
         </activity>
+        <service android:name="android.media.cts.RemoteVirtualDisplayService"
+            android:process=":remoteService" >
+            <intent-filter>
+                <action android:name="android.intent.action.MAIN"/>
+            </intent-filter>
+        </service>
     </application>
 
     <instrumentation android:name="android.test.InstrumentationCtsTestRunner"
diff --git a/tests/tests/media/assets/hls.m3u8 b/tests/tests/media/assets/hls.m3u8
new file mode 100644
index 0000000..127574a
--- /dev/null
+++ b/tests/tests/media/assets/hls.m3u8
@@ -0,0 +1,8 @@
+#EXTM3U
+#EXT-X-TARGETDURATION:10
+#EXT-X-MEDIA-SEQUENCE:0
+#EXTINF:10, no desc
+segment000000.ts
+#EXTINF:10, no desc
+segment000001.ts
+#EXT-X-ENDLIST
diff --git a/tests/tests/media/assets/segment000000.ts b/tests/tests/media/assets/segment000000.ts
new file mode 100644
index 0000000..8992c7b
--- /dev/null
+++ b/tests/tests/media/assets/segment000000.ts
Binary files differ
diff --git a/tests/tests/media/assets/segment000001.ts b/tests/tests/media/assets/segment000001.ts
new file mode 100644
index 0000000..fb112ec
--- /dev/null
+++ b/tests/tests/media/assets/segment000001.ts
Binary files differ
diff --git a/tests/tests/media/res/layout/composition_layout.xml b/tests/tests/media/res/layout/composition_layout.xml
new file mode 100644
index 0000000..6aa9ea8
--- /dev/null
+++ b/tests/tests/media/res/layout/composition_layout.xml
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ * Copyright (C) 2014 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.
+ -->
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:orientation="horizontal" >
+        <FrameLayout
+            android:id="@+id/window0"
+            android:layout_width="0dp"
+            android:layout_height="match_parent"
+            android:visibility="visible"
+            android:layout_weight="0.33" />
+        <FrameLayout
+            android:id="@+id/window1"
+            android:layout_width="0dp"
+            android:layout_height="match_parent"
+            android:visibility="gone"
+            android:layout_weight="0.33" />
+        <FrameLayout
+            android:id="@+id/window2"
+            android:layout_width="0dp"
+            android:layout_height="match_parent"
+            android:visibility="gone"
+            android:layout_weight="0.33" />
+</LinearLayout>
diff --git a/tests/tests/media/res/raw/video_1280x720_mp4_h264_1000kbps_25fps_aac_stereo_128kbps_44100hz.mp4 b/tests/tests/media/res/raw/video_1280x720_mp4_h264_1000kbps_25fps_aac_stereo_128kbps_44100hz.mp4
new file mode 100644
index 0000000..add873d
--- /dev/null
+++ b/tests/tests/media/res/raw/video_1280x720_mp4_h264_1000kbps_25fps_aac_stereo_128kbps_44100hz.mp4
Binary files differ
diff --git a/tests/tests/media/res/raw/video_1280x720_webm_vp8_333kbps_25fps_vorbis_stereo_128kbps_44100hz.webm b/tests/tests/media/res/raw/video_1280x720_webm_vp8_333kbps_25fps_vorbis_stereo_128kbps_44100hz.webm
new file mode 100644
index 0000000..c8b9512
--- /dev/null
+++ b/tests/tests/media/res/raw/video_1280x720_webm_vp8_333kbps_25fps_vorbis_stereo_128kbps_44100hz.webm
Binary files differ
diff --git a/tests/tests/media/res/raw/video_1280x720_webm_vp9_309kbps_25fps_vorbis_stereo_128kbps_44100hz.webm b/tests/tests/media/res/raw/video_1280x720_webm_vp9_309kbps_25fps_vorbis_stereo_128kbps_44100hz.webm
new file mode 100644
index 0000000..65b436a
--- /dev/null
+++ b/tests/tests/media/res/raw/video_1280x720_webm_vp9_309kbps_25fps_vorbis_stereo_128kbps_44100hz.webm
Binary files differ
diff --git a/tests/tests/media/res/raw/video_480x360_mp4_mpeg4_860kbps_25fps_aac_stereo_128kbps_44100hz.mp4 b/tests/tests/media/res/raw/video_480x360_mp4_mpeg4_860kbps_25fps_aac_stereo_128kbps_44100hz.mp4
new file mode 100644
index 0000000..5dbb6db
--- /dev/null
+++ b/tests/tests/media/res/raw/video_480x360_mp4_mpeg4_860kbps_25fps_aac_stereo_128kbps_44100hz.mp4
Binary files differ
diff --git a/tests/tests/media/res/raw/video_480x360_webm_vp8_333kbps_25fps_vorbis_stereo_128kbps_44100hz.webm b/tests/tests/media/res/raw/video_480x360_webm_vp8_333kbps_25fps_vorbis_stereo_128kbps_44100hz.webm
new file mode 100644
index 0000000..f64aec3
--- /dev/null
+++ b/tests/tests/media/res/raw/video_480x360_webm_vp8_333kbps_25fps_vorbis_stereo_128kbps_44100hz.webm
Binary files differ
diff --git a/tests/tests/media/res/raw/video_480x360_webm_vp9_333kbps_25fps_vorbis_stereo_128kbps_44100hz.webm b/tests/tests/media/res/raw/video_480x360_webm_vp9_333kbps_25fps_vorbis_stereo_128kbps_44100hz.webm
new file mode 100644
index 0000000..59b0c44
--- /dev/null
+++ b/tests/tests/media/res/raw/video_480x360_webm_vp9_333kbps_25fps_vorbis_stereo_128kbps_44100hz.webm
Binary files differ
diff --git a/tests/tests/media/src/android/media/cts/AdaptivePlaybackTest.java b/tests/tests/media/src/android/media/cts/AdaptivePlaybackTest.java
new file mode 100644
index 0000000..f21fff3
--- /dev/null
+++ b/tests/tests/media/src/android/media/cts/AdaptivePlaybackTest.java
@@ -0,0 +1,1619 @@
+/*
+ * Copyright (C) 2014 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 android.media.cts;
+
+import com.android.cts.media.R;
+
+import android.content.Context;
+import android.content.res.AssetFileDescriptor;
+import android.media.MediaCodec;
+import android.media.MediaCodecInfo;
+import android.media.MediaCodecInfo.CodecCapabilities;
+import android.media.MediaCodecInfo.CodecProfileLevel;
+import android.media.MediaCodecList;
+import android.media.MediaExtractor;
+import android.media.MediaFormat;
+import android.util.Log;
+import android.view.Surface;
+
+import android.opengl.GLES20;
+import javax.microedition.khronos.opengles.GL10;
+
+import java.io.IOException;
+import java.nio.ByteBuffer;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Locale;
+import java.util.zip.CRC32;
+
+public class AdaptivePlaybackTest extends MediaPlayerTestBase {
+    private static final String TAG = "AdaptivePlaybackTest";
+    private boolean sanity = false;
+    private static final int MIN_FRAMES_BEFORE_DRC = 2;
+
+    public Iterable<Codec> H264(CodecFactory factory) {
+        return factory.createCodecList(
+                mContext,
+                "video/avc",
+                "OMX.google.h264.decoder",
+                R.raw.video_480x360_mp4_h264_1000kbps_25fps_aac_stereo_128kbps_44100hz,
+                R.raw.video_1280x720_mp4_h264_1000kbps_25fps_aac_stereo_128kbps_44100hz);
+    }
+
+    public Iterable<Codec> H263(CodecFactory factory) {
+        return factory.createCodecList(
+                mContext,
+                "video/3gpp",
+                "OMX.google.h263.decoder",
+                R.raw.video_176x144_3gp_h263_300kbps_12fps_aac_stereo_128kbps_22050hz);
+    }
+
+    public Iterable<Codec> Mpeg4(CodecFactory factory) {
+        return factory.createCodecList(
+                mContext,
+                "video/mp4v-es",
+                "OMX.google.mpeg4.decoder",
+                R.raw.video_480x360_mp4_mpeg4_860kbps_25fps_aac_stereo_128kbps_44100hz);
+    }
+
+    public Iterable<Codec> VP8(CodecFactory factory) {
+        return factory.createCodecList(
+                mContext,
+                "video/x-vnd.on2.vp8",
+                "OMX.google.vp8.decoder",
+                R.raw.video_480x360_webm_vp8_333kbps_25fps_vorbis_stereo_128kbps_44100hz,
+                R.raw.video_1280x720_webm_vp8_333kbps_25fps_vorbis_stereo_128kbps_44100hz);
+    }
+
+    public Iterable<Codec> VP9(CodecFactory factory) {
+        return factory.createCodecList(
+                mContext,
+                "video/x-vnd.on2.vp9",
+                "OMX.google.vp9.decoder",
+                R.raw.video_480x360_webm_vp9_333kbps_25fps_vorbis_stereo_128kbps_44100hz,
+                R.raw.video_1280x720_webm_vp9_309kbps_25fps_vorbis_stereo_128kbps_44100hz);
+    }
+
+    CodecFactory ALL = new CodecFactory();
+    CodecFactory SW  = new SWCodecFactory();
+    CodecFactory HW  = new HWCodecFactory();
+
+    public Iterable<Codec> H264()  { return H264(ALL);  }
+    public Iterable<Codec> VP8()   { return VP8(ALL);   }
+    public Iterable<Codec> VP9()   { return VP9(ALL);   }
+    public Iterable<Codec> Mpeg4() { return Mpeg4(ALL); }
+    public Iterable<Codec> H263()  { return H263(ALL);  }
+
+    public Iterable<Codec> AllCodecs() {
+        return chain(H264(ALL), VP8(ALL), VP9(ALL), Mpeg4(ALL), H263(ALL));
+    }
+
+    public Iterable<Codec> SWCodecs() {
+        return chain(H264(SW), VP8(SW), VP9(SW), Mpeg4(SW), H263(SW));
+    }
+
+    public Iterable<Codec> HWCodecs() {
+        return chain(H264(HW), VP8(HW), VP9(HW), Mpeg4(HW), H263(HW));
+    }
+
+    /* tests for adaptive codecs */
+    Test adaptiveEarlyEos     = new EarlyEosTest().adaptive();
+    Test adaptiveEosFlushSeek = new EosFlushSeekTest().adaptive();
+    Test adaptiveSkipAhead    = new AdaptiveSkipTest(true /* forward */);
+    Test adaptiveSkipBack     = new AdaptiveSkipTest(false /* forward */);
+
+    /* DRC tests for adaptive codecs */
+    Test adaptiveReconfigDrc      = new ReconfigDrcTest().adaptive();
+    Test adaptiveSmallReconfigDrc = new ReconfigDrcTest().adaptiveSmall();
+    Test adaptiveDrc      = new AdaptiveDrcTest(); /* adaptive */
+    Test adaptiveSmallDrc = new AdaptiveDrcTest().adaptiveSmall();
+
+    /* tests for regular codecs */
+    Test earlyEos          = new EarlyEosTest();
+    Test eosFlushSeek      = new EosFlushSeekTest();
+    Test flushConfigureDrc = new ReconfigDrcTest();
+
+    Test[] allTests = {
+        adaptiveEarlyEos,
+        adaptiveEosFlushSeek,
+        adaptiveSkipAhead,
+        adaptiveSkipBack,
+        adaptiveReconfigDrc,
+        adaptiveSmallReconfigDrc,
+        adaptiveDrc,
+        adaptiveSmallDrc,
+        earlyEos,
+        eosFlushSeek,
+        flushConfigureDrc,
+    };
+
+    /* helpers to run sets of tests */
+    public void runEOS() { ex(AllCodecs(), new Test[] {
+        adaptiveEarlyEos,
+        adaptiveEosFlushSeek,
+        adaptiveReconfigDrc,
+        adaptiveSmallReconfigDrc,
+        earlyEos,
+        eosFlushSeek,
+        flushConfigureDrc,
+    }); }
+
+    public void runAll() { ex(AllCodecs(), allTests); }
+    public void runSW()  { ex(SWCodecs(),  allTests); }
+    public void runHW()  { ex(HWCodecs(),  allTests); }
+
+    public void sanityAll() { sanity = true; try { runAll(); } finally { sanity = false; } }
+    public void sanitySW()  { sanity = true; try { runSW();  } finally { sanity = false; } }
+    public void sanityHW()  { sanity = true; try { runHW();  } finally { sanity = false; } }
+
+    public void runH264()  { ex(H264(),  allTests); }
+    public void runVP8()   { ex(VP8(),   allTests); }
+    public void runVP9()   { ex(VP9(),   allTests); }
+    public void runMpeg4() { ex(Mpeg4(), allTests); }
+    public void runH263()  { ex(H263(),  allTests); }
+
+    public void onlyH264HW()  { ex(H264(HW),  allTests); }
+    public void onlyVP8HW()   { ex(VP8(HW),   allTests); }
+    public void onlyVP9HW()   { ex(VP9(HW),   allTests); }
+    public void onlyMpeg4HW() { ex(Mpeg4(HW), allTests); }
+    public void onlyH263HW()  { ex(H263(HW),  allTests); }
+
+    public void onlyH264SW()  { ex(H264(SW),  allTests); }
+    public void onlyVP8SW()   { ex(VP8(SW),   allTests); }
+    public void onlyVP9SW()   { ex(VP9(SW),   allTests); }
+    public void onlyMpeg4SW() { ex(Mpeg4(SW), allTests); }
+    public void onlyH263SW()  { ex(H263(SW),  allTests); }
+
+    public void bytebuffer() { ex(H264(SW), new EarlyEosTest().byteBuffer()); }
+    public void texture() { ex(H264(HW), new EarlyEosTest().texture()); }
+
+    /* inidividual tests */
+    public void testH264_adaptiveEarlyEos()  { ex(H264(),  adaptiveEarlyEos); }
+    public void testVP8_adaptiveEarlyEos()   { ex(VP8(),   adaptiveEarlyEos); }
+    public void testVP9_adaptiveEarlyEos()   { ex(VP9(),   adaptiveEarlyEos); }
+    public void testMpeg4_adaptiveEarlyEos() { ex(Mpeg4(), adaptiveEarlyEos); }
+    public void testH263_adaptiveEarlyEos()  { ex(H263(),  adaptiveEarlyEos); }
+
+    public void testH264_adaptiveEosFlushSeek()  { ex(H264(),  adaptiveEosFlushSeek); }
+    public void testVP8_adaptiveEosFlushSeek()   { ex(VP8(),   adaptiveEosFlushSeek); }
+    public void testVP9_adaptiveEosFlushSeek()   { ex(VP9(),   adaptiveEosFlushSeek); }
+    public void testMpeg4_adaptiveEosFlushSeek() { ex(Mpeg4(), adaptiveEosFlushSeek); }
+    public void testH263_adaptiveEosFlushSeek()  { ex(H263(),  adaptiveEosFlushSeek); }
+
+    public void testH264_adaptiveSkipAhead()  { ex(H264(),  adaptiveSkipAhead); }
+    public void testVP8_adaptiveSkipAhead()   { ex(VP8(),   adaptiveSkipAhead); }
+    public void testVP9_adaptiveSkipAhead()   { ex(VP9(),   adaptiveSkipAhead); }
+    public void testMpeg4_adaptiveSkipAhead() { ex(Mpeg4(), adaptiveSkipAhead); }
+    public void testH263_adaptiveSkipAhead()  { ex(H263(),  adaptiveSkipAhead); }
+
+    public void testH264_adaptiveSkipBack()  { ex(H264(),  adaptiveSkipBack); }
+    public void testVP8_adaptiveSkipBack()   { ex(VP8(),   adaptiveSkipBack); }
+    public void testVP9_adaptiveSkipBack()   { ex(VP9(),   adaptiveSkipBack); }
+    public void testMpeg4_adaptiveSkipBack() { ex(Mpeg4(), adaptiveSkipBack); }
+    public void testH263_adaptiveSkipBack()  { ex(H263(),  adaptiveSkipBack); }
+
+    public void testH264_adaptiveReconfigDrc()  { ex(H264(),  adaptiveReconfigDrc); }
+    public void testVP8_adaptiveReconfigDrc()   { ex(VP8(),   adaptiveReconfigDrc); }
+    public void testVP9_adaptiveReconfigDrc()   { ex(VP9(),   adaptiveReconfigDrc); }
+    public void testMpeg4_adaptiveReconfigDrc() { ex(Mpeg4(), adaptiveReconfigDrc); }
+    public void testH263_adaptiveReconfigDrc()  { ex(H263(),  adaptiveReconfigDrc); }
+
+    public void testH264_adaptiveSmallReconfigDrc()  { ex(H264(),  adaptiveSmallReconfigDrc); }
+    public void testVP8_adaptiveSmallReconfigDrc()   { ex(VP8(),   adaptiveSmallReconfigDrc); }
+    public void testVP9_adaptiveSmallReconfigDrc()   { ex(VP9(),   adaptiveSmallReconfigDrc); }
+    public void testMpeg4_adaptiveSmallReconfigDrc() { ex(Mpeg4(), adaptiveSmallReconfigDrc); }
+    public void testH263_adaptiveSmallReconfigDrc()  { ex(H263(),  adaptiveSmallReconfigDrc); }
+
+    public void testH264_adaptiveDrc() { ex(H264(), adaptiveDrc); }
+    public void testVP8_adaptiveDrc()  { ex(VP8(),  adaptiveDrc); }
+    public void testVP9_adaptiveDrc()  { ex(VP9(),  adaptiveDrc); }
+
+    public void testH264_adaptiveDrcEarlyEos() { ex(H264(), new AdaptiveDrcEarlyEosTest()); }
+    public void testVP8_adaptiveDrcEarlyEos()  { ex(VP8(),  new AdaptiveDrcEarlyEosTest()); }
+    public void testVP9_adaptiveDrcEarlyEos()  { ex(VP9(),  new AdaptiveDrcEarlyEosTest()); }
+
+    public void testH264_adaptiveSmallDrc()  { ex(H264(),  adaptiveSmallDrc); }
+    public void testVP8_adaptiveSmallDrc()   { ex(VP8(),   adaptiveSmallDrc); }
+    public void testVP9_adaptiveSmallDrc()   { ex(VP9(),   adaptiveSmallDrc); }
+
+    public void testH264_earlyEos()  { ex(H264(),  earlyEos); }
+    public void testVP8_earlyEos()   { ex(VP8(),   earlyEos); }
+    public void testVP9_earlyEos()   { ex(VP9(),   earlyEos); }
+    public void testMpeg4_earlyEos() { ex(Mpeg4(), earlyEos); }
+    public void testH263_earlyEos()  { ex(H263(),  earlyEos); }
+
+    public void testH264_eosFlushSeek()  { ex(H264(),  eosFlushSeek); }
+    public void testVP8_eosFlushSeek()   { ex(VP8(),   eosFlushSeek); }
+    public void testVP9_eosFlushSeek()   { ex(VP9(),   eosFlushSeek); }
+    public void testMpeg4_eosFlushSeek() { ex(Mpeg4(), eosFlushSeek); }
+    public void testH263_eosFlushSeek()  { ex(H263(),  eosFlushSeek); }
+
+    public void testH264_flushConfigureDrc()  { ex(H264(),  flushConfigureDrc); }
+    public void testVP8_flushConfigureDrc()   { ex(VP8(),   flushConfigureDrc); }
+    public void testVP9_flushConfigureDrc()   { ex(VP9(),   flushConfigureDrc); }
+    public void testMpeg4_flushConfigureDrc() { ex(Mpeg4(), flushConfigureDrc); }
+    public void testH263_flushConfigureDrc()  { ex(H263(),  flushConfigureDrc); }
+
+    /* only use unchecked exceptions to allow brief test methods */
+    private void ex(Iterable<Codec> codecList, Test test) {
+        ex(codecList, new Test[] { test } );
+    }
+
+    private void ex(Iterable<Codec> codecList, Test[] testList) {
+        TestList tests = new TestList();
+        for (Codec c : codecList) {
+            for (Test test : testList) {
+                if (test.isValid(c)) {
+                    test.addTests(tests, c);
+                }
+            }
+        }
+        try {
+            tests.run();
+        } catch (Throwable t) {
+            throw new RuntimeException(t);
+        }
+    }
+
+    /* need an inner class to have access to the activity */
+    abstract class ActivityTest extends Test {
+        TestSurface mNullSurface = new ActivitySurface(null);
+        protected TestSurface getSurface() {
+            if (mUseSurface) {
+                return new ActivitySurface(getActivity().getSurfaceHolder().getSurface());
+            } else if (mUseSurfaceTexture) {
+                return new DecoderSurface(1280, 720, mCRC);
+            }
+            return mNullSurface;
+        }
+    }
+
+    static final int NUM_FRAMES = 50;
+
+    /**
+     * Queue some frames with an EOS on the last one.  Test that we have decoded as many
+     * frames as we queued.  This tests the EOS handling of the codec to see if all queued
+     * (and out-of-order) frames are actually decoded and returned.
+     */
+    class EarlyEosTest extends ActivityTest {
+        public boolean isValid(Codec c) {
+            return getFormat(c) != null;
+        }
+        public void addTests(TestList tests, final Codec c) {
+            for (int i = NUM_FRAMES / 2; i > 0; i--) {
+                final int queuedFrames = i;
+                tests.add(
+                    new Step("testing early EOS at " + queuedFrames, this, c) {
+                        public void run() {
+                            Decoder decoder = new Decoder(c.name);
+                            try {
+                                decoder.configureAndStart(stepFormat(), stepSurface());
+                                int decodedFrames = -decoder.queueInputBufferRange(
+                                        stepMedia(),
+                                        0 /* startFrame */,
+                                        queuedFrames,
+                                        true /* sendEos */,
+                                        true /* waitForEos */);
+                                if (decodedFrames <= 0) {
+                                    Log.w(TAG, "Did not receive EOS -- negating frame count");
+                                }
+                                decoder.stop();
+                                if (decodedFrames != queuedFrames) {
+                                    warn("decoded " + decodedFrames + " frames out of " +
+                                            queuedFrames + " queued");
+                                }
+                            } finally {
+                                warn(decoder.getWarnings());
+                                decoder.releaseQuietly();
+                            }
+                        }
+                    });
+                if (sanity) {
+                    i >>= 1;
+                }
+            }
+        }
+    };
+
+    /**
+     * Similar to EarlyEosTest, but we keep the component alive and running in between the steps.
+     * This is how seeking should be done if all frames must be outputted.  This also tests that
+     * PTS can be repeated after flush.
+     */
+    class EosFlushSeekTest extends ActivityTest {
+        Decoder mDecoder; // test state
+        public boolean isValid(Codec c) {
+            return getFormat(c) != null;
+        }
+        public void addTests(TestList tests, final Codec c) {
+            tests.add(
+                new Step("testing EOS & flush before seek - init", this, c) {
+                    public void run() {
+                        mDecoder = new Decoder(c.name);
+                        mDecoder.configureAndStart(stepFormat(), stepSurface());
+                    }});
+
+            for (int i = NUM_FRAMES; i > 0; i--) {
+                final int queuedFrames = i;
+                tests.add(
+                    new Step("testing EOS & flush before seeking after " + queuedFrames +
+                            " frames", this, c) {
+                        public void run() {
+                            int decodedFrames = -mDecoder.queueInputBufferRange(
+                                    stepMedia(),
+                                    0 /* startFrame */,
+                                    queuedFrames,
+                                    true /* sendEos */,
+                                    true /* waitForEos */);
+                            if (decodedFrames != queuedFrames) {
+                                warn("decoded " + decodedFrames + " frames out of " +
+                                        queuedFrames + " queued");
+                            }
+                            warn(mDecoder.getWarnings());
+                            mDecoder.clearWarnings();
+                            mDecoder.flush();
+                        }
+                    });
+                if (sanity) {
+                    i >>= 1;
+                }
+            }
+
+            tests.add(
+                new Step("testing EOS & flush before seek - finally", this, c) {
+                    public void run() {
+                        try {
+                            mDecoder.stop();
+                        } finally {
+                            mDecoder.release();
+                        }
+                    }});
+        }
+    };
+
+    /**
+     * Similar to EosFlushSeekTest, but we change the media size between the steps.
+     * This is how dynamic resolution switching can be done on codecs that do not support
+     * adaptive playback.
+     */
+    class ReconfigDrcTest extends ActivityTest {
+        Decoder mDecoder;  // test state
+        public boolean isValid(Codec c) {
+            return getFormat(c) != null && c.mediaList.length > 1;
+        }
+        public void addTests(TestList tests, final Codec c) {
+            tests.add(
+                new Step("testing DRC with reconfigure - init", this, c) {
+                    public void run() {
+                        mDecoder = new Decoder(c.name);
+                    }});
+
+            for (int i = NUM_FRAMES, ix = 0; i > 0; i--, ix++) {
+                final int queuedFrames = i;
+                final int mediaIx = ix % c.mediaList.length;
+                tests.add(
+                    new Step("testing DRC with reconfigure after " + queuedFrames + " frames",
+                            this, c, mediaIx) {
+                        public void run() {
+                            try {
+                                //mDecoder.configureAndStart(stepFormat(), stepSurface());
+                                if(mDecoder.configureAndStart(stepFormat(), stepSurface())){
+                                int decodedFrames = -mDecoder.queueInputBufferRange(
+                                        stepMedia(),
+                                        0 /* startFrame */,
+                                        queuedFrames,
+                                        true /* sendEos */,
+                                        true /* waitForEos */);
+                                if (decodedFrames != queuedFrames) {
+                                    warn("decoded " + decodedFrames + " frames out of " +
+                                            queuedFrames + " queued");
+                                }
+                                warn(mDecoder.getWarnings());
+                                mDecoder.clearWarnings();
+                                mDecoder.flush();
+	                            }
+                            } finally {
+                                mDecoder.stop();
+                            }
+                        }
+                    });
+                if (sanity) {
+                    i >>= 1;
+                }
+            }
+            tests.add(
+                new Step("testing DRC with reconfigure - finally", this, c) {
+                    public void run() {
+                        mDecoder.release();
+                    }});
+        }
+    };
+
+    /* ADAPTIVE-ONLY TESTS - only run on codecs that support adaptive playback */
+
+    /**
+     * Test dynamic resolution change support.  Queue various sized media segments
+     * with different resolutions, verify that all queued frames were decoded.  Here
+     * PTS will grow between segments.
+     */
+    class AdaptiveDrcTest extends ActivityTest {
+        Decoder mDecoder;
+        int mAdjustTimeUs;
+        int mDecodedFrames;
+        int mQueuedFrames;
+
+        public AdaptiveDrcTest() {
+            super();
+            adaptive();
+        }
+        public boolean isValid(Codec c) {
+            checkAdaptiveFormat();
+            return c.adaptive && c.mediaList.length > 1;
+        }
+        public void addTests(TestList tests, final Codec c) {
+            tests.add(
+                new Step("testing DRC with no reconfigure - init", this, c) {
+                    public void run() throws Throwable {
+                        // FIXME wait 2 seconds to allow system to free up previous codecs
+                        try {
+                            Thread.sleep(2000);
+                        } catch (InterruptedException e) {}
+                        mDecoder = new Decoder(c.name);
+                        mDecoder.configureAndStart(stepFormat(), stepSurface());
+                        mAdjustTimeUs = 0;
+                        mDecodedFrames = 0;
+                        mQueuedFrames = 0;
+                    }});
+
+            for (int i = NUM_FRAMES, ix = 0; i >= MIN_FRAMES_BEFORE_DRC; i--, ix++) {
+                final int mediaIx = ix % c.mediaList.length;
+                final int segmentSize = i;
+                tests.add(
+                    new Step("testing DRC with no reconfigure after " + i + " frames",
+                            this, c, mediaIx) {
+                        public void run() throws Throwable {
+                            mQueuedFrames += segmentSize;
+                            boolean lastSequence = segmentSize == MIN_FRAMES_BEFORE_DRC;
+                            if (sanity) {
+                                lastSequence = (segmentSize >> 1) <= MIN_FRAMES_BEFORE_DRC;
+                            }
+                            int frames = mDecoder.queueInputBufferRange(
+                                    stepMedia(),
+                                    0 /* startFrame */,
+                                    segmentSize,
+                                    lastSequence /* sendEos */,
+                                    lastSequence /* expectEos */,
+                                    mAdjustTimeUs);
+                            if (lastSequence && frames >= 0) {
+                                warn("did not receive EOS, received " + frames + " frames");
+                            } else if (!lastSequence && frames < 0) {
+                                warn("received EOS, received " + (-frames) + " frames");
+                            }
+                            warn(mDecoder.getWarnings());
+                            mDecoder.clearWarnings();
+
+                            mDecodedFrames += Math.abs(frames);
+                            mAdjustTimeUs += 1 + stepMedia().getTimestampRangeValue(
+                                    0, segmentSize, Media.RANGE_END);
+                        }});
+                if (sanity) {
+                    i >>= 1;
+                }
+            }
+            tests.add(
+                new Step("testing DRC with no reconfigure - init", this, c) {
+                    public void run() throws Throwable {
+                        if (mDecodedFrames != mQueuedFrames) {
+                            warn("decoded " + mDecodedFrames + " frames out of " +
+                                    mQueuedFrames + " queued");
+                        }
+                        try {
+                            mDecoder.stop();
+                        } finally {
+                            mDecoder.release();
+                        }
+                    }
+                });
+        }
+    };
+
+    /**
+     * Queue EOS shortly after a dynamic resolution change.  Test that all frames were
+     * decoded.
+     */
+    class AdaptiveDrcEarlyEosTest extends ActivityTest {
+        public AdaptiveDrcEarlyEosTest() {
+            super();
+            adaptive();
+        }
+        public boolean isValid(Codec c) {
+            checkAdaptiveFormat();
+            return c.adaptive && c.mediaList.length > 1;
+        }
+        public Step testStep(final Codec c, final int framesBeforeDrc,
+                final int framesBeforeEos) {
+            return new Step("testing DRC with no reconfigure after " + framesBeforeDrc +
+                    " frames and subsequent EOS after " + framesBeforeEos + " frames",
+                    this, c) {
+                public void run() throws Throwable {
+                    Decoder decoder = new Decoder(c.name);
+                    int queuedFrames = framesBeforeDrc + framesBeforeEos;
+                    int framesA = 0;
+                    int framesB = 0;
+                    try {
+                        decoder.configureAndStart(stepFormat(), stepSurface());
+                        Media media = c.mediaList[0];
+
+                        framesA = decoder.queueInputBufferRange(
+                                media,
+                                0 /* startFrame */,
+                                framesBeforeDrc,
+                                false /* sendEos */,
+                                false /* expectEos */);
+                        if (framesA < 0) {
+                            warn("received unexpected EOS, received " + (-framesA) + " frames");
+                        }
+                        long adjustTimeUs = 1 + media.getTimestampRangeValue(
+                                0, framesBeforeDrc, Media.RANGE_END);
+
+                        media = c.mediaList[1];
+                        framesB = decoder.queueInputBufferRange(
+                                media,
+                                0 /* startFrame */,
+                                framesBeforeEos,
+                                true /* sendEos */,
+                                true /* expectEos */,
+                                adjustTimeUs);
+                        if (framesB >= 0) {
+                            warn("did not receive EOS, received " + (-framesB) + " frames");
+                        }
+                        decoder.stop();
+                        warn(decoder.getWarnings());
+                    } finally {
+                        int decodedFrames = Math.abs(framesA) + Math.abs(framesB);
+                        if (decodedFrames != queuedFrames) {
+                            warn("decoded " + decodedFrames + " frames out of " + queuedFrames +
+                                    " queued");
+                        }
+                        decoder.release();
+                    }
+                }
+            };
+        }
+        public void addTests(TestList tests, Codec c) {
+            for (int drcFrame = 6; drcFrame >= MIN_FRAMES_BEFORE_DRC; drcFrame--) {
+                for (int eosFrame = 6; eosFrame >= 1; eosFrame--) {
+                    tests.add(testStep(c, drcFrame, eosFrame));
+                }
+            }
+        }
+    };
+
+    /**
+     * Similar to AdaptiveDrcTest, but tests that PTS can change at adaptive boundaries both
+     * forward and backward without the need to flush.
+     */
+    class AdaptiveSkipTest extends ActivityTest {
+        boolean forward;
+        public AdaptiveSkipTest(boolean fwd) {
+            forward = fwd;
+            adaptive();
+        }
+        public boolean isValid(Codec c) {
+            checkAdaptiveFormat();
+            return c.adaptive;
+        }
+        Decoder mDecoder;
+        int mAdjustTimeUs = 0;
+        int mDecodedFrames = 0;
+        int mQueuedFrames = 0;
+        public void addTests(TestList tests, final Codec c) {
+            tests.add(
+                new Step("testing flushless skipping - init", this, c) {
+                    public void run() throws Throwable {
+                        mDecoder = new Decoder(c.name);
+                        mDecoder.configureAndStart(stepFormat(), stepSurface());
+                        mAdjustTimeUs = 0;
+                        mDecodedFrames = 0;
+                        mQueuedFrames = 0;
+                    }});
+
+            for (int i = 2, ix = 0; i <= NUM_FRAMES; i++, ix++) {
+                final int mediaIx = ix % c.mediaList.length;
+                final int segmentSize = i;
+                final boolean lastSequence;
+                if (sanity) {
+                    lastSequence = (segmentSize << 1) + 1 > NUM_FRAMES;
+                } else {
+                    lastSequence = segmentSize >= NUM_FRAMES;
+                }
+                tests.add(
+                    new Step("testing flushless skipping " + (forward ? "forward" : "backward") +
+                            " after " + i + " frames", this, c) {
+                        public void run() throws Throwable {
+                            int frames = mDecoder.queueInputBufferRange(
+                                stepMedia(),
+                                0 /* startFrame */,
+                                segmentSize,
+                                lastSequence /* sendEos */,
+                                lastSequence /* expectEos */,
+                                mAdjustTimeUs);
+                            if (lastSequence && frames >= 0) {
+                                warn("did not receive EOS, received " + frames + " frames");
+                            } else if (!lastSequence && frames < 0) {
+                                warn("received unexpected EOS, received " + (-frames) + " frames");
+                            }
+                            warn(mDecoder.getWarnings());
+                            mDecoder.clearWarnings();
+
+                            mQueuedFrames += segmentSize;
+                            mDecodedFrames += Math.abs(frames);
+                            if (forward) {
+                                mAdjustTimeUs += 10000000 + stepMedia().getTimestampRangeValue(
+                                        0, segmentSize, Media.RANGE_DURATION);
+                            }
+                        }});
+                if (sanity) {
+                    i <<= 1;
+                }
+            }
+
+            tests.add(
+                new Step("testing flushless skipping - finally", this, c) {
+                    public void run() throws Throwable {
+                        if (mDecodedFrames != mQueuedFrames) {
+                            warn("decoded " + mDecodedFrames + " frames out of " + mQueuedFrames +
+                                    " queued");
+                        }
+                        try {
+                            mDecoder.stop();
+                        } finally {
+                            mDecoder.release();
+                        }
+                    }});
+        }
+    };
+
+    // not yet used
+    static long checksum(ByteBuffer buf, int size, CRC32 crc) {
+        assertTrue(size >= 0);
+        assertTrue(size <= buf.capacity());
+        crc.reset();
+        if (buf.hasArray()) {
+            crc.update(buf.array(), buf.arrayOffset(), size);
+        } else {
+           int pos = buf.position();
+           buf.rewind();
+           final int rdsize = Math.min(4096, size);
+           byte bb[] = new byte[rdsize];
+           int chk;
+           for (int i = 0; i < size; i += chk) {
+                chk = Math.min(rdsize, size - i);
+                buf.get(bb, 0, chk);
+                crc.update(bb, 0, chk);
+            }
+            buf.position(pos);
+        }
+        return crc.getValue();
+    }
+
+    CRC32 mCRC;
+
+    @Override
+    protected void setUp() throws Exception {
+        super.setUp();
+        mCRC = new CRC32();
+    }
+
+    /* ====================================================================== */
+    /*                              UTILITY FUNCTIONS                         */
+    /* ====================================================================== */
+    public static String collectionString(Collection<?> c) {
+        StringBuilder res = new StringBuilder("[");
+        boolean subsequent = false;
+        for (Object o: c) {
+            if (subsequent) {
+                res.append(", ");
+            }
+            res.append(o);
+            subsequent = true;
+        }
+        return res.append("]").toString();
+    }
+
+    static String byteBufferToString(ByteBuffer buf, int start, int len) {
+        int oldPosition = buf.position();
+        buf.position(start);
+        int strlen = 2; // {}
+        boolean ellipsis = len < buf.limit();
+        if (ellipsis) {
+            strlen += 3; // ...
+        } else {
+            len = buf.limit();
+        }
+        strlen += 3 * len - (len > 0 ? 1 : 0); // XX,XX
+        char[] res = new char[strlen];
+        res[0] = '{';
+        res[strlen - 1] = '}';
+        if (ellipsis) {
+            res[strlen - 2] = res[strlen - 3] = res[strlen - 4] = '.';
+        }
+        for (int i = 1; i < len; i++) {
+            res[i * 3] = ',';
+        }
+        for (int i = 0; i < len; i++) {
+            byte b = buf.get();
+            int d = (b >> 4) & 15;
+            res[i * 3 + 1] = (char)(d + (d > 9 ? 'a' - 10 : '0'));
+            d = (b & 15);
+            res[i * 3 + 2] = (char)(d + (d > 9 ? 'a' - 10 : '0'));
+        }
+        buf.position(oldPosition);
+        return new String(res);
+    }
+
+    static <E> Iterable<E> chain(Iterable<E> ... iterables) {
+        /* simple chainer using ArrayList */
+        ArrayList<E> items = new ArrayList<E>();
+        for (Iterable<E> it: iterables) {
+            for (E el: it) {
+                items.add(el);
+            }
+        }
+        return items;
+    }
+
+    class Decoder {
+        private final static String TAG = "AdaptiveDecoder";
+        final long kTimeOutUs = 5000;
+        MediaCodec mCodec;
+        ByteBuffer[] mInputBuffers;
+        ByteBuffer[] mOutputBuffers;
+        TestSurface mSurface;
+        boolean mDoChecksum;
+        boolean mQueuedEos;
+        ArrayList<Long> mTimeStamps;
+        ArrayList<String> mWarnings;
+
+        public Decoder(String codecName) {
+            MediaCodec codec = null;
+            try {
+                codec = MediaCodec.createByCodecName(codecName);
+            } catch (Exception e) {
+                throw new RuntimeException("couldn't create codec " + codecName, e);
+            }
+            Log.i(TAG, "using codec: " + codec.getName());
+            mCodec = codec;
+            mDoChecksum = false;
+            mQueuedEos = false;
+            mTimeStamps = new ArrayList<Long>();
+            mWarnings = new ArrayList<String>();
+        }
+
+        public String getName() {
+            return mCodec.getName();
+        }
+
+        public Iterable<String> getWarnings() {
+            return mWarnings;
+        }
+
+        private void warn(String warning) {
+            mWarnings.add(warning);
+            Log.w(TAG, warning);
+        }
+
+        public void clearWarnings() {
+            mWarnings.clear();
+        }
+
+        public boolean configureAndStart(MediaFormat format, TestSurface surface) {
+            mSurface = surface;
+            Log.i(TAG, "configure(" + format + ", " + mSurface.getSurface() + ")");
+            try{
+			mCodec.configure(format, mSurface.getSurface(), null /* crypto */, 0 /* flags */);
+			}
+			catch (Exception e){
+				Log.i(TAG, "Unsupported Codec");
+				return false;
+			}
+            Log.i(TAG, "start");
+            mCodec.start();
+            mInputBuffers = mCodec.getInputBuffers();
+            mOutputBuffers = mCodec.getOutputBuffers();
+            Log.i(TAG, "configured " + mInputBuffers.length + " input[" +
+                  mInputBuffers[0].capacity() + "] and " +
+                  mOutputBuffers.length + "output[" +
+                  (mOutputBuffers[0] == null ? null : mOutputBuffers[0].capacity()) + "]");
+            mQueuedEos = false;
+            return true;
+        }
+
+        public void stop() {
+            Log.i(TAG, "stop");
+            mCodec.stop();
+        }
+
+        public void flush() {
+            Log.i(TAG, "flush");
+            mCodec.flush();
+            mQueuedEos = false;
+            mTimeStamps.clear();
+        }
+
+        public String dequeueAndReleaseOutputBuffer(MediaCodec.BufferInfo info) {
+            int ix = mCodec.dequeueOutputBuffer(info, kTimeOutUs);
+            if (ix == MediaCodec.INFO_OUTPUT_BUFFERS_CHANGED) {
+                mOutputBuffers = mCodec.getOutputBuffers();
+                Log.d(TAG, "output buffers have changed.");
+                return null;
+            } else if (ix == MediaCodec.INFO_OUTPUT_FORMAT_CHANGED) {
+                MediaFormat format = mCodec.getOutputFormat();
+                Log.d(TAG, "output format has changed to " + format);
+                int colorFormat = format.getInteger(MediaFormat.KEY_COLOR_FORMAT);
+                mDoChecksum = isRecognizedFormat(colorFormat);
+                return null;
+            } else if (ix < 0) {
+                Log.v(TAG, "no output");
+                return null;
+            }
+            /* create checksum */
+            long sum = 0;
+
+
+            Log.v(TAG, "dequeue #" + ix + " => { [" + info.size + "] flags=" + info.flags +
+                    " @" + info.presentationTimeUs + "}");
+
+            // we get a nonzero size for valid decoded frames
+            boolean doRender = (info.size != 0);
+            if (mSurface.getSurface() == null) {
+                if (mDoChecksum) {
+                    sum = checksum(mOutputBuffers[ix], info.size, mCRC);
+                }
+                mCodec.releaseOutputBuffer(ix, doRender);
+            } else if (doRender) {
+                // If using SurfaceTexture, as soon as we call releaseOutputBuffer, the
+                // buffer will be forwarded to SurfaceTexture to convert to a texture.
+                // The API doesn't guarantee that the texture will be available before
+                // the call returns, so we need to wait for the onFrameAvailable callback
+                // to fire.  If we don't wait, we risk dropping frames.
+                mSurface.prepare();
+                mCodec.releaseOutputBuffer(ix, doRender);
+                mSurface.waitForDraw();
+                if (mDoChecksum) {
+                    sum = mSurface.checksum();
+                }
+            } else {
+                mCodec.releaseOutputBuffer(ix, doRender);
+            }
+
+            if (doRender) {
+                if (!mTimeStamps.remove(info.presentationTimeUs)) {
+                    warn("invalid timestamp " + info.presentationTimeUs + ", queued " +
+                            collectionString(mTimeStamps));
+                }
+            }
+
+            return String.format(Locale.US, "{pts=%d, flags=%x, data=0x%x}",
+                                 info.presentationTimeUs, info.flags, sum);
+        }
+
+        /* returns true iff queued a frame */
+        public boolean queueInputBuffer(Media media, int frameIx, boolean EOS) {
+            return queueInputBuffer(media, frameIx, EOS, 0);
+        }
+
+        public boolean queueInputBuffer(Media media, int frameIx, boolean EOS, long adjustTimeUs) {
+            if (mQueuedEos) {
+                return false;
+            }
+
+            int ix = mCodec.dequeueInputBuffer(kTimeOutUs);
+
+            if (ix < 0) {
+                return false;
+            }
+
+            ByteBuffer buf = mInputBuffers[ix];
+            Media.Frame frame = media.getFrame(frameIx);
+            buf.clear();
+
+            long presentationTimeUs = adjustTimeUs;
+            int flags = 0;
+            if (frame != null) {
+                buf.put((ByteBuffer)frame.buf.clear());
+                presentationTimeUs += frame.presentationTimeUs;
+                flags = frame.flags;
+            }
+
+            if (EOS) {
+                flags |= MediaCodec.BUFFER_FLAG_END_OF_STREAM;
+                mQueuedEos = true;
+            }
+
+            mTimeStamps.add(presentationTimeUs);
+            Log.v(TAG, "queue { [" + buf.position() + "]=" + byteBufferToString(buf, 0, 16) +
+                    " flags=" + flags + " @" + presentationTimeUs + "} => #" + ix);
+            mCodec.queueInputBuffer(
+                    ix, 0 /* offset */, buf.position(), presentationTimeUs, flags);
+            return true;
+        }
+
+        /* returns number of frames received multiplied by -1 if received EOS, 1 otherwise */
+        public int queueInputBufferRange(
+                Media media, int frameStartIx, int frameEndIx, boolean sendEosAtEnd,
+                boolean waitForEos) {
+            return queueInputBufferRange(media,frameStartIx,frameEndIx,sendEosAtEnd,waitForEos,0);
+        }
+
+        public int queueInputBufferRange(
+                Media media, int frameStartIx, int frameEndIx, boolean sendEosAtEnd,
+                boolean waitForEos, long adjustTimeUs) {
+            MediaCodec.BufferInfo info = new MediaCodec.BufferInfo();
+            int frameIx = frameStartIx;
+            int numFramesDecoded = 0;
+            boolean sawOutputEos = false;
+            int deadDecoderCounter = 0;
+            ArrayList<String> frames = new ArrayList<String>();
+            while ((waitForEos && !sawOutputEos) || frameIx < frameEndIx) {
+                if (frameIx < frameEndIx) {
+                    if (queueInputBuffer(
+                            media,
+                            frameIx,
+                            sendEosAtEnd && (frameIx + 1 == frameEndIx),
+                            adjustTimeUs)) {
+                        frameIx++;
+                    }
+                }
+
+                String buf = dequeueAndReleaseOutputBuffer(info);
+                if (buf != null) {
+                    // Some decoders output a 0-sized buffer at the end. Disregard those.
+                    if (info.size > 0) {
+                        deadDecoderCounter = 0;
+                        numFramesDecoded++;
+                    }
+
+                    if ((info.flags & MediaCodec.BUFFER_FLAG_END_OF_STREAM) != 0) {
+                        Log.d(TAG, "saw output EOS.");
+                        sawOutputEos = true;
+                    }
+                }
+                if (++deadDecoderCounter >= 100) {
+                    warn("have not received an output frame for a while");
+                    break;
+                }
+            }
+
+            if (numFramesDecoded < frameEndIx - frameStartIx - 16) {
+                fail("Queued " + (frameEndIx - frameStartIx) + " frames but only received " +
+                        numFramesDecoded);
+            }
+            return (sawOutputEos ? -1 : 1) * numFramesDecoded;
+        }
+
+        void release() {
+            Log.i(TAG, "release");
+            mCodec.release();
+            mSurface.release();
+            mInputBuffers = null;
+            mOutputBuffers = null;
+            mCodec = null;
+            mSurface = null;
+        }
+
+        // don't fail on exceptions in release()
+        void releaseQuietly() {
+            try {
+                Log.i(TAG, "release");
+                mCodec.release();
+            } catch (Throwable e) {
+                Log.e(TAG, "Exception while releasing codec", e);
+            }
+            mSurface.release();
+            mInputBuffers = null;
+            mOutputBuffers = null;
+            mCodec = null;
+            mSurface = null;
+        }
+    };
+
+    /* from EncodeDecodeTest */
+    private static boolean isRecognizedFormat(int colorFormat) {
+        switch (colorFormat) {
+            // these are the formats we know how to handle for this test
+            case MediaCodecInfo.CodecCapabilities.COLOR_FormatYUV420Planar:
+            case MediaCodecInfo.CodecCapabilities.COLOR_FormatYUV420PackedPlanar:
+            case MediaCodecInfo.CodecCapabilities.COLOR_FormatYUV420SemiPlanar:
+            case MediaCodecInfo.CodecCapabilities.COLOR_FormatYUV420PackedSemiPlanar:
+            case MediaCodecInfo.CodecCapabilities.COLOR_TI_FormatYUV420PackedSemiPlanar:
+                return true;
+            default:
+                return false;
+        }
+    }
+
+    private int countFrames(
+            String codecName, MediaCodecInfo codecInfo, Media media, int eosframe, TestSurface s)
+            throws Exception {
+        Decoder codec = new Decoder(codecName);
+        codec.configureAndStart(media.getFormat(), s /* surface */);
+
+        int numframes = codec.queueInputBufferRange(
+                media, 0, eosframe, true /* sendEos */, true /* waitForEos */);
+        if (numframes >= 0) {
+            Log.w(TAG, "Did not receive EOS");
+        } else {
+            numframes *= -1;
+        }
+
+        codec.stop();
+        codec.release();
+        return numframes;
+    }
+}
+
+/* ====================================================================== */
+/*                             Video Media Asset                          */
+/* ====================================================================== */
+class Media {
+    private final static String TAG = "AdaptiveMedia";
+    private MediaFormat mFormat;
+    private MediaFormat mAdaptiveFormat;
+    static class Frame {
+        long presentationTimeUs;
+        int flags;
+        ByteBuffer buf;
+        public Frame(long _pts, int _flags, ByteBuffer _buf) {
+            presentationTimeUs = _pts;
+            flags = _flags;
+            buf = _buf;
+        }
+    };
+    private Frame[] mFrames;
+
+    public Frame getFrame(int ix) {
+        /* this works even on short sample as frame is allocated as null */
+        if (ix >= 0 && ix < mFrames.length) {
+            return mFrames[ix];
+        }
+        return null;
+    }
+    private Media(MediaFormat format, MediaFormat adaptiveFormat, int numFrames) {
+        /* need separate copies of format as once we add adaptive flags to
+           MediaFormat, we cannot remove them */
+        mFormat = format;
+        mAdaptiveFormat = adaptiveFormat;
+        mFrames = new Frame[numFrames];
+    }
+
+    public MediaFormat getFormat() {
+        return mFormat;
+    }
+
+    public MediaFormat getAdaptiveFormat(int width, int height) {
+        mAdaptiveFormat.setInteger(MediaFormat.KEY_MAX_WIDTH, width);
+        mAdaptiveFormat.setInteger(MediaFormat.KEY_MAX_HEIGHT, height);
+        return mAdaptiveFormat;
+    }
+
+    public String getMime() {
+        return mFormat.getString(MediaFormat.KEY_MIME);
+    }
+
+    public int getWidth() {
+        return mFormat.getInteger(MediaFormat.KEY_WIDTH);
+    }
+
+    public int getHeight() {
+        return mFormat.getInteger(MediaFormat.KEY_HEIGHT);
+    }
+
+    public final static int RANGE_START = 0;
+    public final static int RANGE_END = 1;
+    public final static int RANGE_DURATION = 2;
+
+    public long getTimestampRangeValue(int frameStartIx, int frameEndIx, int kind) {
+        long min = Long.MAX_VALUE, max = Long.MIN_VALUE;
+        for (int frameIx = frameStartIx; frameIx < frameEndIx; frameIx++) {
+            Frame frame = getFrame(frameIx);
+            if (frame != null) {
+                if (min > frame.presentationTimeUs) {
+                    min = frame.presentationTimeUs;
+                }
+                if (max < frame.presentationTimeUs) {
+                    max = frame.presentationTimeUs;
+                }
+            }
+        }
+        if (kind == RANGE_START) {
+            return min;
+        } else if (kind == RANGE_END) {
+            return max;
+        } else if (kind == RANGE_DURATION) {
+            return max - min;
+        } else {
+            throw new IllegalArgumentException("kind is not valid: " + kind);
+        }
+    }
+
+    public static Media read(Context context, int video, int numFrames)
+            throws java.io.IOException {
+        MediaExtractor extractor = new MediaExtractor();
+        AssetFileDescriptor testFd = context.getResources().openRawResourceFd(video);
+        extractor.setDataSource(testFd.getFileDescriptor(), testFd.getStartOffset(),
+                testFd.getLength());
+
+        Media media = new Media(
+                extractor.getTrackFormat(0), extractor.getTrackFormat(0), numFrames);
+        extractor.selectTrack(0);
+
+        Log.i(TAG, "format=" + media.getFormat());
+        ArrayList<ByteBuffer> csds = new ArrayList<ByteBuffer>();
+        for (String tag: new String[] { "csd-0", "csd-1" }) {
+            if (media.getFormat().containsKey(tag)) {
+                ByteBuffer csd = media.getFormat().getByteBuffer(tag);
+                Log.i(TAG, tag + "=" + AdaptivePlaybackTest.byteBufferToString(csd, 0, 16));
+                csds.add(csd);
+            }
+        }
+
+        ByteBuffer readBuf = ByteBuffer.allocate(200000);
+        for (int ix = 0; ix < numFrames; ix++) {
+            int sampleSize = extractor.readSampleData(readBuf, 0 /* offset */);
+
+            if (sampleSize < 0) {
+                throw new IllegalArgumentException("media is too short at " + ix + " frames");
+            } else {
+                readBuf.position(0).limit(sampleSize);
+                for (ByteBuffer csd: csds) {
+                    sampleSize += csd.capacity();
+                }
+                ByteBuffer buf = ByteBuffer.allocate(sampleSize);
+                for (ByteBuffer csd: csds) {
+                    csd.clear();
+                    buf.put(csd);
+                    csd.clear();
+                    Log.i(TAG, "csd[" + csd.capacity() + "]");
+                }
+                Log.i(TAG, "frame-" + ix + "[" + sampleSize + "]");
+                csds.clear();
+                buf.put(readBuf);
+                media.mFrames[ix] = new Frame(
+                    extractor.getSampleTime(),
+                    extractor.getSampleFlags(),
+                    buf);
+                extractor.advance();
+            }
+        }
+        extractor.release();
+        testFd.close();
+        return media;
+    }
+}
+
+/* ====================================================================== */
+/*                      Codec, CodecList and CodecFactory                 */
+/* ====================================================================== */
+class Codec {
+    private final static String TAG = "AdaptiveCodec";
+
+    public String name;
+    public CodecCapabilities capabilities;
+    public Media[] mediaList;
+    public boolean adaptive;
+    public Codec(String n, CodecCapabilities c, Media[] m) {
+        name = n;
+        capabilities = c;
+        mediaList = m;
+
+        if (capabilities == null) {
+            adaptive = false;
+        } else {
+            Log.w(TAG, "checking capabilities of " + name + " for " + mediaList[0].getMime());
+            adaptive = capabilities.isFeatureSupported(CodecCapabilities.FEATURE_AdaptivePlayback);
+        }
+    }
+}
+
+class CodecList extends ArrayList<Codec> { };
+
+/* all codecs of mime, plus named codec if exists */
+class CodecFamily extends CodecList {
+    private final static String TAG = "AdaptiveCodecFamily";
+    private static final int NUM_FRAMES = AdaptivePlaybackTest.NUM_FRAMES;
+
+    public CodecFamily(Context context, String mime, String explicitCodecName, int ... resources) {
+        try {
+            /* read all media */
+            Media[] mediaList = new Media[resources.length];
+            for (int i = 0; i < resources.length; i++) {
+                Log.v(TAG, "reading media " + resources[i]);
+                Media media = Media.read(context, resources[i], NUM_FRAMES);
+                assert media.getMime().equals(mime):
+                        "test stream " + resources[i] + " has " + media.getMime() +
+                        " mime type instead of " + mime;
+
+                /* assuming the first timestamp is the smallest */
+                long firstPTS = media.getFrame(0).presentationTimeUs;
+                long smallestPTS = media.getTimestampRangeValue(0, NUM_FRAMES, Media.RANGE_START);
+
+                assert firstPTS == smallestPTS:
+                        "first frame timestamp (" + firstPTS + ") is not smallest (" +
+                        smallestPTS + ")";
+
+                mediaList[i] = media;
+            }
+
+            /* enumerate codecs */
+            int codecCount = MediaCodecList.getCodecCount();
+            for (int codecIx = 0; codecIx < codecCount; codecIx++) {
+                MediaCodecInfo codecInfo = MediaCodecList.getCodecInfoAt(codecIx);
+                if (codecInfo.isEncoder()) {
+                    continue;
+                }
+                for (String type : codecInfo.getSupportedTypes()) {
+                    if (type.equals(mime)) {
+                        /* mark the explicitly named codec as included */
+                        if (codecInfo.getName().equals(explicitCodecName)) {
+                            explicitCodecName = null;
+                        }
+                        add(new Codec(
+                                codecInfo.getName(),
+                                codecInfo.getCapabilitiesForType(mime),
+                                mediaList));
+                        break;
+                    }
+                }
+            }
+
+            /* test if the explicitly named codec is present on the system */
+            if (explicitCodecName != null) {
+                MediaCodec codec = MediaCodec.createByCodecName(explicitCodecName);
+                if (codec != null) {
+                    codec.release();
+                    add(new Codec(explicitCodecName, null, mediaList));
+                }
+            }
+        } catch (Throwable t) {
+            Log.wtf("Constructor failed", t);
+            throw new RuntimeException("constructor failed", t);
+        }
+    }
+}
+
+/* named codec if exists */
+class CodecByName extends CodecList {
+    public CodecByName(Context context, String mime, String codecName, int ... resources) {
+        for (Codec c: new CodecFamily(context, mime, codecName, resources)) {
+            if (c.name.equals(codecName)) {
+                add(c);
+            }
+        }
+    }
+}
+
+/* all codecs of mime, except named codec if exists */
+class CodecFamilyExcept extends CodecList {
+    public CodecFamilyExcept(
+            Context context, String mime, String exceptCodecName, int ... resources) {
+        for (Codec c: new CodecFamily(context, mime, null, resources)) {
+            if (!c.name.equals(exceptCodecName)) {
+                add(c);
+            }
+        }
+    }
+}
+
+class CodecFactory {
+    public CodecList createCodecList(
+            Context context, String mime, String googleCodecName, int ...resources) {
+        return new CodecFamily(context, mime, googleCodecName, resources);
+    }
+}
+
+class SWCodecFactory extends CodecFactory {
+    public CodecList createCodecList(
+            Context context, String mime, String googleCodecName, int ...resources) {
+        return new CodecByName(context, mime, googleCodecName, resources);
+    }
+}
+
+class HWCodecFactory extends CodecFactory {
+    public CodecList createCodecList(
+            Context context, String mime, String googleCodecName, int ...resources) {
+        return new CodecFamilyExcept(context, mime, googleCodecName, resources);
+    }
+}
+
+/* ====================================================================== */
+/*                  Test Steps, Test (Case)s, and Test List               */
+/* ====================================================================== */
+class StepRunner implements Runnable {
+    public StepRunner(Step s) {
+        mStep = s;
+        mThrowed = null;
+    }
+    public void run() {
+        try {
+            mStep.run();
+        } catch (Throwable e) {
+            mThrowed = e;
+        }
+    }
+    public void throwThrowed() throws Throwable {
+        if (mThrowed != null) {
+            throw mThrowed;
+        }
+    }
+    private Throwable mThrowed;
+    private Step mStep;
+}
+
+class TestList extends ArrayList<Step> {
+    private final static String TAG = "AdaptiveTestList";
+    public void run() throws Throwable {
+        Throwable res = null;
+        for (Step step: this) {
+            try {
+                Log.i(TAG, step.getDescription());
+                if (step.stepSurface().needsToRunInSeparateThread()) {
+                    StepRunner runner = new StepRunner(step);
+                    Thread th = new Thread(runner, "stepWrapper");
+                    th.start();
+                    th.join();
+                    runner.throwThrowed();
+                } else {
+                    step.run();
+                }
+            } catch (Throwable e) {
+                Log.e(TAG, "while " + step.getDescription(), e);
+                res = e;
+                mFailedSteps++;
+            } finally {
+                mWarnings += step.getWarnings();
+            }
+        }
+        if (res != null) {
+            throw new RuntimeException(
+                mFailedSteps + " failed steps, " + mWarnings + " warnings",
+                res);
+        }
+    }
+    public int getWarnings() {
+        return mWarnings;
+    }
+    public int getFailures() {
+        return mFailedSteps;
+    }
+    private int mFailedSteps;
+    private int mWarnings;
+}
+
+abstract class Test {
+    public static final int FORMAT_ADAPTIVE_LARGEST = 1;
+    public static final int FORMAT_ADAPTIVE_FIRST = 2;
+    public static final int FORMAT_REGULAR = 3;
+
+    protected int mFormatType;
+    protected boolean mUseSurface;
+    protected boolean mUseSurfaceTexture;
+
+    public Test() {
+        mFormatType = FORMAT_REGULAR;
+        mUseSurface = true;
+        mUseSurfaceTexture = false;
+    }
+
+    public Test adaptive() {
+        mFormatType = FORMAT_ADAPTIVE_LARGEST;
+        return this;
+    }
+
+    public Test adaptiveSmall() {
+        mFormatType = FORMAT_ADAPTIVE_FIRST;
+        return this;
+    }
+
+    public Test byteBuffer() {
+        mUseSurface = false;
+        mUseSurfaceTexture = false;
+        return this;
+    }
+
+    public Test texture() {
+        mUseSurface = false;
+        mUseSurfaceTexture = true;
+        return this;
+    }
+
+    public void checkAdaptiveFormat() {
+        assert mFormatType != FORMAT_REGULAR:
+                "must be used with adaptive format";
+    }
+
+    abstract protected TestSurface getSurface();
+
+    /* TRICKY: format is updated in each test run as we are actually reusing the
+       same 2 MediaFormat objects returned from MediaExtractor.  Therefore,
+       format must be explicitly obtained in each test step.
+
+       returns null if codec does not support the format.
+       */
+    protected MediaFormat getFormat(Codec c) {
+        return getFormat(c, 0);
+    }
+
+    protected MediaFormat getFormat(Codec c, int i) {
+        MediaFormat format = null;
+        if (mFormatType == FORMAT_REGULAR) {
+            format = c.mediaList[i].getFormat();
+        } else if (mFormatType == FORMAT_ADAPTIVE_FIRST && c.adaptive) {
+            format = c.mediaList[i].getAdaptiveFormat(
+                c.mediaList[i].getWidth(), c.mediaList[i].getHeight());
+        } else if (mFormatType == FORMAT_ADAPTIVE_LARGEST && c.adaptive) {
+            /* update adaptive format to max size used */
+            format = c.mediaList[i].getAdaptiveFormat(0, 0);
+            for (Media media : c.mediaList) {
+                /* get the largest width, and the largest height independently */
+                if (media.getWidth() > format.getInteger(MediaFormat.KEY_MAX_WIDTH)) {
+                    format.setInteger(MediaFormat.KEY_MAX_WIDTH, media.getWidth());
+                }
+                if (media.getHeight() > format.getInteger(MediaFormat.KEY_MAX_HEIGHT)) {
+                    format.setInteger(MediaFormat.KEY_MAX_HEIGHT, media.getHeight());
+                }
+            }
+        }
+        return format;
+    }
+
+    public boolean isValid(Codec c) { return true; }
+    public abstract void addTests(TestList tests, Codec c);
+}
+
+abstract class Step {
+    private static final String TAG = "AdaptiveStep";
+
+    public Step(String title, Test instance, Codec codec, Media media) {
+        mTest = instance;
+        mCodec = codec;
+        mMedia = media;
+        mDescription = title + " on " + stepSurface().getSurface() + " using " +
+            mCodec.name + " and " + stepFormat();
+    }
+    public Step(String title, Test instance, Codec codec, int mediaIx) {
+        this(title, instance, codec, codec.mediaList[mediaIx]);
+    }
+    public Step(String title, Test instance, Codec codec) {
+        this(title, instance, codec, 0);
+    }
+    public Step(String description) {
+        mDescription = description;
+    }
+    public Step() { }
+
+    public abstract void run() throws Throwable;
+
+    private String mDescription;
+    private Test mTest;
+    private Codec mCodec;
+    private Media mMedia;
+    private int mWarnings;
+
+    /* TRICKY: use non-standard getter names so that we don't conflict with the getters
+       in the Test classes, as most test Steps are defined as anonymous classes inside
+       the test classes. */
+    public MediaFormat stepFormat() {
+        int ix = Arrays.asList(mCodec.mediaList).indexOf(mMedia);
+        return mTest.getFormat(mCodec, ix);
+    }
+
+    public TestSurface stepSurface() {
+        return mTest.getSurface();
+    }
+
+    public Media  stepMedia()       { return mMedia; }
+
+    public String getDescription() { return mDescription; }
+    public int    getWarnings()    { return mWarnings; }
+
+    public void warn(String message) {
+        Log.e(TAG, "WARNING: " + message + " in " + getDescription());
+        mWarnings++;
+    }
+    public void warn(String message, Throwable t) {
+        Log.e(TAG, "WARNING: " + message + " in " + getDescription(), t);
+        mWarnings++;
+    }
+    public void warn(Iterable<String> warnings) {
+        for (String warning: warnings) {
+            warn(warning);
+        }
+    }
+}
+
+interface TestSurface {
+    public Surface getSurface();
+    public long checksum();
+    public void release();
+    public void prepare();         // prepare surface prior to render
+    public void waitForDraw();     // wait for rendering to take place
+    public boolean needsToRunInSeparateThread();
+}
+
+class DecoderSurface extends OutputSurface implements TestSurface {
+    private ByteBuffer mBuf;
+    int mWidth;
+    int mHeight;
+    CRC32 mCRC;
+
+    public DecoderSurface(int width, int height, CRC32 crc) {
+        super(width, height);
+        mWidth = width;
+        mHeight = height;
+        mCRC = crc;
+        mBuf = ByteBuffer.allocateDirect(4 * width * height);
+    }
+
+    public void prepare() {
+        makeCurrent();
+    }
+
+    public void waitForDraw() {
+        awaitNewImage();
+        drawImage();
+    }
+
+    public long checksum() {
+        mBuf.position(0);
+        GLES20.glReadPixels(0, 0, mWidth, mHeight, GL10.GL_RGBA, GL10.GL_UNSIGNED_BYTE, mBuf);
+        mBuf.position(0);
+        return AdaptivePlaybackTest.checksum(mBuf, mBuf.capacity(), mCRC);
+    }
+
+    public void release() {
+        super.release();
+        mBuf = null;
+    }
+
+    public boolean needsToRunInSeparateThread() {
+        return true;
+    }
+}
+
+class ActivitySurface implements TestSurface {
+    private Surface mSurface;
+    public ActivitySurface(Surface s) {
+        mSurface = s;
+    }
+    public Surface getSurface() {
+        return mSurface;
+    }
+    public void prepare() { }
+    public void waitForDraw() { }
+    public long checksum() {
+        return 0;
+    }
+    public void release() {
+        // don't release activity surface, as it is reusable
+    }
+    public boolean needsToRunInSeparateThread() {
+        return false;
+    }
+}
+
diff --git a/tests/tests/media/src/android/media/cts/AudioRecordTest.java b/tests/tests/media/src/android/media/cts/AudioRecordTest.java
index 877cb80..7ff631f 100644
--- a/tests/tests/media/src/android/media/cts/AudioRecordTest.java
+++ b/tests/tests/media/src/android/media/cts/AudioRecordTest.java
@@ -99,7 +99,7 @@
         assertEquals(AudioFormat.ENCODING_PCM_16BIT, mAudioRecord.getAudioFormat());
         assertEquals(MediaRecorder.AudioSource.DEFAULT, mAudioRecord.getAudioSource());
         assertEquals(1, mAudioRecord.getChannelCount());
-        assertEquals(AudioFormat.CHANNEL_CONFIGURATION_MONO,
+        assertEquals(AudioFormat.CHANNEL_IN_MONO,
                 mAudioRecord.getChannelConfiguration());
         assertEquals(AudioRecord.STATE_INITIALIZED, mAudioRecord.getState());
         assertEquals(mHz, mAudioRecord.getSampleRate());
diff --git a/tests/tests/media/src/android/media/cts/AudioTrackTest.java b/tests/tests/media/src/android/media/cts/AudioTrackTest.java
index ac8379a..090cde8 100644
--- a/tests/tests/media/src/android/media/cts/AudioTrackTest.java
+++ b/tests/tests/media/src/android/media/cts/AudioTrackTest.java
@@ -18,6 +18,7 @@
 
 import android.media.AudioFormat;
 import android.media.AudioManager;
+import android.media.AudioTimestamp;
 import android.media.AudioTrack;
 import android.test.AndroidTestCase;
 import android.util.Log;
@@ -397,6 +398,51 @@
         track.release();
     }
 
+    // Test case 5: getPlaybackHeadPosition() remains 0 after pause(); flush(); play();
+    public void testPlaybackHeadPositionAfterFlushAndPlay() throws Exception {
+        // constants for test
+        final String TEST_NAME = "testPlaybackHeadPositionAfterFlushAndPlay";
+        final int TEST_CONF = AudioFormat.CHANNEL_OUT_STEREO;
+        final int TEST_FORMAT = AudioFormat.ENCODING_PCM_16BIT;
+        final int TEST_MODE = AudioTrack.MODE_STREAM;
+        final int TEST_STREAM_TYPE = AudioManager.STREAM_MUSIC;
+        final int TEST_SR = AudioTrack.getNativeOutputSampleRate(TEST_STREAM_TYPE);
+
+        // -------- initialization --------------
+        int minBuffSize = AudioTrack.getMinBufferSize(TEST_SR, TEST_CONF, TEST_FORMAT);
+        AudioTrack track = new AudioTrack(TEST_STREAM_TYPE, TEST_SR, TEST_CONF, TEST_FORMAT,
+                2 * minBuffSize, TEST_MODE);
+        byte data[] = new byte[minBuffSize];
+        // -------- test --------------
+        assertTrue(TEST_NAME, track.getState() == AudioTrack.STATE_INITIALIZED);
+        track.write(data, OFFSET_DEFAULT, data.length);
+        track.write(data, OFFSET_DEFAULT, data.length);
+        track.play();
+        Thread.sleep(100);
+        track.pause();
+
+        int pos = track.getPlaybackHeadPosition();
+        log(TEST_NAME, "position after pause =" + pos);
+        assertTrue(TEST_NAME, pos > 0);
+
+        track.flush();
+        pos = track.getPlaybackHeadPosition();
+        log(TEST_NAME, "position after flush =" + pos);
+        assertTrue(TEST_NAME, pos == 0);
+
+        track.play();
+        pos = track.getPlaybackHeadPosition();
+        log(TEST_NAME, "position after play =" + pos);
+        assertTrue(TEST_NAME, pos == 0);
+
+        Thread.sleep(100);
+        pos = track.getPlaybackHeadPosition();
+        log(TEST_NAME, "position after 100 ms sleep =" + pos);
+        assertTrue(TEST_NAME, pos == 0);
+        // -------- tear down --------------
+        track.release();
+    }
+
     // -----------------------------------------------------------------
     // Playback properties
     // ----------------------------------
@@ -1319,6 +1365,76 @@
         track.release();
     }
 
+    public void testGetTimestamp() throws Exception {
+        // constants for test
+        final String TEST_NAME = "testGetTimestamp";
+        final int TEST_SR = 22050;
+        final int TEST_CONF = AudioFormat.CHANNEL_CONFIGURATION_MONO;
+        final int TEST_FORMAT = AudioFormat.ENCODING_PCM_16BIT;
+        final int TEST_MODE = AudioTrack.MODE_STREAM;
+        final int TEST_STREAM_TYPE = AudioManager.STREAM_MUSIC;
+        final int TEST_LOOP_CNT = 10;
+
+        final int MILLIS_PER_SEC = 1000;
+        final int NANOS_PER_MILLI = 1000000;
+
+        // -------- initialization --------------
+        final int BYTES_PER_FRAME = 2;
+        final int FRAMES_PER_100_MILLIS =
+                AudioTrack.getMinBufferSize(TEST_SR, TEST_CONF, TEST_FORMAT);
+        final int FRAMES_PER_SEC = FRAMES_PER_100_MILLIS * 10;
+        byte[] data = new byte[FRAMES_PER_100_MILLIS * BYTES_PER_FRAME];
+        AudioTrack track = new AudioTrack(TEST_STREAM_TYPE, TEST_SR, TEST_CONF, TEST_FORMAT,
+                 FRAMES_PER_SEC * BYTES_PER_FRAME, TEST_MODE);
+        // -------- test --------------
+        assertTrue(TEST_NAME, track.getState() == AudioTrack.STATE_INITIALIZED);
+
+        long framesWritten = 0, framesSeen = 0, framesPresented = 0;
+        long lastFramesPresented = 0, lastFrameTime = 0, lastOutputFrequency = FRAMES_PER_SEC;
+        AudioTimestamp timestamp = new AudioTimestamp();
+
+        for (int i = 0; i < TEST_LOOP_CNT; i++) {
+            for (int j = 0; j < FRAMES_PER_SEC; j += FRAMES_PER_100_MILLIS) {
+                track.write(data, 0, data.length);
+                framesWritten += FRAMES_PER_100_MILLIS;
+            }
+
+            track.play();
+            Thread.sleep(MILLIS_PER_SEC);
+            track.pause();
+
+            framesSeen = track.getPlaybackHeadPosition();
+            assertTrue(TEST_NAME, framesWritten >= framesSeen);
+
+            assertTrue(TEST_NAME, track.getTimestamp(timestamp));
+            framesPresented = timestamp.framePosition;
+            assertTrue(TEST_NAME, framesSeen >= framesPresented);
+
+            // check output frequency
+            long outFrequency = framesPresented - lastFramesPresented;
+            long freqDiff = Math.abs(FRAMES_PER_SEC - outFrequency);
+            assertTrue(TEST_NAME, freqDiff < FRAMES_PER_100_MILLIS);
+
+            // check output frequency jitter
+            freqDiff = Math.abs(outFrequency - lastOutputFrequency);
+            assertTrue(TEST_NAME, freqDiff < FRAMES_PER_100_MILLIS);
+
+            lastFramesPresented = framesPresented;
+            lastOutputFrequency = outFrequency;
+
+            long frameTime = timestamp.nanoTime;
+            assertTrue(TEST_NAME, frameTime >= lastFrameTime);
+            lastFrameTime = frameTime;
+
+            long curTime = System.nanoTime();
+            assertTrue(TEST_NAME, curTime >= frameTime);
+            assertTrue(TEST_NAME, curTime - frameTime < 100 * NANOS_PER_MILLI);
+        }
+        track.stop();
+        // -------- tear down --------------
+        track.release();
+    }
+
 /* Do not run in JB-MR1. will be re-opened in the next platform release.
     public void testResourceLeakage() throws Exception {
         final int BUFFER_SIZE = 600 * 1024;
diff --git a/tests/tests/media/src/android/media/cts/CompositionTextureView.java b/tests/tests/media/src/android/media/cts/CompositionTextureView.java
new file mode 100644
index 0000000..5d84a11
--- /dev/null
+++ b/tests/tests/media/src/android/media/cts/CompositionTextureView.java
@@ -0,0 +1,129 @@
+/*
+ * Copyright (C) 2014 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 android.media.cts;
+
+import java.util.concurrent.Semaphore;
+import java.util.concurrent.TimeUnit;
+
+import android.content.Context;
+import android.graphics.SurfaceTexture;
+import android.util.AttributeSet;
+import android.util.Log;
+import android.view.Surface;
+import android.view.TextureView;
+
+public class CompositionTextureView extends TextureView
+    implements TextureView.SurfaceTextureListener {
+    private static final String TAG = "CompositionTextureView";
+    private static final boolean DBG = true;
+    private static final boolean DBG_VERBOSE = false;
+
+    private final Semaphore mInitWaitSemaphore = new Semaphore(0);
+    private Surface mSurface;
+
+    public CompositionTextureView(Context context) {
+        super(context);
+        if (DBG) {
+            Log.i(TAG, "CompositionTextureView");
+        }
+    }
+
+    public CompositionTextureView(Context context, AttributeSet attrs) {
+        super(context, attrs);
+        if (DBG) {
+            Log.i(TAG, "CompositionTextureView");
+        }
+    }
+
+    public CompositionTextureView(Context context, AttributeSet attrs, int defStyle) {
+        super(context, attrs, defStyle);
+        if (DBG) {
+            Log.i(TAG, "CompositionTextureView");
+        }
+    }
+
+    public void startListening() {
+        if (DBG) {
+            Log.i(TAG, "startListening");
+        }
+        setSurfaceTextureListener(this);
+    }
+
+    @Override
+    public void onSurfaceTextureAvailable(SurfaceTexture arg0, int arg1, int arg2) {
+        if (DBG) {
+            Log.i(TAG, "onSurfaceTextureAvailable");
+        }
+        recreateSurface(arg0);
+        mInitWaitSemaphore.release();
+    }
+
+    @Override
+    public boolean onSurfaceTextureDestroyed(SurfaceTexture arg0) {
+        if (DBG) {
+            Log.i(TAG, "onSurfaceTextureDestroyed");
+        }
+        return true;
+    }
+
+    @Override
+    public void onSurfaceTextureSizeChanged(SurfaceTexture arg0, int arg1, int arg2) {
+        if (DBG) {
+            Log.i(TAG, "onSurfaceTextureSizeChanged");
+        }
+        recreateSurface(arg0);
+        mInitWaitSemaphore.release();
+    }
+
+    @Override
+    public void onSurfaceTextureUpdated(SurfaceTexture arg0) {
+        if (DBG_VERBOSE) {
+            Log.i(TAG, "onSurfaceTextureUpdated");
+        }
+        //ignore
+    }
+
+    public boolean waitForSurfaceReady(long timeoutMs) throws Exception {
+        if (isSurfaceTextureAvailable()) {
+            return true;
+        }
+        if (mInitWaitSemaphore.tryAcquire(timeoutMs, TimeUnit.MILLISECONDS)) {
+            return true;
+        }
+        return isSurfaceTextureAvailable();
+    }
+
+    private boolean isSurfaceTextureAvailable() {
+        SurfaceTexture surfaceTexture = getSurfaceTexture();
+        if (mSurface == null && surfaceTexture != null) {
+            recreateSurface(surfaceTexture);
+        }
+        return (mSurface != null);
+    }
+
+    private synchronized void recreateSurface(SurfaceTexture surfaceTexture) {
+        if (mSurface != null) {
+            mSurface.release();
+        }
+        mSurface = new Surface(surfaceTexture);
+    }
+
+    public Surface getSurface() {
+        return mSurface;
+    }
+
+}
diff --git a/tests/tests/media/src/android/media/cts/DecodeEditEncodeTest.java b/tests/tests/media/src/android/media/cts/DecodeEditEncodeTest.java
index be2dc54..0d83647 100644
--- a/tests/tests/media/src/android/media/cts/DecodeEditEncodeTest.java
+++ b/tests/tests/media/src/android/media/cts/DecodeEditEncodeTest.java
@@ -31,8 +31,6 @@
 import java.nio.ByteBuffer;
 import java.util.ArrayList;
 
-import javax.microedition.khronos.opengles.GL10;
-
 
 /**
  * This test has three steps:
@@ -53,7 +51,6 @@
     private static final boolean WORK_AROUND_BUGS = false;  // avoid fatal codec bugs
     private static final boolean VERBOSE = false;           // lots of logging
     private static final boolean DEBUG_SAVE_FILE = false;   // save copy of encoded movie
-    private static final String DEBUG_FILE_NAME_BASE = "/sdcard/test.";
 
     // parameters for the encoder
     private static final String MIME_TYPE = "video/avc";    // H.264 Advanced Video Coding
@@ -91,7 +88,7 @@
 
 
     public void testVideoEditQCIF() throws Throwable {
-        setParameters(176, 144, 1000000);
+        setParameters(176, 144, 1100000);
         VideoEditWrapper.runTest(this);
     }
     public void testVideoEditQVGA() throws Throwable {
@@ -766,7 +763,7 @@
                 y = mHeight / 4;
             }
 
-            GLES20.glReadPixels(x, y, 1, 1, GL10.GL_RGBA, GL10.GL_UNSIGNED_BYTE, pixelBuf);
+            GLES20.glReadPixels(x, y, 1, 1, GLES20.GL_RGBA, GLES20.GL_UNSIGNED_BYTE, pixelBuf);
             int r = pixelBuf.get(0) & 0xff;
             int g = pixelBuf.get(1) & 0xff;
             int b = pixelBuf.get(2) & 0xff;
diff --git a/tests/tests/media/src/android/media/cts/DecoderTest.java b/tests/tests/media/src/android/media/cts/DecoderTest.java
index 9fe0866..f250c3d 100644
--- a/tests/tests/media/src/android/media/cts/DecoderTest.java
+++ b/tests/tests/media/src/android/media/cts/DecoderTest.java
@@ -21,6 +21,7 @@
 import android.content.res.AssetFileDescriptor;
 import android.content.res.Resources;
 import android.media.MediaCodec;
+import android.media.MediaCodecInfo;
 import android.media.MediaExtractor;
 import android.media.MediaFormat;
 import android.util.Log;
@@ -37,6 +38,10 @@
 public class DecoderTest extends MediaPlayerTestBase {
     private static final String TAG = "DecoderTest";
 
+    private static final int RESET_MODE_NONE = 0;
+    private static final int RESET_MODE_RECONFIGURE = 1;
+    private static final int RESET_MODE_FLUSH = 2;
+
     private Resources mResources;
     short[] mMasterBuffer;
 
@@ -69,22 +74,22 @@
     // This should allow for some variation in decoders, while still detecting
     // phase and delay errors, channel swap, etc.
     public void testDecodeMp3Lame() throws Exception {
-        decode(R.raw.sinesweepmp3lame, 804.f, true);
+        decode(R.raw.sinesweepmp3lame, 804.f);
     }
     public void testDecodeMp3Smpb() throws Exception {
-        decode(R.raw.sinesweepmp3smpb, 413.f, true);
+        decode(R.raw.sinesweepmp3smpb, 413.f);
     }
     public void testDecodeM4a() throws Exception {
-        decode(R.raw.sinesweepm4a, 124.f, true);
+        decode(R.raw.sinesweepm4a, 124.f);
     }
     public void testDecodeOgg() throws Exception {
-        decode(R.raw.sinesweepogg, 168.f, false);
+        decode(R.raw.sinesweepogg, 168.f);
     }
     public void testDecodeWav() throws Exception {
-        decode(R.raw.sinesweepwav, 0.0f, true);
+        decode(R.raw.sinesweepwav, 0.0f);
     }
     public void testDecodeFlac() throws Exception {
-        decode(R.raw.sinesweepflac, 0.0f, true);
+        decode(R.raw.sinesweepflac, 0.0f);
     }
 
     public void testDecodeMonoMp3() throws Exception {
@@ -100,7 +105,7 @@
     }
 
     private void monoTest(int res) throws Exception {
-        short [] mono = decodeToMemory(res, false);
+        short [] mono = decodeToMemory(res, RESET_MODE_NONE);
         if (mono.length == 44100) {
             // expected
         } else if (mono.length == 88200) {
@@ -114,19 +119,23 @@
         }
 
         // we should get the same data when reconfiguring the codec
-        short [] mono2 = decodeToMemory(res, true);
+        short [] mono2 = decodeToMemory(res, RESET_MODE_RECONFIGURE);
         assertTrue(Arrays.equals(mono, mono2));
+
+        // NOTE: coming soon
+        // and when flushing it
+//        short [] mono3 = decodeToMemory(res, RESET_MODE_FLUSH);
+//        assertTrue(Arrays.equals(mono, mono3));
     }
 
     /**
      * @param testinput the file to decode
      * @param maxerror the maximum allowed root mean squared error
-     * @param testReconfigure whether to also test reconfiguring the codec
      * @throws IOException
      */
-    private void decode(int testinput, float maxerror, boolean reconfigure) throws IOException {
+    private void decode(int testinput, float maxerror) throws IOException {
 
-        short [] decoded = decodeToMemory(testinput, false);
+        short [] decoded = decodeToMemory(testinput, RESET_MODE_NONE);
 
         assertEquals("wrong data size", mMasterBuffer.length, decoded.length);
 
@@ -143,16 +152,21 @@
         double rmse = Math.sqrt(avgErrorSquared);
         assertTrue("decoding error too big: " + rmse, rmse <= maxerror);
 
-        if (reconfigure) {
-            short [] decoded2 = decodeToMemory(testinput, true);
-            assertEquals("count different with reconfigure", decoded.length, decoded2.length);
-            for (int i = 0; i < decoded.length; i++) {
-                assertEquals("samples don't match", decoded[i], decoded2[i]);
-            }
+        short [] decoded2 = decodeToMemory(testinput, RESET_MODE_RECONFIGURE);
+        assertEquals("count different with reconfigure", decoded.length, decoded2.length);
+        for (int i = 0; i < decoded.length; i++) {
+            assertEquals("samples don't match", decoded[i], decoded2[i]);
         }
+
+        // NOTE: coming soon
+//        short [] decoded3 = decodeToMemory(testinput, RESET_MODE_FLUSH);
+//        assertEquals("count different with flush", decoded.length, decoded3.length);
+//        for (int i = 0; i < decoded.length; i++) {
+//            assertEquals("samples don't match", decoded[i], decoded3[i]);
+//        }
     }
 
-    private short[] decodeToMemory(int testinput, boolean reconfigure) throws IOException {
+    private short[] decodeToMemory(int testinput, int resetMode) throws IOException {
 
         short [] decoded = new short[0];
         int decodedIdx = 0;
@@ -180,12 +194,14 @@
         codecInputBuffers = codec.getInputBuffers();
         codecOutputBuffers = codec.getOutputBuffers();
 
-        if (reconfigure) {
+        if (resetMode == RESET_MODE_RECONFIGURE) {
             codec.stop();
             codec.configure(format, null /* surface */, null /* crypto */, 0 /* flags */);
             codec.start();
             codecInputBuffers = codec.getInputBuffers();
             codecOutputBuffers = codec.getOutputBuffers();
+        } else if (resetMode == RESET_MODE_FLUSH) {
+            codec.flush();
         }
 
         extractor.selectTrack(0);
@@ -238,16 +254,21 @@
                 if (info.size > 0) {
                     noOutputCounter = 0;
                 }
-                if (info.size > 0 && reconfigure) {
-                    // once we've gotten some data out of the decoder, reconfigure it again
-                    reconfigure = false;
+                if (info.size > 0 && resetMode != RESET_MODE_NONE) {
+                    // once we've gotten some data out of the decoder, reset and start again
+                    if (resetMode == RESET_MODE_RECONFIGURE) {
+                        codec.stop();
+                        codec.configure(format, null /* surface */, null /* crypto */,
+                                0 /* flags */);
+                        codec.start();
+                        codecInputBuffers = codec.getInputBuffers();
+                        codecOutputBuffers = codec.getOutputBuffers();
+                    } else /* resetMode == RESET_MODE_FLUSH */ {
+                        codec.flush();
+                    }
+                    resetMode = RESET_MODE_NONE;
                     extractor.seekTo(0, MediaExtractor.SEEK_TO_NEXT_SYNC);
                     sawInputEOS = false;
-                    codec.stop();
-                    codec.configure(format, null /* surface */, null /* crypto */, 0 /* flags */);
-                    codec.start();
-                    codecInputBuffers = codec.getInputBuffers();
-                    codecOutputBuffers = codec.getOutputBuffers();
                     continue;
                 }
 
@@ -290,12 +311,12 @@
         Surface s = getActivity().getSurfaceHolder().getSurface();
         int frames1 = countFrames(
                 R.raw.video_480x360_mp4_h264_1000kbps_25fps_aac_stereo_128kbps_44100hz,
-                false, -1, s);
+                RESET_MODE_NONE, -1 /* eosframe */, s);
         assertEquals("wrong number of frames decoded", 240, frames1);
 
         int frames2 = countFrames(
                 R.raw.video_480x360_mp4_h264_1000kbps_25fps_aac_stereo_128kbps_44100hz,
-                false, -1, null);
+                RESET_MODE_NONE, -1 /* eosframe */, null);
         assertEquals("different number of frames when using Surface", frames1, frames2);
     }
 
@@ -303,12 +324,51 @@
         Surface s = getActivity().getSurfaceHolder().getSurface();
         int frames1 = countFrames(
                 R.raw.video_176x144_3gp_h263_300kbps_12fps_aac_stereo_128kbps_22050hz,
-                false /* reconfigure */, -1 /* eosframe */, s);
+                RESET_MODE_NONE, -1 /* eosframe */, s);
         assertEquals("wrong number of frames decoded", 122, frames1);
 
         int frames2 = countFrames(
                 R.raw.video_176x144_3gp_h263_300kbps_12fps_aac_stereo_128kbps_22050hz,
-                false /* reconfigure */, -1 /* eosframe */, null);
+                RESET_MODE_NONE, -1 /* eosframe */, null);
+        assertEquals("different number of frames when using Surface", frames1, frames2);
+    }
+
+    public void testCodecBasicMpeg4() throws Exception {
+        Surface s = getActivity().getSurfaceHolder().getSurface();
+        int frames1 = countFrames(
+                R.raw.video_480x360_mp4_mpeg4_860kbps_25fps_aac_stereo_128kbps_44100hz,
+                RESET_MODE_NONE, -1 /* eosframe */, s);
+        assertEquals("wrong number of frames decoded", 249, frames1);
+
+        int frames2 = countFrames(
+                R.raw.video_480x360_mp4_mpeg4_860kbps_25fps_aac_stereo_128kbps_44100hz,
+                RESET_MODE_NONE, -1 /* eosframe */, null);
+        assertEquals("different number of frames when using Surface", frames1, frames2);
+    }
+
+    public void testCodecBasicVP8() throws Exception {
+        Surface s = getActivity().getSurfaceHolder().getSurface();
+        int frames1 = countFrames(
+                R.raw.video_480x360_webm_vp8_333kbps_25fps_vorbis_stereo_128kbps_44100hz,
+                RESET_MODE_NONE, -1 /* eosframe */, s);
+        assertEquals("wrong number of frames decoded", 240, frames1);
+
+        int frames2 = countFrames(
+                R.raw.video_480x360_webm_vp8_333kbps_25fps_vorbis_stereo_128kbps_44100hz,
+                RESET_MODE_NONE, -1 /* eosframe */, null);
+        assertEquals("different number of frames when using Surface", frames1, frames2);
+    }
+
+    public void testCodecBasicVP9() throws Exception {
+        Surface s = getActivity().getSurfaceHolder().getSurface();
+        int frames1 = countFrames(
+                R.raw.video_480x360_webm_vp9_333kbps_25fps_vorbis_stereo_128kbps_44100hz,
+                RESET_MODE_NONE, -1 /* eosframe */, s);
+        assertEquals("wrong number of frames decoded", 240, frames1);
+
+        int frames2 = countFrames(
+                R.raw.video_480x360_webm_vp9_333kbps_25fps_vorbis_stereo_128kbps_44100hz,
+                RESET_MODE_NONE, -1 /* eosframe */, null);
         assertEquals("different number of frames when using Surface", frames1, frames2);
     }
 
@@ -316,7 +376,7 @@
         Surface s = getActivity().getSurfaceHolder().getSurface();
         int frames1 = countFrames(
                 R.raw.video_176x144_3gp_h263_300kbps_12fps_aac_stereo_128kbps_22050hz,
-                false, 64, s);
+                RESET_MODE_NONE, 64 /* eosframe */, s);
         assertEquals("wrong number of frames decoded", 64, frames1);
     }
 
@@ -324,51 +384,139 @@
         Surface s = getActivity().getSurfaceHolder().getSurface();
         int frames1 = countFrames(
                 R.raw.video_480x360_mp4_h264_1000kbps_25fps_aac_stereo_128kbps_44100hz,
-                false, 120, s);
+                RESET_MODE_NONE, 120 /* eosframe */, s);
         assertEquals("wrong number of frames decoded", 120, frames1);
     }
 
-    public void testCodecReconfigH264WithoutSurface() throws Exception {
-        testCodecReconfig(
+    public void testCodecEarlyEOSMpeg4() throws Exception {
+        Surface s = getActivity().getSurfaceHolder().getSurface();
+        int frames1 = countFrames(
+                R.raw.video_480x360_mp4_mpeg4_860kbps_25fps_aac_stereo_128kbps_44100hz,
+                RESET_MODE_NONE, 120 /* eosframe */, s);
+        assertEquals("wrong number of frames decoded", 120, frames1);
+    }
+
+    public void testCodecEarlyEOSVP8() throws Exception {
+        Surface s = getActivity().getSurfaceHolder().getSurface();
+        int frames1 = countFrames(
+                R.raw.video_480x360_webm_vp8_333kbps_25fps_vorbis_stereo_128kbps_44100hz,
+                RESET_MODE_NONE, 120 /* eosframe */, s);
+        assertEquals("wrong number of frames decoded", 120, frames1);
+    }
+
+    public void testCodecEarlyEOSVP9() throws Exception {
+        Surface s = getActivity().getSurfaceHolder().getSurface();
+        int frames1 = countFrames(
+                R.raw.video_480x360_webm_vp9_333kbps_25fps_vorbis_stereo_128kbps_44100hz,
+                RESET_MODE_NONE, 120 /* eosframe */, s);
+        assertEquals("wrong number of frames decoded", 120, frames1);
+    }
+
+    public void testCodecResetsH264WithoutSurface() throws Exception {
+        testCodecResets(
                 R.raw.video_480x360_mp4_h264_1000kbps_25fps_aac_stereo_128kbps_44100hz, null);
     }
 
-    public void testCodecReconfigH264WithSurface() throws Exception {
+    public void testCodecResetsH264WithSurface() throws Exception {
         Surface s = getActivity().getSurfaceHolder().getSurface();
-        testCodecReconfig(
+        testCodecResets(
                 R.raw.video_480x360_mp4_h264_1000kbps_25fps_aac_stereo_128kbps_44100hz, s);
     }
 
-    public void testCodecReconfigH263WithoutSurface() throws Exception {
-        testCodecReconfig(
+    public void testCodecResetsH263WithoutSurface() throws Exception {
+        testCodecResets(
                 R.raw.video_176x144_3gp_h263_300kbps_12fps_aac_stereo_128kbps_22050hz, null);
     }
 
-    public void testCodecReconfigH263WithSurface() throws Exception {
+    public void testCodecResetsH263WithSurface() throws Exception {
         Surface s = getActivity().getSurfaceHolder().getSurface();
-        testCodecReconfig(
+        testCodecResets(
                 R.raw.video_176x144_3gp_h263_300kbps_12fps_aac_stereo_128kbps_22050hz, s);
     }
 
-//    public void testCodecReconfigOgg() throws Exception {
-//        testCodecReconfig(R.raw.sinesweepogg, null);
-//    }
-//
-    public void testCodecReconfigMp3() throws Exception {
-        testCodecReconfig(R.raw.sinesweepmp3lame, null);
+    public void testCodecResetsMpeg4WithoutSurface() throws Exception {
+        testCodecResets(
+                R.raw.video_480x360_mp4_mpeg4_860kbps_25fps_aac_stereo_128kbps_44100hz, null);
     }
 
-    public void testCodecReconfigM4a() throws Exception {
+    public void testCodecResetsMpeg4WithSurface() throws Exception {
+        Surface s = getActivity().getSurfaceHolder().getSurface();
+        testCodecResets(
+                R.raw.video_480x360_mp4_mpeg4_860kbps_25fps_aac_stereo_128kbps_44100hz, s);
+    }
+
+    public void testCodecResetsVP8WithoutSurface() throws Exception {
+        testCodecResets(
+                R.raw.video_480x360_webm_vp8_333kbps_25fps_vorbis_stereo_128kbps_44100hz, null);
+    }
+
+    public void testCodecResetsVP8WithSurface() throws Exception {
+        Surface s = getActivity().getSurfaceHolder().getSurface();
+        testCodecResets(
+                R.raw.video_480x360_webm_vp8_333kbps_25fps_vorbis_stereo_128kbps_44100hz, s);
+    }
+
+    public void testCodecResetsVP9WithoutSurface() throws Exception {
+        testCodecResets(
+                R.raw.video_480x360_webm_vp9_333kbps_25fps_vorbis_stereo_128kbps_44100hz, null);
+    }
+
+    public void testCodecResetsVP9WithSurface() throws Exception {
+        Surface s = getActivity().getSurfaceHolder().getSurface();
+        testCodecResets(
+                R.raw.video_480x360_webm_vp9_333kbps_25fps_vorbis_stereo_128kbps_44100hz, s);
+    }
+
+//    public void testCodecResetsOgg() throws Exception {
+//        testCodecResets(R.raw.sinesweepogg, null);
+//    }
+
+    public void testCodecResetsMp3() throws Exception {
+        testCodecReconfig(R.raw.sinesweepmp3lame, null);
+        // NOTE: replacing testCodecReconfig call soon
+//        testCodecResets(R.raw.sinesweepmp3lame, null);
+    }
+
+    public void testCodecResetsM4a() throws Exception {
         testCodecReconfig(R.raw.sinesweepm4a, null);
+        // NOTE: replacing testCodecReconfig call soon
+//        testCodecResets(R.raw.sinesweepm4a, null);
     }
 
     private void testCodecReconfig(int video, Surface s) throws Exception {
-        int frames1 = countFrames(video, false /* reconfigure */, -1 /* eosframe */, s);
-        int frames2 = countFrames(video, true /* reconfigure */, -1 /* eosframe */, s);
-        assertEquals("different number of frames when reusing codec", frames1, frames2);
+        int frames1 = countFrames(video, RESET_MODE_NONE, -1 /* eosframe */, s);
+        int frames2 = countFrames(video, RESET_MODE_RECONFIGURE, -1 /* eosframe */, s);
+        assertEquals("different number of frames when using reconfigured codec", frames1, frames2);
     }
 
-    private int countFrames(int video, boolean reconfigure, int eosframe, Surface s) throws Exception {
+    private void testCodecResets(int video, Surface s) throws Exception {
+        int frames1 = countFrames(video, RESET_MODE_NONE, -1 /* eosframe */, s);
+        int frames2 = countFrames(video, RESET_MODE_RECONFIGURE, -1 /* eosframe */, s);
+        int frames3 = countFrames(video, RESET_MODE_FLUSH, -1 /* eosframe */, s);
+        assertEquals("different number of frames when using reconfigured codec", frames1, frames2);
+        assertEquals("different number of frames when using flushed codec", frames1, frames3);
+    }
+
+    private MediaCodec createDecoder(String mime) {
+        if (false) {
+            // change to force testing software codecs
+            if (mime.contains("avc")) {
+                return MediaCodec.createByCodecName("OMX.google.h264.decoder");
+            } else if (mime.contains("3gpp")) {
+                return MediaCodec.createByCodecName("OMX.google.h263.decoder");
+            } else if (mime.contains("mp4v")) {
+                return MediaCodec.createByCodecName("OMX.google.mpeg4.decoder");
+            } else if (mime.contains("vp8")) {
+                return MediaCodec.createByCodecName("OMX.google.vp8.decoder");
+            } else if (mime.contains("vp9")) {
+                return MediaCodec.createByCodecName("OMX.google.vp9.decoder");
+            }
+        }
+        return MediaCodec.createDecoderByType(mime);
+    }
+
+    private int countFrames(int video, int resetMode, int eosframe, Surface s)
+            throws Exception {
         int numframes = 0;
 
         AssetFileDescriptor testFd = mResources.openRawResourceFd(video);
@@ -386,12 +534,8 @@
         String mime = format.getString(MediaFormat.KEY_MIME);
         boolean isAudio = mime.startsWith("audio/");
 
-        codec = MediaCodec.createDecoderByType(mime);
-//        if (mime.contains("avc")) {
-//            codec = MediaCodec.createByCodecName("OMX.google.h264.decoder");
-//        } else if (mime.contains("3gpp")) {
-//            codec = MediaCodec.createByCodecName("OMX.google.h263.decoder");
-//        }
+        codec = createDecoder(mime);
+
         assertNotNull("couldn't find codec", codec);
         Log.i("@@@@", "using codec: " + codec.getName());
         codec.configure(format, s /* surface */, null /* crypto */, 0 /* flags */);
@@ -399,13 +543,16 @@
         codecInputBuffers = codec.getInputBuffers();
         codecOutputBuffers = codec.getOutputBuffers();
 
-        if (reconfigure) {
+        if (resetMode == RESET_MODE_RECONFIGURE) {
             codec.stop();
             codec.configure(format, s /* surface */, null /* crypto */, 0 /* flags */);
             codec.start();
             codecInputBuffers = codec.getInputBuffers();
             codecOutputBuffers = codec.getOutputBuffers();
+        } else if (resetMode == RESET_MODE_FLUSH) {
+            codec.flush();
         }
+
         Log.i("@@@@", "format: " + format);
 
         extractor.selectTrack(0);
@@ -468,18 +615,23 @@
                 // Some decoders output a 0-sized buffer at the end. Disregard those.
                 if (info.size > 0) {
                     deadDecoderCounter = 0;
-                    if (reconfigure) {
-                        // once we've gotten some data out of the decoder, reconfigure it again
-                        reconfigure = false;
-                        numframes = 0;
+                    if (resetMode != RESET_MODE_NONE) {
+                        // once we've gotten some data out of the decoder, reset and start again
+                        if (resetMode == RESET_MODE_RECONFIGURE) {
+                            codec.stop();
+                            codec.configure(format, s /* surface */, null /* crypto */,
+                                    0 /* flags */);
+                            codec.start();
+                            codecInputBuffers = codec.getInputBuffers();
+                            codecOutputBuffers = codec.getOutputBuffers();
+                        } else /* resetMode == RESET_MODE_FLUSH */ {
+                            codec.flush();
+                        }
+                        resetMode = RESET_MODE_NONE;
                         extractor.seekTo(0, MediaExtractor.SEEK_TO_NEXT_SYNC);
                         sawInputEOS = false;
+                        numframes = 0;
                         timestamps.clear();
-                        codec.stop();
-                        codec.configure(format, s /* surface */, null /* crypto */, 0 /* flags */);
-                        codec.start();
-                        codecInputBuffers = codec.getInputBuffers();
-                        codecOutputBuffers = codec.getOutputBuffers();
                         continue;
                     }
 
@@ -534,6 +686,31 @@
         testEOSBehavior(R.raw.video_176x144_3gp_h263_300kbps_12fps_aac_stereo_128kbps_22050hz, 50);
     }
 
+    public void testEOSBehaviorMpeg4() throws Exception {
+        // this video has an I frame every 12 frames
+        testEOSBehavior(R.raw.video_480x360_mp4_mpeg4_860kbps_25fps_aac_stereo_128kbps_44100hz, 24);
+        testEOSBehavior(R.raw.video_480x360_mp4_mpeg4_860kbps_25fps_aac_stereo_128kbps_44100hz, 25);
+        testEOSBehavior(R.raw.video_480x360_mp4_mpeg4_860kbps_25fps_aac_stereo_128kbps_44100hz, 48);
+        testEOSBehavior(R.raw.video_480x360_mp4_mpeg4_860kbps_25fps_aac_stereo_128kbps_44100hz, 50);
+        testEOSBehavior(R.raw.video_480x360_mp4_mpeg4_860kbps_25fps_aac_stereo_128kbps_44100hz, 2);
+    }
+
+    public void testEOSBehaviorVP8() throws Exception {
+        // this video has an I frame at 46
+        testEOSBehavior(R.raw.video_480x360_webm_vp8_333kbps_25fps_vorbis_stereo_128kbps_44100hz, 46);
+        testEOSBehavior(R.raw.video_480x360_webm_vp8_333kbps_25fps_vorbis_stereo_128kbps_44100hz, 47);
+        testEOSBehavior(R.raw.video_480x360_webm_vp8_333kbps_25fps_vorbis_stereo_128kbps_44100hz, 57);
+        testEOSBehavior(R.raw.video_480x360_webm_vp8_333kbps_25fps_vorbis_stereo_128kbps_44100hz, 45);
+    }
+
+    public void testEOSBehaviorVP9() throws Exception {
+        // this video has an I frame at 44
+        testEOSBehavior(R.raw.video_480x360_webm_vp9_333kbps_25fps_vorbis_stereo_128kbps_44100hz, 44);
+        testEOSBehavior(R.raw.video_480x360_webm_vp9_333kbps_25fps_vorbis_stereo_128kbps_44100hz, 45);
+        testEOSBehavior(R.raw.video_480x360_webm_vp9_333kbps_25fps_vorbis_stereo_128kbps_44100hz, 55);
+        testEOSBehavior(R.raw.video_480x360_webm_vp9_333kbps_25fps_vorbis_stereo_128kbps_44100hz, 43);
+    }
+
     private void testEOSBehavior(int movie, int stopatsample) throws Exception {
 
         int numframes = 0;
@@ -555,12 +732,8 @@
         String mime = format.getString(MediaFormat.KEY_MIME);
         boolean isAudio = mime.startsWith("audio/");
 
-        codec = MediaCodec.createDecoderByType(mime);
-//        if (mime.contains("avc")) {
-//            codec = MediaCodec.createByCodecName("OMX.google.h264.decoder");
-//        } else if (mime.contains("3gpp")) {
-//            codec = MediaCodec.createByCodecName("OMX.google.h263.decoder");
-//        }
+        codec = createDecoder(mime);
+
         assertNotNull("couldn't find codec", codec);
         Log.i("@@@@", "using codec: " + codec.getName());
         codec.configure(format, null /* surface */, null /* crypto */, 0 /* flags */);
@@ -577,6 +750,7 @@
         boolean sawOutputEOS = false;
         int deadDecoderCounter = 0;
         int samplenum = 0;
+        boolean dochecksum = false;
         while (!sawOutputEOS && deadDecoderCounter < 100) {
             if (!sawInputEOS) {
                 int inputBufIndex = codec.dequeueInputBuffer(kTimeOutUs);
@@ -630,7 +804,7 @@
                         numframes += info.size;
                     } else {
                         // for video, count the number of video frames
-                        long sum = checksum(codecOutputBuffers[res], info.size);
+                        long sum = dochecksum ? checksum(codecOutputBuffers[res], info.size) : 0;
                         if (numframes < checksums.length) {
                             checksums[numframes] = sum;
                         }
@@ -653,7 +827,8 @@
                 Log.d(TAG, "output buffers have changed.");
             } else if (res == MediaCodec.INFO_OUTPUT_FORMAT_CHANGED) {
                 MediaFormat oformat = codec.getOutputFormat();
-
+                int colorFormat = oformat.getInteger(MediaFormat.KEY_COLOR_FORMAT);
+                dochecksum = isRecognizedFormat(colorFormat);
                 Log.d(TAG, "output format has changed to " + oformat);
             } else {
                 Log.d(TAG, "no output");
@@ -673,12 +848,7 @@
         extractor.setDataSource(testFd.getFileDescriptor(), testFd.getStartOffset(),
                 testFd.getLength());
 
-        codec = MediaCodec.createDecoderByType(mime);
-//        if (mime.contains("avc")) {
-//            codec = MediaCodec.createByCodecName("OMX.google.h264.decoder");
-//        } else if (mime.contains("3gpp")) {
-//            codec = MediaCodec.createByCodecName("OMX.google.h263.decoder");
-//        }
+        codec = createDecoder(mime);
         codec.configure(format, null /* surface */, null /* crypto */, 0 /* flags */);
         codec.start();
         codecInputBuffers = codec.getInputBuffers();
@@ -693,6 +863,7 @@
         deadDecoderCounter = 0;
         samplenum = 0;
         numframes = 0;
+        dochecksum = false;
         while (!sawOutputEOS && deadDecoderCounter < 100) {
             if (!sawInputEOS) {
                 int inputBufIndex = codec.dequeueInputBuffer(kTimeOutUs);
@@ -746,7 +917,7 @@
                         numframes += info.size;
                     } else {
                         // for video, count the number of video frames
-                        long sum = checksum(codecOutputBuffers[res], info.size);
+                        long sum = dochecksum ? checksum(codecOutputBuffers[res], info.size) : 0;
                         if (numframes < checksums.length) {
                             assertEquals("frame data mismatch at frame " + numframes,
                                     checksums[numframes], sum);
@@ -770,7 +941,8 @@
                 Log.d(TAG, "output buffers have changed.");
             } else if (res == MediaCodec.INFO_OUTPUT_FORMAT_CHANGED) {
                 MediaFormat oformat = codec.getOutputFormat();
-
+                int colorFormat = oformat.getInteger(MediaFormat.KEY_COLOR_FORMAT);
+                dochecksum = isRecognizedFormat(colorFormat);
                 Log.d(TAG, "output format has changed to " + oformat);
             } else {
                 Log.d(TAG, "no output");
@@ -788,6 +960,21 @@
         testFd.close();
     }
 
+    /* from EncodeDecodeTest */
+    private static boolean isRecognizedFormat(int colorFormat) {
+        switch (colorFormat) {
+            // these are the formats we know how to handle for this test
+            case MediaCodecInfo.CodecCapabilities.COLOR_FormatYUV420Planar:
+            case MediaCodecInfo.CodecCapabilities.COLOR_FormatYUV420PackedPlanar:
+            case MediaCodecInfo.CodecCapabilities.COLOR_FormatYUV420SemiPlanar:
+            case MediaCodecInfo.CodecCapabilities.COLOR_FormatYUV420PackedSemiPlanar:
+            case MediaCodecInfo.CodecCapabilities.COLOR_TI_FormatYUV420PackedSemiPlanar:
+                return true;
+            default:
+                return false;
+        }
+    }
+
     private long checksum(ByteBuffer buf, int size) {
         assertTrue(size != 0);
         assertTrue(size <= buf.capacity());
@@ -852,7 +1039,7 @@
         codec.release();
 
     }
-    
+
     private short getAmplitude(MediaExtractor extractor, MediaCodec codec) {
         short maxvalue = 0;
         int numBytesDecoded = 0;
@@ -903,7 +1090,7 @@
                 MediaFormat oformat = codec.getOutputFormat();
             }
         }
-        return maxvalue; 
+        return maxvalue;
     }
 
 }
diff --git a/tests/tests/media/src/android/media/cts/EncodeDecodeTest.java b/tests/tests/media/src/android/media/cts/EncodeDecodeTest.java
index d788102..445814e 100644
--- a/tests/tests/media/src/android/media/cts/EncodeDecodeTest.java
+++ b/tests/tests/media/src/android/media/cts/EncodeDecodeTest.java
@@ -332,7 +332,7 @@
             inputSurface = new InputSurface(encoder.createInputSurface());
             encoder.start();
 
-            doEncodeDecodeVideoFromSurfaceToSurface(encoder, inputSurface, colorFormat, decoder, outputSurface);
+            doEncodeDecodeVideoFromSurfaceToSurface(encoder, inputSurface, decoder, outputSurface);
         } finally {
             if (VERBOSE) Log.d(TAG, "releasing codecs");
             if (inputSurface != null) {
@@ -703,7 +703,7 @@
      * Does the actual work for encoding and decoding from Surface to Surface.
      */
     private void doEncodeDecodeVideoFromSurfaceToSurface(MediaCodec encoder,
-            InputSurface inputSurface, int encoderColorFormat, MediaCodec decoder,
+            InputSurface inputSurface, MediaCodec decoder,
             OutputSurface outputSurface) {
         final int TIMEOUT_USEC = 10000;
         ByteBuffer[] encoderOutputBuffers = encoder.getOutputBuffers();
diff --git a/tests/tests/media/src/android/media/cts/EncodeVirtualDisplayTest.java b/tests/tests/media/src/android/media/cts/EncodeVirtualDisplayTest.java
new file mode 100644
index 0000000..dedbe9f
--- /dev/null
+++ b/tests/tests/media/src/android/media/cts/EncodeVirtualDisplayTest.java
@@ -0,0 +1,560 @@
+/*
+ * Copyright (C) 2013 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 android.media.cts;
+
+import android.app.Presentation;
+import android.media.MediaCodec;
+import android.media.MediaCodecInfo;
+import android.media.MediaFormat;
+import android.content.Context;
+import android.graphics.drawable.ColorDrawable;
+import android.hardware.display.DisplayManager;
+import android.hardware.display.VirtualDisplay;
+import android.opengl.GLES20;
+import android.os.Bundle;
+import android.os.Handler;
+import android.os.Looper;
+import android.test.AndroidTestCase;
+import android.util.DisplayMetrics;
+import android.util.Log;
+import android.view.Display;
+import android.view.Surface;
+import android.view.WindowManager;
+import android.view.ViewGroup.LayoutParams;
+import android.widget.ImageView;
+
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.nio.ByteBuffer;
+
+
+/**
+ * Tests connecting a virtual display to the input of a MediaCodec encoder.
+ * <p>
+ * Other test cases exercise these independently in more depth.  The goal here is to make sure
+ * that virtual displays and MediaCodec can be used together.
+ * <p>
+ * We can't control frame-by-frame what appears on the virtual display, because we're
+ * just throwing a Presentation and a View at it.  Further, it's possible that frames
+ * will be dropped if they arrive faster than they are consumed, so any given frame
+ * may not appear at all.  We can't wait for a series of actions to complete by watching
+ * the output, because the frames are going directly to the encoder, and the encoder may
+ * collect a number of frames before producing output.
+ * <p>
+ * The test puts up a series of colored screens, expecting to see all of them, and in order.
+ * Any black screens that appear before or after are ignored.
+ */
+public class EncodeVirtualDisplayTest extends AndroidTestCase {
+    private static final String TAG = "EncodeVirtualTest";
+    private static final boolean VERBOSE = false;           // lots of logging
+    private static final boolean DEBUG_SAVE_FILE = false;   // save copy of encoded movie
+    private static final String DEBUG_FILE_NAME_BASE = "/sdcard/test.";
+
+    // Virtual display characteristics.  Scaled down from full display size because not all
+    // devices can encode at the resolution of their own display.
+    private static final String NAME = TAG;
+    private static final int WIDTH = 1280;
+    private static final int HEIGHT = 720;
+    private static final int DENSITY = DisplayMetrics.DENSITY_HIGH;
+    private static final int UI_TIMEOUT_MS = 2000;
+    private static final int UI_RENDER_PAUSE_MS = 400;
+
+    // Encoder parameters.  We use the same width/height as the virtual display.
+    private static final String MIME_TYPE = "video/avc";
+    private static final int FRAME_RATE = 15;               // 15fps
+    private static final int IFRAME_INTERVAL = 10;          // 10 seconds between I-frames
+    private static final int BIT_RATE = 6000000;            // 6Mbps
+
+    // Colors to test (RGB).  These must convert cleanly to and from BT.601 YUV.
+    private static final int TEST_COLORS[] = {
+        makeColor(10, 100, 200),        // YCbCr 89,186,82
+        makeColor(100, 200, 10),        // YCbCr 144,60,98
+        makeColor(200, 10, 100),        // YCbCr 203,10,103
+        makeColor(10, 200, 100),        // YCbCr 130,113,52
+        makeColor(100, 10, 200),        // YCbCr 67,199,154
+        makeColor(200, 100, 10),        // YCbCr 119,74,179
+    };
+
+    private final ByteBuffer mPixelBuf = ByteBuffer.allocateDirect(4);
+    private Handler mUiHandler;                             // Handler on main Looper
+    private DisplayManager mDisplayManager;
+    volatile boolean mInputDone;
+
+    /* TEST_COLORS static initialization; need ARGB for ColorDrawable */
+    private static int makeColor(int red, int green, int blue) {
+        return 0xff << 24 | (red & 0xff) << 16 | (green & 0xff) << 8 | (blue & 0xff);
+    }
+
+    @Override
+    protected void setUp() throws Exception {
+        super.setUp();
+
+        mUiHandler = new Handler(Looper.getMainLooper());
+        mDisplayManager = (DisplayManager)mContext.getSystemService(Context.DISPLAY_SERVICE);
+    }
+
+    /**
+     * Basic test.
+     *
+     * @throws Exception
+     */
+    public void testEncodeVirtualDisplay() throws Throwable {
+        EncodeVirtualWrapper.runTest(this);
+    }
+
+    /**
+     * Wraps encodeVirtualTest, running it in a new thread.  Required because of the way
+     * SurfaceTexture.OnFrameAvailableListener works when the current thread has a Looper
+     * configured.
+     */
+    private static class EncodeVirtualWrapper implements Runnable {
+        private Throwable mThrowable;
+        private EncodeVirtualDisplayTest mTest;
+
+        private EncodeVirtualWrapper(EncodeVirtualDisplayTest test) {
+            mTest = test;
+        }
+
+        @Override
+        public void run() {
+            try {
+                mTest.encodeVirtualDisplayTest();
+            } catch (Throwable th) {
+                mThrowable = th;
+            }
+        }
+
+        /** Entry point. */
+        public static void runTest(EncodeVirtualDisplayTest obj) throws Throwable {
+            EncodeVirtualWrapper wrapper = new EncodeVirtualWrapper(obj);
+            Thread th = new Thread(wrapper, "codec test");
+            th.start();
+            th.join();
+            if (wrapper.mThrowable != null) {
+                throw wrapper.mThrowable;
+            }
+        }
+    }
+
+    /**
+     * Prepares the encoder, decoder, and virtual display.
+     */
+    private void encodeVirtualDisplayTest() {
+        MediaCodec encoder = null;
+        MediaCodec decoder = null;
+        OutputSurface outputSurface = null;
+        VirtualDisplay virtualDisplay = null;
+
+        try {
+            // Encoded video resolution matches virtual display.
+            MediaFormat encoderFormat = MediaFormat.createVideoFormat(MIME_TYPE, WIDTH, HEIGHT);
+            encoderFormat.setInteger(MediaFormat.KEY_COLOR_FORMAT,
+                    MediaCodecInfo.CodecCapabilities.COLOR_FormatSurface);
+            encoderFormat.setInteger(MediaFormat.KEY_BIT_RATE, BIT_RATE);
+            encoderFormat.setInteger(MediaFormat.KEY_FRAME_RATE, FRAME_RATE);
+            encoderFormat.setInteger(MediaFormat.KEY_I_FRAME_INTERVAL, IFRAME_INTERVAL);
+
+            encoder = MediaCodec.createEncoderByType(MIME_TYPE);
+            encoder.configure(encoderFormat, null, null, MediaCodec.CONFIGURE_FLAG_ENCODE);
+            Surface inputSurface = encoder.createInputSurface();
+            encoder.start();
+
+            // Create a virtual display that will output to our encoder.
+            virtualDisplay = mDisplayManager.createVirtualDisplay(NAME,
+                    WIDTH, HEIGHT, DENSITY, inputSurface, 0);
+
+            // We also need a decoder to check the output of the encoder.
+            decoder = MediaCodec.createDecoderByType(MIME_TYPE);
+            MediaFormat decoderFormat = MediaFormat.createVideoFormat(MIME_TYPE, WIDTH, HEIGHT);
+            outputSurface = new OutputSurface(WIDTH, HEIGHT);
+            decoder.configure(decoderFormat, outputSurface.getSurface(), null, 0);
+            decoder.start();
+
+            // Run the color slide show on a separate thread.
+            mInputDone = false;
+            new ColorSlideShow(virtualDisplay.getDisplay()).start();
+
+            // Record everything we can and check the results.
+            doTestEncodeVirtual(encoder, decoder, outputSurface);
+
+        } finally {
+            if (VERBOSE) Log.d(TAG, "releasing codecs, surfaces, and virtual display");
+            if (virtualDisplay != null) {
+                virtualDisplay.release();
+            }
+            if (outputSurface != null) {
+                outputSurface.release();
+            }
+            if (encoder != null) {
+                encoder.stop();
+                encoder.release();
+            }
+            if (decoder != null) {
+                decoder.stop();
+                decoder.release();
+            }
+        }
+    }
+
+    /**
+     * Drives the encoder and decoder.
+     */
+    private void doTestEncodeVirtual(MediaCodec encoder, MediaCodec decoder,
+            OutputSurface outputSurface) {
+        final int TIMEOUT_USEC = 10000;
+        ByteBuffer[] encoderOutputBuffers = encoder.getOutputBuffers();
+        ByteBuffer[] decoderInputBuffers = decoder.getInputBuffers();
+        MediaCodec.BufferInfo info = new MediaCodec.BufferInfo();
+        boolean inputEosSignaled = false;
+        int lastIndex = -1;
+        int goodFrames = 0;
+        int debugFrameCount = 0;
+
+        // Save a copy to disk.  Useful for debugging the test.  Note this is a raw elementary
+        // stream, not a .mp4 file, so not all players will know what to do with it.
+        FileOutputStream outputStream = null;
+        if (DEBUG_SAVE_FILE) {
+            String fileName = DEBUG_FILE_NAME_BASE + WIDTH + "x" + HEIGHT + ".mp4";
+            try {
+                outputStream = new FileOutputStream(fileName);
+                Log.d(TAG, "encoded output will be saved as " + fileName);
+            } catch (IOException ioe) {
+                Log.w(TAG, "Unable to create debug output file " + fileName);
+                throw new RuntimeException(ioe);
+            }
+        }
+
+        // Loop until the output side is done.
+        boolean encoderDone = false;
+        boolean outputDone = false;
+        while (!outputDone) {
+            if (VERBOSE) Log.d(TAG, "loop");
+
+            if (!inputEosSignaled && mInputDone) {
+                if (VERBOSE) Log.d(TAG, "signaling input EOS");
+                encoder.signalEndOfInputStream();
+                inputEosSignaled = true;
+            }
+
+            boolean decoderOutputAvailable = true;
+            boolean encoderOutputAvailable = !encoderDone;
+            while (decoderOutputAvailable || encoderOutputAvailable) {
+                // Start by draining any pending output from the decoder.  It's important to
+                // do this before we try to stuff any more data in.
+                int decoderStatus = decoder.dequeueOutputBuffer(info, TIMEOUT_USEC);
+                if (decoderStatus == MediaCodec.INFO_TRY_AGAIN_LATER) {
+                    // no output available yet
+                    if (VERBOSE) Log.d(TAG, "no output from decoder available");
+                    decoderOutputAvailable = false;
+                } else if (decoderStatus == MediaCodec.INFO_OUTPUT_BUFFERS_CHANGED) {
+                    if (VERBOSE) Log.d(TAG, "decoder output buffers changed (but we don't care)");
+                } else if (decoderStatus == MediaCodec.INFO_OUTPUT_FORMAT_CHANGED) {
+                    // this happens before the first frame is returned
+                    MediaFormat decoderOutputFormat = decoder.getOutputFormat();
+                    if (VERBOSE) Log.d(TAG, "decoder output format changed: " +
+                            decoderOutputFormat);
+                } else if (decoderStatus < 0) {
+                    fail("unexpected result from deocder.dequeueOutputBuffer: " + decoderStatus);
+                } else {  // decoderStatus >= 0
+                    if (VERBOSE) Log.d(TAG, "surface decoder given buffer " + decoderStatus +
+                            " (size=" + info.size + ")");
+                    if ((info.flags & MediaCodec.BUFFER_FLAG_END_OF_STREAM) != 0) {
+                        if (VERBOSE) Log.d(TAG, "output EOS");
+                        outputDone = true;
+                    }
+
+                    // The ByteBuffers are null references, but we still get a nonzero size for
+                    // the decoded data.
+                    boolean doRender = (info.size != 0);
+
+                    // As soon as we call releaseOutputBuffer, the buffer will be forwarded
+                    // to SurfaceTexture to convert to a texture.  The API doesn't guarantee
+                    // that the texture will be available before the call returns, so we
+                    // need to wait for the onFrameAvailable callback to fire.  If we don't
+                    // wait, we risk dropping frames.
+                    outputSurface.makeCurrent();
+                    decoder.releaseOutputBuffer(decoderStatus, doRender);
+                    if (doRender) {
+                        if (VERBOSE) Log.d(TAG, "awaiting frame " + (lastIndex+1));
+                        outputSurface.awaitNewImage();
+                        outputSurface.drawImage();
+                        int foundIndex = checkSurfaceFrame();
+                        if (foundIndex == lastIndex + 1) {
+                            // found the next one in the series
+                            lastIndex = foundIndex;
+                            goodFrames++;
+                        } else if (foundIndex == lastIndex) {
+                            // Sometimes we see the same color two frames in a row.
+                            if (VERBOSE) Log.d(TAG, "Got another " + lastIndex);
+                        } else if (foundIndex > 0) {
+                            // Looks like we missed a color frame.  It's possible something
+                            // stalled and we dropped a frame.  Skip forward to see if we
+                            // can catch the rest.
+                            if (foundIndex < lastIndex) {
+                                Log.w(TAG, "Ignoring backward skip from " +
+                                    lastIndex + " to " + foundIndex);
+                            } else {
+                                Log.w(TAG, "Frame skipped, advancing lastIndex from " +
+                                        lastIndex + " to " + foundIndex);
+                                goodFrames++;
+                                lastIndex = foundIndex;
+                            }
+                        }
+                    }
+                }
+                if (decoderStatus != MediaCodec.INFO_TRY_AGAIN_LATER) {
+                    // Continue attempts to drain output.
+                    continue;
+                }
+
+                // Decoder is drained, check to see if we've got a new buffer of output from
+                // the encoder.
+                if (!encoderDone) {
+                    int encoderStatus = encoder.dequeueOutputBuffer(info, TIMEOUT_USEC);
+                    if (encoderStatus == MediaCodec.INFO_TRY_AGAIN_LATER) {
+                        // no output available yet
+                        if (VERBOSE) Log.d(TAG, "no output from encoder available");
+                        encoderOutputAvailable = false;
+                    } else if (encoderStatus == MediaCodec.INFO_OUTPUT_BUFFERS_CHANGED) {
+                        // not expected for an encoder
+                        encoderOutputBuffers = encoder.getOutputBuffers();
+                        if (VERBOSE) Log.d(TAG, "encoder output buffers changed");
+                    } else if (encoderStatus == MediaCodec.INFO_OUTPUT_FORMAT_CHANGED) {
+                        // received before first buffer
+                        MediaFormat newFormat = encoder.getOutputFormat();
+                        if (VERBOSE) Log.d(TAG, "encoder output format changed: " + newFormat);
+                    } else if (encoderStatus < 0) {
+                        fail("unexpected result from encoder.dequeueOutputBuffer: " + encoderStatus);
+                    } else { // encoderStatus >= 0
+                        ByteBuffer encodedData = encoderOutputBuffers[encoderStatus];
+                        if (encodedData == null) {
+                            fail("encoderOutputBuffer " + encoderStatus + " was null");
+                        }
+
+                        // It's usually necessary to adjust the ByteBuffer values to match BufferInfo.
+                        encodedData.position(info.offset);
+                        encodedData.limit(info.offset + info.size);
+
+                        if (outputStream != null) {
+                            byte[] data = new byte[info.size];
+                            encodedData.get(data);
+                            encodedData.position(info.offset);
+                            try {
+                                outputStream.write(data);
+                            } catch (IOException ioe) {
+                                Log.w(TAG, "failed writing debug data to file");
+                                throw new RuntimeException(ioe);
+                            }
+                            debugFrameCount++;
+                        }
+
+                        // Get a decoder input buffer, blocking until it's available.  We just
+                        // drained the decoder output, so we expect there to be a free input
+                        // buffer now or in the near future (i.e. this should never deadlock
+                        // if the codec is meeting requirements).
+                        //
+                        // The first buffer of data we get will have the BUFFER_FLAG_CODEC_CONFIG
+                        // flag set; the decoder will see this and finish configuring itself.
+                        int inputBufIndex = decoder.dequeueInputBuffer(-1);
+                        ByteBuffer inputBuf = decoderInputBuffers[inputBufIndex];
+                        inputBuf.clear();
+                        inputBuf.put(encodedData);
+                        decoder.queueInputBuffer(inputBufIndex, 0, info.size,
+                                info.presentationTimeUs, info.flags);
+
+                        // If everything from the encoder has been passed to the decoder, we
+                        // can stop polling the encoder output.  (This just an optimization.)
+                        if ((info.flags & MediaCodec.BUFFER_FLAG_END_OF_STREAM) != 0) {
+                            encoderDone = true;
+                            encoderOutputAvailable = false;
+                        }
+                        if (VERBOSE) Log.d(TAG, "passed " + info.size + " bytes to decoder"
+                                + (encoderDone ? " (EOS)" : ""));
+
+                        encoder.releaseOutputBuffer(encoderStatus, false);
+                    }
+                }
+            }
+        }
+
+        if (outputStream != null) {
+            try {
+                outputStream.close();
+                if (VERBOSE) Log.d(TAG, "Wrote " + debugFrameCount + " frames");
+            } catch (IOException ioe) {
+                Log.w(TAG, "failed closing debug file");
+                throw new RuntimeException(ioe);
+            }
+        }
+
+        if (goodFrames != TEST_COLORS.length) {
+            fail("Found " + goodFrames + " of " + TEST_COLORS.length + " expected frames");
+        }
+    }
+
+    /**
+     * Checks the contents of the current EGL surface to see if it matches expectations.
+     * <p>
+     * The surface may be black or one of the colors we've drawn.  We have sufficiently little
+     * control over the rendering process that we don't know how many (if any) black frames
+     * will appear between each color frame.
+     * <p>
+     * @return the color index, or -2 for black
+     * @throw RuntimeException if the color isn't recognized (probably because the RGB<->YUV
+     *     conversion introduced too much variance)
+     */
+    private int checkSurfaceFrame() {
+        boolean frameFailed = false;
+
+        // Read a pixel from the center of the surface.  Might want to read from multiple points
+        // and average them together.
+        int x = WIDTH / 2;
+        int y = HEIGHT / 2;
+        GLES20.glReadPixels(x, y, 1, 1, GLES20.GL_RGBA, GLES20.GL_UNSIGNED_BYTE, mPixelBuf);
+        int r = mPixelBuf.get(0) & 0xff;
+        int g = mPixelBuf.get(1) & 0xff;
+        int b = mPixelBuf.get(2) & 0xff;
+        if (VERBOSE) Log.d(TAG, "GOT: r=" + r + " g=" + g + " b=" + b);
+
+        if (approxEquals(0, r) && approxEquals(0, g) && approxEquals(0, b)) {
+            return -2;
+        }
+
+        // Walk through the color list and try to find a match.  These may have gone through
+        // RGB<->YCbCr conversions, so don't expect exact matches.
+        for (int i = 0; i < TEST_COLORS.length; i++) {
+            int testRed = (TEST_COLORS[i] >> 16) & 0xff;
+            int testGreen = (TEST_COLORS[i] >> 8) & 0xff;
+            int testBlue = TEST_COLORS[i] & 0xff;
+            if (approxEquals(testRed, r) && approxEquals(testGreen, g) &&
+                    approxEquals(testBlue, b)) {
+                if (VERBOSE) Log.d(TAG, "Matched color " + i + ": r=" + r + " g=" + g + " b=" + b);
+                return i;
+            }
+        }
+
+        throw new RuntimeException("No match for color r=" + r + " g=" + g + " b=" + b);
+    }
+
+    /**
+     * Determines if two color values are approximately equal.
+     */
+    private static boolean approxEquals(int expected, int actual) {
+        final int MAX_DELTA = 7;
+        return Math.abs(expected - actual) <= MAX_DELTA;
+    }
+
+    /**
+     * Creates a series of colorful Presentations on the specified Display.
+     */
+    private class ColorSlideShow extends Thread {
+        private Display mDisplay;
+
+        public ColorSlideShow(Display display) {
+            mDisplay = display;
+        }
+
+        @Override
+        public void run() {
+            for (int i = 0; i < TEST_COLORS.length; i++) {
+                showPresentation(TEST_COLORS[i]);
+            }
+
+            if (VERBOSE) Log.d(TAG, "slide show finished");
+            mInputDone = true;
+        }
+
+        private void showPresentation(final int color) {
+            final TestPresentation[] presentation = new TestPresentation[1];
+            try {
+                runOnUiThread(new Runnable() {
+                    @Override
+                    public void run() {
+                        // Want to create presentation on UI thread so it finds the right Looper
+                        // when setting up the Dialog.
+                        presentation[0] = new TestPresentation(getContext(), mDisplay, color);
+                        if (VERBOSE) Log.d(TAG, "showing color=0x" + Integer.toHexString(color));
+                        presentation[0].show();
+                    }
+                });
+
+                // Give the presentation an opportunity to render.  We don't have a way to
+                // monitor the output, so we just sleep for a bit.
+                try { Thread.sleep(UI_RENDER_PAUSE_MS); }
+                catch (InterruptedException ignore) {}
+            } finally {
+                if (presentation[0] != null) {
+                    runOnUiThread(new Runnable() {
+                        @Override
+                        public void run() {
+                            presentation[0].dismiss();
+                        }
+                    });
+                }
+            }
+        }
+    }
+
+    /**
+     * Executes a runnable on the UI thread, and waits for it to complete.
+     */
+    private void runOnUiThread(Runnable runnable) {
+        Runnable waiter = new Runnable() {
+            @Override
+            public void run() {
+                synchronized (this) {
+                    notifyAll();
+                }
+            }
+        };
+        synchronized (waiter) {
+            mUiHandler.post(runnable);
+            mUiHandler.post(waiter);
+            try {
+                waiter.wait(UI_TIMEOUT_MS);
+            } catch (InterruptedException ex) {
+            }
+        }
+    }
+
+    /**
+     * Presentation we can show on a virtual display.  The view is set to a single color value.
+     */
+    private class TestPresentation extends Presentation {
+        private final int mColor;
+
+        public TestPresentation(Context context, Display display, int color) {
+            super(context, display);
+            mColor = color;
+        }
+
+        @Override
+        protected void onCreate(Bundle savedInstanceState) {
+            super.onCreate(savedInstanceState);
+
+            setTitle("Encode Virtual Test");
+            getWindow().setType(WindowManager.LayoutParams.TYPE_PRIVATE_PRESENTATION);
+
+            // Create a solid color image to use as the content of the presentation.
+            ImageView view = new ImageView(getContext());
+            view.setImageDrawable(new ColorDrawable(mColor));
+            view.setLayoutParams(new LayoutParams(
+                    LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT));
+            setContentView(view);
+        }
+    }
+}
diff --git a/tests/tests/media/src/android/media/cts/EncodeVirtualDisplayWithCompositionTest.java b/tests/tests/media/src/android/media/cts/EncodeVirtualDisplayWithCompositionTest.java
new file mode 100644
index 0000000..954919e
--- /dev/null
+++ b/tests/tests/media/src/android/media/cts/EncodeVirtualDisplayWithCompositionTest.java
@@ -0,0 +1,1522 @@
+/*
+ * Copyright (C) 2013 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 android.media.cts;
+
+
+import android.app.Presentation;
+import android.content.ComponentName;
+import android.content.Context;
+import android.content.Intent;
+import android.content.ServiceConnection;
+import android.graphics.SurfaceTexture;
+import android.graphics.Typeface;
+import android.graphics.drawable.ColorDrawable;
+import android.hardware.display.DisplayManager;
+import android.hardware.display.VirtualDisplay;
+import android.media.MediaCodec;
+import android.media.MediaCodec.BufferInfo;
+import android.media.MediaCodecInfo;
+import android.media.MediaCodecInfo.CodecCapabilities;
+import android.media.MediaCodecInfo.CodecProfileLevel;
+import android.media.MediaCodecList;
+import android.media.MediaFormat;
+import android.opengl.GLES11Ext;
+import android.opengl.GLES20;
+import android.opengl.Matrix;
+import android.os.Bundle;
+import android.os.Handler;
+import android.os.IBinder;
+import android.os.Looper;
+import android.os.Message;
+import android.os.Parcel;
+import android.test.AndroidTestCase;
+import android.util.AttributeSet;
+import android.util.Log;
+import android.util.Pair;
+import android.view.Display;
+import android.view.Surface;
+import android.view.TextureView;
+import android.view.View;
+import android.view.ViewGroup;
+import android.view.ViewGroup.LayoutParams;
+import android.view.WindowManager;
+import android.widget.FrameLayout;
+import android.widget.ImageView;
+import android.widget.TextView;
+
+import com.android.cts.media.R;
+
+import java.nio.ByteBuffer;
+import java.nio.ByteOrder;
+import java.nio.FloatBuffer;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.concurrent.Semaphore;
+import java.util.concurrent.TimeUnit;
+import java.util.concurrent.atomic.AtomicInteger;
+
+/**
+ * Tests to check if MediaCodec encoding works with composition of multiple virtual displays
+ * The test also tries to destroy and create virtual displays repeatedly to
+ * detect any issues. The test itself does not check the output as it is already done in other
+ * tests.
+ */
+public class EncodeVirtualDisplayWithCompositionTest extends AndroidTestCase {
+    private static final String TAG = "EncodeVirtualDisplayWithCompositionTest";
+    private static final boolean DBG = false;
+    private static final String MIME_TYPE = "video/avc";
+
+    private static final long DEFAULT_WAIT_TIMEOUT_MS = 5000;
+    private static final long DEFAULT_WAIT_TIMEOUT_US = 5000000;
+
+    private static final int COLOR_RED =  makeColor(100, 0, 0);
+    private static final int COLOR_BLUE =  makeColor(0, 100, 0);
+    private static final int COLOR_GREEN =  makeColor(0, 0, 100);
+    private static final int COLOR_GREY =  makeColor(100, 100, 100);
+
+    private static final int BITRATE_1080p = 20000000;
+    private static final int BITRATE_720p = 14000000;
+    private static final int BITRATE_800x480 = 14000000;
+    private static final int IFRAME_INTERVAL = 10;
+
+    private static final int MAX_NUM_WINDOWS = 3;
+
+    private static Handler sHandlerForRunOnMain = new Handler(Looper.getMainLooper());
+
+    private Surface mEncodingSurface;
+    private OutputSurface mDecodingSurface;
+    private volatile boolean mCodecConfigReceived = false;
+    private volatile boolean mCodecBufferReceived = false;
+    private EncodingHelper mEncodingHelper;
+    private MediaCodec mDecoder;
+    private final ByteBuffer mPixelBuf = ByteBuffer.allocateDirect(4);
+    private volatile boolean mIsQuitting = false;
+    private Throwable mTestException;
+    private VirtualDisplayPresentation mLocalPresentation;
+    private RemoteVirtualDisplayPresentation mRemotePresentation;
+    private ByteBuffer[] mDecoderInputBuffers;
+
+    /** event listener for test without verifying output */
+    private EncoderEventListener mEncoderEventListener = new EncoderEventListener() {
+        @Override
+        public void onCodecConfig(ByteBuffer data, MediaCodec.BufferInfo info) {
+            mCodecConfigReceived = true;
+        }
+        @Override
+        public void onBufferReady(ByteBuffer data, MediaCodec.BufferInfo info) {
+            mCodecBufferReceived = true;
+        }
+        @Override
+        public void onError(String errorMessage) {
+            fail(errorMessage);
+        }
+    };
+
+    /* TEST_COLORS static initialization; need ARGB for ColorDrawable */
+    private static int makeColor(int red, int green, int blue) {
+        return 0xff << 24 | (red & 0xff) << 16 | (green & 0xff) << 8 | (blue & 0xff);
+    }
+
+    public void testVirtualDisplayRecycles() throws Exception {
+        doTestVirtualDisplayRecycles(3);
+    }
+
+    public void testRendering800x480Locally() throws Throwable {
+        Log.i(TAG, "testRendering800x480Locally");
+        Pair<Integer, Integer> maxRes = checkMaxConcurrentEncodingDecodingResolution();
+        if (maxRes.first >= 800 && maxRes.second >= 480) {
+            runTestRenderingInSeparateThread(800, 480, false, false);
+        } else {
+            Log.w(TAG, "This H/W does not support 800x480");
+        }
+    }
+
+    public void testRenderingMaxResolutionLocally() throws Throwable {
+        Log.i(TAG, "testRenderingMaxResolutionLocally");
+        Pair<Integer, Integer> maxRes = checkMaxConcurrentEncodingDecodingResolution();
+        Log.w(TAG, "Trying resolution w:" + maxRes.first + " h:" + maxRes.second);
+        runTestRenderingInSeparateThread(maxRes.first, maxRes.second, false, false);
+    }
+
+    public void testRendering800x480Remotely() throws Throwable {
+        Log.i(TAG, "testRendering800x480Remotely");
+        Pair<Integer, Integer> maxRes = checkMaxConcurrentEncodingDecodingResolution();
+        if (maxRes.first >= 800 && maxRes.second >= 480) {
+            runTestRenderingInSeparateThread(800, 480, true, false);
+        } else {
+            Log.w(TAG, "This H/W does not support 800x480");
+        }
+    }
+
+    public void testRenderingMaxResolutionRemotely() throws Throwable {
+        Log.i(TAG, "testRenderingMaxResolutionRemotely");
+        Pair<Integer, Integer> maxRes = checkMaxConcurrentEncodingDecodingResolution();
+        Log.w(TAG, "Trying resolution w:" + maxRes.first + " h:" + maxRes.second);
+        runTestRenderingInSeparateThread(maxRes.first, maxRes.second, true, false);
+    }
+
+    public void testRendering800x480RemotelyWith3Windows() throws Throwable {
+        Log.i(TAG, "testRendering800x480RemotelyWith3Windows");
+        Pair<Integer, Integer> maxRes = checkMaxConcurrentEncodingDecodingResolution();
+        if (maxRes.first >= 800 && maxRes.second >= 480) {
+            runTestRenderingInSeparateThread(800, 480, true, true);
+        } else {
+            Log.w(TAG, "This H/W does not support 800x480");
+        }
+    }
+
+    public void testRendering800x480LocallyWith3Windows() throws Throwable {
+        Log.i(TAG, "testRendering800x480LocallyWith3Windows");
+        Pair<Integer, Integer> maxRes = checkMaxConcurrentEncodingDecodingResolution();
+        if (maxRes.first >= 800 && maxRes.second >= 480) {
+            runTestRenderingInSeparateThread(800, 480, false, true);
+        } else {
+            Log.w(TAG, "This H/W does not support 800x480");
+        }
+    }
+
+    /**
+     * Run rendering test in a separate thread. This is necessary as {@link OutputSurface} requires
+     * constructing it in a non-test thread.
+     * @param w
+     * @param h
+     * @throws Exception
+     */
+    private void runTestRenderingInSeparateThread(final int w, final int h,
+            final boolean runRemotely, final boolean multipleWindows) throws Throwable {
+        mTestException = null;
+        Thread renderingThread = new Thread(new Runnable() {
+            public void run() {
+                try {
+                    doTestRenderingOutput(w, h, runRemotely, multipleWindows);
+                } catch (Throwable t) {
+                    t.printStackTrace();
+                    mTestException = t;
+                }
+            }
+        });
+        renderingThread.start();
+        renderingThread.join(22000);
+        assertTrue(!renderingThread.isAlive());
+        if (mTestException != null) {
+            throw mTestException;
+        }
+    }
+
+    private void doTestRenderingOutput(int w, int h, boolean runRemotely, boolean multipleWindows)
+            throws Throwable {
+        if (DBG) {
+            Log.i(TAG, "doTestRenderingOutput for w:" + w + " h:" + h);
+        }
+        try {
+            mIsQuitting = false;
+            mDecoder = MediaCodec.createDecoderByType(MIME_TYPE);
+            MediaFormat decoderFormat = MediaFormat.createVideoFormat(MIME_TYPE, w, h);
+            mDecodingSurface = new OutputSurface(w, h);
+            mDecoder.configure(decoderFormat, mDecodingSurface.getSurface(), null, 0);
+            mDecoder.start();
+            mDecoderInputBuffers = mDecoder.getInputBuffers();
+
+            mEncodingHelper = new EncodingHelper();
+            mEncodingSurface = mEncodingHelper.startEncoding(w, h,
+                    new EncoderEventListener() {
+                @Override
+                public void onCodecConfig(ByteBuffer data, BufferInfo info) {
+                    if (DBG) {
+                        Log.i(TAG, "onCodecConfig l:" + info.size);
+                    }
+                    handleEncodedData(data, info);
+                }
+
+                @Override
+                public void onBufferReady(ByteBuffer data, BufferInfo info) {
+                    if (DBG) {
+                        Log.i(TAG, "onBufferReady l:" + info.size);
+                    }
+                    handleEncodedData(data, info);
+                }
+
+                @Override
+                public void onError(String errorMessage) {
+                    fail(errorMessage);
+                }
+
+                private void handleEncodedData(ByteBuffer data, BufferInfo info) {
+                    if (mIsQuitting) {
+                        if (DBG) {
+                            Log.i(TAG, "ignore data as test is quitting");
+                        }
+                        return;
+                    }
+                    int inputBufferIndex = mDecoder.dequeueInputBuffer(DEFAULT_WAIT_TIMEOUT_US);
+                    if (inputBufferIndex < 0) {
+                        if (DBG) {
+                            Log.i(TAG, "dequeueInputBuffer returned:" + inputBufferIndex);
+                        }
+                        return;
+                    }
+                    assertTrue(inputBufferIndex >= 0);
+                    ByteBuffer inputBuffer = mDecoderInputBuffers[inputBufferIndex];
+                    inputBuffer.clear();
+                    inputBuffer.put(data);
+                    mDecoder.queueInputBuffer(inputBufferIndex, 0, info.size,
+                            info.presentationTimeUs, info.flags);
+                }
+            });
+            GlCompositor compositor = new GlCompositor();
+            if (DBG) {
+                Log.i(TAG, "start composition");
+            }
+            compositor.startComposition(mEncodingSurface, w, h, multipleWindows ? 3 : 1);
+
+            if (DBG) {
+                Log.i(TAG, "create display");
+            }
+
+            Renderer renderer = null;
+            if (runRemotely) {
+                mRemotePresentation = new RemoteVirtualDisplayPresentation(getContext(),
+                        compositor.getWindowSurface(multipleWindows? 1 : 0), w, h);
+                mRemotePresentation.connect();
+                mRemotePresentation.start();
+                renderer = mRemotePresentation;
+            } else {
+                mLocalPresentation = new VirtualDisplayPresentation(getContext(),
+                        compositor.getWindowSurface(multipleWindows? 1 : 0), w, h);
+                mLocalPresentation.createVirtualDisplay();
+                mLocalPresentation.createPresentation();
+                renderer = mLocalPresentation;
+            }
+
+            if (DBG) {
+                Log.i(TAG, "start rendering and check");
+            }
+            renderColorAndCheckResult(renderer, w, h, COLOR_RED);
+            renderColorAndCheckResult(renderer, w, h, COLOR_BLUE);
+            renderColorAndCheckResult(renderer, w, h, COLOR_GREEN);
+            renderColorAndCheckResult(renderer, w, h, COLOR_GREY);
+
+            mIsQuitting = true;
+            if (runRemotely) {
+                mRemotePresentation.disconnect();
+            } else {
+                mLocalPresentation.dismissPresentation();
+                mLocalPresentation.destroyVirtualDisplay();
+            }
+
+            compositor.stopComposition();
+        } finally {
+            if (mEncodingHelper != null) {
+                mEncodingHelper.stopEncoding();
+                mEncodingHelper = null;
+            }
+            if (mDecoder != null) {
+                mDecoder.stop();
+                mDecoder.release();
+                mDecoder = null;
+            }
+            if (mDecodingSurface != null) {
+                mDecodingSurface.release();
+                mDecodingSurface = null;
+            }
+        }
+    }
+
+    private static final int NUM_MAX_RETRY = 120;
+    private static final int IMAGE_WAIT_TIMEOUT_MS = 1000;
+
+    private void renderColorAndCheckResult(Renderer renderer, int w, int h,
+            int color) throws Exception {
+        BufferInfo info = new BufferInfo();
+        for (int i = 0; i < NUM_MAX_RETRY; i++) {
+            renderer.doRendering(color);
+            int bufferIndex = mDecoder.dequeueOutputBuffer(info,  DEFAULT_WAIT_TIMEOUT_US);
+            if (DBG) {
+                Log.i(TAG, "decoder dequeueOutputBuffer returned " + bufferIndex);
+            }
+            if (bufferIndex < 0) {
+                continue;
+            }
+            mDecoder.releaseOutputBuffer(bufferIndex, true);
+            if (mDecodingSurface.checkForNewImage(IMAGE_WAIT_TIMEOUT_MS)) {
+                mDecodingSurface.drawImage();
+                if (checkSurfaceFrameColor(w, h, color)) {
+                    Log.i(TAG, "color " + Integer.toHexString(color) + " matched");
+                    return;
+                }
+            } else if(DBG) {
+                Log.i(TAG, "no rendering yet");
+            }
+        }
+        fail("Color did not match");
+    }
+
+    private boolean checkSurfaceFrameColor(int w, int h, int color) {
+        // Read a pixel from the center of the surface.  Might want to read from multiple points
+        // and average them together.
+        int x = w / 2;
+        int y = h / 2;
+        GLES20.glReadPixels(x, y, 1, 1, GLES20.GL_RGBA, GLES20.GL_UNSIGNED_BYTE, mPixelBuf);
+        int r = mPixelBuf.get(0) & 0xff;
+        int g = mPixelBuf.get(1) & 0xff;
+        int b = mPixelBuf.get(2) & 0xff;
+
+        int redExpected = (color >> 16) & 0xff;
+        int greenExpected = (color >> 8) & 0xff;
+        int blueExpected = color & 0xff;
+        if (approxEquals(redExpected, r) && approxEquals(greenExpected, g)
+                && approxEquals(blueExpected, b)) {
+            return true;
+        }
+        Log.i(TAG, "expected 0x" + Integer.toHexString(color) + " got 0x"
+                + Integer.toHexString(makeColor(r, g, b)));
+        return false;
+    }
+
+    /**
+     * Determines if two color values are approximately equal.
+     */
+    private static boolean approxEquals(int expected, int actual) {
+        final int MAX_DELTA = 4;
+        return Math.abs(expected - actual) <= MAX_DELTA;
+    }
+
+    private static final int NUM_CODEC_CREATION = 5;
+    private static final int NUM_DISPLAY_CREATION = 10;
+    private static final int NUM_RENDERING = 10;
+    private void doTestVirtualDisplayRecycles(int numDisplays) throws Exception {
+        CodecInfo codecInfo = getAvcSupportedFormatInfo();
+        VirtualDisplayPresentation[] virtualDisplays = new VirtualDisplayPresentation[numDisplays];
+        for (int i = 0; i < NUM_CODEC_CREATION; i++) {
+            mCodecConfigReceived = false;
+            mCodecBufferReceived = false;
+            if (DBG) {
+                Log.i(TAG, "start encoding");
+            }
+            EncodingHelper encodingHelper = new EncodingHelper();
+            mEncodingSurface = encodingHelper.startEncoding(codecInfo.mMaxW, codecInfo.mMaxH,
+                    mEncoderEventListener);
+            GlCompositor compositor = new GlCompositor();
+            if (DBG) {
+                Log.i(TAG, "start composition");
+            }
+            compositor.startComposition(mEncodingSurface, codecInfo.mMaxW, codecInfo.mMaxH,
+                    numDisplays);
+            for (int j = 0; j < NUM_DISPLAY_CREATION; j++) {
+                if (DBG) {
+                    Log.i(TAG, "create display");
+                }
+                for (int k = 0; k < numDisplays; k++) {
+                    virtualDisplays[k] =
+                        new VirtualDisplayPresentation(getContext(),
+                                compositor.getWindowSurface(k),
+                                codecInfo.mMaxW/numDisplays, codecInfo.mMaxH);
+                    virtualDisplays[k].createVirtualDisplay();
+                    virtualDisplays[k].createPresentation();
+                }
+                if (DBG) {
+                    Log.i(TAG, "start rendering");
+                }
+                for (int k = 0; k < NUM_RENDERING; k++) {
+                    for (int l = 0; l < numDisplays; l++) {
+                        virtualDisplays[l].doRendering(COLOR_RED);
+                    }
+                    // do not care how many frames are actually rendered.
+                    Thread.sleep(1);
+                }
+                for (int k = 0; k < numDisplays; k++) {
+                    virtualDisplays[k].dismissPresentation();
+                    virtualDisplays[k].destroyVirtualDisplay();
+                }
+                compositor.recreateWindows();
+            }
+            if (DBG) {
+                Log.i(TAG, "stop composition");
+            }
+            compositor.stopComposition();
+            if (DBG) {
+                Log.i(TAG, "stop encoding");
+            }
+            encodingHelper.stopEncoding();
+            assertTrue(mCodecConfigReceived);
+            assertTrue(mCodecBufferReceived);
+        }
+    }
+
+    interface EncoderEventListener {
+        public void onCodecConfig(ByteBuffer data, MediaCodec.BufferInfo info);
+        public void onBufferReady(ByteBuffer data, MediaCodec.BufferInfo info);
+        public void onError(String errorMessage);
+    }
+
+    private class EncodingHelper {
+        private MediaCodec mEncoder;
+        private volatile boolean mStopEncoding = false;
+        private EncoderEventListener mEventListener;
+        private int mW;
+        private int mH;
+        private Thread mEncodingThread;
+        private Surface mEncodingSurface;
+        private Semaphore mInitCompleted = new Semaphore(0);
+
+        Surface startEncoding(int w, int h, EncoderEventListener eventListener) {
+            mStopEncoding = false;
+            mW = w;
+            mH = h;
+            mEventListener = eventListener;
+            mEncodingThread = new Thread(new Runnable() {
+                @Override
+                public void run() {
+                    try {
+                        doEncoding();
+                    } catch (Exception e) {
+                        e.printStackTrace();
+                        mEventListener.onError(e.toString());
+                    }
+                }
+            });
+            mEncodingThread.start();
+            try {
+                if (DBG) {
+                    Log.i(TAG, "wait for encoder init");
+                }
+                mInitCompleted.acquire();
+                if (DBG) {
+                    Log.i(TAG, "wait for encoder done");
+                }
+            } catch (InterruptedException e) {
+                fail("should not happen");
+            }
+            return mEncodingSurface;
+        }
+
+        void stopEncoding() {
+            try {
+                mStopEncoding = true;
+                mEncodingThread.join();
+            } catch(InterruptedException e) {
+                // just ignore
+            } finally {
+                mEncodingThread = null;
+            }
+        }
+
+        private void doEncoding() throws Exception {
+            final int TIMEOUT_USEC_NORMAL = 1000000;
+            MediaFormat format = MediaFormat.createVideoFormat(MIME_TYPE, mW, mH);
+            format.setInteger(MediaFormat.KEY_COLOR_FORMAT,
+                    MediaCodecInfo.CodecCapabilities.COLOR_FormatSurface);
+            int bitRate = 10000000;
+            if (mW == 1920 && mH == 1080) {
+                bitRate = BITRATE_1080p;
+            } else if (mW == 1280 && mH == 720) {
+                bitRate = BITRATE_720p;
+            } else if (mW == 800 && mH == 480) {
+                bitRate = BITRATE_800x480;
+            }
+            format.setInteger(MediaFormat.KEY_BIT_RATE, bitRate);
+            format.setInteger(MediaFormat.KEY_FRAME_RATE, 30);
+            format.setInteger(MediaFormat.KEY_I_FRAME_INTERVAL, IFRAME_INTERVAL);
+            mEncoder = MediaCodec.createEncoderByType(MIME_TYPE);
+            mEncoder.configure(format, null, null, MediaCodec.CONFIGURE_FLAG_ENCODE);
+            mEncodingSurface = mEncoder.createInputSurface();
+            mEncoder.start();
+            mInitCompleted.release();
+            if (DBG) {
+                Log.i(TAG, "starting encoder");
+            }
+            try {
+                ByteBuffer[] encoderOutputBuffers = mEncoder.getOutputBuffers();
+                MediaCodec.BufferInfo info = new MediaCodec.BufferInfo();
+                while (!mStopEncoding) {
+                    int index = mEncoder.dequeueOutputBuffer(info, TIMEOUT_USEC_NORMAL);
+                    if (DBG) {
+                        Log.i(TAG, "dequeOutputBuffer returned " + index);
+                    }
+                    if (index >= 0) {
+                        if ((info.flags & MediaCodec.BUFFER_FLAG_CODEC_CONFIG) != 0) {
+                            Log.i(TAG, "codec config data");
+                            ByteBuffer encodedData = encoderOutputBuffers[index];
+                            encodedData.position(info.offset);
+                            encodedData.limit(info.offset + info.size);
+                            mEventListener.onCodecConfig(encodedData, info);
+                            mEncoder.releaseOutputBuffer(index, false);
+                        } else if ((info.flags & MediaCodec.BUFFER_FLAG_END_OF_STREAM) != 0) {
+                            Log.i(TAG, "EOS, stopping encoding");
+                            break;
+                        } else {
+                            ByteBuffer encodedData = encoderOutputBuffers[index];
+                            encodedData.position(info.offset);
+                            encodedData.limit(info.offset + info.size);
+                            mEventListener.onBufferReady(encodedData, info);
+                            mEncoder.releaseOutputBuffer(index, false);
+                        }
+                    } else if (index == MediaCodec.INFO_OUTPUT_BUFFERS_CHANGED){
+                        Log.i(TAG, "output buffer changed");
+                        encoderOutputBuffers = mEncoder.getOutputBuffers();
+                    }
+                }
+            } catch (Exception e) {
+                e.printStackTrace();
+                throw e;
+            } finally {
+                mEncoder.stop();
+                mEncoder.release();
+                mEncoder = null;
+                mEncodingSurface.release();
+                mEncodingSurface = null;
+            }
+        }
+    }
+
+    /**
+     * Handles composition of multiple SurfaceTexture into a single Surface
+     */
+    private class GlCompositor implements SurfaceTexture.OnFrameAvailableListener {
+        private Surface mSurface;
+        private int mWidth;
+        private int mHeight;
+        private volatile int mNumWindows;
+        private GlWindow mTopWindow;
+        private Thread mCompositionThread;
+        private Semaphore mStartCompletionSemaphore;
+        private Semaphore mRecreationCompletionSemaphore;
+        private Looper mLooper;
+        private Handler mHandler;
+        private InputSurface mEglHelper;
+        private int mGlProgramId = 0;
+        private int mGluMVPMatrixHandle;
+        private int mGluSTMatrixHandle;
+        private int mGlaPositionHandle;
+        private int mGlaTextureHandle;
+        private float[] mMVPMatrix = new float[16];
+        private TopWindowVirtualDisplayPresentation mTopPresentation;
+
+        private static final String VERTEX_SHADER =
+                "uniform mat4 uMVPMatrix;\n" +
+                "uniform mat4 uSTMatrix;\n" +
+                "attribute vec4 aPosition;\n" +
+                "attribute vec4 aTextureCoord;\n" +
+                "varying vec2 vTextureCoord;\n" +
+                "void main() {\n" +
+                "  gl_Position = uMVPMatrix * aPosition;\n" +
+                "  vTextureCoord = (uSTMatrix * aTextureCoord).xy;\n" +
+                "}\n";
+
+        private static final String FRAGMENT_SHADER =
+                "#extension GL_OES_EGL_image_external : require\n" +
+                "precision mediump float;\n" +
+                "varying vec2 vTextureCoord;\n" +
+                "uniform samplerExternalOES sTexture;\n" +
+                "void main() {\n" +
+                "  gl_FragColor = texture2D(sTexture, vTextureCoord);\n" +
+                "}\n";
+
+        void startComposition(Surface surface, int w, int h, int numWindows) throws Exception {
+            mSurface = surface;
+            mWidth = w;
+            mHeight = h;
+            mNumWindows = numWindows;
+            mCompositionThread = new Thread(new CompositionRunnable());
+            mStartCompletionSemaphore = new Semaphore(0);
+            mCompositionThread.start();
+            waitForStartCompletion();
+        }
+
+        void stopComposition() {
+            try {
+                if (mLooper != null) {
+                    mLooper.quit();
+                    mCompositionThread.join();
+                }
+            } catch (InterruptedException e) {
+                // don't care
+            }
+            cleanupGl();
+            mCompositionThread = null;
+            mSurface = null;
+            mStartCompletionSemaphore = null;
+        }
+
+        Surface getWindowSurface(int windowIndex) {
+            return mTopPresentation.getSurface(windowIndex);
+        }
+
+        void recreateWindows() throws Exception {
+            mRecreationCompletionSemaphore = new Semaphore(0);
+            Message msg = mHandler.obtainMessage(CompositionHandler.DO_RECREATE_WINDOWS);
+            mHandler.sendMessage(msg);
+            if(!mRecreationCompletionSemaphore.tryAcquire(DEFAULT_WAIT_TIMEOUT_MS,
+                    TimeUnit.MILLISECONDS)) {
+                fail("recreation timeout");
+            }
+            mTopPresentation.waitForSurfaceReady(DEFAULT_WAIT_TIMEOUT_MS);
+        }
+
+        @Override
+        public void onFrameAvailable(SurfaceTexture surface) {
+            if (DBG) {
+                Log.i(TAG, "onFrameAvailable " + surface);
+            }
+            GlWindow w = mTopWindow;
+            if (w != null) {
+                w.markTextureUpdated();
+                requestUpdate();
+            } else {
+                Log.w(TAG, "top window gone");
+            }
+        }
+
+        private void requestUpdate() {
+            Thread compositionThread = mCompositionThread;
+            if (compositionThread == null || !compositionThread.isAlive()) {
+                return;
+            }
+            Message msg = mHandler.obtainMessage(CompositionHandler.DO_RENDERING);
+            mHandler.sendMessage(msg);
+        }
+
+        private int loadShader(int shaderType, String source) throws GlException {
+            int shader = GLES20.glCreateShader(shaderType);
+            checkGlError("glCreateShader type=" + shaderType);
+            GLES20.glShaderSource(shader, source);
+            GLES20.glCompileShader(shader);
+            int[] compiled = new int[1];
+            GLES20.glGetShaderiv(shader, GLES20.GL_COMPILE_STATUS, compiled, 0);
+            if (compiled[0] == 0) {
+                Log.e(TAG, "Could not compile shader " + shaderType + ":");
+                Log.e(TAG, " " + GLES20.glGetShaderInfoLog(shader));
+                GLES20.glDeleteShader(shader);
+                shader = 0;
+            }
+            return shader;
+        }
+
+        private int createProgram(String vertexSource, String fragmentSource) throws GlException {
+            int vertexShader = loadShader(GLES20.GL_VERTEX_SHADER, vertexSource);
+            if (vertexShader == 0) {
+                return 0;
+            }
+            int pixelShader = loadShader(GLES20.GL_FRAGMENT_SHADER, fragmentSource);
+            if (pixelShader == 0) {
+                return 0;
+            }
+
+            int program = GLES20.glCreateProgram();
+            checkGlError("glCreateProgram");
+            if (program == 0) {
+                Log.e(TAG, "Could not create program");
+            }
+            GLES20.glAttachShader(program, vertexShader);
+            checkGlError("glAttachShader");
+            GLES20.glAttachShader(program, pixelShader);
+            checkGlError("glAttachShader");
+            GLES20.glLinkProgram(program);
+            int[] linkStatus = new int[1];
+            GLES20.glGetProgramiv(program, GLES20.GL_LINK_STATUS, linkStatus, 0);
+            if (linkStatus[0] != GLES20.GL_TRUE) {
+                Log.e(TAG, "Could not link program: ");
+                Log.e(TAG, GLES20.glGetProgramInfoLog(program));
+                GLES20.glDeleteProgram(program);
+                program = 0;
+            }
+            return program;
+        }
+
+        private void initGl() throws GlException {
+            mEglHelper = new InputSurface(mSurface);
+            mEglHelper.makeCurrent();
+            mGlProgramId = createProgram(VERTEX_SHADER, FRAGMENT_SHADER);
+            mGlaPositionHandle = GLES20.glGetAttribLocation(mGlProgramId, "aPosition");
+            checkGlError("glGetAttribLocation aPosition");
+            if (mGlaPositionHandle == -1) {
+                throw new RuntimeException("Could not get attrib location for aPosition");
+            }
+            mGlaTextureHandle = GLES20.glGetAttribLocation(mGlProgramId, "aTextureCoord");
+            checkGlError("glGetAttribLocation aTextureCoord");
+            if (mGlaTextureHandle == -1) {
+                throw new RuntimeException("Could not get attrib location for aTextureCoord");
+            }
+            mGluMVPMatrixHandle = GLES20.glGetUniformLocation(mGlProgramId, "uMVPMatrix");
+            checkGlError("glGetUniformLocation uMVPMatrix");
+            if (mGluMVPMatrixHandle == -1) {
+                throw new RuntimeException("Could not get attrib location for uMVPMatrix");
+            }
+            mGluSTMatrixHandle = GLES20.glGetUniformLocation(mGlProgramId, "uSTMatrix");
+            checkGlError("glGetUniformLocation uSTMatrix");
+            if (mGluSTMatrixHandle == -1) {
+                throw new RuntimeException("Could not get attrib location for uSTMatrix");
+            }
+            Matrix.setIdentityM(mMVPMatrix, 0);
+            Log.i(TAG, "initGl w:" + mWidth + " h:" + mHeight);
+            GLES20.glViewport(0, 0, mWidth, mHeight);
+            float[] vMatrix = new float[16];
+            float[] projMatrix = new float[16];
+            // max window is from (0,0) to (mWidth - 1, mHeight - 1)
+            float wMid = mWidth / 2f;
+            float hMid = mHeight / 2f;
+            // look from positive z to hide windows in lower z
+            Matrix.setLookAtM(vMatrix, 0, wMid, hMid, 5f, wMid, hMid, 0f, 0f, 1.0f, 0.0f);
+            Matrix.orthoM(projMatrix, 0, -wMid, wMid, -hMid, hMid, 1, 10);
+            Matrix.multiplyMM(mMVPMatrix, 0, projMatrix, 0, vMatrix, 0);
+            createWindows();
+
+        }
+
+        private void createWindows() throws GlException {
+            mTopWindow = new GlWindow(this, 0, 0, mWidth, mHeight);
+            mTopWindow.init();
+            mTopPresentation = new TopWindowVirtualDisplayPresentation(mContext,
+                    mTopWindow.getSurface(), mWidth, mHeight, mNumWindows);
+            mTopPresentation.createVirtualDisplay();
+            mTopPresentation.createPresentation();
+            ((TopWindowPresentation) mTopPresentation.getPresentation()).populateWindows();
+        }
+
+        private void cleanupGl() {
+            if (mTopPresentation != null) {
+                mTopPresentation.dismissPresentation();
+                mTopPresentation.destroyVirtualDisplay();
+            }
+            if (mTopWindow != null) {
+                mTopWindow.cleanup();
+            }
+            if (mEglHelper != null) {
+                mEglHelper.release();
+            }
+        }
+
+        private void doGlRendering() throws GlException {
+            if (DBG) {
+                Log.i(TAG, "doGlRendering");
+            }
+            mTopWindow.updateTexImageIfNecessary();
+            GLES20.glClearColor(0.0f, 1.0f, 0.0f, 1.0f);
+            GLES20.glClear(GLES20.GL_DEPTH_BUFFER_BIT | GLES20.GL_COLOR_BUFFER_BIT);
+
+            GLES20.glUseProgram(mGlProgramId);
+            GLES20.glUniformMatrix4fv(mGluMVPMatrixHandle, 1, false, mMVPMatrix, 0);
+            mTopWindow.onDraw(mGluSTMatrixHandle, mGlaPositionHandle, mGlaTextureHandle);
+            checkGlError("window draw");
+            mEglHelper.swapBuffers();
+        }
+
+        private void doRecreateWindows() throws GlException {
+            mTopPresentation.dismissPresentation();
+            mTopPresentation.destroyVirtualDisplay();
+            mTopWindow.cleanup();
+            createWindows();
+            mRecreationCompletionSemaphore.release();
+        }
+
+        private void waitForStartCompletion() throws Exception {
+            if (!mStartCompletionSemaphore.tryAcquire(DEFAULT_WAIT_TIMEOUT_MS,
+                    TimeUnit.MILLISECONDS)) {
+                fail("start timeout");
+            }
+            mStartCompletionSemaphore = null;
+            mTopPresentation.waitForSurfaceReady(DEFAULT_WAIT_TIMEOUT_MS);
+        }
+
+        private class CompositionRunnable implements Runnable {
+            @Override
+            public void run() {
+                try {
+                    Looper.prepare();
+                    mLooper = Looper.myLooper();
+                    mHandler = new CompositionHandler();
+                    initGl();
+                    // init done
+                    mStartCompletionSemaphore.release();
+                    Looper.loop();
+                } catch (GlException e) {
+                    e.printStackTrace();
+                    fail("got gl exception");
+                } finally {
+                    cleanupGl();
+                    mHandler = null;
+                    mLooper = null;
+                }
+            }
+        }
+
+        private class CompositionHandler extends Handler {
+            private static final int DO_RENDERING = 1;
+            private static final int DO_RECREATE_WINDOWS = 2;
+
+            @Override
+            public void handleMessage(Message msg) {
+                try {
+                    switch(msg.what) {
+                        case DO_RENDERING: {
+                            doGlRendering();
+                        } break;
+                        case DO_RECREATE_WINDOWS: {
+                            doRecreateWindows();
+                        } break;
+                    }
+                } catch (GlException e) {
+                    //ignore as this can happen during tearing down
+                }
+            }
+        }
+
+        private class GlWindow {
+            private static final int FLOAT_SIZE_BYTES = 4;
+            private static final int TRIANGLE_VERTICES_DATA_STRIDE_BYTES = 5 * FLOAT_SIZE_BYTES;
+            private static final int TRIANGLE_VERTICES_DATA_POS_OFFSET = 0;
+            private static final int TRIANGLE_VERTICES_DATA_UV_OFFSET = 3;
+            private int mBlX;
+            private int mBlY;
+            private int mWidth;
+            private int mHeight;
+            private int mTextureId = 0; // 0 is invalid
+            private volatile SurfaceTexture mSurfaceTexture;
+            private volatile Surface mSurface;
+            private FloatBuffer mVerticesData;
+            private float[] mSTMatrix = new float[16];
+            private AtomicInteger mNumTextureUpdated = new AtomicInteger(0);
+            private GlCompositor mCompositor;
+
+            /**
+             * @param blX X coordinate of bottom-left point of window
+             * @param blY Y coordinate of bottom-left point of window
+             * @param w window width
+             * @param h window height
+             */
+            public GlWindow(GlCompositor compositor, int blX, int blY, int w, int h) {
+                mCompositor = compositor;
+                mBlX = blX;
+                mBlY = blY;
+                mWidth = w;
+                mHeight = h;
+                int trX = blX + w;
+                int trY = blY + h;
+                float[] vertices = new float[] {
+                        // x, y, z, u, v
+                        mBlX, mBlY, 0, 0, 0,
+                        trX, mBlY, 0, 1, 0,
+                        mBlX, trY, 0, 0, 1,
+                        trX, trY, 0, 1, 1
+                };
+                Log.i(TAG, "create window " + this + " blX:" + mBlX + " blY:" + mBlY + " trX:" +
+                        trX + " trY:" + trY);
+                mVerticesData = ByteBuffer.allocateDirect(
+                        vertices.length * FLOAT_SIZE_BYTES)
+                                .order(ByteOrder.nativeOrder()).asFloatBuffer();
+                mVerticesData.put(vertices).position(0);
+            }
+
+            /**
+             * initialize the window for composition. counter-part is cleanup()
+             * @throws GlException
+             */
+            public void init() throws GlException {
+                int[] textures = new int[1];
+                GLES20.glGenTextures(1, textures, 0);
+
+                mTextureId = textures[0];
+                GLES20.glBindTexture(GLES11Ext.GL_TEXTURE_EXTERNAL_OES, mTextureId);
+                checkGlError("glBindTexture mTextureID");
+
+                GLES20.glTexParameterf(GLES11Ext.GL_TEXTURE_EXTERNAL_OES,
+                        GLES20.GL_TEXTURE_MIN_FILTER, GLES20.GL_NEAREST);
+                GLES20.glTexParameterf(GLES11Ext.GL_TEXTURE_EXTERNAL_OES,
+                        GLES20.GL_TEXTURE_MAG_FILTER, GLES20.GL_NEAREST);
+                GLES20.glTexParameteri(GLES11Ext.GL_TEXTURE_EXTERNAL_OES, GLES20.GL_TEXTURE_WRAP_S,
+                        GLES20.GL_CLAMP_TO_EDGE);
+                GLES20.glTexParameteri(GLES11Ext.GL_TEXTURE_EXTERNAL_OES, GLES20.GL_TEXTURE_WRAP_T,
+                        GLES20.GL_CLAMP_TO_EDGE);
+                checkGlError("glTexParameter");
+                mSurfaceTexture = new SurfaceTexture(mTextureId);
+                mSurfaceTexture.setDefaultBufferSize(mWidth, mHeight);
+                mSurface = new Surface(mSurfaceTexture);
+                mSurfaceTexture.setOnFrameAvailableListener(mCompositor);
+            }
+
+            public void cleanup() {
+                mNumTextureUpdated.set(0);
+                mVerticesData.clear();
+                if (mTextureId != 0) {
+                    int[] textures = new int[] {
+                            mTextureId
+                    };
+                    GLES20.glDeleteTextures(1, textures, 0);
+                }
+                GLES20.glFinish();
+                if (mSurface != null) {
+                    mSurface.release();
+                    mSurface = null;
+                }
+                if (mSurfaceTexture != null) {
+                    mSurfaceTexture.release();
+                    mSurfaceTexture = null;
+                }
+            }
+
+            /**
+             * make texture as updated so that it can be updated in the next rendering.
+             */
+            public void markTextureUpdated() {
+                mNumTextureUpdated.incrementAndGet();
+            }
+
+            /**
+             * update texture for rendering if it is updated.
+             */
+            public void updateTexImageIfNecessary() {
+                int numTextureUpdated = mNumTextureUpdated.getAndDecrement();
+                if (numTextureUpdated > 0) {
+                    if (DBG) {
+                        Log.i(TAG, "updateTexImageIfNecessary " + this);
+                    }
+                    mSurfaceTexture.updateTexImage();
+                    mSurfaceTexture.getTransformMatrix(mSTMatrix);
+                }
+                if (numTextureUpdated < 0) {
+                    fail("should not happen");
+                }
+            }
+
+            /**
+             * draw the window. It will not be drawn at all if the window is not visible.
+             * @param uSTMatrixHandle shader handler for the STMatrix for texture coordinates
+             * mapping
+             * @param aPositionHandle shader handle for vertex position.
+             * @param aTextureHandle shader handle for texture
+             */
+            public void onDraw(int uSTMatrixHandle, int aPositionHandle, int aTextureHandle) {
+                GLES20.glActiveTexture(GLES20.GL_TEXTURE0);
+                GLES20.glBindTexture(GLES11Ext.GL_TEXTURE_EXTERNAL_OES, mTextureId);
+                mVerticesData.position(TRIANGLE_VERTICES_DATA_POS_OFFSET);
+                GLES20.glVertexAttribPointer(aPositionHandle, 3, GLES20.GL_FLOAT, false,
+                    TRIANGLE_VERTICES_DATA_STRIDE_BYTES, mVerticesData);
+                GLES20.glEnableVertexAttribArray(aPositionHandle);
+
+                mVerticesData.position(TRIANGLE_VERTICES_DATA_UV_OFFSET);
+                GLES20.glVertexAttribPointer(aTextureHandle, 2, GLES20.GL_FLOAT, false,
+                    TRIANGLE_VERTICES_DATA_STRIDE_BYTES, mVerticesData);
+                GLES20.glEnableVertexAttribArray(aTextureHandle);
+                GLES20.glUniformMatrix4fv(uSTMatrixHandle, 1, false, mSTMatrix, 0);
+                GLES20.glDrawArrays(GLES20.GL_TRIANGLE_STRIP, 0, 4);
+            }
+
+            public SurfaceTexture getSurfaceTexture() {
+                return mSurfaceTexture;
+            }
+
+            public Surface getSurface() {
+                return mSurface;
+            }
+        }
+    }
+
+    static void checkGlError(String op) throws GlException {
+        int error;
+        while ((error = GLES20.glGetError()) != GLES20.GL_NO_ERROR) {
+            Log.e(TAG, op + ": glError " + error);
+            throw new GlException(op + ": glError " + error);
+        }
+    }
+
+    public static class GlException extends Exception {
+        public GlException(String msg) {
+            super(msg);
+        }
+    }
+
+    private interface Renderer {
+        void doRendering(final int color) throws Exception;
+    }
+
+    private static class VirtualDisplayPresentation implements Renderer {
+        protected final Context mContext;
+        protected final Surface mSurface;
+        protected final int mWidth;
+        protected final int mHeight;
+        protected VirtualDisplay mVirtualDisplay;
+        protected TestPresentationBase mPresentation;
+        private final DisplayManager mDisplayManager;
+
+        VirtualDisplayPresentation(Context context, Surface surface, int w, int h) {
+            mContext = context;
+            mSurface = surface;
+            mWidth = w;
+            mHeight = h;
+            mDisplayManager = (DisplayManager)context.getSystemService(Context.DISPLAY_SERVICE);
+        }
+
+        void createVirtualDisplay() {
+            runOnMainSync(new Runnable() {
+                @Override
+                public void run() {
+                    mVirtualDisplay = mDisplayManager.createVirtualDisplay(
+                            TAG, mWidth, mHeight, 200, mSurface, 0);
+                }
+            });
+        }
+
+        void destroyVirtualDisplay() {
+            runOnMainSync(new Runnable() {
+                @Override
+                public void run() {
+                    mVirtualDisplay.release();
+                }
+            });
+        }
+
+        void createPresentation() {
+            runOnMainSync(new Runnable() {
+                @Override
+                public void run() {
+                    mPresentation = doCreatePresentation();
+                    mPresentation.show();
+                }
+            });
+        }
+
+        protected TestPresentationBase doCreatePresentation() {
+            return new TestPresentation(mContext, mVirtualDisplay.getDisplay());
+        }
+
+        TestPresentationBase getPresentation() {
+            return mPresentation;
+        }
+
+        void dismissPresentation() {
+            runOnMainSync(new Runnable() {
+                @Override
+                public void run() {
+                    mPresentation.dismiss();
+                }
+            });
+        }
+
+        @Override
+        public void doRendering(final int color) throws Exception {
+            runOnMainSync(new Runnable() {
+                @Override
+                public void run() {
+                    mPresentation.doRendering(color);
+                }
+            });
+        }
+    }
+
+    private static class TestPresentationBase extends Presentation {
+
+        public TestPresentationBase(Context outerContext, Display display) {
+            super(outerContext, display);
+            getWindow().setType(WindowManager.LayoutParams.TYPE_PRIVATE_PRESENTATION);
+            getWindow().addFlags(WindowManager.LayoutParams.FLAG_LOCAL_FOCUS_MODE);
+            getWindow().addFlags(WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED);
+        }
+
+        public void doRendering(int color) {
+            // to be implemented by child
+        }
+    }
+
+    private static class TestPresentation extends TestPresentationBase {
+        private ImageView mImageView;
+
+        public TestPresentation(Context outerContext, Display display) {
+            super(outerContext, display);
+        }
+
+        @Override
+        protected void onCreate(Bundle savedInstanceState) {
+            super.onCreate(savedInstanceState);
+            mImageView = new ImageView(getContext());
+            mImageView.setImageDrawable(new ColorDrawable(COLOR_RED));
+            mImageView.setLayoutParams(new LayoutParams(
+                    LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT));
+            setContentView(mImageView);
+        }
+
+        public void doRendering(int color) {
+            mImageView.setImageDrawable(new ColorDrawable(color));
+        }
+    }
+
+    private static class TopWindowPresentation extends TestPresentationBase {
+        private FrameLayout[] mWindowsLayout = new FrameLayout[MAX_NUM_WINDOWS];
+        private CompositionTextureView[] mWindows = new CompositionTextureView[MAX_NUM_WINDOWS];
+        private final int mNumWindows;
+        private final Semaphore mWindowWaitSemaphore = new Semaphore(0);
+
+        public TopWindowPresentation(int numWindows, Context outerContext, Display display) {
+            super(outerContext, display);
+            mNumWindows = numWindows;
+        }
+
+        @Override
+        protected void onCreate(Bundle savedInstanceState) {
+            super.onCreate(savedInstanceState);
+            if (DBG) {
+                Log.i(TAG, "TopWindowPresentation onCreate, numWindows " + mNumWindows);
+            }
+            setContentView(R.layout.composition_layout);
+            mWindowsLayout[0] = (FrameLayout) findViewById(R.id.window0);
+            mWindowsLayout[1] = (FrameLayout) findViewById(R.id.window1);
+            mWindowsLayout[2] = (FrameLayout) findViewById(R.id.window2);
+        }
+
+        public void populateWindows() {
+            runOnMain(new Runnable() {
+                public void run() {
+                    for (int i = 0; i < mNumWindows; i++) {
+                        mWindows[i] = new CompositionTextureView(getContext());
+                        mWindows[i].setLayoutParams(new ViewGroup.LayoutParams(
+                                ViewGroup.LayoutParams.MATCH_PARENT,
+                                ViewGroup.LayoutParams.MATCH_PARENT));
+                        mWindowsLayout[i].setVisibility(View.VISIBLE);
+                        mWindowsLayout[i].addView(mWindows[i]);
+                        mWindows[i].startListening();
+                    }
+                    mWindowWaitSemaphore.release();
+                }
+            });
+        }
+
+        public void waitForSurfaceReady(long timeoutMs) throws Exception {
+            mWindowWaitSemaphore.tryAcquire(DEFAULT_WAIT_TIMEOUT_MS, TimeUnit.MILLISECONDS);
+            for (int i = 0; i < mNumWindows; i++) {
+                if(!mWindows[i].waitForSurfaceReady(timeoutMs)) {
+                    fail("surface wait timeout");
+                }
+            }
+        }
+
+        public Surface getSurface(int windowIndex) {
+            Surface surface = mWindows[windowIndex].getSurface();
+            assertNotNull(surface);
+            return surface;
+        }
+    }
+
+    private static class TopWindowVirtualDisplayPresentation extends VirtualDisplayPresentation {
+        private final int mNumWindows;
+
+        TopWindowVirtualDisplayPresentation(Context context, Surface surface, int w, int h,
+                int numWindows) {
+            super(context, surface, w, h);
+            assertNotNull(surface);
+            mNumWindows = numWindows;
+        }
+
+        void waitForSurfaceReady(long timeoutMs) throws Exception {
+            ((TopWindowPresentation) mPresentation).waitForSurfaceReady(timeoutMs);
+        }
+
+        Surface getSurface(int windowIndex) {
+            return ((TopWindowPresentation) mPresentation).getSurface(windowIndex);
+        }
+
+        protected TestPresentationBase doCreatePresentation() {
+            return new TopWindowPresentation(mNumWindows, mContext, mVirtualDisplay.getDisplay());
+        }
+    }
+
+    private static class RemoteVirtualDisplayPresentation implements Renderer {
+        /** argument: Surface, int w, int h, return none */
+        private static final int BINDER_CMD_START = IBinder.FIRST_CALL_TRANSACTION;
+        /** argument: int color, return none */
+        private static final int BINDER_CMD_RENDER = IBinder.FIRST_CALL_TRANSACTION + 1;
+
+        private final Context mContext;
+        private final Surface mSurface;
+        private final int mWidth;
+        private final int mHeight;
+
+        private IBinder mService;
+        private final Semaphore mConnectionWait = new Semaphore(0);
+        private final ServiceConnection mConnection = new ServiceConnection() {
+
+            public void onServiceConnected(ComponentName arg0, IBinder arg1) {
+                mService = arg1;
+                mConnectionWait.release();
+            }
+
+            public void onServiceDisconnected(ComponentName arg0) {
+                //ignore
+            }
+
+        };
+
+        RemoteVirtualDisplayPresentation(Context context, Surface surface, int w, int h) {
+            mContext = context;
+            mSurface = surface;
+            mWidth = w;
+            mHeight = h;
+        }
+
+        void connect() throws Exception {
+            Intent intent = new Intent();
+            intent.setClassName("com.android.cts.media",
+                    "android.media.cts.RemoteVirtualDisplayService");
+            mContext.bindService(intent, mConnection, Context.BIND_AUTO_CREATE);
+            if (!mConnectionWait.tryAcquire(DEFAULT_WAIT_TIMEOUT_MS, TimeUnit.MILLISECONDS)) {
+                fail("cannot bind to service");
+            }
+        }
+
+        void disconnect() {
+            mContext.unbindService(mConnection);
+        }
+
+        void start() throws Exception {
+            Parcel parcel = Parcel.obtain();
+            mSurface.writeToParcel(parcel, 0);
+            parcel.writeInt(mWidth);
+            parcel.writeInt(mHeight);
+            mService.transact(BINDER_CMD_START, parcel, null, 0);
+        }
+
+        @Override
+        public void doRendering(int color) throws Exception {
+            Parcel parcel = Parcel.obtain();
+            parcel.writeInt(color);
+            mService.transact(BINDER_CMD_RENDER, parcel, null, 0);
+        }
+    }
+
+    private static class CodecInfo {
+        public int mMaxW;
+        public int mMaxH;
+        public int mFps;
+        public int mBitRate;
+        public String mCodecName;
+    };
+
+    /**
+     * Returns the first codec capable of encoding the specified MIME type, or null if no
+     * match was found.
+     */
+    private static MediaCodecInfo selectCodec(String mimeType) {
+        int numCodecs = MediaCodecList.getCodecCount();
+        for (int i = 0; i < numCodecs; i++) {
+            MediaCodecInfo codecInfo = MediaCodecList.getCodecInfoAt(i);
+
+            if (!codecInfo.isEncoder()) {
+                continue;
+            }
+
+            String[] types = codecInfo.getSupportedTypes();
+            for (int j = 0; j < types.length; j++) {
+                if (types[j].equalsIgnoreCase(mimeType)) {
+                    return codecInfo;
+                }
+            }
+        }
+        return null;
+    }
+
+    private static CodecInfo getAvcSupportedFormatInfo() {
+        MediaCodecInfo mediaCodecInfo = selectCodec(MIME_TYPE);
+        CodecCapabilities cap = mediaCodecInfo.getCapabilitiesForType(MIME_TYPE);
+        if (cap == null) { // not supported
+            return null;
+        }
+        CodecInfo info = new CodecInfo();
+        int highestLevel = 0;
+        for (CodecProfileLevel lvl : cap.profileLevels) {
+            if (lvl.level > highestLevel) {
+                highestLevel = lvl.level;
+            }
+        }
+        int maxW = 0;
+        int maxH = 0;
+        int bitRate = 0;
+        int fps = 0; // frame rate for the max resolution
+        switch(highestLevel) {
+            // Do not support Level 1 to 2.
+            case CodecProfileLevel.AVCLevel1:
+            case CodecProfileLevel.AVCLevel11:
+            case CodecProfileLevel.AVCLevel12:
+            case CodecProfileLevel.AVCLevel13:
+            case CodecProfileLevel.AVCLevel1b:
+            case CodecProfileLevel.AVCLevel2:
+                return null;
+            case CodecProfileLevel.AVCLevel21:
+                maxW = 352;
+                maxH = 576;
+                bitRate = 4000000;
+                fps = 25;
+                break;
+            case CodecProfileLevel.AVCLevel22:
+                maxW = 720;
+                maxH = 480;
+                bitRate = 4000000;
+                fps = 15;
+                break;
+            case CodecProfileLevel.AVCLevel3:
+                maxW = 720;
+                maxH = 480;
+                bitRate = 10000000;
+                fps = 30;
+                break;
+            case CodecProfileLevel.AVCLevel31:
+                maxW = 1280;
+                maxH = 720;
+                bitRate = 14000000;
+                fps = 30;
+                break;
+            case CodecProfileLevel.AVCLevel32:
+                maxW = 1280;
+                maxH = 720;
+                bitRate = 20000000;
+                fps = 60;
+                break;
+            case CodecProfileLevel.AVCLevel4: // only try up to 1080p
+            default:
+                maxW = 1920;
+                maxH = 1080;
+                bitRate = 20000000;
+                fps = 30;
+                break;
+        }
+        info.mMaxW = maxW;
+        info.mMaxH = maxH;
+        info.mFps = fps;
+        info.mBitRate = bitRate;
+        info.mCodecName = mediaCodecInfo.getName();
+        Log.i(TAG, "AVC Level 0x" + Integer.toHexString(highestLevel) + " bit rate " + bitRate +
+                " fps " + info.mFps + " w " + maxW + " h " + maxH);
+
+        return info;
+    }
+
+    /**
+     * Check maximum concurrent encoding / decoding resolution allowed.
+     * Some H/Ws cannot support maximum resolution reported in encoder if decoder is running
+     * at the same time.
+     * Check is done for 4 different levels: 1080p, 720p, 800x480 and max of encoder if is is
+     * smaller than 800x480.
+     */
+    private Pair<Integer, Integer> checkMaxConcurrentEncodingDecodingResolution() {
+        CodecInfo codecInfo = getAvcSupportedFormatInfo();
+        int maxW = codecInfo.mMaxW;
+        int maxH = codecInfo.mMaxH;
+        if (maxW >= 1920 && maxH >= 1080) {
+            if (isConcurrentEncodingDecodingSupported(1920, 1080, BITRATE_1080p)) {
+                return new Pair<Integer, Integer>(1920, 1080);
+            }
+        }
+        if (maxW >= 1280 && maxH >= 720) {
+            if (isConcurrentEncodingDecodingSupported(1280, 720, BITRATE_720p)) {
+                return new Pair<Integer, Integer>(1280, 720);
+            }
+        }
+        if (maxW >= 800 && maxH >= 480) {
+            if (isConcurrentEncodingDecodingSupported(800, 480, BITRATE_800x480)) {
+                return new Pair<Integer, Integer>(800, 480);
+            }
+        }
+        if (!isConcurrentEncodingDecodingSupported(codecInfo.mMaxW, codecInfo.mMaxH,
+                codecInfo.mBitRate)) {
+            fail("should work with advertised resolution");
+        }
+        return new Pair<Integer, Integer>(maxW, maxH);
+    }
+
+    private boolean isConcurrentEncodingDecodingSupported(int w, int h, int bitRate) {
+        MediaCodec decoder = null;
+        OutputSurface decodingSurface = null;
+        MediaCodec encoder = null;
+        Surface encodingSurface = null;
+        try {
+            decoder = MediaCodec.createDecoderByType(MIME_TYPE);
+            MediaFormat decoderFormat = MediaFormat.createVideoFormat(MIME_TYPE, w, h);
+            decodingSurface = new OutputSurface(w, h);
+            decodingSurface.makeCurrent();
+            decoder.configure(decoderFormat, decodingSurface.getSurface(), null, 0);
+            decoder.start();
+
+            MediaFormat format = MediaFormat.createVideoFormat(MIME_TYPE, w, h);
+            format.setInteger(MediaFormat.KEY_COLOR_FORMAT,
+                    MediaCodecInfo.CodecCapabilities.COLOR_FormatSurface);
+            format.setInteger(MediaFormat.KEY_BIT_RATE, bitRate);
+            format.setInteger(MediaFormat.KEY_FRAME_RATE, 30);
+            format.setInteger(MediaFormat.KEY_I_FRAME_INTERVAL, IFRAME_INTERVAL);
+            encoder = MediaCodec.createEncoderByType(MIME_TYPE);;
+            encoder.configure(format, null, null, MediaCodec.CONFIGURE_FLAG_ENCODE);
+            encodingSurface = encoder.createInputSurface();
+            encoder.start();
+
+            encoder.stop();
+            decoder.stop();
+        } catch (Exception e) {
+            e.printStackTrace();
+            Log.i(TAG, "This H/W does not support w:" + w + " h:" + h);
+            return false;
+        } finally {
+            if (encodingSurface != null) {
+                encodingSurface.release();
+            }
+            if (encoder != null) {
+                encoder.release();
+            }
+            if (decoder != null) {
+                decoder.release();
+            }
+            if (decodingSurface != null) {
+                decodingSurface.release();
+            }
+        }
+        return true;
+    }
+
+    private static void runOnMain(Runnable runner) {
+        sHandlerForRunOnMain.post(runner);
+    }
+
+    private static void runOnMainSync(Runnable runner) {
+        SyncRunnable sr = new SyncRunnable(runner);
+        sHandlerForRunOnMain.post(sr);
+        sr.waitForComplete();
+    }
+
+    private static final class SyncRunnable implements Runnable {
+        private final Runnable mTarget;
+        private boolean mComplete;
+
+        public SyncRunnable(Runnable target) {
+            mTarget = target;
+        }
+
+        public void run() {
+            mTarget.run();
+            synchronized (this) {
+                mComplete = true;
+                notifyAll();
+            }
+        }
+
+        public void waitForComplete() {
+            synchronized (this) {
+                while (!mComplete) {
+                    try {
+                        wait();
+                    } catch (InterruptedException e) {
+                        //ignore
+                    }
+                }
+            }
+        }
+    }
+}
diff --git a/tests/tests/media/src/android/media/cts/ExtractDecodeEditEncodeMuxTest.java b/tests/tests/media/src/android/media/cts/ExtractDecodeEditEncodeMuxTest.java
index 40b4949..650a57e 100644
--- a/tests/tests/media/src/android/media/cts/ExtractDecodeEditEncodeMuxTest.java
+++ b/tests/tests/media/src/android/media/cts/ExtractDecodeEditEncodeMuxTest.java
@@ -29,6 +29,10 @@
 import android.util.Log;
 import android.view.Surface;
 
+import android.media.MediaCodecInfo;
+import android.media.MediaCodecInfo.CodecCapabilities;
+import android.media.MediaCodecInfo.CodecProfileLevel;
+
 import com.android.cts.media.R;
 
 import java.io.File;
@@ -109,28 +113,28 @@
     private String mOutputFile;
 
     public void testExtractDecodeEditEncodeMuxQCIF() throws Throwable {
-        setSize(176, 144);
+        if(!setSize(176, 144)) return;
         setSource(R.raw.video_480x360_mp4_h264_500kbps_30fps_aac_stereo_128kbps_44100hz);
         setCopyVideo();
         TestWrapper.runTest(this);
     }
 
     public void testExtractDecodeEditEncodeMuxQVGA() throws Throwable {
-        setSize(320, 240);
+        if(!setSize(320, 240)) return;
         setSource(R.raw.video_480x360_mp4_h264_500kbps_30fps_aac_stereo_128kbps_44100hz);
         setCopyVideo();
         TestWrapper.runTest(this);
     }
 
     public void testExtractDecodeEditEncodeMux720p() throws Throwable {
-        setSize(1280, 720);
+        if(!setSize(1280, 720)) return;
         setSource(R.raw.video_480x360_mp4_h264_500kbps_30fps_aac_stereo_128kbps_44100hz);
         setCopyVideo();
         TestWrapper.runTest(this);
     }
 
     public void testExtractDecodeEditEncodeMuxAudio() throws Throwable {
-        setSize(1280, 720);
+        if(!setSize(1280, 720)) return;
         setSource(R.raw.video_480x360_mp4_h264_500kbps_30fps_aac_stereo_128kbps_44100hz);
         setCopyAudio();
         setVerifyAudioFormat();
@@ -138,7 +142,7 @@
     }
 
     public void testExtractDecodeEditEncodeMuxAudioVideo() throws Throwable {
-        setSize(1280, 720);
+        if(!setSize(1280, 720)) return;
         setSource(R.raw.video_480x360_mp4_h264_500kbps_30fps_aac_stereo_128kbps_44100hz);
         setCopyAudio();
         setCopyVideo();
@@ -201,14 +205,20 @@
     }
 
     /**
-     * Sets the desired frame size.
-     */
-    private void setSize(int width, int height) {
+   * Sets the desired frame size and returns whether the given resolution is
+   * supported.
+   *
+   * <p>If decoding/encoding using AVC as the codec, checks that the resolution
+   * is supported. For other codecs, always return {@code true}.
+   */
+    private boolean setSize(int width, int height) {
         if ((width % 16) != 0 || (height % 16) != 0) {
             Log.w(TAG, "WARNING: width or height not multiple of 16");
         }
         mWidth = width;
         mHeight = height;
+
+        return isAvcSupportedSize(width, height);
     }
 
     /**
@@ -1146,4 +1156,63 @@
         return null;
     }
 
+  /**
+   * Checks whether the given resolution is supported by the AVC codec.
+   */
+    private static boolean isAvcSupportedSize(int width, int height) {
+        MediaCodecInfo mediaCodecInfo = selectCodec(OUTPUT_VIDEO_MIME_TYPE);
+        CodecCapabilities cap = mediaCodecInfo.getCapabilitiesForType(OUTPUT_VIDEO_MIME_TYPE);
+        if (cap == null) { // not supported
+            return false;
+        }
+        int highestLevel = 0;
+        for (CodecProfileLevel lvl : cap.profileLevels) {
+            if (lvl.level > highestLevel) {
+                highestLevel = lvl.level;
+            }
+        }
+        int maxW = 0;
+        int maxH = 0;
+        int bitRate = 0;
+        int fps = 0; // frame rate for the max resolution
+        switch(highestLevel) {
+            // Do not support Level 1 to 2.
+            case CodecProfileLevel.AVCLevel1:
+            case CodecProfileLevel.AVCLevel11:
+            case CodecProfileLevel.AVCLevel12:
+            case CodecProfileLevel.AVCLevel13:
+            case CodecProfileLevel.AVCLevel1b:
+            case CodecProfileLevel.AVCLevel2:
+                return false;
+            case CodecProfileLevel.AVCLevel21:
+                maxW = 352;
+                maxH = 576;
+                break;
+            case CodecProfileLevel.AVCLevel22:
+                maxW = 720;
+                maxH = 480;
+                break;
+            case CodecProfileLevel.AVCLevel3:
+                maxW = 720;
+                maxH = 480;
+                break;
+            case CodecProfileLevel.AVCLevel31:
+                maxW = 1280;
+                maxH = 720;
+                break;
+            case CodecProfileLevel.AVCLevel32:
+                maxW = 1280;
+                maxH = 720;
+                break;
+            case CodecProfileLevel.AVCLevel4: // only try up to 1080p
+            default:
+                maxW = 1920;
+                maxH = 1080;
+                break;
+        }
+        if(maxW*maxH < width*height)
+            return false;
+        else
+            return true;
+    }
 }
diff --git a/tests/tests/media/src/android/media/cts/InputSurface.java b/tests/tests/media/src/android/media/cts/InputSurface.java
index 8d5c133..5d72979 100644
--- a/tests/tests/media/src/android/media/cts/InputSurface.java
+++ b/tests/tests/media/src/android/media/cts/InputSurface.java
@@ -38,11 +38,10 @@
     private static final boolean VERBOSE = false;
 
     private static final int EGL_RECORDABLE_ANDROID = 0x3142;
-    private static final int EGL_OPENGL_ES2_BIT = 4;
 
-    private EGLDisplay mEGLDisplay;
-    private EGLContext mEGLContext;
-    private EGLSurface mEGLSurface;
+    private EGLDisplay mEGLDisplay = EGL14.EGL_NO_DISPLAY;
+    private EGLContext mEGLContext = EGL14.EGL_NO_CONTEXT;
+    private EGLSurface mEGLSurface = EGL14.EGL_NO_SURFACE;
 
     private Surface mSurface;
 
@@ -72,13 +71,13 @@
             throw new RuntimeException("unable to initialize EGL14");
         }
 
-        // Configure EGL for pbuffer and OpenGL ES 2.0.  We want enough RGB bits
-        // to be able to tell if the frame is reasonable.
+        // Configure EGL for recordable and OpenGL ES 2.0.  We want enough RGB bits
+        // to minimize artifacts from possible YUV conversion.
         int[] attribList = {
                 EGL14.EGL_RED_SIZE, 8,
                 EGL14.EGL_GREEN_SIZE, 8,
                 EGL14.EGL_BLUE_SIZE, 8,
-                EGL14.EGL_RENDERABLE_TYPE, EGL_OPENGL_ES2_BIT,
+                EGL14.EGL_RENDERABLE_TYPE, EGL14.EGL_OPENGL_ES2_BIT,
                 EGL_RECORDABLE_ANDROID, 1,
                 EGL14.EGL_NONE
         };
@@ -118,21 +117,18 @@
      * Surface that was passed to our constructor.
      */
     public void release() {
-        if (EGL14.eglGetCurrentContext().equals(mEGLContext)) {
-            // Clear the current context and surface to ensure they are discarded immediately.
-            EGL14.eglMakeCurrent(mEGLDisplay, EGL14.EGL_NO_SURFACE, EGL14.EGL_NO_SURFACE,
-                    EGL14.EGL_NO_CONTEXT);
+        if (mEGLDisplay != EGL14.EGL_NO_DISPLAY) {
+            EGL14.eglDestroySurface(mEGLDisplay, mEGLSurface);
+            EGL14.eglDestroyContext(mEGLDisplay, mEGLContext);
+            EGL14.eglReleaseThread();
+            EGL14.eglTerminate(mEGLDisplay);
         }
-        EGL14.eglDestroySurface(mEGLDisplay, mEGLSurface);
-        EGL14.eglDestroyContext(mEGLDisplay, mEGLContext);
-        //EGL14.eglTerminate(mEGLDisplay);
 
         mSurface.release();
 
-        // null everything out so future attempts to use this object will cause an NPE
-        mEGLDisplay = null;
-        mEGLContext = null;
-        mEGLSurface = null;
+        mEGLDisplay = EGL14.EGL_NO_DISPLAY;
+        mEGLContext = EGL14.EGL_NO_CONTEXT;
+        mEGLSurface = EGL14.EGL_NO_SURFACE;
 
         mSurface = null;
     }
@@ -146,6 +142,13 @@
         }
     }
 
+    public void makeUnCurrent() {
+        if (!EGL14.eglMakeCurrent(mEGLDisplay, EGL14.EGL_NO_SURFACE, EGL14.EGL_NO_SURFACE,
+                EGL14.EGL_NO_CONTEXT)) {
+            throw new RuntimeException("eglMakeCurrent failed");
+        }
+    }
+
     /**
      * Calls eglSwapBuffers.  Use this to "publish" the current frame.
      */
@@ -161,6 +164,24 @@
     }
 
     /**
+     * Queries the surface's width.
+     */
+    public int getWidth() {
+        int[] value = new int[1];
+        EGL14.eglQuerySurface(mEGLDisplay, mEGLSurface, EGL14.EGL_WIDTH, value, 0);
+        return value[0];
+    }
+
+    /**
+     * Queries the surface's height.
+     */
+    public int getHeight() {
+        int[] value = new int[1];
+        EGL14.eglQuerySurface(mEGLDisplay, mEGLSurface, EGL14.EGL_HEIGHT, value, 0);
+        return value[0];
+    }
+
+    /**
      * Sends the presentation time stamp to EGL.  Time is expressed in nanoseconds.
      */
     public void setPresentationTime(long nsecs) {
@@ -171,14 +192,9 @@
      * Checks for EGL errors.
      */
     private void checkEglError(String msg) {
-        boolean failed = false;
         int error;
-        while ((error = EGL14.eglGetError()) != EGL14.EGL_SUCCESS) {
-            Log.e(TAG, msg + ": EGL error: 0x" + Integer.toHexString(error));
-            failed = true;
-        }
-        if (failed) {
-            throw new RuntimeException("EGL error encountered (see log)");
+        if ((error = EGL14.eglGetError()) != EGL14.EGL_SUCCESS) {
+            throw new RuntimeException(msg + ": EGL error: 0x" + Integer.toHexString(error));
         }
     }
 }
diff --git a/tests/tests/media/src/android/media/cts/MediaCodecListTest.java b/tests/tests/media/src/android/media/cts/MediaCodecListTest.java
index 0973c1a..3428e86 100644
--- a/tests/tests/media/src/android/media/cts/MediaCodecListTest.java
+++ b/tests/tests/media/src/android/media/cts/MediaCodecListTest.java
@@ -241,6 +241,7 @@
         list.add(new CodecType("video/3gpp", true));            // h263 encoder
         list.add(new CodecType("video/mp4v-es", false));        // m4v decoder
         list.add(new CodecType("video/x-vnd.on2.vp8", false));  // vp8 decoder
+        list.add(new CodecType("video/x-vnd.on2.vp9", false));  // vp9 decoder
 
         return list;
     }
diff --git a/tests/tests/media/src/android/media/cts/MediaCodecTest.java b/tests/tests/media/src/android/media/cts/MediaCodecTest.java
index afa34e8..4b8abcd 100644
--- a/tests/tests/media/src/android/media/cts/MediaCodecTest.java
+++ b/tests/tests/media/src/android/media/cts/MediaCodecTest.java
@@ -16,32 +16,59 @@
 
 package android.media.cts;
 
+import com.android.cts.media.R;
+
+import android.content.res.AssetFileDescriptor;
 import android.media.MediaCodec;
 import android.media.MediaCodecInfo;
 import android.media.MediaCodecList;
+import android.media.MediaExtractor;
 import android.media.MediaFormat;
+import android.media.MediaCodecInfo.CodecCapabilities;
+import android.media.MediaCodecInfo.CodecProfileLevel;
 import android.opengl.GLES20;
 import android.test.AndroidTestCase;
 import android.util.Log;
 import android.view.Surface;
 
+import java.io.IOException;
+import java.nio.ByteBuffer;
+import java.util.concurrent.atomic.AtomicBoolean;
+
 
 /**
  * General MediaCodec tests.
  *
  * In particular, check various API edge cases.
+ *
+ * <p>The file in res/raw used by testDecodeShortInput are (c) copyright 2008,
+ * Blender Foundation / www.bigbuckbunny.org, and are licensed under the Creative Commons
+ * Attribution 3.0 License at http://creativecommons.org/licenses/by/3.0/us/.
  */
 public class MediaCodecTest extends AndroidTestCase {
     private static final String TAG = "MediaCodecTest";
     private static final boolean VERBOSE = false;           // lots of logging
 
-    // parameters for the encoder
+    // parameters for the video encoder
     private static final String MIME_TYPE = "video/avc";    // H.264 Advanced Video Coding
     private static final int BIT_RATE = 2000000;            // 2Mbps
     private static final int FRAME_RATE = 15;               // 15fps
     private static final int IFRAME_INTERVAL = 10;          // 10 seconds between I-frames
     private static final int WIDTH = 1280;
     private static final int HEIGHT = 720;
+    // parameters for the audio encoder
+    private static final String MIME_TYPE_AUDIO = "audio/mp4a-latm";
+    private static final int AUDIO_SAMPLE_RATE = 44100;
+    private static final int AUDIO_AAC_PROFILE = 2; /* OMX_AUDIO_AACObjectLC */
+    private static final int AUDIO_CHANNEL_COUNT = 2; // mono
+    private static final int AUDIO_BIT_RATE = 128000;
+
+    private static final int TIMEOUT_USEC = 100000;
+    private static final int TIMEOUT_USEC_SHORT = 100;
+
+    private boolean mVideoEncoderHadError = false;
+    private boolean mAudioEncoderHadError = false;
+    private volatile boolean mVideoEncodingOngoing = false;
 
     /**
      * Tests:
@@ -60,7 +87,7 @@
         format.setInteger(MediaFormat.KEY_COLOR_FORMAT, colorFormat);
 
         try {
-            encoder = MediaCodec.createByCodecName(codecInfo.getName());;
+            encoder = MediaCodec.createByCodecName(codecInfo.getName());
             try {
                 surface = encoder.createInputSurface();
                 fail("createInputSurface should not work pre-configure");
@@ -223,6 +250,407 @@
     }
 
     /**
+     * Tests whether decoding a short group-of-pictures succeeds. The test queues a few video frames
+     * then signals end-of-stream. The test fails if the decoder doesn't output the queued frames.
+     */
+    public void testDecodeShortInput() throws InterruptedException {
+        // Input buffers from this input video are queued up to and including the video frame with
+        // timestamp LAST_BUFFER_TIMESTAMP_US.
+        final int INPUT_RESOURCE_ID =
+                R.raw.video_480x360_mp4_h264_1350kbps_30fps_aac_stereo_192kbps_44100hz;
+        final long LAST_BUFFER_TIMESTAMP_US = 166666;
+
+        // The test should fail if the decoder never produces output frames for the truncated input.
+        // Time out decoding, as we have no way to query whether the decoder will produce output.
+        final int DECODING_TIMEOUT_MS = 2000;
+
+        final AtomicBoolean completed = new AtomicBoolean();
+        Thread videoDecodingThread = new Thread(new Runnable() {
+            @Override
+            public void run() {
+                completed.set(runDecodeShortInput(INPUT_RESOURCE_ID, LAST_BUFFER_TIMESTAMP_US));
+            }
+        });
+        videoDecodingThread.start();
+        videoDecodingThread.join(DECODING_TIMEOUT_MS);
+        if (!completed.get()) {
+            throw new RuntimeException("timed out decoding to end-of-stream");
+        }
+    }
+
+    private boolean runDecodeShortInput(int inputResourceId, long lastBufferTimestampUs) {
+        final int NO_BUFFER_INDEX = -1;
+
+        OutputSurface outputSurface = null;
+        MediaExtractor mediaExtractor = null;
+        MediaCodec mediaCodec = null;
+        try {
+            outputSurface = new OutputSurface(1, 1);
+            mediaExtractor = getMediaExtractorForMimeType(inputResourceId, "video/");
+            MediaFormat mediaFormat =
+                    mediaExtractor.getTrackFormat(mediaExtractor.getSampleTrackIndex());
+            mediaCodec =
+                    MediaCodec.createDecoderByType(mediaFormat.getString(MediaFormat.KEY_MIME));
+            mediaCodec.configure(mediaFormat, outputSurface.getSurface(), null, 0);
+            mediaCodec.start();
+            boolean eos = false;
+            boolean signaledEos = false;
+            MediaCodec.BufferInfo outputBufferInfo = new MediaCodec.BufferInfo();
+            int outputBufferIndex = NO_BUFFER_INDEX;
+            while (!eos && !Thread.interrupted()) {
+                // Try to feed more data into the codec.
+                if (mediaExtractor.getSampleTrackIndex() != -1 && !signaledEos) {
+                    int bufferIndex = mediaCodec.dequeueInputBuffer(0);
+                    if (bufferIndex != NO_BUFFER_INDEX) {
+                        ByteBuffer buffer = mediaCodec.getInputBuffers()[bufferIndex];
+                        int size = mediaExtractor.readSampleData(buffer, 0);
+                        long timestampUs = mediaExtractor.getSampleTime();
+                        mediaExtractor.advance();
+                        signaledEos = mediaExtractor.getSampleTrackIndex() == -1
+                                || timestampUs == lastBufferTimestampUs;
+                        mediaCodec.queueInputBuffer(bufferIndex,
+                                0,
+                                size,
+                                timestampUs,
+                                signaledEos ? MediaCodec.BUFFER_FLAG_END_OF_STREAM : 0);
+                    }
+                }
+
+                // If we don't have an output buffer, try to get one now.
+                if (outputBufferIndex == NO_BUFFER_INDEX) {
+                    outputBufferIndex = mediaCodec.dequeueOutputBuffer(outputBufferInfo, 0);
+                }
+
+                if (outputBufferIndex == MediaCodec.INFO_OUTPUT_BUFFERS_CHANGED
+                        || outputBufferIndex == MediaCodec.INFO_OUTPUT_FORMAT_CHANGED
+                        || outputBufferIndex == MediaCodec.INFO_TRY_AGAIN_LATER) {
+                    outputBufferIndex = NO_BUFFER_INDEX;
+                } else if (outputBufferIndex != NO_BUFFER_INDEX) {
+                    eos = (outputBufferInfo.flags & MediaCodec.BUFFER_FLAG_END_OF_STREAM) != 0;
+
+                    boolean render = outputBufferInfo.size > 0;
+                    mediaCodec.releaseOutputBuffer(outputBufferIndex, render);
+                    if (render) {
+                        outputSurface.awaitNewImage();
+                    }
+
+                    outputBufferIndex = NO_BUFFER_INDEX;
+                }
+            }
+
+            return eos;
+        } catch (IOException e) {
+            throw new RuntimeException("error reading input resource", e);
+        } finally {
+            if (mediaCodec != null) {
+                mediaCodec.stop();
+                mediaCodec.release();
+            }
+            if (mediaExtractor != null) {
+                mediaExtractor.release();
+            }
+            if (outputSurface != null) {
+                outputSurface.release();
+            }
+        }
+    }
+
+    /**
+     * Tests creating two decoders for {@link #MIME_TYPE_AUDIO} at the same time.
+     */
+    public void testCreateTwoAudioDecoders() {
+        final MediaFormat format = MediaFormat.createAudioFormat(
+                MIME_TYPE_AUDIO, AUDIO_SAMPLE_RATE, AUDIO_CHANNEL_COUNT);
+
+        MediaCodec audioDecoderA = null;
+        MediaCodec audioDecoderB = null;
+        try {
+            audioDecoderA = MediaCodec.createDecoderByType(MIME_TYPE_AUDIO);
+            audioDecoderA.configure(format, null, null, 0);
+            audioDecoderA.start();
+
+            audioDecoderB = MediaCodec.createDecoderByType(MIME_TYPE_AUDIO);
+            audioDecoderB.configure(format, null, null, 0);
+            audioDecoderB.start();
+        } finally {
+            if (audioDecoderB != null) {
+                try {
+                    audioDecoderB.stop();
+                    audioDecoderB.release();
+                } catch (RuntimeException e) {
+                    Log.w(TAG, "exception stopping/releasing codec", e);
+                }
+            }
+
+            if (audioDecoderA != null) {
+                try {
+                    audioDecoderA.stop();
+                    audioDecoderA.release();
+                } catch (RuntimeException e) {
+                    Log.w(TAG, "exception stopping/releasing codec", e);
+                }
+            }
+        }
+    }
+
+    /**
+     * Tests creating an encoder and decoder for {@link #MIME_TYPE_AUDIO} at the same time.
+     */
+    public void testCreateAudioDecoderAndEncoder() {
+        final MediaFormat encoderFormat = MediaFormat.createAudioFormat(
+                MIME_TYPE_AUDIO, AUDIO_SAMPLE_RATE, AUDIO_CHANNEL_COUNT);
+        encoderFormat.setInteger(MediaFormat.KEY_AAC_PROFILE, AUDIO_AAC_PROFILE);
+        encoderFormat.setInteger(MediaFormat.KEY_BIT_RATE, AUDIO_BIT_RATE);
+        final MediaFormat decoderFormat = MediaFormat.createAudioFormat(
+                MIME_TYPE_AUDIO, AUDIO_SAMPLE_RATE, AUDIO_CHANNEL_COUNT);
+
+        MediaCodec audioEncoder = null;
+        MediaCodec audioDecoder = null;
+        try {
+            audioEncoder = MediaCodec.createEncoderByType(MIME_TYPE_AUDIO);
+            audioEncoder.configure(encoderFormat, null, null, MediaCodec.CONFIGURE_FLAG_ENCODE);
+            audioEncoder.start();
+
+            audioDecoder = MediaCodec.createDecoderByType(MIME_TYPE_AUDIO);
+            audioDecoder.configure(decoderFormat, null, null, 0);
+            audioDecoder.start();
+        } finally {
+            if (audioDecoder != null) {
+                try {
+                    audioDecoder.stop();
+                    audioDecoder.release();
+                } catch (RuntimeException e) {
+                    Log.w(TAG, "exception stopping/releasing codec", e);
+                }
+            }
+
+            if (audioEncoder != null) {
+                try {
+                    audioEncoder.stop();
+                    audioEncoder.release();
+                } catch (RuntimeException e) {
+                    Log.w(TAG, "exception stopping/releasing codec", e);
+                }
+            }
+        }
+    }
+
+    public void testConcurrentAudioVideoEncodings() throws InterruptedException {
+        final int VIDEO_NUM_SWAPS = 100;
+        // audio only checks this and stop
+        mVideoEncodingOngoing = true;
+        final CodecInfo info = getAvcSupportedFormatInfo();
+        long start = System.currentTimeMillis();
+        Thread videoEncodingThread = new Thread(new Runnable() {
+            @Override
+            public void run() {
+                runVideoEncoding(VIDEO_NUM_SWAPS, info);
+            }
+        });
+        Thread audioEncodingThread = new Thread(new Runnable() {
+            @Override
+            public void run() {
+                runAudioEncoding();
+            }
+        });
+        videoEncodingThread.start();
+        audioEncodingThread.start();
+        videoEncodingThread.join();
+        mVideoEncodingOngoing = false;
+        audioEncodingThread.join();
+        assertFalse("Video encoding error. Chekc logcat", mVideoEncoderHadError);
+        assertFalse("Audio encoding error. Chekc logcat", mAudioEncoderHadError);
+        long end = System.currentTimeMillis();
+        Log.w(TAG, "Concurrent AV encoding took " + (end - start) + " ms for " + VIDEO_NUM_SWAPS +
+                " video frames");
+    }
+
+    private static class CodecInfo {
+        public int mMaxW;
+        public int mMaxH;
+        public int mFps;
+        public int mBitRate;
+    };
+
+    private static CodecInfo getAvcSupportedFormatInfo() {
+        MediaCodecInfo mediaCodecInfo = selectCodec(MIME_TYPE);
+        CodecCapabilities cap = mediaCodecInfo.getCapabilitiesForType(MIME_TYPE);
+        if (cap == null) { // not supported
+            return null;
+        }
+        CodecInfo info = new CodecInfo();
+        int highestLevel = 0;
+        for (CodecProfileLevel lvl : cap.profileLevels) {
+            if (lvl.level > highestLevel) {
+                highestLevel = lvl.level;
+            }
+        }
+        int maxW = 0;
+        int maxH = 0;
+        int bitRate = 0;
+        int fps = 0; // frame rate for the max resolution
+        switch(highestLevel) {
+            // Do not support Level 1 to 2.
+            case CodecProfileLevel.AVCLevel1:
+            case CodecProfileLevel.AVCLevel11:
+            case CodecProfileLevel.AVCLevel12:
+            case CodecProfileLevel.AVCLevel13:
+            case CodecProfileLevel.AVCLevel1b:
+            case CodecProfileLevel.AVCLevel2:
+                return null;
+            case CodecProfileLevel.AVCLevel21:
+                maxW = 352;
+                maxH = 576;
+                bitRate = 4000000;
+                fps = 25;
+                break;
+            case CodecProfileLevel.AVCLevel22:
+                maxW = 720;
+                maxH = 480;
+                bitRate = 4000000;
+                fps = 15;
+                break;
+            case CodecProfileLevel.AVCLevel3:
+                maxW = 720;
+                maxH = 480;
+                bitRate = 10000000;
+                fps = 30;
+                break;
+            case CodecProfileLevel.AVCLevel31:
+                maxW = 1280;
+                maxH = 720;
+                bitRate = 14000000;
+                fps = 30;
+                break;
+            case CodecProfileLevel.AVCLevel32:
+                maxW = 1280;
+                maxH = 720;
+                bitRate = 20000000;
+                fps = 60;
+                break;
+            case CodecProfileLevel.AVCLevel4: // only try up to 1080p
+            default:
+                maxW = 1920;
+                maxH = 1080;
+                bitRate = 20000000;
+                fps = 30;
+                break;
+        }
+        info.mMaxW = maxW;
+        info.mMaxH = maxH;
+        info.mFps = fps;
+        info.mBitRate = bitRate;
+        Log.i(TAG, "AVC Level 0x" + Integer.toHexString(highestLevel) + " bit rate " + bitRate +
+                " fps " + info.mFps + " w " + maxW + " h " + maxH);
+
+        return info;
+    }
+
+    private void runVideoEncoding(int numSwap, CodecInfo info) {
+        MediaFormat format = MediaFormat.createVideoFormat(MIME_TYPE, info.mMaxW, info.mMaxH);
+        format.setInteger(MediaFormat.KEY_COLOR_FORMAT,
+                MediaCodecInfo.CodecCapabilities.COLOR_FormatSurface);
+        format.setInteger(MediaFormat.KEY_BIT_RATE, info.mBitRate);
+        format.setInteger(MediaFormat.KEY_FRAME_RATE, info.mFps);
+        format.setInteger(MediaFormat.KEY_I_FRAME_INTERVAL, IFRAME_INTERVAL);
+        MediaCodec encoder = null;
+        InputSurface inputSurface = null;
+        mVideoEncoderHadError = false;
+        try {
+            encoder = MediaCodec.createEncoderByType(MIME_TYPE);
+            encoder.configure(format, null, null, MediaCodec.CONFIGURE_FLAG_ENCODE);
+            inputSurface = new InputSurface(encoder.createInputSurface());
+            inputSurface.makeCurrent();
+            MediaCodec.BufferInfo bufferInfo = new MediaCodec.BufferInfo();
+            encoder.start();
+            for (int i = 0; i < numSwap; i++) {
+                GLES20.glClearColor(0.0f, 0.5f, 0.0f, 1.0f);
+                GLES20.glClear(GLES20.GL_COLOR_BUFFER_BIT);
+                inputSurface.swapBuffers();
+                // dequeue buffers until not available
+                int index = encoder.dequeueOutputBuffer(bufferInfo, TIMEOUT_USEC);
+                while (index >= 0) {
+                    encoder.releaseOutputBuffer(index, false);
+                    // just throw away output
+                    // allow shorter wait for 2nd round to move on quickly.
+                    index = encoder.dequeueOutputBuffer(bufferInfo, TIMEOUT_USEC_SHORT);
+                }
+            }
+            encoder.signalEndOfInputStream();
+        } catch (Throwable e) {
+            Log.w(TAG, "runVideoEncoding got error: " + e);
+            mVideoEncoderHadError = true;
+        } finally {
+            if (encoder != null) {
+                encoder.stop();
+                encoder.release();
+            }
+            if (inputSurface != null) {
+                inputSurface.release();
+            }
+        }
+    }
+
+    private void runAudioEncoding() {
+        MediaFormat format = MediaFormat.createAudioFormat(MIME_TYPE_AUDIO, AUDIO_SAMPLE_RATE,
+                AUDIO_CHANNEL_COUNT);
+        format.setInteger(MediaFormat.KEY_AAC_PROFILE, AUDIO_AAC_PROFILE);
+        format.setInteger(MediaFormat.KEY_BIT_RATE, AUDIO_BIT_RATE);
+        MediaCodec encoder = null;
+        mAudioEncoderHadError = false;
+        try {
+            encoder = MediaCodec.createEncoderByType(MIME_TYPE_AUDIO);
+            encoder.configure(format, null, null, MediaCodec.CONFIGURE_FLAG_ENCODE);
+            MediaCodec.BufferInfo info = new MediaCodec.BufferInfo();
+            encoder.start();
+            ByteBuffer[] inputBuffers = encoder.getInputBuffers();
+            ByteBuffer source = ByteBuffer.allocate(inputBuffers[0].capacity());
+            for (int i = 0; i < source.capacity()/2; i++) {
+                source.putShort((short)i);
+            }
+            source.rewind();
+            int currentInputBufferIndex = 0;
+            long encodingLatencySum = 0;
+            int totalEncoded = 0;
+            int numRepeat = 0;
+            while (mVideoEncodingOngoing) {
+                numRepeat++;
+                int inputIndex = encoder.dequeueInputBuffer(TIMEOUT_USEC);
+                while (inputIndex == -1) {
+                    inputIndex = encoder.dequeueInputBuffer(TIMEOUT_USEC);
+                }
+                ByteBuffer inputBuffer = inputBuffers[inputIndex];
+                inputBuffer.rewind();
+                inputBuffer.put(source);
+                long start = System.currentTimeMillis();
+                totalEncoded += inputBuffers[inputIndex].limit();
+                encoder.queueInputBuffer(inputIndex, 0, inputBuffer.limit(), 0, 0);
+                source.rewind();
+                int index = encoder.dequeueOutputBuffer(info, TIMEOUT_USEC);
+                long end = System.currentTimeMillis();
+                encodingLatencySum += (end - start);
+                while (index >= 0) {
+                    encoder.releaseOutputBuffer(index, false);
+                    // just throw away output
+                    // allow shorter wait for 2nd round to move on quickly.
+                    index = encoder.dequeueOutputBuffer(info, TIMEOUT_USEC_SHORT);
+                }
+            }
+            Log.w(TAG, "Audio encoding average latency " + encodingLatencySum / numRepeat +
+                    " ms for average write size " + totalEncoded / numRepeat +
+                    " total latency " + encodingLatencySum + " ms for total bytes " + totalEncoded);
+        } catch (Throwable e) {
+            Log.w(TAG, "runAudioEncoding got error: " + e);
+            mAudioEncoderHadError = true;
+        } finally {
+            if (encoder != null) {
+                encoder.stop();
+                encoder.release();
+            }
+        }
+    }
+
+    /**
      * Creates a MediaFormat with the basic set of values.
      */
     private static MediaFormat createMediaFormat() {
@@ -273,4 +701,29 @@
         fail("couldn't find a good color format for " + codecInfo.getName() + " / " + MIME_TYPE);
         return 0;   // not reached
     }
+
+    private MediaExtractor getMediaExtractorForMimeType(int resourceId, String mimeTypePrefix)
+            throws IOException {
+        MediaExtractor mediaExtractor = new MediaExtractor();
+        AssetFileDescriptor afd = mContext.getResources().openRawResourceFd(resourceId);
+        try {
+            mediaExtractor.setDataSource(
+                    afd.getFileDescriptor(), afd.getStartOffset(), afd.getLength());
+        } finally {
+            afd.close();
+        }
+        int trackIndex;
+        for (trackIndex = 0; trackIndex < mediaExtractor.getTrackCount(); trackIndex++) {
+            MediaFormat trackMediaFormat = mediaExtractor.getTrackFormat(trackIndex);
+            if (trackMediaFormat.getString(MediaFormat.KEY_MIME).startsWith(mimeTypePrefix)) {
+                mediaExtractor.selectTrack(trackIndex);
+                break;
+            }
+        }
+        if (trackIndex == mediaExtractor.getTrackCount()) {
+            throw new IllegalStateException("couldn't get a video track");
+        }
+
+        return mediaExtractor;
+    }
 }
diff --git a/tests/tests/media/src/android/media/cts/MediaDrmMockTest.java b/tests/tests/media/src/android/media/cts/MediaDrmMockTest.java
index a8131bf..a09d368 100644
--- a/tests/tests/media/src/android/media/cts/MediaDrmMockTest.java
+++ b/tests/tests/media/src/android/media/cts/MediaDrmMockTest.java
@@ -58,6 +58,22 @@
         }
     }
 
+    public void testIsMimeTypeSupported() throws Exception {
+        if (!isMockPluginInstalled()) {
+            return;
+        }
+        String mimeType = "video/mp4";
+        assertTrue(MediaDrm.isCryptoSchemeSupported(mockScheme, mimeType));
+    }
+
+    public void testIsMimeTypeNotSupported() throws Exception {
+        if (!isMockPluginInstalled()) {
+            return;
+        }
+        String mimeType = "video/foo";
+        assertFalse(MediaDrm.isCryptoSchemeSupported(mockScheme, mimeType));
+    }
+
     public void testMediaDrmConstructorFails() throws Exception {
         if (!isMockPluginInstalled()) {
             return;
@@ -290,7 +306,7 @@
 
         assertTrue(Arrays.equals(initData, md.getPropertyByteArray("mock-initdata")));
         assertTrue(mimeType.equals(md.getPropertyString("mock-mimetype")));
-        assertTrue(md.getPropertyString("mock-keytype").equals("2"));
+        assertTrue(md.getPropertyString("mock-keytype").equals("0"));
 
         md.closeSession(sessionId);
     }
@@ -317,7 +333,7 @@
         assertTrue(request.getDefaultUrl().equals(testDefaultUrl));
 
         assertTrue(mimeType.equals(md.getPropertyString("mock-mimetype")));
-        assertTrue(md.getPropertyString("mock-keytype").equals("3"));
+        assertTrue(md.getPropertyString("mock-keytype").equals("2"));
 
         md.closeSession(sessionId);
     }
diff --git a/tests/tests/media/src/android/media/cts/MediaMuxerTest.java b/tests/tests/media/src/android/media/cts/MediaMuxerTest.java
index 42ae7a7..9cad011 100644
--- a/tests/tests/media/src/android/media/cts/MediaMuxerTest.java
+++ b/tests/tests/media/src/android/media/cts/MediaMuxerTest.java
@@ -38,6 +38,11 @@
     private static final String TAG = "MediaMuxerTest";
     private static final boolean VERBOSE = false;
     private static final int MAX_SAMPLE_SIZE = 256 * 1024;
+    private static final float LATITUDE = 0.0000f;
+    private static final float LONGITUDE  = -180.0f;
+    private static final float BAD_LATITUDE = 91.0f;
+    private static final float BAD_LONGITUDE = -181.0f;
+    private static final float TOLERANCE = 0.0002f;
     private Resources mResources;
 
     @Override
@@ -189,6 +194,25 @@
         if (degrees >= 0) {
             muxer.setOrientationHint(degrees);
         }
+
+        // Test setLocation out of bound cases
+        try {
+            muxer.setLocation(BAD_LATITUDE, LONGITUDE);
+            fail("setLocation succeeded with bad argument: [" + BAD_LATITUDE + "," + LONGITUDE
+                    + "]");
+        } catch (IllegalArgumentException e) {
+            // Expected
+        }
+        try {
+            muxer.setLocation(LATITUDE, BAD_LONGITUDE);
+            fail("setLocation succeeded with bad argument: [" + LATITUDE + "," + BAD_LONGITUDE
+                    + "]");
+        } catch (IllegalArgumentException e) {
+            // Expected
+        }
+
+        muxer.setLocation(LATITUDE, LONGITUDE);
+
         muxer.start();
         while (!sawEOS) {
             bufferInfo.offset = offset;
@@ -235,6 +259,7 @@
         try {
             cloneMediaUsingMuxer(srcMedia, outputMediaFile, expectedTrackCount, degrees);
             verifyAttributesMatch(srcMedia, outputMediaFile, degrees);
+            verifyLocationInFile(outputMediaFile);
             // Check the sample on 1s and 0.5s.
             verifySamplesMatch(srcMedia, outputMediaFile, 1000000);
             verifySamplesMatch(srcMedia, outputMediaFile, 500000);
@@ -337,5 +362,32 @@
             fail("byteBuffer didn't match");
         }
     }
+
+    private void verifyLocationInFile(String fileName) {
+        MediaMetadataRetriever retriever = new MediaMetadataRetriever();
+        retriever.setDataSource(fileName);
+        String location = retriever.extractMetadata(MediaMetadataRetriever.METADATA_KEY_LOCATION);
+        assertNotNull("No location information found in file " + fileName, location);
+
+        // parsing String location and recover the location inforamtion in floats
+        // Make sure the tolerance is very small - due to rounding errors.
+
+        // Get the position of the -/+ sign in location String, which indicates
+        // the beginning of the longtitude.
+        int index = location.lastIndexOf('-');
+        if (index == -1) {
+            index = location.lastIndexOf('+');
+        }
+        assertTrue("+ or - is not found", index != -1);
+        assertTrue("+ or - is only found at the beginning", index != 0);
+        float latitude = Float.parseFloat(location.substring(0, index - 1));
+        float longitude = Float.parseFloat(location.substring(index));
+        assertTrue("Incorrect latitude: " + latitude,
+                Math.abs(latitude - LATITUDE) <= TOLERANCE);
+        assertTrue("Incorrect longitude: " + longitude,
+                Math.abs(longitude - LONGITUDE) <= TOLERANCE);
+        retriever.release();
+    }
+
 }
 
diff --git a/tests/tests/media/src/android/media/cts/MediaPlayerFlakyNetworkTest.java b/tests/tests/media/src/android/media/cts/MediaPlayerFlakyNetworkTest.java
index 10a563c..8063cbb 100644
--- a/tests/tests/media/src/android/media/cts/MediaPlayerFlakyNetworkTest.java
+++ b/tests/tests/media/src/android/media/cts/MediaPlayerFlakyNetworkTest.java
@@ -63,7 +63,7 @@
         releaseHttpServer();
         super.tearDown();
     }
-/* disable the whole tests until someone could fix it.
+
     public void test_S0P0() throws Throwable {
         doPlayStreams(0, 0);
     }
@@ -91,7 +91,7 @@
     public void test_S6P00002() throws Throwable {
         doPlayStreams(6, 0.00002f);
     }
-*/
+
    private void doPlayStreams(int seed, float probability) throws Throwable {
         Random random = new Random(seed);
         createHttpServer(seed, probability);
@@ -309,8 +309,7 @@
                     try {
                         float random = mRandom.nextFloat();
                         if (random < probability) {
-                            // TODO restore 1000 to 6000 after fixing 6770717
-                            int sleepTimeMs = 1000 + mRandom.nextInt(500);
+                            int sleepTimeMs = 1000 + mRandom.nextInt(5000);
                             Thread.sleep(sleepTimeMs);
                             flush();
                         } else if (random < probability * 100) {
diff --git a/tests/tests/media/src/android/media/cts/MediaPlayerTest.java b/tests/tests/media/src/android/media/cts/MediaPlayerTest.java
index 35d3f3c..f271bae 100644
--- a/tests/tests/media/src/android/media/cts/MediaPlayerTest.java
+++ b/tests/tests/media/src/android/media/cts/MediaPlayerTest.java
@@ -20,6 +20,7 @@
 import android.content.Context;
 import android.content.pm.PackageManager;
 import android.content.res.AssetFileDescriptor;
+import android.hardware.Camera;
 import android.media.AudioManager;
 import android.media.MediaPlayer;
 import android.media.MediaPlayer.OnErrorListener;
@@ -38,6 +39,7 @@
 import android.util.Log;
 
 import java.io.File;
+import java.util.List;
 import java.util.StringTokenizer;
 import java.util.UUID;
 import java.util.Vector;
@@ -227,6 +229,38 @@
         }
     }
 
+    public void testSetNextMediaPlayerWithReset() throws Exception {
+
+        initMediaPlayer(mMediaPlayer);
+
+        try {
+            initMediaPlayer(mMediaPlayer2);
+            mMediaPlayer2.reset();
+            mMediaPlayer.setNextMediaPlayer(mMediaPlayer2);
+            fail("setNextMediaPlayer() succeeded with unprepared player");
+        } catch (RuntimeException e) {
+            // expected
+        } finally {
+            mMediaPlayer.reset();
+        }
+    }
+
+    public void testSetNextMediaPlayerWithRelease() throws Exception {
+
+        initMediaPlayer(mMediaPlayer);
+
+        try {
+            initMediaPlayer(mMediaPlayer2);
+            mMediaPlayer2.release();
+            mMediaPlayer.setNextMediaPlayer(mMediaPlayer2);
+            fail("setNextMediaPlayer() succeeded with unprepared player");
+        } catch (RuntimeException e) {
+            // expected
+        } finally {
+            mMediaPlayer.reset();
+        }
+    }
+
     public void testSetNextMediaPlayer() throws Exception {
         initMediaPlayer(mMediaPlayer);
 
@@ -564,15 +598,34 @@
         return getActivity().getPackageManager().hasSystemFeature(PackageManager.FEATURE_CAMERA);
     }
 
+    private Camera mCamera;
     private void testRecordedVideoPlaybackWithAngle(int angle) throws Exception {
-        final int width = RECORDED_VIDEO_WIDTH;
-        final int height = RECORDED_VIDEO_HEIGHT;
+        int width = RECORDED_VIDEO_WIDTH;
+        int height = RECORDED_VIDEO_HEIGHT;
         final String file = RECORDED_FILE;
         final long durationMs = RECORDED_DURATION_MS;
 
         if (!hasCamera()) {
             return;
         }
+
+        boolean isSupported = false;
+        mCamera = Camera.open(0);
+        Camera.Parameters parameters = mCamera.getParameters();
+        List<Camera.Size> previewSizes = parameters.getSupportedPreviewSizes();
+        for (Camera.Size size : previewSizes)
+        {
+            if (size.width == width && size.height == height) {
+                isSupported = true;
+                break;
+            }
+        }
+        mCamera.release();
+        mCamera = null;
+        if (!isSupported) {
+            width = previewSizes.get(0).width;
+            height = previewSizes.get(0).height;
+        }
         checkOrientation(angle);
         recordVideo(width, height, angle, file, durationMs);
         checkDisplayedVideoSize(width, height, angle, file);
diff --git a/tests/tests/media/src/android/media/cts/MediaRecorderTest.java b/tests/tests/media/src/android/media/cts/MediaRecorderTest.java
index 055b763..6ad5601 100644
--- a/tests/tests/media/src/android/media/cts/MediaRecorderTest.java
+++ b/tests/tests/media/src/android/media/cts/MediaRecorderTest.java
@@ -36,6 +36,7 @@
 import java.io.FileOutputStream;
 import java.lang.InterruptedException;
 import java.lang.Runnable;
+import java.util.List;
 import java.util.concurrent.CountDownLatch;
 import java.util.concurrent.TimeUnit;
 
@@ -50,6 +51,8 @@
     private static final int RECORDED_DUR_TOLERANCE_MS = 1000;
     private static final int VIDEO_WIDTH = 176;
     private static final int VIDEO_HEIGHT = 144;
+    private static int mVideoWidth = VIDEO_WIDTH;
+    private static int mVideoHeight = VIDEO_HEIGHT;
     private static final int VIDEO_BIT_RATE_IN_BPS = 128000;
     private static final double VIDEO_TIMELAPSE_CAPTURE_RATE_FPS = 1.0;
     private static final int AUDIO_BIT_RATE_IN_BPS = 12200;
@@ -187,6 +190,7 @@
         int durMs = timelapse? RECORD_TIME_LAPSE_MS: RECORD_TIME_MS;
         for (int cameraId = 0; cameraId < nCamera; cameraId++) {
             mCamera = Camera.open(cameraId);
+            setSupportedResolution(mCamera);
             recordVideoUsingCamera(mCamera, OUTPUT_PATH, durMs, timelapse);
             mCamera.release();
             mCamera = null;
@@ -194,6 +198,21 @@
         }
     }
 
+    private void setSupportedResolution(Camera camera) {
+        Camera.Parameters parameters = camera.getParameters();
+        List<Camera.Size> previewSizes = parameters.getSupportedPreviewSizes();
+        for (Camera.Size size : previewSizes)
+        {
+            if (size.width == VIDEO_WIDTH && size.height == VIDEO_HEIGHT) {
+                mVideoWidth = VIDEO_WIDTH;
+                mVideoHeight = VIDEO_HEIGHT;
+                return;
+            }
+        }
+        mVideoWidth = previewSizes.get(0).width;
+        mVideoHeight = previewSizes.get(0).height;
+    }
+
     private void recordVideoUsingCamera(
             Camera camera, String fileName, int durMs, boolean timelapse) throws Exception {
         // FIXME:
@@ -210,7 +229,7 @@
         mMediaRecorder.setVideoEncoder(MediaRecorder.VideoEncoder.DEFAULT);
         mMediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.DEFAULT);
         mMediaRecorder.setVideoFrameRate(frameRate);
-        mMediaRecorder.setVideoSize(VIDEO_WIDTH, VIDEO_HEIGHT);
+        mMediaRecorder.setVideoSize(mVideoWidth, mVideoHeight);
         mMediaRecorder.setPreviewDisplay(mActivity.getSurfaceHolder().getSurface());
         mMediaRecorder.setOutputFile(fileName);
         mMediaRecorder.setLocation(LATITUDE, LONGITUDE);
@@ -412,7 +431,7 @@
     }
 
     public void testSetMaxFileSize() throws Exception {
-        if (!hasMicrophone()) {
+        if (!hasMicrophone() || !hasCamera()) {
             return;
         }
         testSetMaxFileSize(512 * 1024, 50 * 1024);
diff --git a/tests/tests/media/src/android/media/cts/MediaScannerNotificationTest.java b/tests/tests/media/src/android/media/cts/MediaScannerNotificationTest.java
index c13f041..a20e874 100644
--- a/tests/tests/media/src/android/media/cts/MediaScannerNotificationTest.java
+++ b/tests/tests/media/src/android/media/cts/MediaScannerNotificationTest.java
@@ -19,6 +19,7 @@
 import android.content.Intent;
 import android.content.IntentFilter;
 import android.net.Uri;
+import android.os.Bundle;
 import android.os.Environment;
 import android.test.AndroidTestCase;
 
@@ -47,8 +48,12 @@
         String [] temps = new String[] { "avi", "gif", "jpg", "dat", "mp3", "mp4", "txt" };
         String tmpPath = createTempFiles(temps);
 
-        mContext.sendBroadcast(new Intent(Intent.ACTION_MEDIA_MOUNTED, Uri.parse("file://"
-                + Environment.getExternalStorageDirectory())));
+        Bundle args = new Bundle();
+        args.putString("volume", "external");
+        Intent i = new Intent("android.media.IMediaScannerService").putExtras(args);
+        i.setClassName("com.android.providers.media",
+                "com.android.providers.media.MediaScannerService");
+        mContext.startService(i);
 
         startedReceiver.waitForBroadcast();
         finishedReceiver.waitForBroadcast();
@@ -64,8 +69,7 @@
         }
         startedReceiver.reset();
         finishedReceiver.reset();
-        mContext.sendBroadcast(new Intent(Intent.ACTION_MEDIA_MOUNTED, Uri.parse("file://"
-                + Environment.getExternalStorageDirectory())));
+        mContext.startService(i);
         startedReceiver.waitForBroadcast();
         finishedReceiver.waitForBroadcast();
 
@@ -76,8 +80,7 @@
         // scan one more time just to clean everything up nicely
         startedReceiver.reset();
         finishedReceiver.reset();
-        mContext.sendBroadcast(new Intent(Intent.ACTION_MEDIA_MOUNTED, Uri.parse("file://"
-                + Environment.getExternalStorageDirectory())));
+        mContext.startService(i);
         startedReceiver.waitForBroadcast();
         finishedReceiver.waitForBroadcast();
 
diff --git a/tests/tests/media/src/android/media/cts/MediaScannerTest.java b/tests/tests/media/src/android/media/cts/MediaScannerTest.java
index e121c52..2dafdc5 100644
--- a/tests/tests/media/src/android/media/cts/MediaScannerTest.java
+++ b/tests/tests/media/src/android/media/cts/MediaScannerTest.java
@@ -31,6 +31,7 @@
 import android.media.MediaScannerConnection.MediaScannerConnectionClient;
 import android.mtp.MtpConstants;
 import android.net.Uri;
+import android.os.Bundle;
 import android.os.Environment;
 import android.os.IBinder;
 import android.os.SystemClock;
@@ -57,6 +58,7 @@
         // prepare the media file.
 
         mFileDir = Environment.getExternalStorageDirectory() + "/" + getClass().getCanonicalName();
+        cleanup();
         String fileName = mFileDir + "/test" + System.currentTimeMillis() + ".mp3";
         writeFile(R.raw.testmp3, fileName);
 
@@ -75,6 +77,9 @@
     @Override
     protected void tearDown() throws Exception {
         super.tearDown();
+    }
+
+    private void cleanup() {
         if (mMediaFile != null) {
             mMediaFile.delete();
         }
@@ -90,6 +95,9 @@
             mMediaScannerConnection.disconnect();
             mMediaScannerConnection = null;
         }
+
+        mContext.getContentResolver().delete(MediaStore.Audio.Media.getContentUri("external"),
+                "_data like ?", new String[] { mFileDir + "%"});
     }
 
     public void testMediaScanner() throws InterruptedException, IOException {
@@ -292,6 +300,72 @@
         checkConnectionState(false);
     }
 
+    public void testCanonicalize() throws Exception {
+        mMediaScannerConnectionClient = new MockMediaScannerConnectionClient();
+        mMediaScannerConnection = new MockMediaScannerConnection(getContext(),
+                                    mMediaScannerConnectionClient);
+
+        assertFalse(mMediaScannerConnection.isConnected());
+
+        // start connection and wait until connected
+        mMediaScannerConnection.connect();
+        checkConnectionState(true);
+
+        // write file and scan to insert into database
+        String fileDir = Environment.getExternalStorageDirectory() + "/"
+                + getClass().getCanonicalName() + "/canonicaltest-" + System.currentTimeMillis();
+        String fileName = fileDir + "/test.mp3";
+        writeFile(R.raw.testmp3, fileName);
+        mMediaScannerConnection.scanFile(fileName, MEDIA_TYPE);
+        checkMediaScannerConnection();
+
+        // check path and uri
+        Uri uri = mMediaScannerConnectionClient.mediaUri;
+        String path = mMediaScannerConnectionClient.mediaPath;
+        assertEquals(fileName, path);
+        assertNotNull(uri);
+
+        // check canonicalization
+        ContentResolver res = mContext.getContentResolver();
+        Uri canonicalUri = res.canonicalize(uri);
+        assertNotNull(canonicalUri);
+        assertFalse(uri.equals(canonicalUri));
+        Uri uncanonicalizedUri = res.uncanonicalize(canonicalUri);
+        assertEquals(uri, uncanonicalizedUri);
+
+        // remove the entry from the database
+        assertEquals(1, res.delete(uri, null, null));
+        assertTrue(new File(path).delete());
+
+        // write same file again and scan to insert into database
+        mMediaScannerConnectionClient.reset();
+        String fileName2 = fileDir + "/test2.mp3";
+        writeFile(R.raw.testmp3, fileName2);
+        mMediaScannerConnection.scanFile(fileName2, MEDIA_TYPE);
+        checkMediaScannerConnection();
+
+        // check path and uri
+        Uri uri2 = mMediaScannerConnectionClient.mediaUri;
+        String path2 = mMediaScannerConnectionClient.mediaPath;
+        assertEquals(fileName2, path2);
+        assertNotNull(uri2);
+
+        // this should be a different entry in the database and not re-use the same database id
+        assertFalse(uri.equals(uri2));
+
+        Uri canonicalUri2 = res.canonicalize(uri2);
+        assertNotNull(canonicalUri2);
+        assertFalse(uri2.equals(canonicalUri2));
+        Uri uncanonicalizedUri2 = res.uncanonicalize(canonicalUri2);
+        assertEquals(uri2, uncanonicalizedUri2);
+
+        // uncanonicalize the original canonicalized uri, it should resolve to the new uri
+        Uri uncanonicalizedUri3 = res.uncanonicalize(canonicalUri);
+        assertEquals(uri2, uncanonicalizedUri3);
+
+        assertEquals(1, res.delete(uri2, null, null));
+        assertTrue(new File(path2).delete());
+    }
 
     private void startMediaScanAndWait() throws InterruptedException {
         ScannerNotificationReceiver finishedReceiver = new ScannerNotificationReceiver(
@@ -299,8 +373,14 @@
         IntentFilter finishedIntentFilter = new IntentFilter(Intent.ACTION_MEDIA_SCANNER_FINISHED);
         finishedIntentFilter.addDataScheme("file");
         mContext.registerReceiver(finishedReceiver, finishedIntentFilter);
-        mContext.sendBroadcast(new Intent(Intent.ACTION_MEDIA_MOUNTED, Uri.parse("file://"
-                + Environment.getExternalStorageDirectory())));
+
+        Bundle args = new Bundle();
+        args.putString("volume", "external");
+        Intent i = new Intent("android.media.IMediaScannerService").putExtras(args);
+        i.setClassName("com.android.providers.media",
+                "com.android.providers.media.MediaScannerService");
+        mContext.startService(i);
+
         finishedReceiver.waitForBroadcast();
         mContext.unregisterReceiver(finishedReceiver);
     }
diff --git a/tests/tests/media/src/android/media/cts/OutputSurface.java b/tests/tests/media/src/android/media/cts/OutputSurface.java
index 5274627..fc8ad9c 100644
--- a/tests/tests/media/src/android/media/cts/OutputSurface.java
+++ b/tests/tests/media/src/android/media/cts/OutputSurface.java
@@ -18,24 +18,13 @@
 
 import android.graphics.SurfaceTexture;
 import android.opengl.EGL14;
-import android.opengl.GLES20;
-import android.opengl.GLES11Ext;
-import android.opengl.GLSurfaceView;
-import android.opengl.Matrix;
+import android.opengl.EGLConfig;
+import android.opengl.EGLContext;
+import android.opengl.EGLDisplay;
+import android.opengl.EGLSurface;
 import android.util.Log;
 import android.view.Surface;
 
-import java.nio.ByteBuffer;
-
-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.egl.EGLSurface;
-import javax.microedition.khronos.opengles.GL;
-import javax.microedition.khronos.opengles.GL10;
-
-
 
 /**
  * Holds state associated with a Surface used for MediaCodec decoder output.
@@ -56,12 +45,9 @@
     private static final String TAG = "OutputSurface";
     private static final boolean VERBOSE = false;
 
-    private static final int EGL_OPENGL_ES2_BIT = 4;
-
-    private EGL10 mEGL;
-    private EGLDisplay mEGLDisplay;
-    private EGLContext mEGLContext;
-    private EGLSurface mEGLSurface;
+    private EGLDisplay mEGLDisplay = EGL14.EGL_NO_DISPLAY;
+    private EGLContext mEGLContext = EGL14.EGL_NO_CONTEXT;
+    private EGLSurface mEGLSurface = EGL14.EGL_NO_SURFACE;
 
     private SurfaceTexture mSurfaceTexture;
     private Surface mSurface;
@@ -88,8 +74,8 @@
     }
 
     /**
-     * Creates an OutputSurface using the current EGL context.  Creates a Surface that can be
-     * passed to MediaCodec.configure().
+     * Creates an OutputSurface using the current EGL context (rather than establishing a
+     * new one).  Creates a Surface that can be passed to MediaCodec.configure().
      */
     public OutputSurface() {
         setup();
@@ -130,35 +116,40 @@
      * Prepares EGL.  We want a GLES 2.0 context and a surface that supports pbuffer.
      */
     private void eglSetup(int width, int height) {
-        mEGL = (EGL10)EGLContext.getEGL();
-        mEGLDisplay = mEGL.eglGetDisplay(EGL10.EGL_DEFAULT_DISPLAY);
-        if (!mEGL.eglInitialize(mEGLDisplay, null)) {
-            throw new RuntimeException("unable to initialize EGL10");
+        mEGLDisplay = EGL14.eglGetDisplay(EGL14.EGL_DEFAULT_DISPLAY);
+        if (mEGLDisplay == EGL14.EGL_NO_DISPLAY) {
+            throw new RuntimeException("unable to get EGL14 display");
+        }
+        int[] version = new int[2];
+        if (!EGL14.eglInitialize(mEGLDisplay, version, 0, version, 1)) {
+            mEGLDisplay = null;
+            throw new RuntimeException("unable to initialize EGL14");
         }
 
         // Configure EGL for pbuffer and OpenGL ES 2.0.  We want enough RGB bits
         // to be able to tell if the frame is reasonable.
         int[] attribList = {
-                EGL10.EGL_RED_SIZE, 8,
-                EGL10.EGL_GREEN_SIZE, 8,
-                EGL10.EGL_BLUE_SIZE, 8,
-                EGL10.EGL_SURFACE_TYPE, EGL10.EGL_PBUFFER_BIT,
-                EGL10.EGL_RENDERABLE_TYPE, EGL_OPENGL_ES2_BIT,
-                EGL10.EGL_NONE
+                EGL14.EGL_RED_SIZE, 8,
+                EGL14.EGL_GREEN_SIZE, 8,
+                EGL14.EGL_BLUE_SIZE, 8,
+                EGL14.EGL_RENDERABLE_TYPE, EGL14.EGL_OPENGL_ES2_BIT,
+                EGL14.EGL_SURFACE_TYPE, EGL14.EGL_PBUFFER_BIT,
+                EGL14.EGL_NONE
         };
         EGLConfig[] configs = new EGLConfig[1];
         int[] numConfigs = new int[1];
-        if (!mEGL.eglChooseConfig(mEGLDisplay, attribList, configs, 1, numConfigs)) {
-            throw new RuntimeException("unable to find RGB888+pbuffer EGL config");
+        if (!EGL14.eglChooseConfig(mEGLDisplay, attribList, 0, configs, 0, configs.length,
+                numConfigs, 0)) {
+            throw new RuntimeException("unable to find RGB888+recordable ES2 EGL config");
         }
 
         // Configure context for OpenGL ES 2.0.
         int[] attrib_list = {
                 EGL14.EGL_CONTEXT_CLIENT_VERSION, 2,
-                EGL10.EGL_NONE
+                EGL14.EGL_NONE
         };
-        mEGLContext = mEGL.eglCreateContext(mEGLDisplay, configs[0], EGL10.EGL_NO_CONTEXT,
-                attrib_list);
+        mEGLContext = EGL14.eglCreateContext(mEGLDisplay, configs[0], EGL14.EGL_NO_CONTEXT,
+                attrib_list, 0);
         checkEglError("eglCreateContext");
         if (mEGLContext == null) {
             throw new RuntimeException("null context");
@@ -167,11 +158,11 @@
         // Create a pbuffer surface.  By using this for output, we can use glReadPixels
         // to test values in the output.
         int[] surfaceAttribs = {
-                EGL10.EGL_WIDTH, width,
-                EGL10.EGL_HEIGHT, height,
-                EGL10.EGL_NONE
+                EGL14.EGL_WIDTH, width,
+                EGL14.EGL_HEIGHT, height,
+                EGL14.EGL_NONE
         };
-        mEGLSurface = mEGL.eglCreatePbufferSurface(mEGLDisplay, configs[0], surfaceAttribs);
+        mEGLSurface = EGL14.eglCreatePbufferSurface(mEGLDisplay, configs[0], surfaceAttribs, 0);
         checkEglError("eglCreatePbufferSurface");
         if (mEGLSurface == null) {
             throw new RuntimeException("surface was null");
@@ -182,15 +173,11 @@
      * Discard all resources held by this class, notably the EGL context.
      */
     public void release() {
-        if (mEGL != null) {
-            if (mEGL.eglGetCurrentContext().equals(mEGLContext)) {
-                // Clear the current context and surface to ensure they are discarded immediately.
-                mEGL.eglMakeCurrent(mEGLDisplay, EGL10.EGL_NO_SURFACE, EGL10.EGL_NO_SURFACE,
-                        EGL10.EGL_NO_CONTEXT);
-            }
-            mEGL.eglDestroySurface(mEGLDisplay, mEGLSurface);
-            mEGL.eglDestroyContext(mEGLDisplay, mEGLContext);
-            //mEGL.eglTerminate(mEGLDisplay);
+        if (mEGLDisplay != EGL14.EGL_NO_DISPLAY) {
+            EGL14.eglDestroySurface(mEGLDisplay, mEGLSurface);
+            EGL14.eglDestroyContext(mEGLDisplay, mEGLContext);
+            EGL14.eglReleaseThread();
+            EGL14.eglTerminate(mEGLDisplay);
         }
 
         mSurface.release();
@@ -199,11 +186,9 @@
         //  W BufferQueue: [unnamed-3997-2] cancelBuffer: BufferQueue has been abandoned!
         //mSurfaceTexture.release();
 
-        // null everything out so future attempts to use this object will cause an NPE
-        mEGLDisplay = null;
-        mEGLContext = null;
-        mEGLSurface = null;
-        mEGL = null;
+        mEGLDisplay = EGL14.EGL_NO_DISPLAY;
+        mEGLContext = EGL14.EGL_NO_CONTEXT;
+        mEGLSurface = EGL14.EGL_NO_SURFACE;
 
         mTextureRender = null;
         mSurface = null;
@@ -214,11 +199,7 @@
      * Makes our EGL context and surface current.
      */
     public void makeCurrent() {
-        if (mEGL == null) {
-            throw new RuntimeException("not configured for makeCurrent");
-        }
-        checkEglError("before makeCurrent");
-        if (!mEGL.eglMakeCurrent(mEGLDisplay, mEGLSurface, mEGLSurface, mEGLContext)) {
+        if (!EGL14.eglMakeCurrent(mEGLDisplay, mEGLSurface, mEGLSurface, mEGLContext)) {
             throw new RuntimeException("eglMakeCurrent failed");
         }
     }
@@ -269,6 +250,35 @@
     }
 
     /**
+     * Wait up to given timeout until new image become available.
+     * @param timeoutMs
+     * @return true if new image is available. false for no new image until timeout.
+     */
+    public boolean checkForNewImage(int timeoutMs) {
+        synchronized (mFrameSyncObject) {
+            while (!mFrameAvailable) {
+                try {
+                    // Wait for onFrameAvailable() to signal us.  Use a timeout to avoid
+                    // stalling the test if it doesn't arrive.
+                    mFrameSyncObject.wait(timeoutMs);
+                    if (!mFrameAvailable) {
+                        return false;
+                    }
+                } catch (InterruptedException ie) {
+                    // shouldn't happen
+                    throw new RuntimeException(ie);
+                }
+            }
+            mFrameAvailable = false;
+        }
+
+        // Latch the data.
+        mTextureRender.checkGlError("before updateTexImage");
+        mSurfaceTexture.updateTexImage();
+        return true;
+    }
+
+    /**
      * Draws the data from SurfaceTexture onto the current EGL surface.
      */
     public void drawImage() {
@@ -291,14 +301,9 @@
      * Checks for EGL errors.
      */
     private void checkEglError(String msg) {
-        boolean failed = false;
         int error;
-        while ((error = mEGL.eglGetError()) != EGL10.EGL_SUCCESS) {
-            Log.e(TAG, msg + ": EGL error: 0x" + Integer.toHexString(error));
-            failed = true;
-        }
-        if (failed) {
-            throw new RuntimeException("EGL error encountered (see log)");
+        if ((error = EGL14.eglGetError()) != EGL14.EGL_SUCCESS) {
+            throw new RuntimeException(msg + ": EGL error: 0x" + Integer.toHexString(error));
         }
     }
 }
diff --git a/tests/tests/media/src/android/media/cts/PresentationSyncTest.java b/tests/tests/media/src/android/media/cts/PresentationSyncTest.java
new file mode 100644
index 0000000..ac86f1e
--- /dev/null
+++ b/tests/tests/media/src/android/media/cts/PresentationSyncTest.java
@@ -0,0 +1,467 @@
+/*
+ * Copyright (C) 2013 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 android.media.cts;
+
+import android.opengl.GLES20;
+import android.os.Handler;
+import android.os.Looper;
+import android.os.Message;
+import android.os.Trace;
+import android.test.ActivityInstrumentationTestCase2;
+import android.test.suitebuilder.annotation.Suppress;
+import android.util.Log;
+import android.view.Choreographer;
+import android.view.SurfaceHolder;
+
+
+/**
+ * Tests synchronized frame presentation.
+ *
+ * SurfaceFlinger allows a "desired presentation time" value to be passed along with buffers of
+ * data.  This exercises that feature.
+ */
+public class PresentationSyncTest extends ActivityInstrumentationTestCase2<MediaStubActivity>
+        implements SurfaceHolder.Callback {
+    private static final String TAG = "PresentationSyncTest";
+    private static final boolean VERBOSE = false;           // lots of logging
+    private static final int FRAME_COUNT = 128;             // ~2 sec @ 60fps
+
+    // message values
+    private static final int START_TEST = 0;
+    private static final int END_TEST = 1;
+
+    // width and height of the Surface we're given to draw on
+    private int mWidth;
+    private int mHeight;
+
+    public PresentationSyncTest() {
+        super(MediaStubActivity.class);
+    }
+
+    /**
+     * Tests whether the output frame rate can be limited by the presentation time.
+     * <p>
+     * Generates and displays the same series of images three times.  The first run uses "now"
+     * as the desired presentation time to establish an estimate of the refresh time.  Later
+     * runs set the presentation time to (start_time + frame_number * refresh_time * multiplier),
+     * with the expectation that a multiplier of 2 will cause the animation to render at
+     * half speed.
+     * <p>
+     * This test does not use Choreographer.  The longer the test runs, the farther out of
+     * phase the test will become with respect to the actual vsync timing.
+     * <p>
+     * Setting the presentation time for a frame is most easily done through an EGL extension,
+     * so we render each frame through GL.
+     *
+     * @throws Exception
+     */
+    public void testThroughput() throws Exception {
+        // Get the Surface from the SurfaceView.
+        // TODO: is it safe to assume that it's ready?
+        SurfaceHolder holder = getActivity().getSurfaceHolder();
+        holder.addCallback(this);
+
+        // We use the width/height to render a simple series of patterns.  If we get this
+        // wrong it shouldn't really matter -- some driver optimizations might make things
+        // faster, but it shouldn't affect how long it takes the frame to be displayed.
+        //
+        // We can get this from the View or from the EGLSurface.  We don't have easy direct
+        // access to any of those things, so just ask our InputSurface to get it from EGL,
+        // since that's where we're drawing.
+        //
+        // Note: InputSurface was intended for a different purpose, but it's 99% right for our
+        // needs.  Maybe rename it to "RecordableSurface"?  Or trivially wrap it with a
+        // subclass that suppresses the EGL_RECORDABLE_ANDROID flag?
+        InputSurface output = new InputSurface(holder.getSurface());
+        mWidth = output.getWidth();
+        mHeight = output.getHeight();
+        Log.d(TAG, "Surface w=" + mWidth + " h=" + mHeight);
+        output.makeCurrent();
+
+        // Run a test with no presentation times specified.  Assuming nothing else is
+        // fighting us for resources, all frames should display as quickly as possible,
+        // and we can estimate the refresh rate of the device.
+        long baseTimeNsec = runThroughputTest(output, 0L, -1.0f);
+        long refreshNsec = baseTimeNsec / FRAME_COUNT;
+        Log.i(TAG, "Using " + refreshNsec + "ns as refresh rate");
+
+        // Run tests with times specified, at 1.3x, 1x, 1/2x, and 1/4x speed.
+        //
+        // One particular device is overly aggressive at reducing clock frequencies, and it
+        // will slow things to the point where we can't push frames quickly enough in the
+        // faster test.  By adding an artificial workload in a second thread we can make the
+        // system run faster.  (This could have a detrimental effect on a single-core CPU,
+        // so it's a no-op there.)
+        CpuWaster cpuWaster = new CpuWaster();
+        try {
+            cpuWaster.start();
+            runThroughputTest(output, refreshNsec, 0.75f);
+            cpuWaster.stop();
+            runThroughputTest(output, refreshNsec, 1.0f);
+            runThroughputTest(output, refreshNsec, 2.0f);
+            runThroughputTest(output, refreshNsec, 4.0f);
+        } finally {
+            cpuWaster.stop();
+        }
+
+        output.release();
+    }
+
+    /**
+     * Runs the throughput test on the provided surface with the specified time values.
+     * <p>
+     * If mult is -1, the test runs in "training" mode, rendering frames as quickly as
+     * possible.  This can be used to establish a baseline.
+     * <p>
+     * @return the test duration, in nanoseconds
+     */
+    private long runThroughputTest(InputSurface output, long frameTimeNsec, float mult) {
+        Log.d(TAG, "runThroughputTest: " + mult);
+
+        // Sleep briefly.  This is strangely necessary on some devices to allow the GPU to
+        // catch up (b/10898363).  It also provides an easily-visible break in the systrace
+        // output.
+        try { Thread.sleep(50); }
+        catch (InterruptedException ignored) {}
+
+        long startNsec = System.nanoTime();
+        long showNsec = 0;
+
+        if (true) {
+            // Output a frame that creates a "marker" in the --latency output
+            drawFrame(0, mult);
+            output.setPresentationTime(startNsec - 16700000L * 100);
+            Trace.beginSection("TEST BEGIN");
+            output.swapBuffers();
+            Trace.endSection();
+            startNsec = System.nanoTime();
+        }
+
+        for (int frameNum = 0; frameNum < FRAME_COUNT; frameNum++) {
+            if (mult != -1.0f) {
+                showNsec = startNsec + (long) (frameNum * frameTimeNsec * mult);
+            }
+            drawFrame(frameNum, mult);
+            output.setPresentationTime(showNsec);
+            Trace.beginSection("swapbuf " + frameNum);
+            output.swapBuffers();
+            Trace.endSection();
+        }
+
+        long endNsec = System.nanoTime();
+        long actualNsec = endNsec - startNsec;
+
+        if (mult != -1) {
+            // Some variation is inevitable, but we should be within a few percent of expected.
+            long expectedNsec = (long) (frameTimeNsec * FRAME_COUNT * mult);
+            long deltaNsec = Math.abs(expectedNsec - actualNsec);
+            double delta = (double) deltaNsec / expectedNsec;
+            final double MAX_DELTA = 0.05;
+            if (delta > MAX_DELTA) {
+                throw new RuntimeException("Time delta exceeds tolerance (" + MAX_DELTA +
+                        "): mult=" + mult + ": expected=" + expectedNsec +
+                        " actual=" + actualNsec + " p=" + delta);
+
+            } else {
+                Log.d(TAG, "mult=" + mult + ": expected=" + expectedNsec +
+                        " actual=" + actualNsec + " p=" + delta);
+            }
+        }
+        return endNsec - startNsec;
+    }
+
+
+    /**
+     * Exercises the test code, driving it off of Choreographer.  The animation is driven at
+     * full speed, but with rendering requested at a future time.  With each run the distance
+     * into the future is increased.
+     * <p>
+     * Loopers can't be reused once they quit, so it's easiest to create a new thread for
+     * each run.
+     * <p>
+     * (This isn't exactly a test -- it's primarily a way to exercise the code.  Evaluate the
+     * results with "dumpsys SurfaceFlinger --latency SurfaceView" for each multiplier.
+     * The idea is to see frames where the desired-present is as close as possible to the
+     * actual-present, while still minimizing frame-ready.  If we go too far into the future
+     * the BufferQueue will start to back up.)
+     * <p>
+     * @throws Exception
+     */
+    public void suppressed_testChoreographed() throws Throwable {
+        // Get the Surface from the SurfaceView.
+        // TODO: is it safe to assume that it's ready?
+        SurfaceHolder holder = getActivity().getSurfaceHolder();
+        holder.addCallback(this);
+
+        InputSurface output = new InputSurface(holder.getSurface());
+        mWidth = output.getWidth();
+        mHeight = output.getHeight();
+        Log.d(TAG, "Surface w=" + mWidth + " h=" + mHeight);
+
+        for (int i = 1; i < 5; i++) {
+            ChoreographedWrapper.runTest(this, output, i);
+        }
+
+        output.release();
+    }
+
+    /**
+     * Shifts the test to a new thread, so we can manage our own Looper.  Any exception
+     * thrown on the new thread is propagated to the caller.
+     */
+    private static class ChoreographedWrapper implements Runnable {
+        private final PresentationSyncTest mTest;
+        private final InputSurface mOutput;
+        private final int mFrameDelay;
+        private Throwable mThrowable;
+
+        private ChoreographedWrapper(PresentationSyncTest test, InputSurface output,
+                int frameDelay) {
+            mTest = test;
+            mOutput = output;
+            mFrameDelay = frameDelay;
+        }
+
+        @Override
+        public void run() {
+            try {
+                mTest.runChoreographedTest(mOutput, mFrameDelay);
+            } catch (Throwable th) {
+                mThrowable = th;
+            }
+        }
+
+        /** Entry point. */
+        public static void runTest(PresentationSyncTest obj, InputSurface output,
+                int frameDelay) throws Throwable {
+            ChoreographedWrapper wrapper = new ChoreographedWrapper(obj, output, frameDelay);
+            Thread th = new Thread(wrapper, "sync test");
+            th.start();
+            th.join();
+            if (wrapper.mThrowable != null) {
+                throw wrapper.mThrowable;
+            }
+        }
+    }
+
+    /**
+     * Runs the test, driven by callbacks from the Looper we define here.
+     */
+    private void runChoreographedTest(InputSurface output, int frameDelay) {
+        Log.d(TAG, "runChoreographedTest");
+
+        output.makeCurrent();
+        final ChoRunner chore = new ChoRunner(output);
+
+        Looper.prepare();
+        Handler handler = new Handler() {
+            @Override
+            public void handleMessage(Message msg) {
+                switch (msg.what) {
+                    case START_TEST:
+                        Log.d(TAG, "Starting test");
+                        chore.start(this, msg.arg1 /*frameDelay*/);
+                        break;
+                    case END_TEST:
+                        Log.d(TAG, "Ending test");
+                        Looper.myLooper().quitSafely();
+                        break;
+                    default:
+                        Log.d(TAG, "unknown message " + msg.what);
+                        break;
+                }
+            }
+        };
+
+        handler.sendMessage(Message.obtain(handler, START_TEST, frameDelay, 0));
+
+        Log.d(TAG, "looping (frameDelay=" + frameDelay + ")");
+        long startNanos = System.nanoTime();
+        Trace.beginSection("TEST BEGIN fd=" + frameDelay);
+        Looper.loop();
+        Trace.endSection();
+        long durationNanos = System.nanoTime() - startNanos;
+        Log.d(TAG, "loop exiting after " + durationNanos +
+                " (" + durationNanos / FRAME_COUNT + "ns)");
+
+        output.makeUnCurrent();
+    }
+
+
+    private class ChoRunner implements Choreographer.FrameCallback {
+        private final InputSurface mOutput;
+        private int mFrameDelay;
+        private Handler mHandler;
+        private int mCurFrame;
+        private Choreographer mChocho;
+        private long mPrevFrameTimeNanos;
+        private long mFrameDiff;
+
+        public ChoRunner(InputSurface output) {
+            mOutput = output;
+        }
+
+        public void start(Handler handler, int frameDelay) {
+            mHandler = handler;
+            mFrameDelay = frameDelay;
+
+            mCurFrame = 0;
+            mChocho = Choreographer.getInstance();
+            mChocho.postFrameCallback(this);
+        }
+
+        @Override
+        public void doFrame(long frameTimeNanos) {
+            if (mPrevFrameTimeNanos != 0) {
+                // Update our vsync rate guess every frame so that, if we start with a
+                // stutter, we don't carry it for the whole test.
+                assertTrue(frameTimeNanos > mPrevFrameTimeNanos);
+                long prevDiff = frameTimeNanos - mPrevFrameTimeNanos;
+                if (mFrameDiff == 0 || mFrameDiff > prevDiff) {
+                    mFrameDiff = prevDiff;
+                    Log.d(TAG, "refresh rate approx " + mFrameDiff + "ns");
+                }
+
+                // If the current diff is >= 2x the expected frame time diff, we stuttered
+                // and need to drop a frame.  (We might even need to drop more than one
+                // frame; ignoring that for now.)
+                if (prevDiff > mFrameDiff * 1.9) {
+                    Log.d(TAG, "skip " + mCurFrame + " diff=" + prevDiff);
+                    mCurFrame++;
+                }
+            }
+            mPrevFrameTimeNanos = frameTimeNanos;
+
+            if (mFrameDiff != 0) {
+                // set desired display time to N frames in the future, rather than ASAP.
+                //
+                // Note this is a "don't open until Xmas" feature.  If vsyncs are happening
+                // at times T1, T2, T3, and we want the frame to appear onscreen when the
+                // buffers flip at T2, then we can theoretically request any time value
+                // in [T1, T2).
+                mOutput.setPresentationTime(frameTimeNanos + (mFrameDiff * mFrameDelay));
+            }
+
+            drawFrame(mCurFrame, mFrameDelay);
+            Trace.beginSection("swapbuf " + mCurFrame);
+            mOutput.swapBuffers();
+            Trace.endSection();
+
+            if (++mCurFrame < FRAME_COUNT) {
+                mChocho.postFrameCallback(this);
+            } else {
+                mHandler.sendMessage(Message.obtain(mHandler, END_TEST));
+            }
+        }
+    }
+
+    /**
+     * Draws a frame with GLES in the current context.
+     */
+    private void drawFrame(int num, float mult) {
+        num %= 64;
+        float colorVal;
+
+        if (mult > 0) {
+            colorVal = 1.0f / mult;
+        } else {
+            colorVal = 0.1f;
+        }
+
+        int startX, startY;
+        startX = (num % 16) * (mWidth / 16);
+        startY = (num / 16) * (mHeight / 4);
+        if ((num >= 16 && num < 32) || (num >= 48)) {
+            // reverse direction
+            startX = (mWidth - mWidth/16) - startX;
+        }
+
+        // clear screen
+        GLES20.glClearColor(0.2f, 0.2f, 0.2f, 1.0f);
+        GLES20.glClear(GLES20.GL_COLOR_BUFFER_BIT);
+
+        // draw rect
+        GLES20.glEnable(GLES20.GL_SCISSOR_TEST);
+        GLES20.glScissor(startX, startY, mWidth / 16, mHeight / 4);
+        GLES20.glClearColor(colorVal, 1 - colorVal, 0.0f, 1.0f);
+        GLES20.glClear(GLES20.GL_COLOR_BUFFER_BIT);
+        GLES20.glDisable(GLES20.GL_SCISSOR_TEST);
+    }
+
+    @Override
+    public void surfaceCreated(SurfaceHolder holder) {
+        Log.d(TAG, "surfaceCreated");
+    }
+
+    @Override
+    public void surfaceChanged(SurfaceHolder holder, int format, int width,
+            int height) {
+        // This doesn't seem to happen in practice with current test framework -- Surface is
+        // already created before we start, and the orientation is locked.
+        Log.d(TAG, "surfaceChanged f=" + format + " w=" + width + " h=" + height);
+        mWidth = width;
+        mHeight = height;
+    }
+
+    @Override
+    public void surfaceDestroyed(SurfaceHolder holder) {
+        Log.d(TAG, "surfaceDestroyed");
+    }
+
+
+    /**
+     * Wastes CPU time.
+     * <p>
+     * The start() and stop() methods must be called from the same thread.
+     */
+    private static class CpuWaster {
+        volatile boolean mRunning = false;
+
+        public void start() {
+            if (mRunning) {
+                throw new IllegalStateException("already running");
+            }
+
+            if (Runtime.getRuntime().availableProcessors() < 2) {
+                return;
+            }
+
+            mRunning = true;
+
+            new Thread("Stupid") {
+                @Override
+                public void run() {
+                    while (mRunning) { /* spin! */ }
+                }
+            }.start();
+
+            // sleep briefly while the system re-evaluates its load (might want to spin)
+            try { Thread.sleep(10); }
+            catch (InterruptedException ignored) {}
+        }
+
+        public void stop() {
+            if (mRunning) {
+                mRunning = false;
+
+                // give the system a chance to slow back down
+                try { Thread.sleep(10); }
+                catch (InterruptedException ignored) {}
+            }
+        }
+    }
+}
diff --git a/tests/tests/media/src/android/media/cts/RemoteVirtualDisplayService.java b/tests/tests/media/src/android/media/cts/RemoteVirtualDisplayService.java
new file mode 100644
index 0000000..662cd5b
--- /dev/null
+++ b/tests/tests/media/src/android/media/cts/RemoteVirtualDisplayService.java
@@ -0,0 +1,226 @@
+/*
+ * Copyright (C) 2014 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 android.media.cts;
+
+import android.app.Presentation;
+import android.app.Service;
+import android.content.Context;
+import android.content.Intent;
+import android.graphics.drawable.ColorDrawable;
+import android.hardware.display.DisplayManager;
+import android.hardware.display.VirtualDisplay;
+import android.os.Binder;
+import android.os.Bundle;
+import android.os.Handler;
+import android.os.IBinder;
+import android.os.Looper;
+import android.os.Parcel;
+import android.os.RemoteException;
+import android.util.Log;
+import android.view.Display;
+import android.view.Surface;
+import android.view.ViewGroup.LayoutParams;
+import android.view.WindowManager;
+import android.widget.ImageView;
+
+public class RemoteVirtualDisplayService extends Service {
+    private static final String TAG = "RemoteVirtualDisplayService";
+
+    /** argument: Surface, int w, int h, return none */
+    private static final int BINDER_CMD_START = IBinder.FIRST_CALL_TRANSACTION;
+    /** argument: int color, return none */
+    private static final int BINDER_CMD_RENDER = IBinder.FIRST_CALL_TRANSACTION + 1;
+    private final Handler mHandlerForRunOnMain = new Handler(Looper.getMainLooper());;
+    private IBinder mBinder;
+    private VirtualDisplayPresentation mPresentation;
+
+    @Override
+    public void onCreate() {
+        Log.i(TAG, "onCreate");
+        mBinder = new Binder() {
+            @Override
+            protected boolean onTransact(int code, Parcel data, Parcel reply,
+                    int flags) throws RemoteException {
+                switch(code) {
+                    case BINDER_CMD_START: {
+                        Surface surface = Surface.CREATOR.createFromParcel(data);
+                        int w = data.readInt();
+                        int h = data.readInt();
+                        start(surface, w, h);
+                        break;
+                    }
+                    case BINDER_CMD_RENDER: {
+                        int color = data.readInt();
+                        render(color);
+                        break;
+                    }
+                    default:
+                        Log.e(TAG, "unrecognized binder command " + code);
+                        return false;
+                }
+                return true;
+            }
+        };
+    }
+
+    @Override
+    public IBinder onBind(Intent intent) {
+        Log.i(TAG, "onBind");
+        return mBinder;
+    }
+
+    @Override
+    public void onDestroy() {
+        Log.i(TAG, "onDestroy");
+        if (mPresentation != null) {
+            mPresentation.dismissPresentation();
+            mPresentation.destroyVirtualDisplay();
+            mPresentation = null;
+        }
+    }
+
+    private void start(Surface surface, int w, int h) {
+        Log.i(TAG, "start");
+        mPresentation = new VirtualDisplayPresentation(this, surface, w, h);
+        mPresentation.createVirtualDisplay();
+        mPresentation.createPresentation();
+    }
+
+    private void render(int color) {
+        Log.i(TAG, "render");
+        mPresentation.doRendering(color);
+    }
+
+    private class VirtualDisplayPresentation {
+        private Context mContext;
+        private Surface mSurface;
+        private int mWidth;
+        private int mHeight;
+        private final DisplayManager mDisplayManager;
+        private VirtualDisplay mVirtualDisplay;
+        private TestPresentation mPresentation;
+
+        VirtualDisplayPresentation(Context context, Surface surface, int w, int h) {
+            mContext = context;
+            mSurface = surface;
+            mWidth = w;
+            mHeight = h;
+            mDisplayManager = (DisplayManager)context.getSystemService(Context.DISPLAY_SERVICE);
+        }
+
+        void createVirtualDisplay() {
+            runOnMainSync(new Runnable() {
+                @Override
+                public void run() {
+                    mVirtualDisplay = mDisplayManager.createVirtualDisplay(
+                            TAG, mWidth, mHeight, 200, mSurface, 0);
+                }
+            });
+        }
+
+        void destroyVirtualDisplay() {
+            if (mVirtualDisplay != null) {
+                mVirtualDisplay.release();
+            }
+        }
+
+        void createPresentation() {
+            runOnMainSync(new Runnable() {
+                @Override
+                public void run() {
+                    mPresentation = new TestPresentation(RemoteVirtualDisplayService.this,
+                            mVirtualDisplay.getDisplay());
+                    mPresentation.show();
+                }
+            });
+        }
+
+        void dismissPresentation() {
+            if (mPresentation != null) {
+                mPresentation.dismiss();
+            }
+        }
+
+        public void doRendering(final int color) {
+            runOnMainSync(new Runnable() {
+                @Override
+                public void run() {
+                    mPresentation.doRendering(color);
+                }
+            });
+        }
+
+        private class TestPresentation extends Presentation {
+            private ImageView mImageView;
+
+            public TestPresentation(Context outerContext, Display display) {
+                super(outerContext, display);
+                getWindow().setType(WindowManager.LayoutParams.TYPE_PRIVATE_PRESENTATION);
+                getWindow().addFlags(WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED);
+            }
+
+            @Override
+            protected void onCreate(Bundle savedInstanceState) {
+                super.onCreate(savedInstanceState);
+                mImageView = new ImageView(getContext());
+                mImageView.setImageDrawable(new ColorDrawable(0));
+                mImageView.setLayoutParams(new LayoutParams(
+                        LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT));
+                setContentView(mImageView);
+            }
+
+            public void doRendering(int color) {
+                mImageView.setImageDrawable(new ColorDrawable(color));
+            }
+        }
+    }
+
+    private void runOnMainSync(Runnable runner) {
+        SyncRunnable sr = new SyncRunnable(runner);
+        mHandlerForRunOnMain.post(sr);
+        sr.waitForComplete();
+    }
+
+    private static final class SyncRunnable implements Runnable {
+        private final Runnable mTarget;
+        private boolean mComplete;
+
+        public SyncRunnable(Runnable target) {
+            mTarget = target;
+        }
+
+        public void run() {
+            mTarget.run();
+            synchronized (this) {
+                mComplete = true;
+                notifyAll();
+            }
+        }
+
+        public void waitForComplete() {
+            synchronized (this) {
+                while (!mComplete) {
+                    try {
+                        wait();
+                    } catch (InterruptedException e) {
+                        //ignore
+                    }
+                }
+            }
+        }
+    }
+}
diff --git a/tests/tests/media/src/android/media/cts/RingtoneManagerTest.java b/tests/tests/media/src/android/media/cts/RingtoneManagerTest.java
index ce3a9c4..dfaabb8 100644
--- a/tests/tests/media/src/android/media/cts/RingtoneManagerTest.java
+++ b/tests/tests/media/src/android/media/cts/RingtoneManagerTest.java
@@ -83,11 +83,6 @@
         Cursor c = mRingtoneManager.getCursor();
         assertTrue("Must have at least one ring tone available", c.getCount() > 0);
 
-        mRingtoneManager.setIncludeDrm(true);
-        assertTrue(mRingtoneManager.getIncludeDrm());
-        mRingtoneManager.setIncludeDrm(false);
-        assertFalse(mRingtoneManager.getIncludeDrm());
-
         assertNotNull(mRingtoneManager.getRingtone(0));
         assertNotNull(RingtoneManager.getRingtone(mContext, Settings.System.DEFAULT_RINGTONE_URI));
         int expectedPosition = 0;
diff --git a/tests/tests/media/src/android/media/cts/StreamingMediaPlayerTest.java b/tests/tests/media/src/android/media/cts/StreamingMediaPlayerTest.java
index c3ea337..4608b24 100644
--- a/tests/tests/media/src/android/media/cts/StreamingMediaPlayerTest.java
+++ b/tests/tests/media/src/android/media/cts/StreamingMediaPlayerTest.java
@@ -247,4 +247,36 @@
             mServer.shutdown();
         }
     }
+
+    public void testPlayHlsStream() throws Throwable {
+        localHlsTest("hls.m3u8", false, false);
+    }
+
+    public void testPlayHlsStreamWithQueryString() throws Throwable {
+        localHlsTest("hls.m3u8", true, false);
+    }
+
+    public void testPlayHlsStreamWithRedirect() throws Throwable {
+        localHlsTest("hls.m3u8", false, true);
+    }
+
+    private void localHlsTest(final String name, boolean appendQueryString, boolean redirect)
+            throws Throwable {
+        mServer = new CtsTestServer(mContext);
+        try {
+            String stream_url = null;
+            if (redirect) {
+                stream_url = mServer.getQueryRedirectingAssetUrl(name);
+            } else {
+                stream_url = mServer.getAssetUrl(name);
+            }
+            if (appendQueryString) {
+                stream_url += "?foo=bar/baz";
+            }
+
+            playLiveVideoTest(stream_url, 10);
+        } finally {
+            mServer.shutdown();
+        }
+    }
 }
diff --git a/tests/tests/media/src/android/media/cts/TextureRender.java b/tests/tests/media/src/android/media/cts/TextureRender.java
index eb4236c..4125dcf 100644
--- a/tests/tests/media/src/android/media/cts/TextureRender.java
+++ b/tests/tests/media/src/android/media/cts/TextureRender.java
@@ -16,17 +16,17 @@
 
 package android.media.cts;
 
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.IOException;
 import java.nio.ByteBuffer;
 import java.nio.ByteOrder;
 import java.nio.FloatBuffer;
 
-import javax.microedition.khronos.egl.EGLConfig;
-import javax.microedition.khronos.opengles.GL10;
-
+import android.graphics.Bitmap;
 import android.graphics.SurfaceTexture;
 import android.opengl.GLES11Ext;
 import android.opengl.GLES20;
-import android.opengl.GLSurfaceView;
 import android.opengl.Matrix;
 import android.util.Log;
 
@@ -44,9 +44,9 @@
     private final float[] mTriangleVerticesData = {
         // X, Y, Z, U, V
         -1.0f, -1.0f, 0, 0.f, 0.f,
-        1.0f, -1.0f, 0, 1.f, 0.f,
+         1.0f, -1.0f, 0, 1.f, 0.f,
         -1.0f,  1.0f, 0, 0.f, 1.f,
-        1.0f,  1.0f, 0, 1.f, 1.f,
+         1.0f,  1.0f, 0, 1.f, 1.f,
     };
 
     private FloatBuffer mTriangleVertices;
@@ -245,4 +245,58 @@
             throw new RuntimeException(op + ": glError " + error);
         }
     }
+
+    /**
+     * Saves the current frame to disk as a PNG image.  Frame starts from (0,0).
+     * <p>
+     * Useful for debugging.
+     */
+    public static void saveFrame(String filename, int width, int height) {
+        // glReadPixels gives us a ByteBuffer filled with what is essentially big-endian RGBA
+        // data (i.e. a byte of red, followed by a byte of green...).  We need an int[] filled
+        // with native-order ARGB data to feed to Bitmap.
+        //
+        // If we implement this as a series of buf.get() calls, we can spend 2.5 seconds just
+        // copying data around for a 720p frame.  It's better to do a bulk get() and then
+        // rearrange the data in memory.  (For comparison, the PNG compress takes about 500ms
+        // for a trivial frame.)
+        //
+        // So... we set the ByteBuffer to little-endian, which should turn the bulk IntBuffer
+        // get() into a straight memcpy on most Android devices.  Our ints will hold ABGR data.
+        // Swapping B and R gives us ARGB.  We need about 30ms for the bulk get(), and another
+        // 270ms for the color swap.
+        //
+        // Making this even more interesting is the upside-down nature of GL, which means we
+        // may want to flip the image vertically here.
+
+        ByteBuffer buf = ByteBuffer.allocateDirect(width * height * 4);
+        buf.order(ByteOrder.LITTLE_ENDIAN);
+        GLES20.glReadPixels(0, 0, width, height, GLES20.GL_RGBA, GLES20.GL_UNSIGNED_BYTE, buf);
+        buf.rewind();
+
+        int pixelCount = width * height;
+        int[] colors = new int[pixelCount];
+        buf.asIntBuffer().get(colors);
+        for (int i = 0; i < pixelCount; i++) {
+            int c = colors[i];
+            colors[i] = (c & 0xff00ff00) | ((c & 0x00ff0000) >> 16) | ((c & 0x000000ff) << 16);
+        }
+
+        FileOutputStream fos = null;
+        try {
+            fos = new FileOutputStream(filename);
+            Bitmap bmp = Bitmap.createBitmap(colors, width, height, Bitmap.Config.ARGB_8888);
+            bmp.compress(Bitmap.CompressFormat.PNG, 90, fos);
+            bmp.recycle();
+        } catch (IOException ioe) {
+            throw new RuntimeException("Failed to write file " + filename, ioe);
+        } finally {
+            try {
+                if (fos != null) fos.close();
+            } catch (IOException ioe2) {
+                throw new RuntimeException("Failed to close file " + filename, ioe2);
+            }
+        }
+        Log.d(TAG, "Saved " + width + "x" + height + " frame as '" + filename + "'");
+    }
 }
diff --git a/tests/tests/media/src/android/media/cts/Vp8EncoderTest.java b/tests/tests/media/src/android/media/cts/Vp8EncoderTest.java
index 308fb98..14e4055 100644
--- a/tests/tests/media/src/android/media/cts/Vp8EncoderTest.java
+++ b/tests/tests/media/src/android/media/cts/Vp8EncoderTest.java
@@ -21,6 +21,7 @@
 import android.media.MediaCodec;
 import android.media.MediaCodecInfo.CodecCapabilities;
 import android.media.MediaFormat;
+import android.os.Bundle;
 import android.test.AndroidTestCase;
 import android.util.Log;
 
@@ -40,8 +41,8 @@
 
     private static final String TAG = "VP8EncoderTest";
     private static final String VP8_MIME = "video/x-vnd.on2.vp8";
-    private static final String VPX_DECODER_NAME = "OMX.google.vpx.decoder";
-    private static final String VPX_ENCODER_NAME = "OMX.google.vpx.encoder";
+    private static final String VPX_DECODER_NAME = "OMX.google.vp8.decoder";
+    private static final String VPX_ENCODER_NAME = "OMX.google.vp8.encoder";
     private static final String BASIC_IVF = "video_176x144_vp8_basic.ivf";
     private static final long DEFAULT_TIMEOUT_US = 5000;
 
@@ -71,6 +72,31 @@
         decode(BASIC_IVF);
     }
 
+    /**
+     * Check if MediaCodec.PARAMETER_KEY_REQUEST_SYNC_FRAME is honored.
+     *
+     * At frame 15, request a sync frame. If one does not occur by EOF the
+     * encoder fails. The test does not verify the output stream.
+     */
+    public void testSyncFrame() throws Exception {
+        encodeSyncFrame(R.raw.video_176x144_yv12,
+                        176, // width
+                        144, // height
+                        30); // framerate
+    }
+
+    /**
+     * Check if MediaCodec.PARAMETER_KEY_VIDEO_BITRATE is honored.
+     *
+     * Run the sample multiple times. Request periodic changes to the
+     * bitrate and ensure the encoder responds.
+     */
+    public void testVariableBitrate() throws Exception {
+        encodeVariableBitrate(R.raw.video_176x144_yv12,
+                              176, // width
+                              144, // height
+                              30); // framerate
+    }
 
     /**
      * A basic check if an encoded stream is decodable.
@@ -191,9 +217,6 @@
      */
     private void encode(String outputFilename, int rawInputFd,
                        int frameWidth, int frameHeight, int frameRate) throws Exception {
-        int frameSize = frameWidth * frameHeight * 3 / 2;
-
-
         // Create a media format signifying desired output
         MediaFormat format = MediaFormat.createVideoFormat(VP8_MIME, frameWidth, frameHeight);
         format.setInteger(MediaFormat.KEY_BIT_RATE, 100000);
@@ -221,7 +244,8 @@
             ivf = new IvfWriter(outputFilename, frameWidth, frameHeight);
             // encode loop
             long presentationTimeUs = 0;
-            int frameIndex = 0;
+            int inputFrameIndex = 0;
+            int outputFrameIndex = 0;
             boolean sawInputEOS = false;
             boolean sawOutputEOS = false;
 
@@ -229,6 +253,10 @@
                 if (!sawInputEOS) {
                     int inputBufIndex = encoder.dequeueInputBuffer(DEFAULT_TIMEOUT_US);
                     if (inputBufIndex >= 0) {
+                        // YUV420 has 3 planes. Y is full size. U and V are each half size (1/4 the
+                        // pixels).
+                        int frameSize = frameWidth * frameHeight * 3 / 2;
+
                         byte[] frame = new byte[frameSize];
                         int bytesRead = rawStream.read(frame);
 
@@ -241,8 +269,8 @@
                         mInputBuffers[inputBufIndex].put(frame);
                         mInputBuffers[inputBufIndex].rewind();
 
-                        presentationTimeUs = (frameIndex * 1000000) / frameRate;
-                        Log.d(TAG, "Encoding frame at index " + frameIndex);
+                        presentationTimeUs = (inputFrameIndex * 1000000) / frameRate;
+                        Log.d(TAG, "Encoding frame at index " + inputFrameIndex);
                         encoder.queueInputBuffer(
                                 inputBufIndex,
                                 0,  // offset
@@ -250,7 +278,7 @@
                                 presentationTimeUs,
                                 sawInputEOS ? MediaCodec.BUFFER_FLAG_END_OF_STREAM : 0);
 
-                        frameIndex++;
+                        inputFrameIndex++;
                     }
                 }
 
@@ -261,6 +289,12 @@
                     mOutputBuffers[outputBufIndex].rewind();
                     mOutputBuffers[outputBufIndex].get(buffer, 0, mBufferInfo.size);
 
+                    if ((outputFrameIndex == 0)
+                        && ((mBufferInfo.flags & MediaCodec.BUFFER_FLAG_SYNC_FRAME) == 0)) {
+                      throw new RuntimeException("First frame is not a sync frame.");
+
+                    }
+
                     if ((mBufferInfo.flags & MediaCodec.BUFFER_FLAG_END_OF_STREAM) != 0) {
                         sawOutputEOS = true;
                     } else {
@@ -268,6 +302,8 @@
                     }
                     encoder.releaseOutputBuffer(outputBufIndex,
                                                 false);  // render
+
+                    outputFrameIndex++;
                 } else if (result == MediaCodec.INFO_OUTPUT_BUFFERS_CHANGED) {
                     mOutputBuffers = encoder.getOutputBuffers();
                 }
@@ -285,4 +321,289 @@
             }
         }
     }
+
+
+    /**
+     * Request Sync Frames
+     *
+     * MediaCodec will raise an IllegalStateException
+     * whenever vp8 encoder fails to encode a frame.
+     *
+     * This presumes a file with 28 frames. Under normal circumstances there
+     * would only be one sync frame: the first one. This test will request an
+     * additional sync frame at 15 and ensure that it occurs by EOF.
+     *
+     * Color format of input file should be YUV420, and frameWidth,
+     * frameHeight should be supplied correctly as raw input file doesn't
+     * include any header data.
+     *
+     * @param rawInputFd      File descriptor for the raw input file (YUV420)
+     * @param frameWidth      Frame width of input file
+     * @param frameHeight     Frame height of input file
+     * @param frameRate       Frame rate of input file in frames per second
+     */
+    private void encodeSyncFrame(int rawInputFd, int frameWidth,
+                                 int frameHeight, int frameRate) throws Exception {
+        // Create a media format signifying desired output
+        MediaFormat format = MediaFormat.createVideoFormat(VP8_MIME, frameWidth, frameHeight);
+        format.setInteger(MediaFormat.KEY_BIT_RATE, 100000);
+        format.setInteger(MediaFormat.KEY_COLOR_FORMAT,
+                          CodecCapabilities.COLOR_FormatYUV420Planar);
+        format.setInteger(MediaFormat.KEY_FRAME_RATE, 30);
+
+        Log.d(TAG, "Creating encoder");
+        MediaCodec encoder;
+        encoder = MediaCodec.createByCodecName(VPX_ENCODER_NAME);
+        encoder.configure(format,
+                          null,  // surface
+                          null,  // crypto
+                          MediaCodec.CONFIGURE_FLAG_ENCODE);
+        encoder.start();
+
+        mInputBuffers = encoder.getInputBuffers();
+        mOutputBuffers = encoder.getOutputBuffers();
+
+        InputStream rawStream = null;
+
+        try {
+            rawStream = mResources.openRawResource(rawInputFd);
+            // encode loop
+            long presentationTimeUs = 0;
+            int inputFrameIndex = 0;
+            boolean sawInputEOS = false;
+            boolean sawOutputEOS = false;
+            boolean syncFrameRequested = false;
+            boolean matchedSyncFrame = false;
+
+            while (!sawOutputEOS) {
+                if (!sawInputEOS) {
+                    int inputBufIndex = encoder.dequeueInputBuffer(DEFAULT_TIMEOUT_US);
+                    if (inputBufIndex >= 0) {
+                        int frameSize = frameWidth * frameHeight * 3 / 2;
+
+                        byte[] frame = new byte[frameSize];
+                        int bytesRead = rawStream.read(frame);
+
+                        if (bytesRead == -1) {
+                            sawInputEOS = true;
+                            bytesRead = 0;
+                        }
+
+                        mInputBuffers[inputBufIndex].clear();
+                        mInputBuffers[inputBufIndex].put(frame);
+                        mInputBuffers[inputBufIndex].rewind();
+
+                        if (inputFrameIndex == 15) {
+                            Log.d(TAG, "Requesting sync frame at index " + inputFrameIndex);
+                            Bundle syncFrame = new Bundle();
+                            syncFrame.putInt(MediaCodec.PARAMETER_KEY_REQUEST_SYNC_FRAME, 0);
+                            encoder.setParameters(syncFrame);
+                            syncFrameRequested = true;
+                        }
+
+                        presentationTimeUs = (inputFrameIndex * 1000000) / frameRate;
+                        encoder.queueInputBuffer(
+                                inputBufIndex,
+                                0,  // offset
+                                bytesRead,  // size
+                                presentationTimeUs,
+                                sawInputEOS ? MediaCodec.BUFFER_FLAG_END_OF_STREAM : 0);
+
+                        inputFrameIndex++;
+                    }
+                }
+
+                int result = encoder.dequeueOutputBuffer(mBufferInfo, DEFAULT_TIMEOUT_US);
+                if (result >= 0) {
+                    if (syncFrameRequested && ((mBufferInfo.flags & MediaCodec.BUFFER_FLAG_SYNC_FRAME) != 0)) {
+                        Log.d(TAG, "Found sync frame");
+                        matchedSyncFrame = true;
+                    }
+
+                    if ((mBufferInfo.flags & MediaCodec.BUFFER_FLAG_END_OF_STREAM) != 0) {
+                        sawOutputEOS = true;
+                    }
+
+                    encoder.releaseOutputBuffer(result,
+                                                false);  // render
+
+                } else if (result == MediaCodec.INFO_OUTPUT_BUFFERS_CHANGED) {
+                    mOutputBuffers = encoder.getOutputBuffers();
+                }
+            }
+
+            if (!matchedSyncFrame) {
+                throw new RuntimeException("Requested sync frame did not occur");
+            }
+
+            encoder.stop();
+            encoder.release();
+        } finally {
+            if (rawStream != null) {
+                rawStream.close();
+            }
+        }
+    }
+
+
+    /**
+     * Adjust bitrate
+     *
+     * MediaCodec will raise an IllegalStateException
+     * whenever vp8 encoder fails to encode a frame.
+     *
+     * Encode the file three times: once at the initial bitrate, once at an
+     * increased bitrate, and once at a decreased bitrate. Record the frame
+     * sizes that are returned and verify a strict ordering.
+     *
+     * Color format of input file should be YUV420, and frameWidth,
+     * frameHeight should be supplied correctly as raw input file doesn't
+     * include any header data.
+     *
+     * @param rawInputFd      File descriptor for the raw input file (YUV420)
+     * @param frameWidth      Frame width of input file
+     * @param frameHeight     Frame height of input file
+     * @param frameRate       Frame rate of input file in frames per second
+     */
+    private void encodeVariableBitrate(int rawInputFd, int frameWidth,
+                                       int frameHeight, int frameRate) throws Exception {
+        // Create a media format signifying desired output
+        MediaFormat format = MediaFormat.createVideoFormat(VP8_MIME, frameWidth, frameHeight);
+        format.setInteger(MediaFormat.KEY_BIT_RATE, 75000);
+        format.setInteger(MediaFormat.KEY_COLOR_FORMAT,
+                          CodecCapabilities.COLOR_FormatYUV420Planar);
+        format.setInteger(MediaFormat.KEY_FRAME_RATE, 30);
+
+        Log.d(TAG, "Creating encoder");
+        MediaCodec encoder;
+        encoder = MediaCodec.createByCodecName(VPX_ENCODER_NAME);
+        encoder.configure(format,
+                          null,  // surface
+                          null,  // crypto
+                          MediaCodec.CONFIGURE_FLAG_ENCODE);
+        encoder.start();
+
+        mInputBuffers = encoder.getInputBuffers();
+        mOutputBuffers = encoder.getOutputBuffers();
+
+        InputStream rawStream = null;
+
+        int iteration = 0;
+        int[] bits = new int[100];
+
+        try {
+            rawStream = mResources.openRawResource(rawInputFd);
+            /* Doc says this is not the default:
+             * http://developer.android.com/reference/java/io/InputStream.html#markSupported()
+             * but it returns true so using .reset() instead of close/open
+             */
+            if (rawStream.markSupported()) Log.d(TAG, "Stream marking supported");
+            rawStream.mark(1000000);
+
+            // encode loop
+            long presentationTimeUs = 0;
+            int inputFrameIndex = 0;
+            int outputFrameIndex = 0;
+            boolean sawInputEOS = false;
+            boolean sawOutputEOS = false;
+
+            while (!sawOutputEOS) {
+                if (!sawInputEOS) {
+                    int inputBufIndex = encoder.dequeueInputBuffer(DEFAULT_TIMEOUT_US);
+                    if (inputBufIndex >= 0) {
+                        int frameSize = frameWidth * frameHeight * 3 / 2;
+
+                        byte[] frame = new byte[frameSize];
+                        int bytesRead = rawStream.read(frame);
+
+                        if (bytesRead == -1) {
+                            if (iteration < 2) {
+                                rawStream.reset();
+                                Bundle bitrate = new Bundle();
+                                if (iteration == 0) {
+                                    bitrate.putInt(MediaCodec.PARAMETER_KEY_VIDEO_BITRATE, 150000);
+                                    Log.d(TAG, "Setting bitrate to 150000");
+                                } else {
+                                    bitrate.putInt(MediaCodec.PARAMETER_KEY_VIDEO_BITRATE, 25000);
+                                    Log.d(TAG, "Setting bitrate to 25000");
+                                }
+                                encoder.setParameters(bitrate);
+
+                                iteration++;
+                                continue;
+                            } else {
+                                sawInputEOS = true;
+                                bytesRead = 0;
+                            }
+                        }
+
+                        mInputBuffers[inputBufIndex].clear();
+                        mInputBuffers[inputBufIndex].put(frame);
+                        mInputBuffers[inputBufIndex].rewind();
+
+                        presentationTimeUs = (inputFrameIndex * 1000000) / frameRate;
+                        encoder.queueInputBuffer(
+                                inputBufIndex,
+                                0,  // offset
+                                bytesRead,  // size
+                                presentationTimeUs,
+                                sawInputEOS ? MediaCodec.BUFFER_FLAG_END_OF_STREAM : 0);
+
+                        inputFrameIndex++;
+                    }
+                }
+
+                int result = encoder.dequeueOutputBuffer(mBufferInfo, DEFAULT_TIMEOUT_US);
+                if (result >= 0) {
+
+                    bits[outputFrameIndex] = mBufferInfo.size;
+
+                    if ((mBufferInfo.flags & MediaCodec.BUFFER_FLAG_END_OF_STREAM) != 0) {
+                        sawOutputEOS = true;
+                    }
+
+                    encoder.releaseOutputBuffer(result,
+                                                false);  // render
+
+                    outputFrameIndex++;
+
+                } else if (result == MediaCodec.INFO_OUTPUT_BUFFERS_CHANGED) {
+                    mOutputBuffers = encoder.getOutputBuffers();
+                }
+            }
+
+            // 29 frames per run
+            int i;
+            int sum = 0;
+            int frames = 29;
+            for(i = 0; i < frames; i++)
+              sum += bits[i];
+            int midBitrateAvg = sum / frames;
+
+            sum = 0;
+            for(; i < frames * 2; i++)
+              sum += bits[i];
+            int highBitrateAvg = sum / frames;
+
+            sum = 0;
+            for(; i < frames * 3; i++)
+              sum += bits[i];
+            int lowBitrateAvg = sum / frames;
+
+            // For the given bitrates we expect mid ~= 350, high ~= 575 and low ~= 150
+            // bytes per frame
+            if ((midBitrateAvg + 100) > highBitrateAvg)
+                throw new RuntimeException("Bitrate did not increase when requesting higher bitrate");
+            if ((lowBitrateAvg + 100) > midBitrateAvg)
+                throw new RuntimeException("Bitrate did not decrease when requesting lower bitrate");
+
+
+            encoder.stop();
+            encoder.release();
+        } finally {
+            if (rawStream != null) {
+                rawStream.close();
+            }
+        }
+    }
 }
diff --git a/tests/tests/mediastress/Android.mk b/tests/tests/mediastress/Android.mk
index 7f75501..9f43597 100644
--- a/tests/tests/mediastress/Android.mk
+++ b/tests/tests/mediastress/Android.mk
@@ -22,7 +22,7 @@
 
 LOCAL_JAVA_LIBRARIES := android.test.runner
 
-LOCAL_STATIC_JAVA_LIBRARIES := ctstestrunner ctsutil
+LOCAL_STATIC_JAVA_LIBRARIES := ctstestrunner ctsdeviceutil
 
 LOCAL_JNI_SHARED_LIBRARIES := libctsmediastress_jni
 
diff --git a/tests/tests/mediastress/src/android/mediastress/cts/H263QcifLongPlayerTest.java b/tests/tests/mediastress/src/android/mediastress/cts/H263QcifLongPlayerTest.java
index 865dfe7..482aec9 100644
--- a/tests/tests/mediastress/src/android/mediastress/cts/H263QcifLongPlayerTest.java
+++ b/tests/tests/mediastress/src/android/mediastress/cts/H263QcifLongPlayerTest.java
@@ -16,7 +16,7 @@
 
 package android.mediastress.cts;
 
-import android.cts.util.TimeoutReq;
+import com.android.cts.util.TimeoutReq;
 
 public class H263QcifLongPlayerTest extends MediaPlayerStressTest {
     private final static String VIDEO_PATH_MIDDLE = "bbb_full/176x144/3gp_h263_libfaac/";
diff --git a/tests/tests/mediastress/src/android/mediastress/cts/H264R1080pAacRepeatedPlayerTest.java b/tests/tests/mediastress/src/android/mediastress/cts/H264R1080pAacRepeatedPlayerTest.java
new file mode 100644
index 0000000..db5d732
--- /dev/null
+++ b/tests/tests/mediastress/src/android/mediastress/cts/H264R1080pAacRepeatedPlayerTest.java
@@ -0,0 +1,41 @@
+/*
+ * Copyright (C) 2012 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 android.mediastress.cts;
+
+import android.media.CamcorderProfile;
+import android.media.MediaRecorder.AudioEncoder;
+import android.media.MediaRecorder.VideoEncoder;
+
+public class H264R1080pAacRepeatedPlayerTest extends MediaPlayerStressTest {
+    private static final String VIDEO_PATH_MIDDLE = "bbb_short/1920x1080/mp4_libx264_libfaac/";
+    private final String[] mMedias = {
+        "bbb_short.ffmpeg.1920x1080.mp4.libx264_10000kbps_30fps.libfaac_stereo_192kbps_48000Hz.mp4",
+    };
+
+    public H264R1080pAacRepeatedPlayerTest() {
+        super(CamcorderProfile.QUALITY_1080P, VideoEncoder.H264, AudioEncoder.AAC);
+    }
+
+    public void testPlay00() throws Exception {
+        doTestVideoPlaybackRepeated(0);
+    }
+
+    @Override
+    protected String getFullVideoClipName(int mediaNumber) {
+        return VIDEO_TOP_DIR + VIDEO_PATH_MIDDLE + mMedias[mediaNumber];
+    }
+}
diff --git a/tests/tests/mediastress/src/android/mediastress/cts/MediaPlayerStressTest.java b/tests/tests/mediastress/src/android/mediastress/cts/MediaPlayerStressTest.java
index 3678811..d980e52 100644
--- a/tests/tests/mediastress/src/android/mediastress/cts/MediaPlayerStressTest.java
+++ b/tests/tests/mediastress/src/android/mediastress/cts/MediaPlayerStressTest.java
@@ -40,6 +40,7 @@
     protected static final String VIDEO_TOP_DIR = WorkDir.getMediaDirString();
     protected static final int REPEAT_NUMBER_FOR_SHORT_CLIPS = 2;
     protected static final int REPEAT_NUMBER_FOR_LONG_CLIPS = 1;
+    protected static final int REPEAT_NUMBER_FOR_REPEATED_PLAYBACK = 20;
     private static final String TAG = "MediaPlayerStressTest";
     // whether a video format is supported or not.
     private final boolean mSupported;
@@ -168,4 +169,8 @@
     protected void doTestVideoPlaybackLong(int mediaNumber) throws Exception {
         doTestVideoPlayback(mediaNumber, REPEAT_NUMBER_FOR_LONG_CLIPS);
     }
+
+    protected void doTestVideoPlaybackRepeated(int mediaNumber) throws Exception {
+        doTestVideoPlayback(mediaNumber, REPEAT_NUMBER_FOR_REPEATED_PLAYBACK);
+    }
 }
diff --git a/tests/tests/nativemedia/sl/Android.mk b/tests/tests/nativemedia/sl/Android.mk
index d999b57..49ccb10 100644
--- a/tests/tests/nativemedia/sl/Android.mk
+++ b/tests/tests/nativemedia/sl/Android.mk
@@ -1,11 +1,16 @@
 # Build the unit tests.
 
 LOCAL_PATH:= $(call my-dir)
+
+test_executable := NativeMediaTest_SL
+
 include $(CLEAR_VARS)
 
+LOCAL_MODULE := $(test_executable)
 LOCAL_MODULE_TAGS := optional
+LOCAL_MODULE_PATH := $(TARGET_OUT_DATA)/nativetest
 
-LOCAL_C_INCLUDES:= \
+LOCAL_C_INCLUDES := \
     bionic \
     bionic/libstdc++/include \
     external/gtest/include \
@@ -13,22 +18,18 @@
     external/stlport/stlport \
     $(call include-path-for, wilhelm-ut)
 
-LOCAL_SRC_FILES:= \
+LOCAL_SRC_FILES := \
     src/SLObjectCreationTest.cpp
 
 LOCAL_SHARED_LIBRARIES := \
-  libutils \
-  liblog \
-  libOpenSLES \
-  libstlport
+    libutils \
+    liblog \
+    libOpenSLES \
+    libstlport
 
 LOCAL_STATIC_LIBRARIES := \
     libOpenSLESUT \
     libgtest
 
-LOCAL_MODULE:= NativeMediaTest_SL
-
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA)/nativetest
-
 LOCAL_CTS_TEST_PACKAGE := android.nativemedia.sl
 include $(BUILD_CTS_EXECUTABLE)
diff --git a/tests/tests/nativemedia/sl/NativeMediaTest_SL_list.txt b/tests/tests/nativemedia/sl/NativeMediaTest_SL_list.txt
new file mode 100644
index 0000000..c5d17a3
--- /dev/null
+++ b/tests/tests/nativemedia/sl/NativeMediaTest_SL_list.txt
@@ -0,0 +1,11 @@
+SLObjectCreationTest.
+  testEngineCreation
+  testOutputMixCreation
+  testAudioPlayerFromUriCreation
+  testAudioPlayerFromFdCreation
+  testAudioPlayerFromPcmBqCreation
+  testAudioPlayerFromTsAbqCreation
+  testAudioPlayerFromUriToPcmBqCreation
+  testAudioPlayerFromFdToPcmBqCreation
+  testAudioPlayerFromAdtsAbqToPcmBqCreation
+  testAudioRecorderCreation
diff --git a/tests/tests/nativemedia/sl/src/SLObjectCreationTest.cpp b/tests/tests/nativemedia/sl/src/SLObjectCreationTest.cpp
index 804263e..d0b3be0 100644
--- a/tests/tests/nativemedia/sl/src/SLObjectCreationTest.cpp
+++ b/tests/tests/nativemedia/sl/src/SLObjectCreationTest.cpp
@@ -35,12 +35,16 @@
 #define LOG_NDEBUG 0
 #define LOG_TAG "SLObjectCreationTest"
 
+#include <gtest/gtest.h>
 #include <utils/Log.h>
+
+#if !defined(BUILD_ONLY)
 #include "SLES/OpenSLES.h"
 #include "SLES/OpenSLES_Android.h"
 #include "OpenSLESUT.h"
-#include <gtest/gtest.h>
+#endif
 
+#if !defined(BUILD_ONLY)
 //-----------------------------------------------------------------
 /* Checks for error and displays the error code if any */
 bool IsOk(SLresult res) {
@@ -305,6 +309,20 @@
         (*audioRecorderObj)->Destroy(audioRecorderObj);
     }
 };
+#else
+class SLObjectCreationTest : public ::testing::Test {
+protected:
+    void OutputMixCreation() { }
+    void AudioPlayerFromUriCreation() { }
+    void AudioPlayerFromFdCreation() { }
+    void AudioPlayerFromPcmBqCreation() { }
+    void AudioPlayerFromTsAbqCreation() { }
+    void AudioPlayerFromUriToPcmBqCreation() { }
+    void AudioPlayerFromFdToPcmBqCreation() { }
+    void AudioPlayerFromAdtsAbqToPcmBqCreation() { }
+    void AudioRecorderCreation(bool) { }
+};
+#endif
 
 //-------------------------------------------------------------------------------------------------
 TEST_F(SLObjectCreationTest, testEngineCreation) {
diff --git a/tests/tests/nativemedia/xa/Android.mk b/tests/tests/nativemedia/xa/Android.mk
index dad8acd..f2c0ca0 100644
--- a/tests/tests/nativemedia/xa/Android.mk
+++ b/tests/tests/nativemedia/xa/Android.mk
@@ -1,11 +1,16 @@
 # Build the unit tests.
 
 LOCAL_PATH:= $(call my-dir)
+
+test_executable := NativeMediaTest_XA
+
 include $(CLEAR_VARS)
 
+LOCAL_MODULE:= $(test_executable)
 LOCAL_MODULE_TAGS := optional
+LOCAL_MODULE_PATH := $(TARGET_OUT_DATA)/nativetest
 
-LOCAL_C_INCLUDES:= \
+LOCAL_C_INCLUDES := \
     bionic \
     bionic/libstdc++/include \
     external/gtest/include \
@@ -13,7 +18,7 @@
     external/stlport/stlport \
     $(call include-path-for, wilhelm-ut)
 
-LOCAL_SRC_FILES:= \
+LOCAL_SRC_FILES := \
     src/XAObjectCreationTest.cpp
 
 LOCAL_SHARED_LIBRARIES := \
@@ -25,9 +30,5 @@
 LOCAL_STATIC_LIBRARIES := \
     libgtest
 
-LOCAL_MODULE:= NativeMediaTest_XA
-
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA)/nativetest
-
 LOCAL_CTS_TEST_PACKAGE := android.nativemedia.xa
 include $(BUILD_CTS_EXECUTABLE)
diff --git a/tests/tests/nativemedia/xa/NativeMediaTest_XA_list.txt b/tests/tests/nativemedia/xa/NativeMediaTest_XA_list.txt
new file mode 100644
index 0000000..af8bfad
--- /dev/null
+++ b/tests/tests/nativemedia/xa/NativeMediaTest_XA_list.txt
@@ -0,0 +1,3 @@
+XAObjectCreationTest.
+  testEngineCreation
+  testOutputMixCreation
diff --git a/tests/tests/nativemedia/xa/src/XAObjectCreationTest.cpp b/tests/tests/nativemedia/xa/src/XAObjectCreationTest.cpp
index 3ff84c2..d905451 100644
--- a/tests/tests/nativemedia/xa/src/XAObjectCreationTest.cpp
+++ b/tests/tests/nativemedia/xa/src/XAObjectCreationTest.cpp
@@ -24,12 +24,15 @@
 #define LOG_NDEBUG 0
 #define LOG_TAG "XAObjectCreationTest"
 
+#include <gtest/gtest.h>
 #include <utils/Log.h>
+
+#if !defined(BUILD_ONLY)
 #include "OMXAL/OpenMAXAL.h"
 #include "OMXAL/OpenMAXAL_Android.h"
-//#include <android/native_window_jni.h>
-#include <gtest/gtest.h>
+#endif
 
+#if !defined(BUILD_ONLY)
 //-----------------------------------------------------------------
 /* Checks for error and displays the error code if any */
 bool IsOk(XAresult res) {
@@ -115,6 +118,12 @@
     }
 
 };
+#else
+class XAObjectCreationTest : public ::testing::Test {
+protected:
+    void OutputMixCreation() { }
+};
+#endif
 
 //-------------------------------------------------------------------------------------------------
 TEST_F(XAObjectCreationTest, testEngineCreation) {
diff --git a/tests/tests/nativeopengl/CtsNativeOpenGLTestCases_list.txt b/tests/tests/nativeopengl/CtsNativeOpenGLTestCases_list.txt
new file mode 100644
index 0000000..8daf3b2
--- /dev/null
+++ b/tests/tests/nativeopengl/CtsNativeOpenGLTestCases_list.txt
@@ -0,0 +1,6 @@
+EGLCleanupTest.
+  TestCorrect
+EGLCreateContextTest.
+  BadAttributeFails
+GLTest.
+  ClearColorTest
diff --git a/tests/tests/nativeopengl/libnativeopengltests/Android.mk b/tests/tests/nativeopengl/libnativeopengltests/Android.mk
index c9e10c4..5d7dd6e 100644
--- a/tests/tests/nativeopengl/libnativeopengltests/Android.mk
+++ b/tests/tests/nativeopengl/libnativeopengltests/Android.mk
@@ -34,7 +34,9 @@
 LOCAL_SRC_FILES := \
         register.cpp \
         GLTestHelper.cpp \
-        tests/GLTest_test.cpp
+        tests/GLTest_test.cpp \
+        tests/EGLCleanup_test.cpp \
+        tests/EGLCreateContext_test.cpp
 
 LOCAL_SHARED_LIBRARIES := libEGL \
                           libGLESv2 \
diff --git a/tests/tests/nativeopengl/standalone/.gitignore b/tests/tests/nativeopengl/standalone/.gitignore
new file mode 100644
index 0000000..1d1cdd2
--- /dev/null
+++ b/tests/tests/nativeopengl/standalone/.gitignore
@@ -0,0 +1,8 @@
+bin/
+build.xml
+gen/
+libs/
+local.properties
+obj/
+proguard-project.txt
+project.properties
diff --git a/tests/tests/nativeopengl/standalone/AndroidManifest.xml b/tests/tests/nativeopengl/standalone/AndroidManifest.xml
index a82e42a..9092f69 100644
--- a/tests/tests/nativeopengl/standalone/AndroidManifest.xml
+++ b/tests/tests/nativeopengl/standalone/AndroidManifest.xml
@@ -20,7 +20,8 @@
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
     package="com.android.gltest"
     android:versionCode="1"
-    android:versionName="1.0" >
+    android:versionName="1.0"
+    android:debuggable="true" >
 
     <uses-sdk
         android:minSdkVersion="8"
@@ -28,7 +29,7 @@
 
     <uses-permission android:name="android.permission.DISABLE_KEYGUARD" />
 
-    <application>
+    <application android:label="NativeGLTest">
         <activity android:name=".GLTestActivity">
             <intent-filter>
                 <action android:name="android.intent.action.MAIN" />
diff --git a/tests/tests/nativeopengl/standalone/jni/Android.mk b/tests/tests/nativeopengl/standalone/jni/Android.mk
index c23a1df..53d9bbf 100644
--- a/tests/tests/nativeopengl/standalone/jni/Android.mk
+++ b/tests/tests/nativeopengl/standalone/jni/Android.mk
@@ -27,7 +27,7 @@
 LOCAL_C_INCLUDES := $(MY_GTEST_PATH)/include
 LOCAL_SRC_FILES := src/gtest-all.cc
 
-include $(BUILD_SHARED_LIBRARY)
+include $(BUILD_STATIC_LIBRARY)
 
 # nativetests
 
@@ -37,12 +37,15 @@
 
 LIB_PATH := $(LOCAL_PATH)/../libs/$(TARGET_ARCH_ABI)/
 LOCAL_C_INCLUDES := $(MY_GTEST_PATH)/include
-LOCAL_LDLIBS    := -L$(LIB_PATH) -landroid -lEGL -lGLESv2 -llog -lgtest
+LOCAL_LDLIBS    := -L$(LIB_PATH) -landroid -lEGL -lGLESv2 -llog
+LOCAL_STATIC_LIBRARIES := libgtest
 LOCAL_MODULE    := nativeopengltests
 LOCAL_SRC_FILES := GLTestHelper.cpp \
                    register.cpp \
-                   tests/GLTest_test.cpp
+                   tests/GLTest_test.cpp \
+                   tests/EGLCleanup_test.cpp \
+                   tests/EGLCreateContext_test.cpp
 
-LOCAL_SHARE_LIBRARIES := libgtest
+LOCAL_SHARED_LIBRARIES := libgtest
 
 include $(BUILD_SHARED_LIBRARY)
diff --git a/tests/tests/nativeopengl/standalone/jni/tests/EGLCleanup_test.cpp b/tests/tests/nativeopengl/standalone/jni/tests/EGLCleanup_test.cpp
new file mode 100644
index 0000000..db39798
--- /dev/null
+++ b/tests/tests/nativeopengl/standalone/jni/tests/EGLCleanup_test.cpp
@@ -0,0 +1,346 @@
+/*
+ * Copyright 2013 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.
+ */
+
+#define LOG_TAG "EGLCleanup"
+#include <android/log.h>
+#include <jni.h>
+
+#include <EGL/egl.h>
+#include <EGL/eglext.h>
+
+#include <gtest/gtest.h>
+
+#include <GLTestHelper.h>
+
+#include <pthread.h>
+
+#define ALOGD(...) __android_log_print(ANDROID_LOG_DEBUG, LOG_TAG, __VA_ARGS__)
+#define ALOGI(...) __android_log_print(ANDROID_LOG_INFO, LOG_TAG, __VA_ARGS__)
+#define ALOGW(...) __android_log_print(ANDROID_LOG_WARN, LOG_TAG, __VA_ARGS__)
+#define ALOGE(...) __android_log_print(ANDROID_LOG_ERROR, LOG_TAG, __VA_ARGS__)
+
+namespace android {
+
+/**
+ * Tests EGL cleanup edge cases.
+ */
+class EGLCleanupTest : public ::testing::Test {
+protected:
+    EGLCleanupTest() {}
+
+    virtual void SetUp() {
+        // Termination of a terminated display is defined to be a no-op.
+        // Android uses a refcounted implementation, so terminate it a few
+        // times to make sure it's really dead.  Without this, we might not
+        // get all the way into the driver eglTerminate implementation
+        // when we call eglTerminate.
+        EGLDisplay disp = eglGetDisplay(EGL_DEFAULT_DISPLAY);
+        if (disp != EGL_NO_DISPLAY) {
+            ALOGD("speculative terminate");
+            eglTerminate(disp);
+            eglTerminate(disp);
+            eglTerminate(disp);
+        }
+    }
+    virtual void TearDown() {}
+};
+
+/**
+ * Perform an operation and then start a new thread.
+ *
+ * The trick here is that some code may be helpfully releasing storage in
+ * pthread_key destructors.  Those run after the thread returns out of the
+ * initial function, but before the thread fully exits.  We want them to
+ * run concurrently with the next thread's initialization so we can confirm
+ * that the specified behavior of eglTerminate vs. eglInitialize holds.
+ */
+class ChainedThread {
+public:
+    enum TestType {
+        TEST_CORRECT,
+        TEST_NO_RELEASE_CURRENT
+    };
+
+    ChainedThread(TestType testType) : mEglDisplay(EGL_NO_DISPLAY),
+            mEglSurface(EGL_NO_SURFACE), mEglContext(EGL_NO_CONTEXT),
+            mTestType(testType), mIteration(0), mResult(true) {
+        pthread_mutex_init(&mLock, NULL);
+        pthread_cond_init(&mCond, NULL);
+    }
+    ~ChainedThread() {
+        // could get fancy and clean up the mutex
+    }
+
+    /* start here */
+    bool start() {
+        lock();
+        bool result = startThread_l();
+        unlock();
+        return result;
+    }
+
+    /* waits until test is done; when finished, call getResult() */
+    bool waitForEnd() {
+        lock();
+        int err = pthread_cond_wait(&mCond, &mLock);
+        if (err != 0) {
+            ALOGW("pthread_cond_wait failed: %d", err);
+        }
+        unlock();
+        return err == 0;
+    }
+
+    /* returns the result; true means success */
+    bool getResult() {
+        return mResult;
+    }
+
+private:
+    enum { MAX_ITERATIONS = 1000 };
+
+    EGLDisplay mEglDisplay;
+    EGLSurface mEglSurface;
+    EGLContext mEglContext;
+
+    TestType mTestType;
+    int mIteration;
+    bool mResult;
+    pthread_mutex_t mLock;
+    pthread_cond_t mCond;
+
+    // Assertions set a flag in Java and return from the current method (which
+    // must be declared to return void).  They do not throw a C++ exception.
+    //
+    // Because we're running in a separate thread, which is not attached to
+    // the VM, the assert macros don't help us much.  We could attach to the
+    // VM (by linking to libdvm.so and calling a global function), but the
+    // assertions won't cause the test to stop, which makes them less valuable.
+    //
+    // So instead we just return a boolean out of functions that can fail.
+
+    /* call this to start the test */
+    bool startThread_l() {
+        pthread_attr_t attr;
+        pthread_attr_init(&attr);
+        pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED);
+
+        pthread_t newThread;
+        int err = pthread_create(&newThread, &attr, ChainedThread::func,
+                (void*) this);
+        return (err == 0);
+    }
+
+    /* thread entry point */
+    static void* func(void* arg) {
+        ChainedThread* obj = static_cast<ChainedThread*>(arg);
+        obj->doWork();
+        return NULL;
+    }
+
+    bool lock() {
+        int err = pthread_mutex_lock(&mLock);
+        if (err != 0) {
+            ALOGW("pthread_mutex_lock failed: %d", err);
+        }
+        return err == 0;
+    }
+
+    bool unlock() {
+        int err = pthread_mutex_unlock(&mLock);
+        if (err != 0) {
+            ALOGW("pthread_mutex_unlock failed: %d", err);
+        }
+        return err == 0;
+    }
+
+    /* main worker */
+    void doWork() {
+        lock();
+
+        if ((mIteration % 25) == 0) {
+            ALOGD("iteration %d\n", mIteration);
+        }
+
+        mIteration++;
+        bool result = runTest_l();
+        if (!result) {
+            ALOGW("failed at iteration %d, stopping test", mIteration);
+            mResult = false;
+            mIteration = MAX_ITERATIONS;
+        }
+
+        if (mIteration < MAX_ITERATIONS) {
+            // still going, try to start the next one
+            if (!startThread_l()) {
+                ALOGW("Unable to start thread at iter=%d", mIteration);
+                mResult = false;
+                mIteration = MAX_ITERATIONS;
+            }
+        }
+
+        if (mIteration >= MAX_ITERATIONS) {
+            ALOGD("Test ending, signaling main thread");
+            pthread_cond_signal(&mCond);
+        }
+
+        unlock();
+    }
+
+    /* setup, use, release EGL */
+    bool runTest_l() {
+        if (!eglSetup()) {
+            return false;
+        }
+        if (!eglMakeCurrent(mEglDisplay, mEglSurface, mEglSurface,
+                mEglContext))
+        {
+            ALOGW("eglMakeCurrent failed: 0x%x", eglGetError());
+            return false;
+        }
+        if (!eglRelease_l()) {
+            return false;
+        }
+
+        return true;
+    }
+
+    /*
+     * Sets up EGL.  Creates a 1280x720 pbuffer, which is large enough to
+     * cause a rapid and highly visible memory leak if we fail to discard it.
+     */
+    bool eglSetup() {
+        static const EGLint kConfigAttribs[] = {
+                EGL_SURFACE_TYPE, EGL_PBUFFER_BIT,
+                EGL_RENDERABLE_TYPE, EGL_OPENGL_ES2_BIT,
+                EGL_RED_SIZE, 8,
+                EGL_GREEN_SIZE, 8,
+                EGL_BLUE_SIZE, 8,
+                EGL_NONE
+        };
+        static const EGLint kContextAttribs[] = {
+                EGL_CONTEXT_CLIENT_VERSION, 2,
+                EGL_NONE
+        };
+        static const EGLint kPbufferAttribs[] = {
+                EGL_WIDTH, 1280,
+                EGL_HEIGHT, 720,
+                EGL_NONE
+        };
+
+        //usleep(25000);
+
+        mEglDisplay = eglGetDisplay(EGL_DEFAULT_DISPLAY);
+        if (mEglDisplay == EGL_NO_DISPLAY) {
+            ALOGW("eglGetDisplay failed: 0x%x", eglGetError());
+            return false;
+        }
+
+        EGLint majorVersion, minorVersion;
+        if (!eglInitialize(mEglDisplay, &majorVersion, &minorVersion)) {
+            ALOGW("eglInitialize failed: 0x%x", eglGetError());
+            return false;
+        }
+
+        EGLConfig eglConfig;
+        EGLint numConfigs = 0;
+        if (!eglChooseConfig(mEglDisplay, kConfigAttribs, &eglConfig,
+                1, &numConfigs)) {
+            ALOGW("eglChooseConfig failed: 0x%x", eglGetError());
+            return false;
+        }
+
+        mEglSurface = eglCreatePbufferSurface(mEglDisplay, eglConfig,
+                kPbufferAttribs);
+        if (mEglSurface == EGL_NO_SURFACE) {
+            ALOGW("eglCreatePbufferSurface failed: 0x%x", eglGetError());
+            return false;
+        }
+
+        mEglContext = eglCreateContext(mEglDisplay, eglConfig, EGL_NO_CONTEXT,
+                kContextAttribs);
+        if (mEglContext == EGL_NO_CONTEXT) {
+            ALOGW("eglCreateContext failed: 0x%x", eglGetError());
+            return false;
+        }
+
+        return true;
+    }
+
+    /*
+     * Releases EGL.  How we do that depends on the type of test we're
+     * running.
+     */
+    bool eglRelease_l() {
+        if (mEglDisplay == EGL_NO_DISPLAY) {
+            ALOGW("No display to release");
+            return false;
+        }
+
+        switch (mTestType) {
+        case TEST_CORRECT:
+            eglTerminate(mEglDisplay);
+            eglReleaseThread();
+            break;
+        case TEST_NO_RELEASE_CURRENT:
+            eglDestroyContext(mEglDisplay, mEglContext);
+            eglDestroySurface(mEglDisplay, mEglSurface);
+            eglTerminate(mEglDisplay);
+            break;
+        default:
+            ALOGE("Unknown test type %d", mTestType);
+            break;
+        }
+
+        int err = eglGetError();
+        if (err != EGL_SUCCESS) {
+            ALOGW("eglRelease failed: 0x%x", err);
+            return false;
+        }
+        return true;
+    }
+};
+
+
+/* do things correctly */
+TEST_F(EGLCleanupTest, TestCorrect) {
+    ALOGI("Starting TEST_CORRECT");
+    ChainedThread cht(ChainedThread::TEST_CORRECT);
+
+    // start initial thread
+    ASSERT_TRUE(cht.start());
+
+    // wait for the end
+    cht.waitForEnd();
+    bool result = cht.getResult();
+    ASSERT_TRUE(result);
+}
+
+/* try it without un-currenting the surfaces and context
+TEST _F(EGLCleanupTest, TestNoReleaseCurrent) {
+    ALOGI("Starting TEST_NO_RELEASE_CURRENT");
+    ChainedThread cht(ChainedThread::TEST_NO_RELEASE_CURRENT);
+
+    // start initial thread
+    ASSERT_TRUE(cht.start());
+
+    // wait for the end
+    cht.waitForEnd();
+    bool result = cht.getResult();
+    ASSERT_TRUE(result);
+}
+*/
+
+} // namespace android
diff --git a/tests/tests/nativeopengl/standalone/jni/tests/EGLCreateContext_test.cpp b/tests/tests/nativeopengl/standalone/jni/tests/EGLCreateContext_test.cpp
new file mode 100644
index 0000000..b7e5f7c
--- /dev/null
+++ b/tests/tests/nativeopengl/standalone/jni/tests/EGLCreateContext_test.cpp
@@ -0,0 +1,138 @@
+/*
+ * Copyright 2013 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.
+ */
+
+#include <android/native_window.h>
+
+#include <EGL/egl.h>
+#include <EGL/eglext.h>
+#include <GLES2/gl2.h>
+
+#include <gtest/gtest.h>
+
+#include <android/log.h>
+
+#include "GLTestHelper.h"
+
+#define LOG_TAG "EGLCreateContext_test"
+#define LOGI(...) __android_log_print(ANDROID_LOG_INFO,LOG_TAG,__VA_ARGS__)
+#define LOGE(...) __android_log_print(ANDROID_LOG_ERROR,LOG_TAG,__VA_ARGS__)
+
+namespace android {
+
+static int getGlVersion() {
+    const char* s = (const char*)glGetString(GL_VERSION);
+    if (!s)
+        return 0;
+    int major, minor;
+    if (sscanf(s, "OpenGL ES %d.%d", &major, &minor) != 2)
+        return 0;
+    return major;
+}
+
+class EGLCreateContextTest : public ::testing::Test {
+
+protected:
+
+    EGLCreateContextTest()
+    :   mEglDisplay(EGL_NO_DISPLAY),
+        mEglConfig(0),
+        mEglWindowSurface(EGL_NO_SURFACE),
+        mEglContext(EGL_NO_CONTEXT)
+    {}
+
+    virtual void SetUp() {
+        // static const EGLint SURFACE_ATTRIBS[] = {
+        //     EGL_NONE
+        // };
+
+        mEglDisplay = eglGetDisplay(EGL_DEFAULT_DISPLAY);
+        ASSERT_NE(EGL_NO_DISPLAY, mEglDisplay);
+
+        EGLint major, minor;
+        ASSERT_TRUE(eglInitialize(mEglDisplay, &major, &minor));
+
+        EGLint numConfigs = 0;
+        ASSERT_TRUE(eglChooseConfig(mEglDisplay, getConfigAttribs(),
+                &mEglConfig, 1, &numConfigs));
+        ASSERT_GE(1, numConfigs);
+        ASSERT_NE((EGLConfig)0, mEglConfig);
+
+        mEglWindowSurface = eglCreateWindowSurface(mEglDisplay, mEglConfig,
+                GLTestHelper::getWindow(), getWindowSurfaceAttribs());
+        ASSERT_EQ(EGL_SUCCESS, eglGetError());
+        ASSERT_NE(EGL_NO_SURFACE, mEglWindowSurface);
+    }
+
+    virtual void TearDown() {
+        if (mEglContext != EGL_NO_CONTEXT) {
+            eglDestroyContext(mEglDisplay, mEglContext);
+        }
+        if (mEglWindowSurface != EGL_NO_SURFACE) {
+            eglDestroySurface(mEglDisplay, mEglWindowSurface);
+        }
+        if (mEglDisplay != EGL_NO_DISPLAY) {
+            eglMakeCurrent(mEglDisplay, EGL_NO_SURFACE, EGL_NO_SURFACE,
+                    EGL_NO_CONTEXT);
+            eglTerminate(mEglDisplay);
+        }
+        ASSERT_EQ(EGL_SUCCESS, eglGetError());
+    }
+
+    virtual const EGLint* getConfigAttribs() {
+        static const EGLint ATTRIBS[] = {
+            EGL_SURFACE_TYPE, EGL_WINDOW_BIT,
+            EGL_RENDERABLE_TYPE, EGL_OPENGL_ES2_BIT,
+            EGL_RED_SIZE, 8,
+            EGL_GREEN_SIZE, 8,
+            EGL_BLUE_SIZE, 8,
+            EGL_ALPHA_SIZE, 8,
+            EGL_NONE
+        };
+        return ATTRIBS;
+    }
+
+    virtual const EGLint* getWindowSurfaceAttribs() {
+        return NULL;
+    }
+
+    EGLDisplay mEglDisplay;
+    EGLConfig  mEglConfig;
+    EGLSurface mEglWindowSurface;
+    EGLContext mEglContext;
+};
+
+TEST_F(EGLCreateContextTest, BadAttributeFails) {
+    // First check that we can successfully create a context
+    EGLint attribs[5] = {
+        EGL_CONTEXT_CLIENT_VERSION, 2,
+        EGL_NONE, EGL_NONE, EGL_NONE,
+    };
+    mEglContext = eglCreateContext(mEglDisplay, mEglConfig, EGL_NO_CONTEXT,
+            attribs);
+    ASSERT_NE(mEglContext, EGL_NO_CONTEXT);
+    ASSERT_EQ(eglGetError(), EGL_SUCCESS);
+    ASSERT_EQ(EGL_TRUE, eglDestroyContext(mEglDisplay, mEglContext));
+    mEglContext = EGL_NO_CONTEXT;
+
+    // Now add an invalid attribute and make sure eglCreateContext fails
+    attribs[2] = EGL_BAD_ATTRIBUTE; // error code, not a valid attribute
+    mEglContext = eglCreateContext(mEglDisplay, mEglConfig, EGL_NO_CONTEXT,
+            attribs);
+    ASSERT_EQ(mEglContext, EGL_NO_CONTEXT);
+    ASSERT_EQ(eglGetError(), EGL_BAD_ATTRIBUTE);
+}
+
+} // namespace android
diff --git a/tests/tests/nativeopengl/standalone/src/com/android/gltest/GLTestActivity.java b/tests/tests/nativeopengl/standalone/src/com/android/gltest/GLTestActivity.java
index 3c1e2af..f0c250b 100644
--- a/tests/tests/nativeopengl/standalone/src/com/android/gltest/GLTestActivity.java
+++ b/tests/tests/nativeopengl/standalone/src/com/android/gltest/GLTestActivity.java
@@ -77,7 +77,6 @@
         mSurfaceView.getHolder().addCallback(mHolderCallback);
         setContentView(mSurfaceView);
         System.loadLibrary("stlport_shared");
-        System.loadLibrary("gtest");
         System.loadLibrary("nativeopengltests");
     }
 
diff --git a/tests/tests/net/Android.mk b/tests/tests/net/Android.mk
index a6543b3..7219fc4 100644
--- a/tests/tests/net/Android.mk
+++ b/tests/tests/net/Android.mk
@@ -30,7 +30,7 @@
 
 LOCAL_PACKAGE_NAME := CtsNetTestCases
 
-LOCAL_STATIC_JAVA_LIBRARIES := ctstestserver ctsutil ctstestrunner
+LOCAL_STATIC_JAVA_LIBRARIES := ctstestserver ctsdeviceutil ctstestrunner
 
 # uncomment when dalvik.annotation.Test* are removed or part of SDK
 #LOCAL_SDK_VERSION := current
diff --git a/tests/tests/net/jni/NativeDnsJni.c b/tests/tests/net/jni/NativeDnsJni.c
index de9bb67..b975594 100644
--- a/tests/tests/net/jni/NativeDnsJni.c
+++ b/tests/tests/net/jni/NativeDnsJni.c
@@ -20,6 +20,11 @@
 #include <stdio.h>
 #include <utils/Log.h>
 
+const char *GoogleDNSIpV4Address="8.8.8.8";
+const char *GoogleDNSIpV4Address2="8.8.4.4";
+const char *GoogleDNSIpV6Address="2001:4860:4860::8888";
+const char *GoogleDNSIpV6Address2="2001:4860:4860::8844";
+
 JNIEXPORT jboolean Java_android_net_cts_DnsTest_testNativeDns(JNIEnv* env, jclass class)
 {
     const char *node = "www.google.com";
@@ -53,8 +58,8 @@
 
         freeaddrinfo(answer);
         answer = NULL;
-        if (foundv4 != 1 || foundv6 != 1) {
-            ALOGD("getaddrinfo(www.google.com) didn't find both v4 and v6");
+        if (foundv4 != 1 && foundv6 != 1) {
+            ALOGD("getaddrinfo(www.google.com) didn't find either v4 or v6 address");
             return JNI_FALSE;
         }
     }
@@ -96,49 +101,50 @@
     struct sockaddr_in sa4;
     sa4.sin_family = AF_INET;
     sa4.sin_port = 0;
-    inet_pton(AF_INET, "173.252.110.27", &(sa4.sin_addr));
+    inet_pton(AF_INET, GoogleDNSIpV4Address, &(sa4.sin_addr));
 
     struct sockaddr_in6 sa6;
     sa6.sin6_family = AF_INET6;
     sa6.sin6_port = 0;
     sa6.sin6_flowinfo = 0;
     sa6.sin6_scope_id = 0;
-    inet_pton(AF_INET6, "2001:4860:4001:802::1008", &(sa6.sin6_addr));
+    inet_pton(AF_INET6, GoogleDNSIpV6Address2, &(sa6.sin6_addr));
 
     char buf[NI_MAXHOST];
     int flags = NI_NAMEREQD;
 
     res = getnameinfo((const struct sockaddr*)&sa4, sizeof(sa4), buf, sizeof(buf), NULL, 0, flags);
     if (res != 0) {
-        ALOGD("getnameinfo(173.252.110.27 (facebook) ) gave error %d (%s)", res, gai_strerror(res));
+        ALOGD("getnameinfo(%s (GoogleDNS) ) gave error %d (%s)", GoogleDNSIpV4Address, res,
+            gai_strerror(res));
         return JNI_FALSE;
     }
-    if (strstr(buf, "facebook.com") == NULL) {
-        ALOGD("getnameinfo(173.252.110.27 (facebook) ) didn't return facebook.com: %s", buf);
+    if (strstr(buf, "google.com") == NULL) {
+        ALOGD("getnameinfo(%s (GoogleDNS) ) didn't return google.com: %s",
+            GoogleDNSIpV4Address, buf);
         return JNI_FALSE;
     }
 
     memset(buf, sizeof(buf), 0);
-    res = getnameinfo((const struct sockaddr*)&sa6, sizeof(sa6), buf, sizeof(buf),
-            NULL, 0, flags);
+    res = getnameinfo((const struct sockaddr*)&sa6, sizeof(sa6), buf, sizeof(buf), NULL, 0, flags);
     if (res != 0) {
-        ALOGD("getnameinfo(2a03:2880:2110:df01:face:b00c::8 (facebook) ) gave error %d (%s)",
-                res, gai_strerror(res));
+        ALOGD("getnameinfo(%s (GoogleDNS) ) gave error %d (%s)", GoogleDNSIpV6Address2,
+            res, gai_strerror(res));
         return JNI_FALSE;
     }
-    if (strstr(buf, "1e100.net") == NULL) {
-        ALOGD("getnameinfo(2a03:2880:2110:df01:face:b00c::8) didn't return facebook.com: %s", buf);
+    if (strstr(buf, "google.com") == NULL) {
+        ALOGD("getnameinfo(%s) didn't return google.com: %s", GoogleDNSIpV6Address2, buf);
         return JNI_FALSE;
     }
 
     // gethostbyname
-    struct hostent *my_hostent = gethostbyname("www.mit.edu");
+    struct hostent *my_hostent = gethostbyname("www.youtube.com");
     if (my_hostent == NULL) {
-        ALOGD("gethostbyname(www.mit.edu) gave null response");
+        ALOGD("gethostbyname(www.youtube.com) gave null response");
         return JNI_FALSE;
     }
     if ((my_hostent->h_addr_list == NULL) || (*my_hostent->h_addr_list == NULL)) {
-        ALOGD("gethostbyname(www.mit.edu) gave 0 addresses");
+        ALOGD("gethostbyname(www.youtube.com) gave 0 addresses");
         return JNI_FALSE;
     }
     {
@@ -146,21 +152,23 @@
         while (*current != NULL) {
             char buf[256];
             inet_ntop(my_hostent->h_addrtype, *current, buf, sizeof(buf));
-            ALOGD("gethostbyname(www.mit.edu) gave %s", buf);
+            ALOGD("gethostbyname(www.youtube.com) gave %s", buf);
             current++;
         }
     }
 
     // gethostbyaddr
     char addr6[16];
-    inet_pton(AF_INET6, "2001:4b10:bbc::2", addr6);
+    inet_pton(AF_INET6, GoogleDNSIpV6Address, addr6);
     my_hostent = gethostbyaddr(addr6, sizeof(addr6), AF_INET6);
     if (my_hostent == NULL) {
-        ALOGD("gethostbyaddr(2001:4b10:bbc::2 (bbc) ) gave null response");
+        ALOGD("gethostbyaddr(%s (GoogleDNS) ) gave null response", GoogleDNSIpV6Address);
         return JNI_FALSE;
     }
-    ALOGD("gethostbyaddr(2001:4b10:bbc::2 (bbc) ) gave %s for name",
-    my_hostent->h_name ? my_hostent->h_name : "null");
+
+    ALOGD("gethostbyaddr(%s (GoogleDNS) ) gave %s for name", GoogleDNSIpV6Address,
+        my_hostent->h_name ? my_hostent->h_name : "null");
+
     if (my_hostent->h_name == NULL) return JNI_FALSE;
     return JNI_TRUE;
 }
diff --git a/tests/tests/net/src/android/net/cts/ConnectivityManagerTest.java b/tests/tests/net/src/android/net/cts/ConnectivityManagerTest.java
index d4bff12..5656119 100644
--- a/tests/tests/net/src/android/net/cts/ConnectivityManagerTest.java
+++ b/tests/tests/net/src/android/net/cts/ConnectivityManagerTest.java
@@ -66,8 +66,10 @@
         mWifiManager = (WifiManager) getContext().getSystemService(Context.WIFI_SERVICE);
         mPackageManager = getContext().getPackageManager();
 
-        String[] naStrings = getContext().getResources().getStringArray(
-                com.android.internal.R.array.networkAttributes);
+        // Get com.android.internal.R.array.networkAttributes
+        int resId = getContext().getResources().getIdentifier("networkAttributes", "array", "android");
+        String[] naStrings = getContext().getResources().getStringArray(resId);
+
         for (String naString : naStrings) {
             try {
                 NetworkConfig n = new NetworkConfig(naString);
@@ -75,8 +77,9 @@
             } catch (Exception e) {}
         }
 
-        int[] protectedNetworks = getContext().getResources().getIntArray(
-                com.android.internal.R.array.config_protectedNetworks);
+        // Get com.android.internal.R.array.config_protectedNetworks
+        resId = getContext().getResources().getIdentifier("config_protectedNetworks", "array", "android");
+        int[] protectedNetworks = getContext().getResources().getIntArray(resId);
         for (int p : protectedNetworks) {
             mProtectedNetworks.add(p);
         }
@@ -97,6 +100,7 @@
         assertTrue(mCm.isNetworkTypeValid(ConnectivityManager.TYPE_MOBILE_IMS));
         assertTrue(mCm.isNetworkTypeValid(ConnectivityManager.TYPE_MOBILE_CBS));
         assertTrue(mCm.isNetworkTypeValid(ConnectivityManager.TYPE_WIFI_P2P));
+        assertTrue(mCm.isNetworkTypeValid(ConnectivityManager.TYPE_MOBILE_IA));
         assertFalse(mCm.isNetworkTypeValid(-1));
         assertTrue(mCm.isNetworkTypeValid(0));
         assertTrue(mCm.isNetworkTypeValid(ConnectivityManager.MAX_NETWORK_TYPE));
@@ -268,9 +272,13 @@
             return;
         }
 
-        boolean isWifiConnected = mWifiManager.isWifiEnabled()
-                && mWifiManager.getConnectionInfo().getSSID() != null;
+        boolean isWifiEnabled = mWifiManager.isWifiEnabled();
+        boolean isWifiConnected = false;
 
+        NetworkInfo nwInfo = mCm.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
+        if (nwInfo != null) {
+            isWifiConnected = nwInfo.isConnected();
+        }
         try {
             // Make sure WiFi is connected to an access point.
             if (!isWifiConnected) {
@@ -304,7 +312,7 @@
             // TODO wait for HIPRI to go
             // TODO check dns selection
             // TODO check routes
-            if (!isWifiConnected) {
+            if (!isWifiEnabled) {
                 mWifiManager.setWifiEnabled(false);
             }
         }
diff --git a/tests/tests/net/src/android/net/cts/DnsTest.java b/tests/tests/net/src/android/net/cts/DnsTest.java
new file mode 100644
index 0000000..879a962
--- /dev/null
+++ b/tests/tests/net/src/android/net/cts/DnsTest.java
@@ -0,0 +1,244 @@
+/*
+ * Copyright (C) 2013 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 android.net.cts;
+
+import android.os.SystemClock;
+import android.test.AndroidTestCase;
+import android.util.Log;
+
+import java.net.Inet4Address;
+import java.net.Inet6Address;
+import java.net.InetAddress;
+import java.net.UnknownHostException;
+import java.util.ArrayList;
+
+public class DnsTest extends AndroidTestCase {
+
+    static {
+        System.loadLibrary("nativedns_jni");
+    }
+
+    private static final boolean DBG = false;
+    private static final String TAG = "DnsTest";
+
+    /**
+     * @return true on success
+     */
+    private static native boolean testNativeDns();
+
+    /**
+     * Verify:
+     * DNS works - forwards and backwards, giving ipv4 and ipv6
+     * Test that DNS work on v4 and v6 networks
+     * Test Native dns calls (4)
+     * Todo:
+     * Cache is flushed when we change networks
+     * have per-network caches
+     * No cache when there's no network
+     * Perf - measure size of first and second tier caches and their effect
+     * Assert requires network permission
+     */
+    public void testDnsWorks() {
+        InetAddress addrs[] = {};
+        try {
+            addrs = InetAddress.getAllByName("www.google.com");
+        } catch (UnknownHostException e) {}
+        assertTrue(addrs.length != 0);
+        boolean foundV4 = false, foundV6 = false;
+        for (InetAddress addr : addrs) {
+            if (addr instanceof Inet4Address) foundV4 = true;
+            else if (addr instanceof Inet6Address) foundV6 = true;
+            if (DBG) Log.e(TAG, "www.google.com gave " + addr.toString());
+        }
+
+        // assertTrue(foundV4);
+        // assertTrue(foundV6);
+
+        // We should have at least one of the addresses to connect!
+        assertTrue(foundV4 || foundV6);
+
+        try {
+            addrs = InetAddress.getAllByName("ipv6.google.com");
+        } catch (UnknownHostException e) {}
+        assertTrue(addrs.length != 0);
+        foundV4 = false;
+        foundV6 = false;
+        for (InetAddress addr : addrs) {
+            if (addr instanceof Inet4Address) foundV4 = true;
+            else if (addr instanceof Inet6Address) foundV6 = true;
+            if (DBG) Log.e(TAG, "ipv6.google.com gave " + addr.toString());
+        }
+
+        assertTrue(foundV4 == false);
+        assertTrue(foundV6 == true);
+
+        assertTrue(testNativeDns());
+    }
+
+    private static final String[] URLS = { "www.google.com", "ipv6.google.com", "www.yahoo.com",
+            "facebook.com", "youtube.com", "blogspot.com", "baidu.com", "wikipedia.org",
+// live.com fails rev lookup.
+            "twitter.com", "qq.com", "msn.com", "yahoo.co.jp", "linkedin.com",
+            "taobao.com", "google.co.in", "sina.com.cn", "amazon.com", "wordpress.com",
+            "google.co.uk", "ebay.com", "yandex.ru", "163.com", "google.co.jp", "google.fr",
+            "microsoft.com", "paypal.com", "google.com.br", "flickr.com",
+            "mail.ru", "craigslist.org", "fc2.com", "google.it",
+// "apple.com", fails rev lookup
+            "google.es",
+            "imdb.com", "google.ru", "soho.com", "bbc.co.uk", "vkontakte.ru", "ask.com",
+            "tumblr.com", "weibo.com", "go.com", "xvideos.com", "livejasmin.com", "cnn.com",
+            "youku.com", "blogspot.com", "soso.com", "google.ca", "aol.com", "tudou.com",
+            "xhamster.com", "megaupload.com", "ifeng.com", "zedo.com", "mediafire.com", "ameblo.jp",
+            "pornhub.com", "google.co.id", "godaddy.com", "adobe.com", "rakuten.co.jp", "about.com",
+            "espn.go.com", "4shared.com", "alibaba.com","ebay.de", "yieldmanager.com",
+            "wordpress.org", "livejournal.com", "google.com.tr", "google.com.mx", "renren.com",
+           "livedoor.com", "google.com.au", "youporn.com", "uol.com.br", "cnet.com", "conduit.com",
+            "google.pl", "myspace.com", "nytimes.com", "ebay.co.uk", "chinaz.com", "hao123.com",
+            "thepiratebay.org", "doubleclick.com", "alipay.com", "netflix.com", "cnzz.com",
+            "huffingtonpost.com", "twitpic.com", "weather.com", "babylon.com", "amazon.de",
+            "dailymotion.com", "orkut.com", "orkut.com.br", "google.com.sa", "odnoklassniki.ru",
+            "amazon.co.jp", "google.nl", "goo.ne.jp", "stumbleupon.com", "tube8.com", "tmall.com",
+            "imgur.com", "globo.com", "secureserver.net", "fileserve.com", "tianya.cn", "badoo.com",
+            "ehow.com", "photobucket.com", "imageshack.us", "xnxx.com", "deviantart.com",
+            "filestube.com", "addthis.com", "douban.com", "vimeo.com", "sogou.com",
+            "stackoverflow.com", "reddit.com", "dailymail.co.uk", "redtube.com", "megavideo.com",
+            "taringa.net", "pengyou.com", "amazon.co.uk", "fbcdn.net", "aweber.com", "spiegel.de",
+            "rapidshare.com", "mixi.jp", "360buy.com", "google.cn", "digg.com", "answers.com",
+            "bit.ly", "indiatimes.com", "skype.com", "yfrog.com", "optmd.com", "google.com.eg",
+            "google.com.pk", "58.com", "hotfile.com", "google.co.th",
+            "bankofamerica.com", "sourceforge.net", "maktoob.com", "warriorforum.com", "rediff.com",
+            "google.co.za", "56.com", "torrentz.eu", "clicksor.com", "avg.com",
+            "download.com", "ku6.com", "statcounter.com", "foxnews.com", "google.com.ar",
+            "nicovideo.jp", "reference.com", "liveinternet.ru", "ucoz.ru", "xinhuanet.com",
+            "xtendmedia.com", "naver.com", "youjizz.com", "domaintools.com", "sparkstudios.com",
+            "rambler.ru", "scribd.com", "kaixin001.com", "mashable.com", "adultfirendfinder.com",
+            "files.wordpress.com", "guardian.co.uk", "bild.de", "yelp.com", "wikimedia.org",
+            "chase.com", "onet.pl", "ameba.jp", "pconline.com.cn", "free.fr", "etsy.com",
+            "typepad.com", "youdao.com", "megaclick.com", "digitalpoint.com", "blogfa.com",
+            "salesforce.com", "adf.ly", "ganji.com", "wikia.com", "archive.org", "terra.com.br",
+            "w3schools.com", "ezinearticles.com", "wjs.com", "google.com.my", "clickbank.com",
+            "squidoo.com", "hulu.com", "repubblica.it", "google.be", "allegro.pl", "comcast.net",
+            "narod.ru", "zol.com.cn", "orange.fr", "soufun.com", "hatena.ne.jp", "google.gr",
+            "in.com", "techcrunch.com", "orkut.co.in", "xunlei.com",
+            "reuters.com", "google.com.vn", "hostgator.com", "kaskus.us", "espncricinfo.com",
+            "hootsuite.com", "qiyi.com", "gmx.net", "xing.com", "php.net", "soku.com", "web.de",
+            "libero.it", "groupon.com", "51.la", "slideshare.net", "booking.com", "seesaa.net",
+            "126.com", "telegraph.co.uk", "wretch.cc", "twimg.com", "rutracker.org", "angege.com",
+            "nba.com", "dell.com", "leboncoin.fr", "people.com", "google.com.tw", "walmart.com",
+            "daum.net", "2ch.net", "constantcontact.com", "nifty.com", "mywebsearch.com",
+            "tripadvisor.com", "google.se", "paipai.com", "google.com.ua", "ning.com", "hp.com",
+            "google.at", "joomla.org", "icio.us", "hudong.com", "csdn.net", "getfirebug.com",
+            "ups.com", "cj.com", "google.ch", "camzap.com", "wordreference.com", "tagged.com",
+            "wp.pl", "mozilla.com", "google.ru", "usps.com", "china.com", "themeforest.net",
+            "search-results.com", "tribalfusion.com", "thefreedictionary.com", "isohunt.com",
+            "linkwithin.com", "cam4.com", "plentyoffish.com", "wellsfargo.com", "metacafe.com",
+            "depositfiles.com", "freelancer.com", "opendns.com", "homeway.com", "engadget.com",
+            "10086.cn", "360.cn", "marca.com", "dropbox.com", "ign.com", "match.com", "google.pt",
+            "facemoods.com", "hardsextube.com", "google.com.ph", "lockerz.com", "istockphoto.com",
+            "partypoker.com", "netlog.com", "outbrain.com", "elpais.com", "fiverr.com",
+            "biglobe.ne.jp", "corriere.it", "love21cn.com", "yesky.com", "spankwire.com",
+            "ig.com.br", "imagevenue.com", "hubpages.com", "google.co.ve"};
+
+// TODO - this works, but is slow and cts doesn't do anything with the result.
+// Maybe require a min performance, a min cache size (detectable) and/or move
+// to perf testing
+    private static final int LOOKUP_COUNT_GOAL = URLS.length;
+    public void skiptestDnsPerf() {
+        ArrayList<String> results = new ArrayList<String>();
+        int failures = 0;
+        try {
+            for (int numberOfUrls = URLS.length; numberOfUrls > 0; numberOfUrls--) {
+                failures = 0;
+                int iterationLimit = LOOKUP_COUNT_GOAL / numberOfUrls;
+                long startTime = SystemClock.elapsedRealtimeNanos();
+                for (int iteration = 0; iteration < iterationLimit; iteration++) {
+                    for (int urlIndex = 0; urlIndex < numberOfUrls; urlIndex++) {
+                        try {
+                            InetAddress addr = InetAddress.getByName(URLS[urlIndex]);
+                        } catch (UnknownHostException e) {
+                            Log.e(TAG, "failed first lookup of " + URLS[urlIndex]);
+                            failures++;
+                            try {
+                                InetAddress addr = InetAddress.getByName(URLS[urlIndex]);
+                            } catch (UnknownHostException ee) {
+                                failures++;
+                                Log.e(TAG, "failed SECOND lookup of " + URLS[urlIndex]);
+                            }
+                        }
+                    }
+                }
+                long endTime = SystemClock.elapsedRealtimeNanos();
+                float nsPer = ((float)(endTime-startTime) / iterationLimit) / numberOfUrls/ 1000;
+                String thisResult = new String("getByName for " + numberOfUrls + " took " +
+                        (endTime - startTime)/1000 + "(" + nsPer + ") with " +
+                        failures + " failures\n");
+                Log.d(TAG, thisResult);
+                results.add(thisResult);
+            }
+            // build up a list of addresses
+            ArrayList<byte[]> addressList = new ArrayList<byte[]>();
+            for (String url : URLS) {
+                try {
+                    InetAddress addr = InetAddress.getByName(url);
+                    addressList.add(addr.getAddress());
+                } catch (UnknownHostException e) {
+                    Log.e(TAG, "Exception making reverseDNS list: " + e.toString());
+                }
+            }
+            for (int numberOfAddrs = addressList.size(); numberOfAddrs > 0; numberOfAddrs--) {
+                int iterationLimit = LOOKUP_COUNT_GOAL / numberOfAddrs;
+                failures = 0;
+                long startTime = SystemClock.elapsedRealtimeNanos();
+                for (int iteration = 0; iteration < iterationLimit; iteration++) {
+                    for (int addrIndex = 0; addrIndex < numberOfAddrs; addrIndex++) {
+                        try {
+                            InetAddress addr = InetAddress.getByAddress(addressList.get(addrIndex));
+                            String hostname = addr.getHostName();
+                        } catch (UnknownHostException e) {
+                            failures++;
+                            Log.e(TAG, "Failure doing reverse DNS lookup: " + e.toString());
+                            try {
+                                InetAddress addr =
+                                        InetAddress.getByAddress(addressList.get(addrIndex));
+                                String hostname = addr.getHostName();
+
+                            } catch (UnknownHostException ee) {
+                                failures++;
+                                Log.e(TAG, "Failure doing SECOND reverse DNS lookup: " +
+                                        ee.toString());
+                            }
+                        }
+                    }
+                }
+                long endTime = SystemClock.elapsedRealtimeNanos();
+                float nsPer = ((endTime-startTime) / iterationLimit) / numberOfAddrs / 1000;
+                String thisResult = new String("getHostName for " + numberOfAddrs + " took " +
+                        (endTime - startTime)/1000 + "(" + nsPer + ") with " +
+                        failures + " failures\n");
+                Log.d(TAG, thisResult);
+                results.add(thisResult);
+            }
+            for (String result : results) Log.d(TAG, result);
+
+            InetAddress exit = InetAddress.getByName("exitrightnow.com");
+            Log.e(TAG, " exit address= "+exit.toString());
+
+        } catch (Exception e) {
+            Log.e(TAG, "bad URL in testDnsPerf: " + e.toString());
+        }
+    }
+}
diff --git a/tests/tests/net/src/android/net/cts/TrafficStatsTest.java b/tests/tests/net/src/android/net/cts/TrafficStatsTest.java
index 0d02df7..1618743 100644
--- a/tests/tests/net/src/android/net/cts/TrafficStatsTest.java
+++ b/tests/tests/net/src/android/net/cts/TrafficStatsTest.java
@@ -21,6 +21,9 @@
 import android.test.AndroidTestCase;
 import android.util.Log;
 
+import java.io.BufferedReader;
+import java.io.FileNotFoundException;
+import java.io.FileReader;
 import java.io.IOException;
 import java.io.InputStream;
 import java.io.OutputStream;
@@ -77,19 +80,39 @@
         return packetCount * (20 + 32 + bytes);
     }
 
+    private void accessOwnTrafficStats() throws IOException {
+        final int ownAppUid = getContext().getApplicationInfo().uid;
+        Log.d(LOG_TAG, "accesOwnTrafficStatsWithTags(): about to read qtaguid stats for own uid " + ownAppUid);
+
+        boolean foundOwnDetailedStats = false;
+        try {
+            BufferedReader qtaguidReader = new BufferedReader(new FileReader("/proc/net/xt_qtaguid/stats"));
+            String line;
+            while ((line = qtaguidReader.readLine()) != null) {
+                String tokens[] = line.split(" ");
+                if (tokens.length > 3 && tokens[3].equals(String.valueOf(ownAppUid))) {
+                    Log.d(LOG_TAG, "accessOwnTrafficStatsWithTags(): got own stats: " + line);
+                }
+            }
+            qtaguidReader.close();
+        } catch (FileNotFoundException e) {
+            fail("Was not able to access qtaguid/stats: " + e);
+        }
+    }
+
     public void testTrafficStatsForLocalhost() throws IOException {
-        long mobileTxPacketsBefore = TrafficStats.getMobileTxPackets();
-        long mobileRxPacketsBefore = TrafficStats.getMobileRxPackets();
-        long mobileTxBytesBefore = TrafficStats.getMobileTxBytes();
-        long mobileRxBytesBefore = TrafficStats.getMobileRxBytes();
-        long totalTxPacketsBefore = TrafficStats.getTotalTxPackets();
-        long totalRxPacketsBefore = TrafficStats.getTotalRxPackets();
-        long totalTxBytesBefore = TrafficStats.getTotalTxBytes();
-        long totalRxBytesBefore = TrafficStats.getTotalRxBytes();
-        long uidTxBytesBefore = TrafficStats.getUidTxBytes(Process.myUid());
-        long uidRxBytesBefore = TrafficStats.getUidRxBytes(Process.myUid());
-        long uidTxPacketsBefore = TrafficStats.getUidTxPackets(Process.myUid());
-        long uidRxPacketsBefore = TrafficStats.getUidRxPackets(Process.myUid());
+        final long mobileTxPacketsBefore = TrafficStats.getMobileTxPackets();
+        final long mobileRxPacketsBefore = TrafficStats.getMobileRxPackets();
+        final long mobileTxBytesBefore = TrafficStats.getMobileTxBytes();
+        final long mobileRxBytesBefore = TrafficStats.getMobileRxBytes();
+        final long totalTxPacketsBefore = TrafficStats.getTotalTxPackets();
+        final long totalRxPacketsBefore = TrafficStats.getTotalRxPackets();
+        final long totalTxBytesBefore = TrafficStats.getTotalTxBytes();
+        final long totalRxBytesBefore = TrafficStats.getTotalRxBytes();
+        final long uidTxBytesBefore = TrafficStats.getUidTxBytes(Process.myUid());
+        final long uidRxBytesBefore = TrafficStats.getUidRxBytes(Process.myUid());
+        final long uidTxPacketsBefore = TrafficStats.getUidTxPackets(Process.myUid());
+        final long uidRxPacketsBefore = TrafficStats.getUidRxPackets(Process.myUid());
 
         // Transfer 1MB of data across an explicitly localhost socket.
         final int byteCount = 1024;
@@ -106,22 +129,36 @@
                     socket.setTcpNoDelay(true);
                     OutputStream out = socket.getOutputStream();
                     byte[] buf = new byte[byteCount];
+                    TrafficStats.setThreadStatsTag(0x42);
+                    TrafficStats.tagSocket(socket);
+                    accessOwnTrafficStats();
                     for (int i = 0; i < packetCount; i++) {
                         out.write(buf);
                         out.flush();
+                        try {
+                            // Bug: 10668088, Even with Nagle disabled, and flushing the 1024 bytes
+                            // the kernel still regroups data into a larger packet.
+                            Thread.sleep(5);
+                        } catch (InterruptedException e) {
+                        }
                     }
                     out.close();
                     socket.close();
+                    accessOwnTrafficStats();
                 } catch (IOException e) {
+                    Log.i(LOG_TAG, "Badness during writes to socket: " + e);
                 }
             }
         }.start();
 
+        int read = 0;
         try {
             Socket socket = server.accept();
+            socket.setTcpNoDelay(true);
+            TrafficStats.setThreadStatsTag(0x43);
+            TrafficStats.tagSocket(socket);
             InputStream in = socket.getInputStream();
             byte[] buf = new byte[byteCount];
-            int read = 0;
             while (read < byteCount * packetCount) {
                 int n = in.read(buf);
                 assertTrue("Unexpected EOF", n > 0);
@@ -130,6 +167,7 @@
         } finally {
             server.close();
         }
+        assertTrue("Not all data read back", read >= byteCount * packetCount);
 
         // It's too fast to call getUidTxBytes function.
         try {
@@ -168,6 +206,7 @@
         final int maxExpectedExtraPackets = 7;
         final int minExpectedExtraPackets = 5;
 
+
         // Some other tests don't cleanup connections correctly.
         // They have the same UID, so we discount their lingering traffic
         // which happens only on non-localhost, such as TCP FIN retranmission packets
diff --git a/tests/tests/net/src/android/net/http/cts/SslErrorTest.java b/tests/tests/net/src/android/net/http/cts/SslErrorTest.java
old mode 100755
new mode 100644
diff --git a/tests/tests/net/src/android/net/ipv6/cts/PingTest.java b/tests/tests/net/src/android/net/ipv6/cts/PingTest.java
new file mode 100644
index 0000000..41eb03d
--- /dev/null
+++ b/tests/tests/net/src/android/net/ipv6/cts/PingTest.java
@@ -0,0 +1,144 @@
+/*
+ * Copyright (C) 2013 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 android.net.ipv6.cts;
+
+import android.test.AndroidTestCase;
+import android.util.Log;
+
+import libcore.io.ErrnoException;
+import libcore.io.Libcore;
+import libcore.io.StructTimeval;
+import static libcore.io.OsConstants.*;
+
+import java.io.FileDescriptor;
+import java.io.IOException;
+import java.net.InetAddress;
+import java.net.Inet6Address;
+import java.net.InetSocketAddress;
+import java.net.UnknownHostException;
+import java.nio.ByteBuffer;
+import java.util.Arrays;
+import java.util.Random;
+
+public class PingTest extends AndroidTestCase {
+    /** Maximum size of the packets we're using to test. */
+    private static final int MAX_SIZE = 4096;
+
+    /** Number of packets to test. */
+    private static final int NUM_PACKETS = 10;
+
+    /** The beginning of an ICMPv6 echo request: type, code, and uninitialized checksum. */
+    private static final byte[] PING_HEADER = new byte[] {
+        (byte) 0x80, (byte) 0x00, (byte) 0x00, (byte) 0x00
+    };
+
+    /**
+     * Returns a byte array containing an ICMPv6 echo request with the specified payload length.
+     */
+    private byte[] pingPacket(int payloadLength) {
+        byte[] packet = new byte[payloadLength + 8];
+        new Random().nextBytes(packet);
+        System.arraycopy(PING_HEADER, 0, packet, 0, PING_HEADER.length);
+        return packet;
+    }
+
+    /**
+     * Checks that the first length bytes of two byte arrays are equal.
+     */
+    private void assertArrayBytesEqual(byte[] expected, byte[] actual, int length) {
+        for (int i = 0; i < length; i++) {
+            assertEquals("Arrays differ at index " + i + ":", expected[i], actual[i]);
+        }
+    }
+
+    /**
+     * Creates an IPv6 ping socket and sets a receive timeout of 100ms.
+     */
+    private FileDescriptor createPingSocket() throws ErrnoException {
+        FileDescriptor s = Libcore.os.socket(AF_INET6, SOCK_DGRAM, IPPROTO_ICMPV6);
+        Libcore.os.setsockoptTimeval(s, SOL_SOCKET, SO_RCVTIMEO, StructTimeval.fromMillis(100));
+        return s;
+    }
+
+    /**
+     * Sends a ping packet to a random port on the specified address on the specified socket.
+     */
+    private void sendPing(FileDescriptor s,
+            InetAddress address, byte[] packet) throws ErrnoException, IOException {
+        // Pick a random port. Choose a range that gives a reasonable chance of picking a low port.
+        int port = (int) (Math.random() * 2048);
+
+        // Send the packet.
+        int ret = Libcore.os.sendto(s, ByteBuffer.wrap(packet), 0, address, port);
+        assertEquals(packet.length, ret);
+    }
+
+    /**
+     * Checks that a socket has received a response appropriate to the specified packet.
+     */
+    private void checkResponse(FileDescriptor s,
+            InetAddress dest, byte[] sent) throws ErrnoException, IOException {
+        // Receive the response.
+        InetSocketAddress from = new InetSocketAddress();
+        ByteBuffer responseBuffer = ByteBuffer.allocate(MAX_SIZE);
+        int bytesRead = Libcore.os.recvfrom(s, responseBuffer, 0, from);
+
+        // Check the source address and scope ID.
+        assertTrue(from.getAddress() instanceof Inet6Address);
+        Inet6Address fromAddress = (Inet6Address) from.getAddress();
+        assertEquals(0, fromAddress.getScopeId());
+        assertNull(fromAddress.getScopedInterface());
+        assertEquals(dest.getHostAddress(), fromAddress.getHostAddress());
+
+        // Check the packet length.
+        assertEquals(sent.length, bytesRead);
+
+        // Check the response is an echo reply.
+        byte[] response = new byte[bytesRead];
+        responseBuffer.get(response, 0, bytesRead);
+        assertEquals((byte) 0x81, response[0]);
+
+        // Find out what ICMP ID was used in the packet that was sent.
+        int id = ((InetSocketAddress) Libcore.os.getsockname(s)).getPort();
+        sent[4] = (byte) (id / 256);
+        sent[5] = (byte) (id % 256);
+
+        // Ensure the response is the same as the packet, except for the type (which is 0x81)
+        // and the ID and checksum,  which are set by the kernel.
+        response[0] = (byte) 0x80;                 // Type.
+        response[2] = response[3] = (byte) 0x00;   // Checksum.
+        assertArrayBytesEqual(response, sent, bytesRead);
+    }
+
+    /**
+     * Sends NUM_PACKETS random ping packets to ::1 and checks the replies.
+     */
+    public void testLoopbackPing() throws ErrnoException, IOException {
+        // Generate a random ping packet and send it to localhost.
+        InetAddress ipv6Loopback = InetAddress.getByName(null);
+        assertEquals("localhost/::1", ipv6Loopback.toString());
+
+        for (int i = 0; i < NUM_PACKETS; i++) {
+            byte[] packet = pingPacket((int) (Math.random() * MAX_SIZE));
+            FileDescriptor s = createPingSocket();
+            sendPing(s, ipv6Loopback, packet);
+            checkResponse(s, ipv6Loopback, packet);
+            // Check closing the socket doesn't raise an exception.
+            Libcore.os.close(s);
+        }
+    }
+}
diff --git a/tests/tests/net/src/android/net/wifi/cts/NsdManagerTest.java b/tests/tests/net/src/android/net/wifi/cts/NsdManagerTest.java
new file mode 100644
index 0000000..d1e4c44
--- /dev/null
+++ b/tests/tests/net/src/android/net/wifi/cts/NsdManagerTest.java
@@ -0,0 +1,459 @@
+/*
+ * Copyright (C) 2012 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 android.net.wifi.cts;
+
+import android.content.Context;
+import android.net.nsd.NsdManager;
+import android.net.nsd.NsdServiceInfo;
+import android.test.AndroidTestCase;
+import android.util.Log;
+
+import java.io.IOException;
+import java.net.ServerSocket;
+import java.util.Random;
+import java.util.List;
+import java.util.ArrayList;
+
+public class NsdManagerTest extends AndroidTestCase {
+
+    private static final String TAG = "NsdManagerTest";
+    private static final String SERVICE_TYPE = "_nmt._tcp";
+    private static final int TIMEOUT = 2000;
+
+    private static final boolean DBG = false;
+
+    NsdManager mNsdManager;
+
+    NsdManager.RegistrationListener mRegistrationListener;
+    NsdManager.DiscoveryListener mDiscoveryListener;
+    NsdManager.ResolveListener mResolveListener;
+
+    public NsdManagerTest() {
+        initRegistrationListener();
+        initDiscoveryListener();
+        initResolveListener();
+    }
+
+    private void initRegistrationListener() {
+        mRegistrationListener = new NsdManager.RegistrationListener() {
+            @Override
+            public void onRegistrationFailed(NsdServiceInfo serviceInfo, int errorCode) {
+                setEvent("onRegistrationFailed", errorCode);
+            }
+
+            @Override
+            public void onUnregistrationFailed(NsdServiceInfo serviceInfo, int errorCode) {
+                setEvent("onUnregistrationFailed", errorCode);
+            }
+
+            @Override
+            public void onServiceRegistered(NsdServiceInfo serviceInfo) {
+                setEvent("onServiceRegistered", serviceInfo);
+            }
+
+            @Override
+            public void onServiceUnregistered(NsdServiceInfo serviceInfo) {
+                setEvent("onServiceUnregistered", serviceInfo);
+            }
+        };
+    }
+
+    private void initDiscoveryListener() {
+        mDiscoveryListener = new NsdManager.DiscoveryListener() {
+            @Override
+            public void onStartDiscoveryFailed(String serviceType, int errorCode) {
+                setEvent("onStartDiscoveryFailed", errorCode);
+            }
+
+            @Override
+            public void onStopDiscoveryFailed(String serviceType, int errorCode) {
+                setEvent("onStopDiscoveryFailed", errorCode);
+            }
+
+            @Override
+            public void onDiscoveryStarted(String serviceType) {
+                NsdServiceInfo info = new NsdServiceInfo();
+                info.setServiceType(serviceType);
+                setEvent("onDiscoveryStarted", info);
+            }
+
+            @Override
+            public void onDiscoveryStopped(String serviceType) {
+                NsdServiceInfo info = new NsdServiceInfo();
+                info.setServiceType(serviceType);
+                setEvent("onDiscoveryStopped", info);
+            }
+
+            @Override
+            public void onServiceFound(NsdServiceInfo serviceInfo) {
+                setEvent("onServiceFound", serviceInfo);
+            }
+
+            @Override
+            public void onServiceLost(NsdServiceInfo serviceInfo) {
+                setEvent("onServiceLost", serviceInfo);
+            }
+        };
+    }
+
+    private void initResolveListener() {
+        mResolveListener = new NsdManager.ResolveListener() {
+            @Override
+            public void onResolveFailed(NsdServiceInfo serviceInfo, int errorCode) {
+                setEvent("onResolveFailed", errorCode);
+            }
+
+            @Override
+            public void onServiceResolved(NsdServiceInfo serviceInfo) {
+                setEvent("onServiceResolved", serviceInfo);
+            }
+        };
+    }
+
+
+
+    private final class EventData {
+        EventData(String callbackName, NsdServiceInfo info) {
+            mCallbackName = callbackName;
+            mSucceeded = true;
+            mErrorCode = 0;
+            mInfo = info;
+        }
+        EventData(String callbackName, int errorCode) {
+            mCallbackName = callbackName;
+            mSucceeded = false;
+            mErrorCode = errorCode;
+            mInfo = null;
+        }
+        private final String mCallbackName;
+        private final boolean mSucceeded;
+        private final int mErrorCode;
+        private final NsdServiceInfo mInfo;
+    }
+
+    private final List<EventData> mEventCache = new ArrayList<EventData>();
+
+    private void setEvent(String callbackName, int errorCode) {
+        if (DBG) Log.d(TAG, callbackName + " failed with " + String.valueOf(errorCode));
+        EventData eventData = new EventData(callbackName, errorCode);
+        synchronized (mEventCache) {
+            mEventCache.add(eventData);
+            mEventCache.notify();
+        }
+    }
+
+    private void setEvent(String callbackName, NsdServiceInfo info) {
+        if (DBG) Log.d(TAG, "Received event " + callbackName + " for " + info.getServiceName());
+        EventData eventData = new EventData(callbackName, info);
+        synchronized (mEventCache) {
+            mEventCache.add(eventData);
+            mEventCache.notify();
+        }
+    }
+
+    void clearEventCache() {
+        synchronized(mEventCache) {
+            mEventCache.clear();
+        }
+    }
+
+    int eventCacheSize() {
+        synchronized(mEventCache) {
+            return mEventCache.size();
+        }
+    }
+
+    private int mWaitId = 0;
+    private EventData waitForCallback(String callbackName) {
+
+        synchronized(mEventCache) {
+
+            mWaitId ++;
+            if (DBG) Log.d(TAG, "Waiting for " + callbackName + ", id=" + String.valueOf(mWaitId));
+
+            try {
+                long startTime = android.os.SystemClock.uptimeMillis();
+                long elapsedTime = 0;
+                int index = 0;
+                while (elapsedTime < TIMEOUT ) {
+                    // first check if we've received that event
+                    for (; index < mEventCache.size(); index++) {
+                        EventData e = mEventCache.get(index);
+                        if (e.mCallbackName.equals(callbackName)) {
+                            if (DBG) Log.d(TAG, "exiting wait id=" + String.valueOf(mWaitId));
+                            return e;
+                        }
+                    }
+
+                    // Not yet received, just wait
+                    mEventCache.wait(TIMEOUT - elapsedTime);
+                    elapsedTime = android.os.SystemClock.uptimeMillis() - startTime;
+                }
+                // we exited the loop because of TIMEOUT; fail the call
+                if (DBG) Log.d(TAG, "timed out waiting id=" + String.valueOf(mWaitId));
+                return null;
+            } catch (InterruptedException e) {
+                return null;                       // wait timed out!
+            }
+        }
+    }
+
+    private EventData waitForNewEvents() throws InterruptedException {
+        if (DBG) Log.d(TAG, "Waiting for a bit, id=" + String.valueOf(mWaitId));
+
+        long startTime = android.os.SystemClock.uptimeMillis();
+        long elapsedTime = 0;
+        synchronized (mEventCache) {
+            int index = mEventCache.size();
+            while (elapsedTime < TIMEOUT ) {
+                // first check if we've received that event
+                for (; index < mEventCache.size(); index++) {
+                    EventData e = mEventCache.get(index);
+                    return e;
+                }
+
+                // Not yet received, just wait
+                mEventCache.wait(TIMEOUT - elapsedTime);
+                elapsedTime = android.os.SystemClock.uptimeMillis() - startTime;
+            }
+        }
+
+        return null;
+    }
+
+    private String mServiceName;
+
+    @Override
+    public void setUp() {
+        if (DBG) Log.d(TAG, "Setup test ...");
+        mNsdManager = (NsdManager) getContext().getSystemService(Context.NSD_SERVICE);
+
+        Random rand = new Random();
+        mServiceName = new String("NsdTest");
+        for (int i = 0; i < 4; i++) {
+            mServiceName = mServiceName + String.valueOf(rand.nextInt(10));
+        }
+    }
+
+    @Override
+    public void tearDown() {
+        if (DBG) Log.d(TAG, "Tear down test ...");
+    }
+
+    public void runTest() throws Exception {
+        NsdServiceInfo si = new NsdServiceInfo();
+        si.setServiceType(SERVICE_TYPE);
+        si.setServiceName(mServiceName);
+
+        EventData lastEvent = null;
+
+        if (DBG) Log.d(TAG, "Starting test ...");
+
+        ServerSocket socket;
+        int localPort;
+
+        try {
+            socket = new ServerSocket(0);
+            localPort = socket.getLocalPort();
+            si.setPort(localPort);
+        } catch (IOException e) {
+            if (DBG) Log.d(TAG, "Could not open a local socket");
+            assertTrue(false);
+            return;
+        }
+
+        if (DBG) Log.d(TAG, "Port = " + String.valueOf(localPort));
+
+        clearEventCache();
+
+        mNsdManager.registerService(si, NsdManager.PROTOCOL_DNS_SD, mRegistrationListener);
+        lastEvent = waitForCallback("onServiceRegistered");                 // id = 1
+        assertTrue(lastEvent != null);
+        assertTrue(lastEvent.mSucceeded);
+        assertTrue(eventCacheSize() == 1);
+
+        // We may not always get the name that we tried to register;
+        // This events tells us the name that was registered.
+        String registeredName = lastEvent.mInfo.getServiceName();
+        si.setServiceName(registeredName);
+
+        clearEventCache();
+
+        mNsdManager.discoverServices(SERVICE_TYPE, NsdManager.PROTOCOL_DNS_SD,
+                mDiscoveryListener);
+
+        // Expect discovery started
+        lastEvent = waitForCallback("onDiscoveryStarted");                  // id = 2
+
+        assertTrue(lastEvent != null);
+        assertTrue(lastEvent.mSucceeded);
+
+        // Remove this event, so accounting becomes easier later
+        synchronized (mEventCache) {
+            mEventCache.remove(lastEvent);
+        }
+
+        // Expect a service record to be discovered (and filter the ones
+        // that are unrelated to this test)
+        boolean found = false;
+        for (int i = 0; i < 32; i++) {
+
+            lastEvent = waitForCallback("onServiceFound");                  // id = 3
+            if (lastEvent == null) {
+                // no more onServiceFound events are being reported!
+                break;
+            }
+
+            assertTrue(lastEvent.mSucceeded);
+
+            if (DBG) Log.d(TAG, "id = " + String.valueOf(mWaitId) + ": ServiceName = " +
+                    lastEvent.mInfo.getServiceName());
+
+            if (lastEvent.mInfo.getServiceName().equals(registeredName)) {
+                // Save it, as it will get overwritten with new serviceFound events
+                si = lastEvent.mInfo;
+                found = true;
+            }
+
+            // Remove this event from the event cache, so it won't be found by subsequent
+            // calls to waitForCallback
+            synchronized (mEventCache) {
+                mEventCache.remove(lastEvent);
+            }
+        }
+
+        assertTrue(found);
+
+        // We've removed all serviceFound events, and we've removed the discoveryStarted
+        // event as well, so now the event cache should be empty!
+        assertTrue(eventCacheSize() == 0);
+
+        // Resolve the service
+        clearEventCache();
+        mNsdManager.resolveService(si, mResolveListener);
+        lastEvent = waitForCallback("onServiceResolved");                   // id = 4
+
+        assertTrue(lastEvent != null);
+        assertTrue(lastEvent.mSucceeded);
+
+        if (DBG) Log.d(TAG, "id = " + String.valueOf(mWaitId) + ": Port = " +
+                String.valueOf(lastEvent.mInfo.getPort()));
+
+        assertTrue(lastEvent.mInfo.getPort() == localPort);
+        assertTrue(eventCacheSize() == 1);
+
+        assertTrue(checkForAdditionalEvents());
+        clearEventCache();
+
+        // Unregister the service
+        mNsdManager.unregisterService(mRegistrationListener);
+        lastEvent = waitForCallback("onServiceUnregistered");               // id = 5
+
+        assertTrue(lastEvent != null);
+        assertTrue(lastEvent.mSucceeded);
+
+        // Expect a callback for service lost
+        lastEvent = waitForCallback("onServiceLost");                       // id = 6
+
+        assertTrue(lastEvent != null);
+        assertTrue(lastEvent.mInfo.getServiceName().equals(registeredName));
+
+        assertTrue(eventCacheSize() == 2);
+
+        // Register service again to see if we discover it
+        checkForAdditionalEvents();
+        clearEventCache();
+
+        si = new NsdServiceInfo();
+        si.setServiceType(SERVICE_TYPE);
+        si.setServiceName(mServiceName);
+        si.setPort(localPort);
+
+        // Create a new registration listener and register same service again
+        initRegistrationListener();
+
+        mNsdManager.registerService(si, NsdManager.PROTOCOL_DNS_SD, mRegistrationListener);
+
+        lastEvent = waitForCallback("onServiceRegistered");                 // id = 7
+
+        assertTrue(lastEvent != null);
+        assertTrue(lastEvent.mSucceeded);
+
+        registeredName = lastEvent.mInfo.getServiceName();
+
+        // Expect a record to be discovered
+        lastEvent = waitForCallback("onServiceFound");                      // id = 8
+
+        assertTrue(lastEvent != null);
+        assertTrue(lastEvent.mSucceeded);
+
+        if (DBG) Log.d(TAG, "id = " + String.valueOf(mWaitId) + ": ServiceName = " +
+                lastEvent.mInfo.getServiceName());
+
+        assertTrue(lastEvent.mInfo.getServiceName().equals(registeredName));
+        assertTrue(checkCacheSize(2));
+
+        checkForAdditionalEvents();
+        clearEventCache();
+
+        mNsdManager.stopServiceDiscovery(mDiscoveryListener);
+        lastEvent = waitForCallback("onDiscoveryStopped");                  // id = 9
+        assertTrue(lastEvent != null);
+        assertTrue(lastEvent.mSucceeded);
+        assertTrue(checkCacheSize(1));
+
+        checkForAdditionalEvents();
+        clearEventCache();
+
+        mNsdManager.unregisterService(mRegistrationListener);
+
+        lastEvent =  waitForCallback("onServiceUnregistered");              // id = 10
+        assertTrue(lastEvent != null);
+        assertTrue(lastEvent.mSucceeded);
+        assertTrue(checkCacheSize(1));
+    }
+
+    boolean checkCacheSize(int size) {
+        synchronized (mEventCache) {
+            int cacheSize = mEventCache.size();
+            if (cacheSize != size) {
+                Log.d(TAG, "id = " + mWaitId + ": event cache size = " + cacheSize);
+                for (int i = 0; i < cacheSize; i++) {
+                    EventData e = mEventCache.get(i);
+                    String sname = (e.mInfo != null) ? "(" + e.mInfo.getServiceName() + ")" : "";
+                    Log.d(TAG, "eventName is " + e.mCallbackName + sname);
+                }
+            }
+            return (cacheSize == size);
+        }
+    }
+
+    boolean checkForAdditionalEvents() {
+        try {
+            EventData e = waitForNewEvents();
+            if (e != null) {
+                String sname = (e.mInfo != null) ? "(" + e.mInfo.getServiceName() + ")" : "";
+                Log.d(TAG, "ignoring unexpected event " + e.mCallbackName + sname);
+            }
+            return (e == null);
+        }
+        catch (InterruptedException ex) {
+            return false;
+        }
+    }
+}
+
diff --git a/tests/tests/opengl/src/android/opengl/cts/ColorBufferTest.java b/tests/tests/opengl/src/android/opengl/cts/ColorBufferTest.java
old mode 100755
new mode 100644
diff --git a/tests/tests/opengl/src/android/opengl/cts/GL2JniLibOne.java b/tests/tests/opengl/src/android/opengl/cts/GL2JniLibOne.java
old mode 100755
new mode 100644
diff --git a/tests/tests/opengl/src/android/opengl/cts/NativeAttachShaderTest.java b/tests/tests/opengl/src/android/opengl/cts/NativeAttachShaderTest.java
old mode 100755
new mode 100644
diff --git a/tests/tests/opengl/src/android/opengl/cts/NativeColorBufferTest.java b/tests/tests/opengl/src/android/opengl/cts/NativeColorBufferTest.java
old mode 100755
new mode 100644
diff --git a/tests/tests/opengl/src/android/opengl/cts/NativeRendererOneColorBufferTest.java b/tests/tests/opengl/src/android/opengl/cts/NativeRendererOneColorBufferTest.java
old mode 100755
new mode 100644
diff --git a/tests/tests/opengl/src/android/opengl/cts/OpenGLES20ActivityTwo.java b/tests/tests/opengl/src/android/opengl/cts/OpenGLES20ActivityTwo.java
old mode 100755
new mode 100644
diff --git a/tests/tests/opengl/src/android/opengl/cts/OpenGLES20NativeActivityOne.java b/tests/tests/opengl/src/android/opengl/cts/OpenGLES20NativeActivityOne.java
old mode 100755
new mode 100644
index ac4fce5..4602d4f
--- a/tests/tests/opengl/src/android/opengl/cts/OpenGLES20NativeActivityOne.java
+++ b/tests/tests/opengl/src/android/opengl/cts/OpenGLES20NativeActivityOne.java
@@ -1,3 +1,18 @@
+/*
+ * Copyright (C) 2012 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 android.opengl.cts;
 
 import android.app.Activity;
diff --git a/tests/tests/opengl/src/android/opengl/cts/OpenGLES20NativeActivityTwo.java b/tests/tests/opengl/src/android/opengl/cts/OpenGLES20NativeActivityTwo.java
old mode 100755
new mode 100644
diff --git a/tests/tests/opengl/src/android/opengl/cts/ProgramTest.java b/tests/tests/opengl/src/android/opengl/cts/ProgramTest.java
index a69c8e5..85009d2 100644
--- a/tests/tests/opengl/src/android/opengl/cts/ProgramTest.java
+++ b/tests/tests/opengl/src/android/opengl/cts/ProgramTest.java
@@ -11,7 +11,7 @@
  * 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 android.opengl.cts;
 
diff --git a/tests/tests/opengl/src/android/opengl/cts/RendererElevenShaderTest.java b/tests/tests/opengl/src/android/opengl/cts/RendererElevenShaderTest.java
old mode 100755
new mode 100644
diff --git a/tests/tests/opengl/src/android/opengl/cts/RendererOneColorBufferTest.java b/tests/tests/opengl/src/android/opengl/cts/RendererOneColorBufferTest.java
old mode 100755
new mode 100644
diff --git a/tests/tests/opengl/src/android/opengl/cts/RendererTwelveShaderTest.java b/tests/tests/opengl/src/android/opengl/cts/RendererTwelveShaderTest.java
old mode 100755
new mode 100644
diff --git a/tests/tests/opengl/src/android/opengl/cts/Vertex.java b/tests/tests/opengl/src/android/opengl/cts/Vertex.java
old mode 100755
new mode 100644
diff --git a/tests/tests/opengl/src/android/opengl/cts/WrapperTest.java b/tests/tests/opengl/src/android/opengl/cts/WrapperTest.java
new file mode 100644
index 0000000..895a02b
--- /dev/null
+++ b/tests/tests/opengl/src/android/opengl/cts/WrapperTest.java
@@ -0,0 +1,330 @@
+/*
+ * Copyright (C) 2013 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 android.opengl.cts;
+
+import android.opengl.EGL14;
+import android.opengl.EGLConfig;
+import android.opengl.EGLContext;
+import android.opengl.EGLDisplay;
+import android.opengl.EGLSurface;
+import android.opengl.GLES10;
+import android.opengl.GLES20;
+import android.test.AndroidTestCase;
+import android.util.Log;
+
+import java.nio.ByteBuffer;
+import java.nio.IntBuffer;
+
+/**
+ * Test some aspects of the Java-language wrappers generated for OpenGL.
+ */
+public class WrapperTest extends AndroidTestCase {
+    private static final String TAG = "WrapperTest";
+
+    private EGLDisplay mEGLDisplay;
+    private EGLContext mEGLContext;
+    private EGLSurface mEGLSurface;
+
+
+    /**
+     * Tests range-checking on glGetIntegerv in GLES 1.x.
+     */
+    public void testGetIntegerv1() {
+        eglSetup(1, 1, 1);  // GLES 1.x with 1x1 pbuffer
+
+        checkGlError("start");
+
+        int[] countBuf = new int[1];
+        GLES10.glGetIntegerv(GLES10.GL_NUM_COMPRESSED_TEXTURE_FORMATS, countBuf, 0);
+        checkGlError("glGetIntegerv(count)");
+
+        int formatCount = countBuf[0];
+        Log.d(TAG, "got count=" + formatCount);
+
+        // try with a buffer large enough to hold all results
+        GLES10.glGetIntegerv(GLES10.GL_COMPRESSED_TEXTURE_FORMATS, new int[formatCount], 0);
+        checkGlError("glGetIntegerv(full1)");
+
+        // try with an exact-fit IntBuffer
+        ByteBuffer fullByteBuf = ByteBuffer.allocateDirect(4 * formatCount);
+        IntBuffer fullIntBuf = fullByteBuf.asIntBuffer();
+        GLES10.glGetIntegerv(GLES10.GL_COMPRESSED_TEXTURE_FORMATS, fullIntBuf);
+        checkGlError("glGetIntegerv(full2)");
+
+        // try with an oversized IntBuffer with an offset
+        final int OFFSET = 5;
+        ByteBuffer oversizeByteBuf = ByteBuffer.allocateDirect(4 * (formatCount+OFFSET));
+        IntBuffer oversizeIntBuf = oversizeByteBuf.asIntBuffer();
+        oversizeIntBuf.position(OFFSET);
+        GLES10.glGetIntegerv(GLES10.GL_COMPRESSED_TEXTURE_FORMATS, oversizeIntBuf);
+        checkGlError("glGetIntegerv(full3)");
+        assertEquals(oversizeIntBuf.get(OFFSET), fullIntBuf.get(0));
+
+        // retry with a buffer that's too small -- should throw
+        ByteBuffer partialByteBuf = ByteBuffer.allocateDirect(4 * (formatCount - 1));
+        IntBuffer partialIntBuf = partialByteBuf.asIntBuffer();
+        try {
+            GLES10.glGetIntegerv(GLES10.GL_COMPRESSED_TEXTURE_FORMATS, partialIntBuf);
+            checkGlError("glGetIntegerv(partial1)");
+            throw new RuntimeException("buffer has overrun (intbuf)");
+        } catch (IllegalArgumentException iae) {
+            // good
+        }
+
+        try {
+            GLES10.glGetIntegerv(GLES10.GL_COMPRESSED_TEXTURE_FORMATS, new int[formatCount-1], 0);
+            checkGlError("glGetIntegerv(partial2)");
+            throw new RuntimeException("buffer has overrun (int[])");
+        } catch (IllegalArgumentException iae) {
+            // good
+        }
+
+        eglRelease();
+    }
+
+    /**
+     * Tests range-checking on glGetIntegerv in GLES 2.x.
+     */
+    public void testGetIntegerv2() {
+        eglSetup(2, 1, 1);  // GLES 2.x with 1x1 pbuffer
+
+        checkGlError("start");
+
+        int[] countBuf = new int[1];
+        GLES20.glGetIntegerv(GLES20.GL_NUM_COMPRESSED_TEXTURE_FORMATS, countBuf, 0);
+        checkGlError("glGetIntegerv(count)");
+
+        int formatCount = countBuf[0];
+        Log.d(TAG, "got count=" + formatCount);
+
+        // try with a buffer large enough to hold all results
+        GLES20.glGetIntegerv(GLES20.GL_COMPRESSED_TEXTURE_FORMATS, new int[formatCount], 0);
+        checkGlError("glGetIntegerv(full1)");
+
+        // try with an exact-fit IntBuffer
+        ByteBuffer fullByteBuf = ByteBuffer.allocateDirect(4 * formatCount);
+        IntBuffer fullIntBuf = fullByteBuf.asIntBuffer();
+        GLES20.glGetIntegerv(GLES20.GL_COMPRESSED_TEXTURE_FORMATS, fullIntBuf);
+        checkGlError("glGetIntegerv(full2)");
+
+        // try with an oversized IntBuffer with an offset
+        final int OFFSET = 5;
+        ByteBuffer oversizeByteBuf = ByteBuffer.allocateDirect(4 * (formatCount+OFFSET));
+        IntBuffer oversizeIntBuf = oversizeByteBuf.asIntBuffer();
+        oversizeIntBuf.position(OFFSET);
+        GLES20.glGetIntegerv(GLES20.GL_COMPRESSED_TEXTURE_FORMATS, oversizeIntBuf);
+        checkGlError("glGetIntegerv(full3)");
+        assertEquals(oversizeIntBuf.get(OFFSET), fullIntBuf.get(0));
+
+        // retry with a buffer that's too small -- should throw
+        ByteBuffer partialByteBuf = ByteBuffer.allocateDirect(4 * (formatCount - 1));
+        IntBuffer partialIntBuf = partialByteBuf.asIntBuffer();
+        try {
+            GLES20.glGetIntegerv(GLES20.GL_COMPRESSED_TEXTURE_FORMATS, partialIntBuf);
+            checkGlError("glGetIntegerv(partial1)");
+            throw new RuntimeException("buffer has overrun (intbuf)");
+        } catch (IllegalArgumentException iae) {
+            // good
+        }
+
+        try {
+            GLES20.glGetIntegerv(GLES20.GL_COMPRESSED_TEXTURE_FORMATS, new int[formatCount-1], 0);
+            checkGlError("glGetIntegerv(partial2)");
+            throw new RuntimeException("buffer has overrun (int[])");
+        } catch (IllegalArgumentException iae) {
+            // good
+        }
+
+        eglRelease();
+    }
+
+    /**
+     * Tests whether EGL is releasing resources when the thread exits.  If
+     * it doesn't, we'll consume memory rapidly, and will fail or be
+     * killed within a couple hundred iterations.
+     * <p>
+     * It may be worthwhile to watch the memory growth with procrank or showmap
+     * while the test runs to detect smaller leaks.
+     */
+    public void testThreadCleanup() throws Throwable {
+        class WrappedTest implements Runnable {
+            public Throwable mThrowable;
+
+            private static final int WIDTH = 1280;
+            private static final int HEIGHT = 720;
+
+            @Override
+            public void run() {
+                try {
+                    eglSetup(2, WIDTH, HEIGHT);
+                    if (!EGL14.eglMakeCurrent(mEGLDisplay, mEGLSurface, mEGLSurface, mEGLContext)) {
+                        throw new RuntimeException("eglMakeCurrent failed");
+                    }
+                    eglRelease();
+                } catch (Throwable th) {
+                    mThrowable = th;
+                }
+            }
+        }
+
+        WrappedTest wrappedTest = new WrappedTest();
+
+        // Android has "reference-counted" EGL initialization.  We want our eglTerminate call
+        // to be the "last" termination, since that's the situation we're trying to test, but
+        // it's possible that some previous test failed to balance eglInitialize and
+        // eglTerminate.  So we call eglTerminate several times in a desperate attempt to
+        // zero out the refcount.
+        //
+        // Before we can terminate we need to be sure that the display has been initialized
+        // at least once.
+        eglSetup(2, 1, 1);
+        for (int i = 0; i < 100; i++) {
+            EGL14.eglTerminate(mEGLDisplay);
+        }
+
+        for (int i = 0; i < 1000; i++) {
+            if ((i % 25) == 0) {
+                Log.d(TAG, "iteration " + i);
+            }
+
+            Thread th = new Thread(wrappedTest, "EGL thrash");
+            th.start();
+            th.join();
+            if (wrappedTest.mThrowable != null) {
+                throw wrappedTest.mThrowable;
+            }
+        }
+    }
+
+    /**
+     * Checks for GL errors.
+     */
+    public void checkGlError(String op) {
+        int error;
+        while ((error = GLES20.glGetError()) != GLES20.GL_NO_ERROR) {
+            Log.e(TAG, op + ": glError " + error);
+            throw new RuntimeException(op + ": glError " + error);
+        }
+    }
+
+    /**
+     * Prepares EGL.  Pass in the desired GLES API version (1 or 2).
+     * <p>
+     * Sets mEGLDisplay, mEGLContext, and mEGLSurface, and makes them current.
+     */
+    private void eglSetup(int api, int width, int height) {
+        mEGLDisplay = EGL14.eglGetDisplay(EGL14.EGL_DEFAULT_DISPLAY);
+        if (mEGLDisplay == EGL14.EGL_NO_DISPLAY) {
+            throw new RuntimeException("unable to get EGL14 display");
+        }
+        int[] version = new int[2];
+        if (!EGL14.eglInitialize(mEGLDisplay, version, 0, version, 1)) {
+            mEGLDisplay = null;
+            throw new RuntimeException("unable to initialize EGL14");
+        }
+
+        int renderableType;
+        switch (api) {
+            case 1:
+                renderableType = EGL14.EGL_OPENGL_ES_BIT;
+                break;
+            case 2:
+                renderableType = EGL14.EGL_OPENGL_ES2_BIT;
+                break;
+            default:
+                throw new RuntimeException("unsupported API level " + api);
+        }
+
+        // Configure EGL for OpenGL ES 1.0 or 2.0, with a pbuffer
+        int[] attribList = {
+                EGL14.EGL_RED_SIZE, 8,
+                EGL14.EGL_GREEN_SIZE, 8,
+                EGL14.EGL_BLUE_SIZE, 8,
+                EGL14.EGL_SURFACE_TYPE, EGL14.EGL_PBUFFER_BIT,
+                EGL14.EGL_RENDERABLE_TYPE, renderableType,
+                EGL14.EGL_NONE
+        };
+        EGLConfig[] configs = new EGLConfig[1];
+        int[] numConfigs = new int[1];
+        if (!EGL14.eglChooseConfig(mEGLDisplay, attribList, 0, configs, 0, configs.length,
+                numConfigs, 0)) {
+            throw new RuntimeException("unable to find RGB888+pbuffer ES" + api + " EGL config");
+        }
+
+        // Create context
+        int[] attrib_list = {
+                EGL14.EGL_CONTEXT_CLIENT_VERSION, api,
+                EGL14.EGL_NONE
+        };
+        mEGLContext = EGL14.eglCreateContext(mEGLDisplay, configs[0], EGL14.EGL_NO_CONTEXT,
+                attrib_list, 0);
+        checkEglError("eglCreateContext");
+        if (mEGLContext == null) {
+            throw new RuntimeException("null context");
+        }
+
+        // Create a 1x1 pbuffer surface
+        int[] surfaceAttribs = {
+                EGL14.EGL_WIDTH, width,
+                EGL14.EGL_HEIGHT, height,
+                EGL14.EGL_NONE
+        };
+        mEGLSurface = EGL14.eglCreatePbufferSurface(mEGLDisplay, configs[0], surfaceAttribs, 0);
+        checkEglError("eglCreatePbufferSurface");
+        if (mEGLSurface == null) {
+            throw new RuntimeException("surface was null");
+        }
+
+        // Make it current
+        if (!EGL14.eglMakeCurrent(mEGLDisplay, mEGLSurface, mEGLSurface, mEGLContext)) {
+            throw new RuntimeException("eglMakeCurrent failed");
+        }
+    }
+
+    /**
+     * Releases EGL goodies.
+     */
+    private void eglRelease() {
+        // Terminating the display will release most objects, but won't discard the current
+        // surfaces and context until we release the thread.  It shouldn't matter what order
+        // we do these in.
+        if (mEGLDisplay != null) {
+            EGL14.eglTerminate(mEGLDisplay);
+            EGL14.eglReleaseThread();
+        }
+
+        // null everything out so future attempts to use this object will cause an NPE
+        mEGLDisplay = null;
+        mEGLContext = null;
+        mEGLSurface = null;
+    }
+
+    /**
+     * Checks for EGL errors.
+     */
+    private void checkEglError(String msg) {
+        boolean failed = false;
+        int error;
+        while ((error = EGL14.eglGetError()) != EGL14.EGL_SUCCESS) {
+            Log.e(TAG, msg + ": EGL error: 0x" + Integer.toHexString(error));
+            failed = true;
+        }
+        if (failed) {
+            throw new RuntimeException("EGL error encountered (see log)");
+        }
+    }
+}
diff --git a/tests/tests/openglperf/Android.mk b/tests/tests/openglperf/Android.mk
index e10d1c7..55c39f2 100644
--- a/tests/tests/openglperf/Android.mk
+++ b/tests/tests/openglperf/Android.mk
@@ -23,7 +23,7 @@
 
 LOCAL_JAVA_LIBRARIES := android.test.runner
 
-LOCAL_STATIC_JAVA_LIBRARIES := ctstestrunner ctsutil
+LOCAL_STATIC_JAVA_LIBRARIES := ctstestrunner ctsdeviceutil
 
 LOCAL_JNI_SHARED_LIBRARIES := libctsopenglperf_jni
 
diff --git a/tests/tests/os/Android.mk b/tests/tests/os/Android.mk
index be0ab83..f43043b 100644
--- a/tests/tests/os/Android.mk
+++ b/tests/tests/os/Android.mk
@@ -21,11 +21,14 @@
 # and when built explicitly put it in the data partition
 LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
 
+LOCAL_PROGUARD_ENABLED := disabled
+
 LOCAL_JAVA_LIBRARIES := android.test.runner
 
-LOCAL_STATIC_JAVA_LIBRARIES := ctstestrunner
+LOCAL_STATIC_JAVA_LIBRARIES := ctstestrunner guava
 
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
+LOCAL_SRC_FILES := $(call all-java-files-under, src) \
+        src/android/os/cts/IParcelFileDescriptorPeer.aidl
 
 LOCAL_PACKAGE_NAME := CtsOsTestCases
 
diff --git a/tests/tests/os/AndroidManifest.xml b/tests/tests/os/AndroidManifest.xml
index 64b45be..2418132 100644
--- a/tests/tests/os/AndroidManifest.xml
+++ b/tests/tests/os/AndroidManifest.xml
@@ -19,7 +19,18 @@
     package="com.android.cts.os">
 
     <uses-permission android:name="android.permission.DISABLE_KEYGUARD" />
+    <uses-permission android:name="android.permission.KILL_BACKGROUND_PROCESSES" />
+    <uses-permission android:name="android.permission.INTERNET" />
+
     <application>
+        <service
+            android:name="android.os.cts.ParcelFileDescriptorPeer$Red"
+            android:process=":red"
+            android:exported="true" />
+        <service
+            android:name="android.os.cts.ParcelFileDescriptorPeer$Blue"
+            android:process=":blue"
+            android:exported="true" />
         <uses-library android:name="android.test.runner" />
     </application>
 
@@ -28,4 +39,3 @@
                      android:label="CTS tests of android.os"/>
 
 </manifest>
-
diff --git a/tests/tests/os/src/android/os/cts/AbiTest.java b/tests/tests/os/src/android/os/cts/AbiTest.java
index 69b314d..a342669 100644
--- a/tests/tests/os/src/android/os/cts/AbiTest.java
+++ b/tests/tests/os/src/android/os/cts/AbiTest.java
@@ -49,10 +49,15 @@
             if (f.isDirectory()) {
                 checkElfFilesInDirectory(f);
             } else if (f.getName().endsWith(".so") || f.canExecute()) {
-                try {
-                    ReadElf.read(f);
+                ReadElf elf = null;
+                try { // TODO: switch to try-with-resources.
+                    elf = ReadElf.read(f);
                 } catch (IllegalArgumentException ignored) {
                     // If it's not actually an ELF file, we don't care.
+                } finally {
+                    if (elf != null) {
+                        elf.close();
+                    }
                 }
             }
         }
diff --git a/tests/tests/os/src/android/os/cts/BuildTest.java b/tests/tests/os/src/android/os/cts/BuildTest.java
index a59484a..7176a6d 100644
--- a/tests/tests/os/src/android/os/cts/BuildTest.java
+++ b/tests/tests/os/src/android/os/cts/BuildTest.java
@@ -157,7 +157,7 @@
     private static final Pattern PRODUCT_PATTERN =
         Pattern.compile("^([0-9A-Za-z._-]+)$");
     private static final Pattern SERIAL_NUMBER_PATTERN =
-        Pattern.compile("^([0-9A-Za-z]{0,20})$");
+        Pattern.compile("^([0-9A-Za-z]{6,20})$");
     private static final Pattern TAGS_PATTERN =
         Pattern.compile("^([0-9A-Za-z.,_-]+)$");
     private static final Pattern TYPE_PATTERN =
diff --git a/tests/tests/os/src/android/os/cts/BuildVersionTest.java b/tests/tests/os/src/android/os/cts/BuildVersionTest.java
index d1b88a1..1b078ac 100644
--- a/tests/tests/os/src/android/os/cts/BuildVersionTest.java
+++ b/tests/tests/os/src/android/os/cts/BuildVersionTest.java
@@ -29,8 +29,8 @@
 
     private static final String LOG_TAG = "BuildVersionTest";
     private static final Set<String> EXPECTED_RELEASES =
-            new HashSet<String>(Arrays.asList("4.3"));
-    private static final int EXPECTED_SDK = 18;
+        new HashSet<String>(Arrays.asList("4.4", "4.4.1", "4.4.2", "4.4.3", "4.4.4"));
+    private static final int EXPECTED_SDK = 19;
 
     @SuppressWarnings("deprecation")
     public void testReleaseVersion() {
diff --git a/tests/tests/os/src/android/os/cts/BundleTest.java b/tests/tests/os/src/android/os/cts/BundleTest.java
index c8582f2..7674b6b 100644
--- a/tests/tests/os/src/android/os/cts/BundleTest.java
+++ b/tests/tests/os/src/android/os/cts/BundleTest.java
@@ -72,6 +72,17 @@
         new Bundle(getClass().getClassLoader());
     }
 
+    public void testEmptyStream() {
+        Parcel p = Parcel.obtain();
+        p.unmarshall(new byte[] {}, 0, 0);
+        Bundle b = p.readBundle();
+        assertTrue(b.isEmpty());
+        mBundle.putBoolean("android", true);
+        p.unmarshall(new byte[] {}, 0, 0);
+        mBundle.readFromParcel(p);
+        assertTrue(mBundle.isEmpty());
+    }
+
     // first put sth into tested Bundle, it shouldn't be empty, then clear it and it should be empty
     public void testClear() {
         mBundle.putBoolean("android", true);
diff --git a/tests/tests/os/src/android/os/cts/FileAccessPermissionTest.java b/tests/tests/os/src/android/os/cts/FileAccessPermissionTest.java
old mode 100755
new mode 100644
diff --git a/tests/tests/os/src/android/os/cts/IParcelFileDescriptorPeer.aidl b/tests/tests/os/src/android/os/cts/IParcelFileDescriptorPeer.aidl
new file mode 100644
index 0000000..8274a73
--- /dev/null
+++ b/tests/tests/os/src/android/os/cts/IParcelFileDescriptorPeer.aidl
@@ -0,0 +1,51 @@
+/*
+ * Copyright (C) 2013 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 android.os.cts;
+
+import android.os.ParcelFileDescriptor;
+
+interface IParcelFileDescriptorPeer {
+
+    void setPeer(in IParcelFileDescriptorPeer peer);
+
+    /* Setup internal local and remote FDs */
+    void setupReadPipe();
+    void setupWritePipe();
+    void setupSocket();
+    void setupFile();
+
+    ParcelFileDescriptor get();
+    void set(in ParcelFileDescriptor pfd);
+
+    /* Ask this peer to get their remote FD from another */
+    void doGet();
+    /* Ask this peer to set their remote FD to another */
+    void doSet();
+
+    int read();
+    void write(int oneByte);
+
+    void close();
+    void closeWithError(String msg);
+    void detachFd();
+    void leak();
+    void crash();
+
+    String checkError();
+    String checkListener();
+
+}
diff --git a/tests/tests/os/src/android/os/cts/MemoryFileTest.java b/tests/tests/os/src/android/os/cts/MemoryFileTest.java
index 137f3c3..def73b2 100644
--- a/tests/tests/os/src/android/os/cts/MemoryFileTest.java
+++ b/tests/tests/os/src/android/os/cts/MemoryFileTest.java
@@ -33,13 +33,11 @@
     }
 
     public void testConstructor() throws IOException {
-        // new the MemoryFile instance
         new MemoryFile("Test File", 1024);
     }
 
     public void testWriteBytes() throws IOException {
         byte[] data = new byte[512];
-        // new the MemoryFile instance
         mMemoryFile = new MemoryFile("Test File", 1024);
 
         mMemoryFile.writeBytes(data, 0, 0, 512);
@@ -103,11 +101,14 @@
         mMemoryFile = new MemoryFile("Test File", 512);
         assertEquals(512, mMemoryFile.length());
 
-        mMemoryFile = new MemoryFile("Test File", Integer.MAX_VALUE);
-        assertEquals(Integer.MAX_VALUE, mMemoryFile.length());
+        mMemoryFile = new MemoryFile("Test File", 0);
+        assertEquals(0, mMemoryFile.length());
 
-        mMemoryFile = new MemoryFile("Test File", Integer.MIN_VALUE);
-        assertEquals(Integer.MIN_VALUE, mMemoryFile.length());
+        try {
+            mMemoryFile = new MemoryFile("Test File", -512);
+            fail();
+        } catch (IOException expected) {
+        }
     }
 
     public void testReadBytes() throws IOException {
diff --git a/tests/tests/os/src/android/os/cts/ParcelFileDescriptorPeer.java b/tests/tests/os/src/android/os/cts/ParcelFileDescriptorPeer.java
new file mode 100644
index 0000000..4417179
--- /dev/null
+++ b/tests/tests/os/src/android/os/cts/ParcelFileDescriptorPeer.java
@@ -0,0 +1,237 @@
+/*
+ * Copyright (C) 2013 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 android.os.cts;
+
+import android.app.Service;
+import android.content.Intent;
+import android.os.Handler;
+import android.os.IBinder;
+import android.os.Looper;
+import android.os.ParcelFileDescriptor;
+import android.os.Process;
+import android.os.ParcelFileDescriptor.OnCloseListener;
+import android.os.ParcelFileDescriptor.FileDescriptorDetachedException;
+import android.os.RemoteException;
+import android.os.SystemClock;
+
+import com.google.common.util.concurrent.AbstractFuture;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.util.concurrent.ExecutionException;
+import java.util.concurrent.TimeUnit;
+import java.util.concurrent.TimeoutException;
+
+/**
+ * Sits around in a remote process doing whatever the CTS test says.
+ */
+public class ParcelFileDescriptorPeer extends IParcelFileDescriptorPeer.Stub {
+    private IParcelFileDescriptorPeer mPeer;
+
+    private ParcelFileDescriptor mLocal;
+    private ParcelFileDescriptor mRemote;
+
+    private FutureCloseListener mListener;
+
+    @Override
+    public void setPeer(IParcelFileDescriptorPeer peer) throws RemoteException {
+        mPeer = peer;
+    }
+
+    @Override
+    public void setupReadPipe() throws RemoteException {
+        try {
+            ParcelFileDescriptor[] pfds = ParcelFileDescriptor.createReliablePipe();
+            mLocal = pfds[0];
+            mRemote = pfds[1];
+        } catch (IOException e) {
+            throw new RuntimeException(e);
+        }
+    }
+
+    @Override
+    public void setupWritePipe() throws RemoteException {
+        try {
+            ParcelFileDescriptor[] pfds = ParcelFileDescriptor.createReliablePipe();
+            mLocal = pfds[1];
+            mRemote = pfds[0];
+        } catch (IOException e) {
+            throw new RuntimeException(e);
+        }
+    }
+
+    @Override
+    public void setupSocket() throws RemoteException {
+        try {
+            ParcelFileDescriptor[] pfds = ParcelFileDescriptor.createReliableSocketPair();
+            mLocal = pfds[0];
+            mRemote = pfds[1];
+        } catch (IOException e) {
+            throw new RuntimeException(e);
+        }
+    }
+
+    @Override
+    public void setupFile() throws RemoteException {
+        final Handler handler = new Handler(Looper.getMainLooper());
+        mListener = new FutureCloseListener();
+        try {
+            mLocal = null;
+            mRemote = ParcelFileDescriptor.open(File.createTempFile("pfd", "tmp"),
+                    ParcelFileDescriptor.MODE_READ_WRITE, handler, mListener);
+        } catch (IOException e) {
+            throw new RuntimeException(e);
+        }
+    }
+
+    @Override
+    public ParcelFileDescriptor get() throws RemoteException {
+        return mRemote;
+    }
+
+    @Override
+    public void set(ParcelFileDescriptor pfd) throws RemoteException {
+        mLocal = pfd;
+    }
+
+    @Override
+    public void doGet() throws RemoteException {
+        mLocal = mPeer.get();
+    }
+
+    @Override
+    public void doSet() throws RemoteException {
+        mPeer.set(mRemote);
+    }
+
+    @Override
+    public int read() throws RemoteException {
+        try {
+            return new FileInputStream(mLocal.getFileDescriptor()).read();
+        } catch (IOException e) {
+            throw new RuntimeException(e);
+        }
+    }
+
+    @Override
+    public void write(int oneByte) throws RemoteException {
+        try {
+            new FileOutputStream(mLocal.getFileDescriptor()).write(oneByte);
+        } catch (IOException e) {
+            throw new RuntimeException(e);
+        }
+    }
+
+    @Override
+    public void close() throws RemoteException {
+        try {
+            mLocal.close();
+        } catch (IOException e) {
+            throw new RuntimeException(e);
+        }
+    }
+
+    @Override
+    public void closeWithError(String msg) throws RemoteException {
+        try {
+            mLocal.closeWithError(msg);
+        } catch (IOException e) {
+            throw new RuntimeException(e);
+        }
+    }
+
+    @Override
+    public void detachFd() throws RemoteException {
+        mLocal.detachFd();
+    }
+
+    @Override
+    public void leak() throws RemoteException {
+        mLocal = null;
+
+        // Try really hard to finalize
+        for (int i = 0; i < 5; i++) {
+            System.gc();
+            System.runFinalization();
+            SystemClock.sleep(100);
+        }
+    }
+
+    @Override
+    public void crash() throws RemoteException {
+        Process.killProcess(Process.myPid());
+        System.exit(42);
+    }
+
+    @Override
+    public String checkError() throws RemoteException {
+        try {
+            mLocal.checkError();
+            return null;
+        } catch (IOException e) {
+            return e.getMessage();
+        }
+    }
+
+    @Override
+    public String checkListener() throws RemoteException {
+        try {
+            return String.valueOf(mListener.get());
+        } catch (InterruptedException e1) {
+            return null;
+        } catch (ExecutionException e1) {
+            return null;
+        }
+    }
+
+    public static class FutureCloseListener extends AbstractFuture<IOException>
+            implements OnCloseListener {
+        @Override
+        public void onClose(IOException e) {
+            if (e instanceof FileDescriptorDetachedException) {
+                set(new IOException("DETACHED"));
+            } else {
+                set(e);
+            }
+        }
+
+        @Override
+        public IOException get() throws InterruptedException, ExecutionException {
+            try {
+                return get(5, TimeUnit.SECONDS);
+            } catch (TimeoutException e) {
+                throw new RuntimeException(e);
+            }
+        }
+    }
+
+    public static class Red extends Service {
+        @Override
+        public IBinder onBind(Intent intent) {
+            return new ParcelFileDescriptorPeer();
+        }
+    }
+
+    public static class Blue extends Service {
+        @Override
+        public IBinder onBind(Intent intent) {
+            return new ParcelFileDescriptorPeer();
+        }
+    }
+}
diff --git a/tests/tests/os/src/android/os/cts/ParcelFileDescriptorProcessTest.java b/tests/tests/os/src/android/os/cts/ParcelFileDescriptorProcessTest.java
new file mode 100644
index 0000000..679a35c
--- /dev/null
+++ b/tests/tests/os/src/android/os/cts/ParcelFileDescriptorProcessTest.java
@@ -0,0 +1,308 @@
+/*
+ * Copyright (C) 2013 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 android.os.cts;
+
+import android.app.ActivityManager;
+import android.content.ComponentName;
+import android.content.Context;
+import android.content.Intent;
+import android.content.ServiceConnection;
+import android.os.IBinder;
+import android.os.ParcelFileDescriptor;
+import android.os.RemoteException;
+import android.os.SystemClock;
+import android.test.AndroidTestCase;
+
+import com.google.common.util.concurrent.AbstractFuture;
+
+import junit.framework.ComparisonFailure;
+
+import java.util.concurrent.ExecutionException;
+import java.util.concurrent.TimeUnit;
+import java.util.concurrent.TimeoutException;
+
+/**
+ * Test various cross-process {@link ParcelFileDescriptor} interactions.
+ */
+public class ParcelFileDescriptorProcessTest extends AndroidTestCase {
+
+    private Intent redIntent;
+    private Intent blueIntent;
+    private PeerConnection redConn;
+    private PeerConnection blueConn;
+    private IParcelFileDescriptorPeer red;
+    private IParcelFileDescriptorPeer blue;
+
+    public static class PeerConnection extends AbstractFuture<IParcelFileDescriptorPeer>
+            implements ServiceConnection {
+        @Override
+        public void onServiceConnected(ComponentName name, IBinder service) {
+            set(IParcelFileDescriptorPeer.Stub.asInterface(service));
+        }
+
+        @Override
+        public void onServiceDisconnected(ComponentName name) {
+        }
+
+        @Override
+        public IParcelFileDescriptorPeer get() throws InterruptedException, ExecutionException {
+            try {
+                return get(5, TimeUnit.SECONDS);
+            } catch (TimeoutException e) {
+                throw new RuntimeException(e);
+            }
+        }
+    }
+
+    private static void assertContains(String expected, String actual) {
+        if (actual.contains(expected)) return;
+        throw new ComparisonFailure("", expected, actual);
+    }
+
+    private static void crash(IParcelFileDescriptorPeer peer) {
+        try {
+            peer.crash();
+        } catch (RemoteException e) {
+        }
+        SystemClock.sleep(500);
+    }
+
+    @Override
+    protected void setUp() throws Exception {
+        super.setUp();
+        final Context context = getContext();
+
+        // Bring up both remote processes and wire them to each other
+        redIntent = new Intent();
+        redIntent.setComponent(new ComponentName(
+                "com.android.cts.os", "android.os.cts.ParcelFileDescriptorPeer$Red"));
+        blueIntent = new Intent();
+        blueIntent.setComponent(new ComponentName(
+                "com.android.cts.os", "android.os.cts.ParcelFileDescriptorPeer$Blue"));
+        redConn = new PeerConnection();
+        blueConn = new PeerConnection();
+        context.startService(redIntent);
+        context.startService(blueIntent);
+        getContext().bindService(redIntent, redConn, 0);
+        getContext().bindService(blueIntent, blueConn, 0);
+        red = redConn.get();
+        blue = blueConn.get();
+        red.setPeer(blue);
+        blue.setPeer(red);
+    }
+
+    @Override
+    protected void tearDown() throws Exception {
+        super.tearDown();
+
+        final Context context = getContext();
+        context.unbindService(redConn);
+        context.unbindService(blueConn);
+        context.stopService(redIntent);
+        context.stopService(blueIntent);
+
+        final ActivityManager am = (ActivityManager) mContext.getSystemService(
+                Context.ACTIVITY_SERVICE);
+        am.killBackgroundProcesses(context.getPackageName());
+    }
+
+    public void testPullPipeNormal() throws Exception {
+        // red <-- blue
+        red.setupReadPipe();
+        blue.doGet();
+
+        blue.write(1);
+        assertEquals(1, red.read());
+
+        blue.close();
+        assertEquals(-1, red.read());
+        assertEquals(null, red.checkError());
+    }
+
+    public void testPushPipeNormal() throws Exception {
+        // red --> blue
+        red.setupWritePipe();
+        red.doSet();
+
+        red.write(2);
+        assertEquals(2, blue.read());
+
+        red.close();
+        assertEquals(-1, blue.read());
+        assertEquals(null, blue.checkError());
+    }
+
+    public void testPipeWriterError() throws Exception {
+        // red --> blue
+        red.setupWritePipe();
+        red.doSet();
+
+        red.write(3);
+        red.closeWithError("OMG MUFFINS");
+
+        // even though closed we should still drain pipe
+        assertEquals(3, blue.read());
+        assertEquals(-1, blue.read());
+        assertContains("OMG MUFFINS", blue.checkError());
+    }
+
+    public void testPipeWriterCrash() throws Exception {
+        // red --> blue
+        red.setupWritePipe();
+        blue.doGet();
+
+        red.write(4);
+        crash(red);
+
+        // even though dead we should still drain pipe
+        assertEquals(4, blue.read());
+        assertEquals(-1, blue.read());
+        assertContains("Remote side is dead", blue.checkError());
+    }
+
+    public void testSocketCrash() throws Exception {
+        // red <--> blue
+        red.setupSocket();
+        blue.doGet();
+
+        red.write(5);
+        blue.write(6);
+
+        assertEquals(5, blue.read());
+        crash(blue);
+        assertEquals(6, red.read());
+        assertEquals(-1, red.read());
+        assertContains("Remote side is dead", red.checkError());
+    }
+
+    public void testFileNormal() throws Exception {
+        red.setupFile();
+        blue.doGet();
+
+        blue.write(7);
+        blue.close();
+
+        // make sure red heard us finish
+        assertEquals("null", red.checkListener());
+    }
+
+    public void testFileError() throws Exception {
+        red.setupFile();
+        blue.doGet();
+
+        blue.write(8);
+        blue.closeWithError("OMG BANANAS");
+
+        // make sure red heard us error
+        assertContains("OMG BANANAS", red.checkListener());
+    }
+
+    public void testFileCrash() throws Exception {
+        red.setupFile();
+        blue.doGet();
+
+        blue.write(9);
+        crash(blue);
+
+        // make sure red heard us die
+        assertContains("Remote side is dead", red.checkListener());
+    }
+
+    public void testFileDetach() throws Exception {
+        red.setupFile();
+        blue.doGet();
+        blue.detachFd();
+
+        // make sure red heard us detach
+        assertContains("DETACHED", red.checkListener());
+    }
+
+    public void testFileLeak() throws Exception {
+        red.setupFile();
+        blue.doGet();
+        blue.leak();
+
+        // make sure red heard us get leaked
+        assertContains("leaked", red.checkListener());
+    }
+
+    public void testSocketErrorAfterClose() throws Exception {
+        // red <--> blue
+        red.setupSocket();
+        blue.doGet();
+
+        // both sides throw their hands in the air
+        blue.closeWithError("BLUE RAWR");
+        red.closeWithError("RED RAWR");
+
+        // red noticed the blue error, but after that the comm pipe was dead so
+        // blue had no way of seeing the red error.
+        assertContains("BLUE RAWR", red.checkError());
+        assertNull(blue.checkError());
+    }
+
+    public void testSocketDeathBeforeClose() throws Exception {
+        // red <--> blue
+        red.setupSocket();
+        blue.doGet();
+
+        crash(blue);
+        assertContains("Remote side is dead", red.checkError());
+        red.close();
+    }
+
+    public void testSocketDeathAfterClose() throws Exception {
+        // red <--> blue
+        red.setupSocket();
+        blue.doGet();
+
+        crash(blue);
+        red.close();
+        assertContains("Remote side is dead", red.checkError());
+    }
+
+    public void testSocketMultipleCheck() throws Exception {
+        // red <--> blue
+        red.setupSocket();
+        blue.doGet();
+
+        // allow checking before closed
+        assertNull(blue.checkError());
+        assertNull(blue.checkError());
+        assertNull(blue.checkError());
+
+        // and verify we actually see it
+        red.closeWithError("RAWR RED");
+        assertContains("RAWR RED", blue.checkError());
+    }
+
+    public void testSocketGiantError() throws Exception {
+        // red <--> blue
+        red.setupSocket();
+        blue.doGet();
+
+        final StringBuilder builder = new StringBuilder();
+        for (int i = 0; i < 1024; i++) {
+            builder.append(i).append(",");
+        }
+        final String msg = builder.toString();
+        red.closeWithError(msg);
+
+        // we should at least see the first 512 chars
+        assertContains(msg.substring(0, 512), blue.checkError());
+    }
+}
diff --git a/tests/tests/os/src/android/os/cts/ParcelFileDescriptorTest.java b/tests/tests/os/src/android/os/cts/ParcelFileDescriptorTest.java
index 1bbbecb..2287660 100644
--- a/tests/tests/os/src/android/os/cts/ParcelFileDescriptorTest.java
+++ b/tests/tests/os/src/android/os/cts/ParcelFileDescriptorTest.java
@@ -16,15 +16,21 @@
 
 package android.os.cts;
 
-
 import android.content.Context;
+import android.os.Handler;
+import android.os.Looper;
 import android.os.Parcel;
 import android.os.ParcelFileDescriptor;
-import android.os.Parcelable;
 import android.os.ParcelFileDescriptor.AutoCloseInputStream;
+import android.os.Parcelable;
+import android.os.cts.ParcelFileDescriptorPeer.FutureCloseListener;
 import android.test.AndroidTestCase;
 import android.test.MoreAsserts;
 
+import com.google.common.util.concurrent.AbstractFuture;
+
+import junit.framework.ComparisonFailure;
+
 import java.io.File;
 import java.io.FileDescriptor;
 import java.io.FileInputStream;
@@ -35,12 +41,11 @@
 import java.net.InetAddress;
 import java.net.ServerSocket;
 import java.net.Socket;
+import java.util.concurrent.TimeUnit;
 
 public class ParcelFileDescriptorTest extends AndroidTestCase {
     private static final long DURATION = 100l;
 
-    private TestThread mTestThread;
-
     public void testConstructorAndOpen() throws Exception {
         ParcelFileDescriptor tempFile = makeParcelFileDescriptor(getContext());
 
@@ -57,11 +62,25 @@
         }
     }
 
+    private static class DoneSignal extends AbstractFuture<Void> {
+        public boolean set() {
+            return super.set(null);
+        }
+
+        @Override
+        public boolean setException(Throwable t) {
+            return super.setException(t);
+        }
+    }
+
     public void testFromSocket() throws Throwable {
         final int PORT = 12222;
         final int DATA = 1;
 
-        mTestThread = new TestThread(new Runnable() {
+        final DoneSignal done = new DoneSignal();
+
+        final Thread t = new Thread(new Runnable() {
+            @Override
             public void run() {
                 try {
                     ServerSocket ss;
@@ -71,12 +90,13 @@
                     out.write(DATA);
                     Thread.sleep(DURATION);
                     out.close();
+                    done.set();
                 } catch (Exception e) {
-                    mTestThread.setThrowable(e);
+                    done.setException(e);
                 }
             }
         });
-        mTestThread.start();
+        t.start();
 
         Thread.sleep(DURATION);
         Socket socket;
@@ -88,7 +108,7 @@
         socket.close();
         pfd.close();
 
-        mTestThread.joinAndCheck(DURATION * 2);
+        done.get(5, TimeUnit.SECONDS);
     }
 
     public void testFromData() throws IOException {
@@ -210,6 +230,134 @@
         assertTrue((Parcelable.CONTENTS_FILE_DESCRIPTOR & pfd.describeContents()) != 0);
     }
 
+    private static void assertContains(String expected, String actual) {
+        if (actual.contains(expected)) return;
+        throw new ComparisonFailure("", expected, actual);
+    }
+
+    private static void write(ParcelFileDescriptor pfd, int oneByte)  throws IOException{
+        new FileOutputStream(pfd.getFileDescriptor()).write(oneByte);
+    }
+
+    private static int read(ParcelFileDescriptor pfd) throws IOException {
+        return new FileInputStream(pfd.getFileDescriptor()).read();
+    }
+
+    public void testPipeNormal() throws Exception {
+        final ParcelFileDescriptor[] pipe = ParcelFileDescriptor.createReliablePipe();
+        final ParcelFileDescriptor red = pipe[0];
+        final ParcelFileDescriptor blue = pipe[1];
+
+        write(blue, 1);
+        assertEquals(1, read(red));
+
+        blue.close();
+        assertEquals(-1, read(red));
+        red.checkError();
+    }
+
+    public void testPipeError() throws Exception {
+        final ParcelFileDescriptor[] pipe = ParcelFileDescriptor.createReliablePipe();
+        final ParcelFileDescriptor red = pipe[0];
+        final ParcelFileDescriptor blue = pipe[1];
+
+        write(blue, 2);
+        blue.closeWithError("OMG MUFFINS");
+
+        // even though closed we should still drain pipe
+        assertEquals(2, read(red));
+        assertEquals(-1, read(red));
+        try {
+            red.checkError();
+            fail("expected throw!");
+        } catch (IOException e) {
+            assertContains("OMG MUFFINS", e.getMessage());
+        }
+    }
+
+    public void testFileNormal() throws Exception {
+        final Handler handler = new Handler(Looper.getMainLooper());
+        final FutureCloseListener listener = new FutureCloseListener();
+        final ParcelFileDescriptor file = ParcelFileDescriptor.open(
+                File.createTempFile("pfd", "bbq"), ParcelFileDescriptor.MODE_READ_WRITE, handler,
+                listener);
+
+        write(file, 7);
+        file.close();
+
+        // make sure we were notified
+        assertEquals(null, listener.get());
+    }
+
+    public void testFileError() throws Exception {
+        final Handler handler = new Handler(Looper.getMainLooper());
+        final FutureCloseListener listener = new FutureCloseListener();
+        final ParcelFileDescriptor file = ParcelFileDescriptor.open(
+                File.createTempFile("pfd", "bbq"), ParcelFileDescriptor.MODE_READ_WRITE, handler,
+                listener);
+
+        write(file, 8);
+        file.closeWithError("OMG BANANAS");
+
+        // make sure error came through
+        assertContains("OMG BANANAS", listener.get().getMessage());
+    }
+
+    public void testFileDetach() throws Exception {
+        final Handler handler = new Handler(Looper.getMainLooper());
+        final FutureCloseListener listener = new FutureCloseListener();
+        final ParcelFileDescriptor file = ParcelFileDescriptor.open(
+                File.createTempFile("pfd", "bbq"), ParcelFileDescriptor.MODE_READ_WRITE, handler,
+                listener);
+
+        file.detachFd();
+
+        // make sure detach came through
+        assertContains("DETACHED", listener.get().getMessage());
+    }
+
+    public void testSocketErrorAfterClose() throws Exception {
+        final ParcelFileDescriptor[] pair = ParcelFileDescriptor.createReliableSocketPair();
+        final ParcelFileDescriptor red = pair[0];
+        final ParcelFileDescriptor blue = pair[1];
+
+        // both sides throw their hands in the air
+        blue.closeWithError("BLUE RAWR");
+        red.closeWithError("RED RAWR");
+
+        // red noticed the blue error, but after that the comm pipe was dead so
+        // blue had no way of seeing the red error.
+        try {
+            red.checkError();
+            fail("expected throw!");
+        } catch (IOException e) {
+            assertContains("BLUE RAWR", e.getMessage());
+        }
+
+        // expected to not throw; no error
+        blue.checkError();
+    }
+
+    public void testSocketMultipleCheck() throws Exception {
+        final ParcelFileDescriptor[] pair = ParcelFileDescriptor.createReliableSocketPair();
+        final ParcelFileDescriptor red = pair[0];
+        final ParcelFileDescriptor blue = pair[1];
+
+        // allow checking before closed; they should all pass
+        blue.checkError();
+        blue.checkError();
+        blue.checkError();
+
+        // and verify we actually see it
+        red.closeWithError("RAWR RED");
+        try {
+            blue.checkError();
+            fail("expected throw!");
+        } catch (IOException e) {
+            assertContains("RAWR RED", e.getMessage());
+        }
+    }
+
     static ParcelFileDescriptor makeParcelFileDescriptor(Context con) throws Exception {
         final String fileName = "testParcelFileDescriptor";
 
diff --git a/tests/tests/os/src/android/os/storage/cts/StorageManagerTest.java b/tests/tests/os/src/android/os/storage/cts/StorageManagerTest.java
index e23c0b7..45c5e45 100644
--- a/tests/tests/os/src/android/os/storage/cts/StorageManagerTest.java
+++ b/tests/tests/os/src/android/os/storage/cts/StorageManagerTest.java
@@ -21,6 +21,7 @@
 import android.content.Context;
 import android.content.res.Resources;
 import android.content.res.Resources.NotFoundException;
+import android.os.Environment;
 import android.os.cts.FileUtils;
 import android.os.storage.OnObbStateChangeListener;
 import android.os.storage.StorageManager;
@@ -30,6 +31,9 @@
 
 import java.io.File;
 import java.io.InputStream;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
 
 public class StorageManagerTest extends AndroidTestCase {
 
@@ -49,8 +53,14 @@
     }
 
     public void testMountAndUnmountObbNormal() {
-        final File outFile = getFilePath("test1.obb");
+        for (File target : getTargetFiles()) {
+            target = new File(target, "test1.obb");
+            Log.d(TAG, "Testing path " + target);
+            doMountAndUnmountObbNormal(target);
+        }
+    }
 
+    private void doMountAndUnmountObbNormal(File outFile) {
         final String canonPath = mountObb(R.raw.test1, outFile, OnObbStateChangeListener.MOUNTED);
 
         mountObb(R.raw.test1, outFile, OnObbStateChangeListener.ERROR_ALREADY_MOUNTED);
@@ -64,8 +74,14 @@
     }
 
     public void testAttemptMountNonObb() {
-        final File outFile = getFilePath("test1_nosig.obb");
+        for (File target : getTargetFiles()) {
+            target = new File(target, "test1_nosig.obb");
+            Log.d(TAG, "Testing path " + target);
+            doAttemptMountNonObb(target);
+        }
+    }
 
+    private void doAttemptMountNonObb(File outFile) {
         mountObb(R.raw.test1_nosig, outFile, OnObbStateChangeListener.ERROR_INTERNAL);
 
         assertFalse("OBB should not be mounted",
@@ -76,8 +92,14 @@
     }
 
     public void testAttemptMountObbWrongPackage() {
-        final File outFile = getFilePath("test1_wrongpackage.obb");
+        for (File target : getTargetFiles()) {
+            target = new File(target, "test1_wrongpackage.obb");
+            Log.d(TAG, "Testing path " + target);
+            doAttemptMountObbWrongPackage(target);
+        }
+    }
 
+    private void doAttemptMountObbWrongPackage(File outFile) {
         mountObb(R.raw.test1_wrongpackage, outFile,
                 OnObbStateChangeListener.ERROR_PERMISSION_DENIED);
 
@@ -89,9 +111,15 @@
     }
 
     public void testMountAndUnmountTwoObbs() {
-        final File file1 = getFilePath("test1.obb");
-        final File file2 = getFilePath("test2.obb");
+        for (File target : getTargetFiles()) {
+            Log.d(TAG, "Testing target " + target);
+            final File test1 = new File(target, "test1.obb");
+            final File test2 = new File(target, "test2.obb");
+            doMountAndUnmountTwoObbs(test1, test2);
+        }
+    }
 
+    private void doMountAndUnmountTwoObbs(File file1, File file2) {
         ObbObserver oo1 = mountObbWithoutWait(R.raw.test1, file1);
         ObbObserver oo2 = mountObbWithoutWait(R.raw.test1, file2);
 
@@ -166,10 +194,16 @@
         }
     }
 
-    private File getFilePath(String name) {
-        final File filesDir = mContext.getFilesDir();
-        final File outFile = new File(filesDir, name);
-        return outFile;
+    private List<File> getTargetFiles() {
+        final List<File> targets = new ArrayList<File>();
+        targets.add(mContext.getFilesDir());
+        for (File dir : mContext.getObbDirs()) {
+            assertNotNull("Valid media must be inserted during CTS", dir);
+            assertEquals("Valid media must be inserted during CTS", Environment.MEDIA_MOUNTED,
+                    Environment.getStorageState(dir));
+            targets.add(dir);
+        }
+        return targets;
     }
 
     private void copyRawToFile(int rawResId, File outFile) {
diff --git a/tests/tests/permission/src/android/permission/cts/AppWidgetManagerPermissionTest.java b/tests/tests/permission/src/android/permission/cts/AppWidgetManagerPermissionTest.java
old mode 100755
new mode 100644
diff --git a/tests/tests/permission/src/android/permission/cts/ContactsProviderTest.java b/tests/tests/permission/src/android/permission/cts/ContactsProviderTest.java
index b487693..51e54df 100644
--- a/tests/tests/permission/src/android/permission/cts/ContactsProviderTest.java
+++ b/tests/tests/permission/src/android/permission/cts/ContactsProviderTest.java
@@ -19,6 +19,7 @@
 import android.os.RemoteException;
 import android.content.ContentProviderClient;
 import android.content.ContentResolver;
+import android.content.ContentValues;
 import android.database.Cursor;
 import android.provider.Contacts;
 import android.provider.ContactsContract;
@@ -29,15 +30,6 @@
  * Verify permissions are enforced.
  */
 public class ContactsProviderTest extends AndroidTestCase {
-    private ContentProviderClient mProvider;
-
-    @Override
-    protected void setUp() throws Exception {
-        super.setUp();
-        mProvider = getContext()
-                .getContentResolver().acquireContentProviderClient(Contacts.AUTHORITY);
-        assertNotNull(mProvider);
-    }
 
     /**
      * Verifies that query(ContactsContract.Contacts.CONTENT_URI) requires
@@ -48,13 +40,30 @@
     @SmallTest
     public void testQueryContacts() {
         try {
-            mProvider.query(ContactsContract.Contacts.CONTENT_URI,
+            getContext().getContentResolver().query(ContactsContract.Contacts.CONTENT_URI,
                     null, null, null, null);
-            fail("query(ContactsContract.Contacts.CONTENT_URI) did not throw SecurityException as expected");
+            fail("query(ContactsContract.Contacts.CONTENT_URI) did not throw SecurityException"
+                    + " as expected");
         } catch (SecurityException se) {
             // Expected Exception
-        } catch (RemoteException e) {
-            fail("testQueryContacts throws unexpected exception");
+        }
+    }
+
+    /**
+     * Verifies that insert(ContactsContract.Contacts.CONTENT_URI) requires
+     * Permission.
+     * <p>
+     * Requires Permission: {@link android.Manifest.permission#WRITE_CONTACTS}.
+     */
+    @SmallTest
+    public void testInsertContacts() {
+        try {
+            getContext().getContentResolver().insert(ContactsContract.Contacts.CONTENT_URI,
+                    new ContentValues());
+            fail("insert(ContactsContract.Contacts.CONTENT_URI) did not throw SecurityException"
+                    + " as expected");
+        } catch (SecurityException se) {
+            // Expected Exception
         }
     }
 
@@ -67,13 +76,50 @@
     @SmallTest
     public void testQueryProfile() {
         try {
-            Cursor cursor = mProvider.query(ContactsContract.Profile.CONTENT_URI,
+            getContext().getContentResolver().query(ContactsContract.Profile.CONTENT_URI,
                     null, null, null, null);
-            fail("query(ContactsContract.Profile.CONTENT_URI) did not throw SecurityException as expected");
+            fail("query(ContactsContract.Profile.CONTENT_URI) did not throw SecurityException"
+                    + " as expected");
         } catch (SecurityException se) {
             // Expected Exception
-        } catch (RemoteException e) {
-            fail("testQueryProfile throws unexpected exception");
+        }
+    }
+
+    /**
+     * Verifies that insert(ContactsContract.Profile.CONTENT_URI) requires
+     * Permission. The provider doesn't actually let you do this even if you have the
+     * permission, but trying to do it without the permission should throw a
+     * SecurityException anyway.
+     * <p>
+     * Requires Permission: {@link android.Manifest.permission#WRITE_PROFILE}.
+     */
+    @SmallTest
+    public void testInsertProfile() {
+        try {
+            getContext().getContentResolver().insert(ContactsContract.Profile.CONTENT_URI,
+                    new ContentValues(0));
+            fail("insert(ContactsContract.Profile.CONTENT_URI) did not throw SecurityException "
+                    + "as expected");
+        } catch (SecurityException se) {
+            // Expected Exception
+        }
+    }
+
+    /**
+     * Verifies that update(ContactsContract.Profile.CONTENT_URI) requires
+     * Permission.
+     * <p>
+     * Requires Permission: {@link android.Manifest.permission#WRITE_PROFILE}.
+     */
+    @SmallTest
+    public void testUpdateProfile() {
+        try {
+            getContext().getContentResolver().update(ContactsContract.Profile.CONTENT_URI,
+                    new ContentValues(0), null, null);
+            fail("update(ContactsContract.Profile.CONTENT_URI) did not throw SecurityException"
+                    + " as expected");
+        } catch (SecurityException se) {
+            // Expected Exception
         }
     }
 }
diff --git a/tests/tests/permission/src/android/permission/cts/FileSystemPermissionTest.java b/tests/tests/permission/src/android/permission/cts/FileSystemPermissionTest.java
index d325b4b..3a5849f 100644
--- a/tests/tests/permission/src/android/permission/cts/FileSystemPermissionTest.java
+++ b/tests/tests/permission/src/android/permission/cts/FileSystemPermissionTest.java
@@ -27,9 +27,17 @@
 import java.io.File;
 import java.io.FileFilter;
 import java.io.FileInputStream;
+import java.io.FileNotFoundException;
 import java.io.FileOutputStream;
 import java.io.FileReader;
 import java.io.IOException;
+import java.util.concurrent.Callable;
+import java.util.concurrent.ExecutionException;
+import java.util.concurrent.Executors;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Future;
+import java.util.concurrent.TimeoutException;
+import java.util.concurrent.TimeUnit;
 import java.util.Arrays;
 import java.util.HashMap;
 import java.util.HashSet;
@@ -532,11 +540,12 @@
 
     @LargeTest
     public void testReadingSysFilesDoesntFail() throws Exception {
-        // TODO: fix b/8148087
-        // tryToReadFromAllIn(new File("/sys"));
+        ExecutorService executor = Executors.newCachedThreadPool();
+        tryToReadFromAllIn(new File("/sys"), executor);
+        executor.shutdownNow();
     }
 
-    private static void tryToReadFromAllIn(File dir) throws IOException {
+    private static void tryToReadFromAllIn(File dir, ExecutorService executor) throws IOException {
         assertTrue(dir.isDirectory());
 
         if (isSymbolicLink(dir)) {
@@ -549,26 +558,63 @@
         if (files != null) {
             for (File f : files) {
                 if (f.isDirectory()) {
-                    tryToReadFromAllIn(f);
+                    tryToReadFromAllIn(f, executor);
                 } else {
-                    tryFileRead(f);
+                    tryFileOpenRead(f, executor);
                 }
             }
         }
     }
 
-    private static void tryFileRead(File f) {
+    private static void tryFileOpenRead(final File f, ExecutorService executor) throws IOException {
+        // Callable requires stack variables to be final.
+        Callable<Boolean> readFile = new Callable<Boolean>() {
+            @Override
+            public Boolean call() throws Exception {
+                return tryFileRead(f);
+            }
+        };
+
+        Boolean completed = false;
+        String fileName = null;
+        Future<Boolean> future = null;
+        try {
+            fileName = f.getCanonicalPath();
+
+            future = executor.submit(readFile);
+
+            // Block, waiting no more than set seconds.
+            completed = future.get(3, TimeUnit.SECONDS);
+        } catch (TimeoutException e) {
+            System.out.println("TIMEOUT: " + fileName);
+        } catch (InterruptedException e) {
+            System.out.println("INTERRUPTED: " + fileName);
+        } catch (ExecutionException e) {
+            System.out.println("TASK WAS ABORTED BY EXCEPTION: " + fileName);
+        } catch (IOException e) {
+            // File.getCanonicalPath() will throw this.
+        } finally {
+            if (future != null) {
+                future.cancel(true);
+            }
+        }
+    }
+
+    private static Boolean tryFileRead(File f) {
         byte[] b = new byte[1024];
         try {
             System.out.println("looking at " + f.getCanonicalPath());
+
             FileInputStream fis = new FileInputStream(f);
-            while(fis.read(b) != -1) {
+            while((fis.available() != 0) && (fis.read(b) != -1)) {
                 // throw away data
             }
+
             fis.close();
         } catch (IOException e) {
             // ignore
         }
+        return true;
     }
 
     private static final Set<File> SYS_EXCEPTIONS = new HashSet<File>(
diff --git a/tests/tests/permission/src/android/permission/cts/NoCaptureVideoPermissionTest.java b/tests/tests/permission/src/android/permission/cts/NoCaptureVideoPermissionTest.java
new file mode 100644
index 0000000..6ad0483
--- /dev/null
+++ b/tests/tests/permission/src/android/permission/cts/NoCaptureVideoPermissionTest.java
@@ -0,0 +1,105 @@
+/*
+ * Copyright (C) 2013 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 android.permission.cts;
+
+import android.content.Context;
+import android.graphics.PixelFormat;
+import android.hardware.display.DisplayManager;
+import android.hardware.display.VirtualDisplay;
+import android.media.ImageReader;
+import android.test.AndroidTestCase;
+import android.test.suitebuilder.annotation.SmallTest;
+import android.util.DisplayMetrics;
+
+/**
+ * Verify the capture system video output permission requirements.
+ */
+public class NoCaptureVideoPermissionTest extends AndroidTestCase {
+    private static final String NAME = "VirtualDisplayTest";
+    private static final int WIDTH = 720;
+    private static final int HEIGHT = 480;
+    private static final int DENSITY = DisplayMetrics.DENSITY_MEDIUM;
+
+    /**
+     * Verify that DisplayManager.createVirtualDisplay() requires permissions to
+     * create public displays.
+     * <p>Requires Permission:
+     *   {@link android.Manifest.permission#CAPTURE_VIDEO_OUTPUT} or
+     *   {@link android.Manifest.permission#CAPTURE_SECURE_VIDEO_OUTPUT}.
+     */
+    @SmallTest
+    public void testCreatePublicVirtualDisplay() {
+        DisplayManager displayManager =
+                (DisplayManager)mContext.getSystemService(Context.DISPLAY_SERVICE);
+        ImageReader reader = ImageReader.newInstance(WIDTH, HEIGHT, PixelFormat.RGBX_8888, 1);
+        try {
+            displayManager.createVirtualDisplay(NAME, WIDTH, HEIGHT, DENSITY,
+                    reader.getSurface(), DisplayManager.VIRTUAL_DISPLAY_FLAG_PUBLIC);
+            fail("DisplayManager.createVirtualDisplay() didn't throw SecurityException "
+                    + "as expected when creating public virtual display.");
+        } catch (SecurityException e) {
+            // expected
+        } finally {
+            reader.close();
+        }
+    }
+
+    /**
+     * Verify that DisplayManager.createVirtualDisplay() requires permissions to
+     * create secure displays.
+     * <p>Requires Permission:
+     *   {@link android.Manifest.permission#CAPTURE_SECURE_VIDEO_OUTPUT}.
+     */
+    @SmallTest
+    public void testCreateSecureVirtualDisplay() {
+        DisplayManager displayManager =
+                (DisplayManager)mContext.getSystemService(Context.DISPLAY_SERVICE);
+        ImageReader reader = ImageReader.newInstance(WIDTH, HEIGHT, PixelFormat.RGBX_8888, 1);
+        try {
+            displayManager.createVirtualDisplay(NAME, WIDTH, HEIGHT, DENSITY,
+                    reader.getSurface(), DisplayManager.VIRTUAL_DISPLAY_FLAG_SECURE);
+            fail("DisplayManager.createVirtualDisplay() didn't throw SecurityException "
+                    + "as expected when creating secure virtual display.");
+        } catch (SecurityException e) {
+            // expected
+        } finally {
+            reader.close();
+        }
+    }
+
+    /**
+     * Verify that DisplayManager.createVirtualDisplay() does not requires permissions to
+     * create private displays.
+     */
+    @SmallTest
+    public void testCreatePrivateVirtualDisplay() {
+        DisplayManager displayManager =
+                (DisplayManager)mContext.getSystemService(Context.DISPLAY_SERVICE);
+        ImageReader reader = ImageReader.newInstance(WIDTH, HEIGHT, PixelFormat.RGBX_8888, 1);
+        try {
+            VirtualDisplay display = displayManager.createVirtualDisplay(
+                    NAME, WIDTH, HEIGHT, DENSITY,
+                    reader.getSurface(), 0);
+            display.release();
+        } catch (SecurityException e) {
+            fail("DisplayManager.createVirtualDisplay() should not throw SecurityException "
+                    + "when creating private virtual display.");
+        } finally {
+            reader.close();
+        }
+    }
+}
diff --git a/tests/tests/permission/src/android/permission/cts/PackageManagerRequiringPermissionsTest.java b/tests/tests/permission/src/android/permission/cts/PackageManagerRequiringPermissionsTest.java
index da7680a..2bfef62 100644
--- a/tests/tests/permission/src/android/permission/cts/PackageManagerRequiringPermissionsTest.java
+++ b/tests/tests/permission/src/android/permission/cts/PackageManagerRequiringPermissionsTest.java
@@ -16,6 +16,8 @@
 
 package android.permission.cts;
 
+import android.content.Intent;
+import android.content.IntentFilter;
 import android.content.pm.PackageManager;
 import android.test.AndroidTestCase;
 import android.test.suitebuilder.annotation.SmallTest;
@@ -61,7 +63,9 @@
      */
     public void testAddPreferredActivity() {
         try {
-            mPackageManager.addPreferredActivity(null, 0, null, null);
+            IntentFilter filter = new IntentFilter(Intent.ACTION_MAIN);
+            filter.addCategory(Intent.CATEGORY_HOME);
+            mPackageManager.addPreferredActivity(filter, 0, null, null);
             fail("PackageManager.addPreferredActivity did not throw" +
                     " SecurityException as expected");
         } catch (SecurityException e) {
diff --git a/tests/tests/permission2/AndroidManifest.xml b/tests/tests/permission2/AndroidManifest.xml
index 8cc7737..1c1a0d8 100755
--- a/tests/tests/permission2/AndroidManifest.xml
+++ b/tests/tests/permission2/AndroidManifest.xml
@@ -42,6 +42,20 @@
 
     <uses-permission android:name="android.permission.WRITE_CONTACTS"/>
 
+    <!-- need app that has RECORD_AUDIO but not CAPTURE_AUDIO_OUTPUT -->
+    <uses-permission android:name="android.permission.RECORD_AUDIO"/>
+
+    <!-- need a permission that would ordinarily be granted, but has a maxSdkVersion that
+         causes it to be withheld under the current API level -->
+    <uses-permission
+            android:name="android.permission.VIBRATE"
+            android:maxSdkVersion="18" />
+
+    <!-- need a permission that will be granted -->
+    <uses-permission
+            android:name="android.permission.FLASHLIGHT"
+            android:maxSdkVersion="9000" />
+
     <instrumentation android:name="android.test.InstrumentationCtsTestRunner"
                      android:targetPackage="com.android.cts.permission2"
                      android:label="More CTS tests for permissions"/>
diff --git a/tests/tests/permission2/src/android/permission2/cts/NoCaptureAudioOutputPermissionTest.java b/tests/tests/permission2/src/android/permission2/cts/NoCaptureAudioOutputPermissionTest.java
new file mode 100644
index 0000000..bb63792
--- /dev/null
+++ b/tests/tests/permission2/src/android/permission2/cts/NoCaptureAudioOutputPermissionTest.java
@@ -0,0 +1,69 @@
+/*
+ * Copyright (C) 2013 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 android.permission2.cts;
+
+import android.content.pm.PackageManager;
+import android.media.AudioFormat;
+import android.media.AudioRecord;
+import android.media.MediaRecorder.AudioSource;
+import android.test.AndroidTestCase;
+import android.test.suitebuilder.annotation.SmallTest;
+
+/**
+ * Verify the capture system video output permission requirements.
+ */
+public class NoCaptureAudioOutputPermissionTest extends AndroidTestCase {
+    /**
+     * Verify that the AudioRecord constructor fails to create a recording object
+     * when the app does not have permission to capture audio output.
+     * For the purposes of this test, the app must already have the normal audio
+     * record permission, just not the capture audio output permission.
+     * <p>Requires permission:
+     *    {@link android.Manifest.permission#RECORD_AUDIO} and
+     *    {@link android.Manifest.permission#CAPTURE_VIDEO_OUTPUT}.
+     */
+    @SmallTest
+    public void testCreateAudioRecord() {
+        int bufferSize = AudioRecord.getMinBufferSize(44100,
+                AudioFormat.CHANNEL_IN_STEREO, AudioFormat.ENCODING_PCM_16BIT);
+
+        if (bufferSize <= 0)
+        {
+            // getMinBufferSize() returns an invalid buffer size.
+            // That could be because there is no microphone.  In that case,
+            // use this buffer size to test AudioRecord creation.
+            PackageManager packageManager = mContext.getPackageManager();
+            if (!packageManager.hasSystemFeature(PackageManager.FEATURE_MICROPHONE)) {
+                bufferSize = 44100;
+            }
+        }
+
+        // The attempt to create the AudioRecord object succeeds even if the
+        // app does not have permission, but the object is not usable.
+        // The API should probably throw SecurityException but it was not originally
+        // designed to do that and it's not clear we can change it now.
+        AudioRecord record = new AudioRecord(AudioSource.REMOTE_SUBMIX, 44100,
+                AudioFormat.CHANNEL_IN_STEREO, AudioFormat.ENCODING_PCM_16BIT, bufferSize);
+        try {
+            assertTrue("AudioRecord state should not be INITIALIZED because the application"
+                    + "does not have permission to access the remote submix source",
+                    record.getState() != AudioRecord.STATE_INITIALIZED);
+        } finally {
+            record.release();
+        }
+    }
+}
diff --git a/tests/tests/permission2/src/android/permission2/cts/NoProcessOutgoingCallPermissionTest.java b/tests/tests/permission2/src/android/permission2/cts/NoProcessOutgoingCallPermissionTest.java
old mode 100755
new mode 100644
diff --git a/tests/tests/permission2/src/android/permission2/cts/NoReceiveSmsPermissionTest.java b/tests/tests/permission2/src/android/permission2/cts/NoReceiveSmsPermissionTest.java
old mode 100755
new mode 100644
diff --git a/tests/tests/permission2/src/android/permission2/cts/NoWriteSecureSettingsPermissionTest.java b/tests/tests/permission2/src/android/permission2/cts/NoWriteSecureSettingsPermissionTest.java
old mode 100755
new mode 100644
diff --git a/tests/tests/permission2/src/android/permission2/cts/PermissionMaxSdkVersionTest.java b/tests/tests/permission2/src/android/permission2/cts/PermissionMaxSdkVersionTest.java
new file mode 100644
index 0000000..e6026e4
--- /dev/null
+++ b/tests/tests/permission2/src/android/permission2/cts/PermissionMaxSdkVersionTest.java
@@ -0,0 +1,58 @@
+/*
+ * Copyright (C) 2013 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 android.permission.cts;
+
+import android.content.pm.PackageManager;
+import android.os.Process;
+import android.test.AndroidTestCase;
+import android.test.suitebuilder.annotation.SmallTest;
+
+/**
+ * Verify permission behaviors with android:maxSdkVersion
+ */
+public class PermissionMaxSdkVersionTest extends AndroidTestCase {
+    // These two permission names must match the corresponding <uses-permission>
+    // declarations in the test app manifest.
+    static final String UNGRANTABLE_PERMISSION = "android.permission.VIBRATE";
+    static final String GRANTABLE_PERMISSION = "android.permission.FLASHLIGHT";
+
+    /**
+     * Verify that with android:maxSdkVersion set to a previous API level,
+     * the permission is not being granted.
+     */
+    @SmallTest
+    public void testMaxSdkInPast() {
+        int result = mContext.checkPermission(UNGRANTABLE_PERMISSION,
+                Process.myPid(), Process.myUid());
+        assertEquals("Permissions with maxSdkVersion in the past should not be granted",
+                result,
+                PackageManager.PERMISSION_DENIED);
+    }
+
+    /**
+     * Verify that with android:maxSdkVersion set to a future API level,
+     * the permission is being granted.
+     */
+    @SmallTest
+    public void testMaxSdkInFuture() {
+        int result = mContext.checkPermission(GRANTABLE_PERMISSION,
+                Process.myPid(), Process.myUid());
+        assertEquals("Permissions with maxSdkVersion in the future should be granted",
+                result,
+                PackageManager.PERMISSION_GRANTED);
+    }
+}
diff --git a/tests/tests/permission2/src/android/permission2/cts/ProtectedBroadcastsTest.java b/tests/tests/permission2/src/android/permission2/cts/ProtectedBroadcastsTest.java
old mode 100755
new mode 100644
diff --git a/tests/tests/preference2/src/android/preference2/cts/CheckBoxPreferenceTest.java b/tests/tests/preference2/src/android/preference2/cts/CheckBoxPreferenceTest.java
old mode 100755
new mode 100644
diff --git a/tests/tests/preference2/src/android/preference2/cts/CustomCheckBoxPreference.java b/tests/tests/preference2/src/android/preference2/cts/CustomCheckBoxPreference.java
old mode 100755
new mode 100644
diff --git a/tests/tests/preference2/src/android/preference2/cts/CustomCheckBoxPreferenceTest.java b/tests/tests/preference2/src/android/preference2/cts/CustomCheckBoxPreferenceTest.java
old mode 100755
new mode 100644
diff --git a/tests/tests/preference2/src/android/preference2/cts/CustomDialogPreference.java b/tests/tests/preference2/src/android/preference2/cts/CustomDialogPreference.java
old mode 100755
new mode 100644
diff --git a/tests/tests/preference2/src/android/preference2/cts/CustomDialogPreferenceTest.java b/tests/tests/preference2/src/android/preference2/cts/CustomDialogPreferenceTest.java
old mode 100755
new mode 100644
diff --git a/tests/tests/preference2/src/android/preference2/cts/CustomEditTextPreference.java b/tests/tests/preference2/src/android/preference2/cts/CustomEditTextPreference.java
old mode 100755
new mode 100644
diff --git a/tests/tests/preference2/src/android/preference2/cts/CustomEditTextPreferenceTest.java b/tests/tests/preference2/src/android/preference2/cts/CustomEditTextPreferenceTest.java
old mode 100755
new mode 100644
diff --git a/tests/tests/preference2/src/android/preference2/cts/CustomSwitchPreference.java b/tests/tests/preference2/src/android/preference2/cts/CustomSwitchPreference.java
old mode 100755
new mode 100644
diff --git a/tests/tests/preference2/src/android/preference2/cts/CustomSwitchPreferenceTest.java b/tests/tests/preference2/src/android/preference2/cts/CustomSwitchPreferenceTest.java
old mode 100755
new mode 100644
diff --git a/tests/tests/preference2/src/android/preference2/cts/DialogPreferenceTest.java b/tests/tests/preference2/src/android/preference2/cts/DialogPreferenceTest.java
old mode 100755
new mode 100644
diff --git a/tests/tests/preference2/src/android/preference2/cts/EditTextPreferenceTest.java b/tests/tests/preference2/src/android/preference2/cts/EditTextPreferenceTest.java
old mode 100755
new mode 100644
diff --git a/tests/tests/preference2/src/android/preference2/cts/ListPreferenceTest.java b/tests/tests/preference2/src/android/preference2/cts/ListPreferenceTest.java
old mode 100755
new mode 100644
diff --git a/tests/tests/preference2/src/android/preference2/cts/PreferenceCategoryTest.java b/tests/tests/preference2/src/android/preference2/cts/PreferenceCategoryTest.java
old mode 100755
new mode 100644
diff --git a/tests/tests/preference2/src/android/preference2/cts/PreferenceFragmentActivity.java b/tests/tests/preference2/src/android/preference2/cts/PreferenceFragmentActivity.java
old mode 100755
new mode 100644
diff --git a/tests/tests/preference2/src/android/preference2/cts/PreferenceFragmentTest.java b/tests/tests/preference2/src/android/preference2/cts/PreferenceFragmentTest.java
old mode 100755
new mode 100644
diff --git a/tests/tests/preference2/src/android/preference2/cts/PreferenceFromCodeActivity.java b/tests/tests/preference2/src/android/preference2/cts/PreferenceFromCodeActivity.java
old mode 100755
new mode 100644
diff --git a/tests/tests/preference2/src/android/preference2/cts/PreferenceTest.java b/tests/tests/preference2/src/android/preference2/cts/PreferenceTest.java
old mode 100755
new mode 100644
diff --git a/tests/tests/preference2/src/android/preference2/cts/PreferenceWithHeaders.java b/tests/tests/preference2/src/android/preference2/cts/PreferenceWithHeaders.java
old mode 100755
new mode 100644
index 1059700..1bb5637
--- a/tests/tests/preference2/src/android/preference2/cts/PreferenceWithHeaders.java
+++ b/tests/tests/preference2/src/android/preference2/cts/PreferenceWithHeaders.java
@@ -40,6 +40,14 @@
         }
     }
 
+    /*
+     * Validate the fragment loaded into this activity. Required for apps built for API 19 and
+     * above.
+     */
+    protected boolean isValidFragment(String fragment) {
+        return PrefsOneFragment.class.getName().equals(fragment);
+    }
+
     /**
      * Populate the activity with the top-level headers.
      */
diff --git a/tests/tests/preference2/src/android/preference2/cts/PreferenceWithHeadersTest.java b/tests/tests/preference2/src/android/preference2/cts/PreferenceWithHeadersTest.java
old mode 100755
new mode 100644
diff --git a/tests/tests/preference2/src/android/preference2/cts/PreferencesFromXml.java b/tests/tests/preference2/src/android/preference2/cts/PreferencesFromXml.java
old mode 100755
new mode 100644
diff --git a/tests/tests/preference2/src/android/preference2/cts/SwitchPreferenceTest.java b/tests/tests/preference2/src/android/preference2/cts/SwitchPreferenceTest.java
old mode 100755
new mode 100644
diff --git a/tests/tests/provider/Android.mk b/tests/tests/provider/Android.mk
index edc078d..4c5875b 100644
--- a/tests/tests/provider/Android.mk
+++ b/tests/tests/provider/Android.mk
@@ -21,7 +21,7 @@
 # and when built explicitly put it in the data partition
 LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
 
-LOCAL_JAVA_LIBRARIES := android.test.runner
+LOCAL_JAVA_LIBRARIES := android.test.runner telephony-common
 
 LOCAL_STATIC_JAVA_LIBRARIES := ctstestrunner
 
diff --git a/tests/tests/provider/src/android/provider/cts/ContactsContractIntentsTest.java b/tests/tests/provider/src/android/provider/cts/ContactsContractIntentsTest.java
new file mode 100644
index 0000000..cecd973
--- /dev/null
+++ b/tests/tests/provider/src/android/provider/cts/ContactsContractIntentsTest.java
@@ -0,0 +1,56 @@
+/*
+ * Copyright (C) 2013 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 android.provider.cts;
+
+import android.content.Intent;
+import android.content.pm.ResolveInfo;
+import android.provider.ContactsContract;
+import android.test.AndroidTestCase;
+
+import java.util.List;
+
+/**
+ * Tests to verify that common actions on {@link ContactsContract} content are
+ * available.
+ */
+public class ContactsContractIntentsTest extends AndroidTestCase {
+    public void assertCanBeHandled(Intent intent) {
+        List<ResolveInfo> resolveInfoList = getContext()
+                .getPackageManager().queryIntentActivities(intent, 0);
+        assertNotNull("Missing ResolveInfo", resolveInfoList);
+        assertTrue("No ResolveInfo found for " + intent.toInsecureString(),
+                resolveInfoList.size() > 0);
+    }
+
+    public void testViewContactDir() {
+        Intent intent = new Intent(Intent.ACTION_VIEW);
+        intent.setData(ContactsContract.Contacts.CONTENT_URI);
+        assertCanBeHandled(intent);
+    }
+
+    public void testPickContactDir() {
+        Intent intent = new Intent(Intent.ACTION_PICK);
+        intent.setData(ContactsContract.Contacts.CONTENT_URI);
+        assertCanBeHandled(intent);
+    }
+
+    public void testGetContentContactDir() {
+        Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
+        intent.setData(ContactsContract.Contacts.CONTENT_URI);
+        assertCanBeHandled(intent);
+    }
+}
diff --git a/tests/tests/provider/src/android/provider/cts/MediaStoreIntentsTest.java b/tests/tests/provider/src/android/provider/cts/MediaStoreIntentsTest.java
new file mode 100644
index 0000000..a94e7f4
--- /dev/null
+++ b/tests/tests/provider/src/android/provider/cts/MediaStoreIntentsTest.java
@@ -0,0 +1,122 @@
+/*
+ * Copyright (C) 2013 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 android.provider.cts;
+
+import android.content.Intent;
+import android.content.pm.ResolveInfo;
+import android.net.Uri;
+import android.provider.MediaStore;
+import android.test.AndroidTestCase;
+
+import java.util.List;
+
+/**
+ * Tests to verify that common actions on {@link MediaStore} content are
+ * available.
+ */
+public class MediaStoreIntentsTest extends AndroidTestCase {
+    public void assertCanBeHandled(Intent intent) {
+        List<ResolveInfo> resolveInfoList = getContext()
+                .getPackageManager().queryIntentActivities(intent, 0);
+        assertNotNull("Missing ResolveInfo", resolveInfoList);
+        assertTrue("No ResolveInfo found for " + intent.toInsecureString(),
+                resolveInfoList.size() > 0);
+    }
+
+    public void testPickImageDir() {
+        Intent intent = new Intent(Intent.ACTION_PICK);
+        intent.setData(MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
+        assertCanBeHandled(intent);
+    }
+
+    public void testPickVideoDir() {
+        Intent intent = new Intent(Intent.ACTION_PICK);
+        intent.setData(MediaStore.Video.Media.EXTERNAL_CONTENT_URI);
+        assertCanBeHandled(intent);
+    }
+
+    public void testPickAudioDir() {
+        Intent intent = new Intent(Intent.ACTION_PICK);
+        intent.setData(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI);
+        assertCanBeHandled(intent);
+    }
+
+    public void testViewImageDir() {
+        Intent intent = new Intent(Intent.ACTION_VIEW);
+        intent.setData(MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
+        assertCanBeHandled(intent);
+    }
+
+    public void testViewVideoDir() {
+        Intent intent = new Intent(Intent.ACTION_VIEW);
+        intent.setData(MediaStore.Video.Media.EXTERNAL_CONTENT_URI);
+        assertCanBeHandled(intent);
+    }
+
+    public void testViewImageFile() {
+        final String[] schemes = new String[] {
+                "file", "http", "https", "content" };
+        final String[] mimes = new String[] {
+                "image/bmp", "image/jpeg", "image/png", "image/gif", "image/webp" };
+
+        for (String scheme : schemes) {
+            for (String mime : mimes) {
+                Intent intent = new Intent(Intent.ACTION_VIEW);
+                final Uri uri = new Uri.Builder().scheme(scheme)
+                        .authority("example.com").path("image").build();
+                intent.setDataAndType(uri, mime);
+                assertCanBeHandled(intent);
+            }
+        }
+    }
+
+    public void testViewVideoFile() {
+        final String[] schemes = new String[] {
+                "file", "http", "https", "content" };
+        final String[] mimes = new String[] {
+                "video/mpeg4", "video/mp4", "video/3gp", "video/3gpp", "video/3gpp2",
+                "video/webm" };
+
+        for (String scheme : schemes) {
+            for (String mime : mimes) {
+                Intent intent = new Intent(Intent.ACTION_VIEW);
+                final Uri uri = new Uri.Builder().scheme(scheme)
+                        .authority("example.com").path("video").build();
+                intent.setDataAndType(uri, mime);
+                assertCanBeHandled(intent);
+            }
+        }
+    }
+
+    public void testViewAudioFile() {
+        final String[] schemes = new String[] {
+                "file", "http", "content" };
+        final String[] mimes = new String[] {
+                "audio/mpeg", "audio/mp4", "audio/ogg", "audio/webm", "application/ogg",
+                "application/x-ogg" };
+
+        for (String scheme : schemes) {
+            for (String mime : mimes) {
+                Intent intent = new Intent(Intent.ACTION_VIEW);
+                final Uri uri = new Uri.Builder().scheme(scheme)
+                        .authority("example.com").path("audio").build();
+                intent.setDataAndType(uri, mime);
+                assertCanBeHandled(intent);
+            }
+        }
+    }
+}
diff --git a/tests/tests/provider/src/android/provider/cts/MediaStore_FilesTest.java b/tests/tests/provider/src/android/provider/cts/MediaStore_FilesTest.java
index 70d6f58..a362df3 100644
--- a/tests/tests/provider/src/android/provider/cts/MediaStore_FilesTest.java
+++ b/tests/tests/provider/src/android/provider/cts/MediaStore_FilesTest.java
@@ -162,7 +162,7 @@
         ContentValues values = new ContentValues();
         values.put(MediaStore.Images.Media.DISPLAY_NAME, "My Bitmap");
         values.put(MediaStore.Images.Media.MIME_TYPE, "image/jpeg");
-        values.put(MediaStore.Images.Media.DATA, "/mnt/sdcard/dummy.jpg");
+        values.put(MediaStore.Images.Media.DATA, "/foo/bar/dummy.jpg");
         Uri uri = mResolver.insert(MediaStore.Images.Media.INTERNAL_CONTENT_URI, values);
 
         // point _data at directory and try to get an fd for it
@@ -253,7 +253,8 @@
             try {
                 pfd = mResolver.openFileDescriptor(uri, "r");
 
-                // get the real path from the file descriptor
+                // get the real path from the file descriptor (this relies on the media provider
+                // having opened the path via the real path instead of the emulated path).
                 File real = new File("/proc/self/fd/" + pfd.getFd());
                 values = new ContentValues();
                 values.put("_data", real.getCanonicalPath());
@@ -276,7 +277,7 @@
         // clean up
         assertEquals(1, mResolver.delete(uri, null, null));
         if (sdfile != null) {
-            sdfile.delete();
+            assertEquals(true, sdfile.delete());
         }
     }
 
diff --git a/tests/tests/provider/src/android/provider/cts/MediaStore_Images_MediaTest.java b/tests/tests/provider/src/android/provider/cts/MediaStore_Images_MediaTest.java
index e68286f..3f28a34 100644
--- a/tests/tests/provider/src/android/provider/cts/MediaStore_Images_MediaTest.java
+++ b/tests/tests/provider/src/android/provider/cts/MediaStore_Images_MediaTest.java
@@ -78,6 +78,13 @@
 
         mHelper = new FileCopyHelper(mContext);
         mRowsAdded = new ArrayList<Uri>();
+
+        String campath = Environment.getExternalStorageDirectory() + File.separator +
+                Environment.DIRECTORY_DCIM + File.separator + "Camera";
+        File camfile = new File(campath);
+        if (!camfile.exists()) {
+            assertTrue("failed to create " + campath, camfile.mkdir());
+        }
     }
 
     public void testInsertImageWithImagePath() throws Exception {
diff --git a/tests/tests/provider/src/android/provider/cts/MediaStore_Images_ThumbnailsTest.java b/tests/tests/provider/src/android/provider/cts/MediaStore_Images_ThumbnailsTest.java
index b76108b..322f5d5 100644
--- a/tests/tests/provider/src/android/provider/cts/MediaStore_Images_ThumbnailsTest.java
+++ b/tests/tests/provider/src/android/provider/cts/MediaStore_Images_ThumbnailsTest.java
@@ -69,6 +69,13 @@
 
         mHelper = new FileCopyHelper(mContext);
         mRowsAdded = new ArrayList<Uri>();
+
+        String campath = Environment.getExternalStorageDirectory() + File.separator +
+                Environment.DIRECTORY_DCIM + File.separator + "Camera";
+        File camfile = new File(campath);
+        if (!camfile.exists()) {
+            assertTrue("failed to create " + campath, camfile.mkdir());
+        }
     }
 
     public void testQueryInternalThumbnails() throws Exception {
diff --git a/tests/tests/provider/src/android/provider/cts/SettingsTest.java b/tests/tests/provider/src/android/provider/cts/SettingsTest.java
index 3ea47d4..c732305 100644
--- a/tests/tests/provider/src/android/provider/cts/SettingsTest.java
+++ b/tests/tests/provider/src/android/provider/cts/SettingsTest.java
@@ -20,6 +20,9 @@
 import android.content.ContentProviderClient;
 import android.content.ContentResolver;
 import android.content.ContentValues;
+import android.content.Intent;
+import android.content.pm.PackageManager;
+import android.content.pm.ResolveInfo;
 import android.database.Cursor;
 import android.database.sqlite.SQLiteException;
 import android.net.Uri;
@@ -263,4 +266,11 @@
         tryBadTableAccess("secure ", "secure", "install_non_market_apps");
         tryBadTableAccess(" secure ", "secure", "install_non_market_apps");
     }
+
+    public void testUserDictionarySettingsExists() throws RemoteException {
+        final Intent intent = new Intent(Settings.ACTION_USER_DICTIONARY_SETTINGS);
+        final ResolveInfo ri = mContext.getPackageManager().resolveActivity(
+                intent, PackageManager.MATCH_DEFAULT_ONLY);
+        assertTrue(ri != null);
+    }
 }
diff --git a/tests/tests/provider/src/android/provider/cts/TelephonyProviderTest.java b/tests/tests/provider/src/android/provider/cts/TelephonyProviderTest.java
index e352252..0eba9f2 100644
--- a/tests/tests/provider/src/android/provider/cts/TelephonyProviderTest.java
+++ b/tests/tests/provider/src/android/provider/cts/TelephonyProviderTest.java
@@ -18,6 +18,10 @@
 
 import android.content.ContentResolver;
 import android.content.ContentValues;
+import android.database.Cursor;
+import android.net.Uri;
+import android.os.ParcelFileDescriptor;
+import android.provider.Telephony.Carriers;
 import android.net.Uri;
 import android.os.ParcelFileDescriptor;
 import android.test.InstrumentationTestCase;
@@ -27,17 +31,23 @@
 import java.io.FileDescriptor;
 
 // To run the tests in this file w/o running all the cts tests:
-// build cts
+// make cts
 // cts-tradefed
 // run cts -c android.provider.cts.TelephonyProviderTest
 
 public class TelephonyProviderTest extends InstrumentationTestCase {
     private ContentResolver mContentResolver;
+    private static final String[] APN_PROJECTION = {
+        Carriers.TYPE,            // 0
+        Carriers.MMSC,            // 1
+        Carriers.MMSPROXY,        // 2
+        Carriers.MMSPORT          // 3
+    };
 
     @Override
     protected void setUp() throws Exception {
         super.setUp();
-        mContentResolver = getInstrumentation().getTargetContext().getContentResolver();
+        mContentResolver = getInstrumentation().getContext().getContentResolver();
     }
 
     // Test that the TelephonyProvider doesn't allow clients to update _data column data and
@@ -68,4 +78,18 @@
             e.printStackTrace();
         }
     }
+
+    // In JB MR1 access to the TelephonyProvider's Carriers table was clamped down and would
+    // throw a SecurityException when queried. That was fixed in JB MR2. Verify that 3rd parties
+    // can access the APN info the carriers table, after JB MR1.
+    public void testAccessToApns() {
+        try {
+            String selection = Carriers.CURRENT + " IS NOT NULL";
+            String[] selectionArgs = null;
+            Cursor cursor = mContentResolver.query(Carriers.CONTENT_URI,
+                    APN_PROJECTION, selection, selectionArgs, null);
+        } catch (SecurityException e) {
+            fail("No access to current APN");
+        }
+    }
 }
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/AcosPiTest.java b/tests/tests/renderscript/src/android/renderscript/cts/AcosPiTest.java
new file mode 100644
index 0000000..9d0bc7d
--- /dev/null
+++ b/tests/tests/renderscript/src/android/renderscript/cts/AcosPiTest.java
@@ -0,0 +1,110 @@
+/*
+ * Copyright (C) 2012 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 android.renderscript.cts;
+
+import com.android.cts.stub.R;
+import android.renderscript.Allocation;
+import android.renderscript.RSRuntimeException;
+
+public class AcosPiTest extends RSBaseCompute {
+    private ScriptC_acospi_f32 script_f32;
+    private ScriptC_acospi_f32_relaxed script_f32_relaxed;
+
+    @Override
+    protected void setUp() throws Exception {
+        super.setUp();
+        script_f32 = new ScriptC_acospi_f32(mRS);
+        script_f32_relaxed = new ScriptC_acospi_f32_relaxed(mRS);
+    }
+
+    @Override
+    public void forEach(int testId, Allocation mIn, Allocation mOut) throws RSRuntimeException {
+        switch (testId) {
+        case TEST_F32:
+            script_f32.forEach_acospi_f32_1(mIn, mOut);
+            break;
+        case TEST_F32_2:
+            script_f32.forEach_acospi_f32_2(mIn, mOut);
+            break;
+        case TEST_F32_3:
+            script_f32.forEach_acospi_f32_3(mIn, mOut);
+            break;
+        case TEST_F32_4:
+            script_f32.forEach_acospi_f32_4(mIn, mOut);
+            break;
+
+        case TEST_RELAXED_F32:
+            script_f32_relaxed.forEach_acospi_f32_1(mIn, mOut);
+            break;
+        case TEST_RELAXED_F32_2:
+            script_f32_relaxed.forEach_acospi_f32_2(mIn, mOut);
+            break;
+        case TEST_RELAXED_F32_3:
+            script_f32_relaxed.forEach_acospi_f32_3(mIn, mOut);
+            break;
+        case TEST_RELAXED_F32_4:
+            script_f32_relaxed.forEach_acospi_f32_4(mIn, mOut);
+            break;
+        }
+    }
+
+    @Override
+    protected float[] getRefArray(float[] in, int input_size, int stride, int skip) {
+        float[] ref = new float[input_size * stride];
+        for (int i = 0; i < input_size; i++) {
+            for (int j = 0; j < stride - skip; j++) {
+                int idx= i * stride + j;
+                int idxRef = i * (stride - skip) + j;
+                ref[idxRef] = (float)(Math.acos((double)in[idx])/Math.PI);
+            }
+        }
+        return ref;
+    }
+
+    public void testAcosPiF32() {
+        doF32(0xe1, 5);
+    }
+
+    public void testAcosPiF32_relaxed() {
+        doF32_relaxed(0xe1, 128);
+    }
+
+    public void testAcosPiF32_2() {
+        doF32_2(0xa123, 5);
+    }
+
+    public void testAcosPiF32_2_relaxed() {
+        doF32_2_relaxed(0xa123, 128);
+    }
+
+    public void testAcosPiF32_3() {
+        doF32_3(0x123, 5);
+    }
+
+    public void testAcosPiF32_3_relaxed() {
+        doF32_3_relaxed(0x123, 128);
+    }
+
+    public void testAcosPiF32_4() {
+        doF32_4(0x123ef, 5);
+
+    }
+    public void testAcosPiF32_4_relaxed() {
+        doF32_4_relaxed(0x123ef, 128);
+    }
+
+}
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/AcosTest.java b/tests/tests/renderscript/src/android/renderscript/cts/AcosTest.java
new file mode 100644
index 0000000..d540c60
--- /dev/null
+++ b/tests/tests/renderscript/src/android/renderscript/cts/AcosTest.java
@@ -0,0 +1,111 @@
+/*
+ * Copyright (C) 2012 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 android.renderscript.cts;
+
+import com.android.cts.stub.R;
+import android.renderscript.Allocation;
+import android.renderscript.RSRuntimeException;
+
+public class AcosTest extends RSBaseCompute {
+    private ScriptC_acos_f32 script_f32;
+    private ScriptC_acos_f32_relaxed script_f32_relaxed;
+
+    @Override
+    protected void setUp() throws Exception {
+        super.setUp();
+        script_f32 = new ScriptC_acos_f32(mRS);
+        script_f32_relaxed = new ScriptC_acos_f32_relaxed(mRS);
+    }
+
+    @Override
+    public void forEach(int testId, Allocation mIn, Allocation mOut) throws RSRuntimeException {
+        switch (testId) {
+        case TEST_F32:
+            script_f32.forEach_acos_f32_1(mIn, mOut);
+            break;
+        case TEST_F32_2:
+            script_f32.forEach_acos_f32_2(mIn, mOut);
+            break;
+        case TEST_F32_3:
+            script_f32.forEach_acos_f32_3(mIn, mOut);
+            break;
+        case TEST_F32_4:
+            script_f32.forEach_acos_f32_4(mIn, mOut);
+            break;
+        case TEST_RELAXED_F32:
+            script_f32.forEach_acos_f32_1(mIn, mOut);
+            break;
+        case TEST_RELAXED_F32_2:
+            script_f32.forEach_acos_f32_2(mIn, mOut);
+            break;
+        case TEST_RELAXED_F32_3:
+            script_f32.forEach_acos_f32_3(mIn, mOut);
+            break;
+        case TEST_RELAXED_F32_4:
+            script_f32.forEach_acos_f32_4(mIn, mOut);
+            break;
+
+        }
+    }
+
+    @Override
+    protected float[] getRefArray(float[] in, int input_size, int stride, int skip) {
+        float[] ref = new float[input_size * stride];
+        for (int i = 0; i < input_size; i++) {
+            for (int j = 0; j < stride - skip; j++) {
+                int idx= i * stride + j;
+                int idxRef = i * (stride - skip) + j;
+                ref[idxRef] = (float)(Math.acos((double)in[idx]));
+            }
+        }
+        return ref;
+    }
+
+    public void testAcosF32() {
+        doF32(0x123e, 4);
+    }
+
+    public void testAcosF32_2() {
+        doF32_2(0x1e, 4);
+    }
+
+    public void testAcosF32_3() {
+        doF32_3(0xeaf, 4);
+    }
+
+    public void testAcosF32_4() {
+        doF32_4(0x123, 4);
+    }
+
+    public void testAcosF32_relaxed() {
+        doF32_relaxed(0x123e, 128);
+    }
+
+    public void testAcosF32_2_relaxed() {
+        doF32_2_relaxed(0x1e, 128);
+    }
+
+    public void testAcosF32_3_relaxed() {
+        doF32_3_relaxed(0xeaf, 128);
+    }
+
+    public void testAcosF32_4_relaxed() {
+        doF32_4_relaxed(0x123, 128);
+    }
+
+
+}
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/AcoshTest.java b/tests/tests/renderscript/src/android/renderscript/cts/AcoshTest.java
new file mode 100644
index 0000000..5947066
--- /dev/null
+++ b/tests/tests/renderscript/src/android/renderscript/cts/AcoshTest.java
@@ -0,0 +1,111 @@
+/*
+ * Copyright (C) 2012 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 android.renderscript.cts;
+
+import com.android.cts.stub.R;
+import android.renderscript.Allocation;
+import android.renderscript.RSRuntimeException;
+
+public class AcoshTest extends RSBaseCompute {
+    private ScriptC_acosh_f32 script_f32;
+    private ScriptC_acosh_f32_relaxed script_f32_relaxed;
+
+    @Override
+    protected void setUp() throws Exception {
+        super.setUp();
+        script_f32 = new ScriptC_acosh_f32(mRS);
+        script_f32_relaxed = new ScriptC_acosh_f32_relaxed(mRS);
+    }
+
+    @Override
+    public void forEach(int testId, Allocation mIn, Allocation mOut) throws RSRuntimeException {
+        switch (testId) {
+        case TEST_F32:
+            script_f32.forEach_acosh_f32_1(mIn, mOut);
+            break;
+        case TEST_F32_2:
+            script_f32.forEach_acosh_f32_2(mIn, mOut);
+            break;
+        case TEST_F32_3:
+            script_f32.forEach_acosh_f32_3(mIn, mOut);
+            break;
+        case TEST_F32_4:
+            script_f32.forEach_acosh_f32_4(mIn, mOut);
+            break;
+
+        case TEST_RELAXED_F32:
+            script_f32_relaxed.forEach_acosh_f32_1(mIn, mOut);
+            break;
+        case TEST_RELAXED_F32_2:
+            script_f32_relaxed.forEach_acosh_f32_2(mIn, mOut);
+            break;
+        case TEST_RELAXED_F32_3:
+            script_f32_relaxed.forEach_acosh_f32_3(mIn, mOut);
+            break;
+        case TEST_RELAXED_F32_4:
+            script_f32_relaxed.forEach_acosh_f32_4(mIn, mOut);
+            break;
+        }
+    }
+
+    @Override
+    protected float[] getRefArray(float[] in, int input_size, int stride, int skip) {
+        float[] ref = new float[input_size * stride];
+        for (int i = 0; i < input_size; i++) {
+            for (int j = 0; j < stride - skip; j++) {
+                int idx= i * stride + j;
+                int idxRef = i * (stride - skip) + j;
+                double x = (double)in[idx];
+                ref[idxRef] = (float)(2*Math.log(Math.sqrt((x+1)/2) + Math.sqrt((x-1)/2)));
+            }
+        }
+        return ref;
+    }
+
+    public void testAcoshF32() {
+        doF32(0x12345678, 4);
+    }
+
+    public void testAcoshF32_relaxed() {
+        doF32_relaxed(0x12345678, 4);
+    }
+
+    public void testAcoshF32_2() {
+        doF32_2(0x1234ac, 4);
+    }
+
+    public void testAcoshF32_2_relaxed() {
+        doF32_2_relaxed(0x1234ac, 4);
+    }
+
+    public void testAcoshF32_3() {
+        doF32_3(0x123fc78, 4);
+    }
+
+    public void testAcoshF32_3_relaxed() {
+        doF32_3_relaxed(0x123fc78, 4);
+    }
+
+    public void testAcoshF32_4() {
+        doF32_4(0x12def8, 4);
+
+    }
+    public void testAcoshF32_4_relaxed() {
+        doF32_4_relaxed(0x12def8, 4);
+    }
+
+}
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/AllocationCopy2DRangeTest.java b/tests/tests/renderscript/src/android/renderscript/cts/AllocationCopy2DRangeTest.java
new file mode 100644
index 0000000..b032fd4
--- /dev/null
+++ b/tests/tests/renderscript/src/android/renderscript/cts/AllocationCopy2DRangeTest.java
@@ -0,0 +1,71 @@
+/*
+ * Copyright (C) 2012 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 android.renderscript.cts;
+
+import android.renderscript.Allocation;
+import android.renderscript.Element;
+import android.renderscript.Type;
+import java.util.Random;
+import com.android.cts.stub.R;
+
+public class AllocationCopy2DRangeTest extends RSBaseCompute {
+    private Allocation mInAllocation;
+    private Allocation mOutAllocation;
+
+    public void testAllocationCopy2DRange() {
+        ScriptC_allocationCopy2DRange mScript =
+                new ScriptC_allocationCopy2DRange(mRS, mRes, R.raw.allocationcopy2drange);
+        Random random = new Random(0x172d8ab9);
+        int width = random.nextInt(512);
+        int height = random.nextInt(512);
+
+        int[] inArray = new int[width * height];
+        int[] outArray = new int[width * height];
+
+        for (int i = 0; i < width * height; i++) {
+            inArray[i] = random.nextInt();
+        }
+
+        // Create 2D data.
+        Type.Builder typeBuilder = new Type.Builder(mRS, Element.I32(mRS));
+        typeBuilder.setX(width).setY(height);
+        mInAllocation = Allocation.createTyped(mRS, typeBuilder.create());
+        mOutAllocation = Allocation.createTyped(mRS, mInAllocation.getType());
+        mInAllocation.copy2DRangeFrom(0, 0, width, height, inArray);
+
+        mScript.set_height(height);
+        mScript.set_width(width);
+        mScript.set_mIn(mInAllocation);
+        mScript.set_mOut(mOutAllocation);
+
+        mScript.invoke_testAllocationCopy2DRange();
+        mOutAllocation.copyTo(outArray);
+        assertTrue("testAllocationCopy2DRange failed, output array does not match input",
+                compareTwoArrays(inArray, outArray, width*height));
+    }
+
+    private boolean compareTwoArrays(int[] src, int[] dest, int size) {
+        boolean result = true;
+        for (int i = 0; i < size; i++) {
+            if (src[i] != dest[i]) {
+                result = false;
+                break;
+            }
+        }
+        return result;
+    }
+}
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/AllocationResize.java b/tests/tests/renderscript/src/android/renderscript/cts/AllocationResize.java
new file mode 100644
index 0000000..b6d9a1a
--- /dev/null
+++ b/tests/tests/renderscript/src/android/renderscript/cts/AllocationResize.java
@@ -0,0 +1,61 @@
+/*
+ * Copyright (C) 2012 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 android.renderscript.cts;
+
+
+import android.renderscript.Allocation;
+import android.renderscript.Element;
+import android.renderscript.RSRuntimeException;
+import com.android.cts.stub.R;
+import java.util.Random;
+
+public class AllocationResize extends RSBaseCompute {
+    private Allocation mIn;
+    private Allocation mOut;
+    private ScriptC_allocation_resize mScript;
+
+    @Override
+    public void forEach(int testId, Allocation mIn, Allocation mOut) throws RSRuntimeException {
+        mScript.forEach_root(mIn, mOut);
+    }
+
+    public void testResize() {
+        mScript = new ScriptC_allocation_resize(mRS, mRes, R.raw.allocation_resize);
+        mIn = Allocation.createSized(mRS, Element.I32(mRS), INPUTSIZE/2);
+        mOut = Allocation.createSized(mRS, Element.I32(mRS), INPUTSIZE*2);
+        mIn.resize(INPUTSIZE);
+        mOut.resize(INPUTSIZE);
+
+        Random random = new Random(0x12345678);
+        int[] outArray = new int[INPUTSIZE];
+        int[] inArray = new int[INPUTSIZE];
+        for (int i = 0; i < INPUTSIZE; i++) {
+            inArray[i] = random.nextInt();
+        }
+        mIn.copy1DRangeFrom(0, INPUTSIZE, inArray);
+
+        try {
+            RSUtils.forEach(this, 0, mIn, mOut);
+        } catch (RSRuntimeException e) {
+        }
+
+        mOut.copyTo(outArray);
+        for (int i = 0; i < INPUTSIZE; i++) {
+            assertEquals("Incorrect value @ idx = " + i + " | ", inArray[i], outArray[i]);
+        }
+    }
+}
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/AsinPiTest.java b/tests/tests/renderscript/src/android/renderscript/cts/AsinPiTest.java
new file mode 100644
index 0000000..64a001e
--- /dev/null
+++ b/tests/tests/renderscript/src/android/renderscript/cts/AsinPiTest.java
@@ -0,0 +1,110 @@
+/*
+ * Copyright (C) 2012 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 android.renderscript.cts;
+
+import com.android.cts.stub.R;
+import android.renderscript.Allocation;
+import android.renderscript.RSRuntimeException;
+
+public class AsinPiTest extends RSBaseCompute {
+    private ScriptC_asinpi_f32 script_f32;
+    private ScriptC_asinpi_f32_relaxed script_f32_relaxed;
+
+    @Override
+    protected void setUp() throws Exception {
+        super.setUp();
+        script_f32 = new ScriptC_asinpi_f32(mRS);
+        script_f32_relaxed = new ScriptC_asinpi_f32_relaxed(mRS);
+    }
+
+    @Override
+    public void forEach(int testId, Allocation mIn, Allocation mOut) throws RSRuntimeException {
+        switch (testId) {
+        case TEST_F32:
+            script_f32.forEach_asinpi_f32_1(mIn, mOut);
+            break;
+        case TEST_F32_2:
+            script_f32.forEach_asinpi_f32_2(mIn, mOut);
+            break;
+        case TEST_F32_3:
+            script_f32.forEach_asinpi_f32_3(mIn, mOut);
+            break;
+        case TEST_F32_4:
+            script_f32.forEach_asinpi_f32_4(mIn, mOut);
+            break;
+
+        case TEST_RELAXED_F32:
+            script_f32_relaxed.forEach_asinpi_f32_1(mIn, mOut);
+            break;
+        case TEST_RELAXED_F32_2:
+            script_f32_relaxed.forEach_asinpi_f32_2(mIn, mOut);
+            break;
+        case TEST_RELAXED_F32_3:
+            script_f32_relaxed.forEach_asinpi_f32_3(mIn, mOut);
+            break;
+        case TEST_RELAXED_F32_4:
+            script_f32_relaxed.forEach_asinpi_f32_4(mIn, mOut);
+            break;
+        }
+    }
+
+    @Override
+    protected float[] getRefArray(float[] in, int input_size, int stride, int skip) {
+        float[] ref = new float[input_size * stride];
+        for (int i = 0; i < input_size; i++) {
+            for (int j = 0; j < stride - skip; j++) {
+                int idx= i * stride + j;
+                int idxRef = i * (stride - skip) + j;
+                ref[idxRef] = (float)(Math.asin((double)in[idx])/Math.PI);
+            }
+        }
+        return ref;
+    }
+
+    public void testAsinPiF32() {
+        doF32(0xa, 5);
+    }
+
+    public void testAsinPiF32_relaxed() {
+        doF32_relaxed(0xa, 5);
+    }
+
+    public void testAsinPiF32_2() {
+        doF32_2(0xe, 5);
+    }
+
+    public void testAsinPiF32_2_relaxed() {
+        doF32_2_relaxed(0xe, 5);
+    }
+
+    public void testAsinPiF32_3() {
+        doF32_3(0x1234, 5);
+    }
+
+    public void testAsinPiF32_3_relaxed() {
+        doF32_3_relaxed(0x1234, 5);
+    }
+
+    public void testAsinPiF32_4() {
+        doF32_4(0xaf, 5);
+
+    }
+    public void testAsinPiF32_4_relaxed() {
+        doF32_4_relaxed(0xaf, 5);
+    }
+
+}
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/AsinTest.java b/tests/tests/renderscript/src/android/renderscript/cts/AsinTest.java
new file mode 100644
index 0000000..7f3c367
--- /dev/null
+++ b/tests/tests/renderscript/src/android/renderscript/cts/AsinTest.java
@@ -0,0 +1,110 @@
+/*
+ * Copyright (C) 2012 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 android.renderscript.cts;
+
+import com.android.cts.stub.R;
+import android.renderscript.Allocation;
+import android.renderscript.RSRuntimeException;
+
+public class AsinTest extends RSBaseCompute {
+    private ScriptC_asin_f32 script_f32;
+    private ScriptC_asin_f32_relaxed script_f32_relaxed;
+
+    @Override
+    protected void setUp() throws Exception {
+        super.setUp();
+        script_f32 = new ScriptC_asin_f32(mRS);
+        script_f32_relaxed = new ScriptC_asin_f32_relaxed(mRS);
+    }
+
+    @Override
+    public void forEach(int testId, Allocation mIn, Allocation mOut) throws RSRuntimeException {
+        switch (testId) {
+        case TEST_F32:
+            script_f32.forEach_asin_f32_1(mIn, mOut);
+            break;
+        case TEST_F32_2:
+            script_f32.forEach_asin_f32_2(mIn, mOut);
+            break;
+        case TEST_F32_3:
+            script_f32.forEach_asin_f32_3(mIn, mOut);
+            break;
+        case TEST_F32_4:
+            script_f32.forEach_asin_f32_4(mIn, mOut);
+            break;
+
+        case TEST_RELAXED_F32:
+            script_f32_relaxed.forEach_asin_f32_1(mIn, mOut);
+            break;
+        case TEST_RELAXED_F32_2:
+            script_f32_relaxed.forEach_asin_f32_2(mIn, mOut);
+            break;
+        case TEST_RELAXED_F32_3:
+            script_f32_relaxed.forEach_asin_f32_3(mIn, mOut);
+            break;
+        case TEST_RELAXED_F32_4:
+            script_f32_relaxed.forEach_asin_f32_4(mIn, mOut);
+            break;
+        }
+    }
+
+    @Override
+    protected float[] getRefArray(float[] in, int input_size, int stride, int skip) {
+        float[] ref = new float[input_size * stride];
+        for (int i = 0; i < input_size; i++) {
+            for (int j = 0; j < stride - skip; j++) {
+                int idx= i * stride + j;
+                int idxRef = i * (stride - skip) + j;
+                ref[idxRef] = (float)(Math.asin((double)in[idx]));
+            }
+        }
+        return ref;
+    }
+
+    public void testAsinF32() {
+        doF32(0x12efa, 4);
+    }
+
+    public void testAsinF32_relaxed() {
+        doF32_relaxed(0x12efa, 128);
+    }
+
+    public void testAsinF32_2() {
+        doF32_2(0x34ef, 4);
+    }
+
+    public void testAsinF32_2_relaxed() {
+        doF32_2_relaxed(0x34ef, 128);
+    }
+
+    public void testAsinF32_3() {
+        doF32_3(0xae31, 4);
+    }
+
+    public void testAsinF32_3_relaxed() {
+        doF32_3_relaxed(0xae31, 128);
+    }
+
+    public void testAsinF32_4() {
+        doF32_4(0x341, 4);
+
+    }
+    public void testAsinF32_4_relaxed() {
+        doF32_4_relaxed(0x341, 128);
+    }
+
+}
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/AsinhTest.java b/tests/tests/renderscript/src/android/renderscript/cts/AsinhTest.java
new file mode 100644
index 0000000..e0204d2
--- /dev/null
+++ b/tests/tests/renderscript/src/android/renderscript/cts/AsinhTest.java
@@ -0,0 +1,111 @@
+/*
+ * Copyright (C) 2012 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 android.renderscript.cts;
+
+import com.android.cts.stub.R;
+import android.renderscript.Allocation;
+import android.renderscript.RSRuntimeException;
+
+public class AsinhTest extends RSBaseCompute {
+    private ScriptC_asinh_f32 script_f32;
+    private ScriptC_asinh_f32_relaxed script_f32_relaxed;
+
+    @Override
+    protected void setUp() throws Exception {
+        super.setUp();
+        script_f32 = new ScriptC_asinh_f32(mRS);
+        script_f32_relaxed = new ScriptC_asinh_f32_relaxed(mRS);
+    }
+
+    @Override
+    public void forEach(int testId, Allocation mIn, Allocation mOut) throws RSRuntimeException {
+        switch (testId) {
+        case TEST_F32:
+            script_f32.forEach_asinh_f32_1(mIn, mOut);
+            break;
+        case TEST_F32_2:
+            script_f32.forEach_asinh_f32_2(mIn, mOut);
+            break;
+        case TEST_F32_3:
+            script_f32.forEach_asinh_f32_3(mIn, mOut);
+            break;
+        case TEST_F32_4:
+            script_f32.forEach_asinh_f32_4(mIn, mOut);
+            break;
+
+        case TEST_RELAXED_F32:
+            script_f32_relaxed.forEach_asinh_f32_1(mIn, mOut);
+            break;
+        case TEST_RELAXED_F32_2:
+            script_f32_relaxed.forEach_asinh_f32_2(mIn, mOut);
+            break;
+        case TEST_RELAXED_F32_3:
+            script_f32_relaxed.forEach_asinh_f32_3(mIn, mOut);
+            break;
+        case TEST_RELAXED_F32_4:
+            script_f32_relaxed.forEach_asinh_f32_4(mIn, mOut);
+            break;
+        }
+    }
+
+    @Override
+    protected float[] getRefArray(float[] in, int input_size, int stride, int skip) {
+        float[] ref = new float[input_size * stride];
+        for (int i = 0; i < input_size; i++) {
+            for (int j = 0; j < stride - skip; j++) {
+                int idx= i * stride + j;
+                int idxRef = i * (stride - skip) + j;
+                double x = (double)in[idx];
+                ref[idxRef] = (float)(Math.log(x+Math.sqrt(1+Math.pow(x, 2))));
+            }
+        }
+        return ref;
+    }
+
+    public void testAsinhF32() {
+        doF32(0x12, 4);
+    }
+
+    public void testAsinhF32_relaxed() {
+        doF32_relaxed(0x12, 128);
+    }
+
+    public void testAsinhF32_2() {
+        doF32_2(0xead, 4);
+    }
+
+    public void testAsinhF32_2_relaxed() {
+        doF32_2_relaxed(0xead, 128);
+    }
+
+    public void testAsinhF32_3() {
+        doF32_3(0xabc, 4);
+    }
+
+    public void testAsinhF32_3_relaxed() {
+        doF32_3_relaxed(0xabc, 128);
+    }
+
+    public void testAsinhF32_4() {
+        doF32_4(0xfea, 4);
+
+    }
+    public void testAsinhF32_4_relaxed() {
+        doF32_4_relaxed(0xfea, 128);
+    }
+
+}
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/Atan2PiTest.java b/tests/tests/renderscript/src/android/renderscript/cts/Atan2PiTest.java
new file mode 100644
index 0000000..f96e7d6
--- /dev/null
+++ b/tests/tests/renderscript/src/android/renderscript/cts/Atan2PiTest.java
@@ -0,0 +1,136 @@
+/*
+ * Copyright (C) 2012 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 android.renderscript.cts;
+
+import com.android.cts.stub.R;
+import android.renderscript.Allocation;
+import android.renderscript.RSRuntimeException;
+import android.renderscript.Element;
+
+public class Atan2PiTest extends RSBaseCompute {
+    private ScriptC_atan2pi_f32 script_f32;
+    private ScriptC_atan2pi_f32_relaxed script_f32_relaxed;
+    private Allocation mIn;
+
+    @Override
+    protected void setUp() throws Exception {
+        super.setUp();
+        script_f32 = new ScriptC_atan2pi_f32(mRS);
+        script_f32_relaxed = new ScriptC_atan2pi_f32_relaxed(mRS);
+    }
+
+    @Override
+    public void forEach(int testId, Allocation mIn, Allocation mOut) throws RSRuntimeException {
+        switch (testId) {
+        case TEST_F32:
+            script_f32.forEach_atan2pi_f32_1(mIn, mOut);
+            break;
+        case TEST_F32_2:
+            script_f32.forEach_atan2pi_f32_2(mIn, mOut);
+            break;
+        case TEST_F32_3:
+            script_f32.forEach_atan2pi_f32_3(mIn, mOut);
+            break;
+        case TEST_F32_4:
+            script_f32.forEach_atan2pi_f32_4(mIn, mOut);
+            break;
+
+        case TEST_RELAXED_F32:
+            script_f32_relaxed.forEach_atan2pi_f32_1(mIn, mOut);
+            break;
+        case TEST_RELAXED_F32_2:
+            script_f32_relaxed.forEach_atan2pi_f32_2(mIn, mOut);
+            break;
+        case TEST_RELAXED_F32_3:
+            script_f32_relaxed.forEach_atan2pi_f32_3(mIn, mOut);
+            break;
+        case TEST_RELAXED_F32_4:
+            script_f32_relaxed.forEach_atan2pi_f32_4(mIn, mOut);
+            break;
+        }
+    }
+
+    @Override
+    protected float[] getRefArray(float[] in, int input_size, int stride, int skip) {
+        float[] ref = new float[input_size * stride];
+        for (int i = 0; i < input_size; i++) {
+            for (int j = 0; j < stride - skip; j++) {
+                int idx = i * stride * 2 + j;
+                ref[i * (stride - skip) + j] = (float)(Math.atan2((double)in[idx],(double)in[idx+stride]) / Math.PI);
+            }
+        }
+        return ref;
+    }
+
+    @Override
+    protected Allocation setInAlloc(Element e) {
+        return mIn;
+    }
+
+    @Override
+    protected float[] makeInArray(int size) {
+        return new float[size*2];
+    }
+
+    public void testAtan2PiF32() {
+        ScriptField_atan2pi_float_input in = new ScriptField_atan2pi_float_input(mRS, INPUTSIZE);
+        mIn = in.getAllocation();
+        doF32(0x12678, 6);
+    }
+
+    public void testAtan2PiF32_relaxed() {
+        ScriptField_atan2pi_float_input in = new ScriptField_atan2pi_float_input(mRS, INPUTSIZE);
+        mIn = in.getAllocation();
+        doF32_relaxed(0x12678, 128);
+    }
+
+    public void testAtan2PiF32_2() {
+        ScriptField_atan2pi_float2_input in = new ScriptField_atan2pi_float2_input(mRS, INPUTSIZE);
+        mIn = in.getAllocation();
+        doF32_2(0x1af45, 6);
+    }
+
+    public void testAtan2PiF32_2_relaxed() {
+        ScriptField_atan2pi_float2_input in = new ScriptField_atan2pi_float2_input(mRS, INPUTSIZE);
+        mIn = in.getAllocation();
+        doF32_2_relaxed(0x1af45, 128);
+    }
+
+    public void testAtan2PiF32_3() {
+        ScriptField_atan2pi_float3_input in = new ScriptField_atan2pi_float3_input(mRS, INPUTSIZE);
+        mIn = in.getAllocation();
+        doF32_3(0x1cd345, 6);
+    }
+
+    public void testAtan2PiF32_3_relaxed() {
+        ScriptField_atan2pi_float3_input in = new ScriptField_atan2pi_float3_input(mRS, INPUTSIZE);
+        mIn = in.getAllocation();
+        doF32_3_relaxed(0x1cd345, 128);
+    }
+
+    public void testAtan2PiF32_4() {
+        ScriptField_atan2pi_float4_input in = new ScriptField_atan2pi_float4_input(mRS, INPUTSIZE);
+        mIn = in.getAllocation();
+        doF32_4(0x1ca45, 6);
+    }
+
+    public void testAtan2PiF32_4_relaxed() {
+        ScriptField_atan2pi_float4_input in = new ScriptField_atan2pi_float4_input(mRS, INPUTSIZE);
+        mIn = in.getAllocation();
+        doF32_4_relaxed(0x1ca45, 128);
+    }
+}
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/Atan2Test.java b/tests/tests/renderscript/src/android/renderscript/cts/Atan2Test.java
new file mode 100644
index 0000000..c3eabb7
--- /dev/null
+++ b/tests/tests/renderscript/src/android/renderscript/cts/Atan2Test.java
@@ -0,0 +1,136 @@
+/*
+ * Copyright (C) 2012 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 android.renderscript.cts;
+
+import com.android.cts.stub.R;
+import android.renderscript.Allocation;
+import android.renderscript.RSRuntimeException;
+import android.renderscript.Element;
+
+public class Atan2Test extends RSBaseCompute {
+    private ScriptC_atan2_f32 script_f32;
+    private ScriptC_atan2_f32_relaxed script_f32_relaxed;
+    private Allocation mIn;
+
+    @Override
+    protected void setUp() throws Exception {
+        super.setUp();
+        script_f32 = new ScriptC_atan2_f32(mRS);
+        script_f32_relaxed = new ScriptC_atan2_f32_relaxed(mRS);
+    }
+
+    @Override
+    public void forEach(int testId, Allocation mIn, Allocation mOut) throws RSRuntimeException {
+        switch (testId) {
+        case TEST_F32:
+            script_f32.forEach_atan2_f32_1(mIn, mOut);
+            break;
+        case TEST_F32_2:
+            script_f32.forEach_atan2_f32_2(mIn, mOut);
+            break;
+        case TEST_F32_3:
+            script_f32.forEach_atan2_f32_3(mIn, mOut);
+            break;
+        case TEST_F32_4:
+            script_f32.forEach_atan2_f32_4(mIn, mOut);
+            break;
+
+        case TEST_RELAXED_F32:
+            script_f32_relaxed.forEach_atan2_f32_1(mIn, mOut);
+            break;
+        case TEST_RELAXED_F32_2:
+            script_f32_relaxed.forEach_atan2_f32_2(mIn, mOut);
+            break;
+        case TEST_RELAXED_F32_3:
+            script_f32_relaxed.forEach_atan2_f32_3(mIn, mOut);
+            break;
+        case TEST_RELAXED_F32_4:
+            script_f32_relaxed.forEach_atan2_f32_4(mIn, mOut);
+            break;
+        }
+    }
+
+    @Override
+    protected float[] getRefArray(float[] in, int input_size, int stride, int skip) {
+        float[] ref = new float[input_size * stride];
+        for (int i = 0; i < input_size; i++) {
+            for (int j = 0; j < stride - skip; j++) {
+                int idx = i * stride * 2 + j;
+                ref[i * (stride - skip) + j] = (float)Math.atan2((double)in[idx],(double)in[idx+stride]);
+            }
+        }
+        return ref;
+    }
+
+    @Override
+    protected Allocation setInAlloc(Element e) {
+        return mIn;
+    }
+
+    @Override
+    protected float[] makeInArray(int size) {
+        return new float[size*2];
+    }
+
+    public void testAtan2F32() {
+        ScriptField_atan2_f32_in in = new ScriptField_atan2_f32_in(mRS, INPUTSIZE);
+        mIn = in.getAllocation();
+        doF32(0x12678, 6);
+    }
+
+    public void testAtan2F32_relaxed() {
+        ScriptField_atan2_f32_in in = new ScriptField_atan2_f32_in(mRS, INPUTSIZE);
+        mIn = in.getAllocation();
+        doF32_relaxed(0x12678, 128);
+    }
+
+    public void testAtan2F32_2() {
+        ScriptField_atan2_f32_2_in in = new ScriptField_atan2_f32_2_in(mRS, INPUTSIZE);
+        mIn = in.getAllocation();
+        doF32_2(0x1af45, 6);
+    }
+
+    public void testAtan2F32_2_relaxed() {
+        ScriptField_atan2_f32_2_in in = new ScriptField_atan2_f32_2_in(mRS, INPUTSIZE);
+        mIn = in.getAllocation();
+        doF32_2_relaxed(0x1af45, 128);
+    }
+
+    public void testAtan2F32_3() {
+        ScriptField_atan2_f32_3_in in = new ScriptField_atan2_f32_3_in(mRS, INPUTSIZE);
+        mIn = in.getAllocation();
+        doF32_3(0x1cd345, 6);
+    }
+
+    public void testAtan2F32_3_relaxed() {
+        ScriptField_atan2_f32_3_in in = new ScriptField_atan2_f32_3_in(mRS, INPUTSIZE);
+        mIn = in.getAllocation();
+        doF32_3_relaxed(0x1cd345, 128);
+    }
+
+    public void testAtan2F32_4() {
+        ScriptField_atan2_f32_4_in in = new ScriptField_atan2_f32_4_in(mRS, INPUTSIZE);
+        mIn = in.getAllocation();
+        doF32_4(0x1ca45, 6);
+    }
+
+    public void testAtan2F32_4_relaxed() {
+        ScriptField_atan2_f32_4_in in = new ScriptField_atan2_f32_4_in(mRS, INPUTSIZE);
+        mIn = in.getAllocation();
+        doF32_4_relaxed(0x1ca45, 128);
+    }
+}
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/AtanPiTest.java b/tests/tests/renderscript/src/android/renderscript/cts/AtanPiTest.java
new file mode 100644
index 0000000..17fe5ad
--- /dev/null
+++ b/tests/tests/renderscript/src/android/renderscript/cts/AtanPiTest.java
@@ -0,0 +1,110 @@
+/*
+ * Copyright (C) 2012 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 android.renderscript.cts;
+
+import com.android.cts.stub.R;
+import android.renderscript.Allocation;
+import android.renderscript.RSRuntimeException;
+
+public class AtanPiTest extends RSBaseCompute {
+    private ScriptC_atanpi_f32 script_f32;
+    private ScriptC_atanpi_f32_relaxed script_f32_relaxed;
+
+    @Override
+    protected void setUp() throws Exception {
+        super.setUp();
+        script_f32 = new ScriptC_atanpi_f32(mRS);
+        script_f32_relaxed = new ScriptC_atanpi_f32_relaxed(mRS);
+    }
+
+    @Override
+    public void forEach(int testId, Allocation mIn, Allocation mOut) throws RSRuntimeException {
+        switch (testId) {
+        case TEST_F32:
+            script_f32.forEach_atanpi_f32_1(mIn, mOut);
+            break;
+        case TEST_F32_2:
+            script_f32.forEach_atanpi_f32_2(mIn, mOut);
+            break;
+        case TEST_F32_3:
+            script_f32.forEach_atanpi_f32_3(mIn, mOut);
+            break;
+        case TEST_F32_4:
+            script_f32.forEach_atanpi_f32_4(mIn, mOut);
+            break;
+
+        case TEST_RELAXED_F32:
+            script_f32_relaxed.forEach_atanpi_f32_1(mIn, mOut);
+            break;
+        case TEST_RELAXED_F32_2:
+            script_f32_relaxed.forEach_atanpi_f32_2(mIn, mOut);
+            break;
+        case TEST_RELAXED_F32_3:
+            script_f32_relaxed.forEach_atanpi_f32_3(mIn, mOut);
+            break;
+        case TEST_RELAXED_F32_4:
+            script_f32_relaxed.forEach_atanpi_f32_4(mIn, mOut);
+            break;
+        }
+    }
+
+    @Override
+    protected float[] getRefArray(float[] in, int input_size, int stride, int skip) {
+        float[] ref = new float[input_size * stride];
+        for (int i = 0; i < input_size; i++) {
+            for (int j = 0; j < stride - skip; j++) {
+                int idx= i * stride + j;
+                int idxRef = i * (stride - skip) + j;
+                ref[idxRef] = (float)(Math.atan((double)in[idx])/Math.PI);
+            }
+        }
+        return ref;
+    }
+
+    public void testAtanPiF32() {
+        doF32(0x123, 5);
+    }
+
+    public void testAtanPiF32_relaxed() {
+        doF32_relaxed(0x123, 128);
+    }
+
+    public void testAtanPiF32_2() {
+        doF32_2(0x12, 5);
+    }
+
+    public void testAtanPiF32_2_relaxed() {
+        doF32_2_relaxed(0x12, 128);
+    }
+
+    public void testAtanPiF32_3() {
+        doF32_3(0x847, 5);
+    }
+
+    public void testAtanPiF32_3_relaxed() {
+        doF32_3_relaxed(0x847, 128);
+    }
+
+    public void testAtanPiF32_4() {
+        doF32_4(0xfa2, 5);
+
+    }
+    public void testAtanPiF32_4_relaxed() {
+        doF32_4_relaxed(0xfa2, 128);
+    }
+
+}
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/AtanTest.java b/tests/tests/renderscript/src/android/renderscript/cts/AtanTest.java
new file mode 100644
index 0000000..c41be40
--- /dev/null
+++ b/tests/tests/renderscript/src/android/renderscript/cts/AtanTest.java
@@ -0,0 +1,110 @@
+/*
+ * Copyright (C) 2012 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 android.renderscript.cts;
+
+import com.android.cts.stub.R;
+import android.renderscript.Allocation;
+import android.renderscript.RSRuntimeException;
+
+public class AtanTest extends RSBaseCompute {
+    private ScriptC_atan_f32 script_f32;
+    private ScriptC_atan_f32_relaxed script_f32_relaxed;
+
+    @Override
+    protected void setUp() throws Exception {
+        super.setUp();
+        script_f32 = new ScriptC_atan_f32(mRS);
+        script_f32_relaxed = new ScriptC_atan_f32_relaxed(mRS);
+    }
+
+    @Override
+    public void forEach(int testId, Allocation mIn, Allocation mOut) throws RSRuntimeException {
+        switch (testId) {
+        case TEST_F32:
+            script_f32.forEach_atan_f32_1(mIn, mOut);
+            break;
+        case TEST_F32_2:
+            script_f32.forEach_atan_f32_2(mIn, mOut);
+            break;
+        case TEST_F32_3:
+            script_f32.forEach_atan_f32_3(mIn, mOut);
+            break;
+        case TEST_F32_4:
+            script_f32.forEach_atan_f32_4(mIn, mOut);
+            break;
+
+        case TEST_RELAXED_F32:
+            script_f32_relaxed.forEach_atan_f32_1(mIn, mOut);
+            break;
+        case TEST_RELAXED_F32_2:
+            script_f32_relaxed.forEach_atan_f32_2(mIn, mOut);
+            break;
+        case TEST_RELAXED_F32_3:
+            script_f32_relaxed.forEach_atan_f32_3(mIn, mOut);
+            break;
+        case TEST_RELAXED_F32_4:
+            script_f32_relaxed.forEach_atan_f32_4(mIn, mOut);
+            break;
+        }
+    }
+
+    @Override
+    protected float[] getRefArray(float[] in, int input_size, int stride, int skip) {
+        float[] ref = new float[input_size * stride];
+        for (int i = 0; i < input_size; i++) {
+            for (int j = 0; j < stride - skip; j++) {
+                int idx= i * stride + j;
+                int idxRef = i * (stride - skip) + j;
+                ref[idxRef] = (float)(Math.atan((double)in[idx]));
+            }
+        }
+        return ref;
+    }
+
+    public void testAtanF32() {
+        doF32(0x12a, 5);
+    }
+
+    public void testAtanF32_relaxed() {
+        doF32_relaxed(0x12a, 128);
+    }
+
+    public void testAtanF32_2() {
+        doF32_2(0xad, 5);
+    }
+
+    public void testAtanF32_2_relaxed() {
+        doF32_2_relaxed(0xad, 128);
+    }
+
+    public void testAtanF32_3() {
+        doF32_3(0xafe, 5);
+    }
+
+    public void testAtanF32_3_relaxed() {
+        doF32_3_relaxed(0xafe, 128);
+    }
+
+    public void testAtanF32_4() {
+        doF32_4(0x1238, 5);
+
+    }
+    public void testAtanF32_4_relaxed() {
+        doF32_4_relaxed(0x1238, 128);
+    }
+
+}
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/AtanhTest.java b/tests/tests/renderscript/src/android/renderscript/cts/AtanhTest.java
new file mode 100644
index 0000000..7182251
--- /dev/null
+++ b/tests/tests/renderscript/src/android/renderscript/cts/AtanhTest.java
@@ -0,0 +1,111 @@
+/*
+ * Copyright (C) 2012 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 android.renderscript.cts;
+
+import com.android.cts.stub.R;
+import android.renderscript.Allocation;
+import android.renderscript.RSRuntimeException;
+
+public class AtanhTest extends RSBaseCompute {
+    private ScriptC_atanh_f32 script_f32;
+    private ScriptC_atanh_f32_relaxed script_f32_relaxed;
+
+    @Override
+    protected void setUp() throws Exception {
+        super.setUp();
+        script_f32 = new ScriptC_atanh_f32(mRS);
+        script_f32_relaxed = new ScriptC_atanh_f32_relaxed(mRS);
+    }
+
+    @Override
+    public void forEach(int testId, Allocation mIn, Allocation mOut) throws RSRuntimeException {
+        switch (testId) {
+        case TEST_F32:
+            script_f32.forEach_atanh_f32_1(mIn, mOut);
+            break;
+        case TEST_F32_2:
+            script_f32.forEach_atanh_f32_2(mIn, mOut);
+            break;
+        case TEST_F32_3:
+            script_f32.forEach_atanh_f32_3(mIn, mOut);
+            break;
+        case TEST_F32_4:
+            script_f32.forEach_atanh_f32_4(mIn, mOut);
+            break;
+
+        case TEST_RELAXED_F32:
+            script_f32_relaxed.forEach_atanh_f32_1(mIn, mOut);
+            break;
+        case TEST_RELAXED_F32_2:
+            script_f32_relaxed.forEach_atanh_f32_2(mIn, mOut);
+            break;
+        case TEST_RELAXED_F32_3:
+            script_f32_relaxed.forEach_atanh_f32_3(mIn, mOut);
+            break;
+        case TEST_RELAXED_F32_4:
+            script_f32_relaxed.forEach_atanh_f32_4(mIn, mOut);
+            break;
+        }
+    }
+
+    @Override
+    protected float[] getRefArray(float[] in, int input_size, int stride, int skip) {
+        float[] ref = new float[input_size * stride];
+        for (int i = 0; i < input_size; i++) {
+            for (int j = 0; j < stride - skip; j++) {
+                int idx= i * stride + j;
+                int idxRef = i * (stride - skip) + j;
+                double x = (double)in[idx];
+                ref[idxRef] = (float)((Math.log(1+x) - Math.log(1-x))/2);
+            }
+        }
+        return ref;
+    }
+
+    public void testAtanhF32() {
+        doF32(0xace, 5);
+    }
+
+    public void testAtanhF32_relaxed() {
+        doF32_relaxed(0xace, 128);
+    }
+
+    public void testAtanhF32_2() {
+        doF32_2(0xdae, 5);
+    }
+
+    public void testAtanhF32_2_relaxed() {
+        doF32_2_relaxed(0xdae, 128);
+    }
+
+    public void testAtanhF32_3() {
+        doF32_3(0x123, 5);
+    }
+
+    public void testAtanhF32_3_relaxed() {
+        doF32_3_relaxed(0x123, 128);
+    }
+
+    public void testAtanhF32_4() {
+        doF32_4(0x6480, 5);
+
+    }
+    public void testAtanhF32_4_relaxed() {
+        doF32_4_relaxed(0x6480, 128);
+    }
+
+}
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/CbrtTest.java b/tests/tests/renderscript/src/android/renderscript/cts/CbrtTest.java
new file mode 100644
index 0000000..603794a
--- /dev/null
+++ b/tests/tests/renderscript/src/android/renderscript/cts/CbrtTest.java
@@ -0,0 +1,110 @@
+/*
+ * Copyright (C) 2012 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 android.renderscript.cts;
+
+import android.renderscript.Allocation;
+import android.renderscript.RSRuntimeException;
+import com.android.cts.stub.R;
+
+public class CbrtTest extends RSBaseCompute {
+    private ScriptC_cbrt_f32 script_f32;
+    private ScriptC_cbrt_f32_relaxed script_f32_relaxed;
+
+    @Override
+    protected void setUp() throws Exception {
+        super.setUp();
+        script_f32 = new ScriptC_cbrt_f32(mRS);
+        script_f32_relaxed = new ScriptC_cbrt_f32_relaxed(mRS);
+    }
+
+    @Override
+    public void forEach(int testId, Allocation mIn, Allocation mOut) throws RSRuntimeException {
+        switch (testId) {
+        case TEST_F32:
+            script_f32.forEach_cbrt_f32_1(mIn, mOut);
+            break;
+        case TEST_F32_2:
+            script_f32.forEach_cbrt_f32_2(mIn, mOut);
+            break;
+        case TEST_F32_3:
+            script_f32.forEach_cbrt_f32_3(mIn, mOut);
+            break;
+        case TEST_F32_4:
+            script_f32.forEach_cbrt_f32_4(mIn, mOut);
+            break;
+
+        case TEST_RELAXED_F32:
+            script_f32_relaxed.forEach_cbrt_f32_1(mIn, mOut);
+            break;
+        case TEST_RELAXED_F32_2:
+            script_f32_relaxed.forEach_cbrt_f32_2(mIn, mOut);
+            break;
+        case TEST_RELAXED_F32_3:
+            script_f32_relaxed.forEach_cbrt_f32_3(mIn, mOut);
+            break;
+        case TEST_RELAXED_F32_4:
+            script_f32_relaxed.forEach_cbrt_f32_4(mIn, mOut);
+            break;
+        }
+    }
+
+    @Override
+    protected float[] getRefArray(float[] in, int input_size, int stride, int skip) {
+        float[] ref = new float[input_size * stride];
+        for (int i = 0; i < input_size; i++) {
+            for (int j = 0; j < stride - skip; j++) {
+                int idx= i * stride + j;
+                int idxRef = i * (stride - skip) + j;
+                ref[idxRef] = (float)(Math.cbrt((double)in[idx]));
+            }
+        }
+        return ref;
+    }
+
+    public void testCbrtF32() {
+        doF32(0xabe, 2);
+    }
+
+    public void testCbrtF32_relaxed() {
+        doF32_relaxed(0xabe, 128);
+    }
+
+    public void testCbrtF32_2() {
+        doF32_2(0x78, 2);
+    }
+
+    public void testCbrtF32_2_relaxed() {
+        doF32_2_relaxed(0x78, 128);
+    }
+
+    public void testCbrtF32_3() {
+        doF32_3(0x1e, 2);
+    }
+
+    public void testCbrtF32_3_relaxed() {
+        doF32_3_relaxed(0x1e, 128);
+    }
+
+    public void testCbrtF32_4() {
+        doF32_4(0xfe2, 2);
+
+    }
+    public void testCbrtF32_4_relaxed() {
+        doF32_4_relaxed(0xfe2, 128);
+    }
+
+}
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/CeilTest.java b/tests/tests/renderscript/src/android/renderscript/cts/CeilTest.java
new file mode 100644
index 0000000..5d64b95
--- /dev/null
+++ b/tests/tests/renderscript/src/android/renderscript/cts/CeilTest.java
@@ -0,0 +1,110 @@
+/*
+ * Copyright (C) 2012 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 android.renderscript.cts;
+
+import android.renderscript.Allocation;
+import android.renderscript.RSRuntimeException;
+import com.android.cts.stub.R;
+
+public class CeilTest extends RSBaseCompute {
+    private ScriptC_ceil_f32 script_f32;
+    private ScriptC_ceil_f32_relaxed script_f32_relaxed;
+
+    @Override
+    protected void setUp() throws Exception {
+        super.setUp();
+        script_f32 = new ScriptC_ceil_f32(mRS);
+        script_f32_relaxed = new ScriptC_ceil_f32_relaxed(mRS);
+    }
+
+    @Override
+    public void forEach(int testId, Allocation mIn, Allocation mOut) throws RSRuntimeException {
+        switch (testId) {
+        case TEST_F32:
+            script_f32.forEach_ceil_f32_1(mIn, mOut);
+            break;
+        case TEST_F32_2:
+            script_f32.forEach_ceil_f32_2(mIn, mOut);
+            break;
+        case TEST_F32_3:
+            script_f32.forEach_ceil_f32_3(mIn, mOut);
+            break;
+        case TEST_F32_4:
+            script_f32.forEach_ceil_f32_4(mIn, mOut);
+            break;
+
+        case TEST_RELAXED_F32:
+            script_f32_relaxed.forEach_ceil_f32_1(mIn, mOut);
+            break;
+        case TEST_RELAXED_F32_2:
+            script_f32_relaxed.forEach_ceil_f32_2(mIn, mOut);
+            break;
+        case TEST_RELAXED_F32_3:
+            script_f32_relaxed.forEach_ceil_f32_3(mIn, mOut);
+            break;
+        case TEST_RELAXED_F32_4:
+            script_f32_relaxed.forEach_ceil_f32_4(mIn, mOut);
+            break;
+        }
+    }
+
+    @Override
+    protected float[] getRefArray(float[] in, int input_size, int stride, int skip) {
+        float[] ref = new float[input_size * stride];
+        for (int i = 0; i < input_size; i++) {
+            for (int j = 0; j < stride - skip; j++) {
+                int idx= i * stride + j;
+                int idxRef = i * (stride - skip) + j;
+                ref[idxRef] = (float)(Math.ceil((double)in[idx]));
+            }
+        }
+        return ref;
+    }
+
+    public void testCeilF32() {
+        doF32(0x12345ace, 0);
+    }
+
+    public void testCeilF32_relaxed() {
+        doF32_relaxed(0x12345ace, 1);
+    }
+
+    public void testCeilF32_2() {
+        doF32_2(0x1ac478, 0);
+    }
+
+    public void testCeilF32_2_relaxed() {
+        doF32_2_relaxed(0x1ac478, 1);
+    }
+
+    public void testCeilF32_3() {
+        doF32_3(0xacef, 0);
+    }
+
+    public void testCeilF32_3_relaxed() {
+        doF32_3_relaxed(0xacef, 1);
+    }
+
+    public void testCeilF32_4() {
+        doF32_4(0xef12, 0);
+
+    }
+    public void testCeilF32_4_relaxed() {
+        doF32_4_relaxed(0xef12, 1);
+    }
+
+}
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/ClearObjectTest.java b/tests/tests/renderscript/src/android/renderscript/cts/ClearObjectTest.java
new file mode 100644
index 0000000..64deb33
--- /dev/null
+++ b/tests/tests/renderscript/src/android/renderscript/cts/ClearObjectTest.java
@@ -0,0 +1,143 @@
+/*
+ * Copyright (C) 2012 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 android.renderscript.cts;
+
+import android.renderscript.Allocation;
+import android.renderscript.Element;
+import android.renderscript.Type;
+import android.renderscript.Sampler;
+import android.renderscript.Script;
+import android.renderscript.RSRuntimeException;
+import com.android.cts.stub.R;
+
+public class ClearObjectTest extends RSBaseCompute {
+    int ObjectNum = 1;
+    static final int TEST_ID_ELEMENT = 0;
+    static final int TEST_ID_TYPE = 1;
+    static final int TEST_ID_ALLOCATION = 2;
+    static final int TEST_ID_SAMPLER = 3;
+    static final int TEST_ID_SCRIPT = 4;
+    private ScriptC_clear_object ms_clear;
+
+    @Override
+    protected void setUp() throws Exception {
+        super.setUp();
+        ms_clear = new ScriptC_clear_object(mRS);
+    }
+
+    @Override
+    public void forEach(int testId, Allocation mIn, Allocation mOut) throws RSRuntimeException {
+        switch (testId) {
+        case TEST_ID_ELEMENT:
+            ms_clear.forEach_clear_element(mOut);
+            break;
+        case TEST_ID_TYPE:
+            ms_clear.forEach_clear_type(mOut);
+            break;
+        case TEST_ID_ALLOCATION:
+            ms_clear.forEach_clear_allocation(mOut);
+            break;
+        case TEST_ID_SAMPLER:
+            ms_clear.forEach_clear_sampler(mOut);
+            break;
+        case TEST_ID_SCRIPT:
+            ms_clear.forEach_clear_script(mOut);
+            break;
+        }
+    }
+
+    public void testClearObjectElement() {
+        Element element = Element.BOOLEAN(mRS);
+        Allocation mIn = Allocation.createSized(mRS, Element.I32(mRS), ObjectNum);
+        Allocation mOut = Allocation.createSized(mRS, Element.I32(mRS), ObjectNum);
+        ms_clear.set_element(element);
+        try {
+            RSUtils.forEach(this, TEST_ID_ELEMENT, mIn, mOut);
+        } catch (RSRuntimeException e) {
+        }
+        int[] tmpArray = new int[ObjectNum];
+        mOut.copyTo(tmpArray);
+
+        for(int i = 0; i < ObjectNum; i++)
+            assertEquals(tmpArray[i], 1);
+    }
+
+    public void testclearObjectType() {
+        Type type= new Type.Builder(mRS, Element.I8(mRS)).setX(1).create();
+        Allocation mOut = Allocation.createSized(mRS, Element.I32(mRS), ObjectNum);
+        Allocation mIn = Allocation.createSized(mRS, Element.I32(mRS), ObjectNum);
+        ms_clear.set_type(type);
+
+        try {
+            RSUtils.forEach(this, TEST_ID_TYPE, mIn, mOut);
+        } catch (RSRuntimeException e) {
+        }
+        int[] tmpArray = new int[ObjectNum];
+        mOut.copyTo(tmpArray);
+
+        for(int i = 0; i < ObjectNum; i++)
+            assertEquals(tmpArray[i], 1);
+    }
+
+    public void testclearObjectAllocation() {
+        Allocation mOut = Allocation.createSized(mRS, Element.I32(mRS), ObjectNum);
+        Allocation mIn = Allocation.createSized(mRS, Element.I32(mRS), ObjectNum);
+        Allocation allocation = Allocation.createTyped(mRS, mIn.getType());
+        ms_clear.set_allocation(allocation);
+        try {
+            RSUtils.forEach(this, TEST_ID_ALLOCATION, mIn, mOut);
+        } catch (RSRuntimeException e) {
+        }
+        int[] tmpArray = new int[ObjectNum];
+        mOut.copyTo(tmpArray);
+
+        for(int i = 0; i < ObjectNum; i++)
+            assertEquals(tmpArray[i], 1);
+    }
+
+    public void testclearObjectSampler() {
+        Sampler sampler = new Sampler.Builder(mRS).create();
+        Allocation mOut = Allocation.createSized(mRS, Element.I32(mRS), ObjectNum);
+        Allocation mIn = Allocation.createSized(mRS, Element.I32(mRS), ObjectNum);
+        ms_clear.set_sampler(sampler);
+        try {
+            RSUtils.forEach(this, TEST_ID_SAMPLER, mIn, mOut);
+        } catch (RSRuntimeException e) {
+        }
+        int[] tmpArray = new int[ObjectNum];
+        mOut.copyTo(tmpArray);
+
+        for(int i = 0; i < ObjectNum; i++)
+            assertEquals(tmpArray[i], 1);
+    }
+
+    public void testclearObjectScript() {
+        Script script = new ScriptC_clear_object(mRS);
+        Allocation mIn = Allocation.createSized(mRS, Element.I32(mRS), ObjectNum);
+        Allocation mOut = Allocation.createSized(mRS, Element.I32(mRS), ObjectNum);
+        ms_clear.set_script(script);
+        try {
+            RSUtils.forEach(this, TEST_ID_SCRIPT, mIn, mOut);
+        } catch (RSRuntimeException e) {
+        }
+        int[] tmpArray = new int[ObjectNum];
+        mOut.copyTo(tmpArray);
+
+        for(int i = 0; i < ObjectNum; i++)
+            assertEquals(tmpArray[i], 1);
+    }
+}
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/CopysignTest.java b/tests/tests/renderscript/src/android/renderscript/cts/CopysignTest.java
new file mode 100644
index 0000000..a28caef
--- /dev/null
+++ b/tests/tests/renderscript/src/android/renderscript/cts/CopysignTest.java
@@ -0,0 +1,149 @@
+/*
+ * Copyright (C) 2012 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 android.renderscript.cts;
+
+import android.renderscript.Allocation;
+import android.renderscript.Element;
+import android.renderscript.RSRuntimeException;
+import com.android.cts.stub.R;
+
+public class CopysignTest extends RSBaseCompute {
+    private ScriptC_copysign_f32 script_f32;
+    private ScriptC_copysign_f32_relaxed script_f32_relaxed;
+    private Allocation mIn;
+
+    @Override
+    protected void setUp() throws Exception {
+        super.setUp();
+        script_f32 = new ScriptC_copysign_f32(mRS);
+        script_f32_relaxed = new ScriptC_copysign_f32_relaxed(mRS);
+    }
+
+    @Override
+    public void forEach(int testId, Allocation mIn, Allocation mOut) throws RSRuntimeException {
+        switch (testId) {
+        case TEST_F32:
+            script_f32.forEach_copysign_f32_1(mIn, mOut);
+            break;
+        case TEST_F32_2:
+            script_f32.forEach_copysign_f32_2(mIn, mOut);
+            break;
+        case TEST_F32_3:
+            script_f32.forEach_copysign_f32_3(mIn, mOut);
+            break;
+        case TEST_F32_4:
+            script_f32.forEach_copysign_f32_4(mIn, mOut);
+            break;
+
+        case TEST_RELAXED_F32:
+            script_f32_relaxed.forEach_copysign_f32_1(mIn, mOut);
+            break;
+        case TEST_RELAXED_F32_2:
+            script_f32_relaxed.forEach_copysign_f32_2(mIn, mOut);
+            break;
+        case TEST_RELAXED_F32_3:
+            script_f32_relaxed.forEach_copysign_f32_3(mIn, mOut);
+            break;
+        case TEST_RELAXED_F32_4:
+            script_f32_relaxed.forEach_copysign_f32_4(mIn, mOut);
+            break;
+        }
+    }
+
+    @Override
+    protected float[] getRefArray(float[] in, int input_size, int stride, int skip) {
+        int vec_size = stride - skip;
+        float[] ref = new float[vec_size * input_size];
+        for (int i = 0; i < input_size; i++) {
+            for (int j = 0; j < vec_size; j++) {
+                int idx = i * stride * 2 + j;
+                ref[i*vec_size + j] = Math.copySign(in[idx], in[idx + stride]);
+            }
+        }
+        return ref;
+    }
+
+    @Override
+    protected Allocation setInAlloc(Element e) {
+        return mIn;
+    }
+
+    @Override
+    protected float[] makeInArray(int size) {
+        return new float[size*2];
+    }
+
+    /**
+     * Tests copysign(float, float).
+     */
+    public void testCopysignF32() {
+        ScriptField_copysign_f32_input in = new ScriptField_copysign_f32_input(mRS, INPUTSIZE);
+        mIn = in.getAllocation();
+        doF32(0x12ac5678, 0);
+    }
+
+    public void testCopysignF32_relaxed() {
+        ScriptField_copysign_f32_input in = new ScriptField_copysign_f32_input(mRS, INPUTSIZE);
+        mIn = in.getAllocation();
+        doF32_relaxed(0x12ac5678, 0);
+    }
+
+    /**
+     * Tests copysign(float2, float2).
+     */
+    public void testCopysignF32_2() {
+        ScriptField_copysign_f32_2_input in = new ScriptField_copysign_f32_2_input(mRS, INPUTSIZE);
+        mIn = in.getAllocation();
+        doF32_2(0x12fe5678, 0);
+    }
+
+    public void testCopysignF32_2_relaxed() {
+        ScriptField_copysign_f32_2_input in = new ScriptField_copysign_f32_2_input(mRS, INPUTSIZE);
+        mIn = in.getAllocation();
+        doF32_2_relaxed(0x12fe5678, 0);
+    }
+
+    /**
+     * Tests copysign(float3, float3).
+     */
+    public void testCopysignF32_3() {
+        ScriptField_copysign_f32_3_input in = new ScriptField_copysign_f32_3_input(mRS, INPUTSIZE);
+        mIn = in.getAllocation();
+        doF32_3(0x1c345678, 0);
+    }
+
+    public void testCopysignF32_3_relaxed() {
+        ScriptField_copysign_f32_3_input in = new ScriptField_copysign_f32_3_input(mRS, INPUTSIZE);
+        mIn = in.getAllocation();
+        doF32_3_relaxed(0x1c345678, 0);
+    }
+
+    /**
+     * Tests copysign(float4, float4).
+     */
+    public void testCopysignF32_4() {
+        ScriptField_copysign_f32_4_input in = new ScriptField_copysign_f32_4_input(mRS, INPUTSIZE);
+        mIn = in.getAllocation();
+        doF32_4(0x123a5f7d, 0);
+    }
+
+    public void testCopysignF32_4_relaxed() {
+        ScriptField_copysign_f32_4_input in = new ScriptField_copysign_f32_4_input(mRS, INPUTSIZE);
+        mIn = in.getAllocation();
+        doF32_4_relaxed(0x123a5f7d, 0);
+    }
+}
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/CosTest.java b/tests/tests/renderscript/src/android/renderscript/cts/CosTest.java
new file mode 100644
index 0000000..dd5db8a
--- /dev/null
+++ b/tests/tests/renderscript/src/android/renderscript/cts/CosTest.java
@@ -0,0 +1,110 @@
+/*
+ * Copyright (C) 2012 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 android.renderscript.cts;
+
+import android.renderscript.Allocation;
+import android.renderscript.RSRuntimeException;
+import com.android.cts.stub.R;
+
+public class CosTest extends RSBaseCompute {
+    private ScriptC_cos_f32 script_f32;
+    private ScriptC_cos_f32_relaxed script_f32_relaxed;
+
+    @Override
+    protected void setUp() throws Exception {
+        super.setUp();
+        script_f32 = new ScriptC_cos_f32(mRS);
+        script_f32_relaxed = new ScriptC_cos_f32_relaxed(mRS);
+    }
+
+    @Override
+    public void forEach(int testId, Allocation mIn, Allocation mOut) throws RSRuntimeException {
+        switch (testId) {
+        case TEST_F32:
+            script_f32.forEach_cos_f32_1(mIn, mOut);
+            break;
+        case TEST_F32_2:
+            script_f32.forEach_cos_f32_2(mIn, mOut);
+            break;
+        case TEST_F32_3:
+            script_f32.forEach_cos_f32_3(mIn, mOut);
+            break;
+        case TEST_F32_4:
+            script_f32.forEach_cos_f32_4(mIn, mOut);
+            break;
+
+        case TEST_RELAXED_F32:
+            script_f32_relaxed.forEach_cos_f32_1(mIn, mOut);
+            break;
+        case TEST_RELAXED_F32_2:
+            script_f32_relaxed.forEach_cos_f32_2(mIn, mOut);
+            break;
+        case TEST_RELAXED_F32_3:
+            script_f32_relaxed.forEach_cos_f32_3(mIn, mOut);
+            break;
+        case TEST_RELAXED_F32_4:
+            script_f32_relaxed.forEach_cos_f32_4(mIn, mOut);
+            break;
+        }
+    }
+
+    @Override
+    protected float[] getRefArray(float[] in, int input_size, int stride, int skip) {
+        float[] ref = new float[input_size * stride];
+        for (int i = 0; i < input_size; i++) {
+            for (int j = 0; j < stride - skip; j++) {
+                int idx= i * stride + j;
+                int idxRef = i * (stride - skip) + j;
+                ref[idxRef] = (float)(Math.cos((double)in[idx]));
+            }
+        }
+        return ref;
+    }
+
+    public void testCosF32() {
+        doF32(0xe, 4);
+    }
+
+    public void testCosF32_relaxed() {
+        doF32_relaxed(0xe, 4);
+    }
+
+    public void testCosF32_2() {
+        doF32_2(0xb, 4);
+    }
+
+    public void testCosF32_2_relaxed() {
+        doF32_2_relaxed(0xb, 4);
+    }
+
+    public void testCosF32_3() {
+        doF32_3(0x12a, 4);
+    }
+
+    public void testCosF32_3_relaxed() {
+        doF32_3_relaxed(0x12a, 4);
+    }
+
+    public void testCosF32_4() {
+        doF32_4(0x98a, 4);
+
+    }
+    public void testCosF32_4_relaxed() {
+        doF32_4_relaxed(0x98a, 4);
+    }
+
+}
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/CoshTest.java b/tests/tests/renderscript/src/android/renderscript/cts/CoshTest.java
new file mode 100644
index 0000000..9fa3603
--- /dev/null
+++ b/tests/tests/renderscript/src/android/renderscript/cts/CoshTest.java
@@ -0,0 +1,111 @@
+/*
+ * Copyright (C) 2012 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 android.renderscript.cts;
+
+import android.renderscript.Allocation;
+import com.android.cts.stub.R;
+import android.renderscript.RSRuntimeException;
+
+public class CoshTest extends RSBaseCompute {
+
+    private ScriptC_cosh_f32 script_f32;
+    private ScriptC_cosh_f32_relaxed script_f32_relaxed;
+
+    @Override
+    protected void setUp() throws Exception {
+        super.setUp();
+        script_f32 = new ScriptC_cosh_f32(mRS);
+        script_f32_relaxed = new ScriptC_cosh_f32_relaxed(mRS);
+    }
+
+    @Override
+    public void forEach(int testId, Allocation mIn, Allocation mOut) throws RSRuntimeException {
+        switch (testId) {
+        case TEST_F32:
+            script_f32.forEach_cosh_f32_1(mIn, mOut);
+            break;
+        case TEST_F32_2:
+            script_f32.forEach_cosh_f32_2(mIn, mOut);
+            break;
+        case TEST_F32_3:
+            script_f32.forEach_cosh_f32_3(mIn, mOut);
+            break;
+        case TEST_F32_4:
+            script_f32.forEach_cosh_f32_4(mIn, mOut);
+            break;
+
+        case TEST_RELAXED_F32:
+            script_f32_relaxed.forEach_cosh_f32_1(mIn, mOut);
+            break;
+        case TEST_RELAXED_F32_2:
+            script_f32_relaxed.forEach_cosh_f32_2(mIn, mOut);
+            break;
+        case TEST_RELAXED_F32_3:
+            script_f32_relaxed.forEach_cosh_f32_3(mIn, mOut);
+            break;
+        case TEST_RELAXED_F32_4:
+            script_f32_relaxed.forEach_cosh_f32_4(mIn, mOut);
+            break;
+        }
+    }
+
+    @Override
+    protected float[] getRefArray(float[] in, int input_size, int stride, int skip) {
+        float[] ref = new float[input_size * stride];
+        for (int i = 0; i < input_size; i++) {
+            for (int j = 0; j < stride - skip; j++) {
+                int idx= i * stride + j;
+                int idxRef = i * (stride - skip) + j;
+                ref[idxRef] = (float)(Math.cosh((double)in[idx]));
+            }
+        }
+        return ref;
+    }
+
+    public void testCoshF32() {
+        doF32(0xfe, 4);
+    }
+
+    public void testCoshF32_relaxed() {
+        doF32_relaxed(0xfe, 128);
+    }
+
+    public void testCoshF32_2() {
+        doF32_2(0x71, 4);
+    }
+
+    public void testCoshF32_2_relaxed() {
+        doF32_2_relaxed(0x71, 128);
+    }
+
+    public void testCoshF32_3() {
+        doF32_3(0xa, 4);
+    }
+
+    public void testCoshF32_3_relaxed() {
+        doF32_3_relaxed(0xa, 128);
+    }
+
+    public void testCoshF32_4() {
+        doF32_4(0xabe, 4);
+
+    }
+    public void testCoshF32_4_relaxed() {
+        doF32_4_relaxed(0xabe, 128);
+    }
+
+}
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/CrossTest.java b/tests/tests/renderscript/src/android/renderscript/cts/CrossTest.java
new file mode 100644
index 0000000..308f5f4
--- /dev/null
+++ b/tests/tests/renderscript/src/android/renderscript/cts/CrossTest.java
@@ -0,0 +1,117 @@
+/*
+ * Copyright (C) 2012 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 android.renderscript.cts;
+
+import com.android.cts.stub.R;
+import android.renderscript.Allocation;
+import android.renderscript.Element;
+import android.renderscript.RSRuntimeException;
+
+public class CrossTest extends RSBaseCompute {
+    private ScriptC_cross_f32 script_f32;
+    private ScriptC_cross_f32_relaxed script_f32_relaxed;
+    private Allocation mIn;
+
+    @Override
+    protected void setUp() throws Exception {
+        super.setUp();
+        script_f32 = new ScriptC_cross_f32(mRS);
+        script_f32_relaxed = new ScriptC_cross_f32_relaxed(mRS);
+    }
+
+    @Override
+    public void forEach(int testId, Allocation mIn, Allocation mOut) throws RSRuntimeException {
+        switch (testId) {
+        case TEST_F32_3:
+            script_f32.forEach_cross_f32_3(mIn, mOut);
+            break;
+        case TEST_F32_4:
+            script_f32.forEach_cross_f32_4(mIn, mOut);
+            break;
+        case TEST_RELAXED_F32_3:
+            script_f32_relaxed.forEach_cross_f32_3(mIn, mOut);
+            break;
+        case TEST_RELAXED_F32_4:
+            script_f32_relaxed.forEach_cross_f32_4(mIn, mOut);
+            break;
+        }
+
+    }
+
+    @Override
+    protected float[] getRefArray(float[] in, int input_size, int stride, int skip) {
+        float[] ref = new float[input_size * stride];
+        for (int i = 0; i < input_size; i++) {
+            int idx= i * stride * 2;
+            int idxRef = i * (stride - skip);
+            ref[idxRef + 0] = in[idx+1] * in[idx+2+stride] - in[idx+2] * in[idx+1+stride];
+            ref[idxRef + 1] = in[idx+2] * in[idx+0+stride] - in[idx+0] * in[idx+2+stride];
+            ref[idxRef + 2] = in[idx+0] * in[idx+1+stride] - in[idx+1] * in[idx+0+stride];
+            if (skip == 1)
+                ref[idxRef + 3] = 0.f;
+        }
+        return ref;
+    }
+
+    @Override
+    protected Allocation setInAlloc(Element e) {
+        return mIn;
+    }
+
+    @Override
+    protected float[] makeInArray(int size) {
+        return new float[size*2];
+    }
+
+    /**
+     * cross test for float3
+     */
+    public void testCrossF32_3() {
+        ScriptField__cross_f32_3_struct in = new ScriptField__cross_f32_3_struct(mRS, INPUTSIZE);
+        mIn = in.getAllocation();
+        doF32_3(0x12345678, 0);
+    }
+
+    /*
+    Disable until we can add an absolute error metric
+    public void testCrossF32_3_relaxed() {
+        ScriptField__cross_f32_3_struct in = new ScriptField__cross_f32_3_struct(mRS, INPUTSIZE);
+        mIn = in.getAllocation();
+        doF32_3_relaxed(0x12345678, 2);
+    }
+    */
+
+
+    /**
+     * cross test for float4
+     */
+    public void testCrossF32_4() {
+        ScriptField__cross_f32_4_struct in = new ScriptField__cross_f32_4_struct(mRS, INPUTSIZE);
+        mIn = in.getAllocation();
+        doF32_4(0x12ac5678, 0);
+    }
+
+    /*
+    Disable until we can add an absolute error metric
+    public void testCrossF32_4_relaxed() {
+        ScriptField__cross_f32_4_struct in = new ScriptField__cross_f32_4_struct(mRS, INPUTSIZE);
+        mIn = in.getAllocation();
+        doF32_4_relaxed(0x12ac5678, 2);
+    }
+    */
+
+}
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/DegreesTest.java b/tests/tests/renderscript/src/android/renderscript/cts/DegreesTest.java
new file mode 100644
index 0000000..38c4824
--- /dev/null
+++ b/tests/tests/renderscript/src/android/renderscript/cts/DegreesTest.java
@@ -0,0 +1,123 @@
+/*
+ * Copyright (C) 2012 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 android.renderscript.cts;
+
+import com.android.cts.stub.R;
+import android.renderscript.Allocation;
+import android.renderscript.RSRuntimeException;
+
+public class DegreesTest extends RSBaseCompute {
+    private ScriptC_degrees_f32 script_f32;
+    private ScriptC_degrees_f32_relaxed script_f32_relaxed;
+
+    @Override
+    protected void setUp() throws Exception {
+        super.setUp();
+        script_f32 = new ScriptC_degrees_f32(mRS);
+        script_f32_relaxed = new ScriptC_degrees_f32_relaxed(mRS);
+    }
+
+    @Override
+    public void forEach(int testId, Allocation mIn, Allocation mOut) throws RSRuntimeException {
+        switch (testId) {
+        case TEST_F32:
+            script_f32.forEach_degrees_f32_1(mIn, mOut);
+            break;
+        case TEST_F32_2:
+            script_f32.forEach_degrees_f32_2(mIn, mOut);
+            break;
+        case TEST_F32_3:
+            script_f32.forEach_degrees_f32_3(mIn, mOut);
+            break;
+        case TEST_F32_4:
+            script_f32.forEach_degrees_f32_4(mIn, mOut);
+            break;
+
+        case TEST_RELAXED_F32:
+            script_f32_relaxed.forEach_degrees_f32_1(mIn, mOut);
+            break;
+        case TEST_RELAXED_F32_2:
+            script_f32_relaxed.forEach_degrees_f32_2(mIn, mOut);
+            break;
+        case TEST_RELAXED_F32_3:
+            script_f32_relaxed.forEach_degrees_f32_3(mIn, mOut);
+            break;
+        case TEST_RELAXED_F32_4:
+            script_f32_relaxed.forEach_degrees_f32_4(mIn, mOut);
+            break;
+        }
+    }
+
+    @Override
+    protected float[] getRefArray(float[] in, int input_size, int stride, int skip) {
+        float[] ref = new float[input_size * stride];
+        for (int i = 0; i < input_size; i++) {
+            for (int j = 0; j < stride - skip; j++) {
+                int idx= i * stride + j;
+                int idxRef = i * (stride - skip) + j;
+                double val = (double)in[idx] * (180.0 / Math.PI);
+                ref[idxRef] = (float)val;
+            }
+        }
+        return ref;
+    }
+
+    /**
+     * degrees test for float
+     */
+    public void testDegreesF32() {
+        doF32(0x12345678, 3);
+    }
+
+    public void testDegreesF32_relaxed() {
+        doF32_relaxed(0x12345678, 3);
+    }
+
+    /**
+     * degrees test for float2
+     */
+    public void testDegreesF32_2() {
+        doF32_2(0x12353678, 3);
+    }
+
+    public void testDegreesF32_2_relaxed() {
+        doF32_2_relaxed(0x12353678, 3);
+    }
+
+    /**
+     * degrees test for float3
+     */
+    public void testDegreesF32_3() {
+        doF32_3(0x12312678, 3);
+    }
+
+    public void testDegreesF32_3_relaxed() {
+        doF32_3_relaxed(0x12312678, 3);
+    }
+
+    /**
+     * degrees test for float4
+     */
+    public void testDegreesF32_4() {
+        doF32_4(0x12675678, 3);
+
+    }
+    public void testDegreesF32_4_relaxed() {
+        doF32_4_relaxed(0x12675678, 3);
+    }
+
+}
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/Exp10Test.java b/tests/tests/renderscript/src/android/renderscript/cts/Exp10Test.java
new file mode 100644
index 0000000..875af18
--- /dev/null
+++ b/tests/tests/renderscript/src/android/renderscript/cts/Exp10Test.java
@@ -0,0 +1,110 @@
+/*
+ * Copyright (C) 2012 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 android.renderscript.cts;
+
+import android.renderscript.Allocation;
+import android.renderscript.RSRuntimeException;
+import com.android.cts.stub.R;
+
+public class Exp10Test extends RSBaseCompute {
+    private ScriptC_exp10_f32 script_f32;
+    private ScriptC_exp10_f32_relaxed script_f32_relaxed;
+
+    @Override
+    protected void setUp() throws Exception {
+        super.setUp();
+        script_f32 = new ScriptC_exp10_f32(mRS);
+        script_f32_relaxed = new ScriptC_exp10_f32_relaxed(mRS);
+    }
+
+    @Override
+    public void forEach(int testId, Allocation mIn, Allocation mOut) throws RSRuntimeException {
+        switch (testId) {
+        case TEST_F32:
+            script_f32.forEach_exp10_f32_1(mIn, mOut);
+            break;
+        case TEST_F32_2:
+            script_f32.forEach_exp10_f32_2(mIn, mOut);
+            break;
+        case TEST_F32_3:
+            script_f32.forEach_exp10_f32_3(mIn, mOut);
+            break;
+        case TEST_F32_4:
+            script_f32.forEach_exp10_f32_4(mIn, mOut);
+            break;
+
+        case TEST_RELAXED_F32:
+            script_f32_relaxed.forEach_exp10_f32_1(mIn, mOut);
+            break;
+        case TEST_RELAXED_F32_2:
+            script_f32_relaxed.forEach_exp10_f32_2(mIn, mOut);
+            break;
+        case TEST_RELAXED_F32_3:
+            script_f32_relaxed.forEach_exp10_f32_3(mIn, mOut);
+            break;
+        case TEST_RELAXED_F32_4:
+            script_f32_relaxed.forEach_exp10_f32_4(mIn, mOut);
+            break;
+        }
+    }
+
+    @Override
+    protected float[] getRefArray(float[] in, int input_size, int stride, int skip) {
+        float[] ref = new float[input_size * stride];
+        for (int i = 0; i < input_size; i++) {
+            for (int j = 0; j < stride - skip; j++) {
+                int idx= i * stride + j;
+                int idxRef = i * (stride - skip) + j;
+                ref[idxRef] = (float)(Math.pow(10, (double)in[idx]));
+            }
+        }
+        return ref;
+    }
+
+    public void testExp10F32() {
+        doF32(0x81, 3);
+    }
+
+    public void testExp10F32_relaxed() {
+        doF32_relaxed(0x81, 16);
+    }
+
+    public void testExp10F32_2() {
+        doF32_2(0xa42, 3);
+    }
+
+    public void testExp10F32_2_relaxed() {
+        doF32_2_relaxed(0xa42, 16);
+    }
+
+    public void testExp10F32_3() {
+        doF32_3(0xace2, 3);
+    }
+
+    public void testExp10F32_3_relaxed() {
+        doF32_3_relaxed(0xace2, 16);
+    }
+
+    public void testExp10F32_4() {
+        doF32_4(0x918, 3);
+
+    }
+    public void testExp10F32_4_relaxed() {
+        doF32_4_relaxed(0x918, 16);
+    }
+
+}
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/Exp2Test.java b/tests/tests/renderscript/src/android/renderscript/cts/Exp2Test.java
new file mode 100644
index 0000000..ac99b92
--- /dev/null
+++ b/tests/tests/renderscript/src/android/renderscript/cts/Exp2Test.java
@@ -0,0 +1,110 @@
+/*
+ * Copyright (C) 2012 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 android.renderscript.cts;
+
+import android.renderscript.Allocation;
+import android.renderscript.RSRuntimeException;
+import com.android.cts.stub.R;
+
+public class Exp2Test extends RSBaseCompute {
+    private ScriptC_exp2_f32 script_f32;
+    private ScriptC_exp2_f32_relaxed script_f32_relaxed;
+
+    @Override
+    protected void setUp() throws Exception {
+        super.setUp();
+        script_f32 = new ScriptC_exp2_f32(mRS);
+        script_f32_relaxed = new ScriptC_exp2_f32_relaxed(mRS);
+    }
+
+    @Override
+    public void forEach(int testId, Allocation mIn, Allocation mOut) throws RSRuntimeException {
+        switch (testId) {
+        case TEST_F32:
+            script_f32.forEach_exp2_f32_1(mIn, mOut);
+            break;
+        case TEST_F32_2:
+            script_f32.forEach_exp2_f32_2(mIn, mOut);
+            break;
+        case TEST_F32_3:
+            script_f32.forEach_exp2_f32_3(mIn, mOut);
+            break;
+        case TEST_F32_4:
+            script_f32.forEach_exp2_f32_4(mIn, mOut);
+            break;
+
+        case TEST_RELAXED_F32:
+            script_f32_relaxed.forEach_exp2_f32_1(mIn, mOut);
+            break;
+        case TEST_RELAXED_F32_2:
+            script_f32_relaxed.forEach_exp2_f32_2(mIn, mOut);
+            break;
+        case TEST_RELAXED_F32_3:
+            script_f32_relaxed.forEach_exp2_f32_3(mIn, mOut);
+            break;
+        case TEST_RELAXED_F32_4:
+            script_f32_relaxed.forEach_exp2_f32_4(mIn, mOut);
+            break;
+        }
+    }
+
+    @Override
+    protected float[] getRefArray(float[] in, int input_size, int stride, int skip) {
+        float[] ref = new float[input_size * stride];
+        for (int i = 0; i < input_size; i++) {
+            for (int j = 0; j < stride - skip; j++) {
+                int idx= i * stride + j;
+                int idxRef = i * (stride - skip) + j;
+                ref[idxRef] = (float)(Math.pow(2, (double)in[idx]));
+            }
+        }
+        return ref;
+    }
+
+    public void testExp2F32() {
+        doF32(0xa6, 3);
+    }
+
+    public void testExp2F32_relaxed() {
+        doF32_relaxed(0xa6, 16);
+    }
+
+    public void testExp2F32_2() {
+        doF32_2(0xab2, 3);
+    }
+
+    public void testExp2F32_2_relaxed() {
+        doF32_2_relaxed(0xab2, 16);
+    }
+
+    public void testExp2F32_3() {
+        doF32_3(0x617a, 3);
+    }
+
+    public void testExp2F32_3_relaxed() {
+        doF32_3_relaxed(0x617a, 16);
+    }
+
+    public void testExp2F32_4() {
+        doF32_4(0xabc3, 3);
+
+    }
+    public void testExp2F32_4_relaxed() {
+        doF32_4_relaxed(0xabc3, 16);
+    }
+
+}
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/ExpTest.java b/tests/tests/renderscript/src/android/renderscript/cts/ExpTest.java
new file mode 100644
index 0000000..e2f86ca
--- /dev/null
+++ b/tests/tests/renderscript/src/android/renderscript/cts/ExpTest.java
@@ -0,0 +1,110 @@
+/*
+ * Copyright (C) 2012 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 android.renderscript.cts;
+
+import android.renderscript.Allocation;
+import android.renderscript.RSRuntimeException;
+import com.android.cts.stub.R;
+
+public class ExpTest extends RSBaseCompute {
+    private ScriptC_exp_f32 script_f32;
+    private ScriptC_exp_f32_relaxed script_f32_relaxed;
+
+    @Override
+    protected void setUp() throws Exception {
+        super.setUp();
+        script_f32 = new ScriptC_exp_f32(mRS);
+        script_f32_relaxed = new ScriptC_exp_f32_relaxed(mRS);
+    }
+
+    @Override
+    public void forEach(int testId, Allocation mIn, Allocation mOut) throws RSRuntimeException {
+        switch (testId) {
+        case TEST_F32:
+            script_f32.forEach_exp_f32_1(mIn, mOut);
+            break;
+        case TEST_F32_2:
+            script_f32.forEach_exp_f32_2(mIn, mOut);
+            break;
+        case TEST_F32_3:
+            script_f32.forEach_exp_f32_3(mIn, mOut);
+            break;
+        case TEST_F32_4:
+            script_f32.forEach_exp_f32_4(mIn, mOut);
+            break;
+
+        case TEST_RELAXED_F32:
+            script_f32_relaxed.forEach_exp_f32_1(mIn, mOut);
+            break;
+        case TEST_RELAXED_F32_2:
+            script_f32_relaxed.forEach_exp_f32_2(mIn, mOut);
+            break;
+        case TEST_RELAXED_F32_3:
+            script_f32_relaxed.forEach_exp_f32_3(mIn, mOut);
+            break;
+        case TEST_RELAXED_F32_4:
+            script_f32_relaxed.forEach_exp_f32_4(mIn, mOut);
+            break;
+        }
+    }
+
+    @Override
+    protected float[] getRefArray(float[] in, int input_size, int stride, int skip) {
+        float[] ref = new float[input_size * stride];
+        for (int i = 0; i < input_size; i++) {
+            for (int j = 0; j < stride - skip; j++) {
+                int idx= i * stride + j;
+                int idxRef = i * (stride - skip) + j;
+                ref[idxRef] = (float)(Math.exp((double)in[idx]));
+            }
+        }
+        return ref;
+    }
+
+    public void testExpF32() {
+        doF32(0xa28, 3);
+    }
+
+    public void testExpF32_relaxed() {
+        doF32_relaxed(0xa28, 16);
+    }
+
+    public void testExpF32_2() {
+        doF32_2(0xfeb4, 3);
+    }
+
+    public void testExpF32_2_relaxed() {
+        doF32_2_relaxed(0xfeb4, 16);
+    }
+
+    public void testExpF32_3() {
+        doF32_3(0xab2, 3);
+    }
+
+    public void testExpF32_3_relaxed() {
+        doF32_3_relaxed(0xab2, 16);
+    }
+
+    public void testExpF32_4() {
+        doF32_4(0x7a6, 3);
+
+    }
+    public void testExpF32_4_relaxed() {
+        doF32_4_relaxed(0x7a6, 16);
+    }
+
+}
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/Expm1Test.java b/tests/tests/renderscript/src/android/renderscript/cts/Expm1Test.java
new file mode 100644
index 0000000..36b65ff
--- /dev/null
+++ b/tests/tests/renderscript/src/android/renderscript/cts/Expm1Test.java
@@ -0,0 +1,110 @@
+/*
+ * Copyright (C) 2012 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 android.renderscript.cts;
+
+import android.renderscript.Allocation;
+import android.renderscript.RSRuntimeException;
+import com.android.cts.stub.R;
+
+public class Expm1Test extends RSBaseCompute {
+    private ScriptC_expm1_f32 script_f32;
+    private ScriptC_expm1_f32_relaxed script_f32_relaxed;
+
+    @Override
+    protected void setUp() throws Exception {
+        super.setUp();
+        script_f32 = new ScriptC_expm1_f32(mRS);
+        script_f32_relaxed = new ScriptC_expm1_f32_relaxed(mRS);
+    }
+
+    @Override
+    public void forEach(int testId, Allocation mIn, Allocation mOut) throws RSRuntimeException {
+        switch (testId) {
+        case TEST_F32:
+            script_f32.forEach_expm1_f32_1(mIn, mOut);
+            break;
+        case TEST_F32_2:
+            script_f32.forEach_expm1_f32_2(mIn, mOut);
+            break;
+        case TEST_F32_3:
+            script_f32.forEach_expm1_f32_3(mIn, mOut);
+            break;
+        case TEST_F32_4:
+            script_f32.forEach_expm1_f32_4(mIn, mOut);
+            break;
+
+        case TEST_RELAXED_F32:
+            script_f32_relaxed.forEach_expm1_f32_1(mIn, mOut);
+            break;
+        case TEST_RELAXED_F32_2:
+            script_f32_relaxed.forEach_expm1_f32_2(mIn, mOut);
+            break;
+        case TEST_RELAXED_F32_3:
+            script_f32_relaxed.forEach_expm1_f32_3(mIn, mOut);
+            break;
+        case TEST_RELAXED_F32_4:
+            script_f32_relaxed.forEach_expm1_f32_4(mIn, mOut);
+            break;
+        }
+    }
+
+    @Override
+    protected float[] getRefArray(float[] in, int input_size, int stride, int skip) {
+        float[] ref = new float[input_size * stride];
+        for (int i = 0; i < input_size; i++) {
+            for (int j = 0; j < stride - skip; j++) {
+                int idx= i * stride + j;
+                int idxRef = i * (stride - skip) + j;
+                ref[idxRef] = (float)(Math.expm1((double)in[idx]));
+            }
+        }
+        return ref;
+    }
+
+    public void testExpm1F32() {
+        doF32(0xa29, 3);
+    }
+
+    public void testExpm1F32_relaxed() {
+        doF32_relaxed(0xa29, 16);
+    }
+
+    public void testExpm1F32_2() {
+        doF32_2(0x8a2, 3);
+    }
+
+    public void testExpm1F32_2_relaxed() {
+        doF32_2_relaxed(0x8a2, 16);
+    }
+
+    public void testExpm1F32_3() {
+        doF32_3(0xa7c, 3);
+    }
+
+    public void testExpm1F32_3_relaxed() {
+        doF32_3_relaxed(0xa7c, 16);
+    }
+
+    public void testExpm1F32_4() {
+        doF32_4(0x81a, 3);
+
+    }
+    public void testExpm1F32_4_relaxed() {
+        doF32_4_relaxed(0x81a, 16);
+    }
+
+}
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/FabsTest.java b/tests/tests/renderscript/src/android/renderscript/cts/FabsTest.java
new file mode 100644
index 0000000..e8739d4
--- /dev/null
+++ b/tests/tests/renderscript/src/android/renderscript/cts/FabsTest.java
@@ -0,0 +1,109 @@
+/*
+ * Copyright (C) 2012 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 android.renderscript.cts;
+
+import android.renderscript.Allocation;
+import android.renderscript.RSRuntimeException;
+import com.android.cts.stub.R;
+
+public class FabsTest extends RSBaseCompute {
+    private ScriptC_fabs_f32 script_f32;
+    private ScriptC_fabs_f32_relaxed script_f32_relaxed;
+
+    @Override
+    protected void setUp() throws Exception {
+        super.setUp();
+        script_f32 = new ScriptC_fabs_f32(mRS);
+        script_f32_relaxed = new ScriptC_fabs_f32_relaxed(mRS);
+    }
+
+    @Override
+    public void forEach(int testId, Allocation mIn, Allocation mOut) throws RSRuntimeException {
+        switch (testId) {
+        case TEST_F32:
+            script_f32.forEach_fabs_f32_1(mIn, mOut);
+            break;
+        case TEST_F32_2:
+            script_f32.forEach_fabs_f32_2(mIn, mOut);
+            break;
+        case TEST_F32_3:
+            script_f32.forEach_fabs_f32_3(mIn, mOut);
+            break;
+        case TEST_F32_4:
+            script_f32.forEach_fabs_f32_4(mIn, mOut);
+            break;
+
+        case TEST_RELAXED_F32:
+            script_f32_relaxed.forEach_fabs_f32_1(mIn, mOut);
+            break;
+        case TEST_RELAXED_F32_2:
+            script_f32_relaxed.forEach_fabs_f32_2(mIn, mOut);
+            break;
+        case TEST_RELAXED_F32_3:
+            script_f32_relaxed.forEach_fabs_f32_3(mIn, mOut);
+            break;
+        case TEST_RELAXED_F32_4:
+            script_f32_relaxed.forEach_fabs_f32_4(mIn, mOut);
+            break;
+        }
+    }
+
+    @Override
+    protected float[] getRefArray(float[] in, int input_size, int stride, int skip) {
+        float[] ref = new float[input_size * stride];
+        for (int i = 0; i < input_size; i++) {
+            for (int j = 0; j < stride - skip; j++) {
+                int idx= i * stride + j;
+                int idxRef = i * (stride - skip) + j;
+                ref[idxRef] = Math.abs(in[idx]);
+            }
+        }
+        return ref;
+    }
+
+    public void testfabsF32() {
+        doF32(0xa, 0);
+    }
+
+    public void testfabsF32_relaxed() {
+        doF32_relaxed(0xa, 0);
+    }
+
+    public void testfabsF32_2() {
+        doF32_2(0xb, 0);
+    }
+
+    public void testfabsF32_2_relaxed() {
+        doF32_2_relaxed(0xb, 0);
+    }
+
+    public void testfabsF32_3() {
+        doF32_3(0xc, 0);
+    }
+
+    public void testfabsF32_3_relaxed() {
+        doF32_3_relaxed(0xc, 0);
+    }
+
+    public void testfabsF32_4() {
+        doF32_4(0xd, 0);
+
+    }
+    public void testfabsF32_4_relaxed() {
+        doF32_4_relaxed(0xd, 0);
+    }
+
+}
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/FdimTest.java b/tests/tests/renderscript/src/android/renderscript/cts/FdimTest.java
new file mode 100644
index 0000000..144c258
--- /dev/null
+++ b/tests/tests/renderscript/src/android/renderscript/cts/FdimTest.java
@@ -0,0 +1,135 @@
+/*
+ * Copyright (C) 2012 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 android.renderscript.cts;
+
+import android.renderscript.Allocation;
+import android.renderscript.Element;
+import android.renderscript.RSRuntimeException;
+import com.android.cts.stub.R;
+
+public class FdimTest extends RSBaseCompute {
+    private ScriptC_fdim_f32 script_f32;
+    private ScriptC_fdim_f32_relaxed script_f32_relaxed;
+    private Allocation mIn;
+
+    @Override
+    protected void setUp() throws Exception {
+        super.setUp();
+        script_f32 = new ScriptC_fdim_f32(mRS);
+        script_f32_relaxed = new ScriptC_fdim_f32_relaxed(mRS);
+    }
+
+    @Override
+    public void forEach(int testId, Allocation mIn, Allocation mOut) throws RSRuntimeException {
+        switch (testId) {
+        case TEST_F32:
+            script_f32.forEach_fdim_f32_1(mIn, mOut);
+            break;
+        case TEST_F32_2:
+            script_f32.forEach_fdim_f32_2(mIn, mOut);
+            break;
+        case TEST_F32_3:
+            script_f32.forEach_fdim_f32_3(mIn, mOut);
+            break;
+        case TEST_F32_4:
+            script_f32.forEach_fdim_f32_4(mIn, mOut);
+            break;
+
+        case TEST_RELAXED_F32:
+            script_f32_relaxed.forEach_fdim_f32_1(mIn, mOut);
+            break;
+        case TEST_RELAXED_F32_2:
+            script_f32_relaxed.forEach_fdim_f32_2(mIn, mOut);
+            break;
+        case TEST_RELAXED_F32_3:
+            script_f32_relaxed.forEach_fdim_f32_3(mIn, mOut);
+            break;
+        case TEST_RELAXED_F32_4:
+            script_f32_relaxed.forEach_fdim_f32_4(mIn, mOut);
+            break;
+        }
+    }
+
+    @Override
+    protected float[] getRefArray(float[] in, int input_size, int stride, int skip) {
+        float[] ref = new float[input_size * stride];
+        for (int i = 0; i < input_size; i++) {
+            for (int j = 0; j < stride - skip; j++) {
+                int idx = i * stride * 2 + j;
+                ref[i * (stride - skip) + j] = (float)(Math.max(0.0, (double)in[idx] - (double)in[idx+stride]));
+            }
+        }
+        return ref;
+    }
+
+    @Override
+    protected Allocation setInAlloc(Element e) {
+        return mIn;
+    }
+
+    @Override
+    protected float[] makeInArray(int size) {
+        return new float[size*2];
+    }
+
+    public void testfdimF32() {
+        ScriptField_fdim_f32_input floatArray = new ScriptField_fdim_f32_input(mRS, INPUTSIZE);
+        mIn = floatArray.getAllocation();
+        doF32(0x12678, 0);
+    }
+
+    public void testfdimF32_relaxed() {
+        ScriptField_fdim_f32_input floatArray = new ScriptField_fdim_f32_input(mRS, INPUTSIZE);
+        mIn = floatArray.getAllocation();
+        doF32_relaxed(0x12678, 0);
+    }
+
+    public void testfdimF32_2() {
+        ScriptField_fdim_f32_2_input floatArray = new ScriptField_fdim_f32_2_input(mRS, INPUTSIZE);
+        mIn = floatArray.getAllocation();
+        doF32_2(0x1af45, 0);
+    }
+
+    public void testfdimF32_2_relaxed() {
+        ScriptField_fdim_f32_2_input floatArray = new ScriptField_fdim_f32_2_input(mRS, INPUTSIZE);
+        mIn = floatArray.getAllocation();
+        doF32_2_relaxed(0x1af45, 0);
+    }
+
+    public void testfdimF32_3() {
+        ScriptField_fdim_f32_3_input floatArray = new ScriptField_fdim_f32_3_input(mRS, INPUTSIZE);
+        mIn = floatArray.getAllocation();
+        doF32_3(0x1cd345, 0);
+    }
+
+    public void testfdimF32_3_relaxed() {
+        ScriptField_fdim_f32_3_input floatArray = new ScriptField_fdim_f32_3_input(mRS, INPUTSIZE);
+        mIn = floatArray.getAllocation();
+        doF32_3_relaxed(0x1cd345, 0);
+    }
+
+    public void testfdimF32_4() {
+        ScriptField_fdim_f32_4_input floatArray = new ScriptField_fdim_f32_4_input(mRS, INPUTSIZE);
+        mIn = floatArray.getAllocation();
+        doF32_4(0x1ca45, 0);
+    }
+
+    public void testfdimF32_4_relaxed() {
+        ScriptField_fdim_f32_4_input floatArray = new ScriptField_fdim_f32_4_input(mRS, INPUTSIZE);
+        mIn = floatArray.getAllocation();
+        doF32_4_relaxed(0x1ca45, 0);
+    }
+}
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/FloorTest.java b/tests/tests/renderscript/src/android/renderscript/cts/FloorTest.java
new file mode 100644
index 0000000..e7494e6
--- /dev/null
+++ b/tests/tests/renderscript/src/android/renderscript/cts/FloorTest.java
@@ -0,0 +1,109 @@
+/*
+ * Copyright (C) 2012 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 android.renderscript.cts;
+
+import android.renderscript.Allocation;
+import android.renderscript.RSRuntimeException;
+import com.android.cts.stub.R;
+
+public class FloorTest extends RSBaseCompute {
+    private ScriptC_floor_f32 script_f32;
+    private ScriptC_floor_f32_relaxed script_f32_relaxed;
+
+    @Override
+    protected void setUp() throws Exception {
+        super.setUp();
+        script_f32 = new ScriptC_floor_f32(mRS);
+        script_f32_relaxed = new ScriptC_floor_f32_relaxed(mRS);
+    }
+
+    @Override
+    public void forEach(int testId, Allocation mIn, Allocation mOut) throws RSRuntimeException {
+        switch (testId) {
+        case TEST_F32:
+            script_f32.forEach_floor_f32_1(mIn, mOut);
+            break;
+        case TEST_F32_2:
+            script_f32.forEach_floor_f32_2(mIn, mOut);
+            break;
+        case TEST_F32_3:
+            script_f32.forEach_floor_f32_3(mIn, mOut);
+            break;
+        case TEST_F32_4:
+            script_f32.forEach_floor_f32_4(mIn, mOut);
+            break;
+
+        case TEST_RELAXED_F32:
+            script_f32_relaxed.forEach_floor_f32_1(mIn, mOut);
+            break;
+        case TEST_RELAXED_F32_2:
+            script_f32_relaxed.forEach_floor_f32_2(mIn, mOut);
+            break;
+        case TEST_RELAXED_F32_3:
+            script_f32_relaxed.forEach_floor_f32_3(mIn, mOut);
+            break;
+        case TEST_RELAXED_F32_4:
+            script_f32_relaxed.forEach_floor_f32_4(mIn, mOut);
+            break;
+        }
+    }
+
+    @Override
+    protected float[] getRefArray(float[] in, int input_size, int stride, int skip) {
+        float[] ref = new float[input_size * stride];
+        for (int i = 0; i < input_size; i++) {
+            for (int j = 0; j < stride - skip; j++) {
+                int idx= i * stride + j;
+                int idxRef = i * (stride - skip) + j;
+                ref[idxRef] = (float)(Math.floor((double)in[idx]));
+            }
+        }
+        return ref;
+    }
+
+    public void testfloorF32() {
+        doF32(0xa, 0);
+    }
+
+    public void testfloorF32_relaxed() {
+        doF32_relaxed(0xa, 1);
+    }
+
+    public void testfloorF32_2() {
+        doF32_2(0xb, 0);
+    }
+
+    public void testfloorF32_2_relaxed() {
+        doF32_2_relaxed(0xb, 1);
+    }
+
+    public void testfloorF32_3() {
+        doF32_3(0xef1, 0);
+    }
+
+    public void testfloorF32_3_relaxed() {
+        doF32_3_relaxed(0xef1, 1);
+    }
+
+    public void testfloorF32_4() {
+        doF32_4(0xefa12, 0);
+
+    }
+    public void testfloorF32_4_relaxed() {
+        doF32_4_relaxed(0xefa12, 1);
+    }
+
+}
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/FmaTest.java b/tests/tests/renderscript/src/android/renderscript/cts/FmaTest.java
new file mode 100644
index 0000000..40fac7e
--- /dev/null
+++ b/tests/tests/renderscript/src/android/renderscript/cts/FmaTest.java
@@ -0,0 +1,136 @@
+/*
+ * Copyright (C) 2012 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 android.renderscript.cts;
+
+import android.renderscript.Allocation;
+import android.renderscript.Element;
+import android.renderscript.RSRuntimeException;
+import com.android.cts.stub.R;
+
+public class FmaTest extends RSBaseCompute {
+    private ScriptC_fma_f32 script_f32;
+    private ScriptC_fma_f32_relaxed script_f32_relaxed;
+    private Allocation mIn;
+
+    @Override
+    protected void setUp() throws Exception {
+        super.setUp();
+        script_f32 = new ScriptC_fma_f32(mRS);
+        script_f32_relaxed = new ScriptC_fma_f32_relaxed(mRS);
+    }
+
+    @Override
+    public void forEach(int testId, Allocation mIn, Allocation mOut) throws RSRuntimeException {
+        switch (testId) {
+        case TEST_F32:
+            script_f32.forEach_fma_f32_1(mIn, mOut);
+            break;
+        case TEST_F32_2:
+            script_f32.forEach_fma_f32_2(mIn, mOut);
+            break;
+        case TEST_F32_3:
+            script_f32.forEach_fma_f32_3(mIn, mOut);
+            break;
+        case TEST_F32_4:
+            script_f32.forEach_fma_f32_4(mIn, mOut);
+            break;
+
+        case TEST_RELAXED_F32:
+            script_f32_relaxed.forEach_fma_f32_1(mIn, mOut);
+            break;
+        case TEST_RELAXED_F32_2:
+            script_f32_relaxed.forEach_fma_f32_2(mIn, mOut);
+            break;
+        case TEST_RELAXED_F32_3:
+            script_f32_relaxed.forEach_fma_f32_3(mIn, mOut);
+            break;
+        case TEST_RELAXED_F32_4:
+            script_f32_relaxed.forEach_fma_f32_4(mIn, mOut);
+            break;
+        }
+    }
+
+    @Override
+    protected float[] getRefArray(float[] in, int input_size, int stride, int skip) {
+        float[] ref = new float[input_size * stride];
+        for (int i = 0; i < input_size; i++) {
+            for (int j = 0; j < stride - skip; j++) {
+                int idx = i * stride * 3 + j;
+                ref[i * (stride - skip) + j] = (float)((double)in[idx] * (double)in[idx+stride] + (double)in[idx+stride*2]);
+            }
+        }
+        return ref;
+    }
+
+    @Override
+    protected Allocation setInAlloc(Element e) {
+        return mIn;
+    }
+
+    @Override
+    protected float[] makeInArray(int size) {
+        return new float[size*3];
+    }
+
+    public void testFmaF32() {
+        ScriptField_Floats floatArray = new ScriptField_Floats(mRS, INPUTSIZE);
+        mIn = floatArray.getAllocation();
+        doF32(0xea1, 0);
+    }
+
+    public void testFmaF32_relaxed() {
+        ScriptField_Floats floatArray = new ScriptField_Floats(mRS, INPUTSIZE);
+        mIn = floatArray.getAllocation();
+        doF32_relaxed(0xea1, 0);
+    }
+
+    public void testFmaF32_2() {
+        ScriptField_Floats2 floatArray = new ScriptField_Floats2(mRS, INPUTSIZE);
+        mIn = floatArray.getAllocation();
+        doF32_2(0x12a, 0);
+    }
+
+    public void testFmaF32_2_relaxed() {
+        ScriptField_Floats2 floatArray = new ScriptField_Floats2(mRS, INPUTSIZE);
+        mIn = floatArray.getAllocation();
+        doF32_2_relaxed(0x12a, 0);
+    }
+
+    public void testFmaF32_3() {
+        ScriptField_Floats3 floatArray = new ScriptField_Floats3(mRS, INPUTSIZE);
+        mIn = floatArray.getAllocation();
+        doF32_3(0xfae, 0);
+    }
+
+    public void testFmaF32_3_relaxed() {
+        ScriptField_Floats3 floatArray = new ScriptField_Floats3(mRS, INPUTSIZE);
+        mIn = floatArray.getAllocation();
+        doF32_3_relaxed(0xfae, 0);
+    }
+
+    public void testFmaF32_4() {
+        ScriptField_Floats4 floatArray = new ScriptField_Floats4(mRS, INPUTSIZE);
+        mIn = floatArray.getAllocation();
+        doF32_4(0x87a, 0);
+    }
+
+    public void testFmaF32_4_relaxed() {
+        ScriptField_Floats4 floatArray = new ScriptField_Floats4(mRS, INPUTSIZE);
+        mIn = floatArray.getAllocation();
+        doF32_4_relaxed(0x87a, 0);
+    }
+}
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/FmaxTest.java b/tests/tests/renderscript/src/android/renderscript/cts/FmaxTest.java
new file mode 100644
index 0000000..99f2b42
--- /dev/null
+++ b/tests/tests/renderscript/src/android/renderscript/cts/FmaxTest.java
@@ -0,0 +1,135 @@
+/*
+ * Copyright (C) 2012 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 android.renderscript.cts;
+
+import android.renderscript.Allocation;
+import android.renderscript.Element;
+import android.renderscript.RSRuntimeException;
+import com.android.cts.stub.R;
+
+public class FmaxTest extends RSBaseCompute {
+    private ScriptC_fmax_f32 script_f32;
+    private ScriptC_fmax_f32_relaxed script_f32_relaxed;
+    private Allocation mIn;
+
+    @Override
+    protected void setUp() throws Exception {
+        super.setUp();
+        script_f32 = new ScriptC_fmax_f32(mRS);
+        script_f32_relaxed = new ScriptC_fmax_f32_relaxed(mRS);
+    }
+
+    @Override
+    public void forEach(int testId, Allocation max, Allocation mOut) throws RSRuntimeException {
+        switch (testId) {
+        case TEST_F32:
+            script_f32.forEach_fmax_f32_1(mIn, mOut);
+            break;
+        case TEST_F32_2:
+            script_f32.forEach_fmax_f32_2(mIn, mOut);
+            break;
+        case TEST_F32_3:
+            script_f32.forEach_fmax_f32_3(mIn, mOut);
+            break;
+        case TEST_F32_4:
+            script_f32.forEach_fmax_f32_4(mIn, mOut);
+            break;
+
+        case TEST_RELAXED_F32:
+            script_f32_relaxed.forEach_fmax_f32_1(mIn, mOut);
+            break;
+        case TEST_RELAXED_F32_2:
+            script_f32_relaxed.forEach_fmax_f32_2(mIn, mOut);
+            break;
+        case TEST_RELAXED_F32_3:
+            script_f32_relaxed.forEach_fmax_f32_3(mIn, mOut);
+            break;
+        case TEST_RELAXED_F32_4:
+            script_f32_relaxed.forEach_fmax_f32_4(mIn, mOut);
+            break;
+        }
+    }
+
+    @Override
+    protected float[] getRefArray(float[] in, int input_size, int stride, int skip) {
+        float[] ref = new float[input_size * stride];
+        for (int i = 0; i < input_size; i++) {
+            for (int j = 0; j < stride - skip; j++) {
+                int idx = i * stride * 2 + j;
+                ref[i * (stride - skip) + j] = Math.max(in[idx], in[idx+stride]);
+            }
+        }
+        return ref;
+    }
+
+    @Override
+    protected Allocation setInAlloc(Element e) {
+        return mIn;
+    }
+
+    @Override
+    protected float[] makeInArray(int size) {
+        return new float[size*2];
+    }
+
+    public void testfmaxF32() {
+        ScriptField_fmax_f32_in in = new ScriptField_fmax_f32_in(mRS, INPUTSIZE);
+        mIn = in.getAllocation();
+        doF32(0x12678, 0);
+    }
+
+    public void testfmaxF32_relaxed() {
+        ScriptField_fmax_f32_in in = new ScriptField_fmax_f32_in(mRS, INPUTSIZE);
+        mIn = in.getAllocation();
+        doF32_relaxed(0x12678, 0);
+    }
+
+    public void testfmaxF32_2() {
+        ScriptField_fmax_f32_2_in in = new ScriptField_fmax_f32_2_in(mRS, INPUTSIZE);
+        mIn = in.getAllocation();
+        doF32_2(0x12ace, 0);
+    }
+
+    public void testfmaxF32_2_relaxed() {
+        ScriptField_fmax_f32_2_in in = new ScriptField_fmax_f32_2_in(mRS, INPUTSIZE);
+        mIn = in.getAllocation();
+        doF32_2_relaxed(0x12ace, 0);
+    }
+
+    public void testfmaxF32_3() {
+        ScriptField_fmax_f32_3_in in = new ScriptField_fmax_f32_3_in(mRS, INPUTSIZE);
+        mIn = in.getAllocation();
+        doF32_3(0x12e8, 0);
+    }
+
+    public void testfmaxF32_3_relaxed() {
+        ScriptField_fmax_f32_3_in in = new ScriptField_fmax_f32_3_in(mRS, INPUTSIZE);
+        mIn = in.getAllocation();
+        doF32_3_relaxed(0x12e8, 0);
+    }
+
+    public void testfmaxF32_4() {
+        ScriptField_fmax_f32_4_in in = new ScriptField_fmax_f32_4_in(mRS, INPUTSIZE);
+        mIn = in.getAllocation();
+        doF32_4(0xeac, 0);
+    }
+
+    public void testfmaxF32_4_relaxed() {
+        ScriptField_fmax_f32_4_in in = new ScriptField_fmax_f32_4_in(mRS, INPUTSIZE);
+        mIn = in.getAllocation();
+        doF32_4_relaxed(0xeac, 0);
+    }
+}
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/FminTest.java b/tests/tests/renderscript/src/android/renderscript/cts/FminTest.java
new file mode 100644
index 0000000..b43b828
--- /dev/null
+++ b/tests/tests/renderscript/src/android/renderscript/cts/FminTest.java
@@ -0,0 +1,135 @@
+/*
+ * Copyright (C) 2012 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 android.renderscript.cts;
+
+import android.renderscript.Allocation;
+import android.renderscript.Element;
+import android.renderscript.RSRuntimeException;
+import com.android.cts.stub.R;
+
+public class FminTest extends RSBaseCompute {
+    private ScriptC_fmin_f32 script_f32;
+    private ScriptC_fmin_f32_relaxed script_f32_relaxed;
+    private Allocation mIn;
+
+    @Override
+    protected void setUp() throws Exception {
+        super.setUp();
+        script_f32 = new ScriptC_fmin_f32(mRS);
+        script_f32_relaxed = new ScriptC_fmin_f32_relaxed(mRS);
+    }
+
+    @Override
+    public void forEach(int testId, Allocation mIn, Allocation mOut) throws RSRuntimeException {
+        switch (testId) {
+        case TEST_F32:
+            script_f32.forEach_fmin_f32_1(mIn, mOut);
+            break;
+        case TEST_F32_2:
+            script_f32.forEach_fmin_f32_2(mIn, mOut);
+            break;
+        case TEST_F32_3:
+            script_f32.forEach_fmin_f32_3(mIn, mOut);
+            break;
+        case TEST_F32_4:
+            script_f32.forEach_fmin_f32_4(mIn, mOut);
+            break;
+
+        case TEST_RELAXED_F32:
+            script_f32_relaxed.forEach_fmin_f32_1(mIn, mOut);
+            break;
+        case TEST_RELAXED_F32_2:
+            script_f32_relaxed.forEach_fmin_f32_2(mIn, mOut);
+            break;
+        case TEST_RELAXED_F32_3:
+            script_f32_relaxed.forEach_fmin_f32_3(mIn, mOut);
+            break;
+        case TEST_RELAXED_F32_4:
+            script_f32_relaxed.forEach_fmin_f32_4(mIn, mOut);
+            break;
+        }
+    }
+
+    @Override
+    protected float[] getRefArray(float[] in, int input_size, int stride, int skip) {
+        float[] ref = new float[input_size * stride];
+        for (int i = 0; i < input_size; i++) {
+            for (int j = 0; j < stride - skip; j++) {
+                int idx = i * stride * 2 + j;
+                ref[i * (stride - skip) + j] = Math.min(in[idx], in[idx+stride]);
+            }
+        }
+        return ref;
+    }
+
+    @Override
+    protected Allocation setInAlloc(Element e) {
+        return mIn;
+    }
+
+    @Override
+    protected float[] makeInArray(int size) {
+        return new float[size*2];
+    }
+
+    public void testfminF32() {
+        ScriptField_fmin_f32_in in = new ScriptField_fmin_f32_in(mRS, INPUTSIZE);
+        mIn = in.getAllocation();
+        doF32(0x12678, 0);
+    }
+
+    public void testfminF32_relaxed() {
+        ScriptField_fmin_f32_in in = new ScriptField_fmin_f32_in(mRS, INPUTSIZE);
+        mIn = in.getAllocation();
+        doF32_relaxed(0x12678, 0);
+    }
+
+    public void testfminF32_2() {
+        ScriptField_fmin_f32_2_in in = new ScriptField_fmin_f32_2_in(mRS, INPUTSIZE);
+        mIn = in.getAllocation();
+        doF32_2(0x12ace, 0);
+    }
+
+    public void testfminF32_2_relaxed() {
+        ScriptField_fmin_f32_2_in in = new ScriptField_fmin_f32_2_in(mRS, INPUTSIZE);
+        mIn = in.getAllocation();
+        doF32_2_relaxed(0x12ace, 0);
+    }
+
+    public void testfminF32_3() {
+        ScriptField_fmin_f32_3_in in = new ScriptField_fmin_f32_3_in(mRS, INPUTSIZE);
+        mIn = in.getAllocation();
+        doF32_3(0x12e8, 0);
+    }
+
+    public void testfminF32_3_relaxed() {
+        ScriptField_fmin_f32_3_in in = new ScriptField_fmin_f32_3_in(mRS, INPUTSIZE);
+        mIn = in.getAllocation();
+        doF32_3_relaxed(0x12e8, 0);
+    }
+
+    public void testfminF32_4() {
+        ScriptField_fmin_f32_4_in in = new ScriptField_fmin_f32_4_in(mRS, INPUTSIZE);
+        mIn = in.getAllocation();
+        doF32_4(0xeac, 0);
+    }
+
+    public void testfminF32_4_relaxed() {
+        ScriptField_fmin_f32_4_in in = new ScriptField_fmin_f32_4_in(mRS, INPUTSIZE);
+        mIn = in.getAllocation();
+        doF32_4_relaxed(0xeac, 0);
+    }
+}
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/FmodTest.java b/tests/tests/renderscript/src/android/renderscript/cts/FmodTest.java
new file mode 100644
index 0000000..d0d911d
--- /dev/null
+++ b/tests/tests/renderscript/src/android/renderscript/cts/FmodTest.java
@@ -0,0 +1,148 @@
+/*
+ * Copyright (C) 2012 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 android.renderscript.cts;
+
+import android.renderscript.Allocation;
+import android.renderscript.Element;
+import android.renderscript.RSRuntimeException;
+import com.android.cts.stub.R;
+
+public class FmodTest extends RSBaseCompute {
+    private ScriptC_fmod_f32 script_f32;
+    private ScriptC_fmod_f32_relaxed script_f32_relaxed;
+    private Allocation mIn;
+
+    @Override
+    protected void setUp() throws Exception {
+        super.setUp();
+        script_f32 = new ScriptC_fmod_f32(mRS);
+        script_f32_relaxed = new ScriptC_fmod_f32_relaxed(mRS);
+    }
+
+    @Override
+    public void forEach(int testId, Allocation mIn, Allocation mOut) throws RSRuntimeException {
+        switch (testId) {
+        case TEST_F32:
+            script_f32.forEach_fmod_f32_1(mIn, mOut);
+            break;
+        case TEST_F32_2:
+            script_f32.forEach_fmod_f32_2(mIn, mOut);
+            break;
+        case TEST_F32_3:
+            script_f32.forEach_fmod_f32_3(mIn, mOut);
+            break;
+        case TEST_F32_4:
+            script_f32.forEach_fmod_f32_4(mIn, mOut);
+            break;
+
+        case TEST_RELAXED_F32:
+            script_f32_relaxed.forEach_fmod_f32_1(mIn, mOut);
+            break;
+        case TEST_RELAXED_F32_2:
+            script_f32_relaxed.forEach_fmod_f32_2(mIn, mOut);
+            break;
+        case TEST_RELAXED_F32_3:
+            script_f32_relaxed.forEach_fmod_f32_3(mIn, mOut);
+            break;
+        case TEST_RELAXED_F32_4:
+            script_f32_relaxed.forEach_fmod_f32_4(mIn, mOut);
+            break;
+        }
+    }
+
+    @Override
+    protected float[] getRefArray(float[] in, int input_size, int stride, int skip) {
+        float[] ref = new float[input_size * stride];
+        for (int i = 0; i < input_size; i++) {
+            for (int j = 0; j < stride - skip; j++) {
+                int idx = i * stride * 2 + j;
+                ref[i * (stride - skip) + j] = (float)((double)in[idx] % (double)in[idx+stride]);
+            }
+        }
+        return ref;
+    }
+
+    @Override
+    protected Allocation setInAlloc(Element e) {
+        return mIn;
+    }
+
+    @Override
+    protected float[] makeInArray(int size) {
+        return new float[size*2];
+    }
+
+    /**
+     * This method is used for testing the fmod() function with F32
+     */
+    public void testfmodF32() {
+        ScriptField_fmod_input_f32 floatArray = new ScriptField_fmod_input_f32(mRS, INPUTSIZE);
+        mIn = floatArray.getAllocation();
+        doF32(0x12345678, 0);
+    }
+
+    public void testfmodF32_relaxed() {
+        ScriptField_fmod_input_f32 floatArray = new ScriptField_fmod_input_f32(mRS, INPUTSIZE);
+        mIn = floatArray.getAllocation();
+        doF32_relaxed(0x12345678, 0);
+    }
+
+    /**
+     * This method is used for testing the fmod() function with F32_2
+     */
+    public void testfmodF32_2() {
+        ScriptField_fmod_input_f32_2 floatArray = new ScriptField_fmod_input_f32_2(mRS, INPUTSIZE);
+        mIn = floatArray.getAllocation();
+        doF32_2(0x12345, 0);
+    }
+
+    public void testfmodF32_2_relaxed() {
+        ScriptField_fmod_input_f32_2 floatArray = new ScriptField_fmod_input_f32_2(mRS, INPUTSIZE);
+        mIn = floatArray.getAllocation();
+        doF32_2_relaxed(0x12345, 0);
+    }
+
+    /**
+     * This method is used for testing the fmod() function with F32_3
+     */
+    public void testfmodF32_3() {
+        ScriptField_fmod_input_f32_3 floatArray = new ScriptField_fmod_input_f32_3(mRS, INPUTSIZE);
+        mIn = floatArray.getAllocation();
+        doF32_3(0x12345, 0);
+    }
+
+    public void testfmodF32_3_relaxed() {
+        ScriptField_fmod_input_f32_3 floatArray = new ScriptField_fmod_input_f32_3(mRS, INPUTSIZE);
+        mIn = floatArray.getAllocation();
+        doF32_3_relaxed(0x12345, 0);
+    }
+
+    /**
+     * This method is used for testing the fmod() function with F32_4
+     */
+    public void testfmodF32_4() {
+        ScriptField_fmod_input_f32_4 floatArray = new ScriptField_fmod_input_f32_4(mRS, INPUTSIZE);
+        mIn = floatArray.getAllocation();
+        doF32_4(0x12345, 0);
+    }
+
+    public void testfmodF32_4_relaxed() {
+        ScriptField_fmod_input_f32_4 floatArray = new ScriptField_fmod_input_f32_4(mRS, INPUTSIZE);
+        mIn = floatArray.getAllocation();
+        doF32_4_relaxed(0x12345, 0);
+    }
+}
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/GetAllocationTest.java b/tests/tests/renderscript/src/android/renderscript/cts/GetAllocationTest.java
new file mode 100644
index 0000000..e447224
--- /dev/null
+++ b/tests/tests/renderscript/src/android/renderscript/cts/GetAllocationTest.java
@@ -0,0 +1,54 @@
+/*
+ * Copyright (C) 2012 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 android.renderscript.cts;
+
+import android.renderscript.Allocation;
+import android.renderscript.Element;
+import android.renderscript.RSRuntimeException;
+import com.android.cts.stub.R;
+import java.util.Random;
+
+public class GetAllocationTest extends RSBaseCompute {
+
+    public void testGetAllocation () {
+        Random random = new Random(0x827492ab);
+        int[] tempArray = new int[INPUTSIZE];
+        for (int i = 0; i < INPUTSIZE; ++i) {
+            tempArray[i] = random.nextInt();
+        }
+        ScriptC_get_allocation ms =
+                new ScriptC_get_allocation(mRS, mRes, R.raw.get_allocation);
+
+        Allocation mTemp = Allocation.createSized(mRS, Element.I32(mRS), INPUTSIZE);
+        mTemp.copyFrom(tempArray);
+        Allocation mOut = Allocation.createTyped(mRS, mTemp.getType());
+
+        ms.bind_pointer(mTemp);
+        ms.set_script(ms);
+        ms.set_alloc_out(mOut);
+        ms.invoke_start();
+
+        int [] out = new int[INPUTSIZE];
+        mOut.copyTo(out);
+        for (int i = 0; i < tempArray.length; i++) {
+            assertEquals("Incorrect value @ idx = " + i + " | ",
+            tempArray[i],
+            out[i]);
+        }
+    }
+
+}
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/GetElementAt.java b/tests/tests/renderscript/src/android/renderscript/cts/GetElementAt.java
new file mode 100644
index 0000000..a9be1bc
--- /dev/null
+++ b/tests/tests/renderscript/src/android/renderscript/cts/GetElementAt.java
@@ -0,0 +1,94 @@
+/*
+ * Copyright (C) 2012 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 android.renderscript.cts;
+
+import android.renderscript.Allocation;
+import android.renderscript.Element;
+import android.renderscript.Type;
+import android.renderscript.RSRuntimeException;
+import com.android.cts.stub.R;
+import java.util.Random;
+
+public class GetElementAt extends RSBaseCompute {
+    static final int TEST_ID_X = 0;
+    static final int TEST_ID_XY = 1;
+    private Allocation mOut;
+    private Allocation gIn;
+    private int[] in;
+    private int[] out;
+    ScriptC_get_element_at_x script_x;
+    ScriptC_get_element_at_x_y script_xy;
+
+    @Override
+    public void forEach(int testId, Allocation mOut) throws RSRuntimeException {
+        switch (testId) {
+        case TEST_ID_X:
+            script_x.forEach_root(mOut);
+            break;
+        case TEST_ID_XY:
+            script_xy.forEach_root(mOut);
+            break;
+        }
+    }
+
+    private void setupArrays(int size) {
+        Random random = new Random(0x12345678);
+        in = new int[size];
+        for (int i = 0; i < size; ++i) {
+            in[i] = random.nextInt(100);
+        }
+        out = new int[size];
+    }
+
+    public void testX () {
+        setupArrays(INPUTSIZE);
+        script_x = new ScriptC_get_element_at_x(mRS, mRes, R.raw.get_element_at_x);
+        gIn = Allocation.createSized(mRS, Element.U32(mRS), INPUTSIZE);
+        gIn.copyFrom(in);
+        mOut = Allocation.createTyped(mRS, gIn.getType());
+        script_x.set_gIn(gIn);
+        try {
+            RSUtils.forEach(this, TEST_ID_X, mOut);
+        } catch (RSRuntimeException e) {
+        }
+        mOut.copyTo(out);
+        for (int k = 0; k < INPUTSIZE; ++k) {
+            assertEquals("idx = " + k, in[k], out[k]);
+        }
+    }
+
+    public void testXY () {
+        setupArrays(INPUTSIZE*INPUTSIZE);
+        script_xy = new ScriptC_get_element_at_x_y(mRS, mRes, R.raw.get_element_at_x_y);
+        Type.Builder builder = new Type.Builder(mRS, Element.U32(mRS));
+        builder.setX(INPUTSIZE);
+        builder.setY(INPUTSIZE);
+        Type type = builder.create();
+        gIn = Allocation.createTyped(mRS, type);
+        gIn.copyFrom(in);
+        mOut = Allocation.createTyped(mRS, gIn.getType());
+        script_xy.set_gIn(gIn);
+        try {
+            RSUtils.forEach(this, TEST_ID_XY, mOut);
+        } catch (RSRuntimeException e) {
+        }
+        mOut.copyTo(out);
+        for (int k = 0; k < INPUTSIZE*INPUTSIZE; ++k) {
+            assertEquals("idx = " + k, in[k], out[k]);
+        }
+    }
+}
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/HypotTest.java b/tests/tests/renderscript/src/android/renderscript/cts/HypotTest.java
new file mode 100644
index 0000000..c5ce887
--- /dev/null
+++ b/tests/tests/renderscript/src/android/renderscript/cts/HypotTest.java
@@ -0,0 +1,136 @@
+/*
+ * Copyright (C) 2012 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 android.renderscript.cts;
+
+import android.renderscript.Allocation;
+import android.renderscript.Element;
+import android.renderscript.RSRuntimeException;
+import com.android.cts.stub.R;
+
+public class HypotTest extends RSBaseCompute {
+    private ScriptC_hypot_f32 script_f32;
+    private ScriptC_hypot_f32_relaxed script_f32_relaxed;
+    private Allocation mIn;
+
+    @Override
+    protected void setUp() throws Exception {
+        super.setUp();
+        script_f32 = new ScriptC_hypot_f32(mRS);
+        script_f32_relaxed = new ScriptC_hypot_f32_relaxed(mRS);
+    }
+
+    @Override
+    public void forEach(int testId, Allocation mIn, Allocation mOut) throws RSRuntimeException {
+        switch (testId) {
+        case TEST_F32:
+            script_f32.forEach_hypot_f32_1(mIn, mOut);
+            break;
+        case TEST_F32_2:
+            script_f32.forEach_hypot_f32_2(mIn, mOut);
+            break;
+        case TEST_F32_3:
+            script_f32.forEach_hypot_f32_3(mIn, mOut);
+            break;
+        case TEST_F32_4:
+            script_f32.forEach_hypot_f32_4(mIn, mOut);
+            break;
+
+        case TEST_RELAXED_F32:
+            script_f32_relaxed.forEach_hypot_f32_1(mIn, mOut);
+            break;
+        case TEST_RELAXED_F32_2:
+            script_f32_relaxed.forEach_hypot_f32_2(mIn, mOut);
+            break;
+        case TEST_RELAXED_F32_3:
+            script_f32_relaxed.forEach_hypot_f32_3(mIn, mOut);
+            break;
+        case TEST_RELAXED_F32_4:
+            script_f32_relaxed.forEach_hypot_f32_4(mIn, mOut);
+            break;
+        }
+    }
+
+    @Override
+    protected float[] getRefArray(float[] in, int input_size, int stride, int skip) {
+        float[] ref = new float[input_size * stride];
+        for (int i = 0; i < input_size; i++) {
+            for (int j = 0; j < stride - skip; j++) {
+                int idx = i * stride * 2 + j;
+                ref[i * (stride - skip) + j] = (float)Math.hypot((double)in[idx], (double)in[idx+stride]);
+            }
+        }
+        return ref;
+    }
+
+    @Override
+    protected Allocation setInAlloc(Element e) {
+        return mIn;
+    }
+
+    @Override
+    protected float[] makeInArray(int size) {
+        return new float[size*2];
+    }
+
+    public void testHypotF32() {
+        ScriptField_hypot_f32_in in = new ScriptField_hypot_f32_in(mRS, INPUTSIZE);
+        mIn = in.getAllocation();
+        doF32(0x123678, 4);
+    }
+
+    public void testHypotF32_relaxed() {
+        ScriptField_hypot_f32_in in = new ScriptField_hypot_f32_in(mRS, INPUTSIZE);
+        mIn = in.getAllocation();
+        doF32_relaxed(0x123678, 4);
+    }
+
+    public void testHypotF32_2() {
+        ScriptField_hypot_f32_2_in in = new ScriptField_hypot_f32_2_in(mRS, INPUTSIZE);
+        mIn = in.getAllocation();
+        doF32_2(0x1234a5, 4);
+    }
+
+    public void testHypotF32_2_relaxed() {
+        ScriptField_hypot_f32_2_in in = new ScriptField_hypot_f32_2_in(mRS, INPUTSIZE);
+        mIn = in.getAllocation();
+        doF32_2_relaxed(0x1234a5, 4);
+    }
+
+    public void testHypotF32_3() {
+        ScriptField_hypot_f32_3_in in = new ScriptField_hypot_f32_3_in(mRS, INPUTSIZE);
+        mIn = in.getAllocation();
+        doF32_3(0x1af345, 4);
+    }
+
+    public void testHypotF32_3_relaxed() {
+        ScriptField_hypot_f32_3_in in = new ScriptField_hypot_f32_3_in(mRS, INPUTSIZE);
+        mIn = in.getAllocation();
+        doF32_3_relaxed(0x1af345, 4);
+    }
+
+    public void testHypotF32_4() {
+        ScriptField_hypot_f32_4_in in = new ScriptField_hypot_f32_4_in(mRS, INPUTSIZE);
+        mIn = in.getAllocation();
+        doF32_4(0x12ce45, 4);
+    }
+
+    public void testHypotF32_4_relaxed() {
+        ScriptField_hypot_f32_4_in in = new ScriptField_hypot_f32_4_in(mRS, INPUTSIZE);
+        mIn = in.getAllocation();
+        doF32_4_relaxed(0x12ce45, 4);
+    }
+}
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/InitTest.java b/tests/tests/renderscript/src/android/renderscript/cts/InitTest.java
new file mode 100644
index 0000000..ef36927
--- /dev/null
+++ b/tests/tests/renderscript/src/android/renderscript/cts/InitTest.java
@@ -0,0 +1,55 @@
+/*
+ * Copyright (C) 2012 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 android.renderscript.cts;
+
+import android.renderscript.Allocation;
+import android.renderscript.Element;
+import android.renderscript.RSRuntimeException;
+import com.android.cts.stub.R;
+
+public class InitTest extends RSBaseCompute {
+    private Allocation mIn;
+    private Allocation mOut;
+    private ScriptC_init_test script;
+
+    @Override
+    public void forEach(int testId, Allocation mIn, Allocation mOut) throws RSRuntimeException {
+        script.forEach_root(mIn, mOut);
+    }
+
+    public void testInitTest() {
+        script = new ScriptC_init_test(mRS, mRes, R.raw.init_test);
+        float[] ref = new float[INPUTSIZE];
+        float[] in = new float[INPUTSIZE];
+        float[] out = new float[INPUTSIZE];
+        mIn = Allocation.createSized(mRS, Element.F32(mRS), INPUTSIZE);
+        mOut= Allocation.createSized(mRS, Element.F32(mRS), INPUTSIZE);
+        for (int i = 0 ;i < INPUTSIZE; i++) {
+            ref[i] = 2.0f;
+            in[i] = 0;
+        }
+
+        mIn.copy1DRangeFrom(0, INPUTSIZE, in);
+
+        try {
+            RSUtils.forEach(this, 0, mIn, mOut);
+        } catch (RSRuntimeException e) {
+        }
+        mOut.copyTo(out);
+        checkArray(ref, out, INPUTSIZE, 1, 1, 0);
+    }
+}
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/IntrinsicBase.java b/tests/tests/renderscript/src/android/renderscript/cts/IntrinsicBase.java
new file mode 100644
index 0000000..7d952f6
--- /dev/null
+++ b/tests/tests/renderscript/src/android/renderscript/cts/IntrinsicBase.java
@@ -0,0 +1,126 @@
+/*
+ * Copyright (C) 2013 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 android.renderscript.cts;
+
+import android.util.Log;
+import android.renderscript.RenderScript;
+import android.renderscript.Allocation;
+import android.renderscript.Element;
+import android.renderscript.Type;
+
+public class IntrinsicBase extends RSBaseCompute {
+    protected final String TAG = "Img";
+
+    protected Allocation mAllocSrc;
+    protected Allocation mAllocRef;
+    protected Allocation mAllocDst;
+    protected ScriptC_verify mVerify;
+
+    @Override
+    protected void setUp() throws Exception {
+        super.setUp();
+        mVerify = new ScriptC_verify(mRS);
+    }
+
+    @Override
+    protected void tearDown() throws Exception {
+        if (mVerify != null) {
+            mVerify.destroy();
+            mVerify = null;
+        }
+        super.tearDown();
+    }
+
+    protected Element makeElement(Element.DataType dt, int vecSize) {
+        Element e;
+        if (vecSize > 1) {
+            e = Element.createVector(mRS, dt, vecSize);
+        } else {
+            if (dt == Element.DataType.UNSIGNED_8) {
+                e = Element.U8(mRS);
+            } else {
+                e = Element.F32(mRS);
+            }
+        }
+        return e;
+    }
+
+    protected Allocation makeAllocation(int w, int h, Element e) {
+        Type.Builder tb = new Type.Builder(mRS, e);
+        tb.setX(w);
+        tb.setY(h);
+        Type t = tb.create();
+        return Allocation.createTyped(mRS, t);
+    }
+
+    protected void makeSource(int w, int h, Element e) {
+        if (mAllocSrc != null) {
+            mAllocSrc.destroy();
+        }
+        mAllocSrc = makeAllocation(w, h, e);
+
+        java.util.Random r = new java.util.Random(100);
+
+        int vs = e.getVectorSize();
+        if (vs == 3) vs = 4;
+        if (e.getDataType() == Element.DataType.FLOAT_32) {
+            float f[] = new float[w * h * vs];
+            for (int y=0; y < h; y++) {
+                for (int x = 0; x < w; x++) {
+                    for (int v = 0; v < vs; v++) {
+                        f[(y * w + x) * vs + v] = r.nextFloat();
+                    }
+                }
+            }
+            mAllocSrc.copyFromUnchecked(f);
+        }
+
+        if (e.getDataType() == Element.DataType.UNSIGNED_8) {
+            byte f[] = new byte[w * h * vs];
+            for (int y=0; y < h; y++) {
+                for (int x = 0; x < w; x++) {
+                    for (int v = 0; v < vs; v++) {
+                        f[(y * w + x) * vs + v] = (byte)r.nextInt(256);
+                    }
+                }
+            }
+            mAllocSrc.copyFromUnchecked(f);
+        }
+    }
+
+    protected void makeBuffers(int w, int h, Element e) {
+        makeSource(w, h, e);
+
+        if (mAllocRef != null) {
+            mAllocRef.destroy();
+        }
+        if (mAllocDst != null) {
+            mAllocDst.destroy();
+        }
+        mAllocRef = Allocation.createTyped(mRS, mAllocSrc.getType());
+        mAllocDst = Allocation.createTyped(mRS, mAllocSrc.getType());
+    }
+
+
+    protected void checkError() {
+        mRS.finish();
+        mVerify.invoke_checkError();
+        waitForMessage();
+        checkForErrors();
+    }
+
+}
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/IntrinsicColorMatrix.java b/tests/tests/renderscript/src/android/renderscript/cts/IntrinsicColorMatrix.java
new file mode 100644
index 0000000..2ac7d6f
--- /dev/null
+++ b/tests/tests/renderscript/src/android/renderscript/cts/IntrinsicColorMatrix.java
@@ -0,0 +1,150 @@
+/*
+ * Copyright (C) 2013 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 android.renderscript.cts;
+
+import android.renderscript.*;
+import android.util.Log;
+
+public class IntrinsicColorMatrix extends IntrinsicBase {
+    protected ScriptIntrinsicColorMatrix mSi;
+    protected ScriptC_intrinsic_colormatrix mSr;
+
+    private void subtest(int w, int h, Matrix4f mat, Float4 add,
+                         Element.DataType dtIn, int vsIn,
+                         Element.DataType dtOut, int vsOut) {
+
+
+        if (mat == null) {
+            mat = new Matrix4f();
+        }
+
+        if (mSi == null) {
+            mSi = ScriptIntrinsicColorMatrix.create(mRS, Element.U8_4(mRS));
+            mSr = new ScriptC_intrinsic_colormatrix(mRS);
+        }
+
+        Element ein = makeElement(dtIn, vsIn);
+        Element eout = makeElement(dtOut, vsOut);
+
+
+        makeSource(w, h, ein);
+        mAllocRef = makeAllocation(w, h, eout);
+        mAllocDst = makeAllocation(w, h, eout);
+
+        mSi.setColorMatrix(mat);
+        mSi.setAdd(add);
+        mSi.forEach(mAllocSrc, mAllocDst);
+        mSr.invoke_reference(mat, add, mAllocSrc, mAllocRef);
+
+        android.util.Log.e("RSI test", "test ColorMatrix  vsin=" + vsIn + ", vsout=" + vsOut + ",  dim " + w + ", " + h);
+        mVerify.invoke_verify(mAllocRef, mAllocDst, mAllocSrc);
+        mRS.finish();
+    }
+
+
+    private void test(Element.DataType dtin, Element.DataType dtout, int subtest) {
+        Float4 add = new Float4();
+        Matrix4f mat = new Matrix4f();
+        java.util.Random r = new java.util.Random(100);
+
+        float f[] = mat.getArray();
+        for (int i=0; i < f.length; i++) {
+            f[i] = 0.f;
+        }
+
+
+        switch (subtest) {
+        case 0:
+            mVerify.set_gAllowedIntError(0);
+            mat.loadIdentity();
+            break;
+        case 1:
+            mVerify.set_gAllowedIntError(1);
+            mat.set(0, 0, 1.f);
+            mat.set(0, 1, 1.f);
+            mat.set(0, 2, 1.f);
+            break;
+        default:
+            mVerify.set_gAllowedIntError(2);
+            for (int i=0; i < f.length; i++) {
+                if (r.nextFloat() > 0.5f) {
+                    f[i] = r.nextFloat() * (subtest - 1);
+                }
+            }
+            for (int i=0; i < f.length; i++) {
+                if (r.nextFloat() > 0.5f) {
+                    add.x = r.nextFloat() * (subtest - 1);
+                }
+                if (r.nextFloat() > 0.5f) {
+                    add.y = r.nextFloat() * (subtest - 1);
+                }
+                if (r.nextFloat() > 0.5f) {
+                    add.z = r.nextFloat() * (subtest - 1);
+                }
+                if (r.nextFloat() > 0.5f) {
+                    add.w = r.nextFloat() * (subtest - 1);
+                }
+            }
+            android.util.Log.v("rs", "Mat [" + f[0] + ", " + f[4] + ", " + f[8] + ", " + f[12] + "]");
+            android.util.Log.v("rs", "    [" + f[1] + ", " + f[5] + ", " + f[9] + ", " + f[13] + "]");
+            android.util.Log.v("rs", "    [" + f[2] + ", " + f[6] + ", " + f[10] + ", " + f[14] + "]");
+            android.util.Log.v("rs", "    [" + f[3] + ", " + f[7] + ", " + f[11] + ", " + f[15] + "]");
+        }
+
+        for (int i=1; i <= 4; i++) {
+            for (int j=1; j <=4; j++) {
+                subtest(101, 101, mat, add,
+                        dtin, i,
+                        dtout, j);
+            }
+        }
+        checkError();
+    }
+
+    public void test_U8_U8_Ident() {
+        test(Element.DataType.UNSIGNED_8, Element.DataType.UNSIGNED_8, 0);
+    }
+
+    public void test_F32_F32_Ident() {
+        test(Element.DataType.FLOAT_32, Element.DataType.FLOAT_32, 0);
+    }
+
+    public void test_U8_F32_Ident() {
+        test(Element.DataType.UNSIGNED_8, Element.DataType.FLOAT_32, 0);
+    }
+
+    public void test_F32_U8_Ident() {
+        test(Element.DataType.FLOAT_32, Element.DataType.UNSIGNED_8, 0);
+    }
+
+    public void test_U8_U8_Rand() {
+        test(Element.DataType.UNSIGNED_8, Element.DataType.UNSIGNED_8, 2);
+    }
+
+    public void test_F32_F32_Rand() {
+        test(Element.DataType.FLOAT_32, Element.DataType.FLOAT_32, 10);
+    }
+
+    public void test_U8_F32_Rand() {
+        test(Element.DataType.UNSIGNED_8, Element.DataType.FLOAT_32, 10);
+    }
+
+    public void test_F32_U8_Rand() {
+        test(Element.DataType.FLOAT_32, Element.DataType.UNSIGNED_8, 10);
+    }
+
+}
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/IntrinsicConvolve3x3.java b/tests/tests/renderscript/src/android/renderscript/cts/IntrinsicConvolve3x3.java
new file mode 100644
index 0000000..12eae9a
--- /dev/null
+++ b/tests/tests/renderscript/src/android/renderscript/cts/IntrinsicConvolve3x3.java
@@ -0,0 +1,157 @@
+/*
+ * Copyright (C) 2013 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 android.renderscript.cts;
+
+import android.renderscript.*;
+import android.util.Log;
+
+public class IntrinsicConvolve3x3 extends IntrinsicBase {
+    private void testConvolve3(int w, int h, Element.DataType dt, int vecSize) {
+        float cf1[] = {0.f, 0.f, 0.f,  0.f, 1.f, 0.f,  0.f, 0.f, 0.f};
+        float cf2[] = {0.f, -1.f, 0.f,  -1.f, 5.f, -1.f,  0.f, -1.f, 0.f};
+
+
+        Element e = makeElement(dt, vecSize);
+
+        System.gc();
+        makeBuffers(w, h, e);
+
+
+        ScriptIntrinsicConvolve3x3 si = ScriptIntrinsicConvolve3x3.create(mRS, e);
+        si.setCoefficients(cf1);
+        si.setInput(mAllocSrc);
+        si.forEach(mAllocRef);
+
+        ScriptC_intrinsic_convolve3x3 sr = new ScriptC_intrinsic_convolve3x3(mRS);
+        sr.set_gCoeffs(cf1);
+        sr.set_gIn(mAllocSrc);
+        sr.set_gWidth(w);
+        sr.set_gHeight(h);
+        if (dt == Element.DataType.UNSIGNED_8) {
+            switch(vecSize) {
+            case 4:
+                sr.forEach_convolve_U4(mAllocDst);
+                break;
+            case 3:
+                sr.forEach_convolve_U3(mAllocDst);
+                break;
+            case 2:
+                sr.forEach_convolve_U2(mAllocDst);
+                break;
+            case 1:
+                sr.forEach_convolve_U1(mAllocDst);
+                break;
+            }
+        } else {
+            switch(vecSize) {
+            case 4:
+                sr.forEach_convolve_F4(mAllocDst);
+                break;
+            case 3:
+                sr.forEach_convolve_F3(mAllocDst);
+                break;
+            case 2:
+                sr.forEach_convolve_F2(mAllocDst);
+                break;
+            case 1:
+                sr.forEach_convolve_F1(mAllocDst);
+                break;
+            }
+        }
+
+        android.util.Log.e("RSI test", "test convolve U8_" + vecSize + " 1 " + w + ", " + h);
+        mVerify.invoke_verify(mAllocRef, mAllocDst, mAllocSrc);
+
+        si.setCoefficients(cf2);
+        sr.set_gCoeffs(cf2);
+        si.forEach(mAllocRef);
+        if (dt == Element.DataType.UNSIGNED_8) {
+            switch(vecSize) {
+            case 4:
+                sr.forEach_convolve_U4(mAllocDst);
+                break;
+            case 3:
+                sr.forEach_convolve_U3(mAllocDst);
+                break;
+            case 2:
+                sr.forEach_convolve_U2(mAllocDst);
+                break;
+            case 1:
+                sr.forEach_convolve_U1(mAllocDst);
+                break;
+            }
+        } else {
+            switch(vecSize) {
+            case 4:
+                sr.forEach_convolve_F4(mAllocDst);
+                break;
+            case 3:
+                sr.forEach_convolve_F3(mAllocDst);
+                break;
+            case 2:
+                sr.forEach_convolve_F2(mAllocDst);
+                break;
+            case 1:
+                sr.forEach_convolve_F1(mAllocDst);
+                break;
+            }
+        }
+        android.util.Log.e("RSI test", "test convolve U8_" + vecSize + " 2 " + w + ", " + h);
+        mVerify.invoke_verify(mAllocRef, mAllocDst, mAllocSrc);
+        mRS.finish();
+    }
+
+
+    public void test_U8_4() {
+        testConvolve3(100, 100, Element.DataType.UNSIGNED_8, 4);
+        checkError();
+    }
+    public void test_U8_3() {
+        testConvolve3(100, 100, Element.DataType.UNSIGNED_8, 3);
+        checkError();
+    }
+    public void test_U8_2() {
+        testConvolve3(100, 100, Element.DataType.UNSIGNED_8, 2);
+        checkError();
+    }
+    public void test_U8_1() {
+        testConvolve3(100, 100, Element.DataType.UNSIGNED_8, 1);
+        checkError();
+    }
+
+    public void test_F32_4() {
+        testConvolve3(100, 100, Element.DataType.FLOAT_32, 4);
+        checkError();
+    }
+
+    public void test_F32_3() {
+        testConvolve3(100, 100, Element.DataType.FLOAT_32, 3);
+        checkError();
+    }
+
+    public void test_F32_2() {
+        testConvolve3(100, 100, Element.DataType.FLOAT_32, 2);
+        checkError();
+    }
+
+    public void test_F32_1() {
+        testConvolve3(100, 100, Element.DataType.FLOAT_32, 1);
+        checkError();
+    }
+
+
+}
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/IntrinsicConvolve5x5.java b/tests/tests/renderscript/src/android/renderscript/cts/IntrinsicConvolve5x5.java
new file mode 100644
index 0000000..482db59
--- /dev/null
+++ b/tests/tests/renderscript/src/android/renderscript/cts/IntrinsicConvolve5x5.java
@@ -0,0 +1,126 @@
+/*
+ * Copyright (C) 2013 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 android.renderscript.cts;
+
+import android.renderscript.*;
+import android.util.Log;
+
+public class IntrinsicConvolve5x5 extends IntrinsicBase {
+    private void test5(ScriptC_intrinsic_convolve5x5 sr, ScriptIntrinsicConvolve5x5 si,
+                        Element e, float cf[], String name, int num, int w, int h) {
+        si.setCoefficients(cf);
+        si.setInput(mAllocSrc);
+        si.forEach(mAllocRef);
+
+        sr.set_gWidth(w);
+        sr.set_gHeight(h);
+        sr.set_gCoeffs(cf);
+        sr.set_gIn(mAllocSrc);
+        if (e.getDataType() == Element.DataType.UNSIGNED_8) {
+            switch(e.getVectorSize()) {
+            case 4:
+                sr.forEach_convolve_U4(mAllocDst);
+                break;
+            case 3:
+                sr.forEach_convolve_U3(mAllocDst);
+                break;
+            case 2:
+                sr.forEach_convolve_U2(mAllocDst);
+                break;
+            case 1:
+                sr.forEach_convolve_U1(mAllocDst);
+                break;
+            }
+        } else {
+            switch(e.getVectorSize()) {
+            case 4:
+                sr.forEach_convolve_F4(mAllocDst);
+                break;
+            case 3:
+                sr.forEach_convolve_F3(mAllocDst);
+                break;
+            case 2:
+                sr.forEach_convolve_F2(mAllocDst);
+                break;
+            case 1:
+                sr.forEach_convolve_F1(mAllocDst);
+                break;
+            }
+        }
+
+        android.util.Log.e("RSI test", name + "  " + e.getVectorSize() + " " + num + " " + w + ", " + h);
+        mVerify.invoke_verify(mAllocRef, mAllocDst, mAllocSrc);
+        mRS.finish();
+    }
+
+    private void testConvolve5(int w, int h, Element.DataType dt, int vecSize) {
+        float cf1[] = { 0.f,  0.f,  0.f,  0.f,  0.f,
+                        0.f,  0.f,  0.f,  0.f,  0.f,
+                        0.f,  0.f,  1.f,  0.f,  0.f,
+                        0.f,  0.f,  0.f,  0.f,  0.f,
+                        0.f,  0.f,  0.f,  0.f,  0.f};
+        float cf2[] = {-1.f, -1.f, -1.f, -1.f, -1.f,
+                       -1.f,  0.f,  0.f,  0.f, -1.f,
+                       -1.f,  0.f, 16.f,  0.f, -1.f,
+                       -1.f,  0.f,  0.f,  0.f, -1.f,
+                       -1.f, -1.f, -1.f, -1.f, -1.f};
+
+        Element e = makeElement(dt, vecSize);
+        makeBuffers(w, h, e);
+
+        ScriptIntrinsicConvolve5x5 si = ScriptIntrinsicConvolve5x5.create(mRS, e);
+        ScriptC_intrinsic_convolve5x5 sr = new ScriptC_intrinsic_convolve5x5(mRS);
+        test5(sr, si, e, cf1, "test convolve", 1, w, h);
+        test5(sr, si, e, cf2, "test convolve", 2, w, h);
+    }
+
+    public void test_U8_4() {
+        testConvolve5(100, 100, Element.DataType.UNSIGNED_8, 4);
+        checkError();
+    }
+    public void test_U8_3() {
+        testConvolve5(100, 100, Element.DataType.UNSIGNED_8, 3);
+        checkError();
+    }
+    public void test_U8_2() {
+        testConvolve5(100, 100, Element.DataType.UNSIGNED_8, 2);
+        checkError();
+    }
+    public void test_U8_1() {
+        testConvolve5(100, 100, Element.DataType.UNSIGNED_8, 1);
+        checkError();
+    }
+
+    public void test_F32_4() {
+        testConvolve5(100, 100, Element.DataType.FLOAT_32, 4);
+        checkError();
+    }
+    public void test_F32_3() {
+        testConvolve5(100, 100, Element.DataType.FLOAT_32, 3);
+        checkError();
+    }
+    public void test_F32_2() {
+        testConvolve5(100, 100, Element.DataType.FLOAT_32, 2);
+        checkError();
+    }
+    public void test_F32_1() {
+        testConvolve5(100, 100, Element.DataType.FLOAT_32, 1);
+        checkError();
+    }
+
+
+}
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/IntrinsicHistogram.java b/tests/tests/renderscript/src/android/renderscript/cts/IntrinsicHistogram.java
new file mode 100644
index 0000000..e970291
--- /dev/null
+++ b/tests/tests/renderscript/src/android/renderscript/cts/IntrinsicHistogram.java
@@ -0,0 +1,176 @@
+/*
+ * Copyright (C) 2013 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 android.renderscript.cts;
+
+import android.renderscript.*;
+import android.util.Log;
+
+public class IntrinsicHistogram extends IntrinsicBase {
+    private Allocation mAin;
+    private Allocation mAout;
+
+    private void createAllocations(int inVSize, int outVSize, int w, int h) {
+        Element e1;
+        Element e2;
+
+        switch (inVSize) {
+        case 4: e1 = Element.U8_4(mRS); break;
+        case 3: e1 = Element.U8_3(mRS); break;
+        case 2: e1 = Element.U8_2(mRS); break;
+        default: e1 = Element.U8(mRS); break;
+        }
+
+        switch (outVSize) {
+        case 4: e2 = Element.I32_4(mRS); break;
+        case 3: e2 = Element.I32_3(mRS); break;
+        case 2: e2 = Element.I32_2(mRS); break;
+        default: e2 = Element.I32(mRS); break;
+        }
+
+        Type.Builder tb = new Type.Builder(mRS, e1);
+        tb.setX(w).setY(h);
+
+        mAin = Allocation.createTyped(mRS, tb.create());
+        mAout = Allocation.createSized(mRS, e2, 256);
+    }
+
+    private void testNorm(int inVSize, int outVSize, int w, int h) {
+        createAllocations(inVSize, outVSize, w, h);
+
+        int invs2 = (inVSize != 3) ? inVSize : 4;
+        int outvs2 = (outVSize != 3) ? outVSize : 4;
+
+        byte i[] = new byte[w * h * invs2];
+        int res[] = new int[256 * outvs2];
+        int ref[] = new int[256 * outvs2];
+
+        java.util.Random r = new java.util.Random();
+        r.nextBytes(i);
+
+        for (int ct=0; ct < i.length; ct++) {
+            int t = i[ct];
+            if (t < 0) t = 256 + t;
+            if ((ct % invs2) < outVSize) {
+                ref[(t * outvs2) + (ct % invs2)] ++;
+            }
+        }
+
+        mAin.copyFrom(i);
+        ScriptIntrinsicHistogram hist =
+                ScriptIntrinsicHistogram.create(mRS, mAin.getType().getElement());
+        hist.setOutput(mAout);
+        hist.forEach(mAin);
+
+        mAin.copyFrom(i);
+        mAout.copyTo(res);
+        for (int ct=0; ct < res.length; ct++) {
+            assertTrue(res[ct] == ref[ct]);
+        }
+    }
+
+    public void test_norm_4_4() {
+        testNorm(4, 4, 101, 101);
+    }
+    public void test_norm_4_3() {
+        testNorm(4, 3, 101, 101);
+    }
+    public void test_norm_4_2() {
+        testNorm(4, 2, 101, 101);
+    }
+    public void test_norm_4_1() {
+        testNorm(4, 1, 101, 101);
+    }
+
+    public void test_norm_3_3() {
+        testNorm(3, 3, 101, 101);
+    }
+    public void test_norm_3_2() {
+        testNorm(3, 2, 101, 101);
+    }
+    public void test_norm_3_1() {
+        testNorm(3, 1, 101, 101);
+    }
+
+    public void test_norm_2_2() {
+        testNorm(2, 2, 101, 101);
+    }
+    public void test_norm_2_1() {
+        testNorm(2, 1, 101, 101);
+    }
+
+    public void test_norm_1_1() {
+        testNorm(1, 1, 101, 101);
+    }
+
+
+
+    private void testDot(int inVSize, int w, int h) {
+        createAllocations(inVSize, 1, w, h);
+
+        int invs2 = (inVSize != 3) ? inVSize : 4;
+
+        byte i[] = new byte[w * h * invs2];
+        int res[] = new int[256];
+        int ref[] = new int[256];
+
+        java.util.Random r = new java.util.Random();
+        r.nextBytes(i);
+
+        float dotVals[] = {0.2501f, 0.1251f, 0.06251f, 0.1251f};
+        int doti[] = new int[4];
+        for (int ct=0; ct < 4; ct++) {
+            doti[ct] = (int)((dotVals[ct] * 256.f) + 0.5f);
+        }
+
+        for (int ct=0; ct < i.length; ct+=invs2) {
+            int v = 0;
+            for (int c = 0; c < inVSize; c++) {
+                int t = i[ct + c];
+                if (t < 0) t = 256 + t;
+                v += doti[c] * t;
+            }
+            ref[(v + 0x7f) >> 8] ++;
+        }
+
+        mAin.copyFrom(i);
+        ScriptIntrinsicHistogram hist =
+                ScriptIntrinsicHistogram.create(mRS, mAin.getType().getElement());
+        hist.setOutput(mAout);
+        hist.setDotCoefficients(dotVals[0], dotVals[1], dotVals[2], dotVals[3]);
+        hist.forEach_Dot(mAin);
+
+        mAin.copyFrom(i);
+        mAout.copyTo(res);
+        for (int ct=0; ct < res.length; ct++) {
+            assertTrue(res[ct] == ref[ct]);
+        }
+    }
+
+    public void test_dot_1() {
+        testDot(1, 101, 101);
+    }
+    public void test_dot_2() {
+        testDot(2, 101, 101);
+    }
+    public void test_dot_3() {
+        testDot(3, 101, 101);
+    }
+    public void test_dot_4() {
+        testDot(4, 101, 101);
+    }
+
+}
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/IsObjectTest.java b/tests/tests/renderscript/src/android/renderscript/cts/IsObjectTest.java
new file mode 100644
index 0000000..58ae448
--- /dev/null
+++ b/tests/tests/renderscript/src/android/renderscript/cts/IsObjectTest.java
@@ -0,0 +1,168 @@
+/*
+ * Copyright (C) 2012 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 android.renderscript.cts;
+
+import android.renderscript.*;
+import android.renderscript.Allocation;
+import android.renderscript.Element;
+import android.util.Log;
+import android.view.SurfaceHolder;
+import com.android.cts.stub.R;
+
+import junit.framework.Assert;
+
+public class IsObjectTest extends RSBaseCompute {
+    int ObjectNum = 1;
+    private Allocation mIn;
+    private Allocation mOut;
+
+    Element element;
+    Type type;
+    Allocation allocation;
+    Sampler sampler;
+    Script script;
+
+    private ScriptC_is_object ms_is_object;
+
+    @Override
+    protected void setUp() throws Exception {
+        super.setUp();
+
+        element = Element.BOOLEAN(mRS);
+
+        type = new Type.Builder(mRS, Element.I8(mRS)).setX(1).create();
+        allocation = Allocation.createTyped(mRS, type);
+        sampler = new Sampler.Builder(mRS).create();
+        script = new ScriptC_is_object(mRS);
+        ms_is_object = new ScriptC_is_object(mRS);
+    }
+
+    /**
+     * is object test
+     */
+    public void testIsObjectElement() {
+        ScriptField__object_element_input filed = new ScriptField__object_element_input(
+                mRS, 1);
+        ScriptField__object_element_input.Item mItem =
+                new ScriptField__object_element_input.Item();
+        mItem.element = element;
+        filed.set(mItem, 0, true);
+
+        mIn = filed.getAllocation();
+        mOut = Allocation.createSized(mRS, Element.I32(mRS), ObjectNum);
+        try {
+            ms_is_object.forEach_is_object_element(mIn, mOut);
+        } catch (RSRuntimeException e) {
+            Log.i("compare", "rsIsObject root fail");
+        }
+        int[] tmpArray = new int[ObjectNum];
+        mOut.copyTo(tmpArray);
+
+        Assert.assertTrue("rsIsObject element test fail: " + "Expect 1;value "
+                + tmpArray[0], tmpArray[0] == 1);
+    }
+
+    public void testIsObjectType() {
+        ScriptField__object_type_input filed = new ScriptField__object_type_input(mRS, 1);
+        ScriptField__object_type_input.Item mItem = new ScriptField__object_type_input.Item();
+        mItem.type = type;
+        filed.set(mItem, 0, true);
+
+        mIn = filed.getAllocation();
+        mOut = Allocation.createSized(mRS, Element.I32(mRS), ObjectNum);
+
+        try {
+            ms_is_object.forEach_is_object_type(mIn, mOut);
+        } catch (RSRuntimeException e) {
+            Log.i("compare", "rsIsObject root fail");
+        }
+        int[] tmpArray = new int[ObjectNum];
+        mOut.copyTo(tmpArray);
+
+        Assert.assertTrue(
+                "rsIsObject type test fail: " + "Expect 1;value " + tmpArray[0],
+                tmpArray[0] == 1);
+    }
+
+    public void testIsObjectAllocation() {
+        ScriptField__object_allocation_input filed = new ScriptField__object_allocation_input(
+                mRS, 1);
+        ScriptField__object_allocation_input.Item mItem =
+                new ScriptField__object_allocation_input.Item();
+        mItem.allocation = allocation;
+        filed.set(mItem, 0, true);
+
+        mIn = filed.getAllocation();
+        mOut = Allocation.createSized(mRS, Element.I32(mRS), ObjectNum);
+
+        try {
+            ms_is_object.forEach_is_object_allocation(mIn, mOut);
+        } catch (RSRuntimeException e) {
+            Log.i("compare", "rsIsObject root fail");
+        }
+        int[] tmpArray = new int[ObjectNum];
+        mOut.copyTo(tmpArray);
+
+        Assert.assertTrue("rsIsObject allocation test fail: " + "Expect 1;value "
+                + tmpArray[0], tmpArray[0] == 1);
+    }
+
+    public void testIsObjectSampler() {
+        ScriptField__object_sampler_input filed = new ScriptField__object_sampler_input(
+                mRS, 1);
+        ScriptField__object_sampler_input.Item mItem =
+                new ScriptField__object_sampler_input.Item();
+        mItem.sampler = sampler;
+        filed.set(mItem, 0, true);
+
+        mIn = filed.getAllocation();
+        mOut = Allocation.createSized(mRS, Element.I32(mRS), ObjectNum);
+
+        try {
+            ms_is_object.forEach_is_object_sampler(mIn, mOut);
+        } catch (RSRuntimeException e) {
+            Log.i("compare", "rsIsObject root fail");
+        }
+        int[] tmpArray = new int[ObjectNum];
+        mOut.copyTo(tmpArray);
+
+        Assert.assertTrue("rsIsObject sampler test fail: " + "Expect 1;value "
+                + tmpArray[0], tmpArray[0] == 1);
+    }
+
+    public void testIsObjectScript() {
+        ScriptField__object_script_input filed = new ScriptField__object_script_input(
+                mRS, 1);
+        ScriptField__object_script_input.Item mItem = new ScriptField__object_script_input.Item();
+        mItem.script = script;
+        filed.set(mItem, 0, true);
+
+        mIn = filed.getAllocation();
+        mOut = Allocation.createSized(mRS, Element.I32(mRS), ObjectNum);
+
+        try {
+            ms_is_object.forEach_is_object_script(mIn, mOut);
+        } catch (RSRuntimeException e) {
+            Log.i("compare", "rsIsObject root fail");
+        }
+        int[] tmpArray = new int[ObjectNum];
+        mOut.copyTo(tmpArray);
+
+        Assert.assertTrue("rsIsObject script test fail: " + "Expect 1;value "
+                + tmpArray[0], tmpArray[0] == 1);
+    }
+}
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/LeakTest.java b/tests/tests/renderscript/src/android/renderscript/cts/LeakTest.java
new file mode 100644
index 0000000..b8c133a
--- /dev/null
+++ b/tests/tests/renderscript/src/android/renderscript/cts/LeakTest.java
@@ -0,0 +1,73 @@
+/*
+ * Copyright (C) 2012 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 android.renderscript.cts;
+
+import android.app.ActivityManager;
+import android.renderscript.Allocation;
+import android.renderscript.Element;
+import android.renderscript.Type;
+import android.util.Log;
+import android.content.Context;
+
+/*
+// -target-api 11
+
+#pragma version(1)
+#pragma rs java_package_name(android.renderscript.cts)
+
+rs_allocation a;
+
+void print() {
+    rsDebug("unused", rsGetElementAt_int(a, 0, 0));
+}
+*/
+
+/**
+ * Test for memory leaks due to missing object slot information.
+ *
+ * The code to generate leak.bc is in the previous comment block.
+ * Note that you need to modify llvm-rs-cc to skip emitting the
+ * .rs.dtor() function, since it will also do the proper cleanup
+ * (but not trigger the original bug). Old HC code can trigger this
+ * bug, since it may have been compiled without .rs.dtor() support.
+ */
+public class LeakTest extends RSBaseCompute {
+    private static final String TAG = "LeakTest";
+
+    public void testForLeaks() {
+        ActivityManager am = (ActivityManager) getContext().getSystemService("activity");
+        int mc = am.getLargeMemoryClass() / 32;
+        if (mc < 1) {
+            mc = 1;
+        }
+        int x = mc * 1024 * 1024;
+
+        for (int i = 0; i < 100; i++) {
+            Log.w(TAG, "Leak test iteration " + i);
+            ScriptC_leak leak = new ScriptC_leak(mRS);
+            Type t = new Type.Builder(mRS, Element.I32(mRS)).setX(x).create();
+            Allocation A = Allocation.createTyped(mRS, t);
+            leak.set_a(A);
+            A = null;
+            //System.gc();
+            leak.destroy();
+            mRS.finish();
+        }
+        mRS.finish();
+        checkForErrors();
+    }
+}
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/Log10Test.java b/tests/tests/renderscript/src/android/renderscript/cts/Log10Test.java
new file mode 100644
index 0000000..bc571a3
--- /dev/null
+++ b/tests/tests/renderscript/src/android/renderscript/cts/Log10Test.java
@@ -0,0 +1,110 @@
+/*
+ * Copyright (C) 2012 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 android.renderscript.cts;
+
+import com.android.cts.stub.R;
+import android.renderscript.Allocation;
+import android.renderscript.RSRuntimeException;
+
+public class Log10Test extends RSBaseCompute {
+    private ScriptC_log10_f32 script_f32;
+    private ScriptC_log10_f32_relaxed script_f32_relaxed;
+
+    @Override
+    protected void setUp() throws Exception {
+        super.setUp();
+        script_f32 = new ScriptC_log10_f32(mRS);
+        script_f32_relaxed = new ScriptC_log10_f32_relaxed(mRS);
+    }
+
+    @Override
+    public void forEach(int testId, Allocation mIn, Allocation mOut) throws RSRuntimeException {
+        switch (testId) {
+        case TEST_F32:
+            script_f32.forEach_log10_f32_1(mIn, mOut);
+            break;
+        case TEST_F32_2:
+            script_f32.forEach_log10_f32_2(mIn, mOut);
+            break;
+        case TEST_F32_3:
+            script_f32.forEach_log10_f32_3(mIn, mOut);
+            break;
+        case TEST_F32_4:
+            script_f32.forEach_log10_f32_4(mIn, mOut);
+            break;
+
+        case TEST_RELAXED_F32:
+            script_f32_relaxed.forEach_log10_f32_1(mIn, mOut);
+            break;
+        case TEST_RELAXED_F32_2:
+            script_f32_relaxed.forEach_log10_f32_2(mIn, mOut);
+            break;
+        case TEST_RELAXED_F32_3:
+            script_f32_relaxed.forEach_log10_f32_3(mIn, mOut);
+            break;
+        case TEST_RELAXED_F32_4:
+            script_f32_relaxed.forEach_log10_f32_4(mIn, mOut);
+            break;
+        }
+    }
+
+    @Override
+    protected float[] getRefArray(float[] in, int input_size, int stride, int skip) {
+        float[] ref = new float[input_size * stride];
+        for (int i = 0; i < input_size; i++) {
+            for (int j = 0; j < stride - skip; j++) {
+                int idx= i * stride + j;
+                int idxRef = i * (stride - skip) + j;
+                ref[idxRef] = (float)(Math.log10((double)in[idx]));
+            }
+        }
+        return ref;
+    }
+
+    public void testLog10F32() {
+        doF32(0x13, 3);
+    }
+
+    public void testLog10F32_relaxed() {
+        doF32_relaxed(0x13, 16);
+    }
+
+    public void testLog10F32_2() {
+        doF32_2(0xf, 3);
+    }
+
+    public void testLog10F32_2_relaxed() {
+        doF32_2_relaxed(0xf, 16);
+    }
+
+    public void testLog10F32_3() {
+        doF32_3(0xa, 3);
+    }
+
+    public void testLog10F32_3_relaxed() {
+        doF32_3_relaxed(0xa, 16);
+    }
+
+    public void testLog10F32_4() {
+        doF32_4(0xf3, 3);
+
+    }
+    public void testLog10F32_4_relaxed() {
+        doF32_4_relaxed(0xf3, 16);
+    }
+
+}
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/Log1PTest.java b/tests/tests/renderscript/src/android/renderscript/cts/Log1PTest.java
new file mode 100644
index 0000000..a4daf61
--- /dev/null
+++ b/tests/tests/renderscript/src/android/renderscript/cts/Log1PTest.java
@@ -0,0 +1,110 @@
+/*
+ * Copyright (C) 2012 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 android.renderscript.cts;
+
+import com.android.cts.stub.R;
+import android.renderscript.Allocation;
+import android.renderscript.RSRuntimeException;
+
+public class Log1PTest extends RSBaseCompute {
+    private ScriptC_log1p_f32 script_f32;
+    private ScriptC_log1p_f32_relaxed script_f32_relaxed;
+
+    @Override
+    protected void setUp() throws Exception {
+        super.setUp();
+        script_f32 = new ScriptC_log1p_f32(mRS);
+        script_f32_relaxed = new ScriptC_log1p_f32_relaxed(mRS);
+    }
+
+    @Override
+    public void forEach(int testId, Allocation mIn, Allocation mOut) throws RSRuntimeException {
+        switch (testId) {
+        case TEST_F32:
+            script_f32.forEach_log1p_f32_1(mIn, mOut);
+            break;
+        case TEST_F32_2:
+            script_f32.forEach_log1p_f32_2(mIn, mOut);
+            break;
+        case TEST_F32_3:
+            script_f32.forEach_log1p_f32_3(mIn, mOut);
+            break;
+        case TEST_F32_4:
+            script_f32.forEach_log1p_f32_4(mIn, mOut);
+            break;
+
+        case TEST_RELAXED_F32:
+            script_f32_relaxed.forEach_log1p_f32_1(mIn, mOut);
+            break;
+        case TEST_RELAXED_F32_2:
+            script_f32_relaxed.forEach_log1p_f32_2(mIn, mOut);
+            break;
+        case TEST_RELAXED_F32_3:
+            script_f32_relaxed.forEach_log1p_f32_3(mIn, mOut);
+            break;
+        case TEST_RELAXED_F32_4:
+            script_f32_relaxed.forEach_log1p_f32_4(mIn, mOut);
+            break;
+        }
+    }
+
+    @Override
+    protected float[] getRefArray(float[] in, int input_size, int stride, int skip) {
+        float[] ref = new float[input_size * stride];
+        for (int i = 0; i < input_size; i++) {
+            for (int j = 0; j < stride - skip; j++) {
+                int idx= i * stride + j;
+                int idxRef = i * (stride - skip) + j;
+                ref[idxRef] = (float)(Math.log1p((double)in[idx]));
+            }
+        }
+        return ref;
+    }
+
+    public void testLog1PF32() {
+        doF32(0xab, 2);
+    }
+
+    public void testLog1PF32_relaxed() {
+        doF32_relaxed(0xab, 16);
+    }
+
+    public void testLog1PF32_2() {
+        doF32_2(0x12, 2);
+    }
+
+    public void testLog1PF32_2_relaxed() {
+        doF32_2_relaxed(0x12, 16);
+    }
+
+    public void testLog1PF32_3() {
+        doF32_3(0xa1, 2);
+    }
+
+    public void testLog1PF32_3_relaxed() {
+        doF32_3_relaxed(0xa1, 16);
+    }
+
+    public void testLog1PF32_4() {
+        doF32_4(0xbae, 2);
+
+    }
+    public void testLog1PF32_4_relaxed() {
+        doF32_4_relaxed(0xbae, 16);
+    }
+
+}
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/Log2Test.java b/tests/tests/renderscript/src/android/renderscript/cts/Log2Test.java
new file mode 100644
index 0000000..dd13d8d
--- /dev/null
+++ b/tests/tests/renderscript/src/android/renderscript/cts/Log2Test.java
@@ -0,0 +1,110 @@
+/*
+ * Copyright (C) 2012 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 android.renderscript.cts;
+
+import com.android.cts.stub.R;
+import android.renderscript.Allocation;
+import android.renderscript.RSRuntimeException;
+
+public class Log2Test extends RSBaseCompute {
+    private ScriptC_log2_f32 script_f32;
+    private ScriptC_log2_f32_relaxed script_f32_relaxed;
+
+    @Override
+    protected void setUp() throws Exception {
+        super.setUp();
+        script_f32 = new ScriptC_log2_f32(mRS);
+        script_f32_relaxed = new ScriptC_log2_f32_relaxed(mRS);
+    }
+
+    @Override
+    public void forEach(int testId, Allocation mIn, Allocation mOut) throws RSRuntimeException {
+        switch (testId) {
+        case TEST_F32:
+            script_f32.forEach_log2_f32_1(mIn, mOut);
+            break;
+        case TEST_F32_2:
+            script_f32.forEach_log2_f32_2(mIn, mOut);
+            break;
+        case TEST_F32_3:
+            script_f32.forEach_log2_f32_3(mIn, mOut);
+            break;
+        case TEST_F32_4:
+            script_f32.forEach_log2_f32_4(mIn, mOut);
+            break;
+
+        case TEST_RELAXED_F32:
+            script_f32_relaxed.forEach_log2_f32_1(mIn, mOut);
+            break;
+        case TEST_RELAXED_F32_2:
+            script_f32_relaxed.forEach_log2_f32_2(mIn, mOut);
+            break;
+        case TEST_RELAXED_F32_3:
+            script_f32_relaxed.forEach_log2_f32_3(mIn, mOut);
+            break;
+        case TEST_RELAXED_F32_4:
+            script_f32_relaxed.forEach_log2_f32_4(mIn, mOut);
+            break;
+        }
+    }
+
+    @Override
+    protected float[] getRefArray(float[] in, int input_size, int stride, int skip) {
+        float[] ref = new float[input_size * stride];
+        for (int i = 0; i < input_size; i++) {
+            for (int j = 0; j < stride - skip; j++) {
+                int idx= i * stride + j;
+                int idxRef = i * (stride - skip) + j;
+                ref[idxRef] = (float)(Math.log10((double)in[idx])/Math.log10(2.0));
+            }
+        }
+        return ref;
+    }
+
+    public void testLog2F32() {
+        doF32(0x18a, 3);
+    }
+
+    public void testLog2F32_relaxed() {
+        doF32_relaxed(0x18a, 128);
+    }
+
+    public void testLog2F32_2() {
+        doF32_2(0xfa, 3);
+    }
+
+    public void testLog2F32_2_relaxed() {
+        doF32_2_relaxed(0xfa, 128);
+    }
+
+    public void testLog2F32_3() {
+        doF32_3(0xaef, 3);
+    }
+
+    public void testLog2F32_3_relaxed() {
+        doF32_3_relaxed(0xaef, 128);
+    }
+
+    public void testLog2F32_4() {
+        doF32_4(0xae62, 3);
+
+    }
+    public void testLog2F32_4_relaxed() {
+        doF32_4_relaxed(0xae62, 128);
+    }
+
+}
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/LogTest.java b/tests/tests/renderscript/src/android/renderscript/cts/LogTest.java
new file mode 100644
index 0000000..ee03b4e
--- /dev/null
+++ b/tests/tests/renderscript/src/android/renderscript/cts/LogTest.java
@@ -0,0 +1,110 @@
+/*
+ * Copyright (C) 2012 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 android.renderscript.cts;
+
+import com.android.cts.stub.R;
+import android.renderscript.Allocation;
+import android.renderscript.RSRuntimeException;
+
+public class LogTest extends RSBaseCompute {
+    private ScriptC_log_f32 script_f32;
+    private ScriptC_log_f32_relaxed script_f32_relaxed;
+
+    @Override
+    protected void setUp() throws Exception {
+        super.setUp();
+        script_f32 = new ScriptC_log_f32(mRS);
+        script_f32_relaxed = new ScriptC_log_f32_relaxed(mRS);
+    }
+
+    @Override
+    public void forEach(int testId, Allocation mIn, Allocation mOut) throws RSRuntimeException {
+        switch (testId) {
+        case TEST_F32:
+            script_f32.forEach_log_f32_1(mIn, mOut);
+            break;
+        case TEST_F32_2:
+            script_f32.forEach_log_f32_2(mIn, mOut);
+            break;
+        case TEST_F32_3:
+            script_f32.forEach_log_f32_3(mIn, mOut);
+            break;
+        case TEST_F32_4:
+            script_f32.forEach_log_f32_4(mIn, mOut);
+            break;
+
+        case TEST_RELAXED_F32:
+            script_f32_relaxed.forEach_log_f32_1(mIn, mOut);
+            break;
+        case TEST_RELAXED_F32_2:
+            script_f32_relaxed.forEach_log_f32_2(mIn, mOut);
+            break;
+        case TEST_RELAXED_F32_3:
+            script_f32_relaxed.forEach_log_f32_3(mIn, mOut);
+            break;
+        case TEST_RELAXED_F32_4:
+            script_f32_relaxed.forEach_log_f32_4(mIn, mOut);
+            break;
+        }
+    }
+
+    @Override
+    protected float[] getRefArray(float[] in, int input_size, int stride, int skip) {
+        float[] ref = new float[input_size * stride];
+        for (int i = 0; i < input_size; i++) {
+            for (int j = 0; j < stride - skip; j++) {
+                int idx= i * stride + j;
+                int idxRef = i * (stride - skip) + j;
+                ref[idxRef] = (float)(Math.log((double)in[idx]));
+            }
+        }
+        return ref;
+    }
+
+    public void testLogF32() {
+        doF32(0xfae, 3);
+    }
+
+    public void testLogF32_relaxed() {
+        doF32_relaxed(0xfae, 16);
+    }
+
+    public void testLogF32_2() {
+        doF32_2(0x123, 3);
+    }
+
+    public void testLogF32_2_relaxed() {
+        doF32_2_relaxed(0x123, 16);
+    }
+
+    public void testLogF32_3() {
+        doF32_3(0xab4, 3);
+    }
+
+    public void testLogF32_3_relaxed() {
+        doF32_3_relaxed(0xab4, 16);
+    }
+
+    public void testLogF32_4() {
+        doF32_4(0xfa3, 3);
+
+    }
+    public void testLogF32_4_relaxed() {
+        doF32_4_relaxed(0xfa3, 16);
+    }
+
+}
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/LogbTest.java b/tests/tests/renderscript/src/android/renderscript/cts/LogbTest.java
new file mode 100644
index 0000000..b42d680
--- /dev/null
+++ b/tests/tests/renderscript/src/android/renderscript/cts/LogbTest.java
@@ -0,0 +1,110 @@
+/*
+ * Copyright (C) 2012 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 android.renderscript.cts;
+
+import com.android.cts.stub.R;
+import android.renderscript.Allocation;
+import android.renderscript.RSRuntimeException;
+
+public class LogbTest extends RSBaseCompute {
+    private ScriptC_logb_f32 script_f32;
+    private ScriptC_logb_f32_relaxed script_f32_relaxed;
+
+    @Override
+    protected void setUp() throws Exception {
+        super.setUp();
+        script_f32 = new ScriptC_logb_f32(mRS);
+        script_f32_relaxed = new ScriptC_logb_f32_relaxed(mRS);
+    }
+
+    @Override
+    public void forEach(int testId, Allocation mIn, Allocation mOut) throws RSRuntimeException {
+        switch (testId) {
+        case TEST_F32:
+            script_f32.forEach_logb_f32_1(mIn, mOut);
+            break;
+        case TEST_F32_2:
+            script_f32.forEach_logb_f32_2(mIn, mOut);
+            break;
+        case TEST_F32_3:
+            script_f32.forEach_logb_f32_3(mIn, mOut);
+            break;
+        case TEST_F32_4:
+            script_f32.forEach_logb_f32_4(mIn, mOut);
+            break;
+
+        case TEST_RELAXED_F32:
+            script_f32_relaxed.forEach_logb_f32_1(mIn, mOut);
+            break;
+        case TEST_RELAXED_F32_2:
+            script_f32_relaxed.forEach_logb_f32_2(mIn, mOut);
+            break;
+        case TEST_RELAXED_F32_3:
+            script_f32_relaxed.forEach_logb_f32_3(mIn, mOut);
+            break;
+        case TEST_RELAXED_F32_4:
+            script_f32_relaxed.forEach_logb_f32_4(mIn, mOut);
+            break;
+        }
+    }
+
+    @Override
+    protected float[] getRefArray(float[] in, int input_size, int stride, int skip) {
+        float[] ref = new float[input_size * stride];
+        for (int i = 0; i < input_size; i++) {
+            for (int j = 0; j < stride - skip; j++) {
+                int idx= i * stride + j;
+                int idxRef = i * (stride - skip) + j;
+                ref[idxRef] = ((Float.floatToIntBits(in[idx]) >> 23) & 0xFF) - 127.0f;
+            }
+        }
+        return ref;
+    }
+
+    public void testLogbF32() {
+        doF32(0xe, 0);
+    }
+
+    public void testLogbF32_relaxed() {
+        doF32_relaxed(0xe, 0);
+    }
+
+    public void testLogbF32_2() {
+        doF32_2(0xa1, 0);
+    }
+
+    public void testLogbF32_2_relaxed() {
+        doF32_2_relaxed(0xa1, 0);
+    }
+
+    public void testLogbF32_3() {
+        doF32_3(0xab2, 0);
+    }
+
+    public void testLogbF32_3_relaxed() {
+        doF32_3_relaxed(0xab2, 0);
+    }
+
+    public void testLogbF32_4() {
+        doF32_4(0xaa2, 0);
+
+    }
+    public void testLogbF32_4_relaxed() {
+        doF32_4_relaxed(0xaa2, 0);
+    }
+
+}
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/MadTest.java b/tests/tests/renderscript/src/android/renderscript/cts/MadTest.java
new file mode 100644
index 0000000..3662035
--- /dev/null
+++ b/tests/tests/renderscript/src/android/renderscript/cts/MadTest.java
@@ -0,0 +1,136 @@
+/*
+ * Copyright (C) 2012 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 android.renderscript.cts;
+
+import android.renderscript.Allocation;
+import android.renderscript.Element;
+import android.renderscript.RSRuntimeException;
+import com.android.cts.stub.R;
+
+public class MadTest extends RSBaseCompute {
+    private ScriptC_mad_f32 script_f32;
+    private ScriptC_mad_f32_relaxed script_f32_relaxed;
+    private Allocation mIn;
+
+    @Override
+    protected void setUp() throws Exception {
+        super.setUp();
+        script_f32 = new ScriptC_mad_f32(mRS);
+        script_f32_relaxed = new ScriptC_mad_f32_relaxed(mRS);
+    }
+
+    @Override
+    public void forEach(int testId, Allocation mIn, Allocation mOut) throws RSRuntimeException {
+        switch (testId) {
+        case TEST_F32:
+            script_f32.forEach_mad_f32_1(mIn, mOut);
+            break;
+        case TEST_F32_2:
+            script_f32.forEach_mad_f32_2(mIn, mOut);
+            break;
+        case TEST_F32_3:
+            script_f32.forEach_mad_f32_3(mIn, mOut);
+            break;
+        case TEST_F32_4:
+            script_f32.forEach_mad_f32_4(mIn, mOut);
+            break;
+
+        case TEST_RELAXED_F32:
+            script_f32_relaxed.forEach_mad_f32_1(mIn, mOut);
+            break;
+        case TEST_RELAXED_F32_2:
+            script_f32_relaxed.forEach_mad_f32_2(mIn, mOut);
+            break;
+        case TEST_RELAXED_F32_3:
+            script_f32_relaxed.forEach_mad_f32_3(mIn, mOut);
+            break;
+        case TEST_RELAXED_F32_4:
+            script_f32_relaxed.forEach_mad_f32_4(mIn, mOut);
+            break;
+        }
+    }
+
+    @Override
+    protected float[] getRefArray(float[] in, int input_size, int stride, int skip) {
+        float[] ref = new float[input_size * stride];
+        for (int i = 0; i < input_size; i++) {
+            for (int j = 0; j < stride - skip; j++) {
+                int idx = i * stride * 3 + j;
+                ref[i * (stride - skip) + j] = (float)((double)in[idx] * (double)in[idx+stride] + (double)in[idx+stride*2]);
+            }
+        }
+        return ref;
+    }
+
+    @Override
+    protected Allocation setInAlloc(Element e) {
+        return mIn;
+    }
+
+    @Override
+    protected float[] makeInArray(int size) {
+        return new float[size*3];
+    }
+
+    public void testMadF32() {
+        ScriptField_mad_input_f32 in = new ScriptField_mad_input_f32(mRS, INPUTSIZE);
+        mIn = in.getAllocation();
+        doF32(0x123678, 4);
+    }
+
+    public void testMadF32_relaxed() {
+        ScriptField_mad_input_f32 in = new ScriptField_mad_input_f32(mRS, INPUTSIZE);
+        mIn = in.getAllocation();
+        doF32_relaxed(0x123678, 4);
+    }
+
+    public void testMadF32_2() {
+        ScriptField_mad_input_f32_2 in = new ScriptField_mad_input_f32_2(mRS, INPUTSIZE);
+        mIn = in.getAllocation();
+        doF32_2(0x1234a5, 4);
+    }
+
+    public void testMadF32_2_relaxed() {
+        ScriptField_mad_input_f32_2 in = new ScriptField_mad_input_f32_2(mRS, INPUTSIZE);
+        mIn = in.getAllocation();
+        doF32_2_relaxed(0x1234a5, 4);
+    }
+
+    public void testMadF32_3() {
+        ScriptField_mad_input_f32_3 in = new ScriptField_mad_input_f32_3(mRS, INPUTSIZE);
+        mIn = in.getAllocation();
+        doF32_3(0x1af345, 4);
+    }
+
+    public void testMadF32_3_relaxed() {
+        ScriptField_mad_input_f32_3 in = new ScriptField_mad_input_f32_3(mRS, INPUTSIZE);
+        mIn = in.getAllocation();
+        doF32_3_relaxed(0x1af345, 4);
+    }
+
+    public void testMadF32_4() {
+        ScriptField_mad_input_f32_4 in = new ScriptField_mad_input_f32_4(mRS, INPUTSIZE);
+        mIn = in.getAllocation();
+        doF32_4(0x12ce45, 4);
+    }
+
+    public void testMadF32_4_relaxed() {
+        ScriptField_mad_input_f32_4 in = new ScriptField_mad_input_f32_4(mRS, INPUTSIZE);
+        mIn = in.getAllocation();
+        doF32_4_relaxed(0x12ce45, 4);
+    }
+}
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/Matrix2fTest.java b/tests/tests/renderscript/src/android/renderscript/cts/Matrix2fTest.java
old mode 100755
new mode 100644
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/Matrix3fTest.java b/tests/tests/renderscript/src/android/renderscript/cts/Matrix3fTest.java
old mode 100755
new mode 100644
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/Matrix4fTest.java b/tests/tests/renderscript/src/android/renderscript/cts/Matrix4fTest.java
old mode 100755
new mode 100644
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/NextafterTest.java b/tests/tests/renderscript/src/android/renderscript/cts/NextafterTest.java
new file mode 100644
index 0000000..468b341
--- /dev/null
+++ b/tests/tests/renderscript/src/android/renderscript/cts/NextafterTest.java
@@ -0,0 +1,136 @@
+/*
+ * Copyright (C) 2012 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 android.renderscript.cts;
+
+import android.renderscript.Allocation;
+import android.renderscript.Element;
+import android.renderscript.RSRuntimeException;
+import com.android.cts.stub.R;
+
+public class NextafterTest extends RSBaseCompute {
+    private ScriptC_nextafter_f32 script_f32;
+    private ScriptC_nextafter_f32_relaxed script_f32_relaxed;
+    private Allocation mIn;
+
+    @Override
+    protected void setUp() throws Exception {
+        super.setUp();
+        script_f32 = new ScriptC_nextafter_f32(mRS);
+        script_f32_relaxed = new ScriptC_nextafter_f32_relaxed(mRS);
+    }
+
+    @Override
+    public void forEach(int testId, Allocation mIn, Allocation mOut) throws RSRuntimeException {
+        switch (testId) {
+        case TEST_F32:
+            script_f32.forEach_nextafter_f32_1(mIn, mOut);
+            break;
+        case TEST_F32_2:
+            script_f32.forEach_nextafter_f32_2(mIn, mOut);
+            break;
+        case TEST_F32_3:
+            script_f32.forEach_nextafter_f32_3(mIn, mOut);
+            break;
+        case TEST_F32_4:
+            script_f32.forEach_nextafter_f32_4(mIn, mOut);
+            break;
+
+        case TEST_RELAXED_F32:
+            script_f32_relaxed.forEach_nextafter_f32_1(mIn, mOut);
+            break;
+        case TEST_RELAXED_F32_2:
+            script_f32_relaxed.forEach_nextafter_f32_2(mIn, mOut);
+            break;
+        case TEST_RELAXED_F32_3:
+            script_f32_relaxed.forEach_nextafter_f32_3(mIn, mOut);
+            break;
+        case TEST_RELAXED_F32_4:
+            script_f32_relaxed.forEach_nextafter_f32_4(mIn, mOut);
+            break;
+        }
+    }
+
+    @Override
+    protected float[] getRefArray(float[] in, int input_size, int stride, int skip) {
+        float[] ref = new float[input_size * stride];
+        for (int i = 0; i < input_size; i++) {
+            for (int j = 0; j < stride - skip; j++) {
+                int idx = i * stride * 2 + j;
+                ref[i * (stride - skip) + j] = Math.nextAfter(in[idx],(double)in[idx+stride]);
+            }
+        }
+        return ref;
+    }
+
+    @Override
+    protected Allocation setInAlloc(Element e) {
+        return mIn;
+    }
+
+    @Override
+    protected float[] makeInArray(int size) {
+        return new float[size*2];
+    }
+
+    public void testNextafterF32() {
+        ScriptField_InputData inputDataArray = new ScriptField_InputData(mRS, INPUTSIZE);
+        mIn = inputDataArray.getAllocation();
+        doF32(0x12678, 0);
+    }
+
+    public void testNextafterF32_relaxed() {
+        ScriptField_InputData inputDataArray = new ScriptField_InputData(mRS, INPUTSIZE);
+        mIn = inputDataArray.getAllocation();
+        doF32_relaxed(0x12678, 0);
+    }
+
+    public void testNextafterF32_2() {
+        ScriptField_InputData_2 inputDataArray = new ScriptField_InputData_2(mRS, INPUTSIZE);
+        mIn = inputDataArray.getAllocation();
+        doF32_2(0x1af45, 0);
+    }
+
+    public void testNextafterF32_2_relaxed() {
+        ScriptField_InputData_2 inputDataArray = new ScriptField_InputData_2(mRS, INPUTSIZE);
+        mIn = inputDataArray.getAllocation();
+        doF32_2_relaxed(0x1af45, 0);
+    }
+
+    public void testNextafterF32_3() {
+        ScriptField_InputData_3 inputDataArray = new ScriptField_InputData_3(mRS, INPUTSIZE);
+        mIn = inputDataArray.getAllocation();
+        doF32_3(0x1cd345, 0);
+    }
+
+    public void testNextafterF32_3_relaxed() {
+        ScriptField_InputData_3 inputDataArray = new ScriptField_InputData_3(mRS, INPUTSIZE);
+        mIn = inputDataArray.getAllocation();
+        doF32_3_relaxed(0x1cd345, 0);
+    }
+
+    public void testNextafterF32_4() {
+        ScriptField_InputData_4 inputDataArray = new ScriptField_InputData_4(mRS, INPUTSIZE);
+        mIn = inputDataArray.getAllocation();
+        doF32_4(0x1ca45, 0);
+    }
+
+    public void testNextafterF32_4_relaxed() {
+        ScriptField_InputData_4 inputDataArray = new ScriptField_InputData_4(mRS, INPUTSIZE);
+        mIn = inputDataArray.getAllocation();
+        doF32_4_relaxed(0x1ca45, 0);
+    }
+}
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/PowTest.java b/tests/tests/renderscript/src/android/renderscript/cts/PowTest.java
new file mode 100644
index 0000000..09a2e94
--- /dev/null
+++ b/tests/tests/renderscript/src/android/renderscript/cts/PowTest.java
@@ -0,0 +1,142 @@
+/*
+ * Copyright (C) 2012 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 android.renderscript.cts;
+
+import android.renderscript.Allocation;
+import android.renderscript.Element;
+import android.renderscript.RSRuntimeException;
+import com.android.cts.stub.R;
+
+public class PowTest extends RSBaseCompute {
+    private ScriptC_pow_f32 script_f32;
+    private ScriptC_pow_f32_relaxed script_f32_relaxed;
+    private Allocation mIn;
+
+    @Override
+    protected void setUp() throws Exception {
+        super.setUp();
+        script_f32 = new ScriptC_pow_f32(mRS);
+        script_f32_relaxed = new ScriptC_pow_f32_relaxed(mRS);
+    }
+
+    @Override
+    public void forEach(int testId, Allocation mIn, Allocation mOut) throws RSRuntimeException {
+        switch (testId) {
+        case TEST_F32:
+            script_f32.forEach_pow_f32_1(mIn, mOut);
+            break;
+        case TEST_F32_2:
+            script_f32.forEach_pow_f32_2(mIn, mOut);
+            break;
+        case TEST_F32_3:
+            script_f32.forEach_pow_f32_3(mIn, mOut);
+            break;
+        case TEST_F32_4:
+            script_f32.forEach_pow_f32_4(mIn, mOut);
+            break;
+
+        case TEST_RELAXED_F32:
+            script_f32_relaxed.forEach_pow_f32_1(mIn, mOut);
+            break;
+        case TEST_RELAXED_F32_2:
+            script_f32_relaxed.forEach_pow_f32_2(mIn, mOut);
+            break;
+        case TEST_RELAXED_F32_3:
+            script_f32_relaxed.forEach_pow_f32_3(mIn, mOut);
+            break;
+        case TEST_RELAXED_F32_4:
+            script_f32_relaxed.forEach_pow_f32_4(mIn, mOut);
+            break;
+        }
+    }
+
+    @Override
+    protected float[] getRefArray(float[] in, int input_size, int stride, int skip) {
+        float[] ref = new float[input_size * stride];
+        for (int i = 0; i < input_size; i++) {
+            for (int j = 0; j < stride - skip; j++) {
+                int idx= i * stride * 2 + j;
+                int idxRef = i * (stride - skip) + j;
+                ref[idxRef] = (float)Math.pow((double)in[idx], (double)in[idx+stride]);
+            }
+        }
+        return ref;
+    }
+
+    @Override
+    protected Allocation setInAlloc(Element e) {
+        return mIn;
+    }
+
+    @Override
+    protected float[] makeInArray(int size) {
+        return new float[size*2];
+    }
+
+    @Override
+    protected void fillRandom(long seed, int fact, int offset, float[] inArray, int rStride, int rSkip) {
+        RSUtils.genRandom(seed, 32, -16, inArray, rStride, rSkip);
+    }
+
+    public void testPowF32() {
+        ScriptField_PowInputData in = new ScriptField_PowInputData(mRS, INPUTSIZE);
+        mIn = in.getAllocation();
+        doF32(0x12345678, 16);
+    }
+
+    public void testPowF32_relaxed() {
+        ScriptField_PowInputData in = new ScriptField_PowInputData(mRS, INPUTSIZE);
+        mIn = in.getAllocation();
+        doF32_relaxed(0x12345678, 128);
+    }
+
+    public void testPowF32_2() {
+        ScriptField_PowInputData_2 in = new ScriptField_PowInputData_2(mRS, INPUTSIZE);
+        mIn = in.getAllocation();
+        doF32_2(0x12ab78, 16);
+    }
+
+    public void testPowF32_2_relaxed() {
+        ScriptField_PowInputData_2 in = new ScriptField_PowInputData_2(mRS, INPUTSIZE);
+        mIn = in.getAllocation();
+        doF32_2_relaxed(0x12ab78, 128);
+    }
+
+    public void testPowF32_3() {
+        ScriptField_PowInputData_3 in = new ScriptField_PowInputData_3(mRS, INPUTSIZE);
+        mIn = in.getAllocation();
+        doF32_3(0x1f5678, 16);
+    }
+
+    public void testPowF32_3_relaxed() {
+        ScriptField_PowInputData_3 in = new ScriptField_PowInputData_3(mRS, INPUTSIZE);
+        mIn = in.getAllocation();
+        doF32_3_relaxed(0x1f5678, 128);
+    }
+
+    public void testPowF32_4() {
+        ScriptField_PowInputData_4 in = new ScriptField_PowInputData_4(mRS, INPUTSIZE);
+        mIn = in.getAllocation();
+        doF32_4(0xc678, 16);
+    }
+
+    public void testPowF32_4_relaxed() {
+        ScriptField_PowInputData_4 in = new ScriptField_PowInputData_4(mRS, INPUTSIZE);
+        mIn = in.getAllocation();
+        doF32_4_relaxed(0xc678, 128);
+    }
+}
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/PownTest.java b/tests/tests/renderscript/src/android/renderscript/cts/PownTest.java
new file mode 100644
index 0000000..c95a294
--- /dev/null
+++ b/tests/tests/renderscript/src/android/renderscript/cts/PownTest.java
@@ -0,0 +1,168 @@
+/*
+ * Copyright (C) 2012 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 android.renderscript.cts;
+
+import android.renderscript.Allocation;
+import android.renderscript.Element;
+import android.renderscript.RSRuntimeException;
+import com.android.cts.stub.R;
+
+public class PownTest extends RSBaseCompute {
+    private ScriptC_pown_f32 script_f32;
+    private ScriptC_pown_f32_relaxed script_f32_relaxed;
+    private int[] n;
+
+    @Override
+    protected void setUp() throws Exception {
+        super.setUp();
+        script_f32 = new ScriptC_pown_f32(mRS);
+        script_f32_relaxed = new ScriptC_pown_f32_relaxed(mRS);
+    }
+
+    @Override
+    public void forEach(int testId, Allocation mIn, Allocation mOut) throws RSRuntimeException {
+        switch (testId) {
+        case TEST_F32:
+            script_f32.forEach_pown_f32_1(mIn, mOut);
+            break;
+        case TEST_F32_2:
+            script_f32.forEach_pown_f32_2(mIn, mOut);
+            break;
+        case TEST_F32_3:
+            script_f32.forEach_pown_f32_3(mIn, mOut);
+            break;
+        case TEST_F32_4:
+            script_f32.forEach_pown_f32_4(mIn, mOut);
+            break;
+
+        case TEST_RELAXED_F32:
+            script_f32_relaxed.forEach_pown_f32_1(mIn, mOut);
+            break;
+        case TEST_RELAXED_F32_2:
+            script_f32_relaxed.forEach_pown_f32_2(mIn, mOut);
+            break;
+        case TEST_RELAXED_F32_3:
+            script_f32_relaxed.forEach_pown_f32_3(mIn, mOut);
+            break;
+        case TEST_RELAXED_F32_4:
+            script_f32_relaxed.forEach_pown_f32_4(mIn, mOut);
+            break;
+
+        }
+    }
+
+    @Override
+    protected float[] getRefArray(float[] in, int input_size, int stride, int skip) {
+        float[] ref = new float[input_size * stride];
+        for (int i = 0; i < input_size; i++) {
+            for (int j = 0; j < stride - skip; j++) {
+                int idx= i * stride + j;
+                int idxRef = i * (stride - skip) + j;
+                ref[idxRef] = (float)Math.pow((double)in[idx], (double)n[idx]);
+            }
+        }
+        return ref;
+    }
+
+    public void testPownF32() {
+        Allocation nAlloc = Allocation.createSized(mRS, Element.I32(mRS), INPUTSIZE);
+
+        n = new int[INPUTSIZE];
+        RSUtils.genRandom(0x12345678, 32, 1, -16, n);
+        nAlloc.copyFrom(n);
+        script_f32.set_n1(nAlloc);
+
+        doF32(0x716acd, 16);
+    }
+
+    public void testPownF32_relaxed() {
+        Allocation nAlloc = Allocation.createSized(mRS, Element.I32(mRS), INPUTSIZE);
+
+        n = new int[INPUTSIZE];
+        RSUtils.genRandom(0x12345678, 32, 1, -16, n);
+        nAlloc.copyFrom(n);
+        script_f32_relaxed.set_n1(nAlloc);
+
+        doF32_relaxed(0x716acd, 128);
+    }
+
+    public void testPownF32_2() {
+        Allocation nAlloc = Allocation.createSized(mRS, Element.I32_2(mRS), INPUTSIZE);
+
+        n = new int[INPUTSIZE*2];
+        RSUtils.genRandom(0xacdef1, 32, 1, -16, n);
+        nAlloc.copyFrom(n);
+        script_f32.set_n2(nAlloc);
+
+        doF32_2(0xacdef1, 16);
+    }
+
+    public void testPownF32_2_relaxed() {
+        Allocation nAlloc = Allocation.createSized(mRS, Element.I32_2(mRS), INPUTSIZE);
+
+        n = new int[INPUTSIZE*2];
+        RSUtils.genRandom(0xacdef1, 32, 1, -16, n);
+        nAlloc.copyFrom(n);
+        script_f32_relaxed.set_n2(nAlloc);
+
+        doF32_2_relaxed(0xacdef1, 128);
+    }
+
+    public void testPownF32_3() {
+        Allocation nAlloc = Allocation.createSized(mRS, Element.I32_3(mRS), INPUTSIZE);
+
+        n = new int[INPUTSIZE*4];
+        RSUtils.genRandom(0xa123f1, 32, 1, -16, n, 4, 1);
+        nAlloc.copyFrom(n);
+        script_f32.set_n3(nAlloc);
+
+        doF32_3(0xaac3f1, 16);
+    }
+
+    public void testPownF32_3_relaxed() {
+        Allocation nAlloc = Allocation.createSized(mRS, Element.I32_3(mRS), INPUTSIZE);
+
+        n = new int[INPUTSIZE*4];
+        RSUtils.genRandom(0xa123f1, 32, 1, -16, n, 4, 1);
+        nAlloc.copyFrom(n);
+        script_f32_relaxed.set_n3(nAlloc);
+
+        doF32_3_relaxed(0xaac3f1, 128);
+    }
+
+    public void testPownF32_4() {
+        Allocation nAlloc = Allocation.createSized(mRS, Element.I32_4(mRS), INPUTSIZE);
+
+        n = new int[INPUTSIZE*4];
+        RSUtils.genRandom(0x4323ca, 32, 1, -16, n);
+        nAlloc.copyFrom(n);
+        script_f32.set_n4(nAlloc);
+
+        doF32_4(0xaa12f1, 16);
+    }
+
+    public void testPownF32_4_relaxed() {
+        Allocation nAlloc = Allocation.createSized(mRS, Element.I32_4(mRS), INPUTSIZE);
+
+        n = new int[INPUTSIZE*4];
+        RSUtils.genRandom(0x4323ca, 32, 1, -16, n);
+        nAlloc.copyFrom(n);
+        script_f32_relaxed.set_n4(nAlloc);
+
+        doF32_4_relaxed(0xaa12f1, 128);
+    }
+}
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/PowrTest.java b/tests/tests/renderscript/src/android/renderscript/cts/PowrTest.java
new file mode 100644
index 0000000..f10995b
--- /dev/null
+++ b/tests/tests/renderscript/src/android/renderscript/cts/PowrTest.java
@@ -0,0 +1,142 @@
+/*
+ * Copyright (C) 2012 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 android.renderscript.cts;
+
+import android.renderscript.Allocation;
+import android.renderscript.Element;
+import android.renderscript.RSRuntimeException;
+import com.android.cts.stub.R;
+
+public class PowrTest extends RSBaseCompute {
+    private ScriptC_powr_f32 script_f32;
+    private ScriptC_powr_f32_relaxed script_f32_relaxed;
+    private Allocation mIn;
+
+    @Override
+    protected void setUp() throws Exception {
+        super.setUp();
+        script_f32 = new ScriptC_powr_f32(mRS);
+        script_f32_relaxed = new ScriptC_powr_f32_relaxed(mRS);
+    }
+
+    @Override
+    public void forEach(int testId, Allocation mIn, Allocation mOut) throws RSRuntimeException {
+        switch (testId) {
+        case TEST_F32:
+            script_f32.forEach_powr_f32_1(mIn, mOut);
+            break;
+        case TEST_F32_2:
+            script_f32.forEach_powr_f32_2(mIn, mOut);
+            break;
+        case TEST_F32_3:
+            script_f32.forEach_powr_f32_3(mIn, mOut);
+            break;
+        case TEST_F32_4:
+            script_f32.forEach_powr_f32_4(mIn, mOut);
+            break;
+
+        case TEST_RELAXED_F32:
+            script_f32_relaxed.forEach_powr_f32_1(mIn, mOut);
+            break;
+        case TEST_RELAXED_F32_2:
+            script_f32_relaxed.forEach_powr_f32_2(mIn, mOut);
+            break;
+        case TEST_RELAXED_F32_3:
+            script_f32_relaxed.forEach_powr_f32_3(mIn, mOut);
+            break;
+        case TEST_RELAXED_F32_4:
+            script_f32_relaxed.forEach_powr_f32_4(mIn, mOut);
+            break;
+        }
+    }
+
+    @Override
+    protected float[] getRefArray(float[] in, int input_size, int stride, int skip) {
+        float[] ref = new float[input_size * stride];
+        for (int i = 0; i < input_size; i++) {
+            for (int j = 0; j < stride - skip; j++) {
+                int idx= i * stride * 2 + j;
+                int idxRef = i * (stride - skip) + j;
+                ref[idxRef] = (float)Math.pow((double)in[idx], (double)in[idx+stride]);
+            }
+        }
+        return ref;
+    }
+
+    @Override
+    protected Allocation setInAlloc(Element e) {
+        return mIn;
+    }
+
+    @Override
+    protected float[] makeInArray(int size) {
+        return new float[size*2];
+    }
+
+    @Override
+    protected void fillRandom(long seed, int fact, int offset, float[] inArray, int rStride, int rSkip) {
+        RSUtils.genRandom(seed, 64, 0, inArray, rStride, rSkip);
+    }
+
+    public void testPowrF32() {
+        ScriptField_PowInputData in = new ScriptField_PowInputData(mRS, INPUTSIZE);
+        mIn = in.getAllocation();
+        doF32(0x12345678, 16);
+    }
+
+    public void testPowrF32_relaxed() {
+        ScriptField_PowInputData in = new ScriptField_PowInputData(mRS, INPUTSIZE);
+        mIn = in.getAllocation();
+        doF32_relaxed(0x12345678, 128);
+    }
+
+    public void testPowrF32_2() {
+        ScriptField_PowInputData_2 in = new ScriptField_PowInputData_2(mRS, INPUTSIZE);
+        mIn = in.getAllocation();
+        doF32_2(0x12ab78, 16);
+    }
+
+    public void testPowrF32_2_relaxed() {
+        ScriptField_PowInputData_2 in = new ScriptField_PowInputData_2(mRS, INPUTSIZE);
+        mIn = in.getAllocation();
+        doF32_2(0x12ab78, 128);
+    }
+
+    public void testPowrF32_3() {
+        ScriptField_PowInputData_3 in = new ScriptField_PowInputData_3(mRS, INPUTSIZE);
+        mIn = in.getAllocation();
+        doF32_3(0x1f5678, 16);
+    }
+
+    public void testPowrF32_3_relaxed() {
+        ScriptField_PowInputData_3 in = new ScriptField_PowInputData_3(mRS, INPUTSIZE);
+        mIn = in.getAllocation();
+        doF32_3_relaxed(0x1f5678, 128);
+    }
+
+    public void testPowrF32_4() {
+        ScriptField_PowInputData_4 in = new ScriptField_PowInputData_4(mRS, INPUTSIZE);
+        mIn = in.getAllocation();
+        doF32_4(0xc678, 16);
+    }
+
+    public void testPowrF32_4_relaxed() {
+        ScriptField_PowInputData_4 in = new ScriptField_PowInputData_4(mRS, INPUTSIZE);
+        mIn = in.getAllocation();
+        doF32_4_relaxed(0xc678, 128);
+    }
+}
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/RSBaseCompute.java b/tests/tests/renderscript/src/android/renderscript/cts/RSBaseCompute.java
index 3278113..d68e628 100644
--- a/tests/tests/renderscript/src/android/renderscript/cts/RSBaseCompute.java
+++ b/tests/tests/renderscript/src/android/renderscript/cts/RSBaseCompute.java
@@ -17,6 +17,10 @@
 package android.renderscript.cts;
 
 import android.renderscript.RenderScript;
+import android.renderscript.Allocation;
+import android.renderscript.Element;
+import android.renderscript.RSRuntimeException;
+import android.util.Log;
 
 /**
  * Base RenderScript test class. This class provides a message handler and a
@@ -25,6 +29,16 @@
 class RSBaseCompute extends RSBase {
     RenderScript mRS;
 
+    static final int TEST_F32 = 0;
+    static final int TEST_F32_2 = 1;
+    static final int TEST_F32_3 = 2;
+    static final int TEST_F32_4 = 3;
+    static final int TEST_RELAXED_F32 = 4;
+    static final int TEST_RELAXED_F32_2 = 5;
+    static final int TEST_RELAXED_F32_3 = 6;
+    static final int TEST_RELAXED_F32_4 = 7;
+    protected int INPUTSIZE = 512;
+
     @Override
     protected void setUp() throws Exception {
         super.setUp();
@@ -41,4 +55,129 @@
         super.tearDown();
     }
 
+    public void checkArray(float[] ref, float[] out, int height, int refStride,
+             int outStride, float ulpCount) {
+        int minStride = refStride > outStride ? outStride : refStride;
+        for (int i = 0; i < height; i++) {
+            for (int j = 0; j < minStride; j++) {
+                int refIdx = i * refStride + j;
+                int outIdx = i * outStride + j;
+                float ulp = Math.ulp(ref[refIdx]) * ulpCount;
+                assertEquals("Incorrect value @ idx = " + i + " |",
+                        ref[refIdx],
+                        out[outIdx],
+                        ulp);
+            }
+        }
+    }
+
+    public void checkArray(int[] ref, int[] out, int height, int refStride,
+             int outStride) {
+        int minStride = refStride > outStride ? outStride : refStride;
+        for (int i = 0; i < height; i++) {
+            for (int j = 0; j < minStride; j++) {
+                int refIdx = i * refStride + j;
+                int outIdx = i * outStride + j;
+                assertEquals("Incorrect value @ idx = " + i + " |",
+                        ref[refIdx],
+                        out[outIdx]);
+            }
+        }
+    }
+
+    private void baseTestHelper(int testid, Element inElement, Element outElement, long seed, int fact,
+                                int offset, int rStride, int rSkip, int refStride, int outStride,
+                                int inStride, int skip, int ulp) {
+        float[] inArray = makeInArray(INPUTSIZE * inStride);
+        fillRandom(seed, fact, offset, inArray, rStride, rSkip);
+        float[] refArray = getRefArray(inArray, INPUTSIZE, inStride, skip);
+
+        Allocation mAllocationIn = setInAlloc(inElement);
+        fillInAlloc(mAllocationIn, inArray);
+
+        Allocation mAllocationOut = setOutAlloc(outElement);
+        try {
+            RSUtils.forEach(this, testid, mAllocationIn, mAllocationOut);
+        } catch (RSRuntimeException e) {
+            Log.e("RenderscriptCTS", "Caught RSRuntimeException: " +
+                  e.getMessage());
+        }
+        float[] outArray = makeOutArray(INPUTSIZE * outStride);
+        mAllocationOut.copyTo(outArray);
+        checkArray(refArray, outArray, INPUTSIZE, refStride, outStride, ulp);
+    }
+
+    public void baseTest(int testid, long seed, int refStride, int outStride, int inStride, int skip, int ulp) {
+        baseTestHelper(testid, null, null, seed, 1, 0, 1, 0, refStride, outStride, inStride, skip, ulp);
+    }
+
+    public void doF32(long seed, int ulp) {
+        baseTestHelper(TEST_F32, Element.F32(mRS), Element.F32(mRS), seed, 1, 0, 1, 0, 1, 1, 1, 0, ulp);
+    }
+
+    public void doF32_2(long seed, int ulp) {
+        baseTestHelper(TEST_F32_2, Element.F32_2(mRS), Element.F32_2(mRS), seed, 1, 0, 1, 0, 2, 2, 2, 0, ulp);
+    }
+
+    public void doF32_3(long seed, int ulp) {
+        baseTestHelper(TEST_F32_3, Element.F32_3(mRS), Element.F32_3(mRS), seed, 1, 0, 4, 1, 3, 4, 4, 1, ulp);
+    }
+
+    public void doF32_4(long seed, int ulp) {
+        baseTestHelper(TEST_F32_4, Element.F32_4(mRS), Element.F32_4(mRS), seed, 1, 0, 1, 0, 4, 4, 4, 0, ulp);
+    }
+
+    public void doF32_relaxed(long seed, int ulp) {
+        baseTestHelper(TEST_RELAXED_F32, Element.F32(mRS), Element.F32(mRS), seed, 1, 0, 1, 0, 1, 1, 1, 0, ulp);
+    }
+
+    public void doF32_2_relaxed(long seed, int ulp) {
+        baseTestHelper(TEST_RELAXED_F32_2, Element.F32_2(mRS), Element.F32_2(mRS), seed, 1, 0, 1, 0, 2, 2, 2, 0, ulp);
+    }
+
+    public void doF32_3_relaxed(long seed, int ulp) {
+        baseTestHelper(TEST_RELAXED_F32_3, Element.F32_3(mRS), Element.F32_3(mRS), seed, 1, 0, 4, 1, 3, 4, 4, 1, ulp);
+    }
+
+    public void doF32_4_relaxed(long seed, int ulp) {
+        baseTestHelper(TEST_RELAXED_F32_4, Element.F32_4(mRS), Element.F32_4(mRS), seed, 1, 0, 1, 0, 4, 4, 4, 0, ulp);
+    }
+
+
+    public void forEach(int testId, Allocation mIn, Allocation mOut) throws RSRuntimeException {
+        // Intentionally empty... subclass will likely define only one, but not both
+    }
+
+    public void forEach(int testId, Allocation mIn) throws RSRuntimeException {
+        // Intentionally empty... subclass will likely define only one, but not both
+    }
+
+    //These are default actions for these functions, specific tests overload them
+    protected float[] getRefArray(float[] inArray, int size, int stride, int skip) {
+        return null;
+    }
+
+    protected Allocation setInAlloc(Element e) {
+        return Allocation.createSized(mRS, e, INPUTSIZE);
+    }
+
+    protected Allocation setOutAlloc(Element e) {
+        return Allocation.createSized(mRS, e, INPUTSIZE);
+    }
+
+    protected float[] makeInArray(int size) {
+        return new float[size];
+    }
+
+    protected float[] makeOutArray(int size) {
+        return new float[size];
+    }
+
+    protected void fillRandom(long seed, int fact, int offset, float[] inArray, int rStride, int rSkip) {
+        RSUtils.genRandom(seed, fact, offset, inArray, rStride, rSkip);
+    }
+
+    protected void fillInAlloc(Allocation mIn, float[] inArray) {
+        mIn.copy1DRangeFromUnchecked(0, INPUTSIZE, inArray);
+    }
 }
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/RSUtils.java b/tests/tests/renderscript/src/android/renderscript/cts/RSUtils.java
new file mode 100644
index 0000000..8c81e3d
--- /dev/null
+++ b/tests/tests/renderscript/src/android/renderscript/cts/RSUtils.java
@@ -0,0 +1,91 @@
+/*
+ * Copyright (C) 2012 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 android.renderscript.cts;
+
+import android.content.res.Resources;
+import java.util.Random;
+import android.renderscript.Allocation;
+import android.renderscript.RSRuntimeException;
+import com.android.cts.stub.R;
+
+/**
+ * This class supplies some utils for renderscript tests
+ */
+public class RSUtils {
+
+    public static void genRandom(long seed, int factor, int offset, float array[]) {
+        Random r = new Random(seed);
+        for (int i = 0; i < array.length; i++) {
+            array[i] = r.nextFloat() * factor + offset;
+        }
+    }
+
+    public static void genRandom(long seed, int factor, int offset, float array[],
+            int stride, int skip) {
+        Random r = new Random(seed);
+        for (int i = 0; i < array.length / stride; i++) {
+            for (int j = 0; j < stride; j++) {
+                if (j >= stride - skip)
+                    array[i * stride + j] = 0;
+                else
+                    array[i * stride + j] = r.nextFloat() * factor + offset;
+            }
+        }
+    }
+
+    public static void genRandom(long seed, int max, int factor, int offset, int array[]) {
+        Random r = new Random(seed);
+        for (int i = 0; i < array.length; i++) {
+            array[i] = (r.nextInt(max) * factor + offset);
+        }
+    }
+
+    public static void genRandom(long seed, int factor, int offset, int array[],
+            int stride, int skip) {
+        Random r = new Random(seed);
+        for (int i = 0; i < array.length / stride; i++) {
+            for (int j = 0; j < stride; j++) {
+                if (j >= stride - skip)
+                    array[i * stride + j] = 0;
+                else
+                    array[i * stride + j] = r.nextInt() * factor + offset;
+            }
+        }
+    }
+
+    public static void genRandom(long seed, int max, int factor, int offset, int array[],
+            int stride, int skip) {
+        Random r = new Random(seed);
+        for (int i = 0; i < array.length / stride; i++) {
+            for (int j = 0; j < stride; j++) {
+                if (j >= stride - skip)
+                    array[i * stride + j] = 0;
+                else
+                    array[i * stride + j] = r.nextInt(max) * factor + offset;
+            }
+        }
+    }
+
+    public static void forEach(RSBaseCompute base, int testId, Allocation in) throws RSRuntimeException {
+        base.forEach(testId, in);
+    }
+
+    public static void forEach(RSBaseCompute base, int testId, Allocation in, Allocation out)
+            throws RSRuntimeException {
+        base.forEach(testId, in,out);
+    }
+}
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/RadiansTest.java b/tests/tests/renderscript/src/android/renderscript/cts/RadiansTest.java
new file mode 100644
index 0000000..a0c7834
--- /dev/null
+++ b/tests/tests/renderscript/src/android/renderscript/cts/RadiansTest.java
@@ -0,0 +1,123 @@
+/*
+ * Copyright (C) 2012 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 android.renderscript.cts;
+
+import com.android.cts.stub.R;
+import android.renderscript.Allocation;
+import android.renderscript.RSRuntimeException;
+
+public class RadiansTest extends RSBaseCompute {
+    private ScriptC_radians_f32 script_f32;
+    private ScriptC_radians_f32_relaxed script_f32_relaxed;
+
+    @Override
+    protected void setUp() throws Exception {
+        super.setUp();
+        script_f32 = new ScriptC_radians_f32(mRS);
+        script_f32_relaxed = new ScriptC_radians_f32_relaxed(mRS);
+    }
+
+    @Override
+    public void forEach(int testId, Allocation mIn, Allocation mOut) throws RSRuntimeException {
+        switch (testId) {
+        case TEST_F32:
+            script_f32.forEach_radians_f32_1(mIn, mOut);
+            break;
+        case TEST_F32_2:
+            script_f32.forEach_radians_f32_2(mIn, mOut);
+            break;
+        case TEST_F32_3:
+            script_f32.forEach_radians_f32_3(mIn, mOut);
+            break;
+        case TEST_F32_4:
+            script_f32.forEach_radians_f32_4(mIn, mOut);
+            break;
+
+        case TEST_RELAXED_F32:
+            script_f32_relaxed.forEach_radians_f32_1(mIn, mOut);
+            break;
+        case TEST_RELAXED_F32_2:
+            script_f32_relaxed.forEach_radians_f32_2(mIn, mOut);
+            break;
+        case TEST_RELAXED_F32_3:
+            script_f32_relaxed.forEach_radians_f32_3(mIn, mOut);
+            break;
+        case TEST_RELAXED_F32_4:
+            script_f32_relaxed.forEach_radians_f32_4(mIn, mOut);
+            break;
+        }
+    }
+
+    @Override
+    protected float[] getRefArray(float[] in, int input_size, int stride, int skip) {
+        float[] ref = new float[input_size * stride];
+        for (int i = 0; i < input_size; i++) {
+            for (int j = 0; j < stride - skip; j++) {
+                int idx= i * stride + j;
+                int idxRef = i * (stride - skip) + j;
+                double val = (double)in[idx] * (Math.PI / 180.0);
+                ref[idxRef] = (float)val;
+            }
+        }
+        return ref;
+    }
+
+    /**
+     * radians test for float
+     */
+    public void testRadiansF32() {
+        doF32(0x1234f678, 3);
+    }
+
+    public void testRadiansF32_relaxed() {
+        doF32_relaxed(0x1234f678, 3);
+    }
+
+    /**
+     * radians test for float2
+     */
+    public void testRadiansF32_2() {
+        doF32_2(0x12345678, 3);
+    }
+
+    public void testRadiansF32_2_relaxed() {
+        doF32_2_relaxed(0x12345678, 3);
+    }
+
+    /**
+     * radians test for float3
+     */
+    public void testRadiansF32_3() {
+        doF32_3(0x123d5678, 3);
+    }
+
+    public void testRadiansF32_3_relaxed() {
+        doF32_3_relaxed(0x123d5678, 3);
+    }
+
+    /**
+     * radians test for float4
+     */
+    public void testRadiansF32_4() {
+        doF32_4(0x123a5678, 3);
+
+    }
+    public void testRadiansF32_4_relaxed() {
+        doF32_4_relaxed(0x123a5678, 3);
+    }
+
+}
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/RemainderTest.java b/tests/tests/renderscript/src/android/renderscript/cts/RemainderTest.java
new file mode 100644
index 0000000..edd3320
--- /dev/null
+++ b/tests/tests/renderscript/src/android/renderscript/cts/RemainderTest.java
@@ -0,0 +1,138 @@
+/*
+ * Copyright (C) 2012 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 android.renderscript.cts;
+
+import android.renderscript.Allocation;
+import android.renderscript.Element;
+import android.renderscript.RSRuntimeException;
+import com.android.cts.stub.R;
+
+public class RemainderTest extends RSBaseCompute {
+    private ScriptC_remainder_f32 script_f32;
+    private ScriptC_remainder_f32_relaxed script_f32_relaxed;
+    private Allocation mIn;
+
+    @Override
+    protected void setUp() throws Exception {
+        super.setUp();
+        script_f32 = new ScriptC_remainder_f32(mRS);
+        script_f32_relaxed = new ScriptC_remainder_f32_relaxed(mRS);
+    }
+
+    @Override
+    public void forEach(int testId, Allocation mIn, Allocation mOut) throws RSRuntimeException {
+        switch (testId) {
+        case TEST_F32:
+            script_f32.forEach_remainder_f32_1(mIn, mOut);
+            break;
+        case TEST_F32_2:
+            script_f32.forEach_remainder_f32_2(mIn, mOut);
+            break;
+        case TEST_F32_3:
+            script_f32.forEach_remainder_f32_3(mIn, mOut);
+            break;
+        case TEST_F32_4:
+            script_f32.forEach_remainder_f32_4(mIn, mOut);
+            break;
+
+        case TEST_RELAXED_F32:
+            script_f32_relaxed.forEach_remainder_f32_1(mIn, mOut);
+            break;
+        case TEST_RELAXED_F32_2:
+            script_f32_relaxed.forEach_remainder_f32_2(mIn, mOut);
+            break;
+        case TEST_RELAXED_F32_3:
+            script_f32_relaxed.forEach_remainder_f32_3(mIn, mOut);
+            break;
+        case TEST_RELAXED_F32_4:
+            script_f32_relaxed.forEach_remainder_f32_4(mIn, mOut);
+            break;
+        }
+    }
+
+    @Override
+    protected float[] getRefArray(float[] in, int input_size, int stride, int skip) {
+        float[] ref = new float[input_size * stride];
+        for (int i = 0; i < input_size; i++) {
+            for (int j = 0; j < stride - skip; j++) {
+                int idx = i * stride * 2 + j;
+                double num = (double)in[idx];
+                double den = (double)in[idx+stride];
+                ref[i * (stride - skip) + j] = (float)(num - Math.round(num / den) * den);
+            }
+        }
+        return ref;
+    }
+
+    @Override
+    protected Allocation setInAlloc(Element e) {
+        return mIn;
+    }
+
+    @Override
+    protected float[] makeInArray(int size) {
+        return new float[size*2];
+    }
+
+    public void testRemainderF32() {
+        ScriptField_remainder_f32 in = new ScriptField_remainder_f32(mRS, INPUTSIZE);
+        mIn = in.getAllocation();
+        doF32(0x123678, 0);
+    }
+
+    public void testRemainderF32_relaxed() {
+        ScriptField_remainder_f32 in = new ScriptField_remainder_f32(mRS, INPUTSIZE);
+        mIn = in.getAllocation();
+        doF32_relaxed(0x123678, 0);
+    }
+
+    public void testRemainderF32_2() {
+        ScriptField_remainder_f32_2 in = new ScriptField_remainder_f32_2(mRS, INPUTSIZE);
+        mIn = in.getAllocation();
+        doF32_2(0x1234a5, 0);
+    }
+
+    public void testRemainderF32_2_relaxed() {
+        ScriptField_remainder_f32_2 in = new ScriptField_remainder_f32_2(mRS, INPUTSIZE);
+        mIn = in.getAllocation();
+        doF32_2_relaxed(0x1234a5, 0);
+    }
+
+    public void testRemainderF32_3() {
+        ScriptField_remainder_f32_3 in = new ScriptField_remainder_f32_3(mRS, INPUTSIZE);
+        mIn = in.getAllocation();
+        doF32_3(0x1af345, 0);
+    }
+
+    public void testRemainderF32_3_relaxed() {
+        ScriptField_remainder_f32_3 in = new ScriptField_remainder_f32_3(mRS, INPUTSIZE);
+        mIn = in.getAllocation();
+        doF32_3_relaxed(0x1af345, 0);
+    }
+
+    public void testRemainderF32_4() {
+        ScriptField_remainder_f32_4 in = new ScriptField_remainder_f32_4(mRS, INPUTSIZE);
+        mIn = in.getAllocation();
+        doF32_4(0x12ce45, 0);
+    }
+
+    public void testRemainderF32_4_relaxed() {
+        ScriptField_remainder_f32_4 in = new ScriptField_remainder_f32_4(mRS, INPUTSIZE);
+        mIn = in.getAllocation();
+        doF32_4_relaxed(0x12ce45, 0);
+    }
+}
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/RintTest.java b/tests/tests/renderscript/src/android/renderscript/cts/RintTest.java
new file mode 100644
index 0000000..56c0acf
--- /dev/null
+++ b/tests/tests/renderscript/src/android/renderscript/cts/RintTest.java
@@ -0,0 +1,123 @@
+/*
+ * Copyright (C) 2012 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 android.renderscript.cts;
+
+import com.android.cts.stub.R;
+import android.renderscript.Allocation;
+import android.renderscript.RSRuntimeException;
+
+public class RintTest extends RSBaseCompute {
+    private ScriptC_rint_f32 script_f32;
+    private ScriptC_rint_f32_relaxed script_f32_relaxed;
+
+    @Override
+    protected void setUp() throws Exception {
+        super.setUp();
+        script_f32 = new ScriptC_rint_f32(mRS);
+        script_f32_relaxed = new ScriptC_rint_f32_relaxed(mRS);
+    }
+
+    @Override
+    public void forEach(int testId, Allocation mIn, Allocation mOut)
+            throws RSRuntimeException {
+        switch (testId) {
+        case TEST_F32:
+            script_f32.forEach_rint_f32_1(mIn, mOut);
+            break;
+        case TEST_F32_2:
+            script_f32.forEach_rint_f32_2(mIn, mOut);
+            break;
+        case TEST_F32_3:
+            script_f32.forEach_rint_f32_3(mIn, mOut);
+            break;
+        case TEST_F32_4:
+            script_f32.forEach_rint_f32_4(mIn, mOut);
+            break;
+
+        case TEST_RELAXED_F32:
+            script_f32_relaxed.forEach_rint_f32_1(mIn, mOut);
+            break;
+        case TEST_RELAXED_F32_2:
+            script_f32_relaxed.forEach_rint_f32_2(mIn, mOut);
+            break;
+        case TEST_RELAXED_F32_3:
+            script_f32_relaxed.forEach_rint_f32_3(mIn, mOut);
+            break;
+        case TEST_RELAXED_F32_4:
+            script_f32_relaxed.forEach_rint_f32_4(mIn, mOut);
+            break;
+        }
+    }
+
+    @Override
+    protected float[] getRefArray(float[] inArray, int input_size, int stride, int skip) {
+        float[] ref = new float[input_size * (stride - skip)];
+        for (int i = 0; i < input_size; i++) {
+            for (int j = 0; j < stride - skip; j++) {
+                int idxIn = i * stride + j;
+                int idxRef = i * (stride - skip) + j;
+                ref[idxRef] = (float) Math.rint(inArray[idxIn]);
+            }
+        }
+        return ref;
+    }
+
+    /**
+     * rint test for float
+     */
+    public void testRintF32() {
+        doF32(0x12345678, 0);
+    }
+
+    public void testRintF32_relaxed() {
+        doF32_relaxed(0x12345678, 0);
+    }
+
+    /**
+     * rint test for float2
+     */
+    public void testRintF32_2() {
+        doF32_2(0x12ab5678, 0);
+    }
+
+    public void testRintF32_2_relaxed() {
+        doF32_2_relaxed(0x12ab5678, 0);
+    }
+
+    /**
+     * rint test for float3
+     */
+    public void testRintF32_3() {
+        doF32_3(0x123ac678, 0);
+    }
+
+    public void testRintF32_3_relaxed() {
+        doF32_3_relaxed(0x123ac678, 0);
+    }
+
+    /**
+     * rint test for float4
+     */
+    public void testRintF32_4() {
+        doF32_4(0x1f345678, 0);
+
+    }
+    public void testRintF32_4_relaxed() {
+        doF32_4_relaxed(0x1f345678, 0);
+    }
+
+}
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/RootnTest.java b/tests/tests/renderscript/src/android/renderscript/cts/RootnTest.java
new file mode 100644
index 0000000..8301ad5
--- /dev/null
+++ b/tests/tests/renderscript/src/android/renderscript/cts/RootnTest.java
@@ -0,0 +1,169 @@
+/*
+ * Copyright (C) 2012 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 android.renderscript.cts;
+
+import android.renderscript.Allocation;
+import android.renderscript.Element;
+import android.renderscript.RSRuntimeException;
+import com.android.cts.stub.R;
+
+public class RootnTest extends RSBaseCompute {
+    private ScriptC_rootn_f32 script_f32;
+    private ScriptC_rootn_f32_relaxed script_f32_relaxed;
+    private int[] n;
+
+    @Override
+    protected void setUp() throws Exception {
+        super.setUp();
+        script_f32 = new ScriptC_rootn_f32(mRS);
+        script_f32_relaxed = new ScriptC_rootn_f32_relaxed(mRS);
+    }
+
+    @Override
+    public void forEach(int testId, Allocation mIn, Allocation mOut) throws RSRuntimeException {
+        switch (testId) {
+        case TEST_F32:
+            script_f32.forEach_rootn_f32_1(mIn, mOut);
+            break;
+        case TEST_F32_2:
+            script_f32.forEach_rootn_f32_2(mIn, mOut);
+            break;
+        case TEST_F32_3:
+            script_f32.forEach_rootn_f32_3(mIn, mOut);
+            break;
+        case TEST_F32_4:
+            script_f32.forEach_rootn_f32_4(mIn, mOut);
+            break;
+        case TEST_RELAXED_F32:
+            script_f32_relaxed.forEach_rootn_f32_1(mIn, mOut);
+            break;
+        case TEST_RELAXED_F32_2:
+            script_f32_relaxed.forEach_rootn_f32_2(mIn, mOut);
+            break;
+        case TEST_RELAXED_F32_3:
+            script_f32_relaxed.forEach_rootn_f32_3(mIn, mOut);
+            break;
+        case TEST_RELAXED_F32_4:
+            script_f32_relaxed.forEach_rootn_f32_4(mIn, mOut);
+            break;
+        }
+    }
+
+    @Override
+    protected float[] getRefArray(float[] in, int input_size, int stride, int skip) {
+        float[] ref = new float[input_size * stride];
+        for (int i = 0; i < input_size; i++) {
+            for (int j = 0; j < stride - skip; j++) {
+                int idx= i * stride + j;
+                int idxRef = i * (stride - skip) + j;
+                ref[idxRef] = (float)Math.pow((double)in[idx], 1.0/(double)n[idx]);
+            }
+        }
+        return ref;
+    }
+
+    public void testRootnF32() {
+        Allocation nAlloc = Allocation.createSized(mRS, Element.I32(mRS), INPUTSIZE);
+
+        n = new int[INPUTSIZE];
+        RSUtils.genRandom(0x12345678, 32, 1, 1, n);
+        nAlloc.copyFrom(n);
+        script_f32.set_n1(nAlloc);
+
+        doF32(0x716acd, 16);
+    }
+
+    public void testRootnF32_relaxed() {
+        Allocation nAlloc = Allocation.createSized(mRS, Element.I32(mRS), INPUTSIZE);
+
+        n = new int[INPUTSIZE];
+        RSUtils.genRandom(0x12345678, 32, 1, 1, n);
+        nAlloc.copyFrom(n);
+        script_f32_relaxed.set_n1(nAlloc);
+
+        doF32_relaxed(0x716acd, 16);
+    }
+
+
+    public void testRootnF32_2() {
+        Allocation nAlloc = Allocation.createSized(mRS, Element.I32_2(mRS), INPUTSIZE);
+
+        n = new int[INPUTSIZE*2];
+        RSUtils.genRandom(0xacdef1, 32, 1, 1, n);
+        nAlloc.copyFrom(n);
+        script_f32.set_n2(nAlloc);
+
+        doF32_2(0xacdef1, 16);
+    }
+
+    public void testRootnF32_2_relaxed() {
+        Allocation nAlloc = Allocation.createSized(mRS, Element.I32_2(mRS), INPUTSIZE);
+
+        n = new int[INPUTSIZE*2];
+        RSUtils.genRandom(0xacdef1, 32, 1, 1, n);
+        nAlloc.copyFrom(n);
+        script_f32_relaxed.set_n2(nAlloc);
+
+        doF32_2_relaxed(0xacdef1, 16);
+    }
+
+
+    public void testRootnF32_3() {
+        Allocation nAlloc = Allocation.createSized(mRS, Element.I32_3(mRS), INPUTSIZE);
+
+        n = new int[INPUTSIZE*4];
+        RSUtils.genRandom(0xa123f1, 32, 1, 1, n, 4, 1);
+        nAlloc.copyFrom(n);
+        script_f32.set_n3(nAlloc);
+
+        doF32_3(0xaac3f1, 16);
+    }
+
+    public void testRootnF32_3_relaxed() {
+        Allocation nAlloc = Allocation.createSized(mRS, Element.I32_3(mRS), INPUTSIZE);
+
+        n = new int[INPUTSIZE*4];
+        RSUtils.genRandom(0xa123f1, 32, 1, 1, n, 4, 1);
+        nAlloc.copyFrom(n);
+        script_f32_relaxed.set_n3(nAlloc);
+
+        doF32_3_relaxed(0xaac3f1, 16);
+    }
+
+    public void testRootnF32_4() {
+        Allocation nAlloc = Allocation.createSized(mRS, Element.I32_4(mRS), INPUTSIZE);
+
+        n = new int[INPUTSIZE*4];
+        RSUtils.genRandom(0x4323ca, 32, 1, 1, n);
+        nAlloc.copyFrom(n);
+        script_f32.set_n4(nAlloc);
+
+        doF32_4(0xaa12f1, 16);
+    }
+
+    public void testRootnF32_4_relaxed() {
+        Allocation nAlloc = Allocation.createSized(mRS, Element.I32_4(mRS), INPUTSIZE);
+
+        n = new int[INPUTSIZE*4];
+        RSUtils.genRandom(0x4323ca, 32, 1, 1, n);
+        nAlloc.copyFrom(n);
+        script_f32_relaxed.set_n4(nAlloc);
+
+        doF32_4_relaxed(0xaa12f1, 16);
+    }
+
+}
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/RoundTest.java b/tests/tests/renderscript/src/android/renderscript/cts/RoundTest.java
new file mode 100644
index 0000000..ab85bc1
--- /dev/null
+++ b/tests/tests/renderscript/src/android/renderscript/cts/RoundTest.java
@@ -0,0 +1,131 @@
+/*
+ * Copyright (C) 2012 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 android.renderscript.cts;
+
+import com.android.cts.stub.R;
+import android.renderscript.Allocation;
+import android.renderscript.RSRuntimeException;
+
+public class RoundTest extends RSBaseCompute {
+    private ScriptC_round_f32 script_f32;
+    private ScriptC_round_f32_relaxed script_f32_relaxed;
+
+    @Override
+    protected void setUp() throws Exception {
+        super.setUp();
+        script_f32 = new ScriptC_round_f32(mRS);
+        script_f32_relaxed = new ScriptC_round_f32_relaxed(mRS);
+    }
+
+    @Override
+    public void forEach(int testId, Allocation mIn, Allocation mOut)
+            throws RSRuntimeException {
+        switch (testId) {
+        case TEST_F32:
+            script_f32.forEach_round_f32_1(mIn, mOut);
+            break;
+        case TEST_F32_2:
+            script_f32.forEach_round_f32_2(mIn, mOut);
+            break;
+        case TEST_F32_3:
+            script_f32.forEach_round_f32_3(mIn, mOut);
+            break;
+        case TEST_F32_4:
+            script_f32.forEach_round_f32_4(mIn, mOut);
+            break;
+
+        case TEST_RELAXED_F32:
+            script_f32_relaxed.forEach_round_f32_1(mIn, mOut);
+            break;
+        case TEST_RELAXED_F32_2:
+            script_f32_relaxed.forEach_round_f32_2(mIn, mOut);
+            break;
+        case TEST_RELAXED_F32_3:
+            script_f32_relaxed.forEach_round_f32_3(mIn, mOut);
+            break;
+        case TEST_RELAXED_F32_4:
+            script_f32_relaxed.forEach_round_f32_4(mIn, mOut);
+            break;
+        }
+    }
+
+    @Override
+    protected float[] getRefArray(float[] inArray, int input_size, int stride, int skip) {
+        float[] ref = new float[input_size * (stride - skip)];
+        for (int i = 0; i < input_size; i++) {
+            for (int j = 0; j < stride - skip; j++) {
+                int idxIn = i * stride + j;
+                int idxRef = i * (stride - skip) + j;
+                int res = ((Float.floatToIntBits(inArray[idxIn]) >> 31) & 0x01);
+                float roundValue = (float) Math.round(inArray[idxIn]);
+                float expective = roundValue;
+                if ((roundValue - inArray[idxIn]) == 0.5f && res == 1)
+                    expective -= 1;
+                if (res == 1 && expective == +0.0f) {
+                    expective = -0.0f;
+                }
+                ref[idxRef] = expective;
+            }
+        }
+        return ref;
+    }
+
+    /**
+     * round test for float
+     */
+    public void testRoundF32() {
+        doF32(0x12345678, 0);
+    }
+
+    public void testRoundF32_relaxed() {
+        doF32_relaxed(0x12345678, 0);
+    }
+
+    /**
+     * round test for float2
+     */
+    public void testRoundF32_2() {
+        doF32_2(0x123a5678, 0);
+    }
+
+    public void testRoundF32_2_relaxed() {
+        doF32_2_relaxed(0x123a5678, 0);
+    }
+
+    /**
+     * round test for float3
+     */
+    public void testRoundF32_3() {
+        doF32_3(0x1af45678, 0);
+    }
+
+    public void testRoundF32_3_relaxed() {
+        doF32_3_relaxed(0x1af45678, 0);
+    }
+
+    /**
+     * round test for float4
+     */
+    public void testRoundF32_4() {
+        doF32_4(0x1f345678, 0);
+
+    }
+    public void testRoundF32_4_relaxed() {
+        doF32_4_relaxed(0x1f345678, 0);
+    }
+
+}
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/RsFracTest.java b/tests/tests/renderscript/src/android/renderscript/cts/RsFracTest.java
new file mode 100644
index 0000000..2185ae2
--- /dev/null
+++ b/tests/tests/renderscript/src/android/renderscript/cts/RsFracTest.java
@@ -0,0 +1,58 @@
+/**
+ * Copyright (C) 2012 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 android.renderscript.cts;
+
+import android.renderscript.Allocation;
+import android.renderscript.RSRuntimeException;
+import com.android.cts.stub.R;
+
+public class RsFracTest extends RSBaseCompute {
+    private ScriptC_rs_frac_f32 mScript;
+    private ScriptC_rs_frac_f32_relaxed mScript_relaxed;
+
+    @Override
+    public void forEach(int testId, Allocation mIn, Allocation mOut)
+            throws RSRuntimeException {
+        if (testId == TEST_F32) {
+            mScript.forEach_root(mIn, mOut);
+        } else if (testId == TEST_RELAXED_F32) {
+            mScript_relaxed.forEach_root(mIn, mOut);
+        }
+    }
+
+    @Override
+    protected float[] getRefArray(float[] in, int input_size, int stride, int skip) {
+        float[] ref = new float[input_size * stride];
+        for (int i = 0; i < input_size; i++) {
+            for (int j = 0; j < stride - skip; j++) {
+                int idx= i * stride + j;
+                int idxRef = i * (stride - skip) + j;
+                ref[idxRef] = Math.min(in[idx] - (float)Math.floor((double)in[idx]), 0x1.fffffep-1f);
+            }
+        }
+        return ref;
+    }
+
+    public void testRsFrac() {
+        mScript = new ScriptC_rs_frac_f32(mRS, mRes, R.raw.rs_frac_f32);
+        doF32(0x12, 0);
+    }
+    public void testRsFrac_relaxed() {
+        mScript_relaxed = new ScriptC_rs_frac_f32_relaxed(mRS, mRes, R.raw.rs_frac_f32);
+        doF32_relaxed(0x12, 1);
+    }
+
+}
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/RsPackColorTo8888Test.java b/tests/tests/renderscript/src/android/renderscript/cts/RsPackColorTo8888Test.java
new file mode 100644
index 0000000..0b008a7
--- /dev/null
+++ b/tests/tests/renderscript/src/android/renderscript/cts/RsPackColorTo8888Test.java
@@ -0,0 +1,150 @@
+/*
+ * Copyright (C) 2012 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 android.renderscript.cts;
+
+import com.android.cts.stub.R;
+import android.renderscript.Allocation;
+import android.renderscript.Element;
+import android.renderscript.Float3;
+import android.renderscript.Float4;
+import android.renderscript.RSRuntimeException;
+
+public class RsPackColorTo8888Test extends RSBaseCompute {
+    private ScriptC_rs_pack_color_to_8888 script_f32;
+
+    @Override
+    protected void setUp() throws Exception {
+        super.setUp();
+        script_f32 = new ScriptC_rs_pack_color_to_8888(mRS);
+    }
+
+    @Override
+    public void forEach(int testId, Allocation mIn, Allocation mOut) throws RSRuntimeException {
+        switch (testId) {
+        case 0:
+            script_f32.forEach_pack_color_to_8888_rgb(mIn, mOut);
+            break;
+        case 1:
+            script_f32.forEach_pack_color_to_8888_rgba(mIn, mOut);
+            break;
+        case 2:
+            script_f32.forEach_pack_color_to_8888_f32_3(mIn, mOut);
+            break;
+        case 3:
+            script_f32.forEach_pack_color_to_8888_f32_4(mIn, mOut);
+            break;
+        }
+    }
+
+    public void testRsPackColorTo8888RGB() {
+        float3input(0x17abc72, 0);
+    }
+
+    public void testRsPackColorTo8888RGBA() {
+        float4input(0x76a6b, 1);
+    }
+
+    public void testRsPackColorTo8888F32_3() {
+        float3input(0x17abc72, 2);
+    }
+
+    public void testRsPackColorTo8888F32_4() {
+        float4input(0xabc72, 3);
+    }
+
+    private void float3input(long seed, int testId) {
+        Allocation mAllocationIn = Allocation.createSized(mRS, Element.F32_3(mRS), INPUTSIZE);
+        Allocation mAllocationOut = Allocation.createSized(mRS, Element.U8_4(mRS), INPUTSIZE);
+        float[] inArray = new float[INPUTSIZE * 4];
+        byte[] outArray = new byte[INPUTSIZE * 4];
+        byte[] refArray = new byte[INPUTSIZE * 4];
+        RSUtils.genRandom(seed, 1, 0, inArray, 4, 1);
+        mAllocationIn.copy1DRangeFrom(0, INPUTSIZE, inArray);
+        try {
+            RSUtils.forEach(this, testId, mAllocationIn, mAllocationOut);
+        } catch (RSRuntimeException e) {
+        }
+        mAllocationOut.copyTo(outArray);
+        for (int i = 0; i < outArray.length; i += 4) {
+            int offset = i;
+            Float3 inValues = new Float3(inArray[offset], inArray[offset + 1], inArray[offset + 2]);
+            byte[] cValue = rs_PackColorTo8888(inValues);
+            refArray[i] = cValue[0];
+            refArray[i + 1] = cValue[1];
+            refArray[i + 2] = cValue[2];
+            refArray[i + 3] = cValue[3];
+            for (int j = 0; j < 4; j++){
+                assertEquals(refArray[i+j] & 0xff, outArray[i+j] & 0xff);
+            }
+        }
+    }
+
+    private void float4input(long seed, int testId) {
+        Allocation mAllocationIn = Allocation.createSized(mRS, Element.F32_4(mRS), INPUTSIZE);
+        Allocation mAllocationOut = Allocation.createSized(mRS, Element.U8_4(mRS), INPUTSIZE);
+        float[] inArray = new float[INPUTSIZE * 4];
+        byte[] outArray = new byte[INPUTSIZE * 4];
+        byte[] refArray = new byte[INPUTSIZE * 4];
+        RSUtils.genRandom(seed, 1, 0, inArray);
+        mAllocationIn.copy1DRangeFrom(0, INPUTSIZE, inArray);
+        try {
+            RSUtils.forEach(this, testId, mAllocationIn, mAllocationOut);
+        } catch (RSRuntimeException e) {
+        }
+        mAllocationOut.copyTo(outArray);
+        for (int i = 0; i < outArray.length; i += 4) {
+            int offset = i;
+            Float4 inValues = new Float4( inArray[offset],inArray[offset + 1],inArray[offset + 2],inArray[offset + 3]);
+            byte[] cValue = rs_PackColorTo8888(inValues);
+            refArray[i] = cValue[0];
+            refArray[i + 1] = cValue[1];
+            refArray[i + 2] = cValue[2];
+            refArray[i + 3] = cValue[3];
+            for (int j = 0; j < 4; j++){
+                assertEquals(refArray[i+j] & 0xff, outArray[i+j] & 0xff);
+            }
+        }
+    }
+
+    private byte[] rs_PackColorTo8888(Float3 color) {
+        color.x *= 255.f;
+        color.y *= 255.f;
+        color.z *= 255.f;
+        color.x += 0.5f;
+        color.y += 0.5f;
+        color.z += 0.5f;
+        byte[] c = {
+            (byte) color.x, (byte) color.y, (byte) color.z, (byte) 255
+        };
+        return c;
+    }
+
+    private byte[] rs_PackColorTo8888(Float4 color) {
+        color.x *= 255.f;
+        color.y *= 255.f;
+        color.z *= 255.f;
+        color.x += 0.5f;
+        color.y += 0.5f;
+        color.z += 0.5f;
+        color.w *= 255.f;
+        color.w += 0.5f;
+        byte[] c = {
+            (byte) color.x, (byte) color.y, (byte) color.z, (byte) color.w
+        };
+        return c;
+    }
+}
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/RsUnpackColor8888Test.java b/tests/tests/renderscript/src/android/renderscript/cts/RsUnpackColor8888Test.java
new file mode 100644
index 0000000..4df1169
--- /dev/null
+++ b/tests/tests/renderscript/src/android/renderscript/cts/RsUnpackColor8888Test.java
@@ -0,0 +1,73 @@
+/*
+ * Copyright (C) 2012 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 android.renderscript.cts;
+
+import com.android.cts.stub.R;
+import android.renderscript.Allocation;
+import android.renderscript.Element;
+import android.renderscript.Float4;
+import android.renderscript.RSRuntimeException;
+import java.util.Random;
+
+public class RsUnpackColor8888Test extends RSBaseCompute {
+    private ScriptC_rs_unpack_color_8888 script;
+
+    @Override
+    public void forEach(int testId, Allocation mIn, Allocation mOut) throws RSRuntimeException {
+        script.forEach_root(mIn, mOut);
+    }
+
+    public void testRsUnpackColor8888RGB() {
+        script = new ScriptC_rs_unpack_color_8888(mRS, mRes, R.raw.rs_unpack_color_8888);
+        Allocation mAllocationIn = Allocation.createSized(mRS, Element.U8_4(mRS), INPUTSIZE);
+        Allocation mAllocationOut = Allocation.createSized(mRS, Element.F32_4(mRS), INPUTSIZE);
+        byte[] inArray = new byte[INPUTSIZE * 4];
+        float[] outArray = new float[INPUTSIZE * 4];
+        float[] refArray = new float[INPUTSIZE * 4];
+
+        Random r = new Random(0x128fa817);
+        r.nextBytes(inArray);
+
+        mAllocationIn.copy1DRangeFrom(0, INPUTSIZE, inArray);
+        try {
+            RSUtils.forEach(this, 0, mAllocationIn, mAllocationOut);
+        } catch (RSRuntimeException e) {
+        }
+        mAllocationOut.copyTo(outArray);
+
+        for (int i = 0; i < outArray.length; i += 4) {
+            byte[] inValues = {inArray[i], inArray[i+1], inArray[i+2], inArray[i+3]};
+            Float4 c = rs_UnpackColor8888(inValues);
+            refArray[i] = c.x;
+            refArray[i + 1] = c.y;
+            refArray[i + 2] = c.z;
+            refArray[i + 3] = c.w;
+            for (int j = 0; j < 4; j++){
+                assertEquals(refArray[i+j], outArray[i+j]);
+            }
+        }
+    }
+
+    private static Float4 rs_UnpackColor8888(byte[] c) {
+        Float4 ret = new Float4(0.003921569f, 0.003921569f, 0.003921569f, 0.003921569f);
+        ret.x *= (c[0] & 0xff);
+        ret.y *= (c[1] & 0xff);
+        ret.z *= (c[2] & 0xff);
+        ret.w *= (c[3] & 0xff);
+        return ret;
+    }
+}
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/RsqrtTest.java b/tests/tests/renderscript/src/android/renderscript/cts/RsqrtTest.java
new file mode 100644
index 0000000..1183886
--- /dev/null
+++ b/tests/tests/renderscript/src/android/renderscript/cts/RsqrtTest.java
@@ -0,0 +1,110 @@
+/*
+ * Copyright (C) 2012 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 android.renderscript.cts;
+
+import com.android.cts.stub.R;
+import android.renderscript.Allocation;
+import android.renderscript.RSRuntimeException;
+
+public class RsqrtTest extends RSBaseCompute {
+    private ScriptC_rsqrt_f32 script_f32;
+    private ScriptC_rsqrt_f32_relaxed script_f32_relaxed;
+
+    @Override
+    protected void setUp() throws Exception {
+        super.setUp();
+        script_f32 = new ScriptC_rsqrt_f32(mRS);
+        script_f32_relaxed = new ScriptC_rsqrt_f32_relaxed(mRS);
+    }
+
+    @Override
+    public void forEach(int testId, Allocation mIn, Allocation mOut) throws RSRuntimeException {
+        switch (testId) {
+        case TEST_F32:
+            script_f32.forEach_Rsqrt_f32_1(mIn, mOut);
+            break;
+        case TEST_F32_2:
+            script_f32.forEach_Rsqrt_f32_2(mIn, mOut);
+            break;
+        case TEST_F32_3:
+            script_f32.forEach_Rsqrt_f32_3(mIn, mOut);
+            break;
+        case TEST_F32_4:
+            script_f32.forEach_Rsqrt_f32_4(mIn, mOut);
+            break;
+
+        case TEST_RELAXED_F32:
+            script_f32_relaxed.forEach_Rsqrt_f32_1(mIn, mOut);
+            break;
+        case TEST_RELAXED_F32_2:
+            script_f32_relaxed.forEach_Rsqrt_f32_2(mIn, mOut);
+            break;
+        case TEST_RELAXED_F32_3:
+            script_f32_relaxed.forEach_Rsqrt_f32_3(mIn, mOut);
+            break;
+        case TEST_RELAXED_F32_4:
+            script_f32_relaxed.forEach_Rsqrt_f32_4(mIn, mOut);
+            break;
+        }
+    }
+
+    @Override
+    protected float[] getRefArray(float[] in, int input_size, int stride, int skip) {
+        float[] ref = new float[input_size * stride];
+        for (int i = 0; i < input_size; i++) {
+            for (int j = 0; j < stride - skip; j++) {
+                int idx= i * stride + j;
+                int idxRef = i * (stride - skip) + j;
+                ref[idxRef] = (float)Math.pow((double)in[idx], -0.5);
+            }
+        }
+        return ref;
+    }
+
+    public void testRsqrtF32() {
+        doF32(0x12345678, 2);
+    }
+
+    public void testRsqrtF32_relaxed() {
+        doF32_relaxed(0x12345678, 2);
+    }
+
+    public void testRsqrtF32_2() {
+        doF32_2(0x12ae4567, 2);
+    }
+
+    public void testRsqrtF32_2_relaxed() {
+        doF32_2_relaxed(0x12ae4567, 2);
+    }
+
+    public void testRsqrtF32_3() {
+        doF32_3(0x12cf8, 2);
+    }
+
+    public void testRsqrtF32_3_relaxed() {
+        doF32_3_relaxed(0x12cf8, 2);
+    }
+
+    public void testRsqrtF32_4() {
+        doF32_4(0x12abc8, 2);
+
+    }
+    public void testRsqrtF32_4_relaxed() {
+        doF32_4_relaxed(0x12abc8, 2);
+    }
+
+}
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/ScriptC_leak.java b/tests/tests/renderscript/src/android/renderscript/cts/ScriptC_leak.java
new file mode 100644
index 0000000..c026755
--- /dev/null
+++ b/tests/tests/renderscript/src/android/renderscript/cts/ScriptC_leak.java
@@ -0,0 +1,62 @@
+/*
+ * Copyright (C) 2011-2012 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.
+ */
+
+/*
+ * This file is auto-generated. DO NOT MODIFY!
+ * The source Renderscript file: leak.rs
+ */
+package android.renderscript.cts;
+
+import android.renderscript.*;
+import android.content.res.Resources;
+
+/**
+ * @hide
+ */
+public class ScriptC_leak extends ScriptC {
+    private static final String __rs_resource_name = "leak";
+    // Constructor
+    public  ScriptC_leak(RenderScript rs) {
+        this(rs,
+             rs.getApplicationContext().getResources(),
+             rs.getApplicationContext().getResources().getIdentifier(
+                 __rs_resource_name, "raw",
+                 rs.getApplicationContext().getPackageName()));
+    }
+
+    public  ScriptC_leak(RenderScript rs, Resources resources, int id) {
+        super(rs, resources, id);
+    }
+
+    private FieldPacker __rs_fp_ALLOCATION;
+    private final static int mExportVarIdx_a = 0;
+    private Allocation mExportVar_a;
+    public synchronized void set_a(Allocation v) {
+        setVar(mExportVarIdx_a, v);
+        mExportVar_a = v;
+    }
+
+    public Allocation get_a() {
+        return mExportVar_a;
+    }
+
+    private final static int mExportFuncIdx_print = 0;
+    public void invoke_print() {
+        invoke(mExportFuncIdx_print);
+    }
+
+}
+
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/ScriptGroupTest.java b/tests/tests/renderscript/src/android/renderscript/cts/ScriptGroupTest.java
index 64496ef..c9a79c8 100644
--- a/tests/tests/renderscript/src/android/renderscript/cts/ScriptGroupTest.java
+++ b/tests/tests/renderscript/src/android/renderscript/cts/ScriptGroupTest.java
@@ -202,13 +202,13 @@
         Type compareType = new Type.Builder(mRS, Element.I32(mRS)).create();
 
         ScriptC_scriptgroup node1, node2, node3, node4, node5, compare;
-        node1 = new ScriptC_scriptgroup(mRS, mRes, R.raw.scriptgroup);
-        node2 = new ScriptC_scriptgroup(mRS, mRes, R.raw.scriptgroup);
-        node3 = new ScriptC_scriptgroup(mRS, mRes, R.raw.scriptgroup);
-        node4 = new ScriptC_scriptgroup(mRS, mRes, R.raw.scriptgroup);
-        node5 = new ScriptC_scriptgroup(mRS, mRes, R.raw.scriptgroup);
+        node1 = new ScriptC_scriptgroup(mRS);
+        node2 = new ScriptC_scriptgroup(mRS);
+        node3 = new ScriptC_scriptgroup(mRS);
+        node4 = new ScriptC_scriptgroup(mRS);
+        node5 = new ScriptC_scriptgroup(mRS);
 
-        compare = new ScriptC_scriptgroup(mRS, mRes, R.raw.scriptgroup);
+        compare = new ScriptC_scriptgroup(mRS);
 
         Allocation in1, in2, out, resultAlloc;
         in1 = Allocation.createTyped(mRS, connect);
@@ -265,4 +265,50 @@
         assertTrue(result[0] == 2);
     }
 
+    /**
+     * Tests a case where a shared global variable is updated by the first kernel in a group,
+     * but then read by a subsequent kernel.
+     *
+     * The test ensures that we don't accidentally apply any fusion optimizations to the kernel
+     * pair, since there is a potential dependency that crosses the kernel cell boundary.
+     */
+    public void testScriptGroupSharedGlobal() {
+        Type i32 = new Type.Builder(mRS, Element.I32(mRS)).setX(1).create();
+        Type u32 = new Type.Builder(mRS, Element.U32(mRS)).setX(2).create();
+
+        Allocation aFailed = Allocation.createTyped(mRS, i32);
+        Allocation aSharedInt = Allocation.createTyped(mRS, i32);
+
+        ScriptC_group1 mG1 = new ScriptC_group1(mRS);
+        ScriptC_group2 mG2 = new ScriptC_group2(mRS);
+
+        mG1.set_aSharedInt(aSharedInt);
+        mG2.set_aSharedInt(aSharedInt);
+        mG2.set_aFailed(aFailed);
+
+        int [] Failed = new int [1];
+        Failed[0] = 0;
+        aFailed.copyFrom(Failed);
+
+        ScriptGroup.Builder b = new ScriptGroup.Builder(mRS);
+
+        // Writes to aSharedInt[x] in the kernel.
+        b.addKernel(mG1.getKernelID_setSharedInt());
+        // Reads aSharedInt[1] to verify it is -5.
+        b.addKernel(mG2.getKernelID_getSharedInt());
+        // If we fuse mG1/mG2, we won't see the update to the aSharedInt[1] during mG2 for x == 0.
+        // The update is only visible if we correctly identify the dependency and execute all of
+        // mG1 before starting on mG2.
+        b.addConnection(u32, mG1.getKernelID_setSharedInt(), mG2.getKernelID_getSharedInt());
+        ScriptGroup group = b.create();
+        group.execute();
+
+        mG2.invoke_verify();
+        aFailed.copyTo(Failed);
+        if (Failed[0] != 0) {
+            FoundError = true;
+        }
+
+        checkForErrors();
+    }
 }
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/SendToClient.java b/tests/tests/renderscript/src/android/renderscript/cts/SendToClient.java
new file mode 100644
index 0000000..56961a9
--- /dev/null
+++ b/tests/tests/renderscript/src/android/renderscript/cts/SendToClient.java
@@ -0,0 +1,110 @@
+/*
+ * Copyright (C) 2012 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 android.renderscript.cts;
+
+import java.util.Random;
+
+import android.renderscript.Allocation;
+import android.renderscript.Element;
+import android.renderscript.RenderScript.RSMessageHandler;
+import com.android.cts.stub.R;
+
+public class SendToClient extends RSBaseCompute {
+    private Allocation mInAllocation;
+    private static Random random = new Random();
+
+    int outArray[] = new int[4];
+    RSMessageHandlerForTest mRsMessage = new RSMessageHandlerForTest() {
+        public void run() {
+            switch (mID) {
+                default:
+                    outArray[0] = mID;
+                    outArray[1] = mData[0];
+                    outArray[2] = mData[1];
+                    outArray[3] = mData[2];
+                    try {
+                        releaseForTest();
+                    } catch (Exception e) {
+                        //TODO: handle exception
+                    }
+                    return;
+            }
+        }
+    };
+
+    /*
+     * test rsSendToClient(int cmdID, const void* data, uint len);
+     */
+    public void testSendToClient() {
+        int[] inArray = new int[4];
+        for (int i=0; i<4; i++) {
+             inArray[i] = random.nextInt(1000);
+        }
+        mInAllocation = Allocation.createSized(mRS, Element.I32_4(mRS), 1);
+        mInAllocation.copyFrom(inArray);
+        ScriptC_send_to_client mScript;
+        mRS.setMessageHandler(mRsMessage);
+        mScript = new ScriptC_send_to_client(mRS,mRes,R.raw.send_to_client);
+        mScript.forEach_root(mInAllocation);
+        try {
+            mRsMessage.waitForTest();
+        } catch (InterruptedException e) {
+            // TODO Auto-generated catch block
+            e.printStackTrace();
+        }
+        for (int i=0; i<inArray.length; i++) {
+            assertEquals(createErrorMsgF(i, inArray[i], outArray[i]),
+                    inArray[i], outArray[i]);
+        }
+    }
+
+    /*
+     * test rsSendToClient(int cmdID)
+     */
+    public void testSendToClient1(){
+        outArray[0] = 0;
+        int Id = random.nextInt(100);
+        mRS.setMessageHandler(mRsMessage);
+        ScriptC_send_to_client_1 mScript;
+        mScript = new ScriptC_send_to_client_1(mRS,mRes,R.raw.send_to_client_1);
+        mScript.invoke_callback(Id);
+        try {
+            mRsMessage.waitForTest();
+        } catch (InterruptedException e) {
+        // TODO Auto-generated catch block
+            e.printStackTrace();
+        }
+        assertEquals(createErrorMsgF(1, Id, outArray[0]), Id, outArray[0]);
+    }
+
+    private String createErrorMsgF(int i, int in, int temp) {
+        StringBuffer bf = new StringBuffer();
+        bf.append("[Wrong value]");
+        bf.append("; i = " + i);
+        bf.append("; InValue = " + in);
+        bf.append("; exceptValue = " + temp);
+        return bf.toString();
+    }
+
+    class RSMessageHandlerForTest extends RSMessageHandler {
+        public synchronized void waitForTest() throws InterruptedException {
+            wait();
+        }
+        public synchronized void releaseForTest() throws InterruptedException {
+            notify();
+        }
+    }
+}
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/SendToClientBlockingTest.java b/tests/tests/renderscript/src/android/renderscript/cts/SendToClientBlockingTest.java
new file mode 100644
index 0000000..5083f87
--- /dev/null
+++ b/tests/tests/renderscript/src/android/renderscript/cts/SendToClientBlockingTest.java
@@ -0,0 +1,107 @@
+/*
+ * Copyright (C) 2012 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 android.renderscript.cts;
+
+import android.renderscript.RenderScript.RSMessageHandler;
+
+import java.util.Random;
+
+import com.android.cts.stub.R;
+
+public class SendToClientBlockingTest extends RSBaseCompute {
+
+    private ScriptC_sendToClientBlocking mScript;
+    private Random random;
+
+    private int resultId = 0;
+    private int resultData = 0;
+
+    @Override
+    protected void setUp() throws Exception {
+        super.setUp();
+        random = new Random();
+    }
+
+    RSMessageHandlerForTest mRsMessageForTest = new RSMessageHandlerForTest() {
+        public void run() {
+            switch (mID) {
+            default:
+                resultId = mID;
+                resultData = mData[0];
+                try {
+                    releaseForTest();
+                } catch (Exception e) {
+                    // TODO: handle exception
+                }
+                return;
+            }
+        }
+    };
+
+    public void testSendToClientBlocking1Params() {
+
+        int id = random.nextInt(10);
+        mRS.setMessageHandler(mRsMessageForTest);
+        mScript = new ScriptC_sendToClientBlocking(mRS, mRes,
+                R.raw.sendtoclientblocking);
+        mScript.set_ID(id);
+        // Log.i("testSendToClientBlocking1Params", "==" + id);
+        mScript.invoke_callBack1Params();
+        try {
+            mRsMessageForTest.waitForTest();
+        } catch (InterruptedException e) {
+            // TODO Auto-generated catch block
+            e.printStackTrace();
+        }
+        assertTrue("testSendToClientBlocking1Params fail the result is:" + resultId,
+                resultId == id);
+    }
+
+    public void testSendToClientBlocking3Params() {
+
+        int id = random.nextInt(10);
+        int data = random.nextInt();
+        mRS.setMessageHandler(mRsMessageForTest);
+        mScript = new ScriptC_sendToClientBlocking(mRS, mRes,
+                R.raw.sendtoclientblocking);
+        mScript.set_ID(id);
+        mScript.set_data(data);
+        // Log.i("testSendToClientBlocking3Params", data + "==" + id);
+        mScript.invoke_callBack3Params();
+        try {
+            mRsMessageForTest.waitForTest();
+        } catch (InterruptedException e) {
+            // TODO Auto-generated catch block
+            e.printStackTrace();
+        }
+        assertTrue("testSendToClientBlocking3Params fail the ID is:" + resultId +
+                "The data is:" + data, resultId == id && resultData == data);
+    }
+
+}
+
+/** This class is used to wait callback. */
+class RSMessageHandlerForTest extends RSMessageHandler {
+
+    public synchronized void waitForTest() throws InterruptedException {
+        wait();
+    }
+
+    public synchronized void releaseForTest() throws InterruptedException {
+        notify();
+    }
+}
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/SetObjectTest.java b/tests/tests/renderscript/src/android/renderscript/cts/SetObjectTest.java
new file mode 100644
index 0000000..a6626ee
--- /dev/null
+++ b/tests/tests/renderscript/src/android/renderscript/cts/SetObjectTest.java
@@ -0,0 +1,165 @@
+/*
+ * Copyright (C) 2012 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 android.renderscript.cts;
+
+import android.renderscript.*;
+import android.renderscript.Allocation;
+import android.renderscript.Element;
+import android.util.Log;
+import com.android.cts.stub.R;
+
+import junit.framework.Assert;
+
+public class SetObjectTest extends RSBaseCompute {
+    int ObjectNum = 1;
+    private Allocation mIn;
+    private Allocation mOut;
+
+    Element element;
+    Type type;
+    Allocation allocation;
+    Sampler sampler;
+    Script script;
+
+    private ScriptC_set_object ms_set;
+
+    @Override
+    protected void setUp() throws Exception {
+        super.setUp();
+
+        element = Element.BOOLEAN(mRS);
+
+        type = new Type.Builder(mRS, Element.I8(mRS)).setX(1).create();
+        allocation = Allocation.createTyped(mRS, type);
+        sampler = new Sampler.Builder(mRS).create();
+        script = new ScriptC_set_object(mRS);
+
+        ms_set = new ScriptC_set_object(mRS);
+    }
+
+    /**
+     * rsSetObject test
+     */
+    public void testSetObjectElement() {
+        ScriptField__set_object_element_input filed = new ScriptField__set_object_element_input(
+                mRS, 1);
+        ScriptField__set_object_element_input.Item mItem = new ScriptField__set_object_element_input.Item();
+        mItem.element = element;
+        filed.set(mItem, 0, true);
+
+        mIn = filed.getAllocation();
+        mOut = Allocation.createSized(mRS, Element.I32(mRS), ObjectNum);
+        try {
+            ms_set.forEach_set_object_element(mIn, mOut);
+        } catch (RSRuntimeException e) {
+            Log.i("compare", "rsSetObject root fail");
+        }
+        int[] tmpArray = new int[ObjectNum];
+        mOut.copyTo(tmpArray);
+
+        Assert.assertTrue("rsSetObject element test fail: " + "Expect 1;value "
+                + tmpArray[0], tmpArray[0] == 1);
+    }
+
+    public void testSetObjectType() {
+        ScriptField__set_object_type_input filed = new ScriptField__set_object_type_input(mRS, 1);
+        ScriptField__set_object_type_input.Item mItem = new ScriptField__set_object_type_input.Item();
+        mItem.type = type;
+        filed.set(mItem, 0, true);
+
+        mIn = filed.getAllocation();
+        mOut = Allocation.createSized(mRS, Element.I32(mRS), ObjectNum);
+
+        try {
+            ms_set.forEach_set_object_type(mIn, mOut);
+        } catch (RSRuntimeException e) {
+            Log.i("compare", "rsSetObject root fail");
+        }
+        int[] tmpArray = new int[ObjectNum];
+        mOut.copyTo(tmpArray);
+
+        Assert.assertTrue(
+                "rsSetObject type test fail: " + "Expect 1;value " + tmpArray[0],
+                tmpArray[0] == 1);
+    }
+
+    public void testSetObjectAllocation() {
+        ScriptField__set_object_allocation_input filed = new ScriptField__set_object_allocation_input(
+                mRS, 1);
+        ScriptField__set_object_allocation_input.Item mItem = new ScriptField__set_object_allocation_input.Item();
+        mItem.allocation = allocation;
+        filed.set(mItem, 0, true);
+
+        mIn = filed.getAllocation();
+        mOut = Allocation.createSized(mRS, Element.I32(mRS), ObjectNum);
+
+        try {
+            ms_set.forEach_set_object_allocation(mIn, mOut);
+        } catch (RSRuntimeException e) {
+            Log.i("compare", "rsSetObject root fail");
+        }
+        int[] tmpArray = new int[ObjectNum];
+        mOut.copyTo(tmpArray);
+
+        Assert.assertTrue("rsSetObject allocation test fail: " + "Expect 1;value "
+                + tmpArray[0], tmpArray[0] == 1);
+    }
+
+    public void testSetObjectSampler() {
+        ScriptField__set_object_sampler_input filed = new ScriptField__set_object_sampler_input(
+                mRS, 1);
+        ScriptField__set_object_sampler_input.Item mItem = new ScriptField__set_object_sampler_input.Item();
+        mItem.sampler = sampler;
+        filed.set(mItem, 0, true);
+
+        mIn = filed.getAllocation();
+        mOut = Allocation.createSized(mRS, Element.I32(mRS), ObjectNum);
+
+        try {
+            ms_set.forEach_set_object_sampler(mIn, mOut);
+        } catch (RSRuntimeException e) {
+            Log.i("compare", "rsSetObject root fail");
+        }
+        int[] tmpArray = new int[ObjectNum];
+        mOut.copyTo(tmpArray);
+
+        Assert.assertTrue("rsSetObject sampler test fail: " + "Expect 1;value "
+                + tmpArray[0], tmpArray[0] == 1);
+    }
+
+    public void testSetObjectScript() {
+        ScriptField__set_object_script_input filed = new ScriptField__set_object_script_input(
+                mRS, 1);
+        ScriptField__set_object_script_input.Item mItem = new ScriptField__set_object_script_input.Item();
+        mItem.script = script;
+        filed.set(mItem, 0, true);
+
+        mIn = filed.getAllocation();
+        mOut = Allocation.createSized(mRS, Element.I32(mRS), ObjectNum);
+
+        try {
+            ms_set.forEach_set_object_script(mIn, mOut);
+        } catch (RSRuntimeException e) {
+            Log.i("compare", "rsSetObject root fail");
+        }
+        int[] tmpArray = new int[ObjectNum];
+        mOut.copyTo(tmpArray);
+
+        Assert.assertTrue("rsSetObject script test fail: " + "Expect 1;value "
+                + tmpArray[0], tmpArray[0] == 1);
+    }
+}
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/SignTest.java b/tests/tests/renderscript/src/android/renderscript/cts/SignTest.java
new file mode 100644
index 0000000..69e2636
--- /dev/null
+++ b/tests/tests/renderscript/src/android/renderscript/cts/SignTest.java
@@ -0,0 +1,119 @@
+/*
+ * Copyright (C) 2012 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 android.renderscript.cts;
+
+import android.renderscript.Allocation;
+import android.renderscript.RSRuntimeException;
+import com.android.cts.stub.R;
+
+public class SignTest extends RSBaseCompute {
+    private ScriptC_sign_f32 script_f32;
+    private ScriptC_sign_f32_relaxed script_f32_relaxed;
+
+    @Override
+    protected void setUp() throws Exception {
+        super.setUp();
+        script_f32 = new ScriptC_sign_f32(mRS);
+        script_f32_relaxed = new ScriptC_sign_f32_relaxed(mRS);
+    }
+
+    @Override
+    public void forEach(int testId, Allocation mIn, Allocation mOut) throws RSRuntimeException {
+        switch (testId) {
+        case TEST_F32:
+            script_f32.forEach_sign_f32_1(mIn, mOut);
+            break;
+        case TEST_F32_2:
+            script_f32.forEach_sign_f32_2(mIn, mOut);
+            break;
+        case TEST_F32_3:
+            script_f32.forEach_sign_f32_3(mIn, mOut);
+            break;
+        case TEST_F32_4:
+            script_f32.forEach_sign_f32_4(mIn, mOut);
+            break;
+
+        case TEST_RELAXED_F32:
+            script_f32_relaxed.forEach_sign_f32_1(mIn, mOut);
+            break;
+        case TEST_RELAXED_F32_2:
+            script_f32_relaxed.forEach_sign_f32_2(mIn, mOut);
+            break;
+        case TEST_RELAXED_F32_3:
+            script_f32_relaxed.forEach_sign_f32_3(mIn, mOut);
+            break;
+        case TEST_RELAXED_F32_4:
+            script_f32_relaxed.forEach_sign_f32_4(mIn, mOut);
+            break;
+        }
+    }
+
+    @Override
+    protected float[] getRefArray(float[] in, int input_size, int stride, int skip) {
+        float[] ref = new float[input_size * stride];
+        for (int i = 0; i < input_size; i++) {
+            for (int j = 0; j < stride - skip; j++) {
+                int idxIn = i * stride + j;
+                int idxRef = i * (stride - skip) + j;
+                ref[idxRef] = in[idxIn] > 0.f ? 1.f : -1.f;
+            }
+        }
+        return ref;
+    }
+
+    /**
+     * This method is used for sign() function with f32
+     */
+    public void testSignF32() {
+        doF32(0x12345678, 0);
+    }
+
+    public void testSignF32_relaxed() {
+        doF32_relaxed(0x12345678, 0);
+    }
+
+    public void testSignF32_2() {
+        doF32_2(0x12a45678, 0);
+    }
+
+    public void testSignF32_2_relaxed() {
+        doF32_2_relaxed(0x12a45678, 0);
+    }
+
+    /**
+     * This method is used for sign() function with f32_3
+     */
+    public void testSignF32_3() {
+        doF32_3(0x123c5678, 0);
+    }
+
+    public void testSignF32_3_relaxed() {
+        doF32_3_relaxed(0x123c5678, 0);
+    }
+
+    /**
+     * This method is used for sign() function with f32_4
+     */
+    public void testSignF32_4() {
+        doF32_4(0x123d678, 0);
+
+    }
+    public void testSignF32_4_relaxed() {
+        doF32_4_relaxed(0x123d678, 0);
+    }
+
+}
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/SinTest.java b/tests/tests/renderscript/src/android/renderscript/cts/SinTest.java
new file mode 100644
index 0000000..5911632
--- /dev/null
+++ b/tests/tests/renderscript/src/android/renderscript/cts/SinTest.java
@@ -0,0 +1,110 @@
+/*
+ * Copyright (C) 2012 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 android.renderscript.cts;
+
+import com.android.cts.stub.R;
+import android.renderscript.Allocation;
+import android.renderscript.RSRuntimeException;
+
+public class SinTest extends RSBaseCompute {
+    private ScriptC_sin_f32 script_f32;
+    private ScriptC_sin_f32_relaxed script_f32_relaxed;
+
+    @Override
+    protected void setUp() throws Exception {
+        super.setUp();
+        script_f32 = new ScriptC_sin_f32(mRS);
+        script_f32_relaxed = new ScriptC_sin_f32_relaxed(mRS);
+    }
+
+    @Override
+    public void forEach(int testId, Allocation mIn, Allocation mOut) throws RSRuntimeException {
+        switch (testId) {
+        case TEST_F32:
+            script_f32.forEach_sin_f32_1(mIn, mOut);
+            break;
+        case TEST_F32_2:
+            script_f32.forEach_sin_f32_2(mIn, mOut);
+            break;
+        case TEST_F32_3:
+            script_f32.forEach_sin_f32_3(mIn, mOut);
+            break;
+        case TEST_F32_4:
+            script_f32.forEach_sin_f32_4(mIn, mOut);
+            break;
+
+        case TEST_RELAXED_F32:
+            script_f32_relaxed.forEach_sin_f32_1(mIn, mOut);
+            break;
+        case TEST_RELAXED_F32_2:
+            script_f32_relaxed.forEach_sin_f32_2(mIn, mOut);
+            break;
+        case TEST_RELAXED_F32_3:
+            script_f32_relaxed.forEach_sin_f32_3(mIn, mOut);
+            break;
+        case TEST_RELAXED_F32_4:
+            script_f32_relaxed.forEach_sin_f32_4(mIn, mOut);
+            break;
+        }
+    }
+
+    @Override
+    protected float[] getRefArray(float[] in, int input_size, int stride, int skip) {
+        float[] ref = new float[input_size * stride];
+        for (int i = 0; i < input_size; i++) {
+            for (int j = 0; j < stride - skip; j++) {
+                int idx= i * stride + j;
+                int idxRef = i * (stride - skip) + j;
+                ref[idxRef] = (float)(Math.sin((double)in[idx]));
+            }
+        }
+        return ref;
+    }
+
+    public void testSinF32() {
+        doF32(0xba, 4);
+    }
+
+    public void testSinF32_relaxed() {
+        doF32_relaxed(0xba, 128);
+    }
+
+    public void testSinF32_2() {
+        doF32_2(0xbaa, 4);
+    }
+
+    public void testSinF32_2_relaxed() {
+        doF32_2_relaxed(0xbaa, 128);
+    }
+
+    public void testSinF32_3() {
+        doF32_3(0xca, 4);
+    }
+
+    public void testSinF32_3_relaxed() {
+        doF32_3_relaxed(0xca, 128);
+    }
+
+    public void testSinF32_4() {
+        doF32_4(0xda, 4);
+
+    }
+    public void testSinF32_4_relaxed() {
+        doF32_4_relaxed(0xda, 128);
+    }
+
+}
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/SinhTest.java b/tests/tests/renderscript/src/android/renderscript/cts/SinhTest.java
new file mode 100644
index 0000000..a95c574
--- /dev/null
+++ b/tests/tests/renderscript/src/android/renderscript/cts/SinhTest.java
@@ -0,0 +1,110 @@
+/*
+ * Copyright (C) 2012 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 android.renderscript.cts;
+
+import com.android.cts.stub.R;
+import android.renderscript.Allocation;
+import android.renderscript.RSRuntimeException;
+
+public class SinhTest extends RSBaseCompute {
+    private ScriptC_sinh_f32 script_f32;
+    private ScriptC_sinh_f32_relaxed script_f32_relaxed;
+
+    @Override
+    protected void setUp() throws Exception {
+        super.setUp();
+        script_f32 = new ScriptC_sinh_f32(mRS);
+        script_f32_relaxed = new ScriptC_sinh_f32_relaxed(mRS);
+    }
+
+    @Override
+    public void forEach(int testId, Allocation mIn, Allocation mOut) throws RSRuntimeException {
+        switch (testId) {
+        case TEST_F32:
+            script_f32.forEach_sinh_f32_1(mIn, mOut);
+            break;
+        case TEST_F32_2:
+            script_f32.forEach_sinh_f32_2(mIn, mOut);
+            break;
+        case TEST_F32_3:
+            script_f32.forEach_sinh_f32_3(mIn, mOut);
+            break;
+        case TEST_F32_4:
+            script_f32.forEach_sinh_f32_4(mIn, mOut);
+            break;
+
+        case TEST_RELAXED_F32:
+            script_f32_relaxed.forEach_sinh_f32_1(mIn, mOut);
+            break;
+        case TEST_RELAXED_F32_2:
+            script_f32_relaxed.forEach_sinh_f32_2(mIn, mOut);
+            break;
+        case TEST_RELAXED_F32_3:
+            script_f32_relaxed.forEach_sinh_f32_3(mIn, mOut);
+            break;
+        case TEST_RELAXED_F32_4:
+            script_f32_relaxed.forEach_sinh_f32_4(mIn, mOut);
+            break;
+        }
+    }
+
+    @Override
+    protected float[] getRefArray(float[] in, int input_size, int stride, int skip) {
+        float[] ref = new float[input_size * stride];
+        for (int i = 0; i < input_size; i++) {
+            for (int j = 0; j < stride - skip; j++) {
+                int idx= i * stride + j;
+                int idxRef = i * (stride - skip) + j;
+                ref[idxRef] = (float)(Math.sinh((double)in[idx]));
+            }
+        }
+        return ref;
+    }
+
+    public void testSinhF32() {
+        doF32(0x32a, 4);
+    }
+
+    public void testSinhF32_relaxed() {
+        doF32_relaxed(0x32a, 128);
+    }
+
+    public void testSinhF32_2() {
+        doF32_2(0xba35, 4);
+    }
+
+    public void testSinhF32_2_relaxed() {
+        doF32_2_relaxed(0xba35, 128);
+    }
+
+    public void testSinhF32_3() {
+        doF32_3(0xacc3, 4);
+    }
+
+    public void testSinhF32_3_relaxed() {
+        doF32_3_relaxed(0xacc3, 128);
+    }
+
+    public void testSinhF32_4() {
+        doF32_4(0xaa, 4);
+
+    }
+    public void testSinhF32_4_relaxed() {
+        doF32_4_relaxed(0xaa, 128);
+    }
+
+}
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/SqrtTest.java b/tests/tests/renderscript/src/android/renderscript/cts/SqrtTest.java
new file mode 100644
index 0000000..02290ca
--- /dev/null
+++ b/tests/tests/renderscript/src/android/renderscript/cts/SqrtTest.java
@@ -0,0 +1,110 @@
+/*
+ * Copyright (C) 2012 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 android.renderscript.cts;
+
+import com.android.cts.stub.R;
+import android.renderscript.Allocation;
+import android.renderscript.RSRuntimeException;
+
+public class SqrtTest extends RSBaseCompute {
+    private ScriptC_sqrt_f32 script_f32;
+    private ScriptC_sqrt_f32_relaxed script_f32_relaxed;
+
+    @Override
+    protected void setUp() throws Exception {
+        super.setUp();
+        script_f32 = new ScriptC_sqrt_f32(mRS);
+        script_f32_relaxed = new ScriptC_sqrt_f32_relaxed(mRS);
+    }
+
+    @Override
+    public void forEach(int testId, Allocation mIn, Allocation mOut) throws RSRuntimeException {
+        switch (testId) {
+        case TEST_F32:
+            script_f32.forEach_sqrt_f32_1(mIn, mOut);
+            break;
+        case TEST_F32_2:
+            script_f32.forEach_sqrt_f32_2(mIn, mOut);
+            break;
+        case TEST_F32_3:
+            script_f32.forEach_sqrt_f32_3(mIn, mOut);
+            break;
+        case TEST_F32_4:
+            script_f32.forEach_sqrt_f32_4(mIn, mOut);
+            break;
+
+        case TEST_RELAXED_F32:
+            script_f32_relaxed.forEach_sqrt_f32_1(mIn, mOut);
+            break;
+        case TEST_RELAXED_F32_2:
+            script_f32_relaxed.forEach_sqrt_f32_2(mIn, mOut);
+            break;
+        case TEST_RELAXED_F32_3:
+            script_f32_relaxed.forEach_sqrt_f32_3(mIn, mOut);
+            break;
+        case TEST_RELAXED_F32_4:
+            script_f32_relaxed.forEach_sqrt_f32_4(mIn, mOut);
+            break;
+        }
+    }
+
+    @Override
+    protected float[] getRefArray(float[] in, int input_size, int stride, int skip) {
+        float[] ref = new float[input_size * stride];
+        for (int i = 0; i < input_size; i++) {
+            for (int j = 0; j < stride - skip; j++) {
+                int idx= i * stride + j;
+                int idxRef = i * (stride - skip) + j;
+                ref[idxRef] = (float)(Math.sqrt((double)in[idx]));
+            }
+        }
+        return ref;
+    }
+
+    public void testSqrtF32() {
+        doF32(0xab3, 3);
+    }
+
+    public void testSqrtF32_relaxed() {
+        doF32_relaxed(0xab3, 3);
+    }
+
+    public void testSqrtF32_2() {
+        doF32_2(0xa1, 3);
+    }
+
+    public void testSqrtF32_2_relaxed() {
+        doF32_2_relaxed(0xa1, 3);
+    }
+
+    public void testSqrtF32_3() {
+        doF32_3(0xbae7, 3);
+    }
+
+    public void testSqrtF32_3_relaxed() {
+        doF32_3_relaxed(0xbae7, 3);
+    }
+
+    public void testSqrtF32_4() {
+        doF32_4(0xbac361, 3);
+
+    }
+    public void testSqrtF32_4_relaxed() {
+        doF32_4_relaxed(0xbac361, 3);
+    }
+
+}
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/StepTest.java b/tests/tests/renderscript/src/android/renderscript/cts/StepTest.java
new file mode 100644
index 0000000..39fb443
--- /dev/null
+++ b/tests/tests/renderscript/src/android/renderscript/cts/StepTest.java
@@ -0,0 +1,135 @@
+/*
+ * Copyright (C) 2012 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 android.renderscript.cts;
+
+import android.renderscript.Allocation;
+import android.renderscript.Element;
+import android.renderscript.RSRuntimeException;
+import com.android.cts.stub.R;
+
+public class StepTest extends RSBaseCompute {
+    private ScriptC_step_f32 script_f32;
+    private ScriptC_step_f32_relaxed script_f32_relaxed;
+    private Allocation mIn;
+
+    @Override
+    protected void setUp() throws Exception {
+        super.setUp();
+        script_f32 = new ScriptC_step_f32(mRS);
+        script_f32_relaxed = new ScriptC_step_f32_relaxed(mRS);
+    }
+
+    @Override
+    public void forEach(int testId, Allocation mIn, Allocation mOut) throws RSRuntimeException {
+        switch (testId) {
+        case TEST_F32:
+            script_f32.forEach_step_f32_1(mIn, mOut);
+            break;
+        case TEST_F32_2:
+            script_f32.forEach_step_f32_2(mIn, mOut);
+            break;
+        case TEST_F32_3:
+            script_f32.forEach_step_f32_3(mIn, mOut);
+            break;
+        case TEST_F32_4:
+            script_f32.forEach_step_f32_4(mIn, mOut);
+            break;
+
+        case TEST_RELAXED_F32:
+            script_f32_relaxed.forEach_step_f32_1(mIn, mOut);
+            break;
+        case TEST_RELAXED_F32_2:
+            script_f32_relaxed.forEach_step_f32_2(mIn, mOut);
+            break;
+        case TEST_RELAXED_F32_3:
+            script_f32_relaxed.forEach_step_f32_3(mIn, mOut);
+            break;
+        case TEST_RELAXED_F32_4:
+            script_f32_relaxed.forEach_step_f32_4(mIn, mOut);
+            break;
+        }
+    }
+
+    @Override
+    protected float[] getRefArray(float[] in, int input_size, int stride, int skip) {
+        float[] ref = new float[input_size * stride];
+        for (int i = 0; i < input_size; i++) {
+            for (int j = 0; j < stride - skip; j++) {
+                int idx = i * stride * 2 + j;
+                ref[i * (stride - skip) + j] = in[idx+stride] < in[idx] ? 0.0f : 1.0f;
+            }
+        }
+        return ref;
+    }
+
+    @Override
+    protected Allocation setInAlloc(Element e) {
+        return mIn;
+    }
+
+    @Override
+    protected float[] makeInArray(int size) {
+        return new float[size*2];
+    }
+
+    public void testStepF32() {
+        ScriptField_step_input in = new ScriptField_step_input(mRS, INPUTSIZE);
+        mIn = in.getAllocation();
+        doF32(0x12678, 0);
+    }
+
+    public void testStepF32_relaxed() {
+        ScriptField_step_input in = new ScriptField_step_input(mRS, INPUTSIZE);
+        mIn = in.getAllocation();
+        doF32_relaxed(0x12678, 0);
+    }
+
+    public void testStepF32_2() {
+        ScriptField_step_2_input in = new ScriptField_step_2_input(mRS, INPUTSIZE);
+        mIn = in.getAllocation();
+        doF32_2(0x1ace8, 0);
+    }
+
+    public void testStepF32_2_relaxed() {
+        ScriptField_step_2_input in = new ScriptField_step_2_input(mRS, INPUTSIZE);
+        mIn = in.getAllocation();
+        doF32_2_relaxed(0x1ace8, 0);
+    }
+
+    public void testStepF32_3() {
+        ScriptField_step_3_input in = new ScriptField_step_3_input(mRS, INPUTSIZE);
+        mIn = in.getAllocation();
+        doF32_3(0xa2ce8, 0);
+    }
+
+    public void testStepF32_3_relaxed() {
+        ScriptField_step_3_input in = new ScriptField_step_3_input(mRS, INPUTSIZE);
+        mIn = in.getAllocation();
+        doF32_3_relaxed(0xa2ce8, 0);
+    }
+
+    public void testStepF32_4() {
+        ScriptField_step_4_input in = new ScriptField_step_4_input(mRS, INPUTSIZE);
+        mIn = in.getAllocation();
+        doF32_4(0x1ee8, 0);
+    }
+
+    public void testStepF32_4_relaxed() {
+        ScriptField_step_4_input in = new ScriptField_step_4_input(mRS, INPUTSIZE);
+        mIn = in.getAllocation();
+        doF32_4_relaxed(0x1ee8, 0);
+    }
+}
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/TanTest.java b/tests/tests/renderscript/src/android/renderscript/cts/TanTest.java
new file mode 100644
index 0000000..a4e62e9
--- /dev/null
+++ b/tests/tests/renderscript/src/android/renderscript/cts/TanTest.java
@@ -0,0 +1,110 @@
+/*
+ * Copyright (C) 2012 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 android.renderscript.cts;
+
+import com.android.cts.stub.R;
+import android.renderscript.Allocation;
+import android.renderscript.RSRuntimeException;
+
+public class TanTest extends RSBaseCompute {
+    private ScriptC_tan_f32 script_f32;
+    private ScriptC_tan_f32_relaxed script_f32_relaxed;
+
+    @Override
+    protected void setUp() throws Exception {
+        super.setUp();
+        script_f32 = new ScriptC_tan_f32(mRS);
+        script_f32_relaxed = new ScriptC_tan_f32_relaxed(mRS);
+    }
+
+    @Override
+    public void forEach(int testId, Allocation mIn, Allocation mOut) throws RSRuntimeException {
+        switch (testId) {
+        case TEST_F32:
+            script_f32.forEach_tan_f32_1(mIn, mOut);
+            break;
+        case TEST_F32_2:
+            script_f32.forEach_tan_f32_2(mIn, mOut);
+            break;
+        case TEST_F32_3:
+            script_f32.forEach_tan_f32_3(mIn, mOut);
+            break;
+        case TEST_F32_4:
+            script_f32.forEach_tan_f32_4(mIn, mOut);
+            break;
+
+        case TEST_RELAXED_F32:
+            script_f32_relaxed.forEach_tan_f32_1(mIn, mOut);
+            break;
+        case TEST_RELAXED_F32_2:
+            script_f32_relaxed.forEach_tan_f32_2(mIn, mOut);
+            break;
+        case TEST_RELAXED_F32_3:
+            script_f32_relaxed.forEach_tan_f32_3(mIn, mOut);
+            break;
+        case TEST_RELAXED_F32_4:
+            script_f32_relaxed.forEach_tan_f32_4(mIn, mOut);
+            break;
+        }
+    }
+
+    @Override
+    protected float[] getRefArray(float[] in, int input_size, int stride, int skip) {
+        float[] ref = new float[input_size * stride];
+        for (int i = 0; i < input_size; i++) {
+            for (int j = 0; j < stride - skip; j++) {
+                int idx= i * stride + j;
+                int idxRef = i * (stride - skip) + j;
+                ref[idxRef] = (float)(Math.tan((double)in[idx]));
+            }
+        }
+        return ref;
+    }
+
+    public void testTanF32() {
+        doF32(0xabe, 5);
+    }
+
+    public void testTanF32_relaxed() {
+        doF32_relaxed(0xabe, 128);
+    }
+
+    public void testTanF32_2() {
+        doF32_2(0x29, 5);
+    }
+
+    public void testTanF32_2_relaxed() {
+        doF32_2_relaxed(0x29, 128);
+    }
+
+    public void testTanF32_3() {
+        doF32_3(0x9a, 5);
+    }
+
+    public void testTanF32_3_relaxed() {
+        doF32_3_relaxed(0x9a, 128);
+    }
+
+    public void testTanF32_4() {
+        doF32_4(0xac3, 5);
+
+    }
+    public void testTanF32_4_relaxed() {
+        doF32_4_relaxed(0xac3, 128);
+    }
+
+}
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/TanhTest.java b/tests/tests/renderscript/src/android/renderscript/cts/TanhTest.java
new file mode 100644
index 0000000..4dc7d15
--- /dev/null
+++ b/tests/tests/renderscript/src/android/renderscript/cts/TanhTest.java
@@ -0,0 +1,110 @@
+/*
+ * Copyright (C) 2012 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 android.renderscript.cts;
+
+import com.android.cts.stub.R;
+import android.renderscript.Allocation;
+import android.renderscript.RSRuntimeException;
+
+public class TanhTest extends RSBaseCompute {
+    private ScriptC_tanh_f32 script_f32;
+    private ScriptC_tanh_f32_relaxed script_f32_relaxed;
+
+    @Override
+    protected void setUp() throws Exception {
+        super.setUp();
+        script_f32 = new ScriptC_tanh_f32(mRS);
+        script_f32_relaxed = new ScriptC_tanh_f32_relaxed(mRS);
+    }
+
+    @Override
+    public void forEach(int testId, Allocation mIn, Allocation mOut) throws RSRuntimeException {
+        switch (testId) {
+        case TEST_F32:
+            script_f32.forEach_tanh_f32_1(mIn, mOut);
+            break;
+        case TEST_F32_2:
+            script_f32.forEach_tanh_f32_2(mIn, mOut);
+            break;
+        case TEST_F32_3:
+            script_f32.forEach_tanh_f32_3(mIn, mOut);
+            break;
+        case TEST_F32_4:
+            script_f32.forEach_tanh_f32_4(mIn, mOut);
+            break;
+
+        case TEST_RELAXED_F32:
+            script_f32_relaxed.forEach_tanh_f32_1(mIn, mOut);
+            break;
+        case TEST_RELAXED_F32_2:
+            script_f32_relaxed.forEach_tanh_f32_2(mIn, mOut);
+            break;
+        case TEST_RELAXED_F32_3:
+            script_f32_relaxed.forEach_tanh_f32_3(mIn, mOut);
+            break;
+        case TEST_RELAXED_F32_4:
+            script_f32_relaxed.forEach_tanh_f32_4(mIn, mOut);
+            break;
+        }
+    }
+
+    @Override
+    protected float[] getRefArray(float[] in, int input_size, int stride, int skip) {
+        float[] ref = new float[input_size * stride];
+        for (int i = 0; i < input_size; i++) {
+            for (int j = 0; j < stride - skip; j++) {
+                int idx= i * stride + j;
+                int idxRef = i * (stride - skip) + j;
+                ref[idxRef] = (float)(Math.tanh((double)in[idx]));
+            }
+        }
+        return ref;
+    }
+
+    public void testTanhF32() {
+        doF32(0xab61, 5);
+    }
+
+    public void testTanhF32_relaxed() {
+        doF32_relaxed(0xab61, 128);
+    }
+
+    public void testTanhF32_2() {
+        doF32_2(0xa301, 5);
+    }
+
+    public void testTanhF32_2_relaxed() {
+        doF32_2_relaxed(0xa301, 128);
+    }
+
+    public void testTanhF32_3() {
+        doF32_3(0x918, 5);
+    }
+
+    public void testTanhF32_3_relaxed() {
+        doF32_3_relaxed(0x918, 128);
+    }
+
+    public void testTanhF32_4() {
+        doF32_4(0x81, 5);
+
+    }
+    public void testTanhF32_4_relaxed() {
+        doF32_4_relaxed(0x81, 128);
+    }
+
+}
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/TruncTest.java b/tests/tests/renderscript/src/android/renderscript/cts/TruncTest.java
new file mode 100644
index 0000000..f2a3e11
--- /dev/null
+++ b/tests/tests/renderscript/src/android/renderscript/cts/TruncTest.java
@@ -0,0 +1,127 @@
+/*
+ * Copyright (C) 2012 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 android.renderscript.cts;
+
+import com.android.cts.stub.R;
+import android.renderscript.Allocation;
+import android.renderscript.RSRuntimeException;
+
+public class TruncTest extends RSBaseCompute {
+    private ScriptC_trunc_f32 script_f32;
+    private ScriptC_trunc_f32_relaxed script_f32_relaxed;
+
+    @Override
+    protected void setUp() throws Exception {
+        super.setUp();
+        script_f32 = new ScriptC_trunc_f32(mRS);
+        script_f32_relaxed = new ScriptC_trunc_f32_relaxed(mRS);
+    }
+
+    @Override
+    public void forEach(int testId, Allocation mIn, Allocation mOut) throws RSRuntimeException {
+        switch (testId) {
+        case TEST_F32:
+            script_f32.forEach_trunc_f32_1(mIn, mOut);
+            break;
+        case TEST_F32_2:
+            script_f32.forEach_trunc_f32_2(mIn, mOut);
+            break;
+        case TEST_F32_3:
+            script_f32.forEach_trunc_f32_3(mIn, mOut);
+            break;
+        case TEST_F32_4:
+            script_f32.forEach_trunc_f32_4(mIn, mOut);
+            break;
+
+        case TEST_RELAXED_F32:
+            script_f32_relaxed.forEach_trunc_f32_1(mIn, mOut);
+            break;
+        case TEST_RELAXED_F32_2:
+            script_f32_relaxed.forEach_trunc_f32_2(mIn, mOut);
+            break;
+        case TEST_RELAXED_F32_3:
+            script_f32_relaxed.forEach_trunc_f32_3(mIn, mOut);
+            break;
+        case TEST_RELAXED_F32_4:
+            script_f32_relaxed.forEach_trunc_f32_4(mIn, mOut);
+            break;
+        }
+    }
+
+    @Override
+    protected float[] getRefArray(float[] inArray, int input_size, int stride, int skip) {
+        float[] ref = new float[input_size * stride];
+        for (int i = 0; i < input_size; i++) {
+            for (int j = 0; j < stride - skip; j++) {
+                int idxSrc = i * stride + j;
+                int idxDst = i * (stride - skip) + j;
+                int sign = ((Float.floatToIntBits(inArray[idxSrc]) >> 31) & 0x01);
+                float trunc = (int)inArray[idxSrc];
+                if (sign == 1 && trunc == +0.0f) {
+                    trunc = -0.0f;
+                }
+                ref[idxDst] = trunc;
+            }
+        }
+        return ref;
+    }
+
+    /**
+     * trunc test for float
+     */
+    public void testTruncF32() {
+        doF32(0x12345678, 0);
+    }
+
+    public void testTruncF32_relaxed() {
+        doF32_relaxed(0x12345678, 0);
+    }
+
+    /**
+     * trunc test for float2
+     */
+    public void testTruncF32_2() {
+        doF32_2(0x12345a78, 0);
+    }
+
+    public void testTruncF32_2_relaxed() {
+        doF32_2_relaxed(0x12345a78, 0);
+    }
+
+    /**
+     * trunc test for float3
+     */
+    public void testTruncF32_3() {
+        doF32_3(0x12f45678, 0);
+    }
+
+    public void testTruncF32_3_relaxed() {
+        doF32_3_relaxed(0x12f45678, 0);
+    }
+
+    /**
+     * trunc test for float4
+     */
+    public void testTruncF32_4() {
+        doF32_4(0x123c5678, 0);
+    }
+
+    public void testTruncF32_4_relaxed() {
+        doF32_4_relaxed(0x123c5678, 0);
+    }
+
+}
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/VoidPtr.java b/tests/tests/renderscript/src/android/renderscript/cts/VoidPtr.java
new file mode 100644
index 0000000..9c18d2d
--- /dev/null
+++ b/tests/tests/renderscript/src/android/renderscript/cts/VoidPtr.java
@@ -0,0 +1,161 @@
+/*
+ * Copyright (C) 2013 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 android.renderscript.cts;
+
+import android.renderscript.Allocation;
+import android.renderscript.Element;
+import android.renderscript.RenderScript;
+import android.renderscript.Type;
+
+public class VoidPtr extends RSBaseCompute {
+    Allocation AOutput;
+    Allocation AInput;
+    Allocation AFailed;
+    int [] Failed;
+
+
+    protected void setupVoidPtr(RenderScript mRS, ScriptC_void_ptr gs) {
+        Type.Builder typeBuilder = new Type.Builder(mRS, Element.I32(mRS));
+        Type t = typeBuilder.setX(1).create();
+
+        AFailed = Allocation.createTyped(mRS, t);
+        Failed = new int [1];
+        Failed[0] = 0;
+        AFailed.copyFrom(Failed);
+        gs.set_aFailed(AFailed);
+    }
+
+    /**
+     * Test whether we properly iterate over the elements of an output
+     * allocation, even if the pointer passed to the kernel of the script
+     * is only of type 'void*'
+     *
+     * This test runs for an allocation of type int
+     */
+    public void testVoidOutInt() {
+        ScriptC_void_ptr gs = new ScriptC_void_ptr(mRS);
+        setupVoidPtr(mRS, gs);
+
+        Type.Builder typeBuilder = new Type.Builder(mRS, Element.I32(mRS));
+        Type t = typeBuilder.setX(10).setY(15).create();
+
+        AOutput = Allocation.createTyped(mRS, t);
+
+        gs.forEach_set_output_void_int(AOutput);
+        gs.forEach_check_output_int(AOutput);
+
+        AFailed.copyTo(Failed);
+        if (Failed[0] != 0) {
+            FoundError = true;
+        }
+
+        gs.destroy();
+        checkForErrors();
+    }
+
+    /**
+     * Test whether we properly iterate over the elements of an output
+     * allocation, even if the pointer passed to the kernel of the script
+     * is only of type 'void*'
+     *
+     * This test runs for an allocation of type uchar.
+     */
+    public void testVoidOutChar() {
+        ScriptC_void_ptr gs = new ScriptC_void_ptr(mRS);
+        setupVoidPtr(mRS, gs);
+
+        Type.Builder typeBuilder = new Type.Builder(mRS, Element.U8(mRS));
+        Type t = typeBuilder.setX(10).setY(15).create();
+
+        AOutput = Allocation.createTyped(mRS, t);
+
+        gs.forEach_set_output_void_char(AOutput);
+        gs.forEach_check_output_char(AOutput);
+
+        AFailed.copyTo(Failed);
+        if (Failed[0] != 0) {
+            FoundError = true;
+        }
+
+        gs.destroy();
+        checkForErrors();
+    }
+
+
+    /**
+     * Test whether we properly iterate over the elements of an input
+     * allocation, even if the pointer passed to the kernel of the script
+     * is only of type 'void*'
+     *
+     * This test runs for an allocation of type uchar.
+     */
+    public void testVoidInInt() {
+        ScriptC_void_ptr gs = new ScriptC_void_ptr(mRS);
+        setupVoidPtr(mRS, gs);
+
+        Type.Builder typeBuilder = new Type.Builder(mRS, Element.I32(mRS));
+        Type t = typeBuilder.setX(10).setY(15).create();
+
+        AOutput = Allocation.createTyped(mRS, t);
+        AInput = Allocation.createTyped(mRS, t);
+
+        gs.forEach_set_output_int(AInput);
+        gs.set_aOutput(AOutput);
+        gs.forEach_copy_void_int(AInput);
+        gs.forEach_check_output_int(AOutput);
+
+        AFailed.copyTo(Failed);
+        if (Failed[0] != 0) {
+            FoundError = true;
+        }
+
+        gs.destroy();
+        checkForErrors();
+    }
+
+    /**
+     * Test whether we properly iterate over the elements of an input
+     * allocation, even if the pointer passed to the kernel of the script
+     * is only of type 'void*'
+     *
+     * This test runs for an allocation of type uchar
+     */
+    public void testVoidInChar() {
+        ScriptC_void_ptr gs = new ScriptC_void_ptr(mRS);
+        setupVoidPtr(mRS, gs);
+
+        Type.Builder typeBuilder = new Type.Builder(mRS, Element.U8(mRS));
+        Type t = typeBuilder.setX(10).setY(15).create();
+
+        AOutput = Allocation.createTyped(mRS, t);
+        AInput = Allocation.createTyped(mRS, t);
+
+        gs.forEach_set_output_char(AInput);
+        gs.set_aOutput(AOutput);
+        gs.forEach_copy_void_char(AInput);
+        gs.forEach_check_output_char(AOutput);
+
+        AFailed.copyTo(Failed);
+        if (Failed[0] != 0) {
+            FoundError = true;
+        }
+
+        gs.destroy();
+        checkForErrors();
+    }
+
+}
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/YuvTest.java b/tests/tests/renderscript/src/android/renderscript/cts/YuvTest.java
new file mode 100644
index 0000000..c2c7275
--- /dev/null
+++ b/tests/tests/renderscript/src/android/renderscript/cts/YuvTest.java
@@ -0,0 +1,211 @@
+/*
+ * Copyright (C) 2013 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 android.renderscript.cts;
+
+import android.renderscript.*;
+import java.util.Random;
+
+public class YuvTest extends RSBaseCompute {
+    int width;
+    int height;
+    byte [] by;
+    byte [] bu;
+    byte [] bv;
+    Allocation ay;
+    Allocation au;
+    Allocation av;
+
+    protected ScriptC_verify mVerify;
+
+
+    int getCWidth() {
+        return (width + 1) / 2;
+    }
+    int getCHeight() {
+        return (height + 1) / 2;
+    }
+
+    protected void makeYuvBuffer(int w, int h) {
+        Random r = new Random();
+        width = w;
+        height = h;
+
+        by = new byte[w*h];
+        bu = new byte[getCWidth() * getCHeight()];
+        bv = new byte[getCWidth() * getCHeight()];
+
+        for (int i=0; i < by.length; i++) {
+            by[i] = (byte)r.nextInt(256);
+        }
+        for (int i=0; i < bu.length; i++) {
+            bu[i] = (byte)r.nextInt(256);
+        }
+        for (int i=0; i < bv.length; i++) {
+            bv[i] = (byte)r.nextInt(256);
+        }
+
+        Type.Builder tb = new Type.Builder(mRS, Element.U8(mRS));
+        tb.setX(w);
+        tb.setY(h);
+        ay = Allocation.createTyped(mRS, tb.create());
+
+        tb = new Type.Builder(mRS, Element.U8(mRS));
+        tb.setX(w >> 1);
+        tb.setY(h >> 1);
+        au = Allocation.createTyped(mRS, tb.create());
+        av = Allocation.createTyped(mRS, tb.create());
+
+        ay.copyFrom(by);
+        au.copyFrom(bu);
+        av.copyFrom(bv);
+    }
+
+    public Allocation makeOutput() {
+        Type.Builder tb = new Type.Builder(mRS, Element.RGBA_8888(mRS));
+        tb.setX(width);
+        tb.setY(height);
+        Type t = tb.create();
+        return Allocation.createTyped(mRS, t);
+    }
+
+    // Test for the API 17 conversion path
+    // This used a uchar buffer assuming nv21
+    public void testV17() {
+        mVerify = new ScriptC_verify(mRS);
+
+        makeYuvBuffer(120, 96);
+        Allocation aout = makeOutput();
+        Allocation aref = makeOutput();
+
+        byte tmp[] = new byte[(width * height) + (getCWidth() * getCHeight() * 2)];
+        int i = 0;
+        for (int j = 0; j < (width * height); j++) {
+            tmp[i++] = by[j];
+        }
+        for (int j = 0; j < (getCWidth() * getCHeight()); j++) {
+            tmp[i++] = bv[j];
+            tmp[i++] = bu[j];
+        }
+
+        Allocation ta = Allocation.createSized(mRS, Element.U8(mRS), tmp.length);
+        ta.copyFrom(tmp);
+
+
+        ScriptIntrinsicYuvToRGB syuv = ScriptIntrinsicYuvToRGB.create(mRS, Element.U8(mRS));
+        syuv.setInput(ta);
+        syuv.forEach(aout);
+
+        ScriptC_yuv script = new ScriptC_yuv(mRS);
+        script.invoke_makeRef(ay, au, av, aref);
+
+        mVerify.invoke_verify(aref, aout, ay);
+
+        mRS.finish();
+        mVerify.invoke_checkError();
+        waitForMessage();
+        checkForErrors();
+    }
+
+    // Test for the API 18 conversion path with nv21
+    public void test_NV21() {
+        mVerify = new ScriptC_verify(mRS);
+        ScriptC_yuv script = new ScriptC_yuv(mRS);
+        ScriptIntrinsicYuvToRGB syuv = ScriptIntrinsicYuvToRGB.create(mRS, Element.YUV(mRS));
+
+        makeYuvBuffer(512, 512);
+        Allocation aout = makeOutput();
+        Allocation aref = makeOutput();
+
+
+        Type.Builder tb = new Type.Builder(mRS, Element.YUV(mRS));
+        tb.setX(width);
+        tb.setY(height);
+        tb.setYuvFormat(android.graphics.ImageFormat.NV21);
+        Allocation ta = Allocation.createTyped(mRS, tb.create(), Allocation.USAGE_SCRIPT);
+
+        byte tmp[] = new byte[(width * height) + (getCWidth() * getCHeight() * 2)];
+        int i = 0;
+        for (int j = 0; j < (width * height); j++) {
+            tmp[i++] = by[j];
+        }
+        for (int j = 0; j < (getCWidth() * getCHeight()); j++) {
+            tmp[i++] = bv[j];
+            tmp[i++] = bu[j];
+        }
+        ta.copyFrom(tmp);
+        script.invoke_makeRef(ay, au, av, aref);
+
+        syuv.setInput(ta);
+        syuv.forEach(aout);
+        mVerify.invoke_verify(aref, aout, ay);
+
+        script.set_mInput(ta);
+        script.forEach_cvt(aout);
+        mVerify.invoke_verify(aref, aout, ay);
+
+        mRS.finish();
+        mVerify.invoke_checkError();
+        waitForMessage();
+        checkForErrors();
+    }
+
+    // Test for the API 18 conversion path with yv12
+    public void test_YV12() {
+        mVerify = new ScriptC_verify(mRS);
+        ScriptC_yuv script = new ScriptC_yuv(mRS);
+        ScriptIntrinsicYuvToRGB syuv = ScriptIntrinsicYuvToRGB.create(mRS, Element.YUV(mRS));
+
+        makeYuvBuffer(512, 512);
+        Allocation aout = makeOutput();
+        Allocation aref = makeOutput();
+
+
+        Type.Builder tb = new Type.Builder(mRS, Element.YUV(mRS));
+        tb.setX(width);
+        tb.setY(height);
+        tb.setYuvFormat(android.graphics.ImageFormat.YV12);
+        Allocation ta = Allocation.createTyped(mRS, tb.create(), Allocation.USAGE_SCRIPT);
+
+        byte tmp[] = new byte[(width * height) + (getCWidth() * getCHeight() * 2)];
+        int i = 0;
+        for (int j = 0; j < (width * height); j++) {
+            tmp[i++] = by[j];
+        }
+        for (int j = 0; j < (getCWidth() * getCHeight()); j++) {
+            tmp[i++] = bu[j];
+        }
+        for (int j = 0; j < (getCWidth() * getCHeight()); j++) {
+            tmp[i++] = bv[j];
+        }
+        ta.copyFrom(tmp);
+        script.invoke_makeRef(ay, au, av, aref);
+
+        syuv.setInput(ta);
+        syuv.forEach(aout);
+        mVerify.invoke_verify(aref, aout, ay);
+
+        script.set_mInput(ta);
+        script.forEach_cvt(aout);
+        mVerify.invoke_verify(aref, aout, ay);
+
+        mRS.finish();
+        mVerify.invoke_checkError();
+        waitForMessage();
+        checkForErrors();
+    }
+
+}
diff --git a/tests/tests/rscpp/Android.mk b/tests/tests/rscpp/Android.mk
new file mode 100644
index 0000000..6f01cab
--- /dev/null
+++ b/tests/tests/rscpp/Android.mk
@@ -0,0 +1,41 @@
+# Copyright (C) 2013 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)
+
+# Replace "Example" with your name.
+LOCAL_PACKAGE_NAME := CtsRsCppTestCases
+
+# Don't include this package in any target.
+LOCAL_MODULE_TAGS := optional
+
+# When built, explicitly put it in the data partition.
+LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
+
+# All tests should include android.test.runner.
+LOCAL_JAVA_LIBRARIES := android.test.runner
+
+LOCAL_STATIC_JAVA_LIBRARIES := ctstestrunner
+LOCAL_JNI_SHARED_LIBRARIES := librscpptest_jni
+
+LOCAL_SRC_FILES := $(call all-java-files-under, src)
+
+LOCAL_INSTRUMENTATION_FOR := CtsTestStubs
+
+LOCAL_SDK_VERSION := current
+
+include $(BUILD_CTS_PACKAGE)
+include $(LOCAL_PATH)/librscpptest/Android.mk
diff --git a/tests/tests/rscpp/AndroidManifest.xml b/tests/tests/rscpp/AndroidManifest.xml
new file mode 100644
index 0000000..b3ab43a
--- /dev/null
+++ b/tests/tests/rscpp/AndroidManifest.xml
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2013 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.
+-->
+
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+    package="com.android.cts.rscpp">
+
+    <uses-permission android:name="android.permission.DISABLE_KEYGUARD" />
+    <application>
+        <uses-library android:name="android.test.runner" />
+    </application>
+
+    <!-- This is a self-instrumenting test package. -->
+    <instrumentation android:name="android.test.InstrumentationCtsTestRunner"
+                     android:targetPackage="com.android.cts.stub"
+                     android:label="CTS tests of RenderScript C++ component"/>
+
+</manifest>
+
diff --git a/tests/tests/rscpp/librscpptest/Android.mk b/tests/tests/rscpp/librscpptest/Android.mk
new file mode 100644
index 0000000..329ce1e
--- /dev/null
+++ b/tests/tests/rscpp/librscpptest/Android.mk
@@ -0,0 +1,34 @@
+# Copyright (C) 2013 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.
+
+#
+# This is the shared library included by the JNI test app.
+#
+LOCAL_PATH := $(call my-dir)
+include $(CLEAR_VARS)
+LOCAL_MODULE := librscpptest_jni
+LOCAL_MODULE_TAGS := optional
+LOCAL_SRC_FILES := rs_jni.cpp
+
+LOCAL_C_INCLUDES := $(JNI_H_INCLUDE)
+LOCAL_C_INCLUDES += frameworks/rs/cpp
+LOCAL_C_INCLUDES += frameworks/rs
+LOCAL_C_INCLUDES += external/stlport/stlport bionic/ bionic/libstdc++/include
+
+LOCAL_SHARED_LIBRARIES := libdl liblog
+LOCAL_STATIC_LIBRARIES := libRScpp_static libstlport_static libcutils
+include $(BUILD_SHARED_LIBRARY)
+
+
+
diff --git a/tests/tests/rscpp/librscpptest/rs_jni.cpp b/tests/tests/rscpp/librscpptest/rs_jni.cpp
new file mode 100644
index 0000000..16c4176
--- /dev/null
+++ b/tests/tests/rscpp/librscpptest/rs_jni.cpp
@@ -0,0 +1,333 @@
+/*
+ * Copyright (C) 2013 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.
+ */
+
+#include <jni.h>
+#include <android/log.h>
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <math.h>
+
+#include <RenderScript.h>
+
+#define  LOG_TAG    "rscpptest"
+#define  LOGI(...)  __android_log_print(ANDROID_LOG_INFO,LOG_TAG,__VA_ARGS__)
+#define  LOGE(...)  __android_log_print(ANDROID_LOG_ERROR,LOG_TAG,__VA_ARGS__)
+
+using namespace android::RSC;
+
+extern "C" JNIEXPORT jboolean JNICALL Java_android_cts_rscpp_RSInitTest_initTest(JNIEnv * env,
+                                                                               jclass obj)
+{
+    bool r = true;
+    for (int i = 0; i < 1000; i++) {
+        sp<RS> rs = new RS();
+        r &= rs->init();
+        LOGE("Native iteration %i, returned %i", i, (int)r);
+    }
+    return r;
+}
+
+extern "C" JNIEXPORT jboolean JNICALL Java_android_cts_rscpp_RSBlurTest_blurTest(JNIEnv * env,
+                                                                                 jclass obj,
+                                                                                 jint X,
+                                                                                 jint Y,
+                                                                                 jbyteArray inputByteArray,
+                                                                                 jbyteArray outputByteArray,
+                                                                                 jboolean singleChannel)
+{
+    jbyte * input = (jbyte *) env->GetPrimitiveArrayCritical(inputByteArray, 0);
+    jbyte * output = (jbyte *) env->GetPrimitiveArrayCritical(outputByteArray, 0);
+
+    sp<RS> rs = new RS();
+    rs->init();
+
+    sp<const Element> e;
+    if (singleChannel) {
+        e = Element::A_8(rs);
+    } else {
+        e = Element::RGBA_8888(rs);
+    }
+
+    sp<Allocation> inputAlloc = Allocation::createSized2D(rs, e, X, Y);
+    sp<Allocation> outputAlloc = Allocation::createSized2D(rs, e, X, Y);
+    sp<ScriptIntrinsicBlur> blur = ScriptIntrinsicBlur::create(rs, e);
+
+    inputAlloc->copy2DRangeFrom(0, 0, X, Y, input);
+
+    blur->setRadius(15);
+    blur->setInput(inputAlloc);
+    blur->forEach(outputAlloc);
+    outputAlloc->copy2DRangeTo(0, 0, X, Y, output);
+
+    env->ReleasePrimitiveArrayCritical(inputByteArray, input, 0);
+    env->ReleasePrimitiveArrayCritical(outputByteArray, output, 0);
+    return (rs->getError() == RS_SUCCESS);
+
+}
+
+extern "C" JNIEXPORT jboolean JNICALL
+Java_android_cts_rscpp_RSConvolveTest_convolveTest(JNIEnv * env, jclass obj, jint X,
+                                                   jint Y, jbyteArray inputByteArray,
+                                                   jbyteArray outputByteArray,
+                                                   jfloatArray coeffArray,
+                                                   jboolean is3x3)
+{
+    jfloat * coeffs = env->GetFloatArrayElements(coeffArray, NULL);
+    jbyte * input = (jbyte *) env->GetPrimitiveArrayCritical(inputByteArray, 0);
+    jbyte * output = (jbyte *) env->GetPrimitiveArrayCritical(outputByteArray, 0);
+
+
+    sp<RS> rs = new RS();
+    rs->init();
+
+    sp<const Element> e = Element::A_8(rs);
+
+    sp<Allocation> inputAlloc = Allocation::createSized2D(rs, e, X, Y);
+    sp<Allocation> outputAlloc = Allocation::createSized2D(rs, e, X, Y);
+
+    inputAlloc->copy2DRangeFrom(0, 0, X, Y, input);
+
+
+    if (is3x3) {
+        sp<ScriptIntrinsicConvolve3x3> convolve = ScriptIntrinsicConvolve3x3::create(rs, e);
+        convolve->setInput(inputAlloc);
+        convolve->setCoefficients(coeffs);
+        convolve->forEach(outputAlloc);
+    } else {
+        sp<ScriptIntrinsicConvolve5x5> convolve = ScriptIntrinsicConvolve5x5::create(rs, e);
+        convolve->setInput(inputAlloc);
+        convolve->setCoefficients(coeffs);
+        convolve->forEach(outputAlloc);
+    }
+
+    outputAlloc->copy2DRangeTo(0, 0, X, Y, output);
+
+    env->ReleasePrimitiveArrayCritical(inputByteArray, input, 0);
+    env->ReleasePrimitiveArrayCritical(outputByteArray, output, 0);
+    env->ReleaseFloatArrayElements(coeffArray, coeffs, JNI_ABORT);
+    return (rs->getError() == RS_SUCCESS);
+
+}
+
+extern "C" JNIEXPORT jboolean JNICALL Java_android_cts_rscpp_RSLUTTest_lutTest(JNIEnv * env,
+                                                                               jclass obj,
+                                                                               jint X,
+                                                                               jint Y,
+                                                                               jbyteArray inputByteArray,
+                                                                               jbyteArray outputByteArray)
+{
+    jbyte * input = (jbyte *) env->GetPrimitiveArrayCritical(inputByteArray, 0);
+    jbyte * output = (jbyte *) env->GetPrimitiveArrayCritical(outputByteArray, 0);
+
+    sp<RS> rs = new RS();
+    rs->init();
+
+    sp<const Element> e = Element::RGBA_8888(rs);
+
+    sp<Allocation> inputAlloc = Allocation::createSized2D(rs, e, X, Y);
+    sp<Allocation> outputAlloc = Allocation::createSized2D(rs, e, X, Y);
+    sp<ScriptIntrinsicLUT> lut = ScriptIntrinsicLUT::create(rs, e);
+
+    inputAlloc->copy2DRangeFrom(0, 0, X, Y, input);
+    unsigned char lutValues[256];
+    for (int i = 0; i < 256; i++) {
+        lutValues[i] = 255-i;
+    }
+    lut->setRed(0, 256, lutValues);
+    lut->setGreen(0, 256, lutValues);
+    lut->setBlue(0, 256, lutValues);
+
+    lut->forEach(inputAlloc,outputAlloc);
+    outputAlloc->copy2DRangeTo(0, 0, X, Y, output);
+
+    env->ReleasePrimitiveArrayCritical(inputByteArray, input, 0);
+    env->ReleasePrimitiveArrayCritical(outputByteArray, output, 0);
+    return (rs->getError() == RS_SUCCESS);
+
+}
+
+extern "C" JNIEXPORT jboolean JNICALL Java_android_cts_rscpp_RS3DLUTTest_lutTest(JNIEnv * env,
+                                                                                 jclass obj,
+                                                                                 jint X,
+                                                                                 jint Y,
+                                                                                 jint lutSize,
+                                                                                 jbyteArray inputByteArray,
+                                                                                 jbyteArray inputByteArray2,
+                                                                                 jbyteArray outputByteArray)
+{
+    jbyte * input = (jbyte *) env->GetPrimitiveArrayCritical(inputByteArray, 0);
+    jbyte * input2 = (jbyte *) env->GetPrimitiveArrayCritical(inputByteArray2, 0);
+    jbyte * output = (jbyte *) env->GetPrimitiveArrayCritical(outputByteArray, 0);
+
+    sp<RS> rs = new RS();
+    rs->init();
+
+    sp<const Element> e = Element::RGBA_8888(rs);
+
+    Type::Builder builder(rs, e);
+
+    builder.setX(lutSize);
+    builder.setY(lutSize);
+    builder.setZ(lutSize);
+
+    sp<Allocation> inputAlloc = Allocation::createSized2D(rs, e, X, Y);
+    sp<Allocation> colorCube = Allocation::createTyped(rs, builder.create());
+    sp<Allocation> outputAlloc = Allocation::createSized2D(rs, e, X, Y);
+    sp<ScriptIntrinsic3DLUT> lut = ScriptIntrinsic3DLUT::create(rs, e);
+
+    inputAlloc->copy2DRangeFrom(0, 0, X, Y, input);
+    colorCube->copy3DRangeFrom(0, 0, 0, lutSize, lutSize, lutSize, input2);
+
+    lut->setLUT(colorCube);
+    lut->forEach(inputAlloc,outputAlloc);
+
+    outputAlloc->copy2DRangeTo(0, 0, X, Y, output);
+
+    env->ReleasePrimitiveArrayCritical(inputByteArray, input, 0);
+    env->ReleasePrimitiveArrayCritical(inputByteArray2, input2, 0);
+    env->ReleasePrimitiveArrayCritical(outputByteArray, output, 0);
+    return (rs->getError() == RS_SUCCESS);
+
+}
+
+extern "C" JNIEXPORT jboolean JNICALL
+Java_android_cts_rscpp_RSColorMatrixTest_colorMatrixTest(JNIEnv * env, jclass obj, jint X,
+                                                         jint Y, jbyteArray inputByteArray,
+                                                         jbyteArray outputByteArray,
+                                                         jfloatArray coeffArray,
+                                                         jint optionFlag)
+{
+    jfloat * coeffs = env->GetFloatArrayElements(coeffArray, NULL);
+    jbyte * input = (jbyte *) env->GetPrimitiveArrayCritical(inputByteArray, 0);
+    jbyte * output = (jbyte *) env->GetPrimitiveArrayCritical(outputByteArray, 0);
+
+    sp<RS> rs = new RS();
+    rs->init();
+
+    sp<const Element> e = Element::RGBA_8888(rs);
+
+    sp<Allocation> inputAlloc = Allocation::createSized2D(rs, e, X, Y);
+    sp<Allocation> outputAlloc = Allocation::createSized2D(rs, e, X, Y);
+
+    inputAlloc->copy2DRangeFrom(0, 0, X, Y, input);
+
+    sp<ScriptIntrinsicColorMatrix> cm = ScriptIntrinsicColorMatrix::create(rs);
+    if (optionFlag == 0) {
+        cm->setColorMatrix3(coeffs);
+    } else if (optionFlag == 1) {
+        cm->setGreyscale();
+    } else if (optionFlag == 2) {
+        cm->setColorMatrix4(coeffs);
+    } else if (optionFlag == 3) {
+        cm->setYUVtoRGB();
+    } else if (optionFlag == 4) {
+        cm->setRGBtoYUV();
+    } else if (optionFlag == 5) {
+        cm->setColorMatrix4(coeffs);
+        float add[4] = {5.3f, 2.1f, 0.3f, 4.4f};
+        cm->setAdd(add);
+    }
+    cm->forEach(inputAlloc, outputAlloc);
+
+    outputAlloc->copy2DRangeTo(0, 0, X, Y, output);
+
+    env->ReleasePrimitiveArrayCritical(inputByteArray, input, 0);
+    env->ReleasePrimitiveArrayCritical(outputByteArray, output, 0);
+    env->ReleaseFloatArrayElements(coeffArray, coeffs, JNI_ABORT);
+    return (rs->getError() == RS_SUCCESS);
+
+}
+
+extern "C" JNIEXPORT jboolean JNICALL
+Java_android_cts_rscpp_RSBlendTest_blendTest(JNIEnv * env, jclass obj, jint X,
+                                             jint Y, jbyteArray inputByteArray,
+                                             jbyteArray outputByteArray,
+                                             jint optionFlag)
+{
+    jbyte * input = (jbyte *) env->GetPrimitiveArrayCritical(inputByteArray, 0);
+    jbyte * output = (jbyte *) env->GetPrimitiveArrayCritical(outputByteArray, 0);
+
+    sp<RS> rs = new RS();
+    rs->init();
+
+    sp<const Element> e = Element::RGBA_8888(rs);
+
+    sp<Allocation> inputAlloc = Allocation::createSized2D(rs, e, X, Y);
+    sp<Allocation> outputAlloc = Allocation::createSized2D(rs, e, X, Y);
+
+    inputAlloc->copy2DRangeFrom(0, 0, X, Y, input);
+    outputAlloc->copy2DRangeFrom(0, 0, X, Y, output);
+
+    sp<ScriptIntrinsicBlend> blend = ScriptIntrinsicBlend::create(rs, e);
+    switch(optionFlag) {
+    case 0:
+        blend->forEachAdd(inputAlloc, outputAlloc);
+        break;
+    case 1:
+        blend->forEachClear(inputAlloc, outputAlloc);
+        break;
+    case 2:
+        blend->forEachDst(inputAlloc, outputAlloc);
+        break;
+    case 3:
+        blend->forEachDstAtop(inputAlloc, outputAlloc);
+        break;
+    case 4:
+        blend->forEachDstIn(inputAlloc, outputAlloc);
+        break;
+    case 5:
+        blend->forEachDstOut(inputAlloc, outputAlloc);
+        break;
+    case 6:
+        blend->forEachDstOver(inputAlloc, outputAlloc);
+        break;
+    case 7:
+        blend->forEachMultiply(inputAlloc, outputAlloc);
+        break;
+    case 8:
+        blend->forEachSrc(inputAlloc, outputAlloc);
+        break;
+    case 9:
+        blend->forEachSrcAtop(inputAlloc, outputAlloc);
+        break;
+    case 10:
+        blend->forEachSrcIn(inputAlloc, outputAlloc);
+        break;
+    case 11:
+        blend->forEachSrcOut(inputAlloc, outputAlloc);
+        break;
+    case 12:
+        blend->forEachSrcOver(inputAlloc, outputAlloc);
+        break;
+    case 13:
+        blend->forEachSubtract(inputAlloc, outputAlloc);
+        break;
+    case 14:
+        blend->forEachXor(inputAlloc, outputAlloc);
+        break;
+    default:
+        break;
+    }
+
+    outputAlloc->copy2DRangeTo(0, 0, X, Y, output);
+
+    env->ReleasePrimitiveArrayCritical(inputByteArray, input, 0);
+    env->ReleasePrimitiveArrayCritical(outputByteArray, output, 0);
+    return (rs->getError() == RS_SUCCESS);
+
+}
+
diff --git a/tests/tests/rscpp/src/android/cts/rscpp/RS3DLUTTest.java b/tests/tests/rscpp/src/android/cts/rscpp/RS3DLUTTest.java
new file mode 100644
index 0000000..197a4cd
--- /dev/null
+++ b/tests/tests/rscpp/src/android/cts/rscpp/RS3DLUTTest.java
@@ -0,0 +1,83 @@
+/*
+ * Copyright (C) 2013 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 android.cts.rscpp;
+
+import com.android.cts.stub.R;
+
+import android.content.Context;
+import android.content.res.Resources;
+import android.test.AndroidTestCase;
+import android.renderscript.*;
+import android.util.Log;
+import java.lang.Integer;
+
+public class RS3DLUTTest extends RSCppTest {
+    static {
+        System.loadLibrary("rscpptest_jni");
+    }
+
+    private final int X = 1024;
+    private final int Y = 1024;
+
+    private final int lutSize = 64;
+
+    native boolean lutTest(int X, int Y, int lutSize, byte[] input, byte[] input2, byte[] output);
+    public void testRSLUT() {
+        int[] baseAlloc = new int[X * Y * 4];
+        RSUtils.genRandom(0x419144, 255, 1, -128, baseAlloc);
+        int[] colorCube = new int[lutSize * lutSize * lutSize * 4];
+        RSUtils.genRandom(0x555007, 255, 1, -128, colorCube);
+        RenderScript mRS = RenderScript.create(getContext());
+        byte[] byteAlloc = new byte[X * Y * 4];
+        byte[] byteColorCube = new byte[lutSize * lutSize * lutSize * 4];
+        for (int i = 0; i < X * Y * 4; i++) {
+            byteAlloc[i] = (byte)baseAlloc[i];
+        }
+        for (int i = 0; i < lutSize * lutSize * lutSize * 4; i++) {
+            byteColorCube[i] = (byte)colorCube[i];
+        }
+
+
+        Type.Builder build = new Type.Builder(mRS, Element.RGBA_8888(mRS));
+        build.setX(X);
+        build.setY(Y);
+        Allocation rsInput = Allocation.createTyped(mRS, build.create());
+        Allocation rsOutput = Allocation.createTyped(mRS, build.create());
+        rsInput.copyFromUnchecked(byteAlloc);
+
+        Type.Builder buildCube = new Type.Builder(mRS, Element.RGBA_8888(mRS));
+        build.setX(lutSize);
+        build.setY(lutSize);
+        build.setZ(lutSize);
+        Allocation cube = Allocation.createTyped(mRS, build.create());
+        cube.copyFromUnchecked(byteColorCube);
+        ScriptIntrinsic3DLUT lut = ScriptIntrinsic3DLUT.create(mRS, Element.RGBA_8888(mRS));
+
+        lut.setLUT(cube);
+        lut.forEach(rsInput, rsOutput);
+
+        byte[] nativeByteAlloc = new byte[X * Y * 4];
+        lutTest(X, Y, lutSize, byteAlloc, byteColorCube, nativeByteAlloc);
+        rsOutput.copyTo(byteAlloc);
+
+        for (int i = 0; i < X * Y * 4; i++) {
+            assertTrue(byteAlloc[i] == nativeByteAlloc[i]);
+        }
+
+    }
+
+}
\ No newline at end of file
diff --git a/tests/tests/rscpp/src/android/cts/rscpp/RSBlendTest.java b/tests/tests/rscpp/src/android/cts/rscpp/RSBlendTest.java
new file mode 100644
index 0000000..c5c2970
--- /dev/null
+++ b/tests/tests/rscpp/src/android/cts/rscpp/RSBlendTest.java
@@ -0,0 +1,124 @@
+/*
+ * Copyright (C) 2013 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 android.cts.rscpp;
+
+import com.android.cts.stub.R;
+
+import android.content.Context;
+import android.content.res.Resources;
+import android.test.AndroidTestCase;
+import android.renderscript.*;
+import android.util.Log;
+import java.lang.Integer;
+
+public class RSBlendTest extends RSCppTest {
+    static {
+        System.loadLibrary("rscpptest_jni");
+    }
+
+    private static final int X = 256;
+    private static final int Y = 256;
+
+    native boolean blendTest(int X, int Y, byte[] input, byte[] output, int optionFlag);
+    public void testRSBlend() {
+        for (int iter = 0; iter < 15; iter++) {
+            int[] baseAlloc = new int[X * Y * 4];
+            RSUtils.genRandom(0x789321, 255, 1, -128, baseAlloc);
+            RenderScript mRS = RenderScript.create(getContext());
+            byte[] byteAlloc = new byte[X * Y * 4];
+            for (int i = 0; i < X * Y * 4; i++) {
+                byteAlloc[i] = (byte)baseAlloc[i];
+            }
+
+            int[] baseAlloc2 = new int[X * Y * 4];
+            RSUtils.genRandom(0x359201, 255, 1, -128, baseAlloc2);
+            byte[] byteAlloc2 = new byte[X * Y * 4];
+            for (int i = 0; i < X * Y * 4; i++) {
+                byteAlloc2[i] = (byte)baseAlloc2[i];
+            }
+
+            Type.Builder build = new Type.Builder(mRS, Element.RGBA_8888(mRS));
+            build.setX(X);
+            build.setY(Y);
+            Allocation rsInput = Allocation.createTyped(mRS, build.create());
+            Allocation rsOutput = Allocation.createTyped(mRS, build.create());
+            rsInput.copyFromUnchecked(byteAlloc);
+            rsOutput.copyFromUnchecked(byteAlloc2);
+
+            ScriptIntrinsicBlend blend = ScriptIntrinsicBlend.create(mRS, Element.RGBA_8888(mRS));
+
+            switch(iter) {
+            case 0:
+                blend.forEachAdd(rsInput, rsOutput);
+                break;
+            case 1:
+                blend.forEachClear(rsInput, rsOutput);
+                break;
+            case 2:
+                blend.forEachDst(rsInput, rsOutput);
+                break;
+            case 3:
+                blend.forEachDstAtop(rsInput, rsOutput);
+                break;
+            case 4:
+                blend.forEachDstIn(rsInput, rsOutput);
+                break;
+            case 5:
+                blend.forEachDstOut(rsInput, rsOutput);
+                break;
+            case 6:
+                blend.forEachDstOver(rsInput, rsOutput);
+                break;
+            case 7:
+                blend.forEachMultiply(rsInput, rsOutput);
+                break;
+            case 8:
+                blend.forEachSrc(rsInput, rsOutput);
+                break;
+            case 9:
+                blend.forEachSrcAtop(rsInput, rsOutput);
+                break;
+            case 10:
+                blend.forEachSrcIn(rsInput, rsOutput);
+                break;
+            case 11:
+                blend.forEachSrcOut(rsInput, rsOutput);
+                break;
+            case 12:
+                blend.forEachSrcOver(rsInput, rsOutput);
+                break;
+            case 13:
+                blend.forEachSubtract(rsInput, rsOutput);
+                break;
+            case 14:
+                blend.forEachXor(rsInput, rsOutput);
+                break;
+            default:
+                break;
+            }
+
+            blendTest(X, Y, byteAlloc, byteAlloc2, iter);
+            rsOutput.copyTo(byteAlloc);
+            for (int i = 0; i < X * Y * 4; i++) {
+                assertTrue(byteAlloc[i] == byteAlloc2[i]);
+            }
+
+            mRS.destroy();
+        }
+
+    }
+}
diff --git a/tests/tests/rscpp/src/android/cts/rscpp/RSBlurTest.java b/tests/tests/rscpp/src/android/cts/rscpp/RSBlurTest.java
new file mode 100644
index 0000000..4d4530c
--- /dev/null
+++ b/tests/tests/rscpp/src/android/cts/rscpp/RSBlurTest.java
@@ -0,0 +1,99 @@
+/*
+ * Copyright (C) 2013 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 android.cts.rscpp;
+
+import com.android.cts.stub.R;
+
+import android.content.Context;
+import android.content.res.Resources;
+import android.test.AndroidTestCase;
+import android.renderscript.*;
+import android.util.Log;
+import java.lang.Integer;
+
+public class RSBlurTest extends RSCppTest {
+    static {
+        System.loadLibrary("rscpptest_jni");
+    }
+
+    private final int X = 1024;
+    private final int Y = 1024;
+
+    native boolean blurTest(int X, int Y, byte[] input, byte[] output, boolean singleChannel);
+    public void testRSBlurOneChannel() {
+        int[] baseAlloc = new int[X * Y];
+        RSUtils.genRandom(0x1DEFF, 255, 1, -128, baseAlloc);
+        RenderScript mRS = RenderScript.create(getContext());
+        byte[] byteAlloc = new byte[X * Y];
+        for (int i = 0; i < X * Y; i++) {
+            byteAlloc[i] = (byte)baseAlloc[i];
+        }
+
+        Type.Builder build = new Type.Builder(mRS, Element.A_8(mRS));
+        build.setX(X);
+        build.setY(Y);
+        Allocation rsInput = Allocation.createTyped(mRS, build.create());
+        Allocation rsOutput = Allocation.createTyped(mRS, build.create());
+        rsInput.copyFromUnchecked(byteAlloc);
+        ScriptIntrinsicBlur blur = ScriptIntrinsicBlur.create(mRS, Element.A_8(mRS));
+        blur.setInput(rsInput);
+        blur.setRadius(15);
+        blur.forEach(rsOutput);
+
+        byte[] nativeByteAlloc = new byte[X * Y];
+        blurTest(X, Y, byteAlloc, nativeByteAlloc, true);
+        rsOutput.copyTo(byteAlloc);
+
+        for (int i = 0; i < X * Y; i++) {
+            assertTrue(byteAlloc[i] == nativeByteAlloc[i]);
+        }
+
+    }
+
+
+    public void testRSBlurFourChannels() {
+        int[] baseAlloc = new int[X * Y * 4];
+        RSUtils.genRandom(0xFAFADE10, 255, 1, -128, baseAlloc);
+        RenderScript mRS = RenderScript.create(getContext());
+        byte[] byteAlloc = new byte[X * Y * 4];
+        for (int i = 0; i < X * Y * 4; i++) {
+            byteAlloc[i] = (byte)baseAlloc[i];
+        }
+
+        Type.Builder build = new Type.Builder(mRS, Element.RGBA_8888(mRS));
+        build.setX(X);
+        build.setY(Y);
+        Allocation rsInput = Allocation.createTyped(mRS, build.create());
+        Allocation rsOutput = Allocation.createTyped(mRS, build.create());
+        rsInput.copyFromUnchecked(byteAlloc);
+        ScriptIntrinsicBlur blur = ScriptIntrinsicBlur.create(mRS, Element.RGBA_8888(mRS));
+        blur.setInput(rsInput);
+        blur.setRadius(15);
+        blur.forEach(rsOutput);
+
+        byte[] nativeByteAlloc = new byte[X * Y * 4];
+        blurTest(X, Y, byteAlloc, nativeByteAlloc, false);
+        rsOutput.copyTo(byteAlloc);
+
+        for (int i = 0; i < X * Y * 4; i++) {
+            assertTrue(byteAlloc[i] == nativeByteAlloc[i]);
+        }
+
+    }
+
+
+}
\ No newline at end of file
diff --git a/tests/tests/rscpp/src/android/cts/rscpp/RSColorMatrixTest.java b/tests/tests/rscpp/src/android/cts/rscpp/RSColorMatrixTest.java
new file mode 100644
index 0000000..e4c0085
--- /dev/null
+++ b/tests/tests/rscpp/src/android/cts/rscpp/RSColorMatrixTest.java
@@ -0,0 +1,211 @@
+/*
+ * Copyright (C) 2013 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 android.cts.rscpp;
+
+import com.android.cts.stub.R;
+
+import android.content.Context;
+import android.content.res.Resources;
+import android.test.AndroidTestCase;
+import android.renderscript.*;
+import android.util.Log;
+import java.lang.Integer;
+
+public class RSColorMatrixTest extends RSCppTest {
+    static {
+        System.loadLibrary("rscpptest_jni");
+    }
+
+    private final int X = 1024;
+    private final int Y = 1024;
+
+    native boolean colorMatrixTest(int X, int Y, byte[] input, byte[] output, float[] coeffs, int optionFlag);
+    public void testRSColorMatrix0() {
+        int[] baseAlloc = new int[X * Y * 4];
+        RSUtils.genRandom(0x251107, 255, 1, -128, baseAlloc);
+        RenderScript mRS = RenderScript.create(getContext());
+        byte[] byteAlloc = new byte[X * Y * 4];
+        for (int i = 0; i < X * Y * 4; i++) {
+            byteAlloc[i] = (byte)baseAlloc[i];
+        }
+
+        float[] coeffs = new float[9];
+        coeffs[0] = 1.f;
+        coeffs[1] = 0.3f;
+        coeffs[2] = 0.7f;
+        coeffs[3] =  0.2f;
+        coeffs[4] =  1.f;
+        coeffs[5] =  -0.1f;
+        coeffs[6] =  -0.5f;
+        coeffs[7] =  0.2f;
+        coeffs[8] =  1.f;
+
+        Type.Builder build = new Type.Builder(mRS, Element.RGBA_8888(mRS));
+        build.setX(X);
+        build.setY(Y);
+        Allocation rsInput = Allocation.createTyped(mRS, build.create());
+        Allocation rsOutput = Allocation.createTyped(mRS, build.create());
+        rsInput.copyFromUnchecked(byteAlloc);
+
+        ScriptIntrinsicColorMatrix cm = ScriptIntrinsicColorMatrix.create(mRS, Element.RGBA_8888(mRS));
+        Matrix3f mat = new Matrix3f(coeffs);
+        cm.setColorMatrix(mat);
+        cm.forEach(rsInput, rsOutput);
+
+        byte[] nativeByteAlloc = new byte[X * Y * 4];
+        colorMatrixTest(X, Y, byteAlloc, nativeByteAlloc, coeffs, 0);
+        rsOutput.copyTo(byteAlloc);
+
+        for (int i = 0; i < X * Y * 4; i++) {
+            assertTrue(byteAlloc[i] == nativeByteAlloc[i]);
+        }
+
+    }
+
+    public void testRSColorMatrix1() {
+        int[] baseAlloc = new int[X * Y * 4];
+        RSUtils.genRandom(0x251106, 255, 1, -128, baseAlloc);
+        RenderScript mRS = RenderScript.create(getContext());
+        byte[] byteAlloc = new byte[X * Y * 4];
+        for (int i = 0; i < X * Y * 4; i++) {
+            byteAlloc[i] = (byte)baseAlloc[i];
+        }
+
+        float[] coeffs = new float[9];
+
+        Type.Builder build = new Type.Builder(mRS, Element.RGBA_8888(mRS));
+        build.setX(X);
+        build.setY(Y);
+        Allocation rsInput = Allocation.createTyped(mRS, build.create());
+        Allocation rsOutput = Allocation.createTyped(mRS, build.create());
+        rsInput.copyFromUnchecked(byteAlloc);
+
+        ScriptIntrinsicColorMatrix cm = ScriptIntrinsicColorMatrix.create(mRS, Element.RGBA_8888(mRS));
+        cm.setGreyscale();
+        cm.forEach(rsInput, rsOutput);
+
+        byte[] nativeByteAlloc = new byte[X * Y * 4];
+        colorMatrixTest(X, Y, byteAlloc, nativeByteAlloc, coeffs, 1);
+        rsOutput.copyTo(byteAlloc);
+
+        for (int i = 0; i < X * Y * 4; i++) {
+            assertTrue(byteAlloc[i] == nativeByteAlloc[i]);
+        }
+
+    }
+
+    public void testRSColorMatrix2() {
+        int[] baseAlloc = new int[X * Y * 4];
+        RSUtils.genRandom(0x251105, 255, 1, -128, baseAlloc);
+        RenderScript mRS = RenderScript.create(getContext());
+        byte[] byteAlloc = new byte[X * Y * 4];
+        for (int i = 0; i < X * Y * 4; i++) {
+            byteAlloc[i] = (byte)baseAlloc[i];
+        }
+
+        float[] coeffs = new float[16];
+        for (int i = 0; i < 16; i++) {
+            coeffs[i] = -2.f + .25f*i;
+        }
+
+        Type.Builder build = new Type.Builder(mRS, Element.RGBA_8888(mRS));
+        build.setX(X);
+        build.setY(Y);
+        Allocation rsInput = Allocation.createTyped(mRS, build.create());
+        Allocation rsOutput = Allocation.createTyped(mRS, build.create());
+        rsInput.copyFromUnchecked(byteAlloc);
+
+        ScriptIntrinsicColorMatrix cm = ScriptIntrinsicColorMatrix.create(mRS, Element.RGBA_8888(mRS));
+        Matrix4f mat = new Matrix4f(coeffs);
+        cm.setColorMatrix(mat);
+        cm.forEach(rsInput, rsOutput);
+
+        byte[] nativeByteAlloc = new byte[X * Y * 4];
+        colorMatrixTest(X, Y, byteAlloc, nativeByteAlloc, coeffs, 2);
+        rsOutput.copyTo(byteAlloc);
+
+        for (int i = 0; i < X * Y * 4; i++) {
+            assertTrue(byteAlloc[i] == nativeByteAlloc[i]);
+        }
+
+    }
+
+    public void testRSColorMatrix3() {
+        int[] baseAlloc = new int[X * Y * 4];
+        RSUtils.genRandom(0x251104, 255, 1, -128, baseAlloc);
+        RenderScript mRS = RenderScript.create(getContext());
+        byte[] byteAlloc = new byte[X * Y * 4];
+        for (int i = 0; i < X * Y * 4; i++) {
+            byteAlloc[i] = (byte)baseAlloc[i];
+        }
+
+        float[] coeffs = new float[9];
+
+        Type.Builder build = new Type.Builder(mRS, Element.RGBA_8888(mRS));
+        build.setX(X);
+        build.setY(Y);
+        Allocation rsInput = Allocation.createTyped(mRS, build.create());
+        Allocation rsOutput = Allocation.createTyped(mRS, build.create());
+        rsInput.copyFromUnchecked(byteAlloc);
+
+        ScriptIntrinsicColorMatrix cm = ScriptIntrinsicColorMatrix.create(mRS, Element.RGBA_8888(mRS));
+        cm.setYUVtoRGB();
+        cm.forEach(rsInput, rsOutput);
+
+        byte[] nativeByteAlloc = new byte[X * Y * 4];
+        colorMatrixTest(X, Y, byteAlloc, nativeByteAlloc, coeffs, 3);
+        rsOutput.copyTo(byteAlloc);
+
+        for (int i = 0; i < X * Y * 4; i++) {
+            assertTrue(byteAlloc[i] == nativeByteAlloc[i]);
+        }
+
+    }
+
+    public void testRSColorMatrix4() {
+        int[] baseAlloc = new int[X * Y * 4];
+        RSUtils.genRandom(0x251103, 255, 1, -128, baseAlloc);
+        RenderScript mRS = RenderScript.create(getContext());
+        byte[] byteAlloc = new byte[X * Y * 4];
+        for (int i = 0; i < X * Y * 4; i++) {
+            byteAlloc[i] = (byte)baseAlloc[i];
+        }
+
+        float[] coeffs = new float[9];
+
+        Type.Builder build = new Type.Builder(mRS, Element.RGBA_8888(mRS));
+        build.setX(X);
+        build.setY(Y);
+        Allocation rsInput = Allocation.createTyped(mRS, build.create());
+        Allocation rsOutput = Allocation.createTyped(mRS, build.create());
+        rsInput.copyFromUnchecked(byteAlloc);
+
+        ScriptIntrinsicColorMatrix cm = ScriptIntrinsicColorMatrix.create(mRS, Element.RGBA_8888(mRS));
+        cm.setRGBtoYUV();
+        cm.forEach(rsInput, rsOutput);
+
+        byte[] nativeByteAlloc = new byte[X * Y * 4];
+        colorMatrixTest(X, Y, byteAlloc, nativeByteAlloc, coeffs, 4);
+        rsOutput.copyTo(byteAlloc);
+
+        for (int i = 0; i < X * Y * 4; i++) {
+            assertTrue(byteAlloc[i] == nativeByteAlloc[i]);
+        }
+
+    }
+
+}
\ No newline at end of file
diff --git a/tests/tests/rscpp/src/android/cts/rscpp/RSConvolveTest.java b/tests/tests/rscpp/src/android/cts/rscpp/RSConvolveTest.java
new file mode 100644
index 0000000..d669d3b
--- /dev/null
+++ b/tests/tests/rscpp/src/android/cts/rscpp/RSConvolveTest.java
@@ -0,0 +1,137 @@
+/*
+ * Copyright (C) 2013 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 android.cts.rscpp;
+
+import com.android.cts.stub.R;
+
+import android.content.Context;
+import android.content.res.Resources;
+import android.test.AndroidTestCase;
+import android.renderscript.*;
+import android.util.Log;
+import java.lang.Integer;
+
+public class RSConvolveTest extends RSCppTest {
+    static {
+        System.loadLibrary("rscpptest_jni");
+    }
+
+    private final int X = 1024;
+    private final int Y = 1024;
+
+    native boolean convolveTest(int X, int Y, byte[] input, byte[] output, float[] coeffs, boolean is3x3);
+    public void testConvolve3x3() {
+        int[] baseAlloc = new int[X * Y];
+        float[] coeffs = new float[9];
+        coeffs[0] = .5f;
+        coeffs[1] = .35f;
+        coeffs[2] =  .1f;
+        coeffs[3] =  1.f;
+        coeffs[4] =  1.f;
+        coeffs[5] =  1.f;
+        coeffs[6] =  .1f;
+        coeffs[7] =  .35f;
+        coeffs[8] =  .5f;
+
+        RSUtils.genRandom(0x1DEFFD0, 255, 1, -128, baseAlloc);
+        RenderScript mRS = RenderScript.create(getContext());
+        byte[] byteAlloc = new byte[X * Y];
+        for (int i = 0; i < X * Y; i++) {
+            byteAlloc[i] = (byte)baseAlloc[i];
+        }
+
+        Type.Builder build = new Type.Builder(mRS, Element.A_8(mRS));
+        build.setX(X);
+        build.setY(Y);
+        Allocation rsInput = Allocation.createTyped(mRS, build.create());
+        Allocation rsOutput = Allocation.createTyped(mRS, build.create());
+        rsInput.copyFromUnchecked(byteAlloc);
+        ScriptIntrinsicConvolve3x3 convolve = ScriptIntrinsicConvolve3x3.create(mRS, Element.A_8(mRS));
+        convolve.setInput(rsInput);
+        convolve.setCoefficients(coeffs);
+        convolve.forEach(rsOutput);
+
+        byte[] nativeByteAlloc = new byte[X * Y];
+        convolveTest(X, Y, byteAlloc, nativeByteAlloc, coeffs, true);
+        rsOutput.copyTo(byteAlloc);
+
+        for (int i = 0; i < X * Y; i++) {
+            assertTrue(byteAlloc[i] == nativeByteAlloc[i]);
+        }
+
+    }
+
+    public void testConvolve5x5() {
+        int[] baseAlloc = new int[X * Y];
+        float[] coeffs = new float[25];
+        coeffs[0] = .5f;
+        coeffs[1] = .35f;
+        coeffs[2] =  .1f;
+        coeffs[3] =  1.f;
+        coeffs[4] =  1.f;
+        coeffs[5] =  1.f;
+        coeffs[6] =  .1f;
+        coeffs[7] =  .35f;
+        coeffs[8] =  .5f;
+        coeffs[9] = .5f;
+        coeffs[10] = .35f;
+        coeffs[11] =  .1f;
+        coeffs[12] =  1.f;
+        coeffs[13] =  1.f;
+        coeffs[14] =  1.f;
+        coeffs[15] =  .1f;
+        coeffs[16] =  .35f;
+        coeffs[17] =  .5f;
+        coeffs[18] = .5f;
+        coeffs[19] = .35f;
+        coeffs[20] =  .1f;
+        coeffs[21] =  1.f;
+        coeffs[22] =  1.f;
+        coeffs[23] =  1.f;
+        coeffs[24] =  .1f;
+
+
+        RSUtils.genRandom(0x1DEFFD0, 255, 1, -128, baseAlloc);
+        RenderScript mRS = RenderScript.create(getContext());
+        byte[] byteAlloc = new byte[X * Y];
+        for (int i = 0; i < X * Y; i++) {
+            byteAlloc[i] = (byte)baseAlloc[i];
+        }
+
+        Type.Builder build = new Type.Builder(mRS, Element.A_8(mRS));
+        build.setX(X);
+        build.setY(Y);
+        Allocation rsInput = Allocation.createTyped(mRS, build.create());
+        Allocation rsOutput = Allocation.createTyped(mRS, build.create());
+        rsInput.copyFromUnchecked(byteAlloc);
+        ScriptIntrinsicConvolve5x5 convolve = ScriptIntrinsicConvolve5x5.create(mRS, Element.A_8(mRS));
+        convolve.setInput(rsInput);
+        convolve.setCoefficients(coeffs);
+        convolve.forEach(rsOutput);
+
+        byte[] nativeByteAlloc = new byte[X * Y];
+        convolveTest(X, Y, byteAlloc, nativeByteAlloc, coeffs, false);
+        rsOutput.copyTo(byteAlloc);
+
+        for (int i = 0; i < X * Y; i++) {
+            assertTrue(byteAlloc[i] == nativeByteAlloc[i]);
+        }
+
+    }
+
+
+}
\ No newline at end of file
diff --git a/tests/tests/rscpp/src/android/cts/rscpp/RSCppTest.java b/tests/tests/rscpp/src/android/cts/rscpp/RSCppTest.java
new file mode 100644
index 0000000..7ce6688
--- /dev/null
+++ b/tests/tests/rscpp/src/android/cts/rscpp/RSCppTest.java
@@ -0,0 +1,43 @@
+/*
+ * Copyright (C) 2013 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 android.cts.rscpp;
+
+import com.android.cts.stub.R;
+
+import android.content.Context;
+import android.content.res.Resources;
+import android.test.AndroidTestCase;
+import android.renderscript.*;
+import android.util.Log;
+
+class RSCppTest extends AndroidTestCase {
+
+    Context mCtx;
+    Resources mRes;
+
+    @Override
+    protected void setUp() throws Exception {
+        super.setUp();
+        mCtx = getContext();
+        mRes = mCtx.getResources();
+    }
+
+    @Override
+    protected void tearDown() throws Exception {
+        super.tearDown();
+    }
+}
\ No newline at end of file
diff --git a/tests/tests/rscpp/src/android/cts/rscpp/RSInitTest.java b/tests/tests/rscpp/src/android/cts/rscpp/RSInitTest.java
new file mode 100644
index 0000000..22804d3
--- /dev/null
+++ b/tests/tests/rscpp/src/android/cts/rscpp/RSInitTest.java
@@ -0,0 +1,41 @@
+/*
+ * Copyright (C) 2013 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 android.cts.rscpp;
+
+import com.android.cts.stub.R;
+
+import android.content.Context;
+import android.content.res.Resources;
+import android.test.AndroidTestCase;
+import android.renderscript.*;
+import android.util.Log;
+
+public class RSInitTest extends RSCppTest {
+    static {
+        System.loadLibrary("rscpptest_jni");
+    }
+
+    native boolean initTest();
+    public void testRSInit() {
+        for (int i = 0; i < 1000; i++) {
+            RenderScript mRS = RenderScript.create(getContext());
+            mRS.destroy();
+            Log.d("rscpptest", "Java iteration " + i);
+        }
+        assertTrue(initTest());
+    }
+}
\ No newline at end of file
diff --git a/tests/tests/rscpp/src/android/cts/rscpp/RSLUTTest.java b/tests/tests/rscpp/src/android/cts/rscpp/RSLUTTest.java
new file mode 100644
index 0000000..7890d57
--- /dev/null
+++ b/tests/tests/rscpp/src/android/cts/rscpp/RSLUTTest.java
@@ -0,0 +1,71 @@
+/*
+ * Copyright (C) 2013 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 android.cts.rscpp;
+
+import com.android.cts.stub.R;
+
+import android.content.Context;
+import android.content.res.Resources;
+import android.test.AndroidTestCase;
+import android.renderscript.*;
+import android.util.Log;
+import java.lang.Integer;
+
+public class RSLUTTest extends RSCppTest {
+    static {
+        System.loadLibrary("rscpptest_jni");
+    }
+
+    private final int X = 1024;
+    private final int Y = 1024;
+
+    native boolean lutTest(int X, int Y, byte[] input, byte[] output);
+    public void testRSLUT() {
+        int[] baseAlloc = new int[X * Y * 4];
+        RSUtils.genRandom(0x72727272, 255, 1, -128, baseAlloc);
+        RenderScript mRS = RenderScript.create(getContext());
+        byte[] byteAlloc = new byte[X * Y * 4];
+        for (int i = 0; i < X * Y * 4; i++) {
+            byteAlloc[i] = (byte)baseAlloc[i];
+        }
+
+        Type.Builder build = new Type.Builder(mRS, Element.RGBA_8888(mRS));
+        build.setX(X);
+        build.setY(Y);
+        Allocation rsInput = Allocation.createTyped(mRS, build.create());
+        Allocation rsOutput = Allocation.createTyped(mRS, build.create());
+        rsInput.copyFromUnchecked(byteAlloc);
+        ScriptIntrinsicLUT lut = ScriptIntrinsicLUT.create(mRS, Element.RGBA_8888(mRS));
+        for (int i = 0; i < 256; i++) {
+            lut.setRed(i, 255-i);
+            lut.setGreen(i, 255-i);
+            lut.setBlue(i, 255-i);
+        }
+
+        lut.forEach(rsInput, rsOutput);
+
+        byte[] nativeByteAlloc = new byte[X * Y * 4];
+        lutTest(X, Y, byteAlloc, nativeByteAlloc);
+        rsOutput.copyTo(byteAlloc);
+
+        for (int i = 0; i < X * Y * 4; i++) {
+            assertTrue(byteAlloc[i] == nativeByteAlloc[i]);
+        }
+
+    }
+
+}
\ No newline at end of file
diff --git a/tests/tests/rscpp/src/android/cts/rscpp/RSUtils.java b/tests/tests/rscpp/src/android/cts/rscpp/RSUtils.java
new file mode 100644
index 0000000..58d665f
--- /dev/null
+++ b/tests/tests/rscpp/src/android/cts/rscpp/RSUtils.java
@@ -0,0 +1,82 @@
+/*
+ * Copyright (C) 2013 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 android.cts.rscpp;
+
+import android.content.res.Resources;
+import java.util.Random;
+import android.renderscript.Allocation;
+import android.renderscript.RSRuntimeException;
+import com.android.cts.stub.R;
+
+/**
+ * This class supplies some utils for renderscript tests
+ */
+public class RSUtils {
+
+    public static void genRandom(long seed, int factor, int offset, float array[]) {
+        Random r = new Random(seed);
+        for (int i = 0; i < array.length; i++) {
+            array[i] = r.nextFloat() * factor + offset;
+        }
+    }
+
+    public static void genRandom(long seed, int factor, int offset, float array[],
+            int stride, int skip) {
+        Random r = new Random(seed);
+        for (int i = 0; i < array.length / stride; i++) {
+            for (int j = 0; j < stride; j++) {
+                if (j >= stride - skip)
+                    array[i * stride + j] = 0;
+                else
+                    array[i * stride + j] = r.nextFloat() * factor + offset;
+            }
+        }
+    }
+
+    public static void genRandom(long seed, int max, int factor, int offset, int array[]) {
+        Random r = new Random(seed);
+        for (int i = 0; i < array.length; i++) {
+            array[i] = (r.nextInt(max) * factor + offset);
+        }
+    }
+
+    public static void genRandom(long seed, int factor, int offset, int array[],
+            int stride, int skip) {
+        Random r = new Random(seed);
+        for (int i = 0; i < array.length / stride; i++) {
+            for (int j = 0; j < stride; j++) {
+                if (j >= stride - skip)
+                    array[i * stride + j] = 0;
+                else
+                    array[i * stride + j] = r.nextInt() * factor + offset;
+            }
+        }
+    }
+
+    public static void genRandom(long seed, int max, int factor, int offset, int array[],
+            int stride, int skip) {
+        Random r = new Random(seed);
+        for (int i = 0; i < array.length / stride; i++) {
+            for (int j = 0; j < stride; j++) {
+                if (j >= stride - skip)
+                    array[i * stride + j] = 0;
+                else
+                    array[i * stride + j] = r.nextInt(max) * factor + offset;
+            }
+        }
+    }
+}
diff --git a/tests/tests/sax/src/android/sax/cts/RootElementTest.java b/tests/tests/sax/src/android/sax/cts/RootElementTest.java
old mode 100755
new mode 100644
diff --git a/tests/tests/security/jni/android_security_cts_NativeCodeTest.cpp b/tests/tests/security/jni/android_security_cts_NativeCodeTest.cpp
index 7f566fd..5c2a6b9 100644
--- a/tests/tests/security/jni/android_security_cts_NativeCodeTest.cpp
+++ b/tests/tests/security/jni/android_security_cts_NativeCodeTest.cpp
@@ -15,16 +15,25 @@
  */
 
 #include <jni.h>
+#include <netlink.h>
+#include <sock_diag.h>
+#include <stdio.h>
+#include <sys/socket.h>
 #include <sys/types.h>
-#include <unistd.h>
 #include <sys/syscall.h>
 #include <sys/prctl.h>
 #include <sys/ptrace.h>
 #include <sys/wait.h>
 #include <signal.h>
+#include <unistd.h>
+#include <errno.h>
+
+#define PASSED 0
+#define UNKNOWN_ERROR -1
 #include <stdlib.h>
 #include <sys/mman.h>
 #include <sys/stat.h>
+#include <sys/utsname.h>
 #include <fcntl.h>
 #include <cutils/log.h>
 #include <linux/perf_event.h>
@@ -171,6 +180,88 @@
     return result;
 }
 
+/*
+ * Will hang if vulnerable, return 0 if successful, -1 on unforseen
+ * error.
+ */
+static jint android_security_cts_NativeCodeTest_doSockDiagTest(JNIEnv* env, jobject thiz)
+{
+    int fd, nlmsg_size, err, len;
+    char buf[1024];
+    struct sockaddr_nl nladdr;
+    struct nlmsghdr *nlh;
+    struct msghdr msg;
+    struct iovec iov;
+    struct sock_diag_req* sock_diag_data;
+
+    int major, minor;
+    struct utsname uts;
+    if (uname(&uts) != -1 &&
+        sscanf(uts.release, "%d.%d", &major, &minor) == 2 &&
+        ((major > 3) || ((major == 3) && (minor > 8)))) {
+        // Kernels above 3.8 are patched against CVE-2013-1763
+        // This test generates false positives if run on > 3.8.
+        // b/17253473
+        return PASSED;
+    }
+
+    fd = socket(AF_NETLINK, SOCK_RAW, NETLINK_SOCK_DIAG);
+    if (fd == -1) {
+        switch (errno) {
+            /* NETLINK_SOCK_DIAG not accessible, vector dne */
+            case EACCES:
+            case EAFNOSUPPORT:
+            case EPERM:
+            case EPROTONOSUPPORT:
+                return PASSED;
+            default:
+                return UNKNOWN_ERROR;
+        }
+    }
+    /* prepare and send netlink packet */
+    memset(&nladdr, 0, sizeof(nladdr));
+    nladdr.nl_family = AF_NETLINK;
+    nlmsg_size = NLMSG_ALIGN(NLMSG_HDRLEN + sizeof(sock_diag_data));
+    nlh = (nlmsghdr *)malloc(nlmsg_size);
+    nlh->nlmsg_len = nlmsg_size;
+    nlh->nlmsg_pid = 0;      //send packet to kernel
+    nlh->nlmsg_type = SOCK_DIAG_BY_FAMILY;
+    nlh->nlmsg_flags = NLM_F_REQUEST | NLM_F_ACK;
+    iov = { (void *) nlh, nlmsg_size };
+    msg = { (void *) &nladdr, sizeof(nladdr), &iov, 1, NULL, 0, 0 };
+    sock_diag_data = (sock_diag_req *) NLMSG_DATA(nlh);
+
+    // AF_MAX changes in later kernels. Use hardcoded value instead
+    // to make sure we trigger the vulnerability in kernels <= 3.8
+    sock_diag_data->sdiag_family = 39+1; // AF_MAX+1, but don't rely on header file.
+
+    if ((err = sendmsg(fd, &msg, 0)) == -1) {
+        /* SELinux blocked it */
+        if (errno == 22) {
+            return PASSED;
+        } else {
+            return UNKNOWN_ERROR;
+        }
+    }
+    free(nlh);
+
+    memset(&nladdr, 0, sizeof(nladdr));
+    iov = { buf, sizeof(buf) };
+    msg = { (void *) &nladdr, sizeof(nladdr), &iov, 1, NULL, 0, 0 };
+    if ((len = recvmsg(fd, &msg, 0)) == -1) {
+        return UNKNOWN_ERROR;
+    }
+    for (nlh = (struct nlmsghdr *) buf; NLMSG_OK(nlh, len); nlh = NLMSG_NEXT (nlh, len)){
+        if (nlh->nlmsg_type == NLMSG_ERROR) {
+            /* -22 = -EINVAL from kernel */
+            if (*(int *)NLMSG_DATA(nlh) == -22) {
+                return PASSED;
+            }
+        }
+    }
+    return UNKNOWN_ERROR;
+}
+
 /* This isn't defined in linux/futex.h on JB */
 #define FUTEX_CMP_REQUEUE_PI    12
 
@@ -199,12 +290,13 @@
     return (ret == -1 && errno == EINVAL);
 }
 
-
 static JNINativeMethod gMethods[] = {
     {  "doPerfEventTest", "()Z",
             (void *) android_security_cts_NativeCodeTest_doPerfEventTest },
     {  "doPerfEventTest2", "()Z",
             (void *) android_security_cts_NativeCodeTest_doPerfEventTest2 },
+    {  "doSockDiagTest", "()I",
+            (void *) android_security_cts_NativeCodeTest_doSockDiagTest },
     {  "doVrootTest", "()Z",
             (void *) android_security_cts_NativeCodeTest_doVrootTest },
     {  "doCVE20141710Test", "()Z",
diff --git a/tests/tests/security/jni/netlink.h b/tests/tests/security/jni/netlink.h
new file mode 100644
index 0000000..b5567b0
--- /dev/null
+++ b/tests/tests/security/jni/netlink.h
@@ -0,0 +1,170 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI__LINUX_NETLINK_H
+#define _UAPI__LINUX_NETLINK_H
+#include <linux/kernel.h>
+#include <linux/socket.h>
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#include <linux/types.h>
+#define NETLINK_ROUTE 0
+#define NETLINK_UNUSED 1
+#define NETLINK_USERSOCK 2
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define NETLINK_FIREWALL 3
+#define NETLINK_SOCK_DIAG 4
+#define NETLINK_NFLOG 5
+#define NETLINK_XFRM 6
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define NETLINK_SELINUX 7
+#define NETLINK_ISCSI 8
+#define NETLINK_AUDIT 9
+#define NETLINK_FIB_LOOKUP 10
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define NETLINK_CONNECTOR 11
+#define NETLINK_NETFILTER 12
+#define NETLINK_IP6_FW 13
+#define NETLINK_DNRTMSG 14
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define NETLINK_KOBJECT_UEVENT 15
+#define NETLINK_GENERIC 16
+#define NETLINK_SCSITRANSPORT 18
+#define NETLINK_ECRYPTFS 19
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define NETLINK_RDMA 20
+#define NETLINK_CRYPTO 21
+#define NETLINK_INET_DIAG NETLINK_SOCK_DIAG
+#define MAX_LINKS 32
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+struct sockaddr_nl {
+ __kernel_sa_family_t nl_family;
+ unsigned short nl_pad;
+ __u32 nl_pid;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ __u32 nl_groups;
+};
+struct nlmsghdr {
+ __u32 nlmsg_len;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ __u16 nlmsg_type;
+ __u16 nlmsg_flags;
+ __u32 nlmsg_seq;
+ __u32 nlmsg_pid;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+};
+#define NLM_F_REQUEST 1
+#define NLM_F_MULTI 2
+#define NLM_F_ACK 4
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define NLM_F_ECHO 8
+#define NLM_F_DUMP_INTR 16
+#define NLM_F_ROOT 0x100
+#define NLM_F_MATCH 0x200
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define NLM_F_ATOMIC 0x400
+#define NLM_F_DUMP (NLM_F_ROOT|NLM_F_MATCH)
+#define NLM_F_REPLACE 0x100
+#define NLM_F_EXCL 0x200
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define NLM_F_CREATE 0x400
+#define NLM_F_APPEND 0x800
+#define NLMSG_ALIGNTO 4U
+#define NLMSG_ALIGN(len) ( ((len)+NLMSG_ALIGNTO-1) & ~(NLMSG_ALIGNTO-1) )
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define NLMSG_HDRLEN ((int) NLMSG_ALIGN(sizeof(struct nlmsghdr)))
+#define NLMSG_LENGTH(len) ((len) + NLMSG_HDRLEN)
+#define NLMSG_SPACE(len) NLMSG_ALIGN(NLMSG_LENGTH(len))
+#define NLMSG_DATA(nlh) ((void*)(((char*)nlh) + NLMSG_LENGTH(0)))
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define NLMSG_NEXT(nlh,len) ((len) -= NLMSG_ALIGN((nlh)->nlmsg_len),   (struct nlmsghdr*)(((char*)(nlh)) + NLMSG_ALIGN((nlh)->nlmsg_len)))
+#define NLMSG_OK(nlh,len) ((len) >= (int)sizeof(struct nlmsghdr) &&   (nlh)->nlmsg_len >= sizeof(struct nlmsghdr) &&   (nlh)->nlmsg_len <= (len))
+#define NLMSG_PAYLOAD(nlh,len) ((nlh)->nlmsg_len - NLMSG_SPACE((len)))
+#define NLMSG_NOOP 0x1
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define NLMSG_ERROR 0x2
+#define NLMSG_DONE 0x3
+#define NLMSG_OVERRUN 0x4
+#define NLMSG_MIN_TYPE 0x10
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+struct nlmsgerr {
+ int error;
+ struct nlmsghdr msg;
+};
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define NETLINK_ADD_MEMBERSHIP 1
+#define NETLINK_DROP_MEMBERSHIP 2
+#define NETLINK_PKTINFO 3
+#define NETLINK_BROADCAST_ERROR 4
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define NETLINK_NO_ENOBUFS 5
+#define NETLINK_RX_RING 6
+#define NETLINK_TX_RING 7
+struct nl_pktinfo {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ __u32 group;
+};
+struct nl_mmap_req {
+ unsigned int nm_block_size;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ unsigned int nm_block_nr;
+ unsigned int nm_frame_size;
+ unsigned int nm_frame_nr;
+};
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+struct nl_mmap_hdr {
+ unsigned int nm_status;
+ unsigned int nm_len;
+ __u32 nm_group;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ __u32 nm_pid;
+ __u32 nm_uid;
+ __u32 nm_gid;
+};
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+enum nl_mmap_status {
+ NL_MMAP_STATUS_UNUSED,
+ NL_MMAP_STATUS_RESERVED,
+ NL_MMAP_STATUS_VALID,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ NL_MMAP_STATUS_COPY,
+ NL_MMAP_STATUS_SKIP,
+};
+#define NL_MMAP_MSG_ALIGNMENT NLMSG_ALIGNTO
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define NL_MMAP_MSG_ALIGN(sz) __ALIGN_KERNEL(sz, NL_MMAP_MSG_ALIGNMENT)
+#define NL_MMAP_HDRLEN NL_MMAP_MSG_ALIGN(sizeof(struct nl_mmap_hdr))
+#define NET_MAJOR 36
+enum {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ NETLINK_UNCONNECTED = 0,
+ NETLINK_CONNECTED,
+};
+struct nlattr {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ __u16 nla_len;
+ __u16 nla_type;
+};
+#define NLA_F_NESTED (1 << 15)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define NLA_F_NET_BYTEORDER (1 << 14)
+#define NLA_TYPE_MASK ~(NLA_F_NESTED | NLA_F_NET_BYTEORDER)
+#define NLA_ALIGNTO 4
+#define NLA_ALIGN(len) (((len) + NLA_ALIGNTO - 1) & ~(NLA_ALIGNTO - 1))
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define NLA_HDRLEN ((int) NLA_ALIGN(sizeof(struct nlattr)))
+#endif
diff --git a/tests/tests/security/jni/sock_diag.h b/tests/tests/security/jni/sock_diag.h
new file mode 100644
index 0000000..0dc2902
--- /dev/null
+++ b/tests/tests/security/jni/sock_diag.h
@@ -0,0 +1,43 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI__SOCK_DIAG_H__
+#define _UAPI__SOCK_DIAG_H__
+#include <linux/types.h>
+#define SOCK_DIAG_BY_FAMILY 20
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+struct sock_diag_req {
+ __u8 sdiag_family;
+ __u8 sdiag_protocol;
+};
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+enum {
+ SK_MEMINFO_RMEM_ALLOC,
+ SK_MEMINFO_RCVBUF,
+ SK_MEMINFO_WMEM_ALLOC,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ SK_MEMINFO_SNDBUF,
+ SK_MEMINFO_FWD_ALLOC,
+ SK_MEMINFO_WMEM_QUEUED,
+ SK_MEMINFO_OPTMEM,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ SK_MEMINFO_BACKLOG,
+ SK_MEMINFO_VARS,
+};
+#endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/tests/tests/security/src/android/security/cts/CertificateData.java b/tests/tests/security/src/android/security/cts/CertificateData.java
index f2e2f8c..8a4d603 100644
--- a/tests/tests/security/src/android/security/cts/CertificateData.java
+++ b/tests/tests/security/src/android/security/cts/CertificateData.java
@@ -26,25 +26,25 @@
 class CertificateData {
   static final String[] CERTIFICATE_DATA = {
       "91:C6:D6:EE:3E:8A:C8:63:84:E5:48:C2:99:29:5C:75:6C:81:7B:81",
-      "A4:34:89:15:9A:52:0F:0D:93:D0:32:CC:AF:37:E7:FE:20:A8:B4:19",
+      "4A:65:D5:F4:1D:EF:39:B8:B8:90:4A:4A:D3:64:81:33:CF:C7:A1:D1",
+      "4D:23:78:EC:91:95:39:B5:00:7F:75:8F:03:3B:21:1E:C5:4D:8B:CF",
       "E7:B4:F6:9D:61:EC:90:69:DB:7E:90:A7:40:1A:3C:F4:7D:4F:E8:EE",
       "DD:E1:D2:A9:01:80:2E:1D:87:5E:84:B3:80:7E:4B:B1:FD:99:41:34",
       "92:5A:8F:8D:2C:6D:04:E0:66:5F:59:6A:FF:22:D8:63:E8:25:6F:3F",
       "75:E0:AB:B6:13:85:12:27:1C:04:F8:5F:DD:DE:38:E4:B7:24:2E:FE",
-      "A9:62:8F:4B:98:A9:1B:48:35:BA:D2:C1:46:32:86:BB:66:64:6A:8C",
       "40:9D:4B:D9:17:B5:5C:27:B6:9B:64:CB:98:22:44:0D:CD:09:B8:89",
-      "87:81:C2:5A:96:BD:C2:FB:4C:65:06:4F:F9:39:0B:26:04:8A:0E:01",
+      "E1:9F:E3:0E:8B:84:60:9E:80:9B:17:0D:72:A8:C5:BA:6E:14:09:BD",
       "DA:C9:02:4F:54:D8:F6:DF:94:93:5F:B1:73:26:38:CA:6A:D7:7C:13",
+      "4F:99:AA:93:FB:2B:D1:37:26:A1:99:4A:CE:7F:F0:05:F2:93:5D:1E",
       "74:20:74:41:72:9C:DD:92:EC:79:31:D8:23:10:8D:C2:81:92:E2:BB",
-      "3C:71:D7:0E:35:A5:DA:A8:B2:E3:81:2D:C3:67:74:17:F5:99:0D:F3",
       "40:54:DA:6F:1C:3F:40:74:AC:ED:0F:EC:CD:DB:79:D1:53:FB:90:1D",
       "43:F9:B1:10:D5:BA:FD:48:22:52:31:B0:D0:08:2B:37:2F:EF:9A:54",
       "F4:8B:11:BF:DE:AB:BE:94:54:20:71:E6:41:DE:6B:BE:88:2B:40:B9",
       "58:E8:AB:B0:36:15:33:FB:80:F7:9B:1B:6D:29:D3:FF:8D:5F:00:F0",
-      "96:56:CD:7B:57:96:98:95:D0:E1:41:46:68:06:FB:B8:C6:11:06:87",
       "55:A6:72:3E:CB:F2:EC:CD:C3:23:74:70:19:9D:2A:BE:11:E3:81:D1",
       "D6:9B:56:11:48:F0:1C:77:C5:45:78:C1:09:26:DF:5B:85:69:76:AD",
       "78:6A:74:AC:76:AB:14:7F:9C:6A:30:50:BA:9E:A8:7E:FE:9A:CE:3C",
+      "8E:1C:74:F8:A6:20:B9:E5:8A:F4:61:FA:EC:2B:47:56:51:1A:52:C6",
       "27:96:BA:E6:3F:18:01:E2:77:26:1B:A0:D7:77:70:02:8F:20:EE:E4",
       "AD:7E:1C:28:B0:64:EF:8F:60:03:40:20:14:C3:D0:E3:37:0E:B5:8A",
       "8D:17:84:D5:37:F3:03:7D:EC:70:FE:57:8B:51:9A:99:E6:10:D7:B0",
@@ -54,18 +54,20 @@
       "74:F8:A3:C3:EF:E7:B3:90:06:4B:83:90:3C:21:64:60:20:E5:DF:CE",
       "85:B5:FF:67:9B:0C:79:96:1F:C8:6E:44:22:00:46:13:DB:17:92:84",
       "3E:2B:F7:F2:03:1B:96:F3:8C:E6:C4:D8:A8:5D:3E:2D:58:47:6A:0F",
+      "A3:F1:33:3F:E2:42:BF:CF:C5:D1:4E:8F:39:42:98:40:68:10:D1:A0",
       "5F:43:E5:B1:BF:F8:78:8C:AC:1C:C7:CA:4A:9A:C6:22:2B:CC:34:C6",
       "A8:98:5D:3A:65:E5:E5:C4:B2:D7:D6:6D:40:C6:DD:2F:B1:9C:54:36",
       "59:22:A1:E1:5A:EA:16:35:21:F8:98:39:6A:46:46:B0:44:1B:0F:A9",
       "D4:DE:20:D0:5E:66:FC:53:FE:1A:50:88:2C:78:DB:28:52:CA:E4:74",
       "02:FA:F3:E2:91:43:54:68:60:78:57:69:4D:F5:E4:5B:68:85:18:68",
       "D8:C5:38:8A:B7:30:1B:1B:6E:D4:7A:E6:45:25:3A:6F:9F:1A:27:61",
+      "93:05:7A:88:15:C6:4F:CE:88:2F:FA:91:16:52:28:78:BC:53:64:17",
       "59:AF:82:79:91:86:C7:B4:75:07:CB:CF:03:57:46:EB:04:DD:B7:16",
       "50:30:06:09:1D:97:D4:F5:AE:39:F7:CB:E7:92:7D:7D:65:2D:34:31",
+      "FE:45:65:9B:79:03:5B:98:A1:61:B5:51:2E:AC:DA:58:09:48:22:4D",
       "1B:4B:39:61:26:27:6B:64:91:A2:68:6D:D7:02:43:21:2D:1F:1D:96",
       "77:47:4F:C6:30:E4:0F:4C:47:64:3F:84:BA:B8:C6:95:4A:8A:41:EC",
       "8C:F4:27:FD:79:0C:3A:D1:66:06:8D:E8:1E:57:EF:BB:93:22:72:D4",
-      "56:E0:FA:C0:3B:8F:18:23:55:18:E5:D3:11:CA:E8:C2:43:31:AB:66",
       "02:72:68:29:3E:5F:5D:17:AA:A4:B3:C3:E6:36:1E:1F:92:57:5E:AA",
       "2F:78:3D:25:52:18:A7:4A:65:39:71:B5:2C:A2:9C:45:15:6F:E9:19",
       "97:81:79:50:D8:1C:96:70:CC:34:D8:09:CF:79:44:31:36:7E:F4:74",
@@ -82,8 +84,10 @@
       "87:9F:4B:EE:05:DF:98:58:3B:E3:60:D6:33:E7:0D:3F:FE:98:71:AF",
       "DE:3F:40:BD:50:93:D3:9B:6C:60:F6:DA:BC:07:62:01:00:89:76:C9",
       "22:D5:D8:DF:8F:02:31:D1:8D:F7:9D:B7:CF:8A:2D:64:C9:3F:6C:3A",
+      "F3:73:B3:87:06:5A:28:84:8A:F2:F3:4A:CE:19:2B:DD:C7:8E:9C:AC",
       "06:08:3F:59:3F:15:A1:04:A0:69:A4:6B:A9:03:D0:06:B7:97:09:91",
       "E3:92:51:2F:0A:CF:F5:05:DF:F6:DE:06:7F:75:37:E1:65:EA:57:4B",
+      "43:13:BB:96:F1:D5:86:9B:C1:4E:6A:92:F6:CF:F6:34:69:87:82:37",
       "F1:8B:53:8D:1B:E9:03:B6:A6:F0:56:43:5B:17:15:89:CA:F3:6B:F2",
       "05:63:B8:63:0D:62:D7:5A:BB:C8:AB:1E:4B:DF:B5:A8:99:B2:4D:43",
       "93:E6:AB:22:03:03:B5:23:28:DC:DA:56:9E:BA:E4:D1:D1:CC:FB:65",
@@ -111,35 +115,41 @@
       "FA:B7:EE:36:97:26:62:FB:2D:B0:2A:F6:BF:03:FD:E8:7C:4B:2F:9B",
       "8B:AF:4C:9B:1D:F0:2A:92:F7:DA:12:8E:B9:1B:AC:F4:98:60:4B:6F",
       "9F:74:4E:9F:2B:4D:BA:EC:0F:31:2C:50:B6:56:3B:8E:2D:93:C3:11",
-      "39:4F:F6:85:0B:06:BE:52:E5:18:56:CC:10:E1:80:E8:82:B3:85:CC",
+      "C9:A8:B9:E7:55:80:5E:58:E3:53:77:A7:25:EB:AF:C3:7B:27:CC:D7",
       "1F:49:14:F7:D8:74:95:1D:DD:AE:02:C0:BE:FD:3A:2D:82:75:51:85",
+      "B5:61:EB:EA:A4:DE:E4:25:4B:69:1A:98:A5:57:47:C2:34:C7:D9:71",
       "07:E0:32:E0:20:B7:2C:3F:19:2F:06:28:A2:59:3A:19:A7:0F:06:9E",
       "D6:DA:A8:20:8D:09:D2:15:4D:24:B5:2F:CB:34:6E:B2:58:B2:8A:58",
       "32:3C:11:8E:1B:F7:B8:B6:52:54:E2:E2:10:0D:D6:02:90:37:F0:96",
+      "E7:A1:90:29:D3:D5:52:DC:0D:0F:C6:92:D3:EA:88:0D:15:2E:1A:6B",
       "67:65:0D:F1:7E:8E:7E:5B:82:40:A4:F4:56:4B:CF:E2:3D:69:C6:F0",
       "FE:B8:C4:32:DC:F9:76:9A:CE:AE:3D:D8:90:8F:FD:28:86:65:64:7D",
       "4A:BD:EE:EC:95:0D:35:9C:89:AE:C7:52:A1:2C:5B:29:F6:D6:AA:0C",
       "33:9B:6B:14:50:24:9B:55:7A:01:87:72:84:D9:E0:2F:C3:D2:D8:E9",
-      "AB:48:F3:33:DB:04:AB:B9:C0:72:DA:5B:0C:C1:D0:57:F0:36:9B:46",
+      "2A:B6:28:48:5E:78:FB:F3:AD:9E:79:10:DD:6B:DF:99:72:2C:96:E5",
       "36:B1:2B:49:F9:81:9E:D7:4C:9E:BC:38:0F:C6:56:8F:5D:AC:B2:F7",
       "37:F7:6D:E6:07:7C:90:C5:B1:3E:93:1A:B7:41:10:B4:F2:E4:9A:27",
       "AA:DB:BC:22:23:8F:C4:01:A1:27:BB:38:DD:F4:1D:DB:08:9E:F0:12",
       "3B:C4:9F:48:F8:F3:73:A0:9C:1E:BD:F8:5B:B1:C3:65:C7:D8:11:B3",
       "AC:ED:5F:65:53:FD:25:CE:01:5F:1F:7A:48:3B:6A:74:9F:61:78:C6",
       "28:90:3A:63:5B:52:80:FA:E6:77:4C:0B:6D:A7:D6:BA:A6:4A:F2:E8",
+      "9C:BB:48:53:F6:A4:F6:D3:52:A4:E8:32:52:55:60:13:F5:AD:AF:65",
       "B1:BC:96:8B:D4:F4:9D:62:2A:A8:9A:81:F2:15:01:52:A4:1D:82:9C",
+      "20:D8:06:40:DF:9B:25:F5:12:25:3A:11:EA:F7:59:8A:EB:14:B5:47",
       "CF:9E:87:6D:D3:EB:FC:42:26:97:A3:B5:A3:7A:A0:76:A9:06:23:48",
+      "2B:B1:F5:3E:55:0C:1D:C5:F1:D4:E6:B7:6A:46:4B:55:06:02:AC:21",
       "47:BE:AB:C9:22:EA:E8:0E:78:78:34:62:A7:9F:45:C2:54:FD:E6:8B",
       "31:7A:2A:D0:7F:2B:33:5E:F5:A1:C3:4E:4B:57:E8:B7:D8:F1:FC:A6",
       "39:21:C1:15:C1:5D:0E:CA:5C:CB:5B:C4:F0:7D:21:D8:05:0B:56:6A",
       "3A:44:73:5A:E5:81:90:1F:24:86:61:46:1E:3B:9C:C4:5F:F5:3A:1B",
       "B3:1E:B1:B7:40:E3:6C:84:02:DA:DC:37:D4:4D:F5:D4:67:49:52:F9",
-      "81:96:8B:3A:EF:1C:DC:70:F5:FA:32:69:C2:92:A3:63:5B:D1:23:D3",
       "E0:AB:05:94:20:72:54:93:05:60:62:02:36:70:F7:CD:2E:FC:66:66",
       "D3:C0:63:F2:19:ED:07:3E:34:AD:5D:75:0B:32:76:29:FF:D5:9A:F2",
+      "3B:C0:38:0B:33:C3:F6:A6:0C:86:15:22:93:D9:DF:F5:4B:81:C0:04",
       "C8:EC:8C:87:92:69:CB:4B:AB:39:E9:8D:7E:57:67:F3:14:95:73:9D",
       "03:9E:ED:B8:0B:E7:A0:3C:69:53:89:3B:20:D2:D9:32:3A:4C:2A:FD",
       "CB:A1:C5:F8:B0:E3:5E:B8:B9:45:12:D3:F9:34:A2:E9:06:10:D3:36",
+      "51:C6:E7:08:49:06:6E:F3:92:D4:5C:A0:0D:6D:A3:62:8F:C3:52:39",
       "B8:23:6B:00:2F:1D:16:86:53:01:55:6C:11:A4:37:CA:EB:FF:C3:BB",
       "10:1D:FA:3F:D5:0B:CB:BB:9B:B5:60:0C:19:55:A4:1A:F4:73:3A:04",
       "87:82:C6:C3:04:35:3B:CF:D2:96:92:D2:59:3E:7D:44:D9:34:FF:11",
@@ -147,11 +157,11 @@
       "21:FC:BD:8E:7F:6C:AF:05:1B:D1:B3:43:EC:A8:E7:61:47:F2:0F:8A",
       "5F:3B:8C:F2:F8:10:B3:7D:78:B4:CE:EC:19:19:C3:73:34:B9:C7:74",
       "2A:C8:D5:8B:57:CE:BF:2F:49:AF:F2:FC:76:8F:51:14:62:90:7A:41",
+      "F1:7F:6F:B6:31:DC:99:E3:A3:C8:7F:FE:1C:F1:81:10:88:D9:60:33",
       "96:C9:1B:0B:95:B4:10:98:42:FA:D0:D8:22:79:FE:60:FA:B9:16:83",
-      "CA:BB:51:67:24:00:58:8E:64:19:F1:D4:08:78:D0:40:3A:A2:02:64",
-      "5D:98:9C:DB:15:96:11:36:51:65:64:1B:56:0F:DB:EA:2A:C2:3E:F1",
       "D8:A6:33:2C:E0:03:6F:B1:85:F6:63:4F:7D:6A:06:65:26:32:28:27",
       "9F:AD:91:A6:CE:6A:C6:C5:00:47:C4:4E:C9:D4:A5:0D:92:D8:49:79",
+      "CC:AB:0E:A0:4C:23:01:D6:69:7B:DD:37:9F:CD:12:EB:24:E3:94:9D",
       "F9:B5:B6:32:45:5F:9C:BE:EC:57:5F:80:DC:E9:6E:2C:C7:B2:78:B7",
       "5F:3A:FC:0A:8B:64:F6:86:67:34:74:DF:7E:A9:A2:FE:F9:FA:7A:51",
       "E6:21:F3:35:43:79:05:9A:4B:68:30:9D:8A:2F:74:22:15:87:EC:79",
@@ -159,9 +169,9 @@
       "89:DF:74:FE:5C:F4:0F:4A:80:F9:E3:37:7D:54:DA:91:E1:01:31:8E",
       "E0:B4:32:2E:B2:F6:A5:68:B6:54:53:84:48:18:4A:50:36:87:43:84",
       "61:57:3A:11:DF:0E:D8:7E:D5:92:65:22:EA:D0:56:D7:44:B3:23:71",
-      "0B:77:BE:BB:CB:7A:A2:47:05:DE:CC:0F:BD:6A:02:FC:7A:BD:9B:52",
       "99:A6:9B:E6:1A:FE:88:6B:4D:2B:82:00:7C:B8:54:FC:31:7E:15:39",
       "6E:3A:55:A4:19:0C:19:5C:93:84:3C:C0:DB:72:2E:31:30:61:F0:B1",
+      "31:F1:FD:68:22:63:20:EE:C6:3B:3F:9D:EA:4A:3E:53:7C:7C:39:17",
       "E5:DF:74:3C:B6:01:C4:9B:98:43:DC:AB:8C:E8:6A:81:10:9F:E4:8E",
       "F9:CD:0E:2C:DA:76:24:C1:8F:BD:F0:F0:AB:B6:45:B8:F7:FE:D5:7A",
       "23:88:C9:D3:71:CC:9E:96:3D:FF:7D:3C:A7:CE:FC:D6:25:EC:19:0D",
diff --git a/tests/tests/security/src/android/security/cts/CertificateTest.java b/tests/tests/security/src/android/security/cts/CertificateTest.java
index 844621b..3db7aca 100644
--- a/tests/tests/security/src/android/security/cts/CertificateTest.java
+++ b/tests/tests/security/src/android/security/cts/CertificateTest.java
@@ -16,9 +16,10 @@
 
 package android.security.cts;
 
-import android.test.AndroidTestCase;
+import android.content.res.AssetManager;
+import android.test.InstrumentationTestCase;
 
-import java.io.FileInputStream;
+import java.io.File;
 import java.io.IOException;
 import java.io.InputStream;
 import java.security.KeyStore;
@@ -27,19 +28,78 @@
 import java.security.NoSuchAlgorithmException;
 import java.security.cert.CertificateEncodingException;
 import java.security.cert.CertificateException;
+import java.security.cert.CertificateFactory;
 import java.security.cert.X509Certificate;
+import java.util.Arrays;
 import java.util.Collections;
 import java.util.HashSet;
 import java.util.List;
 import java.util.Set;
 
-public class CertificateTest extends AndroidTestCase {
+public class CertificateTest extends InstrumentationTestCase {
 
-    public void testCertificates() throws Exception {
-        Set<String> expectedCertificates = getExpectedCertificates();
+    public void testNoRemovedCertificates() throws Exception {
+        Set<String> expectedCertificates = new HashSet<String>(
+                Arrays.asList(CertificateData.CERTIFICATE_DATA));
         Set<String> deviceCertificates = getDeviceCertificates();
         expectedCertificates.removeAll(deviceCertificates);
-        assertTrue("Missing certificates: " + expectedCertificates, expectedCertificates.isEmpty());
+        assertEquals("Missing CA certificates", Collections.EMPTY_SET, expectedCertificates);
+    }
+
+    /**
+     * If you fail CTS as a result of adding a root CA that is not part of the Android root CA
+     * store, please see the following.
+     *
+     * First, this test exists because adding untrustworthy root CAs to a device has a very
+     * significant security impact. In the worst case, adding a rogue CA can permanently compromise
+     * the confidentiality and integrity of your users' network traffic. Because of this risk,
+     * adding new certificates should be done sparingly and as a last resort -- never as a first
+     * response or short term fix. Before attempting to modify this test, please consider whether
+     * adding a new certificate authority is in your users' best interests.
+     *
+     * Second, because the addition of a new root CA by an OEM can have such dire consequences for
+     * so many people it is imperative that it be done transparently and in the open. Any request to
+     * modify the certificate list used by this test must have a corresponding change in AOSP
+     * (one certificate per change) authored by the OEM in question and including:
+     *
+     *     - the certificate in question:
+     *       - The certificate must be in a file under
+     *         cts/tests/tests/security/assets/oem_cacerts, in PEM (Privacy-enhanced Electronic
+     *         Mail) format, with the textual representation of the certificate following the PEM
+     *         section.
+     *       - The file name must be in the format of <hash>.<n> where "hash" is the subject hash
+     *         produced by:
+     *           openssl x509 -in cert_file -subject_hash -noout
+     *         and the "n" is a unique integer identifier starting at 0 to deal with collisions.
+     *         See OpenSSL's c_rehash manpage for details.
+     *       - cts/tests/tests/security/tools/format_cert.sh helps meet the above requirements.
+     *
+     *     - information about who created and maintains both the certificate and the corresponding
+     *       keypair.
+     *
+     *     - information about what the certificate is to be used for and why the certificate is
+     *       appropriate for inclusion.
+     *
+     *     - a statement from the OEM indicating that they have sufficient confidence in the
+     *       security of the key, the security practices of the issuer, and the validity of the
+     *       intended use that they believe adding the certificate is not detrimental to the
+     *       security of the user.
+     *
+     * Finally, please note that this is not the usual process for adding root CAs to Android. If
+     * you have a certificate that you believe should be present on all Android devices, please file
+     * a public bug at https://code.google.com/p/android/issues/entry or http://b.android.com to
+     * seek resolution.
+     *
+     * For questions, comments, and code reviews please contact security@android.com.
+     */
+    public void testNoAddedCertificates() throws Exception {
+        Set<String> oemWhitelistedCertificates = getOemWhitelistedCertificates();
+        Set<String> expectedCertificates = new HashSet<String>(
+                Arrays.asList(CertificateData.CERTIFICATE_DATA));
+        Set<String> deviceCertificates = getDeviceCertificates();
+        deviceCertificates.removeAll(expectedCertificates);
+        deviceCertificates.removeAll(oemWhitelistedCertificates);
+        assertEquals("Unknown CA certificates", Collections.EMPTY_SET, deviceCertificates);
     }
 
     public void testBlockCertificates() throws Exception {
@@ -48,15 +108,7 @@
 
         Set<String> deviceCertificates = getDeviceCertificates();
         deviceCertificates.retainAll(blockCertificates);
-        assertTrue("Blocked certificates: " + deviceCertificates, deviceCertificates.isEmpty());
-    }
-
-    private Set<String> getExpectedCertificates() {
-        Set<String> certificates = new HashSet<String>();
-        for (int i = 0; i < CertificateData.CERTIFICATE_DATA.length; i++) {
-            certificates.add(CertificateData.CERTIFICATE_DATA[i]);
-        }
-        return certificates;
+        assertEquals("Blocked CA certificates", Collections.EMPTY_SET, deviceCertificates);
     }
 
     private Set<String> getDeviceCertificates() throws KeyStoreException,
@@ -80,6 +132,30 @@
         return certificates;
     }
 
+    private static final String ASSETS_DIR_OEM_CERTS = "oem_cacerts";
+
+    private Set<String> getOemWhitelistedCertificates() throws Exception {
+        Set<String> certificates = new HashSet<String>();
+        CertificateFactory certFactory = CertificateFactory.getInstance("X.509");
+        AssetManager assetManager = getInstrumentation().getContext().getAssets();
+        for (String path : assetManager.list(ASSETS_DIR_OEM_CERTS)) {
+            File certAssetFile = new File(ASSETS_DIR_OEM_CERTS, path);
+            InputStream in = null;
+            try {
+                in = assetManager.open(certAssetFile.toString());
+                X509Certificate certificate = (X509Certificate) certFactory.generateCertificate(in);
+                certificates.add(getFingerprint(certificate));
+            } catch (Exception e) {
+                throw new Exception("Failed to load certificate from asset: " + certAssetFile, e);
+            } finally {
+                if (in != null) {
+                    in.close();
+                }
+            }
+        }
+        return certificates;
+    }
+
     private String getFingerprint(X509Certificate certificate) throws CertificateEncodingException,
             NoSuchAlgorithmException {
         MessageDigest messageDigest = MessageDigest.getInstance("SHA1");
diff --git a/tests/tests/security/src/android/security/cts/KernelSettingsTest.java b/tests/tests/security/src/android/security/cts/KernelSettingsTest.java
index 6928ee2..fc76027 100644
--- a/tests/tests/security/src/android/security/cts/KernelSettingsTest.java
+++ b/tests/tests/security/src/android/security/cts/KernelSettingsTest.java
@@ -35,13 +35,13 @@
     }
 
     /**
-     * Ensure that SELinux is not in enforcing mode.
+     * Ensure that SELinux is in enforcing mode.
      */
     public void testSELinuxEnforcing() throws IOException {
         try {
-            assertEquals("0", getFile("/sys/fs/selinux/enforce"));
+            assertEquals("1", getFile("/sys/fs/selinux/enforce"));
         } catch (FileNotFoundException e) {
-            // SELinux is not compiled into the kernel. Ignore exception.
+            fail("SELinux is not compiled into this kernel, or is disabled.");
         }
     }
 
diff --git a/tests/tests/security/src/android/security/cts/NativeCodeTest.java b/tests/tests/security/src/android/security/cts/NativeCodeTest.java
index f6e6029..4c1da05 100644
--- a/tests/tests/security/src/android/security/cts/NativeCodeTest.java
+++ b/tests/tests/security/src/android/security/cts/NativeCodeTest.java
@@ -42,6 +42,12 @@
         assertTrue(doPerfEventTest2());
     }
 
+    public void testSockDiag() throws Exception {
+        int result = doSockDiagTest();
+        assertFalse("Encountered unexpected error: " + result + ".", (result == -1));
+        assertEquals(0, result);
+    }
+
     public void testFutex() throws Exception {
         assertTrue("Device is vulnerable to CVE-2014-3153, a vulnerability in the futex() system "
                    + "call. Please apply the security patch at "
@@ -102,4 +108,10 @@
      * false if the device is vulnerable.
      */
     private static native boolean doCVE20141710Test();
+
+    /**
+     * Hangs if device is vulnerable to CVE-2013-1763, returns -1 if
+     * unexpected error occurs, 0 otherwise.
+     */
+    private static native int doSockDiagTest();
 }
diff --git a/tests/tests/security/src/android/security/cts/PackageSignatureTest.java b/tests/tests/security/src/android/security/cts/PackageSignatureTest.java
index cbb95d4..5d8a050 100644
--- a/tests/tests/security/src/android/security/cts/PackageSignatureTest.java
+++ b/tests/tests/security/src/android/security/cts/PackageSignatureTest.java
@@ -97,6 +97,7 @@
 
             // CTS test
             "android.core.tests.libcore.package.com",
+            "android.core.tests.libcore.package.conscrypt",
             "android.core.tests.libcore.package.dalvik",
             "android.core.tests.libcore.package.libcore",
             "android.core.tests.libcore.package.org",
diff --git a/tests/tests/security/src/android/security/cts/ServicePermissionsTest.java b/tests/tests/security/src/android/security/cts/ServicePermissionsTest.java
index 5d7ff75..7de3baa 100644
--- a/tests/tests/security/src/android/security/cts/ServicePermissionsTest.java
+++ b/tests/tests/security/src/android/security/cts/ServicePermissionsTest.java
@@ -132,7 +132,9 @@
             }
 
             if (lines.size() == 1) {
-                if (!lines.get(0).contains("Permission Denial")) {
+                String message = lines.get(0);
+                if (!message.contains("Permission Denial") &&
+                        !message.contains("android.permission.DUMP")) {
                     fail("dump() for " + service + " produced a single line which didn't "
                             + "reference a permission; it may be leaking sensitive data.");
                 }
diff --git a/tests/tests/security/testeffect/Android.mk b/tests/tests/security/testeffect/Android.mk
index 3b23bc6..49441c7 100644
--- a/tests/tests/security/testeffect/Android.mk
+++ b/tests/tests/security/testeffect/Android.mk
@@ -17,8 +17,6 @@
 # Test effect library
 include $(CLEAR_VARS)
 
-LOCAL_MODULE_TAGS := tests
-
 LOCAL_SRC_FILES:= \
   CTSTestEffect.cpp
 
diff --git a/tests/tests/security/testeffect/CTSTestEffect.cpp b/tests/tests/security/testeffect/CTSTestEffect.cpp
index 2276f73..9724a32 100644
--- a/tests/tests/security/testeffect/CTSTestEffect.cpp
+++ b/tests/tests/security/testeffect/CTSTestEffect.cpp
@@ -14,7 +14,6 @@
  * limitations under the License.
  */
 
-#include <string.h>
 #include <hardware/audio_effect.h>
 
 
@@ -42,7 +41,6 @@
 //--- Effect Library Interface Implementation
 //
 
-
 int CTSEffectsLib_Create(const effect_uuid_t *uuid,
                          int32_t sessionId,
                          int32_t ioId,
diff --git a/tests/tests/security/tools/format_cert.sh b/tests/tests/security/tools/format_cert.sh
new file mode 100755
index 0000000..94407a0
--- /dev/null
+++ b/tests/tests/security/tools/format_cert.sh
@@ -0,0 +1,55 @@
+#!/bin/sh
+
+# Outputs the provided certificate (PEM or DER) in a format used by CTS tests.
+# The format is PEM block, followed by the textual representation of the
+# certificate, followed by the SHA-1 fingerprint.
+
+# OpenSSL binary built from this Android source
+OPENSSL="$ANDROID_HOST_OUT/bin/openssl"
+if [ "$ANDROID_HOST_OUT" == "" ]; then
+  echo "Android build environment not set up"
+  echo
+  echo "Run the following from the root of the Android source tree:"
+  echo "  . build/envsetup.sh && lunch"
+  exit 1
+fi
+if [ ! -f "$OPENSSL" ]; then
+  echo "openssl binary not found"
+  echo
+  echo "Run 'mmm external/openssl' or 'make openssl' from the root of the" \
+      "Android source tree to build it."
+  exit 1
+fi
+
+# Input file containing the certificate in PEM or DER format
+in_file="$1"
+
+# Output file. If not specified, the file will be named <hash>.0 where "hash"
+# is the certificate's subject hash produced by:
+#   openssl x509 -in cert_file -subject_hash -noout
+out_file="$2"
+
+# Detect whether the input file is PEM or DER.
+in_form="pem"
+subject_hash=$("$OPENSSL" x509 -in "$in_file" -inform $in_form -subject_hash \
+    -noout 2>/dev/null)
+if [ "$?" != "0" ]; then
+  in_form="der"
+  subject_hash=$("$OPENSSL" x509 -in "$in_file" -inform $in_form -subject_hash \
+      -noout)
+  if [ "$?" != "0" ]; then
+    echo "Certificate file format is neither PEM nor DER"
+    exit 1
+  fi
+fi
+
+# Name the output file <hash>.0 if the name is not specified explicitly.
+if [ "$out_file" == "" ]; then
+  out_file="$subject_hash.0"
+  echo "Auto-generated output file name: $out_file"
+fi
+
+# Output the certificate in the target format
+"$OPENSSL" x509 -in "$in_file" -inform $in_form -outform pem > "$out_file" && \
+"$OPENSSL" x509 -in "$in_file" -inform $in_form -noout -text -fingerprint \
+    >> "$out_file"
diff --git a/tests/tests/telephony/src/android/telephony/cts/SmsManagerTest.java b/tests/tests/telephony/src/android/telephony/cts/SmsManagerTest.java
old mode 100644
new mode 100755
index ac1acfb..94da781
--- a/tests/tests/telephony/src/android/telephony/cts/SmsManagerTest.java
+++ b/tests/tests/telephony/src/android/telephony/cts/SmsManagerTest.java
@@ -66,6 +66,7 @@
                     "311660",   // MetroPCS
                     "310120",   // Sprint
                     "44050",    // KDDI
+                    "44051",    // KDDI
                     "44053",    // KDDI
                     "44054",    // KDDI
                     "44070",    // KDDI
@@ -93,6 +94,7 @@
                     "310600",    // Cellcom
                     "31000",     // Republic Wireless US
                     "310026",     // T-Mobile US
+                    "330120", // OpenMobile communication
                     // Verizon
                     "310004",
                     "310012",
@@ -123,6 +125,7 @@
             Arrays.asList(
                     "44010",    // NTT DOCOMO
                     "44020",    // SBM
+                    "44051",    // KDDI
                     "302720",   // Rogers
                     "30272",    // Rogers
                     "302370",   // Fido
@@ -161,6 +164,7 @@
             Arrays.asList(
                     "44010",    // NTT DOCOMO
                     "44020",    // SBM
+                    "44051",    // KDDI
                     "302720",   // Rogers
                     "30272",    // Rogers
                     "302370",   // Fido
diff --git a/tests/tests/telephony/src/android/telephony/cts/SmsUsageMonitorShortCodeTest.java b/tests/tests/telephony/src/android/telephony/cts/SmsUsageMonitorShortCodeTest.java
new file mode 100644
index 0000000..0d24d06
--- /dev/null
+++ b/tests/tests/telephony/src/android/telephony/cts/SmsUsageMonitorShortCodeTest.java
@@ -0,0 +1,508 @@
+/*
+ * Copyright (C) 2012 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 android.telephony.cts;
+
+import android.content.Context;
+import android.content.pm.PackageManager;
+import android.test.AndroidTestCase;
+import android.test.suitebuilder.annotation.SmallTest;
+
+import com.android.internal.telephony.SmsUsageMonitor;
+
+import android.telephony.PhoneNumberUtils;
+
+/**
+ * Test cases for SMS short code pattern matching in SmsUsageMonitor.
+ */
+public class SmsUsageMonitorShortCodeTest extends AndroidTestCase {
+
+    private PackageManager mPackageManager;
+
+    /** Return value from {@link SmsUsageMonitor#checkDestination} for regular phone numbers. */
+    static final int CATEGORY_NOT_SHORT_CODE = 0;
+
+    /**
+     * Return value from {@link SmsUsageMonitor#checkDestination} for free (no cost)
+     * short codes.
+     */
+    static final int CATEGORY_FREE_SHORT_CODE = 1;
+
+    /**
+     * Return value from {@link SmsUsageMonitor#checkDestination} for standard rate (non-premium)
+     * short codes.
+     */
+    static final int CATEGORY_STANDARD_SHORT_CODE = 2;
+
+    /**
+     * Return value from {@link SmsUsageMonitor#checkDestination} for possible premium
+     * short codes.
+     */
+    static final int CATEGORY_POSSIBLE_PREMIUM_SHORT_CODE = 3;
+
+    /** Return value from {@link SmsUsageMonitor#checkDestination} for premium short codes. */
+    static final int CATEGORY_PREMIUM_SHORT_CODE = 4;
+
+    private static final class ShortCodeTest {
+        final String countryIso;
+        final String address;
+        final int category;
+
+        ShortCodeTest(String countryIso, String destAddress, int category) {
+            this.countryIso = countryIso;
+            this.address = destAddress;
+            this.category = category;
+        }
+    }
+
+    /**
+     * List of short code test cases.
+     */
+    private static final ShortCodeTest[] sShortCodeTests = new ShortCodeTest[] {
+            new ShortCodeTest("al", "112", CATEGORY_NOT_SHORT_CODE),
+            new ShortCodeTest("al", "4321", CATEGORY_NOT_SHORT_CODE),
+            new ShortCodeTest("al", "54321", CATEGORY_POSSIBLE_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("al", "15191", CATEGORY_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("al", "55500", CATEGORY_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("al", "55600", CATEGORY_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("al", "654321", CATEGORY_NOT_SHORT_CODE),
+
+            new ShortCodeTest("am", "112", expectedReturnCode("112")),
+            new ShortCodeTest("am", "101", CATEGORY_FREE_SHORT_CODE),
+            new ShortCodeTest("am", "102", CATEGORY_FREE_SHORT_CODE),
+            new ShortCodeTest("am", "103", CATEGORY_FREE_SHORT_CODE),
+            new ShortCodeTest("am", "222", CATEGORY_POSSIBLE_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("am", "1111", CATEGORY_POSSIBLE_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("am", "9999", CATEGORY_POSSIBLE_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("am", "1121", CATEGORY_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("am", "1141", CATEGORY_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("am", "1161", CATEGORY_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("am", "3024", CATEGORY_PREMIUM_SHORT_CODE),
+
+            new ShortCodeTest("at", "112", CATEGORY_NOT_SHORT_CODE),
+            new ShortCodeTest("at", "116117", CATEGORY_FREE_SHORT_CODE),
+            new ShortCodeTest("at", "0901234", CATEGORY_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("at", "0900666266", CATEGORY_PREMIUM_SHORT_CODE),
+
+            new ShortCodeTest("au", "112", CATEGORY_NOT_SHORT_CODE),
+            new ShortCodeTest("au", "180000", CATEGORY_NOT_SHORT_CODE),
+            new ShortCodeTest("au", "190000", CATEGORY_POSSIBLE_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("au", "1900000", CATEGORY_NOT_SHORT_CODE),
+            new ShortCodeTest("au", "19000000", CATEGORY_POSSIBLE_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("au", "19998882", CATEGORY_PREMIUM_SHORT_CODE),
+
+            new ShortCodeTest("az", "112", CATEGORY_NOT_SHORT_CODE),
+            new ShortCodeTest("az", "1234", CATEGORY_POSSIBLE_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("az", "12345", CATEGORY_POSSIBLE_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("az", "87744", CATEGORY_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("az", "3301", CATEGORY_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("az", "3302", CATEGORY_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("az", "9012", CATEGORY_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("az", "9014", CATEGORY_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("az", "9394", CATEGORY_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("az", "87744", CATEGORY_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("az", "93101", CATEGORY_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("az", "123456", CATEGORY_NOT_SHORT_CODE),
+
+            new ShortCodeTest("be", "112", CATEGORY_NOT_SHORT_CODE),
+            new ShortCodeTest("be", "116117", CATEGORY_FREE_SHORT_CODE),
+            new ShortCodeTest("be", "567890", CATEGORY_NOT_SHORT_CODE),
+            new ShortCodeTest("be", "8000", CATEGORY_FREE_SHORT_CODE),
+            new ShortCodeTest("be", "6566", CATEGORY_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("be", "7777", CATEGORY_PREMIUM_SHORT_CODE),
+
+            new ShortCodeTest("bg", "112", CATEGORY_NOT_SHORT_CODE),
+            new ShortCodeTest("bg", "116117", CATEGORY_FREE_SHORT_CODE),
+            new ShortCodeTest("bg", "1234", CATEGORY_POSSIBLE_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("bg", "12345", CATEGORY_POSSIBLE_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("bg", "1816", CATEGORY_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("bg", "1915", CATEGORY_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("bg", "1916", CATEGORY_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("bg", "1935", CATEGORY_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("bg", "18423", CATEGORY_PREMIUM_SHORT_CODE),
+
+            new ShortCodeTest("by", "112", CATEGORY_NOT_SHORT_CODE),
+            new ShortCodeTest("by", "1234", CATEGORY_POSSIBLE_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("by", "3336", CATEGORY_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("by", "5013", CATEGORY_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("by", "5014", CATEGORY_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("by", "7781", CATEGORY_PREMIUM_SHORT_CODE),
+
+            new ShortCodeTest("ca", "911", CATEGORY_NOT_SHORT_CODE),
+            new ShortCodeTest("ca", "+18005551234", CATEGORY_NOT_SHORT_CODE),
+            new ShortCodeTest("ca", "8005551234", CATEGORY_NOT_SHORT_CODE),
+            new ShortCodeTest("ca", "20000", CATEGORY_POSSIBLE_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("ca", "200000", CATEGORY_POSSIBLE_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("ca", "2000000", CATEGORY_NOT_SHORT_CODE),
+            new ShortCodeTest("ca", "60999", CATEGORY_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("ca", "88188", CATEGORY_PREMIUM_SHORT_CODE),
+
+            new ShortCodeTest("ch", "112", CATEGORY_NOT_SHORT_CODE),
+            new ShortCodeTest("ch", "123", CATEGORY_NOT_SHORT_CODE),
+            new ShortCodeTest("ch", "234", CATEGORY_POSSIBLE_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("ch", "3456", CATEGORY_POSSIBLE_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("ch", "98765", CATEGORY_POSSIBLE_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("ch", "543", CATEGORY_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("ch", "83111", CATEGORY_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("ch", "234567", CATEGORY_NOT_SHORT_CODE),
+            new ShortCodeTest("ch", "87654321", CATEGORY_NOT_SHORT_CODE),
+
+            new ShortCodeTest("cn", "120", CATEGORY_NOT_SHORT_CODE),
+            new ShortCodeTest("cn", "1062503000", CATEGORY_NOT_SHORT_CODE),
+            new ShortCodeTest("cn", "1065123456", CATEGORY_FREE_SHORT_CODE),
+            new ShortCodeTest("cn", "1066335588", CATEGORY_PREMIUM_SHORT_CODE),
+
+            new ShortCodeTest("cy", "112", CATEGORY_NOT_SHORT_CODE),
+            new ShortCodeTest("cy", "116117", CATEGORY_FREE_SHORT_CODE),
+            new ShortCodeTest("cy", "4321", CATEGORY_POSSIBLE_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("cy", "54321", CATEGORY_POSSIBLE_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("cy", "654321", CATEGORY_POSSIBLE_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("cy", "7510", CATEGORY_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("cy", "987654321", CATEGORY_NOT_SHORT_CODE),
+
+            new ShortCodeTest("cz", "112", CATEGORY_NOT_SHORT_CODE),
+            new ShortCodeTest("cz", "116117", CATEGORY_FREE_SHORT_CODE),
+            new ShortCodeTest("cz", "9090150", CATEGORY_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("cz", "90901599", CATEGORY_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("cz", "987654321", CATEGORY_NOT_SHORT_CODE),
+
+            new ShortCodeTest("de", "112", CATEGORY_NOT_SHORT_CODE),
+            new ShortCodeTest("de", "116117", CATEGORY_FREE_SHORT_CODE),
+            new ShortCodeTest("de", "1234", CATEGORY_POSSIBLE_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("de", "12345", CATEGORY_POSSIBLE_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("de", "8888", CATEGORY_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("de", "11111", CATEGORY_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("de", "11886", CATEGORY_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("de", "22022", CATEGORY_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("de", "23300", CATEGORY_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("de", "3434", CATEGORY_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("de", "34567", CATEGORY_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("de", "41414", CATEGORY_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("de", "55655", CATEGORY_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("de", "66766", CATEGORY_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("de", "66777", CATEGORY_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("de", "77677", CATEGORY_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("de", "80888", CATEGORY_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("de", "1232286", CATEGORY_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("de", "987654321", CATEGORY_NOT_SHORT_CODE),
+
+            new ShortCodeTest("dk", "112", CATEGORY_NOT_SHORT_CODE),
+            new ShortCodeTest("dk", "116117", CATEGORY_FREE_SHORT_CODE),
+            new ShortCodeTest("dk", "1259", CATEGORY_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("dk", "16123", CATEGORY_POSSIBLE_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("dk", "987654321", CATEGORY_NOT_SHORT_CODE),
+
+            new ShortCodeTest("ee", "112", expectedReturnCode("112")),
+            new ShortCodeTest("ee", "116117", CATEGORY_FREE_SHORT_CODE),
+            new ShortCodeTest("ee", "123", CATEGORY_POSSIBLE_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("ee", "1259", CATEGORY_POSSIBLE_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("ee", "15330", CATEGORY_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("ee", "17999", CATEGORY_POSSIBLE_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("ee", "17010", CATEGORY_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("ee", "17013", CATEGORY_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("ee", "9034567", CATEGORY_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("ee", "34567890", CATEGORY_NOT_SHORT_CODE),
+
+            new ShortCodeTest("es", "112", CATEGORY_NOT_SHORT_CODE),
+            new ShortCodeTest("es", "116117", CATEGORY_FREE_SHORT_CODE),
+            new ShortCodeTest("es", "25165", CATEGORY_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("es", "27333", CATEGORY_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("es", "995399", CATEGORY_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("es", "87654321", CATEGORY_NOT_SHORT_CODE),
+
+            new ShortCodeTest("fi", "112", CATEGORY_NOT_SHORT_CODE),
+            new ShortCodeTest("fi", "116117", CATEGORY_FREE_SHORT_CODE),
+            new ShortCodeTest("fi", "12345", CATEGORY_POSSIBLE_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("fi", "123456", CATEGORY_POSSIBLE_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("fi", "17159", CATEGORY_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("fi", "17163", CATEGORY_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("fi", "0600123", CATEGORY_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("fi", "070012345", CATEGORY_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("fi", "987654321", CATEGORY_NOT_SHORT_CODE),
+
+            new ShortCodeTest("fr", "112", CATEGORY_NOT_SHORT_CODE),
+            new ShortCodeTest("fr", "116117", CATEGORY_FREE_SHORT_CODE),
+            new ShortCodeTest("fr", "34567", CATEGORY_FREE_SHORT_CODE),
+            new ShortCodeTest("fr", "45678", CATEGORY_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("fr", "81185", CATEGORY_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("fr", "87654321", CATEGORY_NOT_SHORT_CODE),
+
+            new ShortCodeTest("gb", "112", CATEGORY_NOT_SHORT_CODE),
+            new ShortCodeTest("gb", "999", CATEGORY_NOT_SHORT_CODE),
+            new ShortCodeTest("gb", "116117", CATEGORY_FREE_SHORT_CODE),
+            new ShortCodeTest("gb", "4567", CATEGORY_POSSIBLE_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("gb", "45678", CATEGORY_POSSIBLE_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("gb", "56789", CATEGORY_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("gb", "79067", CATEGORY_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("gb", "80079", CATEGORY_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("gb", "654321", CATEGORY_POSSIBLE_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("gb", "7654321", CATEGORY_NOT_SHORT_CODE),
+
+            new ShortCodeTest("ge", "112", CATEGORY_NOT_SHORT_CODE),
+            new ShortCodeTest("ge", "8765", CATEGORY_POSSIBLE_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("ge", "2345", CATEGORY_POSSIBLE_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("ge", "8012", CATEGORY_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("ge", "8013", CATEGORY_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("ge", "8014", CATEGORY_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("ge", "8889", CATEGORY_PREMIUM_SHORT_CODE),
+
+            new ShortCodeTest("gr", "112", CATEGORY_NOT_SHORT_CODE),
+            new ShortCodeTest("gr", "116117", CATEGORY_FREE_SHORT_CODE),
+            new ShortCodeTest("gr", "54321", CATEGORY_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("gr", "19567", CATEGORY_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("gr", "19678", CATEGORY_POSSIBLE_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("gr", "87654321", CATEGORY_NOT_SHORT_CODE),
+
+            new ShortCodeTest("hu", "112", CATEGORY_NOT_SHORT_CODE),
+            new ShortCodeTest("hu", "116117", CATEGORY_FREE_SHORT_CODE),
+            new ShortCodeTest("hu", "012", CATEGORY_NOT_SHORT_CODE),
+            new ShortCodeTest("hu", "0123", CATEGORY_POSSIBLE_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("hu", "1234", CATEGORY_POSSIBLE_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("hu", "1784", CATEGORY_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("hu", "2345", CATEGORY_NOT_SHORT_CODE),
+            new ShortCodeTest("hu", "01234", CATEGORY_NOT_SHORT_CODE),
+            new ShortCodeTest("hu", "012345678", CATEGORY_NOT_SHORT_CODE),
+            new ShortCodeTest("hu", "0123456789", CATEGORY_POSSIBLE_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("hu", "1234567890", CATEGORY_POSSIBLE_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("hu", "0691227910", CATEGORY_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("hu", "2345678901", CATEGORY_NOT_SHORT_CODE),
+            new ShortCodeTest("hu", "01234567890", CATEGORY_NOT_SHORT_CODE),
+
+            new ShortCodeTest("ie", "112", CATEGORY_NOT_SHORT_CODE),
+            new ShortCodeTest("ie", "116117", CATEGORY_FREE_SHORT_CODE),
+            new ShortCodeTest("ie", "50123", CATEGORY_FREE_SHORT_CODE),
+            new ShortCodeTest("ie", "51234", CATEGORY_STANDARD_SHORT_CODE),
+            new ShortCodeTest("ie", "52345", CATEGORY_STANDARD_SHORT_CODE),
+            new ShortCodeTest("ie", "57890", CATEGORY_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("ie", "67890", CATEGORY_POSSIBLE_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("ie", "87654321", CATEGORY_NOT_SHORT_CODE),
+
+            new ShortCodeTest("il", "112", CATEGORY_NOT_SHORT_CODE),
+            new ShortCodeTest("il", "5432", CATEGORY_POSSIBLE_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("il", "4422", CATEGORY_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("il", "4545", CATEGORY_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("il", "98765", CATEGORY_NOT_SHORT_CODE),
+
+            new ShortCodeTest("it", "112", CATEGORY_NOT_SHORT_CODE),
+            new ShortCodeTest("it", "116117", CATEGORY_FREE_SHORT_CODE),
+            new ShortCodeTest("it", "4567", CATEGORY_NOT_SHORT_CODE),
+            new ShortCodeTest("it", "48000", CATEGORY_FREE_SHORT_CODE),
+            new ShortCodeTest("it", "45678", CATEGORY_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("it", "56789", CATEGORY_POSSIBLE_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("it", "456789", CATEGORY_NOT_SHORT_CODE),
+
+            new ShortCodeTest("kg", "112", CATEGORY_NOT_SHORT_CODE),
+            new ShortCodeTest("kg", "5432", CATEGORY_POSSIBLE_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("kg", "4152", CATEGORY_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("kg", "4157", CATEGORY_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("kg", "4449", CATEGORY_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("kg", "98765", CATEGORY_NOT_SHORT_CODE),
+
+            new ShortCodeTest("kz", "112", CATEGORY_NOT_SHORT_CODE),
+            new ShortCodeTest("kz", "5432", CATEGORY_POSSIBLE_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("kz", "9194", CATEGORY_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("kz", "7790", CATEGORY_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("kz", "98765", CATEGORY_NOT_SHORT_CODE),
+
+            new ShortCodeTest("lt", "112", expectedReturnCode("112")),
+            new ShortCodeTest("lt", "116117", CATEGORY_FREE_SHORT_CODE),
+            new ShortCodeTest("lt", "123", CATEGORY_POSSIBLE_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("lt", "1234", CATEGORY_POSSIBLE_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("lt", "1381", CATEGORY_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("lt", "1394", CATEGORY_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("lt", "1645", CATEGORY_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("lt", "12345", CATEGORY_POSSIBLE_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("lt", "123456", CATEGORY_NOT_SHORT_CODE),
+
+            new ShortCodeTest("lu", "112", CATEGORY_NOT_SHORT_CODE),
+            new ShortCodeTest("lu", "116117", CATEGORY_FREE_SHORT_CODE),
+            new ShortCodeTest("lu", "1234", CATEGORY_NOT_SHORT_CODE),
+            new ShortCodeTest("lu", "12345", CATEGORY_NOT_SHORT_CODE),
+            new ShortCodeTest("lu", "64747", CATEGORY_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("lu", "678901", CATEGORY_NOT_SHORT_CODE),
+
+            new ShortCodeTest("lv", "112", CATEGORY_NOT_SHORT_CODE),
+            new ShortCodeTest("lv", "116117", CATEGORY_FREE_SHORT_CODE),
+            new ShortCodeTest("lv", "5432", CATEGORY_POSSIBLE_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("lv", "1819", CATEGORY_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("lv", "1863", CATEGORY_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("lv", "1874", CATEGORY_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("lv", "98765", CATEGORY_NOT_SHORT_CODE),
+
+            new ShortCodeTest("mx", "112", CATEGORY_NOT_SHORT_CODE),
+            new ShortCodeTest("mx", "2345", CATEGORY_POSSIBLE_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("mx", "7766", CATEGORY_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("mx", "23456", CATEGORY_POSSIBLE_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("mx", "53035", CATEGORY_PREMIUM_SHORT_CODE),
+
+            new ShortCodeTest("my", "112", CATEGORY_NOT_SHORT_CODE),
+            new ShortCodeTest("my", "1234", CATEGORY_NOT_SHORT_CODE),
+            new ShortCodeTest("my", "23456", CATEGORY_POSSIBLE_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("my", "32298", CATEGORY_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("my", "33776", CATEGORY_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("my", "345678", CATEGORY_NOT_SHORT_CODE),
+
+            new ShortCodeTest("nl", "112", CATEGORY_NOT_SHORT_CODE),
+            new ShortCodeTest("nl", "116117", CATEGORY_FREE_SHORT_CODE),
+            new ShortCodeTest("nl", "1234", CATEGORY_POSSIBLE_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("nl", "4466", CATEGORY_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("nl", "5040", CATEGORY_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("nl", "23456", CATEGORY_NOT_SHORT_CODE),
+
+            new ShortCodeTest("no", "112", CATEGORY_NOT_SHORT_CODE),
+            new ShortCodeTest("no", "1234", CATEGORY_POSSIBLE_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("no", "2201", CATEGORY_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("no", "2226", CATEGORY_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("no", "2227", CATEGORY_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("no", "23456", CATEGORY_POSSIBLE_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("no", "234567", CATEGORY_NOT_SHORT_CODE),
+
+            new ShortCodeTest("nz", "112", expectedReturnCode("112")),
+            new ShortCodeTest("nz", "123", CATEGORY_POSSIBLE_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("nz", "2345", CATEGORY_POSSIBLE_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("nz", "3903", CATEGORY_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("nz", "8995", CATEGORY_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("nz", "23456", CATEGORY_NOT_SHORT_CODE),
+
+            new ShortCodeTest("pl", "112", CATEGORY_NOT_SHORT_CODE),
+            new ShortCodeTest("pl", "116117", CATEGORY_FREE_SHORT_CODE),
+            new ShortCodeTest("pl", "7890", CATEGORY_POSSIBLE_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("pl", "34567", CATEGORY_POSSIBLE_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("pl", "7910", CATEGORY_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("pl", "74240", CATEGORY_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("pl", "79866", CATEGORY_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("pl", "92525", CATEGORY_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("pl", "87654321", CATEGORY_NOT_SHORT_CODE),
+
+            new ShortCodeTest("pt", "112", CATEGORY_NOT_SHORT_CODE),
+            new ShortCodeTest("pt", "116117", CATEGORY_FREE_SHORT_CODE),
+            new ShortCodeTest("pt", "61000", CATEGORY_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("pt", "62345", CATEGORY_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("pt", "68304", CATEGORY_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("pt", "69876", CATEGORY_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("pt", "87654321", CATEGORY_NOT_SHORT_CODE),
+
+            new ShortCodeTest("ro", "112", CATEGORY_NOT_SHORT_CODE),
+            new ShortCodeTest("ro", "116117", CATEGORY_FREE_SHORT_CODE),
+            new ShortCodeTest("ro", "1234", CATEGORY_POSSIBLE_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("ro", "1263", CATEGORY_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("ro", "1288", CATEGORY_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("ro", "1314", CATEGORY_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("ro", "1380", CATEGORY_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("ro", "7890", CATEGORY_POSSIBLE_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("ro", "12345", CATEGORY_NOT_SHORT_CODE),
+
+            new ShortCodeTest("ru", "112", CATEGORY_NOT_SHORT_CODE),
+            new ShortCodeTest("ru", "5432", CATEGORY_POSSIBLE_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("ru", "1161", CATEGORY_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("ru", "2097", CATEGORY_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("ru", "3933", CATEGORY_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("ru", "7781", CATEGORY_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("ru", "98765", CATEGORY_NOT_SHORT_CODE),
+
+            new ShortCodeTest("se", "112", CATEGORY_NOT_SHORT_CODE),
+            new ShortCodeTest("se", "116117", CATEGORY_FREE_SHORT_CODE),
+            new ShortCodeTest("se", "1234", CATEGORY_NOT_SHORT_CODE),
+            new ShortCodeTest("se", "72345", CATEGORY_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("se", "72999", CATEGORY_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("se", "123456", CATEGORY_NOT_SHORT_CODE),
+            new ShortCodeTest("se", "87654321", CATEGORY_NOT_SHORT_CODE),
+
+            new ShortCodeTest("sg", "112", CATEGORY_NOT_SHORT_CODE),
+            new ShortCodeTest("sg", "1234", CATEGORY_NOT_SHORT_CODE),
+            new ShortCodeTest("sg", "70000", CATEGORY_POSSIBLE_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("sg", "79999", CATEGORY_POSSIBLE_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("sg", "73800", CATEGORY_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("sg", "74688", CATEGORY_STANDARD_SHORT_CODE),
+            new ShortCodeTest("sg", "987654", CATEGORY_NOT_SHORT_CODE),
+
+            new ShortCodeTest("si", "112", CATEGORY_NOT_SHORT_CODE),
+            new ShortCodeTest("si", "116117", CATEGORY_FREE_SHORT_CODE),
+            new ShortCodeTest("si", "1234", CATEGORY_POSSIBLE_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("si", "3838", CATEGORY_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("si", "72999", CATEGORY_NOT_SHORT_CODE),
+
+            new ShortCodeTest("sk", "112", CATEGORY_NOT_SHORT_CODE),
+            new ShortCodeTest("sk", "116117", CATEGORY_FREE_SHORT_CODE),
+            new ShortCodeTest("sk", "1234", CATEGORY_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("sk", "6674", CATEGORY_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("sk", "7604", CATEGORY_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("sk", "72999", CATEGORY_NOT_SHORT_CODE),
+
+            new ShortCodeTest("tj", "112", CATEGORY_NOT_SHORT_CODE),
+            new ShortCodeTest("tj", "5432", CATEGORY_POSSIBLE_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("tj", "1161", CATEGORY_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("tj", "1171", CATEGORY_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("tj", "4161", CATEGORY_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("tj", "4449", CATEGORY_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("tj", "98765", CATEGORY_NOT_SHORT_CODE),
+
+            new ShortCodeTest("ua", "112", CATEGORY_NOT_SHORT_CODE),
+            new ShortCodeTest("ua", "5432", CATEGORY_POSSIBLE_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("ua", "4448", CATEGORY_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("ua", "7094", CATEGORY_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("ua", "7540", CATEGORY_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("ua", "98765", CATEGORY_NOT_SHORT_CODE),
+
+            new ShortCodeTest("us", "911", CATEGORY_NOT_SHORT_CODE),
+            new ShortCodeTest("us", "+18005551234", CATEGORY_NOT_SHORT_CODE),
+            new ShortCodeTest("us", "8005551234", CATEGORY_NOT_SHORT_CODE),
+            new ShortCodeTest("us", "20000", CATEGORY_POSSIBLE_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("us", "200000", CATEGORY_POSSIBLE_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("us", "2000000", CATEGORY_NOT_SHORT_CODE),
+            new ShortCodeTest("us", "20433", CATEGORY_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("us", "21472", CATEGORY_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("us", "23333", CATEGORY_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("us", "99807", CATEGORY_PREMIUM_SHORT_CODE),
+
+            // generic rules for other countries: 5 digits or less considered potential short code
+            new ShortCodeTest("zz", "2000000", CATEGORY_NOT_SHORT_CODE),
+            new ShortCodeTest("zz", "54321", CATEGORY_POSSIBLE_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("zz", "4321", CATEGORY_POSSIBLE_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("zz", "321", CATEGORY_POSSIBLE_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("zz", "112", expectedReturnCode("112")),
+            new ShortCodeTest(null, "2000000", CATEGORY_NOT_SHORT_CODE),
+            new ShortCodeTest(null, "54321", CATEGORY_POSSIBLE_PREMIUM_SHORT_CODE),
+            new ShortCodeTest(null, "4321", CATEGORY_POSSIBLE_PREMIUM_SHORT_CODE),
+            new ShortCodeTest(null, "321", CATEGORY_POSSIBLE_PREMIUM_SHORT_CODE),
+            new ShortCodeTest(null, "112", expectedReturnCode("112")),
+    };
+
+    @Override
+    protected void setUp() throws Exception {
+        super.setUp();
+        mPackageManager = getContext().getPackageManager();
+    }
+
+    private static int expectedReturnCode(String address) {
+        return PhoneNumberUtils.isEmergencyNumber(address) ?
+            CATEGORY_NOT_SHORT_CODE : CATEGORY_POSSIBLE_PREMIUM_SHORT_CODE;
+    }
+
+    @SmallTest
+    public void testSmsUsageMonitor() {
+        if (!mPackageManager.hasSystemFeature(PackageManager.FEATURE_TELEPHONY)) {
+            // do not test if device does not support telephony (voice or sms)
+            return;
+        }
+
+        SmsUsageMonitor monitor = new SmsUsageMonitor(getContext());
+        for (ShortCodeTest test : sShortCodeTests) {
+            assertEquals("country: " + test.countryIso + " number: " + test.address,
+                    test.category, monitor.checkDestination(test.address, test.countryIso));
+        }
+    }
+}
diff --git a/tests/tests/telephony/src/android/telephony/cts/TelephonyManagerTest.java b/tests/tests/telephony/src/android/telephony/cts/TelephonyManagerTest.java
index 3223573..55e79de 100644
--- a/tests/tests/telephony/src/android/telephony/cts/TelephonyManagerTest.java
+++ b/tests/tests/telephony/src/android/telephony/cts/TelephonyManagerTest.java
@@ -135,6 +135,12 @@
         assertTrue(mTelephonyManager.getDataState() >= TelephonyManager.DATA_DISCONNECTED);
         assertTrue(mTelephonyManager.getCallState() >= TelephonyManager.CALL_STATE_IDLE);
 
+        // Make sure devices without MMS service won't fail on this
+        if (mTelephonyManager.getPhoneType() != TelephonyManager.PHONE_TYPE_NONE) {
+            assertFalse(mTelephonyManager.getMmsUserAgent().isEmpty());
+            assertFalse(mTelephonyManager.getMmsUAProfUrl().isEmpty());
+        }
+
         // The following methods may return null. Simply call them to make sure they do not
         // throw any exceptions.
         mTelephonyManager.getVoiceMailNumber();
@@ -179,7 +185,9 @@
 
             case TelephonyManager.PHONE_TYPE_NONE:
                 boolean nwSupported = mCm.isNetworkSupported(mCm.TYPE_WIFI);
-                if (nwSupported) {
+                PackageManager packageManager = getContext().getPackageManager();
+                // only check serial number & MAC address if device report wifi feature 
+                if (packageManager.hasSystemFeature(PackageManager.FEATURE_WIFI)) {
                     assertSerialNumber();
                     assertMacAddressReported();
                 } else {
diff --git a/tests/tests/text/src/android/text/cts/EmojiConstants.java b/tests/tests/text/src/android/text/cts/EmojiConstants.java
old mode 100755
new mode 100644
diff --git a/tests/tests/text/src/android/text/cts/EmojiTest.java b/tests/tests/text/src/android/text/cts/EmojiTest.java
old mode 100755
new mode 100644
index a8d8d2d..f5f191f
--- a/tests/tests/text/src/android/text/cts/EmojiTest.java
+++ b/tests/tests/text/src/android/text/cts/EmojiTest.java
@@ -222,6 +222,14 @@
 
             webViewOnUiThread.loadDataAndWaitForCompletion("<html><body>" + String.valueOf(c) + "</body></html>",
                     "text/html; charset=utf-8", "utf-8");
+            // The Chromium-powered WebView renders asynchronously and there's nothing reliable
+            // we can easily wait for to be sure that capturePicture will return a fresh frame.
+            // So, just sleep for a sufficient time.
+            try {
+                Thread.sleep(250);
+            } catch (InterruptedException e) {
+                return null;
+            }
 
             Picture picture = webViewOnUiThread.capturePicture();
             if (picture == null || picture.getHeight() <= 0 || picture.getWidth() <= 0) {
diff --git a/tests/tests/text/src/android/text/cts/HtmlTest.java b/tests/tests/text/src/android/text/cts/HtmlTest.java
index 74008f7..cf47ab9 100644
--- a/tests/tests/text/src/android/text/cts/HtmlTest.java
+++ b/tests/tests/text/src/android/text/cts/HtmlTest.java
@@ -208,4 +208,14 @@
         Spanned s = Html.fromHtml("<p>\u0124\u00eb\u0142\u0142o, world!</p>");
         assertEquals("<p dir=\"ltr\">&#292;&#235;&#322;&#322;o, world!</p>\n", Html.toHtml(s));
     }
+
+    public void testSurrogates() throws Exception {
+        Spanned s = Html.fromHtml("\ud83d\udc31");
+        assertEquals("<p dir=\"ltr\">&#128049;</p>\n", Html.toHtml(s));
+    }
+
+    public void testBadSurrogates() throws Exception {
+        Spanned s = Html.fromHtml("\udc31\ud83d");
+        assertEquals("<p dir=\"ltr\"></p>\n", Html.toHtml(s));
+    }
 }
diff --git a/tests/tests/text/src/android/text/cts/MyanmarTest.java b/tests/tests/text/src/android/text/cts/MyanmarTest.java
new file mode 100644
index 0000000..60fe608
--- /dev/null
+++ b/tests/tests/text/src/android/text/cts/MyanmarTest.java
@@ -0,0 +1,86 @@
+/*
+ * Copyright (C) 2014 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 android.text.cts;
+
+import android.app.Activity;
+import android.content.Context;
+import android.graphics.Bitmap;
+import android.test.ActivityInstrumentationTestCase2;
+import android.widget.TextView;
+
+public class MyanmarTest extends ActivityInstrumentationTestCase2<Activity> {
+
+    public MyanmarTest() {
+        super("com.android.cts.stub", Activity.class);
+    }
+
+    protected void setUp() throws Exception {
+        super.setUp();
+    }
+
+    protected void tearDown() throws Exception {
+        super.tearDown();
+    }
+
+    /**
+     * Tests Unicode composition semantics.
+     */
+    public void testCompositionSemantics() {
+        String textA = "\u1019\u102d\u102f";
+        String textB = "\u1019\u102f\u102d"; // wrong order for Unicode
+
+        CaptureTextView cviewA = new CaptureTextView(getInstrumentation().getContext());
+        Bitmap bitmapA = cviewA.capture(textA);
+        CaptureTextView cviewB = new CaptureTextView(getInstrumentation().getContext());
+        Bitmap bitmapB = cviewB.capture(textB);
+        if (bitmapA.sameAs(bitmapB)) {
+            // if textA and textB render identically, test against replacement characters
+            String textC = "\ufffd\ufffd\ufffd"; // replacement characters are acceptable
+            CaptureTextView cviewC = new CaptureTextView(getInstrumentation().getContext());
+            Bitmap bitmapC = cviewC.capture(textC);
+            if (!bitmapA.sameAs(bitmapC)) {
+                // ...or against blank/empty glyphs
+                Bitmap bitmapD = Bitmap.createBitmap(bitmapC.getWidth(), bitmapC.getHeight(),
+                        bitmapC.getConfig());
+                assertTrue(bitmapA.sameAs(bitmapD));
+            }
+        }
+    }
+
+    private class CaptureTextView extends TextView {
+
+        CaptureTextView(Context context) {
+            super(context);
+        }
+
+        Bitmap capture(String text) {
+            setText(text);
+
+            invalidate();
+
+            setDrawingCacheEnabled(true);
+            measure(MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED),
+                    MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED));
+            layout(0, 0, 200,200);
+
+            Bitmap bitmap = Bitmap.createBitmap(getDrawingCache());
+            setDrawingCacheEnabled(false);
+            return bitmap;
+        }
+
+    }
+}
diff --git a/tests/tests/text/src/android/text/cts/TextPaintTest.java b/tests/tests/text/src/android/text/cts/TextPaintTest.java
index fb34274..fef492b 100644
--- a/tests/tests/text/src/android/text/cts/TextPaintTest.java
+++ b/tests/tests/text/src/android/text/cts/TextPaintTest.java
@@ -25,7 +25,8 @@
  * Test {@link TextPaint}.
  */
 public class TextPaintTest extends AndroidTestCase {
-    private static final int DEFAULT_PAINT_FLAGS = TextPaint.DEV_KERN_TEXT_FLAG;
+    private static final int DEFAULT_PAINT_FLAGS = TextPaint.DEV_KERN_TEXT_FLAG
+            | TextPaint.EMBEDDED_BITMAP_TEXT_FLAG;
 
     public void testConstructor() {
         TextPaint textPaint;
diff --git a/tests/tests/text/src/android/text/cts/TextUtilsTest.java b/tests/tests/text/src/android/text/cts/TextUtilsTest.java
old mode 100755
new mode 100644
diff --git a/tests/tests/text/src/android/text/format/cts/DateUtilsTest.java b/tests/tests/text/src/android/text/format/cts/DateUtilsTest.java
index 14e01e8..1e62819 100644
--- a/tests/tests/text/src/android/text/format/cts/DateUtilsTest.java
+++ b/tests/tests/text/src/android/text/format/cts/DateUtilsTest.java
@@ -162,8 +162,7 @@
         assertEquals(expected, sb.toString());
     }
 
-    @SuppressWarnings("deprecation")
-    public void testFormatMethods() {
+    public void testFormatSameDayTime() {
         if (!LocaleUtils.isCurrentLocale(mContext, Locale.US)) {
             return;
         }
@@ -199,59 +198,20 @@
                 fixedTime, java.text.DateFormat.FULL, java.text.DateFormat.MEDIUM));
         assertEquals("5:30 AM", DateUtils.formatSameDayTime(fixedTime + HOUR_DURATION,
                 fixedTime, java.text.DateFormat.FULL, java.text.DateFormat.SHORT));
+    }
 
-        long noonDuration = (8 * 60 + 30) * 60 * 1000 - 15 * 1000;
-        long midnightDuration = (3 * 60 + 30) * 60 * 1000 + 15 * 1000;
-        long integralDuration = 30 * 60 * 1000 + 15 * 1000;
-        assertEquals("Monday", DateUtils.formatDateRange(mContext, fixedTime, fixedTime
-                + HOUR_DURATION, DateUtils.FORMAT_SHOW_WEEKDAY));
-        assertEquals("January 19", DateUtils.formatDateRange(mContext, timeWithCurrentYear,
-                timeWithCurrentYear + HOUR_DURATION, DateUtils.FORMAT_SHOW_DATE));
-        assertEquals("3:30AM", DateUtils.formatDateRange(mContext, fixedTime, fixedTime,
-                DateUtils.FORMAT_SHOW_TIME));
-        assertEquals("January 19, 2009", DateUtils.formatDateRange(mContext, fixedTime,
-                fixedTime + HOUR_DURATION, DateUtils.FORMAT_SHOW_YEAR));
-        assertEquals("January 19", DateUtils.formatDateRange(mContext, timeWithCurrentYear,
-                timeWithCurrentYear + HOUR_DURATION, DateUtils.FORMAT_NO_YEAR));
-        assertEquals("January", DateUtils.formatDateRange(mContext, timeWithCurrentYear,
-                timeWithCurrentYear + HOUR_DURATION, DateUtils.FORMAT_NO_MONTH_DAY));
-        assertEquals("3:30AM", DateUtils.formatDateRange(mContext, fixedTime, fixedTime,
-                DateUtils.FORMAT_12HOUR | DateUtils.FORMAT_SHOW_TIME));
-        assertEquals("03:30", DateUtils.formatDateRange(mContext, fixedTime, fixedTime,
-                DateUtils.FORMAT_24HOUR | DateUtils.FORMAT_SHOW_TIME));
-        assertEquals("3:30AM", DateUtils.formatDateRange(mContext, fixedTime, fixedTime,
-                DateUtils.FORMAT_12HOUR | DateUtils.FORMAT_CAP_AMPM | DateUtils.FORMAT_SHOW_TIME));
-        assertEquals("noon", DateUtils.formatDateRange(mContext, fixedTime + noonDuration,
-                fixedTime + noonDuration, DateUtils.FORMAT_12HOUR | DateUtils.FORMAT_SHOW_TIME));
-        assertEquals("Noon", DateUtils.formatDateRange(mContext, fixedTime + noonDuration,
-                fixedTime + noonDuration,
-                DateUtils.FORMAT_12HOUR | DateUtils.FORMAT_SHOW_TIME | DateUtils.FORMAT_CAP_NOON));
-        assertEquals("12:00PM", DateUtils.formatDateRange(mContext, fixedTime + noonDuration,
-                fixedTime + noonDuration,
-                DateUtils.FORMAT_12HOUR | DateUtils.FORMAT_NO_NOON | DateUtils.FORMAT_SHOW_TIME));
-        assertEquals("12:00AM", DateUtils.formatDateRange(mContext, fixedTime - midnightDuration,
-                fixedTime - midnightDuration,
-                DateUtils.FORMAT_12HOUR | DateUtils.FORMAT_SHOW_TIME
-                | DateUtils.FORMAT_NO_MIDNIGHT));
-        assertEquals("3:30AM", DateUtils.formatDateRange(mContext, fixedTime, fixedTime,
-                DateUtils.FORMAT_SHOW_TIME | DateUtils.FORMAT_UTC));
-        assertEquals("3am", DateUtils.formatDateRange(mContext, fixedTime - integralDuration,
-                fixedTime - integralDuration,
-                DateUtils.FORMAT_SHOW_TIME | DateUtils.FORMAT_ABBREV_TIME));
-        assertEquals("Mon", DateUtils.formatDateRange(mContext, fixedTime,
-                fixedTime + HOUR_DURATION,
-                DateUtils.FORMAT_SHOW_WEEKDAY | DateUtils.FORMAT_ABBREV_WEEKDAY));
-        assertEquals("Jan 19", DateUtils.formatDateRange(mContext, timeWithCurrentYear,
-                timeWithCurrentYear + HOUR_DURATION,
-                DateUtils.FORMAT_SHOW_DATE | DateUtils.FORMAT_ABBREV_MONTH));
-        assertEquals("Jan 19", DateUtils.formatDateRange(mContext, timeWithCurrentYear,
-                timeWithCurrentYear + HOUR_DURATION,
-                DateUtils.FORMAT_SHOW_DATE | DateUtils.FORMAT_ABBREV_ALL));
-        String actual = DateUtils.formatDateRange(mContext, fixedTime,
-                fixedTime + HOUR_DURATION,
-                DateUtils.FORMAT_SHOW_YEAR | DateUtils.FORMAT_NUMERIC_DATE);
-        // accept with leading zero or without
-        assertTrue("1/19/2009".equals(actual) || "01/19/2009".equals(actual));
+    // This is just to exercise the wrapper that calls the libcore/icu4c implementation.
+    // Full testing, in multiple locales, is in libcore's CTS tests.
+    public void testFormatDateRange() {
+        if (!LocaleUtils.isCurrentLocale(mContext, Locale.US)) {
+            return;
+        }
+
+        Date date = new Date(109, 0, 19, 3, 30, 15);
+        long fixedTime = date.getTime();
+        final long HOUR_DURATION = 2 * 60 * 60 * 1000;
+        assertEquals("Monday", DateUtils.formatDateRange(mContext, fixedTime,
+                     fixedTime + HOUR_DURATION, DateUtils.FORMAT_SHOW_WEEKDAY));
     }
 
     public void testIsToday() {
@@ -260,31 +220,6 @@
         assertFalse(DateUtils.isToday(mBaseTime - ONE_DAY_IN_MS));
     }
 
-    /**
-     * DateUtils used to use Time rather than Calendar, which is broken
-     * because Time uses a 32-bit time_t rather than Calendar's 64-bit Java long.
-     * http://code.google.com/p/android/issues/detail?id=13050
-     */
-    public void test2038() {
-        assertEquals("00:00, Thursday, January 1, 1970", formatFull(0L));
-        assertEquals("17:31, Sunday, November 24, 1833",
-                     formatFull(((long) Integer.MIN_VALUE + Integer.MIN_VALUE) * 1000L));
-        assertEquals("20:45, Friday, December 13, 1901", formatFull(Integer.MIN_VALUE * 1000L));
-        assertEquals("03:14, Tuesday, January 19, 2038", formatFull(Integer.MAX_VALUE * 1000L));
-        assertEquals("06:28, Sunday, February 7, 2106",
-                     formatFull((2L + Integer.MAX_VALUE + Integer.MAX_VALUE) * 1000L));
-    }
-
-    private String formatFull(long millis) {
-        Formatter formatter = new Formatter();
-        int flags = DateUtils.FORMAT_SHOW_DATE
-                | DateUtils.FORMAT_SHOW_WEEKDAY
-                | DateUtils.FORMAT_SHOW_TIME
-                | DateUtils.FORMAT_24HOUR;
-        DateUtils.formatDateRange(null, formatter, millis, millis, flags, "UTC");
-        return formatter.toString();
-    }
-
     public void test_bug_7548161() {
         long now = System.currentTimeMillis();
         long today = now;
diff --git a/tests/tests/text/src/android/text/method/cts/ArrowKeyMovementMethodTest.java b/tests/tests/text/src/android/text/method/cts/ArrowKeyMovementMethodTest.java
index 6e9996c..1d8a032 100644
--- a/tests/tests/text/src/android/text/method/cts/ArrowKeyMovementMethodTest.java
+++ b/tests/tests/text/src/android/text/method/cts/ArrowKeyMovementMethodTest.java
@@ -180,9 +180,10 @@
         // last line
         Selection.setSelection(mEditable, SPACE_IN_2ND_LINE);
         pressBothShiftAlt();
+        KeyEvent event = new KeyEvent(0, 0, KeyEvent.ACTION_UP,
+            KeyEvent.KEYCODE_DPAD_UP, 0, KeyEvent.META_ALT_ON | KeyEvent.META_SHIFT_ON);
         assertTrue(mArrowKeyMovementMethod.onKeyDown(mTextView, mEditable,
-                KeyEvent.KEYCODE_DPAD_UP, new KeyEvent(KeyEvent.ACTION_DOWN,
-                        KeyEvent.KEYCODE_DPAD_UP)));
+                KeyEvent.KEYCODE_DPAD_UP, event));
         // |first line
         // second |line
         // last line
@@ -190,9 +191,10 @@
 
         Selection.setSelection(mEditable, SPACE_IN_2ND_LINE);
         pressShift();
+        event = new KeyEvent(0, 0, KeyEvent.ACTION_UP,
+            KeyEvent.KEYCODE_DPAD_UP, 0, KeyEvent.META_SHIFT_ON);
         assertTrue(mArrowKeyMovementMethod.onKeyDown(mTextView, mEditable,
-                KeyEvent.KEYCODE_DPAD_UP, new KeyEvent(KeyEvent.ACTION_DOWN,
-                        KeyEvent.KEYCODE_DPAD_UP)));
+                KeyEvent.KEYCODE_DPAD_UP, event));
         // first lin|e
         // second |line
         // last line
@@ -212,9 +214,10 @@
 
         Selection.setSelection(mEditable, SPACE_IN_2ND_LINE);
         pressAlt();
+        event = new KeyEvent(0, 0, KeyEvent.ACTION_UP,
+            KeyEvent.KEYCODE_DPAD_UP, 0, KeyEvent.META_ALT_ON);
         assertTrue(mArrowKeyMovementMethod.onKeyDown(mTextView, mEditable,
-                KeyEvent.KEYCODE_DPAD_UP, new KeyEvent(KeyEvent.ACTION_DOWN,
-                        KeyEvent.KEYCODE_DPAD_UP)));
+                KeyEvent.KEYCODE_DPAD_UP, event));
         // |first line
         // second line
         // last line
@@ -312,9 +315,10 @@
         // last line
         Selection.setSelection(mEditable, SPACE_IN_2ND_LINE);
         pressBothShiftAlt();
+        KeyEvent event = new KeyEvent(0, 0, KeyEvent.ACTION_UP,
+            KeyEvent.KEYCODE_DPAD_LEFT, 0, KeyEvent.META_ALT_ON | KeyEvent.META_SHIFT_ON);
         assertTrue(mArrowKeyMovementMethod.onKeyDown(mTextView, mEditable,
-                KeyEvent.KEYCODE_DPAD_LEFT, new KeyEvent(KeyEvent.ACTION_DOWN,
-                        KeyEvent.KEYCODE_DPAD_LEFT)));
+                KeyEvent.KEYCODE_DPAD_LEFT, event));
         // first line
         // |second |line
         // last line
@@ -322,8 +326,7 @@
 
         pressBothShiftAlt();
         assertTrue(mArrowKeyMovementMethod.onKeyDown(mTextView, mEditable,
-                KeyEvent.KEYCODE_DPAD_LEFT, new KeyEvent(KeyEvent.ACTION_DOWN,
-                        KeyEvent.KEYCODE_DPAD_LEFT)));
+                KeyEvent.KEYCODE_DPAD_LEFT, event));
         // first line
         // |second |line
         // last line
@@ -331,9 +334,10 @@
 
         Selection.setSelection(mEditable, SPACE_IN_2ND_LINE);
         pressShift();
+        event = new KeyEvent(0, 0, KeyEvent.ACTION_UP,
+            KeyEvent.KEYCODE_DPAD_LEFT, 0, KeyEvent.META_SHIFT_ON);
         assertTrue(mArrowKeyMovementMethod.onKeyDown(mTextView, mEditable,
-                KeyEvent.KEYCODE_DPAD_LEFT, new KeyEvent(KeyEvent.ACTION_DOWN,
-                        KeyEvent.KEYCODE_DPAD_LEFT)));
+                KeyEvent.KEYCODE_DPAD_LEFT, event));
         // first line
         // second| |line
         // last line
@@ -350,9 +354,10 @@
 
         Selection.setSelection(mEditable, SPACE_IN_2ND_LINE);
         pressAlt();
+        event = new KeyEvent(0, 0, KeyEvent.ACTION_UP,
+            KeyEvent.KEYCODE_DPAD_LEFT, 0, KeyEvent.META_ALT_ON);
         assertTrue(mArrowKeyMovementMethod.onKeyDown(mTextView, mEditable,
-                KeyEvent.KEYCODE_DPAD_LEFT, new KeyEvent(KeyEvent.ACTION_DOWN,
-                        KeyEvent.KEYCODE_DPAD_LEFT)));
+                KeyEvent.KEYCODE_DPAD_LEFT, event));
         // first line
         // |second line
         // last line
@@ -360,8 +365,7 @@
 
         pressAlt();
         assertTrue(mArrowKeyMovementMethod.onKeyDown(mTextView, mEditable,
-                KeyEvent.KEYCODE_DPAD_LEFT, new KeyEvent(KeyEvent.ACTION_DOWN,
-                        KeyEvent.KEYCODE_DPAD_LEFT)));
+                KeyEvent.KEYCODE_DPAD_LEFT, event));
         // first line
         // |second line
         // last line
@@ -397,9 +401,10 @@
         // last line
         Selection.setSelection(mEditable, SPACE_IN_2ND_LINE);
         pressBothShiftAlt();
+        KeyEvent event = new KeyEvent(0, 0, KeyEvent.ACTION_UP,
+            KeyEvent.KEYCODE_DPAD_RIGHT, 0, KeyEvent.META_ALT_ON | KeyEvent.META_SHIFT_ON);
         assertTrue(mArrowKeyMovementMethod.onKeyDown(mTextView, mEditable,
-                KeyEvent.KEYCODE_DPAD_RIGHT, new KeyEvent(KeyEvent.ACTION_DOWN,
-                        KeyEvent.KEYCODE_DPAD_RIGHT)));
+                KeyEvent.KEYCODE_DPAD_RIGHT, event));
         // first line
         // second |line|
         // last line
@@ -407,8 +412,7 @@
 
         pressBothShiftAlt();
         assertTrue(mArrowKeyMovementMethod.onKeyDown(mTextView, mEditable,
-                KeyEvent.KEYCODE_DPAD_RIGHT, new KeyEvent(KeyEvent.ACTION_DOWN,
-                        KeyEvent.KEYCODE_DPAD_RIGHT)));
+                KeyEvent.KEYCODE_DPAD_RIGHT, event));
         // first line
         // second |line|
         // last line
@@ -416,9 +420,10 @@
 
         Selection.setSelection(mEditable, SPACE_IN_2ND_LINE);
         pressShift();
+        event = new KeyEvent(0, 0, KeyEvent.ACTION_UP,
+            KeyEvent.KEYCODE_DPAD_RIGHT, 0, KeyEvent.META_SHIFT_ON);
         assertTrue(mArrowKeyMovementMethod.onKeyDown(mTextView, mEditable,
-                KeyEvent.KEYCODE_DPAD_RIGHT, new KeyEvent(KeyEvent.ACTION_DOWN,
-                        KeyEvent.KEYCODE_DPAD_RIGHT)));
+                KeyEvent.KEYCODE_DPAD_RIGHT, event));
         // first line
         // second |l|ine
         // last line
@@ -426,8 +431,7 @@
 
         pressShift();
         assertTrue(mArrowKeyMovementMethod.onKeyDown(mTextView, mEditable,
-                KeyEvent.KEYCODE_DPAD_RIGHT, new KeyEvent(KeyEvent.ACTION_DOWN,
-                        KeyEvent.KEYCODE_DPAD_RIGHT)));
+                KeyEvent.KEYCODE_DPAD_RIGHT, event));
         // first line
         // second |li|ne
         // last line
@@ -435,9 +439,10 @@
 
         Selection.setSelection(mEditable, SPACE_IN_2ND_LINE);
         pressAlt();
+        event = new KeyEvent(0, 0, KeyEvent.ACTION_UP,
+            KeyEvent.KEYCODE_DPAD_RIGHT, 0, KeyEvent.META_ALT_ON);
         assertTrue(mArrowKeyMovementMethod.onKeyDown(mTextView, mEditable,
-                KeyEvent.KEYCODE_DPAD_RIGHT, new KeyEvent(KeyEvent.ACTION_DOWN,
-                        KeyEvent.KEYCODE_DPAD_RIGHT)));
+                KeyEvent.KEYCODE_DPAD_RIGHT, event));
         // first line
         // second line|
         // last line
@@ -445,8 +450,7 @@
 
         pressAlt();
         assertTrue(mArrowKeyMovementMethod.onKeyDown(mTextView, mEditable,
-                KeyEvent.KEYCODE_DPAD_RIGHT, new KeyEvent(KeyEvent.ACTION_DOWN,
-                        KeyEvent.KEYCODE_DPAD_RIGHT)));
+                KeyEvent.KEYCODE_DPAD_RIGHT, event));
         // first line
         // second line|
         // last line
diff --git a/tests/tests/text/src/android/text/method/cts/BaseKeyListenerTest.java b/tests/tests/text/src/android/text/method/cts/BaseKeyListenerTest.java
index a0e03f5..34ed2dc 100644
--- a/tests/tests/text/src/android/text/method/cts/BaseKeyListenerTest.java
+++ b/tests/tests/text/src/android/text/method/cts/BaseKeyListenerTest.java
@@ -16,187 +16,139 @@
 
 package android.text.method.cts;
 
-import com.android.cts.stub.R;
-
-
-import android.app.Activity;
-import android.app.Instrumentation;
-import android.cts.util.PollingCheck;
 import android.os.SystemClock;
-import android.test.ActivityInstrumentationTestCase2;
 import android.text.Editable;
 import android.text.InputType;
 import android.text.Selection;
+import android.text.Spannable;
 import android.text.method.BaseKeyListener;
+import android.text.method.cts.KeyListenerTestCase;
 import android.view.KeyCharacterMap;
 import android.view.KeyEvent;
-import android.view.View;
 import android.widget.TextView;
 import android.widget.TextView.BufferType;
 
 /**
- * Test the main functionalities of the BaseKeyListener.
+ * Test {@link android.text.method.BaseKeyListener}.
  */
-public class BaseKeyListenerTest extends
-        ActivityInstrumentationTestCase2<KeyListenerStubActivity> {
+public class BaseKeyListenerTest extends KeyListenerTestCase {
     private static final CharSequence TEST_STRING = "123456";
-    private Activity mActivity;
-    private Instrumentation mInstrumentation;
-    private TextView mTextView;
-
-    public BaseKeyListenerTest(){
-        super("com.android.cts.stub", KeyListenerStubActivity.class);
-    }
-
-    @Override
-    protected void setUp() throws Exception {
-        super.setUp();
-
-        mActivity = getActivity();
-        mInstrumentation = getInstrumentation();
-        mTextView = (TextView) mActivity.findViewById(R.id.keylistener_textview);
-        new PollingCheck(1000) {
-            @Override
-            protected boolean check() {
-                return mTextView.hasWindowFocus();
-            }
-        }.run();
-    }
 
     public void testBackspace() {
         final Editable content = Editable.Factory.getInstance().newEditable(TEST_STRING);
-        setTextViewText(content);
+        final MockBaseKeyListener mockBaseKeyListener = new MockBaseKeyListener();
 
         // Nothing to delete when the cursor is at the beginning.
-        final MockBaseKeyListener baseKeyListener = new MockBaseKeyListener();
-        KeyEvent delKeyEvent = new KeyEvent(KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_DEL);
-        Selection.setSelection(content, 0, 0);
-        baseKeyListener.backspace(mTextView, content, KeyEvent.KEYCODE_DEL, delKeyEvent);
+        final KeyEvent delKeyEvent = new KeyEvent(KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_DEL);
+        prepTextViewSync(content, mockBaseKeyListener, false, 0, 0);
+        mockBaseKeyListener.backspace(mTextView, content, KeyEvent.KEYCODE_DEL, delKeyEvent);
         assertEquals("123456", content.toString());
 
         // Delete the first three letters using a selection.
-        setTextViewText(content);
-        Selection.setSelection(content, 0, 3);
-        baseKeyListener.backspace(mTextView, content, KeyEvent.KEYCODE_DEL, delKeyEvent);
+        prepTextViewSync(content, mockBaseKeyListener, false, 0, 3);
+        mockBaseKeyListener.backspace(mTextView, content, KeyEvent.KEYCODE_DEL, delKeyEvent);
         assertEquals("456", content.toString());
 
-        // Delete the entire line wit ALT + DEL
-        setTextViewText(content);
-        KeyEvent altDelKeyEvent = new KeyEvent(0, 0, KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_DEL,
-                0, KeyEvent.META_ALT_ON);
-        Selection.setSelection(content, 0, 0);
-        baseKeyListener.backspace(mTextView, content, KeyEvent.KEYCODE_DEL, altDelKeyEvent);
+        // Delete the entire line with ALT + DEL
+        final KeyEvent altDelKeyEvent = new KeyEvent(0, 0, KeyEvent.ACTION_DOWN,
+                KeyEvent.KEYCODE_DEL, 0, KeyEvent.META_ALT_ON);
+        prepTextViewSync(content, mockBaseKeyListener, false, 0, 0);
+        mockBaseKeyListener.backspace(mTextView, content, KeyEvent.KEYCODE_DEL, altDelKeyEvent);
         assertEquals("", content.toString());
     }
 
-    private void setTextViewText(final CharSequence content) {
-        mActivity.runOnUiThread(new Runnable() {
-            public void run() {
-                mTextView.setText(content, BufferType.EDITABLE);
-            }
-        });
-        mInstrumentation.waitForIdleSync();
-    }
-
     public void testBackspace_withSendKeys() {
-        final MockBaseKeyListener baseKeyListener = new MockBaseKeyListener();
-        final String str = "123456";
+        final MockBaseKeyListener mockBaseKeyListener = new MockBaseKeyListener();
 
         // Delete the first character '1'
-        prepareTextView(str, baseKeyListener, 1, 1);
+        prepTextViewSync(TEST_STRING, mockBaseKeyListener, true, 1, 1);
         sendKeys(KeyEvent.KEYCODE_DEL);
         assertEquals("23456", mTextView.getText().toString());
 
         // Delete character '2' and '3'
-        prepareTextView(str, baseKeyListener, 1, 3);
+        prepTextViewSync(TEST_STRING, mockBaseKeyListener, true, 1, 3);
         sendKeys(KeyEvent.KEYCODE_DEL);
         assertEquals("1456", mTextView.getText().toString());
 
         // Delete everything on the line the cursor is on.
-        prepareTextView(str, baseKeyListener, 0, 0);
+        prepTextViewSync(TEST_STRING, mockBaseKeyListener, true, 0, 0);
         sendAltDelete();
         assertEquals("", mTextView.getText().toString());
 
         // ALT+DEL deletes the selection only.
-        prepareTextView(str, baseKeyListener, 2, 4);
+        prepTextViewSync(TEST_STRING, mockBaseKeyListener, true, 2, 4);
         sendAltDelete();
         assertEquals("1256", mTextView.getText().toString());
 
         // DEL key does not take effect when TextView does not have BaseKeyListener.
-        prepareTextView(str, null, 1, 1);
+        prepTextViewSync(TEST_STRING, null, true, 1, 1);
         sendKeys(KeyEvent.KEYCODE_DEL);
-        assertEquals(str, mTextView.getText().toString());
+        assertEquals(TEST_STRING, mTextView.getText().toString());
     }
 
-    private void prepareTextView(final CharSequence content, final BaseKeyListener keyListener,
-            final int selectionStart, final int selectionEnd) {
-        mActivity.runOnUiThread(new Runnable() {
-            public void run() {
-                mTextView.setText(content, BufferType.EDITABLE);
-                mTextView.setKeyListener(keyListener);
-                mTextView.requestFocus();
-                Selection.setSelection((Editable) mTextView.getText(), selectionStart,
-                        selectionEnd);
-            }
-        });
-        mInstrumentation.waitForIdleSync();
-    }
-
-    private void sendAltDelete() {
-        mInstrumentation.sendKeySync(new KeyEvent(KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_ALT_LEFT));
-        sendKeys(KeyEvent.KEYCODE_DEL);
-        mInstrumentation.sendKeySync(new KeyEvent(KeyEvent.ACTION_UP, KeyEvent.KEYCODE_ALT_LEFT));
-    }
-
-    /**
+    /*
      * Check point:
      * 1. Press 0 key, the content of TextView does not changed.
      * 2. Set a selection and press DEL key, the selection is deleted.
      * 3. ACTION_MULTIPLE KEYCODE_UNKNOWN by inserting the event's text into the content.
      */
     public void testPressKey() {
-        final CharSequence str = "123456";
-        final MockBaseKeyListener baseKeyListener = new MockBaseKeyListener();
+        final MockBaseKeyListener mockBaseKeyListener = new MockBaseKeyListener();
 
-        mActivity.runOnUiThread(new Runnable() {
-            public void run() {
-                mTextView.setText(str, BufferType.EDITABLE);
-                mTextView.setKeyListener(baseKeyListener);
-                mTextView.requestFocus();
-                Selection.setSelection((Editable) mTextView.getText(), 0, 0);
-            }
-        });
-        mInstrumentation.waitForIdleSync();
-        assertEquals("123456", mTextView.getText().toString());
         // press '0' key.
+        prepTextViewSync(TEST_STRING, mockBaseKeyListener, true, 0, 0);
         sendKeys(KeyEvent.KEYCODE_0);
         assertEquals("123456", mTextView.getText().toString());
 
-        mActivity.runOnUiThread(new Runnable() {
-            public void run() {
-                Selection.setSelection((Editable) mTextView.getText(), 1, 2);
-            }
-        });
-        mInstrumentation.waitForIdleSync();
         // delete character '2'
+        prepTextViewSync(mTextView.getText(), mockBaseKeyListener, true, 1, 2);
         sendKeys(KeyEvent.KEYCODE_DEL);
         assertEquals("13456", mTextView.getText().toString());
 
-        mActivity.runOnUiThread(new Runnable() {
-            public void run() {
-                Selection.setSelection((Editable) mTextView.getText(), 2, 2);
-            }
-        });
-        mInstrumentation.waitForIdleSync();
         // test ACTION_MULTIPLE KEYCODE_UNKNOWN key event.
         KeyEvent event = new KeyEvent(SystemClock.uptimeMillis(), "abcd",
                 KeyCharacterMap.BUILT_IN_KEYBOARD, 0);
+        prepTextViewSync(mTextView.getText(), mockBaseKeyListener, true, 2, 2);
         mInstrumentation.sendKeySync(event);
         mInstrumentation.waitForIdleSync();
         // the text of TextView is never changed, onKeyOther never works.
 //        assertEquals("13abcd456", mTextView.getText().toString());
     }
 
+    /**
+     * Prepares mTextView state for tests by synchronously setting the content and key listener, on
+     * the UI thread.
+     */
+    private void prepTextViewSync(final CharSequence content, final BaseKeyListener keyListener,
+            final boolean selectInTextView, final int selectionStart, final int selectionEnd) {
+        mActivity.runOnUiThread(new Runnable() {
+            public void run() {
+                mTextView.setText(content, BufferType.EDITABLE);
+                mTextView.setKeyListener(keyListener);
+                Selection.setSelection(
+                        (Spannable) (selectInTextView ? mTextView.getText() : content),
+                        selectionStart, selectionEnd);
+            }
+        });
+        mInstrumentation.waitForIdleSync();
+        assertTrue(mTextView.hasWindowFocus());
+    }
+
+    /**
+     * Sends alt-delete key combo via {@link #sendKeys(int... keys)}.
+     */
+    private void sendAltDelete() {
+        mInstrumentation.sendKeySync(new KeyEvent(KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_ALT_LEFT));
+        mInstrumentation.sendKeySync(new KeyEvent(0, 0, KeyEvent.ACTION_DOWN,
+                KeyEvent.KEYCODE_DEL, 0, KeyEvent.META_ALT_ON));
+        mInstrumentation.sendKeySync(new KeyEvent(0, 0, KeyEvent.ACTION_UP,
+                KeyEvent.KEYCODE_DEL, 0, KeyEvent.META_ALT_ON));
+        mInstrumentation.sendKeySync(new KeyEvent(KeyEvent.ACTION_UP, KeyEvent.KEYCODE_ALT_LEFT));
+    }
+
+    /**
+     * A mocked {@link android.text.method.BaseKeyListener} for testing purposes.
+     */
     private class MockBaseKeyListener extends BaseKeyListener {
         public int getInputType() {
             return InputType.TYPE_CLASS_DATETIME
diff --git a/tests/tests/text/src/android/text/method/cts/DateKeyListenerTest.java b/tests/tests/text/src/android/text/method/cts/DateKeyListenerTest.java
index 6551b52..067a62e 100644
--- a/tests/tests/text/src/android/text/method/cts/DateKeyListenerTest.java
+++ b/tests/tests/text/src/android/text/method/cts/DateKeyListenerTest.java
@@ -16,46 +16,16 @@
 
 package android.text.method.cts;
 
-import com.android.cts.stub.R;
-
-
-import android.app.Activity;
-import android.app.Instrumentation;
-import android.cts.util.PollingCheck;
-import android.test.ActivityInstrumentationTestCase2;
 import android.text.InputType;
+import android.text.method.cts.KeyListenerTestCase;
 import android.text.method.DateKeyListener;
 import android.view.KeyEvent;
 import android.widget.TextView;
 
 /**
- * Test {@link DateKeyListener}.
+ * Test {@link android.text.method.DateKeyListener}.
  */
-public class DateKeyListenerTest extends
-        ActivityInstrumentationTestCase2<KeyListenerStubActivity> {
-    private Activity mActivity;
-    private Instrumentation mInstrumentation;
-    private TextView mTextView;
-
-    public DateKeyListenerTest(){
-        super("com.android.cts.stub", KeyListenerStubActivity.class);
-    }
-
-    @Override
-    protected void setUp() throws Exception {
-        super.setUp();
-
-        mActivity = getActivity();
-        mInstrumentation = getInstrumentation();
-        mTextView = (TextView) mActivity.findViewById(R.id.keylistener_textview);
-        new PollingCheck(1000) {
-            @Override
-            protected boolean check() {
-                return mTextView.hasWindowFocus();
-            }
-        }.run();
-    }
-
+public class DateKeyListenerTest extends KeyListenerTestCase {
     public void testConstructor() {
         new DateKeyListener();
     }
@@ -70,21 +40,20 @@
     }
 
     public void testGetAcceptedChars() {
-        MyDataKeyListener dataKeyListener = new MyDataKeyListener();
+        MockDateKeyListener mockDateKeyListener = new MockDateKeyListener();
 
         TextMethodUtils.assertEquals(DateKeyListener.CHARACTERS,
-                dataKeyListener.getAcceptedChars());
+                mockDateKeyListener.getAcceptedChars());
     }
 
     public void testGetInputType() {
-        MyDataKeyListener dataKeyListener = new MyDataKeyListener();
+        DateKeyListener dateKeyListener = new DateKeyListener();
 
-        int expected = InputType.TYPE_CLASS_DATETIME
-                | InputType.TYPE_DATETIME_VARIATION_DATE;
-        assertEquals(expected, dataKeyListener.getInputType());
+        int expected = InputType.TYPE_CLASS_DATETIME | InputType.TYPE_DATETIME_VARIATION_DATE;
+        assertEquals(expected, dateKeyListener.getInputType());
     }
 
-    /**
+    /*
      * Scenario description:
      * 1. Press '1' key and check if the content of TextView becomes "1"
      * 2. Press '2' key and check if the content of TextView becomes "12"
@@ -96,13 +65,7 @@
     public void testDateTimeKeyListener() {
         final DateKeyListener dateKeyListener = DateKeyListener.getInstance();
 
-        mActivity.runOnUiThread(new Runnable() {
-            public void run() {
-                mTextView.setKeyListener(dateKeyListener);
-                mTextView.requestFocus();
-            }
-        });
-        mInstrumentation.waitForIdleSync();
+        setKeyListenerSync(dateKeyListener);
         assertEquals("", mTextView.getText().toString());
 
         // press '1' key.
@@ -129,13 +92,7 @@
         assertEquals("12-/", mTextView.getText().toString());
 
         // remove DateKeyListener
-        mActivity.runOnUiThread(new Runnable() {
-            public void run() {
-                mTextView.setKeyListener(null);
-                mTextView.requestFocus();
-            }
-        });
-        mInstrumentation.waitForIdleSync();
+        setKeyListenerSync(null);
         assertEquals("12-/", mTextView.getText().toString());
 
         // press '/' key, it will not be accepted.
@@ -143,7 +100,13 @@
         assertEquals("12-/", mTextView.getText().toString());
     }
 
-    private class MyDataKeyListener extends DateKeyListener {
+    /**
+     * A mocked {@link android.text.method.DateKeyListener} for testing purposes.
+     *
+     * Allows {@link DateKeyListenerTest} to call
+     * {@link android.text.method.DateKeyListener#getAcceptedChars()}.
+     */
+    private class MockDateKeyListener extends DateKeyListener {
         @Override
         protected char[] getAcceptedChars() {
             return super.getAcceptedChars();
diff --git a/tests/tests/text/src/android/text/method/cts/DateTimeKeyListenerTest.java b/tests/tests/text/src/android/text/method/cts/DateTimeKeyListenerTest.java
index 9aac08b..03683dc 100644
--- a/tests/tests/text/src/android/text/method/cts/DateTimeKeyListenerTest.java
+++ b/tests/tests/text/src/android/text/method/cts/DateTimeKeyListenerTest.java
@@ -16,47 +16,16 @@
 
 package android.text.method.cts;
 
-import com.android.cts.stub.R;
-
-
-import android.app.Activity;
-import android.app.Instrumentation;
-import android.cts.util.PollingCheck;
-import android.test.ActivityInstrumentationTestCase2;
 import android.text.InputType;
+import android.text.method.cts.KeyListenerTestCase;
 import android.text.method.DateTimeKeyListener;
 import android.view.KeyCharacterMap;
 import android.view.KeyEvent;
-import android.widget.TextView;
 
 /**
- * Test {@link DateTimeKeyListener}.
+ * Test {@link android.DateTimeKeyListener}.
  */
-public class DateTimeKeyListenerTest extends
-        ActivityInstrumentationTestCase2<KeyListenerStubActivity> {
-    private Activity mActivity;
-    private Instrumentation mInstrumentation;
-    private TextView mTextView;
-
-    public DateTimeKeyListenerTest(){
-        super("com.android.cts.stub", KeyListenerStubActivity.class);
-    }
-
-    @Override
-    protected void setUp() throws Exception {
-        super.setUp();
-
-        mActivity = getActivity();
-        new PollingCheck() {
-            @Override
-            protected boolean check() {
-                return mActivity.hasWindowFocus();
-            }
-        }.run();
-        mInstrumentation = getInstrumentation();
-        mTextView = (TextView) mActivity.findViewById(R.id.keylistener_textview);
-    }
-
+public class DateTimeKeyListenerTest extends KeyListenerTestCase {
     public void testConstructor() {
         new DateTimeKeyListener();
     }
@@ -71,10 +40,10 @@
     }
 
     public void testGetAcceptedChars() {
-        MyDateTimeKeyListener dataTimeKeyListener = new MyDateTimeKeyListener();
+        MockDateTimeKeyListener mockDateTimeKeyListener = new MockDateTimeKeyListener();
 
         TextMethodUtils.assertEquals(DateTimeKeyListener.CHARACTERS,
-                dataTimeKeyListener.getAcceptedChars());
+                mockDateTimeKeyListener.getAcceptedChars());
     }
 
     public void testGetInputType() {
@@ -85,7 +54,7 @@
         assertEquals(expected, listener.getInputType());
     }
 
-    /**
+    /*
      * Scenario description:
      * 1. Press '1' key and check if the content of TextView becomes "1"
      * 2. Press '2' key and check if the content of TextView becomes "12"
@@ -97,15 +66,8 @@
      */
     public void testDateTimeKeyListener() {
         final DateTimeKeyListener dateTimeKeyListener = DateTimeKeyListener.getInstance();
+        setKeyListenerSync(dateTimeKeyListener);
         String expectedText = "";
-
-        mActivity.runOnUiThread(new Runnable() {
-            public void run() {
-                mTextView.setKeyListener(dateTimeKeyListener);
-                mTextView.requestFocus();
-            }
-        });
-        mInstrumentation.waitForIdleSync();
         assertEquals(expectedText, mTextView.getText().toString());
 
         // press '1' key.
@@ -148,20 +110,21 @@
         }
 
         // remove DateTimeKeyListener
-        mActivity.runOnUiThread(new Runnable() {
-            public void run() {
-                mTextView.setKeyListener(null);
-                mTextView.requestFocus();
-            }
-        });
-        mInstrumentation.waitForIdleSync();
+        setKeyListenerSync(null);
         assertEquals(expectedText, mTextView.getText().toString());
 
         mInstrumentation.sendStringSync("1");
         assertEquals(expectedText, mTextView.getText().toString());
     }
 
-    private class MyDateTimeKeyListener extends DateTimeKeyListener {
+
+    /**
+     * A mocked {@link android.text.method.DateTimeKeyListener} for testing purposes.
+     *
+     * Allows {@link DateTimeKeyListenerTest} to call
+     * {@link android.text.method.DateTimeKeyListener#getAcceptedChars()}.
+     */
+    private class MockDateTimeKeyListener extends DateTimeKeyListener {
         @Override
         protected char[] getAcceptedChars() {
             return super.getAcceptedChars();
diff --git a/tests/tests/text/src/android/text/method/cts/DialerKeyListenerTest.java b/tests/tests/text/src/android/text/method/cts/DialerKeyListenerTest.java
index a02bdfe..9456c7e 100644
--- a/tests/tests/text/src/android/text/method/cts/DialerKeyListenerTest.java
+++ b/tests/tests/text/src/android/text/method/cts/DialerKeyListenerTest.java
@@ -16,17 +16,17 @@
 
 package android.text.method.cts;
 
-import junit.framework.TestCase;
 import android.text.InputType;
 import android.text.Spannable;
 import android.text.SpannableString;
+import android.text.method.cts.KeyListenerTestCase;
 import android.text.method.DialerKeyListener;
 import android.view.KeyEvent;
 
 /**
- * Test {@link DialerKeyListener}.
+ * Test {@link android.text.method.DialerKeyListener}.
  */
-public class DialerKeyListenerTest extends TestCase {
+public class DialerKeyListenerTest extends KeyListenerTestCase {
     public void testConstructor() {
         new DialerKeyListener();
     }
@@ -76,11 +76,20 @@
         assertEquals(InputType.TYPE_CLASS_PHONE, listener.getInputType());
     }
 
+    /**
+     * A mocked {@link android.text.method.DialerKeyListener} for testing purposes.
+     *
+     * Allows {@link DialerKeyListenerTest} to call
+     * {@link android.text.method.DialerKeyListener#getAcceptedChars()} and
+     * {@link android.text.method.DialerKeyListener#lookup(KeyEvent, Spannable)}.
+     */
     private class MockDialerKeyListener extends DialerKeyListener {
+        @Override
         protected char[] getAcceptedChars() {
             return super.getAcceptedChars();
         }
 
+        @Override
         protected int lookup(KeyEvent event, Spannable content) {
             return super.lookup(event, content);
         }
diff --git a/tests/tests/text/src/android/text/method/cts/DigitsKeyListenerTest.java b/tests/tests/text/src/android/text/method/cts/DigitsKeyListenerTest.java
index 16d9364..33a23e3 100644
--- a/tests/tests/text/src/android/text/method/cts/DigitsKeyListenerTest.java
+++ b/tests/tests/text/src/android/text/method/cts/DigitsKeyListenerTest.java
@@ -16,56 +16,25 @@
 
 package android.text.method.cts;
 
-import com.android.cts.stub.R;
-
-
-import android.app.Activity;
-import android.app.Instrumentation;
-import android.cts.util.PollingCheck;
-import android.test.ActivityInstrumentationTestCase2;
 import android.text.InputType;
 import android.text.Spannable;
 import android.text.SpannableString;
 import android.text.Spanned;
+import android.text.method.cts.KeyListenerTestCase;
 import android.text.method.DigitsKeyListener;
 import android.view.KeyEvent;
-import android.widget.TextView;
 
 /**
  * Test {@link DigitsKeyListener}.
  */
-public class DigitsKeyListenerTest extends
-        ActivityInstrumentationTestCase2<KeyListenerStubActivity> {
-    private Activity mActivity;
-    private Instrumentation mInstrumentation;
-    private TextView mTextView;
-
-    public DigitsKeyListenerTest(){
-        super("com.android.cts.stub", KeyListenerStubActivity.class);
-    }
-
-    @Override
-    protected void setUp() throws Exception {
-        super.setUp();
-
-        mActivity = getActivity();
-        mInstrumentation = getInstrumentation();
-        mTextView = (TextView) mActivity.findViewById(R.id.keylistener_textview);
-        new PollingCheck(1000) {
-            @Override
-            protected boolean check() {
-                return mTextView.hasWindowFocus();
-            }
-        }.run();
-    }
-
+public class DigitsKeyListenerTest extends KeyListenerTestCase {
     public void testConstructor() {
         new DigitsKeyListener();
 
         new DigitsKeyListener(true, true);
     }
 
-    /**
+    /*
      * Check point:
      * Current accepted characters are '0', '1', '2', '3', '4', '5', '6', '7', '8', '9'.
      * 1. filter "123456", return null.
@@ -114,7 +83,7 @@
         assertEquals(destString, dest.toString());
     }
 
-    /**
+    /*
      * Check point:
      * Current accepted characters are '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '-', '+'.
      * 1. filter "-123456", return null
@@ -217,7 +186,7 @@
         assertEquals(startSign, dest.toString());
     }
 
-    /**
+    /*
      * Check point:
      * Current accepted characters are '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '.'.
      * 1. filter "123.456", return null
@@ -287,7 +256,7 @@
         assertEquals(startDecimal, dest.toString());
     }
 
-    /**
+    /*
      * Check point:
      * Current accepted characters are '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '.', '-',
      * '+'.
@@ -410,7 +379,7 @@
         assertEquals(startSign, dest.toString());
     }
 
-    /**
+    /*
      * Scenario description:
      * Current accepted characters are '0', '1', '2', '3', '4', '5', '6', '7', '8', '9'.
      *  1. Press '-' key and this key could not be accepted.
@@ -421,13 +390,7 @@
     public void testDigitsKeyListener1() {
         final DigitsKeyListener digitsKeyListener = DigitsKeyListener.getInstance();
 
-        mActivity.runOnUiThread(new Runnable() {
-            public void run() {
-                mTextView.setKeyListener(digitsKeyListener);
-                mTextView.requestFocus();
-            }
-        });
-        mInstrumentation.waitForIdleSync();
+        setKeyListenerSync(digitsKeyListener);
         assertEquals("", mTextView.getText().toString());
 
         // press '-' key.
@@ -447,7 +410,7 @@
         assertEquals("12", mTextView.getText().toString());
     }
 
-    /**
+    /*
      * Scenario description:
      * Current accepted characters are '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '-', '+'.
      *  1. Press '-' key and check if the content of TextView becomes "-"
@@ -461,13 +424,7 @@
     public void testDigitsKeyListener2() {
         final DigitsKeyListener digitsKeyListener = DigitsKeyListener.getInstance(true, false);
 
-        mActivity.runOnUiThread(new Runnable() {
-            public void run() {
-                mTextView.setKeyListener(digitsKeyListener);
-                mTextView.requestFocus();
-            }
-        });
-        mInstrumentation.waitForIdleSync();
+        setKeyListenerSync(digitsKeyListener);
         assertEquals("", mTextView.getText().toString());
 
         // press '-' key.
@@ -495,7 +452,7 @@
         assertEquals("-12", mTextView.getText().toString());
     }
 
-    /**
+    /*
      * Scenario description:
      * Current accepted characters are '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '.'.
      *  1. Press '-' key and check if the content of TextView becomes ""
@@ -509,13 +466,7 @@
     public void testDigitsKeyListener3() {
         final DigitsKeyListener digitsKeyListener = DigitsKeyListener.getInstance(false, true);
 
-        mActivity.runOnUiThread(new Runnable() {
-            public void run() {
-                mTextView.setKeyListener(digitsKeyListener);
-                mTextView.requestFocus();
-            }
-        });
-        mInstrumentation.waitForIdleSync();
+        setKeyListenerSync(digitsKeyListener);
         assertEquals("", mTextView.getText().toString());
 
         // press '-' key.
@@ -543,7 +494,7 @@
         assertEquals("1.2", mTextView.getText().toString());
     }
 
-    /**
+    /*
      * Scenario description:
      * Current accepted characters are '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '-', '+',
      * '.'.
@@ -559,13 +510,7 @@
     public void testDigitsKeyListener4() {
         final DigitsKeyListener digitsKeyListener = DigitsKeyListener.getInstance(true, true);
 
-        mActivity.runOnUiThread(new Runnable() {
-            public void run() {
-                mTextView.setKeyListener(digitsKeyListener);
-                mTextView.requestFocus();
-            }
-        });
-        mInstrumentation.waitForIdleSync();
+        setKeyListenerSync(digitsKeyListener);
         assertEquals("", mTextView.getText().toString());
 
         // press '+' key.
@@ -593,7 +538,7 @@
         assertEquals("+1.2", mTextView.getText().toString());
     }
 
-    /**
+    /*
      * Scenario description:
      * Current accepted characters are '5', '6', '7', '8', '9'.
      *  1. Press '1' key and this key could not be accepted.
@@ -606,13 +551,7 @@
         final String accepted = "56789";
         final DigitsKeyListener digitsKeyListener = DigitsKeyListener.getInstance(accepted);
 
-        mActivity.runOnUiThread(new Runnable() {
-            public void run() {
-                mTextView.setKeyListener(digitsKeyListener);
-                mTextView.requestFocus();
-            }
-        });
-        mInstrumentation.waitForIdleSync();
+        setKeyListenerSync(digitsKeyListener);
         assertEquals("", mTextView.getText().toString());
 
         // press '1' key.
@@ -680,7 +619,7 @@
     }
 
     public void testGetAcceptedChars() {
-        MyDigitsKeyListener digitsKeyListener = new MyDigitsKeyListener();
+        MockDigitsKeyListener mockDigitsKeyListener = new MockDigitsKeyListener();
 
         final char[][] expected = new char[][] {
             new char[] { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9' },
@@ -689,20 +628,16 @@
             new char[] { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '-', '+', '.' },
         };
 
-        TextMethodUtils.assertEquals(expected[0],
-                digitsKeyListener.getAcceptedChars());
+        TextMethodUtils.assertEquals(expected[0], mockDigitsKeyListener.getAcceptedChars());
 
-        digitsKeyListener = new MyDigitsKeyListener(true, false);
-        TextMethodUtils.assertEquals(expected[1],
-                digitsKeyListener.getAcceptedChars());
+        mockDigitsKeyListener = new MockDigitsKeyListener(true, false);
+        TextMethodUtils.assertEquals(expected[1], mockDigitsKeyListener.getAcceptedChars());
 
-        digitsKeyListener = new MyDigitsKeyListener(false, true);
-        TextMethodUtils.assertEquals(expected[2],
-                digitsKeyListener.getAcceptedChars());
+        mockDigitsKeyListener = new MockDigitsKeyListener(false, true);
+        TextMethodUtils.assertEquals(expected[2], mockDigitsKeyListener.getAcceptedChars());
 
-        digitsKeyListener = new MyDigitsKeyListener(true, true);
-        TextMethodUtils.assertEquals(expected[3],
-                digitsKeyListener.getAcceptedChars());
+        mockDigitsKeyListener = new MockDigitsKeyListener(true, true);
+        TextMethodUtils.assertEquals(expected[3], mockDigitsKeyListener.getAcceptedChars());
     }
 
     public void testGetInputType() {
@@ -727,12 +662,18 @@
         assertEquals(expected, digitsKeyListener.getInputType());
     }
 
-    private class MyDigitsKeyListener extends DigitsKeyListener {
-        public MyDigitsKeyListener() {
+    /**
+     * A mocked {@link android.text.method.DigitsKeyListener} for testing purposes.
+     *
+     * Allows {@link DigitsKeyListenerTest} to call
+     * {@link android.text.method.DigitsKeyListener#getAcceptedChars()}.
+     */
+    private class MockDigitsKeyListener extends DigitsKeyListener {
+        public MockDigitsKeyListener() {
             super();
         }
 
-        public MyDigitsKeyListener(boolean sign, boolean decimal) {
+        public MockDigitsKeyListener(boolean sign, boolean decimal) {
             super(sign, decimal);
         }
 
diff --git a/tests/tests/text/src/android/text/method/cts/KeyListenerTestCase.java b/tests/tests/text/src/android/text/method/cts/KeyListenerTestCase.java
new file mode 100644
index 0000000..4007f33
--- /dev/null
+++ b/tests/tests/text/src/android/text/method/cts/KeyListenerTestCase.java
@@ -0,0 +1,80 @@
+/*
+ * Copyright (C) 2013 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 android.text.method.cts;
+
+import com.android.cts.stub.R;
+
+import android.app.Instrumentation;
+import android.test.ActivityInstrumentationTestCase2;
+import android.text.format.DateUtils;
+import android.text.method.cts.KeyListenerStubActivity;
+import android.text.method.KeyListener;
+import android.widget.TextView;
+
+/**
+ * Base class for various KeyListener tests.
+ * {@link BaseKeyListenerTest}
+ * {@link DateKeyListenerTest}
+ * {@link DateTimeKeyListenerTest}
+ * {@link DigitsKeyListenerTest}
+ * {@link MultiTapKeyListenerTest}
+ * {@link NumberKeyListenerTest}
+ * {@link QwertyKeyListenerTest}
+ * {@link TextKeyKeyListenerTest}
+ *
+ * @see BaseKeyListenerTest
+ * @see DateKeyListenerTest
+ * @see DateTimeKeyListenerTest
+ * @see DigitsKeyListenerTest
+ * @see MultiTapKeyListenerTest
+ * @see NumberKeyListenerTest
+ * @see QwertyKeyListenerTest
+ * @see TextKeyKeyListenerTest
+ */
+public abstract class KeyListenerTestCase extends
+        ActivityInstrumentationTestCase2<KeyListenerStubActivity> {
+    protected KeyListenerStubActivity mActivity;
+    protected Instrumentation mInstrumentation;
+    protected TextView mTextView;
+
+    public KeyListenerTestCase() {
+        super("com.android.cts.stub", KeyListenerStubActivity.class);
+    }
+
+    @Override
+    protected void setUp() throws Exception {
+        super.setUp();
+
+        mActivity = getActivity();
+        mInstrumentation = getInstrumentation();
+        mTextView = (TextView) mActivity.findViewById(R.id.keylistener_textview);
+
+        assertTrue(mActivity.waitForWindowFocus(5 * DateUtils.SECOND_IN_MILLIS));
+    }
+
+    /**
+     * Synchronously sets mTextView's key listener on the UI thread.
+     */
+    protected void setKeyListenerSync(final KeyListener keyListener) {
+        mActivity.runOnUiThread(new Runnable() {
+            public void run() {
+                mTextView.setKeyListener(keyListener);
+            }
+        });
+        mInstrumentation.waitForIdleSync();
+    }
+}
diff --git a/tests/tests/text/src/android/text/method/cts/MetaKeyKeyListenerTest.java b/tests/tests/text/src/android/text/method/cts/MetaKeyKeyListenerTest.java
index b4a18b2..c6eb78c 100644
--- a/tests/tests/text/src/android/text/method/cts/MetaKeyKeyListenerTest.java
+++ b/tests/tests/text/src/android/text/method/cts/MetaKeyKeyListenerTest.java
@@ -16,12 +16,11 @@
 
 package android.text.method.cts;
 
-
-import android.test.AndroidTestCase;
 import android.text.Editable;
 import android.text.Selection;
 import android.text.Spannable;
 import android.text.Spanned;
+import android.text.method.cts.KeyListenerTestCase;
 import android.text.method.DateKeyListener;
 import android.text.method.MetaKeyKeyListener;
 import android.view.KeyCharacterMap;
@@ -32,11 +31,11 @@
 /**
  * Test {@link MetaKeyKeyListener}.
  */
-public class MetaKeyKeyListenerTest extends AndroidTestCase {
+public class MetaKeyKeyListenerTest extends KeyListenerTestCase {
     public void testPressKey() {
         final CharSequence str = "123456";
         final MetaKeyKeyListener numberKeyListener = new DateKeyListener();
-        final View view = new ImageView(getContext());
+        final View view = new ImageView(mInstrumentation.getTargetContext());
         final Editable content = Editable.Factory.getInstance().newEditable(str);
 
         content.setSpan(Selection.SELECTION_START, 0, 0, Spanned.SPAN_POINT_POINT);
@@ -61,7 +60,7 @@
     public void testReleaseKey() {
         final CharSequence str = "123456";
         final MetaKeyKeyListener numberKeyListener = new DateKeyListener();
-        final View view = new ImageView(getContext());
+        final View view = new ImageView(mInstrumentation.getTargetContext());
         final Editable content = Editable.Factory.getInstance().newEditable(str);
 
         content.setSpan(Selection.SELECTION_START, 0, 0, Spanned.SPAN_POINT_POINT);
@@ -343,12 +342,21 @@
         assertEquals(0, state);
     }
 
+    /**
+     * A mocked {@link android.text.method.MetaKeyKeyListener} for testing purposes.
+     *
+     * Allows {@link MetaKeyKeyListenerTest} to call
+     * {@link android.text.method.MetaKeyKeyListener.resetLockedMeta(Spannable)}.
+     */
     private class MockMetaKeyKeyListener extends MetaKeyKeyListener {
         public void callResetLockedMeta(Spannable content) {
             MetaKeyKeyListener.resetLockedMeta(content);
         }
     }
 
+    /**
+     * A mocked {@link android.text.Spannable} for testing purposes.
+     */
     private class MockSpannable implements Spannable {
         private int mFlags;
         private boolean mCalledRemoveSpan = false;
diff --git a/tests/tests/text/src/android/text/method/cts/MultiTapKeyListenerTest.java b/tests/tests/text/src/android/text/method/cts/MultiTapKeyListenerTest.java
old mode 100755
new mode 100644
index 3b4b259..e537b24
--- a/tests/tests/text/src/android/text/method/cts/MultiTapKeyListenerTest.java
+++ b/tests/tests/text/src/android/text/method/cts/MultiTapKeyListenerTest.java
@@ -16,16 +16,11 @@
 
 package android.text.method.cts;
 
-import com.android.cts.stub.R;
-
-
-import android.app.Activity;
-import android.app.Instrumentation;
-import android.test.ActivityInstrumentationTestCase2;
 import android.text.InputType;
 import android.text.Selection;
 import android.text.Spannable;
 import android.text.SpannableStringBuilder;
+import android.text.method.cts.KeyListenerTestCase;
 import android.text.method.MultiTapKeyListener;
 import android.text.method.TextKeyListener.Capitalize;
 import android.view.KeyEvent;
@@ -34,27 +29,11 @@
 
 import java.util.concurrent.TimeUnit;
 
-public class MultiTapKeyListenerTest extends
-        ActivityInstrumentationTestCase2<KeyListenerStubActivity> {
+public class MultiTapKeyListenerTest extends KeyListenerTestCase {
     /**
      * time out of MultiTapKeyListener. longer than 2000ms in case the system is sluggish.
      */
     private static final long TIME_OUT = 3000;
-    private Activity mActivity;
-    private Instrumentation mInstrumentation;
-    private TextView mTextView;
-
-    public MultiTapKeyListenerTest() {
-        super("com.android.cts.stub", KeyListenerStubActivity.class);
-    }
-
-    @Override
-    protected void setUp() throws Exception {
-        super.setUp();
-        mActivity = getActivity();
-        mInstrumentation = getInstrumentation();
-        mTextView = (TextView) mActivity.findViewById(R.id.keylistener_textview);
-    }
 
     public void testConstructor() {
         new MultiTapKeyListener(Capitalize.NONE, true);
@@ -65,20 +44,20 @@
     }
 
     public void testOnSpanAdded() {
-        final MockMultiTapKeyListener multiTapKeyListener
+        final MockMultiTapKeyListener mockMultiTapKeyListener
                 = new MockMultiTapKeyListener(Capitalize.CHARACTERS, true);
         final Spannable text = new SpannableStringBuilder("123456");
 
-        assertFalse(multiTapKeyListener.hadAddedSpan());
+        assertFalse(mockMultiTapKeyListener.hadAddedSpan());
         mActivity.runOnUiThread(new Runnable() {
             public void run() {
-                mTextView.setKeyListener(multiTapKeyListener);
+                mTextView.setKeyListener(mockMultiTapKeyListener);
                 mTextView.setText(text, BufferType.EDITABLE);
             }
         });
         mInstrumentation.waitForIdleSync();
 
-        assertTrue(multiTapKeyListener.hadAddedSpan());
+        assertTrue(mockMultiTapKeyListener.hadAddedSpan());
     }
 
     public void testOnSpanChanged() {
@@ -263,6 +242,11 @@
         assertEquals(expected, listener.getInputType());
     }
 
+    /**
+     * A mocked {@link android.text.method.MultiTapKeyListener} for testing purposes.
+     *
+     * Tracks whether {@link MockMultiTapKeyListener#onSpanAdded()} has been called.
+     */
     private class MockMultiTapKeyListener extends MultiTapKeyListener {
         private boolean mHadAddedSpan;
 
diff --git a/tests/tests/text/src/android/text/method/cts/NumberKeyListenerTest.java b/tests/tests/text/src/android/text/method/cts/NumberKeyListenerTest.java
index 795382c..fa0db0d 100644
--- a/tests/tests/text/src/android/text/method/cts/NumberKeyListenerTest.java
+++ b/tests/tests/text/src/android/text/method/cts/NumberKeyListenerTest.java
@@ -16,18 +16,12 @@
 
 package android.text.method.cts;
 
-import com.android.cts.stub.R;
-
-
-import android.app.Activity;
-import android.app.Instrumentation;
-import android.cts.util.PollingCheck;
-import android.test.ActivityInstrumentationTestCase2;
 import android.text.Editable;
 import android.text.Selection;
 import android.text.Spannable;
 import android.text.SpannableString;
 import android.text.Spanned;
+import android.text.method.cts.KeyListenerTestCase;
 import android.text.method.NumberKeyListener;
 import android.view.KeyEvent;
 import android.view.View;
@@ -35,31 +29,8 @@
 import android.widget.TextView.BufferType;
 
 
-public class NumberKeyListenerTest extends
-        ActivityInstrumentationTestCase2<KeyListenerStubActivity> {
-
-    private MockNumberKeyListener mNumberKeyListener;
-    private Activity mActivity;
-    private Instrumentation mInstrumentation;
-    private TextView mTextView;
-
-    public NumberKeyListenerTest(){
-        super("com.android.cts.stub", KeyListenerStubActivity.class);
-    }
-
-    @Override
-    protected void setUp() throws Exception {
-        super.setUp();
-        mActivity = getActivity();
-        mInstrumentation = getInstrumentation();
-        mTextView = (TextView) mActivity.findViewById(R.id.keylistener_textview);
-        new PollingCheck(1000) {
-            @Override
-            protected boolean check() {
-                return mTextView.hasWindowFocus();
-            }
-        }.run();
-    }
+public class NumberKeyListenerTest extends KeyListenerTestCase {
+    private MockNumberKeyListener mMockNumberKeyListener;
 
     /**
      * Check point:
@@ -70,29 +41,31 @@
      * 5. Filter Spanned("12345 Android"), return Spanned("12345") and copy spans.
      */
     public void testFilter() {
-        mNumberKeyListener = new MockNumberKeyListener(MockNumberKeyListener.DIGITS);
+        mMockNumberKeyListener = new MockNumberKeyListener(MockNumberKeyListener.DIGITS);
         String source = "Android test";
         SpannableString dest = new SpannableString("012345");
-        assertEquals("", mNumberKeyListener.filter(source, 0, source.length(),
+        assertEquals("", mMockNumberKeyListener.filter(source, 0, source.length(),
                 dest, 0, dest.length()).toString());
 
         source = "12345";
         dest = new SpannableString("012345");
-        assertNull(mNumberKeyListener.filter(source, 0, source.length(), dest, 0, dest.length()));
+        assertNull(mMockNumberKeyListener.filter(source, 0, source.length(), dest, 0,
+                dest.length()));
 
         source = "";
         dest = new SpannableString("012345");
-        assertNull(mNumberKeyListener.filter(source, 0, source.length(), dest, 0, dest.length()));
+        assertNull(mMockNumberKeyListener.filter(source, 0, source.length(), dest, 0,
+                dest.length()));
 
         source = "12345 Android";
         dest = new SpannableString("012345 Android-test");
-        assertEquals("12345", mNumberKeyListener.filter(source, 0, source.length(),
+        assertEquals("12345", mMockNumberKeyListener.filter(source, 0, source.length(),
                 dest, 0, dest.length()).toString());
 
         Object what = new Object();
         Spannable spannableSource = new SpannableString("12345 Android");
         spannableSource.setSpan(what, 0, spannableSource.length(), Spanned.SPAN_POINT_POINT);
-        Spanned filtered = (Spanned) mNumberKeyListener.filter(spannableSource,
+        Spanned filtered = (Spanned) mMockNumberKeyListener.filter(spannableSource,
                 0, spannableSource.length(), dest, 0, dest.length());
         assertEquals("12345", filtered.toString());
         assertEquals(Spanned.SPAN_POINT_POINT, filtered.getSpanFlags(what));
@@ -100,7 +73,7 @@
         assertEquals("12345".length(), filtered.getSpanEnd(what));
 
         try {
-            mNumberKeyListener.filter(null, 0, 1, dest, 0, dest.length());
+            mMockNumberKeyListener.filter(null, 0, 1, dest, 0, dest.length());
             fail("should throw NullPointerException.");
         } catch (NullPointerException e) {
         }
@@ -112,18 +85,18 @@
      * key event, return the char; otherwise return '\0'.
      */
     public void testLookup() {
-        mNumberKeyListener = new MockNumberKeyListener(MockNumberKeyListener.DIGITS);
+        mMockNumberKeyListener = new MockNumberKeyListener(MockNumberKeyListener.DIGITS);
         KeyEvent event1 = new KeyEvent(KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_0);
         SpannableString str = new SpannableString("012345");
-        assertEquals('0', mNumberKeyListener.lookup(event1, str));
+        assertEquals('0', mMockNumberKeyListener.lookup(event1, str));
 
-        mNumberKeyListener = new MockNumberKeyListener(MockNumberKeyListener.NOTHING);
+        mMockNumberKeyListener = new MockNumberKeyListener(MockNumberKeyListener.NOTHING);
         KeyEvent event2 = new KeyEvent(KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_A);
         str = new SpannableString("ABCD");
-        assertEquals('\0', mNumberKeyListener.lookup(event2, str));
+        assertEquals('\0', mMockNumberKeyListener.lookup(event2, str));
 
         try {
-            mNumberKeyListener.lookup(null, str);
+            mMockNumberKeyListener.lookup(null, str);
             fail("should throw NullPointerException.");
         } catch (NullPointerException e) {
             // expected.
@@ -131,13 +104,13 @@
     }
 
     public void testOk() {
-        mNumberKeyListener = new MockNumberKeyListener(MockNumberKeyListener.DIGITS);
+        mMockNumberKeyListener = new MockNumberKeyListener(MockNumberKeyListener.DIGITS);
 
-        assertTrue(mNumberKeyListener.callOk(mNumberKeyListener.getAcceptedChars(), '3'));
-        assertFalse(mNumberKeyListener.callOk(mNumberKeyListener.getAcceptedChars(), 'e'));
+        assertTrue(mMockNumberKeyListener.callOk(mMockNumberKeyListener.getAcceptedChars(), '3'));
+        assertFalse(mMockNumberKeyListener.callOk(mMockNumberKeyListener.getAcceptedChars(), 'e'));
 
         try {
-            mNumberKeyListener.callOk(null, 'm');
+            mMockNumberKeyListener.callOk(null, 'm');
             fail("should throw NullPointerException.");
         } catch (NullPointerException e) {
         }
@@ -151,13 +124,13 @@
      */
     public void testPressKey() {
         final CharSequence text = "123456";
-        final MockNumberKeyListener numberKeyListener =
+        final MockNumberKeyListener mockNumberKeyListener =
             new MockNumberKeyListener(MockNumberKeyListener.DIGITS);
 
         mActivity.runOnUiThread(new Runnable() {
             public void run() {
                 mTextView.setText(text, BufferType.EDITABLE);
-                mTextView.setKeyListener(numberKeyListener);
+                mTextView.setKeyListener(mockNumberKeyListener);
                 mTextView.requestFocus();
                 Selection.setSelection((Editable) mTextView.getText(), 0, 0);
             }
@@ -188,8 +161,15 @@
         assertEquals("0123456", mTextView.getText().toString());
     }
 
+    /**
+     * A mocked {@link android.text.method.NumberKeyListener} for testing purposes.
+     *
+     * Allows {@link NumberKeyListenerTest} to call
+     * {@link android.text.method.NumberKeyListener#getAcceptedChars()},
+     * {@link android.text.method.NumberKeyListener#lookup(KeyEvent, Spannable)}, and
+     * {@link android.text.method.NumberKeyListener@ok(char[], char)}.
+     */
     private static class MockNumberKeyListener extends NumberKeyListener {
-
         static final char[] DIGITS =
                 new char[] {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9'};
 
diff --git a/tests/tests/text/src/android/text/method/cts/PasswordTransformationMethodTest.java b/tests/tests/text/src/android/text/method/cts/PasswordTransformationMethodTest.java
old mode 100755
new mode 100644
diff --git a/tests/tests/text/src/android/text/method/cts/QwertyKeyListenerTest.java b/tests/tests/text/src/android/text/method/cts/QwertyKeyListenerTest.java
index c97edd9..b66e19a 100644
--- a/tests/tests/text/src/android/text/method/cts/QwertyKeyListenerTest.java
+++ b/tests/tests/text/src/android/text/method/cts/QwertyKeyListenerTest.java
@@ -16,16 +16,11 @@
 
 package android.text.method.cts;
 
-import com.android.cts.stub.R;
-
-
-import android.app.Activity;
-import android.app.Instrumentation;
-import android.test.ActivityInstrumentationTestCase2;
 import android.text.InputType;
 import android.text.Selection;
 import android.text.Spannable;
 import android.text.SpannableStringBuilder;
+import android.text.method.cts.KeyListenerTestCase;
 import android.text.method.QwertyKeyListener;
 import android.text.method.TextKeyListener;
 import android.text.method.TextKeyListener.Capitalize;
@@ -33,24 +28,7 @@
 import android.widget.TextView;
 import android.widget.TextView.BufferType;
 
-public class QwertyKeyListenerTest extends
-        ActivityInstrumentationTestCase2<KeyListenerStubActivity> {
-    private Activity mActivity;
-    private Instrumentation mInstrumentation;
-    private TextView mTextView;
-
-    public QwertyKeyListenerTest() {
-        super("com.android.cts.stub", KeyListenerStubActivity.class);
-    }
-
-    @Override
-    protected void setUp() throws Exception {
-        super.setUp();
-        mActivity = getActivity();
-        mInstrumentation = getInstrumentation();
-        mTextView = (TextView) mActivity.findViewById(R.id.keylistener_textview);
-    }
-
+public class QwertyKeyListenerTest extends KeyListenerTestCase {
     public void testConstructor() {
         new QwertyKeyListener(Capitalize.NONE, false);
 
diff --git a/tests/tests/text/src/android/text/method/cts/ScrollingMovementMethodTest.java b/tests/tests/text/src/android/text/method/cts/ScrollingMovementMethodTest.java
old mode 100755
new mode 100644
diff --git a/tests/tests/text/src/android/text/method/cts/TextKeyListenerTest.java b/tests/tests/text/src/android/text/method/cts/TextKeyListenerTest.java
index 9984efe..3e09a60 100644
--- a/tests/tests/text/src/android/text/method/cts/TextKeyListenerTest.java
+++ b/tests/tests/text/src/android/text/method/cts/TextKeyListenerTest.java
@@ -16,19 +16,14 @@
 
 package android.text.method.cts;
 
-import com.android.cts.stub.R;
-
-
-import android.app.Instrumentation;
-import android.cts.util.PollingCheck;
 import android.os.SystemClock;
-import android.test.ActivityInstrumentationTestCase2;
 import android.test.UiThreadTest;
 import android.text.Editable;
 import android.text.InputType;
 import android.text.Selection;
 import android.text.Spannable;
 import android.text.SpannableStringBuilder;
+import android.text.method.cts.KeyListenerTestCase;
 import android.text.method.TextKeyListener;
 import android.text.method.TextKeyListener.Capitalize;
 import android.view.KeyCharacterMap;
@@ -37,33 +32,11 @@
 import android.widget.TextView;
 import android.widget.TextView.BufferType;
 
-public class TextKeyListenerTest extends
-        ActivityInstrumentationTestCase2<KeyListenerStubActivity> {
+public class TextKeyListenerTest extends KeyListenerTestCase {
     /**
      * time out of MultiTapKeyListener. longer than 2000ms in case the system is sluggish.
      */
     private static final long TIME_OUT = 3000;
-    private KeyListenerStubActivity mActivity;
-    private Instrumentation mInstrumentation;
-    private TextView mTextView;
-
-    public TextKeyListenerTest() {
-        super("com.android.cts.stub", KeyListenerStubActivity.class);
-    }
-
-    @Override
-    protected void setUp() throws Exception {
-        super.setUp();
-        mActivity = getActivity();
-        mInstrumentation = getInstrumentation();
-        mTextView = (TextView) mActivity.findViewById(R.id.keylistener_textview);
-        new PollingCheck(1000) {
-            @Override
-            protected boolean check() {
-                return mTextView.hasWindowFocus();
-            }
-        }.run();
-    }
 
     public void testConstructor() {
         new TextKeyListener(Capitalize.NONE, true);
@@ -104,22 +77,22 @@
     }
 
     public void testOnSpanAdded() {
-        final MockTextKeyListener textKeyListener
+        final MockTextKeyListener mockTextKeyListener
                 = new MockTextKeyListener(Capitalize.CHARACTERS, true);
         final Spannable text = new SpannableStringBuilder("123456");
 
-        assertFalse(textKeyListener.hadAddedSpan());
+        assertFalse(mockTextKeyListener.hadAddedSpan());
         mActivity.runOnUiThread(new Runnable() {
             public void run() {
-                mTextView.setKeyListener(textKeyListener);
+                mTextView.setKeyListener(mockTextKeyListener);
                 mTextView.setText(text, BufferType.EDITABLE);
             }
         });
         mInstrumentation.waitForIdleSync();
 
-        assertTrue(textKeyListener.hadAddedSpan());
+        assertTrue(mockTextKeyListener.hadAddedSpan());
 
-        textKeyListener.release();
+        mockTextKeyListener.release();
     }
 
     public void testGetInstance1() {
@@ -243,7 +216,6 @@
         mActivity.runOnUiThread(new Runnable() {
             public void run() {
                 mTextView.setText("", BufferType.EDITABLE);
-                mTextView.requestFocus();
                 Selection.setSelection((Editable) mTextView.getText(), 0, 0);
                 mTextView.setKeyListener(textKeyListener);
             }
@@ -275,6 +247,12 @@
         listener.release();
     }
 
+    /**
+     * A mocked {@link android.text.method.TextKeyListener} for testing purposes.
+     *
+     * Tracks whether {@link MockTextKeyListener#onSpanAdded(Spannable, Object, int, int)} has been
+     * called.
+     */
     private class MockTextKeyListener extends TextKeyListener {
         private boolean mHadAddedSpan;
 
diff --git a/tests/tests/text/src/android/text/method/cts/TimeKeyListenerTest.java b/tests/tests/text/src/android/text/method/cts/TimeKeyListenerTest.java
index f9c172b..7d8631b 100644
--- a/tests/tests/text/src/android/text/method/cts/TimeKeyListenerTest.java
+++ b/tests/tests/text/src/android/text/method/cts/TimeKeyListenerTest.java
@@ -16,44 +16,13 @@
 
 package android.text.method.cts;
 
-import com.android.cts.stub.R;
-
-
-import android.app.Activity;
-import android.app.Instrumentation;
-import android.cts.util.PollingCheck;
-import android.test.ActivityInstrumentationTestCase2;
 import android.text.InputType;
+import android.text.method.cts.KeyListenerTestCase;
 import android.text.method.TimeKeyListener;
 import android.view.KeyCharacterMap;
 import android.view.KeyEvent;
-import android.widget.TextView;
 
-public class TimeKeyListenerTest extends
-        ActivityInstrumentationTestCase2<KeyListenerStubActivity> {
-    private Activity mActivity;
-    private Instrumentation mInstrumentation;
-    private TextView mTextView;
-
-    public TimeKeyListenerTest(){
-        super("com.android.cts.stub", KeyListenerStubActivity.class);
-    }
-
-    @Override
-    protected void setUp() throws Exception {
-        super.setUp();
-
-        mActivity = getActivity();
-        mInstrumentation = getInstrumentation();
-        mTextView = (TextView) mActivity.findViewById(R.id.keylistener_textview);
-        new PollingCheck(1000) {
-            @Override
-            protected boolean check() {
-                return mTextView.hasWindowFocus();
-            }
-        }.run();
-    }
-
+public class TimeKeyListenerTest extends KeyListenerTestCase {
     public void testConstructor() {
         new TimeKeyListener();
     }
@@ -68,9 +37,9 @@
     }
 
     public void testGetAcceptedChars() {
-        MyTimeKeyListener timeKeyListener = new MyTimeKeyListener();
+        MockTimeKeyListener mockTimeKeyListener = new MockTimeKeyListener();
         TextMethodUtils.assertEquals(TimeKeyListener.CHARACTERS,
-                timeKeyListener.getAcceptedChars());
+                mockTimeKeyListener.getAcceptedChars());
     }
 
     public void testGetInputType() {
@@ -80,7 +49,7 @@
         assertEquals(expected, listener.getInputType());
     }
 
-    /**
+    /*
      * Scenario description:
      * 1. Press '1' key and check if the content of TextView becomes "1"
      * 2. Press '2' key and check if the content of TextView becomes "12"
@@ -94,13 +63,7 @@
         final TimeKeyListener timeKeyListener = TimeKeyListener.getInstance();
         String expectedText = "";
 
-        mActivity.runOnUiThread(new Runnable() {
-            public void run() {
-                mTextView.setKeyListener(timeKeyListener);
-                mTextView.requestFocus();
-            }
-        });
-        mInstrumentation.waitForIdleSync();
+        setKeyListenerSync(timeKeyListener);
         assertEquals(expectedText, mTextView.getText().toString());
 
         // press '1' key.
@@ -142,20 +105,20 @@
             assertEquals(expectedText, mTextView.getText().toString());
         }
 
-        mActivity.runOnUiThread(new Runnable() {
-            public void run() {
-                mTextView.setKeyListener(null);
-                mTextView.requestFocus();
-            }
-        });
-        mInstrumentation.waitForIdleSync();
+        setKeyListenerSync(null);
 
         // press '1' key.
         mInstrumentation.sendStringSync("1");
         assertEquals(expectedText, mTextView.getText().toString());
     }
 
-    private class MyTimeKeyListener extends TimeKeyListener {
+    /**
+     * A mocked {@link android.text.method.TimeKeyListener} for testing purposes.
+     *
+     * Allows {@link TimeKeyListenerTest} to call
+     * {@link android.text.method.TimeKeyListener#getAcceptedChars()}.
+     */
+    private class MockTimeKeyListener extends TimeKeyListener {
         @Override
         protected char[] getAcceptedChars() {
             return super.getAcceptedChars();
diff --git a/tests/tests/text/src/android/text/method/cts/TouchTest.java b/tests/tests/text/src/android/text/method/cts/TouchTest.java
old mode 100755
new mode 100644
diff --git a/tests/tests/util/src/android/util/cts/DisplayMetricsTest.java b/tests/tests/util/src/android/util/cts/DisplayMetricsTest.java
index d7c1895..fd8fa53 100644
--- a/tests/tests/util/src/android/util/cts/DisplayMetricsTest.java
+++ b/tests/tests/util/src/android/util/cts/DisplayMetricsTest.java
@@ -36,9 +36,9 @@
         outMetrics.setToDefaults();
         assertEquals(0, outMetrics.widthPixels);
         assertEquals(0, outMetrics.heightPixels);
-        // according to Android enmulator doc UI -scale confine density should between 0.1 to 3
-        assertTrue((0.1 <= outMetrics.density) && (outMetrics.density <= 3));
-        assertTrue((0.1 <= outMetrics.scaledDensity) && (outMetrics.scaledDensity <= 3));
+        // according to Android emulator doc UI -scale confine density should between 0.1 to 4
+        assertTrue((0.1 <= outMetrics.density) && (outMetrics.density <= 4));
+        assertTrue((0.1 <= outMetrics.scaledDensity) && (outMetrics.scaledDensity <= 4));
         assertTrue(0 < outMetrics.xdpi);
         assertTrue(0 < outMetrics.ydpi);
 
@@ -48,9 +48,9 @@
         metrics.setTo(outMetrics);
         assertEquals(display.getHeight(), metrics.heightPixels);
         assertEquals(display.getWidth(), metrics.widthPixels);
-        // according to Android enmulator doc UI -scale confine density should between 0.1 to 3
-        assertTrue((0.1 <= metrics.density) && (metrics.density <= 3));
-        assertTrue((0.1 <= metrics.scaledDensity) && (metrics.scaledDensity <= 3));
+        // according to Android emulator doc UI -scale confine density should between 0.1 to 4
+        assertTrue((0.1 <= metrics.density) && (metrics.density <= 4));
+        assertTrue((0.1 <= metrics.scaledDensity) && (metrics.scaledDensity <= 4));
         assertTrue(0 < metrics.xdpi);
         assertTrue(0 < metrics.ydpi);
     }
diff --git a/tests/tests/util/src/android/util/cts/LongSparseArrayTest.java b/tests/tests/util/src/android/util/cts/LongSparseArrayTest.java
new file mode 100644
index 0000000..e5b23f8
--- /dev/null
+++ b/tests/tests/util/src/android/util/cts/LongSparseArrayTest.java
@@ -0,0 +1,182 @@
+/*
+ * Copyright (C) 2013 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 android.util.cts;
+
+import android.util.LongSparseArray;
+
+import junit.framework.TestCase;
+
+/**
+ * Tests for {@link LongSparseArray}.
+ */
+public class LongSparseArrayTest extends TestCase {
+    private static final long[] KEYS = {12, 23, 4, 6, 8, 1, 3, -12, 0, -3, 11, 14, -23};
+    private static final Integer[] VALUES = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12};
+    private static final int LENGTH = VALUES.length;
+    private static final long NON_EXISTED_KEY = 123;
+    private static final Integer VALUE_FOR_NON_EXISTED_KEY = -1;
+
+    public void testSparseArrayWithDefaultCapacity() {
+        LongSparseArray<Integer> sparseArray = new LongSparseArray<Integer>();
+        assertEquals(0, sparseArray.size());
+
+        int length = VALUES.length;
+
+        for (int i = 0; i < length; i++) {
+            sparseArray.put(KEYS[i], VALUES[i]);
+            assertEquals(i + 1, sparseArray.size());
+        }
+
+        for (int i = 0; i < length; i++) {
+            assertEquals(new Integer(i), sparseArray.get(KEYS[i]));
+        }
+
+        for (int i = 0; i < length; i++) {
+            assertEquals(sparseArray.indexOfValue(VALUES[i]), sparseArray.indexOfKey(KEYS[i]));
+        }
+
+        // for key already exist, old value will be replaced
+        long existKey = KEYS[0];
+        Integer oldValue = VALUES[0]; // 0
+        Integer newValue = 100;
+        assertEquals(oldValue, sparseArray.get(existKey));
+        assertEquals(LENGTH, sparseArray.size());
+        sparseArray.put(existKey, newValue);
+        assertEquals(newValue, sparseArray.get(existKey));
+        assertEquals(LENGTH, sparseArray.size());
+
+        assertEquals(VALUE_FOR_NON_EXISTED_KEY,
+                sparseArray.get(NON_EXISTED_KEY, VALUE_FOR_NON_EXISTED_KEY));
+        assertNull(sparseArray.get(NON_EXISTED_KEY)); // the default value is null
+
+        int size = sparseArray.size();
+        sparseArray.append(NON_EXISTED_KEY, VALUE_FOR_NON_EXISTED_KEY);
+        assertEquals(size + 1, sparseArray.size());
+        assertEquals(size, sparseArray.indexOfKey(NON_EXISTED_KEY));
+        assertEquals(size, sparseArray.indexOfValue(VALUE_FOR_NON_EXISTED_KEY));
+        assertEquals(NON_EXISTED_KEY, sparseArray.keyAt(size));
+        assertEquals(VALUE_FOR_NON_EXISTED_KEY, sparseArray.valueAt(size));
+
+        sparseArray.setValueAt(size, VALUES[1]);
+        assertTrue(VALUE_FOR_NON_EXISTED_KEY != sparseArray.valueAt(size));
+        assertEquals(VALUES[1], sparseArray.valueAt(size));
+
+        size = sparseArray.size();
+        assertEquals(VALUES[1], sparseArray.get(KEYS[1]));
+        assertFalse(VALUE_FOR_NON_EXISTED_KEY == VALUES[1]);
+        sparseArray.delete(KEYS[1]);
+        assertEquals(VALUE_FOR_NON_EXISTED_KEY,
+                sparseArray.get(KEYS[1], VALUE_FOR_NON_EXISTED_KEY));
+        assertEquals(size - 1, sparseArray.size());
+
+        size = sparseArray.size();
+        assertEquals(VALUES[2], sparseArray.get(KEYS[2]));
+        assertFalse(VALUE_FOR_NON_EXISTED_KEY == VALUES[2]);
+        sparseArray.remove(KEYS[2]);
+        assertEquals(VALUE_FOR_NON_EXISTED_KEY,
+                sparseArray.get(KEYS[2], VALUE_FOR_NON_EXISTED_KEY));
+        assertEquals(size - 1, sparseArray.size());
+
+        sparseArray.clear();
+        assertEquals(0, sparseArray.size());
+    }
+
+    public void testSparseArrayWithSpecifiedCapacity() {
+        LongSparseArray<Integer> sparseArray = new LongSparseArray<Integer>(5);
+        assertEquals(0, sparseArray.size());
+
+        int length = VALUES.length;
+
+        for (int i = 0; i < length; i++) {
+            sparseArray.put(KEYS[i], VALUES[i]);
+            assertEquals(i + 1, sparseArray.size());
+        }
+
+        for (int i = 0; i < length; i++) {
+            assertEquals(VALUES[i], sparseArray.get(KEYS[i]));
+        }
+
+        for (int i = 0; i < length; i++) {
+            assertEquals(sparseArray.indexOfValue(VALUES[i]), sparseArray.indexOfKey(KEYS[i]));
+        }
+
+        // for key already exist, old value will be replaced
+        long existKey = KEYS[0];
+        Integer oldValue = VALUES[0]; // 0
+        Integer newValue = 100;
+        assertEquals(oldValue, sparseArray.get(existKey));
+        assertEquals(LENGTH, sparseArray.size());
+        sparseArray.put(existKey, newValue);
+        assertEquals(newValue, sparseArray.get(existKey));
+        assertEquals(LENGTH, sparseArray.size());
+
+        assertEquals(VALUE_FOR_NON_EXISTED_KEY,
+                     sparseArray.get(NON_EXISTED_KEY, VALUE_FOR_NON_EXISTED_KEY));
+        assertNull(sparseArray.get(NON_EXISTED_KEY)); // the default value is null
+
+        int size = sparseArray.size();
+        sparseArray.append(NON_EXISTED_KEY, VALUE_FOR_NON_EXISTED_KEY);
+        assertEquals(size + 1, sparseArray.size());
+        assertEquals(size, sparseArray.indexOfKey(NON_EXISTED_KEY));
+        assertEquals(size, sparseArray.indexOfValue(VALUE_FOR_NON_EXISTED_KEY));
+        assertEquals(NON_EXISTED_KEY, sparseArray.keyAt(size));
+        assertEquals(VALUE_FOR_NON_EXISTED_KEY, sparseArray.valueAt(size));
+
+        sparseArray.setValueAt(size, VALUES[1]);
+        assertTrue(VALUE_FOR_NON_EXISTED_KEY != sparseArray.valueAt(size));
+        assertEquals(VALUES[1], sparseArray.valueAt(size));
+
+        size = sparseArray.size();
+        assertEquals(VALUES[1], sparseArray.get(KEYS[1]));
+        assertFalse(VALUE_FOR_NON_EXISTED_KEY == VALUES[1]);
+        sparseArray.delete(KEYS[1]);
+        assertEquals(VALUE_FOR_NON_EXISTED_KEY,
+                sparseArray.get(KEYS[1], VALUE_FOR_NON_EXISTED_KEY));
+        assertEquals(size - 1, sparseArray.size());
+
+        size = sparseArray.size();
+        assertEquals(VALUES[2], sparseArray.get(KEYS[2]));
+        assertFalse(VALUE_FOR_NON_EXISTED_KEY == VALUES[2]);
+        sparseArray.remove(KEYS[2]);
+        assertEquals(VALUE_FOR_NON_EXISTED_KEY,
+                sparseArray.get(KEYS[2], VALUE_FOR_NON_EXISTED_KEY));
+        assertEquals(size - 1, sparseArray.size());
+
+        sparseArray.clear();
+        assertEquals(0, sparseArray.size());
+    }
+
+    public void testIterationOrder() {
+        LongSparseArray<Long> sparseArray = new LongSparseArray<Long>();
+        // No matter in which order they are inserted.
+        sparseArray.put(1L, Long.valueOf(2L));
+        sparseArray.put(10L, Long.valueOf(20L));
+        sparseArray.put(5L, Long.valueOf(40L));
+        sparseArray.put(Long.MAX_VALUE, Long.valueOf(Long.MIN_VALUE));
+        // The keys are returned in order.
+        assertEquals(1L, sparseArray.keyAt(0));
+        assertEquals(5L, sparseArray.keyAt(1));
+        assertEquals(10L, sparseArray.keyAt(2));
+        assertEquals(Long.MAX_VALUE, sparseArray.keyAt(3));
+        // The values are returned in the order of the corresponding keys.
+        assertEquals(2L, sparseArray.valueAt(0).longValue());
+        assertEquals(40L, sparseArray.valueAt(1).longValue());
+        assertEquals(20L, sparseArray.valueAt(2).longValue());
+        assertEquals(Long.MIN_VALUE, sparseArray.valueAt(3).longValue());
+    }
+
+}
diff --git a/tests/tests/util/src/android/util/cts/PrintStreamPrinterTest.java b/tests/tests/util/src/android/util/cts/PrintStreamPrinterTest.java
old mode 100755
new mode 100644
diff --git a/tests/tests/util/src/android/util/cts/SparseArrayTest.java b/tests/tests/util/src/android/util/cts/SparseArrayTest.java
index dfb722b..6dbb571 100644
--- a/tests/tests/util/src/android/util/cts/SparseArrayTest.java
+++ b/tests/tests/util/src/android/util/cts/SparseArrayTest.java
@@ -155,4 +155,23 @@
         sparseArray.clear();
         assertEquals(0, sparseArray.size());
     }
+
+    public void testIterationOrder() {
+        SparseArray<Long> sparseArray = new SparseArray<Long>();
+        // No matter in which order they are inserted.
+        sparseArray.put(1, Long.valueOf(2L));
+        sparseArray.put(10, Long.valueOf(20L));
+        sparseArray.put(5, Long.valueOf(40L));
+        sparseArray.put(Integer.MAX_VALUE, Long.valueOf(Long.MIN_VALUE));
+        // The keys are returned in order.
+        assertEquals(1, sparseArray.keyAt(0));
+        assertEquals(5, sparseArray.keyAt(1));
+        assertEquals(10, sparseArray.keyAt(2));
+        assertEquals(Integer.MAX_VALUE, sparseArray.keyAt(3));
+        // The values are returned in the order of the corresponding keys.
+        assertEquals(2L, sparseArray.valueAt(0).longValue());
+        assertEquals(40L, sparseArray.valueAt(1).longValue());
+        assertEquals(20L, sparseArray.valueAt(2).longValue());
+        assertEquals(Long.MIN_VALUE, sparseArray.valueAt(3).longValue());
+    }
 }
diff --git a/tests/tests/util/src/android/util/cts/SparseBooleanArrayTest.java b/tests/tests/util/src/android/util/cts/SparseBooleanArrayTest.java
index 0914d46..0ac8ea4 100644
--- a/tests/tests/util/src/android/util/cts/SparseBooleanArrayTest.java
+++ b/tests/tests/util/src/android/util/cts/SparseBooleanArrayTest.java
@@ -143,5 +143,24 @@
         assertEquals(0, sparseBooleanArray.size());
     }
 
+    public void testIterationOrder() {
+        SparseBooleanArray sparseArray = new SparseBooleanArray();
+        // No matter in which order they are inserted.
+        sparseArray.put(1, true);
+        sparseArray.put(10, false);
+        sparseArray.put(5, true);
+        sparseArray.put(Integer.MAX_VALUE, false);
+        // The keys are returned in order.
+        assertEquals(1, sparseArray.keyAt(0));
+        assertEquals(5, sparseArray.keyAt(1));
+        assertEquals(10, sparseArray.keyAt(2));
+        assertEquals(Integer.MAX_VALUE, sparseArray.keyAt(3));
+        // The values are returned in the order of the corresponding keys.
+        assertEquals(true, sparseArray.valueAt(0));
+        assertEquals(true, sparseArray.valueAt(1));
+        assertEquals(false, sparseArray.valueAt(2));
+        assertEquals(false, sparseArray.valueAt(3));
+    }
+
 }
 
diff --git a/tests/tests/util/src/android/util/cts/SparseIntArrayTest.java b/tests/tests/util/src/android/util/cts/SparseIntArrayTest.java
index a3637a1..d0e4447 100644
--- a/tests/tests/util/src/android/util/cts/SparseIntArrayTest.java
+++ b/tests/tests/util/src/android/util/cts/SparseIntArrayTest.java
@@ -171,5 +171,24 @@
         }
     }
 
+    public void testIterationOrder() {
+        SparseIntArray sparseArray = new SparseIntArray();
+        // No matter in which order they are inserted.
+        sparseArray.put(1, 2);
+        sparseArray.put(10, 20);
+        sparseArray.put(5, 40);
+        sparseArray.put(Integer.MAX_VALUE, Integer.MIN_VALUE);
+        // The keys are returned in order.
+        assertEquals(1, sparseArray.keyAt(0));
+        assertEquals(5, sparseArray.keyAt(1));
+        assertEquals(10, sparseArray.keyAt(2));
+        assertEquals(Integer.MAX_VALUE, sparseArray.keyAt(3));
+        // The values are returned in the order of the corresponding keys.
+        assertEquals(2, sparseArray.valueAt(0));
+        assertEquals(40, sparseArray.valueAt(1));
+        assertEquals(20, sparseArray.valueAt(2));
+        assertEquals(Integer.MIN_VALUE, sparseArray.valueAt(3));
+    }
+
 }
 
diff --git a/tests/tests/util/src/android/util/cts/SparseLongArrayTest.java b/tests/tests/util/src/android/util/cts/SparseLongArrayTest.java
new file mode 100644
index 0000000..c40691c
--- /dev/null
+++ b/tests/tests/util/src/android/util/cts/SparseLongArrayTest.java
@@ -0,0 +1,174 @@
+/*
+ * Copyright (C) 2013 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 android.util.cts;
+
+import android.util.SparseLongArray;
+
+import junit.framework.TestCase;
+
+/**
+ * Tests for {@link SparseLongArray}.
+ */
+public class SparseLongArrayTest extends TestCase {
+    private static final int[] KEYS = {12, 23, 4, 6, 8, 1, 3, -12, 0, -3, 11, 14, -23};
+    private static final long[] VALUES = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12};
+    private static final int LENGTH = VALUES.length;
+    private static final int NON_EXISTED_KEY = 123;
+    private static final long VALUE_FOR_NON_EXISTED_KEY = -1;
+
+    public void testSparseArrayWithDefaultCapacity() {
+        SparseLongArray sparseArray = new SparseLongArray();
+        assertEquals(0, sparseArray.size());
+
+        int length = VALUES.length;
+
+        for (int i = 0; i < length; i++) {
+            sparseArray.put(KEYS[i], VALUES[i]);
+            assertEquals(i + 1, sparseArray.size());
+        }
+
+        for (int i = 0; i < length; i++) {
+            assertEquals(i, sparseArray.get(KEYS[i]));
+        }
+
+        for (int i = 0; i < length; i++) {
+            assertEquals(sparseArray.indexOfValue(VALUES[i]), sparseArray.indexOfKey(KEYS[i]));
+        }
+
+        // for key already exist, old value will be replaced
+        int existKey = KEYS[0];
+        long oldValue = VALUES[0]; // 0
+        long newValue = 100;
+        assertEquals(oldValue, sparseArray.get(existKey));
+        assertEquals(LENGTH, sparseArray.size());
+        sparseArray.put(existKey, newValue);
+        assertEquals(newValue, sparseArray.get(existKey));
+        assertEquals(LENGTH, sparseArray.size());
+
+        assertEquals(VALUE_FOR_NON_EXISTED_KEY,
+                sparseArray.get(NON_EXISTED_KEY, VALUE_FOR_NON_EXISTED_KEY));
+        assertEquals(0L, sparseArray.get(NON_EXISTED_KEY)); // the default value is 0
+
+        int size = sparseArray.size();
+        sparseArray.append(NON_EXISTED_KEY, VALUE_FOR_NON_EXISTED_KEY);
+        assertEquals(size + 1, sparseArray.size());
+        assertEquals(size, sparseArray.indexOfKey(NON_EXISTED_KEY));
+        assertEquals(size, sparseArray.indexOfValue(VALUE_FOR_NON_EXISTED_KEY));
+        assertEquals(NON_EXISTED_KEY, sparseArray.keyAt(size));
+        assertEquals(VALUE_FOR_NON_EXISTED_KEY, sparseArray.valueAt(size));
+
+        size = sparseArray.size();
+        assertEquals(VALUES[1], sparseArray.get(KEYS[1]));
+        assertFalse(VALUE_FOR_NON_EXISTED_KEY == VALUES[1]);
+        sparseArray.delete(KEYS[1]);
+        assertEquals(VALUE_FOR_NON_EXISTED_KEY,
+                sparseArray.get(KEYS[1], VALUE_FOR_NON_EXISTED_KEY));
+        assertEquals(size - 1, sparseArray.size());
+
+        size = sparseArray.size();
+        assertEquals(VALUES[2], sparseArray.get(KEYS[2]));
+        assertFalse(VALUE_FOR_NON_EXISTED_KEY == VALUES[2]);
+        sparseArray.delete(KEYS[2]);
+        assertEquals(VALUE_FOR_NON_EXISTED_KEY,
+                sparseArray.get(KEYS[2], VALUE_FOR_NON_EXISTED_KEY));
+        assertEquals(size - 1, sparseArray.size());
+
+        sparseArray.clear();
+        assertEquals(0, sparseArray.size());
+    }
+
+    public void testSparseArrayWithSpecifiedCapacity() {
+        SparseLongArray sparseArray = new SparseLongArray(5);
+        assertEquals(0, sparseArray.size());
+
+        int length = VALUES.length;
+
+        for (int i = 0; i < length; i++) {
+            sparseArray.put(KEYS[i], VALUES[i]);
+            assertEquals(i + 1, sparseArray.size());
+        }
+
+        for (int i = 0; i < length; i++) {
+            assertEquals(VALUES[i], sparseArray.get(KEYS[i]));
+        }
+
+        for (int i = 0; i < length; i++) {
+            assertEquals(sparseArray.indexOfValue(VALUES[i]), sparseArray.indexOfKey(KEYS[i]));
+        }
+
+        // for key already exist, old value will be replaced
+        int existKey = KEYS[0];
+        long oldValue = VALUES[0]; // 0
+        long newValue = 100;
+        assertEquals(oldValue, sparseArray.get(existKey));
+        assertEquals(LENGTH, sparseArray.size());
+        sparseArray.put(existKey, newValue);
+        assertEquals(newValue, sparseArray.get(existKey));
+        assertEquals(LENGTH, sparseArray.size());
+
+        assertEquals(VALUE_FOR_NON_EXISTED_KEY,
+                     sparseArray.get(NON_EXISTED_KEY, VALUE_FOR_NON_EXISTED_KEY));
+        assertEquals(0L, sparseArray.get(NON_EXISTED_KEY)); // the default value is 0
+
+        int size = sparseArray.size();
+        sparseArray.append(NON_EXISTED_KEY, VALUE_FOR_NON_EXISTED_KEY);
+        assertEquals(size + 1, sparseArray.size());
+        assertEquals(size, sparseArray.indexOfKey(NON_EXISTED_KEY));
+        assertEquals(size, sparseArray.indexOfValue(VALUE_FOR_NON_EXISTED_KEY));
+        assertEquals(NON_EXISTED_KEY, sparseArray.keyAt(size));
+        assertEquals(VALUE_FOR_NON_EXISTED_KEY, sparseArray.valueAt(size));
+
+        size = sparseArray.size();
+        assertEquals(VALUES[1], sparseArray.get(KEYS[1]));
+        assertFalse(VALUE_FOR_NON_EXISTED_KEY == VALUES[1]);
+        sparseArray.delete(KEYS[1]);
+        assertEquals(VALUE_FOR_NON_EXISTED_KEY,
+                sparseArray.get(KEYS[1], VALUE_FOR_NON_EXISTED_KEY));
+        assertEquals(size - 1, sparseArray.size());
+
+        size = sparseArray.size();
+        assertEquals(VALUES[2], sparseArray.get(KEYS[2]));
+        assertFalse(VALUE_FOR_NON_EXISTED_KEY == VALUES[2]);
+        sparseArray.delete(KEYS[2]);
+        assertEquals(VALUE_FOR_NON_EXISTED_KEY,
+                sparseArray.get(KEYS[2], VALUE_FOR_NON_EXISTED_KEY));
+        assertEquals(size - 1, sparseArray.size());
+
+        sparseArray.clear();
+        assertEquals(0, sparseArray.size());
+    }
+
+    public void testIterationOrder() {
+        SparseLongArray sparseArray = new SparseLongArray();
+        // No matter in which order they are inserted.
+        sparseArray.put(1, 2L);
+        sparseArray.put(10, 20L);
+        sparseArray.put(5, 40L);
+        sparseArray.put(Integer.MAX_VALUE, Long.MIN_VALUE);
+        // The keys are returned in order.
+        assertEquals(1, sparseArray.keyAt(0));
+        assertEquals(5, sparseArray.keyAt(1));
+        assertEquals(10, sparseArray.keyAt(2));
+        assertEquals(Integer.MAX_VALUE, sparseArray.keyAt(3));
+        // The values are returned in the order of the corresponding keys.
+        assertEquals(2L, sparseArray.valueAt(0));
+        assertEquals(40L, sparseArray.valueAt(1));
+        assertEquals(20L, sparseArray.valueAt(2));
+        assertEquals(Long.MIN_VALUE, sparseArray.valueAt(3));
+    }
+
+}
diff --git a/tests/tests/view/src/android/view/cts/KeyEventTest.java b/tests/tests/view/src/android/view/cts/KeyEventTest.java
old mode 100755
new mode 100644
diff --git a/tests/tests/view/src/android/view/cts/ViewTest.java b/tests/tests/view/src/android/view/cts/ViewTest.java
index 27c98cc..95a365f 100644
--- a/tests/tests/view/src/android/view/cts/ViewTest.java
+++ b/tests/tests/view/src/android/view/cts/ViewTest.java
@@ -38,6 +38,7 @@
 import android.test.ActivityInstrumentationTestCase2;
 import android.test.TouchUtils;
 import android.test.UiThreadTest;
+import android.text.format.DateUtils;
 import android.util.AttributeSet;
 import android.util.Log;
 import android.util.SparseArray;
@@ -47,11 +48,13 @@
 import android.view.ContextMenu.ContextMenuInfo;
 import android.view.Display;
 import android.view.HapticFeedbackConstants;
+import android.view.InputDevice;
 import android.view.KeyEvent;
 import android.view.MotionEvent;
 import android.view.SoundEffectConstants;
 import android.view.TouchDelegate;
 import android.view.View;
+import android.view.MotionEvent.PointerProperties;
 import android.view.View.BaseSavedState;
 import android.view.View.OnClickListener;
 import android.view.View.OnCreateContextMenuListener;
@@ -90,7 +93,7 @@
 
     private Resources mResources;
     private MockViewParent mMockParent;
-    private Activity mActivity;
+    private ViewTestStubActivity mActivity;
 
     /** timeout delta when wait in case the system is sluggish */
     private static final long TIMEOUT_DELTA = 10000;
@@ -109,6 +112,7 @@
         }.run();
         mResources = mActivity.getResources();
         mMockParent = new MockViewParent(mActivity);
+        assertTrue(mActivity.waitForWindowFocus(5 * DateUtils.SECOND_IN_MILLIS));
     }
 
     public void testConstructor() {
@@ -1860,25 +1864,17 @@
         });
         getInstrumentation().waitForIdleSync();
 
-        int[] xy = new int[2];
-        view.getLocationOnScreen(xy);
-
-        final int viewWidth = view.getWidth();
-        final int viewHeight = view.getHeight();
-        final float x = xy[0] + viewWidth / 2.0f;
-        final float y = xy[1] + viewHeight / 2.0f;
-
         long downTime = SystemClock.uptimeMillis();
-        long eventTime = SystemClock.uptimeMillis();
-        MotionEvent event = MotionEvent.obtain(downTime, eventTime, MotionEvent.ACTION_DOWN,
-                x, y, 0);
+        long eventTime = downTime;
+        MotionEvent event = MotionEvent.obtain(downTime, eventTime, MotionEvent.ACTION_MOVE,
+                1, 2, 0);
         getInstrumentation().sendTrackballEventSync(event);
         getInstrumentation().waitForIdleSync();
         assertTrue(view.hasCalledOnTrackballEvent());
     }
 
     @UiThreadTest
-    public void testDispatchTrackballEvent() {
+    public void testDispatchTrackballMoveEvent() {
         ViewGroup viewGroup = (ViewGroup) mActivity.findViewById(R.id.viewlayout_root);
         MockView mockView1 = new MockView(mActivity);
         MockView mockView2 = new MockView(mActivity);
@@ -1889,8 +1885,8 @@
         mockView2.requestFocus();
 
         long downTime = SystemClock.uptimeMillis();
-        long eventTime = SystemClock.uptimeMillis();
-        MotionEvent event = MotionEvent.obtain(downTime, eventTime, MotionEvent.ACTION_DOWN,
+        long eventTime = downTime;
+        MotionEvent event = MotionEvent.obtain(downTime, eventTime, MotionEvent.ACTION_MOVE,
                 1, 2, 0);
         mockView1.dispatchTrackballEvent(event);
         // issue 1695243
@@ -1901,8 +1897,8 @@
         mockView1.reset();
         mockView2.reset();
         downTime = SystemClock.uptimeMillis();
-        eventTime = SystemClock.uptimeMillis();
-        event = MotionEvent.obtain(downTime, eventTime, MotionEvent.ACTION_DOWN, 1, 2, 0);
+        eventTime = downTime;
+        event = MotionEvent.obtain(downTime, eventTime, MotionEvent.ACTION_MOVE, 1, 2, 0);
         mockView2.dispatchTrackballEvent(event);
         assertFalse(mockView1.hasCalledOnTrackballEvent());
         assertTrue(mockView2.hasCalledOnTrackballEvent());
@@ -2750,6 +2746,136 @@
         assertFalse(view.isPaddingOffsetRequired());
     }
 
+    @UiThreadTest
+    public void testPadding() {
+        MockView view = (MockView) mActivity.findViewById(R.id.mock_view_padding_full);
+        Drawable background = view.getBackground();
+        Rect backgroundPadding = new Rect();
+        background.getPadding(backgroundPadding);
+
+        // There is some background with a non null padding
+        assertNotNull(background);
+        assertTrue(backgroundPadding.left != 0);
+        assertTrue(backgroundPadding.right != 0);
+        assertTrue(backgroundPadding.top != 0);
+        assertTrue(backgroundPadding.bottom != 0);
+
+        // The XML defines android:padding="0dp" and that should be the resulting padding
+        assertEquals(0, view.getPaddingLeft());
+        assertEquals(0, view.getPaddingTop());
+        assertEquals(0, view.getPaddingRight());
+        assertEquals(0, view.getPaddingBottom());
+
+        // LEFT case
+        view = (MockView) mActivity.findViewById(R.id.mock_view_padding_left);
+        background = view.getBackground();
+        backgroundPadding = new Rect();
+        background.getPadding(backgroundPadding);
+
+        // There is some background with a non null padding
+        assertNotNull(background);
+        assertTrue(backgroundPadding.left != 0);
+        assertTrue(backgroundPadding.right != 0);
+        assertTrue(backgroundPadding.top != 0);
+        assertTrue(backgroundPadding.bottom != 0);
+
+        // The XML defines android:paddingLeft="0dp" and that should be the resulting padding
+        assertEquals(0, view.getPaddingLeft());
+        assertEquals(backgroundPadding.top, view.getPaddingTop());
+        assertEquals(backgroundPadding.right, view.getPaddingRight());
+        assertEquals(backgroundPadding.bottom, view.getPaddingBottom());
+
+        // RIGHT case
+        view = (MockView) mActivity.findViewById(R.id.mock_view_padding_right);
+        background = view.getBackground();
+        backgroundPadding = new Rect();
+        background.getPadding(backgroundPadding);
+
+        // There is some background with a non null padding
+        assertNotNull(background);
+        assertTrue(backgroundPadding.left != 0);
+        assertTrue(backgroundPadding.right != 0);
+        assertTrue(backgroundPadding.top != 0);
+        assertTrue(backgroundPadding.bottom != 0);
+
+        // The XML defines android:paddingRight="0dp" and that should be the resulting padding
+        assertEquals(backgroundPadding.left, view.getPaddingLeft());
+        assertEquals(backgroundPadding.top, view.getPaddingTop());
+        assertEquals(0, view.getPaddingRight());
+        assertEquals(backgroundPadding.bottom, view.getPaddingBottom());
+
+        // TOP case
+        view = (MockView) mActivity.findViewById(R.id.mock_view_padding_top);
+        background = view.getBackground();
+        backgroundPadding = new Rect();
+        background.getPadding(backgroundPadding);
+
+        // There is some background with a non null padding
+        assertNotNull(background);
+        assertTrue(backgroundPadding.left != 0);
+        assertTrue(backgroundPadding.right != 0);
+        assertTrue(backgroundPadding.top != 0);
+        assertTrue(backgroundPadding.bottom != 0);
+
+        // The XML defines android:paddingTop="0dp" and that should be the resulting padding
+        assertEquals(backgroundPadding.left, view.getPaddingLeft());
+        assertEquals(0, view.getPaddingTop());
+        assertEquals(backgroundPadding.right, view.getPaddingRight());
+        assertEquals(backgroundPadding.bottom, view.getPaddingBottom());
+
+        // BOTTOM case
+        view = (MockView) mActivity.findViewById(R.id.mock_view_padding_bottom);
+        background = view.getBackground();
+        backgroundPadding = new Rect();
+        background.getPadding(backgroundPadding);
+
+        // There is some background with a non null padding
+        assertNotNull(background);
+        assertTrue(backgroundPadding.left != 0);
+        assertTrue(backgroundPadding.right != 0);
+        assertTrue(backgroundPadding.top != 0);
+        assertTrue(backgroundPadding.bottom != 0);
+
+        // The XML defines android:paddingBottom="0dp" and that should be the resulting padding
+        assertEquals(backgroundPadding.left, view.getPaddingLeft());
+        assertEquals(backgroundPadding.top, view.getPaddingTop());
+        assertEquals(backgroundPadding.right, view.getPaddingRight());
+        assertEquals(0, view.getPaddingBottom());
+
+        // Case for interleaved background/padding changes
+        view = (MockView) mActivity.findViewById(R.id.mock_view_padding_runtime_updated);
+        background = view.getBackground();
+        backgroundPadding = new Rect();
+        background.getPadding(backgroundPadding);
+
+        // There is some background with a null padding
+        assertNotNull(background);
+        assertTrue(backgroundPadding.left == 0);
+        assertTrue(backgroundPadding.right == 0);
+        assertTrue(backgroundPadding.top == 0);
+        assertTrue(backgroundPadding.bottom == 0);
+
+        final int paddingLeft = view.getPaddingLeft();
+        final int paddingRight = view.getPaddingRight();
+        final int paddingTop = view.getPaddingTop();
+        final int paddingBottom = view.getPaddingBottom();
+        assertEquals(8, paddingLeft);
+        assertEquals(0, paddingTop);
+        assertEquals(8, paddingRight);
+        assertEquals(0, paddingBottom);
+
+        // Manipulate background and padding
+        background.setState(view.getDrawableState());
+        background.jumpToCurrentState();
+        view.setBackground(background);
+        view.setPadding(paddingLeft, paddingTop, paddingRight, paddingBottom);
+
+        assertEquals(8, view.getPaddingLeft());
+        assertEquals(0, view.getPaddingTop());
+        assertEquals(8, view.getPaddingRight());
+        assertEquals(0, view.getPaddingBottom());
+    }
+
     public void testGetWindowVisibleDisplayFrame() {
         Rect outRect = new Rect();
         View view = new View(mActivity);
@@ -3161,6 +3287,57 @@
         });
     }
 
+    public void testFilterTouchesWhenObscured() throws Throwable {
+        OnTouchListenerImpl touchListener = new OnTouchListenerImpl();
+        View view = new View(mActivity);
+        view.setOnTouchListener(touchListener);
+
+        MotionEvent.PointerProperties[] props = new MotionEvent.PointerProperties[] {
+                new MotionEvent.PointerProperties()
+        };
+        MotionEvent.PointerCoords[] coords = new MotionEvent.PointerCoords[] {
+                new MotionEvent.PointerCoords()
+        };
+        MotionEvent obscuredTouch = MotionEvent.obtain(0, 0, MotionEvent.ACTION_DOWN,
+                1, props, coords, 0, 0, 0, 0, -1, 0, InputDevice.SOURCE_TOUCHSCREEN,
+                MotionEvent.FLAG_WINDOW_IS_OBSCURED);
+        MotionEvent unobscuredTouch = MotionEvent.obtain(0, 0, MotionEvent.ACTION_DOWN,
+                1, props, coords, 0, 0, 0, 0, -1, 0, InputDevice.SOURCE_TOUCHSCREEN,
+                0);
+
+        // Initially filter touches is false so all touches are dispatched.
+        assertFalse(view.getFilterTouchesWhenObscured());
+
+        view.dispatchTouchEvent(unobscuredTouch);
+        assertTrue(touchListener.hasOnTouch());
+        touchListener.reset();
+        view.dispatchTouchEvent(obscuredTouch);
+        assertTrue(touchListener.hasOnTouch());
+        touchListener.reset();
+
+        // Set filter touches to true so only unobscured touches are dispatched.
+        view.setFilterTouchesWhenObscured(true);
+        assertTrue(view.getFilterTouchesWhenObscured());
+
+        view.dispatchTouchEvent(unobscuredTouch);
+        assertTrue(touchListener.hasOnTouch());
+        touchListener.reset();
+        view.dispatchTouchEvent(obscuredTouch);
+        assertFalse(touchListener.hasOnTouch());
+        touchListener.reset();
+
+        // Set filter touches to false so all touches are dispatched.
+        view.setFilterTouchesWhenObscured(false);
+        assertFalse(view.getFilterTouchesWhenObscured());
+
+        view.dispatchTouchEvent(unobscuredTouch);
+        assertTrue(touchListener.hasOnTouch());
+        touchListener.reset();
+        view.dispatchTouchEvent(obscuredTouch);
+        assertTrue(touchListener.hasOnTouch());
+        touchListener.reset();
+    }
+
     private static class MockEditText extends EditText {
         private boolean mCalledCheckInputConnectionProxy = false;
         private boolean mCalledOnCreateInputConnection = false;
@@ -3393,7 +3570,8 @@
         }
 
         @Override
-        public void childAccessibilityStateChanged(View child) {
+        public void notifySubtreeAccessibilityStateChanged(View child,
+            View source, int changeType) {
 
         }
     }
diff --git a/tests/tests/view/src/android/view/cts/WindowTest.java b/tests/tests/view/src/android/view/cts/WindowTest.java
old mode 100755
new mode 100644
index 8f45f5c..7e147ab
--- a/tests/tests/view/src/android/view/cts/WindowTest.java
+++ b/tests/tests/view/src/android/view/cts/WindowTest.java
@@ -18,37 +18,52 @@
 
 import com.android.cts.stub.R;
 
-
 import android.app.Instrumentation;
+import android.app.Presentation;
 import android.content.Context;
 import android.content.res.Configuration;
 import android.content.res.TypedArray;
+import android.cts.util.PollingCheck;
 import android.graphics.Color;
 import android.graphics.PixelFormat;
 import android.graphics.drawable.ColorDrawable;
 import android.graphics.drawable.Drawable;
+import android.hardware.display.DisplayManager;
+import android.hardware.display.VirtualDisplay;
 import android.media.AudioManager;
 import android.net.Uri;
 import android.os.Bundle;
+import android.os.Handler;
+import android.os.SystemClock;
 import android.test.ActivityInstrumentationTestCase2;
 import android.util.DisplayMetrics;
+import android.util.Log;
 import android.view.ActionMode;
+import android.view.Display;
 import android.view.Gravity;
+import android.view.InputDevice;
 import android.view.InputQueue;
 import android.view.KeyEvent;
 import android.view.LayoutInflater;
 import android.view.Menu;
 import android.view.MenuItem;
 import android.view.MotionEvent;
+import android.view.Surface;
 import android.view.SurfaceHolder;
+import android.view.SurfaceView;
 import android.view.View;
 import android.view.ViewGroup;
 import android.view.Window;
 import android.view.WindowManager;
 import android.view.accessibility.AccessibilityEvent;
+import android.widget.Button;
 import android.widget.TextView;
 
+import java.util.concurrent.Semaphore;
+import java.util.concurrent.TimeUnit;
+
 public class WindowTest extends ActivityInstrumentationTestCase2<WindowStubActivity> {
+    static final String TAG = "WindowTest";
     private Window mWindow;
     private Context mContext;
     private Instrumentation mInstrumentation;
@@ -57,6 +72,10 @@
     private static final int VIEWGROUP_LAYOUT_HEIGHT = 100;
     private static final int VIEWGROUP_LAYOUT_WIDTH = 200;
 
+    // for testing setLocalFocus
+    private ProjectedPresentation mPresentation;
+    private VirtualDisplay mVirtualDisplay;
+
     public WindowTest() {
         super("com.android.cts.stub", WindowStubActivity.class);
     }
@@ -629,6 +648,189 @@
         // No way to test protected final method
     }
 
+    /**
+     * Test setLocalFocus together with injectInputEvent.
+     */
+    public void testSetLocalFocus() throws Throwable {
+        final SurfaceView surfaceView = new SurfaceView(mContext);
+        final Semaphore waitingSemaphore = new Semaphore(0);
+        surfaceView.getHolder().addCallback(new SurfaceHolder.Callback() {
+            @Override
+            public void surfaceCreated(SurfaceHolder holder) {
+            }
+
+            @Override
+            public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {
+                destroyPresentation();
+                createPresentation(holder.getSurface(), width, height);
+                waitingSemaphore.release();
+            }
+
+            @Override
+            public void surfaceDestroyed(SurfaceHolder holder) {
+                destroyPresentation();
+            }
+          });
+        runTestOnUiThread(new Runnable() {
+            public void run() {
+                mWindow.setContentView(surfaceView);
+            }
+        });
+        assertTrue(waitingSemaphore.tryAcquire(5, TimeUnit.SECONDS));
+        assertNotNull(mVirtualDisplay);
+        assertNotNull(mPresentation);
+        new PollingCheck() {
+            @Override
+            protected boolean check() {
+                return (mPresentation.button1 != null) && (mPresentation.button2 != null) &&
+                        (mPresentation.button3 != null) && mPresentation.ready;
+            }
+        }.run();
+        assertTrue(mPresentation.button1.isFocusable() && mPresentation.button2.isFocusable() &&
+                mPresentation.button3.isFocusable());
+        // currently it is only for debugging
+        View.OnFocusChangeListener listener = new View.OnFocusChangeListener() {
+            @Override
+            public void onFocusChange(View v, boolean hasFocus) {
+                Log.d(TAG, "view " + v + " focus " + hasFocus);
+            }
+        };
+
+        // check key event focus
+        mPresentation.button1.setOnFocusChangeListener(listener);
+        mPresentation.button2.setOnFocusChangeListener(listener);
+        mPresentation.button3.setOnFocusChangeListener(listener);
+        final Window presentationWindow = mPresentation.getWindow();
+        presentationWindow.setLocalFocus(true, false);
+        new PollingCheck() {
+            @Override
+            protected boolean check() {
+                return mPresentation.button1.hasWindowFocus();
+            }
+        }.run();
+        checkPresentationButtonFocus(true, false, false);
+        assertFalse(mPresentation.button1.isInTouchMode());
+        injectKeyEvent(presentationWindow, KeyEvent.KEYCODE_TAB);
+        checkPresentationButtonFocus(false, true, false);
+        injectKeyEvent(presentationWindow, KeyEvent.KEYCODE_TAB);
+        checkPresentationButtonFocus(false, false, true);
+
+        // check touch input injection
+        presentationWindow.setLocalFocus(true, true);
+        new PollingCheck() {
+            @Override
+            protected boolean check() {
+                return mPresentation.button1.isInTouchMode();
+            }
+        }.run();
+        View.OnClickListener clickListener = new View.OnClickListener() {
+            @Override
+            public void onClick(View v) {
+                Log.d(TAG, "onClick " + v);
+                if (v == mPresentation.button1) {
+                    waitingSemaphore.release();
+                }
+            }
+        };
+        mPresentation.button1.setOnClickListener(clickListener);
+        mPresentation.button2.setOnClickListener(clickListener);
+        mPresentation.button3.setOnClickListener(clickListener);
+        injectTouchEvent(presentationWindow, mPresentation.button1.getX() +
+                mPresentation.button1.getWidth() / 2,
+                mPresentation.button1.getY() + mPresentation.button1.getHeight() / 2);
+        assertTrue(waitingSemaphore.tryAcquire(5, TimeUnit.SECONDS));
+
+        destroyPresentation();
+    }
+
+    private void checkPresentationButtonFocus(final boolean button1Focused,
+            final boolean button2Focused, final boolean button3Focused) {
+        new PollingCheck() {
+            @Override
+            protected boolean check() {
+                return (mPresentation.button1.isFocused() == button1Focused) &&
+                        (mPresentation.button2.isFocused() == button2Focused) &&
+                        (mPresentation.button3.isFocused() == button3Focused);
+            }
+        }.run();
+    }
+
+    private void injectKeyEvent(Window window, int keyCode) {
+        KeyEvent downEvent = new KeyEvent(KeyEvent.ACTION_DOWN, keyCode);
+        window.injectInputEvent(downEvent);
+        KeyEvent upEvent = new KeyEvent(KeyEvent.ACTION_UP, keyCode);
+        window.injectInputEvent(upEvent);
+    }
+
+    private void injectTouchEvent(Window window, float x, float y) {
+        Log.d(TAG, "injectTouchEvent " + x + "," + y);
+        long downTime = SystemClock.uptimeMillis();
+        MotionEvent downEvent = MotionEvent.obtain(downTime, downTime, MotionEvent.ACTION_DOWN,
+                x, y, 0);
+        downEvent.setSource(InputDevice.SOURCE_TOUCHSCREEN);
+        window.injectInputEvent(downEvent);
+        long upTime = SystemClock.uptimeMillis();
+        MotionEvent upEvent = MotionEvent.obtain(downTime, upTime, MotionEvent.ACTION_UP,
+                x, y, 0);
+        upEvent.setSource(InputDevice.SOURCE_TOUCHSCREEN);
+        window.injectInputEvent(upEvent);
+    }
+
+    private void createPresentation(final Surface surface, final int width,
+            final int height) {
+        Context context = getInstrumentation().getTargetContext();
+        DisplayManager displayManager =
+                (DisplayManager) context.getSystemService(Context.DISPLAY_SERVICE);
+        mVirtualDisplay = displayManager.createVirtualDisplay("localFocusTest",
+                width, height, 300, surface, 0);
+        mPresentation = new ProjectedPresentation(
+                context, mVirtualDisplay.getDisplay());
+        mPresentation.show();
+    }
+
+    private void destroyPresentation() {
+        if (mPresentation != null) {
+            mPresentation.dismiss();
+        }
+        if (mVirtualDisplay != null) {
+            mVirtualDisplay.release();
+        }
+    }
+
+    private class ProjectedPresentation extends Presentation {
+        public Button button1 = null;
+        public Button button2 = null;
+        public Button button3 = null;
+        public volatile boolean ready = false;
+
+        public ProjectedPresentation(Context outerContext, Display display) {
+            super(outerContext, display);
+            getWindow().setType(WindowManager.LayoutParams.TYPE_PRIVATE_PRESENTATION);
+            getWindow().addFlags(WindowManager.LayoutParams.FLAG_LOCAL_FOCUS_MODE);
+        }
+
+        @Override
+        protected void onCreate(Bundle savedInstanceState) {
+            super.onCreate(savedInstanceState);
+            setContentView(R.layout.windowstub_presentation);
+            button1 = (Button) findViewById(R.id.presentation_button1);
+            button2 = (Button) findViewById(R.id.presentation_button2);
+            button3 = (Button) findViewById(R.id.presentation_button3);
+        }
+
+        @Override
+        public void show() {
+            super.show();
+            new Handler().post(new Runnable() {
+
+                @Override
+                public void run() {
+                    ready = true;
+                }
+            });
+        }
+    }
+
     public class MockWindow extends Window {
         public boolean mIsOnConfigurationChangedCalled = false;
         public boolean mIsOnActiveCalled = false;
diff --git a/tests/tests/view/src/android/view/inputmethod/cts/BaseInputConnectionTest.java b/tests/tests/view/src/android/view/inputmethod/cts/BaseInputConnectionTest.java
old mode 100755
new mode 100644
diff --git a/tests/tests/view/src/android/view/inputmethod/cts/InputMethodInfoTest.java b/tests/tests/view/src/android/view/inputmethod/cts/InputMethodInfoTest.java
index 722c1b3..9f92d23 100644
--- a/tests/tests/view/src/android/view/inputmethod/cts/InputMethodInfoTest.java
+++ b/tests/tests/view/src/android/view/inputmethod/cts/InputMethodInfoTest.java
@@ -17,20 +17,27 @@
 package android.view.inputmethod.cts;
 
 import android.content.ComponentName;
+import android.content.Context;
 import android.content.Intent;
+import android.content.pm.ApplicationInfo;
 import android.content.pm.PackageManager;
 import android.content.pm.ResolveInfo;
 import android.content.pm.ServiceInfo;
+import android.content.res.Resources;
 import android.os.Parcel;
 import android.test.AndroidTestCase;
 import android.util.Printer;
 import android.view.inputmethod.InputMethod;
 import android.view.inputmethod.InputMethodInfo;
+import android.view.inputmethod.InputMethodManager;
 import android.view.inputmethod.InputMethodSubtype;
 
 import org.xmlpull.v1.XmlPullParserException;
 
 import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.HashMap;
 import java.util.List;
 
 public class InputMethodInfoTest extends AndroidTestCase {
@@ -187,7 +194,46 @@
                 subtype.overridesImplicitlyEnabledSubtype());
     }
 
+    public void testInputMethodSubtypesOfSystemImes() {
+        final InputMethodManager imm = (InputMethodManager) mContext
+                .getSystemService(Context.INPUT_METHOD_SERVICE);
+        final List<InputMethodInfo> imis = imm.getInputMethodList();
+        final ArrayList<String> localeList = new ArrayList<String>(Arrays.asList(
+                Resources.getSystem().getAssets().getLocales()));
+        boolean foundEnabledSystemImeSubtypeWithValidLanguage = false;
+        for (InputMethodInfo imi : imis) {
+            if ((imi.getServiceInfo().applicationInfo.flags & ApplicationInfo.FLAG_SYSTEM) == 0) {
+                continue;
+            }
+            final int subtypeCount = imi.getSubtypeCount();
+            // System IME must have one subtype at least.
+            assertTrue(subtypeCount > 0);
+            if (foundEnabledSystemImeSubtypeWithValidLanguage) {
+                continue;
+            }
+            final List<InputMethodSubtype> enabledSubtypes =
+                    imm.getEnabledInputMethodSubtypeList(imi, true);
+            SUBTYPE_LOOP:
+            for (InputMethodSubtype subtype : enabledSubtypes) {
+                final String subtypeLocale = subtype.getLocale();
+                if (subtypeLocale.length() < 2) {
+                    continue;
+                }
+                // TODO: Detect language more strictly.
+                final String subtypeLanguage = subtypeLocale.substring(0, 2);
+                for (final String locale : localeList) {
+                    if (locale.startsWith(subtypeLanguage)) {
+                        foundEnabledSystemImeSubtypeWithValidLanguage = true;
+                        break SUBTYPE_LOOP;
+                    }
+                }
+            }
+        }
+        assertTrue(foundEnabledSystemImeSubtypeWithValidLanguage);
+    }
+
     class MockPrinter implements Printer {
+        @Override
         public void println(String x) {
         }
     }
diff --git a/tests/tests/view/src/android/view/inputmethod/cts/InputMethodManagerTest.java b/tests/tests/view/src/android/view/inputmethod/cts/InputMethodManagerTest.java
old mode 100755
new mode 100644
diff --git a/tests/tests/webkit/AndroidManifest.xml b/tests/tests/webkit/AndroidManifest.xml
index 493762e..f4424a8 100644
--- a/tests/tests/webkit/AndroidManifest.xml
+++ b/tests/tests/webkit/AndroidManifest.xml
@@ -22,6 +22,9 @@
     <uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS"/>
     <uses-permission android:name="android.permission.ACCESS_MOCK_LOCATION"/>
     <application>
+        <provider android:name="android.webkit.cts.MockContentProvider"
+                  android:exported="true"
+                  android:authorities="android.webkit.cts.MockContentProvider" />
         <uses-library android:name="android.test.runner" />
     </application>
 
diff --git a/tests/tests/webkit/src/android/webkit/cts/CookieManagerTest.java b/tests/tests/webkit/src/android/webkit/cts/CookieManagerTest.java
old mode 100755
new mode 100644
diff --git a/tests/tests/webkit/src/android/webkit/cts/GeolocationTest.java b/tests/tests/webkit/src/android/webkit/cts/GeolocationTest.java
index 820bc79..016d7c2 100644
--- a/tests/tests/webkit/src/android/webkit/cts/GeolocationTest.java
+++ b/tests/tests/webkit/src/android/webkit/cts/GeolocationTest.java
@@ -43,6 +43,7 @@
 import java.io.UnsupportedEncodingException;
 import java.util.concurrent.Callable;
 import java.util.Date;
+import java.util.List;
 import java.util.Random;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
@@ -64,7 +65,7 @@
 
     private static final String JS_INTERFACE_NAME = "Android";
     private static final int POLLING_TIMEOUT = 60 * 1000;
-    private static final String PROVIDER_NAME = LocationManager.NETWORK_PROVIDER;
+    private static final int LOCATION_THREAD_UPDATE_WAIT_MS = 250;
 
     // static HTML page always injected instead of the url loaded
     private static final String RAW_HTML =
@@ -102,6 +103,9 @@
     private JavascriptStatusReceiver mJavascriptStatusReceiver;
     private LocationManager mLocationManager;
     private WebViewOnUiThread mOnUiThread;
+    private Thread mLocationUpdateThread;
+    private volatile boolean mLocationUpdateThreadExitRequested;
+    private List<String> mProviders;
 
     public GeolocationTest() throws Exception {
         super("com.android.cts.stub", WebViewStubActivity.class);
@@ -151,36 +155,102 @@
         mLocationManager = (LocationManager)getActivity().getApplicationContext()
                 .getSystemService(Context.LOCATION_SERVICE);
         // Add a test provider before each test to inject a location
-        addTestProvider(PROVIDER_NAME);
+        mProviders = mLocationManager.getAllProviders();
+        for (String provider : mProviders) {
+            // Can't mock passive provider.
+            if (provider.equals(LocationManager.PASSIVE_PROVIDER)) {
+                mProviders.remove(provider);
+                break;
+            }
+        }
+        addTestProviders();
     }
 
     @Override
     protected void tearDown() throws Exception {
+        stopUpdateLocationThread();
         // Remove the test provider after each test
-        try {
-          mLocationManager.removeTestProvider(PROVIDER_NAME);
-        } catch (IllegalArgumentException e) {} // Not much to do about this
+        for (String provider : mProviders) {
+            try {
+                // Work around b/11446702 by clearing the test provider before removing it
+                mLocationManager.clearTestProviderEnabled(provider);
+                mLocationManager.removeTestProvider(provider);
+            } catch (IllegalArgumentException e) {} // Not much to do about this
+        }
         mOnUiThread.cleanUp();
         // This will null all member and static variables
         super.tearDown();
     }
 
+    private void addTestProviders() {
+        for (String providerName : mProviders) {
+            LocationProvider provider = mLocationManager.getProvider(providerName);
+            mLocationManager.addTestProvider(provider.getName(),
+                    provider.requiresNetwork(), //requiresNetwork,
+                    provider.requiresSatellite(), // requiresSatellite,
+                    provider.requiresCell(),  // requiresCell,
+                    provider.hasMonetaryCost(), // hasMonetaryCost,
+                    provider.supportsAltitude(), // supportsAltitude,
+                    provider.supportsSpeed(), // supportsSpeed,
+                    provider.supportsBearing(), // supportsBearing,
+                    provider.getPowerRequirement(), // powerRequirement
+                    provider.getAccuracy()); // accuracy
+            mLocationManager.setTestProviderEnabled(provider.getName(), true);
+        }
+    }
+
+    private void startUpdateLocationThread() {
+        // Only start the thread once
+        if (mLocationUpdateThread == null) {
+            mLocationUpdateThreadExitRequested = false;
+            mLocationUpdateThread = new Thread() {
+                @Override
+                public void run() {
+                    while (!mLocationUpdateThreadExitRequested) {
+                        try {
+                            Thread.sleep(LOCATION_THREAD_UPDATE_WAIT_MS);
+                        } catch(Exception e) {
+                            // Do nothing, an extra update is no problem
+                        }
+                        updateLocation();
+                    }
+                }
+            };
+            mLocationUpdateThread.start();
+        }
+    }
+
+    private void stopUpdateLocationThread() {
+        // Only stop the thread if it was started
+        if (mLocationUpdateThread != null) {
+            mLocationUpdateThreadExitRequested = true;
+            try {
+                mLocationUpdateThread.join();
+            } catch (InterruptedException e) {
+                // Do nothing
+            }
+            mLocationUpdateThread = null;
+        }
+    }
+
     // Update location with a fixed latitude and longtitude, sets the time to the current time.
-    private void updateLocation(final String providerName) {
-        Location location = new Location(providerName);
-        location.setLatitude(40);
-        location.setLongitude(40);
-        location.setAccuracy(1.0f);
-        location.setTime(java.lang.System.currentTimeMillis());
-        location.setElapsedRealtimeNanos(SystemClock.elapsedRealtimeNanos());
-        mLocationManager.setTestProviderLocation(providerName, location);
+    private void updateLocation() {
+        for (int i = 0; i < mProviders.size(); i++) {
+            Location location = new Location(mProviders.get(i));
+            location.setLatitude(40);
+            location.setLongitude(40);
+            location.setAccuracy(1.0f);
+            location.setTime(java.lang.System.currentTimeMillis());
+            location.setElapsedRealtimeNanos(SystemClock.elapsedRealtimeNanos());
+            mLocationManager.setTestProviderLocation(mProviders.get(i), location);
+        }
     }
 
     // Need to set the location just after loading the url. Setting it after each load instead of
     // using a maximum age.
     private void loadUrlAndUpdateLocation(String url) {
         mOnUiThread.loadUrlAndWaitForCompletion(url);
-        updateLocation(PROVIDER_NAME);
+        startUpdateLocationThread();
     }
 
     // WebChromeClient that accepts each location for one load. WebChromeClient is used in
@@ -206,20 +276,6 @@
         }
     }
 
-    private void addTestProvider(final String providerName) {
-        mLocationManager.addTestProvider(providerName,
-                true, //requiresNetwork,
-                false, // requiresSatellite,
-                true,  // requiresCell,
-                false, // hasMonetaryCost,
-                false, // supportsAltitude,
-                false, // supportsSpeed,
-                false, // supportsBearing,
-                Criteria.POWER_MEDIUM, // powerRequirement
-                Criteria.ACCURACY_FINE); // accuracy
-        mLocationManager.setTestProviderEnabled(providerName, true);
-    }
-
     // Test loading a page and accepting the domain for one load
     public void testSimpleGeolocationRequestAcceptOnce() throws Exception {
         final TestSimpleGeolocationRequestWebChromeClient chromeClientAcceptOnce =
@@ -430,7 +486,7 @@
         final TestSimpleGeolocationRequestWebChromeClient chromeClientRejectOnce =
                 new TestSimpleGeolocationRequestWebChromeClient(mOnUiThread, false, false);
         mOnUiThread.setWebChromeClient(chromeClientRejectOnce);
-        // Load url once, and the callback should accept the domain for all future loads
+        // Load url once, and the callback should reject it once
         mOnUiThread.loadUrlAndWaitForCompletion(URL_1);
         Callable<Boolean> receivedRequest = new Callable<Boolean>() {
             @Override
@@ -445,11 +501,12 @@
                 return mJavascriptStatusReceiver.mDenied;
             }
         };
-        PollingCheck.check("JS didn't get position", POLLING_TIMEOUT, locationDenied);
+        PollingCheck.check("JS got position", POLLING_TIMEOUT, locationDenied);
         // Same result should happen on next run
+        chromeClientRejectOnce.mReceivedRequest = false;
         mOnUiThread.loadUrlAndWaitForCompletion(URL_1);
         PollingCheck.check("Geolocation prompt not called", POLLING_TIMEOUT, receivedRequest);
-        PollingCheck.check("JS didn't get position", POLLING_TIMEOUT, locationDenied);
+        PollingCheck.check("JS got position", POLLING_TIMEOUT, locationDenied);
 
         // Try to reject forever
         final TestSimpleGeolocationRequestWebChromeClient chromeClientRejectAlways =
diff --git a/tests/tests/webkit/src/android/webkit/cts/MockContentProvider.java b/tests/tests/webkit/src/android/webkit/cts/MockContentProvider.java
new file mode 100644
index 0000000..b9f3891
--- /dev/null
+++ b/tests/tests/webkit/src/android/webkit/cts/MockContentProvider.java
@@ -0,0 +1,100 @@
+/*
+ * Copyright (C) 2013 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 android.webkit.cts;
+
+import android.content.ContentProvider;
+import android.content.ContentProvider.PipeDataWriter;
+import android.content.ContentValues;
+import android.content.res.AssetFileDescriptor;
+import android.database.Cursor;
+import android.net.Uri;
+import android.os.Bundle;
+import android.os.ParcelFileDescriptor;
+
+import java.io.FileNotFoundException;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.OutputStreamWriter;
+import java.io.PrintWriter;
+import java.io.UnsupportedEncodingException;
+
+public class MockContentProvider extends ContentProvider
+        implements PipeDataWriter<String> {
+
+    public static final String AUTHORITY = MockContentProvider.class.getName();
+
+    @Override
+    public boolean onCreate() {
+        return true;
+    }
+
+    @Override
+    public int delete(Uri uri, String selection, String[] selectionArgs) {
+        return 0;
+    }
+
+    @Override
+    public String getType(Uri uri) {
+        return "text/html";
+    }
+
+    @Override
+    public Uri insert(Uri uri, ContentValues initialValues) {
+        return null;
+    }
+
+    @Override
+    public Cursor query(Uri uri, String[] projection, String selection,
+            String[] selectionArgs, String sortOrder) {
+        return null;
+    }
+
+    @Override
+    public int update(Uri uri, ContentValues values, String selection,
+            String[] selectionArgs) {
+        return 0;
+    }
+
+    @Override
+    public AssetFileDescriptor openAssetFile(Uri uri, String mode)
+            throws FileNotFoundException {
+        return new AssetFileDescriptor(openPipeHelper(uri, "text/html", null,
+                "<html><title>" + uri.toString() + "</title></html>", this), 0,
+                AssetFileDescriptor.UNKNOWN_LENGTH);
+    }
+
+    @Override
+    public void writeDataToPipe(ParcelFileDescriptor output, Uri uri, String mimeType, Bundle opts,
+            String args) {
+        FileOutputStream outputStream = new FileOutputStream(output.getFileDescriptor());
+        PrintWriter printWriter = null;
+        try {
+            printWriter = new PrintWriter(new OutputStreamWriter(outputStream, "UTF-8"));
+            printWriter.print(args);
+        } catch (UnsupportedEncodingException e) {
+        } finally {
+            if (printWriter != null) {
+                printWriter.flush();
+            }
+            try {
+                outputStream.close();
+            } catch (IOException e) {
+            }
+        }
+    }
+}
+
diff --git a/tests/tests/webkit/src/android/webkit/cts/TestHtmlConstants.java b/tests/tests/webkit/src/android/webkit/cts/TestHtmlConstants.java
index 47ec475..11cc1a5 100644
--- a/tests/tests/webkit/src/android/webkit/cts/TestHtmlConstants.java
+++ b/tests/tests/webkit/src/android/webkit/cts/TestHtmlConstants.java
@@ -64,6 +64,7 @@
     public static final String IFRAME_ACCESS_URL = "webkit/test_iframeaccess.html";
     public static final String DATABASE_ACCESS_URL = "webkit/test_databaseaccess.html";
     public static final String STOP_LOADING_URL = "webkit/test_stop_loading.html";
+    public static final String BLANK_TAG_URL = "webkit/blank_tag.html";
 
     // Must match the title of the page at
     // android/frameworks/base/core/res/res/raw/loaderror.html
diff --git a/tests/tests/webkit/src/android/webkit/cts/UrlInterceptRegistryTest.java b/tests/tests/webkit/src/android/webkit/cts/UrlInterceptRegistryTest.java
deleted file mode 100644
index 005ede3..0000000
--- a/tests/tests/webkit/src/android/webkit/cts/UrlInterceptRegistryTest.java
+++ /dev/null
@@ -1,108 +0,0 @@
-/*
- * 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 android.webkit.cts;
-
-
-import android.test.AndroidTestCase;
-import android.webkit.PluginData;
-import android.webkit.UrlInterceptHandler;
-import android.webkit.UrlInterceptRegistry;
-import android.webkit.CacheManager.CacheResult;
-
-import java.util.Map;
-
-@SuppressWarnings("deprecation")
-public class UrlInterceptRegistryTest extends AndroidTestCase {
-    private int mService;
-
-    public void testRegisterHandler() {
-        UrlInterceptHandler handler1 = new MockUrlInterceptHandler();
-        UrlInterceptHandler handler2 = new MockUrlInterceptHandler();
-
-        assertFalse(UrlInterceptRegistry.unregisterHandler(handler1));
-
-        assertTrue(UrlInterceptRegistry.registerHandler(handler1));
-        assertFalse(UrlInterceptRegistry.registerHandler(handler1));
-        assertTrue(UrlInterceptRegistry.registerHandler(handler2));
-
-        assertTrue(UrlInterceptRegistry.unregisterHandler(handler1));
-        assertTrue(UrlInterceptRegistry.unregisterHandler(handler2));
-        assertFalse(UrlInterceptRegistry.unregisterHandler(handler1));
-    }
-
-    public void testGetSurrogate() {
-        mService = 0;
-
-        UrlInterceptHandler handler1 = new UrlInterceptHandler() {
-            public CacheResult service(String url, Map<String, String> headers) {
-                mService = 1;
-                return new CacheResult();
-            }
-
-            public PluginData getPluginData(String url,
-                    Map<String, String> headers) {
-                return null;
-            }
-        };
-        UrlInterceptHandler handler2 = new UrlInterceptHandler() {
-            public CacheResult service(String url, Map<String, String> headers) {
-                mService = 2;
-                return new CacheResult();
-            }
-
-            public PluginData getPluginData(String url,
-                    Map<String, String> headers) {
-                return null;
-            }
-        };
-        UrlInterceptHandler handler3 = new UrlInterceptHandler() {
-            public CacheResult service(String url, Map<String, String> headers) {
-                mService = 3;
-                return null;
-            }
-
-            public PluginData getPluginData(String url,
-                    Map<String, String> headers) {
-                return null;
-            }
-        };
-        UrlInterceptRegistry.registerHandler(handler1);
-        UrlInterceptRegistry.registerHandler(handler2);
-        UrlInterceptRegistry.registerHandler(handler3);
-
-        UrlInterceptRegistry.setUrlInterceptDisabled(true);
-        assertNull(UrlInterceptRegistry.getSurrogate(null, null));
-        assertNull(UrlInterceptRegistry.getPluginData(null, null));
-        // no handlers get called
-        assertEquals(mService, 0);
-
-        UrlInterceptRegistry.setUrlInterceptDisabled(false);
-        assertNotNull(UrlInterceptRegistry.getSurrogate(null, null));
-        // handler3 gets called first, but returns null, handler2 returns the surrogate
-        assertEquals(mService, 2);
-    }
-
-    private class MockUrlInterceptHandler implements UrlInterceptHandler {
-        public CacheResult service(String url, Map<String, String> headers) {
-            return null;
-        }
-
-        public PluginData getPluginData(String url, Map<String, String> headers) {
-            return null;
-        }
-    }
-}
diff --git a/tests/tests/webkit/src/android/webkit/cts/WebChromeClientTest.java b/tests/tests/webkit/src/android/webkit/cts/WebChromeClientTest.java
index 2a5044e..5c9c958 100644
--- a/tests/tests/webkit/src/android/webkit/cts/WebChromeClientTest.java
+++ b/tests/tests/webkit/src/android/webkit/cts/WebChromeClientTest.java
@@ -34,6 +34,8 @@
     private CtsTestServer mWebServer;
     private WebIconDatabase mIconDb;
     private WebViewOnUiThread mOnUiThread;
+    private boolean mBlockWindowCreationSync;
+    private boolean mBlockWindowCreationAsync;
 
     public WebChromeClientTest() {
         super(WebViewStubActivity.class);
@@ -122,7 +124,7 @@
         }.run();
     }
 
-    public void testWindows() throws Exception {
+    public void runWindowTest(boolean expectWindowClose) throws Exception {
         final MockWebChromeClient webChromeClient = new MockWebChromeClient();
         mOnUiThread.setWebChromeClient(webChromeClient);
 
@@ -144,12 +146,30 @@
                 return webChromeClient.hadOnCreateWindow();
             }
         }.run();
-        new PollingCheck(TEST_TIMEOUT) {
-            @Override
-            protected boolean check() {
-                return webChromeClient.hadOnCloseWindow();
-            }
-        }.run();
+
+        if (expectWindowClose) {
+            new PollingCheck(TEST_TIMEOUT) {
+                @Override
+                protected boolean check() {
+                    return webChromeClient.hadOnCloseWindow();
+                }
+            }.run();
+        } else {
+            assertFalse(webChromeClient.hadOnCloseWindow());
+        }
+    }
+    public void testWindows() throws Exception {
+        runWindowTest(true);
+    }
+
+    public void testBlockWindowsSync() throws Exception {
+        mBlockWindowCreationSync = true;
+        runWindowTest(false);
+    }
+
+    public void testBlockWindowsAsync() throws Exception {
+        mBlockWindowCreationAsync = true;
+        runWindowTest(false);
     }
 
     public void testOnJsBeforeUnload() throws Exception {
@@ -380,16 +400,23 @@
         @Override
         public boolean onCreateWindow(WebView view, boolean dialog, boolean userGesture,
                 Message resultMsg) {
-            WebView childView = new WebView(getActivity());
-            final WebSettings settings = childView.getSettings();
-            settings.setJavaScriptEnabled(true);
-            childView.setWebChromeClient(this);
-            WebView.WebViewTransport transport = (WebView.WebViewTransport) resultMsg.obj;
-            transport.setWebView(childView);
-            resultMsg.sendToTarget();
             mHadOnCreateWindow = true;
-            getActivity().addContentView(childView, new ViewGroup.LayoutParams(
-                    ViewGroup.LayoutParams.FILL_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT));
+            if (mBlockWindowCreationSync) {
+                return false;
+            }
+            WebView.WebViewTransport transport = (WebView.WebViewTransport) resultMsg.obj;
+            if (mBlockWindowCreationAsync) {
+                transport.setWebView(null);
+            } else {
+                WebView childView = new WebView(getActivity());
+                final WebSettings settings = childView.getSettings();
+                settings.setJavaScriptEnabled(true);
+                childView.setWebChromeClient(this);
+                transport.setWebView(childView);
+                getActivity().addContentView(childView, new ViewGroup.LayoutParams(
+                        ViewGroup.LayoutParams.FILL_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT));
+            }
+            resultMsg.sendToTarget();
             return true;
         }
 
diff --git a/tests/tests/webkit/src/android/webkit/cts/WebHistoryItemTest.java b/tests/tests/webkit/src/android/webkit/cts/WebHistoryItemTest.java
index 2eb81fc..468430f 100644
--- a/tests/tests/webkit/src/android/webkit/cts/WebHistoryItemTest.java
+++ b/tests/tests/webkit/src/android/webkit/cts/WebHistoryItemTest.java
@@ -16,16 +16,35 @@
 
 package android.webkit.cts;
 
+import android.cts.util.PollingCheck;
 import android.graphics.Bitmap;
 import android.test.ActivityInstrumentationTestCase2;
 import android.webkit.WebBackForwardList;
+import android.webkit.cts.WebViewOnUiThread.WaitForProgressClient;
 import android.webkit.WebHistoryItem;
-
+import android.webkit.WebIconDatabase;
+import android.webkit.WebView;
 
 public class WebHistoryItemTest extends ActivityInstrumentationTestCase2<WebViewStubActivity> {
     private final static long TEST_TIMEOUT = 10000;
     private CtsTestServer mWebServer;
     private WebViewOnUiThread mOnUiThread;
+    private WebIconDatabase mIconDb;
+
+    class WaitForIconClient extends WaitForProgressClient {
+        private boolean mReceivedIcon;
+
+        public WaitForIconClient(WebViewOnUiThread onUiThread) {
+            super(onUiThread);
+        }
+
+        @Override
+        public synchronized void onReceivedIcon(WebView webview, Bitmap icon) {
+            mReceivedIcon = true;
+        }
+
+        public synchronized boolean receivedIcon() { return mReceivedIcon; }
+    };
 
     public WebHistoryItemTest() {
         super("com.android.cts.stub", WebViewStubActivity.class);
@@ -43,14 +62,37 @@
         mOnUiThread.cleanUp();
         mWebServer.shutdown();
         super.tearDown();
+        if (mIconDb != null) {
+            mIconDb.removeAllIcons();
+            mIconDb.close();
+        }
     }
 
-    public void testWebHistoryItem() {
+    public void testWebHistoryItem() throws Throwable {
+        final WaitForIconClient waitForIconClient = new WaitForIconClient(mOnUiThread);
+        mOnUiThread.setWebChromeClient(waitForIconClient);
+        runTestOnUiThread(new Runnable() {
+            @Override
+            public void run() {
+                // getInstance must run on the UI thread
+                mIconDb = WebIconDatabase.getInstance();
+                String dbPath = getActivity().getFilesDir().toString() + "/icons";
+                mIconDb.open(dbPath);
+            }
+        });
+
         WebBackForwardList list = mOnUiThread.copyBackForwardList();
         assertEquals(0, list.getSize());
 
         String url = mWebServer.getAssetUrl(TestHtmlConstants.HELLO_WORLD_URL);
         mOnUiThread.loadUrlAndWaitForCompletion(url);
+        new PollingCheck() {
+            @Override
+            protected boolean check() {
+                return waitForIconClient.receivedIcon();
+            }
+        }.run();
+
         list = mOnUiThread.copyBackForwardList();
         assertEquals(1, list.getSize());
         WebHistoryItem item = list.getCurrentItem();
@@ -59,7 +101,7 @@
         assertEquals(url, item.getOriginalUrl());
         assertEquals(TestHtmlConstants.HELLO_WORLD_TITLE, item.getTitle());
         Bitmap icon = mOnUiThread.getFavicon();
-        assertEquals(icon, item.getFavicon());
+        assertTrue(icon.sameAs(item.getFavicon()));
 
         url = mWebServer.getAssetUrl(TestHtmlConstants.BR_TAG_URL);
         mOnUiThread.loadUrlAndWaitForCompletion(url);
diff --git a/tests/tests/webkit/src/android/webkit/cts/WebSettingsTest.java b/tests/tests/webkit/src/android/webkit/cts/WebSettingsTest.java
index b9c338b..6186a02 100644
--- a/tests/tests/webkit/src/android/webkit/cts/WebSettingsTest.java
+++ b/tests/tests/webkit/src/android/webkit/cts/WebSettingsTest.java
@@ -86,7 +86,8 @@
      * <p/>
      * Mozilla/5.0 (Linux;[ U;] Android <version>;[ <language>-<country>;]
      * [<devicemodel>;] Build/<buildID>) AppleWebKit/<major>.<minor> (KHTML, like Gecko)
-     * Version/<major>.<minor>[ Mobile] Safari/<major>.<minor>
+     * Version/<major>.<minor> Chrome/<major>.<minor>.<branch>.<build>[ Mobile]
+     * Safari/<major>.<minor>
      */
     public void testUserAgentString_default() {
         final String actualUserAgentString = mSettings.getUserAgentString();
@@ -94,7 +95,8 @@
         final String patternString =
                 "Mozilla/5\\.0 \\(Linux;( U;)? Android ([^;]+);( (\\w+)-(\\w+);)?" +
                 "\\s?(.*)\\sBuild/(.+)\\) AppleWebKit/(\\d+)\\.(\\d+) \\(KHTML, like Gecko\\) " +
-                "Version/\\d+\\.\\d+( Mobile)? Safari/(\\d+)\\.(\\d+)";
+                "Version/\\d+\\.\\d+ Chrome/\\d+\\.\\d+\\.\\d+\\.\\d+( Mobile)? " +
+                "Safari/(\\d+)\\.(\\d+)";
         // Groups used:
         //  1 - SSL encryption strength token " U;" (optional)
         //  2 - Android version
diff --git a/tests/tests/webkit/src/android/webkit/cts/WebViewClientTest.java b/tests/tests/webkit/src/android/webkit/cts/WebViewClientTest.java
index 3353d50..f4df82a 100644
--- a/tests/tests/webkit/src/android/webkit/cts/WebViewClientTest.java
+++ b/tests/tests/webkit/src/android/webkit/cts/WebViewClientTest.java
@@ -16,12 +16,16 @@
 
 package android.webkit.cts;
 
+import android.cts.util.EvaluateJsResultPollingCheck;
 import android.cts.util.PollingCheck;
 import android.graphics.Bitmap;
 import android.os.Message;
 import android.test.ActivityInstrumentationTestCase2;
 import android.view.KeyEvent;
+import android.view.ViewGroup;
 import android.webkit.HttpAuthHandler;
+import android.webkit.ValueCallback;
+import android.webkit.WebChromeClient;
 import android.webkit.WebSettings;
 import android.webkit.WebView;
 import android.webkit.WebViewClient;
@@ -30,6 +34,7 @@
 
 public class WebViewClientTest extends ActivityInstrumentationTestCase2<WebViewStubActivity> {
     private static final long TEST_TIMEOUT = 5000;
+    private static final String TEST_URL = "http://foo.com/";
 
     private WebViewOnUiThread mOnUiThread;
     private CtsTestServer mWebServer;
@@ -60,9 +65,70 @@
         super.tearDown();
     }
 
+    // Verify that the shouldoverrideurlloading is false by default
+    public void testShouldOverrideUrlLoadingDefault() {
+        final WebViewClient webViewClient = new WebViewClient();
+        assertFalse(webViewClient.shouldOverrideUrlLoading(mOnUiThread.getWebView(), null));
+    }
+
+    // Verify shouldoverrideurlloading called on top level navigation
     public void testShouldOverrideUrlLoading() {
         final MockWebViewClient webViewClient = new MockWebViewClient();
-        assertFalse(webViewClient.shouldOverrideUrlLoading(mOnUiThread.getWebView(), null));
+        mOnUiThread.setWebViewClient(webViewClient);
+        mOnUiThread.getSettings().setJavaScriptEnabled(true);
+        String data = "<html><body>" +
+                "<a href=\"" + TEST_URL + "\" id=\"link\">new page</a>" +
+                "</body></html>";
+        mOnUiThread.loadDataAndWaitForCompletion(data, "text/html", null);
+        clickOnLinkUsingJs("link");
+        assertEquals(TEST_URL, webViewClient.getLastShouldOverrideUrl());
+    }
+
+    // Verify shouldoverrideurlloading called on webview called via onCreateWindow
+    public void testShouldOverrideUrlLoadingOnCreateWindow() throws Exception {
+        mWebServer = new CtsTestServer(getActivity());
+        // WebViewClient for main window
+        final MockWebViewClient mainWebViewClient = new MockWebViewClient();
+        // WebViewClient for child window
+        final MockWebViewClient childWebViewClient = new MockWebViewClient();
+        mOnUiThread.setWebViewClient(mainWebViewClient);
+        mOnUiThread.getSettings().setJavaScriptEnabled(true);
+        mOnUiThread.getSettings().setJavaScriptCanOpenWindowsAutomatically(true);
+        mOnUiThread.getSettings().setSupportMultipleWindows(true);
+        mOnUiThread.setWebChromeClient(new WebChromeClient() {
+            @Override
+            public boolean onCreateWindow(
+                WebView view, boolean isDialog, boolean isUserGesture, Message resultMsg) {
+                WebView.WebViewTransport transport = (WebView.WebViewTransport) resultMsg.obj;
+                WebView childWebView = new WebView(view.getContext());
+                childWebView.setWebViewClient(childWebViewClient);
+                childWebView.getSettings().setJavaScriptEnabled(true);
+                transport.setWebView(childWebView);
+                getActivity().addContentView(childWebView, new ViewGroup.LayoutParams(
+                            ViewGroup.LayoutParams.FILL_PARENT,
+                            ViewGroup.LayoutParams.WRAP_CONTENT));
+                resultMsg.sendToTarget();
+                return true;
+            }
+        });
+        mOnUiThread.loadUrl(mWebServer.getAssetUrl(TestHtmlConstants.BLANK_TAG_URL));
+
+        new PollingCheck(TEST_TIMEOUT) {
+            @Override
+            protected boolean check() {
+                return childWebViewClient.hasOnPageFinishedCalled();
+            }
+        }.run();
+        assertEquals(mWebServer.getAssetUrl(TestHtmlConstants.HELLO_WORLD_URL),
+                childWebViewClient.getLastShouldOverrideUrl());
+    }
+
+    private void clickOnLinkUsingJs(final String linkId) {
+        EvaluateJsResultPollingCheck jsResult = new EvaluateJsResultPollingCheck("null");
+        mOnUiThread.evaluateJavascript(
+                "document.getElementById('" + linkId + "').click();" +
+                "console.log('element with id [" + linkId + "] clicked');", jsResult);
+        jsResult.run();
     }
 
     public void testLoadPage() throws Exception {
@@ -192,11 +258,26 @@
     public void testOnScaleChanged() throws Throwable {
         final MockWebViewClient webViewClient = new MockWebViewClient();
         mOnUiThread.setWebViewClient(webViewClient);
+        mWebServer = new CtsTestServer(getActivity());
 
         assertFalse(webViewClient.hasOnScaleChangedCalled());
-        mOnUiThread.zoomIn();
-        getInstrumentation().waitForIdleSync();
-        assertTrue(webViewClient.hasOnScaleChangedCalled());
+        String url1 = mWebServer.getAssetUrl(TestHtmlConstants.HELLO_WORLD_URL);
+        mOnUiThread.loadUrlAndWaitForCompletion(url1);
+
+        new PollingCheck(TEST_TIMEOUT) {
+            @Override
+            protected boolean check() {
+                return mOnUiThread.canZoomIn();
+            }
+        }.run();
+
+        assertTrue(mOnUiThread.zoomIn());
+        new PollingCheck(TEST_TIMEOUT) {
+            @Override
+            protected boolean check() {
+                return webViewClient.hasOnScaleChangedCalled();
+            }
+        }.run();
     }
 
     private void requireLoadedPage() throws Throwable {
@@ -213,6 +294,7 @@
         private boolean mOnReceivedHttpAuthRequestCalled;
         private boolean mOnUnhandledKeyEventCalled;
         private boolean mOnScaleChangedCalled;
+        private String mLastShouldOverrideUrl;
 
         public MockWebViewClient() {
             super(mOnUiThread);
@@ -254,6 +336,10 @@
             return mOnScaleChangedCalled;
         }
 
+        public String getLastShouldOverrideUrl() {
+            return mLastShouldOverrideUrl;
+        }
+
         @Override
         public void onPageStarted(WebView view, String url, Bitmap favicon) {
             super.onPageStarted(view, url, favicon);
@@ -312,5 +398,11 @@
             super.onScaleChanged(view, oldScale, newScale);
             mOnScaleChangedCalled = true;
         }
+
+        @Override
+        public boolean shouldOverrideUrlLoading(WebView view, String url) {
+            mLastShouldOverrideUrl = url;
+            return false;
+        }
     }
 }
diff --git a/tests/tests/webkit/src/android/webkit/cts/WebViewStartupTest.java b/tests/tests/webkit/src/android/webkit/cts/WebViewStartupTest.java
new file mode 100644
index 0000000..a7ee974
--- /dev/null
+++ b/tests/tests/webkit/src/android/webkit/cts/WebViewStartupTest.java
@@ -0,0 +1,83 @@
+/*
+ * Copyright (C) 2010 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 android.webkit.cts;
+
+
+import android.content.Context;
+import android.cts.util.PollingCheck;
+import android.test.ActivityInstrumentationTestCase2;
+import android.test.UiThreadTest;
+import android.util.Log;
+import android.webkit.CookieManager;
+import android.webkit.CookieSyncManager;
+import android.webkit.WebView;
+
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+public class WebViewStartupTest
+        extends ActivityInstrumentationTestCase2<WebViewStartupStubActivity> {
+
+    private static final int TEST_TIMEOUT = 5000;
+    private static final String TAG = "WebViewStartupTest";
+
+    private WebViewStartupStubActivity mActivity;
+
+    public WebViewStartupTest() {
+        super("com.android.cts.stub", WebViewStartupStubActivity.class);
+    }
+
+    @Override
+    public void setUp() throws Exception {
+        mActivity = getActivity();
+    }
+
+    @UiThreadTest
+    public void testCookieManagerBlockingUiThread() throws Throwable {
+        CtsTestServer server = new CtsTestServer(mActivity, false);
+        final String url = server.getCookieUrl("death.html");
+
+        Thread background = new Thread(new Runnable() {
+            @Override
+            public void run() {
+                CookieSyncManager csm = CookieSyncManager.createInstance(mActivity);
+                CookieManager cookieManager = CookieManager.getInstance();
+
+                cookieManager.removeAllCookie();
+                cookieManager.setAcceptCookie(true);
+                cookieManager.setCookie(url, "count=41");
+                Log.i(TAG, "done setting cookie before creating webview");
+            }
+        });
+        background.start();
+        background.join();
+
+        // Now create WebView and test that setting the cookie beforehand really worked.
+        mActivity.createAndAttachWebView();
+        WebViewOnUiThread onUiThread = new WebViewOnUiThread(this, mActivity.getWebView());
+        onUiThread.loadUrlAndWaitForCompletion(url);
+        assertEquals("1|count=41", onUiThread.getTitle()); // outgoing cookie
+        CookieManager cookieManager = CookieManager.getInstance();
+        String cookie = cookieManager.getCookie(url);
+        assertNotNull(cookie);
+        final Pattern pat = Pattern.compile("count=(\\d+)");
+        Matcher m = pat.matcher(cookie);
+        assertTrue(m.matches());
+        assertEquals("42", m.group(1)); // value got incremented
+    }
+
+}
diff --git a/tests/tests/webkit/src/android/webkit/cts/WebViewTest.java b/tests/tests/webkit/src/android/webkit/cts/WebViewTest.java
old mode 100755
new mode 100644
index 7f6d8e7..3a08a65
--- a/tests/tests/webkit/src/android/webkit/cts/WebViewTest.java
+++ b/tests/tests/webkit/src/android/webkit/cts/WebViewTest.java
@@ -16,8 +16,10 @@
 
 package android.webkit.cts;
 
+import android.content.ContentResolver;
 import android.content.Context;
 import android.content.res.AssetManager;
+import android.cts.util.EvaluateJsResultPollingCheck;
 import android.cts.util.PollingCheck;
 import android.graphics.Bitmap;
 import android.graphics.Bitmap.Config;
@@ -30,12 +32,20 @@
 import android.net.http.SslCertificate;
 import android.net.http.SslError;
 import android.os.Bundle;
+import android.os.CancellationSignal;
 import android.os.Handler;
 import android.os.Looper;
 import android.os.Message;
+import android.os.ParcelFileDescriptor;
 import android.os.StrictMode;
 import android.os.StrictMode.ThreadPolicy;
 import android.os.SystemClock;
+import android.print.PageRange;
+import android.print.PrintAttributes;
+import android.print.PrintDocumentAdapter;
+import android.print.PrintDocumentAdapter.LayoutResultCallback;
+import android.print.PrintDocumentAdapter.WriteResultCallback;
+import android.print.PrintDocumentInfo;
 import android.test.ActivityInstrumentationTestCase2;
 import android.test.UiThreadTest;
 import android.util.AttributeSet;
@@ -43,10 +53,13 @@
 import android.view.KeyEvent;
 import android.view.MotionEvent;
 import android.view.View;
+import android.view.ViewGroup;
 import android.webkit.ConsoleMessage;
+import android.webkit.CookieSyncManager;
 import android.webkit.DownloadListener;
 import android.webkit.JavascriptInterface;
 import android.webkit.SslErrorHandler;
+import android.webkit.ValueCallback;
 import android.webkit.WebBackForwardList;
 import android.webkit.WebChromeClient;
 import android.webkit.WebIconDatabase;
@@ -60,17 +73,30 @@
 import android.webkit.cts.WebViewOnUiThread.WaitForProgressClient;
 import android.widget.LinearLayout;
 
-
 import junit.framework.Assert;
 
 import java.io.File;
 import java.io.FileInputStream;
+import java.io.IOException;
+import java.util.Collections;
 import java.util.Date;
+import java.util.concurrent.atomic.AtomicReference;
+import java.util.concurrent.Callable;
+import java.util.concurrent.FutureTask;
+import java.util.concurrent.TimeUnit;
+import java.util.HashMap;
+
+import org.apache.http.Header;
+import org.apache.http.HttpRequest;
 
 public class WebViewTest extends ActivityInstrumentationTestCase2<WebViewStubActivity> {
     private static final String LOGTAG = "WebViewTest";
     private static final int INITIAL_PROGRESS = 100;
     private static long TEST_TIMEOUT = 20000L;
+    private static final String X_REQUESTED_WITH = "X-Requested-With";
+    private static final String PRINTER_TEST_FILE = "print.pdf";
+    private static final String PDF_PREAMBLE = "%PDF-1";
+
     /**
      * This is the minimum number of milliseconds to wait for scrolling to
      * start. If no scrolling has started before this timeout then it is
@@ -151,6 +177,12 @@
     }
 
     @UiThreadTest
+    public void testCreatingWebViewCreatesCookieSyncManager() throws Exception {
+        new WebView(getActivity());
+        assertNotNull(CookieSyncManager.getInstance());
+    }
+
+    @UiThreadTest
     public void testFindAddress() {
         /*
          * Info about USPS
@@ -188,65 +220,88 @@
         mWebView.invokeZoomPicker();
     }
 
-    @UiThreadTest
-    public void testZoom() {
-        WebSettings settings = mWebView.getSettings();
+    public void testZoom() throws Throwable {
+        // Pinch zoom is not supported in wrap_content layouts.
+        mOnUiThread.setLayoutHeightToMatchParent();
+
+        final ScaleChangedWebViewClient webViewClient = new ScaleChangedWebViewClient();
+        mOnUiThread.setWebViewClient(webViewClient);
+
+        mWebServer = new CtsTestServer(getActivity());
+        mOnUiThread.loadUrlAndWaitForCompletion(
+                mWebServer.getAssetUrl(TestHtmlConstants.HELLO_WORLD_URL));
+        pollingCheckForCanZoomIn();
+
+        WebSettings settings = mOnUiThread.getSettings();
         settings.setSupportZoom(false);
         assertFalse(settings.supportZoom());
-        float currScale = mWebView.getScale();
+        float currScale = mOnUiThread.getScale();
         float previousScale = currScale;
 
         // can zoom in or out although zoom support is disabled in web settings
-        assertTrue(mWebView.zoomIn());
-        currScale = mWebView.getScale();
+        assertTrue(mOnUiThread.zoomIn());
+        webViewClient.waitForScaleChanged();
+
+        currScale = mOnUiThread.getScale();
         assertTrue(currScale > previousScale);
 
-        // zoom in
-        assertTrue(mWebView.zoomOut());
+        assertTrue(mOnUiThread.zoomOut());
         previousScale = currScale;
-        currScale = mWebView.getScale();
+        webViewClient.waitForScaleChanged();
+
+        currScale = mOnUiThread.getScale();
         assertTrue(currScale < previousScale);
 
         // enable zoom support
         settings.setSupportZoom(true);
         assertTrue(settings.supportZoom());
-        currScale = mWebView.getScale();
+        previousScale = mOnUiThread.getScale();
 
-        assertTrue(mWebView.zoomIn());
-        previousScale = currScale;
-        currScale = mWebView.getScale();
+        assertTrue(mOnUiThread.zoomIn());
+        webViewClient.waitForScaleChanged();
+
+        currScale = mOnUiThread.getScale();
         assertTrue(currScale > previousScale);
 
         // zoom in until it reaches maximum scale
-        while (currScale > previousScale) {
-            mWebView.zoomIn();
+        while (mOnUiThread.zoomIn()) {
             previousScale = currScale;
-            currScale = mWebView.getScale();
+            webViewClient.waitForScaleChanged();
+            currScale = mOnUiThread.getScale();
+            assertTrue(currScale > previousScale);
         }
 
-        // can not zoom in further
-        assertFalse(mWebView.zoomIn());
         previousScale = currScale;
-        currScale = mWebView.getScale();
+        // can not zoom in further
+        assertFalse(mOnUiThread.zoomIn());
+        // We sleep to assert to the best of our ability
+        // that a scale change does *not* happen.
+        Thread.sleep(500);
+        currScale = mOnUiThread.getScale();
         assertEquals(currScale, previousScale);
 
         // zoom out
-        assertTrue(mWebView.zoomOut());
+        assertTrue(mOnUiThread.zoomOut());
         previousScale = currScale;
-        currScale = mWebView.getScale();
+        webViewClient.waitForScaleChanged();
+        currScale = mOnUiThread.getScale();
         assertTrue(currScale < previousScale);
 
         // zoom out until it reaches minimum scale
-        while (currScale < previousScale) {
-            mWebView.zoomOut();
+        while (mOnUiThread.zoomOut()) {
             previousScale = currScale;
-            currScale = mWebView.getScale();
+            webViewClient.waitForScaleChanged();
+            currScale = mOnUiThread.getScale();
+            assertTrue(currScale < previousScale);
         }
 
-        // can not zoom out further
-        assertFalse(mWebView.zoomOut());
         previousScale = currScale;
-        currScale = mWebView.getScale();
+        assertFalse(mOnUiThread.zoomOut());
+
+        // We sleep to assert to the best of our ability
+        // that a scale change does *not* happen.
+        Thread.sleep(500);
+        currScale = mOnUiThread.getScale();
         assertEquals(currScale, previousScale);
     }
 
@@ -295,6 +350,64 @@
         assertEquals(url, mWebView.getUrl());
         assertEquals(url, mWebView.getOriginalUrl());
         assertEquals(TestHtmlConstants.HELLO_WORLD_TITLE, mWebView.getTitle());
+
+        // verify that the request also includes X-Requested-With header
+        HttpRequest request = mWebServer.getLastRequest(TestHtmlConstants.HELLO_WORLD_URL);
+        Header[] matchingHeaders = request.getHeaders(X_REQUESTED_WITH);
+        assertEquals(1, matchingHeaders.length);
+
+        Header header = matchingHeaders[0];
+        assertEquals(mWebView.getContext().getApplicationInfo().packageName, header.getValue());
+    }
+
+    @UiThreadTest
+    public void testLoadUrlDoesNotStripParamsWhenLoadingContentUrls() throws Exception {
+        Uri.Builder uriBuilder = new Uri.Builder().scheme(
+                ContentResolver.SCHEME_CONTENT).authority(MockContentProvider.AUTHORITY);
+        uriBuilder.appendPath("foo.html").appendQueryParameter("param","bar");
+        String url = uriBuilder.build().toString();
+        mOnUiThread.loadUrlAndWaitForCompletion(url);
+        // verify the parameter is not stripped.
+        Uri uri = Uri.parse(mWebView.getTitle());
+        assertEquals("bar", uri.getQueryParameter("param"));
+    }
+
+    @UiThreadTest
+    public void testAppInjectedXRequestedWithHeaderIsNotOverwritten() throws Exception {
+        startWebServer(false);
+        String url = mWebServer.getAssetUrl(TestHtmlConstants.HELLO_WORLD_URL);
+        HashMap<String, String> map = new HashMap<String, String>();
+        final String requester = "foo";
+        map.put(X_REQUESTED_WITH, requester);
+        mOnUiThread.loadUrlAndWaitForCompletion(url, map);
+
+        // verify that the request also includes X-Requested-With header
+        // but is not overwritten by the webview
+        HttpRequest request = mWebServer.getLastRequest(TestHtmlConstants.HELLO_WORLD_URL);
+        Header[] matchingHeaders = request.getHeaders(X_REQUESTED_WITH);
+        assertEquals(1, matchingHeaders.length);
+
+        Header header = matchingHeaders[0];
+        assertEquals(requester, header.getValue());
+    }
+
+    @UiThreadTest
+    public void testAppCanInjectHeadersViaImmutableMap() throws Exception {
+        startWebServer(false);
+        String url = mWebServer.getAssetUrl(TestHtmlConstants.HELLO_WORLD_URL);
+        HashMap<String, String> map = new HashMap<String, String>();
+        final String requester = "foo";
+        map.put(X_REQUESTED_WITH, requester);
+        mOnUiThread.loadUrlAndWaitForCompletion(url, Collections.unmodifiableMap(map));
+
+        // verify that the request also includes X-Requested-With header
+        // but is not overwritten by the webview
+        HttpRequest request = mWebServer.getLastRequest(TestHtmlConstants.HELLO_WORLD_URL);
+        Header[] matchingHeaders = request.getHeaders(X_REQUESTED_WITH);
+        assertEquals(1, matchingHeaders.length);
+
+        Header header = matchingHeaders[0];
+        assertEquals(requester, header.getValue());
     }
 
     @SuppressWarnings("deprecation")
@@ -553,51 +666,88 @@
         assertEquals("removedObject", resultObject.getResult());
     }
 
+    public void testJavascriptInterfaceCustomPropertiesClearedOnReload() throws Exception {
+        mOnUiThread.getSettings().setJavaScriptEnabled(true);
+
+        class DummyJavaScriptInterface {
+        }
+        final DummyJavaScriptInterface obj = new DummyJavaScriptInterface();
+        mOnUiThread.addJavascriptInterface(obj, "dummy");
+        mOnUiThread.loadUrlAndWaitForCompletion("about:blank");
+
+        EvaluateJsResultPollingCheck jsResult;
+        jsResult = new EvaluateJsResultPollingCheck("42");
+        mOnUiThread.evaluateJavascript("dummy.custom_property = 42", jsResult);
+        jsResult.run();
+        jsResult = new EvaluateJsResultPollingCheck("true");
+        mOnUiThread.evaluateJavascript("'custom_property' in dummy", jsResult);
+        jsResult.run();
+
+        mOnUiThread.reload();
+
+        jsResult = new EvaluateJsResultPollingCheck("false");
+        mOnUiThread.evaluateJavascript("'custom_property' in dummy", jsResult);
+        jsResult.run();
+    }
+
+    private final class TestPictureListener implements PictureListener {
+        public int callCount;
+
+        @Override
+        public void onNewPicture(WebView view, Picture picture) {
+            // Need to inform the listener tracking new picture
+            // for the "page loaded" knowledge since it has been replaced.
+            mOnUiThread.onNewPicture();
+            this.callCount += 1;
+        }
+    }
+
+    private Picture waitForPictureToHaveColor(int color,
+            final TestPictureListener listener) throws Throwable {
+        final int MAX_ON_NEW_PICTURE_ITERATIONS = 5;
+        final AtomicReference<Picture> pictureRef = new AtomicReference<Picture>();
+        for (int i = 0; i < MAX_ON_NEW_PICTURE_ITERATIONS; i++) {
+            final int oldCallCount = listener.callCount;
+            runTestOnUiThread(new Runnable() {
+                @Override
+                public void run() {
+                    pictureRef.set(mWebView.capturePicture());
+                }
+            });
+            if (isPictureFilledWithColor(pictureRef.get(), color))
+                break;
+            new PollingCheck(TEST_TIMEOUT) {
+                @Override
+                protected boolean check() {
+                    return listener.callCount > oldCallCount;
+                }
+            }.run();
+        }
+        return pictureRef.get();
+    }
+
     public void testCapturePicture() throws Exception, Throwable {
+        final TestPictureListener listener = new TestPictureListener();
+
         startWebServer(false);
         final String url = mWebServer.getAssetUrl(TestHtmlConstants.BLANK_PAGE_URL);
-        // showing the blank page will make the picture filled with background color
+        mOnUiThread.setPictureListener(listener);
+        // Showing the blank page will fill the picture with the background color.
         mOnUiThread.loadUrlAndWaitForCompletion(url);
-        getInstrumentation().waitForIdleSync();
-
-        class PictureRunnable implements Runnable {
-            private Picture mPicture;
-            @Override
-            public void run() {
-                mPicture = mWebView.capturePicture();
-                Bitmap b = Bitmap.createBitmap(mPicture.getWidth(), mPicture.getHeight(),
-                        Config.ARGB_8888);
-                mPicture.draw(new Canvas(b));
-                // default color is white
-                assertBitmapFillWithColor(b, Color.WHITE);
-
-                mWebView.setBackgroundColor(Color.CYAN);
-                mOnUiThread.reloadAndWaitForCompletion();
-            }
-            public Picture getPicture() {
-                return mPicture;
-            }
-        }
-        PictureRunnable runnable = new PictureRunnable();
-        runTestOnUiThread(runnable);
-        getInstrumentation().waitForIdleSync();
-
-        // the content of the picture will not be updated automatically
-        Picture picture = runnable.getPicture();
-        Bitmap b = Bitmap.createBitmap(picture.getWidth(), picture.getHeight(), Config.ARGB_8888);
-        picture.draw(new Canvas(b));
-        assertBitmapFillWithColor(b, Color.WHITE);
+        // The default background color is white.
+        Picture oldPicture = waitForPictureToHaveColor(Color.WHITE, listener);
 
         runTestOnUiThread(new Runnable() {
             @Override
             public void run() {
-                // update the content
-                Picture p = mWebView.capturePicture();
-                Bitmap b = Bitmap.createBitmap(p.getWidth(), p.getHeight(), Config.ARGB_8888);
-                p.draw(new Canvas(b));
-                assertBitmapFillWithColor(b, Color.CYAN);
+                mWebView.setBackgroundColor(Color.CYAN);
             }
         });
+        mOnUiThread.reloadAndWaitForCompletion();
+        waitForPictureToHaveColor(Color.CYAN, listener);
+
+        // The content of the previously captured picture will not be updated automatically.
+        assertTrue(isPictureFilledWithColor(oldPicture, Color.WHITE));
     }
 
     public void testSetPictureListener() throws Exception, Throwable {
@@ -752,6 +902,7 @@
         // Verify that the resource request makes it to the server.
         assertTrue(mWebServer.wasResourceRequested(imgUrl));
         assertEquals(historyUrl, mWebView.getUrl());
+        assertEquals(historyUrl, mWebView.getOriginalUrl());
 
         // Check that reported URL is "about:blank" when supplied history URL
         // is null.
@@ -761,6 +912,7 @@
                 "text/html", "UTF-8", null);
         assertTrue(mWebServer.wasResourceRequested(imgUrl));
         assertEquals("about:blank", mWebView.getUrl());
+        assertEquals("about:blank", mWebView.getOriginalUrl());
 
         // Test that JavaScript can access content from the same origin as the base URL.
         mWebView.getSettings().setJavaScriptEnabled(true);
@@ -779,16 +931,67 @@
                 historyUrl);
         assertTrue("URL: " + mWebView.getUrl(), mWebView.getUrl().indexOf("data:text/html") == 0);
         assertTrue("URL: " + mWebView.getUrl(), mWebView.getUrl().indexOf("bar") > 0);
+
+        // Check that when a non-data: base URL is used, we treat the String to load as
+        // a raw string and just dump it into the WebView, i.e. not decoding any URL entities.
+        mOnUiThread.loadDataWithBaseURLAndWaitForCompletion("http://www.foo.com",
+                HTML_HEADER + "<title>Hello World%21</title><body>bar</body></html>",
+                "text/html", "UTF-8", null);
+        assertEquals("Hello World%21", mWebView.getTitle());
+
+        // Check that when a data: base URL is used, we treat the String to load as a data: URL
+        // and run load steps such as decoding URL entities (i.e., contrary to the test case
+        // above.)
+        mOnUiThread.loadDataWithBaseURLAndWaitForCompletion("data:foo",
+                HTML_HEADER + "<title>Hello World%21</title></html>", "text/html", "UTF-8", null);
+        assertEquals("Hello World!", mWebView.getTitle());
+
+        // Check the method is null input safe.
+        mOnUiThread.loadDataWithBaseURLAndWaitForCompletion(null, null, null, null, null);
+        assertEquals("about:blank", mWebView.getUrl());
+        assertEquals("about:blank", mWebView.getOriginalUrl());
     }
 
-    @UiThreadTest
-    public void testFindAll() {
-        String p = "<p>Find all instances of find on the page and highlight them.</p>";
+    private static class WaitForFindResultsListener extends FutureTask<Integer>
+            implements WebView.FindListener {
+        public WaitForFindResultsListener() {
+            super(new Runnable() {
+                @Override
+                public void run() { }
+            }, null);
+        }
+
+        @Override
+        public void onFindResultReceived(int activeMatchOrdinal, int numberOfMatches,
+                boolean isDoneCounting) {
+            if (isDoneCounting) {
+                set(numberOfMatches);
+            }
+        }
+    }
+
+    public void testFindAll()  throws Throwable {
+        // Make the page scrollable, so we can detect the scrolling to make sure the
+        // content fully loaded.
+        mOnUiThread.setInitialScale(100);
+        DisplayMetrics metrics = mOnUiThread.getDisplayMetrics();
+        int dimension = Math.max(metrics.widthPixels, metrics.heightPixels);
+        // create a paragraph high enough to take up the entire screen
+        String p = "<p style=\"height:" + dimension + "px;\">" +
+                "Find all instances of find on the page and highlight them.</p>";
 
         mOnUiThread.loadDataAndWaitForCompletion("<html><body>" + p
                 + "</body></html>", "text/html", null);
 
-        assertEquals(2, mWebView.findAll("find"));
+        WaitForFindResultsListener l = new WaitForFindResultsListener();
+        int previousScrollY = mOnUiThread.getScrollY();
+        mOnUiThread.pageDown(true);
+        // Wait for content fully loaded.
+        waitForScrollingComplete(previousScrollY);
+        mOnUiThread.setFindListener(l);
+        mOnUiThread.findAll("find");
+
+        assertEquals(2, l.get().intValue());
     }
 
     public void testFindNext() throws Throwable {
@@ -907,9 +1110,15 @@
                 "Scroll by half the size of the page.</p>";
         mOnUiThread.loadDataAndWaitForCompletion("<html><body>" + p
                 + p + "</body></html>", "text/html", null);
-        getInstrumentation().waitForIdleSync();
 
-        assertTrue(mOnUiThread.pageDown(false));
+        // Wait for UI thread to settle and receive page dimentions from renderer
+        // such that we can invoke page down.
+        new PollingCheck() {
+            @Override
+            protected boolean check() {
+                 return mOnUiThread.pageDown(false);
+            }
+        }.run();
 
         do {
             getInstrumentation().waitForIdleSync();
@@ -941,25 +1150,38 @@
     public void testGetContentHeight() throws Throwable {
         mOnUiThread.loadDataAndWaitForCompletion(
                 "<html><body></body></html>", "text/html", null);
-        getInstrumentation().waitForIdleSync();
+        new PollingCheck() {
+            @Override
+            protected boolean check() {
+                return mOnUiThread.getScale() != 0 && mOnUiThread.getContentHeight() != 0
+                    && mOnUiThread.getHeight() != 0;
+            }
+        }.run();
+        assertEquals(mOnUiThread.getHeight(),
+                mOnUiThread.getContentHeight() * mOnUiThread.getScale(), 2f);
 
         final int pageHeight = 600;
         // set the margin to 0
         final String p = "<p style=\"height:" + pageHeight
                 + "px;margin:0px auto;\">Get the height of HTML content.</p>";
-        assertEquals(mOnUiThread.getHeight(), mOnUiThread.getContentHeight() * mOnUiThread.getScale(), 2f);
         mOnUiThread.loadDataAndWaitForCompletion("<html><body>" + p
                 + "</body></html>", "text/html", null);
-        getInstrumentation().waitForIdleSync();
+        new PollingCheck() {
+            @Override
+            protected boolean check() {
+                return mOnUiThread.getContentHeight() > pageHeight;
+            }
+        }.run();
 
-        assertTrue(mOnUiThread.getContentHeight() > pageHeight);
-        int extraSpace = mOnUiThread.getContentHeight() - pageHeight;
-
+        final int extraSpace = mOnUiThread.getContentHeight() - pageHeight;
         mOnUiThread.loadDataAndWaitForCompletion("<html><body>" + p
                 + p + "</body></html>", "text/html", null);
-        getInstrumentation().waitForIdleSync();
-        assertEquals(pageHeight + pageHeight + extraSpace,
-                mOnUiThread.getContentHeight());
+        new PollingCheck() {
+            @Override
+            protected boolean check() {
+                return pageHeight + pageHeight + extraSpace == mOnUiThread.getContentHeight();
+            }
+        }.run();
     }
 
     @UiThreadTest
@@ -985,34 +1207,31 @@
 
     public void testFlingScroll() throws Throwable {
         DisplayMetrics metrics = mOnUiThread.getDisplayMetrics();
-        int dimension = 2 * Math.max(metrics.widthPixels, metrics.heightPixels);
+        final int dimension = 10 * Math.max(metrics.widthPixels, metrics.heightPixels);
         String p = "<p style=\"height:" + dimension + "px;" +
                 "width:" + dimension + "px\">Test fling scroll.</p>";
         mOnUiThread.loadDataAndWaitForCompletion("<html><body>" + p
                 + "</body></html>", "text/html", null);
+        new PollingCheck() {
+            @Override
+            protected boolean check() {
+                return mOnUiThread.getContentHeight() >= dimension;
+            }
+        }.run();
         getInstrumentation().waitForIdleSync();
 
-        int previousScrollX = mOnUiThread.getScrollX();
-        int previousScrollY = mOnUiThread.getScrollY();
+        final int previousScrollX = mOnUiThread.getScrollX();
+        final int previousScrollY = mOnUiThread.getScrollY();
 
         mOnUiThread.flingScroll(100, 100);
 
-        int timeSlice = 500;
-        Thread.sleep(timeSlice);
-        assertTrue(mOnUiThread.getScrollX() > previousScrollX);
-        assertTrue(mOnUiThread.getScrollY() > previousScrollY);
-
-        previousScrollY = mOnUiThread.getScrollY();
-        previousScrollX = mOnUiThread.getScrollX();
-        Thread.sleep(timeSlice);
-        assertTrue(mOnUiThread.getScrollX() >= previousScrollX);
-        assertTrue(mOnUiThread.getScrollY() >= previousScrollY);
-
-        previousScrollY = mOnUiThread.getScrollY();
-        previousScrollX = mOnUiThread.getScrollX();
-        Thread.sleep(timeSlice);
-        assertTrue(mOnUiThread.getScrollX() >= previousScrollX);
-        assertTrue(mOnUiThread.getScrollY() >= previousScrollY);
+        new PollingCheck() {
+            @Override
+            protected boolean check() {
+                return mOnUiThread.getScrollX() > previousScrollX &&
+                        mOnUiThread.getScrollY() > previousScrollY;
+            }
+        }.run();
     }
 
     public void testRequestFocusNodeHref() throws Throwable {
@@ -1228,37 +1447,53 @@
     }
 
     public void testSetInitialScale() throws Throwable {
-        final String p = "<p style=\"height:1000px;width:1000px\">Test setInitialScale.</p>";
+        final String p = "<p style=\"height:2000px;width:2000px\">Test setInitialScale.</p>";
         final float defaultScale =
             getInstrumentation().getTargetContext().getResources().getDisplayMetrics().density;
 
         mOnUiThread.loadDataAndWaitForCompletion("<html><body>" + p
                 + "</body></html>", "text/html", null);
-        getInstrumentation().waitForIdleSync();
 
-        assertEquals(defaultScale, mOnUiThread.getScale(), .01f);
+        new PollingCheck(TEST_TIMEOUT) {
+            @Override
+            protected boolean check() {
+                return Math.abs(defaultScale - mOnUiThread.getScale()) < .01f;
+            }
+        }.run();
 
         mOnUiThread.setInitialScale(0);
         // modify content to fool WebKit into re-loading
         mOnUiThread.loadDataAndWaitForCompletion("<html><body>" + p
                 + "2" + "</body></html>", "text/html", null);
-        getInstrumentation().waitForIdleSync();
 
-        assertEquals(defaultScale, mOnUiThread.getScale(), .01f);
+        new PollingCheck(TEST_TIMEOUT) {
+            @Override
+            protected boolean check() {
+                return Math.abs(defaultScale - mOnUiThread.getScale()) < .01f;
+            }
+        }.run();
 
         mOnUiThread.setInitialScale(50);
         mOnUiThread.loadDataAndWaitForCompletion("<html><body>" + p
                 + "3" + "</body></html>", "text/html", null);
-        getInstrumentation().waitForIdleSync();
 
-        assertEquals(0.5f, mOnUiThread.getScale(), .02f);
+        new PollingCheck(TEST_TIMEOUT) {
+            @Override
+            protected boolean check() {
+                return Math.abs(0.5 - mOnUiThread.getScale()) < .01f;
+            }
+        }.run();
 
         mOnUiThread.setInitialScale(0);
         mOnUiThread.loadDataAndWaitForCompletion("<html><body>" + p
                 + "4" + "</body></html>", "text/html", null);
-        getInstrumentation().waitForIdleSync();
 
-        assertEquals(defaultScale, mOnUiThread.getScale(), .01f);
+        new PollingCheck(TEST_TIMEOUT) {
+            @Override
+            protected boolean check() {
+                return Math.abs(defaultScale - mOnUiThread.getScale()) < .01f;
+            }
+        }.run();
     }
 
     @UiThreadTest
@@ -1358,29 +1593,17 @@
     }
 
     public void testSetWebViewClient() throws Throwable {
-        final class MockWebViewClient extends WaitForLoadedClient {
-            private boolean mOnScaleChangedCalled = false;
-            public MockWebViewClient() {
-                super(mOnUiThread);
-            }
-            @Override
-            public void onScaleChanged(WebView view, float oldScale, float newScale) {
-                super.onScaleChanged(view, oldScale, newScale);
-                mOnScaleChangedCalled = true;
-            }
-            public boolean onScaleChangedCalled() {
-                return mOnScaleChangedCalled;
-            }
-        }
-
-        final MockWebViewClient webViewClient = new MockWebViewClient();
+        final ScaleChangedWebViewClient webViewClient = new ScaleChangedWebViewClient();
         mOnUiThread.setWebViewClient(webViewClient);
-        getInstrumentation().waitForIdleSync();
-        assertFalse(webViewClient.onScaleChangedCalled());
+        startWebServer(false);
 
-        mOnUiThread.zoomIn();
-        getInstrumentation().waitForIdleSync();
-        assertTrue(webViewClient.onScaleChangedCalled());
+        assertFalse(webViewClient.onScaleChangedCalled());
+        String url1 = mWebServer.getAssetUrl(TestHtmlConstants.HELLO_WORLD_URL);
+        mOnUiThread.loadUrlAndWaitForCompletion(url1);
+        pollingCheckForCanZoomIn();
+
+        assertTrue(mOnUiThread.zoomIn());
+        webViewClient.waitForScaleChanged();
     }
 
     @UiThreadTest
@@ -1582,17 +1805,20 @@
 
     public void testRequestChildRectangleOnScreen() throws Throwable {
         DisplayMetrics metrics = mOnUiThread.getDisplayMetrics();
-        int dimension = 2 * Math.max(metrics.widthPixels, metrics.heightPixels);
+        final int dimension = 2 * Math.max(metrics.widthPixels, metrics.heightPixels);
         String p = "<p style=\"height:" + dimension + "px;width:" + dimension + "px\">&nbsp;</p>";
         mOnUiThread.loadDataAndWaitForCompletion("<html><body>" + p
                 + "</body></html>", "text/html", null);
-        getInstrumentation().waitForIdleSync();
+        new PollingCheck() {
+            @Override
+            protected boolean check() {
+                return mOnUiThread.getContentHeight() >= dimension;
+            }
+        }.run();
 
         int origX = mOnUiThread.getScrollX();
         int origY = mOnUiThread.getScrollY();
 
-        metrics = mOnUiThread.getDisplayMetrics();
-        dimension = 2 * Math.max(metrics.widthPixels, metrics.heightPixels);
         int half = dimension / 2;
         Rect rect = new Rect(half, half, half + 1, half + 1);
         assertTrue(mOnUiThread.requestChildRectangleOnScreen(mWebView, rect, true));
@@ -1632,9 +1858,13 @@
         // the WebView will load the new URL.
         mOnUiThread.setDownloadListener(listener);
         mOnUiThread.getSettings().setJavaScriptEnabled(true);
+
+        // See b/13675265 for discussion on why the setTimeout is necessary.
+        // Works around a Blink bug.
         mOnUiThread.loadDataAndWaitForCompletion(
-                "<html><body onload=\"window.location = \'" + url + "\'\"></body></html>",
-                "text/html", null);
+                "<html><body onload=\"setTimeout(" +
+                "function() { window.location = \'" + url + "\'; }, 100);\">" +
+                "</body></html>", "text/html", null);
         // Wait for layout to complete before setting focus.
         getInstrumentation().waitForIdleSync();
 
@@ -1806,6 +2036,110 @@
         assertEquals("anchor", mOnUiThread.getTitle());
     }
 
+    public void testEvaluateJavascript() {
+        mOnUiThread.getSettings().setJavaScriptEnabled(true);
+        mOnUiThread.loadUrlAndWaitForCompletion("about:blank");
+
+        EvaluateJsResultPollingCheck jsResult = new EvaluateJsResultPollingCheck("2");
+        mOnUiThread.evaluateJavascript("1+1", jsResult);
+        jsResult.run();
+
+        jsResult = new EvaluateJsResultPollingCheck("9");
+        mOnUiThread.evaluateJavascript("1+1; 4+5", jsResult);
+        jsResult.run();
+
+        final String EXPECTED_TITLE = "test";
+        mOnUiThread.evaluateJavascript("document.title='" + EXPECTED_TITLE + "';", null);
+        new PollingCheck(TEST_TIMEOUT) {
+            @Override
+            protected boolean check() {
+                return mOnUiThread.getTitle().equals(EXPECTED_TITLE);
+            }
+        }.run();
+    }
+
+    // Verify Print feature can create a PDF file with a correct preamble.
+    public void testPrinting() throws Throwable {
+        mOnUiThread.loadDataAndWaitForCompletion("<html><head></head>" +
+                "<body>foo</body></html>",
+                "text/html", null);
+        final PrintDocumentAdapter adapter =  mOnUiThread.createPrintDocumentAdapter();
+        printDocumentStart(adapter);
+        PrintAttributes attributes = new PrintAttributes.Builder()
+                .setMediaSize(PrintAttributes.MediaSize.ISO_A4)
+                .setResolution(new PrintAttributes.Resolution("foo", "bar", 300, 300))
+                .setMinMargins(PrintAttributes.Margins.NO_MARGINS)
+                .build();
+        final WebViewStubActivity activity = getActivity();
+        final File file = activity.getFileStreamPath(PRINTER_TEST_FILE);
+        final ParcelFileDescriptor descriptor = ParcelFileDescriptor.open(file,
+                ParcelFileDescriptor.parseMode("w"));
+        final FutureTask<Boolean> result =
+                new FutureTask<Boolean>(new Callable<Boolean>() {
+                            public Boolean call() {
+                                return true;
+                            }
+                        });
+        printDocumentLayout(adapter, null, attributes,
+                new LayoutResultCallback() {
+                    // Called on UI thread
+                    @Override
+                    public void onLayoutFinished(PrintDocumentInfo info, boolean changed) {
+                        savePrintedPage(adapter, descriptor, result);
+                    }
+                });
+        try {
+            result.get(TEST_TIMEOUT, TimeUnit.MILLISECONDS);
+            assertTrue(file.length() > 0);
+            FileInputStream in = new FileInputStream(file);
+            byte[] b = new byte[PDF_PREAMBLE.length()];
+            in.read(b);
+            String preamble = new String(b);
+            assertEquals(PDF_PREAMBLE, preamble);
+        } finally {
+            // close the descriptor, if not closed already.
+            descriptor.close();
+            file.delete();
+        }
+    }
+
+    private void savePrintedPage(final PrintDocumentAdapter adapter,
+            final ParcelFileDescriptor descriptor, final FutureTask<Boolean> result) {
+        adapter.onWrite(new PageRange[] {PageRange.ALL_PAGES}, descriptor,
+                new CancellationSignal(),
+                new WriteResultCallback() {
+                    @Override
+                    public void onWriteFinished(PageRange[] pages) {
+                        try {
+                            descriptor.close();
+                            result.run();
+                        } catch (IOException ex) {
+                            fail("Failed file operation: " + ex.toString());
+                        }
+                    }
+                });
+    }
+
+    private void printDocumentStart(final PrintDocumentAdapter adapter) {
+        mOnUiThread.runOnUiThread(new Runnable() {
+            @Override
+            public void run() {
+                adapter.onStart();
+            }
+        });
+    }
+
+    private void printDocumentLayout(final PrintDocumentAdapter adapter,
+            final PrintAttributes oldAttributes, final PrintAttributes newAttributes,
+            final LayoutResultCallback layoutResultCallback) {
+        mOnUiThread.runOnUiThread(new Runnable() {
+            @Override
+            public void run() {
+                adapter.onLayout(oldAttributes, newAttributes, new CancellationSignal(),
+                        layoutResultCallback, null);
+            }
+        });
+    }
 
     @UiThreadTest
     public void testInternals() {
@@ -1888,11 +2222,22 @@
         }
     }
 
-    private void assertBitmapFillWithColor(Bitmap bitmap, int color) {
-        for (int i = 0; i < bitmap.getWidth(); i ++)
+    private boolean isPictureFilledWithColor(Picture picture, int color) {
+        if (picture.getWidth() == 0 || picture.getHeight() == 0)
+            return false;
+
+        Bitmap bitmap = Bitmap.createBitmap(picture.getWidth(), picture.getHeight(),
+                Config.ARGB_8888);
+        picture.draw(new Canvas(bitmap));
+
+        for (int i = 0; i < bitmap.getWidth(); i ++) {
             for (int j = 0; j < bitmap.getHeight(); j ++) {
-                assertEquals(color, bitmap.getPixel(i, j));
+                if (color != bitmap.getPixel(i, j)) {
+                    return false;
+                }
             }
+        }
+        return true;
     }
 
     // Find b1 inside b2
@@ -1989,4 +2334,44 @@
             return mErrorUrl;
         }
     }
+
+    private void pollingCheckForCanZoomIn() {
+        new PollingCheck(TEST_TIMEOUT) {
+            @Override
+            protected boolean check() {
+                return mOnUiThread.canZoomIn();
+            }
+        }.run();
+    }
+
+    final class ScaleChangedWebViewClient extends WaitForLoadedClient {
+        private boolean mOnScaleChangedCalled = false;
+        public ScaleChangedWebViewClient() {
+            super(mOnUiThread);
+        }
+
+        @Override
+        public void onScaleChanged(WebView view, float oldScale, float newScale) {
+            super.onScaleChanged(view, oldScale, newScale);
+            synchronized (this) {
+                mOnScaleChangedCalled = true;
+            }
+        }
+
+        public void waitForScaleChanged() {
+            new PollingCheck(TEST_TIMEOUT) {
+                 @Override
+                 protected boolean check() {
+                     return onScaleChangedCalled();
+                 }
+            }.run();
+            synchronized (this) {
+                mOnScaleChangedCalled = false;
+            }
+        }
+
+        public synchronized boolean onScaleChangedCalled() {
+            return mOnScaleChangedCalled;
+        }
+    }
 }
diff --git a/tests/tests/widget/src/android/widget/cts/AdapterViewTest.java b/tests/tests/widget/src/android/widget/cts/AdapterViewTest.java
old mode 100755
new mode 100644
diff --git a/tests/tests/widget/src/android/widget/cts/AutoCompleteTextViewTest.java b/tests/tests/widget/src/android/widget/cts/AutoCompleteTextViewTest.java
old mode 100755
new mode 100644
index 373c03b..7f72d6c
--- a/tests/tests/widget/src/android/widget/cts/AutoCompleteTextViewTest.java
+++ b/tests/tests/widget/src/android/widget/cts/AutoCompleteTextViewTest.java
@@ -485,6 +485,7 @@
                 }
             }.run();
         } else {
+            Thread.sleep(200);
             mInstrumentation.sendStringSync(STRING_TEST);
             new PollingCheck() {
                 @Override
diff --git a/tests/tests/widget/src/android/widget/cts/DialerFilterTest.java b/tests/tests/widget/src/android/widget/cts/DialerFilterTest.java
old mode 100755
new mode 100644
diff --git a/tests/tests/widget/src/android/widget/cts/FrameLayoutTest.java b/tests/tests/widget/src/android/widget/cts/FrameLayoutTest.java
old mode 100755
new mode 100644
diff --git a/tests/tests/widget/src/android/widget/cts/GridViewTest.java b/tests/tests/widget/src/android/widget/cts/GridViewTest.java
old mode 100755
new mode 100644
diff --git a/tests/tests/widget/src/android/widget/cts/ListViewTest.java b/tests/tests/widget/src/android/widget/cts/ListViewTest.java
index d2bd4f4..7af8c2e 100644
--- a/tests/tests/widget/src/android/widget/cts/ListViewTest.java
+++ b/tests/tests/widget/src/android/widget/cts/ListViewTest.java
@@ -44,6 +44,9 @@
 import android.widget.ListView;
 import android.widget.TextView;
 
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collections;
 import java.util.List;
 
 import junit.framework.Assert;
@@ -745,4 +748,94 @@
             return new MockView(getContext());
         }
     }
+
+    public void testTransientStateUnstableIds() throws Exception {
+        final ListView listView = mListView;
+        final ArrayList<String> items = new ArrayList<String>(Arrays.asList(mCountryList));
+        final ArrayAdapter<String> adapter = new ArrayAdapter<String>(mActivity,
+                android.R.layout.simple_list_item_1, items);
+
+        mInstrumentation.runOnMainSync(new Runnable() {
+            @Override
+            public void run() {
+                listView.setAdapter(adapter);
+            }
+        });
+        mInstrumentation.waitForIdleSync();
+
+        final View oldItem = listView.getChildAt(2);
+        final CharSequence oldText = ((TextView) oldItem.findViewById(android.R.id.text1))
+                .getText();
+        oldItem.setHasTransientState(true);
+
+        mInstrumentation.runOnMainSync(new Runnable() {
+            @Override
+            public void run() {
+                adapter.remove(adapter.getItem(0));
+                adapter.notifyDataSetChanged();
+            }
+        });
+        mInstrumentation.waitForIdleSync();
+
+        final View newItem = listView.getChildAt(2);
+        final CharSequence newText = ((TextView) newItem.findViewById(android.R.id.text1))
+                .getText();
+
+        Assert.assertFalse(oldText.equals(newText));
+    }
+
+    public void testTransientStateStableIds() throws Exception {
+        final ListView listView = mListView;
+        final ArrayList<String> items = new ArrayList<String>(Arrays.asList(mCountryList));
+        final StableArrayAdapter<String> adapter = new StableArrayAdapter<String>(mActivity,
+                android.R.layout.simple_list_item_1, items);
+
+        mInstrumentation.runOnMainSync(new Runnable() {
+            @Override
+            public void run() {
+                listView.setAdapter(adapter);
+            }
+        });
+        mInstrumentation.waitForIdleSync();
+
+        final Object tag = new Object();
+        final View oldItem = listView.getChildAt(2);
+        final CharSequence oldText = ((TextView) oldItem.findViewById(android.R.id.text1))
+                .getText();
+        oldItem.setHasTransientState(true);
+        oldItem.setTag(tag);
+
+        mInstrumentation.runOnMainSync(new Runnable() {
+            @Override
+            public void run() {
+                adapter.remove(adapter.getItem(0));
+                adapter.notifyDataSetChanged();
+            }
+        });
+        mInstrumentation.waitForIdleSync();
+
+        final View newItem = listView.getChildAt(1);
+        final CharSequence newText = ((TextView) newItem.findViewById(android.R.id.text1))
+                .getText();
+
+        Assert.assertTrue(newItem.hasTransientState());
+        Assert.assertEquals(oldText, newText);
+        Assert.assertEquals(tag, newItem.getTag());
+    }
+
+    private static class StableArrayAdapter<T> extends ArrayAdapter<T> {
+        public StableArrayAdapter(Context context, int resource, List<T> objects) {
+            super(context, resource, objects);
+        }
+
+        @Override
+        public long getItemId(int position) {
+            return getItem(position).hashCode();
+        }
+
+        @Override
+        public boolean hasStableIds() {
+            return true;
+        }
+    }
 }
diff --git a/tests/tests/widget/src/android/widget/cts/TextViewTest.java b/tests/tests/widget/src/android/widget/cts/TextViewTest.java
old mode 100755
new mode 100644
index 905a0ee..36ace30
--- a/tests/tests/widget/src/android/widget/cts/TextViewTest.java
+++ b/tests/tests/widget/src/android/widget/cts/TextViewTest.java
@@ -632,7 +632,8 @@
 
     public void testAccessPaintFlags() {
         mTextView = new TextView(mActivity);
-        assertEquals(Paint.DEV_KERN_TEXT_FLAG | Paint.ANTI_ALIAS_FLAG, mTextView.getPaintFlags());
+        assertEquals(Paint.DEV_KERN_TEXT_FLAG | Paint.EMBEDDED_BITMAP_TEXT_FLAG
+                | Paint.ANTI_ALIAS_FLAG, mTextView.getPaintFlags());
 
         mTextView.setPaintFlags(Paint.UNDERLINE_TEXT_FLAG | Paint.FAKE_BOLD_TEXT_FLAG);
         assertEquals(Paint.UNDERLINE_TEXT_FLAG | Paint.FAKE_BOLD_TEXT_FLAG,
diff --git a/tests/uiautomator/test-apps/CtsUiAutomatorApp/Android.mk b/tests/uiautomator/test-apps/CtsUiAutomatorApp/Android.mk
index fe4342a..90bdb61 100644
--- a/tests/uiautomator/test-apps/CtsUiAutomatorApp/Android.mk
+++ b/tests/uiautomator/test-apps/CtsUiAutomatorApp/Android.mk
@@ -28,4 +28,6 @@
 
 LOCAL_PROGUARD_ENABLED := disabled
 
+LOCAL_DEX_PREOPT := false
+
 include $(BUILD_PACKAGE)
diff --git a/tools/cts-api-coverage/src/com/android/cts/apicoverage/CtsApiCoverage.java b/tools/cts-api-coverage/src/com/android/cts/apicoverage/CtsApiCoverage.java
index d6abf9a..2109bbf 100644
--- a/tools/cts-api-coverage/src/com/android/cts/apicoverage/CtsApiCoverage.java
+++ b/tools/cts-api-coverage/src/com/android/cts/apicoverage/CtsApiCoverage.java
@@ -55,10 +55,12 @@
         System.out.println("directory and dexdeps must be built via \"make dexdeps\".");
         System.out.println();
         System.out.println("Options:");
-        System.out.println("  -o FILE              output file or standard out if not given");
-        System.out.println("  -f [txt|xml|html]    format of output");
-        System.out.println("  -d PATH              path to dexdeps or expected to be in $PATH");
-        System.out.println("  -a PATH              path to the API XML file");
+        System.out.println("  -o FILE                output file or standard out if not given");
+        System.out.println("  -f [txt|xml|html]      format of output");
+        System.out.println("  -d PATH                path to dexdeps or expected to be in $PATH");
+        System.out.println("  -a PATH                path to the API XML file");
+        System.out.println("  -p PACKAGENAMEPREFIX   report coverage only for package that start with");
+        System.out.println("  -t TITLE               report title");
         System.out.println();
         System.exit(1);
     }
@@ -69,6 +71,9 @@
         int format = FORMAT_TXT;
         String dexDeps = "dexDeps";
         String apiXmlPath = "";
+        // By default only care about packages starting with "android"
+        String packageFilter = "android";
+        String reportTitle = "CTS API Coverage";
 
         for (int i = 0; i < args.length; i++) {
             if (args[i].startsWith("-")) {
@@ -89,6 +94,10 @@
                     dexDeps = getExpectedArg(args, ++i);
                 } else if ("-a".equals(args[i])) {
                     apiXmlPath = getExpectedArg(args, ++i);
+                } else if ("-p".equals(args[i])) {
+                    packageFilter = getExpectedArg(args, ++i);
+                } else if ("-t".equals(args[i])) {
+                    reportTitle = getExpectedArg(args, ++i);
                 } else {
                     printUsage();
                 }
@@ -113,7 +122,7 @@
         for (File testApk : testApks) {
             addApiCoverage(apiCoverage, testApk, dexDeps);
         }
-        outputCoverageReport(apiCoverage, testApks, outputFile, format);
+        outputCoverageReport(apiCoverage, testApks, outputFile, format, packageFilter, reportTitle);
     }
 
     /** Get the argument or print out the usage and exit. */
@@ -172,8 +181,8 @@
     }
 
     private static void outputCoverageReport(ApiCoverage apiCoverage, List<File> testApks,
-            File outputFile, int format) throws IOException, TransformerException,
-                    InterruptedException {
+            File outputFile, int format, String packageFilter, String reportTitle)
+                throws IOException, TransformerException, InterruptedException {
 
         OutputStream out = outputFile != null
                 ? new FileOutputStream(outputFile)
@@ -182,15 +191,15 @@
         try {
             switch (format) {
                 case FORMAT_TXT:
-                    TextReport.printTextReport(apiCoverage, out);
+                    TextReport.printTextReport(apiCoverage, packageFilter, out);
                     break;
 
                 case FORMAT_XML:
-                    XmlReport.printXmlReport(testApks, apiCoverage, out);
+                    XmlReport.printXmlReport(testApks, apiCoverage, packageFilter, reportTitle, out);
                     break;
 
                 case FORMAT_HTML:
-                    HtmlReport.printHtmlReport(testApks, apiCoverage, out);
+                    HtmlReport.printHtmlReport(testApks, apiCoverage, packageFilter, reportTitle, out);
                     break;
             }
         } finally {
diff --git a/tools/cts-api-coverage/src/com/android/cts/apicoverage/HtmlReport.java b/tools/cts-api-coverage/src/com/android/cts/apicoverage/HtmlReport.java
index 9243fe0..dfe609d 100644
--- a/tools/cts-api-coverage/src/com/android/cts/apicoverage/HtmlReport.java
+++ b/tools/cts-api-coverage/src/com/android/cts/apicoverage/HtmlReport.java
@@ -37,14 +37,15 @@
 class HtmlReport {
 
     public static void printHtmlReport(final List<File> testApks, final ApiCoverage apiCoverage,
-            final OutputStream out) throws IOException, TransformerException {
+            final String packageFilter, final String reportTitle, final OutputStream out)
+                throws IOException, TransformerException {
         final PipedOutputStream xmlOut = new PipedOutputStream();
         final PipedInputStream xmlIn = new PipedInputStream(xmlOut);
 
         Thread t = new Thread(new Runnable() {
             @Override
             public void run() {
-                XmlReport.printXmlReport(testApks, apiCoverage, xmlOut);
+                XmlReport.printXmlReport(testApks, apiCoverage, packageFilter, reportTitle, xmlOut);
 
                 // Close the output stream to avoid "Write dead end" errors.
                 try {
diff --git a/tools/cts-api-coverage/src/com/android/cts/apicoverage/TextReport.java b/tools/cts-api-coverage/src/com/android/cts/apicoverage/TextReport.java
index ebcefe5..23b44c3 100644
--- a/tools/cts-api-coverage/src/com/android/cts/apicoverage/TextReport.java
+++ b/tools/cts-api-coverage/src/com/android/cts/apicoverage/TextReport.java
@@ -27,7 +27,7 @@
  */
 class TextReport {
 
-    public static void printTextReport(ApiCoverage api, OutputStream outputStream) {
+    public static void printTextReport(ApiCoverage api, String packageFilter, OutputStream outputStream) {
         PrintStream out = new PrintStream(outputStream);
 
         CoverageComparator comparator = new CoverageComparator();
@@ -35,7 +35,7 @@
         Collections.sort(packages, comparator);
 
         for (ApiPackage apiPackage : packages) {
-            if (apiPackage.getName().startsWith("android")
+            if (apiPackage.getName().startsWith(packageFilter)
                     && apiPackage.getTotalMethods() > 0) {
                 printPackage(apiPackage, out);
             }
@@ -45,7 +45,7 @@
         out.println();
 
         for (ApiPackage apiPackage : packages) {
-            if (apiPackage.getName().startsWith("android")) {
+            if (apiPackage.getName().startsWith(packageFilter)) {
                 printPackage(apiPackage, out);
 
                 List<ApiClass> classes = new ArrayList<ApiClass>(apiPackage.getClasses());
diff --git a/tools/cts-api-coverage/src/com/android/cts/apicoverage/XmlReport.java b/tools/cts-api-coverage/src/com/android/cts/apicoverage/XmlReport.java
index e76343e..df10fa4 100644
--- a/tools/cts-api-coverage/src/com/android/cts/apicoverage/XmlReport.java
+++ b/tools/cts-api-coverage/src/com/android/cts/apicoverage/XmlReport.java
@@ -32,14 +32,14 @@
 class XmlReport {
 
     public static void printXmlReport(List<File> testApks, ApiCoverage apiCoverage,
-            OutputStream outputStream) {
+            String packageFilter, String reportTitle, OutputStream outputStream) {
         PrintStream out = new PrintStream(outputStream);
         out.println("<?xml version=\"1.0\" encoding=\"UTF-8\"?>");
         out.println("<?xml-stylesheet type=\"text/xsl\"  href=\"api-coverage.xsl\"?>");
 
         SimpleDateFormat format = new SimpleDateFormat("EEE, MMM d, yyyy h:mm a z");
         String date = format.format(new Date(System.currentTimeMillis()));
-        out.println("<api-coverage generatedTime=\"" + date + "\">");
+        out.println("<api-coverage generatedTime=\"" + date + "\" title=\"" + reportTitle +"\">");
 
         out.println("<debug>");
         out.println("<sources>");
@@ -57,8 +57,8 @@
         int totalMethods = 0;
         int totalCoveredMethods = 0;
         for (ApiPackage pkg : packages) {
-            if (pkg.getName().startsWith("android")
-                    && pkg.getTotalMethods() > 0) {
+            if (pkg.getName().startsWith(packageFilter)
+                   && pkg.getTotalMethods() > 0) {
                 int pkgTotal = pkg.getTotalMethods();
                 totalMethods += pkgTotal;
                 int pkgTotalCovered = pkg.getNumCoveredMethods();
diff --git a/tools/cts-api-coverage/src/res/api-coverage.xsl b/tools/cts-api-coverage/src/res/api-coverage.xsl
index 9cd4aeb..1ac3402 100644
--- a/tools/cts-api-coverage/src/res/api-coverage.xsl
+++ b/tools/cts-api-coverage/src/res/api-coverage.xsl
@@ -78,7 +78,7 @@
                 </style>
             </head>
             <body>
-                <h1>CTS API Coverage</h1>
+                <h1><xsl:value-of select="api-coverage/@title" /></h1>
                 <div class="info">
                     Generated: <xsl:value-of select="api-coverage/@generatedTime" />
                 </div>
diff --git a/tools/cts-holo-generation/Android.mk b/tools/cts-holo-generation/Android.mk
new file mode 100644
index 0000000..5f12ef0
--- /dev/null
+++ b/tools/cts-holo-generation/Android.mk
@@ -0,0 +1,34 @@
+# Copyright (C) 2014 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)
+
+# don't include this package in any target
+LOCAL_MODULE_TAGS := optional
+# and when built explicitly put it in the data partition
+LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
+# and because it is in data, do not strip classes.dex
+LOCAL_DEX_PREOPT := false
+LOCAL_PROGUARD_ENABLED := disabled
+
+LOCAL_JAVA_LIBRARIES := android.test.runner
+
+LOCAL_SRC_FILES := $(call all-java-files-under, src)
+
+LOCAL_PACKAGE_NAME := CtsHoloGeneration
+
+LOCAL_SDK_VERSION := current
+
+include $(BUILD_PACKAGE)
diff --git a/tools/cts-holo-generation/AndroidManifest.xml b/tools/cts-holo-generation/AndroidManifest.xml
new file mode 100644
index 0000000..d7de891
--- /dev/null
+++ b/tools/cts-holo-generation/AndroidManifest.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+      package="com.android.cts.holo_capture"
+      android:versionCode="1"
+      android:versionName="1.0">
+    <uses-permission android:name="android.permission.DISABLE_KEYGUARD" />
+    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
+
+    <instrumentation
+        android:name="android.test.InstrumentationTestRunner"
+        android:targetPackage="com.android.cts.holo_capture" />
+
+    <application>
+        <uses-library android:name="android.test.runner" />
+        <activity android:name=".CaptureActivity">
+            <intent-filter>
+                <action android:name="android.intent.action.MAIN" />
+                <category android:name="android.intent.category.LAUNCHER"/>
+            </intent-filter>
+        </activity>
+    </application>
+</manifest>
diff --git a/tools/cts-holo-generation/src/com/android/cts/holo_capture/CaptureActivity.java b/tools/cts-holo-generation/src/com/android/cts/holo_capture/CaptureActivity.java
new file mode 100644
index 0000000..48ba9c7
--- /dev/null
+++ b/tools/cts-holo-generation/src/com/android/cts/holo_capture/CaptureActivity.java
@@ -0,0 +1,51 @@
+/*
+ * Copyright (C) 2014 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.android.cts.holo_capture;
+
+import android.app.Activity;
+import android.content.Intent;
+import android.os.Bundle;
+import android.util.Log;
+
+import java.util.concurrent.CountDownLatch;
+
+public class CaptureActivity extends Activity {
+    private static final String TAG = "CaptureActivity";
+    private CountDownLatch mLatch = new CountDownLatch(1);
+
+    public void waitForCompletion() throws InterruptedException {
+        mLatch.await();
+    }
+
+    @Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+
+        Intent intent = new Intent();
+        intent.setClassName("com.android.cts.holo", "android.holo.cts.ThemeTestActivity");
+        intent.putExtra("task", 2);
+        intent.putExtra("layoutAdapterMode", 1);
+        int requestCode = 0;
+        startActivityForResult(intent, requestCode);
+    }
+
+    @Override
+    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
+        Log.i(TAG, "onActivityResult req:" + requestCode + " res:" + resultCode);
+        mLatch.countDown();
+    }
+}
diff --git a/tools/cts-holo-generation/src/com/android/cts/holo_capture/CaptureHolo.java b/tools/cts-holo-generation/src/com/android/cts/holo_capture/CaptureHolo.java
new file mode 100644
index 0000000..cc68e1c
--- /dev/null
+++ b/tools/cts-holo-generation/src/com/android/cts/holo_capture/CaptureHolo.java
@@ -0,0 +1,36 @@
+/*
+ * Copyright (C) 2014 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.android.cts.holo_capture;
+
+import android.app.KeyguardManager;
+import android.content.Context;
+import android.test.ActivityInstrumentationTestCase2;
+
+public class CaptureHolo extends ActivityInstrumentationTestCase2<CaptureActivity> {
+    public CaptureHolo() {
+        super(CaptureActivity.class);
+    }
+
+    public void testCaptureHolo() throws InterruptedException {
+        setActivityInitialTouchMode(true);
+        CaptureActivity activity = getActivity();
+        KeyguardManager keyguardManager =
+                (KeyguardManager) activity.getSystemService(Context.KEYGUARD_SERVICE);
+        keyguardManager.newKeyguardLock("holo_capture").disableKeyguard();
+        activity.waitForCompletion();
+    }
+}
diff --git a/tools/cts-java-scanner-doclet/src/com/android/cts/javascannerdoclet/CtsJavaScannerDoclet.java b/tools/cts-java-scanner-doclet/src/com/android/cts/javascannerdoclet/CtsJavaScannerDoclet.java
index 4086093..40a3d05 100644
--- a/tools/cts-java-scanner-doclet/src/com/android/cts/javascannerdoclet/CtsJavaScannerDoclet.java
+++ b/tools/cts-java-scanner-doclet/src/com/android/cts/javascannerdoclet/CtsJavaScannerDoclet.java
@@ -86,7 +86,7 @@
                     AnnotationDesc[] annotations = method.annotations();
                     for (AnnotationDesc annot : annotations) {
                         AnnotationTypeDoc atype = annot.annotationType();
-                        if (atype.toString().equals("android.cts.util.TimeoutReq")) {
+                        if (atype.toString().equals("com.android.cts.util.TimeoutReq")) {
                             ElementValuePair[] cpairs = annot.elementValues();
                             for (ElementValuePair pair: cpairs) {
                                 AnnotationTypeElementDoc elem = pair.element();
diff --git a/tools/cts-java-scanner/src/com/android/cts/javascanner/DocletRunner.java b/tools/cts-java-scanner/src/com/android/cts/javascanner/DocletRunner.java
index 2afc4fa..8c8dd4f 100644
--- a/tools/cts-java-scanner/src/com/android/cts/javascanner/DocletRunner.java
+++ b/tools/cts-java-scanner/src/com/android/cts/javascanner/DocletRunner.java
@@ -69,10 +69,10 @@
         sourcePath.add("./development/tools/hosttestlib/src");
         sourcePath.add("./libcore/dalvik/src/main/java");
         sourcePath.add("./cts/tests/src");
-        // PTS adds PtsAndroidTestCase
-        sourcePath.add("./cts/suite/pts/deviceTests/ptsutil/src");
-        sourcePath.add("./cts/libs/util/src");
+        sourcePath.add("./cts/libs/commonutil/src");
+        sourcePath.add("./cts/libs/deviceutil/src");
         sourcePath.add("./frameworks/testing/uiautomator/library/testrunner-src");
+        sourcePath.add("./frameworks/testing/uiautomator_test_libraries/src");
         sourcePath.add(sourceDir.toString());
         return join(sourcePath, ":");
     }
diff --git a/tools/cts-native-scanner/src/com/android/cts/nativescanner/CtsNativeScanner.java b/tools/cts-native-scanner/src/com/android/cts/nativescanner/CtsNativeScanner.java
index a7599b0..2414138 100644
--- a/tools/cts-native-scanner/src/com/android/cts/nativescanner/CtsNativeScanner.java
+++ b/tools/cts-native-scanner/src/com/android/cts/nativescanner/CtsNativeScanner.java
@@ -15,7 +15,8 @@
  */
 package com.android.cts.nativescanner;
 
-import java.io.File;
+import java.io.BufferedReader;
+import java.io.InputStreamReader;
 import java.util.Arrays;
 import java.util.List;
 
@@ -27,18 +28,18 @@
 
     private static void usage(String[] args) {
         System.err.println("Arguments: " + Arrays.asList(args));
-        System.err.println("Usage: cts-native-scanner -s SOURCE_DIR -t TEST_SUITE");
+        System.err.println("Usage: cts-native-scanner -t TEST_SUITE");
+        System.err.println("  This code reads from stdin the list of tests.");
+        System.err.println("  The format expected:");
+        System.err.println("    TEST_CASE_NAME.");
+        System.err.println("      TEST_NAME");
         System.exit(1);
     }
 
     public static void main(String[] args) throws Exception {
-        File sourceDir = null;
         String testSuite = null;
-
         for (int i = 0; i < args.length; i++) {
-            if ("-s".equals(args[i])) {
-                sourceDir = new File(getArg(args, ++i, "Missing value for source directory"));
-            } else if ("-t".equals(args[i])) {
+            if ("-t".equals(args[i])) {
                 testSuite = getArg(args, ++i, "Missing value for test suite");
             } else {
                 System.err.println("Unsupported flag: " + args[i]);
@@ -46,19 +47,14 @@
             }
         }
 
-        if (sourceDir == null) {
-            System.out.println("Source directory is required");
-            usage(args);
-        }
-
         if (testSuite == null) {
             System.out.println("Test suite is required");
             usage(args);
         }
 
-        TestScanner scanner = new TestScanner(sourceDir, testSuite);
-        List<String> testNames = scanner.getTestNames();
-        for (String name : testNames) {
+        BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
+        TestScanner scanner = new TestScanner(reader, testSuite);
+        for (String name : scanner.getTestNames()) {
             System.out.println(name);
         }
     }
diff --git a/tools/cts-native-scanner/src/com/android/cts/nativescanner/TestScanner.java b/tools/cts-native-scanner/src/com/android/cts/nativescanner/TestScanner.java
index 0a1b207..6fcb353 100644
--- a/tools/cts-native-scanner/src/com/android/cts/nativescanner/TestScanner.java
+++ b/tools/cts-native-scanner/src/com/android/cts/nativescanner/TestScanner.java
@@ -16,98 +16,60 @@
 
 package com.android.cts.nativescanner;
 
-import java.io.File;
-import java.io.FileNotFoundException;
-import java.io.FilenameFilter;
+import java.io.BufferedReader;
 import java.io.IOException;
+import java.io.InputStreamReader;
 import java.util.ArrayList;
 import java.util.List;
-import java.util.Scanner;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
 
 /**
- * Scanner of C++ gTest source files.
+ * Read from the BufferedReader a list of test case names and test cases.
  *
- * It looks for test declarations and outputs a file following this format:
- * suite:TestSuite
- * case:TestCase1
- * test:Test1
- * test:Test2
- * suite:TestSuite
- * case:TestCase2
- * test:Test1
- * test:Test2
+ * The expected format of the incoming test list:
+ *   TEST_CASE_NAME.
+ *     TEST_NAME1
+ *     TEST_NAME2
  *
+ * The output:
+ *   suite:TestSuite
+ *   case:TEST_CASE_NAME
+ *   test:TEST_NAME1
+ *   test:TEST_NAME2
  */
 class TestScanner {
 
-    /** Directory to recursively scan for gTest test declarations. */
-    private final File mSourceDir;
-
     private final String mTestSuite;
 
-    TestScanner(File sourceDir, String testSuite) {
-        mSourceDir = sourceDir;
+    private final BufferedReader mReader;
+
+    TestScanner(BufferedReader reader, String testSuite) {
         mTestSuite = testSuite;
+        mReader = reader;
     }
 
     public List<String> getTestNames() throws IOException {
         List<String> testNames = new ArrayList<String>();
-        scanDir(mSourceDir, testNames);
-        return testNames;
-    }
 
-    private void scanDir(File dir, List<String> testNames) throws FileNotFoundException {
-        // Find both C++ files to find tests and directories to look for more tests!
-        File[] files = dir.listFiles(new FilenameFilter() {
-            @Override
-            public boolean accept(File dir, String filename) {
-                return filename.endsWith(".cpp") || filename.endsWith(".cc")
-                        || new File(dir, filename).isDirectory();
-            }
-        });
-
-        for (int i = 0; i < files.length; i++) {
-            File file = files[i];
-            if (file.isDirectory()) {
-                scanDir(file, testNames);
+        String testCaseName = null;
+        String line;
+        while ((line = mReader.readLine()) != null) {
+          if (line.length() > 0) {
+            if (line.charAt(0) == ' ') {
+              if (testCaseName != null) {
+                testNames.add("test:" + line.trim());
+              } else {
+                throw new IOException("TEST_CASE_NAME not defined before first test.");
+              }
             } else {
-                scanFile(new Scanner(file), testNames);
+              testCaseName = line.trim();
+              if (testCaseName.endsWith(".")) {
+                testCaseName = testCaseName.substring(0, testCaseName.length()-1);
+              }
+              testNames.add("suite:" + mTestSuite);
+              testNames.add("case:" + testCaseName);
             }
+          }
         }
-    }
-
-    // We want to find lines like TEST_F(SLObjectCreationTest, testAudioPlayerFromFdCreation) { ...
-    // and extract the "SLObjectCreationTest" as group #1,
-    // "testAudioPlayerFromFdCreation" as group #2
-    private static final Pattern METHOD_REGEX =
-            Pattern.compile("\\s*TEST_F\\((\\w+),\\s*(\\w+)\\).*");
-
-    public void scanFile(Scanner scanner, List<String> testNames) {
-        try {
-            String lastCase = "";
-            while (scanner.hasNextLine()) {
-                String line = scanner.nextLine();
-
-                Matcher matcher = METHOD_REGEX.matcher(line);
-
-                if (!matcher.matches()) {
-                    continue;
-                }
-
-                if (!lastCase.equals(matcher.group(1))) {
-                    testNames.add("suite:" + mTestSuite);
-                    testNames.add("case:" + matcher.group(1));
-                    lastCase = matcher.group(1);
-                }
-
-                testNames.add("test:" + matcher.group(2));
-            }
-        } finally {
-            if (scanner != null) {
-                scanner.close();
-            }
-        }
+        return testNames;
     }
 }
diff --git a/tools/cts-native-scanner/tests/src/com/android/cts/nativescanner/TestScannerTest.java b/tools/cts-native-scanner/tests/src/com/android/cts/nativescanner/TestScannerTest.java
index 18732fd..b00c7dc 100644
--- a/tools/cts-native-scanner/tests/src/com/android/cts/nativescanner/TestScannerTest.java
+++ b/tools/cts-native-scanner/tests/src/com/android/cts/nativescanner/TestScannerTest.java
@@ -19,12 +19,10 @@
 
 import junit.framework.TestCase;
 
-import java.io.File;
+import java.io.BufferedReader;
+import java.io.IOException;
 import java.io.StringReader;
-import java.lang.StringBuilder;
-import java.util.Scanner;
 import java.util.List;
-import java.util.ArrayList;
 import java.util.Iterator;
 
 /**
@@ -32,31 +30,49 @@
  */
 public class TestScannerTest extends TestCase {
 
-    public void testScanFile() {
-        TestScanner testScanner = new TestScanner(new File("unused"), "TestSuite");
+    public void testSingleTestNamesCase() throws Exception {
+        StringReader singleTestString = new StringReader("FakeTestCase.\n  FakeTestName\n");
+        BufferedReader reader = new BufferedReader(singleTestString);
 
-        String newLine = System.getProperty("line.separator");
-        StringBuilder sb = new StringBuilder();
-        sb.append("foobar" + newLine);  // ignored
-        sb.append("TEST_F(TestCase1, TestName1)" + newLine);  // valid
-        sb.append("TEST_F(TestCase1, TestName2)" + newLine);  // valid
-        sb.append("TEST_F(TestCase2, TestName1) foo" + newLine);  // valid
-        sb.append("TEST_F(TestCase2, TestName1 foo)" + newLine);  // ignored
-        sb.append("foo TEST_F(TestCase2, TestName1)" + newLine);  // ignored
+        TestScanner testScanner = new TestScanner(reader, "TestSuite");
 
-        List<String> names = new ArrayList<String>();
-        Scanner scanner = new Scanner(new StringReader(sb.toString()));
-        testScanner.scanFile(scanner, names);
+        List<String> names = testScanner.getTestNames();
         Iterator it = names.iterator();
-
         assertEquals("suite:TestSuite", it.next());
-        assertEquals("case:TestCase1", it.next());
-        assertEquals("test:TestName1", it.next());
-        assertEquals("test:TestName2", it.next());
-        assertEquals("suite:TestSuite", it.next());
-        assertEquals("case:TestCase2", it.next());
-        assertEquals("test:TestName1", it.next());
+        assertEquals("case:FakeTestCase", it.next());
+        assertEquals("test:FakeTestName", it.next());
         assertFalse(it.hasNext());
-        scanner.close();
+    }
+
+    public void testMultipleTestNamesCase() throws Exception {
+        StringReader singleTestString = new StringReader(
+          "Case1.\n  Test1\n  Test2\nCase2.\n  Test3\n Test4\n");
+        BufferedReader reader = new BufferedReader(singleTestString);
+
+        TestScanner testScanner = new TestScanner(reader, "TestSuite");
+
+        List<String> names = testScanner.getTestNames();
+        Iterator it = names.iterator();
+        assertEquals("suite:TestSuite", it.next());
+        assertEquals("case:Case1", it.next());
+        assertEquals("test:Test1", it.next());
+        assertEquals("test:Test2", it.next());
+        assertEquals("case:Case2", it.next());
+        assertEquals("test:Test3", it.next());
+        assertEquals("test:Test4", it.next());
+        assertFalse(it.hasNext());
+    }
+
+    public void testMissingTestCaseNameCase() {
+        StringReader singleTestString = new StringReader("  Test1\n");
+        BufferedReader reader = new BufferedReader(singleTestString);
+
+        TestScanner testScanner = new TestScanner(reader, "TestSuite");
+
+        try {
+          List<String> names = testScanner.getTestNames();
+          fail();
+        } catch (IOException expected) {
+        }
     }
 }
diff --git a/tools/device-setup/TestDeviceSetup/Android.mk b/tools/device-setup/TestDeviceSetup/Android.mk
index efa50bf..ba1998c 100644
--- a/tools/device-setup/TestDeviceSetup/Android.mk
+++ b/tools/device-setup/TestDeviceSetup/Android.mk
@@ -23,10 +23,11 @@
 LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
 # and because it is in data, do not strip classes.dex
 LOCAL_DEX_PREOPT := false
+LOCAL_PROGUARD_ENABLED := disabled
 
 LOCAL_JAVA_LIBRARIES := android.test.runner
 
-LOCAL_SDK_VERSION := 17
+LOCAL_SDK_VERSION := current
 
 LOCAL_PACKAGE_NAME := TestDeviceSetup
 
diff --git a/tools/device-setup/TestDeviceSetup/AndroidManifest.xml b/tools/device-setup/TestDeviceSetup/AndroidManifest.xml
index d55ecdf..0a20e1c 100644
--- a/tools/device-setup/TestDeviceSetup/AndroidManifest.xml
+++ b/tools/device-setup/TestDeviceSetup/AndroidManifest.xml
@@ -30,12 +30,6 @@
                 <category android:name="android.intent.category.LAUNCHER"/>
             </intent-filter>
         </activity>
-
-    <receiver android:name="android.tests.util.DisableKeyguardReceiver">
-            <intent-filter>
-                <action android:name="android.tests.util.disablekeyguard" />
-            </intent-filter>
-        </receiver>
     </application>
 
     <instrumentation android:name="android.tests.getinfo.DeviceInfoInstrument"
diff --git a/tools/device-setup/TestDeviceSetup/src/android/tests/getinfo/DeviceInfoActivity.java b/tools/device-setup/TestDeviceSetup/src/android/tests/getinfo/DeviceInfoActivity.java
index 3614e22..4df8e62 100644
--- a/tools/device-setup/TestDeviceSetup/src/android/tests/getinfo/DeviceInfoActivity.java
+++ b/tools/device-setup/TestDeviceSetup/src/android/tests/getinfo/DeviceInfoActivity.java
@@ -22,11 +22,13 @@
 import android.content.pm.ConfigurationInfo;
 import android.content.res.Configuration;
 import android.os.Bundle;
+import android.view.Window;
+import android.view.WindowManager;
 
+import java.util.HashSet;
 import java.util.Locale;
 import java.util.concurrent.CountDownLatch;
 
-
 /**
  * Collect device information on target device.
  */
@@ -34,7 +36,10 @@
 
     // work done should be reported in GLES..View
     private CountDownLatch mDone = new CountDownLatch(1);
-    private GLESSurfaceView mGLView;
+    private HashSet<String> mOpenGlExtensions = new HashSet<String>();
+    private HashSet<String> mFormats = new HashSet<String>();
+    private String mGraphicsVendor;
+    private String mGraphicsRenderer;
 
     /**
      * Other classes can call this function to wait for this activity
@@ -47,17 +52,74 @@
         }
     }
 
+    private void runIterations(int glVersion) {
+        for (int i = 1; i <= glVersion; i++) {
+            final CountDownLatch done = new CountDownLatch(1);
+            final int version = i;
+            DeviceInfoActivity.this.runOnUiThread(new Runnable() {
+                public void run() {
+                    setContentView(new GLESSurfaceView(DeviceInfoActivity.this, version, done));
+                }
+            });
+            try {
+                done.await();
+            } catch (InterruptedException e) {
+                // just move on
+            }
+        }
+
+        StringBuilder textureBuilder = new StringBuilder();
+        for (String format: mFormats) {
+            textureBuilder.append(format).append(";");
+        }
+        StringBuilder extensionBuilder = new StringBuilder();
+        for (String extension : mOpenGlExtensions) {
+            extensionBuilder.append(extension).append(";");
+        }
+        DeviceInfoInstrument.addResult(
+                DeviceInfoConstants.OPEN_GL_EXTENSIONS,
+                extensionBuilder.toString());
+        DeviceInfoInstrument.addResult(
+                DeviceInfoConstants.OPEN_GL_COMPRESSED_TEXTURE_FORMATS,
+                textureBuilder.toString());
+        DeviceInfoInstrument.addResult(
+                DeviceInfoConstants.GRAPHICS_VENDOR,
+                mGraphicsVendor);
+        DeviceInfoInstrument.addResult(
+                DeviceInfoConstants.GRAPHICS_RENDERER,
+                mGraphicsRenderer);
+        mDone.countDown();
+    }
+
+    public void addOpenGlExtension(String openGlExtension) {
+        mOpenGlExtensions.add(openGlExtension);
+    }
+
+    public void addCompressedTextureFormat(String format) {
+        mFormats.add(format);
+    }
+
+    public void setGraphicsInfo(String vendor, String renderer) {
+        mGraphicsVendor = vendor;
+        mGraphicsRenderer = renderer;
+    }
+
     @Override
     public void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
+        Window w = getWindow();
+        w.setFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED,
+                WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED);
 
         ActivityManager am =
                 (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);
         ConfigurationInfo info = am.getDeviceConfigurationInfo();
-        boolean useGL20 = (info.reqGlEsVersion >= 0x20000);
-
-        mGLView = new GLESSurfaceView(this, useGL20, mDone);
-        setContentView(mGLView);
+        final int glVersion = (info.reqGlEsVersion & 0xffff0000) >> 16;
+        new Thread() {
+            public void run() {
+                runIterations(glVersion);
+            }
+        }.start();
 
         Configuration con = getResources().getConfiguration();
         String touchScreen = null;
diff --git a/tools/device-setup/TestDeviceSetup/src/android/tests/getinfo/DeviceInfoConstants.java b/tools/device-setup/TestDeviceSetup/src/android/tests/getinfo/DeviceInfoConstants.java
index f251360..d77a44c 100644
--- a/tools/device-setup/TestDeviceSetup/src/android/tests/getinfo/DeviceInfoConstants.java
+++ b/tools/device-setup/TestDeviceSetup/src/android/tests/getinfo/DeviceInfoConstants.java
@@ -63,4 +63,6 @@
     public static final String BUILD_VERSION = "buildVersion";
     public static final String BUILD_TAGS = "build_tags";
     public static final String SERIAL_NUMBER = "deviceID";
+    public static final String STORAGE_DEVICES = "storage_devices";
+    public static final String MULTI_USER = "multi_user";
 }
diff --git a/tools/device-setup/TestDeviceSetup/src/android/tests/getinfo/DeviceInfoInstrument.java b/tools/device-setup/TestDeviceSetup/src/android/tests/getinfo/DeviceInfoInstrument.java
index 49e96a0..cdf1df3 100644
--- a/tools/device-setup/TestDeviceSetup/src/android/tests/getinfo/DeviceInfoInstrument.java
+++ b/tools/device-setup/TestDeviceSetup/src/android/tests/getinfo/DeviceInfoInstrument.java
@@ -25,6 +25,8 @@
 import android.content.res.Configuration;
 import android.os.Build;
 import android.os.Bundle;
+import android.os.Environment;
+import android.os.UserManager;
 import android.telephony.TelephonyManager;
 import android.util.DisplayMetrics;
 import android.util.Log;
@@ -33,6 +35,8 @@
 
 import java.io.IOException;
 import java.lang.reflect.Field;
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
 import java.util.ArrayList;
 import java.util.HashSet;
 import java.util.List;
@@ -56,7 +60,6 @@
 
     @Override
     public void onStart() {
-
         addResult(BUILD_ID, Build.ID);
         addResult(PRODUCT_NAME, Build.PRODUCT);
         addResult(BUILD_DEVICE, Build.DEVICE);
@@ -135,6 +138,12 @@
         String sysLibraries = getSystemLibraries();
         addResult(SYS_LIBRARIES, sysLibraries);
 
+        // Storage devices
+        addResult(STORAGE_DEVICES, getStorageDevices());
+
+        // Multi-user support
+        addResult(MULTI_USER, getMultiUserInfo());
+
         finish(Activity.RESULT_OK, mResults);
     }
 
@@ -343,4 +352,42 @@
 
         return builder.toString();
     }
+
+    private String getStorageDevices() {
+        int count = 0;
+        count = Math.max(count, getContext().getExternalCacheDirs().length);
+        count = Math.max(count, getContext().getExternalFilesDirs(null).length);
+        count = Math.max(
+                count, getContext().getExternalFilesDirs(Environment.DIRECTORY_PICTURES).length);
+        count = Math.max(count, getContext().getObbDirs().length);
+
+        final String result;
+        if (Environment.isExternalStorageEmulated()) {
+            if (count == 1) {
+                return "1 emulated";
+            } else {
+                return "1 emulated, " + (count - 1) + " physical media";
+            }
+        } else {
+            return count + " physical media";
+        }
+    }
+
+    private String getMultiUserInfo() {
+        try {
+            final Method method = UserManager.class.getMethod("getMaxSupportedUsers");
+            final Integer maxUsers = (Integer) method.invoke(null);
+            if (maxUsers == 1) {
+                return "single user";
+            } else {
+                return maxUsers + " users supported";
+            }
+        } catch (ClassCastException e) {
+        } catch (NoSuchMethodException e) {
+        } catch (InvocationTargetException e) {
+        } catch (IllegalAccessException e) {
+        }
+
+        return "unknown";
+    }
 }
diff --git a/tools/device-setup/TestDeviceSetup/src/android/tests/getinfo/GLESSurfaceView.java b/tools/device-setup/TestDeviceSetup/src/android/tests/getinfo/GLESSurfaceView.java
index 792a5f2..1d3bf7f 100644
--- a/tools/device-setup/TestDeviceSetup/src/android/tests/getinfo/GLESSurfaceView.java
+++ b/tools/device-setup/TestDeviceSetup/src/android/tests/getinfo/GLESSurfaceView.java
@@ -18,6 +18,7 @@
 
 import android.content.Context;
 import android.opengl.GLES20;
+import android.opengl.GLES30;
 import android.opengl.GLSurfaceView;
 import android.util.Log;
 
@@ -30,22 +31,24 @@
 class GLESSurfaceView extends GLSurfaceView {
     private static final String TAG = "GLESSurfaceView";
 
-    private boolean mUseGL20;
-    CountDownLatch mDone;
-
+    private int mGLVersion;//1, 2, 3
+    private CountDownLatch mDone;
+    private DeviceInfoActivity mParent;
     /**
      *
-     * @param context
-     * @param useGL20 whether to use GLES2.0 API or not inside the view
+     * @param parent
+     * @param glVersion the version of GLES API to use inside the view
      * @param done to notify the completion of the task
      */
-    public GLESSurfaceView(Context context, boolean useGL20, CountDownLatch done){
-        super(context);
+    public GLESSurfaceView(DeviceInfoActivity parent, int glVersion, CountDownLatch done){
+        super(parent);
 
-        mUseGL20 = useGL20;
+        mParent = parent;
+        mGLVersion = glVersion;
         mDone = done;
-        if (mUseGL20) {
-            setEGLContextClientVersion(2);
+        if (glVersion > 1) {
+            // Default is 1 so only set if bigger than 1
+            setEGLContextClientVersion(glVersion);
         }
         setRenderer(new OpenGLESRenderer());
     }
@@ -57,10 +60,14 @@
             String extensions;
             String vendor;
             String renderer;
-            if (mUseGL20) {
+            if (mGLVersion == 2) {
                 extensions = GLES20.glGetString(GLES20.GL_EXTENSIONS);
                 vendor = GLES20.glGetString(GLES20.GL_VENDOR);
                 renderer = GLES20.glGetString(GLES20.GL_RENDERER);
+            } else if (mGLVersion == 3) {
+                extensions = GLES30.glGetString(GLES30.GL_EXTENSIONS);
+                vendor = GLES30.glGetString(GLES30.GL_VENDOR);
+                renderer = GLES30.glGetString(GLES30.GL_RENDERER);
             } else {
                 extensions = gl.glGetString(GL10.GL_EXTENSIONS);
                 vendor = gl.glGetString(GL10.GL_VENDOR);
@@ -69,35 +76,20 @@
             Log.i(TAG, "extensions : " + extensions);
             Log.i(TAG, "vendor : " + vendor);
             Log.i(TAG, "renderer : " + renderer);
+            mParent.setGraphicsInfo(vendor, renderer);
             Scanner scanner = new Scanner(extensions);
             scanner.useDelimiter(" ");
-            StringBuilder extensionsBuilder = new StringBuilder();
-            StringBuilder builder = new StringBuilder();
             while (scanner.hasNext()) {
                 String ext = scanner.next();
-                extensionsBuilder.append(ext).append(";");
+                mParent.addOpenGlExtension(ext);
                 if (ext.contains("texture")) {
                     if (ext.contains("compression") || ext.contains("compressed")) {
                         Log.i(TAG, "Compression supported: " + ext);
-                        builder.append(ext);
-                        builder.append(";");
+                        mParent.addCompressedTextureFormat(ext);
                     }
                 }
             }
 
-            DeviceInfoInstrument.addResult(
-                    DeviceInfoConstants.OPEN_GL_COMPRESSED_TEXTURE_FORMATS,
-                    builder.toString());
-            DeviceInfoInstrument.addResult(
-                    DeviceInfoConstants.OPEN_GL_EXTENSIONS,
-                    extensionsBuilder.toString());
-            DeviceInfoInstrument.addResult(
-                    DeviceInfoConstants.GRAPHICS_VENDOR,
-                    vendor);
-            DeviceInfoInstrument.addResult(
-                    DeviceInfoConstants.GRAPHICS_RENDERER,
-                    renderer);
-
             mDone.countDown();
         }
 
diff --git a/tools/device-setup/TestDeviceSetup/src/android/tests/getinfo/RootProcessScanner.java b/tools/device-setup/TestDeviceSetup/src/android/tests/getinfo/RootProcessScanner.java
index 4763287..fefff99 100644
--- a/tools/device-setup/TestDeviceSetup/src/android/tests/getinfo/RootProcessScanner.java
+++ b/tools/device-setup/TestDeviceSetup/src/android/tests/getinfo/RootProcessScanner.java
@@ -31,7 +31,9 @@
             "debuggerd",
             "init",
             "installd",
+            "netd",
             "servicemanager",
+            "ueventd",
             "vold",
             "zygote"
     );
diff --git a/tools/device-setup/TestDeviceSetup/src/android/tests/util/DisableKeyguardReceiver.java b/tools/device-setup/TestDeviceSetup/src/android/tests/util/DisableKeyguardReceiver.java
deleted file mode 100644
index 3e5012d..0000000
--- a/tools/device-setup/TestDeviceSetup/src/android/tests/util/DisableKeyguardReceiver.java
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
- * 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 android.tests.util;
-
-import android.app.KeyguardManager;
-import android.content.BroadcastReceiver;
-import android.content.Context;
-import android.content.Intent;
-
-/**
- * A utility receiver to disable the keyguard on devices.
- * Intended to be used so UI related tests can be executed successfully.
- */
-public class DisableKeyguardReceiver extends BroadcastReceiver {
-
-    @Override
-    public void onReceive(Context context, Intent intent) {
-        KeyguardManager keyguardManager =
-            (KeyguardManager) context.getSystemService(Context.KEYGUARD_SERVICE);
-        keyguardManager.newKeyguardLock("cts").disableKeyguard();
-    }
-}
diff --git a/tools/tradefed-host/Android.mk b/tools/tradefed-host/Android.mk
index 8281b20..0b5d764 100644
--- a/tools/tradefed-host/Android.mk
+++ b/tools/tradefed-host/Android.mk
@@ -17,7 +17,8 @@
 include $(CLEAR_VARS)
 
 LOCAL_SRC_FILES := \
-	$(call all-java-files-under, src)
+    $(call all-java-files-under, src) \
+    $(call all-java-files-under, ../../libs/commonutil/src)
 
 LOCAL_JAVA_RESOURCE_DIRS := res
 
@@ -26,6 +27,8 @@
 LOCAL_JAVA_LIBRARIES := ddmlib-prebuilt tradefed-prebuilt hosttestlib
 LOCAL_STATIC_JAVA_LIBRARIES := ctsdeviceinfolib
 
+LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/Android.mk
+
 include $(BUILD_HOST_JAVA_LIBRARY)
 
 # Build all sub-directories
diff --git a/tools/tradefed-host/README b/tools/tradefed-host/README
index bd29c23..545d4b4 100644
--- a/tools/tradefed-host/README
+++ b/tools/tradefed-host/README
@@ -38,8 +38,12 @@
 To run a test plan on a single device:
 
 1. Make sure you have at least one device connected
-2. Launch the cts-tradefed console by running the 'cts-tradefed' script at
-android-cts/tools/cts-tradefed
+2. Launch the cts-tradefed console by running the 'cts-tradefed'. If you've
+downloaded and extracted the CTS zip, the script can be found at
+  android-cts/tools/cts-tradefed
+Or else if you are working from the Android source tree and have run make cts,
+the script can be found at
+  out/host/linux-x86/cts/android-cts/tools/cts-tradefed
 3. Type:
 'run cts --plan CTS' to run the default CTS plan
 
diff --git a/tools/tradefed-host/res/report/cts_result.xsd b/tools/tradefed-host/res/report/cts_result.xsd
index 3f7f384..ce606e9 100644
--- a/tools/tradefed-host/res/report/cts_result.xsd
+++ b/tools/tradefed-host/res/report/cts_result.xsd
@@ -78,6 +78,8 @@
         <xs:attribute name="partitions" type="xs:string"/>
         <xs:attribute name="build_abi" type="xs:string"/>
         <xs:attribute name="build_abi2" type="xs:string"/>
+        <xs:attribute name="storage_devices" type="xs:string"/>
+        <xs:attribute name="multi_user" type="xs:string"/>
       </xs:complexType>
     </xs:element>
     <xs:element name="FeatureInfo" type="featureInfoType"/>
diff --git a/tools/tradefed-host/res/report/cts_result.xsl b/tools/tradefed-host/res/report/cts_result.xsl
index 0c38be1..fe49308 100644
--- a/tools/tradefed-host/res/report/cts_result.xsl
+++ b/tools/tradefed-host/res/report/cts_result.xsl
@@ -72,7 +72,7 @@
                                         </TD>
                                     </TR>
                                     <TR>
-                                        <TD class="rowtitle">Build Name</TD>
+                                        <TD class="rowtitle">Build Product</TD>
                                         <TD>
                                             <xsl:value-of select="TestResult/DeviceInfo/BuildInfo/@buildName"/>
                                         </TD>
@@ -96,13 +96,13 @@
                                         </TD>
                                     </TR>
                                     <TR>
-                                        <TD class="rowtitle">Firmware Version</TD>
+                                        <TD class="rowtitle">Android Version</TD>
                                         <TD>
                                             <xsl:value-of select="TestResult/DeviceInfo/BuildInfo/@buildVersion"/>
                                         </TD>
                                     </TR>
                                     <TR>
-                                        <TD class="rowtitle">Firmware Build Number</TD>
+                                        <TD class="rowtitle">Build ID</TD>
                                         <TD>
                                             <xsl:value-of select="TestResult/DeviceInfo/BuildInfo/@buildID"/>
                                         </TD>
@@ -128,7 +128,7 @@
                                         </TD>
                                     </TR>
                                     <TR>
-                                        <TD class="rowtitle">Android Platform Version</TD>
+                                        <TD class="rowtitle">Android API Level</TD>
                                         <TD>
                                             <xsl:value-of select="TestResult/DeviceInfo/BuildInfo/@androidPlatformVersion"/>
                                         </TD>
@@ -298,6 +298,18 @@
                                             </pre>
                                         </TD>
                                     </TR>
+                                    <TR>
+                                        <TD class="rowtitle">Storage devices</TD>
+                                        <TD>
+                                            <xsl:value-of select="TestResult/DeviceInfo/BuildInfo/@storage_devices"/>
+                                        </TD>
+                                    </TR>
+                                    <TR>
+                                        <TD class="rowtitle">Multi-user support</TD>
+                                        <TD>
+                                            <xsl:value-of select="TestResult/DeviceInfo/BuildInfo/@multi_user"/>
+                                        </TD>
+                                    </TR>
                                 </TABLE>
                             </TD>
                         </TR>
@@ -526,7 +538,7 @@
                                                             <xsl:value-of select="@result"/>
                                                         </div>
                                                     </TD>
-                                                    <TD class="failuredetails"></TD>
+                                                    <TD class="failuredetails"/>
                                                 </xsl:if>
 
                                                 <xsl:if test="@result='fail'">
diff --git a/tools/tradefed-host/src/com/android/cts/tradefed/build/CtsBuildProvider.java b/tools/tradefed-host/src/com/android/cts/tradefed/build/CtsBuildProvider.java
index afb0700..ccdb0eb 100644
--- a/tools/tradefed-host/src/com/android/cts/tradefed/build/CtsBuildProvider.java
+++ b/tools/tradefed-host/src/com/android/cts/tradefed/build/CtsBuildProvider.java
@@ -31,7 +31,7 @@
     @Option(name="cts-install-path", description="the path to the cts installation to use")
     private String mCtsRootDirPath = System.getProperty("CTS_ROOT");
 
-    public static final String CTS_BUILD_VERSION = "4.3_r2";
+    public static final String CTS_BUILD_VERSION = "4.4_r3";
 
     /**
      * {@inheritDoc}
diff --git a/tools/tradefed-host/src/com/android/cts/tradefed/result/CtsReportUtil.java b/tools/tradefed-host/src/com/android/cts/tradefed/result/CtsReportUtil.java
new file mode 100644
index 0000000..97f607e
--- /dev/null
+++ b/tools/tradefed-host/src/com/android/cts/tradefed/result/CtsReportUtil.java
@@ -0,0 +1,39 @@
+/*
+ * Copyright (C) 2013 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.android.cts.tradefed.result;
+
+import java.util.Map;
+
+/**
+ * Static utility class for handling Cts Results.
+ */
+public class CtsReportUtil {
+    private static final String CTS_RESULT_KEY = "CTS_RESULT";
+
+    /**
+     * Utility method to extract CTS result from test metrics
+     * @param testMetrics
+     * @return result or null if not found
+     */
+    public static String getCtsResultFromMetrics(Map<String, String> testMetrics) {
+        for (Map.Entry<String, String> entry: testMetrics.entrySet()) {
+            if (CTS_RESULT_KEY.equals(entry.getKey())) {
+                return entry.getValue();
+            }
+        }
+        return null;
+    }
+}
diff --git a/tools/tradefed-host/src/com/android/cts/tradefed/result/CtsXmlResultReporter.java b/tools/tradefed-host/src/com/android/cts/tradefed/result/CtsXmlResultReporter.java
index 71c093b..70310ca 100644
--- a/tools/tradefed-host/src/com/android/cts/tradefed/result/CtsXmlResultReporter.java
+++ b/tools/tradefed-host/src/com/android/cts/tradefed/result/CtsXmlResultReporter.java
@@ -19,6 +19,7 @@
 import com.android.cts.tradefed.build.CtsBuildHelper;
 import com.android.cts.tradefed.device.DeviceInfoCollector;
 import com.android.cts.tradefed.testtype.CtsTest;
+import com.android.cts.tradefed.util.CtsHostStore;
 import com.android.ddmlib.Log;
 import com.android.ddmlib.Log.LogLevel;
 import com.android.ddmlib.testrunner.TestIdentifier;
@@ -26,7 +27,6 @@
 import com.android.tradefed.build.IFolderBuildInfo;
 import com.android.tradefed.config.Option;
 import com.android.tradefed.log.LogUtil.CLog;
-import com.android.tradefed.result.ILogFileSaver;
 import com.android.tradefed.result.ITestInvocationListener;
 import com.android.tradefed.result.InputStreamSource;
 import com.android.tradefed.result.LogDataType;
@@ -58,7 +58,7 @@
     private static final String LOG_TAG = "CtsXmlResultReporter";
 
     static final String TEST_RESULT_FILE_NAME = "testResult.xml";
-    private static final String CTS_RESULT_FILE_VERSION = "1.14";
+    static final String CTS_RESULT_FILE_VERSION = "4.4";
     private static final String[] CTS_RESULT_RESOURCES = {"cts_result.xsl", "cts_result.css",
         "logo.gif", "newrule-green.png"};
 
@@ -99,7 +99,7 @@
     private File mLogDir;
     private String mSuiteName;
 
-    private static final Pattern mPtsLogPattern = Pattern.compile("(.*)\\+\\+\\+\\+(.*)");
+    private static final Pattern mCtsLogPattern = Pattern.compile("(.*)\\+\\+\\+\\+(.*)");
 
     public void setReportDir(File reportDir) {
         mReportDir = reportDir;
@@ -212,11 +212,11 @@
     }
 
     /**
-     * Return the {@link ILogFileSaver} to use.
+     * Return the {@link LogFileSaver} to use.
      * <p/>
      * Exposed for unit testing.
      */
-    ILogFileSaver getLogFileSaver() {
+    LogFileSaver getLogFileSaver() {
         return new LogFileSaver(mLogDir);
     }
 
@@ -264,7 +264,7 @@
      */
     @Override
     public void testEnded(TestIdentifier test, Map<String, String> testMetrics) {
-        collectPtsResults(test, testMetrics);
+        collectCtsResults(test, testMetrics);
         mCurrentPkgResult.reportTestEnded(test);
         Test result = mCurrentPkgResult.findTest(test);
         String stack = result.getStackTrace() == null ? "" : "\n" + result.getStackTrace();
@@ -273,26 +273,26 @@
     }
 
     /**
-     * Collect Pts results for both device and host tests to the package result.
+     * Collect Cts results for both device and host tests to the package result.
      * @param test test ran
      * @param testMetrics test metrics which can contain performance result for device tests
      */
-    private void collectPtsResults(TestIdentifier test, Map<String, String> testMetrics) {
+    private void collectCtsResults(TestIdentifier test, Map<String, String> testMetrics) {
         // device test can have performance results in testMetrics
-        String perfResult = PtsReportUtil.getPtsResultFromMetrics(testMetrics);
-        // host test should be checked in PtsHostStore.
+        String perfResult = CtsReportUtil.getCtsResultFromMetrics(testMetrics);
+        // host test should be checked in CtsHostStore.
         if (perfResult == null) {
-            perfResult = PtsHostStore.removePtsResult(mDeviceSerial, test);
+            perfResult = CtsHostStore.removeCtsResult(mDeviceSerial, test.toString());
         }
         if (perfResult != null) {
-            // PTS result is passed in Summary++++Details format.
+            // CTS result is passed in Summary++++Details format.
             // Extract Summary and Details, and pass them.
-            Matcher m = mPtsLogPattern.matcher(perfResult);
+            Matcher m = mCtsLogPattern.matcher(perfResult);
             if (m.find()) {
                 mCurrentPkgResult.reportPerformanceResult(test, CtsTestStatus.PASS, m.group(1),
                         m.group(2));
             } else {
-                logResult("PTS Result unrecognizable:" + perfResult);
+                logResult("CTS Result unrecognizable:" + perfResult);
             }
         }
     }
diff --git a/tools/tradefed-host/src/com/android/cts/tradefed/result/DeviceInfoResult.java b/tools/tradefed-host/src/com/android/cts/tradefed/result/DeviceInfoResult.java
index ce228c7..dd91af0 100644
--- a/tools/tradefed-host/src/com/android/cts/tradefed/result/DeviceInfoResult.java
+++ b/tools/tradefed-host/src/com/android/cts/tradefed/result/DeviceInfoResult.java
@@ -108,7 +108,8 @@
         String textureData = getMetric(metricsCopy,
                 DeviceInfoConstants.OPEN_GL_COMPRESSED_TEXTURE_FORMATS);
         String openGlExtensionData = getMetric(metricsCopy,
-                    DeviceInfoConstants.OPEN_GL_EXTENSIONS);
+                DeviceInfoConstants.OPEN_GL_EXTENSIONS);
+
         // dump the remaining metrics without translation
         serializer.startTag(ns, BUILD_TAG);
         for (Map.Entry<String, String> metricEntry : metricsCopy.entrySet()) {
@@ -121,6 +122,7 @@
         serializeSystemLibrariesInfo(serializer, sysLibData);
         serializeOpenGLCompressedTextureFormatsInfo(serializer, textureData);
         serializeOpenGLExtensions(serializer, openGlExtensionData);
+        // End
         serializer.endTag(ns, TAG);
     }
 
diff --git a/tools/tradefed-host/src/com/android/cts/tradefed/result/PtsHostStore.java b/tools/tradefed-host/src/com/android/cts/tradefed/result/PtsHostStore.java
deleted file mode 100644
index 5944c66..0000000
--- a/tools/tradefed-host/src/com/android/cts/tradefed/result/PtsHostStore.java
+++ /dev/null
@@ -1,69 +0,0 @@
-/*
- * Copyright (C) 2013 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.android.cts.tradefed.result;
-
-import com.android.ddmlib.testrunner.TestIdentifier;
-import com.android.tradefed.device.ITestDevice;
-
-import java.util.concurrent.ConcurrentHashMap;
-
-/**
- * Utility class for storing Pts Results.
- * This is necessary for host tests where test metrics cannot be passed.
- */
-public class PtsHostStore {
-
-    // needs concurrent verion as there can be multiple client accessing this.
-    // But there is no additional protection for the same key as that should not happen.
-    private static final ConcurrentHashMap<String, String> mMap =
-            new ConcurrentHashMap<String, String>();
-
-    /**
-     * Stores PTS result. Existing result with the same key will be replaced.
-     * Note that key is generated in the form of device_serial#class#method name.
-     * So there should be no concurrent test for the same (serial, class, method).
-     * @param device
-     * @param test
-     * @param result PTS result string
-     */
-    public static void storePtsResult(String deviceSerial, String classMethodName, String result) {
-        mMap.put(generateTestKey(deviceSerial, classMethodName), result);
-    }
-
-    /**
-     * retrieves a PTS result for the given condition and remove it from the internal
-     * storage. If there is no result for the given condition, it will return null.
-     */
-    public static String removePtsResult(String deviceSerial, TestIdentifier test) {
-        return mMap.remove(generateTestKey(deviceSerial, test));
-    }
-
-    /**
-     * return test key in the form of device_serial#class_name#method_name
-     */
-    private static String generateTestKey(String deviceSerial, TestIdentifier test) {
-        return String.format("%s#%s", deviceSerial, test.toString());
-
-    }
-
-    /**
-     * return test key in the form of device_serial#class_name#method_name
-     */
-    private static String generateTestKey(String deviceSerial, String classMethodName) {
-        return String.format("%s#%s", deviceSerial, classMethodName);
-
-    }
-}
diff --git a/tools/tradefed-host/src/com/android/cts/tradefed/result/PtsReportUtil.java b/tools/tradefed-host/src/com/android/cts/tradefed/result/PtsReportUtil.java
deleted file mode 100644
index 2e3dab1..0000000
--- a/tools/tradefed-host/src/com/android/cts/tradefed/result/PtsReportUtil.java
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
- * Copyright (C) 2013 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.android.cts.tradefed.result;
-
-import com.android.ddmlib.testrunner.TestIdentifier;
-import com.android.tradefed.device.ITestDevice;
-
-import java.util.Map;
-import java.util.concurrent.ConcurrentHashMap;
-
-/**
- * Static utility class for handling Pts Results.
- */
-public class PtsReportUtil {
-    private static final String PTS_RESULT_KEY = "PTS_RESULT";
-
-    /**
-     * Utility method to extract PTS result from test metrics
-     * @param testMetrics
-     * @return result or null if not found
-     */
-    public static String getPtsResultFromMetrics(Map<String, String> testMetrics) {
-        for (Map.Entry<String, String> entry: testMetrics.entrySet()) {
-            if (PTS_RESULT_KEY.equals(entry.getKey())) {
-                return entry.getValue();
-            }
-        }
-        return null;
-    }
-}
diff --git a/tools/tradefed-host/src/com/android/cts/tradefed/result/Test.java b/tools/tradefed-host/src/com/android/cts/tradefed/result/Test.java
index 72e2e27..8c5b8d1 100644
--- a/tools/tradefed-host/src/com/android/cts/tradefed/result/Test.java
+++ b/tools/tradefed-host/src/com/android/cts/tradefed/result/Test.java
@@ -44,7 +44,7 @@
     private static final String SCORETYPE_ATTR = "scoreType";
     private static final String UNIT_ATTR = "unit";
     private static final String SOURCE_ATTR = "source";
-    // separators for the message from PTS
+    // separators for the message
     private static final String LOG_SEPARATOR = "\\+\\+\\+";
     private static final String LOG_ELEM_SEPARATOR = "\\|";
 
@@ -54,7 +54,7 @@
     private String mEndTime;
     private String mMessage;
     private String mStackTrace;
-    // summary and details passed from pts
+    // summary and details passed from cts
     private String mSummary;
     private String mDetails;
 
@@ -184,7 +184,7 @@
                 serializer.endTag(CtsXmlResultReporter.ns, SUMMARY_TAG);
                 // add details only if summary is present
                 // <Details>
-                //   <ValueArray source=”com.android.pts.dram.BandwidthTest#doRunMemcpy:98”
+                //   <ValueArray source=”com.android.cts.dram.BandwidthTest#doRunMemcpy:98”
                 //                    message=”measure1” unit="ms" scoretype="higherBetter">
                 //     <Value>0.0</Value>
                 //     <Value>0.1</Value>
diff --git a/tools/tradefed-host/src/com/android/cts/tradefed/testtype/AccessibilityServiceTestRunner.java b/tools/tradefed-host/src/com/android/cts/tradefed/testtype/AccessibilityServiceTestRunner.java
new file mode 100644
index 0000000..4cfd263
--- /dev/null
+++ b/tools/tradefed-host/src/com/android/cts/tradefed/testtype/AccessibilityServiceTestRunner.java
@@ -0,0 +1,95 @@
+/*
+ * Copyright (C) 2012 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.android.cts.tradefed.testtype;
+
+import com.android.cts.tradefed.build.CtsBuildHelper;
+import com.android.tradefed.build.IBuildInfo;
+import com.android.tradefed.device.DeviceNotAvailableException;
+import com.android.tradefed.result.ITestInvocationListener;
+import com.android.tradefed.util.FileUtil;
+
+import junit.framework.TestCase;
+
+import java.io.File;
+
+/**
+ * Running the accessibility tests requires modification of secure
+ * settings. Secure settings cannot be changed from device CTS tests
+ * since system signature permission is required. Such settings can
+ * be modified by the shell user, so a host side test is used for
+ * installing a package with a delegating accessibility service, enabling
+ * this service, running these tests, disabling the service, and removing
+ * the delegating accessibility service package.
+ *
+ * @deprecated This class is not required in current CTS builds. Still
+ * maintained so cts-tradefed can run against older CTS builds that still
+ * require this class.
+ */
+public class AccessibilityServiceTestRunner extends InstrumentationApkTest {
+
+    private static final String DELEGATING_ACCESSIBLITY_SERVICE_PACKAGE_NAME =
+        "android.accessibilityservice.delegate";
+
+    private static final String DELEGATING_ACCESSIBLITY_SERVICE_NAME =
+        "android.accessibilityservice.delegate.DelegatingAccessibilityService";
+
+    private static final String DELEGATING_ACCESSIBLITY_SERVICE_APK =
+        "CtsDelegatingAccessibilityService.apk";
+
+    private CtsBuildHelper mCtsBuild;
+
+    @Override
+    public void setBuild(IBuildInfo build) {
+        super.setBuild(build);
+        mCtsBuild  = CtsBuildHelper.createBuildHelper(build);
+    }
+
+    @Override
+    public void run(ITestInvocationListener listener) throws DeviceNotAvailableException {
+        beforeTest();
+        super.run(listener);
+        afterTest();
+    }
+
+    private void beforeTest() throws DeviceNotAvailableException {
+        installApkAndAssert(DELEGATING_ACCESSIBLITY_SERVICE_APK);
+        enableAccessibilityAndDelegatingService();
+    }
+
+    private void afterTest() throws DeviceNotAvailableException {
+        AccessibilityTestRunner.disableAccessibilityAndServices(getDevice());
+        uninstallAndAssert(DELEGATING_ACCESSIBLITY_SERVICE_PACKAGE_NAME);
+    }
+
+    private void installApkAndAssert(String apkName) throws DeviceNotAvailableException {
+        File file = FileUtil.getFileForPath(mCtsBuild.getTestCasesDir(), apkName);
+        String errorMessage = getDevice().installPackage(file, true);
+        TestCase.assertNull("Error installing: " + apkName, errorMessage);
+    }
+
+    private void uninstallAndAssert(String packageName) throws DeviceNotAvailableException {
+        String errorMessage = getDevice().uninstallPackage(packageName);
+        TestCase.assertNull("Error uninstalling: " + packageName, errorMessage);
+    }
+
+    private void enableAccessibilityAndDelegatingService() throws DeviceNotAvailableException {
+        String componentName = DELEGATING_ACCESSIBLITY_SERVICE_PACKAGE_NAME + "/"
+            + DELEGATING_ACCESSIBLITY_SERVICE_NAME;
+        AccessibilityTestRunner.enableAccessibilityAndServices(getDevice(),
+                componentName);
+    }
+}
diff --git a/tools/tradefed-host/src/com/android/cts/tradefed/testtype/TestFilter.java b/tools/tradefed-host/src/com/android/cts/tradefed/testtype/TestFilter.java
index 053b265..f1a0485 100644
--- a/tools/tradefed-host/src/com/android/cts/tradefed/testtype/TestFilter.java
+++ b/tools/tradefed-host/src/com/android/cts/tradefed/testtype/TestFilter.java
@@ -33,6 +33,10 @@
 
     private final Set<String> mExcludedClasses;
     private final Set<TestIdentifier> mExcludedTests;
+
+    private final Set<String> mIncludedClasses;
+    private final Set<TestIdentifier> mIncludedTests;
+
     private String mIncludedClass = null;
     private String mIncludedMethod = null;
 
@@ -42,6 +46,9 @@
     public TestFilter() {
         mExcludedClasses = new HashSet<String>();
         mExcludedTests = new HashSet<TestIdentifier>();
+
+        mIncludedClasses = new HashSet<String>();
+        mIncludedTests = new HashSet<TestIdentifier>();
     }
 
     /**
@@ -79,6 +86,36 @@
     }
 
     /**
+     * Adds a test class to the filter.
+     * <p/>
+     * All tests in this class should be allowed.
+     */
+    public void addIncludedClass(String className) {
+        mIncludedClasses.add(className);
+    }
+
+    /**
+     * Adds a test class to the filter. All tests in this class should be excluded.
+     */
+    public void addIncludedTest(TestIdentifier test) {
+        mIncludedTests.add(test);
+    }
+
+    /**
+     * @return the mIncludedClasses
+     */
+    public Set<String> getIncludedClasses() {
+        return mIncludedClasses;
+    }
+
+    /**
+     * @return the mIncludedTests
+     */
+    public Set<TestIdentifier> getIncludedTests() {
+        return mIncludedTests;
+    }
+
+    /**
      * Sets the class name and optionally method that should pass this filter. If non-null, all
      * other tests will be excluded.
      *
@@ -96,7 +133,7 @@
      * @param tests the list of tests to filter
      * @return a new sorted list of tests that passed the filter
      */
-    public Collection<TestIdentifier> filter(Collection<TestIdentifier > tests) {
+    public Collection<TestIdentifier> filter(Collection<TestIdentifier> tests) {
         List<TestIdentifier> filteredTests = new ArrayList<TestIdentifier>(tests.size());
         for (TestIdentifier test : tests) {
             if (mIncludedClass != null && !test.getClassName().equals(mIncludedClass)) {
@@ -115,6 +152,12 @@
                 // skip
                 continue;
             }
+            if ((!mIncludedTests.isEmpty() || !mIncludedClasses.isEmpty())
+                    && !(mIncludedClasses.contains(test.getClassName())
+                            || mIncludedTests.contains(test))) {
+                // skip
+                continue;
+            }
             filteredTests.add(test);
         }
         Collections.sort(filteredTests, new TestIdComparator());
@@ -129,6 +172,13 @@
     }
 
     /**
+     * @return true if there are inclusion rules defined.
+     */
+    public boolean hasInclusion() {
+        return !mIncludedClasses.isEmpty() || !mIncludedTests.isEmpty();
+    }
+
+    /**
      * A {@link Comparator} for {@link TestIdentifier} that compares using
      * {@link TestIdentifier#toString()}
      */
diff --git a/tools/tradefed-host/src/com/android/cts/tradefed/testtype/TestPackageDef.java b/tools/tradefed-host/src/com/android/cts/tradefed/testtype/TestPackageDef.java
index 59babec..8ab5d18 100644
--- a/tools/tradefed-host/src/com/android/cts/tradefed/testtype/TestPackageDef.java
+++ b/tools/tradefed-host/src/com/android/cts/tradefed/testtype/TestPackageDef.java
@@ -48,12 +48,14 @@
     public static final String VM_HOST_TEST = "vmHostTest";
     public static final String ACCESSIBILITY_TEST =
         "com.android.cts.tradefed.testtype.AccessibilityTestRunner";
+    public static final String ACCESSIBILITY_SERVICE_TEST =
+        "com.android.cts.tradefed.testtype.AccessibilityServiceTestRunner";
     public static final String DISPLAY_TEST =
             "com.android.cts.tradefed.testtype.DisplayTestRunner";
     public static final String UIAUTOMATOR_TEST = "uiAutomator";
 
     private static final String SIGNATURE_TEST_METHOD = "testSignature";
-    private static final String SIGNATURE_TEST_CLASS = "android.tests.sigtest.SimpleSignatureTest";
+    private static final String SIGNATURE_TEST_CLASS = "android.tests.sigtest.SignatureTest";
 
     private String mUri = null;
     private String mAppNameSpace = null;
@@ -228,6 +230,9 @@
         } else if (ACCESSIBILITY_TEST.equals(mTestType)) {
             AccessibilityTestRunner test = new AccessibilityTestRunner();
             return setInstrumentationTest(test, testCaseDir);
+        } else if (ACCESSIBILITY_SERVICE_TEST.equals(mTestType)) {
+            AccessibilityServiceTestRunner test = new AccessibilityServiceTestRunner();
+            return setInstrumentationTest(test, testCaseDir);
         } else if (DISPLAY_TEST.equals(mTestType)) {
             DisplayTestRunner test = new DisplayTestRunner();
             return setInstrumentationTest(test, testCaseDir);
diff --git a/tools/tradefed-host/src/com/android/cts/tradefed/testtype/TestPackageXmlParser.java b/tools/tradefed-host/src/com/android/cts/tradefed/testtype/TestPackageXmlParser.java
index 675c986..bd67f78 100644
--- a/tools/tradefed-host/src/com/android/cts/tradefed/testtype/TestPackageXmlParser.java
+++ b/tools/tradefed-host/src/com/android/cts/tradefed/testtype/TestPackageXmlParser.java
@@ -84,7 +84,9 @@
                 mPackageDef.setTestType(getTestType(attributes));
                 mPackageDef.setJarPath(jarPath);
                 mPackageDef.setIsSignatureCheck(parseBoolean(signatureCheck));
-                mPackageDef.setTestPackageName(javaPackageFilter);
+                if (!"".equals(javaPackageFilter)) {
+                    mPackageDef.setTestPackageName(javaPackageFilter);
+                }
                 mPackageDef.setTargetBinaryName(targetBinaryName);
                 mPackageDef.setTargetNameSpace(targetNameSpace);
 
diff --git a/tools/tradefed-host/src/com/android/cts/tradefed/testtype/TestPlan.java b/tools/tradefed-host/src/com/android/cts/tradefed/testtype/TestPlan.java
index 3639a9c..c2a1348 100644
--- a/tools/tradefed-host/src/com/android/cts/tradefed/testtype/TestPlan.java
+++ b/tools/tradefed-host/src/com/android/cts/tradefed/testtype/TestPlan.java
@@ -47,6 +47,7 @@
     private static final String TEST_DELIM = ";";
     private static final String METHOD_DELIM = "#";
     private static final String EXCLUDE_ATTR = "exclude";
+    private static final String INCLUDE_ATTR = "include";
     private static final String URI_ATTR = "uri";
 
     private final String mName;
@@ -61,21 +62,23 @@
                 throws SAXException {
             if (ENTRY_TAG.equals(localName)) {
                 final String entryUriValue = attributes.getValue(URI_ATTR);
-                TestFilter filter = parseExcludedTests(attributes.getValue(EXCLUDE_ATTR));
+                TestFilter filter = parseTestList(
+                        attributes.getValue(EXCLUDE_ATTR), attributes.getValue(INCLUDE_ATTR));
                 mUriExcludedTestsMap.put(entryUriValue, filter);
             }
         }
 
         /**
-         * Parse the semi colon separated list of tests to exclude.
+         * Parse a semicolon separated list of tests.
          * <p/>
          * Expected format:
          * testClassName[#testMethodName][;testClassName2...]
          *
          * @param excludedString the excluded string list
+         * @param includedString the included string list
          * @return
          */
-        private TestFilter parseExcludedTests(String excludedString) {
+        private TestFilter parseTestList(String excludedString, String includedString) {
             TestFilter filter = new TestFilter();
             if (excludedString != null) {
                 String[] testStrings = excludedString.split(TEST_DELIM);
@@ -89,6 +92,19 @@
                     }
                 }
             }
+            if (includedString != null) {
+                String[] testStrings = includedString.split(TEST_DELIM);
+                for (String testString : testStrings) {
+                    String[] classMethodPair = testString.split(METHOD_DELIM);
+                    if (classMethodPair.length == 2) {
+                        filter.addIncludedTest(new TestIdentifier(classMethodPair[0],
+                                classMethodPair[1]));
+                    } else {
+                        filter.addIncludedClass(testString);
+                    }
+                }
+            }
+
             return filter;
         }
     }
@@ -198,16 +214,27 @@
      */
     private void serializeFilter(KXmlSerializer serializer, TestFilter testFilter)
             throws IOException {
-        if (!testFilter.hasExclusion()) {
-            return;
+        if (testFilter.hasExclusion()) {
+            List<String> exclusionStrings = new ArrayList<String>();
+            exclusionStrings.addAll(testFilter.getExcludedClasses());
+            for (TestIdentifier test : testFilter.getExcludedTests()) {
+                // TODO: this relies on TestIdentifier.toString() using METHOD_DELIM.
+                exclusionStrings.add(test.toString());
+            }
+            String exclusionAttrValue = ArrayUtil.join(TEST_DELIM, exclusionStrings);
+            serializer.attribute(null, EXCLUDE_ATTR, exclusionAttrValue);
         }
-        List<String> exclusionStrings = new ArrayList<String>();
-        exclusionStrings.addAll(testFilter.getExcludedClasses());
-        for (TestIdentifier test : testFilter.getExcludedTests()) {
-            // TODO: this relies on TestIdentifier.toString() using METHOD_DELIM.
-            exclusionStrings.add(test.toString());
+
+        if (testFilter.hasInclusion()) {
+            List<String> inclusionStrings = new ArrayList<String>();
+            inclusionStrings.addAll(testFilter.getIncludedClasses());
+            for (TestIdentifier test : testFilter.getIncludedTests()) {
+                // TODO: this relies on TestIdentifier.toString() using METHOD_DELIM.
+                inclusionStrings.add(test.toString());
+            }
+            String exclusionAttrValue = ArrayUtil.join(TEST_DELIM, inclusionStrings);
+            serializer.attribute(null, INCLUDE_ATTR, exclusionAttrValue);
         }
-        String exclusionAttrValue = ArrayUtil.join(TEST_DELIM, exclusionStrings);
-        serializer.attribute(null, EXCLUDE_ATTR, exclusionAttrValue);
+
     }
 }
diff --git a/tools/tradefed-host/src/com/android/cts/tradefed/util/CtsHostStore.java b/tools/tradefed-host/src/com/android/cts/tradefed/util/CtsHostStore.java
new file mode 100644
index 0000000..9c1e283
--- /dev/null
+++ b/tools/tradefed-host/src/com/android/cts/tradefed/util/CtsHostStore.java
@@ -0,0 +1,58 @@
+/*
+ * Copyright (C) 2013 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.android.cts.tradefed.util;
+
+import java.util.concurrent.ConcurrentHashMap;
+
+/**
+ * Utility class for storing Cts Results.
+ * This is necessary for host tests where test metrics cannot be passed.
+ */
+public class CtsHostStore {
+
+    // needs concurrent verion as there can be multiple client accessing this.
+    // But there is no additional protection for the same key as that should not happen.
+    private static final ConcurrentHashMap<String, String> mMap =
+            new ConcurrentHashMap<String, String>();
+
+    /**
+     * Stores CTS result. Existing result with the same key will be replaced.
+     * Note that key is generated in the form of device_serial#class#method name.
+     * So there should be no concurrent test for the same (serial, class, method).
+     * @param deviceSerial
+     * @param classMethodName
+     * @param result CTS result string
+     */
+    public static void storeCtsResult(String deviceSerial, String classMethodName, String result) {
+        mMap.put(generateTestKey(deviceSerial, classMethodName), result);
+    }
+
+    /**
+     * retrieves a CTS result for the given condition and remove it from the internal
+     * storage. If there is no result for the given condition, it will return null.
+     */
+    public static String removeCtsResult(String deviceSerial, String classMethodName) {
+        return mMap.remove(generateTestKey(deviceSerial, classMethodName));
+    }
+
+    /**
+     * return test key in the form of device_serial#class_name#method_name
+     */
+    private static String generateTestKey(String deviceSerial, String classMethodName) {
+        return String.format("%s#%s", deviceSerial, classMethodName);
+
+    }
+}
diff --git a/tools/tradefed-host/src/com/android/cts/tradefed/util/HostReportLog.java b/tools/tradefed-host/src/com/android/cts/tradefed/util/HostReportLog.java
new file mode 100644
index 0000000..125c56e
--- /dev/null
+++ b/tools/tradefed-host/src/com/android/cts/tradefed/util/HostReportLog.java
@@ -0,0 +1,42 @@
+/*
+ * Copyright (C) 2013 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.android.cts.tradefed.util;
+
+import com.android.cts.util.ReportLog;
+
+/**
+ * ReportLog for host tests
+ * Note that setTestInfo should be set before throwing report
+ */
+public class HostReportLog extends ReportLog {
+    private String mDeviceSerial;
+    private String mClassMethodName;
+
+    /**
+     * @param deviceSerial serial number of the device
+     * @param classMethodName class name and method name of the test in class#method format.
+     *        Note that ReportLog.getClassMethodNames() provide this.
+     */
+    public HostReportLog(String deviceSerial, String classMethodName) {
+        mDeviceSerial = deviceSerial;
+        mClassMethodName = classMethodName;
+    }
+
+    public void deliverReportToHost() {
+        CtsHostStore.storeCtsResult(mDeviceSerial, mClassMethodName, generateReport());
+    }
+}
diff --git a/tools/tradefed-host/tests/src/com/android/cts/tradefed/result/CtsXmlResultReporterTest.java b/tools/tradefed-host/tests/src/com/android/cts/tradefed/result/CtsXmlResultReporterTest.java
index 9515446..5776568 100644
--- a/tools/tradefed-host/tests/src/com/android/cts/tradefed/result/CtsXmlResultReporterTest.java
+++ b/tools/tradefed-host/tests/src/com/android/cts/tradefed/result/CtsXmlResultReporterTest.java
@@ -15,6 +15,8 @@
  */
 package com.android.cts.tradefed.result;
 
+import static com.android.cts.tradefed.result.CtsXmlResultReporter.CTS_RESULT_FILE_VERSION;
+
 import com.android.ddmlib.testrunner.ITestRunListener.TestFailure;
 import com.android.ddmlib.testrunner.TestIdentifier;
 import com.android.tradefed.build.IFolderBuildInfo;
@@ -84,8 +86,9 @@
     public void testEmptyGeneration() {
         final String expectedHeaderOutput = "<?xml version='1.0' encoding='UTF-8' standalone='no' ?>" +
             "<?xml-stylesheet type=\"text/xsl\" href=\"cts_result.xsl\"?>";
-        final String expectedTestOutput =
-            "<TestResult testPlan=\"NA\" starttime=\"ignore\" endtime=\"ignore\" version=\"1.13\"> ";
+        final String expectedTestOutput = String.format(
+            "<TestResult testPlan=\"NA\" starttime=\"ignore\" endtime=\"ignore\" " +
+                    "version=\"%s\" suite=\"%s\"> ", CTS_RESULT_FILE_VERSION, "CTS" );
         final String expectedSummaryOutput =
             "<Summary failed=\"0\" notExecuted=\"0\" timeout=\"0\" pass=\"0\" />";
         final String expectedEndTag = "</TestResult>";
@@ -93,10 +96,10 @@
         mResultReporter.invocationEnded(1);
         String actualOutput = getOutput();
         assertTrue(actualOutput.startsWith(expectedHeaderOutput));
-        assertTrue(String.format("test output did not contain expected test result. Got %s",
-                actualOutput), actualOutput.contains(expectedTestOutput));
-        assertTrue(String.format("test output did not contain expected test summary. Got %s",
-                actualOutput), actualOutput.contains(expectedSummaryOutput));
+        assertTrue(String.format("test output did not contain expected test result [%s]. Got %s",
+                expectedTestOutput, actualOutput), actualOutput.contains(expectedTestOutput));
+        assertTrue(String.format("test output did not contain expected test summary [%s]. Got %s",
+                expectedTestOutput, actualOutput), actualOutput.contains(expectedSummaryOutput));
         assertTrue(String.format("test output did not contain expected TestResult end tag. Got %s",
                 actualOutput), actualOutput.endsWith(expectedEndTag));
     }
diff --git a/tools/tradefed-host/tests/src/com/android/cts/tradefed/testtype/TestFilterTest.java b/tools/tradefed-host/tests/src/com/android/cts/tradefed/testtype/TestFilterTest.java
index 676b912..2f76e1f 100644
--- a/tools/tradefed-host/tests/src/com/android/cts/tradefed/testtype/TestFilterTest.java
+++ b/tools/tradefed-host/tests/src/com/android/cts/tradefed/testtype/TestFilterTest.java
@@ -25,7 +25,7 @@
 import java.util.List;
 
 /**
- *
+ * Unit tests for {@link TestFilter}.
  */
 public class TestFilterTest extends TestCase {
 
@@ -87,7 +87,7 @@
     }
 
     /**
-     * Test {@link TestFilter#filter(java.util.Collection)} with at class
+     * Test {@link TestFilter#filter(java.util.Collection)} with a class
      */
     public void testFilter_includeTest() {
         mFilter.setTestInclusion(TEST1.getClassName(), TEST1.getTestName());
@@ -96,4 +96,82 @@
         Iterator<TestIdentifier> iter = filteredList.iterator();
         assertEquals(TEST1, iter.next());
     }
+
+    /**
+     * Test {@link TestFilter#filter(java.util.Collection)} with an included test filter
+     */
+    public void testFilter_includeClasses() {
+        mFilter.addIncludedClass(TEST3.getClassName());
+        Collection<TestIdentifier> filteredList = mFilter.filter(mTestList);
+        assertEquals(1, filteredList.size());
+        assertEquals(TEST3, filteredList.iterator().next());
+    }
+
+    /**
+     * Test {@link TestFilter#filter(java.util.Collection)} with an included test filter
+     */
+    public void testFilter_includeTests() {
+        mFilter.addIncludedTest(TEST1);
+        mFilter.addIncludedTest(TEST3);
+        Collection<TestIdentifier> filteredList = mFilter.filter(mTestList);
+        assertEquals(2, filteredList.size());
+        Iterator<TestIdentifier> iter = filteredList.iterator();
+        assertEquals(TEST1, iter.next());
+        assertEquals(TEST3, iter.next());
+    }
+
+    /**
+     * Test {@link TestFilter#filter(java.util.Collection)}. Exclusion overrides
+     * inclusion.
+     */
+    public void testFilter_includeAndExcludeClasses() {
+        String className = TEST3.getClassName();
+        mFilter.addExcludedClass(className);
+        mFilter.addIncludedClass(className);
+        assertTrue(mFilter.filter(mTestList).isEmpty());
+    }
+
+    /**
+     * Test {@link TestFilter#filter(java.util.Collection)} Exclusion overrides
+     * inclusion.
+     */
+    public void testFilter_includeAndExcludeTests() {
+        mFilter.addExcludedTest(TEST1);
+        mFilter.addIncludedTest(TEST1);
+        assertTrue(mFilter.filter(mTestList).isEmpty());
+    }
+
+    /**
+     * Test {@link TestFilter#filter(java.util.Collection)} Exclusion overrides
+     * inclusion.
+     */
+    public void testFilter_includeTestAndExcludeClass() {
+        mFilter.addExcludedClass(TEST1.getClassName());
+        mFilter.addIncludedTest(TEST1);
+        assertTrue(mFilter.filter(mTestList).isEmpty());
+    }
+
+    /**
+     * Test {@link TestFilter#filter(java.util.Collection)} Exclusion overrides
+     * inclusion.
+     */
+    public void testFilter_includeClassAndExcludeTest() {
+        mFilter.addExcludedTest(TEST1);
+        mFilter.addIncludedClass(TEST1.getClassName());
+        Collection<TestIdentifier> filteredList = mFilter.filter(mTestList);
+        assertEquals(1, filteredList.size());
+        Iterator<TestIdentifier> iter = filteredList.iterator();
+        assertEquals(TEST2, iter.next());
+    }
+
+    /**
+     * Test {@link TestFilter#filter(java.util.Collection)} Exclusion overrides
+     * inclusion.
+     */
+    public void testFilter_includeClassAndExcludeTests() {
+        mFilter.addExcludedTest(TEST1);
+        mFilter.addExcludedTest(TEST2);
+        mFilter.addIncludedClass(TEST1.getClassName());
+        assertTrue(mFilter.filter(mTestList).isEmpty());
+    }
 }
diff --git a/tools/utils/buildCts.py b/tools/utils/buildCts.py
index e9069ec..b269be8 100755
--- a/tools/utils/buildCts.py
+++ b/tools/utils/buildCts.py
@@ -153,6 +153,8 @@
     plan.Include('android\.renderscript')
     plan.Include('android\.telephony')
     plan.Include('android\.nativemedia.*')
+    plan.Include('com\.android\.cts\..*')#TODO(stuartscott): Should PDK have all these?
+    #TODO(stuartscott): Maybe move away from com.android.* to android.* - less typing
     self.__WritePlan(plan, 'PDK')
 
     #dirty hack to copy over pre-populated CTS plans - flaky vs stable - to streamline autoCTS
@@ -171,7 +173,7 @@
   package.AddAttribute('appNameSpace', 'android.tests.sigtest')
   package.AddAttribute('signatureCheck', 'true')
   package.AddAttribute('runner', '.InstrumentationRunner')
-  package.AddTest('android.tests.sigtest.SignatureTest.signatureTest')
+  package.AddTest('android.tests.sigtest.SignatureTest.testSignature')
   description = open(os.path.join(test_repository, 'SignatureTest.xml'), 'w')
   package.WriteDescription(description)
   description.close()
diff --git a/tools/utils/rm_dup_holo_imgs.py b/tools/utils/rm_dup_holo_imgs.py
new file mode 100755
index 0000000..2464d0b
--- /dev/null
+++ b/tools/utils/rm_dup_holo_imgs.py
@@ -0,0 +1,70 @@
+#!/usr/bin/env python
+#
+# Copyright (C) 2014 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 hashlib
+import os
+import subprocess
+import sys
+
+densities = [
+    "ldpi",
+    "mdpi",
+    "tvdpi",
+    "hdpi",
+    "xhdpi",
+    "400dpi",
+    "xxhdpi",
+    "xxxhdpi"
+]
+
+# A script to find holo images which are duplicated in the landscape and
+# portrait folder. The landscape images will then be deleted as Android will
+# look up landscape resources in the portrait folder if it doesn't exist in the
+# landscape folder. This will reduce the size of the Holo test case.
+def main(argv):
+  run(True)
+  run(False)
+
+def run(sw):
+  for density in densities:
+    portDir = getDirName(density, sw, False)
+    landDir = getDirName(density, sw, True)
+    portrait = getAllHashes(portDir)
+    landscape = getAllHashes(landDir)
+    for f in portrait:
+      if f in landscape and landscape[f] == portrait[f]:
+        subprocess.call(["rm", landDir + "/" + f])
+
+def getAllHashes(dirName):
+  files = {}
+  for f in os.listdir(dirName):
+    if f.endswith(".png"):
+      files[f] = getHash(open(dirName + "/" + f, 'rb'))
+  return files
+
+def getHash(f):
+  return hashlib.sha1(f.read()).hexdigest()
+
+def getDirName(density, sw, land):
+  name = "drawable-"
+  if sw:
+    name += "sw600dp-"
+  if land:
+    name += "land-"
+  return name + density
+
+if __name__ == '__main__':
+  main(sys.argv)
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aput_boolean/Test_aput_boolean.java b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_boolean/Test_aput_boolean.java
index 43df2b2..f4fe940 100644
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/aput_boolean/Test_aput_boolean.java
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_boolean/Test_aput_boolean.java
@@ -175,19 +175,6 @@
             DxUtil.checkVerifyException(t);
         }
     }
-    
-    /**
-     * @constraint B15 
-     * @title put value 2 into boolean array
-     */
-    public void testVFE9() {
-        try {
-            Class.forName("dot.junit.opcodes.aput_boolean.d.T_aput_boolean_10");
-            fail("expected a verification exception");
-        } catch (Throwable t) {
-            DxUtil.checkVerifyException(t);
-        }
-    }
 
     /**
      * @constraint B1
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aput_boolean/d/T_aput_boolean_10.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_boolean/d/T_aput_boolean_10.d
deleted file mode 100644
index 64eb60e..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/aput_boolean/d/T_aput_boolean_10.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; 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.
-
-.source T_aput_boolean_10.java
-.class public dot.junit.opcodes.aput_boolean.d.T_aput_boolean_10
-.super java/lang/Object
-
-
-.method public <init>()V
-.limit regs 1
-       invoke-direct {v0}, java/lang/Object/<init>()V
-       return-void
-.end method
-
-.method public run([ZIZ)V
-.limit regs 11
-
-       const v10, 2
-       aput-boolean v10, v8, v9
-       return-void
-.end method
-
-
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aput_byte/Test_aput_byte.java b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_byte/Test_aput_byte.java
index 96ef2b6..396e5b7 100644
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/aput_byte/Test_aput_byte.java
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_byte/Test_aput_byte.java
@@ -178,19 +178,6 @@
     }
 
     /**
-     * @constraint B15 
-     * @title put value 128 into byte array
-     */
-    public void testVFE8() {
-        try {
-            Class.forName("dot.junit.opcodes.aput_byte.d.T_aput_byte_10");
-            fail("expected a verification exception");
-        } catch (Throwable t) {
-            DxUtil.checkVerifyException(t);
-        }
-    }
-
-    /**
      * @constraint B1
      * @title Type of index argument - float. The verifier checks that ints
      * and floats are not used interchangeably.
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aput_byte/d/T_aput_byte_10.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_byte/d/T_aput_byte_10.d
deleted file mode 100644
index b65ae76..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/aput_byte/d/T_aput_byte_10.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; 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.
-
-.source T_aput_byte_10.java
-.class public dot.junit.opcodes.aput_byte.d.T_aput_byte_10
-.super java/lang/Object
-
-
-.method public <init>()V
-.limit regs 1
-
-       invoke-direct {v0}, java/lang/Object/<init>()V
-       return-void
-.end method
-
-.method public run([BIB)V
-.limit regs 11
-
-       const v10, 128
-       aput-byte v10, v8, v9
-       return-void
-.end method
-
-
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aput_char/Test_aput_char.java b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_char/Test_aput_char.java
index 66265c7..8698034 100644
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/aput_char/Test_aput_char.java
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_char/Test_aput_char.java
@@ -192,17 +192,4 @@
         }
     }
 
-    /**
-     * @constraint B15 
-     * @title put value 65536 into char array
-     */
-    public void testVFE9() {
-        try {
-            Class.forName("dot.junit.opcodes.aput_char.d.T_aput_char_10");
-            fail("expected a verification exception");
-        } catch (Throwable t) {
-            DxUtil.checkVerifyException(t);
-        }
-    }
-
 }
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aput_char/d/T_aput_char_10.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_char/d/T_aput_char_10.d
deleted file mode 100644
index dd68792..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/aput_char/d/T_aput_char_10.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; 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.
-
-.source T_aput_char_10.java
-.class public dot.junit.opcodes.aput_char.d.T_aput_char_10
-.super java/lang/Object
-
-
-.method public <init>()V
-.limit regs 1
-
-       invoke-direct {v0}, java/lang/Object/<init>()V
-       return-void
-.end method
-
-.method public run([CIC)V
-.limit regs 11
-
-       const v10, 65536
-       aput-char v10, v8, v9
-       return-void
-.end method
-
-
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aput_short/Test_aput_short.java b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_short/Test_aput_short.java
index 82959db..a3dcf18 100644
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/aput_short/Test_aput_short.java
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_short/Test_aput_short.java
@@ -175,19 +175,6 @@
             DxUtil.checkVerifyException(t);
         }
     }
-    
-    /**
-     * @constraint B15 
-     * @title put value 32768 into array of shorts
-     */
-    public void testVFE8() {
-        try {
-            Class.forName("dot.junit.opcodes.aput_short.d.T_aput_short_10");
-            fail("expected a verification exception");
-        } catch (Throwable t) {
-            DxUtil.checkVerifyException(t);
-        }
-    }
 
     /**
      * @constraint B1
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aput_short/d/T_aput_short_10.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_short/d/T_aput_short_10.d
deleted file mode 100644
index bbb541c..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/aput_short/d/T_aput_short_10.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; 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.
-
-.source T_aput_short_10.java
-.class public dot.junit.opcodes.aput_short.d.T_aput_short_10
-.super java/lang/Object
-
-
-.method public <init>()V
-.limit regs 1
-
-       invoke-direct {v0}, java/lang/Object/<init>()V
-       return-void
-.end method
-
-.method public run([SIS)V
-.limit regs 11
-
-       const v10, 32768    
-       aput-short v10, v8, v9
-       return-void
-.end method
-
-
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_21.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_21.d
index eff1f49..e806df2 100644
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_21.d
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_21.d
@@ -30,7 +30,7 @@
        new-instance v0, Ldot/junit/opcodes/iget_short/TestStubs;
        invoke-direct {v0}, dot/junit/opcodes/iget_short/TestStubs/<init>()V
        
-       iget-wide v1, v0, dot.junit.opcodes.iget_short.TestStubs.TestStubProtectedField S
+       iget-short v1, v0, dot.junit.opcodes.iget_short.TestStubs.TestStubProtectedField S
        return-void
 .end method
 
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/Test_invoke_direct.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/Test_invoke_direct.java
index e7c6a0b..1772f22 100644
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/Test_invoke_direct.java
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/Test_invoke_direct.java
@@ -23,6 +23,7 @@
 import dot.junit.opcodes.invoke_direct.d.T_invoke_direct_16;
 import dot.junit.opcodes.invoke_direct.d.T_invoke_direct_2;
 import dot.junit.opcodes.invoke_direct.d.T_invoke_direct_21;
+import dot.junit.opcodes.invoke_direct.d.T_invoke_direct_26;
 import dot.junit.opcodes.invoke_direct.d.T_invoke_direct_6;
 import dot.junit.opcodes.invoke_direct.d.T_invoke_direct_7;
 import dot.junit.opcodes.invoke_direct.d.T_invoke_direct_8;
@@ -276,8 +277,10 @@
         //@uses dot.junit.opcodes.invoke_direct.TAbstract
         try {
             new T_invoke_direct_13().run();
-            fail("expected NoSuchMethodError");
+            fail("expected NoSuchMethodError or verification exception");
         } catch (NoSuchMethodError t) {
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
         }
     }
 
@@ -314,8 +317,9 @@
      * @title attempt to invoke interface method
      */
     public void testVFE20() {
+        //@uses dot.junit.opcodes.invoke_direct.d.T_invoke_direct_26
         try {
-            Class.forName("dot.junit.opcodes.invoke_direct.d.T_invoke_direct_26");
+            new T_invoke_direct_26().run();
             fail("expected a verification exception");
         } catch (Throwable t) {
             DxUtil.checkVerifyException(t);
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_12.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_12.d
index 6230fa9..9f79d59 100644
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_12.d
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_12.d
@@ -27,7 +27,7 @@
 .method public run()I
 .limit regs 3
 
-       invoke-direct {v1}, dot/junit/opcodes/invoke_direct/TSuper/toIntPvt()I
+       invoke-direct {v2}, dot/junit/opcodes/invoke_direct/TSuper/toIntPvt()I
        move-result v0
        return v0
 .end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_26.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_26.java
new file mode 100644
index 0000000..970478f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_26.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2012 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 dot.junit.opcodes.invoke_direct.d;
+
+public class T_invoke_direct_26 {
+
+    public int run() {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_4.d
index e6e7511..ed919f9 100644
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_4.d
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_4.d
@@ -27,6 +27,7 @@
 .end method
 
 .method public run()V
-    invoke-direct {v0}, dot/junit/opcodes/invoke_direct/d/T_invoke_direct_4/<clinit>()V
+    invoke-direct {}, dot/junit/opcodes/invoke_direct/d/T_invoke_direct_4/<clinit>()V
+    return-void
 .end method
 
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/Test_invoke_direct_range.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/Test_invoke_direct_range.java
index 1682c68..d4f194b 100644
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/Test_invoke_direct_range.java
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/Test_invoke_direct_range.java
@@ -23,6 +23,7 @@
 import dot.junit.opcodes.invoke_direct_range.d.T_invoke_direct_range_16;
 import dot.junit.opcodes.invoke_direct_range.d.T_invoke_direct_range_2;
 import dot.junit.opcodes.invoke_direct_range.d.T_invoke_direct_range_21;
+import dot.junit.opcodes.invoke_direct_range.d.T_invoke_direct_range_26;
 import dot.junit.opcodes.invoke_direct_range.d.T_invoke_direct_range_6;
 import dot.junit.opcodes.invoke_direct_range.d.T_invoke_direct_range_7;
 import dot.junit.opcodes.invoke_direct_range.d.T_invoke_direct_range_8;
@@ -277,8 +278,10 @@
         //@uses dot.junit.opcodes.invoke_direct_range.TAbstract
         try {
             new T_invoke_direct_range_13().run();
-            fail("expected NoSuchMethodError");
+            fail("expected NoSuchMethodError or verification exception");
         } catch (NoSuchMethodError t) {
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
         }
     }
 
@@ -315,8 +318,9 @@
      * @title attempt to invoke interface method
      */
     public void testVFE20() {
+        //@uses dot.junit.opcodes.invoke_direct_range.d.T_invoke_direct_range_26
         try {
-            Class.forName("dot.junit.opcodes.invoke_direct_range.d.T_invoke_direct_range_26");
+            new T_invoke_direct_range_26().run();
             fail("expected a verification exception");
         } catch (Throwable t) {
             DxUtil.checkVerifyException(t);
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_12.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_12.d
index a107ac3..7dd13f0 100644
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_12.d
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_12.d
@@ -27,7 +27,7 @@
 .method public run()I
 .limit regs 3
 
-       invoke-direct/range {v1}, dot/junit/opcodes/invoke_direct_range/TSuper/toIntPvt()I
+       invoke-direct/range {v2}, dot/junit/opcodes/invoke_direct_range/TSuper/toIntPvt()I
        move-result v0
        return v0
 .end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_26.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_26.java
new file mode 100644
index 0000000..b0ad389
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_26.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2012 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 dot.junit.opcodes.invoke_direct_range.d;
+
+public class T_invoke_direct_range_26 {
+
+    public int run() {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/Test_invoke_interface.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/Test_invoke_interface.java
index ae06cda..f846374 100644
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/Test_invoke_interface.java
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/Test_invoke_interface.java
@@ -166,8 +166,9 @@
     public void testVFE2() {
         try {
             new T_invoke_interface_4().run();
-            fail("expected NoSuchMethodError");
+            fail("expected NoSuchMethodError or IncompatibleClassChangeError");
         } catch (NoSuchMethodError t) {
+        } catch (IncompatibleClassChangeError e) {
         }
     }
 
@@ -216,13 +217,13 @@
      * @title invoke-interface may not be used to call <init>.
      */
     public void testVFE10() {
-        //@uses dot.junit.opcodes.invoke_interface.ITest
-        //@uses dot.junit.opcodes.invoke_interface.ITestImpl
-        //@uses dot.junit.opcodes.invoke_interface.ITestImplAbstract
+        //@uses dot.junit.opcodes.invoke_interface.d.T_invoke_interface_18
         try {
             new T_invoke_interface_18().run(new ITestImpl());
-            fail("expected InstantiationError");
-        } catch (InstantiationError t) {
+            fail("expected NoSuchMethodError or verification exception");
+        } catch (NoSuchMethodError t) {
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
         }
     }
 
@@ -235,8 +236,10 @@
         //@uses dot.junit.opcodes.invoke_interface.ITestImpl
         try {
             new T_invoke_interface_20().run(new ITestImpl());
-            fail("expected NoSuchMethodError");
+            fail("expected NoSuchMethodError or verification exception");
         } catch (NoSuchMethodError t) {
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
         }
     }
 
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_18.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_18.d
index f792a3b..d974005 100644
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_18.d
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_18.d
@@ -20,14 +20,7 @@
 .method public <init>()V
 .limit regs 2
 
-       invoke-direct {v1}, java/lang/Object/<init>()V
-       return-void
-.end method
-
-.method public run(Ldot/junit/opcodes/invoke_interface/ITest;)V
-.limit regs 8
-       new-instance v2, dot/junit/opcodes/invoke_interface/ITestImplAbstract
-       invoke-interface {v2}, dot/junit/opcodes/invoke_interface/ITestImplAbstract/<init>()V
+       invoke-interface {v1}, java/lang/Object/<init>()V
        return-void
 .end method
 
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/Test_invoke_interface_range.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/Test_invoke_interface_range.java
index abb4855..9f98d4c 100644
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/Test_invoke_interface_range.java
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/Test_invoke_interface_range.java
@@ -143,8 +143,9 @@
     public void testVFE2() {
         try {
             new T_invoke_interface_range_4().run();
-            fail("expected NoSuchMethodError");
+            fail("expected NoSuchMethodError or IncompatibleClassChangeError");
         } catch (NoSuchMethodError t) {
+        } catch (IncompatibleClassChangeError e) {
         }
     }
 
@@ -193,13 +194,13 @@
      * @title invoke-interface may not be used to call <init>.
      */
     public void testVFE10() {
-        //@uses dot.junit.opcodes.invoke_interface_range.ITest
-        //@uses dot.junit.opcodes.invoke_interface_range.ITestImpl
-        //@uses dot.junit.opcodes.invoke_interface_range.ITestImplAbstract
+        //@uses dot.junit.opcodes.invoke_interface_range.d.T_invoke_interface_range_18
         try {
             new T_invoke_interface_range_18().run(new ITestImpl());
-            fail("expected InstantiationError");
-        } catch (InstantiationError t) {
+            fail("expected NoSuchMethodError or verification exception");
+        } catch (NoSuchMethodError t) {
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
         }
     }
 
@@ -212,8 +213,10 @@
         //@uses dot.junit.opcodes.invoke_interface_range.ITestImpl
         try {
             new T_invoke_interface_range_20().run(new ITestImpl());
-            fail("expected NoSuchMethodError");
+            fail("expected NoSuchMethodError or verification exception");
         } catch (NoSuchMethodError t) {
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
         }
     }
 
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_18.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_18.d
index 0174a71..014b348 100644
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_18.d
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_18.d
@@ -20,14 +20,7 @@
 .method public <init>()V
 .limit regs 2
 
-       invoke-direct {v1}, java/lang/Object/<init>()V
-       return-void
-.end method
-
-.method public run(Ldot/junit/opcodes/invoke_interface_range/ITest;)V
-.limit regs 8
-       new-instance v2, dot/junit/opcodes/invoke_interface_range/ITestImplAbstract
-       invoke-interface/range {v2}, dot/junit/opcodes/invoke_interface_range/ITestImplAbstract/<init>()V
+       invoke-interface/range {v1}, java/lang/Object/<init>()V
        return-void
 .end method
 
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/Test_invoke_static.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/Test_invoke_static.java
index c7b77aa..02793fd 100644
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/Test_invoke_static.java
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/Test_invoke_static.java
@@ -26,6 +26,7 @@
 import dot.junit.opcodes.invoke_static.d.T_invoke_static_18;
 import dot.junit.opcodes.invoke_static.d.T_invoke_static_19;
 import dot.junit.opcodes.invoke_static.d.T_invoke_static_2;
+import dot.junit.opcodes.invoke_static.d.T_invoke_static_24;
 import dot.junit.opcodes.invoke_static.d.T_invoke_static_4;
 import dot.junit.opcodes.invoke_static.d.T_invoke_static_5;
 import dot.junit.opcodes.invoke_static.d.T_invoke_static_6;
@@ -156,8 +157,9 @@
     public void testVFE5() {
         try {
             new T_invoke_static_19().run();
-            fail("expected IncompatibleClassChangeError");
-        } catch (IncompatibleClassChangeError t) {
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
         }
     }
 
@@ -260,8 +262,9 @@
      * @title attempt to invoke interface method
      */
     public void testVFE18() {
+        //@uses dot.junit.opcodes.invoke_static.d.T_invoke_static_24
         try {
-            Class.forName("dot.junit.opcodes.invoke_static.d.T_invoke_static_24");
+            new T_invoke_static_24().run();
             fail("expected a verification exception");
         } catch (Throwable t) {
             DxUtil.checkVerifyException(t);
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_24.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_24.java
new file mode 100644
index 0000000..90e404d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_24.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2012 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 dot.junit.opcodes.invoke_static.d;
+
+public class T_invoke_static_24 {
+    public void run() {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/Test_invoke_static_range.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/Test_invoke_static_range.java
index c62b333..7db6776 100644
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/Test_invoke_static_range.java
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/Test_invoke_static_range.java
@@ -26,6 +26,7 @@
 import dot.junit.opcodes.invoke_static_range.d.T_invoke_static_range_18;
 import dot.junit.opcodes.invoke_static_range.d.T_invoke_static_range_19;
 import dot.junit.opcodes.invoke_static_range.d.T_invoke_static_range_2;
+import dot.junit.opcodes.invoke_static_range.d.T_invoke_static_range_24;
 import dot.junit.opcodes.invoke_static_range.d.T_invoke_static_range_4;
 import dot.junit.opcodes.invoke_static_range.d.T_invoke_static_range_5;
 import dot.junit.opcodes.invoke_static_range.d.T_invoke_static_range_6;
@@ -155,8 +156,9 @@
     public void testVFE5() {
         try {
             new T_invoke_static_range_19().run();
-            fail("expected IncompatibleClassChangeError");
-        } catch (IncompatibleClassChangeError t) {
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
         }
     }
 
@@ -259,8 +261,9 @@
      * @title attempt to invoke interface method
      */
     public void testVFE18() {
+        //@uses dot.junit.opcodes.invoke_static_range.d.T_invoke_static_range_24
         try {
-            Class.forName("dot.junit.opcodes.invoke_static_range.d.T_invoke_static_range_24");
+            new T_invoke_static_range_24().run();
             fail("expected a verification exception");
         } catch (Throwable t) {
             DxUtil.checkVerifyException(t);
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_24.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_24.java
new file mode 100644
index 0000000..84e6831
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_24.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2012 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 dot.junit.opcodes.invoke_static_range.d;
+
+public class T_invoke_static_range_24 {
+    public void run() {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/Test_invoke_super.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/Test_invoke_super.java
index 6efac8b..b1602b6 100644
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/Test_invoke_super.java
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/Test_invoke_super.java
@@ -27,6 +27,7 @@
 import dot.junit.opcodes.invoke_super.d.T_invoke_super_19;
 import dot.junit.opcodes.invoke_super.d.T_invoke_super_2;
 import dot.junit.opcodes.invoke_super.d.T_invoke_super_20;
+import dot.junit.opcodes.invoke_super.d.T_invoke_super_24;
 import dot.junit.opcodes.invoke_super.d.T_invoke_super_4;
 import dot.junit.opcodes.invoke_super.d.T_invoke_super_5;
 import dot.junit.opcodes.invoke_super.d.T_invoke_super_6;
@@ -142,8 +143,9 @@
     public void testVFE3() {
         try {
             new T_invoke_super_10().run();
-            fail("expected IncompatibleClassChangeError");
-        } catch (IncompatibleClassChangeError t) {
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
         }
     }
 
@@ -324,8 +326,9 @@
      * @title attempt to invoke interface method
      */
     public void testVFE18() {
+        //@uses dot.junit.opcodes.invoke_super.d.T_invoke_super_24
         try {
-            Class.forName("dot.junit.opcodes.invoke_super.d.T_invoke_super_24");
+            new T_invoke_super_24().run();
             fail("expected a verification exception");
         } catch (Throwable t) {
             DxUtil.checkVerifyException(t);
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_24.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_24.java
new file mode 100644
index 0000000..38ebc44
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_24.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2012 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 dot.junit.opcodes.invoke_super.d;
+
+public class T_invoke_super_24 {
+
+    public int run() {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/Test_invoke_super_range.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/Test_invoke_super_range.java
index d65b8d4..51291f1 100644
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/Test_invoke_super_range.java
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/Test_invoke_super_range.java
@@ -27,6 +27,7 @@
 import dot.junit.opcodes.invoke_super_range.d.T_invoke_super_range_19;
 import dot.junit.opcodes.invoke_super_range.d.T_invoke_super_range_2;
 import dot.junit.opcodes.invoke_super_range.d.T_invoke_super_range_20;
+import dot.junit.opcodes.invoke_super_range.d.T_invoke_super_range_24;
 import dot.junit.opcodes.invoke_super_range.d.T_invoke_super_range_4;
 import dot.junit.opcodes.invoke_super_range.d.T_invoke_super_range_5;
 import dot.junit.opcodes.invoke_super_range.d.T_invoke_super_range_6;
@@ -142,8 +143,9 @@
     public void testVFE3() {
         try {
             new T_invoke_super_range_10().run();
-            fail("expected IncompatibleClassChangeError");
-        } catch (IncompatibleClassChangeError t) {
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
         }
     }
 
@@ -324,8 +326,9 @@
      * @title attempt to invoke interface method
      */
     public void testVFE18() {
+        //@uses dot.junit.opcodes.invoke_super_range.d.T_invoke_super_range_24
         try {
-            Class.forName("dot.junit.opcodes.invoke_super_range.d.T_invoke_super_range_24");
+            new T_invoke_super_range_24().run();
             fail("expected a verification exception");
         } catch (Throwable t) {
             DxUtil.checkVerifyException(t);
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_24.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_24.java
new file mode 100644
index 0000000..d1c8a31
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_24.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2012 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 dot.junit.opcodes.invoke_super_range.d;
+
+public class T_invoke_super_range_24 {
+
+    public int run() {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/Test_invoke_virtual.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/Test_invoke_virtual.java
index 6e41ec1..03f2bb6 100644
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/Test_invoke_virtual.java
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/Test_invoke_virtual.java
@@ -26,6 +26,7 @@
 import dot.junit.opcodes.invoke_virtual.d.T_invoke_virtual_18;
 import dot.junit.opcodes.invoke_virtual.d.T_invoke_virtual_19;
 import dot.junit.opcodes.invoke_virtual.d.T_invoke_virtual_20;
+import dot.junit.opcodes.invoke_virtual.d.T_invoke_virtual_24;
 import dot.junit.opcodes.invoke_virtual.d.T_invoke_virtual_4;
 import dot.junit.opcodes.invoke_virtual.d.T_invoke_virtual_5;
 import dot.junit.opcodes.invoke_virtual.d.T_invoke_virtual_6;
@@ -139,8 +140,9 @@
     public void testVFE3() {
         try {
             new T_invoke_virtual_10().run();
-            fail("expected IncompatibleClassChangeError");
-        } catch (IncompatibleClassChangeError t) {
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
         }
     }
 
@@ -316,8 +318,9 @@
      * @title attempt to invoke interface method
      */
     public void testVFE18() {
+        //@uses dot.junit.opcodes.invoke_virtual.d.T_invoke_virtual_24
         try {
-            Class.forName("dot.junit.opcodes.invoke_virtual.d.T_invoke_virtual_24");
+            new T_invoke_virtual_24().run();
             fail("expected a verification exception");
         } catch (Throwable t) {
             DxUtil.checkVerifyException(t);
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_24.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_24.java
new file mode 100644
index 0000000..02e2efd
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_24.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2012 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 dot.junit.opcodes.invoke_virtual.d;
+
+public class T_invoke_virtual_24 {
+
+    public int run() {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/Test_invoke_virtual_range.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/Test_invoke_virtual_range.java
index 2368dc3..6200ce7 100644
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/Test_invoke_virtual_range.java
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/Test_invoke_virtual_range.java
@@ -27,6 +27,7 @@
 import dot.junit.opcodes.invoke_virtual_range.d.T_invoke_virtual_range_19;
 import dot.junit.opcodes.invoke_virtual_range.d.T_invoke_virtual_range_2;
 import dot.junit.opcodes.invoke_virtual_range.d.T_invoke_virtual_range_20;
+import dot.junit.opcodes.invoke_virtual_range.d.T_invoke_virtual_range_24;
 import dot.junit.opcodes.invoke_virtual_range.d.T_invoke_virtual_range_4;
 import dot.junit.opcodes.invoke_virtual_range.d.T_invoke_virtual_range_5;
 import dot.junit.opcodes.invoke_virtual_range.d.T_invoke_virtual_range_6;
@@ -148,8 +149,9 @@
     public void testVFE3() {
         try {
             new T_invoke_virtual_range_10().run();
-            fail("expected IncompatibleClassChangeError");
-        } catch (IncompatibleClassChangeError t) {
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
         }
     }
 
@@ -324,8 +326,9 @@
      * @title attempt to invoke interface method
      */
     public void testVFE18() {
+        //@uses dot.junit.opcodes.invoke_virtual_range.d.T_invoke_virtual_range_24
         try {
-            Class.forName("dot.junit.opcodes.invoke_virtual_range.d.T_invoke_virtual_range_24");
+            new T_invoke_virtual_range_24().run();
             fail("expected a verification exception");
         } catch (Throwable t) {
             DxUtil.checkVerifyException(t);
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_24.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_24.java
new file mode 100644
index 0000000..8ad860d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_24.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2012 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 dot.junit.opcodes.invoke_virtual_range.d;
+
+public class T_invoke_virtual_range_24 {
+
+    public int run() {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/Test_iput_boolean.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/Test_iput_boolean.java
index 6a2419b..5736c7c 100644
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/Test_iput_boolean.java
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/Test_iput_boolean.java
@@ -124,20 +124,6 @@
     /**
      *
      * @constraint B14
-     * @title put value '2' into boolean field
-     */
-    public void testVFE6() {
-        try {
-            Class.forName("dot.junit.opcodes.iput_boolean.d.T_iput_boolean_6");
-            fail("expected a verification exception");
-        } catch (Throwable t) {
-            DxUtil.checkVerifyException(t);
-        }
-    }
-
-    /**
-     *
-     * @constraint B14
      * @title type of field doesn't match opcode - attempt to modify double
      * field with single-width register
      */
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_6.d
deleted file mode 100644
index 29230ed..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_6.d
+++ /dev/null
@@ -1,36 +0,0 @@
-; 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.
-
-.source T_iput_boolean_6.java
-.class public dot.junit.opcodes.iput_boolean.d.T_iput_boolean_6
-.super java/lang/Object
-
-.field public  s Z
-
-.method public <init>()V
-.limit regs 1
-
-       invoke-direct {v0}, java/lang/Object/<init>()V
-       return-void
-.end method
-
-.method public run()V
-.limit regs 6
-
-       const v2, 2    
-       iput-boolean v2, v5, dot.junit.opcodes.iput_boolean.d.T_iput_boolean_6.s Z
-       return-void
-.end method
-
-
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/Test_iput_byte.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/Test_iput_byte.java
index f67e22b..d421980 100644
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/Test_iput_byte.java
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/Test_iput_byte.java
@@ -122,20 +122,6 @@
     /**
      *
      * @constraint B14
-     * @title put value '256' into byte field
-     */
-    public void testVFE6() {
-        try {
-            Class.forName("dot.junit.opcodes.iput_byte.d.T_iput_byte_6");
-            fail("expected a verification exception");
-        } catch (Throwable t) {
-            DxUtil.checkVerifyException(t);
-        }
-    }
-
-    /**
-     *
-     * @constraint B14
      * @title type of field doesn't match opcode - attempt to modify double
      * field with single-width register
      */
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_21.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_21.d
index 9f8bd0f..78dde15 100644
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_21.d
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_21.d
@@ -16,7 +16,7 @@
 .class public dot.junit.opcodes.iput_byte.d.T_iput_byte_21
 .super java/lang/Object
 
-.field public  st_s I
+.field public  st_s S
 
 .method public <init>()V
 .limit regs 1
@@ -28,7 +28,7 @@
 .method public run()V
 .limit regs 4
        const v0, 12    
-       iput-byte v0, v3, dot.junit.opcodes.iput_byte.d.T_iput_byte_21.st_s I
+       iput-byte v0, v3, dot.junit.opcodes.iput_byte.d.T_iput_byte_21.st_s S
        return-void
 .end method
 
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_22.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_22.d
index e0a19be..a81dfb6 100644
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_22.d
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_22.d
@@ -16,7 +16,7 @@
 .class public dot.junit.opcodes.iput_byte.d.T_iput_byte_22
 .super java/lang/Object
 
-.field public  st_b I
+.field public  st_i I
 
 .method public <init>()V
 .limit regs 1
@@ -28,7 +28,7 @@
 .method public run()V
 .limit regs 4
        const v0, 1    
-       iput-byte v0, v3, dot.junit.opcodes.iput_byte.d.T_iput_byte_22.st_b I
+       iput-byte v0, v3, dot.junit.opcodes.iput_byte.d.T_iput_byte_22.st_i I
        return-void
 .end method
 
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_6.d
deleted file mode 100644
index d349e8e..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_6.d
+++ /dev/null
@@ -1,36 +0,0 @@
-; 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.
-
-.source T_iput_byte_6.java
-.class public dot.junit.opcodes.iput_byte.d.T_iput_byte_6
-.super java/lang/Object
-
-.field public  st_i1 B
-
-.method public <init>()V
-.limit regs 1
-
-       invoke-direct {v0}, java/lang/Object/<init>()V
-       return-void
-.end method
-
-.method public run()V
-.limit regs 3
-
-       const v0, 256
-       iput-byte v0, v2, dot.junit.opcodes.iput_byte.d.T_iput_byte_6.st_i1 B
-       return-void
-.end method
-
-
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/Test_iput_char.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/Test_iput_char.java
index f3a4f9e..87634c7 100644
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/Test_iput_char.java
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/Test_iput_char.java
@@ -123,20 +123,6 @@
     /**
      *
      * @constraint B14
-     * @title put value '66000' into byte field
-     */
-    public void testVFE6() {
-        try {
-            Class.forName("dot.junit.opcodes.iput_char.d.T_iput_char_6");
-            fail("expected a verification exception");
-        } catch (Throwable t) {
-            DxUtil.checkVerifyException(t);
-        }
-    }
-
-    /**
-     *
-     * @constraint B14
      * @title type of field doesn't match opcode - attempt to modify double
      * field with single-width register
      */
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_6.d
deleted file mode 100644
index 5614d67..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_6.d
+++ /dev/null
@@ -1,36 +0,0 @@
-; 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.
-
-.source T_iput_char_6.java
-.class public dot.junit.opcodes.iput_char.d.T_iput_char_6
-.super java/lang/Object
-
-.field public  st_i1 C
-
-.method public <init>()V
-.limit regs 1
-
-       invoke-direct {v0}, java/lang/Object/<init>()V
-       return-void
-.end method
-
-.method public run()V
-.limit regs 3
-
-       const v0, 66000
-       iput-char v0, v2, dot.junit.opcodes.iput_char.d.T_iput_char_6.st_i1 C
-       return-void
-.end method
-
-
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/Test_iput_short.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/Test_iput_short.java
index 0ea32e5..1895953 100644
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/Test_iput_short.java
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/Test_iput_short.java
@@ -124,20 +124,6 @@
     /**
      *
      * @constraint B14
-     * @title put value '66000' into byte field
-     */
-    public void testVFE6() {
-        try {
-            Class.forName("dot.junit.opcodes.iput_short.d.T_iput_short_6");
-            fail("expected a verification exception");
-        } catch (Throwable t) {
-            DxUtil.checkVerifyException(t);
-        }
-    }
-
-    /**
-     *
-     * @constraint B14
      * @title type of field doesn't match opcode - attempt to modify double
      * field with single-width register
      */
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_6.d
deleted file mode 100644
index ba79d41..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_6.d
+++ /dev/null
@@ -1,36 +0,0 @@
-; 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.
-
-.source T_iput_short_6.java
-.class public dot.junit.opcodes.iput_short.d.T_iput_short_6
-.super java/lang/Object
-
-.field public  st_i1 S
-
-.method public <init>()V
-.limit regs 1
-
-       invoke-direct {v0}, java/lang/Object/<init>()V
-       return-void
-.end method
-
-.method public run()V
-.limit regs 3
-
-       const v0, 66000
-       iput-short v0, v2, dot.junit.opcodes.iput_short.d.T_iput_short_6.st_i1 S
-       return-void
-.end method
-
-
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/monitor_enter/d/T_monitor_enter_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/monitor_enter/d/T_monitor_enter_3.d
index 7417a8e..9ad99fc 100644
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/monitor_enter/d/T_monitor_enter_3.d
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/monitor_enter/d/T_monitor_enter_3.d
@@ -29,5 +29,6 @@
 
        const/4 v5, 0
        monitor-enter v5
+       monitor-exit v5
        return-void
 .end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/monitor_exit/d/T_monitor_exit_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/monitor_exit/d/T_monitor_exit_1.d
index bef8390..1f83d57 100644
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/monitor_exit/d/T_monitor_exit_1.d
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/monitor_exit/d/T_monitor_exit_1.d
@@ -32,6 +32,9 @@
 .method public run(Ljava/lang/Object;)V
 .limit regs 5
 
+       new-instance v2, java/lang/Object
+       invoke-direct {v2}, java/lang/Object/<init>()V
+       monitor-enter v2
        monitor-exit v3
        return-void
 .end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/opc_return/d/T_opc_return_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/opc_return/d/T_opc_return_3.d
index 2410da3..1ab9dc1 100644
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/opc_return/d/T_opc_return_3.d
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/opc_return/d/T_opc_return_3.d
@@ -27,6 +27,9 @@
 .method private declared_synchronized test()F
 .limit regs 4
 
+    new-instance v2, java/lang/Object
+    invoke-direct {v2}, java/lang/Object/<init>()V
+    monitor-enter v2
     monitor-exit v3
     const v0, 1.0
     return v0
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/opc_throw/d/T_opc_throw_12.d b/tools/vm-tests-tf/src/dot/junit/opcodes/opc_throw/d/T_opc_throw_12.d
index e096f4c..67366f6 100644
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/opc_throw/d/T_opc_throw_12.d
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/opc_throw/d/T_opc_throw_12.d
@@ -50,4 +50,4 @@
     return v1
 
 .catch java/lang/RuntimeException from Label0 to Label1 using Label1
-.end method
\ No newline at end of file
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/opc_throw/d/T_opc_throw_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/opc_throw/d/T_opc_throw_5.d
index 4e23269..f37a447 100644
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/opc_throw/d/T_opc_throw_5.d
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/opc_throw/d/T_opc_throw_5.d
@@ -27,6 +27,9 @@
 .method public declared_synchronized run()V
 .limit regs 6
 
+       new-instance v2, java/lang/Object
+       invoke-direct {v2}, java/lang/Object/<init>()V
+       monitor-enter v2
        monitor-exit v5
 
        new-instance v1, java/lang/NullPointerException
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/return_object/d/T_return_object_8.d b/tools/vm-tests-tf/src/dot/junit/opcodes/return_object/d/T_return_object_8.d
index bc2f85f..e82e7d6 100644
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/return_object/d/T_return_object_8.d
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/return_object/d/T_return_object_8.d
@@ -26,7 +26,10 @@
 
 .method private declared_synchronized test()Ljava/lang/String;
 .limit regs 4
- 
+
+    new-instance v2, java/lang/Object
+    invoke-direct {v2}, java/lang/Object/<init>()V
+    monitor-enter v2
     monitor-exit v3
     const-string v0, "abc"
     return-object v0
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/return_void/d/T_return_void_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/return_void/d/T_return_void_3.d
index ff12b06..b6bad32 100644
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/return_void/d/T_return_void_3.d
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/return_void/d/T_return_void_3.d
@@ -25,9 +25,12 @@
 .end method
 
 .method private declared_synchronized test()V
-.limit regs 1
+.limit regs 2
 
-    monitor-exit v0
+    new-instance v0, java/lang/Object
+    invoke-direct {v0}, java/lang/Object/<init>()V
+    monitor-enter v0
+    monitor-exit v1
     return-void
 .end method
 
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/return_wide/d/T_return_wide_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/return_wide/d/T_return_wide_3.d
index 1a6fdb6..479e777 100644
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/return_wide/d/T_return_wide_3.d
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/return_wide/d/T_return_wide_3.d
@@ -27,6 +27,9 @@
 .method private declared_synchronized test()D
 .limit regs 4
 
+    new-instance v2, java/lang/Object
+    invoke-direct {v2}, java/lang/Object/<init>()V
+    monitor-enter v2
     monitor-exit v3
     const-wide v0, 1.0
     return-wide v0
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/Test_sput_boolean.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/Test_sput_boolean.java
index f503ec6..1b8d96c 100644
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/Test_sput_boolean.java
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/Test_sput_boolean.java
@@ -125,20 +125,6 @@
     /**
      *
      * @constraint B13
-     * @title put value '2' into boolean field
-     */
-    public void testVFE6() {
-        try {
-            Class.forName("dot.junit.opcodes.sput_boolean.d.T_sput_boolean_6");
-            fail("expected a verification exception");
-        } catch (Throwable t) {
-            DxUtil.checkVerifyException(t);
-        }
-    }
-
-    /**
-     *
-     * @constraint B13
      * @title type of field doesn't match opcode - attempt to modify double
      * field with single-width register
      */
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_6.d
deleted file mode 100644
index d50c573..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_6.d
+++ /dev/null
@@ -1,36 +0,0 @@
-; 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.
-
-.source T_sput_boolean_6.java
-.class public dot.junit.opcodes.sput_boolean.d.T_sput_boolean_6
-.super java/lang/Object
-
-.field public static s Z
-
-.method public <init>()V
-.limit regs 1
-
-       invoke-direct {v0}, java/lang/Object/<init>()V
-       return-void
-.end method
-
-.method public run()V
-.limit regs 6
-
-       const v2, 2    
-       sput-boolean v2, dot.junit.opcodes.sput_boolean.d.T_sput_boolean_6.s Z
-       return-void
-.end method
-
-
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/Test_sput_byte.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/Test_sput_byte.java
index c64f876..5ac828d 100644
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/Test_sput_byte.java
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/Test_sput_byte.java
@@ -123,20 +123,6 @@
     /**
      *
      * @constraint B13
-     * @title put value '256' into byte field
-     */
-    public void testVFE6() {
-        try {
-            Class.forName("dot.junit.opcodes.sput_byte.d.T_sput_byte_6");
-            fail("expected a verification exception");
-        } catch (Throwable t) {
-            DxUtil.checkVerifyException(t);
-        }
-    }
-
-    /**
-     *
-     * @constraint B13
      * @title type of field doesn't match opcode - attempt to modify double
      * field with single-width register
      */
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_21.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_21.d
index 15a924b..e643cb9 100644
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_21.d
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_21.d
@@ -16,7 +16,7 @@
 .class public dot.junit.opcodes.sput_byte.d.T_sput_byte_21
 .super java/lang/Object
 
-.field public static st_s I
+.field public static st_s S
 
 .method public <init>()V
 .limit regs 1
@@ -28,7 +28,7 @@
 .method public run()V
 .limit regs 4
        const v0, 12    
-       sput-byte v0, dot.junit.opcodes.sput_byte.d.T_sput_byte_21.st_s I
+       sput-byte v0, dot.junit.opcodes.sput_byte.d.T_sput_byte_21.st_s S
        return-void
 .end method
 
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_22.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_22.d
index 3501490..7a59d06 100644
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_22.d
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_22.d
@@ -16,7 +16,7 @@
 .class public dot.junit.opcodes.sput_byte.d.T_sput_byte_22
 .super java/lang/Object
 
-.field public static st_b I
+.field public static st_i I
 
 .method public <init>()V
 .limit regs 1
@@ -28,7 +28,7 @@
 .method public run()V
 .limit regs 4
        const v0, 1    
-       sput-byte v0, dot.junit.opcodes.sput_byte.d.T_sput_byte_22.st_b I
+       sput-byte v0, dot.junit.opcodes.sput_byte.d.T_sput_byte_22.st_i I
        return-void
 .end method
 
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_6.d
deleted file mode 100644
index f41929a..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_6.d
+++ /dev/null
@@ -1,36 +0,0 @@
-; 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.
-
-.source T_sput_byte_6.java
-.class public dot.junit.opcodes.sput_byte.d.T_sput_byte_6
-.super java/lang/Object
-
-.field public static st_i1 B
-
-.method public <init>()V
-.limit regs 1
-
-       invoke-direct {v0}, java/lang/Object/<init>()V
-       return-void
-.end method
-
-.method public run()V
-.limit regs 3
-
-       const v0, 256
-       sput-byte v0, dot.junit.opcodes.sput_byte.d.T_sput_byte_6.st_i1 B
-       return-void
-.end method
-
-
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/Test_sput_char.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/Test_sput_char.java
index 120b45a..8585365 100644
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/Test_sput_char.java
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/Test_sput_char.java
@@ -123,20 +123,6 @@
     /**
      *
      * @constraint B13
-     * @title put value '66000' into byte field
-     */
-    public void testVFE6() {
-        try {
-            Class.forName("dot.junit.opcodes.sput_char.d.T_sput_char_6");
-            fail("expected a verification exception");
-        } catch (Throwable t) {
-            DxUtil.checkVerifyException(t);
-        }
-    }
-
-    /**
-     *
-     * @constraint B13
      * @title type of field doesn't match opcode - attempt to modify double
      * field with single-width register
      */
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_6.d
deleted file mode 100644
index a2e504a..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_6.d
+++ /dev/null
@@ -1,36 +0,0 @@
-; 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.
-
-.source T_sput_char_6.java
-.class public dot.junit.opcodes.sput_char.d.T_sput_char_6
-.super java/lang/Object
-
-.field public static st_i1 C
-
-.method public <init>()V
-.limit regs 1
-
-       invoke-direct {v0}, java/lang/Object/<init>()V
-       return-void
-.end method
-
-.method public run()V
-.limit regs 3
-
-       const v0, 66000
-       sput-char v0, dot.junit.opcodes.sput_char.d.T_sput_char_6.st_i1 C
-       return-void
-.end method
-
-
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/Test_sput_short.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/Test_sput_short.java
index f14c4a7..5fcbe58 100644
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/Test_sput_short.java
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/Test_sput_short.java
@@ -123,20 +123,6 @@
     /**
      *
      * @constraint B13
-     * @title put value '66000' into byte field
-     */
-    public void testVFE6() {
-        try {
-            Class.forName("dot.junit.opcodes.sput_short.d.T_sput_short_6");
-            fail("expected a verification exception");
-        } catch (Throwable t) {
-            DxUtil.checkVerifyException(t);
-        }
-    }
-
-    /**
-     *
-     * @constraint B13
      * @title type of field doesn't match opcode - attempt to modify double
      * field with single-width register
      */
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_6.d
deleted file mode 100644
index 1b3904f..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_6.d
+++ /dev/null
@@ -1,36 +0,0 @@
-; 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.
-
-.source T_sput_short_6.java
-.class public dot.junit.opcodes.sput_short.d.T_sput_short_6
-.super java/lang/Object
-
-.field public static st_i1 S
-
-.method public <init>()V
-.limit regs 1
-
-       invoke-direct {v0}, java/lang/Object/<init>()V
-       return-void
-.end method
-
-.method public run()V
-.limit regs 3
-
-       const v0, 66000
-       sput-short v0, dot.junit.opcodes.sput_short.d.T_sput_short_6.st_i1 S
-       return-void
-.end method
-
-
diff --git a/tools/vm-tests-tf/src/util/build/BuildDalvikSuite.java b/tools/vm-tests-tf/src/util/build/BuildDalvikSuite.java
index 20429f0..9d4bbed 100644
--- a/tools/vm-tests-tf/src/util/build/BuildDalvikSuite.java
+++ b/tools/vm-tests-tf/src/util/build/BuildDalvikSuite.java
@@ -16,7 +16,7 @@
 
 package util.build;
 
-import com.android.dx.util.FileUtils;
+import com.android.dex.util.FileUtils;
 
 import dot.junit.AllTests;
 
